From 764ec513eecbebd12781bcc96ce81ed5e736ee92 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Mon, 14 Mar 2016 13:35:12 -0400 Subject: Move core/src/ up to core/. This CL moves the core/src/ files up to core/ and fixes up the include guards, includes and build files. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1800523005 . --- BUILD.gn | 628 +- core/fdrm/crypto/fx_crypt.cpp | 260 + core/fdrm/crypto/fx_crypt_aes.cpp | 833 ++ core/fdrm/crypto/fx_crypt_sha.cpp | 657 ++ core/fpdfapi/fpdf_basic_module.cpp | 62 + core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp | 2131 ++++ core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp | 93 + core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp | 14 + core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp | 172 + core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp | 189 + core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp | 95 + core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp | 15 + core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp | 11 + core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp | 16 + core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp | 414 + core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp | 15 + core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp | 5483 +++++++++ core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp | 15 + core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp | 3245 ++++++ core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp | 56 + core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h | 29 + core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp | 3375 ++++++ core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp | 40 + core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp | 17 + core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp | 1367 +++ core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp | 17 + core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp | 1822 +++ core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp | 24 + core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp | 1367 +++ core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp | 17 + core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp | 41 + core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp | 17 + core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp | 4619 ++++++++ core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp | 18 + core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp | 55 + core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h | 27 + core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp | 84 + core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp | 67 + core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp | 36 + core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp | 67 + core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp | 36 + core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp | 98 + core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp | 222 + core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp | 29 + .../fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp | 1726 +++ core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp | 50 + core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp | 19 + core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp | 232 + core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp | 23 + core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp | 50 + .../fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp | 12 + .../fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp | 77 + core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp | 2182 ++++ core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp | 66 + core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp | 19 + core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp | 66 + core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h | 35 + .../fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp | 2050 ++++ core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp | 166 + core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp | 16 + .../fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp | 235 + .../fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp | 16 + core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp | 235 + core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp | 16 + core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp | 180 + core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp | 2808 +++++ core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp | 16 + core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp | 46 + core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp | 50 + core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h | 24 + core/fpdfapi/fpdf_cmaps/cmap_int.h | 32 + core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp | 192 + core/fpdfapi/fpdf_edit/editint.h | 74 + core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp | 162 + core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp | 2076 ++++ core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp | 1156 ++ core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp | 391 + core/fpdfapi/fpdf_font/font_int.h | 203 + core/fpdfapi/fpdf_font/fpdf_font.cpp | 1814 +++ core/fpdfapi/fpdf_font/fpdf_font_charset.cpp | 1782 +++ core/fpdfapi/fpdf_font/fpdf_font_cid.cpp | 1676 +++ core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp | 65 + core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp | 30 + core/fpdfapi/fpdf_font/ttgsubtable.cpp | 415 + core/fpdfapi/fpdf_font/ttgsubtable.h | 363 + core/fpdfapi/fpdf_page/fpdf_page.cpp | 764 ++ core/fpdfapi/fpdf_page/fpdf_page_colors.cpp | 1550 +++ core/fpdfapi/fpdf_page/fpdf_page_doc.cpp | 610 + core/fpdfapi/fpdf_page/fpdf_page_func.cpp | 966 ++ .../fpdf_page/fpdf_page_func_embeddertest.cpp | 20 + core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp | 697 ++ core/fpdfapi/fpdf_page/fpdf_page_image.cpp | 100 + core/fpdfapi/fpdf_page/fpdf_page_parser.cpp | 1819 +++ core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp | 888 ++ .../fpdf_page/fpdf_page_parser_old_unittest.cpp | 47 + core/fpdfapi/fpdf_page/fpdf_page_path.cpp | 55 + core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp | 320 + core/fpdfapi/fpdf_page/pageint.h | 459 + core/fpdfapi/fpdf_parser/cfdf_document.cpp | 98 + core/fpdfapi/fpdf_parser/cpdf_array.cpp | 207 + core/fpdfapi/fpdf_parser/cpdf_boolean.cpp | 45 + core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp | 1841 ++++ core/fpdfapi/fpdf_parser/cpdf_data_avail.h | 217 + core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp | 271 + core/fpdfapi/fpdf_parser/cpdf_document.cpp | 354 + core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp | 469 + core/fpdfapi/fpdf_parser/cpdf_hint_tables.h | 62 + .../fpdf_parser/cpdf_indirect_object_holder.cpp | 80 + core/fpdfapi/fpdf_parser/cpdf_name.cpp | 53 + core/fpdfapi/fpdf_parser/cpdf_null.cpp | 17 + core/fpdfapi/fpdf_parser/cpdf_number.cpp | 56 + core/fpdfapi/fpdf_parser/cpdf_object.cpp | 158 + core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp | 776 ++ core/fpdfapi/fpdf_parser/cpdf_parser.cpp | 1652 +++ .../fpdf_parser/cpdf_parser_embeddertest.cpp | 40 + core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp | 202 + core/fpdfapi/fpdf_parser/cpdf_reference.cpp | 72 + core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp | 170 + .../fpdf_parser/cpdf_simple_parser_unittest.cpp | 96 + .../fpdf_parser/cpdf_standard_crypto_handler.cpp | 342 + .../fpdf_parser/cpdf_standard_crypto_handler.h | 64 + .../fpdf_parser/cpdf_standard_security_handler.cpp | 714 ++ .../fpdf_parser/cpdf_standard_security_handler.h | 105 + core/fpdfapi/fpdf_parser/cpdf_stream.cpp | 232 + core/fpdfapi/fpdf_parser/cpdf_string.cpp | 56 + core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp | 990 ++ core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h | 96 + .../fpdf_parser/cpdf_syntax_parser_unittest.cpp | 171 + core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp | 592 + .../fpdf_parser_decode_embeddertest.cpp | 117 + .../fpdf_parser/fpdf_parser_decode_unittest.cpp | 78 + core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp | 228 + core/fpdfapi/fpdf_parser/fpdf_parser_utility.h | 39 + core/fpdfapi/fpdf_render/fpdf_render.cpp | 1337 +++ core/fpdfapi/fpdf_render/fpdf_render_cache.cpp | 334 + core/fpdfapi/fpdf_render/fpdf_render_image.cpp | 998 ++ core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp | 1654 +++ .../fpdf_render_loadimage_embeddertest.cpp | 29 + core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp | 1207 ++ .../fpdf_render_pattern_embeddertest.cpp | 17 + core/fpdfapi/fpdf_render/fpdf_render_text.cpp | 787 ++ core/fpdfapi/fpdf_render/render_int.h | 619 ++ core/fpdfdoc/doc_action.cpp | 295 + core/fpdfdoc/doc_annot.cpp | 350 + core/fpdfdoc/doc_ap.cpp | 936 ++ core/fpdfdoc/doc_basic.cpp | 510 + core/fpdfdoc/doc_basic_unittest.cpp | 169 + core/fpdfdoc/doc_bookmark.cpp | 95 + core/fpdfdoc/doc_form.cpp | 1207 ++ core/fpdfdoc/doc_formcontrol.cpp | 432 + core/fpdfdoc/doc_formfield.cpp | 1097 ++ core/fpdfdoc/doc_link.cpp | 92 + core/fpdfdoc/doc_metadata.cpp | 29 + core/fpdfdoc/doc_ocg.cpp | 284 + core/fpdfdoc/doc_tagged.cpp | 440 + core/fpdfdoc/doc_utils.cpp | 753 ++ core/fpdfdoc/doc_utils.h | 80 + core/fpdfdoc/doc_viewerPreferences.cpp | 54 + core/fpdfdoc/doc_vt.cpp | 1825 +++ core/fpdfdoc/doc_vtmodule.cpp | 16 + core/fpdfdoc/pdf_vt.h | 554 + core/fpdfdoc/tagged_int.h | 106 + core/fpdftext/fpdf_text_int.cpp | 2500 +++++ core/fpdftext/fpdf_text_int_unittest.cpp | 56 + core/fpdftext/text_int.h | 244 + core/fpdftext/unicodenormalization.cpp | 68 + core/fpdftext/unicodenormalizationdata.cpp | 8275 ++++++++++++++ core/fpdftext/unicodenormalizationdata.h | 18 + core/fxcodec/DEPS | 8 + core/fxcodec/codec/DEPS | 4 + core/fxcodec/codec/codec_int.h | 428 + core/fxcodec/codec/fx_codec.cpp | 487 + core/fxcodec/codec/fx_codec_bmp.cpp | 125 + core/fxcodec/codec/fx_codec_fax.cpp | 830 ++ core/fxcodec/codec/fx_codec_flate.cpp | 1007 ++ core/fxcodec/codec/fx_codec_gif.cpp | 187 + core/fxcodec/codec/fx_codec_icc.cpp | 1986 ++++ core/fxcodec/codec/fx_codec_jbig.cpp | 126 + core/fxcodec/codec/fx_codec_jpeg.cpp | 692 ++ core/fxcodec/codec/fx_codec_jpx_opj.cpp | 887 ++ core/fxcodec/codec/fx_codec_jpx_unittest.cpp | 532 + core/fxcodec/codec/fx_codec_png.cpp | 254 + core/fxcodec/codec/fx_codec_progress.cpp | 2301 ++++ core/fxcodec/codec/fx_codec_progress.h | 221 + core/fxcodec/codec/fx_codec_tiff.cpp | 544 + core/fxcodec/jbig2/JBig2_ArithDecoder.cpp | 120 + core/fxcodec/jbig2/JBig2_ArithDecoder.h | 38 + core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp | 92 + core/fxcodec/jbig2/JBig2_ArithIntDecoder.h | 41 + core/fxcodec/jbig2/JBig2_BitStream.cpp | 188 + core/fxcodec/jbig2/JBig2_BitStream.h | 58 + core/fxcodec/jbig2/JBig2_Context.cpp | 1439 +++ core/fxcodec/jbig2/JBig2_Context.h | 134 + core/fxcodec/jbig2/JBig2_Define.h | 36 + core/fxcodec/jbig2/JBig2_GrdProc.cpp | 1259 +++ core/fxcodec/jbig2/JBig2_GrdProc.h | 124 + core/fxcodec/jbig2/JBig2_GrrdProc.cpp | 516 + core/fxcodec/jbig2/JBig2_GrrdProc.h | 43 + core/fxcodec/jbig2/JBig2_GsidProc.cpp | 123 + core/fxcodec/jbig2/JBig2_GsidProc.h | 36 + core/fxcodec/jbig2/JBig2_HtrdProc.cpp | 104 + core/fxcodec/jbig2/JBig2_HtrdProc.h | 46 + core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp | 45 + core/fxcodec/jbig2/JBig2_HuffmanDecoder.h | 24 + core/fxcodec/jbig2/JBig2_HuffmanTable.cpp | 136 + core/fxcodec/jbig2/JBig2_HuffmanTable.h | 50 + core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h | 98 + core/fxcodec/jbig2/JBig2_Image.cpp | 1099 ++ core/fxcodec/jbig2/JBig2_Image.h | 85 + core/fxcodec/jbig2/JBig2_List.h | 54 + core/fxcodec/jbig2/JBig2_Page.h | 22 + core/fxcodec/jbig2/JBig2_PatternDict.cpp | 23 + core/fxcodec/jbig2/JBig2_PatternDict.h | 23 + core/fxcodec/jbig2/JBig2_PddProc.cpp | 87 + core/fxcodec/jbig2/JBig2_PddProc.h | 34 + core/fxcodec/jbig2/JBig2_SddProc.cpp | 624 ++ core/fxcodec/jbig2/JBig2_SddProc.h | 49 + core/fxcodec/jbig2/JBig2_Segment.cpp | 44 + core/fxcodec/jbig2/JBig2_Segment.h | 66 + core/fxcodec/jbig2/JBig2_SymbolDict.cpp | 26 + core/fxcodec/jbig2/JBig2_SymbolDict.h | 48 + core/fxcodec/jbig2/JBig2_TrdProc.cpp | 407 + core/fxcodec/jbig2/JBig2_TrdProc.h | 82 + core/fxcodec/lbmp/fx_bmp.cpp | 948 ++ core/fxcodec/lbmp/fx_bmp.h | 155 + core/fxcodec/lgif/fx_gif.cpp | 1229 +++ core/fxcodec/lgif/fx_gif.h | 296 + core/fxcrt/extension.h | 334 + core/fxcrt/fx_arabic.cpp | 970 ++ core/fxcrt/fx_arabic.h | 211 + core/fxcrt/fx_basic_array.cpp | 342 + core/fxcrt/fx_basic_bstring.cpp | 1088 ++ core/fxcrt/fx_basic_bstring_unittest.cpp | 689 ++ core/fxcrt/fx_basic_buffer.cpp | 428 + core/fxcrt/fx_basic_coords.cpp | 517 + core/fxcrt/fx_basic_gcc.cpp | 242 + core/fxcrt/fx_basic_gcc_unittest.cpp | 88 + core/fxcrt/fx_basic_list.cpp | 125 + core/fxcrt/fx_basic_maps.cpp | 159 + core/fxcrt/fx_basic_memmgr.cpp | 25 + core/fxcrt/fx_basic_memmgr_unittest.cpp | 70 + core/fxcrt/fx_basic_plex.cpp | 26 + core/fxcrt/fx_basic_utf.cpp | 86 + core/fxcrt/fx_basic_util.cpp | 367 + core/fxcrt/fx_basic_wstring.cpp | 1050 ++ core/fxcrt/fx_basic_wstring_unittest.cpp | 524 + core/fxcrt/fx_bidi.cpp | 81 + core/fxcrt/fx_bidi_unittest.cpp | 365 + core/fxcrt/fx_extension.cpp | 388 + core/fxcrt/fx_extension_unittest.cpp | 28 + core/fxcrt/fx_system_unittest.cpp | 162 + core/fxcrt/fx_ucddata.cpp | 11013 +++++++++++++++++++ core/fxcrt/fx_unicode.cpp | 67 + core/fxcrt/fx_xml_composer.cpp | 43 + core/fxcrt/fx_xml_parser.cpp | 795 ++ core/fxcrt/fxcrt_platforms.cpp | 132 + core/fxcrt/fxcrt_platforms.h | 42 + core/fxcrt/fxcrt_posix.cpp | 130 + core/fxcrt/fxcrt_posix.h | 42 + core/fxcrt/fxcrt_stream.cpp | 27 + core/fxcrt/fxcrt_windows.cpp | 172 + core/fxcrt/fxcrt_windows.h | 40 + core/fxcrt/plex.h | 19 + core/fxcrt/xml_int.h | 130 + core/fxge/agg/DEPS | 3 + core/fxge/agg/fx_agg_driver.cpp | 1839 ++++ core/fxge/agg/fx_agg_driver.h | 152 + core/fxge/android/fpf_skiafont.cpp | 217 + core/fxge/android/fpf_skiafont.h | 60 + core/fxge/android/fpf_skiafontmgr.cpp | 524 + core/fxge/android/fpf_skiafontmgr.h | 127 + core/fxge/android/fpf_skiamodule.cpp | 38 + core/fxge/android/fpf_skiamodule.h | 30 + core/fxge/android/fx_android_font.cpp | 89 + core/fxge/android/fx_android_font.h | 49 + core/fxge/android/fx_android_imp.cpp | 34 + core/fxge/apple/apple_int.h | 271 + core/fxge/apple/fx_apple_platform.cpp | 173 + core/fxge/apple/fx_mac_imp.cpp | 113 + core/fxge/apple/fx_quartz_device.cpp | 1048 ++ core/fxge/dib/dib_int.h | 107 + core/fxge/dib/fx_dib_composite.cpp | 5210 +++++++++ core/fxge/dib/fx_dib_convert.cpp | 1227 +++ core/fxge/dib/fx_dib_engine.cpp | 917 ++ core/fxge/dib/fx_dib_main.cpp | 1745 +++ core/fxge/dib/fx_dib_transform.cpp | 948 ++ .../fxge/fontdata/chromefontdata/FoxitDingbats.cpp | 2469 +++++ core/fxge/fontdata/chromefontdata/FoxitFixed.cpp | 1476 +++ .../fontdata/chromefontdata/FoxitFixedBold.cpp | 1514 +++ .../chromefontdata/FoxitFixedBoldItalic.cpp | 1605 +++ .../fontdata/chromefontdata/FoxitFixedItalic.cpp | 1572 +++ core/fxge/fontdata/chromefontdata/FoxitSans.cpp | 1262 +++ .../fxge/fontdata/chromefontdata/FoxitSansBold.cpp | 1371 +++ .../chromefontdata/FoxitSansBoldItalic.cpp | 1378 +++ .../fontdata/chromefontdata/FoxitSansItalic.cpp | 1371 +++ core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp | 5587 ++++++++++ core/fxge/fontdata/chromefontdata/FoxitSerif.cpp | 1632 +++ .../fontdata/chromefontdata/FoxitSerifBold.cpp | 1626 +++ .../chromefontdata/FoxitSerifBoldItalic.cpp | 1737 +++ .../fontdata/chromefontdata/FoxitSerifItalic.cpp | 1778 +++ core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp | 9462 ++++++++++++++++ core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp | 1404 +++ core/fxge/fontdata/chromefontdata/chromefontdata.h | 35 + core/fxge/freetype/fx_freetype.cpp | 171 + core/fxge/ge/fx_ge.cpp | 60 + core/fxge/ge/fx_ge_device.cpp | 474 + core/fxge/ge/fx_ge_font.cpp | 545 + core/fxge/ge/fx_ge_fontmap.cpp | 1623 +++ core/fxge/ge/fx_ge_linux.cpp | 147 + core/fxge/ge/fx_ge_path.cpp | 656 ++ core/fxge/ge/fx_ge_ps.cpp | 700 ++ core/fxge/ge/fx_ge_text.cpp | 1872 ++++ core/fxge/ge/fx_text_int.h | 84 + core/fxge/skia/fx_skia_device.cpp | 425 + core/fxge/skia/fx_skia_device.h | 149 + core/fxge/win32/dwrite_int.h | 66 + core/fxge/win32/fx_win32_device.cpp | 1372 +++ core/fxge/win32/fx_win32_dib.cpp | 289 + core/fxge/win32/fx_win32_dwrite.cpp | 410 + core/fxge/win32/fx_win32_gdipext.cpp | 1518 +++ core/fxge/win32/fx_win32_print.cpp | 473 + core/fxge/win32/win32_int.h | 369 + core/src/fdrm/crypto/fx_crypt.cpp | 260 - core/src/fdrm/crypto/fx_crypt_aes.cpp | 833 -- core/src/fdrm/crypto/fx_crypt_sha.cpp | 657 -- core/src/fpdfapi/fpdf_basic_module.cpp | 62 - .../fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp | 2131 ---- core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp | 93 - core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp | 14 - core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp | 172 - core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp | 189 - core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp | 95 - core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp | 15 - core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp | 11 - core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp | 16 - core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp | 414 - core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp | 15 - .../fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp | 5483 --------- .../fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp | 15 - .../fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp | 3245 ------ core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp | 56 - core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h | 29 - .../fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp | 3375 ------ core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp | 40 - core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp | 17 - core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp | 1367 --- core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp | 17 - core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp | 1822 --- core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp | 24 - core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp | 1367 --- core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp | 17 - core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp | 41 - core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp | 17 - core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp | 4619 -------- core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp | 18 - core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp | 55 - core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h | 27 - .../fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp | 84 - .../fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp | 67 - .../fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp | 36 - .../fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp | 67 - .../fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp | 36 - .../fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp | 98 - .../src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp | 222 - .../src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp | 29 - .../fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp | 1726 --- core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp | 50 - core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp | 19 - .../src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp | 232 - .../src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp | 23 - core/src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp | 50 - .../fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp | 12 - .../fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp | 77 - .../fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp | 2182 ---- .../fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp | 66 - core/src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp | 19 - .../src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp | 66 - core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h | 35 - .../fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp | 2050 ---- core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp | 166 - core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp | 16 - .../fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp | 235 - .../fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp | 16 - .../fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp | 235 - .../fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp | 16 - .../fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp | 180 - .../fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp | 2808 ----- .../fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp | 16 - .../fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp | 46 - .../src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp | 50 - core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h | 24 - core/src/fpdfapi/fpdf_cmaps/cmap_int.h | 32 - core/src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp | 192 - core/src/fpdfapi/fpdf_edit/editint.h | 74 - core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp | 162 - core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp | 2076 ---- core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp | 1156 -- core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp | 391 - core/src/fpdfapi/fpdf_font/font_int.h | 203 - core/src/fpdfapi/fpdf_font/fpdf_font.cpp | 1815 --- core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp | 1782 --- core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp | 1754 --- .../fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp | 65 - core/src/fpdfapi/fpdf_font/fpdf_font_unittest.cpp | 30 - core/src/fpdfapi/fpdf_font/ttgsubtable.cpp | 415 - core/src/fpdfapi/fpdf_font/ttgsubtable.h | 363 - core/src/fpdfapi/fpdf_page/fpdf_page.cpp | 764 -- core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp | 1550 --- core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp | 610 - core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp | 966 -- .../fpdf_page/fpdf_page_func_embeddertest.cpp | 20 - .../fpdfapi/fpdf_page/fpdf_page_graph_state.cpp | 697 -- core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp | 100 - core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp | 1819 --- .../src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp | 888 -- .../fpdf_page/fpdf_page_parser_old_unittest.cpp | 47 - core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp | 55 - core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp | 320 - core/src/fpdfapi/fpdf_page/pageint.h | 459 - core/src/fpdfapi/fpdf_parser/cfdf_document.cpp | 98 - core/src/fpdfapi/fpdf_parser/cpdf_array.cpp | 207 - core/src/fpdfapi/fpdf_parser/cpdf_boolean.cpp | 45 - core/src/fpdfapi/fpdf_parser/cpdf_data_avail.cpp | 1841 ---- core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h | 217 - core/src/fpdfapi/fpdf_parser/cpdf_dictionary.cpp | 271 - core/src/fpdfapi/fpdf_parser/cpdf_document.cpp | 354 - core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp | 469 - core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h | 62 - .../fpdf_parser/cpdf_indirect_object_holder.cpp | 80 - core/src/fpdfapi/fpdf_parser/cpdf_name.cpp | 53 - core/src/fpdfapi/fpdf_parser/cpdf_null.cpp | 17 - core/src/fpdfapi/fpdf_parser/cpdf_number.cpp | 56 - core/src/fpdfapi/fpdf_parser/cpdf_object.cpp | 158 - .../fpdfapi/fpdf_parser/cpdf_object_unittest.cpp | 776 -- core/src/fpdfapi/fpdf_parser/cpdf_parser.cpp | 1652 --- .../fpdf_parser/cpdf_parser_embeddertest.cpp | 40 - .../fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp | 202 - core/src/fpdfapi/fpdf_parser/cpdf_reference.cpp | 72 - .../src/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp | 170 - .../fpdf_parser/cpdf_simple_parser_unittest.cpp | 98 - .../fpdf_parser/cpdf_standard_crypto_handler.cpp | 342 - .../fpdf_parser/cpdf_standard_crypto_handler.h | 64 - .../fpdf_parser/cpdf_standard_security_handler.cpp | 714 -- .../fpdf_parser/cpdf_standard_security_handler.h | 105 - core/src/fpdfapi/fpdf_parser/cpdf_stream.cpp | 232 - core/src/fpdfapi/fpdf_parser/cpdf_string.cpp | 56 - .../src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp | 990 -- core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h | 96 - .../fpdf_parser/cpdf_syntax_parser_unittest.cpp | 171 - .../src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp | 592 - .../fpdf_parser_decode_embeddertest.cpp | 117 - .../fpdf_parser/fpdf_parser_decode_unittest.cpp | 78 - .../fpdfapi/fpdf_parser/fpdf_parser_utility.cpp | 228 - core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h | 39 - core/src/fpdfapi/fpdf_render/fpdf_render.cpp | 1339 --- core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp | 334 - core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp | 999 -- .../fpdfapi/fpdf_render/fpdf_render_loadimage.cpp | 1656 --- .../fpdf_render_loadimage_embeddertest.cpp | 29 - .../fpdfapi/fpdf_render/fpdf_render_pattern.cpp | 1207 -- .../fpdf_render_pattern_embeddertest.cpp | 17 - core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp | 788 -- core/src/fpdfapi/fpdf_render/render_int.h | 619 -- core/src/fpdfdoc/doc_action.cpp | 295 - core/src/fpdfdoc/doc_annot.cpp | 350 - core/src/fpdfdoc/doc_ap.cpp | 936 -- core/src/fpdfdoc/doc_basic.cpp | 510 - core/src/fpdfdoc/doc_basic_unittest.cpp | 169 - core/src/fpdfdoc/doc_bookmark.cpp | 95 - core/src/fpdfdoc/doc_form.cpp | 1207 -- core/src/fpdfdoc/doc_formcontrol.cpp | 432 - core/src/fpdfdoc/doc_formfield.cpp | 1097 -- core/src/fpdfdoc/doc_link.cpp | 94 - core/src/fpdfdoc/doc_metadata.cpp | 29 - core/src/fpdfdoc/doc_ocg.cpp | 284 - core/src/fpdfdoc/doc_tagged.cpp | 440 - core/src/fpdfdoc/doc_utils.cpp | 753 -- core/src/fpdfdoc/doc_utils.h | 77 - core/src/fpdfdoc/doc_viewerPreferences.cpp | 54 - core/src/fpdfdoc/doc_vt.cpp | 1825 --- core/src/fpdfdoc/doc_vtmodule.cpp | 16 - core/src/fpdfdoc/pdf_vt.h | 561 - core/src/fpdfdoc/tagged_int.h | 106 - core/src/fpdftext/fpdf_text_int.cpp | 2501 ----- core/src/fpdftext/fpdf_text_int_unittest.cpp | 56 - core/src/fpdftext/text_int.h | 244 - core/src/fpdftext/unicodenormalization.cpp | 71 - core/src/fpdftext/unicodenormalizationdata.cpp | 8275 -------------- core/src/fpdftext/unicodenormalizationdata.h | 18 - core/src/fxcodec/DEPS | 8 - core/src/fxcodec/codec/DEPS | 4 - core/src/fxcodec/codec/codec_int.h | 428 - core/src/fxcodec/codec/fx_codec.cpp | 490 - core/src/fxcodec/codec/fx_codec_bmp.cpp | 125 - core/src/fxcodec/codec/fx_codec_fax.cpp | 830 -- core/src/fxcodec/codec/fx_codec_flate.cpp | 1007 -- core/src/fxcodec/codec/fx_codec_gif.cpp | 187 - core/src/fxcodec/codec/fx_codec_icc.cpp | 1986 ---- core/src/fxcodec/codec/fx_codec_jbig.cpp | 127 - core/src/fxcodec/codec/fx_codec_jpeg.cpp | 692 -- core/src/fxcodec/codec/fx_codec_jpx_opj.cpp | 888 -- core/src/fxcodec/codec/fx_codec_jpx_unittest.cpp | 538 - core/src/fxcodec/codec/fx_codec_png.cpp | 254 - core/src/fxcodec/codec/fx_codec_progress.cpp | 2299 ---- core/src/fxcodec/codec/fx_codec_progress.h | 213 - core/src/fxcodec/codec/fx_codec_tiff.cpp | 544 - core/src/fxcodec/jbig2/JBig2_ArithDecoder.cpp | 152 - core/src/fxcodec/jbig2/JBig2_ArithDecoder.h | 38 - core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp | 99 - core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h | 41 - core/src/fxcodec/jbig2/JBig2_BitStream.cpp | 189 - core/src/fxcodec/jbig2/JBig2_BitStream.h | 58 - core/src/fxcodec/jbig2/JBig2_Context.cpp | 1439 --- core/src/fxcodec/jbig2/JBig2_Context.h | 134 - core/src/fxcodec/jbig2/JBig2_Define.h | 36 - core/src/fxcodec/jbig2/JBig2_GrdProc.cpp | 1259 --- core/src/fxcodec/jbig2/JBig2_GrdProc.h | 124 - core/src/fxcodec/jbig2/JBig2_GrrdProc.cpp | 516 - core/src/fxcodec/jbig2/JBig2_GrrdProc.h | 43 - core/src/fxcodec/jbig2/JBig2_GsidProc.cpp | 123 - core/src/fxcodec/jbig2/JBig2_GsidProc.h | 36 - core/src/fxcodec/jbig2/JBig2_HtrdProc.cpp | 104 - core/src/fxcodec/jbig2/JBig2_HtrdProc.h | 46 - core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp | 46 - core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h | 24 - core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp | 137 - core/src/fxcodec/jbig2/JBig2_HuffmanTable.h | 50 - .../fxcodec/jbig2/JBig2_HuffmanTable_Standard.h | 98 - core/src/fxcodec/jbig2/JBig2_Image.cpp | 1099 -- core/src/fxcodec/jbig2/JBig2_Image.h | 85 - core/src/fxcodec/jbig2/JBig2_List.h | 56 - core/src/fxcodec/jbig2/JBig2_Page.h | 22 - core/src/fxcodec/jbig2/JBig2_PatternDict.cpp | 23 - core/src/fxcodec/jbig2/JBig2_PatternDict.h | 23 - core/src/fxcodec/jbig2/JBig2_PddProc.cpp | 87 - core/src/fxcodec/jbig2/JBig2_PddProc.h | 34 - core/src/fxcodec/jbig2/JBig2_SddProc.cpp | 624 -- core/src/fxcodec/jbig2/JBig2_SddProc.h | 49 - core/src/fxcodec/jbig2/JBig2_Segment.cpp | 44 - core/src/fxcodec/jbig2/JBig2_Segment.h | 66 - core/src/fxcodec/jbig2/JBig2_SymbolDict.cpp | 28 - core/src/fxcodec/jbig2/JBig2_SymbolDict.h | 48 - core/src/fxcodec/jbig2/JBig2_TrdProc.cpp | 407 - core/src/fxcodec/jbig2/JBig2_TrdProc.h | 82 - core/src/fxcodec/lbmp/fx_bmp.cpp | 948 -- core/src/fxcodec/lbmp/fx_bmp.h | 155 - core/src/fxcodec/lgif/fx_gif.cpp | 1229 --- core/src/fxcodec/lgif/fx_gif.h | 296 - core/src/fxcrt/extension.h | 334 - core/src/fxcrt/fx_arabic.cpp | 1063 -- core/src/fxcrt/fx_arabic.h | 211 - core/src/fxcrt/fx_basic_array.cpp | 342 - core/src/fxcrt/fx_basic_bstring.cpp | 1088 -- core/src/fxcrt/fx_basic_bstring_unittest.cpp | 689 -- core/src/fxcrt/fx_basic_buffer.cpp | 428 - core/src/fxcrt/fx_basic_coords.cpp | 517 - core/src/fxcrt/fx_basic_gcc.cpp | 242 - core/src/fxcrt/fx_basic_gcc_unittest.cpp | 88 - core/src/fxcrt/fx_basic_list.cpp | 125 - core/src/fxcrt/fx_basic_maps.cpp | 159 - core/src/fxcrt/fx_basic_memmgr.cpp | 25 - core/src/fxcrt/fx_basic_memmgr_unittest.cpp | 70 - core/src/fxcrt/fx_basic_plex.cpp | 26 - core/src/fxcrt/fx_basic_utf.cpp | 86 - core/src/fxcrt/fx_basic_util.cpp | 367 - core/src/fxcrt/fx_basic_wstring.cpp | 1050 -- core/src/fxcrt/fx_basic_wstring_unittest.cpp | 524 - core/src/fxcrt/fx_bidi.cpp | 81 - core/src/fxcrt/fx_bidi_unittest.cpp | 365 - core/src/fxcrt/fx_extension.cpp | 388 - core/src/fxcrt/fx_extension_unittest.cpp | 28 - core/src/fxcrt/fx_system_unittest.cpp | 162 - core/src/fxcrt/fx_ucddata.cpp | 11013 ------------------- core/src/fxcrt/fx_unicode.cpp | 67 - core/src/fxcrt/fx_xml_composer.cpp | 43 - core/src/fxcrt/fx_xml_parser.cpp | 795 -- core/src/fxcrt/fxcrt_platforms.cpp | 132 - core/src/fxcrt/fxcrt_platforms.h | 42 - core/src/fxcrt/fxcrt_posix.cpp | 130 - core/src/fxcrt/fxcrt_posix.h | 42 - core/src/fxcrt/fxcrt_stream.cpp | 27 - core/src/fxcrt/fxcrt_windows.cpp | 172 - core/src/fxcrt/fxcrt_windows.h | 40 - core/src/fxcrt/plex.h | 19 - core/src/fxcrt/xml_int.h | 130 - core/src/fxge/agg/DEPS | 3 - core/src/fxge/agg/fx_agg_driver.cpp | 1839 ---- core/src/fxge/agg/fx_agg_driver.h | 152 - core/src/fxge/android/fpf_skiafont.cpp | 217 - core/src/fxge/android/fpf_skiafont.h | 60 - core/src/fxge/android/fpf_skiafontmgr.cpp | 524 - core/src/fxge/android/fpf_skiafontmgr.h | 127 - core/src/fxge/android/fpf_skiamodule.cpp | 38 - core/src/fxge/android/fpf_skiamodule.h | 30 - core/src/fxge/android/fx_android_font.cpp | 89 - core/src/fxge/android/fx_android_font.h | 49 - core/src/fxge/android/fx_android_imp.cpp | 34 - core/src/fxge/apple/apple_int.h | 269 - core/src/fxge/apple/fx_apple_platform.cpp | 173 - core/src/fxge/apple/fx_mac_imp.cpp | 113 - core/src/fxge/apple/fx_quartz_device.cpp | 1048 -- core/src/fxge/dib/dib_int.h | 107 - core/src/fxge/dib/fx_dib_composite.cpp | 5210 --------- core/src/fxge/dib/fx_dib_convert.cpp | 1227 --- core/src/fxge/dib/fx_dib_engine.cpp | 917 -- core/src/fxge/dib/fx_dib_main.cpp | 1745 --- core/src/fxge/dib/fx_dib_transform.cpp | 948 -- .../fxge/fontdata/chromefontdata/FoxitDingbats.cpp | 2469 ----- .../fxge/fontdata/chromefontdata/FoxitFixed.cpp | 1476 --- .../fontdata/chromefontdata/FoxitFixedBold.cpp | 1514 --- .../chromefontdata/FoxitFixedBoldItalic.cpp | 1605 --- .../fontdata/chromefontdata/FoxitFixedItalic.cpp | 1572 --- .../src/fxge/fontdata/chromefontdata/FoxitSans.cpp | 1262 --- .../fxge/fontdata/chromefontdata/FoxitSansBold.cpp | 1371 --- .../chromefontdata/FoxitSansBoldItalic.cpp | 1378 --- .../fontdata/chromefontdata/FoxitSansItalic.cpp | 1371 --- .../fxge/fontdata/chromefontdata/FoxitSansMM.cpp | 5587 ---------- .../fxge/fontdata/chromefontdata/FoxitSerif.cpp | 1632 --- .../fontdata/chromefontdata/FoxitSerifBold.cpp | 1626 --- .../chromefontdata/FoxitSerifBoldItalic.cpp | 1737 --- .../fontdata/chromefontdata/FoxitSerifItalic.cpp | 1778 --- .../fxge/fontdata/chromefontdata/FoxitSerifMM.cpp | 9462 ---------------- .../fxge/fontdata/chromefontdata/FoxitSymbol.cpp | 1404 --- .../fxge/fontdata/chromefontdata/chromefontdata.h | 35 - core/src/fxge/freetype/fx_freetype.cpp | 171 - core/src/fxge/ge/fx_ge.cpp | 60 - core/src/fxge/ge/fx_ge_device.cpp | 474 - core/src/fxge/ge/fx_ge_font.cpp | 555 - core/src/fxge/ge/fx_ge_fontmap.cpp | 1623 --- core/src/fxge/ge/fx_ge_linux.cpp | 147 - core/src/fxge/ge/fx_ge_path.cpp | 656 -- core/src/fxge/ge/fx_ge_ps.cpp | 700 -- core/src/fxge/ge/fx_ge_text.cpp | 1872 ---- core/src/fxge/ge/fx_text_int.h | 84 - core/src/fxge/skia/fx_skia_device.cpp | 426 - core/src/fxge/skia/fx_skia_device.h | 149 - core/src/fxge/win32/dwrite_int.h | 66 - core/src/fxge/win32/fx_win32_device.cpp | 1372 --- core/src/fxge/win32/fx_win32_dib.cpp | 289 - core/src/fxge/win32/fx_win32_dwrite.cpp | 410 - core/src/fxge/win32/fx_win32_gdipext.cpp | 1518 --- core/src/fxge/win32/fx_win32_print.cpp | 473 - core/src/fxge/win32/win32_int.h | 369 - pdfium.gyp | 628 +- 644 files changed, 200653 insertions(+), 200899 deletions(-) create mode 100644 core/fdrm/crypto/fx_crypt.cpp create mode 100644 core/fdrm/crypto/fx_crypt_aes.cpp create mode 100644 core/fdrm/crypto/fx_crypt_sha.cpp create mode 100644 core/fpdfapi/fpdf_basic_module.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp create mode 100644 core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h create mode 100644 core/fpdfapi/fpdf_cmaps/cmap_int.h create mode 100644 core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp create mode 100644 core/fpdfapi/fpdf_edit/editint.h create mode 100644 core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp create mode 100644 core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp create mode 100644 core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp create mode 100644 core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp create mode 100644 core/fpdfapi/fpdf_font/font_int.h create mode 100644 core/fpdfapi/fpdf_font/fpdf_font.cpp create mode 100644 core/fpdfapi/fpdf_font/fpdf_font_charset.cpp create mode 100644 core/fpdfapi/fpdf_font/fpdf_font_cid.cpp create mode 100644 core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp create mode 100644 core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp create mode 100644 core/fpdfapi/fpdf_font/ttgsubtable.cpp create mode 100644 core/fpdfapi/fpdf_font/ttgsubtable.h create mode 100644 core/fpdfapi/fpdf_page/fpdf_page.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_colors.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_doc.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_func.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_image.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_parser.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_path.cpp create mode 100644 core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp create mode 100644 core/fpdfapi/fpdf_page/pageint.h create mode 100644 core/fpdfapi/fpdf_parser/cfdf_document.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_array.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_boolean.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_data_avail.h create mode 100644 core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_document.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_hint_tables.h create mode 100644 core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_name.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_null.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_number.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_object.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_parser.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_reference.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h create mode 100644 core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h create mode 100644 core/fpdfapi/fpdf_parser/cpdf_stream.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_string.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp create mode 100644 core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h create mode 100644 core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp create mode 100644 core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp create mode 100644 core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp create mode 100644 core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp create mode 100644 core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp create mode 100644 core/fpdfapi/fpdf_parser/fpdf_parser_utility.h create mode 100644 core/fpdfapi/fpdf_render/fpdf_render.cpp create mode 100644 core/fpdfapi/fpdf_render/fpdf_render_cache.cpp create mode 100644 core/fpdfapi/fpdf_render/fpdf_render_image.cpp create mode 100644 core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp create mode 100644 core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp create mode 100644 core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp create mode 100644 core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp create mode 100644 core/fpdfapi/fpdf_render/fpdf_render_text.cpp create mode 100644 core/fpdfapi/fpdf_render/render_int.h create mode 100644 core/fpdfdoc/doc_action.cpp create mode 100644 core/fpdfdoc/doc_annot.cpp create mode 100644 core/fpdfdoc/doc_ap.cpp create mode 100644 core/fpdfdoc/doc_basic.cpp create mode 100644 core/fpdfdoc/doc_basic_unittest.cpp create mode 100644 core/fpdfdoc/doc_bookmark.cpp create mode 100644 core/fpdfdoc/doc_form.cpp create mode 100644 core/fpdfdoc/doc_formcontrol.cpp create mode 100644 core/fpdfdoc/doc_formfield.cpp create mode 100644 core/fpdfdoc/doc_link.cpp create mode 100644 core/fpdfdoc/doc_metadata.cpp create mode 100644 core/fpdfdoc/doc_ocg.cpp create mode 100644 core/fpdfdoc/doc_tagged.cpp create mode 100644 core/fpdfdoc/doc_utils.cpp create mode 100644 core/fpdfdoc/doc_utils.h create mode 100644 core/fpdfdoc/doc_viewerPreferences.cpp create mode 100644 core/fpdfdoc/doc_vt.cpp create mode 100644 core/fpdfdoc/doc_vtmodule.cpp create mode 100644 core/fpdfdoc/pdf_vt.h create mode 100644 core/fpdfdoc/tagged_int.h create mode 100644 core/fpdftext/fpdf_text_int.cpp create mode 100644 core/fpdftext/fpdf_text_int_unittest.cpp create mode 100644 core/fpdftext/text_int.h create mode 100644 core/fpdftext/unicodenormalization.cpp create mode 100644 core/fpdftext/unicodenormalizationdata.cpp create mode 100644 core/fpdftext/unicodenormalizationdata.h create mode 100644 core/fxcodec/DEPS create mode 100644 core/fxcodec/codec/DEPS create mode 100644 core/fxcodec/codec/codec_int.h create mode 100644 core/fxcodec/codec/fx_codec.cpp create mode 100644 core/fxcodec/codec/fx_codec_bmp.cpp create mode 100644 core/fxcodec/codec/fx_codec_fax.cpp create mode 100644 core/fxcodec/codec/fx_codec_flate.cpp create mode 100644 core/fxcodec/codec/fx_codec_gif.cpp create mode 100644 core/fxcodec/codec/fx_codec_icc.cpp create mode 100644 core/fxcodec/codec/fx_codec_jbig.cpp create mode 100644 core/fxcodec/codec/fx_codec_jpeg.cpp create mode 100644 core/fxcodec/codec/fx_codec_jpx_opj.cpp create mode 100644 core/fxcodec/codec/fx_codec_jpx_unittest.cpp create mode 100644 core/fxcodec/codec/fx_codec_png.cpp create mode 100644 core/fxcodec/codec/fx_codec_progress.cpp create mode 100644 core/fxcodec/codec/fx_codec_progress.h create mode 100644 core/fxcodec/codec/fx_codec_tiff.cpp create mode 100644 core/fxcodec/jbig2/JBig2_ArithDecoder.cpp create mode 100644 core/fxcodec/jbig2/JBig2_ArithDecoder.h create mode 100644 core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp create mode 100644 core/fxcodec/jbig2/JBig2_ArithIntDecoder.h create mode 100644 core/fxcodec/jbig2/JBig2_BitStream.cpp create mode 100644 core/fxcodec/jbig2/JBig2_BitStream.h create mode 100644 core/fxcodec/jbig2/JBig2_Context.cpp create mode 100644 core/fxcodec/jbig2/JBig2_Context.h create mode 100644 core/fxcodec/jbig2/JBig2_Define.h create mode 100644 core/fxcodec/jbig2/JBig2_GrdProc.cpp create mode 100644 core/fxcodec/jbig2/JBig2_GrdProc.h create mode 100644 core/fxcodec/jbig2/JBig2_GrrdProc.cpp create mode 100644 core/fxcodec/jbig2/JBig2_GrrdProc.h create mode 100644 core/fxcodec/jbig2/JBig2_GsidProc.cpp create mode 100644 core/fxcodec/jbig2/JBig2_GsidProc.h create mode 100644 core/fxcodec/jbig2/JBig2_HtrdProc.cpp create mode 100644 core/fxcodec/jbig2/JBig2_HtrdProc.h create mode 100644 core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp create mode 100644 core/fxcodec/jbig2/JBig2_HuffmanDecoder.h create mode 100644 core/fxcodec/jbig2/JBig2_HuffmanTable.cpp create mode 100644 core/fxcodec/jbig2/JBig2_HuffmanTable.h create mode 100644 core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h create mode 100644 core/fxcodec/jbig2/JBig2_Image.cpp create mode 100644 core/fxcodec/jbig2/JBig2_Image.h create mode 100644 core/fxcodec/jbig2/JBig2_List.h create mode 100644 core/fxcodec/jbig2/JBig2_Page.h create mode 100644 core/fxcodec/jbig2/JBig2_PatternDict.cpp create mode 100644 core/fxcodec/jbig2/JBig2_PatternDict.h create mode 100644 core/fxcodec/jbig2/JBig2_PddProc.cpp create mode 100644 core/fxcodec/jbig2/JBig2_PddProc.h create mode 100644 core/fxcodec/jbig2/JBig2_SddProc.cpp create mode 100644 core/fxcodec/jbig2/JBig2_SddProc.h create mode 100644 core/fxcodec/jbig2/JBig2_Segment.cpp create mode 100644 core/fxcodec/jbig2/JBig2_Segment.h create mode 100644 core/fxcodec/jbig2/JBig2_SymbolDict.cpp create mode 100644 core/fxcodec/jbig2/JBig2_SymbolDict.h create mode 100644 core/fxcodec/jbig2/JBig2_TrdProc.cpp create mode 100644 core/fxcodec/jbig2/JBig2_TrdProc.h create mode 100644 core/fxcodec/lbmp/fx_bmp.cpp create mode 100644 core/fxcodec/lbmp/fx_bmp.h create mode 100644 core/fxcodec/lgif/fx_gif.cpp create mode 100644 core/fxcodec/lgif/fx_gif.h create mode 100644 core/fxcrt/extension.h create mode 100644 core/fxcrt/fx_arabic.cpp create mode 100644 core/fxcrt/fx_arabic.h create mode 100644 core/fxcrt/fx_basic_array.cpp create mode 100644 core/fxcrt/fx_basic_bstring.cpp create mode 100644 core/fxcrt/fx_basic_bstring_unittest.cpp create mode 100644 core/fxcrt/fx_basic_buffer.cpp create mode 100644 core/fxcrt/fx_basic_coords.cpp create mode 100644 core/fxcrt/fx_basic_gcc.cpp create mode 100644 core/fxcrt/fx_basic_gcc_unittest.cpp create mode 100644 core/fxcrt/fx_basic_list.cpp create mode 100644 core/fxcrt/fx_basic_maps.cpp create mode 100644 core/fxcrt/fx_basic_memmgr.cpp create mode 100644 core/fxcrt/fx_basic_memmgr_unittest.cpp create mode 100644 core/fxcrt/fx_basic_plex.cpp create mode 100644 core/fxcrt/fx_basic_utf.cpp create mode 100644 core/fxcrt/fx_basic_util.cpp create mode 100644 core/fxcrt/fx_basic_wstring.cpp create mode 100644 core/fxcrt/fx_basic_wstring_unittest.cpp create mode 100644 core/fxcrt/fx_bidi.cpp create mode 100644 core/fxcrt/fx_bidi_unittest.cpp create mode 100644 core/fxcrt/fx_extension.cpp create mode 100644 core/fxcrt/fx_extension_unittest.cpp create mode 100644 core/fxcrt/fx_system_unittest.cpp create mode 100644 core/fxcrt/fx_ucddata.cpp create mode 100644 core/fxcrt/fx_unicode.cpp create mode 100644 core/fxcrt/fx_xml_composer.cpp create mode 100644 core/fxcrt/fx_xml_parser.cpp create mode 100644 core/fxcrt/fxcrt_platforms.cpp create mode 100644 core/fxcrt/fxcrt_platforms.h create mode 100644 core/fxcrt/fxcrt_posix.cpp create mode 100644 core/fxcrt/fxcrt_posix.h create mode 100644 core/fxcrt/fxcrt_stream.cpp create mode 100644 core/fxcrt/fxcrt_windows.cpp create mode 100644 core/fxcrt/fxcrt_windows.h create mode 100644 core/fxcrt/plex.h create mode 100644 core/fxcrt/xml_int.h create mode 100644 core/fxge/agg/DEPS create mode 100644 core/fxge/agg/fx_agg_driver.cpp create mode 100644 core/fxge/agg/fx_agg_driver.h create mode 100644 core/fxge/android/fpf_skiafont.cpp create mode 100644 core/fxge/android/fpf_skiafont.h create mode 100644 core/fxge/android/fpf_skiafontmgr.cpp create mode 100644 core/fxge/android/fpf_skiafontmgr.h create mode 100644 core/fxge/android/fpf_skiamodule.cpp create mode 100644 core/fxge/android/fpf_skiamodule.h create mode 100644 core/fxge/android/fx_android_font.cpp create mode 100644 core/fxge/android/fx_android_font.h create mode 100644 core/fxge/android/fx_android_imp.cpp create mode 100644 core/fxge/apple/apple_int.h create mode 100644 core/fxge/apple/fx_apple_platform.cpp create mode 100644 core/fxge/apple/fx_mac_imp.cpp create mode 100644 core/fxge/apple/fx_quartz_device.cpp create mode 100644 core/fxge/dib/dib_int.h create mode 100644 core/fxge/dib/fx_dib_composite.cpp create mode 100644 core/fxge/dib/fx_dib_convert.cpp create mode 100644 core/fxge/dib/fx_dib_engine.cpp create mode 100644 core/fxge/dib/fx_dib_main.cpp create mode 100644 core/fxge/dib/fx_dib_transform.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitDingbats.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitFixed.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSans.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSansBold.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSerif.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp create mode 100644 core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp create mode 100644 core/fxge/fontdata/chromefontdata/chromefontdata.h create mode 100644 core/fxge/freetype/fx_freetype.cpp create mode 100644 core/fxge/ge/fx_ge.cpp create mode 100644 core/fxge/ge/fx_ge_device.cpp create mode 100644 core/fxge/ge/fx_ge_font.cpp create mode 100644 core/fxge/ge/fx_ge_fontmap.cpp create mode 100644 core/fxge/ge/fx_ge_linux.cpp create mode 100644 core/fxge/ge/fx_ge_path.cpp create mode 100644 core/fxge/ge/fx_ge_ps.cpp create mode 100644 core/fxge/ge/fx_ge_text.cpp create mode 100644 core/fxge/ge/fx_text_int.h create mode 100644 core/fxge/skia/fx_skia_device.cpp create mode 100644 core/fxge/skia/fx_skia_device.h create mode 100644 core/fxge/win32/dwrite_int.h create mode 100644 core/fxge/win32/fx_win32_device.cpp create mode 100644 core/fxge/win32/fx_win32_dib.cpp create mode 100644 core/fxge/win32/fx_win32_dwrite.cpp create mode 100644 core/fxge/win32/fx_win32_gdipext.cpp create mode 100644 core/fxge/win32/fx_win32_print.cpp create mode 100644 core/fxge/win32/win32_int.h delete mode 100644 core/src/fdrm/crypto/fx_crypt.cpp delete mode 100644 core/src/fdrm/crypto/fx_crypt_aes.cpp delete mode 100644 core/src/fdrm/crypto/fx_crypt_sha.cpp delete mode 100644 core/src/fpdfapi/fpdf_basic_module.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp delete mode 100644 core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h delete mode 100644 core/src/fpdfapi/fpdf_cmaps/cmap_int.h delete mode 100644 core/src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp delete mode 100644 core/src/fpdfapi/fpdf_edit/editint.h delete mode 100644 core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp delete mode 100644 core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp delete mode 100644 core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp delete mode 100644 core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp delete mode 100644 core/src/fpdfapi/fpdf_font/font_int.h delete mode 100644 core/src/fpdfapi/fpdf_font/fpdf_font.cpp delete mode 100644 core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp delete mode 100644 core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp delete mode 100644 core/src/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_font/fpdf_font_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_font/ttgsubtable.cpp delete mode 100644 core/src/fpdfapi/fpdf_font/ttgsubtable.h delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp delete mode 100644 core/src/fpdfapi/fpdf_page/pageint.h delete mode 100644 core/src/fpdfapi/fpdf_parser/cfdf_document.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_array.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_boolean.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_data_avail.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_dictionary.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_document.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_name.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_null.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_number.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_object.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_parser.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_reference.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_stream.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_string.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h delete mode 100644 core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp delete mode 100644 core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp delete mode 100644 core/src/fpdfapi/fpdf_render/render_int.h delete mode 100644 core/src/fpdfdoc/doc_action.cpp delete mode 100644 core/src/fpdfdoc/doc_annot.cpp delete mode 100644 core/src/fpdfdoc/doc_ap.cpp delete mode 100644 core/src/fpdfdoc/doc_basic.cpp delete mode 100644 core/src/fpdfdoc/doc_basic_unittest.cpp delete mode 100644 core/src/fpdfdoc/doc_bookmark.cpp delete mode 100644 core/src/fpdfdoc/doc_form.cpp delete mode 100644 core/src/fpdfdoc/doc_formcontrol.cpp delete mode 100644 core/src/fpdfdoc/doc_formfield.cpp delete mode 100644 core/src/fpdfdoc/doc_link.cpp delete mode 100644 core/src/fpdfdoc/doc_metadata.cpp delete mode 100644 core/src/fpdfdoc/doc_ocg.cpp delete mode 100644 core/src/fpdfdoc/doc_tagged.cpp delete mode 100644 core/src/fpdfdoc/doc_utils.cpp delete mode 100644 core/src/fpdfdoc/doc_utils.h delete mode 100644 core/src/fpdfdoc/doc_viewerPreferences.cpp delete mode 100644 core/src/fpdfdoc/doc_vt.cpp delete mode 100644 core/src/fpdfdoc/doc_vtmodule.cpp delete mode 100644 core/src/fpdfdoc/pdf_vt.h delete mode 100644 core/src/fpdfdoc/tagged_int.h delete mode 100644 core/src/fpdftext/fpdf_text_int.cpp delete mode 100644 core/src/fpdftext/fpdf_text_int_unittest.cpp delete mode 100644 core/src/fpdftext/text_int.h delete mode 100644 core/src/fpdftext/unicodenormalization.cpp delete mode 100644 core/src/fpdftext/unicodenormalizationdata.cpp delete mode 100644 core/src/fpdftext/unicodenormalizationdata.h delete mode 100644 core/src/fxcodec/DEPS delete mode 100644 core/src/fxcodec/codec/DEPS delete mode 100644 core/src/fxcodec/codec/codec_int.h delete mode 100644 core/src/fxcodec/codec/fx_codec.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_bmp.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_fax.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_flate.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_gif.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_icc.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_jbig.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_jpeg.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_jpx_opj.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_jpx_unittest.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_png.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_progress.cpp delete mode 100644 core/src/fxcodec/codec/fx_codec_progress.h delete mode 100644 core/src/fxcodec/codec/fx_codec_tiff.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_ArithDecoder.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_ArithDecoder.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_BitStream.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_BitStream.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_Context.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_Context.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_Define.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_GrdProc.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_GrdProc.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_GrrdProc.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_GrrdProc.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_GsidProc.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_GsidProc.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_HtrdProc.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_HtrdProc.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_HuffmanTable.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_Image.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_Image.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_List.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_Page.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_PatternDict.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_PatternDict.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_PddProc.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_PddProc.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_SddProc.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_SddProc.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_Segment.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_Segment.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_SymbolDict.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_SymbolDict.h delete mode 100644 core/src/fxcodec/jbig2/JBig2_TrdProc.cpp delete mode 100644 core/src/fxcodec/jbig2/JBig2_TrdProc.h delete mode 100644 core/src/fxcodec/lbmp/fx_bmp.cpp delete mode 100644 core/src/fxcodec/lbmp/fx_bmp.h delete mode 100644 core/src/fxcodec/lgif/fx_gif.cpp delete mode 100644 core/src/fxcodec/lgif/fx_gif.h delete mode 100644 core/src/fxcrt/extension.h delete mode 100644 core/src/fxcrt/fx_arabic.cpp delete mode 100644 core/src/fxcrt/fx_arabic.h delete mode 100644 core/src/fxcrt/fx_basic_array.cpp delete mode 100644 core/src/fxcrt/fx_basic_bstring.cpp delete mode 100644 core/src/fxcrt/fx_basic_bstring_unittest.cpp delete mode 100644 core/src/fxcrt/fx_basic_buffer.cpp delete mode 100644 core/src/fxcrt/fx_basic_coords.cpp delete mode 100644 core/src/fxcrt/fx_basic_gcc.cpp delete mode 100644 core/src/fxcrt/fx_basic_gcc_unittest.cpp delete mode 100644 core/src/fxcrt/fx_basic_list.cpp delete mode 100644 core/src/fxcrt/fx_basic_maps.cpp delete mode 100644 core/src/fxcrt/fx_basic_memmgr.cpp delete mode 100644 core/src/fxcrt/fx_basic_memmgr_unittest.cpp delete mode 100644 core/src/fxcrt/fx_basic_plex.cpp delete mode 100644 core/src/fxcrt/fx_basic_utf.cpp delete mode 100644 core/src/fxcrt/fx_basic_util.cpp delete mode 100644 core/src/fxcrt/fx_basic_wstring.cpp delete mode 100644 core/src/fxcrt/fx_basic_wstring_unittest.cpp delete mode 100644 core/src/fxcrt/fx_bidi.cpp delete mode 100644 core/src/fxcrt/fx_bidi_unittest.cpp delete mode 100644 core/src/fxcrt/fx_extension.cpp delete mode 100644 core/src/fxcrt/fx_extension_unittest.cpp delete mode 100644 core/src/fxcrt/fx_system_unittest.cpp delete mode 100644 core/src/fxcrt/fx_ucddata.cpp delete mode 100644 core/src/fxcrt/fx_unicode.cpp delete mode 100644 core/src/fxcrt/fx_xml_composer.cpp delete mode 100644 core/src/fxcrt/fx_xml_parser.cpp delete mode 100644 core/src/fxcrt/fxcrt_platforms.cpp delete mode 100644 core/src/fxcrt/fxcrt_platforms.h delete mode 100644 core/src/fxcrt/fxcrt_posix.cpp delete mode 100644 core/src/fxcrt/fxcrt_posix.h delete mode 100644 core/src/fxcrt/fxcrt_stream.cpp delete mode 100644 core/src/fxcrt/fxcrt_windows.cpp delete mode 100644 core/src/fxcrt/fxcrt_windows.h delete mode 100644 core/src/fxcrt/plex.h delete mode 100644 core/src/fxcrt/xml_int.h delete mode 100644 core/src/fxge/agg/DEPS delete mode 100644 core/src/fxge/agg/fx_agg_driver.cpp delete mode 100644 core/src/fxge/agg/fx_agg_driver.h delete mode 100644 core/src/fxge/android/fpf_skiafont.cpp delete mode 100644 core/src/fxge/android/fpf_skiafont.h delete mode 100644 core/src/fxge/android/fpf_skiafontmgr.cpp delete mode 100644 core/src/fxge/android/fpf_skiafontmgr.h delete mode 100644 core/src/fxge/android/fpf_skiamodule.cpp delete mode 100644 core/src/fxge/android/fpf_skiamodule.h delete mode 100644 core/src/fxge/android/fx_android_font.cpp delete mode 100644 core/src/fxge/android/fx_android_font.h delete mode 100644 core/src/fxge/android/fx_android_imp.cpp delete mode 100644 core/src/fxge/apple/apple_int.h delete mode 100644 core/src/fxge/apple/fx_apple_platform.cpp delete mode 100644 core/src/fxge/apple/fx_mac_imp.cpp delete mode 100644 core/src/fxge/apple/fx_quartz_device.cpp delete mode 100644 core/src/fxge/dib/dib_int.h delete mode 100644 core/src/fxge/dib/fx_dib_composite.cpp delete mode 100644 core/src/fxge/dib/fx_dib_convert.cpp delete mode 100644 core/src/fxge/dib/fx_dib_engine.cpp delete mode 100644 core/src/fxge/dib/fx_dib_main.cpp delete mode 100644 core/src/fxge/dib/fx_dib_transform.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitDingbats.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitFixed.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSans.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSansBold.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSansMM.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSerif.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/FoxitSymbol.cpp delete mode 100644 core/src/fxge/fontdata/chromefontdata/chromefontdata.h delete mode 100644 core/src/fxge/freetype/fx_freetype.cpp delete mode 100644 core/src/fxge/ge/fx_ge.cpp delete mode 100644 core/src/fxge/ge/fx_ge_device.cpp delete mode 100644 core/src/fxge/ge/fx_ge_font.cpp delete mode 100644 core/src/fxge/ge/fx_ge_fontmap.cpp delete mode 100644 core/src/fxge/ge/fx_ge_linux.cpp delete mode 100644 core/src/fxge/ge/fx_ge_path.cpp delete mode 100644 core/src/fxge/ge/fx_ge_ps.cpp delete mode 100644 core/src/fxge/ge/fx_ge_text.cpp delete mode 100644 core/src/fxge/ge/fx_text_int.h delete mode 100644 core/src/fxge/skia/fx_skia_device.cpp delete mode 100644 core/src/fxge/skia/fx_skia_device.h delete mode 100644 core/src/fxge/win32/dwrite_int.h delete mode 100644 core/src/fxge/win32/fx_win32_device.cpp delete mode 100644 core/src/fxge/win32/fx_win32_dib.cpp delete mode 100644 core/src/fxge/win32/fx_win32_dwrite.cpp delete mode 100644 core/src/fxge/win32/fx_win32_gdipext.cpp delete mode 100644 core/src/fxge/win32/fx_win32_print.cpp delete mode 100644 core/src/fxge/win32/win32_int.h diff --git a/BUILD.gn b/BUILD.gn index 402fe2352a..4116132034 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -198,45 +198,166 @@ visibility = [ static_library("fdrm") { sources = [ + "core/fdrm/crypto/fx_crypt.cpp", + "core/fdrm/crypto/fx_crypt_aes.cpp", + "core/fdrm/crypto/fx_crypt_sha.cpp", "core/include/fdrm/fx_crypt.h", - "core/src/fdrm/crypto/fx_crypt.cpp", - "core/src/fdrm/crypto/fx_crypt_aes.cpp", - "core/src/fdrm/crypto/fx_crypt_sha.cpp", ] configs += [ ":pdfium_config" ] } static_library("fpdfdoc") { sources = [ + "core/fpdfdoc/doc_action.cpp", + "core/fpdfdoc/doc_annot.cpp", + "core/fpdfdoc/doc_ap.cpp", + "core/fpdfdoc/doc_basic.cpp", + "core/fpdfdoc/doc_bookmark.cpp", + "core/fpdfdoc/doc_form.cpp", + "core/fpdfdoc/doc_formcontrol.cpp", + "core/fpdfdoc/doc_formfield.cpp", + "core/fpdfdoc/doc_link.cpp", + "core/fpdfdoc/doc_metadata.cpp", + "core/fpdfdoc/doc_ocg.cpp", + "core/fpdfdoc/doc_tagged.cpp", + "core/fpdfdoc/doc_utils.cpp", + "core/fpdfdoc/doc_utils.h", + "core/fpdfdoc/doc_viewerPreferences.cpp", + "core/fpdfdoc/doc_vt.cpp", + "core/fpdfdoc/doc_vtmodule.cpp", + "core/fpdfdoc/pdf_vt.h", + "core/fpdfdoc/tagged_int.h", "core/include/fpdfdoc/fpdf_ap.h", "core/include/fpdfdoc/fpdf_doc.h", "core/include/fpdfdoc/fpdf_tagged.h", "core/include/fpdfdoc/fpdf_vt.h", - "core/src/fpdfdoc/doc_action.cpp", - "core/src/fpdfdoc/doc_annot.cpp", - "core/src/fpdfdoc/doc_ap.cpp", - "core/src/fpdfdoc/doc_basic.cpp", - "core/src/fpdfdoc/doc_bookmark.cpp", - "core/src/fpdfdoc/doc_form.cpp", - "core/src/fpdfdoc/doc_formcontrol.cpp", - "core/src/fpdfdoc/doc_formfield.cpp", - "core/src/fpdfdoc/doc_link.cpp", - "core/src/fpdfdoc/doc_metadata.cpp", - "core/src/fpdfdoc/doc_ocg.cpp", - "core/src/fpdfdoc/doc_tagged.cpp", - "core/src/fpdfdoc/doc_utils.cpp", - "core/src/fpdfdoc/doc_utils.h", - "core/src/fpdfdoc/doc_viewerPreferences.cpp", - "core/src/fpdfdoc/doc_vt.cpp", - "core/src/fpdfdoc/doc_vtmodule.cpp", - "core/src/fpdfdoc/pdf_vt.h", - "core/src/fpdfdoc/tagged_int.h", ] configs += [ ":pdfium_config" ] } static_library("fpdfapi") { sources = [ + "core/fpdfapi/fpdf_basic_module.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp", + "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp", + "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp", + "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp", + "core/fpdfapi/fpdf_cmaps/cmap_int.h", + "core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp", + "core/fpdfapi/fpdf_edit/editint.h", + "core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp", + "core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp", + "core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp", + "core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp", + "core/fpdfapi/fpdf_font/font_int.h", + "core/fpdfapi/fpdf_font/fpdf_font.cpp", + "core/fpdfapi/fpdf_font/fpdf_font_charset.cpp", + "core/fpdfapi/fpdf_font/fpdf_font_cid.cpp", + "core/fpdfapi/fpdf_font/ttgsubtable.cpp", + "core/fpdfapi/fpdf_font/ttgsubtable.h", + "core/fpdfapi/fpdf_page/fpdf_page.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_colors.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_doc.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_func.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_image.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_parser.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_path.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp", + "core/fpdfapi/fpdf_page/pageint.h", + "core/fpdfapi/fpdf_parser/cfdf_document.cpp", + "core/fpdfapi/fpdf_parser/cpdf_array.cpp", + "core/fpdfapi/fpdf_parser/cpdf_boolean.cpp", + "core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp", + "core/fpdfapi/fpdf_parser/cpdf_data_avail.h", + "core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp", + "core/fpdfapi/fpdf_parser/cpdf_document.cpp", + "core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp", + "core/fpdfapi/fpdf_parser/cpdf_hint_tables.h", + "core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp", + "core/fpdfapi/fpdf_parser/cpdf_name.cpp", + "core/fpdfapi/fpdf_parser/cpdf_null.cpp", + "core/fpdfapi/fpdf_parser/cpdf_number.cpp", + "core/fpdfapi/fpdf_parser/cpdf_object.cpp", + "core/fpdfapi/fpdf_parser/cpdf_parser.cpp", + "core/fpdfapi/fpdf_parser/cpdf_reference.cpp", + "core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp", + "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp", + "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h", + "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp", + "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h", + "core/fpdfapi/fpdf_parser/cpdf_stream.cpp", + "core/fpdfapi/fpdf_parser/cpdf_string.cpp", + "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp", + "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h", + "core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp", + "core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp", + "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h", + "core/fpdfapi/fpdf_render/fpdf_render.cpp", + "core/fpdfapi/fpdf_render/fpdf_render_cache.cpp", + "core/fpdfapi/fpdf_render/fpdf_render_image.cpp", + "core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp", + "core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp", + "core/fpdfapi/fpdf_render/fpdf_render_text.cpp", + "core/fpdfapi/fpdf_render/render_int.h", "core/include/fpdfapi/cfdf_document.h", "core/include/fpdfapi/cpdf_array.h", "core/include/fpdfapi/cpdf_boolean.h", @@ -262,139 +383,18 @@ static_library("fpdfapi") { "core/include/fpdfapi/ipdf_crypto_handler.h", "core/include/fpdfapi/ipdf_data_avail.h", "core/include/fpdfapi/ipdf_security_handler.h", - "core/src/fpdfapi/fpdf_basic_module.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp", - "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp", - "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp", - "core/src/fpdfapi/fpdf_cmaps/cmap_int.h", - "core/src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp", - "core/src/fpdfapi/fpdf_edit/editint.h", - "core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp", - "core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp", - "core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp", - "core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp", - "core/src/fpdfapi/fpdf_font/font_int.h", - "core/src/fpdfapi/fpdf_font/fpdf_font.cpp", - "core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp", - "core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp", - "core/src/fpdfapi/fpdf_font/ttgsubtable.cpp", - "core/src/fpdfapi/fpdf_font/ttgsubtable.h", - "core/src/fpdfapi/fpdf_page/fpdf_page.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp", - "core/src/fpdfapi/fpdf_page/pageint.h", - "core/src/fpdfapi/fpdf_parser/cfdf_document.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_array.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_boolean.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_data_avail.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h", - "core/src/fpdfapi/fpdf_parser/cpdf_dictionary.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_document.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h", - "core/src/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_name.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_null.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_number.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_object.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_parser.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_reference.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h", - "core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h", - "core/src/fpdfapi/fpdf_parser/cpdf_stream.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_string.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h", - "core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp", - "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp", - "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h", - "core/src/fpdfapi/fpdf_render/fpdf_render.cpp", - "core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp", - "core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp", - "core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp", - "core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp", - "core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp", - "core/src/fpdfapi/fpdf_render/render_int.h", ] configs += [ ":pdfium_config" ] } static_library("fpdftext") { sources = [ + "core/fpdftext/fpdf_text_int.cpp", + "core/fpdftext/text_int.h", + "core/fpdftext/unicodenormalization.cpp", + "core/fpdftext/unicodenormalizationdata.cpp", + "core/fpdftext/unicodenormalizationdata.h", "core/include/fpdftext/fpdf_text.h", - "core/src/fpdftext/fpdf_text_int.cpp", - "core/src/fpdftext/text_int.h", - "core/src/fpdftext/unicodenormalization.cpp", - "core/src/fpdftext/unicodenormalizationdata.cpp", - "core/src/fpdftext/unicodenormalizationdata.h", ] configs += [ ":pdfium_config" ] } @@ -409,69 +409,69 @@ static_library("fxcodec") { "//third_party:jpeg", ] sources = [ + "core/fxcodec/codec/codec_int.h", + "core/fxcodec/codec/fx_codec.cpp", + "core/fxcodec/codec/fx_codec_fax.cpp", + "core/fxcodec/codec/fx_codec_flate.cpp", + "core/fxcodec/codec/fx_codec_icc.cpp", + "core/fxcodec/codec/fx_codec_jbig.cpp", + "core/fxcodec/codec/fx_codec_jpeg.cpp", + "core/fxcodec/codec/fx_codec_jpx_opj.cpp", + "core/fxcodec/jbig2/JBig2_ArithDecoder.cpp", + "core/fxcodec/jbig2/JBig2_ArithDecoder.h", + "core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp", + "core/fxcodec/jbig2/JBig2_ArithIntDecoder.h", + "core/fxcodec/jbig2/JBig2_BitStream.cpp", + "core/fxcodec/jbig2/JBig2_BitStream.h", + "core/fxcodec/jbig2/JBig2_Context.cpp", + "core/fxcodec/jbig2/JBig2_Context.h", + "core/fxcodec/jbig2/JBig2_Define.h", + "core/fxcodec/jbig2/JBig2_GrdProc.cpp", + "core/fxcodec/jbig2/JBig2_GrdProc.h", + "core/fxcodec/jbig2/JBig2_GrrdProc.cpp", + "core/fxcodec/jbig2/JBig2_GrrdProc.h", + "core/fxcodec/jbig2/JBig2_GsidProc.cpp", + "core/fxcodec/jbig2/JBig2_GsidProc.h", + "core/fxcodec/jbig2/JBig2_HtrdProc.cpp", + "core/fxcodec/jbig2/JBig2_HtrdProc.h", + "core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp", + "core/fxcodec/jbig2/JBig2_HuffmanDecoder.h", + "core/fxcodec/jbig2/JBig2_HuffmanTable.cpp", + "core/fxcodec/jbig2/JBig2_HuffmanTable.h", + "core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h", + "core/fxcodec/jbig2/JBig2_Image.cpp", + "core/fxcodec/jbig2/JBig2_Image.h", + "core/fxcodec/jbig2/JBig2_List.h", + "core/fxcodec/jbig2/JBig2_Page.h", + "core/fxcodec/jbig2/JBig2_PatternDict.cpp", + "core/fxcodec/jbig2/JBig2_PatternDict.h", + "core/fxcodec/jbig2/JBig2_PddProc.cpp", + "core/fxcodec/jbig2/JBig2_PddProc.h", + "core/fxcodec/jbig2/JBig2_SddProc.cpp", + "core/fxcodec/jbig2/JBig2_SddProc.h", + "core/fxcodec/jbig2/JBig2_Segment.cpp", + "core/fxcodec/jbig2/JBig2_Segment.h", + "core/fxcodec/jbig2/JBig2_SymbolDict.cpp", + "core/fxcodec/jbig2/JBig2_SymbolDict.h", + "core/fxcodec/jbig2/JBig2_TrdProc.cpp", + "core/fxcodec/jbig2/JBig2_TrdProc.h", "core/include/fxcodec/fx_codec.h", "core/include/fxcodec/fx_codec_def.h", "core/include/fxcodec/fx_codec_flate.h", - "core/src/fxcodec/codec/codec_int.h", - "core/src/fxcodec/codec/fx_codec.cpp", - "core/src/fxcodec/codec/fx_codec_fax.cpp", - "core/src/fxcodec/codec/fx_codec_flate.cpp", - "core/src/fxcodec/codec/fx_codec_icc.cpp", - "core/src/fxcodec/codec/fx_codec_jbig.cpp", - "core/src/fxcodec/codec/fx_codec_jpeg.cpp", - "core/src/fxcodec/codec/fx_codec_jpx_opj.cpp", - "core/src/fxcodec/jbig2/JBig2_ArithDecoder.cpp", - "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h", - "core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp", - "core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h", - "core/src/fxcodec/jbig2/JBig2_BitStream.cpp", - "core/src/fxcodec/jbig2/JBig2_BitStream.h", - "core/src/fxcodec/jbig2/JBig2_Context.cpp", - "core/src/fxcodec/jbig2/JBig2_Context.h", - "core/src/fxcodec/jbig2/JBig2_Define.h", - "core/src/fxcodec/jbig2/JBig2_GrdProc.cpp", - "core/src/fxcodec/jbig2/JBig2_GrdProc.h", - "core/src/fxcodec/jbig2/JBig2_GrrdProc.cpp", - "core/src/fxcodec/jbig2/JBig2_GrrdProc.h", - "core/src/fxcodec/jbig2/JBig2_GsidProc.cpp", - "core/src/fxcodec/jbig2/JBig2_GsidProc.h", - "core/src/fxcodec/jbig2/JBig2_HtrdProc.cpp", - "core/src/fxcodec/jbig2/JBig2_HtrdProc.h", - "core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp", - "core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h", - "core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp", - "core/src/fxcodec/jbig2/JBig2_HuffmanTable.h", - "core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h", - "core/src/fxcodec/jbig2/JBig2_Image.cpp", - "core/src/fxcodec/jbig2/JBig2_Image.h", - "core/src/fxcodec/jbig2/JBig2_List.h", - "core/src/fxcodec/jbig2/JBig2_Page.h", - "core/src/fxcodec/jbig2/JBig2_PatternDict.cpp", - "core/src/fxcodec/jbig2/JBig2_PatternDict.h", - "core/src/fxcodec/jbig2/JBig2_PddProc.cpp", - "core/src/fxcodec/jbig2/JBig2_PddProc.h", - "core/src/fxcodec/jbig2/JBig2_SddProc.cpp", - "core/src/fxcodec/jbig2/JBig2_SddProc.h", - "core/src/fxcodec/jbig2/JBig2_Segment.cpp", - "core/src/fxcodec/jbig2/JBig2_Segment.h", - "core/src/fxcodec/jbig2/JBig2_SymbolDict.cpp", - "core/src/fxcodec/jbig2/JBig2_SymbolDict.h", - "core/src/fxcodec/jbig2/JBig2_TrdProc.cpp", - "core/src/fxcodec/jbig2/JBig2_TrdProc.h", ] include_dirs = [] if (pdf_enable_xfa) { sources += [ - "core/src/fxcodec/codec/fx_codec_bmp.cpp", - "core/src/fxcodec/codec/fx_codec_gif.cpp", - "core/src/fxcodec/codec/fx_codec_png.cpp", - "core/src/fxcodec/codec/fx_codec_progress.cpp", - "core/src/fxcodec/codec/fx_codec_progress.h", - "core/src/fxcodec/codec/fx_codec_tiff.cpp", - "core/src/fxcodec/lbmp/fx_bmp.cpp", - "core/src/fxcodec/lbmp/fx_bmp.h", - "core/src/fxcodec/lgif/fx_gif.cpp", - "core/src/fxcodec/lgif/fx_gif.h", + "core/fxcodec/codec/fx_codec_bmp.cpp", + "core/fxcodec/codec/fx_codec_gif.cpp", + "core/fxcodec/codec/fx_codec_png.cpp", + "core/fxcodec/codec/fx_codec_progress.cpp", + "core/fxcodec/codec/fx_codec_progress.h", + "core/fxcodec/codec/fx_codec_tiff.cpp", + "core/fxcodec/lbmp/fx_bmp.cpp", + "core/fxcodec/lbmp/fx_bmp.h", + "core/fxcodec/lgif/fx_gif.cpp", + "core/fxcodec/lgif/fx_gif.h", ] deps += [ "third_party:fx_lpng", @@ -479,7 +479,7 @@ static_library("fxcodec") { ] } if (is_posix) { - # core/src/fxcodec/fx_libopenjpeg/src/fx_mct.c does an pointer-to-int + # core/fxcodec/fx_libopenjpeg/src/fx_mct.c does an pointer-to-int # conversion to check that an address is 16-bit aligned (benign). cflags_c = [ "-Wno-pointer-to-int-cast" ] } @@ -497,6 +497,33 @@ config("fxge_warnings") { static_library("fxcrt") { sources = [ + "core/fxcrt/extension.h", + "core/fxcrt/fx_basic_array.cpp", + "core/fxcrt/fx_basic_bstring.cpp", + "core/fxcrt/fx_basic_buffer.cpp", + "core/fxcrt/fx_basic_coords.cpp", + "core/fxcrt/fx_basic_gcc.cpp", + "core/fxcrt/fx_basic_list.cpp", + "core/fxcrt/fx_basic_memmgr.cpp", + "core/fxcrt/fx_basic_plex.cpp", + "core/fxcrt/fx_basic_utf.cpp", + "core/fxcrt/fx_basic_util.cpp", + "core/fxcrt/fx_basic_wstring.cpp", + "core/fxcrt/fx_bidi.cpp", + "core/fxcrt/fx_extension.cpp", + "core/fxcrt/fx_ucddata.cpp", + "core/fxcrt/fx_unicode.cpp", + "core/fxcrt/fx_xml_composer.cpp", + "core/fxcrt/fx_xml_parser.cpp", + "core/fxcrt/fxcrt_platforms.cpp", + "core/fxcrt/fxcrt_platforms.h", + "core/fxcrt/fxcrt_posix.cpp", + "core/fxcrt/fxcrt_posix.h", + "core/fxcrt/fxcrt_stream.cpp", + "core/fxcrt/fxcrt_windows.cpp", + "core/fxcrt/fxcrt_windows.h", + "core/fxcrt/plex.h", + "core/fxcrt/xml_int.h", "core/include/fxcrt/fx_basic.h", "core/include/fxcrt/fx_bidi.h", "core/include/fxcrt/fx_coordinates.h", @@ -508,40 +535,13 @@ static_library("fxcrt") { "core/include/fxcrt/fx_system.h", "core/include/fxcrt/fx_ucd.h", "core/include/fxcrt/fx_xml.h", - "core/src/fxcrt/extension.h", - "core/src/fxcrt/fx_basic_array.cpp", - "core/src/fxcrt/fx_basic_bstring.cpp", - "core/src/fxcrt/fx_basic_buffer.cpp", - "core/src/fxcrt/fx_basic_coords.cpp", - "core/src/fxcrt/fx_basic_gcc.cpp", - "core/src/fxcrt/fx_basic_list.cpp", - "core/src/fxcrt/fx_basic_memmgr.cpp", - "core/src/fxcrt/fx_basic_plex.cpp", - "core/src/fxcrt/fx_basic_utf.cpp", - "core/src/fxcrt/fx_basic_util.cpp", - "core/src/fxcrt/fx_basic_wstring.cpp", - "core/src/fxcrt/fx_bidi.cpp", - "core/src/fxcrt/fx_extension.cpp", - "core/src/fxcrt/fx_ucddata.cpp", - "core/src/fxcrt/fx_unicode.cpp", - "core/src/fxcrt/fx_xml_composer.cpp", - "core/src/fxcrt/fx_xml_parser.cpp", - "core/src/fxcrt/fxcrt_platforms.cpp", - "core/src/fxcrt/fxcrt_platforms.h", - "core/src/fxcrt/fxcrt_posix.cpp", - "core/src/fxcrt/fxcrt_posix.h", - "core/src/fxcrt/fxcrt_stream.cpp", - "core/src/fxcrt/fxcrt_windows.cpp", - "core/src/fxcrt/fxcrt_windows.h", - "core/src/fxcrt/plex.h", - "core/src/fxcrt/xml_int.h", ] if (pdf_enable_xfa) { sources += [ + "core/fxcrt/fx_arabic.cpp", + "core/fxcrt/fx_arabic.h", + "core/fxcrt/fx_basic_maps.cpp", "core/include/fxcrt/fx_arb.h", - "core/src/fxcrt/fx_arabic.cpp", - "core/src/fxcrt/fx_arabic.h", - "core/src/fxcrt/fx_basic_maps.cpp", ] } configs += [ ":pdfium_config" ] @@ -552,6 +552,54 @@ static_library("fxge") { "third_party:fx_agg", ] sources = [ + "core/fxge/agg/fx_agg_driver.cpp", + "core/fxge/agg/fx_agg_driver.h", + "core/fxge/android/fpf_skiafont.cpp", + "core/fxge/android/fpf_skiafont.h", + "core/fxge/android/fpf_skiafontmgr.cpp", + "core/fxge/android/fpf_skiafontmgr.h", + "core/fxge/android/fpf_skiamodule.cpp", + "core/fxge/android/fpf_skiamodule.h", + "core/fxge/android/fx_android_font.cpp", + "core/fxge/android/fx_android_font.h", + "core/fxge/android/fx_android_imp.cpp", + "core/fxge/apple/apple_int.h", + "core/fxge/apple/fx_apple_platform.cpp", + "core/fxge/apple/fx_mac_imp.cpp", + "core/fxge/apple/fx_quartz_device.cpp", + "core/fxge/dib/dib_int.h", + "core/fxge/dib/fx_dib_composite.cpp", + "core/fxge/dib/fx_dib_convert.cpp", + "core/fxge/dib/fx_dib_engine.cpp", + "core/fxge/dib/fx_dib_main.cpp", + "core/fxge/dib/fx_dib_transform.cpp", + "core/fxge/fontdata/chromefontdata/FoxitDingbats.cpp", + "core/fxge/fontdata/chromefontdata/FoxitFixed.cpp", + "core/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp", + "core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp", + "core/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSans.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSansBold.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSerif.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp", + "core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp", + "core/fxge/fontdata/chromefontdata/chromefontdata.h", + "core/fxge/freetype/fx_freetype.cpp", + "core/fxge/ge/fx_ge.cpp", + "core/fxge/ge/fx_ge_device.cpp", + "core/fxge/ge/fx_ge_font.cpp", + "core/fxge/ge/fx_ge_fontmap.cpp", + "core/fxge/ge/fx_ge_linux.cpp", + "core/fxge/ge/fx_ge_path.cpp", + "core/fxge/ge/fx_ge_ps.cpp", + "core/fxge/ge/fx_ge_text.cpp", + "core/fxge/ge/fx_text_int.h", "core/include/fxge/fpf.h", "core/include/fxge/fx_dib.h", "core/include/fxge/fx_font.h", @@ -559,54 +607,6 @@ static_library("fxge") { "core/include/fxge/fx_ge.h", "core/include/fxge/fx_ge_apple.h", "core/include/fxge/fx_ge_win32.h", - "core/src/fxge/agg/fx_agg_driver.cpp", - "core/src/fxge/agg/fx_agg_driver.h", - "core/src/fxge/android/fpf_skiafont.cpp", - "core/src/fxge/android/fpf_skiafont.h", - "core/src/fxge/android/fpf_skiafontmgr.cpp", - "core/src/fxge/android/fpf_skiafontmgr.h", - "core/src/fxge/android/fpf_skiamodule.cpp", - "core/src/fxge/android/fpf_skiamodule.h", - "core/src/fxge/android/fx_android_font.cpp", - "core/src/fxge/android/fx_android_font.h", - "core/src/fxge/android/fx_android_imp.cpp", - "core/src/fxge/apple/apple_int.h", - "core/src/fxge/apple/fx_apple_platform.cpp", - "core/src/fxge/apple/fx_mac_imp.cpp", - "core/src/fxge/apple/fx_quartz_device.cpp", - "core/src/fxge/dib/dib_int.h", - "core/src/fxge/dib/fx_dib_composite.cpp", - "core/src/fxge/dib/fx_dib_convert.cpp", - "core/src/fxge/dib/fx_dib_engine.cpp", - "core/src/fxge/dib/fx_dib_main.cpp", - "core/src/fxge/dib/fx_dib_transform.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitDingbats.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitFixed.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSans.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSansBold.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSansMM.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSerif.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp", - "core/src/fxge/fontdata/chromefontdata/FoxitSymbol.cpp", - "core/src/fxge/fontdata/chromefontdata/chromefontdata.h", - "core/src/fxge/freetype/fx_freetype.cpp", - "core/src/fxge/ge/fx_ge.cpp", - "core/src/fxge/ge/fx_ge_device.cpp", - "core/src/fxge/ge/fx_ge_font.cpp", - "core/src/fxge/ge/fx_ge_fontmap.cpp", - "core/src/fxge/ge/fx_ge_linux.cpp", - "core/src/fxge/ge/fx_ge_path.cpp", - "core/src/fxge/ge/fx_ge_ps.cpp", - "core/src/fxge/ge/fx_ge_text.cpp", - "core/src/fxge/ge/fx_text_int.h", ] configs += [ @@ -616,7 +616,7 @@ static_library("fxge") { if (pdf_use_skia) { sources = [ - "core/src/fxge/skia/fx_skia_device.cpp", + "core/fxge/skia/fx_skia_device.cpp", ] deps = [ "//skia", @@ -625,13 +625,13 @@ static_library("fxge") { if (is_win) { sources += [ - "core/src/fxge/win32/dwrite_int.h", - "core/src/fxge/win32/fx_win32_device.cpp", - "core/src/fxge/win32/fx_win32_dib.cpp", - "core/src/fxge/win32/fx_win32_dwrite.cpp", - "core/src/fxge/win32/fx_win32_gdipext.cpp", - "core/src/fxge/win32/fx_win32_print.cpp", - "core/src/fxge/win32/win32_int.h", + "core/fxge/win32/dwrite_int.h", + "core/fxge/win32/fx_win32_device.cpp", + "core/fxge/win32/fx_win32_dib.cpp", + "core/fxge/win32/fx_win32_dwrite.cpp", + "core/fxge/win32/fx_win32_gdipext.cpp", + "core/fxge/win32/fx_win32_print.cpp", + "core/fxge/win32/win32_int.h", ] configs -= [ "//build/config/win:lean_and_mean" ] } @@ -1445,24 +1445,24 @@ if (pdf_enable_xfa) { test("pdfium_unittests") { sources = [ - "core/src/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp", - "core/src/fpdfapi/fpdf_font/fpdf_font_unittest.cpp", - "core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp", - "core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp", - "core/src/fpdfdoc/doc_basic_unittest.cpp", - "core/src/fpdftext/fpdf_text_int_unittest.cpp", - "core/src/fxcodec/codec/fx_codec_jpx_unittest.cpp", - "core/src/fxcrt/fx_basic_bstring_unittest.cpp", - "core/src/fxcrt/fx_basic_gcc_unittest.cpp", - "core/src/fxcrt/fx_basic_memmgr_unittest.cpp", - "core/src/fxcrt/fx_basic_wstring_unittest.cpp", - "core/src/fxcrt/fx_bidi_unittest.cpp", - "core/src/fxcrt/fx_extension_unittest.cpp", - "core/src/fxcrt/fx_system_unittest.cpp", + "core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp", + "core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp", + "core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp", + "core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp", + "core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp", + "core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp", + "core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp", + "core/fpdfdoc/doc_basic_unittest.cpp", + "core/fpdftext/fpdf_text_int_unittest.cpp", + "core/fxcodec/codec/fx_codec_jpx_unittest.cpp", + "core/fxcrt/fx_basic_bstring_unittest.cpp", + "core/fxcrt/fx_basic_gcc_unittest.cpp", + "core/fxcrt/fx_basic_memmgr_unittest.cpp", + "core/fxcrt/fx_basic_wstring_unittest.cpp", + "core/fxcrt/fx_bidi_unittest.cpp", + "core/fxcrt/fx_extension_unittest.cpp", + "core/fxcrt/fx_system_unittest.cpp", "fpdfsdk/src/fpdfdoc_unittest.cpp", ] deps = [ @@ -1482,11 +1482,11 @@ test("pdfium_unittests") { test("pdfium_embeddertests") { sources = [ - "core/src/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp", - "core/src/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp", - "core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp", - "core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp", - "core/src/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp", + "core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp", + "core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp", + "core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp", + "core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp", + "core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp", "fpdfsdk/src/fpdf_dataavail_embeddertest.cpp", "fpdfsdk/src/fpdfdoc_embeddertest.cpp", "fpdfsdk/src/fpdfedit_embeddertest.cpp", diff --git a/core/fdrm/crypto/fx_crypt.cpp b/core/fdrm/crypto/fx_crypt.cpp new file mode 100644 index 0000000000..c1016cdcd9 --- /dev/null +++ b/core/fdrm/crypto/fx_crypt.cpp @@ -0,0 +1,260 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fdrm/fx_crypt.h" + +#ifdef __cplusplus +extern "C" { +#endif +struct rc4_state { + int x, y, m[256]; +}; +void CRYPT_ArcFourSetup(void* context, const uint8_t* key, FX_DWORD length) { + rc4_state* s = (rc4_state*)context; + int i, j, k, *m, a; + s->x = 0; + s->y = 0; + m = s->m; + for (i = 0; i < 256; i++) { + m[i] = i; + } + j = k = 0; + for (i = 0; i < 256; i++) { + a = m[i]; + j = (j + a + key[k]) & 0xFF; + m[i] = m[j]; + m[j] = a; + if (++k >= (int)length) { + k = 0; + } + } +} +void CRYPT_ArcFourCrypt(void* context, unsigned char* data, FX_DWORD length) { + struct rc4_state* s = (struct rc4_state*)context; + int i, x, y, *m, a, b; + x = s->x; + y = s->y; + m = s->m; + for (i = 0; i < (int)length; i++) { + x = (x + 1) & 0xFF; + a = m[x]; + y = (y + a) & 0xFF; + m[x] = b = m[y]; + m[y] = a; + data[i] ^= m[(a + b) & 0xFF]; + } + s->x = x; + s->y = y; +} +void CRYPT_ArcFourCryptBlock(uint8_t* pData, + FX_DWORD size, + const uint8_t* key, + FX_DWORD keylen) { + rc4_state s; + CRYPT_ArcFourSetup(&s, key, keylen); + CRYPT_ArcFourCrypt(&s, pData, size); +} +struct md5_context { + FX_DWORD total[2]; + FX_DWORD state[4]; + uint8_t buffer[64]; +}; +#define GET_FX_DWORD(n, b, i) \ + { \ + (n) = (FX_DWORD)((uint8_t*)b)[(i)] | \ + (((FX_DWORD)((uint8_t*)b)[(i) + 1]) << 8) | \ + (((FX_DWORD)((uint8_t*)b)[(i) + 2]) << 16) | \ + (((FX_DWORD)((uint8_t*)b)[(i) + 3]) << 24); \ + } +#define PUT_FX_DWORD(n, b, i) \ + { \ + (((uint8_t*)b)[(i)]) = (uint8_t)(((n)) & 0xFF); \ + (((uint8_t*)b)[(i) + 1]) = (uint8_t)(((n) >> 8) & 0xFF); \ + (((uint8_t*)b)[(i) + 2]) = (uint8_t)(((n) >> 16) & 0xFF); \ + (((uint8_t*)b)[(i) + 3]) = (uint8_t)(((n) >> 24) & 0xFF); \ + } +void md5_process(struct md5_context* ctx, const uint8_t data[64]) { + FX_DWORD A, B, C, D, X[16]; + GET_FX_DWORD(X[0], data, 0); + GET_FX_DWORD(X[1], data, 4); + GET_FX_DWORD(X[2], data, 8); + GET_FX_DWORD(X[3], data, 12); + GET_FX_DWORD(X[4], data, 16); + GET_FX_DWORD(X[5], data, 20); + GET_FX_DWORD(X[6], data, 24); + GET_FX_DWORD(X[7], data, 28); + GET_FX_DWORD(X[8], data, 32); + GET_FX_DWORD(X[9], data, 36); + GET_FX_DWORD(X[10], data, 40); + GET_FX_DWORD(X[11], data, 44); + GET_FX_DWORD(X[12], data, 48); + GET_FX_DWORD(X[13], data, 52); + GET_FX_DWORD(X[14], data, 56); + GET_FX_DWORD(X[15], data, 60); +#define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) +#define P(a, b, c, d, k, s, t) \ + { \ + a += F(b, c, d) + X[k] + t; \ + a = S(a, s) + b; \ + } + A = ctx->state[0]; + B = ctx->state[1]; + C = ctx->state[2]; + D = ctx->state[3]; +#define F(x, y, z) (z ^ (x & (y ^ z))) + P(A, B, C, D, 0, 7, 0xD76AA478); + P(D, A, B, C, 1, 12, 0xE8C7B756); + P(C, D, A, B, 2, 17, 0x242070DB); + P(B, C, D, A, 3, 22, 0xC1BDCEEE); + P(A, B, C, D, 4, 7, 0xF57C0FAF); + P(D, A, B, C, 5, 12, 0x4787C62A); + P(C, D, A, B, 6, 17, 0xA8304613); + P(B, C, D, A, 7, 22, 0xFD469501); + P(A, B, C, D, 8, 7, 0x698098D8); + P(D, A, B, C, 9, 12, 0x8B44F7AF); + P(C, D, A, B, 10, 17, 0xFFFF5BB1); + P(B, C, D, A, 11, 22, 0x895CD7BE); + P(A, B, C, D, 12, 7, 0x6B901122); + P(D, A, B, C, 13, 12, 0xFD987193); + P(C, D, A, B, 14, 17, 0xA679438E); + P(B, C, D, A, 15, 22, 0x49B40821); +#undef F +#define F(x, y, z) (y ^ (z & (x ^ y))) + P(A, B, C, D, 1, 5, 0xF61E2562); + P(D, A, B, C, 6, 9, 0xC040B340); + P(C, D, A, B, 11, 14, 0x265E5A51); + P(B, C, D, A, 0, 20, 0xE9B6C7AA); + P(A, B, C, D, 5, 5, 0xD62F105D); + P(D, A, B, C, 10, 9, 0x02441453); + P(C, D, A, B, 15, 14, 0xD8A1E681); + P(B, C, D, A, 4, 20, 0xE7D3FBC8); + P(A, B, C, D, 9, 5, 0x21E1CDE6); + P(D, A, B, C, 14, 9, 0xC33707D6); + P(C, D, A, B, 3, 14, 0xF4D50D87); + P(B, C, D, A, 8, 20, 0x455A14ED); + P(A, B, C, D, 13, 5, 0xA9E3E905); + P(D, A, B, C, 2, 9, 0xFCEFA3F8); + P(C, D, A, B, 7, 14, 0x676F02D9); + P(B, C, D, A, 12, 20, 0x8D2A4C8A); +#undef F +#define F(x, y, z) (x ^ y ^ z) + P(A, B, C, D, 5, 4, 0xFFFA3942); + P(D, A, B, C, 8, 11, 0x8771F681); + P(C, D, A, B, 11, 16, 0x6D9D6122); + P(B, C, D, A, 14, 23, 0xFDE5380C); + P(A, B, C, D, 1, 4, 0xA4BEEA44); + P(D, A, B, C, 4, 11, 0x4BDECFA9); + P(C, D, A, B, 7, 16, 0xF6BB4B60); + P(B, C, D, A, 10, 23, 0xBEBFBC70); + P(A, B, C, D, 13, 4, 0x289B7EC6); + P(D, A, B, C, 0, 11, 0xEAA127FA); + P(C, D, A, B, 3, 16, 0xD4EF3085); + P(B, C, D, A, 6, 23, 0x04881D05); + P(A, B, C, D, 9, 4, 0xD9D4D039); + P(D, A, B, C, 12, 11, 0xE6DB99E5); + P(C, D, A, B, 15, 16, 0x1FA27CF8); + P(B, C, D, A, 2, 23, 0xC4AC5665); +#undef F +#define F(x, y, z) (y ^ (x | ~z)) + P(A, B, C, D, 0, 6, 0xF4292244); + P(D, A, B, C, 7, 10, 0x432AFF97); + P(C, D, A, B, 14, 15, 0xAB9423A7); + P(B, C, D, A, 5, 21, 0xFC93A039); + P(A, B, C, D, 12, 6, 0x655B59C3); + P(D, A, B, C, 3, 10, 0x8F0CCC92); + P(C, D, A, B, 10, 15, 0xFFEFF47D); + P(B, C, D, A, 1, 21, 0x85845DD1); + P(A, B, C, D, 8, 6, 0x6FA87E4F); + P(D, A, B, C, 15, 10, 0xFE2CE6E0); + P(C, D, A, B, 6, 15, 0xA3014314); + P(B, C, D, A, 13, 21, 0x4E0811A1); + P(A, B, C, D, 4, 6, 0xF7537E82); + P(D, A, B, C, 11, 10, 0xBD3AF235); + P(C, D, A, B, 2, 15, 0x2AD7D2BB); + P(B, C, D, A, 9, 21, 0xEB86D391); +#undef F + ctx->state[0] += A; + ctx->state[1] += B; + ctx->state[2] += C; + ctx->state[3] += D; +} +void CRYPT_MD5Start(void* context) { + struct md5_context* ctx = (struct md5_context*)context; + ctx->total[0] = 0; + ctx->total[1] = 0; + ctx->state[0] = 0x67452301; + ctx->state[1] = 0xEFCDAB89; + ctx->state[2] = 0x98BADCFE; + ctx->state[3] = 0x10325476; +} +void CRYPT_MD5Update(void* pctx, const uint8_t* input, FX_DWORD length) { + struct md5_context* ctx = (struct md5_context*)pctx; + FX_DWORD left, fill; + if (!length) { + return; + } + left = (ctx->total[0] >> 3) & 0x3F; + fill = 64 - left; + ctx->total[0] += length << 3; + ctx->total[1] += length >> 29; + ctx->total[0] &= 0xFFFFFFFF; + ctx->total[1] += ctx->total[0] < length << 3; + if (left && length >= fill) { + FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill); + md5_process(ctx, ctx->buffer); + length -= fill; + input += fill; + left = 0; + } + while (length >= 64) { + md5_process(ctx, input); + length -= 64; + input += 64; + } + if (length) { + FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); + } +} +const uint8_t md5_padding[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +void CRYPT_MD5Finish(void* pctx, uint8_t digest[16]) { + struct md5_context* ctx = (struct md5_context*)pctx; + FX_DWORD last, padn; + uint8_t msglen[8]; + PUT_FX_DWORD(ctx->total[0], msglen, 0); + PUT_FX_DWORD(ctx->total[1], msglen, 4); + last = (ctx->total[0] >> 3) & 0x3F; + padn = (last < 56) ? (56 - last) : (120 - last); + CRYPT_MD5Update(ctx, md5_padding, padn); + CRYPT_MD5Update(ctx, msglen, 8); + PUT_FX_DWORD(ctx->state[0], digest, 0); + PUT_FX_DWORD(ctx->state[1], digest, 4); + PUT_FX_DWORD(ctx->state[2], digest, 8); + PUT_FX_DWORD(ctx->state[3], digest, 12); +} +void CRYPT_MD5Generate(const uint8_t* input, + FX_DWORD length, + uint8_t digest[16]) { + md5_context ctx; + CRYPT_MD5Start(&ctx); + CRYPT_MD5Update(&ctx, input, length); + CRYPT_MD5Finish(&ctx, digest); +} +static FX_BOOL (*g_PubKeyDecryptor)(const uint8_t* pData, + FX_DWORD size, + uint8_t* data_buf, + FX_DWORD& data_len) = NULL; +void CRYPT_SetPubKeyDecryptor(FX_BOOL (*func)(const uint8_t* pData, + FX_DWORD size, + uint8_t* data_buf, + FX_DWORD& data_len)) { + g_PubKeyDecryptor = func; +} +#ifdef __cplusplus +}; +#endif diff --git a/core/fdrm/crypto/fx_crypt_aes.cpp b/core/fdrm/crypto/fx_crypt_aes.cpp new file mode 100644 index 0000000000..d27783f820 --- /dev/null +++ b/core/fdrm/crypto/fx_crypt_aes.cpp @@ -0,0 +1,833 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fdrm/fx_crypt.h" + +#ifdef __cplusplus +extern "C" { +#endif +#define MAX_NR 14 +#define MAX_NK 8 +#define MAX_NB 8 +#define mulby2(x) (((x & 0x7F) << 1) ^ (x & 0x80 ? 0x1B : 0)) +#define GET_32BIT_MSB_FIRST(cp) \ + (((unsigned long)(unsigned char)(cp)[3]) | \ + ((unsigned long)(unsigned char)(cp)[2] << 8) | \ + ((unsigned long)(unsigned char)(cp)[1] << 16) | \ + ((unsigned long)(unsigned char)(cp)[0] << 24)) +#define PUT_32BIT_MSB_FIRST(cp, value) \ + do { \ + (cp)[3] = (value); \ + (cp)[2] = (value) >> 8; \ + (cp)[1] = (value) >> 16; \ + (cp)[0] = (value) >> 24; \ + } while (0) +struct AESContext { + unsigned int keysched[(MAX_NR + 1) * MAX_NB]; + unsigned int invkeysched[(MAX_NR + 1) * MAX_NB]; + void (*encrypt)(AESContext* ctx, unsigned int* block); + void (*decrypt)(AESContext* ctx, unsigned int* block); + unsigned int iv[MAX_NB]; + int Nb, Nr; +}; +static const unsigned char Sbox[256] = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, + 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, + 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, + 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, + 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, + 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, + 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, + 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, + 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, + 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, + 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, + 0xb0, 0x54, 0xbb, 0x16}; +static const unsigned char Sboxinv[256] = { + 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, + 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, + 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, + 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, + 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, + 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, + 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, + 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, + 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, + 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, + 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, + 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, + 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, + 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, + 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, + 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, + 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, + 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0c, 0x7d}; +static const unsigned int E0[256] = { + 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, + 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, + 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, + 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, + 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, + 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, + 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, + 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, + 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, + 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, + 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, + 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, + 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, + 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, + 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, + 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, + 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, + 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, + 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, + 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, + 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, + 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, + 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, + 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, + 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, + 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, + 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, + 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, + 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, + 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, + 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, + 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, + 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, + 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, + 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, + 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, + 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, + 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, + 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, + 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, + 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, + 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, + 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a, +}; +static const unsigned int E1[256] = { + 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, + 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, + 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, + 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, + 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, + 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, + 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, + 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, + 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, + 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, + 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, + 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, + 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, + 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, + 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, + 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, + 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, + 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, + 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, + 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, + 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, + 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, + 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, + 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, + 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, + 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, + 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, + 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, + 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, + 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, + 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, + 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, + 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, + 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, + 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, + 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, + 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, + 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, + 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, + 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, + 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, + 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, + 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616, +}; +static const unsigned int E2[256] = { + 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, + 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, + 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, + 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, + 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, + 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, + 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, + 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, + 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, + 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, + 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, + 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, + 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, + 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, + 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, + 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, + 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, + 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, + 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, + 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, + 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, + 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, + 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, + 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, + 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, + 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, + 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, + 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, + 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, + 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, + 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, + 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, + 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, + 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, + 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, + 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, + 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, + 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, + 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, + 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, + 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, + 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, + 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16, +}; +static const unsigned int E3[256] = { + 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, + 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, + 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, + 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, + 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, + 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, + 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, + 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, + 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, + 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, + 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, + 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, + 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, + 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, + 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, + 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, + 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, + 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, + 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, + 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, + 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, + 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, + 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, + 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, + 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, + 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, + 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, + 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, + 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, + 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, + 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, + 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, + 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, + 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, + 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, + 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, + 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, + 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, + 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, + 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, + 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, + 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, + 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c, +}; +static const unsigned int D0[256] = { + 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, + 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, + 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, + 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, + 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, + 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, + 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, + 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, + 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, + 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, + 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, + 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, + 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, + 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, + 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, + 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, + 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, + 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, + 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, + 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, + 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, + 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, + 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, + 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, + 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, + 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, + 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, + 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, + 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, + 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, + 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, + 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, + 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, + 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, + 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, + 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, + 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, + 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, + 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, + 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, + 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, + 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, + 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742, +}; +static const unsigned int D1[256] = { + 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, + 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, + 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, + 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, + 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, + 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, + 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, + 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, + 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, + 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, + 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, + 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, + 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, + 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, + 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, + 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, + 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, + 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, + 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, + 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, + 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, + 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, + 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, + 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, + 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, + 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, + 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, + 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, + 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, + 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, + 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, + 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, + 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, + 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, + 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, + 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, + 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, + 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, + 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, + 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, + 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, + 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, + 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857, +}; +static const unsigned int D2[256] = { + 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, + 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, + 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, + 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, + 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, + 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, + 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, + 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, + 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, + 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, + 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, + 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, + 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, + 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, + 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, + 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, + 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, + 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, + 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, + 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, + 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, + 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, + 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, + 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, + 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, + 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, + 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, + 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, + 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, + 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, + 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, + 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, + 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, + 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, + 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, + 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, + 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, + 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, + 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, + 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, + 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, + 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, + 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8, +}; +static const unsigned int D3[256] = { + 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, + 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, + 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, + 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, + 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, + 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, + 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, + 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, + 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, + 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, + 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, + 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, + 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, + 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, + 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, + 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, + 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, + 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, + 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, + 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, + 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, + 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, + 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, + 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, + 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, + 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, + 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, + 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, + 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, + 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, + 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, + 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, + 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, + 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, + 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, + 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, + 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, + 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, + 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, + 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, + 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, + 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, + 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0, +}; +#define ADD_ROUND_KEY_4 \ + (block[0] ^= *keysched++, block[1] ^= *keysched++, block[2] ^= *keysched++, \ + block[3] ^= *keysched++) +#define ADD_ROUND_KEY_6 \ + (block[0] ^= *keysched++, block[1] ^= *keysched++, block[2] ^= *keysched++, \ + block[3] ^= *keysched++, block[4] ^= *keysched++, block[5] ^= *keysched++) +#define ADD_ROUND_KEY_8 \ + (block[0] ^= *keysched++, block[1] ^= *keysched++, block[2] ^= *keysched++, \ + block[3] ^= *keysched++, block[4] ^= *keysched++, block[5] ^= *keysched++, \ + block[6] ^= *keysched++, block[7] ^= *keysched++) +#define MOVEWORD(i) (block[i] = newstate[i]) +#undef MAKEWORD +#define MAKEWORD(i) \ + (newstate[i] = (E0[(block[i] >> 24) & 0xFF] ^ \ + E1[(block[(i + C1) % Nb] >> 16) & 0xFF] ^ \ + E2[(block[(i + C2) % Nb] >> 8) & 0xFF] ^ \ + E3[block[(i + C3) % Nb] & 0xFF])) +#define LASTWORD(i) \ + (newstate[i] = (Sbox[(block[i] >> 24) & 0xFF] << 24) | \ + (Sbox[(block[(i + C1) % Nb] >> 16) & 0xFF] << 16) | \ + (Sbox[(block[(i + C2) % Nb] >> 8) & 0xFF] << 8) | \ + (Sbox[(block[(i + C3) % Nb]) & 0xFF])) +static void aes_encrypt_nb_4(AESContext* ctx, unsigned int* block) { + int i; + static const int C1 = 1, C2 = 2, C3 = 3, Nb = 4; + unsigned int* keysched = ctx->keysched; + unsigned int newstate[4]; + for (i = 0; i < ctx->Nr - 1; i++) { + ADD_ROUND_KEY_4; + MAKEWORD(0); + MAKEWORD(1); + MAKEWORD(2); + MAKEWORD(3); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + } + ADD_ROUND_KEY_4; + LASTWORD(0); + LASTWORD(1); + LASTWORD(2); + LASTWORD(3); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + ADD_ROUND_KEY_4; +} +static void aes_encrypt_nb_6(AESContext* ctx, unsigned int* block) { + int i; + static const int C1 = 1, C2 = 2, C3 = 3, Nb = 6; + unsigned int* keysched = ctx->keysched; + unsigned int newstate[6]; + for (i = 0; i < ctx->Nr - 1; i++) { + ADD_ROUND_KEY_6; + MAKEWORD(0); + MAKEWORD(1); + MAKEWORD(2); + MAKEWORD(3); + MAKEWORD(4); + MAKEWORD(5); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + } + ADD_ROUND_KEY_6; + LASTWORD(0); + LASTWORD(1); + LASTWORD(2); + LASTWORD(3); + LASTWORD(4); + LASTWORD(5); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + ADD_ROUND_KEY_6; +} +static void aes_encrypt_nb_8(AESContext* ctx, unsigned int* block) { + int i; + static const int C1 = 1, C2 = 3, C3 = 4, Nb = 8; + unsigned int* keysched = ctx->keysched; + unsigned int newstate[8]; + for (i = 0; i < ctx->Nr - 1; i++) { + ADD_ROUND_KEY_8; + MAKEWORD(0); + MAKEWORD(1); + MAKEWORD(2); + MAKEWORD(3); + MAKEWORD(4); + MAKEWORD(5); + MAKEWORD(6); + MAKEWORD(7); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + MOVEWORD(6); + MOVEWORD(7); + } + ADD_ROUND_KEY_8; + LASTWORD(0); + LASTWORD(1); + LASTWORD(2); + LASTWORD(3); + LASTWORD(4); + LASTWORD(5); + LASTWORD(6); + LASTWORD(7); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + MOVEWORD(6); + MOVEWORD(7); + ADD_ROUND_KEY_8; +} +#undef MAKEWORD +#undef LASTWORD +#define MAKEWORD(i) \ + (newstate[i] = (D0[(block[i] >> 24) & 0xFF] ^ \ + D1[(block[(i + C1) % Nb] >> 16) & 0xFF] ^ \ + D2[(block[(i + C2) % Nb] >> 8) & 0xFF] ^ \ + D3[block[(i + C3) % Nb] & 0xFF])) +#define LASTWORD(i) \ + (newstate[i] = (Sboxinv[(block[i] >> 24) & 0xFF] << 24) | \ + (Sboxinv[(block[(i + C1) % Nb] >> 16) & 0xFF] << 16) | \ + (Sboxinv[(block[(i + C2) % Nb] >> 8) & 0xFF] << 8) | \ + (Sboxinv[(block[(i + C3) % Nb]) & 0xFF])) +static void aes_decrypt_nb_4(AESContext* ctx, unsigned int* block) { + int i; + static const int C1 = 4 - 1, C2 = 4 - 2, C3 = 4 - 3, Nb = 4; + unsigned int* keysched = ctx->invkeysched; + unsigned int newstate[4]; + for (i = 0; i < ctx->Nr - 1; i++) { + ADD_ROUND_KEY_4; + MAKEWORD(0); + MAKEWORD(1); + MAKEWORD(2); + MAKEWORD(3); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + } + ADD_ROUND_KEY_4; + LASTWORD(0); + LASTWORD(1); + LASTWORD(2); + LASTWORD(3); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + ADD_ROUND_KEY_4; +} +static void aes_decrypt_nb_6(AESContext* ctx, unsigned int* block) { + int i; + static const int C1 = 6 - 1, C2 = 6 - 2, C3 = 6 - 3, Nb = 6; + unsigned int* keysched = ctx->invkeysched; + unsigned int newstate[6]; + for (i = 0; i < ctx->Nr - 1; i++) { + ADD_ROUND_KEY_6; + MAKEWORD(0); + MAKEWORD(1); + MAKEWORD(2); + MAKEWORD(3); + MAKEWORD(4); + MAKEWORD(5); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + } + ADD_ROUND_KEY_6; + LASTWORD(0); + LASTWORD(1); + LASTWORD(2); + LASTWORD(3); + LASTWORD(4); + LASTWORD(5); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + ADD_ROUND_KEY_6; +} +static void aes_decrypt_nb_8(AESContext* ctx, unsigned int* block) { + int i; + static const int C1 = 8 - 1, C2 = 8 - 3, C3 = 8 - 4, Nb = 8; + unsigned int* keysched = ctx->invkeysched; + unsigned int newstate[8]; + for (i = 0; i < ctx->Nr - 1; i++) { + ADD_ROUND_KEY_8; + MAKEWORD(0); + MAKEWORD(1); + MAKEWORD(2); + MAKEWORD(3); + MAKEWORD(4); + MAKEWORD(5); + MAKEWORD(6); + MAKEWORD(7); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + MOVEWORD(6); + MOVEWORD(7); + } + ADD_ROUND_KEY_8; + LASTWORD(0); + LASTWORD(1); + LASTWORD(2); + LASTWORD(3); + LASTWORD(4); + LASTWORD(5); + LASTWORD(6); + LASTWORD(7); + MOVEWORD(0); + MOVEWORD(1); + MOVEWORD(2); + MOVEWORD(3); + MOVEWORD(4); + MOVEWORD(5); + MOVEWORD(6); + MOVEWORD(7); + ADD_ROUND_KEY_8; +} +#undef MAKEWORD +#undef LASTWORD +static void aes_setup(AESContext* ctx, + int blocklen, + const unsigned char* key, + int keylen) { + int i, j, Nk, rconst; + ASSERT(blocklen == 16 || blocklen == 24 || blocklen == 32); + ASSERT(keylen == 16 || keylen == 24 || keylen == 32); + Nk = keylen / 4; + ctx->Nb = blocklen / 4; + ctx->Nr = 6 + (ctx->Nb > Nk ? ctx->Nb : Nk); + if (ctx->Nb == 8) { + ctx->encrypt = aes_encrypt_nb_8, ctx->decrypt = aes_decrypt_nb_8; + } else if (ctx->Nb == 6) { + ctx->encrypt = aes_encrypt_nb_6, ctx->decrypt = aes_decrypt_nb_6; + } else if (ctx->Nb == 4) { + ctx->encrypt = aes_encrypt_nb_4, ctx->decrypt = aes_decrypt_nb_4; + } + rconst = 1; + for (i = 0; i < (ctx->Nr + 1) * ctx->Nb; i++) { + if (i < Nk) { + ctx->keysched[i] = GET_32BIT_MSB_FIRST(key + 4 * i); + } else { + unsigned int temp = ctx->keysched[i - 1]; + if (i % Nk == 0) { + int a, b, c, d; + a = (temp >> 16) & 0xFF; + b = (temp >> 8) & 0xFF; + c = (temp >> 0) & 0xFF; + d = (temp >> 24) & 0xFF; + temp = Sbox[a] ^ rconst; + temp = (temp << 8) | Sbox[b]; + temp = (temp << 8) | Sbox[c]; + temp = (temp << 8) | Sbox[d]; + rconst = mulby2(rconst); + } else if (i % Nk == 4 && Nk > 6) { + int a, b, c, d; + a = (temp >> 24) & 0xFF; + b = (temp >> 16) & 0xFF; + c = (temp >> 8) & 0xFF; + d = (temp >> 0) & 0xFF; + temp = Sbox[a]; + temp = (temp << 8) | Sbox[b]; + temp = (temp << 8) | Sbox[c]; + temp = (temp << 8) | Sbox[d]; + } + ctx->keysched[i] = ctx->keysched[i - Nk] ^ temp; + } + } + for (i = 0; i <= ctx->Nr; i++) { + for (j = 0; j < ctx->Nb; j++) { + unsigned int temp; + temp = ctx->keysched[(ctx->Nr - i) * ctx->Nb + j]; + if (i != 0 && i != ctx->Nr) { + int a, b, c, d; + a = (temp >> 24) & 0xFF; + b = (temp >> 16) & 0xFF; + c = (temp >> 8) & 0xFF; + d = (temp >> 0) & 0xFF; + temp = D0[Sbox[a]]; + temp ^= D1[Sbox[b]]; + temp ^= D2[Sbox[c]]; + temp ^= D3[Sbox[d]]; + } + ctx->invkeysched[i * ctx->Nb + j] = temp; + } + } +} +static void aes_decrypt(AESContext* ctx, unsigned int* block) { + ctx->decrypt(ctx, block); +} +static void aes_decrypt_cbc(unsigned char* dest, + const unsigned char* src, + int len, + AESContext* ctx) { + unsigned int iv[4], x[4], ct[4]; + int i; + ASSERT((len & 15) == 0); + FXSYS_memcpy(iv, ctx->iv, sizeof(iv)); + while (len > 0) { + for (i = 0; i < 4; i++) { + x[i] = ct[i] = GET_32BIT_MSB_FIRST(src + 4 * i); + } + aes_decrypt(ctx, x); + for (i = 0; i < 4; i++) { + PUT_32BIT_MSB_FIRST(dest + 4 * i, iv[i] ^ x[i]); + iv[i] = ct[i]; + } + dest += 16; + src += 16; + len -= 16; + } + FXSYS_memcpy(ctx->iv, iv, sizeof(iv)); +} +static void aes_encrypt(AESContext* ctx, unsigned int* block) { + ctx->encrypt(ctx, block); +} +static void aes_encrypt_cbc(unsigned char* dest, + const unsigned char* src, + int len, + AESContext* ctx) { + unsigned int iv[4]; + int i; + ASSERT((len & 15) == 0); + FXSYS_memcpy(iv, ctx->iv, sizeof(iv)); + while (len > 0) { + for (i = 0; i < 4; i++) { + iv[i] ^= GET_32BIT_MSB_FIRST(src + 4 * i); + } + aes_encrypt(ctx, iv); + for (i = 0; i < 4; i++) { + PUT_32BIT_MSB_FIRST(dest + 4 * i, iv[i]); + } + dest += 16; + src += 16; + len -= 16; + } + FXSYS_memcpy(ctx->iv, iv, sizeof(iv)); +} +void CRYPT_AESSetKey(void* context, + FX_DWORD blocklen, + const uint8_t* key, + FX_DWORD keylen, + FX_BOOL bEncrypt) { + aes_setup((AESContext*)context, blocklen, key, keylen); +} +void CRYPT_AESSetIV(void* context, const uint8_t* iv) { + int i; + for (i = 0; i < ((AESContext*)context)->Nb; i++) { + ((AESContext*)context)->iv[i] = GET_32BIT_MSB_FIRST(iv + 4 * i); + } +} +void CRYPT_AESDecrypt(void* context, + uint8_t* dest, + const uint8_t* src, + FX_DWORD len) { + aes_decrypt_cbc(dest, src, len, (AESContext*)context); +} +void CRYPT_AESEncrypt(void* context, + uint8_t* dest, + const uint8_t* src, + FX_DWORD len) { + aes_encrypt_cbc(dest, src, len, (AESContext*)context); +} +#ifdef __cplusplus +}; +#endif diff --git a/core/fdrm/crypto/fx_crypt_sha.cpp b/core/fdrm/crypto/fx_crypt_sha.cpp new file mode 100644 index 0000000000..c7d171098b --- /dev/null +++ b/core/fdrm/crypto/fx_crypt_sha.cpp @@ -0,0 +1,657 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fdrm/fx_crypt.h" + +#ifdef __cplusplus +extern "C" { +#endif +typedef struct { + unsigned int h[5]; + unsigned char block[64]; + int blkused; + unsigned int lenhi, lenlo; +} SHA_State; +#define rol(x, y) (((x) << (y)) | (((unsigned int)x) >> (32 - y))) +static void SHA_Core_Init(unsigned int h[5]) { + h[0] = 0x67452301; + h[1] = 0xefcdab89; + h[2] = 0x98badcfe; + h[3] = 0x10325476; + h[4] = 0xc3d2e1f0; +} +static void SHATransform(unsigned int* digest, unsigned int* block) { + unsigned int w[80]; + unsigned int a, b, c, d, e; + int t; + for (t = 0; t < 16; t++) { + w[t] = block[t]; + } + for (t = 16; t < 80; t++) { + unsigned int tmp = w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]; + w[t] = rol(tmp, 1); + } + a = digest[0]; + b = digest[1]; + c = digest[2]; + d = digest[3]; + e = digest[4]; + for (t = 0; t < 20; t++) { + unsigned int tmp = rol(a, 5) + ((b & c) | (d & ~b)) + e + w[t] + 0x5a827999; + e = d; + d = c; + c = rol(b, 30); + b = a; + a = tmp; + } + for (t = 20; t < 40; t++) { + unsigned int tmp = rol(a, 5) + (b ^ c ^ d) + e + w[t] + 0x6ed9eba1; + e = d; + d = c; + c = rol(b, 30); + b = a; + a = tmp; + } + for (t = 40; t < 60; t++) { + unsigned int tmp = + rol(a, 5) + ((b & c) | (b & d) | (c & d)) + e + w[t] + 0x8f1bbcdc; + e = d; + d = c; + c = rol(b, 30); + b = a; + a = tmp; + } + for (t = 60; t < 80; t++) { + unsigned int tmp = rol(a, 5) + (b ^ c ^ d) + e + w[t] + 0xca62c1d6; + e = d; + d = c; + c = rol(b, 30); + b = a; + a = tmp; + } + digest[0] += a; + digest[1] += b; + digest[2] += c; + digest[3] += d; + digest[4] += e; +} +void CRYPT_SHA1Start(void* context) { + SHA_State* s = (SHA_State*)context; + SHA_Core_Init(s->h); + s->blkused = 0; + s->lenhi = s->lenlo = 0; +} +void CRYPT_SHA1Update(void* context, const uint8_t* data, FX_DWORD size) { + SHA_State* s = (SHA_State*)context; + unsigned char* q = (unsigned char*)data; + unsigned int wordblock[16]; + int len = size; + unsigned int lenw = len; + int i; + s->lenlo += lenw; + s->lenhi += (s->lenlo < lenw); + if (s->blkused && s->blkused + len < 64) { + FXSYS_memcpy(s->block + s->blkused, q, len); + s->blkused += len; + } else { + while (s->blkused + len >= 64) { + FXSYS_memcpy(s->block + s->blkused, q, 64 - s->blkused); + q += 64 - s->blkused; + len -= 64 - s->blkused; + for (i = 0; i < 16; i++) { + wordblock[i] = (((unsigned int)s->block[i * 4 + 0]) << 24) | + (((unsigned int)s->block[i * 4 + 1]) << 16) | + (((unsigned int)s->block[i * 4 + 2]) << 8) | + (((unsigned int)s->block[i * 4 + 3]) << 0); + } + SHATransform(s->h, wordblock); + s->blkused = 0; + } + FXSYS_memcpy(s->block, q, len); + s->blkused = len; + } +} +void CRYPT_SHA1Finish(void* context, uint8_t digest[20]) { + SHA_State* s = (SHA_State*)context; + int i; + int pad; + unsigned char c[64]; + unsigned int lenhi, lenlo; + if (s->blkused >= 56) { + pad = 56 + 64 - s->blkused; + } else { + pad = 56 - s->blkused; + } + lenhi = (s->lenhi << 3) | (s->lenlo >> (32 - 3)); + lenlo = (s->lenlo << 3); + FXSYS_memset(c, 0, pad); + c[0] = 0x80; + CRYPT_SHA1Update(s, c, pad); + c[0] = (lenhi >> 24) & 0xFF; + c[1] = (lenhi >> 16) & 0xFF; + c[2] = (lenhi >> 8) & 0xFF; + c[3] = (lenhi >> 0) & 0xFF; + c[4] = (lenlo >> 24) & 0xFF; + c[5] = (lenlo >> 16) & 0xFF; + c[6] = (lenlo >> 8) & 0xFF; + c[7] = (lenlo >> 0) & 0xFF; + CRYPT_SHA1Update(s, c, 8); + for (i = 0; i < 5; i++) { + digest[i * 4] = (s->h[i] >> 24) & 0xFF; + digest[i * 4 + 1] = (s->h[i] >> 16) & 0xFF; + digest[i * 4 + 2] = (s->h[i] >> 8) & 0xFF; + digest[i * 4 + 3] = (s->h[i]) & 0xFF; + } +} +void CRYPT_SHA1Generate(const uint8_t* data, + FX_DWORD size, + uint8_t digest[20]) { + SHA_State s; + CRYPT_SHA1Start(&s); + CRYPT_SHA1Update(&s, data, size); + CRYPT_SHA1Finish(&s, digest); +} +typedef struct { + FX_DWORD total[2]; + FX_DWORD state[8]; + uint8_t buffer[64]; +} sha256_context; +#define GET_FX_DWORD(n, b, i) \ + { \ + (n) = ((FX_DWORD)(b)[(i)] << 24) | ((FX_DWORD)(b)[(i) + 1] << 16) | \ + ((FX_DWORD)(b)[(i) + 2] << 8) | ((FX_DWORD)(b)[(i) + 3]); \ + } +#define PUT_FX_DWORD(n, b, i) \ + { \ + (b)[(i)] = (uint8_t)((n) >> 24); \ + (b)[(i) + 1] = (uint8_t)((n) >> 16); \ + (b)[(i) + 2] = (uint8_t)((n) >> 8); \ + (b)[(i) + 3] = (uint8_t)((n)); \ + } +void CRYPT_SHA256Start(void* context) { + sha256_context* ctx = (sha256_context*)context; + ctx->total[0] = 0; + ctx->total[1] = 0; + ctx->state[0] = 0x6A09E667; + ctx->state[1] = 0xBB67AE85; + ctx->state[2] = 0x3C6EF372; + ctx->state[3] = 0xA54FF53A; + ctx->state[4] = 0x510E527F; + ctx->state[5] = 0x9B05688C; + ctx->state[6] = 0x1F83D9AB; + ctx->state[7] = 0x5BE0CD19; +} +static void sha256_process(sha256_context* ctx, const uint8_t data[64]) { + FX_DWORD temp1, temp2, W[64]; + FX_DWORD A, B, C, D, E, F, G, H; + GET_FX_DWORD(W[0], data, 0); + GET_FX_DWORD(W[1], data, 4); + GET_FX_DWORD(W[2], data, 8); + GET_FX_DWORD(W[3], data, 12); + GET_FX_DWORD(W[4], data, 16); + GET_FX_DWORD(W[5], data, 20); + GET_FX_DWORD(W[6], data, 24); + GET_FX_DWORD(W[7], data, 28); + GET_FX_DWORD(W[8], data, 32); + GET_FX_DWORD(W[9], data, 36); + GET_FX_DWORD(W[10], data, 40); + GET_FX_DWORD(W[11], data, 44); + GET_FX_DWORD(W[12], data, 48); + GET_FX_DWORD(W[13], data, 52); + GET_FX_DWORD(W[14], data, 56); + GET_FX_DWORD(W[15], data, 60); +#define SHR(x, n) ((x & 0xFFFFFFFF) >> n) +#define ROTR(x, n) (SHR(x, n) | (x << (32 - n))) +#define S0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3)) +#define S1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10)) +#define S2(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) +#define S3(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) +#define F0(x, y, z) ((x & y) | (z & (x | y))) +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define R(t) (W[t] = S1(W[t - 2]) + W[t - 7] + S0(W[t - 15]) + W[t - 16]) +#define P(a, b, c, d, e, f, g, h, x, K) \ + { \ + temp1 = h + S3(e) + F1(e, f, g) + K + x; \ + temp2 = S2(a) + F0(a, b, c); \ + d += temp1; \ + h = temp1 + temp2; \ + } + A = ctx->state[0]; + B = ctx->state[1]; + C = ctx->state[2]; + D = ctx->state[3]; + E = ctx->state[4]; + F = ctx->state[5]; + G = ctx->state[6]; + H = ctx->state[7]; + P(A, B, C, D, E, F, G, H, W[0], 0x428A2F98); + P(H, A, B, C, D, E, F, G, W[1], 0x71374491); + P(G, H, A, B, C, D, E, F, W[2], 0xB5C0FBCF); + P(F, G, H, A, B, C, D, E, W[3], 0xE9B5DBA5); + P(E, F, G, H, A, B, C, D, W[4], 0x3956C25B); + P(D, E, F, G, H, A, B, C, W[5], 0x59F111F1); + P(C, D, E, F, G, H, A, B, W[6], 0x923F82A4); + P(B, C, D, E, F, G, H, A, W[7], 0xAB1C5ED5); + P(A, B, C, D, E, F, G, H, W[8], 0xD807AA98); + P(H, A, B, C, D, E, F, G, W[9], 0x12835B01); + P(G, H, A, B, C, D, E, F, W[10], 0x243185BE); + P(F, G, H, A, B, C, D, E, W[11], 0x550C7DC3); + P(E, F, G, H, A, B, C, D, W[12], 0x72BE5D74); + P(D, E, F, G, H, A, B, C, W[13], 0x80DEB1FE); + P(C, D, E, F, G, H, A, B, W[14], 0x9BDC06A7); + P(B, C, D, E, F, G, H, A, W[15], 0xC19BF174); + P(A, B, C, D, E, F, G, H, R(16), 0xE49B69C1); + P(H, A, B, C, D, E, F, G, R(17), 0xEFBE4786); + P(G, H, A, B, C, D, E, F, R(18), 0x0FC19DC6); + P(F, G, H, A, B, C, D, E, R(19), 0x240CA1CC); + P(E, F, G, H, A, B, C, D, R(20), 0x2DE92C6F); + P(D, E, F, G, H, A, B, C, R(21), 0x4A7484AA); + P(C, D, E, F, G, H, A, B, R(22), 0x5CB0A9DC); + P(B, C, D, E, F, G, H, A, R(23), 0x76F988DA); + P(A, B, C, D, E, F, G, H, R(24), 0x983E5152); + P(H, A, B, C, D, E, F, G, R(25), 0xA831C66D); + P(G, H, A, B, C, D, E, F, R(26), 0xB00327C8); + P(F, G, H, A, B, C, D, E, R(27), 0xBF597FC7); + P(E, F, G, H, A, B, C, D, R(28), 0xC6E00BF3); + P(D, E, F, G, H, A, B, C, R(29), 0xD5A79147); + P(C, D, E, F, G, H, A, B, R(30), 0x06CA6351); + P(B, C, D, E, F, G, H, A, R(31), 0x14292967); + P(A, B, C, D, E, F, G, H, R(32), 0x27B70A85); + P(H, A, B, C, D, E, F, G, R(33), 0x2E1B2138); + P(G, H, A, B, C, D, E, F, R(34), 0x4D2C6DFC); + P(F, G, H, A, B, C, D, E, R(35), 0x53380D13); + P(E, F, G, H, A, B, C, D, R(36), 0x650A7354); + P(D, E, F, G, H, A, B, C, R(37), 0x766A0ABB); + P(C, D, E, F, G, H, A, B, R(38), 0x81C2C92E); + P(B, C, D, E, F, G, H, A, R(39), 0x92722C85); + P(A, B, C, D, E, F, G, H, R(40), 0xA2BFE8A1); + P(H, A, B, C, D, E, F, G, R(41), 0xA81A664B); + P(G, H, A, B, C, D, E, F, R(42), 0xC24B8B70); + P(F, G, H, A, B, C, D, E, R(43), 0xC76C51A3); + P(E, F, G, H, A, B, C, D, R(44), 0xD192E819); + P(D, E, F, G, H, A, B, C, R(45), 0xD6990624); + P(C, D, E, F, G, H, A, B, R(46), 0xF40E3585); + P(B, C, D, E, F, G, H, A, R(47), 0x106AA070); + P(A, B, C, D, E, F, G, H, R(48), 0x19A4C116); + P(H, A, B, C, D, E, F, G, R(49), 0x1E376C08); + P(G, H, A, B, C, D, E, F, R(50), 0x2748774C); + P(F, G, H, A, B, C, D, E, R(51), 0x34B0BCB5); + P(E, F, G, H, A, B, C, D, R(52), 0x391C0CB3); + P(D, E, F, G, H, A, B, C, R(53), 0x4ED8AA4A); + P(C, D, E, F, G, H, A, B, R(54), 0x5B9CCA4F); + P(B, C, D, E, F, G, H, A, R(55), 0x682E6FF3); + P(A, B, C, D, E, F, G, H, R(56), 0x748F82EE); + P(H, A, B, C, D, E, F, G, R(57), 0x78A5636F); + P(G, H, A, B, C, D, E, F, R(58), 0x84C87814); + P(F, G, H, A, B, C, D, E, R(59), 0x8CC70208); + P(E, F, G, H, A, B, C, D, R(60), 0x90BEFFFA); + P(D, E, F, G, H, A, B, C, R(61), 0xA4506CEB); + P(C, D, E, F, G, H, A, B, R(62), 0xBEF9A3F7); + P(B, C, D, E, F, G, H, A, R(63), 0xC67178F2); + ctx->state[0] += A; + ctx->state[1] += B; + ctx->state[2] += C; + ctx->state[3] += D; + ctx->state[4] += E; + ctx->state[5] += F; + ctx->state[6] += G; + ctx->state[7] += H; +} +void CRYPT_SHA256Update(void* context, const uint8_t* input, FX_DWORD length) { + sha256_context* ctx = (sha256_context*)context; + FX_DWORD left, fill; + if (!length) { + return; + } + left = ctx->total[0] & 0x3F; + fill = 64 - left; + ctx->total[0] += length; + ctx->total[0] &= 0xFFFFFFFF; + if (ctx->total[0] < length) { + ctx->total[1]++; + } + if (left && length >= fill) { + FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill); + sha256_process(ctx, ctx->buffer); + length -= fill; + input += fill; + left = 0; + } + while (length >= 64) { + sha256_process(ctx, input); + length -= 64; + input += 64; + } + if (length) { + FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); + } +} +static const uint8_t sha256_padding[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +void CRYPT_SHA256Finish(void* context, uint8_t digest[32]) { + sha256_context* ctx = (sha256_context*)context; + FX_DWORD last, padn; + FX_DWORD high, low; + uint8_t msglen[8]; + high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); + low = (ctx->total[0] << 3); + PUT_FX_DWORD(high, msglen, 0); + PUT_FX_DWORD(low, msglen, 4); + last = ctx->total[0] & 0x3F; + padn = (last < 56) ? (56 - last) : (120 - last); + CRYPT_SHA256Update(ctx, sha256_padding, padn); + CRYPT_SHA256Update(ctx, msglen, 8); + PUT_FX_DWORD(ctx->state[0], digest, 0); + PUT_FX_DWORD(ctx->state[1], digest, 4); + PUT_FX_DWORD(ctx->state[2], digest, 8); + PUT_FX_DWORD(ctx->state[3], digest, 12); + PUT_FX_DWORD(ctx->state[4], digest, 16); + PUT_FX_DWORD(ctx->state[5], digest, 20); + PUT_FX_DWORD(ctx->state[6], digest, 24); + PUT_FX_DWORD(ctx->state[7], digest, 28); +} +void CRYPT_SHA256Generate(const uint8_t* data, + FX_DWORD size, + uint8_t digest[32]) { + sha256_context ctx; + CRYPT_SHA256Start(&ctx); + CRYPT_SHA256Update(&ctx, data, size); + CRYPT_SHA256Finish(&ctx, digest); +} +typedef struct { + uint64_t total[2]; + uint64_t state[8]; + uint8_t buffer[128]; +} sha384_context; +uint64_t FX_ato64i(const FX_CHAR* str) { + FXSYS_assert(str); + uint64_t ret = 0; + int len = (int)FXSYS_strlen(str); + len = len > 16 ? 16 : len; + for (int i = 0; i < len; ++i) { + if (i) { + ret <<= 4; + } + if (str[i] >= '0' && str[i] <= '9') { + ret |= (str[i] - '0') & 0xFF; + } else if (str[i] >= 'a' && str[i] <= 'f') { + ret |= (str[i] - 'a' + 10) & 0xFF; + } else if (str[i] >= 'A' && str[i] <= 'F') { + ret |= (str[i] - 'A' + 10) & 0xFF; + } else { + FXSYS_assert(FALSE); + } + } + return ret; +} +void CRYPT_SHA384Start(void* context) { + if (!context) { + return; + } + sha384_context* ctx = (sha384_context*)context; + FXSYS_memset(ctx, 0, sizeof(sha384_context)); + ctx->state[0] = FX_ato64i("cbbb9d5dc1059ed8"); + ctx->state[1] = FX_ato64i("629a292a367cd507"); + ctx->state[2] = FX_ato64i("9159015a3070dd17"); + ctx->state[3] = FX_ato64i("152fecd8f70e5939"); + ctx->state[4] = FX_ato64i("67332667ffc00b31"); + ctx->state[5] = FX_ato64i("8eb44a8768581511"); + ctx->state[6] = FX_ato64i("db0c2e0d64f98fa7"); + ctx->state[7] = FX_ato64i("47b5481dbefa4fa4"); +} +#define SHA384_F0(x, y, z) ((x & y) | (z & (x | y))) +#define SHA384_F1(x, y, z) (z ^ (x & (y ^ z))) +#define SHA384_SHR(x, n) (x >> n) +#define SHA384_ROTR(x, n) (SHA384_SHR(x, n) | x << (64 - n)) +#define SHA384_S0(x) (SHA384_ROTR(x, 1) ^ SHA384_ROTR(x, 8) ^ SHA384_SHR(x, 7)) +#define SHA384_S1(x) \ + (SHA384_ROTR(x, 19) ^ SHA384_ROTR(x, 61) ^ SHA384_SHR(x, 6)) +#define SHA384_S2(x) \ + (SHA384_ROTR(x, 28) ^ SHA384_ROTR(x, 34) ^ SHA384_ROTR(x, 39)) +#define SHA384_S3(x) \ + (SHA384_ROTR(x, 14) ^ SHA384_ROTR(x, 18) ^ SHA384_ROTR(x, 41)) +#define SHA384_P(a, b, c, d, e, f, g, h, x, K) \ + { \ + temp1 = h + SHA384_S3(e) + SHA384_F1(e, f, g) + K + x; \ + temp2 = SHA384_S2(a) + SHA384_F0(a, b, c); \ + d += temp1; \ + h = temp1 + temp2; \ + } +static const uint8_t sha384_padding[128] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; +#define SHA384_R(t) \ + (W[t] = SHA384_S1(W[t - 2]) + W[t - 7] + SHA384_S0(W[t - 15]) + W[t - 16]) +static const FX_CHAR* constants[] = { + "428a2f98d728ae22", "7137449123ef65cd", "b5c0fbcfec4d3b2f", + "e9b5dba58189dbbc", "3956c25bf348b538", "59f111f1b605d019", + "923f82a4af194f9b", "ab1c5ed5da6d8118", "d807aa98a3030242", + "12835b0145706fbe", "243185be4ee4b28c", "550c7dc3d5ffb4e2", + "72be5d74f27b896f", "80deb1fe3b1696b1", "9bdc06a725c71235", + "c19bf174cf692694", "e49b69c19ef14ad2", "efbe4786384f25e3", + "0fc19dc68b8cd5b5", "240ca1cc77ac9c65", "2de92c6f592b0275", + "4a7484aa6ea6e483", "5cb0a9dcbd41fbd4", "76f988da831153b5", + "983e5152ee66dfab", "a831c66d2db43210", "b00327c898fb213f", + "bf597fc7beef0ee4", "c6e00bf33da88fc2", "d5a79147930aa725", + "06ca6351e003826f", "142929670a0e6e70", "27b70a8546d22ffc", + "2e1b21385c26c926", "4d2c6dfc5ac42aed", "53380d139d95b3df", + "650a73548baf63de", "766a0abb3c77b2a8", "81c2c92e47edaee6", + "92722c851482353b", "a2bfe8a14cf10364", "a81a664bbc423001", + "c24b8b70d0f89791", "c76c51a30654be30", "d192e819d6ef5218", + "d69906245565a910", "f40e35855771202a", "106aa07032bbd1b8", + "19a4c116b8d2d0c8", "1e376c085141ab53", "2748774cdf8eeb99", + "34b0bcb5e19b48a8", "391c0cb3c5c95a63", "4ed8aa4ae3418acb", + "5b9cca4f7763e373", "682e6ff3d6b2b8a3", "748f82ee5defb2fc", + "78a5636f43172f60", "84c87814a1f0ab72", "8cc702081a6439ec", + "90befffa23631e28", "a4506cebde82bde9", "bef9a3f7b2c67915", + "c67178f2e372532b", "ca273eceea26619c", "d186b8c721c0c207", + "eada7dd6cde0eb1e", "f57d4f7fee6ed178", "06f067aa72176fba", + "0a637dc5a2c898a6", "113f9804bef90dae", "1b710b35131c471b", + "28db77f523047d84", "32caab7b40c72493", "3c9ebe0a15c9bebc", + "431d67c49c100d4c", "4cc5d4becb3e42b6", "597f299cfc657e2a", + "5fcb6fab3ad6faec", "6c44198c4a475817", +}; +#define GET_FX_64WORD(n, b, i) \ + { \ + (n) = ((uint64_t)(b)[(i)] << 56) | ((uint64_t)(b)[(i) + 1] << 48) | \ + ((uint64_t)(b)[(i) + 2] << 40) | ((uint64_t)(b)[(i) + 3] << 32) | \ + ((uint64_t)(b)[(i) + 4] << 24) | ((uint64_t)(b)[(i) + 5] << 16) | \ + ((uint64_t)(b)[(i) + 6] << 8) | ((uint64_t)(b)[(i) + 7]); \ + } +#define PUT_FX_64DWORD(n, b, i) \ + { \ + (b)[(i)] = (uint8_t)((n) >> 56); \ + (b)[(i) + 1] = (uint8_t)((n) >> 48); \ + (b)[(i) + 2] = (uint8_t)((n) >> 40); \ + (b)[(i) + 3] = (uint8_t)((n) >> 32); \ + (b)[(i) + 4] = (uint8_t)((n) >> 24); \ + (b)[(i) + 5] = (uint8_t)((n) >> 16); \ + (b)[(i) + 6] = (uint8_t)((n) >> 8); \ + (b)[(i) + 7] = (uint8_t)((n)); \ + } +static void sha384_process(sha384_context* ctx, const uint8_t data[128]) { + uint64_t temp1, temp2; + uint64_t A, B, C, D, E, F, G, H; + uint64_t W[80]; + GET_FX_64WORD(W[0], data, 0); + GET_FX_64WORD(W[1], data, 8); + GET_FX_64WORD(W[2], data, 16); + GET_FX_64WORD(W[3], data, 24); + GET_FX_64WORD(W[4], data, 32); + GET_FX_64WORD(W[5], data, 40); + GET_FX_64WORD(W[6], data, 48); + GET_FX_64WORD(W[7], data, 56); + GET_FX_64WORD(W[8], data, 64); + GET_FX_64WORD(W[9], data, 72); + GET_FX_64WORD(W[10], data, 80); + GET_FX_64WORD(W[11], data, 88); + GET_FX_64WORD(W[12], data, 96); + GET_FX_64WORD(W[13], data, 104); + GET_FX_64WORD(W[14], data, 112); + GET_FX_64WORD(W[15], data, 120); + A = ctx->state[0]; + B = ctx->state[1]; + C = ctx->state[2]; + D = ctx->state[3]; + E = ctx->state[4]; + F = ctx->state[5]; + G = ctx->state[6]; + H = ctx->state[7]; + for (int i = 0; i < 10; ++i) { + uint64_t temp[8]; + if (i < 2) { + temp[0] = W[i * 8]; + temp[1] = W[i * 8 + 1]; + temp[2] = W[i * 8 + 2]; + temp[3] = W[i * 8 + 3]; + temp[4] = W[i * 8 + 4]; + temp[5] = W[i * 8 + 5]; + temp[6] = W[i * 8 + 6]; + temp[7] = W[i * 8 + 7]; + } else { + temp[0] = SHA384_R(i * 8); + temp[1] = SHA384_R(i * 8 + 1); + temp[2] = SHA384_R(i * 8 + 2); + temp[3] = SHA384_R(i * 8 + 3); + temp[4] = SHA384_R(i * 8 + 4); + temp[5] = SHA384_R(i * 8 + 5); + temp[6] = SHA384_R(i * 8 + 6); + temp[7] = SHA384_R(i * 8 + 7); + } + SHA384_P(A, B, C, D, E, F, G, H, temp[0], FX_ato64i(constants[i * 8])); + SHA384_P(H, A, B, C, D, E, F, G, temp[1], FX_ato64i(constants[i * 8 + 1])); + SHA384_P(G, H, A, B, C, D, E, F, temp[2], FX_ato64i(constants[i * 8 + 2])); + SHA384_P(F, G, H, A, B, C, D, E, temp[3], FX_ato64i(constants[i * 8 + 3])); + SHA384_P(E, F, G, H, A, B, C, D, temp[4], FX_ato64i(constants[i * 8 + 4])); + SHA384_P(D, E, F, G, H, A, B, C, temp[5], FX_ato64i(constants[i * 8 + 5])); + SHA384_P(C, D, E, F, G, H, A, B, temp[6], FX_ato64i(constants[i * 8 + 6])); + SHA384_P(B, C, D, E, F, G, H, A, temp[7], FX_ato64i(constants[i * 8 + 7])); + } + ctx->state[0] += A; + ctx->state[1] += B; + ctx->state[2] += C; + ctx->state[3] += D; + ctx->state[4] += E; + ctx->state[5] += F; + ctx->state[6] += G; + ctx->state[7] += H; +} +void CRYPT_SHA384Update(void* context, const uint8_t* input, FX_DWORD length) { + sha384_context* ctx = (sha384_context*)context; + FX_DWORD left, fill; + if (!length) { + return; + } + left = (FX_DWORD)ctx->total[0] & 0x7F; + fill = 128 - left; + ctx->total[0] += length; + if (ctx->total[0] < length) { + ctx->total[1]++; + } + if (left && length >= fill) { + FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill); + sha384_process(ctx, ctx->buffer); + length -= fill; + input += fill; + left = 0; + } + while (length >= 128) { + sha384_process(ctx, input); + length -= 128; + input += 128; + } + if (length) { + FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); + } +} +void CRYPT_SHA384Finish(void* context, uint8_t digest[48]) { + sha384_context* ctx = (sha384_context*)context; + FX_DWORD last, padn; + uint8_t msglen[16]; + FXSYS_memset(msglen, 0, 16); + uint64_t high, low; + high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); + low = (ctx->total[0] << 3); + PUT_FX_64DWORD(high, msglen, 0); + PUT_FX_64DWORD(low, msglen, 8); + last = (FX_DWORD)ctx->total[0] & 0x7F; + padn = (last < 112) ? (112 - last) : (240 - last); + CRYPT_SHA384Update(ctx, sha384_padding, padn); + CRYPT_SHA384Update(ctx, msglen, 16); + PUT_FX_64DWORD(ctx->state[0], digest, 0); + PUT_FX_64DWORD(ctx->state[1], digest, 8); + PUT_FX_64DWORD(ctx->state[2], digest, 16); + PUT_FX_64DWORD(ctx->state[3], digest, 24); + PUT_FX_64DWORD(ctx->state[4], digest, 32); + PUT_FX_64DWORD(ctx->state[5], digest, 40); +} +void CRYPT_SHA384Generate(const uint8_t* data, + FX_DWORD size, + uint8_t digest[64]) { + sha384_context context; + CRYPT_SHA384Start(&context); + CRYPT_SHA384Update(&context, data, size); + CRYPT_SHA384Finish(&context, digest); +} +void CRYPT_SHA512Start(void* context) { + if (!context) { + return; + } + sha384_context* ctx = (sha384_context*)context; + FXSYS_memset(ctx, 0, sizeof(sha384_context)); + ctx->state[0] = FX_ato64i("6a09e667f3bcc908"); + ctx->state[1] = FX_ato64i("bb67ae8584caa73b"); + ctx->state[2] = FX_ato64i("3c6ef372fe94f82b"); + ctx->state[3] = FX_ato64i("a54ff53a5f1d36f1"); + ctx->state[4] = FX_ato64i("510e527fade682d1"); + ctx->state[5] = FX_ato64i("9b05688c2b3e6c1f"); + ctx->state[6] = FX_ato64i("1f83d9abfb41bd6b"); + ctx->state[7] = FX_ato64i("5be0cd19137e2179"); +} +void CRYPT_SHA512Update(void* context, const uint8_t* data, FX_DWORD size) { + CRYPT_SHA384Update(context, data, size); +} +void CRYPT_SHA512Finish(void* context, uint8_t digest[64]) { + sha384_context* ctx = (sha384_context*)context; + FX_DWORD last, padn; + uint8_t msglen[16]; + FXSYS_memset(msglen, 0, 16); + uint64_t high, low; + high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); + low = (ctx->total[0] << 3); + PUT_FX_64DWORD(high, msglen, 0); + PUT_FX_64DWORD(low, msglen, 8); + last = (FX_DWORD)ctx->total[0] & 0x7F; + padn = (last < 112) ? (112 - last) : (240 - last); + CRYPT_SHA512Update(ctx, sha384_padding, padn); + CRYPT_SHA512Update(ctx, msglen, 16); + PUT_FX_64DWORD(ctx->state[0], digest, 0); + PUT_FX_64DWORD(ctx->state[1], digest, 8); + PUT_FX_64DWORD(ctx->state[2], digest, 16); + PUT_FX_64DWORD(ctx->state[3], digest, 24); + PUT_FX_64DWORD(ctx->state[4], digest, 32); + PUT_FX_64DWORD(ctx->state[5], digest, 40); + PUT_FX_64DWORD(ctx->state[6], digest, 48); + PUT_FX_64DWORD(ctx->state[7], digest, 56); +} +void CRYPT_SHA512Generate(const uint8_t* data, + FX_DWORD size, + uint8_t digest[64]) { + sha384_context context; + CRYPT_SHA512Start(&context); + CRYPT_SHA512Update(&context, data, size); + CRYPT_SHA512Finish(&context, digest); +} +#ifdef __cplusplus +}; +#endif diff --git a/core/fpdfapi/fpdf_basic_module.cpp b/core/fpdfapi/fpdf_basic_module.cpp new file mode 100644 index 0000000000..cf843cc4d9 --- /dev/null +++ b/core/fpdfapi/fpdf_basic_module.cpp @@ -0,0 +1,62 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fxcodec/fx_codec.h" + +namespace { + +CPDF_ModuleMgr* g_FPDFAPI_pDefaultMgr = nullptr; + +} // namespace + +// static +CPDF_ModuleMgr* CPDF_ModuleMgr::Get() { + return g_FPDFAPI_pDefaultMgr; +} + +// static +void CPDF_ModuleMgr::Create() { + ASSERT(!g_FPDFAPI_pDefaultMgr); + g_FPDFAPI_pDefaultMgr = new CPDF_ModuleMgr; +} + +// static +void CPDF_ModuleMgr::Destroy() { + delete g_FPDFAPI_pDefaultMgr; + g_FPDFAPI_pDefaultMgr = nullptr; +} + +CPDF_ModuleMgr::CPDF_ModuleMgr() : m_pCodecModule(nullptr) {} + +CPDF_ModuleMgr::~CPDF_ModuleMgr() {} + +void CPDF_ModuleMgr::SetPrivateData(void* module_id, + void* pData, + PD_CALLBACK_FREEDATA callback) { + m_privateData.SetPrivateData(module_id, pData, callback); +} +void* CPDF_ModuleMgr::GetPrivateData(void* module_id) { + return m_privateData.GetPrivateData(module_id); +} +ICodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() { + return m_pCodecModule ? m_pCodecModule->GetFaxModule() : NULL; +} +ICodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() { + return m_pCodecModule ? m_pCodecModule->GetJpegModule() : NULL; +} +ICodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() { + return m_pCodecModule ? m_pCodecModule->GetJpxModule() : NULL; +} +ICodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() { + return m_pCodecModule ? m_pCodecModule->GetJbig2Module() : NULL; +} +ICodec_IccModule* CPDF_ModuleMgr::GetIccModule() { + return m_pCodecModule ? m_pCodecModule->GetIccModule() : NULL; +} +ICodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() { + return m_pCodecModule ? m_pCodecModule->GetFlateModule() : NULL; +} diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp new file mode 100644 index 0000000000..5a45d0aa39 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp @@ -0,0 +1,2131 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_CNS1CID2Unicode_5[19088] = { + 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, + 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, + 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, + 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, + 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x00A9, 0x2122, 0x2026, + 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A, 0xFF1F, + 0xFF01, 0xFE30, 0x22EF, 0x2025, 0xFE50, 0xFE51, 0xFE52, 0x00B7, 0xFE54, + 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, 0x2014, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0xFF08, 0xFF09, 0xFE35, 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, + 0xFE38, 0x3014, 0x3015, 0xFE39, 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, + 0x300A, 0x300B, 0xFE3D, 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, + 0x300D, 0xFE41, 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, + 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, + 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, 0x3003, + 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, 0x25C7, 0x25C6, + 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, 0x203E, 0xFFE3, 0xFF3F, + 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, + 0xFE61, 0xFF0B, 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, + 0xFF1D, 0x2266, 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, + 0xFE64, 0xFE65, 0xFE66, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, + 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642, + 0x2295, 0x2609, 0x2191, 0x2193, 0x2192, 0x2190, 0x2196, 0x2197, 0x2199, + 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0xFF0F, 0xFF3C, 0xFF04, 0x00A5, + 0x3012, 0x00A2, 0x00A3, 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, + 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, + 0x33C4, 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, + 0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, + 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, + 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, + 0x2510, 0x2514, 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, + 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573, + 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, + 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, + 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, + 0x3028, 0x3029, 0x3038, 0x5344, 0x303A, 0xFF21, 0xFF22, 0xFF23, 0xFF24, + 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, + 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, + 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, + 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, + 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, + 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, + 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, + 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, + 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, + 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107, + 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, 0x3110, + 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, + 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, 0x3122, + 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02D9, 0x02CA, + 0x02C7, 0x02CB, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, + 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, + 0x247A, 0x247B, 0x247C, 0x247D, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, + 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4E28, 0x4E36, 0x4E3F, 0x4E85, + 0x4EA0, 0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338, 0x5369, 0x53B6, 0x5902, + 0x5B80, 0x5DDB, 0x5E7A, 0x5E7F, 0x5EF4, 0x5F50, 0x5F61, 0x6534, 0x65E0, + 0x7592, 0x7676, 0x8FB5, 0x96B6, 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, + 0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240A, 0x240B, 0x240C, 0x240D, + 0x240E, 0x240F, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, + 0x2417, 0x2418, 0x2419, 0x241A, 0x241B, 0x241C, 0x241D, 0x241E, 0x241F, + 0x2421, 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, + 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315, + 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B, 0x4E38, + 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, 0x5140, 0x5203, + 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973, + 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, + 0x5DE5, 0x5DF1, 0x5DF2, 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, + 0x624D, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, + 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3, + 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167, + 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB, + 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, + 0x53CB, 0x53CA, 0x53CD, 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, + 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, + 0x5FC3, 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, + 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, + 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, + 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18, + 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, + 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, + 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, + 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E, + 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC, + 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, + 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, 0x5976, + 0x5B55, 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, + 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, + 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63, + 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 0x7384, + 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529, 0x7530, 0x7531, + 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE, 0x77DB, 0x77E2, + 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, + 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, + 0x4F15, 0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, + 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, + 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, 0x52A3, + 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 0x540C, 0x540A, + 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 0x5408, 0x5403, 0x540E, + 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D, + 0x572C, 0x572F, 0x5729, 0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, + 0x5983, 0x597D, 0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, + 0x5B85, 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, + 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263, + 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, 0x66F3, + 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, 0x6B7B, 0x6C16, + 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, + 0x6C4D, 0x6C4E, 0x7070, 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, + 0x7F36, 0x7F8A, 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, + 0x8089, 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, + 0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, + 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34, + 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, 0x4F38, 0x4F43, + 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, + 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, + 0x51B7, 0x5225, 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, + 0x52AC, 0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, + 0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, + 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, + 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, 0x56EB, + 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E, 0x5750, 0x574F, + 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, + 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, + 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, + 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, + 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, + 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, + 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, + 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, 0x6291, + 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F, + 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760, 0x6753, + 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89, + 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, + 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, + 0x6C94, 0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, + 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, + 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096, + 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292, 0x828B, + 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C9D, 0x8D64, + 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, + 0x8FC4, 0x5DE1, 0x9091, 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, + 0x91CC, 0x9632, 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, + 0x4E8B, 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, + 0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88, + 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, 0x5152, + 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD, 0x523B, 0x5238, + 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, 0x52BE, 0x52BB, 0x5352, + 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, + 0x53D7, 0x5473, 0x5475, 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, + 0x5484, 0x5492, 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, + 0x5462, 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, + 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, 0x5948, + 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, 0x59D1, 0x59C6, + 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, 0x59B3, 0x59D2, 0x59C5, + 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, + 0x5C1A, 0x5C48, 0x5C45, 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, + 0x5CB1, 0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, + 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29, + 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF, + 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021, 0x6027, + 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, 0x623E, 0x6240, 0x627F, + 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, + 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, + 0x62C7, 0x62CD, 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, + 0x62AC, 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, + 0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, + 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787, + 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, 0x6790, 0x6775, + 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66, 0x6B67, 0x6B7F, + 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, + 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, + 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, + 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, + 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269, + 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, + 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, + 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79, + 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, + 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 0x81FE, + 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, + 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, + 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, + 0x90B1, 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, + 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, + 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, + 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 0x4FC4, + 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0, + 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, + 0x52C3, 0x52C1, 0x530D, 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, + 0x54A8, 0x54CE, 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, + 0x54AA, 0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, + 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, 0x57CE, + 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, 0x59DC, 0x59D8, + 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01, + 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, + 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, + 0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, + 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, + 0x600E, 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, + 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, 0x62ED, + 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0x62EF, 0x62EC, 0x62FE, + 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB, 0x65BD, 0x65E2, 0x6625, + 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, + 0x67FF, 0x67D3, 0x67F1, 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, + 0x67E9, 0x67EF, 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, + 0x67DE, 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, + 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 0x6D2A, + 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D, 0x6D3E, + 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, + 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, + 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, + 0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, + 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3, + 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701, + 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802, + 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9, 0x79BA, + 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, + 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, + 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, 0x80C4, + 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222, + 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302, + 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE, + 0x82D3, 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, + 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, + 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5, + 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3, 0x914B, + 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, 0x964D, 0x9762, 0x9769, + 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, + 0x4E58, 0x4EB3, 0x500C, 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, + 0x5029, 0x5016, 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, + 0x5000, 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, + 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, + 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B, + 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, 0x5510, 0x5501, + 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA, 0x5514, 0x54E9, 0x54ED, + 0x54E1, 0x5509, 0x54EE, 0x54EA, 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, + 0x5703, 0x5704, 0x57C2, 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, + 0x5958, 0x595A, 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, + 0x5A20, 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, + 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, 0x5C51, + 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, 0x5CF0, 0x5CF6, + 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7, 0x5F31, + 0x5F92, 0x5F91, 0x5F90, 0x6059, 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, + 0x6069, 0x606F, 0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, + 0x6096, 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, + 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B, + 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, 0x6642, + 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, 0x6714, + 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, 0x6842, + 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, + 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, + 0x6B89, 0x6BB7, 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, + 0x6D95, 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, + 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, + 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239, + 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED, 0x7409, + 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, 0x755A, 0x7559, + 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2, + 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, + 0x7728, 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, + 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, + 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, + 0x79E9, 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, + 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A, + 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, + 0x8006, 0x8004, 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, + 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108, + 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A, + 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, + 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, + 0x8340, 0x8331, 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, + 0x86A9, 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, + 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13, + 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77, + 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7, 0x9000, + 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, + 0x90E2, 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, + 0x9583, 0x9662, 0x9663, 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, + 0x96BB, 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, + 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065, + 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F, 0x506F, + 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2, 0x52D9, 0x52D8, + 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340, 0x533E, 0x53C3, 0x66FC, + 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, 0x5561, 0x5543, 0x554A, 0x5531, + 0x5556, 0x554F, 0x5555, 0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, + 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, + 0x580A, 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, + 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, 0x5A3C, + 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, 0x5BC4, 0x5BC2, + 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, 0x5C5C, 0x5C5D, 0x5D07, + 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, 0x5D11, 0x5D29, 0x5D14, 0x5D19, + 0x5D24, 0x5D27, 0x5D17, 0x5DE2, 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, + 0x5EB8, 0x5EB6, 0x5EB5, 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, + 0x5F6B, 0x5F97, 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, + 0x60A3, 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x60C5, + 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF, 0x60B8, + 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, 0x6372, 0x6396, + 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, + 0x6383, 0x639B, 0x636B, 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, + 0x6392, 0x638F, 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, + 0x6551, 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, + 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, + 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2, + 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, 0x6883, + 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8, 0x689F, 0x68A1, + 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, + 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, + 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, + 0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, + 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, + 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B, + 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, 0x7406, 0x73FE, + 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562, + 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, + 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 0x786B, + 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, + 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, + 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, 0x7D30, + 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, + 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, + 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, + 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392, + 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C, 0x8386, 0x83A7, + 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, + 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, + 0x888D, 0x888B, 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, + 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, + 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF, + 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, 0x9015, + 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014, 0x90E8, 0x90ED, + 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9, + 0x9589, 0x966A, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, + 0x966C, 0x96C0, 0x96EA, 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, + 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, + 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274, + 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, 0x5580, + 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, 0x55AA, 0x5594, + 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A, + 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, 0x55AB, 0x5599, 0x570D, 0x582F, + 0x582A, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, + 0x58FA, 0x5960, 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, + 0x5B71, 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, + 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E, + 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8, + 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123, 0x60FA, 0x6115, + 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100, + 0x6112, 0x621F, 0x6249, 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, + 0x63C6, 0x63CD, 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, + 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, + 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676, + 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D, + 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE, + 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, + 0x690E, 0x68C9, 0x68DA, 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, + 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, + 0x6E21, 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, + 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, + 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E, + 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130, + 0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, 0x7280, 0x7336, 0x7325, + 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, + 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, + 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C, + 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, 0x786F, + 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, + 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, + 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, + 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, + 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E, + 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, 0x83E9, + 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, 0x83EF, 0x83F1, + 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, 0x83FD, 0x83F2, 0x83CA, + 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF, + 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, + 0x88C2, 0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, + 0x8A41, 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, + 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0, + 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, 0x8D81, 0x8DCE, + 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8, + 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, + 0x90F5, 0x9109, 0x90FE, 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, + 0x9209, 0x921E, 0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, + 0x9591, 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, + 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, 0x96C7, + 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, 0x98EF, + 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, + 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, + 0x50AF, 0x50C7, 0x527F, 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, + 0x52E3, 0x532F, 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, + 0x55D1, 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, + 0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, + 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1, + 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, + 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, + 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108, + 0x614E, 0x614C, 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, + 0x6137, 0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, + 0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, + 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, + 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977, 0x6960, 0x6954, + 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979, + 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, + 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, + 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, + 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, + 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, + 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, + 0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, + 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF, + 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, 0x775E, 0x7763, + 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE, 0x788E, + 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, 0x7893, 0x787F, + 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, + 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, + 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, + 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, + 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B, + 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843D, 0x8431, + 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B, 0x843C, 0x8435, 0x8461, + 0x8463, 0x8469, 0x846D, 0x8446, 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, + 0x8708, 0x8707, 0x8700, 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, + 0x8859, 0x88DF, 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, + 0x88D5, 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, + 0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62, + 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, 0x8C89, + 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2, 0x8CC5, 0x8DE1, + 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, + 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, + 0x9042, 0x9054, 0x903C, 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, + 0x9051, 0x903E, 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, + 0x9237, 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, + 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, 0x9598, + 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, 0x96F7, 0x96FB, + 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, 0x9811, 0x9813, 0x980A, + 0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, + 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, + 0x50D6, 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, + 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B, + 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, 0x5616, + 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E, 0x5883, + 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925, 0x5922, 0x5924, + 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, + 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, + 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, + 0x5E54, 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, + 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, + 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467, + 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2, 0x66A8, + 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3, 0x69CB, 0x699B, + 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6, + 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, + 0x6EF4, 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, + 0x6EEF, 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, + 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199, + 0x717D, 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, + 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, + 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, + 0x78C1, 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, + 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, + 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, + 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, + 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, + 0x7DD2, 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, + 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, + 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4, + 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3, 0x8490, + 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734, + 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, + 0x88FD, 0x88E8, 0x891A, 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, + 0x8AA1, 0x8A93, 0x8AA4, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, + 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, + 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, 0x9058, + 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, 0x9119, 0x9118, + 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x92AC, 0x9280, 0x9285, + 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8, 0x927C, 0x9291, 0x95A1, + 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, 0x9699, 0x969C, 0x969B, 0x96CC, + 0x96D2, 0x9700, 0x977C, 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, + 0x9903, 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, + 0x9B42, 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, + 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0x5287, + 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 0x563B, 0x5639, + 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657, 0x5674, 0x5636, + 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3, 0x589C, 0x58AE, 0x58A9, + 0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, + 0x5BEC, 0x5BE9, 0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, + 0x5E61, 0x5EE2, 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, + 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0x617C, + 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, 0x619A, + 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E, 0x64B2, + 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, + 0x64AD, 0x64AB, 0x649A, 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, + 0x6578, 0x66AE, 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, + 0x6A1E, 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, + 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, + 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, + 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60, + 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, 0x734E, 0x7357, + 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, + 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, + 0x778C, 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, + 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, + 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, + 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, + 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, + 0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, + 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513, + 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, 0x8782, + 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874C, + 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915, 0x890A, + 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, + 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, + 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, + 0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, + 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, + 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E, 0x8F25, 0x9069, + 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 0x9127, 0x9131, 0x9187, + 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA, 0x92E4, 0x92C1, + 0x92B3, 0x92BC, 0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, + 0x9706, 0x9707, 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, + 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF, + 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, 0x9B27, + 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0x9D03, 0x9EA9, 0x9EBE, + 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, + 0x51AA, 0x51DD, 0x5291, 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, + 0x5664, 0x5678, 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, + 0x5676, 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, + 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6, + 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, 0x64BC, + 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4, 0x64BE, + 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, 0x66B8, 0x6A3D, 0x6A38, + 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B, + 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, + 0x6FA1, 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, + 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, + 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, + 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, 0x763A, + 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, 0x78DA, 0x78EC, + 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, + 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, + 0x7E0A, 0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, + 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, + 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, + 0x8543, 0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, + 0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, + 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, + 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, + 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B, + 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072, + 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, + 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, + 0x932E, 0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, + 0x9716, 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, + 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, 0x991E, + 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB, + 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12, 0x9D1B, + 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121, 0x5132, 0x52F5, + 0x568E, 0x5680, 0x5690, 0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, + 0x58CE, 0x5B30, 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, + 0x5DBD, 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, + 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6, + 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6, 0x6A80, + 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E, 0x6A97, 0x6A90, + 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, + 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, + 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, + 0x71F4, 0x71E0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, + 0x74A8, 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, + 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, 0x79A7, + 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, 0x7C0C, 0x7BE0, + 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, 0x7CDD, 0x7E2E, 0x7E3E, + 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, 0x7E3D, 0x7E31, 0x7E45, 0x7E41, + 0x7E34, 0x7E39, 0x7E48, 0x7E35, 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, + 0x8071, 0x8072, 0x8070, 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, + 0x81C0, 0x81BF, 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, + 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8, + 0x858A, 0x85A6, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, 0x87AB, + 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938, 0x893D, + 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, + 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, + 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, + 0x8F3F, 0x907F, 0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, + 0x919E, 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, + 0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, + 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0, + 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, + 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, + 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D, + 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, + 0x65B7, 0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, + 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, + 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375, + 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, 0x77BF, 0x77BB, + 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B, + 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, + 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, + 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0, + 0x85BA, 0x85B9, 0x87EF, 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, + 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, 0x8E66, + 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, + 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, + 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5, + 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, 0x97A6, 0x97AD, + 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA, 0x993E, 0x993F, + 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, + 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, + 0x9EE0, 0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x56A8, 0x58DE, 0x58DF, 0x58E2, + 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, + 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, + 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378, + 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, 0x7661, 0x77C7, + 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, + 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69, 0x7E6A, 0x7E73, 0x7F85, 0x7FB6, + 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, + 0x85F7, 0x87FB, 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, + 0x895E, 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, + 0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, + 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, 0x93E1, + 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, 0x93E2, 0x93CD, + 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4, 0x96E3, 0x972A, 0x9727, + 0x9761, 0x97DC, 0x97FB, 0x985E, 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, + 0x9A16, 0x9A19, 0x9B0D, 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, + 0x9D72, 0x9D6A, 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56B7, + 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9, + 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC, 0x703E, + 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 0x7665, 0x7926, 0x792A, + 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, + 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, + 0x85F9, 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, + 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, + 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, 0x9418, + 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, 0x99A8, 0x9A2B, + 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, + 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, + 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, + 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, + 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, + 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D, + 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433, + 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732, + 0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, + 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, + 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, + 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61, + 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60, + 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, + 0x8D17, 0x8E91, 0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, + 0x973E, 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, + 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, + 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10, + 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2, + 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460, 0x9464, + 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, + 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C, + 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, + 0x8B93, 0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, + 0x9744, 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, + 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, 0x7C6C, + 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, 0x9871, 0x995E, + 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9, 0x9A62, + 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, + 0x9C78, 0x9EF7, 0x8C54, 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, + 0x9E1E, 0x7C72, 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, + 0x4E47, 0x4E8D, 0x56D7, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 0x4E2E, + 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, 0x53B9, 0x5720, + 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 0x6BCC, 0x6C14, 0x723F, + 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, + 0x5209, 0x531C, 0x534C, 0x5722, 0x5723, 0x5917, 0x592F, 0x5B81, 0x5B84, + 0x5C12, 0x5C3B, 0x5C74, 0x5C73, 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, + 0x6250, 0x6C15, 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, + 0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, + 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04, + 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5210, 0x52A6, 0x5322, 0x531F, 0x534D, + 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A, 0x5734, 0x593C, 0x5980, + 0x597C, 0x5985, 0x597B, 0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, + 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, + 0x5F74, 0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, + 0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x6537, 0x65EF, 0x65EE, 0x673E, + 0x6739, 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, + 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E, + 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, 0x8278, 0x827C, + 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097, 0x9098, 0x909B, + 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49, + 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, + 0x4F33, 0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, + 0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, + 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441, + 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, + 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, + 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28, + 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86, + 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, 0x5E88, + 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, + 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, + 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, + 0x6287, 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, + 0x6272, 0x6274, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747, + 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B, 0x6BD0, + 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B, 0x6C8F, 0x6C71, + 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73, + 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, + 0x72C6, 0x72C1, 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, + 0x753A, 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, + 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293, + 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 0x90A1, 0x90A5, + 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, 0x962D, 0x4E33, 0x4F98, + 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84, + 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, + 0x4F9C, 0x4F94, 0x4F9E, 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, + 0x51BC, 0x51BE, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, + 0x530B, 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, + 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 0x548D, + 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56F7, 0x56F9, + 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, + 0x577B, 0x5773, 0x5774, 0x5762, 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, + 0x59BA, 0x59CF, 0x59CE, 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, + 0x59D6, 0x59B1, 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, + 0x5B93, 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, + 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D, + 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 0x5F28, 0x5F22, + 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, 0x602D, + 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, + 0x601E, 0x602C, 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, + 0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, + 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, + 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB, + 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, 0x670A, + 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786, 0x6784, + 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, + 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, + 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, + 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2, + 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD, + 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, + 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A, + 0x72D6, 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, + 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, + 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, + 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0x77F7, + 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035, + 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, + 0x82AB, 0x829A, 0x8298, 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, + 0x82BA, 0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, + 0x82A2, 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, + 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, + 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2, + 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB, + 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, 0x5244, 0x5249, 0x52C0, + 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, + 0x54AD, 0x54A5, 0x54CF, 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, + 0x54C5, 0x54C6, 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, + 0x54B0, 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, + 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, 0x590D, + 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, 0x59FA, 0x59FD, + 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, 0x59E9, 0x59F3, 0x59F5, + 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, + 0x5CD7, 0x5CCB, 0x5CDB, 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, + 0x5CD3, 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, + 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, + 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, 0x6054, + 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, 0x6040, + 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, 0x6242, 0x6243, + 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, + 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, + 0x62F0, 0x6541, 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, + 0x661C, 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, + 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, + 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5, + 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, 0x67B9, 0x67CE, + 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC, 0x67AE, 0x67E6, + 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82, + 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, + 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, + 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, + 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22, + 0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, + 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E, + 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385, + 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB, + 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE, + 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, + 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, + 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, + 0x794A, 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, + 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, + 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D, + 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7, 0x80E0, + 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA, + 0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, + 0x82D9, 0x82FE, 0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, + 0x82D6, 0x82F4, 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, + 0x82F0, 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674, + 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3, 0x8A04, + 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, 0x90BD, 0x90BF, + 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, 0x91D4, 0x91D3, 0x9654, + 0x964F, 0x9651, 0x9653, 0x964A, 0x964E, 0x501E, 0x5005, 0x5007, 0x5013, + 0x5022, 0x5030, 0x501B, 0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, + 0x4FF7, 0x5017, 0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, + 0x515A, 0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, + 0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, + 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, 0x54FF, + 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, 0x550A, 0x54FB, 0x54F7, + 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 0x5701, 0x5702, 0x57CC, 0x5832, + 0x57D5, 0x57D2, 0x57BA, 0x57C6, 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, + 0x57C7, 0x57D0, 0x57B9, 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, + 0x5A2E, 0x5A15, 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, + 0x5BAD, 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, + 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, 0x5EAC, + 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041, 0x60A2, 0x6088, + 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, 0x609B, 0x6097, 0x6087, + 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, + 0x6345, 0x6336, 0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, + 0x6341, 0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, + 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, + 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, 0x681F, + 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816, 0x6831, + 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, 0x6834, 0x681D, + 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D, 0x683A, 0x6825, 0x6820, + 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, + 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, + 0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, + 0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, + 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80, + 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC, 0x70D3, + 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0, + 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242, + 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3, + 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, + 0x73E9, 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, + 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, + 0x75C1, 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, + 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, + 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, + 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B, + 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE, + 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, + 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, + 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, + 0x7C88, 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, + 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, + 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, 0x803E, + 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, 0x8100, 0x8201, + 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, + 0x833F, 0x8341, 0x8326, 0x831C, 0x8322, 0x8342, 0x834E, 0x831B, 0x832A, + 0x8308, 0x833C, 0x834D, 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, + 0x8347, 0x8345, 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, + 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687, + 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, 0x86A7, + 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, 0x8844, 0x886D, + 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 0x886F, 0x8883, 0x887E, + 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, + 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, + 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, + 0x90E3, 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, + 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3, + 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, 0x5053, + 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B, 0x504A, 0x5062, + 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063, 0x5064, 0x5046, 0x5040, + 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, + 0x52D6, 0x52D3, 0x532D, 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, + 0x5534, 0x552A, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, + 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, + 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4, + 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807, + 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, + 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, + 0x5A60, 0x5A58, 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, + 0x5A5F, 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, + 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, + 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, + 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, + 0x5D0D, 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, + 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, + 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, + 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB, + 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A, + 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, + 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, + 0x637C, 0x63A4, 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, + 0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, + 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB, + 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, 0x688F, + 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, 0x6871, 0x687E, + 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4, 0x6878, 0x687B, 0x6891, + 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F, + 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, + 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, + 0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, + 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, 0x6DD0, + 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, 0x70FA, 0x710D, + 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, 0x70F3, 0x7110, 0x70FC, + 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 0x70F6, 0x710B, 0x7102, 0x710E, + 0x727E, 0x727B, 0x727C, 0x727F, 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, + 0x730A, 0x7308, 0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, + 0x7404, 0x7401, 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, + 0x740B, 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0x75CB, + 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, 0x772D, + 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, 0x7735, 0x7848, + 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, + 0x7967, 0x7969, 0x796A, 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, + 0x79F6, 0x79F7, 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B3B, 0x7B34, 0x7B25, + 0x7B30, 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, + 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, + 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, + 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, 0x7F95, + 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, + 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, + 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, + 0x8127, 0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, + 0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, + 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, + 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, + 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, 0x8659, 0x8656, + 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9, + 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE, + 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, + 0x889F, 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, + 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, + 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, + 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, + 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, + 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB, + 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4, + 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, + 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, + 0x96BF, 0x976A, 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, + 0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, + 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, + 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, 0x558F, + 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, 0x55A6, 0x557F, + 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837, 0x5819, 0x581E, 0x5827, + 0x5823, 0x5828, 0x57F5, 0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, + 0x5836, 0x582E, 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, + 0x5A94, 0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, + 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B, + 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D, 0x5BEA, + 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, 0x5C30, 0x5D37, + 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, 0x5D51, 0x5D4E, 0x5D55, + 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, + 0x5D38, 0x5D3C, 0x5D32, 0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, + 0x5FA6, 0x5FA5, 0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, + 0x6114, 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, + 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 0x610B, + 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 0x63EF, 0x63C3, + 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, 0x63F2, 0x63F5, 0x6461, + 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, 0x63D8, 0x63D3, 0x63C2, 0x63C7, + 0x63CC, 0x63CB, 0x63C8, 0x63F0, 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, + 0x6564, 0x655C, 0x6568, 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, + 0x65D2, 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, + 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1, + 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910, 0x68F3, + 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, 0x6911, 0x68EF, 0x68C6, + 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917, + 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, + 0x68E9, 0x6915, 0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, + 0x6B97, 0x6B99, 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, + 0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, + 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40, + 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61, 0x6E31, + 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, + 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35, + 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, + 0x7125, 0x7122, 0x7132, 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, + 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, + 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, + 0x742E, 0x742C, 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431, + 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, + 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7, + 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, 0x774A, + 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, 0x785C, + 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868, 0x785E, 0x7862, + 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, + 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B47, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, + 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, + 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, + 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65, + 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, 0x80FE, + 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D, 0x814D, 0x813A, + 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F, + 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7, + 0x83E4, 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, + 0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, + 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3, + 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x839A, 0x83C3, 0x83EC, + 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, 0x83FE, 0x86D8, + 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, 0x86DD, 0x86EB, 0x86DC, + 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA, + 0x88D7, 0x88B9, 0x88B8, 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, + 0x88B2, 0x8901, 0x88C9, 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, + 0x8A4E, 0x8A4D, 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, + 0x8A52, 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, + 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 0x8DD8, + 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, 0x8DC8, + 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, + 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, + 0x902D, 0x9034, 0x902F, 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, + 0x90F9, 0x90FB, 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, + 0x915F, 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, + 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227, + 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957B, 0x958D, + 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, 0x9683, 0x9680, 0x96C2, + 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, + 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, + 0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, + 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, + 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0, + 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, 0x55E2, + 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868, + 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, + 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, + 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, + 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6, + 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72, + 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, + 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, + 0x5FAD, 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, + 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, + 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, + 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423, + 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642F, 0x640A, 0x641A, + 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, + 0x656F, 0x6592, 0x65D3, 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, + 0x6699, 0x6694, 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, + 0x6971, 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, + 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, + 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, + 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, 0x6932, 0x6952, + 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43, 0x6B42, 0x6B48, 0x6B41, + 0x6B9B, 0x6BFB, 0x6BFC, 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, + 0x6E8F, 0x6EC0, 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, + 0x6ED2, 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, + 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E, + 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE, + 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, 0x715D, 0x7162, + 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 0x7158, 0x7143, 0x714B, 0x7170, + 0x715F, 0x7150, 0x7153, 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, + 0x7291, 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, + 0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, + 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE, + 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, 0x7603, 0x75F7, + 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, 0x75ED, 0x75F5, + 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, 0x7760, 0x7752, 0x7756, + 0x775A, 0x7769, 0x7767, 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, + 0x7894, 0x788F, 0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, + 0x7899, 0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, + 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10, + 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69, + 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, 0x7B63, + 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, + 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, + 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, + 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, + 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, + 0x821D, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, + 0x8476, 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, + 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507, + 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445, + 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439, + 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, 0x8436, + 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, + 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, + 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD, + 0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, + 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, + 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81, + 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66, 0x8C86, + 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, + 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, + 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, + 0x8F06, 0x8EFF, 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, + 0x9052, 0x903F, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, + 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252, 0x9230, + 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E, 0x924A, 0x9246, + 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, 0x9236, 0x9261, 0x9270, + 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924E, 0x9253, 0x924C, 0x9256, + 0x9232, 0x959F, 0x959C, 0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, + 0x96CE, 0x96FA, 0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, + 0x980F, 0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, + 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD, + 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, 0x50E4, + 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, 0x51D8, 0x5280, 0x5281, + 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, 0x5615, 0x560C, 0x5612, 0x55FC, + 0x560F, 0x561C, 0x5601, 0x5613, 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, + 0x55F9, 0x5889, 0x587C, 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, + 0x588B, 0x587A, 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, + 0x5894, 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, + 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, 0x5ADE, + 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x5BE3, 0x5C63, 0x5D82, + 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77, 0x5D8A, 0x5D89, 0x5D88, + 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, + 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, + 0x5F43, 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, + 0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, + 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, 0x642B, + 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D, 0x6475, + 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, 0x6453, 0x6460, + 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, 0x6465, 0x6477, 0x6573, + 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, + 0x69C9, 0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, + 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, + 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, + 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6, + 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, + 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, + 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, + 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 0x6F3C, + 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, + 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, + 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, + 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, + 0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, + 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, + 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780, + 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E, + 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, + 0x798B, 0x7996, 0x7995, 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, + 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, + 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, + 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, + 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, + 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF, + 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, + 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE, 0x8024, 0x805D, 0x805C, 0x8189, + 0x8186, 0x8183, 0x8187, 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, + 0x84A1, 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, + 0x84B4, 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, + 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, 0x84A8, + 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, 0x84D2, 0x84DB, + 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876B, 0x8740, 0x872E, + 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 0x872C, 0x8741, 0x873E, 0x8746, + 0x8720, 0x8732, 0x872A, 0x872D, 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, + 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, + 0x88E7, 0x88F1, 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, + 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB, + 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, 0x8C68, + 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D, + 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, 0x8E04, + 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, + 0x911D, 0x911A, 0x9124, 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, + 0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D, + 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, + 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C, + 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, + 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, + 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, + 0x9902, 0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, + 0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, + 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, + 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, + 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641, + 0x564A, 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, + 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, + 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, + 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, + 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 0x5D95, + 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, + 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, + 0x61B1, 0x61B0, 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, + 0x6192, 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, + 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C, + 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, 0x657B, + 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, 0x66AA, 0x66AF, + 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, 0x69F1, 0x69E4, 0x6A20, + 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE, + 0x6A14, 0x69F7, 0x69E7, 0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, + 0x69EB, 0x6A09, 0x6A04, 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, + 0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, + 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0x6F8D, + 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76, 0x6F6C, + 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, 0x6F93, 0x6F5D, + 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 0x6F90, 0x6F53, 0x6F8B, 0x6F69, + 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, + 0x71B0, 0x71A0, 0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, + 0x71A1, 0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, + 0x735E, 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x7362, + 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C, + 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, 0x761D, 0x761C, + 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E, 0x769B, 0x778D, + 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, + 0x78D4, 0x78C8, 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, + 0x79A2, 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, + 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, + 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03, + 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, 0x7FAC, + 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, + 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, + 0x824F, 0x8253, 0x8252, 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, + 0x8500, 0x8529, 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, + 0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, + 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, + 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, + 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B, + 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, 0x8773, + 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, 0x875E, 0x876D, + 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A, 0x876E, + 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, + 0x8905, 0x890C, 0x8914, 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, + 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, + 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, + 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, + 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, + 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E, + 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27, 0x8E14, 0x8E12, + 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, + 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, + 0x912F, 0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, + 0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, + 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, + 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD, + 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3, 0x92B5, 0x92E1, + 0x9325, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, 0x95AE, 0x95B0, 0x96A4, + 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, 0x975A, 0x978A, 0x978E, 0x9788, + 0x97D0, 0x97CF, 0x981E, 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, + 0x9827, 0x98B2, 0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, + 0x99DC, 0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, + 0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1, + 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, 0x9B70, + 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, 0x9CF7, 0x9D07, + 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, 0x9E83, 0x9ED3, 0x9F0F, + 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, + 0x5670, 0x5660, 0x566E, 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, + 0x5677, 0x571C, 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, + 0x58BC, 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, + 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 0x5DA9, + 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 0x5DAD, 0x5DAF, + 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, 0x5EE7, 0x5EE6, 0x5EE8, + 0x5EE5, 0x5F4B, 0x5FBC, 0x5FBB, 0x619D, 0x61A8, 0x6196, 0x61C5, 0x61B4, + 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, + 0x64D0, 0x64CF, 0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, + 0x6533, 0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, + 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, + 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, 0x6A51, + 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50, 0x6A4F, + 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56, 0x6A55, 0x6A4D, + 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, + 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, + 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, + 0x6FA5, 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, + 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, + 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF, + 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E, 0x7369, + 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F, 0x749A, 0x74A0, + 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, 0x762F, 0x762D, 0x7631, + 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, + 0x779D, 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797, + 0x78DD, 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, + 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, + 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, + 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, + 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, + 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, + 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B, + 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, + 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, + 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, + 0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, + 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, + 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C, + 0x8663, 0x8665, 0x8664, 0x87A4, 0x879B, 0x878F, 0x8797, 0x8793, 0x8792, + 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785, 0x8790, + 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, + 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, + 0x892C, 0x891F, 0x89F1, 0x8AE0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, + 0x8B14, 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, + 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0, + 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, 0x8E40, + 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, 0x8EBD, 0x8F36, + 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34, 0x9076, 0x9079, 0x907B, + 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190, 0x9191, 0x918D, + 0x918F, 0x9327, 0x931E, 0x9308, 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, + 0x933C, 0x931B, 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, + 0x92CB, 0x931D, 0x92FA, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, + 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B, 0x92FE, + 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE, 0x95B9, 0x95BA, + 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4, 0x970B, 0x9712, 0x9710, + 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, + 0x991F, 0x9927, 0x9929, 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, + 0x99E3, 0x99EA, 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, + 0x9AFA, 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, + 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88, + 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18, 0x9D22, + 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, + 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, + 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, + 0x5682, 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, + 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, + 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x61C3, 0x61B5, 0x61BC, 0x61E7, + 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3, 0x64EB, + 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, + 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, + 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, + 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, + 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, + 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, + 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD, + 0x74B1, 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, + 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, + 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, 0x78FB, + 0x78FC, 0x78FF, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, 0x79A8, + 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, + 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, + 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, + 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, + 0x7E38, 0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, + 0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, + 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, + 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, 0x85A0, + 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E, 0x8577, 0x857C, 0x8589, + 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 0x8596, 0x8586, 0x858D, 0x8599, + 0x859D, 0x8581, 0x85A2, 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, + 0x8590, 0x859F, 0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, + 0x87B9, 0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, + 0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, + 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, 0x8942, + 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0x8B18, 0x8B16, 0x8B11, + 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, + 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, + 0x8C95, 0x8C94, 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, + 0x8E47, 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, + 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364, + 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, 0x9351, + 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355, 0x9352, + 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, 0x9363, 0x9367, 0x934E, + 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, + 0x96AC, 0x9720, 0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, + 0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, + 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F, + 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4, + 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, 0x9A03, + 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, + 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, + 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30, + 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, + 0x9E8A, 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, + 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, + 0x5697, 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, + 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0, + 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503, + 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, + 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, + 0x6BC9, 0x6C0B, 0x7007, 0x700C, 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, + 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, + 0x71F9, 0x7203, 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, + 0x74B6, 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, + 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x790C, + 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC, 0x7A5F, + 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, + 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, + 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, + 0x8075, 0x81D1, 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, + 0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB, + 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, 0x85B7, + 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB, 0x87EA, 0x87E5, + 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, 0x87ED, 0x87D8, 0x87E3, + 0x87D7, 0x87D9, 0x8801, 0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, + 0x894C, 0x8946, 0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, + 0x8B30, 0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, + 0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, + 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C, 0x8E62, + 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, 0x8E5B, 0x8E5A, 0x8E61, + 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 0x8F48, 0x8F4B, 0x9128, 0x913A, + 0x913B, 0x913E, 0x91A8, 0x91A5, 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, + 0x9392, 0x93B7, 0x939B, 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, + 0x93A6, 0x9395, 0x9388, 0x9399, 0x939F, 0x9380, 0x938D, 0x93B1, 0x9391, + 0x93B2, 0x93A4, 0x93A8, 0x93B4, 0x93A3, 0x95D2, 0x95D3, 0x95D1, 0x96B3, + 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, 0x9725, + 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2, 0x97A5, 0x97D7, + 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, + 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, + 0x9A05, 0x9A07, 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, + 0x9B35, 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, + 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, + 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52, + 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01, 0x9F00, + 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C, 0x9F55, 0x5134, + 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA, + 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, + 0x5E70, 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, + 0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, + 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, + 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, 0x7022, + 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x720C, 0x720A, 0x7207, 0x7202, + 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7, + 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, + 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, + 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, + 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, + 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x820B, 0x8264, + 0x8261, 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, + 0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, + 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, + 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, + 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, 0x895D, + 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, + 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, + 0x8C43, 0x8C77, 0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, + 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, + 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, + 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC, + 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3, 0x93D5, + 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93A5, 0x93E7, 0x957D, 0x95DA, 0x95DB, + 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726, 0x97B3, 0x97B7, 0x97B6, + 0x97DD, 0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, + 0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, + 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, + 0x9A1C, 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, + 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7, + 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, 0x9D77, 0x9D81, + 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 0x9D86, 0x9D8B, 0x9D8C, + 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, 0x9D73, 0x9D7B, + 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, + 0x9EFC, 0x9F2D, 0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, + 0x56B2, 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, + 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8, + 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE, + 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, + 0x703F, 0x703A, 0x7039, 0x702A, 0x7040, 0x703B, 0x7033, 0x7041, 0x7213, + 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 0x76AB, 0x76AA, 0x76BE, 0x76ED, + 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, + 0x7924, 0x7929, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, + 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, + 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601, + 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, + 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, + 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, + 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, + 0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, + 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, + 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, + 0x93FA, 0x9409, 0x93F8, 0x943C, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6, + 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, 0x97BB, + 0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, + 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, + 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, + 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8, + 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F, 0x9D99, + 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C, + 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, + 0x9DA9, 0x9D96, 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, + 0x9EE7, 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, + 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48, + 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC, 0x6B03, + 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 0x7045, 0x7046, + 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 0x77D0, 0x792D, 0x7931, + 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, + 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, + 0x8623, 0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, + 0x8625, 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, + 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 0x8B7A, + 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D, + 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, 0x9436, 0x9429, 0x943D, + 0x9430, 0x9439, 0x942A, 0x9437, 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, + 0x95E3, 0x9735, 0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, + 0x9958, 0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, + 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, + 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7, + 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, + 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, + 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, + 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, + 0x56C6, 0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, + 0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, + 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5, + 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, 0x7C57, + 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, + 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, + 0x8828, 0x8826, 0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, + 0x8B84, 0x8B82, 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, + 0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, + 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, + 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, + 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, + 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39, + 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB, + 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, + 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, + 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, + 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, + 0x6529, 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, + 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66, + 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, 0x863E, + 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE, 0x8B8C, + 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64, 0x8F63, 0x91BC, + 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, + 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, + 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, + 0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, + 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, + 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F, 0x9F71, + 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, 0x5C6D, 0x652D, 0x66ED, + 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, + 0x77D5, 0x7938, 0x79B7, 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, + 0x8838, 0x8837, 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, + 0x8E9D, 0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, + 0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, + 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, 0x9E06, + 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, 0x9EA0, 0x9F1E, + 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, 0x65B8, 0x6B18, 0x6B19, + 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, + 0x7C6B, 0x7CF6, 0x7E9A, 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, + 0x8647, 0x8648, 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, + 0x8EA5, 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, + 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, 0x9E0F, + 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 0x9F7B, 0x9F7A, + 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, 0x8EA6, 0x91C3, 0x9474, + 0x9478, 0x9476, 0x9475, 0x9A60, 0x9B2E, 0x9C74, 0x9C73, 0x9C71, 0x9C75, + 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, + 0x883E, 0x883D, 0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, + 0x9874, 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, + 0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, + 0x9481, 0x9A69, 0x9A68, 0x9E19, 0x864B, 0x8B9F, 0x9483, 0x9C79, 0x9EB7, + 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, 0x706A, 0x7229, 0x9EA4, 0x9F7E, + 0x9F49, 0x9F98, 0xFE19, 0x223C, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, + 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, + 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, + 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, + 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, + 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, + 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, + 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, + 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, + 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, + 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0x0308, 0xFF3E, 0x30FD, 0x30FE, 0x309D, + 0x309E, 0xFFFD, 0x3005, 0x3006, 0x3007, 0x30FC, 0xFF3B, 0xFF3D, 0x273D, + 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, + 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, + 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, + 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, + 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, + 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, + 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, + 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, + 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, + 0x3092, 0x3093, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, + 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, + 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, + 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, + 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, + 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, + 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, + 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, + 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, + 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, + 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, + 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, + 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, + 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, + 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, + 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, + 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, + 0x044F, 0x21E7, 0x21B8, 0x21B9, 0x4E41, 0x0000, 0x4E5A, 0x0000, 0x5202, + 0x4491, 0x9FB0, 0x5188, 0x9FB1, 0x0000, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, + 0x00AC, 0xFFE4, 0xFF07, 0xFF02, 0x3231, 0x2116, 0x2121, 0x7881, 0x92B9, + 0x88CF, 0x58BB, 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560, + 0x256C, 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555, 0xFFFD, + 0xFFFD, 0xFFFD, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565, 0x2556, 0x255F, + 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, 0xFFFD, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0x2593, 0xFFFD, 0xFFFD, 0xFE10, 0xFE11, 0xFE12, 0xFFFD, + 0xFE14, 0xFE13, 0xFE16, 0xFE15, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, + 0xFFFD, 0xFFFD, 0x0000, 0x57BE, 0x0000, 0x713E, 0x0000, 0x69A2, 0x0000, + 0x5B74, 0x7A49, 0x0000, 0x0000, 0x7A65, 0x7A7D, 0x0000, 0x7ABB, 0x7AB0, + 0x7AC2, 0x7AC3, 0x71D1, 0x0000, 0x41CA, 0x7ADA, 0x7ADD, 0x7AEA, 0x41EF, + 0x54B2, 0x0000, 0x7B0B, 0x7B55, 0x7B29, 0x0000, 0x0000, 0x7BA2, 0x7B6F, + 0x839C, 0x0000, 0x0000, 0x7BD0, 0x8421, 0x7B92, 0xFFFD, 0x0000, 0xFFFD, + 0x8492, 0x7BFA, 0xFFFD, 0x7C35, 0x0000, 0x7C44, 0x7C83, 0x0000, 0x7CA6, + 0x0000, 0x7CC9, 0x7CC7, 0x7CE6, 0xFFFD, 0x7CF3, 0x7CF5, 0x7E67, 0x451D, + 0x0000, 0x7D5D, 0x0000, 0x7D89, 0x7DAB, 0x7135, 0x7DB3, 0x7DD6, 0x0000, + 0x0000, 0x7DE4, 0x3D13, 0x7DF5, 0x0000, 0x7DE5, 0x0000, 0xFFFD, 0x0000, + 0x0000, 0x7E6E, 0xFFFD, 0x432B, 0x946C, 0x7E27, 0x7F40, 0x7F41, 0x7F47, + 0x7936, 0x0000, 0x99E1, 0x7F97, 0x0000, 0x7FA3, 0x0000, 0x0000, 0x455C, + 0x0000, 0x0000, 0x7FFA, 0x0000, 0xFA5B, 0x8008, 0x801D, 0xFFFD, 0x802F, + 0x0000, 0x0000, 0x803B, 0x803C, 0x8061, 0x0000, 0x4989, 0x0000, 0x0000, + 0x0000, 0x6725, 0x80A7, 0x0000, 0x8107, 0x811A, 0x58B0, 0x0000, 0x6C7F, + 0x0000, 0x64E7, 0x0000, 0x8218, 0x0000, 0x6A53, 0x0000, 0x0000, 0x447A, + 0x8229, 0x0000, 0x0000, 0x4FF9, 0x0000, 0x84E2, 0x8362, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x82AA, 0x691B, 0x0000, 0x41DB, 0x854B, 0x82D0, + 0x831A, 0x0000, 0x0000, 0x36C1, 0x0000, 0x0000, 0x827B, 0x82E2, 0x8318, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3DBF, 0x831D, 0x55EC, 0x8385, + 0x450B, 0x0000, 0x83AC, 0xFFFD, 0x83D3, 0x0000, 0x6A57, 0x855A, 0x3496, + 0x0000, 0x8458, 0x0000, 0x8471, 0x3DD3, 0x44E4, 0x6AA7, 0x844A, 0x7958, + 0xFFFD, 0x0000, 0x0000, 0x0000, 0x84DE, 0xFFFD, 0x8391, 0x44A0, 0x8493, + 0x84E4, 0x0000, 0x4240, 0x0000, 0x4543, 0x8534, 0x5AF2, 0x4523, 0x4527, + 0x8573, 0x4516, 0x67BF, 0x8616, 0x0000, 0x0000, 0x85C1, 0x0000, 0x8602, + 0x0000, 0x0000, 0x0000, 0x456A, 0x8628, 0x3648, 0x0000, 0x53F7, 0x0000, + 0x867E, 0xFFFD, 0x0000, 0x87EE, 0x0000, 0x87B1, 0x87DA, 0x880F, 0x5661, + 0x866C, 0x6856, 0x460F, 0x8845, 0x8846, 0x0000, 0x0000, 0x0000, 0x885E, + 0x889C, 0x465B, 0x88B4, 0x88B5, 0x88C5, 0x0000, 0x8987, 0xFFFD, 0xFFFD, + 0xFFFD, 0x89A7, 0x89BC, 0x0000, 0x89E7, 0x0000, 0x0000, 0x8A9C, 0x7793, + 0x91FE, 0x8A90, 0x0000, 0x7AE9, 0x0000, 0x4713, 0x0000, 0x717C, 0x8B0C, + 0x8B1F, 0x0000, 0x0000, 0x8B3F, 0xFFFD, 0x8B4D, 0x8AA9, 0x0000, 0x8B90, + 0x8B9B, 0x8AAF, 0x0000, 0x4615, 0x884F, 0x8C9B, 0x0000, 0x0000, 0x0000, + 0x3725, 0x0000, 0x8CD6, 0x0000, 0x0000, 0x8D12, 0x8D03, 0x0000, 0x8CDB, + 0x705C, 0x8D11, 0x3ED0, 0x0000, 0x8DA9, 0x0000, 0x0000, 0x0000, 0x3B7C, + 0x0000, 0x0000, 0x7AE7, 0x8EAD, 0x8EB6, 0x8EC3, 0x92D4, 0x8F19, 0x8F2D, + 0x0000, 0x0000, 0x8FA5, 0x9303, 0x0000, 0x0000, 0x8FB3, 0xFFFD, 0x0000, + 0x0000, 0x0000, 0x5EF8, 0x0000, 0x8FF9, 0xFFFD, 0x0000, 0x3980, 0x0000, + 0x9037, 0x0000, 0x0000, 0x9061, 0x0000, 0x0000, 0x90A8, 0x0000, 0x90C4, + 0x0000, 0x90AE, 0xFA26, 0x9167, 0x91A9, 0x91C4, 0x7CAC, 0x0000, 0x0000, + 0x920E, 0x6C9F, 0x9241, 0x9262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x932C, 0x936B, 0x0000, 0x0000, 0x5AC3, 0x0000, 0x0000, 0x4965, + 0x9244, 0x0000, 0x0000, 0x0000, 0x9373, 0x945B, 0x8EBC, 0x9585, 0x95A6, + 0x9426, 0x95A0, 0x6FF6, 0x42B9, 0x0000, 0x0000, 0x0000, 0x49DF, 0x6C1C, + 0x967B, 0x9696, 0x416C, 0x96A3, 0x0000, 0x61DA, 0xE4AD, 0x78F5, 0x0000, + 0x96BD, 0x53CC, 0x49A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9731, 0x8642, 0x9736, 0x4A0F, 0x453D, 0x4585, 0x0000, + 0x7075, 0x5B41, 0x971B, 0xFFFD, 0x0000, 0x9757, 0x5B4A, 0x0000, 0x975F, + 0x9425, 0x50D0, 0x0000, 0x0000, 0x9789, 0x979F, 0x97B1, 0x97BE, 0x97C0, + 0x97D2, 0x97E0, 0x0000, 0x97EE, 0x741C, 0x0000, 0xFFFD, 0x97F5, 0x0000, + 0x0000, 0x4AD1, 0x9834, 0x9833, 0x984B, 0x9866, 0x3B0E, 0x0000, 0x3D51, + 0x0000, 0x0000, 0x0000, 0x98CA, 0x98B7, 0x98C8, 0x98C7, 0x4AFF, 0x0000, + 0x0000, 0x55B0, 0x98E1, 0x98E6, 0x98EC, 0x9378, 0x9939, 0x0000, 0x4B72, + 0x0000, 0x0000, 0x99F5, 0x9A0C, 0x9A3B, 0x9A10, 0x9A58, 0x0000, 0x36C4, + 0x0000, 0x0000, 0x9AE0, 0x9AE2, 0x0000, 0x9AF4, 0x4C0E, 0x9B14, 0x9B2D, + 0x0000, 0x5034, 0x9B34, 0x38C3, 0x0000, 0x9B50, 0x9B40, 0x0000, 0x5A45, + 0x0000, 0x9B8E, 0x9C02, 0x9BFF, 0x9C0C, 0x0000, 0x9DD4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9D7E, 0x9D83, 0x0000, 0x9E0E, 0x9DC4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9D39, 0x0000, 0x0000, 0x9E90, 0x9E95, + 0x9E9E, 0x9EA2, 0x4D34, 0x9EAA, 0x9EAF, 0x0000, 0x9EC1, 0x3B60, 0x39E5, + 0x3D1D, 0x4F32, 0x37BE, 0x0000, 0x9F02, 0x9F08, 0x4B96, 0x9424, 0x0000, + 0x9F17, 0x0000, 0x9F39, 0x569F, 0x568A, 0x9F45, 0x99B8, 0x0000, 0x97F2, + 0x847F, 0xFFFD, 0x9F69, 0x7ADC, 0x9F8E, 0x7216, 0x4BBE, 0x0000, 0x0000, + 0x7177, 0x0000, 0x0000, 0x0000, 0x739E, 0x0000, 0x0000, 0x799F, 0x0000, + 0x0000, 0x9369, 0x93F3, 0x0000, 0x92EC, 0x9381, 0x93CB, 0x0000, 0x0000, + 0x7217, 0x3EEB, 0x7772, 0x7A43, 0x70D0, 0x0000, 0x0000, 0x717E, 0x0000, + 0x70A3, 0x0000, 0x0000, 0x3EC7, 0x0000, 0x0000, 0x0000, 0x3722, 0x0000, + 0x0000, 0x36E1, 0x0000, 0x0000, 0x0000, 0x3723, 0x0000, 0x575B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8503, 0x0000, 0xFFFD, 0x8455, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x44F4, 0x0000, 0x0000, 0x0000, + 0x67F9, 0x3733, 0x3C15, 0x3DE7, 0x586C, 0x0000, 0x6810, 0x4057, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x54CB, 0x569E, 0x0000, 0x5692, 0x0000, + 0x0000, 0x0000, 0xFFFD, 0x0000, 0x939C, 0x4EF8, 0x512B, 0x3819, 0x0000, + 0x4EBC, 0x0000, 0xFFFD, 0x4F4B, 0x4F8A, 0x0000, 0x5A68, 0x0000, 0x0000, + 0x3999, 0x0000, 0x0000, 0x3435, 0x4F29, 0x0000, 0x0000, 0x0000, 0x8ADA, + 0x0000, 0x4E98, 0x50CD, 0x510D, 0x4FA2, 0x4F03, 0x0000, 0x0000, 0x4F42, + 0x502E, 0x506C, 0x5081, 0x4FCC, 0x4FE5, 0x5058, 0x50FC, 0x6E76, 0x0000, + 0x0000, 0x0000, 0x6D72, 0x0000, 0x0000, 0x51A8, 0x51C3, 0x0000, 0x44DD, + 0x0000, 0x0000, 0x0000, 0x8D7A, 0x0000, 0x0000, 0x5259, 0x52A4, 0x0000, + 0x52E1, 0xFFFD, 0x467A, 0x718C, 0x0000, 0x0000, 0x0000, 0x0000, 0x69D1, + 0x0000, 0xFFFD, 0x3EDE, 0x7499, 0x7414, 0x7456, 0x7398, 0x4B8E, 0x0000, + 0x0000, 0x53D0, 0x3584, 0x720F, 0x0000, 0x55B4, 0x0000, 0x54CD, 0x0000, + 0x571D, 0x925D, 0x96F4, 0x57DD, 0x578D, 0x577F, 0x363E, 0x58CB, 0x5A99, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5A2C, 0x59B8, 0x5A7E, 0x5ACF, 0x5A12, + 0x0000, 0x0000, 0x0000, 0x0000, 0x36F5, 0x6D05, 0x7443, 0x5A21, 0x0000, + 0x5A81, 0x0000, 0x0000, 0x93E0, 0x748C, 0x0000, 0x7105, 0x4972, 0x9408, + 0x0000, 0x93BD, 0x37A0, 0x5C1E, 0x5C9E, 0x5E5E, 0x5E48, 0x0000, 0x0000, + 0x0000, 0x5ECD, 0x5B4F, 0x0000, 0x0000, 0x3701, 0x0000, 0x36DD, 0x0000, + 0x36D3, 0x812A, 0x0000, 0x0000, 0x0000, 0x0000, 0x5F0C, 0x5F0E, 0x0000, + 0x0000, 0x5A6B, 0x0000, 0x5B44, 0x0000, 0x8860, 0x607E, 0x0000, 0x0000, + 0x5FDB, 0x3EB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x61C0, 0x0000, 0x0000, + 0x0000, 0x6199, 0x6198, 0x6075, 0x0000, 0x0000, 0x0000, 0x0000, 0x6471, + 0x0000, 0x0000, 0x3A29, 0x0000, 0x0000, 0x0000, 0x0000, 0x6337, 0x64B6, + 0x6331, 0x63D1, 0x0000, 0x0000, 0x62A4, 0x0000, 0x643B, 0x656B, 0x6972, + 0x3BF4, 0x0000, 0x0000, 0x0000, 0x0000, 0x550D, 0x0000, 0x0000, 0x0000, + 0x66CE, 0x0000, 0x0000, 0x3AE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x78EE, 0x0000, 0x0000, 0x0000, 0x3464, 0x0000, 0x0000, 0x0000, + 0x668E, 0x0000, 0x666B, 0x4B93, 0x6630, 0x0000, 0x0000, 0x6663, 0x0000, + 0x0000, 0x661E, 0x0000, 0x38D1, 0x0000, 0x0000, 0x3B99, 0x0000, 0x0000, + 0x74D0, 0x3B96, 0x0000, 0x68B6, 0xFFFD, 0x3BC4, 0x6ABE, 0x0000, 0x0000, + 0x6A33, 0x6A52, 0x6AC9, 0x6B05, 0x0000, 0x6511, 0x6898, 0x6A4C, 0x3BD7, + 0x6A7A, 0x6B57, 0x0000, 0x0000, 0x93A0, 0x92F2, 0x0000, 0x0000, 0x9289, + 0x0000, 0x0000, 0x9467, 0x6DA5, 0x6F0B, 0xFFFD, 0x0000, 0x3D8F, 0x6E04, + 0x0000, 0x5A3D, 0x6E0A, 0x5847, 0x6D24, 0x7842, 0x713B, 0x0000, 0x0000, + 0x70F1, 0x7250, 0x7287, 0x7294, 0x0000, 0x0000, 0x5179, 0x0000, 0x0000, + 0x747A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3F06, 0x3EB1, 0x0000, + 0x0000, 0x0000, 0x60A7, 0x3EF3, 0x74CC, 0x743C, 0x9387, 0x7437, 0x449F, + 0x0000, 0x4551, 0x7583, 0x3F63, 0x0000, 0x0000, 0x3F58, 0x7555, 0x7673, + 0x0000, 0xFFFD, 0x7468, 0x0000, 0x0000, 0x0000, 0x3AFB, 0x3DCD, 0x0000, + 0x3EFF, 0x0000, 0x0000, 0x91FA, 0x5732, 0x9342, 0x0000, 0x0000, 0x50DF, + 0x0000, 0x0000, 0x7778, 0x0000, 0x770E, 0x770F, 0x777B, 0x0000, 0x0000, + 0x3A5E, 0x0000, 0x7438, 0x749B, 0x3EBF, 0x0000, 0x0000, 0x40C8, 0x0000, + 0x0000, 0x9307, 0x0000, 0x781E, 0x788D, 0x7888, 0x78D2, 0x73D0, 0x7959, + 0x0000, 0x0000, 0x410E, 0xFFFD, 0xFFFD, 0x79A5, 0x6A2D, 0x0000, 0x7A3A, + 0x79F4, 0x416E, 0x0000, 0x4132, 0x9235, 0x79F1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3597, 0x556B, 0x3570, 0x36AA, 0x0000, 0x0000, 0x7AE2, + 0x5A59, 0x0000, 0x0000, 0x0000, 0x5A0D, 0x0000, 0x78F0, 0x5A2A, 0x0000, + 0x7AFE, 0x41F9, 0x7C5D, 0x7C6D, 0x4211, 0x0000, 0x0000, 0x0000, 0x7CCD, + 0x0000, 0x0000, 0x7C8E, 0x7C7C, 0x7CAE, 0x6AB2, 0x7DDC, 0x7E07, 0x7DD3, + 0x7F4E, 0x0000, 0x0000, 0x0000, 0x7D97, 0x0000, 0x426A, 0x0000, 0x0000, + 0x67D6, 0x0000, 0x0000, 0x57C4, 0x0000, 0x0000, 0x7FDD, 0x7B27, 0x0000, + 0x0000, 0x0000, 0x7B0C, 0x0000, 0x99E6, 0x8645, 0x9A63, 0x6A1C, 0x0000, + 0x0000, 0x0000, 0x9A1F, 0x0000, 0x8495, 0x0000, 0x0000, 0x44EA, 0x8137, + 0x4402, 0x80C6, 0x8109, 0x8142, 0x0000, 0x98C3, 0x0000, 0x8262, 0x8265, + 0x0000, 0x8453, 0x0000, 0x8610, 0x0000, 0x5A86, 0x417F, 0x0000, 0x5B2B, + 0x0000, 0x5AE4, 0x0000, 0x86A0, 0x0000, 0x0000, 0x882D, 0x0000, 0x5A02, + 0x886E, 0x4F45, 0x8887, 0x88BF, 0x88E6, 0x8965, 0x894D, 0x0000, 0x8954, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3EAD, 0x84A3, 0x46F5, + 0x46CF, 0x37F2, 0x8A3D, 0x8A1C, 0x0000, 0x5F4D, 0x922B, 0x0000, 0x65D4, + 0x7129, 0x70C4, 0x0000, 0x9D6D, 0x8C9F, 0x8CE9, 0x0000, 0x599A, 0x77C3, + 0x59F0, 0x36D4, 0x8E2A, 0x8EA7, 0x0000, 0x8F30, 0x8F4A, 0x42F4, 0x6C58, + 0x6FBB, 0x0000, 0x489B, 0x6F79, 0x6E8B, 0x0000, 0x9BE9, 0x36B5, 0x0000, + 0x90BB, 0x48B4, 0x5571, 0x4906, 0x91BB, 0x9404, 0x0000, 0x4062, 0x0000, + 0x9427, 0x0000, 0x0000, 0x84E5, 0x8A2B, 0x9599, 0x95A7, 0x9597, 0x9596, + 0x0000, 0x7445, 0x3EC2, 0x0000, 0x0000, 0x0000, 0x3EE7, 0x0000, 0x968F, + 0x0000, 0x0000, 0x0000, 0x3ECC, 0x0000, 0x0000, 0x0000, 0x7412, 0x746B, + 0x3EFC, 0x9741, 0x0000, 0x6847, 0x4A1D, 0x0000, 0x0000, 0xFFFD, 0x9368, + 0x0000, 0x0000, 0x0000, 0x0000, 0x92BA, 0x5B11, 0x8B69, 0x493C, 0x73F9, + 0x0000, 0x979B, 0xFFFD, 0x9938, 0x0000, 0x5DC1, 0x0000, 0x0000, 0x981F, + 0x0000, 0x92F6, 0x0000, 0x91E5, 0x44C0, 0x0000, 0x0000, 0x0000, 0x98DC, + 0x0000, 0x3F00, 0x922A, 0x4925, 0x8414, 0x993B, 0x994D, 0x0000, 0x3DFD, + 0xFFFD, 0x4B6F, 0x99AA, 0x9A5C, 0x0000, 0x0000, 0x6A8F, 0x9A21, 0x5AFE, + 0x9A2F, 0x0000, 0x4B90, 0x0000, 0x99BC, 0x4BBD, 0x4B97, 0x937D, 0x5872, + 0x0000, 0x5822, 0x0000, 0x0000, 0x7844, 0x0000, 0x0000, 0x68C5, 0x3D7D, + 0x9458, 0x3927, 0x6150, 0x0000, 0x0000, 0x6107, 0x9C4F, 0x9C53, 0x9C7B, + 0x9C35, 0x9C10, 0x9B7F, 0x9BCF, 0x0000, 0x9B9F, 0x0000, 0x0000, 0x9D21, + 0x4CAE, 0x0000, 0x9E18, 0x4CB0, 0x9D0C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9DA5, 0x84BD, 0x0000, 0x0000, 0x0000, 0x85FC, 0x4533, 0x0000, 0x0000, + 0x0000, 0x8420, 0x85EE, 0x0000, 0x0000, 0x0000, 0x79E2, 0x0000, 0x0000, + 0x0000, 0x3D62, 0x93DB, 0x92BE, 0x9348, 0x0000, 0x78B9, 0x9277, 0x944D, + 0x4FE4, 0x3440, 0x9064, 0x0000, 0x783D, 0x7854, 0x78B6, 0x784B, 0x0000, + 0x0000, 0x0000, 0x369A, 0x4F72, 0x6FDA, 0x6FD9, 0xFFFD, 0x701E, 0x5414, + 0x0000, 0x57BB, 0x58F3, 0x578A, 0x9D16, 0x57D7, 0x7134, 0x34AF, 0x0000, + 0x71EB, 0x0000, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x610C, 0x5ACE, 0x5A0B, + 0x42BC, 0x0000, 0x372C, 0x4B7B, 0x0000, 0x93BB, 0x93B8, 0x0000, 0x0000, + 0x8472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5994, 0x0000, 0x0000, + 0x7DA8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92E5, 0x73E2, 0x3EE9, + 0x74B4, 0x0000, 0x0000, 0x3EE1, 0x0000, 0x6AD8, 0x73F3, 0x73FB, 0x3ED6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7448, 0x0000, + 0x70A5, 0x0000, 0x9284, 0x73E6, 0x935F, 0x0000, 0x9331, 0x0000, 0x0000, + 0x9386, 0x0000, 0x0000, 0x4935, 0x0000, 0x716B, 0x0000, 0x0000, 0x56A4, + 0x0000, 0x0000, 0x0000, 0x5502, 0x79C4, 0x0000, 0x7DFE, 0x0000, 0x0000, + 0x0000, 0x452E, 0x9401, 0x370A, 0x0000, 0x0000, 0x59B0, 0x0000, 0x0000, + 0x0000, 0x5AA1, 0x36E2, 0x0000, 0x36B0, 0x925F, 0x5A79, 0x0000, 0x0000, + 0x9374, 0x3CCD, 0x0000, 0x4A96, 0x398A, 0x50F4, 0x3D69, 0x3D4C, 0x0000, + 0x7175, 0x42FB, 0x0000, 0x6E0F, 0x0000, 0x44EB, 0x6D57, 0x0000, 0x7067, + 0x6CAF, 0x3CD6, 0x0000, 0x0000, 0x6E02, 0x6F0C, 0x3D6F, 0x0000, 0x7551, + 0x36BC, 0x34C8, 0x4680, 0x3EDA, 0x4871, 0x59C4, 0x926E, 0x493E, 0x8F41, + 0x0000, 0x0000, 0x5812, 0x57C8, 0x36D6, 0x0000, 0x70FE, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x68B9, 0x6967, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6A1A, 0x0000, 0x0000, 0x843E, 0x44DF, + 0x44CE, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x833D, 0x0000, + 0x83ED, 0x0000, 0x0000, 0x0000, 0x5989, 0x5A82, 0x0000, 0x5A61, 0x5A71, + 0x0000, 0x0000, 0x372D, 0x59EF, 0x0000, 0x36C7, 0x718E, 0x9390, 0x669A, + 0x0000, 0x5A6E, 0x5A2B, 0x0000, 0x6A2B, 0x0000, 0x0000, 0x0000, 0x0000, + 0x711D, 0x0000, 0x0000, 0x4FB0, 0x0000, 0x5CC2, 0x0000, 0x0000, 0x0000, + 0x6A0C, 0x0000, 0x0000, 0xFFFD, 0x7133, 0x0000, 0x3DA5, 0x6CDF, 0x0000, + 0x59EB, 0x5F5C, 0x0000, 0x7CD3, 0x0000, 0x0000, 0x0000, 0x906C, 0x81F6, + 0x770C, 0x6CA2, 0x56FD, 0x5869, 0x6761, 0x5C5E, 0x58F2, 0x70B9, 0x6803, + 0x8FBB, 0x8FBC, 0x4E21, 0x7B39, 0x3DCC, 0x732A, 0x7560, 0x583A, 0x82A6, + 0x698A, 0x60E3, 0x4EEE, 0x99C4, 0x9EBF, 0x5301, 0x67A0, 0x60E8, 0x51B4, + 0x7A83, 0x9C3A, 0x7AC8, 0x691A, 0x59AC, 0x5840, 0x546A, 0x60E7, 0x567A, + 0x6955, 0x9C2F, 0x87A5, 0x5C20, 0x5E0B, 0x671E, 0x84AD, 0x8B81, 0x4E78, + 0x62C3, 0x6855, 0xFFFD, 0x82FD, 0x89A5, 0x8FA0, 0x97B8, 0x9847, 0x9ABD, + 0x5FB1, 0x6648, 0x66BF, 0x0000, 0xFFFD, 0x0000, 0xFFFD, 0xFFFD, 0x0000, + 0x670E, 0x6918, 0x0000, 0x0000, 0x0000, 0x0000, 0x48D0, 0x4AB8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x51D2, 0x0000, 0x599F, 0x0000, 0x3BBE, 0x0000, + 0x399B, 0x0000, 0x0000, 0x3762, 0x0000, 0x8B5E, 0x0000, 0xFFFD, 0x7209, + 0x0000, 0x0000, 0x8EDA, 0x528F, 0x7171, 0x0000, 0x0000, 0x55BC, 0x0000, + 0x3473, 0x0000, 0x4718, 0x0000, 0x5066, 0x34FB, 0x0000, 0xFFFD, 0x477C, + 0x0000, 0x0000, 0xFFFD, 0x0000, 0x9056, 0x0000, 0x8B62, 0x5D5B, 0x0000, + 0xFFFD, 0x0000, 0x8AEA, 0x0000, 0x0000, 0x4BC0, 0x0000, 0x9465, 0x0000, + 0x6195, 0x5A27, 0x0000, 0x0000, 0x0000, 0x4E6A, 0x0000, 0x9656, 0x6D8F, + 0x0000, 0x8977, 0x0000, 0xFFFD, 0x7B42, 0x0000, 0x0000, 0xFFFD, 0x7A45, + 0x9A26, 0x365F, 0x0000, 0x0000, 0x7983, 0x5D2C, 0x0000, 0xFFFD, 0x46D0, + 0x753B, 0x8865, 0x58B6, 0x371C, 0x0000, 0x3C54, 0x9281, 0x0000, 0x9330, + 0x0000, 0x6C39, 0x0000, 0x8827, 0x88F5, 0x0000, 0x0000, 0x0000, 0x6EB8, + 0x0000, 0x0000, 0x39A4, 0xFFFD, 0xFFFD, 0x453F, 0x66B6, 0x0000, 0x0000, + 0x8943, 0x40DF, 0x0000, 0x39A1, 0x0000, 0x0000, 0x0000, 0x71AD, 0x8366, + 0x0000, 0xFFFD, 0x4CB7, 0x0000, 0x0000, 0x0000, 0x7B43, 0x797E, 0x6FB5, + 0x0000, 0x6A03, 0x0000, 0x53A2, 0x0000, 0x93BF, 0x6836, 0x975D, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5D85, 0x0000, 0x5715, 0x9823, 0x0000, 0x5DAB, + 0x0000, 0x65BE, 0x69D5, 0x53D2, 0x0000, 0x0000, 0x3C11, 0x6736, 0x0000, + 0x35CA, 0x48FA, 0xFFFD, 0x7808, 0x9255, 0x43F2, 0x43DF, 0x59F8, 0xFFFD, + 0x568B, 0x0000, 0x9012, 0x55C1, 0x4509, 0x7E7F, 0x6F56, 0x6AB1, 0x34E4, + 0x0000, 0x373A, 0xFFFD, 0x0000, 0x0000, 0x3DEB, 0x0000, 0x0000, 0x56BF, + 0x8E0E, 0x5B6D, 0x63DE, 0xFFFD, 0x6530, 0x562D, 0x541A, 0x0000, 0x4C7D, + 0x5622, 0x561E, 0x7F49, 0x5975, 0x0000, 0x8770, 0x8117, 0x9D5E, 0x8D18, + 0x763B, 0x9C45, 0x764E, 0x77B9, 0x9345, 0x5432, 0x8148, 0x82F7, 0x5625, + 0x8132, 0x8418, 0x80BD, 0x55EA, 0x7962, 0x5643, 0x5416, 0x0000, 0x35CE, + 0x5605, 0x55F1, 0x66F1, 0x0000, 0x362D, 0x7534, 0x55F0, 0x55BA, 0x5497, + 0x5572, 0x0000, 0x0000, 0x5ED0, 0x0000, 0x0000, 0x0000, 0x9EAB, 0x7D5A, + 0xFFFD, 0x0000, 0x629D, 0x976D, 0x5494, 0x8CCD, 0x71F6, 0x9176, 0x63FC, + 0x63B9, 0x63FE, 0x5569, 0x0000, 0x9C72, 0x0000, 0x519A, 0x34DF, 0x0000, + 0x51A7, 0x544D, 0x551E, 0x5513, 0x7666, 0x8E2D, 0x0000, 0x75B1, 0x80B6, + 0x8804, 0xFFFD, 0x88C7, 0x81B6, 0x841C, 0x44EC, 0x7304, 0x830B, 0x567B, + 0x9170, 0x9208, 0x0000, 0x7266, 0x474E, 0x0000, 0x40FA, 0x9C5D, 0x651F, + 0x48F3, 0x0000, 0x0000, 0xFFFD, 0x0000, 0xED2B, 0x0000, 0x71A3, 0x7E8E, + 0x9D50, 0x3577, 0x6CB2, 0x5367, 0x39DC, 0x0000, 0x822D, 0x544B, 0xED43, + 0x3A52, 0x7374, 0x0000, 0x4D09, 0x9BED, 0xFFFD, 0x4C5B, 0x0000, 0x845C, + 0x0000, 0x632E, 0x7D25, 0x3A2A, 0x9008, 0x52CC, 0x3E74, 0x367A, 0x45E9, + 0x0000, 0x7640, 0x5AF0, 0x0000, 0x787A, 0x0000, 0x58A7, 0x40BF, 0x567C, + 0x9B8B, 0x5D74, 0x7654, 0x0000, 0x9E85, 0x4CE1, 0xFFFD, 0x37FB, 0x6119, + 0x0000, 0xED73, 0x565D, 0x0000, 0x5234, 0x35AD, 0xFFFD, 0x9D7C, 0x7C56, + 0x9B39, 0x57DE, 0x5C53, 0x64D3, 0x0000, 0x0000, 0x86AD, 0x0000, 0x0000, + 0xED8C, 0x51FE, 0x0000, 0x5D8E, 0x9703, 0x0000, 0x9E81, 0x904C, 0x7B1F, + 0x9B02, 0x5CD1, 0x7BA3, 0x6268, 0x6335, 0x9AFF, 0x7BCF, 0x9B2A, 0x7C7E, + 0xFFFD, 0x7C42, 0x7C86, 0x9C15, 0x7BFC, 0x9B09, 0xFFFD, 0x9C2E, 0x9F5A, + 0x5573, 0x5BC3, 0x4FFD, 0x9E98, 0x4FF2, 0x5260, 0x52D1, 0x5767, 0x5056, + 0x59B7, 0x5E12, 0x97C8, 0x9DAB, 0x8F5C, 0x5469, 0x97B4, 0x9940, 0x97BA, + 0x532C, 0x6130, 0x692C, 0x53DA, 0x9C0A, 0x9D02, 0x4C3B, 0x9641, 0x6980, + 0x50A6, 0x7546, 0x0000, 0x99DA, 0x5273, 0xEDC9, 0x9159, 0x9681, 0x915C, + 0xEDCD, 0x9151, 0x0000, 0x637F, 0x6ACA, 0x5611, 0x918E, 0x757A, 0x6285, + 0x734F, 0x7C70, 0x0000, 0xEDDC, 0x76D6, 0x9B9D, 0x4E2A, 0x0000, 0x83BE, + 0x8842, 0xEDE4, 0x5C4A, 0x69C0, 0xFFFD, 0xFFFD, 0x521F, 0x5DF5, 0x4ECE, + 0x6C31, 0x0000, 0x4F39, 0x549C, 0xFFFD, 0x529A, 0x8D82, 0x35FE, 0xFFFD, + 0x35F3, 0xEDF6, 0x6B52, 0x917C, 0x9FA5, 0x9B97, 0x982E, 0x98B4, 0x9ABA, + 0x9EA8, 0x9E84, 0x7B14, 0xEE02, 0x6BFA, 0x8818, 0x7F78, 0xEE06, 0x5620, + 0x0000, 0x8E77, 0x9F53, 0xEE0B, 0x8DD4, 0x8E4F, 0x9E1C, 0x8E01, 0x6282, + 0x0000, 0x8E28, 0x8E75, 0x7AD3, 0x7A3E, 0x78D8, 0x6CEA, 0x8A67, 0x7607, + 0x9F26, 0x6CCE, 0x87D6, 0x75C3, 0x0000, 0x7853, 0x8D0C, 0x72E2, 0x7371, + 0x8B2D, 0x7302, 0x74F1, 0x8CEB, 0x0000, 0x862F, 0x5FBA, 0x88A0, 0x44B7, + 0xEE2F, 0x0000, 0xEE32, 0x8A7E, 0x0000, 0xEE35, 0x60FD, 0x7667, 0x9AD7, + 0x9D44, 0x936E, 0x9B8F, 0x87F5, 0xEE3D, 0xFFFD, 0x8CF7, 0x732C, 0x9721, + 0x9BB0, 0x35D6, 0x72B2, 0x4C07, 0x7C51, 0x994A, 0x6159, 0x4C04, 0x9E96, + 0x617D, 0xEE4D, 0x575F, 0x616F, 0x62A6, 0x6239, 0xFFFD, 0x3A5C, 0x61E2, + 0x53AA, 0x6364, 0x6802, 0x35D2, 0x5D57, 0x8FDA, 0x0000, 0xEE5E, 0x50D9, + 0x7906, 0x5332, 0x9638, 0x0000, 0x4065, 0xEE66, 0x77FE, 0xEE68, 0x7CC2, + 0x0000, 0x7CDA, 0x7A2D, 0x8066, 0x8063, 0x7D4D, 0x7505, 0x74F2, 0x8994, + 0x821A, 0x670C, 0x8062, 0x0000, 0x805B, 0x74F0, 0x8103, 0x7724, 0x8989, + 0x0000, 0x7553, 0x87A9, 0x87CE, 0x81C8, 0x878C, 0x8A49, 0x8CAD, 0x8B43, + 0x772B, 0x74F8, 0x84DA, 0x69B2, 0x8DA6, 0xEE8C, 0x89A9, 0xFFFD, 0x6DB9, + 0x87C1, 0x0000, 0x74E7, 0x3DDB, 0x7176, 0x60A4, 0x619C, 0x3CD1, 0xFFFD, + 0x6077, 0xEE9A, 0x7F71, 0x0000, 0x60E9, 0x4B7E, 0x0000, 0x92DB, 0x0000, + 0x0000, 0x854C, 0x42B5, 0x73EF, 0x51B5, 0x3649, 0x0000, 0x0000, 0x9344, + 0x0000, 0x82EE, 0x0000, 0x783C, 0x6744, 0x62DF, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4FAB, 0x0000, 0x5008, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xFFFD, 0x0000, 0x5FA4, 0x0000, 0x0000, 0x6EDB, 0x0000, 0x50DE, + 0x5101, 0x347A, 0x510E, 0x986C, 0x3743, 0x8416, 0x0000, 0x0000, 0x5160, + 0x0000, 0x516A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5B82, 0x877D, 0x0000, 0x0000, 0x51B2, 0x51B8, 0x9D34, 0x51C9, 0x51CF, + 0x51D1, 0x3CDC, 0x51D3, 0x0000, 0x51B3, 0xFFFD, 0xFFFD, 0x51ED, 0x83CD, + 0x693E, 0x0000, 0x5F7B, 0x520B, 0x5226, 0x523C, 0x52B5, 0x5257, 0x5294, + 0x52B9, 0x52C5, 0x7C15, 0x8542, 0x52E0, 0x860D, 0x0000, 0x0000, 0x0000, + 0x5549, 0x6ED9, 0x0000, 0x0000, 0x0000, 0x5333, 0xFFFD, 0x0000, 0x6CCB, + 0x0000, 0x681B, 0x73D5, 0x604A, 0x3EAA, 0x38CC, 0x0000, 0x71DD, 0x44A2, + 0x536D, 0x5374, 0x0000, 0x537E, 0x0000, 0x0000, 0x0000, 0x77E6, 0x5393, + 0x0000, 0x53A0, 0x53AB, 0x53AE, 0x73A7, 0x0000, 0x3F59, 0x739C, 0x53C1, + 0x53C5, 0x6C49, 0x4E49, 0x57FE, 0x53D9, 0x3AAB, 0x0000, 0x53E0, 0x0000, + 0x0000, 0x53F6, 0x0000, 0x5413, 0x7079, 0x552B, 0x6657, 0x6D5B, 0x546D, + 0x0000, 0x0000, 0x555D, 0x548F, 0x54A4, 0x47A6, 0x0000, 0x0000, 0x3DB4, + 0x0000, 0x0000, 0x0000, 0x5547, 0x4CED, 0x542F, 0x7417, 0x5586, 0x55A9, + 0xFFFD, 0x0000, 0x0000, 0x4552, 0x0000, 0x66B3, 0x0000, 0x5637, 0x66CD, + 0x0000, 0x66A4, 0xFFFD, 0x564D, 0x564F, 0x78F1, 0x56F1, 0x9787, 0x53FE, + 0x5700, 0x56EF, 0x56ED, 0x0000, 0x3623, 0x0000, 0x5746, 0x0000, 0x6C6E, + 0x708B, 0x5742, 0x36B1, 0x0000, 0x57E6, 0x0000, 0x5803, 0x0000, 0x0000, + 0x5826, 0x0000, 0x581F, 0x58AA, 0x3561, 0x58E0, 0x58DC, 0x0000, 0x58FB, + 0x5BFF, 0x5743, 0x0000, 0x0000, 0x93D3, 0x35A1, 0x591F, 0x68A6, 0x36C3, + 0x6E59, 0x0000, 0x5A24, 0xFFFD, 0x0000, 0x8505, 0x59C9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x59D9, 0x0000, 0x0000, 0x0000, 0x6D71, 0x0000, 0x0000, + 0x59F9, 0x0000, 0x5AAB, 0x5A63, 0x36E6, 0x0000, 0xFFFD, 0x3708, 0x5A96, + 0x7465, 0x5AD3, 0x0000, 0x0000, 0x0000, 0x3732, 0x0000, 0x5E83, 0x52D0, + 0x5B76, 0x6588, 0x5B7C, 0x0000, 0x4004, 0x485D, 0x0000, 0x5BD5, 0x0000, + 0x0000, 0x0000, 0x5BF3, 0x5B9D, 0x4D10, 0x5C05, 0x0000, 0x5C13, 0x73CE, + 0x5C14, 0x0000, 0x0000, 0x5C49, 0x48DD, 0x5C85, 0x5CE9, 0x5CEF, 0x5D8B, + 0x0000, 0x0000, 0x5D10, 0x5D18, 0x5D46, 0x0000, 0x5CBA, 0x5DD7, 0x82FC, + 0x382D, 0x0000, 0x0000, 0x0000, 0x8287, 0x3836, 0x3BC2, 0x5E2E, 0x6A8A, + 0xFFFD, 0xE12F, 0x0000, 0x0000, 0x53A6, 0x4EB7, 0xFFFD, 0x53A8, 0x0000, + 0x5E09, 0xE138, 0x0000, 0x5EF9, 0x5EFB, 0x38A0, 0x5EFC, 0x683E, 0x941B, + 0x5F0D, 0x0000, 0x0000, 0x3ADE, 0x0000, 0x5F3A, 0x0000, 0x0000, 0x0000, + 0x5F63, 0x0000, 0x5F72, 0x9340, 0x0000, 0x5FA7, 0x5DB6, 0x3D5F, 0x0000, + 0x0000, 0x0000, 0x0000, 0x91D6, 0x0000, 0x0000, 0x6031, 0x6685, 0x3963, + 0x3DC7, 0x3639, 0x5790, 0x0000, 0x7971, 0x3E40, 0x609E, 0xFFFD, 0x60EA, + 0x0000, 0x0000, 0x0000, 0x74A4, 0x50E1, 0x5AA0, 0x6164, 0x6142, 0x0000, + 0x0000, 0x6181, 0x51F4, 0x0000, 0x6187, 0x5BAA, 0x0000, 0x0000, 0x61D3, + 0x0000, 0x0000, 0x61D0, 0x3932, 0x0000, 0x0000, 0x6023, 0x615C, 0x651E, + 0x638B, 0x0000, 0x62C5, 0x0000, 0x62D5, 0x0000, 0x636C, 0x0000, 0x3A17, + 0x6438, 0x63F8, 0x0000, 0x0000, 0x6F8A, 0x0000, 0xFFFD, 0x0000, 0x64E1, + 0x64E5, 0x947B, 0x3A66, 0x643A, 0x3A57, 0x654D, 0x6F16, 0x0000, 0x0000, + 0x6585, 0x656D, 0x655F, 0xFFFD, 0x65B5, 0x0000, 0x4B37, 0x65D1, 0x40D8, + 0x0000, 0xE1AB, 0x65E3, 0x5FDF, 0x0000, 0x6618, 0x0000, 0x0000, 0x6644, + 0x0000, 0x0000, 0x664B, 0x0000, 0x6667, 0x0000, 0x6673, 0xFA12, 0x0000, + 0x0000, 0x0000, 0x0000, 0x77C5, 0x0000, 0x99A4, 0x6702, 0x0000, 0x0000, + 0x69FA, 0x0000, 0x0000, 0x6767, 0x6762, 0x0000, 0x0000, 0x67D7, 0x44E9, + 0x6822, 0x6E50, 0x923C, 0x6801, 0x0000, 0x0000, 0x685D, 0x0000, 0x69E1, + 0x6A0B, 0x0000, 0x6973, 0x68C3, 0x0000, 0x6901, 0x6900, 0x3A01, 0x0000, + 0x3B80, 0x67AC, 0x6961, 0x0000, 0x42FC, 0x6936, 0x6998, 0x3BA1, 0x0000, + 0x8363, 0x5090, 0x69F9, 0x0000, 0x0000, 0x6A45, 0x0000, 0x6A9D, 0x3BF3, + 0x67B1, 0x6AC8, 0x0000, 0x3C0D, 0x6B1D, 0x0000, 0x60DE, 0x6B35, 0x6B74, + 0x0000, 0x6EB5, 0x0000, 0xFFFD, 0x0000, 0x3740, 0x5421, 0x0000, 0x6BE1, + 0x0000, 0x6BDC, 0x6C37, 0x0000, 0x0000, 0x0000, 0x6C5A, 0x8226, 0x6C79, + 0x0000, 0x44C5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x36E5, 0x3CEB, + 0x0000, 0x9B83, 0x0000, 0x0000, 0x7F8F, 0x6837, 0x0000, 0x0000, 0x0000, + 0x6D96, 0x6D5C, 0x6E7C, 0x6F04, 0x0000, 0x0000, 0x0000, 0x8533, 0x0000, + 0x51C7, 0xFFFD, 0xFFFD, 0x842E, 0x0000, 0x0000, 0x0000, 0x7453, 0x0000, + 0x79CC, 0x6E4F, 0x5A91, 0x0000, 0x6FF8, 0x370D, 0x6F9D, 0x0000, 0x6EFA, + 0x0000, 0x0000, 0x4555, 0x93F0, 0x6F44, 0x6F5C, 0x3D4E, 0x6F74, 0x0000, + 0x3D3B, 0x6F9F, 0x0000, 0x6FD3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x51DF, 0xE251, 0xE252, 0x0000, 0x0000, 0x704B, 0x707E, 0x70A7, + 0xFFFD, 0x70CC, 0x70D5, 0x70D6, 0x70DF, 0x4104, 0x3DE8, 0x71B4, 0x7196, + 0x0000, 0x712B, 0x7145, 0x5A88, 0x714A, 0xFA48, 0x0000, 0x714F, 0x9362, + 0x0000, 0x712C, 0x0000, 0x0000, 0x0000, 0x71BA, 0x0000, 0x70BD, 0x720E, + 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0x0000, 0x722E, 0x7240, + 0x0000, 0x68BD, 0x7255, 0x7257, 0x3E55, 0x0000, 0x680D, 0x6F3D, 0x7282, + 0xFFFD, 0x732B, 0x0000, 0x0000, 0x48ED, 0x0000, 0x7328, 0x732E, 0x73CF, + 0x73AA, 0x0000, 0x0000, 0x73C9, 0x7449, 0x0000, 0x0000, 0x0000, 0x6623, + 0x36C5, 0x0000, 0x0000, 0x0000, 0x73F7, 0x7415, 0x6903, 0x0000, 0x7439, + 0x3ED7, 0x0000, 0x0000, 0x7460, 0x0000, 0x7447, 0x73E4, 0x7476, 0x83B9, + 0x746C, 0x7474, 0x93F1, 0x6A2C, 0x7482, 0x4953, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5B46, 0x0000, 0x0000, 0x74C8, 0x0000, 0x750E, 0x751E, 0x0000, + 0x0000, 0x5BD7, 0x0000, 0x9385, 0x754D, 0x754A, 0x7567, 0x756E, 0x0000, + 0x3F04, 0x0000, 0x758E, 0x745D, 0x759E, 0x75B4, 0x7602, 0x762C, 0x7651, + 0x764F, 0x766F, 0xE2D3, 0x0000, 0x7690, 0x81EF, 0x37F8, 0x0000, 0x0000, + 0x76A1, 0x76A5, 0x76B7, 0x76CC, 0x0000, 0x8462, 0x0000, 0x0000, 0x0000, + 0x771E, 0x7726, 0x7740, 0x64AF, 0x0000, 0x7758, 0x0000, 0x77AF, 0x0000, + 0x0000, 0x0000, 0x77F4, 0xFFFD, 0x68CA, 0x78AF, 0x78C7, 0x78D3, 0x96A5, + 0x792E, 0x0000, 0x78D7, 0x7934, 0x78B1, 0x0000, 0x8FB8, 0x8884, 0x0000, + 0x7986, 0x8900, 0x6902, 0x7980, 0x0000, 0x799D, 0x0000, 0x793C, 0x79A9, + 0x6E2A, 0x0000, 0x3EA8, 0x79C6, 0x0000, 0x79D4, 0xFFFD, 0x5525, 0xFFFD, + 0x0000, 0x0000, 0x0000, 0x5590, 0x0000, 0x39EC, 0x0000, 0x8E46, 0x0000, + 0x0000, 0xFFFD, 0x0000, 0x777A, 0x0000, 0x3A34, 0x47D5, 0x0000, 0x0000, + 0x0000, 0x64DD, 0x0000, 0x0000, 0x0000, 0xFFFD, 0x648D, 0x8E7E, 0x0000, + 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x0000, + 0x47F4, 0x0000, 0x0000, 0x9AB2, 0x3A67, 0x0000, 0x3FED, 0x3506, 0x0000, + 0x0000, 0xFFFD, 0x0000, 0x9D6E, 0x9815, 0xFFFD, 0x43D9, 0xFFFD, 0x64B4, + 0x54E3, 0xFFFD, 0x0000, 0xFFFD, 0x39FB, 0xFFFD, 0x0000, 0x0000, 0x0000, + 0x64EA, 0x0000, 0x0000, 0x8E68, 0xFFFD, 0x0000, 0x0000, 0xFFFD, 0x480B, + 0x0000, 0x3FFA, 0x5873, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, + 0xFFFD, 0x5579, 0xFFFD, 0x43BA, 0xFFFD, 0x4AB4, 0x0000, 0x0000, 0x81AA, + 0x98F5, 0x0000, 0x6379, 0x39FE, 0x0000, 0x8DC0, 0x56A1, 0x647C, 0x3E43, + 0xFFFD, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, 0x3992, + 0x3A06, 0x0000, 0x3578, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, + 0x34BC, 0x6C3D, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3A18, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x95AA, 0xFFFD, 0x0000, 0x7140, 0xFFFD, 0x5156, + 0x4EFE, 0x5088, 0xFFFD, 0x3493, 0x5186, 0x5E42, 0x5205, 0x5227, 0x5279, + 0x0000, 0x3553, 0x53C2, 0x535F, 0xFFFD, 0x553F, 0xFFFD, 0x55D8, 0x35DD, + 0x5621, 0xFFFD, 0x5654, 0x0000, 0xFFFD, 0x0000, 0xFFFD, 0x0000, 0xFFFD, + 0xFFFD, 0x37B9, 0x5CC1, 0x5D15, 0x5D56, 0x3838, 0x4E81, 0x5EBD, 0x3914, + 0x61B9, 0x6290, 0x6318, 0x645A, 0x6491, 0x816D, 0x8184, 0x8193, 0x6800, + 0x3BBC, 0x728F, 0x72CD, 0x0000, 0x7339, 0x7542, 0x75DC, 0x3FC0, 0x0000, + 0x3FD7, 0xFFFD, 0x7680, 0x768C, 0x40A8, 0x7839, 0x4103, 0x7A91, 0x7C1B, + 0x7CED, 0x7F93, 0x7FAE, 0xFFFD, 0x82FF, 0x585F, 0x86B2, 0x45AC, 0x878B, + 0x8947, 0xFFFD, 0x8A29, 0xFFFD, 0x8E71, 0x0000, 0x8EB0, 0xFFFD, 0x915E, + 0x918C, 0x990E, 0x991C, 0xFFFD, 0xFFFD, 0x9B81, 0x9DC0, 0x9D93, 0x9EAC, + 0x4D91, 0xFFFD, 0x93BA, 0x9E7B, 0x7089, 0x7348, 0xFFFD, 0x7999, 0x8FB7, + 0xFFFD, 0x9942, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, + 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, + 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, + 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, + 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, + 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, + 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, + 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, + 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x00A9, 0x2122, + 0x2026, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, + 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, + 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, + 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, + 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20AC, 0x20AC, 0x2110, + 0x20AC, 0x20AC, 0x309B, 0x309C, 0x2E80, 0x31C0, 0x31C1, 0x31C2, 0x31C3, + 0x31C4, 0x0000, 0x31C5, 0x0000, 0x0000, 0x31C6, 0x31C7, 0x0000, 0x0000, + 0x31C8, 0x0000, 0x31C9, 0x31CA, 0x31CB, 0x31CC, 0x0000, 0x31CD, 0x31CE, + 0xF538, 0xF539, 0x0000, 0x0000, 0x9751, 0x0000, 0x4E5B, 0x4EBB, 0x353E, + 0x5C23, 0x5F51, 0x5FC4, 0x38FA, 0x624C, 0x6535, 0x6B7A, 0x6C35, 0x6C3A, + 0x706C, 0x722B, 0x4E2C, 0x72AD, 0x0000, 0x7F52, 0x793B, 0x7CF9, 0x7F53, + 0x0000, 0x34C1, 0x0000, 0x8002, 0x8080, 0x0000, 0x0000, 0x535D, 0x8864, + 0x89C1, 0x0000, 0x8BA0, 0x8D1D, 0x9485, 0x9578, 0x957F, 0x95E8, 0x0000, + 0x97E6, 0x9875, 0x98CE, 0x98DE, 0x9963, 0x0000, 0x9C7C, 0x9E1F, 0x9EC4, + 0x6B6F, 0xF907, 0x4E37, 0x0000, 0x961D, 0x6237, 0x94A2, 0x2E84, 0x2E86, + 0x2E87, 0x2E88, 0x2E8A, 0x2E8C, 0x2E8D, 0x2E95, 0x2E9C, 0x2EA5, 0x2EA7, + 0x2EAA, 0x2EAC, 0x2EAE, 0x2EB6, 0x2EBC, 0x2EBE, 0x2ECA, 0x2ECC, 0x2ECD, + 0x2ECF, 0x2ED6, 0x2ED7, 0x2EDE, 0x0000, 0x0000, 0x650A, 0x4E3D, 0x6EDD, + 0x9D4E, 0x91DF, 0x0000, 0x4F1A, 0x4F28, 0x4FA8, 0x5174, 0x519C, 0x51E4, + 0x52A1, 0x52A8, 0x533B, 0x534E, 0x53D1, 0x53D8, 0x56E2, 0x58F0, 0x5904, + 0x5907, 0x5932, 0x5934, 0x5B66, 0x5B9E, 0x5B9F, 0x5C9A, 0x5E86, 0x603B, + 0x6589, 0x67FE, 0x6804, 0x6865, 0x6D4E, 0x70BC, 0x7535, 0x7EA4, 0x7EAC, + 0x7EBA, 0x7EC7, 0x7ECF, 0x7EDF, 0x7F06, 0x7F37, 0x827A, 0x82CF, 0x836F, + 0x89C6, 0x8BBE, 0x8BE2, 0x8F66, 0x8F67, 0x8F6E, 0x7411, 0x7CFC, 0x7DCD, + 0x6946, 0x7AC9, 0x78B8, 0x80BC, 0x8D0B, 0x80F6, 0x0000, 0x809F, 0x9EC7, + 0x4CCD, 0x9DC9, 0x9E0C, 0x4C3E, 0x0000, 0x0000, 0x9E0A, 0x0000, 0x35C1, + 0x6E9A, 0x823E, 0x7519, 0x4911, 0x9A6C, 0x9A8F, 0x9F99, 0x7987, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4E24, 0x4E80, 0x4E87, 0x4EBF, 0x4EEB, 0x4F37, + 0x344C, 0x4FBD, 0x3E48, 0x5003, 0x347D, 0x34A5, 0x5905, 0x51DB, 0x51FC, + 0x4E89, 0x5290, 0x5327, 0x35C7, 0x53A9, 0x3551, 0x53B0, 0x5423, 0x356D, + 0x3572, 0x3681, 0x5493, 0x54A3, 0x54B4, 0x54B9, 0x54D0, 0x54EF, 0x5518, + 0x5523, 0x5528, 0x3598, 0x35A5, 0x35BF, 0x55D7, 0x35C5, 0x0000, 0x4053, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x40BB, 0x0000, 0x5652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x35FB, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3F93, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF9, 0x0000, 0x6432, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x54CC, 0x82C4, + 0x55B9, 0x0000, 0x9C26, 0x9AB6, 0x0000, 0x80EC, 0x5C1C, 0x0000, 0x8134, + 0x3797, 0x0000, 0x91B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3609, + 0x0000, 0x56AF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5A54, 0x0000, 0x0000, 0x0000, 0x0000, + 0x579C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3703, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5899, 0x5268, + 0x361A, 0x0000, 0x7BB2, 0x5B68, 0x4800, 0x4B2C, 0x9F27, 0x49E7, 0x9C1F, + 0x9B8D, 0x0000, 0x0000, 0x55FB, 0x35F2, 0x5689, 0x5D3E, 0x5D48, 0x3DFC, + 0x380F, 0x5DA4, 0x5DB9, 0x3820, 0x5F25, 0x5F83, 0x3908, 0x393F, 0x394D, + 0x60D7, 0x613D, 0x5CE5, 0x3989, 0x61B7, 0x61CF, 0x39B8, 0x622C, 0x62E5, + 0x39F8, 0x56B1, 0x3A03, 0x63E2, 0x63FB, 0x6407, 0x3A4B, 0x64C0, 0x9F9F, + 0x3A97, 0x6586, 0x3ABD, 0x65FF, 0x6653, 0x3AF2, 0x6692, 0x3B22, 0x6716, + 0x3B42, 0x67A4, 0x3B58, 0x684A, 0x6884, 0x3B72, 0x3B71, 0x3B7B, 0x6909, + 0x6943, 0x725C, 0x6964, 0x699F, 0x6985, 0x69D6, 0x3BDD, 0x6A65, 0x6A74, + 0x6A71, 0x6A82, 0x3BEC, 0x6A99, 0x3BF2, 0x6AAB, 0x6AB5, 0x6AD4, 0x6AF6, + 0x6B81, 0x6BC1, 0x6BEA, 0x6C75, 0x6CAA, 0x3CCB, 0x6D02, 0x6D06, 0x6D26, + 0x6D81, 0x3CEF, 0x6DA4, 0x6DB1, 0x6E15, 0x6E18, 0x6E29, 0x6E86, 0x0000, + 0x6EBB, 0x6EE2, 0x6EDA, 0x9F7F, 0x6EE8, 0x6EE9, 0x6F24, 0x6F34, 0x3D46, + 0x0000, 0x6F81, 0x6FBE, 0x3D6A, 0x3D75, 0x71B7, 0x5C99, 0x3D8A, 0x702C, + 0x3D91, 0x7050, 0x7054, 0x706F, 0x707F, 0x0000, 0x43C1, 0x35F1, 0x0000, + 0x364E, 0x3DAD, 0x0000, 0x667D, 0x7C74, 0x748D, 0x7E92, 0x4503, 0x0000, + 0x0000, 0x0000, 0x347E, 0x0000, 0x0000, 0x0000, 0x8771, 0x63C1, 0x7777, + 0x898A, 0x0000, 0x8B4C, 0x0000, 0x492A, 0x0000, 0x0000, 0x0000, 0x3AF0, + 0x708F, 0x0000, 0x0000, 0x0000, 0x6888, 0x0000, 0x9F62, 0x93C6, 0x0000, + 0x9366, 0x928F, 0x8614, 0x0000, 0x4190, 0x678F, 0x681E, 0x3863, 0x0000, + 0x3B19, 0x8496, 0x0000, 0x39E2, 0x8480, 0x436E, 0x9771, 0x999B, 0x492D, + 0x6F17, 0x0000, 0x70A6, 0x0000, 0x7E65, 0x5D2F, 0x3DF3, 0x0000, 0x0000, + 0x7DA4, 0x8426, 0x5485, 0x0000, 0x0000, 0x577E, 0x0000, 0x0000, 0x3FE5, + 0x0000, 0x0000, 0x7003, 0x0000, 0x5D70, 0x738F, 0x0000, 0x0000, 0x4FC8, + 0x7FE7, 0x7310, 0x7338, 0x7341, 0x3EA9, 0x71F5, 0x0000, 0x73E1, 0x3ECA, + 0x3ED1, 0x7419, 0x741E, 0x741F, 0x3EE2, 0x3EF0, 0x3EF4, 0x3EFA, 0x74D3, + 0x3F0E, 0x3F53, 0x756D, 0x7572, 0x758D, 0x3F7C, 0x75C8, 0x764D, 0x7674, + 0x3FDC, 0x767A, 0x7188, 0x5623, 0x8980, 0x401D, 0x7743, 0x4039, 0x4045, + 0x35DB, 0x7798, 0x406A, 0x406F, 0x77BE, 0x77CB, 0x7818, 0x781C, 0x7847, + 0x7851, 0x7866, 0x8448, 0x0000, 0x7933, 0x7932, 0x4109, 0x7991, 0x7A06, + 0x4167, 0x41B2, 0x7ABC, 0x8279, 0x41C4, 0x7ACF, 0x7ADB, 0x41CF, 0x7B62, + 0x7B6C, 0x7B7B, 0x7C12, 0x4260, 0x427A, 0x7C7B, 0x7C9C, 0x428C, 0x7CB8, + 0x4294, 0x8F93, 0x70C0, 0x0000, 0x7DCF, 0x7DD4, 0x7DD0, 0x7DFD, 0x7FB4, + 0x729F, 0x4397, 0x8020, 0x8025, 0x802E, 0x8031, 0x8054, 0x57B4, 0x70A0, + 0x80B7, 0x80E9, 0x43ED, 0x810C, 0x810E, 0x8112, 0x8114, 0x4401, 0x3B39, + 0x8156, 0x8159, 0x815A, 0x4413, 0x817C, 0x4425, 0x442D, 0x81A5, 0x57EF, + 0x81C1, 0x81E4, 0x8254, 0x448F, 0x8276, 0x82CA, 0x82D8, 0x44B0, 0x8357, + 0x9669, 0x8405, 0x70F5, 0x8464, 0x8488, 0x4504, 0x84BE, 0x84E1, 0x84F8, + 0x8510, 0x8538, 0x8552, 0x453B, 0x856F, 0x8570, 0x85E0, 0x4577, 0x8672, + 0x8692, 0x86EF, 0x9645, 0x4606, 0x4617, 0x88AE, 0x88FF, 0x8924, 0x8991, + 0x0000, 0x8A38, 0x8A94, 0x8AB4, 0x8C51, 0x8CD4, 0x8CF2, 0x8D1C, 0x4798, + 0x8DC3, 0x47ED, 0x8E3A, 0x5754, 0x55F5, 0x4837, 0x8ECE, 0x8EE2, 0x8EE4, + 0x8EED, 0x8EF2, 0x8FC1, 0x8FCA, 0x8FCC, 0x9033, 0x48AD, 0x98E0, 0x9213, + 0x491E, 0x9228, 0x9258, 0x926B, 0x92B1, 0x92AE, 0x92BF, 0x92E3, 0x92EB, + 0x92F3, 0x92F4, 0x92FD, 0x9343, 0x9384, 0x93AD, 0x4945, 0x4951, 0x9417, + 0x941D, 0x942D, 0x943E, 0x496A, 0x9454, 0x9479, 0x952D, 0x95A2, 0x49A7, + 0x95F4, 0x9633, 0x49E5, 0x4A24, 0x9740, 0x4A35, 0x97B2, 0x97C2, 0x4AE4, + 0x98B9, 0x4B19, 0x98F1, 0x5844, 0x9919, 0x9937, 0x995D, 0x9962, 0x4B70, + 0x99C5, 0x4B9D, 0x9A3C, 0x9B0F, 0x9B69, 0x9BDD, 0x9BF1, 0x9BF4, 0x4C6D, + 0x9C20, 0x376F, 0x0000, 0x9D49, 0x9EFE, 0x5650, 0x9DBD, 0x9DFC, 0x94F6, + 0x8FB6, 0x9EB1, 0x9EBD, 0x9EC6, 0x94DC, 0x9EE2, 0x9EF1, 0x9EF8, 0x9F44, + 0x0000, 0x0000, 0x0000, 0x94C3, 0x0000, 0x94C1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5757, 0x7173, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x549E, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3647, 0x0000, 0x0000, + 0x0000, 0x5364, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x70BB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7198, 0x0000, 0x69E9, 0x36C8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x58B5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5788, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5965, 0x0000, 0x0000, 0x573F, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x57A1, 0x7151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x56B9, 0x0000, 0x3618, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x949F, 0x0000, + 0x36B9, 0x0000, 0x0000, 0x56D6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63E6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3DF7, 0x0000, 0x0000, 0x8FD0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7E9F, 0x0000, + 0x0000, 0x4CA4, 0x9547, 0x0000, 0x71A2, 0x0000, 0x0000, 0x4D9C, 0x0000, + 0x8FBE, 0x8FBA, 0x0000, 0x8FB9, 0x0000, 0x4EEA, 0x0000, 0x8E80, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4E9A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3DC6, 0x0000, 0x4E1C, + 0x0000, 0x0000, 0x0000, 0x0000, 0x55DE, 0x8786, 0x0000, 0x0000, 0x5B90, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4E1A, 0x4E04, 0x5B0D, 0x36AC, 0x537D, 0x36A5, 0x589A, 0x0000, + 0x57AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x57A7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9C1B, 0x0000, 0x3E06, 0x0000, 0x0000, + 0x0000, 0x0000, 0x577A, 0x54DA, 0x717A, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3635, 0x0000, 0x5220, 0x3C18, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4562, 0x5B1F, 0x0000, 0x9F50, + 0x9EA6, 0x0000, 0x51E2, 0x5342, 0x66AD, 0x585C, 0x5553, 0x3D85, 0x6160, + 0x48AE, 0x97BD, 0x0000, 0x60B3, 0x8424, 0x9814, 0x0000, 0x0000, 0x0000, + 0x3B2B, 0x3D32, 0x0000, 0x7081, 0x5C9C, 0x0000, 0x3730, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0100, 0x00C1, 0x01CD, 0x00C0, 0x0112, 0x00C9, 0x011A, + 0x00C8, 0x014C, 0x00D3, 0x01D1, 0x00D2, 0xF325, 0x1EBE, 0xF327, 0x1EC0, + 0x00CA, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0251, 0x0113, 0x00E9, 0x011B, + 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, + 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, + 0xF344, 0x1EBF, 0xF346, 0x1EC1, 0x00EA, 0x0261, 0x0283, 0x0250, 0x025B, + 0x0254, 0x0275, 0x0153, 0x00F8, 0x014B, 0x028A, 0x026A, 0x23DA, 0x23DB, + 0x2E9D, 0x2EC6, 0x2EE3, 0x503B, 0x6DFE, 0x0000, 0x9FA6, 0x3DC9, 0x888F, + 0x0000, 0x7077, 0x5CF5, 0x4B20, 0x0000, 0x3559, 0x0000, 0x6122, 0x0000, + 0x8FA7, 0x91F6, 0x7191, 0x6719, 0x73BA, 0x0000, 0x0000, 0x3C8B, 0x0000, + 0x4B10, 0x78E4, 0x7402, 0x51AE, 0x0000, 0x4009, 0x6A63, 0x0000, 0x4223, + 0x860F, 0x7A2A, 0x0000, 0x0000, 0x9755, 0x704D, 0x5324, 0x0000, 0x93F4, + 0x76D9, 0x0000, 0x9FA7, 0x77DD, 0x4EA3, 0x4FF0, 0x50BC, 0x4E2F, 0x4F17, + 0x9FA8, 0x5434, 0x7D8B, 0x5892, 0x58D0, 0x0000, 0x5E92, 0x5E99, 0x5FC2, + 0x0000, 0x658B, 0x0000, 0x6919, 0x6A43, 0x0000, 0x6CFF, 0x7200, 0x0000, + 0x738C, 0x3EDB, 0x0000, 0x5B15, 0x74B9, 0x8B83, 0x0000, 0x0000, 0x7A93, + 0x7BEC, 0x7CC3, 0x7E6C, 0x82F8, 0x8597, 0x9FA9, 0x8890, 0x9FAA, 0x8EB9, + 0x9FAB, 0x8FCF, 0x855F, 0x99E0, 0x9221, 0x9FAC, 0x0000, 0x0000, 0x4071, + 0x42A2, 0x5A1A, 0x9868, 0x676B, 0x4276, 0x573D, 0x85D6, 0x0000, 0x82BF, + 0x0000, 0x4C81, 0x0000, 0x5D7B, 0x0000, 0x0000, 0x9FAD, 0x9FAE, 0x5B96, + 0x9FAF, 0x7E5B, 0x43F0, 0x4C32, 0x4603, 0x45A6, 0x4578, 0x0000, 0x4D77, + 0x45B3, 0x0000, 0x4CE2, 0x0000, 0x3B95, 0x4736, 0x4744, 0x4C47, 0x4C40, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4C57, 0x0000, 0x474F, 0x45DA, + 0x4C85, 0x0000, 0x4D07, 0x4AA4, 0x46A1, 0x0000, 0x7225, 0x0000, 0x0000, + 0x0000, 0x0000, 0x664D, 0x56FB, 0x7D95, 0x591D, 0x0000, 0x3DF4, 0x9734, + 0x0000, 0x5BDB, 0x0000, 0x5AA4, 0x3625, 0x0000, 0x5AD1, 0x5BB7, 0x5CFC, + 0x676E, 0x8593, 0x0000, 0x7461, 0x749D, 0x0000, 0x66E7, 0x6E57, 0x79CA, + 0x3D88, 0x44C3, 0x0000, 0x0000, 0x439A, 0x4536, 0x5CD5, 0x0000, 0x8AF9, + 0x5C78, 0x3D12, 0x0000, 0x5D78, 0x9FB2, 0x7157, 0x4558, 0x0000, 0x0000, + 0x4C77, 0x3978, 0x344A, 0x0000, 0x0000, 0x8ACC, 0x4FB4, 0x0000, 0x59BF, + 0x816C, 0x9856, 0x0000, 0x5F3B, 0x0000, 0x0000, 0x0000, 0x4102, 0x46BB, + 0x0000, 0x3F07, 0x9FB3, 0x0000, 0x40F8, 0x37D6, 0x46F7, 0x0000, 0x417C, + 0x0000, 0x0000, 0x456D, 0x38D4, 0x0000, 0x4561, 0x451B, 0x4D89, 0x4C7B, + 0x4D76, 0x45EA, 0x3FC8, 0x0000, 0x3661, 0x44DE, 0x44BD, 0x41ED, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp new file mode 100644 index 0000000000..532ecd1013 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp @@ -0,0 +1,93 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_B5pc_H_0[247 * 3] = { + 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x003D, 0x00FD, 0x00FF, 0x0060, + 0xA140, 0xA158, 0x0063, 0xA159, 0xA15C, 0x35AF, 0xA15D, 0xA17E, 0x0080, + 0xA1A1, 0xA1F5, 0x00A2, 0xA1F6, 0xA1F6, 0x00F8, 0xA1F7, 0xA1F7, 0x00F7, + 0xA1F8, 0xA1FE, 0x00F9, 0xA240, 0xA27E, 0x0100, 0xA2A1, 0xA2FE, 0x013F, + 0xA340, 0xA37E, 0x019D, 0xA3A1, 0xA3BB, 0x01DC, 0xA3BD, 0xA3BF, 0x01F7, + 0xA3C0, 0xA3E0, 0x0232, 0xA440, 0xA47E, 0x0253, 0xA4A1, 0xA4FE, 0x0292, + 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, 0xA640, 0xA67E, 0x038D, + 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, 0xA7A1, 0xA7FE, 0x0469, + 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, 0xA940, 0xA97E, 0x0564, + 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, 0xAAA1, 0xAAFE, 0x0640, + 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, 0xAC40, 0xAC7E, 0x073B, + 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, 0xAD40, 0xAD7E, 0x07D7, + 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, 0xAEA1, 0xAEFE, 0x08B3, + 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, 0xAFD0, 0xAFFE, 0x0980, + 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, 0xB140, 0xB17E, 0x0A4C, + 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, 0xB2A1, 0xB2FE, 0x0B28, + 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, 0xB440, 0xB47E, 0x0C23, + 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, 0xB5A1, 0xB5FE, 0x0CFF, + 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, 0xB740, 0xB77E, 0x0DFA, + 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, 0xB8A1, 0xB8FE, 0x0ED6, + 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, 0xBA40, 0xBA7E, 0x0FD1, + 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, 0xBBA1, 0xBBC7, 0x10AD, + 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, 0xBCA1, 0xBCFE, 0x114B, + 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, 0xBE40, 0xBE51, 0x1246, + 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, 0xBEA1, 0xBEFE, 0x1284, + 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, 0xC040, 0xC07E, 0x137F, + 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, 0xC1A1, 0xC1AA, 0x145B, + 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, 0xC2A1, 0xC2CA, 0x14F9, + 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, 0xC340, 0xC360, 0x1556, + 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, 0xC3B9, 0xC3B9, 0x15AF, + 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, 0xC440, 0xC455, 0x15F4, + 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, 0xC4A1, 0xC4FE, 0x1632, + 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, 0xC640, 0xC67E, 0x172D, + 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776, + 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797, + 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809, + 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E, + 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942, + 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E, + 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19, + 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5, + 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0, + 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC, + 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7, + 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3, + 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001, + 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F, + 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A, + 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216, + 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274, + 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312, + 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE, + 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B, + 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527, + 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622, + 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE, + 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9, + 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5, + 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0, + 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC, + 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42, + 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8, + 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86, + 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3, + 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F, + 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8, + 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014, + 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8, + 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C, + 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE, + 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160, + 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E, + 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC, + 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161, + 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0, + 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D, + 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6, + 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327, + 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF, + 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA, + 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511, + 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E, + 0xF9D2, 0xF9D5, 0x354A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp new file mode 100644 index 0000000000..482c4db05f --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp @@ -0,0 +1,14 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_B5pc_V_0[12 * 3] = { + 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, 0x35B1, + 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, 0xA166, 0x008A, + 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, 0xA171, 0xA172, 0x0096, + 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, 0x009E, 0xA1E3, 0xA1E3, 0x354F, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp new file mode 100644 index 0000000000..3d61451403 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp @@ -0,0 +1,172 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_CNS_EUC_H_0[157 * 3] = { + 0x0020, 0x007E, 0x3550, 0xA1A1, 0xA1FE, 0x0063, 0xA2A1, 0xA2FE, 0x00C1, + 0xA3A1, 0xA3CE, 0x011F, 0xA4A1, 0xA4FE, 0x014D, 0xA5A1, 0xA5EC, 0x01AB, + 0xA5EE, 0xA5F0, 0x01F7, 0xA6A1, 0xA6BE, 0x01FA, 0xA7A1, 0xA7A1, 0x0253, + 0xA7A2, 0xA7A4, 0x0218, 0xA7A5, 0xA7A5, 0x0254, 0xA7A6, 0xA7A6, 0x021B, + 0xA7A7, 0xA7A7, 0x025A, 0xA7A8, 0xA7A8, 0x021C, 0xA7A9, 0xA7AC, 0x025B, + 0xA7AD, 0xA7AF, 0x021D, 0xA7B0, 0xA7B0, 0x025F, 0xA7B1, 0xA7B1, 0x176E, + 0xA7B2, 0xA7B2, 0x0260, 0xA7B3, 0xA7B3, 0x0262, 0xA7B4, 0xA7B4, 0x0220, + 0xA7B5, 0xA7B5, 0x0263, 0xA7B6, 0xA7B6, 0x176F, 0xA7B7, 0xA7B7, 0x0221, + 0xA7B8, 0xA7B9, 0x0264, 0xA7BA, 0xA7BA, 0x0222, 0xA7BB, 0xA7BB, 0x1770, + 0xA7BC, 0xA7BC, 0x0223, 0xA7BD, 0xA7BD, 0x0266, 0xA7BE, 0xA7BE, 0x0279, + 0xA7BF, 0xA7BF, 0x1775, 0xA7C0, 0xA7C1, 0x027A, 0xA7C2, 0xA7C2, 0x0224, + 0xA7C3, 0xA7C6, 0x027C, 0xA7C7, 0xA7C7, 0x0225, 0xA7C8, 0xA7CB, 0x0282, + 0xA7CC, 0xA7CC, 0x1776, 0xA7CD, 0xA7CD, 0x0286, 0xA7CE, 0xA7CE, 0x0226, + 0xA7CF, 0xA7D0, 0x0288, 0xA7D1, 0xA7D2, 0x028C, 0xA7D3, 0xA7D5, 0x0227, + 0xA7D6, 0xA7D8, 0x028E, 0xA7D9, 0xA7DA, 0x022A, 0xA7DB, 0xA7DB, 0x1777, + 0xA7DC, 0xA7DF, 0x02D0, 0xA7E0, 0xA7E0, 0x02D5, 0xA7E1, 0xA7E1, 0x022C, + 0xA7E2, 0xA7E5, 0x02D6, 0xA7E6, 0xA7E6, 0x022D, 0xA7E7, 0xA7ED, 0x02DA, + 0xA7EE, 0xA7EE, 0x178A, 0xA7EF, 0xA7F2, 0x02E1, 0xA7F3, 0xA7F3, 0x178C, + 0xA7F4, 0xA7F8, 0x02E5, 0xA7F9, 0xA7F9, 0x178D, 0xA7FA, 0xA7FD, 0x02EA, + 0xA7FE, 0xA7FE, 0x0356, 0xA8A1, 0xA8A6, 0x0357, 0xA8A7, 0xA8A7, 0x035E, + 0xA8A8, 0xA8A8, 0x0362, 0xA8A9, 0xA8AA, 0x022E, 0xA8AB, 0xA8B2, 0x0363, + 0xA8B3, 0xA8B3, 0x17B2, 0xA8B4, 0xA8B6, 0x036B, 0xA8B7, 0xA8BA, 0x03F6, + 0xA8BB, 0xA8BB, 0x1812, 0xA8BC, 0xA8BE, 0x03FA, 0xA8BF, 0xA8C3, 0x03FE, + 0xA8C4, 0xA8CC, 0x0405, 0xA8CD, 0xA8CD, 0x1813, 0xA8CE, 0xA8CE, 0x1818, + 0xA8CF, 0xA8D2, 0x040F, 0xA8D3, 0xA8D3, 0x1819, 0xA8D4, 0xA8D9, 0x0508, + 0xA8DA, 0xA8DA, 0x18E7, 0xA8DB, 0xA8E2, 0x050E, 0xA8E3, 0xA8E3, 0x0230, + 0xA8E4, 0xA8E4, 0x051B, 0xA8E5, 0xA8E7, 0x0520, 0xA8E8, 0xA8EB, 0x0696, + 0xA8EC, 0xA8EC, 0x0231, 0xA8ED, 0xA8F0, 0x069F, 0xA8F1, 0xA8FB, 0x0826, + 0xA8FC, 0xA8FE, 0x09F5, 0xA9A1, 0xA9A1, 0x1E33, 0xA9A2, 0xA9A2, 0x09F8, + 0xA9A3, 0xA9A3, 0x1E34, 0xA9A4, 0xA9A5, 0x09F9, 0xA9A6, 0xA9AB, 0x0BE1, + 0xA9AC, 0xA9AE, 0x0DBB, 0xA9AF, 0xA9AF, 0x2360, 0xA9B0, 0xA9B0, 0x2612, + 0xA9B1, 0xA9B3, 0x0F7B, 0xA9B4, 0xA9B5, 0x1100, 0xA9B6, 0xA9B6, 0x1289, + 0xA9B7, 0xA9B8, 0x13B2, 0xA9B9, 0xA9B9, 0x2F0D, 0xC2A1, 0xC2C1, 0x0232, + 0xC4A1, 0xC4FE, 0x0253, 0xC5A1, 0xC5FE, 0x02B1, 0xC6A1, 0xC6FE, 0x030F, + 0xC7A1, 0xC7FE, 0x036D, 0xC8A1, 0xC8FE, 0x03CB, 0xC9A1, 0xC9FE, 0x0429, + 0xCAA1, 0xCAFE, 0x0487, 0xCBA1, 0xCBFE, 0x04E5, 0xCCA1, 0xCCFE, 0x0543, + 0xCDA1, 0xCDFE, 0x05A1, 0xCEA1, 0xCEFE, 0x05FF, 0xCFA1, 0xCFFE, 0x065D, + 0xD0A1, 0xD0FE, 0x06BB, 0xD1A1, 0xD1FE, 0x0719, 0xD2A1, 0xD2FE, 0x0777, + 0xD3A1, 0xD3FE, 0x07D5, 0xD4A1, 0xD4FE, 0x0833, 0xD5A1, 0xD5FE, 0x0891, + 0xD6A1, 0xD6FE, 0x08EF, 0xD7A1, 0xD7FE, 0x094D, 0xD8A1, 0xD8FE, 0x09AB, + 0xD9A1, 0xD9FE, 0x0A09, 0xDAA1, 0xDAFE, 0x0A67, 0xDBA1, 0xDBFE, 0x0AC5, + 0xDCA1, 0xDCFE, 0x0B23, 0xDDA1, 0xDDFE, 0x0B81, 0xDEA1, 0xDEFE, 0x0BDF, + 0xDFA1, 0xDFFE, 0x0C3D, 0xE0A1, 0xE0FE, 0x0C9B, 0xE1A1, 0xE1FE, 0x0CF9, + 0xE2A1, 0xE2FE, 0x0D57, 0xE3A1, 0xE3FE, 0x0DB5, 0xE4A1, 0xE4FE, 0x0E13, + 0xE5A1, 0xE5FE, 0x0E71, 0xE6A1, 0xE6FE, 0x0ECF, 0xE7A1, 0xE7FE, 0x0F2D, + 0xE8A1, 0xE8FE, 0x0F8B, 0xE9A1, 0xE9FE, 0x0FE9, 0xEAA1, 0xEAFE, 0x1047, + 0xEBA1, 0xEBFE, 0x10A5, 0xECA1, 0xECFE, 0x1103, 0xEDA1, 0xEDFE, 0x1161, + 0xEEA1, 0xEEFE, 0x11BF, 0xEFA1, 0xEFFE, 0x121D, 0xF0A1, 0xF0FE, 0x127B, + 0xF1A1, 0xF1FE, 0x12D9, 0xF2A1, 0xF2FE, 0x1337, 0xF3A1, 0xF3FE, 0x1395, + 0xF4A1, 0xF4FE, 0x13F3, 0xF5A1, 0xF5FE, 0x1451, 0xF6A1, 0xF6FE, 0x14AF, + 0xF7A1, 0xF7FE, 0x150D, 0xF8A1, 0xF8FE, 0x156B, 0xF9A1, 0xF9FE, 0x15C9, + 0xFAA1, 0xFAFE, 0x1627, 0xFBA1, 0xFBFE, 0x1685, 0xFCA1, 0xFCFE, 0x16E3, + 0xFDA1, 0xFDCB, 0x1741, +}; + +const FX_WORD g_FXCMAP_CNS_EUC_H_0_DWord[238 * 4] = { + 0x8EA1, 0xA1A1, 0xA1FE, 0x0063, 0x8EA1, 0xA2A1, 0xA2FE, 0x00C1, 0x8EA1, + 0xA3A1, 0xA3CE, 0x011F, 0x8EA1, 0xA4A1, 0xA4FE, 0x014D, 0x8EA1, 0xA5A1, + 0xA5EC, 0x01AB, 0x8EA1, 0xA5EE, 0xA5F0, 0x01F7, 0x8EA1, 0xA6A1, 0xA6BE, + 0x01FA, 0x8EA1, 0xA7A1, 0xA7A1, 0x0253, 0x8EA1, 0xA7A2, 0xA7A4, 0x0218, + 0x8EA1, 0xA7A5, 0xA7A5, 0x0254, 0x8EA1, 0xA7A6, 0xA7A6, 0x021B, 0x8EA1, + 0xA7A7, 0xA7A7, 0x025A, 0x8EA1, 0xA7A8, 0xA7A8, 0x021C, 0x8EA1, 0xA7A9, + 0xA7AC, 0x025B, 0x8EA1, 0xA7AD, 0xA7AF, 0x021D, 0x8EA1, 0xA7B0, 0xA7B0, + 0x025F, 0x8EA1, 0xA7B1, 0xA7B1, 0x176E, 0x8EA1, 0xA7B2, 0xA7B2, 0x0260, + 0x8EA1, 0xA7B3, 0xA7B3, 0x0262, 0x8EA1, 0xA7B4, 0xA7B4, 0x0220, 0x8EA1, + 0xA7B5, 0xA7B5, 0x0263, 0x8EA1, 0xA7B6, 0xA7B6, 0x176F, 0x8EA1, 0xA7B7, + 0xA7B7, 0x0221, 0x8EA1, 0xA7B8, 0xA7B9, 0x0264, 0x8EA1, 0xA7BA, 0xA7BA, + 0x0222, 0x8EA1, 0xA7BB, 0xA7BB, 0x1770, 0x8EA1, 0xA7BC, 0xA7BC, 0x0223, + 0x8EA1, 0xA7BD, 0xA7BD, 0x0266, 0x8EA1, 0xA7BE, 0xA7BE, 0x0279, 0x8EA1, + 0xA7BF, 0xA7BF, 0x1775, 0x8EA1, 0xA7C0, 0xA7C1, 0x027A, 0x8EA1, 0xA7C2, + 0xA7C2, 0x0224, 0x8EA1, 0xA7C3, 0xA7C6, 0x027C, 0x8EA1, 0xA7C7, 0xA7C7, + 0x0225, 0x8EA1, 0xA7C8, 0xA7CB, 0x0282, 0x8EA1, 0xA7CC, 0xA7CC, 0x1776, + 0x8EA1, 0xA7CD, 0xA7CD, 0x0286, 0x8EA1, 0xA7CE, 0xA7CE, 0x0226, 0x8EA1, + 0xA7CF, 0xA7D0, 0x0288, 0x8EA1, 0xA7D1, 0xA7D2, 0x028C, 0x8EA1, 0xA7D3, + 0xA7D5, 0x0227, 0x8EA1, 0xA7D6, 0xA7D8, 0x028E, 0x8EA1, 0xA7D9, 0xA7DA, + 0x022A, 0x8EA1, 0xA7DB, 0xA7DB, 0x1777, 0x8EA1, 0xA7DC, 0xA7DF, 0x02D0, + 0x8EA1, 0xA7E0, 0xA7E0, 0x02D5, 0x8EA1, 0xA7E1, 0xA7E1, 0x022C, 0x8EA1, + 0xA7E2, 0xA7E5, 0x02D6, 0x8EA1, 0xA7E6, 0xA7E6, 0x022D, 0x8EA1, 0xA7E7, + 0xA7ED, 0x02DA, 0x8EA1, 0xA7EE, 0xA7EE, 0x178A, 0x8EA1, 0xA7EF, 0xA7F2, + 0x02E1, 0x8EA1, 0xA7F3, 0xA7F3, 0x178C, 0x8EA1, 0xA7F4, 0xA7F8, 0x02E5, + 0x8EA1, 0xA7F9, 0xA7F9, 0x178D, 0x8EA1, 0xA7FA, 0xA7FD, 0x02EA, 0x8EA1, + 0xA7FE, 0xA7FE, 0x0356, 0x8EA1, 0xA8A1, 0xA8A6, 0x0357, 0x8EA1, 0xA8A7, + 0xA8A7, 0x035E, 0x8EA1, 0xA8A8, 0xA8A8, 0x0362, 0x8EA1, 0xA8A9, 0xA8AA, + 0x022E, 0x8EA1, 0xA8AB, 0xA8B2, 0x0363, 0x8EA1, 0xA8B3, 0xA8B3, 0x17B2, + 0x8EA1, 0xA8B4, 0xA8B6, 0x036B, 0x8EA1, 0xA8B7, 0xA8BA, 0x03F6, 0x8EA1, + 0xA8BB, 0xA8BB, 0x1812, 0x8EA1, 0xA8BC, 0xA8BE, 0x03FA, 0x8EA1, 0xA8BF, + 0xA8C3, 0x03FE, 0x8EA1, 0xA8C4, 0xA8CC, 0x0405, 0x8EA1, 0xA8CD, 0xA8CD, + 0x1813, 0x8EA1, 0xA8CE, 0xA8CE, 0x1818, 0x8EA1, 0xA8CF, 0xA8D2, 0x040F, + 0x8EA1, 0xA8D3, 0xA8D3, 0x1819, 0x8EA1, 0xA8D4, 0xA8D9, 0x0508, 0x8EA1, + 0xA8DA, 0xA8DA, 0x18E7, 0x8EA1, 0xA8DB, 0xA8E2, 0x050E, 0x8EA1, 0xA8E3, + 0xA8E3, 0x0230, 0x8EA1, 0xA8E4, 0xA8E4, 0x051B, 0x8EA1, 0xA8E5, 0xA8E7, + 0x0520, 0x8EA1, 0xA8E8, 0xA8EB, 0x0696, 0x8EA1, 0xA8EC, 0xA8EC, 0x0231, + 0x8EA1, 0xA8ED, 0xA8F0, 0x069F, 0x8EA1, 0xA8F1, 0xA8FB, 0x0826, 0x8EA1, + 0xA8FC, 0xA8FE, 0x09F5, 0x8EA1, 0xA9A1, 0xA9A1, 0x1E33, 0x8EA1, 0xA9A2, + 0xA9A2, 0x09F8, 0x8EA1, 0xA9A3, 0xA9A3, 0x1E34, 0x8EA1, 0xA9A4, 0xA9A5, + 0x09F9, 0x8EA1, 0xA9A6, 0xA9AB, 0x0BE1, 0x8EA1, 0xA9AC, 0xA9AE, 0x0DBB, + 0x8EA1, 0xA9AF, 0xA9AF, 0x2360, 0x8EA1, 0xA9B0, 0xA9B0, 0x2612, 0x8EA1, + 0xA9B1, 0xA9B3, 0x0F7B, 0x8EA1, 0xA9B4, 0xA9B5, 0x1100, 0x8EA1, 0xA9B6, + 0xA9B6, 0x1289, 0x8EA1, 0xA9B7, 0xA9B8, 0x13B2, 0x8EA1, 0xA9B9, 0xA9B9, + 0x2F0D, 0x8EA1, 0xC2A1, 0xC2C1, 0x0232, 0x8EA1, 0xC4A1, 0xC4FE, 0x0253, + 0x8EA1, 0xC5A1, 0xC5FE, 0x02B1, 0x8EA1, 0xC6A1, 0xC6FE, 0x030F, 0x8EA1, + 0xC7A1, 0xC7FE, 0x036D, 0x8EA1, 0xC8A1, 0xC8FE, 0x03CB, 0x8EA1, 0xC9A1, + 0xC9FE, 0x0429, 0x8EA1, 0xCAA1, 0xCAFE, 0x0487, 0x8EA1, 0xCBA1, 0xCBFE, + 0x04E5, 0x8EA1, 0xCCA1, 0xCCFE, 0x0543, 0x8EA1, 0xCDA1, 0xCDFE, 0x05A1, + 0x8EA1, 0xCEA1, 0xCEFE, 0x05FF, 0x8EA1, 0xCFA1, 0xCFFE, 0x065D, 0x8EA1, + 0xD0A1, 0xD0FE, 0x06BB, 0x8EA1, 0xD1A1, 0xD1FE, 0x0719, 0x8EA1, 0xD2A1, + 0xD2FE, 0x0777, 0x8EA1, 0xD3A1, 0xD3FE, 0x07D5, 0x8EA1, 0xD4A1, 0xD4FE, + 0x0833, 0x8EA1, 0xD5A1, 0xD5FE, 0x0891, 0x8EA1, 0xD6A1, 0xD6FE, 0x08EF, + 0x8EA1, 0xD7A1, 0xD7FE, 0x094D, 0x8EA1, 0xD8A1, 0xD8FE, 0x09AB, 0x8EA1, + 0xD9A1, 0xD9FE, 0x0A09, 0x8EA1, 0xDAA1, 0xDAFE, 0x0A67, 0x8EA1, 0xDBA1, + 0xDBFE, 0x0AC5, 0x8EA1, 0xDCA1, 0xDCFE, 0x0B23, 0x8EA1, 0xDDA1, 0xDDFE, + 0x0B81, 0x8EA1, 0xDEA1, 0xDEFE, 0x0BDF, 0x8EA1, 0xDFA1, 0xDFFE, 0x0C3D, + 0x8EA1, 0xE0A1, 0xE0FE, 0x0C9B, 0x8EA1, 0xE1A1, 0xE1FE, 0x0CF9, 0x8EA1, + 0xE2A1, 0xE2FE, 0x0D57, 0x8EA1, 0xE3A1, 0xE3FE, 0x0DB5, 0x8EA1, 0xE4A1, + 0xE4FE, 0x0E13, 0x8EA1, 0xE5A1, 0xE5FE, 0x0E71, 0x8EA1, 0xE6A1, 0xE6FE, + 0x0ECF, 0x8EA1, 0xE7A1, 0xE7FE, 0x0F2D, 0x8EA1, 0xE8A1, 0xE8FE, 0x0F8B, + 0x8EA1, 0xE9A1, 0xE9FE, 0x0FE9, 0x8EA1, 0xEAA1, 0xEAFE, 0x1047, 0x8EA1, + 0xEBA1, 0xEBFE, 0x10A5, 0x8EA1, 0xECA1, 0xECFE, 0x1103, 0x8EA1, 0xEDA1, + 0xEDFE, 0x1161, 0x8EA1, 0xEEA1, 0xEEFE, 0x11BF, 0x8EA1, 0xEFA1, 0xEFFE, + 0x121D, 0x8EA1, 0xF0A1, 0xF0FE, 0x127B, 0x8EA1, 0xF1A1, 0xF1FE, 0x12D9, + 0x8EA1, 0xF2A1, 0xF2FE, 0x1337, 0x8EA1, 0xF3A1, 0xF3FE, 0x1395, 0x8EA1, + 0xF4A1, 0xF4FE, 0x13F3, 0x8EA1, 0xF5A1, 0xF5FE, 0x1451, 0x8EA1, 0xF6A1, + 0xF6FE, 0x14AF, 0x8EA1, 0xF7A1, 0xF7FE, 0x150D, 0x8EA1, 0xF8A1, 0xF8FE, + 0x156B, 0x8EA1, 0xF9A1, 0xF9FE, 0x15C9, 0x8EA1, 0xFAA1, 0xFAFE, 0x1627, + 0x8EA1, 0xFBA1, 0xFBFE, 0x1685, 0x8EA1, 0xFCA1, 0xFCFE, 0x16E3, 0x8EA1, + 0xFDA1, 0xFDCB, 0x1741, 0x8EA2, 0xA1A1, 0xA1FE, 0x176C, 0x8EA2, 0xA2A1, + 0xA2FE, 0x17CA, 0x8EA2, 0xA3A1, 0xA3FE, 0x1828, 0x8EA2, 0xA4A1, 0xA4FE, + 0x1886, 0x8EA2, 0xA5A1, 0xA5FE, 0x18E4, 0x8EA2, 0xA6A1, 0xA6FE, 0x1942, + 0x8EA2, 0xA7A1, 0xA7FE, 0x19A0, 0x8EA2, 0xA8A1, 0xA8FE, 0x19FE, 0x8EA2, + 0xA9A1, 0xA9FE, 0x1A5C, 0x8EA2, 0xAAA1, 0xAAFE, 0x1ABA, 0x8EA2, 0xABA1, + 0xABFE, 0x1B18, 0x8EA2, 0xACA1, 0xACFE, 0x1B76, 0x8EA2, 0xADA1, 0xADFE, + 0x1BD4, 0x8EA2, 0xAEA1, 0xAEFE, 0x1C32, 0x8EA2, 0xAFA1, 0xAFFE, 0x1C90, + 0x8EA2, 0xB0A1, 0xB0FE, 0x1CEE, 0x8EA2, 0xB1A1, 0xB1FE, 0x1D4C, 0x8EA2, + 0xB2A1, 0xB2FE, 0x1DAA, 0x8EA2, 0xB3A1, 0xB3FE, 0x1E08, 0x8EA2, 0xB4A1, + 0xB4FE, 0x1E66, 0x8EA2, 0xB5A1, 0xB5FE, 0x1EC4, 0x8EA2, 0xB6A1, 0xB6FE, + 0x1F22, 0x8EA2, 0xB7A1, 0xB7FE, 0x1F80, 0x8EA2, 0xB8A1, 0xB8FE, 0x1FDE, + 0x8EA2, 0xB9A1, 0xB9FE, 0x203C, 0x8EA2, 0xBAA1, 0xBAFE, 0x209A, 0x8EA2, + 0xBBA1, 0xBBFE, 0x20F8, 0x8EA2, 0xBCA1, 0xBCFE, 0x2156, 0x8EA2, 0xBDA1, + 0xBDFE, 0x21B4, 0x8EA2, 0xBEA1, 0xBEFE, 0x2212, 0x8EA2, 0xBFA1, 0xBFFE, + 0x2270, 0x8EA2, 0xC0A1, 0xC0FE, 0x22CE, 0x8EA2, 0xC1A1, 0xC1FE, 0x232C, + 0x8EA2, 0xC2A1, 0xC2FE, 0x238A, 0x8EA2, 0xC3A1, 0xC3FE, 0x23E8, 0x8EA2, + 0xC4A1, 0xC4FE, 0x2446, 0x8EA2, 0xC5A1, 0xC5FE, 0x24A4, 0x8EA2, 0xC6A1, + 0xC6FE, 0x2502, 0x8EA2, 0xC7A1, 0xC7FE, 0x2560, 0x8EA2, 0xC8A1, 0xC8FE, + 0x25BE, 0x8EA2, 0xC9A1, 0xC9FE, 0x261C, 0x8EA2, 0xCAA1, 0xCAFE, 0x267A, + 0x8EA2, 0xCBA1, 0xCBFE, 0x26D8, 0x8EA2, 0xCCA1, 0xCCFE, 0x2736, 0x8EA2, + 0xCDA1, 0xCDFE, 0x2794, 0x8EA2, 0xCEA1, 0xCEFE, 0x27F2, 0x8EA2, 0xCFA1, + 0xCFFE, 0x2850, 0x8EA2, 0xD0A1, 0xD0FE, 0x28AE, 0x8EA2, 0xD1A1, 0xD1FE, + 0x290C, 0x8EA2, 0xD2A1, 0xD2FE, 0x296A, 0x8EA2, 0xD3A1, 0xD3FE, 0x29C8, + 0x8EA2, 0xD4A1, 0xD4FE, 0x2A26, 0x8EA2, 0xD5A1, 0xD5FE, 0x2A84, 0x8EA2, + 0xD6A1, 0xD6FE, 0x2AE2, 0x8EA2, 0xD7A1, 0xD7FE, 0x2B40, 0x8EA2, 0xD8A1, + 0xD8FE, 0x2B9E, 0x8EA2, 0xD9A1, 0xD9FE, 0x2BFC, 0x8EA2, 0xDAA1, 0xDAFE, + 0x2C5A, 0x8EA2, 0xDBA1, 0xDBFE, 0x2CB8, 0x8EA2, 0xDCA1, 0xDCFE, 0x2D16, + 0x8EA2, 0xDDA1, 0xDDFE, 0x2D74, 0x8EA2, 0xDEA1, 0xDEFE, 0x2DD2, 0x8EA2, + 0xDFA1, 0xDFFE, 0x2E30, 0x8EA2, 0xE0A1, 0xE0FE, 0x2E8E, 0x8EA2, 0xE1A1, + 0xE1FE, 0x2EEC, 0x8EA2, 0xE2A1, 0xE2FE, 0x2F4A, 0x8EA2, 0xE3A1, 0xE3FE, + 0x2FA8, 0x8EA2, 0xE4A1, 0xE4FE, 0x3006, 0x8EA2, 0xE5A1, 0xE5FE, 0x3064, + 0x8EA2, 0xE6A1, 0xE6FE, 0x30C2, 0x8EA2, 0xE7A1, 0xE7FE, 0x3120, 0x8EA2, + 0xE8A1, 0xE8FE, 0x317E, 0x8EA2, 0xE9A1, 0xE9FE, 0x31DC, 0x8EA2, 0xEAA1, + 0xEAFE, 0x323A, 0x8EA2, 0xEBA1, 0xEBFE, 0x3298, 0x8EA2, 0xECA1, 0xECFE, + 0x32F6, 0x8EA2, 0xEDA1, 0xEDFE, 0x3354, 0x8EA2, 0xEEA1, 0xEEFE, 0x33B2, + 0x8EA2, 0xEFA1, 0xEFFE, 0x3410, 0x8EA2, 0xF0A1, 0xF0FE, 0x346E, 0x8EA2, + 0xF1A1, 0xF1FE, 0x34CC, 0x8EA2, 0xF2A1, 0xF2C4, 0x352A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp new file mode 100644 index 0000000000..5348785d10 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp @@ -0,0 +1,189 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_CNS_EUC_V_0[180 * 3] = { + 0x0020, 0x007E, 0x3550, 0xA1A1, 0xA1AB, 0x0063, 0xA1AC, 0xA1AC, 0x354E, + 0xA1AD, 0xA1BA, 0x006F, 0xA1BB, 0xA1BB, 0x007C, 0xA1BC, 0xA1BC, 0x007E, + 0xA1BD, 0xA1BD, 0x007E, 0xA1BE, 0xA1BF, 0x0082, 0xA1C0, 0xA1C1, 0x0082, + 0xA1C2, 0xA1C3, 0x0086, 0xA1C4, 0xA1C5, 0x0086, 0xA1C6, 0xA1C7, 0x008A, + 0xA1C8, 0xA1C9, 0x008A, 0xA1CA, 0xA1CB, 0x008E, 0xA1CC, 0xA1CD, 0x008E, + 0xA1CE, 0xA1CF, 0x0092, 0xA1D0, 0xA1D1, 0x0092, 0xA1D2, 0xA1D3, 0x0096, + 0xA1D4, 0xA1D5, 0x0096, 0xA1D6, 0xA1D7, 0x009A, 0xA1D8, 0xA1D9, 0x009A, + 0xA1DA, 0xA1DB, 0x009E, 0xA1DC, 0xA1FE, 0x009E, 0xA2A1, 0xA2C3, 0x00C1, + 0xA2C4, 0xA2C4, 0x354F, 0xA2C5, 0xA2FE, 0x00E5, 0xA3A1, 0xA3CE, 0x011F, + 0xA4A1, 0xA4FE, 0x014D, 0xA5A1, 0xA5EC, 0x01AB, 0xA5EE, 0xA5F0, 0x01F7, + 0xA6A1, 0xA6BE, 0x01FA, 0xA7A1, 0xA7A1, 0x0253, 0xA7A2, 0xA7A4, 0x0218, + 0xA7A5, 0xA7A5, 0x0254, 0xA7A6, 0xA7A6, 0x021B, 0xA7A7, 0xA7A7, 0x025A, + 0xA7A8, 0xA7A8, 0x021C, 0xA7A9, 0xA7AC, 0x025B, 0xA7AD, 0xA7AF, 0x021D, + 0xA7B0, 0xA7B0, 0x025F, 0xA7B1, 0xA7B1, 0x176E, 0xA7B2, 0xA7B2, 0x0260, + 0xA7B3, 0xA7B3, 0x0262, 0xA7B4, 0xA7B4, 0x0220, 0xA7B5, 0xA7B5, 0x0263, + 0xA7B6, 0xA7B6, 0x176F, 0xA7B7, 0xA7B7, 0x0221, 0xA7B8, 0xA7B9, 0x0264, + 0xA7BA, 0xA7BA, 0x0222, 0xA7BB, 0xA7BB, 0x1770, 0xA7BC, 0xA7BC, 0x0223, + 0xA7BD, 0xA7BD, 0x0266, 0xA7BE, 0xA7BE, 0x0279, 0xA7BF, 0xA7BF, 0x1775, + 0xA7C0, 0xA7C1, 0x027A, 0xA7C2, 0xA7C2, 0x0224, 0xA7C3, 0xA7C6, 0x027C, + 0xA7C7, 0xA7C7, 0x0225, 0xA7C8, 0xA7CB, 0x0282, 0xA7CC, 0xA7CC, 0x1776, + 0xA7CD, 0xA7CD, 0x0286, 0xA7CE, 0xA7CE, 0x0226, 0xA7CF, 0xA7D0, 0x0288, + 0xA7D1, 0xA7D2, 0x028C, 0xA7D3, 0xA7D5, 0x0227, 0xA7D6, 0xA7D8, 0x028E, + 0xA7D9, 0xA7DA, 0x022A, 0xA7DB, 0xA7DB, 0x1777, 0xA7DC, 0xA7DF, 0x02D0, + 0xA7E0, 0xA7E0, 0x02D5, 0xA7E1, 0xA7E1, 0x022C, 0xA7E2, 0xA7E5, 0x02D6, + 0xA7E6, 0xA7E6, 0x022D, 0xA7E7, 0xA7ED, 0x02DA, 0xA7EE, 0xA7EE, 0x178A, + 0xA7EF, 0xA7F2, 0x02E1, 0xA7F3, 0xA7F3, 0x178C, 0xA7F4, 0xA7F8, 0x02E5, + 0xA7F9, 0xA7F9, 0x178D, 0xA7FA, 0xA7FD, 0x02EA, 0xA7FE, 0xA7FE, 0x0356, + 0xA8A1, 0xA8A6, 0x0357, 0xA8A7, 0xA8A7, 0x035E, 0xA8A8, 0xA8A8, 0x0362, + 0xA8A9, 0xA8AA, 0x022E, 0xA8AB, 0xA8B2, 0x0363, 0xA8B3, 0xA8B3, 0x17B2, + 0xA8B4, 0xA8B6, 0x036B, 0xA8B7, 0xA8BA, 0x03F6, 0xA8BB, 0xA8BB, 0x1812, + 0xA8BC, 0xA8BE, 0x03FA, 0xA8BF, 0xA8C3, 0x03FE, 0xA8C4, 0xA8CC, 0x0405, + 0xA8CD, 0xA8CD, 0x1813, 0xA8CE, 0xA8CE, 0x1818, 0xA8CF, 0xA8D2, 0x040F, + 0xA8D3, 0xA8D3, 0x1819, 0xA8D4, 0xA8D9, 0x0508, 0xA8DA, 0xA8DA, 0x18E7, + 0xA8DB, 0xA8E2, 0x050E, 0xA8E3, 0xA8E3, 0x0230, 0xA8E4, 0xA8E4, 0x051B, + 0xA8E5, 0xA8E7, 0x0520, 0xA8E8, 0xA8EB, 0x0696, 0xA8EC, 0xA8EC, 0x0231, + 0xA8ED, 0xA8F0, 0x069F, 0xA8F1, 0xA8FB, 0x0826, 0xA8FC, 0xA8FE, 0x09F5, + 0xA9A1, 0xA9A1, 0x1E33, 0xA9A2, 0xA9A2, 0x09F8, 0xA9A3, 0xA9A3, 0x1E34, + 0xA9A4, 0xA9A5, 0x09F9, 0xA9A6, 0xA9AB, 0x0BE1, 0xA9AC, 0xA9AE, 0x0DBB, + 0xA9AF, 0xA9AF, 0x2360, 0xA9B0, 0xA9B0, 0x2612, 0xA9B1, 0xA9B3, 0x0F7B, + 0xA9B4, 0xA9B5, 0x1100, 0xA9B6, 0xA9B6, 0x1289, 0xA9B7, 0xA9B8, 0x13B2, + 0xA9B9, 0xA9B9, 0x2F0D, 0xC2A1, 0xC2C1, 0x0232, 0xC4A1, 0xC4FE, 0x0253, + 0xC5A1, 0xC5FE, 0x02B1, 0xC6A1, 0xC6FE, 0x030F, 0xC7A1, 0xC7FE, 0x036D, + 0xC8A1, 0xC8FE, 0x03CB, 0xC9A1, 0xC9FE, 0x0429, 0xCAA1, 0xCAFE, 0x0487, + 0xCBA1, 0xCBFE, 0x04E5, 0xCCA1, 0xCCFE, 0x0543, 0xCDA1, 0xCDFE, 0x05A1, + 0xCEA1, 0xCEFE, 0x05FF, 0xCFA1, 0xCFFE, 0x065D, 0xD0A1, 0xD0FE, 0x06BB, + 0xD1A1, 0xD1FE, 0x0719, 0xD2A1, 0xD2FE, 0x0777, 0xD3A1, 0xD3FE, 0x07D5, + 0xD4A1, 0xD4FE, 0x0833, 0xD5A1, 0xD5FE, 0x0891, 0xD6A1, 0xD6FE, 0x08EF, + 0xD7A1, 0xD7FE, 0x094D, 0xD8A1, 0xD8FE, 0x09AB, 0xD9A1, 0xD9FE, 0x0A09, + 0xDAA1, 0xDAFE, 0x0A67, 0xDBA1, 0xDBFE, 0x0AC5, 0xDCA1, 0xDCFE, 0x0B23, + 0xDDA1, 0xDDFE, 0x0B81, 0xDEA1, 0xDEFE, 0x0BDF, 0xDFA1, 0xDFFE, 0x0C3D, + 0xE0A1, 0xE0FE, 0x0C9B, 0xE1A1, 0xE1FE, 0x0CF9, 0xE2A1, 0xE2FE, 0x0D57, + 0xE3A1, 0xE3FE, 0x0DB5, 0xE4A1, 0xE4FE, 0x0E13, 0xE5A1, 0xE5FE, 0x0E71, + 0xE6A1, 0xE6FE, 0x0ECF, 0xE7A1, 0xE7FE, 0x0F2D, 0xE8A1, 0xE8FE, 0x0F8B, + 0xE9A1, 0xE9FE, 0x0FE9, 0xEAA1, 0xEAFE, 0x1047, 0xEBA1, 0xEBFE, 0x10A5, + 0xECA1, 0xECFE, 0x1103, 0xEDA1, 0xEDFE, 0x1161, 0xEEA1, 0xEEFE, 0x11BF, + 0xEFA1, 0xEFFE, 0x121D, 0xF0A1, 0xF0FE, 0x127B, 0xF1A1, 0xF1FE, 0x12D9, + 0xF2A1, 0xF2FE, 0x1337, 0xF3A1, 0xF3FE, 0x1395, 0xF4A1, 0xF4FE, 0x13F3, + 0xF5A1, 0xF5FE, 0x1451, 0xF6A1, 0xF6FE, 0x14AF, 0xF7A1, 0xF7FE, 0x150D, + 0xF8A1, 0xF8FE, 0x156B, 0xF9A1, 0xF9FE, 0x15C9, 0xFAA1, 0xFAFE, 0x1627, + 0xFBA1, 0xFBFE, 0x1685, 0xFCA1, 0xFCFE, 0x16E3, 0xFDA1, 0xFDCB, 0x1741, +}; + +const FX_WORD g_FXCMAP_CNS_EUC_V_0_DWord[261 * 4] = { + 0x8EA1, 0xA1A1, 0xA1AB, 0x0063, 0x8EA1, 0xA1AC, 0xA1AC, 0x354E, 0x8EA1, + 0xA1AD, 0xA1BA, 0x006F, 0x8EA1, 0xA1BB, 0xA1BB, 0x007C, 0x8EA1, 0xA1BC, + 0xA1BC, 0x007E, 0x8EA1, 0xA1BD, 0xA1BD, 0x007E, 0x8EA1, 0xA1BE, 0xA1BF, + 0x0082, 0x8EA1, 0xA1C0, 0xA1C1, 0x0082, 0x8EA1, 0xA1C2, 0xA1C3, 0x0086, + 0x8EA1, 0xA1C4, 0xA1C5, 0x0086, 0x8EA1, 0xA1C6, 0xA1C7, 0x008A, 0x8EA1, + 0xA1C8, 0xA1C9, 0x008A, 0x8EA1, 0xA1CA, 0xA1CB, 0x008E, 0x8EA1, 0xA1CC, + 0xA1CD, 0x008E, 0x8EA1, 0xA1CE, 0xA1CF, 0x0092, 0x8EA1, 0xA1D0, 0xA1D1, + 0x0092, 0x8EA1, 0xA1D2, 0xA1D3, 0x0096, 0x8EA1, 0xA1D4, 0xA1D5, 0x0096, + 0x8EA1, 0xA1D6, 0xA1D7, 0x009A, 0x8EA1, 0xA1D8, 0xA1D9, 0x009A, 0x8EA1, + 0xA1DA, 0xA1DB, 0x009E, 0x8EA1, 0xA1DC, 0xA1FE, 0x009E, 0x8EA1, 0xA2A1, + 0xA2C3, 0x00C1, 0x8EA1, 0xA2C4, 0xA2C4, 0x354F, 0x8EA1, 0xA2C5, 0xA2FE, + 0x00E5, 0x8EA1, 0xA3A1, 0xA3CE, 0x011F, 0x8EA1, 0xA4A1, 0xA4FE, 0x014D, + 0x8EA1, 0xA5A1, 0xA5EC, 0x01AB, 0x8EA1, 0xA5EE, 0xA5F0, 0x01F7, 0x8EA1, + 0xA6A1, 0xA6BE, 0x01FA, 0x8EA1, 0xA7A1, 0xA7A1, 0x0253, 0x8EA1, 0xA7A2, + 0xA7A4, 0x0218, 0x8EA1, 0xA7A5, 0xA7A5, 0x0254, 0x8EA1, 0xA7A6, 0xA7A6, + 0x021B, 0x8EA1, 0xA7A7, 0xA7A7, 0x025A, 0x8EA1, 0xA7A8, 0xA7A8, 0x021C, + 0x8EA1, 0xA7A9, 0xA7AC, 0x025B, 0x8EA1, 0xA7AD, 0xA7AF, 0x021D, 0x8EA1, + 0xA7B0, 0xA7B0, 0x025F, 0x8EA1, 0xA7B1, 0xA7B1, 0x176E, 0x8EA1, 0xA7B2, + 0xA7B2, 0x0260, 0x8EA1, 0xA7B3, 0xA7B3, 0x0262, 0x8EA1, 0xA7B4, 0xA7B4, + 0x0220, 0x8EA1, 0xA7B5, 0xA7B5, 0x0263, 0x8EA1, 0xA7B6, 0xA7B6, 0x176F, + 0x8EA1, 0xA7B7, 0xA7B7, 0x0221, 0x8EA1, 0xA7B8, 0xA7B9, 0x0264, 0x8EA1, + 0xA7BA, 0xA7BA, 0x0222, 0x8EA1, 0xA7BB, 0xA7BB, 0x1770, 0x8EA1, 0xA7BC, + 0xA7BC, 0x0223, 0x8EA1, 0xA7BD, 0xA7BD, 0x0266, 0x8EA1, 0xA7BE, 0xA7BE, + 0x0279, 0x8EA1, 0xA7BF, 0xA7BF, 0x1775, 0x8EA1, 0xA7C0, 0xA7C1, 0x027A, + 0x8EA1, 0xA7C2, 0xA7C2, 0x0224, 0x8EA1, 0xA7C3, 0xA7C6, 0x027C, 0x8EA1, + 0xA7C7, 0xA7C7, 0x0225, 0x8EA1, 0xA7C8, 0xA7CB, 0x0282, 0x8EA1, 0xA7CC, + 0xA7CC, 0x1776, 0x8EA1, 0xA7CD, 0xA7CD, 0x0286, 0x8EA1, 0xA7CE, 0xA7CE, + 0x0226, 0x8EA1, 0xA7CF, 0xA7D0, 0x0288, 0x8EA1, 0xA7D1, 0xA7D2, 0x028C, + 0x8EA1, 0xA7D3, 0xA7D5, 0x0227, 0x8EA1, 0xA7D6, 0xA7D8, 0x028E, 0x8EA1, + 0xA7D9, 0xA7DA, 0x022A, 0x8EA1, 0xA7DB, 0xA7DB, 0x1777, 0x8EA1, 0xA7DC, + 0xA7DF, 0x02D0, 0x8EA1, 0xA7E0, 0xA7E0, 0x02D5, 0x8EA1, 0xA7E1, 0xA7E1, + 0x022C, 0x8EA1, 0xA7E2, 0xA7E5, 0x02D6, 0x8EA1, 0xA7E6, 0xA7E6, 0x022D, + 0x8EA1, 0xA7E7, 0xA7ED, 0x02DA, 0x8EA1, 0xA7EE, 0xA7EE, 0x178A, 0x8EA1, + 0xA7EF, 0xA7F2, 0x02E1, 0x8EA1, 0xA7F3, 0xA7F3, 0x178C, 0x8EA1, 0xA7F4, + 0xA7F8, 0x02E5, 0x8EA1, 0xA7F9, 0xA7F9, 0x178D, 0x8EA1, 0xA7FA, 0xA7FD, + 0x02EA, 0x8EA1, 0xA7FE, 0xA7FE, 0x0356, 0x8EA1, 0xA8A1, 0xA8A6, 0x0357, + 0x8EA1, 0xA8A7, 0xA8A7, 0x035E, 0x8EA1, 0xA8A8, 0xA8A8, 0x0362, 0x8EA1, + 0xA8A9, 0xA8AA, 0x022E, 0x8EA1, 0xA8AB, 0xA8B2, 0x0363, 0x8EA1, 0xA8B3, + 0xA8B3, 0x17B2, 0x8EA1, 0xA8B4, 0xA8B6, 0x036B, 0x8EA1, 0xA8B7, 0xA8BA, + 0x03F6, 0x8EA1, 0xA8BB, 0xA8BB, 0x1812, 0x8EA1, 0xA8BC, 0xA8BE, 0x03FA, + 0x8EA1, 0xA8BF, 0xA8C3, 0x03FE, 0x8EA1, 0xA8C4, 0xA8CC, 0x0405, 0x8EA1, + 0xA8CD, 0xA8CD, 0x1813, 0x8EA1, 0xA8CE, 0xA8CE, 0x1818, 0x8EA1, 0xA8CF, + 0xA8D2, 0x040F, 0x8EA1, 0xA8D3, 0xA8D3, 0x1819, 0x8EA1, 0xA8D4, 0xA8D9, + 0x0508, 0x8EA1, 0xA8DA, 0xA8DA, 0x18E7, 0x8EA1, 0xA8DB, 0xA8E2, 0x050E, + 0x8EA1, 0xA8E3, 0xA8E3, 0x0230, 0x8EA1, 0xA8E4, 0xA8E4, 0x051B, 0x8EA1, + 0xA8E5, 0xA8E7, 0x0520, 0x8EA1, 0xA8E8, 0xA8EB, 0x0696, 0x8EA1, 0xA8EC, + 0xA8EC, 0x0231, 0x8EA1, 0xA8ED, 0xA8F0, 0x069F, 0x8EA1, 0xA8F1, 0xA8FB, + 0x0826, 0x8EA1, 0xA8FC, 0xA8FE, 0x09F5, 0x8EA1, 0xA9A1, 0xA9A1, 0x1E33, + 0x8EA1, 0xA9A2, 0xA9A2, 0x09F8, 0x8EA1, 0xA9A3, 0xA9A3, 0x1E34, 0x8EA1, + 0xA9A4, 0xA9A5, 0x09F9, 0x8EA1, 0xA9A6, 0xA9AB, 0x0BE1, 0x8EA1, 0xA9AC, + 0xA9AE, 0x0DBB, 0x8EA1, 0xA9AF, 0xA9AF, 0x2360, 0x8EA1, 0xA9B0, 0xA9B0, + 0x2612, 0x8EA1, 0xA9B1, 0xA9B3, 0x0F7B, 0x8EA1, 0xA9B4, 0xA9B5, 0x1100, + 0x8EA1, 0xA9B6, 0xA9B6, 0x1289, 0x8EA1, 0xA9B7, 0xA9B8, 0x13B2, 0x8EA1, + 0xA9B9, 0xA9B9, 0x2F0D, 0x8EA1, 0xC2A1, 0xC2C1, 0x0232, 0x8EA1, 0xC4A1, + 0xC4FE, 0x0253, 0x8EA1, 0xC5A1, 0xC5FE, 0x02B1, 0x8EA1, 0xC6A1, 0xC6FE, + 0x030F, 0x8EA1, 0xC7A1, 0xC7FE, 0x036D, 0x8EA1, 0xC8A1, 0xC8FE, 0x03CB, + 0x8EA1, 0xC9A1, 0xC9FE, 0x0429, 0x8EA1, 0xCAA1, 0xCAFE, 0x0487, 0x8EA1, + 0xCBA1, 0xCBFE, 0x04E5, 0x8EA1, 0xCCA1, 0xCCFE, 0x0543, 0x8EA1, 0xCDA1, + 0xCDFE, 0x05A1, 0x8EA1, 0xCEA1, 0xCEFE, 0x05FF, 0x8EA1, 0xCFA1, 0xCFFE, + 0x065D, 0x8EA1, 0xD0A1, 0xD0FE, 0x06BB, 0x8EA1, 0xD1A1, 0xD1FE, 0x0719, + 0x8EA1, 0xD2A1, 0xD2FE, 0x0777, 0x8EA1, 0xD3A1, 0xD3FE, 0x07D5, 0x8EA1, + 0xD4A1, 0xD4FE, 0x0833, 0x8EA1, 0xD5A1, 0xD5FE, 0x0891, 0x8EA1, 0xD6A1, + 0xD6FE, 0x08EF, 0x8EA1, 0xD7A1, 0xD7FE, 0x094D, 0x8EA1, 0xD8A1, 0xD8FE, + 0x09AB, 0x8EA1, 0xD9A1, 0xD9FE, 0x0A09, 0x8EA1, 0xDAA1, 0xDAFE, 0x0A67, + 0x8EA1, 0xDBA1, 0xDBFE, 0x0AC5, 0x8EA1, 0xDCA1, 0xDCFE, 0x0B23, 0x8EA1, + 0xDDA1, 0xDDFE, 0x0B81, 0x8EA1, 0xDEA1, 0xDEFE, 0x0BDF, 0x8EA1, 0xDFA1, + 0xDFFE, 0x0C3D, 0x8EA1, 0xE0A1, 0xE0FE, 0x0C9B, 0x8EA1, 0xE1A1, 0xE1FE, + 0x0CF9, 0x8EA1, 0xE2A1, 0xE2FE, 0x0D57, 0x8EA1, 0xE3A1, 0xE3FE, 0x0DB5, + 0x8EA1, 0xE4A1, 0xE4FE, 0x0E13, 0x8EA1, 0xE5A1, 0xE5FE, 0x0E71, 0x8EA1, + 0xE6A1, 0xE6FE, 0x0ECF, 0x8EA1, 0xE7A1, 0xE7FE, 0x0F2D, 0x8EA1, 0xE8A1, + 0xE8FE, 0x0F8B, 0x8EA1, 0xE9A1, 0xE9FE, 0x0FE9, 0x8EA1, 0xEAA1, 0xEAFE, + 0x1047, 0x8EA1, 0xEBA1, 0xEBFE, 0x10A5, 0x8EA1, 0xECA1, 0xECFE, 0x1103, + 0x8EA1, 0xEDA1, 0xEDFE, 0x1161, 0x8EA1, 0xEEA1, 0xEEFE, 0x11BF, 0x8EA1, + 0xEFA1, 0xEFFE, 0x121D, 0x8EA1, 0xF0A1, 0xF0FE, 0x127B, 0x8EA1, 0xF1A1, + 0xF1FE, 0x12D9, 0x8EA1, 0xF2A1, 0xF2FE, 0x1337, 0x8EA1, 0xF3A1, 0xF3FE, + 0x1395, 0x8EA1, 0xF4A1, 0xF4FE, 0x13F3, 0x8EA1, 0xF5A1, 0xF5FE, 0x1451, + 0x8EA1, 0xF6A1, 0xF6FE, 0x14AF, 0x8EA1, 0xF7A1, 0xF7FE, 0x150D, 0x8EA1, + 0xF8A1, 0xF8FE, 0x156B, 0x8EA1, 0xF9A1, 0xF9FE, 0x15C9, 0x8EA1, 0xFAA1, + 0xFAFE, 0x1627, 0x8EA1, 0xFBA1, 0xFBFE, 0x1685, 0x8EA1, 0xFCA1, 0xFCFE, + 0x16E3, 0x8EA1, 0xFDA1, 0xFDCB, 0x1741, 0x8EA2, 0xA1A1, 0xA1FE, 0x176C, + 0x8EA2, 0xA2A1, 0xA2FE, 0x17CA, 0x8EA2, 0xA3A1, 0xA3FE, 0x1828, 0x8EA2, + 0xA4A1, 0xA4FE, 0x1886, 0x8EA2, 0xA5A1, 0xA5FE, 0x18E4, 0x8EA2, 0xA6A1, + 0xA6FE, 0x1942, 0x8EA2, 0xA7A1, 0xA7FE, 0x19A0, 0x8EA2, 0xA8A1, 0xA8FE, + 0x19FE, 0x8EA2, 0xA9A1, 0xA9FE, 0x1A5C, 0x8EA2, 0xAAA1, 0xAAFE, 0x1ABA, + 0x8EA2, 0xABA1, 0xABFE, 0x1B18, 0x8EA2, 0xACA1, 0xACFE, 0x1B76, 0x8EA2, + 0xADA1, 0xADFE, 0x1BD4, 0x8EA2, 0xAEA1, 0xAEFE, 0x1C32, 0x8EA2, 0xAFA1, + 0xAFFE, 0x1C90, 0x8EA2, 0xB0A1, 0xB0FE, 0x1CEE, 0x8EA2, 0xB1A1, 0xB1FE, + 0x1D4C, 0x8EA2, 0xB2A1, 0xB2FE, 0x1DAA, 0x8EA2, 0xB3A1, 0xB3FE, 0x1E08, + 0x8EA2, 0xB4A1, 0xB4FE, 0x1E66, 0x8EA2, 0xB5A1, 0xB5FE, 0x1EC4, 0x8EA2, + 0xB6A1, 0xB6FE, 0x1F22, 0x8EA2, 0xB7A1, 0xB7FE, 0x1F80, 0x8EA2, 0xB8A1, + 0xB8FE, 0x1FDE, 0x8EA2, 0xB9A1, 0xB9FE, 0x203C, 0x8EA2, 0xBAA1, 0xBAFE, + 0x209A, 0x8EA2, 0xBBA1, 0xBBFE, 0x20F8, 0x8EA2, 0xBCA1, 0xBCFE, 0x2156, + 0x8EA2, 0xBDA1, 0xBDFE, 0x21B4, 0x8EA2, 0xBEA1, 0xBEFE, 0x2212, 0x8EA2, + 0xBFA1, 0xBFFE, 0x2270, 0x8EA2, 0xC0A1, 0xC0FE, 0x22CE, 0x8EA2, 0xC1A1, + 0xC1FE, 0x232C, 0x8EA2, 0xC2A1, 0xC2FE, 0x238A, 0x8EA2, 0xC3A1, 0xC3FE, + 0x23E8, 0x8EA2, 0xC4A1, 0xC4FE, 0x2446, 0x8EA2, 0xC5A1, 0xC5FE, 0x24A4, + 0x8EA2, 0xC6A1, 0xC6FE, 0x2502, 0x8EA2, 0xC7A1, 0xC7FE, 0x2560, 0x8EA2, + 0xC8A1, 0xC8FE, 0x25BE, 0x8EA2, 0xC9A1, 0xC9FE, 0x261C, 0x8EA2, 0xCAA1, + 0xCAFE, 0x267A, 0x8EA2, 0xCBA1, 0xCBFE, 0x26D8, 0x8EA2, 0xCCA1, 0xCCFE, + 0x2736, 0x8EA2, 0xCDA1, 0xCDFE, 0x2794, 0x8EA2, 0xCEA1, 0xCEFE, 0x27F2, + 0x8EA2, 0xCFA1, 0xCFFE, 0x2850, 0x8EA2, 0xD0A1, 0xD0FE, 0x28AE, 0x8EA2, + 0xD1A1, 0xD1FE, 0x290C, 0x8EA2, 0xD2A1, 0xD2FE, 0x296A, 0x8EA2, 0xD3A1, + 0xD3FE, 0x29C8, 0x8EA2, 0xD4A1, 0xD4FE, 0x2A26, 0x8EA2, 0xD5A1, 0xD5FE, + 0x2A84, 0x8EA2, 0xD6A1, 0xD6FE, 0x2AE2, 0x8EA2, 0xD7A1, 0xD7FE, 0x2B40, + 0x8EA2, 0xD8A1, 0xD8FE, 0x2B9E, 0x8EA2, 0xD9A1, 0xD9FE, 0x2BFC, 0x8EA2, + 0xDAA1, 0xDAFE, 0x2C5A, 0x8EA2, 0xDBA1, 0xDBFE, 0x2CB8, 0x8EA2, 0xDCA1, + 0xDCFE, 0x2D16, 0x8EA2, 0xDDA1, 0xDDFE, 0x2D74, 0x8EA2, 0xDEA1, 0xDEFE, + 0x2DD2, 0x8EA2, 0xDFA1, 0xDFFE, 0x2E30, 0x8EA2, 0xE0A1, 0xE0FE, 0x2E8E, + 0x8EA2, 0xE1A1, 0xE1FE, 0x2EEC, 0x8EA2, 0xE2A1, 0xE2FE, 0x2F4A, 0x8EA2, + 0xE3A1, 0xE3FE, 0x2FA8, 0x8EA2, 0xE4A1, 0xE4FE, 0x3006, 0x8EA2, 0xE5A1, + 0xE5FE, 0x3064, 0x8EA2, 0xE6A1, 0xE6FE, 0x30C2, 0x8EA2, 0xE7A1, 0xE7FE, + 0x3120, 0x8EA2, 0xE8A1, 0xE8FE, 0x317E, 0x8EA2, 0xE9A1, 0xE9FE, 0x31DC, + 0x8EA2, 0xEAA1, 0xEAFE, 0x323A, 0x8EA2, 0xEBA1, 0xEBFE, 0x3298, 0x8EA2, + 0xECA1, 0xECFE, 0x32F6, 0x8EA2, 0xEDA1, 0xEDFE, 0x3354, 0x8EA2, 0xEEA1, + 0xEEFE, 0x33B2, 0x8EA2, 0xEFA1, 0xEFFE, 0x3410, 0x8EA2, 0xF0A1, 0xF0FE, + 0x346E, 0x8EA2, 0xF1A1, 0xF1FE, 0x34CC, 0x8EA2, 0xF2A1, 0xF2C4, 0x352A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp new file mode 100644 index 0000000000..5f7ccd42ab --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp @@ -0,0 +1,95 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_ETen_B5_H_0[254 * 3] = { + 0x0020, 0x007E, 0x3550, 0xA140, 0xA158, 0x0063, 0xA159, 0xA15C, 0x35AF, + 0xA15D, 0xA17E, 0x0080, 0xA1A1, 0xA1F5, 0x00A2, 0xA1F6, 0xA1F6, 0x00F8, + 0xA1F7, 0xA1F7, 0x00F7, 0xA1F8, 0xA1FE, 0x00F9, 0xA240, 0xA27E, 0x0100, + 0xA2A1, 0xA2FE, 0x013F, 0xA340, 0xA37E, 0x019D, 0xA3A1, 0xA3BB, 0x01DC, + 0xA3BD, 0xA3BF, 0x01F7, 0xA440, 0xA47E, 0x0253, 0xA4A1, 0xA4FE, 0x0292, + 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, 0xA640, 0xA67E, 0x038D, + 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, 0xA7A1, 0xA7FE, 0x0469, + 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, 0xA940, 0xA97E, 0x0564, + 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, 0xAAA1, 0xAAFE, 0x0640, + 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, 0xAC40, 0xAC7E, 0x073B, + 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, 0xAD40, 0xAD7E, 0x07D7, + 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, 0xAEA1, 0xAEFE, 0x08B3, + 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, 0xAFD0, 0xAFFE, 0x0980, + 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, 0xB140, 0xB17E, 0x0A4C, + 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, 0xB2A1, 0xB2FE, 0x0B28, + 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, 0xB440, 0xB47E, 0x0C23, + 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, 0xB5A1, 0xB5FE, 0x0CFF, + 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, 0xB740, 0xB77E, 0x0DFA, + 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, 0xB8A1, 0xB8FE, 0x0ED6, + 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, 0xBA40, 0xBA7E, 0x0FD1, + 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, 0xBBA1, 0xBBC7, 0x10AD, + 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, 0xBCA1, 0xBCFE, 0x114B, + 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, 0xBE40, 0xBE51, 0x1246, + 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, 0xBEA1, 0xBEFE, 0x1284, + 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, 0xC040, 0xC07E, 0x137F, + 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, 0xC1A1, 0xC1AA, 0x145B, + 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, 0xC2A1, 0xC2CA, 0x14F9, + 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, 0xC340, 0xC360, 0x1556, + 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, 0xC3B9, 0xC3B9, 0x15AF, + 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, 0xC440, 0xC455, 0x15F4, + 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, 0xC4A1, 0xC4FE, 0x1632, + 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, 0xC640, 0xC67E, 0x172D, + 0xC6A1, 0xC6BE, 0x01FA, 0xC6BF, 0xC6D7, 0x0219, 0xC6D8, 0xC6DE, 0x35B3, + 0xC6DF, 0xC6DF, 0x1794, 0xC6E0, 0xC6FE, 0x35BA, 0xC740, 0xC77E, 0x35D9, + 0xC7A1, 0xC7FE, 0x3618, 0xC840, 0xC87E, 0x3676, 0xC8A1, 0xC8D3, 0x36B5, + 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776, + 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797, + 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809, + 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E, + 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942, + 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E, + 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19, + 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5, + 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0, + 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC, + 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7, + 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3, + 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001, + 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F, + 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A, + 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216, + 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274, + 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312, + 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE, + 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B, + 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527, + 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622, + 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE, + 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9, + 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5, + 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0, + 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC, + 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42, + 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8, + 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86, + 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3, + 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F, + 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8, + 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014, + 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8, + 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C, + 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE, + 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160, + 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E, + 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC, + 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161, + 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0, + 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D, + 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6, + 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327, + 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF, + 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA, + 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511, + 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E, + 0xF9D2, 0xF9D5, 0x354A, 0xF9D6, 0xF9FE, 0x36E8, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp new file mode 100644 index 0000000000..3de105a413 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp @@ -0,0 +1,15 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_ETen_B5_V_0[13 * 3] = { + 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, + 0x35B1, 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, + 0xA166, 0x008A, 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, + 0xA171, 0xA172, 0x0096, 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, + 0x009E, 0xA1E3, 0xA1E3, 0x354F, 0xC6E4, 0xC6E5, 0x3711, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp new file mode 100644 index 0000000000..267fee6af8 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp @@ -0,0 +1,11 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_ETenms_B5_H_0[1 * 3] = { + 0x0020, 0x007E, 0x0001, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp new file mode 100644 index 0000000000..4f555fadba --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp @@ -0,0 +1,16 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_ETenms_B5_V_0[18 * 3] = { + 0xA14B, 0xA14B, 0x354E, 0xA14C, 0xA14C, 0x006D, 0xA156, 0xA156, 0x0138, + 0xA158, 0xA158, 0x007A, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, 0x35B1, + 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, 0xA166, 0x008A, + 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, 0xA171, 0xA172, 0x0096, + 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, 0x009E, 0xA17D, 0xA17E, 0x0082, + 0xA1A1, 0xA1A2, 0x0086, 0xA1A3, 0xA1A4, 0x008A, 0xC6E4, 0xC6E5, 0x3711, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp new file mode 100644 index 0000000000..67459a505f --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp @@ -0,0 +1,414 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_HKscs_B5_H_5[1210 * 3] = { + 0x0020, 0x007E, 0x0001, 0x8740, 0x8765, 0x4A15, 0x8767, 0x8779, 0x4A3B, + 0x8840, 0x8855, 0x44C9, 0x8856, 0x887E, 0x4961, 0x88A1, 0x88A8, 0x498A, + 0x88A9, 0x88AA, 0x499C, 0x8940, 0x8941, 0x4534, 0x8943, 0x8943, 0x4536, + 0x8946, 0x8949, 0x4537, 0x894C, 0x894C, 0x453B, 0x894D, 0x894D, 0x43C3, + 0x894E, 0x8950, 0x453C, 0x8951, 0x8951, 0x439A, 0x8952, 0x897E, 0x453F, + 0x89A1, 0x89A5, 0x456C, 0x89A6, 0x89A6, 0x43A2, 0x89AB, 0x89AB, 0x43EC, + 0x89AC, 0x89AC, 0x4571, 0x89AD, 0x89AD, 0x43EB, 0x89AE, 0x89AE, 0x4572, + 0x89B0, 0x89B2, 0x4573, 0x89B5, 0x89BF, 0x4576, 0x89C1, 0x89C3, 0x4581, + 0x89C5, 0x89CE, 0x4584, 0x89CF, 0x89CF, 0x43BC, 0x89D0, 0x89D8, 0x458E, + 0x89D9, 0x89D9, 0x439C, 0x89DA, 0x89DA, 0x4597, 0x89DB, 0x89DB, 0x439E, + 0x89DC, 0x89DC, 0x4598, 0x89DD, 0x89DD, 0x439F, 0x89DE, 0x89E0, 0x4599, + 0x89E1, 0x89E1, 0x43A1, 0x89E2, 0x89E2, 0x459C, 0x89E3, 0x89E3, 0x43A3, + 0x89E4, 0x89E9, 0x459D, 0x89EA, 0x89EB, 0x43A5, 0x89EC, 0x89F9, 0x45A3, + 0x89FA, 0x89FA, 0x43A9, 0x89FB, 0x89FE, 0x45B1, 0x8A40, 0x8A40, 0x45B5, + 0x8A41, 0x8A41, 0x4309, 0x8A43, 0x8A4C, 0x430B, 0x8A4D, 0x8A4D, 0x45B6, + 0x8A4E, 0x8A59, 0x4316, 0x8A5A, 0x8A5A, 0x45B7, 0x8A5B, 0x8A5D, 0x4323, + 0x8A5E, 0x8A5E, 0x45B8, 0x8A5F, 0x8A62, 0x4327, 0x8A64, 0x8A70, 0x432C, + 0x8A71, 0x8A71, 0x45B9, 0x8A72, 0x8A74, 0x433A, 0x8A76, 0x8A76, 0x433E, + 0x8A77, 0x8A77, 0x45BA, 0x8A78, 0x8A79, 0x4340, 0x8A7A, 0x8A7A, 0x45BB, + 0x8A7B, 0x8A7B, 0x4343, 0x8A7C, 0x8A7C, 0x45BC, 0x8A7D, 0x8A7D, 0x4345, + 0x8A7E, 0x8A7E, 0x45BD, 0x8AA1, 0x8AA7, 0x4347, 0x8AA8, 0x8AA8, 0x45BE, + 0x8AA9, 0x8AAA, 0x434F, 0x8AAC, 0x8AB0, 0x4352, 0x8AB2, 0x8AB5, 0x4358, + 0x8AB6, 0x8AB6, 0x45BF, 0x8AB7, 0x8AB7, 0x435D, 0x8AB8, 0x8AB8, 0x45C0, + 0x8AB9, 0x8AB9, 0x435F, 0x8ABB, 0x8AC7, 0x4361, 0x8AC9, 0x8ACB, 0x436F, + 0x8ACC, 0x8ACC, 0x45C1, 0x8ACE, 0x8AD5, 0x4374, 0x8AD6, 0x8AD7, 0x45C2, + 0x8AD8, 0x8ADC, 0x437E, 0x8ADF, 0x8AE5, 0x4385, 0x8AE6, 0x8AE6, 0x45C4, + 0x8AE7, 0x8AE7, 0x43DB, 0x8AE8, 0x8AF4, 0x45C5, 0x8AF6, 0x8AFE, 0x45D2, + 0x8B40, 0x8B40, 0x45DB, 0x8B41, 0x8B42, 0x438C, 0x8B43, 0x8B44, 0x45DC, + 0x8B45, 0x8B45, 0x438E, 0x8B46, 0x8B46, 0x45DE, 0x8B47, 0x8B47, 0x438F, + 0x8B48, 0x8B48, 0x45DF, 0x8B49, 0x8B49, 0x4390, 0x8B4A, 0x8B4A, 0x45E0, + 0x8B4B, 0x8B4B, 0x4391, 0x8B4C, 0x8B4C, 0x45E1, 0x8B4D, 0x8B50, 0x4392, + 0x8B51, 0x8B53, 0x45E2, 0x8B55, 0x8B57, 0x45E5, 0x8B58, 0x8B58, 0x4397, + 0x8B59, 0x8B59, 0x45E8, 0x8B5A, 0x8B5A, 0x4398, 0x8B5B, 0x8B5B, 0x43C4, + 0x8B5C, 0x8B60, 0x45E9, 0x8B61, 0x8B61, 0x43A7, 0x8B62, 0x8B67, 0x45EE, + 0x8B68, 0x8B68, 0x43AC, 0x8B69, 0x8B7E, 0x45F4, 0x8BA1, 0x8BBF, 0x460A, + 0x8BC0, 0x8BDC, 0x44DF, 0x8BDE, 0x8BFD, 0x44FC, 0x8C40, 0x8C61, 0x49A1, + 0x8C62, 0x8C62, 0x4A4E, 0x8C63, 0x8C7E, 0x49C3, 0x8CA1, 0x8CA5, 0x49DF, + 0x8CA7, 0x8CC5, 0x49E4, 0x8CC9, 0x8CCC, 0x4A03, 0x8CCE, 0x8CDA, 0x4A07, + 0x8CDB, 0x8CDB, 0x4A4F, 0x8CDC, 0x8CDC, 0x4A14, 0x8CDD, 0x8CE4, 0x4A50, + 0x8CE6, 0x8CFE, 0x4A58, 0x8D40, 0x8D40, 0x4A71, 0x8D42, 0x8D5F, 0x4A72, + 0x8D60, 0x8D61, 0x4629, 0x8D62, 0x8D62, 0x43BA, 0x8D63, 0x8D67, 0x462B, + 0x8D68, 0x8D68, 0x43BB, 0x8D69, 0x8D69, 0x43A0, 0x8D6A, 0x8D6A, 0x43BD, + 0x8D6B, 0x8D6D, 0x4630, 0x8D6E, 0x8D6E, 0x43BE, 0x8D6F, 0x8D75, 0x4633, + 0x8D76, 0x8D76, 0x43BF, 0x8D77, 0x8D79, 0x463A, 0x8D7A, 0x8D7A, 0x43C0, + 0x8D7B, 0x8D7B, 0x463D, 0x8D7C, 0x8D7C, 0x43C1, 0x8D7D, 0x8D7E, 0x463E, + 0x8DA1, 0x8DA4, 0x4640, 0x8DA5, 0x8DA5, 0x43C2, 0x8DA6, 0x8DA7, 0x4644, + 0x8DA8, 0x8DA8, 0x43B9, 0x8DA9, 0x8DA9, 0x43AD, 0x8DAA, 0x8DB5, 0x4646, + 0x8DB6, 0x8DB6, 0x43C7, 0x8DB7, 0x8DC2, 0x4652, 0x8DC3, 0x8DC3, 0x43C8, + 0x8DC4, 0x8DF9, 0x465E, 0x8DFA, 0x8DFA, 0x43F9, 0x8DFB, 0x8DFE, 0x4694, + 0x8E40, 0x8E44, 0x372B, 0x8E45, 0x8E45, 0x4698, 0x8E46, 0x8E68, 0x3730, + 0x8E69, 0x8E69, 0x1055, 0x8E6A, 0x8E6A, 0x3754, 0x8E6B, 0x8E6C, 0x4699, + 0x8E6D, 0x8E6E, 0x3756, 0x8E6F, 0x8E6F, 0x2DE8, 0x8E70, 0x8E75, 0x3759, + 0x8E76, 0x8E76, 0x469B, 0x8E77, 0x8E7A, 0x375F, 0x8E7B, 0x8E7B, 0x469C, + 0x8E7C, 0x8E7D, 0x3764, 0x8E7E, 0x8E7E, 0x0121, 0x8EA1, 0x8EA5, 0x3766, + 0x8EA6, 0x8EA6, 0x469D, 0x8EA7, 0x8EAA, 0x376B, 0x8EAB, 0x8EAB, 0x106B, + 0x8EAC, 0x8EB3, 0x3770, 0x8EB4, 0x8EB4, 0x1326, 0x8EB5, 0x8EB7, 0x3779, + 0x8EB8, 0x8EB8, 0x469E, 0x8EB9, 0x8EC8, 0x377D, 0x8EC9, 0x8EC9, 0x469F, + 0x8ECA, 0x8ECC, 0x378D, 0x8ECD, 0x8ECD, 0x066B, 0x8ECE, 0x8ECF, 0x3791, + 0x8ED0, 0x8ED0, 0x132E, 0x8ED1, 0x8EE4, 0x3794, 0x8EE5, 0x8EE5, 0x46A0, + 0x8EE6, 0x8EEE, 0x37A8, 0x8EEF, 0x8EEF, 0x46A1, 0x8EF0, 0x8EF5, 0x37B1, + 0x8EF6, 0x8EF6, 0x46A2, 0x8EF7, 0x8EFE, 0x37B8, 0x8F40, 0x8F56, 0x37C0, + 0x8F57, 0x8F57, 0x0D35, 0x8F58, 0x8F58, 0x37D8, 0x8F59, 0x8F59, 0x46A3, + 0x8F5A, 0x8F5E, 0x37D9, 0x8F5F, 0x8F5F, 0x46A4, 0x8F60, 0x8F66, 0x37DE, + 0x8F67, 0x8F67, 0x46A5, 0x8F68, 0x8F68, 0x37E5, 0x8F69, 0x8F69, 0x27C2, + 0x8F6A, 0x8F6D, 0x37E7, 0x8F6E, 0x8F6E, 0x22AD, 0x8F6F, 0x8F78, 0x37EC, + 0x8F79, 0x8F79, 0x46A6, 0x8F7A, 0x8F7E, 0x37F7, 0x8FA1, 0x8FAF, 0x37FC, + 0x8FB0, 0x8FB0, 0x46A7, 0x8FB1, 0x8FC4, 0x380C, 0x8FC5, 0x8FC5, 0x46A8, + 0x8FC6, 0x8FC6, 0x3820, 0x8FC7, 0x8FC7, 0x46A9, 0x8FC8, 0x8FC9, 0x3821, + 0x8FCA, 0x8FCA, 0x46AA, 0x8FCB, 0x8FCB, 0x134C, 0x8FCC, 0x8FCC, 0x3FF9, + 0x8FCD, 0x8FD9, 0x3826, 0x8FDA, 0x8FDA, 0x46AB, 0x8FDB, 0x8FE2, 0x3833, + 0x8FE3, 0x8FE3, 0x46AC, 0x8FE4, 0x8FFB, 0x383C, 0x8FFC, 0x8FFC, 0x46AD, + 0x8FFD, 0x8FFD, 0x3854, 0x8FFE, 0x8FFE, 0x09CE, 0x9040, 0x9054, 0x3856, + 0x9055, 0x9055, 0x46AE, 0x9056, 0x905B, 0x386C, 0x905C, 0x905E, 0x46AF, + 0x905F, 0x906C, 0x3873, 0x906D, 0x906D, 0x0BC7, 0x906E, 0x906E, 0x3882, + 0x906F, 0x906F, 0x46B2, 0x9070, 0x9079, 0x3883, 0x907A, 0x907A, 0x36E9, + 0x907B, 0x907E, 0x388D, 0x90A1, 0x90A5, 0x3891, 0x90A6, 0x90A6, 0x46B3, + 0x90A7, 0x90B7, 0x3896, 0x90B8, 0x90B8, 0x46B4, 0x90B9, 0x90DB, 0x38A7, + 0x90DC, 0x90DC, 0x1391, 0x90DD, 0x90F0, 0x38CB, 0x90F1, 0x90F1, 0x16A4, + 0x90F2, 0x90FE, 0x38E0, 0x9140, 0x9164, 0x38ED, 0x9165, 0x9165, 0x46B5, + 0x9166, 0x916D, 0x3912, 0x916E, 0x916E, 0x46B6, 0x916F, 0x917D, 0x391A, + 0x917E, 0x917E, 0x46B7, 0x91A1, 0x91A1, 0x3929, 0x91A2, 0x91A2, 0x46B8, + 0x91A3, 0x91BE, 0x392A, 0x91BF, 0x91BF, 0x3072, 0x91C0, 0x91C7, 0x3947, + 0x91C8, 0x91C8, 0x46B9, 0x91C9, 0x91FE, 0x3950, 0x9240, 0x9243, 0x3986, + 0x9244, 0x9244, 0x3988, 0x9245, 0x9263, 0x398B, 0x9264, 0x9264, 0x46BA, + 0x9265, 0x926C, 0x39AB, 0x926D, 0x926D, 0x46BB, 0x926E, 0x927E, 0x39B4, + 0x92A1, 0x92AE, 0x39C5, 0x92AF, 0x92B0, 0x0119, 0x92B1, 0x92B1, 0x011C, + 0x92B2, 0x92B2, 0x011B, 0x92B3, 0x92C7, 0x39D3, 0x92C8, 0x92C8, 0x3FAC, + 0x92C9, 0x92D0, 0x39E9, 0x92D1, 0x92D1, 0x297C, 0x92D2, 0x92E4, 0x39F2, + 0x92E5, 0x92E5, 0x46BC, 0x92E6, 0x92F1, 0x3A05, 0x92F2, 0x92F2, 0x46BD, + 0x92F3, 0x92FE, 0x3A11, 0x9340, 0x9367, 0x3A1D, 0x9368, 0x9368, 0x46BE, + 0x9369, 0x937E, 0x3A45, 0x93A1, 0x93A9, 0x3A5B, 0x93AA, 0x93AA, 0x46BF, + 0x93AB, 0x93C1, 0x3A64, 0x93C2, 0x93C2, 0x46C0, 0x93C3, 0x93E4, 0x3A7B, + 0x93E5, 0x93E5, 0x46C1, 0x93E6, 0x93E7, 0x3A9D, 0x93E8, 0x93E8, 0x46C2, + 0x93E9, 0x93EA, 0x3AA0, 0x93EB, 0x93EB, 0x46C3, 0x93EC, 0x93FE, 0x3AA2, + 0x9440, 0x9445, 0x3AB5, 0x9446, 0x9446, 0x46C4, 0x9447, 0x9447, 0x1D06, + 0x9448, 0x9478, 0x3ABC, 0x9479, 0x9479, 0x46C5, 0x947A, 0x947E, 0x3AEE, + 0x94A1, 0x94C9, 0x3AF3, 0x94CA, 0x94CA, 0x29A1, 0x94CB, 0x94CB, 0x46C6, + 0x94CC, 0x94FE, 0x3B1E, 0x9540, 0x954C, 0x3B51, 0x954D, 0x954D, 0x46C7, + 0x954E, 0x9559, 0x3B5E, 0x955A, 0x955A, 0x46C8, 0x955B, 0x955E, 0x3B6A, + 0x955F, 0x955F, 0x46C9, 0x9560, 0x957E, 0x3B6F, 0x95A1, 0x95C5, 0x3B8E, + 0x95C6, 0x95C6, 0x46CA, 0x95C7, 0x95D8, 0x3BB3, 0x95D9, 0x95D9, 0x181B, + 0x95DA, 0x95FE, 0x3BC6, 0x9640, 0x9643, 0x3BEB, 0x9644, 0x9644, 0x3E2F, + 0x9645, 0x9650, 0x3BF0, 0x9651, 0x9651, 0x46CB, 0x9652, 0x9669, 0x3BFD, + 0x966A, 0x966A, 0x46CC, 0x966B, 0x967E, 0x3C16, 0x96A1, 0x96D3, 0x3C2A, + 0x96D4, 0x96D4, 0x46CD, 0x96D5, 0x96EC, 0x3C5D, 0x96ED, 0x96ED, 0x3C76, + 0x96EE, 0x96FB, 0x3C76, 0x96FC, 0x96FC, 0x2B24, 0x96FD, 0x96FE, 0x3C85, + 0x9740, 0x977E, 0x3C87, 0x97A1, 0x97FE, 0x3CC6, 0x9840, 0x9843, 0x3D24, + 0x9844, 0x9845, 0x46CE, 0x9846, 0x986E, 0x3D2A, 0x986F, 0x986F, 0x46D0, + 0x9870, 0x9874, 0x3D54, 0x9875, 0x9876, 0x46D1, 0x9877, 0x9877, 0x3D59, + 0x9878, 0x9879, 0x46D3, 0x987A, 0x987A, 0x3D5A, 0x987B, 0x987E, 0x46D5, + 0x98A1, 0x98A2, 0x46D9, 0x98A3, 0x98A3, 0x3D5B, 0x98A4, 0x98AE, 0x46DB, + 0x98AF, 0x98AF, 0x3D5C, 0x98B0, 0x98B3, 0x46E6, 0x98B4, 0x98B4, 0x43CA, + 0x98B5, 0x98B5, 0x46EA, 0x98B6, 0x98B6, 0x3D5D, 0x98B7, 0x98B7, 0x46EB, + 0x98B8, 0x98B8, 0x43CC, 0x98B9, 0x98B9, 0x3D5E, 0x98BA, 0x98BA, 0x46EC, + 0x98BB, 0x98BB, 0x43FA, 0x98BC, 0x98BC, 0x46ED, 0x98BD, 0x98BE, 0x3D5F, + 0x98BF, 0x98C1, 0x46EE, 0x98C2, 0x98C2, 0x3D61, 0x98C3, 0x98C3, 0x46F1, + 0x98C4, 0x98C4, 0x3D62, 0x98C5, 0x98C5, 0x46F2, 0x98C6, 0x98C7, 0x3D63, + 0x98C8, 0x98D1, 0x46F3, 0x98D2, 0x98D2, 0x43CD, 0x98D3, 0x98D7, 0x46FD, + 0x98D8, 0x98D9, 0x43CE, 0x98DA, 0x98DA, 0x4702, 0x98DB, 0x98DB, 0x43D1, + 0x98DC, 0x98DE, 0x4703, 0x98DF, 0x98DF, 0x43D4, 0x98E0, 0x98E2, 0x4706, + 0x98E3, 0x98E3, 0x3D65, 0x98E4, 0x98E6, 0x4709, 0x98E7, 0x98E7, 0x3D66, + 0x98E8, 0x98EC, 0x470C, 0x98ED, 0x98ED, 0x3D67, 0x98EE, 0x98EF, 0x4711, + 0x98F0, 0x98F0, 0x3D68, 0x98F1, 0x98F1, 0x4713, 0x98F2, 0x98F2, 0x3D69, + 0x98F3, 0x98F3, 0x4714, 0x98F4, 0x98F5, 0x43D5, 0x98F6, 0x98FB, 0x4715, + 0x98FC, 0x98FC, 0x3D6A, 0x98FD, 0x98FD, 0x471B, 0x98FE, 0x98FE, 0x43D7, + 0x9940, 0x9941, 0x471C, 0x9942, 0x9942, 0x43FC, 0x9943, 0x9943, 0x3D6B, + 0x9944, 0x9944, 0x471E, 0x9945, 0x9945, 0x3D6C, 0x9946, 0x9946, 0x471F, + 0x9947, 0x9947, 0x43D8, 0x9948, 0x994E, 0x4720, 0x994F, 0x994F, 0x3D6D, + 0x9950, 0x9953, 0x4727, 0x9954, 0x9954, 0x43D9, 0x9955, 0x995B, 0x472B, + 0x995C, 0x995C, 0x43DA, 0x995D, 0x9963, 0x4732, 0x9964, 0x9964, 0x43DC, + 0x9965, 0x9969, 0x4739, 0x996A, 0x996A, 0x3D6E, 0x996B, 0x996D, 0x473E, + 0x996E, 0x996E, 0x3D6F, 0x996F, 0x9974, 0x4741, 0x9975, 0x9975, 0x3D70, + 0x9976, 0x9977, 0x4747, 0x9978, 0x9978, 0x3D71, 0x9979, 0x997E, 0x4749, + 0x99A1, 0x99A1, 0x474F, 0x99A2, 0x99A2, 0x3D72, 0x99A3, 0x99A3, 0x4750, + 0x99A4, 0x99A4, 0x43C5, 0x99A5, 0x99A5, 0x4751, 0x99A6, 0x99A6, 0x43C6, + 0x99A7, 0x99AD, 0x4752, 0x99AE, 0x99AE, 0x3D73, 0x99AF, 0x99B1, 0x4759, + 0x99B2, 0x99B2, 0x43DE, 0x99B3, 0x99B5, 0x475C, 0x99B6, 0x99B6, 0x3D74, + 0x99B7, 0x99B9, 0x475F, 0x99BA, 0x99BA, 0x3D75, 0x99BB, 0x99C9, 0x4762, + 0x99CA, 0x99CA, 0x43E0, 0x99CB, 0x99CC, 0x4771, 0x99CD, 0x99CD, 0x43E2, + 0x99CE, 0x99D2, 0x4773, 0x99D3, 0x99D3, 0x43E3, 0x99D4, 0x99D5, 0x4778, + 0x99D6, 0x99D6, 0x43E5, 0x99D7, 0x99DE, 0x477A, 0x99DF, 0x99DF, 0x43DF, + 0x99E0, 0x99E1, 0x4782, 0x99E2, 0x99E2, 0x3D76, 0x99E3, 0x99E3, 0x4784, + 0x99E4, 0x99E4, 0x43AB, 0x99E5, 0x99E5, 0x4785, 0x99E6, 0x99E6, 0x43E7, + 0x99E7, 0x99E7, 0x4786, 0x99E8, 0x99E8, 0x43E9, 0x99E9, 0x99EE, 0x4787, + 0x99EF, 0x99EF, 0x43FD, 0x99F0, 0x99F3, 0x478D, 0x99F4, 0x99F4, 0x3D77, + 0x99F5, 0x99FE, 0x4791, 0x9A40, 0x9A49, 0x479B, 0x9A4A, 0x9A4A, 0x3D78, + 0x9A4B, 0x9A4B, 0x47A5, 0x9A4C, 0x9A4C, 0x3D79, 0x9A4D, 0x9A58, 0x47A6, + 0x9A59, 0x9A59, 0x3D7A, 0x9A5A, 0x9A5E, 0x47B2, 0x9A5F, 0x9A5F, 0x43AF, + 0x9A60, 0x9A60, 0x47B7, 0x9A61, 0x9A61, 0x3D7B, 0x9A62, 0x9A65, 0x47B8, + 0x9A66, 0x9A66, 0x43ED, 0x9A67, 0x9A67, 0x47BC, 0x9A68, 0x9A68, 0x3D7C, + 0x9A69, 0x9A69, 0x43EE, 0x9A6A, 0x9A6A, 0x47BD, 0x9A6B, 0x9A6B, 0x43FF, + 0x9A6C, 0x9A72, 0x47BE, 0x9A73, 0x9A73, 0x3D7D, 0x9A74, 0x9A74, 0x47C5, + 0x9A75, 0x9A75, 0x43F1, 0x9A76, 0x9A7D, 0x47C6, 0x9A7E, 0x9A7E, 0x3D7E, + 0x9AA1, 0x9AA2, 0x47CE, 0x9AA3, 0x9AA3, 0x43F3, 0x9AA4, 0x9AA4, 0x47D0, + 0x9AA5, 0x9AA5, 0x43F2, 0x9AA6, 0x9AA8, 0x47D1, 0x9AA9, 0x9AA9, 0x43F8, + 0x9AAA, 0x9AAA, 0x43F4, 0x9AAB, 0x9AB1, 0x47D4, 0x9AB2, 0x9AB2, 0x3D7F, + 0x9AB3, 0x9AB6, 0x47DB, 0x9AB7, 0x9AB7, 0x3D80, 0x9AB8, 0x9AB8, 0x47DF, + 0x9AB9, 0x9AB9, 0x3D81, 0x9ABA, 0x9ABA, 0x47E0, 0x9ABB, 0x9ABB, 0x3D82, + 0x9ABC, 0x9ABC, 0x47E1, 0x9ABD, 0x9ABD, 0x43B7, 0x9ABE, 0x9AC6, 0x47E2, + 0x9AC7, 0x9AC7, 0x3D83, 0x9AC8, 0x9ACF, 0x47EB, 0x9AD0, 0x9AD0, 0x3D84, + 0x9AD1, 0x9AD1, 0x47F3, 0x9AD2, 0x9AD2, 0x3D85, 0x9AD3, 0x9AD8, 0x47F4, + 0x9AD9, 0x9ADB, 0x3D86, 0x9ADC, 0x9AE1, 0x47FA, 0x9AE2, 0x9AE2, 0x3D89, + 0x9AE3, 0x9AE3, 0x4800, 0x9AE4, 0x9AE4, 0x3D8A, 0x9AE5, 0x9AE7, 0x4801, + 0x9AE8, 0x9AE8, 0x3D8B, 0x9AE9, 0x9AE9, 0x43B0, 0x9AEA, 0x9AED, 0x4804, + 0x9AEE, 0x9AEE, 0x43B2, 0x9AEF, 0x9AF1, 0x4808, 0x9AF2, 0x9AF2, 0x3D8C, + 0x9AF3, 0x9AF5, 0x480B, 0x9AF6, 0x9AF6, 0x3D8D, 0x9AF7, 0x9AFA, 0x480E, + 0x9AFB, 0x9AFB, 0x3D8E, 0x9AFC, 0x9AFE, 0x4812, 0x9B40, 0x9B45, 0x4815, + 0x9B46, 0x9B46, 0x3D8F, 0x9B47, 0x9B49, 0x481B, 0x9B4A, 0x9B4A, 0x3D90, + 0x9B4B, 0x9B53, 0x481E, 0x9B54, 0x9B54, 0x3D92, 0x9B55, 0x9B57, 0x4827, + 0x9B58, 0x9B58, 0x3D93, 0x9B59, 0x9B59, 0x482A, 0x9B5A, 0x9B5A, 0x3D94, + 0x9B5B, 0x9B5B, 0x482B, 0x9B5C, 0x9B5C, 0x3D95, 0x9B5D, 0x9B5D, 0x482C, + 0x9B5E, 0x9B5F, 0x3D96, 0x9B60, 0x9B60, 0x482D, 0x9B62, 0x9B6F, 0x482E, + 0x9B70, 0x9B73, 0x3D98, 0x9B74, 0x9B75, 0x483C, 0x9B76, 0x9B76, 0x2F50, + 0x9B77, 0x9B77, 0x3D9D, 0x9B78, 0x9B78, 0x1725, 0x9B79, 0x9B7A, 0x483E, + 0x9B7B, 0x9B7B, 0x32ED, 0x9B7C, 0x9B7C, 0x3DA0, 0x9B7D, 0x9B7D, 0x4840, + 0x9B7E, 0x9B7E, 0x3DA1, 0x9BA1, 0x9BA1, 0x3DA2, 0x9BA2, 0x9BA2, 0x4841, + 0x9BA3, 0x9BA4, 0x3DA3, 0x9BA5, 0x9BA6, 0x4842, 0x9BA7, 0x9BAA, 0x3DA5, + 0x9BAB, 0x9BAB, 0x4844, 0x9BAC, 0x9BAC, 0x3DA9, 0x9BAD, 0x9BAE, 0x4845, + 0x9BAF, 0x9BAF, 0x3DAA, 0x9BB0, 0x9BB1, 0x4847, 0x9BB2, 0x9BB9, 0x3DAB, + 0x9BBA, 0x9BBD, 0x4849, 0x9BBE, 0x9BBE, 0x3DB3, 0x9BBF, 0x9BBF, 0x484D, + 0x9BC0, 0x9BC5, 0x3DB4, 0x9BC6, 0x9BC6, 0x2AD9, 0x9BC7, 0x9BC9, 0x484E, + 0x9BCA, 0x9BCA, 0x3DBB, 0x9BCB, 0x9BCB, 0x4851, 0x9BCC, 0x9BCC, 0x3DBC, + 0x9BCD, 0x9BCD, 0x4852, 0x9BCE, 0x9BCE, 0x43D0, 0x9BCF, 0x9BCF, 0x4853, + 0x9BD0, 0x9BD1, 0x3DBD, 0x9BD2, 0x9BD2, 0x4854, 0x9BD3, 0x9BD3, 0x3DBF, + 0x9BD4, 0x9BD4, 0x4855, 0x9BD5, 0x9BD5, 0x3DC0, 0x9BD6, 0x9BD7, 0x4856, + 0x9BD8, 0x9BDA, 0x3DC1, 0x9BDB, 0x9BDC, 0x4858, 0x9BDD, 0x9BDD, 0x3DC4, + 0x9BDE, 0x9BDE, 0x1C14, 0x9BDF, 0x9BDF, 0x3DC5, 0x9BE0, 0x9BE0, 0x485A, + 0x9BE1, 0x9BE1, 0x3DC6, 0x9BE2, 0x9BE2, 0x485B, 0x9BE3, 0x9BE3, 0x3DC7, + 0x9BE4, 0x9BE6, 0x485C, 0x9BE7, 0x9BE7, 0x3DC8, 0x9BE8, 0x9BE8, 0x485F, + 0x9BE9, 0x9BEB, 0x3DC9, 0x9BEC, 0x9BEC, 0x41FA, 0x9BED, 0x9BED, 0x4860, + 0x9BEE, 0x9BEF, 0x3DCD, 0x9BF0, 0x9BF2, 0x4861, 0x9BF3, 0x9BF3, 0x3DCF, + 0x9BF4, 0x9BF5, 0x4864, 0x9BF6, 0x9BF6, 0x12E9, 0x9BF7, 0x9BF7, 0x4866, + 0x9BF8, 0x9BF9, 0x3DD1, 0x9BFA, 0x9BFA, 0x4867, 0x9BFB, 0x9BFC, 0x3DD3, + 0x9BFD, 0x9BFE, 0x4868, 0x9C40, 0x9C41, 0x3DD5, 0x9C42, 0x9C42, 0x2CAE, + 0x9C43, 0x9C43, 0x486A, 0x9C44, 0x9C46, 0x3DD8, 0x9C47, 0x9C47, 0x486B, + 0x9C48, 0x9C48, 0x3DDB, 0x9C49, 0x9C49, 0x486C, 0x9C4A, 0x9C4A, 0x3DDC, + 0x9C4B, 0x9C4C, 0x486D, 0x9C4D, 0x9C52, 0x3DDD, 0x9C53, 0x9C53, 0x1A64, + 0x9C54, 0x9C54, 0x486F, 0x9C55, 0x9C55, 0x3DE4, 0x9C56, 0x9C56, 0x4870, + 0x9C57, 0x9C5B, 0x3DE5, 0x9C5C, 0x9C5C, 0x4871, 0x9C5D, 0x9C5D, 0x3DEA, + 0x9C5E, 0x9C5F, 0x4872, 0x9C60, 0x9C60, 0x3DEB, 0x9C61, 0x9C61, 0x4874, + 0x9C62, 0x9C62, 0x1404, 0x9C63, 0x9C63, 0x4875, 0x9C64, 0x9C66, 0x3DED, + 0x9C67, 0x9C67, 0x4876, 0x9C68, 0x9C68, 0x2324, 0x9C69, 0x9C69, 0x4877, + 0x9C6A, 0x9C6A, 0x3DF1, 0x9C6B, 0x9C6B, 0x346A, 0x9C6C, 0x9C6C, 0x4878, + 0x9C6D, 0x9C6D, 0x3DF2, 0x9C6E, 0x9C6E, 0x4879, 0x9C6F, 0x9C72, 0x3DF3, + 0x9C73, 0x9C74, 0x487A, 0x9C75, 0x9C76, 0x3DF7, 0x9C77, 0x9C77, 0x2291, + 0x9C78, 0x9C78, 0x487C, 0x9C79, 0x9C79, 0x3DFA, 0x9C7A, 0x9C7A, 0x487D, + 0x9C7B, 0x9C7C, 0x3DFB, 0x9C7D, 0x9C7D, 0x487E, 0x9C7E, 0x9C7E, 0x3DFD, + 0x9CA1, 0x9CA2, 0x3DFE, 0x9CA3, 0x9CA4, 0x487F, 0x9CA5, 0x9CA5, 0x3E00, + 0x9CA6, 0x9CA7, 0x4881, 0x9CA8, 0x9CA9, 0x3E01, 0x9CAA, 0x9CAA, 0x4883, + 0x9CAB, 0x9CAB, 0x3E03, 0x9CAC, 0x9CAC, 0x4884, 0x9CAD, 0x9CAE, 0x3E04, + 0x9CAF, 0x9CB0, 0x4885, 0x9CB1, 0x9CBA, 0x3E06, 0x9CBB, 0x9CBB, 0x4887, + 0x9CBC, 0x9CBC, 0x1787, 0x9CBD, 0x9CBD, 0x095F, 0x9CBE, 0x9CC2, 0x3E12, + 0x9CC3, 0x9CC5, 0x4888, 0x9CC6, 0x9CCD, 0x3E17, 0x9CCE, 0x9CCE, 0x488B, + 0x9CCF, 0x9CCF, 0x3E1F, 0x9CD0, 0x9CD0, 0x1E99, 0x9CD1, 0x9CD3, 0x3E21, + 0x9CD4, 0x9CD7, 0x488C, 0x9CD8, 0x9CDA, 0x3E24, 0x9CDB, 0x9CDB, 0x4890, + 0x9CDC, 0x9CE5, 0x3E27, 0x9CE6, 0x9CE6, 0x4891, 0x9CE7, 0x9CE9, 0x3E31, + 0x9CEA, 0x9CEA, 0x4892, 0x9CEB, 0x9CEC, 0x3E34, 0x9CED, 0x9CED, 0x4893, + 0x9CEE, 0x9CF9, 0x3E36, 0x9CFA, 0x9CFC, 0x4894, 0x9CFD, 0x9CFD, 0x3E42, + 0x9CFE, 0x9CFE, 0x4897, 0x9D40, 0x9D40, 0x43E8, 0x9D41, 0x9D45, 0x4898, + 0x9D46, 0x9D46, 0x3E43, 0x9D47, 0x9D48, 0x489D, 0x9D49, 0x9D49, 0x3E44, + 0x9D4A, 0x9D4B, 0x489F, 0x9D4C, 0x9D4D, 0x3E46, 0x9D4E, 0x9D4E, 0x48A1, + 0x9D4F, 0x9D4F, 0x3E48, 0x9D50, 0x9D50, 0x48A2, 0x9D51, 0x9D51, 0x3E49, + 0x9D52, 0x9D54, 0x48A3, 0x9D55, 0x9D55, 0x3E4A, 0x9D56, 0x9D56, 0x48A6, + 0x9D57, 0x9D57, 0x25C1, 0x9D58, 0x9D59, 0x48A7, 0x9D5A, 0x9D5A, 0x0D0C, + 0x9D5B, 0x9D60, 0x48A9, 0x9D61, 0x9D61, 0x43C9, 0x9D62, 0x9D62, 0x3E4C, + 0x9D63, 0x9D63, 0x48AF, 0x9D64, 0x9D64, 0x3E4D, 0x9D65, 0x9D77, 0x48B0, + 0x9D78, 0x9D78, 0x43F5, 0x9D79, 0x9D79, 0x3E4E, 0x9D7A, 0x9D7D, 0x48C3, + 0x9D7E, 0x9D7E, 0x3E4F, 0x9DA1, 0x9DA4, 0x48C7, 0x9DA5, 0x9DA8, 0x3E50, + 0x9DA9, 0x9DA9, 0x48CB, 0x9DAA, 0x9DAA, 0x3E54, 0x9DAB, 0x9DAB, 0x48CC, + 0x9DAC, 0x9DAD, 0x3E55, 0x9DAE, 0x9DAF, 0x48CD, 0x9DB0, 0x9DB0, 0x3E58, + 0x9DB1, 0x9DB2, 0x48CF, 0x9DB3, 0x9DB3, 0x3E59, 0x9DB4, 0x9DB4, 0x48D1, + 0x9DB5, 0x9DB5, 0x3E5A, 0x9DB6, 0x9DB6, 0x48D2, 0x9DB7, 0x9DB7, 0x3E5B, + 0x9DB8, 0x9DBB, 0x48D3, 0x9DBC, 0x9DBD, 0x3E5C, 0x9DBE, 0x9DBE, 0x48D7, + 0x9DBF, 0x9DC0, 0x3E5E, 0x9DC1, 0x9DC2, 0x48D8, 0x9DC3, 0x9DC3, 0x3E60, + 0x9DC4, 0x9DC4, 0x05E6, 0x9DC5, 0x9DC6, 0x48DA, 0x9DC7, 0x9DC8, 0x3E62, + 0x9DC9, 0x9DC9, 0x48DC, 0x9DCA, 0x9DCA, 0x3E64, 0x9DCB, 0x9DCC, 0x48DD, + 0x9DCD, 0x9DD1, 0x3E65, 0x9DD2, 0x9DD2, 0x48DF, 0x9DD3, 0x9DD5, 0x3E6A, + 0x9DD6, 0x9DD9, 0x48E0, 0x9DDA, 0x9DFB, 0x3E6D, 0x9DFC, 0x9DFC, 0x48E4, + 0x9DFD, 0x9DFE, 0x3E8F, 0x9E40, 0x9E42, 0x3E91, 0x9E43, 0x9E43, 0x48E5, + 0x9E44, 0x9E5E, 0x3E95, 0x9E5F, 0x9E5F, 0x48E6, 0x9E60, 0x9E62, 0x3EB1, + 0x9E63, 0x9E63, 0x48E7, 0x9E64, 0x9E65, 0x3EB4, 0x9E66, 0x9E67, 0x48E8, + 0x9E68, 0x9E68, 0x3EB6, 0x9E69, 0x9E69, 0x48EA, 0x9E6A, 0x9E6A, 0x3EB7, + 0x9E6B, 0x9E70, 0x48EB, 0x9E71, 0x9E71, 0x3EB8, 0x9E72, 0x9E72, 0x48F1, + 0x9E73, 0x9E73, 0x3EB9, 0x9E74, 0x9E76, 0x48F2, 0x9E77, 0x9E78, 0x3EBA, + 0x9E79, 0x9E79, 0x48F5, 0x9E7A, 0x9E7A, 0x3EBC, 0x9E7B, 0x9E7B, 0x48F6, + 0x9E7C, 0x9E7C, 0x3EBD, 0x9E7D, 0x9E7D, 0x48F7, 0x9E7E, 0x9E7E, 0x3EBE, + 0x9EA1, 0x9EA2, 0x3EBF, 0x9EA3, 0x9EA3, 0x48F8, 0x9EA4, 0x9EA6, 0x3EC1, + 0x9EA7, 0x9EA8, 0x48F9, 0x9EA9, 0x9EA9, 0x0728, 0x9EAA, 0x9EAA, 0x3EC5, + 0x9EAB, 0x9EAB, 0x48FB, 0x9EAC, 0x9EAD, 0x3EC6, 0x9EAE, 0x9EAE, 0x48FC, + 0x9EAF, 0x9EB1, 0x3EC8, 0x9EB2, 0x9EB3, 0x48FD, 0x9EB4, 0x9EB4, 0x3ECB, + 0x9EB5, 0x9EB5, 0x48FF, 0x9EB6, 0x9EB7, 0x3ECC, 0x9EB8, 0x9EB8, 0x4900, + 0x9EB9, 0x9EB9, 0x3ECE, 0x9EBA, 0x9EBB, 0x4901, 0x9EBC, 0x9EBC, 0x3ECF, + 0x9EBD, 0x9EBE, 0x4903, 0x9EBF, 0x9EC0, 0x3ED0, 0x9EC1, 0x9EC3, 0x4905, + 0x9EC4, 0x9EC5, 0x3ED2, 0x9EC6, 0x9EC6, 0x4908, 0x9EC7, 0x9ECA, 0x3ED4, + 0x9ECB, 0x9ECC, 0x4909, 0x9ECD, 0x9ECD, 0x3ED9, 0x9ECE, 0x9ECF, 0x490B, + 0x9ED0, 0x9ED1, 0x3EDA, 0x9ED2, 0x9ED2, 0x490D, 0x9ED3, 0x9ED3, 0x3EDC, + 0x9ED4, 0x9ED5, 0x490E, 0x9ED6, 0x9ED7, 0x3EDD, 0x9ED8, 0x9ED9, 0x4910, + 0x9EDA, 0x9EEE, 0x3EDF, 0x9EEF, 0x9EEF, 0x24B6, 0x9EF0, 0x9EF1, 0x3EF5, + 0x9EF2, 0x9EF2, 0x4912, 0x9EF3, 0x9EF5, 0x3EF7, 0x9EF6, 0x9EF8, 0x4913, + 0x9EF9, 0x9EFA, 0x3EFA, 0x9EFB, 0x9EFB, 0x4916, 0x9EFC, 0x9EFC, 0x3EFC, + 0x9EFD, 0x9EFD, 0x1806, 0x9EFE, 0x9EFE, 0x3EFE, 0x9F40, 0x9F42, 0x3EFF, + 0x9F43, 0x9F43, 0x4917, 0x9F44, 0x9F47, 0x3F02, 0x9F48, 0x9F48, 0x4918, + 0x9F49, 0x9F4A, 0x3F06, 0x9F4B, 0x9F4C, 0x4919, 0x9F4D, 0x9F5F, 0x3F08, + 0x9F60, 0x9F60, 0x3511, 0x9F61, 0x9F65, 0x3F1C, 0x9F66, 0x9F66, 0x3945, + 0x9F67, 0x9F68, 0x491B, 0x9F69, 0x9F6F, 0x3F23, 0x9F70, 0x9F70, 0x491D, + 0x9F71, 0x9F7E, 0x3F2A, 0x9FA1, 0x9FB4, 0x3F38, 0x9FB5, 0x9FB5, 0x491E, + 0x9FB6, 0x9FBA, 0x3F4C, 0x9FBB, 0x9FBB, 0x491F, 0x9FBC, 0x9FBE, 0x3F51, + 0x9FBF, 0x9FBF, 0x4920, 0x9FC0, 0x9FC0, 0x3F54, 0x9FC1, 0x9FC1, 0x4921, + 0x9FC2, 0x9FCA, 0x3F55, 0x9FCB, 0x9FCB, 0x0F82, 0x9FCC, 0x9FCC, 0x4922, + 0x9FCD, 0x9FD3, 0x3F60, 0x9FD4, 0x9FD4, 0x4923, 0x9FD5, 0x9FD7, 0x3F68, + 0x9FD8, 0x9FD8, 0x3A3E, 0x9FD9, 0x9FE3, 0x3F6C, 0x9FE4, 0x9FE4, 0x4924, + 0x9FE5, 0x9FF8, 0x3F77, 0x9FF9, 0x9FF9, 0x4925, 0x9FFA, 0x9FFE, 0x3F8B, + 0xA040, 0xA040, 0x4926, 0xA041, 0xA046, 0x3F90, 0xA047, 0xA047, 0x4927, + 0xA048, 0xA054, 0x3F96, 0xA055, 0xA055, 0x4928, 0xA056, 0xA062, 0x3FA3, + 0xA063, 0xA063, 0x3811, 0xA064, 0xA06C, 0x3FB1, 0xA06D, 0xA06D, 0x4929, + 0xA06E, 0xA076, 0x3FBA, 0xA077, 0xA077, 0x05F2, 0xA078, 0xA07A, 0x3FC4, + 0xA07B, 0xA07B, 0x492A, 0xA07C, 0xA07E, 0x3FC7, 0xA0A1, 0xA0A1, 0x3FCA, + 0xA0A2, 0xA0A2, 0x492B, 0xA0A3, 0xA0A6, 0x3FCB, 0xA0A7, 0xA0A7, 0x492C, + 0xA0A8, 0xA0C4, 0x3FCF, 0xA0C5, 0xA0C5, 0x492D, 0xA0C6, 0xA0CF, 0x3FEC, + 0xA0D0, 0xA0D0, 0x492E, 0xA0D1, 0xA0D4, 0x3FF6, 0xA0D5, 0xA0D5, 0x3AEE, + 0xA0D6, 0xA0DE, 0x3FFB, 0xA0DF, 0xA0DF, 0x247D, 0xA0E0, 0xA0E2, 0x4005, + 0xA0E3, 0xA0E3, 0x492F, 0xA0E4, 0xA0E4, 0x3AC9, 0xA0E5, 0xA0E6, 0x4009, + 0xA0E7, 0xA0ED, 0x4930, 0xA0EE, 0xA0EE, 0x43B4, 0xA0EF, 0xA0F1, 0x4937, + 0xA0F2, 0xA0F2, 0x43B8, 0xA0F3, 0xA0FE, 0x493A, 0xA140, 0xA158, 0x0063, + 0xA159, 0xA15C, 0x35AF, 0xA15D, 0xA17E, 0x0080, 0xA1A1, 0xA1F5, 0x00A2, + 0xA1F6, 0xA1F6, 0x00F8, 0xA1F7, 0xA1F7, 0x00F7, 0xA1F8, 0xA1FE, 0x00F9, + 0xA240, 0xA27E, 0x0100, 0xA2A1, 0xA2FE, 0x013F, 0xA340, 0xA37E, 0x019D, + 0xA3A1, 0xA3BB, 0x01DC, 0xA3BD, 0xA3BF, 0x01F7, 0xA440, 0xA47E, 0x0253, + 0xA4A1, 0xA4FE, 0x0292, 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, + 0xA640, 0xA67E, 0x038D, 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, + 0xA7A1, 0xA7FE, 0x0469, 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, + 0xA940, 0xA97E, 0x0564, 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, + 0xAAA1, 0xAAFE, 0x0640, 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, + 0xAC40, 0xAC7E, 0x073B, 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, + 0xAD40, 0xAD7E, 0x07D7, 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, + 0xAEA1, 0xAEFE, 0x08B3, 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, + 0xAFD0, 0xAFFE, 0x0980, 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, + 0xB140, 0xB17E, 0x0A4C, 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, + 0xB2A1, 0xB2FE, 0x0B28, 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, + 0xB440, 0xB47E, 0x0C23, 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, + 0xB5A1, 0xB5FE, 0x0CFF, 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, + 0xB740, 0xB77E, 0x0DFA, 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, + 0xB8A1, 0xB8FE, 0x0ED6, 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, + 0xBA40, 0xBA7E, 0x0FD1, 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, + 0xBBA1, 0xBBC7, 0x10AD, 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, + 0xBCA1, 0xBCFE, 0x114B, 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, + 0xBE40, 0xBE51, 0x1246, 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, + 0xBEA1, 0xBEFE, 0x1284, 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, + 0xC040, 0xC07E, 0x137F, 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, + 0xC1A1, 0xC1AA, 0x145B, 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, + 0xC2A1, 0xC2CA, 0x14F9, 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, + 0xC340, 0xC360, 0x1556, 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, + 0xC3B9, 0xC3B9, 0x15AF, 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, + 0xC440, 0xC455, 0x15F4, 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, + 0xC4A1, 0xC4FE, 0x1632, 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, + 0xC640, 0xC67E, 0x172D, 0xC6A1, 0xC6BE, 0x01FA, 0xC6BF, 0xC6CE, 0x0219, + 0xC6D0, 0xC6D2, 0x022A, 0xC6D4, 0xC6D4, 0x022E, 0xC6D6, 0xC6D6, 0x0230, + 0xC6D8, 0xC6DD, 0x35B3, 0xC6E0, 0xC6FE, 0x35BA, 0xC740, 0xC77E, 0x35D9, + 0xC7A1, 0xC7FE, 0x3618, 0xC840, 0xC87E, 0x3676, 0xC8A1, 0xC8A4, 0x36B5, + 0xC8CD, 0xC8D3, 0x36E1, 0xC8D4, 0xC8D6, 0x44C6, 0xC8D7, 0xC8DF, 0x451C, + 0xC8E0, 0xC8E0, 0x499E, 0xC8E1, 0xC8E8, 0x4525, 0xC8E9, 0xC8E9, 0x499F, + 0xC8EA, 0xC8F0, 0x452D, 0xC8F1, 0xC8F1, 0x49A0, 0xC8F5, 0xC8FE, 0x4992, + 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776, + 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797, + 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809, + 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E, + 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942, + 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E, + 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19, + 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5, + 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0, + 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC, + 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7, + 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3, + 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001, + 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F, + 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A, + 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216, + 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274, + 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312, + 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE, + 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B, + 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527, + 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622, + 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE, + 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9, + 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5, + 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0, + 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC, + 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42, + 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8, + 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86, + 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3, + 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F, + 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8, + 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014, + 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8, + 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C, + 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE, + 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160, + 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E, + 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC, + 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161, + 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0, + 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D, + 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6, + 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327, + 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF, + 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA, + 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511, + 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E, + 0xF9D2, 0xF9D5, 0x354A, 0xF9D6, 0xF9FE, 0x36E8, 0xFA40, 0xFA5E, 0x400B, + 0xFA5F, 0xFA5F, 0x083A, 0xFA60, 0xFA65, 0x402B, 0xFA66, 0xFA66, 0x09FD, + 0xFA67, 0xFA7E, 0x4032, 0xFAA1, 0xFAA8, 0x404A, 0xFAA9, 0xFAAA, 0x4946, + 0xFAAB, 0xFABC, 0x4054, 0xFABD, 0xFABD, 0x030D, 0xFABE, 0xFAC4, 0x4067, + 0xFAC5, 0xFAC5, 0x016B, 0xFAC6, 0xFAD4, 0x406F, 0xFAD5, 0xFAD5, 0x0860, + 0xFAD6, 0xFAFE, 0x407F, 0xFB40, 0xFB47, 0x40A8, 0xFB48, 0xFB48, 0x3E82, + 0xFB49, 0xFB52, 0x40B1, 0xFB53, 0xFB53, 0x4948, 0xFB54, 0xFB6D, 0x40BC, + 0xFB6E, 0xFB6E, 0x4949, 0xFB6F, 0xFB7E, 0x40D7, 0xFBA1, 0xFBA2, 0x40E7, + 0xFBA3, 0xFBA3, 0x494A, 0xFBA4, 0xFBB7, 0x40EA, 0xFBB8, 0xFBB8, 0x0C23, + 0xFBB9, 0xFBBE, 0x40FF, 0xFBBF, 0xFBBF, 0x494B, 0xFBC0, 0xFBCC, 0x4105, + 0xFBCD, 0xFBCD, 0x494C, 0xFBCE, 0xFBF2, 0x4112, 0xFBF3, 0xFBF3, 0x17E4, + 0xFBF4, 0xFBF8, 0x4138, 0xFBF9, 0xFBF9, 0x3E8E, 0xFBFA, 0xFBFE, 0x413E, + 0xFC40, 0xFC49, 0x4143, 0xFC4A, 0xFC4A, 0x494D, 0xFC4B, 0xFC4E, 0x414D, + 0xFC4F, 0xFC4F, 0x212F, 0xFC50, 0xFC51, 0x4151, 0xFC52, 0xFC52, 0x494E, + 0xFC53, 0xFC62, 0x4153, 0xFC63, 0xFC63, 0x494F, 0xFC64, 0xFC6B, 0x4163, + 0xFC6C, 0xFC6C, 0x4001, 0xFC6D, 0xFC6D, 0x4950, 0xFC6E, 0xFC74, 0x416D, + 0xFC75, 0xFC75, 0x4951, 0xFC76, 0xFC7E, 0x4174, 0xFCA1, 0xFCB8, 0x417D, + 0xFCB9, 0xFCB9, 0x115F, 0xFCBA, 0xFCBB, 0x4195, 0xFCBC, 0xFCBD, 0x4952, + 0xFCBE, 0xFCCB, 0x4198, 0xFCCC, 0xFCCC, 0x4954, 0xFCCD, 0xFCE1, 0x41A7, + 0xFCE2, 0xFCE2, 0x0C79, 0xFCE3, 0xFCE3, 0x4955, 0xFCE4, 0xFCED, 0x41BD, + 0xFCEE, 0xFCEE, 0x4956, 0xFCEF, 0xFCF0, 0x41C7, 0xFCF1, 0xFCF1, 0x04C3, + 0xFCF2, 0xFCFE, 0x41CA, 0xFD40, 0xFD48, 0x41D7, 0xFD49, 0xFD49, 0x4957, + 0xFD4A, 0xFD69, 0x41E0, 0xFD6A, 0xFD6A, 0x4958, 0xFD6B, 0xFD7E, 0x4201, + 0xFDA1, 0xFDB6, 0x4215, 0xFDB7, 0xFDB7, 0x18BD, 0xFDB8, 0xFDB8, 0x0CBD, + 0xFDB9, 0xFDBA, 0x422D, 0xFDBB, 0xFDBB, 0x0CA5, 0xFDBC, 0xFDE2, 0x4230, + 0xFDE3, 0xFDE3, 0x4959, 0xFDE4, 0xFDF0, 0x4258, 0xFDF1, 0xFDF1, 0x0CCE, + 0xFDF2, 0xFDF2, 0x495A, 0xFDF3, 0xFDFE, 0x4266, 0xFE40, 0xFE51, 0x4272, + 0xFE52, 0xFE52, 0x3D70, 0xFE53, 0xFE6C, 0x4285, 0xFE6D, 0xFE6D, 0x495B, + 0xFE6E, 0xFE6E, 0x429F, 0xFE6F, 0xFE6F, 0x0E84, 0xFE70, 0xFE77, 0x42A1, + 0xFE78, 0xFE78, 0x495C, 0xFE79, 0xFE7E, 0x42A9, 0xFEA1, 0xFEA9, 0x42AF, + 0xFEAA, 0xFEAA, 0x0120, 0xFEAB, 0xFEDC, 0x42B8, 0xFEDD, 0xFEDD, 0x1BA8, + 0xFEDE, 0xFEDF, 0x495D, 0xFEE0, 0xFEEC, 0x42EB, 0xFEED, 0xFEEE, 0x495F, + 0xFEEF, 0xFEFE, 0x42F8, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp new file mode 100644 index 0000000000..d9cbab8826 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp @@ -0,0 +1,15 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_HKscs_B5_V_5[13 * 3] = { + 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, + 0x35B1, 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, + 0xA166, 0x008A, 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, + 0xA171, 0xA172, 0x0096, 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, + 0x009E, 0xA1E3, 0xA1E3, 0x354F, 0xC6E4, 0xC6E5, 0x3711, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp new file mode 100644 index 0000000000..f02c9dc655 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp @@ -0,0 +1,5483 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_UniCNS_UCS2_H_3[16418 * 3] = { + 0x0020, 0x007E, 0x0001, 0x00A2, 0x00A3, 0x0106, 0x00A5, 0x00A5, 0x0104, + 0x00A7, 0x00A7, 0x00B2, 0x00A8, 0x00A8, 0x35B3, 0x00AC, 0x00AC, 0x36E1, + 0x00B0, 0x00B0, 0x0118, 0x00B1, 0x00B1, 0x00D4, 0x00B7, 0x00B7, 0x0073, + 0x00C0, 0x00C0, 0x4964, 0x00C1, 0x00C1, 0x4962, 0x00C8, 0x00C8, 0x4968, + 0x00C9, 0x00C9, 0x4966, 0x00CA, 0x00CA, 0x4971, 0x00D2, 0x00D2, 0x496C, + 0x00D3, 0x00D3, 0x496A, 0x00D7, 0x00D7, 0x00D2, 0x00E0, 0x00E0, 0x4975, + 0x00E1, 0x00E1, 0x4973, 0x00E8, 0x00E8, 0x497A, 0x00E9, 0x00E9, 0x4978, + 0x00EA, 0x00EA, 0x4990, 0x00EC, 0x00EC, 0x497E, 0x00ED, 0x00ED, 0x497C, + 0x00F2, 0x00F2, 0x4982, 0x00F3, 0x00F3, 0x4980, 0x00F7, 0x00F7, 0x00D3, + 0x00F8, 0x00F8, 0x4998, 0x00F9, 0x00F9, 0x4986, 0x00FA, 0x00FA, 0x4984, + 0x00FC, 0x00FC, 0x498B, 0x0100, 0x0100, 0x4961, 0x0101, 0x0101, 0x4972, + 0x0112, 0x0112, 0x4965, 0x0113, 0x0113, 0x4977, 0x011A, 0x011A, 0x4967, + 0x011B, 0x011B, 0x4979, 0x012B, 0x012B, 0x497B, 0x014B, 0x014B, 0x4999, + 0x014C, 0x014C, 0x4969, 0x014D, 0x014D, 0x497F, 0x0153, 0x0153, 0x4997, + 0x016B, 0x016B, 0x4983, 0x01CD, 0x01CD, 0x4963, 0x01CE, 0x01CE, 0x4974, + 0x01D0, 0x01D0, 0x497D, 0x01D1, 0x01D1, 0x496B, 0x01D2, 0x01D2, 0x4981, + 0x01D4, 0x01D4, 0x4985, 0x01D6, 0x01D6, 0x4987, 0x01D8, 0x01D8, 0x4988, + 0x01DA, 0x01DA, 0x4989, 0x01DC, 0x01DC, 0x498A, 0x0250, 0x0250, 0x4993, + 0x0251, 0x0251, 0x4976, 0x0254, 0x0254, 0x4995, 0x025B, 0x025B, 0x4994, + 0x0261, 0x0261, 0x4991, 0x026A, 0x026A, 0x499B, 0x0275, 0x0275, 0x4996, + 0x0283, 0x0283, 0x4992, 0x028A, 0x028A, 0x499A, 0x02C6, 0x02C6, 0x35B4, + 0x02C7, 0x02C7, 0x01F8, 0x02CA, 0x02CA, 0x01F7, 0x02CB, 0x02CB, 0x01F9, + 0x02D9, 0x02D9, 0x01F6, 0x0308, 0x0308, 0x35B3, 0x0391, 0x03A1, 0x01A1, + 0x03A3, 0x03A9, 0x01B2, 0x03B1, 0x03C1, 0x01B9, 0x03C3, 0x03C9, 0x01CA, + 0x0401, 0x0401, 0x3670, 0x0410, 0x0415, 0x366A, 0x0416, 0x0435, 0x3671, + 0x0436, 0x044F, 0x3692, 0x0451, 0x0451, 0x3691, 0x1EBE, 0x1EBE, 0x496E, + 0x1EBF, 0x1EBF, 0x498D, 0x1EC0, 0x1EC0, 0x4970, 0x1EC1, 0x1EC1, 0x498F, + 0x2013, 0x2013, 0x0079, 0x2014, 0x2014, 0x007B, 0x2018, 0x2019, 0x00A6, + 0x201C, 0x201D, 0x00A8, 0x2022, 0x2022, 0x0068, 0x2025, 0x2025, 0x006F, + 0x2026, 0x2026, 0x006E, 0x2032, 0x2032, 0x00AD, 0x2035, 0x2035, 0x00AC, + 0x203B, 0x203B, 0x00B1, 0x203E, 0x203E, 0x00C3, 0x20AC, 0x20AC, 0x44C1, + 0x2103, 0x2103, 0x010A, 0x2105, 0x2105, 0x00C2, 0x2109, 0x2109, 0x010B, + 0x2116, 0x2116, 0x36E6, 0x2121, 0x2121, 0x36E7, 0x2160, 0x2169, 0x0157, + 0x2170, 0x2179, 0x020E, 0x2190, 0x2190, 0x00F8, 0x2191, 0x2191, 0x00F5, + 0x2192, 0x2192, 0x00F7, 0x2193, 0x2193, 0x00F6, 0x2196, 0x2197, 0x00F9, + 0x2198, 0x2198, 0x00FC, 0x2199, 0x2199, 0x00FB, 0x21B8, 0x21B9, 0x36AD, + 0x21E7, 0x21E7, 0x36AC, 0x221A, 0x221A, 0x00D5, 0x221E, 0x221E, 0x00DC, + 0x221F, 0x221F, 0x00E9, 0x2220, 0x2220, 0x00E8, 0x2223, 0x2223, 0x00FE, + 0x2225, 0x2225, 0x00FD, 0x2229, 0x222A, 0x00E5, 0x222B, 0x222B, 0x00ED, + 0x222E, 0x222E, 0x00EE, 0x2234, 0x2234, 0x00F0, 0x2235, 0x2235, 0x00EF, + 0x223C, 0x223C, 0x00E4, 0x2252, 0x2252, 0x00DD, 0x2260, 0x2260, 0x00DB, + 0x2261, 0x2261, 0x00DE, 0x2266, 0x2267, 0x00D9, 0x22A5, 0x22A5, 0x00E7, + 0x22BF, 0x22BF, 0x00EA, 0x2400, 0x241F, 0x0232, 0x2421, 0x2421, 0x0252, + 0x2460, 0x2469, 0x01FA, 0x2474, 0x247D, 0x0204, 0x2500, 0x2500, 0x0137, + 0x2502, 0x2502, 0x0138, 0x250C, 0x250C, 0x013A, 0x2510, 0x2510, 0x013B, + 0x2514, 0x2514, 0x013C, 0x2518, 0x2518, 0x013D, 0x251C, 0x251C, 0x0135, + 0x2524, 0x2524, 0x0134, 0x252C, 0x252C, 0x0133, 0x2534, 0x2534, 0x0132, + 0x253C, 0x253C, 0x0131, 0x2550, 0x2550, 0x0142, 0x2551, 0x2551, 0x370A, + 0x2552, 0x2552, 0x36F8, 0x2553, 0x2553, 0x3701, 0x2554, 0x2554, 0x36EF, + 0x2555, 0x2555, 0x36FA, 0x2556, 0x2556, 0x3703, 0x2557, 0x2557, 0x36F1, + 0x2558, 0x2558, 0x36FE, 0x2559, 0x2559, 0x3707, 0x255A, 0x255A, 0x36F5, + 0x255B, 0x255B, 0x3700, 0x255C, 0x255C, 0x3709, 0x255D, 0x255D, 0x36F7, + 0x255E, 0x255E, 0x0143, 0x255F, 0x255F, 0x3704, 0x2560, 0x2560, 0x36F2, + 0x2561, 0x2561, 0x0145, 0x2562, 0x2562, 0x3706, 0x2563, 0x2563, 0x36F4, + 0x2564, 0x2564, 0x36F9, 0x2565, 0x2565, 0x3702, 0x2566, 0x2566, 0x36F0, + 0x2567, 0x2567, 0x36FF, 0x2568, 0x2568, 0x3708, 0x2569, 0x2569, 0x36F6, + 0x256A, 0x256A, 0x0144, 0x256B, 0x256B, 0x3705, 0x256C, 0x256C, 0x36F3, + 0x256D, 0x256E, 0x013E, 0x256F, 0x256F, 0x0141, 0x2570, 0x2570, 0x0140, + 0x2571, 0x2573, 0x014A, 0x2581, 0x2588, 0x0122, 0x2589, 0x2589, 0x0130, + 0x258A, 0x258A, 0x012F, 0x258B, 0x258B, 0x012E, 0x258C, 0x258C, 0x012D, + 0x258D, 0x258D, 0x012C, 0x258E, 0x258E, 0x012B, 0x258F, 0x258F, 0x012A, + 0x2593, 0x2593, 0x3710, 0x2594, 0x2594, 0x0136, 0x2595, 0x2595, 0x0139, + 0x25A0, 0x25A0, 0x00BE, 0x25A1, 0x25A1, 0x00BD, 0x25B2, 0x25B2, 0x00B7, + 0x25B3, 0x25B3, 0x00B6, 0x25BC, 0x25BC, 0x00C0, 0x25BD, 0x25BD, 0x00BF, + 0x25C6, 0x25C6, 0x00BC, 0x25C7, 0x25C7, 0x00BB, 0x25CB, 0x25CB, 0x00B4, + 0x25CE, 0x25CE, 0x00B8, 0x25CF, 0x25CF, 0x00B5, 0x25E2, 0x25E3, 0x0146, + 0x25E4, 0x25E4, 0x0149, 0x25E5, 0x25E5, 0x0148, 0x2605, 0x2605, 0x00BA, + 0x2606, 0x2606, 0x00B9, 0x2609, 0x2609, 0x00F4, 0x2640, 0x2640, 0x00F1, + 0x2641, 0x2641, 0x00F3, 0x2642, 0x2642, 0x00F2, 0x273D, 0x273D, 0x35C0, + 0x2E80, 0x2E80, 0x44C8, 0x2E84, 0x2E84, 0x451C, 0x2E86, 0x2E88, 0x451D, + 0x2E8A, 0x2E8A, 0x4520, 0x2E8C, 0x2E8D, 0x4521, 0x2E95, 0x2E95, 0x4523, + 0x2E9C, 0x2E9C, 0x4524, 0x2E9D, 0x2E9D, 0x02DC, 0x2EA5, 0x2EA5, 0x4525, + 0x2EA7, 0x2EA7, 0x4526, 0x2EAA, 0x2EAA, 0x4527, 0x2EAC, 0x2EAC, 0x4528, + 0x2EAE, 0x2EAE, 0x4529, 0x2EB6, 0x2EB6, 0x452A, 0x2EBC, 0x2EBC, 0x452B, + 0x2EBE, 0x2EBE, 0x452C, 0x2EC6, 0x2EC6, 0x0509, 0x2ECA, 0x2ECA, 0x452D, + 0x2ECC, 0x2ECD, 0x452E, 0x2ECF, 0x2ECF, 0x4530, 0x2ED6, 0x2ED7, 0x4531, + 0x2EDE, 0x2EDE, 0x4533, 0x2EE3, 0x2EE3, 0x09F6, 0x2F33, 0x2F33, 0x0227, + 0x3000, 0x3000, 0x0063, 0x3001, 0x3002, 0x0065, 0x3003, 0x3003, 0x00B3, + 0x3005, 0x3007, 0x35BA, 0x3008, 0x3009, 0x0094, 0x300A, 0x300B, 0x0090, + 0x300C, 0x300D, 0x0098, 0x300E, 0x300F, 0x009C, 0x3010, 0x3011, 0x008C, + 0x3012, 0x3012, 0x0105, 0x3014, 0x3015, 0x0088, 0x301D, 0x301E, 0x00AA, + 0x3021, 0x3029, 0x0161, 0x3041, 0x3093, 0x35C1, 0x309B, 0x309C, 0x44C6, + 0x309D, 0x309E, 0x35B7, 0x30A1, 0x30F6, 0x3614, 0x30FC, 0x30FC, 0x35BD, + 0x30FD, 0x30FE, 0x35B5, 0x3105, 0x3129, 0x01D1, 0x3231, 0x3231, 0x36E5, + 0x32A3, 0x32A3, 0x00C1, 0x338E, 0x338F, 0x0115, 0x339C, 0x339E, 0x0110, + 0x33A1, 0x33A1, 0x0114, 0x33C4, 0x33C4, 0x0117, 0x33CE, 0x33CE, 0x0113, + 0x33D1, 0x33D1, 0x00EC, 0x33D2, 0x33D2, 0x00EB, 0x33D5, 0x33D5, 0x010F, + 0x3435, 0x3435, 0x39BD, 0x3440, 0x3440, 0x3C67, 0x344C, 0x344C, 0x4593, + 0x3464, 0x3464, 0x3A85, 0x3473, 0x3473, 0x3DC5, 0x347A, 0x347A, 0x4033, + 0x347D, 0x347D, 0x4597, 0x347E, 0x347E, 0x46A3, 0x3493, 0x3493, 0x439E, + 0x3496, 0x3496, 0x37DC, 0x34A5, 0x34A5, 0x4598, 0x34AF, 0x34AF, 0x3C7F, + 0x34BC, 0x34BC, 0x4380, 0x34C1, 0x34C1, 0x44FB, 0x34C8, 0x34C8, 0x3D00, + 0x34DF, 0x34DF, 0x3EA4, 0x34E4, 0x34E4, 0x3E54, 0x34FB, 0x34FB, 0x3DCA, + 0x3506, 0x3506, 0x4336, 0x353E, 0x353E, 0x44E7, 0x3551, 0x3551, 0x45A1, + 0x3553, 0x3553, 0x43A5, 0x3561, 0x3561, 0x40D8, 0x356D, 0x356D, 0x45A4, + 0x3570, 0x3570, 0x3B2F, 0x3572, 0x3572, 0x45A5, 0x3577, 0x3577, 0x3ECB, + 0x3578, 0x3578, 0x4379, 0x3584, 0x3584, 0x39FB, 0x3597, 0x3597, 0x3B2D, + 0x3598, 0x3598, 0x45B0, 0x35A1, 0x35A1, 0x40E2, 0x35A5, 0x35A5, 0x45B1, + 0x35AD, 0x35AD, 0x3EFC, 0x35BF, 0x35BF, 0x45B2, 0x35C1, 0x35C1, 0x4580, + 0x35C5, 0x35C5, 0x45B4, 0x35C7, 0x35C7, 0x459F, 0x35CA, 0x35CA, 0x3E43, + 0x35CE, 0x35CE, 0x3E81, 0x35D2, 0x35D2, 0x3FC9, 0x35D6, 0x35D6, 0x3FB5, + 0x35DB, 0x35DB, 0x470D, 0x35DD, 0x35DD, 0x43AC, 0x35F1, 0x35F1, 0x4696, + 0x35F2, 0x35F2, 0x4627, 0x35F3, 0x35F3, 0x3F6C, 0x35FB, 0x35FB, 0x45C8, + 0x35FE, 0x35FE, 0x3F6A, 0x3609, 0x3609, 0x45F5, 0x3618, 0x3618, 0x4871, + 0x361A, 0x361A, 0x461A, 0x3623, 0x3623, 0x40C6, 0x362D, 0x362D, 0x3E86, + 0x3635, 0x3635, 0x492E, 0x3639, 0x3639, 0x4165, 0x363E, 0x363E, 0x3A08, + 0x3647, 0x3647, 0x4806, 0x3648, 0x3648, 0x3806, 0x3649, 0x3649, 0x4013, + 0x364E, 0x364E, 0x4698, 0x365F, 0x365F, 0x3DF3, 0x367A, 0x367A, 0x3EE3, + 0x3681, 0x3681, 0x45A6, 0x369A, 0x369A, 0x3C71, 0x36A5, 0x36A5, 0x4902, + 0x36AA, 0x36AA, 0x3B30, 0x36AC, 0x36AC, 0x4900, 0x36B0, 0x36B0, 0x3CDF, + 0x36B1, 0x36B1, 0x40CD, 0x36B5, 0x36B5, 0x3BC2, 0x36B9, 0x36B9, 0x4887, + 0x36BC, 0x36BC, 0x3CFF, 0x36C1, 0x36C1, 0x37C5, 0x36C3, 0x36C3, 0x40E5, + 0x36C4, 0x36C4, 0x3905, 0x36C5, 0x36C5, 0x4296, 0x36C7, 0x36C7, 0x3D3A, + 0x36C8, 0x36C8, 0x4820, 0x36D3, 0x36D3, 0x3A38, 0x36D4, 0x36D4, 0x3BB3, + 0x36D6, 0x36D6, 0x3D0C, 0x36DD, 0x36DD, 0x3A36, 0x36E1, 0x36E1, 0x397C, + 0x36E2, 0x36E2, 0x3CDD, 0x36E5, 0x36E5, 0x4216, 0x36E6, 0x36E6, 0x40FC, + 0x36F5, 0x36F5, 0x3A18, 0x3701, 0x3701, 0x3A34, 0x3703, 0x3703, 0x460F, + 0x3708, 0x3708, 0x40FF, 0x370A, 0x370A, 0x3CD5, 0x370D, 0x370D, 0x4238, + 0x371C, 0x371C, 0x3DFE, 0x3722, 0x3722, 0x3979, 0x3723, 0x3723, 0x3980, + 0x3725, 0x3725, 0x3849, 0x372C, 0x372C, 0x3C8C, 0x372D, 0x372D, 0x3D37, + 0x3730, 0x3730, 0x495C, 0x3732, 0x3732, 0x4106, 0x3733, 0x3733, 0x3997, + 0x373A, 0x373A, 0x3E56, 0x3740, 0x3740, 0x4202, 0x3743, 0x3743, 0x4036, + 0x3762, 0x3762, 0x3DB6, 0x376F, 0x376F, 0x47CB, 0x3797, 0x3797, 0x45ED, + 0x37A0, 0x37A0, 0x3A28, 0x37B9, 0x37B9, 0x43B7, 0x37BE, 0x37BE, 0x393E, + 0x37F2, 0x37F2, 0x3BA1, 0x37F8, 0x37F8, 0x42D2, 0x37FB, 0x37FB, 0x3EF5, + 0x380F, 0x380F, 0x462C, 0x3819, 0x3819, 0x39AF, 0x3820, 0x3820, 0x462F, + 0x382D, 0x382D, 0x412E, 0x3836, 0x3836, 0x4133, 0x3838, 0x3838, 0x43BB, + 0x3863, 0x3863, 0x46C3, 0x38A0, 0x38A0, 0x4145, 0x38C3, 0x38C3, 0x3912, + 0x38CC, 0x38CC, 0x4076, 0x38D1, 0x38D1, 0x3A95, 0x38FA, 0x38FA, 0x44EB, + 0x3908, 0x3908, 0x4632, 0x3914, 0x3914, 0x43BE, 0x3927, 0x3927, 0x3C31, + 0x3932, 0x3932, 0x4182, 0x393F, 0x393F, 0x4633, 0x394D, 0x394D, 0x4634, + 0x3963, 0x3963, 0x4163, 0x3980, 0x3980, 0x3874, 0x3989, 0x3989, 0x4638, + 0x398A, 0x398A, 0x3CE8, 0x3992, 0x3992, 0x4376, 0x3999, 0x3999, 0x39BA, + 0x399B, 0x399B, 0x3DB3, 0x39A1, 0x39A1, 0x3E19, 0x39A4, 0x39A4, 0x3E0F, + 0x39B8, 0x39B8, 0x463B, 0x39DC, 0x39DC, 0x3ECE, 0x39E2, 0x39E2, 0x46C8, + 0x39E5, 0x39E5, 0x393B, 0x39EC, 0x39EC, 0x4310, 0x39F8, 0x39F8, 0x463E, + 0x39FB, 0x39FB, 0x4345, 0x39FE, 0x39FE, 0x4368, 0x3A01, 0x3A01, 0x41E0, + 0x3A03, 0x3A03, 0x4640, 0x3A06, 0x3A06, 0x4377, 0x3A17, 0x3A17, 0x4190, + 0x3A18, 0x3A18, 0x438F, 0x3A29, 0x3A29, 0x3A5E, 0x3A2A, 0x3A2A, 0x3EDF, + 0x3A34, 0x3A34, 0x4319, 0x3A4B, 0x3A4B, 0x4644, 0x3A52, 0x3A52, 0x3ED3, + 0x3A57, 0x3A57, 0x419E, 0x3A5C, 0x3A5C, 0x3FC4, 0x3A5E, 0x3A5E, 0x3B07, + 0x3A66, 0x3A66, 0x419C, 0x3A67, 0x3A67, 0x4333, 0x3A97, 0x3A97, 0x4647, + 0x3AAB, 0x3AAB, 0x4091, 0x3ABD, 0x3ABD, 0x4649, 0x3ADE, 0x3ADE, 0x414C, + 0x3AE0, 0x3AE0, 0x3A7A, 0x3AF0, 0x3AF0, 0x46B2, 0x3AF2, 0x3AF2, 0x464C, + 0x3AFB, 0x3AFB, 0x3AF2, 0x3B0E, 0x3B0E, 0x38E8, 0x3B19, 0x3B19, 0x46C5, + 0x3B22, 0x3B22, 0x464E, 0x3B2B, 0x3B2B, 0x4956, 0x3B39, 0x3B39, 0x474B, + 0x3B42, 0x3B42, 0x4650, 0x3B58, 0x3B58, 0x4652, 0x3B60, 0x3B60, 0x393A, + 0x3B71, 0x3B71, 0x4656, 0x3B72, 0x3B72, 0x4655, 0x3B7B, 0x3B7B, 0x4657, + 0x3B7C, 0x3B7C, 0x385A, 0x3B80, 0x3B80, 0x41E2, 0x3B96, 0x3B96, 0x3A9C, + 0x3B99, 0x3B99, 0x3A98, 0x3BA1, 0x3BA1, 0x41E9, 0x3BBC, 0x3BBC, 0x43C8, + 0x3BBE, 0x3BBE, 0x3DB1, 0x3BC2, 0x3BC2, 0x4134, 0x3BC4, 0x3BC4, 0x3AA0, + 0x3BD7, 0x3BD7, 0x3AAC, 0x3BDD, 0x3BDD, 0x465F, 0x3BEC, 0x3BEC, 0x4664, + 0x3BF2, 0x3BF2, 0x4666, 0x3BF3, 0x3BF3, 0x41F3, 0x3BF4, 0x3BF4, 0x3A6E, + 0x3C0D, 0x3C0D, 0x41F7, 0x3C11, 0x3C11, 0x3E40, 0x3C15, 0x3C15, 0x3998, + 0x3C54, 0x3C54, 0x3E00, 0x3CCB, 0x3CCB, 0x4670, 0x3CCD, 0x3CCD, 0x3CE5, + 0x3CD1, 0x3CD1, 0x4003, 0x3CD6, 0x3CD6, 0x3CF7, 0x3CDC, 0x3CDC, 0x404E, + 0x3CEB, 0x3CEB, 0x4217, 0x3CEF, 0x3CEF, 0x4675, 0x3D13, 0x3D13, 0x3773, + 0x3D1D, 0x3D1D, 0x393C, 0x3D32, 0x3D32, 0x4957, 0x3D3B, 0x3D3B, 0x4245, + 0x3D46, 0x3D46, 0x4685, 0x3D4C, 0x3D4C, 0x3CEB, 0x3D4E, 0x3D4E, 0x4242, + 0x3D51, 0x3D51, 0x38EA, 0x3D5F, 0x3D5F, 0x4159, 0x3D62, 0x3D62, 0x3C5E, + 0x3D69, 0x3D69, 0x3CEA, 0x3D6A, 0x3D6A, 0x4689, 0x3D6F, 0x3D6F, 0x3CFC, + 0x3D75, 0x3D75, 0x468A, 0x3D7D, 0x3D7D, 0x3C2F, 0x3D85, 0x3D85, 0x494B, + 0x3D8A, 0x3D8A, 0x468D, 0x3D8F, 0x3D8F, 0x3ABD, 0x3D91, 0x3D91, 0x468F, + 0x3DA5, 0x3DA5, 0x3D56, 0x3DAD, 0x3DAD, 0x4699, 0x3DB4, 0x3DB4, 0x40A6, + 0x3DBF, 0x3DBF, 0x37D0, 0x3DC6, 0x3DC6, 0x48DE, 0x3DC7, 0x3DC7, 0x4164, + 0x3DCC, 0x3DCC, 0x3D6F, 0x3DCD, 0x3DCD, 0x3AF3, 0x3DD3, 0x3DD3, 0x37E1, + 0x3DDB, 0x3DDB, 0x3FFF, 0x3DE7, 0x3DE7, 0x3999, 0x3DE8, 0x3DE8, 0x425D, + 0x3DEB, 0x3DEB, 0x3E5A, 0x3DF3, 0x3DF3, 0x46D4, 0x3DF7, 0x3DF7, 0x48AB, + 0x3DFC, 0x3DFC, 0x462B, 0x3DFD, 0x3DFD, 0x3C14, 0x3E06, 0x3E06, 0x491D, + 0x3E40, 0x3E40, 0x4169, 0x3E43, 0x3E43, 0x436D, 0x3E48, 0x3E48, 0x4595, + 0x3E55, 0x3E55, 0x427F, 0x3E74, 0x3E74, 0x3EE2, 0x3EA8, 0x3EA8, 0x4304, + 0x3EA9, 0x3EA9, 0x46ED, 0x3EAA, 0x3EAA, 0x4075, 0x3EAD, 0x3EAD, 0x3B9D, + 0x3EB1, 0x3EB1, 0x3AD8, 0x3EB8, 0x3EB8, 0x3A4B, 0x3EBF, 0x3EBF, 0x3B0B, + 0x3EC2, 0x3EC2, 0x3BD8, 0x3EC7, 0x3EC7, 0x3975, 0x3ECA, 0x3ECA, 0x46F1, + 0x3ECC, 0x3ECC, 0x3BE2, 0x3ED0, 0x3ED0, 0x3854, 0x3ED1, 0x3ED1, 0x46F2, + 0x3ED6, 0x3ED6, 0x3CAD, 0x3ED7, 0x3ED7, 0x429F, 0x3EDA, 0x3EDA, 0x3D02, + 0x3EDE, 0x3EDE, 0x39F2, 0x3EE1, 0x3EE1, 0x3CA8, 0x3EE2, 0x3EE2, 0x46F6, + 0x3EE7, 0x3EE7, 0x3BDC, 0x3EE9, 0x3EE9, 0x3CA4, 0x3EEB, 0x3EEB, 0x396A, + 0x3EF0, 0x3EF0, 0x46F7, 0x3EF3, 0x3EF3, 0x3ADD, 0x3EF4, 0x3EF4, 0x46F8, + 0x3EFA, 0x3EFA, 0x46F9, 0x3EFC, 0x3EFC, 0x3BE8, 0x3EFF, 0x3EFF, 0x3AF5, + 0x3F00, 0x3F00, 0x3C0D, 0x3F04, 0x3F04, 0x42C3, 0x3F06, 0x3F06, 0x3AD7, + 0x3F0E, 0x3F0E, 0x46FB, 0x3F53, 0x3F53, 0x46FC, 0x3F58, 0x3F58, 0x3AE9, + 0x3F59, 0x3F59, 0x4089, 0x3F63, 0x3F63, 0x3AE6, 0x3F7C, 0x3F7C, 0x4700, + 0x3F93, 0x3F93, 0x45CD, 0x3FC0, 0x3FC0, 0x43CF, 0x3FD7, 0x3FD7, 0x43D1, + 0x3FDC, 0x3FDC, 0x4704, 0x3FE5, 0x3FE5, 0x46DF, 0x3FED, 0x3FED, 0x4335, + 0x3FF9, 0x3FF9, 0x45D7, 0x3FFA, 0x3FFA, 0x4354, 0x4004, 0x4004, 0x410E, + 0x401D, 0x401D, 0x4709, 0x4039, 0x4039, 0x470B, 0x4045, 0x4045, 0x470C, + 0x4053, 0x4053, 0x45B6, 0x4057, 0x4057, 0x399D, 0x4062, 0x4062, 0x3BCB, + 0x4065, 0x4065, 0x3FD3, 0x406A, 0x406A, 0x470F, 0x406F, 0x406F, 0x4710, + 0x40A8, 0x40A8, 0x43D5, 0x40BB, 0x40BB, 0x45C0, 0x40BF, 0x40BF, 0x3EEC, + 0x40C8, 0x40C8, 0x3B0E, 0x40D8, 0x40D8, 0x41AB, 0x40DF, 0x40DF, 0x3E17, + 0x40FA, 0x40FA, 0x3EBE, 0x4103, 0x4103, 0x43D7, 0x4104, 0x4104, 0x425C, + 0x4109, 0x4109, 0x471C, 0x410E, 0x410E, 0x3B1B, 0x4132, 0x4132, 0x3B25, + 0x4167, 0x4167, 0x471F, 0x416C, 0x416C, 0x38AE, 0x416E, 0x416E, 0x3B23, + 0x417F, 0x417F, 0x3B82, 0x4190, 0x4190, 0x46C0, 0x41B2, 0x41B2, 0x4720, + 0x41C4, 0x41C4, 0x4723, 0x41CA, 0x41CA, 0x373F, 0x41CF, 0x41CF, 0x4726, + 0x41DB, 0x41DB, 0x37BF, 0x41EF, 0x41EF, 0x3743, 0x41F9, 0x41F9, 0x3B3E, + 0x4211, 0x4211, 0x3B41, 0x4240, 0x4240, 0x37F1, 0x4260, 0x4260, 0x472B, + 0x426A, 0x426A, 0x3B55, 0x427A, 0x427A, 0x472C, 0x428C, 0x428C, 0x472F, + 0x4294, 0x4294, 0x4731, 0x42B5, 0x42B5, 0x4010, 0x42B9, 0x42B9, 0x38A6, + 0x42BC, 0x42BC, 0x3C8A, 0x42F4, 0x42F4, 0x3BB9, 0x42FB, 0x42FB, 0x3CEE, + 0x42FC, 0x42FC, 0x41E6, 0x432B, 0x432B, 0x377D, 0x436E, 0x436E, 0x46CA, + 0x4397, 0x4397, 0x473B, 0x43BA, 0x43BA, 0x435F, 0x43C1, 0x43C1, 0x4695, + 0x43D9, 0x43D9, 0x433E, 0x43DF, 0x43DF, 0x3E49, 0x43ED, 0x43ED, 0x4745, + 0x43F2, 0x43F2, 0x3E48, 0x4401, 0x4401, 0x474A, 0x4402, 0x4402, 0x3B73, + 0x4413, 0x4413, 0x474F, 0x4425, 0x4425, 0x4751, 0x442D, 0x442D, 0x4752, + 0x447A, 0x447A, 0x37AF, 0x448F, 0x448F, 0x4758, 0x449F, 0x449F, 0x3AE2, + 0x44A0, 0x44A0, 0x37ED, 0x44A2, 0x44A2, 0x4079, 0x44B0, 0x44B0, 0x475C, + 0x44B7, 0x44B7, 0x3FA1, 0x44C0, 0x44C0, 0x3C07, 0x44C5, 0x44C5, 0x4210, + 0x44CE, 0x44CE, 0x3D23, 0x44DD, 0x44DD, 0x39DD, 0x44DF, 0x44DF, 0x3D22, + 0x44E4, 0x44E4, 0x37E2, 0x44E9, 0x44E9, 0x41CF, 0x44EA, 0x44EA, 0x3B71, + 0x44EB, 0x44EB, 0x3CF2, 0x44EC, 0x44EC, 0x3EB4, 0x44F4, 0x44F4, 0x3992, + 0x4503, 0x4503, 0x469F, 0x4504, 0x4504, 0x4763, 0x4509, 0x4509, 0x3E50, + 0x450B, 0x450B, 0x37D4, 0x4516, 0x4516, 0x37F9, 0x451D, 0x451D, 0x3767, + 0x4527, 0x4527, 0x37F7, 0x452E, 0x452E, 0x3CD3, 0x4533, 0x4533, 0x3C51, + 0x453B, 0x453B, 0x476A, 0x453D, 0x453D, 0x38C4, 0x453F, 0x453F, 0x3E12, + 0x4543, 0x4543, 0x37F3, 0x4551, 0x4551, 0x3AE4, 0x4552, 0x4552, 0x40B3, + 0x4555, 0x4555, 0x423E, 0x455C, 0x455C, 0x378B, 0x4562, 0x4562, 0x4940, + 0x456A, 0x456A, 0x3804, 0x4577, 0x4577, 0x476E, 0x4585, 0x4585, 0x38C5, + 0x45E9, 0x45E9, 0x3EE4, 0x4606, 0x4606, 0x4773, 0x460F, 0x460F, 0x3815, + 0x4615, 0x4615, 0x3843, 0x4617, 0x4617, 0x4774, 0x465B, 0x465B, 0x381D, + 0x467A, 0x467A, 0x39E9, 0x4680, 0x4680, 0x3D01, 0x46CF, 0x46CF, 0x3BA0, + 0x46D0, 0x46D0, 0x3DFA, 0x46F5, 0x46F5, 0x3B9F, 0x4713, 0x4713, 0x3833, + 0x4718, 0x4718, 0x3DC7, 0x474E, 0x474E, 0x3EBC, 0x477C, 0x477C, 0x3DCD, + 0x4798, 0x4798, 0x4781, 0x47A6, 0x47A6, 0x40A3, 0x47B6, 0x47B6, 0x3EEA, + 0x47D5, 0x47D5, 0x431A, 0x47ED, 0x47ED, 0x4783, 0x47F4, 0x47F4, 0x432F, + 0x4800, 0x4800, 0x461E, 0x480B, 0x480B, 0x4352, 0x4837, 0x4837, 0x4787, + 0x485D, 0x485D, 0x410F, 0x4871, 0x4871, 0x3D03, 0x489B, 0x489B, 0x3BBD, + 0x48AD, 0x48AD, 0x4791, 0x48AE, 0x48AE, 0x494D, 0x48D0, 0x48D0, 0x3DA7, + 0x48DD, 0x48DD, 0x4120, 0x48ED, 0x48ED, 0x4288, 0x48F3, 0x48F3, 0x3EC1, + 0x48FA, 0x48FA, 0x3E44, 0x4906, 0x4906, 0x3BC7, 0x4911, 0x4911, 0x4584, + 0x491E, 0x491E, 0x4794, 0x4925, 0x4925, 0x3C0F, 0x492A, 0x492A, 0x46AE, + 0x492D, 0x492D, 0x46CD, 0x4935, 0x4935, 0x3CC3, 0x493C, 0x493C, 0x3BF8, + 0x493E, 0x493E, 0x3D06, 0x4945, 0x4945, 0x47A3, 0x4951, 0x4951, 0x47A4, + 0x4953, 0x4953, 0x42AD, 0x4965, 0x4965, 0x3899, 0x496A, 0x496A, 0x47A9, + 0x4972, 0x4972, 0x3A24, 0x4989, 0x4989, 0x379B, 0x49A1, 0x49A1, 0x38B7, + 0x49A7, 0x49A7, 0x47AE, 0x49DF, 0x49DF, 0x38AA, 0x49E5, 0x49E5, 0x47B1, + 0x49E7, 0x49E7, 0x4621, 0x4A0F, 0x4A0F, 0x38C3, 0x4A1D, 0x4A1D, 0x3BEC, + 0x4A24, 0x4A24, 0x47B2, 0x4A35, 0x4A35, 0x47B4, 0x4A96, 0x4A96, 0x3CE7, + 0x4AB4, 0x4AB4, 0x4361, 0x4AB8, 0x4AB8, 0x3DA8, 0x4AD1, 0x4AD1, 0x38E3, + 0x4AE4, 0x4AE4, 0x47B7, 0x4AFF, 0x4AFF, 0x38F2, 0x4B19, 0x4B19, 0x47B9, + 0x4B2C, 0x4B2C, 0x461F, 0x4B37, 0x4B37, 0x41A9, 0x4B6F, 0x4B6F, 0x3C16, + 0x4B70, 0x4B70, 0x47C0, 0x4B72, 0x4B72, 0x38FC, 0x4B7B, 0x4B7B, 0x3C8D, + 0x4B7E, 0x4B7E, 0x400A, 0x4B8E, 0x4B8E, 0x39F7, 0x4B90, 0x4B90, 0x3C20, + 0x4B93, 0x4B93, 0x3A8C, 0x4B96, 0x4B96, 0x3942, 0x4B97, 0x4B97, 0x3C24, + 0x4B9D, 0x4B9D, 0x47C2, 0x4BBD, 0x4BBD, 0x3C23, 0x4BBE, 0x4BBE, 0x3954, + 0x4BC0, 0x4BC0, 0x3DDC, 0x4C04, 0x4C04, 0x3FBB, 0x4C07, 0x4C07, 0x3FB7, + 0x4C0E, 0x4C0E, 0x390C, 0x4C3B, 0x4C3B, 0x3F3C, 0x4C3E, 0x4C3E, 0x457B, + 0x4C5B, 0x4C5B, 0x3ED9, 0x4C6D, 0x4C6D, 0x47C9, 0x4C7D, 0x4C7D, 0x3E66, + 0x4CA4, 0x4CA4, 0x48BE, 0x4CAE, 0x4CAE, 0x3C42, 0x4CB0, 0x4CB0, 0x3C45, + 0x4CB7, 0x4CB7, 0x3E21, 0x4CCD, 0x4CCD, 0x4578, 0x4CE1, 0x4CE1, 0x3EF3, + 0x4CED, 0x4CED, 0x40AB, 0x4D09, 0x4D09, 0x3ED6, 0x4D10, 0x4D10, 0x4117, + 0x4D34, 0x4D34, 0x3935, 0x4D91, 0x4D91, 0x43F5, 0x4D9C, 0x4D9C, 0x48C4, + 0x4E00, 0x4E00, 0x0253, 0x4E01, 0x4E01, 0x0255, 0x4E03, 0x4E03, 0x0256, + 0x4E04, 0x4E04, 0x48FE, 0x4E07, 0x4E07, 0x1771, 0x4E08, 0x4E08, 0x0269, + 0x4E09, 0x4E09, 0x0267, 0x4E0A, 0x4E0A, 0x026A, 0x4E0B, 0x4E0B, 0x0268, + 0x4E0C, 0x4E0C, 0x1772, 0x4E0D, 0x4E0D, 0x0294, 0x4E0E, 0x4E0E, 0x177A, + 0x4E0F, 0x4E0F, 0x1778, 0x4E10, 0x4E10, 0x0293, 0x4E11, 0x4E11, 0x0292, + 0x4E14, 0x4E14, 0x02F2, 0x4E15, 0x4E15, 0x02F1, 0x4E16, 0x4E16, 0x02F0, + 0x4E18, 0x4E18, 0x02F3, 0x4E19, 0x4E19, 0x02EF, 0x4E1A, 0x4E1A, 0x48FD, + 0x4E1C, 0x4E1C, 0x48E0, 0x4E1E, 0x4E1F, 0x036E, 0x4E21, 0x4E21, 0x3D6D, + 0x4E24, 0x4E24, 0x458D, 0x4E26, 0x4E26, 0x0528, 0x4E28, 0x4E28, 0x0218, + 0x4E2A, 0x4E2A, 0x3F57, 0x4E2B, 0x4E2B, 0x026B, 0x4E2C, 0x4E2C, 0x44F3, + 0x4E2D, 0x4E2D, 0x0295, 0x4E2E, 0x4E2E, 0x177B, 0x4E30, 0x4E30, 0x0296, + 0x4E31, 0x4E31, 0x178E, 0x4E32, 0x4E32, 0x0415, 0x4E33, 0x4E33, 0x18F4, + 0x4E36, 0x4E36, 0x0219, 0x4E37, 0x4E37, 0x4517, 0x4E38, 0x4E38, 0x026C, + 0x4E39, 0x4E39, 0x0297, 0x4E3B, 0x4E3B, 0x02F4, 0x4E3C, 0x4E3C, 0x178F, + 0x4E3D, 0x4E3D, 0x4537, 0x4E3F, 0x4E3F, 0x021A, 0x4E41, 0x4E41, 0x36AF, + 0x4E42, 0x4E42, 0x176C, 0x4E43, 0x4E43, 0x0257, 0x4E45, 0x4E45, 0x026E, + 0x4E47, 0x4E47, 0x1773, 0x4E48, 0x4E48, 0x026F, 0x4E49, 0x4E49, 0x408E, + 0x4E4B, 0x4E4B, 0x0298, 0x4E4D, 0x4E4D, 0x02F5, 0x4E4E, 0x4E4E, 0x02F7, + 0x4E4F, 0x4E4F, 0x02F6, 0x4E52, 0x4E53, 0x0370, 0x4E56, 0x4E56, 0x0529, + 0x4E58, 0x4E58, 0x0831, 0x4E59, 0x4E59, 0x0254, 0x4E5A, 0x4E5A, 0x36B1, + 0x4E5B, 0x4E5B, 0x44E5, 0x4E5C, 0x4E5C, 0x176D, 0x4E5D, 0x4E5D, 0x0258, + 0x4E5E, 0x4E5E, 0x0271, 0x4E5F, 0x4E5F, 0x0270, 0x4E69, 0x4E69, 0x0372, + 0x4E6A, 0x4E6A, 0x3DE5, 0x4E73, 0x4E73, 0x052A, 0x4E78, 0x4E78, 0x3D8E, + 0x4E7E, 0x4E7E, 0x09FB, 0x4E7F, 0x4E7F, 0x1E35, 0x4E80, 0x4E80, 0x458E, + 0x4E81, 0x4E81, 0x43BC, 0x4E82, 0x4E82, 0x0DBE, 0x4E83, 0x4E84, 0x2361, + 0x4E85, 0x4E85, 0x021B, 0x4E86, 0x4E86, 0x0259, 0x4E87, 0x4E87, 0x458F, + 0x4E88, 0x4E88, 0x029A, 0x4E89, 0x4E89, 0x459C, 0x4E8B, 0x4E8B, 0x052B, + 0x4E8C, 0x4E8C, 0x025A, 0x4E8D, 0x4E8D, 0x1774, 0x4E8E, 0x4E8E, 0x0272, + 0x4E91, 0x4E91, 0x029B, 0x4E92, 0x4E92, 0x029D, 0x4E93, 0x4E93, 0x177C, + 0x4E94, 0x4E94, 0x029E, 0x4E95, 0x4E95, 0x029C, 0x4E98, 0x4E98, 0x39C4, + 0x4E99, 0x4E99, 0x0373, 0x4E9A, 0x4E9A, 0x48D5, 0x4E9B, 0x4E9B, 0x052C, + 0x4E9E, 0x4E9E, 0x052D, 0x4E9F, 0x4E9F, 0x06A3, 0x4EA0, 0x4EA0, 0x021C, + 0x4EA1, 0x4EA1, 0x0273, 0x4EA2, 0x4EA2, 0x029F, 0x4EA4, 0x4EA4, 0x0374, + 0x4EA5, 0x4EA5, 0x0376, 0x4EA6, 0x4EA6, 0x0375, 0x4EA8, 0x4EA8, 0x0416, + 0x4EAB, 0x4EAC, 0x052E, 0x4EAD, 0x4EAE, 0x06A4, 0x4EB3, 0x4EB3, 0x0832, + 0x4EB6, 0x4EB6, 0x2363, 0x4EB7, 0x4EB7, 0x413C, 0x4EB9, 0x4EB9, 0x3377, + 0x4EBA, 0x4EBA, 0x025B, 0x4EBB, 0x4EBB, 0x44E6, 0x4EBC, 0x4EBC, 0x39B1, + 0x4EBF, 0x4EBF, 0x4590, 0x4EC0, 0x4EC0, 0x02A1, 0x4EC1, 0x4EC1, 0x02A0, + 0x4EC2, 0x4EC2, 0x177D, 0x4EC3, 0x4EC3, 0x02A2, 0x4EC4, 0x4EC4, 0x02A8, + 0x4EC6, 0x4EC7, 0x02A3, 0x4EC8, 0x4EC8, 0x177F, 0x4EC9, 0x4EC9, 0x177E, + 0x4ECA, 0x4ECB, 0x02A6, 0x4ECD, 0x4ECD, 0x02A5, 0x4ECE, 0x4ECE, 0x3F62, + 0x4ED4, 0x4ED7, 0x02FA, 0x4ED8, 0x4ED8, 0x02F9, 0x4ED9, 0x4ED9, 0x0300, + 0x4EDA, 0x4EDA, 0x1795, 0x4EDC, 0x4EDC, 0x1791, 0x4EDD, 0x4EDD, 0x1794, + 0x4EDE, 0x4EDE, 0x0301, 0x4EDF, 0x4EDF, 0x0311, 0x4EE1, 0x4EE1, 0x1793, + 0x4EE3, 0x4EE4, 0x02FE, 0x4EE5, 0x4EE5, 0x02F8, 0x4EE8, 0x4EE8, 0x1790, + 0x4EE9, 0x4EE9, 0x1792, 0x4EEA, 0x4EEA, 0x48CB, 0x4EEB, 0x4EEB, 0x4591, + 0x4EEE, 0x4EEE, 0x3D76, 0x4EF0, 0x4EF0, 0x0383, 0x4EF1, 0x4EF1, 0x17BA, + 0x4EF2, 0x4EF2, 0x0380, 0x4EF3, 0x4EF3, 0x0384, 0x4EF4, 0x4EF4, 0x17C4, + 0x4EF5, 0x4EF5, 0x17B8, 0x4EF6, 0x4EF6, 0x0381, 0x4EF7, 0x4EF7, 0x17BC, + 0x4EF8, 0x4EF8, 0x39AD, 0x4EFB, 0x4EFB, 0x0382, 0x4EFD, 0x4EFD, 0x0385, + 0x4EFF, 0x4EFF, 0x0377, 0x4F00, 0x4F00, 0x17BB, 0x4F01, 0x4F01, 0x0386, + 0x4F02, 0x4F02, 0x17BF, 0x4F03, 0x4F03, 0x39C8, 0x4F04, 0x4F04, 0x17C3, + 0x4F05, 0x4F05, 0x17C0, 0x4F08, 0x4F08, 0x17BD, 0x4F09, 0x4F09, 0x0378, + 0x4F0A, 0x4F0A, 0x037A, 0x4F0B, 0x4F0B, 0x0387, 0x4F0D, 0x4F0D, 0x037C, + 0x4F0E, 0x4F0E, 0x17B5, 0x4F0F, 0x4F0F, 0x037F, 0x4F10, 0x4F11, 0x037D, + 0x4F12, 0x4F12, 0x17C5, 0x4F13, 0x4F13, 0x17C2, 0x4F14, 0x4F14, 0x17B9, + 0x4F15, 0x4F15, 0x037B, 0x4F18, 0x4F18, 0x17B6, 0x4F19, 0x4F19, 0x0379, + 0x4F1A, 0x4F1A, 0x453C, 0x4F1D, 0x4F1D, 0x17BE, 0x4F22, 0x4F22, 0x17C1, + 0x4F28, 0x4F28, 0x453D, 0x4F29, 0x4F29, 0x39BE, 0x4F2C, 0x4F2C, 0x17B7, + 0x4F2D, 0x4F2D, 0x182F, 0x4F2F, 0x4F2F, 0x042C, 0x4F30, 0x4F30, 0x041F, + 0x4F32, 0x4F32, 0x393D, 0x4F33, 0x4F33, 0x1830, 0x4F34, 0x4F34, 0x041C, + 0x4F36, 0x4F36, 0x042E, 0x4F37, 0x4F37, 0x4592, 0x4F38, 0x4F38, 0x0424, + 0x4F39, 0x4F39, 0x3F65, 0x4F3A, 0x4F3A, 0x0423, 0x4F3B, 0x4F3B, 0x1824, + 0x4F3C, 0x4F3C, 0x0427, 0x4F3D, 0x4F3D, 0x0422, 0x4F3E, 0x4F3E, 0x1829, + 0x4F3F, 0x4F3F, 0x1831, 0x4F41, 0x4F41, 0x182D, 0x4F42, 0x4F42, 0x39CB, + 0x4F43, 0x4F43, 0x0425, 0x4F45, 0x4F45, 0x3B8F, 0x4F46, 0x4F46, 0x0428, + 0x4F47, 0x4F47, 0x0419, 0x4F48, 0x4F48, 0x0431, 0x4F49, 0x4F49, 0x1826, + 0x4F4B, 0x4F4B, 0x39B4, 0x4F4C, 0x4F4C, 0x1900, 0x4F4D, 0x4F4D, 0x0417, + 0x4F4E, 0x4F4E, 0x042D, 0x4F4F, 0x4F4F, 0x0418, 0x4F50, 0x4F51, 0x0420, + 0x4F52, 0x4F52, 0x182B, 0x4F53, 0x4F53, 0x1827, 0x4F54, 0x4F54, 0x0426, + 0x4F55, 0x4F55, 0x041E, 0x4F56, 0x4F56, 0x1823, 0x4F57, 0x4F57, 0x041A, + 0x4F58, 0x4F58, 0x182E, 0x4F59, 0x4F59, 0x042F, 0x4F5A, 0x4F5A, 0x0432, + 0x4F5B, 0x4F5B, 0x041D, 0x4F5C, 0x4F5C, 0x042A, 0x4F5D, 0x4F5D, 0x0430, + 0x4F5E, 0x4F5E, 0x041B, 0x4F5F, 0x4F5F, 0x182C, 0x4F60, 0x4F60, 0x042B, + 0x4F61, 0x4F61, 0x1832, 0x4F62, 0x4F62, 0x1825, 0x4F63, 0x4F63, 0x0429, + 0x4F64, 0x4F64, 0x1828, 0x4F67, 0x4F67, 0x182A, 0x4F69, 0x4F69, 0x053D, + 0x4F6A, 0x4F6A, 0x1902, 0x4F6B, 0x4F6B, 0x190E, 0x4F6C, 0x4F6C, 0x0535, + 0x4F6E, 0x4F6E, 0x190F, 0x4F6F, 0x4F6F, 0x0530, 0x4F70, 0x4F70, 0x053A, + 0x4F72, 0x4F72, 0x3C72, 0x4F73, 0x4F73, 0x0533, 0x4F74, 0x4F74, 0x18FC, + 0x4F75, 0x4F75, 0x053B, 0x4F76, 0x4F76, 0x18FB, 0x4F77, 0x4F77, 0x18FF, + 0x4F78, 0x4F78, 0x1906, 0x4F79, 0x4F79, 0x1904, 0x4F7A, 0x4F7A, 0x0543, + 0x4F7B, 0x4F7B, 0x053E, 0x4F7C, 0x4F7C, 0x18F6, 0x4F7D, 0x4F7D, 0x18F8, + 0x4F7E, 0x4F7E, 0x0540, 0x4F7F, 0x4F7F, 0x0534, 0x4F80, 0x4F80, 0x18F9, + 0x4F81, 0x4F81, 0x1905, 0x4F82, 0x4F82, 0x190C, 0x4F83, 0x4F83, 0x0539, + 0x4F84, 0x4F84, 0x18FE, 0x4F85, 0x4F85, 0x18F7, 0x4F86, 0x4F86, 0x0538, + 0x4F87, 0x4F87, 0x18FA, 0x4F88, 0x4F88, 0x053C, 0x4F89, 0x4F89, 0x18FD, + 0x4F8A, 0x4F8A, 0x39B5, 0x4F8B, 0x4F8B, 0x0537, 0x4F8D, 0x4F8D, 0x0532, + 0x4F8F, 0x4F8F, 0x0541, 0x4F90, 0x4F90, 0x1907, 0x4F91, 0x4F91, 0x0542, + 0x4F92, 0x4F92, 0x190B, 0x4F94, 0x4F94, 0x1909, 0x4F95, 0x4F95, 0x190D, + 0x4F96, 0x4F96, 0x053F, 0x4F97, 0x4F97, 0x1901, 0x4F98, 0x4F98, 0x18F5, + 0x4F9A, 0x4F9A, 0x1903, 0x4F9B, 0x4F9B, 0x0536, 0x4F9C, 0x4F9C, 0x1908, + 0x4F9D, 0x4F9D, 0x0531, 0x4F9E, 0x4F9E, 0x190A, 0x4FA2, 0x4FA2, 0x39C7, + 0x4FA8, 0x4FA8, 0x453E, 0x4FAB, 0x4FAB, 0x4022, 0x4FAE, 0x4FAE, 0x06B4, + 0x4FAF, 0x4FAF, 0x06A8, 0x4FB0, 0x4FB0, 0x3D4A, 0x4FB2, 0x4FB2, 0x1A5D, + 0x4FB3, 0x4FB3, 0x1A65, 0x4FB5, 0x4FB5, 0x06A7, 0x4FB6, 0x4FB6, 0x06AF, + 0x4FB7, 0x4FB7, 0x06BB, 0x4FB9, 0x4FB9, 0x1A6B, 0x4FBA, 0x4FBA, 0x1A69, + 0x4FBB, 0x4FBB, 0x1A64, 0x4FBD, 0x4FBD, 0x4594, 0x4FBF, 0x4FBF, 0x06A9, + 0x4FC0, 0x4FC0, 0x1A6A, 0x4FC1, 0x4FC1, 0x1A60, 0x4FC2, 0x4FC2, 0x06B7, + 0x4FC3, 0x4FC3, 0x06AE, 0x4FC4, 0x4FC4, 0x06B6, 0x4FC5, 0x4FC5, 0x1A5B, + 0x4FC7, 0x4FC7, 0x1A67, 0x4FC8, 0x4FC8, 0x46E8, 0x4FC9, 0x4FC9, 0x1A5E, + 0x4FCA, 0x4FCA, 0x06B2, 0x4FCB, 0x4FCB, 0x1A5F, 0x4FCC, 0x4FCC, 0x39CF, + 0x4FCD, 0x4FCD, 0x1A5A, 0x4FCE, 0x4FCE, 0x06B9, 0x4FCF, 0x4FCF, 0x06AC, + 0x4FD0, 0x4FD0, 0x06B5, 0x4FD1, 0x4FD1, 0x06AB, 0x4FD3, 0x4FD3, 0x1A5C, + 0x4FD4, 0x4FD4, 0x1A61, 0x4FD6, 0x4FD6, 0x1A68, 0x4FD7, 0x4FD7, 0x06B3, + 0x4FD8, 0x4FD8, 0x06B0, 0x4FD9, 0x4FD9, 0x1A63, 0x4FDA, 0x4FDA, 0x06B8, + 0x4FDB, 0x4FDB, 0x1A66, 0x4FDC, 0x4FDC, 0x1A62, 0x4FDD, 0x4FDD, 0x06AD, + 0x4FDE, 0x4FDE, 0x06BA, 0x4FDF, 0x4FDF, 0x06B1, 0x4FE0, 0x4FE0, 0x06AA, + 0x4FE1, 0x4FE1, 0x06A6, 0x4FE4, 0x4FE4, 0x3C66, 0x4FE5, 0x4FE5, 0x39D0, + 0x4FEC, 0x4FEC, 0x1A6C, 0x4FEE, 0x4FEE, 0x084C, 0x4FEF, 0x4FEF, 0x0836, + 0x4FF1, 0x4FF1, 0x0846, 0x4FF2, 0x4FF2, 0x3F28, 0x4FF3, 0x4FF3, 0x084B, + 0x4FF4, 0x4FF4, 0x1C24, 0x4FF5, 0x4FF5, 0x1C23, 0x4FF6, 0x4FF7, 0x1C28, + 0x4FF8, 0x4FF8, 0x0839, 0x4FF9, 0x4FF9, 0x37B3, 0x4FFA, 0x4FFA, 0x0842, + 0x4FFD, 0x4FFD, 0x3F26, 0x4FFE, 0x4FFE, 0x084F, 0x5000, 0x5000, 0x0843, + 0x5003, 0x5003, 0x4596, 0x5005, 0x5005, 0x1C1D, 0x5006, 0x5006, 0x083C, + 0x5007, 0x5007, 0x1C1E, 0x5008, 0x5008, 0x4024, 0x5009, 0x5009, 0x0851, + 0x500B, 0x500B, 0x0848, 0x500C, 0x500D, 0x0833, 0x500E, 0x500E, 0x1C31, + 0x500F, 0x500F, 0x0A0C, 0x5011, 0x5011, 0x0841, 0x5012, 0x5012, 0x0840, + 0x5013, 0x5013, 0x1C1F, 0x5014, 0x5014, 0x0844, 0x5015, 0x5015, 0x1E45, + 0x5016, 0x5016, 0x083B, 0x5017, 0x5017, 0x1C2A, 0x5018, 0x5018, 0x084A, + 0x5019, 0x5019, 0x0849, 0x501A, 0x501A, 0x083F, 0x501B, 0x501B, 0x1C22, + 0x501C, 0x501C, 0x1C2B, 0x501E, 0x501E, 0x1C1C, 0x501F, 0x501F, 0x083E, + 0x5020, 0x5020, 0x1C2C, 0x5021, 0x5021, 0x0847, 0x5022, 0x5022, 0x1C20, + 0x5023, 0x5023, 0x0835, 0x5025, 0x5025, 0x0838, 0x5026, 0x5026, 0x0837, + 0x5027, 0x5027, 0x1C2D, 0x5028, 0x5028, 0x0845, 0x5029, 0x5029, 0x083A, + 0x502A, 0x502A, 0x084E, 0x502B, 0x502B, 0x0850, 0x502C, 0x502C, 0x1C27, + 0x502D, 0x502D, 0x084D, 0x502E, 0x502E, 0x39CC, 0x502F, 0x502F, 0x1C2F, + 0x5030, 0x5030, 0x1C21, 0x5031, 0x5031, 0x1C30, 0x5033, 0x5033, 0x1C25, + 0x5034, 0x5034, 0x3910, 0x5035, 0x5035, 0x1C2E, 0x5037, 0x5037, 0x1C26, + 0x503C, 0x503C, 0x083D, 0x5040, 0x5040, 0x1E4D, 0x5041, 0x5041, 0x1E41, + 0x5043, 0x5043, 0x0A00, 0x5045, 0x5045, 0x1E46, 0x5046, 0x5046, 0x1E4C, + 0x5047, 0x5047, 0x09FF, 0x5048, 0x5048, 0x1E3F, 0x5049, 0x5049, 0x0A03, + 0x504A, 0x504A, 0x1E43, 0x504B, 0x504B, 0x1E3C, 0x504C, 0x504C, 0x0A01, + 0x504D, 0x504D, 0x1E40, 0x504E, 0x504E, 0x0A06, 0x504F, 0x504F, 0x0A0B, + 0x5051, 0x5051, 0x1E51, 0x5053, 0x5053, 0x1E3B, 0x5055, 0x5055, 0x0A07, + 0x5056, 0x5056, 0x3F2C, 0x5057, 0x5057, 0x1E50, 0x5058, 0x5058, 0x39D1, + 0x505A, 0x505A, 0x0A02, 0x505B, 0x505B, 0x1E42, 0x505C, 0x505C, 0x09FE, + 0x505D, 0x505D, 0x1E3D, 0x505E, 0x505E, 0x1E39, 0x505F, 0x505F, 0x1E47, + 0x5060, 0x5060, 0x1E3A, 0x5061, 0x5061, 0x1E38, 0x5062, 0x5062, 0x1E44, + 0x5063, 0x5064, 0x1E4A, 0x5065, 0x5065, 0x0A04, 0x5066, 0x5066, 0x3DC9, + 0x5068, 0x5068, 0x20B8, 0x5069, 0x5069, 0x1E48, 0x506A, 0x506A, 0x1E37, + 0x506B, 0x506B, 0x1E49, 0x506C, 0x506C, 0x39CD, 0x506D, 0x506D, 0x0A0E, + 0x506E, 0x506E, 0x1E4E, 0x506F, 0x506F, 0x0A0D, 0x5070, 0x5070, 0x1E36, + 0x5072, 0x5072, 0x1E3E, 0x5073, 0x5073, 0x1E4F, 0x5074, 0x5074, 0x0A09, + 0x5075, 0x5075, 0x0A08, 0x5076, 0x5076, 0x0A05, 0x5077, 0x5077, 0x0A0A, + 0x507A, 0x507A, 0x09FC, 0x507D, 0x507D, 0x09FD, 0x5080, 0x5080, 0x0BEC, + 0x5081, 0x5081, 0x39CE, 0x5082, 0x5082, 0x20BB, 0x5083, 0x5083, 0x20B4, + 0x5085, 0x5085, 0x0BE9, 0x5087, 0x5087, 0x20BC, 0x5088, 0x5088, 0x439C, + 0x508B, 0x508B, 0x20B2, 0x508C, 0x508C, 0x20B5, 0x508D, 0x508D, 0x0BE8, + 0x508E, 0x508E, 0x20B6, 0x5090, 0x5090, 0x41EC, 0x5091, 0x5091, 0x0BEB, + 0x5092, 0x5092, 0x20BA, 0x5094, 0x5094, 0x20B0, 0x5095, 0x5095, 0x20AF, + 0x5096, 0x5096, 0x0BED, 0x5098, 0x5098, 0x0BEE, 0x5099, 0x5099, 0x0BEA, + 0x509A, 0x509A, 0x0BEF, 0x509B, 0x509B, 0x20AE, 0x509C, 0x509C, 0x20B9, + 0x509D, 0x509D, 0x20B7, 0x509E, 0x509E, 0x20B1, 0x50A2, 0x50A2, 0x0BE7, + 0x50A3, 0x50A3, 0x20B3, 0x50A6, 0x50A6, 0x3F3F, 0x50AC, 0x50AC, 0x0DC5, + 0x50AD, 0x50AD, 0x0DBF, 0x50AE, 0x50AE, 0x2367, 0x50AF, 0x50AF, 0x0DC8, + 0x50B0, 0x50B0, 0x236D, 0x50B1, 0x50B1, 0x2370, 0x50B2, 0x50B3, 0x0DC1, + 0x50B4, 0x50B4, 0x236A, 0x50B5, 0x50B5, 0x0DC0, 0x50B6, 0x50B6, 0x2373, + 0x50B7, 0x50B7, 0x0DC6, 0x50B8, 0x50B8, 0x2374, 0x50BA, 0x50BA, 0x236F, + 0x50BB, 0x50BB, 0x0DC7, 0x50BD, 0x50BD, 0x2364, 0x50BE, 0x50BE, 0x0DC4, + 0x50BF, 0x50BF, 0x2365, 0x50C1, 0x50C1, 0x236E, 0x50C2, 0x50C2, 0x236C, + 0x50C4, 0x50C4, 0x2368, 0x50C5, 0x50C5, 0x0DC3, 0x50C6, 0x50C6, 0x2366, + 0x50C7, 0x50C7, 0x0DC9, 0x50C8, 0x50C8, 0x236B, 0x50C9, 0x50C9, 0x2372, + 0x50CA, 0x50CA, 0x2369, 0x50CB, 0x50CB, 0x2371, 0x50CD, 0x50CD, 0x39C5, + 0x50CE, 0x50CE, 0x0F88, 0x50CF, 0x50CF, 0x0F85, 0x50D0, 0x50D0, 0x38D1, + 0x50D1, 0x50D1, 0x0F86, 0x50D3, 0x50D3, 0x261C, 0x50D4, 0x50D4, 0x2614, + 0x50D5, 0x50D5, 0x0F84, 0x50D6, 0x50D6, 0x0F81, 0x50D7, 0x50D7, 0x2615, + 0x50D9, 0x50D9, 0x3FCE, 0x50DA, 0x50DA, 0x0F83, 0x50DB, 0x50DB, 0x2618, + 0x50DD, 0x50DD, 0x261A, 0x50DE, 0x50DE, 0x4031, 0x50DF, 0x50DF, 0x3AFD, + 0x50E0, 0x50E0, 0x2621, 0x50E1, 0x50E1, 0x4171, 0x50E3, 0x50E3, 0x2620, + 0x50E4, 0x50E4, 0x261B, 0x50E5, 0x50E5, 0x0F80, 0x50E6, 0x50E6, 0x2613, + 0x50E7, 0x50E7, 0x0F7E, 0x50E8, 0x50E8, 0x2616, 0x50E9, 0x50E9, 0x0F89, + 0x50EA, 0x50EA, 0x2619, 0x50EC, 0x50EC, 0x261D, 0x50ED, 0x50ED, 0x0F82, + 0x50EE, 0x50EE, 0x0F7F, 0x50EF, 0x50EF, 0x261F, 0x50F0, 0x50F0, 0x261E, + 0x50F1, 0x50F1, 0x0F87, 0x50F3, 0x50F3, 0x2617, 0x50F4, 0x50F4, 0x3CE9, + 0x50F5, 0x50F5, 0x1105, 0x50F6, 0x50F6, 0x2883, 0x50F8, 0x50F8, 0x2880, + 0x50F9, 0x50F9, 0x1106, 0x50FB, 0x50FB, 0x1104, 0x50FC, 0x50FC, 0x39D2, + 0x50FD, 0x50FD, 0x2887, 0x50FE, 0x50FE, 0x2884, 0x50FF, 0x50FF, 0x287D, + 0x5100, 0x5100, 0x1103, 0x5101, 0x5101, 0x4032, 0x5102, 0x5102, 0x1107, + 0x5103, 0x5103, 0x287E, 0x5104, 0x5104, 0x1102, 0x5105, 0x5105, 0x110A, + 0x5106, 0x5107, 0x2881, 0x5108, 0x5109, 0x1108, 0x510A, 0x510A, 0x2888, + 0x510B, 0x510C, 0x2885, 0x510D, 0x510D, 0x39C6, 0x510E, 0x510E, 0x4034, + 0x5110, 0x5110, 0x128D, 0x5111, 0x5111, 0x2B04, 0x5112, 0x5112, 0x128A, + 0x5113, 0x5113, 0x2B01, 0x5114, 0x5114, 0x128C, 0x5115, 0x5115, 0x128E, + 0x5117, 0x5117, 0x2B02, 0x5118, 0x5118, 0x128B, 0x511A, 0x511A, 0x2B03, + 0x511C, 0x511C, 0x2B00, 0x511F, 0x511F, 0x13B5, 0x5120, 0x5120, 0x2D3E, + 0x5121, 0x5121, 0x13B6, 0x5122, 0x5122, 0x2D3C, 0x5124, 0x5124, 0x2D3D, + 0x5125, 0x5125, 0x2D3B, 0x5126, 0x5126, 0x2D3A, 0x5129, 0x5129, 0x2D3F, + 0x512A, 0x512A, 0x13B4, 0x512B, 0x512B, 0x39AE, 0x512D, 0x512E, 0x2F0F, + 0x5130, 0x5130, 0x287F, 0x5131, 0x5131, 0x2F0E, 0x5132, 0x5132, 0x13B7, + 0x5133, 0x5133, 0x1575, 0x5134, 0x5135, 0x307A, 0x5137, 0x5138, 0x1668, + 0x5139, 0x5139, 0x32C6, 0x513A, 0x513A, 0x32C5, 0x513B, 0x513B, 0x16BC, + 0x513C, 0x513C, 0x16BB, 0x513D, 0x513D, 0x340E, 0x513F, 0x513F, 0x025C, + 0x5140, 0x5140, 0x0274, 0x5141, 0x5141, 0x02AA, 0x5143, 0x5143, 0x02A9, + 0x5144, 0x5144, 0x0303, 0x5145, 0x5145, 0x0302, 0x5146, 0x5146, 0x038A, + 0x5147, 0x5147, 0x0389, 0x5148, 0x5148, 0x038B, 0x5149, 0x5149, 0x0388, + 0x514B, 0x514B, 0x0434, 0x514C, 0x514C, 0x0433, 0x514D, 0x514D, 0x0435, + 0x5152, 0x5152, 0x0545, 0x5154, 0x5154, 0x0544, 0x5155, 0x5155, 0x0546, + 0x5156, 0x5156, 0x439A, 0x5157, 0x5157, 0x06BC, 0x5159, 0x5159, 0x0119, + 0x515A, 0x515A, 0x1C32, 0x515B, 0x515B, 0x011A, 0x515C, 0x515C, 0x0A0F, + 0x515D, 0x515D, 0x011C, 0x515E, 0x515E, 0x011B, 0x515F, 0x515F, 0x20BD, + 0x5160, 0x5160, 0x403A, 0x5161, 0x5161, 0x011D, 0x5162, 0x5162, 0x0F8A, + 0x5163, 0x5163, 0x011E, 0x5165, 0x5165, 0x025D, 0x5167, 0x5167, 0x02AB, + 0x5168, 0x5168, 0x038C, 0x5169, 0x5169, 0x0547, 0x516A, 0x516A, 0x403C, + 0x516B, 0x516B, 0x025E, 0x516C, 0x516C, 0x02AE, 0x516D, 0x516E, 0x02AC, + 0x5171, 0x5171, 0x038D, 0x5174, 0x5174, 0x453F, 0x5175, 0x5175, 0x0436, + 0x5176, 0x5176, 0x0549, 0x5177, 0x5177, 0x0548, 0x5178, 0x5178, 0x054A, + 0x5179, 0x5179, 0x3ACE, 0x517C, 0x517C, 0x0852, 0x5180, 0x5180, 0x128F, + 0x5182, 0x5182, 0x021D, 0x5186, 0x5186, 0x439F, 0x5187, 0x5187, 0x1779, + 0x5188, 0x5188, 0x36B6, 0x5189, 0x518A, 0x0304, 0x518D, 0x518D, 0x038E, + 0x518F, 0x518F, 0x1833, 0x5191, 0x5191, 0x06BE, 0x5192, 0x5192, 0x06BD, + 0x5193, 0x5193, 0x1C34, 0x5194, 0x5194, 0x1C33, 0x5195, 0x5195, 0x0A10, + 0x5196, 0x5196, 0x021E, 0x5197, 0x5197, 0x02AF, 0x5198, 0x5198, 0x1780, + 0x519A, 0x519A, 0x3EA3, 0x519C, 0x519C, 0x4540, 0x519E, 0x519E, 0x1910, + 0x51A0, 0x51A0, 0x06BF, 0x51A2, 0x51A2, 0x0855, 0x51A4, 0x51A5, 0x0853, + 0x51A7, 0x51A7, 0x3EA6, 0x51A8, 0x51A8, 0x39DA, 0x51AA, 0x51AA, 0x1290, + 0x51AB, 0x51AB, 0x021F, 0x51AC, 0x51AC, 0x0306, 0x51B0, 0x51B0, 0x038F, + 0x51B1, 0x51B1, 0x17C6, 0x51B2, 0x51B2, 0x4048, 0x51B3, 0x51B3, 0x4051, + 0x51B4, 0x51B4, 0x3D7C, 0x51B5, 0x51B5, 0x4012, 0x51B6, 0x51B7, 0x0437, + 0x51B8, 0x51B8, 0x4049, 0x51B9, 0x51B9, 0x1834, 0x51BC, 0x51BC, 0x1911, + 0x51BD, 0x51BD, 0x054B, 0x51BE, 0x51BE, 0x1912, 0x51C3, 0x51C3, 0x39DB, + 0x51C4, 0x51C5, 0x1C36, 0x51C6, 0x51C6, 0x0858, 0x51C7, 0x51C7, 0x422A, + 0x51C8, 0x51C8, 0x1C38, 0x51C9, 0x51C9, 0x404B, 0x51CA, 0x51CA, 0x1C35, + 0x51CB, 0x51CB, 0x0859, 0x51CC, 0x51CC, 0x0857, 0x51CD, 0x51CD, 0x0856, + 0x51CE, 0x51CE, 0x1C39, 0x51CF, 0x51CF, 0x404C, 0x51D0, 0x51D0, 0x1E52, + 0x51D1, 0x51D1, 0x404D, 0x51D2, 0x51D2, 0x3DAD, 0x51D3, 0x51D3, 0x404F, + 0x51D4, 0x51D4, 0x20BE, 0x51D7, 0x51D7, 0x2375, 0x51D8, 0x51D8, 0x2622, + 0x51DB, 0x51DB, 0x459A, 0x51DC, 0x51DC, 0x110B, 0x51DD, 0x51DD, 0x1291, + 0x51DE, 0x51DE, 0x2B05, 0x51DF, 0x51DF, 0x424F, 0x51E0, 0x51E0, 0x025F, + 0x51E1, 0x51E1, 0x026D, 0x51E2, 0x51E2, 0x4052, 0x51E4, 0x51E4, 0x4541, + 0x51ED, 0x51ED, 0x4054, 0x51F0, 0x51F0, 0x0A11, 0x51F1, 0x51F1, 0x0BF1, + 0x51F3, 0x51F3, 0x0F8B, 0x51F4, 0x51F4, 0x4178, 0x51F5, 0x51F5, 0x176E, + 0x51F6, 0x51F6, 0x02B0, 0x51F8, 0x51F8, 0x0309, 0x51F9, 0x51FA, 0x0307, + 0x51FC, 0x51FC, 0x459B, 0x51FD, 0x51FD, 0x054C, 0x51FE, 0x51FE, 0x3F0A, + 0x5200, 0x5201, 0x0260, 0x5202, 0x5202, 0x36B3, 0x5203, 0x5203, 0x0275, + 0x5205, 0x5205, 0x43A1, 0x5206, 0x5208, 0x02B1, 0x5209, 0x5209, 0x1797, + 0x520A, 0x520A, 0x030A, 0x520B, 0x520B, 0x4059, 0x520C, 0x520C, 0x1796, + 0x520E, 0x520E, 0x0393, 0x5210, 0x5210, 0x17C8, 0x5211, 0x5212, 0x0391, + 0x5213, 0x5213, 0x17C7, 0x5216, 0x5216, 0x0394, 0x5217, 0x5217, 0x0390, + 0x521C, 0x521C, 0x1835, 0x521D, 0x521D, 0x068B, 0x521E, 0x521E, 0x1836, + 0x521F, 0x521F, 0x3F60, 0x5220, 0x5220, 0x4930, 0x5221, 0x5221, 0x1837, + 0x5224, 0x5224, 0x043A, 0x5225, 0x5225, 0x0439, 0x5226, 0x5226, 0x405A, + 0x5227, 0x5227, 0x43A2, 0x5228, 0x5228, 0x043D, 0x5229, 0x522A, 0x043B, + 0x522E, 0x522E, 0x0552, 0x5230, 0x5230, 0x0551, 0x5231, 0x5231, 0x1917, + 0x5232, 0x5233, 0x1914, 0x5234, 0x5234, 0x3EFB, 0x5235, 0x5235, 0x1913, + 0x5236, 0x5236, 0x0553, 0x5237, 0x5237, 0x054F, 0x5238, 0x5238, 0x054E, + 0x523A, 0x523A, 0x0550, 0x523B, 0x523B, 0x054D, 0x523C, 0x523C, 0x405B, + 0x5241, 0x5241, 0x0554, 0x5243, 0x5243, 0x06C1, 0x5244, 0x5244, 0x1A6D, + 0x5246, 0x5246, 0x1916, 0x5247, 0x5247, 0x06C6, 0x5249, 0x5249, 0x1A6E, + 0x524A, 0x524A, 0x06C2, 0x524B, 0x524B, 0x06C5, 0x524C, 0x524C, 0x06C4, + 0x524D, 0x524D, 0x06C3, 0x524E, 0x524E, 0x06C0, 0x5252, 0x5252, 0x1C3C, + 0x5254, 0x5254, 0x085C, 0x5255, 0x5255, 0x1C3F, 0x5256, 0x5256, 0x085A, + 0x5257, 0x5257, 0x405D, 0x5259, 0x5259, 0x39E4, 0x525A, 0x525A, 0x1C3B, + 0x525B, 0x525B, 0x085D, 0x525C, 0x525C, 0x085B, 0x525D, 0x525D, 0x085E, + 0x525E, 0x525F, 0x1C3D, 0x5260, 0x5260, 0x3F29, 0x5261, 0x5261, 0x1C3A, + 0x5262, 0x5262, 0x1C40, 0x5268, 0x5268, 0x4619, 0x5269, 0x5269, 0x0BF5, + 0x526A, 0x526A, 0x0A12, 0x526B, 0x526B, 0x1E53, 0x526C, 0x526C, 0x1E55, + 0x526D, 0x526D, 0x1E54, 0x526E, 0x526E, 0x1E56, 0x526F, 0x526F, 0x0A13, + 0x5272, 0x5272, 0x0BF2, 0x5273, 0x5273, 0x3F43, 0x5274, 0x5275, 0x0BF3, + 0x5277, 0x5277, 0x0DCB, 0x5278, 0x5278, 0x2377, 0x5279, 0x5279, 0x43A3, + 0x527A, 0x527A, 0x2376, 0x527B, 0x527C, 0x2378, 0x527D, 0x527D, 0x0DCC, + 0x527F, 0x527F, 0x0DCA, 0x5280, 0x5281, 0x2623, 0x5282, 0x5282, 0x0F8D, + 0x5283, 0x5283, 0x0F8C, 0x5284, 0x5284, 0x2776, 0x5287, 0x5289, 0x110C, + 0x528A, 0x528A, 0x1110, 0x528B, 0x528C, 0x2889, 0x528D, 0x528D, 0x110F, + 0x528F, 0x528F, 0x3DBF, 0x5290, 0x5290, 0x459D, 0x5291, 0x5291, 0x1292, + 0x5293, 0x5293, 0x1293, 0x5294, 0x5294, 0x405E, 0x5296, 0x5296, 0x307C, + 0x5297, 0x5297, 0x32C8, 0x5298, 0x5298, 0x32C7, 0x5299, 0x5299, 0x340F, + 0x529A, 0x529A, 0x3F68, 0x529B, 0x529B, 0x0262, 0x529F, 0x529F, 0x030C, + 0x52A0, 0x52A0, 0x030B, 0x52A1, 0x52A1, 0x4542, 0x52A3, 0x52A3, 0x0395, + 0x52A4, 0x52A4, 0x39E5, 0x52A6, 0x52A6, 0x17C9, 0x52A8, 0x52A8, 0x4543, + 0x52A9, 0x52AA, 0x043F, 0x52AB, 0x52AB, 0x043E, 0x52AC, 0x52AC, 0x0441, + 0x52AD, 0x52AE, 0x1838, 0x52B5, 0x52B5, 0x405C, 0x52B9, 0x52B9, 0x405F, + 0x52BB, 0x52BB, 0x0556, 0x52BC, 0x52BC, 0x1918, 0x52BE, 0x52BE, 0x0555, + 0x52C0, 0x52C0, 0x1A6F, 0x52C1, 0x52C1, 0x06CA, 0x52C2, 0x52C2, 0x1A70, + 0x52C3, 0x52C3, 0x06C9, 0x52C5, 0x52C5, 0x4060, 0x52C7, 0x52C7, 0x06C7, + 0x52C9, 0x52C9, 0x06C8, 0x52CC, 0x52CC, 0x3EE1, 0x52CD, 0x52CD, 0x1C41, + 0x52D0, 0x52D0, 0x4109, 0x52D1, 0x52D1, 0x3F2A, 0x52D2, 0x52D2, 0x0A14, + 0x52D3, 0x52D3, 0x1E58, 0x52D5, 0x52D5, 0x0A17, 0x52D6, 0x52D6, 0x1E57, + 0x52D7, 0x52D7, 0x0ACF, 0x52D8, 0x52D8, 0x0A16, 0x52D9, 0x52D9, 0x0A15, + 0x52DB, 0x52DB, 0x0BF8, 0x52DD, 0x52DD, 0x0BF7, 0x52DE, 0x52DE, 0x0BF6, + 0x52DF, 0x52DF, 0x0DCD, 0x52E0, 0x52E0, 0x4063, 0x52E1, 0x52E1, 0x39E7, + 0x52E2, 0x52E3, 0x0DD0, 0x52E4, 0x52E4, 0x0DCF, 0x52E6, 0x52E6, 0x0DCE, + 0x52E9, 0x52E9, 0x2625, 0x52EB, 0x52EB, 0x2626, 0x52EF, 0x52EF, 0x288C, + 0x52F0, 0x52F0, 0x1111, 0x52F1, 0x52F1, 0x288B, 0x52F3, 0x52F3, 0x1294, + 0x52F4, 0x52F4, 0x2D40, 0x52F5, 0x52F5, 0x13B8, 0x52F7, 0x52F7, 0x307D, + 0x52F8, 0x52F8, 0x1609, 0x52F9, 0x52F9, 0x0220, 0x52FA, 0x52FA, 0x0276, + 0x52FB, 0x52FB, 0x02B4, 0x52FC, 0x52FC, 0x1781, 0x52FE, 0x52FF, 0x02B5, + 0x5301, 0x5301, 0x3D79, 0x5305, 0x5306, 0x030D, 0x5308, 0x5308, 0x0396, + 0x5309, 0x5309, 0x183A, 0x530A, 0x530B, 0x1919, 0x530D, 0x530D, 0x06CB, + 0x530E, 0x530E, 0x1C42, 0x530F, 0x530F, 0x0A19, 0x5310, 0x5310, 0x0A18, + 0x5311, 0x5311, 0x20C0, 0x5312, 0x5312, 0x20BF, 0x5315, 0x5315, 0x0263, + 0x5316, 0x5316, 0x02B7, 0x5317, 0x5317, 0x030F, 0x5319, 0x5319, 0x0A1A, + 0x531A, 0x531A, 0x176F, 0x531C, 0x531C, 0x1798, 0x531D, 0x531D, 0x0310, + 0x531F, 0x531F, 0x17CB, 0x5320, 0x5320, 0x0398, 0x5321, 0x5321, 0x0397, + 0x5322, 0x5322, 0x17CA, 0x5323, 0x5323, 0x0442, 0x5327, 0x5327, 0x459E, + 0x532A, 0x532A, 0x085F, 0x532C, 0x532C, 0x3F36, 0x532D, 0x532D, 0x1E59, + 0x532F, 0x532F, 0x0DD2, 0x5330, 0x5330, 0x2627, 0x5331, 0x5331, 0x0F8E, + 0x5332, 0x5332, 0x3FD0, 0x5333, 0x5333, 0x406D, 0x5334, 0x5334, 0x2B06, + 0x5337, 0x5337, 0x31C7, 0x5338, 0x5338, 0x0221, 0x5339, 0x5339, 0x02B8, + 0x533B, 0x533B, 0x4544, 0x533C, 0x533C, 0x191B, 0x533D, 0x533D, 0x1A71, + 0x533E, 0x533E, 0x0A1D, 0x533F, 0x5340, 0x0A1B, 0x5341, 0x5341, 0x0264, + 0x5342, 0x5342, 0x4947, 0x5343, 0x5343, 0x0277, 0x5344, 0x5344, 0x016B, + 0x5345, 0x5345, 0x02BB, 0x5347, 0x5347, 0x02BA, 0x5348, 0x5348, 0x02B9, + 0x5349, 0x5349, 0x0313, 0x534A, 0x534A, 0x0312, 0x534C, 0x534C, 0x1799, + 0x534D, 0x534D, 0x17CC, 0x534E, 0x534E, 0x4545, 0x5351, 0x5351, 0x055A, + 0x5352, 0x5352, 0x0557, 0x5353, 0x5353, 0x0559, 0x5354, 0x5354, 0x0558, + 0x5357, 0x5357, 0x06CC, 0x535A, 0x535A, 0x0BF9, 0x535C, 0x535C, 0x0265, + 0x535D, 0x535D, 0x4501, 0x535E, 0x535E, 0x02BC, 0x535F, 0x535F, 0x43A7, + 0x5360, 0x5360, 0x0315, 0x5361, 0x5361, 0x0314, 0x5363, 0x5363, 0x183B, + 0x5364, 0x5364, 0x480A, 0x5366, 0x5366, 0x055B, 0x5367, 0x5367, 0x3ECD, + 0x5369, 0x5369, 0x0222, 0x536C, 0x536C, 0x1782, 0x536D, 0x536D, 0x407A, + 0x536E, 0x536E, 0x0317, 0x536F, 0x536F, 0x0316, 0x5370, 0x5371, 0x0399, + 0x5372, 0x5372, 0x183C, 0x5373, 0x5373, 0x0443, 0x5374, 0x5374, 0x407B, + 0x5375, 0x5375, 0x0444, 0x5377, 0x5379, 0x055C, 0x537B, 0x537B, 0x06CD, + 0x537C, 0x537C, 0x1A72, 0x537D, 0x537D, 0x4901, 0x537E, 0x537E, 0x407D, + 0x537F, 0x537F, 0x0860, 0x5382, 0x5382, 0x1770, 0x5384, 0x5384, 0x02BD, + 0x538A, 0x538A, 0x17CD, 0x538E, 0x538F, 0x183D, 0x5392, 0x5392, 0x191C, + 0x5393, 0x5393, 0x4082, 0x5394, 0x5394, 0x191D, 0x5396, 0x5396, 0x1A74, + 0x5397, 0x5397, 0x1A73, 0x5398, 0x5398, 0x1A76, 0x5399, 0x5399, 0x1A75, + 0x539A, 0x539A, 0x06CE, 0x539C, 0x539C, 0x1E5A, 0x539D, 0x539D, 0x0862, + 0x539E, 0x539E, 0x1C43, 0x539F, 0x539F, 0x0861, 0x53A0, 0x53A0, 0x4084, + 0x53A2, 0x53A2, 0x3E2B, 0x53A4, 0x53A4, 0x20C1, 0x53A5, 0x53A5, 0x0BFA, + 0x53A6, 0x53A6, 0x413B, 0x53A7, 0x53A7, 0x20C2, 0x53A8, 0x53A8, 0x413E, + 0x53A9, 0x53A9, 0x45A0, 0x53AA, 0x53AA, 0x3FC6, 0x53AB, 0x53AB, 0x4085, + 0x53AC, 0x53AC, 0x2628, 0x53AD, 0x53AD, 0x0F8F, 0x53AE, 0x53AE, 0x4086, + 0x53B0, 0x53B0, 0x45A2, 0x53B2, 0x53B2, 0x1112, 0x53B4, 0x53B4, 0x307E, + 0x53B6, 0x53B6, 0x0223, 0x53B9, 0x53B9, 0x1783, 0x53BB, 0x53BB, 0x0318, + 0x53C1, 0x53C1, 0x408B, 0x53C2, 0x53C2, 0x43A6, 0x53C3, 0x53C3, 0x0A1E, + 0x53C5, 0x53C5, 0x408C, 0x53C8, 0x53C8, 0x0266, 0x53C9, 0x53C9, 0x0278, + 0x53CA, 0x53CA, 0x02BF, 0x53CB, 0x53CB, 0x02BE, 0x53CC, 0x53CC, 0x38B6, + 0x53CD, 0x53CD, 0x02C0, 0x53D0, 0x53D0, 0x39FA, 0x53D1, 0x53D1, 0x4546, + 0x53D2, 0x53D2, 0x3E3D, 0x53D4, 0x53D4, 0x0560, 0x53D6, 0x53D6, 0x055F, + 0x53D7, 0x53D7, 0x0561, 0x53D8, 0x53D8, 0x4547, 0x53D9, 0x53D9, 0x4090, + 0x53DA, 0x53DA, 0x3F39, 0x53DB, 0x53DB, 0x06CF, 0x53DF, 0x53DF, 0x0863, + 0x53E0, 0x53E0, 0x4093, 0x53E1, 0x53E1, 0x2B07, 0x53E2, 0x53E2, 0x14C9, + 0x53E3, 0x53E3, 0x0279, 0x53E4, 0x53E4, 0x031A, 0x53E5, 0x53E5, 0x0329, + 0x53E6, 0x53E6, 0x0324, 0x53E8, 0x53E8, 0x031F, 0x53E9, 0x53E9, 0x031E, + 0x53EA, 0x53EA, 0x0325, 0x53EB, 0x53EB, 0x0323, 0x53EC, 0x53EC, 0x031C, + 0x53ED, 0x53ED, 0x032A, 0x53EE, 0x53EE, 0x031D, 0x53EF, 0x53EF, 0x0319, + 0x53F0, 0x53F0, 0x0328, 0x53F1, 0x53F1, 0x0327, 0x53F2, 0x53F2, 0x0326, + 0x53F3, 0x53F3, 0x031B, 0x53F5, 0x53F5, 0x0322, 0x53F6, 0x53F6, 0x4096, + 0x53F7, 0x53F7, 0x3808, 0x53F8, 0x53F8, 0x0321, 0x53FB, 0x53FB, 0x032B, + 0x53FC, 0x53FC, 0x0320, 0x53FE, 0x53FE, 0x40C1, 0x5401, 0x5401, 0x03A0, + 0x5403, 0x5403, 0x03A6, 0x5404, 0x5404, 0x03A2, 0x5406, 0x5406, 0x03A8, + 0x5407, 0x5407, 0x17CE, 0x5408, 0x5408, 0x03A5, 0x5409, 0x5409, 0x039B, + 0x540A, 0x540A, 0x039E, 0x540B, 0x540B, 0x03A1, 0x540C, 0x540C, 0x039D, + 0x540D, 0x540D, 0x03A4, 0x540E, 0x540E, 0x03A7, 0x540F, 0x540F, 0x039C, + 0x5410, 0x5410, 0x039F, 0x5411, 0x5411, 0x03A3, 0x5412, 0x5412, 0x03A9, + 0x5413, 0x5413, 0x4098, 0x5414, 0x5414, 0x3C77, 0x5416, 0x5416, 0x3E7F, + 0x5418, 0x5418, 0x1847, 0x5419, 0x5419, 0x1844, 0x541A, 0x541A, 0x3E64, + 0x541B, 0x541B, 0x0451, 0x541C, 0x541C, 0x1845, 0x541D, 0x541D, 0x0445, + 0x541E, 0x541E, 0x0447, 0x541F, 0x541F, 0x045F, 0x5420, 0x5420, 0x045A, + 0x5421, 0x5421, 0x4203, 0x5423, 0x5423, 0x45A3, 0x5424, 0x5424, 0x184C, + 0x5425, 0x5425, 0x1846, 0x5426, 0x5426, 0x0449, 0x5427, 0x5427, 0x044B, + 0x5428, 0x5428, 0x184B, 0x5429, 0x5429, 0x0452, 0x542A, 0x542A, 0x1841, + 0x542B, 0x542B, 0x045E, 0x542C, 0x542C, 0x0460, 0x542D, 0x542D, 0x0446, + 0x542E, 0x542E, 0x0457, 0x542F, 0x542F, 0x40AC, 0x5430, 0x5430, 0x183F, + 0x5431, 0x5431, 0x045D, 0x5432, 0x5432, 0x3E75, 0x5433, 0x5433, 0x044E, + 0x5435, 0x5436, 0x0458, 0x5437, 0x5437, 0x1840, 0x5438, 0x5438, 0x0456, + 0x5439, 0x5439, 0x0454, 0x543B, 0x543B, 0x0455, 0x543C, 0x543C, 0x045B, + 0x543D, 0x543D, 0x1848, 0x543E, 0x543E, 0x0448, 0x5440, 0x5440, 0x045C, + 0x5441, 0x5441, 0x184A, 0x5442, 0x5442, 0x0450, 0x5443, 0x5443, 0x044D, + 0x5445, 0x5445, 0x1843, 0x5446, 0x5446, 0x044C, 0x5447, 0x5447, 0x184D, + 0x5448, 0x5448, 0x044F, 0x544A, 0x544A, 0x0453, 0x544B, 0x544B, 0x3ED1, + 0x544D, 0x544D, 0x3EA7, 0x544E, 0x544E, 0x044A, 0x544F, 0x544F, 0x1849, + 0x5454, 0x5454, 0x1842, 0x5460, 0x5460, 0x192E, 0x5461, 0x5461, 0x192D, + 0x5462, 0x5462, 0x0573, 0x5463, 0x5463, 0x1930, 0x5464, 0x5464, 0x1932, + 0x5465, 0x5465, 0x1927, 0x5466, 0x5466, 0x192A, 0x5467, 0x5467, 0x1931, + 0x5468, 0x5468, 0x0574, 0x5469, 0x5469, 0x3F32, 0x546A, 0x546A, 0x3D83, + 0x546B, 0x546B, 0x1924, 0x546C, 0x546C, 0x1928, 0x546D, 0x546D, 0x409D, + 0x546F, 0x546F, 0x192C, 0x5470, 0x5470, 0x1A85, 0x5471, 0x5471, 0x056F, + 0x5472, 0x5472, 0x1A89, 0x5473, 0x5473, 0x0562, 0x5474, 0x5474, 0x1929, + 0x5475, 0x5475, 0x0563, 0x5476, 0x5476, 0x0570, 0x5477, 0x5477, 0x0569, + 0x5478, 0x5478, 0x0565, 0x547A, 0x547A, 0x1925, 0x547B, 0x547B, 0x0568, + 0x547C, 0x547C, 0x056D, 0x547D, 0x547D, 0x0576, 0x547E, 0x547E, 0x1926, + 0x547F, 0x547F, 0x191F, 0x5480, 0x5480, 0x0567, 0x5481, 0x5481, 0x1920, + 0x5482, 0x5482, 0x1922, 0x5484, 0x5484, 0x056A, 0x5485, 0x5485, 0x46D9, + 0x5486, 0x5486, 0x056C, 0x5487, 0x5487, 0x191E, 0x5488, 0x5488, 0x1923, + 0x548B, 0x548B, 0x0575, 0x548C, 0x548C, 0x0571, 0x548D, 0x548D, 0x192B, + 0x548E, 0x548E, 0x0577, 0x548F, 0x548F, 0x40A1, 0x5490, 0x5490, 0x056E, + 0x5491, 0x5491, 0x1921, 0x5492, 0x5492, 0x056B, 0x5493, 0x5493, 0x45A7, + 0x5494, 0x5494, 0x3E98, 0x5495, 0x5495, 0x0566, 0x5496, 0x5496, 0x0564, + 0x5497, 0x5497, 0x3E8A, 0x5498, 0x5498, 0x192F, 0x549A, 0x549A, 0x0572, + 0x549C, 0x549C, 0x3F66, 0x549E, 0x549E, 0x47ED, 0x54A0, 0x54A0, 0x1A84, + 0x54A1, 0x54A1, 0x1A78, 0x54A2, 0x54A2, 0x1A87, 0x54A3, 0x54A3, 0x45A8, + 0x54A4, 0x54A4, 0x40A2, 0x54A5, 0x54A5, 0x1A7A, 0x54A6, 0x54A6, 0x06D6, + 0x54A7, 0x54A7, 0x06E4, 0x54A8, 0x54A8, 0x06D2, 0x54A9, 0x54A9, 0x06E3, + 0x54AA, 0x54AA, 0x06DB, 0x54AB, 0x54AB, 0x06E0, 0x54AC, 0x54AC, 0x06D0, + 0x54AD, 0x54AD, 0x1A79, 0x54AE, 0x54AE, 0x1A7F, 0x54AF, 0x54AF, 0x06DF, + 0x54B0, 0x54B0, 0x1A8B, 0x54B1, 0x54B1, 0x06E1, 0x54B2, 0x54B2, 0x3744, + 0x54B3, 0x54B3, 0x06D7, 0x54B4, 0x54B4, 0x45A9, 0x54B6, 0x54B6, 0x1A81, + 0x54B7, 0x54B7, 0x1A7E, 0x54B8, 0x54B8, 0x06D5, 0x54B9, 0x54B9, 0x45AA, + 0x54BA, 0x54BA, 0x1A77, 0x54BB, 0x54BB, 0x06E2, 0x54BC, 0x54BC, 0x1A86, + 0x54BD, 0x54BD, 0x06DA, 0x54BE, 0x54BE, 0x1A88, 0x54BF, 0x54BF, 0x06E5, + 0x54C0, 0x54C0, 0x06D1, 0x54C1, 0x54C1, 0x06DC, 0x54C2, 0x54C2, 0x06D9, + 0x54C3, 0x54C3, 0x1A7C, 0x54C4, 0x54C4, 0x06DD, 0x54C5, 0x54C6, 0x1A82, + 0x54C7, 0x54C7, 0x06D8, 0x54C8, 0x54C8, 0x06DE, 0x54C9, 0x54C9, 0x06D4, + 0x54CB, 0x54CB, 0x39A3, 0x54CC, 0x54CC, 0x43A8, 0x54CD, 0x54CD, 0x3A00, + 0x54CE, 0x54CE, 0x06D3, 0x54CF, 0x54CF, 0x1A7B, 0x54D0, 0x54D0, 0x45AB, + 0x54D6, 0x54D6, 0x1A80, 0x54DA, 0x54DA, 0x4923, 0x54DE, 0x54DE, 0x1A8A, + 0x54E0, 0x54E0, 0x1C57, 0x54E1, 0x54E1, 0x0870, 0x54E2, 0x54E2, 0x1C45, + 0x54E3, 0x54E3, 0x4341, 0x54E4, 0x54E4, 0x1C4A, 0x54E5, 0x54E5, 0x0869, + 0x54E6, 0x54E6, 0x0874, 0x54E7, 0x54E7, 0x1C48, 0x54E8, 0x54E8, 0x0864, + 0x54E9, 0x54E9, 0x086E, 0x54EA, 0x54EA, 0x0873, 0x54EB, 0x54EB, 0x1C4F, + 0x54ED, 0x54ED, 0x086F, 0x54EE, 0x54EE, 0x0872, 0x54EF, 0x54EF, 0x45AC, + 0x54F1, 0x54F1, 0x1C52, 0x54F2, 0x54F2, 0x086A, 0x54F3, 0x54F3, 0x1C49, + 0x54F7, 0x54F8, 0x1C55, 0x54FA, 0x54FA, 0x086C, 0x54FB, 0x54FB, 0x1C54, + 0x54FC, 0x54FC, 0x0868, 0x54FD, 0x54FD, 0x0877, 0x54FF, 0x54FF, 0x1C4C, + 0x5501, 0x5501, 0x0866, 0x5502, 0x5502, 0x3CCC, 0x5503, 0x5503, 0x1C59, + 0x5504, 0x5504, 0x1C4D, 0x5505, 0x5505, 0x1C51, 0x5506, 0x5506, 0x086B, + 0x5507, 0x5507, 0x0876, 0x5508, 0x5508, 0x1C4E, 0x5509, 0x5509, 0x0871, + 0x550A, 0x550A, 0x1C53, 0x550B, 0x550B, 0x1C5A, 0x550C, 0x550C, 0x1E69, + 0x550D, 0x550D, 0x3A73, 0x550E, 0x550E, 0x1C58, 0x550F, 0x550F, 0x0878, + 0x5510, 0x5510, 0x0865, 0x5511, 0x5511, 0x1C50, 0x5512, 0x5512, 0x1C47, + 0x5513, 0x5513, 0x3EA9, 0x5514, 0x5514, 0x086D, 0x5517, 0x5517, 0x1C46, + 0x5518, 0x5518, 0x45AD, 0x551A, 0x551A, 0x1C4B, 0x551E, 0x551E, 0x3EA8, + 0x5523, 0x5523, 0x45AE, 0x5525, 0x5525, 0x4309, 0x5526, 0x5526, 0x1C44, + 0x5527, 0x5527, 0x0875, 0x5528, 0x5528, 0x45AF, 0x552A, 0x552A, 0x1E61, + 0x552B, 0x552B, 0x409A, 0x552C, 0x552C, 0x0A31, 0x552D, 0x552D, 0x1E6F, + 0x552E, 0x552E, 0x0A2F, 0x552F, 0x552F, 0x0A2C, 0x5530, 0x5530, 0x1E66, + 0x5531, 0x5531, 0x0A28, 0x5532, 0x5532, 0x1E6A, 0x5533, 0x5533, 0x0A33, + 0x5534, 0x5534, 0x1E60, 0x5535, 0x5535, 0x1E65, 0x5536, 0x5536, 0x1E64, + 0x5537, 0x5537, 0x0867, 0x5538, 0x5538, 0x0A2E, 0x5539, 0x5539, 0x1E6D, + 0x553B, 0x553B, 0x1E70, 0x553C, 0x553C, 0x1E5D, 0x553E, 0x553E, 0x0C0C, + 0x553F, 0x553F, 0x43A9, 0x5540, 0x5540, 0x1E71, 0x5541, 0x5541, 0x0A34, + 0x5543, 0x5543, 0x0A26, 0x5544, 0x5544, 0x0A23, 0x5545, 0x5545, 0x1E68, + 0x5546, 0x5546, 0x0A20, 0x5547, 0x5547, 0x40AA, 0x5548, 0x5548, 0x1E6E, + 0x5549, 0x5549, 0x4068, 0x554A, 0x554A, 0x0A27, 0x554B, 0x554B, 0x1E72, + 0x554D, 0x554D, 0x1E5E, 0x554E, 0x554E, 0x1E6C, 0x554F, 0x554F, 0x0A2A, + 0x5550, 0x5550, 0x1E5F, 0x5551, 0x5551, 0x1E62, 0x5552, 0x5552, 0x1E67, + 0x5553, 0x5553, 0x43AE, 0x5555, 0x5555, 0x0A2B, 0x5556, 0x5556, 0x0A29, + 0x5557, 0x5557, 0x0A35, 0x555C, 0x555C, 0x0A30, 0x555D, 0x555D, 0x40A0, + 0x555E, 0x555E, 0x0A24, 0x555F, 0x555F, 0x0ABC, 0x5561, 0x5561, 0x0A25, + 0x5562, 0x5562, 0x1E63, 0x5563, 0x5563, 0x0A32, 0x5564, 0x5564, 0x0A2D, + 0x5565, 0x5565, 0x1E6B, 0x5566, 0x5566, 0x0A22, 0x5569, 0x5569, 0x3E9F, + 0x556A, 0x556A, 0x0A21, 0x556B, 0x556B, 0x3B2E, 0x5571, 0x5571, 0x3BC6, + 0x5572, 0x5572, 0x3E8B, 0x5573, 0x5573, 0x3F24, 0x5575, 0x5576, 0x1E5B, + 0x5577, 0x5577, 0x20C7, 0x5579, 0x5579, 0x435D, 0x557B, 0x557B, 0x0BFB, + 0x557C, 0x557C, 0x0BFE, 0x557D, 0x557D, 0x20D2, 0x557E, 0x557E, 0x0C12, + 0x557F, 0x557F, 0x20D5, 0x5580, 0x5580, 0x0BFC, 0x5581, 0x5581, 0x20CE, + 0x5582, 0x5582, 0x0C02, 0x5583, 0x5583, 0x0C08, 0x5584, 0x5584, 0x0D1B, + 0x5586, 0x5586, 0x40AE, 0x5587, 0x5587, 0x0C06, 0x5588, 0x5588, 0x20CB, + 0x5589, 0x5589, 0x0C13, 0x558A, 0x558A, 0x0BFF, 0x558B, 0x558B, 0x0C07, + 0x558C, 0x558C, 0x20D3, 0x558D, 0x558D, 0x2387, 0x558E, 0x558E, 0x20D8, + 0x558F, 0x558F, 0x20CC, 0x5590, 0x5590, 0x430E, 0x5591, 0x5591, 0x20C3, + 0x5592, 0x5592, 0x20D0, 0x5593, 0x5593, 0x20CA, 0x5594, 0x5594, 0x0C05, + 0x5595, 0x5595, 0x20D6, 0x5598, 0x5598, 0x0C01, 0x5599, 0x5599, 0x0C15, + 0x559A, 0x559A, 0x0C0E, 0x559C, 0x559C, 0x0C03, 0x559D, 0x559D, 0x0C00, + 0x559F, 0x559F, 0x0C0B, 0x55A1, 0x55A1, 0x20D7, 0x55A2, 0x55A2, 0x20C9, + 0x55A3, 0x55A3, 0x20CF, 0x55A4, 0x55A4, 0x20D1, 0x55A5, 0x55A5, 0x20C5, + 0x55A6, 0x55A6, 0x20D4, 0x55A7, 0x55A7, 0x0BFD, 0x55A8, 0x55A8, 0x20C4, + 0x55A9, 0x55A9, 0x40AF, 0x55AA, 0x55AA, 0x0C04, 0x55AB, 0x55AB, 0x0C14, + 0x55AC, 0x55AC, 0x0C10, 0x55AD, 0x55AD, 0x20C6, 0x55AE, 0x55AE, 0x0C0A, + 0x55B0, 0x55B0, 0x38F5, 0x55B1, 0x55B1, 0x0C11, 0x55B2, 0x55B2, 0x0C0D, + 0x55B3, 0x55B3, 0x0C09, 0x55B4, 0x55B4, 0x39FE, 0x55B5, 0x55B5, 0x20CD, + 0x55B9, 0x55B9, 0x43AA, 0x55BA, 0x55BA, 0x3E89, 0x55BB, 0x55BB, 0x0C0F, + 0x55BC, 0x55BC, 0x3DC3, 0x55BF, 0x55BF, 0x2385, 0x55C0, 0x55C0, 0x2381, + 0x55C1, 0x55C1, 0x3E4F, 0x55C2, 0x55C2, 0x2390, 0x55C3, 0x55C3, 0x237A, + 0x55C4, 0x55C4, 0x2383, 0x55C5, 0x55C6, 0x0DE0, 0x55C7, 0x55C7, 0x0DD9, + 0x55C8, 0x55C8, 0x238C, 0x55C9, 0x55C9, 0x0DE3, 0x55CA, 0x55CA, 0x237F, + 0x55CB, 0x55CB, 0x237E, 0x55CC, 0x55CC, 0x237C, 0x55CD, 0x55CD, 0x238E, + 0x55CE, 0x55CE, 0x0DD7, 0x55CF, 0x55CF, 0x2388, 0x55D0, 0x55D0, 0x237D, + 0x55D1, 0x55D1, 0x0DDA, 0x55D2, 0x55D2, 0x2386, 0x55D3, 0x55D3, 0x0DD5, + 0x55D4, 0x55D4, 0x2382, 0x55D5, 0x55D5, 0x2389, 0x55D6, 0x55D6, 0x238B, + 0x55D7, 0x55D7, 0x45B3, 0x55D8, 0x55D8, 0x43AB, 0x55D9, 0x55D9, 0x238F, + 0x55DA, 0x55DA, 0x0DDE, 0x55DB, 0x55DB, 0x237B, 0x55DC, 0x55DC, 0x0DD8, + 0x55DD, 0x55DD, 0x2380, 0x55DE, 0x55DE, 0x3E94, 0x55DF, 0x55DF, 0x0DD3, + 0x55E1, 0x55E1, 0x0DDF, 0x55E2, 0x55E2, 0x238A, 0x55E3, 0x55E4, 0x0DDB, + 0x55E5, 0x55E5, 0x0DE2, 0x55E6, 0x55E6, 0x0DD6, 0x55E7, 0x55E7, 0x011F, + 0x55E8, 0x55E8, 0x0DD4, 0x55E9, 0x55E9, 0x2384, 0x55EA, 0x55EA, 0x3E7C, + 0x55EC, 0x55EC, 0x37D2, 0x55EF, 0x55EF, 0x0DDD, 0x55F0, 0x55F0, 0x3E88, + 0x55F1, 0x55F1, 0x3E83, 0x55F2, 0x55F2, 0x238D, 0x55F5, 0x55F5, 0x4786, + 0x55F6, 0x55F6, 0x0F9F, 0x55F7, 0x55F7, 0x0F9A, 0x55F9, 0x55F9, 0x2637, + 0x55FA, 0x55FA, 0x2633, 0x55FB, 0x55FB, 0x4626, 0x55FC, 0x55FC, 0x262D, + 0x55FD, 0x55FD, 0x0F94, 0x55FE, 0x55FE, 0x0F90, 0x55FF, 0x55FF, 0x2636, + 0x5600, 0x5600, 0x0F91, 0x5601, 0x5601, 0x2630, 0x5602, 0x5602, 0x2632, + 0x5604, 0x5604, 0x2635, 0x5605, 0x5605, 0x3E82, 0x5606, 0x5606, 0x0F96, + 0x5608, 0x5608, 0x0F9D, 0x5609, 0x5609, 0x0F97, 0x560C, 0x560C, 0x262B, + 0x560D, 0x560E, 0x0F98, 0x560F, 0x560F, 0x262E, 0x5610, 0x5610, 0x0F9E, + 0x5611, 0x5611, 0x3F4D, 0x5612, 0x5612, 0x262C, 0x5613, 0x5613, 0x2631, + 0x5614, 0x5614, 0x0F95, 0x5615, 0x5615, 0x262A, 0x5616, 0x5616, 0x0F9B, + 0x5617, 0x5617, 0x0F93, 0x561B, 0x561B, 0x0F92, 0x561C, 0x561C, 0x262F, + 0x561D, 0x561D, 0x2634, 0x561E, 0x561E, 0x3E68, 0x561F, 0x561F, 0x0F9C, + 0x5620, 0x5620, 0x3F7D, 0x5621, 0x5621, 0x43AD, 0x5622, 0x5622, 0x3E67, + 0x5623, 0x5623, 0x4707, 0x5625, 0x5625, 0x3E78, 0x5627, 0x5627, 0x2629, + 0x5629, 0x5629, 0x1119, 0x562A, 0x562A, 0x289D, 0x562C, 0x562C, 0x289A, + 0x562D, 0x562D, 0x3E63, 0x562E, 0x562E, 0x1113, 0x562F, 0x5630, 0x111F, + 0x5632, 0x5632, 0x1116, 0x5633, 0x5633, 0x2898, 0x5634, 0x5634, 0x1118, + 0x5635, 0x5635, 0x2890, 0x5636, 0x5636, 0x111E, 0x5637, 0x5637, 0x40B7, + 0x5638, 0x5638, 0x289C, 0x5639, 0x5639, 0x1115, 0x563A, 0x563A, 0x289E, + 0x563B, 0x563B, 0x1114, 0x563D, 0x563D, 0x2899, 0x563E, 0x563E, 0x289B, + 0x563F, 0x563F, 0x1117, 0x5640, 0x5640, 0x2897, 0x5641, 0x5641, 0x2891, + 0x5642, 0x5642, 0x288E, 0x5643, 0x5643, 0x3E7E, 0x5645, 0x5645, 0x20C8, + 0x5646, 0x5646, 0x2894, 0x5648, 0x5648, 0x288D, 0x5649, 0x5649, 0x2893, + 0x564A, 0x564A, 0x2892, 0x564C, 0x564C, 0x288F, 0x564D, 0x564D, 0x40BC, + 0x564E, 0x564E, 0x111B, 0x564F, 0x564F, 0x40BD, 0x5650, 0x5650, 0x47CF, + 0x5652, 0x5652, 0x45C2, 0x5653, 0x5653, 0x111A, 0x5654, 0x5654, 0x43AF, + 0x5657, 0x5657, 0x111C, 0x5658, 0x5658, 0x2895, 0x5659, 0x5659, 0x1295, + 0x565A, 0x565A, 0x2896, 0x565D, 0x565D, 0x3EF9, 0x565E, 0x565E, 0x2B10, + 0x5660, 0x5660, 0x2B09, 0x5661, 0x5661, 0x3812, 0x5662, 0x5662, 0x12A1, + 0x5663, 0x5663, 0x2B0D, 0x5664, 0x5664, 0x1299, 0x5665, 0x5665, 0x129D, + 0x5666, 0x5666, 0x2B0C, 0x5668, 0x5668, 0x129C, 0x5669, 0x5669, 0x1298, + 0x566A, 0x566A, 0x129B, 0x566B, 0x566B, 0x1296, 0x566C, 0x566C, 0x12A0, + 0x566D, 0x566D, 0x2B0E, 0x566E, 0x566E, 0x2B0A, 0x566F, 0x566F, 0x129F, + 0x5670, 0x5670, 0x2B08, 0x5671, 0x5671, 0x129E, 0x5672, 0x5672, 0x2B0F, + 0x5673, 0x5673, 0x2B0B, 0x5674, 0x5674, 0x111D, 0x5676, 0x5676, 0x12A2, + 0x5677, 0x5677, 0x2B11, 0x5678, 0x5678, 0x129A, 0x5679, 0x5679, 0x1297, + 0x567A, 0x567A, 0x3D85, 0x567B, 0x567B, 0x3EB7, 0x567C, 0x567C, 0x3EED, + 0x567E, 0x567E, 0x2D47, 0x567F, 0x567F, 0x2D49, 0x5680, 0x5680, 0x13BA, + 0x5681, 0x5681, 0x2D4A, 0x5682, 0x5682, 0x2D48, 0x5683, 0x5683, 0x2D46, + 0x5684, 0x5684, 0x2D45, 0x5685, 0x5685, 0x13BC, 0x5686, 0x5686, 0x2D44, + 0x5687, 0x5687, 0x13BD, 0x5689, 0x5689, 0x4628, 0x568A, 0x568A, 0x3949, + 0x568B, 0x568B, 0x3E4C, 0x568C, 0x568D, 0x2D42, 0x568E, 0x568E, 0x13B9, + 0x568F, 0x568F, 0x13BE, 0x5690, 0x5690, 0x13BB, 0x5692, 0x5692, 0x39A6, + 0x5693, 0x5693, 0x2D41, 0x5695, 0x5695, 0x14CA, 0x5697, 0x5697, 0x2F13, + 0x5698, 0x5698, 0x2F11, 0x5699, 0x5699, 0x2F16, 0x569A, 0x569A, 0x2F14, + 0x569C, 0x569C, 0x2F12, 0x569D, 0x569D, 0x2F15, 0x569E, 0x569E, 0x39A4, + 0x569F, 0x569F, 0x3948, 0x56A1, 0x56A1, 0x436B, 0x56A4, 0x56A4, 0x3CC8, + 0x56A5, 0x56A5, 0x1576, 0x56A6, 0x56A7, 0x3081, 0x56A8, 0x56A8, 0x1577, + 0x56AA, 0x56AA, 0x3083, 0x56AB, 0x56AB, 0x307F, 0x56AC, 0x56AC, 0x3084, + 0x56AD, 0x56AD, 0x3080, 0x56AE, 0x56AE, 0x14CB, 0x56AF, 0x56AF, 0x45F7, + 0x56B1, 0x56B1, 0x463F, 0x56B2, 0x56B2, 0x31C8, 0x56B3, 0x56B3, 0x31CA, + 0x56B4, 0x56B4, 0x160C, 0x56B5, 0x56B5, 0x31C9, 0x56B6, 0x56B6, 0x160B, + 0x56B7, 0x56B7, 0x160A, 0x56B9, 0x56B9, 0x486F, 0x56BC, 0x56BC, 0x160D, + 0x56BD, 0x56BE, 0x32CA, 0x56BF, 0x56BF, 0x3E5D, 0x56C0, 0x56C0, 0x166B, + 0x56C1, 0x56C1, 0x166A, 0x56C2, 0x56C2, 0x166C, 0x56C3, 0x56C3, 0x32C9, + 0x56C5, 0x56C5, 0x3379, 0x56C6, 0x56C6, 0x3378, 0x56C8, 0x56C8, 0x16BD, + 0x56C9, 0x56C9, 0x16BF, 0x56CA, 0x56CA, 0x16BE, 0x56CB, 0x56CB, 0x337A, + 0x56CC, 0x56CC, 0x16F6, 0x56CD, 0x56CD, 0x3481, 0x56D1, 0x56D1, 0x171F, + 0x56D3, 0x56D3, 0x3480, 0x56D4, 0x56D4, 0x34C9, 0x56D6, 0x56D6, 0x488A, + 0x56D7, 0x56D7, 0x1775, 0x56DA, 0x56DA, 0x032D, 0x56DB, 0x56DB, 0x032C, + 0x56DD, 0x56DD, 0x03AC, 0x56DE, 0x56DE, 0x03AB, 0x56DF, 0x56DF, 0x17D0, + 0x56E0, 0x56E0, 0x03AA, 0x56E1, 0x56E1, 0x17CF, 0x56E2, 0x56E2, 0x4548, + 0x56E4, 0x56E4, 0x0463, 0x56E5, 0x56E5, 0x1850, 0x56E7, 0x56E7, 0x184F, + 0x56EA, 0x56EA, 0x0461, 0x56EB, 0x56EB, 0x0464, 0x56ED, 0x56ED, 0x40C4, + 0x56EE, 0x56EE, 0x184E, 0x56EF, 0x56EF, 0x40C3, 0x56F0, 0x56F0, 0x0462, + 0x56F1, 0x56F1, 0x40BF, 0x56F7, 0x56F7, 0x1933, 0x56F9, 0x56F9, 0x1934, + 0x56FA, 0x56FA, 0x0578, 0x56FD, 0x56FD, 0x3D64, 0x56FF, 0x56FF, 0x06E6, + 0x5700, 0x5700, 0x40C2, 0x5701, 0x5702, 0x1C5B, 0x5703, 0x5704, 0x0879, + 0x5707, 0x5707, 0x1E74, 0x5708, 0x5708, 0x0A36, 0x5709, 0x5709, 0x0A38, + 0x570A, 0x570A, 0x1E73, 0x570B, 0x570B, 0x0A37, 0x570C, 0x570C, 0x20D9, + 0x570D, 0x570D, 0x0C16, 0x5712, 0x5713, 0x0DE4, 0x5714, 0x5714, 0x2391, + 0x5715, 0x5715, 0x3E36, 0x5716, 0x5716, 0x0FA1, 0x5718, 0x5718, 0x0FA0, + 0x571A, 0x571A, 0x289F, 0x571B, 0x571B, 0x2B13, 0x571C, 0x571C, 0x2B12, + 0x571D, 0x571D, 0x3A02, 0x571E, 0x571E, 0x3505, 0x571F, 0x571F, 0x027A, + 0x5720, 0x5720, 0x1784, 0x5722, 0x5723, 0x179A, 0x5728, 0x5728, 0x03AF, + 0x5729, 0x5729, 0x03B3, 0x572A, 0x572A, 0x17D2, 0x572C, 0x572C, 0x03B1, + 0x572D, 0x572D, 0x03B0, 0x572E, 0x572E, 0x17D1, 0x572F, 0x572F, 0x03B2, + 0x5730, 0x5730, 0x03AE, 0x5732, 0x5732, 0x3AF9, 0x5733, 0x5733, 0x03AD, + 0x5734, 0x5734, 0x17D3, 0x573B, 0x573B, 0x046E, 0x573E, 0x573E, 0x046B, + 0x573F, 0x573F, 0x4855, 0x5740, 0x5740, 0x0467, 0x5741, 0x5741, 0x1851, + 0x5742, 0x5742, 0x40CC, 0x5743, 0x5743, 0x40DE, 0x5745, 0x5745, 0x1852, + 0x5746, 0x5746, 0x40C8, 0x5747, 0x5747, 0x0469, 0x5749, 0x5749, 0x1854, + 0x574A, 0x574A, 0x0465, 0x574B, 0x574B, 0x1855, 0x574C, 0x574C, 0x1853, + 0x574D, 0x574D, 0x0468, 0x574E, 0x574E, 0x046A, 0x574F, 0x574F, 0x046D, + 0x5750, 0x5750, 0x046C, 0x5751, 0x5751, 0x0466, 0x5752, 0x5752, 0x1856, + 0x5754, 0x5754, 0x4785, 0x5757, 0x5757, 0x47E6, 0x575B, 0x575B, 0x3982, + 0x575F, 0x575F, 0x3FBF, 0x5761, 0x5761, 0x057D, 0x5762, 0x5762, 0x1941, + 0x5764, 0x5764, 0x057F, 0x5766, 0x5766, 0x057E, 0x5767, 0x5767, 0x3F2B, + 0x5768, 0x5768, 0x1942, 0x5769, 0x5769, 0x057C, 0x576A, 0x576A, 0x057B, + 0x576B, 0x576B, 0x1938, 0x576D, 0x576D, 0x1937, 0x576F, 0x576F, 0x1935, + 0x5770, 0x5770, 0x193A, 0x5771, 0x5771, 0x1939, 0x5772, 0x5772, 0x1936, + 0x5773, 0x5774, 0x193F, 0x5775, 0x5775, 0x193D, 0x5776, 0x5776, 0x193B, + 0x5777, 0x5777, 0x057A, 0x577A, 0x577A, 0x3F5F, 0x577B, 0x577B, 0x193E, + 0x577C, 0x577C, 0x0580, 0x577D, 0x577D, 0x1943, 0x577E, 0x577E, 0x46DC, + 0x577F, 0x577F, 0x3A07, 0x5780, 0x5780, 0x193C, 0x5782, 0x5782, 0x06E7, + 0x5783, 0x5783, 0x0579, 0x5788, 0x5788, 0x484B, 0x578A, 0x578A, 0x3C7B, + 0x578B, 0x578B, 0x06E8, 0x578C, 0x578C, 0x1A90, 0x578D, 0x578D, 0x3A06, + 0x578F, 0x578F, 0x1A96, 0x5790, 0x5790, 0x4166, 0x5793, 0x5793, 0x06EE, + 0x5794, 0x5794, 0x1A94, 0x5795, 0x5795, 0x1A9A, 0x5797, 0x5797, 0x1A91, + 0x5798, 0x5798, 0x1A95, 0x5799, 0x5799, 0x1A97, 0x579A, 0x579A, 0x1A99, + 0x579B, 0x579B, 0x1A93, 0x579C, 0x579C, 0x4608, 0x579D, 0x579D, 0x1A92, + 0x579E, 0x579F, 0x1A8D, 0x57A0, 0x57A0, 0x06E9, 0x57A1, 0x57A1, 0x4864, + 0x57A2, 0x57A2, 0x06EB, 0x57A3, 0x57A3, 0x06EA, 0x57A4, 0x57A4, 0x1A8F, + 0x57A5, 0x57A5, 0x1A98, 0x57A7, 0x57A7, 0x4914, 0x57AA, 0x57AA, 0x4905, + 0x57AE, 0x57AE, 0x06ED, 0x57B4, 0x57B4, 0x4741, 0x57B5, 0x57B5, 0x1A8C, + 0x57B6, 0x57B6, 0x1C66, 0x57B8, 0x57B8, 0x1C65, 0x57B9, 0x57B9, 0x1C6A, + 0x57BA, 0x57BA, 0x1C61, 0x57BB, 0x57BB, 0x3C79, 0x57BC, 0x57BC, 0x1C64, + 0x57BD, 0x57BD, 0x1C63, 0x57BE, 0x57BE, 0x372C, 0x57BF, 0x57BF, 0x1C67, + 0x57C1, 0x57C1, 0x1C6B, 0x57C2, 0x57C2, 0x087B, 0x57C3, 0x57C3, 0x087E, + 0x57C4, 0x57C4, 0x3B5B, 0x57C6, 0x57C6, 0x1C62, 0x57C7, 0x57C7, 0x1C68, + 0x57C8, 0x57C8, 0x3D0B, 0x57CB, 0x57CB, 0x087D, 0x57CC, 0x57CC, 0x1C5D, + 0x57CE, 0x57CE, 0x06EC, 0x57CF, 0x57CF, 0x1E82, 0x57D0, 0x57D0, 0x1C69, + 0x57D2, 0x57D2, 0x1C60, 0x57D4, 0x57D4, 0x087C, 0x57D5, 0x57D5, 0x1C5F, + 0x57D7, 0x57D7, 0x3C7D, 0x57DC, 0x57DC, 0x1E79, 0x57DD, 0x57DD, 0x3A05, + 0x57DE, 0x57DE, 0x3F01, 0x57DF, 0x57DF, 0x0A39, 0x57E0, 0x57E0, 0x0A3D, + 0x57E1, 0x57E1, 0x1E89, 0x57E2, 0x57E2, 0x1E77, 0x57E3, 0x57E3, 0x1E85, + 0x57E4, 0x57E4, 0x0A3E, 0x57E5, 0x57E5, 0x1E87, 0x57E6, 0x57E6, 0x40CF, + 0x57E7, 0x57E7, 0x1E8D, 0x57E9, 0x57E9, 0x1E91, 0x57EC, 0x57EC, 0x1E88, + 0x57ED, 0x57ED, 0x1E7C, 0x57EE, 0x57EE, 0x1E84, 0x57EF, 0x57EF, 0x4754, + 0x57F0, 0x57F0, 0x1E92, 0x57F1, 0x57F1, 0x1E90, 0x57F2, 0x57F2, 0x1E86, + 0x57F3, 0x57F3, 0x1E81, 0x57F4, 0x57F4, 0x1E7A, 0x57F5, 0x57F5, 0x20E1, + 0x57F6, 0x57F6, 0x1E78, 0x57F7, 0x57F7, 0x0A42, 0x57F8, 0x57F8, 0x1E7F, + 0x57F9, 0x57F9, 0x0A43, 0x57FA, 0x57FA, 0x0A3F, 0x57FB, 0x57FB, 0x1E75, + 0x57FC, 0x57FC, 0x1E8B, 0x57FD, 0x57FD, 0x1E7D, 0x57FE, 0x57FE, 0x408F, + 0x5800, 0x5800, 0x1E7B, 0x5801, 0x5801, 0x1E8E, 0x5802, 0x5802, 0x0A40, + 0x5803, 0x5803, 0x40D1, 0x5804, 0x5804, 0x1E94, 0x5805, 0x5805, 0x0A3A, + 0x5806, 0x5806, 0x0A3C, 0x5807, 0x5807, 0x1E83, 0x5808, 0x5808, 0x1E7E, + 0x5809, 0x5809, 0x087F, 0x580A, 0x580A, 0x0A3B, 0x580B, 0x580B, 0x1E80, + 0x580C, 0x580C, 0x1E8F, 0x580D, 0x580D, 0x1E93, 0x580E, 0x580E, 0x1E8A, + 0x5810, 0x5810, 0x1E8C, 0x5812, 0x5812, 0x3D0A, 0x5814, 0x5814, 0x1E76, + 0x5819, 0x5819, 0x20DC, 0x581B, 0x581B, 0x20E5, 0x581C, 0x581C, 0x20E4, + 0x581D, 0x581D, 0x0C1E, 0x581E, 0x581E, 0x20DD, 0x5820, 0x5820, 0x0C1F, + 0x5821, 0x5821, 0x0C1D, 0x5822, 0x5822, 0x3C28, 0x5823, 0x5823, 0x20DF, + 0x5824, 0x5824, 0x0C1A, 0x5825, 0x5825, 0x20E3, 0x5826, 0x5826, 0x40D4, + 0x5827, 0x5827, 0x20DE, 0x5828, 0x5828, 0x20E0, 0x5829, 0x5829, 0x20DA, + 0x582A, 0x582A, 0x0C18, 0x582C, 0x582C, 0x20ED, 0x582D, 0x582D, 0x20EC, + 0x582E, 0x582E, 0x20E9, 0x582F, 0x582F, 0x0C17, 0x5830, 0x5831, 0x0C1B, + 0x5832, 0x5832, 0x1C5E, 0x5833, 0x5833, 0x20E6, 0x5834, 0x5834, 0x0C19, + 0x5835, 0x5835, 0x0A41, 0x5836, 0x5836, 0x20E8, 0x5837, 0x5837, 0x20DB, + 0x5838, 0x5838, 0x20EB, 0x5839, 0x5839, 0x20EA, 0x583A, 0x583A, 0x3D72, + 0x583B, 0x583B, 0x20EE, 0x583D, 0x583D, 0x239F, 0x583F, 0x583F, 0x20E7, + 0x5840, 0x5840, 0x3D82, 0x5844, 0x5844, 0x47BB, 0x5847, 0x5847, 0x3AC2, + 0x5848, 0x5848, 0x20E2, 0x5849, 0x5849, 0x2397, 0x584A, 0x584A, 0x0DEF, + 0x584B, 0x584B, 0x0DF2, 0x584C, 0x584C, 0x0DED, 0x584D, 0x584D, 0x2396, + 0x584E, 0x584E, 0x239A, 0x584F, 0x584F, 0x2395, 0x5851, 0x5851, 0x0DE7, + 0x5852, 0x5852, 0x0DF1, 0x5853, 0x5853, 0x2392, 0x5854, 0x5854, 0x0DEB, + 0x5855, 0x5855, 0x2399, 0x5857, 0x5857, 0x0DE9, 0x5858, 0x5858, 0x0DE8, + 0x5859, 0x5859, 0x239C, 0x585A, 0x585A, 0x0DEA, 0x585B, 0x585B, 0x239E, + 0x585C, 0x585C, 0x4949, 0x585D, 0x585D, 0x239B, 0x585E, 0x585E, 0x0DE6, + 0x585F, 0x585F, 0x43DF, 0x5862, 0x5862, 0x0DF0, 0x5863, 0x5863, 0x23A0, + 0x5864, 0x5864, 0x2394, 0x5865, 0x5865, 0x239D, 0x5868, 0x5868, 0x2393, + 0x5869, 0x5869, 0x3D65, 0x586B, 0x586B, 0x0DEC, 0x586C, 0x586C, 0x399A, + 0x586D, 0x586D, 0x0DEE, 0x586F, 0x586F, 0x2398, 0x5871, 0x5871, 0x23A1, + 0x5872, 0x5872, 0x3C26, 0x5873, 0x5873, 0x4355, 0x5874, 0x5874, 0x263F, + 0x5875, 0x5875, 0x0FA2, 0x5876, 0x5876, 0x2645, 0x5879, 0x5879, 0x0FA7, + 0x587A, 0x587A, 0x2641, 0x587B, 0x587B, 0x2648, 0x587C, 0x587C, 0x2639, + 0x587D, 0x587D, 0x0FA9, 0x587E, 0x587E, 0x0FA3, 0x587F, 0x587F, 0x263E, + 0x5880, 0x5880, 0x1121, 0x5881, 0x5881, 0x263D, 0x5882, 0x5882, 0x2646, + 0x5883, 0x5883, 0x0FA4, 0x5885, 0x5885, 0x0FA8, 0x5886, 0x5886, 0x263C, + 0x5887, 0x5887, 0x2642, 0x5888, 0x5888, 0x2647, 0x5889, 0x5889, 0x2638, + 0x588A, 0x588A, 0x0FA6, 0x588B, 0x588B, 0x2640, 0x588E, 0x588E, 0x2644, + 0x588F, 0x588F, 0x264A, 0x5890, 0x5890, 0x263A, 0x5891, 0x5891, 0x2643, + 0x5893, 0x5893, 0x0FA5, 0x5894, 0x5894, 0x2649, 0x5898, 0x5898, 0x263B, + 0x5899, 0x5899, 0x4618, 0x589A, 0x589A, 0x4903, 0x589C, 0x589C, 0x1125, + 0x589D, 0x589D, 0x28A1, 0x589E, 0x589E, 0x1123, 0x589F, 0x589F, 0x1122, + 0x58A0, 0x58A0, 0x28A3, 0x58A1, 0x58A1, 0x28A8, 0x58A3, 0x58A3, 0x28A4, + 0x58A5, 0x58A5, 0x28A7, 0x58A6, 0x58A6, 0x1128, 0x58A7, 0x58A7, 0x3EEB, + 0x58A8, 0x58A8, 0x1288, 0x58A9, 0x58A9, 0x1127, 0x58AA, 0x58AA, 0x40D7, + 0x58AB, 0x58AB, 0x28A0, 0x58AC, 0x58AC, 0x28A6, 0x58AE, 0x58AE, 0x1126, + 0x58AF, 0x58AF, 0x28A5, 0x58B0, 0x58B0, 0x37A4, 0x58B1, 0x58B1, 0x28A2, + 0x58B3, 0x58B3, 0x1124, 0x58B5, 0x58B5, 0x4840, 0x58B6, 0x58B6, 0x3DFD, + 0x58BA, 0x58BA, 0x2B18, 0x58BB, 0x58BB, 0x36EB, 0x58BC, 0x58BC, 0x2B1A, + 0x58BD, 0x58BD, 0x2B15, 0x58BE, 0x58BE, 0x12A4, 0x58BF, 0x58BF, 0x2B17, + 0x58C1, 0x58C1, 0x12A3, 0x58C2, 0x58C2, 0x2B19, 0x58C5, 0x58C5, 0x12A6, + 0x58C6, 0x58C6, 0x2B1B, 0x58C7, 0x58C7, 0x12A5, 0x58C8, 0x58C8, 0x2B14, + 0x58C9, 0x58C9, 0x2B16, 0x58CB, 0x58CB, 0x3A09, 0x58CE, 0x58CE, 0x13C2, + 0x58CF, 0x58CF, 0x2D4D, 0x58D1, 0x58D1, 0x13C1, 0x58D2, 0x58D2, 0x2D4E, + 0x58D3, 0x58D3, 0x13C0, 0x58D4, 0x58D4, 0x2D4C, 0x58D5, 0x58D5, 0x13BF, + 0x58D6, 0x58D6, 0x2D4B, 0x58D8, 0x58D8, 0x14CD, 0x58D9, 0x58D9, 0x14CC, + 0x58DA, 0x58DA, 0x3085, 0x58DB, 0x58DB, 0x3087, 0x58DC, 0x58DC, 0x40DA, + 0x58DD, 0x58DD, 0x3086, 0x58DE, 0x58DF, 0x1578, 0x58E0, 0x58E0, 0x40D9, + 0x58E2, 0x58E2, 0x157A, 0x58E3, 0x58E3, 0x31CB, 0x58E4, 0x58E4, 0x160E, + 0x58E7, 0x58E7, 0x3411, 0x58E8, 0x58E8, 0x3410, 0x58E9, 0x58E9, 0x1720, + 0x58EB, 0x58EB, 0x027B, 0x58EC, 0x58EC, 0x02C1, 0x58EF, 0x58EF, 0x046F, + 0x58F0, 0x58F0, 0x4549, 0x58F2, 0x58F2, 0x3D68, 0x58F3, 0x58F3, 0x3C7A, + 0x58F4, 0x58F4, 0x1A9B, 0x58F9, 0x58FA, 0x0C20, 0x58FB, 0x58FB, 0x40DC, + 0x58FC, 0x58FC, 0x23A2, 0x58FD, 0x58FD, 0x0FAA, 0x58FE, 0x58FE, 0x264B, + 0x58FF, 0x58FF, 0x28A9, 0x5902, 0x5902, 0x0224, 0x5903, 0x5903, 0x1785, + 0x5904, 0x5904, 0x454A, 0x5905, 0x5905, 0x4599, 0x5906, 0x5906, 0x1857, + 0x5907, 0x5907, 0x454B, 0x590A, 0x590A, 0x0224, 0x590C, 0x590C, 0x1944, + 0x590D, 0x590D, 0x1A9C, 0x590E, 0x590E, 0x1C6C, 0x590F, 0x590F, 0x0880, + 0x5911, 0x5911, 0x4274, 0x5912, 0x5912, 0x3088, 0x5914, 0x5914, 0x166D, + 0x5915, 0x5915, 0x027C, 0x5916, 0x5916, 0x032E, 0x5917, 0x5917, 0x179C, + 0x5919, 0x591A, 0x03B4, 0x591C, 0x591C, 0x0581, 0x591F, 0x591F, 0x40E3, + 0x5920, 0x5920, 0x0A44, 0x5922, 0x5922, 0x0FAC, 0x5924, 0x5924, 0x0FAD, + 0x5925, 0x5925, 0x0FAB, 0x5927, 0x5927, 0x027D, 0x5929, 0x5929, 0x02C2, + 0x592A, 0x592A, 0x02C4, 0x592B, 0x592B, 0x02C3, 0x592C, 0x592C, 0x1786, + 0x592D, 0x592D, 0x02C5, 0x592E, 0x592E, 0x032F, 0x592F, 0x592F, 0x179D, + 0x5931, 0x5931, 0x0330, 0x5932, 0x5932, 0x454C, 0x5934, 0x5934, 0x454D, + 0x5937, 0x5938, 0x03B6, 0x593C, 0x593C, 0x17D4, 0x593E, 0x593E, 0x0470, + 0x5940, 0x5940, 0x1858, 0x5944, 0x5944, 0x0585, 0x5945, 0x5945, 0x1945, + 0x5947, 0x5948, 0x0583, 0x5949, 0x5949, 0x0582, 0x594A, 0x594A, 0x1C6D, + 0x594E, 0x594E, 0x06F2, 0x594F, 0x594F, 0x06F1, 0x5950, 0x5950, 0x06F3, + 0x5951, 0x5951, 0x06F0, 0x5953, 0x5953, 0x1A9D, 0x5954, 0x5954, 0x0586, + 0x5955, 0x5955, 0x06EF, 0x5957, 0x5958, 0x0881, 0x595A, 0x595A, 0x0883, + 0x595C, 0x595C, 0x1E95, 0x5960, 0x5960, 0x0C22, 0x5961, 0x5961, 0x20EF, + 0x5962, 0x5962, 0x0A45, 0x5965, 0x5965, 0x4852, 0x5967, 0x5967, 0x0DF3, + 0x5969, 0x5969, 0x0FAF, 0x596A, 0x596A, 0x0FAE, 0x596B, 0x596B, 0x264C, + 0x596D, 0x596D, 0x1129, 0x596E, 0x596E, 0x12A7, 0x5970, 0x5970, 0x2F17, + 0x5971, 0x5971, 0x337B, 0x5972, 0x5972, 0x3412, 0x5973, 0x5973, 0x027E, + 0x5974, 0x5974, 0x0331, 0x5975, 0x5975, 0x3E6A, 0x5976, 0x5976, 0x0332, + 0x5977, 0x5977, 0x17DA, 0x5978, 0x5978, 0x03B9, 0x5979, 0x5979, 0x03BC, + 0x597B, 0x597B, 0x17D8, 0x597C, 0x597C, 0x17D6, 0x597D, 0x597D, 0x03BB, + 0x597E, 0x597E, 0x17D9, 0x597F, 0x597F, 0x17DB, 0x5980, 0x5980, 0x17D5, + 0x5981, 0x5981, 0x03BE, 0x5982, 0x5982, 0x03BD, 0x5983, 0x5983, 0x03BA, + 0x5984, 0x5984, 0x03B8, 0x5985, 0x5985, 0x17D7, 0x5989, 0x5989, 0x3D30, + 0x598A, 0x598A, 0x047B, 0x598D, 0x598D, 0x0478, 0x598E, 0x598E, 0x185D, + 0x598F, 0x598F, 0x1860, 0x5990, 0x5990, 0x185F, 0x5992, 0x5992, 0x0472, + 0x5993, 0x5993, 0x047A, 0x5994, 0x5994, 0x3C99, 0x5996, 0x5996, 0x0477, + 0x5997, 0x5997, 0x185C, 0x5998, 0x5998, 0x185A, 0x5999, 0x5999, 0x0476, + 0x599A, 0x599A, 0x3BB0, 0x599D, 0x599D, 0x0471, 0x599E, 0x599E, 0x0474, + 0x599F, 0x599F, 0x3DAF, 0x59A0, 0x59A0, 0x185B, 0x59A1, 0x59A1, 0x1862, + 0x59A2, 0x59A2, 0x185E, 0x59A3, 0x59A3, 0x0475, 0x59A4, 0x59A4, 0x0479, + 0x59A5, 0x59A5, 0x047C, 0x59A6, 0x59A6, 0x1859, 0x59A7, 0x59A7, 0x1861, + 0x59A8, 0x59A8, 0x0473, 0x59AC, 0x59AC, 0x3D81, 0x59AE, 0x59AE, 0x058B, + 0x59AF, 0x59AF, 0x0593, 0x59B0, 0x59B0, 0x3CD8, 0x59B1, 0x59B1, 0x1951, + 0x59B2, 0x59B2, 0x194A, 0x59B3, 0x59B3, 0x0594, 0x59B4, 0x59B4, 0x1955, + 0x59B5, 0x59B5, 0x1946, 0x59B6, 0x59B6, 0x194D, 0x59B7, 0x59B7, 0x3F2D, + 0x59B8, 0x59B8, 0x3A10, 0x59B9, 0x59B9, 0x058A, 0x59BA, 0x59BA, 0x1947, + 0x59BB, 0x59BB, 0x0588, 0x59BC, 0x59BC, 0x194E, 0x59BD, 0x59BD, 0x1952, + 0x59BE, 0x59BE, 0x0587, 0x59C0, 0x59C0, 0x1953, 0x59C1, 0x59C1, 0x194C, + 0x59C3, 0x59C3, 0x194F, 0x59C4, 0x59C4, 0x3D04, 0x59C5, 0x59C5, 0x0596, + 0x59C6, 0x59C6, 0x058D, 0x59C7, 0x59C7, 0x1956, 0x59C8, 0x59C8, 0x1954, + 0x59C9, 0x59C9, 0x40EC, 0x59CA, 0x59CA, 0x0592, 0x59CB, 0x59CB, 0x0590, + 0x59CC, 0x59CC, 0x194B, 0x59CD, 0x59CD, 0x058F, 0x59CE, 0x59CE, 0x1949, + 0x59CF, 0x59CF, 0x1948, 0x59D0, 0x59D0, 0x058E, 0x59D1, 0x59D1, 0x058C, + 0x59D2, 0x59D2, 0x0595, 0x59D3, 0x59D3, 0x0591, 0x59D4, 0x59D4, 0x0589, + 0x59D6, 0x59D6, 0x1950, 0x59D8, 0x59D8, 0x06F5, 0x59D9, 0x59D9, 0x40F1, + 0x59DA, 0x59DA, 0x06FC, 0x59DB, 0x59DB, 0x1AAB, 0x59DC, 0x59DC, 0x06F4, + 0x59DD, 0x59DD, 0x1AA3, 0x59DE, 0x59DE, 0x1A9F, 0x59E0, 0x59E0, 0x1AAF, + 0x59E1, 0x59E1, 0x1A9E, 0x59E3, 0x59E3, 0x06F7, 0x59E4, 0x59E4, 0x1AA8, + 0x59E5, 0x59E5, 0x06FA, 0x59E6, 0x59E6, 0x06FD, 0x59E8, 0x59E8, 0x06F8, + 0x59E9, 0x59E9, 0x1AAC, 0x59EA, 0x59EA, 0x06FB, 0x59EB, 0x59EB, 0x3D59, + 0x59EC, 0x59EC, 0x088A, 0x59ED, 0x59ED, 0x1AB2, 0x59EE, 0x59EE, 0x1AA0, + 0x59EF, 0x59EF, 0x3D38, 0x59F0, 0x59F0, 0x3BB2, 0x59F1, 0x59F1, 0x1AA2, + 0x59F2, 0x59F2, 0x1AA9, 0x59F3, 0x59F3, 0x1AAD, 0x59F4, 0x59F4, 0x1AB1, + 0x59F5, 0x59F5, 0x1AAE, 0x59F6, 0x59F6, 0x1AA7, 0x59F7, 0x59F7, 0x1AAA, + 0x59F8, 0x59F8, 0x3E4A, 0x59F9, 0x59F9, 0x40F8, 0x59FA, 0x59FA, 0x1AA4, + 0x59FB, 0x59FB, 0x06FF, 0x59FC, 0x59FC, 0x1AA6, 0x59FD, 0x59FD, 0x1AA5, + 0x59FE, 0x59FE, 0x1AB0, 0x59FF, 0x59FF, 0x06F6, 0x5A00, 0x5A00, 0x1AA1, + 0x5A01, 0x5A01, 0x06FE, 0x5A02, 0x5A02, 0x3B8D, 0x5A03, 0x5A03, 0x06F9, + 0x5A09, 0x5A09, 0x0890, 0x5A0A, 0x5A0A, 0x1C75, 0x5A0B, 0x5A0B, 0x3C89, + 0x5A0C, 0x5A0C, 0x088F, 0x5A0D, 0x5A0D, 0x3B38, 0x5A0F, 0x5A0F, 0x1C73, + 0x5A11, 0x5A11, 0x0884, 0x5A12, 0x5A12, 0x3A13, 0x5A13, 0x5A13, 0x0889, + 0x5A15, 0x5A15, 0x1C72, 0x5A16, 0x5A16, 0x1C6F, 0x5A17, 0x5A17, 0x1C74, + 0x5A18, 0x5A18, 0x0885, 0x5A19, 0x5A19, 0x1C6E, 0x5A1B, 0x5A1B, 0x0888, + 0x5A1C, 0x5A1C, 0x0886, 0x5A1E, 0x5A1E, 0x1C76, 0x5A1F, 0x5A1F, 0x0887, + 0x5A20, 0x5A20, 0x088B, 0x5A21, 0x5A21, 0x3A1B, 0x5A23, 0x5A23, 0x088C, + 0x5A24, 0x5A24, 0x40E8, 0x5A25, 0x5A25, 0x088E, 0x5A27, 0x5A27, 0x3DE1, + 0x5A29, 0x5A29, 0x088D, 0x5A2A, 0x5A2A, 0x3B3B, 0x5A2B, 0x5A2B, 0x3D40, + 0x5A2C, 0x5A2C, 0x3A0F, 0x5A2D, 0x5A2E, 0x1C70, 0x5A33, 0x5A33, 0x1C77, + 0x5A35, 0x5A35, 0x1E9C, 0x5A36, 0x5A36, 0x0A46, 0x5A37, 0x5A37, 0x20FD, + 0x5A38, 0x5A38, 0x1E9B, 0x5A39, 0x5A39, 0x1EAE, 0x5A3C, 0x5A3C, 0x0A4C, + 0x5A3D, 0x5A3D, 0x3AC0, 0x5A3E, 0x5A3E, 0x1EAC, 0x5A40, 0x5A40, 0x0A4B, + 0x5A41, 0x5A41, 0x0A47, 0x5A42, 0x5A42, 0x1EB5, 0x5A43, 0x5A43, 0x1EA5, + 0x5A44, 0x5A44, 0x1EA8, 0x5A45, 0x5A45, 0x3917, 0x5A46, 0x5A46, 0x0A4F, + 0x5A47, 0x5A47, 0x1EB2, 0x5A48, 0x5A48, 0x1EAA, 0x5A49, 0x5A49, 0x0A48, + 0x5A4A, 0x5A4A, 0x0A50, 0x5A4C, 0x5A4C, 0x1EAF, 0x5A4D, 0x5A4D, 0x1EAD, + 0x5A50, 0x5A50, 0x1E9E, 0x5A51, 0x5A51, 0x1EB3, 0x5A52, 0x5A52, 0x1EA7, + 0x5A53, 0x5A53, 0x1EA2, 0x5A54, 0x5A54, 0x4603, 0x5A55, 0x5A55, 0x1E98, + 0x5A56, 0x5A56, 0x1EB4, 0x5A57, 0x5A57, 0x1EA4, 0x5A58, 0x5A58, 0x1E97, + 0x5A59, 0x5A59, 0x3B34, 0x5A5A, 0x5A5A, 0x0A4E, 0x5A5B, 0x5A5B, 0x1EA9, + 0x5A5C, 0x5A5C, 0x1EB6, 0x5A5D, 0x5A5D, 0x1EA6, 0x5A5E, 0x5A5E, 0x1E9A, + 0x5A5F, 0x5A5F, 0x1E9F, 0x5A60, 0x5A60, 0x1E96, 0x5A61, 0x5A61, 0x3D33, + 0x5A62, 0x5A62, 0x0A4D, 0x5A63, 0x5A63, 0x40FB, 0x5A64, 0x5A64, 0x1EA3, + 0x5A65, 0x5A65, 0x1EA0, 0x5A66, 0x5A66, 0x0A49, 0x5A67, 0x5A67, 0x1E99, + 0x5A68, 0x5A68, 0x39B7, 0x5A69, 0x5A69, 0x1EB1, 0x5A6A, 0x5A6A, 0x0A4A, + 0x5A6B, 0x5A6B, 0x3A42, 0x5A6C, 0x5A6C, 0x1EA1, 0x5A6D, 0x5A6D, 0x1E9D, + 0x5A6E, 0x5A6E, 0x3D3F, 0x5A70, 0x5A70, 0x1EB0, 0x5A71, 0x5A71, 0x3D34, + 0x5A77, 0x5A77, 0x0C23, 0x5A78, 0x5A78, 0x20F6, 0x5A79, 0x5A79, 0x3CE1, + 0x5A7A, 0x5A7A, 0x20F3, 0x5A7B, 0x5A7B, 0x2104, 0x5A7C, 0x5A7C, 0x20F8, + 0x5A7D, 0x5A7D, 0x2105, 0x5A7E, 0x5A7E, 0x3A11, 0x5A7F, 0x5A7F, 0x0C25, + 0x5A81, 0x5A81, 0x3A1D, 0x5A82, 0x5A82, 0x3D31, 0x5A83, 0x5A83, 0x2101, + 0x5A84, 0x5A84, 0x20FE, 0x5A86, 0x5A86, 0x3B81, 0x5A88, 0x5A88, 0x4263, + 0x5A8A, 0x5A8A, 0x20FF, 0x5A8B, 0x5A8B, 0x2102, 0x5A8C, 0x5A8C, 0x2106, + 0x5A8E, 0x5A8E, 0x1EAB, 0x5A8F, 0x5A8F, 0x2108, 0x5A90, 0x5A90, 0x23B6, + 0x5A91, 0x5A91, 0x4235, 0x5A92, 0x5A92, 0x0C26, 0x5A93, 0x5A93, 0x2109, + 0x5A94, 0x5A94, 0x20F1, 0x5A95, 0x5A95, 0x20FB, 0x5A96, 0x5A96, 0x4100, + 0x5A97, 0x5A97, 0x2100, 0x5A99, 0x5A99, 0x3A0A, 0x5A9A, 0x5A9A, 0x0C24, + 0x5A9B, 0x5A9B, 0x0C27, 0x5A9C, 0x5A9C, 0x2107, 0x5A9D, 0x5A9D, 0x210A, + 0x5A9E, 0x5A9E, 0x20F5, 0x5A9F, 0x5A9F, 0x20F2, 0x5AA0, 0x5AA0, 0x4172, + 0x5AA1, 0x5AA1, 0x3CDC, 0x5AA2, 0x5AA2, 0x20F4, 0x5AA5, 0x5AA5, 0x20F9, + 0x5AA6, 0x5AA6, 0x20F7, 0x5AA7, 0x5AA7, 0x0C28, 0x5AA9, 0x5AA9, 0x2103, + 0x5AAB, 0x5AAB, 0x40FA, 0x5AAC, 0x5AAC, 0x20FA, 0x5AAE, 0x5AAE, 0x20FC, + 0x5AAF, 0x5AAF, 0x20F0, 0x5AB0, 0x5AB0, 0x23AA, 0x5AB1, 0x5AB1, 0x23A8, + 0x5AB2, 0x5AB2, 0x0DFC, 0x5AB3, 0x5AB3, 0x0DFA, 0x5AB4, 0x5AB4, 0x23B2, + 0x5AB5, 0x5AB5, 0x23A9, 0x5AB6, 0x5AB6, 0x23B3, 0x5AB7, 0x5AB7, 0x23AF, + 0x5AB8, 0x5AB8, 0x23A7, 0x5AB9, 0x5AB9, 0x23B5, 0x5ABA, 0x5ABA, 0x23A6, + 0x5ABB, 0x5ABB, 0x23AD, 0x5ABC, 0x5ABC, 0x0DF9, 0x5ABD, 0x5ABD, 0x0DF8, + 0x5ABE, 0x5ABE, 0x0DF7, 0x5ABF, 0x5ABF, 0x23AB, 0x5AC0, 0x5AC0, 0x23B0, + 0x5AC1, 0x5AC1, 0x0DF4, 0x5AC2, 0x5AC2, 0x0DFB, 0x5AC3, 0x5AC3, 0x3896, + 0x5AC4, 0x5AC4, 0x23A4, 0x5AC6, 0x5AC6, 0x23AE, 0x5AC7, 0x5AC7, 0x23A3, + 0x5AC8, 0x5AC8, 0x23AC, 0x5AC9, 0x5AC9, 0x0DF5, 0x5ACA, 0x5ACA, 0x23B1, + 0x5ACB, 0x5ACB, 0x23A5, 0x5ACC, 0x5ACC, 0x0DF6, 0x5ACD, 0x5ACD, 0x23B4, + 0x5ACE, 0x5ACE, 0x3C88, 0x5ACF, 0x5ACF, 0x43B5, 0x5AD3, 0x5AD3, 0x4102, + 0x5AD5, 0x5AD5, 0x2650, 0x5AD6, 0x5AD6, 0x0FB4, 0x5AD7, 0x5AD7, 0x0FB3, + 0x5AD8, 0x5AD8, 0x0FB5, 0x5AD9, 0x5AD9, 0x265C, 0x5ADA, 0x5ADA, 0x2652, + 0x5ADB, 0x5ADB, 0x2658, 0x5ADC, 0x5ADC, 0x264D, 0x5ADD, 0x5ADD, 0x265B, + 0x5ADE, 0x5ADE, 0x265A, 0x5ADF, 0x5ADF, 0x265E, 0x5AE0, 0x5AE0, 0x2657, + 0x5AE1, 0x5AE1, 0x0FB0, 0x5AE2, 0x5AE2, 0x2656, 0x5AE3, 0x5AE3, 0x0FB6, + 0x5AE4, 0x5AE4, 0x3B86, 0x5AE5, 0x5AE5, 0x264F, 0x5AE6, 0x5AE6, 0x0FB1, + 0x5AE8, 0x5AE8, 0x265D, 0x5AE9, 0x5AE9, 0x0FB2, 0x5AEA, 0x5AEA, 0x2651, + 0x5AEB, 0x5AEB, 0x2654, 0x5AEC, 0x5AEC, 0x2659, 0x5AED, 0x5AED, 0x2653, + 0x5AEE, 0x5AEE, 0x264E, 0x5AF0, 0x5AF0, 0x3EE7, 0x5AF2, 0x5AF2, 0x37F5, + 0x5AF3, 0x5AF3, 0x2655, 0x5AF4, 0x5AF4, 0x28AB, 0x5AF5, 0x5AF5, 0x112D, + 0x5AF6, 0x5AF6, 0x28AE, 0x5AF7, 0x5AF7, 0x28AD, 0x5AF8, 0x5AF8, 0x28B0, + 0x5AF9, 0x5AF9, 0x28B2, 0x5AFA, 0x5AFA, 0x36EE, 0x5AFB, 0x5AFB, 0x112B, + 0x5AFD, 0x5AFD, 0x28AC, 0x5AFE, 0x5AFE, 0x3C1D, 0x5AFF, 0x5AFF, 0x28AA, + 0x5B01, 0x5B01, 0x28B3, 0x5B02, 0x5B02, 0x28B1, 0x5B03, 0x5B03, 0x28AF, + 0x5B05, 0x5B05, 0x28B5, 0x5B07, 0x5B07, 0x28B4, 0x5B08, 0x5B08, 0x112F, + 0x5B09, 0x5B09, 0x112A, 0x5B0B, 0x5B0B, 0x112C, 0x5B0C, 0x5B0C, 0x112E, + 0x5B0D, 0x5B0D, 0x48FF, 0x5B0F, 0x5B0F, 0x28B6, 0x5B10, 0x5B10, 0x2B22, + 0x5B11, 0x5B11, 0x3BF6, 0x5B13, 0x5B13, 0x2B21, 0x5B14, 0x5B14, 0x2B20, + 0x5B16, 0x5B16, 0x2B23, 0x5B17, 0x5B17, 0x2B1C, 0x5B19, 0x5B19, 0x2B1D, + 0x5B1A, 0x5B1A, 0x2B25, 0x5B1B, 0x5B1B, 0x2B1E, 0x5B1D, 0x5B1D, 0x12A8, + 0x5B1E, 0x5B1E, 0x2B27, 0x5B1F, 0x5B1F, 0x4941, 0x5B20, 0x5B20, 0x2B26, + 0x5B21, 0x5B21, 0x2B1F, 0x5B23, 0x5B23, 0x2D52, 0x5B24, 0x5B24, 0x13C5, + 0x5B25, 0x5B25, 0x2D50, 0x5B26, 0x5B26, 0x2D55, 0x5B27, 0x5B27, 0x2D54, + 0x5B28, 0x5B28, 0x2B24, 0x5B2A, 0x5B2A, 0x13C4, 0x5B2B, 0x5B2B, 0x3B84, + 0x5B2C, 0x5B2C, 0x2D53, 0x5B2D, 0x5B2D, 0x2D4F, 0x5B2E, 0x5B2E, 0x2D57, + 0x5B2F, 0x5B2F, 0x2D56, 0x5B30, 0x5B30, 0x13C3, 0x5B32, 0x5B32, 0x2D51, + 0x5B34, 0x5B34, 0x12A9, 0x5B38, 0x5B38, 0x14CE, 0x5B3C, 0x5B3C, 0x2F18, + 0x5B3D, 0x5B3F, 0x3089, 0x5B40, 0x5B40, 0x160F, 0x5B41, 0x5B41, 0x38C8, + 0x5B43, 0x5B43, 0x1610, 0x5B44, 0x5B44, 0x3A44, 0x5B45, 0x5B45, 0x31CC, + 0x5B46, 0x5B46, 0x42B2, 0x5B47, 0x5B47, 0x32CD, 0x5B48, 0x5B48, 0x32CC, + 0x5B4A, 0x5B4A, 0x38CD, 0x5B4B, 0x5B4C, 0x337C, 0x5B4D, 0x5B4D, 0x3413, + 0x5B4E, 0x5B4E, 0x3482, 0x5B4F, 0x5B4F, 0x3A31, 0x5B50, 0x5B51, 0x027F, + 0x5B53, 0x5B53, 0x0281, 0x5B54, 0x5B54, 0x02C6, 0x5B55, 0x5B55, 0x0333, + 0x5B56, 0x5B56, 0x17DC, 0x5B57, 0x5B58, 0x03BF, 0x5B5A, 0x5B5B, 0x047F, + 0x5B5C, 0x5B5C, 0x047E, 0x5B5D, 0x5B5D, 0x047D, 0x5B5F, 0x5B5F, 0x0597, + 0x5B62, 0x5B62, 0x1957, 0x5B63, 0x5B63, 0x0599, 0x5B64, 0x5B64, 0x0598, + 0x5B65, 0x5B65, 0x1958, 0x5B66, 0x5B66, 0x454E, 0x5B68, 0x5B68, 0x461D, + 0x5B69, 0x5B69, 0x0700, 0x5B6B, 0x5B6B, 0x0891, 0x5B6C, 0x5B6C, 0x1C78, + 0x5B6D, 0x5B6D, 0x3E5F, 0x5B6E, 0x5B6E, 0x1EB8, 0x5B70, 0x5B70, 0x0A51, + 0x5B71, 0x5B71, 0x0C2A, 0x5B72, 0x5B72, 0x1EB7, 0x5B73, 0x5B73, 0x0C29, + 0x5B74, 0x5B74, 0x3732, 0x5B75, 0x5B75, 0x0FB7, 0x5B76, 0x5B76, 0x410A, + 0x5B77, 0x5B77, 0x265F, 0x5B78, 0x5B78, 0x12AA, 0x5B7A, 0x5B7A, 0x13C6, + 0x5B7B, 0x5B7B, 0x2D58, 0x5B7C, 0x5B7C, 0x410C, 0x5B7D, 0x5B7D, 0x1611, + 0x5B7F, 0x5B7F, 0x16C0, 0x5B80, 0x5B80, 0x0225, 0x5B81, 0x5B81, 0x179E, + 0x5B82, 0x5B82, 0x4044, 0x5B83, 0x5B83, 0x0334, 0x5B84, 0x5B84, 0x179F, + 0x5B85, 0x5B85, 0x03C3, 0x5B87, 0x5B88, 0x03C1, 0x5B89, 0x5B89, 0x03C4, + 0x5B8B, 0x5B8B, 0x0482, 0x5B8C, 0x5B8C, 0x0481, 0x5B8E, 0x5B8E, 0x1863, + 0x5B8F, 0x5B8F, 0x0483, 0x5B90, 0x5B90, 0x48E9, 0x5B92, 0x5B92, 0x1864, + 0x5B93, 0x5B93, 0x1959, 0x5B95, 0x5B95, 0x195A, 0x5B97, 0x5B97, 0x059A, + 0x5B98, 0x5B98, 0x059C, 0x5B99, 0x5B99, 0x059E, 0x5B9A, 0x5B9A, 0x059B, + 0x5B9B, 0x5B9B, 0x059F, 0x5B9C, 0x5B9C, 0x059D, 0x5B9D, 0x5B9D, 0x4116, + 0x5B9E, 0x5B9F, 0x454F, 0x5BA2, 0x5BA2, 0x0704, 0x5BA3, 0x5BA3, 0x0701, + 0x5BA4, 0x5BA4, 0x0703, 0x5BA5, 0x5BA5, 0x0705, 0x5BA6, 0x5BA6, 0x0702, + 0x5BA7, 0x5BA7, 0x1C79, 0x5BA8, 0x5BA8, 0x1AB3, 0x5BAA, 0x5BAA, 0x417B, + 0x5BAC, 0x5BAC, 0x1C7B, 0x5BAD, 0x5BAD, 0x1C7A, 0x5BAE, 0x5BAE, 0x0897, + 0x5BB0, 0x5BB0, 0x0893, 0x5BB3, 0x5BB3, 0x0894, 0x5BB4, 0x5BB4, 0x0896, + 0x5BB5, 0x5BB5, 0x0898, 0x5BB6, 0x5BB6, 0x0895, 0x5BB8, 0x5BB8, 0x089A, + 0x5BB9, 0x5BB9, 0x0899, 0x5BBF, 0x5BBF, 0x0A56, 0x5BC0, 0x5BC0, 0x1EBA, + 0x5BC1, 0x5BC1, 0x1EB9, 0x5BC2, 0x5BC2, 0x0A55, 0x5BC3, 0x5BC3, 0x3F25, + 0x5BC4, 0x5BC4, 0x0A54, 0x5BC5, 0x5BC5, 0x0A53, 0x5BC6, 0x5BC6, 0x0A57, + 0x5BC7, 0x5BC7, 0x0A52, 0x5BCA, 0x5BCA, 0x2110, 0x5BCB, 0x5BCB, 0x210D, + 0x5BCC, 0x5BCC, 0x0C2C, 0x5BCD, 0x5BCD, 0x210C, 0x5BCE, 0x5BCE, 0x2111, + 0x5BD0, 0x5BD0, 0x0C2E, 0x5BD1, 0x5BD1, 0x210F, 0x5BD2, 0x5BD2, 0x0C2B, + 0x5BD3, 0x5BD3, 0x0C2D, 0x5BD4, 0x5BD4, 0x210E, 0x5BD5, 0x5BD5, 0x4111, + 0x5BD6, 0x5BD6, 0x23B7, 0x5BD7, 0x5BD7, 0x42BB, 0x5BD8, 0x5BD9, 0x23B8, + 0x5BDE, 0x5BDE, 0x0FB8, 0x5BDF, 0x5BDF, 0x0FC0, 0x5BE0, 0x5BE0, 0x2660, + 0x5BE1, 0x5BE1, 0x0FBA, 0x5BE2, 0x5BE2, 0x0FBE, 0x5BE3, 0x5BE3, 0x2661, + 0x5BE4, 0x5BE4, 0x0FBF, 0x5BE5, 0x5BE6, 0x0FBB, 0x5BE7, 0x5BE7, 0x0FB9, + 0x5BE8, 0x5BE8, 0x0FBD, 0x5BE9, 0x5BE9, 0x1132, 0x5BEA, 0x5BEA, 0x210B, + 0x5BEB, 0x5BEB, 0x1133, 0x5BEC, 0x5BEC, 0x1131, 0x5BEE, 0x5BEE, 0x1130, + 0x5BEF, 0x5BEF, 0x2B28, 0x5BF0, 0x5BF0, 0x12AB, 0x5BF1, 0x5BF2, 0x2D59, + 0x5BF3, 0x5BF3, 0x4115, 0x5BF5, 0x5BF5, 0x157B, 0x5BF6, 0x5BF6, 0x1612, + 0x5BF8, 0x5BF8, 0x0282, 0x5BFA, 0x5BFA, 0x03C5, 0x5BFF, 0x5BFF, 0x40DD, + 0x5C01, 0x5C01, 0x0706, 0x5C03, 0x5C03, 0x1C7C, 0x5C04, 0x5C04, 0x089B, + 0x5C05, 0x5C05, 0x4118, 0x5C07, 0x5C07, 0x0A5A, 0x5C08, 0x5C08, 0x0A59, + 0x5C09, 0x5C09, 0x0A58, 0x5C0A, 0x5C0B, 0x0C2F, 0x5C0C, 0x5C0C, 0x2112, + 0x5C0D, 0x5C0D, 0x0FC1, 0x5C0E, 0x5C0E, 0x12AC, 0x5C0F, 0x5C0F, 0x0283, + 0x5C10, 0x5C10, 0x1787, 0x5C11, 0x5C11, 0x02C7, 0x5C12, 0x5C12, 0x17A0, + 0x5C13, 0x5C13, 0x411A, 0x5C14, 0x5C14, 0x411C, 0x5C15, 0x5C15, 0x17DD, + 0x5C16, 0x5C16, 0x03C6, 0x5C1A, 0x5C1A, 0x05A0, 0x5C1C, 0x5C1C, 0x45EA, + 0x5C1E, 0x5C1E, 0x3A29, 0x5C1F, 0x5C1F, 0x23BA, 0x5C20, 0x5C20, 0x3D89, + 0x5C22, 0x5C22, 0x0284, 0x5C23, 0x5C23, 0x44E8, 0x5C24, 0x5C24, 0x02C8, + 0x5C25, 0x5C25, 0x17DE, 0x5C28, 0x5C28, 0x1865, 0x5C2A, 0x5C2A, 0x1866, + 0x5C2C, 0x5C2C, 0x0484, 0x5C30, 0x5C30, 0x2113, 0x5C31, 0x5C31, 0x0C31, + 0x5C33, 0x5C33, 0x23BB, 0x5C37, 0x5C37, 0x13C7, 0x5C38, 0x5C38, 0x0285, + 0x5C39, 0x5C39, 0x0299, 0x5C3A, 0x5C3A, 0x02C9, 0x5C3B, 0x5C3B, 0x17A1, + 0x5C3C, 0x5C3C, 0x0335, 0x5C3E, 0x5C3E, 0x0488, 0x5C3F, 0x5C3F, 0x0487, + 0x5C40, 0x5C41, 0x0485, 0x5C44, 0x5C44, 0x195B, 0x5C45, 0x5C46, 0x05A2, + 0x5C47, 0x5C47, 0x195C, 0x5C48, 0x5C48, 0x05A1, 0x5C49, 0x5C49, 0x411F, + 0x5C4A, 0x5C4A, 0x3F5C, 0x5C4B, 0x5C4B, 0x070A, 0x5C4C, 0x5C4C, 0x1AB4, + 0x5C4D, 0x5C4D, 0x0709, 0x5C4E, 0x5C4F, 0x0707, 0x5C50, 0x5C50, 0x089E, + 0x5C51, 0x5C51, 0x089C, 0x5C53, 0x5C53, 0x3F02, 0x5C54, 0x5C54, 0x1C7E, + 0x5C55, 0x5C55, 0x089D, 0x5C56, 0x5C56, 0x1C7D, 0x5C58, 0x5C58, 0x0892, + 0x5C59, 0x5C59, 0x1EBB, 0x5C5C, 0x5C5D, 0x0A5C, 0x5C5E, 0x5C5E, 0x3D67, + 0x5C60, 0x5C60, 0x0A5B, 0x5C62, 0x5C62, 0x0FC2, 0x5C63, 0x5C63, 0x2662, + 0x5C64, 0x5C65, 0x1134, 0x5C67, 0x5C67, 0x28B7, 0x5C68, 0x5C68, 0x13C8, + 0x5C69, 0x5C6A, 0x2F19, 0x5C6C, 0x5C6C, 0x166E, 0x5C6D, 0x5C6D, 0x3483, + 0x5C6E, 0x5C6E, 0x1776, 0x5C6F, 0x5C6F, 0x02CA, 0x5C71, 0x5C71, 0x0286, + 0x5C73, 0x5C73, 0x17A3, 0x5C74, 0x5C74, 0x17A2, 0x5C79, 0x5C79, 0x03C7, + 0x5C7A, 0x5C7B, 0x17E0, 0x5C7C, 0x5C7C, 0x17DF, 0x5C7E, 0x5C7E, 0x17E2, + 0x5C85, 0x5C85, 0x4121, 0x5C86, 0x5C86, 0x186E, 0x5C88, 0x5C88, 0x1869, + 0x5C89, 0x5C89, 0x186B, 0x5C8A, 0x5C8A, 0x186D, 0x5C8B, 0x5C8B, 0x186A, + 0x5C8C, 0x5C8C, 0x048C, 0x5C8D, 0x5C8D, 0x1867, 0x5C8F, 0x5C8F, 0x1868, + 0x5C90, 0x5C91, 0x0489, 0x5C92, 0x5C92, 0x186C, 0x5C93, 0x5C93, 0x186F, + 0x5C94, 0x5C94, 0x048B, 0x5C95, 0x5C95, 0x1870, 0x5C99, 0x5C99, 0x468C, + 0x5C9A, 0x5C9A, 0x4551, 0x5C9C, 0x5C9C, 0x495A, 0x5C9D, 0x5C9D, 0x196A, + 0x5C9E, 0x5C9E, 0x3A2A, 0x5C9F, 0x5C9F, 0x1964, 0x5CA0, 0x5CA0, 0x195F, + 0x5CA1, 0x5CA1, 0x05A5, 0x5CA2, 0x5CA2, 0x1967, 0x5CA3, 0x5CA3, 0x1965, + 0x5CA4, 0x5CA4, 0x195E, 0x5CA5, 0x5CA5, 0x196B, 0x5CA6, 0x5CA6, 0x196E, + 0x5CA7, 0x5CA7, 0x1969, 0x5CA8, 0x5CA8, 0x1962, 0x5CA9, 0x5CA9, 0x05A7, + 0x5CAA, 0x5CAA, 0x1968, 0x5CAB, 0x5CAB, 0x05A8, 0x5CAC, 0x5CAC, 0x1963, + 0x5CAD, 0x5CAD, 0x1966, 0x5CAE, 0x5CAE, 0x195D, 0x5CAF, 0x5CAF, 0x1961, + 0x5CB0, 0x5CB0, 0x196D, 0x5CB1, 0x5CB1, 0x05A9, 0x5CB3, 0x5CB3, 0x05AA, + 0x5CB5, 0x5CB5, 0x1960, 0x5CB6, 0x5CB6, 0x196C, 0x5CB7, 0x5CB7, 0x05A4, + 0x5CB8, 0x5CB8, 0x05A6, 0x5CBA, 0x5CBA, 0x412B, 0x5CC1, 0x5CC1, 0x43B8, + 0x5CC2, 0x5CC2, 0x3D4C, 0x5CC6, 0x5CC6, 0x1AC5, 0x5CC7, 0x5CC7, 0x1ABE, + 0x5CC8, 0x5CC8, 0x1AC4, 0x5CC9, 0x5CC9, 0x1ABD, 0x5CCA, 0x5CCA, 0x1ABF, + 0x5CCB, 0x5CCB, 0x1AB9, 0x5CCC, 0x5CCC, 0x1AB7, 0x5CCE, 0x5CCE, 0x1AC6, + 0x5CCF, 0x5CCF, 0x1AC3, 0x5CD0, 0x5CD0, 0x1AB5, 0x5CD1, 0x5CD1, 0x3F13, + 0x5CD2, 0x5CD2, 0x070C, 0x5CD3, 0x5CD4, 0x1AC1, 0x5CD6, 0x5CD6, 0x1AC0, + 0x5CD7, 0x5CD7, 0x1AB8, 0x5CD8, 0x5CD8, 0x1AB6, 0x5CD9, 0x5CD9, 0x070B, + 0x5CDA, 0x5CDA, 0x1ABC, 0x5CDB, 0x5CDB, 0x1ABA, 0x5CDE, 0x5CDE, 0x1ABB, + 0x5CDF, 0x5CDF, 0x1AC7, 0x5CE5, 0x5CE5, 0x4637, 0x5CE8, 0x5CE8, 0x08A3, + 0x5CE9, 0x5CE9, 0x4122, 0x5CEA, 0x5CEA, 0x08A2, 0x5CEC, 0x5CEC, 0x1C7F, + 0x5CED, 0x5CED, 0x089F, 0x5CEE, 0x5CEE, 0x1C81, 0x5CEF, 0x5CEF, 0x4123, + 0x5CF0, 0x5CF0, 0x08A4, 0x5CF1, 0x5CF1, 0x1C82, 0x5CF4, 0x5CF4, 0x08A7, + 0x5CF6, 0x5CF6, 0x08A5, 0x5CF7, 0x5CF7, 0x1C83, 0x5CF8, 0x5CF8, 0x1AC8, + 0x5CF9, 0x5CF9, 0x1C85, 0x5CFB, 0x5CFB, 0x08A1, 0x5CFD, 0x5CFD, 0x08A0, + 0x5CFF, 0x5CFF, 0x1C80, 0x5D00, 0x5D00, 0x1C84, 0x5D01, 0x5D01, 0x08A6, + 0x5D06, 0x5D06, 0x0A5F, 0x5D07, 0x5D07, 0x0A5E, 0x5D0B, 0x5D0B, 0x1EBD, + 0x5D0C, 0x5D0C, 0x1EC1, 0x5D0D, 0x5D0D, 0x1EC3, 0x5D0E, 0x5D0E, 0x0A60, + 0x5D0F, 0x5D0F, 0x1EC6, 0x5D10, 0x5D10, 0x4127, 0x5D11, 0x5D11, 0x0A64, + 0x5D12, 0x5D12, 0x1EC8, 0x5D14, 0x5D14, 0x0A66, 0x5D15, 0x5D15, 0x43B9, + 0x5D16, 0x5D16, 0x0A62, 0x5D17, 0x5D17, 0x0A6A, 0x5D18, 0x5D18, 0x4128, + 0x5D19, 0x5D19, 0x0A67, 0x5D1A, 0x5D1A, 0x1EBF, 0x5D1B, 0x5D1B, 0x0A61, + 0x5D1D, 0x5D1D, 0x1EBE, 0x5D1E, 0x5D1E, 0x1EBC, 0x5D1F, 0x5D1F, 0x1ECA, + 0x5D20, 0x5D20, 0x1EC0, 0x5D22, 0x5D22, 0x0A63, 0x5D23, 0x5D23, 0x1EC9, + 0x5D24, 0x5D24, 0x0A68, 0x5D25, 0x5D25, 0x1EC5, 0x5D26, 0x5D26, 0x1EC4, + 0x5D27, 0x5D27, 0x0A69, 0x5D28, 0x5D28, 0x1EC2, 0x5D29, 0x5D29, 0x0A65, + 0x5D2C, 0x5D2C, 0x3DF7, 0x5D2E, 0x5D2E, 0x1ECB, 0x5D2F, 0x5D2F, 0x46D3, + 0x5D30, 0x5D30, 0x1EC7, 0x5D31, 0x5D31, 0x2122, 0x5D32, 0x5D32, 0x2129, + 0x5D33, 0x5D33, 0x211E, 0x5D34, 0x5D34, 0x0C34, 0x5D35, 0x5D35, 0x211A, + 0x5D36, 0x5D36, 0x212A, 0x5D37, 0x5D37, 0x2114, 0x5D38, 0x5D38, 0x2127, + 0x5D39, 0x5D39, 0x2125, 0x5D3A, 0x5D3A, 0x211F, 0x5D3C, 0x5D3C, 0x2128, + 0x5D3D, 0x5D3D, 0x2121, 0x5D3E, 0x5D3E, 0x4629, 0x5D3F, 0x5D3F, 0x2119, + 0x5D40, 0x5D40, 0x212B, 0x5D41, 0x5D41, 0x2117, 0x5D42, 0x5D42, 0x2124, + 0x5D43, 0x5D43, 0x2115, 0x5D45, 0x5D45, 0x212C, 0x5D46, 0x5D46, 0x4129, + 0x5D47, 0x5D47, 0x0C35, 0x5D48, 0x5D48, 0x462A, 0x5D49, 0x5D49, 0x2126, + 0x5D4A, 0x5D4A, 0x23BE, 0x5D4B, 0x5D4B, 0x2118, 0x5D4C, 0x5D4C, 0x0C32, + 0x5D4E, 0x5D4E, 0x211C, 0x5D50, 0x5D50, 0x0C33, 0x5D51, 0x5D51, 0x211B, + 0x5D52, 0x5D52, 0x2120, 0x5D55, 0x5D55, 0x211D, 0x5D56, 0x5D56, 0x43BA, + 0x5D57, 0x5D57, 0x3FCA, 0x5D59, 0x5D59, 0x2123, 0x5D5B, 0x5D5B, 0x3DD5, + 0x5D5E, 0x5D5E, 0x23C2, 0x5D62, 0x5D62, 0x23C5, 0x5D63, 0x5D63, 0x23BD, + 0x5D65, 0x5D65, 0x23BF, 0x5D67, 0x5D67, 0x23C4, 0x5D68, 0x5D68, 0x23C3, + 0x5D69, 0x5D69, 0x0DFD, 0x5D6B, 0x5D6B, 0x2116, 0x5D6C, 0x5D6C, 0x23C1, + 0x5D6F, 0x5D6F, 0x0DFE, 0x5D70, 0x5D70, 0x46E4, 0x5D71, 0x5D71, 0x23BC, + 0x5D72, 0x5D72, 0x23C0, 0x5D74, 0x5D74, 0x3EEF, 0x5D77, 0x5D77, 0x2669, + 0x5D79, 0x5D79, 0x2670, 0x5D7A, 0x5D7A, 0x2667, 0x5D7C, 0x5D7C, 0x266E, + 0x5D7D, 0x5D7D, 0x2665, 0x5D7E, 0x5D7E, 0x266D, 0x5D7F, 0x5D7F, 0x2671, + 0x5D80, 0x5D80, 0x2664, 0x5D81, 0x5D81, 0x2668, 0x5D82, 0x5D82, 0x2663, + 0x5D84, 0x5D84, 0x0FC3, 0x5D85, 0x5D85, 0x3E34, 0x5D86, 0x5D86, 0x2666, + 0x5D87, 0x5D87, 0x0FC4, 0x5D88, 0x5D88, 0x266C, 0x5D89, 0x5D89, 0x266B, + 0x5D8A, 0x5D8A, 0x266A, 0x5D8B, 0x5D8B, 0x4124, 0x5D8D, 0x5D8D, 0x266F, + 0x5D8E, 0x5D8E, 0x3F0C, 0x5D92, 0x5D92, 0x28BB, 0x5D93, 0x5D93, 0x28BD, + 0x5D94, 0x5D94, 0x1137, 0x5D95, 0x5D95, 0x28BE, 0x5D97, 0x5D97, 0x28B9, + 0x5D99, 0x5D99, 0x28B8, 0x5D9A, 0x5D9A, 0x28C2, 0x5D9C, 0x5D9C, 0x28C0, + 0x5D9D, 0x5D9D, 0x1136, 0x5D9E, 0x5D9E, 0x28C3, 0x5D9F, 0x5D9F, 0x28BA, + 0x5DA0, 0x5DA0, 0x28BF, 0x5DA1, 0x5DA1, 0x28C1, 0x5DA2, 0x5DA2, 0x28BC, + 0x5DA4, 0x5DA4, 0x462D, 0x5DA7, 0x5DA7, 0x2B2C, 0x5DA8, 0x5DA8, 0x2B31, + 0x5DA9, 0x5DA9, 0x2B2B, 0x5DAA, 0x5DAA, 0x2B30, 0x5DAB, 0x5DAB, 0x3E39, + 0x5DAC, 0x5DAC, 0x2B29, 0x5DAD, 0x5DAD, 0x2B33, 0x5DAE, 0x5DAE, 0x2B2F, + 0x5DAF, 0x5DAF, 0x2B34, 0x5DB0, 0x5DB0, 0x2B2E, 0x5DB1, 0x5DB1, 0x2B2A, + 0x5DB2, 0x5DB2, 0x2B32, 0x5DB4, 0x5DB4, 0x2B35, 0x5DB5, 0x5DB5, 0x2B2D, + 0x5DB6, 0x5DB6, 0x4158, 0x5DB7, 0x5DB7, 0x2D5B, 0x5DB8, 0x5DB8, 0x13CC, + 0x5DB9, 0x5DB9, 0x462E, 0x5DBA, 0x5DBA, 0x13CA, 0x5DBC, 0x5DBC, 0x13C9, + 0x5DBD, 0x5DBD, 0x13CB, 0x5DC0, 0x5DC0, 0x2F1B, 0x5DC1, 0x5DC1, 0x3BFF, + 0x5DC2, 0x5DC2, 0x3023, 0x5DC3, 0x5DC3, 0x308C, 0x5DC6, 0x5DC7, 0x31CD, + 0x5DC9, 0x5DC9, 0x1613, 0x5DCB, 0x5DCB, 0x32CE, 0x5DCD, 0x5DCD, 0x166F, + 0x5DCF, 0x5DCF, 0x32CF, 0x5DD1, 0x5DD1, 0x337F, 0x5DD2, 0x5DD2, 0x16C2, + 0x5DD4, 0x5DD4, 0x16C1, 0x5DD5, 0x5DD5, 0x337E, 0x5DD6, 0x5DD6, 0x16F7, + 0x5DD7, 0x5DD7, 0x412C, 0x5DD8, 0x5DD8, 0x3414, 0x5DDB, 0x5DDB, 0x0226, + 0x5DDD, 0x5DDD, 0x0287, 0x5DDE, 0x5DDE, 0x03C8, 0x5DDF, 0x5DDF, 0x17E3, + 0x5DE0, 0x5DE0, 0x1871, 0x5DE1, 0x5DE1, 0x051A, 0x5DE2, 0x5DE2, 0x0A6B, + 0x5DE5, 0x5DE5, 0x0288, 0x5DE6, 0x5DE6, 0x0338, 0x5DE7, 0x5DE7, 0x0337, + 0x5DE8, 0x5DE8, 0x0336, 0x5DEB, 0x5DEB, 0x048D, 0x5DEE, 0x5DEE, 0x08A8, + 0x5DF0, 0x5DF0, 0x23C6, 0x5DF1, 0x5DF3, 0x0289, 0x5DF4, 0x5DF4, 0x02CB, + 0x5DF5, 0x5DF5, 0x3F61, 0x5DF7, 0x5DF7, 0x070D, 0x5DF9, 0x5DF9, 0x1AC9, + 0x5DFD, 0x5DFD, 0x0C36, 0x5DFE, 0x5DFE, 0x028C, 0x5DFF, 0x5DFF, 0x1788, + 0x5E02, 0x5E03, 0x0339, 0x5E04, 0x5E04, 0x17A4, 0x5E06, 0x5E06, 0x03C9, + 0x5E09, 0x5E09, 0x4140, 0x5E0A, 0x5E0A, 0x1872, 0x5E0B, 0x5E0B, 0x3D8A, + 0x5E0C, 0x5E0C, 0x048E, 0x5E0E, 0x5E0E, 0x1873, 0x5E11, 0x5E11, 0x05B0, + 0x5E12, 0x5E12, 0x3F2E, 0x5E14, 0x5E14, 0x1970, 0x5E15, 0x5E15, 0x05AE, + 0x5E16, 0x5E16, 0x05AD, 0x5E17, 0x5E17, 0x196F, 0x5E18, 0x5E18, 0x05AB, + 0x5E19, 0x5E19, 0x1971, 0x5E1A, 0x5E1A, 0x05AC, 0x5E1B, 0x5E1B, 0x05AF, + 0x5E1D, 0x5E1D, 0x070E, 0x5E1F, 0x5E1F, 0x0710, 0x5E20, 0x5E20, 0x1ACD, + 0x5E21, 0x5E23, 0x1ACA, 0x5E24, 0x5E24, 0x1ACE, 0x5E25, 0x5E25, 0x070F, + 0x5E28, 0x5E28, 0x1C87, 0x5E29, 0x5E29, 0x1C86, 0x5E2B, 0x5E2B, 0x08AA, + 0x5E2D, 0x5E2D, 0x08A9, 0x5E2E, 0x5E2E, 0x4135, 0x5E33, 0x5E33, 0x0A6E, + 0x5E34, 0x5E34, 0x1ECD, 0x5E36, 0x5E36, 0x0A6D, 0x5E37, 0x5E37, 0x0A6F, + 0x5E38, 0x5E38, 0x0A6C, 0x5E3D, 0x5E3D, 0x0C38, 0x5E3E, 0x5E3E, 0x1ECC, + 0x5E40, 0x5E40, 0x0C39, 0x5E41, 0x5E41, 0x212E, 0x5E42, 0x5E42, 0x43A0, + 0x5E43, 0x5E43, 0x0C3A, 0x5E44, 0x5E44, 0x212D, 0x5E45, 0x5E45, 0x0C37, + 0x5E48, 0x5E48, 0x3A2C, 0x5E4A, 0x5E4A, 0x23C9, 0x5E4B, 0x5E4B, 0x23CB, + 0x5E4C, 0x5E4C, 0x0DFF, 0x5E4D, 0x5E4D, 0x23CA, 0x5E4E, 0x5E4E, 0x23C8, + 0x5E4F, 0x5E4F, 0x23C7, 0x5E53, 0x5E53, 0x2674, 0x5E54, 0x5E54, 0x0FC9, + 0x5E55, 0x5E55, 0x0FC7, 0x5E57, 0x5E57, 0x0FC8, 0x5E58, 0x5E59, 0x2672, + 0x5E5B, 0x5E5B, 0x0FC5, 0x5E5C, 0x5E5C, 0x28C7, 0x5E5D, 0x5E5D, 0x28C5, + 0x5E5E, 0x5E5E, 0x3A2B, 0x5E5F, 0x5E5F, 0x1139, 0x5E60, 0x5E60, 0x28C6, + 0x5E61, 0x5E61, 0x113A, 0x5E62, 0x5E62, 0x1138, 0x5E63, 0x5E63, 0x0FC6, + 0x5E66, 0x5E66, 0x2B38, 0x5E67, 0x5E68, 0x2B36, 0x5E69, 0x5E69, 0x28C4, + 0x5E6A, 0x5E6A, 0x2D5D, 0x5E6B, 0x5E6B, 0x13CD, 0x5E6C, 0x5E6C, 0x2D5C, + 0x5E6D, 0x5E6E, 0x2F1C, 0x5E6F, 0x5E6F, 0x2B39, 0x5E70, 0x5E70, 0x308D, + 0x5E72, 0x5E72, 0x028D, 0x5E73, 0x5E73, 0x033B, 0x5E74, 0x5E74, 0x03CB, + 0x5E75, 0x5E75, 0x17E4, 0x5E76, 0x5E76, 0x03CA, 0x5E78, 0x5E78, 0x05B1, + 0x5E79, 0x5E79, 0x0E00, 0x5E7A, 0x5E7A, 0x0227, 0x5E7B, 0x5E7B, 0x02CC, + 0x5E7C, 0x5E7C, 0x033C, 0x5E7D, 0x5E7D, 0x0711, 0x5E7E, 0x5E7E, 0x0C3B, + 0x5E7F, 0x5E7F, 0x0228, 0x5E80, 0x5E80, 0x17A5, 0x5E82, 0x5E82, 0x17A6, + 0x5E83, 0x5E83, 0x4108, 0x5E84, 0x5E84, 0x17E5, 0x5E86, 0x5E86, 0x4552, + 0x5E87, 0x5E87, 0x0490, 0x5E88, 0x5E88, 0x1877, 0x5E89, 0x5E89, 0x1875, + 0x5E8A, 0x5E8A, 0x0491, 0x5E8B, 0x5E8B, 0x1874, 0x5E8C, 0x5E8C, 0x1876, + 0x5E8D, 0x5E8D, 0x1878, 0x5E8F, 0x5E8F, 0x048F, 0x5E95, 0x5E96, 0x05B5, + 0x5E97, 0x5E97, 0x05B3, 0x5E9A, 0x5E9A, 0x05B2, 0x5E9B, 0x5E9B, 0x1AD2, + 0x5E9C, 0x5E9C, 0x05B4, 0x5EA0, 0x5EA0, 0x0712, 0x5EA2, 0x5EA2, 0x1AD1, + 0x5EA3, 0x5EA3, 0x1AD3, 0x5EA4, 0x5EA4, 0x1AD0, 0x5EA5, 0x5EA5, 0x1AD4, + 0x5EA6, 0x5EA6, 0x0713, 0x5EA7, 0x5EA7, 0x08AD, 0x5EA8, 0x5EA8, 0x1C88, + 0x5EAA, 0x5EAA, 0x1C8A, 0x5EAB, 0x5EAB, 0x08AB, 0x5EAC, 0x5EAC, 0x1C8B, + 0x5EAD, 0x5EAD, 0x08AC, 0x5EAE, 0x5EAE, 0x1C89, 0x5EB0, 0x5EB0, 0x1ACF, + 0x5EB1, 0x5EB1, 0x1ECE, 0x5EB2, 0x5EB3, 0x1ED1, 0x5EB4, 0x5EB4, 0x1ECF, + 0x5EB5, 0x5EB5, 0x0A73, 0x5EB6, 0x5EB6, 0x0A72, 0x5EB7, 0x5EB8, 0x0A70, + 0x5EB9, 0x5EB9, 0x1ED0, 0x5EBD, 0x5EBD, 0x43BD, 0x5EBE, 0x5EBE, 0x0A74, + 0x5EC1, 0x5EC2, 0x0C3D, 0x5EC4, 0x5EC4, 0x0C3F, 0x5EC5, 0x5EC5, 0x23CC, + 0x5EC6, 0x5EC6, 0x23CE, 0x5EC7, 0x5EC7, 0x23D0, 0x5EC8, 0x5EC8, 0x0E02, + 0x5EC9, 0x5EC9, 0x0E01, 0x5ECA, 0x5ECA, 0x0C3C, 0x5ECB, 0x5ECB, 0x23CF, + 0x5ECC, 0x5ECC, 0x23CD, 0x5ECD, 0x5ECD, 0x3A30, 0x5ECE, 0x5ECE, 0x2678, + 0x5ED0, 0x5ED0, 0x413D, 0x5ED1, 0x5ED1, 0x2676, 0x5ED2, 0x5ED2, 0x267C, + 0x5ED3, 0x5ED3, 0x0FCA, 0x5ED4, 0x5ED4, 0x267D, 0x5ED5, 0x5ED5, 0x267A, + 0x5ED6, 0x5ED6, 0x0FCB, 0x5ED7, 0x5ED7, 0x2677, 0x5ED8, 0x5ED8, 0x2675, + 0x5ED9, 0x5ED9, 0x267B, 0x5EDA, 0x5EDA, 0x113C, 0x5EDB, 0x5EDB, 0x28C9, + 0x5EDC, 0x5EDC, 0x2679, 0x5EDD, 0x5EDD, 0x113E, 0x5EDE, 0x5EDE, 0x28CA, + 0x5EDF, 0x5EDF, 0x113D, 0x5EE0, 0x5EE0, 0x1140, 0x5EE1, 0x5EE1, 0x28CB, + 0x5EE2, 0x5EE2, 0x113B, 0x5EE3, 0x5EE3, 0x113F, 0x5EE5, 0x5EE5, 0x2B3E, + 0x5EE6, 0x5EE6, 0x2B3C, 0x5EE7, 0x5EE7, 0x2B3B, 0x5EE8, 0x5EE8, 0x2B3D, + 0x5EE9, 0x5EE9, 0x2B3A, 0x5EEC, 0x5EEC, 0x157D, 0x5EEE, 0x5EEF, 0x31CF, + 0x5EF1, 0x5EF1, 0x32D0, 0x5EF2, 0x5EF2, 0x3380, 0x5EF3, 0x5EF3, 0x1742, + 0x5EF4, 0x5EF4, 0x0229, 0x5EF6, 0x5EF6, 0x05B7, 0x5EF7, 0x5EF7, 0x0492, + 0x5EF8, 0x5EF8, 0x386F, 0x5EF9, 0x5EF9, 0x4143, 0x5EFA, 0x5EFA, 0x0714, + 0x5EFB, 0x5EFB, 0x4144, 0x5EFC, 0x5EFC, 0x4146, 0x5EFE, 0x5EFE, 0x028E, + 0x5EFF, 0x5EFF, 0x02CD, 0x5F01, 0x5F01, 0x033D, 0x5F02, 0x5F02, 0x17E6, + 0x5F04, 0x5F04, 0x0493, 0x5F05, 0x5F05, 0x1879, 0x5F07, 0x5F07, 0x1AD5, + 0x5F08, 0x5F08, 0x0715, 0x5F0A, 0x5F0A, 0x0FCC, 0x5F0B, 0x5F0B, 0x028F, + 0x5F0C, 0x5F0C, 0x3A3E, 0x5F0D, 0x5F0D, 0x4149, 0x5F0E, 0x5F0E, 0x3A3F, + 0x5F0F, 0x5F0F, 0x03CC, 0x5F12, 0x5F12, 0x0E03, 0x5F13, 0x5F13, 0x0290, + 0x5F14, 0x5F15, 0x02CE, 0x5F17, 0x5F17, 0x033F, 0x5F18, 0x5F18, 0x033E, + 0x5F1A, 0x5F1A, 0x17E7, 0x5F1B, 0x5F1B, 0x03CD, 0x5F1D, 0x5F1D, 0x187A, + 0x5F1F, 0x5F1F, 0x0494, 0x5F22, 0x5F24, 0x1973, 0x5F25, 0x5F25, 0x4630, + 0x5F26, 0x5F27, 0x05B8, 0x5F28, 0x5F28, 0x1972, 0x5F29, 0x5F29, 0x05BA, + 0x5F2D, 0x5F2D, 0x0716, 0x5F2E, 0x5F2E, 0x1AD6, 0x5F30, 0x5F30, 0x1C8D, + 0x5F31, 0x5F31, 0x08AE, 0x5F33, 0x5F33, 0x1C8C, 0x5F35, 0x5F35, 0x0A75, + 0x5F36, 0x5F36, 0x1ED3, 0x5F37, 0x5F37, 0x0A76, 0x5F38, 0x5F38, 0x1ED4, + 0x5F3A, 0x5F3A, 0x414E, 0x5F3C, 0x5F3C, 0x0C40, 0x5F40, 0x5F40, 0x23D1, + 0x5F43, 0x5F43, 0x267F, 0x5F44, 0x5F44, 0x267E, 0x5F46, 0x5F46, 0x0FCD, + 0x5F48, 0x5F48, 0x1141, 0x5F49, 0x5F49, 0x28CC, 0x5F4A, 0x5F4A, 0x12AD, + 0x5F4B, 0x5F4B, 0x2B3F, 0x5F4C, 0x5F4C, 0x13CE, 0x5F4D, 0x5F4D, 0x3BA5, + 0x5F4E, 0x5F4E, 0x16C3, 0x5F4F, 0x5F4F, 0x3416, 0x5F50, 0x5F50, 0x022A, + 0x5F51, 0x5F51, 0x44E9, 0x5F54, 0x5F54, 0x1976, 0x5F56, 0x5F56, 0x1AD7, + 0x5F57, 0x5F57, 0x0A77, 0x5F58, 0x5F58, 0x212F, 0x5F59, 0x5F59, 0x0E04, + 0x5F5C, 0x5F5C, 0x3D5A, 0x5F5D, 0x5F5D, 0x14CF, 0x5F61, 0x5F61, 0x022B, + 0x5F62, 0x5F62, 0x0496, 0x5F63, 0x5F63, 0x4152, 0x5F64, 0x5F64, 0x0495, + 0x5F65, 0x5F65, 0x0717, 0x5F67, 0x5F67, 0x1C8E, 0x5F69, 0x5F69, 0x0A79, + 0x5F6A, 0x5F6A, 0x0B89, 0x5F6B, 0x5F6B, 0x0A7A, 0x5F6C, 0x5F6C, 0x0A78, + 0x5F6D, 0x5F6D, 0x0C41, 0x5F6F, 0x5F6F, 0x2680, 0x5F70, 0x5F70, 0x0FCE, + 0x5F71, 0x5F71, 0x1142, 0x5F72, 0x5F72, 0x4154, 0x5F73, 0x5F73, 0x1777, + 0x5F74, 0x5F74, 0x17E8, 0x5F76, 0x5F76, 0x187C, 0x5F77, 0x5F77, 0x0497, + 0x5F78, 0x5F78, 0x187B, 0x5F79, 0x5F79, 0x0498, 0x5F7B, 0x5F7B, 0x4058, + 0x5F7C, 0x5F7C, 0x05BE, 0x5F7D, 0x5F7D, 0x1979, 0x5F7E, 0x5F7E, 0x1978, + 0x5F7F, 0x5F7F, 0x05BD, 0x5F80, 0x5F81, 0x05BB, 0x5F82, 0x5F82, 0x1977, + 0x5F83, 0x5F83, 0x4631, 0x5F85, 0x5F85, 0x0719, 0x5F86, 0x5F86, 0x1AD8, + 0x5F87, 0x5F87, 0x071C, 0x5F88, 0x5F88, 0x0718, 0x5F89, 0x5F89, 0x071E, + 0x5F8A, 0x5F8B, 0x071A, 0x5F8C, 0x5F8C, 0x071D, 0x5F90, 0x5F90, 0x08B1, + 0x5F91, 0x5F91, 0x08B0, 0x5F92, 0x5F92, 0x08AF, 0x5F96, 0x5F96, 0x1ED6, + 0x5F97, 0x5F97, 0x0A7B, 0x5F98, 0x5F98, 0x0A7E, 0x5F99, 0x5F99, 0x0A7C, + 0x5F9B, 0x5F9B, 0x1ED5, 0x5F9C, 0x5F9C, 0x0A81, 0x5F9E, 0x5F9E, 0x0A7D, + 0x5F9F, 0x5F9F, 0x1ED7, 0x5FA0, 0x5FA0, 0x0A80, 0x5FA1, 0x5FA1, 0x0A7F, + 0x5FA4, 0x5FA4, 0x402C, 0x5FA5, 0x5FA5, 0x2131, 0x5FA6, 0x5FA6, 0x2130, + 0x5FA7, 0x5FA7, 0x4157, 0x5FA8, 0x5FA8, 0x0C44, 0x5FA9, 0x5FAA, 0x0C42, + 0x5FAB, 0x5FAB, 0x2132, 0x5FAC, 0x5FAC, 0x0E05, 0x5FAD, 0x5FAD, 0x23D3, + 0x5FAE, 0x5FAE, 0x0E06, 0x5FAF, 0x5FAF, 0x23D2, 0x5FB1, 0x5FB1, 0x3D98, + 0x5FB2, 0x5FB2, 0x28CD, 0x5FB5, 0x5FB5, 0x1144, 0x5FB6, 0x5FB6, 0x2681, + 0x5FB7, 0x5FB7, 0x1143, 0x5FB9, 0x5FB9, 0x0FCF, 0x5FBA, 0x5FBA, 0x3F9F, + 0x5FBB, 0x5FBB, 0x2B41, 0x5FBC, 0x5FBC, 0x2B40, 0x5FBD, 0x5FBD, 0x13CF, + 0x5FBE, 0x5FBE, 0x2D5E, 0x5FBF, 0x5FBF, 0x308E, 0x5FC0, 0x5FC1, 0x31D1, + 0x5FC3, 0x5FC3, 0x02D0, 0x5FC4, 0x5FC4, 0x44EA, 0x5FC5, 0x5FC5, 0x0340, + 0x5FC9, 0x5FC9, 0x17A7, 0x5FCC, 0x5FCC, 0x049A, 0x5FCD, 0x5FCD, 0x049C, + 0x5FCF, 0x5FCF, 0x17EB, 0x5FD0, 0x5FD0, 0x187F, 0x5FD1, 0x5FD1, 0x187E, + 0x5FD2, 0x5FD2, 0x187D, 0x5FD4, 0x5FD4, 0x17EA, 0x5FD5, 0x5FD5, 0x17E9, + 0x5FD6, 0x5FD6, 0x03CF, 0x5FD7, 0x5FD7, 0x049B, 0x5FD8, 0x5FD8, 0x0499, + 0x5FD9, 0x5FD9, 0x03CE, 0x5FDB, 0x5FDB, 0x3A4A, 0x5FDD, 0x5FDD, 0x05BF, + 0x5FDE, 0x5FDE, 0x197A, 0x5FDF, 0x5FDF, 0x41AF, 0x5FE0, 0x5FE0, 0x05C0, + 0x5FE1, 0x5FE1, 0x1884, 0x5FE3, 0x5FE3, 0x1886, 0x5FE4, 0x5FE4, 0x1885, + 0x5FE5, 0x5FE5, 0x197B, 0x5FE8, 0x5FE8, 0x1881, 0x5FEA, 0x5FEA, 0x04A0, + 0x5FEB, 0x5FEB, 0x049E, 0x5FED, 0x5FED, 0x1880, 0x5FEE, 0x5FEE, 0x1882, + 0x5FEF, 0x5FEF, 0x1888, 0x5FF1, 0x5FF1, 0x049D, 0x5FF3, 0x5FF3, 0x1883, + 0x5FF4, 0x5FF4, 0x188C, 0x5FF5, 0x5FF5, 0x05C2, 0x5FF7, 0x5FF7, 0x1889, + 0x5FF8, 0x5FF8, 0x049F, 0x5FFA, 0x5FFA, 0x1887, 0x5FFB, 0x5FFB, 0x188A, + 0x5FFD, 0x5FFD, 0x05C1, 0x5FFF, 0x5FFF, 0x05C3, 0x6000, 0x6000, 0x188B, + 0x6009, 0x6009, 0x198F, 0x600A, 0x600A, 0x1982, 0x600B, 0x600B, 0x1980, + 0x600C, 0x600C, 0x198E, 0x600D, 0x600D, 0x1989, 0x600E, 0x600E, 0x0723, + 0x600F, 0x600F, 0x05C4, 0x6010, 0x6010, 0x198A, 0x6011, 0x6011, 0x198D, + 0x6012, 0x6012, 0x071F, 0x6013, 0x6013, 0x198C, 0x6014, 0x6014, 0x05C5, + 0x6015, 0x6015, 0x05CA, 0x6016, 0x6016, 0x05C8, 0x6017, 0x6017, 0x1983, + 0x6019, 0x6019, 0x197E, 0x601A, 0x601A, 0x1985, 0x601B, 0x601B, 0x05CF, + 0x601C, 0x601C, 0x1990, 0x601D, 0x601D, 0x0720, 0x601E, 0x601E, 0x1986, + 0x6020, 0x6020, 0x0721, 0x6021, 0x6021, 0x05CB, 0x6022, 0x6022, 0x1988, + 0x6023, 0x6023, 0x4185, 0x6024, 0x6024, 0x1AE7, 0x6025, 0x6025, 0x0722, + 0x6026, 0x6026, 0x197D, 0x6027, 0x6027, 0x05CC, 0x6028, 0x6028, 0x0724, + 0x6029, 0x6029, 0x05CD, 0x602A, 0x602A, 0x05C9, 0x602B, 0x602B, 0x05CE, + 0x602C, 0x602C, 0x1987, 0x602D, 0x602D, 0x197C, 0x602E, 0x602E, 0x198B, + 0x602F, 0x602F, 0x05C6, 0x6031, 0x6031, 0x4161, 0x6032, 0x6032, 0x197F, + 0x6033, 0x6033, 0x1984, 0x6034, 0x6034, 0x1981, 0x6035, 0x6035, 0x05C7, + 0x6037, 0x6037, 0x1AD9, 0x6039, 0x6039, 0x1ADA, 0x603B, 0x603B, 0x4553, + 0x6040, 0x6040, 0x1AE4, 0x6041, 0x6041, 0x1C92, 0x6042, 0x6042, 0x1AE5, + 0x6043, 0x6043, 0x072A, 0x6044, 0x6044, 0x1AE8, 0x6045, 0x6045, 0x1ADE, + 0x6046, 0x6046, 0x0729, 0x6047, 0x6047, 0x1AE0, 0x6049, 0x6049, 0x1AE1, + 0x604A, 0x604A, 0x4074, 0x604C, 0x604C, 0x1AE3, 0x604D, 0x604D, 0x0725, + 0x6050, 0x6050, 0x08B5, 0x6052, 0x6052, 0x36EC, 0x6053, 0x6053, 0x1ADF, + 0x6054, 0x6054, 0x1ADB, 0x6055, 0x6055, 0x08B6, 0x6058, 0x6058, 0x1AE9, + 0x6059, 0x6059, 0x08B2, 0x605A, 0x605A, 0x1C90, 0x605B, 0x605B, 0x1AE2, + 0x605D, 0x605D, 0x1C8F, 0x605E, 0x605E, 0x1ADD, 0x605F, 0x605F, 0x1AE6, + 0x6062, 0x6062, 0x0728, 0x6063, 0x6063, 0x08B3, 0x6064, 0x6064, 0x072E, + 0x6065, 0x6065, 0x08B4, 0x6066, 0x6066, 0x1AEA, 0x6067, 0x6067, 0x1C91, + 0x6068, 0x6068, 0x0727, 0x6069, 0x6069, 0x08B8, 0x606A, 0x606A, 0x072D, + 0x606B, 0x606B, 0x072C, 0x606C, 0x606C, 0x072B, 0x606D, 0x606D, 0x08B7, + 0x606E, 0x606E, 0x1AEB, 0x606F, 0x606F, 0x08B9, 0x6070, 0x6070, 0x0726, + 0x6072, 0x6072, 0x1ADC, 0x6075, 0x6075, 0x3A56, 0x6077, 0x6077, 0x4005, + 0x607E, 0x607E, 0x3A47, 0x607F, 0x607F, 0x0A82, 0x6080, 0x6080, 0x1C95, + 0x6081, 0x6081, 0x1C97, 0x6083, 0x6083, 0x1C99, 0x6084, 0x6084, 0x08BA, + 0x6085, 0x6085, 0x08C0, 0x6086, 0x6086, 0x1EDA, 0x6087, 0x6087, 0x1C9D, + 0x6088, 0x6088, 0x1C94, 0x6089, 0x6089, 0x0A84, 0x608A, 0x608A, 0x1ED8, + 0x608C, 0x608C, 0x08BF, 0x608D, 0x608D, 0x08BD, 0x608E, 0x608E, 0x1C9F, + 0x6090, 0x6090, 0x1ED9, 0x6092, 0x6092, 0x1C96, 0x6094, 0x6094, 0x08BE, + 0x6095, 0x6095, 0x1C9A, 0x6096, 0x6096, 0x08C1, 0x6097, 0x6097, 0x1C9C, + 0x609A, 0x609A, 0x08BC, 0x609B, 0x609B, 0x1C9B, 0x609C, 0x609C, 0x1C9E, + 0x609D, 0x609D, 0x1C98, 0x609E, 0x609E, 0x416A, 0x609F, 0x609F, 0x08BB, + 0x60A0, 0x60A0, 0x0A85, 0x60A2, 0x60A2, 0x1C93, 0x60A3, 0x60A3, 0x0A83, + 0x60A4, 0x60A4, 0x4001, 0x60A7, 0x60A7, 0x3ADC, 0x60A8, 0x60A8, 0x0A86, + 0x60B0, 0x60B0, 0x1EDC, 0x60B1, 0x60B1, 0x1EE5, 0x60B2, 0x60B2, 0x0C47, + 0x60B3, 0x60B3, 0x416C, 0x60B4, 0x60B4, 0x0A88, 0x60B5, 0x60B5, 0x0A8D, + 0x60B6, 0x60B6, 0x0C48, 0x60B7, 0x60B7, 0x1EE7, 0x60B8, 0x60B8, 0x0A94, + 0x60B9, 0x60B9, 0x2134, 0x60BA, 0x60BA, 0x1EDD, 0x60BB, 0x60BB, 0x0A8C, + 0x60BC, 0x60BC, 0x0A8F, 0x60BD, 0x60BD, 0x0A8A, 0x60BE, 0x60BE, 0x1EDB, + 0x60BF, 0x60BF, 0x1EE9, 0x60C0, 0x60C0, 0x1EEC, 0x60C1, 0x60C1, 0x2143, + 0x60C3, 0x60C3, 0x1EEA, 0x60C4, 0x60C4, 0x2138, 0x60C5, 0x60C5, 0x0A8B, + 0x60C6, 0x60C6, 0x0A92, 0x60C7, 0x60C7, 0x0A96, 0x60C8, 0x60C8, 0x1EE4, + 0x60C9, 0x60C9, 0x2133, 0x60CA, 0x60CA, 0x1EE8, 0x60CB, 0x60CB, 0x0A87, + 0x60CC, 0x60CC, 0x2135, 0x60CD, 0x60CD, 0x1EEB, 0x60CE, 0x60CE, 0x2137, + 0x60CF, 0x60CF, 0x1EE0, 0x60D1, 0x60D1, 0x0C45, 0x60D3, 0x60D4, 0x1EDE, + 0x60D5, 0x60D5, 0x0A91, 0x60D7, 0x60D7, 0x4635, 0x60D8, 0x60D8, 0x0A90, + 0x60D9, 0x60D9, 0x1EE2, 0x60DA, 0x60DA, 0x0A95, 0x60DB, 0x60DB, 0x1EE6, + 0x60DC, 0x60DC, 0x0A8E, 0x60DD, 0x60DD, 0x1EE3, 0x60DE, 0x60DE, 0x3DCC, + 0x60DF, 0x60DF, 0x0A93, 0x60E0, 0x60E0, 0x0C49, 0x60E1, 0x60E1, 0x0C46, + 0x60E2, 0x60E2, 0x2136, 0x60E3, 0x60E3, 0x3D75, 0x60E4, 0x60E4, 0x1EE1, + 0x60E6, 0x60E6, 0x0A89, 0x60E7, 0x60E7, 0x3D84, 0x60E8, 0x60E8, 0x3D7B, + 0x60E9, 0x60E9, 0x4009, 0x60F0, 0x60F0, 0x0C4E, 0x60F1, 0x60F1, 0x0C52, + 0x60F2, 0x60F2, 0x213A, 0x60F3, 0x60F3, 0x0E0B, 0x60F4, 0x60F4, 0x0C50, + 0x60F5, 0x60F5, 0x213E, 0x60F6, 0x60F6, 0x0C54, 0x60F7, 0x60F7, 0x23D4, + 0x60F8, 0x60F8, 0x2140, 0x60F9, 0x60F9, 0x0E0D, 0x60FA, 0x60FA, 0x0C4C, + 0x60FB, 0x60FB, 0x0C4F, 0x60FC, 0x60FC, 0x2141, 0x60FD, 0x60FD, 0x3FA8, + 0x60FE, 0x60FE, 0x2142, 0x60FF, 0x60FF, 0x2148, 0x6100, 0x6100, 0x0C56, + 0x6101, 0x6101, 0x0E0E, 0x6103, 0x6103, 0x2144, 0x6104, 0x6104, 0x2149, + 0x6105, 0x6105, 0x213D, 0x6106, 0x6106, 0x0E18, 0x6107, 0x6107, 0x3C35, + 0x6108, 0x6108, 0x0E0F, 0x6109, 0x6109, 0x0C55, 0x610A, 0x610A, 0x213B, + 0x610B, 0x610B, 0x214A, 0x610C, 0x610C, 0x3C87, 0x610D, 0x610D, 0x0E17, + 0x610E, 0x610E, 0x0C53, 0x610F, 0x610F, 0x0E08, 0x6110, 0x6110, 0x2147, + 0x6112, 0x6112, 0x0C57, 0x6113, 0x6113, 0x213F, 0x6114, 0x6114, 0x2139, + 0x6115, 0x6115, 0x0C4D, 0x6116, 0x6116, 0x213C, 0x6118, 0x6118, 0x2145, + 0x6119, 0x6119, 0x3EF6, 0x611A, 0x611A, 0x0E07, 0x611B, 0x611B, 0x0E0C, + 0x611C, 0x611C, 0x0C4A, 0x611D, 0x611D, 0x2146, 0x611F, 0x611F, 0x0E0A, + 0x6123, 0x6123, 0x0C4B, 0x6127, 0x6127, 0x0E16, 0x6128, 0x6128, 0x2683, + 0x6129, 0x6129, 0x23DF, 0x612B, 0x612B, 0x23D7, 0x612C, 0x612C, 0x2682, + 0x612E, 0x612E, 0x23DB, 0x612F, 0x612F, 0x23DD, 0x6130, 0x6130, 0x3F37, + 0x6132, 0x6132, 0x23DA, 0x6134, 0x6134, 0x0E15, 0x6136, 0x6136, 0x23D9, + 0x6137, 0x6137, 0x0E19, 0x613B, 0x613B, 0x2692, 0x613D, 0x613D, 0x4636, + 0x613E, 0x613E, 0x0E14, 0x613F, 0x613F, 0x0FD1, 0x6140, 0x6140, 0x23E0, + 0x6141, 0x6141, 0x2684, 0x6142, 0x6142, 0x4174, 0x6144, 0x6144, 0x0E12, + 0x6145, 0x6145, 0x23D8, 0x6146, 0x6146, 0x23DC, 0x6147, 0x6147, 0x0FD0, + 0x6148, 0x6148, 0x0E09, 0x6149, 0x614A, 0x23D5, 0x614B, 0x614B, 0x0FD2, + 0x614C, 0x614C, 0x0E11, 0x614D, 0x614D, 0x0E13, 0x614E, 0x614E, 0x0E10, + 0x614F, 0x614F, 0x23DE, 0x6150, 0x6150, 0x3C32, 0x6152, 0x6153, 0x2688, + 0x6154, 0x6154, 0x268E, 0x6155, 0x6155, 0x1149, 0x6156, 0x6156, 0x2695, + 0x6158, 0x6158, 0x0FD8, 0x6159, 0x6159, 0x3FBA, 0x615A, 0x615A, 0x0FD7, + 0x615B, 0x615B, 0x2690, 0x615C, 0x615C, 0x4186, 0x615D, 0x615D, 0x1148, + 0x615E, 0x615E, 0x2685, 0x615F, 0x615F, 0x0FD6, 0x6160, 0x6160, 0x494C, + 0x6161, 0x6161, 0x2694, 0x6162, 0x6163, 0x0FD4, 0x6164, 0x6164, 0x4173, + 0x6165, 0x6165, 0x2691, 0x6166, 0x6166, 0x28DE, 0x6167, 0x6167, 0x1146, + 0x6168, 0x6168, 0x0C51, 0x616A, 0x616A, 0x2693, 0x616B, 0x616B, 0x114D, + 0x616C, 0x616C, 0x268B, 0x616E, 0x616E, 0x1147, 0x616F, 0x616F, 0x3FC0, + 0x6170, 0x6170, 0x114C, 0x6171, 0x6171, 0x2686, 0x6172, 0x6172, 0x268A, + 0x6173, 0x6173, 0x2687, 0x6174, 0x6174, 0x268D, 0x6175, 0x6175, 0x0FD9, + 0x6176, 0x6176, 0x1145, 0x6177, 0x6177, 0x0FD3, 0x6179, 0x6179, 0x28D0, + 0x617A, 0x617A, 0x268F, 0x617C, 0x617C, 0x114B, 0x617D, 0x617D, 0x3FBD, + 0x617E, 0x617E, 0x114E, 0x6180, 0x6180, 0x268C, 0x6181, 0x6181, 0x4177, + 0x6182, 0x6182, 0x114A, 0x6183, 0x6183, 0x28CF, 0x6187, 0x6187, 0x417A, + 0x6189, 0x6189, 0x28D4, 0x618A, 0x618A, 0x12B1, 0x618B, 0x618B, 0x28CE, + 0x618C, 0x618C, 0x2B4D, 0x618D, 0x618D, 0x28DD, 0x618E, 0x618E, 0x1152, + 0x6190, 0x6190, 0x1150, 0x6191, 0x6191, 0x12AF, 0x6192, 0x6192, 0x28DA, + 0x6193, 0x6193, 0x28D6, 0x6194, 0x6194, 0x1156, 0x6195, 0x6195, 0x3DE0, + 0x6196, 0x6196, 0x2B44, 0x6198, 0x6198, 0x3A55, 0x6199, 0x6199, 0x3A54, + 0x619A, 0x619A, 0x1154, 0x619B, 0x619B, 0x28D5, 0x619C, 0x619C, 0x4002, + 0x619D, 0x619D, 0x2B42, 0x619F, 0x619F, 0x28D9, 0x61A1, 0x61A1, 0x28DC, + 0x61A2, 0x61A2, 0x28D3, 0x61A4, 0x61A4, 0x1155, 0x61A7, 0x61A7, 0x114F, + 0x61A8, 0x61A8, 0x2B43, 0x61A9, 0x61A9, 0x12B0, 0x61AA, 0x61AA, 0x28DB, + 0x61AB, 0x61AB, 0x1151, 0x61AC, 0x61AC, 0x1153, 0x61AD, 0x61AD, 0x28D8, + 0x61AE, 0x61AE, 0x1157, 0x61AF, 0x61AF, 0x28D7, 0x61B0, 0x61B0, 0x28D2, + 0x61B1, 0x61B1, 0x28D1, 0x61B2, 0x61B2, 0x12AE, 0x61B3, 0x61B3, 0x28DF, + 0x61B4, 0x61B4, 0x2B46, 0x61B5, 0x61B5, 0x2D60, 0x61B6, 0x61B6, 0x12B3, + 0x61B7, 0x61B7, 0x4639, 0x61B8, 0x61B8, 0x2B4C, 0x61B9, 0x61B9, 0x43BF, + 0x61BA, 0x61BA, 0x2B4A, 0x61BC, 0x61BC, 0x2D61, 0x61BE, 0x61BE, 0x12B4, + 0x61BF, 0x61BF, 0x2B4B, 0x61C0, 0x61C0, 0x3A50, 0x61C1, 0x61C1, 0x2B48, + 0x61C2, 0x61C2, 0x13D1, 0x61C3, 0x61C3, 0x2D5F, 0x61C5, 0x61C5, 0x2B45, + 0x61C6, 0x61C6, 0x2B47, 0x61C7, 0x61C7, 0x13D2, 0x61C8, 0x61C8, 0x12B6, + 0x61C9, 0x61C9, 0x13D0, 0x61CA, 0x61CA, 0x12B5, 0x61CB, 0x61CB, 0x13D4, + 0x61CC, 0x61CC, 0x2B49, 0x61CD, 0x61CD, 0x12B2, 0x61CF, 0x61CF, 0x463A, + 0x61D0, 0x61D0, 0x4181, 0x61D3, 0x61D3, 0x417E, 0x61D6, 0x61D6, 0x2F26, + 0x61D8, 0x61D8, 0x2F1E, 0x61DA, 0x61DA, 0x38B1, 0x61DE, 0x61DE, 0x2D67, + 0x61DF, 0x61DF, 0x2F1F, 0x61E0, 0x61E0, 0x2D63, 0x61E2, 0x61E2, 0x3FC5, + 0x61E3, 0x61E3, 0x14D0, 0x61E4, 0x61E4, 0x2D65, 0x61E5, 0x61E5, 0x2D64, + 0x61E6, 0x61E6, 0x13D3, 0x61E7, 0x61E7, 0x2D62, 0x61E8, 0x61E8, 0x2D66, + 0x61E9, 0x61E9, 0x2F27, 0x61EA, 0x61EA, 0x2F23, 0x61EB, 0x61EB, 0x2F25, + 0x61ED, 0x61EE, 0x2F20, 0x61F0, 0x61F0, 0x2F24, 0x61F1, 0x61F1, 0x2F22, + 0x61F2, 0x61F2, 0x157E, 0x61F5, 0x61F5, 0x1581, 0x61F6, 0x61F6, 0x1580, + 0x61F7, 0x61F7, 0x157F, 0x61F8, 0x61F8, 0x1614, 0x61F9, 0x61F9, 0x31D3, + 0x61FA, 0x61FA, 0x1615, 0x61FB, 0x61FB, 0x308F, 0x61FC, 0x61FC, 0x1670, + 0x61FD, 0x61FD, 0x32D1, 0x61FE, 0x61FE, 0x1671, 0x61FF, 0x61FF, 0x16C4, + 0x6200, 0x6200, 0x16F8, 0x6201, 0x6201, 0x3417, 0x6203, 0x6204, 0x3418, + 0x6207, 0x6207, 0x3533, 0x6208, 0x6208, 0x02D1, 0x6209, 0x6209, 0x17A8, + 0x620A, 0x620A, 0x0341, 0x620C, 0x620D, 0x03D1, 0x620E, 0x620E, 0x03D0, + 0x6210, 0x6210, 0x03D3, 0x6211, 0x6211, 0x04A2, 0x6212, 0x6212, 0x04A1, + 0x6214, 0x6214, 0x1991, 0x6215, 0x6215, 0x05D1, 0x6216, 0x6216, 0x05D0, + 0x6219, 0x6219, 0x1CA0, 0x621A, 0x621B, 0x0A97, 0x621F, 0x621F, 0x0C58, + 0x6220, 0x6220, 0x23E1, 0x6221, 0x6222, 0x0E1A, 0x6223, 0x6223, 0x23E3, + 0x6224, 0x6224, 0x23E5, 0x6225, 0x6225, 0x23E4, 0x6227, 0x6227, 0x2697, + 0x6229, 0x6229, 0x2696, 0x622A, 0x622A, 0x0FDA, 0x622B, 0x622B, 0x2698, + 0x622C, 0x622C, 0x463C, 0x622D, 0x622D, 0x28E0, 0x622E, 0x622E, 0x1158, + 0x6230, 0x6230, 0x12B7, 0x6232, 0x6232, 0x13D5, 0x6233, 0x6233, 0x14D1, + 0x6234, 0x6234, 0x13D6, 0x6236, 0x6236, 0x02D2, 0x6237, 0x6237, 0x451A, + 0x6239, 0x6239, 0x3FC2, 0x623A, 0x623A, 0x188D, 0x623D, 0x623D, 0x1992, + 0x623E, 0x623E, 0x05D3, 0x623F, 0x623F, 0x05D2, 0x6240, 0x6240, 0x05D4, + 0x6241, 0x6241, 0x072F, 0x6242, 0x6243, 0x1AEC, 0x6246, 0x6246, 0x1CA1, + 0x6247, 0x6247, 0x08C2, 0x6248, 0x6248, 0x0A99, 0x6249, 0x6249, 0x0C59, + 0x624A, 0x624A, 0x214B, 0x624B, 0x624B, 0x02D3, 0x624C, 0x624C, 0x44EC, + 0x624D, 0x624D, 0x0291, 0x624E, 0x624E, 0x02D4, 0x6250, 0x6250, 0x17A9, + 0x6251, 0x6251, 0x0345, 0x6252, 0x6252, 0x0344, 0x6253, 0x6254, 0x0342, + 0x6258, 0x6258, 0x03D6, 0x6259, 0x6259, 0x17F2, 0x625A, 0x625A, 0x17F4, + 0x625B, 0x625B, 0x03D5, 0x625C, 0x625C, 0x17EC, 0x625E, 0x625E, 0x17ED, + 0x6260, 0x6260, 0x17F3, 0x6261, 0x6261, 0x17EF, 0x6262, 0x6262, 0x17F1, + 0x6263, 0x6263, 0x03D4, 0x6264, 0x6264, 0x17EE, 0x6265, 0x6265, 0x17F5, + 0x6266, 0x6266, 0x17F0, 0x6268, 0x6268, 0x3F15, 0x626D, 0x626D, 0x04A9, + 0x626E, 0x626E, 0x04B2, 0x626F, 0x626F, 0x04B0, 0x6270, 0x6270, 0x1897, + 0x6271, 0x6271, 0x1894, 0x6272, 0x6272, 0x189C, 0x6273, 0x6273, 0x04AE, + 0x6274, 0x6274, 0x189D, 0x6276, 0x6276, 0x04A7, 0x6277, 0x6277, 0x189A, + 0x6279, 0x6279, 0x04AD, 0x627A, 0x627A, 0x1896, 0x627B, 0x627B, 0x1895, + 0x627C, 0x627C, 0x04AB, 0x627D, 0x627D, 0x189B, 0x627E, 0x627E, 0x04AC, + 0x627F, 0x627F, 0x05D5, 0x6280, 0x6280, 0x04A6, 0x6281, 0x6281, 0x1898, + 0x6282, 0x6282, 0x3F86, 0x6283, 0x6283, 0x188E, 0x6284, 0x6284, 0x04A3, + 0x6285, 0x6285, 0x3F50, 0x6286, 0x6286, 0x04B6, 0x6287, 0x6287, 0x1893, + 0x6288, 0x6288, 0x1899, 0x6289, 0x6289, 0x04A8, 0x628A, 0x628A, 0x04AA, + 0x628C, 0x628C, 0x188F, 0x628E, 0x628F, 0x1890, 0x6290, 0x6290, 0x43C0, + 0x6291, 0x6291, 0x04B5, 0x6292, 0x6292, 0x04AF, 0x6293, 0x6293, 0x04B4, + 0x6294, 0x6294, 0x1892, 0x6295, 0x6295, 0x04B3, 0x6296, 0x6296, 0x04A5, + 0x6297, 0x6297, 0x04A4, 0x6298, 0x6298, 0x04B1, 0x629D, 0x629D, 0x3E96, + 0x62A4, 0x62A4, 0x3A69, 0x62A6, 0x62A6, 0x3FC1, 0x62A8, 0x62A8, 0x05E3, + 0x62A9, 0x62A9, 0x199E, 0x62AA, 0x62AA, 0x1997, 0x62AB, 0x62AB, 0x05DE, + 0x62AC, 0x62AC, 0x05F1, 0x62AD, 0x62AD, 0x1993, 0x62AE, 0x62AE, 0x199A, + 0x62AF, 0x62AF, 0x199C, 0x62B0, 0x62B0, 0x199F, 0x62B1, 0x62B1, 0x05EC, + 0x62B3, 0x62B3, 0x199B, 0x62B4, 0x62B4, 0x1994, 0x62B5, 0x62B5, 0x05EA, + 0x62B6, 0x62B6, 0x1998, 0x62B8, 0x62B8, 0x19A0, 0x62B9, 0x62B9, 0x05DB, + 0x62BB, 0x62BB, 0x199D, 0x62BC, 0x62BC, 0x05E5, 0x62BD, 0x62BD, 0x05E4, + 0x62BE, 0x62BE, 0x1996, 0x62BF, 0x62BF, 0x05D9, 0x62C2, 0x62C2, 0x05DA, + 0x62C3, 0x62C3, 0x3D8F, 0x62C4, 0x62C4, 0x05D8, 0x62C5, 0x62C5, 0x418A, + 0x62C6, 0x62C6, 0x05F0, 0x62C7, 0x62C7, 0x05E8, 0x62C8, 0x62C8, 0x05E2, + 0x62C9, 0x62C9, 0x05D6, 0x62CA, 0x62CA, 0x1999, 0x62CB, 0x62CB, 0x05E1, + 0x62CC, 0x62CC, 0x05D7, 0x62CD, 0x62CD, 0x05E9, 0x62CE, 0x62CE, 0x05F2, + 0x62CF, 0x62CF, 0x1AEE, 0x62D0, 0x62D0, 0x05E6, 0x62D1, 0x62D1, 0x1995, + 0x62D2, 0x62D2, 0x05DC, 0x62D3, 0x62D4, 0x05DF, 0x62D5, 0x62D5, 0x418C, + 0x62D6, 0x62D7, 0x05EE, 0x62D8, 0x62D8, 0x05ED, 0x62D9, 0x62D9, 0x05E7, + 0x62DA, 0x62DA, 0x05EB, 0x62DB, 0x62DB, 0x05DD, 0x62DC, 0x62DC, 0x0730, + 0x62DF, 0x62DF, 0x401C, 0x62E5, 0x62E5, 0x463D, 0x62EB, 0x62EB, 0x1AF4, + 0x62EC, 0x62EC, 0x073C, 0x62ED, 0x62ED, 0x0734, 0x62EE, 0x62EE, 0x0736, + 0x62EF, 0x62EF, 0x073B, 0x62F0, 0x62F0, 0x1B00, 0x62F1, 0x62F1, 0x0739, + 0x62F2, 0x62F2, 0x1CA2, 0x62F3, 0x62F3, 0x08C3, 0x62F4, 0x62F4, 0x073E, + 0x62F5, 0x62F5, 0x1AF1, 0x62F6, 0x62F6, 0x1AF9, 0x62F7, 0x62F7, 0x073A, + 0x62F8, 0x62F8, 0x1AF8, 0x62F9, 0x62F9, 0x1AF5, 0x62FA, 0x62FA, 0x1AFD, + 0x62FB, 0x62FB, 0x1AFF, 0x62FC, 0x62FC, 0x0733, 0x62FD, 0x62FD, 0x0737, + 0x62FE, 0x62FE, 0x073D, 0x62FF, 0x62FF, 0x08C5, 0x6300, 0x6300, 0x1AFA, + 0x6301, 0x6301, 0x0735, 0x6302, 0x6302, 0x0740, 0x6303, 0x6303, 0x1AF3, + 0x6307, 0x6307, 0x0738, 0x6308, 0x6308, 0x08C4, 0x6309, 0x6309, 0x0732, + 0x630B, 0x630B, 0x1AF0, 0x630C, 0x630C, 0x1AF7, 0x630D, 0x630D, 0x1AEF, + 0x630E, 0x630E, 0x1AF2, 0x630F, 0x630F, 0x1AF6, 0x6310, 0x6310, 0x1CA3, + 0x6311, 0x6311, 0x073F, 0x6313, 0x6314, 0x1AFB, 0x6315, 0x6315, 0x1AFE, + 0x6316, 0x6316, 0x0731, 0x6318, 0x6318, 0x43C1, 0x6328, 0x6328, 0x08D3, + 0x6329, 0x6329, 0x1CAF, 0x632A, 0x632B, 0x08D1, 0x632C, 0x632C, 0x1CA5, + 0x632D, 0x632D, 0x1CB5, 0x632E, 0x632E, 0x3EDD, 0x632F, 0x632F, 0x08C8, + 0x6331, 0x6331, 0x3A65, 0x6332, 0x6332, 0x1EED, 0x6333, 0x6333, 0x1CB7, + 0x6334, 0x6334, 0x1CB1, 0x6335, 0x6335, 0x3F16, 0x6336, 0x6336, 0x1CA8, + 0x6337, 0x6337, 0x3A63, 0x6338, 0x6338, 0x1CBA, 0x6339, 0x6339, 0x1CAB, + 0x633A, 0x633A, 0x08CE, 0x633B, 0x633B, 0x1F04, 0x633C, 0x633C, 0x1CAE, + 0x633D, 0x633D, 0x08D0, 0x633E, 0x633E, 0x08C7, 0x6340, 0x6340, 0x1CBC, + 0x6341, 0x6341, 0x1CB0, 0x6342, 0x6342, 0x08CA, 0x6343, 0x6343, 0x1CA9, + 0x6344, 0x6345, 0x1CA6, 0x6346, 0x6346, 0x08CB, 0x6347, 0x6347, 0x1CB6, + 0x6348, 0x6348, 0x1CBD, 0x6349, 0x6349, 0x08CD, 0x634A, 0x634A, 0x1CAD, + 0x634B, 0x634B, 0x1CAC, 0x634C, 0x634C, 0x08D5, 0x634D, 0x634D, 0x08D4, + 0x634E, 0x634E, 0x08C6, 0x634F, 0x634F, 0x08CC, 0x6350, 0x6350, 0x08CF, + 0x6351, 0x6351, 0x1CB9, 0x6354, 0x6354, 0x1CB3, 0x6355, 0x6355, 0x08C9, + 0x6356, 0x6356, 0x1CA4, 0x6357, 0x6357, 0x1CBB, 0x6358, 0x6358, 0x1CB2, + 0x6359, 0x6359, 0x1CB4, 0x635A, 0x635A, 0x1CB8, 0x6364, 0x6364, 0x3FC7, + 0x6365, 0x6365, 0x1EEE, 0x6367, 0x6367, 0x0AA1, 0x6368, 0x6368, 0x0AB5, + 0x6369, 0x6369, 0x0AB4, 0x636B, 0x636B, 0x0AA9, 0x636C, 0x636C, 0x418E, + 0x636D, 0x636D, 0x1F00, 0x636E, 0x636E, 0x1EFC, 0x636F, 0x636F, 0x1EF9, + 0x6370, 0x6370, 0x1F0B, 0x6371, 0x6371, 0x0AA4, 0x6372, 0x6372, 0x0A9C, + 0x6375, 0x6375, 0x1EFE, 0x6376, 0x6376, 0x0C69, 0x6377, 0x6377, 0x0AA0, + 0x6378, 0x6378, 0x1F06, 0x6379, 0x6379, 0x4367, 0x637A, 0x637A, 0x0AB6, + 0x637B, 0x637B, 0x0AB3, 0x637C, 0x637C, 0x1F02, 0x637D, 0x637D, 0x1EF1, + 0x637F, 0x637F, 0x3F4B, 0x6380, 0x6380, 0x0AB2, 0x6381, 0x6381, 0x1F08, + 0x6382, 0x6382, 0x1EF0, 0x6383, 0x6383, 0x0AA7, 0x6384, 0x6384, 0x0AAB, + 0x6385, 0x6385, 0x1F07, 0x6387, 0x6387, 0x1EFA, 0x6388, 0x6388, 0x0AAC, + 0x6389, 0x6389, 0x0AA6, 0x638A, 0x638A, 0x1EEF, 0x638B, 0x638B, 0x4188, + 0x638C, 0x638C, 0x0C5B, 0x638D, 0x638D, 0x1F0A, 0x638E, 0x638E, 0x1EF8, + 0x638F, 0x638F, 0x0AB1, 0x6390, 0x6390, 0x1EFB, 0x6391, 0x6391, 0x1F09, + 0x6392, 0x6392, 0x0AB0, 0x6394, 0x6394, 0x214C, 0x6396, 0x6396, 0x0A9D, + 0x6397, 0x6397, 0x1EF6, 0x6398, 0x6398, 0x0AA2, 0x6399, 0x6399, 0x0AAD, + 0x639B, 0x639B, 0x0AA8, 0x639C, 0x639C, 0x1EFF, 0x639D, 0x639D, 0x1EF5, + 0x639E, 0x639E, 0x1EF3, 0x639F, 0x639F, 0x1F05, 0x63A0, 0x63A0, 0x0A9A, + 0x63A1, 0x63A1, 0x0AAE, 0x63A2, 0x63A2, 0x0A9E, 0x63A3, 0x63A3, 0x0C5A, + 0x63A4, 0x63A4, 0x1F03, 0x63A5, 0x63A5, 0x0A9F, 0x63A7, 0x63A7, 0x0A9B, + 0x63A8, 0x63A8, 0x0AAA, 0x63A9, 0x63A9, 0x0AA5, 0x63AA, 0x63AA, 0x0AA3, + 0x63AB, 0x63AB, 0x1EF7, 0x63AC, 0x63AC, 0x0AAF, 0x63AD, 0x63AD, 0x1EF4, + 0x63AE, 0x63AE, 0x1F01, 0x63AF, 0x63AF, 0x1EFD, 0x63B0, 0x63B0, 0x214E, + 0x63B1, 0x63B1, 0x214D, 0x63B9, 0x63B9, 0x3E9D, 0x63BD, 0x63BD, 0x1EF2, + 0x63BE, 0x63BE, 0x215E, 0x63C0, 0x63C0, 0x0C5D, 0x63C1, 0x63C1, 0x46A8, + 0x63C2, 0x63C2, 0x2164, 0x63C3, 0x63C3, 0x2153, 0x63C4, 0x63C4, 0x2161, + 0x63C5, 0x63C5, 0x23E6, 0x63C6, 0x63C6, 0x0C60, 0x63C7, 0x63C7, 0x2165, + 0x63C8, 0x63C8, 0x2168, 0x63C9, 0x63C9, 0x0C5F, 0x63CA, 0x63CA, 0x2156, + 0x63CB, 0x63CB, 0x2167, 0x63CC, 0x63CC, 0x2166, 0x63CD, 0x63CD, 0x0C61, + 0x63CE, 0x63CE, 0x214F, 0x63CF, 0x63CF, 0x0C5C, 0x63D0, 0x63D0, 0x0C64, + 0x63D1, 0x63D1, 0x3A66, 0x63D2, 0x63D2, 0x0C62, 0x63D3, 0x63D3, 0x2163, + 0x63D5, 0x63D5, 0x2159, 0x63D6, 0x63D6, 0x0C66, 0x63D7, 0x63D7, 0x216A, + 0x63D8, 0x63D8, 0x2162, 0x63D9, 0x63D9, 0x216B, 0x63DA, 0x63DA, 0x0C6E, + 0x63DB, 0x63DB, 0x0C6C, 0x63DC, 0x63DC, 0x2160, 0x63DD, 0x63DD, 0x215F, + 0x63DE, 0x63DE, 0x3E60, 0x63DF, 0x63DF, 0x215D, 0x63E0, 0x63E0, 0x2157, + 0x63E1, 0x63E1, 0x0C65, 0x63E2, 0x63E2, 0x4641, 0x63E3, 0x63E3, 0x0C63, + 0x63E4, 0x63E4, 0x1CAA, 0x63E5, 0x63E5, 0x2150, 0x63E6, 0x63E6, 0x489F, + 0x63E7, 0x63E7, 0x2404, 0x63E8, 0x63E8, 0x2151, 0x63E9, 0x63E9, 0x0C5E, + 0x63EA, 0x63EA, 0x0C6B, 0x63EB, 0x63EB, 0x23E8, 0x63ED, 0x63EE, 0x0C67, + 0x63EF, 0x63EF, 0x2152, 0x63F0, 0x63F0, 0x2169, 0x63F1, 0x63F1, 0x23E7, + 0x63F2, 0x63F2, 0x215A, 0x63F3, 0x63F3, 0x2155, 0x63F4, 0x63F4, 0x0C6A, + 0x63F5, 0x63F5, 0x215B, 0x63F6, 0x63F6, 0x2158, 0x63F8, 0x63F8, 0x4192, + 0x63F9, 0x63F9, 0x0C6F, 0x63FB, 0x63FB, 0x4642, 0x63FC, 0x63FC, 0x3E9C, + 0x63FE, 0x63FE, 0x3E9E, 0x6406, 0x6406, 0x0E2A, 0x6407, 0x6407, 0x4643, + 0x6409, 0x6409, 0x23EB, 0x640A, 0x640A, 0x23FE, 0x640B, 0x640B, 0x2403, + 0x640C, 0x640C, 0x23F7, 0x640D, 0x640D, 0x0E26, 0x640E, 0x640E, 0x2408, + 0x640F, 0x640F, 0x0E23, 0x6410, 0x6410, 0x23E9, 0x6412, 0x6412, 0x23EA, + 0x6413, 0x6413, 0x0E1C, 0x6414, 0x6414, 0x0E25, 0x6415, 0x6415, 0x23F1, + 0x6416, 0x6417, 0x0E28, 0x6418, 0x6418, 0x23F2, 0x641A, 0x641A, 0x23FF, + 0x641B, 0x641B, 0x2405, 0x641C, 0x641C, 0x0E24, 0x641E, 0x641E, 0x0E1E, + 0x641F, 0x641F, 0x23F0, 0x6420, 0x6420, 0x23EC, 0x6421, 0x6421, 0x2407, + 0x6422, 0x6423, 0x23F5, 0x6424, 0x6424, 0x23ED, 0x6425, 0x6425, 0x2401, + 0x6426, 0x6426, 0x23F8, 0x6427, 0x6427, 0x2402, 0x6428, 0x6428, 0x23FA, + 0x642A, 0x642A, 0x0E1F, 0x642B, 0x642B, 0x2699, 0x642C, 0x642C, 0x0E22, + 0x642D, 0x642D, 0x0E20, 0x642E, 0x642E, 0x2406, 0x642F, 0x642F, 0x23FD, + 0x6430, 0x6430, 0x23F9, 0x6432, 0x6432, 0x45D9, 0x6433, 0x6433, 0x23EE, + 0x6434, 0x6434, 0x0FE4, 0x6435, 0x6435, 0x23FC, 0x6436, 0x6436, 0x0E27, + 0x6437, 0x6437, 0x23F4, 0x6438, 0x6438, 0x4191, 0x6439, 0x6439, 0x23F3, + 0x643A, 0x643A, 0x419D, 0x643B, 0x643B, 0x3A6B, 0x643D, 0x643D, 0x0E21, + 0x643E, 0x643E, 0x0E1D, 0x643F, 0x643F, 0x26AE, 0x6440, 0x6440, 0x2400, + 0x6441, 0x6441, 0x23FB, 0x6443, 0x6443, 0x23EF, 0x644B, 0x644B, 0x26A9, + 0x644D, 0x644D, 0x269A, 0x644E, 0x644E, 0x26A5, 0x6450, 0x6450, 0x26AC, + 0x6451, 0x6451, 0x0FE2, 0x6452, 0x6452, 0x0C6D, 0x6453, 0x6453, 0x26AA, + 0x6454, 0x6454, 0x0FDD, 0x6458, 0x6458, 0x0FDC, 0x6459, 0x6459, 0x26B1, + 0x645A, 0x645A, 0x43C2, 0x645B, 0x645B, 0x269B, 0x645C, 0x645C, 0x26A8, + 0x645D, 0x645D, 0x269C, 0x645E, 0x645E, 0x26A7, 0x645F, 0x645F, 0x0FE0, + 0x6460, 0x6460, 0x26AB, 0x6461, 0x6461, 0x215C, 0x6465, 0x6465, 0x26B2, + 0x6466, 0x6466, 0x26A3, 0x6467, 0x6467, 0x0FE3, 0x6468, 0x6468, 0x28EE, + 0x6469, 0x6469, 0x1159, 0x646B, 0x646B, 0x26B0, 0x646C, 0x646C, 0x26AF, + 0x646D, 0x646D, 0x0FE5, 0x646E, 0x646E, 0x28E1, 0x646F, 0x646F, 0x115A, + 0x6470, 0x6470, 0x28E2, 0x6471, 0x6471, 0x3A5B, 0x6472, 0x6473, 0x269F, + 0x6474, 0x6474, 0x269D, 0x6475, 0x6475, 0x26A2, 0x6476, 0x6476, 0x269E, + 0x6477, 0x6477, 0x26B3, 0x6478, 0x6478, 0x0FDF, 0x6479, 0x6479, 0x115B, + 0x647A, 0x647A, 0x0FE1, 0x647B, 0x647B, 0x0FE6, 0x647C, 0x647C, 0x436C, + 0x647D, 0x647D, 0x26A1, 0x647F, 0x647F, 0x26AD, 0x6482, 0x6482, 0x26A6, + 0x6485, 0x6485, 0x28E5, 0x6487, 0x6487, 0x0FDB, 0x6488, 0x6488, 0x115E, + 0x6489, 0x6489, 0x2B54, 0x648A, 0x648A, 0x28EA, 0x648B, 0x648B, 0x28E9, + 0x648C, 0x648C, 0x28EB, 0x648D, 0x648D, 0x4323, 0x648F, 0x648F, 0x28E8, + 0x6490, 0x6490, 0x115F, 0x6491, 0x6491, 0x43C3, 0x6492, 0x6492, 0x1165, + 0x6493, 0x6493, 0x1162, 0x6495, 0x6495, 0x1163, 0x6496, 0x6496, 0x28E3, + 0x6497, 0x6497, 0x28E6, 0x6498, 0x6498, 0x28F0, 0x6499, 0x6499, 0x116B, + 0x649A, 0x649A, 0x1169, 0x649C, 0x649C, 0x28E7, 0x649D, 0x649D, 0x2154, + 0x649E, 0x649E, 0x115C, 0x649F, 0x649F, 0x28ED, 0x64A0, 0x64A0, 0x28E4, + 0x64A2, 0x64A2, 0x116C, 0x64A3, 0x64A3, 0x28EC, 0x64A4, 0x64A4, 0x0FDE, + 0x64A5, 0x64A5, 0x1161, 0x64A6, 0x64A6, 0x26A4, 0x64A9, 0x64A9, 0x1164, + 0x64AB, 0x64AB, 0x1168, 0x64AC, 0x64AC, 0x116A, 0x64AD, 0x64AD, 0x1167, + 0x64AE, 0x64AE, 0x1166, 0x64AF, 0x64AF, 0x42E1, 0x64B0, 0x64B0, 0x1160, + 0x64B1, 0x64B1, 0x28EF, 0x64B2, 0x64B2, 0x115D, 0x64B3, 0x64B3, 0x116D, + 0x64B4, 0x64B4, 0x4340, 0x64B6, 0x64B6, 0x3A64, 0x64BB, 0x64BC, 0x12BB, + 0x64BD, 0x64BD, 0x2B53, 0x64BE, 0x64BE, 0x12C5, 0x64BF, 0x64BF, 0x12C2, + 0x64C0, 0x64C0, 0x4645, 0x64C1, 0x64C1, 0x12B9, 0x64C2, 0x64C2, 0x12C0, + 0x64C3, 0x64C3, 0x2B55, 0x64C4, 0x64C4, 0x12BE, 0x64C5, 0x64C5, 0x12B8, + 0x64C7, 0x64C7, 0x12BF, 0x64C9, 0x64C9, 0x2B52, 0x64CA, 0x64CA, 0x13D8, + 0x64CB, 0x64CB, 0x12BA, 0x64CD, 0x64CD, 0x12C1, 0x64CE, 0x64CE, 0x13D7, + 0x64CF, 0x64CF, 0x2B51, 0x64D0, 0x64D0, 0x2B50, 0x64D2, 0x64D2, 0x12C3, + 0x64D3, 0x64D3, 0x3F03, 0x64D4, 0x64D4, 0x12C4, 0x64D6, 0x64D6, 0x2B4F, + 0x64D7, 0x64D7, 0x2B4E, 0x64D8, 0x64D8, 0x13D9, 0x64D9, 0x64D9, 0x2B58, + 0x64DA, 0x64DA, 0x12BD, 0x64DB, 0x64DB, 0x2B56, 0x64DD, 0x64DD, 0x431E, + 0x64E0, 0x64E0, 0x13DA, 0x64E1, 0x64E1, 0x4199, 0x64E2, 0x64E2, 0x13DF, + 0x64E3, 0x64E3, 0x2D6A, 0x64E4, 0x64E4, 0x2D6C, 0x64E5, 0x64E5, 0x419A, + 0x64E6, 0x64E6, 0x13DC, 0x64E7, 0x64E7, 0x37A8, 0x64E8, 0x64E8, 0x2D6D, + 0x64E9, 0x64E9, 0x2D69, 0x64EA, 0x64EA, 0x434A, 0x64EB, 0x64EB, 0x2D6B, + 0x64EC, 0x64EC, 0x13DD, 0x64ED, 0x64ED, 0x13E0, 0x64EF, 0x64EF, 0x2D68, + 0x64F0, 0x64F0, 0x13DB, 0x64F1, 0x64F1, 0x13DE, 0x64F2, 0x64F2, 0x14D3, + 0x64F3, 0x64F3, 0x2B57, 0x64F4, 0x64F4, 0x14D2, 0x64F7, 0x64F7, 0x14D8, + 0x64F8, 0x64F8, 0x2F2B, 0x64FA, 0x64FB, 0x14D6, 0x64FC, 0x64FC, 0x2F2E, + 0x64FD, 0x64FD, 0x2F2A, 0x64FE, 0x64FE, 0x14D4, 0x64FF, 0x64FF, 0x2F28, + 0x6500, 0x6500, 0x1582, 0x6501, 0x6501, 0x2F2C, 0x6503, 0x6503, 0x2F2D, + 0x6504, 0x6504, 0x2F29, 0x6506, 0x6506, 0x14D5, 0x6507, 0x6507, 0x3090, + 0x6509, 0x6509, 0x3093, 0x650A, 0x650A, 0x4536, 0x650C, 0x650C, 0x3094, + 0x650D, 0x650D, 0x3092, 0x650E, 0x650E, 0x3095, 0x650F, 0x650F, 0x1583, + 0x6510, 0x6510, 0x3091, 0x6511, 0x6511, 0x3AA9, 0x6513, 0x6513, 0x31D7, + 0x6514, 0x6514, 0x1617, 0x6515, 0x6515, 0x31D6, 0x6516, 0x6516, 0x31D5, + 0x6517, 0x6517, 0x31D4, 0x6518, 0x6518, 0x1616, 0x6519, 0x6519, 0x1618, + 0x651B, 0x651B, 0x32D2, 0x651C, 0x651C, 0x1673, 0x651D, 0x651D, 0x1672, + 0x651E, 0x651E, 0x4187, 0x651F, 0x651F, 0x3EC0, 0x6520, 0x6520, 0x3382, + 0x6521, 0x6521, 0x3381, 0x6522, 0x6522, 0x3384, 0x6523, 0x6523, 0x16F9, + 0x6524, 0x6524, 0x16C5, 0x6525, 0x6525, 0x341B, 0x6526, 0x6526, 0x3383, + 0x6529, 0x6529, 0x341A, 0x652A, 0x652A, 0x16FB, 0x652B, 0x652B, 0x16FA, + 0x652C, 0x652C, 0x1721, 0x652D, 0x652D, 0x3484, 0x652E, 0x652E, 0x34CA, + 0x652F, 0x652F, 0x02D5, 0x6530, 0x6530, 0x3E62, 0x6532, 0x6532, 0x216C, + 0x6533, 0x6533, 0x2B59, 0x6534, 0x6534, 0x022C, 0x6535, 0x6535, 0x44ED, + 0x6536, 0x6536, 0x03D7, 0x6537, 0x6537, 0x17F6, 0x6538, 0x6538, 0x04B9, + 0x6539, 0x6539, 0x04B7, 0x653B, 0x653B, 0x04B8, 0x653D, 0x653D, 0x19A1, + 0x653E, 0x653E, 0x05F3, 0x653F, 0x653F, 0x0741, 0x6541, 0x6541, 0x1B01, + 0x6543, 0x6543, 0x1B02, 0x6545, 0x6545, 0x0742, 0x6546, 0x6546, 0x1CBF, + 0x6548, 0x6549, 0x08D6, 0x654A, 0x654A, 0x1CBE, 0x654D, 0x654D, 0x419F, + 0x654F, 0x654F, 0x0ABD, 0x6551, 0x6551, 0x0AB9, 0x6553, 0x6553, 0x1F0C, + 0x6554, 0x6554, 0x0AC0, 0x6555, 0x6555, 0x0ABF, 0x6556, 0x6556, 0x0AB8, + 0x6557, 0x6557, 0x0ABB, 0x6558, 0x6558, 0x0ABE, 0x6559, 0x6559, 0x0ABA, + 0x655C, 0x655C, 0x2170, 0x655D, 0x655D, 0x0AB7, 0x655E, 0x655E, 0x0C70, + 0x655F, 0x655F, 0x41A5, 0x6562, 0x6563, 0x0C72, 0x6564, 0x6564, 0x216F, + 0x6565, 0x6565, 0x2172, 0x6566, 0x6566, 0x0C71, 0x6567, 0x6567, 0x216D, + 0x6568, 0x6568, 0x2171, 0x656A, 0x656A, 0x216E, 0x656B, 0x656B, 0x3A6C, + 0x656C, 0x656C, 0x0E2B, 0x656D, 0x656D, 0x41A4, 0x656F, 0x656F, 0x2409, + 0x6572, 0x6572, 0x0FE7, 0x6573, 0x6573, 0x26B4, 0x6574, 0x6574, 0x12C6, + 0x6575, 0x6575, 0x116E, 0x6576, 0x6576, 0x28F1, 0x6577, 0x6578, 0x116F, + 0x6579, 0x6579, 0x28F3, 0x657A, 0x657A, 0x28F2, 0x657B, 0x657B, 0x28F4, + 0x657C, 0x657C, 0x2B5B, 0x657F, 0x657F, 0x2B5A, 0x6580, 0x6580, 0x2D6F, + 0x6581, 0x6581, 0x2D6E, 0x6582, 0x6583, 0x13E1, 0x6584, 0x6584, 0x3096, + 0x6585, 0x6585, 0x41A3, 0x6586, 0x6586, 0x4648, 0x6587, 0x6587, 0x02D6, + 0x6588, 0x6588, 0x410B, 0x6589, 0x6589, 0x4554, 0x658C, 0x658C, 0x2173, + 0x6590, 0x6590, 0x0C75, 0x6591, 0x6591, 0x0C74, 0x6592, 0x6592, 0x240A, + 0x6594, 0x6594, 0x2F2F, 0x6595, 0x6595, 0x1674, 0x6596, 0x6596, 0x341C, + 0x6597, 0x6597, 0x02D7, 0x6599, 0x6599, 0x08D8, 0x659B, 0x659B, 0x0AC2, + 0x659C, 0x659C, 0x0AC1, 0x659D, 0x659E, 0x2174, 0x659F, 0x659F, 0x0E2C, + 0x65A0, 0x65A0, 0x26B5, 0x65A1, 0x65A1, 0x0FE8, 0x65A2, 0x65A2, 0x2B5C, + 0x65A4, 0x65A4, 0x02D8, 0x65A5, 0x65A5, 0x0346, 0x65A7, 0x65A7, 0x05F4, + 0x65A8, 0x65A8, 0x19A2, 0x65AA, 0x65AA, 0x1B03, 0x65AB, 0x65AB, 0x0743, + 0x65AC, 0x65AC, 0x0AC3, 0x65AE, 0x65AE, 0x2176, 0x65AF, 0x65AF, 0x0C76, + 0x65B0, 0x65B0, 0x0E2D, 0x65B2, 0x65B3, 0x28F5, 0x65B5, 0x65B5, 0x41A7, + 0x65B6, 0x65B6, 0x2D70, 0x65B7, 0x65B7, 0x14D9, 0x65B8, 0x65B8, 0x34CB, + 0x65B9, 0x65B9, 0x02D9, 0x65BB, 0x65BB, 0x19A3, 0x65BC, 0x65BC, 0x05F5, + 0x65BD, 0x65BD, 0x0744, 0x65BE, 0x65BE, 0x3E3B, 0x65BF, 0x65BF, 0x1B04, + 0x65C1, 0x65C1, 0x08D9, 0x65C2, 0x65C2, 0x1CC3, 0x65C3, 0x65C4, 0x1CC1, + 0x65C5, 0x65C5, 0x08DA, 0x65C6, 0x65C6, 0x1CC0, 0x65CB, 0x65CC, 0x0AC5, + 0x65CD, 0x65CD, 0x1F0D, 0x65CE, 0x65CE, 0x0AC7, 0x65CF, 0x65CF, 0x0AC4, + 0x65D0, 0x65D0, 0x2177, 0x65D1, 0x65D1, 0x41AA, 0x65D2, 0x65D2, 0x2178, + 0x65D3, 0x65D3, 0x240B, 0x65D4, 0x65D4, 0x3BA8, 0x65D6, 0x65D6, 0x0FEA, + 0x65D7, 0x65D7, 0x0FE9, 0x65DA, 0x65DA, 0x2D71, 0x65DB, 0x65DB, 0x2F30, + 0x65DD, 0x65DD, 0x3098, 0x65DE, 0x65DE, 0x3097, 0x65DF, 0x65DF, 0x31D8, + 0x65E0, 0x65E0, 0x022D, 0x65E1, 0x65E1, 0x1789, 0x65E2, 0x65E2, 0x0745, + 0x65E3, 0x65E3, 0x41AE, 0x65E5, 0x65E5, 0x02DA, 0x65E6, 0x65E6, 0x0347, + 0x65E8, 0x65E8, 0x03D9, 0x65E9, 0x65E9, 0x03D8, 0x65EC, 0x65ED, 0x03DA, + 0x65EE, 0x65EE, 0x17F8, 0x65EF, 0x65EF, 0x17F7, 0x65F0, 0x65F0, 0x189E, + 0x65F1, 0x65F1, 0x04BA, 0x65F2, 0x65F2, 0x18A1, 0x65F3, 0x65F3, 0x18A0, + 0x65F4, 0x65F4, 0x189F, 0x65F5, 0x65F5, 0x18A2, 0x65FA, 0x65FA, 0x05F6, + 0x65FB, 0x65FB, 0x19A9, 0x65FC, 0x65FC, 0x19A5, 0x65FD, 0x65FD, 0x19AE, + 0x65FF, 0x65FF, 0x464A, 0x6600, 0x6600, 0x05FD, 0x6602, 0x6602, 0x05FB, + 0x6603, 0x6603, 0x19AA, 0x6604, 0x6604, 0x19A6, 0x6605, 0x6605, 0x19AD, + 0x6606, 0x6606, 0x05FA, 0x6607, 0x6607, 0x0601, 0x6608, 0x6608, 0x19A8, + 0x6609, 0x6609, 0x19A4, 0x660A, 0x660A, 0x0600, 0x660B, 0x660B, 0x19AB, + 0x660C, 0x660C, 0x05F9, 0x660D, 0x660D, 0x19AC, 0x660E, 0x660E, 0x05FC, + 0x660F, 0x660F, 0x05FE, 0x6610, 0x6610, 0x19B0, 0x6611, 0x6611, 0x19AF, + 0x6612, 0x6612, 0x19A7, 0x6613, 0x6613, 0x05F8, 0x6614, 0x6614, 0x05F7, + 0x6615, 0x6615, 0x05FF, 0x6618, 0x6618, 0x41B1, 0x661C, 0x661C, 0x1B09, + 0x661D, 0x661D, 0x1B0F, 0x661E, 0x661E, 0x3A93, 0x661F, 0x661F, 0x074B, + 0x6620, 0x6620, 0x0748, 0x6621, 0x6621, 0x1B06, 0x6622, 0x6622, 0x1B0B, + 0x6623, 0x6623, 0x4295, 0x6624, 0x6624, 0x074E, 0x6625, 0x6625, 0x0746, + 0x6626, 0x6626, 0x1B0A, 0x6627, 0x6627, 0x0749, 0x6628, 0x6628, 0x074C, + 0x662B, 0x662B, 0x1B0D, 0x662D, 0x662D, 0x0747, 0x662E, 0x662E, 0x1B12, + 0x662F, 0x662F, 0x074A, 0x6630, 0x6630, 0x3A8D, 0x6631, 0x6631, 0x074D, + 0x6632, 0x6632, 0x1B07, 0x6633, 0x6633, 0x1B0C, 0x6634, 0x6634, 0x1B10, + 0x6635, 0x6635, 0x1B08, 0x6636, 0x6636, 0x1B05, 0x6639, 0x6639, 0x1B11, + 0x663A, 0x663A, 0x1B0E, 0x6641, 0x6641, 0x08E2, 0x6642, 0x6642, 0x08DB, + 0x6643, 0x6643, 0x08DE, 0x6644, 0x6644, 0x41B4, 0x6645, 0x6645, 0x08E1, + 0x6647, 0x6647, 0x1CC6, 0x6648, 0x6648, 0x3D99, 0x6649, 0x6649, 0x08DC, + 0x664A, 0x664A, 0x1CC4, 0x664B, 0x664B, 0x41B7, 0x664C, 0x664C, 0x08E0, + 0x664F, 0x664F, 0x08DD, 0x6651, 0x6651, 0x1CC7, 0x6652, 0x6652, 0x08DF, + 0x6653, 0x6653, 0x464B, 0x6657, 0x6657, 0x409B, 0x6659, 0x6659, 0x1F11, + 0x665A, 0x665A, 0x0AC9, 0x665B, 0x665B, 0x1F10, 0x665C, 0x665C, 0x1F12, + 0x665D, 0x665D, 0x0AC8, 0x665E, 0x665E, 0x0ACD, 0x665F, 0x665F, 0x1CC5, + 0x6661, 0x6661, 0x1F0F, 0x6662, 0x6662, 0x1F13, 0x6663, 0x6663, 0x3A90, + 0x6664, 0x6664, 0x0ACA, 0x6665, 0x6665, 0x1F0E, 0x6666, 0x6666, 0x0ACC, + 0x6667, 0x6667, 0x41B9, 0x6668, 0x6668, 0x0ACB, 0x666A, 0x666A, 0x217F, + 0x666B, 0x666B, 0x3A8B, 0x666C, 0x666C, 0x217A, 0x666E, 0x666E, 0x0C77, + 0x666F, 0x666F, 0x0C7B, 0x6670, 0x6670, 0x0C78, 0x6671, 0x6671, 0x217D, + 0x6672, 0x6672, 0x2180, 0x6673, 0x6673, 0x41BB, 0x6674, 0x6674, 0x0C79, + 0x6676, 0x6676, 0x0C7A, 0x6677, 0x6677, 0x0C7F, 0x6678, 0x6678, 0x2414, + 0x6679, 0x6679, 0x217E, 0x667A, 0x667A, 0x0C7D, 0x667B, 0x667B, 0x217B, + 0x667C, 0x667C, 0x2179, 0x667D, 0x667D, 0x469B, 0x667E, 0x667E, 0x0C7E, + 0x6680, 0x6680, 0x217C, 0x6684, 0x6684, 0x0E33, 0x6685, 0x6685, 0x4162, + 0x6686, 0x6686, 0x240C, 0x6687, 0x6688, 0x0E30, 0x6689, 0x6689, 0x0E2F, + 0x668A, 0x668A, 0x2411, 0x668B, 0x668B, 0x2410, 0x668C, 0x668C, 0x240D, + 0x668D, 0x668D, 0x0E35, 0x668E, 0x668E, 0x3A89, 0x6690, 0x6690, 0x240F, + 0x6691, 0x6691, 0x0C7C, 0x6692, 0x6692, 0x464D, 0x6694, 0x6694, 0x2413, + 0x6695, 0x6695, 0x240E, 0x6696, 0x6696, 0x0E32, 0x6697, 0x6697, 0x0E2E, + 0x6698, 0x6698, 0x0E34, 0x6699, 0x6699, 0x2412, 0x669A, 0x669A, 0x3D3D, + 0x669D, 0x669D, 0x0FED, 0x669F, 0x669F, 0x26B8, 0x66A0, 0x66A0, 0x26B7, + 0x66A1, 0x66A1, 0x26B6, 0x66A2, 0x66A2, 0x0FEB, 0x66A4, 0x66A4, 0x40BA, + 0x66A8, 0x66A8, 0x0FEC, 0x66A9, 0x66A9, 0x28F9, 0x66AA, 0x66AA, 0x28FC, + 0x66AB, 0x66AB, 0x1172, 0x66AD, 0x66AD, 0x4948, 0x66AE, 0x66AE, 0x1171, + 0x66AF, 0x66AF, 0x28FD, 0x66B0, 0x66B0, 0x28F8, 0x66B1, 0x66B1, 0x1174, + 0x66B2, 0x66B2, 0x28FA, 0x66B3, 0x66B3, 0x40B5, 0x66B4, 0x66B4, 0x1173, + 0x66B5, 0x66B5, 0x28F7, 0x66B6, 0x66B6, 0x3E13, 0x66B7, 0x66B7, 0x28FB, + 0x66B8, 0x66B8, 0x12CC, 0x66B9, 0x66B9, 0x12C9, 0x66BA, 0x66BA, 0x2B65, + 0x66BB, 0x66BB, 0x2B64, 0x66BD, 0x66BD, 0x2B63, 0x66BE, 0x66BE, 0x2B5E, + 0x66BF, 0x66BF, 0x3D9A, 0x66C0, 0x66C0, 0x2B5F, 0x66C4, 0x66C4, 0x12CA, + 0x66C6, 0x66C6, 0x12C7, 0x66C7, 0x66C7, 0x12CB, 0x66C8, 0x66C8, 0x2B5D, + 0x66C9, 0x66C9, 0x12C8, 0x66CA, 0x66CB, 0x2B60, 0x66CC, 0x66CC, 0x2B66, + 0x66CD, 0x66CD, 0x40B8, 0x66CE, 0x66CE, 0x3A77, 0x66CF, 0x66CF, 0x2B62, + 0x66D2, 0x66D2, 0x2D72, 0x66D6, 0x66D6, 0x13E4, 0x66D8, 0x66D8, 0x2F33, + 0x66D9, 0x66D9, 0x13E3, 0x66DA, 0x66DB, 0x2F31, 0x66DC, 0x66DC, 0x14DA, + 0x66DD, 0x66DD, 0x1585, 0x66DE, 0x66DE, 0x3099, 0x66E0, 0x66E0, 0x1584, + 0x66E3, 0x66E4, 0x31DA, 0x66E6, 0x66E6, 0x1619, 0x66E8, 0x66E8, 0x31D9, + 0x66E9, 0x66E9, 0x1675, 0x66EB, 0x66EB, 0x341D, 0x66EC, 0x66EC, 0x16FC, + 0x66ED, 0x66EE, 0x3485, 0x66F0, 0x66F0, 0x02DB, 0x66F1, 0x66F1, 0x3E84, + 0x66F2, 0x66F3, 0x03DC, 0x66F4, 0x66F4, 0x04BB, 0x66F6, 0x66F6, 0x19B1, + 0x66F7, 0x66F7, 0x074F, 0x66F8, 0x66F8, 0x08E3, 0x66F9, 0x66F9, 0x0ACE, + 0x66FC, 0x66FC, 0x0A1F, 0x66FE, 0x66FF, 0x0C80, 0x6700, 0x6700, 0x0BF0, + 0x6701, 0x6701, 0x2181, 0x6702, 0x6702, 0x41C4, 0x6703, 0x6703, 0x0E36, + 0x6704, 0x6704, 0x26BA, 0x6705, 0x6705, 0x26B9, 0x6708, 0x6708, 0x02DC, + 0x6709, 0x6709, 0x03DE, 0x670A, 0x670A, 0x19B2, 0x670B, 0x670B, 0x0603, + 0x670C, 0x670C, 0x3FE2, 0x670D, 0x670D, 0x0602, 0x670E, 0x670E, 0x3DA1, + 0x670F, 0x6710, 0x1B13, 0x6712, 0x6713, 0x1CC8, 0x6714, 0x6715, 0x08E4, + 0x6716, 0x6716, 0x464F, 0x6717, 0x6717, 0x08E6, 0x6718, 0x6718, 0x1F14, + 0x671B, 0x671B, 0x0AD0, 0x671D, 0x671D, 0x0C83, 0x671E, 0x671E, 0x3D8B, + 0x671F, 0x671F, 0x0C82, 0x6720, 0x6720, 0x2415, 0x6721, 0x6721, 0x2522, + 0x6722, 0x6722, 0x26BB, 0x6723, 0x6723, 0x2B67, 0x6725, 0x6725, 0x379F, + 0x6726, 0x6726, 0x14DB, 0x6727, 0x6727, 0x161A, 0x6728, 0x6728, 0x02DD, + 0x672A, 0x672B, 0x034A, 0x672C, 0x672C, 0x0349, 0x672D, 0x672D, 0x034C, + 0x672E, 0x672E, 0x0348, 0x6731, 0x6731, 0x03E1, 0x6733, 0x6733, 0x1800, + 0x6734, 0x6734, 0x03E0, 0x6735, 0x6735, 0x03E2, 0x6736, 0x6736, 0x3E41, + 0x6738, 0x6738, 0x17FB, 0x6739, 0x6739, 0x17FA, 0x673A, 0x673A, 0x17FD, + 0x673B, 0x673B, 0x17FC, 0x673C, 0x673C, 0x17FF, 0x673D, 0x673D, 0x03DF, + 0x673E, 0x673E, 0x17F9, 0x673F, 0x673F, 0x17FE, 0x6744, 0x6744, 0x401B, + 0x6745, 0x6745, 0x18A3, 0x6746, 0x6746, 0x04C5, 0x6747, 0x6747, 0x18A4, + 0x6748, 0x6748, 0x18A8, 0x6749, 0x6749, 0x04C4, 0x674B, 0x674B, 0x18AC, + 0x674C, 0x674C, 0x18A7, 0x674D, 0x674D, 0x18AA, 0x674E, 0x6751, 0x04BD, + 0x6753, 0x6753, 0x04C7, 0x6755, 0x6755, 0x18A6, 0x6756, 0x6756, 0x04C2, + 0x6757, 0x6757, 0x04C8, 0x6759, 0x6759, 0x18A5, 0x675A, 0x675A, 0x18AB, + 0x675C, 0x675C, 0x04C1, 0x675D, 0x675D, 0x18A9, 0x675E, 0x675E, 0x04C3, + 0x675F, 0x675F, 0x04BC, 0x6760, 0x6760, 0x04C6, 0x6761, 0x6761, 0x3D66, + 0x6762, 0x6762, 0x41CB, 0x6767, 0x6767, 0x41CA, 0x676A, 0x676A, 0x0618, + 0x676C, 0x676C, 0x19B4, 0x676D, 0x676D, 0x0604, 0x676F, 0x6770, 0x060E, + 0x6771, 0x6771, 0x0607, 0x6772, 0x6772, 0x0619, 0x6773, 0x6773, 0x0609, + 0x6774, 0x6774, 0x19BC, 0x6775, 0x6775, 0x0614, 0x6776, 0x6776, 0x19B7, + 0x6777, 0x6777, 0x060A, 0x6778, 0x6779, 0x19C6, 0x677A, 0x677A, 0x19BF, + 0x677B, 0x677B, 0x19B8, 0x677C, 0x677C, 0x0617, 0x677D, 0x677D, 0x19C4, + 0x677E, 0x677E, 0x0612, 0x677F, 0x677F, 0x0610, 0x6781, 0x6781, 0x19C5, + 0x6783, 0x6783, 0x19C3, 0x6784, 0x6784, 0x19BB, 0x6785, 0x6785, 0x19B3, + 0x6786, 0x6786, 0x19BA, 0x6787, 0x6787, 0x060B, 0x6789, 0x6789, 0x0611, + 0x678B, 0x678B, 0x0605, 0x678C, 0x678C, 0x19BE, 0x678D, 0x678D, 0x19BD, + 0x678E, 0x678E, 0x19B5, 0x678F, 0x678F, 0x46C1, 0x6790, 0x6790, 0x0613, + 0x6791, 0x6791, 0x19C1, 0x6792, 0x6792, 0x19B6, 0x6793, 0x6793, 0x0616, + 0x6794, 0x6794, 0x19C8, 0x6795, 0x6795, 0x0606, 0x6797, 0x6797, 0x060D, + 0x6798, 0x6798, 0x19B9, 0x6799, 0x6799, 0x19C2, 0x679A, 0x679A, 0x0615, + 0x679C, 0x679C, 0x0608, 0x679D, 0x679D, 0x060C, 0x679F, 0x679F, 0x19C0, + 0x67A0, 0x67A0, 0x3D7A, 0x67A4, 0x67A4, 0x4651, 0x67AC, 0x67AC, 0x41E3, + 0x67AE, 0x67AE, 0x1B34, 0x67AF, 0x67AF, 0x0757, 0x67B0, 0x67B0, 0x0764, + 0x67B1, 0x67B1, 0x41F4, 0x67B2, 0x67B2, 0x1B2F, 0x67B3, 0x67B3, 0x1B25, + 0x67B4, 0x67B4, 0x075D, 0x67B5, 0x67B5, 0x1B23, 0x67B6, 0x67B6, 0x0756, + 0x67B7, 0x67B7, 0x1B1E, 0x67B8, 0x67B8, 0x0760, 0x67B9, 0x67B9, 0x1B2B, + 0x67BA, 0x67BA, 0x1B18, 0x67BB, 0x67BB, 0x1B1A, 0x67BF, 0x67BF, 0x37FA, + 0x67C0, 0x67C0, 0x1B1D, 0x67C1, 0x67C1, 0x1B15, 0x67C2, 0x67C2, 0x1B2A, + 0x67C3, 0x67C3, 0x1B3A, 0x67C4, 0x67C4, 0x075B, 0x67C5, 0x67C5, 0x1B1F, + 0x67C6, 0x67C6, 0x1B31, 0x67C8, 0x67C8, 0x1B17, 0x67C9, 0x67CA, 0x1B38, + 0x67CB, 0x67CB, 0x1B3C, 0x67CC, 0x67CC, 0x1B33, 0x67CD, 0x67CD, 0x1B24, + 0x67CE, 0x67CE, 0x1B2C, 0x67CF, 0x67CF, 0x0761, 0x67D0, 0x67D0, 0x0754, + 0x67D1, 0x67D1, 0x075C, 0x67D2, 0x67D2, 0x0768, 0x67D3, 0x67D3, 0x0751, + 0x67D4, 0x67D4, 0x0753, 0x67D6, 0x67D6, 0x3B58, 0x67D7, 0x67D7, 0x41CE, + 0x67D8, 0x67D8, 0x1B1C, 0x67D9, 0x67D9, 0x0765, 0x67DA, 0x67DA, 0x075E, + 0x67DB, 0x67DB, 0x1B36, 0x67DC, 0x67DC, 0x1B19, 0x67DD, 0x67DD, 0x0767, + 0x67DE, 0x67DE, 0x0762, 0x67DF, 0x67DF, 0x1B22, 0x67E2, 0x67E2, 0x0766, + 0x67E3, 0x67E3, 0x1B29, 0x67E4, 0x67E4, 0x1B21, 0x67E5, 0x67E5, 0x075F, + 0x67E6, 0x67E6, 0x1B35, 0x67E7, 0x67E7, 0x1B2D, 0x67E9, 0x67E9, 0x0759, + 0x67EA, 0x67EA, 0x1B3B, 0x67EB, 0x67EB, 0x1B20, 0x67EC, 0x67EC, 0x0755, + 0x67ED, 0x67ED, 0x1B32, 0x67EE, 0x67EE, 0x1B28, 0x67EF, 0x67EF, 0x075A, + 0x67F0, 0x67F0, 0x1B2E, 0x67F1, 0x67F1, 0x0752, 0x67F2, 0x67F2, 0x1B16, + 0x67F3, 0x67F3, 0x0763, 0x67F4, 0x67F4, 0x08F5, 0x67F5, 0x67F5, 0x0758, + 0x67F6, 0x67F6, 0x1B27, 0x67F7, 0x67F7, 0x1B26, 0x67F8, 0x67F8, 0x1B1B, + 0x67F9, 0x67F9, 0x3996, 0x67FA, 0x67FA, 0x1B37, 0x67FC, 0x67FC, 0x1B30, + 0x67FE, 0x67FE, 0x4555, 0x67FF, 0x67FF, 0x0750, 0x6800, 0x6800, 0x43C7, + 0x6801, 0x6801, 0x41D3, 0x6802, 0x6802, 0x3FC8, 0x6803, 0x6803, 0x3D6A, + 0x6804, 0x6804, 0x4556, 0x680D, 0x680D, 0x4281, 0x6810, 0x6810, 0x399C, + 0x6812, 0x6812, 0x1CDD, 0x6813, 0x6813, 0x08FC, 0x6814, 0x6814, 0x1CDE, + 0x6816, 0x6816, 0x1CD2, 0x6817, 0x6817, 0x08F1, 0x6818, 0x6818, 0x08FD, + 0x681A, 0x681A, 0x1CCB, 0x681B, 0x681B, 0x4072, 0x681C, 0x681C, 0x1CD4, + 0x681D, 0x681D, 0x1CDC, 0x681E, 0x681E, 0x46C2, 0x681F, 0x681F, 0x1CCA, + 0x6820, 0x6820, 0x1CE5, 0x6821, 0x6821, 0x08E7, 0x6822, 0x6822, 0x41D0, + 0x6825, 0x6825, 0x1CE4, 0x6826, 0x6826, 0x1CDF, 0x6828, 0x6828, 0x1CE0, + 0x6829, 0x6829, 0x08EF, 0x682A, 0x682A, 0x08FA, 0x682B, 0x682B, 0x1CD6, + 0x682D, 0x682D, 0x1CD7, 0x682E, 0x682E, 0x1CE1, 0x682F, 0x682F, 0x1CD8, + 0x6831, 0x6831, 0x1CD3, 0x6832, 0x6833, 0x1CCD, 0x6834, 0x6834, 0x1CDB, + 0x6835, 0x6835, 0x1CD5, 0x6836, 0x6836, 0x3E2E, 0x6837, 0x6837, 0x421D, + 0x6838, 0x6838, 0x08E8, 0x6839, 0x6839, 0x08EC, 0x683A, 0x683A, 0x1CE3, + 0x683B, 0x683B, 0x1CCF, 0x683C, 0x683C, 0x08F8, 0x683D, 0x683D, 0x08F4, + 0x683E, 0x683E, 0x4147, 0x6840, 0x6840, 0x08F7, 0x6841, 0x6841, 0x08FE, + 0x6842, 0x6842, 0x08ED, 0x6843, 0x6843, 0x08F9, 0x6844, 0x6844, 0x1CDA, + 0x6845, 0x6845, 0x08FB, 0x6846, 0x6846, 0x08EA, 0x6847, 0x6847, 0x3BEB, + 0x6848, 0x6848, 0x08E9, 0x6849, 0x6849, 0x1CCC, 0x684A, 0x684A, 0x4653, + 0x684B, 0x684B, 0x1CD0, 0x684C, 0x684C, 0x08F2, 0x684D, 0x684D, 0x1CE2, + 0x684E, 0x684E, 0x1CD9, 0x684F, 0x684F, 0x1CD1, 0x6850, 0x6850, 0x08F6, + 0x6851, 0x6851, 0x08F3, 0x6853, 0x6853, 0x08EB, 0x6854, 0x6854, 0x08EE, + 0x6855, 0x6855, 0x3D90, 0x6856, 0x6856, 0x3814, 0x685D, 0x685D, 0x41D6, + 0x6865, 0x6865, 0x4557, 0x686B, 0x686B, 0x1F29, 0x686D, 0x686E, 0x1F19, + 0x686F, 0x686F, 0x1F1E, 0x6871, 0x6871, 0x1F2D, 0x6872, 0x6872, 0x1F2A, + 0x6874, 0x6874, 0x1F23, 0x6875, 0x6875, 0x1F22, 0x6876, 0x6876, 0x0AD7, + 0x6877, 0x6877, 0x1F26, 0x6878, 0x6878, 0x1F35, 0x6879, 0x6879, 0x1F15, + 0x687B, 0x687B, 0x1F36, 0x687C, 0x687C, 0x1F28, 0x687D, 0x687D, 0x1F3A, + 0x687E, 0x687E, 0x1F2E, 0x687F, 0x687F, 0x0AD6, 0x6880, 0x6880, 0x1F2C, + 0x6881, 0x6881, 0x0AD1, 0x6882, 0x6882, 0x0AE6, 0x6883, 0x6883, 0x0ADC, + 0x6884, 0x6884, 0x4654, 0x6885, 0x6885, 0x0AE0, 0x6886, 0x6886, 0x0ADF, + 0x6887, 0x6887, 0x1F16, 0x6888, 0x6888, 0x46B7, 0x6889, 0x6889, 0x1F33, + 0x688A, 0x688A, 0x1F39, 0x688B, 0x688B, 0x1F31, 0x688C, 0x688C, 0x1F38, + 0x688F, 0x688F, 0x1F25, 0x6890, 0x6890, 0x1F17, 0x6891, 0x6891, 0x1F37, + 0x6892, 0x6892, 0x1F27, 0x6893, 0x6893, 0x0AD4, 0x6894, 0x6894, 0x0AE1, + 0x6896, 0x6896, 0x1F30, 0x6897, 0x6897, 0x0ADA, 0x6898, 0x6898, 0x3AAA, + 0x689B, 0x689B, 0x1F2F, 0x689C, 0x689C, 0x1F18, 0x689D, 0x689D, 0x0AE2, + 0x689F, 0x689F, 0x0AE4, 0x68A0, 0x68A0, 0x1F32, 0x68A1, 0x68A1, 0x0AE5, + 0x68A2, 0x68A2, 0x0AD3, 0x68A3, 0x68A3, 0x1F1F, 0x68A4, 0x68A4, 0x1F34, + 0x68A6, 0x68A6, 0x40E4, 0x68A7, 0x68A7, 0x0AD9, 0x68A8, 0x68A8, 0x0AE3, + 0x68A9, 0x68A9, 0x1F21, 0x68AA, 0x68AA, 0x1F2B, 0x68AB, 0x68AB, 0x1F1C, + 0x68AC, 0x68AC, 0x1F20, 0x68AD, 0x68AD, 0x0ADE, 0x68AE, 0x68AE, 0x1F1B, + 0x68AF, 0x68AF, 0x0AD2, 0x68B0, 0x68B0, 0x0ADB, 0x68B1, 0x68B1, 0x0AD8, + 0x68B2, 0x68B2, 0x1F24, 0x68B3, 0x68B3, 0x08F0, 0x68B4, 0x68B4, 0x2198, + 0x68B5, 0x68B5, 0x0AD5, 0x68B6, 0x68B6, 0x3A9E, 0x68B9, 0x68B9, 0x3D14, + 0x68BD, 0x68BD, 0x427C, 0x68C3, 0x68C3, 0x41DC, 0x68C4, 0x68C4, 0x0ADD, + 0x68C5, 0x68C5, 0x3C2E, 0x68C6, 0x68C6, 0x219B, 0x68C7, 0x68C7, 0x21B1, + 0x68C8, 0x68C8, 0x21A6, 0x68C9, 0x68C9, 0x0C97, 0x68CA, 0x68CA, 0x42EB, + 0x68CB, 0x68CB, 0x0C92, 0x68CC, 0x68CC, 0x2195, 0x68CD, 0x68CD, 0x0C93, + 0x68CE, 0x68CE, 0x21A5, 0x68D0, 0x68D0, 0x219E, 0x68D1, 0x68D1, 0x21AB, + 0x68D2, 0x68D2, 0x0C8F, 0x68D3, 0x68D3, 0x2183, 0x68D4, 0x68D4, 0x21AD, + 0x68D5, 0x68D5, 0x0C85, 0x68D6, 0x68D6, 0x218B, 0x68D7, 0x68D7, 0x0C88, + 0x68D8, 0x68D8, 0x0C87, 0x68DA, 0x68DA, 0x0C98, 0x68DC, 0x68DC, 0x2185, + 0x68DD, 0x68DE, 0x21A7, 0x68DF, 0x68DF, 0x0C8A, 0x68E0, 0x68E0, 0x0C86, + 0x68E1, 0x68E1, 0x2193, 0x68E3, 0x68E3, 0x0C91, 0x68E4, 0x68E4, 0x218E, + 0x68E6, 0x68E6, 0x21A9, 0x68E7, 0x68E7, 0x0C8D, 0x68E8, 0x68E8, 0x21A1, + 0x68E9, 0x68E9, 0x21AE, 0x68EA, 0x68EA, 0x2188, 0x68EB, 0x68EB, 0x218D, + 0x68EC, 0x68EC, 0x2187, 0x68EE, 0x68EE, 0x0C8C, 0x68EF, 0x68EF, 0x219A, + 0x68F0, 0x68F0, 0x242B, 0x68F1, 0x68F1, 0x2189, 0x68F2, 0x68F2, 0x0C90, + 0x68F3, 0x68F3, 0x2192, 0x68F4, 0x68F4, 0x21AA, 0x68F5, 0x68F5, 0x0C8B, + 0x68F6, 0x68F6, 0x218F, 0x68F7, 0x68F7, 0x218C, 0x68F8, 0x68F8, 0x219D, + 0x68F9, 0x68F9, 0x0C8E, 0x68FA, 0x68FA, 0x0C84, 0x68FB, 0x68FB, 0x0C9A, + 0x68FC, 0x68FC, 0x21A0, 0x68FD, 0x68FD, 0x219F, 0x6900, 0x6900, 0x41DF, + 0x6901, 0x6901, 0x41DE, 0x6902, 0x6902, 0x42FB, 0x6903, 0x6903, 0x429C, + 0x6904, 0x6904, 0x2184, 0x6905, 0x6905, 0x0C89, 0x6906, 0x6906, 0x21AC, + 0x6907, 0x6907, 0x2194, 0x6908, 0x6908, 0x2196, 0x6909, 0x6909, 0x4658, + 0x690A, 0x690A, 0x21A3, 0x690B, 0x690B, 0x21A2, 0x690C, 0x690C, 0x2182, + 0x690D, 0x690D, 0x0C94, 0x690E, 0x690E, 0x0C96, 0x690F, 0x690F, 0x218A, + 0x6910, 0x6910, 0x2191, 0x6911, 0x6911, 0x2199, 0x6912, 0x6912, 0x0C95, + 0x6913, 0x6913, 0x2190, 0x6914, 0x6914, 0x219C, 0x6915, 0x6915, 0x21AF, + 0x6917, 0x6917, 0x21A4, 0x6918, 0x6918, 0x3DA2, 0x691A, 0x691A, 0x3D80, + 0x691B, 0x691B, 0x37BD, 0x6925, 0x6925, 0x21B0, 0x692A, 0x692A, 0x2186, + 0x692C, 0x692C, 0x3F38, 0x692F, 0x692F, 0x243F, 0x6930, 0x6930, 0x0E3E, + 0x6932, 0x6932, 0x243D, 0x6933, 0x6933, 0x2428, 0x6934, 0x6934, 0x242D, + 0x6935, 0x6935, 0x2426, 0x6936, 0x6936, 0x41E7, 0x6937, 0x6937, 0x2439, + 0x6938, 0x6938, 0x2418, 0x6939, 0x6939, 0x241F, 0x693B, 0x693B, 0x2437, + 0x693C, 0x693C, 0x2441, 0x693D, 0x693D, 0x2429, 0x693E, 0x693E, 0x4056, + 0x693F, 0x693F, 0x241C, 0x6940, 0x6940, 0x242F, 0x6941, 0x6941, 0x2434, + 0x6942, 0x6942, 0x2420, 0x6943, 0x6943, 0x4659, 0x6944, 0x6944, 0x2431, + 0x6945, 0x6945, 0x241D, 0x6946, 0x6946, 0x456F, 0x6948, 0x6949, 0x2424, + 0x694A, 0x694A, 0x0E40, 0x694B, 0x694B, 0x2438, 0x694C, 0x694C, 0x2436, + 0x694E, 0x694E, 0x2419, 0x694F, 0x694F, 0x243B, 0x6951, 0x6951, 0x243C, + 0x6952, 0x6952, 0x243E, 0x6953, 0x6953, 0x0E44, 0x6954, 0x6954, 0x0E3C, + 0x6955, 0x6955, 0x3D86, 0x6956, 0x6956, 0x1F1D, 0x6957, 0x6957, 0x2421, + 0x6958, 0x6958, 0x2433, 0x6959, 0x6959, 0x2422, 0x695A, 0x695A, 0x0E39, + 0x695B, 0x695B, 0x0E49, 0x695C, 0x695C, 0x243A, 0x695D, 0x695D, 0x0E47, + 0x695E, 0x695E, 0x0E43, 0x695F, 0x695F, 0x2417, 0x6960, 0x6960, 0x0E3B, + 0x6961, 0x6961, 0x41E4, 0x6962, 0x6962, 0x241A, 0x6963, 0x6963, 0x0E48, + 0x6964, 0x6964, 0x465B, 0x6965, 0x6965, 0x242A, 0x6966, 0x6966, 0x2416, + 0x6967, 0x6967, 0x3D15, 0x6968, 0x6968, 0x0E41, 0x6969, 0x6969, 0x242E, + 0x696A, 0x696A, 0x241E, 0x696B, 0x696B, 0x0E42, 0x696C, 0x696C, 0x2427, + 0x696D, 0x696D, 0x0E38, 0x696E, 0x696E, 0x0C99, 0x696F, 0x696F, 0x2430, + 0x6970, 0x6970, 0x2197, 0x6971, 0x6971, 0x241B, 0x6972, 0x6972, 0x3A6D, + 0x6973, 0x6973, 0x41DB, 0x6974, 0x6974, 0x2435, 0x6975, 0x6975, 0x0E3D, + 0x6976, 0x6976, 0x2432, 0x6977, 0x6977, 0x0E3A, 0x6978, 0x6978, 0x242C, + 0x6979, 0x6979, 0x0E45, 0x697A, 0x697A, 0x2423, 0x697B, 0x697B, 0x2440, + 0x6980, 0x6980, 0x3F3E, 0x6982, 0x6982, 0x0E3F, 0x6983, 0x6983, 0x24AF, + 0x6985, 0x6985, 0x465D, 0x6986, 0x6986, 0x0E46, 0x698A, 0x698A, 0x3D74, + 0x698D, 0x698D, 0x26C9, 0x698E, 0x698E, 0x26C7, 0x6990, 0x6990, 0x26DD, + 0x6991, 0x6991, 0x26C5, 0x6993, 0x6993, 0x26D7, 0x6994, 0x6994, 0x0E37, + 0x6995, 0x6995, 0x0FF0, 0x6996, 0x6996, 0x26C1, 0x6997, 0x6997, 0x26DC, + 0x6998, 0x6998, 0x41E8, 0x6999, 0x6999, 0x26C6, 0x699A, 0x699A, 0x26D4, + 0x699B, 0x699B, 0x0FF5, 0x699C, 0x699C, 0x0FEE, 0x699E, 0x699E, 0x26DA, + 0x699F, 0x699F, 0x465C, 0x69A0, 0x69A0, 0x26BF, 0x69A1, 0x69A1, 0x26D9, + 0x69A2, 0x69A2, 0x3730, 0x69A3, 0x69A3, 0x1000, 0x69A4, 0x69A4, 0x26D0, + 0x69A5, 0x69A5, 0x26E0, 0x69A6, 0x69A6, 0x0FFE, 0x69A7, 0x69A7, 0x26C8, + 0x69A8, 0x69A8, 0x0FEF, 0x69A9, 0x69A9, 0x26CA, 0x69AA, 0x69AA, 0x26D8, + 0x69AB, 0x69AB, 0x0FF8, 0x69AC, 0x69AC, 0x26C3, 0x69AD, 0x69AD, 0x0FFC, + 0x69AE, 0x69AE, 0x0FF2, 0x69AF, 0x69AF, 0x26CC, 0x69B0, 0x69B0, 0x26C2, + 0x69B1, 0x69B1, 0x26BC, 0x69B2, 0x69B2, 0x3FF6, 0x69B3, 0x69B3, 0x26D6, + 0x69B4, 0x69B4, 0x0FF9, 0x69B5, 0x69B5, 0x26DF, 0x69B6, 0x69B6, 0x26BD, + 0x69B7, 0x69B7, 0x0FF6, 0x69B9, 0x69B9, 0x26D2, 0x69BB, 0x69BB, 0x0FF7, + 0x69BC, 0x69BC, 0x26C4, 0x69BD, 0x69BD, 0x26CF, 0x69BE, 0x69BE, 0x26CB, + 0x69BF, 0x69BF, 0x26CD, 0x69C0, 0x69C0, 0x3F5D, 0x69C1, 0x69C1, 0x0FF1, + 0x69C2, 0x69C2, 0x26DE, 0x69C3, 0x69C3, 0x0FFF, 0x69C4, 0x69C4, 0x26CE, + 0x69C6, 0x69C6, 0x26E1, 0x69C9, 0x69C9, 0x26BE, 0x69CA, 0x69CA, 0x26D3, + 0x69CB, 0x69CB, 0x0FF4, 0x69CC, 0x69CC, 0x0FFD, 0x69CD, 0x69CD, 0x0FFB, + 0x69CE, 0x69CE, 0x26C0, 0x69CF, 0x69CF, 0x26D5, 0x69D0, 0x69D0, 0x0FFA, + 0x69D1, 0x69D1, 0x39EF, 0x69D3, 0x69D3, 0x0FF3, 0x69D4, 0x69D4, 0x26D1, + 0x69D5, 0x69D5, 0x3E3C, 0x69D6, 0x69D6, 0x465E, 0x69D9, 0x69D9, 0x26DB, + 0x69E1, 0x69E1, 0x41D8, 0x69E2, 0x69E2, 0x2909, 0x69E4, 0x69E4, 0x2905, + 0x69E5, 0x69E5, 0x2901, 0x69E6, 0x69E6, 0x2915, 0x69E7, 0x69E7, 0x2912, + 0x69E8, 0x69E8, 0x1177, 0x69E9, 0x69E9, 0x3D91, 0x69EB, 0x69EB, 0x2919, + 0x69EC, 0x69EC, 0x2908, 0x69ED, 0x69ED, 0x1182, 0x69EE, 0x69EE, 0x290F, + 0x69F1, 0x69F1, 0x2904, 0x69F2, 0x69F2, 0x290E, 0x69F3, 0x69F3, 0x117F, + 0x69F4, 0x69F4, 0x2922, 0x69F6, 0x69F6, 0x291F, 0x69F7, 0x69F7, 0x2911, + 0x69F8, 0x69F8, 0x2902, 0x69F9, 0x69F9, 0x41ED, 0x69FA, 0x69FA, 0x41C7, + 0x69FB, 0x69FB, 0x2916, 0x69FC, 0x69FC, 0x2918, 0x69FD, 0x69FD, 0x117B, + 0x69FE, 0x69FE, 0x290C, 0x69FF, 0x69FF, 0x2907, 0x6A00, 0x6A00, 0x28FE, + 0x6A01, 0x6A01, 0x1178, 0x6A02, 0x6A02, 0x1180, 0x6A03, 0x6A03, 0x3E29, + 0x6A04, 0x6A04, 0x291B, 0x6A05, 0x6A05, 0x1181, 0x6A06, 0x6A06, 0x28FF, + 0x6A07, 0x6A07, 0x2921, 0x6A08, 0x6A08, 0x2914, 0x6A09, 0x6A09, 0x291A, + 0x6A0A, 0x6A0A, 0x117E, 0x6A0B, 0x6A0B, 0x41D9, 0x6A0C, 0x6A0C, 0x3D50, + 0x6A0D, 0x6A0D, 0x2917, 0x6A0F, 0x6A0F, 0x291E, 0x6A11, 0x6A11, 0x1183, + 0x6A13, 0x6A13, 0x117D, 0x6A14, 0x6A14, 0x2910, 0x6A15, 0x6A15, 0x2903, + 0x6A16, 0x6A16, 0x2923, 0x6A17, 0x6A17, 0x2900, 0x6A18, 0x6A18, 0x291C, + 0x6A19, 0x6A19, 0x117A, 0x6A1A, 0x6A1A, 0x3D1E, 0x6A1B, 0x6A1B, 0x290A, + 0x6A1C, 0x6A1C, 0x3B68, 0x6A1D, 0x6A1D, 0x290B, 0x6A1E, 0x6A1E, 0x1179, + 0x6A1F, 0x6A1F, 0x1176, 0x6A20, 0x6A20, 0x2906, 0x6A21, 0x6A21, 0x117C, + 0x6A23, 0x6A23, 0x1175, 0x6A25, 0x6A25, 0x291D, 0x6A26, 0x6A26, 0x2920, + 0x6A27, 0x6A27, 0x290D, 0x6A28, 0x6A28, 0x2B74, 0x6A2B, 0x6A2B, 0x3D42, + 0x6A2C, 0x6A2C, 0x42AB, 0x6A2D, 0x6A2D, 0x3B1F, 0x6A32, 0x6A32, 0x2B6C, + 0x6A33, 0x6A33, 0x3AA4, 0x6A34, 0x6A34, 0x2B68, 0x6A35, 0x6A35, 0x12D9, + 0x6A38, 0x6A38, 0x12CE, 0x6A39, 0x6A39, 0x12D3, 0x6A3A, 0x6A3A, 0x12CF, + 0x6A3B, 0x6A3B, 0x2B76, 0x6A3C, 0x6A3C, 0x2B81, 0x6A3D, 0x6A3D, 0x12CD, + 0x6A3E, 0x6A3E, 0x2B6E, 0x6A3F, 0x6A3F, 0x2B77, 0x6A40, 0x6A40, 0x2913, + 0x6A41, 0x6A41, 0x2B78, 0x6A44, 0x6A44, 0x12D4, 0x6A45, 0x6A45, 0x41F0, + 0x6A46, 0x6A46, 0x2B87, 0x6A47, 0x6A47, 0x12D8, 0x6A48, 0x6A48, 0x12DB, + 0x6A49, 0x6A49, 0x2B6A, 0x6A4B, 0x6A4B, 0x12D7, 0x6A4C, 0x6A4C, 0x3AAB, + 0x6A4D, 0x6A4E, 0x2B85, 0x6A4F, 0x6A4F, 0x2B7C, 0x6A50, 0x6A50, 0x2B7B, + 0x6A51, 0x6A51, 0x2B73, 0x6A52, 0x6A52, 0x3AA5, 0x6A53, 0x6A53, 0x37AC, + 0x6A54, 0x6A54, 0x2B7D, 0x6A55, 0x6A55, 0x2B84, 0x6A56, 0x6A56, 0x2B83, + 0x6A57, 0x6A57, 0x37DA, 0x6A58, 0x6A58, 0x12D2, 0x6A59, 0x6A59, 0x12D0, + 0x6A5A, 0x6A5A, 0x2B75, 0x6A5B, 0x6A5B, 0x2B72, 0x6A5D, 0x6A5D, 0x2B6F, + 0x6A5E, 0x6A5E, 0x2B82, 0x6A5F, 0x6A5F, 0x12DA, 0x6A60, 0x6A60, 0x2B80, + 0x6A61, 0x6A61, 0x12D6, 0x6A62, 0x6A62, 0x12D5, 0x6A64, 0x6A64, 0x2B7A, + 0x6A65, 0x6A65, 0x4660, 0x6A66, 0x6A66, 0x2B69, 0x6A67, 0x6A67, 0x2B6B, + 0x6A68, 0x6A68, 0x2B6D, 0x6A69, 0x6A69, 0x2B7F, 0x6A6A, 0x6A6A, 0x2B79, + 0x6A6B, 0x6A6B, 0x12D1, 0x6A6D, 0x6A6D, 0x2B70, 0x6A6F, 0x6A6F, 0x2B7E, + 0x6A71, 0x6A71, 0x4662, 0x6A74, 0x6A74, 0x4661, 0x6A76, 0x6A76, 0x2B71, + 0x6A7A, 0x6A7A, 0x3AAD, 0x6A7E, 0x6A7E, 0x13EC, 0x6A7F, 0x6A7F, 0x2D84, + 0x6A80, 0x6A80, 0x13E5, 0x6A81, 0x6A81, 0x2D75, 0x6A82, 0x6A82, 0x4663, + 0x6A83, 0x6A83, 0x2D80, 0x6A84, 0x6A84, 0x13E7, 0x6A85, 0x6A85, 0x2D87, + 0x6A87, 0x6A87, 0x2D7C, 0x6A89, 0x6A89, 0x2D77, 0x6A8A, 0x6A8A, 0x4136, + 0x6A8C, 0x6A8C, 0x2D88, 0x6A8D, 0x6A8D, 0x2D73, 0x6A8E, 0x6A8E, 0x2D7E, + 0x6A8F, 0x6A8F, 0x3C1B, 0x6A90, 0x6A90, 0x13EE, 0x6A91, 0x6A91, 0x2D83, + 0x6A92, 0x6A92, 0x2D89, 0x6A93, 0x6A93, 0x2D7D, 0x6A94, 0x6A94, 0x13E6, + 0x6A95, 0x6A95, 0x2D7F, 0x6A96, 0x6A96, 0x2D74, 0x6A97, 0x6A97, 0x13ED, + 0x6A99, 0x6A99, 0x4665, 0x6A9A, 0x6A9A, 0x2D86, 0x6A9B, 0x6A9B, 0x2D79, + 0x6A9C, 0x6A9C, 0x13E9, 0x6A9D, 0x6A9D, 0x41F2, 0x6A9E, 0x6A9E, 0x2D7B, + 0x6A9F, 0x6A9F, 0x2D78, 0x6AA0, 0x6AA0, 0x13EF, 0x6AA1, 0x6AA1, 0x2D7A, + 0x6AA2, 0x6AA2, 0x13E8, 0x6AA3, 0x6AA3, 0x13EB, 0x6AA4, 0x6AA4, 0x2D82, + 0x6AA5, 0x6AA5, 0x2D76, 0x6AA6, 0x6AA6, 0x2D85, 0x6AA7, 0x6AA7, 0x37E3, + 0x6AA8, 0x6AA8, 0x2D81, 0x6AAB, 0x6AAB, 0x4667, 0x6AAC, 0x6AAC, 0x14DD, + 0x6AAD, 0x6AAD, 0x2F3E, 0x6AAE, 0x6AAF, 0x14E2, 0x6AB1, 0x6AB1, 0x3E53, + 0x6AB2, 0x6AB2, 0x3B4B, 0x6AB3, 0x6AB3, 0x14DC, 0x6AB4, 0x6AB4, 0x2F3D, + 0x6AB5, 0x6AB5, 0x4668, 0x6AB6, 0x6AB7, 0x2F3A, 0x6AB8, 0x6AB8, 0x14E0, + 0x6AB9, 0x6AB9, 0x2F35, 0x6ABA, 0x6ABA, 0x2F39, 0x6ABB, 0x6ABB, 0x14DF, + 0x6ABD, 0x6ABD, 0x2F36, 0x6ABE, 0x6ABE, 0x3AA1, 0x6AC2, 0x6AC2, 0x14E1, + 0x6AC3, 0x6AC3, 0x14DE, 0x6AC5, 0x6AC5, 0x2F34, 0x6AC6, 0x6AC6, 0x2F38, + 0x6AC7, 0x6AC7, 0x2F3C, 0x6AC8, 0x6AC8, 0x41F5, 0x6AC9, 0x6AC9, 0x3AA6, + 0x6ACA, 0x6ACA, 0x3F4C, 0x6ACB, 0x6ACB, 0x309F, 0x6ACC, 0x6ACC, 0x309C, + 0x6ACD, 0x6ACD, 0x30A5, 0x6ACF, 0x6ACF, 0x30A4, 0x6AD0, 0x6AD0, 0x30A2, + 0x6AD1, 0x6AD1, 0x309D, 0x6AD3, 0x6AD3, 0x1589, 0x6AD4, 0x6AD4, 0x4669, + 0x6AD8, 0x6AD8, 0x3CAA, 0x6AD9, 0x6AD9, 0x309E, 0x6ADA, 0x6ADA, 0x1588, + 0x6ADB, 0x6ADB, 0x13EA, 0x6ADC, 0x6ADC, 0x30A1, 0x6ADD, 0x6ADD, 0x1587, + 0x6ADE, 0x6ADE, 0x30A6, 0x6ADF, 0x6ADF, 0x30A0, 0x6AE0, 0x6AE0, 0x309B, + 0x6AE1, 0x6AE1, 0x2F37, 0x6AE5, 0x6AE5, 0x1586, 0x6AE7, 0x6AE7, 0x309A, + 0x6AE8, 0x6AE8, 0x31DF, 0x6AEA, 0x6AEA, 0x31DE, 0x6AEB, 0x6AEB, 0x30A3, + 0x6AEC, 0x6AEC, 0x161B, 0x6AEE, 0x6AEF, 0x31E2, 0x6AF0, 0x6AF0, 0x31DD, + 0x6AF1, 0x6AF1, 0x31E1, 0x6AF3, 0x6AF3, 0x31DC, 0x6AF6, 0x6AF6, 0x466A, + 0x6AF8, 0x6AF8, 0x32D6, 0x6AF9, 0x6AF9, 0x31E0, 0x6AFA, 0x6AFA, 0x1678, + 0x6AFB, 0x6AFB, 0x1676, 0x6AFC, 0x6AFC, 0x32D4, 0x6B00, 0x6B00, 0x32D7, + 0x6B02, 0x6B02, 0x32D3, 0x6B03, 0x6B03, 0x32D5, 0x6B04, 0x6B04, 0x1677, + 0x6B05, 0x6B05, 0x3AA7, 0x6B08, 0x6B09, 0x3386, 0x6B0A, 0x6B0A, 0x16C6, + 0x6B0B, 0x6B0B, 0x3385, 0x6B0F, 0x6B0F, 0x3420, 0x6B10, 0x6B10, 0x16FD, + 0x6B11, 0x6B12, 0x341E, 0x6B13, 0x6B13, 0x3487, 0x6B16, 0x6B16, 0x1743, + 0x6B17, 0x6B17, 0x34CE, 0x6B18, 0x6B19, 0x34CC, 0x6B1A, 0x6B1A, 0x34CF, + 0x6B1D, 0x6B1D, 0x41F8, 0x6B1E, 0x6B1E, 0x3534, 0x6B20, 0x6B20, 0x02DE, + 0x6B21, 0x6B21, 0x03E3, 0x6B23, 0x6B23, 0x061A, 0x6B25, 0x6B25, 0x19C9, + 0x6B28, 0x6B28, 0x1B3D, 0x6B2C, 0x6B2C, 0x1CE6, 0x6B2D, 0x6B2D, 0x1CE8, + 0x6B2F, 0x6B2F, 0x1CE7, 0x6B31, 0x6B31, 0x1CE9, 0x6B32, 0x6B32, 0x0AE7, + 0x6B33, 0x6B33, 0x1F3C, 0x6B34, 0x6B34, 0x1CEA, 0x6B35, 0x6B35, 0x41FB, + 0x6B36, 0x6B36, 0x1F3B, 0x6B37, 0x6B38, 0x1F3D, 0x6B39, 0x6B39, 0x21B2, + 0x6B3A, 0x6B3A, 0x0C9C, 0x6B3B, 0x6B3B, 0x21B3, 0x6B3C, 0x6B3C, 0x21B5, + 0x6B3D, 0x6B3D, 0x0C9D, 0x6B3E, 0x6B3E, 0x0C9B, 0x6B3F, 0x6B3F, 0x21B4, + 0x6B41, 0x6B41, 0x2447, 0x6B42, 0x6B42, 0x2445, 0x6B43, 0x6B43, 0x2444, + 0x6B45, 0x6B45, 0x2443, 0x6B46, 0x6B46, 0x2442, 0x6B47, 0x6B47, 0x0E4A, + 0x6B48, 0x6B48, 0x2446, 0x6B49, 0x6B49, 0x1001, 0x6B4A, 0x6B4A, 0x26E2, + 0x6B4B, 0x6B4B, 0x26E4, 0x6B4C, 0x6B4C, 0x1002, 0x6B4D, 0x6B4D, 0x26E3, + 0x6B4E, 0x6B4E, 0x1185, 0x6B50, 0x6B50, 0x1184, 0x6B51, 0x6B51, 0x2924, + 0x6B52, 0x6B52, 0x3F6E, 0x6B54, 0x6B54, 0x2B89, 0x6B55, 0x6B55, 0x2B88, + 0x6B56, 0x6B56, 0x2B8A, 0x6B57, 0x6B57, 0x3AAE, 0x6B59, 0x6B59, 0x12DC, + 0x6B5B, 0x6B5B, 0x2D8A, 0x6B5C, 0x6B5C, 0x13F0, 0x6B5E, 0x6B5E, 0x2F3F, + 0x6B5F, 0x6B5F, 0x14E4, 0x6B60, 0x6B60, 0x30A7, 0x6B61, 0x6B61, 0x16C7, + 0x6B62, 0x6B62, 0x02DF, 0x6B63, 0x6B63, 0x034D, 0x6B64, 0x6B64, 0x03E4, + 0x6B65, 0x6B65, 0x04C9, 0x6B66, 0x6B67, 0x061B, 0x6B6A, 0x6B6A, 0x0769, + 0x6B6D, 0x6B6D, 0x1CEB, 0x6B6F, 0x6B6F, 0x4515, 0x6B72, 0x6B72, 0x0E4B, + 0x6B74, 0x6B74, 0x41FC, 0x6B76, 0x6B76, 0x29A2, 0x6B77, 0x6B77, 0x12DD, + 0x6B78, 0x6B78, 0x14E5, 0x6B79, 0x6B79, 0x02E0, 0x6B7A, 0x6B7A, 0x44EE, + 0x6B7B, 0x6B7B, 0x03E5, 0x6B7E, 0x6B7E, 0x19CB, 0x6B7F, 0x6B7F, 0x061D, + 0x6B80, 0x6B80, 0x19CA, 0x6B81, 0x6B81, 0x466B, 0x6B82, 0x6B82, 0x1B3E, + 0x6B83, 0x6B83, 0x076A, 0x6B84, 0x6B84, 0x1B3F, 0x6B86, 0x6B86, 0x076B, + 0x6B88, 0x6B88, 0x1CED, 0x6B89, 0x6B89, 0x0900, 0x6B8A, 0x6B8A, 0x08FF, + 0x6B8C, 0x6B8C, 0x1F43, 0x6B8D, 0x6B8E, 0x1F41, 0x6B8F, 0x6B8F, 0x1F40, + 0x6B91, 0x6B91, 0x1F3F, 0x6B94, 0x6B94, 0x21B6, 0x6B95, 0x6B95, 0x21B9, + 0x6B96, 0x6B96, 0x0C9F, 0x6B97, 0x6B97, 0x21B7, 0x6B98, 0x6B98, 0x0C9E, + 0x6B99, 0x6B99, 0x21B8, 0x6B9B, 0x6B9B, 0x2448, 0x6B9E, 0x6BA0, 0x26E5, + 0x6BA2, 0x6BA2, 0x2927, 0x6BA3, 0x6BA3, 0x2926, 0x6BA4, 0x6BA4, 0x1186, + 0x6BA5, 0x6BA5, 0x2925, 0x6BA6, 0x6BA6, 0x2928, 0x6BA7, 0x6BA7, 0x2B8B, + 0x6BAA, 0x6BAB, 0x2B8C, 0x6BAD, 0x6BAD, 0x2D8B, 0x6BAE, 0x6BAE, 0x13F1, + 0x6BAF, 0x6BAF, 0x14E6, 0x6BB0, 0x6BB0, 0x30A8, 0x6BB2, 0x6BB2, 0x1679, + 0x6BB3, 0x6BB3, 0x178A, 0x6BB5, 0x6BB5, 0x076C, 0x6BB6, 0x6BB6, 0x1B40, + 0x6BB7, 0x6BB7, 0x0901, 0x6BBA, 0x6BBA, 0x0AE8, 0x6BBC, 0x6BBC, 0x0CA0, + 0x6BBD, 0x6BBD, 0x21BA, 0x6BBF, 0x6BBF, 0x0E4D, 0x6BC0, 0x6BC0, 0x0E4C, + 0x6BC1, 0x6BC1, 0x466C, 0x6BC3, 0x6BC4, 0x26E8, 0x6BC5, 0x6BC6, 0x1187, + 0x6BC7, 0x6BC7, 0x2B8F, 0x6BC8, 0x6BC8, 0x2B8E, 0x6BC9, 0x6BC9, 0x2F40, + 0x6BCA, 0x6BCA, 0x3421, 0x6BCB, 0x6BCB, 0x02E1, 0x6BCC, 0x6BCC, 0x178B, + 0x6BCD, 0x6BCD, 0x034E, 0x6BCF, 0x6BCF, 0x04CA, 0x6BD0, 0x6BD0, 0x18AD, + 0x6BD2, 0x6BD2, 0x076D, 0x6BD3, 0x6BD3, 0x0E4E, 0x6BD4, 0x6BD4, 0x02E2, + 0x6BD6, 0x6BD6, 0x1B41, 0x6BD7, 0x6BD7, 0x076E, 0x6BD8, 0x6BD8, 0x1B42, + 0x6BDA, 0x6BDA, 0x13F2, 0x6BDB, 0x6BDB, 0x02E3, 0x6BDC, 0x6BDC, 0x4207, + 0x6BDE, 0x6BDE, 0x19CC, 0x6BE0, 0x6BE0, 0x1B43, 0x6BE1, 0x6BE1, 0x4205, + 0x6BE2, 0x6BE2, 0x1CF2, 0x6BE3, 0x6BE3, 0x1CF1, 0x6BE4, 0x6BE4, 0x1CEF, + 0x6BE6, 0x6BE6, 0x1CEE, 0x6BE7, 0x6BE7, 0x1CF3, 0x6BE8, 0x6BE8, 0x1CF0, + 0x6BEA, 0x6BEA, 0x466D, 0x6BEB, 0x6BEC, 0x0AE9, 0x6BEF, 0x6BEF, 0x0CA1, + 0x6BF0, 0x6BF0, 0x21BB, 0x6BF2, 0x6BF3, 0x21BC, 0x6BF7, 0x6BF8, 0x244C, + 0x6BF9, 0x6BF9, 0x244B, 0x6BFA, 0x6BFA, 0x3F79, 0x6BFB, 0x6BFC, 0x2449, + 0x6BFD, 0x6BFD, 0x0E4F, 0x6BFE, 0x6BFE, 0x26EA, 0x6BFF, 0x6BFF, 0x292B, + 0x6C00, 0x6C00, 0x292A, 0x6C01, 0x6C01, 0x2929, 0x6C02, 0x6C02, 0x292C, + 0x6C03, 0x6C03, 0x2B91, 0x6C04, 0x6C04, 0x2B90, 0x6C05, 0x6C05, 0x12DE, + 0x6C06, 0x6C06, 0x2B92, 0x6C08, 0x6C08, 0x13F3, 0x6C09, 0x6C09, 0x2D8C, + 0x6C0B, 0x6C0B, 0x2F41, 0x6C0C, 0x6C0C, 0x30A9, 0x6C0D, 0x6C0D, 0x3388, + 0x6C0F, 0x6C0F, 0x02E4, 0x6C10, 0x6C10, 0x0350, 0x6C11, 0x6C11, 0x034F, + 0x6C13, 0x6C13, 0x061E, 0x6C14, 0x6C14, 0x178C, 0x6C15, 0x6C15, 0x17AA, + 0x6C16, 0x6C16, 0x03E6, 0x6C18, 0x6C18, 0x1801, 0x6C19, 0x6C1A, 0x18AE, + 0x6C1B, 0x6C1B, 0x061F, 0x6C1C, 0x6C1C, 0x38AB, 0x6C1D, 0x6C1D, 0x19CD, + 0x6C1F, 0x6C1F, 0x076F, 0x6C20, 0x6C21, 0x1B44, 0x6C23, 0x6C23, 0x0902, + 0x6C24, 0x6C24, 0x0906, 0x6C25, 0x6C25, 0x1CF4, 0x6C26, 0x6C26, 0x0905, + 0x6C27, 0x6C28, 0x0903, 0x6C2A, 0x6C2A, 0x1F44, 0x6C2B, 0x6C2B, 0x0AEB, + 0x6C2C, 0x6C2C, 0x0CA4, 0x6C2E, 0x6C2F, 0x0CA2, 0x6C30, 0x6C30, 0x21BE, + 0x6C31, 0x6C31, 0x3F63, 0x6C33, 0x6C33, 0x1003, 0x6C34, 0x6C34, 0x02E5, + 0x6C35, 0x6C35, 0x44EF, 0x6C36, 0x6C36, 0x17AB, 0x6C37, 0x6C37, 0x4208, + 0x6C38, 0x6C38, 0x0351, 0x6C39, 0x6C39, 0x3E05, 0x6C3A, 0x6C3A, 0x44F0, + 0x6C3B, 0x6C3B, 0x17AE, 0x6C3D, 0x6C3D, 0x4381, 0x6C3E, 0x6C3E, 0x0354, + 0x6C3F, 0x6C3F, 0x17AD, 0x6C40, 0x6C40, 0x0353, 0x6C41, 0x6C41, 0x0352, + 0x6C42, 0x6C42, 0x04CB, 0x6C43, 0x6C43, 0x17AC, 0x6C46, 0x6C46, 0x1802, + 0x6C49, 0x6C49, 0x408D, 0x6C4A, 0x6C4A, 0x1806, 0x6C4B, 0x6C4C, 0x1808, + 0x6C4D, 0x6C4E, 0x03F0, 0x6C4F, 0x6C4F, 0x1805, 0x6C50, 0x6C50, 0x03EC, + 0x6C52, 0x6C52, 0x1803, 0x6C54, 0x6C54, 0x1807, 0x6C55, 0x6C55, 0x03ED, + 0x6C57, 0x6C57, 0x03E8, 0x6C58, 0x6C58, 0x3BBA, 0x6C59, 0x6C59, 0x03E9, + 0x6C5A, 0x6C5A, 0x420C, 0x6C5B, 0x6C5B, 0x03EF, 0x6C5C, 0x6C5C, 0x1804, + 0x6C5D, 0x6C5D, 0x03E7, 0x6C5E, 0x6C5E, 0x04CC, 0x6C5F, 0x6C60, 0x03EA, + 0x6C61, 0x6C61, 0x03EE, 0x6C65, 0x6C65, 0x18C0, 0x6C66, 0x6C66, 0x18BE, + 0x6C67, 0x6C67, 0x18B1, 0x6C68, 0x6C68, 0x04D8, 0x6C69, 0x6C69, 0x18B8, + 0x6C6A, 0x6C6A, 0x04D3, 0x6C6B, 0x6C6B, 0x18B2, 0x6C6D, 0x6C6D, 0x18BA, + 0x6C6E, 0x6C6E, 0x40CA, 0x6C6F, 0x6C6F, 0x18B7, 0x6C70, 0x6C70, 0x04D6, + 0x6C71, 0x6C71, 0x18B6, 0x6C72, 0x6C72, 0x04DD, 0x6C73, 0x6C73, 0x18BF, + 0x6C74, 0x6C74, 0x04DF, 0x6C75, 0x6C75, 0x466E, 0x6C76, 0x6C76, 0x04E1, + 0x6C78, 0x6C78, 0x18B0, 0x6C79, 0x6C79, 0x420E, 0x6C7A, 0x6C7A, 0x04D4, + 0x6C7B, 0x6C7B, 0x18C1, 0x6C7D, 0x6C7D, 0x04DB, 0x6C7E, 0x6C7E, 0x04DE, + 0x6C7F, 0x6C7F, 0x37A6, 0x6C80, 0x6C80, 0x19E4, 0x6C81, 0x6C81, 0x04CE, + 0x6C82, 0x6C82, 0x04E5, 0x6C83, 0x6C83, 0x04DC, 0x6C84, 0x6C84, 0x18B3, + 0x6C85, 0x6C85, 0x04D1, 0x6C86, 0x6C86, 0x04E0, 0x6C87, 0x6C87, 0x18BB, + 0x6C88, 0x6C89, 0x04CF, 0x6C8A, 0x6C8A, 0x19E2, 0x6C8B, 0x6C8B, 0x18B4, + 0x6C8C, 0x6C8C, 0x04D7, 0x6C8D, 0x6C8D, 0x04E2, 0x6C8E, 0x6C8E, 0x18C2, + 0x6C8F, 0x6C8F, 0x18B5, 0x6C90, 0x6C90, 0x04D5, 0x6C92, 0x6C92, 0x04DA, + 0x6C93, 0x6C93, 0x19CE, 0x6C94, 0x6C94, 0x04E3, 0x6C95, 0x6C95, 0x18BC, + 0x6C96, 0x6C96, 0x04D9, 0x6C98, 0x6C98, 0x04E4, 0x6C99, 0x6C99, 0x04CD, + 0x6C9A, 0x6C9A, 0x18B9, 0x6C9B, 0x6C9B, 0x04D2, 0x6C9C, 0x6C9C, 0x18BD, + 0x6C9D, 0x6C9D, 0x19E3, 0x6C9F, 0x6C9F, 0x3889, 0x6CA2, 0x6CA2, 0x3D63, + 0x6CAA, 0x6CAA, 0x466F, 0x6CAB, 0x6CAB, 0x062B, 0x6CAC, 0x6CAC, 0x063B, + 0x6CAD, 0x6CAD, 0x19D5, 0x6CAE, 0x6CAE, 0x0632, 0x6CAF, 0x6CAF, 0x3CF6, + 0x6CB0, 0x6CB0, 0x19EA, 0x6CB1, 0x6CB1, 0x0623, 0x6CB2, 0x6CB2, 0x3ECC, + 0x6CB3, 0x6CB3, 0x0626, 0x6CB4, 0x6CB4, 0x19E1, 0x6CB6, 0x6CB6, 0x19D3, + 0x6CB7, 0x6CB7, 0x19D7, 0x6CB8, 0x6CB8, 0x062E, 0x6CB9, 0x6CB9, 0x0630, + 0x6CBA, 0x6CBA, 0x19DA, 0x6CBB, 0x6CBB, 0x0637, 0x6CBC, 0x6CBC, 0x0629, + 0x6CBD, 0x6CBE, 0x0627, 0x6CBF, 0x6CBF, 0x0636, 0x6CC0, 0x6CC0, 0x19E6, + 0x6CC1, 0x6CC1, 0x0631, 0x6CC2, 0x6CC2, 0x19D9, 0x6CC3, 0x6CC3, 0x19DB, + 0x6CC4, 0x6CC4, 0x062F, 0x6CC5, 0x6CC5, 0x0634, 0x6CC6, 0x6CC6, 0x19DC, + 0x6CC7, 0x6CC7, 0x19E9, 0x6CC9, 0x6CC9, 0x0770, 0x6CCA, 0x6CCA, 0x063A, + 0x6CCB, 0x6CCB, 0x4070, 0x6CCC, 0x6CCC, 0x0624, 0x6CCD, 0x6CCD, 0x19E8, + 0x6CCE, 0x6CCE, 0x3F91, 0x6CCF, 0x6CCF, 0x19EC, 0x6CD0, 0x6CD0, 0x19D8, + 0x6CD1, 0x6CD1, 0x19EE, 0x6CD2, 0x6CD2, 0x19DF, 0x6CD3, 0x6CD3, 0x062D, + 0x6CD4, 0x6CD4, 0x19D4, 0x6CD5, 0x6CD5, 0x062C, 0x6CD6, 0x6CD6, 0x063E, + 0x6CD7, 0x6CD7, 0x0633, 0x6CD9, 0x6CD9, 0x19D2, 0x6CDA, 0x6CDA, 0x1B4E, + 0x6CDB, 0x6CDB, 0x0639, 0x6CDC, 0x6CDC, 0x063D, 0x6CDD, 0x6CDD, 0x19E0, + 0x6CDE, 0x6CDE, 0x19E5, 0x6CDF, 0x6CDF, 0x3D57, 0x6CE0, 0x6CE0, 0x063F, + 0x6CE1, 0x6CE1, 0x0638, 0x6CE2, 0x6CE2, 0x062A, 0x6CE3, 0x6CE3, 0x0620, + 0x6CE5, 0x6CE5, 0x0625, 0x6CE7, 0x6CE7, 0x19D6, 0x6CE8, 0x6CE8, 0x0621, + 0x6CE9, 0x6CE9, 0x19ED, 0x6CEA, 0x6CEA, 0x3F8D, 0x6CEB, 0x6CEB, 0x19D0, + 0x6CEC, 0x6CEC, 0x19CF, 0x6CED, 0x6CED, 0x19DD, 0x6CEE, 0x6CEE, 0x19D1, + 0x6CEF, 0x6CEF, 0x063C, 0x6CF0, 0x6CF0, 0x0907, 0x6CF1, 0x6CF1, 0x0635, + 0x6CF2, 0x6CF2, 0x19DE, 0x6CF3, 0x6CF3, 0x0622, 0x6CF5, 0x6CF5, 0x077F, + 0x6CF9, 0x6CF9, 0x19EB, 0x6D00, 0x6D00, 0x1B55, 0x6D01, 0x6D01, 0x1B58, + 0x6D02, 0x6D02, 0x4671, 0x6D03, 0x6D03, 0x1B5B, 0x6D04, 0x6D04, 0x1B50, + 0x6D05, 0x6D05, 0x3A19, 0x6D06, 0x6D06, 0x4672, 0x6D07, 0x6D07, 0x1B5E, + 0x6D08, 0x6D08, 0x1B61, 0x6D09, 0x6D09, 0x1B63, 0x6D0A, 0x6D0A, 0x1B4D, + 0x6D0B, 0x6D0B, 0x0771, 0x6D0C, 0x6D0C, 0x0776, 0x6D0D, 0x6D0D, 0x1CF9, + 0x6D0E, 0x6D0E, 0x0786, 0x6D0F, 0x6D0F, 0x1B5C, 0x6D10, 0x6D10, 0x1B64, + 0x6D11, 0x6D11, 0x1B54, 0x6D12, 0x6D12, 0x1B4C, 0x6D16, 0x6D16, 0x1D14, + 0x6D17, 0x6D17, 0x0779, 0x6D18, 0x6D18, 0x1B59, 0x6D19, 0x6D19, 0x1B51, + 0x6D1A, 0x6D1A, 0x1B53, 0x6D1B, 0x6D1B, 0x077E, 0x6D1D, 0x6D1D, 0x1B56, + 0x6D1E, 0x6D1E, 0x0778, 0x6D1F, 0x6D1F, 0x1B49, 0x6D20, 0x6D20, 0x1B5F, + 0x6D22, 0x6D22, 0x1B62, 0x6D24, 0x6D24, 0x3AC3, 0x6D25, 0x6D25, 0x0775, + 0x6D26, 0x6D26, 0x4673, 0x6D27, 0x6D27, 0x0781, 0x6D28, 0x6D28, 0x1B46, + 0x6D29, 0x6D29, 0x0783, 0x6D2A, 0x6D2A, 0x0773, 0x6D2B, 0x6D2B, 0x0787, + 0x6D2C, 0x6D2C, 0x1B60, 0x6D2D, 0x6D2D, 0x1B48, 0x6D2E, 0x6D2E, 0x0784, + 0x6D2F, 0x6D2F, 0x1D0E, 0x6D30, 0x6D30, 0x19E7, 0x6D31, 0x6D31, 0x0777, + 0x6D32, 0x6D32, 0x0772, 0x6D33, 0x6D33, 0x1B4F, 0x6D34, 0x6D34, 0x1B47, + 0x6D35, 0x6D35, 0x0785, 0x6D36, 0x6D36, 0x077D, 0x6D37, 0x6D37, 0x1B5A, + 0x6D38, 0x6D38, 0x0782, 0x6D39, 0x6D39, 0x0780, 0x6D3A, 0x6D3A, 0x1B52, + 0x6D3B, 0x6D3B, 0x077A, 0x6D3C, 0x6D3C, 0x1B4A, 0x6D3D, 0x6D3E, 0x077B, + 0x6D3F, 0x6D3F, 0x1B4B, 0x6D40, 0x6D40, 0x1B5D, 0x6D41, 0x6D41, 0x0774, + 0x6D42, 0x6D42, 0x1B57, 0x6D4E, 0x6D4E, 0x4558, 0x6D57, 0x6D57, 0x3CF3, + 0x6D58, 0x6D58, 0x1CFC, 0x6D59, 0x6D59, 0x090F, 0x6D5A, 0x6D5A, 0x0914, + 0x6D5B, 0x6D5B, 0x409C, 0x6D5C, 0x6D5C, 0x4222, 0x6D5E, 0x6D5E, 0x1D05, + 0x6D5F, 0x6D5F, 0x1D0B, 0x6D60, 0x6D60, 0x1D07, 0x6D61, 0x6D61, 0x1CFA, + 0x6D62, 0x6D62, 0x1CFD, 0x6D63, 0x6D64, 0x1CF6, 0x6D65, 0x6D65, 0x091B, + 0x6D66, 0x6D66, 0x090C, 0x6D67, 0x6D67, 0x1D06, 0x6D68, 0x6D68, 0x1D0F, + 0x6D69, 0x6D69, 0x0916, 0x6D6A, 0x6D6A, 0x0908, 0x6D6C, 0x6D6C, 0x0911, + 0x6D6D, 0x6D6D, 0x1CFE, 0x6D6E, 0x6D6E, 0x0913, 0x6D6F, 0x6D6F, 0x1CFF, + 0x6D70, 0x6D70, 0x1D09, 0x6D71, 0x6D71, 0x40F5, 0x6D72, 0x6D72, 0x39D7, + 0x6D74, 0x6D74, 0x0915, 0x6D75, 0x6D75, 0x1D18, 0x6D76, 0x6D76, 0x1CF8, + 0x6D77, 0x6D77, 0x090E, 0x6D78, 0x6D78, 0x090D, 0x6D79, 0x6D79, 0x0919, + 0x6D7A, 0x6D7A, 0x1CF5, 0x6D7B, 0x6D7B, 0x1D16, 0x6D7C, 0x6D7C, 0x1D0A, + 0x6D7D, 0x6D7D, 0x1D17, 0x6D7E, 0x6D7E, 0x1D11, 0x6D7F, 0x6D7F, 0x1D03, + 0x6D80, 0x6D80, 0x1D12, 0x6D81, 0x6D81, 0x4674, 0x6D82, 0x6D82, 0x1D0C, + 0x6D83, 0x6D83, 0x1D15, 0x6D84, 0x6D84, 0x1D13, 0x6D85, 0x6D85, 0x091A, + 0x6D86, 0x6D86, 0x1D04, 0x6D87, 0x6D87, 0x090B, 0x6D88, 0x6D88, 0x090A, + 0x6D89, 0x6D89, 0x0912, 0x6D8A, 0x6D8A, 0x0918, 0x6D8B, 0x6D8B, 0x1D10, + 0x6D8C, 0x6D8C, 0x0917, 0x6D8D, 0x6D8D, 0x1D01, 0x6D8E, 0x6D8E, 0x0AEC, + 0x6D8F, 0x6D8F, 0x3DE8, 0x6D90, 0x6D90, 0x1D19, 0x6D91, 0x6D91, 0x1D00, + 0x6D92, 0x6D92, 0x1CFB, 0x6D93, 0x6D93, 0x0910, 0x6D94, 0x6D94, 0x091C, + 0x6D95, 0x6D95, 0x0909, 0x6D96, 0x6D96, 0x4221, 0x6D97, 0x6D97, 0x1D08, + 0x6D98, 0x6D98, 0x1D0D, 0x6DA4, 0x6DA4, 0x4676, 0x6DA5, 0x6DA5, 0x3AB9, + 0x6DAA, 0x6DAA, 0x0B0E, 0x6DAB, 0x6DAB, 0x1F46, 0x6DAC, 0x6DAC, 0x1F4A, + 0x6DAE, 0x6DAE, 0x0AFB, 0x6DAF, 0x6DAF, 0x0AF9, 0x6DB1, 0x6DB1, 0x4677, + 0x6DB2, 0x6DB2, 0x0AF0, 0x6DB3, 0x6DB3, 0x1F48, 0x6DB4, 0x6DB4, 0x1F47, + 0x6DB5, 0x6DB5, 0x0B04, 0x6DB7, 0x6DB7, 0x1F4D, 0x6DB8, 0x6DB8, 0x0AFE, + 0x6DB9, 0x6DB9, 0x3FFB, 0x6DBA, 0x6DBA, 0x1F5F, 0x6DBB, 0x6DBB, 0x1F6B, + 0x6DBC, 0x6DBC, 0x0AED, 0x6DBD, 0x6DBD, 0x1F5C, 0x6DBE, 0x6DBE, 0x1F55, + 0x6DBF, 0x6DBF, 0x0B10, 0x6DC0, 0x6DC0, 0x1F45, 0x6DC2, 0x6DC2, 0x1F61, + 0x6DC4, 0x6DC4, 0x0B0D, 0x6DC5, 0x6DC5, 0x0B01, 0x6DC6, 0x6DC6, 0x0B0C, + 0x6DC7, 0x6DC7, 0x0AF7, 0x6DC8, 0x6DC8, 0x1F51, 0x6DC9, 0x6DC9, 0x1F63, + 0x6DCA, 0x6DCA, 0x1F5B, 0x6DCB, 0x6DCB, 0x0AF8, 0x6DCC, 0x6DCC, 0x0AF2, + 0x6DCD, 0x6DCD, 0x1F69, 0x6DCF, 0x6DCF, 0x1F62, 0x6DD0, 0x6DD0, 0x1F64, + 0x6DD1, 0x6DD1, 0x0AFA, 0x6DD2, 0x6DD2, 0x0B02, 0x6DD3, 0x6DD3, 0x1F66, + 0x6DD4, 0x6DD4, 0x1F4F, 0x6DD5, 0x6DD5, 0x1F60, 0x6DD6, 0x6DD6, 0x1F54, + 0x6DD7, 0x6DD7, 0x1F68, 0x6DD8, 0x6DD8, 0x0B07, 0x6DD9, 0x6DD9, 0x0AEF, + 0x6DDA, 0x6DDA, 0x0B05, 0x6DDB, 0x6DDB, 0x1F59, 0x6DDC, 0x6DDD, 0x1F57, + 0x6DDE, 0x6DDE, 0x0AFC, 0x6DDF, 0x6DDF, 0x1F53, 0x6DE0, 0x6DE0, 0x1F52, + 0x6DE1, 0x6DE1, 0x0AF1, 0x6DE2, 0x6DE2, 0x1F4C, 0x6DE3, 0x6DE3, 0x1F6A, + 0x6DE4, 0x6DE4, 0x0AF3, 0x6DE5, 0x6DE5, 0x1F56, 0x6DE6, 0x6DE6, 0x0B11, + 0x6DE8, 0x6DE8, 0x0B0B, 0x6DE9, 0x6DE9, 0x1F4B, 0x6DEA, 0x6DEA, 0x0B08, + 0x6DEB, 0x6DEB, 0x0B06, 0x6DEC, 0x6DEC, 0x0B0F, 0x6DED, 0x6DED, 0x1F5D, + 0x6DEE, 0x6DEE, 0x0B0A, 0x6DEF, 0x6DEF, 0x1D02, 0x6DF0, 0x6DF0, 0x1F5E, + 0x6DF1, 0x6DF1, 0x0B09, 0x6DF2, 0x6DF2, 0x1F65, 0x6DF3, 0x6DF3, 0x0AEE, + 0x6DF4, 0x6DF4, 0x1F5A, 0x6DF5, 0x6DF5, 0x0B00, 0x6DF6, 0x6DF6, 0x1F4E, + 0x6DF7, 0x6DF7, 0x0AFF, 0x6DF9, 0x6DF9, 0x0AFD, 0x6DFA, 0x6DFA, 0x0AF5, + 0x6DFB, 0x6DFB, 0x0AF4, 0x6DFC, 0x6DFC, 0x21BF, 0x6DFD, 0x6DFD, 0x1F67, + 0x6E00, 0x6E00, 0x1F50, 0x6E02, 0x6E02, 0x3CFA, 0x6E03, 0x6E03, 0x21D4, + 0x6E04, 0x6E04, 0x3ABE, 0x6E05, 0x6E05, 0x0AF6, 0x6E0A, 0x6E0A, 0x3AC1, + 0x6E0F, 0x6E0F, 0x3CF0, 0x6E15, 0x6E15, 0x4678, 0x6E18, 0x6E18, 0x4679, + 0x6E19, 0x6E19, 0x0CC1, 0x6E1A, 0x6E1A, 0x0B03, 0x6E1B, 0x6E1B, 0x0CAF, + 0x6E1C, 0x6E1C, 0x21CE, 0x6E1D, 0x6E1D, 0x0CBD, 0x6E1F, 0x6E1F, 0x21C2, + 0x6E20, 0x6E20, 0x0CAC, 0x6E21, 0x6E21, 0x0CA8, 0x6E22, 0x6E22, 0x21E0, + 0x6E23, 0x6E23, 0x0CAE, 0x6E24, 0x6E24, 0x0CB2, 0x6E25, 0x6E25, 0x0CAD, + 0x6E26, 0x6E26, 0x0CB6, 0x6E27, 0x6E27, 0x21E4, 0x6E28, 0x6E28, 0x21DB, + 0x6E29, 0x6E29, 0x467A, 0x6E2A, 0x6E2A, 0x4302, 0x6E2B, 0x6E2B, 0x21C9, + 0x6E2C, 0x6E2C, 0x0CBB, 0x6E2D, 0x6E2D, 0x0CB5, 0x6E2E, 0x6E2E, 0x21D5, + 0x6E2F, 0x6E2F, 0x0CA5, 0x6E30, 0x6E30, 0x21E1, 0x6E31, 0x6E31, 0x21DA, + 0x6E32, 0x6E32, 0x0CA9, 0x6E33, 0x6E33, 0x21CF, 0x6E34, 0x6E34, 0x0CB8, + 0x6E35, 0x6E36, 0x21EC, 0x6E38, 0x6E38, 0x0CA6, 0x6E39, 0x6E39, 0x21DF, + 0x6E3A, 0x6E3A, 0x0CBA, 0x6E3B, 0x6E3B, 0x21D3, 0x6E3C, 0x6E3D, 0x21C5, + 0x6E3E, 0x6E3E, 0x0CBE, 0x6E3F, 0x6E3F, 0x21CA, 0x6E40, 0x6E40, 0x21D1, + 0x6E41, 0x6E41, 0x21CB, 0x6E43, 0x6E43, 0x0CBC, 0x6E44, 0x6E44, 0x0CC4, + 0x6E45, 0x6E45, 0x21C7, 0x6E46, 0x6E47, 0x21C0, 0x6E49, 0x6E49, 0x21C3, + 0x6E4A, 0x6E4A, 0x0CAB, 0x6E4B, 0x6E4B, 0x21D0, 0x6E4D, 0x6E4D, 0x0CB9, + 0x6E4E, 0x6E4E, 0x0CC2, 0x6E4F, 0x6E4F, 0x4234, 0x6E50, 0x6E50, 0x41D1, + 0x6E51, 0x6E51, 0x21D2, 0x6E52, 0x6E52, 0x21EA, 0x6E53, 0x6E53, 0x21E2, + 0x6E54, 0x6E54, 0x0CA7, 0x6E55, 0x6E55, 0x21E8, 0x6E56, 0x6E56, 0x0CB3, + 0x6E58, 0x6E58, 0x0CB1, 0x6E59, 0x6E59, 0x40E6, 0x6E5A, 0x6E5A, 0x21EE, + 0x6E5B, 0x6E5B, 0x0CB0, 0x6E5C, 0x6E5C, 0x21D8, 0x6E5D, 0x6E5D, 0x21CC, + 0x6E5E, 0x6E5E, 0x21D6, 0x6E5F, 0x6E5F, 0x0CC7, 0x6E60, 0x6E60, 0x21DC, + 0x6E61, 0x6E61, 0x21D9, 0x6E62, 0x6E62, 0x21C8, 0x6E63, 0x6E63, 0x0CC3, + 0x6E64, 0x6E64, 0x21E6, 0x6E65, 0x6E65, 0x21E3, 0x6E66, 0x6E66, 0x21EB, + 0x6E67, 0x6E67, 0x0CAA, 0x6E68, 0x6E68, 0x21D7, 0x6E69, 0x6E69, 0x0CC6, + 0x6E6B, 0x6E6B, 0x21DE, 0x6E6E, 0x6E6E, 0x0CB4, 0x6E6F, 0x6E6F, 0x0CB7, + 0x6E71, 0x6E71, 0x21DD, 0x6E72, 0x6E72, 0x0CC5, 0x6E73, 0x6E73, 0x21CD, + 0x6E74, 0x6E74, 0x1F49, 0x6E76, 0x6E76, 0x39D3, 0x6E77, 0x6E77, 0x21E7, + 0x6E78, 0x6E78, 0x21E5, 0x6E79, 0x6E79, 0x21E9, 0x6E7C, 0x6E7C, 0x4223, + 0x6E86, 0x6E86, 0x467B, 0x6E88, 0x6E88, 0x21C4, 0x6E89, 0x6E89, 0x0CC0, + 0x6E8B, 0x6E8B, 0x3BBF, 0x6E8D, 0x6E8D, 0x246C, 0x6E8E, 0x6E8E, 0x246B, + 0x6E8F, 0x6E8F, 0x2451, 0x6E90, 0x6E90, 0x0E55, 0x6E92, 0x6E92, 0x246A, + 0x6E93, 0x6E94, 0x2454, 0x6E96, 0x6E96, 0x0E5F, 0x6E97, 0x6E97, 0x2473, + 0x6E98, 0x6E98, 0x0E5A, 0x6E99, 0x6E99, 0x2469, 0x6E9A, 0x6E9A, 0x4581, + 0x6E9B, 0x6E9B, 0x244E, 0x6E9C, 0x6E9C, 0x0E60, 0x6E9D, 0x6E9D, 0x0E56, + 0x6E9E, 0x6E9E, 0x245D, 0x6E9F, 0x6E9F, 0x2453, 0x6EA0, 0x6EA0, 0x2456, + 0x6EA1, 0x6EA1, 0x246E, 0x6EA2, 0x6EA2, 0x0E50, 0x6EA3, 0x6EA3, 0x2475, + 0x6EA4, 0x6EA4, 0x246D, 0x6EA5, 0x6EA5, 0x0E59, 0x6EA6, 0x6EA6, 0x2462, + 0x6EA7, 0x6EA7, 0x0E64, 0x6EAA, 0x6EAA, 0x0E63, 0x6EAB, 0x6EAB, 0x0E5D, + 0x6EAE, 0x6EAE, 0x2474, 0x6EAF, 0x6EAF, 0x0E51, 0x6EB0, 0x6EB0, 0x2460, + 0x6EB1, 0x6EB1, 0x2457, 0x6EB2, 0x6EB2, 0x2464, 0x6EB3, 0x6EB3, 0x2470, + 0x6EB4, 0x6EB4, 0x0E65, 0x6EB5, 0x6EB5, 0x41FE, 0x6EB6, 0x6EB6, 0x0E53, + 0x6EB7, 0x6EB7, 0x245F, 0x6EB8, 0x6EB8, 0x3E0C, 0x6EB9, 0x6EB9, 0x2458, + 0x6EBA, 0x6EBA, 0x0E5C, 0x6EBB, 0x6EBB, 0x467D, 0x6EBC, 0x6EBC, 0x0E5B, + 0x6EBD, 0x6EBD, 0x245B, 0x6EBE, 0x6EBE, 0x2465, 0x6EBF, 0x6EBF, 0x246F, + 0x6EC0, 0x6EC0, 0x2452, 0x6EC1, 0x6EC1, 0x245C, 0x6EC2, 0x6EC2, 0x0E54, + 0x6EC3, 0x6EC3, 0x2466, 0x6EC4, 0x6EC4, 0x0E61, 0x6EC5, 0x6EC5, 0x0E58, + 0x6EC6, 0x6EC6, 0x2459, 0x6EC7, 0x6EC7, 0x0E57, 0x6EC8, 0x6EC8, 0x2450, + 0x6EC9, 0x6EC9, 0x245E, 0x6ECA, 0x6ECA, 0x2472, 0x6ECB, 0x6ECB, 0x0CBF, + 0x6ECC, 0x6ECC, 0x101F, 0x6ECD, 0x6ECD, 0x2461, 0x6ECE, 0x6ECE, 0x26EB, + 0x6ECF, 0x6ECF, 0x2463, 0x6ED0, 0x6ED0, 0x2471, 0x6ED1, 0x6ED1, 0x0E5E, + 0x6ED2, 0x6ED2, 0x245A, 0x6ED3, 0x6ED3, 0x0E52, 0x6ED4, 0x6ED4, 0x0E62, + 0x6ED5, 0x6ED5, 0x119A, 0x6ED6, 0x6ED6, 0x244F, 0x6ED8, 0x6ED8, 0x2468, + 0x6ED9, 0x6ED9, 0x4069, 0x6EDA, 0x6EDA, 0x467F, 0x6EDB, 0x6EDB, 0x402F, + 0x6EDC, 0x6EDC, 0x2467, 0x6EDD, 0x6EDD, 0x4538, 0x6EE2, 0x6EE2, 0x467E, + 0x6EE8, 0x6EE9, 0x4681, 0x6EEB, 0x6EEB, 0x2707, 0x6EEC, 0x6EEC, 0x101C, + 0x6EED, 0x6EED, 0x26FC, 0x6EEE, 0x6EEE, 0x2701, 0x6EEF, 0x6EEF, 0x1011, + 0x6EF1, 0x6EF1, 0x26ED, 0x6EF2, 0x6EF2, 0x101E, 0x6EF4, 0x6EF4, 0x1008, + 0x6EF5, 0x6EF5, 0x26EC, 0x6EF6, 0x6EF6, 0x270D, 0x6EF7, 0x6EF7, 0x1020, + 0x6EF8, 0x6EF8, 0x26F0, 0x6EF9, 0x6EF9, 0x2700, 0x6EFA, 0x6EFA, 0x423B, + 0x6EFB, 0x6EFB, 0x26F2, 0x6EFC, 0x6EFC, 0x2710, 0x6EFD, 0x6EFD, 0x270C, + 0x6EFE, 0x6EFE, 0x1006, 0x6EFF, 0x6EFF, 0x1010, 0x6F00, 0x6F00, 0x2946, + 0x6F01, 0x6F01, 0x101D, 0x6F02, 0x6F02, 0x100E, 0x6F03, 0x6F03, 0x26EE, + 0x6F04, 0x6F04, 0x4224, 0x6F05, 0x6F05, 0x270B, 0x6F06, 0x6F06, 0x1012, + 0x6F07, 0x6F07, 0x2708, 0x6F08, 0x6F08, 0x2715, 0x6F09, 0x6F09, 0x26F4, + 0x6F0A, 0x6F0A, 0x26FD, 0x6F0B, 0x6F0B, 0x3ABA, 0x6F0C, 0x6F0C, 0x3CFB, + 0x6F0D, 0x6F0D, 0x2713, 0x6F0E, 0x6F0E, 0x2709, 0x6F0F, 0x6F0F, 0x100D, + 0x6F12, 0x6F12, 0x26FB, 0x6F13, 0x6F13, 0x1007, 0x6F14, 0x6F14, 0x1005, + 0x6F15, 0x6F15, 0x1017, 0x6F16, 0x6F16, 0x41A0, 0x6F17, 0x6F17, 0x46CE, + 0x6F18, 0x6F18, 0x26F9, 0x6F19, 0x6F1A, 0x26F6, 0x6F1C, 0x6F1C, 0x270F, + 0x6F1E, 0x6F1E, 0x2714, 0x6F1F, 0x6F1F, 0x2712, 0x6F20, 0x6F20, 0x100B, + 0x6F21, 0x6F21, 0x2716, 0x6F22, 0x6F22, 0x100F, 0x6F23, 0x6F23, 0x1016, + 0x6F24, 0x6F24, 0x4683, 0x6F25, 0x6F25, 0x26EF, 0x6F26, 0x6F26, 0x292E, + 0x6F27, 0x6F27, 0x26F8, 0x6F29, 0x6F29, 0x1009, 0x6F2A, 0x6F2A, 0x101B, + 0x6F2B, 0x6F2B, 0x1018, 0x6F2C, 0x6F2C, 0x100C, 0x6F2D, 0x6F2D, 0x2702, + 0x6F2E, 0x6F2E, 0x26F3, 0x6F2F, 0x6F2F, 0x1019, 0x6F30, 0x6F30, 0x2704, + 0x6F31, 0x6F31, 0x1013, 0x6F32, 0x6F32, 0x1015, 0x6F33, 0x6F33, 0x1004, + 0x6F34, 0x6F34, 0x4684, 0x6F35, 0x6F35, 0x2706, 0x6F36, 0x6F36, 0x26FE, + 0x6F37, 0x6F37, 0x26F1, 0x6F38, 0x6F38, 0x1014, 0x6F39, 0x6F39, 0x270E, + 0x6F3A, 0x6F3A, 0x2711, 0x6F3B, 0x6F3B, 0x26FA, 0x6F3C, 0x6F3C, 0x2705, + 0x6F3D, 0x6F3D, 0x4282, 0x6F3E, 0x6F3E, 0x100A, 0x6F3F, 0x6F3F, 0x1189, + 0x6F40, 0x6F40, 0x2703, 0x6F41, 0x6F41, 0x292D, 0x6F43, 0x6F43, 0x270A, + 0x6F44, 0x6F44, 0x4240, 0x6F4E, 0x6F4E, 0x26F5, 0x6F4F, 0x6F4F, 0x2937, + 0x6F50, 0x6F50, 0x2941, 0x6F51, 0x6F51, 0x118C, 0x6F52, 0x6F52, 0x2940, + 0x6F53, 0x6F53, 0x294C, 0x6F54, 0x6F54, 0x118E, 0x6F55, 0x6F55, 0x293E, + 0x6F56, 0x6F56, 0x3E52, 0x6F57, 0x6F57, 0x2942, 0x6F58, 0x6F58, 0x1199, + 0x6F5A, 0x6F5A, 0x2939, 0x6F5B, 0x6F5B, 0x1191, 0x6F5C, 0x6F5C, 0x4241, + 0x6F5D, 0x6F5D, 0x2945, 0x6F5E, 0x6F5E, 0x2B9A, 0x6F5F, 0x6F5F, 0x119D, + 0x6F60, 0x6F60, 0x119C, 0x6F61, 0x6F61, 0x2947, 0x6F62, 0x6F62, 0x2936, + 0x6F63, 0x6F63, 0x2951, 0x6F64, 0x6F64, 0x1197, 0x6F66, 0x6F66, 0x118D, + 0x6F67, 0x6F67, 0x294A, 0x6F69, 0x6F69, 0x294E, 0x6F6A, 0x6F6A, 0x2953, + 0x6F6B, 0x6F6B, 0x2948, 0x6F6C, 0x6F6C, 0x293C, 0x6F6D, 0x6F6D, 0x1190, + 0x6F6E, 0x6F6E, 0x1193, 0x6F6F, 0x6F6F, 0x119B, 0x6F70, 0x6F70, 0x1196, + 0x6F72, 0x6F72, 0x293F, 0x6F73, 0x6F73, 0x26FF, 0x6F74, 0x6F74, 0x4243, + 0x6F76, 0x6F76, 0x293B, 0x6F77, 0x6F77, 0x2952, 0x6F78, 0x6F78, 0x1192, + 0x6F79, 0x6F79, 0x3BBE, 0x6F7A, 0x6F7A, 0x1195, 0x6F7B, 0x6F7B, 0x2954, + 0x6F7C, 0x6F7C, 0x118A, 0x6F7D, 0x6F7D, 0x2949, 0x6F7E, 0x6F7E, 0x292F, + 0x6F7F, 0x6F7F, 0x294F, 0x6F80, 0x6F80, 0x13FC, 0x6F81, 0x6F81, 0x4687, + 0x6F82, 0x6F82, 0x293D, 0x6F84, 0x6F84, 0x118B, 0x6F85, 0x6F85, 0x2938, + 0x6F86, 0x6F86, 0x118F, 0x6F87, 0x6F87, 0x2930, 0x6F88, 0x6F88, 0x101A, + 0x6F89, 0x6F89, 0x2934, 0x6F8A, 0x6F8A, 0x4195, 0x6F8B, 0x6F8B, 0x294D, + 0x6F8C, 0x6F8C, 0x2935, 0x6F8D, 0x6F8D, 0x2933, 0x6F8E, 0x6F8E, 0x1194, + 0x6F90, 0x6F90, 0x294B, 0x6F92, 0x6F92, 0x2932, 0x6F93, 0x6F93, 0x2944, + 0x6F94, 0x6F94, 0x2943, 0x6F95, 0x6F95, 0x2950, 0x6F96, 0x6F96, 0x293A, + 0x6F97, 0x6F97, 0x1198, 0x6F9D, 0x6F9D, 0x4239, 0x6F9E, 0x6F9E, 0x2B9D, + 0x6F9F, 0x6F9F, 0x4246, 0x6FA0, 0x6FA0, 0x12EB, 0x6FA1, 0x6FA1, 0x12E1, + 0x6FA2, 0x6FA2, 0x2BA9, 0x6FA3, 0x6FA3, 0x2B95, 0x6FA4, 0x6FA4, 0x12E3, + 0x6FA5, 0x6FA5, 0x2BA1, 0x6FA6, 0x6FA6, 0x12EA, 0x6FA7, 0x6FA7, 0x12E5, + 0x6FA8, 0x6FA8, 0x2B9F, 0x6FA9, 0x6FA9, 0x2D8E, 0x6FAA, 0x6FAA, 0x2BA5, + 0x6FAB, 0x6FAB, 0x2BAB, 0x6FAC, 0x6FAC, 0x2BA4, 0x6FAD, 0x6FAD, 0x2B93, + 0x6FAE, 0x6FAE, 0x2BA2, 0x6FAF, 0x6FAF, 0x2BAD, 0x6FB0, 0x6FB0, 0x2BAF, + 0x6FB1, 0x6FB1, 0x12E0, 0x6FB2, 0x6FB2, 0x2BAE, 0x6FB3, 0x6FB3, 0x12E6, + 0x6FB4, 0x6FB4, 0x12EC, 0x6FB5, 0x6FB5, 0x3E27, 0x6FB6, 0x6FB6, 0x12E9, + 0x6FB8, 0x6FB8, 0x2BA8, 0x6FB9, 0x6FB9, 0x12E8, 0x6FBA, 0x6FBA, 0x2BA3, + 0x6FBB, 0x6FBB, 0x3BBB, 0x6FBC, 0x6FBC, 0x2B97, 0x6FBD, 0x6FBD, 0x2B9C, + 0x6FBE, 0x6FBE, 0x4688, 0x6FBF, 0x6FBF, 0x2BA7, 0x6FC0, 0x6FC0, 0x12E7, + 0x6FC1, 0x6FC1, 0x12E4, 0x6FC2, 0x6FC2, 0x12DF, 0x6FC3, 0x6FC3, 0x12E2, + 0x6FC4, 0x6FC4, 0x2B9B, 0x6FC6, 0x6FC6, 0x2931, 0x6FC7, 0x6FC7, 0x2B96, + 0x6FC8, 0x6FC8, 0x2B99, 0x6FC9, 0x6FC9, 0x2BAA, 0x6FCA, 0x6FCA, 0x2B9E, + 0x6FCB, 0x6FCB, 0x2B94, 0x6FCC, 0x6FCC, 0x2D8D, 0x6FCD, 0x6FCD, 0x2BAC, + 0x6FCE, 0x6FCE, 0x2B98, 0x6FCF, 0x6FCF, 0x2BA6, 0x6FD3, 0x6FD3, 0x4248, + 0x6FD4, 0x6FD4, 0x2D90, 0x6FD5, 0x6FD5, 0x1400, 0x6FD8, 0x6FD8, 0x13F4, + 0x6FD9, 0x6FD9, 0x3C74, 0x6FDA, 0x6FDA, 0x3C73, 0x6FDB, 0x6FDB, 0x13F8, + 0x6FDC, 0x6FDC, 0x2D92, 0x6FDD, 0x6FDD, 0x2D98, 0x6FDE, 0x6FDE, 0x2D96, + 0x6FDF, 0x6FE0, 0x13F6, 0x6FE1, 0x6FE1, 0x13FE, 0x6FE2, 0x6FE2, 0x2D99, + 0x6FE3, 0x6FE3, 0x2D91, 0x6FE4, 0x6FE4, 0x13F9, 0x6FE6, 0x6FE6, 0x2D95, + 0x6FE7, 0x6FE7, 0x2D94, 0x6FE8, 0x6FE8, 0x2D9A, 0x6FE9, 0x6FE9, 0x13FF, + 0x6FEB, 0x6FEB, 0x13FA, 0x6FEC, 0x6FEC, 0x13FD, 0x6FED, 0x6FED, 0x2D93, + 0x6FEE, 0x6FEE, 0x1401, 0x6FEF, 0x6FEF, 0x13FB, 0x6FF0, 0x6FF0, 0x1402, + 0x6FF1, 0x6FF1, 0x13F5, 0x6FF2, 0x6FF2, 0x2D97, 0x6FF4, 0x6FF4, 0x2D8F, + 0x6FF6, 0x6FF6, 0x38A5, 0x6FF7, 0x6FF7, 0x2F4E, 0x6FF8, 0x6FF8, 0x4237, + 0x6FFA, 0x6FFA, 0x14EB, 0x6FFB, 0x6FFB, 0x2F4B, 0x6FFC, 0x6FFC, 0x2F4D, + 0x6FFE, 0x6FFE, 0x14E9, 0x6FFF, 0x6FFF, 0x2F49, 0x7000, 0x7000, 0x2F4A, + 0x7001, 0x7001, 0x2F45, 0x7003, 0x7003, 0x46E2, 0x7004, 0x7004, 0x2BA0, + 0x7005, 0x7005, 0x2F46, 0x7006, 0x7006, 0x14EA, 0x7007, 0x7007, 0x2F42, + 0x7009, 0x7009, 0x14E7, 0x700A, 0x700A, 0x2F4F, 0x700B, 0x700B, 0x14E8, + 0x700C, 0x700D, 0x2F43, 0x700E, 0x700E, 0x2F48, 0x700F, 0x700F, 0x14ED, + 0x7011, 0x7011, 0x14EC, 0x7014, 0x7014, 0x2F47, 0x7015, 0x7015, 0x158F, + 0x7016, 0x7016, 0x30AD, 0x7017, 0x7017, 0x30B3, 0x7018, 0x7018, 0x1590, + 0x7019, 0x7019, 0x30AA, 0x701A, 0x701A, 0x158D, 0x701B, 0x701B, 0x158A, + 0x701C, 0x701C, 0x30B5, 0x701D, 0x701D, 0x158E, 0x701E, 0x701E, 0x3C76, + 0x701F, 0x701F, 0x158B, 0x7020, 0x7020, 0x30AC, 0x7021, 0x7023, 0x30AF, + 0x7024, 0x7024, 0x30B4, 0x7026, 0x7026, 0x2F4C, 0x7027, 0x7027, 0x30AB, + 0x7028, 0x7028, 0x158C, 0x7029, 0x7029, 0x30B2, 0x702A, 0x702A, 0x31EF, + 0x702B, 0x702B, 0x30AE, 0x702C, 0x702C, 0x468E, 0x702F, 0x702F, 0x31E6, + 0x7030, 0x7030, 0x161D, 0x7031, 0x7031, 0x31E9, 0x7032, 0x7032, 0x161E, + 0x7033, 0x7033, 0x31F2, 0x7034, 0x7034, 0x31E8, 0x7035, 0x7035, 0x31E5, + 0x7037, 0x7037, 0x31E7, 0x7038, 0x7038, 0x31EB, 0x7039, 0x7039, 0x31EE, + 0x703A, 0x703A, 0x31ED, 0x703B, 0x703B, 0x31F1, 0x703C, 0x703C, 0x31E4, + 0x703E, 0x703E, 0x161C, 0x703F, 0x703F, 0x31EC, 0x7040, 0x7040, 0x31F0, + 0x7041, 0x7041, 0x31F3, 0x7042, 0x7042, 0x31EA, 0x7043, 0x7044, 0x32D8, + 0x7045, 0x7046, 0x32DD, 0x7048, 0x7049, 0x32DB, 0x704A, 0x704A, 0x32DA, + 0x704B, 0x704B, 0x4254, 0x704C, 0x704C, 0x167A, 0x7050, 0x7050, 0x4690, + 0x7051, 0x7051, 0x16C8, 0x7052, 0x7052, 0x338C, 0x7054, 0x7054, 0x4691, + 0x7055, 0x7057, 0x3389, 0x7058, 0x7058, 0x16C9, 0x705A, 0x705A, 0x3423, + 0x705B, 0x705B, 0x3422, 0x705C, 0x705C, 0x3852, 0x705D, 0x705D, 0x348A, + 0x705E, 0x705E, 0x1722, 0x705F, 0x705F, 0x3488, 0x7060, 0x7060, 0x348B, + 0x7061, 0x7061, 0x3489, 0x7062, 0x7062, 0x34D0, 0x7063, 0x7063, 0x1744, + 0x7064, 0x7064, 0x1752, 0x7065, 0x7065, 0x351C, 0x7066, 0x7066, 0x3506, + 0x7067, 0x7067, 0x3CF5, 0x7068, 0x7068, 0x351B, 0x7069, 0x706A, 0x3547, + 0x706B, 0x706B, 0x02E6, 0x706C, 0x706C, 0x44F1, 0x706F, 0x706F, 0x4692, + 0x7070, 0x7070, 0x03F2, 0x7071, 0x7071, 0x180A, 0x7074, 0x7074, 0x18C3, + 0x7075, 0x7075, 0x38C7, 0x7076, 0x7076, 0x04E6, 0x7078, 0x7078, 0x04E9, + 0x7079, 0x7079, 0x4099, 0x707A, 0x707A, 0x18C4, 0x707C, 0x707D, 0x04E7, + 0x707E, 0x707E, 0x4255, 0x707F, 0x707F, 0x4693, 0x7081, 0x7081, 0x4959, + 0x7082, 0x7082, 0x19F7, 0x7083, 0x7083, 0x19F9, 0x7084, 0x7084, 0x19F4, + 0x7085, 0x7085, 0x19F1, 0x7086, 0x7086, 0x19F3, 0x7089, 0x7089, 0x43F9, + 0x708A, 0x708A, 0x0643, 0x708B, 0x708B, 0x40CB, 0x708E, 0x708E, 0x0641, + 0x708F, 0x708F, 0x46B3, 0x7091, 0x7091, 0x19F5, 0x7092, 0x7092, 0x0642, + 0x7093, 0x7093, 0x19F2, 0x7094, 0x7094, 0x19EF, 0x7095, 0x7095, 0x0640, + 0x7096, 0x7096, 0x19F6, 0x7098, 0x7098, 0x19F0, 0x7099, 0x7099, 0x0644, + 0x709A, 0x709A, 0x19F8, 0x709F, 0x709F, 0x1B66, 0x70A0, 0x70A0, 0x4742, + 0x70A1, 0x70A1, 0x1B6A, 0x70A3, 0x70A3, 0x3972, 0x70A4, 0x70A4, 0x0790, + 0x70A5, 0x70A5, 0x3CB7, 0x70A6, 0x70A6, 0x3D53, 0x70A7, 0x70A7, 0x4256, + 0x70A9, 0x70A9, 0x1B6D, 0x70AB, 0x70AB, 0x0788, 0x70AC, 0x70AC, 0x078B, + 0x70AD, 0x70AD, 0x078D, 0x70AE, 0x70AE, 0x078F, 0x70AF, 0x70AF, 0x078C, + 0x70B0, 0x70B0, 0x1B69, 0x70B1, 0x70B1, 0x1B68, 0x70B3, 0x70B3, 0x078A, + 0x70B4, 0x70B5, 0x1B6B, 0x70B7, 0x70B7, 0x1B65, 0x70B8, 0x70B8, 0x078E, + 0x70B9, 0x70B9, 0x3D69, 0x70BA, 0x70BA, 0x0789, 0x70BB, 0x70BB, 0x4812, + 0x70BC, 0x70BC, 0x4559, 0x70BD, 0x70BD, 0x4270, 0x70BE, 0x70BE, 0x1B67, + 0x70C0, 0x70C0, 0x4733, 0x70C4, 0x70C4, 0x3BAA, 0x70C5, 0x70C7, 0x1D27, + 0x70C8, 0x70C8, 0x0921, 0x70CA, 0x70CA, 0x091D, 0x70CB, 0x70CB, 0x1D1E, + 0x70CC, 0x70CC, 0x4258, 0x70CD, 0x70CD, 0x1D26, 0x70CE, 0x70CE, 0x1D2B, + 0x70CF, 0x70CF, 0x0922, 0x70D0, 0x70D0, 0x396D, 0x70D1, 0x70D1, 0x1D1C, + 0x70D2, 0x70D2, 0x1D22, 0x70D3, 0x70D3, 0x1D1B, 0x70D4, 0x70D4, 0x1D25, + 0x70D5, 0x70D6, 0x4259, 0x70D7, 0x70D7, 0x1D21, 0x70D8, 0x70D8, 0x091E, + 0x70D9, 0x70D9, 0x0920, 0x70DA, 0x70DA, 0x1D2A, 0x70DC, 0x70DC, 0x1D1A, + 0x70DD, 0x70DD, 0x1D1D, 0x70DE, 0x70DE, 0x1D23, 0x70DF, 0x70DF, 0x425B, + 0x70E0, 0x70E0, 0x1D24, 0x70E1, 0x70E1, 0x1D2C, 0x70E2, 0x70E2, 0x1D20, + 0x70E4, 0x70E4, 0x091F, 0x70EF, 0x70EF, 0x0B16, 0x70F0, 0x70F0, 0x1F72, + 0x70F1, 0x70F1, 0x3AC8, 0x70F3, 0x70F3, 0x1F74, 0x70F4, 0x70F4, 0x1F70, + 0x70F5, 0x70F5, 0x4760, 0x70F6, 0x70F6, 0x1F7C, 0x70F7, 0x70F7, 0x1F6E, + 0x70F8, 0x70F8, 0x1F7B, 0x70F9, 0x70F9, 0x0B12, 0x70FA, 0x70FA, 0x1F6C, + 0x70FB, 0x70FB, 0x21F2, 0x70FC, 0x70FC, 0x1F76, 0x70FD, 0x70FD, 0x0B15, + 0x70FE, 0x70FE, 0x3D0E, 0x70FF, 0x70FF, 0x1F77, 0x7100, 0x7100, 0x1F7A, + 0x7102, 0x7102, 0x1F7E, 0x7104, 0x7104, 0x1F73, 0x7105, 0x7105, 0x3A23, + 0x7106, 0x7106, 0x1F78, 0x7109, 0x710A, 0x0B13, 0x710B, 0x710B, 0x1F7D, + 0x710C, 0x710C, 0x1F71, 0x710D, 0x710D, 0x1F6D, 0x710E, 0x710E, 0x1F7F, + 0x7110, 0x7110, 0x1F75, 0x7113, 0x7113, 0x1F79, 0x7117, 0x7117, 0x1F6F, + 0x7119, 0x711A, 0x0CC8, 0x711B, 0x711B, 0x21FC, 0x711C, 0x711C, 0x0CCF, + 0x711D, 0x711D, 0x3D47, 0x711E, 0x711E, 0x21F0, 0x711F, 0x711F, 0x21F9, + 0x7120, 0x7120, 0x21EF, 0x7121, 0x7121, 0x0CCC, 0x7122, 0x7122, 0x21F7, + 0x7123, 0x7123, 0x21F5, 0x7125, 0x7125, 0x21F6, 0x7126, 0x7126, 0x0CCA, + 0x7128, 0x7128, 0x21FA, 0x7129, 0x7129, 0x3BA9, 0x712B, 0x712B, 0x4261, + 0x712C, 0x712C, 0x426A, 0x712E, 0x712E, 0x21F3, 0x712F, 0x712F, 0x21F1, + 0x7130, 0x7130, 0x0CCB, 0x7131, 0x7131, 0x21F4, 0x7132, 0x7132, 0x21F8, + 0x7133, 0x7133, 0x3D54, 0x7134, 0x7134, 0x3C7E, 0x7135, 0x7135, 0x376D, + 0x7136, 0x7136, 0x0CCD, 0x713A, 0x713A, 0x21FB, 0x713B, 0x713B, 0x3AC5, + 0x713E, 0x713E, 0x372E, 0x7140, 0x7140, 0x4398, 0x7141, 0x7141, 0x247B, + 0x7142, 0x7142, 0x2482, 0x7143, 0x7143, 0x2484, 0x7144, 0x7144, 0x248A, + 0x7145, 0x7145, 0x4262, 0x7146, 0x7146, 0x0E72, 0x7147, 0x7147, 0x2476, + 0x7149, 0x7149, 0x0E6A, 0x714A, 0x714A, 0x4264, 0x714B, 0x714B, 0x2485, + 0x714C, 0x714C, 0x0E6F, 0x714D, 0x714D, 0x248B, 0x714E, 0x714E, 0x0E66, + 0x714F, 0x714F, 0x4267, 0x7150, 0x7150, 0x2488, 0x7151, 0x7151, 0x4865, + 0x7152, 0x7152, 0x2478, 0x7153, 0x7153, 0x2489, 0x7154, 0x7154, 0x2477, + 0x7156, 0x7156, 0x0E74, 0x7158, 0x7158, 0x2483, 0x7159, 0x7159, 0x0E67, + 0x715A, 0x715A, 0x248C, 0x715C, 0x715C, 0x0E6C, 0x715D, 0x715D, 0x247C, + 0x715E, 0x715E, 0x0E71, 0x715F, 0x715F, 0x2487, 0x7160, 0x7160, 0x247A, + 0x7161, 0x7161, 0x2481, 0x7162, 0x7162, 0x247D, 0x7163, 0x7163, 0x2479, + 0x7164, 0x7164, 0x0E69, 0x7165, 0x7165, 0x0E70, 0x7166, 0x7166, 0x0E6E, + 0x7167, 0x7167, 0x0E6B, 0x7168, 0x7168, 0x0E73, 0x7169, 0x7169, 0x0E68, + 0x716A, 0x716A, 0x2480, 0x716B, 0x716B, 0x3CC5, 0x716C, 0x716C, 0x0E6D, + 0x716E, 0x716E, 0x0CCE, 0x7170, 0x7170, 0x2486, 0x7171, 0x7171, 0x3DC0, + 0x7172, 0x7172, 0x247E, 0x7173, 0x7173, 0x47E7, 0x7175, 0x7175, 0x3CED, + 0x7176, 0x7176, 0x4000, 0x7177, 0x7177, 0x3957, 0x7178, 0x7178, 0x247F, + 0x717A, 0x717A, 0x4924, 0x717B, 0x717B, 0x271E, 0x717C, 0x717C, 0x3835, + 0x717D, 0x717D, 0x1023, 0x717E, 0x717E, 0x3970, 0x7180, 0x7180, 0x271A, + 0x7181, 0x7181, 0x2720, 0x7182, 0x7182, 0x271C, 0x7184, 0x7184, 0x1025, + 0x7185, 0x7185, 0x271B, 0x7186, 0x7186, 0x271F, 0x7187, 0x7187, 0x2717, + 0x7188, 0x7188, 0x4706, 0x7189, 0x7189, 0x2719, 0x718A, 0x718A, 0x1024, + 0x718C, 0x718C, 0x39EA, 0x718E, 0x718E, 0x3D3B, 0x718F, 0x718F, 0x271D, + 0x7190, 0x7190, 0x2718, 0x7192, 0x7192, 0x1026, 0x7194, 0x7194, 0x1021, + 0x7196, 0x7196, 0x425F, 0x7197, 0x7197, 0x2721, 0x7198, 0x7198, 0x481D, + 0x7199, 0x7199, 0x1022, 0x719A, 0x719A, 0x295A, 0x719B, 0x719B, 0x2957, + 0x719C, 0x719C, 0x2963, 0x719D, 0x719D, 0x295D, 0x719E, 0x719E, 0x295F, + 0x719F, 0x719F, 0x119E, 0x71A0, 0x71A0, 0x2959, 0x71A1, 0x71A1, 0x2961, + 0x71A2, 0x71A2, 0x48C1, 0x71A3, 0x71A3, 0x3EC8, 0x71A4, 0x71A4, 0x2960, + 0x71A5, 0x71A5, 0x295E, 0x71A7, 0x71A7, 0x2964, 0x71A8, 0x71A8, 0x11A1, + 0x71A9, 0x71A9, 0x295B, 0x71AA, 0x71AA, 0x2962, 0x71AC, 0x71AC, 0x119F, + 0x71AD, 0x71AD, 0x3E1D, 0x71AF, 0x71AF, 0x2956, 0x71B0, 0x71B0, 0x2958, + 0x71B1, 0x71B1, 0x11A0, 0x71B2, 0x71B2, 0x2955, 0x71B3, 0x71B3, 0x2965, + 0x71B4, 0x71B4, 0x425E, 0x71B5, 0x71B5, 0x295C, 0x71B7, 0x71B7, 0x468B, + 0x71B8, 0x71B8, 0x2BB3, 0x71B9, 0x71B9, 0x12F3, 0x71BA, 0x71BA, 0x426E, + 0x71BC, 0x71BC, 0x2BBE, 0x71BD, 0x71BD, 0x2BBC, 0x71BE, 0x71BE, 0x12ED, + 0x71BF, 0x71BF, 0x2BB2, 0x71C0, 0x71C1, 0x2BB5, 0x71C2, 0x71C2, 0x2BB1, + 0x71C3, 0x71C4, 0x12F7, 0x71C5, 0x71C5, 0x2BB0, 0x71C6, 0x71C6, 0x2BBF, + 0x71C7, 0x71C7, 0x2BBA, 0x71C8, 0x71C8, 0x12F1, 0x71C9, 0x71C9, 0x12EE, + 0x71CA, 0x71CA, 0x2BB9, 0x71CB, 0x71CB, 0x2BB7, 0x71CE, 0x71CE, 0x12F4, + 0x71CF, 0x71CF, 0x2BBB, 0x71D0, 0x71D0, 0x12EF, 0x71D1, 0x71D1, 0x373D, + 0x71D2, 0x71D2, 0x12F0, 0x71D4, 0x71D4, 0x2BB8, 0x71D5, 0x71D5, 0x12F2, + 0x71D6, 0x71D6, 0x2BB4, 0x71D8, 0x71D8, 0x2BBD, 0x71D9, 0x71D9, 0x12F5, + 0x71DA, 0x71DB, 0x2BC0, 0x71DC, 0x71DC, 0x12F6, 0x71DD, 0x71DD, 0x4078, + 0x71DF, 0x71DF, 0x1404, 0x71E0, 0x71E0, 0x140B, 0x71E1, 0x71E1, 0x2D9B, + 0x71E2, 0x71E2, 0x2DA1, 0x71E4, 0x71E4, 0x2D9F, 0x71E5, 0x71E5, 0x1407, + 0x71E6, 0x71E6, 0x1406, 0x71E7, 0x71E7, 0x1403, 0x71E8, 0x71E8, 0x2D9D, + 0x71EB, 0x71EB, 0x3C81, 0x71EC, 0x71EC, 0x1409, 0x71ED, 0x71ED, 0x1408, + 0x71EE, 0x71EE, 0x1405, 0x71F0, 0x71F0, 0x2DA0, 0x71F1, 0x71F1, 0x2D9C, + 0x71F2, 0x71F2, 0x2D9E, 0x71F4, 0x71F4, 0x140A, 0x71F5, 0x71F5, 0x46EE, + 0x71F6, 0x71F6, 0x3E9A, 0x71F8, 0x71F8, 0x14F1, 0x71F9, 0x71F9, 0x2F52, + 0x71FB, 0x71FC, 0x14EE, 0x71FD, 0x71FD, 0x2F54, 0x71FE, 0x71FE, 0x14F0, + 0x71FF, 0x71FF, 0x2F51, 0x7201, 0x7201, 0x2F50, 0x7202, 0x7202, 0x30B9, + 0x7203, 0x7203, 0x2F53, 0x7205, 0x7205, 0x30BA, 0x7206, 0x7206, 0x1591, + 0x7207, 0x7207, 0x30B8, 0x7209, 0x7209, 0x3DBB, 0x720A, 0x720A, 0x30B7, + 0x720C, 0x720C, 0x30B6, 0x720D, 0x720D, 0x1592, 0x720E, 0x720E, 0x4271, + 0x720F, 0x720F, 0x39FC, 0x7210, 0x7210, 0x161F, 0x7213, 0x7214, 0x31F4, + 0x7215, 0x7215, 0x4273, 0x7216, 0x7216, 0x3953, 0x7217, 0x7217, 0x3969, + 0x7219, 0x7219, 0x32E1, 0x721A, 0x721A, 0x32E0, 0x721B, 0x721B, 0x167B, + 0x721D, 0x721D, 0x32DF, 0x721E, 0x721F, 0x338D, 0x7222, 0x7222, 0x3424, + 0x7223, 0x7223, 0x348C, 0x7224, 0x7224, 0x4276, 0x7226, 0x7226, 0x34D1, + 0x7227, 0x7227, 0x3535, 0x7228, 0x7228, 0x1766, 0x7229, 0x7229, 0x3549, + 0x722A, 0x722A, 0x02E7, 0x722B, 0x722B, 0x44F2, 0x722C, 0x722D, 0x0645, + 0x722E, 0x722E, 0x4279, 0x7230, 0x7230, 0x0791, 0x7235, 0x7235, 0x140C, + 0x7236, 0x7236, 0x02E8, 0x7238, 0x7238, 0x0647, 0x7239, 0x7239, 0x0923, + 0x723A, 0x723A, 0x0E75, 0x723B, 0x723B, 0x02E9, 0x723D, 0x723D, 0x0B17, + 0x723E, 0x723E, 0x1027, 0x723F, 0x723F, 0x178D, 0x7240, 0x7240, 0x427A, + 0x7241, 0x7241, 0x1B6E, 0x7242, 0x7242, 0x1D2D, 0x7244, 0x7244, 0x2722, + 0x7246, 0x7246, 0x140D, 0x7247, 0x7247, 0x02EA, 0x7248, 0x7248, 0x0648, + 0x7249, 0x724A, 0x1B6F, 0x724B, 0x724B, 0x21FD, 0x724C, 0x724C, 0x0CD0, + 0x724F, 0x724F, 0x248D, 0x7250, 0x7250, 0x3AC9, 0x7252, 0x7252, 0x0E76, + 0x7253, 0x7253, 0x2723, 0x7255, 0x7255, 0x427D, 0x7256, 0x7256, 0x11A2, + 0x7257, 0x7257, 0x427E, 0x7258, 0x7258, 0x1593, 0x7259, 0x7259, 0x02EB, + 0x725A, 0x725A, 0x21FE, 0x725B, 0x725B, 0x02EC, 0x725C, 0x725C, 0x465A, + 0x725D, 0x725D, 0x03F4, 0x725E, 0x725E, 0x180B, 0x725F, 0x725F, 0x03F3, + 0x7260, 0x7260, 0x04EC, 0x7261, 0x7261, 0x04EB, 0x7262, 0x7262, 0x04EA, + 0x7263, 0x7263, 0x18C5, 0x7266, 0x7266, 0x3EBB, 0x7267, 0x7267, 0x0649, + 0x7269, 0x7269, 0x064A, 0x726A, 0x726A, 0x19FA, 0x726C, 0x726C, 0x1B71, + 0x726E, 0x726E, 0x1B74, 0x726F, 0x726F, 0x0793, 0x7270, 0x7270, 0x1B72, + 0x7272, 0x7272, 0x0792, 0x7273, 0x7273, 0x1B73, 0x7274, 0x7274, 0x0794, + 0x7276, 0x7276, 0x1D30, 0x7277, 0x7277, 0x1D2F, 0x7278, 0x7278, 0x1D2E, + 0x7279, 0x7279, 0x0924, 0x727B, 0x727C, 0x1F81, 0x727D, 0x727D, 0x0B18, + 0x727E, 0x727E, 0x1F80, 0x727F, 0x727F, 0x1F83, 0x7280, 0x7280, 0x0CD2, + 0x7281, 0x7281, 0x0B19, 0x7282, 0x7282, 0x4283, 0x7284, 0x7284, 0x0CD1, + 0x7285, 0x7285, 0x2202, 0x7286, 0x7286, 0x2201, 0x7287, 0x7287, 0x3ACA, + 0x7288, 0x7289, 0x21FF, 0x728B, 0x728B, 0x2203, 0x728C, 0x728C, 0x248F, + 0x728D, 0x728D, 0x248E, 0x728E, 0x728E, 0x2492, 0x728F, 0x728F, 0x43C9, + 0x7290, 0x7290, 0x2491, 0x7291, 0x7291, 0x2490, 0x7292, 0x7292, 0x1028, + 0x7293, 0x7293, 0x2726, 0x7294, 0x7294, 0x3ACB, 0x7295, 0x7295, 0x2725, + 0x7296, 0x7296, 0x1029, 0x7297, 0x7297, 0x2724, 0x7298, 0x7298, 0x2966, + 0x729A, 0x729A, 0x2967, 0x729B, 0x729B, 0x11A3, 0x729D, 0x729E, 0x2BC2, + 0x729F, 0x729F, 0x473A, 0x72A1, 0x72A1, 0x30BF, 0x72A2, 0x72A2, 0x1594, + 0x72A3, 0x72A3, 0x30BE, 0x72A4, 0x72A4, 0x30BD, 0x72A5, 0x72A6, 0x30BB, + 0x72A7, 0x72A7, 0x167C, 0x72A8, 0x72A8, 0x31F6, 0x72A9, 0x72A9, 0x338F, + 0x72AA, 0x72AA, 0x34D2, 0x72AC, 0x72AC, 0x02ED, 0x72AD, 0x72AD, 0x44F4, + 0x72AE, 0x72AE, 0x17AF, 0x72AF, 0x72AF, 0x0355, 0x72B0, 0x72B0, 0x17B0, + 0x72B2, 0x72B2, 0x3FB6, 0x72B4, 0x72B5, 0x180C, 0x72BA, 0x72BA, 0x18CB, + 0x72BD, 0x72BD, 0x18C7, 0x72BF, 0x72BF, 0x18C6, 0x72C0, 0x72C0, 0x064B, + 0x72C1, 0x72C1, 0x18CA, 0x72C2, 0x72C2, 0x04EE, 0x72C3, 0x72C3, 0x18C8, + 0x72C4, 0x72C4, 0x04ED, 0x72C5, 0x72C5, 0x18CC, 0x72C6, 0x72C6, 0x18C9, + 0x72C9, 0x72C9, 0x19FE, 0x72CA, 0x72CA, 0x1B75, 0x72CB, 0x72CB, 0x19FC, + 0x72CC, 0x72CC, 0x1A03, 0x72CD, 0x72CD, 0x43CA, 0x72CE, 0x72CE, 0x064C, + 0x72D0, 0x72D0, 0x064F, 0x72D1, 0x72D1, 0x1A04, 0x72D2, 0x72D2, 0x1A00, + 0x72D4, 0x72D4, 0x1A01, 0x72D6, 0x72D6, 0x19FB, 0x72D7, 0x72D7, 0x064E, + 0x72D8, 0x72D8, 0x19FD, 0x72D9, 0x72D9, 0x064D, 0x72DA, 0x72DA, 0x1A02, + 0x72DC, 0x72DC, 0x19FF, 0x72DF, 0x72DF, 0x1B79, 0x72E0, 0x72E1, 0x0796, + 0x72E2, 0x72E2, 0x3F97, 0x72E3, 0x72E3, 0x1B7C, 0x72E4, 0x72E4, 0x1B76, + 0x72E6, 0x72E6, 0x1B7B, 0x72E8, 0x72E8, 0x1B77, 0x72E9, 0x72E9, 0x0795, + 0x72EA, 0x72EA, 0x1B7A, 0x72EB, 0x72EB, 0x1B78, 0x72F3, 0x72F3, 0x1D36, + 0x72F4, 0x72F4, 0x1D33, 0x72F6, 0x72F6, 0x1D35, 0x72F7, 0x72F7, 0x0929, + 0x72F8, 0x72F8, 0x0928, 0x72F9, 0x72F9, 0x0926, 0x72FA, 0x72FA, 0x1D32, + 0x72FB, 0x72FB, 0x1D37, 0x72FC, 0x72FC, 0x0925, 0x72FD, 0x72FD, 0x0927, + 0x72FE, 0x72FE, 0x1D34, 0x72FF, 0x72FF, 0x1F8B, 0x7300, 0x7300, 0x1D31, + 0x7301, 0x7301, 0x1D38, 0x7302, 0x7302, 0x3F9A, 0x7304, 0x7304, 0x3EB5, + 0x7307, 0x7307, 0x1F86, 0x7308, 0x7308, 0x1F8A, 0x730A, 0x730A, 0x1F89, + 0x730B, 0x730B, 0x2205, 0x730C, 0x730C, 0x2210, 0x730F, 0x730F, 0x1F8C, + 0x7310, 0x7310, 0x46EA, 0x7311, 0x7311, 0x1F87, 0x7312, 0x7312, 0x2204, + 0x7313, 0x7313, 0x0B1D, 0x7316, 0x7316, 0x0B1C, 0x7317, 0x7317, 0x1F85, + 0x7318, 0x7318, 0x1F88, 0x7319, 0x7319, 0x0B1E, 0x731B, 0x731B, 0x0B1B, + 0x731C, 0x731C, 0x0B1A, 0x731D, 0x731D, 0x1F84, 0x731E, 0x731E, 0x1F8D, + 0x7322, 0x7322, 0x2207, 0x7323, 0x7323, 0x220E, 0x7325, 0x7325, 0x0CD4, + 0x7326, 0x7326, 0x220D, 0x7327, 0x7327, 0x220A, 0x7328, 0x7328, 0x428A, + 0x7329, 0x7329, 0x0CD6, 0x732A, 0x732A, 0x3D70, 0x732B, 0x732B, 0x4285, + 0x732C, 0x732C, 0x3FB2, 0x732D, 0x732D, 0x220C, 0x732E, 0x732E, 0x428B, + 0x7330, 0x7330, 0x2206, 0x7331, 0x7331, 0x2208, 0x7332, 0x7332, 0x220B, + 0x7333, 0x7333, 0x2209, 0x7334, 0x7334, 0x0CD5, 0x7335, 0x7335, 0x220F, + 0x7336, 0x7336, 0x0CD3, 0x7337, 0x7337, 0x0E77, 0x7338, 0x7338, 0x46EB, + 0x7339, 0x7339, 0x43CC, 0x733A, 0x733A, 0x2496, 0x733B, 0x733B, 0x2495, + 0x733C, 0x733C, 0x2493, 0x733E, 0x733E, 0x0E7A, 0x733F, 0x733F, 0x0E79, + 0x7340, 0x7340, 0x2497, 0x7341, 0x7341, 0x46EC, 0x7342, 0x7342, 0x2494, + 0x7343, 0x7343, 0x2727, 0x7344, 0x7344, 0x102A, 0x7345, 0x7345, 0x0E78, + 0x7348, 0x7348, 0x43FA, 0x7349, 0x7349, 0x2499, 0x734A, 0x734A, 0x2498, + 0x734C, 0x734C, 0x272A, 0x734D, 0x734D, 0x2728, 0x734E, 0x734E, 0x11A4, + 0x734F, 0x734F, 0x3F51, 0x7350, 0x7350, 0x102B, 0x7351, 0x7351, 0x2729, + 0x7352, 0x7352, 0x2969, 0x7357, 0x7357, 0x11A5, 0x7358, 0x7358, 0x2968, + 0x7359, 0x7359, 0x2971, 0x735A, 0x735A, 0x2970, 0x735B, 0x735B, 0x296E, + 0x735D, 0x735D, 0x296D, 0x735E, 0x7360, 0x296A, 0x7361, 0x7361, 0x296F, + 0x7362, 0x7362, 0x2972, 0x7365, 0x7365, 0x2BC8, 0x7366, 0x7367, 0x2BC5, + 0x7368, 0x7368, 0x12F9, 0x7369, 0x7369, 0x2BC4, 0x736A, 0x736A, 0x2BCA, + 0x736B, 0x736B, 0x2BC9, 0x736C, 0x736C, 0x2BC7, 0x736E, 0x736F, 0x2DA3, + 0x7370, 0x7370, 0x140E, 0x7371, 0x7371, 0x3F98, 0x7372, 0x7372, 0x140F, + 0x7373, 0x7373, 0x2DA2, 0x7374, 0x7374, 0x3ED4, 0x7375, 0x7375, 0x14F3, + 0x7376, 0x7376, 0x2F55, 0x7377, 0x7377, 0x14F2, 0x7378, 0x7378, 0x1595, + 0x737A, 0x737A, 0x1596, 0x737B, 0x737B, 0x1620, 0x737C, 0x737C, 0x31F8, + 0x737D, 0x737D, 0x31F7, 0x737E, 0x737E, 0x32E2, 0x737F, 0x737F, 0x3390, + 0x7380, 0x7380, 0x16CA, 0x7381, 0x7381, 0x3426, 0x7382, 0x7382, 0x3425, + 0x7383, 0x7383, 0x3427, 0x7384, 0x7384, 0x0356, 0x7385, 0x7385, 0x1B7D, + 0x7386, 0x7386, 0x092A, 0x7387, 0x7387, 0x0B1F, 0x7388, 0x7388, 0x1F8E, + 0x7389, 0x7389, 0x0357, 0x738A, 0x738A, 0x17B1, 0x738B, 0x738B, 0x02EE, + 0x738E, 0x738E, 0x180E, 0x738F, 0x738F, 0x46E5, 0x7392, 0x7392, 0x18D1, + 0x7393, 0x7394, 0x18CF, 0x7395, 0x7395, 0x18CD, 0x7396, 0x7396, 0x04EF, + 0x7397, 0x7397, 0x18CE, 0x7398, 0x7398, 0x39F6, 0x739C, 0x739C, 0x408A, + 0x739D, 0x739D, 0x1A0C, 0x739E, 0x739E, 0x395B, 0x739F, 0x739F, 0x0652, + 0x73A0, 0x73A0, 0x1A0A, 0x73A1, 0x73A1, 0x1A06, 0x73A2, 0x73A2, 0x1A09, + 0x73A4, 0x73A4, 0x1A05, 0x73A5, 0x73A5, 0x0654, 0x73A6, 0x73A6, 0x1A08, + 0x73A7, 0x73A7, 0x4087, 0x73A8, 0x73A8, 0x0651, 0x73A9, 0x73A9, 0x0650, + 0x73AA, 0x73AA, 0x428D, 0x73AB, 0x73AB, 0x0653, 0x73AC, 0x73AC, 0x1A0B, + 0x73AD, 0x73AD, 0x1A07, 0x73B2, 0x73B2, 0x079B, 0x73B3, 0x73B3, 0x079E, + 0x73B4, 0x73B4, 0x1B85, 0x73B5, 0x73B5, 0x1B84, 0x73B6, 0x73B6, 0x1B83, + 0x73B7, 0x73B7, 0x0798, 0x73B8, 0x73B8, 0x1B8C, 0x73B9, 0x73B9, 0x1B82, + 0x73BB, 0x73BB, 0x079A, 0x73BC, 0x73BC, 0x1D3D, 0x73BE, 0x73BE, 0x1B89, + 0x73BF, 0x73BF, 0x1B87, 0x73C0, 0x73C0, 0x079D, 0x73C2, 0x73C2, 0x1B7F, + 0x73C3, 0x73C3, 0x1B8A, 0x73C5, 0x73C5, 0x1B81, 0x73C6, 0x73C6, 0x1B8B, + 0x73C7, 0x73C7, 0x1B88, 0x73C8, 0x73C8, 0x1B80, 0x73C9, 0x73C9, 0x4290, + 0x73CA, 0x73CA, 0x0799, 0x73CB, 0x73CB, 0x1B8D, 0x73CC, 0x73CC, 0x1B7E, + 0x73CD, 0x73CD, 0x079C, 0x73CE, 0x73CE, 0x411B, 0x73CF, 0x73CF, 0x428C, + 0x73D0, 0x73D0, 0x3B17, 0x73D2, 0x73D2, 0x1D42, 0x73D3, 0x73D3, 0x1D39, + 0x73D4, 0x73D4, 0x1D44, 0x73D5, 0x73D5, 0x4073, 0x73D6, 0x73D6, 0x1D3C, + 0x73D7, 0x73D8, 0x1D47, 0x73D9, 0x73D9, 0x1D3A, 0x73DA, 0x73DA, 0x1D46, + 0x73DB, 0x73DB, 0x1D43, 0x73DC, 0x73DC, 0x1D41, 0x73DD, 0x73DD, 0x1D45, + 0x73DE, 0x73DE, 0x0930, 0x73E0, 0x73E0, 0x092E, 0x73E1, 0x73E1, 0x46F0, + 0x73E2, 0x73E2, 0x3CA3, 0x73E3, 0x73E3, 0x1D3F, 0x73E4, 0x73E4, 0x42A5, + 0x73E5, 0x73E5, 0x1D3B, 0x73E6, 0x73E6, 0x3CBA, 0x73E7, 0x73E7, 0x1D3E, + 0x73E8, 0x73E8, 0x1D49, 0x73E9, 0x73E9, 0x1D40, 0x73EA, 0x73EA, 0x092F, + 0x73EB, 0x73EB, 0x1B86, 0x73ED, 0x73ED, 0x092B, 0x73EE, 0x73EE, 0x092D, + 0x73EF, 0x73EF, 0x4011, 0x73F3, 0x73F3, 0x3CAB, 0x73F4, 0x73F4, 0x1F9C, + 0x73F5, 0x73F5, 0x1F91, 0x73F6, 0x73F6, 0x1F8F, 0x73F7, 0x73F7, 0x429A, + 0x73F8, 0x73F8, 0x1F90, 0x73F9, 0x73F9, 0x3BF9, 0x73FA, 0x73FA, 0x1F97, + 0x73FB, 0x73FB, 0x3CAC, 0x73FC, 0x73FC, 0x1F98, 0x73FD, 0x73FD, 0x1F94, + 0x73FE, 0x73FE, 0x0B24, 0x73FF, 0x73FF, 0x1F99, 0x7400, 0x7400, 0x1F96, + 0x7401, 0x7401, 0x1F93, 0x7403, 0x7403, 0x0B22, 0x7404, 0x7404, 0x1F92, + 0x7405, 0x7405, 0x0B20, 0x7406, 0x7406, 0x0B23, 0x7407, 0x7407, 0x1F95, + 0x7408, 0x7408, 0x1F9D, 0x7409, 0x7409, 0x092C, 0x740A, 0x740A, 0x0B21, + 0x740B, 0x740B, 0x1F9B, 0x740C, 0x740C, 0x1F9A, 0x740D, 0x740D, 0x0B25, + 0x7411, 0x7411, 0x456C, 0x7412, 0x7412, 0x3BE6, 0x7414, 0x7414, 0x39F4, + 0x7415, 0x7415, 0x429B, 0x7416, 0x7416, 0x2215, 0x7417, 0x7417, 0x40AD, + 0x7419, 0x7419, 0x46F3, 0x741A, 0x741A, 0x2216, 0x741B, 0x741B, 0x0CE0, + 0x741C, 0x741C, 0x38DD, 0x741D, 0x741D, 0x221C, 0x741E, 0x741F, 0x46F4, + 0x7420, 0x7420, 0x221E, 0x7421, 0x7421, 0x2217, 0x7422, 0x7422, 0x0CDA, + 0x7423, 0x7423, 0x221B, 0x7424, 0x7424, 0x221A, 0x7425, 0x7425, 0x0CDB, + 0x7426, 0x7426, 0x0CE1, 0x7428, 0x7428, 0x0CE2, 0x7429, 0x7429, 0x221D, + 0x742A, 0x742A, 0x0CD8, 0x742B, 0x742B, 0x2214, 0x742C, 0x742C, 0x2212, + 0x742D, 0x742D, 0x2218, 0x742E, 0x742E, 0x2211, 0x742F, 0x742F, 0x0CDF, + 0x7430, 0x7430, 0x2213, 0x7431, 0x7431, 0x2219, 0x7432, 0x7432, 0x221F, + 0x7433, 0x7433, 0x0CD9, 0x7434, 0x7434, 0x0CDE, 0x7435, 0x7436, 0x0CDC, + 0x7437, 0x7437, 0x3AE1, 0x7438, 0x7438, 0x3B09, 0x7439, 0x7439, 0x429E, + 0x743A, 0x743A, 0x0CD7, 0x743C, 0x743C, 0x3ADF, 0x743F, 0x743F, 0x0E81, + 0x7440, 0x7440, 0x24A0, 0x7441, 0x7441, 0x0E80, 0x7442, 0x7442, 0x24A4, + 0x7443, 0x7443, 0x3A1A, 0x7444, 0x7444, 0x249A, 0x7445, 0x7445, 0x3BD7, + 0x7446, 0x7446, 0x24A5, 0x7447, 0x7447, 0x42A4, 0x7448, 0x7448, 0x3CB5, + 0x7449, 0x7449, 0x4291, 0x744A, 0x744B, 0x249B, 0x744D, 0x744D, 0x24A6, + 0x744E, 0x744E, 0x24A3, 0x744F, 0x7450, 0x24A1, 0x7451, 0x7451, 0x249E, + 0x7452, 0x7452, 0x249D, 0x7453, 0x7453, 0x4231, 0x7454, 0x7454, 0x24A7, + 0x7455, 0x7455, 0x0E7D, 0x7456, 0x7456, 0x39F5, 0x7457, 0x7457, 0x249F, + 0x7459, 0x7459, 0x0E82, 0x745A, 0x745A, 0x0E7C, 0x745B, 0x745C, 0x0E83, + 0x745D, 0x745D, 0x42C6, 0x745E, 0x745E, 0x0E7F, 0x745F, 0x745F, 0x0E7E, + 0x7460, 0x7460, 0x42A2, 0x7462, 0x7462, 0x272B, 0x7463, 0x7463, 0x102D, + 0x7464, 0x7464, 0x102C, 0x7465, 0x7465, 0x4101, 0x7467, 0x7467, 0x2730, + 0x7468, 0x7468, 0x3AEE, 0x7469, 0x7469, 0x11A6, 0x746A, 0x746A, 0x102E, + 0x746B, 0x746B, 0x3BE7, 0x746C, 0x746C, 0x42A8, 0x746D, 0x746D, 0x1030, + 0x746E, 0x746E, 0x2731, 0x746F, 0x746F, 0x0E7B, 0x7470, 0x7470, 0x102F, + 0x7471, 0x7471, 0x272D, 0x7472, 0x7472, 0x272F, 0x7473, 0x7473, 0x272C, + 0x7474, 0x7474, 0x42A9, 0x7475, 0x7475, 0x272E, 0x7476, 0x7476, 0x42A6, + 0x7479, 0x7479, 0x297C, 0x747A, 0x747A, 0x3AD1, 0x747C, 0x747C, 0x297B, + 0x747D, 0x747D, 0x2978, 0x747E, 0x747E, 0x11A9, 0x747F, 0x747F, 0x2BCB, + 0x7480, 0x7480, 0x11AA, 0x7481, 0x7481, 0x2977, 0x7482, 0x7482, 0x42AC, + 0x7483, 0x7483, 0x11A8, 0x7485, 0x7485, 0x2979, 0x7486, 0x7486, 0x2976, + 0x7487, 0x7487, 0x2973, 0x7488, 0x7488, 0x297A, 0x7489, 0x748A, 0x2974, + 0x748B, 0x748B, 0x11A7, 0x748C, 0x748C, 0x3A21, 0x748D, 0x748D, 0x469D, + 0x7490, 0x7490, 0x2DA8, 0x7492, 0x7492, 0x2BCF, 0x7494, 0x7494, 0x2BCE, + 0x7495, 0x7495, 0x2BD0, 0x7497, 0x7497, 0x2DA5, 0x7498, 0x7498, 0x12FC, + 0x7499, 0x7499, 0x39F3, 0x749A, 0x749A, 0x2BCC, 0x749B, 0x749B, 0x3B0A, + 0x749C, 0x749C, 0x12FA, 0x749E, 0x749E, 0x12FE, 0x749F, 0x749F, 0x12FD, + 0x74A0, 0x74A0, 0x2BCD, 0x74A1, 0x74A1, 0x2BD1, 0x74A3, 0x74A3, 0x12FB, + 0x74A4, 0x74A4, 0x4170, 0x74A5, 0x74A5, 0x2DAC, 0x74A6, 0x74A6, 0x1412, + 0x74A7, 0x74A7, 0x14F4, 0x74A8, 0x74A8, 0x1413, 0x74A9, 0x74A9, 0x1410, + 0x74AA, 0x74AA, 0x2DA9, 0x74AB, 0x74AB, 0x2DA7, 0x74AD, 0x74AD, 0x2DAA, + 0x74AF, 0x74AF, 0x2DAD, 0x74B0, 0x74B0, 0x1411, 0x74B1, 0x74B1, 0x2DAB, + 0x74B2, 0x74B2, 0x2DA6, 0x74B4, 0x74B4, 0x3CA5, 0x74B5, 0x74B5, 0x2F58, + 0x74B6, 0x74B6, 0x2F5B, 0x74B7, 0x74B7, 0x30C2, 0x74B8, 0x74B8, 0x2F56, + 0x74BA, 0x74BA, 0x31F9, 0x74BB, 0x74BB, 0x2F5C, 0x74BD, 0x74BD, 0x1597, + 0x74BE, 0x74BE, 0x2F5A, 0x74BF, 0x74BF, 0x14F5, 0x74C0, 0x74C0, 0x2F57, + 0x74C1, 0x74C1, 0x2F59, 0x74C2, 0x74C2, 0x2F5D, 0x74C3, 0x74C3, 0x30C3, + 0x74C5, 0x74C5, 0x30C1, 0x74C8, 0x74C8, 0x42B5, 0x74CA, 0x74CA, 0x1598, + 0x74CB, 0x74CB, 0x30C0, 0x74CC, 0x74CC, 0x3ADE, 0x74CF, 0x74CF, 0x1621, + 0x74D0, 0x74D0, 0x3A9B, 0x74D3, 0x74D3, 0x46FA, 0x74D4, 0x74D4, 0x167E, + 0x74D5, 0x74D5, 0x3392, 0x74D6, 0x74D6, 0x167D, 0x74D7, 0x74D7, 0x3394, + 0x74D8, 0x74D8, 0x3391, 0x74D9, 0x74D9, 0x3393, 0x74DA, 0x74DA, 0x16FE, + 0x74DB, 0x74DB, 0x348D, 0x74DC, 0x74DC, 0x0358, 0x74DD, 0x74DD, 0x1A0D, + 0x74DE, 0x74DF, 0x1D4A, 0x74E0, 0x74E0, 0x0B26, 0x74E1, 0x74E1, 0x24A8, + 0x74E2, 0x74E2, 0x12FF, 0x74E3, 0x74E3, 0x1599, 0x74E4, 0x74E4, 0x16CB, + 0x74E5, 0x74E5, 0x348E, 0x74E6, 0x74E6, 0x0359, 0x74E7, 0x74E7, 0x3FFE, + 0x74E8, 0x74E8, 0x1A0E, 0x74E9, 0x74E9, 0x0120, 0x74EC, 0x74EC, 0x1B8E, + 0x74EE, 0x74EE, 0x1B8F, 0x74F0, 0x74F0, 0x3FE6, 0x74F1, 0x74F1, 0x3F9B, + 0x74F2, 0x74F2, 0x3FDF, 0x74F4, 0x74F5, 0x1D4C, 0x74F6, 0x74F7, 0x0B27, + 0x74F8, 0x74F8, 0x3FF4, 0x74FB, 0x74FB, 0x2220, 0x74FD, 0x74FD, 0x24AB, + 0x74FE, 0x74FE, 0x24AA, 0x74FF, 0x74FF, 0x24A9, 0x7500, 0x7500, 0x2732, + 0x7502, 0x7503, 0x2733, 0x7504, 0x7504, 0x1031, 0x7505, 0x7505, 0x3FDE, + 0x7507, 0x7507, 0x297E, 0x7508, 0x7508, 0x297D, 0x750B, 0x750B, 0x2BD2, + 0x750C, 0x750D, 0x1300, 0x750E, 0x750E, 0x42B7, 0x750F, 0x750F, 0x2DB1, + 0x7510, 0x7512, 0x2DAE, 0x7513, 0x7513, 0x2F5F, 0x7514, 0x7514, 0x2F5E, + 0x7515, 0x7515, 0x14F6, 0x7516, 0x7516, 0x30C4, 0x7517, 0x7517, 0x32E3, + 0x7518, 0x7518, 0x035A, 0x7519, 0x7519, 0x4583, 0x751A, 0x751A, 0x079F, + 0x751C, 0x751C, 0x0B29, 0x751D, 0x751D, 0x24AC, 0x751E, 0x751E, 0x42B8, + 0x751F, 0x751F, 0x035B, 0x7521, 0x7521, 0x1D4E, 0x7522, 0x7522, 0x0B2A, + 0x7525, 0x7526, 0x0CE3, 0x7528, 0x7529, 0x035C, 0x752A, 0x752A, 0x180F, + 0x752B, 0x752B, 0x04F1, 0x752C, 0x752C, 0x04F0, 0x752D, 0x752D, 0x07A0, + 0x752E, 0x752E, 0x1B90, 0x752F, 0x752F, 0x2221, 0x7530, 0x7533, 0x035E, + 0x7534, 0x7534, 0x3E87, 0x7535, 0x7535, 0x455A, 0x7537, 0x7538, 0x04F2, + 0x7539, 0x7539, 0x18D3, 0x753A, 0x753A, 0x18D2, 0x753B, 0x753B, 0x3DFB, + 0x753D, 0x753D, 0x0655, 0x753E, 0x753E, 0x1A11, 0x753F, 0x7540, 0x1A0F, + 0x7542, 0x7542, 0x43CD, 0x7546, 0x7546, 0x3F40, 0x7547, 0x7548, 0x1B91, + 0x754A, 0x754A, 0x42BF, 0x754B, 0x754B, 0x07A4, 0x754C, 0x754C, 0x07A2, + 0x754D, 0x754D, 0x42BE, 0x754E, 0x754E, 0x07A3, 0x754F, 0x754F, 0x07A1, + 0x7551, 0x7551, 0x3CFE, 0x7553, 0x7553, 0x3FEB, 0x7554, 0x7554, 0x0931, + 0x7555, 0x7555, 0x3AEA, 0x7559, 0x7559, 0x0935, 0x755A, 0x755A, 0x0934, + 0x755B, 0x755B, 0x1D4F, 0x755C, 0x755C, 0x0933, 0x755D, 0x755D, 0x0932, + 0x755F, 0x755F, 0x1D50, 0x7560, 0x7560, 0x3D71, 0x7562, 0x7562, 0x0B2D, + 0x7563, 0x7563, 0x1F9F, 0x7564, 0x7564, 0x1F9E, 0x7565, 0x7566, 0x0B2B, + 0x7567, 0x7567, 0x42C0, 0x756A, 0x756A, 0x0CE6, 0x756B, 0x756B, 0x0CE5, + 0x756C, 0x756C, 0x2223, 0x756D, 0x756D, 0x46FD, 0x756E, 0x756E, 0x42C1, + 0x756F, 0x756F, 0x2222, 0x7570, 0x7570, 0x0B2E, 0x7572, 0x7572, 0x46FE, + 0x7576, 0x7576, 0x0E85, 0x7577, 0x7577, 0x24AE, 0x7578, 0x7578, 0x0E86, + 0x7579, 0x7579, 0x24AD, 0x757A, 0x757A, 0x3F4F, 0x757D, 0x757D, 0x2735, + 0x757E, 0x757E, 0x297F, 0x757F, 0x757F, 0x11AB, 0x7580, 0x7580, 0x2BD3, + 0x7583, 0x7583, 0x3AE5, 0x7584, 0x7584, 0x2DB2, 0x7586, 0x7586, 0x159B, + 0x7587, 0x7587, 0x159A, 0x758A, 0x758A, 0x16CC, 0x758B, 0x758B, 0x0362, + 0x758C, 0x758C, 0x1A12, 0x758D, 0x758D, 0x46FF, 0x758E, 0x758E, 0x42C5, + 0x758F, 0x758F, 0x0B2F, 0x7590, 0x7590, 0x2736, 0x7591, 0x7591, 0x1032, + 0x7592, 0x7592, 0x022E, 0x7594, 0x7595, 0x18D4, 0x7598, 0x7598, 0x1A13, + 0x7599, 0x759A, 0x0657, 0x759D, 0x759D, 0x0656, 0x759E, 0x759E, 0x42C7, + 0x75A2, 0x75A3, 0x07A8, 0x75A4, 0x75A5, 0x07A6, 0x75A7, 0x75A7, 0x1B93, + 0x75AA, 0x75AA, 0x1B94, 0x75AB, 0x75AB, 0x07A5, 0x75B0, 0x75B0, 0x1D51, + 0x75B1, 0x75B1, 0x3EAD, 0x75B2, 0x75B3, 0x0939, 0x75B4, 0x75B4, 0x42C8, + 0x75B5, 0x75B5, 0x0B32, 0x75B6, 0x75B6, 0x1D57, 0x75B8, 0x75B8, 0x093F, + 0x75B9, 0x75B9, 0x093D, 0x75BA, 0x75BA, 0x1D58, 0x75BB, 0x75BB, 0x1D53, + 0x75BC, 0x75BC, 0x093C, 0x75BD, 0x75BD, 0x093B, 0x75BE, 0x75BE, 0x0936, + 0x75BF, 0x75BF, 0x1D56, 0x75C0, 0x75C0, 0x1D55, 0x75C1, 0x75C1, 0x1D52, + 0x75C2, 0x75C2, 0x093E, 0x75C3, 0x75C3, 0x3F93, 0x75C4, 0x75C4, 0x1D54, + 0x75C5, 0x75C5, 0x0937, 0x75C7, 0x75C7, 0x0938, 0x75C8, 0x75C8, 0x4701, + 0x75CA, 0x75CA, 0x0B33, 0x75CB, 0x75CC, 0x1FA3, 0x75CD, 0x75CD, 0x0B34, + 0x75CE, 0x75CE, 0x1FA0, 0x75CF, 0x75CF, 0x1FA2, 0x75D0, 0x75D0, 0x1FA6, + 0x75D1, 0x75D1, 0x1FA5, 0x75D2, 0x75D2, 0x1FA1, 0x75D4, 0x75D5, 0x0B30, + 0x75D7, 0x75D7, 0x222B, 0x75D8, 0x75D8, 0x0CEB, 0x75D9, 0x75D9, 0x0CEA, + 0x75DA, 0x75DA, 0x2225, 0x75DB, 0x75DB, 0x0CE8, 0x75DC, 0x75DC, 0x43CE, + 0x75DD, 0x75DD, 0x2228, 0x75DE, 0x75DE, 0x0CEC, 0x75DF, 0x75DF, 0x2229, + 0x75E0, 0x75E0, 0x0CED, 0x75E1, 0x75E1, 0x2226, 0x75E2, 0x75E2, 0x0CE7, + 0x75E3, 0x75E3, 0x0CE9, 0x75E4, 0x75E4, 0x222A, 0x75E6, 0x75E6, 0x2227, + 0x75E7, 0x75E7, 0x2224, 0x75ED, 0x75ED, 0x24BB, 0x75EF, 0x75EF, 0x24B0, + 0x75F0, 0x75F0, 0x0E88, 0x75F1, 0x75F1, 0x0E8B, 0x75F2, 0x75F2, 0x0E8A, + 0x75F3, 0x75F3, 0x0E8F, 0x75F4, 0x75F4, 0x0E8E, 0x75F5, 0x75F5, 0x24BC, + 0x75F6, 0x75F6, 0x24BA, 0x75F7, 0x75F7, 0x24B3, 0x75F8, 0x75F8, 0x24B7, + 0x75F9, 0x75F9, 0x24B6, 0x75FA, 0x75FA, 0x0E8C, 0x75FB, 0x75FB, 0x24B9, + 0x75FC, 0x75FC, 0x24B5, 0x75FD, 0x75FD, 0x24BD, 0x75FE, 0x75FE, 0x24B4, + 0x75FF, 0x75FF, 0x0E8D, 0x7600, 0x7600, 0x0E87, 0x7601, 0x7601, 0x0E89, + 0x7602, 0x7602, 0x42C9, 0x7603, 0x7603, 0x24B2, 0x7607, 0x7607, 0x3F8F, + 0x7608, 0x7608, 0x2738, 0x7609, 0x7609, 0x1036, 0x760A, 0x760A, 0x273C, + 0x760B, 0x760B, 0x1035, 0x760C, 0x760C, 0x2739, 0x760D, 0x760D, 0x1034, + 0x760F, 0x760F, 0x24B1, 0x7610, 0x7610, 0x24B8, 0x7611, 0x7611, 0x273B, + 0x7613, 0x7613, 0x1037, 0x7614, 0x7614, 0x273D, 0x7615, 0x7615, 0x273A, + 0x7616, 0x7616, 0x2737, 0x7619, 0x7619, 0x2982, 0x761A, 0x761A, 0x2986, + 0x761B, 0x761B, 0x2988, 0x761C, 0x761C, 0x2984, 0x761D, 0x761D, 0x2983, + 0x761E, 0x761E, 0x2981, 0x761F, 0x761F, 0x11AE, 0x7620, 0x7620, 0x11AC, + 0x7621, 0x7622, 0x11B1, 0x7623, 0x7623, 0x2985, 0x7624, 0x7624, 0x11AF, + 0x7625, 0x7625, 0x2980, 0x7626, 0x7626, 0x11B0, 0x7627, 0x7627, 0x1033, + 0x7628, 0x7628, 0x2987, 0x7629, 0x7629, 0x11AD, 0x762C, 0x762C, 0x42CA, + 0x762D, 0x762D, 0x2BD5, 0x762F, 0x762F, 0x2BD4, 0x7630, 0x7630, 0x2BDC, + 0x7631, 0x7631, 0x2BD6, 0x7632, 0x7632, 0x2BDB, 0x7633, 0x7633, 0x2BD8, + 0x7634, 0x7634, 0x1302, 0x7635, 0x7635, 0x2BDA, 0x7638, 0x7638, 0x1303, + 0x763A, 0x763A, 0x1304, 0x763B, 0x763B, 0x3E70, 0x763C, 0x763C, 0x2BD9, + 0x763D, 0x763D, 0x2BD7, 0x7640, 0x7640, 0x3EE6, 0x7642, 0x7642, 0x1415, + 0x7643, 0x7643, 0x2DB3, 0x7646, 0x7646, 0x1414, 0x7647, 0x7647, 0x2DB6, + 0x7648, 0x7649, 0x2DB4, 0x764C, 0x764C, 0x1416, 0x764D, 0x764D, 0x4702, + 0x764E, 0x764E, 0x3E72, 0x764F, 0x764F, 0x42CC, 0x7650, 0x7650, 0x2F63, + 0x7651, 0x7651, 0x42CB, 0x7652, 0x7652, 0x14F9, 0x7653, 0x7653, 0x2F64, + 0x7654, 0x7654, 0x3EF0, 0x7656, 0x7656, 0x14F7, 0x7657, 0x7657, 0x2F65, + 0x7658, 0x7658, 0x14F8, 0x7659, 0x7659, 0x2F62, 0x765A, 0x765A, 0x2F66, + 0x765C, 0x765C, 0x2F60, 0x765F, 0x765F, 0x159C, 0x7660, 0x7660, 0x30C5, + 0x7661, 0x7661, 0x159D, 0x7662, 0x7662, 0x1622, 0x7664, 0x7664, 0x2F61, + 0x7665, 0x7665, 0x1623, 0x7666, 0x7666, 0x3EAA, 0x7667, 0x7667, 0x3FA9, + 0x7669, 0x7669, 0x167F, 0x766A, 0x766A, 0x32E4, 0x766C, 0x766C, 0x16CE, + 0x766D, 0x766D, 0x3395, 0x766E, 0x766E, 0x16CD, 0x766F, 0x766F, 0x42CD, + 0x7670, 0x7670, 0x3428, 0x7671, 0x7672, 0x1723, 0x7673, 0x7673, 0x3AEB, + 0x7674, 0x7674, 0x4703, 0x7675, 0x7675, 0x3543, 0x7676, 0x7676, 0x022F, + 0x7678, 0x7678, 0x07AA, 0x7679, 0x7679, 0x1B95, 0x767A, 0x767A, 0x4705, + 0x767B, 0x767C, 0x0CEE, 0x767D, 0x767D, 0x0363, 0x767E, 0x767E, 0x03F5, + 0x767F, 0x767F, 0x1810, 0x7680, 0x7680, 0x43D3, 0x7681, 0x7681, 0x18D6, + 0x7682, 0x7682, 0x04F4, 0x7684, 0x7684, 0x0659, 0x7686, 0x7688, 0x07AB, + 0x7689, 0x7689, 0x1FA8, 0x768A, 0x768A, 0x1D59, 0x768B, 0x768B, 0x0940, + 0x768C, 0x768C, 0x43D4, 0x768E, 0x768E, 0x0B35, 0x768F, 0x768F, 0x1FA7, + 0x7690, 0x7690, 0x42D0, 0x7692, 0x7692, 0x222D, 0x7693, 0x7693, 0x0CF1, + 0x7695, 0x7695, 0x222C, 0x7696, 0x7696, 0x0CF0, 0x7699, 0x7699, 0x24BE, + 0x769A, 0x769A, 0x11B3, 0x769B, 0x769B, 0x298C, 0x769C, 0x769E, 0x2989, + 0x76A1, 0x76A1, 0x42D5, 0x76A4, 0x76A4, 0x2DB7, 0x76A5, 0x76A5, 0x42D6, + 0x76A6, 0x76A6, 0x2F67, 0x76AA, 0x76AA, 0x31FB, 0x76AB, 0x76AB, 0x31FA, + 0x76AD, 0x76AD, 0x3396, 0x76AE, 0x76AE, 0x0364, 0x76AF, 0x76AF, 0x1A14, + 0x76B0, 0x76B0, 0x0941, 0x76B4, 0x76B4, 0x0CF2, 0x76B5, 0x76B5, 0x24BF, + 0x76B7, 0x76B7, 0x42D7, 0x76B8, 0x76B8, 0x273E, 0x76BA, 0x76BA, 0x11B4, + 0x76BB, 0x76BB, 0x2BDD, 0x76BD, 0x76BD, 0x2F68, 0x76BE, 0x76BE, 0x31FC, + 0x76BF, 0x76BF, 0x0365, 0x76C2, 0x76C2, 0x065A, 0x76C3, 0x76C3, 0x07B0, + 0x76C4, 0x76C4, 0x1B96, 0x76C5, 0x76C5, 0x07B1, 0x76C6, 0x76C6, 0x07AF, + 0x76C8, 0x76C8, 0x07AE, 0x76C9, 0x76C9, 0x1D5A, 0x76CA, 0x76CA, 0x0942, + 0x76CC, 0x76CC, 0x42D8, 0x76CD, 0x76CE, 0x0943, 0x76D2, 0x76D2, 0x0B37, + 0x76D3, 0x76D3, 0x1FA9, 0x76D4, 0x76D4, 0x0B36, 0x76D6, 0x76D6, 0x3F55, + 0x76DA, 0x76DA, 0x222E, 0x76DB, 0x76DB, 0x0B38, 0x76DC, 0x76DC, 0x0CF3, + 0x76DD, 0x76DD, 0x24C0, 0x76DE, 0x76DF, 0x0E90, 0x76E1, 0x76E1, 0x1038, + 0x76E3, 0x76E3, 0x1039, 0x76E4, 0x76E4, 0x11B5, 0x76E5, 0x76E5, 0x1306, + 0x76E6, 0x76E6, 0x2BDE, 0x76E7, 0x76E7, 0x1305, 0x76E9, 0x76E9, 0x2DB8, + 0x76EA, 0x76EA, 0x1417, 0x76EC, 0x76EC, 0x2F69, 0x76ED, 0x76ED, 0x31FD, + 0x76EE, 0x76EE, 0x0366, 0x76EF, 0x76EF, 0x04F5, 0x76F0, 0x76F0, 0x1A17, + 0x76F1, 0x76F1, 0x1A16, 0x76F2, 0x76F2, 0x065B, 0x76F3, 0x76F3, 0x1A15, + 0x76F4, 0x76F4, 0x065C, 0x76F5, 0x76F5, 0x1A18, 0x76F7, 0x76F7, 0x1B9C, + 0x76F8, 0x76F8, 0x07B4, 0x76F9, 0x76F9, 0x07B3, 0x76FA, 0x76FA, 0x1B9E, + 0x76FB, 0x76FB, 0x1B9D, 0x76FC, 0x76FC, 0x07B8, 0x76FE, 0x76FE, 0x07B7, + 0x7701, 0x7701, 0x07B2, 0x7703, 0x7705, 0x1B98, 0x7707, 0x7707, 0x07B9, + 0x7708, 0x7708, 0x1B97, 0x7709, 0x7709, 0x07B5, 0x770A, 0x770A, 0x1B9B, + 0x770B, 0x770B, 0x07B6, 0x770C, 0x770C, 0x3D62, 0x770E, 0x770F, 0x3B02, + 0x7710, 0x7710, 0x1D5D, 0x7711, 0x7711, 0x1D61, 0x7712, 0x7712, 0x1D5F, + 0x7713, 0x7713, 0x1D5E, 0x7715, 0x7715, 0x1D62, 0x7719, 0x771A, 0x1D63, + 0x771B, 0x771B, 0x1D5C, 0x771D, 0x771D, 0x1D5B, 0x771E, 0x771E, 0x42DE, + 0x771F, 0x7720, 0x0946, 0x7722, 0x7722, 0x1D65, 0x7723, 0x7723, 0x1D60, + 0x7724, 0x7724, 0x3FE8, 0x7725, 0x7725, 0x1FB2, 0x7726, 0x7726, 0x42DF, + 0x7727, 0x7727, 0x1D66, 0x7728, 0x7728, 0x0948, 0x7729, 0x7729, 0x0945, + 0x772B, 0x772B, 0x3FF3, 0x772D, 0x772D, 0x1FAC, 0x772F, 0x772F, 0x1FAB, + 0x7731, 0x7732, 0x1FAD, 0x7733, 0x7733, 0x1FB0, 0x7734, 0x7734, 0x1FAF, + 0x7735, 0x7735, 0x1FB4, 0x7736, 0x7736, 0x0B3C, 0x7737, 0x7737, 0x0B39, + 0x7738, 0x7738, 0x0B3D, 0x7739, 0x7739, 0x1FAA, 0x773A, 0x773A, 0x0B3E, + 0x773B, 0x773B, 0x1FB3, 0x773C, 0x773C, 0x0B3B, 0x773D, 0x773D, 0x1FB1, + 0x773E, 0x773E, 0x0B3A, 0x7740, 0x7740, 0x42E0, 0x7743, 0x7743, 0x470A, + 0x7744, 0x7744, 0x2231, 0x7745, 0x7745, 0x2233, 0x7746, 0x7747, 0x222F, + 0x774A, 0x774A, 0x2234, 0x774B, 0x774C, 0x2236, 0x774D, 0x774D, 0x2232, + 0x774E, 0x774E, 0x2235, 0x774F, 0x774F, 0x0CF4, 0x7752, 0x7752, 0x24C4, + 0x7754, 0x7754, 0x24C9, 0x7755, 0x7755, 0x24C1, 0x7756, 0x7756, 0x24C5, + 0x7758, 0x7758, 0x42E3, 0x7759, 0x7759, 0x24CA, 0x775A, 0x775A, 0x24C6, + 0x775B, 0x775B, 0x0E92, 0x775C, 0x775C, 0x0E9A, 0x775E, 0x775E, 0x0E95, + 0x775F, 0x7760, 0x24C2, 0x7761, 0x7761, 0x103D, 0x7762, 0x7762, 0x0E9D, + 0x7763, 0x7763, 0x0E96, 0x7765, 0x7765, 0x0E9B, 0x7766, 0x7766, 0x0E94, + 0x7767, 0x7767, 0x24C8, 0x7768, 0x7768, 0x0E9C, 0x7769, 0x7769, 0x24C7, + 0x776A, 0x776A, 0x0E98, 0x776B, 0x776B, 0x0E93, 0x776C, 0x776C, 0x0E99, + 0x776D, 0x776D, 0x24CB, 0x776E, 0x776E, 0x2743, 0x776F, 0x776F, 0x2745, + 0x7772, 0x7772, 0x396B, 0x7777, 0x7777, 0x46A9, 0x7778, 0x7778, 0x3B00, + 0x7779, 0x7779, 0x0E97, 0x777A, 0x777A, 0x4317, 0x777B, 0x777B, 0x3B04, + 0x777C, 0x777C, 0x2740, 0x777D, 0x777D, 0x103B, 0x777E, 0x777E, 0x2746, + 0x777F, 0x777F, 0x103C, 0x7780, 0x7780, 0x2744, 0x7781, 0x7781, 0x273F, + 0x7782, 0x7782, 0x2742, 0x7783, 0x7783, 0x2747, 0x7784, 0x7784, 0x103A, + 0x7785, 0x7785, 0x2741, 0x7787, 0x7787, 0x11B7, 0x7788, 0x7788, 0x2990, + 0x7789, 0x7789, 0x298F, 0x778B, 0x778B, 0x11BA, 0x778C, 0x778C, 0x11B8, + 0x778D, 0x778D, 0x298D, 0x778E, 0x778E, 0x11B6, 0x778F, 0x778F, 0x298E, + 0x7791, 0x7791, 0x11B9, 0x7793, 0x7793, 0x382D, 0x7795, 0x7795, 0x2BE6, + 0x7797, 0x7797, 0x2BE8, 0x7798, 0x7798, 0x470E, 0x7799, 0x7799, 0x2BE7, + 0x779A, 0x779A, 0x2BDF, 0x779B, 0x779B, 0x2BE3, 0x779C, 0x779C, 0x2BE2, + 0x779D, 0x779D, 0x2BE0, 0x779E, 0x779F, 0x1308, 0x77A0, 0x77A0, 0x1307, + 0x77A1, 0x77A1, 0x2BE1, 0x77A2, 0x77A3, 0x2BE4, 0x77A5, 0x77A5, 0x130A, + 0x77A7, 0x77A7, 0x141C, 0x77A8, 0x77A8, 0x2DC0, 0x77AA, 0x77AA, 0x1419, + 0x77AB, 0x77AB, 0x2DBA, 0x77AC, 0x77AC, 0x141B, 0x77AD, 0x77AD, 0x141D, + 0x77AF, 0x77AF, 0x42E5, 0x77B0, 0x77B0, 0x141A, 0x77B1, 0x77B1, 0x2DBF, + 0x77B2, 0x77B2, 0x2DBB, 0x77B3, 0x77B3, 0x1418, 0x77B4, 0x77B4, 0x2DBE, + 0x77B5, 0x77B5, 0x2DB9, 0x77B6, 0x77B6, 0x2DBD, 0x77B7, 0x77B7, 0x2DBC, + 0x77B9, 0x77B9, 0x3E73, 0x77BA, 0x77BA, 0x2F6B, 0x77BB, 0x77BC, 0x14FC, + 0x77BD, 0x77BD, 0x14FA, 0x77BE, 0x77BE, 0x4711, 0x77BF, 0x77BF, 0x14FB, + 0x77C2, 0x77C2, 0x2F6A, 0x77C3, 0x77C3, 0x3BB1, 0x77C4, 0x77C4, 0x30C8, + 0x77C5, 0x77C5, 0x41C1, 0x77C7, 0x77C7, 0x159E, 0x77C9, 0x77CA, 0x30C6, + 0x77CB, 0x77CB, 0x4712, 0x77CC, 0x77CC, 0x31FE, 0x77CD, 0x77CD, 0x3201, + 0x77CE, 0x77CF, 0x31FF, 0x77D0, 0x77D0, 0x32E5, 0x77D3, 0x77D3, 0x1680, + 0x77D4, 0x77D4, 0x3429, 0x77D5, 0x77D5, 0x348F, 0x77D7, 0x77D7, 0x1725, + 0x77D8, 0x77D9, 0x34D3, 0x77DA, 0x77DA, 0x1753, 0x77DB, 0x77DB, 0x0367, + 0x77DC, 0x77DC, 0x07BA, 0x77DE, 0x77DE, 0x2238, 0x77E0, 0x77E0, 0x24CC, + 0x77E2, 0x77E2, 0x0368, 0x77E3, 0x77E3, 0x04F6, 0x77E5, 0x77E5, 0x065D, + 0x77E6, 0x77E6, 0x4081, 0x77E7, 0x77E8, 0x1B9F, 0x77E9, 0x77E9, 0x0949, + 0x77EC, 0x77EC, 0x2239, 0x77ED, 0x77ED, 0x0CF5, 0x77EE, 0x77EE, 0x0E9E, + 0x77EF, 0x77EF, 0x141E, 0x77F0, 0x77F0, 0x2DC1, 0x77F1, 0x77F1, 0x30C9, + 0x77F2, 0x77F2, 0x3202, 0x77F3, 0x77F3, 0x0369, 0x77F4, 0x77F4, 0x42E9, + 0x77F7, 0x77F7, 0x1A1E, 0x77F8, 0x77F8, 0x1A19, 0x77F9, 0x77F9, 0x1A1B, + 0x77FA, 0x77FA, 0x1A1D, 0x77FB, 0x77FB, 0x1A1C, 0x77FC, 0x77FC, 0x1A1A, + 0x77FD, 0x77FD, 0x065E, 0x77FE, 0x77FE, 0x3FD5, 0x7802, 0x7802, 0x07BB, + 0x7803, 0x7803, 0x1BA9, 0x7805, 0x7805, 0x1BA4, 0x7806, 0x7806, 0x1BA1, + 0x7808, 0x7808, 0x3E46, 0x7809, 0x7809, 0x1BA8, 0x780C, 0x780D, 0x07BD, + 0x780E, 0x780E, 0x1BA7, 0x780F, 0x780F, 0x1BA6, 0x7810, 0x7810, 0x1BA5, + 0x7811, 0x7812, 0x1BA2, 0x7813, 0x7813, 0x1BAA, 0x7814, 0x7814, 0x07BC, + 0x7818, 0x7818, 0x4713, 0x781C, 0x781C, 0x4714, 0x781D, 0x781D, 0x094D, + 0x781E, 0x781E, 0x3B13, 0x781F, 0x781F, 0x0953, 0x7820, 0x7820, 0x0952, + 0x7821, 0x7821, 0x1D6F, 0x7822, 0x7822, 0x1D69, 0x7823, 0x7823, 0x1D67, + 0x7825, 0x7825, 0x0950, 0x7826, 0x7826, 0x1FBB, 0x7827, 0x7827, 0x094B, + 0x7828, 0x7828, 0x1D6C, 0x7829, 0x7829, 0x1D70, 0x782A, 0x782A, 0x1D72, + 0x782B, 0x782B, 0x1D6E, 0x782C, 0x782C, 0x1D68, 0x782D, 0x782D, 0x0951, + 0x782E, 0x782E, 0x1D6D, 0x782F, 0x782F, 0x1D6B, 0x7830, 0x7830, 0x094A, + 0x7831, 0x7831, 0x1D73, 0x7832, 0x7832, 0x0954, 0x7833, 0x7833, 0x1D71, + 0x7834, 0x7834, 0x094E, 0x7835, 0x7835, 0x1D6A, 0x7837, 0x7837, 0x094F, + 0x7838, 0x7838, 0x094C, 0x7839, 0x7839, 0x43D6, 0x783C, 0x783C, 0x401A, + 0x783D, 0x783D, 0x3C6A, 0x7842, 0x7842, 0x3AC4, 0x7843, 0x7843, 0x0B40, + 0x7844, 0x7844, 0x3C2B, 0x7845, 0x7845, 0x1FBC, 0x7847, 0x7847, 0x4715, + 0x7848, 0x7848, 0x1FB5, 0x7849, 0x7849, 0x1FB7, 0x784A, 0x784A, 0x1FB9, + 0x784B, 0x784B, 0x3C6D, 0x784C, 0x784C, 0x1FBA, 0x784D, 0x784D, 0x1FB8, + 0x784E, 0x784E, 0x0B41, 0x7850, 0x7850, 0x1FBD, 0x7851, 0x7851, 0x4716, + 0x7852, 0x7852, 0x1FB6, 0x7853, 0x7853, 0x3F95, 0x7854, 0x7854, 0x3C6B, + 0x785C, 0x785C, 0x223D, 0x785D, 0x785D, 0x0CF6, 0x785E, 0x785E, 0x2245, + 0x7860, 0x7860, 0x223A, 0x7862, 0x7862, 0x2246, 0x7864, 0x7865, 0x223B, + 0x7866, 0x7866, 0x4717, 0x7868, 0x7868, 0x2244, 0x7869, 0x7869, 0x2243, + 0x786A, 0x786A, 0x2240, 0x786B, 0x786B, 0x0B3F, 0x786C, 0x786C, 0x0CF7, + 0x786D, 0x786D, 0x223E, 0x786E, 0x786E, 0x2241, 0x786F, 0x786F, 0x0CF8, + 0x7870, 0x7870, 0x2242, 0x7871, 0x7871, 0x223F, 0x7879, 0x7879, 0x24D7, + 0x787A, 0x787A, 0x3EE9, 0x787B, 0x787B, 0x24DB, 0x787C, 0x787C, 0x0EA5, + 0x787E, 0x787E, 0x274D, 0x787F, 0x787F, 0x0EA8, 0x7880, 0x7880, 0x24D9, + 0x7881, 0x7881, 0x36E8, 0x7883, 0x7883, 0x24D6, 0x7884, 0x7884, 0x24D1, + 0x7885, 0x7886, 0x24D3, 0x7887, 0x7887, 0x24CD, 0x7888, 0x7888, 0x3B15, + 0x7889, 0x7889, 0x0EA4, 0x788C, 0x788C, 0x0EA3, 0x788D, 0x788D, 0x3B14, + 0x788E, 0x788E, 0x0E9F, 0x788F, 0x788F, 0x24D0, 0x7891, 0x7891, 0x0EA6, + 0x7893, 0x7893, 0x0EA7, 0x7894, 0x7894, 0x24CF, 0x7895, 0x7895, 0x24D2, + 0x7896, 0x7896, 0x24DA, 0x7897, 0x7898, 0x0EA1, 0x7899, 0x7899, 0x24D8, + 0x789A, 0x789A, 0x24CE, 0x789E, 0x789E, 0x274F, 0x789F, 0x789F, 0x103F, + 0x78A0, 0x78A0, 0x2751, 0x78A1, 0x78A1, 0x24D5, 0x78A2, 0x78A2, 0x2753, + 0x78A3, 0x78A3, 0x1043, 0x78A4, 0x78A4, 0x2754, 0x78A5, 0x78A5, 0x2750, + 0x78A7, 0x78A7, 0x1040, 0x78A8, 0x78A8, 0x274C, 0x78A9, 0x78A9, 0x1042, + 0x78AA, 0x78AA, 0x2749, 0x78AB, 0x78AB, 0x274E, 0x78AC, 0x78AC, 0x2752, + 0x78AD, 0x78AD, 0x274B, 0x78AF, 0x78AF, 0x42EC, 0x78B0, 0x78B0, 0x0EA0, + 0x78B1, 0x78B1, 0x42F4, 0x78B2, 0x78B2, 0x2748, 0x78B3, 0x78B3, 0x1041, + 0x78B4, 0x78B4, 0x274A, 0x78B6, 0x78B6, 0x3C6C, 0x78B8, 0x78B8, 0x4571, + 0x78B9, 0x78B9, 0x3C63, 0x78BA, 0x78BA, 0x11BD, 0x78BB, 0x78BB, 0x2992, + 0x78BC, 0x78BC, 0x11C1, 0x78BE, 0x78BE, 0x11BF, 0x78C1, 0x78C1, 0x103E, + 0x78C3, 0x78C4, 0x2999, 0x78C5, 0x78C5, 0x11BC, 0x78C7, 0x78C7, 0x42ED, + 0x78C8, 0x78C8, 0x2998, 0x78C9, 0x78C9, 0x299B, 0x78CA, 0x78CA, 0x11BE, + 0x78CB, 0x78CB, 0x11BB, 0x78CC, 0x78CC, 0x2994, 0x78CD, 0x78CD, 0x2991, + 0x78CE, 0x78CE, 0x2996, 0x78CF, 0x78CF, 0x2993, 0x78D0, 0x78D0, 0x11C2, + 0x78D1, 0x78D1, 0x2995, 0x78D2, 0x78D2, 0x3B16, 0x78D3, 0x78D3, 0x42EE, + 0x78D4, 0x78D4, 0x2997, 0x78D5, 0x78D5, 0x11C0, 0x78D7, 0x78D7, 0x42F2, + 0x78D8, 0x78D8, 0x3F8C, 0x78DA, 0x78DA, 0x130C, 0x78DB, 0x78DB, 0x2BEF, + 0x78DD, 0x78DD, 0x2BE9, 0x78DE, 0x78DE, 0x2BED, 0x78DF, 0x78E0, 0x2BF3, + 0x78E1, 0x78E2, 0x2BF0, 0x78E3, 0x78E3, 0x2BEE, 0x78E5, 0x78E5, 0x2BEB, + 0x78E7, 0x78E7, 0x130E, 0x78E8, 0x78E8, 0x130B, 0x78E9, 0x78E9, 0x2BEA, + 0x78EA, 0x78EA, 0x2BEC, 0x78EC, 0x78EC, 0x130D, 0x78ED, 0x78ED, 0x2BF2, + 0x78EE, 0x78EE, 0x3A81, 0x78EF, 0x78EF, 0x1422, 0x78F0, 0x78F0, 0x3B3A, + 0x78F1, 0x78F1, 0x40BE, 0x78F2, 0x78F2, 0x2DC8, 0x78F3, 0x78F3, 0x2DC2, + 0x78F4, 0x78F4, 0x1421, 0x78F5, 0x78F5, 0x38B3, 0x78F7, 0x78F7, 0x141F, + 0x78F9, 0x78F9, 0x2DCA, 0x78FA, 0x78FA, 0x1420, 0x78FB, 0x78FC, 0x2DC5, + 0x78FD, 0x78FD, 0x2DC3, 0x78FE, 0x78FE, 0x2DCB, 0x78FF, 0x78FF, 0x2DC7, + 0x7901, 0x7901, 0x1423, 0x7902, 0x7902, 0x2DC4, 0x7904, 0x7904, 0x2DCC, + 0x7905, 0x7905, 0x2DC9, 0x7906, 0x7906, 0x3FCF, 0x7909, 0x7909, 0x2F6F, + 0x790C, 0x790C, 0x2F6C, 0x790E, 0x790E, 0x14FE, 0x7910, 0x7910, 0x2F70, + 0x7911, 0x7911, 0x2F72, 0x7912, 0x7912, 0x2F71, 0x7913, 0x7914, 0x2F6D, + 0x7917, 0x7917, 0x30CE, 0x7919, 0x7919, 0x159F, 0x791B, 0x791B, 0x30CB, + 0x791C, 0x791C, 0x30CD, 0x791D, 0x791D, 0x30CA, 0x791E, 0x791E, 0x30CF, + 0x7921, 0x7921, 0x30CC, 0x7923, 0x7923, 0x3204, 0x7924, 0x7924, 0x3207, + 0x7925, 0x7925, 0x3203, 0x7926, 0x7926, 0x1624, 0x7927, 0x7928, 0x3205, + 0x7929, 0x7929, 0x3208, 0x792A, 0x792A, 0x1625, 0x792B, 0x792B, 0x1627, + 0x792C, 0x792C, 0x1626, 0x792D, 0x792D, 0x32E6, 0x792E, 0x792E, 0x42F0, + 0x792F, 0x792F, 0x32E8, 0x7931, 0x7931, 0x32E7, 0x7932, 0x7932, 0x471B, + 0x7933, 0x7933, 0x471A, 0x7934, 0x7934, 0x42F3, 0x7935, 0x7935, 0x3397, + 0x7936, 0x7936, 0x3783, 0x7938, 0x7938, 0x3490, 0x7939, 0x7939, 0x34D5, + 0x793A, 0x793A, 0x036A, 0x793B, 0x793B, 0x44F7, 0x793C, 0x793C, 0x4300, + 0x793D, 0x793D, 0x18D7, 0x793E, 0x793E, 0x065F, 0x793F, 0x793F, 0x1A20, + 0x7940, 0x7941, 0x0660, 0x7942, 0x7942, 0x1A1F, 0x7944, 0x7944, 0x1BAF, + 0x7945, 0x7945, 0x1BAE, 0x7946, 0x7946, 0x07BF, 0x7947, 0x7947, 0x07C2, + 0x7948, 0x7948, 0x07C1, 0x7949, 0x7949, 0x07C0, 0x794A, 0x794A, 0x1BAB, + 0x794B, 0x794B, 0x1BAD, 0x794C, 0x794C, 0x1BAC, 0x794F, 0x794F, 0x1D76, + 0x7950, 0x7950, 0x0956, 0x7951, 0x7951, 0x1D7A, 0x7952, 0x7952, 0x1D79, + 0x7953, 0x7953, 0x1D78, 0x7954, 0x7954, 0x1D74, 0x7955, 0x7955, 0x0955, + 0x7956, 0x7956, 0x0959, 0x7957, 0x7957, 0x095C, 0x7958, 0x7958, 0x37E5, + 0x7959, 0x7959, 0x3B18, 0x795A, 0x795A, 0x095D, 0x795B, 0x795B, 0x1D75, + 0x795C, 0x795C, 0x1D77, 0x795D, 0x795D, 0x095B, 0x795E, 0x795E, 0x095A, + 0x795F, 0x795F, 0x0958, 0x7960, 0x7960, 0x0957, 0x7961, 0x7961, 0x1FC4, + 0x7962, 0x7962, 0x3E7D, 0x7963, 0x7963, 0x1FC2, 0x7964, 0x7964, 0x1FBE, + 0x7965, 0x7965, 0x0B42, 0x7967, 0x7967, 0x1FBF, 0x7968, 0x7968, 0x0B43, + 0x7969, 0x796A, 0x1FC0, 0x796B, 0x796B, 0x1FC3, 0x796D, 0x796D, 0x0B44, + 0x7970, 0x7970, 0x224A, 0x7971, 0x7971, 0x4168, 0x7972, 0x7972, 0x2249, + 0x7973, 0x7973, 0x2248, 0x7974, 0x7974, 0x2247, 0x7979, 0x7979, 0x24DF, + 0x797A, 0x797A, 0x0EA9, 0x797C, 0x797C, 0x24DC, 0x797D, 0x797D, 0x24DE, + 0x797E, 0x797E, 0x3E26, 0x797F, 0x797F, 0x0EAA, 0x7980, 0x7980, 0x42FC, + 0x7981, 0x7981, 0x0EAB, 0x7982, 0x7982, 0x24DD, 0x7983, 0x7983, 0x3DF6, + 0x7986, 0x7986, 0x42F9, 0x7987, 0x7987, 0x4588, 0x7988, 0x7988, 0x275D, + 0x798A, 0x798B, 0x2756, 0x798D, 0x798D, 0x1046, 0x798E, 0x798F, 0x1044, + 0x7990, 0x7990, 0x275F, 0x7991, 0x7991, 0x471D, 0x7992, 0x7992, 0x275E, + 0x7993, 0x7993, 0x275B, 0x7994, 0x7994, 0x275A, 0x7995, 0x7995, 0x2759, + 0x7996, 0x7996, 0x2758, 0x7997, 0x7997, 0x275C, 0x7998, 0x7998, 0x2755, + 0x7999, 0x7999, 0x43FC, 0x799A, 0x799A, 0x299C, 0x799B, 0x799B, 0x29A1, + 0x799C, 0x799C, 0x299F, 0x799D, 0x799D, 0x42FE, 0x799F, 0x799F, 0x395E, + 0x79A0, 0x79A0, 0x299E, 0x79A1, 0x79A1, 0x299D, 0x79A2, 0x79A2, 0x29A0, + 0x79A4, 0x79A4, 0x2BF5, 0x79A5, 0x79A5, 0x3B1E, 0x79A6, 0x79A6, 0x130F, + 0x79A7, 0x79A7, 0x1424, 0x79A8, 0x79A8, 0x2DCE, 0x79A9, 0x79A9, 0x4301, + 0x79AA, 0x79AA, 0x1425, 0x79AB, 0x79AB, 0x2DCD, 0x79AC, 0x79AC, 0x2F74, + 0x79AD, 0x79AD, 0x2F73, 0x79AE, 0x79AE, 0x14FF, 0x79B0, 0x79B0, 0x30D0, + 0x79B1, 0x79B1, 0x15A0, 0x79B2, 0x79B2, 0x3209, 0x79B3, 0x79B3, 0x16CF, + 0x79B4, 0x79B4, 0x3398, 0x79B6, 0x79B6, 0x3492, 0x79B7, 0x79B7, 0x3491, + 0x79B8, 0x79B8, 0x17B2, 0x79B9, 0x79BA, 0x07C3, 0x79BB, 0x79BB, 0x1FC5, + 0x79BD, 0x79BD, 0x0EAD, 0x79BE, 0x79BE, 0x036B, 0x79BF, 0x79BF, 0x04F9, + 0x79C0, 0x79C0, 0x04F8, 0x79C1, 0x79C1, 0x04F7, 0x79C4, 0x79C4, 0x3CCD, + 0x79C5, 0x79C5, 0x1A21, 0x79C6, 0x79C6, 0x4305, 0x79C8, 0x79C8, 0x0663, + 0x79C9, 0x79C9, 0x0662, 0x79CB, 0x79CB, 0x07C7, 0x79CC, 0x79CC, 0x4233, + 0x79CD, 0x79CD, 0x1BB1, 0x79CE, 0x79CE, 0x1BB4, 0x79CF, 0x79CF, 0x1BB2, + 0x79D1, 0x79D2, 0x07C5, 0x79D4, 0x79D4, 0x4307, 0x79D5, 0x79D5, 0x1BB0, + 0x79D6, 0x79D6, 0x1BB3, 0x79D8, 0x79D8, 0x0964, 0x79DC, 0x79DC, 0x1D81, + 0x79DD, 0x79DD, 0x1D83, 0x79DE, 0x79DE, 0x1D82, 0x79DF, 0x79DF, 0x0961, + 0x79E0, 0x79E0, 0x1D7D, 0x79E2, 0x79E2, 0x3C5A, 0x79E3, 0x79E3, 0x095F, + 0x79E4, 0x79E4, 0x095E, 0x79E6, 0x79E6, 0x0962, 0x79E7, 0x79E7, 0x0960, + 0x79E9, 0x79E9, 0x0963, 0x79EA, 0x79EA, 0x1D80, 0x79EB, 0x79EC, 0x1D7B, + 0x79ED, 0x79ED, 0x1D7F, 0x79EE, 0x79EE, 0x1D7E, 0x79F1, 0x79F1, 0x3B27, + 0x79F4, 0x79F4, 0x3B22, 0x79F6, 0x79F7, 0x1FC8, 0x79F8, 0x79F8, 0x1FC7, + 0x79FA, 0x79FA, 0x1FC6, 0x79FB, 0x79FB, 0x0B45, 0x7A00, 0x7A00, 0x0CFD, + 0x7A02, 0x7A02, 0x224B, 0x7A03, 0x7A03, 0x224D, 0x7A04, 0x7A04, 0x224F, + 0x7A05, 0x7A05, 0x0CFC, 0x7A06, 0x7A06, 0x471E, 0x7A08, 0x7A08, 0x0CFA, + 0x7A0A, 0x7A0A, 0x224C, 0x7A0B, 0x7A0B, 0x0CFB, 0x7A0C, 0x7A0C, 0x224E, + 0x7A0D, 0x7A0D, 0x0CF9, 0x7A10, 0x7A10, 0x24E9, 0x7A11, 0x7A11, 0x24E0, + 0x7A12, 0x7A12, 0x24E3, 0x7A13, 0x7A13, 0x24E7, 0x7A14, 0x7A14, 0x0EB1, + 0x7A15, 0x7A15, 0x24E5, 0x7A17, 0x7A17, 0x24E4, 0x7A18, 0x7A19, 0x24E1, + 0x7A1A, 0x7A1A, 0x0EAF, 0x7A1B, 0x7A1B, 0x24E8, 0x7A1C, 0x7A1C, 0x0EAE, + 0x7A1E, 0x7A1E, 0x0EB3, 0x7A1F, 0x7A1F, 0x0EB2, 0x7A20, 0x7A20, 0x0EB0, + 0x7A22, 0x7A22, 0x24E6, 0x7A26, 0x7A26, 0x2765, 0x7A28, 0x7A28, 0x2764, + 0x7A2B, 0x7A2B, 0x2760, 0x7A2D, 0x7A2D, 0x3FDA, 0x7A2E, 0x7A2E, 0x1047, + 0x7A2F, 0x7A2F, 0x2763, 0x7A30, 0x7A30, 0x2762, 0x7A31, 0x7A31, 0x1048, + 0x7A37, 0x7A37, 0x11C7, 0x7A39, 0x7A39, 0x29A3, 0x7A3A, 0x7A3A, 0x3B21, + 0x7A3B, 0x7A3B, 0x11C8, 0x7A3C, 0x7A3C, 0x11C4, 0x7A3D, 0x7A3D, 0x11C6, + 0x7A3E, 0x7A3E, 0x3F8B, 0x7A3F, 0x7A3F, 0x11C3, 0x7A40, 0x7A40, 0x11C5, + 0x7A43, 0x7A43, 0x396C, 0x7A44, 0x7A44, 0x2BF6, 0x7A45, 0x7A45, 0x3DF1, + 0x7A46, 0x7A46, 0x1312, 0x7A47, 0x7A47, 0x2BF8, 0x7A48, 0x7A48, 0x2BF7, + 0x7A49, 0x7A49, 0x3733, 0x7A4A, 0x7A4A, 0x2761, 0x7A4B, 0x7A4B, 0x1314, + 0x7A4C, 0x7A4C, 0x1313, 0x7A4D, 0x7A4E, 0x1310, 0x7A54, 0x7A54, 0x2DD3, + 0x7A56, 0x7A56, 0x2DD1, 0x7A57, 0x7A57, 0x1426, 0x7A58, 0x7A58, 0x2DD2, + 0x7A5A, 0x7A5A, 0x2DD4, 0x7A5B, 0x7A5B, 0x2DD0, 0x7A5C, 0x7A5C, 0x2DCF, + 0x7A5F, 0x7A5F, 0x2F75, 0x7A60, 0x7A60, 0x1502, 0x7A61, 0x7A62, 0x1500, + 0x7A65, 0x7A65, 0x3736, 0x7A67, 0x7A68, 0x30D1, 0x7A69, 0x7A69, 0x15A2, + 0x7A6B, 0x7A6B, 0x15A1, 0x7A6C, 0x7A6D, 0x320B, 0x7A6E, 0x7A6E, 0x320A, + 0x7A70, 0x7A71, 0x3399, 0x7A74, 0x7A74, 0x036C, 0x7A75, 0x7A75, 0x1811, + 0x7A76, 0x7A76, 0x04FA, 0x7A78, 0x7A78, 0x1A22, 0x7A79, 0x7A79, 0x0665, + 0x7A7A, 0x7A7A, 0x0664, 0x7A7B, 0x7A7B, 0x1A23, 0x7A7D, 0x7A7D, 0x3737, + 0x7A7E, 0x7A7E, 0x1BB6, 0x7A7F, 0x7A7F, 0x07C8, 0x7A80, 0x7A80, 0x1BB5, + 0x7A81, 0x7A81, 0x07C9, 0x7A83, 0x7A83, 0x3D7D, 0x7A84, 0x7A84, 0x0965, + 0x7A85, 0x7A85, 0x1D86, 0x7A86, 0x7A86, 0x1D84, 0x7A87, 0x7A87, 0x1D8A, + 0x7A88, 0x7A88, 0x0966, 0x7A89, 0x7A89, 0x1D85, 0x7A8A, 0x7A8A, 0x1D89, + 0x7A8B, 0x7A8C, 0x1D87, 0x7A8F, 0x7A8F, 0x1FCA, 0x7A90, 0x7A90, 0x1FCC, + 0x7A91, 0x7A91, 0x43D8, 0x7A92, 0x7A92, 0x0B46, 0x7A94, 0x7A94, 0x1FCB, + 0x7A95, 0x7A95, 0x0B47, 0x7A96, 0x7A96, 0x0D00, 0x7A97, 0x7A97, 0x0CFF, + 0x7A98, 0x7A98, 0x0CFE, 0x7A99, 0x7A99, 0x2250, 0x7A9E, 0x7A9E, 0x24EC, + 0x7A9F, 0x7AA0, 0x0EB4, 0x7AA2, 0x7AA2, 0x24EB, 0x7AA3, 0x7AA3, 0x24EA, + 0x7AA8, 0x7AA8, 0x2766, 0x7AA9, 0x7AA9, 0x104A, 0x7AAA, 0x7AAA, 0x1049, + 0x7AAB, 0x7AAC, 0x2767, 0x7AAE, 0x7AAE, 0x11CA, 0x7AAF, 0x7AAF, 0x11C9, + 0x7AB0, 0x7AB0, 0x373A, 0x7AB1, 0x7AB1, 0x2BFC, 0x7AB2, 0x7AB2, 0x29A4, + 0x7AB3, 0x7AB3, 0x29A6, 0x7AB4, 0x7AB4, 0x29A5, 0x7AB5, 0x7AB5, 0x2BFB, + 0x7AB6, 0x7AB6, 0x2BF9, 0x7AB7, 0x7AB7, 0x2BFD, 0x7AB8, 0x7AB8, 0x2BFA, + 0x7ABA, 0x7ABA, 0x1315, 0x7ABB, 0x7ABB, 0x3739, 0x7ABC, 0x7ABC, 0x4721, + 0x7ABE, 0x7ABE, 0x2DD5, 0x7ABF, 0x7ABF, 0x1427, 0x7AC0, 0x7AC1, 0x2DD6, + 0x7AC2, 0x7AC3, 0x373B, 0x7AC4, 0x7AC5, 0x1503, 0x7AC7, 0x7AC7, 0x1628, + 0x7AC8, 0x7AC8, 0x3D7F, 0x7AC9, 0x7AC9, 0x4570, 0x7ACA, 0x7ACA, 0x16FF, + 0x7ACB, 0x7ACB, 0x036D, 0x7ACF, 0x7ACF, 0x4724, 0x7AD1, 0x7AD1, 0x1BB7, + 0x7AD3, 0x7AD3, 0x3F8A, 0x7AD8, 0x7AD8, 0x1D8B, 0x7AD9, 0x7AD9, 0x0967, + 0x7ADA, 0x7ADA, 0x3740, 0x7ADB, 0x7ADB, 0x4725, 0x7ADC, 0x7ADC, 0x3951, + 0x7ADD, 0x7ADD, 0x3741, 0x7ADF, 0x7ADF, 0x0BDE, 0x7AE0, 0x7AE0, 0x0BDD, + 0x7AE2, 0x7AE2, 0x3B33, 0x7AE3, 0x7AE3, 0x0D02, 0x7AE4, 0x7AE4, 0x2252, + 0x7AE5, 0x7AE5, 0x0D01, 0x7AE6, 0x7AE6, 0x2251, 0x7AE7, 0x7AE7, 0x385D, + 0x7AE9, 0x7AE9, 0x3831, 0x7AEA, 0x7AEA, 0x3742, 0x7AEB, 0x7AEB, 0x24ED, + 0x7AED, 0x7AED, 0x104B, 0x7AEE, 0x7AEE, 0x2769, 0x7AEF, 0x7AEF, 0x104C, + 0x7AF6, 0x7AF6, 0x1629, 0x7AF7, 0x7AF7, 0x320D, 0x7AF9, 0x7AF9, 0x03F6, + 0x7AFA, 0x7AFA, 0x0666, 0x7AFB, 0x7AFB, 0x1A24, 0x7AFD, 0x7AFD, 0x07CB, + 0x7AFE, 0x7AFE, 0x3B3D, 0x7AFF, 0x7AFF, 0x07CA, 0x7B00, 0x7B01, 0x1BB8, + 0x7B04, 0x7B04, 0x1D8D, 0x7B05, 0x7B05, 0x1D8F, 0x7B06, 0x7B06, 0x0968, + 0x7B08, 0x7B08, 0x1D91, 0x7B09, 0x7B09, 0x1D94, 0x7B0A, 0x7B0A, 0x1D92, + 0x7B0B, 0x7B0B, 0x3746, 0x7B0C, 0x7B0C, 0x3B63, 0x7B0E, 0x7B0E, 0x1D93, + 0x7B0F, 0x7B0F, 0x1D90, 0x7B10, 0x7B10, 0x1D8C, 0x7B11, 0x7B11, 0x0969, + 0x7B12, 0x7B12, 0x1D95, 0x7B13, 0x7B13, 0x1D8E, 0x7B14, 0x7B14, 0x3F77, + 0x7B18, 0x7B18, 0x1FD5, 0x7B19, 0x7B19, 0x0B4D, 0x7B1A, 0x7B1A, 0x1FDE, + 0x7B1B, 0x7B1B, 0x0B4A, 0x7B1D, 0x7B1D, 0x1FD7, 0x7B1E, 0x7B1E, 0x0B4E, + 0x7B1F, 0x7B1F, 0x3F11, 0x7B20, 0x7B20, 0x0B48, 0x7B22, 0x7B22, 0x1FD2, + 0x7B23, 0x7B23, 0x1FDF, 0x7B24, 0x7B24, 0x1FD3, 0x7B25, 0x7B25, 0x1FD0, + 0x7B26, 0x7B26, 0x0B4C, 0x7B27, 0x7B27, 0x3B5F, 0x7B28, 0x7B28, 0x0B49, + 0x7B29, 0x7B29, 0x3748, 0x7B2A, 0x7B2A, 0x1FD6, 0x7B2B, 0x7B2B, 0x1FD9, + 0x7B2C, 0x7B2C, 0x0B4B, 0x7B2D, 0x7B2D, 0x1FDA, 0x7B2E, 0x7B2E, 0x0B4F, + 0x7B2F, 0x7B2F, 0x1FDB, 0x7B30, 0x7B30, 0x1FD1, 0x7B31, 0x7B31, 0x1FD8, + 0x7B32, 0x7B32, 0x1FDC, 0x7B33, 0x7B33, 0x1FD4, 0x7B34, 0x7B34, 0x1FCF, + 0x7B35, 0x7B35, 0x1FCD, 0x7B38, 0x7B38, 0x1FDD, 0x7B39, 0x7B39, 0x3D6E, + 0x7B3B, 0x7B3B, 0x1FCE, 0x7B40, 0x7B40, 0x2259, 0x7B42, 0x7B42, 0x3DED, + 0x7B43, 0x7B43, 0x3E25, 0x7B44, 0x7B44, 0x2255, 0x7B45, 0x7B45, 0x225B, + 0x7B46, 0x7B46, 0x0D05, 0x7B47, 0x7B47, 0x2254, 0x7B48, 0x7B48, 0x2256, + 0x7B49, 0x7B49, 0x0D03, 0x7B4A, 0x7B4A, 0x2253, 0x7B4B, 0x7B4B, 0x0D0A, + 0x7B4C, 0x7B4C, 0x2257, 0x7B4D, 0x7B4D, 0x0D09, 0x7B4E, 0x7B4E, 0x2258, + 0x7B4F, 0x7B4F, 0x0D0B, 0x7B50, 0x7B50, 0x0D06, 0x7B51, 0x7B51, 0x0D0C, + 0x7B52, 0x7B52, 0x0D07, 0x7B54, 0x7B54, 0x0D08, 0x7B55, 0x7B55, 0x3747, + 0x7B56, 0x7B56, 0x0D04, 0x7B58, 0x7B58, 0x225A, 0x7B60, 0x7B60, 0x0EB8, + 0x7B61, 0x7B61, 0x24F8, 0x7B62, 0x7B62, 0x4727, 0x7B63, 0x7B63, 0x24FB, + 0x7B64, 0x7B64, 0x24EF, 0x7B65, 0x7B65, 0x24F4, 0x7B66, 0x7B66, 0x24EE, + 0x7B67, 0x7B67, 0x0EBA, 0x7B69, 0x7B69, 0x24F2, 0x7B6C, 0x7B6C, 0x4728, + 0x7B6D, 0x7B6D, 0x24F0, 0x7B6E, 0x7B6E, 0x0EB9, 0x7B6F, 0x7B6F, 0x374C, + 0x7B70, 0x7B70, 0x24F7, 0x7B71, 0x7B71, 0x24F6, 0x7B72, 0x7B72, 0x24F3, + 0x7B73, 0x7B73, 0x24F5, 0x7B74, 0x7B74, 0x24F1, 0x7B75, 0x7B75, 0x1050, + 0x7B76, 0x7B76, 0x24FA, 0x7B77, 0x7B77, 0x0EB6, 0x7B78, 0x7B78, 0x24F9, + 0x7B7B, 0x7B7B, 0x4729, 0x7B82, 0x7B82, 0x2779, 0x7B84, 0x7B84, 0x1057, + 0x7B85, 0x7B85, 0x2774, 0x7B87, 0x7B87, 0x1056, 0x7B88, 0x7B88, 0x276A, + 0x7B8A, 0x7B8A, 0x276C, 0x7B8B, 0x7B8B, 0x104F, 0x7B8C, 0x7B8C, 0x2771, + 0x7B8D, 0x7B8D, 0x2770, 0x7B8E, 0x7B8E, 0x2773, 0x7B8F, 0x7B8F, 0x1054, + 0x7B90, 0x7B90, 0x276E, 0x7B91, 0x7B91, 0x276D, 0x7B92, 0x7B92, 0x3752, + 0x7B94, 0x7B94, 0x1053, 0x7B95, 0x7B95, 0x104E, 0x7B96, 0x7B96, 0x276F, + 0x7B97, 0x7B97, 0x1051, 0x7B98, 0x7B98, 0x2775, 0x7B99, 0x7B99, 0x2777, + 0x7B9B, 0x7B9B, 0x2772, 0x7B9C, 0x7B9C, 0x276B, 0x7B9D, 0x7B9D, 0x1052, + 0x7BA0, 0x7BA0, 0x11D2, 0x7BA1, 0x7BA1, 0x104D, 0x7BA2, 0x7BA2, 0x374B, + 0x7BA3, 0x7BA3, 0x3F14, 0x7BA4, 0x7BA4, 0x2778, 0x7BAC, 0x7BAC, 0x29AA, + 0x7BAD, 0x7BAD, 0x11CB, 0x7BAF, 0x7BAF, 0x29AC, 0x7BB1, 0x7BB1, 0x11CC, + 0x7BB2, 0x7BB2, 0x461C, 0x7BB4, 0x7BB4, 0x11CE, 0x7BB5, 0x7BB5, 0x29AF, + 0x7BB7, 0x7BB7, 0x29A7, 0x7BB8, 0x7BB8, 0x1055, 0x7BB9, 0x7BB9, 0x29AD, + 0x7BBE, 0x7BBE, 0x29A9, 0x7BC0, 0x7BC0, 0x0EB7, 0x7BC1, 0x7BC1, 0x11D1, + 0x7BC4, 0x7BC4, 0x11CD, 0x7BC6, 0x7BC7, 0x11CF, 0x7BC9, 0x7BC9, 0x1318, + 0x7BCA, 0x7BCA, 0x29AE, 0x7BCB, 0x7BCB, 0x29A8, 0x7BCC, 0x7BCC, 0x11D3, + 0x7BCE, 0x7BCE, 0x29AB, 0x7BCF, 0x7BCF, 0x3F18, 0x7BD0, 0x7BD0, 0x3750, + 0x7BD4, 0x7BD4, 0x2C07, 0x7BD5, 0x7BD5, 0x2C02, 0x7BD8, 0x7BD8, 0x2C0C, + 0x7BD9, 0x7BD9, 0x1316, 0x7BDA, 0x7BDA, 0x2C04, 0x7BDB, 0x7BDB, 0x131A, + 0x7BDC, 0x7BDC, 0x2C0A, 0x7BDD, 0x7BDD, 0x2C01, 0x7BDE, 0x7BDE, 0x2BFE, + 0x7BDF, 0x7BDF, 0x2C0D, 0x7BE0, 0x7BE0, 0x142D, 0x7BE1, 0x7BE1, 0x131B, + 0x7BE2, 0x7BE2, 0x2C09, 0x7BE3, 0x7BE3, 0x2BFF, 0x7BE4, 0x7BE4, 0x1319, + 0x7BE5, 0x7BE5, 0x2C03, 0x7BE6, 0x7BE6, 0x131D, 0x7BE7, 0x7BE7, 0x2C00, + 0x7BE8, 0x7BE8, 0x2C05, 0x7BE9, 0x7BE9, 0x131C, 0x7BEA, 0x7BEA, 0x2C08, + 0x7BEB, 0x7BEB, 0x2C0B, 0x7BF0, 0x7BF1, 0x2DE9, 0x7BF2, 0x7BF2, 0x2DDA, + 0x7BF3, 0x7BF3, 0x2DE1, 0x7BF4, 0x7BF4, 0x2DDF, 0x7BF7, 0x7BF7, 0x142B, + 0x7BF8, 0x7BF8, 0x2DE6, 0x7BF9, 0x7BF9, 0x2C06, 0x7BFA, 0x7BFA, 0x3757, + 0x7BFB, 0x7BFB, 0x2DDD, 0x7BFC, 0x7BFC, 0x3F1F, 0x7BFD, 0x7BFD, 0x2DE7, + 0x7BFE, 0x7BFE, 0x142A, 0x7BFF, 0x7BFF, 0x2DDC, 0x7C00, 0x7C00, 0x2DDB, + 0x7C01, 0x7C01, 0x2DE5, 0x7C02, 0x7C02, 0x2DE2, 0x7C03, 0x7C03, 0x2DE4, + 0x7C05, 0x7C05, 0x2DD8, 0x7C06, 0x7C06, 0x2DE8, 0x7C07, 0x7C07, 0x1428, + 0x7C09, 0x7C09, 0x2DE3, 0x7C0A, 0x7C0A, 0x2DEC, 0x7C0B, 0x7C0B, 0x2DE0, + 0x7C0C, 0x7C0C, 0x142C, 0x7C0D, 0x7C0D, 0x1429, 0x7C0E, 0x7C0E, 0x2DDE, + 0x7C0F, 0x7C0F, 0x2DD9, 0x7C10, 0x7C10, 0x2DEB, 0x7C11, 0x7C11, 0x1317, + 0x7C12, 0x7C12, 0x472A, 0x7C15, 0x7C15, 0x4061, 0x7C19, 0x7C19, 0x2F78, + 0x7C1B, 0x7C1B, 0x43D9, 0x7C1C, 0x7C1C, 0x2F76, 0x7C1D, 0x7C1D, 0x2F7C, + 0x7C1E, 0x7C1E, 0x1508, 0x7C1F, 0x7C1F, 0x2F7A, 0x7C20, 0x7C20, 0x2F79, + 0x7C21, 0x7C21, 0x150A, 0x7C22, 0x7C22, 0x2F7F, 0x7C23, 0x7C23, 0x1509, + 0x7C25, 0x7C25, 0x2F80, 0x7C26, 0x7C26, 0x2F7D, 0x7C27, 0x7C27, 0x1506, + 0x7C28, 0x7C28, 0x2F7E, 0x7C29, 0x7C29, 0x2F77, 0x7C2A, 0x7C2A, 0x1507, + 0x7C2B, 0x7C2B, 0x1505, 0x7C2C, 0x7C2C, 0x30D6, 0x7C2D, 0x7C2D, 0x2F7B, + 0x7C30, 0x7C30, 0x2F81, 0x7C33, 0x7C33, 0x30D3, 0x7C35, 0x7C35, 0x3759, + 0x7C37, 0x7C37, 0x15A7, 0x7C38, 0x7C38, 0x15A5, 0x7C39, 0x7C39, 0x30D5, + 0x7C3B, 0x7C3B, 0x30D7, 0x7C3C, 0x7C3C, 0x30D4, 0x7C3D, 0x7C3D, 0x15A6, + 0x7C3E, 0x7C3F, 0x15A3, 0x7C40, 0x7C40, 0x15A8, 0x7C42, 0x7C42, 0x3F1C, + 0x7C43, 0x7C43, 0x162B, 0x7C44, 0x7C44, 0x375B, 0x7C45, 0x7C45, 0x3212, + 0x7C47, 0x7C47, 0x3211, 0x7C48, 0x7C48, 0x320F, 0x7C49, 0x7C49, 0x320E, + 0x7C4A, 0x7C4A, 0x3210, 0x7C4C, 0x7C4C, 0x162A, 0x7C4D, 0x7C4D, 0x162C, + 0x7C50, 0x7C50, 0x1681, 0x7C51, 0x7C51, 0x3FB8, 0x7C53, 0x7C53, 0x32EA, + 0x7C54, 0x7C54, 0x32E9, 0x7C56, 0x7C56, 0x3EFF, 0x7C57, 0x7C57, 0x339B, + 0x7C59, 0x7C59, 0x339D, 0x7C5A, 0x7C5A, 0x339F, 0x7C5B, 0x7C5B, 0x339E, + 0x7C5C, 0x7C5C, 0x339C, 0x7C5D, 0x7C5D, 0x3B3F, 0x7C5F, 0x7C5F, 0x16D1, + 0x7C60, 0x7C60, 0x16D0, 0x7C63, 0x7C63, 0x1701, 0x7C64, 0x7C64, 0x1700, + 0x7C65, 0x7C65, 0x1702, 0x7C66, 0x7C66, 0x342B, 0x7C67, 0x7C67, 0x342A, + 0x7C69, 0x7C69, 0x34D6, 0x7C6A, 0x7C6A, 0x3493, 0x7C6B, 0x7C6B, 0x34D7, + 0x7C6C, 0x7C6C, 0x1745, 0x7C6D, 0x7C6D, 0x3B40, 0x7C6E, 0x7C6E, 0x1746, + 0x7C6F, 0x7C6F, 0x3507, 0x7C70, 0x7C70, 0x3F52, 0x7C72, 0x7C72, 0x176B, + 0x7C73, 0x7C73, 0x03F7, 0x7C74, 0x7C74, 0x469C, 0x7C75, 0x7C75, 0x1A25, + 0x7C78, 0x7C79, 0x1BBB, 0x7C7A, 0x7C7A, 0x1BBA, 0x7C7B, 0x7C7B, 0x472D, + 0x7C7C, 0x7C7C, 0x3B49, 0x7C7D, 0x7C7D, 0x07CC, 0x7C7E, 0x7C7E, 0x3F1A, + 0x7C7F, 0x7C81, 0x1BBD, 0x7C83, 0x7C83, 0x375C, 0x7C84, 0x7C84, 0x1D96, + 0x7C85, 0x7C85, 0x1D9C, 0x7C86, 0x7C86, 0x3F1D, 0x7C88, 0x7C88, 0x1D9A, + 0x7C89, 0x7C89, 0x096A, 0x7C8A, 0x7C8A, 0x1D98, 0x7C8C, 0x7C8C, 0x1D99, + 0x7C8D, 0x7C8D, 0x1D9B, 0x7C8E, 0x7C8E, 0x3B48, 0x7C91, 0x7C91, 0x1D97, + 0x7C92, 0x7C92, 0x0B50, 0x7C94, 0x7C94, 0x1FE0, 0x7C95, 0x7C95, 0x0B52, + 0x7C96, 0x7C96, 0x1FE2, 0x7C97, 0x7C97, 0x0B51, 0x7C98, 0x7C98, 0x1FE1, + 0x7C9C, 0x7C9C, 0x472E, 0x7C9E, 0x7C9E, 0x225D, 0x7C9F, 0x7C9F, 0x0D0D, + 0x7CA1, 0x7CA1, 0x225F, 0x7CA2, 0x7CA2, 0x225C, 0x7CA3, 0x7CA3, 0x1FE3, + 0x7CA5, 0x7CA5, 0x0D0E, 0x7CA6, 0x7CA6, 0x375E, 0x7CA7, 0x7CA7, 0x36ED, + 0x7CA8, 0x7CA8, 0x225E, 0x7CAC, 0x7CAC, 0x3885, 0x7CAE, 0x7CAE, 0x3B4A, + 0x7CAF, 0x7CAF, 0x24FE, 0x7CB1, 0x7CB1, 0x0EBB, 0x7CB2, 0x7CB2, 0x24FC, + 0x7CB3, 0x7CB3, 0x0EBC, 0x7CB4, 0x7CB4, 0x24FD, 0x7CB5, 0x7CB5, 0x0EBD, + 0x7CB8, 0x7CB8, 0x4730, 0x7CB9, 0x7CB9, 0x1058, 0x7CBA, 0x7CBA, 0x277D, + 0x7CBB, 0x7CBB, 0x277A, 0x7CBC, 0x7CBC, 0x277C, 0x7CBD, 0x7CBE, 0x1059, + 0x7CBF, 0x7CBF, 0x277B, 0x7CC2, 0x7CC2, 0x3FD7, 0x7CC5, 0x7CC5, 0x29B0, + 0x7CC7, 0x7CC7, 0x3761, 0x7CC8, 0x7CC8, 0x29B1, 0x7CC9, 0x7CC9, 0x3760, + 0x7CCA, 0x7CCA, 0x11D4, 0x7CCB, 0x7CCB, 0x29B3, 0x7CCC, 0x7CCC, 0x29B2, + 0x7CCD, 0x7CCD, 0x3B45, 0x7CCE, 0x7CCE, 0x0121, 0x7CD0, 0x7CD1, 0x2C11, + 0x7CD2, 0x7CD2, 0x2C0E, 0x7CD3, 0x7CD3, 0x3D5C, 0x7CD4, 0x7CD4, 0x2C0F, + 0x7CD5, 0x7CD6, 0x131E, 0x7CD7, 0x7CD7, 0x2C10, 0x7CD9, 0x7CD9, 0x1433, + 0x7CDA, 0x7CDA, 0x3FD9, 0x7CDC, 0x7CDC, 0x142F, 0x7CDD, 0x7CDD, 0x1434, + 0x7CDE, 0x7CDE, 0x1430, 0x7CDF, 0x7CDF, 0x1432, 0x7CE0, 0x7CE0, 0x142E, + 0x7CE2, 0x7CE2, 0x1431, 0x7CE6, 0x7CE6, 0x3762, 0x7CE7, 0x7CE7, 0x150B, + 0x7CE8, 0x7CE8, 0x2DED, 0x7CEA, 0x7CEA, 0x30D9, 0x7CEC, 0x7CEC, 0x30D8, + 0x7CED, 0x7CED, 0x43DA, 0x7CEE, 0x7CEE, 0x3213, 0x7CEF, 0x7CF0, 0x162D, + 0x7CF1, 0x7CF1, 0x33A1, 0x7CF2, 0x7CF2, 0x32EB, 0x7CF3, 0x7CF3, 0x3764, + 0x7CF4, 0x7CF4, 0x33A0, 0x7CF5, 0x7CF5, 0x3765, 0x7CF6, 0x7CF6, 0x34D8, + 0x7CF7, 0x7CF7, 0x351D, 0x7CF8, 0x7CF8, 0x03F8, 0x7CF9, 0x7CF9, 0x44F8, + 0x7CFB, 0x7CFB, 0x04FB, 0x7CFC, 0x7CFC, 0x456D, 0x7CFD, 0x7CFD, 0x1A26, + 0x7CFE, 0x7CFE, 0x0667, 0x7D00, 0x7D00, 0x07CF, 0x7D01, 0x7D01, 0x1BC2, + 0x7D02, 0x7D02, 0x07CD, 0x7D03, 0x7D03, 0x1BC0, 0x7D04, 0x7D04, 0x07D2, + 0x7D05, 0x7D05, 0x07CE, 0x7D06, 0x7D06, 0x07D3, 0x7D07, 0x7D07, 0x07D1, + 0x7D08, 0x7D08, 0x1BC1, 0x7D09, 0x7D09, 0x07D0, 0x7D0A, 0x7D0A, 0x096E, + 0x7D0B, 0x7D0B, 0x096D, 0x7D0C, 0x7D0C, 0x1DA7, 0x7D0D, 0x7D0D, 0x0976, + 0x7D0E, 0x7D0E, 0x1DA0, 0x7D0F, 0x7D0F, 0x1DA6, 0x7D10, 0x7D10, 0x0972, + 0x7D11, 0x7D11, 0x1D9F, 0x7D12, 0x7D12, 0x1DA5, 0x7D13, 0x7D13, 0x1DA3, + 0x7D14, 0x7D14, 0x0971, 0x7D15, 0x7D15, 0x0973, 0x7D16, 0x7D16, 0x1DA2, + 0x7D17, 0x7D17, 0x096C, 0x7D18, 0x7D18, 0x1DA1, 0x7D19, 0x7D19, 0x0977, + 0x7D1A, 0x7D1A, 0x0974, 0x7D1B, 0x7D1B, 0x0978, 0x7D1C, 0x7D1C, 0x0975, + 0x7D1D, 0x7D1D, 0x1D9E, 0x7D1E, 0x7D1E, 0x1D9D, 0x7D1F, 0x7D1F, 0x1DA4, + 0x7D20, 0x7D20, 0x096F, 0x7D21, 0x7D21, 0x096B, 0x7D22, 0x7D22, 0x0970, + 0x7D25, 0x7D25, 0x3EDE, 0x7D28, 0x7D28, 0x1FF2, 0x7D29, 0x7D29, 0x1FEB, + 0x7D2B, 0x7D2B, 0x0D13, 0x7D2C, 0x7D2C, 0x1FEA, 0x7D2E, 0x7D2E, 0x0B56, + 0x7D2F, 0x7D2F, 0x0B5D, 0x7D30, 0x7D30, 0x0B5A, 0x7D31, 0x7D31, 0x0B60, + 0x7D32, 0x7D32, 0x0B5F, 0x7D33, 0x7D33, 0x0B5B, 0x7D35, 0x7D35, 0x1FE4, + 0x7D36, 0x7D36, 0x1FE7, 0x7D38, 0x7D38, 0x1FE6, 0x7D39, 0x7D39, 0x0B57, + 0x7D3A, 0x7D3A, 0x1FE8, 0x7D3B, 0x7D3B, 0x1FF1, 0x7D3C, 0x7D3C, 0x0B58, + 0x7D3D, 0x7D3D, 0x1FE5, 0x7D3E, 0x7D3F, 0x1FEE, 0x7D40, 0x7D40, 0x0B59, + 0x7D41, 0x7D41, 0x1FEC, 0x7D42, 0x7D42, 0x0B5E, 0x7D43, 0x7D43, 0x0B54, + 0x7D44, 0x7D44, 0x0B5C, 0x7D45, 0x7D45, 0x1FE9, 0x7D46, 0x7D46, 0x0B53, + 0x7D47, 0x7D47, 0x1FED, 0x7D4A, 0x7D4A, 0x1FF0, 0x7D4D, 0x7D4D, 0x3FDD, + 0x7D4E, 0x7D4E, 0x2270, 0x7D4F, 0x7D4F, 0x2267, 0x7D50, 0x7D50, 0x0D10, + 0x7D51, 0x7D51, 0x226E, 0x7D52, 0x7D52, 0x226B, 0x7D53, 0x7D53, 0x2263, + 0x7D54, 0x7D54, 0x226C, 0x7D55, 0x7D55, 0x0D12, 0x7D56, 0x7D56, 0x2264, + 0x7D58, 0x7D58, 0x2260, 0x7D5A, 0x7D5A, 0x3E93, 0x7D5B, 0x7D5B, 0x0EC3, + 0x7D5C, 0x7D5C, 0x2269, 0x7D5D, 0x7D5D, 0x3769, 0x7D5E, 0x7D5E, 0x0D0F, + 0x7D5F, 0x7D5F, 0x226F, 0x7D61, 0x7D61, 0x0D16, 0x7D62, 0x7D62, 0x0D18, + 0x7D63, 0x7D63, 0x2262, 0x7D66, 0x7D66, 0x0D17, 0x7D67, 0x7D67, 0x2265, + 0x7D68, 0x7D68, 0x0D11, 0x7D69, 0x7D69, 0x226D, 0x7D6A, 0x7D6A, 0x2266, + 0x7D6B, 0x7D6B, 0x226A, 0x7D6D, 0x7D6D, 0x2268, 0x7D6E, 0x7D6E, 0x0D14, + 0x7D6F, 0x7D6F, 0x2261, 0x7D70, 0x7D70, 0x0D19, 0x7D71, 0x7D71, 0x0B55, + 0x7D72, 0x7D72, 0x0D15, 0x7D73, 0x7D73, 0x0D1A, 0x7D79, 0x7D79, 0x0EBF, + 0x7D7A, 0x7D7A, 0x2505, 0x7D7B, 0x7D7B, 0x2507, 0x7D7C, 0x7D7C, 0x2509, + 0x7D7D, 0x7D7D, 0x250D, 0x7D7F, 0x7D7F, 0x2503, 0x7D80, 0x7D80, 0x2501, + 0x7D81, 0x7D81, 0x0EC1, 0x7D83, 0x7D83, 0x2508, 0x7D84, 0x7D84, 0x250C, + 0x7D85, 0x7D85, 0x2504, 0x7D86, 0x7D86, 0x2500, 0x7D88, 0x7D88, 0x24FF, + 0x7D89, 0x7D89, 0x376B, 0x7D8C, 0x7D8C, 0x250A, 0x7D8D, 0x7D8D, 0x2502, + 0x7D8E, 0x7D8E, 0x2506, 0x7D8F, 0x7D8F, 0x0EC2, 0x7D91, 0x7D91, 0x0EC0, + 0x7D92, 0x7D92, 0x250E, 0x7D93, 0x7D93, 0x0EBE, 0x7D94, 0x7D94, 0x250B, + 0x7D96, 0x7D96, 0x278E, 0x7D97, 0x7D97, 0x3B53, 0x7D9C, 0x7D9C, 0x105D, + 0x7D9D, 0x7D9D, 0x2786, 0x7D9E, 0x7D9E, 0x11E1, 0x7D9F, 0x7D9F, 0x2790, + 0x7DA0, 0x7DA0, 0x1060, 0x7DA1, 0x7DA1, 0x2794, 0x7DA2, 0x7DA2, 0x1066, + 0x7DA3, 0x7DA3, 0x2781, 0x7DA4, 0x7DA4, 0x46D7, 0x7DA6, 0x7DA6, 0x2791, + 0x7DA7, 0x7DA7, 0x277E, 0x7DA8, 0x7DA8, 0x3C9C, 0x7DA9, 0x7DA9, 0x2793, + 0x7DAA, 0x7DAA, 0x2782, 0x7DAB, 0x7DAB, 0x376C, 0x7DAC, 0x7DAC, 0x106D, + 0x7DAD, 0x7DAD, 0x106A, 0x7DAE, 0x7DAE, 0x2792, 0x7DAF, 0x7DAF, 0x278C, + 0x7DB0, 0x7DB0, 0x105C, 0x7DB1, 0x7DB1, 0x1064, 0x7DB2, 0x7DB2, 0x1063, + 0x7DB3, 0x7DB3, 0x376E, 0x7DB4, 0x7DB4, 0x1062, 0x7DB5, 0x7DB5, 0x1068, + 0x7DB7, 0x7DB7, 0x277F, 0x7DB8, 0x7DB8, 0x1069, 0x7DB9, 0x7DB9, 0x278D, + 0x7DBA, 0x7DBA, 0x1065, 0x7DBB, 0x7DBB, 0x105B, 0x7DBC, 0x7DBC, 0x278F, + 0x7DBD, 0x7DBE, 0x105E, 0x7DBF, 0x7DBF, 0x1067, 0x7DC0, 0x7DC0, 0x2784, + 0x7DC1, 0x7DC1, 0x2783, 0x7DC2, 0x7DC2, 0x2780, 0x7DC4, 0x7DC4, 0x2788, + 0x7DC5, 0x7DC5, 0x2785, 0x7DC6, 0x7DC6, 0x2789, 0x7DC7, 0x7DC7, 0x106C, + 0x7DC9, 0x7DC9, 0x2795, 0x7DCA, 0x7DCA, 0x1061, 0x7DCB, 0x7DCC, 0x278A, + 0x7DCD, 0x7DCD, 0x456E, 0x7DCE, 0x7DCE, 0x2787, 0x7DCF, 0x7DCF, 0x4735, + 0x7DD0, 0x7DD0, 0x4737, 0x7DD2, 0x7DD2, 0x106B, 0x7DD3, 0x7DD3, 0x3B4E, + 0x7DD4, 0x7DD4, 0x4736, 0x7DD6, 0x7DD6, 0x376F, 0x7DD7, 0x7DD7, 0x29B8, + 0x7DD8, 0x7DD8, 0x11D9, 0x7DD9, 0x7DD9, 0x11E2, 0x7DDA, 0x7DDA, 0x11DE, + 0x7DDB, 0x7DDB, 0x29B5, 0x7DDC, 0x7DDC, 0x3B4C, 0x7DDD, 0x7DDD, 0x11DB, + 0x7DDE, 0x7DDE, 0x11DF, 0x7DDF, 0x7DDF, 0x29C1, 0x7DE0, 0x7DE0, 0x11D5, + 0x7DE1, 0x7DE1, 0x29B9, 0x7DE3, 0x7DE3, 0x11DD, 0x7DE4, 0x7DE4, 0x3772, + 0x7DE5, 0x7DE5, 0x3776, 0x7DE6, 0x7DE6, 0x29BC, 0x7DE7, 0x7DE7, 0x29B7, + 0x7DE8, 0x7DE8, 0x11DC, 0x7DE9, 0x7DE9, 0x11E0, 0x7DEA, 0x7DEA, 0x29B6, + 0x7DEC, 0x7DEC, 0x11DA, 0x7DEE, 0x7DEE, 0x29C0, 0x7DEF, 0x7DEF, 0x11D7, + 0x7DF0, 0x7DF0, 0x29BF, 0x7DF1, 0x7DF1, 0x29BE, 0x7DF2, 0x7DF2, 0x11E3, + 0x7DF3, 0x7DF3, 0x28C8, 0x7DF4, 0x7DF4, 0x11D6, 0x7DF5, 0x7DF5, 0x3774, + 0x7DF6, 0x7DF6, 0x29BD, 0x7DF7, 0x7DF7, 0x29B4, 0x7DF9, 0x7DF9, 0x11E4, + 0x7DFA, 0x7DFA, 0x29BB, 0x7DFB, 0x7DFB, 0x11D8, 0x7DFD, 0x7DFD, 0x4738, + 0x7DFE, 0x7DFE, 0x3CCF, 0x7E03, 0x7E03, 0x29BA, 0x7E07, 0x7E07, 0x3B4D, + 0x7E08, 0x7E08, 0x1322, 0x7E09, 0x7E09, 0x1327, 0x7E0A, 0x7E0A, 0x1320, + 0x7E0B, 0x7E0B, 0x2C1F, 0x7E0C, 0x7E0C, 0x2C16, 0x7E0D, 0x7E0D, 0x2C22, + 0x7E0E, 0x7E0E, 0x2C1A, 0x7E0F, 0x7E0F, 0x2C20, 0x7E10, 0x7E10, 0x1328, + 0x7E11, 0x7E11, 0x1321, 0x7E12, 0x7E12, 0x2C13, 0x7E13, 0x7E13, 0x2C19, + 0x7E14, 0x7E14, 0x2C23, 0x7E15, 0x7E15, 0x2C1C, 0x7E16, 0x7E16, 0x2C21, + 0x7E17, 0x7E17, 0x2C15, 0x7E1A, 0x7E1A, 0x2C1D, 0x7E1B, 0x7E1B, 0x1323, + 0x7E1C, 0x7E1C, 0x2C1B, 0x7E1D, 0x7E1D, 0x1326, 0x7E1E, 0x7E1E, 0x1325, + 0x7E1F, 0x7E20, 0x2C17, 0x7E21, 0x7E21, 0x2C14, 0x7E22, 0x7E22, 0x2C1E, + 0x7E23, 0x7E23, 0x1324, 0x7E24, 0x7E24, 0x2C25, 0x7E25, 0x7E25, 0x2C24, + 0x7E27, 0x7E27, 0x377F, 0x7E29, 0x7E29, 0x2DF8, 0x7E2A, 0x7E2A, 0x2DF4, + 0x7E2B, 0x7E2B, 0x143B, 0x7E2D, 0x7E2D, 0x2DEE, 0x7E2E, 0x7E2E, 0x1435, + 0x7E2F, 0x7E2F, 0x1445, 0x7E30, 0x7E30, 0x2DFA, 0x7E31, 0x7E31, 0x143D, + 0x7E32, 0x7E32, 0x1439, 0x7E33, 0x7E33, 0x2DF1, 0x7E34, 0x7E34, 0x1440, + 0x7E35, 0x7E35, 0x1443, 0x7E36, 0x7E36, 0x2DFC, 0x7E37, 0x7E37, 0x1438, + 0x7E38, 0x7E38, 0x2DF3, 0x7E39, 0x7E39, 0x1441, 0x7E3A, 0x7E3A, 0x2DFE, + 0x7E3B, 0x7E3B, 0x2DFB, 0x7E3C, 0x7E3C, 0x2DEF, 0x7E3D, 0x7E3D, 0x143C, + 0x7E3E, 0x7E3E, 0x1436, 0x7E3F, 0x7E3F, 0x1444, 0x7E40, 0x7E40, 0x2DF6, + 0x7E41, 0x7E41, 0x143F, 0x7E42, 0x7E42, 0x2DF0, 0x7E43, 0x7E43, 0x143A, + 0x7E44, 0x7E44, 0x2DFD, 0x7E45, 0x7E45, 0x143E, 0x7E46, 0x7E46, 0x1437, + 0x7E47, 0x7E47, 0x2DF7, 0x7E48, 0x7E48, 0x1442, 0x7E49, 0x7E49, 0x2DF5, + 0x7E4C, 0x7E4C, 0x2DF9, 0x7E50, 0x7E50, 0x2F83, 0x7E51, 0x7E51, 0x2F89, + 0x7E52, 0x7E52, 0x1511, 0x7E53, 0x7E53, 0x2F8C, 0x7E54, 0x7E55, 0x150C, + 0x7E56, 0x7E56, 0x2F84, 0x7E57, 0x7E57, 0x2F8B, 0x7E58, 0x7E58, 0x2F86, + 0x7E59, 0x7E59, 0x1512, 0x7E5A, 0x7E5A, 0x150F, 0x7E5C, 0x7E5C, 0x2F82, + 0x7E5E, 0x7E5E, 0x150E, 0x7E5F, 0x7E5F, 0x2F88, 0x7E60, 0x7E60, 0x2F8A, + 0x7E61, 0x7E61, 0x1510, 0x7E62, 0x7E62, 0x2F87, 0x7E63, 0x7E63, 0x2F85, + 0x7E65, 0x7E65, 0x46D2, 0x7E67, 0x7E67, 0x3766, 0x7E68, 0x7E68, 0x30E3, + 0x7E69, 0x7E6A, 0x15AC, 0x7E6B, 0x7E6B, 0x15A9, 0x7E6D, 0x7E6D, 0x15AA, + 0x7E6E, 0x7E6E, 0x377B, 0x7E6F, 0x7E6F, 0x30DF, 0x7E70, 0x7E70, 0x30DD, + 0x7E72, 0x7E72, 0x30E1, 0x7E73, 0x7E73, 0x15AE, 0x7E74, 0x7E74, 0x30E2, + 0x7E75, 0x7E75, 0x30DB, 0x7E76, 0x7E76, 0x30DA, 0x7E77, 0x7E77, 0x30DE, + 0x7E78, 0x7E78, 0x30DC, 0x7E79, 0x7E79, 0x15AB, 0x7E7A, 0x7E7A, 0x30E0, + 0x7E7B, 0x7E7B, 0x3214, 0x7E7C, 0x7E7C, 0x1631, 0x7E7D, 0x7E7D, 0x1630, + 0x7E7E, 0x7E7E, 0x3215, 0x7E7F, 0x7E7F, 0x3E51, 0x7E80, 0x7E80, 0x3217, + 0x7E81, 0x7E81, 0x3216, 0x7E82, 0x7E82, 0x1632, 0x7E86, 0x7E86, 0x32F0, + 0x7E87, 0x7E88, 0x32ED, 0x7E8A, 0x7E8A, 0x32EC, 0x7E8B, 0x7E8B, 0x32EF, + 0x7E8C, 0x7E8C, 0x1683, 0x7E8D, 0x7E8D, 0x32F1, 0x7E8E, 0x7E8E, 0x3EC9, + 0x7E8F, 0x7E8F, 0x1682, 0x7E91, 0x7E91, 0x33A2, 0x7E92, 0x7E92, 0x469E, + 0x7E93, 0x7E93, 0x1703, 0x7E94, 0x7E94, 0x1705, 0x7E95, 0x7E95, 0x342C, + 0x7E96, 0x7E96, 0x1704, 0x7E97, 0x7E97, 0x3494, 0x7E98, 0x7E98, 0x34DA, + 0x7E99, 0x7E99, 0x34DC, 0x7E9A, 0x7E9A, 0x34D9, 0x7E9B, 0x7E9B, 0x34DB, + 0x7E9C, 0x7E9C, 0x1759, 0x7E9F, 0x7E9F, 0x48BB, 0x7EA4, 0x7EA4, 0x455B, + 0x7EAC, 0x7EAC, 0x455C, 0x7EBA, 0x7EBA, 0x455D, 0x7EC7, 0x7EC7, 0x455E, + 0x7ECF, 0x7ECF, 0x455F, 0x7EDF, 0x7EDF, 0x4560, 0x7F06, 0x7F06, 0x4561, + 0x7F36, 0x7F36, 0x03F9, 0x7F37, 0x7F37, 0x4562, 0x7F38, 0x7F38, 0x07D4, + 0x7F39, 0x7F39, 0x1D1F, 0x7F3A, 0x7F3A, 0x0979, 0x7F3D, 0x7F3D, 0x0B61, + 0x7F3E, 0x7F3F, 0x2271, 0x7F40, 0x7F41, 0x3780, 0x7F43, 0x7F43, 0x2C26, + 0x7F44, 0x7F44, 0x1446, 0x7F45, 0x7F45, 0x2DFF, 0x7F47, 0x7F47, 0x3782, + 0x7F48, 0x7F48, 0x1513, 0x7F49, 0x7F49, 0x3E69, 0x7F4A, 0x7F4A, 0x30E5, + 0x7F4B, 0x7F4B, 0x30E4, 0x7F4C, 0x7F4C, 0x1633, 0x7F4D, 0x7F4D, 0x32F2, + 0x7F4E, 0x7F4E, 0x3B4F, 0x7F4F, 0x7F4F, 0x33A3, 0x7F50, 0x7F50, 0x1726, + 0x7F51, 0x7F51, 0x1812, 0x7F52, 0x7F52, 0x44F6, 0x7F53, 0x7F53, 0x44F9, + 0x7F54, 0x7F54, 0x0668, 0x7F55, 0x7F55, 0x04FC, 0x7F58, 0x7F58, 0x1BC3, + 0x7F5B, 0x7F5B, 0x1DAD, 0x7F5C, 0x7F5C, 0x1DA8, 0x7F5D, 0x7F5D, 0x1DAC, + 0x7F5E, 0x7F5E, 0x1DAA, 0x7F5F, 0x7F5F, 0x097A, 0x7F60, 0x7F60, 0x1DAB, + 0x7F61, 0x7F61, 0x1DA9, 0x7F63, 0x7F63, 0x1FF3, 0x7F65, 0x7F66, 0x2273, + 0x7F67, 0x7F68, 0x2511, 0x7F69, 0x7F6A, 0x0EC5, 0x7F6B, 0x7F6B, 0x2510, + 0x7F6C, 0x7F6C, 0x2513, 0x7F6D, 0x7F6D, 0x250F, 0x7F6E, 0x7F6E, 0x0EC4, + 0x7F70, 0x7F70, 0x106E, 0x7F71, 0x7F71, 0x4007, 0x7F72, 0x7F72, 0x0EC7, + 0x7F73, 0x7F73, 0x2796, 0x7F75, 0x7F75, 0x11E5, 0x7F76, 0x7F76, 0x29C2, + 0x7F77, 0x7F77, 0x11E6, 0x7F78, 0x7F78, 0x3F7B, 0x7F79, 0x7F79, 0x1329, + 0x7F7A, 0x7F7A, 0x2C29, 0x7F7B, 0x7F7C, 0x2C27, 0x7F7D, 0x7F7D, 0x2E02, + 0x7F7E, 0x7F7E, 0x2E01, 0x7F7F, 0x7F7F, 0x2E00, 0x7F83, 0x7F83, 0x30E6, + 0x7F85, 0x7F85, 0x15AF, 0x7F86, 0x7F86, 0x30E7, 0x7F87, 0x7F87, 0x33A4, + 0x7F88, 0x7F88, 0x1727, 0x7F89, 0x7F89, 0x3495, 0x7F8A, 0x7F8A, 0x03FA, + 0x7F8B, 0x7F8B, 0x066A, 0x7F8C, 0x7F8C, 0x0669, 0x7F8D, 0x7F8D, 0x1BC5, + 0x7F8E, 0x7F8E, 0x07D5, 0x7F8F, 0x7F8F, 0x421C, 0x7F91, 0x7F91, 0x1BC4, + 0x7F92, 0x7F92, 0x1DAF, 0x7F93, 0x7F93, 0x43DB, 0x7F94, 0x7F94, 0x097B, + 0x7F95, 0x7F95, 0x1FF4, 0x7F96, 0x7F96, 0x1DAE, 0x7F97, 0x7F97, 0x3786, + 0x7F9A, 0x7F9A, 0x0B63, 0x7F9B, 0x7F9B, 0x1FF7, 0x7F9C, 0x7F9D, 0x1FF5, + 0x7F9E, 0x7F9E, 0x0B62, 0x7FA0, 0x7FA1, 0x2276, 0x7FA2, 0x7FA2, 0x2275, + 0x7FA3, 0x7FA3, 0x3788, 0x7FA4, 0x7FA4, 0x0ECA, 0x7FA5, 0x7FA5, 0x2515, + 0x7FA6, 0x7FA6, 0x2514, 0x7FA7, 0x7FA7, 0x2516, 0x7FA8, 0x7FA8, 0x0EC9, + 0x7FA9, 0x7FA9, 0x0EC8, 0x7FAC, 0x7FAC, 0x29C3, 0x7FAD, 0x7FAD, 0x29C5, + 0x7FAE, 0x7FAE, 0x43DC, 0x7FAF, 0x7FAF, 0x11E7, 0x7FB0, 0x7FB0, 0x29C4, + 0x7FB1, 0x7FB1, 0x2C2A, 0x7FB2, 0x7FB2, 0x132A, 0x7FB3, 0x7FB3, 0x2F8E, + 0x7FB4, 0x7FB4, 0x4739, 0x7FB5, 0x7FB5, 0x2F8D, 0x7FB6, 0x7FB6, 0x15B0, + 0x7FB7, 0x7FB7, 0x30E8, 0x7FB8, 0x7FB8, 0x15B2, 0x7FB9, 0x7FB9, 0x15B1, + 0x7FBA, 0x7FBA, 0x3218, 0x7FBB, 0x7FBB, 0x32F3, 0x7FBC, 0x7FBC, 0x1684, + 0x7FBD, 0x7FBD, 0x03FB, 0x7FBE, 0x7FBE, 0x1BC6, 0x7FBF, 0x7FBF, 0x07D6, + 0x7FC0, 0x7FC0, 0x1DB2, 0x7FC1, 0x7FC1, 0x097D, 0x7FC2, 0x7FC2, 0x1DB1, + 0x7FC3, 0x7FC3, 0x1DB0, 0x7FC5, 0x7FC5, 0x097C, 0x7FC7, 0x7FC7, 0x1FFD, + 0x7FC9, 0x7FC9, 0x1FFF, 0x7FCA, 0x7FCB, 0x1FF8, 0x7FCC, 0x7FCC, 0x0B64, + 0x7FCD, 0x7FCD, 0x1FFA, 0x7FCE, 0x7FCE, 0x0B65, 0x7FCF, 0x7FCF, 0x1FFE, + 0x7FD0, 0x7FD1, 0x1FFB, 0x7FD2, 0x7FD2, 0x0B66, 0x7FD4, 0x7FD5, 0x0D1C, + 0x7FD7, 0x7FD7, 0x2278, 0x7FDB, 0x7FDC, 0x2517, 0x7FDD, 0x7FDD, 0x3B5E, + 0x7FDE, 0x7FDE, 0x279A, 0x7FDF, 0x7FDF, 0x1071, 0x7FE0, 0x7FE1, 0x106F, + 0x7FE2, 0x7FE3, 0x2797, 0x7FE5, 0x7FE5, 0x2799, 0x7FE6, 0x7FE6, 0x29CA, + 0x7FE7, 0x7FE7, 0x46E9, 0x7FE8, 0x7FE8, 0x29CB, 0x7FE9, 0x7FE9, 0x11E8, + 0x7FEA, 0x7FEA, 0x29C8, 0x7FEB, 0x7FEB, 0x29C7, 0x7FEC, 0x7FEC, 0x29C9, + 0x7FED, 0x7FED, 0x29C6, 0x7FEE, 0x7FEE, 0x132D, 0x7FEF, 0x7FEF, 0x2C2B, + 0x7FF0, 0x7FF1, 0x132B, 0x7FF2, 0x7FF2, 0x2E04, 0x7FF3, 0x7FF3, 0x1447, + 0x7FF4, 0x7FF4, 0x2E03, 0x7FF5, 0x7FF5, 0x2EFF, 0x7FF7, 0x7FF8, 0x2F8F, + 0x7FF9, 0x7FF9, 0x1514, 0x7FFA, 0x7FFA, 0x378E, 0x7FFB, 0x7FFB, 0x1515, + 0x7FFC, 0x7FFC, 0x1448, 0x7FFD, 0x7FFE, 0x30E9, 0x7FFF, 0x7FFF, 0x3219, + 0x8000, 0x8000, 0x1634, 0x8001, 0x8001, 0x03FC, 0x8002, 0x8002, 0x44FD, + 0x8003, 0x8003, 0x03FD, 0x8004, 0x8004, 0x097F, 0x8005, 0x8005, 0x066B, + 0x8006, 0x8006, 0x097E, 0x8007, 0x8007, 0x1BC7, 0x8008, 0x8008, 0x3791, + 0x800B, 0x800B, 0x0D1E, 0x800C, 0x800C, 0x03FE, 0x800D, 0x800D, 0x07D8, + 0x800E, 0x800F, 0x1BC8, 0x8010, 0x8010, 0x07D7, 0x8011, 0x8011, 0x07D9, + 0x8012, 0x8012, 0x03FF, 0x8014, 0x8014, 0x1BCA, 0x8015, 0x8015, 0x0981, + 0x8016, 0x8016, 0x1DB3, 0x8017, 0x8017, 0x0983, 0x8018, 0x8018, 0x0980, + 0x8019, 0x8019, 0x0982, 0x801B, 0x801B, 0x2002, 0x801C, 0x801C, 0x0B67, + 0x801D, 0x801D, 0x3792, 0x801E, 0x801E, 0x2001, 0x801F, 0x801F, 0x2000, + 0x8020, 0x8020, 0x473C, 0x8021, 0x8021, 0x2519, 0x8024, 0x8024, 0x279B, + 0x8025, 0x8025, 0x473D, 0x8026, 0x8026, 0x11E9, 0x8028, 0x8028, 0x132E, + 0x8029, 0x8029, 0x2C2D, 0x802A, 0x802A, 0x2C2C, 0x802C, 0x802C, 0x2E05, + 0x802E, 0x802E, 0x473E, 0x802F, 0x802F, 0x3794, 0x8030, 0x8030, 0x32F4, + 0x8031, 0x8031, 0x473F, 0x8033, 0x8033, 0x0400, 0x8034, 0x8034, 0x18D8, + 0x8035, 0x8035, 0x1A27, 0x8036, 0x8036, 0x07DA, 0x8037, 0x8037, 0x1BCB, + 0x8039, 0x8039, 0x1DB5, 0x803B, 0x803C, 0x3797, 0x803D, 0x803D, 0x0984, + 0x803E, 0x803E, 0x1DB4, 0x803F, 0x803F, 0x0985, 0x8043, 0x8043, 0x2004, + 0x8046, 0x8046, 0x0B69, 0x8047, 0x8047, 0x2003, 0x8048, 0x8048, 0x2005, + 0x804A, 0x804A, 0x0B68, 0x804F, 0x8050, 0x227A, 0x8051, 0x8051, 0x2279, + 0x8052, 0x8052, 0x0D1F, 0x8054, 0x8054, 0x4740, 0x8056, 0x8056, 0x0ECB, + 0x8058, 0x8058, 0x0ECC, 0x805A, 0x805A, 0x1073, 0x805B, 0x805B, 0x3FE5, + 0x805C, 0x805C, 0x279D, 0x805D, 0x805D, 0x279C, 0x805E, 0x805E, 0x1072, + 0x8061, 0x8061, 0x3799, 0x8062, 0x8062, 0x3FE3, 0x8063, 0x8063, 0x3FDC, + 0x8064, 0x8064, 0x29CC, 0x8066, 0x8066, 0x3FDB, 0x8067, 0x8067, 0x29CD, + 0x806C, 0x806C, 0x2C2E, 0x806F, 0x806F, 0x144C, 0x8070, 0x8070, 0x144B, + 0x8071, 0x8072, 0x1449, 0x8073, 0x8073, 0x144D, 0x8075, 0x8075, 0x2F91, + 0x8076, 0x8076, 0x1517, 0x8077, 0x8077, 0x1516, 0x8078, 0x8078, 0x30EB, + 0x8079, 0x8079, 0x321A, 0x807D, 0x807D, 0x16D3, 0x807E, 0x807E, 0x16D2, + 0x807F, 0x807F, 0x0401, 0x8080, 0x8080, 0x44FE, 0x8082, 0x8082, 0x1CEC, + 0x8084, 0x8084, 0x0ECE, 0x8085, 0x8085, 0x0D20, 0x8086, 0x8086, 0x0ECD, + 0x8087, 0x8087, 0x1074, 0x8089, 0x8089, 0x0402, 0x808A, 0x808A, 0x17B3, + 0x808B, 0x808C, 0x0403, 0x808F, 0x808F, 0x1A28, 0x8090, 0x8090, 0x18DB, + 0x8092, 0x8092, 0x18DC, 0x8093, 0x8093, 0x04FE, 0x8095, 0x8095, 0x18D9, + 0x8096, 0x8096, 0x04FD, 0x8098, 0x8098, 0x0500, 0x8099, 0x8099, 0x18DA, + 0x809A, 0x809A, 0x0502, 0x809B, 0x809B, 0x0501, 0x809C, 0x809C, 0x18DD, + 0x809D, 0x809D, 0x04FF, 0x809F, 0x809F, 0x4576, 0x80A1, 0x80A1, 0x0670, + 0x80A2, 0x80A2, 0x066E, 0x80A3, 0x80A3, 0x1A2A, 0x80A5, 0x80A5, 0x066D, + 0x80A7, 0x80A7, 0x37A0, 0x80A9, 0x80A9, 0x0672, 0x80AA, 0x80AA, 0x0674, + 0x80AB, 0x80AB, 0x0671, 0x80AD, 0x80AD, 0x1A2D, 0x80AE, 0x80AE, 0x1A29, + 0x80AF, 0x80AF, 0x0675, 0x80B1, 0x80B1, 0x066F, 0x80B2, 0x80B2, 0x0503, + 0x80B4, 0x80B4, 0x0673, 0x80B5, 0x80B5, 0x1A2C, 0x80B6, 0x80B6, 0x3EAE, + 0x80B7, 0x80B7, 0x4743, 0x80B8, 0x80B8, 0x1A2B, 0x80BA, 0x80BA, 0x066C, + 0x80BC, 0x80BC, 0x4572, 0x80BD, 0x80BD, 0x3E7B, 0x80C2, 0x80C2, 0x1BD1, + 0x80C3, 0x80C4, 0x07DE, 0x80C5, 0x80C5, 0x1BD3, 0x80C6, 0x80C6, 0x3B74, + 0x80C7, 0x80C7, 0x1BCD, 0x80C8, 0x80C8, 0x1BD0, 0x80C9, 0x80C9, 0x1BD9, + 0x80CA, 0x80CA, 0x1BD7, 0x80CC, 0x80CC, 0x07E0, 0x80CD, 0x80CD, 0x1BDD, + 0x80CE, 0x80CE, 0x07E3, 0x80CF, 0x80CF, 0x1BDA, 0x80D0, 0x80D0, 0x1BD2, + 0x80D1, 0x80D1, 0x1BCF, 0x80D4, 0x80D4, 0x227D, 0x80D5, 0x80D5, 0x1BD8, + 0x80D6, 0x80D6, 0x07DB, 0x80D7, 0x80D7, 0x1BDB, 0x80D8, 0x80D8, 0x1BCC, + 0x80D9, 0x80D9, 0x1BD5, 0x80DA, 0x80DA, 0x07DD, 0x80DB, 0x80DB, 0x07E2, + 0x80DC, 0x80DC, 0x1BD6, 0x80DD, 0x80DD, 0x07E6, 0x80DE, 0x80DE, 0x07E4, + 0x80E0, 0x80E0, 0x1BCE, 0x80E1, 0x80E1, 0x07E1, 0x80E3, 0x80E3, 0x1BD4, + 0x80E4, 0x80E4, 0x07E5, 0x80E5, 0x80E5, 0x07DC, 0x80E6, 0x80E6, 0x1BDC, + 0x80E9, 0x80E9, 0x4744, 0x80EC, 0x80EC, 0x45E9, 0x80ED, 0x80ED, 0x098A, + 0x80EF, 0x80EF, 0x0993, 0x80F0, 0x80F0, 0x0988, 0x80F1, 0x80F1, 0x0986, + 0x80F2, 0x80F2, 0x1DB7, 0x80F3, 0x80F3, 0x098E, 0x80F4, 0x80F4, 0x098B, + 0x80F5, 0x80F5, 0x1DB9, 0x80F6, 0x80F6, 0x4574, 0x80F8, 0x80F8, 0x098D, + 0x80F9, 0x80F9, 0x1DB8, 0x80FA, 0x80FA, 0x1DB6, 0x80FB, 0x80FB, 0x1DBB, + 0x80FC, 0x80FC, 0x0992, 0x80FD, 0x80FD, 0x0990, 0x80FE, 0x80FE, 0x227C, + 0x8100, 0x8100, 0x1DBC, 0x8101, 0x8101, 0x1DBA, 0x8102, 0x8102, 0x0987, + 0x8103, 0x8103, 0x3FE7, 0x8105, 0x8105, 0x0989, 0x8106, 0x8106, 0x098C, + 0x8107, 0x8107, 0x37A2, 0x8108, 0x8108, 0x098F, 0x8109, 0x8109, 0x3B75, + 0x810A, 0x810A, 0x0991, 0x810C, 0x810C, 0x4746, 0x810E, 0x810E, 0x4747, + 0x8112, 0x8112, 0x4748, 0x8114, 0x8114, 0x4749, 0x8115, 0x8115, 0x200F, + 0x8116, 0x8116, 0x0B6B, 0x8117, 0x8117, 0x3E6D, 0x8118, 0x8118, 0x2006, + 0x8119, 0x8119, 0x2008, 0x811A, 0x811A, 0x37A3, 0x811B, 0x811B, 0x2009, + 0x811D, 0x811D, 0x2011, 0x811E, 0x811E, 0x200D, 0x811F, 0x811F, 0x200B, + 0x8121, 0x8121, 0x200E, 0x8122, 0x8122, 0x2012, 0x8123, 0x8123, 0x0B6C, + 0x8124, 0x8124, 0x0B70, 0x8125, 0x8125, 0x2007, 0x8127, 0x8127, 0x2010, + 0x8129, 0x8129, 0x0B6E, 0x812A, 0x812A, 0x3A39, 0x812B, 0x812B, 0x0B6D, + 0x812C, 0x812C, 0x200C, 0x812D, 0x812D, 0x200A, 0x812F, 0x812F, 0x0B6A, + 0x8130, 0x8130, 0x0B6F, 0x8132, 0x8132, 0x3E79, 0x8134, 0x8134, 0x45EC, + 0x8137, 0x8137, 0x3B72, 0x8139, 0x8139, 0x0D26, 0x813A, 0x813A, 0x2285, + 0x813D, 0x813D, 0x2283, 0x813E, 0x813E, 0x0D28, 0x8142, 0x8142, 0x3B76, + 0x8143, 0x8143, 0x227E, 0x8144, 0x8144, 0x2527, 0x8146, 0x8146, 0x0D27, + 0x8147, 0x8147, 0x2282, 0x8148, 0x8148, 0x3E76, 0x814A, 0x814A, 0x227F, + 0x814B, 0x814B, 0x0D23, 0x814C, 0x814C, 0x0D29, 0x814D, 0x814D, 0x2284, + 0x814E, 0x814E, 0x0D25, 0x814F, 0x814F, 0x2281, 0x8150, 0x8150, 0x1075, + 0x8151, 0x8151, 0x0D24, 0x8152, 0x8152, 0x2280, 0x8153, 0x8153, 0x0D2A, + 0x8154, 0x8154, 0x0D22, 0x8155, 0x8155, 0x0D21, 0x8156, 0x8156, 0x474C, + 0x8159, 0x815A, 0x474D, 0x815B, 0x815B, 0x251F, 0x815C, 0x815C, 0x251D, + 0x815E, 0x815E, 0x2523, 0x8160, 0x8160, 0x251B, 0x8161, 0x8161, 0x2528, + 0x8162, 0x8162, 0x2520, 0x8164, 0x8164, 0x251A, 0x8165, 0x8165, 0x0ED2, + 0x8166, 0x8166, 0x0ED8, 0x8167, 0x8167, 0x2525, 0x8169, 0x8169, 0x251E, + 0x816B, 0x816B, 0x0ED5, 0x816D, 0x816D, 0x43C4, 0x816E, 0x816E, 0x0ED3, + 0x816F, 0x816F, 0x2526, 0x8170, 0x8170, 0x0ED0, 0x8171, 0x8171, 0x0ECF, + 0x8172, 0x8172, 0x2521, 0x8173, 0x8173, 0x0ED4, 0x8174, 0x8174, 0x0D2B, + 0x8176, 0x8176, 0x2524, 0x8177, 0x8177, 0x251C, 0x8178, 0x8178, 0x0ED1, + 0x8179, 0x817A, 0x0ED6, 0x817C, 0x817C, 0x4750, 0x817F, 0x817F, 0x107A, + 0x8180, 0x8180, 0x1076, 0x8182, 0x8182, 0x107B, 0x8183, 0x8183, 0x27A0, + 0x8184, 0x8184, 0x43C5, 0x8186, 0x8186, 0x279F, 0x8187, 0x8187, 0x27A1, + 0x8188, 0x8188, 0x1078, 0x8189, 0x8189, 0x279E, 0x818A, 0x818A, 0x1079, + 0x818B, 0x818B, 0x27A4, 0x818C, 0x818C, 0x27A3, 0x818D, 0x818D, 0x27A2, + 0x818F, 0x818F, 0x1077, 0x8193, 0x8193, 0x43C6, 0x8195, 0x8195, 0x29D1, + 0x8197, 0x8197, 0x29D4, 0x8198, 0x8198, 0x11EF, 0x8199, 0x8199, 0x29D3, + 0x819A, 0x819A, 0x11EE, 0x819B, 0x819D, 0x11EA, 0x819E, 0x819E, 0x29D0, + 0x819F, 0x819F, 0x29CF, 0x81A0, 0x81A0, 0x11ED, 0x81A2, 0x81A2, 0x29D2, + 0x81A3, 0x81A3, 0x29CE, 0x81A5, 0x81A5, 0x4753, 0x81A6, 0x81A6, 0x2C30, + 0x81A7, 0x81A7, 0x2C3A, 0x81A8, 0x81A8, 0x1331, 0x81A9, 0x81A9, 0x1330, + 0x81AA, 0x81AA, 0x4364, 0x81AB, 0x81AB, 0x2C34, 0x81AC, 0x81AC, 0x2C36, + 0x81AE, 0x81AE, 0x2C31, 0x81B0, 0x81B0, 0x2C35, 0x81B1, 0x81B1, 0x2C2F, + 0x81B2, 0x81B2, 0x2C38, 0x81B3, 0x81B3, 0x132F, 0x81B4, 0x81B4, 0x2C37, + 0x81B5, 0x81B5, 0x2C33, 0x81B6, 0x81B6, 0x3EB2, 0x81B7, 0x81B7, 0x2C39, + 0x81B9, 0x81B9, 0x2C32, 0x81BA, 0x81BA, 0x1450, 0x81BB, 0x81BB, 0x2E06, + 0x81BC, 0x81BC, 0x2E0C, 0x81BD, 0x81BD, 0x1454, 0x81BE, 0x81BE, 0x1456, + 0x81BF, 0x81BF, 0x1453, 0x81C0, 0x81C0, 0x1452, 0x81C1, 0x81C1, 0x4755, + 0x81C2, 0x81C2, 0x1451, 0x81C3, 0x81C3, 0x144F, 0x81C4, 0x81C4, 0x2E07, + 0x81C5, 0x81C5, 0x2E0A, 0x81C6, 0x81C6, 0x144E, 0x81C7, 0x81C7, 0x2E0B, + 0x81C8, 0x81C8, 0x3FEE, 0x81C9, 0x81C9, 0x1455, 0x81CA, 0x81CA, 0x2E09, + 0x81CC, 0x81CC, 0x2E08, 0x81CD, 0x81CD, 0x1518, 0x81CF, 0x81CF, 0x1519, + 0x81D0, 0x81D0, 0x2F94, 0x81D1, 0x81D2, 0x2F92, 0x81D5, 0x81D5, 0x30ED, + 0x81D7, 0x81D7, 0x30EC, 0x81D8, 0x81D8, 0x15B3, 0x81D9, 0x81D9, 0x321C, + 0x81DA, 0x81DA, 0x1635, 0x81DB, 0x81DB, 0x321B, 0x81DD, 0x81DD, 0x32F5, + 0x81DE, 0x81DE, 0x33A5, 0x81DF, 0x81DF, 0x16D4, 0x81E0, 0x81E1, 0x34DD, + 0x81E2, 0x81E2, 0x1706, 0x81E3, 0x81E3, 0x0405, 0x81E4, 0x81E4, 0x4756, + 0x81E5, 0x81E5, 0x0676, 0x81E6, 0x81E6, 0x2286, 0x81E7, 0x81E7, 0x107C, + 0x81E8, 0x81E8, 0x1457, 0x81E9, 0x81E9, 0x2E0D, 0x81EA, 0x81EA, 0x0406, + 0x81EC, 0x81EC, 0x0995, 0x81ED, 0x81ED, 0x0994, 0x81EE, 0x81EE, 0x2287, + 0x81EF, 0x81EF, 0x42D1, 0x81F2, 0x81F2, 0x2C3B, 0x81F3, 0x81F3, 0x0407, + 0x81F4, 0x81F4, 0x07E7, 0x81F6, 0x81F6, 0x3D61, 0x81F7, 0x81F9, 0x2288, + 0x81FA, 0x81FA, 0x107D, 0x81FB, 0x81FB, 0x1332, 0x81FC, 0x81FC, 0x0408, + 0x81FE, 0x81FE, 0x0677, 0x81FF, 0x81FF, 0x1BDE, 0x8200, 0x8200, 0x0996, + 0x8201, 0x8201, 0x1DBD, 0x8202, 0x8202, 0x0B71, 0x8204, 0x8204, 0x228B, + 0x8205, 0x8205, 0x0ED9, 0x8207, 0x8207, 0x107E, 0x8208, 0x8208, 0x1333, + 0x8209, 0x8209, 0x1458, 0x820A, 0x820A, 0x151A, 0x820B, 0x820B, 0x30EE, + 0x820C, 0x820C, 0x0409, 0x820D, 0x820D, 0x0678, 0x8210, 0x8210, 0x0997, + 0x8211, 0x8211, 0x2013, 0x8212, 0x8212, 0x0D2C, 0x8214, 0x8214, 0x107F, + 0x8215, 0x8215, 0x27A5, 0x8216, 0x8216, 0x29D5, 0x8218, 0x8218, 0x37AA, + 0x821A, 0x821A, 0x3FE1, 0x821B, 0x821B, 0x040A, 0x821C, 0x821C, 0x0D2D, + 0x821D, 0x821D, 0x2529, 0x821E, 0x821E, 0x1080, 0x821F, 0x821F, 0x040B, + 0x8220, 0x8220, 0x1A2E, 0x8221, 0x8221, 0x1BDF, 0x8222, 0x8222, 0x07E8, + 0x8225, 0x8225, 0x1DBF, 0x8226, 0x8226, 0x420D, 0x8228, 0x8228, 0x099A, + 0x8229, 0x8229, 0x37B0, 0x822A, 0x822B, 0x0998, 0x822C, 0x822C, 0x099B, + 0x822D, 0x822D, 0x3ED0, 0x822F, 0x822F, 0x1DBE, 0x8232, 0x8232, 0x2018, + 0x8233, 0x8233, 0x2015, 0x8234, 0x8234, 0x2017, 0x8235, 0x8235, 0x0B72, + 0x8236, 0x8236, 0x0B74, 0x8237, 0x8237, 0x0B73, 0x8238, 0x8238, 0x2014, + 0x8239, 0x8239, 0x0B75, 0x823A, 0x823A, 0x2016, 0x823C, 0x823D, 0x228C, + 0x823E, 0x823E, 0x4582, 0x823F, 0x823F, 0x228E, 0x8240, 0x8240, 0x252C, + 0x8242, 0x8242, 0x252D, 0x8244, 0x8244, 0x252B, 0x8245, 0x8245, 0x252E, + 0x8247, 0x8247, 0x0EDA, 0x8249, 0x8249, 0x252A, 0x824B, 0x824B, 0x1081, + 0x824E, 0x824E, 0x29DA, 0x824F, 0x824F, 0x29D6, 0x8250, 0x8250, 0x29D9, + 0x8251, 0x8251, 0x29DB, 0x8252, 0x8252, 0x29D8, 0x8253, 0x8253, 0x29D7, + 0x8254, 0x8254, 0x4757, 0x8255, 0x8257, 0x2C3C, 0x8258, 0x8259, 0x1334, + 0x825A, 0x825A, 0x2E0F, 0x825B, 0x825B, 0x2E0E, 0x825C, 0x825C, 0x2E10, + 0x825E, 0x825E, 0x2F96, 0x825F, 0x825F, 0x2F95, 0x8261, 0x8261, 0x30F0, + 0x8262, 0x8262, 0x3B7A, 0x8263, 0x8263, 0x30F1, 0x8264, 0x8264, 0x30EF, + 0x8265, 0x8265, 0x3B7B, 0x8266, 0x8266, 0x1636, 0x8268, 0x8269, 0x321D, + 0x826B, 0x826B, 0x33A6, 0x826C, 0x826C, 0x342D, 0x826D, 0x826D, 0x3496, + 0x826E, 0x826E, 0x040C, 0x826F, 0x826F, 0x0504, 0x8271, 0x8271, 0x1459, + 0x8272, 0x8272, 0x040D, 0x8274, 0x8274, 0x2019, 0x8275, 0x8275, 0x228F, + 0x8276, 0x8276, 0x4759, 0x8277, 0x8277, 0x172E, 0x8278, 0x8278, 0x1813, + 0x8279, 0x8279, 0x4722, 0x827A, 0x827A, 0x4563, 0x827B, 0x827B, 0x37C8, + 0x827C, 0x827C, 0x1814, 0x827D, 0x827D, 0x1816, 0x827E, 0x827E, 0x040E, + 0x827F, 0x827F, 0x1817, 0x8280, 0x8280, 0x1815, 0x8283, 0x8284, 0x18E5, + 0x8285, 0x8285, 0x18E0, 0x8287, 0x8287, 0x4132, 0x828A, 0x828A, 0x18E4, + 0x828B, 0x828B, 0x0506, 0x828D, 0x828D, 0x0507, 0x828E, 0x828E, 0x18E1, + 0x828F, 0x828F, 0x18DF, 0x8290, 0x8290, 0x18DE, 0x8291, 0x8291, 0x18E2, + 0x8292, 0x8292, 0x0505, 0x8293, 0x8293, 0x18E3, 0x8294, 0x8294, 0x1BE0, + 0x8298, 0x8298, 0x1A33, 0x8299, 0x8299, 0x067B, 0x829A, 0x829A, 0x1A32, + 0x829B, 0x829B, 0x1A34, 0x829D, 0x829D, 0x067A, 0x829E, 0x829E, 0x1A39, + 0x829F, 0x829F, 0x067E, 0x82A0, 0x82A0, 0x1A2F, 0x82A1, 0x82A1, 0x1A3D, + 0x82A2, 0x82A2, 0x1A43, 0x82A3, 0x82A3, 0x0685, 0x82A4, 0x82A4, 0x1A40, + 0x82A5, 0x82A5, 0x0682, 0x82A6, 0x82A6, 0x3D73, 0x82A7, 0x82A7, 0x1A36, + 0x82A8, 0x82A8, 0x1A3C, 0x82A9, 0x82A9, 0x1A3E, 0x82AA, 0x82AA, 0x37BC, + 0x82AB, 0x82AB, 0x1A31, 0x82AC, 0x82AC, 0x0681, 0x82AD, 0x82AD, 0x067C, + 0x82AE, 0x82AE, 0x1A37, 0x82AF, 0x82AF, 0x0683, 0x82B0, 0x82B0, 0x0686, + 0x82B1, 0x82B1, 0x0680, 0x82B3, 0x82B3, 0x0679, 0x82B4, 0x82B4, 0x1A3B, + 0x82B5, 0x82B5, 0x1A35, 0x82B6, 0x82B6, 0x1A42, 0x82B7, 0x82B7, 0x0688, + 0x82B8, 0x82B8, 0x0684, 0x82B9, 0x82B9, 0x067F, 0x82BA, 0x82BA, 0x1A3A, + 0x82BB, 0x82BB, 0x099C, 0x82BC, 0x82BC, 0x1A38, 0x82BD, 0x82BD, 0x067D, + 0x82BE, 0x82BE, 0x0687, 0x82C0, 0x82C0, 0x1A30, 0x82C2, 0x82C2, 0x1A3F, + 0x82C3, 0x82C3, 0x1A41, 0x82C4, 0x82C4, 0x45E3, 0x82CA, 0x82CA, 0x475A, + 0x82CF, 0x82CF, 0x4564, 0x82D0, 0x82D0, 0x37C1, 0x82D1, 0x82D1, 0x07F9, + 0x82D2, 0x82D2, 0x07F3, 0x82D3, 0x82D3, 0x07FB, 0x82D4, 0x82D4, 0x07F8, + 0x82D5, 0x82D5, 0x1BE7, 0x82D6, 0x82D6, 0x1BEA, 0x82D7, 0x82D7, 0x07F4, + 0x82D8, 0x82D8, 0x475B, 0x82D9, 0x82D9, 0x1BE1, 0x82DB, 0x82DB, 0x07ED, + 0x82DC, 0x82DC, 0x07F7, 0x82DE, 0x82DE, 0x07FA, 0x82DF, 0x82DF, 0x07FC, + 0x82E0, 0x82E0, 0x1BF6, 0x82E1, 0x82E1, 0x1BED, 0x82E2, 0x82E2, 0x37C9, + 0x82E3, 0x82E3, 0x07EC, 0x82E4, 0x82E4, 0x1BF5, 0x82E5, 0x82E5, 0x07F0, + 0x82E6, 0x82E6, 0x07EE, 0x82E7, 0x82E7, 0x07E9, 0x82E8, 0x82E8, 0x1BE5, + 0x82EA, 0x82EA, 0x1BF4, 0x82EB, 0x82EB, 0x1BE9, 0x82EC, 0x82EC, 0x1BEC, + 0x82ED, 0x82ED, 0x1BF9, 0x82EE, 0x82EE, 0x4018, 0x82EF, 0x82EF, 0x07FD, + 0x82F0, 0x82F0, 0x1BF3, 0x82F1, 0x82F1, 0x07F5, 0x82F2, 0x82F2, 0x1BEE, + 0x82F3, 0x82F3, 0x1BF8, 0x82F4, 0x82F4, 0x1BEB, 0x82F5, 0x82F5, 0x1BEF, + 0x82F6, 0x82F6, 0x1BF2, 0x82F7, 0x82F7, 0x3E77, 0x82F9, 0x82F9, 0x1BE3, + 0x82FA, 0x82FA, 0x1BF7, 0x82FB, 0x82FB, 0x1BF1, 0x82FC, 0x82FC, 0x412D, + 0x82FD, 0x82FD, 0x3D92, 0x82FE, 0x82FE, 0x1BE2, 0x82FF, 0x82FF, 0x43DE, + 0x8300, 0x8300, 0x1BE6, 0x8301, 0x8301, 0x07F6, 0x8302, 0x8302, 0x07F1, + 0x8303, 0x8303, 0x07EA, 0x8304, 0x8304, 0x07EF, 0x8305, 0x8305, 0x07EB, + 0x8306, 0x8306, 0x07FE, 0x8307, 0x8307, 0x1BE4, 0x8308, 0x8308, 0x1DD0, + 0x8309, 0x8309, 0x07F2, 0x830B, 0x830B, 0x3EB6, 0x830C, 0x830C, 0x1BF0, + 0x830D, 0x830D, 0x1A7D, 0x8316, 0x8316, 0x1DD3, 0x8317, 0x8317, 0x09AA, + 0x8318, 0x8318, 0x37CA, 0x8319, 0x8319, 0x1DC3, 0x831A, 0x831A, 0x37C2, + 0x831B, 0x831B, 0x1DCE, 0x831C, 0x831C, 0x1DCA, 0x831D, 0x831D, 0x37D1, + 0x831E, 0x831E, 0x1DDD, 0x8320, 0x8320, 0x1DD5, 0x8322, 0x8322, 0x1DCB, + 0x8324, 0x8324, 0x1DD4, 0x8325, 0x8325, 0x1DC5, 0x8326, 0x8326, 0x1DC9, + 0x8327, 0x8327, 0x1DE0, 0x8328, 0x8328, 0x09AD, 0x8329, 0x8329, 0x1DD8, + 0x832A, 0x832A, 0x1DCF, 0x832B, 0x832B, 0x099D, 0x832C, 0x832C, 0x1DDE, + 0x832D, 0x832D, 0x1DC1, 0x832F, 0x832F, 0x1DD7, 0x8331, 0x8331, 0x09AC, + 0x8332, 0x8332, 0x09A7, 0x8333, 0x8333, 0x1DC0, 0x8334, 0x8334, 0x09A5, + 0x8335, 0x8335, 0x09A4, 0x8336, 0x8336, 0x09A9, 0x8337, 0x8337, 0x1DD6, + 0x8338, 0x8338, 0x09A1, 0x8339, 0x8339, 0x09A8, 0x833A, 0x833A, 0x1BE8, + 0x833B, 0x833B, 0x2290, 0x833C, 0x833C, 0x1DD1, 0x833D, 0x833D, 0x3D2A, + 0x833F, 0x833F, 0x1DC7, 0x8340, 0x8340, 0x09AB, 0x8341, 0x8341, 0x1DC8, + 0x8342, 0x8342, 0x1DCC, 0x8343, 0x8343, 0x09AE, 0x8344, 0x8344, 0x1DC2, + 0x8345, 0x8345, 0x1DDA, 0x8347, 0x8347, 0x1DD9, 0x8348, 0x8348, 0x1DE1, + 0x8349, 0x8349, 0x09A3, 0x834A, 0x834A, 0x09A0, 0x834B, 0x834B, 0x1DDF, + 0x834C, 0x834C, 0x1DDB, 0x834D, 0x834D, 0x1DD2, 0x834E, 0x834E, 0x1DCD, + 0x834F, 0x834F, 0x09A6, 0x8350, 0x8350, 0x09A2, 0x8351, 0x8351, 0x1DC4, + 0x8352, 0x8352, 0x099E, 0x8353, 0x8353, 0x1DDC, 0x8354, 0x8354, 0x099F, + 0x8356, 0x8356, 0x1DC6, 0x8357, 0x8357, 0x475D, 0x8362, 0x8362, 0x37B6, + 0x8363, 0x8363, 0x41EB, 0x8366, 0x8366, 0x3E1E, 0x836F, 0x836F, 0x4565, + 0x8373, 0x8373, 0x201F, 0x8374, 0x8374, 0x2021, 0x8375, 0x8375, 0x2026, + 0x8376, 0x8376, 0x203A, 0x8377, 0x8377, 0x0B83, 0x8378, 0x8378, 0x0B79, + 0x837A, 0x837A, 0x201E, 0x837B, 0x837C, 0x0B84, 0x837D, 0x837D, 0x2029, + 0x837E, 0x837E, 0x2030, 0x837F, 0x837F, 0x2036, 0x8381, 0x8381, 0x2023, + 0x8383, 0x8383, 0x202A, 0x8385, 0x8385, 0x37D3, 0x8386, 0x8386, 0x0B86, + 0x8387, 0x8387, 0x2038, 0x8388, 0x8388, 0x2033, 0x8389, 0x8389, 0x0B81, + 0x838A, 0x838A, 0x0B7F, 0x838B, 0x838B, 0x202F, 0x838C, 0x838C, 0x202B, + 0x838D, 0x838D, 0x201D, 0x838E, 0x838E, 0x0B76, 0x838F, 0x838F, 0x2022, + 0x8390, 0x8390, 0x201A, 0x8391, 0x8391, 0x37EC, 0x8392, 0x8392, 0x0B7E, + 0x8393, 0x8393, 0x0B80, 0x8394, 0x8394, 0x2027, 0x8395, 0x8395, 0x2024, + 0x8396, 0x8396, 0x0B7B, 0x8397, 0x8397, 0x2034, 0x8398, 0x8398, 0x0B78, + 0x8399, 0x8399, 0x2025, 0x839A, 0x839A, 0x22B9, 0x839B, 0x839B, 0x202D, + 0x839C, 0x839C, 0x374D, 0x839D, 0x839D, 0x202C, 0x839E, 0x839E, 0x0B77, + 0x83A0, 0x83A0, 0x0B82, 0x83A2, 0x83A2, 0x0B7A, 0x83A3, 0x83A3, 0x201B, + 0x83A4, 0x83A4, 0x2020, 0x83A5, 0x83A5, 0x2031, 0x83A6, 0x83A6, 0x2037, + 0x83A7, 0x83A7, 0x0B87, 0x83A8, 0x83A8, 0x201C, 0x83A9, 0x83A9, 0x2028, + 0x83AA, 0x83AA, 0x202E, 0x83AB, 0x83AB, 0x0B7D, 0x83AC, 0x83AC, 0x37D6, + 0x83AE, 0x83AE, 0x2039, 0x83AF, 0x83AF, 0x2032, 0x83B0, 0x83B0, 0x2035, + 0x83B9, 0x83B9, 0x42A7, 0x83BD, 0x83BD, 0x0B7C, 0x83BE, 0x83BE, 0x3F59, + 0x83BF, 0x83BF, 0x22A0, 0x83C0, 0x83C0, 0x2294, 0x83C1, 0x83C1, 0x0D35, + 0x83C2, 0x83C2, 0x22B1, 0x83C3, 0x83C3, 0x22BA, 0x83C4, 0x83C4, 0x22BD, + 0x83C5, 0x83C5, 0x0D33, 0x83C6, 0x83C6, 0x229C, 0x83C7, 0x83C7, 0x22B5, + 0x83C8, 0x83C8, 0x229D, 0x83C9, 0x83C9, 0x22AB, 0x83CA, 0x83CA, 0x0D40, + 0x83CB, 0x83CB, 0x22A7, 0x83CC, 0x83CC, 0x0D3D, 0x83CD, 0x83CD, 0x4055, + 0x83CE, 0x83CE, 0x22A8, 0x83CF, 0x83CF, 0x2291, 0x83D1, 0x83D1, 0x22B6, + 0x83D3, 0x83D3, 0x37D8, 0x83D4, 0x83D4, 0x0D46, 0x83D5, 0x83D5, 0x22B3, + 0x83D6, 0x83D6, 0x22A9, 0x83D7, 0x83D7, 0x22BF, 0x83D8, 0x83D8, 0x22A4, + 0x83D9, 0x83D9, 0x254E, 0x83DB, 0x83DB, 0x22C2, 0x83DC, 0x83DC, 0x0D44, + 0x83DD, 0x83DD, 0x22A2, 0x83DE, 0x83DE, 0x22AE, 0x83DF, 0x83DF, 0x0D47, + 0x83E0, 0x83E0, 0x0D32, 0x83E1, 0x83E1, 0x22A6, 0x83E2, 0x83E2, 0x22C0, + 0x83E3, 0x83E3, 0x229F, 0x83E4, 0x83E4, 0x2298, 0x83E5, 0x83E5, 0x22A3, + 0x83E7, 0x83E7, 0x2297, 0x83E8, 0x83E8, 0x2295, 0x83E9, 0x83E9, 0x0D2E, + 0x83EA, 0x83EA, 0x22B7, 0x83EB, 0x83EB, 0x229E, 0x83EC, 0x83EC, 0x22BB, + 0x83ED, 0x83ED, 0x3D2C, 0x83EE, 0x83EE, 0x22BC, 0x83EF, 0x83EF, 0x0D36, + 0x83F0, 0x83F0, 0x0D3B, 0x83F1, 0x83F1, 0x0D37, 0x83F2, 0x83F2, 0x0D3F, + 0x83F3, 0x83F3, 0x22B2, 0x83F4, 0x83F4, 0x0D38, 0x83F5, 0x83F5, 0x22AA, + 0x83F6, 0x83F6, 0x229A, 0x83F8, 0x83F8, 0x0D30, 0x83F9, 0x83F9, 0x2292, + 0x83FA, 0x83FA, 0x22B4, 0x83FB, 0x83FB, 0x22BE, 0x83FC, 0x83FC, 0x2299, + 0x83FD, 0x83FD, 0x0D3E, 0x83FE, 0x83FE, 0x22C3, 0x83FF, 0x83FF, 0x22A5, + 0x8401, 0x8401, 0x22A1, 0x8403, 0x8403, 0x0D2F, 0x8404, 0x8404, 0x0D43, + 0x8405, 0x8405, 0x475F, 0x8406, 0x8406, 0x22B0, 0x8407, 0x8407, 0x0D45, + 0x8409, 0x8409, 0x22AC, 0x840A, 0x840A, 0x0D3A, 0x840B, 0x840B, 0x0D34, + 0x840C, 0x840C, 0x0D3C, 0x840D, 0x840D, 0x0D31, 0x840E, 0x840E, 0x0D42, + 0x840F, 0x840F, 0x22AD, 0x8410, 0x8410, 0x229B, 0x8411, 0x8411, 0x22AF, + 0x8412, 0x8412, 0x2296, 0x8413, 0x8413, 0x22B8, 0x8414, 0x8414, 0x3C10, + 0x8416, 0x8416, 0x4037, 0x8418, 0x8418, 0x3E7A, 0x841B, 0x841B, 0x22C1, + 0x841C, 0x841C, 0x3EB3, 0x8420, 0x8420, 0x3C55, 0x8421, 0x8421, 0x3751, + 0x8423, 0x8423, 0x2293, 0x8424, 0x8424, 0x4951, 0x8426, 0x8426, 0x46D8, + 0x8429, 0x8429, 0x254D, 0x842B, 0x842B, 0x2563, 0x842C, 0x842C, 0x0EAC, + 0x842D, 0x842D, 0x2552, 0x842E, 0x842E, 0x422D, 0x842F, 0x842F, 0x2550, + 0x8430, 0x8430, 0x253B, 0x8431, 0x8431, 0x0EDE, 0x8432, 0x8432, 0x254B, + 0x8433, 0x8433, 0x255F, 0x8434, 0x8434, 0x2547, 0x8435, 0x8435, 0x0EE6, + 0x8436, 0x8436, 0x255E, 0x8437, 0x8437, 0x2545, 0x8438, 0x8438, 0x0D41, + 0x8439, 0x8439, 0x2555, 0x843A, 0x843A, 0x2546, 0x843B, 0x843B, 0x255C, + 0x843C, 0x843C, 0x0EE5, 0x843D, 0x843D, 0x0EDD, 0x843E, 0x843E, 0x3D21, + 0x843F, 0x843F, 0x2530, 0x8440, 0x8440, 0x2538, 0x8442, 0x8442, 0x2551, + 0x8443, 0x8443, 0x2549, 0x8444, 0x8444, 0x2562, 0x8445, 0x8445, 0x254C, + 0x8446, 0x8446, 0x0EEB, 0x8447, 0x8447, 0x255D, 0x8448, 0x8448, 0x4718, + 0x8449, 0x8449, 0x0EE2, 0x844A, 0x844A, 0x37E4, 0x844B, 0x844B, 0x254F, + 0x844C, 0x844C, 0x2557, 0x844D, 0x844D, 0x253C, 0x844E, 0x844E, 0x2556, + 0x8450, 0x8450, 0x2567, 0x8451, 0x8451, 0x2537, 0x8452, 0x8452, 0x2558, + 0x8453, 0x8453, 0x3B7D, 0x8454, 0x8454, 0x2565, 0x8455, 0x8455, 0x398B, + 0x8456, 0x8456, 0x2531, 0x8457, 0x8457, 0x0D39, 0x8458, 0x8458, 0x37DE, + 0x8459, 0x8459, 0x253F, 0x845A, 0x845A, 0x253E, 0x845B, 0x845B, 0x0EE4, + 0x845C, 0x845C, 0x3EDB, 0x845D, 0x845D, 0x2542, 0x845E, 0x845E, 0x2544, + 0x845F, 0x845F, 0x2553, 0x8460, 0x8460, 0x2564, 0x8461, 0x8461, 0x0EE7, + 0x8462, 0x8462, 0x42DA, 0x8463, 0x8463, 0x0EE8, 0x8464, 0x8464, 0x4761, + 0x8465, 0x8465, 0x2536, 0x8466, 0x8466, 0x0EE0, 0x8467, 0x8467, 0x253A, + 0x8468, 0x8468, 0x2560, 0x8469, 0x8469, 0x0EE9, 0x846B, 0x846B, 0x0EE1, + 0x846C, 0x846C, 0x0EE3, 0x846D, 0x846D, 0x0EEA, 0x846E, 0x846E, 0x2566, + 0x846F, 0x846F, 0x2559, 0x8470, 0x8470, 0x2554, 0x8471, 0x8471, 0x37E0, + 0x8472, 0x8472, 0x3C93, 0x8473, 0x8473, 0x2541, 0x8474, 0x8474, 0x2540, + 0x8475, 0x8475, 0x0EDF, 0x8476, 0x8476, 0x2532, 0x8477, 0x8477, 0x0EDC, + 0x8478, 0x8478, 0x254A, 0x8479, 0x8479, 0x2533, 0x847A, 0x847A, 0x2548, + 0x847D, 0x847D, 0x253D, 0x847E, 0x847E, 0x2561, 0x847F, 0x847F, 0x394E, + 0x8480, 0x8480, 0x3B6E, 0x8482, 0x8482, 0x0EDB, 0x8486, 0x8486, 0x2539, + 0x8488, 0x8488, 0x4762, 0x848D, 0x848D, 0x2535, 0x848E, 0x848E, 0x255B, + 0x848F, 0x848F, 0x2534, 0x8490, 0x8490, 0x108E, 0x8491, 0x8491, 0x27CD, + 0x8492, 0x8492, 0x3756, 0x8493, 0x8493, 0x37EE, 0x8494, 0x8494, 0x27BC, + 0x8496, 0x8496, 0x3B1D, 0x8497, 0x8497, 0x27A6, 0x8498, 0x8498, 0x27C4, + 0x8499, 0x8499, 0x1086, 0x849A, 0x849A, 0x27B5, 0x849B, 0x849B, 0x27BF, + 0x849C, 0x849C, 0x1089, 0x849D, 0x849D, 0x27B8, 0x849E, 0x849E, 0x1087, + 0x849F, 0x849F, 0x27A9, 0x84A0, 0x84A0, 0x27C7, 0x84A1, 0x84A1, 0x27A8, + 0x84A2, 0x84A2, 0x27BB, 0x84A3, 0x84A3, 0x3B9E, 0x84A4, 0x84A4, 0x27A7, + 0x84A7, 0x84A7, 0x27B9, 0x84A8, 0x84A8, 0x27C2, 0x84A9, 0x84A9, 0x27C0, + 0x84AA, 0x84AA, 0x27B4, 0x84AB, 0x84AB, 0x27AF, 0x84AC, 0x84AC, 0x27AD, + 0x84AD, 0x84AD, 0x3D8C, 0x84AE, 0x84AE, 0x27AE, 0x84AF, 0x84AF, 0x27C1, + 0x84B0, 0x84B0, 0x27CC, 0x84B1, 0x84B1, 0x27B6, 0x84B2, 0x84B2, 0x1088, + 0x84B4, 0x84B4, 0x27B1, 0x84B6, 0x84B6, 0x27C5, 0x84B8, 0x84B8, 0x108B, + 0x84B9, 0x84B9, 0x27B0, 0x84BA, 0x84BA, 0x27AA, 0x84BB, 0x84BB, 0x27BA, + 0x84BC, 0x84BC, 0x108F, 0x84BD, 0x84BD, 0x3C4C, 0x84BE, 0x84BE, 0x4764, + 0x84BF, 0x84BF, 0x1083, 0x84C0, 0x84C0, 0x108C, 0x84C1, 0x84C1, 0x27B2, + 0x84C2, 0x84C2, 0x27AC, 0x84C4, 0x84C4, 0x1085, 0x84C5, 0x84C5, 0x255A, + 0x84C6, 0x84C6, 0x1084, 0x84C7, 0x84C7, 0x27BD, 0x84C9, 0x84C9, 0x1082, + 0x84CA, 0x84CA, 0x1091, 0x84CB, 0x84CB, 0x108A, 0x84CC, 0x84CC, 0x27BE, + 0x84CD, 0x84CD, 0x27B3, 0x84CE, 0x84CE, 0x27AB, 0x84CF, 0x84CF, 0x27C6, + 0x84D0, 0x84D0, 0x27B7, 0x84D1, 0x84D1, 0x1090, 0x84D2, 0x84D2, 0x27CA, + 0x84D3, 0x84D3, 0x108D, 0x84D4, 0x84D4, 0x27C9, 0x84D6, 0x84D6, 0x27C3, + 0x84D7, 0x84D7, 0x27C8, 0x84DA, 0x84DA, 0x3FF5, 0x84DB, 0x84DB, 0x27CB, + 0x84DE, 0x84DE, 0x37EA, 0x84E1, 0x84E1, 0x4765, 0x84E2, 0x84E2, 0x37B5, + 0x84E4, 0x84E4, 0x37EF, 0x84E5, 0x84E5, 0x3BD0, 0x84E7, 0x84E8, 0x2A03, + 0x84E9, 0x84E9, 0x29F7, 0x84EA, 0x84EA, 0x29F6, 0x84EB, 0x84EB, 0x29F2, + 0x84EC, 0x84EC, 0x11FB, 0x84EE, 0x84EE, 0x11F3, 0x84EF, 0x84EF, 0x2A06, + 0x84F0, 0x84F0, 0x2A05, 0x84F1, 0x84F1, 0x252F, 0x84F2, 0x84F2, 0x29EF, + 0x84F3, 0x84F3, 0x29F3, 0x84F4, 0x84F4, 0x29ED, 0x84F6, 0x84F6, 0x2A00, + 0x84F7, 0x84F7, 0x29F1, 0x84F8, 0x84F8, 0x4766, 0x84F9, 0x84F9, 0x2A07, + 0x84FA, 0x84FA, 0x29EA, 0x84FB, 0x84FB, 0x29E8, 0x84FC, 0x84FC, 0x29F4, + 0x84FD, 0x84FD, 0x29FE, 0x84FE, 0x84FE, 0x29F9, 0x84FF, 0x84FF, 0x11FD, + 0x8500, 0x8500, 0x29DF, 0x8502, 0x8502, 0x29FD, 0x8503, 0x8503, 0x398A, + 0x8505, 0x8505, 0x40EB, 0x8506, 0x8506, 0x11FE, 0x8507, 0x8507, 0x2543, + 0x8508, 0x8508, 0x29EB, 0x8509, 0x8509, 0x29E2, 0x850A, 0x850A, 0x29E5, + 0x850B, 0x850B, 0x2A0B, 0x850C, 0x850C, 0x29EC, 0x850D, 0x850D, 0x29E3, + 0x850E, 0x850E, 0x29E1, 0x850F, 0x850F, 0x29DE, 0x8510, 0x8510, 0x4767, + 0x8511, 0x8511, 0x11F7, 0x8512, 0x8512, 0x29F5, 0x8513, 0x8513, 0x11F6, + 0x8514, 0x8514, 0x11FA, 0x8515, 0x8515, 0x29F0, 0x8516, 0x8516, 0x29F8, + 0x8517, 0x8517, 0x11F0, 0x8518, 0x8518, 0x2A08, 0x8519, 0x8519, 0x2A0C, + 0x851A, 0x851A, 0x11F2, 0x851C, 0x851C, 0x29E7, 0x851D, 0x851D, 0x29FB, + 0x851E, 0x851E, 0x29FF, 0x851F, 0x851F, 0x29E4, 0x8520, 0x8520, 0x2A09, + 0x8521, 0x8521, 0x11F9, 0x8523, 0x8523, 0x11F8, 0x8524, 0x8524, 0x29DC, + 0x8525, 0x8525, 0x11FC, 0x8526, 0x8526, 0x2A02, 0x8527, 0x8527, 0x29E6, + 0x8528, 0x8528, 0x29FA, 0x8529, 0x8529, 0x29E0, 0x852A, 0x852A, 0x29EE, + 0x852B, 0x852B, 0x29E9, 0x852C, 0x852D, 0x11F4, 0x852E, 0x852E, 0x29FC, + 0x852F, 0x852F, 0x2A0D, 0x8530, 0x8530, 0x2A0A, 0x8531, 0x8531, 0x2A01, + 0x8533, 0x8533, 0x4228, 0x8534, 0x8534, 0x37F4, 0x8538, 0x8538, 0x4768, + 0x853B, 0x853B, 0x29DD, 0x853D, 0x853D, 0x11F1, 0x853E, 0x853E, 0x2C4F, + 0x8540, 0x8540, 0x2C46, 0x8541, 0x8541, 0x2C49, 0x8542, 0x8542, 0x4062, + 0x8543, 0x8543, 0x133B, 0x8544, 0x8544, 0x2C4B, 0x8545, 0x8545, 0x2C40, + 0x8546, 0x8546, 0x2C47, 0x8547, 0x8547, 0x2C4D, 0x8548, 0x8548, 0x1338, + 0x8549, 0x8549, 0x133C, 0x854A, 0x854A, 0x1336, 0x854B, 0x854B, 0x37C0, + 0x854C, 0x854C, 0x400F, 0x854D, 0x854D, 0x2C42, 0x854E, 0x854E, 0x2C52, + 0x8551, 0x8551, 0x2C4C, 0x8552, 0x8552, 0x4769, 0x8553, 0x8553, 0x2C43, + 0x8554, 0x8554, 0x2C5B, 0x8555, 0x8555, 0x2C55, 0x8556, 0x8556, 0x2C3F, + 0x8557, 0x8557, 0x2E23, 0x8558, 0x8558, 0x2C45, 0x8559, 0x8559, 0x1337, + 0x855A, 0x855A, 0x37DB, 0x855B, 0x855B, 0x2C50, 0x855D, 0x855D, 0x2C5A, + 0x855E, 0x855E, 0x133F, 0x8560, 0x8560, 0x2C57, 0x8561, 0x8561, 0x2C44, + 0x8562, 0x8562, 0x2C4A, 0x8563, 0x8563, 0x2C4E, 0x8564, 0x8564, 0x2C48, + 0x8565, 0x8565, 0x2C5C, 0x8566, 0x8566, 0x2C59, 0x8567, 0x8567, 0x2C56, + 0x8568, 0x8569, 0x1339, 0x856A, 0x856A, 0x133E, 0x856B, 0x856B, 0x2C41, + 0x856C, 0x856C, 0x2C5D, 0x856D, 0x856D, 0x133D, 0x856E, 0x856E, 0x2C53, + 0x856F, 0x8570, 0x476B, 0x8571, 0x8571, 0x2C51, 0x8573, 0x8573, 0x37F8, + 0x8575, 0x8575, 0x2C54, 0x8576, 0x8576, 0x2E30, 0x8577, 0x8577, 0x2E1D, + 0x8578, 0x8578, 0x2E22, 0x8579, 0x8579, 0x2E2F, 0x857A, 0x857A, 0x2E21, + 0x857B, 0x857B, 0x2E19, 0x857C, 0x857C, 0x2E1E, 0x857E, 0x857E, 0x145C, + 0x8580, 0x8580, 0x2E12, 0x8581, 0x8581, 0x2E2A, 0x8582, 0x8582, 0x2E2C, + 0x8583, 0x8583, 0x2E11, 0x8584, 0x8584, 0x145B, 0x8585, 0x8585, 0x2E2E, + 0x8586, 0x8586, 0x2E26, 0x8587, 0x8587, 0x1462, 0x8588, 0x8588, 0x2E2D, + 0x8589, 0x8589, 0x2E1F, 0x858A, 0x858A, 0x1464, 0x858B, 0x858B, 0x2E17, + 0x858C, 0x858C, 0x2C58, 0x858D, 0x858D, 0x2E27, 0x858E, 0x858E, 0x2E24, + 0x858F, 0x858F, 0x2E13, 0x8590, 0x8590, 0x2E32, 0x8591, 0x8591, 0x145E, + 0x8594, 0x8594, 0x145F, 0x8595, 0x8595, 0x2E15, 0x8596, 0x8596, 0x2E25, + 0x8598, 0x8598, 0x2E31, 0x8599, 0x8599, 0x2E28, 0x859A, 0x859A, 0x2E1B, + 0x859B, 0x859B, 0x1461, 0x859C, 0x859C, 0x145D, 0x859D, 0x859D, 0x2E29, + 0x859E, 0x859E, 0x2E1C, 0x859F, 0x859F, 0x2E33, 0x85A0, 0x85A0, 0x2E16, + 0x85A1, 0x85A1, 0x2E20, 0x85A2, 0x85A2, 0x2E2B, 0x85A3, 0x85A3, 0x2E18, + 0x85A4, 0x85A4, 0x2E1A, 0x85A6, 0x85A6, 0x1465, 0x85A7, 0x85A7, 0x2E14, + 0x85A8, 0x85A8, 0x1463, 0x85A9, 0x85A9, 0x151C, 0x85AA, 0x85AA, 0x145A, + 0x85AF, 0x85AF, 0x1460, 0x85B0, 0x85B0, 0x1520, 0x85B1, 0x85B1, 0x2FA6, + 0x85B3, 0x85B3, 0x2F9C, 0x85B4, 0x85B4, 0x2F97, 0x85B5, 0x85B5, 0x2F9D, + 0x85B6, 0x85B6, 0x2FA7, 0x85B7, 0x85B7, 0x2FAB, 0x85B8, 0x85B8, 0x2FAA, + 0x85B9, 0x85B9, 0x1522, 0x85BA, 0x85BA, 0x1521, 0x85BD, 0x85BD, 0x2F9E, + 0x85BE, 0x85BE, 0x2FAC, 0x85BF, 0x85BF, 0x2FA1, 0x85C0, 0x85C0, 0x2F99, + 0x85C1, 0x85C1, 0x37FE, 0x85C2, 0x85C2, 0x2F9B, 0x85C3, 0x85C3, 0x2F9A, + 0x85C4, 0x85C4, 0x2FA0, 0x85C5, 0x85C5, 0x2FA5, 0x85C6, 0x85C6, 0x2F98, + 0x85C7, 0x85C7, 0x2F9F, 0x85C8, 0x85C8, 0x2FA4, 0x85C9, 0x85C9, 0x151F, + 0x85CB, 0x85CB, 0x2FA2, 0x85CD, 0x85CD, 0x151D, 0x85CE, 0x85CE, 0x2FA3, + 0x85CF, 0x85CF, 0x151B, 0x85D0, 0x85D0, 0x151E, 0x85D1, 0x85D1, 0x3101, + 0x85D2, 0x85D2, 0x2FA8, 0x85D5, 0x85D5, 0x15B7, 0x85D7, 0x85D7, 0x30F9, + 0x85D8, 0x85D8, 0x30FD, 0x85D9, 0x85D9, 0x30F5, 0x85DA, 0x85DA, 0x30F8, + 0x85DC, 0x85DC, 0x3100, 0x85DD, 0x85DD, 0x15B5, 0x85DE, 0x85DE, 0x3105, + 0x85DF, 0x85DF, 0x30FE, 0x85E0, 0x85E0, 0x476D, 0x85E1, 0x85E1, 0x30F6, + 0x85E2, 0x85E2, 0x3106, 0x85E3, 0x85E3, 0x30FF, 0x85E4, 0x85E5, 0x15B8, + 0x85E6, 0x85E6, 0x3103, 0x85E8, 0x85E8, 0x30F7, 0x85E9, 0x85E9, 0x15B4, + 0x85EA, 0x85EA, 0x15B6, 0x85EB, 0x85EB, 0x30F2, 0x85EC, 0x85EC, 0x30FA, + 0x85ED, 0x85ED, 0x30F4, 0x85EE, 0x85EE, 0x3C56, 0x85EF, 0x85EF, 0x3104, + 0x85F0, 0x85F0, 0x3102, 0x85F1, 0x85F1, 0x30F3, 0x85F2, 0x85F2, 0x30FB, + 0x85F6, 0x85F6, 0x3225, 0x85F7, 0x85F7, 0x15BA, 0x85F8, 0x85F8, 0x30FC, + 0x85F9, 0x85F9, 0x1638, 0x85FA, 0x85FA, 0x163A, 0x85FB, 0x85FB, 0x1637, + 0x85FC, 0x85FC, 0x3C50, 0x85FD, 0x85FD, 0x322A, 0x85FE, 0x85FE, 0x3222, + 0x85FF, 0x85FF, 0x3220, 0x8600, 0x8600, 0x3224, 0x8601, 0x8601, 0x3221, + 0x8602, 0x8602, 0x3800, 0x8604, 0x8604, 0x3226, 0x8605, 0x8605, 0x3228, + 0x8606, 0x8606, 0x163B, 0x8607, 0x8607, 0x163D, 0x8609, 0x8609, 0x3227, + 0x860A, 0x860A, 0x163E, 0x860B, 0x860B, 0x163C, 0x860C, 0x860C, 0x3229, + 0x860D, 0x860D, 0x4064, 0x8610, 0x8610, 0x3B7F, 0x8611, 0x8611, 0x1639, + 0x8614, 0x8614, 0x46BE, 0x8616, 0x8616, 0x37FB, 0x8617, 0x8617, 0x1685, + 0x8618, 0x8618, 0x32F6, 0x8619, 0x8619, 0x32FC, 0x861A, 0x861A, 0x1687, + 0x861B, 0x861B, 0x3223, 0x861C, 0x861C, 0x32FB, 0x861E, 0x861E, 0x3302, + 0x861F, 0x861F, 0x32F9, 0x8620, 0x8620, 0x3300, 0x8621, 0x8621, 0x32FF, + 0x8622, 0x8622, 0x321F, 0x8623, 0x8623, 0x32FA, 0x8624, 0x8624, 0x2FA9, + 0x8625, 0x8625, 0x3303, 0x8626, 0x8626, 0x32F8, 0x8627, 0x8627, 0x32FD, + 0x8628, 0x8628, 0x3805, 0x8629, 0x8629, 0x3301, 0x862A, 0x862A, 0x32F7, + 0x862C, 0x862C, 0x33AA, 0x862D, 0x862D, 0x1686, 0x862E, 0x862E, 0x32FE, + 0x862F, 0x862F, 0x3F9E, 0x8631, 0x8631, 0x3432, 0x8632, 0x8632, 0x33AB, + 0x8633, 0x8633, 0x33A9, 0x8634, 0x8635, 0x33A7, 0x8636, 0x8636, 0x33AC, + 0x8638, 0x8638, 0x1707, 0x8639, 0x8639, 0x3430, 0x863A, 0x863A, 0x342E, + 0x863B, 0x863B, 0x3433, 0x863C, 0x863C, 0x3431, 0x863E, 0x863E, 0x3434, + 0x863F, 0x863F, 0x1708, 0x8640, 0x8640, 0x342F, 0x8642, 0x8642, 0x38C1, + 0x8643, 0x8643, 0x3497, 0x8645, 0x8645, 0x3B66, 0x8646, 0x8648, 0x34DF, + 0x864B, 0x864B, 0x353E, 0x864C, 0x864C, 0x3536, 0x864D, 0x864D, 0x1818, + 0x864E, 0x864E, 0x0689, 0x8650, 0x8650, 0x07FF, 0x8652, 0x8652, 0x1DE3, + 0x8653, 0x8653, 0x1DE2, 0x8654, 0x8654, 0x09AF, 0x8655, 0x8655, 0x0B88, + 0x8656, 0x8656, 0x203C, 0x8659, 0x8659, 0x203B, 0x865B, 0x865B, 0x0D48, + 0x865C, 0x865C, 0x0EED, 0x865E, 0x865E, 0x0EEC, 0x865F, 0x865F, 0x0EEE, + 0x8661, 0x8661, 0x27CE, 0x8662, 0x8662, 0x2A0E, 0x8663, 0x8663, 0x2C5E, + 0x8664, 0x8664, 0x2C60, 0x8665, 0x8665, 0x2C5F, 0x8667, 0x8667, 0x1466, + 0x8668, 0x8668, 0x2E34, 0x8669, 0x8669, 0x2FAD, 0x866A, 0x866A, 0x351E, + 0x866B, 0x866B, 0x040F, 0x866C, 0x866C, 0x3813, 0x866D, 0x866E, 0x1A46, + 0x866F, 0x866F, 0x1A45, 0x8670, 0x8670, 0x1A44, 0x8671, 0x8671, 0x068A, + 0x8672, 0x8672, 0x476F, 0x8673, 0x8673, 0x1BFD, 0x8674, 0x8674, 0x1BFB, + 0x8677, 0x8677, 0x1BFA, 0x8679, 0x8679, 0x0800, 0x867A, 0x867A, 0x0802, + 0x867B, 0x867B, 0x0801, 0x867C, 0x867C, 0x1BFC, 0x867E, 0x867E, 0x380A, + 0x8685, 0x8685, 0x1DEF, 0x8686, 0x8686, 0x1DEC, 0x8687, 0x8687, 0x1DEA, + 0x868A, 0x868A, 0x09B0, 0x868B, 0x868B, 0x1DED, 0x868C, 0x868C, 0x09B5, + 0x868D, 0x868D, 0x1DE7, 0x868E, 0x868E, 0x1DF6, 0x8690, 0x8690, 0x1DF8, + 0x8691, 0x8691, 0x1DE8, 0x8692, 0x8692, 0x4770, 0x8693, 0x8693, 0x09B2, + 0x8694, 0x8694, 0x1DF9, 0x8695, 0x8695, 0x1DF4, 0x8696, 0x8696, 0x1DE6, + 0x8697, 0x8697, 0x1DEB, 0x8698, 0x8698, 0x1DF5, 0x8699, 0x8699, 0x1DF1, + 0x869A, 0x869A, 0x1DEE, 0x869C, 0x869C, 0x09B7, 0x869D, 0x869D, 0x1DF7, + 0x869E, 0x869E, 0x1DE9, 0x86A0, 0x86A0, 0x3B88, 0x86A1, 0x86A1, 0x1DF2, + 0x86A2, 0x86A2, 0x1DE4, 0x86A3, 0x86A3, 0x09B6, 0x86A4, 0x86A4, 0x09B3, + 0x86A5, 0x86A5, 0x1DF0, 0x86A7, 0x86A7, 0x1DF3, 0x86A8, 0x86A8, 0x1DE5, + 0x86A9, 0x86A9, 0x09B4, 0x86AA, 0x86AA, 0x09B1, 0x86AD, 0x86AD, 0x3F06, + 0x86AF, 0x86AF, 0x0B92, 0x86B0, 0x86B0, 0x2043, 0x86B1, 0x86B1, 0x0B91, + 0x86B2, 0x86B2, 0x43E0, 0x86B3, 0x86B3, 0x2046, 0x86B4, 0x86B4, 0x2049, + 0x86B5, 0x86B5, 0x0B8E, 0x86B6, 0x86B6, 0x0B8C, 0x86B7, 0x86B7, 0x203E, + 0x86B8, 0x86B8, 0x2047, 0x86B9, 0x86B9, 0x2045, 0x86BA, 0x86BA, 0x2042, + 0x86BB, 0x86BC, 0x204A, 0x86BD, 0x86BE, 0x204D, 0x86BF, 0x86BF, 0x203D, + 0x86C0, 0x86C0, 0x0B8B, 0x86C1, 0x86C1, 0x2040, 0x86C2, 0x86C2, 0x203F, + 0x86C3, 0x86C3, 0x204C, 0x86C4, 0x86C4, 0x0B8D, 0x86C5, 0x86C5, 0x2041, + 0x86C6, 0x86C6, 0x0B8F, 0x86C7, 0x86C7, 0x0B8A, 0x86C8, 0x86C8, 0x2044, + 0x86C9, 0x86C9, 0x0B93, 0x86CB, 0x86CB, 0x0B90, 0x86CC, 0x86CC, 0x2048, + 0x86D0, 0x86D0, 0x0D4F, 0x86D1, 0x86D1, 0x22D2, 0x86D3, 0x86D3, 0x22C7, + 0x86D4, 0x86D4, 0x0D4C, 0x86D6, 0x86D6, 0x256D, 0x86D7, 0x86D7, 0x22D0, + 0x86D8, 0x86D8, 0x22C4, 0x86D9, 0x86D9, 0x0D4A, 0x86DA, 0x86DA, 0x22C9, + 0x86DB, 0x86DB, 0x0D4D, 0x86DC, 0x86DC, 0x22CD, 0x86DD, 0x86DD, 0x22CB, + 0x86DE, 0x86DE, 0x0D50, 0x86DF, 0x86DF, 0x0D49, 0x86E2, 0x86E2, 0x22C5, + 0x86E3, 0x86E3, 0x22C8, 0x86E4, 0x86E4, 0x0D4E, 0x86E6, 0x86E6, 0x22C6, + 0x86E8, 0x86E8, 0x22D1, 0x86E9, 0x86E9, 0x22CF, 0x86EA, 0x86EA, 0x22CA, + 0x86EB, 0x86EB, 0x22CC, 0x86EC, 0x86EC, 0x22CE, 0x86ED, 0x86ED, 0x0D4B, + 0x86EF, 0x86EF, 0x4771, 0x86F5, 0x86F5, 0x256E, 0x86F6, 0x86F6, 0x2574, + 0x86F7, 0x86F7, 0x256A, 0x86F8, 0x86F8, 0x2570, 0x86F9, 0x86F9, 0x0EEF, + 0x86FA, 0x86FA, 0x256C, 0x86FB, 0x86FB, 0x0EF5, 0x86FE, 0x86FE, 0x0EF4, + 0x8700, 0x8700, 0x0EF3, 0x8701, 0x8701, 0x2573, 0x8702, 0x8703, 0x0EF6, + 0x8704, 0x8704, 0x2569, 0x8705, 0x8705, 0x2576, 0x8706, 0x8706, 0x0EF8, + 0x8707, 0x8707, 0x0EF2, 0x8708, 0x8708, 0x0EF1, 0x8709, 0x8709, 0x2572, + 0x870A, 0x870A, 0x0EF9, 0x870B, 0x870B, 0x2568, 0x870C, 0x870C, 0x256B, + 0x870D, 0x870D, 0x2575, 0x870E, 0x870E, 0x2571, 0x8711, 0x8711, 0x27EE, + 0x8712, 0x8712, 0x27E3, 0x8713, 0x8713, 0x0EF0, 0x8718, 0x8718, 0x1098, + 0x8719, 0x8719, 0x27D7, 0x871A, 0x871A, 0x27EC, 0x871B, 0x871B, 0x27D8, + 0x871C, 0x871C, 0x1093, 0x871E, 0x871E, 0x27D5, 0x8720, 0x8720, 0x27DE, + 0x8721, 0x8721, 0x27D6, 0x8722, 0x8722, 0x1095, 0x8723, 0x8723, 0x27D0, + 0x8724, 0x8724, 0x27EB, 0x8725, 0x8725, 0x1096, 0x8726, 0x8727, 0x27E8, + 0x8728, 0x8728, 0x27D1, 0x8729, 0x8729, 0x109B, 0x872A, 0x872A, 0x27E0, + 0x872C, 0x872C, 0x27DA, 0x872D, 0x872D, 0x27E1, 0x872E, 0x872E, 0x27D4, + 0x8730, 0x8730, 0x27ED, 0x8731, 0x8731, 0x27E5, 0x8732, 0x8732, 0x27DF, + 0x8733, 0x8733, 0x27CF, 0x8734, 0x8734, 0x1097, 0x8735, 0x8735, 0x27E6, + 0x8737, 0x8737, 0x109A, 0x8738, 0x8738, 0x27EA, 0x873A, 0x873A, 0x27E4, + 0x873B, 0x873B, 0x1094, 0x873C, 0x873C, 0x27E2, 0x873E, 0x873E, 0x27DC, + 0x873F, 0x873F, 0x1092, 0x8740, 0x8740, 0x27D3, 0x8741, 0x8741, 0x27DB, + 0x8742, 0x8742, 0x27E7, 0x8743, 0x8743, 0x27D9, 0x8746, 0x8746, 0x27DD, + 0x874C, 0x874C, 0x1208, 0x874D, 0x874D, 0x256F, 0x874E, 0x874E, 0x2A20, + 0x874F, 0x874F, 0x2A29, 0x8750, 0x8750, 0x2A1F, 0x8751, 0x8751, 0x2A1B, + 0x8752, 0x8752, 0x2A18, 0x8753, 0x8753, 0x1209, 0x8754, 0x8754, 0x2A16, + 0x8755, 0x8755, 0x1099, 0x8756, 0x8756, 0x2A0F, 0x8757, 0x8757, 0x1207, + 0x8758, 0x8758, 0x2A15, 0x8759, 0x8759, 0x1206, 0x875A, 0x875A, 0x2A1A, + 0x875B, 0x875B, 0x2A17, 0x875C, 0x875C, 0x2A27, 0x875D, 0x875D, 0x2A22, + 0x875E, 0x875E, 0x2A1C, 0x875F, 0x875F, 0x2A21, 0x8760, 0x8760, 0x1202, + 0x8761, 0x8761, 0x2A19, 0x8762, 0x8762, 0x2A2C, 0x8763, 0x8764, 0x2A10, + 0x8765, 0x8765, 0x2A28, 0x8766, 0x8766, 0x1203, 0x8767, 0x8767, 0x2A2D, + 0x8768, 0x8768, 0x1205, 0x8769, 0x8769, 0x2A2E, 0x876A, 0x876A, 0x2A1E, + 0x876B, 0x876B, 0x27D2, 0x876C, 0x876C, 0x2A24, 0x876D, 0x876D, 0x2A1D, + 0x876E, 0x876E, 0x2A26, 0x876F, 0x876F, 0x2A23, 0x8770, 0x8770, 0x3E6C, + 0x8771, 0x8771, 0x380B, 0x8773, 0x8773, 0x2A14, 0x8774, 0x8774, 0x1200, + 0x8775, 0x8775, 0x2A2B, 0x8776, 0x8776, 0x1201, 0x8777, 0x8777, 0x2A12, + 0x8778, 0x8778, 0x1204, 0x8779, 0x8779, 0x2C6B, 0x877A, 0x877A, 0x2A25, + 0x877B, 0x877B, 0x2A2A, 0x877D, 0x877D, 0x4045, 0x8781, 0x8781, 0x2C68, + 0x8782, 0x8782, 0x11FF, 0x8783, 0x8783, 0x1340, 0x8784, 0x8784, 0x2C72, + 0x8785, 0x8785, 0x2C6E, 0x8786, 0x8786, 0x3EB0, 0x8787, 0x8787, 0x2C6C, + 0x8788, 0x8788, 0x2C67, 0x8789, 0x8789, 0x2C76, 0x878B, 0x878B, 0x43E2, + 0x878C, 0x878C, 0x3FEF, 0x878D, 0x878D, 0x1344, 0x878F, 0x878F, 0x2C63, + 0x8790, 0x8791, 0x2C6F, 0x8792, 0x8792, 0x2C66, 0x8793, 0x8793, 0x2C65, + 0x8794, 0x8794, 0x2C73, 0x8796, 0x8796, 0x2C69, 0x8797, 0x8797, 0x2C64, + 0x8798, 0x8798, 0x2C6A, 0x879A, 0x879A, 0x2C75, 0x879B, 0x879B, 0x2C62, + 0x879C, 0x879C, 0x2C74, 0x879D, 0x879D, 0x2C71, 0x879E, 0x879E, 0x1342, + 0x879F, 0x879F, 0x1341, 0x87A2, 0x87A2, 0x1343, 0x87A3, 0x87A3, 0x2C6D, + 0x87A4, 0x87A4, 0x2C61, 0x87A5, 0x87A5, 0x3D88, 0x87A9, 0x87A9, 0x3FEC, + 0x87AA, 0x87AA, 0x2E36, 0x87AB, 0x87AB, 0x146C, 0x87AC, 0x87AC, 0x2E3A, + 0x87AD, 0x87AD, 0x2E37, 0x87AE, 0x87AE, 0x2E3E, 0x87AF, 0x87AF, 0x2E44, + 0x87B0, 0x87B0, 0x2E39, 0x87B1, 0x87B1, 0x380F, 0x87B2, 0x87B2, 0x2E4D, + 0x87B3, 0x87B3, 0x1469, 0x87B4, 0x87B4, 0x2E47, 0x87B5, 0x87B5, 0x2E3C, + 0x87B6, 0x87B6, 0x2E48, 0x87B7, 0x87B7, 0x2E43, 0x87B8, 0x87B8, 0x2E4A, + 0x87B9, 0x87B9, 0x2E3B, 0x87BA, 0x87BA, 0x146E, 0x87BB, 0x87BB, 0x146D, + 0x87BC, 0x87BC, 0x2E3D, 0x87BD, 0x87BD, 0x2E4B, 0x87BE, 0x87BE, 0x2E35, + 0x87BF, 0x87BF, 0x2E49, 0x87C0, 0x87C0, 0x1467, 0x87C1, 0x87C1, 0x3FFC, + 0x87C2, 0x87C2, 0x2E41, 0x87C3, 0x87C3, 0x2E40, 0x87C4, 0x87C4, 0x2E45, + 0x87C5, 0x87C5, 0x2E38, 0x87C6, 0x87C6, 0x146B, 0x87C8, 0x87C8, 0x146F, + 0x87C9, 0x87C9, 0x2E3F, 0x87CA, 0x87CA, 0x2E46, 0x87CB, 0x87CB, 0x1470, + 0x87CC, 0x87CC, 0x2E42, 0x87CE, 0x87CE, 0x3FED, 0x87D1, 0x87D1, 0x1468, + 0x87D2, 0x87D2, 0x146A, 0x87D3, 0x87D3, 0x2FBA, 0x87D4, 0x87D4, 0x2FB8, + 0x87D6, 0x87D6, 0x3F92, 0x87D7, 0x87D7, 0x2FBE, 0x87D8, 0x87D8, 0x2FBC, + 0x87D9, 0x87D9, 0x2FBF, 0x87DA, 0x87DA, 0x3810, 0x87DB, 0x87DB, 0x2FB1, + 0x87DC, 0x87DC, 0x2FB9, 0x87DD, 0x87DD, 0x2FC3, 0x87DE, 0x87DE, 0x2E4C, + 0x87DF, 0x87DF, 0x2FB5, 0x87E0, 0x87E0, 0x1526, 0x87E1, 0x87E1, 0x2A13, + 0x87E2, 0x87E2, 0x2FB0, 0x87E3, 0x87E3, 0x2FBD, 0x87E4, 0x87E4, 0x2FB7, + 0x87E5, 0x87E5, 0x2FB4, 0x87E6, 0x87E6, 0x2FAF, 0x87E7, 0x87E7, 0x2FAE, + 0x87E8, 0x87E8, 0x2FC2, 0x87EA, 0x87EA, 0x2FB3, 0x87EB, 0x87EB, 0x2FB2, + 0x87EC, 0x87EC, 0x1524, 0x87ED, 0x87ED, 0x2FBB, 0x87EE, 0x87EE, 0x380D, + 0x87EF, 0x87EF, 0x1523, 0x87F2, 0x87F2, 0x1525, 0x87F3, 0x87F3, 0x2FB6, + 0x87F4, 0x87F4, 0x2FC1, 0x87F5, 0x87F5, 0x3FAE, 0x87F6, 0x87F7, 0x310A, + 0x87F9, 0x87F9, 0x15BE, 0x87FA, 0x87FA, 0x3108, 0x87FB, 0x87FB, 0x15BB, + 0x87FC, 0x87FC, 0x3110, 0x87FE, 0x87FE, 0x15BF, 0x87FF, 0x87FF, 0x3112, + 0x8800, 0x8800, 0x3107, 0x8801, 0x8801, 0x2FC0, 0x8802, 0x8802, 0x3114, + 0x8803, 0x8803, 0x3109, 0x8804, 0x8804, 0x3EAF, 0x8805, 0x8805, 0x15BC, + 0x8806, 0x8806, 0x310F, 0x8808, 0x8808, 0x3111, 0x8809, 0x8809, 0x310C, + 0x880A, 0x880A, 0x3113, 0x880B, 0x880B, 0x310E, 0x880C, 0x880C, 0x310D, + 0x880D, 0x880D, 0x15BD, 0x880F, 0x880F, 0x3811, 0x8810, 0x8811, 0x322C, + 0x8813, 0x8813, 0x322F, 0x8814, 0x8815, 0x163F, 0x8816, 0x8816, 0x3230, + 0x8817, 0x8817, 0x322E, 0x8818, 0x8818, 0x3F7A, 0x8819, 0x8819, 0x322B, + 0x881B, 0x881B, 0x3306, 0x881C, 0x881C, 0x3309, 0x881D, 0x881D, 0x3305, + 0x881F, 0x881F, 0x168B, 0x8820, 0x8820, 0x3307, 0x8821, 0x8821, 0x168A, + 0x8822, 0x8822, 0x1689, 0x8823, 0x8823, 0x1688, 0x8824, 0x8824, 0x3308, + 0x8825, 0x8825, 0x33B1, 0x8826, 0x8826, 0x33AF, 0x8827, 0x8827, 0x3E07, + 0x8828, 0x8828, 0x33AE, 0x8829, 0x8829, 0x3304, 0x882A, 0x882A, 0x33B0, + 0x882B, 0x882B, 0x330A, 0x882C, 0x882C, 0x33AD, 0x882D, 0x882D, 0x3B8B, + 0x882E, 0x882E, 0x3437, 0x882F, 0x882F, 0x3415, 0x8830, 0x8830, 0x3435, + 0x8831, 0x8831, 0x1709, 0x8832, 0x8832, 0x3436, 0x8833, 0x8833, 0x3438, + 0x8835, 0x8835, 0x349A, 0x8836, 0x8836, 0x1728, 0x8837, 0x8837, 0x3499, + 0x8838, 0x8838, 0x3498, 0x8839, 0x8839, 0x1729, 0x883B, 0x883B, 0x1747, + 0x883C, 0x883C, 0x3508, 0x883D, 0x883D, 0x3520, 0x883E, 0x883E, 0x351F, + 0x883F, 0x883F, 0x3521, 0x8840, 0x8840, 0x0410, 0x8841, 0x8841, 0x1BFE, + 0x8842, 0x8842, 0x3F5A, 0x8843, 0x8844, 0x1DFA, 0x8845, 0x8846, 0x3816, + 0x8848, 0x8848, 0x22D3, 0x884A, 0x884A, 0x330B, 0x884B, 0x884B, 0x349B, + 0x884C, 0x884C, 0x0411, 0x884D, 0x884D, 0x0803, 0x884E, 0x884E, 0x1BFF, + 0x884F, 0x884F, 0x3844, 0x8852, 0x8852, 0x204F, 0x8853, 0x8853, 0x0B94, + 0x8855, 0x8855, 0x22D5, 0x8856, 0x8856, 0x22D4, 0x8857, 0x8857, 0x0D51, + 0x8859, 0x8859, 0x0EFA, 0x885A, 0x885A, 0x2A2F, 0x885B, 0x885B, 0x120A, + 0x885D, 0x885D, 0x120B, 0x885E, 0x885E, 0x381B, 0x8860, 0x8860, 0x3A46, + 0x8861, 0x8861, 0x1345, 0x8862, 0x8862, 0x172A, 0x8863, 0x8863, 0x0412, + 0x8864, 0x8864, 0x4502, 0x8865, 0x8865, 0x3DFC, 0x8867, 0x8867, 0x1C00, + 0x8868, 0x8868, 0x068C, 0x8869, 0x8869, 0x1C02, 0x886A, 0x886A, 0x1C01, + 0x886B, 0x886B, 0x0804, 0x886D, 0x886D, 0x1DFC, 0x886E, 0x886E, 0x3B8E, + 0x886F, 0x886F, 0x1E03, 0x8870, 0x8870, 0x09B8, 0x8871, 0x8871, 0x1E01, + 0x8872, 0x8872, 0x1DFF, 0x8874, 0x8874, 0x1E06, 0x8875, 0x8876, 0x1DFD, + 0x8877, 0x8877, 0x09B9, 0x8879, 0x8879, 0x09BD, 0x887C, 0x887C, 0x1E07, + 0x887D, 0x887D, 0x09BC, 0x887E, 0x887E, 0x1E05, 0x887F, 0x887F, 0x1E02, + 0x8880, 0x8880, 0x1E00, 0x8881, 0x8882, 0x09BA, 0x8883, 0x8883, 0x1E04, + 0x8884, 0x8884, 0x42F7, 0x8887, 0x8887, 0x3B90, 0x8888, 0x8888, 0x0B96, + 0x8889, 0x8889, 0x2050, 0x888B, 0x888B, 0x0B9B, 0x888C, 0x888C, 0x2060, + 0x888D, 0x888D, 0x0B9A, 0x888E, 0x888E, 0x2062, 0x8891, 0x8891, 0x2056, + 0x8892, 0x8892, 0x0B98, 0x8893, 0x8893, 0x2061, 0x8895, 0x8895, 0x2051, + 0x8896, 0x8896, 0x0B99, 0x8897, 0x8897, 0x205D, 0x8898, 0x8898, 0x2059, + 0x8899, 0x8899, 0x205B, 0x889A, 0x889A, 0x2055, 0x889B, 0x889B, 0x205C, + 0x889C, 0x889C, 0x381C, 0x889E, 0x889E, 0x0B95, 0x889F, 0x889F, 0x2058, + 0x88A0, 0x88A0, 0x3FA0, 0x88A1, 0x88A1, 0x2057, 0x88A2, 0x88A2, 0x2053, + 0x88A4, 0x88A4, 0x205E, 0x88A7, 0x88A7, 0x205A, 0x88A8, 0x88A8, 0x2052, + 0x88AA, 0x88AA, 0x2054, 0x88AB, 0x88AB, 0x0B97, 0x88AC, 0x88AC, 0x205F, + 0x88AE, 0x88AE, 0x4775, 0x88B1, 0x88B1, 0x0D54, 0x88B2, 0x88B2, 0x22E0, + 0x88B4, 0x88B5, 0x381E, 0x88B6, 0x88B6, 0x22DC, 0x88B7, 0x88B7, 0x22DE, + 0x88B8, 0x88B8, 0x22D9, 0x88B9, 0x88B9, 0x22D8, 0x88BA, 0x88BA, 0x22D6, + 0x88BC, 0x88BC, 0x22DD, 0x88BD, 0x88BD, 0x22DF, 0x88BE, 0x88BE, 0x22DB, + 0x88BF, 0x88BF, 0x3B91, 0x88C0, 0x88C0, 0x22DA, 0x88C1, 0x88C2, 0x0D52, + 0x88C5, 0x88C5, 0x3820, 0x88C7, 0x88C7, 0x3EB1, 0x88C9, 0x88C9, 0x22E2, + 0x88CA, 0x88CA, 0x0F02, 0x88CB, 0x88CB, 0x2578, 0x88CC, 0x88CC, 0x257E, + 0x88CD, 0x88CE, 0x2579, 0x88CF, 0x88CF, 0x36EA, 0x88D0, 0x88D0, 0x257F, + 0x88D2, 0x88D2, 0x0F04, 0x88D4, 0x88D4, 0x0EFC, 0x88D5, 0x88D5, 0x0F03, + 0x88D6, 0x88D6, 0x2577, 0x88D7, 0x88D7, 0x22D7, 0x88D8, 0x88D8, 0x0EFF, + 0x88D9, 0x88D9, 0x0EFD, 0x88DA, 0x88DA, 0x257D, 0x88DB, 0x88DB, 0x257C, + 0x88DC, 0x88DC, 0x0EFE, 0x88DD, 0x88DD, 0x0F00, 0x88DE, 0x88DE, 0x257B, + 0x88DF, 0x88DF, 0x0EFB, 0x88E1, 0x88E1, 0x0F01, 0x88E6, 0x88E6, 0x3B92, + 0x88E7, 0x88E7, 0x27F0, 0x88E8, 0x88E8, 0x10A2, 0x88EB, 0x88EB, 0x27FB, + 0x88EC, 0x88EC, 0x27FA, 0x88EE, 0x88EE, 0x27F5, 0x88EF, 0x88EF, 0x10A4, + 0x88F0, 0x88F0, 0x27F9, 0x88F1, 0x88F2, 0x27F1, 0x88F3, 0x88F3, 0x109C, + 0x88F4, 0x88F4, 0x109E, 0x88F5, 0x88F5, 0x3E08, 0x88F6, 0x88F6, 0x27F7, + 0x88F7, 0x88F7, 0x27EF, 0x88F8, 0x88F8, 0x10A0, 0x88F9, 0x88F9, 0x109F, + 0x88FA, 0x88FA, 0x27F3, 0x88FB, 0x88FB, 0x27F8, 0x88FC, 0x88FC, 0x27F6, + 0x88FD, 0x88FD, 0x10A1, 0x88FE, 0x88FE, 0x27F4, 0x88FF, 0x88FF, 0x4776, + 0x8900, 0x8900, 0x42FA, 0x8901, 0x8901, 0x22E1, 0x8902, 0x8902, 0x109D, + 0x8905, 0x8905, 0x2A30, 0x8906, 0x8906, 0x2A37, 0x8907, 0x8907, 0x120D, + 0x8909, 0x8909, 0x2A3B, 0x890A, 0x890A, 0x1211, 0x890B, 0x890B, 0x2A33, + 0x890C, 0x890C, 0x2A31, 0x890E, 0x890E, 0x2A3A, 0x8910, 0x8910, 0x120C, + 0x8911, 0x8911, 0x2A39, 0x8912, 0x8913, 0x120E, 0x8914, 0x8914, 0x2A32, + 0x8915, 0x8915, 0x1210, 0x8916, 0x8916, 0x2A38, 0x8917, 0x8919, 0x2A34, + 0x891A, 0x891A, 0x10A3, 0x891E, 0x891E, 0x2C77, 0x891F, 0x891F, 0x2C83, + 0x8921, 0x8921, 0x134A, 0x8922, 0x8922, 0x2C7E, 0x8923, 0x8923, 0x2C80, + 0x8924, 0x8924, 0x4777, 0x8925, 0x8925, 0x1348, 0x8926, 0x8926, 0x2C78, + 0x8927, 0x8927, 0x2C7C, 0x8929, 0x8929, 0x2C7F, 0x892A, 0x892A, 0x1346, + 0x892B, 0x892B, 0x1349, 0x892C, 0x892C, 0x2C82, 0x892D, 0x892E, 0x2C7A, + 0x892F, 0x892F, 0x2C81, 0x8930, 0x8930, 0x2C79, 0x8931, 0x8931, 0x2C7D, + 0x8932, 0x8932, 0x1347, 0x8933, 0x8933, 0x2E4F, 0x8935, 0x8935, 0x2E4E, + 0x8936, 0x8936, 0x1472, 0x8937, 0x8937, 0x2E54, 0x8938, 0x8938, 0x1474, + 0x893B, 0x893B, 0x1471, 0x893C, 0x893C, 0x2E50, 0x893D, 0x893D, 0x1475, + 0x893E, 0x893E, 0x2E51, 0x8941, 0x8941, 0x2E52, 0x8942, 0x8942, 0x2E55, + 0x8943, 0x8943, 0x3E16, 0x8944, 0x8944, 0x1473, 0x8946, 0x8946, 0x2FC8, + 0x8947, 0x8947, 0x43E3, 0x8949, 0x8949, 0x2FCB, 0x894B, 0x894B, 0x2FC5, + 0x894C, 0x894C, 0x2FC7, 0x894D, 0x894D, 0x3B94, 0x894F, 0x894F, 0x2FC6, + 0x8950, 0x8951, 0x2FC9, 0x8952, 0x8952, 0x2E53, 0x8953, 0x8953, 0x2FC4, + 0x8954, 0x8954, 0x3B96, 0x8956, 0x8956, 0x15C2, 0x8957, 0x8957, 0x3118, + 0x8958, 0x8958, 0x311B, 0x8959, 0x8959, 0x311D, 0x895A, 0x895B, 0x3116, + 0x895C, 0x895C, 0x311A, 0x895D, 0x895D, 0x311C, 0x895E, 0x895E, 0x15C3, + 0x895F, 0x895F, 0x15C1, 0x8960, 0x8960, 0x15C0, 0x8961, 0x8961, 0x3119, + 0x8962, 0x8962, 0x3115, 0x8963, 0x8963, 0x3231, 0x8964, 0x8964, 0x1641, + 0x8965, 0x8965, 0x3B93, 0x8966, 0x8966, 0x3232, 0x8969, 0x8969, 0x330D, + 0x896A, 0x896A, 0x168C, 0x896B, 0x896B, 0x330F, 0x896C, 0x896C, 0x168D, + 0x896D, 0x896D, 0x330C, 0x896E, 0x896E, 0x330E, 0x896F, 0x896F, 0x16D6, + 0x8971, 0x8971, 0x33B2, 0x8972, 0x8972, 0x16D5, 0x8973, 0x8973, 0x343B, + 0x8974, 0x8974, 0x343A, 0x8976, 0x8976, 0x3439, 0x8977, 0x8977, 0x3DEA, + 0x8979, 0x897A, 0x34E2, 0x897B, 0x897B, 0x34E5, 0x897C, 0x897C, 0x34E4, + 0x897E, 0x897E, 0x1819, 0x897F, 0x897F, 0x0413, 0x8980, 0x8980, 0x4708, + 0x8981, 0x8981, 0x0805, 0x8982, 0x8982, 0x2063, 0x8983, 0x8983, 0x0D55, + 0x8985, 0x8985, 0x2580, 0x8986, 0x8986, 0x1527, 0x8987, 0x8987, 0x3822, + 0x8988, 0x8988, 0x311E, 0x8989, 0x8989, 0x3FE9, 0x898A, 0x898A, 0x3823, + 0x898B, 0x898B, 0x0508, 0x898F, 0x898F, 0x0B9D, 0x8991, 0x8991, 0x4778, + 0x8993, 0x8993, 0x0B9C, 0x8994, 0x8994, 0x3FE0, 0x8995, 0x8995, 0x22E3, + 0x8996, 0x8996, 0x0D56, 0x8997, 0x8997, 0x22E5, 0x8998, 0x8998, 0x22E4, + 0x899B, 0x899B, 0x2581, 0x899C, 0x899C, 0x0F05, 0x899D, 0x899D, 0x27FC, + 0x899E, 0x899E, 0x27FF, 0x899F, 0x899F, 0x27FE, 0x89A1, 0x89A1, 0x27FD, + 0x89A2, 0x89A2, 0x2A3C, 0x89A3, 0x89A3, 0x2A3E, 0x89A4, 0x89A4, 0x2A3D, + 0x89A5, 0x89A5, 0x3D93, 0x89A6, 0x89A6, 0x134C, 0x89A7, 0x89A7, 0x3826, + 0x89A9, 0x89A9, 0x3825, 0x89AA, 0x89AA, 0x134B, 0x89AC, 0x89AC, 0x1476, + 0x89AD, 0x89AD, 0x2E56, 0x89AE, 0x89AE, 0x2E58, 0x89AF, 0x89AF, 0x2E57, + 0x89B2, 0x89B2, 0x1528, 0x89B6, 0x89B6, 0x3120, 0x89B7, 0x89B7, 0x311F, + 0x89B9, 0x89B9, 0x3233, 0x89BA, 0x89BA, 0x1642, 0x89BC, 0x89BC, 0x3827, + 0x89BD, 0x89BD, 0x168E, 0x89BE, 0x89BE, 0x33B4, 0x89BF, 0x89BF, 0x33B3, + 0x89C0, 0x89C0, 0x1748, 0x89C1, 0x89C1, 0x4503, 0x89C6, 0x89C6, 0x4566, + 0x89D2, 0x89D2, 0x0509, 0x89D3, 0x89D3, 0x1C03, 0x89D4, 0x89D4, 0x0806, + 0x89D5, 0x89D5, 0x2066, 0x89D6, 0x89D6, 0x2064, 0x89D9, 0x89D9, 0x2065, + 0x89DA, 0x89DB, 0x22E7, 0x89DC, 0x89DC, 0x2588, 0x89DD, 0x89DD, 0x22E6, + 0x89DF, 0x89DF, 0x2582, 0x89E0, 0x89E0, 0x2586, 0x89E1, 0x89E1, 0x2585, + 0x89E2, 0x89E2, 0x2587, 0x89E3, 0x89E3, 0x0F06, 0x89E4, 0x89E4, 0x2584, + 0x89E5, 0x89E5, 0x2583, 0x89E6, 0x89E6, 0x2589, 0x89E7, 0x89E7, 0x3829, + 0x89E8, 0x89E8, 0x2802, 0x89E9, 0x89E9, 0x2800, 0x89EB, 0x89EB, 0x2801, + 0x89EC, 0x89EC, 0x2A41, 0x89ED, 0x89ED, 0x2A3F, 0x89F0, 0x89F0, 0x2A40, + 0x89F1, 0x89F1, 0x2C84, 0x89F2, 0x89F3, 0x2E59, 0x89F4, 0x89F4, 0x1529, + 0x89F6, 0x89F6, 0x3121, 0x89F7, 0x89F7, 0x3234, 0x89F8, 0x89F8, 0x1643, + 0x89FA, 0x89FA, 0x3310, 0x89FB, 0x89FB, 0x33B5, 0x89FC, 0x89FC, 0x16D7, + 0x89FE, 0x89FE, 0x343C, 0x89FF, 0x89FF, 0x34E6, 0x8A00, 0x8A00, 0x050A, + 0x8A02, 0x8A03, 0x0808, 0x8A04, 0x8A04, 0x1C04, 0x8A07, 0x8A07, 0x1C05, + 0x8A08, 0x8A08, 0x0807, 0x8A0A, 0x8A0A, 0x09C3, 0x8A0C, 0x8A0C, 0x09C1, + 0x8A0E, 0x8A0E, 0x09C0, 0x8A0F, 0x8A0F, 0x09C7, 0x8A10, 0x8A10, 0x09BF, + 0x8A11, 0x8A11, 0x09C8, 0x8A12, 0x8A12, 0x1E08, 0x8A13, 0x8A13, 0x09C5, + 0x8A15, 0x8A15, 0x09C2, 0x8A16, 0x8A16, 0x09C6, 0x8A17, 0x8A17, 0x09C4, + 0x8A18, 0x8A18, 0x09BE, 0x8A1B, 0x8A1B, 0x0BA5, 0x8A1C, 0x8A1C, 0x3BA3, + 0x8A1D, 0x8A1D, 0x0B9F, 0x8A1E, 0x8A1E, 0x206A, 0x8A1F, 0x8A1F, 0x0BA4, + 0x8A22, 0x8A22, 0x0BA6, 0x8A23, 0x8A23, 0x0BA0, 0x8A25, 0x8A25, 0x0BA1, + 0x8A27, 0x8A27, 0x2068, 0x8A29, 0x8A29, 0x43E5, 0x8A2A, 0x8A2A, 0x0B9E, + 0x8A2B, 0x8A2B, 0x3BD1, 0x8A2C, 0x8A2C, 0x2069, 0x8A2D, 0x8A2D, 0x0BA3, + 0x8A30, 0x8A30, 0x2067, 0x8A31, 0x8A31, 0x0BA2, 0x8A34, 0x8A34, 0x0D61, + 0x8A36, 0x8A36, 0x0D63, 0x8A38, 0x8A38, 0x477A, 0x8A39, 0x8A39, 0x22EB, + 0x8A3A, 0x8A3A, 0x0D62, 0x8A3B, 0x8A3B, 0x0D57, 0x8A3C, 0x8A3C, 0x0D5B, + 0x8A3D, 0x8A3D, 0x3BA2, 0x8A3E, 0x8A3E, 0x0F19, 0x8A3F, 0x8A3F, 0x258E, + 0x8A40, 0x8A40, 0x22ED, 0x8A41, 0x8A41, 0x0D5C, 0x8A44, 0x8A45, 0x22F0, + 0x8A46, 0x8A46, 0x0D60, 0x8A48, 0x8A48, 0x22F3, 0x8A49, 0x8A49, 0x3FF0, + 0x8A4A, 0x8A4A, 0x22F5, 0x8A4C, 0x8A4C, 0x22F6, 0x8A4D, 0x8A4D, 0x22EA, + 0x8A4E, 0x8A4E, 0x22E9, 0x8A4F, 0x8A4F, 0x22F7, 0x8A50, 0x8A50, 0x0D5F, + 0x8A51, 0x8A51, 0x22F4, 0x8A52, 0x8A52, 0x22F2, 0x8A54, 0x8A54, 0x0D5D, + 0x8A55, 0x8A55, 0x0D59, 0x8A56, 0x8A56, 0x0D64, 0x8A57, 0x8A58, 0x22EE, + 0x8A59, 0x8A59, 0x22EC, 0x8A5B, 0x8A5B, 0x0D5E, 0x8A5E, 0x8A5E, 0x0D5A, + 0x8A60, 0x8A60, 0x0D58, 0x8A61, 0x8A61, 0x258D, 0x8A62, 0x8A62, 0x0F14, + 0x8A63, 0x8A63, 0x0F0F, 0x8A66, 0x8A66, 0x0F0A, 0x8A67, 0x8A67, 0x3F8E, + 0x8A68, 0x8A68, 0x0F1A, 0x8A69, 0x8A69, 0x0F0B, 0x8A6B, 0x8A6B, 0x0F07, + 0x8A6C, 0x8A6C, 0x0F16, 0x8A6D, 0x8A6D, 0x0F13, 0x8A6E, 0x8A6E, 0x0F15, + 0x8A70, 0x8A70, 0x0F0C, 0x8A71, 0x8A71, 0x0F11, 0x8A72, 0x8A73, 0x0F08, + 0x8A74, 0x8A74, 0x2595, 0x8A75, 0x8A75, 0x2592, 0x8A76, 0x8A76, 0x258A, + 0x8A77, 0x8A77, 0x258F, 0x8A79, 0x8A79, 0x0F17, 0x8A7A, 0x8A7A, 0x2596, + 0x8A7B, 0x8A7B, 0x0F18, 0x8A7C, 0x8A7C, 0x0F0E, 0x8A7E, 0x8A7E, 0x3FA5, + 0x8A7F, 0x8A7F, 0x258C, 0x8A81, 0x8A81, 0x2594, 0x8A82, 0x8A82, 0x2590, + 0x8A83, 0x8A83, 0x2593, 0x8A84, 0x8A84, 0x2591, 0x8A85, 0x8A85, 0x0F12, + 0x8A86, 0x8A86, 0x258B, 0x8A87, 0x8A87, 0x0F0D, 0x8A8B, 0x8A8B, 0x2805, + 0x8A8C, 0x8A8C, 0x10A6, 0x8A8D, 0x8A8D, 0x10A9, 0x8A8F, 0x8A8F, 0x2807, + 0x8A90, 0x8A90, 0x382F, 0x8A91, 0x8A91, 0x10B1, 0x8A92, 0x8A92, 0x2806, + 0x8A93, 0x8A93, 0x10AB, 0x8A94, 0x8A94, 0x477B, 0x8A95, 0x8A95, 0x1216, + 0x8A96, 0x8A96, 0x2808, 0x8A98, 0x8A98, 0x10B0, 0x8A99, 0x8A99, 0x2804, + 0x8A9A, 0x8A9A, 0x10B2, 0x8A9C, 0x8A9C, 0x382C, 0x8A9E, 0x8A9E, 0x10A7, + 0x8AA0, 0x8AA0, 0x0F10, 0x8AA1, 0x8AA1, 0x10AA, 0x8AA3, 0x8AA3, 0x10A8, + 0x8AA4, 0x8AA4, 0x10AC, 0x8AA5, 0x8AA5, 0x10AE, 0x8AA6, 0x8AA6, 0x10A5, + 0x8AA7, 0x8AA7, 0x10B3, 0x8AA8, 0x8AA8, 0x10AF, 0x8AA9, 0x8AA9, 0x383D, + 0x8AAA, 0x8AAA, 0x10AD, 0x8AAB, 0x8AAB, 0x2803, 0x8AAF, 0x8AAF, 0x3841, + 0x8AB0, 0x8AB0, 0x121D, 0x8AB2, 0x8AB2, 0x1219, 0x8AB4, 0x8AB4, 0x477C, + 0x8AB6, 0x8AB6, 0x1220, 0x8AB8, 0x8AB8, 0x2A44, 0x8AB9, 0x8AB9, 0x1221, + 0x8ABA, 0x8ABA, 0x2A50, 0x8ABB, 0x8ABB, 0x2A49, 0x8ABC, 0x8ABC, 0x1212, + 0x8ABD, 0x8ABD, 0x2A51, 0x8ABE, 0x8ABE, 0x2A4B, 0x8ABF, 0x8ABF, 0x121C, + 0x8AC0, 0x8AC0, 0x2A4C, 0x8AC2, 0x8AC2, 0x121B, 0x8AC3, 0x8AC3, 0x2A4F, + 0x8AC4, 0x8AC4, 0x1215, 0x8AC5, 0x8AC5, 0x2A4D, 0x8AC6, 0x8AC6, 0x2A43, + 0x8AC7, 0x8AC7, 0x1214, 0x8AC8, 0x8AC8, 0x2C8F, 0x8AC9, 0x8AC9, 0x121A, + 0x8ACB, 0x8ACB, 0x1217, 0x8ACD, 0x8ACD, 0x121F, 0x8ACF, 0x8ACF, 0x2A42, + 0x8AD1, 0x8AD1, 0x2A46, 0x8AD2, 0x8AD2, 0x1213, 0x8AD3, 0x8AD3, 0x2A45, + 0x8AD4, 0x8AD5, 0x2A47, 0x8AD6, 0x8AD6, 0x121E, 0x8AD7, 0x8AD7, 0x2A4A, + 0x8AD8, 0x8AD8, 0x2A4E, 0x8AD9, 0x8AD9, 0x2A52, 0x8ADA, 0x8ADA, 0x39C2, + 0x8ADB, 0x8ADB, 0x1222, 0x8ADC, 0x8ADC, 0x1352, 0x8ADD, 0x8ADD, 0x2C8A, + 0x8ADE, 0x8ADE, 0x2C90, 0x8ADF, 0x8ADF, 0x2C8D, 0x8AE0, 0x8AE0, 0x2C85, + 0x8AE1, 0x8AE1, 0x2C91, 0x8AE2, 0x8AE2, 0x2C86, 0x8AE4, 0x8AE4, 0x2C8C, + 0x8AE6, 0x8AE6, 0x134D, 0x8AE7, 0x8AE7, 0x1353, 0x8AE8, 0x8AE8, 0x2C92, + 0x8AEA, 0x8AEA, 0x3DD9, 0x8AEB, 0x8AEB, 0x134F, 0x8AED, 0x8AED, 0x1359, + 0x8AEE, 0x8AEE, 0x1354, 0x8AEF, 0x8AEF, 0x2C94, 0x8AF0, 0x8AF0, 0x2C8E, + 0x8AF1, 0x8AF1, 0x1350, 0x8AF2, 0x8AF2, 0x2C87, 0x8AF3, 0x8AF3, 0x135A, + 0x8AF4, 0x8AF5, 0x2C88, 0x8AF6, 0x8AF6, 0x135B, 0x8AF7, 0x8AF7, 0x1358, + 0x8AF8, 0x8AF8, 0x1218, 0x8AFA, 0x8AFA, 0x134E, 0x8AFB, 0x8AFB, 0x2C95, + 0x8AFC, 0x8AFC, 0x135C, 0x8AFE, 0x8AFE, 0x1355, 0x8AFF, 0x8AFF, 0x2C93, + 0x8B00, 0x8B00, 0x1351, 0x8B01, 0x8B02, 0x1356, 0x8B04, 0x8B04, 0x147E, + 0x8B05, 0x8B05, 0x2E5F, 0x8B06, 0x8B06, 0x2E68, 0x8B07, 0x8B07, 0x2E65, + 0x8B08, 0x8B08, 0x2E67, 0x8B0A, 0x8B0A, 0x147B, 0x8B0B, 0x8B0B, 0x2E60, + 0x8B0C, 0x8B0C, 0x3836, 0x8B0D, 0x8B0D, 0x2E66, 0x8B0E, 0x8B0E, 0x1477, + 0x8B0F, 0x8B0F, 0x2E62, 0x8B10, 0x8B10, 0x147F, 0x8B11, 0x8B11, 0x2E5E, + 0x8B12, 0x8B12, 0x2E63, 0x8B13, 0x8B13, 0x2E6A, 0x8B14, 0x8B14, 0x2C8B, + 0x8B15, 0x8B15, 0x2E64, 0x8B16, 0x8B16, 0x2E5D, 0x8B17, 0x8B17, 0x1478, + 0x8B18, 0x8B18, 0x2E5C, 0x8B19, 0x8B19, 0x1479, 0x8B1A, 0x8B1A, 0x2E6B, + 0x8B1B, 0x8B1B, 0x147A, 0x8B1C, 0x8B1C, 0x2E69, 0x8B1D, 0x8B1D, 0x147D, + 0x8B1E, 0x8B1E, 0x2E5B, 0x8B1F, 0x8B1F, 0x3837, 0x8B20, 0x8B20, 0x147C, + 0x8B22, 0x8B22, 0x2E61, 0x8B23, 0x8B23, 0x2FCE, 0x8B24, 0x8B24, 0x2FDC, + 0x8B25, 0x8B25, 0x2FD7, 0x8B26, 0x8B26, 0x2FD9, 0x8B27, 0x8B27, 0x2FCD, + 0x8B28, 0x8B28, 0x152A, 0x8B2A, 0x8B2A, 0x2FCC, 0x8B2B, 0x8B2B, 0x152D, + 0x8B2C, 0x8B2C, 0x152C, 0x8B2D, 0x8B2D, 0x3F99, 0x8B2E, 0x8B2E, 0x2FDB, + 0x8B2F, 0x8B2F, 0x2FD3, 0x8B30, 0x8B30, 0x2FD0, 0x8B31, 0x8B31, 0x2FD6, + 0x8B33, 0x8B33, 0x2FCF, 0x8B35, 0x8B35, 0x2FD1, 0x8B36, 0x8B36, 0x2FDA, + 0x8B37, 0x8B37, 0x2FD8, 0x8B39, 0x8B39, 0x152B, 0x8B3A, 0x8B3A, 0x2FDF, + 0x8B3B, 0x8B3B, 0x2FDD, 0x8B3C, 0x8B3C, 0x2FD4, 0x8B3D, 0x8B3D, 0x2FDE, + 0x8B3E, 0x8B3E, 0x2FD5, 0x8B3F, 0x8B3F, 0x383A, 0x8B40, 0x8B40, 0x3125, + 0x8B41, 0x8B41, 0x15C4, 0x8B42, 0x8B42, 0x312C, 0x8B43, 0x8B43, 0x3FF2, + 0x8B45, 0x8B45, 0x3313, 0x8B46, 0x8B46, 0x15CB, 0x8B47, 0x8B47, 0x2FD2, + 0x8B48, 0x8B48, 0x3123, 0x8B49, 0x8B49, 0x15C7, 0x8B4A, 0x8B4A, 0x3124, + 0x8B4B, 0x8B4B, 0x3129, 0x8B4C, 0x8B4D, 0x383B, 0x8B4E, 0x8B4F, 0x15C9, + 0x8B50, 0x8B50, 0x3122, 0x8B51, 0x8B51, 0x312B, 0x8B52, 0x8B52, 0x312D, + 0x8B53, 0x8B53, 0x3126, 0x8B54, 0x8B54, 0x3128, 0x8B55, 0x8B55, 0x312A, + 0x8B56, 0x8B56, 0x3127, 0x8B57, 0x8B57, 0x312E, 0x8B58, 0x8B58, 0x15C6, + 0x8B59, 0x8B59, 0x15CC, 0x8B5A, 0x8B5A, 0x15C8, 0x8B5C, 0x8B5C, 0x15C5, + 0x8B5D, 0x8B5D, 0x3237, 0x8B5E, 0x8B5E, 0x3DB8, 0x8B5F, 0x8B5F, 0x1648, + 0x8B60, 0x8B60, 0x3235, 0x8B62, 0x8B62, 0x3DD4, 0x8B63, 0x8B63, 0x3239, + 0x8B65, 0x8B65, 0x323A, 0x8B66, 0x8B66, 0x1646, 0x8B67, 0x8B67, 0x323B, + 0x8B68, 0x8B68, 0x3238, 0x8B69, 0x8B69, 0x3BF7, 0x8B6A, 0x8B6A, 0x3236, + 0x8B6B, 0x8B6B, 0x1649, 0x8B6C, 0x8B6C, 0x1645, 0x8B6D, 0x8B6D, 0x323C, + 0x8B6F, 0x8B6F, 0x1647, 0x8B70, 0x8B70, 0x1644, 0x8B74, 0x8B74, 0x168F, + 0x8B77, 0x8B77, 0x1690, 0x8B78, 0x8B78, 0x3312, 0x8B79, 0x8B79, 0x3311, + 0x8B7A, 0x8B7B, 0x3314, 0x8B7D, 0x8B7D, 0x1691, 0x8B7E, 0x8B7E, 0x33B6, + 0x8B7F, 0x8B7F, 0x33BB, 0x8B80, 0x8B80, 0x16D8, 0x8B81, 0x8B81, 0x3D8D, + 0x8B82, 0x8B82, 0x33B8, 0x8B84, 0x8B84, 0x33B7, 0x8B85, 0x8B85, 0x33BA, + 0x8B86, 0x8B86, 0x33B9, 0x8B88, 0x8B88, 0x3440, 0x8B8A, 0x8B8A, 0x170A, + 0x8B8B, 0x8B8B, 0x343F, 0x8B8C, 0x8B8C, 0x343D, 0x8B8E, 0x8B8E, 0x343E, + 0x8B90, 0x8B90, 0x383F, 0x8B92, 0x8B92, 0x172C, 0x8B93, 0x8B93, 0x172B, + 0x8B94, 0x8B95, 0x349C, 0x8B96, 0x8B96, 0x172D, 0x8B98, 0x8B99, 0x34E7, + 0x8B9A, 0x8B9A, 0x1754, 0x8B9B, 0x8B9B, 0x3840, 0x8B9C, 0x8B9C, 0x175A, + 0x8B9E, 0x8B9E, 0x3522, 0x8B9F, 0x8B9F, 0x353F, 0x8BA0, 0x8BA0, 0x4505, + 0x8BBE, 0x8BBE, 0x4567, 0x8BE2, 0x8BE2, 0x4568, 0x8C37, 0x8C37, 0x050B, + 0x8C39, 0x8C39, 0x206B, 0x8C3B, 0x8C3B, 0x206C, 0x8C3C, 0x8C3C, 0x2597, + 0x8C3D, 0x8C3D, 0x2809, 0x8C3E, 0x8C3E, 0x2A53, 0x8C3F, 0x8C3F, 0x1481, + 0x8C41, 0x8C41, 0x1480, 0x8C42, 0x8C42, 0x2FE0, 0x8C43, 0x8C43, 0x312F, + 0x8C45, 0x8C45, 0x3441, 0x8C46, 0x8C46, 0x050C, 0x8C47, 0x8C47, 0x1E09, + 0x8C48, 0x8C48, 0x09C9, 0x8C49, 0x8C49, 0x0BA7, 0x8C4A, 0x8C4A, 0x2599, + 0x8C4B, 0x8C4B, 0x2598, 0x8C4C, 0x8C4C, 0x1223, 0x8C4D, 0x8C4D, 0x2A54, + 0x8C4E, 0x8C4E, 0x1224, 0x8C4F, 0x8C4F, 0x2E6C, 0x8C50, 0x8C50, 0x152E, + 0x8C51, 0x8C51, 0x477D, 0x8C54, 0x8C54, 0x1763, 0x8C55, 0x8C55, 0x050D, + 0x8C56, 0x8C56, 0x1A48, 0x8C57, 0x8C57, 0x1E0A, 0x8C5A, 0x8C5A, 0x0BA8, + 0x8C5C, 0x8C5D, 0x206D, 0x8C5F, 0x8C5F, 0x22F8, 0x8C61, 0x8C61, 0x0D65, + 0x8C62, 0x8C62, 0x0F1B, 0x8C64, 0x8C64, 0x259B, 0x8C65, 0x8C65, 0x259A, + 0x8C66, 0x8C66, 0x259C, 0x8C68, 0x8C69, 0x280A, 0x8C6A, 0x8C6A, 0x10B4, + 0x8C6B, 0x8C6B, 0x135D, 0x8C6C, 0x8C6C, 0x1225, 0x8C6D, 0x8C6D, 0x135E, + 0x8C6F, 0x8C6F, 0x2E70, 0x8C70, 0x8C70, 0x2E6D, 0x8C71, 0x8C71, 0x2E6F, + 0x8C72, 0x8C72, 0x2E6E, 0x8C73, 0x8C73, 0x1482, 0x8C75, 0x8C75, 0x2FE1, + 0x8C76, 0x8C76, 0x3131, 0x8C77, 0x8C77, 0x3130, 0x8C78, 0x8C78, 0x18E7, + 0x8C79, 0x8C79, 0x09CB, 0x8C7A, 0x8C7A, 0x09CA, 0x8C7B, 0x8C7B, 0x1E0B, + 0x8C7D, 0x8C7D, 0x206F, 0x8C80, 0x8C80, 0x22FA, 0x8C81, 0x8C81, 0x22F9, + 0x8C82, 0x8C82, 0x0D66, 0x8C84, 0x8C85, 0x259E, 0x8C86, 0x8C86, 0x259D, + 0x8C89, 0x8C89, 0x0F1D, 0x8C8A, 0x8C8A, 0x0F1C, 0x8C8C, 0x8C8C, 0x10B6, + 0x8C8D, 0x8C8D, 0x10B5, 0x8C8F, 0x8C8F, 0x2A55, 0x8C90, 0x8C90, 0x2C98, + 0x8C91, 0x8C92, 0x2C96, 0x8C93, 0x8C93, 0x135F, 0x8C94, 0x8C94, 0x2E72, + 0x8C95, 0x8C95, 0x2E71, 0x8C97, 0x8C97, 0x2FE4, 0x8C98, 0x8C98, 0x2FE3, + 0x8C99, 0x8C99, 0x2FE2, 0x8C9A, 0x8C9A, 0x3132, 0x8C9B, 0x8C9B, 0x3845, + 0x8C9C, 0x8C9C, 0x3523, 0x8C9D, 0x8C9D, 0x050E, 0x8C9E, 0x8C9E, 0x080A, + 0x8C9F, 0x8C9F, 0x3BAD, 0x8CA0, 0x8CA0, 0x080B, 0x8CA1, 0x8CA2, 0x09CC, + 0x8CA3, 0x8CA3, 0x1E0D, 0x8CA4, 0x8CA4, 0x1E0C, 0x8CA5, 0x8CA5, 0x2070, + 0x8CA7, 0x8CA7, 0x0BAE, 0x8CA8, 0x8CA8, 0x0BAC, 0x8CA9, 0x8CA9, 0x0BA9, + 0x8CAA, 0x8CAA, 0x0BAD, 0x8CAB, 0x8CAB, 0x0BAB, 0x8CAC, 0x8CAC, 0x0BAA, + 0x8CAD, 0x8CAD, 0x3FF1, 0x8CAF, 0x8CAF, 0x0D67, 0x8CB0, 0x8CB0, 0x22FD, + 0x8CB2, 0x8CB2, 0x0F22, 0x8CB3, 0x8CB3, 0x0D69, 0x8CB4, 0x8CB4, 0x0D6E, + 0x8CB5, 0x8CB5, 0x22FF, 0x8CB6, 0x8CB6, 0x0D70, 0x8CB7, 0x8CB7, 0x0D6F, + 0x8CB8, 0x8CB8, 0x0D72, 0x8CB9, 0x8CB9, 0x22FE, 0x8CBA, 0x8CBA, 0x22FB, + 0x8CBB, 0x8CBB, 0x0D6C, 0x8CBC, 0x8CBC, 0x0D68, 0x8CBD, 0x8CBD, 0x0D6A, + 0x8CBE, 0x8CBE, 0x22FC, 0x8CBF, 0x8CBF, 0x0D71, 0x8CC0, 0x8CC0, 0x0D6D, + 0x8CC1, 0x8CC1, 0x0D6B, 0x8CC2, 0x8CC2, 0x0F24, 0x8CC3, 0x8CC3, 0x0F23, + 0x8CC4, 0x8CC4, 0x0F21, 0x8CC5, 0x8CC5, 0x0F25, 0x8CC7, 0x8CC8, 0x0F1F, + 0x8CCA, 0x8CCA, 0x0F1E, 0x8CCC, 0x8CCC, 0x25A0, 0x8CCD, 0x8CCD, 0x3E99, + 0x8CCF, 0x8CCF, 0x280D, 0x8CD1, 0x8CD2, 0x10B8, 0x8CD3, 0x8CD3, 0x10B7, + 0x8CD4, 0x8CD4, 0x477E, 0x8CD5, 0x8CD5, 0x280C, 0x8CD6, 0x8CD6, 0x384B, + 0x8CD7, 0x8CD7, 0x280E, 0x8CD9, 0x8CD9, 0x2A58, 0x8CDA, 0x8CDA, 0x2A5A, + 0x8CDB, 0x8CDB, 0x3851, 0x8CDC, 0x8CDC, 0x122E, 0x8CDD, 0x8CDD, 0x2A5B, + 0x8CDE, 0x8CDE, 0x1227, 0x8CDF, 0x8CDF, 0x2A57, 0x8CE0, 0x8CE0, 0x1226, + 0x8CE1, 0x8CE1, 0x1230, 0x8CE2, 0x8CE3, 0x122C, 0x8CE4, 0x8CE4, 0x1229, + 0x8CE5, 0x8CE5, 0x2A56, 0x8CE6, 0x8CE6, 0x1228, 0x8CE7, 0x8CE7, 0x2A5C, + 0x8CE8, 0x8CE8, 0x2A59, 0x8CE9, 0x8CE9, 0x3BAE, 0x8CEA, 0x8CEA, 0x122F, + 0x8CEB, 0x8CEB, 0x3F9C, 0x8CEC, 0x8CED, 0x122A, 0x8CEE, 0x8CEE, 0x2C9A, + 0x8CF0, 0x8CF0, 0x2C9C, 0x8CF1, 0x8CF1, 0x2C9B, 0x8CF2, 0x8CF2, 0x477F, + 0x8CF3, 0x8CF3, 0x2C9D, 0x8CF4, 0x8CF4, 0x1360, 0x8CF5, 0x8CF5, 0x2C99, + 0x8CF7, 0x8CF7, 0x3FB1, 0x8CF8, 0x8CF8, 0x1486, 0x8CF9, 0x8CF9, 0x2E73, + 0x8CFA, 0x8CFA, 0x1483, 0x8CFB, 0x8CFB, 0x1487, 0x8CFC, 0x8CFC, 0x1485, + 0x8CFD, 0x8CFD, 0x1484, 0x8CFE, 0x8CFE, 0x2FE5, 0x8D00, 0x8D00, 0x2FE8, + 0x8D02, 0x8D02, 0x2FE7, 0x8D03, 0x8D03, 0x384F, 0x8D04, 0x8D04, 0x2FE6, + 0x8D05, 0x8D05, 0x152F, 0x8D06, 0x8D07, 0x3133, 0x8D08, 0x8D08, 0x15CD, + 0x8D09, 0x8D09, 0x3135, 0x8D0A, 0x8D0A, 0x15CE, 0x8D0B, 0x8D0B, 0x4573, + 0x8D0C, 0x8D0C, 0x3F96, 0x8D0D, 0x8D0D, 0x164B, 0x8D0F, 0x8D0F, 0x164A, + 0x8D10, 0x8D10, 0x3316, 0x8D11, 0x8D11, 0x3853, 0x8D12, 0x8D12, 0x384E, + 0x8D13, 0x8D13, 0x1692, 0x8D14, 0x8D14, 0x3317, 0x8D15, 0x8D15, 0x33BC, + 0x8D16, 0x8D17, 0x16D9, 0x8D18, 0x8D18, 0x3E6F, 0x8D19, 0x8D19, 0x3442, + 0x8D1B, 0x8D1B, 0x172F, 0x8D1C, 0x8D1C, 0x4780, 0x8D1D, 0x8D1D, 0x4506, + 0x8D64, 0x8D64, 0x050F, 0x8D66, 0x8D66, 0x0BB0, 0x8D67, 0x8D67, 0x0BAF, + 0x8D68, 0x8D69, 0x25A1, 0x8D6B, 0x8D6B, 0x10BA, 0x8D6C, 0x8D6C, 0x2C9E, + 0x8D6D, 0x8D6D, 0x1231, 0x8D6E, 0x8D6E, 0x2C9F, 0x8D6F, 0x8D6F, 0x2E74, + 0x8D70, 0x8D70, 0x0510, 0x8D72, 0x8D72, 0x1C06, 0x8D73, 0x8D73, 0x080D, + 0x8D74, 0x8D74, 0x080C, 0x8D76, 0x8D76, 0x1E0E, 0x8D77, 0x8D77, 0x09CE, + 0x8D78, 0x8D78, 0x1E0F, 0x8D79, 0x8D79, 0x2073, 0x8D7A, 0x8D7A, 0x39E1, + 0x8D7B, 0x8D7B, 0x2072, 0x8D7D, 0x8D7D, 0x2071, 0x8D80, 0x8D80, 0x2301, + 0x8D81, 0x8D81, 0x0D75, 0x8D82, 0x8D82, 0x3F69, 0x8D84, 0x8D84, 0x2300, + 0x8D85, 0x8D85, 0x0D74, 0x8D89, 0x8D89, 0x2302, 0x8D8A, 0x8D8A, 0x0D73, + 0x8D8C, 0x8D8C, 0x25A4, 0x8D8D, 0x8D8D, 0x25A7, 0x8D8E, 0x8D8F, 0x25A5, + 0x8D90, 0x8D90, 0x25AA, 0x8D91, 0x8D91, 0x25A3, 0x8D92, 0x8D92, 0x25AB, + 0x8D93, 0x8D94, 0x25A8, 0x8D95, 0x8D95, 0x10BC, 0x8D96, 0x8D96, 0x280F, + 0x8D99, 0x8D99, 0x10BB, 0x8D9B, 0x8D9B, 0x2A60, 0x8D9C, 0x8D9C, 0x2A5E, + 0x8D9F, 0x8D9F, 0x1232, 0x8DA0, 0x8DA0, 0x2A5D, 0x8DA1, 0x8DA1, 0x2A5F, + 0x8DA3, 0x8DA3, 0x1233, 0x8DA5, 0x8DA5, 0x2CA0, 0x8DA6, 0x8DA6, 0x3FF7, + 0x8DA7, 0x8DA7, 0x2CA1, 0x8DA8, 0x8DA8, 0x1488, 0x8DA9, 0x8DA9, 0x3856, + 0x8DAA, 0x8DAA, 0x3137, 0x8DAB, 0x8DAB, 0x3139, 0x8DAC, 0x8DAC, 0x3136, + 0x8DAD, 0x8DAD, 0x3138, 0x8DAE, 0x8DAE, 0x323D, 0x8DAF, 0x8DAF, 0x3318, + 0x8DB2, 0x8DB2, 0x3509, 0x8DB3, 0x8DB3, 0x0511, 0x8DB4, 0x8DB4, 0x080E, + 0x8DB5, 0x8DB5, 0x1E10, 0x8DB6, 0x8DB6, 0x1E12, 0x8DB7, 0x8DB7, 0x1E11, + 0x8DB9, 0x8DB9, 0x2076, 0x8DBA, 0x8DBA, 0x0BB2, 0x8DBC, 0x8DBC, 0x2074, + 0x8DBE, 0x8DBE, 0x0BB1, 0x8DBF, 0x8DBF, 0x2077, 0x8DC0, 0x8DC0, 0x436A, + 0x8DC1, 0x8DC1, 0x2078, 0x8DC2, 0x8DC2, 0x2075, 0x8DC3, 0x8DC3, 0x4782, + 0x8DC5, 0x8DC5, 0x230E, 0x8DC6, 0x8DC6, 0x0D7D, 0x8DC7, 0x8DC7, 0x2306, + 0x8DC8, 0x8DC8, 0x230C, 0x8DCB, 0x8DCB, 0x0D78, 0x8DCC, 0x8DCC, 0x0D7B, + 0x8DCD, 0x8DCD, 0x2305, 0x8DCE, 0x8DCE, 0x0D76, 0x8DCF, 0x8DCF, 0x2309, + 0x8DD0, 0x8DD0, 0x25B1, 0x8DD1, 0x8DD1, 0x0D7A, 0x8DD3, 0x8DD3, 0x2304, + 0x8DD4, 0x8DD4, 0x3F82, 0x8DD5, 0x8DD5, 0x230A, 0x8DD6, 0x8DD6, 0x2307, + 0x8DD7, 0x8DD7, 0x230D, 0x8DD8, 0x8DD8, 0x2303, 0x8DD9, 0x8DD9, 0x230B, + 0x8DDA, 0x8DDA, 0x0D79, 0x8DDB, 0x8DDB, 0x0D7C, 0x8DDC, 0x8DDC, 0x2308, + 0x8DDD, 0x8DDD, 0x0D77, 0x8DDF, 0x8DDF, 0x0F27, 0x8DE0, 0x8DE0, 0x25AD, + 0x8DE1, 0x8DE1, 0x0F26, 0x8DE2, 0x8DE2, 0x25B4, 0x8DE3, 0x8DE3, 0x25B3, + 0x8DE4, 0x8DE4, 0x0F2D, 0x8DE6, 0x8DE6, 0x0F2E, 0x8DE7, 0x8DE7, 0x25B5, + 0x8DE8, 0x8DE8, 0x0F28, 0x8DE9, 0x8DE9, 0x25B2, 0x8DEA, 0x8DEA, 0x0F2C, + 0x8DEB, 0x8DEB, 0x25B7, 0x8DEC, 0x8DEC, 0x25AE, 0x8DEE, 0x8DEE, 0x25B0, + 0x8DEF, 0x8DEF, 0x0F29, 0x8DF0, 0x8DF0, 0x25AC, 0x8DF1, 0x8DF1, 0x25AF, + 0x8DF2, 0x8DF2, 0x25B6, 0x8DF3, 0x8DF3, 0x0F2A, 0x8DF4, 0x8DF4, 0x25B8, + 0x8DFA, 0x8DFA, 0x0F2B, 0x8DFC, 0x8DFC, 0x10BD, 0x8DFD, 0x8DFD, 0x2814, + 0x8DFE, 0x8DFE, 0x281A, 0x8DFF, 0x8DFF, 0x2812, 0x8E00, 0x8E00, 0x281B, + 0x8E01, 0x8E01, 0x3F85, 0x8E02, 0x8E02, 0x2811, 0x8E03, 0x8E03, 0x2816, + 0x8E04, 0x8E04, 0x281C, 0x8E05, 0x8E05, 0x2819, 0x8E06, 0x8E06, 0x2818, + 0x8E07, 0x8E07, 0x2817, 0x8E09, 0x8E09, 0x2810, 0x8E0A, 0x8E0A, 0x2815, + 0x8E0D, 0x8E0D, 0x2813, 0x8E0E, 0x8E0E, 0x3E5E, 0x8E0F, 0x8E0F, 0x1238, + 0x8E10, 0x8E10, 0x1235, 0x8E11, 0x8E11, 0x2A69, 0x8E12, 0x8E12, 0x2A6E, + 0x8E13, 0x8E13, 0x2A70, 0x8E14, 0x8E14, 0x2A6D, 0x8E15, 0x8E15, 0x2A66, + 0x8E16, 0x8E16, 0x2A68, 0x8E17, 0x8E17, 0x2A72, 0x8E18, 0x8E18, 0x2A6F, + 0x8E19, 0x8E19, 0x2A6A, 0x8E1A, 0x8E1A, 0x2A73, 0x8E1B, 0x8E1B, 0x2A67, + 0x8E1C, 0x8E1C, 0x2A71, 0x8E1D, 0x8E1D, 0x1236, 0x8E1E, 0x8E1E, 0x123C, + 0x8E1F, 0x8E1F, 0x123A, 0x8E20, 0x8E20, 0x2A61, 0x8E21, 0x8E21, 0x123B, + 0x8E22, 0x8E22, 0x1237, 0x8E23, 0x8E23, 0x2A62, 0x8E24, 0x8E24, 0x2A64, + 0x8E25, 0x8E25, 0x2A63, 0x8E26, 0x8E27, 0x2A6B, 0x8E28, 0x8E28, 0x3F88, + 0x8E29, 0x8E29, 0x1239, 0x8E2A, 0x8E2A, 0x3BB4, 0x8E2B, 0x8E2B, 0x1234, + 0x8E2D, 0x8E2D, 0x3EAB, 0x8E2E, 0x8E2E, 0x2A65, 0x8E30, 0x8E30, 0x2CAB, + 0x8E31, 0x8E31, 0x1362, 0x8E33, 0x8E33, 0x2CA2, 0x8E34, 0x8E34, 0x1363, + 0x8E35, 0x8E35, 0x1366, 0x8E36, 0x8E36, 0x2CA7, 0x8E38, 0x8E38, 0x2CA4, + 0x8E39, 0x8E39, 0x1365, 0x8E3A, 0x8E3A, 0x4784, 0x8E3C, 0x8E3D, 0x2CA8, + 0x8E3E, 0x8E3E, 0x2CA3, 0x8E3F, 0x8E3F, 0x2CAC, 0x8E40, 0x8E40, 0x2CA5, + 0x8E41, 0x8E41, 0x2CAA, 0x8E42, 0x8E42, 0x1364, 0x8E44, 0x8E44, 0x1361, + 0x8E45, 0x8E45, 0x2CA6, 0x8E46, 0x8E46, 0x4312, 0x8E47, 0x8E47, 0x2E7A, + 0x8E48, 0x8E48, 0x148B, 0x8E49, 0x8E49, 0x1489, 0x8E4A, 0x8E4A, 0x148C, + 0x8E4B, 0x8E4B, 0x148A, 0x8E4C, 0x8E4C, 0x2E79, 0x8E4D, 0x8E4D, 0x2E76, + 0x8E4E, 0x8E4E, 0x2E75, 0x8E4F, 0x8E4F, 0x3F83, 0x8E50, 0x8E50, 0x2E78, + 0x8E53, 0x8E53, 0x2E77, 0x8E54, 0x8E54, 0x2FF6, 0x8E55, 0x8E55, 0x1535, + 0x8E56, 0x8E56, 0x2FED, 0x8E57, 0x8E57, 0x2FEC, 0x8E59, 0x8E59, 0x1530, + 0x8E5A, 0x8E5A, 0x2FF2, 0x8E5B, 0x8E5B, 0x2FF1, 0x8E5C, 0x8E5C, 0x2FE9, + 0x8E5D, 0x8E5D, 0x2FF4, 0x8E5E, 0x8E5E, 0x2FEE, 0x8E5F, 0x8E5F, 0x1534, + 0x8E60, 0x8E60, 0x2FEB, 0x8E61, 0x8E61, 0x2FF3, 0x8E62, 0x8E62, 0x2FEA, + 0x8E63, 0x8E63, 0x1531, 0x8E64, 0x8E64, 0x1533, 0x8E65, 0x8E65, 0x2FEF, + 0x8E66, 0x8E66, 0x1532, 0x8E67, 0x8E67, 0x2FF0, 0x8E68, 0x8E68, 0x434D, + 0x8E69, 0x8E69, 0x2FF5, 0x8E6A, 0x8E6A, 0x313D, 0x8E6C, 0x8E6C, 0x15D3, + 0x8E6D, 0x8E6D, 0x313A, 0x8E6F, 0x8E6F, 0x313E, 0x8E71, 0x8E71, 0x43E7, + 0x8E72, 0x8E72, 0x15D0, 0x8E73, 0x8E73, 0x313C, 0x8E74, 0x8E74, 0x15D5, + 0x8E75, 0x8E75, 0x3F89, 0x8E76, 0x8E76, 0x15D2, 0x8E77, 0x8E77, 0x3F7F, + 0x8E78, 0x8E78, 0x313B, 0x8E7A, 0x8E7A, 0x15D4, 0x8E7B, 0x8E7B, 0x313F, + 0x8E7C, 0x8E7C, 0x15CF, 0x8E7E, 0x8E7E, 0x4324, 0x8E80, 0x8E80, 0x3E57, + 0x8E81, 0x8E81, 0x164D, 0x8E82, 0x8E82, 0x164F, 0x8E84, 0x8E84, 0x3240, + 0x8E85, 0x8E85, 0x164E, 0x8E86, 0x8E86, 0x323E, 0x8E87, 0x8E87, 0x15D1, + 0x8E88, 0x8E88, 0x323F, 0x8E89, 0x8E89, 0x164C, 0x8E8A, 0x8E8A, 0x1693, + 0x8E8B, 0x8E8B, 0x1695, 0x8E8C, 0x8E8C, 0x331A, 0x8E8D, 0x8E8D, 0x1694, + 0x8E8E, 0x8E8E, 0x3319, 0x8E90, 0x8E90, 0x33C1, 0x8E91, 0x8E91, 0x16DB, + 0x8E92, 0x8E92, 0x33C0, 0x8E93, 0x8E93, 0x16DC, 0x8E94, 0x8E94, 0x33BE, + 0x8E95, 0x8E95, 0x33BD, 0x8E96, 0x8E97, 0x33C2, 0x8E98, 0x8E98, 0x3443, + 0x8E9A, 0x8E9A, 0x33BF, 0x8E9D, 0x8E9D, 0x34A1, 0x8E9E, 0x8EA0, 0x349E, + 0x8EA1, 0x8EA1, 0x1749, 0x8EA3, 0x8EA3, 0x34EB, 0x8EA4, 0x8EA4, 0x34EA, + 0x8EA5, 0x8EA5, 0x34E9, 0x8EA6, 0x8EA6, 0x350A, 0x8EA7, 0x8EA7, 0x3BB5, + 0x8EA8, 0x8EA8, 0x3537, 0x8EA9, 0x8EA9, 0x3524, 0x8EAA, 0x8EAA, 0x175B, + 0x8EAB, 0x8EAB, 0x0512, 0x8EAC, 0x8EAC, 0x09CF, 0x8EAD, 0x8EAD, 0x385E, + 0x8EB0, 0x8EB0, 0x43E9, 0x8EB2, 0x8EB2, 0x0F2F, 0x8EB6, 0x8EB6, 0x385F, + 0x8EBA, 0x8EBA, 0x123D, 0x8EBC, 0x8EBC, 0x38A0, 0x8EBD, 0x8EBD, 0x2CAD, + 0x8EC0, 0x8EC0, 0x1536, 0x8EC2, 0x8EC2, 0x3140, 0x8EC3, 0x8EC3, 0x3860, + 0x8EC9, 0x8EC9, 0x3525, 0x8ECA, 0x8ECA, 0x0513, 0x8ECB, 0x8ECB, 0x068D, + 0x8ECC, 0x8ECC, 0x0810, 0x8ECD, 0x8ECD, 0x080F, 0x8ECE, 0x8ECE, 0x4788, + 0x8ECF, 0x8ECF, 0x09D2, 0x8ED1, 0x8ED1, 0x1E13, 0x8ED2, 0x8ED2, 0x09D0, + 0x8ED3, 0x8ED3, 0x1E14, 0x8ED4, 0x8ED4, 0x09D1, 0x8ED7, 0x8ED7, 0x207D, + 0x8ED8, 0x8ED8, 0x2079, 0x8EDA, 0x8EDA, 0x3DBE, 0x8EDB, 0x8EDB, 0x0BB3, + 0x8EDC, 0x8EDC, 0x207C, 0x8EDD, 0x8EDD, 0x207B, 0x8EDE, 0x8EDE, 0x207A, + 0x8EDF, 0x8EDF, 0x0BB4, 0x8EE0, 0x8EE1, 0x207E, 0x8EE2, 0x8EE2, 0x4789, + 0x8EE4, 0x8EE4, 0x478A, 0x8EE5, 0x8EE5, 0x2315, 0x8EE6, 0x8EE6, 0x2313, + 0x8EE7, 0x8EE8, 0x2317, 0x8EE9, 0x8EE9, 0x231E, 0x8EEB, 0x8EEB, 0x231A, + 0x8EEC, 0x8EEC, 0x231C, 0x8EED, 0x8EED, 0x478B, 0x8EEE, 0x8EEE, 0x2314, + 0x8EEF, 0x8EEF, 0x230F, 0x8EF1, 0x8EF1, 0x231B, 0x8EF2, 0x8EF2, 0x478C, + 0x8EF4, 0x8EF4, 0x231D, 0x8EF5, 0x8EF5, 0x2316, 0x8EF6, 0x8EF6, 0x2319, + 0x8EF7, 0x8EF7, 0x2310, 0x8EF8, 0x8EF8, 0x0D7F, 0x8EF9, 0x8EF9, 0x2312, + 0x8EFA, 0x8EFA, 0x2311, 0x8EFB, 0x8EFB, 0x0D7E, 0x8EFC, 0x8EFC, 0x0D80, + 0x8EFE, 0x8EFE, 0x0F32, 0x8EFF, 0x8EFF, 0x25BA, 0x8F00, 0x8F00, 0x25BC, + 0x8F01, 0x8F01, 0x25BB, 0x8F02, 0x8F02, 0x25C0, 0x8F03, 0x8F03, 0x0F30, + 0x8F05, 0x8F05, 0x25BD, 0x8F06, 0x8F06, 0x25B9, 0x8F07, 0x8F08, 0x25BE, + 0x8F09, 0x8F09, 0x0F31, 0x8F0A, 0x8F0A, 0x0F33, 0x8F0B, 0x8F0B, 0x25C1, + 0x8F0D, 0x8F0D, 0x2820, 0x8F0E, 0x8F0E, 0x281F, 0x8F10, 0x8F11, 0x281D, + 0x8F12, 0x8F12, 0x10BF, 0x8F13, 0x8F13, 0x10C1, 0x8F14, 0x8F14, 0x10BE, + 0x8F15, 0x8F15, 0x10C0, 0x8F16, 0x8F17, 0x2A7A, 0x8F18, 0x8F18, 0x2A76, + 0x8F19, 0x8F19, 0x3862, 0x8F1A, 0x8F1A, 0x2A77, 0x8F1B, 0x8F1B, 0x123F, + 0x8F1C, 0x8F1C, 0x1244, 0x8F1D, 0x8F1D, 0x123E, 0x8F1E, 0x8F1E, 0x1245, + 0x8F1F, 0x8F1F, 0x1240, 0x8F20, 0x8F20, 0x2A78, 0x8F23, 0x8F23, 0x2A79, + 0x8F24, 0x8F24, 0x2A75, 0x8F25, 0x8F25, 0x1246, 0x8F26, 0x8F26, 0x1242, + 0x8F29, 0x8F29, 0x1241, 0x8F2A, 0x8F2A, 0x1243, 0x8F2C, 0x8F2C, 0x2A74, + 0x8F2D, 0x8F2D, 0x3863, 0x8F2E, 0x8F2E, 0x2CAF, 0x8F2F, 0x8F2F, 0x1368, + 0x8F30, 0x8F30, 0x3BB7, 0x8F32, 0x8F32, 0x2CB1, 0x8F33, 0x8F33, 0x136A, + 0x8F34, 0x8F34, 0x2CB4, 0x8F35, 0x8F35, 0x2CB0, 0x8F36, 0x8F36, 0x2CAE, + 0x8F37, 0x8F37, 0x2CB3, 0x8F38, 0x8F38, 0x1369, 0x8F39, 0x8F39, 0x2CB2, + 0x8F3B, 0x8F3B, 0x1367, 0x8F3E, 0x8F3E, 0x148E, 0x8F3F, 0x8F3F, 0x1491, + 0x8F40, 0x8F40, 0x2E7C, 0x8F41, 0x8F41, 0x3D07, 0x8F42, 0x8F42, 0x148F, + 0x8F43, 0x8F43, 0x2E7B, 0x8F44, 0x8F44, 0x148D, 0x8F45, 0x8F45, 0x1490, + 0x8F46, 0x8F48, 0x2FF7, 0x8F49, 0x8F49, 0x1537, 0x8F4A, 0x8F4A, 0x3BB8, + 0x8F4B, 0x8F4B, 0x2FFA, 0x8F4D, 0x8F4D, 0x1538, 0x8F4E, 0x8F4E, 0x15D7, + 0x8F4F, 0x8F50, 0x3143, 0x8F51, 0x8F51, 0x3142, 0x8F52, 0x8F52, 0x3141, + 0x8F53, 0x8F53, 0x3145, 0x8F54, 0x8F54, 0x15D6, 0x8F55, 0x8F55, 0x3244, + 0x8F56, 0x8F57, 0x3242, 0x8F58, 0x8F58, 0x3245, 0x8F59, 0x8F59, 0x3241, + 0x8F5A, 0x8F5A, 0x3246, 0x8F5B, 0x8F5B, 0x331C, 0x8F5C, 0x8F5C, 0x3F31, + 0x8F5D, 0x8F5D, 0x331D, 0x8F5E, 0x8F5E, 0x331B, 0x8F5F, 0x8F5F, 0x1696, + 0x8F60, 0x8F60, 0x33C4, 0x8F61, 0x8F61, 0x16DD, 0x8F62, 0x8F62, 0x33C5, + 0x8F63, 0x8F63, 0x3445, 0x8F64, 0x8F64, 0x3444, 0x8F66, 0x8F67, 0x4569, + 0x8F6E, 0x8F6E, 0x456B, 0x8F93, 0x8F93, 0x4732, 0x8F9B, 0x8F9B, 0x0514, + 0x8F9C, 0x8F9C, 0x0D81, 0x8F9F, 0x8F9F, 0x0F34, 0x8FA0, 0x8FA0, 0x3D94, + 0x8FA3, 0x8FA3, 0x10C2, 0x8FA5, 0x8FA5, 0x3866, 0x8FA6, 0x8FA6, 0x136C, + 0x8FA8, 0x8FA8, 0x136B, 0x8FAD, 0x8FAD, 0x15D8, 0x8FAE, 0x8FAE, 0x162F, + 0x8FAF, 0x8FAF, 0x1697, 0x8FB0, 0x8FB0, 0x0515, 0x8FB1, 0x8FB1, 0x09D3, + 0x8FB2, 0x8FB2, 0x0F35, 0x8FB3, 0x8FB3, 0x386A, 0x8FB4, 0x8FB4, 0x3146, + 0x8FB5, 0x8FB5, 0x0230, 0x8FB6, 0x8FB6, 0x47D3, 0x8FB7, 0x8FB7, 0x43FD, + 0x8FB8, 0x8FB8, 0x42F6, 0x8FB9, 0x8FB9, 0x48C9, 0x8FBA, 0x8FBA, 0x48C7, + 0x8FBB, 0x8FBC, 0x3D6B, 0x8FBE, 0x8FBE, 0x48C6, 0x8FBF, 0x8FBF, 0x18E9, + 0x8FC1, 0x8FC1, 0x478D, 0x8FC2, 0x8FC2, 0x0516, 0x8FC4, 0x8FC4, 0x0519, + 0x8FC5, 0x8FC5, 0x0518, 0x8FC6, 0x8FC6, 0x0517, 0x8FC9, 0x8FC9, 0x18E8, + 0x8FCA, 0x8FCA, 0x478E, 0x8FCB, 0x8FCB, 0x1A4A, 0x8FCC, 0x8FCC, 0x478F, + 0x8FCD, 0x8FCD, 0x1A4C, 0x8FCE, 0x8FCE, 0x068E, 0x8FD0, 0x8FD0, 0x48AE, + 0x8FD1, 0x8FD1, 0x0690, 0x8FD2, 0x8FD2, 0x1A49, 0x8FD3, 0x8FD3, 0x1A4B, + 0x8FD4, 0x8FD4, 0x068F, 0x8FD5, 0x8FD5, 0x1A4E, 0x8FD6, 0x8FD6, 0x1A4D, + 0x8FD7, 0x8FD7, 0x1A4F, 0x8FDA, 0x8FDA, 0x3FCB, 0x8FE0, 0x8FE0, 0x1C0A, + 0x8FE1, 0x8FE1, 0x1C08, 0x8FE2, 0x8FE2, 0x0813, 0x8FE3, 0x8FE3, 0x1C07, + 0x8FE4, 0x8FE4, 0x0818, 0x8FE5, 0x8FE5, 0x0815, 0x8FE6, 0x8FE6, 0x0812, + 0x8FE8, 0x8FE8, 0x0819, 0x8FEA, 0x8FEA, 0x0814, 0x8FEB, 0x8FEB, 0x0817, + 0x8FED, 0x8FED, 0x0816, 0x8FEE, 0x8FEE, 0x1C09, 0x8FF0, 0x8FF0, 0x0811, + 0x8FF4, 0x8FF4, 0x09D9, 0x8FF5, 0x8FF5, 0x1E16, 0x8FF6, 0x8FF6, 0x1E1C, + 0x8FF7, 0x8FF7, 0x09D6, 0x8FF8, 0x8FF8, 0x09DD, 0x8FF9, 0x8FF9, 0x3871, + 0x8FFA, 0x8FFA, 0x09D8, 0x8FFB, 0x8FFB, 0x1E19, 0x8FFC, 0x8FFC, 0x1E1B, + 0x8FFD, 0x8FFD, 0x09DB, 0x8FFE, 0x8FFE, 0x1E15, 0x8FFF, 0x8FFF, 0x1E18, + 0x9000, 0x9000, 0x09D7, 0x9001, 0x9001, 0x09D4, 0x9002, 0x9002, 0x1E17, + 0x9003, 0x9003, 0x09DA, 0x9004, 0x9004, 0x1E1A, 0x9005, 0x9005, 0x09DC, + 0x9006, 0x9006, 0x09D5, 0x9008, 0x9008, 0x3EE0, 0x900B, 0x900B, 0x2081, + 0x900C, 0x900C, 0x2084, 0x900D, 0x900D, 0x0BB6, 0x900F, 0x900F, 0x0BC0, + 0x9010, 0x9010, 0x0BBC, 0x9011, 0x9011, 0x2082, 0x9012, 0x9012, 0x3E4E, + 0x9014, 0x9014, 0x0BC4, 0x9015, 0x9015, 0x0BBD, 0x9016, 0x9016, 0x0BC2, + 0x9017, 0x9017, 0x0BB8, 0x9019, 0x9019, 0x0BB5, 0x901A, 0x901A, 0x0BB7, + 0x901B, 0x901B, 0x0BC3, 0x901C, 0x901C, 0x2083, 0x901D, 0x901D, 0x0BBB, + 0x901E, 0x901E, 0x0BBE, 0x901F, 0x901F, 0x0BBA, 0x9020, 0x9020, 0x0BBF, + 0x9021, 0x9021, 0x2085, 0x9022, 0x9022, 0x0BC1, 0x9023, 0x9023, 0x0BB9, + 0x9024, 0x9024, 0x2080, 0x902D, 0x902D, 0x231F, 0x902E, 0x902E, 0x0D82, + 0x902F, 0x902F, 0x2321, 0x9031, 0x9031, 0x0D84, 0x9032, 0x9032, 0x0D86, + 0x9033, 0x9033, 0x4790, 0x9034, 0x9034, 0x2320, 0x9035, 0x9035, 0x0D83, + 0x9036, 0x9036, 0x0D87, 0x9037, 0x9037, 0x3876, 0x9038, 0x9038, 0x0D85, + 0x903C, 0x903C, 0x0F3B, 0x903D, 0x903D, 0x25C6, 0x903E, 0x903E, 0x0F43, + 0x903F, 0x903F, 0x25C3, 0x9041, 0x9041, 0x0F44, 0x9042, 0x9042, 0x0F39, + 0x9044, 0x9044, 0x25C4, 0x9047, 0x9047, 0x0F3E, 0x9049, 0x9049, 0x25C5, + 0x904A, 0x904A, 0x0F37, 0x904B, 0x904B, 0x0F36, 0x904C, 0x904C, 0x3F10, + 0x904D, 0x904D, 0x0F41, 0x904E, 0x904E, 0x0F40, 0x904F, 0x904F, 0x0F3F, + 0x9050, 0x9050, 0x0F3D, 0x9051, 0x9051, 0x0F42, 0x9052, 0x9052, 0x25C2, + 0x9053, 0x9053, 0x0F38, 0x9054, 0x9054, 0x0F3A, 0x9055, 0x9055, 0x0F3C, + 0x9056, 0x9056, 0x3DD2, 0x9058, 0x9058, 0x10C4, 0x9059, 0x9059, 0x10C7, + 0x905B, 0x905B, 0x10CB, 0x905C, 0x905C, 0x10C5, 0x905D, 0x905D, 0x10CA, + 0x905E, 0x905E, 0x10C8, 0x9060, 0x9060, 0x10C3, 0x9061, 0x9061, 0x3879, + 0x9062, 0x9062, 0x10C9, 0x9063, 0x9063, 0x10C6, 0x9064, 0x9064, 0x3C68, + 0x9067, 0x9067, 0x2A7F, 0x9068, 0x9068, 0x1249, 0x9069, 0x9069, 0x1247, + 0x906B, 0x906B, 0x2A80, 0x906C, 0x906C, 0x3D60, 0x906D, 0x906D, 0x124A, + 0x906E, 0x906E, 0x1248, 0x906F, 0x906F, 0x2A7E, 0x9070, 0x9070, 0x2A7D, + 0x9072, 0x9072, 0x1370, 0x9073, 0x9073, 0x2A7C, 0x9074, 0x9074, 0x136E, + 0x9075, 0x9075, 0x136D, 0x9076, 0x9076, 0x2CB5, 0x9077, 0x9077, 0x124B, + 0x9078, 0x9078, 0x136F, 0x9079, 0x9079, 0x2CB6, 0x907A, 0x907A, 0x1372, + 0x907B, 0x907B, 0x2CB7, 0x907C, 0x907C, 0x1371, 0x907D, 0x907D, 0x1493, + 0x907E, 0x907E, 0x2E7E, 0x907F, 0x907F, 0x1492, 0x9080, 0x9080, 0x1497, + 0x9081, 0x9082, 0x1495, 0x9083, 0x9083, 0x153A, 0x9084, 0x9084, 0x1494, + 0x9085, 0x9085, 0x2E7D, 0x9086, 0x9086, 0x2CB8, 0x9087, 0x9087, 0x1539, + 0x9088, 0x9088, 0x153B, 0x908A, 0x908B, 0x15D9, 0x908D, 0x908D, 0x3247, + 0x908F, 0x908F, 0x170C, 0x9090, 0x9090, 0x170B, 0x9091, 0x9091, 0x051B, + 0x9094, 0x9094, 0x181E, 0x9095, 0x9095, 0x09DE, 0x9097, 0x9098, 0x181B, + 0x9099, 0x9099, 0x181A, 0x909B, 0x909B, 0x181D, 0x909E, 0x909E, 0x18ED, + 0x909F, 0x909F, 0x18EA, 0x90A0, 0x90A0, 0x18EF, 0x90A1, 0x90A1, 0x18EB, + 0x90A2, 0x90A2, 0x051C, 0x90A3, 0x90A3, 0x051F, 0x90A5, 0x90A5, 0x18EC, + 0x90A6, 0x90A6, 0x051E, 0x90A7, 0x90A7, 0x18EE, 0x90A8, 0x90A8, 0x387C, + 0x90AA, 0x90AA, 0x051D, 0x90AE, 0x90AE, 0x3880, 0x90AF, 0x90AF, 0x1A52, + 0x90B0, 0x90B0, 0x1A54, 0x90B1, 0x90B1, 0x0693, 0x90B2, 0x90B2, 0x1A50, + 0x90B3, 0x90B3, 0x1A53, 0x90B4, 0x90B4, 0x1A51, 0x90B5, 0x90B5, 0x0691, + 0x90B6, 0x90B6, 0x0694, 0x90B8, 0x90B8, 0x0692, 0x90BB, 0x90BB, 0x3BC4, + 0x90BD, 0x90BD, 0x1C0C, 0x90BE, 0x90BE, 0x1C10, 0x90BF, 0x90BF, 0x1C0D, + 0x90C1, 0x90C1, 0x081C, 0x90C3, 0x90C3, 0x081D, 0x90C4, 0x90C4, 0x387E, + 0x90C5, 0x90C5, 0x1C0F, 0x90C7, 0x90C7, 0x1C11, 0x90C8, 0x90C8, 0x1C13, + 0x90CA, 0x90CA, 0x081A, 0x90CB, 0x90CB, 0x1C12, 0x90CE, 0x90CE, 0x081B, + 0x90D4, 0x90D4, 0x208C, 0x90D5, 0x90D5, 0x1C0E, 0x90D6, 0x90D6, 0x1E1D, + 0x90D7, 0x90D7, 0x1E26, 0x90D8, 0x90D8, 0x1E24, 0x90D9, 0x90DA, 0x1E1F, + 0x90DB, 0x90DB, 0x1E25, 0x90DC, 0x90DC, 0x1E27, 0x90DD, 0x90DD, 0x09E0, + 0x90DF, 0x90DF, 0x1E22, 0x90E0, 0x90E0, 0x1E1E, 0x90E1, 0x90E1, 0x09DF, + 0x90E2, 0x90E2, 0x09E1, 0x90E3, 0x90E3, 0x1E21, 0x90E4, 0x90E4, 0x1E28, + 0x90E5, 0x90E5, 0x1E23, 0x90E8, 0x90E8, 0x0BC5, 0x90E9, 0x90E9, 0x208F, + 0x90EA, 0x90EA, 0x2087, 0x90EB, 0x90EC, 0x208D, 0x90ED, 0x90ED, 0x0BC6, + 0x90EF, 0x90EF, 0x2086, 0x90F0, 0x90F0, 0x2088, 0x90F1, 0x90F1, 0x1C0B, + 0x90F2, 0x90F3, 0x208A, 0x90F4, 0x90F4, 0x2089, 0x90F5, 0x90F5, 0x0D89, + 0x90F9, 0x90F9, 0x2328, 0x90FA, 0x90FA, 0x2CB9, 0x90FB, 0x90FB, 0x2329, + 0x90FC, 0x90FC, 0x2326, 0x90FD, 0x90FD, 0x0BC7, 0x90FE, 0x90FE, 0x0D8B, + 0x90FF, 0x90FF, 0x2325, 0x9100, 0x9100, 0x232B, 0x9101, 0x9101, 0x232A, + 0x9102, 0x9102, 0x0D88, 0x9103, 0x9103, 0x232E, 0x9104, 0x9104, 0x2324, + 0x9105, 0x9105, 0x232D, 0x9106, 0x9106, 0x2322, 0x9107, 0x9107, 0x232C, + 0x9108, 0x9108, 0x2327, 0x9109, 0x9109, 0x0D8A, 0x910B, 0x910B, 0x25CD, + 0x910D, 0x910D, 0x25C8, 0x910E, 0x910E, 0x25CE, 0x910F, 0x910F, 0x25C9, + 0x9110, 0x9110, 0x25C7, 0x9111, 0x9111, 0x25CA, 0x9112, 0x9112, 0x0F45, + 0x9114, 0x9114, 0x25CC, 0x9116, 0x9116, 0x25CB, 0x9117, 0x9117, 0x0F46, + 0x9118, 0x9118, 0x10CD, 0x9119, 0x9119, 0x10CC, 0x911A, 0x911A, 0x2827, + 0x911B, 0x911B, 0x282A, 0x911C, 0x911C, 0x2822, 0x911D, 0x911D, 0x2826, + 0x911E, 0x911E, 0x10CE, 0x911F, 0x911F, 0x2825, 0x9120, 0x9120, 0x2823, + 0x9121, 0x9121, 0x2829, 0x9122, 0x9122, 0x2824, 0x9123, 0x9123, 0x2821, + 0x9124, 0x9124, 0x2828, 0x9126, 0x9126, 0x2A86, 0x9127, 0x9127, 0x124E, + 0x9128, 0x9128, 0x2FFB, 0x9129, 0x912A, 0x2A83, 0x912B, 0x912B, 0x2A82, + 0x912C, 0x912C, 0x2323, 0x912D, 0x912D, 0x124D, 0x912E, 0x912E, 0x2A87, + 0x912F, 0x912F, 0x2A81, 0x9130, 0x9130, 0x124C, 0x9131, 0x9131, 0x124F, + 0x9132, 0x9132, 0x2A85, 0x9133, 0x9133, 0x2CBA, 0x9134, 0x9134, 0x1373, + 0x9135, 0x9136, 0x2CBB, 0x9138, 0x9138, 0x2E7F, 0x9139, 0x9139, 0x1498, + 0x913A, 0x913B, 0x2FFC, 0x913E, 0x913E, 0x2FFE, 0x913F, 0x913F, 0x3148, + 0x9140, 0x9140, 0x3147, 0x9141, 0x9141, 0x3249, 0x9143, 0x9143, 0x3248, + 0x9144, 0x9145, 0x331F, 0x9146, 0x9146, 0x331E, 0x9147, 0x9147, 0x33C6, + 0x9148, 0x9148, 0x16DE, 0x9149, 0x9149, 0x0520, 0x914A, 0x914A, 0x081F, + 0x914B, 0x914B, 0x081E, 0x914C, 0x914C, 0x09E4, 0x914D, 0x914D, 0x09E3, + 0x914E, 0x914F, 0x1E2A, 0x9150, 0x9150, 0x1E29, 0x9151, 0x9151, 0x3F49, + 0x9152, 0x9152, 0x09E2, 0x9153, 0x9153, 0x2093, 0x9155, 0x9155, 0x2094, + 0x9156, 0x9156, 0x2090, 0x9157, 0x9157, 0x0BC8, 0x9158, 0x9158, 0x2091, + 0x9159, 0x9159, 0x3F45, 0x915A, 0x915A, 0x2092, 0x915C, 0x915C, 0x3F47, + 0x915E, 0x915E, 0x43EB, 0x915F, 0x915F, 0x2331, 0x9160, 0x9160, 0x2333, + 0x9161, 0x9161, 0x232F, 0x9162, 0x9162, 0x2332, 0x9163, 0x9163, 0x0D8C, + 0x9164, 0x9164, 0x2330, 0x9165, 0x9165, 0x0D8D, 0x9167, 0x9167, 0x3882, + 0x9168, 0x9168, 0x23E2, 0x9169, 0x9169, 0x0F49, 0x916A, 0x916A, 0x0F48, + 0x916C, 0x916C, 0x0F47, 0x916E, 0x916F, 0x25CF, 0x9170, 0x9170, 0x3EB8, + 0x9172, 0x9172, 0x282C, 0x9173, 0x9173, 0x282E, 0x9174, 0x9174, 0x10D2, + 0x9175, 0x9175, 0x10CF, 0x9176, 0x9176, 0x3E9B, 0x9177, 0x9177, 0x10D1, + 0x9178, 0x9178, 0x10D0, 0x9179, 0x9179, 0x282D, 0x917A, 0x917A, 0x282B, + 0x917C, 0x917C, 0x3F6F, 0x9180, 0x9180, 0x2A8E, 0x9181, 0x9182, 0x2A8B, + 0x9183, 0x9183, 0x1253, 0x9184, 0x9184, 0x2A8D, 0x9185, 0x9186, 0x2A88, + 0x9187, 0x9187, 0x1250, 0x9189, 0x9189, 0x1251, 0x918A, 0x918A, 0x2A8A, + 0x918B, 0x918B, 0x1252, 0x918C, 0x918C, 0x43EC, 0x918D, 0x918D, 0x2CC0, + 0x918E, 0x918E, 0x3F4E, 0x918F, 0x918F, 0x2CC1, 0x9190, 0x9191, 0x2CBE, + 0x9192, 0x9192, 0x1374, 0x9193, 0x9193, 0x2CBD, 0x9199, 0x9199, 0x2E83, + 0x919A, 0x919A, 0x2E80, 0x919B, 0x919B, 0x2E82, 0x919C, 0x919C, 0x149B, + 0x919D, 0x919D, 0x2E86, 0x919E, 0x919E, 0x149A, 0x919F, 0x919F, 0x2E84, + 0x91A0, 0x91A0, 0x2E87, 0x91A1, 0x91A1, 0x2E85, 0x91A2, 0x91A2, 0x2E81, + 0x91A3, 0x91A3, 0x1499, 0x91A5, 0x91A5, 0x3000, 0x91A7, 0x91A7, 0x3001, + 0x91A8, 0x91A8, 0x2FFF, 0x91A9, 0x91A9, 0x3883, 0x91AA, 0x91AA, 0x3003, + 0x91AB, 0x91AC, 0x153C, 0x91AD, 0x91AD, 0x314A, 0x91AE, 0x91AE, 0x15DC, + 0x91AF, 0x91AF, 0x3002, 0x91B0, 0x91B0, 0x3149, 0x91B1, 0x91B1, 0x15DB, + 0x91B2, 0x91B3, 0x324C, 0x91B4, 0x91B4, 0x1650, 0x91B5, 0x91B5, 0x324B, + 0x91B6, 0x91B6, 0x45EF, 0x91B7, 0x91B7, 0x324A, 0x91B9, 0x91B9, 0x3321, + 0x91BA, 0x91BA, 0x1698, 0x91BB, 0x91BB, 0x3BC8, 0x91BC, 0x91BC, 0x3446, + 0x91BD, 0x91BD, 0x34A3, 0x91BE, 0x91BE, 0x34A2, 0x91C0, 0x91C0, 0x1730, + 0x91C1, 0x91C1, 0x174A, 0x91C2, 0x91C2, 0x34A4, 0x91C3, 0x91C3, 0x350B, + 0x91C4, 0x91C4, 0x3884, 0x91C5, 0x91C5, 0x175C, 0x91C6, 0x91C6, 0x0521, + 0x91C7, 0x91C7, 0x0695, 0x91C9, 0x91C9, 0x0F4A, 0x91CB, 0x91CB, 0x1651, + 0x91CC, 0x91CC, 0x0522, 0x91CD, 0x91CD, 0x0820, 0x91CE, 0x91CE, 0x0BC9, + 0x91CF, 0x91CF, 0x0D8E, 0x91D0, 0x91D0, 0x153E, 0x91D1, 0x91D1, 0x0696, + 0x91D3, 0x91D3, 0x1C15, 0x91D4, 0x91D4, 0x1C14, 0x91D5, 0x91D5, 0x1E2C, + 0x91D6, 0x91D6, 0x415E, 0x91D7, 0x91D7, 0x09E7, 0x91D8, 0x91D8, 0x09E5, + 0x91D9, 0x91D9, 0x09E9, 0x91DA, 0x91DA, 0x1E2E, 0x91DC, 0x91DC, 0x09E8, + 0x91DD, 0x91DD, 0x09E6, 0x91DF, 0x91DF, 0x453A, 0x91E2, 0x91E2, 0x1E2D, + 0x91E3, 0x91E3, 0x0BCC, 0x91E4, 0x91E4, 0x209A, 0x91E5, 0x91E5, 0x3C06, + 0x91E6, 0x91E6, 0x0BCB, 0x91E7, 0x91E7, 0x0BCD, 0x91E8, 0x91E8, 0x209F, + 0x91E9, 0x91E9, 0x0BCF, 0x91EA, 0x91EB, 0x209C, 0x91EC, 0x91EC, 0x2095, + 0x91ED, 0x91ED, 0x0BCE, 0x91EE, 0x91EE, 0x20A0, 0x91F1, 0x91F1, 0x2097, + 0x91F3, 0x91F3, 0x2098, 0x91F4, 0x91F4, 0x2096, 0x91F5, 0x91F5, 0x0BCA, + 0x91F7, 0x91F7, 0x209E, 0x91F8, 0x91F8, 0x2099, 0x91F9, 0x91F9, 0x209B, + 0x91FA, 0x91FA, 0x3AF8, 0x91FD, 0x91FD, 0x233F, 0x91FE, 0x91FE, 0x382E, + 0x91FF, 0x91FF, 0x233E, 0x9200, 0x9200, 0x233C, 0x9201, 0x9201, 0x2334, + 0x9202, 0x9202, 0x2343, 0x9203, 0x9203, 0x2337, 0x9204, 0x9204, 0x2341, + 0x9205, 0x9205, 0x2348, 0x9206, 0x9206, 0x2340, 0x9207, 0x9207, 0x0D96, + 0x9208, 0x9208, 0x3EB9, 0x9209, 0x9209, 0x0D92, 0x920A, 0x920A, 0x2335, + 0x920C, 0x920C, 0x233B, 0x920D, 0x920D, 0x0D94, 0x920E, 0x920E, 0x3888, + 0x920F, 0x920F, 0x233A, 0x9210, 0x9210, 0x0D95, 0x9211, 0x9211, 0x0D97, + 0x9212, 0x9212, 0x233D, 0x9213, 0x9213, 0x4793, 0x9214, 0x9215, 0x0D8F, + 0x9216, 0x9216, 0x2349, 0x9217, 0x9217, 0x2347, 0x9219, 0x9219, 0x2346, + 0x921A, 0x921A, 0x2338, 0x921C, 0x921C, 0x2344, 0x921E, 0x921E, 0x0D93, + 0x9223, 0x9223, 0x0D91, 0x9224, 0x9224, 0x2345, 0x9225, 0x9225, 0x2336, + 0x9226, 0x9226, 0x2339, 0x9227, 0x9227, 0x2342, 0x9228, 0x9228, 0x4795, + 0x922A, 0x922A, 0x3C0E, 0x922B, 0x922B, 0x3BA6, 0x922D, 0x922D, 0x2851, + 0x922E, 0x922E, 0x25DA, 0x9230, 0x9230, 0x25D3, 0x9231, 0x9231, 0x25E6, + 0x9232, 0x9232, 0x25EF, 0x9233, 0x9233, 0x25D6, 0x9234, 0x9234, 0x0F55, + 0x9235, 0x9235, 0x3B26, 0x9236, 0x9236, 0x25E3, 0x9237, 0x9237, 0x0F4B, + 0x9238, 0x9238, 0x0F4D, 0x9239, 0x9239, 0x0F59, 0x923A, 0x923A, 0x25D4, + 0x923C, 0x923C, 0x41D2, 0x923D, 0x923D, 0x0F4E, 0x923E, 0x923E, 0x0F50, + 0x923F, 0x923F, 0x0F5A, 0x9240, 0x9240, 0x0F4F, 0x9241, 0x9241, 0x388A, + 0x9244, 0x9244, 0x389A, 0x9245, 0x9245, 0x0F58, 0x9246, 0x9246, 0x25DC, + 0x9248, 0x9248, 0x25D1, 0x9249, 0x9249, 0x0F56, 0x924A, 0x924A, 0x25DB, + 0x924B, 0x924B, 0x0F52, 0x924C, 0x924C, 0x25ED, 0x924D, 0x924D, 0x0F57, + 0x924E, 0x924E, 0x25EB, 0x924F, 0x924F, 0x25DF, 0x9250, 0x9250, 0x25E9, + 0x9251, 0x9251, 0x0F54, 0x9252, 0x9252, 0x25D2, 0x9253, 0x9253, 0x25EC, + 0x9254, 0x9254, 0x25E7, 0x9255, 0x9255, 0x3E47, 0x9256, 0x9256, 0x25EE, + 0x9257, 0x9257, 0x0F4C, 0x9258, 0x9258, 0x4796, 0x925A, 0x925A, 0x0F5B, + 0x925B, 0x925B, 0x0F51, 0x925D, 0x925D, 0x3A03, 0x925E, 0x925E, 0x25D8, + 0x925F, 0x925F, 0x3CE0, 0x9260, 0x9260, 0x25E0, 0x9261, 0x9261, 0x25E4, + 0x9262, 0x9262, 0x388B, 0x9263, 0x9263, 0x25E8, 0x9264, 0x9264, 0x0F53, + 0x9265, 0x9265, 0x25D7, 0x9266, 0x9266, 0x25D5, 0x9267, 0x9267, 0x25E1, + 0x926B, 0x926B, 0x4797, 0x926C, 0x926C, 0x25DE, 0x926D, 0x926D, 0x25DD, + 0x926E, 0x926E, 0x3D05, 0x926F, 0x926F, 0x25E2, 0x9270, 0x9270, 0x25E5, + 0x9272, 0x9272, 0x25EA, 0x9276, 0x9276, 0x2831, 0x9277, 0x9277, 0x3C64, + 0x9278, 0x9278, 0x10D3, 0x9279, 0x9279, 0x283B, 0x927A, 0x927A, 0x2833, + 0x927B, 0x927B, 0x10D9, 0x927C, 0x927C, 0x10DD, 0x927D, 0x927D, 0x2844, + 0x927E, 0x927E, 0x284C, 0x927F, 0x927F, 0x283D, 0x9280, 0x9280, 0x10D5, + 0x9281, 0x9281, 0x3E01, 0x9282, 0x9282, 0x2841, 0x9283, 0x9283, 0x25D9, + 0x9284, 0x9284, 0x3CB9, 0x9285, 0x9285, 0x10D6, 0x9286, 0x9286, 0x2848, + 0x9287, 0x9287, 0x284D, 0x9288, 0x9288, 0x2845, 0x9289, 0x9289, 0x3AB5, + 0x928A, 0x928A, 0x2847, 0x928B, 0x928B, 0x2850, 0x928C, 0x928C, 0x2849, + 0x928D, 0x928D, 0x2837, 0x928E, 0x928E, 0x2840, 0x928F, 0x928F, 0x46BD, + 0x9291, 0x9291, 0x10DE, 0x9293, 0x9293, 0x10DA, 0x9294, 0x9294, 0x2835, + 0x9295, 0x9295, 0x2842, 0x9296, 0x9296, 0x10D8, 0x9297, 0x9297, 0x283C, + 0x9298, 0x9298, 0x10D7, 0x9299, 0x9299, 0x284A, 0x929A, 0x929A, 0x2839, + 0x929B, 0x929B, 0x2832, 0x929C, 0x929C, 0x10DB, 0x929D, 0x929D, 0x284F, + 0x92A0, 0x92A0, 0x2834, 0x92A1, 0x92A1, 0x2846, 0x92A2, 0x92A2, 0x2843, + 0x92A3, 0x92A3, 0x283E, 0x92A4, 0x92A4, 0x2830, 0x92A5, 0x92A5, 0x282F, + 0x92A6, 0x92A6, 0x2838, 0x92A7, 0x92A7, 0x284B, 0x92A8, 0x92A8, 0x10DC, + 0x92A9, 0x92A9, 0x284E, 0x92AA, 0x92AA, 0x2836, 0x92AB, 0x92AB, 0x283A, + 0x92AC, 0x92AC, 0x10D4, 0x92AE, 0x92AE, 0x4799, 0x92B1, 0x92B1, 0x4798, + 0x92B2, 0x92B2, 0x125F, 0x92B3, 0x92B3, 0x125A, 0x92B4, 0x92B4, 0x2AB0, + 0x92B5, 0x92B5, 0x2AAC, 0x92B6, 0x92B6, 0x2A94, 0x92B7, 0x92B7, 0x1256, + 0x92B9, 0x92B9, 0x36E9, 0x92BA, 0x92BA, 0x3BF5, 0x92BB, 0x92BB, 0x1255, + 0x92BC, 0x92BC, 0x125B, 0x92BE, 0x92BE, 0x3C60, 0x92BF, 0x92BF, 0x479A, + 0x92C0, 0x92C0, 0x2A92, 0x92C1, 0x92C1, 0x1259, 0x92C2, 0x92C2, 0x2A9E, + 0x92C3, 0x92C4, 0x2A90, 0x92C5, 0x92C5, 0x1254, 0x92C6, 0x92C6, 0x2AAF, + 0x92C7, 0x92C7, 0x125D, 0x92C8, 0x92C8, 0x2AA1, 0x92C9, 0x92C9, 0x2AA6, + 0x92CA, 0x92CA, 0x2AA0, 0x92CB, 0x92CB, 0x2CD3, 0x92CC, 0x92CC, 0x2A9C, + 0x92CD, 0x92CD, 0x2AA4, 0x92CE, 0x92CE, 0x2AA2, 0x92CF, 0x92CF, 0x2A95, + 0x92D0, 0x92D0, 0x2A8F, 0x92D1, 0x92D1, 0x2AAA, 0x92D2, 0x92D2, 0x125C, + 0x92D3, 0x92D3, 0x2AAB, 0x92D4, 0x92D4, 0x3861, 0x92D5, 0x92D5, 0x2AA5, + 0x92D7, 0x92D7, 0x2A9A, 0x92D8, 0x92D8, 0x2A98, 0x92D9, 0x92D9, 0x2A93, + 0x92DB, 0x92DB, 0x400C, 0x92DD, 0x92DD, 0x2A9B, 0x92DE, 0x92DE, 0x2AA8, + 0x92DF, 0x92DF, 0x2A97, 0x92E0, 0x92E0, 0x2AA7, 0x92E1, 0x92E1, 0x2AAD, + 0x92E3, 0x92E3, 0x479B, 0x92E4, 0x92E4, 0x1258, 0x92E5, 0x92E5, 0x3CA2, + 0x92E6, 0x92E6, 0x2AA3, 0x92E7, 0x92E7, 0x2AA9, 0x92E8, 0x92E8, 0x2A9F, + 0x92E9, 0x92E9, 0x2A99, 0x92EA, 0x92EA, 0x1257, 0x92EB, 0x92EB, 0x479C, + 0x92EC, 0x92EC, 0x3964, 0x92EE, 0x92EE, 0x283F, 0x92EF, 0x92EF, 0x2A9D, + 0x92F0, 0x92F0, 0x125E, 0x92F1, 0x92F1, 0x2A96, 0x92F2, 0x92F2, 0x3AB2, + 0x92F3, 0x92F4, 0x479D, 0x92F6, 0x92F6, 0x3C04, 0x92F7, 0x92F7, 0x2CD8, + 0x92F8, 0x92F8, 0x1377, 0x92F9, 0x92F9, 0x2CD7, 0x92FA, 0x92FA, 0x2CD5, + 0x92FB, 0x92FB, 0x2CE7, 0x92FC, 0x92FC, 0x137B, 0x92FD, 0x92FD, 0x479F, + 0x92FE, 0x92FE, 0x2CE4, 0x92FF, 0x92FF, 0x2CDC, 0x9300, 0x9300, 0x2CE6, + 0x9301, 0x9301, 0x2CCE, 0x9302, 0x9302, 0x2CDA, 0x9303, 0x9303, 0x3867, + 0x9304, 0x9304, 0x137D, 0x9306, 0x9306, 0x2CC6, 0x9307, 0x9307, 0x3B11, + 0x9308, 0x9308, 0x2CC4, 0x9309, 0x9309, 0x2CE5, 0x930B, 0x930B, 0x2CE3, + 0x930C, 0x930C, 0x2CE2, 0x930D, 0x930D, 0x2CD2, 0x930E, 0x930E, 0x2CD1, + 0x930F, 0x930F, 0x2CC7, 0x9310, 0x9310, 0x137F, 0x9312, 0x9312, 0x2CCD, + 0x9313, 0x9313, 0x2CD6, 0x9314, 0x9314, 0x2CE1, 0x9315, 0x9315, 0x1382, + 0x9316, 0x9316, 0x2CE8, 0x9318, 0x9318, 0x14A3, 0x9319, 0x9319, 0x1384, + 0x931A, 0x931A, 0x137E, 0x931B, 0x931B, 0x2CCB, 0x931D, 0x931D, 0x2CD4, + 0x931E, 0x931E, 0x2CC3, 0x931F, 0x931F, 0x2CC5, 0x9320, 0x9320, 0x1375, + 0x9321, 0x9321, 0x1381, 0x9322, 0x9322, 0x137A, 0x9323, 0x9323, 0x2CCC, + 0x9324, 0x9324, 0x2CDB, 0x9325, 0x9325, 0x2AAE, 0x9326, 0x9326, 0x1380, + 0x9327, 0x9327, 0x2CC2, 0x9328, 0x9328, 0x149E, 0x9329, 0x9329, 0x2CDD, + 0x932A, 0x932A, 0x2CE0, 0x932B, 0x932B, 0x137C, 0x932C, 0x932C, 0x3892, + 0x932D, 0x932D, 0x2CD0, 0x932E, 0x932E, 0x1383, 0x932F, 0x932F, 0x1379, + 0x9330, 0x9330, 0x3E03, 0x9331, 0x9331, 0x3CBD, 0x9333, 0x9333, 0x1378, + 0x9334, 0x9334, 0x2CD9, 0x9335, 0x9335, 0x2CDF, 0x9336, 0x9336, 0x1376, + 0x9338, 0x9338, 0x2CC9, 0x9339, 0x9339, 0x2CDE, 0x933C, 0x933C, 0x2CCA, + 0x9340, 0x9340, 0x4155, 0x9341, 0x9341, 0x4277, 0x9342, 0x9342, 0x3AFA, + 0x9343, 0x9343, 0x47A0, 0x9344, 0x9344, 0x4016, 0x9345, 0x9345, 0x3E74, + 0x9346, 0x9346, 0x2CCF, 0x9347, 0x9347, 0x2E8D, 0x9348, 0x9348, 0x3C61, + 0x9349, 0x9349, 0x2E92, 0x934A, 0x934A, 0x14A0, 0x934B, 0x934B, 0x14A2, + 0x934C, 0x934C, 0x2E98, 0x934D, 0x934D, 0x149C, 0x934E, 0x934E, 0x2EA6, + 0x934F, 0x934F, 0x2E9E, 0x9350, 0x9351, 0x2E93, 0x9352, 0x9352, 0x2E9D, + 0x9354, 0x9354, 0x14A9, 0x9355, 0x9355, 0x2E9C, 0x9356, 0x9356, 0x2E8C, + 0x9357, 0x9357, 0x2E9B, 0x9358, 0x9358, 0x2E8F, 0x9359, 0x9359, 0x2EA7, + 0x935A, 0x935A, 0x14A8, 0x935B, 0x935B, 0x14A6, 0x935C, 0x935C, 0x2E90, + 0x935E, 0x935E, 0x2EA3, 0x935F, 0x935F, 0x3CBB, 0x9360, 0x9360, 0x2E95, + 0x9361, 0x9361, 0x2EA2, 0x9362, 0x9362, 0x4268, 0x9363, 0x9363, 0x2EA4, + 0x9364, 0x9364, 0x2E8B, 0x9365, 0x9365, 0x14A1, 0x9366, 0x9366, 0x46BC, + 0x9367, 0x9367, 0x2EA5, 0x9368, 0x9368, 0x3BF0, 0x9369, 0x9369, 0x3961, + 0x936A, 0x936A, 0x2E99, 0x936B, 0x936B, 0x3893, 0x936C, 0x936C, 0x14A5, + 0x936D, 0x936D, 0x2E96, 0x936E, 0x936E, 0x39E8, 0x9370, 0x9370, 0x14A7, + 0x9371, 0x9371, 0x2E9F, 0x9373, 0x9373, 0x389E, 0x9374, 0x9374, 0x3CE4, + 0x9375, 0x9375, 0x149F, 0x9376, 0x9376, 0x2E91, 0x9377, 0x9377, 0x2EA0, + 0x9378, 0x9378, 0x38F9, 0x9379, 0x9379, 0x2E9A, 0x937A, 0x937A, 0x2CC8, + 0x937B, 0x937B, 0x2EA1, 0x937C, 0x937C, 0x2E8E, 0x937D, 0x937D, 0x3C25, + 0x937E, 0x937E, 0x14A4, 0x9380, 0x9380, 0x3014, 0x9381, 0x9381, 0x3965, + 0x9382, 0x9382, 0x149D, 0x9383, 0x9383, 0x2E89, 0x9384, 0x9384, 0x47A1, + 0x9385, 0x9385, 0x42BD, 0x9386, 0x9386, 0x3CC0, 0x9387, 0x9387, 0x3AE0, + 0x9388, 0x9388, 0x3011, 0x9389, 0x9389, 0x300A, 0x938A, 0x938A, 0x1540, + 0x938C, 0x938C, 0x3005, 0x938D, 0x938D, 0x3015, 0x938E, 0x938E, 0x300C, + 0x938F, 0x938F, 0x2E97, 0x9390, 0x9390, 0x3D3C, 0x9391, 0x9391, 0x3017, + 0x9392, 0x9392, 0x3006, 0x9394, 0x9394, 0x153F, 0x9395, 0x9395, 0x3010, + 0x9396, 0x9396, 0x1541, 0x9397, 0x9397, 0x1549, 0x9398, 0x9398, 0x1547, + 0x9399, 0x9399, 0x3012, 0x939A, 0x939A, 0x1548, 0x939B, 0x939B, 0x3008, + 0x939C, 0x939C, 0x39AC, 0x939D, 0x939D, 0x3009, 0x939E, 0x939E, 0x300E, + 0x939F, 0x939F, 0x3013, 0x93A0, 0x93A0, 0x3AB1, 0x93A1, 0x93A1, 0x2E88, + 0x93A2, 0x93A2, 0x1542, 0x93A3, 0x93A3, 0x301C, 0x93A4, 0x93A4, 0x3019, + 0x93A5, 0x93A5, 0x3160, 0x93A6, 0x93A6, 0x300F, 0x93A7, 0x93A7, 0x300B, + 0x93A8, 0x93A8, 0x301A, 0x93A9, 0x93A9, 0x3155, 0x93AA, 0x93AA, 0x300D, + 0x93AC, 0x93AC, 0x1545, 0x93AD, 0x93AD, 0x47A2, 0x93AE, 0x93AE, 0x1544, + 0x93AF, 0x93AF, 0x2E8A, 0x93B0, 0x93B0, 0x1546, 0x93B1, 0x93B1, 0x3016, + 0x93B2, 0x93B2, 0x3018, 0x93B3, 0x93B3, 0x1543, 0x93B4, 0x93B4, 0x301B, + 0x93B5, 0x93B5, 0x3004, 0x93B7, 0x93B7, 0x3007, 0x93B8, 0x93B8, 0x3C90, + 0x93BA, 0x93BA, 0x43F7, 0x93BB, 0x93BB, 0x3C8F, 0x93BD, 0x93BD, 0x3A27, + 0x93BF, 0x93BF, 0x3E2D, 0x93C0, 0x93C0, 0x315E, 0x93C2, 0x93C2, 0x314E, + 0x93C3, 0x93C3, 0x15E0, 0x93C4, 0x93C4, 0x315C, 0x93C6, 0x93C6, 0x39AA, + 0x93C7, 0x93C7, 0x314C, 0x93C8, 0x93C8, 0x15E1, 0x93CA, 0x93CA, 0x3157, + 0x93CB, 0x93CB, 0x3966, 0x93CC, 0x93CC, 0x3153, 0x93CD, 0x93CD, 0x15E6, + 0x93CE, 0x93CE, 0x315D, 0x93CF, 0x93CF, 0x314D, 0x93D0, 0x93D0, 0x3150, + 0x93D1, 0x93D1, 0x15DE, 0x93D2, 0x93D2, 0x315F, 0x93D3, 0x93D3, 0x40E1, + 0x93D4, 0x93D4, 0x3158, 0x93D5, 0x93D5, 0x315B, 0x93D6, 0x93D6, 0x15E4, + 0x93D7, 0x93D7, 0x15E9, 0x93D8, 0x93D8, 0x15E7, 0x93D9, 0x93D9, 0x3154, + 0x93DA, 0x93DA, 0x314F, 0x93DB, 0x93DB, 0x3C5F, 0x93DC, 0x93DD, 0x15E2, + 0x93DE, 0x93DE, 0x314B, 0x93DF, 0x93DF, 0x15DF, 0x93E0, 0x93E0, 0x3A20, + 0x93E1, 0x93E1, 0x15DD, 0x93E2, 0x93E2, 0x15E5, 0x93E3, 0x93E3, 0x315A, + 0x93E4, 0x93E4, 0x15E8, 0x93E6, 0x93E6, 0x3156, 0x93E7, 0x93E7, 0x3161, + 0x93E8, 0x93E8, 0x15EA, 0x93EC, 0x93EC, 0x3152, 0x93EE, 0x93EE, 0x3159, + 0x93F0, 0x93F0, 0x423F, 0x93F1, 0x93F1, 0x42AA, 0x93F3, 0x93F3, 0x3962, + 0x93F5, 0x93F5, 0x325A, 0x93F6, 0x93F6, 0x3269, 0x93F7, 0x93F7, 0x325C, + 0x93F8, 0x93F8, 0x3263, 0x93F9, 0x93F9, 0x3151, 0x93FA, 0x93FA, 0x3261, + 0x93FB, 0x93FB, 0x3250, 0x93FC, 0x93FC, 0x3267, 0x93FD, 0x93FD, 0x1654, + 0x93FE, 0x93FE, 0x3254, 0x93FF, 0x93FF, 0x3266, 0x9400, 0x9400, 0x325B, + 0x9401, 0x9401, 0x3CD4, 0x9403, 0x9403, 0x1653, 0x9404, 0x9404, 0x3BC9, + 0x9406, 0x9406, 0x326B, 0x9407, 0x9407, 0x325D, 0x9408, 0x9408, 0x3A25, + 0x9409, 0x9409, 0x3262, 0x940A, 0x940A, 0x3265, 0x940B, 0x940B, 0x324E, + 0x940C, 0x940C, 0x3268, 0x940D, 0x940D, 0x3259, 0x940E, 0x940E, 0x325E, + 0x940F, 0x940F, 0x3252, 0x9410, 0x9410, 0x3256, 0x9411, 0x9411, 0x326A, + 0x9412, 0x9412, 0x3260, 0x9413, 0x9413, 0x324F, 0x9414, 0x9414, 0x3253, + 0x9415, 0x9415, 0x3255, 0x9416, 0x9416, 0x325F, 0x9417, 0x9417, 0x47A5, + 0x9418, 0x9418, 0x1652, 0x9419, 0x9419, 0x3258, 0x941B, 0x941B, 0x4148, + 0x941D, 0x941D, 0x47A6, 0x9420, 0x9420, 0x3251, 0x9424, 0x9424, 0x3943, + 0x9425, 0x9425, 0x38D0, 0x9426, 0x9426, 0x38A3, 0x9427, 0x9427, 0x3BCD, + 0x9428, 0x9428, 0x3257, 0x9429, 0x9429, 0x3325, 0x942A, 0x942A, 0x3329, + 0x942B, 0x942B, 0x169F, 0x942C, 0x942C, 0x332B, 0x942D, 0x942D, 0x47A7, + 0x942E, 0x942E, 0x1699, 0x9430, 0x9430, 0x3327, 0x9431, 0x9431, 0x332D, + 0x9432, 0x9432, 0x169E, 0x9433, 0x9433, 0x169A, 0x9435, 0x9435, 0x169B, + 0x9436, 0x9436, 0x3324, 0x9437, 0x9437, 0x332A, 0x9438, 0x9438, 0x169D, + 0x9439, 0x9439, 0x3328, 0x943A, 0x943A, 0x169C, 0x943B, 0x943B, 0x3323, + 0x943C, 0x943C, 0x3264, 0x943D, 0x943D, 0x3326, 0x943E, 0x943E, 0x47A8, + 0x943F, 0x943F, 0x3322, 0x9440, 0x9440, 0x332C, 0x9442, 0x9442, 0x4272, + 0x9443, 0x9443, 0x4275, 0x9444, 0x9444, 0x16DF, 0x9445, 0x9445, 0x33CD, + 0x9446, 0x9446, 0x33D0, 0x9447, 0x9447, 0x33CC, 0x9448, 0x9449, 0x33CE, + 0x944A, 0x944B, 0x33C9, 0x944C, 0x944C, 0x33C7, 0x944D, 0x944D, 0x3C65, + 0x944F, 0x944F, 0x33CB, 0x9450, 0x9450, 0x33C8, 0x9451, 0x9452, 0x16E0, + 0x9454, 0x9454, 0x47AA, 0x9455, 0x9455, 0x3448, 0x9457, 0x9457, 0x344A, + 0x9458, 0x9458, 0x3C30, 0x945B, 0x945B, 0x389F, 0x945D, 0x945D, 0x3449, + 0x945E, 0x945E, 0x344B, 0x9460, 0x9460, 0x170E, 0x9462, 0x9462, 0x3447, + 0x9463, 0x9463, 0x170D, 0x9464, 0x9464, 0x170F, 0x9465, 0x9465, 0x3DDE, + 0x9467, 0x9467, 0x3AB8, 0x9468, 0x9469, 0x34A6, 0x946A, 0x946A, 0x1731, + 0x946B, 0x946B, 0x34A5, 0x946C, 0x946C, 0x377E, 0x946D, 0x946D, 0x34ED, + 0x946E, 0x946E, 0x34EC, 0x946F, 0x946F, 0x34EE, 0x9470, 0x9470, 0x174C, + 0x9471, 0x9471, 0x34EF, 0x9472, 0x9472, 0x174B, 0x9473, 0x9473, 0x34F0, + 0x9474, 0x9474, 0x350C, 0x9475, 0x9475, 0x350F, 0x9476, 0x9476, 0x350E, + 0x9477, 0x9477, 0x1755, 0x9478, 0x9478, 0x350D, 0x9479, 0x9479, 0x47AB, + 0x947B, 0x947B, 0x419B, 0x947C, 0x947C, 0x175F, 0x947D, 0x947E, 0x175D, + 0x947F, 0x947F, 0x1764, 0x9480, 0x9481, 0x3539, 0x9482, 0x9482, 0x3538, + 0x9483, 0x9483, 0x3540, 0x9485, 0x9485, 0x4507, 0x949F, 0x949F, 0x4885, + 0x94A2, 0x94A2, 0x451B, 0x94C1, 0x94C1, 0x47E1, 0x94C3, 0x94C3, 0x47DF, + 0x94DC, 0x94DC, 0x47D7, 0x94F6, 0x94F6, 0x47D2, 0x952D, 0x952D, 0x47AC, + 0x9547, 0x9547, 0x48BF, 0x9577, 0x9577, 0x0697, 0x9578, 0x9578, 0x4508, + 0x957A, 0x957A, 0x20A1, 0x957B, 0x957B, 0x234A, 0x957C, 0x957C, 0x2AB1, + 0x957D, 0x957D, 0x3162, 0x957F, 0x957F, 0x4509, 0x9580, 0x9580, 0x0698, + 0x9582, 0x9582, 0x0821, 0x9583, 0x9583, 0x09EA, 0x9585, 0x9585, 0x38A1, + 0x9586, 0x9586, 0x20A2, 0x9588, 0x9588, 0x20A3, 0x9589, 0x9589, 0x0BD0, + 0x958B, 0x958B, 0x0D9A, 0x958C, 0x958C, 0x234C, 0x958D, 0x958D, 0x234B, + 0x958E, 0x958E, 0x0D9E, 0x958F, 0x958F, 0x0D99, 0x9590, 0x9590, 0x234D, + 0x9591, 0x9591, 0x0D9B, 0x9592, 0x9592, 0x0D9D, 0x9593, 0x9593, 0x0D9C, + 0x9594, 0x9594, 0x0D98, 0x9596, 0x9596, 0x3BD5, 0x9597, 0x9597, 0x3BD4, + 0x9598, 0x9598, 0x0F5C, 0x9599, 0x9599, 0x3BD2, 0x959B, 0x959B, 0x25F3, + 0x959C, 0x959C, 0x25F1, 0x959E, 0x959E, 0x25F2, 0x959F, 0x959F, 0x25F0, + 0x95A0, 0x95A0, 0x38A4, 0x95A1, 0x95A1, 0x10DF, 0x95A2, 0x95A2, 0x47AD, + 0x95A3, 0x95A3, 0x10E2, 0x95A4, 0x95A4, 0x10E4, 0x95A5, 0x95A5, 0x10E3, + 0x95A6, 0x95A6, 0x38A2, 0x95A7, 0x95A7, 0x3BD3, 0x95A8, 0x95A9, 0x10E0, + 0x95AA, 0x95AA, 0x4395, 0x95AB, 0x95AB, 0x2AB3, 0x95AC, 0x95AC, 0x2AB2, + 0x95AD, 0x95AD, 0x1260, 0x95AE, 0x95AE, 0x2AB4, 0x95B0, 0x95B0, 0x2AB5, + 0x95B1, 0x95B1, 0x1261, 0x95B5, 0x95B5, 0x2CF0, 0x95B6, 0x95B6, 0x2CEE, + 0x95B7, 0x95B7, 0x2EAD, 0x95B9, 0x95BA, 0x2CEC, 0x95BB, 0x95BB, 0x1385, + 0x95BC, 0x95BC, 0x2CE9, 0x95BD, 0x95BD, 0x2CF1, 0x95BE, 0x95BE, 0x2CEB, + 0x95BF, 0x95BF, 0x2CEF, 0x95C0, 0x95C0, 0x2EA9, 0x95C3, 0x95C3, 0x2EAB, + 0x95C5, 0x95C5, 0x2EAC, 0x95C6, 0x95C6, 0x14AE, 0x95C7, 0x95C7, 0x2EA8, + 0x95C8, 0x95C8, 0x14AD, 0x95C9, 0x95C9, 0x2EAA, 0x95CA, 0x95CC, 0x14AA, + 0x95CD, 0x95CD, 0x2CEA, 0x95D0, 0x95D0, 0x154C, 0x95D1, 0x95D1, 0x301F, + 0x95D2, 0x95D3, 0x301D, 0x95D4, 0x95D4, 0x154A, 0x95D5, 0x95D5, 0x154D, + 0x95D6, 0x95D6, 0x154B, 0x95DA, 0x95DB, 0x3163, 0x95DC, 0x95DC, 0x15EB, + 0x95DE, 0x95DE, 0x326C, 0x95DF, 0x95DF, 0x326E, 0x95E0, 0x95E0, 0x326D, + 0x95E1, 0x95E1, 0x1655, 0x95E2, 0x95E2, 0x16A0, 0x95E3, 0x95E3, 0x3330, + 0x95E4, 0x95E4, 0x332F, 0x95E5, 0x95E5, 0x332E, 0x95E8, 0x95E8, 0x450A, + 0x95F4, 0x95F4, 0x47AF, 0x961C, 0x961C, 0x0699, 0x961D, 0x961D, 0x4519, + 0x961E, 0x961E, 0x17B4, 0x9620, 0x9620, 0x1821, 0x9621, 0x9621, 0x0414, + 0x9622, 0x9622, 0x181F, 0x9623, 0x9623, 0x1822, 0x9624, 0x9624, 0x1820, + 0x9628, 0x9628, 0x18F1, 0x962A, 0x962A, 0x0526, 0x962C, 0x962C, 0x0527, + 0x962D, 0x962D, 0x18F3, 0x962E, 0x962E, 0x0524, 0x962F, 0x962F, 0x18F2, + 0x9630, 0x9630, 0x18F0, 0x9631, 0x9631, 0x0525, 0x9632, 0x9632, 0x0523, + 0x9633, 0x9633, 0x47B0, 0x9638, 0x9638, 0x3FD1, 0x9639, 0x9639, 0x1A55, + 0x963A, 0x963A, 0x1A58, 0x963B, 0x963B, 0x069C, 0x963C, 0x963C, 0x1A57, + 0x963D, 0x963D, 0x1A56, 0x963F, 0x963F, 0x069B, 0x9640, 0x9640, 0x069A, + 0x9641, 0x9641, 0x3F3D, 0x9642, 0x9642, 0x069E, 0x9643, 0x9643, 0x1A59, + 0x9644, 0x9644, 0x069D, 0x9645, 0x9645, 0x4772, 0x964A, 0x964A, 0x1C1A, + 0x964B, 0x964D, 0x0823, 0x964E, 0x964E, 0x1C1B, 0x964F, 0x964F, 0x1C17, + 0x9650, 0x9650, 0x0822, 0x9651, 0x9651, 0x1C18, 0x9653, 0x9653, 0x1C19, + 0x9654, 0x9654, 0x1C16, 0x9656, 0x9656, 0x3DE7, 0x9658, 0x9658, 0x09F1, + 0x965B, 0x965B, 0x09EE, 0x965C, 0x965C, 0x1E2F, 0x965D, 0x965D, 0x09EF, + 0x965E, 0x965E, 0x09F2, 0x965F, 0x965F, 0x1E30, 0x9661, 0x9661, 0x09ED, + 0x9662, 0x9663, 0x09EB, 0x9664, 0x9664, 0x09F0, 0x9669, 0x9669, 0x475E, + 0x966A, 0x966A, 0x0BD1, 0x966B, 0x966B, 0x20A6, 0x966C, 0x966C, 0x0BD9, + 0x966D, 0x966D, 0x20A5, 0x966F, 0x966F, 0x20A8, 0x9670, 0x9670, 0x0BD5, + 0x9671, 0x9671, 0x20A7, 0x9672, 0x9672, 0x0DA6, 0x9673, 0x9673, 0x0BD3, + 0x9674, 0x9674, 0x0BD6, 0x9675, 0x9675, 0x0BD2, 0x9676, 0x9677, 0x0BD7, + 0x9678, 0x9678, 0x0BD4, 0x967B, 0x967B, 0x38AC, 0x967C, 0x967C, 0x20A4, + 0x967D, 0x967D, 0x0DA2, 0x967E, 0x967E, 0x234F, 0x9680, 0x9680, 0x2353, + 0x9681, 0x9681, 0x3F46, 0x9683, 0x9683, 0x2352, 0x9684, 0x9684, 0x0DA7, + 0x9685, 0x9686, 0x0DA3, 0x9687, 0x9687, 0x234E, 0x9688, 0x9689, 0x2350, + 0x968A, 0x968A, 0x0D9F, 0x968B, 0x968B, 0x0DA1, 0x968D, 0x968D, 0x0DA5, + 0x968E, 0x968E, 0x0DA0, 0x968F, 0x968F, 0x3BDE, 0x9691, 0x9691, 0x25F6, + 0x9692, 0x9693, 0x25F4, 0x9694, 0x9695, 0x0F5E, 0x9696, 0x9696, 0x38AD, + 0x9697, 0x9697, 0x25F7, 0x9698, 0x9698, 0x0F5D, 0x9699, 0x9699, 0x10E5, + 0x969B, 0x969B, 0x10E7, 0x969C, 0x969C, 0x10E6, 0x969E, 0x969E, 0x2852, + 0x96A1, 0x96A1, 0x2853, 0x96A2, 0x96A2, 0x2AB7, 0x96A3, 0x96A3, 0x38AF, + 0x96A4, 0x96A4, 0x2AB6, 0x96A5, 0x96A5, 0x42EF, 0x96A7, 0x96A8, 0x1386, + 0x96A9, 0x96A9, 0x2CF2, 0x96AA, 0x96AA, 0x1388, 0x96AC, 0x96AC, 0x2EB0, + 0x96AE, 0x96AE, 0x2EAE, 0x96B0, 0x96B0, 0x2EAF, 0x96B1, 0x96B1, 0x14AF, + 0x96B3, 0x96B3, 0x3020, 0x96B4, 0x96B4, 0x15EC, 0x96B6, 0x96B6, 0x0231, + 0x96B8, 0x96B8, 0x14B0, 0x96B9, 0x96B9, 0x069F, 0x96BB, 0x96BB, 0x09F3, + 0x96BC, 0x96BC, 0x1E31, 0x96BD, 0x96BD, 0x38B5, 0x96BF, 0x96BF, 0x20A9, + 0x96C0, 0x96C0, 0x0BDA, 0x96C1, 0x96C1, 0x0DA8, 0x96C2, 0x96C2, 0x2354, + 0x96C3, 0x96C3, 0x2356, 0x96C4, 0x96C4, 0x0DAA, 0x96C5, 0x96C5, 0x0DA9, + 0x96C6, 0x96C7, 0x0DAB, 0x96C8, 0x96C8, 0x2355, 0x96C9, 0x96CA, 0x0F62, + 0x96CB, 0x96CB, 0x0F61, 0x96CC, 0x96CC, 0x10E8, 0x96CD, 0x96CD, 0x0F60, + 0x96CE, 0x96CE, 0x25F8, 0x96D2, 0x96D2, 0x10E9, 0x96D3, 0x96D3, 0x2AB8, + 0x96D4, 0x96D4, 0x2CF3, 0x96D5, 0x96D5, 0x1389, 0x96D6, 0x96D6, 0x14B1, + 0x96D7, 0x96D7, 0x3021, 0x96D8, 0x96D8, 0x3025, 0x96D9, 0x96D9, 0x1550, + 0x96DA, 0x96DA, 0x3022, 0x96DB, 0x96DB, 0x1551, 0x96DC, 0x96DC, 0x154F, + 0x96DD, 0x96DD, 0x3026, 0x96DE, 0x96DE, 0x1552, 0x96DF, 0x96DF, 0x3024, + 0x96E1, 0x96E1, 0x3165, 0x96E2, 0x96E2, 0x154E, 0x96E3, 0x96E3, 0x15ED, + 0x96E5, 0x96E5, 0x34A8, 0x96E8, 0x96E8, 0x06A0, 0x96E9, 0x96E9, 0x0BDC, + 0x96EA, 0x96EA, 0x0BDB, 0x96EF, 0x96EF, 0x0DAD, 0x96F0, 0x96F0, 0x2358, + 0x96F1, 0x96F1, 0x2357, 0x96F2, 0x96F2, 0x0DAE, 0x96F4, 0x96F4, 0x3A04, + 0x96F5, 0x96F5, 0x25FC, 0x96F6, 0x96F6, 0x0F67, 0x96F7, 0x96F7, 0x0F64, + 0x96F8, 0x96F8, 0x25FB, 0x96F9, 0x96F9, 0x0F66, 0x96FA, 0x96FA, 0x25F9, + 0x96FB, 0x96FB, 0x0F65, 0x96FD, 0x96FD, 0x25FA, 0x96FF, 0x96FF, 0x2854, + 0x9700, 0x9700, 0x10EA, 0x9702, 0x9702, 0x2ABB, 0x9703, 0x9703, 0x3F0D, + 0x9704, 0x9704, 0x1262, 0x9705, 0x9705, 0x2AB9, 0x9706, 0x9707, 0x1263, + 0x9708, 0x9708, 0x2ABA, 0x9709, 0x9709, 0x1265, 0x970B, 0x970B, 0x2CF4, + 0x970D, 0x970D, 0x138D, 0x970E, 0x970E, 0x138A, 0x970F, 0x970F, 0x138F, + 0x9710, 0x9710, 0x2CF6, 0x9711, 0x9711, 0x138B, 0x9712, 0x9712, 0x2CF5, + 0x9713, 0x9713, 0x138E, 0x9716, 0x9716, 0x138C, 0x9718, 0x9718, 0x2EB3, + 0x9719, 0x9719, 0x2EB5, 0x971B, 0x971B, 0x38C9, 0x971C, 0x971C, 0x14B2, + 0x971D, 0x971D, 0x2EB4, 0x971E, 0x971E, 0x14B3, 0x971F, 0x971F, 0x2EB2, + 0x9720, 0x9720, 0x2EB1, 0x9721, 0x9721, 0x3FB3, 0x9722, 0x9722, 0x3028, + 0x9723, 0x9723, 0x3027, 0x9724, 0x9724, 0x1553, 0x9725, 0x9725, 0x3029, + 0x9726, 0x9726, 0x316A, 0x9727, 0x9727, 0x15EF, 0x9728, 0x9728, 0x3169, + 0x9729, 0x9729, 0x3166, 0x972A, 0x972A, 0x15EE, 0x972B, 0x972C, 0x3167, + 0x972E, 0x972F, 0x326F, 0x9730, 0x9730, 0x1656, 0x9731, 0x9731, 0x38C0, + 0x9732, 0x9732, 0x16A3, 0x9735, 0x9735, 0x3331, 0x9736, 0x9736, 0x38C2, + 0x9738, 0x9739, 0x16A1, 0x973A, 0x973A, 0x3332, 0x973D, 0x973E, 0x16E2, + 0x973F, 0x973F, 0x33D1, 0x9740, 0x9740, 0x47B3, 0x9741, 0x9741, 0x3BE9, + 0x9742, 0x9742, 0x1732, 0x9743, 0x9743, 0x34AA, 0x9744, 0x9744, 0x1734, + 0x9746, 0x9746, 0x34A9, 0x9747, 0x9747, 0x34AB, 0x9748, 0x9748, 0x1733, + 0x9749, 0x9749, 0x34F1, 0x974B, 0x974B, 0x3526, 0x9751, 0x9751, 0x44E3, + 0x9752, 0x9752, 0x06A1, 0x9756, 0x9756, 0x0F68, 0x9757, 0x9757, 0x38CC, + 0x9758, 0x9758, 0x2855, 0x975A, 0x975A, 0x2ABC, 0x975B, 0x975C, 0x1390, + 0x975D, 0x975D, 0x3BEF, 0x975E, 0x975E, 0x06A2, 0x975F, 0x975F, 0x38CF, + 0x9760, 0x9760, 0x1266, 0x9761, 0x9761, 0x15F0, 0x9762, 0x9762, 0x0826, + 0x9766, 0x9766, 0x1392, 0x9768, 0x9768, 0x1710, 0x9769, 0x9769, 0x0827, + 0x976A, 0x976A, 0x20AA, 0x976C, 0x976C, 0x2359, 0x976D, 0x976D, 0x3E97, + 0x976E, 0x976E, 0x235B, 0x9770, 0x9770, 0x235A, 0x9771, 0x9771, 0x3BFC, + 0x9772, 0x9772, 0x2600, 0x9773, 0x9773, 0x25FD, 0x9774, 0x9774, 0x0F69, + 0x9776, 0x9776, 0x0F6A, 0x9777, 0x9778, 0x25FE, 0x977A, 0x977A, 0x2857, + 0x977B, 0x977B, 0x285C, 0x977C, 0x977C, 0x10EB, 0x977D, 0x977D, 0x2856, + 0x977E, 0x977E, 0x2858, 0x977F, 0x977F, 0x285F, 0x9780, 0x9780, 0x285A, + 0x9781, 0x9781, 0x285E, 0x9782, 0x9782, 0x285B, 0x9783, 0x9783, 0x2859, + 0x9784, 0x9784, 0x285D, 0x9785, 0x9785, 0x10EC, 0x9787, 0x9787, 0x40C0, + 0x9788, 0x9788, 0x2ABF, 0x9789, 0x9789, 0x38D4, 0x978A, 0x978A, 0x2ABD, + 0x978B, 0x978B, 0x1268, 0x978D, 0x978D, 0x1267, 0x978E, 0x978E, 0x2ABE, + 0x978F, 0x978F, 0x1269, 0x9794, 0x9794, 0x2CF9, 0x9797, 0x9797, 0x2CF8, + 0x9798, 0x9798, 0x1393, 0x9799, 0x9799, 0x2CF7, 0x979A, 0x979A, 0x2EB6, + 0x979B, 0x979B, 0x3BFB, 0x979C, 0x979C, 0x2EB8, 0x979D, 0x979D, 0x2EBA, + 0x979E, 0x979E, 0x2EB9, 0x979F, 0x979F, 0x38D5, 0x97A0, 0x97A0, 0x14B4, + 0x97A1, 0x97A1, 0x2EB7, 0x97A2, 0x97A2, 0x3030, 0x97A3, 0x97A3, 0x1554, + 0x97A4, 0x97A4, 0x302E, 0x97A5, 0x97A5, 0x3031, 0x97A6, 0x97A6, 0x1555, + 0x97A8, 0x97A8, 0x302C, 0x97AA, 0x97AA, 0x302F, 0x97AB, 0x97AB, 0x302D, + 0x97AC, 0x97AC, 0x302A, 0x97AD, 0x97AD, 0x1556, 0x97AE, 0x97AE, 0x302B, + 0x97B1, 0x97B1, 0x38D6, 0x97B2, 0x97B2, 0x47B5, 0x97B3, 0x97B3, 0x316B, + 0x97B4, 0x97B4, 0x3F33, 0x97B6, 0x97B6, 0x316D, 0x97B7, 0x97B7, 0x316C, + 0x97B8, 0x97B8, 0x3D95, 0x97B9, 0x97B9, 0x3271, 0x97BA, 0x97BA, 0x3F35, + 0x97BB, 0x97BB, 0x3272, 0x97BD, 0x97BD, 0x494E, 0x97BE, 0x97BE, 0x38D7, + 0x97BF, 0x97BF, 0x3333, 0x97C0, 0x97C0, 0x38D8, 0x97C1, 0x97C1, 0x16E5, + 0x97C2, 0x97C2, 0x47B6, 0x97C3, 0x97C3, 0x16E4, 0x97C4, 0x97C5, 0x344C, + 0x97C6, 0x97C6, 0x1735, 0x97C7, 0x97C7, 0x34AC, 0x97C8, 0x97C8, 0x3F2F, + 0x97C9, 0x97C9, 0x1756, 0x97CB, 0x97CB, 0x0828, 0x97CC, 0x97CC, 0x0DAF, + 0x97CD, 0x97CD, 0x2861, 0x97CE, 0x97CE, 0x2860, 0x97CF, 0x97CF, 0x2AC1, + 0x97D0, 0x97D0, 0x2AC0, 0x97D2, 0x97D2, 0x38D9, 0x97D3, 0x97D3, 0x14B5, + 0x97D4, 0x97D4, 0x2EBC, 0x97D5, 0x97D5, 0x2EBB, 0x97D6, 0x97D6, 0x3034, + 0x97D7, 0x97D7, 0x3032, 0x97D8, 0x97D8, 0x3035, 0x97D9, 0x97D9, 0x3033, + 0x97DC, 0x97DC, 0x15F1, 0x97DD, 0x97DF, 0x316E, 0x97E0, 0x97E0, 0x38DA, + 0x97E1, 0x97E1, 0x3334, 0x97E3, 0x97E3, 0x33D2, 0x97E5, 0x97E5, 0x34AD, + 0x97E6, 0x97E6, 0x450C, 0x97ED, 0x97ED, 0x0829, 0x97EE, 0x97EE, 0x38DC, + 0x97F0, 0x97F0, 0x2CFA, 0x97F1, 0x97F1, 0x2EBD, 0x97F2, 0x97F2, 0x394D, + 0x97F3, 0x97F3, 0x082A, 0x97F5, 0x97F5, 0x38E0, 0x97F6, 0x97F6, 0x10ED, + 0x97F8, 0x97F8, 0x2CFB, 0x97F9, 0x97F9, 0x1557, 0x97FA, 0x97FA, 0x3036, + 0x97FB, 0x97FB, 0x15F2, 0x97FD, 0x97FE, 0x3273, 0x97FF, 0x97FF, 0x16A4, + 0x9800, 0x9800, 0x344E, 0x9801, 0x9801, 0x082B, 0x9802, 0x9803, 0x0BDF, + 0x9804, 0x9804, 0x20AB, 0x9805, 0x9806, 0x0DB0, 0x9807, 0x9807, 0x235C, + 0x9808, 0x9808, 0x0DB2, 0x980A, 0x980A, 0x0F6E, 0x980C, 0x980C, 0x0F70, + 0x980D, 0x980E, 0x2602, 0x980F, 0x980F, 0x2601, 0x9810, 0x9811, 0x0F6B, + 0x9812, 0x9812, 0x0F6F, 0x9813, 0x9813, 0x0F6D, 0x9814, 0x9814, 0x4952, + 0x9815, 0x9815, 0x433C, 0x9816, 0x9816, 0x2862, 0x9817, 0x9818, 0x10EE, + 0x981B, 0x981B, 0x2AC8, 0x981C, 0x981C, 0x126C, 0x981D, 0x981D, 0x2AC3, + 0x981E, 0x981E, 0x2AC2, 0x981F, 0x981F, 0x3C02, 0x9820, 0x9820, 0x2AC7, + 0x9821, 0x9821, 0x126A, 0x9823, 0x9823, 0x3E37, 0x9824, 0x9824, 0x139A, + 0x9826, 0x9826, 0x2AC4, 0x9827, 0x9827, 0x2AC9, 0x9828, 0x9828, 0x2AC6, + 0x9829, 0x9829, 0x2AC5, 0x982B, 0x982B, 0x126B, 0x982D, 0x982D, 0x1398, + 0x982E, 0x982E, 0x3F72, 0x982F, 0x982F, 0x2CFD, 0x9830, 0x9830, 0x1394, + 0x9832, 0x9832, 0x2CFE, 0x9833, 0x9833, 0x38E5, 0x9834, 0x9834, 0x38E4, + 0x9835, 0x9835, 0x2CFC, 0x9837, 0x9837, 0x1397, 0x9838, 0x9838, 0x1395, + 0x9839, 0x9839, 0x1399, 0x983B, 0x983B, 0x1396, 0x9841, 0x9841, 0x2EBE, + 0x9843, 0x9843, 0x2EC3, 0x9844, 0x9844, 0x2EBF, 0x9845, 0x9845, 0x2EC2, + 0x9846, 0x9846, 0x14B6, 0x9847, 0x9847, 0x3D96, 0x9848, 0x9848, 0x2DF2, + 0x9849, 0x9849, 0x2EC1, 0x984A, 0x984A, 0x2EC0, 0x984B, 0x984B, 0x38E6, + 0x984C, 0x984C, 0x155A, 0x984D, 0x984D, 0x1558, 0x984E, 0x984E, 0x155B, + 0x984F, 0x984F, 0x1559, 0x9850, 0x9852, 0x3037, 0x9853, 0x9853, 0x155C, + 0x9857, 0x9857, 0x3174, 0x9858, 0x9858, 0x15F4, 0x9859, 0x9859, 0x3172, + 0x985B, 0x985B, 0x15F5, 0x985C, 0x985C, 0x3171, 0x985D, 0x985D, 0x3173, + 0x985E, 0x985E, 0x15F3, 0x985F, 0x985F, 0x3278, 0x9860, 0x9860, 0x3275, + 0x9862, 0x9863, 0x3276, 0x9864, 0x9864, 0x3335, 0x9865, 0x9865, 0x16A6, + 0x9866, 0x9866, 0x38E7, 0x9867, 0x9867, 0x16A5, 0x9869, 0x9869, 0x33D4, + 0x986A, 0x986A, 0x33D3, 0x986B, 0x986B, 0x16E6, 0x986C, 0x986C, 0x4035, + 0x986F, 0x986F, 0x1711, 0x9870, 0x9870, 0x1736, 0x9871, 0x9871, 0x174D, + 0x9872, 0x9872, 0x34F2, 0x9873, 0x9874, 0x3527, 0x9875, 0x9875, 0x450D, + 0x98A8, 0x98A8, 0x082C, 0x98A9, 0x98A9, 0x235D, 0x98AC, 0x98AC, 0x2604, + 0x98AD, 0x98AE, 0x2863, 0x98AF, 0x98AF, 0x10F0, 0x98B1, 0x98B1, 0x10F1, + 0x98B2, 0x98B2, 0x2ACA, 0x98B3, 0x98B3, 0x126D, 0x98B4, 0x98B4, 0x3F73, + 0x98B6, 0x98B6, 0x14B7, 0x98B7, 0x98B7, 0x38EF, 0x98B8, 0x98B8, 0x303A, + 0x98B9, 0x98B9, 0x47B8, 0x98BA, 0x98BA, 0x155D, 0x98BB, 0x98BB, 0x3177, + 0x98BC, 0x98BC, 0x15F6, 0x98BD, 0x98BD, 0x3176, 0x98BE, 0x98BE, 0x3178, + 0x98BF, 0x98BF, 0x3175, 0x98C0, 0x98C0, 0x3338, 0x98C1, 0x98C2, 0x3279, + 0x98C3, 0x98C3, 0x3B78, 0x98C4, 0x98C4, 0x1657, 0x98C6, 0x98C6, 0x3337, + 0x98C7, 0x98C7, 0x38F1, 0x98C8, 0x98C8, 0x38F0, 0x98C9, 0x98C9, 0x3336, + 0x98CA, 0x98CA, 0x38EE, 0x98CB, 0x98CB, 0x33D5, 0x98CC, 0x98CC, 0x3529, + 0x98CE, 0x98CE, 0x450E, 0x98DB, 0x98DB, 0x082D, 0x98DC, 0x98DC, 0x3C0B, + 0x98DE, 0x98DE, 0x450F, 0x98DF, 0x98DF, 0x082E, 0x98E0, 0x98E0, 0x4792, + 0x98E1, 0x98E1, 0x38F6, 0x98E2, 0x98E2, 0x09F4, 0x98E3, 0x98E3, 0x1E32, + 0x98E5, 0x98E5, 0x20AC, 0x98E6, 0x98E6, 0x38F7, 0x98E7, 0x98E7, 0x0DB3, + 0x98E9, 0x98E9, 0x0DB6, 0x98EA, 0x98EA, 0x0DB4, 0x98EB, 0x98EB, 0x235E, + 0x98EC, 0x98EC, 0x38F8, 0x98ED, 0x98ED, 0x0DB8, 0x98EF, 0x98EF, 0x0DB5, + 0x98F1, 0x98F1, 0x47BA, 0x98F2, 0x98F2, 0x0DB7, 0x98F4, 0x98F4, 0x0F72, + 0x98F5, 0x98F5, 0x4365, 0x98F6, 0x98F6, 0x2605, 0x98F9, 0x98F9, 0x2606, + 0x98FA, 0x98FA, 0x2ACC, 0x98FC, 0x98FC, 0x0F71, 0x98FD, 0x98FE, 0x0F73, + 0x9900, 0x9900, 0x2866, 0x9902, 0x9902, 0x2865, 0x9903, 0x9903, 0x10F2, + 0x9905, 0x9905, 0x10F3, 0x9907, 0x9907, 0x2867, 0x9908, 0x9908, 0x2ACB, + 0x9909, 0x9909, 0x10F5, 0x990A, 0x990A, 0x126E, 0x990C, 0x990C, 0x10F4, + 0x990E, 0x990E, 0x43ED, 0x9910, 0x9910, 0x139B, 0x9911, 0x9911, 0x2ACD, + 0x9912, 0x9912, 0x1270, 0x9913, 0x9913, 0x126F, 0x9914, 0x9914, 0x2ACE, + 0x9915, 0x9915, 0x2AD1, 0x9916, 0x9917, 0x2ACF, 0x9918, 0x9918, 0x1271, + 0x9919, 0x9919, 0x47BC, 0x991A, 0x991A, 0x13A0, 0x991B, 0x991B, 0x139E, + 0x991C, 0x991C, 0x43EE, 0x991E, 0x991E, 0x139D, 0x991F, 0x991F, 0x2D00, + 0x9921, 0x9921, 0x139F, 0x9924, 0x9924, 0x2CFF, 0x9925, 0x9925, 0x2EC4, + 0x9927, 0x9927, 0x2D01, 0x9928, 0x9928, 0x139C, 0x9929, 0x9929, 0x2D02, + 0x992A, 0x992A, 0x2EC7, 0x992B, 0x992C, 0x2EC5, 0x992D, 0x992D, 0x2ECB, + 0x992E, 0x992E, 0x1561, 0x992F, 0x992F, 0x2ECA, 0x9930, 0x9930, 0x2ECD, + 0x9931, 0x9931, 0x2ECC, 0x9932, 0x9932, 0x2EC9, 0x9933, 0x9933, 0x2EC8, + 0x9935, 0x9935, 0x14B8, 0x9937, 0x9937, 0x47BD, 0x9938, 0x9938, 0x3BFD, + 0x9939, 0x9939, 0x38FA, 0x993A, 0x993A, 0x303D, 0x993B, 0x993B, 0x3C11, + 0x993C, 0x993C, 0x303C, 0x993D, 0x993D, 0x1560, 0x993E, 0x993F, 0x155E, + 0x9940, 0x9940, 0x3F34, 0x9941, 0x9941, 0x303B, 0x9942, 0x9942, 0x43FF, + 0x9943, 0x9943, 0x317B, 0x9945, 0x9945, 0x15F7, 0x9947, 0x9947, 0x317A, + 0x9948, 0x9948, 0x3179, 0x9949, 0x9949, 0x15F8, 0x994A, 0x994A, 0x3FB9, + 0x994B, 0x994B, 0x327F, 0x994C, 0x994C, 0x327E, 0x994D, 0x994D, 0x3C12, + 0x994E, 0x994E, 0x327C, 0x9950, 0x9950, 0x327B, 0x9951, 0x9951, 0x1659, + 0x9952, 0x9952, 0x1658, 0x9953, 0x9953, 0x3280, 0x9954, 0x9954, 0x33D6, + 0x9955, 0x9955, 0x16E7, 0x9956, 0x9956, 0x333A, 0x9957, 0x9957, 0x16A7, + 0x9958, 0x9958, 0x3339, 0x9959, 0x9959, 0x327D, 0x995B, 0x995B, 0x33D7, + 0x995C, 0x995C, 0x1712, 0x995D, 0x995D, 0x47BE, 0x995E, 0x995E, 0x174E, + 0x995F, 0x995F, 0x34F3, 0x9961, 0x9961, 0x352A, 0x9962, 0x9962, 0x43EF, + 0x9963, 0x9963, 0x4510, 0x9996, 0x9996, 0x082F, 0x9997, 0x9997, 0x20AD, + 0x9998, 0x9998, 0x2ECE, 0x9999, 0x9999, 0x0830, 0x999B, 0x999B, 0x3C15, + 0x999C, 0x999C, 0x2869, 0x999D, 0x999D, 0x2868, 0x999E, 0x999E, 0x2D03, + 0x99A1, 0x99A1, 0x2ED0, 0x99A3, 0x99A3, 0x2ECF, 0x99A4, 0x99A4, 0x41C3, + 0x99A5, 0x99A5, 0x1562, 0x99A6, 0x99A7, 0x317C, 0x99A8, 0x99A8, 0x165A, + 0x99AA, 0x99AA, 0x3C17, 0x99AB, 0x99AB, 0x352B, 0x99AC, 0x99AC, 0x09F5, + 0x99AD, 0x99AD, 0x0DBA, 0x99AE, 0x99AE, 0x0DB9, 0x99AF, 0x99AF, 0x2607, + 0x99B0, 0x99B0, 0x2609, 0x99B1, 0x99B1, 0x0F76, 0x99B2, 0x99B2, 0x2608, + 0x99B3, 0x99B3, 0x0F75, 0x99B4, 0x99B4, 0x0F77, 0x99B5, 0x99B5, 0x260A, + 0x99B8, 0x99B8, 0x394B, 0x99B9, 0x99B9, 0x286B, 0x99BA, 0x99BA, 0x286D, + 0x99BB, 0x99BB, 0x286C, 0x99BC, 0x99BC, 0x3C22, 0x99BD, 0x99BD, 0x286F, + 0x99C1, 0x99C1, 0x10F6, 0x99C2, 0x99C2, 0x286E, 0x99C3, 0x99C3, 0x286A, + 0x99C4, 0x99C4, 0x3D77, 0x99C5, 0x99C5, 0x47C1, 0x99C7, 0x99C7, 0x2870, + 0x99C9, 0x99C9, 0x2AD8, 0x99CB, 0x99CB, 0x2ADB, 0x99CC, 0x99CC, 0x2ADD, + 0x99CD, 0x99CD, 0x2AD3, 0x99CE, 0x99CE, 0x2AD7, 0x99CF, 0x99CF, 0x2AD4, + 0x99D0, 0x99D0, 0x1273, 0x99D1, 0x99D1, 0x1276, 0x99D2, 0x99D2, 0x1278, + 0x99D3, 0x99D4, 0x2AD5, 0x99D5, 0x99D5, 0x1277, 0x99D6, 0x99D6, 0x2AD9, + 0x99D7, 0x99D7, 0x2ADC, 0x99D8, 0x99D8, 0x2ADA, 0x99D9, 0x99D9, 0x1279, + 0x99DA, 0x99DA, 0x3F42, 0x99DB, 0x99DB, 0x1275, 0x99DC, 0x99DC, 0x2AD2, + 0x99DD, 0x99DD, 0x1272, 0x99DF, 0x99DF, 0x1274, 0x99E1, 0x99E1, 0x3785, + 0x99E2, 0x99E2, 0x13A2, 0x99E3, 0x99E3, 0x2D09, 0x99E4, 0x99E4, 0x2D07, + 0x99E5, 0x99E5, 0x2D06, 0x99E6, 0x99E6, 0x3B65, 0x99E7, 0x99E7, 0x2D0C, + 0x99E9, 0x99E9, 0x2D0B, 0x99EA, 0x99EA, 0x2D0A, 0x99EC, 0x99EC, 0x2D05, + 0x99ED, 0x99ED, 0x13A1, 0x99EE, 0x99EE, 0x2D04, 0x99F0, 0x99F0, 0x2D08, + 0x99F1, 0x99F1, 0x13A3, 0x99F4, 0x99F4, 0x2ED3, 0x99F5, 0x99F5, 0x38FF, + 0x99F6, 0x99F6, 0x2ED7, 0x99F7, 0x99F7, 0x2ED4, 0x99F8, 0x99F8, 0x2ED6, + 0x99F9, 0x99F9, 0x2ED5, 0x99FA, 0x99FA, 0x2ED2, 0x99FB, 0x99FB, 0x2ED8, + 0x99FC, 0x99FC, 0x2EDB, 0x99FD, 0x99FE, 0x2ED9, 0x99FF, 0x99FF, 0x14BA, + 0x9A01, 0x9A01, 0x14B9, 0x9A02, 0x9A02, 0x2ED1, 0x9A03, 0x9A03, 0x2EDC, + 0x9A04, 0x9A04, 0x3042, 0x9A05, 0x9A05, 0x3045, 0x9A06, 0x9A06, 0x3047, + 0x9A07, 0x9A07, 0x3046, 0x9A09, 0x9A09, 0x3040, 0x9A0A, 0x9A0A, 0x3044, + 0x9A0B, 0x9A0B, 0x303F, 0x9A0C, 0x9A0C, 0x3900, 0x9A0D, 0x9A0D, 0x3041, + 0x9A0E, 0x9A0E, 0x1563, 0x9A0F, 0x9A0F, 0x303E, 0x9A10, 0x9A10, 0x3902, + 0x9A11, 0x9A11, 0x3043, 0x9A14, 0x9A14, 0x318A, 0x9A15, 0x9A15, 0x317F, + 0x9A16, 0x9A16, 0x15F9, 0x9A19, 0x9A19, 0x15FA, 0x9A1A, 0x9A1A, 0x317E, + 0x9A1B, 0x9A1B, 0x3183, 0x9A1C, 0x9A1C, 0x3189, 0x9A1D, 0x9A1D, 0x3181, + 0x9A1E, 0x9A1E, 0x3188, 0x9A1F, 0x9A1F, 0x3B6C, 0x9A20, 0x9A20, 0x3185, + 0x9A21, 0x9A21, 0x3C1C, 0x9A22, 0x9A22, 0x3184, 0x9A23, 0x9A23, 0x3187, + 0x9A24, 0x9A24, 0x3182, 0x9A25, 0x9A25, 0x3180, 0x9A26, 0x9A26, 0x3DF2, + 0x9A27, 0x9A27, 0x3186, 0x9A29, 0x9A29, 0x3287, 0x9A2A, 0x9A2A, 0x3285, + 0x9A2B, 0x9A2B, 0x165B, 0x9A2C, 0x9A2C, 0x3284, 0x9A2D, 0x9A2D, 0x328A, + 0x9A2E, 0x9A2E, 0x3288, 0x9A2F, 0x9A2F, 0x3C1E, 0x9A30, 0x9A30, 0x165C, + 0x9A31, 0x9A31, 0x3283, 0x9A32, 0x9A32, 0x3281, 0x9A34, 0x9A34, 0x3282, + 0x9A35, 0x9A35, 0x165E, 0x9A36, 0x9A36, 0x3286, 0x9A37, 0x9A37, 0x165D, + 0x9A38, 0x9A38, 0x3289, 0x9A39, 0x9A39, 0x333B, 0x9A3A, 0x9A3A, 0x3341, + 0x9A3B, 0x9A3B, 0x3901, 0x9A3C, 0x9A3C, 0x47C3, 0x9A3D, 0x9A3D, 0x333C, + 0x9A3E, 0x9A3E, 0x16AB, 0x9A3F, 0x9A3F, 0x3342, 0x9A40, 0x9A40, 0x16AA, + 0x9A41, 0x9A41, 0x3340, 0x9A42, 0x9A42, 0x333F, 0x9A43, 0x9A43, 0x16A9, + 0x9A44, 0x9A44, 0x333E, 0x9A45, 0x9A45, 0x16A8, 0x9A46, 0x9A46, 0x333D, + 0x9A48, 0x9A48, 0x33DD, 0x9A49, 0x9A49, 0x33DF, 0x9A4A, 0x9A4A, 0x33DE, + 0x9A4C, 0x9A4C, 0x33DB, 0x9A4D, 0x9A4D, 0x16E9, 0x9A4E, 0x9A4E, 0x33D8, + 0x9A4F, 0x9A4F, 0x33DC, 0x9A50, 0x9A50, 0x33E1, 0x9A52, 0x9A52, 0x33E0, + 0x9A53, 0x9A54, 0x33D9, 0x9A55, 0x9A55, 0x16E8, 0x9A56, 0x9A56, 0x344F, + 0x9A57, 0x9A57, 0x1715, 0x9A58, 0x9A58, 0x3903, 0x9A59, 0x9A59, 0x3450, + 0x9A5A, 0x9A5B, 0x1713, 0x9A5C, 0x9A5C, 0x3C18, 0x9A5E, 0x9A5E, 0x34AE, + 0x9A5F, 0x9A5F, 0x1737, 0x9A60, 0x9A60, 0x3510, 0x9A62, 0x9A62, 0x1757, + 0x9A63, 0x9A63, 0x3B67, 0x9A64, 0x9A64, 0x352C, 0x9A65, 0x9A65, 0x1758, + 0x9A66, 0x9A67, 0x352D, 0x9A68, 0x9A68, 0x353C, 0x9A69, 0x9A69, 0x353B, + 0x9A6A, 0x9A6A, 0x1767, 0x9A6B, 0x9A6B, 0x3544, 0x9A6C, 0x9A6C, 0x4585, + 0x9A8F, 0x9A8F, 0x4586, 0x9AA8, 0x9AA8, 0x09F6, 0x9AAB, 0x9AAB, 0x260C, + 0x9AAD, 0x9AAD, 0x260B, 0x9AAF, 0x9AB0, 0x10F7, 0x9AB1, 0x9AB1, 0x2871, + 0x9AB2, 0x9AB2, 0x4332, 0x9AB3, 0x9AB3, 0x2ADE, 0x9AB4, 0x9AB4, 0x2D0F, + 0x9AB6, 0x9AB6, 0x43F0, 0x9AB7, 0x9AB7, 0x127A, 0x9AB8, 0x9AB8, 0x13A4, + 0x9AB9, 0x9AB9, 0x2D0D, 0x9ABA, 0x9ABA, 0x3F74, 0x9ABB, 0x9ABB, 0x2D10, + 0x9ABC, 0x9ABC, 0x13A5, 0x9ABD, 0x9ABD, 0x3D97, 0x9ABE, 0x9ABE, 0x2EDD, + 0x9ABF, 0x9ABF, 0x2D0E, 0x9AC0, 0x9AC0, 0x3048, 0x9AC1, 0x9AC1, 0x1564, + 0x9AC2, 0x9AC2, 0x318B, 0x9AC6, 0x9AC6, 0x328D, 0x9AC7, 0x9AC7, 0x328B, + 0x9ACA, 0x9ACA, 0x328C, 0x9ACD, 0x9ACD, 0x3343, 0x9ACF, 0x9ACF, 0x16AC, + 0x9AD0, 0x9AD0, 0x33E2, 0x9AD1, 0x9AD1, 0x1718, 0x9AD2, 0x9AD2, 0x16EA, + 0x9AD3, 0x9AD4, 0x1716, 0x9AD5, 0x9AD5, 0x34AF, 0x9AD6, 0x9AD6, 0x174F, + 0x9AD7, 0x9AD7, 0x3FAA, 0x9AD8, 0x9AD8, 0x09F7, 0x9ADC, 0x9ADC, 0x3049, + 0x9ADF, 0x9ADF, 0x1E33, 0x9AE0, 0x9AE0, 0x3908, 0x9AE1, 0x9AE1, 0x0F78, + 0x9AE2, 0x9AE2, 0x3909, 0x9AE3, 0x9AE3, 0x2872, 0x9AE6, 0x9AE6, 0x10F9, + 0x9AE7, 0x9AE7, 0x2873, 0x9AEB, 0x9AEB, 0x2AE0, 0x9AEC, 0x9AEC, 0x2ADF, + 0x9AED, 0x9AED, 0x13A7, 0x9AEE, 0x9AEF, 0x127B, 0x9AF1, 0x9AF1, 0x2AE3, + 0x9AF2, 0x9AF2, 0x2AE2, 0x9AF3, 0x9AF3, 0x2AE1, 0x9AF4, 0x9AF4, 0x390B, + 0x9AF6, 0x9AF6, 0x2D11, 0x9AF7, 0x9AF7, 0x2D14, 0x9AF9, 0x9AF9, 0x2D13, + 0x9AFA, 0x9AFA, 0x2D12, 0x9AFB, 0x9AFB, 0x13A6, 0x9AFC, 0x9AFC, 0x2EE1, + 0x9AFD, 0x9AFD, 0x2EDF, 0x9AFE, 0x9AFE, 0x2EDE, 0x9AFF, 0x9AFF, 0x3F17, + 0x9B01, 0x9B01, 0x2EE0, 0x9B02, 0x9B02, 0x3F12, 0x9B03, 0x9B03, 0x1565, + 0x9B04, 0x9B05, 0x304B, 0x9B06, 0x9B06, 0x1566, 0x9B08, 0x9B08, 0x304A, + 0x9B09, 0x9B09, 0x3F20, 0x9B0A, 0x9B0A, 0x318D, 0x9B0B, 0x9B0B, 0x318C, + 0x9B0C, 0x9B0C, 0x318F, 0x9B0D, 0x9B0D, 0x15FB, 0x9B0E, 0x9B0E, 0x318E, + 0x9B0F, 0x9B0F, 0x47C4, 0x9B10, 0x9B10, 0x328E, 0x9B11, 0x9B11, 0x3290, + 0x9B12, 0x9B12, 0x328F, 0x9B14, 0x9B14, 0x390D, 0x9B15, 0x9B15, 0x3344, + 0x9B16, 0x9B16, 0x3347, 0x9B17, 0x9B18, 0x3345, 0x9B19, 0x9B19, 0x33E3, + 0x9B1A, 0x9B1A, 0x16EB, 0x9B1E, 0x9B20, 0x3451, 0x9B22, 0x9B22, 0x1738, + 0x9B23, 0x9B23, 0x1750, 0x9B24, 0x9B24, 0x352F, 0x9B25, 0x9B25, 0x09F8, + 0x9B27, 0x9B27, 0x127D, 0x9B28, 0x9B28, 0x13A8, 0x9B29, 0x9B29, 0x304D, + 0x9B2A, 0x9B2A, 0x3F19, 0x9B2B, 0x9B2B, 0x33E4, 0x9B2D, 0x9B2D, 0x390E, + 0x9B2E, 0x9B2E, 0x3511, 0x9B2F, 0x9B2F, 0x1E34, 0x9B31, 0x9B31, 0x1768, + 0x9B32, 0x9B32, 0x09F9, 0x9B33, 0x9B33, 0x2D15, 0x9B34, 0x9B34, 0x3911, + 0x9B35, 0x9B35, 0x304E, 0x9B37, 0x9B37, 0x3190, 0x9B39, 0x9B39, 0x3F00, + 0x9B3A, 0x9B3A, 0x3348, 0x9B3B, 0x9B3B, 0x33E5, 0x9B3C, 0x9B3C, 0x09FA, + 0x9B3E, 0x9B3F, 0x2874, 0x9B40, 0x9B40, 0x3915, 0x9B41, 0x9B42, 0x10FA, + 0x9B43, 0x9B43, 0x2AE5, 0x9B44, 0x9B44, 0x127F, 0x9B45, 0x9B45, 0x127E, + 0x9B46, 0x9B46, 0x2AE4, 0x9B48, 0x9B48, 0x2EE2, 0x9B4A, 0x9B4A, 0x304F, + 0x9B4B, 0x9B4B, 0x3051, 0x9B4C, 0x9B4C, 0x3050, 0x9B4D, 0x9B4D, 0x1569, + 0x9B4E, 0x9B4E, 0x1568, 0x9B4F, 0x9B4F, 0x1567, 0x9B50, 0x9B50, 0x3914, + 0x9B51, 0x9B51, 0x16AE, 0x9B52, 0x9B52, 0x3349, 0x9B54, 0x9B54, 0x16AD, + 0x9B55, 0x9B55, 0x33E7, 0x9B56, 0x9B56, 0x33E6, 0x9B58, 0x9B58, 0x1739, + 0x9B59, 0x9B59, 0x34B0, 0x9B5A, 0x9B5A, 0x0BE1, 0x9B5B, 0x9B5B, 0x260D, + 0x9B5F, 0x9B5F, 0x2878, 0x9B60, 0x9B61, 0x2876, 0x9B64, 0x9B64, 0x2AEE, + 0x9B66, 0x9B66, 0x2AE9, 0x9B67, 0x9B67, 0x2AE6, 0x9B68, 0x9B68, 0x2AED, + 0x9B69, 0x9B69, 0x47C5, 0x9B6C, 0x9B6C, 0x2AEF, 0x9B6F, 0x9B6F, 0x1281, + 0x9B70, 0x9B70, 0x2AEC, 0x9B71, 0x9B71, 0x2AE8, 0x9B74, 0x9B74, 0x2AE7, + 0x9B75, 0x9B75, 0x2AEB, 0x9B76, 0x9B76, 0x2AEA, 0x9B77, 0x9B77, 0x1280, + 0x9B7A, 0x9B7A, 0x2D20, 0x9B7B, 0x9B7B, 0x2D1B, 0x9B7C, 0x9B7C, 0x2D19, + 0x9B7D, 0x9B7D, 0x2D22, 0x9B7E, 0x9B7E, 0x2D1A, 0x9B7F, 0x9B7F, 0x3C3B, + 0x9B80, 0x9B80, 0x2D16, 0x9B81, 0x9B81, 0x43F1, 0x9B82, 0x9B82, 0x2D1C, + 0x9B83, 0x9B83, 0x4219, 0x9B85, 0x9B85, 0x2D17, 0x9B86, 0x9B86, 0x2EEB, + 0x9B87, 0x9B87, 0x2D18, 0x9B88, 0x9B88, 0x2D23, 0x9B8B, 0x9B8B, 0x3EEE, + 0x9B8D, 0x9B8D, 0x4623, 0x9B8E, 0x9B8E, 0x3919, 0x9B8F, 0x9B8F, 0x3FAD, + 0x9B90, 0x9B90, 0x2D1F, 0x9B91, 0x9B91, 0x13A9, 0x9B92, 0x9B92, 0x2D1E, + 0x9B93, 0x9B93, 0x2D1D, 0x9B95, 0x9B95, 0x2D21, 0x9B97, 0x9B97, 0x3F71, + 0x9B9A, 0x9B9A, 0x2EE3, 0x9B9B, 0x9B9B, 0x2EE6, 0x9B9D, 0x9B9D, 0x3F56, + 0x9B9E, 0x9B9E, 0x2EE5, 0x9B9F, 0x9B9F, 0x3C3E, 0x9BA0, 0x9BA0, 0x2EED, + 0x9BA1, 0x9BA1, 0x2EE8, 0x9BA2, 0x9BA2, 0x2EEC, 0x9BA4, 0x9BA4, 0x2EEA, + 0x9BA5, 0x9BA5, 0x2EE9, 0x9BA6, 0x9BA6, 0x2EE7, 0x9BA8, 0x9BA8, 0x2EE4, + 0x9BAA, 0x9BAA, 0x14BD, 0x9BAB, 0x9BAB, 0x14BC, 0x9BAD, 0x9BAD, 0x14BE, + 0x9BAE, 0x9BAE, 0x14BB, 0x9BAF, 0x9BAF, 0x2EEE, 0x9BB0, 0x9BB0, 0x3FB4, + 0x9BB5, 0x9BB5, 0x3057, 0x9BB6, 0x9BB6, 0x305A, 0x9BB8, 0x9BB8, 0x3058, + 0x9BB9, 0x9BB9, 0x305C, 0x9BBD, 0x9BBD, 0x305D, 0x9BBF, 0x9BBF, 0x3055, + 0x9BC0, 0x9BC0, 0x156E, 0x9BC1, 0x9BC1, 0x3056, 0x9BC3, 0x9BC3, 0x3054, + 0x9BC4, 0x9BC4, 0x305B, 0x9BC6, 0x9BC6, 0x3053, 0x9BC7, 0x9BC7, 0x3052, + 0x9BC8, 0x9BC8, 0x156D, 0x9BC9, 0x9BC9, 0x156B, 0x9BCA, 0x9BCA, 0x156A, + 0x9BCF, 0x9BCF, 0x3C3C, 0x9BD3, 0x9BD3, 0x3059, 0x9BD4, 0x9BD4, 0x3199, + 0x9BD5, 0x9BD5, 0x319F, 0x9BD6, 0x9BD6, 0x15FE, 0x9BD7, 0x9BD7, 0x319A, + 0x9BD9, 0x9BD9, 0x319D, 0x9BDA, 0x9BDA, 0x31A1, 0x9BDB, 0x9BDB, 0x15FF, + 0x9BDC, 0x9BDC, 0x319C, 0x9BDD, 0x9BDD, 0x47C6, 0x9BDE, 0x9BDE, 0x3194, + 0x9BE0, 0x9BE0, 0x3193, 0x9BE1, 0x9BE1, 0x31A0, 0x9BE2, 0x9BE2, 0x3197, + 0x9BE4, 0x9BE4, 0x3195, 0x9BE5, 0x9BE5, 0x319E, 0x9BE6, 0x9BE6, 0x3196, + 0x9BE7, 0x9BE7, 0x15FD, 0x9BE8, 0x9BE8, 0x15FC, 0x9BE9, 0x9BE9, 0x3BC1, + 0x9BEA, 0x9BEB, 0x3191, 0x9BEC, 0x9BEC, 0x319B, 0x9BED, 0x9BED, 0x3ED7, + 0x9BF0, 0x9BF0, 0x3198, 0x9BF1, 0x9BF1, 0x47C7, 0x9BF4, 0x9BF4, 0x47C8, + 0x9BF7, 0x9BF7, 0x3293, 0x9BF8, 0x9BF8, 0x3296, 0x9BFD, 0x9BFD, 0x156C, + 0x9BFF, 0x9BFF, 0x391B, 0x9C02, 0x9C02, 0x391A, 0x9C05, 0x9C05, 0x3294, + 0x9C06, 0x9C06, 0x329A, 0x9C07, 0x9C07, 0x3298, 0x9C08, 0x9C08, 0x3292, + 0x9C09, 0x9C09, 0x329D, 0x9C0A, 0x9C0A, 0x3F3A, 0x9C0B, 0x9C0B, 0x3291, + 0x9C0C, 0x9C0C, 0x391C, 0x9C0D, 0x9C0D, 0x1660, 0x9C0E, 0x9C0E, 0x3299, + 0x9C10, 0x9C10, 0x3C3A, 0x9C12, 0x9C12, 0x3295, 0x9C13, 0x9C13, 0x165F, + 0x9C14, 0x9C14, 0x329C, 0x9C15, 0x9C15, 0x3F1E, 0x9C17, 0x9C17, 0x329B, + 0x9C1B, 0x9C1B, 0x491B, 0x9C1C, 0x9C1C, 0x334C, 0x9C1D, 0x9C1D, 0x334B, + 0x9C1F, 0x9C1F, 0x4622, 0x9C20, 0x9C20, 0x47CA, 0x9C21, 0x9C21, 0x3352, + 0x9C23, 0x9C23, 0x334E, 0x9C24, 0x9C24, 0x3351, 0x9C25, 0x9C25, 0x16B0, + 0x9C26, 0x9C26, 0x45E6, 0x9C28, 0x9C29, 0x334F, 0x9C2B, 0x9C2B, 0x334A, + 0x9C2C, 0x9C2C, 0x334D, 0x9C2D, 0x9C2D, 0x16AF, 0x9C2E, 0x9C2E, 0x3F22, + 0x9C2F, 0x9C2F, 0x3D87, 0x9C31, 0x9C31, 0x16ED, 0x9C32, 0x9C32, 0x33F2, + 0x9C33, 0x9C33, 0x33ED, 0x9C34, 0x9C34, 0x33F1, 0x9C35, 0x9C35, 0x3C39, + 0x9C36, 0x9C36, 0x33F4, 0x9C37, 0x9C37, 0x33F0, 0x9C39, 0x9C39, 0x33EC, + 0x9C3A, 0x9C3A, 0x3D7E, 0x9C3B, 0x9C3B, 0x16EF, 0x9C3C, 0x9C3C, 0x33EF, + 0x9C3D, 0x9C3D, 0x33F3, 0x9C3E, 0x9C3E, 0x16EE, 0x9C3F, 0x9C3F, 0x33EA, + 0x9C40, 0x9C40, 0x3297, 0x9C41, 0x9C41, 0x33EE, 0x9C44, 0x9C44, 0x33EB, + 0x9C45, 0x9C45, 0x3E71, 0x9C46, 0x9C46, 0x33E8, 0x9C48, 0x9C48, 0x33E9, + 0x9C49, 0x9C49, 0x16EC, 0x9C4A, 0x9C4A, 0x3457, 0x9C4B, 0x9C4B, 0x3459, + 0x9C4C, 0x9C4C, 0x345C, 0x9C4D, 0x9C4D, 0x3458, 0x9C4E, 0x9C4E, 0x345D, + 0x9C4F, 0x9C4F, 0x3C36, 0x9C50, 0x9C50, 0x3456, 0x9C52, 0x9C52, 0x3454, + 0x9C53, 0x9C53, 0x3C37, 0x9C54, 0x9C54, 0x1719, 0x9C55, 0x9C55, 0x345A, + 0x9C56, 0x9C56, 0x171B, 0x9C57, 0x9C57, 0x171A, 0x9C58, 0x9C58, 0x3455, + 0x9C59, 0x9C59, 0x345B, 0x9C5D, 0x9C5D, 0x3EBF, 0x9C5E, 0x9C5E, 0x34B5, + 0x9C5F, 0x9C5F, 0x173A, 0x9C60, 0x9C60, 0x34B6, 0x9C62, 0x9C62, 0x34B4, + 0x9C63, 0x9C63, 0x34B1, 0x9C66, 0x9C66, 0x34B3, 0x9C67, 0x9C67, 0x34B2, + 0x9C68, 0x9C68, 0x34F4, 0x9C6D, 0x9C6D, 0x34F6, 0x9C6E, 0x9C6E, 0x34F5, + 0x9C71, 0x9C71, 0x3514, 0x9C72, 0x9C72, 0x3EA1, 0x9C73, 0x9C73, 0x3513, + 0x9C74, 0x9C74, 0x3512, 0x9C75, 0x9C75, 0x3515, 0x9C77, 0x9C78, 0x1760, + 0x9C79, 0x9C79, 0x3541, 0x9C7A, 0x9C7A, 0x3545, 0x9C7B, 0x9C7B, 0x3C38, + 0x9C7C, 0x9C7C, 0x4512, 0x9CE5, 0x9CE5, 0x0BE2, 0x9CE6, 0x9CE6, 0x235F, + 0x9CE7, 0x9CE7, 0x2610, 0x9CE9, 0x9CE9, 0x0F79, 0x9CEA, 0x9CEA, 0x260E, + 0x9CED, 0x9CED, 0x260F, 0x9CF1, 0x9CF2, 0x2879, 0x9CF3, 0x9CF3, 0x10FE, + 0x9CF4, 0x9CF4, 0x10FC, 0x9CF5, 0x9CF5, 0x287B, 0x9CF6, 0x9CF6, 0x10FD, + 0x9CF7, 0x9CF7, 0x2AF4, 0x9CF9, 0x9CF9, 0x2AF7, 0x9CFA, 0x9CFA, 0x2AF1, + 0x9CFB, 0x9CFB, 0x2AF8, 0x9CFC, 0x9CFC, 0x2AF0, 0x9CFD, 0x9CFD, 0x2AF2, + 0x9CFF, 0x9CFF, 0x2AF3, 0x9D00, 0x9D00, 0x2AF6, 0x9D02, 0x9D02, 0x3F3B, + 0x9D03, 0x9D03, 0x1284, 0x9D04, 0x9D04, 0x2AFB, 0x9D05, 0x9D05, 0x2AFA, + 0x9D06, 0x9D06, 0x1282, 0x9D07, 0x9D07, 0x2AF5, 0x9D08, 0x9D08, 0x2AF9, + 0x9D09, 0x9D09, 0x1283, 0x9D0C, 0x9D0C, 0x3C46, 0x9D10, 0x9D10, 0x2D2D, + 0x9D12, 0x9D12, 0x13AE, 0x9D14, 0x9D14, 0x2D28, 0x9D15, 0x9D15, 0x13AA, + 0x9D16, 0x9D16, 0x3C7C, 0x9D17, 0x9D17, 0x2D25, 0x9D18, 0x9D18, 0x2D2B, + 0x9D19, 0x9D19, 0x2D2E, 0x9D1B, 0x9D1B, 0x13AF, 0x9D1D, 0x9D1D, 0x2D2A, + 0x9D1E, 0x9D1E, 0x2D27, 0x9D1F, 0x9D1F, 0x2D2F, 0x9D20, 0x9D20, 0x2D26, + 0x9D21, 0x9D21, 0x3C41, 0x9D22, 0x9D22, 0x2D2C, 0x9D23, 0x9D23, 0x13AB, + 0x9D25, 0x9D25, 0x2D24, 0x9D26, 0x9D26, 0x13AC, 0x9D28, 0x9D28, 0x13AD, + 0x9D29, 0x9D29, 0x2D29, 0x9D2D, 0x9D2D, 0x2F00, 0x9D2E, 0x9D2F, 0x2EF3, + 0x9D30, 0x9D30, 0x2EF7, 0x9D31, 0x9D31, 0x2EF5, 0x9D33, 0x9D33, 0x2EEF, + 0x9D34, 0x9D34, 0x404A, 0x9D36, 0x9D36, 0x2EF2, 0x9D37, 0x9D37, 0x2EFC, + 0x9D38, 0x9D38, 0x2EF6, 0x9D39, 0x9D39, 0x392E, 0x9D3B, 0x9D3B, 0x14BF, + 0x9D3D, 0x9D3D, 0x2EFE, 0x9D3E, 0x9D3E, 0x2EFB, 0x9D3F, 0x9D3F, 0x14C0, + 0x9D40, 0x9D40, 0x2EFD, 0x9D41, 0x9D41, 0x2EF0, 0x9D42, 0x9D43, 0x2EF9, + 0x9D44, 0x9D44, 0x3FAB, 0x9D45, 0x9D45, 0x2EF8, 0x9D49, 0x9D49, 0x47CD, + 0x9D4A, 0x9D4A, 0x3061, 0x9D4B, 0x9D4B, 0x3063, 0x9D4C, 0x9D4C, 0x3066, + 0x9D4E, 0x9D4E, 0x4539, 0x9D4F, 0x9D4F, 0x3060, 0x9D50, 0x9D50, 0x3ECA, + 0x9D51, 0x9D51, 0x156F, 0x9D52, 0x9D52, 0x3068, 0x9D53, 0x9D53, 0x305F, + 0x9D54, 0x9D54, 0x3069, 0x9D56, 0x9D56, 0x3065, 0x9D57, 0x9D57, 0x3067, + 0x9D58, 0x9D58, 0x306B, 0x9D59, 0x9D59, 0x3064, 0x9D5A, 0x9D5A, 0x306C, + 0x9D5B, 0x9D5B, 0x3062, 0x9D5C, 0x9D5C, 0x305E, 0x9D5D, 0x9D5D, 0x1570, + 0x9D5E, 0x9D5E, 0x3E6E, 0x9D5F, 0x9D5F, 0x306A, 0x9D60, 0x9D60, 0x1571, + 0x9D61, 0x9D61, 0x1601, 0x9D67, 0x9D67, 0x2EF1, 0x9D68, 0x9D68, 0x31BB, + 0x9D69, 0x9D69, 0x31B2, 0x9D6A, 0x9D6A, 0x1603, 0x9D6B, 0x9D6B, 0x31AE, + 0x9D6C, 0x9D6C, 0x1604, 0x9D6D, 0x9D6D, 0x3BAC, 0x9D6E, 0x9D6E, 0x433B, + 0x9D6F, 0x9D6F, 0x31B7, 0x9D70, 0x9D70, 0x31B1, 0x9D71, 0x9D71, 0x31A7, + 0x9D72, 0x9D72, 0x1602, 0x9D73, 0x9D73, 0x31B4, 0x9D74, 0x9D75, 0x31AF, + 0x9D77, 0x9D77, 0x31A2, 0x9D78, 0x9D78, 0x31A9, 0x9D79, 0x9D79, 0x31B8, + 0x9D7B, 0x9D7B, 0x31B5, 0x9D7C, 0x9D7C, 0x3EFE, 0x9D7D, 0x9D7D, 0x31AD, + 0x9D7E, 0x9D7E, 0x3925, 0x9D7F, 0x9D7F, 0x31B9, 0x9D80, 0x9D80, 0x31A8, + 0x9D81, 0x9D81, 0x31A3, 0x9D82, 0x9D82, 0x31B6, 0x9D83, 0x9D83, 0x3926, + 0x9D84, 0x9D84, 0x31A5, 0x9D85, 0x9D85, 0x31B3, 0x9D86, 0x9D86, 0x31AA, + 0x9D87, 0x9D87, 0x31BA, 0x9D88, 0x9D88, 0x31A6, 0x9D89, 0x9D89, 0x1600, + 0x9D8A, 0x9D8A, 0x31A4, 0x9D8B, 0x9D8C, 0x31AB, 0x9D90, 0x9D90, 0x32A4, + 0x9D92, 0x9D92, 0x32A2, 0x9D93, 0x9D93, 0x43F3, 0x9D94, 0x9D94, 0x32A7, + 0x9D96, 0x9D96, 0x32B3, 0x9D97, 0x9D97, 0x32AA, 0x9D98, 0x9D98, 0x32A3, + 0x9D99, 0x9D99, 0x329F, 0x9D9A, 0x9D9A, 0x32AC, 0x9D9B, 0x9D9B, 0x32A5, + 0x9D9C, 0x9D9C, 0x32A8, 0x9D9D, 0x9D9D, 0x32A1, 0x9D9E, 0x9D9E, 0x32AF, + 0x9D9F, 0x9D9F, 0x329E, 0x9DA0, 0x9DA0, 0x32A6, 0x9DA1, 0x9DA1, 0x32AB, + 0x9DA2, 0x9DA2, 0x32AD, 0x9DA3, 0x9DA3, 0x32B0, 0x9DA4, 0x9DA4, 0x32A0, + 0x9DA5, 0x9DA5, 0x3C4B, 0x9DA6, 0x9DA7, 0x32B4, 0x9DA8, 0x9DA8, 0x32AE, + 0x9DA9, 0x9DA9, 0x32B2, 0x9DAA, 0x9DAA, 0x32A9, 0x9DAB, 0x9DAB, 0x3F30, + 0x9DAC, 0x9DAC, 0x3362, 0x9DAD, 0x9DAD, 0x3365, 0x9DAF, 0x9DAF, 0x16B1, + 0x9DB1, 0x9DB1, 0x3364, 0x9DB2, 0x9DB2, 0x3369, 0x9DB3, 0x9DB3, 0x3367, + 0x9DB4, 0x9DB4, 0x16B2, 0x9DB5, 0x9DB5, 0x335E, 0x9DB6, 0x9DB6, 0x3354, + 0x9DB7, 0x9DB7, 0x3353, 0x9DB8, 0x9DB8, 0x16B4, 0x9DB9, 0x9DBA, 0x3360, + 0x9DBB, 0x9DBB, 0x335D, 0x9DBC, 0x9DBC, 0x3355, 0x9DBD, 0x9DBD, 0x47D0, + 0x9DBE, 0x9DBE, 0x335A, 0x9DBF, 0x9DBF, 0x32B1, 0x9DC0, 0x9DC0, 0x43F2, + 0x9DC1, 0x9DC1, 0x3356, 0x9DC2, 0x9DC2, 0x16B3, 0x9DC3, 0x9DC3, 0x335C, + 0x9DC4, 0x9DC4, 0x3929, 0x9DC5, 0x9DC5, 0x335B, 0x9DC7, 0x9DC7, 0x3357, + 0x9DC8, 0x9DC8, 0x3363, 0x9DC9, 0x9DC9, 0x4579, 0x9DCA, 0x9DCA, 0x3358, + 0x9DCB, 0x9DCB, 0x33F9, 0x9DCC, 0x9DCC, 0x3366, 0x9DCD, 0x9DCD, 0x3368, + 0x9DCE, 0x9DCE, 0x335F, 0x9DCF, 0x9DCF, 0x3359, 0x9DD0, 0x9DD0, 0x33FA, + 0x9DD1, 0x9DD1, 0x33FC, 0x9DD2, 0x9DD2, 0x33F6, 0x9DD3, 0x9DD3, 0x16F0, + 0x9DD4, 0x9DD4, 0x391E, 0x9DD5, 0x9DD5, 0x3403, 0x9DD6, 0x9DD6, 0x3401, + 0x9DD7, 0x9DD7, 0x16F1, 0x9DD8, 0x9DD8, 0x3400, 0x9DD9, 0x9DD9, 0x33FF, + 0x9DDA, 0x9DDA, 0x33F8, 0x9DDB, 0x9DDB, 0x33F5, 0x9DDC, 0x9DDC, 0x33FB, + 0x9DDD, 0x9DDD, 0x3404, 0x9DDE, 0x9DDE, 0x33F7, 0x9DDF, 0x9DDF, 0x33FD, + 0x9DE1, 0x9DE1, 0x3466, 0x9DE2, 0x9DE2, 0x346B, 0x9DE3, 0x9DE3, 0x3461, + 0x9DE4, 0x9DE4, 0x3464, 0x9DE5, 0x9DE5, 0x171C, 0x9DE6, 0x9DE6, 0x3468, + 0x9DE8, 0x9DE8, 0x346F, 0x9DE9, 0x9DE9, 0x33FE, 0x9DEB, 0x9DEB, 0x3462, + 0x9DEC, 0x9DEC, 0x346C, 0x9DED, 0x9DED, 0x3470, 0x9DEE, 0x9DEE, 0x3467, + 0x9DEF, 0x9DEF, 0x3460, 0x9DF0, 0x9DF0, 0x346A, 0x9DF2, 0x9DF2, 0x3469, + 0x9DF3, 0x9DF3, 0x346E, 0x9DF4, 0x9DF4, 0x346D, 0x9DF5, 0x9DF5, 0x3402, + 0x9DF6, 0x9DF6, 0x3465, 0x9DF7, 0x9DF7, 0x345F, 0x9DF8, 0x9DF8, 0x3463, + 0x9DF9, 0x9DFA, 0x173B, 0x9DFB, 0x9DFB, 0x345E, 0x9DFC, 0x9DFC, 0x47D1, + 0x9DFD, 0x9DFD, 0x34C1, 0x9DFE, 0x9DFE, 0x34B8, 0x9DFF, 0x9DFF, 0x34C0, + 0x9E00, 0x9E01, 0x34BD, 0x9E02, 0x9E02, 0x34B7, 0x9E03, 0x9E03, 0x34BA, + 0x9E04, 0x9E04, 0x34C2, 0x9E05, 0x9E05, 0x34BC, 0x9E06, 0x9E06, 0x34BB, + 0x9E07, 0x9E07, 0x34B9, 0x9E09, 0x9E09, 0x34BF, 0x9E0A, 0x9E0A, 0x457E, + 0x9E0B, 0x9E0B, 0x34F7, 0x9E0C, 0x9E0C, 0x457A, 0x9E0D, 0x9E0D, 0x34F8, + 0x9E0E, 0x9E0E, 0x3928, 0x9E0F, 0x9E0F, 0x34FA, 0x9E10, 0x9E10, 0x34F9, + 0x9E11, 0x9E11, 0x34FC, 0x9E12, 0x9E12, 0x34FB, 0x9E13, 0x9E13, 0x3517, + 0x9E14, 0x9E14, 0x3516, 0x9E15, 0x9E15, 0x3530, 0x9E17, 0x9E17, 0x3531, + 0x9E18, 0x9E18, 0x3C44, 0x9E19, 0x9E19, 0x353D, 0x9E1A, 0x9E1A, 0x1765, + 0x9E1B, 0x9E1B, 0x1769, 0x9E1C, 0x9E1C, 0x3F84, 0x9E1D, 0x9E1D, 0x3546, + 0x9E1E, 0x9E1E, 0x176A, 0x9E1F, 0x9E1F, 0x4513, 0x9E75, 0x9E75, 0x0BE3, + 0x9E79, 0x9E79, 0x1661, 0x9E7A, 0x9E7A, 0x336A, 0x9E7B, 0x9E7B, 0x43F8, + 0x9E7C, 0x9E7D, 0x173D, 0x9E7F, 0x9E7F, 0x0BE4, 0x9E80, 0x9E80, 0x2611, + 0x9E81, 0x9E81, 0x3F0F, 0x9E82, 0x9E82, 0x0F7A, 0x9E83, 0x9E83, 0x2AFC, + 0x9E84, 0x9E84, 0x3F76, 0x9E85, 0x9E85, 0x3EF2, 0x9E86, 0x9E87, 0x2D31, + 0x9E88, 0x9E88, 0x2D30, 0x9E89, 0x9E89, 0x2F02, 0x9E8A, 0x9E8A, 0x2F01, + 0x9E8B, 0x9E8B, 0x14C1, 0x9E8C, 0x9E8C, 0x306E, 0x9E8D, 0x9E8D, 0x2F03, + 0x9E8E, 0x9E8E, 0x306D, 0x9E90, 0x9E90, 0x3931, 0x9E91, 0x9E91, 0x31BD, + 0x9E92, 0x9E92, 0x1605, 0x9E93, 0x9E93, 0x1607, 0x9E94, 0x9E94, 0x31BC, + 0x9E95, 0x9E95, 0x3932, 0x9E96, 0x9E96, 0x3FBC, 0x9E97, 0x9E97, 0x1606, + 0x9E98, 0x9E98, 0x3F27, 0x9E99, 0x9E99, 0x32B6, 0x9E9A, 0x9E9A, 0x32B8, + 0x9E9B, 0x9E9B, 0x32B7, 0x9E9C, 0x9E9C, 0x336B, 0x9E9D, 0x9E9D, 0x16B5, + 0x9E9E, 0x9E9E, 0x3933, 0x9E9F, 0x9E9F, 0x171D, 0x9EA0, 0x9EA0, 0x34C3, + 0x9EA1, 0x9EA1, 0x34FD, 0x9EA2, 0x9EA2, 0x3934, 0x9EA4, 0x9EA4, 0x354A, + 0x9EA5, 0x9EA5, 0x0BE5, 0x9EA6, 0x9EA6, 0x4944, 0x9EA7, 0x9EA7, 0x287C, + 0x9EA8, 0x9EA8, 0x3F75, 0x9EA9, 0x9EA9, 0x1285, 0x9EAA, 0x9EAA, 0x3936, + 0x9EAB, 0x9EAB, 0x3E92, 0x9EAC, 0x9EAC, 0x43F4, 0x9EAD, 0x9EAD, 0x2D34, + 0x9EAE, 0x9EAE, 0x2D33, 0x9EAF, 0x9EAF, 0x3937, 0x9EB0, 0x9EB0, 0x2F04, + 0x9EB1, 0x9EB1, 0x47D4, 0x9EB4, 0x9EB4, 0x1608, 0x9EB5, 0x9EB5, 0x1662, + 0x9EB6, 0x9EB6, 0x3405, 0x9EB7, 0x9EB7, 0x3542, 0x9EBB, 0x9EBB, 0x0BE6, + 0x9EBC, 0x9EBC, 0x10FF, 0x9EBD, 0x9EBD, 0x47D5, 0x9EBE, 0x9EBE, 0x1286, + 0x9EBF, 0x9EBF, 0x3D78, 0x9EC0, 0x9EC0, 0x31BE, 0x9EC1, 0x9EC1, 0x3939, + 0x9EC2, 0x9EC2, 0x3471, 0x9EC3, 0x9EC3, 0x0DBB, 0x9EC4, 0x9EC4, 0x4514, + 0x9EC6, 0x9EC6, 0x47D6, 0x9EC7, 0x9EC7, 0x4577, 0x9EC8, 0x9EC8, 0x2F05, + 0x9ECC, 0x9ECC, 0x1751, 0x9ECD, 0x9ECD, 0x0DBC, 0x9ECE, 0x9ECE, 0x1287, + 0x9ECF, 0x9ECF, 0x14C2, 0x9ED0, 0x9ED0, 0x3472, 0x9ED1, 0x9ED1, 0x0DBD, + 0x9ED3, 0x9ED3, 0x2AFD, 0x9ED4, 0x9ED4, 0x13B1, 0x9ED5, 0x9ED6, 0x2D35, + 0x9ED8, 0x9ED8, 0x13B0, 0x9EDA, 0x9EDA, 0x2F06, 0x9EDB, 0x9EDB, 0x14C6, + 0x9EDC, 0x9EDD, 0x14C4, 0x9EDE, 0x9EDE, 0x14C3, 0x9EDF, 0x9EDF, 0x306F, + 0x9EE0, 0x9EE0, 0x1572, 0x9EE2, 0x9EE2, 0x47D8, 0x9EE4, 0x9EE4, 0x32BA, + 0x9EE5, 0x9EE5, 0x32B9, 0x9EE6, 0x9EE6, 0x32BC, 0x9EE7, 0x9EE7, 0x32BB, + 0x9EE8, 0x9EE8, 0x1663, 0x9EEB, 0x9EEB, 0x336C, 0x9EED, 0x9EED, 0x336E, + 0x9EEE, 0x9EEE, 0x336D, 0x9EEF, 0x9EEF, 0x16B6, 0x9EF0, 0x9EF0, 0x3406, + 0x9EF1, 0x9EF1, 0x47D9, 0x9EF2, 0x9EF3, 0x3473, 0x9EF4, 0x9EF4, 0x171E, + 0x9EF5, 0x9EF5, 0x34FE, 0x9EF6, 0x9EF6, 0x3518, 0x9EF7, 0x9EF7, 0x1762, + 0x9EF8, 0x9EF8, 0x47DA, 0x9EF9, 0x9EF9, 0x2360, 0x9EFA, 0x9EFA, 0x2D37, + 0x9EFB, 0x9EFB, 0x2F07, 0x9EFC, 0x9EFC, 0x31BF, 0x9EFD, 0x9EFD, 0x2612, + 0x9EFE, 0x9EFE, 0x47CE, 0x9EFF, 0x9EFF, 0x2F08, 0x9F00, 0x9F00, 0x3071, + 0x9F01, 0x9F01, 0x3070, 0x9F02, 0x9F02, 0x3940, 0x9F06, 0x9F06, 0x3475, + 0x9F07, 0x9F07, 0x173F, 0x9F08, 0x9F08, 0x3941, 0x9F09, 0x9F09, 0x34FF, + 0x9F0A, 0x9F0A, 0x3519, 0x9F0E, 0x9F0E, 0x0F7B, 0x9F0F, 0x9F10, 0x2AFE, + 0x9F12, 0x9F12, 0x2D38, 0x9F13, 0x9F13, 0x0F7C, 0x9F15, 0x9F15, 0x1573, + 0x9F16, 0x9F16, 0x3072, 0x9F17, 0x9F17, 0x3945, 0x9F18, 0x9F18, 0x3370, + 0x9F19, 0x9F19, 0x16B7, 0x9F1A, 0x9F1A, 0x3371, 0x9F1B, 0x9F1B, 0x336F, + 0x9F1C, 0x9F1C, 0x3476, 0x9F1E, 0x9F1E, 0x34C4, 0x9F20, 0x9F20, 0x0F7D, + 0x9F22, 0x9F22, 0x2F0B, 0x9F23, 0x9F23, 0x2F0A, 0x9F24, 0x9F24, 0x2F09, + 0x9F25, 0x9F25, 0x3073, 0x9F26, 0x9F26, 0x3F90, 0x9F27, 0x9F27, 0x4620, + 0x9F28, 0x9F28, 0x3077, 0x9F29, 0x9F29, 0x3076, 0x9F2A, 0x9F2A, 0x3075, + 0x9F2B, 0x9F2B, 0x3074, 0x9F2C, 0x9F2C, 0x1574, 0x9F2D, 0x9F2D, 0x31C0, + 0x9F2E, 0x9F2E, 0x32BE, 0x9F2F, 0x9F2F, 0x1664, 0x9F30, 0x9F30, 0x32BD, + 0x9F31, 0x9F31, 0x3372, 0x9F32, 0x9F32, 0x3409, 0x9F33, 0x9F33, 0x3408, + 0x9F34, 0x9F34, 0x16F2, 0x9F35, 0x9F35, 0x3407, 0x9F36, 0x9F36, 0x3479, + 0x9F37, 0x9F37, 0x3478, 0x9F38, 0x9F38, 0x3477, 0x9F39, 0x9F39, 0x3947, + 0x9F3B, 0x9F3B, 0x1100, 0x9F3D, 0x9F3D, 0x2D39, 0x9F3E, 0x9F3E, 0x14C7, + 0x9F40, 0x9F41, 0x31C1, 0x9F42, 0x9F42, 0x340A, 0x9F43, 0x9F43, 0x347A, + 0x9F44, 0x9F44, 0x47DB, 0x9F45, 0x9F45, 0x394A, 0x9F46, 0x9F46, 0x34C5, + 0x9F47, 0x9F47, 0x3500, 0x9F48, 0x9F48, 0x3532, 0x9F49, 0x9F49, 0x354C, + 0x9F4A, 0x9F4A, 0x1101, 0x9F4B, 0x9F4B, 0x14C8, 0x9F4C, 0x9F4C, 0x3078, + 0x9F4D, 0x9F4D, 0x31C3, 0x9F4E, 0x9F4E, 0x3373, 0x9F4F, 0x9F4F, 0x347B, + 0x9F50, 0x9F50, 0x4943, 0x9F52, 0x9F52, 0x1289, 0x9F53, 0x9F53, 0x3F80, + 0x9F54, 0x9F54, 0x2F0C, 0x9F55, 0x9F55, 0x3079, 0x9F56, 0x9F58, 0x31C4, + 0x9F59, 0x9F59, 0x32C3, 0x9F5A, 0x9F5A, 0x3F23, 0x9F5B, 0x9F5B, 0x32BF, + 0x9F5C, 0x9F5C, 0x16B8, 0x9F5D, 0x9F5D, 0x32C2, 0x9F5E, 0x9F5E, 0x32C1, + 0x9F5F, 0x9F5F, 0x1665, 0x9F60, 0x9F60, 0x32C0, 0x9F61, 0x9F61, 0x1667, + 0x9F62, 0x9F62, 0x394F, 0x9F63, 0x9F63, 0x1666, 0x9F64, 0x9F64, 0x3375, + 0x9F65, 0x9F65, 0x3374, 0x9F66, 0x9F67, 0x16B9, 0x9F69, 0x9F69, 0x3950, + 0x9F6A, 0x9F6A, 0x16F4, 0x9F6B, 0x9F6B, 0x340B, 0x9F6C, 0x9F6C, 0x16F3, + 0x9F6E, 0x9F6F, 0x347E, 0x9F70, 0x9F70, 0x347D, 0x9F71, 0x9F71, 0x347C, + 0x9F72, 0x9F72, 0x1741, 0x9F74, 0x9F76, 0x34C6, 0x9F77, 0x9F77, 0x1740, + 0x9F78, 0x9F78, 0x3501, 0x9F79, 0x9F79, 0x3504, 0x9F7A, 0x9F7A, 0x3503, + 0x9F7B, 0x9F7B, 0x3502, 0x9F7E, 0x9F7E, 0x354B, 0x9F7F, 0x9F7F, 0x4680, + 0x9F8D, 0x9F8D, 0x13B2, 0x9F8E, 0x9F8E, 0x3952, 0x9F90, 0x9F90, 0x157C, + 0x9F91, 0x9F91, 0x32C4, 0x9F92, 0x9F92, 0x3376, 0x9F94, 0x9F94, 0x16F5, + 0x9F95, 0x9F95, 0x340C, 0x9F98, 0x9F98, 0x354D, 0x9F99, 0x9F99, 0x4587, + 0x9F9C, 0x9F9C, 0x13B3, 0x9F9F, 0x9F9F, 0x4646, 0x9FA0, 0x9FA0, 0x2F0D, + 0x9FA2, 0x9FA2, 0x340D, 0x9FA4, 0x9FA4, 0x351A, 0x9FA5, 0x9FA5, 0x3F70, + 0xE000, 0xE000, 0x400B, 0xE002, 0xE003, 0x400D, 0xE009, 0xE00A, 0x4014, + 0xE00C, 0xE00C, 0x4017, 0xE00E, 0xE00E, 0x4019, 0xE012, 0xE016, 0x401D, + 0xE018, 0xE018, 0x4023, 0xE01A, 0xE01E, 0x4025, 0xE020, 0xE020, 0x402B, + 0xE022, 0xE023, 0x402D, 0xE025, 0xE025, 0x4030, 0xE02D, 0xE02E, 0x4038, + 0xE030, 0xE030, 0x403B, 0xE032, 0xE038, 0x403D, 0xE03B, 0xE03C, 0x4046, + 0xE045, 0xE045, 0x4050, 0xE04C, 0xE04C, 0x4057, 0xE05A, 0xE05A, 0x4065, + 0xE05C, 0xE05C, 0x4067, 0xE05F, 0xE061, 0x406A, 0xE064, 0xE064, 0x406F, + 0xE066, 0xE066, 0x4071, 0xE06C, 0xE06C, 0x4077, 0xE071, 0xE071, 0x407C, + 0xE074, 0xE075, 0x407F, 0xE078, 0xE078, 0x4083, 0xE07D, 0xE07D, 0x4088, + 0xE087, 0xE087, 0x4092, 0xE089, 0xE08A, 0x4094, 0xE08C, 0xE08C, 0x4097, + 0xE093, 0xE094, 0x409E, 0xE099, 0xE09A, 0x40A4, 0xE09C, 0xE09E, 0x40A7, + 0xE0A6, 0xE0A7, 0x40B1, 0xE0A9, 0xE0A9, 0x40B4, 0xE0AB, 0xE0AB, 0x40B6, + 0xE0AE, 0xE0AE, 0x40B9, 0xE0BA, 0xE0BA, 0x40C5, 0xE0BC, 0xE0BC, 0x40C7, + 0xE0BE, 0xE0BE, 0x40C9, 0xE0C3, 0xE0C3, 0x40CE, 0xE0C5, 0xE0C5, 0x40D0, + 0xE0C7, 0xE0C8, 0x40D2, 0xE0CA, 0xE0CA, 0x40D5, 0xE0D0, 0xE0D0, 0x40DB, + 0xE0D4, 0xE0D5, 0x40DF, 0xE0DC, 0xE0DC, 0x40E7, 0xE0DF, 0xE0DF, 0x40EA, + 0xE0E2, 0xE0E5, 0x40ED, 0xE0E7, 0xE0E9, 0x40F2, 0xE0EB, 0xE0EC, 0x40F6, + 0xE0EE, 0xE0EE, 0x40F9, 0xE0F2, 0xE0F2, 0x40FD, 0xE0F8, 0xE0F9, 0x4103, + 0xE0FB, 0xE0FB, 0x4105, 0xE0FD, 0xE0FD, 0x4107, 0xE103, 0xE103, 0x410D, + 0xE106, 0xE106, 0x4110, 0xE109, 0xE10B, 0x4112, 0xE110, 0xE110, 0x4119, + 0xE114, 0xE115, 0x411D, 0xE11C, 0xE11D, 0x4125, 0xE121, 0xE121, 0x412A, + 0xE126, 0xE128, 0x412F, 0xE130, 0xE131, 0x4139, 0xE136, 0xE136, 0x413F, + 0xE139, 0xE139, 0x4142, 0xE141, 0xE142, 0x414A, 0xE145, 0xE145, 0x414D, + 0xE147, 0xE148, 0x414F, 0xE14A, 0xE14A, 0x4151, 0xE14D, 0xE14D, 0x4153, + 0xE150, 0xE150, 0x4156, 0xE154, 0xE157, 0x415A, 0xE159, 0xE15A, 0x415F, + 0xE15D, 0xE15D, 0x494F, 0xE162, 0xE162, 0x4167, 0xE168, 0xE16A, 0x416D, + 0xE171, 0xE172, 0x4175, 0xE175, 0xE175, 0x4179, 0xE178, 0xE179, 0x417C, + 0xE17B, 0xE17C, 0x417F, 0xE17F, 0xE180, 0x4183, 0xE185, 0xE185, 0x4189, + 0xE187, 0xE187, 0x418B, 0xE189, 0xE189, 0x418D, 0xE18B, 0xE18B, 0x418F, + 0xE18F, 0xE190, 0x4193, 0xE193, 0xE193, 0x4196, 0xE195, 0xE195, 0x4953, + 0xE196, 0xE196, 0x4198, 0xE19F, 0xE1A0, 0x41A1, 0xE1A4, 0xE1A4, 0x4954, + 0xE1A6, 0xE1A6, 0x41A8, 0xE1AA, 0xE1AA, 0x41AC, 0xE1AE, 0xE1AE, 0x41B0, + 0xE1B0, 0xE1B1, 0x41B2, 0xE1B3, 0xE1B4, 0x41B5, 0xE1B6, 0xE1B6, 0x41B8, + 0xE1B8, 0xE1B8, 0x41BA, 0xE1BB, 0xE1BB, 0x4955, 0xE1BC, 0xE1BF, 0x41BD, + 0xE1C1, 0xE1C1, 0x41C2, 0xE1C4, 0xE1C5, 0x41C5, 0xE1C8, 0xE1C8, 0x41C8, + 0xE1CC, 0xE1CD, 0x41CC, 0xE1D4, 0xE1D5, 0x41D4, 0xE1D7, 0xE1D7, 0x41D7, + 0xE1DA, 0xE1DA, 0x41DA, 0xE1DD, 0xE1DD, 0x41DD, 0xE1E2, 0xE1E2, 0x41E1, + 0xE1E6, 0xE1E6, 0x41E5, 0xE1EB, 0xE1EB, 0x41EA, 0xE1EF, 0xE1F0, 0x41EE, + 0xE1F2, 0xE1F2, 0x41F1, 0xE1F7, 0xE1F7, 0x41F6, 0xE1FA, 0xE1FA, 0x41F9, + 0xE1FE, 0xE1FE, 0x41FD, 0xE200, 0xE200, 0x41FF, 0xE201, 0xE201, 0x4958, + 0xE202, 0xE202, 0x4201, 0xE205, 0xE205, 0x4204, 0xE207, 0xE207, 0x4206, + 0xE20A, 0xE20C, 0x4209, 0xE210, 0xE210, 0x420F, 0xE212, 0xE216, 0x4211, + 0xE219, 0xE219, 0x4218, 0xE21B, 0xE21C, 0x421A, 0xE21F, 0xE221, 0x421E, + 0xE226, 0xE228, 0x4225, 0xE22A, 0xE22A, 0x4229, 0xE22F, 0xE22F, 0x422E, + 0xE231, 0xE231, 0x4230, 0xE233, 0xE233, 0x4232, 0xE237, 0xE237, 0x4236, + 0xE23B, 0xE23B, 0x423A, 0xE23D, 0xE23E, 0x423C, 0xE245, 0xE245, 0x4244, + 0xE248, 0xE248, 0x4247, 0xE24A, 0xE24F, 0x4249, 0xE251, 0xE254, 0x4250, + 0xE261, 0xE261, 0x4260, 0xE268, 0xE268, 0x4266, 0xE26B, 0xE26B, 0x4269, + 0xE26D, 0xE26F, 0x426B, 0xE271, 0xE271, 0x426F, 0xE27A, 0xE27A, 0x4278, + 0xE27D, 0xE27D, 0x427B, 0xE282, 0xE282, 0x4280, 0xE288, 0xE289, 0x4286, + 0xE28B, 0xE28B, 0x4289, 0xE290, 0xE291, 0x428E, 0xE294, 0xE296, 0x4292, + 0xE299, 0xE29B, 0x4297, 0xE29F, 0xE29F, 0x429D, 0xE2A1, 0xE2A1, 0x495B, + 0xE2A4, 0xE2A4, 0x42A1, 0xE2A6, 0xE2A6, 0x42A3, 0xE2B2, 0xE2B5, 0x42AE, + 0xE2B7, 0xE2B8, 0x42B3, 0xE2BA, 0xE2BA, 0x42B6, 0xE2BE, 0xE2BF, 0x42B9, + 0xE2C1, 0xE2C1, 0x42BC, 0xE2C7, 0xE2C7, 0x42C2, 0xE2C9, 0xE2C9, 0x42C4, + 0xE2D4, 0xE2D4, 0x42CF, 0xE2D8, 0xE2D9, 0x42D3, 0xE2DE, 0xE2DE, 0x42D9, + 0xE2E0, 0xE2E2, 0x42DB, 0xE2E7, 0xE2E7, 0x42E2, 0xE2E9, 0xE2E9, 0x42E4, + 0xE2EB, 0xE2ED, 0x42E6, 0xE2F0, 0xE2F1, 0x495D, 0xE2F8, 0xE2F8, 0x42F1, + 0xE2FC, 0xE2FC, 0x42F5, 0xE2FF, 0xE2FF, 0x495F, 0xE300, 0xE300, 0x4960, + 0xE301, 0xE301, 0x42F8, 0xE306, 0xE306, 0x42FD, 0xE308, 0xE308, 0x42FF, + 0xE30C, 0xE30C, 0x4303, 0xE30F, 0xE30F, 0x4306, 0xE311, 0xE311, 0x372B, + 0xE313, 0xE313, 0x372D, 0xE315, 0xE315, 0x372F, 0xE318, 0xE318, 0x3731, + 0xE31B, 0xE31C, 0x3734, 0xE31F, 0xE31F, 0x3738, 0xE325, 0xE325, 0x373E, + 0xE32C, 0xE32C, 0x3745, 0xE330, 0xE331, 0x3749, 0xE335, 0xE336, 0x374E, + 0xE33B, 0xE33B, 0x3754, 0xE33D, 0xE33D, 0x469A, 0xE342, 0xE342, 0x375A, + 0xE345, 0xE345, 0x375D, 0xE348, 0xE348, 0x375F, 0xE352, 0xE352, 0x3768, + 0xE354, 0xE354, 0x376A, 0xE35B, 0xE35C, 0x3770, 0xE360, 0xE360, 0x3775, + 0xE362, 0xE362, 0x3777, 0xE364, 0xE365, 0x3779, 0xE36F, 0xE36F, 0x3784, + 0xE372, 0xE372, 0x3787, 0xE374, 0xE375, 0x3789, 0xE377, 0xE377, 0x378C, + 0xE379, 0xE379, 0x378D, 0xE37B, 0xE37B, 0x378F, 0xE381, 0xE382, 0x3795, + 0xE386, 0xE386, 0x379A, 0xE388, 0xE38A, 0x379C, 0xE38D, 0xE38D, 0x37A1, + 0xE391, 0xE391, 0x37A5, 0xE393, 0xE393, 0x37A7, 0xE394, 0xE394, 0x46A0, + 0xE396, 0xE396, 0x37A9, 0xE398, 0xE398, 0x37AB, 0xE39A, 0xE39B, 0x37AD, + 0xE39E, 0xE39E, 0x46A1, 0xE39F, 0xE3A0, 0x37B1, 0xE3A2, 0xE3A2, 0x37B4, + 0xE3A5, 0xE3A5, 0x46A2, 0xE3A6, 0xE3A9, 0x37B8, 0xE3AC, 0xE3AC, 0x37BE, + 0xE3B1, 0xE3B2, 0x37C3, 0xE3B4, 0xE3B5, 0x37C6, 0xE3B9, 0xE3BD, 0x37CB, + 0xE3C3, 0xE3C3, 0x37D5, 0xE3C8, 0xE3C8, 0x37D9, 0xE3CC, 0xE3CC, 0x37DD, + 0xE3CD, 0xE3CD, 0x46A4, 0xE3CF, 0xE3CF, 0x37DF, 0xE3D5, 0xE3D5, 0x46A5, + 0xE3D8, 0xE3DA, 0x37E7, 0xE3E1, 0xE3E1, 0x37F0, 0xE3E3, 0xE3E3, 0x37F2, + 0xE3E7, 0xE3E7, 0x46A6, 0xE3ED, 0xE3EE, 0x37FC, 0xE3F0, 0xE3F0, 0x37FF, + 0xE3F2, 0xE3F4, 0x3801, 0xE3F8, 0xE3F8, 0x3807, 0xE3FA, 0xE3FA, 0x3809, + 0xE3FD, 0xE3FD, 0x380C, 0xE3FF, 0xE3FF, 0x380E, 0xE409, 0xE40B, 0x3818, + 0xE414, 0xE414, 0x3821, 0xE41B, 0xE41B, 0x3828, 0xE41D, 0xE41E, 0x382A, + 0xE423, 0xE423, 0x3830, 0xE425, 0xE425, 0x3832, 0xE426, 0xE426, 0x46AB, + 0xE428, 0xE428, 0x3834, 0xE42C, 0xE42D, 0x3838, 0xE432, 0xE432, 0x383E, + 0xE436, 0xE436, 0x3842, 0xE43A, 0xE43C, 0x3846, 0xE43E, 0xE43E, 0x384A, + 0xE440, 0xE441, 0x384C, 0xE444, 0xE444, 0x3850, 0xE448, 0xE448, 0x46AD, + 0xE44C, 0xE44E, 0x3857, 0xE450, 0xE451, 0x385B, 0xE459, 0xE45A, 0x3864, + 0xE45D, 0xE45E, 0x3868, 0xE461, 0xE463, 0x386C, 0xE465, 0xE465, 0x3870, + 0xE467, 0xE469, 0x46AF, 0xE46A, 0xE46A, 0x3873, 0xE46C, 0xE46C, 0x3875, + 0xE46E, 0xE46F, 0x3877, 0xE471, 0xE472, 0x387A, 0xE474, 0xE474, 0x387D, + 0xE476, 0xE476, 0x387F, 0xE47E, 0xE47F, 0x3886, 0xE484, 0xE484, 0x388C, + 0xE486, 0xE48A, 0x388D, 0xE48D, 0xE48E, 0x3894, 0xE491, 0xE492, 0x3897, + 0xE495, 0xE497, 0x389B, 0xE4A1, 0xE4A1, 0x46B4, 0xE4A2, 0xE4A4, 0x38A7, + 0xE4AB, 0xE4AB, 0x38B0, 0xE4AF, 0xE4AF, 0x38B4, 0xE4B3, 0xE4BA, 0x38B8, + 0xE4C1, 0xE4C1, 0x38C6, 0xE4C6, 0xE4C6, 0x38CB, 0xE4C9, 0xE4C9, 0x38CE, + 0xE4CD, 0xE4CE, 0x38D2, 0xE4D6, 0xE4D6, 0x38DB, 0xE4D9, 0xE4D9, 0x38DE, + 0xE4DC, 0xE4DD, 0x38E1, 0xE4E4, 0xE4E4, 0x38E9, 0xE4E6, 0xE4E8, 0x38EB, + 0xE4EE, 0xE4EF, 0x38F3, 0xE4F6, 0xE4F6, 0x38FB, 0xE4F8, 0xE4F9, 0x38FD, + 0xE4FF, 0xE4FF, 0x3904, 0xE501, 0xE502, 0x3906, 0xE505, 0xE505, 0x390A, + 0xE50A, 0xE50A, 0x390F, 0xE50D, 0xE50D, 0x46B5, 0xE50F, 0xE50F, 0x3913, + 0xE512, 0xE512, 0x3916, 0xE514, 0xE514, 0x3918, 0xE516, 0xE516, 0x46B6, + 0xE51A, 0xE51A, 0x391D, 0xE51C, 0xE521, 0x391F, 0xE524, 0xE524, 0x3927, + 0xE528, 0xE528, 0x46B8, 0xE529, 0xE52C, 0x392A, 0xE52E, 0xE52F, 0x392F, + 0xE537, 0xE537, 0x3938, 0xE53E, 0xE53E, 0x393F, 0xE543, 0xE543, 0x3944, + 0xE54B, 0xE54B, 0x394C, 0xE554, 0xE555, 0x3955, 0xE557, 0xE559, 0x3958, + 0xE55B, 0xE55C, 0x395C, 0xE55E, 0xE55F, 0x395F, 0xE562, 0xE562, 0x3963, + 0xE566, 0xE567, 0x3967, 0xE56D, 0xE56E, 0x396E, 0xE570, 0xE570, 0x3971, + 0xE572, 0xE573, 0x3973, 0xE575, 0xE577, 0x3976, 0xE579, 0xE57A, 0x397A, + 0xE57C, 0xE57E, 0x397D, 0xE580, 0xE580, 0x3981, 0xE582, 0xE586, 0x3983, + 0xE588, 0xE588, 0x3989, 0xE58B, 0xE590, 0x398C, 0xE592, 0xE594, 0x3993, + 0xE59A, 0xE59A, 0x399B, 0xE59D, 0xE5A1, 0x399E, 0xE5A4, 0xE5A4, 0x39A5, + 0xE5A6, 0xE5A8, 0x39A7, 0xE5AA, 0xE5AA, 0x39AB, 0xE5AF, 0xE5AF, 0x39B0, + 0xE5B1, 0xE5B1, 0x39B2, 0xE5B2, 0xE5B2, 0x46BB, 0xE5B5, 0xE5B5, 0x39B6, + 0xE5B7, 0xE5B8, 0x39B8, 0xE5BA, 0xE5BB, 0x39BB, 0xE5BE, 0xE5C0, 0x39BF, + 0xE5C2, 0xE5C2, 0x39C3, 0xE5C8, 0xE5C9, 0x39C9, 0xE5D7, 0xE5D9, 0x39D4, + 0xE5DB, 0xE5DC, 0x39D8, 0xE5DF, 0xE5DF, 0x39DC, 0xE5E1, 0xE5E3, 0x39DE, + 0xE5E5, 0xE5E6, 0x39E2, 0xE5E9, 0xE5E9, 0x39E6, 0xE5EE, 0xE5F1, 0x39EB, + 0xE5F3, 0xE5F3, 0x39F0, 0xE5FB, 0xE5FC, 0x39F8, 0xE600, 0xE600, 0x39FD, + 0xE602, 0xE602, 0x39FF, 0xE604, 0xE604, 0x3A01, 0xE60F, 0xE612, 0x3A0B, + 0xE619, 0xE61C, 0x3A14, 0xE621, 0xE621, 0x3A1C, 0xE623, 0xE624, 0x3A1E, + 0xE627, 0xE627, 0x3A22, 0xE62B, 0xE62B, 0x3A26, 0xE632, 0xE634, 0x3A2D, + 0xE637, 0xE638, 0x3A32, 0xE63A, 0xE63A, 0x3A35, 0xE63C, 0xE63C, 0x3A37, + 0xE63F, 0xE642, 0x3A3A, 0xE645, 0xE646, 0x3A40, 0xE648, 0xE648, 0x3A43, + 0xE64B, 0xE64B, 0x3A45, 0xE64E, 0xE64F, 0x3A48, 0xE652, 0xE655, 0x3A4C, + 0xE657, 0xE659, 0x3A51, 0xE65D, 0xE660, 0x3A57, 0xE662, 0xE663, 0x3A5C, + 0xE665, 0xE668, 0x3A5F, 0xE66A, 0xE66A, 0x46BF, 0xE66E, 0xE66F, 0x3A67, + 0xE671, 0xE671, 0x3A6A, 0xE676, 0xE679, 0x3A6F, 0xE67B, 0xE67D, 0x3A74, + 0xE67F, 0xE680, 0x3A78, 0xE683, 0xE688, 0x3A7B, 0xE68A, 0xE68C, 0x3A82, + 0xE68E, 0xE690, 0x3A86, 0xE692, 0xE692, 0x3A8A, 0xE696, 0xE697, 0x3A8E, + 0xE699, 0xE69A, 0x3A91, 0xE69C, 0xE69C, 0x3A94, 0xE69E, 0xE69F, 0x3A96, + 0xE6A1, 0xE6A2, 0x3A99, 0xE6A6, 0xE6A6, 0x3A9D, 0xE6AC, 0xE6AD, 0x3AA2, + 0xE6B2, 0xE6B2, 0x3AA8, 0xE6B9, 0xE6BA, 0x3AAF, 0xE6BD, 0xE6BE, 0x3AB3, + 0xE6C0, 0xE6C1, 0x3AB6, 0xE6C5, 0xE6C5, 0x46C4, 0xE6C7, 0xE6C7, 0x3ABC, + 0xE6CA, 0xE6CA, 0x3ABF, 0xE6D1, 0xE6D2, 0x3AC6, 0xE6D7, 0xE6D8, 0x3ACC, + 0xE6DA, 0xE6DB, 0x3ACF, 0xE6DD, 0xE6E1, 0x3AD2, 0xE6E4, 0xE6E6, 0x3AD9, + 0xE6EE, 0xE6EE, 0x3AE3, 0xE6F2, 0xE6F3, 0x3AE7, 0xE6F7, 0xE6F7, 0x3AEC, + 0xE6FA, 0xE6FC, 0x3AEF, 0xE6FF, 0xE6FF, 0x3AF4, 0xE701, 0xE702, 0x3AF6, + 0xE706, 0xE707, 0x3AFB, 0xE709, 0xE70A, 0x3AFE, 0xE70C, 0xE70C, 0x3B01, + 0xE710, 0xE711, 0x3B05, 0xE713, 0xE713, 0x3B08, 0xE717, 0xE718, 0x3B0C, + 0xE71A, 0xE71B, 0x3B0F, 0xE71D, 0xE71D, 0x3B12, 0xE724, 0xE725, 0x3B19, + 0xE72B, 0xE72B, 0x3B20, 0xE72F, 0xE72F, 0x3B24, 0xE733, 0xE737, 0x3B28, + 0xE73C, 0xE73D, 0x3B31, 0xE740, 0xE742, 0x3B35, 0xE744, 0xE744, 0x3B39, + 0xE747, 0xE747, 0x3B3C, 0xE74D, 0xE74F, 0x3B42, 0xE751, 0xE752, 0x3B46, + 0xE75B, 0xE75D, 0x3B50, 0xE75F, 0xE75F, 0x3B54, 0xE761, 0xE762, 0x3B56, + 0xE764, 0xE765, 0x3B59, 0xE767, 0xE768, 0x3B5C, 0xE769, 0xE769, 0x46C7, + 0xE76C, 0xE76E, 0x3B60, 0xE770, 0xE770, 0x3B64, 0xE775, 0xE775, 0x3B69, + 0xE777, 0xE778, 0x3B6A, 0xE77A, 0xE77A, 0x3B6D, 0xE77C, 0xE77D, 0x3B6F, + 0xE784, 0xE784, 0x3B77, 0xE786, 0xE786, 0x3B79, 0xE789, 0xE789, 0x3B7C, + 0xE78B, 0xE78B, 0x3B7E, 0xE78D, 0xE78D, 0x3B80, 0xE790, 0xE790, 0x3B83, + 0xE792, 0xE792, 0x3B85, 0xE794, 0xE794, 0x3B87, 0xE796, 0xE797, 0x3B89, + 0xE799, 0xE799, 0x3B8C, 0xE7A2, 0xE7A2, 0x3B95, 0xE7A4, 0xE7A9, 0x3B97, + 0xE7B1, 0xE7B1, 0x3BA4, 0xE7B4, 0xE7B4, 0x3BA7, 0xE7B8, 0xE7B8, 0x3BAB, + 0xE7BC, 0xE7BC, 0x3BAF, 0xE7C4, 0xE7C4, 0x3BB6, 0xE7CA, 0xE7CA, 0x3BBC, + 0xE7CE, 0xE7CE, 0x3BC0, 0xE7D1, 0xE7D1, 0x3BC3, 0xE7D8, 0xE7D8, 0x3BCA, + 0xE7DA, 0xE7DA, 0x3BCC, 0xE7DC, 0xE7DD, 0x3BCE, 0xE7E4, 0xE7E4, 0x3BD6, + 0xE7E7, 0xE7E9, 0x3BD9, 0xE7EB, 0xE7EB, 0x3BDD, 0xE7ED, 0xE7EF, 0x3BDF, + 0xE7F1, 0xE7F3, 0x3BE3, 0xE7F8, 0xE7F8, 0x3BEA, 0xE7FB, 0xE7FC, 0x3BED, + 0xE7FF, 0xE7FF, 0x3BF1, 0xE800, 0xE802, 0x3BF2, 0xE808, 0xE808, 0x3BFA, + 0xE80C, 0xE80C, 0x3BFE, 0xE80E, 0xE80F, 0x3C00, 0xE811, 0xE811, 0x3C03, + 0xE813, 0xE813, 0x3C05, 0xE816, 0xE818, 0x3C08, 0xE81A, 0xE81A, 0x3C0C, + 0xE821, 0xE821, 0x3C13, 0xE827, 0xE828, 0x3C19, 0xE82D, 0xE82D, 0x3C1F, + 0xE82F, 0xE82F, 0x3C21, 0xE835, 0xE835, 0x3C27, 0xE837, 0xE838, 0x3C29, + 0xE83A, 0xE83B, 0x3C2C, 0xE841, 0xE842, 0x3C33, 0xE84B, 0xE84B, 0x3C3D, + 0xE84D, 0xE84E, 0x3C3F, 0xE851, 0xE851, 0x3C43, 0xE855, 0xE858, 0x3C47, + 0xE85B, 0xE85D, 0x3C4D, 0xE860, 0xE862, 0x3C52, 0xE865, 0xE867, 0x3C57, + 0xE869, 0xE86A, 0x3C5B, 0xE86C, 0xE86C, 0x3C5D, 0xE871, 0xE871, 0x3C62, + 0xE878, 0xE878, 0x3C69, 0xE87D, 0xE87F, 0x3C6E, 0xE887, 0xE887, 0x3C78, + 0xE88F, 0xE88F, 0x3C80, 0xE891, 0xE892, 0x3C82, 0xE894, 0xE895, 0x3C85, + 0xE89A, 0xE89A, 0x3C8B, 0xE89D, 0xE89D, 0x3C8E, 0xE8A0, 0xE8A1, 0x3C91, + 0xE8A3, 0xE8A7, 0x3C94, 0xE8A9, 0xE8AA, 0x3C9A, 0xE8AC, 0xE8B0, 0x3C9D, + 0xE8B5, 0xE8B6, 0x3CA6, 0xE8B8, 0xE8B8, 0x3CA9, 0xE8BD, 0xE8C3, 0x3CAE, + 0xE8C5, 0xE8C5, 0x3CB6, 0xE8C7, 0xE8C7, 0x3CB8, 0xE8CB, 0xE8CB, 0x3CBC, + 0xE8CD, 0xE8CE, 0x3CBE, 0xE8D0, 0xE8D1, 0x3CC1, 0xE8D3, 0xE8D3, 0x3CC4, + 0xE8D5, 0xE8D6, 0x3CC6, 0xE8D8, 0xE8DA, 0x3CC9, 0xE8DD, 0xE8DD, 0x3CCE, + 0xE8DF, 0xE8E1, 0x3CD0, 0xE8E5, 0xE8E6, 0x3CD6, 0xE8E8, 0xE8EA, 0x3CD9, + 0xE8ED, 0xE8ED, 0x3CDE, 0xE8F1, 0xE8F2, 0x3CE2, 0xE8F5, 0xE8F5, 0x3CE6, + 0xE8FB, 0xE8FB, 0x3CEC, 0xE8FE, 0xE8FE, 0x3CEF, 0xE900, 0xE900, 0x3CF1, + 0xE903, 0xE903, 0x3CF4, 0xE907, 0xE908, 0x3CF8, 0xE90C, 0xE90C, 0x3CFD, + 0xE917, 0xE918, 0x3D08, 0xE91C, 0xE91C, 0x3D0D, 0xE91E, 0xE922, 0x3D0F, + 0xE925, 0xE92C, 0x3D16, 0xE92E, 0xE92F, 0x3D1F, 0xE933, 0xE936, 0x3D24, + 0xE938, 0xE938, 0x46CF, 0xE93A, 0xE93A, 0x3D2B, 0xE93C, 0xE93E, 0x3D2D, + 0xE941, 0xE941, 0x3D32, 0xE944, 0xE945, 0x3D35, 0xE948, 0xE948, 0x3D39, + 0xE94D, 0xE94D, 0x3D3E, 0xE950, 0xE950, 0x3D41, 0xE952, 0xE955, 0x3D43, + 0xE957, 0xE958, 0x3D48, 0xE95A, 0xE95A, 0x3D4B, 0xE95C, 0xE95E, 0x3D4D, + 0xE960, 0xE961, 0x3D51, 0xE964, 0xE964, 0x3D55, 0xE967, 0xE967, 0x3D58, + 0xE968, 0xE968, 0x46D1, 0xE96E, 0xE96F, 0x46D5, 0xE973, 0xE973, 0x46DA, + 0xE974, 0xE974, 0x3D5B, 0xE975, 0xE975, 0x46DB, 0xE977, 0xE978, 0x46DD, + 0xE97A, 0xE97B, 0x46E0, 0xE97D, 0xE97D, 0x46E3, 0xE981, 0xE982, 0x46E6, + 0xE987, 0xE987, 0x3D5D, 0xE98A, 0xE98A, 0x3D5E, 0xE98E, 0xE98E, 0x3D5F, + 0xE991, 0xE991, 0x46EF, 0xE9B0, 0xE9B0, 0x43D4, 0xE9CB, 0xE9CB, 0x4719, + 0xE9EF, 0xE9EF, 0x4734, 0xEA43, 0xEA43, 0x4779, 0xEAA9, 0xEAA9, 0x47CC, + 0xEABF, 0xEAC1, 0x47DC, 0xEAC5, 0xEAC5, 0x47E0, 0xEAC9, 0xEACC, 0x47E2, + 0xEACF, 0xEAD1, 0x47E8, 0xEAD3, 0xEAD4, 0x47EB, 0xEAD6, 0xEADA, 0x47EE, + 0xEADC, 0xEADC, 0x47F3, 0xEADE, 0xEAE3, 0x47F4, 0xEAE7, 0xEAEC, 0x47FA, + 0xEAEE, 0xEAEE, 0x4800, 0xEAF0, 0xEAF2, 0x4801, 0xEAF4, 0xEAF4, 0x43B0, + 0xEAF5, 0xEAF6, 0x4804, 0xEAF8, 0xEAF8, 0x4807, 0xEAF9, 0xEAF9, 0x43B2, + 0xEAFA, 0xEAFB, 0x4808, 0xEAFE, 0xEAFF, 0x480B, 0xEB00, 0xEB00, 0x480D, + 0xEB02, 0xEB05, 0x480E, 0xEB08, 0xEB0F, 0x4813, 0xEB11, 0xEB12, 0x481B, + 0xEB15, 0xEB15, 0x481E, 0xEB18, 0xEB1D, 0x4821, 0xEB1F, 0xEB21, 0x4827, + 0xEB23, 0xEB23, 0x482A, 0xEB25, 0xEB25, 0x482B, 0xEB27, 0xEB27, 0x482C, + 0xEB2A, 0xEB2A, 0x482D, 0xEB2C, 0xEB39, 0x482E, 0xEB3D, 0xEB3D, 0x3D9B, + 0xEB3E, 0xEB3F, 0x483C, 0xEB41, 0xEB41, 0x3D9D, 0xEB43, 0xEB44, 0x483E, + 0xEB46, 0xEB46, 0x3DA0, 0xEB4A, 0xEB4A, 0x4841, 0xEB4B, 0xEB4C, 0x3DA3, + 0xEB4D, 0xEB4E, 0x4842, 0xEB4F, 0xEB50, 0x3DA5, 0xEB53, 0xEB53, 0x4844, + 0xEB54, 0xEB54, 0x3DA9, 0xEB55, 0xEB56, 0x4845, 0xEB57, 0xEB57, 0x3DAA, + 0xEB58, 0xEB59, 0x4847, 0xEB5A, 0xEB5B, 0x3DAB, 0xEB5D, 0xEB5D, 0x3DAE, + 0xEB5F, 0xEB5F, 0x3DB0, 0xEB61, 0xEB61, 0x3DB2, 0xEB62, 0xEB63, 0x4849, + 0xEB65, 0xEB65, 0x484C, 0xEB67, 0xEB67, 0x484D, 0xEB68, 0xEB69, 0x3DB4, + 0xEB6B, 0xEB6B, 0x3DB7, 0xEB6D, 0xEB6D, 0x3DB9, 0xEB6F, 0xEB71, 0x484E, + 0xEB73, 0xEB73, 0x4851, 0xEB74, 0xEB74, 0x3DBC, 0xEB76, 0xEB76, 0x43D0, + 0xEB77, 0xEB77, 0x4853, 0xEB78, 0xEB78, 0x3DBD, 0xEB7A, 0xEB7A, 0x4854, + 0xEB7E, 0xEB7F, 0x4856, 0xEB80, 0xEB81, 0x3DC1, 0xEB83, 0xEB84, 0x4858, + 0xEB85, 0xEB85, 0x3DC4, 0xEB88, 0xEB88, 0x485A, 0xEB89, 0xEB89, 0x3DC6, + 0xEB8A, 0xEB8A, 0x485B, 0xEB8C, 0xEB8E, 0x485C, 0xEB8F, 0xEB8F, 0x3DC8, + 0xEB90, 0xEB90, 0x485F, 0xEB93, 0xEB93, 0x3DCB, 0xEB95, 0xEB95, 0x4860, + 0xEB97, 0xEB97, 0x3DCE, 0xEB98, 0xEB9A, 0x4861, 0xEB9B, 0xEB9B, 0x3DCF, + 0xEB9F, 0xEB9F, 0x4866, 0xEBA0, 0xEBA0, 0x3DD1, 0xEBA2, 0xEBA2, 0x4867, + 0xEBA3, 0xEBA3, 0x3DD3, 0xEBA5, 0xEBA6, 0x4868, 0xEBA8, 0xEBA8, 0x3DD6, + 0xEBAA, 0xEBAA, 0x486A, 0xEBAB, 0xEBAB, 0x3DD8, 0xEBAD, 0xEBAD, 0x3DDA, + 0xEBAE, 0xEBAE, 0x486B, 0xEBAF, 0xEBAF, 0x3DDB, 0xEBB0, 0xEBB0, 0x486C, + 0xEBB2, 0xEBB3, 0x486D, 0xEBB4, 0xEBB4, 0x3DDD, 0xEBB6, 0xEBB6, 0x3DDF, + 0xEBB9, 0xEBB9, 0x3DE2, 0xEBBC, 0xEBBC, 0x3DE4, 0xEBBD, 0xEBBD, 0x4870, + 0xEBBF, 0xEBBF, 0x3DE6, 0xEBC2, 0xEBC2, 0x3DE9, 0xEBC5, 0xEBC6, 0x4872, + 0xEBC7, 0xEBC7, 0x3DEB, 0xEBC8, 0xEBC8, 0x4874, 0xEBCA, 0xEBCA, 0x4875, + 0xEBCC, 0xEBCD, 0x3DEE, 0xEBCE, 0xEBCE, 0x4876, 0xEBD0, 0xEBD0, 0x4877, + 0xEBD3, 0xEBD3, 0x4878, 0xEBD5, 0xEBD5, 0x4879, 0xEBD7, 0xEBD8, 0x3DF4, + 0xEBDA, 0xEBDB, 0x487A, 0xEBDD, 0xEBDD, 0x3DF8, 0xEBDF, 0xEBDF, 0x487C, + 0xEBE1, 0xEBE1, 0x487D, 0xEBE4, 0xEBE4, 0x487E, 0xEBE7, 0xEBE7, 0x3DFF, + 0xEBE8, 0xEBE9, 0x487F, 0xEBEB, 0xEBEC, 0x4881, 0xEBEE, 0xEBEE, 0x3E02, + 0xEBEF, 0xEBEF, 0x4883, 0xEBF1, 0xEBF1, 0x4884, 0xEBF2, 0xEBF2, 0x3E04, + 0xEBF5, 0xEBF5, 0x4886, 0xEBF6, 0xEBF6, 0x3E06, 0xEBF9, 0xEBFB, 0x3E09, + 0xEBFD, 0xEBFE, 0x3E0D, 0xEC05, 0xEC06, 0x3E14, 0xEC08, 0xEC09, 0x4888, + 0xEC0C, 0xEC0C, 0x3E18, 0xEC0E, 0xEC10, 0x3E1A, 0xEC13, 0xEC13, 0x488B, + 0xEC14, 0xEC14, 0x3E1F, 0xEC17, 0xEC18, 0x3E22, 0xEC19, 0xEC1C, 0x488C, + 0xEC1D, 0xEC1D, 0x3E24, 0xEC20, 0xEC20, 0x4890, 0xEC22, 0xEC22, 0x3E28, + 0xEC24, 0xEC24, 0x3E2A, 0xEC26, 0xEC26, 0x3E2C, 0xEC2A, 0xEC2A, 0x3E30, + 0xEC2B, 0xEC2B, 0x4891, 0xEC2C, 0xEC2E, 0x3E31, 0xEC2F, 0xEC2F, 0x4892, + 0xEC31, 0xEC31, 0x3E35, 0xEC32, 0xEC32, 0x4893, 0xEC35, 0xEC35, 0x3E38, + 0xEC37, 0xEC37, 0x3E3A, 0xEC3B, 0xEC3C, 0x3E3E, 0xEC3F, 0xEC41, 0x4894, + 0xEC42, 0xEC42, 0x3E42, 0xEC43, 0xEC43, 0x4897, 0xEC44, 0xEC44, 0x43E8, + 0xEC45, 0xEC49, 0x4898, 0xEC4B, 0xEC4C, 0x489D, 0xEC4F, 0xEC4F, 0x48A0, + 0xEC52, 0xEC52, 0x48A1, 0xEC54, 0xEC54, 0x48A2, 0xEC56, 0xEC58, 0x48A3, + 0xEC5A, 0xEC5A, 0x48A6, 0xEC5C, 0xEC5D, 0x48A7, 0xEC5F, 0xEC60, 0x48A9, + 0xEC62, 0xEC63, 0x48AC, 0xEC67, 0xEC67, 0x48AF, 0xEC68, 0xEC68, 0x3E4D, + 0xEC69, 0xEC73, 0x48B0, 0xEC75, 0xEC76, 0x48BC, 0xEC79, 0xEC79, 0x48C0, + 0xEC7B, 0xEC7B, 0x48C2, 0xEC7E, 0xEC7E, 0x48C3, 0xEC80, 0xEC80, 0x48C5, + 0xEC84, 0xEC84, 0x48C8, 0xEC86, 0xEC86, 0x48CA, 0xEC8D, 0xEC8D, 0x48CC, + 0xEC8E, 0xEC8E, 0x3E55, 0xEC91, 0xEC91, 0x48CE, 0xEC92, 0xEC92, 0x3E58, + 0xEC93, 0xEC94, 0x48CF, 0xEC95, 0xEC95, 0x3E59, 0xEC96, 0xEC96, 0x48D1, + 0xEC98, 0xEC98, 0x48D2, 0xEC99, 0xEC99, 0x3E5B, 0xEC9A, 0xEC9B, 0x48D3, + 0xEC9D, 0xEC9D, 0x48D6, 0xEC9E, 0xEC9E, 0x3E5C, 0xECA0, 0xECA0, 0x48D7, + 0xECA3, 0xECA4, 0x48D8, 0xECA7, 0xECA8, 0x48DA, 0xECAB, 0xECAB, 0x48DC, + 0xECAD, 0xECAD, 0x48DD, 0xECAF, 0xECAF, 0x3E65, 0xECB4, 0xECB4, 0x48DF, + 0xECB6, 0xECB6, 0x3E6B, 0xECB9, 0xECBB, 0x48E1, 0xECCF, 0xECCF, 0x3E80, + 0xECD4, 0xECD4, 0x3E85, 0xECDB, 0xECDC, 0x3E8C, 0xECDE, 0xECDE, 0x48E4, + 0xECDF, 0xECE1, 0x3E8F, 0xECE5, 0xECE5, 0x3E95, 0xECF0, 0xECF0, 0x3EA0, + 0xECF2, 0xECF2, 0x3EA2, 0xECF5, 0xECF5, 0x3EA5, 0xECFC, 0xECFC, 0x3EAC, + 0xED04, 0xED04, 0x48E7, 0xED07, 0xED07, 0x48E8, 0xED0A, 0xED0A, 0x48EA, + 0xED0C, 0xED11, 0x48EB, 0xED13, 0xED13, 0x48F1, 0xED15, 0xED17, 0x48F2, + 0xED18, 0xED18, 0x3EBA, 0xED1A, 0xED1A, 0x48F5, 0xED1C, 0xED1C, 0x48F6, + 0xED1D, 0xED1D, 0x3EBD, 0xED1E, 0xED1E, 0x48F7, 0xED22, 0xED22, 0x48F8, + 0xED24, 0xED25, 0x3EC2, 0xED26, 0xED27, 0x48F9, 0xED29, 0xED29, 0x3EC5, + 0xED2A, 0xED2A, 0x48FB, 0xED2C, 0xED2C, 0x3EC7, 0xED2D, 0xED2D, 0x48FC, + 0xED3B, 0xED3B, 0x3ECF, 0xED3D, 0xED3D, 0x4904, 0xED41, 0xED42, 0x4906, + 0xED45, 0xED45, 0x4908, 0xED47, 0xED47, 0x3ED5, 0xED4A, 0xED4B, 0x4909, + 0xED4D, 0xED4E, 0x490B, 0xED4F, 0xED4F, 0x3EDA, 0xED51, 0xED51, 0x490D, + 0xED52, 0xED52, 0x3EDC, 0xED53, 0xED54, 0x490E, 0xED57, 0xED58, 0x4910, + 0xED5F, 0xED5F, 0x3EE5, 0xED62, 0xED62, 0x3EE8, 0xED6B, 0xED6B, 0x3EF1, + 0xED71, 0xED71, 0x4912, 0xED72, 0xED72, 0x3EF7, 0xED75, 0xED75, 0x4913, + 0xED77, 0xED77, 0x4915, 0xED78, 0xED78, 0x3EFA, 0xED7A, 0xED7A, 0x4916, + 0xED81, 0xED81, 0x4917, 0xED84, 0xED85, 0x3F04, 0xED86, 0xED86, 0x4918, + 0xED88, 0xED88, 0x3F07, 0xED89, 0xED8A, 0x4919, 0xED8B, 0xED8B, 0x3F08, + 0xED8E, 0xED8E, 0x3F0B, 0xED91, 0xED91, 0x3F0E, 0xEDA6, 0xEDA6, 0x491C, + 0xEDC6, 0xEDC6, 0x3F41, 0xEDCF, 0xEDCF, 0x3F4A, 0xEDD1, 0xEDD1, 0x491E, + 0xEDD7, 0xEDD7, 0x491F, 0xEDDA, 0xEDDA, 0x3F53, 0xEDDB, 0xEDDB, 0x4920, + 0xEDDD, 0xEDDD, 0x4921, 0xEDE1, 0xEDE1, 0x3F58, 0xEDED, 0xEDED, 0x3F64, + 0xEE08, 0xEE08, 0x3F7E, 0xEE11, 0xEE11, 0x3F87, 0xEE15, 0xEE15, 0x4925, + 0xEE1B, 0xEE1B, 0x4926, 0xEE20, 0xEE20, 0x3F94, 0xEE22, 0xEE22, 0x4927, + 0xEE2A, 0xEE2A, 0x3F9D, 0xEE30, 0xEE30, 0x4928, 0xEE31, 0xEE31, 0x3FA3, + 0xEE34, 0xEE34, 0x3FA6, 0xEE48, 0xEE48, 0x4929, 0xEE56, 0xEE56, 0x492A, + 0xEE5B, 0xEE5B, 0x492B, 0xEE5D, 0xEE5D, 0x3FCC, 0xEE60, 0xEE60, 0x492C, + 0xEE64, 0xEE64, 0x3FD2, 0xEE6A, 0xEE6A, 0x3FD8, 0xEE76, 0xEE76, 0x3FE4, + 0xEE7C, 0xEE7C, 0x3FEA, 0xEE7E, 0xEE7E, 0x492D, 0xEE91, 0xEE91, 0x3FFD, + 0xEE9C, 0xEE9C, 0x492F, 0xEEA1, 0xEEA6, 0x4931, 0xEEA7, 0xEEA7, 0x43B4, + 0xEEA8, 0xEEAA, 0x4937, 0xEEAC, 0xEEB1, 0x493A, 0xEEB4, 0xEEB4, 0x4942, + 0xEEB7, 0xEEB7, 0x4945, 0xF303, 0xF318, 0x44C9, 0xF325, 0xF325, 0x496D, + 0xF327, 0xF327, 0x496F, 0xF344, 0xF344, 0x498C, 0xF346, 0xF346, 0x498E, + 0xF34A, 0xF34B, 0x499C, 0xF3A0, 0xF3A1, 0x4534, 0xF3AC, 0xF3AC, 0x453B, + 0xF3F0, 0xF3F0, 0x4575, 0xF3F9, 0xF3FA, 0x457C, 0xF3FC, 0xF3FC, 0x457F, + 0xF408, 0xF40B, 0x4589, 0xF43D, 0xF43D, 0x45B5, 0xF440, 0xF442, 0x430B, + 0xF444, 0xF444, 0x430F, 0xF446, 0xF446, 0x4311, 0xF448, 0xF449, 0x4313, + 0xF44B, 0xF44B, 0x4316, 0xF44D, 0xF44D, 0x4318, 0xF450, 0xF452, 0x431B, + 0xF454, 0xF456, 0x431F, 0xF457, 0xF457, 0x45B7, 0xF45A, 0xF45A, 0x4325, + 0xF45B, 0xF45B, 0x45B8, 0xF45C, 0xF45F, 0x4327, 0xF461, 0xF463, 0x432C, + 0xF465, 0xF466, 0x4330, 0xF469, 0xF469, 0x4334, 0xF46C, 0xF46D, 0x4337, + 0xF46E, 0xF46E, 0x45B9, 0xF46F, 0xF46F, 0x433A, 0xF474, 0xF474, 0x45BA, + 0xF477, 0xF477, 0x45BB, 0xF478, 0xF478, 0x4343, 0xF479, 0xF479, 0x45BC, + 0xF47B, 0xF47B, 0x45BD, 0xF47C, 0xF47E, 0x4347, 0xF480, 0xF481, 0x434B, + 0xF483, 0xF483, 0x45BE, 0xF484, 0xF485, 0x434F, 0xF488, 0xF488, 0x4353, + 0xF48B, 0xF48B, 0x4356, 0xF48D, 0xF490, 0x4358, 0xF491, 0xF491, 0x45BF, + 0xF497, 0xF498, 0x4362, 0xF49B, 0xF49B, 0x4366, 0xF49E, 0xF49E, 0x4369, + 0xF4A4, 0xF4A6, 0x436F, 0xF4A7, 0xF4A7, 0x45C1, 0xF4A9, 0xF4AA, 0x4374, + 0xF4AD, 0xF4AD, 0x4378, 0xF4AF, 0xF4B0, 0x437A, 0xF4B2, 0xF4B2, 0x45C3, + 0xF4B3, 0xF4B4, 0x437E, 0xF4B7, 0xF4B7, 0x4382, 0xF4BA, 0xF4C0, 0x4385, + 0xF4C1, 0xF4C1, 0x45C4, 0xF4C3, 0xF4C5, 0x45C5, 0xF4C7, 0xF4CA, 0x45C9, + 0xF4CC, 0xF4CF, 0x45CE, 0xF4D1, 0xF4D5, 0x45D2, 0xF4D7, 0xF4D7, 0x45D8, + 0xF4D9, 0xF4DA, 0x45DA, 0xF4DB, 0xF4DC, 0x438C, 0xF4DD, 0xF4DE, 0x45DC, + 0xF4DF, 0xF4DF, 0x438E, 0xF4E0, 0xF4E0, 0x45DE, 0xF4E2, 0xF4E2, 0x45DF, + 0xF4E3, 0xF4E3, 0x4390, 0xF4E4, 0xF4E4, 0x45E0, 0xF4E5, 0xF4E5, 0x4391, + 0xF4E6, 0xF4E6, 0x45E1, 0xF4E7, 0xF4E9, 0x4392, 0xF4EF, 0xF4EF, 0x45E5, + 0xF4F2, 0xF4F2, 0x4397, 0xF4F3, 0xF4F3, 0x45E8, 0xF4F8, 0xF4F8, 0x45EB, + 0xF4FC, 0xF4FC, 0x45EE, 0xF4FE, 0xF4FF, 0x45F0, 0xF500, 0xF501, 0x45F2, + 0xF503, 0xF503, 0x45F4, 0xF505, 0xF505, 0x45F6, 0xF507, 0xF511, 0x45F8, + 0xF513, 0xF516, 0x4604, 0xF518, 0xF51D, 0x4609, 0xF51F, 0xF526, 0x4610, + 0xF52A, 0xF52A, 0x461B, 0xF533, 0xF534, 0x4624, 0xF53A, 0xF53B, 0x44E1, + 0xF53D, 0xF53D, 0x44E4, 0xF54E, 0xF54E, 0x44F5, 0xF553, 0xF553, 0x44FA, + 0xF556, 0xF556, 0x44FC, 0xF559, 0xF55A, 0x44FF, 0xF55E, 0xF55E, 0x4504, + 0xF565, 0xF565, 0x450B, 0xF56B, 0xF56B, 0x4511, 0xF572, 0xF572, 0x4518, + 0xF694, 0xF694, 0x467C, 0xF69E, 0xF69E, 0x4686, 0xF6AD, 0xF6AD, 0x4694, + 0xF6B0, 0xF6B0, 0x4697, 0xF7E5, 0xF7E6, 0x36AF, 0xF7E8, 0xF7E8, 0x36B2, + 0xF7EA, 0xF7EB, 0x36B4, 0xF7ED, 0xF7EE, 0x36B7, 0xFA0C, 0xFA0C, 0x0274, + 0xFA0D, 0xFA0D, 0x2381, 0xFE30, 0xFE30, 0x006D, 0xFE31, 0xFE31, 0x007A, + 0xFE33, 0xFE33, 0x35AF, 0xFE34, 0xFE34, 0x35B1, 0xFE35, 0xFE36, 0x0082, + 0xFE37, 0xFE38, 0x0086, 0xFE39, 0xFE3A, 0x008A, 0xFE3B, 0xFE3C, 0x008E, + 0xFE3D, 0xFE3E, 0x0092, 0xFE3F, 0xFE40, 0x0096, 0xFE41, 0xFE42, 0x009A, + 0xFE43, 0xFE44, 0x009E, 0xFE49, 0xFE4A, 0x00C7, 0xFE4B, 0xFE4C, 0x00CB, + 0xFE4D, 0xFE4E, 0x00C9, 0xFE4F, 0xFE4F, 0x35B2, 0xFE50, 0xFE50, 0x0070, + 0xFE52, 0xFE52, 0x0072, 0xFE54, 0xFE57, 0x0074, 0xFE59, 0xFE5E, 0x00A0, + 0xFE5F, 0xFE61, 0x00CD, 0xFE62, 0xFE66, 0x00DF, 0xFE69, 0xFE6B, 0x010C, + 0xFF01, 0xFF01, 0x006C, 0xFF02, 0xFF02, 0x36E4, 0xFF03, 0xFF03, 0x00AE, + 0xFF04, 0xFF04, 0x0103, 0xFF05, 0xFF05, 0x0108, 0xFF06, 0xFF06, 0x00AF, + 0xFF07, 0xFF07, 0x36E3, 0xFF08, 0xFF09, 0x0080, 0xFF0A, 0xFF0A, 0x00B0, + 0xFF0B, 0xFF0B, 0x00D0, 0xFF0C, 0xFF0C, 0x0064, 0xFF0D, 0xFF0D, 0x00D1, + 0xFF0E, 0xFF0E, 0x0067, 0xFF0F, 0xFF0F, 0x0101, 0xFF10, 0xFF19, 0x014D, + 0xFF1A, 0xFF1A, 0x006A, 0xFF1B, 0xFF1B, 0x0069, 0xFF1C, 0xFF1C, 0x00D6, + 0xFF1D, 0xFF1D, 0x00D8, 0xFF1E, 0xFF1E, 0x00D7, 0xFF1F, 0xFF1F, 0x006B, + 0xFF20, 0xFF20, 0x0109, 0xFF21, 0xFF3A, 0x016D, 0xFF3B, 0xFF3B, 0x35BE, + 0xFF3C, 0xFF3C, 0x0102, 0xFF3D, 0xFF3D, 0x35BF, 0xFF3E, 0xFF3E, 0x35B4, + 0xFF3F, 0xFF3F, 0x00C5, 0xFF41, 0xFF5A, 0x0187, 0xFF5B, 0xFF5B, 0x0084, + 0xFF5C, 0xFF5C, 0x0078, 0xFF5D, 0xFF5D, 0x0085, 0xFF64, 0xFF64, 0x0071, + 0xFFE2, 0xFFE2, 0x36E1, 0xFFE4, 0xFFE4, 0x36E2, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp new file mode 100644 index 0000000000..b77835c3f3 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp @@ -0,0 +1,15 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_UniCNS_UCS2_V_3[13 * 3] = { + 0x2013, 0x2013, 0x0078, 0x2014, 0x2014, 0x007A, 0x2025, 0x2025, + 0x006D, 0x3008, 0x3009, 0x0096, 0x300A, 0x300B, 0x0092, 0x300C, + 0x300D, 0x009A, 0x300E, 0x300F, 0x009E, 0x3010, 0x3011, 0x008E, + 0x3014, 0x3015, 0x008A, 0xFE4F, 0xFE4F, 0x35B1, 0xFF08, 0xFF09, + 0x0082, 0xFF5B, 0xFF5B, 0x0086, 0xFF5D, 0xFF5D, 0x0087, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp new file mode 100644 index 0000000000..c30dc46568 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp @@ -0,0 +1,3245 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +const FX_WORD g_FXCMAP_UniCNS_UTF16_H_0[14557 * 2] = { + 0x0020, 0x0001, 0x0021, 0x0002, 0x0022, 0x0003, 0x0023, 0x0004, 0x0024, + 0x0005, 0x0025, 0x0006, 0x0026, 0x0007, 0x0027, 0x0008, 0x0028, 0x0009, + 0x0029, 0x000A, 0x002A, 0x000B, 0x002B, 0x000C, 0x002C, 0x000D, 0x002D, + 0x000E, 0x002E, 0x000F, 0x002F, 0x0010, 0x0030, 0x0011, 0x0031, 0x0012, + 0x0032, 0x0013, 0x0033, 0x0014, 0x0034, 0x0015, 0x0035, 0x0016, 0x0036, + 0x0017, 0x0037, 0x0018, 0x0038, 0x0019, 0x0039, 0x001A, 0x003A, 0x001B, + 0x003B, 0x001C, 0x003C, 0x001D, 0x003D, 0x001E, 0x003E, 0x001F, 0x003F, + 0x0020, 0x0040, 0x0021, 0x0041, 0x0022, 0x0042, 0x0023, 0x0043, 0x0024, + 0x0044, 0x0025, 0x0045, 0x0026, 0x0046, 0x0027, 0x0047, 0x0028, 0x0048, + 0x0029, 0x0049, 0x002A, 0x004A, 0x002B, 0x004B, 0x002C, 0x004C, 0x002D, + 0x004D, 0x002E, 0x004E, 0x002F, 0x004F, 0x0030, 0x0050, 0x0031, 0x0051, + 0x0032, 0x0052, 0x0033, 0x0053, 0x0034, 0x0054, 0x0035, 0x0055, 0x0036, + 0x0056, 0x0037, 0x0057, 0x0038, 0x0058, 0x0039, 0x0059, 0x003A, 0x005A, + 0x003B, 0x005B, 0x003C, 0x005C, 0x003D, 0x005D, 0x003E, 0x005E, 0x003F, + 0x005F, 0x0040, 0x0060, 0x0041, 0x0061, 0x0042, 0x0062, 0x0043, 0x0063, + 0x0044, 0x0064, 0x0045, 0x0065, 0x0046, 0x0066, 0x0047, 0x0067, 0x0048, + 0x0068, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B, 0x004C, 0x006C, + 0x004D, 0x006D, 0x004E, 0x006E, 0x004F, 0x006F, 0x0050, 0x0070, 0x0051, + 0x0071, 0x0052, 0x0072, 0x0053, 0x0073, 0x0054, 0x0074, 0x0055, 0x0075, + 0x0056, 0x0076, 0x0057, 0x0077, 0x0058, 0x0078, 0x0059, 0x0079, 0x005A, + 0x007A, 0x005B, 0x007B, 0x005C, 0x007C, 0x005D, 0x007D, 0x005E, 0x007E, + 0x005F, 0x00A2, 0x0106, 0x00A3, 0x0107, 0x00A5, 0x0104, 0x00A7, 0x00B2, + 0x00A8, 0x35B3, 0x00AC, 0x36E1, 0x00AF, 0x00C3, 0x00B0, 0x0118, 0x00B1, + 0x00D4, 0x00B7, 0x0073, 0x00D7, 0x00D2, 0x00F7, 0x00D3, 0x02C6, 0x35B4, + 0x02C7, 0x01F8, 0x02CA, 0x01F7, 0x02CB, 0x01F9, 0x02CD, 0x00C6, 0x02D9, + 0x01F6, 0x0308, 0x35B3, 0x0391, 0x01A1, 0x0392, 0x01A2, 0x0393, 0x01A3, + 0x0394, 0x01A4, 0x0395, 0x01A5, 0x0396, 0x01A6, 0x0397, 0x01A7, 0x0398, + 0x01A8, 0x0399, 0x01A9, 0x039A, 0x01AA, 0x039B, 0x01AB, 0x039C, 0x01AC, + 0x039D, 0x01AD, 0x039E, 0x01AE, 0x039F, 0x01AF, 0x03A0, 0x01B0, 0x03A1, + 0x01B1, 0x03A3, 0x01B2, 0x03A4, 0x01B3, 0x03A5, 0x01B4, 0x03A6, 0x01B5, + 0x03A7, 0x01B6, 0x03A8, 0x01B7, 0x03A9, 0x01B8, 0x03B1, 0x01B9, 0x03B2, + 0x01BA, 0x03B3, 0x01BB, 0x03B4, 0x01BC, 0x03B5, 0x01BD, 0x03B6, 0x01BE, + 0x03B7, 0x01BF, 0x03B8, 0x01C0, 0x03B9, 0x01C1, 0x03BA, 0x01C2, 0x03BB, + 0x01C3, 0x03BC, 0x01C4, 0x03BD, 0x01C5, 0x03BE, 0x01C6, 0x03BF, 0x01C7, + 0x03C0, 0x01C8, 0x03C1, 0x01C9, 0x03C3, 0x01CA, 0x03C4, 0x01CB, 0x03C5, + 0x01CC, 0x03C6, 0x01CD, 0x03C7, 0x01CE, 0x03C8, 0x01CF, 0x03C9, 0x01D0, + 0x0401, 0x3670, 0x0410, 0x366A, 0x0411, 0x366B, 0x0412, 0x366C, 0x0413, + 0x366D, 0x0414, 0x366E, 0x0415, 0x366F, 0x0416, 0x3671, 0x0417, 0x3672, + 0x0418, 0x3673, 0x0419, 0x3674, 0x041A, 0x3675, 0x041B, 0x3676, 0x041C, + 0x3677, 0x041D, 0x3678, 0x041E, 0x3679, 0x041F, 0x367A, 0x0420, 0x367B, + 0x0421, 0x367C, 0x0422, 0x367D, 0x0423, 0x367E, 0x0424, 0x367F, 0x0425, + 0x3680, 0x0426, 0x3681, 0x0427, 0x3682, 0x0428, 0x3683, 0x0429, 0x3684, + 0x042A, 0x3685, 0x042B, 0x3686, 0x042C, 0x3687, 0x042D, 0x3688, 0x042E, + 0x3689, 0x042F, 0x368A, 0x0430, 0x368B, 0x0431, 0x368C, 0x0432, 0x368D, + 0x0433, 0x368E, 0x0434, 0x368F, 0x0435, 0x3690, 0x0436, 0x3692, 0x0437, + 0x3693, 0x0438, 0x3694, 0x0439, 0x3695, 0x043A, 0x3696, 0x043B, 0x3697, + 0x043C, 0x3698, 0x043D, 0x3699, 0x043E, 0x369A, 0x043F, 0x369B, 0x0440, + 0x369C, 0x0441, 0x369D, 0x0442, 0x369E, 0x0443, 0x369F, 0x0444, 0x36A0, + 0x0445, 0x36A1, 0x0446, 0x36A2, 0x0447, 0x36A3, 0x0448, 0x36A4, 0x0449, + 0x36A5, 0x044A, 0x36A6, 0x044B, 0x36A7, 0x044C, 0x36A8, 0x044D, 0x36A9, + 0x044E, 0x36AA, 0x044F, 0x36AB, 0x0451, 0x3691, 0x2013, 0x0079, 0x2014, + 0x007B, 0x2018, 0x00A6, 0x2019, 0x00A7, 0x201C, 0x00A8, 0x201D, 0x00A9, + 0x2022, 0x0068, 0x2025, 0x006F, 0x2026, 0x006E, 0x2027, 0x0068, 0x2032, + 0x00AD, 0x2035, 0x00AC, 0x203B, 0x00B1, 0x203E, 0x00C3, 0x2103, 0x010A, + 0x2105, 0x00C2, 0x2109, 0x010B, 0x2116, 0x36E6, 0x2121, 0x36E7, 0x2160, + 0x0157, 0x2161, 0x0158, 0x2162, 0x0159, 0x2163, 0x015A, 0x2164, 0x015B, + 0x2165, 0x015C, 0x2166, 0x015D, 0x2167, 0x015E, 0x2168, 0x015F, 0x2169, + 0x0160, 0x2170, 0x020E, 0x2171, 0x020F, 0x2172, 0x0210, 0x2173, 0x0211, + 0x2174, 0x0212, 0x2175, 0x0213, 0x2176, 0x0214, 0x2177, 0x0215, 0x2178, + 0x0216, 0x2179, 0x0217, 0x2190, 0x00F8, 0x2191, 0x00F5, 0x2192, 0x00F7, + 0x2193, 0x00F6, 0x2196, 0x00F9, 0x2197, 0x00FA, 0x2198, 0x00FC, 0x2199, + 0x00FB, 0x21B8, 0x36AD, 0x21B9, 0x36AE, 0x21E7, 0x36AC, 0x2215, 0x0101, + 0x221A, 0x00D5, 0x221E, 0x00DC, 0x221F, 0x00E9, 0x2220, 0x00E8, 0x2223, + 0x00FE, 0x2225, 0x00FD, 0x2229, 0x00E5, 0x222A, 0x00E6, 0x222B, 0x00ED, + 0x222E, 0x00EE, 0x2234, 0x00F0, 0x2235, 0x00EF, 0x223C, 0x00E4, 0x2252, + 0x00DD, 0x2260, 0x00DB, 0x2261, 0x00DE, 0x2266, 0x00D9, 0x2267, 0x00DA, + 0x2295, 0x00F3, 0x2299, 0x00F4, 0x22A5, 0x00E7, 0x22BF, 0x00EA, 0x22EF, + 0x006E, 0x2400, 0x0232, 0x2401, 0x0233, 0x2402, 0x0234, 0x2403, 0x0235, + 0x2404, 0x0236, 0x2405, 0x0237, 0x2406, 0x0238, 0x2407, 0x0239, 0x2408, + 0x023A, 0x2409, 0x023B, 0x240A, 0x023C, 0x240B, 0x023D, 0x240C, 0x023E, + 0x240D, 0x023F, 0x240E, 0x0240, 0x240F, 0x0241, 0x2410, 0x0242, 0x2411, + 0x0243, 0x2412, 0x0244, 0x2413, 0x0245, 0x2414, 0x0246, 0x2415, 0x0247, + 0x2416, 0x0248, 0x2417, 0x0249, 0x2418, 0x024A, 0x2419, 0x024B, 0x241A, + 0x024C, 0x241B, 0x024D, 0x241C, 0x024E, 0x241D, 0x024F, 0x241E, 0x0250, + 0x241F, 0x0251, 0x2421, 0x0252, 0x2460, 0x01FA, 0x2461, 0x01FB, 0x2462, + 0x01FC, 0x2463, 0x01FD, 0x2464, 0x01FE, 0x2465, 0x01FF, 0x2466, 0x0200, + 0x2467, 0x0201, 0x2468, 0x0202, 0x2469, 0x0203, 0x2474, 0x0204, 0x2475, + 0x0205, 0x2476, 0x0206, 0x2477, 0x0207, 0x2478, 0x0208, 0x2479, 0x0209, + 0x247A, 0x020A, 0x247B, 0x020B, 0x247C, 0x020C, 0x247D, 0x020D, 0x2500, + 0x0137, 0x2502, 0x0138, 0x250C, 0x013A, 0x2510, 0x013B, 0x2514, 0x013C, + 0x2518, 0x013D, 0x251C, 0x0135, 0x2524, 0x0134, 0x252C, 0x0133, 0x2534, + 0x0132, 0x253C, 0x0131, 0x2550, 0x0142, 0x2551, 0x370A, 0x2552, 0x36F8, + 0x2553, 0x3701, 0x2554, 0x36EF, 0x2555, 0x36FA, 0x2556, 0x3703, 0x2557, + 0x36F1, 0x2558, 0x36FE, 0x2559, 0x3707, 0x255A, 0x36F5, 0x255B, 0x3700, + 0x255C, 0x3709, 0x255D, 0x36F7, 0x255E, 0x0143, 0x255F, 0x3704, 0x2560, + 0x36F2, 0x2561, 0x0145, 0x2562, 0x3706, 0x2563, 0x36F4, 0x2564, 0x36F9, + 0x2565, 0x3702, 0x2566, 0x36F0, 0x2567, 0x36FF, 0x2568, 0x3708, 0x2569, + 0x36F6, 0x256A, 0x0144, 0x256B, 0x3705, 0x256C, 0x36F3, 0x256D, 0x013E, + 0x256E, 0x013F, 0x256F, 0x0141, 0x2570, 0x0140, 0x2571, 0x014A, 0x2572, + 0x014B, 0x2573, 0x014C, 0x2574, 0x35B0, 0x2581, 0x0122, 0x2582, 0x0123, + 0x2583, 0x0124, 0x2584, 0x0125, 0x2585, 0x0126, 0x2586, 0x0127, 0x2587, + 0x0128, 0x2588, 0x0129, 0x2589, 0x0130, 0x258A, 0x012F, 0x258B, 0x012E, + 0x258C, 0x012D, 0x258D, 0x012C, 0x258E, 0x012B, 0x258F, 0x012A, 0x2593, + 0x3710, 0x2594, 0x0136, 0x2595, 0x0139, 0x25A0, 0x00BE, 0x25A1, 0x00BD, + 0x25B2, 0x00B7, 0x25B3, 0x00B6, 0x25BC, 0x00C0, 0x25BD, 0x00BF, 0x25C6, + 0x00BC, 0x25C7, 0x00BB, 0x25CB, 0x00B4, 0x25CE, 0x00B8, 0x25CF, 0x00B5, + 0x25E2, 0x0146, 0x25E3, 0x0147, 0x25E4, 0x0149, 0x25E5, 0x0148, 0x2605, + 0x00BA, 0x2606, 0x00B9, 0x2609, 0x00F4, 0x2640, 0x00F1, 0x2641, 0x00F3, + 0x2642, 0x00F2, 0x273D, 0x35C0, 0x2F00, 0x0253, 0x2F01, 0x0218, 0x2F02, + 0x0219, 0x2F03, 0x021A, 0x2F04, 0x0254, 0x2F05, 0x021B, 0x2F06, 0x025A, + 0x2F07, 0x021C, 0x2F08, 0x025B, 0x2F09, 0x025C, 0x2F0A, 0x025D, 0x2F0B, + 0x025E, 0x2F0C, 0x021D, 0x2F0D, 0x021E, 0x2F0E, 0x021F, 0x2F0F, 0x025F, + 0x2F10, 0x176E, 0x2F11, 0x0260, 0x2F12, 0x0262, 0x2F13, 0x0220, 0x2F14, + 0x0263, 0x2F15, 0x176F, 0x2F16, 0x0221, 0x2F17, 0x0264, 0x2F18, 0x0265, + 0x2F19, 0x0222, 0x2F1A, 0x1770, 0x2F1B, 0x0223, 0x2F1C, 0x0266, 0x2F1D, + 0x0279, 0x2F1E, 0x1775, 0x2F1F, 0x027A, 0x2F20, 0x027B, 0x2F21, 0x0224, + 0x2F22, 0x0224, 0x2F23, 0x027C, 0x2F24, 0x027D, 0x2F25, 0x027E, 0x2F26, + 0x027F, 0x2F27, 0x0225, 0x2F28, 0x0282, 0x2F29, 0x0283, 0x2F2A, 0x0284, + 0x2F2B, 0x0285, 0x2F2C, 0x1776, 0x2F2D, 0x0286, 0x2F2E, 0x0226, 0x2F2F, + 0x0288, 0x2F30, 0x0289, 0x2F31, 0x028C, 0x2F32, 0x028D, 0x2F33, 0x0227, + 0x2F34, 0x0228, 0x2F35, 0x0229, 0x2F36, 0x028E, 0x2F37, 0x028F, 0x2F38, + 0x0290, 0x2F39, 0x022A, 0x2F3A, 0x022B, 0x2F3B, 0x1777, 0x2F3C, 0x02D0, + 0x2F3D, 0x02D1, 0x2F3E, 0x02D2, 0x2F3F, 0x02D3, 0x2F40, 0x02D5, 0x2F41, + 0x022C, 0x2F42, 0x02D6, 0x2F43, 0x02D7, 0x2F44, 0x02D8, 0x2F45, 0x02D9, + 0x2F46, 0x022D, 0x2F47, 0x02DA, 0x2F48, 0x02DB, 0x2F49, 0x02DC, 0x2F4A, + 0x02DD, 0x2F4B, 0x02DE, 0x2F4C, 0x02DF, 0x2F4D, 0x02E0, 0x2F4E, 0x178A, + 0x2F4F, 0x02E1, 0x2F50, 0x02E2, 0x2F51, 0x02E3, 0x2F52, 0x02E4, 0x2F53, + 0x178C, 0x2F54, 0x02E5, 0x2F55, 0x02E6, 0x2F56, 0x02E7, 0x2F57, 0x02E8, + 0x2F58, 0x02E9, 0x2F59, 0x178D, 0x2F5A, 0x02EA, 0x2F5B, 0x02EB, 0x2F5C, + 0x02EC, 0x2F5D, 0x02ED, 0x2F5E, 0x0356, 0x2F5F, 0x0357, 0x2F60, 0x0358, + 0x2F61, 0x0359, 0x2F62, 0x035A, 0x2F63, 0x035B, 0x2F64, 0x035C, 0x2F65, + 0x035E, 0x2F66, 0x0362, 0x2F67, 0x022E, 0x2F68, 0x022F, 0x2F69, 0x0363, + 0x2F6A, 0x0364, 0x2F6B, 0x0365, 0x2F6C, 0x0366, 0x2F6D, 0x0367, 0x2F6E, + 0x0368, 0x2F6F, 0x0369, 0x2F70, 0x036A, 0x2F71, 0x17B2, 0x2F72, 0x036B, + 0x2F73, 0x036C, 0x2F74, 0x036D, 0x2F75, 0x03F6, 0x2F76, 0x03F7, 0x2F77, + 0x03F8, 0x2F78, 0x03F9, 0x2F79, 0x1812, 0x2F7A, 0x03FA, 0x2F7B, 0x03FB, + 0x2F7C, 0x03FC, 0x2F7D, 0x03FE, 0x2F7E, 0x03FF, 0x2F7F, 0x0400, 0x2F80, + 0x0401, 0x2F81, 0x0402, 0x2F82, 0x0405, 0x2F83, 0x0406, 0x2F84, 0x0407, + 0x2F85, 0x0408, 0x2F86, 0x0409, 0x2F87, 0x040A, 0x2F88, 0x040B, 0x2F89, + 0x040C, 0x2F8A, 0x040D, 0x2F8B, 0x1813, 0x2F8C, 0x1818, 0x2F8D, 0x040F, + 0x2F8E, 0x0410, 0x2F8F, 0x0411, 0x2F90, 0x0412, 0x2F91, 0x1819, 0x2F92, + 0x0508, 0x2F93, 0x0509, 0x2F94, 0x050A, 0x2F95, 0x050B, 0x2F96, 0x050C, + 0x2F97, 0x050D, 0x2F98, 0x18E7, 0x2F99, 0x050E, 0x2F9A, 0x050F, 0x2F9B, + 0x0510, 0x2F9C, 0x0511, 0x2F9D, 0x0512, 0x2F9E, 0x0513, 0x2F9F, 0x0514, + 0x2FA0, 0x0515, 0x2FA1, 0x0230, 0x2FA2, 0x051B, 0x2FA3, 0x0520, 0x2FA4, + 0x0521, 0x2FA5, 0x0522, 0x2FA6, 0x0696, 0x2FA7, 0x0697, 0x2FA8, 0x0698, + 0x2FA9, 0x0699, 0x2FAA, 0x0231, 0x2FAB, 0x069F, 0x2FAC, 0x06A0, 0x2FAE, + 0x06A2, 0x2FAF, 0x0826, 0x2FB0, 0x0827, 0x2FB1, 0x0828, 0x2FB2, 0x0829, + 0x2FB3, 0x082A, 0x2FB4, 0x082B, 0x2FB5, 0x082C, 0x2FB6, 0x082D, 0x2FB7, + 0x082E, 0x2FB8, 0x082F, 0x2FB9, 0x0830, 0x2FBA, 0x09F5, 0x2FBB, 0x09F6, + 0x2FBC, 0x09F7, 0x2FBD, 0x1E33, 0x2FBE, 0x09F8, 0x2FBF, 0x1E34, 0x2FC0, + 0x09F9, 0x2FC1, 0x09FA, 0x2FC2, 0x0BE1, 0x2FC3, 0x0BE2, 0x2FC4, 0x0BE3, + 0x2FC5, 0x0BE4, 0x2FC6, 0x0BE5, 0x2FC7, 0x0BE6, 0x2FC8, 0x0DBB, 0x2FC9, + 0x0DBC, 0x2FCA, 0x0DBD, 0x2FCB, 0x2360, 0x2FCC, 0x2612, 0x2FCD, 0x0F7B, + 0x2FCE, 0x0F7C, 0x2FCF, 0x0F7D, 0x2FD0, 0x1100, 0x2FD1, 0x1101, 0x2FD2, + 0x1289, 0x2FD3, 0x13B2, 0x2FD4, 0x13B3, 0x2FD5, 0x2F0D, 0x3000, 0x0063, + 0x3001, 0x0065, 0x3002, 0x0066, 0x3003, 0x00B3, 0x3005, 0x35BA, 0x3006, + 0x35BB, 0x3007, 0x35BC, 0x3008, 0x0094, 0x3009, 0x0095, 0x300A, 0x0090, + 0x300B, 0x0091, 0x300C, 0x0098, 0x300D, 0x0099, 0x300E, 0x009C, 0x300F, + 0x009D, 0x3010, 0x008C, 0x3011, 0x008D, 0x3012, 0x0105, 0x3014, 0x0088, + 0x3015, 0x0089, 0x301D, 0x00AA, 0x301E, 0x00AB, 0x3021, 0x0161, 0x3022, + 0x0162, 0x3023, 0x0163, 0x3024, 0x0164, 0x3025, 0x0165, 0x3026, 0x0166, + 0x3027, 0x0167, 0x3028, 0x0168, 0x3029, 0x0169, 0x3038, 0x016A, 0x3039, + 0x016B, 0x303A, 0x016C, 0x3041, 0x35C1, 0x3042, 0x35C2, 0x3043, 0x35C3, + 0x3044, 0x35C4, 0x3045, 0x35C5, 0x3046, 0x35C6, 0x3047, 0x35C7, 0x3048, + 0x35C8, 0x3049, 0x35C9, 0x304A, 0x35CA, 0x304B, 0x35CB, 0x304C, 0x35CC, + 0x304D, 0x35CD, 0x304E, 0x35CE, 0x304F, 0x35CF, 0x3050, 0x35D0, 0x3051, + 0x35D1, 0x3052, 0x35D2, 0x3053, 0x35D3, 0x3054, 0x35D4, 0x3055, 0x35D5, + 0x3056, 0x35D6, 0x3057, 0x35D7, 0x3058, 0x35D8, 0x3059, 0x35D9, 0x305A, + 0x35DA, 0x305B, 0x35DB, 0x305C, 0x35DC, 0x305D, 0x35DD, 0x305E, 0x35DE, + 0x305F, 0x35DF, 0x3060, 0x35E0, 0x3061, 0x35E1, 0x3062, 0x35E2, 0x3063, + 0x35E3, 0x3064, 0x35E4, 0x3065, 0x35E5, 0x3066, 0x35E6, 0x3067, 0x35E7, + 0x3068, 0x35E8, 0x3069, 0x35E9, 0x306A, 0x35EA, 0x306B, 0x35EB, 0x306C, + 0x35EC, 0x306D, 0x35ED, 0x306E, 0x35EE, 0x306F, 0x35EF, 0x3070, 0x35F0, + 0x3071, 0x35F1, 0x3072, 0x35F2, 0x3073, 0x35F3, 0x3074, 0x35F4, 0x3075, + 0x35F5, 0x3076, 0x35F6, 0x3077, 0x35F7, 0x3078, 0x35F8, 0x3079, 0x35F9, + 0x307A, 0x35FA, 0x307B, 0x35FB, 0x307C, 0x35FC, 0x307D, 0x35FD, 0x307E, + 0x35FE, 0x307F, 0x35FF, 0x3080, 0x3600, 0x3081, 0x3601, 0x3082, 0x3602, + 0x3083, 0x3603, 0x3084, 0x3604, 0x3085, 0x3605, 0x3086, 0x3606, 0x3087, + 0x3607, 0x3088, 0x3608, 0x3089, 0x3609, 0x308A, 0x360A, 0x308B, 0x360B, + 0x308C, 0x360C, 0x308D, 0x360D, 0x308E, 0x360E, 0x308F, 0x360F, 0x3090, + 0x3610, 0x3091, 0x3611, 0x3092, 0x3612, 0x3093, 0x3613, 0x309D, 0x35B7, + 0x309E, 0x35B8, 0x30A1, 0x3614, 0x30A2, 0x3615, 0x30A3, 0x3616, 0x30A4, + 0x3617, 0x30A5, 0x3618, 0x30A6, 0x3619, 0x30A7, 0x361A, 0x30A8, 0x361B, + 0x30A9, 0x361C, 0x30AA, 0x361D, 0x30AB, 0x361E, 0x30AC, 0x361F, 0x30AD, + 0x3620, 0x30AE, 0x3621, 0x30AF, 0x3622, 0x30B0, 0x3623, 0x30B1, 0x3624, + 0x30B2, 0x3625, 0x30B3, 0x3626, 0x30B4, 0x3627, 0x30B5, 0x3628, 0x30B6, + 0x3629, 0x30B7, 0x362A, 0x30B8, 0x362B, 0x30B9, 0x362C, 0x30BA, 0x362D, + 0x30BB, 0x362E, 0x30BC, 0x362F, 0x30BD, 0x3630, 0x30BE, 0x3631, 0x30BF, + 0x3632, 0x30C0, 0x3633, 0x30C1, 0x3634, 0x30C2, 0x3635, 0x30C3, 0x3636, + 0x30C4, 0x3637, 0x30C5, 0x3638, 0x30C6, 0x3639, 0x30C7, 0x363A, 0x30C8, + 0x363B, 0x30C9, 0x363C, 0x30CA, 0x363D, 0x30CB, 0x363E, 0x30CC, 0x363F, + 0x30CD, 0x3640, 0x30CE, 0x3641, 0x30CF, 0x3642, 0x30D0, 0x3643, 0x30D1, + 0x3644, 0x30D2, 0x3645, 0x30D3, 0x3646, 0x30D4, 0x3647, 0x30D5, 0x3648, + 0x30D6, 0x3649, 0x30D7, 0x364A, 0x30D8, 0x364B, 0x30D9, 0x364C, 0x30DA, + 0x364D, 0x30DB, 0x364E, 0x30DC, 0x364F, 0x30DD, 0x3650, 0x30DE, 0x3651, + 0x30DF, 0x3652, 0x30E0, 0x3653, 0x30E1, 0x3654, 0x30E2, 0x3655, 0x30E3, + 0x3656, 0x30E4, 0x3657, 0x30E5, 0x3658, 0x30E6, 0x3659, 0x30E7, 0x365A, + 0x30E8, 0x365B, 0x30E9, 0x365C, 0x30EA, 0x365D, 0x30EB, 0x365E, 0x30EC, + 0x365F, 0x30ED, 0x3660, 0x30EE, 0x3661, 0x30EF, 0x3662, 0x30F0, 0x3663, + 0x30F1, 0x3664, 0x30F2, 0x3665, 0x30F3, 0x3666, 0x30F4, 0x3667, 0x30F5, + 0x3668, 0x30F6, 0x3669, 0x30FC, 0x35BD, 0x30FD, 0x35B5, 0x30FE, 0x35B6, + 0x3105, 0x01D1, 0x3106, 0x01D2, 0x3107, 0x01D3, 0x3108, 0x01D4, 0x3109, + 0x01D5, 0x310A, 0x01D6, 0x310B, 0x01D7, 0x310C, 0x01D8, 0x310D, 0x01D9, + 0x310E, 0x01DA, 0x310F, 0x01DB, 0x3110, 0x01DC, 0x3111, 0x01DD, 0x3112, + 0x01DE, 0x3113, 0x01DF, 0x3114, 0x01E0, 0x3115, 0x01E1, 0x3116, 0x01E2, + 0x3117, 0x01E3, 0x3118, 0x01E4, 0x3119, 0x01E5, 0x311A, 0x01E6, 0x311B, + 0x01E7, 0x311C, 0x01E8, 0x311D, 0x01E9, 0x311E, 0x01EA, 0x311F, 0x01EB, + 0x3120, 0x01EC, 0x3121, 0x01ED, 0x3122, 0x01EE, 0x3123, 0x01EF, 0x3124, + 0x01F0, 0x3125, 0x01F1, 0x3126, 0x01F2, 0x3127, 0x01F3, 0x3128, 0x01F4, + 0x3129, 0x01F5, 0x3231, 0x36E5, 0x32A3, 0x00C1, 0x338E, 0x0115, 0x338F, + 0x0116, 0x339C, 0x0110, 0x339D, 0x0111, 0x339E, 0x0112, 0x33A1, 0x0114, + 0x33C4, 0x0117, 0x33CE, 0x0113, 0x33D1, 0x00EC, 0x33D2, 0x00EB, 0x33D5, + 0x010F, 0x361D, 0x36B7, 0x4491, 0x36B4, 0x4E00, 0x0253, 0x4E01, 0x0255, + 0x4E03, 0x0256, 0x4E07, 0x1771, 0x4E08, 0x0269, 0x4E09, 0x0267, 0x4E0A, + 0x026A, 0x4E0B, 0x0268, 0x4E0C, 0x1772, 0x4E0D, 0x0294, 0x4E0E, 0x177A, + 0x4E0F, 0x1778, 0x4E10, 0x0293, 0x4E11, 0x0292, 0x4E14, 0x02F2, 0x4E15, + 0x02F1, 0x4E16, 0x02F0, 0x4E18, 0x02F3, 0x4E19, 0x02EF, 0x4E1E, 0x036E, + 0x4E1F, 0x036F, 0x4E26, 0x0528, 0x4E28, 0x0218, 0x4E2B, 0x026B, 0x4E2D, + 0x0295, 0x4E2E, 0x177B, 0x4E30, 0x0296, 0x4E31, 0x178E, 0x4E32, 0x0415, + 0x4E33, 0x18F4, 0x4E36, 0x0219, 0x4E38, 0x026C, 0x4E39, 0x0297, 0x4E3B, + 0x02F4, 0x4E3C, 0x178F, 0x4E3F, 0x021A, 0x4E41, 0x36AF, 0x4E42, 0x176C, + 0x4E43, 0x0257, 0x4E45, 0x026E, 0x4E47, 0x1773, 0x4E48, 0x026F, 0x4E4B, + 0x0298, 0x4E4D, 0x02F5, 0x4E4E, 0x02F7, 0x4E4F, 0x02F6, 0x4E52, 0x0370, + 0x4E53, 0x0371, 0x4E56, 0x0529, 0x4E58, 0x0831, 0x4E59, 0x0254, 0x4E5A, + 0x36B1, 0x4E5C, 0x176D, 0x4E5D, 0x0258, 0x4E5E, 0x0271, 0x4E5F, 0x0270, + 0x4E69, 0x0372, 0x4E73, 0x052A, 0x4E7E, 0x09FB, 0x4E7F, 0x1E35, 0x4E82, + 0x0DBE, 0x4E83, 0x2361, 0x4E84, 0x2362, 0x4E85, 0x021B, 0x4E86, 0x0259, + 0x4E88, 0x029A, 0x4E8B, 0x052B, 0x4E8C, 0x025A, 0x4E8D, 0x1774, 0x4E8E, + 0x0272, 0x4E91, 0x029B, 0x4E92, 0x029D, 0x4E93, 0x177C, 0x4E94, 0x029E, + 0x4E95, 0x029C, 0x4E99, 0x0373, 0x4E9B, 0x052C, 0x4E9E, 0x052D, 0x4E9F, + 0x06A3, 0x4EA0, 0x021C, 0x4EA1, 0x0273, 0x4EA2, 0x029F, 0x4EA4, 0x0374, + 0x4EA5, 0x0376, 0x4EA6, 0x0375, 0x4EA8, 0x0416, 0x4EAB, 0x052E, 0x4EAC, + 0x052F, 0x4EAD, 0x06A4, 0x4EAE, 0x06A5, 0x4EB3, 0x0832, 0x4EB6, 0x2363, + 0x4EB9, 0x3377, 0x4EBA, 0x025B, 0x4EC0, 0x02A1, 0x4EC1, 0x02A0, 0x4EC2, + 0x177D, 0x4EC3, 0x02A2, 0x4EC4, 0x02A8, 0x4EC6, 0x02A3, 0x4EC7, 0x02A4, + 0x4EC8, 0x177F, 0x4EC9, 0x177E, 0x4ECA, 0x02A6, 0x4ECB, 0x02A7, 0x4ECD, + 0x02A5, 0x4ED4, 0x02FA, 0x4ED5, 0x02FB, 0x4ED6, 0x02FC, 0x4ED7, 0x02FD, + 0x4ED8, 0x02F9, 0x4ED9, 0x0300, 0x4EDA, 0x1795, 0x4EDC, 0x1791, 0x4EDD, + 0x1794, 0x4EDE, 0x0301, 0x4EDF, 0x0311, 0x4EE1, 0x1793, 0x4EE3, 0x02FE, + 0x4EE4, 0x02FF, 0x4EE5, 0x02F8, 0x4EE8, 0x1790, 0x4EE9, 0x1792, 0x4EF0, + 0x0383, 0x4EF1, 0x17BA, 0x4EF2, 0x0380, 0x4EF3, 0x0384, 0x4EF4, 0x17C4, + 0x4EF5, 0x17B8, 0x4EF6, 0x0381, 0x4EF7, 0x17BC, 0x4EFB, 0x0382, 0x4EFD, + 0x0385, 0x4EFF, 0x0377, 0x4F00, 0x17BB, 0x4F01, 0x0386, 0x4F02, 0x17BF, + 0x4F04, 0x17C3, 0x4F05, 0x17C0, 0x4F08, 0x17BD, 0x4F09, 0x0378, 0x4F0A, + 0x037A, 0x4F0B, 0x0387, 0x4F0D, 0x037C, 0x4F0E, 0x17B5, 0x4F0F, 0x037F, + 0x4F10, 0x037D, 0x4F11, 0x037E, 0x4F12, 0x17C5, 0x4F13, 0x17C2, 0x4F14, + 0x17B9, 0x4F15, 0x037B, 0x4F18, 0x17B6, 0x4F19, 0x0379, 0x4F1D, 0x17BE, + 0x4F22, 0x17C1, 0x4F2C, 0x17B7, 0x4F2D, 0x182F, 0x4F2F, 0x042C, 0x4F30, + 0x041F, 0x4F33, 0x1830, 0x4F34, 0x041C, 0x4F36, 0x042E, 0x4F38, 0x0424, + 0x4F3A, 0x0423, 0x4F3B, 0x1824, 0x4F3C, 0x0427, 0x4F3D, 0x0422, 0x4F3E, + 0x1829, 0x4F3F, 0x1831, 0x4F41, 0x182D, 0x4F43, 0x0425, 0x4F46, 0x0428, + 0x4F47, 0x0419, 0x4F48, 0x0431, 0x4F49, 0x1826, 0x4F4C, 0x1900, 0x4F4D, + 0x0417, 0x4F4E, 0x042D, 0x4F4F, 0x0418, 0x4F50, 0x0420, 0x4F51, 0x0421, + 0x4F52, 0x182B, 0x4F53, 0x1827, 0x4F54, 0x0426, 0x4F55, 0x041E, 0x4F56, + 0x1823, 0x4F57, 0x041A, 0x4F58, 0x182E, 0x4F59, 0x042F, 0x4F5A, 0x0432, + 0x4F5B, 0x041D, 0x4F5C, 0x042A, 0x4F5D, 0x0430, 0x4F5E, 0x041B, 0x4F5F, + 0x182C, 0x4F60, 0x042B, 0x4F61, 0x1832, 0x4F62, 0x1825, 0x4F63, 0x0429, + 0x4F64, 0x1828, 0x4F67, 0x182A, 0x4F69, 0x053D, 0x4F6A, 0x1902, 0x4F6B, + 0x190E, 0x4F6C, 0x0535, 0x4F6E, 0x190F, 0x4F6F, 0x0530, 0x4F70, 0x053A, + 0x4F73, 0x0533, 0x4F74, 0x18FC, 0x4F75, 0x053B, 0x4F76, 0x18FB, 0x4F77, + 0x18FF, 0x4F78, 0x1906, 0x4F79, 0x1904, 0x4F7A, 0x0543, 0x4F7B, 0x053E, + 0x4F7C, 0x18F6, 0x4F7D, 0x18F8, 0x4F7E, 0x0540, 0x4F7F, 0x0534, 0x4F80, + 0x18F9, 0x4F81, 0x1905, 0x4F82, 0x190C, 0x4F83, 0x0539, 0x4F84, 0x18FE, + 0x4F85, 0x18F7, 0x4F86, 0x0538, 0x4F87, 0x18FA, 0x4F88, 0x053C, 0x4F89, + 0x18FD, 0x4F8B, 0x0537, 0x4F8D, 0x0532, 0x4F8F, 0x0541, 0x4F90, 0x1907, + 0x4F91, 0x0542, 0x4F92, 0x190B, 0x4F94, 0x1909, 0x4F95, 0x190D, 0x4F96, + 0x053F, 0x4F97, 0x1901, 0x4F98, 0x18F5, 0x4F9A, 0x1903, 0x4F9B, 0x0536, + 0x4F9C, 0x1908, 0x4F9D, 0x0531, 0x4F9E, 0x190A, 0x4FAE, 0x06B4, 0x4FAF, + 0x06A8, 0x4FB2, 0x1A5D, 0x4FB3, 0x1A65, 0x4FB5, 0x06A7, 0x4FB6, 0x06AF, + 0x4FB7, 0x06BB, 0x4FB9, 0x1A6B, 0x4FBA, 0x1A69, 0x4FBB, 0x1A64, 0x4FBF, + 0x06A9, 0x4FC0, 0x1A6A, 0x4FC1, 0x1A60, 0x4FC2, 0x06B7, 0x4FC3, 0x06AE, + 0x4FC4, 0x06B6, 0x4FC5, 0x1A5B, 0x4FC7, 0x1A67, 0x4FC9, 0x1A5E, 0x4FCA, + 0x06B2, 0x4FCB, 0x1A5F, 0x4FCD, 0x1A5A, 0x4FCE, 0x06B9, 0x4FCF, 0x06AC, + 0x4FD0, 0x06B5, 0x4FD1, 0x06AB, 0x4FD3, 0x1A5C, 0x4FD4, 0x1A61, 0x4FD6, + 0x1A68, 0x4FD7, 0x06B3, 0x4FD8, 0x06B0, 0x4FD9, 0x1A63, 0x4FDA, 0x06B8, + 0x4FDB, 0x1A66, 0x4FDC, 0x1A62, 0x4FDD, 0x06AD, 0x4FDE, 0x06BA, 0x4FDF, + 0x06B1, 0x4FE0, 0x06AA, 0x4FE1, 0x06A6, 0x4FEC, 0x1A6C, 0x4FEE, 0x084C, + 0x4FEF, 0x0836, 0x4FF1, 0x0846, 0x4FF3, 0x084B, 0x4FF4, 0x1C24, 0x4FF5, + 0x1C23, 0x4FF6, 0x1C28, 0x4FF7, 0x1C29, 0x4FF8, 0x0839, 0x4FFA, 0x0842, + 0x4FFE, 0x084F, 0x5000, 0x0843, 0x5005, 0x1C1D, 0x5006, 0x083C, 0x5007, + 0x1C1E, 0x5009, 0x0851, 0x500B, 0x0848, 0x500C, 0x0833, 0x500D, 0x0834, + 0x500E, 0x1C31, 0x500F, 0x0A0C, 0x5011, 0x0841, 0x5012, 0x0840, 0x5013, + 0x1C1F, 0x5014, 0x0844, 0x5015, 0x1E45, 0x5016, 0x083B, 0x5017, 0x1C2A, + 0x5018, 0x084A, 0x5019, 0x0849, 0x501A, 0x083F, 0x501B, 0x1C22, 0x501C, + 0x1C2B, 0x501E, 0x1C1C, 0x501F, 0x083E, 0x5020, 0x1C2C, 0x5021, 0x0847, + 0x5022, 0x1C20, 0x5023, 0x0835, 0x5025, 0x0838, 0x5026, 0x0837, 0x5027, + 0x1C2D, 0x5028, 0x0845, 0x5029, 0x083A, 0x502A, 0x084E, 0x502B, 0x0850, + 0x502C, 0x1C27, 0x502D, 0x084D, 0x502F, 0x1C2F, 0x5030, 0x1C21, 0x5031, + 0x1C30, 0x5033, 0x1C25, 0x5035, 0x1C2E, 0x5037, 0x1C26, 0x503C, 0x083D, + 0x5040, 0x1E4D, 0x5041, 0x1E41, 0x5043, 0x0A00, 0x5045, 0x1E46, 0x5046, + 0x1E4C, 0x5047, 0x09FF, 0x5048, 0x1E3F, 0x5049, 0x0A03, 0x504A, 0x1E43, + 0x504B, 0x1E3C, 0x504C, 0x0A01, 0x504D, 0x1E40, 0x504E, 0x0A06, 0x504F, + 0x0A0B, 0x5051, 0x1E51, 0x5053, 0x1E3B, 0x5055, 0x0A07, 0x5057, 0x1E50, + 0x505A, 0x0A02, 0x505B, 0x1E42, 0x505C, 0x09FE, 0x505D, 0x1E3D, 0x505E, + 0x1E39, 0x505F, 0x1E47, 0x5060, 0x1E3A, 0x5061, 0x1E38, 0x5062, 0x1E44, + 0x5063, 0x1E4A, 0x5064, 0x1E4B, 0x5065, 0x0A04, 0x5068, 0x20B8, 0x5069, + 0x1E48, 0x506A, 0x1E37, 0x506B, 0x1E49, 0x506D, 0x0A0E, 0x506E, 0x1E4E, + 0x506F, 0x0A0D, 0x5070, 0x1E36, 0x5072, 0x1E3E, 0x5073, 0x1E4F, 0x5074, + 0x0A09, 0x5075, 0x0A08, 0x5076, 0x0A05, 0x5077, 0x0A0A, 0x507A, 0x09FC, + 0x507D, 0x09FD, 0x5080, 0x0BEC, 0x5082, 0x20BB, 0x5083, 0x20B4, 0x5085, + 0x0BE9, 0x5087, 0x20BC, 0x508B, 0x20B2, 0x508C, 0x20B5, 0x508D, 0x0BE8, + 0x508E, 0x20B6, 0x5091, 0x0BEB, 0x5092, 0x20BA, 0x5094, 0x20B0, 0x5095, + 0x20AF, 0x5096, 0x0BED, 0x5098, 0x0BEE, 0x5099, 0x0BEA, 0x509A, 0x0BEF, + 0x509B, 0x20AE, 0x509C, 0x20B9, 0x509D, 0x20B7, 0x509E, 0x20B1, 0x50A2, + 0x0BE7, 0x50A3, 0x20B3, 0x50AC, 0x0DC5, 0x50AD, 0x0DBF, 0x50AE, 0x2367, + 0x50AF, 0x0DC8, 0x50B0, 0x236D, 0x50B1, 0x2370, 0x50B2, 0x0DC1, 0x50B3, + 0x0DC2, 0x50B4, 0x236A, 0x50B5, 0x0DC0, 0x50B6, 0x2373, 0x50B7, 0x0DC6, + 0x50B8, 0x2374, 0x50BA, 0x236F, 0x50BB, 0x0DC7, 0x50BD, 0x2364, 0x50BE, + 0x0DC4, 0x50BF, 0x2365, 0x50C1, 0x236E, 0x50C2, 0x236C, 0x50C4, 0x2368, + 0x50C5, 0x0DC3, 0x50C6, 0x2366, 0x50C7, 0x0DC9, 0x50C8, 0x236B, 0x50C9, + 0x2372, 0x50CA, 0x2369, 0x50CB, 0x2371, 0x50CE, 0x0F88, 0x50CF, 0x0F85, + 0x50D1, 0x0F86, 0x50D3, 0x261C, 0x50D4, 0x2614, 0x50D5, 0x0F84, 0x50D6, + 0x0F81, 0x50D7, 0x2615, 0x50DA, 0x0F83, 0x50DB, 0x2618, 0x50DD, 0x261A, + 0x50E0, 0x2621, 0x50E3, 0x2620, 0x50E4, 0x261B, 0x50E5, 0x0F80, 0x50E6, + 0x2613, 0x50E7, 0x0F7E, 0x50E8, 0x2616, 0x50E9, 0x0F89, 0x50EA, 0x2619, + 0x50EC, 0x261D, 0x50ED, 0x0F82, 0x50EE, 0x0F7F, 0x50EF, 0x261F, 0x50F0, + 0x261E, 0x50F1, 0x0F87, 0x50F3, 0x2617, 0x50F5, 0x1105, 0x50F6, 0x2883, + 0x50F8, 0x2880, 0x50F9, 0x1106, 0x50FB, 0x1104, 0x50FD, 0x2887, 0x50FE, + 0x2884, 0x50FF, 0x287D, 0x5100, 0x1103, 0x5102, 0x1107, 0x5103, 0x287E, + 0x5104, 0x1102, 0x5105, 0x110A, 0x5106, 0x2881, 0x5107, 0x2882, 0x5108, + 0x1108, 0x5109, 0x1109, 0x510A, 0x2888, 0x510B, 0x2885, 0x510C, 0x2886, + 0x5110, 0x128D, 0x5111, 0x2B04, 0x5112, 0x128A, 0x5113, 0x2B01, 0x5114, + 0x128C, 0x5115, 0x128E, 0x5117, 0x2B02, 0x5118, 0x128B, 0x511A, 0x2B03, + 0x511C, 0x2B00, 0x511F, 0x13B5, 0x5120, 0x2D3E, 0x5121, 0x13B6, 0x5122, + 0x2D3C, 0x5124, 0x2D3D, 0x5125, 0x2D3B, 0x5126, 0x2D3A, 0x5129, 0x2D3F, + 0x512A, 0x13B4, 0x512D, 0x2F0F, 0x512E, 0x2F10, 0x5130, 0x287F, 0x5131, + 0x2F0E, 0x5132, 0x13B7, 0x5133, 0x1575, 0x5134, 0x307A, 0x5135, 0x307B, + 0x5137, 0x1668, 0x5138, 0x1669, 0x5139, 0x32C6, 0x513A, 0x32C5, 0x513B, + 0x16BC, 0x513C, 0x16BB, 0x513D, 0x340E, 0x513F, 0x025C, 0x5140, 0x0274, + 0x5141, 0x02AA, 0x5143, 0x02A9, 0x5144, 0x0303, 0x5145, 0x0302, 0x5146, + 0x038A, 0x5147, 0x0389, 0x5148, 0x038B, 0x5149, 0x0388, 0x514B, 0x0434, + 0x514C, 0x0433, 0x514D, 0x0435, 0x5152, 0x0545, 0x5154, 0x0544, 0x5155, + 0x0546, 0x5157, 0x06BC, 0x5159, 0x0119, 0x515A, 0x1C32, 0x515B, 0x011A, + 0x515C, 0x0A0F, 0x515D, 0x011C, 0x515E, 0x011B, 0x515F, 0x20BD, 0x5161, + 0x011D, 0x5162, 0x0F8A, 0x5163, 0x011E, 0x5165, 0x025D, 0x5167, 0x02AB, + 0x5168, 0x038C, 0x5169, 0x0547, 0x516B, 0x025E, 0x516C, 0x02AE, 0x516D, + 0x02AC, 0x516E, 0x02AD, 0x5171, 0x038D, 0x5175, 0x0436, 0x5176, 0x0549, + 0x5177, 0x0548, 0x5178, 0x054A, 0x517C, 0x0852, 0x5180, 0x128F, 0x5182, + 0x021D, 0x5187, 0x1779, 0x5188, 0x36B6, 0x5189, 0x0304, 0x518A, 0x0305, + 0x518D, 0x038E, 0x518F, 0x1833, 0x5191, 0x06BE, 0x5192, 0x06BD, 0x5193, + 0x1C34, 0x5194, 0x1C33, 0x5195, 0x0A10, 0x5196, 0x021E, 0x5197, 0x02AF, + 0x5198, 0x1780, 0x519E, 0x1910, 0x51A0, 0x06BF, 0x51A2, 0x0855, 0x51A4, + 0x0853, 0x51A5, 0x0854, 0x51AA, 0x1290, 0x51AB, 0x021F, 0x51AC, 0x0306, + 0x51B0, 0x038F, 0x51B1, 0x17C6, 0x51B6, 0x0437, 0x51B7, 0x0438, 0x51B9, + 0x1834, 0x51BC, 0x1911, 0x51BD, 0x054B, 0x51BE, 0x1912, 0x51C4, 0x1C36, + 0x51C5, 0x1C37, 0x51C6, 0x0858, 0x51C8, 0x1C38, 0x51CA, 0x1C35, 0x51CB, + 0x0859, 0x51CC, 0x0857, 0x51CD, 0x0856, 0x51CE, 0x1C39, 0x51D0, 0x1E52, + 0x51D4, 0x20BE, 0x51D7, 0x2375, 0x51D8, 0x2622, 0x51DC, 0x110B, 0x51DD, + 0x1291, 0x51DE, 0x2B05, 0x51E0, 0x025F, 0x51E1, 0x026D, 0x51F0, 0x0A11, + 0x51F1, 0x0BF1, 0x51F3, 0x0F8B, 0x51F5, 0x176E, 0x51F6, 0x02B0, 0x51F8, + 0x0309, 0x51F9, 0x0307, 0x51FA, 0x0308, 0x51FD, 0x054C, 0x5200, 0x0260, + 0x5201, 0x0261, 0x5202, 0x36B3, 0x5203, 0x0275, 0x5206, 0x02B1, 0x5207, + 0x02B2, 0x5208, 0x02B3, 0x5209, 0x1797, 0x520A, 0x030A, 0x520C, 0x1796, + 0x520E, 0x0393, 0x5210, 0x17C8, 0x5211, 0x0391, 0x5212, 0x0392, 0x5213, + 0x17C7, 0x5216, 0x0394, 0x5217, 0x0390, 0x521C, 0x1835, 0x521D, 0x068B, + 0x521E, 0x1836, 0x5221, 0x1837, 0x5224, 0x043A, 0x5225, 0x0439, 0x5228, + 0x043D, 0x5229, 0x043B, 0x522A, 0x043C, 0x522E, 0x0552, 0x5230, 0x0551, + 0x5231, 0x1917, 0x5232, 0x1914, 0x5233, 0x1915, 0x5235, 0x1913, 0x5236, + 0x0553, 0x5237, 0x054F, 0x5238, 0x054E, 0x523A, 0x0550, 0x523B, 0x054D, + 0x5241, 0x0554, 0x5243, 0x06C1, 0x5244, 0x1A6D, 0x5246, 0x1916, 0x5247, + 0x06C6, 0x5249, 0x1A6E, 0x524A, 0x06C2, 0x524B, 0x06C5, 0x524C, 0x06C4, + 0x524D, 0x06C3, 0x524E, 0x06C0, 0x5252, 0x1C3C, 0x5254, 0x085C, 0x5255, + 0x1C3F, 0x5256, 0x085A, 0x525A, 0x1C3B, 0x525B, 0x085D, 0x525C, 0x085B, + 0x525D, 0x085E, 0x525E, 0x1C3D, 0x525F, 0x1C3E, 0x5261, 0x1C3A, 0x5262, + 0x1C40, 0x5269, 0x0BF5, 0x526A, 0x0A12, 0x526B, 0x1E53, 0x526C, 0x1E55, + 0x526D, 0x1E54, 0x526E, 0x1E56, 0x526F, 0x0A13, 0x5272, 0x0BF2, 0x5274, + 0x0BF3, 0x5275, 0x0BF4, 0x5277, 0x0DCB, 0x5278, 0x2377, 0x527A, 0x2376, + 0x527B, 0x2378, 0x527C, 0x2379, 0x527D, 0x0DCC, 0x527F, 0x0DCA, 0x5280, + 0x2623, 0x5281, 0x2624, 0x5282, 0x0F8D, 0x5283, 0x0F8C, 0x5284, 0x2776, + 0x5287, 0x110C, 0x5288, 0x110D, 0x5289, 0x110E, 0x528A, 0x1110, 0x528B, + 0x2889, 0x528C, 0x288A, 0x528D, 0x110F, 0x5291, 0x1292, 0x5293, 0x1293, + 0x5296, 0x307C, 0x5297, 0x32C8, 0x5298, 0x32C7, 0x5299, 0x340F, 0x529B, + 0x0262, 0x529F, 0x030C, 0x52A0, 0x030B, 0x52A3, 0x0395, 0x52A6, 0x17C9, + 0x52A9, 0x043F, 0x52AA, 0x0440, 0x52AB, 0x043E, 0x52AC, 0x0441, 0x52AD, + 0x1838, 0x52AE, 0x1839, 0x52BB, 0x0556, 0x52BC, 0x1918, 0x52BE, 0x0555, + 0x52C0, 0x1A6F, 0x52C1, 0x06CA, 0x52C2, 0x1A70, 0x52C3, 0x06C9, 0x52C7, + 0x06C7, 0x52C9, 0x06C8, 0x52CD, 0x1C41, 0x52D2, 0x0A14, 0x52D3, 0x1E58, + 0x52D5, 0x0A17, 0x52D6, 0x1E57, 0x52D7, 0x0ACF, 0x52D8, 0x0A16, 0x52D9, + 0x0A15, 0x52DB, 0x0BF8, 0x52DD, 0x0BF7, 0x52DE, 0x0BF6, 0x52DF, 0x0DCD, + 0x52E2, 0x0DD0, 0x52E3, 0x0DD1, 0x52E4, 0x0DCF, 0x52E6, 0x0DCE, 0x52E9, + 0x2625, 0x52EB, 0x2626, 0x52EF, 0x288C, 0x52F0, 0x1111, 0x52F1, 0x288B, + 0x52F3, 0x1294, 0x52F4, 0x2D40, 0x52F5, 0x13B8, 0x52F7, 0x307D, 0x52F8, + 0x1609, 0x52F9, 0x0220, 0x52FA, 0x0276, 0x52FB, 0x02B4, 0x52FC, 0x1781, + 0x52FE, 0x02B5, 0x52FF, 0x02B6, 0x5305, 0x030D, 0x5306, 0x030E, 0x5308, + 0x0396, 0x5309, 0x183A, 0x530A, 0x1919, 0x530B, 0x191A, 0x530D, 0x06CB, + 0x530E, 0x1C42, 0x530F, 0x0A19, 0x5310, 0x0A18, 0x5311, 0x20C0, 0x5312, + 0x20BF, 0x5315, 0x0263, 0x5316, 0x02B7, 0x5317, 0x030F, 0x5319, 0x0A1A, + 0x531A, 0x176F, 0x531C, 0x1798, 0x531D, 0x0310, 0x531F, 0x17CB, 0x5320, + 0x0398, 0x5321, 0x0397, 0x5322, 0x17CA, 0x5323, 0x0442, 0x532A, 0x085F, + 0x532D, 0x1E59, 0x532F, 0x0DD2, 0x5330, 0x2627, 0x5331, 0x0F8E, 0x5334, + 0x2B06, 0x5337, 0x31C7, 0x5338, 0x0221, 0x5339, 0x02B8, 0x533C, 0x191B, + 0x533D, 0x1A71, 0x533E, 0x0A1D, 0x533F, 0x0A1B, 0x5340, 0x0A1C, 0x5341, + 0x0264, 0x5343, 0x0277, 0x5344, 0x016B, 0x5345, 0x02BB, 0x5347, 0x02BA, + 0x5348, 0x02B9, 0x5349, 0x0313, 0x534A, 0x0312, 0x534C, 0x1799, 0x534D, + 0x17CC, 0x5351, 0x055A, 0x5352, 0x0557, 0x5353, 0x0559, 0x5354, 0x0558, + 0x5357, 0x06CC, 0x535A, 0x0BF9, 0x535C, 0x0265, 0x535E, 0x02BC, 0x5360, + 0x0315, 0x5361, 0x0314, 0x5363, 0x183B, 0x5366, 0x055B, 0x5369, 0x0222, + 0x536C, 0x1782, 0x536E, 0x0317, 0x536F, 0x0316, 0x5370, 0x0399, 0x5371, + 0x039A, 0x5372, 0x183C, 0x5373, 0x0443, 0x5375, 0x0444, 0x5377, 0x055C, + 0x5378, 0x055D, 0x5379, 0x055E, 0x537B, 0x06CD, 0x537C, 0x1A72, 0x537F, + 0x0860, 0x5382, 0x1770, 0x5384, 0x02BD, 0x538A, 0x17CD, 0x538E, 0x183D, + 0x538F, 0x183E, 0x5392, 0x191C, 0x5394, 0x191D, 0x5396, 0x1A74, 0x5397, + 0x1A73, 0x5398, 0x1A76, 0x5399, 0x1A75, 0x539A, 0x06CE, 0x539C, 0x1E5A, + 0x539D, 0x0862, 0x539E, 0x1C43, 0x539F, 0x0861, 0x53A4, 0x20C1, 0x53A5, + 0x0BFA, 0x53A7, 0x20C2, 0x53AC, 0x2628, 0x53AD, 0x0F8F, 0x53B2, 0x1112, + 0x53B4, 0x307E, 0x53B6, 0x0223, 0x53B9, 0x1783, 0x53BB, 0x0318, 0x53C3, + 0x0A1E, 0x53C8, 0x0266, 0x53C9, 0x0278, 0x53CA, 0x02BF, 0x53CB, 0x02BE, + 0x53CD, 0x02C0, 0x53D4, 0x0560, 0x53D6, 0x055F, 0x53D7, 0x0561, 0x53DB, + 0x06CF, 0x53DF, 0x0863, 0x53E1, 0x2B07, 0x53E2, 0x14C9, 0x53E3, 0x0279, + 0x53E4, 0x031A, 0x53E5, 0x0329, 0x53E6, 0x0324, 0x53E8, 0x031F, 0x53E9, + 0x031E, 0x53EA, 0x0325, 0x53EB, 0x0323, 0x53EC, 0x031C, 0x53ED, 0x032A, + 0x53EE, 0x031D, 0x53EF, 0x0319, 0x53F0, 0x0328, 0x53F1, 0x0327, 0x53F2, + 0x0326, 0x53F3, 0x031B, 0x53F5, 0x0322, 0x53F8, 0x0321, 0x53FB, 0x032B, + 0x53FC, 0x0320, 0x5401, 0x03A0, 0x5403, 0x03A6, 0x5404, 0x03A2, 0x5406, + 0x03A8, 0x5407, 0x17CE, 0x5408, 0x03A5, 0x5409, 0x039B, 0x540A, 0x039E, + 0x540B, 0x03A1, 0x540C, 0x039D, 0x540D, 0x03A4, 0x540E, 0x03A7, 0x540F, + 0x039C, 0x5410, 0x039F, 0x5411, 0x03A3, 0x5412, 0x03A9, 0x5418, 0x1847, + 0x5419, 0x1844, 0x541B, 0x0451, 0x541C, 0x1845, 0x541D, 0x0445, 0x541E, + 0x0447, 0x541F, 0x045F, 0x5420, 0x045A, 0x5424, 0x184C, 0x5425, 0x1846, + 0x5426, 0x0449, 0x5427, 0x044B, 0x5428, 0x184B, 0x5429, 0x0452, 0x542A, + 0x1841, 0x542B, 0x045E, 0x542C, 0x0460, 0x542D, 0x0446, 0x542E, 0x0457, + 0x5430, 0x183F, 0x5431, 0x045D, 0x5433, 0x044E, 0x5435, 0x0458, 0x5436, + 0x0459, 0x5437, 0x1840, 0x5438, 0x0456, 0x5439, 0x0454, 0x543B, 0x0455, + 0x543C, 0x045B, 0x543D, 0x1848, 0x543E, 0x0448, 0x5440, 0x045C, 0x5441, + 0x184A, 0x5442, 0x0450, 0x5443, 0x044D, 0x5445, 0x1843, 0x5446, 0x044C, + 0x5447, 0x184D, 0x5448, 0x044F, 0x544A, 0x0453, 0x544E, 0x044A, 0x544F, + 0x1849, 0x5454, 0x1842, 0x5460, 0x192E, 0x5461, 0x192D, 0x5462, 0x0573, + 0x5463, 0x1930, 0x5464, 0x1932, 0x5465, 0x1927, 0x5466, 0x192A, 0x5467, + 0x1931, 0x5468, 0x0574, 0x546B, 0x1924, 0x546C, 0x1928, 0x546F, 0x192C, + 0x5470, 0x1A85, 0x5471, 0x056F, 0x5472, 0x1A89, 0x5473, 0x0562, 0x5474, + 0x1929, 0x5475, 0x0563, 0x5476, 0x0570, 0x5477, 0x0569, 0x5478, 0x0565, + 0x547A, 0x1925, 0x547B, 0x0568, 0x547C, 0x056D, 0x547D, 0x0576, 0x547E, + 0x1926, 0x547F, 0x191F, 0x5480, 0x0567, 0x5481, 0x1920, 0x5482, 0x1922, + 0x5484, 0x056A, 0x5486, 0x056C, 0x5487, 0x191E, 0x5488, 0x1923, 0x548B, + 0x0575, 0x548C, 0x0571, 0x548D, 0x192B, 0x548E, 0x0577, 0x5490, 0x056E, + 0x5491, 0x1921, 0x5492, 0x056B, 0x5495, 0x0566, 0x5496, 0x0564, 0x5498, + 0x192F, 0x549A, 0x0572, 0x54A0, 0x1A84, 0x54A1, 0x1A78, 0x54A2, 0x1A87, + 0x54A5, 0x1A7A, 0x54A6, 0x06D6, 0x54A7, 0x06E4, 0x54A8, 0x06D2, 0x54A9, + 0x06E3, 0x54AA, 0x06DB, 0x54AB, 0x06E0, 0x54AC, 0x06D0, 0x54AD, 0x1A79, + 0x54AE, 0x1A7F, 0x54AF, 0x06DF, 0x54B0, 0x1A8B, 0x54B1, 0x06E1, 0x54B3, + 0x06D7, 0x54B6, 0x1A81, 0x54B7, 0x1A7E, 0x54B8, 0x06D5, 0x54BA, 0x1A77, + 0x54BB, 0x06E2, 0x54BC, 0x1A86, 0x54BD, 0x06DA, 0x54BE, 0x1A88, 0x54BF, + 0x06E5, 0x54C0, 0x06D1, 0x54C1, 0x06DC, 0x54C2, 0x06D9, 0x54C3, 0x1A7C, + 0x54C4, 0x06DD, 0x54C5, 0x1A82, 0x54C6, 0x1A83, 0x54C7, 0x06D8, 0x54C8, + 0x06DE, 0x54C9, 0x06D4, 0x54CE, 0x06D3, 0x54CF, 0x1A7B, 0x54D6, 0x1A80, + 0x54DE, 0x1A8A, 0x54E0, 0x1C57, 0x54E1, 0x0870, 0x54E2, 0x1C45, 0x54E4, + 0x1C4A, 0x54E5, 0x0869, 0x54E6, 0x0874, 0x54E7, 0x1C48, 0x54E8, 0x0864, + 0x54E9, 0x086E, 0x54EA, 0x0873, 0x54EB, 0x1C4F, 0x54ED, 0x086F, 0x54EE, + 0x0872, 0x54F1, 0x1C52, 0x54F2, 0x086A, 0x54F3, 0x1C49, 0x54F7, 0x1C55, + 0x54F8, 0x1C56, 0x54FA, 0x086C, 0x54FB, 0x1C54, 0x54FC, 0x0868, 0x54FD, + 0x0877, 0x54FF, 0x1C4C, 0x5501, 0x0866, 0x5503, 0x1C59, 0x5504, 0x1C4D, + 0x5505, 0x1C51, 0x5506, 0x086B, 0x5507, 0x0876, 0x5508, 0x1C4E, 0x5509, + 0x0871, 0x550A, 0x1C53, 0x550B, 0x1C5A, 0x550C, 0x1E69, 0x550E, 0x1C58, + 0x550F, 0x0878, 0x5510, 0x0865, 0x5511, 0x1C50, 0x5512, 0x1C47, 0x5514, + 0x086D, 0x5517, 0x1C46, 0x551A, 0x1C4B, 0x5526, 0x1C44, 0x5527, 0x0875, + 0x552A, 0x1E61, 0x552C, 0x0A31, 0x552D, 0x1E6F, 0x552E, 0x0A2F, 0x552F, + 0x0A2C, 0x5530, 0x1E66, 0x5531, 0x0A28, 0x5532, 0x1E6A, 0x5533, 0x0A33, + 0x5534, 0x1E60, 0x5535, 0x1E65, 0x5536, 0x1E64, 0x5537, 0x0867, 0x5538, + 0x0A2E, 0x5539, 0x1E6D, 0x553B, 0x1E70, 0x553C, 0x1E5D, 0x553E, 0x0C0C, + 0x5540, 0x1E71, 0x5541, 0x0A34, 0x5543, 0x0A26, 0x5544, 0x0A23, 0x5545, + 0x1E68, 0x5546, 0x0A20, 0x5548, 0x1E6E, 0x554A, 0x0A27, 0x554B, 0x1E72, + 0x554D, 0x1E5E, 0x554E, 0x1E6C, 0x554F, 0x0A2A, 0x5550, 0x1E5F, 0x5551, + 0x1E62, 0x5552, 0x1E67, 0x5555, 0x0A2B, 0x5556, 0x0A29, 0x5557, 0x0A35, + 0x555C, 0x0A30, 0x555E, 0x0A24, 0x555F, 0x0ABC, 0x5561, 0x0A25, 0x5562, + 0x1E63, 0x5563, 0x0A32, 0x5564, 0x0A2D, 0x5565, 0x1E6B, 0x5566, 0x0A22, + 0x556A, 0x0A21, 0x5575, 0x1E5B, 0x5576, 0x1E5C, 0x5577, 0x20C7, 0x557B, + 0x0BFB, 0x557C, 0x0BFE, 0x557D, 0x20D2, 0x557E, 0x0C12, 0x557F, 0x20D5, + 0x5580, 0x0BFC, 0x5581, 0x20CE, 0x5582, 0x0C02, 0x5583, 0x0C08, 0x5584, + 0x0D1B, 0x5587, 0x0C06, 0x5588, 0x20CB, 0x5589, 0x0C13, 0x558A, 0x0BFF, + 0x558B, 0x0C07, 0x558C, 0x20D3, 0x558D, 0x2387, 0x558E, 0x20D8, 0x558F, + 0x20CC, 0x5591, 0x20C3, 0x5592, 0x20D0, 0x5593, 0x20CA, 0x5594, 0x0C05, + 0x5595, 0x20D6, 0x5598, 0x0C01, 0x5599, 0x0C15, 0x559A, 0x0C0E, 0x559C, + 0x0C03, 0x559D, 0x0C00, 0x559F, 0x0C0B, 0x55A1, 0x20D7, 0x55A2, 0x20C9, + 0x55A3, 0x20CF, 0x55A4, 0x20D1, 0x55A5, 0x20C5, 0x55A6, 0x20D4, 0x55A7, + 0x0BFD, 0x55A8, 0x20C4, 0x55AA, 0x0C04, 0x55AB, 0x0C14, 0x55AC, 0x0C10, + 0x55AD, 0x20C6, 0x55AE, 0x0C0A, 0x55B1, 0x0C11, 0x55B2, 0x0C0D, 0x55B3, + 0x0C09, 0x55B5, 0x20CD, 0x55BB, 0x0C0F, 0x55BF, 0x2385, 0x55C0, 0x2381, + 0x55C2, 0x2390, 0x55C3, 0x237A, 0x55C4, 0x2383, 0x55C5, 0x0DE0, 0x55C6, + 0x0DE1, 0x55C7, 0x0DD9, 0x55C8, 0x238C, 0x55C9, 0x0DE3, 0x55CA, 0x237F, + 0x55CB, 0x237E, 0x55CC, 0x237C, 0x55CD, 0x238E, 0x55CE, 0x0DD7, 0x55CF, + 0x2388, 0x55D0, 0x237D, 0x55D1, 0x0DDA, 0x55D2, 0x2386, 0x55D3, 0x0DD5, + 0x55D4, 0x2382, 0x55D5, 0x2389, 0x55D6, 0x238B, 0x55D9, 0x238F, 0x55DA, + 0x0DDE, 0x55DB, 0x237B, 0x55DC, 0x0DD8, 0x55DD, 0x2380, 0x55DF, 0x0DD3, + 0x55E1, 0x0DDF, 0x55E2, 0x238A, 0x55E3, 0x0DDB, 0x55E4, 0x0DDC, 0x55E5, + 0x0DE2, 0x55E6, 0x0DD6, 0x55E7, 0x011F, 0x55E8, 0x0DD4, 0x55E9, 0x2384, + 0x55EF, 0x0DDD, 0x55F2, 0x238D, 0x55F6, 0x0F9F, 0x55F7, 0x0F9A, 0x55F9, + 0x2637, 0x55FA, 0x2633, 0x55FC, 0x262D, 0x55FD, 0x0F94, 0x55FE, 0x0F90, + 0x55FF, 0x2636, 0x5600, 0x0F91, 0x5601, 0x2630, 0x5602, 0x2632, 0x5604, + 0x2635, 0x5606, 0x0F96, 0x5608, 0x0F9D, 0x5609, 0x0F97, 0x560C, 0x262B, + 0x560D, 0x0F98, 0x560E, 0x0F99, 0x560F, 0x262E, 0x5610, 0x0F9E, 0x5612, + 0x262C, 0x5613, 0x2631, 0x5614, 0x0F95, 0x5615, 0x262A, 0x5616, 0x0F9B, + 0x5617, 0x0F93, 0x561B, 0x0F92, 0x561C, 0x262F, 0x561D, 0x2634, 0x561F, + 0x0F9C, 0x5627, 0x2629, 0x5629, 0x1119, 0x562A, 0x289D, 0x562C, 0x289A, + 0x562E, 0x1113, 0x562F, 0x111F, 0x5630, 0x1120, 0x5632, 0x1116, 0x5633, + 0x2898, 0x5634, 0x1118, 0x5635, 0x2890, 0x5636, 0x111E, 0x5638, 0x289C, + 0x5639, 0x1115, 0x563A, 0x289E, 0x563B, 0x1114, 0x563D, 0x2899, 0x563E, + 0x289B, 0x563F, 0x1117, 0x5640, 0x2897, 0x5641, 0x2891, 0x5642, 0x288E, + 0x5645, 0x20C8, 0x5646, 0x2894, 0x5648, 0x288D, 0x5649, 0x2893, 0x564A, + 0x2892, 0x564C, 0x288F, 0x564E, 0x111B, 0x5653, 0x111A, 0x5657, 0x111C, + 0x5658, 0x2895, 0x5659, 0x1295, 0x565A, 0x2896, 0x565E, 0x2B10, 0x5660, + 0x2B09, 0x5662, 0x12A1, 0x5663, 0x2B0D, 0x5664, 0x1299, 0x5665, 0x129D, + 0x5666, 0x2B0C, 0x5668, 0x129C, 0x5669, 0x1298, 0x566A, 0x129B, 0x566B, + 0x1296, 0x566C, 0x12A0, 0x566D, 0x2B0E, 0x566E, 0x2B0A, 0x566F, 0x129F, + 0x5670, 0x2B08, 0x5671, 0x129E, 0x5672, 0x2B0F, 0x5673, 0x2B0B, 0x5674, + 0x111D, 0x5676, 0x12A2, 0x5677, 0x2B11, 0x5678, 0x129A, 0x5679, 0x1297, + 0x567E, 0x2D47, 0x567F, 0x2D49, 0x5680, 0x13BA, 0x5681, 0x2D4A, 0x5682, + 0x2D48, 0x5683, 0x2D46, 0x5684, 0x2D45, 0x5685, 0x13BC, 0x5686, 0x2D44, + 0x5687, 0x13BD, 0x568C, 0x2D42, 0x568D, 0x2D43, 0x568E, 0x13B9, 0x568F, + 0x13BE, 0x5690, 0x13BB, 0x5693, 0x2D41, 0x5695, 0x14CA, 0x5697, 0x2F13, + 0x5698, 0x2F11, 0x5699, 0x2F16, 0x569A, 0x2F14, 0x569C, 0x2F12, 0x569D, + 0x2F15, 0x56A5, 0x1576, 0x56A6, 0x3081, 0x56A7, 0x3082, 0x56A8, 0x1577, + 0x56AA, 0x3083, 0x56AB, 0x307F, 0x56AC, 0x3084, 0x56AD, 0x3080, 0x56AE, + 0x14CB, 0x56B2, 0x31C8, 0x56B3, 0x31CA, 0x56B4, 0x160C, 0x56B5, 0x31C9, + 0x56B6, 0x160B, 0x56B7, 0x160A, 0x56BC, 0x160D, 0x56BD, 0x32CA, 0x56BE, + 0x32CB, 0x56C0, 0x166B, 0x56C1, 0x166A, 0x56C2, 0x166C, 0x56C3, 0x32C9, + 0x56C5, 0x3379, 0x56C6, 0x3378, 0x56C8, 0x16BD, 0x56C9, 0x16BF, 0x56CA, + 0x16BE, 0x56CB, 0x337A, 0x56CC, 0x16F6, 0x56CD, 0x3481, 0x56D1, 0x171F, + 0x56D3, 0x3480, 0x56D4, 0x34C9, 0x56D7, 0x1775, 0x56DA, 0x032D, 0x56DB, + 0x032C, 0x56DD, 0x03AC, 0x56DE, 0x03AB, 0x56DF, 0x17D0, 0x56E0, 0x03AA, + 0x56E1, 0x17CF, 0x56E4, 0x0463, 0x56E5, 0x1850, 0x56E7, 0x184F, 0x56EA, + 0x0461, 0x56EB, 0x0464, 0x56EE, 0x184E, 0x56F0, 0x0462, 0x56F7, 0x1933, + 0x56F9, 0x1934, 0x56FA, 0x0578, 0x56FF, 0x06E6, 0x5701, 0x1C5B, 0x5702, + 0x1C5C, 0x5703, 0x0879, 0x5704, 0x087A, 0x5707, 0x1E74, 0x5708, 0x0A36, + 0x5709, 0x0A38, 0x570A, 0x1E73, 0x570B, 0x0A37, 0x570C, 0x20D9, 0x570D, + 0x0C16, 0x5712, 0x0DE4, 0x5713, 0x0DE5, 0x5714, 0x2391, 0x5716, 0x0FA1, + 0x5718, 0x0FA0, 0x571A, 0x289F, 0x571B, 0x2B13, 0x571C, 0x2B12, 0x571E, + 0x3505, 0x571F, 0x027A, 0x5720, 0x1784, 0x5722, 0x179A, 0x5723, 0x179B, + 0x5728, 0x03AF, 0x5729, 0x03B3, 0x572A, 0x17D2, 0x572C, 0x03B1, 0x572D, + 0x03B0, 0x572E, 0x17D1, 0x572F, 0x03B2, 0x5730, 0x03AE, 0x5733, 0x03AD, + 0x5734, 0x17D3, 0x573B, 0x046E, 0x573E, 0x046B, 0x5740, 0x0467, 0x5741, + 0x1851, 0x5745, 0x1852, 0x5747, 0x0469, 0x5749, 0x1854, 0x574A, 0x0465, + 0x574B, 0x1855, 0x574C, 0x1853, 0x574D, 0x0468, 0x574E, 0x046A, 0x574F, + 0x046D, 0x5750, 0x046C, 0x5751, 0x0466, 0x5752, 0x1856, 0x5761, 0x057D, + 0x5762, 0x1941, 0x5764, 0x057F, 0x5766, 0x057E, 0x5768, 0x1942, 0x5769, + 0x057C, 0x576A, 0x057B, 0x576B, 0x1938, 0x576D, 0x1937, 0x576F, 0x1935, + 0x5770, 0x193A, 0x5771, 0x1939, 0x5772, 0x1936, 0x5773, 0x193F, 0x5774, + 0x1940, 0x5775, 0x193D, 0x5776, 0x193B, 0x5777, 0x057A, 0x577B, 0x193E, + 0x577C, 0x0580, 0x577D, 0x1943, 0x5780, 0x193C, 0x5782, 0x06E7, 0x5783, + 0x0579, 0x578B, 0x06E8, 0x578C, 0x1A90, 0x578F, 0x1A96, 0x5793, 0x06EE, + 0x5794, 0x1A94, 0x5795, 0x1A9A, 0x5797, 0x1A91, 0x5798, 0x1A95, 0x5799, + 0x1A97, 0x579A, 0x1A99, 0x579B, 0x1A93, 0x579D, 0x1A92, 0x579E, 0x1A8D, + 0x579F, 0x1A8E, 0x57A0, 0x06E9, 0x57A2, 0x06EB, 0x57A3, 0x06EA, 0x57A4, + 0x1A8F, 0x57A5, 0x1A98, 0x57AE, 0x06ED, 0x57B5, 0x1A8C, 0x57B6, 0x1C66, + 0x57B8, 0x1C65, 0x57B9, 0x1C6A, 0x57BA, 0x1C61, 0x57BC, 0x1C64, 0x57BD, + 0x1C63, 0x57BF, 0x1C67, 0x57C1, 0x1C6B, 0x57C2, 0x087B, 0x57C3, 0x087E, + 0x57C6, 0x1C62, 0x57C7, 0x1C68, 0x57CB, 0x087D, 0x57CC, 0x1C5D, 0x57CE, + 0x06EC, 0x57CF, 0x1E82, 0x57D0, 0x1C69, 0x57D2, 0x1C60, 0x57D4, 0x087C, + 0x57D5, 0x1C5F, 0x57DC, 0x1E79, 0x57DF, 0x0A39, 0x57E0, 0x0A3D, 0x57E1, + 0x1E89, 0x57E2, 0x1E77, 0x57E3, 0x1E85, 0x57E4, 0x0A3E, 0x57E5, 0x1E87, + 0x57E7, 0x1E8D, 0x57E9, 0x1E91, 0x57EC, 0x1E88, 0x57ED, 0x1E7C, 0x57EE, + 0x1E84, 0x57F0, 0x1E92, 0x57F1, 0x1E90, 0x57F2, 0x1E86, 0x57F3, 0x1E81, + 0x57F4, 0x1E7A, 0x57F5, 0x20E1, 0x57F6, 0x1E78, 0x57F7, 0x0A42, 0x57F8, + 0x1E7F, 0x57F9, 0x0A43, 0x57FA, 0x0A3F, 0x57FB, 0x1E75, 0x57FC, 0x1E8B, + 0x57FD, 0x1E7D, 0x5800, 0x1E7B, 0x5801, 0x1E8E, 0x5802, 0x0A40, 0x5804, + 0x1E94, 0x5805, 0x0A3A, 0x5806, 0x0A3C, 0x5807, 0x1E83, 0x5808, 0x1E7E, + 0x5809, 0x087F, 0x580A, 0x0A3B, 0x580B, 0x1E80, 0x580C, 0x1E8F, 0x580D, + 0x1E93, 0x580E, 0x1E8A, 0x5810, 0x1E8C, 0x5814, 0x1E76, 0x5819, 0x20DC, + 0x581B, 0x20E5, 0x581C, 0x20E4, 0x581D, 0x0C1E, 0x581E, 0x20DD, 0x5820, + 0x0C1F, 0x5821, 0x0C1D, 0x5823, 0x20DF, 0x5824, 0x0C1A, 0x5825, 0x20E3, + 0x5827, 0x20DE, 0x5828, 0x20E0, 0x5829, 0x20DA, 0x582A, 0x0C18, 0x582C, + 0x20ED, 0x582D, 0x20EC, 0x582E, 0x20E9, 0x582F, 0x0C17, 0x5830, 0x0C1B, + 0x5831, 0x0C1C, 0x5832, 0x1C5E, 0x5833, 0x20E6, 0x5834, 0x0C19, 0x5835, + 0x0A41, 0x5836, 0x20E8, 0x5837, 0x20DB, 0x5838, 0x20EB, 0x5839, 0x20EA, + 0x583B, 0x20EE, 0x583D, 0x239F, 0x583F, 0x20E7, 0x5848, 0x20E2, 0x5849, + 0x2397, 0x584A, 0x0DEF, 0x584B, 0x0DF2, 0x584C, 0x0DED, 0x584D, 0x2396, + 0x584E, 0x239A, 0x584F, 0x2395, 0x5851, 0x0DE7, 0x5852, 0x0DF1, 0x5853, + 0x2392, 0x5854, 0x0DEB, 0x5855, 0x2399, 0x5857, 0x0DE9, 0x5858, 0x0DE8, + 0x5859, 0x239C, 0x585A, 0x0DEA, 0x585B, 0x239E, 0x585D, 0x239B, 0x585E, + 0x0DE6, 0x5862, 0x0DF0, 0x5863, 0x23A0, 0x5864, 0x2394, 0x5865, 0x239D, + 0x5868, 0x2393, 0x586B, 0x0DEC, 0x586D, 0x0DEE, 0x586F, 0x2398, 0x5871, + 0x23A1, 0x5874, 0x263F, 0x5875, 0x0FA2, 0x5876, 0x2645, 0x5879, 0x0FA7, + 0x587A, 0x2641, 0x587B, 0x2648, 0x587C, 0x2639, 0x587D, 0x0FA9, 0x587E, + 0x0FA3, 0x587F, 0x263E, 0x5880, 0x1121, 0x5881, 0x263D, 0x5882, 0x2646, + 0x5883, 0x0FA4, 0x5885, 0x0FA8, 0x5886, 0x263C, 0x5887, 0x2642, 0x5888, + 0x2647, 0x5889, 0x2638, 0x588A, 0x0FA6, 0x588B, 0x2640, 0x588E, 0x2644, + 0x588F, 0x264A, 0x5890, 0x263A, 0x5891, 0x2643, 0x5893, 0x0FA5, 0x5894, + 0x2649, 0x5898, 0x263B, 0x589C, 0x1125, 0x589D, 0x28A1, 0x589E, 0x1123, + 0x589F, 0x1122, 0x58A0, 0x28A3, 0x58A1, 0x28A8, 0x58A3, 0x28A4, 0x58A5, + 0x28A7, 0x58A6, 0x1128, 0x58A8, 0x1288, 0x58A9, 0x1127, 0x58AB, 0x28A0, + 0x58AC, 0x28A6, 0x58AE, 0x1126, 0x58AF, 0x28A5, 0x58B1, 0x28A2, 0x58B3, + 0x1124, 0x58BA, 0x2B18, 0x58BB, 0x36EB, 0x58BC, 0x2B1A, 0x58BD, 0x2B15, + 0x58BE, 0x12A4, 0x58BF, 0x2B17, 0x58C1, 0x12A3, 0x58C2, 0x2B19, 0x58C5, + 0x12A6, 0x58C6, 0x2B1B, 0x58C7, 0x12A5, 0x58C8, 0x2B14, 0x58C9, 0x2B16, + 0x58CE, 0x13C2, 0x58CF, 0x2D4D, 0x58D1, 0x13C1, 0x58D2, 0x2D4E, 0x58D3, + 0x13C0, 0x58D4, 0x2D4C, 0x58D5, 0x13BF, 0x58D6, 0x2D4B, 0x58D8, 0x14CD, + 0x58D9, 0x14CC, 0x58DA, 0x3085, 0x58DB, 0x3087, 0x58DD, 0x3086, 0x58DE, + 0x1578, 0x58DF, 0x1579, 0x58E2, 0x157A, 0x58E3, 0x31CB, 0x58E4, 0x160E, + 0x58E7, 0x3411, 0x58E8, 0x3410, 0x58E9, 0x1720, 0x58EB, 0x027B, 0x58EC, + 0x02C1, 0x58EF, 0x046F, 0x58F4, 0x1A9B, 0x58F9, 0x0C20, 0x58FA, 0x0C21, + 0x58FC, 0x23A2, 0x58FD, 0x0FAA, 0x58FE, 0x264B, 0x58FF, 0x28A9, 0x5902, + 0x0224, 0x5903, 0x1785, 0x5906, 0x1857, 0x590A, 0x0224, 0x590C, 0x1944, + 0x590D, 0x1A9C, 0x590E, 0x1C6C, 0x590F, 0x0880, 0x5912, 0x3088, 0x5914, + 0x166D, 0x5915, 0x027C, 0x5916, 0x032E, 0x5917, 0x179C, 0x5919, 0x03B4, + 0x591A, 0x03B5, 0x591C, 0x0581, 0x5920, 0x0A44, 0x5922, 0x0FAC, 0x5924, + 0x0FAD, 0x5925, 0x0FAB, 0x5927, 0x027D, 0x5929, 0x02C2, 0x592A, 0x02C4, + 0x592B, 0x02C3, 0x592C, 0x1786, 0x592D, 0x02C5, 0x592E, 0x032F, 0x592F, + 0x179D, 0x5931, 0x0330, 0x5937, 0x03B6, 0x5938, 0x03B7, 0x593C, 0x17D4, + 0x593E, 0x0470, 0x5940, 0x1858, 0x5944, 0x0585, 0x5945, 0x1945, 0x5947, + 0x0583, 0x5948, 0x0584, 0x5949, 0x0582, 0x594A, 0x1C6D, 0x594E, 0x06F2, + 0x594F, 0x06F1, 0x5950, 0x06F3, 0x5951, 0x06F0, 0x5953, 0x1A9D, 0x5954, + 0x0586, 0x5955, 0x06EF, 0x5957, 0x0881, 0x5958, 0x0882, 0x595A, 0x0883, + 0x595C, 0x1E95, 0x5960, 0x0C22, 0x5961, 0x20EF, 0x5962, 0x0A45, 0x5967, + 0x0DF3, 0x5969, 0x0FAF, 0x596A, 0x0FAE, 0x596B, 0x264C, 0x596D, 0x1129, + 0x596E, 0x12A7, 0x5970, 0x2F17, 0x5971, 0x337B, 0x5972, 0x3412, 0x5973, + 0x027E, 0x5974, 0x0331, 0x5976, 0x0332, 0x5977, 0x17DA, 0x5978, 0x03B9, + 0x5979, 0x03BC, 0x597B, 0x17D8, 0x597C, 0x17D6, 0x597D, 0x03BB, 0x597E, + 0x17D9, 0x597F, 0x17DB, 0x5980, 0x17D5, 0x5981, 0x03BE, 0x5982, 0x03BD, + 0x5983, 0x03BA, 0x5984, 0x03B8, 0x5985, 0x17D7, 0x598A, 0x047B, 0x598D, + 0x0478, 0x598E, 0x185D, 0x598F, 0x1860, 0x5990, 0x185F, 0x5992, 0x0472, + 0x5993, 0x047A, 0x5996, 0x0477, 0x5997, 0x185C, 0x5998, 0x185A, 0x5999, + 0x0476, 0x599D, 0x0471, 0x599E, 0x0474, 0x59A0, 0x185B, 0x59A1, 0x1862, + 0x59A2, 0x185E, 0x59A3, 0x0475, 0x59A4, 0x0479, 0x59A5, 0x047C, 0x59A6, + 0x1859, 0x59A7, 0x1861, 0x59A8, 0x0473, 0x59AE, 0x058B, 0x59AF, 0x0593, + 0x59B1, 0x1951, 0x59B2, 0x194A, 0x59B3, 0x0594, 0x59B4, 0x1955, 0x59B5, + 0x1946, 0x59B6, 0x194D, 0x59B9, 0x058A, 0x59BA, 0x1947, 0x59BB, 0x0588, + 0x59BC, 0x194E, 0x59BD, 0x1952, 0x59BE, 0x0587, 0x59C0, 0x1953, 0x59C1, + 0x194C, 0x59C3, 0x194F, 0x59C5, 0x0596, 0x59C6, 0x058D, 0x59C7, 0x1956, + 0x59C8, 0x1954, 0x59CA, 0x0592, 0x59CB, 0x0590, 0x59CC, 0x194B, 0x59CD, + 0x058F, 0x59CE, 0x1949, 0x59CF, 0x1948, 0x59D0, 0x058E, 0x59D1, 0x058C, + 0x59D2, 0x0595, 0x59D3, 0x0591, 0x59D4, 0x0589, 0x59D6, 0x1950, 0x59D8, + 0x06F5, 0x59DA, 0x06FC, 0x59DB, 0x1AAB, 0x59DC, 0x06F4, 0x59DD, 0x1AA3, + 0x59DE, 0x1A9F, 0x59E0, 0x1AAF, 0x59E1, 0x1A9E, 0x59E3, 0x06F7, 0x59E4, + 0x1AA8, 0x59E5, 0x06FA, 0x59E6, 0x06FD, 0x59E8, 0x06F8, 0x59E9, 0x1AAC, + 0x59EA, 0x06FB, 0x59EC, 0x088A, 0x59ED, 0x1AB2, 0x59EE, 0x1AA0, 0x59F1, + 0x1AA2, 0x59F2, 0x1AA9, 0x59F3, 0x1AAD, 0x59F4, 0x1AB1, 0x59F5, 0x1AAE, + 0x59F6, 0x1AA7, 0x59F7, 0x1AAA, 0x59FA, 0x1AA4, 0x59FB, 0x06FF, 0x59FC, + 0x1AA6, 0x59FD, 0x1AA5, 0x59FE, 0x1AB0, 0x59FF, 0x06F6, 0x5A00, 0x1AA1, + 0x5A01, 0x06FE, 0x5A03, 0x06F9, 0x5A09, 0x0890, 0x5A0A, 0x1C75, 0x5A0C, + 0x088F, 0x5A0F, 0x1C73, 0x5A11, 0x0884, 0x5A13, 0x0889, 0x5A15, 0x1C72, + 0x5A16, 0x1C6F, 0x5A17, 0x1C74, 0x5A18, 0x0885, 0x5A19, 0x1C6E, 0x5A1B, + 0x0888, 0x5A1C, 0x0886, 0x5A1E, 0x1C76, 0x5A1F, 0x0887, 0x5A20, 0x088B, + 0x5A23, 0x088C, 0x5A25, 0x088E, 0x5A29, 0x088D, 0x5A2D, 0x1C70, 0x5A2E, + 0x1C71, 0x5A33, 0x1C77, 0x5A35, 0x1E9C, 0x5A36, 0x0A46, 0x5A37, 0x20FD, + 0x5A38, 0x1E9B, 0x5A39, 0x1EAE, 0x5A3C, 0x0A4C, 0x5A3E, 0x1EAC, 0x5A40, + 0x0A4B, 0x5A41, 0x0A47, 0x5A42, 0x1EB5, 0x5A43, 0x1EA5, 0x5A44, 0x1EA8, + 0x5A46, 0x0A4F, 0x5A47, 0x1EB2, 0x5A48, 0x1EAA, 0x5A49, 0x0A48, 0x5A4A, + 0x0A50, 0x5A4C, 0x1EAF, 0x5A4D, 0x1EAD, 0x5A50, 0x1E9E, 0x5A51, 0x1EB3, + 0x5A52, 0x1EA7, 0x5A53, 0x1EA2, 0x5A55, 0x1E98, 0x5A56, 0x1EB4, 0x5A57, + 0x1EA4, 0x5A58, 0x1E97, 0x5A5A, 0x0A4E, 0x5A5B, 0x1EA9, 0x5A5C, 0x1EB6, + 0x5A5D, 0x1EA6, 0x5A5E, 0x1E9A, 0x5A5F, 0x1E9F, 0x5A60, 0x1E96, 0x5A62, + 0x0A4D, 0x5A64, 0x1EA3, 0x5A65, 0x1EA0, 0x5A66, 0x0A49, 0x5A67, 0x1E99, + 0x5A69, 0x1EB1, 0x5A6A, 0x0A4A, 0x5A6C, 0x1EA1, 0x5A6D, 0x1E9D, 0x5A70, + 0x1EB0, 0x5A77, 0x0C23, 0x5A78, 0x20F6, 0x5A7A, 0x20F3, 0x5A7B, 0x2104, + 0x5A7C, 0x20F8, 0x5A7D, 0x2105, 0x5A7F, 0x0C25, 0x5A83, 0x2101, 0x5A84, + 0x20FE, 0x5A8A, 0x20FF, 0x5A8B, 0x2102, 0x5A8C, 0x2106, 0x5A8E, 0x1EAB, + 0x5A8F, 0x2108, 0x5A90, 0x23B6, 0x5A92, 0x0C26, 0x5A93, 0x2109, 0x5A94, + 0x20F1, 0x5A95, 0x20FB, 0x5A97, 0x2100, 0x5A9A, 0x0C24, 0x5A9B, 0x0C27, + 0x5A9C, 0x2107, 0x5A9D, 0x210A, 0x5A9E, 0x20F5, 0x5A9F, 0x20F2, 0x5AA2, + 0x20F4, 0x5AA5, 0x20F9, 0x5AA6, 0x20F7, 0x5AA7, 0x0C28, 0x5AA9, 0x2103, + 0x5AAC, 0x20FA, 0x5AAE, 0x20FC, 0x5AAF, 0x20F0, 0x5AB0, 0x23AA, 0x5AB1, + 0x23A8, 0x5AB2, 0x0DFC, 0x5AB3, 0x0DFA, 0x5AB4, 0x23B2, 0x5AB5, 0x23A9, + 0x5AB6, 0x23B3, 0x5AB7, 0x23AF, 0x5AB8, 0x23A7, 0x5AB9, 0x23B5, 0x5ABA, + 0x23A6, 0x5ABB, 0x23AD, 0x5ABC, 0x0DF9, 0x5ABD, 0x0DF8, 0x5ABE, 0x0DF7, + 0x5ABF, 0x23AB, 0x5AC0, 0x23B0, 0x5AC1, 0x0DF4, 0x5AC2, 0x0DFB, 0x5AC4, + 0x23A4, 0x5AC6, 0x23AE, 0x5AC7, 0x23A3, 0x5AC8, 0x23AC, 0x5AC9, 0x0DF5, + 0x5ACA, 0x23B1, 0x5ACB, 0x23A5, 0x5ACC, 0x0DF6, 0x5ACD, 0x23B4, 0x5AD5, + 0x2650, 0x5AD6, 0x0FB4, 0x5AD7, 0x0FB3, 0x5AD8, 0x0FB5, 0x5AD9, 0x265C, + 0x5ADA, 0x2652, 0x5ADB, 0x2658, 0x5ADC, 0x264D, 0x5ADD, 0x265B, 0x5ADE, + 0x265A, 0x5ADF, 0x265E, 0x5AE0, 0x2657, 0x5AE1, 0x0FB0, 0x5AE2, 0x2656, + 0x5AE3, 0x0FB6, 0x5AE5, 0x264F, 0x5AE6, 0x0FB1, 0x5AE8, 0x265D, 0x5AE9, + 0x0FB2, 0x5AEA, 0x2651, 0x5AEB, 0x2654, 0x5AEC, 0x2659, 0x5AED, 0x2653, + 0x5AEE, 0x264E, 0x5AF3, 0x2655, 0x5AF4, 0x28AB, 0x5AF5, 0x112D, 0x5AF6, + 0x28AE, 0x5AF7, 0x28AD, 0x5AF8, 0x28B0, 0x5AF9, 0x28B2, 0x5AFA, 0x36EE, + 0x5AFB, 0x112B, 0x5AFD, 0x28AC, 0x5AFF, 0x28AA, 0x5B01, 0x28B3, 0x5B02, + 0x28B1, 0x5B03, 0x28AF, 0x5B05, 0x28B5, 0x5B07, 0x28B4, 0x5B08, 0x112F, + 0x5B09, 0x112A, 0x5B0B, 0x112C, 0x5B0C, 0x112E, 0x5B0F, 0x28B6, 0x5B10, + 0x2B22, 0x5B13, 0x2B21, 0x5B14, 0x2B20, 0x5B16, 0x2B23, 0x5B17, 0x2B1C, + 0x5B19, 0x2B1D, 0x5B1A, 0x2B25, 0x5B1B, 0x2B1E, 0x5B1D, 0x12A8, 0x5B1E, + 0x2B27, 0x5B20, 0x2B26, 0x5B21, 0x2B1F, 0x5B23, 0x2D52, 0x5B24, 0x13C5, + 0x5B25, 0x2D50, 0x5B26, 0x2D55, 0x5B27, 0x2D54, 0x5B28, 0x2B24, 0x5B2A, + 0x13C4, 0x5B2C, 0x2D53, 0x5B2D, 0x2D4F, 0x5B2E, 0x2D57, 0x5B2F, 0x2D56, + 0x5B30, 0x13C3, 0x5B32, 0x2D51, 0x5B34, 0x12A9, 0x5B38, 0x14CE, 0x5B3C, + 0x2F18, 0x5B3D, 0x3089, 0x5B3E, 0x308A, 0x5B3F, 0x308B, 0x5B40, 0x160F, + 0x5B43, 0x1610, 0x5B45, 0x31CC, 0x5B47, 0x32CD, 0x5B48, 0x32CC, 0x5B4B, + 0x337C, 0x5B4C, 0x337D, 0x5B4D, 0x3413, 0x5B4E, 0x3482, 0x5B50, 0x027F, + 0x5B51, 0x0280, 0x5B53, 0x0281, 0x5B54, 0x02C6, 0x5B55, 0x0333, 0x5B56, + 0x17DC, 0x5B57, 0x03BF, 0x5B58, 0x03C0, 0x5B5A, 0x047F, 0x5B5B, 0x0480, + 0x5B5C, 0x047E, 0x5B5D, 0x047D, 0x5B5F, 0x0597, 0x5B62, 0x1957, 0x5B63, + 0x0599, 0x5B64, 0x0598, 0x5B65, 0x1958, 0x5B69, 0x0700, 0x5B6B, 0x0891, + 0x5B6C, 0x1C78, 0x5B6E, 0x1EB8, 0x5B70, 0x0A51, 0x5B71, 0x0C2A, 0x5B72, + 0x1EB7, 0x5B73, 0x0C29, 0x5B75, 0x0FB7, 0x5B77, 0x265F, 0x5B78, 0x12AA, + 0x5B7A, 0x13C6, 0x5B7B, 0x2D58, 0x5B7D, 0x1611, 0x5B7F, 0x16C0, 0x5B80, + 0x0225, 0x5B81, 0x179E, 0x5B83, 0x0334, 0x5B84, 0x179F, 0x5B85, 0x03C3, + 0x5B87, 0x03C1, 0x5B88, 0x03C2, 0x5B89, 0x03C4, 0x5B8B, 0x0482, 0x5B8C, + 0x0481, 0x5B8E, 0x1863, 0x5B8F, 0x0483, 0x5B92, 0x1864, 0x5B93, 0x1959, + 0x5B95, 0x195A, 0x5B97, 0x059A, 0x5B98, 0x059C, 0x5B99, 0x059E, 0x5B9A, + 0x059B, 0x5B9B, 0x059F, 0x5B9C, 0x059D, 0x5BA2, 0x0704, 0x5BA3, 0x0701, + 0x5BA4, 0x0703, 0x5BA5, 0x0705, 0x5BA6, 0x0702, 0x5BA7, 0x1C79, 0x5BA8, + 0x1AB3, 0x5BAC, 0x1C7B, 0x5BAD, 0x1C7A, 0x5BAE, 0x0897, 0x5BB0, 0x0893, + 0x5BB3, 0x0894, 0x5BB4, 0x0896, 0x5BB5, 0x0898, 0x5BB6, 0x0895, 0x5BB8, + 0x089A, 0x5BB9, 0x0899, 0x5BBF, 0x0A56, 0x5BC0, 0x1EBA, 0x5BC1, 0x1EB9, + 0x5BC2, 0x0A55, 0x5BC4, 0x0A54, 0x5BC5, 0x0A53, 0x5BC6, 0x0A57, 0x5BC7, + 0x0A52, 0x5BCA, 0x2110, 0x5BCB, 0x210D, 0x5BCC, 0x0C2C, 0x5BCD, 0x210C, + 0x5BCE, 0x2111, 0x5BD0, 0x0C2E, 0x5BD1, 0x210F, 0x5BD2, 0x0C2B, 0x5BD3, + 0x0C2D, 0x5BD4, 0x210E, 0x5BD6, 0x23B7, 0x5BD8, 0x23B8, 0x5BD9, 0x23B9, + 0x5BDE, 0x0FB8, 0x5BDF, 0x0FC0, 0x5BE0, 0x2660, 0x5BE1, 0x0FBA, 0x5BE2, + 0x0FBE, 0x5BE3, 0x2661, 0x5BE4, 0x0FBF, 0x5BE5, 0x0FBB, 0x5BE6, 0x0FBC, + 0x5BE7, 0x0FB9, 0x5BE8, 0x0FBD, 0x5BE9, 0x1132, 0x5BEA, 0x210B, 0x5BEB, + 0x1133, 0x5BEC, 0x1131, 0x5BEE, 0x1130, 0x5BEF, 0x2B28, 0x5BF0, 0x12AB, + 0x5BF1, 0x2D59, 0x5BF2, 0x2D5A, 0x5BF5, 0x157B, 0x5BF6, 0x1612, 0x5BF8, + 0x0282, 0x5BFA, 0x03C5, 0x5C01, 0x0706, 0x5C03, 0x1C7C, 0x5C04, 0x089B, + 0x5C07, 0x0A5A, 0x5C08, 0x0A59, 0x5C09, 0x0A58, 0x5C0A, 0x0C2F, 0x5C0B, + 0x0C30, 0x5C0C, 0x2112, 0x5C0D, 0x0FC1, 0x5C0E, 0x12AC, 0x5C0F, 0x0283, + 0x5C10, 0x1787, 0x5C11, 0x02C7, 0x5C12, 0x17A0, 0x5C15, 0x17DD, 0x5C16, + 0x03C6, 0x5C1A, 0x05A0, 0x5C1F, 0x23BA, 0x5C22, 0x0284, 0x5C24, 0x02C8, + 0x5C25, 0x17DE, 0x5C28, 0x1865, 0x5C2A, 0x1866, 0x5C2C, 0x0484, 0x5C30, + 0x2113, 0x5C31, 0x0C31, 0x5C33, 0x23BB, 0x5C37, 0x13C7, 0x5C38, 0x0285, + 0x5C39, 0x0299, 0x5C3A, 0x02C9, 0x5C3B, 0x17A1, 0x5C3C, 0x0335, 0x5C3E, + 0x0488, 0x5C3F, 0x0487, 0x5C40, 0x0485, 0x5C41, 0x0486, 0x5C44, 0x195B, + 0x5C45, 0x05A2, 0x5C46, 0x05A3, 0x5C47, 0x195C, 0x5C48, 0x05A1, 0x5C4B, + 0x070A, 0x5C4C, 0x1AB4, 0x5C4D, 0x0709, 0x5C4E, 0x0707, 0x5C4F, 0x0708, + 0x5C50, 0x089E, 0x5C51, 0x089C, 0x5C54, 0x1C7E, 0x5C55, 0x089D, 0x5C56, + 0x1C7D, 0x5C58, 0x0892, 0x5C59, 0x1EBB, 0x5C5C, 0x0A5C, 0x5C5D, 0x0A5D, + 0x5C60, 0x0A5B, 0x5C62, 0x0FC2, 0x5C63, 0x2662, 0x5C64, 0x1134, 0x5C65, + 0x1135, 0x5C67, 0x28B7, 0x5C68, 0x13C8, 0x5C69, 0x2F19, 0x5C6A, 0x2F1A, + 0x5C6C, 0x166E, 0x5C6D, 0x3483, 0x5C6E, 0x1776, 0x5C6F, 0x02CA, 0x5C71, + 0x0286, 0x5C73, 0x17A3, 0x5C74, 0x17A2, 0x5C79, 0x03C7, 0x5C7A, 0x17E0, + 0x5C7B, 0x17E1, 0x5C7C, 0x17DF, 0x5C7E, 0x17E2, 0x5C86, 0x186E, 0x5C88, + 0x1869, 0x5C89, 0x186B, 0x5C8A, 0x186D, 0x5C8B, 0x186A, 0x5C8C, 0x048C, + 0x5C8D, 0x1867, 0x5C8F, 0x1868, 0x5C90, 0x0489, 0x5C91, 0x048A, 0x5C92, + 0x186C, 0x5C93, 0x186F, 0x5C94, 0x048B, 0x5C95, 0x1870, 0x5C9D, 0x196A, + 0x5C9F, 0x1964, 0x5CA0, 0x195F, 0x5CA1, 0x05A5, 0x5CA2, 0x1967, 0x5CA3, + 0x1965, 0x5CA4, 0x195E, 0x5CA5, 0x196B, 0x5CA6, 0x196E, 0x5CA7, 0x1969, + 0x5CA8, 0x1962, 0x5CA9, 0x05A7, 0x5CAA, 0x1968, 0x5CAB, 0x05A8, 0x5CAC, + 0x1963, 0x5CAD, 0x1966, 0x5CAE, 0x195D, 0x5CAF, 0x1961, 0x5CB0, 0x196D, + 0x5CB1, 0x05A9, 0x5CB3, 0x05AA, 0x5CB5, 0x1960, 0x5CB6, 0x196C, 0x5CB7, + 0x05A4, 0x5CB8, 0x05A6, 0x5CC6, 0x1AC5, 0x5CC7, 0x1ABE, 0x5CC8, 0x1AC4, + 0x5CC9, 0x1ABD, 0x5CCA, 0x1ABF, 0x5CCB, 0x1AB9, 0x5CCC, 0x1AB7, 0x5CCE, + 0x1AC6, 0x5CCF, 0x1AC3, 0x5CD0, 0x1AB5, 0x5CD2, 0x070C, 0x5CD3, 0x1AC1, + 0x5CD4, 0x1AC2, 0x5CD6, 0x1AC0, 0x5CD7, 0x1AB8, 0x5CD8, 0x1AB6, 0x5CD9, + 0x070B, 0x5CDA, 0x1ABC, 0x5CDB, 0x1ABA, 0x5CDE, 0x1ABB, 0x5CDF, 0x1AC7, + 0x5CE8, 0x08A3, 0x5CEA, 0x08A2, 0x5CEC, 0x1C7F, 0x5CED, 0x089F, 0x5CEE, + 0x1C81, 0x5CF0, 0x08A4, 0x5CF1, 0x1C82, 0x5CF4, 0x08A7, 0x5CF6, 0x08A5, + 0x5CF7, 0x1C83, 0x5CF8, 0x1AC8, 0x5CF9, 0x1C85, 0x5CFB, 0x08A1, 0x5CFD, + 0x08A0, 0x5CFF, 0x1C80, 0x5D00, 0x1C84, 0x5D01, 0x08A6, 0x5D06, 0x0A5F, + 0x5D07, 0x0A5E, 0x5D0B, 0x1EBD, 0x5D0C, 0x1EC1, 0x5D0D, 0x1EC3, 0x5D0E, + 0x0A60, 0x5D0F, 0x1EC6, 0x5D11, 0x0A64, 0x5D12, 0x1EC8, 0x5D14, 0x0A66, + 0x5D16, 0x0A62, 0x5D17, 0x0A6A, 0x5D19, 0x0A67, 0x5D1A, 0x1EBF, 0x5D1B, + 0x0A61, 0x5D1D, 0x1EBE, 0x5D1E, 0x1EBC, 0x5D1F, 0x1ECA, 0x5D20, 0x1EC0, + 0x5D22, 0x0A63, 0x5D23, 0x1EC9, 0x5D24, 0x0A68, 0x5D25, 0x1EC5, 0x5D26, + 0x1EC4, 0x5D27, 0x0A69, 0x5D28, 0x1EC2, 0x5D29, 0x0A65, 0x5D2E, 0x1ECB, + 0x5D30, 0x1EC7, 0x5D31, 0x2122, 0x5D32, 0x2129, 0x5D33, 0x211E, 0x5D34, + 0x0C34, 0x5D35, 0x211A, 0x5D36, 0x212A, 0x5D37, 0x2114, 0x5D38, 0x2127, + 0x5D39, 0x2125, 0x5D3A, 0x211F, 0x5D3C, 0x2128, 0x5D3D, 0x2121, 0x5D3F, + 0x2119, 0x5D40, 0x212B, 0x5D41, 0x2117, 0x5D42, 0x2124, 0x5D43, 0x2115, + 0x5D45, 0x212C, 0x5D47, 0x0C35, 0x5D49, 0x2126, 0x5D4A, 0x23BE, 0x5D4B, + 0x2118, 0x5D4C, 0x0C32, 0x5D4E, 0x211C, 0x5D50, 0x0C33, 0x5D51, 0x211B, + 0x5D52, 0x2120, 0x5D55, 0x211D, 0x5D59, 0x2123, 0x5D5E, 0x23C2, 0x5D62, + 0x23C5, 0x5D63, 0x23BD, 0x5D65, 0x23BF, 0x5D67, 0x23C4, 0x5D68, 0x23C3, + 0x5D69, 0x0DFD, 0x5D6B, 0x2116, 0x5D6C, 0x23C1, 0x5D6F, 0x0DFE, 0x5D71, + 0x23BC, 0x5D72, 0x23C0, 0x5D77, 0x2669, 0x5D79, 0x2670, 0x5D7A, 0x2667, + 0x5D7C, 0x266E, 0x5D7D, 0x2665, 0x5D7E, 0x266D, 0x5D7F, 0x2671, 0x5D80, + 0x2664, 0x5D81, 0x2668, 0x5D82, 0x2663, 0x5D84, 0x0FC3, 0x5D86, 0x2666, + 0x5D87, 0x0FC4, 0x5D88, 0x266C, 0x5D89, 0x266B, 0x5D8A, 0x266A, 0x5D8D, + 0x266F, 0x5D92, 0x28BB, 0x5D93, 0x28BD, 0x5D94, 0x1137, 0x5D95, 0x28BE, + 0x5D97, 0x28B9, 0x5D99, 0x28B8, 0x5D9A, 0x28C2, 0x5D9C, 0x28C0, 0x5D9D, + 0x1136, 0x5D9E, 0x28C3, 0x5D9F, 0x28BA, 0x5DA0, 0x28BF, 0x5DA1, 0x28C1, + 0x5DA2, 0x28BC, 0x5DA7, 0x2B2C, 0x5DA8, 0x2B31, 0x5DA9, 0x2B2B, 0x5DAA, + 0x2B30, 0x5DAC, 0x2B29, 0x5DAD, 0x2B33, 0x5DAE, 0x2B2F, 0x5DAF, 0x2B34, + 0x5DB0, 0x2B2E, 0x5DB1, 0x2B2A, 0x5DB2, 0x2B32, 0x5DB4, 0x2B35, 0x5DB5, + 0x2B2D, 0x5DB7, 0x2D5B, 0x5DB8, 0x13CC, 0x5DBA, 0x13CA, 0x5DBC, 0x13C9, + 0x5DBD, 0x13CB, 0x5DC0, 0x2F1B, 0x5DC2, 0x3023, 0x5DC3, 0x308C, 0x5DC6, + 0x31CD, 0x5DC7, 0x31CE, 0x5DC9, 0x1613, 0x5DCB, 0x32CE, 0x5DCD, 0x166F, + 0x5DCF, 0x32CF, 0x5DD1, 0x337F, 0x5DD2, 0x16C2, 0x5DD4, 0x16C1, 0x5DD5, + 0x337E, 0x5DD6, 0x16F7, 0x5DD8, 0x3414, 0x5DDB, 0x0226, 0x5DDD, 0x0287, + 0x5DDE, 0x03C8, 0x5DDF, 0x17E3, 0x5DE0, 0x1871, 0x5DE1, 0x051A, 0x5DE2, + 0x0A6B, 0x5DE5, 0x0288, 0x5DE6, 0x0338, 0x5DE7, 0x0337, 0x5DE8, 0x0336, + 0x5DEB, 0x048D, 0x5DEE, 0x08A8, 0x5DF0, 0x23C6, 0x5DF1, 0x0289, 0x5DF2, + 0x028A, 0x5DF3, 0x028B, 0x5DF4, 0x02CB, 0x5DF7, 0x070D, 0x5DF9, 0x1AC9, + 0x5DFD, 0x0C36, 0x5DFE, 0x028C, 0x5DFF, 0x1788, 0x5E02, 0x0339, 0x5E03, + 0x033A, 0x5E04, 0x17A4, 0x5E06, 0x03C9, 0x5E0A, 0x1872, 0x5E0C, 0x048E, + 0x5E0E, 0x1873, 0x5E11, 0x05B0, 0x5E14, 0x1970, 0x5E15, 0x05AE, 0x5E16, + 0x05AD, 0x5E17, 0x196F, 0x5E18, 0x05AB, 0x5E19, 0x1971, 0x5E1A, 0x05AC, + 0x5E1B, 0x05AF, 0x5E1D, 0x070E, 0x5E1F, 0x0710, 0x5E20, 0x1ACD, 0x5E21, + 0x1ACA, 0x5E22, 0x1ACB, 0x5E23, 0x1ACC, 0x5E24, 0x1ACE, 0x5E25, 0x070F, + 0x5E28, 0x1C87, 0x5E29, 0x1C86, 0x5E2B, 0x08AA, 0x5E2D, 0x08A9, 0x5E33, + 0x0A6E, 0x5E34, 0x1ECD, 0x5E36, 0x0A6D, 0x5E37, 0x0A6F, 0x5E38, 0x0A6C, + 0x5E3D, 0x0C38, 0x5E3E, 0x1ECC, 0x5E40, 0x0C39, 0x5E41, 0x212E, 0x5E43, + 0x0C3A, 0x5E44, 0x212D, 0x5E45, 0x0C37, 0x5E4A, 0x23C9, 0x5E4B, 0x23CB, + 0x5E4C, 0x0DFF, 0x5E4D, 0x23CA, 0x5E4E, 0x23C8, 0x5E4F, 0x23C7, 0x5E53, + 0x2674, 0x5E54, 0x0FC9, 0x5E55, 0x0FC7, 0x5E57, 0x0FC8, 0x5E58, 0x2672, + 0x5E59, 0x2673, 0x5E5B, 0x0FC5, 0x5E5C, 0x28C7, 0x5E5D, 0x28C5, 0x5E5F, + 0x1139, 0x5E60, 0x28C6, 0x5E61, 0x113A, 0x5E62, 0x1138, 0x5E63, 0x0FC6, + 0x5E66, 0x2B38, 0x5E67, 0x2B36, 0x5E68, 0x2B37, 0x5E69, 0x28C4, 0x5E6A, + 0x2D5D, 0x5E6B, 0x13CD, 0x5E6C, 0x2D5C, 0x5E6D, 0x2F1C, 0x5E6E, 0x2F1D, + 0x5E6F, 0x2B39, 0x5E70, 0x308D, 0x5E72, 0x028D, 0x5E73, 0x033B, 0x5E74, + 0x03CB, 0x5E75, 0x17E4, 0x5E76, 0x03CA, 0x5E78, 0x05B1, 0x5E79, 0x0E00, + 0x5E7A, 0x0227, 0x5E7B, 0x02CC, 0x5E7C, 0x033C, 0x5E7D, 0x0711, 0x5E7E, + 0x0C3B, 0x5E7F, 0x0228, 0x5E80, 0x17A5, 0x5E82, 0x17A6, 0x5E84, 0x17E5, + 0x5E87, 0x0490, 0x5E88, 0x1877, 0x5E89, 0x1875, 0x5E8A, 0x0491, 0x5E8B, + 0x1874, 0x5E8C, 0x1876, 0x5E8D, 0x1878, 0x5E8F, 0x048F, 0x5E95, 0x05B5, + 0x5E96, 0x05B6, 0x5E97, 0x05B3, 0x5E9A, 0x05B2, 0x5E9B, 0x1AD2, 0x5E9C, + 0x05B4, 0x5EA0, 0x0712, 0x5EA2, 0x1AD1, 0x5EA3, 0x1AD3, 0x5EA4, 0x1AD0, + 0x5EA5, 0x1AD4, 0x5EA6, 0x0713, 0x5EA7, 0x08AD, 0x5EA8, 0x1C88, 0x5EAA, + 0x1C8A, 0x5EAB, 0x08AB, 0x5EAC, 0x1C8B, 0x5EAD, 0x08AC, 0x5EAE, 0x1C89, + 0x5EB0, 0x1ACF, 0x5EB1, 0x1ECE, 0x5EB2, 0x1ED1, 0x5EB3, 0x1ED2, 0x5EB4, + 0x1ECF, 0x5EB5, 0x0A73, 0x5EB6, 0x0A72, 0x5EB7, 0x0A70, 0x5EB8, 0x0A71, + 0x5EB9, 0x1ED0, 0x5EBE, 0x0A74, 0x5EC1, 0x0C3D, 0x5EC2, 0x0C3E, 0x5EC4, + 0x0C3F, 0x5EC5, 0x23CC, 0x5EC6, 0x23CE, 0x5EC7, 0x23D0, 0x5EC8, 0x0E02, + 0x5EC9, 0x0E01, 0x5ECA, 0x0C3C, 0x5ECB, 0x23CF, 0x5ECC, 0x23CD, 0x5ECE, + 0x2678, 0x5ED1, 0x2676, 0x5ED2, 0x267C, 0x5ED3, 0x0FCA, 0x5ED4, 0x267D, + 0x5ED5, 0x267A, 0x5ED6, 0x0FCB, 0x5ED7, 0x2677, 0x5ED8, 0x2675, 0x5ED9, + 0x267B, 0x5EDA, 0x113C, 0x5EDB, 0x28C9, 0x5EDC, 0x2679, 0x5EDD, 0x113E, + 0x5EDE, 0x28CA, 0x5EDF, 0x113D, 0x5EE0, 0x1140, 0x5EE1, 0x28CB, 0x5EE2, + 0x113B, 0x5EE3, 0x113F, 0x5EE5, 0x2B3E, 0x5EE6, 0x2B3C, 0x5EE7, 0x2B3B, + 0x5EE8, 0x2B3D, 0x5EE9, 0x2B3A, 0x5EEC, 0x157D, 0x5EEE, 0x31CF, 0x5EEF, + 0x31D0, 0x5EF1, 0x32D0, 0x5EF2, 0x3380, 0x5EF3, 0x1742, 0x5EF4, 0x0229, + 0x5EF6, 0x05B7, 0x5EF7, 0x0492, 0x5EFA, 0x0714, 0x5EFE, 0x028E, 0x5EFF, + 0x02CD, 0x5F01, 0x033D, 0x5F02, 0x17E6, 0x5F04, 0x0493, 0x5F05, 0x1879, + 0x5F07, 0x1AD5, 0x5F08, 0x0715, 0x5F0A, 0x0FCC, 0x5F0B, 0x028F, 0x5F0F, + 0x03CC, 0x5F12, 0x0E03, 0x5F13, 0x0290, 0x5F14, 0x02CE, 0x5F15, 0x02CF, + 0x5F17, 0x033F, 0x5F18, 0x033E, 0x5F1A, 0x17E7, 0x5F1B, 0x03CD, 0x5F1D, + 0x187A, 0x5F1F, 0x0494, 0x5F22, 0x1973, 0x5F23, 0x1974, 0x5F24, 0x1975, + 0x5F26, 0x05B8, 0x5F27, 0x05B9, 0x5F28, 0x1972, 0x5F29, 0x05BA, 0x5F2D, + 0x0716, 0x5F2E, 0x1AD6, 0x5F30, 0x1C8D, 0x5F31, 0x08AE, 0x5F33, 0x1C8C, + 0x5F35, 0x0A75, 0x5F36, 0x1ED3, 0x5F37, 0x0A76, 0x5F38, 0x1ED4, 0x5F3C, + 0x0C40, 0x5F40, 0x23D1, 0x5F43, 0x267F, 0x5F44, 0x267E, 0x5F46, 0x0FCD, + 0x5F48, 0x1141, 0x5F49, 0x28CC, 0x5F4A, 0x12AD, 0x5F4B, 0x2B3F, 0x5F4C, + 0x13CE, 0x5F4E, 0x16C3, 0x5F4F, 0x3416, 0x5F50, 0x022A, 0x5F54, 0x1976, + 0x5F56, 0x1AD7, 0x5F57, 0x0A77, 0x5F58, 0x212F, 0x5F59, 0x0E04, 0x5F5D, + 0x14CF, 0x5F61, 0x022B, 0x5F62, 0x0496, 0x5F64, 0x0495, 0x5F65, 0x0717, + 0x5F67, 0x1C8E, 0x5F69, 0x0A79, 0x5F6A, 0x0B89, 0x5F6B, 0x0A7A, 0x5F6C, + 0x0A78, 0x5F6D, 0x0C41, 0x5F6F, 0x2680, 0x5F70, 0x0FCE, 0x5F71, 0x1142, + 0x5F73, 0x1777, 0x5F74, 0x17E8, 0x5F76, 0x187C, 0x5F77, 0x0497, 0x5F78, + 0x187B, 0x5F79, 0x0498, 0x5F7C, 0x05BE, 0x5F7D, 0x1979, 0x5F7E, 0x1978, + 0x5F7F, 0x05BD, 0x5F80, 0x05BB, 0x5F81, 0x05BC, 0x5F82, 0x1977, 0x5F85, + 0x0719, 0x5F86, 0x1AD8, 0x5F87, 0x071C, 0x5F88, 0x0718, 0x5F89, 0x071E, + 0x5F8A, 0x071A, 0x5F8B, 0x071B, 0x5F8C, 0x071D, 0x5F90, 0x08B1, 0x5F91, + 0x08B0, 0x5F92, 0x08AF, 0x5F96, 0x1ED6, 0x5F97, 0x0A7B, 0x5F98, 0x0A7E, + 0x5F99, 0x0A7C, 0x5F9B, 0x1ED5, 0x5F9C, 0x0A81, 0x5F9E, 0x0A7D, 0x5F9F, + 0x1ED7, 0x5FA0, 0x0A80, 0x5FA1, 0x0A7F, 0x5FA5, 0x2131, 0x5FA6, 0x2130, + 0x5FA8, 0x0C44, 0x5FA9, 0x0C42, 0x5FAA, 0x0C43, 0x5FAB, 0x2132, 0x5FAC, + 0x0E05, 0x5FAD, 0x23D3, 0x5FAE, 0x0E06, 0x5FAF, 0x23D2, 0x5FB2, 0x28CD, + 0x5FB5, 0x1144, 0x5FB6, 0x2681, 0x5FB7, 0x1143, 0x5FB9, 0x0FCF, 0x5FBB, + 0x2B41, 0x5FBC, 0x2B40, 0x5FBD, 0x13CF, 0x5FBE, 0x2D5E, 0x5FBF, 0x308E, + 0x5FC0, 0x31D1, 0x5FC1, 0x31D2, 0x5FC3, 0x02D0, 0x5FC5, 0x0340, 0x5FC9, + 0x17A7, 0x5FCC, 0x049A, 0x5FCD, 0x049C, 0x5FCF, 0x17EB, 0x5FD0, 0x187F, + 0x5FD1, 0x187E, 0x5FD2, 0x187D, 0x5FD4, 0x17EA, 0x5FD5, 0x17E9, 0x5FD6, + 0x03CF, 0x5FD7, 0x049B, 0x5FD8, 0x0499, 0x5FD9, 0x03CE, 0x5FDD, 0x05BF, + 0x5FDE, 0x197A, 0x5FE0, 0x05C0, 0x5FE1, 0x1884, 0x5FE3, 0x1886, 0x5FE4, + 0x1885, 0x5FE5, 0x197B, 0x5FE8, 0x1881, 0x5FEA, 0x04A0, 0x5FEB, 0x049E, + 0x5FED, 0x1880, 0x5FEE, 0x1882, 0x5FEF, 0x1888, 0x5FF1, 0x049D, 0x5FF3, + 0x1883, 0x5FF4, 0x188C, 0x5FF5, 0x05C2, 0x5FF7, 0x1889, 0x5FF8, 0x049F, + 0x5FFA, 0x1887, 0x5FFB, 0x188A, 0x5FFD, 0x05C1, 0x5FFF, 0x05C3, 0x6000, + 0x188B, 0x6009, 0x198F, 0x600A, 0x1982, 0x600B, 0x1980, 0x600C, 0x198E, + 0x600D, 0x1989, 0x600E, 0x0723, 0x600F, 0x05C4, 0x6010, 0x198A, 0x6011, + 0x198D, 0x6012, 0x071F, 0x6013, 0x198C, 0x6014, 0x05C5, 0x6015, 0x05CA, + 0x6016, 0x05C8, 0x6017, 0x1983, 0x6019, 0x197E, 0x601A, 0x1985, 0x601B, + 0x05CF, 0x601C, 0x1990, 0x601D, 0x0720, 0x601E, 0x1986, 0x6020, 0x0721, + 0x6021, 0x05CB, 0x6022, 0x1988, 0x6024, 0x1AE7, 0x6025, 0x0722, 0x6026, + 0x197D, 0x6027, 0x05CC, 0x6028, 0x0724, 0x6029, 0x05CD, 0x602A, 0x05C9, + 0x602B, 0x05CE, 0x602C, 0x1987, 0x602D, 0x197C, 0x602E, 0x198B, 0x602F, + 0x05C6, 0x6032, 0x197F, 0x6033, 0x1984, 0x6034, 0x1981, 0x6035, 0x05C7, + 0x6037, 0x1AD9, 0x6039, 0x1ADA, 0x6040, 0x1AE4, 0x6041, 0x1C92, 0x6042, + 0x1AE5, 0x6043, 0x072A, 0x6044, 0x1AE8, 0x6045, 0x1ADE, 0x6046, 0x0729, + 0x6047, 0x1AE0, 0x6049, 0x1AE1, 0x604C, 0x1AE3, 0x604D, 0x0725, 0x6050, + 0x08B5, 0x6052, 0x36EC, 0x6053, 0x1ADF, 0x6054, 0x1ADB, 0x6055, 0x08B6, + 0x6058, 0x1AE9, 0x6059, 0x08B2, 0x605A, 0x1C90, 0x605B, 0x1AE2, 0x605D, + 0x1C8F, 0x605E, 0x1ADD, 0x605F, 0x1AE6, 0x6062, 0x0728, 0x6063, 0x08B3, + 0x6064, 0x072E, 0x6065, 0x08B4, 0x6066, 0x1AEA, 0x6067, 0x1C91, 0x6068, + 0x0727, 0x6069, 0x08B8, 0x606A, 0x072D, 0x606B, 0x072C, 0x606C, 0x072B, + 0x606D, 0x08B7, 0x606E, 0x1AEB, 0x606F, 0x08B9, 0x6070, 0x0726, 0x6072, + 0x1ADC, 0x607F, 0x0A82, 0x6080, 0x1C95, 0x6081, 0x1C97, 0x6083, 0x1C99, + 0x6084, 0x08BA, 0x6085, 0x08C0, 0x6086, 0x1EDA, 0x6087, 0x1C9D, 0x6088, + 0x1C94, 0x6089, 0x0A84, 0x608A, 0x1ED8, 0x608C, 0x08BF, 0x608D, 0x08BD, + 0x608E, 0x1C9F, 0x6090, 0x1ED9, 0x6092, 0x1C96, 0x6094, 0x08BE, 0x6095, + 0x1C9A, 0x6096, 0x08C1, 0x6097, 0x1C9C, 0x609A, 0x08BC, 0x609B, 0x1C9B, + 0x609C, 0x1C9E, 0x609D, 0x1C98, 0x609F, 0x08BB, 0x60A0, 0x0A85, 0x60A2, + 0x1C93, 0x60A3, 0x0A83, 0x60A8, 0x0A86, 0x60B0, 0x1EDC, 0x60B1, 0x1EE5, + 0x60B2, 0x0C47, 0x60B4, 0x0A88, 0x60B5, 0x0A8D, 0x60B6, 0x0C48, 0x60B7, + 0x1EE7, 0x60B8, 0x0A94, 0x60B9, 0x2134, 0x60BA, 0x1EDD, 0x60BB, 0x0A8C, + 0x60BC, 0x0A8F, 0x60BD, 0x0A8A, 0x60BE, 0x1EDB, 0x60BF, 0x1EE9, 0x60C0, + 0x1EEC, 0x60C1, 0x2143, 0x60C3, 0x1EEA, 0x60C4, 0x2138, 0x60C5, 0x0A8B, + 0x60C6, 0x0A92, 0x60C7, 0x0A96, 0x60C8, 0x1EE4, 0x60C9, 0x2133, 0x60CA, + 0x1EE8, 0x60CB, 0x0A87, 0x60CC, 0x2135, 0x60CD, 0x1EEB, 0x60CE, 0x2137, + 0x60CF, 0x1EE0, 0x60D1, 0x0C45, 0x60D3, 0x1EDE, 0x60D4, 0x1EDF, 0x60D5, + 0x0A91, 0x60D8, 0x0A90, 0x60D9, 0x1EE2, 0x60DA, 0x0A95, 0x60DB, 0x1EE6, + 0x60DC, 0x0A8E, 0x60DD, 0x1EE3, 0x60DF, 0x0A93, 0x60E0, 0x0C49, 0x60E1, + 0x0C46, 0x60E2, 0x2136, 0x60E4, 0x1EE1, 0x60E6, 0x0A89, 0x60F0, 0x0C4E, + 0x60F1, 0x0C52, 0x60F2, 0x213A, 0x60F3, 0x0E0B, 0x60F4, 0x0C50, 0x60F5, + 0x213E, 0x60F6, 0x0C54, 0x60F7, 0x23D4, 0x60F8, 0x2140, 0x60F9, 0x0E0D, + 0x60FA, 0x0C4C, 0x60FB, 0x0C4F, 0x60FC, 0x2141, 0x60FE, 0x2142, 0x60FF, + 0x2148, 0x6100, 0x0C56, 0x6101, 0x0E0E, 0x6103, 0x2144, 0x6104, 0x2149, + 0x6105, 0x213D, 0x6106, 0x0E18, 0x6108, 0x0E0F, 0x6109, 0x0C55, 0x610A, + 0x213B, 0x610B, 0x214A, 0x610D, 0x0E17, 0x610E, 0x0C53, 0x610F, 0x0E08, + 0x6110, 0x2147, 0x6112, 0x0C57, 0x6113, 0x213F, 0x6114, 0x2139, 0x6115, + 0x0C4D, 0x6116, 0x213C, 0x6118, 0x2145, 0x611A, 0x0E07, 0x611B, 0x0E0C, + 0x611C, 0x0C4A, 0x611D, 0x2146, 0x611F, 0x0E0A, 0x6123, 0x0C4B, 0x6127, + 0x0E16, 0x6128, 0x2683, 0x6129, 0x23DF, 0x612B, 0x23D7, 0x612C, 0x2682, + 0x612E, 0x23DB, 0x612F, 0x23DD, 0x6132, 0x23DA, 0x6134, 0x0E15, 0x6136, + 0x23D9, 0x6137, 0x0E19, 0x613B, 0x2692, 0x613E, 0x0E14, 0x613F, 0x0FD1, + 0x6140, 0x23E0, 0x6141, 0x2684, 0x6144, 0x0E12, 0x6145, 0x23D8, 0x6146, + 0x23DC, 0x6147, 0x0FD0, 0x6148, 0x0E09, 0x6149, 0x23D5, 0x614A, 0x23D6, + 0x614B, 0x0FD2, 0x614C, 0x0E11, 0x614D, 0x0E13, 0x614E, 0x0E10, 0x614F, + 0x23DE, 0x6152, 0x2688, 0x6153, 0x2689, 0x6154, 0x268E, 0x6155, 0x1149, + 0x6156, 0x2695, 0x6158, 0x0FD8, 0x615A, 0x0FD7, 0x615B, 0x2690, 0x615D, + 0x1148, 0x615E, 0x2685, 0x615F, 0x0FD6, 0x6161, 0x2694, 0x6162, 0x0FD4, + 0x6163, 0x0FD5, 0x6165, 0x2691, 0x6166, 0x28DE, 0x6167, 0x1146, 0x6168, + 0x0C51, 0x616A, 0x2693, 0x616B, 0x114D, 0x616C, 0x268B, 0x616E, 0x1147, + 0x6170, 0x114C, 0x6171, 0x2686, 0x6172, 0x268A, 0x6173, 0x2687, 0x6174, + 0x268D, 0x6175, 0x0FD9, 0x6176, 0x1145, 0x6177, 0x0FD3, 0x6179, 0x28D0, + 0x617A, 0x268F, 0x617C, 0x114B, 0x617E, 0x114E, 0x6180, 0x268C, 0x6182, + 0x114A, 0x6183, 0x28CF, 0x6189, 0x28D4, 0x618A, 0x12B1, 0x618B, 0x28CE, + 0x618C, 0x2B4D, 0x618D, 0x28DD, 0x618E, 0x1152, 0x6190, 0x1150, 0x6191, + 0x12AF, 0x6192, 0x28DA, 0x6193, 0x28D6, 0x6194, 0x1156, 0x6196, 0x2B44, + 0x619A, 0x1154, 0x619B, 0x28D5, 0x619D, 0x2B42, 0x619F, 0x28D9, 0x61A1, + 0x28DC, 0x61A2, 0x28D3, 0x61A4, 0x1155, 0x61A7, 0x114F, 0x61A8, 0x2B43, + 0x61A9, 0x12B0, 0x61AA, 0x28DB, 0x61AB, 0x1151, 0x61AC, 0x1153, 0x61AD, + 0x28D8, 0x61AE, 0x1157, 0x61AF, 0x28D7, 0x61B0, 0x28D2, 0x61B1, 0x28D1, + 0x61B2, 0x12AE, 0x61B3, 0x28DF, 0x61B4, 0x2B46, 0x61B5, 0x2D60, 0x61B6, + 0x12B3, 0x61B8, 0x2B4C, 0x61BA, 0x2B4A, 0x61BC, 0x2D61, 0x61BE, 0x12B4, + 0x61BF, 0x2B4B, 0x61C1, 0x2B48, 0x61C2, 0x13D1, 0x61C3, 0x2D5F, 0x61C5, + 0x2B45, 0x61C6, 0x2B47, 0x61C7, 0x13D2, 0x61C8, 0x12B6, 0x61C9, 0x13D0, + 0x61CA, 0x12B5, 0x61CB, 0x13D4, 0x61CC, 0x2B49, 0x61CD, 0x12B2, 0x61D6, + 0x2F26, 0x61D8, 0x2F1E, 0x61DE, 0x2D67, 0x61DF, 0x2F1F, 0x61E0, 0x2D63, + 0x61E3, 0x14D0, 0x61E4, 0x2D65, 0x61E5, 0x2D64, 0x61E6, 0x13D3, 0x61E7, + 0x2D62, 0x61E8, 0x2D66, 0x61E9, 0x2F27, 0x61EA, 0x2F23, 0x61EB, 0x2F25, + 0x61ED, 0x2F20, 0x61EE, 0x2F21, 0x61F0, 0x2F24, 0x61F1, 0x2F22, 0x61F2, + 0x157E, 0x61F5, 0x1581, 0x61F6, 0x1580, 0x61F7, 0x157F, 0x61F8, 0x1614, + 0x61F9, 0x31D3, 0x61FA, 0x1615, 0x61FB, 0x308F, 0x61FC, 0x1670, 0x61FD, + 0x32D1, 0x61FE, 0x1671, 0x61FF, 0x16C4, 0x6200, 0x16F8, 0x6201, 0x3417, + 0x6203, 0x3418, 0x6204, 0x3419, 0x6207, 0x3533, 0x6208, 0x02D1, 0x6209, + 0x17A8, 0x620A, 0x0341, 0x620C, 0x03D1, 0x620D, 0x03D2, 0x620E, 0x03D0, + 0x6210, 0x03D3, 0x6211, 0x04A2, 0x6212, 0x04A1, 0x6214, 0x1991, 0x6215, + 0x05D1, 0x6216, 0x05D0, 0x6219, 0x1CA0, 0x621A, 0x0A97, 0x621B, 0x0A98, + 0x621F, 0x0C58, 0x6220, 0x23E1, 0x6221, 0x0E1A, 0x6222, 0x0E1B, 0x6223, + 0x23E3, 0x6224, 0x23E5, 0x6225, 0x23E4, 0x6227, 0x2697, 0x6229, 0x2696, + 0x622A, 0x0FDA, 0x622B, 0x2698, 0x622D, 0x28E0, 0x622E, 0x1158, 0x6230, + 0x12B7, 0x6232, 0x13D5, 0x6233, 0x14D1, 0x6234, 0x13D6, 0x6236, 0x02D2, + 0x623A, 0x188D, 0x623D, 0x1992, 0x623E, 0x05D3, 0x623F, 0x05D2, 0x6240, + 0x05D4, 0x6241, 0x072F, 0x6242, 0x1AEC, 0x6243, 0x1AED, 0x6246, 0x1CA1, + 0x6247, 0x08C2, 0x6248, 0x0A99, 0x6249, 0x0C59, 0x624A, 0x214B, 0x624B, + 0x02D3, 0x624D, 0x0291, 0x624E, 0x02D4, 0x6250, 0x17A9, 0x6251, 0x0345, + 0x6252, 0x0344, 0x6253, 0x0342, 0x6254, 0x0343, 0x6258, 0x03D6, 0x6259, + 0x17F2, 0x625A, 0x17F4, 0x625B, 0x03D5, 0x625C, 0x17EC, 0x625E, 0x17ED, + 0x6260, 0x17F3, 0x6261, 0x17EF, 0x6262, 0x17F1, 0x6263, 0x03D4, 0x6264, + 0x17EE, 0x6265, 0x17F5, 0x6266, 0x17F0, 0x626D, 0x04A9, 0x626E, 0x04B2, + 0x626F, 0x04B0, 0x6270, 0x1897, 0x6271, 0x1894, 0x6272, 0x189C, 0x6273, + 0x04AE, 0x6274, 0x189D, 0x6276, 0x04A7, 0x6277, 0x189A, 0x6279, 0x04AD, + 0x627A, 0x1896, 0x627B, 0x1895, 0x627C, 0x04AB, 0x627D, 0x189B, 0x627E, + 0x04AC, 0x627F, 0x05D5, 0x6280, 0x04A6, 0x6281, 0x1898, 0x6283, 0x188E, + 0x6284, 0x04A3, 0x6286, 0x04B6, 0x6287, 0x1893, 0x6288, 0x1899, 0x6289, + 0x04A8, 0x628A, 0x04AA, 0x628C, 0x188F, 0x628E, 0x1890, 0x628F, 0x1891, + 0x6291, 0x04B5, 0x6292, 0x04AF, 0x6293, 0x04B4, 0x6294, 0x1892, 0x6295, + 0x04B3, 0x6296, 0x04A5, 0x6297, 0x04A4, 0x6298, 0x04B1, 0x62A8, 0x05E3, + 0x62A9, 0x199E, 0x62AA, 0x1997, 0x62AB, 0x05DE, 0x62AC, 0x05F1, 0x62AD, + 0x1993, 0x62AE, 0x199A, 0x62AF, 0x199C, 0x62B0, 0x199F, 0x62B1, 0x05EC, + 0x62B3, 0x199B, 0x62B4, 0x1994, 0x62B5, 0x05EA, 0x62B6, 0x1998, 0x62B8, + 0x19A0, 0x62B9, 0x05DB, 0x62BB, 0x199D, 0x62BC, 0x05E5, 0x62BD, 0x05E4, + 0x62BE, 0x1996, 0x62BF, 0x05D9, 0x62C2, 0x05DA, 0x62C4, 0x05D8, 0x62C6, + 0x05F0, 0x62C7, 0x05E8, 0x62C8, 0x05E2, 0x62C9, 0x05D6, 0x62CA, 0x1999, + 0x62CB, 0x05E1, 0x62CC, 0x05D7, 0x62CD, 0x05E9, 0x62CE, 0x05F2, 0x62CF, + 0x1AEE, 0x62D0, 0x05E6, 0x62D1, 0x1995, 0x62D2, 0x05DC, 0x62D3, 0x05DF, + 0x62D4, 0x05E0, 0x62D6, 0x05EE, 0x62D7, 0x05EF, 0x62D8, 0x05ED, 0x62D9, + 0x05E7, 0x62DA, 0x05EB, 0x62DB, 0x05DD, 0x62DC, 0x0730, 0x62EB, 0x1AF4, + 0x62EC, 0x073C, 0x62ED, 0x0734, 0x62EE, 0x0736, 0x62EF, 0x073B, 0x62F0, + 0x1B00, 0x62F1, 0x0739, 0x62F2, 0x1CA2, 0x62F3, 0x08C3, 0x62F4, 0x073E, + 0x62F5, 0x1AF1, 0x62F6, 0x1AF9, 0x62F7, 0x073A, 0x62F8, 0x1AF8, 0x62F9, + 0x1AF5, 0x62FA, 0x1AFD, 0x62FB, 0x1AFF, 0x62FC, 0x0733, 0x62FD, 0x0737, + 0x62FE, 0x073D, 0x62FF, 0x08C5, 0x6300, 0x1AFA, 0x6301, 0x0735, 0x6302, + 0x0740, 0x6303, 0x1AF3, 0x6307, 0x0738, 0x6308, 0x08C4, 0x6309, 0x0732, + 0x630B, 0x1AF0, 0x630C, 0x1AF7, 0x630D, 0x1AEF, 0x630E, 0x1AF2, 0x630F, + 0x1AF6, 0x6310, 0x1CA3, 0x6311, 0x073F, 0x6313, 0x1AFB, 0x6314, 0x1AFC, + 0x6315, 0x1AFE, 0x6316, 0x0731, 0x6328, 0x08D3, 0x6329, 0x1CAF, 0x632A, + 0x08D1, 0x632B, 0x08D2, 0x632C, 0x1CA5, 0x632D, 0x1CB5, 0x632F, 0x08C8, + 0x6332, 0x1EED, 0x6333, 0x1CB7, 0x6334, 0x1CB1, 0x6336, 0x1CA8, 0x6338, + 0x1CBA, 0x6339, 0x1CAB, 0x633A, 0x08CE, 0x633B, 0x1F04, 0x633C, 0x1CAE, + 0x633D, 0x08D0, 0x633E, 0x08C7, 0x6340, 0x1CBC, 0x6341, 0x1CB0, 0x6342, + 0x08CA, 0x6343, 0x1CA9, 0x6344, 0x1CA6, 0x6345, 0x1CA7, 0x6346, 0x08CB, + 0x6347, 0x1CB6, 0x6348, 0x1CBD, 0x6349, 0x08CD, 0x634A, 0x1CAD, 0x634B, + 0x1CAC, 0x634C, 0x08D5, 0x634D, 0x08D4, 0x634E, 0x08C6, 0x634F, 0x08CC, + 0x6350, 0x08CF, 0x6351, 0x1CB9, 0x6354, 0x1CB3, 0x6355, 0x08C9, 0x6356, + 0x1CA4, 0x6357, 0x1CBB, 0x6358, 0x1CB2, 0x6359, 0x1CB4, 0x635A, 0x1CB8, + 0x6365, 0x1EEE, 0x6367, 0x0AA1, 0x6368, 0x0AB5, 0x6369, 0x0AB4, 0x636B, + 0x0AA9, 0x636D, 0x1F00, 0x636E, 0x1EFC, 0x636F, 0x1EF9, 0x6370, 0x1F0B, + 0x6371, 0x0AA4, 0x6372, 0x0A9C, 0x6375, 0x1EFE, 0x6376, 0x0C69, 0x6377, + 0x0AA0, 0x6378, 0x1F06, 0x637A, 0x0AB6, 0x637B, 0x0AB3, 0x637C, 0x1F02, + 0x637D, 0x1EF1, 0x6380, 0x0AB2, 0x6381, 0x1F08, 0x6382, 0x1EF0, 0x6383, + 0x0AA7, 0x6384, 0x0AAB, 0x6385, 0x1F07, 0x6387, 0x1EFA, 0x6388, 0x0AAC, + 0x6389, 0x0AA6, 0x638A, 0x1EEF, 0x638C, 0x0C5B, 0x638D, 0x1F0A, 0x638E, + 0x1EF8, 0x638F, 0x0AB1, 0x6390, 0x1EFB, 0x6391, 0x1F09, 0x6392, 0x0AB0, + 0x6394, 0x214C, 0x6396, 0x0A9D, 0x6397, 0x1EF6, 0x6398, 0x0AA2, 0x6399, + 0x0AAD, 0x639B, 0x0AA8, 0x639C, 0x1EFF, 0x639D, 0x1EF5, 0x639E, 0x1EF3, + 0x639F, 0x1F05, 0x63A0, 0x0A9A, 0x63A1, 0x0AAE, 0x63A2, 0x0A9E, 0x63A3, + 0x0C5A, 0x63A4, 0x1F03, 0x63A5, 0x0A9F, 0x63A7, 0x0A9B, 0x63A8, 0x0AAA, + 0x63A9, 0x0AA5, 0x63AA, 0x0AA3, 0x63AB, 0x1EF7, 0x63AC, 0x0AAF, 0x63AD, + 0x1EF4, 0x63AE, 0x1F01, 0x63AF, 0x1EFD, 0x63B0, 0x214E, 0x63B1, 0x214D, + 0x63BD, 0x1EF2, 0x63BE, 0x215E, 0x63C0, 0x0C5D, 0x63C2, 0x2164, 0x63C3, + 0x2153, 0x63C4, 0x2161, 0x63C5, 0x23E6, 0x63C6, 0x0C60, 0x63C7, 0x2165, + 0x63C8, 0x2168, 0x63C9, 0x0C5F, 0x63CA, 0x2156, 0x63CB, 0x2167, 0x63CC, + 0x2166, 0x63CD, 0x0C61, 0x63CE, 0x214F, 0x63CF, 0x0C5C, 0x63D0, 0x0C64, + 0x63D2, 0x0C62, 0x63D3, 0x2163, 0x63D5, 0x2159, 0x63D6, 0x0C66, 0x63D7, + 0x216A, 0x63D8, 0x2162, 0x63D9, 0x216B, 0x63DA, 0x0C6E, 0x63DB, 0x0C6C, + 0x63DC, 0x2160, 0x63DD, 0x215F, 0x63DF, 0x215D, 0x63E0, 0x2157, 0x63E1, + 0x0C65, 0x63E3, 0x0C63, 0x63E4, 0x1CAA, 0x63E5, 0x2150, 0x63E7, 0x2404, + 0x63E8, 0x2151, 0x63E9, 0x0C5E, 0x63EA, 0x0C6B, 0x63EB, 0x23E8, 0x63ED, + 0x0C67, 0x63EE, 0x0C68, 0x63EF, 0x2152, 0x63F0, 0x2169, 0x63F1, 0x23E7, + 0x63F2, 0x215A, 0x63F3, 0x2155, 0x63F4, 0x0C6A, 0x63F5, 0x215B, 0x63F6, + 0x2158, 0x63F9, 0x0C6F, 0x6406, 0x0E2A, 0x6409, 0x23EB, 0x640A, 0x23FE, + 0x640B, 0x2403, 0x640C, 0x23F7, 0x640D, 0x0E26, 0x640E, 0x2408, 0x640F, + 0x0E23, 0x6410, 0x23E9, 0x6412, 0x23EA, 0x6413, 0x0E1C, 0x6414, 0x0E25, + 0x6415, 0x23F1, 0x6416, 0x0E28, 0x6417, 0x0E29, 0x6418, 0x23F2, 0x641A, + 0x23FF, 0x641B, 0x2405, 0x641C, 0x0E24, 0x641E, 0x0E1E, 0x641F, 0x23F0, + 0x6420, 0x23EC, 0x6421, 0x2407, 0x6422, 0x23F5, 0x6423, 0x23F6, 0x6424, + 0x23ED, 0x6425, 0x2401, 0x6426, 0x23F8, 0x6427, 0x2402, 0x6428, 0x23FA, + 0x642A, 0x0E1F, 0x642B, 0x2699, 0x642C, 0x0E22, 0x642D, 0x0E20, 0x642E, + 0x2406, 0x642F, 0x23FD, 0x6430, 0x23F9, 0x6433, 0x23EE, 0x6434, 0x0FE4, + 0x6435, 0x23FC, 0x6436, 0x0E27, 0x6437, 0x23F4, 0x6439, 0x23F3, 0x643D, + 0x0E21, 0x643E, 0x0E1D, 0x643F, 0x26AE, 0x6440, 0x2400, 0x6441, 0x23FB, + 0x6443, 0x23EF, 0x644B, 0x26A9, 0x644D, 0x269A, 0x644E, 0x26A5, 0x6450, + 0x26AC, 0x6451, 0x0FE2, 0x6452, 0x0C6D, 0x6453, 0x26AA, 0x6454, 0x0FDD, + 0x6458, 0x0FDC, 0x6459, 0x26B1, 0x645B, 0x269B, 0x645C, 0x26A8, 0x645D, + 0x269C, 0x645E, 0x26A7, 0x645F, 0x0FE0, 0x6460, 0x26AB, 0x6461, 0x215C, + 0x6465, 0x26B2, 0x6466, 0x26A3, 0x6467, 0x0FE3, 0x6468, 0x28EE, 0x6469, + 0x1159, 0x646B, 0x26B0, 0x646C, 0x26AF, 0x646D, 0x0FE5, 0x646E, 0x28E1, + 0x646F, 0x115A, 0x6470, 0x28E2, 0x6472, 0x269F, 0x6473, 0x26A0, 0x6474, + 0x269D, 0x6475, 0x26A2, 0x6476, 0x269E, 0x6477, 0x26B3, 0x6478, 0x0FDF, + 0x6479, 0x115B, 0x647A, 0x0FE1, 0x647B, 0x0FE6, 0x647D, 0x26A1, 0x647F, + 0x26AD, 0x6482, 0x26A6, 0x6485, 0x28E5, 0x6487, 0x0FDB, 0x6488, 0x115E, + 0x6489, 0x2B54, 0x648A, 0x28EA, 0x648B, 0x28E9, 0x648C, 0x28EB, 0x648F, + 0x28E8, 0x6490, 0x115F, 0x6492, 0x1165, 0x6493, 0x1162, 0x6495, 0x1163, + 0x6496, 0x28E3, 0x6497, 0x28E6, 0x6498, 0x28F0, 0x6499, 0x116B, 0x649A, + 0x1169, 0x649C, 0x28E7, 0x649D, 0x2154, 0x649E, 0x115C, 0x649F, 0x28ED, + 0x64A0, 0x28E4, 0x64A2, 0x116C, 0x64A3, 0x28EC, 0x64A4, 0x0FDE, 0x64A5, + 0x1161, 0x64A6, 0x26A4, 0x64A9, 0x1164, 0x64AB, 0x1168, 0x64AC, 0x116A, + 0x64AD, 0x1167, 0x64AE, 0x1166, 0x64B0, 0x1160, 0x64B1, 0x28EF, 0x64B2, + 0x115D, 0x64B3, 0x116D, 0x64BB, 0x12BB, 0x64BC, 0x12BC, 0x64BD, 0x2B53, + 0x64BE, 0x12C5, 0x64BF, 0x12C2, 0x64C1, 0x12B9, 0x64C2, 0x12C0, 0x64C3, + 0x2B55, 0x64C4, 0x12BE, 0x64C5, 0x12B8, 0x64C7, 0x12BF, 0x64C9, 0x2B52, + 0x64CA, 0x13D8, 0x64CB, 0x12BA, 0x64CD, 0x12C1, 0x64CE, 0x13D7, 0x64CF, + 0x2B51, 0x64D0, 0x2B50, 0x64D2, 0x12C3, 0x64D4, 0x12C4, 0x64D6, 0x2B4F, + 0x64D7, 0x2B4E, 0x64D8, 0x13D9, 0x64D9, 0x2B58, 0x64DA, 0x12BD, 0x64DB, + 0x2B56, 0x64E0, 0x13DA, 0x64E2, 0x13DF, 0x64E3, 0x2D6A, 0x64E4, 0x2D6C, + 0x64E6, 0x13DC, 0x64E8, 0x2D6D, 0x64E9, 0x2D69, 0x64EB, 0x2D6B, 0x64EC, + 0x13DD, 0x64ED, 0x13E0, 0x64EF, 0x2D68, 0x64F0, 0x13DB, 0x64F1, 0x13DE, + 0x64F2, 0x14D3, 0x64F3, 0x2B57, 0x64F4, 0x14D2, 0x64F7, 0x14D8, 0x64F8, + 0x2F2B, 0x64FA, 0x14D6, 0x64FB, 0x14D7, 0x64FC, 0x2F2E, 0x64FD, 0x2F2A, + 0x64FE, 0x14D4, 0x64FF, 0x2F28, 0x6500, 0x1582, 0x6501, 0x2F2C, 0x6503, + 0x2F2D, 0x6504, 0x2F29, 0x6506, 0x14D5, 0x6507, 0x3090, 0x6509, 0x3093, + 0x650C, 0x3094, 0x650D, 0x3092, 0x650E, 0x3095, 0x650F, 0x1583, 0x6510, + 0x3091, 0x6513, 0x31D7, 0x6514, 0x1617, 0x6515, 0x31D6, 0x6516, 0x31D5, + 0x6517, 0x31D4, 0x6518, 0x1616, 0x6519, 0x1618, 0x651B, 0x32D2, 0x651C, + 0x1673, 0x651D, 0x1672, 0x6520, 0x3382, 0x6521, 0x3381, 0x6522, 0x3384, + 0x6523, 0x16F9, 0x6524, 0x16C5, 0x6525, 0x341B, 0x6526, 0x3383, 0x6529, + 0x341A, 0x652A, 0x16FB, 0x652B, 0x16FA, 0x652C, 0x1721, 0x652D, 0x3484, + 0x652E, 0x34CA, 0x652F, 0x02D5, 0x6532, 0x216C, 0x6533, 0x2B59, 0x6534, + 0x022C, 0x6536, 0x03D7, 0x6537, 0x17F6, 0x6538, 0x04B9, 0x6539, 0x04B7, + 0x653B, 0x04B8, 0x653D, 0x19A1, 0x653E, 0x05F3, 0x653F, 0x0741, 0x6541, + 0x1B01, 0x6543, 0x1B02, 0x6545, 0x0742, 0x6546, 0x1CBF, 0x6548, 0x08D6, + 0x6549, 0x08D7, 0x654A, 0x1CBE, 0x654F, 0x0ABD, 0x6551, 0x0AB9, 0x6553, + 0x1F0C, 0x6554, 0x0AC0, 0x6555, 0x0ABF, 0x6556, 0x0AB8, 0x6557, 0x0ABB, + 0x6558, 0x0ABE, 0x6559, 0x0ABA, 0x655C, 0x2170, 0x655D, 0x0AB7, 0x655E, + 0x0C70, 0x6562, 0x0C72, 0x6563, 0x0C73, 0x6564, 0x216F, 0x6565, 0x2172, + 0x6566, 0x0C71, 0x6567, 0x216D, 0x6568, 0x2171, 0x656A, 0x216E, 0x656C, + 0x0E2B, 0x656F, 0x2409, 0x6572, 0x0FE7, 0x6573, 0x26B4, 0x6574, 0x12C6, + 0x6575, 0x116E, 0x6576, 0x28F1, 0x6577, 0x116F, 0x6578, 0x1170, 0x6579, + 0x28F3, 0x657A, 0x28F2, 0x657B, 0x28F4, 0x657C, 0x2B5B, 0x657F, 0x2B5A, + 0x6580, 0x2D6F, 0x6581, 0x2D6E, 0x6582, 0x13E1, 0x6583, 0x13E2, 0x6584, + 0x3096, 0x6587, 0x02D6, 0x658C, 0x2173, 0x6590, 0x0C75, 0x6591, 0x0C74, + 0x6592, 0x240A, 0x6594, 0x2F2F, 0x6595, 0x1674, 0x6596, 0x341C, 0x6597, + 0x02D7, 0x6599, 0x08D8, 0x659B, 0x0AC2, 0x659C, 0x0AC1, 0x659D, 0x2174, + 0x659E, 0x2175, 0x659F, 0x0E2C, 0x65A0, 0x26B5, 0x65A1, 0x0FE8, 0x65A2, + 0x2B5C, 0x65A4, 0x02D8, 0x65A5, 0x0346, 0x65A7, 0x05F4, 0x65A8, 0x19A2, + 0x65AA, 0x1B03, 0x65AB, 0x0743, 0x65AC, 0x0AC3, 0x65AE, 0x2176, 0x65AF, + 0x0C76, 0x65B0, 0x0E2D, 0x65B2, 0x28F5, 0x65B3, 0x28F6, 0x65B6, 0x2D70, + 0x65B7, 0x14D9, 0x65B8, 0x34CB, 0x65B9, 0x02D9, 0x65BB, 0x19A3, 0x65BC, + 0x05F5, 0x65BD, 0x0744, 0x65BF, 0x1B04, 0x65C1, 0x08D9, 0x65C2, 0x1CC3, + 0x65C3, 0x1CC1, 0x65C4, 0x1CC2, 0x65C5, 0x08DA, 0x65C6, 0x1CC0, 0x65CB, + 0x0AC5, 0x65CC, 0x0AC6, 0x65CD, 0x1F0D, 0x65CE, 0x0AC7, 0x65CF, 0x0AC4, + 0x65D0, 0x2177, 0x65D2, 0x2178, 0x65D3, 0x240B, 0x65D6, 0x0FEA, 0x65D7, + 0x0FE9, 0x65DA, 0x2D71, 0x65DB, 0x2F30, 0x65DD, 0x3098, 0x65DE, 0x3097, + 0x65DF, 0x31D8, 0x65E0, 0x022D, 0x65E1, 0x1789, 0x65E2, 0x0745, 0x65E5, + 0x02DA, 0x65E6, 0x0347, 0x65E8, 0x03D9, 0x65E9, 0x03D8, 0x65EC, 0x03DA, + 0x65ED, 0x03DB, 0x65EE, 0x17F8, 0x65EF, 0x17F7, 0x65F0, 0x189E, 0x65F1, + 0x04BA, 0x65F2, 0x18A1, 0x65F3, 0x18A0, 0x65F4, 0x189F, 0x65F5, 0x18A2, + 0x65FA, 0x05F6, 0x65FB, 0x19A9, 0x65FC, 0x19A5, 0x65FD, 0x19AE, 0x6600, + 0x05FD, 0x6602, 0x05FB, 0x6603, 0x19AA, 0x6604, 0x19A6, 0x6605, 0x19AD, + 0x6606, 0x05FA, 0x6607, 0x0601, 0x6608, 0x19A8, 0x6609, 0x19A4, 0x660A, + 0x0600, 0x660B, 0x19AB, 0x660C, 0x05F9, 0x660D, 0x19AC, 0x660E, 0x05FC, + 0x660F, 0x05FE, 0x6610, 0x19B0, 0x6611, 0x19AF, 0x6612, 0x19A7, 0x6613, + 0x05F8, 0x6614, 0x05F7, 0x6615, 0x05FF, 0x661C, 0x1B09, 0x661D, 0x1B0F, + 0x661F, 0x074B, 0x6620, 0x0748, 0x6621, 0x1B06, 0x6622, 0x1B0B, 0x6624, + 0x074E, 0x6625, 0x0746, 0x6626, 0x1B0A, 0x6627, 0x0749, 0x6628, 0x074C, + 0x662B, 0x1B0D, 0x662D, 0x0747, 0x662E, 0x1B12, 0x662F, 0x074A, 0x6631, + 0x074D, 0x6632, 0x1B07, 0x6633, 0x1B0C, 0x6634, 0x1B10, 0x6635, 0x1B08, + 0x6636, 0x1B05, 0x6639, 0x1B11, 0x663A, 0x1B0E, 0x6641, 0x08E2, 0x6642, + 0x08DB, 0x6643, 0x08DE, 0x6645, 0x08E1, 0x6647, 0x1CC6, 0x6649, 0x08DC, + 0x664A, 0x1CC4, 0x664C, 0x08E0, 0x664F, 0x08DD, 0x6651, 0x1CC7, 0x6652, + 0x08DF, 0x6659, 0x1F11, 0x665A, 0x0AC9, 0x665B, 0x1F10, 0x665C, 0x1F12, + 0x665D, 0x0AC8, 0x665E, 0x0ACD, 0x665F, 0x1CC5, 0x6661, 0x1F0F, 0x6662, + 0x1F13, 0x6664, 0x0ACA, 0x6665, 0x1F0E, 0x6666, 0x0ACC, 0x6668, 0x0ACB, + 0x666A, 0x217F, 0x666C, 0x217A, 0x666E, 0x0C77, 0x666F, 0x0C7B, 0x6670, + 0x0C78, 0x6671, 0x217D, 0x6672, 0x2180, 0x6674, 0x0C79, 0x6676, 0x0C7A, + 0x6677, 0x0C7F, 0x6678, 0x2414, 0x6679, 0x217E, 0x667A, 0x0C7D, 0x667B, + 0x217B, 0x667C, 0x2179, 0x667E, 0x0C7E, 0x6680, 0x217C, 0x6684, 0x0E33, + 0x6686, 0x240C, 0x6687, 0x0E30, 0x6688, 0x0E31, 0x6689, 0x0E2F, 0x668A, + 0x2411, 0x668B, 0x2410, 0x668C, 0x240D, 0x668D, 0x0E35, 0x6690, 0x240F, + 0x6691, 0x0C7C, 0x6694, 0x2413, 0x6695, 0x240E, 0x6696, 0x0E32, 0x6697, + 0x0E2E, 0x6698, 0x0E34, 0x6699, 0x2412, 0x669D, 0x0FED, 0x669F, 0x26B8, + 0x66A0, 0x26B7, 0x66A1, 0x26B6, 0x66A2, 0x0FEB, 0x66A8, 0x0FEC, 0x66A9, + 0x28F9, 0x66AA, 0x28FC, 0x66AB, 0x1172, 0x66AE, 0x1171, 0x66AF, 0x28FD, + 0x66B0, 0x28F8, 0x66B1, 0x1174, 0x66B2, 0x28FA, 0x66B4, 0x1173, 0x66B5, + 0x28F7, 0x66B7, 0x28FB, 0x66B8, 0x12CC, 0x66B9, 0x12C9, 0x66BA, 0x2B65, + 0x66BB, 0x2B64, 0x66BD, 0x2B63, 0x66BE, 0x2B5E, 0x66C0, 0x2B5F, 0x66C4, + 0x12CA, 0x66C6, 0x12C7, 0x66C7, 0x12CB, 0x66C8, 0x2B5D, 0x66C9, 0x12C8, + 0x66CA, 0x2B60, 0x66CB, 0x2B61, 0x66CC, 0x2B66, 0x66CF, 0x2B62, 0x66D2, + 0x2D72, 0x66D6, 0x13E4, 0x66D8, 0x2F33, 0x66D9, 0x13E3, 0x66DA, 0x2F31, + 0x66DB, 0x2F32, 0x66DC, 0x14DA, 0x66DD, 0x1585, 0x66DE, 0x3099, 0x66E0, + 0x1584, 0x66E3, 0x31DA, 0x66E4, 0x31DB, 0x66E6, 0x1619, 0x66E8, 0x31D9, + 0x66E9, 0x1675, 0x66EB, 0x341D, 0x66EC, 0x16FC, 0x66ED, 0x3485, 0x66EE, + 0x3486, 0x66F0, 0x02DB, 0x66F2, 0x03DC, 0x66F3, 0x03DD, 0x66F4, 0x04BB, + 0x66F6, 0x19B1, 0x66F7, 0x074F, 0x66F8, 0x08E3, 0x66F9, 0x0ACE, 0x66FC, + 0x0A1F, 0x66FE, 0x0C80, 0x66FF, 0x0C81, 0x6700, 0x0BF0, 0x6701, 0x2181, + 0x6703, 0x0E36, 0x6704, 0x26BA, 0x6705, 0x26B9, 0x6708, 0x02DC, 0x6709, + 0x03DE, 0x670A, 0x19B2, 0x670B, 0x0603, 0x670D, 0x0602, 0x670F, 0x1B13, + 0x6710, 0x1B14, 0x6712, 0x1CC8, 0x6713, 0x1CC9, 0x6714, 0x08E4, 0x6715, + 0x08E5, 0x6717, 0x08E6, 0x6718, 0x1F14, 0x671B, 0x0AD0, 0x671D, 0x0C83, + 0x671F, 0x0C82, 0x6720, 0x2415, 0x6721, 0x2522, 0x6722, 0x26BB, 0x6723, + 0x2B67, 0x6726, 0x14DB, 0x6727, 0x161A, 0x6728, 0x02DD, 0x672A, 0x034A, + 0x672B, 0x034B, 0x672C, 0x0349, 0x672D, 0x034C, 0x672E, 0x0348, 0x6731, + 0x03E1, 0x6733, 0x1800, 0x6734, 0x03E0, 0x6735, 0x03E2, 0x6738, 0x17FB, + 0x6739, 0x17FA, 0x673A, 0x17FD, 0x673B, 0x17FC, 0x673C, 0x17FF, 0x673D, + 0x03DF, 0x673E, 0x17F9, 0x673F, 0x17FE, 0x6745, 0x18A3, 0x6746, 0x04C5, + 0x6747, 0x18A4, 0x6748, 0x18A8, 0x6749, 0x04C4, 0x674B, 0x18AC, 0x674C, + 0x18A7, 0x674D, 0x18AA, 0x674E, 0x04BD, 0x674F, 0x04BE, 0x6750, 0x04BF, + 0x6751, 0x04C0, 0x6753, 0x04C7, 0x6755, 0x18A6, 0x6756, 0x04C2, 0x6757, + 0x04C8, 0x6759, 0x18A5, 0x675A, 0x18AB, 0x675C, 0x04C1, 0x675D, 0x18A9, + 0x675E, 0x04C3, 0x675F, 0x04BC, 0x6760, 0x04C6, 0x676A, 0x0618, 0x676C, + 0x19B4, 0x676D, 0x0604, 0x676F, 0x060E, 0x6770, 0x060F, 0x6771, 0x0607, + 0x6772, 0x0619, 0x6773, 0x0609, 0x6774, 0x19BC, 0x6775, 0x0614, 0x6776, + 0x19B7, 0x6777, 0x060A, 0x6778, 0x19C6, 0x6779, 0x19C7, 0x677A, 0x19BF, + 0x677B, 0x19B8, 0x677C, 0x0617, 0x677D, 0x19C4, 0x677E, 0x0612, 0x677F, + 0x0610, 0x6781, 0x19C5, 0x6783, 0x19C3, 0x6784, 0x19BB, 0x6785, 0x19B3, + 0x6786, 0x19BA, 0x6787, 0x060B, 0x6789, 0x0611, 0x678B, 0x0605, 0x678C, + 0x19BE, 0x678D, 0x19BD, 0x678E, 0x19B5, 0x6790, 0x0613, 0x6791, 0x19C1, + 0x6792, 0x19B6, 0x6793, 0x0616, 0x6794, 0x19C8, 0x6795, 0x0606, 0x6797, + 0x060D, 0x6798, 0x19B9, 0x6799, 0x19C2, 0x679A, 0x0615, 0x679C, 0x0608, + 0x679D, 0x060C, 0x679F, 0x19C0, 0x67AE, 0x1B34, 0x67AF, 0x0757, 0x67B0, + 0x0764, 0x67B2, 0x1B2F, 0x67B3, 0x1B25, 0x67B4, 0x075D, 0x67B5, 0x1B23, + 0x67B6, 0x0756, 0x67B7, 0x1B1E, 0x67B8, 0x0760, 0x67B9, 0x1B2B, 0x67BA, + 0x1B18, 0x67BB, 0x1B1A, 0x67C0, 0x1B1D, 0x67C1, 0x1B15, 0x67C2, 0x1B2A, + 0x67C3, 0x1B3A, 0x67C4, 0x075B, 0x67C5, 0x1B1F, 0x67C6, 0x1B31, 0x67C8, + 0x1B17, 0x67C9, 0x1B38, 0x67CA, 0x1B39, 0x67CB, 0x1B3C, 0x67CC, 0x1B33, + 0x67CD, 0x1B24, 0x67CE, 0x1B2C, 0x67CF, 0x0761, 0x67D0, 0x0754, 0x67D1, + 0x075C, 0x67D2, 0x0768, 0x67D3, 0x0751, 0x67D4, 0x0753, 0x67D8, 0x1B1C, + 0x67D9, 0x0765, 0x67DA, 0x075E, 0x67DB, 0x1B36, 0x67DC, 0x1B19, 0x67DD, + 0x0767, 0x67DE, 0x0762, 0x67DF, 0x1B22, 0x67E2, 0x0766, 0x67E3, 0x1B29, + 0x67E4, 0x1B21, 0x67E5, 0x075F, 0x67E6, 0x1B35, 0x67E7, 0x1B2D, 0x67E9, + 0x0759, 0x67EA, 0x1B3B, 0x67EB, 0x1B20, 0x67EC, 0x0755, 0x67ED, 0x1B32, + 0x67EE, 0x1B28, 0x67EF, 0x075A, 0x67F0, 0x1B2E, 0x67F1, 0x0752, 0x67F2, + 0x1B16, 0x67F3, 0x0763, 0x67F4, 0x08F5, 0x67F5, 0x0758, 0x67F6, 0x1B27, + 0x67F7, 0x1B26, 0x67F8, 0x1B1B, 0x67FA, 0x1B37, 0x67FC, 0x1B30, 0x67FF, + 0x0750, 0x6812, 0x1CDD, 0x6813, 0x08FC, 0x6814, 0x1CDE, 0x6816, 0x1CD2, + 0x6817, 0x08F1, 0x6818, 0x08FD, 0x681A, 0x1CCB, 0x681C, 0x1CD4, 0x681D, + 0x1CDC, 0x681F, 0x1CCA, 0x6820, 0x1CE5, 0x6821, 0x08E7, 0x6825, 0x1CE4, + 0x6826, 0x1CDF, 0x6828, 0x1CE0, 0x6829, 0x08EF, 0x682A, 0x08FA, 0x682B, + 0x1CD6, 0x682D, 0x1CD7, 0x682E, 0x1CE1, 0x682F, 0x1CD8, 0x6831, 0x1CD3, + 0x6832, 0x1CCD, 0x6833, 0x1CCE, 0x6834, 0x1CDB, 0x6835, 0x1CD5, 0x6838, + 0x08E8, 0x6839, 0x08EC, 0x683A, 0x1CE3, 0x683B, 0x1CCF, 0x683C, 0x08F8, + 0x683D, 0x08F4, 0x6840, 0x08F7, 0x6841, 0x08FE, 0x6842, 0x08ED, 0x6843, + 0x08F9, 0x6844, 0x1CDA, 0x6845, 0x08FB, 0x6846, 0x08EA, 0x6848, 0x08E9, + 0x6849, 0x1CCC, 0x684B, 0x1CD0, 0x684C, 0x08F2, 0x684D, 0x1CE2, 0x684E, + 0x1CD9, 0x684F, 0x1CD1, 0x6850, 0x08F6, 0x6851, 0x08F3, 0x6853, 0x08EB, + 0x6854, 0x08EE, 0x686B, 0x1F29, 0x686D, 0x1F19, 0x686E, 0x1F1A, 0x686F, + 0x1F1E, 0x6871, 0x1F2D, 0x6872, 0x1F2A, 0x6874, 0x1F23, 0x6875, 0x1F22, + 0x6876, 0x0AD7, 0x6877, 0x1F26, 0x6878, 0x1F35, 0x6879, 0x1F15, 0x687B, + 0x1F36, 0x687C, 0x1F28, 0x687D, 0x1F3A, 0x687E, 0x1F2E, 0x687F, 0x0AD6, + 0x6880, 0x1F2C, 0x6881, 0x0AD1, 0x6882, 0x0AE6, 0x6883, 0x0ADC, 0x6885, + 0x0AE0, 0x6886, 0x0ADF, 0x6887, 0x1F16, 0x6889, 0x1F33, 0x688A, 0x1F39, + 0x688B, 0x1F31, 0x688C, 0x1F38, 0x688F, 0x1F25, 0x6890, 0x1F17, 0x6891, + 0x1F37, 0x6892, 0x1F27, 0x6893, 0x0AD4, 0x6894, 0x0AE1, 0x6896, 0x1F30, + 0x6897, 0x0ADA, 0x689B, 0x1F2F, 0x689C, 0x1F18, 0x689D, 0x0AE2, 0x689F, + 0x0AE4, 0x68A0, 0x1F32, 0x68A1, 0x0AE5, 0x68A2, 0x0AD3, 0x68A3, 0x1F1F, + 0x68A4, 0x1F34, 0x68A7, 0x0AD9, 0x68A8, 0x0AE3, 0x68A9, 0x1F21, 0x68AA, + 0x1F2B, 0x68AB, 0x1F1C, 0x68AC, 0x1F20, 0x68AD, 0x0ADE, 0x68AE, 0x1F1B, + 0x68AF, 0x0AD2, 0x68B0, 0x0ADB, 0x68B1, 0x0AD8, 0x68B2, 0x1F24, 0x68B3, + 0x08F0, 0x68B4, 0x2198, 0x68B5, 0x0AD5, 0x68C4, 0x0ADD, 0x68C6, 0x219B, + 0x68C7, 0x21B1, 0x68C8, 0x21A6, 0x68C9, 0x0C97, 0x68CB, 0x0C92, 0x68CC, + 0x2195, 0x68CD, 0x0C93, 0x68CE, 0x21A5, 0x68D0, 0x219E, 0x68D1, 0x21AB, + 0x68D2, 0x0C8F, 0x68D3, 0x2183, 0x68D4, 0x21AD, 0x68D5, 0x0C85, 0x68D6, + 0x218B, 0x68D7, 0x0C88, 0x68D8, 0x0C87, 0x68DA, 0x0C98, 0x68DC, 0x2185, + 0x68DD, 0x21A7, 0x68DE, 0x21A8, 0x68DF, 0x0C8A, 0x68E0, 0x0C86, 0x68E1, + 0x2193, 0x68E3, 0x0C91, 0x68E4, 0x218E, 0x68E6, 0x21A9, 0x68E7, 0x0C8D, + 0x68E8, 0x21A1, 0x68E9, 0x21AE, 0x68EA, 0x2188, 0x68EB, 0x218D, 0x68EC, + 0x2187, 0x68EE, 0x0C8C, 0x68EF, 0x219A, 0x68F0, 0x242B, 0x68F1, 0x2189, + 0x68F2, 0x0C90, 0x68F3, 0x2192, 0x68F4, 0x21AA, 0x68F5, 0x0C8B, 0x68F6, + 0x218F, 0x68F7, 0x218C, 0x68F8, 0x219D, 0x68F9, 0x0C8E, 0x68FA, 0x0C84, + 0x68FB, 0x0C9A, 0x68FC, 0x21A0, 0x68FD, 0x219F, 0x6904, 0x2184, 0x6905, + 0x0C89, 0x6906, 0x21AC, 0x6907, 0x2194, 0x6908, 0x2196, 0x690A, 0x21A3, + 0x690B, 0x21A2, 0x690C, 0x2182, 0x690D, 0x0C94, 0x690E, 0x0C96, 0x690F, + 0x218A, 0x6910, 0x2191, 0x6911, 0x2199, 0x6912, 0x0C95, 0x6913, 0x2190, + 0x6914, 0x219C, 0x6915, 0x21AF, 0x6917, 0x21A4, 0x6925, 0x21B0, 0x692A, + 0x2186, 0x692F, 0x243F, 0x6930, 0x0E3E, 0x6932, 0x243D, 0x6933, 0x2428, + 0x6934, 0x242D, 0x6935, 0x2426, 0x6937, 0x2439, 0x6938, 0x2418, 0x6939, + 0x241F, 0x693B, 0x2437, 0x693C, 0x2441, 0x693D, 0x2429, 0x693F, 0x241C, + 0x6940, 0x242F, 0x6941, 0x2434, 0x6942, 0x2420, 0x6944, 0x2431, 0x6945, + 0x241D, 0x6948, 0x2424, 0x6949, 0x2425, 0x694A, 0x0E40, 0x694B, 0x2438, + 0x694C, 0x2436, 0x694E, 0x2419, 0x694F, 0x243B, 0x6951, 0x243C, 0x6952, + 0x243E, 0x6953, 0x0E44, 0x6954, 0x0E3C, 0x6956, 0x1F1D, 0x6957, 0x2421, + 0x6958, 0x2433, 0x6959, 0x2422, 0x695A, 0x0E39, 0x695B, 0x0E49, 0x695C, + 0x243A, 0x695D, 0x0E47, 0x695E, 0x0E43, 0x695F, 0x2417, 0x6960, 0x0E3B, + 0x6962, 0x241A, 0x6963, 0x0E48, 0x6965, 0x242A, 0x6966, 0x2416, 0x6968, + 0x0E41, 0x6969, 0x242E, 0x696A, 0x241E, 0x696B, 0x0E42, 0x696C, 0x2427, + 0x696D, 0x0E38, 0x696E, 0x0C99, 0x696F, 0x2430, 0x6970, 0x2197, 0x6971, + 0x241B, 0x6974, 0x2435, 0x6975, 0x0E3D, 0x6976, 0x2432, 0x6977, 0x0E3A, + 0x6978, 0x242C, 0x6979, 0x0E45, 0x697A, 0x2423, 0x697B, 0x2440, 0x6982, + 0x0E3F, 0x6983, 0x24AF, 0x6986, 0x0E46, 0x698D, 0x26C9, 0x698E, 0x26C7, + 0x6990, 0x26DD, 0x6991, 0x26C5, 0x6993, 0x26D7, 0x6994, 0x0E37, 0x6995, + 0x0FF0, 0x6996, 0x26C1, 0x6997, 0x26DC, 0x6999, 0x26C6, 0x699A, 0x26D4, + 0x699B, 0x0FF5, 0x699C, 0x0FEE, 0x699E, 0x26DA, 0x69A0, 0x26BF, 0x69A1, + 0x26D9, 0x69A3, 0x1000, 0x69A4, 0x26D0, 0x69A5, 0x26E0, 0x69A6, 0x0FFE, + 0x69A7, 0x26C8, 0x69A8, 0x0FEF, 0x69A9, 0x26CA, 0x69AA, 0x26D8, 0x69AB, + 0x0FF8, 0x69AC, 0x26C3, 0x69AD, 0x0FFC, 0x69AE, 0x0FF2, 0x69AF, 0x26CC, + 0x69B0, 0x26C2, 0x69B1, 0x26BC, 0x69B3, 0x26D6, 0x69B4, 0x0FF9, 0x69B5, + 0x26DF, 0x69B6, 0x26BD, 0x69B7, 0x0FF6, 0x69B9, 0x26D2, 0x69BB, 0x0FF7, + 0x69BC, 0x26C4, 0x69BD, 0x26CF, 0x69BE, 0x26CB, 0x69BF, 0x26CD, 0x69C1, + 0x0FF1, 0x69C2, 0x26DE, 0x69C3, 0x0FFF, 0x69C4, 0x26CE, 0x69C6, 0x26E1, + 0x69C9, 0x26BE, 0x69CA, 0x26D3, 0x69CB, 0x0FF4, 0x69CC, 0x0FFD, 0x69CD, + 0x0FFB, 0x69CE, 0x26C0, 0x69CF, 0x26D5, 0x69D0, 0x0FFA, 0x69D3, 0x0FF3, + 0x69D4, 0x26D1, 0x69D9, 0x26DB, 0x69E2, 0x2909, 0x69E4, 0x2905, 0x69E5, + 0x2901, 0x69E6, 0x2915, 0x69E7, 0x2912, 0x69E8, 0x1177, 0x69EB, 0x2919, + 0x69EC, 0x2908, 0x69ED, 0x1182, 0x69EE, 0x290F, 0x69F1, 0x2904, 0x69F2, + 0x290E, 0x69F3, 0x117F, 0x69F4, 0x2922, 0x69F6, 0x291F, 0x69F7, 0x2911, + 0x69F8, 0x2902, 0x69FB, 0x2916, 0x69FC, 0x2918, 0x69FD, 0x117B, 0x69FE, + 0x290C, 0x69FF, 0x2907, 0x6A00, 0x28FE, 0x6A01, 0x1178, 0x6A02, 0x1180, + 0x6A04, 0x291B, 0x6A05, 0x1181, 0x6A06, 0x28FF, 0x6A07, 0x2921, 0x6A08, + 0x2914, 0x6A09, 0x291A, 0x6A0A, 0x117E, 0x6A0D, 0x2917, 0x6A0F, 0x291E, + 0x6A11, 0x1183, 0x6A13, 0x117D, 0x6A14, 0x2910, 0x6A15, 0x2903, 0x6A16, + 0x2923, 0x6A17, 0x2900, 0x6A18, 0x291C, 0x6A19, 0x117A, 0x6A1B, 0x290A, + 0x6A1D, 0x290B, 0x6A1E, 0x1179, 0x6A1F, 0x1176, 0x6A20, 0x2906, 0x6A21, + 0x117C, 0x6A23, 0x1175, 0x6A25, 0x291D, 0x6A26, 0x2920, 0x6A27, 0x290D, + 0x6A28, 0x2B74, 0x6A32, 0x2B6C, 0x6A34, 0x2B68, 0x6A35, 0x12D9, 0x6A38, + 0x12CE, 0x6A39, 0x12D3, 0x6A3A, 0x12CF, 0x6A3B, 0x2B76, 0x6A3C, 0x2B81, + 0x6A3D, 0x12CD, 0x6A3E, 0x2B6E, 0x6A3F, 0x2B77, 0x6A40, 0x2913, 0x6A41, + 0x2B78, 0x6A44, 0x12D4, 0x6A46, 0x2B87, 0x6A47, 0x12D8, 0x6A48, 0x12DB, + 0x6A49, 0x2B6A, 0x6A4B, 0x12D7, 0x6A4D, 0x2B85, 0x6A4E, 0x2B86, 0x6A4F, + 0x2B7C, 0x6A50, 0x2B7B, 0x6A51, 0x2B73, 0x6A54, 0x2B7D, 0x6A55, 0x2B84, + 0x6A56, 0x2B83, 0x6A58, 0x12D2, 0x6A59, 0x12D0, 0x6A5A, 0x2B75, 0x6A5B, + 0x2B72, 0x6A5D, 0x2B6F, 0x6A5E, 0x2B82, 0x6A5F, 0x12DA, 0x6A60, 0x2B80, + 0x6A61, 0x12D6, 0x6A62, 0x12D5, 0x6A64, 0x2B7A, 0x6A66, 0x2B69, 0x6A67, + 0x2B6B, 0x6A68, 0x2B6D, 0x6A69, 0x2B7F, 0x6A6A, 0x2B79, 0x6A6B, 0x12D1, + 0x6A6D, 0x2B70, 0x6A6F, 0x2B7E, 0x6A76, 0x2B71, 0x6A7E, 0x13EC, 0x6A7F, + 0x2D84, 0x6A80, 0x13E5, 0x6A81, 0x2D75, 0x6A83, 0x2D80, 0x6A84, 0x13E7, + 0x6A85, 0x2D87, 0x6A87, 0x2D7C, 0x6A89, 0x2D77, 0x6A8C, 0x2D88, 0x6A8D, + 0x2D73, 0x6A8E, 0x2D7E, 0x6A90, 0x13EE, 0x6A91, 0x2D83, 0x6A92, 0x2D89, + 0x6A93, 0x2D7D, 0x6A94, 0x13E6, 0x6A95, 0x2D7F, 0x6A96, 0x2D74, 0x6A97, + 0x13ED, 0x6A9A, 0x2D86, 0x6A9B, 0x2D79, 0x6A9C, 0x13E9, 0x6A9E, 0x2D7B, + 0x6A9F, 0x2D78, 0x6AA0, 0x13EF, 0x6AA1, 0x2D7A, 0x6AA2, 0x13E8, 0x6AA3, + 0x13EB, 0x6AA4, 0x2D82, 0x6AA5, 0x2D76, 0x6AA6, 0x2D85, 0x6AA8, 0x2D81, + 0x6AAC, 0x14DD, 0x6AAD, 0x2F3E, 0x6AAE, 0x14E2, 0x6AAF, 0x14E3, 0x6AB3, + 0x14DC, 0x6AB4, 0x2F3D, 0x6AB6, 0x2F3A, 0x6AB7, 0x2F3B, 0x6AB8, 0x14E0, + 0x6AB9, 0x2F35, 0x6ABA, 0x2F39, 0x6ABB, 0x14DF, 0x6ABD, 0x2F36, 0x6AC2, + 0x14E1, 0x6AC3, 0x14DE, 0x6AC5, 0x2F34, 0x6AC6, 0x2F38, 0x6AC7, 0x2F3C, + 0x6ACB, 0x309F, 0x6ACC, 0x309C, 0x6ACD, 0x30A5, 0x6ACF, 0x30A4, 0x6AD0, + 0x30A2, 0x6AD1, 0x309D, 0x6AD3, 0x1589, 0x6AD9, 0x309E, 0x6ADA, 0x1588, + 0x6ADB, 0x13EA, 0x6ADC, 0x30A1, 0x6ADD, 0x1587, 0x6ADE, 0x30A6, 0x6ADF, + 0x30A0, 0x6AE0, 0x309B, 0x6AE1, 0x2F37, 0x6AE5, 0x1586, 0x6AE7, 0x309A, + 0x6AE8, 0x31DF, 0x6AEA, 0x31DE, 0x6AEB, 0x30A3, 0x6AEC, 0x161B, 0x6AEE, + 0x31E2, 0x6AEF, 0x31E3, 0x6AF0, 0x31DD, 0x6AF1, 0x31E1, 0x6AF3, 0x31DC, + 0x6AF8, 0x32D6, 0x6AF9, 0x31E0, 0x6AFA, 0x1678, 0x6AFB, 0x1676, 0x6AFC, + 0x32D4, 0x6B00, 0x32D7, 0x6B02, 0x32D3, 0x6B03, 0x32D5, 0x6B04, 0x1677, + 0x6B08, 0x3386, 0x6B09, 0x3387, 0x6B0A, 0x16C6, 0x6B0B, 0x3385, 0x6B0F, + 0x3420, 0x6B10, 0x16FD, 0x6B11, 0x341E, 0x6B12, 0x341F, 0x6B13, 0x3487, + 0x6B16, 0x1743, 0x6B17, 0x34CE, 0x6B18, 0x34CC, 0x6B19, 0x34CD, 0x6B1A, + 0x34CF, 0x6B1E, 0x3534, 0x6B20, 0x02DE, 0x6B21, 0x03E3, 0x6B23, 0x061A, + 0x6B25, 0x19C9, 0x6B28, 0x1B3D, 0x6B2C, 0x1CE6, 0x6B2D, 0x1CE8, 0x6B2F, + 0x1CE7, 0x6B31, 0x1CE9, 0x6B32, 0x0AE7, 0x6B33, 0x1F3C, 0x6B34, 0x1CEA, + 0x6B36, 0x1F3B, 0x6B37, 0x1F3D, 0x6B38, 0x1F3E, 0x6B39, 0x21B2, 0x6B3A, + 0x0C9C, 0x6B3B, 0x21B3, 0x6B3C, 0x21B5, 0x6B3D, 0x0C9D, 0x6B3E, 0x0C9B, + 0x6B3F, 0x21B4, 0x6B41, 0x2447, 0x6B42, 0x2445, 0x6B43, 0x2444, 0x6B45, + 0x2443, 0x6B46, 0x2442, 0x6B47, 0x0E4A, 0x6B48, 0x2446, 0x6B49, 0x1001, + 0x6B4A, 0x26E2, 0x6B4B, 0x26E4, 0x6B4C, 0x1002, 0x6B4D, 0x26E3, 0x6B4E, + 0x1185, 0x6B50, 0x1184, 0x6B51, 0x2924, 0x6B54, 0x2B89, 0x6B55, 0x2B88, + 0x6B56, 0x2B8A, 0x6B59, 0x12DC, 0x6B5B, 0x2D8A, 0x6B5C, 0x13F0, 0x6B5E, + 0x2F3F, 0x6B5F, 0x14E4, 0x6B60, 0x30A7, 0x6B61, 0x16C7, 0x6B62, 0x02DF, + 0x6B63, 0x034D, 0x6B64, 0x03E4, 0x6B65, 0x04C9, 0x6B66, 0x061B, 0x6B67, + 0x061C, 0x6B6A, 0x0769, 0x6B6D, 0x1CEB, 0x6B72, 0x0E4B, 0x6B76, 0x29A2, + 0x6B77, 0x12DD, 0x6B78, 0x14E5, 0x6B79, 0x02E0, 0x6B7B, 0x03E5, 0x6B7E, + 0x19CB, 0x6B7F, 0x061D, 0x6B80, 0x19CA, 0x6B82, 0x1B3E, 0x6B83, 0x076A, + 0x6B84, 0x1B3F, 0x6B86, 0x076B, 0x6B88, 0x1CED, 0x6B89, 0x0900, 0x6B8A, + 0x08FF, 0x6B8C, 0x1F43, 0x6B8D, 0x1F41, 0x6B8E, 0x1F42, 0x6B8F, 0x1F40, + 0x6B91, 0x1F3F, 0x6B94, 0x21B6, 0x6B95, 0x21B9, 0x6B96, 0x0C9F, 0x6B97, + 0x21B7, 0x6B98, 0x0C9E, 0x6B99, 0x21B8, 0x6B9B, 0x2448, 0x6B9E, 0x26E5, + 0x6B9F, 0x26E6, 0x6BA0, 0x26E7, 0x6BA2, 0x2927, 0x6BA3, 0x2926, 0x6BA4, + 0x1186, 0x6BA5, 0x2925, 0x6BA6, 0x2928, 0x6BA7, 0x2B8B, 0x6BAA, 0x2B8C, + 0x6BAB, 0x2B8D, 0x6BAD, 0x2D8B, 0x6BAE, 0x13F1, 0x6BAF, 0x14E6, 0x6BB0, + 0x30A8, 0x6BB2, 0x1679, 0x6BB3, 0x178A, 0x6BB5, 0x076C, 0x6BB6, 0x1B40, + 0x6BB7, 0x0901, 0x6BBA, 0x0AE8, 0x6BBC, 0x0CA0, 0x6BBD, 0x21BA, 0x6BBF, + 0x0E4D, 0x6BC0, 0x0E4C, 0x6BC3, 0x26E8, 0x6BC4, 0x26E9, 0x6BC5, 0x1187, + 0x6BC6, 0x1188, 0x6BC7, 0x2B8F, 0x6BC8, 0x2B8E, 0x6BC9, 0x2F40, 0x6BCA, + 0x3421, 0x6BCB, 0x02E1, 0x6BCC, 0x178B, 0x6BCD, 0x034E, 0x6BCF, 0x04CA, + 0x6BD0, 0x18AD, 0x6BD2, 0x076D, 0x6BD3, 0x0E4E, 0x6BD4, 0x02E2, 0x6BD6, + 0x1B41, 0x6BD7, 0x076E, 0x6BD8, 0x1B42, 0x6BDA, 0x13F2, 0x6BDB, 0x02E3, + 0x6BDE, 0x19CC, 0x6BE0, 0x1B43, 0x6BE2, 0x1CF2, 0x6BE3, 0x1CF1, 0x6BE4, + 0x1CEF, 0x6BE6, 0x1CEE, 0x6BE7, 0x1CF3, 0x6BE8, 0x1CF0, 0x6BEB, 0x0AE9, + 0x6BEC, 0x0AEA, 0x6BEF, 0x0CA1, 0x6BF0, 0x21BB, 0x6BF2, 0x21BC, 0x6BF3, + 0x21BD, 0x6BF7, 0x244C, 0x6BF8, 0x244D, 0x6BF9, 0x244B, 0x6BFB, 0x2449, + 0x6BFC, 0x244A, 0x6BFD, 0x0E4F, 0x6BFE, 0x26EA, 0x6BFF, 0x292B, 0x6C00, + 0x292A, 0x6C01, 0x2929, 0x6C02, 0x292C, 0x6C03, 0x2B91, 0x6C04, 0x2B90, + 0x6C05, 0x12DE, 0x6C06, 0x2B92, 0x6C08, 0x13F3, 0x6C09, 0x2D8C, 0x6C0B, + 0x2F41, 0x6C0C, 0x30A9, 0x6C0D, 0x3388, 0x6C0F, 0x02E4, 0x6C10, 0x0350, + 0x6C11, 0x034F, 0x6C13, 0x061E, 0x6C14, 0x178C, 0x6C15, 0x17AA, 0x6C16, + 0x03E6, 0x6C18, 0x1801, 0x6C19, 0x18AE, 0x6C1A, 0x18AF, 0x6C1B, 0x061F, + 0x6C1D, 0x19CD, 0x6C1F, 0x076F, 0x6C20, 0x1B44, 0x6C21, 0x1B45, 0x6C23, + 0x0902, 0x6C24, 0x0906, 0x6C25, 0x1CF4, 0x6C26, 0x0905, 0x6C27, 0x0903, + 0x6C28, 0x0904, 0x6C2A, 0x1F44, 0x6C2B, 0x0AEB, 0x6C2C, 0x0CA4, 0x6C2E, + 0x0CA2, 0x6C2F, 0x0CA3, 0x6C30, 0x21BE, 0x6C33, 0x1003, 0x6C34, 0x02E5, + 0x6C36, 0x17AB, 0x6C38, 0x0351, 0x6C3B, 0x17AE, 0x6C3E, 0x0354, 0x6C3F, + 0x17AD, 0x6C40, 0x0353, 0x6C41, 0x0352, 0x6C42, 0x04CB, 0x6C43, 0x17AC, + 0x6C46, 0x1802, 0x6C4A, 0x1806, 0x6C4B, 0x1808, 0x6C4C, 0x1809, 0x6C4D, + 0x03F0, 0x6C4E, 0x03F1, 0x6C4F, 0x1805, 0x6C50, 0x03EC, 0x6C52, 0x1803, + 0x6C54, 0x1807, 0x6C55, 0x03ED, 0x6C57, 0x03E8, 0x6C59, 0x03E9, 0x6C5B, + 0x03EF, 0x6C5C, 0x1804, 0x6C5D, 0x03E7, 0x6C5E, 0x04CC, 0x6C5F, 0x03EA, + 0x6C60, 0x03EB, 0x6C61, 0x03EE, 0x6C65, 0x18C0, 0x6C66, 0x18BE, 0x6C67, + 0x18B1, 0x6C68, 0x04D8, 0x6C69, 0x18B8, 0x6C6A, 0x04D3, 0x6C6B, 0x18B2, + 0x6C6D, 0x18BA, 0x6C6F, 0x18B7, 0x6C70, 0x04D6, 0x6C71, 0x18B6, 0x6C72, + 0x04DD, 0x6C73, 0x18BF, 0x6C74, 0x04DF, 0x6C76, 0x04E1, 0x6C78, 0x18B0, + 0x6C7A, 0x04D4, 0x6C7B, 0x18C1, 0x6C7D, 0x04DB, 0x6C7E, 0x04DE, 0x6C80, + 0x19E4, 0x6C81, 0x04CE, 0x6C82, 0x04E5, 0x6C83, 0x04DC, 0x6C84, 0x18B3, + 0x6C85, 0x04D1, 0x6C86, 0x04E0, 0x6C87, 0x18BB, 0x6C88, 0x04CF, 0x6C89, + 0x04D0, 0x6C8A, 0x19E2, 0x6C8B, 0x18B4, 0x6C8C, 0x04D7, 0x6C8D, 0x04E2, + 0x6C8E, 0x18C2, 0x6C8F, 0x18B5, 0x6C90, 0x04D5, 0x6C92, 0x04DA, 0x6C93, + 0x19CE, 0x6C94, 0x04E3, 0x6C95, 0x18BC, 0x6C96, 0x04D9, 0x6C98, 0x04E4, + 0x6C99, 0x04CD, 0x6C9A, 0x18B9, 0x6C9B, 0x04D2, 0x6C9C, 0x18BD, 0x6C9D, + 0x19E3, 0x6CAB, 0x062B, 0x6CAC, 0x063B, 0x6CAD, 0x19D5, 0x6CAE, 0x0632, + 0x6CB0, 0x19EA, 0x6CB1, 0x0623, 0x6CB3, 0x0626, 0x6CB4, 0x19E1, 0x6CB6, + 0x19D3, 0x6CB7, 0x19D7, 0x6CB8, 0x062E, 0x6CB9, 0x0630, 0x6CBA, 0x19DA, + 0x6CBB, 0x0637, 0x6CBC, 0x0629, 0x6CBD, 0x0627, 0x6CBE, 0x0628, 0x6CBF, + 0x0636, 0x6CC0, 0x19E6, 0x6CC1, 0x0631, 0x6CC2, 0x19D9, 0x6CC3, 0x19DB, + 0x6CC4, 0x062F, 0x6CC5, 0x0634, 0x6CC6, 0x19DC, 0x6CC7, 0x19E9, 0x6CC9, + 0x0770, 0x6CCA, 0x063A, 0x6CCC, 0x0624, 0x6CCD, 0x19E8, 0x6CCF, 0x19EC, + 0x6CD0, 0x19D8, 0x6CD1, 0x19EE, 0x6CD2, 0x19DF, 0x6CD3, 0x062D, 0x6CD4, + 0x19D4, 0x6CD5, 0x062C, 0x6CD6, 0x063E, 0x6CD7, 0x0633, 0x6CD9, 0x19D2, + 0x6CDA, 0x1B4E, 0x6CDB, 0x0639, 0x6CDC, 0x063D, 0x6CDD, 0x19E0, 0x6CDE, + 0x19E5, 0x6CE0, 0x063F, 0x6CE1, 0x0638, 0x6CE2, 0x062A, 0x6CE3, 0x0620, + 0x6CE5, 0x0625, 0x6CE7, 0x19D6, 0x6CE8, 0x0621, 0x6CE9, 0x19ED, 0x6CEB, + 0x19D0, 0x6CEC, 0x19CF, 0x6CED, 0x19DD, 0x6CEE, 0x19D1, 0x6CEF, 0x063C, + 0x6CF0, 0x0907, 0x6CF1, 0x0635, 0x6CF2, 0x19DE, 0x6CF3, 0x0622, 0x6CF5, + 0x077F, 0x6CF9, 0x19EB, 0x6D00, 0x1B55, 0x6D01, 0x1B58, 0x6D03, 0x1B5B, + 0x6D04, 0x1B50, 0x6D07, 0x1B5E, 0x6D08, 0x1B61, 0x6D09, 0x1B63, 0x6D0A, + 0x1B4D, 0x6D0B, 0x0771, 0x6D0C, 0x0776, 0x6D0D, 0x1CF9, 0x6D0E, 0x0786, + 0x6D0F, 0x1B5C, 0x6D10, 0x1B64, 0x6D11, 0x1B54, 0x6D12, 0x1B4C, 0x6D16, + 0x1D14, 0x6D17, 0x0779, 0x6D18, 0x1B59, 0x6D19, 0x1B51, 0x6D1A, 0x1B53, + 0x6D1B, 0x077E, 0x6D1D, 0x1B56, 0x6D1E, 0x0778, 0x6D1F, 0x1B49, 0x6D20, + 0x1B5F, 0x6D22, 0x1B62, 0x6D25, 0x0775, 0x6D27, 0x0781, 0x6D28, 0x1B46, + 0x6D29, 0x0783, 0x6D2A, 0x0773, 0x6D2B, 0x0787, 0x6D2C, 0x1B60, 0x6D2D, + 0x1B48, 0x6D2E, 0x0784, 0x6D2F, 0x1D0E, 0x6D30, 0x19E7, 0x6D31, 0x0777, + 0x6D32, 0x0772, 0x6D33, 0x1B4F, 0x6D34, 0x1B47, 0x6D35, 0x0785, 0x6D36, + 0x077D, 0x6D37, 0x1B5A, 0x6D38, 0x0782, 0x6D39, 0x0780, 0x6D3A, 0x1B52, + 0x6D3B, 0x077A, 0x6D3C, 0x1B4A, 0x6D3D, 0x077B, 0x6D3E, 0x077C, 0x6D3F, + 0x1B4B, 0x6D40, 0x1B5D, 0x6D41, 0x0774, 0x6D42, 0x1B57, 0x6D58, 0x1CFC, + 0x6D59, 0x090F, 0x6D5A, 0x0914, 0x6D5E, 0x1D05, 0x6D5F, 0x1D0B, 0x6D60, + 0x1D07, 0x6D61, 0x1CFA, 0x6D62, 0x1CFD, 0x6D63, 0x1CF6, 0x6D64, 0x1CF7, + 0x6D65, 0x091B, 0x6D66, 0x090C, 0x6D67, 0x1D06, 0x6D68, 0x1D0F, 0x6D69, + 0x0916, 0x6D6A, 0x0908, 0x6D6C, 0x0911, 0x6D6D, 0x1CFE, 0x6D6E, 0x0913, + 0x6D6F, 0x1CFF, 0x6D70, 0x1D09, 0x6D74, 0x0915, 0x6D75, 0x1D18, 0x6D76, + 0x1CF8, 0x6D77, 0x090E, 0x6D78, 0x090D, 0x6D79, 0x0919, 0x6D7A, 0x1CF5, + 0x6D7B, 0x1D16, 0x6D7C, 0x1D0A, 0x6D7D, 0x1D17, 0x6D7E, 0x1D11, 0x6D7F, + 0x1D03, 0x6D80, 0x1D12, 0x6D82, 0x1D0C, 0x6D83, 0x1D15, 0x6D84, 0x1D13, + 0x6D85, 0x091A, 0x6D86, 0x1D04, 0x6D87, 0x090B, 0x6D88, 0x090A, 0x6D89, + 0x0912, 0x6D8A, 0x0918, 0x6D8B, 0x1D10, 0x6D8C, 0x0917, 0x6D8D, 0x1D01, + 0x6D8E, 0x0AEC, 0x6D90, 0x1D19, 0x6D91, 0x1D00, 0x6D92, 0x1CFB, 0x6D93, + 0x0910, 0x6D94, 0x091C, 0x6D95, 0x0909, 0x6D97, 0x1D08, 0x6D98, 0x1D0D, + 0x6DAA, 0x0B0E, 0x6DAB, 0x1F46, 0x6DAC, 0x1F4A, 0x6DAE, 0x0AFB, 0x6DAF, + 0x0AF9, 0x6DB2, 0x0AF0, 0x6DB3, 0x1F48, 0x6DB4, 0x1F47, 0x6DB5, 0x0B04, + 0x6DB7, 0x1F4D, 0x6DB8, 0x0AFE, 0x6DBA, 0x1F5F, 0x6DBB, 0x1F6B, 0x6DBC, + 0x0AED, 0x6DBD, 0x1F5C, 0x6DBE, 0x1F55, 0x6DBF, 0x0B10, 0x6DC0, 0x1F45, + 0x6DC2, 0x1F61, 0x6DC4, 0x0B0D, 0x6DC5, 0x0B01, 0x6DC6, 0x0B0C, 0x6DC7, + 0x0AF7, 0x6DC8, 0x1F51, 0x6DC9, 0x1F63, 0x6DCA, 0x1F5B, 0x6DCB, 0x0AF8, + 0x6DCC, 0x0AF2, 0x6DCD, 0x1F69, 0x6DCF, 0x1F62, 0x6DD0, 0x1F64, 0x6DD1, + 0x0AFA, 0x6DD2, 0x0B02, 0x6DD3, 0x1F66, 0x6DD4, 0x1F4F, 0x6DD5, 0x1F60, + 0x6DD6, 0x1F54, 0x6DD7, 0x1F68, 0x6DD8, 0x0B07, 0x6DD9, 0x0AEF, 0x6DDA, + 0x0B05, 0x6DDB, 0x1F59, 0x6DDC, 0x1F57, 0x6DDD, 0x1F58, 0x6DDE, 0x0AFC, + 0x6DDF, 0x1F53, 0x6DE0, 0x1F52, 0x6DE1, 0x0AF1, 0x6DE2, 0x1F4C, 0x6DE3, + 0x1F6A, 0x6DE4, 0x0AF3, 0x6DE5, 0x1F56, 0x6DE6, 0x0B11, 0x6DE8, 0x0B0B, + 0x6DE9, 0x1F4B, 0x6DEA, 0x0B08, 0x6DEB, 0x0B06, 0x6DEC, 0x0B0F, 0x6DED, + 0x1F5D, 0x6DEE, 0x0B0A, 0x6DEF, 0x1D02, 0x6DF0, 0x1F5E, 0x6DF1, 0x0B09, + 0x6DF2, 0x1F65, 0x6DF3, 0x0AEE, 0x6DF4, 0x1F5A, 0x6DF5, 0x0B00, 0x6DF6, + 0x1F4E, 0x6DF7, 0x0AFF, 0x6DF9, 0x0AFD, 0x6DFA, 0x0AF5, 0x6DFB, 0x0AF4, + 0x6DFC, 0x21BF, 0x6DFD, 0x1F67, 0x6E00, 0x1F50, 0x6E03, 0x21D4, 0x6E05, + 0x0AF6, 0x6E19, 0x0CC1, 0x6E1A, 0x0B03, 0x6E1B, 0x0CAF, 0x6E1C, 0x21CE, + 0x6E1D, 0x0CBD, 0x6E1F, 0x21C2, 0x6E20, 0x0CAC, 0x6E21, 0x0CA8, 0x6E22, + 0x21E0, 0x6E23, 0x0CAE, 0x6E24, 0x0CB2, 0x6E25, 0x0CAD, 0x6E26, 0x0CB6, + 0x6E27, 0x21E4, 0x6E28, 0x21DB, 0x6E2B, 0x21C9, 0x6E2C, 0x0CBB, 0x6E2D, + 0x0CB5, 0x6E2E, 0x21D5, 0x6E2F, 0x0CA5, 0x6E30, 0x21E1, 0x6E31, 0x21DA, + 0x6E32, 0x0CA9, 0x6E33, 0x21CF, 0x6E34, 0x0CB8, 0x6E35, 0x21EC, 0x6E36, + 0x21ED, 0x6E38, 0x0CA6, 0x6E39, 0x21DF, 0x6E3A, 0x0CBA, 0x6E3B, 0x21D3, + 0x6E3C, 0x21C5, 0x6E3D, 0x21C6, 0x6E3E, 0x0CBE, 0x6E3F, 0x21CA, 0x6E40, + 0x21D1, 0x6E41, 0x21CB, 0x6E43, 0x0CBC, 0x6E44, 0x0CC4, 0x6E45, 0x21C7, + 0x6E46, 0x21C0, 0x6E47, 0x21C1, 0x6E49, 0x21C3, 0x6E4A, 0x0CAB, 0x6E4B, + 0x21D0, 0x6E4D, 0x0CB9, 0x6E4E, 0x0CC2, 0x6E51, 0x21D2, 0x6E52, 0x21EA, + 0x6E53, 0x21E2, 0x6E54, 0x0CA7, 0x6E55, 0x21E8, 0x6E56, 0x0CB3, 0x6E58, + 0x0CB1, 0x6E5A, 0x21EE, 0x6E5B, 0x0CB0, 0x6E5C, 0x21D8, 0x6E5D, 0x21CC, + 0x6E5E, 0x21D6, 0x6E5F, 0x0CC7, 0x6E60, 0x21DC, 0x6E61, 0x21D9, 0x6E62, + 0x21C8, 0x6E63, 0x0CC3, 0x6E64, 0x21E6, 0x6E65, 0x21E3, 0x6E66, 0x21EB, + 0x6E67, 0x0CAA, 0x6E68, 0x21D7, 0x6E69, 0x0CC6, 0x6E6B, 0x21DE, 0x6E6E, + 0x0CB4, 0x6E6F, 0x0CB7, 0x6E71, 0x21DD, 0x6E72, 0x0CC5, 0x6E73, 0x21CD, + 0x6E74, 0x1F49, 0x6E77, 0x21E7, 0x6E78, 0x21E5, 0x6E79, 0x21E9, 0x6E88, + 0x21C4, 0x6E89, 0x0CC0, 0x6E8D, 0x246C, 0x6E8E, 0x246B, 0x6E8F, 0x2451, + 0x6E90, 0x0E55, 0x6E92, 0x246A, 0x6E93, 0x2454, 0x6E94, 0x2455, 0x6E96, + 0x0E5F, 0x6E97, 0x2473, 0x6E98, 0x0E5A, 0x6E99, 0x2469, 0x6E9B, 0x244E, + 0x6E9C, 0x0E60, 0x6E9D, 0x0E56, 0x6E9E, 0x245D, 0x6E9F, 0x2453, 0x6EA0, + 0x2456, 0x6EA1, 0x246E, 0x6EA2, 0x0E50, 0x6EA3, 0x2475, 0x6EA4, 0x246D, + 0x6EA5, 0x0E59, 0x6EA6, 0x2462, 0x6EA7, 0x0E64, 0x6EAA, 0x0E63, 0x6EAB, + 0x0E5D, 0x6EAE, 0x2474, 0x6EAF, 0x0E51, 0x6EB0, 0x2460, 0x6EB1, 0x2457, + 0x6EB2, 0x2464, 0x6EB3, 0x2470, 0x6EB4, 0x0E65, 0x6EB6, 0x0E53, 0x6EB7, + 0x245F, 0x6EB9, 0x2458, 0x6EBA, 0x0E5C, 0x6EBC, 0x0E5B, 0x6EBD, 0x245B, + 0x6EBE, 0x2465, 0x6EBF, 0x246F, 0x6EC0, 0x2452, 0x6EC1, 0x245C, 0x6EC2, + 0x0E54, 0x6EC3, 0x2466, 0x6EC4, 0x0E61, 0x6EC5, 0x0E58, 0x6EC6, 0x2459, + 0x6EC7, 0x0E57, 0x6EC8, 0x2450, 0x6EC9, 0x245E, 0x6ECA, 0x2472, 0x6ECB, + 0x0CBF, 0x6ECC, 0x101F, 0x6ECD, 0x2461, 0x6ECE, 0x26EB, 0x6ECF, 0x2463, + 0x6ED0, 0x2471, 0x6ED1, 0x0E5E, 0x6ED2, 0x245A, 0x6ED3, 0x0E52, 0x6ED4, + 0x0E62, 0x6ED5, 0x119A, 0x6ED6, 0x244F, 0x6ED8, 0x2468, 0x6EDC, 0x2467, + 0x6EEB, 0x2707, 0x6EEC, 0x101C, 0x6EED, 0x26FC, 0x6EEE, 0x2701, 0x6EEF, + 0x1011, 0x6EF1, 0x26ED, 0x6EF2, 0x101E, 0x6EF4, 0x1008, 0x6EF5, 0x26EC, + 0x6EF6, 0x270D, 0x6EF7, 0x1020, 0x6EF8, 0x26F0, 0x6EF9, 0x2700, 0x6EFB, + 0x26F2, 0x6EFC, 0x2710, 0x6EFD, 0x270C, 0x6EFE, 0x1006, 0x6EFF, 0x1010, + 0x6F00, 0x2946, 0x6F01, 0x101D, 0x6F02, 0x100E, 0x6F03, 0x26EE, 0x6F05, + 0x270B, 0x6F06, 0x1012, 0x6F07, 0x2708, 0x6F08, 0x2715, 0x6F09, 0x26F4, + 0x6F0A, 0x26FD, 0x6F0D, 0x2713, 0x6F0E, 0x2709, 0x6F0F, 0x100D, 0x6F12, + 0x26FB, 0x6F13, 0x1007, 0x6F14, 0x1005, 0x6F15, 0x1017, 0x6F18, 0x26F9, + 0x6F19, 0x26F6, 0x6F1A, 0x26F7, 0x6F1C, 0x270F, 0x6F1E, 0x2714, 0x6F1F, + 0x2712, 0x6F20, 0x100B, 0x6F21, 0x2716, 0x6F22, 0x100F, 0x6F23, 0x1016, + 0x6F25, 0x26EF, 0x6F26, 0x292E, 0x6F27, 0x26F8, 0x6F29, 0x1009, 0x6F2A, + 0x101B, 0x6F2B, 0x1018, 0x6F2C, 0x100C, 0x6F2D, 0x2702, 0x6F2E, 0x26F3, + 0x6F2F, 0x1019, 0x6F30, 0x2704, 0x6F31, 0x1013, 0x6F32, 0x1015, 0x6F33, + 0x1004, 0x6F35, 0x2706, 0x6F36, 0x26FE, 0x6F37, 0x26F1, 0x6F38, 0x1014, + 0x6F39, 0x270E, 0x6F3A, 0x2711, 0x6F3B, 0x26FA, 0x6F3C, 0x2705, 0x6F3E, + 0x100A, 0x6F3F, 0x1189, 0x6F40, 0x2703, 0x6F41, 0x292D, 0x6F43, 0x270A, + 0x6F4E, 0x26F5, 0x6F4F, 0x2937, 0x6F50, 0x2941, 0x6F51, 0x118C, 0x6F52, + 0x2940, 0x6F53, 0x294C, 0x6F54, 0x118E, 0x6F55, 0x293E, 0x6F57, 0x2942, + 0x6F58, 0x1199, 0x6F5A, 0x2939, 0x6F5B, 0x1191, 0x6F5D, 0x2945, 0x6F5E, + 0x2B9A, 0x6F5F, 0x119D, 0x6F60, 0x119C, 0x6F61, 0x2947, 0x6F62, 0x2936, + 0x6F63, 0x2951, 0x6F64, 0x1197, 0x6F66, 0x118D, 0x6F67, 0x294A, 0x6F69, + 0x294E, 0x6F6A, 0x2953, 0x6F6B, 0x2948, 0x6F6C, 0x293C, 0x6F6D, 0x1190, + 0x6F6E, 0x1193, 0x6F6F, 0x119B, 0x6F70, 0x1196, 0x6F72, 0x293F, 0x6F73, + 0x26FF, 0x6F76, 0x293B, 0x6F77, 0x2952, 0x6F78, 0x1192, 0x6F7A, 0x1195, + 0x6F7B, 0x2954, 0x6F7C, 0x118A, 0x6F7D, 0x2949, 0x6F7E, 0x292F, 0x6F7F, + 0x294F, 0x6F80, 0x13FC, 0x6F82, 0x293D, 0x6F84, 0x118B, 0x6F85, 0x2938, + 0x6F86, 0x118F, 0x6F87, 0x2930, 0x6F88, 0x101A, 0x6F89, 0x2934, 0x6F8B, + 0x294D, 0x6F8C, 0x2935, 0x6F8D, 0x2933, 0x6F8E, 0x1194, 0x6F90, 0x294B, + 0x6F92, 0x2932, 0x6F93, 0x2944, 0x6F94, 0x2943, 0x6F95, 0x2950, 0x6F96, + 0x293A, 0x6F97, 0x1198, 0x6F9E, 0x2B9D, 0x6FA0, 0x12EB, 0x6FA1, 0x12E1, + 0x6FA2, 0x2BA9, 0x6FA3, 0x2B95, 0x6FA4, 0x12E3, 0x6FA5, 0x2BA1, 0x6FA6, + 0x12EA, 0x6FA7, 0x12E5, 0x6FA8, 0x2B9F, 0x6FA9, 0x2D8E, 0x6FAA, 0x2BA5, + 0x6FAB, 0x2BAB, 0x6FAC, 0x2BA4, 0x6FAD, 0x2B93, 0x6FAE, 0x2BA2, 0x6FAF, + 0x2BAD, 0x6FB0, 0x2BAF, 0x6FB1, 0x12E0, 0x6FB2, 0x2BAE, 0x6FB3, 0x12E6, + 0x6FB4, 0x12EC, 0x6FB6, 0x12E9, 0x6FB8, 0x2BA8, 0x6FB9, 0x12E8, 0x6FBA, + 0x2BA3, 0x6FBC, 0x2B97, 0x6FBD, 0x2B9C, 0x6FBF, 0x2BA7, 0x6FC0, 0x12E7, + 0x6FC1, 0x12E4, 0x6FC2, 0x12DF, 0x6FC3, 0x12E2, 0x6FC4, 0x2B9B, 0x6FC6, + 0x2931, 0x6FC7, 0x2B96, 0x6FC8, 0x2B99, 0x6FC9, 0x2BAA, 0x6FCA, 0x2B9E, + 0x6FCB, 0x2B94, 0x6FCC, 0x2D8D, 0x6FCD, 0x2BAC, 0x6FCE, 0x2B98, 0x6FCF, + 0x2BA6, 0x6FD4, 0x2D90, 0x6FD5, 0x1400, 0x6FD8, 0x13F4, 0x6FDB, 0x13F8, + 0x6FDC, 0x2D92, 0x6FDD, 0x2D98, 0x6FDE, 0x2D96, 0x6FDF, 0x13F6, 0x6FE0, + 0x13F7, 0x6FE1, 0x13FE, 0x6FE2, 0x2D99, 0x6FE3, 0x2D91, 0x6FE4, 0x13F9, + 0x6FE6, 0x2D95, 0x6FE7, 0x2D94, 0x6FE8, 0x2D9A, 0x6FE9, 0x13FF, 0x6FEB, + 0x13FA, 0x6FEC, 0x13FD, 0x6FED, 0x2D93, 0x6FEE, 0x1401, 0x6FEF, 0x13FB, + 0x6FF0, 0x1402, 0x6FF1, 0x13F5, 0x6FF2, 0x2D97, 0x6FF4, 0x2D8F, 0x6FF7, + 0x2F4E, 0x6FFA, 0x14EB, 0x6FFB, 0x2F4B, 0x6FFC, 0x2F4D, 0x6FFE, 0x14E9, + 0x6FFF, 0x2F49, 0x7000, 0x2F4A, 0x7001, 0x2F45, 0x7004, 0x2BA0, 0x7005, + 0x2F46, 0x7006, 0x14EA, 0x7007, 0x2F42, 0x7009, 0x14E7, 0x700A, 0x2F4F, + 0x700B, 0x14E8, 0x700C, 0x2F43, 0x700D, 0x2F44, 0x700E, 0x2F48, 0x700F, + 0x14ED, 0x7011, 0x14EC, 0x7014, 0x2F47, 0x7015, 0x158F, 0x7016, 0x30AD, + 0x7017, 0x30B3, 0x7018, 0x1590, 0x7019, 0x30AA, 0x701A, 0x158D, 0x701B, + 0x158A, 0x701C, 0x30B5, 0x701D, 0x158E, 0x701F, 0x158B, 0x7020, 0x30AC, + 0x7021, 0x30AF, 0x7022, 0x30B0, 0x7023, 0x30B1, 0x7024, 0x30B4, 0x7026, + 0x2F4C, 0x7027, 0x30AB, 0x7028, 0x158C, 0x7029, 0x30B2, 0x702A, 0x31EF, + 0x702B, 0x30AE, 0x702F, 0x31E6, 0x7030, 0x161D, 0x7031, 0x31E9, 0x7032, + 0x161E, 0x7033, 0x31F2, 0x7034, 0x31E8, 0x7035, 0x31E5, 0x7037, 0x31E7, + 0x7038, 0x31EB, 0x7039, 0x31EE, 0x703A, 0x31ED, 0x703B, 0x31F1, 0x703C, + 0x31E4, 0x703E, 0x161C, 0x703F, 0x31EC, 0x7040, 0x31F0, 0x7041, 0x31F3, + 0x7042, 0x31EA, 0x7043, 0x32D8, 0x7044, 0x32D9, 0x7045, 0x32DD, 0x7046, + 0x32DE, 0x7048, 0x32DB, 0x7049, 0x32DC, 0x704A, 0x32DA, 0x704C, 0x167A, + 0x7051, 0x16C8, 0x7052, 0x338C, 0x7055, 0x3389, 0x7056, 0x338A, 0x7057, + 0x338B, 0x7058, 0x16C9, 0x705A, 0x3423, 0x705B, 0x3422, 0x705D, 0x348A, + 0x705E, 0x1722, 0x705F, 0x3488, 0x7060, 0x348B, 0x7061, 0x3489, 0x7062, + 0x34D0, 0x7063, 0x1744, 0x7064, 0x1752, 0x7065, 0x351C, 0x7066, 0x3506, + 0x7068, 0x351B, 0x7069, 0x3547, 0x706A, 0x3548, 0x706B, 0x02E6, 0x7070, + 0x03F2, 0x7071, 0x180A, 0x7074, 0x18C3, 0x7076, 0x04E6, 0x7078, 0x04E9, + 0x707A, 0x18C4, 0x707C, 0x04E7, 0x707D, 0x04E8, 0x7082, 0x19F7, 0x7083, + 0x19F9, 0x7084, 0x19F4, 0x7085, 0x19F1, 0x7086, 0x19F3, 0x708A, 0x0643, + 0x708E, 0x0641, 0x7091, 0x19F5, 0x7092, 0x0642, 0x7093, 0x19F2, 0x7094, + 0x19EF, 0x7095, 0x0640, 0x7096, 0x19F6, 0x7098, 0x19F0, 0x7099, 0x0644, + 0x709A, 0x19F8, 0x709F, 0x1B66, 0x70A1, 0x1B6A, 0x70A4, 0x0790, 0x70A9, + 0x1B6D, 0x70AB, 0x0788, 0x70AC, 0x078B, 0x70AD, 0x078D, 0x70AE, 0x078F, + 0x70AF, 0x078C, 0x70B0, 0x1B69, 0x70B1, 0x1B68, 0x70B3, 0x078A, 0x70B4, + 0x1B6B, 0x70B5, 0x1B6C, 0x70B7, 0x1B65, 0x70B8, 0x078E, 0x70BA, 0x0789, + 0x70BE, 0x1B67, 0x70C5, 0x1D27, 0x70C6, 0x1D28, 0x70C7, 0x1D29, 0x70C8, + 0x0921, 0x70CA, 0x091D, 0x70CB, 0x1D1E, 0x70CD, 0x1D26, 0x70CE, 0x1D2B, + 0x70CF, 0x0922, 0x70D1, 0x1D1C, 0x70D2, 0x1D22, 0x70D3, 0x1D1B, 0x70D4, + 0x1D25, 0x70D7, 0x1D21, 0x70D8, 0x091E, 0x70D9, 0x0920, 0x70DA, 0x1D2A, + 0x70DC, 0x1D1A, 0x70DD, 0x1D1D, 0x70DE, 0x1D23, 0x70E0, 0x1D24, 0x70E1, + 0x1D2C, 0x70E2, 0x1D20, 0x70E4, 0x091F, 0x70EF, 0x0B16, 0x70F0, 0x1F72, + 0x70F3, 0x1F74, 0x70F4, 0x1F70, 0x70F6, 0x1F7C, 0x70F7, 0x1F6E, 0x70F8, + 0x1F7B, 0x70F9, 0x0B12, 0x70FA, 0x1F6C, 0x70FB, 0x21F2, 0x70FC, 0x1F76, + 0x70FD, 0x0B15, 0x70FF, 0x1F77, 0x7100, 0x1F7A, 0x7102, 0x1F7E, 0x7104, + 0x1F73, 0x7106, 0x1F78, 0x7109, 0x0B13, 0x710A, 0x0B14, 0x710B, 0x1F7D, + 0x710C, 0x1F71, 0x710D, 0x1F6D, 0x710E, 0x1F7F, 0x7110, 0x1F75, 0x7113, + 0x1F79, 0x7117, 0x1F6F, 0x7119, 0x0CC8, 0x711A, 0x0CC9, 0x711B, 0x21FC, + 0x711C, 0x0CCF, 0x711E, 0x21F0, 0x711F, 0x21F9, 0x7120, 0x21EF, 0x7121, + 0x0CCC, 0x7122, 0x21F7, 0x7123, 0x21F5, 0x7125, 0x21F6, 0x7126, 0x0CCA, + 0x7128, 0x21FA, 0x712E, 0x21F3, 0x712F, 0x21F1, 0x7130, 0x0CCB, 0x7131, + 0x21F4, 0x7132, 0x21F8, 0x7136, 0x0CCD, 0x713A, 0x21FB, 0x7141, 0x247B, + 0x7142, 0x2482, 0x7143, 0x2484, 0x7144, 0x248A, 0x7146, 0x0E72, 0x7147, + 0x2476, 0x7149, 0x0E6A, 0x714B, 0x2485, 0x714C, 0x0E6F, 0x714D, 0x248B, + 0x714E, 0x0E66, 0x7150, 0x2488, 0x7152, 0x2478, 0x7153, 0x2489, 0x7154, + 0x2477, 0x7156, 0x0E74, 0x7158, 0x2483, 0x7159, 0x0E67, 0x715A, 0x248C, + 0x715C, 0x0E6C, 0x715D, 0x247C, 0x715E, 0x0E71, 0x715F, 0x2487, 0x7160, + 0x247A, 0x7161, 0x2481, 0x7162, 0x247D, 0x7163, 0x2479, 0x7164, 0x0E69, + 0x7165, 0x0E70, 0x7166, 0x0E6E, 0x7167, 0x0E6B, 0x7168, 0x0E73, 0x7169, + 0x0E68, 0x716A, 0x2480, 0x716C, 0x0E6D, 0x716E, 0x0CCE, 0x7170, 0x2486, + 0x7172, 0x247E, 0x7178, 0x247F, 0x717B, 0x271E, 0x717D, 0x1023, 0x7180, + 0x271A, 0x7181, 0x2720, 0x7182, 0x271C, 0x7184, 0x1025, 0x7185, 0x271B, + 0x7186, 0x271F, 0x7187, 0x2717, 0x7189, 0x2719, 0x718A, 0x1024, 0x718F, + 0x271D, 0x7190, 0x2718, 0x7192, 0x1026, 0x7194, 0x1021, 0x7197, 0x2721, + 0x7199, 0x1022, 0x719A, 0x295A, 0x719B, 0x2957, 0x719C, 0x2963, 0x719D, + 0x295D, 0x719E, 0x295F, 0x719F, 0x119E, 0x71A0, 0x2959, 0x71A1, 0x2961, + 0x71A4, 0x2960, 0x71A5, 0x295E, 0x71A7, 0x2964, 0x71A8, 0x11A1, 0x71A9, + 0x295B, 0x71AA, 0x2962, 0x71AC, 0x119F, 0x71AF, 0x2956, 0x71B0, 0x2958, + 0x71B1, 0x11A0, 0x71B2, 0x2955, 0x71B3, 0x2965, 0x71B5, 0x295C, 0x71B8, + 0x2BB3, 0x71B9, 0x12F3, 0x71BC, 0x2BBE, 0x71BD, 0x2BBC, 0x71BE, 0x12ED, + 0x71BF, 0x2BB2, 0x71C0, 0x2BB5, 0x71C1, 0x2BB6, 0x71C2, 0x2BB1, 0x71C3, + 0x12F7, 0x71C4, 0x12F8, 0x71C5, 0x2BB0, 0x71C6, 0x2BBF, 0x71C7, 0x2BBA, + 0x71C8, 0x12F1, 0x71C9, 0x12EE, 0x71CA, 0x2BB9, 0x71CB, 0x2BB7, 0x71CE, + 0x12F4, 0x71CF, 0x2BBB, 0x71D0, 0x12EF, 0x71D2, 0x12F0, 0x71D4, 0x2BB8, + 0x71D5, 0x12F2, 0x71D6, 0x2BB4, 0x71D8, 0x2BBD, 0x71D9, 0x12F5, 0x71DA, + 0x2BC0, 0x71DB, 0x2BC1, 0x71DC, 0x12F6, 0x71DF, 0x1404, 0x71E0, 0x140B, + 0x71E1, 0x2D9B, 0x71E2, 0x2DA1, 0x71E4, 0x2D9F, 0x71E5, 0x1407, 0x71E6, + 0x1406, 0x71E7, 0x1403, 0x71E8, 0x2D9D, 0x71EC, 0x1409, 0x71ED, 0x1408, + 0x71EE, 0x1405, 0x71F0, 0x2DA0, 0x71F1, 0x2D9C, 0x71F2, 0x2D9E, 0x71F4, + 0x140A, 0x71F8, 0x14F1, 0x71F9, 0x2F52, 0x71FB, 0x14EE, 0x71FC, 0x14EF, + 0x71FD, 0x2F54, 0x71FE, 0x14F0, 0x71FF, 0x2F51, 0x7201, 0x2F50, 0x7202, + 0x30B9, 0x7203, 0x2F53, 0x7205, 0x30BA, 0x7206, 0x1591, 0x7207, 0x30B8, + 0x720A, 0x30B7, 0x720C, 0x30B6, 0x720D, 0x1592, 0x7210, 0x161F, 0x7213, + 0x31F4, 0x7214, 0x31F5, 0x7219, 0x32E1, 0x721A, 0x32E0, 0x721B, 0x167B, + 0x721D, 0x32DF, 0x721E, 0x338D, 0x721F, 0x338E, 0x7222, 0x3424, 0x7223, + 0x348C, 0x7226, 0x34D1, 0x7227, 0x3535, 0x7228, 0x1766, 0x7229, 0x3549, + 0x722A, 0x02E7, 0x722C, 0x0645, 0x722D, 0x0646, 0x7230, 0x0791, 0x7235, + 0x140C, 0x7236, 0x02E8, 0x7238, 0x0647, 0x7239, 0x0923, 0x723A, 0x0E75, + 0x723B, 0x02E9, 0x723D, 0x0B17, 0x723E, 0x1027, 0x723F, 0x178D, 0x7241, + 0x1B6E, 0x7242, 0x1D2D, 0x7244, 0x2722, 0x7246, 0x140D, 0x7247, 0x02EA, + 0x7248, 0x0648, 0x7249, 0x1B6F, 0x724A, 0x1B70, 0x724B, 0x21FD, 0x724C, + 0x0CD0, 0x724F, 0x248D, 0x7252, 0x0E76, 0x7253, 0x2723, 0x7256, 0x11A2, + 0x7258, 0x1593, 0x7259, 0x02EB, 0x725A, 0x21FE, 0x725B, 0x02EC, 0x725D, + 0x03F4, 0x725E, 0x180B, 0x725F, 0x03F3, 0x7260, 0x04EC, 0x7261, 0x04EB, + 0x7262, 0x04EA, 0x7263, 0x18C5, 0x7267, 0x0649, 0x7269, 0x064A, 0x726A, + 0x19FA, 0x726C, 0x1B71, 0x726E, 0x1B74, 0x726F, 0x0793, 0x7270, 0x1B72, + 0x7272, 0x0792, 0x7273, 0x1B73, 0x7274, 0x0794, 0x7276, 0x1D30, 0x7277, + 0x1D2F, 0x7278, 0x1D2E, 0x7279, 0x0924, 0x727B, 0x1F81, 0x727C, 0x1F82, + 0x727D, 0x0B18, 0x727E, 0x1F80, 0x727F, 0x1F83, 0x7280, 0x0CD2, 0x7281, + 0x0B19, 0x7284, 0x0CD1, 0x7285, 0x2202, 0x7286, 0x2201, 0x7288, 0x21FF, + 0x7289, 0x2200, 0x728B, 0x2203, 0x728C, 0x248F, 0x728D, 0x248E, 0x728E, + 0x2492, 0x7290, 0x2491, 0x7291, 0x2490, 0x7292, 0x1028, 0x7293, 0x2726, + 0x7295, 0x2725, 0x7296, 0x1029, 0x7297, 0x2724, 0x7298, 0x2966, 0x729A, + 0x2967, 0x729B, 0x11A3, 0x729D, 0x2BC2, 0x729E, 0x2BC3, 0x72A1, 0x30BF, + 0x72A2, 0x1594, 0x72A3, 0x30BE, 0x72A4, 0x30BD, 0x72A5, 0x30BB, 0x72A6, + 0x30BC, 0x72A7, 0x167C, 0x72A8, 0x31F6, 0x72A9, 0x338F, 0x72AA, 0x34D2, + 0x72AC, 0x02ED, 0x72AE, 0x17AF, 0x72AF, 0x0355, 0x72B0, 0x17B0, 0x72B4, + 0x180C, 0x72B5, 0x180D, 0x72BA, 0x18CB, 0x72BD, 0x18C7, 0x72BF, 0x18C6, + 0x72C0, 0x064B, 0x72C1, 0x18CA, 0x72C2, 0x04EE, 0x72C3, 0x18C8, 0x72C4, + 0x04ED, 0x72C5, 0x18CC, 0x72C6, 0x18C9, 0x72C9, 0x19FE, 0x72CA, 0x1B75, + 0x72CB, 0x19FC, 0x72CC, 0x1A03, 0x72CE, 0x064C, 0x72D0, 0x064F, 0x72D1, + 0x1A04, 0x72D2, 0x1A00, 0x72D4, 0x1A01, 0x72D6, 0x19FB, 0x72D7, 0x064E, + 0x72D8, 0x19FD, 0x72D9, 0x064D, 0x72DA, 0x1A02, 0x72DC, 0x19FF, 0x72DF, + 0x1B79, 0x72E0, 0x0796, 0x72E1, 0x0797, 0x72E3, 0x1B7C, 0x72E4, 0x1B76, + 0x72E6, 0x1B7B, 0x72E8, 0x1B77, 0x72E9, 0x0795, 0x72EA, 0x1B7A, 0x72EB, + 0x1B78, 0x72F3, 0x1D36, 0x72F4, 0x1D33, 0x72F6, 0x1D35, 0x72F7, 0x0929, + 0x72F8, 0x0928, 0x72F9, 0x0926, 0x72FA, 0x1D32, 0x72FB, 0x1D37, 0x72FC, + 0x0925, 0x72FD, 0x0927, 0x72FE, 0x1D34, 0x72FF, 0x1F8B, 0x7300, 0x1D31, + 0x7301, 0x1D38, 0x7307, 0x1F86, 0x7308, 0x1F8A, 0x730A, 0x1F89, 0x730B, + 0x2205, 0x730C, 0x2210, 0x730F, 0x1F8C, 0x7311, 0x1F87, 0x7312, 0x2204, + 0x7313, 0x0B1D, 0x7316, 0x0B1C, 0x7317, 0x1F85, 0x7318, 0x1F88, 0x7319, + 0x0B1E, 0x731B, 0x0B1B, 0x731C, 0x0B1A, 0x731D, 0x1F84, 0x731E, 0x1F8D, + 0x7322, 0x2207, 0x7323, 0x220E, 0x7325, 0x0CD4, 0x7326, 0x220D, 0x7327, + 0x220A, 0x7329, 0x0CD6, 0x732D, 0x220C, 0x7330, 0x2206, 0x7331, 0x2208, + 0x7332, 0x220B, 0x7333, 0x2209, 0x7334, 0x0CD5, 0x7335, 0x220F, 0x7336, + 0x0CD3, 0x7337, 0x0E77, 0x733A, 0x2496, 0x733B, 0x2495, 0x733C, 0x2493, + 0x733E, 0x0E7A, 0x733F, 0x0E79, 0x7340, 0x2497, 0x7342, 0x2494, 0x7343, + 0x2727, 0x7344, 0x102A, 0x7345, 0x0E78, 0x7349, 0x2499, 0x734A, 0x2498, + 0x734C, 0x272A, 0x734D, 0x2728, 0x734E, 0x11A4, 0x7350, 0x102B, 0x7351, + 0x2729, 0x7352, 0x2969, 0x7357, 0x11A5, 0x7358, 0x2968, 0x7359, 0x2971, + 0x735A, 0x2970, 0x735B, 0x296E, 0x735D, 0x296D, 0x735E, 0x296A, 0x735F, + 0x296B, 0x7360, 0x296C, 0x7361, 0x296F, 0x7362, 0x2972, 0x7365, 0x2BC8, + 0x7366, 0x2BC5, 0x7367, 0x2BC6, 0x7368, 0x12F9, 0x7369, 0x2BC4, 0x736A, + 0x2BCA, 0x736B, 0x2BC9, 0x736C, 0x2BC7, 0x736E, 0x2DA3, 0x736F, 0x2DA4, + 0x7370, 0x140E, 0x7372, 0x140F, 0x7373, 0x2DA2, 0x7375, 0x14F3, 0x7376, + 0x2F55, 0x7377, 0x14F2, 0x7378, 0x1595, 0x737A, 0x1596, 0x737B, 0x1620, + 0x737C, 0x31F8, 0x737D, 0x31F7, 0x737E, 0x32E2, 0x737F, 0x3390, 0x7380, + 0x16CA, 0x7381, 0x3426, 0x7382, 0x3425, 0x7383, 0x3427, 0x7384, 0x0356, + 0x7385, 0x1B7D, 0x7386, 0x092A, 0x7387, 0x0B1F, 0x7388, 0x1F8E, 0x7389, + 0x0357, 0x738A, 0x17B1, 0x738B, 0x02EE, 0x738E, 0x180E, 0x7392, 0x18D1, + 0x7393, 0x18CF, 0x7394, 0x18D0, 0x7395, 0x18CD, 0x7396, 0x04EF, 0x7397, + 0x18CE, 0x739D, 0x1A0C, 0x739F, 0x0652, 0x73A0, 0x1A0A, 0x73A1, 0x1A06, + 0x73A2, 0x1A09, 0x73A4, 0x1A05, 0x73A5, 0x0654, 0x73A6, 0x1A08, 0x73A8, + 0x0651, 0x73A9, 0x0650, 0x73AB, 0x0653, 0x73AC, 0x1A0B, 0x73AD, 0x1A07, + 0x73B2, 0x079B, 0x73B3, 0x079E, 0x73B4, 0x1B85, 0x73B5, 0x1B84, 0x73B6, + 0x1B83, 0x73B7, 0x0798, 0x73B8, 0x1B8C, 0x73B9, 0x1B82, 0x73BB, 0x079A, + 0x73BC, 0x1D3D, 0x73BE, 0x1B89, 0x73BF, 0x1B87, 0x73C0, 0x079D, 0x73C2, + 0x1B7F, 0x73C3, 0x1B8A, 0x73C5, 0x1B81, 0x73C6, 0x1B8B, 0x73C7, 0x1B88, + 0x73C8, 0x1B80, 0x73CA, 0x0799, 0x73CB, 0x1B8D, 0x73CC, 0x1B7E, 0x73CD, + 0x079C, 0x73D2, 0x1D42, 0x73D3, 0x1D39, 0x73D4, 0x1D44, 0x73D6, 0x1D3C, + 0x73D7, 0x1D47, 0x73D8, 0x1D48, 0x73D9, 0x1D3A, 0x73DA, 0x1D46, 0x73DB, + 0x1D43, 0x73DC, 0x1D41, 0x73DD, 0x1D45, 0x73DE, 0x0930, 0x73E0, 0x092E, + 0x73E3, 0x1D3F, 0x73E5, 0x1D3B, 0x73E7, 0x1D3E, 0x73E8, 0x1D49, 0x73E9, + 0x1D40, 0x73EA, 0x092F, 0x73EB, 0x1B86, 0x73ED, 0x092B, 0x73EE, 0x092D, + 0x73F4, 0x1F9C, 0x73F5, 0x1F91, 0x73F6, 0x1F8F, 0x73F8, 0x1F90, 0x73FA, + 0x1F97, 0x73FC, 0x1F98, 0x73FD, 0x1F94, 0x73FE, 0x0B24, 0x73FF, 0x1F99, + 0x7400, 0x1F96, 0x7401, 0x1F93, 0x7403, 0x0B22, 0x7404, 0x1F92, 0x7405, + 0x0B20, 0x7406, 0x0B23, 0x7407, 0x1F95, 0x7408, 0x1F9D, 0x7409, 0x092C, + 0x740A, 0x0B21, 0x740B, 0x1F9B, 0x740C, 0x1F9A, 0x740D, 0x0B25, 0x7416, + 0x2215, 0x741A, 0x2216, 0x741B, 0x0CE0, 0x741D, 0x221C, 0x7420, 0x221E, + 0x7421, 0x2217, 0x7422, 0x0CDA, 0x7423, 0x221B, 0x7424, 0x221A, 0x7425, + 0x0CDB, 0x7426, 0x0CE1, 0x7428, 0x0CE2, 0x7429, 0x221D, 0x742A, 0x0CD8, + 0x742B, 0x2214, 0x742C, 0x2212, 0x742D, 0x2218, 0x742E, 0x2211, 0x742F, + 0x0CDF, 0x7430, 0x2213, 0x7431, 0x2219, 0x7432, 0x221F, 0x7433, 0x0CD9, + 0x7434, 0x0CDE, 0x7435, 0x0CDC, 0x7436, 0x0CDD, 0x743A, 0x0CD7, 0x743F, + 0x0E81, 0x7440, 0x24A0, 0x7441, 0x0E80, 0x7442, 0x24A4, 0x7444, 0x249A, + 0x7446, 0x24A5, 0x744A, 0x249B, 0x744B, 0x249C, 0x744D, 0x24A6, 0x744E, + 0x24A3, 0x744F, 0x24A1, 0x7450, 0x24A2, 0x7451, 0x249E, 0x7452, 0x249D, + 0x7454, 0x24A7, 0x7455, 0x0E7D, 0x7457, 0x249F, 0x7459, 0x0E82, 0x745A, + 0x0E7C, 0x745B, 0x0E83, 0x745C, 0x0E84, 0x745E, 0x0E7F, 0x745F, 0x0E7E, + 0x7462, 0x272B, 0x7463, 0x102D, 0x7464, 0x102C, 0x7467, 0x2730, 0x7469, + 0x11A6, 0x746A, 0x102E, 0x746D, 0x1030, 0x746E, 0x2731, 0x746F, 0x0E7B, + 0x7470, 0x102F, 0x7471, 0x272D, 0x7472, 0x272F, 0x7473, 0x272C, 0x7475, + 0x272E, 0x7479, 0x297C, 0x747C, 0x297B, 0x747D, 0x2978, 0x747E, 0x11A9, + 0x747F, 0x2BCB, 0x7480, 0x11AA, 0x7481, 0x2977, 0x7483, 0x11A8, 0x7485, + 0x2979, 0x7486, 0x2976, 0x7487, 0x2973, 0x7488, 0x297A, 0x7489, 0x2974, + 0x748A, 0x2975, 0x748B, 0x11A7, 0x7490, 0x2DA8, 0x7492, 0x2BCF, 0x7494, + 0x2BCE, 0x7495, 0x2BD0, 0x7497, 0x2DA5, 0x7498, 0x12FC, 0x749A, 0x2BCC, + 0x749C, 0x12FA, 0x749E, 0x12FE, 0x749F, 0x12FD, 0x74A0, 0x2BCD, 0x74A1, + 0x2BD1, 0x74A3, 0x12FB, 0x74A5, 0x2DAC, 0x74A6, 0x1412, 0x74A7, 0x14F4, + 0x74A8, 0x1413, 0x74A9, 0x1410, 0x74AA, 0x2DA9, 0x74AB, 0x2DA7, 0x74AD, + 0x2DAA, 0x74AF, 0x2DAD, 0x74B0, 0x1411, 0x74B1, 0x2DAB, 0x74B2, 0x2DA6, + 0x74B5, 0x2F58, 0x74B6, 0x2F5B, 0x74B7, 0x30C2, 0x74B8, 0x2F56, 0x74BA, + 0x31F9, 0x74BB, 0x2F5C, 0x74BD, 0x1597, 0x74BE, 0x2F5A, 0x74BF, 0x14F5, + 0x74C0, 0x2F57, 0x74C1, 0x2F59, 0x74C2, 0x2F5D, 0x74C3, 0x30C3, 0x74C5, + 0x30C1, 0x74CA, 0x1598, 0x74CB, 0x30C0, 0x74CF, 0x1621, 0x74D4, 0x167E, + 0x74D5, 0x3392, 0x74D6, 0x167D, 0x74D7, 0x3394, 0x74D8, 0x3391, 0x74D9, + 0x3393, 0x74DA, 0x16FE, 0x74DB, 0x348D, 0x74DC, 0x0358, 0x74DD, 0x1A0D, + 0x74DE, 0x1D4A, 0x74DF, 0x1D4B, 0x74E0, 0x0B26, 0x74E1, 0x24A8, 0x74E2, + 0x12FF, 0x74E3, 0x1599, 0x74E4, 0x16CB, 0x74E5, 0x348E, 0x74E6, 0x0359, + 0x74E8, 0x1A0E, 0x74E9, 0x0120, 0x74EC, 0x1B8E, 0x74EE, 0x1B8F, 0x74F4, + 0x1D4C, 0x74F5, 0x1D4D, 0x74F6, 0x0B27, 0x74F7, 0x0B28, 0x74FB, 0x2220, + 0x74FD, 0x24AB, 0x74FE, 0x24AA, 0x74FF, 0x24A9, 0x7500, 0x2732, 0x7502, + 0x2733, 0x7503, 0x2734, 0x7504, 0x1031, 0x7507, 0x297E, 0x7508, 0x297D, + 0x750B, 0x2BD2, 0x750C, 0x1300, 0x750D, 0x1301, 0x750F, 0x2DB1, 0x7510, + 0x2DAE, 0x7511, 0x2DAF, 0x7512, 0x2DB0, 0x7513, 0x2F5F, 0x7514, 0x2F5E, + 0x7515, 0x14F6, 0x7516, 0x30C4, 0x7517, 0x32E3, 0x7518, 0x035A, 0x751A, + 0x079F, 0x751C, 0x0B29, 0x751D, 0x24AC, 0x751F, 0x035B, 0x7521, 0x1D4E, + 0x7522, 0x0B2A, 0x7525, 0x0CE3, 0x7526, 0x0CE4, 0x7528, 0x035C, 0x7529, + 0x035D, 0x752A, 0x180F, 0x752B, 0x04F1, 0x752C, 0x04F0, 0x752D, 0x07A0, + 0x752E, 0x1B90, 0x752F, 0x2221, 0x7530, 0x035E, 0x7531, 0x035F, 0x7532, + 0x0360, 0x7533, 0x0361, 0x7537, 0x04F2, 0x7538, 0x04F3, 0x7539, 0x18D3, + 0x753A, 0x18D2, 0x753D, 0x0655, 0x753E, 0x1A11, 0x753F, 0x1A0F, 0x7540, + 0x1A10, 0x7547, 0x1B91, 0x7548, 0x1B92, 0x754B, 0x07A4, 0x754C, 0x07A2, + 0x754E, 0x07A3, 0x754F, 0x07A1, 0x7554, 0x0931, 0x7559, 0x0935, 0x755A, + 0x0934, 0x755B, 0x1D4F, 0x755C, 0x0933, 0x755D, 0x0932, 0x755F, 0x1D50, + 0x7562, 0x0B2D, 0x7563, 0x1F9F, 0x7564, 0x1F9E, 0x7565, 0x0B2B, 0x7566, + 0x0B2C, 0x756A, 0x0CE6, 0x756B, 0x0CE5, 0x756C, 0x2223, 0x756F, 0x2222, + 0x7570, 0x0B2E, 0x7576, 0x0E85, 0x7577, 0x24AE, 0x7578, 0x0E86, 0x7579, + 0x24AD, 0x757D, 0x2735, 0x757E, 0x297F, 0x757F, 0x11AB, 0x7580, 0x2BD3, + 0x7584, 0x2DB2, 0x7586, 0x159B, 0x7587, 0x159A, 0x758A, 0x16CC, 0x758B, + 0x0362, 0x758C, 0x1A12, 0x758F, 0x0B2F, 0x7590, 0x2736, 0x7591, 0x1032, + 0x7592, 0x022E, 0x7594, 0x18D4, 0x7595, 0x18D5, 0x7598, 0x1A13, 0x7599, + 0x0657, 0x759A, 0x0658, 0x759D, 0x0656, 0x75A2, 0x07A8, 0x75A3, 0x07A9, + 0x75A4, 0x07A6, 0x75A5, 0x07A7, 0x75A7, 0x1B93, 0x75AA, 0x1B94, 0x75AB, + 0x07A5, 0x75B0, 0x1D51, 0x75B2, 0x0939, 0x75B3, 0x093A, 0x75B5, 0x0B32, + 0x75B6, 0x1D57, 0x75B8, 0x093F, 0x75B9, 0x093D, 0x75BA, 0x1D58, 0x75BB, + 0x1D53, 0x75BC, 0x093C, 0x75BD, 0x093B, 0x75BE, 0x0936, 0x75BF, 0x1D56, + 0x75C0, 0x1D55, 0x75C1, 0x1D52, 0x75C2, 0x093E, 0x75C4, 0x1D54, 0x75C5, + 0x0937, 0x75C7, 0x0938, 0x75CA, 0x0B33, 0x75CB, 0x1FA3, 0x75CC, 0x1FA4, + 0x75CD, 0x0B34, 0x75CE, 0x1FA0, 0x75CF, 0x1FA2, 0x75D0, 0x1FA6, 0x75D1, + 0x1FA5, 0x75D2, 0x1FA1, 0x75D4, 0x0B30, 0x75D5, 0x0B31, 0x75D7, 0x222B, + 0x75D8, 0x0CEB, 0x75D9, 0x0CEA, 0x75DA, 0x2225, 0x75DB, 0x0CE8, 0x75DD, + 0x2228, 0x75DE, 0x0CEC, 0x75DF, 0x2229, 0x75E0, 0x0CED, 0x75E1, 0x2226, + 0x75E2, 0x0CE7, 0x75E3, 0x0CE9, 0x75E4, 0x222A, 0x75E6, 0x2227, 0x75E7, + 0x2224, 0x75ED, 0x24BB, 0x75EF, 0x24B0, 0x75F0, 0x0E88, 0x75F1, 0x0E8B, + 0x75F2, 0x0E8A, 0x75F3, 0x0E8F, 0x75F4, 0x0E8E, 0x75F5, 0x24BC, 0x75F6, + 0x24BA, 0x75F7, 0x24B3, 0x75F8, 0x24B7, 0x75F9, 0x24B6, 0x75FA, 0x0E8C, + 0x75FB, 0x24B9, 0x75FC, 0x24B5, 0x75FD, 0x24BD, 0x75FE, 0x24B4, 0x75FF, + 0x0E8D, 0x7600, 0x0E87, 0x7601, 0x0E89, 0x7603, 0x24B2, 0x7608, 0x2738, + 0x7609, 0x1036, 0x760A, 0x273C, 0x760B, 0x1035, 0x760C, 0x2739, 0x760D, + 0x1034, 0x760F, 0x24B1, 0x7610, 0x24B8, 0x7611, 0x273B, 0x7613, 0x1037, + 0x7614, 0x273D, 0x7615, 0x273A, 0x7616, 0x2737, 0x7619, 0x2982, 0x761A, + 0x2986, 0x761B, 0x2988, 0x761C, 0x2984, 0x761D, 0x2983, 0x761E, 0x2981, + 0x761F, 0x11AE, 0x7620, 0x11AC, 0x7621, 0x11B1, 0x7622, 0x11B2, 0x7623, + 0x2985, 0x7624, 0x11AF, 0x7625, 0x2980, 0x7626, 0x11B0, 0x7627, 0x1033, + 0x7628, 0x2987, 0x7629, 0x11AD, 0x762D, 0x2BD5, 0x762F, 0x2BD4, 0x7630, + 0x2BDC, 0x7631, 0x2BD6, 0x7632, 0x2BDB, 0x7633, 0x2BD8, 0x7634, 0x1302, + 0x7635, 0x2BDA, 0x7638, 0x1303, 0x763A, 0x1304, 0x763C, 0x2BD9, 0x763D, + 0x2BD7, 0x7642, 0x1415, 0x7643, 0x2DB3, 0x7646, 0x1414, 0x7647, 0x2DB6, + 0x7648, 0x2DB4, 0x7649, 0x2DB5, 0x764C, 0x1416, 0x7650, 0x2F63, 0x7652, + 0x14F9, 0x7653, 0x2F64, 0x7656, 0x14F7, 0x7657, 0x2F65, 0x7658, 0x14F8, + 0x7659, 0x2F62, 0x765A, 0x2F66, 0x765C, 0x2F60, 0x765F, 0x159C, 0x7660, + 0x30C5, 0x7661, 0x159D, 0x7662, 0x1622, 0x7664, 0x2F61, 0x7665, 0x1623, + 0x7669, 0x167F, 0x766A, 0x32E4, 0x766C, 0x16CE, 0x766D, 0x3395, 0x766E, + 0x16CD, 0x7670, 0x3428, 0x7671, 0x1723, 0x7672, 0x1724, 0x7675, 0x3543, + 0x7676, 0x022F, 0x7678, 0x07AA, 0x7679, 0x1B95, 0x767B, 0x0CEE, 0x767C, + 0x0CEF, 0x767D, 0x0363, 0x767E, 0x03F5, 0x767F, 0x1810, 0x7681, 0x18D6, + 0x7682, 0x04F4, 0x7684, 0x0659, 0x7686, 0x07AB, 0x7687, 0x07AC, 0x7688, + 0x07AD, 0x7689, 0x1FA8, 0x768A, 0x1D59, 0x768B, 0x0940, 0x768E, 0x0B35, + 0x768F, 0x1FA7, 0x7692, 0x222D, 0x7693, 0x0CF1, 0x7695, 0x222C, 0x7696, + 0x0CF0, 0x7699, 0x24BE, 0x769A, 0x11B3, 0x769B, 0x298C, 0x769C, 0x2989, + 0x769D, 0x298A, 0x769E, 0x298B, 0x76A4, 0x2DB7, 0x76A6, 0x2F67, 0x76AA, + 0x31FB, 0x76AB, 0x31FA, 0x76AD, 0x3396, 0x76AE, 0x0364, 0x76AF, 0x1A14, + 0x76B0, 0x0941, 0x76B4, 0x0CF2, 0x76B5, 0x24BF, 0x76B8, 0x273E, 0x76BA, + 0x11B4, 0x76BB, 0x2BDD, 0x76BD, 0x2F68, 0x76BE, 0x31FC, 0x76BF, 0x0365, + 0x76C2, 0x065A, 0x76C3, 0x07B0, 0x76C4, 0x1B96, 0x76C5, 0x07B1, 0x76C6, + 0x07AF, 0x76C8, 0x07AE, 0x76C9, 0x1D5A, 0x76CA, 0x0942, 0x76CD, 0x0943, + 0x76CE, 0x0944, 0x76D2, 0x0B37, 0x76D3, 0x1FA9, 0x76D4, 0x0B36, 0x76DA, + 0x222E, 0x76DB, 0x0B38, 0x76DC, 0x0CF3, 0x76DD, 0x24C0, 0x76DE, 0x0E90, + 0x76DF, 0x0E91, 0x76E1, 0x1038, 0x76E3, 0x1039, 0x76E4, 0x11B5, 0x76E5, + 0x1306, 0x76E6, 0x2BDE, 0x76E7, 0x1305, 0x76E9, 0x2DB8, 0x76EA, 0x1417, + 0x76EC, 0x2F69, 0x76ED, 0x31FD, 0x76EE, 0x0366, 0x76EF, 0x04F5, 0x76F0, + 0x1A17, 0x76F1, 0x1A16, 0x76F2, 0x065B, 0x76F3, 0x1A15, 0x76F4, 0x065C, + 0x76F5, 0x1A18, 0x76F7, 0x1B9C, 0x76F8, 0x07B4, 0x76F9, 0x07B3, 0x76FA, + 0x1B9E, 0x76FB, 0x1B9D, 0x76FC, 0x07B8, 0x76FE, 0x07B7, 0x7701, 0x07B2, + 0x7703, 0x1B98, 0x7704, 0x1B99, 0x7705, 0x1B9A, 0x7707, 0x07B9, 0x7708, + 0x1B97, 0x7709, 0x07B5, 0x770A, 0x1B9B, 0x770B, 0x07B6, 0x7710, 0x1D5D, + 0x7711, 0x1D61, 0x7712, 0x1D5F, 0x7713, 0x1D5E, 0x7715, 0x1D62, 0x7719, + 0x1D63, 0x771A, 0x1D64, 0x771B, 0x1D5C, 0x771D, 0x1D5B, 0x771F, 0x0946, + 0x7720, 0x0947, 0x7722, 0x1D65, 0x7723, 0x1D60, 0x7725, 0x1FB2, 0x7727, + 0x1D66, 0x7728, 0x0948, 0x7729, 0x0945, 0x772D, 0x1FAC, 0x772F, 0x1FAB, + 0x7731, 0x1FAD, 0x7732, 0x1FAE, 0x7733, 0x1FB0, 0x7734, 0x1FAF, 0x7735, + 0x1FB4, 0x7736, 0x0B3C, 0x7737, 0x0B39, 0x7738, 0x0B3D, 0x7739, 0x1FAA, + 0x773A, 0x0B3E, 0x773B, 0x1FB3, 0x773C, 0x0B3B, 0x773D, 0x1FB1, 0x773E, + 0x0B3A, 0x7744, 0x2231, 0x7745, 0x2233, 0x7746, 0x222F, 0x7747, 0x2230, + 0x774A, 0x2234, 0x774B, 0x2236, 0x774C, 0x2237, 0x774D, 0x2232, 0x774E, + 0x2235, 0x774F, 0x0CF4, 0x7752, 0x24C4, 0x7754, 0x24C9, 0x7755, 0x24C1, + 0x7756, 0x24C5, 0x7759, 0x24CA, 0x775A, 0x24C6, 0x775B, 0x0E92, 0x775C, + 0x0E9A, 0x775E, 0x0E95, 0x775F, 0x24C2, 0x7760, 0x24C3, 0x7761, 0x103D, + 0x7762, 0x0E9D, 0x7763, 0x0E96, 0x7765, 0x0E9B, 0x7766, 0x0E94, 0x7767, + 0x24C8, 0x7768, 0x0E9C, 0x7769, 0x24C7, 0x776A, 0x0E98, 0x776B, 0x0E93, + 0x776C, 0x0E99, 0x776D, 0x24CB, 0x776E, 0x2743, 0x776F, 0x2745, 0x7779, + 0x0E97, 0x777C, 0x2740, 0x777D, 0x103B, 0x777E, 0x2746, 0x777F, 0x103C, + 0x7780, 0x2744, 0x7781, 0x273F, 0x7782, 0x2742, 0x7783, 0x2747, 0x7784, + 0x103A, 0x7785, 0x2741, 0x7787, 0x11B7, 0x7788, 0x2990, 0x7789, 0x298F, + 0x778B, 0x11BA, 0x778C, 0x11B8, 0x778D, 0x298D, 0x778E, 0x11B6, 0x778F, + 0x298E, 0x7791, 0x11B9, 0x7795, 0x2BE6, 0x7797, 0x2BE8, 0x7799, 0x2BE7, + 0x779A, 0x2BDF, 0x779B, 0x2BE3, 0x779C, 0x2BE2, 0x779D, 0x2BE0, 0x779E, + 0x1308, 0x779F, 0x1309, 0x77A0, 0x1307, 0x77A1, 0x2BE1, 0x77A2, 0x2BE4, + 0x77A3, 0x2BE5, 0x77A5, 0x130A, 0x77A7, 0x141C, 0x77A8, 0x2DC0, 0x77AA, + 0x1419, 0x77AB, 0x2DBA, 0x77AC, 0x141B, 0x77AD, 0x141D, 0x77B0, 0x141A, + 0x77B1, 0x2DBF, 0x77B2, 0x2DBB, 0x77B3, 0x1418, 0x77B4, 0x2DBE, 0x77B5, + 0x2DB9, 0x77B6, 0x2DBD, 0x77B7, 0x2DBC, 0x77BA, 0x2F6B, 0x77BB, 0x14FC, + 0x77BC, 0x14FD, 0x77BD, 0x14FA, 0x77BF, 0x14FB, 0x77C2, 0x2F6A, 0x77C4, + 0x30C8, 0x77C7, 0x159E, 0x77C9, 0x30C6, 0x77CA, 0x30C7, 0x77CC, 0x31FE, + 0x77CD, 0x3201, 0x77CE, 0x31FF, 0x77CF, 0x3200, 0x77D0, 0x32E5, 0x77D3, + 0x1680, 0x77D4, 0x3429, 0x77D5, 0x348F, 0x77D7, 0x1725, 0x77D8, 0x34D3, + 0x77D9, 0x34D4, 0x77DA, 0x1753, 0x77DB, 0x0367, 0x77DC, 0x07BA, 0x77DE, + 0x2238, 0x77E0, 0x24CC, 0x77E2, 0x0368, 0x77E3, 0x04F6, 0x77E5, 0x065D, + 0x77E7, 0x1B9F, 0x77E8, 0x1BA0, 0x77E9, 0x0949, 0x77EC, 0x2239, 0x77ED, + 0x0CF5, 0x77EE, 0x0E9E, 0x77EF, 0x141E, 0x77F0, 0x2DC1, 0x77F1, 0x30C9, + 0x77F2, 0x3202, 0x77F3, 0x0369, 0x77F7, 0x1A1E, 0x77F8, 0x1A19, 0x77F9, + 0x1A1B, 0x77FA, 0x1A1D, 0x77FB, 0x1A1C, 0x77FC, 0x1A1A, 0x77FD, 0x065E, + 0x7802, 0x07BB, 0x7803, 0x1BA9, 0x7805, 0x1BA4, 0x7806, 0x1BA1, 0x7809, + 0x1BA8, 0x780C, 0x07BD, 0x780D, 0x07BE, 0x780E, 0x1BA7, 0x780F, 0x1BA6, + 0x7810, 0x1BA5, 0x7811, 0x1BA2, 0x7812, 0x1BA3, 0x7813, 0x1BAA, 0x7814, + 0x07BC, 0x781D, 0x094D, 0x781F, 0x0953, 0x7820, 0x0952, 0x7821, 0x1D6F, + 0x7822, 0x1D69, 0x7823, 0x1D67, 0x7825, 0x0950, 0x7826, 0x1FBB, 0x7827, + 0x094B, 0x7828, 0x1D6C, 0x7829, 0x1D70, 0x782A, 0x1D72, 0x782B, 0x1D6E, + 0x782C, 0x1D68, 0x782D, 0x0951, 0x782E, 0x1D6D, 0x782F, 0x1D6B, 0x7830, + 0x094A, 0x7831, 0x1D73, 0x7832, 0x0954, 0x7833, 0x1D71, 0x7834, 0x094E, + 0x7835, 0x1D6A, 0x7837, 0x094F, 0x7838, 0x094C, 0x7843, 0x0B40, 0x7845, + 0x1FBC, 0x7848, 0x1FB5, 0x7849, 0x1FB7, 0x784A, 0x1FB9, 0x784C, 0x1FBA, + 0x784D, 0x1FB8, 0x784E, 0x0B41, 0x7850, 0x1FBD, 0x7852, 0x1FB6, 0x785C, + 0x223D, 0x785D, 0x0CF6, 0x785E, 0x2245, 0x7860, 0x223A, 0x7862, 0x2246, + 0x7864, 0x223B, 0x7865, 0x223C, 0x7868, 0x2244, 0x7869, 0x2243, 0x786A, + 0x2240, 0x786B, 0x0B3F, 0x786C, 0x0CF7, 0x786D, 0x223E, 0x786E, 0x2241, + 0x786F, 0x0CF8, 0x7870, 0x2242, 0x7871, 0x223F, 0x7879, 0x24D7, 0x787B, + 0x24DB, 0x787C, 0x0EA5, 0x787E, 0x274D, 0x787F, 0x0EA8, 0x7880, 0x24D9, + 0x7881, 0x36E8, 0x7883, 0x24D6, 0x7884, 0x24D1, 0x7885, 0x24D3, 0x7886, + 0x24D4, 0x7887, 0x24CD, 0x7889, 0x0EA4, 0x788C, 0x0EA3, 0x788E, 0x0E9F, + 0x788F, 0x24D0, 0x7891, 0x0EA6, 0x7893, 0x0EA7, 0x7894, 0x24CF, 0x7895, + 0x24D2, 0x7896, 0x24DA, 0x7897, 0x0EA1, 0x7898, 0x0EA2, 0x7899, 0x24D8, + 0x789A, 0x24CE, 0x789E, 0x274F, 0x789F, 0x103F, 0x78A0, 0x2751, 0x78A1, + 0x24D5, 0x78A2, 0x2753, 0x78A3, 0x1043, 0x78A4, 0x2754, 0x78A5, 0x2750, + 0x78A7, 0x1040, 0x78A8, 0x274C, 0x78A9, 0x1042, 0x78AA, 0x2749, 0x78AB, + 0x274E, 0x78AC, 0x2752, 0x78AD, 0x274B, 0x78B0, 0x0EA0, 0x78B2, 0x2748, + 0x78B3, 0x1041, 0x78B4, 0x274A, 0x78BA, 0x11BD, 0x78BB, 0x2992, 0x78BC, + 0x11C1, 0x78BE, 0x11BF, 0x78C1, 0x103E, 0x78C3, 0x2999, 0x78C4, 0x299A, + 0x78C5, 0x11BC, 0x78C8, 0x2998, 0x78C9, 0x299B, 0x78CA, 0x11BE, 0x78CB, + 0x11BB, 0x78CC, 0x2994, 0x78CD, 0x2991, 0x78CE, 0x2996, 0x78CF, 0x2993, + 0x78D0, 0x11C2, 0x78D1, 0x2995, 0x78D4, 0x2997, 0x78D5, 0x11C0, 0x78DA, + 0x130C, 0x78DB, 0x2BEF, 0x78DD, 0x2BE9, 0x78DE, 0x2BED, 0x78DF, 0x2BF3, + 0x78E0, 0x2BF4, 0x78E1, 0x2BF0, 0x78E2, 0x2BF1, 0x78E3, 0x2BEE, 0x78E5, + 0x2BEB, 0x78E7, 0x130E, 0x78E8, 0x130B, 0x78E9, 0x2BEA, 0x78EA, 0x2BEC, + 0x78EC, 0x130D, 0x78ED, 0x2BF2, 0x78EF, 0x1422, 0x78F2, 0x2DC8, 0x78F3, + 0x2DC2, 0x78F4, 0x1421, 0x78F7, 0x141F, 0x78F9, 0x2DCA, 0x78FA, 0x1420, + 0x78FB, 0x2DC5, 0x78FC, 0x2DC6, 0x78FD, 0x2DC3, 0x78FE, 0x2DCB, 0x78FF, + 0x2DC7, 0x7901, 0x1423, 0x7902, 0x2DC4, 0x7904, 0x2DCC, 0x7905, 0x2DC9, + 0x7909, 0x2F6F, 0x790C, 0x2F6C, 0x790E, 0x14FE, 0x7910, 0x2F70, 0x7911, + 0x2F72, 0x7912, 0x2F71, 0x7913, 0x2F6D, 0x7914, 0x2F6E, 0x7917, 0x30CE, + 0x7919, 0x159F, 0x791B, 0x30CB, 0x791C, 0x30CD, 0x791D, 0x30CA, 0x791E, + 0x30CF, 0x7921, 0x30CC, 0x7923, 0x3204, 0x7924, 0x3207, 0x7925, 0x3203, + 0x7926, 0x1624, 0x7927, 0x3205, 0x7928, 0x3206, 0x7929, 0x3208, 0x792A, + 0x1625, 0x792B, 0x1627, 0x792C, 0x1626, 0x792D, 0x32E6, 0x792F, 0x32E8, + 0x7931, 0x32E7, 0x7935, 0x3397, 0x7938, 0x3490, 0x7939, 0x34D5, 0x793A, + 0x036A, 0x793D, 0x18D7, 0x793E, 0x065F, 0x793F, 0x1A20, 0x7940, 0x0660, + 0x7941, 0x0661, 0x7942, 0x1A1F, 0x7944, 0x1BAF, 0x7945, 0x1BAE, 0x7946, + 0x07BF, 0x7947, 0x07C2, 0x7948, 0x07C1, 0x7949, 0x07C0, 0x794A, 0x1BAB, + 0x794B, 0x1BAD, 0x794C, 0x1BAC, 0x794F, 0x1D76, 0x7950, 0x0956, 0x7951, + 0x1D7A, 0x7952, 0x1D79, 0x7953, 0x1D78, 0x7954, 0x1D74, 0x7955, 0x0955, + 0x7956, 0x0959, 0x7957, 0x095C, 0x795A, 0x095D, 0x795B, 0x1D75, 0x795C, + 0x1D77, 0x795D, 0x095B, 0x795E, 0x095A, 0x795F, 0x0958, 0x7960, 0x0957, + 0x7961, 0x1FC4, 0x7963, 0x1FC2, 0x7964, 0x1FBE, 0x7965, 0x0B42, 0x7967, + 0x1FBF, 0x7968, 0x0B43, 0x7969, 0x1FC0, 0x796A, 0x1FC1, 0x796B, 0x1FC3, + 0x796D, 0x0B44, 0x7970, 0x224A, 0x7972, 0x2249, 0x7973, 0x2248, 0x7974, + 0x2247, 0x7979, 0x24DF, 0x797A, 0x0EA9, 0x797C, 0x24DC, 0x797D, 0x24DE, + 0x797F, 0x0EAA, 0x7981, 0x0EAB, 0x7982, 0x24DD, 0x7988, 0x275D, 0x798A, + 0x2756, 0x798B, 0x2757, 0x798D, 0x1046, 0x798E, 0x1044, 0x798F, 0x1045, + 0x7990, 0x275F, 0x7992, 0x275E, 0x7993, 0x275B, 0x7994, 0x275A, 0x7995, + 0x2759, 0x7996, 0x2758, 0x7997, 0x275C, 0x7998, 0x2755, 0x799A, 0x299C, + 0x799B, 0x29A1, 0x799C, 0x299F, 0x79A0, 0x299E, 0x79A1, 0x299D, 0x79A2, + 0x29A0, 0x79A4, 0x2BF5, 0x79A6, 0x130F, 0x79A7, 0x1424, 0x79A8, 0x2DCE, + 0x79AA, 0x1425, 0x79AB, 0x2DCD, 0x79AC, 0x2F74, 0x79AD, 0x2F73, 0x79AE, + 0x14FF, 0x79B0, 0x30D0, 0x79B1, 0x15A0, 0x79B2, 0x3209, 0x79B3, 0x16CF, + 0x79B4, 0x3398, 0x79B6, 0x3492, 0x79B7, 0x3491, 0x79B8, 0x17B2, 0x79B9, + 0x07C3, 0x79BA, 0x07C4, 0x79BB, 0x1FC5, 0x79BD, 0x0EAD, 0x79BE, 0x036B, + 0x79BF, 0x04F9, 0x79C0, 0x04F8, 0x79C1, 0x04F7, 0x79C5, 0x1A21, 0x79C8, + 0x0663, 0x79C9, 0x0662, 0x79CB, 0x07C7, 0x79CD, 0x1BB1, 0x79CE, 0x1BB4, + 0x79CF, 0x1BB2, 0x79D1, 0x07C5, 0x79D2, 0x07C6, 0x79D5, 0x1BB0, 0x79D6, + 0x1BB3, 0x79D8, 0x0964, 0x79DC, 0x1D81, 0x79DD, 0x1D83, 0x79DE, 0x1D82, + 0x79DF, 0x0961, 0x79E0, 0x1D7D, 0x79E3, 0x095F, 0x79E4, 0x095E, 0x79E6, + 0x0962, 0x79E7, 0x0960, 0x79E9, 0x0963, 0x79EA, 0x1D80, 0x79EB, 0x1D7B, + 0x79EC, 0x1D7C, 0x79ED, 0x1D7F, 0x79EE, 0x1D7E, 0x79F6, 0x1FC8, 0x79F7, + 0x1FC9, 0x79F8, 0x1FC7, 0x79FA, 0x1FC6, 0x79FB, 0x0B45, 0x7A00, 0x0CFD, + 0x7A02, 0x224B, 0x7A03, 0x224D, 0x7A04, 0x224F, 0x7A05, 0x0CFC, 0x7A08, + 0x0CFA, 0x7A0A, 0x224C, 0x7A0B, 0x0CFB, 0x7A0C, 0x224E, 0x7A0D, 0x0CF9, + 0x7A10, 0x24E9, 0x7A11, 0x24E0, 0x7A12, 0x24E3, 0x7A13, 0x24E7, 0x7A14, + 0x0EB1, 0x7A15, 0x24E5, 0x7A17, 0x24E4, 0x7A18, 0x24E1, 0x7A19, 0x24E2, + 0x7A1A, 0x0EAF, 0x7A1B, 0x24E8, 0x7A1C, 0x0EAE, 0x7A1E, 0x0EB3, 0x7A1F, + 0x0EB2, 0x7A20, 0x0EB0, 0x7A22, 0x24E6, 0x7A26, 0x2765, 0x7A28, 0x2764, + 0x7A2B, 0x2760, 0x7A2E, 0x1047, 0x7A2F, 0x2763, 0x7A30, 0x2762, 0x7A31, + 0x1048, 0x7A37, 0x11C7, 0x7A39, 0x29A3, 0x7A3B, 0x11C8, 0x7A3C, 0x11C4, + 0x7A3D, 0x11C6, 0x7A3F, 0x11C3, 0x7A40, 0x11C5, 0x7A44, 0x2BF6, 0x7A46, + 0x1312, 0x7A47, 0x2BF8, 0x7A48, 0x2BF7, 0x7A4A, 0x2761, 0x7A4B, 0x1314, + 0x7A4C, 0x1313, 0x7A4D, 0x1310, 0x7A4E, 0x1311, 0x7A54, 0x2DD3, 0x7A56, + 0x2DD1, 0x7A57, 0x1426, 0x7A58, 0x2DD2, 0x7A5A, 0x2DD4, 0x7A5B, 0x2DD0, + 0x7A5C, 0x2DCF, 0x7A5F, 0x2F75, 0x7A60, 0x1502, 0x7A61, 0x1500, 0x7A62, + 0x1501, 0x7A67, 0x30D1, 0x7A68, 0x30D2, 0x7A69, 0x15A2, 0x7A6B, 0x15A1, + 0x7A6C, 0x320B, 0x7A6D, 0x320C, 0x7A6E, 0x320A, 0x7A70, 0x3399, 0x7A71, + 0x339A, 0x7A74, 0x036C, 0x7A75, 0x1811, 0x7A76, 0x04FA, 0x7A78, 0x1A22, + 0x7A79, 0x0665, 0x7A7A, 0x0664, 0x7A7B, 0x1A23, 0x7A7E, 0x1BB6, 0x7A7F, + 0x07C8, 0x7A80, 0x1BB5, 0x7A81, 0x07C9, 0x7A84, 0x0965, 0x7A85, 0x1D86, + 0x7A86, 0x1D84, 0x7A87, 0x1D8A, 0x7A88, 0x0966, 0x7A89, 0x1D85, 0x7A8A, + 0x1D89, 0x7A8B, 0x1D87, 0x7A8C, 0x1D88, 0x7A8F, 0x1FCA, 0x7A90, 0x1FCC, + 0x7A92, 0x0B46, 0x7A94, 0x1FCB, 0x7A95, 0x0B47, 0x7A96, 0x0D00, 0x7A97, + 0x0CFF, 0x7A98, 0x0CFE, 0x7A99, 0x2250, 0x7A9E, 0x24EC, 0x7A9F, 0x0EB4, + 0x7AA0, 0x0EB5, 0x7AA2, 0x24EB, 0x7AA3, 0x24EA, 0x7AA8, 0x2766, 0x7AA9, + 0x104A, 0x7AAA, 0x1049, 0x7AAB, 0x2767, 0x7AAC, 0x2768, 0x7AAE, 0x11CA, + 0x7AAF, 0x11C9, 0x7AB1, 0x2BFC, 0x7AB2, 0x29A4, 0x7AB3, 0x29A6, 0x7AB4, + 0x29A5, 0x7AB5, 0x2BFB, 0x7AB6, 0x2BF9, 0x7AB7, 0x2BFD, 0x7AB8, 0x2BFA, + 0x7ABA, 0x1315, 0x7ABE, 0x2DD5, 0x7ABF, 0x1427, 0x7AC0, 0x2DD6, 0x7AC1, + 0x2DD7, 0x7AC4, 0x1503, 0x7AC5, 0x1504, 0x7AC7, 0x1628, 0x7ACA, 0x16FF, + 0x7ACB, 0x036D, 0x7AD1, 0x1BB7, 0x7AD8, 0x1D8B, 0x7AD9, 0x0967, 0x7ADF, + 0x0BDE, 0x7AE0, 0x0BDD, 0x7AE3, 0x0D02, 0x7AE4, 0x2252, 0x7AE5, 0x0D01, + 0x7AE6, 0x2251, 0x7AEB, 0x24ED, 0x7AED, 0x104B, 0x7AEE, 0x2769, 0x7AEF, + 0x104C, 0x7AF6, 0x1629, 0x7AF7, 0x320D, 0x7AF9, 0x03F6, 0x7AFA, 0x0666, + 0x7AFB, 0x1A24, 0x7AFD, 0x07CB, 0x7AFF, 0x07CA, 0x7B00, 0x1BB8, 0x7B01, + 0x1BB9, 0x7B04, 0x1D8D, 0x7B05, 0x1D8F, 0x7B06, 0x0968, 0x7B08, 0x1D91, + 0x7B09, 0x1D94, 0x7B0A, 0x1D92, 0x7B0E, 0x1D93, 0x7B0F, 0x1D90, 0x7B10, + 0x1D8C, 0x7B11, 0x0969, 0x7B12, 0x1D95, 0x7B13, 0x1D8E, 0x7B18, 0x1FD5, + 0x7B19, 0x0B4D, 0x7B1A, 0x1FDE, 0x7B1B, 0x0B4A, 0x7B1D, 0x1FD7, 0x7B1E, + 0x0B4E, 0x7B20, 0x0B48, 0x7B22, 0x1FD2, 0x7B23, 0x1FDF, 0x7B24, 0x1FD3, + 0x7B25, 0x1FD0, 0x7B26, 0x0B4C, 0x7B28, 0x0B49, 0x7B2A, 0x1FD6, 0x7B2B, + 0x1FD9, 0x7B2C, 0x0B4B, 0x7B2D, 0x1FDA, 0x7B2E, 0x0B4F, 0x7B2F, 0x1FDB, + 0x7B30, 0x1FD1, 0x7B31, 0x1FD8, 0x7B32, 0x1FDC, 0x7B33, 0x1FD4, 0x7B34, + 0x1FCF, 0x7B35, 0x1FCD, 0x7B38, 0x1FDD, 0x7B3B, 0x1FCE, 0x7B40, 0x2259, + 0x7B44, 0x2255, 0x7B45, 0x225B, 0x7B46, 0x0D05, 0x7B47, 0x2254, 0x7B48, + 0x2256, 0x7B49, 0x0D03, 0x7B4A, 0x2253, 0x7B4B, 0x0D0A, 0x7B4C, 0x2257, + 0x7B4D, 0x0D09, 0x7B4E, 0x2258, 0x7B4F, 0x0D0B, 0x7B50, 0x0D06, 0x7B51, + 0x0D0C, 0x7B52, 0x0D07, 0x7B54, 0x0D08, 0x7B56, 0x0D04, 0x7B58, 0x225A, + 0x7B60, 0x0EB8, 0x7B61, 0x24F8, 0x7B63, 0x24FB, 0x7B64, 0x24EF, 0x7B65, + 0x24F4, 0x7B66, 0x24EE, 0x7B67, 0x0EBA, 0x7B69, 0x24F2, 0x7B6D, 0x24F0, + 0x7B6E, 0x0EB9, 0x7B70, 0x24F7, 0x7B71, 0x24F6, 0x7B72, 0x24F3, 0x7B73, + 0x24F5, 0x7B74, 0x24F1, 0x7B75, 0x1050, 0x7B76, 0x24FA, 0x7B77, 0x0EB6, + 0x7B78, 0x24F9, 0x7B82, 0x2779, 0x7B84, 0x1057, 0x7B85, 0x2774, 0x7B87, + 0x1056, 0x7B88, 0x276A, 0x7B8A, 0x276C, 0x7B8B, 0x104F, 0x7B8C, 0x2771, + 0x7B8D, 0x2770, 0x7B8E, 0x2773, 0x7B8F, 0x1054, 0x7B90, 0x276E, 0x7B91, + 0x276D, 0x7B94, 0x1053, 0x7B95, 0x104E, 0x7B96, 0x276F, 0x7B97, 0x1051, + 0x7B98, 0x2775, 0x7B99, 0x2777, 0x7B9B, 0x2772, 0x7B9C, 0x276B, 0x7B9D, + 0x1052, 0x7BA0, 0x11D2, 0x7BA1, 0x104D, 0x7BA4, 0x2778, 0x7BAC, 0x29AA, + 0x7BAD, 0x11CB, 0x7BAF, 0x29AC, 0x7BB1, 0x11CC, 0x7BB4, 0x11CE, 0x7BB5, + 0x29AF, 0x7BB7, 0x29A7, 0x7BB8, 0x1055, 0x7BB9, 0x29AD, 0x7BBE, 0x29A9, + 0x7BC0, 0x0EB7, 0x7BC1, 0x11D1, 0x7BC4, 0x11CD, 0x7BC6, 0x11CF, 0x7BC7, + 0x11D0, 0x7BC9, 0x1318, 0x7BCA, 0x29AE, 0x7BCB, 0x29A8, 0x7BCC, 0x11D3, + 0x7BCE, 0x29AB, 0x7BD4, 0x2C07, 0x7BD5, 0x2C02, 0x7BD8, 0x2C0C, 0x7BD9, + 0x1316, 0x7BDA, 0x2C04, 0x7BDB, 0x131A, 0x7BDC, 0x2C0A, 0x7BDD, 0x2C01, + 0x7BDE, 0x2BFE, 0x7BDF, 0x2C0D, 0x7BE0, 0x142D, 0x7BE1, 0x131B, 0x7BE2, + 0x2C09, 0x7BE3, 0x2BFF, 0x7BE4, 0x1319, 0x7BE5, 0x2C03, 0x7BE6, 0x131D, + 0x7BE7, 0x2C00, 0x7BE8, 0x2C05, 0x7BE9, 0x131C, 0x7BEA, 0x2C08, 0x7BEB, + 0x2C0B, 0x7BF0, 0x2DE9, 0x7BF1, 0x2DEA, 0x7BF2, 0x2DDA, 0x7BF3, 0x2DE1, + 0x7BF4, 0x2DDF, 0x7BF7, 0x142B, 0x7BF8, 0x2DE6, 0x7BF9, 0x2C06, 0x7BFB, + 0x2DDD, 0x7BFD, 0x2DE7, 0x7BFE, 0x142A, 0x7BFF, 0x2DDC, 0x7C00, 0x2DDB, + 0x7C01, 0x2DE5, 0x7C02, 0x2DE2, 0x7C03, 0x2DE4, 0x7C05, 0x2DD8, 0x7C06, + 0x2DE8, 0x7C07, 0x1428, 0x7C09, 0x2DE3, 0x7C0A, 0x2DEC, 0x7C0B, 0x2DE0, + 0x7C0C, 0x142C, 0x7C0D, 0x1429, 0x7C0E, 0x2DDE, 0x7C0F, 0x2DD9, 0x7C10, + 0x2DEB, 0x7C11, 0x1317, 0x7C19, 0x2F78, 0x7C1C, 0x2F76, 0x7C1D, 0x2F7C, + 0x7C1E, 0x1508, 0x7C1F, 0x2F7A, 0x7C20, 0x2F79, 0x7C21, 0x150A, 0x7C22, + 0x2F7F, 0x7C23, 0x1509, 0x7C25, 0x2F80, 0x7C26, 0x2F7D, 0x7C27, 0x1506, + 0x7C28, 0x2F7E, 0x7C29, 0x2F77, 0x7C2A, 0x1507, 0x7C2B, 0x1505, 0x7C2C, + 0x30D6, 0x7C2D, 0x2F7B, 0x7C30, 0x2F81, 0x7C33, 0x30D3, 0x7C37, 0x15A7, + 0x7C38, 0x15A5, 0x7C39, 0x30D5, 0x7C3B, 0x30D7, 0x7C3C, 0x30D4, 0x7C3D, + 0x15A6, 0x7C3E, 0x15A3, 0x7C3F, 0x15A4, 0x7C40, 0x15A8, 0x7C43, 0x162B, + 0x7C45, 0x3212, 0x7C47, 0x3211, 0x7C48, 0x320F, 0x7C49, 0x320E, 0x7C4A, + 0x3210, 0x7C4C, 0x162A, 0x7C4D, 0x162C, 0x7C50, 0x1681, 0x7C53, 0x32EA, + 0x7C54, 0x32E9, 0x7C57, 0x339B, 0x7C59, 0x339D, 0x7C5A, 0x339F, 0x7C5B, + 0x339E, 0x7C5C, 0x339C, 0x7C5F, 0x16D1, 0x7C60, 0x16D0, 0x7C63, 0x1701, + 0x7C64, 0x1700, 0x7C65, 0x1702, 0x7C66, 0x342B, 0x7C67, 0x342A, 0x7C69, + 0x34D6, 0x7C6A, 0x3493, 0x7C6B, 0x34D7, 0x7C6C, 0x1745, 0x7C6E, 0x1746, + 0x7C6F, 0x3507, 0x7C72, 0x176B, 0x7C73, 0x03F7, 0x7C75, 0x1A25, 0x7C78, + 0x1BBB, 0x7C79, 0x1BBC, 0x7C7A, 0x1BBA, 0x7C7D, 0x07CC, 0x7C7F, 0x1BBD, + 0x7C80, 0x1BBE, 0x7C81, 0x1BBF, 0x7C84, 0x1D96, 0x7C85, 0x1D9C, 0x7C88, + 0x1D9A, 0x7C89, 0x096A, 0x7C8A, 0x1D98, 0x7C8C, 0x1D99, 0x7C8D, 0x1D9B, + 0x7C91, 0x1D97, 0x7C92, 0x0B50, 0x7C94, 0x1FE0, 0x7C95, 0x0B52, 0x7C96, + 0x1FE2, 0x7C97, 0x0B51, 0x7C98, 0x1FE1, 0x7C9E, 0x225D, 0x7C9F, 0x0D0D, + 0x7CA1, 0x225F, 0x7CA2, 0x225C, 0x7CA3, 0x1FE3, 0x7CA5, 0x0D0E, 0x7CA7, + 0x36ED, 0x7CA8, 0x225E, 0x7CAF, 0x24FE, 0x7CB1, 0x0EBB, 0x7CB2, 0x24FC, + 0x7CB3, 0x0EBC, 0x7CB4, 0x24FD, 0x7CB5, 0x0EBD, 0x7CB9, 0x1058, 0x7CBA, + 0x277D, 0x7CBB, 0x277A, 0x7CBC, 0x277C, 0x7CBD, 0x1059, 0x7CBE, 0x105A, + 0x7CBF, 0x277B, 0x7CC5, 0x29B0, 0x7CC8, 0x29B1, 0x7CCA, 0x11D4, 0x7CCB, + 0x29B3, 0x7CCC, 0x29B2, 0x7CCE, 0x0121, 0x7CD0, 0x2C11, 0x7CD1, 0x2C12, + 0x7CD2, 0x2C0E, 0x7CD4, 0x2C0F, 0x7CD5, 0x131E, 0x7CD6, 0x131F, 0x7CD7, + 0x2C10, 0x7CD9, 0x1433, 0x7CDC, 0x142F, 0x7CDD, 0x1434, 0x7CDE, 0x1430, + 0x7CDF, 0x1432, 0x7CE0, 0x142E, 0x7CE2, 0x1431, 0x7CE7, 0x150B, 0x7CE8, + 0x2DED, 0x7CEA, 0x30D9, 0x7CEC, 0x30D8, 0x7CEE, 0x3213, 0x7CEF, 0x162D, + 0x7CF0, 0x162E, 0x7CF1, 0x33A1, 0x7CF2, 0x32EB, 0x7CF4, 0x33A0, 0x7CF6, + 0x34D8, 0x7CF7, 0x351D, 0x7CF8, 0x03F8, 0x7CFB, 0x04FB, 0x7CFD, 0x1A26, + 0x7CFE, 0x0667, 0x7D00, 0x07CF, 0x7D01, 0x1BC2, 0x7D02, 0x07CD, 0x7D03, + 0x1BC0, 0x7D04, 0x07D2, 0x7D05, 0x07CE, 0x7D06, 0x07D3, 0x7D07, 0x07D1, + 0x7D08, 0x1BC1, 0x7D09, 0x07D0, 0x7D0A, 0x096E, 0x7D0B, 0x096D, 0x7D0C, + 0x1DA7, 0x7D0D, 0x0976, 0x7D0E, 0x1DA0, 0x7D0F, 0x1DA6, 0x7D10, 0x0972, + 0x7D11, 0x1D9F, 0x7D12, 0x1DA5, 0x7D13, 0x1DA3, 0x7D14, 0x0971, 0x7D15, + 0x0973, 0x7D16, 0x1DA2, 0x7D17, 0x096C, 0x7D18, 0x1DA1, 0x7D19, 0x0977, + 0x7D1A, 0x0974, 0x7D1B, 0x0978, 0x7D1C, 0x0975, 0x7D1D, 0x1D9E, 0x7D1E, + 0x1D9D, 0x7D1F, 0x1DA4, 0x7D20, 0x096F, 0x7D21, 0x096B, 0x7D22, 0x0970, + 0x7D28, 0x1FF2, 0x7D29, 0x1FEB, 0x7D2B, 0x0D13, 0x7D2C, 0x1FEA, 0x7D2E, + 0x0B56, 0x7D2F, 0x0B5D, 0x7D30, 0x0B5A, 0x7D31, 0x0B60, 0x7D32, 0x0B5F, + 0x7D33, 0x0B5B, 0x7D35, 0x1FE4, 0x7D36, 0x1FE7, 0x7D38, 0x1FE6, 0x7D39, + 0x0B57, 0x7D3A, 0x1FE8, 0x7D3B, 0x1FF1, 0x7D3C, 0x0B58, 0x7D3D, 0x1FE5, + 0x7D3E, 0x1FEE, 0x7D3F, 0x1FEF, 0x7D40, 0x0B59, 0x7D41, 0x1FEC, 0x7D42, + 0x0B5E, 0x7D43, 0x0B54, 0x7D44, 0x0B5C, 0x7D45, 0x1FE9, 0x7D46, 0x0B53, + 0x7D47, 0x1FED, 0x7D4A, 0x1FF0, 0x7D4E, 0x2270, 0x7D4F, 0x2267, 0x7D50, + 0x0D10, 0x7D51, 0x226E, 0x7D52, 0x226B, 0x7D53, 0x2263, 0x7D54, 0x226C, + 0x7D55, 0x0D12, 0x7D56, 0x2264, 0x7D58, 0x2260, 0x7D5B, 0x0EC3, 0x7D5C, + 0x2269, 0x7D5E, 0x0D0F, 0x7D5F, 0x226F, 0x7D61, 0x0D16, 0x7D62, 0x0D18, + 0x7D63, 0x2262, 0x7D66, 0x0D17, 0x7D67, 0x2265, 0x7D68, 0x0D11, 0x7D69, + 0x226D, 0x7D6A, 0x2266, 0x7D6B, 0x226A, 0x7D6D, 0x2268, 0x7D6E, 0x0D14, + 0x7D6F, 0x2261, 0x7D70, 0x0D19, 0x7D71, 0x0B55, 0x7D72, 0x0D15, 0x7D73, + 0x0D1A, 0x7D79, 0x0EBF, 0x7D7A, 0x2505, 0x7D7B, 0x2507, 0x7D7C, 0x2509, + 0x7D7D, 0x250D, 0x7D7F, 0x2503, 0x7D80, 0x2501, 0x7D81, 0x0EC1, 0x7D83, + 0x2508, 0x7D84, 0x250C, 0x7D85, 0x2504, 0x7D86, 0x2500, 0x7D88, 0x24FF, + 0x7D8C, 0x250A, 0x7D8D, 0x2502, 0x7D8E, 0x2506, 0x7D8F, 0x0EC2, 0x7D91, + 0x0EC0, 0x7D92, 0x250E, 0x7D93, 0x0EBE, 0x7D94, 0x250B, 0x7D96, 0x278E, + 0x7D9C, 0x105D, 0x7D9D, 0x2786, 0x7D9E, 0x11E1, 0x7D9F, 0x2790, 0x7DA0, + 0x1060, 0x7DA1, 0x2794, 0x7DA2, 0x1066, 0x7DA3, 0x2781, 0x7DA6, 0x2791, + 0x7DA7, 0x277E, 0x7DA9, 0x2793, 0x7DAA, 0x2782, 0x7DAC, 0x106D, 0x7DAD, + 0x106A, 0x7DAE, 0x2792, 0x7DAF, 0x278C, 0x7DB0, 0x105C, 0x7DB1, 0x1064, + 0x7DB2, 0x1063, 0x7DB4, 0x1062, 0x7DB5, 0x1068, 0x7DB7, 0x277F, 0x7DB8, + 0x1069, 0x7DB9, 0x278D, 0x7DBA, 0x1065, 0x7DBB, 0x105B, 0x7DBC, 0x278F, + 0x7DBD, 0x105E, 0x7DBE, 0x105F, 0x7DBF, 0x1067, 0x7DC0, 0x2784, 0x7DC1, + 0x2783, 0x7DC2, 0x2780, 0x7DC4, 0x2788, 0x7DC5, 0x2785, 0x7DC6, 0x2789, + 0x7DC7, 0x106C, 0x7DC9, 0x2795, 0x7DCA, 0x1061, 0x7DCB, 0x278A, 0x7DCC, + 0x278B, 0x7DCE, 0x2787, 0x7DD2, 0x106B, 0x7DD7, 0x29B8, 0x7DD8, 0x11D9, + 0x7DD9, 0x11E2, 0x7DDA, 0x11DE, 0x7DDB, 0x29B5, 0x7DDD, 0x11DB, 0x7DDE, + 0x11DF, 0x7DDF, 0x29C1, 0x7DE0, 0x11D5, 0x7DE1, 0x29B9, 0x7DE3, 0x11DD, + 0x7DE6, 0x29BC, 0x7DE7, 0x29B7, 0x7DE8, 0x11DC, 0x7DE9, 0x11E0, 0x7DEA, + 0x29B6, 0x7DEC, 0x11DA, 0x7DEE, 0x29C0, 0x7DEF, 0x11D7, 0x7DF0, 0x29BF, + 0x7DF1, 0x29BE, 0x7DF2, 0x11E3, 0x7DF3, 0x28C8, 0x7DF4, 0x11D6, 0x7DF6, + 0x29BD, 0x7DF7, 0x29B4, 0x7DF9, 0x11E4, 0x7DFA, 0x29BB, 0x7DFB, 0x11D8, + 0x7E03, 0x29BA, 0x7E08, 0x1322, 0x7E09, 0x1327, 0x7E0A, 0x1320, 0x7E0B, + 0x2C1F, 0x7E0C, 0x2C16, 0x7E0D, 0x2C22, 0x7E0E, 0x2C1A, 0x7E0F, 0x2C20, + 0x7E10, 0x1328, 0x7E11, 0x1321, 0x7E12, 0x2C13, 0x7E13, 0x2C19, 0x7E14, + 0x2C23, 0x7E15, 0x2C1C, 0x7E16, 0x2C21, 0x7E17, 0x2C15, 0x7E1A, 0x2C1D, + 0x7E1B, 0x1323, 0x7E1C, 0x2C1B, 0x7E1D, 0x1326, 0x7E1E, 0x1325, 0x7E1F, + 0x2C17, 0x7E20, 0x2C18, 0x7E21, 0x2C14, 0x7E22, 0x2C1E, 0x7E23, 0x1324, + 0x7E24, 0x2C25, 0x7E25, 0x2C24, 0x7E29, 0x2DF8, 0x7E2A, 0x2DF4, 0x7E2B, + 0x143B, 0x7E2D, 0x2DEE, 0x7E2E, 0x1435, 0x7E2F, 0x1445, 0x7E30, 0x2DFA, + 0x7E31, 0x143D, 0x7E32, 0x1439, 0x7E33, 0x2DF1, 0x7E34, 0x1440, 0x7E35, + 0x1443, 0x7E36, 0x2DFC, 0x7E37, 0x1438, 0x7E38, 0x2DF3, 0x7E39, 0x1441, + 0x7E3A, 0x2DFE, 0x7E3B, 0x2DFB, 0x7E3C, 0x2DEF, 0x7E3D, 0x143C, 0x7E3E, + 0x1436, 0x7E3F, 0x1444, 0x7E40, 0x2DF6, 0x7E41, 0x143F, 0x7E42, 0x2DF0, + 0x7E43, 0x143A, 0x7E44, 0x2DFD, 0x7E45, 0x143E, 0x7E46, 0x1437, 0x7E47, + 0x2DF7, 0x7E48, 0x1442, 0x7E49, 0x2DF5, 0x7E4C, 0x2DF9, 0x7E50, 0x2F83, + 0x7E51, 0x2F89, 0x7E52, 0x1511, 0x7E53, 0x2F8C, 0x7E54, 0x150C, 0x7E55, + 0x150D, 0x7E56, 0x2F84, 0x7E57, 0x2F8B, 0x7E58, 0x2F86, 0x7E59, 0x1512, + 0x7E5A, 0x150F, 0x7E5C, 0x2F82, 0x7E5E, 0x150E, 0x7E5F, 0x2F88, 0x7E60, + 0x2F8A, 0x7E61, 0x1510, 0x7E62, 0x2F87, 0x7E63, 0x2F85, 0x7E68, 0x30E3, + 0x7E69, 0x15AC, 0x7E6A, 0x15AD, 0x7E6B, 0x15A9, 0x7E6D, 0x15AA, 0x7E6F, + 0x30DF, 0x7E70, 0x30DD, 0x7E72, 0x30E1, 0x7E73, 0x15AE, 0x7E74, 0x30E2, + 0x7E75, 0x30DB, 0x7E76, 0x30DA, 0x7E77, 0x30DE, 0x7E78, 0x30DC, 0x7E79, + 0x15AB, 0x7E7A, 0x30E0, 0x7E7B, 0x3214, 0x7E7C, 0x1631, 0x7E7D, 0x1630, + 0x7E7E, 0x3215, 0x7E80, 0x3217, 0x7E81, 0x3216, 0x7E82, 0x1632, 0x7E86, + 0x32F0, 0x7E87, 0x32ED, 0x7E88, 0x32EE, 0x7E8A, 0x32EC, 0x7E8B, 0x32EF, + 0x7E8C, 0x1683, 0x7E8D, 0x32F1, 0x7E8F, 0x1682, 0x7E91, 0x33A2, 0x7E93, + 0x1703, 0x7E94, 0x1705, 0x7E95, 0x342C, 0x7E96, 0x1704, 0x7E97, 0x3494, + 0x7E98, 0x34DA, 0x7E99, 0x34DC, 0x7E9A, 0x34D9, 0x7E9B, 0x34DB, 0x7E9C, + 0x1759, 0x7F36, 0x03F9, 0x7F38, 0x07D4, 0x7F39, 0x1D1F, 0x7F3A, 0x0979, + 0x7F3D, 0x0B61, 0x7F3E, 0x2271, 0x7F3F, 0x2272, 0x7F43, 0x2C26, 0x7F44, + 0x1446, 0x7F45, 0x2DFF, 0x7F48, 0x1513, 0x7F4A, 0x30E5, 0x7F4B, 0x30E4, + 0x7F4C, 0x1633, 0x7F4D, 0x32F2, 0x7F4F, 0x33A3, 0x7F50, 0x1726, 0x7F51, + 0x1812, 0x7F54, 0x0668, 0x7F55, 0x04FC, 0x7F58, 0x1BC3, 0x7F5B, 0x1DAD, + 0x7F5C, 0x1DA8, 0x7F5D, 0x1DAC, 0x7F5E, 0x1DAA, 0x7F5F, 0x097A, 0x7F60, + 0x1DAB, 0x7F61, 0x1DA9, 0x7F63, 0x1FF3, 0x7F65, 0x2273, 0x7F66, 0x2274, + 0x7F67, 0x2511, 0x7F68, 0x2512, 0x7F69, 0x0EC5, 0x7F6A, 0x0EC6, 0x7F6B, + 0x2510, 0x7F6C, 0x2513, 0x7F6D, 0x250F, 0x7F6E, 0x0EC4, 0x7F70, 0x106E, + 0x7F72, 0x0EC7, 0x7F73, 0x2796, 0x7F75, 0x11E5, 0x7F76, 0x29C2, 0x7F77, + 0x11E6, 0x7F79, 0x1329, 0x7F7A, 0x2C29, 0x7F7B, 0x2C27, 0x7F7C, 0x2C28, + 0x7F7D, 0x2E02, 0x7F7E, 0x2E01, 0x7F7F, 0x2E00, 0x7F83, 0x30E6, 0x7F85, + 0x15AF, 0x7F86, 0x30E7, 0x7F87, 0x33A4, 0x7F88, 0x1727, 0x7F89, 0x3495, + 0x7F8A, 0x03FA, 0x7F8B, 0x066A, 0x7F8C, 0x0669, 0x7F8D, 0x1BC5, 0x7F8E, + 0x07D5, 0x7F91, 0x1BC4, 0x7F92, 0x1DAF, 0x7F94, 0x097B, 0x7F95, 0x1FF4, + 0x7F96, 0x1DAE, 0x7F9A, 0x0B63, 0x7F9B, 0x1FF7, 0x7F9C, 0x1FF5, 0x7F9D, + 0x1FF6, 0x7F9E, 0x0B62, 0x7FA0, 0x2276, 0x7FA1, 0x2277, 0x7FA2, 0x2275, + 0x7FA4, 0x0ECA, 0x7FA5, 0x2515, 0x7FA6, 0x2514, 0x7FA7, 0x2516, 0x7FA8, + 0x0EC9, 0x7FA9, 0x0EC8, 0x7FAC, 0x29C3, 0x7FAD, 0x29C5, 0x7FAF, 0x11E7, + 0x7FB0, 0x29C4, 0x7FB1, 0x2C2A, 0x7FB2, 0x132A, 0x7FB3, 0x2F8E, 0x7FB5, + 0x2F8D, 0x7FB6, 0x15B0, 0x7FB7, 0x30E8, 0x7FB8, 0x15B2, 0x7FB9, 0x15B1, + 0x7FBA, 0x3218, 0x7FBB, 0x32F3, 0x7FBC, 0x1684, 0x7FBD, 0x03FB, 0x7FBE, + 0x1BC6, 0x7FBF, 0x07D6, 0x7FC0, 0x1DB2, 0x7FC1, 0x097D, 0x7FC2, 0x1DB1, + 0x7FC3, 0x1DB0, 0x7FC5, 0x097C, 0x7FC7, 0x1FFD, 0x7FC9, 0x1FFF, 0x7FCA, + 0x1FF8, 0x7FCB, 0x1FF9, 0x7FCC, 0x0B64, 0x7FCD, 0x1FFA, 0x7FCE, 0x0B65, + 0x7FCF, 0x1FFE, 0x7FD0, 0x1FFB, 0x7FD1, 0x1FFC, 0x7FD2, 0x0B66, 0x7FD4, + 0x0D1C, 0x7FD5, 0x0D1D, 0x7FD7, 0x2278, 0x7FDB, 0x2517, 0x7FDC, 0x2518, + 0x7FDE, 0x279A, 0x7FDF, 0x1071, 0x7FE0, 0x106F, 0x7FE1, 0x1070, 0x7FE2, + 0x2797, 0x7FE3, 0x2798, 0x7FE5, 0x2799, 0x7FE6, 0x29CA, 0x7FE8, 0x29CB, + 0x7FE9, 0x11E8, 0x7FEA, 0x29C8, 0x7FEB, 0x29C7, 0x7FEC, 0x29C9, 0x7FED, + 0x29C6, 0x7FEE, 0x132D, 0x7FEF, 0x2C2B, 0x7FF0, 0x132B, 0x7FF1, 0x132C, + 0x7FF2, 0x2E04, 0x7FF3, 0x1447, 0x7FF4, 0x2E03, 0x7FF5, 0x2EFF, 0x7FF7, + 0x2F8F, 0x7FF8, 0x2F90, 0x7FF9, 0x1514, 0x7FFB, 0x1515, 0x7FFC, 0x1448, + 0x7FFD, 0x30E9, 0x7FFE, 0x30EA, 0x7FFF, 0x3219, 0x8000, 0x1634, 0x8001, + 0x03FC, 0x8003, 0x03FD, 0x8004, 0x097F, 0x8005, 0x066B, 0x8006, 0x097E, + 0x8007, 0x1BC7, 0x800B, 0x0D1E, 0x800C, 0x03FE, 0x800D, 0x07D8, 0x800E, + 0x1BC8, 0x800F, 0x1BC9, 0x8010, 0x07D7, 0x8011, 0x07D9, 0x8012, 0x03FF, + 0x8014, 0x1BCA, 0x8015, 0x0981, 0x8016, 0x1DB3, 0x8017, 0x0983, 0x8018, + 0x0980, 0x8019, 0x0982, 0x801B, 0x2002, 0x801C, 0x0B67, 0x801E, 0x2001, + 0x801F, 0x2000, 0x8021, 0x2519, 0x8024, 0x279B, 0x8026, 0x11E9, 0x8028, + 0x132E, 0x8029, 0x2C2D, 0x802A, 0x2C2C, 0x802C, 0x2E05, 0x8030, 0x32F4, + 0x8033, 0x0400, 0x8034, 0x18D8, 0x8035, 0x1A27, 0x8036, 0x07DA, 0x8037, + 0x1BCB, 0x8039, 0x1DB5, 0x803D, 0x0984, 0x803E, 0x1DB4, 0x803F, 0x0985, + 0x8043, 0x2004, 0x8046, 0x0B69, 0x8047, 0x2003, 0x8048, 0x2005, 0x804A, + 0x0B68, 0x804F, 0x227A, 0x8050, 0x227B, 0x8051, 0x2279, 0x8052, 0x0D1F, + 0x8056, 0x0ECB, 0x8058, 0x0ECC, 0x805A, 0x1073, 0x805C, 0x279D, 0x805D, + 0x279C, 0x805E, 0x1072, 0x8064, 0x29CC, 0x8067, 0x29CD, 0x806C, 0x2C2E, + 0x806F, 0x144C, 0x8070, 0x144B, 0x8071, 0x1449, 0x8072, 0x144A, 0x8073, + 0x144D, 0x8075, 0x2F91, 0x8076, 0x1517, 0x8077, 0x1516, 0x8078, 0x30EB, + 0x8079, 0x321A, 0x807D, 0x16D3, 0x807E, 0x16D2, 0x807F, 0x0401, 0x8082, + 0x1CEC, 0x8084, 0x0ECE, 0x8085, 0x0D20, 0x8086, 0x0ECD, 0x8087, 0x1074, + 0x8089, 0x0402, 0x808A, 0x17B3, 0x808B, 0x0403, 0x808C, 0x0404, 0x808F, + 0x1A28, 0x8090, 0x18DB, 0x8092, 0x18DC, 0x8093, 0x04FE, 0x8095, 0x18D9, + 0x8096, 0x04FD, 0x8098, 0x0500, 0x8099, 0x18DA, 0x809A, 0x0502, 0x809B, + 0x0501, 0x809C, 0x18DD, 0x809D, 0x04FF, 0x80A1, 0x0670, 0x80A2, 0x066E, + 0x80A3, 0x1A2A, 0x80A5, 0x066D, 0x80A9, 0x0672, 0x80AA, 0x0674, 0x80AB, + 0x0671, 0x80AD, 0x1A2D, 0x80AE, 0x1A29, 0x80AF, 0x0675, 0x80B1, 0x066F, + 0x80B2, 0x0503, 0x80B4, 0x0673, 0x80B5, 0x1A2C, 0x80B8, 0x1A2B, 0x80BA, + 0x066C, 0x80C2, 0x1BD1, 0x80C3, 0x07DE, 0x80C4, 0x07DF, 0x80C5, 0x1BD3, + 0x80C7, 0x1BCD, 0x80C8, 0x1BD0, 0x80C9, 0x1BD9, 0x80CA, 0x1BD7, 0x80CC, + 0x07E0, 0x80CD, 0x1BDD, 0x80CE, 0x07E3, 0x80CF, 0x1BDA, 0x80D0, 0x1BD2, + 0x80D1, 0x1BCF, 0x80D4, 0x227D, 0x80D5, 0x1BD8, 0x80D6, 0x07DB, 0x80D7, + 0x1BDB, 0x80D8, 0x1BCC, 0x80D9, 0x1BD5, 0x80DA, 0x07DD, 0x80DB, 0x07E2, + 0x80DC, 0x1BD6, 0x80DD, 0x07E6, 0x80DE, 0x07E4, 0x80E0, 0x1BCE, 0x80E1, + 0x07E1, 0x80E3, 0x1BD4, 0x80E4, 0x07E5, 0x80E5, 0x07DC, 0x80E6, 0x1BDC, + 0x80ED, 0x098A, 0x80EF, 0x0993, 0x80F0, 0x0988, 0x80F1, 0x0986, 0x80F2, + 0x1DB7, 0x80F3, 0x098E, 0x80F4, 0x098B, 0x80F5, 0x1DB9, 0x80F8, 0x098D, + 0x80F9, 0x1DB8, 0x80FA, 0x1DB6, 0x80FB, 0x1DBB, 0x80FC, 0x0992, 0x80FD, + 0x0990, 0x80FE, 0x227C, 0x8100, 0x1DBC, 0x8101, 0x1DBA, 0x8102, 0x0987, + 0x8105, 0x0989, 0x8106, 0x098C, 0x8108, 0x098F, 0x810A, 0x0991, 0x8115, + 0x200F, 0x8116, 0x0B6B, 0x8118, 0x2006, 0x8119, 0x2008, 0x811B, 0x2009, + 0x811D, 0x2011, 0x811E, 0x200D, 0x811F, 0x200B, 0x8121, 0x200E, 0x8122, + 0x2012, 0x8123, 0x0B6C, 0x8124, 0x0B70, 0x8125, 0x2007, 0x8127, 0x2010, + 0x8129, 0x0B6E, 0x812B, 0x0B6D, 0x812C, 0x200C, 0x812D, 0x200A, 0x812F, + 0x0B6A, 0x8130, 0x0B6F, 0x8139, 0x0D26, 0x813A, 0x2285, 0x813D, 0x2283, + 0x813E, 0x0D28, 0x8143, 0x227E, 0x8144, 0x2527, 0x8146, 0x0D27, 0x8147, + 0x2282, 0x814A, 0x227F, 0x814B, 0x0D23, 0x814C, 0x0D29, 0x814D, 0x2284, + 0x814E, 0x0D25, 0x814F, 0x2281, 0x8150, 0x1075, 0x8151, 0x0D24, 0x8152, + 0x2280, 0x8153, 0x0D2A, 0x8154, 0x0D22, 0x8155, 0x0D21, 0x815B, 0x251F, + 0x815C, 0x251D, 0x815E, 0x2523, 0x8160, 0x251B, 0x8161, 0x2528, 0x8162, + 0x2520, 0x8164, 0x251A, 0x8165, 0x0ED2, 0x8166, 0x0ED8, 0x8167, 0x2525, + 0x8169, 0x251E, 0x816B, 0x0ED5, 0x816E, 0x0ED3, 0x816F, 0x2526, 0x8170, + 0x0ED0, 0x8171, 0x0ECF, 0x8172, 0x2521, 0x8173, 0x0ED4, 0x8174, 0x0D2B, + 0x8176, 0x2524, 0x8177, 0x251C, 0x8178, 0x0ED1, 0x8179, 0x0ED6, 0x817A, + 0x0ED7, 0x817F, 0x107A, 0x8180, 0x1076, 0x8182, 0x107B, 0x8183, 0x27A0, + 0x8186, 0x279F, 0x8187, 0x27A1, 0x8188, 0x1078, 0x8189, 0x279E, 0x818A, + 0x1079, 0x818B, 0x27A4, 0x818C, 0x27A3, 0x818D, 0x27A2, 0x818F, 0x1077, + 0x8195, 0x29D1, 0x8197, 0x29D4, 0x8198, 0x11EF, 0x8199, 0x29D3, 0x819A, + 0x11EE, 0x819B, 0x11EA, 0x819C, 0x11EB, 0x819D, 0x11EC, 0x819E, 0x29D0, + 0x819F, 0x29CF, 0x81A0, 0x11ED, 0x81A2, 0x29D2, 0x81A3, 0x29CE, 0x81A6, + 0x2C30, 0x81A7, 0x2C3A, 0x81A8, 0x1331, 0x81A9, 0x1330, 0x81AB, 0x2C34, + 0x81AC, 0x2C36, 0x81AE, 0x2C31, 0x81B0, 0x2C35, 0x81B1, 0x2C2F, 0x81B2, + 0x2C38, 0x81B3, 0x132F, 0x81B4, 0x2C37, 0x81B5, 0x2C33, 0x81B7, 0x2C39, + 0x81B9, 0x2C32, 0x81BA, 0x1450, 0x81BB, 0x2E06, 0x81BC, 0x2E0C, 0x81BD, + 0x1454, 0x81BE, 0x1456, 0x81BF, 0x1453, 0x81C0, 0x1452, 0x81C2, 0x1451, + 0x81C3, 0x144F, 0x81C4, 0x2E07, 0x81C5, 0x2E0A, 0x81C6, 0x144E, 0x81C7, + 0x2E0B, 0x81C9, 0x1455, 0x81CA, 0x2E09, 0x81CC, 0x2E08, 0x81CD, 0x1518, + 0x81CF, 0x1519, 0x81D0, 0x2F94, 0x81D1, 0x2F92, 0x81D2, 0x2F93, 0x81D5, + 0x30ED, 0x81D7, 0x30EC, 0x81D8, 0x15B3, 0x81D9, 0x321C, 0x81DA, 0x1635, + 0x81DB, 0x321B, 0x81DD, 0x32F5, 0x81DE, 0x33A5, 0x81DF, 0x16D4, 0x81E0, + 0x34DD, 0x81E1, 0x34DE, 0x81E2, 0x1706, 0x81E3, 0x0405, 0x81E5, 0x0676, + 0x81E6, 0x2286, 0x81E7, 0x107C, 0x81E8, 0x1457, 0x81E9, 0x2E0D, 0x81EA, + 0x0406, 0x81EC, 0x0995, 0x81ED, 0x0994, 0x81EE, 0x2287, 0x81F2, 0x2C3B, + 0x81F3, 0x0407, 0x81F4, 0x07E7, 0x81F7, 0x2288, 0x81F8, 0x2289, 0x81F9, + 0x228A, 0x81FA, 0x107D, 0x81FB, 0x1332, 0x81FC, 0x0408, 0x81FE, 0x0677, + 0x81FF, 0x1BDE, 0x8200, 0x0996, 0x8201, 0x1DBD, 0x8202, 0x0B71, 0x8204, + 0x228B, 0x8205, 0x0ED9, 0x8207, 0x107E, 0x8208, 0x1333, 0x8209, 0x1458, + 0x820A, 0x151A, 0x820B, 0x30EE, 0x820C, 0x0409, 0x820D, 0x0678, 0x8210, + 0x0997, 0x8211, 0x2013, 0x8212, 0x0D2C, 0x8214, 0x107F, 0x8215, 0x27A5, + 0x8216, 0x29D5, 0x821B, 0x040A, 0x821C, 0x0D2D, 0x821D, 0x2529, 0x821E, + 0x1080, 0x821F, 0x040B, 0x8220, 0x1A2E, 0x8221, 0x1BDF, 0x8222, 0x07E8, + 0x8225, 0x1DBF, 0x8228, 0x099A, 0x822A, 0x0998, 0x822B, 0x0999, 0x822C, + 0x099B, 0x822F, 0x1DBE, 0x8232, 0x2018, 0x8233, 0x2015, 0x8234, 0x2017, + 0x8235, 0x0B72, 0x8236, 0x0B74, 0x8237, 0x0B73, 0x8238, 0x2014, 0x8239, + 0x0B75, 0x823A, 0x2016, 0x823C, 0x228C, 0x823D, 0x228D, 0x823F, 0x228E, + 0x8240, 0x252C, 0x8242, 0x252D, 0x8244, 0x252B, 0x8245, 0x252E, 0x8247, + 0x0EDA, 0x8249, 0x252A, 0x824B, 0x1081, 0x824E, 0x29DA, 0x824F, 0x29D6, + 0x8250, 0x29D9, 0x8251, 0x29DB, 0x8252, 0x29D8, 0x8253, 0x29D7, 0x8255, + 0x2C3C, 0x8256, 0x2C3D, 0x8257, 0x2C3E, 0x8258, 0x1334, 0x8259, 0x1335, + 0x825A, 0x2E0F, 0x825B, 0x2E0E, 0x825C, 0x2E10, 0x825E, 0x2F96, 0x825F, + 0x2F95, 0x8261, 0x30F0, 0x8263, 0x30F1, 0x8264, 0x30EF, 0x8266, 0x1636, + 0x8268, 0x321D, 0x8269, 0x321E, 0x826B, 0x33A6, 0x826C, 0x342D, 0x826D, + 0x3496, 0x826E, 0x040C, 0x826F, 0x0504, 0x8271, 0x1459, 0x8272, 0x040D, + 0x8274, 0x2019, 0x8275, 0x228F, 0x8277, 0x172E, 0x8278, 0x1813, 0x827C, + 0x1814, 0x827D, 0x1816, 0x827E, 0x040E, 0x827F, 0x1817, 0x8280, 0x1815, + 0x8283, 0x18E5, 0x8284, 0x18E6, 0x8285, 0x18E0, 0x828A, 0x18E4, 0x828B, + 0x0506, 0x828D, 0x0507, 0x828E, 0x18E1, 0x828F, 0x18DF, 0x8290, 0x18DE, + 0x8291, 0x18E2, 0x8292, 0x0505, 0x8293, 0x18E3, 0x8294, 0x1BE0, 0x8298, + 0x1A33, 0x8299, 0x067B, 0x829A, 0x1A32, 0x829B, 0x1A34, 0x829D, 0x067A, + 0x829E, 0x1A39, 0x829F, 0x067E, 0x82A0, 0x1A2F, 0x82A1, 0x1A3D, 0x82A2, + 0x1A43, 0x82A3, 0x0685, 0x82A4, 0x1A40, 0x82A5, 0x0682, 0x82A7, 0x1A36, + 0x82A8, 0x1A3C, 0x82A9, 0x1A3E, 0x82AB, 0x1A31, 0x82AC, 0x0681, 0x82AD, + 0x067C, 0x82AE, 0x1A37, 0x82AF, 0x0683, 0x82B0, 0x0686, 0x82B1, 0x0680, + 0x82B3, 0x0679, 0x82B4, 0x1A3B, 0x82B5, 0x1A35, 0x82B6, 0x1A42, 0x82B7, + 0x0688, 0x82B8, 0x0684, 0x82B9, 0x067F, 0x82BA, 0x1A3A, 0x82BB, 0x099C, + 0x82BC, 0x1A38, 0x82BD, 0x067D, 0x82BE, 0x0687, 0x82C0, 0x1A30, 0x82C2, + 0x1A3F, 0x82C3, 0x1A41, 0x82D1, 0x07F9, 0x82D2, 0x07F3, 0x82D3, 0x07FB, + 0x82D4, 0x07F8, 0x82D5, 0x1BE7, 0x82D6, 0x1BEA, 0x82D7, 0x07F4, 0x82D9, + 0x1BE1, 0x82DB, 0x07ED, 0x82DC, 0x07F7, 0x82DE, 0x07FA, 0x82DF, 0x07FC, + 0x82E0, 0x1BF6, 0x82E1, 0x1BED, 0x82E3, 0x07EC, 0x82E4, 0x1BF5, 0x82E5, + 0x07F0, 0x82E6, 0x07EE, 0x82E7, 0x07E9, 0x82E8, 0x1BE5, 0x82EA, 0x1BF4, + 0x82EB, 0x1BE9, 0x82EC, 0x1BEC, 0x82ED, 0x1BF9, 0x82EF, 0x07FD, 0x82F0, + 0x1BF3, 0x82F1, 0x07F5, 0x82F2, 0x1BEE, 0x82F3, 0x1BF8, 0x82F4, 0x1BEB, + 0x82F5, 0x1BEF, 0x82F6, 0x1BF2, 0x82F9, 0x1BE3, 0x82FA, 0x1BF7, 0x82FB, + 0x1BF1, 0x82FE, 0x1BE2, 0x8300, 0x1BE6, 0x8301, 0x07F6, 0x8302, 0x07F1, + 0x8303, 0x07EA, 0x8304, 0x07EF, 0x8305, 0x07EB, 0x8306, 0x07FE, 0x8307, + 0x1BE4, 0x8308, 0x1DD0, 0x8309, 0x07F2, 0x830C, 0x1BF0, 0x830D, 0x1A7D, + 0x8316, 0x1DD3, 0x8317, 0x09AA, 0x8319, 0x1DC3, 0x831B, 0x1DCE, 0x831C, + 0x1DCA, 0x831E, 0x1DDD, 0x8320, 0x1DD5, 0x8322, 0x1DCB, 0x8324, 0x1DD4, + 0x8325, 0x1DC5, 0x8326, 0x1DC9, 0x8327, 0x1DE0, 0x8328, 0x09AD, 0x8329, + 0x1DD8, 0x832A, 0x1DCF, 0x832B, 0x099D, 0x832C, 0x1DDE, 0x832D, 0x1DC1, + 0x832F, 0x1DD7, 0x8331, 0x09AC, 0x8332, 0x09A7, 0x8333, 0x1DC0, 0x8334, + 0x09A5, 0x8335, 0x09A4, 0x8336, 0x09A9, 0x8337, 0x1DD6, 0x8338, 0x09A1, + 0x8339, 0x09A8, 0x833A, 0x1BE8, 0x833B, 0x2290, 0x833C, 0x1DD1, 0x833F, + 0x1DC7, 0x8340, 0x09AB, 0x8341, 0x1DC8, 0x8342, 0x1DCC, 0x8343, 0x09AE, + 0x8344, 0x1DC2, 0x8345, 0x1DDA, 0x8347, 0x1DD9, 0x8348, 0x1DE1, 0x8349, + 0x09A3, 0x834A, 0x09A0, 0x834B, 0x1DDF, 0x834C, 0x1DDB, 0x834D, 0x1DD2, + 0x834E, 0x1DCD, 0x834F, 0x09A6, 0x8350, 0x09A2, 0x8351, 0x1DC4, 0x8352, + 0x099E, 0x8353, 0x1DDC, 0x8354, 0x099F, 0x8356, 0x1DC6, 0x8373, 0x201F, + 0x8374, 0x2021, 0x8375, 0x2026, 0x8376, 0x203A, 0x8377, 0x0B83, 0x8378, + 0x0B79, 0x837A, 0x201E, 0x837B, 0x0B84, 0x837C, 0x0B85, 0x837D, 0x2029, + 0x837E, 0x2030, 0x837F, 0x2036, 0x8381, 0x2023, 0x8383, 0x202A, 0x8386, + 0x0B86, 0x8387, 0x2038, 0x8388, 0x2033, 0x8389, 0x0B81, 0x838A, 0x0B7F, + 0x838B, 0x202F, 0x838C, 0x202B, 0x838D, 0x201D, 0x838E, 0x0B76, 0x838F, + 0x2022, 0x8390, 0x201A, 0x8392, 0x0B7E, 0x8393, 0x0B80, 0x8394, 0x2027, + 0x8395, 0x2024, 0x8396, 0x0B7B, 0x8397, 0x2034, 0x8398, 0x0B78, 0x8399, + 0x2025, 0x839A, 0x22B9, 0x839B, 0x202D, 0x839D, 0x202C, 0x839E, 0x0B77, + 0x83A0, 0x0B82, 0x83A2, 0x0B7A, 0x83A3, 0x201B, 0x83A4, 0x2020, 0x83A5, + 0x2031, 0x83A6, 0x2037, 0x83A7, 0x0B87, 0x83A8, 0x201C, 0x83A9, 0x2028, + 0x83AA, 0x202E, 0x83AB, 0x0B7D, 0x83AE, 0x2039, 0x83AF, 0x2032, 0x83B0, + 0x2035, 0x83BD, 0x0B7C, 0x83BF, 0x22A0, 0x83C0, 0x2294, 0x83C1, 0x0D35, + 0x83C2, 0x22B1, 0x83C3, 0x22BA, 0x83C4, 0x22BD, 0x83C5, 0x0D33, 0x83C6, + 0x229C, 0x83C7, 0x22B5, 0x83C8, 0x229D, 0x83C9, 0x22AB, 0x83CA, 0x0D40, + 0x83CB, 0x22A7, 0x83CC, 0x0D3D, 0x83CE, 0x22A8, 0x83CF, 0x2291, 0x83D1, + 0x22B6, 0x83D4, 0x0D46, 0x83D5, 0x22B3, 0x83D6, 0x22A9, 0x83D7, 0x22BF, + 0x83D8, 0x22A4, 0x83D9, 0x254E, 0x83DB, 0x22C2, 0x83DC, 0x0D44, 0x83DD, + 0x22A2, 0x83DE, 0x22AE, 0x83DF, 0x0D47, 0x83E0, 0x0D32, 0x83E1, 0x22A6, + 0x83E2, 0x22C0, 0x83E3, 0x229F, 0x83E4, 0x2298, 0x83E5, 0x22A3, 0x83E7, + 0x2297, 0x83E8, 0x2295, 0x83E9, 0x0D2E, 0x83EA, 0x22B7, 0x83EB, 0x229E, + 0x83EC, 0x22BB, 0x83EE, 0x22BC, 0x83EF, 0x0D36, 0x83F0, 0x0D3B, 0x83F1, + 0x0D37, 0x83F2, 0x0D3F, 0x83F3, 0x22B2, 0x83F4, 0x0D38, 0x83F5, 0x22AA, + 0x83F6, 0x229A, 0x83F8, 0x0D30, 0x83F9, 0x2292, 0x83FA, 0x22B4, 0x83FB, + 0x22BE, 0x83FC, 0x2299, 0x83FD, 0x0D3E, 0x83FE, 0x22C3, 0x83FF, 0x22A5, + 0x8401, 0x22A1, 0x8403, 0x0D2F, 0x8404, 0x0D43, 0x8406, 0x22B0, 0x8407, + 0x0D45, 0x8409, 0x22AC, 0x840A, 0x0D3A, 0x840B, 0x0D34, 0x840C, 0x0D3C, + 0x840D, 0x0D31, 0x840E, 0x0D42, 0x840F, 0x22AD, 0x8410, 0x229B, 0x8411, + 0x22AF, 0x8412, 0x2296, 0x8413, 0x22B8, 0x841B, 0x22C1, 0x8423, 0x2293, + 0x8429, 0x254D, 0x842B, 0x2563, 0x842C, 0x0EAC, 0x842D, 0x2552, 0x842F, + 0x2550, 0x8430, 0x253B, 0x8431, 0x0EDE, 0x8432, 0x254B, 0x8433, 0x255F, + 0x8434, 0x2547, 0x8435, 0x0EE6, 0x8436, 0x255E, 0x8437, 0x2545, 0x8438, + 0x0D41, 0x8439, 0x2555, 0x843A, 0x2546, 0x843B, 0x255C, 0x843C, 0x0EE5, + 0x843D, 0x0EDD, 0x843F, 0x2530, 0x8440, 0x2538, 0x8442, 0x2551, 0x8443, + 0x2549, 0x8444, 0x2562, 0x8445, 0x254C, 0x8446, 0x0EEB, 0x8447, 0x255D, + 0x8449, 0x0EE2, 0x844B, 0x254F, 0x844C, 0x2557, 0x844D, 0x253C, 0x844E, + 0x2556, 0x8450, 0x2567, 0x8451, 0x2537, 0x8452, 0x2558, 0x8454, 0x2565, + 0x8456, 0x2531, 0x8457, 0x0D39, 0x8459, 0x253F, 0x845A, 0x253E, 0x845B, + 0x0EE4, 0x845D, 0x2542, 0x845E, 0x2544, 0x845F, 0x2553, 0x8460, 0x2564, + 0x8461, 0x0EE7, 0x8463, 0x0EE8, 0x8465, 0x2536, 0x8466, 0x0EE0, 0x8467, + 0x253A, 0x8468, 0x2560, 0x8469, 0x0EE9, 0x846B, 0x0EE1, 0x846C, 0x0EE3, + 0x846D, 0x0EEA, 0x846E, 0x2566, 0x846F, 0x2559, 0x8470, 0x2554, 0x8473, + 0x2541, 0x8474, 0x2540, 0x8475, 0x0EDF, 0x8476, 0x2532, 0x8477, 0x0EDC, + 0x8478, 0x254A, 0x8479, 0x2533, 0x847A, 0x2548, 0x847D, 0x253D, 0x847E, + 0x2561, 0x8482, 0x0EDB, 0x8486, 0x2539, 0x848D, 0x2535, 0x848E, 0x255B, + 0x848F, 0x2534, 0x8490, 0x108E, 0x8491, 0x27CD, 0x8494, 0x27BC, 0x8497, + 0x27A6, 0x8498, 0x27C4, 0x8499, 0x1086, 0x849A, 0x27B5, 0x849B, 0x27BF, + 0x849C, 0x1089, 0x849D, 0x27B8, 0x849E, 0x1087, 0x849F, 0x27A9, 0x84A0, + 0x27C7, 0x84A1, 0x27A8, 0x84A2, 0x27BB, 0x84A4, 0x27A7, 0x84A7, 0x27B9, + 0x84A8, 0x27C2, 0x84A9, 0x27C0, 0x84AA, 0x27B4, 0x84AB, 0x27AF, 0x84AC, + 0x27AD, 0x84AE, 0x27AE, 0x84AF, 0x27C1, 0x84B0, 0x27CC, 0x84B1, 0x27B6, + 0x84B2, 0x1088, 0x84B4, 0x27B1, 0x84B6, 0x27C5, 0x84B8, 0x108B, 0x84B9, + 0x27B0, 0x84BA, 0x27AA, 0x84BB, 0x27BA, 0x84BC, 0x108F, 0x84BF, 0x1083, + 0x84C0, 0x108C, 0x84C1, 0x27B2, 0x84C2, 0x27AC, 0x84C4, 0x1085, 0x84C5, + 0x255A, 0x84C6, 0x1084, 0x84C7, 0x27BD, 0x84C9, 0x1082, 0x84CA, 0x1091, + 0x84CB, 0x108A, 0x84CC, 0x27BE, 0x84CD, 0x27B3, 0x84CE, 0x27AB, 0x84CF, + 0x27C6, 0x84D0, 0x27B7, 0x84D1, 0x1090, 0x84D2, 0x27CA, 0x84D3, 0x108D, + 0x84D4, 0x27C9, 0x84D6, 0x27C3, 0x84D7, 0x27C8, 0x84DB, 0x27CB, 0x84E7, + 0x2A03, 0x84E8, 0x2A04, 0x84E9, 0x29F7, 0x84EA, 0x29F6, 0x84EB, 0x29F2, + 0x84EC, 0x11FB, 0x84EE, 0x11F3, 0x84EF, 0x2A06, 0x84F0, 0x2A05, 0x84F1, + 0x252F, 0x84F2, 0x29EF, 0x84F3, 0x29F3, 0x84F4, 0x29ED, 0x84F6, 0x2A00, + 0x84F7, 0x29F1, 0x84F9, 0x2A07, 0x84FA, 0x29EA, 0x84FB, 0x29E8, 0x84FC, + 0x29F4, 0x84FD, 0x29FE, 0x84FE, 0x29F9, 0x84FF, 0x11FD, 0x8500, 0x29DF, + 0x8502, 0x29FD, 0x8506, 0x11FE, 0x8507, 0x2543, 0x8508, 0x29EB, 0x8509, + 0x29E2, 0x850A, 0x29E5, 0x850B, 0x2A0B, 0x850C, 0x29EC, 0x850D, 0x29E3, + 0x850E, 0x29E1, 0x850F, 0x29DE, 0x8511, 0x11F7, 0x8512, 0x29F5, 0x8513, + 0x11F6, 0x8514, 0x11FA, 0x8515, 0x29F0, 0x8516, 0x29F8, 0x8517, 0x11F0, + 0x8518, 0x2A08, 0x8519, 0x2A0C, 0x851A, 0x11F2, 0x851C, 0x29E7, 0x851D, + 0x29FB, 0x851E, 0x29FF, 0x851F, 0x29E4, 0x8520, 0x2A09, 0x8521, 0x11F9, + 0x8523, 0x11F8, 0x8524, 0x29DC, 0x8525, 0x11FC, 0x8526, 0x2A02, 0x8527, + 0x29E6, 0x8528, 0x29FA, 0x8529, 0x29E0, 0x852A, 0x29EE, 0x852B, 0x29E9, + 0x852C, 0x11F4, 0x852D, 0x11F5, 0x852E, 0x29FC, 0x852F, 0x2A0D, 0x8530, + 0x2A0A, 0x8531, 0x2A01, 0x853B, 0x29DD, 0x853D, 0x11F1, 0x853E, 0x2C4F, + 0x8540, 0x2C46, 0x8541, 0x2C49, 0x8543, 0x133B, 0x8544, 0x2C4B, 0x8545, + 0x2C40, 0x8546, 0x2C47, 0x8547, 0x2C4D, 0x8548, 0x1338, 0x8549, 0x133C, + 0x854A, 0x1336, 0x854D, 0x2C42, 0x854E, 0x2C52, 0x8551, 0x2C4C, 0x8553, + 0x2C43, 0x8554, 0x2C5B, 0x8555, 0x2C55, 0x8556, 0x2C3F, 0x8557, 0x2E23, + 0x8558, 0x2C45, 0x8559, 0x1337, 0x855B, 0x2C50, 0x855D, 0x2C5A, 0x855E, + 0x133F, 0x8560, 0x2C57, 0x8561, 0x2C44, 0x8562, 0x2C4A, 0x8563, 0x2C4E, + 0x8564, 0x2C48, 0x8565, 0x2C5C, 0x8566, 0x2C59, 0x8567, 0x2C56, 0x8568, + 0x1339, 0x8569, 0x133A, 0x856A, 0x133E, 0x856B, 0x2C41, 0x856C, 0x2C5D, + 0x856D, 0x133D, 0x856E, 0x2C53, 0x8571, 0x2C51, 0x8575, 0x2C54, 0x8576, + 0x2E30, 0x8577, 0x2E1D, 0x8578, 0x2E22, 0x8579, 0x2E2F, 0x857A, 0x2E21, + 0x857B, 0x2E19, 0x857C, 0x2E1E, 0x857E, 0x145C, 0x8580, 0x2E12, 0x8581, + 0x2E2A, 0x8582, 0x2E2C, 0x8583, 0x2E11, 0x8584, 0x145B, 0x8585, 0x2E2E, + 0x8586, 0x2E26, 0x8587, 0x1462, 0x8588, 0x2E2D, 0x8589, 0x2E1F, 0x858A, + 0x1464, 0x858B, 0x2E17, 0x858C, 0x2C58, 0x858D, 0x2E27, 0x858E, 0x2E24, + 0x858F, 0x2E13, 0x8590, 0x2E32, 0x8591, 0x145E, 0x8594, 0x145F, 0x8595, + 0x2E15, 0x8596, 0x2E25, 0x8598, 0x2E31, 0x8599, 0x2E28, 0x859A, 0x2E1B, + 0x859B, 0x1461, 0x859C, 0x145D, 0x859D, 0x2E29, 0x859E, 0x2E1C, 0x859F, + 0x2E33, 0x85A0, 0x2E16, 0x85A1, 0x2E20, 0x85A2, 0x2E2B, 0x85A3, 0x2E18, + 0x85A4, 0x2E1A, 0x85A6, 0x1465, 0x85A7, 0x2E14, 0x85A8, 0x1463, 0x85A9, + 0x151C, 0x85AA, 0x145A, 0x85AF, 0x1460, 0x85B0, 0x1520, 0x85B1, 0x2FA6, + 0x85B3, 0x2F9C, 0x85B4, 0x2F97, 0x85B5, 0x2F9D, 0x85B6, 0x2FA7, 0x85B7, + 0x2FAB, 0x85B8, 0x2FAA, 0x85B9, 0x1522, 0x85BA, 0x1521, 0x85BD, 0x2F9E, + 0x85BE, 0x2FAC, 0x85BF, 0x2FA1, 0x85C0, 0x2F99, 0x85C2, 0x2F9B, 0x85C3, + 0x2F9A, 0x85C4, 0x2FA0, 0x85C5, 0x2FA5, 0x85C6, 0x2F98, 0x85C7, 0x2F9F, + 0x85C8, 0x2FA4, 0x85C9, 0x151F, 0x85CB, 0x2FA2, 0x85CD, 0x151D, 0x85CE, + 0x2FA3, 0x85CF, 0x151B, 0x85D0, 0x151E, 0x85D1, 0x3101, 0x85D2, 0x2FA8, + 0x85D5, 0x15B7, 0x85D7, 0x30F9, 0x85D8, 0x30FD, 0x85D9, 0x30F5, 0x85DA, + 0x30F8, 0x85DC, 0x3100, 0x85DD, 0x15B5, 0x85DE, 0x3105, 0x85DF, 0x30FE, + 0x85E1, 0x30F6, 0x85E2, 0x3106, 0x85E3, 0x30FF, 0x85E4, 0x15B8, 0x85E5, + 0x15B9, 0x85E6, 0x3103, 0x85E8, 0x30F7, 0x85E9, 0x15B4, 0x85EA, 0x15B6, + 0x85EB, 0x30F2, 0x85EC, 0x30FA, 0x85ED, 0x30F4, 0x85EF, 0x3104, 0x85F0, + 0x3102, 0x85F1, 0x30F3, 0x85F2, 0x30FB, 0x85F6, 0x3225, 0x85F7, 0x15BA, + 0x85F8, 0x30FC, 0x85F9, 0x1638, 0x85FA, 0x163A, 0x85FB, 0x1637, 0x85FD, + 0x322A, 0x85FE, 0x3222, 0x85FF, 0x3220, 0x8600, 0x3224, 0x8601, 0x3221, + 0x8604, 0x3226, 0x8605, 0x3228, 0x8606, 0x163B, 0x8607, 0x163D, 0x8609, + 0x3227, 0x860A, 0x163E, 0x860B, 0x163C, 0x860C, 0x3229, 0x8611, 0x1639, + 0x8617, 0x1685, 0x8618, 0x32F6, 0x8619, 0x32FC, 0x861A, 0x1687, 0x861B, + 0x3223, 0x861C, 0x32FB, 0x861E, 0x3302, 0x861F, 0x32F9, 0x8620, 0x3300, + 0x8621, 0x32FF, 0x8622, 0x321F, 0x8623, 0x32FA, 0x8624, 0x2FA9, 0x8625, + 0x3303, 0x8626, 0x32F8, 0x8627, 0x32FD, 0x8629, 0x3301, 0x862A, 0x32F7, + 0x862C, 0x33AA, 0x862D, 0x1686, 0x862E, 0x32FE, 0x8631, 0x3432, 0x8632, + 0x33AB, 0x8633, 0x33A9, 0x8634, 0x33A7, 0x8635, 0x33A8, 0x8636, 0x33AC, + 0x8638, 0x1707, 0x8639, 0x3430, 0x863A, 0x342E, 0x863B, 0x3433, 0x863C, + 0x3431, 0x863E, 0x3434, 0x863F, 0x1708, 0x8640, 0x342F, 0x8643, 0x3497, + 0x8646, 0x34DF, 0x8647, 0x34E0, 0x8648, 0x34E1, 0x864B, 0x353E, 0x864C, + 0x3536, 0x864D, 0x1818, 0x864E, 0x0689, 0x8650, 0x07FF, 0x8652, 0x1DE3, + 0x8653, 0x1DE2, 0x8654, 0x09AF, 0x8655, 0x0B88, 0x8656, 0x203C, 0x8659, + 0x203B, 0x865B, 0x0D48, 0x865C, 0x0EED, 0x865E, 0x0EEC, 0x865F, 0x0EEE, + 0x8661, 0x27CE, 0x8662, 0x2A0E, 0x8663, 0x2C5E, 0x8664, 0x2C60, 0x8665, + 0x2C5F, 0x8667, 0x1466, 0x8668, 0x2E34, 0x8669, 0x2FAD, 0x866A, 0x351E, + 0x866B, 0x040F, 0x866D, 0x1A46, 0x866E, 0x1A47, 0x866F, 0x1A45, 0x8670, + 0x1A44, 0x8671, 0x068A, 0x8673, 0x1BFD, 0x8674, 0x1BFB, 0x8677, 0x1BFA, + 0x8679, 0x0800, 0x867A, 0x0802, 0x867B, 0x0801, 0x867C, 0x1BFC, 0x8685, + 0x1DEF, 0x8686, 0x1DEC, 0x8687, 0x1DEA, 0x868A, 0x09B0, 0x868B, 0x1DED, + 0x868C, 0x09B5, 0x868D, 0x1DE7, 0x868E, 0x1DF6, 0x8690, 0x1DF8, 0x8691, + 0x1DE8, 0x8693, 0x09B2, 0x8694, 0x1DF9, 0x8695, 0x1DF4, 0x8696, 0x1DE6, + 0x8697, 0x1DEB, 0x8698, 0x1DF5, 0x8699, 0x1DF1, 0x869A, 0x1DEE, 0x869C, + 0x09B7, 0x869D, 0x1DF7, 0x869E, 0x1DE9, 0x86A1, 0x1DF2, 0x86A2, 0x1DE4, + 0x86A3, 0x09B6, 0x86A4, 0x09B3, 0x86A5, 0x1DF0, 0x86A7, 0x1DF3, 0x86A8, + 0x1DE5, 0x86A9, 0x09B4, 0x86AA, 0x09B1, 0x86AF, 0x0B92, 0x86B0, 0x2043, + 0x86B1, 0x0B91, 0x86B3, 0x2046, 0x86B4, 0x2049, 0x86B5, 0x0B8E, 0x86B6, + 0x0B8C, 0x86B7, 0x203E, 0x86B8, 0x2047, 0x86B9, 0x2045, 0x86BA, 0x2042, + 0x86BB, 0x204A, 0x86BC, 0x204B, 0x86BD, 0x204D, 0x86BE, 0x204E, 0x86BF, + 0x203D, 0x86C0, 0x0B8B, 0x86C1, 0x2040, 0x86C2, 0x203F, 0x86C3, 0x204C, + 0x86C4, 0x0B8D, 0x86C5, 0x2041, 0x86C6, 0x0B8F, 0x86C7, 0x0B8A, 0x86C8, + 0x2044, 0x86C9, 0x0B93, 0x86CB, 0x0B90, 0x86CC, 0x2048, 0x86D0, 0x0D4F, + 0x86D1, 0x22D2, 0x86D3, 0x22C7, 0x86D4, 0x0D4C, 0x86D6, 0x256D, 0x86D7, + 0x22D0, 0x86D8, 0x22C4, 0x86D9, 0x0D4A, 0x86DA, 0x22C9, 0x86DB, 0x0D4D, + 0x86DC, 0x22CD, 0x86DD, 0x22CB, 0x86DE, 0x0D50, 0x86DF, 0x0D49, 0x86E2, + 0x22C5, 0x86E3, 0x22C8, 0x86E4, 0x0D4E, 0x86E6, 0x22C6, 0x86E8, 0x22D1, + 0x86E9, 0x22CF, 0x86EA, 0x22CA, 0x86EB, 0x22CC, 0x86EC, 0x22CE, 0x86ED, + 0x0D4B, 0x86F5, 0x256E, 0x86F6, 0x2574, 0x86F7, 0x256A, 0x86F8, 0x2570, + 0x86F9, 0x0EEF, 0x86FA, 0x256C, 0x86FB, 0x0EF5, 0x86FE, 0x0EF4, 0x8700, + 0x0EF3, 0x8701, 0x2573, 0x8702, 0x0EF6, 0x8703, 0x0EF7, 0x8704, 0x2569, + 0x8705, 0x2576, 0x8706, 0x0EF8, 0x8707, 0x0EF2, 0x8708, 0x0EF1, 0x8709, + 0x2572, 0x870A, 0x0EF9, 0x870B, 0x2568, 0x870C, 0x256B, 0x870D, 0x2575, + 0x870E, 0x2571, 0x8711, 0x27EE, 0x8712, 0x27E3, 0x8713, 0x0EF0, 0x8718, + 0x1098, 0x8719, 0x27D7, 0x871A, 0x27EC, 0x871B, 0x27D8, 0x871C, 0x1093, + 0x871E, 0x27D5, 0x8720, 0x27DE, 0x8721, 0x27D6, 0x8722, 0x1095, 0x8723, + 0x27D0, 0x8724, 0x27EB, 0x8725, 0x1096, 0x8726, 0x27E8, 0x8727, 0x27E9, + 0x8728, 0x27D1, 0x8729, 0x109B, 0x872A, 0x27E0, 0x872C, 0x27DA, 0x872D, + 0x27E1, 0x872E, 0x27D4, 0x8730, 0x27ED, 0x8731, 0x27E5, 0x8732, 0x27DF, + 0x8733, 0x27CF, 0x8734, 0x1097, 0x8735, 0x27E6, 0x8737, 0x109A, 0x8738, + 0x27EA, 0x873A, 0x27E4, 0x873B, 0x1094, 0x873C, 0x27E2, 0x873E, 0x27DC, + 0x873F, 0x1092, 0x8740, 0x27D3, 0x8741, 0x27DB, 0x8742, 0x27E7, 0x8743, + 0x27D9, 0x8746, 0x27DD, 0x874C, 0x1208, 0x874D, 0x256F, 0x874E, 0x2A20, + 0x874F, 0x2A29, 0x8750, 0x2A1F, 0x8751, 0x2A1B, 0x8752, 0x2A18, 0x8753, + 0x1209, 0x8754, 0x2A16, 0x8755, 0x1099, 0x8756, 0x2A0F, 0x8757, 0x1207, + 0x8758, 0x2A15, 0x8759, 0x1206, 0x875A, 0x2A1A, 0x875B, 0x2A17, 0x875C, + 0x2A27, 0x875D, 0x2A22, 0x875E, 0x2A1C, 0x875F, 0x2A21, 0x8760, 0x1202, + 0x8761, 0x2A19, 0x8762, 0x2A2C, 0x8763, 0x2A10, 0x8764, 0x2A11, 0x8765, + 0x2A28, 0x8766, 0x1203, 0x8767, 0x2A2D, 0x8768, 0x1205, 0x8769, 0x2A2E, + 0x876A, 0x2A1E, 0x876B, 0x27D2, 0x876C, 0x2A24, 0x876D, 0x2A1D, 0x876E, + 0x2A26, 0x876F, 0x2A23, 0x8773, 0x2A14, 0x8774, 0x1200, 0x8775, 0x2A2B, + 0x8776, 0x1201, 0x8777, 0x2A12, 0x8778, 0x1204, 0x8779, 0x2C6B, 0x877A, + 0x2A25, 0x877B, 0x2A2A, 0x8781, 0x2C68, 0x8782, 0x11FF, 0x8783, 0x1340, + 0x8784, 0x2C72, 0x8785, 0x2C6E, 0x8787, 0x2C6C, 0x8788, 0x2C67, 0x8789, + 0x2C76, 0x878D, 0x1344, 0x878F, 0x2C63, 0x8790, 0x2C6F, 0x8791, 0x2C70, + 0x8792, 0x2C66, 0x8793, 0x2C65, 0x8794, 0x2C73, 0x8796, 0x2C69, 0x8797, + 0x2C64, 0x8798, 0x2C6A, 0x879A, 0x2C75, 0x879B, 0x2C62, 0x879C, 0x2C74, + 0x879D, 0x2C71, 0x879E, 0x1342, 0x879F, 0x1341, 0x87A2, 0x1343, 0x87A3, + 0x2C6D, 0x87A4, 0x2C61, 0x87AA, 0x2E36, 0x87AB, 0x146C, 0x87AC, 0x2E3A, + 0x87AD, 0x2E37, 0x87AE, 0x2E3E, 0x87AF, 0x2E44, 0x87B0, 0x2E39, 0x87B2, + 0x2E4D, 0x87B3, 0x1469, 0x87B4, 0x2E47, 0x87B5, 0x2E3C, 0x87B6, 0x2E48, + 0x87B7, 0x2E43, 0x87B8, 0x2E4A, 0x87B9, 0x2E3B, 0x87BA, 0x146E, 0x87BB, + 0x146D, 0x87BC, 0x2E3D, 0x87BD, 0x2E4B, 0x87BE, 0x2E35, 0x87BF, 0x2E49, + 0x87C0, 0x1467, 0x87C2, 0x2E41, 0x87C3, 0x2E40, 0x87C4, 0x2E45, 0x87C5, + 0x2E38, 0x87C6, 0x146B, 0x87C8, 0x146F, 0x87C9, 0x2E3F, 0x87CA, 0x2E46, + 0x87CB, 0x1470, 0x87CC, 0x2E42, 0x87D1, 0x1468, 0x87D2, 0x146A, 0x87D3, + 0x2FBA, 0x87D4, 0x2FB8, 0x87D7, 0x2FBE, 0x87D8, 0x2FBC, 0x87D9, 0x2FBF, + 0x87DB, 0x2FB1, 0x87DC, 0x2FB9, 0x87DD, 0x2FC3, 0x87DE, 0x2E4C, 0x87DF, + 0x2FB5, 0x87E0, 0x1526, 0x87E1, 0x2A13, 0x87E2, 0x2FB0, 0x87E3, 0x2FBD, + 0x87E4, 0x2FB7, 0x87E5, 0x2FB4, 0x87E6, 0x2FAF, 0x87E7, 0x2FAE, 0x87E8, + 0x2FC2, 0x87EA, 0x2FB3, 0x87EB, 0x2FB2, 0x87EC, 0x1524, 0x87ED, 0x2FBB, + 0x87EF, 0x1523, 0x87F2, 0x1525, 0x87F3, 0x2FB6, 0x87F4, 0x2FC1, 0x87F6, + 0x310A, 0x87F7, 0x310B, 0x87F9, 0x15BE, 0x87FA, 0x3108, 0x87FB, 0x15BB, + 0x87FC, 0x3110, 0x87FE, 0x15BF, 0x87FF, 0x3112, 0x8800, 0x3107, 0x8801, + 0x2FC0, 0x8802, 0x3114, 0x8803, 0x3109, 0x8805, 0x15BC, 0x8806, 0x310F, + 0x8808, 0x3111, 0x8809, 0x310C, 0x880A, 0x3113, 0x880B, 0x310E, 0x880C, + 0x310D, 0x880D, 0x15BD, 0x8810, 0x322C, 0x8811, 0x322D, 0x8813, 0x322F, + 0x8814, 0x163F, 0x8815, 0x1640, 0x8816, 0x3230, 0x8817, 0x322E, 0x8819, + 0x322B, 0x881B, 0x3306, 0x881C, 0x3309, 0x881D, 0x3305, 0x881F, 0x168B, + 0x8820, 0x3307, 0x8821, 0x168A, 0x8822, 0x1689, 0x8823, 0x1688, 0x8824, + 0x3308, 0x8825, 0x33B1, 0x8826, 0x33AF, 0x8828, 0x33AE, 0x8829, 0x3304, + 0x882A, 0x33B0, 0x882B, 0x330A, 0x882C, 0x33AD, 0x882E, 0x3437, 0x882F, + 0x3415, 0x8830, 0x3435, 0x8831, 0x1709, 0x8832, 0x3436, 0x8833, 0x3438, + 0x8835, 0x349A, 0x8836, 0x1728, 0x8837, 0x3499, 0x8838, 0x3498, 0x8839, + 0x1729, 0x883B, 0x1747, 0x883C, 0x3508, 0x883D, 0x3520, 0x883E, 0x351F, + 0x883F, 0x3521, 0x8840, 0x0410, 0x8841, 0x1BFE, 0x8843, 0x1DFA, 0x8844, + 0x1DFB, 0x8848, 0x22D3, 0x884A, 0x330B, 0x884B, 0x349B, 0x884C, 0x0411, + 0x884D, 0x0803, 0x884E, 0x1BFF, 0x8852, 0x204F, 0x8853, 0x0B94, 0x8855, + 0x22D5, 0x8856, 0x22D4, 0x8857, 0x0D51, 0x8859, 0x0EFA, 0x885A, 0x2A2F, + 0x885B, 0x120A, 0x885D, 0x120B, 0x8861, 0x1345, 0x8862, 0x172A, 0x8863, + 0x0412, 0x8867, 0x1C00, 0x8868, 0x068C, 0x8869, 0x1C02, 0x886A, 0x1C01, + 0x886B, 0x0804, 0x886D, 0x1DFC, 0x886F, 0x1E03, 0x8870, 0x09B8, 0x8871, + 0x1E01, 0x8872, 0x1DFF, 0x8874, 0x1E06, 0x8875, 0x1DFD, 0x8876, 0x1DFE, + 0x8877, 0x09B9, 0x8879, 0x09BD, 0x887C, 0x1E07, 0x887D, 0x09BC, 0x887E, + 0x1E05, 0x887F, 0x1E02, 0x8880, 0x1E00, 0x8881, 0x09BA, 0x8882, 0x09BB, + 0x8883, 0x1E04, 0x8888, 0x0B96, 0x8889, 0x2050, 0x888B, 0x0B9B, 0x888C, + 0x2060, 0x888D, 0x0B9A, 0x888E, 0x2062, 0x8891, 0x2056, 0x8892, 0x0B98, + 0x8893, 0x2061, 0x8895, 0x2051, 0x8896, 0x0B99, 0x8897, 0x205D, 0x8898, + 0x2059, 0x8899, 0x205B, 0x889A, 0x2055, 0x889B, 0x205C, 0x889E, 0x0B95, + 0x889F, 0x2058, 0x88A1, 0x2057, 0x88A2, 0x2053, 0x88A4, 0x205E, 0x88A7, + 0x205A, 0x88A8, 0x2052, 0x88AA, 0x2054, 0x88AB, 0x0B97, 0x88AC, 0x205F, + 0x88B1, 0x0D54, 0x88B2, 0x22E0, 0x88B6, 0x22DC, 0x88B7, 0x22DE, 0x88B8, + 0x22D9, 0x88B9, 0x22D8, 0x88BA, 0x22D6, 0x88BC, 0x22DD, 0x88BD, 0x22DF, + 0x88BE, 0x22DB, 0x88C0, 0x22DA, 0x88C1, 0x0D52, 0x88C2, 0x0D53, 0x88C9, + 0x22E2, 0x88CA, 0x0F02, 0x88CB, 0x2578, 0x88CC, 0x257E, 0x88CD, 0x2579, + 0x88CE, 0x257A, 0x88CF, 0x36EA, 0x88D0, 0x257F, 0x88D2, 0x0F04, 0x88D4, + 0x0EFC, 0x88D5, 0x0F03, 0x88D6, 0x2577, 0x88D7, 0x22D7, 0x88D8, 0x0EFF, + 0x88D9, 0x0EFD, 0x88DA, 0x257D, 0x88DB, 0x257C, 0x88DC, 0x0EFE, 0x88DD, + 0x0F00, 0x88DE, 0x257B, 0x88DF, 0x0EFB, 0x88E1, 0x0F01, 0x88E7, 0x27F0, + 0x88E8, 0x10A2, 0x88EB, 0x27FB, 0x88EC, 0x27FA, 0x88EE, 0x27F5, 0x88EF, + 0x10A4, 0x88F0, 0x27F9, 0x88F1, 0x27F1, 0x88F2, 0x27F2, 0x88F3, 0x109C, + 0x88F4, 0x109E, 0x88F6, 0x27F7, 0x88F7, 0x27EF, 0x88F8, 0x10A0, 0x88F9, + 0x109F, 0x88FA, 0x27F3, 0x88FB, 0x27F8, 0x88FC, 0x27F6, 0x88FD, 0x10A1, + 0x88FE, 0x27F4, 0x8901, 0x22E1, 0x8902, 0x109D, 0x8905, 0x2A30, 0x8906, + 0x2A37, 0x8907, 0x120D, 0x8909, 0x2A3B, 0x890A, 0x1211, 0x890B, 0x2A33, + 0x890C, 0x2A31, 0x890E, 0x2A3A, 0x8910, 0x120C, 0x8911, 0x2A39, 0x8912, + 0x120E, 0x8913, 0x120F, 0x8914, 0x2A32, 0x8915, 0x1210, 0x8916, 0x2A38, + 0x8917, 0x2A34, 0x8918, 0x2A35, 0x8919, 0x2A36, 0x891A, 0x10A3, 0x891E, + 0x2C77, 0x891F, 0x2C83, 0x8921, 0x134A, 0x8922, 0x2C7E, 0x8923, 0x2C80, + 0x8925, 0x1348, 0x8926, 0x2C78, 0x8927, 0x2C7C, 0x8929, 0x2C7F, 0x892A, + 0x1346, 0x892B, 0x1349, 0x892C, 0x2C82, 0x892D, 0x2C7A, 0x892E, 0x2C7B, + 0x892F, 0x2C81, 0x8930, 0x2C79, 0x8931, 0x2C7D, 0x8932, 0x1347, 0x8933, + 0x2E4F, 0x8935, 0x2E4E, 0x8936, 0x1472, 0x8937, 0x2E54, 0x8938, 0x1474, + 0x893B, 0x1471, 0x893C, 0x2E50, 0x893D, 0x1475, 0x893E, 0x2E51, 0x8941, + 0x2E52, 0x8942, 0x2E55, 0x8944, 0x1473, 0x8946, 0x2FC8, 0x8949, 0x2FCB, + 0x894B, 0x2FC5, 0x894C, 0x2FC7, 0x894F, 0x2FC6, 0x8950, 0x2FC9, 0x8951, + 0x2FCA, 0x8952, 0x2E53, 0x8953, 0x2FC4, 0x8956, 0x15C2, 0x8957, 0x3118, + 0x8958, 0x311B, 0x8959, 0x311D, 0x895A, 0x3116, 0x895B, 0x3117, 0x895C, + 0x311A, 0x895D, 0x311C, 0x895E, 0x15C3, 0x895F, 0x15C1, 0x8960, 0x15C0, + 0x8961, 0x3119, 0x8962, 0x3115, 0x8963, 0x3231, 0x8964, 0x1641, 0x8966, + 0x3232, 0x8969, 0x330D, 0x896A, 0x168C, 0x896B, 0x330F, 0x896C, 0x168D, + 0x896D, 0x330C, 0x896E, 0x330E, 0x896F, 0x16D6, 0x8971, 0x33B2, 0x8972, + 0x16D5, 0x8973, 0x343B, 0x8974, 0x343A, 0x8976, 0x3439, 0x8979, 0x34E2, + 0x897A, 0x34E3, 0x897B, 0x34E5, 0x897C, 0x34E4, 0x897E, 0x1819, 0x897F, + 0x0413, 0x8981, 0x0805, 0x8982, 0x2063, 0x8983, 0x0D55, 0x8985, 0x2580, + 0x8986, 0x1527, 0x8988, 0x311E, 0x898B, 0x0508, 0x898F, 0x0B9D, 0x8993, + 0x0B9C, 0x8995, 0x22E3, 0x8996, 0x0D56, 0x8997, 0x22E5, 0x8998, 0x22E4, + 0x899B, 0x2581, 0x899C, 0x0F05, 0x899D, 0x27FC, 0x899E, 0x27FF, 0x899F, + 0x27FE, 0x89A1, 0x27FD, 0x89A2, 0x2A3C, 0x89A3, 0x2A3E, 0x89A4, 0x2A3D, + 0x89A6, 0x134C, 0x89AA, 0x134B, 0x89AC, 0x1476, 0x89AD, 0x2E56, 0x89AE, + 0x2E58, 0x89AF, 0x2E57, 0x89B2, 0x1528, 0x89B6, 0x3120, 0x89B7, 0x311F, + 0x89B9, 0x3233, 0x89BA, 0x1642, 0x89BD, 0x168E, 0x89BE, 0x33B4, 0x89BF, + 0x33B3, 0x89C0, 0x1748, 0x89D2, 0x0509, 0x89D3, 0x1C03, 0x89D4, 0x0806, + 0x89D5, 0x2066, 0x89D6, 0x2064, 0x89D9, 0x2065, 0x89DA, 0x22E7, 0x89DB, + 0x22E8, 0x89DC, 0x2588, 0x89DD, 0x22E6, 0x89DF, 0x2582, 0x89E0, 0x2586, + 0x89E1, 0x2585, 0x89E2, 0x2587, 0x89E3, 0x0F06, 0x89E4, 0x2584, 0x89E5, + 0x2583, 0x89E6, 0x2589, 0x89E8, 0x2802, 0x89E9, 0x2800, 0x89EB, 0x2801, + 0x89EC, 0x2A41, 0x89ED, 0x2A3F, 0x89F0, 0x2A40, 0x89F1, 0x2C84, 0x89F2, + 0x2E59, 0x89F3, 0x2E5A, 0x89F4, 0x1529, 0x89F6, 0x3121, 0x89F7, 0x3234, + 0x89F8, 0x1643, 0x89FA, 0x3310, 0x89FB, 0x33B5, 0x89FC, 0x16D7, 0x89FE, + 0x343C, 0x89FF, 0x34E6, 0x8A00, 0x050A, 0x8A02, 0x0808, 0x8A03, 0x0809, + 0x8A04, 0x1C04, 0x8A07, 0x1C05, 0x8A08, 0x0807, 0x8A0A, 0x09C3, 0x8A0C, + 0x09C1, 0x8A0E, 0x09C0, 0x8A0F, 0x09C7, 0x8A10, 0x09BF, 0x8A11, 0x09C8, + 0x8A12, 0x1E08, 0x8A13, 0x09C5, 0x8A15, 0x09C2, 0x8A16, 0x09C6, 0x8A17, + 0x09C4, 0x8A18, 0x09BE, 0x8A1B, 0x0BA5, 0x8A1D, 0x0B9F, 0x8A1E, 0x206A, + 0x8A1F, 0x0BA4, 0x8A22, 0x0BA6, 0x8A23, 0x0BA0, 0x8A25, 0x0BA1, 0x8A27, + 0x2068, 0x8A2A, 0x0B9E, 0x8A2C, 0x2069, 0x8A2D, 0x0BA3, 0x8A30, 0x2067, + 0x8A31, 0x0BA2, 0x8A34, 0x0D61, 0x8A36, 0x0D63, 0x8A39, 0x22EB, 0x8A3A, + 0x0D62, 0x8A3B, 0x0D57, 0x8A3C, 0x0D5B, 0x8A3E, 0x0F19, 0x8A3F, 0x258E, + 0x8A40, 0x22ED, 0x8A41, 0x0D5C, 0x8A44, 0x22F0, 0x8A45, 0x22F1, 0x8A46, + 0x0D60, 0x8A48, 0x22F3, 0x8A4A, 0x22F5, 0x8A4C, 0x22F6, 0x8A4D, 0x22EA, + 0x8A4E, 0x22E9, 0x8A4F, 0x22F7, 0x8A50, 0x0D5F, 0x8A51, 0x22F4, 0x8A52, + 0x22F2, 0x8A54, 0x0D5D, 0x8A55, 0x0D59, 0x8A56, 0x0D64, 0x8A57, 0x22EE, + 0x8A58, 0x22EF, 0x8A59, 0x22EC, 0x8A5B, 0x0D5E, 0x8A5E, 0x0D5A, 0x8A60, + 0x0D58, 0x8A61, 0x258D, 0x8A62, 0x0F14, 0x8A63, 0x0F0F, 0x8A66, 0x0F0A, + 0x8A68, 0x0F1A, 0x8A69, 0x0F0B, 0x8A6B, 0x0F07, 0x8A6C, 0x0F16, 0x8A6D, + 0x0F13, 0x8A6E, 0x0F15, 0x8A70, 0x0F0C, 0x8A71, 0x0F11, 0x8A72, 0x0F08, + 0x8A73, 0x0F09, 0x8A74, 0x2595, 0x8A75, 0x2592, 0x8A76, 0x258A, 0x8A77, + 0x258F, 0x8A79, 0x0F17, 0x8A7A, 0x2596, 0x8A7B, 0x0F18, 0x8A7C, 0x0F0E, + 0x8A7F, 0x258C, 0x8A81, 0x2594, 0x8A82, 0x2590, 0x8A83, 0x2593, 0x8A84, + 0x2591, 0x8A85, 0x0F12, 0x8A86, 0x258B, 0x8A87, 0x0F0D, 0x8A8B, 0x2805, + 0x8A8C, 0x10A6, 0x8A8D, 0x10A9, 0x8A8F, 0x2807, 0x8A91, 0x10B1, 0x8A92, + 0x2806, 0x8A93, 0x10AB, 0x8A95, 0x1216, 0x8A96, 0x2808, 0x8A98, 0x10B0, + 0x8A99, 0x2804, 0x8A9A, 0x10B2, 0x8A9E, 0x10A7, 0x8AA0, 0x0F10, 0x8AA1, + 0x10AA, 0x8AA3, 0x10A8, 0x8AA4, 0x10AC, 0x8AA5, 0x10AE, 0x8AA6, 0x10A5, + 0x8AA7, 0x10B3, 0x8AA8, 0x10AF, 0x8AAA, 0x10AD, 0x8AAB, 0x2803, 0x8AB0, + 0x121D, 0x8AB2, 0x1219, 0x8AB6, 0x1220, 0x8AB8, 0x2A44, 0x8AB9, 0x1221, + 0x8ABA, 0x2A50, 0x8ABB, 0x2A49, 0x8ABC, 0x1212, 0x8ABD, 0x2A51, 0x8ABE, + 0x2A4B, 0x8ABF, 0x121C, 0x8AC0, 0x2A4C, 0x8AC2, 0x121B, 0x8AC3, 0x2A4F, + 0x8AC4, 0x1215, 0x8AC5, 0x2A4D, 0x8AC6, 0x2A43, 0x8AC7, 0x1214, 0x8AC8, + 0x2C8F, 0x8AC9, 0x121A, 0x8ACB, 0x1217, 0x8ACD, 0x121F, 0x8ACF, 0x2A42, + 0x8AD1, 0x2A46, 0x8AD2, 0x1213, 0x8AD3, 0x2A45, 0x8AD4, 0x2A47, 0x8AD5, + 0x2A48, 0x8AD6, 0x121E, 0x8AD7, 0x2A4A, 0x8AD8, 0x2A4E, 0x8AD9, 0x2A52, + 0x8ADB, 0x1222, 0x8ADC, 0x1352, 0x8ADD, 0x2C8A, 0x8ADE, 0x2C90, 0x8ADF, + 0x2C8D, 0x8AE0, 0x2C85, 0x8AE1, 0x2C91, 0x8AE2, 0x2C86, 0x8AE4, 0x2C8C, + 0x8AE6, 0x134D, 0x8AE7, 0x1353, 0x8AE8, 0x2C92, 0x8AEB, 0x134F, 0x8AED, + 0x1359, 0x8AEE, 0x1354, 0x8AEF, 0x2C94, 0x8AF0, 0x2C8E, 0x8AF1, 0x1350, + 0x8AF2, 0x2C87, 0x8AF3, 0x135A, 0x8AF4, 0x2C88, 0x8AF5, 0x2C89, 0x8AF6, + 0x135B, 0x8AF7, 0x1358, 0x8AF8, 0x1218, 0x8AFA, 0x134E, 0x8AFB, 0x2C95, + 0x8AFC, 0x135C, 0x8AFE, 0x1355, 0x8AFF, 0x2C93, 0x8B00, 0x1351, 0x8B01, + 0x1356, 0x8B02, 0x1357, 0x8B04, 0x147E, 0x8B05, 0x2E5F, 0x8B06, 0x2E68, + 0x8B07, 0x2E65, 0x8B08, 0x2E67, 0x8B0A, 0x147B, 0x8B0B, 0x2E60, 0x8B0D, + 0x2E66, 0x8B0E, 0x1477, 0x8B0F, 0x2E62, 0x8B10, 0x147F, 0x8B11, 0x2E5E, + 0x8B12, 0x2E63, 0x8B13, 0x2E6A, 0x8B14, 0x2C8B, 0x8B15, 0x2E64, 0x8B16, + 0x2E5D, 0x8B17, 0x1478, 0x8B18, 0x2E5C, 0x8B19, 0x1479, 0x8B1A, 0x2E6B, + 0x8B1B, 0x147A, 0x8B1C, 0x2E69, 0x8B1D, 0x147D, 0x8B1E, 0x2E5B, 0x8B20, + 0x147C, 0x8B22, 0x2E61, 0x8B23, 0x2FCE, 0x8B24, 0x2FDC, 0x8B25, 0x2FD7, + 0x8B26, 0x2FD9, 0x8B27, 0x2FCD, 0x8B28, 0x152A, 0x8B2A, 0x2FCC, 0x8B2B, + 0x152D, 0x8B2C, 0x152C, 0x8B2E, 0x2FDB, 0x8B2F, 0x2FD3, 0x8B30, 0x2FD0, + 0x8B31, 0x2FD6, 0x8B33, 0x2FCF, 0x8B35, 0x2FD1, 0x8B36, 0x2FDA, 0x8B37, + 0x2FD8, 0x8B39, 0x152B, 0x8B3A, 0x2FDF, 0x8B3B, 0x2FDD, 0x8B3C, 0x2FD4, + 0x8B3D, 0x2FDE, 0x8B3E, 0x2FD5, 0x8B40, 0x3125, 0x8B41, 0x15C4, 0x8B42, + 0x312C, 0x8B45, 0x3313, 0x8B46, 0x15CB, 0x8B47, 0x2FD2, 0x8B48, 0x3123, + 0x8B49, 0x15C7, 0x8B4A, 0x3124, 0x8B4B, 0x3129, 0x8B4E, 0x15C9, 0x8B4F, + 0x15CA, 0x8B50, 0x3122, 0x8B51, 0x312B, 0x8B52, 0x312D, 0x8B53, 0x3126, + 0x8B54, 0x3128, 0x8B55, 0x312A, 0x8B56, 0x3127, 0x8B57, 0x312E, 0x8B58, + 0x15C6, 0x8B59, 0x15CC, 0x8B5A, 0x15C8, 0x8B5C, 0x15C5, 0x8B5D, 0x3237, + 0x8B5F, 0x1648, 0x8B60, 0x3235, 0x8B63, 0x3239, 0x8B65, 0x323A, 0x8B66, + 0x1646, 0x8B67, 0x323B, 0x8B68, 0x3238, 0x8B6A, 0x3236, 0x8B6B, 0x1649, + 0x8B6C, 0x1645, 0x8B6D, 0x323C, 0x8B6F, 0x1647, 0x8B70, 0x1644, 0x8B74, + 0x168F, 0x8B77, 0x1690, 0x8B78, 0x3312, 0x8B79, 0x3311, 0x8B7A, 0x3314, + 0x8B7B, 0x3315, 0x8B7D, 0x1691, 0x8B7E, 0x33B6, 0x8B7F, 0x33BB, 0x8B80, + 0x16D8, 0x8B82, 0x33B8, 0x8B84, 0x33B7, 0x8B85, 0x33BA, 0x8B86, 0x33B9, + 0x8B88, 0x3440, 0x8B8A, 0x170A, 0x8B8B, 0x343F, 0x8B8C, 0x343D, 0x8B8E, + 0x343E, 0x8B92, 0x172C, 0x8B93, 0x172B, 0x8B94, 0x349C, 0x8B95, 0x349D, + 0x8B96, 0x172D, 0x8B98, 0x34E7, 0x8B99, 0x34E8, 0x8B9A, 0x1754, 0x8B9C, + 0x175A, 0x8B9E, 0x3522, 0x8B9F, 0x353F, 0x8C37, 0x050B, 0x8C39, 0x206B, + 0x8C3B, 0x206C, 0x8C3C, 0x2597, 0x8C3D, 0x2809, 0x8C3E, 0x2A53, 0x8C3F, + 0x1481, 0x8C41, 0x1480, 0x8C42, 0x2FE0, 0x8C43, 0x312F, 0x8C45, 0x3441, + 0x8C46, 0x050C, 0x8C47, 0x1E09, 0x8C48, 0x09C9, 0x8C49, 0x0BA7, 0x8C4A, + 0x2599, 0x8C4B, 0x2598, 0x8C4C, 0x1223, 0x8C4D, 0x2A54, 0x8C4E, 0x1224, + 0x8C4F, 0x2E6C, 0x8C50, 0x152E, 0x8C54, 0x1763, 0x8C55, 0x050D, 0x8C56, + 0x1A48, 0x8C57, 0x1E0A, 0x8C5A, 0x0BA8, 0x8C5C, 0x206D, 0x8C5D, 0x206E, + 0x8C5F, 0x22F8, 0x8C61, 0x0D65, 0x8C62, 0x0F1B, 0x8C64, 0x259B, 0x8C65, + 0x259A, 0x8C66, 0x259C, 0x8C68, 0x280A, 0x8C69, 0x280B, 0x8C6A, 0x10B4, + 0x8C6B, 0x135D, 0x8C6C, 0x1225, 0x8C6D, 0x135E, 0x8C6F, 0x2E70, 0x8C70, + 0x2E6D, 0x8C71, 0x2E6F, 0x8C72, 0x2E6E, 0x8C73, 0x1482, 0x8C75, 0x2FE1, + 0x8C76, 0x3131, 0x8C77, 0x3130, 0x8C78, 0x18E7, 0x8C79, 0x09CB, 0x8C7A, + 0x09CA, 0x8C7B, 0x1E0B, 0x8C7D, 0x206F, 0x8C80, 0x22FA, 0x8C81, 0x22F9, + 0x8C82, 0x0D66, 0x8C84, 0x259E, 0x8C85, 0x259F, 0x8C86, 0x259D, 0x8C89, + 0x0F1D, 0x8C8A, 0x0F1C, 0x8C8C, 0x10B6, 0x8C8D, 0x10B5, 0x8C8F, 0x2A55, + 0x8C90, 0x2C98, 0x8C91, 0x2C96, 0x8C92, 0x2C97, 0x8C93, 0x135F, 0x8C94, + 0x2E72, 0x8C95, 0x2E71, 0x8C97, 0x2FE4, 0x8C98, 0x2FE3, 0x8C99, 0x2FE2, + 0x8C9A, 0x3132, 0x8C9C, 0x3523, 0x8C9D, 0x050E, 0x8C9E, 0x080A, 0x8CA0, + 0x080B, 0x8CA1, 0x09CC, 0x8CA2, 0x09CD, 0x8CA3, 0x1E0D, 0x8CA4, 0x1E0C, + 0x8CA5, 0x2070, 0x8CA7, 0x0BAE, 0x8CA8, 0x0BAC, 0x8CA9, 0x0BA9, 0x8CAA, + 0x0BAD, 0x8CAB, 0x0BAB, 0x8CAC, 0x0BAA, 0x8CAF, 0x0D67, 0x8CB0, 0x22FD, + 0x8CB2, 0x0F22, 0x8CB3, 0x0D69, 0x8CB4, 0x0D6E, 0x8CB5, 0x22FF, 0x8CB6, + 0x0D70, 0x8CB7, 0x0D6F, 0x8CB8, 0x0D72, 0x8CB9, 0x22FE, 0x8CBA, 0x22FB, + 0x8CBB, 0x0D6C, 0x8CBC, 0x0D68, 0x8CBD, 0x0D6A, 0x8CBE, 0x22FC, 0x8CBF, + 0x0D71, 0x8CC0, 0x0D6D, 0x8CC1, 0x0D6B, 0x8CC2, 0x0F24, 0x8CC3, 0x0F23, + 0x8CC4, 0x0F21, 0x8CC5, 0x0F25, 0x8CC7, 0x0F1F, 0x8CC8, 0x0F20, 0x8CCA, + 0x0F1E, 0x8CCC, 0x25A0, 0x8CCF, 0x280D, 0x8CD1, 0x10B8, 0x8CD2, 0x10B9, + 0x8CD3, 0x10B7, 0x8CD5, 0x280C, 0x8CD7, 0x280E, 0x8CD9, 0x2A58, 0x8CDA, + 0x2A5A, 0x8CDC, 0x122E, 0x8CDD, 0x2A5B, 0x8CDE, 0x1227, 0x8CDF, 0x2A57, + 0x8CE0, 0x1226, 0x8CE1, 0x1230, 0x8CE2, 0x122C, 0x8CE3, 0x122D, 0x8CE4, + 0x1229, 0x8CE5, 0x2A56, 0x8CE6, 0x1228, 0x8CE7, 0x2A5C, 0x8CE8, 0x2A59, + 0x8CEA, 0x122F, 0x8CEC, 0x122A, 0x8CED, 0x122B, 0x8CEE, 0x2C9A, 0x8CF0, + 0x2C9C, 0x8CF1, 0x2C9B, 0x8CF3, 0x2C9D, 0x8CF4, 0x1360, 0x8CF5, 0x2C99, + 0x8CF8, 0x1486, 0x8CF9, 0x2E73, 0x8CFA, 0x1483, 0x8CFB, 0x1487, 0x8CFC, + 0x1485, 0x8CFD, 0x1484, 0x8CFE, 0x2FE5, 0x8D00, 0x2FE8, 0x8D02, 0x2FE7, + 0x8D04, 0x2FE6, 0x8D05, 0x152F, 0x8D06, 0x3133, 0x8D07, 0x3134, 0x8D08, + 0x15CD, 0x8D09, 0x3135, 0x8D0A, 0x15CE, 0x8D0D, 0x164B, 0x8D0F, 0x164A, + 0x8D10, 0x3316, 0x8D13, 0x1692, 0x8D14, 0x3317, 0x8D15, 0x33BC, 0x8D16, + 0x16D9, 0x8D17, 0x16DA, 0x8D19, 0x3442, 0x8D1B, 0x172F, 0x8D64, 0x050F, + 0x8D66, 0x0BB0, 0x8D67, 0x0BAF, 0x8D68, 0x25A1, 0x8D69, 0x25A2, 0x8D6B, + 0x10BA, 0x8D6C, 0x2C9E, 0x8D6D, 0x1231, 0x8D6E, 0x2C9F, 0x8D6F, 0x2E74, + 0x8D70, 0x0510, 0x8D72, 0x1C06, 0x8D73, 0x080D, 0x8D74, 0x080C, 0x8D76, + 0x1E0E, 0x8D77, 0x09CE, 0x8D78, 0x1E0F, 0x8D79, 0x2073, 0x8D7B, 0x2072, + 0x8D7D, 0x2071, 0x8D80, 0x2301, 0x8D81, 0x0D75, 0x8D84, 0x2300, 0x8D85, + 0x0D74, 0x8D89, 0x2302, 0x8D8A, 0x0D73, 0x8D8C, 0x25A4, 0x8D8D, 0x25A7, + 0x8D8E, 0x25A5, 0x8D8F, 0x25A6, 0x8D90, 0x25AA, 0x8D91, 0x25A3, 0x8D92, + 0x25AB, 0x8D93, 0x25A8, 0x8D94, 0x25A9, 0x8D95, 0x10BC, 0x8D96, 0x280F, + 0x8D99, 0x10BB, 0x8D9B, 0x2A60, 0x8D9C, 0x2A5E, 0x8D9F, 0x1232, 0x8DA0, + 0x2A5D, 0x8DA1, 0x2A5F, 0x8DA3, 0x1233, 0x8DA5, 0x2CA0, 0x8DA7, 0x2CA1, + 0x8DA8, 0x1488, 0x8DAA, 0x3137, 0x8DAB, 0x3139, 0x8DAC, 0x3136, 0x8DAD, + 0x3138, 0x8DAE, 0x323D, 0x8DAF, 0x3318, 0x8DB2, 0x3509, 0x8DB3, 0x0511, + 0x8DB4, 0x080E, 0x8DB5, 0x1E10, 0x8DB6, 0x1E12, 0x8DB7, 0x1E11, 0x8DB9, + 0x2076, 0x8DBA, 0x0BB2, 0x8DBC, 0x2074, 0x8DBE, 0x0BB1, 0x8DBF, 0x2077, + 0x8DC1, 0x2078, 0x8DC2, 0x2075, 0x8DC5, 0x230E, 0x8DC6, 0x0D7D, 0x8DC7, + 0x2306, 0x8DC8, 0x230C, 0x8DCB, 0x0D78, 0x8DCC, 0x0D7B, 0x8DCD, 0x2305, + 0x8DCE, 0x0D76, 0x8DCF, 0x2309, 0x8DD0, 0x25B1, 0x8DD1, 0x0D7A, 0x8DD3, + 0x2304, 0x8DD5, 0x230A, 0x8DD6, 0x2307, 0x8DD7, 0x230D, 0x8DD8, 0x2303, + 0x8DD9, 0x230B, 0x8DDA, 0x0D79, 0x8DDB, 0x0D7C, 0x8DDC, 0x2308, 0x8DDD, + 0x0D77, 0x8DDF, 0x0F27, 0x8DE0, 0x25AD, 0x8DE1, 0x0F26, 0x8DE2, 0x25B4, + 0x8DE3, 0x25B3, 0x8DE4, 0x0F2D, 0x8DE6, 0x0F2E, 0x8DE7, 0x25B5, 0x8DE8, + 0x0F28, 0x8DE9, 0x25B2, 0x8DEA, 0x0F2C, 0x8DEB, 0x25B7, 0x8DEC, 0x25AE, + 0x8DEE, 0x25B0, 0x8DEF, 0x0F29, 0x8DF0, 0x25AC, 0x8DF1, 0x25AF, 0x8DF2, + 0x25B6, 0x8DF3, 0x0F2A, 0x8DF4, 0x25B8, 0x8DFA, 0x0F2B, 0x8DFC, 0x10BD, + 0x8DFD, 0x2814, 0x8DFE, 0x281A, 0x8DFF, 0x2812, 0x8E00, 0x281B, 0x8E02, + 0x2811, 0x8E03, 0x2816, 0x8E04, 0x281C, 0x8E05, 0x2819, 0x8E06, 0x2818, + 0x8E07, 0x2817, 0x8E09, 0x2810, 0x8E0A, 0x2815, 0x8E0D, 0x2813, 0x8E0F, + 0x1238, 0x8E10, 0x1235, 0x8E11, 0x2A69, 0x8E12, 0x2A6E, 0x8E13, 0x2A70, + 0x8E14, 0x2A6D, 0x8E15, 0x2A66, 0x8E16, 0x2A68, 0x8E17, 0x2A72, 0x8E18, + 0x2A6F, 0x8E19, 0x2A6A, 0x8E1A, 0x2A73, 0x8E1B, 0x2A67, 0x8E1C, 0x2A71, + 0x8E1D, 0x1236, 0x8E1E, 0x123C, 0x8E1F, 0x123A, 0x8E20, 0x2A61, 0x8E21, + 0x123B, 0x8E22, 0x1237, 0x8E23, 0x2A62, 0x8E24, 0x2A64, 0x8E25, 0x2A63, + 0x8E26, 0x2A6B, 0x8E27, 0x2A6C, 0x8E29, 0x1239, 0x8E2B, 0x1234, 0x8E2E, + 0x2A65, 0x8E30, 0x2CAB, 0x8E31, 0x1362, 0x8E33, 0x2CA2, 0x8E34, 0x1363, + 0x8E35, 0x1366, 0x8E36, 0x2CA7, 0x8E38, 0x2CA4, 0x8E39, 0x1365, 0x8E3C, + 0x2CA8, 0x8E3D, 0x2CA9, 0x8E3E, 0x2CA3, 0x8E3F, 0x2CAC, 0x8E40, 0x2CA5, + 0x8E41, 0x2CAA, 0x8E42, 0x1364, 0x8E44, 0x1361, 0x8E45, 0x2CA6, 0x8E47, + 0x2E7A, 0x8E48, 0x148B, 0x8E49, 0x1489, 0x8E4A, 0x148C, 0x8E4B, 0x148A, + 0x8E4C, 0x2E79, 0x8E4D, 0x2E76, 0x8E4E, 0x2E75, 0x8E50, 0x2E78, 0x8E53, + 0x2E77, 0x8E54, 0x2FF6, 0x8E55, 0x1535, 0x8E56, 0x2FED, 0x8E57, 0x2FEC, + 0x8E59, 0x1530, 0x8E5A, 0x2FF2, 0x8E5B, 0x2FF1, 0x8E5C, 0x2FE9, 0x8E5D, + 0x2FF4, 0x8E5E, 0x2FEE, 0x8E5F, 0x1534, 0x8E60, 0x2FEB, 0x8E61, 0x2FF3, + 0x8E62, 0x2FEA, 0x8E63, 0x1531, 0x8E64, 0x1533, 0x8E65, 0x2FEF, 0x8E66, + 0x1532, 0x8E67, 0x2FF0, 0x8E69, 0x2FF5, 0x8E6A, 0x313D, 0x8E6C, 0x15D3, + 0x8E6D, 0x313A, 0x8E6F, 0x313E, 0x8E72, 0x15D0, 0x8E73, 0x313C, 0x8E74, + 0x15D5, 0x8E76, 0x15D2, 0x8E78, 0x313B, 0x8E7A, 0x15D4, 0x8E7B, 0x313F, + 0x8E7C, 0x15CF, 0x8E81, 0x164D, 0x8E82, 0x164F, 0x8E84, 0x3240, 0x8E85, + 0x164E, 0x8E86, 0x323E, 0x8E87, 0x15D1, 0x8E88, 0x323F, 0x8E89, 0x164C, + 0x8E8A, 0x1693, 0x8E8B, 0x1695, 0x8E8C, 0x331A, 0x8E8D, 0x1694, 0x8E8E, + 0x3319, 0x8E90, 0x33C1, 0x8E91, 0x16DB, 0x8E92, 0x33C0, 0x8E93, 0x16DC, + 0x8E94, 0x33BE, 0x8E95, 0x33BD, 0x8E96, 0x33C2, 0x8E97, 0x33C3, 0x8E98, + 0x3443, 0x8E9A, 0x33BF, 0x8E9D, 0x34A1, 0x8E9E, 0x349E, 0x8E9F, 0x349F, + 0x8EA0, 0x34A0, 0x8EA1, 0x1749, 0x8EA3, 0x34EB, 0x8EA4, 0x34EA, 0x8EA5, + 0x34E9, 0x8EA6, 0x350A, 0x8EA8, 0x3537, 0x8EA9, 0x3524, 0x8EAA, 0x175B, + 0x8EAB, 0x0512, 0x8EAC, 0x09CF, 0x8EB2, 0x0F2F, 0x8EBA, 0x123D, 0x8EBD, + 0x2CAD, 0x8EC0, 0x1536, 0x8EC2, 0x3140, 0x8EC9, 0x3525, 0x8ECA, 0x0513, + 0x8ECB, 0x068D, 0x8ECC, 0x0810, 0x8ECD, 0x080F, 0x8ECF, 0x09D2, 0x8ED1, + 0x1E13, 0x8ED2, 0x09D0, 0x8ED3, 0x1E14, 0x8ED4, 0x09D1, 0x8ED7, 0x207D, + 0x8ED8, 0x2079, 0x8EDB, 0x0BB3, 0x8EDC, 0x207C, 0x8EDD, 0x207B, 0x8EDE, + 0x207A, 0x8EDF, 0x0BB4, 0x8EE0, 0x207E, 0x8EE1, 0x207F, 0x8EE5, 0x2315, + 0x8EE6, 0x2313, 0x8EE7, 0x2317, 0x8EE8, 0x2318, 0x8EE9, 0x231E, 0x8EEB, + 0x231A, 0x8EEC, 0x231C, 0x8EEE, 0x2314, 0x8EEF, 0x230F, 0x8EF1, 0x231B, + 0x8EF4, 0x231D, 0x8EF5, 0x2316, 0x8EF6, 0x2319, 0x8EF7, 0x2310, 0x8EF8, + 0x0D7F, 0x8EF9, 0x2312, 0x8EFA, 0x2311, 0x8EFB, 0x0D7E, 0x8EFC, 0x0D80, + 0x8EFE, 0x0F32, 0x8EFF, 0x25BA, 0x8F00, 0x25BC, 0x8F01, 0x25BB, 0x8F02, + 0x25C0, 0x8F03, 0x0F30, 0x8F05, 0x25BD, 0x8F06, 0x25B9, 0x8F07, 0x25BE, + 0x8F08, 0x25BF, 0x8F09, 0x0F31, 0x8F0A, 0x0F33, 0x8F0B, 0x25C1, 0x8F0D, + 0x2820, 0x8F0E, 0x281F, 0x8F10, 0x281D, 0x8F11, 0x281E, 0x8F12, 0x10BF, + 0x8F13, 0x10C1, 0x8F14, 0x10BE, 0x8F15, 0x10C0, 0x8F16, 0x2A7A, 0x8F17, + 0x2A7B, 0x8F18, 0x2A76, 0x8F1A, 0x2A77, 0x8F1B, 0x123F, 0x8F1C, 0x1244, + 0x8F1D, 0x123E, 0x8F1E, 0x1245, 0x8F1F, 0x1240, 0x8F20, 0x2A78, 0x8F23, + 0x2A79, 0x8F24, 0x2A75, 0x8F25, 0x1246, 0x8F26, 0x1242, 0x8F29, 0x1241, + 0x8F2A, 0x1243, 0x8F2C, 0x2A74, 0x8F2E, 0x2CAF, 0x8F2F, 0x1368, 0x8F32, + 0x2CB1, 0x8F33, 0x136A, 0x8F34, 0x2CB4, 0x8F35, 0x2CB0, 0x8F36, 0x2CAE, + 0x8F37, 0x2CB3, 0x8F38, 0x1369, 0x8F39, 0x2CB2, 0x8F3B, 0x1367, 0x8F3E, + 0x148E, 0x8F3F, 0x1491, 0x8F40, 0x2E7C, 0x8F42, 0x148F, 0x8F43, 0x2E7B, + 0x8F44, 0x148D, 0x8F45, 0x1490, 0x8F46, 0x2FF7, 0x8F47, 0x2FF8, 0x8F48, + 0x2FF9, 0x8F49, 0x1537, 0x8F4B, 0x2FFA, 0x8F4D, 0x1538, 0x8F4E, 0x15D7, + 0x8F4F, 0x3143, 0x8F50, 0x3144, 0x8F51, 0x3142, 0x8F52, 0x3141, 0x8F53, + 0x3145, 0x8F54, 0x15D6, 0x8F55, 0x3244, 0x8F56, 0x3242, 0x8F57, 0x3243, + 0x8F58, 0x3245, 0x8F59, 0x3241, 0x8F5A, 0x3246, 0x8F5B, 0x331C, 0x8F5D, + 0x331D, 0x8F5E, 0x331B, 0x8F5F, 0x1696, 0x8F60, 0x33C4, 0x8F61, 0x16DD, + 0x8F62, 0x33C5, 0x8F63, 0x3445, 0x8F64, 0x3444, 0x8F9B, 0x0514, 0x8F9C, + 0x0D81, 0x8F9F, 0x0F34, 0x8FA3, 0x10C2, 0x8FA6, 0x136C, 0x8FA8, 0x136B, + 0x8FAD, 0x15D8, 0x8FAE, 0x162F, 0x8FAF, 0x1697, 0x8FB0, 0x0515, 0x8FB1, + 0x09D3, 0x8FB2, 0x0F35, 0x8FB4, 0x3146, 0x8FB5, 0x0230, 0x8FBF, 0x18E9, + 0x8FC2, 0x0516, 0x8FC4, 0x0519, 0x8FC5, 0x0518, 0x8FC6, 0x0517, 0x8FC9, + 0x18E8, 0x8FCB, 0x1A4A, 0x8FCD, 0x1A4C, 0x8FCE, 0x068E, 0x8FD1, 0x0690, + 0x8FD2, 0x1A49, 0x8FD3, 0x1A4B, 0x8FD4, 0x068F, 0x8FD5, 0x1A4E, 0x8FD6, + 0x1A4D, 0x8FD7, 0x1A4F, 0x8FE0, 0x1C0A, 0x8FE1, 0x1C08, 0x8FE2, 0x0813, + 0x8FE3, 0x1C07, 0x8FE4, 0x0818, 0x8FE5, 0x0815, 0x8FE6, 0x0812, 0x8FE8, + 0x0819, 0x8FEA, 0x0814, 0x8FEB, 0x0817, 0x8FED, 0x0816, 0x8FEE, 0x1C09, + 0x8FF0, 0x0811, 0x8FF4, 0x09D9, 0x8FF5, 0x1E16, 0x8FF6, 0x1E1C, 0x8FF7, + 0x09D6, 0x8FF8, 0x09DD, 0x8FFA, 0x09D8, 0x8FFB, 0x1E19, 0x8FFC, 0x1E1B, + 0x8FFD, 0x09DB, 0x8FFE, 0x1E15, 0x8FFF, 0x1E18, 0x9000, 0x09D7, 0x9001, + 0x09D4, 0x9002, 0x1E17, 0x9003, 0x09DA, 0x9004, 0x1E1A, 0x9005, 0x09DC, + 0x9006, 0x09D5, 0x900B, 0x2081, 0x900C, 0x2084, 0x900D, 0x0BB6, 0x900F, + 0x0BC0, 0x9010, 0x0BBC, 0x9011, 0x2082, 0x9014, 0x0BC4, 0x9015, 0x0BBD, + 0x9016, 0x0BC2, 0x9017, 0x0BB8, 0x9019, 0x0BB5, 0x901A, 0x0BB7, 0x901B, + 0x0BC3, 0x901C, 0x2083, 0x901D, 0x0BBB, 0x901E, 0x0BBE, 0x901F, 0x0BBA, + 0x9020, 0x0BBF, 0x9021, 0x2085, 0x9022, 0x0BC1, 0x9023, 0x0BB9, 0x9024, + 0x2080, 0x902D, 0x231F, 0x902E, 0x0D82, 0x902F, 0x2321, 0x9031, 0x0D84, + 0x9032, 0x0D86, 0x9034, 0x2320, 0x9035, 0x0D83, 0x9036, 0x0D87, 0x9038, + 0x0D85, 0x903C, 0x0F3B, 0x903D, 0x25C6, 0x903E, 0x0F43, 0x903F, 0x25C3, + 0x9041, 0x0F44, 0x9042, 0x0F39, 0x9044, 0x25C4, 0x9047, 0x0F3E, 0x9049, + 0x25C5, 0x904A, 0x0F37, 0x904B, 0x0F36, 0x904D, 0x0F41, 0x904E, 0x0F40, + 0x904F, 0x0F3F, 0x9050, 0x0F3D, 0x9051, 0x0F42, 0x9052, 0x25C2, 0x9053, + 0x0F38, 0x9054, 0x0F3A, 0x9055, 0x0F3C, 0x9058, 0x10C4, 0x9059, 0x10C7, + 0x905B, 0x10CB, 0x905C, 0x10C5, 0x905D, 0x10CA, 0x905E, 0x10C8, 0x9060, + 0x10C3, 0x9062, 0x10C9, 0x9063, 0x10C6, 0x9067, 0x2A7F, 0x9068, 0x1249, + 0x9069, 0x1247, 0x906B, 0x2A80, 0x906D, 0x124A, 0x906E, 0x1248, 0x906F, + 0x2A7E, 0x9070, 0x2A7D, 0x9072, 0x1370, 0x9073, 0x2A7C, 0x9074, 0x136E, + 0x9075, 0x136D, 0x9076, 0x2CB5, 0x9077, 0x124B, 0x9078, 0x136F, 0x9079, + 0x2CB6, 0x907A, 0x1372, 0x907B, 0x2CB7, 0x907C, 0x1371, 0x907D, 0x1493, + 0x907E, 0x2E7E, 0x907F, 0x1492, 0x9080, 0x1497, 0x9081, 0x1495, 0x9082, + 0x1496, 0x9083, 0x153A, 0x9084, 0x1494, 0x9085, 0x2E7D, 0x9086, 0x2CB8, + 0x9087, 0x1539, 0x9088, 0x153B, 0x908A, 0x15D9, 0x908B, 0x15DA, 0x908D, + 0x3247, 0x908F, 0x170C, 0x9090, 0x170B, 0x9091, 0x051B, 0x9094, 0x181E, + 0x9095, 0x09DE, 0x9097, 0x181B, 0x9098, 0x181C, 0x9099, 0x181A, 0x909B, + 0x181D, 0x909E, 0x18ED, 0x909F, 0x18EA, 0x90A0, 0x18EF, 0x90A1, 0x18EB, + 0x90A2, 0x051C, 0x90A3, 0x051F, 0x90A5, 0x18EC, 0x90A6, 0x051E, 0x90A7, + 0x18EE, 0x90AA, 0x051D, 0x90AF, 0x1A52, 0x90B0, 0x1A54, 0x90B1, 0x0693, + 0x90B2, 0x1A50, 0x90B3, 0x1A53, 0x90B4, 0x1A51, 0x90B5, 0x0691, 0x90B6, + 0x0694, 0x90B8, 0x0692, 0x90BD, 0x1C0C, 0x90BE, 0x1C10, 0x90BF, 0x1C0D, + 0x90C1, 0x081C, 0x90C3, 0x081D, 0x90C5, 0x1C0F, 0x90C7, 0x1C11, 0x90C8, + 0x1C13, 0x90CA, 0x081A, 0x90CB, 0x1C12, 0x90CE, 0x081B, 0x90D4, 0x208C, + 0x90D5, 0x1C0E, 0x90D6, 0x1E1D, 0x90D7, 0x1E26, 0x90D8, 0x1E24, 0x90D9, + 0x1E1F, 0x90DA, 0x1E20, 0x90DB, 0x1E25, 0x90DC, 0x1E27, 0x90DD, 0x09E0, + 0x90DF, 0x1E22, 0x90E0, 0x1E1E, 0x90E1, 0x09DF, 0x90E2, 0x09E1, 0x90E3, + 0x1E21, 0x90E4, 0x1E28, 0x90E5, 0x1E23, 0x90E8, 0x0BC5, 0x90E9, 0x208F, + 0x90EA, 0x2087, 0x90EB, 0x208D, 0x90EC, 0x208E, 0x90ED, 0x0BC6, 0x90EF, + 0x2086, 0x90F0, 0x2088, 0x90F1, 0x1C0B, 0x90F2, 0x208A, 0x90F3, 0x208B, + 0x90F4, 0x2089, 0x90F5, 0x0D89, 0x90F9, 0x2328, 0x90FA, 0x2CB9, 0x90FB, + 0x2329, 0x90FC, 0x2326, 0x90FD, 0x0BC7, 0x90FE, 0x0D8B, 0x90FF, 0x2325, + 0x9100, 0x232B, 0x9101, 0x232A, 0x9102, 0x0D88, 0x9103, 0x232E, 0x9104, + 0x2324, 0x9105, 0x232D, 0x9106, 0x2322, 0x9107, 0x232C, 0x9108, 0x2327, + 0x9109, 0x0D8A, 0x910B, 0x25CD, 0x910D, 0x25C8, 0x910E, 0x25CE, 0x910F, + 0x25C9, 0x9110, 0x25C7, 0x9111, 0x25CA, 0x9112, 0x0F45, 0x9114, 0x25CC, + 0x9116, 0x25CB, 0x9117, 0x0F46, 0x9118, 0x10CD, 0x9119, 0x10CC, 0x911A, + 0x2827, 0x911B, 0x282A, 0x911C, 0x2822, 0x911D, 0x2826, 0x911E, 0x10CE, + 0x911F, 0x2825, 0x9120, 0x2823, 0x9121, 0x2829, 0x9122, 0x2824, 0x9123, + 0x2821, 0x9124, 0x2828, 0x9126, 0x2A86, 0x9127, 0x124E, 0x9128, 0x2FFB, + 0x9129, 0x2A83, 0x912A, 0x2A84, 0x912B, 0x2A82, 0x912C, 0x2323, 0x912D, + 0x124D, 0x912E, 0x2A87, 0x912F, 0x2A81, 0x9130, 0x124C, 0x9131, 0x124F, + 0x9132, 0x2A85, 0x9133, 0x2CBA, 0x9134, 0x1373, 0x9135, 0x2CBB, 0x9136, + 0x2CBC, 0x9138, 0x2E7F, 0x9139, 0x1498, 0x913A, 0x2FFC, 0x913B, 0x2FFD, + 0x913E, 0x2FFE, 0x913F, 0x3148, 0x9140, 0x3147, 0x9141, 0x3249, 0x9143, + 0x3248, 0x9144, 0x331F, 0x9145, 0x3320, 0x9146, 0x331E, 0x9147, 0x33C6, + 0x9148, 0x16DE, 0x9149, 0x0520, 0x914A, 0x081F, 0x914B, 0x081E, 0x914C, + 0x09E4, 0x914D, 0x09E3, 0x914E, 0x1E2A, 0x914F, 0x1E2B, 0x9150, 0x1E29, + 0x9152, 0x09E2, 0x9153, 0x2093, 0x9155, 0x2094, 0x9156, 0x2090, 0x9157, + 0x0BC8, 0x9158, 0x2091, 0x915A, 0x2092, 0x915F, 0x2331, 0x9160, 0x2333, + 0x9161, 0x232F, 0x9162, 0x2332, 0x9163, 0x0D8C, 0x9164, 0x2330, 0x9165, + 0x0D8D, 0x9168, 0x23E2, 0x9169, 0x0F49, 0x916A, 0x0F48, 0x916C, 0x0F47, + 0x916E, 0x25CF, 0x916F, 0x25D0, 0x9172, 0x282C, 0x9173, 0x282E, 0x9174, + 0x10D2, 0x9175, 0x10CF, 0x9177, 0x10D1, 0x9178, 0x10D0, 0x9179, 0x282D, + 0x917A, 0x282B, 0x9180, 0x2A8E, 0x9181, 0x2A8B, 0x9182, 0x2A8C, 0x9183, + 0x1253, 0x9184, 0x2A8D, 0x9185, 0x2A88, 0x9186, 0x2A89, 0x9187, 0x1250, + 0x9189, 0x1251, 0x918A, 0x2A8A, 0x918B, 0x1252, 0x918D, 0x2CC0, 0x918F, + 0x2CC1, 0x9190, 0x2CBE, 0x9191, 0x2CBF, 0x9192, 0x1374, 0x9193, 0x2CBD, + 0x9199, 0x2E83, 0x919A, 0x2E80, 0x919B, 0x2E82, 0x919C, 0x149B, 0x919D, + 0x2E86, 0x919E, 0x149A, 0x919F, 0x2E84, 0x91A0, 0x2E87, 0x91A1, 0x2E85, + 0x91A2, 0x2E81, 0x91A3, 0x1499, 0x91A5, 0x3000, 0x91A7, 0x3001, 0x91A8, + 0x2FFF, 0x91AA, 0x3003, 0x91AB, 0x153C, 0x91AC, 0x153D, 0x91AD, 0x314A, + 0x91AE, 0x15DC, 0x91AF, 0x3002, 0x91B0, 0x3149, 0x91B1, 0x15DB, 0x91B2, + 0x324C, 0x91B3, 0x324D, 0x91B4, 0x1650, 0x91B5, 0x324B, 0x91B7, 0x324A, + 0x91B9, 0x3321, 0x91BA, 0x1698, 0x91BC, 0x3446, 0x91BD, 0x34A3, 0x91BE, + 0x34A2, 0x91C0, 0x1730, 0x91C1, 0x174A, 0x91C2, 0x34A4, 0x91C3, 0x350B, + 0x91C5, 0x175C, 0x91C6, 0x0521, 0x91C7, 0x0695, 0x91C9, 0x0F4A, 0x91CB, + 0x1651, 0x91CC, 0x0522, 0x91CD, 0x0820, 0x91CE, 0x0BC9, 0x91CF, 0x0D8E, + 0x91D0, 0x153E, 0x91D1, 0x0696, 0x91D3, 0x1C15, 0x91D4, 0x1C14, 0x91D5, + 0x1E2C, 0x91D7, 0x09E7, 0x91D8, 0x09E5, 0x91D9, 0x09E9, 0x91DA, 0x1E2E, + 0x91DC, 0x09E8, 0x91DD, 0x09E6, 0x91E2, 0x1E2D, 0x91E3, 0x0BCC, 0x91E4, + 0x209A, 0x91E6, 0x0BCB, 0x91E7, 0x0BCD, 0x91E8, 0x209F, 0x91E9, 0x0BCF, + 0x91EA, 0x209C, 0x91EB, 0x209D, 0x91EC, 0x2095, 0x91ED, 0x0BCE, 0x91EE, + 0x20A0, 0x91F1, 0x2097, 0x91F3, 0x2098, 0x91F4, 0x2096, 0x91F5, 0x0BCA, + 0x91F7, 0x209E, 0x91F8, 0x2099, 0x91F9, 0x209B, 0x91FD, 0x233F, 0x91FF, + 0x233E, 0x9200, 0x233C, 0x9201, 0x2334, 0x9202, 0x2343, 0x9203, 0x2337, + 0x9204, 0x2341, 0x9205, 0x2348, 0x9206, 0x2340, 0x9207, 0x0D96, 0x9209, + 0x0D92, 0x920A, 0x2335, 0x920C, 0x233B, 0x920D, 0x0D94, 0x920F, 0x233A, + 0x9210, 0x0D95, 0x9211, 0x0D97, 0x9212, 0x233D, 0x9214, 0x0D8F, 0x9215, + 0x0D90, 0x9216, 0x2349, 0x9217, 0x2347, 0x9219, 0x2346, 0x921A, 0x2338, + 0x921C, 0x2344, 0x921E, 0x0D93, 0x9223, 0x0D91, 0x9224, 0x2345, 0x9225, + 0x2336, 0x9226, 0x2339, 0x9227, 0x2342, 0x922D, 0x2851, 0x922E, 0x25DA, + 0x9230, 0x25D3, 0x9231, 0x25E6, 0x9232, 0x25EF, 0x9233, 0x25D6, 0x9234, + 0x0F55, 0x9236, 0x25E3, 0x9237, 0x0F4B, 0x9238, 0x0F4D, 0x9239, 0x0F59, + 0x923A, 0x25D4, 0x923D, 0x0F4E, 0x923E, 0x0F50, 0x923F, 0x0F5A, 0x9240, + 0x0F4F, 0x9245, 0x0F58, 0x9246, 0x25DC, 0x9248, 0x25D1, 0x9249, 0x0F56, + 0x924A, 0x25DB, 0x924B, 0x0F52, 0x924C, 0x25ED, 0x924D, 0x0F57, 0x924E, + 0x25EB, 0x924F, 0x25DF, 0x9250, 0x25E9, 0x9251, 0x0F54, 0x9252, 0x25D2, + 0x9253, 0x25EC, 0x9254, 0x25E7, 0x9256, 0x25EE, 0x9257, 0x0F4C, 0x925A, + 0x0F5B, 0x925B, 0x0F51, 0x925E, 0x25D8, 0x9260, 0x25E0, 0x9261, 0x25E4, + 0x9263, 0x25E8, 0x9264, 0x0F53, 0x9265, 0x25D7, 0x9266, 0x25D5, 0x9267, + 0x25E1, 0x926C, 0x25DE, 0x926D, 0x25DD, 0x926F, 0x25E2, 0x9270, 0x25E5, + 0x9272, 0x25EA, 0x9276, 0x2831, 0x9278, 0x10D3, 0x9279, 0x283B, 0x927A, + 0x2833, 0x927B, 0x10D9, 0x927C, 0x10DD, 0x927D, 0x2844, 0x927E, 0x284C, + 0x927F, 0x283D, 0x9280, 0x10D5, 0x9282, 0x2841, 0x9283, 0x25D9, 0x9285, + 0x10D6, 0x9286, 0x2848, 0x9287, 0x284D, 0x9288, 0x2845, 0x928A, 0x2847, + 0x928B, 0x2850, 0x928C, 0x2849, 0x928D, 0x2837, 0x928E, 0x2840, 0x9291, + 0x10DE, 0x9293, 0x10DA, 0x9294, 0x2835, 0x9295, 0x2842, 0x9296, 0x10D8, + 0x9297, 0x283C, 0x9298, 0x10D7, 0x9299, 0x284A, 0x929A, 0x2839, 0x929B, + 0x2832, 0x929C, 0x10DB, 0x929D, 0x284F, 0x92A0, 0x2834, 0x92A1, 0x2846, + 0x92A2, 0x2843, 0x92A3, 0x283E, 0x92A4, 0x2830, 0x92A5, 0x282F, 0x92A6, + 0x2838, 0x92A7, 0x284B, 0x92A8, 0x10DC, 0x92A9, 0x284E, 0x92AA, 0x2836, + 0x92AB, 0x283A, 0x92AC, 0x10D4, 0x92B2, 0x125F, 0x92B3, 0x125A, 0x92B4, + 0x2AB0, 0x92B5, 0x2AAC, 0x92B6, 0x2A94, 0x92B7, 0x1256, 0x92B9, 0x36E9, + 0x92BB, 0x1255, 0x92BC, 0x125B, 0x92C0, 0x2A92, 0x92C1, 0x1259, 0x92C2, + 0x2A9E, 0x92C3, 0x2A90, 0x92C4, 0x2A91, 0x92C5, 0x1254, 0x92C6, 0x2AAF, + 0x92C7, 0x125D, 0x92C8, 0x2AA1, 0x92C9, 0x2AA6, 0x92CA, 0x2AA0, 0x92CB, + 0x2CD3, 0x92CC, 0x2A9C, 0x92CD, 0x2AA4, 0x92CE, 0x2AA2, 0x92CF, 0x2A95, + 0x92D0, 0x2A8F, 0x92D1, 0x2AAA, 0x92D2, 0x125C, 0x92D3, 0x2AAB, 0x92D5, + 0x2AA5, 0x92D7, 0x2A9A, 0x92D8, 0x2A98, 0x92D9, 0x2A93, 0x92DD, 0x2A9B, + 0x92DE, 0x2AA8, 0x92DF, 0x2A97, 0x92E0, 0x2AA7, 0x92E1, 0x2AAD, 0x92E4, + 0x1258, 0x92E6, 0x2AA3, 0x92E7, 0x2AA9, 0x92E8, 0x2A9F, 0x92E9, 0x2A99, + 0x92EA, 0x1257, 0x92EE, 0x283F, 0x92EF, 0x2A9D, 0x92F0, 0x125E, 0x92F1, + 0x2A96, 0x92F7, 0x2CD8, 0x92F8, 0x1377, 0x92F9, 0x2CD7, 0x92FA, 0x2CD5, + 0x92FB, 0x2CE7, 0x92FC, 0x137B, 0x92FE, 0x2CE4, 0x92FF, 0x2CDC, 0x9300, + 0x2CE6, 0x9301, 0x2CCE, 0x9302, 0x2CDA, 0x9304, 0x137D, 0x9306, 0x2CC6, + 0x9308, 0x2CC4, 0x9309, 0x2CE5, 0x930B, 0x2CE3, 0x930C, 0x2CE2, 0x930D, + 0x2CD2, 0x930E, 0x2CD1, 0x930F, 0x2CC7, 0x9310, 0x137F, 0x9312, 0x2CCD, + 0x9313, 0x2CD6, 0x9314, 0x2CE1, 0x9315, 0x1382, 0x9316, 0x2CE8, 0x9318, + 0x14A3, 0x9319, 0x1384, 0x931A, 0x137E, 0x931B, 0x2CCB, 0x931D, 0x2CD4, + 0x931E, 0x2CC3, 0x931F, 0x2CC5, 0x9320, 0x1375, 0x9321, 0x1381, 0x9322, + 0x137A, 0x9323, 0x2CCC, 0x9324, 0x2CDB, 0x9325, 0x2AAE, 0x9326, 0x1380, + 0x9327, 0x2CC2, 0x9328, 0x149E, 0x9329, 0x2CDD, 0x932A, 0x2CE0, 0x932B, + 0x137C, 0x932D, 0x2CD0, 0x932E, 0x1383, 0x932F, 0x1379, 0x9333, 0x1378, + 0x9334, 0x2CD9, 0x9335, 0x2CDF, 0x9336, 0x1376, 0x9338, 0x2CC9, 0x9339, + 0x2CDE, 0x933C, 0x2CCA, 0x9346, 0x2CCF, 0x9347, 0x2E8D, 0x9349, 0x2E92, + 0x934A, 0x14A0, 0x934B, 0x14A2, 0x934C, 0x2E98, 0x934D, 0x149C, 0x934E, + 0x2EA6, 0x934F, 0x2E9E, 0x9350, 0x2E93, 0x9351, 0x2E94, 0x9352, 0x2E9D, + 0x9354, 0x14A9, 0x9355, 0x2E9C, 0x9356, 0x2E8C, 0x9357, 0x2E9B, 0x9358, + 0x2E8F, 0x9359, 0x2EA7, 0x935A, 0x14A8, 0x935B, 0x14A6, 0x935C, 0x2E90, + 0x935E, 0x2EA3, 0x9360, 0x2E95, 0x9361, 0x2EA2, 0x9363, 0x2EA4, 0x9364, + 0x2E8B, 0x9365, 0x14A1, 0x9367, 0x2EA5, 0x936A, 0x2E99, 0x936C, 0x14A5, + 0x936D, 0x2E96, 0x9370, 0x14A7, 0x9371, 0x2E9F, 0x9375, 0x149F, 0x9376, + 0x2E91, 0x9377, 0x2EA0, 0x9379, 0x2E9A, 0x937A, 0x2CC8, 0x937B, 0x2EA1, + 0x937C, 0x2E8E, 0x937E, 0x14A4, 0x9380, 0x3014, 0x9382, 0x149D, 0x9383, + 0x2E89, 0x9388, 0x3011, 0x9389, 0x300A, 0x938A, 0x1540, 0x938C, 0x3005, + 0x938D, 0x3015, 0x938E, 0x300C, 0x938F, 0x2E97, 0x9391, 0x3017, 0x9392, + 0x3006, 0x9394, 0x153F, 0x9395, 0x3010, 0x9396, 0x1541, 0x9397, 0x1549, + 0x9398, 0x1547, 0x9399, 0x3012, 0x939A, 0x1548, 0x939B, 0x3008, 0x939D, + 0x3009, 0x939E, 0x300E, 0x939F, 0x3013, 0x93A1, 0x2E88, 0x93A2, 0x1542, + 0x93A3, 0x301C, 0x93A4, 0x3019, 0x93A5, 0x3160, 0x93A6, 0x300F, 0x93A7, + 0x300B, 0x93A8, 0x301A, 0x93A9, 0x3155, 0x93AA, 0x300D, 0x93AC, 0x1545, + 0x93AE, 0x1544, 0x93AF, 0x2E8A, 0x93B0, 0x1546, 0x93B1, 0x3016, 0x93B2, + 0x3018, 0x93B3, 0x1543, 0x93B4, 0x301B, 0x93B5, 0x3004, 0x93B7, 0x3007, + 0x93C0, 0x315E, 0x93C2, 0x314E, 0x93C3, 0x15E0, 0x93C4, 0x315C, 0x93C7, + 0x314C, 0x93C8, 0x15E1, 0x93CA, 0x3157, 0x93CC, 0x3153, 0x93CD, 0x15E6, + 0x93CE, 0x315D, 0x93CF, 0x314D, 0x93D0, 0x3150, 0x93D1, 0x15DE, 0x93D2, + 0x315F, 0x93D4, 0x3158, 0x93D5, 0x315B, 0x93D6, 0x15E4, 0x93D7, 0x15E9, + 0x93D8, 0x15E7, 0x93D9, 0x3154, 0x93DA, 0x314F, 0x93DC, 0x15E2, 0x93DD, + 0x15E3, 0x93DE, 0x314B, 0x93DF, 0x15DF, 0x93E1, 0x15DD, 0x93E2, 0x15E5, + 0x93E3, 0x315A, 0x93E4, 0x15E8, 0x93E6, 0x3156, 0x93E7, 0x3161, 0x93E8, + 0x15EA, 0x93EC, 0x3152, 0x93EE, 0x3159, 0x93F5, 0x325A, 0x93F6, 0x3269, + 0x93F7, 0x325C, 0x93F8, 0x3263, 0x93F9, 0x3151, 0x93FA, 0x3261, 0x93FB, + 0x3250, 0x93FC, 0x3267, 0x93FD, 0x1654, 0x93FE, 0x3254, 0x93FF, 0x3266, + 0x9400, 0x325B, 0x9403, 0x1653, 0x9406, 0x326B, 0x9407, 0x325D, 0x9409, + 0x3262, 0x940A, 0x3265, 0x940B, 0x324E, 0x940C, 0x3268, 0x940D, 0x3259, + 0x940E, 0x325E, 0x940F, 0x3252, 0x9410, 0x3256, 0x9411, 0x326A, 0x9412, + 0x3260, 0x9413, 0x324F, 0x9414, 0x3253, 0x9415, 0x3255, 0x9416, 0x325F, + 0x9418, 0x1652, 0x9419, 0x3258, 0x9420, 0x3251, 0x9428, 0x3257, 0x9429, + 0x3325, 0x942A, 0x3329, 0x942B, 0x169F, 0x942C, 0x332B, 0x942E, 0x1699, + 0x9430, 0x3327, 0x9431, 0x332D, 0x9432, 0x169E, 0x9433, 0x169A, 0x9435, + 0x169B, 0x9436, 0x3324, 0x9437, 0x332A, 0x9438, 0x169D, 0x9439, 0x3328, + 0x943A, 0x169C, 0x943B, 0x3323, 0x943C, 0x3264, 0x943D, 0x3326, 0x943F, + 0x3322, 0x9440, 0x332C, 0x9444, 0x16DF, 0x9445, 0x33CD, 0x9446, 0x33D0, + 0x9447, 0x33CC, 0x9448, 0x33CE, 0x9449, 0x33CF, 0x944A, 0x33C9, 0x944B, + 0x33CA, 0x944C, 0x33C7, 0x944F, 0x33CB, 0x9450, 0x33C8, 0x9451, 0x16E0, + 0x9452, 0x16E1, 0x9455, 0x3448, 0x9457, 0x344A, 0x945D, 0x3449, 0x945E, + 0x344B, 0x9460, 0x170E, 0x9462, 0x3447, 0x9463, 0x170D, 0x9464, 0x170F, + 0x9468, 0x34A6, 0x9469, 0x34A7, 0x946A, 0x1731, 0x946B, 0x34A5, 0x946D, + 0x34ED, 0x946E, 0x34EC, 0x946F, 0x34EE, 0x9470, 0x174C, 0x9471, 0x34EF, + 0x9472, 0x174B, 0x9473, 0x34F0, 0x9474, 0x350C, 0x9475, 0x350F, 0x9476, + 0x350E, 0x9477, 0x1755, 0x9478, 0x350D, 0x947C, 0x175F, 0x947D, 0x175D, + 0x947E, 0x175E, 0x947F, 0x1764, 0x9480, 0x3539, 0x9481, 0x353A, 0x9482, + 0x3538, 0x9483, 0x3540, 0x9577, 0x0697, 0x957A, 0x20A1, 0x957B, 0x234A, + 0x957C, 0x2AB1, 0x957D, 0x3162, 0x9580, 0x0698, 0x9582, 0x0821, 0x9583, + 0x09EA, 0x9586, 0x20A2, 0x9588, 0x20A3, 0x9589, 0x0BD0, 0x958B, 0x0D9A, + 0x958C, 0x234C, 0x958D, 0x234B, 0x958E, 0x0D9E, 0x958F, 0x0D99, 0x9590, + 0x234D, 0x9591, 0x0D9B, 0x9592, 0x0D9D, 0x9593, 0x0D9C, 0x9594, 0x0D98, + 0x9598, 0x0F5C, 0x959B, 0x25F3, 0x959C, 0x25F1, 0x959E, 0x25F2, 0x959F, + 0x25F0, 0x95A1, 0x10DF, 0x95A3, 0x10E2, 0x95A4, 0x10E4, 0x95A5, 0x10E3, + 0x95A8, 0x10E0, 0x95A9, 0x10E1, 0x95AB, 0x2AB3, 0x95AC, 0x2AB2, 0x95AD, + 0x1260, 0x95AE, 0x2AB4, 0x95B0, 0x2AB5, 0x95B1, 0x1261, 0x95B5, 0x2CF0, + 0x95B6, 0x2CEE, 0x95B7, 0x2EAD, 0x95B9, 0x2CEC, 0x95BA, 0x2CED, 0x95BB, + 0x1385, 0x95BC, 0x2CE9, 0x95BD, 0x2CF1, 0x95BE, 0x2CEB, 0x95BF, 0x2CEF, + 0x95C0, 0x2EA9, 0x95C3, 0x2EAB, 0x95C5, 0x2EAC, 0x95C6, 0x14AE, 0x95C7, + 0x2EA8, 0x95C8, 0x14AD, 0x95C9, 0x2EAA, 0x95CA, 0x14AA, 0x95CB, 0x14AB, + 0x95CC, 0x14AC, 0x95CD, 0x2CEA, 0x95D0, 0x154C, 0x95D1, 0x301F, 0x95D2, + 0x301D, 0x95D3, 0x301E, 0x95D4, 0x154A, 0x95D5, 0x154D, 0x95D6, 0x154B, + 0x95DA, 0x3163, 0x95DB, 0x3164, 0x95DC, 0x15EB, 0x95DE, 0x326C, 0x95DF, + 0x326E, 0x95E0, 0x326D, 0x95E1, 0x1655, 0x95E2, 0x16A0, 0x95E3, 0x3330, + 0x95E4, 0x332F, 0x95E5, 0x332E, 0x961C, 0x0699, 0x961E, 0x17B4, 0x9620, + 0x1821, 0x9621, 0x0414, 0x9622, 0x181F, 0x9623, 0x1822, 0x9624, 0x1820, + 0x9628, 0x18F1, 0x962A, 0x0526, 0x962C, 0x0527, 0x962D, 0x18F3, 0x962E, + 0x0524, 0x962F, 0x18F2, 0x9630, 0x18F0, 0x9631, 0x0525, 0x9632, 0x0523, + 0x9639, 0x1A55, 0x963A, 0x1A58, 0x963B, 0x069C, 0x963C, 0x1A57, 0x963D, + 0x1A56, 0x963F, 0x069B, 0x9640, 0x069A, 0x9642, 0x069E, 0x9643, 0x1A59, + 0x9644, 0x069D, 0x964A, 0x1C1A, 0x964B, 0x0823, 0x964C, 0x0824, 0x964D, + 0x0825, 0x964E, 0x1C1B, 0x964F, 0x1C17, 0x9650, 0x0822, 0x9651, 0x1C18, + 0x9653, 0x1C19, 0x9654, 0x1C16, 0x9658, 0x09F1, 0x965B, 0x09EE, 0x965C, + 0x1E2F, 0x965D, 0x09EF, 0x965E, 0x09F2, 0x965F, 0x1E30, 0x9661, 0x09ED, + 0x9662, 0x09EB, 0x9663, 0x09EC, 0x9664, 0x09F0, 0x966A, 0x0BD1, 0x966B, + 0x20A6, 0x966C, 0x0BD9, 0x966D, 0x20A5, 0x966F, 0x20A8, 0x9670, 0x0BD5, + 0x9671, 0x20A7, 0x9672, 0x0DA6, 0x9673, 0x0BD3, 0x9674, 0x0BD6, 0x9675, + 0x0BD2, 0x9676, 0x0BD7, 0x9677, 0x0BD8, 0x9678, 0x0BD4, 0x967C, 0x20A4, + 0x967D, 0x0DA2, 0x967E, 0x234F, 0x9680, 0x2353, 0x9683, 0x2352, 0x9684, + 0x0DA7, 0x9685, 0x0DA3, 0x9686, 0x0DA4, 0x9687, 0x234E, 0x9688, 0x2350, + 0x9689, 0x2351, 0x968A, 0x0D9F, 0x968B, 0x0DA1, 0x968D, 0x0DA5, 0x968E, + 0x0DA0, 0x9691, 0x25F6, 0x9692, 0x25F4, 0x9693, 0x25F5, 0x9694, 0x0F5E, + 0x9695, 0x0F5F, 0x9697, 0x25F7, 0x9698, 0x0F5D, 0x9699, 0x10E5, 0x969B, + 0x10E7, 0x969C, 0x10E6, 0x969E, 0x2852, 0x96A1, 0x2853, 0x96A2, 0x2AB7, + 0x96A4, 0x2AB6, 0x96A7, 0x1386, 0x96A8, 0x1387, 0x96A9, 0x2CF2, 0x96AA, + 0x1388, 0x96AC, 0x2EB0, 0x96AE, 0x2EAE, 0x96B0, 0x2EAF, 0x96B1, 0x14AF, + 0x96B3, 0x3020, 0x96B4, 0x15EC, 0x96B6, 0x0231, 0x96B8, 0x14B0, 0x96B9, + 0x069F, 0x96BB, 0x09F3, 0x96BC, 0x1E31, 0x96BF, 0x20A9, 0x96C0, 0x0BDA, + 0x96C1, 0x0DA8, 0x96C2, 0x2354, 0x96C3, 0x2356, 0x96C4, 0x0DAA, 0x96C5, + 0x0DA9, 0x96C6, 0x0DAB, 0x96C7, 0x0DAC, 0x96C8, 0x2355, 0x96C9, 0x0F62, + 0x96CA, 0x0F63, 0x96CB, 0x0F61, 0x96CC, 0x10E8, 0x96CD, 0x0F60, 0x96CE, + 0x25F8, 0x96D2, 0x10E9, 0x96D3, 0x2AB8, 0x96D4, 0x2CF3, 0x96D5, 0x1389, + 0x96D6, 0x14B1, 0x96D7, 0x3021, 0x96D8, 0x3025, 0x96D9, 0x1550, 0x96DA, + 0x3022, 0x96DB, 0x1551, 0x96DC, 0x154F, 0x96DD, 0x3026, 0x96DE, 0x1552, + 0x96DF, 0x3024, 0x96E1, 0x3165, 0x96E2, 0x154E, 0x96E3, 0x15ED, 0x96E5, + 0x34A8, 0x96E8, 0x06A0, 0x96E9, 0x0BDC, 0x96EA, 0x0BDB, 0x96EF, 0x0DAD, + 0x96F0, 0x2358, 0x96F1, 0x2357, 0x96F2, 0x0DAE, 0x96F5, 0x25FC, 0x96F6, + 0x0F67, 0x96F7, 0x0F64, 0x96F8, 0x25FB, 0x96F9, 0x0F66, 0x96FA, 0x25F9, + 0x96FB, 0x0F65, 0x96FD, 0x25FA, 0x96FF, 0x2854, 0x9700, 0x10EA, 0x9702, + 0x2ABB, 0x9704, 0x1262, 0x9705, 0x2AB9, 0x9706, 0x1263, 0x9707, 0x1264, + 0x9708, 0x2ABA, 0x9709, 0x1265, 0x970B, 0x2CF4, 0x970D, 0x138D, 0x970E, + 0x138A, 0x970F, 0x138F, 0x9710, 0x2CF6, 0x9711, 0x138B, 0x9712, 0x2CF5, + 0x9713, 0x138E, 0x9716, 0x138C, 0x9718, 0x2EB3, 0x9719, 0x2EB5, 0x971C, + 0x14B2, 0x971D, 0x2EB4, 0x971E, 0x14B3, 0x971F, 0x2EB2, 0x9720, 0x2EB1, + 0x9722, 0x3028, 0x9723, 0x3027, 0x9724, 0x1553, 0x9725, 0x3029, 0x9726, + 0x316A, 0x9727, 0x15EF, 0x9728, 0x3169, 0x9729, 0x3166, 0x972A, 0x15EE, + 0x972B, 0x3167, 0x972C, 0x3168, 0x972E, 0x326F, 0x972F, 0x3270, 0x9730, + 0x1656, 0x9732, 0x16A3, 0x9735, 0x3331, 0x9738, 0x16A1, 0x9739, 0x16A2, + 0x973A, 0x3332, 0x973D, 0x16E2, 0x973E, 0x16E3, 0x973F, 0x33D1, 0x9742, + 0x1732, 0x9743, 0x34AA, 0x9744, 0x1734, 0x9746, 0x34A9, 0x9747, 0x34AB, + 0x9748, 0x1733, 0x9749, 0x34F1, 0x974B, 0x3526, 0x9752, 0x06A1, 0x9756, + 0x0F68, 0x9758, 0x2855, 0x975A, 0x2ABC, 0x975B, 0x1390, 0x975C, 0x1391, + 0x975E, 0x06A2, 0x9760, 0x1266, 0x9761, 0x15F0, 0x9762, 0x0826, 0x9766, + 0x1392, 0x9768, 0x1710, 0x9769, 0x0827, 0x976A, 0x20AA, 0x976C, 0x2359, + 0x976E, 0x235B, 0x9770, 0x235A, 0x9772, 0x2600, 0x9773, 0x25FD, 0x9774, + 0x0F69, 0x9776, 0x0F6A, 0x9777, 0x25FE, 0x9778, 0x25FF, 0x977A, 0x2857, + 0x977B, 0x285C, 0x977C, 0x10EB, 0x977D, 0x2856, 0x977E, 0x2858, 0x977F, + 0x285F, 0x9780, 0x285A, 0x9781, 0x285E, 0x9782, 0x285B, 0x9783, 0x2859, + 0x9784, 0x285D, 0x9785, 0x10EC, 0x9788, 0x2ABF, 0x978A, 0x2ABD, 0x978B, + 0x1268, 0x978D, 0x1267, 0x978E, 0x2ABE, 0x978F, 0x1269, 0x9794, 0x2CF9, + 0x9797, 0x2CF8, 0x9798, 0x1393, 0x9799, 0x2CF7, 0x979A, 0x2EB6, 0x979C, + 0x2EB8, 0x979D, 0x2EBA, 0x979E, 0x2EB9, 0x97A0, 0x14B4, 0x97A1, 0x2EB7, + 0x97A2, 0x3030, 0x97A3, 0x1554, 0x97A4, 0x302E, 0x97A5, 0x3031, 0x97A6, + 0x1555, 0x97A8, 0x302C, 0x97AA, 0x302F, 0x97AB, 0x302D, 0x97AC, 0x302A, + 0x97AD, 0x1556, 0x97AE, 0x302B, 0x97B3, 0x316B, 0x97B6, 0x316D, 0x97B7, + 0x316C, 0x97B9, 0x3271, 0x97BB, 0x3272, 0x97BF, 0x3333, 0x97C1, 0x16E5, + 0x97C3, 0x16E4, 0x97C4, 0x344C, 0x97C5, 0x344D, 0x97C6, 0x1735, 0x97C7, + 0x34AC, 0x97C9, 0x1756, 0x97CB, 0x0828, 0x97CC, 0x0DAF, 0x97CD, 0x2861, + 0x97CE, 0x2860, 0x97CF, 0x2AC1, 0x97D0, 0x2AC0, 0x97D3, 0x14B5, 0x97D4, + 0x2EBC, 0x97D5, 0x2EBB, 0x97D6, 0x3034, 0x97D7, 0x3032, 0x97D8, 0x3035, + 0x97D9, 0x3033, 0x97DC, 0x15F1, 0x97DD, 0x316E, 0x97DE, 0x316F, 0x97DF, + 0x3170, 0x97E1, 0x3334, 0x97E3, 0x33D2, 0x97E5, 0x34AD, 0x97ED, 0x0829, + 0x97F0, 0x2CFA, 0x97F1, 0x2EBD, 0x97F3, 0x082A, 0x97F6, 0x10ED, 0x97F8, + 0x2CFB, 0x97F9, 0x1557, 0x97FA, 0x3036, 0x97FB, 0x15F2, 0x97FD, 0x3273, + 0x97FE, 0x3274, 0x97FF, 0x16A4, 0x9800, 0x344E, 0x9801, 0x082B, 0x9802, + 0x0BDF, 0x9803, 0x0BE0, 0x9804, 0x20AB, 0x9805, 0x0DB0, 0x9806, 0x0DB1, + 0x9807, 0x235C, 0x9808, 0x0DB2, 0x980A, 0x0F6E, 0x980C, 0x0F70, 0x980D, + 0x2602, 0x980E, 0x2603, 0x980F, 0x2601, 0x9810, 0x0F6B, 0x9811, 0x0F6C, + 0x9812, 0x0F6F, 0x9813, 0x0F6D, 0x9816, 0x2862, 0x9817, 0x10EE, 0x9818, + 0x10EF, 0x981B, 0x2AC8, 0x981C, 0x126C, 0x981D, 0x2AC3, 0x981E, 0x2AC2, + 0x9820, 0x2AC7, 0x9821, 0x126A, 0x9824, 0x139A, 0x9826, 0x2AC4, 0x9827, + 0x2AC9, 0x9828, 0x2AC6, 0x9829, 0x2AC5, 0x982B, 0x126B, 0x982D, 0x1398, + 0x982F, 0x2CFD, 0x9830, 0x1394, 0x9832, 0x2CFE, 0x9835, 0x2CFC, 0x9837, + 0x1397, 0x9838, 0x1395, 0x9839, 0x1399, 0x983B, 0x1396, 0x9841, 0x2EBE, + 0x9843, 0x2EC3, 0x9844, 0x2EBF, 0x9845, 0x2EC2, 0x9846, 0x14B6, 0x9848, + 0x2DF2, 0x9849, 0x2EC1, 0x984A, 0x2EC0, 0x984C, 0x155A, 0x984D, 0x1558, + 0x984E, 0x155B, 0x984F, 0x1559, 0x9850, 0x3037, 0x9851, 0x3038, 0x9852, + 0x3039, 0x9853, 0x155C, 0x9857, 0x3174, 0x9858, 0x15F4, 0x9859, 0x3172, + 0x985B, 0x15F5, 0x985C, 0x3171, 0x985D, 0x3173, 0x985E, 0x15F3, 0x985F, + 0x3278, 0x9860, 0x3275, 0x9862, 0x3276, 0x9863, 0x3277, 0x9864, 0x3335, + 0x9865, 0x16A6, 0x9867, 0x16A5, 0x9869, 0x33D4, 0x986A, 0x33D3, 0x986B, + 0x16E6, 0x986F, 0x1711, 0x9870, 0x1736, 0x9871, 0x174D, 0x9872, 0x34F2, + 0x9873, 0x3527, 0x9874, 0x3528, 0x98A8, 0x082C, 0x98A9, 0x235D, 0x98AC, + 0x2604, 0x98AD, 0x2863, 0x98AE, 0x2864, 0x98AF, 0x10F0, 0x98B1, 0x10F1, + 0x98B2, 0x2ACA, 0x98B3, 0x126D, 0x98B6, 0x14B7, 0x98B8, 0x303A, 0x98BA, + 0x155D, 0x98BB, 0x3177, 0x98BC, 0x15F6, 0x98BD, 0x3176, 0x98BE, 0x3178, + 0x98BF, 0x3175, 0x98C0, 0x3338, 0x98C1, 0x3279, 0x98C2, 0x327A, 0x98C4, + 0x1657, 0x98C6, 0x3337, 0x98C9, 0x3336, 0x98CB, 0x33D5, 0x98CC, 0x3529, + 0x98DB, 0x082D, 0x98DF, 0x082E, 0x98E2, 0x09F4, 0x98E3, 0x1E32, 0x98E5, + 0x20AC, 0x98E7, 0x0DB3, 0x98E9, 0x0DB6, 0x98EA, 0x0DB4, 0x98EB, 0x235E, + 0x98ED, 0x0DB8, 0x98EF, 0x0DB5, 0x98F2, 0x0DB7, 0x98F4, 0x0F72, 0x98F6, + 0x2605, 0x98F9, 0x2606, 0x98FA, 0x2ACC, 0x98FC, 0x0F71, 0x98FD, 0x0F73, + 0x98FE, 0x0F74, 0x9900, 0x2866, 0x9902, 0x2865, 0x9903, 0x10F2, 0x9905, + 0x10F3, 0x9907, 0x2867, 0x9908, 0x2ACB, 0x9909, 0x10F5, 0x990A, 0x126E, + 0x990C, 0x10F4, 0x9910, 0x139B, 0x9911, 0x2ACD, 0x9912, 0x1270, 0x9913, + 0x126F, 0x9914, 0x2ACE, 0x9915, 0x2AD1, 0x9916, 0x2ACF, 0x9917, 0x2AD0, + 0x9918, 0x1271, 0x991A, 0x13A0, 0x991B, 0x139E, 0x991E, 0x139D, 0x991F, + 0x2D00, 0x9921, 0x139F, 0x9924, 0x2CFF, 0x9925, 0x2EC4, 0x9927, 0x2D01, + 0x9928, 0x139C, 0x9929, 0x2D02, 0x992A, 0x2EC7, 0x992B, 0x2EC5, 0x992C, + 0x2EC6, 0x992D, 0x2ECB, 0x992E, 0x1561, 0x992F, 0x2ECA, 0x9930, 0x2ECD, + 0x9931, 0x2ECC, 0x9932, 0x2EC9, 0x9933, 0x2EC8, 0x9935, 0x14B8, 0x993A, + 0x303D, 0x993C, 0x303C, 0x993D, 0x1560, 0x993E, 0x155E, 0x993F, 0x155F, + 0x9941, 0x303B, 0x9943, 0x317B, 0x9945, 0x15F7, 0x9947, 0x317A, 0x9948, + 0x3179, 0x9949, 0x15F8, 0x994B, 0x327F, 0x994C, 0x327E, 0x994E, 0x327C, + 0x9950, 0x327B, 0x9951, 0x1659, 0x9952, 0x1658, 0x9953, 0x3280, 0x9954, + 0x33D6, 0x9955, 0x16E7, 0x9956, 0x333A, 0x9957, 0x16A7, 0x9958, 0x3339, + 0x9959, 0x327D, 0x995B, 0x33D7, 0x995C, 0x1712, 0x995E, 0x174E, 0x995F, + 0x34F3, 0x9961, 0x352A, 0x9996, 0x082F, 0x9997, 0x20AD, 0x9998, 0x2ECE, + 0x9999, 0x0830, 0x999C, 0x2869, 0x999D, 0x2868, 0x999E, 0x2D03, 0x99A1, + 0x2ED0, 0x99A3, 0x2ECF, 0x99A5, 0x1562, 0x99A6, 0x317C, 0x99A7, 0x317D, + 0x99A8, 0x165A, 0x99AB, 0x352B, 0x99AC, 0x09F5, 0x99AD, 0x0DBA, 0x99AE, + 0x0DB9, 0x99AF, 0x2607, 0x99B0, 0x2609, 0x99B1, 0x0F76, 0x99B2, 0x2608, + 0x99B3, 0x0F75, 0x99B4, 0x0F77, 0x99B5, 0x260A, 0x99B9, 0x286B, 0x99BA, + 0x286D, 0x99BB, 0x286C, 0x99BD, 0x286F, 0x99C1, 0x10F6, 0x99C2, 0x286E, + 0x99C3, 0x286A, 0x99C7, 0x2870, 0x99C9, 0x2AD8, 0x99CB, 0x2ADB, 0x99CC, + 0x2ADD, 0x99CD, 0x2AD3, 0x99CE, 0x2AD7, 0x99CF, 0x2AD4, 0x99D0, 0x1273, + 0x99D1, 0x1276, 0x99D2, 0x1278, 0x99D3, 0x2AD5, 0x99D4, 0x2AD6, 0x99D5, + 0x1277, 0x99D6, 0x2AD9, 0x99D7, 0x2ADC, 0x99D8, 0x2ADA, 0x99D9, 0x1279, + 0x99DB, 0x1275, 0x99DC, 0x2AD2, 0x99DD, 0x1272, 0x99DF, 0x1274, 0x99E2, + 0x13A2, 0x99E3, 0x2D09, 0x99E4, 0x2D07, 0x99E5, 0x2D06, 0x99E7, 0x2D0C, + 0x99E9, 0x2D0B, 0x99EA, 0x2D0A, 0x99EC, 0x2D05, 0x99ED, 0x13A1, 0x99EE, + 0x2D04, 0x99F0, 0x2D08, 0x99F1, 0x13A3, 0x99F4, 0x2ED3, 0x99F6, 0x2ED7, + 0x99F7, 0x2ED4, 0x99F8, 0x2ED6, 0x99F9, 0x2ED5, 0x99FA, 0x2ED2, 0x99FB, + 0x2ED8, 0x99FC, 0x2EDB, 0x99FD, 0x2ED9, 0x99FE, 0x2EDA, 0x99FF, 0x14BA, + 0x9A01, 0x14B9, 0x9A02, 0x2ED1, 0x9A03, 0x2EDC, 0x9A04, 0x3042, 0x9A05, + 0x3045, 0x9A06, 0x3047, 0x9A07, 0x3046, 0x9A09, 0x3040, 0x9A0A, 0x3044, + 0x9A0B, 0x303F, 0x9A0D, 0x3041, 0x9A0E, 0x1563, 0x9A0F, 0x303E, 0x9A11, + 0x3043, 0x9A14, 0x318A, 0x9A15, 0x317F, 0x9A16, 0x15F9, 0x9A19, 0x15FA, + 0x9A1A, 0x317E, 0x9A1B, 0x3183, 0x9A1C, 0x3189, 0x9A1D, 0x3181, 0x9A1E, + 0x3188, 0x9A20, 0x3185, 0x9A22, 0x3184, 0x9A23, 0x3187, 0x9A24, 0x3182, + 0x9A25, 0x3180, 0x9A27, 0x3186, 0x9A29, 0x3287, 0x9A2A, 0x3285, 0x9A2B, + 0x165B, 0x9A2C, 0x3284, 0x9A2D, 0x328A, 0x9A2E, 0x3288, 0x9A30, 0x165C, + 0x9A31, 0x3283, 0x9A32, 0x3281, 0x9A34, 0x3282, 0x9A35, 0x165E, 0x9A36, + 0x3286, 0x9A37, 0x165D, 0x9A38, 0x3289, 0x9A39, 0x333B, 0x9A3A, 0x3341, + 0x9A3D, 0x333C, 0x9A3E, 0x16AB, 0x9A3F, 0x3342, 0x9A40, 0x16AA, 0x9A41, + 0x3340, 0x9A42, 0x333F, 0x9A43, 0x16A9, 0x9A44, 0x333E, 0x9A45, 0x16A8, + 0x9A46, 0x333D, 0x9A48, 0x33DD, 0x9A49, 0x33DF, 0x9A4A, 0x33DE, 0x9A4C, + 0x33DB, 0x9A4D, 0x16E9, 0x9A4E, 0x33D8, 0x9A4F, 0x33DC, 0x9A50, 0x33E1, + 0x9A52, 0x33E0, 0x9A53, 0x33D9, 0x9A54, 0x33DA, 0x9A55, 0x16E8, 0x9A56, + 0x344F, 0x9A57, 0x1715, 0x9A59, 0x3450, 0x9A5A, 0x1713, 0x9A5B, 0x1714, + 0x9A5E, 0x34AE, 0x9A5F, 0x1737, 0x9A60, 0x3510, 0x9A62, 0x1757, 0x9A64, + 0x352C, 0x9A65, 0x1758, 0x9A66, 0x352D, 0x9A67, 0x352E, 0x9A68, 0x353C, + 0x9A69, 0x353B, 0x9A6A, 0x1767, 0x9A6B, 0x3544, 0x9AA8, 0x09F6, 0x9AAB, + 0x260C, 0x9AAD, 0x260B, 0x9AAF, 0x10F7, 0x9AB0, 0x10F8, 0x9AB1, 0x2871, + 0x9AB3, 0x2ADE, 0x9AB4, 0x2D0F, 0x9AB7, 0x127A, 0x9AB8, 0x13A4, 0x9AB9, + 0x2D0D, 0x9ABB, 0x2D10, 0x9ABC, 0x13A5, 0x9ABE, 0x2EDD, 0x9ABF, 0x2D0E, + 0x9AC0, 0x3048, 0x9AC1, 0x1564, 0x9AC2, 0x318B, 0x9AC6, 0x328D, 0x9AC7, + 0x328B, 0x9ACA, 0x328C, 0x9ACD, 0x3343, 0x9ACF, 0x16AC, 0x9AD0, 0x33E2, + 0x9AD1, 0x1718, 0x9AD2, 0x16EA, 0x9AD3, 0x1716, 0x9AD4, 0x1717, 0x9AD5, + 0x34AF, 0x9AD6, 0x174F, 0x9AD8, 0x09F7, 0x9ADC, 0x3049, 0x9ADF, 0x1E33, + 0x9AE1, 0x0F78, 0x9AE3, 0x2872, 0x9AE6, 0x10F9, 0x9AE7, 0x2873, 0x9AEB, + 0x2AE0, 0x9AEC, 0x2ADF, 0x9AED, 0x13A7, 0x9AEE, 0x127B, 0x9AEF, 0x127C, + 0x9AF1, 0x2AE3, 0x9AF2, 0x2AE2, 0x9AF3, 0x2AE1, 0x9AF6, 0x2D11, 0x9AF7, + 0x2D14, 0x9AF9, 0x2D13, 0x9AFA, 0x2D12, 0x9AFB, 0x13A6, 0x9AFC, 0x2EE1, + 0x9AFD, 0x2EDF, 0x9AFE, 0x2EDE, 0x9B01, 0x2EE0, 0x9B03, 0x1565, 0x9B04, + 0x304B, 0x9B05, 0x304C, 0x9B06, 0x1566, 0x9B08, 0x304A, 0x9B0A, 0x318D, + 0x9B0B, 0x318C, 0x9B0C, 0x318F, 0x9B0D, 0x15FB, 0x9B0E, 0x318E, 0x9B10, + 0x328E, 0x9B11, 0x3290, 0x9B12, 0x328F, 0x9B15, 0x3344, 0x9B16, 0x3347, + 0x9B17, 0x3345, 0x9B18, 0x3346, 0x9B19, 0x33E3, 0x9B1A, 0x16EB, 0x9B1E, + 0x3451, 0x9B1F, 0x3452, 0x9B20, 0x3453, 0x9B22, 0x1738, 0x9B23, 0x1750, + 0x9B24, 0x352F, 0x9B25, 0x09F8, 0x9B27, 0x127D, 0x9B28, 0x13A8, 0x9B29, + 0x304D, 0x9B2B, 0x33E4, 0x9B2E, 0x3511, 0x9B2F, 0x1E34, 0x9B31, 0x1768, + 0x9B32, 0x09F9, 0x9B33, 0x2D15, 0x9B35, 0x304E, 0x9B37, 0x3190, 0x9B3A, + 0x3348, 0x9B3B, 0x33E5, 0x9B3C, 0x09FA, 0x9B3E, 0x2874, 0x9B3F, 0x2875, + 0x9B41, 0x10FA, 0x9B42, 0x10FB, 0x9B43, 0x2AE5, 0x9B44, 0x127F, 0x9B45, + 0x127E, 0x9B46, 0x2AE4, 0x9B48, 0x2EE2, 0x9B4A, 0x304F, 0x9B4B, 0x3051, + 0x9B4C, 0x3050, 0x9B4D, 0x1569, 0x9B4E, 0x1568, 0x9B4F, 0x1567, 0x9B51, + 0x16AE, 0x9B52, 0x3349, 0x9B54, 0x16AD, 0x9B55, 0x33E7, 0x9B56, 0x33E6, + 0x9B58, 0x1739, 0x9B59, 0x34B0, 0x9B5A, 0x0BE1, 0x9B5B, 0x260D, 0x9B5F, + 0x2878, 0x9B60, 0x2876, 0x9B61, 0x2877, 0x9B64, 0x2AEE, 0x9B66, 0x2AE9, + 0x9B67, 0x2AE6, 0x9B68, 0x2AED, 0x9B6C, 0x2AEF, 0x9B6F, 0x1281, 0x9B70, + 0x2AEC, 0x9B71, 0x2AE8, 0x9B74, 0x2AE7, 0x9B75, 0x2AEB, 0x9B76, 0x2AEA, + 0x9B77, 0x1280, 0x9B7A, 0x2D20, 0x9B7B, 0x2D1B, 0x9B7C, 0x2D19, 0x9B7D, + 0x2D22, 0x9B7E, 0x2D1A, 0x9B80, 0x2D16, 0x9B82, 0x2D1C, 0x9B85, 0x2D17, + 0x9B86, 0x2EEB, 0x9B87, 0x2D18, 0x9B88, 0x2D23, 0x9B90, 0x2D1F, 0x9B91, + 0x13A9, 0x9B92, 0x2D1E, 0x9B93, 0x2D1D, 0x9B95, 0x2D21, 0x9B9A, 0x2EE3, + 0x9B9B, 0x2EE6, 0x9B9E, 0x2EE5, 0x9BA0, 0x2EED, 0x9BA1, 0x2EE8, 0x9BA2, + 0x2EEC, 0x9BA4, 0x2EEA, 0x9BA5, 0x2EE9, 0x9BA6, 0x2EE7, 0x9BA8, 0x2EE4, + 0x9BAA, 0x14BD, 0x9BAB, 0x14BC, 0x9BAD, 0x14BE, 0x9BAE, 0x14BB, 0x9BAF, + 0x2EEE, 0x9BB5, 0x3057, 0x9BB6, 0x305A, 0x9BB8, 0x3058, 0x9BB9, 0x305C, + 0x9BBD, 0x305D, 0x9BBF, 0x3055, 0x9BC0, 0x156E, 0x9BC1, 0x3056, 0x9BC3, + 0x3054, 0x9BC4, 0x305B, 0x9BC6, 0x3053, 0x9BC7, 0x3052, 0x9BC8, 0x156D, + 0x9BC9, 0x156B, 0x9BCA, 0x156A, 0x9BD3, 0x3059, 0x9BD4, 0x3199, 0x9BD5, + 0x319F, 0x9BD6, 0x15FE, 0x9BD7, 0x319A, 0x9BD9, 0x319D, 0x9BDA, 0x31A1, + 0x9BDB, 0x15FF, 0x9BDC, 0x319C, 0x9BDE, 0x3194, 0x9BE0, 0x3193, 0x9BE1, + 0x31A0, 0x9BE2, 0x3197, 0x9BE4, 0x3195, 0x9BE5, 0x319E, 0x9BE6, 0x3196, + 0x9BE7, 0x15FD, 0x9BE8, 0x15FC, 0x9BEA, 0x3191, 0x9BEB, 0x3192, 0x9BEC, + 0x319B, 0x9BF0, 0x3198, 0x9BF7, 0x3293, 0x9BF8, 0x3296, 0x9BFD, 0x156C, + 0x9C05, 0x3294, 0x9C06, 0x329A, 0x9C07, 0x3298, 0x9C08, 0x3292, 0x9C09, + 0x329D, 0x9C0B, 0x3291, 0x9C0D, 0x1660, 0x9C0E, 0x3299, 0x9C12, 0x3295, + 0x9C13, 0x165F, 0x9C14, 0x329C, 0x9C17, 0x329B, 0x9C1C, 0x334C, 0x9C1D, + 0x334B, 0x9C21, 0x3352, 0x9C23, 0x334E, 0x9C24, 0x3351, 0x9C25, 0x16B0, + 0x9C28, 0x334F, 0x9C29, 0x3350, 0x9C2B, 0x334A, 0x9C2C, 0x334D, 0x9C2D, + 0x16AF, 0x9C31, 0x16ED, 0x9C32, 0x33F2, 0x9C33, 0x33ED, 0x9C34, 0x33F1, + 0x9C36, 0x33F4, 0x9C37, 0x33F0, 0x9C39, 0x33EC, 0x9C3B, 0x16EF, 0x9C3C, + 0x33EF, 0x9C3D, 0x33F3, 0x9C3E, 0x16EE, 0x9C3F, 0x33EA, 0x9C40, 0x3297, + 0x9C41, 0x33EE, 0x9C44, 0x33EB, 0x9C46, 0x33E8, 0x9C48, 0x33E9, 0x9C49, + 0x16EC, 0x9C4A, 0x3457, 0x9C4B, 0x3459, 0x9C4C, 0x345C, 0x9C4D, 0x3458, + 0x9C4E, 0x345D, 0x9C50, 0x3456, 0x9C52, 0x3454, 0x9C54, 0x1719, 0x9C55, + 0x345A, 0x9C56, 0x171B, 0x9C57, 0x171A, 0x9C58, 0x3455, 0x9C59, 0x345B, + 0x9C5E, 0x34B5, 0x9C5F, 0x173A, 0x9C60, 0x34B6, 0x9C62, 0x34B4, 0x9C63, + 0x34B1, 0x9C66, 0x34B3, 0x9C67, 0x34B2, 0x9C68, 0x34F4, 0x9C6D, 0x34F6, + 0x9C6E, 0x34F5, 0x9C71, 0x3514, 0x9C73, 0x3513, 0x9C74, 0x3512, 0x9C75, + 0x3515, 0x9C77, 0x1760, 0x9C78, 0x1761, 0x9C79, 0x3541, 0x9C7A, 0x3545, + 0x9CE5, 0x0BE2, 0x9CE6, 0x235F, 0x9CE7, 0x2610, 0x9CE9, 0x0F79, 0x9CEA, + 0x260E, 0x9CED, 0x260F, 0x9CF1, 0x2879, 0x9CF2, 0x287A, 0x9CF3, 0x10FE, + 0x9CF4, 0x10FC, 0x9CF5, 0x287B, 0x9CF6, 0x10FD, 0x9CF7, 0x2AF4, 0x9CF9, + 0x2AF7, 0x9CFA, 0x2AF1, 0x9CFB, 0x2AF8, 0x9CFC, 0x2AF0, 0x9CFD, 0x2AF2, + 0x9CFF, 0x2AF3, 0x9D00, 0x2AF6, 0x9D03, 0x1284, 0x9D04, 0x2AFB, 0x9D05, + 0x2AFA, 0x9D06, 0x1282, 0x9D07, 0x2AF5, 0x9D08, 0x2AF9, 0x9D09, 0x1283, + 0x9D10, 0x2D2D, 0x9D12, 0x13AE, 0x9D14, 0x2D28, 0x9D15, 0x13AA, 0x9D17, + 0x2D25, 0x9D18, 0x2D2B, 0x9D19, 0x2D2E, 0x9D1B, 0x13AF, 0x9D1D, 0x2D2A, + 0x9D1E, 0x2D27, 0x9D1F, 0x2D2F, 0x9D20, 0x2D26, 0x9D22, 0x2D2C, 0x9D23, + 0x13AB, 0x9D25, 0x2D24, 0x9D26, 0x13AC, 0x9D28, 0x13AD, 0x9D29, 0x2D29, + 0x9D2D, 0x2F00, 0x9D2E, 0x2EF3, 0x9D2F, 0x2EF4, 0x9D30, 0x2EF7, 0x9D31, + 0x2EF5, 0x9D33, 0x2EEF, 0x9D36, 0x2EF2, 0x9D37, 0x2EFC, 0x9D38, 0x2EF6, + 0x9D3B, 0x14BF, 0x9D3D, 0x2EFE, 0x9D3E, 0x2EFB, 0x9D3F, 0x14C0, 0x9D40, + 0x2EFD, 0x9D41, 0x2EF0, 0x9D42, 0x2EF9, 0x9D43, 0x2EFA, 0x9D45, 0x2EF8, + 0x9D4A, 0x3061, 0x9D4B, 0x3063, 0x9D4C, 0x3066, 0x9D4F, 0x3060, 0x9D51, + 0x156F, 0x9D52, 0x3068, 0x9D53, 0x305F, 0x9D54, 0x3069, 0x9D56, 0x3065, + 0x9D57, 0x3067, 0x9D58, 0x306B, 0x9D59, 0x3064, 0x9D5A, 0x306C, 0x9D5B, + 0x3062, 0x9D5C, 0x305E, 0x9D5D, 0x1570, 0x9D5F, 0x306A, 0x9D60, 0x1571, + 0x9D61, 0x1601, 0x9D67, 0x2EF1, 0x9D68, 0x31BB, 0x9D69, 0x31B2, 0x9D6A, + 0x1603, 0x9D6B, 0x31AE, 0x9D6C, 0x1604, 0x9D6F, 0x31B7, 0x9D70, 0x31B1, + 0x9D71, 0x31A7, 0x9D72, 0x1602, 0x9D73, 0x31B4, 0x9D74, 0x31AF, 0x9D75, + 0x31B0, 0x9D77, 0x31A2, 0x9D78, 0x31A9, 0x9D79, 0x31B8, 0x9D7B, 0x31B5, + 0x9D7D, 0x31AD, 0x9D7F, 0x31B9, 0x9D80, 0x31A8, 0x9D81, 0x31A3, 0x9D82, + 0x31B6, 0x9D84, 0x31A5, 0x9D85, 0x31B3, 0x9D86, 0x31AA, 0x9D87, 0x31BA, + 0x9D88, 0x31A6, 0x9D89, 0x1600, 0x9D8A, 0x31A4, 0x9D8B, 0x31AB, 0x9D8C, + 0x31AC, 0x9D90, 0x32A4, 0x9D92, 0x32A2, 0x9D94, 0x32A7, 0x9D96, 0x32B3, + 0x9D97, 0x32AA, 0x9D98, 0x32A3, 0x9D99, 0x329F, 0x9D9A, 0x32AC, 0x9D9B, + 0x32A5, 0x9D9C, 0x32A8, 0x9D9D, 0x32A1, 0x9D9E, 0x32AF, 0x9D9F, 0x329E, + 0x9DA0, 0x32A6, 0x9DA1, 0x32AB, 0x9DA2, 0x32AD, 0x9DA3, 0x32B0, 0x9DA4, + 0x32A0, 0x9DA6, 0x32B4, 0x9DA7, 0x32B5, 0x9DA8, 0x32AE, 0x9DA9, 0x32B2, + 0x9DAA, 0x32A9, 0x9DAC, 0x3362, 0x9DAD, 0x3365, 0x9DAF, 0x16B1, 0x9DB1, + 0x3364, 0x9DB2, 0x3369, 0x9DB3, 0x3367, 0x9DB4, 0x16B2, 0x9DB5, 0x335E, + 0x9DB6, 0x3354, 0x9DB7, 0x3353, 0x9DB8, 0x16B4, 0x9DB9, 0x3360, 0x9DBA, + 0x3361, 0x9DBB, 0x335D, 0x9DBC, 0x3355, 0x9DBE, 0x335A, 0x9DBF, 0x32B1, + 0x9DC1, 0x3356, 0x9DC2, 0x16B3, 0x9DC3, 0x335C, 0x9DC5, 0x335B, 0x9DC7, + 0x3357, 0x9DC8, 0x3363, 0x9DCA, 0x3358, 0x9DCB, 0x33F9, 0x9DCC, 0x3366, + 0x9DCD, 0x3368, 0x9DCE, 0x335F, 0x9DCF, 0x3359, 0x9DD0, 0x33FA, 0x9DD1, + 0x33FC, 0x9DD2, 0x33F6, 0x9DD3, 0x16F0, 0x9DD5, 0x3403, 0x9DD6, 0x3401, + 0x9DD7, 0x16F1, 0x9DD8, 0x3400, 0x9DD9, 0x33FF, 0x9DDA, 0x33F8, 0x9DDB, + 0x33F5, 0x9DDC, 0x33FB, 0x9DDD, 0x3404, 0x9DDE, 0x33F7, 0x9DDF, 0x33FD, + 0x9DE1, 0x3466, 0x9DE2, 0x346B, 0x9DE3, 0x3461, 0x9DE4, 0x3464, 0x9DE5, + 0x171C, 0x9DE6, 0x3468, 0x9DE8, 0x346F, 0x9DE9, 0x33FE, 0x9DEB, 0x3462, + 0x9DEC, 0x346C, 0x9DED, 0x3470, 0x9DEE, 0x3467, 0x9DEF, 0x3460, 0x9DF0, + 0x346A, 0x9DF2, 0x3469, 0x9DF3, 0x346E, 0x9DF4, 0x346D, 0x9DF5, 0x3402, + 0x9DF6, 0x3465, 0x9DF7, 0x345F, 0x9DF8, 0x3463, 0x9DF9, 0x173B, 0x9DFA, + 0x173C, 0x9DFB, 0x345E, 0x9DFD, 0x34C1, 0x9DFE, 0x34B8, 0x9DFF, 0x34C0, + 0x9E00, 0x34BD, 0x9E01, 0x34BE, 0x9E02, 0x34B7, 0x9E03, 0x34BA, 0x9E04, + 0x34C2, 0x9E05, 0x34BC, 0x9E06, 0x34BB, 0x9E07, 0x34B9, 0x9E09, 0x34BF, + 0x9E0B, 0x34F7, 0x9E0D, 0x34F8, 0x9E0F, 0x34FA, 0x9E10, 0x34F9, 0x9E11, + 0x34FC, 0x9E12, 0x34FB, 0x9E13, 0x3517, 0x9E14, 0x3516, 0x9E15, 0x3530, + 0x9E17, 0x3531, 0x9E19, 0x353D, 0x9E1A, 0x1765, 0x9E1B, 0x1769, 0x9E1D, + 0x3546, 0x9E1E, 0x176A, 0x9E75, 0x0BE3, 0x9E79, 0x1661, 0x9E7A, 0x336A, + 0x9E7C, 0x173D, 0x9E7D, 0x173E, 0x9E7F, 0x0BE4, 0x9E80, 0x2611, 0x9E82, + 0x0F7A, 0x9E83, 0x2AFC, 0x9E86, 0x2D31, 0x9E87, 0x2D32, 0x9E88, 0x2D30, + 0x9E89, 0x2F02, 0x9E8A, 0x2F01, 0x9E8B, 0x14C1, 0x9E8C, 0x306E, 0x9E8D, + 0x2F03, 0x9E8E, 0x306D, 0x9E91, 0x31BD, 0x9E92, 0x1605, 0x9E93, 0x1607, + 0x9E94, 0x31BC, 0x9E97, 0x1606, 0x9E99, 0x32B6, 0x9E9A, 0x32B8, 0x9E9B, + 0x32B7, 0x9E9C, 0x336B, 0x9E9D, 0x16B5, 0x9E9F, 0x171D, 0x9EA0, 0x34C3, + 0x9EA1, 0x34FD, 0x9EA4, 0x354A, 0x9EA5, 0x0BE5, 0x9EA7, 0x287C, 0x9EA9, + 0x1285, 0x9EAD, 0x2D34, 0x9EAE, 0x2D33, 0x9EB0, 0x2F04, 0x9EB4, 0x1608, + 0x9EB5, 0x1662, 0x9EB6, 0x3405, 0x9EB7, 0x3542, 0x9EBB, 0x0BE6, 0x9EBC, + 0x10FF, 0x9EBE, 0x1286, 0x9EC0, 0x31BE, 0x9EC2, 0x3471, 0x9EC3, 0x0DBB, + 0x9EC8, 0x2F05, 0x9ECC, 0x1751, 0x9ECD, 0x0DBC, 0x9ECE, 0x1287, 0x9ECF, + 0x14C2, 0x9ED0, 0x3472, 0x9ED1, 0x0DBD, 0x9ED3, 0x2AFD, 0x9ED4, 0x13B1, + 0x9ED5, 0x2D35, 0x9ED6, 0x2D36, 0x9ED8, 0x13B0, 0x9EDA, 0x2F06, 0x9EDB, + 0x14C6, 0x9EDC, 0x14C4, 0x9EDD, 0x14C5, 0x9EDE, 0x14C3, 0x9EDF, 0x306F, + 0x9EE0, 0x1572, 0x9EE4, 0x32BA, 0x9EE5, 0x32B9, 0x9EE6, 0x32BC, 0x9EE7, + 0x32BB, 0x9EE8, 0x1663, 0x9EEB, 0x336C, 0x9EED, 0x336E, 0x9EEE, 0x336D, + 0x9EEF, 0x16B6, 0x9EF0, 0x3406, 0x9EF2, 0x3473, 0x9EF3, 0x3474, 0x9EF4, + 0x171E, 0x9EF5, 0x34FE, 0x9EF6, 0x3518, 0x9EF7, 0x1762, 0x9EF9, 0x2360, + 0x9EFA, 0x2D37, 0x9EFB, 0x2F07, 0x9EFC, 0x31BF, 0x9EFD, 0x2612, 0x9EFF, + 0x2F08, 0x9F00, 0x3071, 0x9F01, 0x3070, 0x9F06, 0x3475, 0x9F07, 0x173F, + 0x9F09, 0x34FF, 0x9F0A, 0x3519, 0x9F0E, 0x0F7B, 0x9F0F, 0x2AFE, 0x9F10, + 0x2AFF, 0x9F12, 0x2D38, 0x9F13, 0x0F7C, 0x9F15, 0x1573, 0x9F16, 0x3072, + 0x9F18, 0x3370, 0x9F19, 0x16B7, 0x9F1A, 0x3371, 0x9F1B, 0x336F, 0x9F1C, + 0x3476, 0x9F1E, 0x34C4, 0x9F20, 0x0F7D, 0x9F22, 0x2F0B, 0x9F23, 0x2F0A, + 0x9F24, 0x2F09, 0x9F25, 0x3073, 0x9F28, 0x3077, 0x9F29, 0x3076, 0x9F2A, + 0x3075, 0x9F2B, 0x3074, 0x9F2C, 0x1574, 0x9F2D, 0x31C0, 0x9F2E, 0x32BE, + 0x9F2F, 0x1664, 0x9F30, 0x32BD, 0x9F31, 0x3372, 0x9F32, 0x3409, 0x9F33, + 0x3408, 0x9F34, 0x16F2, 0x9F35, 0x3407, 0x9F36, 0x3479, 0x9F37, 0x3478, + 0x9F38, 0x3477, 0x9F3B, 0x1100, 0x9F3D, 0x2D39, 0x9F3E, 0x14C7, 0x9F40, + 0x31C1, 0x9F41, 0x31C2, 0x9F42, 0x340A, 0x9F43, 0x347A, 0x9F46, 0x34C5, + 0x9F47, 0x3500, 0x9F48, 0x3532, 0x9F49, 0x354C, 0x9F4A, 0x1101, 0x9F4B, + 0x14C8, 0x9F4C, 0x3078, 0x9F4D, 0x31C3, 0x9F4E, 0x3373, 0x9F4F, 0x347B, + 0x9F52, 0x1289, 0x9F54, 0x2F0C, 0x9F55, 0x3079, 0x9F56, 0x31C4, 0x9F57, + 0x31C5, 0x9F58, 0x31C6, 0x9F59, 0x32C3, 0x9F5B, 0x32BF, 0x9F5C, 0x16B8, + 0x9F5D, 0x32C2, 0x9F5E, 0x32C1, 0x9F5F, 0x1665, 0x9F60, 0x32C0, 0x9F61, + 0x1667, 0x9F63, 0x1666, 0x9F64, 0x3375, 0x9F65, 0x3374, 0x9F66, 0x16B9, + 0x9F67, 0x16BA, 0x9F6A, 0x16F4, 0x9F6B, 0x340B, 0x9F6C, 0x16F3, 0x9F6E, + 0x347E, 0x9F6F, 0x347F, 0x9F70, 0x347D, 0x9F71, 0x347C, 0x9F72, 0x1741, + 0x9F74, 0x34C6, 0x9F75, 0x34C7, 0x9F76, 0x34C8, 0x9F77, 0x1740, 0x9F78, + 0x3501, 0x9F79, 0x3504, 0x9F7A, 0x3503, 0x9F7B, 0x3502, 0x9F7E, 0x354B, + 0x9F8D, 0x13B2, 0x9F90, 0x157C, 0x9F91, 0x32C4, 0x9F92, 0x3376, 0x9F94, + 0x16F5, 0x9F95, 0x340C, 0x9F98, 0x354D, 0x9F9C, 0x13B3, 0x9FA0, 0x2F0D, + 0x9FA2, 0x340D, 0x9FA4, 0x351A, 0xE01F, 0x083A, 0xE026, 0x09FD, 0xE05B, + 0x030D, 0xE063, 0x016B, 0xE073, 0x0860, 0xE0F3, 0x0C23, 0xE12E, 0x17E4, + 0xE149, 0x212F, 0xE191, 0x115F, 0xE1BA, 0x0C79, 0xE1C9, 0x04C3, 0xE22C, + 0x18BD, 0xE22D, 0x0CBD, 0xE230, 0x0CA5, 0xE266, 0x0CCE, 0xE2A3, 0x0E84, + 0xE2BC, 0x0120, 0xE2EF, 0x1BA8, 0xE33A, 0x1055, 0xE340, 0x2DE8, 0xE34F, + 0x0121, 0xE35A, 0x106B, 0xE363, 0x1326, 0xE37C, 0x066B, 0xE37F, 0x132E, + 0xE3C5, 0x0D35, 0xE3D7, 0x27C2, 0xE3DC, 0x22AD, 0xE417, 0x134C, 0xE44A, + 0x09CE, 0xE478, 0x0BC7, 0xE485, 0x36E9, 0xE4C5, 0x1391, 0xE4DA, 0x16A4, + 0xE545, 0x3072, 0xE5D2, 0x0119, 0xE5D3, 0x011A, 0xE5D4, 0x011C, 0xE5D5, + 0x011B, 0xE5F4, 0x297C, 0xE6C6, 0x1D06, 0xE727, 0x29A1, 0xE7D3, 0x181B, + 0xE893, 0x2B24, 0xEB40, 0x2F50, 0xEB42, 0x1725, 0xEB45, 0x32ED, 0xEB6E, + 0x2AD9, 0xEB86, 0x1C14, 0xEB9E, 0x12E9, 0xEBA9, 0x2CAE, 0xEBBA, 0x1A64, + 0xEBC9, 0x1404, 0xEBCF, 0x2324, 0xEBD2, 0x346A, 0xEBDE, 0x2291, 0xEC01, + 0x1787, 0xEC02, 0x095F, 0xEC15, 0x1E99, 0xEC5B, 0x25C1, 0xEC5E, 0x0D0C, + 0xECA6, 0x05E6, 0xED28, 0x0728, 0xED6E, 0x24B6, 0xED7C, 0x1806, 0xED9E, + 0x3511, 0xEDE7, 0x0F82, 0xEE52, 0x05F2, 0xEE98, 0x247D, 0xF6B1, 0x01FA, + 0xF6B2, 0x01FB, 0xF6B3, 0x01FC, 0xF6B4, 0x01FD, 0xF6B5, 0x01FE, 0xF6B6, + 0x01FF, 0xF6B7, 0x0200, 0xF6B8, 0x0201, 0xF6B9, 0x0202, 0xF6BA, 0x0203, + 0xF6BB, 0x0204, 0xF6BC, 0x0205, 0xF6BD, 0x0206, 0xF6BE, 0x0207, 0xF6BF, + 0x0208, 0xF6C0, 0x0209, 0xF6C1, 0x020A, 0xF6C2, 0x020B, 0xF6C3, 0x020C, + 0xF6C4, 0x020D, 0xF6C5, 0x020E, 0xF6C6, 0x020F, 0xF6C7, 0x0210, 0xF6C8, + 0x0211, 0xF6C9, 0x0212, 0xF6CA, 0x0213, 0xF6CB, 0x0214, 0xF6CC, 0x0215, + 0xF6CD, 0x0216, 0xF6CE, 0x0217, 0xF6CF, 0x0219, 0xF6D0, 0x021A, 0xF6D1, + 0x021B, 0xF6D2, 0x021C, 0xF6D3, 0x021D, 0xF6D4, 0x021E, 0xF6D5, 0x021F, + 0xF6D6, 0x0220, 0xF6D7, 0x0221, 0xF6D8, 0x0222, 0xF6D9, 0x0223, 0xF6DA, + 0x0224, 0xF6DB, 0x0225, 0xF6DC, 0x0226, 0xF6DD, 0x0227, 0xF6DE, 0x0228, + 0xF6E0, 0x022A, 0xF6E1, 0x022B, 0xF6E2, 0x022C, 0xF6E4, 0x022E, 0xF6E6, + 0x0230, 0xF6E8, 0x35B3, 0xF6E9, 0x35B4, 0xF6EA, 0x35B5, 0xF6EB, 0x35B6, + 0xF6EC, 0x35B7, 0xF6ED, 0x35B8, 0xF6F0, 0x35BA, 0xF6F1, 0x35BB, 0xF6F2, + 0x35BC, 0xF6F3, 0x35BD, 0xF6F4, 0x35BE, 0xF6F5, 0x35BF, 0xF6F6, 0x35C0, + 0xF6F7, 0x35C1, 0xF6F8, 0x35C2, 0xF6F9, 0x35C3, 0xF6FA, 0x35C4, 0xF6FB, + 0x35C5, 0xF6FC, 0x35C6, 0xF6FD, 0x35C7, 0xF6FE, 0x35C8, 0xF6FF, 0x35C9, + 0xF700, 0x35CA, 0xF701, 0x35CB, 0xF702, 0x35CC, 0xF703, 0x35CD, 0xF704, + 0x35CE, 0xF705, 0x35CF, 0xF706, 0x35D0, 0xF707, 0x35D1, 0xF708, 0x35D2, + 0xF709, 0x35D3, 0xF70A, 0x35D4, 0xF70B, 0x35D5, 0xF70C, 0x35D6, 0xF70D, + 0x35D7, 0xF70E, 0x35D8, 0xF70F, 0x35D9, 0xF710, 0x35DA, 0xF711, 0x35DB, + 0xF712, 0x35DC, 0xF713, 0x35DD, 0xF714, 0x35DE, 0xF715, 0x35DF, 0xF716, + 0x35E0, 0xF717, 0x35E1, 0xF718, 0x35E2, 0xF719, 0x35E3, 0xF71A, 0x35E4, + 0xF71B, 0x35E5, 0xF71C, 0x35E6, 0xF71D, 0x35E7, 0xF71E, 0x35E8, 0xF71F, + 0x35E9, 0xF720, 0x35EA, 0xF721, 0x35EB, 0xF722, 0x35EC, 0xF723, 0x35ED, + 0xF724, 0x35EE, 0xF725, 0x35EF, 0xF726, 0x35F0, 0xF727, 0x35F1, 0xF728, + 0x35F2, 0xF729, 0x35F3, 0xF72A, 0x35F4, 0xF72B, 0x35F5, 0xF72C, 0x35F6, + 0xF72D, 0x35F7, 0xF72E, 0x35F8, 0xF72F, 0x35F9, 0xF730, 0x35FA, 0xF731, + 0x35FB, 0xF732, 0x35FC, 0xF733, 0x35FD, 0xF734, 0x35FE, 0xF735, 0x35FF, + 0xF736, 0x3600, 0xF737, 0x3601, 0xF738, 0x3602, 0xF739, 0x3603, 0xF73A, + 0x3604, 0xF73B, 0x3605, 0xF73C, 0x3606, 0xF73D, 0x3607, 0xF73E, 0x3608, + 0xF73F, 0x3609, 0xF740, 0x360A, 0xF741, 0x360B, 0xF742, 0x360C, 0xF743, + 0x360D, 0xF744, 0x360E, 0xF745, 0x360F, 0xF746, 0x3610, 0xF747, 0x3611, + 0xF748, 0x3612, 0xF749, 0x3613, 0xF74A, 0x3614, 0xF74B, 0x3615, 0xF74C, + 0x3616, 0xF74D, 0x3617, 0xF74E, 0x3618, 0xF74F, 0x3619, 0xF750, 0x361A, + 0xF751, 0x361B, 0xF752, 0x361C, 0xF753, 0x361D, 0xF754, 0x361E, 0xF755, + 0x361F, 0xF756, 0x3620, 0xF757, 0x3621, 0xF758, 0x3622, 0xF759, 0x3623, + 0xF75A, 0x3624, 0xF75B, 0x3625, 0xF75C, 0x3626, 0xF75D, 0x3627, 0xF75E, + 0x3628, 0xF75F, 0x3629, 0xF760, 0x362A, 0xF761, 0x362B, 0xF762, 0x362C, + 0xF763, 0x362D, 0xF764, 0x362E, 0xF765, 0x362F, 0xF766, 0x3630, 0xF767, + 0x3631, 0xF768, 0x3632, 0xF769, 0x3633, 0xF76A, 0x3634, 0xF76B, 0x3635, + 0xF76C, 0x3636, 0xF76D, 0x3637, 0xF76E, 0x3638, 0xF76F, 0x3639, 0xF770, + 0x363A, 0xF771, 0x363B, 0xF772, 0x363C, 0xF773, 0x363D, 0xF774, 0x363E, + 0xF775, 0x363F, 0xF776, 0x3640, 0xF777, 0x3641, 0xF778, 0x3642, 0xF779, + 0x3643, 0xF77A, 0x3644, 0xF77B, 0x3645, 0xF77C, 0x3646, 0xF77D, 0x3647, + 0xF77E, 0x3648, 0xF77F, 0x3649, 0xF780, 0x364A, 0xF781, 0x364B, 0xF782, + 0x364C, 0xF783, 0x364D, 0xF784, 0x364E, 0xF785, 0x364F, 0xF786, 0x3650, + 0xF787, 0x3651, 0xF788, 0x3652, 0xF789, 0x3653, 0xF78A, 0x3654, 0xF78B, + 0x3655, 0xF78C, 0x3656, 0xF78D, 0x3657, 0xF78E, 0x3658, 0xF78F, 0x3659, + 0xF790, 0x365A, 0xF791, 0x365B, 0xF792, 0x365C, 0xF793, 0x365D, 0xF794, + 0x365E, 0xF795, 0x365F, 0xF796, 0x3660, 0xF797, 0x3661, 0xF798, 0x3662, + 0xF799, 0x3663, 0xF79A, 0x3664, 0xF79B, 0x3665, 0xF79C, 0x3666, 0xF79D, + 0x3667, 0xF79E, 0x3668, 0xF79F, 0x3669, 0xF7A0, 0x366A, 0xF7A1, 0x366B, + 0xF7A2, 0x366C, 0xF7A3, 0x366D, 0xF7A4, 0x366E, 0xF7A5, 0x366F, 0xF7A6, + 0x3670, 0xF7A7, 0x3671, 0xF7A8, 0x3672, 0xF7A9, 0x3673, 0xF7AA, 0x3674, + 0xF7AB, 0x3675, 0xF7AC, 0x3676, 0xF7AD, 0x3677, 0xF7AE, 0x3678, 0xF7AF, + 0x3679, 0xF7B0, 0x367A, 0xF7B1, 0x367B, 0xF7B2, 0x367C, 0xF7B3, 0x367D, + 0xF7B4, 0x367E, 0xF7B5, 0x367F, 0xF7B6, 0x3680, 0xF7B7, 0x3681, 0xF7B8, + 0x3682, 0xF7B9, 0x3683, 0xF7BA, 0x3684, 0xF7BB, 0x3685, 0xF7BC, 0x3686, + 0xF7BD, 0x3687, 0xF7BE, 0x3688, 0xF7BF, 0x3689, 0xF7C0, 0x368A, 0xF7C1, + 0x368B, 0xF7C2, 0x368C, 0xF7C3, 0x368D, 0xF7C4, 0x368E, 0xF7C5, 0x368F, + 0xF7C6, 0x3690, 0xF7C7, 0x3691, 0xF7C8, 0x3692, 0xF7C9, 0x3693, 0xF7CA, + 0x3694, 0xF7CB, 0x3695, 0xF7CC, 0x3696, 0xF7CD, 0x3697, 0xF7CE, 0x3698, + 0xF7CF, 0x3699, 0xF7D0, 0x369A, 0xF7D1, 0x369B, 0xF7D2, 0x369C, 0xF7D3, + 0x369D, 0xF7D4, 0x369E, 0xF7D5, 0x369F, 0xF7D6, 0x36A0, 0xF7D7, 0x36A1, + 0xF7D8, 0x36A2, 0xF7D9, 0x36A3, 0xF7DA, 0x36A4, 0xF7DB, 0x36A5, 0xF7DC, + 0x36A6, 0xF7DD, 0x36A7, 0xF7DE, 0x36A8, 0xF7DF, 0x36A9, 0xF7E0, 0x36AA, + 0xF7E1, 0x36AB, 0xF7E2, 0x36AC, 0xF7E3, 0x36AD, 0xF7E4, 0x36AE, 0xF7E5, + 0x36AF, 0xF7E6, 0x36B0, 0xF7E7, 0x36B1, 0xF7E8, 0x36B2, 0xF7E9, 0x36B3, + 0xF7EA, 0x36B4, 0xF7EB, 0x36B5, 0xF7EC, 0x36B6, 0xF7ED, 0x36B7, 0xF7EE, + 0x36B8, 0xF817, 0x36E1, 0xF818, 0x36E2, 0xF819, 0x36E3, 0xF81A, 0x36E4, + 0xF81B, 0x36E5, 0xF81C, 0x36E6, 0xF81D, 0x36E7, 0xFA0C, 0x0274, 0xFA0D, + 0x2381, 0xFE30, 0x006D, 0xFE31, 0x007A, 0xFE33, 0x35AF, 0xFE34, 0x35B1, + 0xFE35, 0x0082, 0xFE36, 0x0083, 0xFE37, 0x0086, 0xFE38, 0x0087, 0xFE39, + 0x008A, 0xFE3A, 0x008B, 0xFE3B, 0x008E, 0xFE3C, 0x008F, 0xFE3D, 0x0092, + 0xFE3E, 0x0093, 0xFE3F, 0x0096, 0xFE40, 0x0097, 0xFE41, 0x009A, 0xFE42, + 0x009B, 0xFE43, 0x009E, 0xFE44, 0x009F, 0xFE49, 0x00C7, 0xFE4A, 0x00C8, + 0xFE4B, 0x00CB, 0xFE4C, 0x00CC, 0xFE4D, 0x00C9, 0xFE4E, 0x00CA, 0xFE4F, + 0x35B2, 0xFE50, 0x0070, 0xFE51, 0x0071, 0xFE52, 0x0072, 0xFE54, 0x0074, + 0xFE55, 0x0075, 0xFE56, 0x0076, 0xFE57, 0x0077, 0xFE59, 0x00A0, 0xFE5A, + 0x00A1, 0xFE5B, 0x00A2, 0xFE5C, 0x00A3, 0xFE5D, 0x00A4, 0xFE5E, 0x00A5, + 0xFE5F, 0x00CD, 0xFE60, 0x00CE, 0xFE61, 0x00CF, 0xFE62, 0x00DF, 0xFE63, + 0x00E0, 0xFE64, 0x00E1, 0xFE65, 0x00E2, 0xFE66, 0x00E3, 0xFE68, 0x0102, + 0xFE69, 0x010C, 0xFE6A, 0x010D, 0xFE6B, 0x010E, 0xFF01, 0x006C, 0xFF02, + 0x36E4, 0xFF03, 0x00AE, 0xFF04, 0x0103, 0xFF05, 0x0108, 0xFF06, 0x00AF, + 0xFF07, 0x36E3, 0xFF08, 0x0080, 0xFF09, 0x0081, 0xFF0A, 0x00B0, 0xFF0B, + 0x00D0, 0xFF0C, 0x0064, 0xFF0D, 0x00D1, 0xFF0E, 0x0067, 0xFF0F, 0x0101, + 0xFF10, 0x014D, 0xFF11, 0x014E, 0xFF12, 0x014F, 0xFF13, 0x0150, 0xFF14, + 0x0151, 0xFF15, 0x0152, 0xFF16, 0x0153, 0xFF17, 0x0154, 0xFF18, 0x0155, + 0xFF19, 0x0156, 0xFF1A, 0x006A, 0xFF1B, 0x0069, 0xFF1C, 0x00D6, 0xFF1D, + 0x00D8, 0xFF1E, 0x00D7, 0xFF1F, 0x006B, 0xFF20, 0x0109, 0xFF21, 0x016D, + 0xFF22, 0x016E, 0xFF23, 0x016F, 0xFF24, 0x0170, 0xFF25, 0x0171, 0xFF26, + 0x0172, 0xFF27, 0x0173, 0xFF28, 0x0174, 0xFF29, 0x0175, 0xFF2A, 0x0176, + 0xFF2B, 0x0177, 0xFF2C, 0x0178, 0xFF2D, 0x0179, 0xFF2E, 0x017A, 0xFF2F, + 0x017B, 0xFF30, 0x017C, 0xFF31, 0x017D, 0xFF32, 0x017E, 0xFF33, 0x017F, + 0xFF34, 0x0180, 0xFF35, 0x0181, 0xFF36, 0x0182, 0xFF37, 0x0183, 0xFF38, + 0x0184, 0xFF39, 0x0185, 0xFF3A, 0x0186, 0xFF3B, 0x35BE, 0xFF3C, 0x0102, + 0xFF3D, 0x35BF, 0xFF3E, 0x35B4, 0xFF3F, 0x00C5, 0xFF41, 0x0187, 0xFF42, + 0x0188, 0xFF43, 0x0189, 0xFF44, 0x018A, 0xFF45, 0x018B, 0xFF46, 0x018C, + 0xFF47, 0x018D, 0xFF48, 0x018E, 0xFF49, 0x018F, 0xFF4A, 0x0190, 0xFF4B, + 0x0191, 0xFF4C, 0x0192, 0xFF4D, 0x0193, 0xFF4E, 0x0194, 0xFF4F, 0x0195, + 0xFF50, 0x0196, 0xFF51, 0x0197, 0xFF52, 0x0198, 0xFF53, 0x0199, 0xFF54, + 0x019A, 0xFF55, 0x019B, 0xFF56, 0x019C, 0xFF57, 0x019D, 0xFF58, 0x019E, + 0xFF59, 0x019F, 0xFF5A, 0x01A0, 0xFF5B, 0x0084, 0xFF5C, 0x0078, 0xFF5D, + 0x0085, 0xFF5E, 0x00E4, 0xFF64, 0x0071, 0xFFE0, 0x0106, 0xFFE1, 0x0107, + 0xFFE2, 0x36E1, 0xFFE3, 0x00C4, 0xFFE4, 0x36E2, 0xFFE5, 0x0104, +}; diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp new file mode 100644 index 0000000000..a7d1b17986 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp @@ -0,0 +1,56 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" + +#include "core/fpdfapi/fpdf_cmaps/cmap_int.h" +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). + +static const FXCMAP_CMap g_FXCMAP_CNS1_cmaps[] = { + {"B5pc-H", FXCMAP_CMap::Range, g_FXCMAP_B5pc_H_0, 247, FXCMAP_CMap::None, + NULL, 0, 0}, + {"B5pc-V", FXCMAP_CMap::Range, g_FXCMAP_B5pc_V_0, 12, FXCMAP_CMap::None, + NULL, 0, -1}, + {"HKscs-B5-H", FXCMAP_CMap::Range, g_FXCMAP_HKscs_B5_H_5, 1210, + FXCMAP_CMap::None, NULL, 0, 0}, + {"HKscs-B5-V", FXCMAP_CMap::Range, g_FXCMAP_HKscs_B5_V_5, 13, + FXCMAP_CMap::None, NULL, 0, -1}, + {"ETen-B5-H", FXCMAP_CMap::Range, g_FXCMAP_ETen_B5_H_0, 254, + FXCMAP_CMap::None, NULL, 0, 0}, + {"ETen-B5-V", FXCMAP_CMap::Range, g_FXCMAP_ETen_B5_V_0, 13, + FXCMAP_CMap::None, NULL, 0, -1}, + {"ETenms-B5-H", FXCMAP_CMap::Range, g_FXCMAP_ETenms_B5_H_0, 1, + FXCMAP_CMap::None, NULL, 0, -2}, + {"ETenms-B5-V", FXCMAP_CMap::Range, g_FXCMAP_ETenms_B5_V_0, 18, + FXCMAP_CMap::None, NULL, 0, -1}, + {"CNS-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_H_0, 157, + FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_H_0_DWord, 238, 0}, + {"CNS-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_V_0, 180, + FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_V_0_DWord, 261, 0}, + {"UniCNS-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_H_3, 16418, + FXCMAP_CMap::None, NULL, 0, 0}, + {"UniCNS-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_V_3, 13, + FXCMAP_CMap::None, NULL, 0, -1}, + {"UniCNS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniCNS_UTF16_H_0, 14557, + FXCMAP_CMap::None, NULL, 0, 0}, + {"UniCNS-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_V_3, 13, + FXCMAP_CMap::None, NULL, 0, -1}, +}; + +void CPDF_ModuleMgr::LoadEmbeddedCNS1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->m_EmbeddedCharsets[CIDSET_CNS1].m_pMapList = + g_FXCMAP_CNS1_cmaps; + pFontGlobals->m_EmbeddedCharsets[CIDSET_CNS1].m_Count = + FX_ArraySize(g_FXCMAP_CNS1_cmaps); + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_CNS1].m_pMap = + g_FXCMAP_CNS1CID2Unicode_5; + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_CNS1].m_Count = 19088; +} diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h new file mode 100644 index 0000000000..249d529b91 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h @@ -0,0 +1,29 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_ +#define CORE_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_ + +#include "core/include/fxcrt/fx_system.h" // For FX_WORD. + +extern const FX_WORD g_FXCMAP_B5pc_H_0[]; +extern const FX_WORD g_FXCMAP_B5pc_V_0[]; +extern const FX_WORD g_FXCMAP_HKscs_B5_H_5[]; +extern const FX_WORD g_FXCMAP_HKscs_B5_V_5[]; +extern const FX_WORD g_FXCMAP_ETen_B5_H_0[]; +extern const FX_WORD g_FXCMAP_ETen_B5_V_0[]; +extern const FX_WORD g_FXCMAP_ETenms_B5_H_0[]; +extern const FX_WORD g_FXCMAP_ETenms_B5_V_0[]; +extern const FX_WORD g_FXCMAP_CNS_EUC_H_0[]; +extern const FX_WORD g_FXCMAP_CNS_EUC_H_0_DWord[]; +extern const FX_WORD g_FXCMAP_CNS_EUC_V_0[]; +extern const FX_WORD g_FXCMAP_CNS_EUC_V_0_DWord[]; +extern const FX_WORD g_FXCMAP_UniCNS_UCS2_H_3[]; +extern const FX_WORD g_FXCMAP_UniCNS_UCS2_V_3[]; +extern const FX_WORD g_FXCMAP_UniCNS_UTF16_H_0[]; +extern const FX_WORD g_FXCMAP_CNS1CID2Unicode_5[]; + +#endif // CORE_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_ diff --git a/core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp b/core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp new file mode 100644 index 0000000000..c6e5752ede --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp @@ -0,0 +1,3375 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GB1CID2Unicode_5[30284] = { + 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, + 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, + 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, + 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, + 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x3000, 0x3001, 0x3002, + 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014, 0xFF5E, 0x2016, + 0x2026, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, + 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, + 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, + 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, + 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, 0x2260, + 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, 0x2642, 0x2640, + 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, 0xFFE0, 0xFFE1, 0x2030, + 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, + 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, + 0x3013, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, + 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, + 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, + 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, + 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, + 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x3220, 0x3221, 0x3222, + 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x2160, 0x2161, + 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, + 0x216B, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, 0xFF08, + 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, + 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, + 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, + 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, + 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, + 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, + 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, + 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, + 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, + 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0x3041, 0x3042, 0x3043, 0x3044, + 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, + 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, + 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, + 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, + 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, + 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, + 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, + 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, + 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, + 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, + 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, + 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, + 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, + 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, + 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, + 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, + 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, + 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, + 0x30F4, 0x30F5, 0x30F6, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, + 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, + 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, + 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, + 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0xFF0C, 0x3002, 0x3001, + 0xFF1A, 0xFF1B, 0xFF01, 0xFF1F, 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, + 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0x3016, 0x3017, + 0xFE3B, 0xFE3C, 0xFE37, 0xFE38, 0xFE31, 0x2026, 0xFE33, 0xFE34, 0x0410, + 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, + 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, + 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, + 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, + 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, + 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, + 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, + 0x044E, 0x044F, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, + 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, + 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, + 0x00EA, 0x0251, 0x1E3F, 0x0144, 0x0148, 0x01F9, 0x0261, 0x3105, 0x3106, + 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, + 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, + 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, + 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0xE7CD, + 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, + 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, + 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, + 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, + 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, + 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, + 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, + 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, + 0x2548, 0x2549, 0x254A, 0x254B, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, + 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, + 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, + 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, + 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, + 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, + 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, + 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, + 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0101, + 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B, 0x00ED, + 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, + 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, 0x1E3F, + 0x0144, 0x0148, 0x01F9, 0x0261, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, + 0x5509, 0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, + 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, + 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, 0x8884, + 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, 0x53ED, 0x5427, + 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, 0x9776, 0x628A, 0x8019, + 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, + 0x8D25, 0x62DC, 0x7A17, 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, + 0x677F, 0x7248, 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, + 0x90A6, 0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, + 0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, 0x8584, + 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, 0x66B4, 0x8C79, + 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, 0x5317, 0x8F88, 0x80CC, + 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, + 0x82EF, 0x672C, 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, + 0x903C, 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, + 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, + 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16, + 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, 0x904D, + 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, 0x762A, 0x5F6C, + 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, 0x51B0, 0x67C4, 0x4E19, + 0x79C9, 0x997C, 0x70B3, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, + 0x94B5, 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, + 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, + 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, + 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, + 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, 0x707F, + 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, + 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, + 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, + 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, + 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316, 0x573A, 0x5C1D, + 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021, + 0x8D85, 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, + 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, + 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, + 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, + 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 0x6C60, + 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, + 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, + 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11, + 0x81ED, 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, + 0x9664, 0x695A, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, + 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, 0x7A97, + 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, 0x9524, 0x5782, + 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0, + 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, + 0x523A, 0x8D50, 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, + 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, + 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, + 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, + 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, 0x5E26, + 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E, 0x6020, 0x803D, 0x62C5, + 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, + 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, + 0x5200, 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, + 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, + 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C, + 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, 0x8482, + 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, 0x6EC7, 0x7898, + 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, 0x7538, 0x5E97, 0x60E6, + 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, + 0x540A, 0x9493, 0x8C03, 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, + 0x53E0, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, + 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, + 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, + 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, 0x7779, + 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, + 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, + 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, + 0x54C6, 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, + 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, + 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, + 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, + 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, + 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, + 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, + 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, 0x5561, + 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, + 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, + 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, + 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, + 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, + 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D, + 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF, + 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986, + 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, + 0x8BA3, 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, + 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, + 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, + 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8, + 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, 0x6B4C, + 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, 0x845B, 0x683C, + 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF, + 0x8015, 0x66F4, 0x5E9A, 0x7FB9, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, + 0x529F, 0x606D, 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, + 0x6C5E, 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, + 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, + 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, 0x80A1, + 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, 0x5BE1, 0x6302, + 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, 0x5B98, 0x51A0, 0x89C2, + 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, + 0x7470, 0x89C4, 0x572D, 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, + 0x8BE1, 0x7678, 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, + 0x68CD, 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x9AB8, + 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF, + 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, 0x64BC, + 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, + 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, + 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, + 0x5408, 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, + 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, + 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, + 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019, + 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, 0x8774, + 0x72D0, 0x7CCA, 0x6E56, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, + 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, + 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 0x6853, + 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, + 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, + 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, + 0x8F89, 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, + 0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, + 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, + 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, + 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95, 0x808C, 0x9965, + 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, + 0x68D8, 0x8F91, 0x7C4D, 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, + 0x5AC9, 0x7EA7, 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, + 0x5B63, 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, + 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, + 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, 0x94BE, + 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, 0x76D1, 0x575A, + 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, 0x8270, 0x5978, 0x7F04, + 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, + 0x526A, 0x51CF, 0x8350, 0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, + 0x7BAD, 0x4EF6, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, + 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, + 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, 0x7126, + 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, 0x6405, 0x94F0, + 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, 0x7F34, 0x7EDE, 0x527F, + 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, + 0x79F8, 0x8857, 0x9636, 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, + 0x776B, 0x7AED, 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, + 0x754C, 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, + 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, + 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x5C3D, 0x52B2, 0x8346, + 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, + 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, + 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, + 0x7A76, 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, + 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, + 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, + 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F, + 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, 0x5026, + 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, 0x5014, 0x7235, + 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, + 0x5CFB, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361, + 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, + 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, + 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, + 0x78D5, 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, + 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, + 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, + 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, + 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50, + 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, + 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080, 0x9988, 0x6127, 0x6E83, 0x5764, + 0x6606, 0x6346, 0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, + 0x5587, 0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, + 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, + 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, 0x5ECA, + 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, 0x4F6C, 0x59E5, + 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, 0x956D, 0x857E, 0x78CA, + 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, + 0x51B7, 0x5398, 0x68A8, 0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, + 0x7406, 0x674E, 0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, + 0x4E3D, 0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, + 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, 0x4FE9, + 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, 0x5E18, 0x655B, + 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, 0x51C9, 0x6881, 0x7CB1, + 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, + 0x50DA, 0x7597, 0x71CE, 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, + 0x5ED6, 0x6599, 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, + 0x78F7, 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, + 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC, + 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, 0x69B4, + 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, 0x516D, 0x9F99, + 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, + 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, + 0x7089, 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, + 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, + 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, + 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71, + 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, + 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, + 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, + 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, + 0x7792, 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x8C29, + 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, + 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38, + 0x4E48, 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, + 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, + 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, + 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, + 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 0x7EF5, + 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, + 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, + 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D, + 0x547D, 0x8C2C, 0x6478, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, + 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, + 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, 0x6BCD, + 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, + 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, + 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, + 0x8111, 0x607C, 0x95F9, 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, + 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, + 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, + 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, + 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81, 0x62E7, 0x6CDE, + 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53, 0x519C, 0x5F04, 0x5974, + 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, + 0x8BFA, 0x54E6, 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, + 0x556A, 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, + 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, + 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486, + 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9, 0x88F4, + 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6, 0x7830, 0x62A8, + 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B, + 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, + 0x7435, 0x6BD7, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, + 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, + 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, + 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, + 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, 0x6251, + 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, + 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, + 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, + 0x6B67, 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, + 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, + 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x6070, 0x6D3D, 0x7275, + 0x6266, 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, + 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, + 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, + 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, + 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, 0x5207, + 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, + 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, + 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, + 0x5E86, 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, + 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, + 0x6E20, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, 0x6743, + 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A, + 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4, + 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, + 0x9976, 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, + 0x97E7, 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, + 0x620E, 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, + 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, + 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, 0x745E, + 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E, + 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1, 0x4F1E, 0x6563, 0x6851, 0x55D3, + 0x4E27, 0x6414, 0x9A9A, 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, + 0x50E7, 0x838E, 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, + 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, + 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247, + 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, 0x88F3, + 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6, 0x5C11, 0x54E8, + 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C, 0x820D, 0x8D66, 0x6444, + 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, + 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, + 0x80BE, 0x614E, 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, + 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD, + 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0, + 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, + 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, + 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, + 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, + 0x9996, 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, + 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, + 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700, + 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6, + 0x5885, 0x5EB6, 0x6570, 0x6F31, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, + 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, + 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, + 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, + 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, + 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, + 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, + 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, + 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, + 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, + 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854, 0x736D, + 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0, 0x915E, + 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, + 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, + 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, + 0x5510, 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, + 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, + 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 0x9511, + 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 0x60D5, 0x6D95, + 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, 0x8214, + 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, + 0x5385, 0x542C, 0x70C3, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, + 0x8247, 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, + 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, + 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, 0x571F, + 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, 0x8715, 0x892A, + 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, 0x8131, 0x9E35, 0x9640, + 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, + 0x6D3C, 0x5A03, 0x74E6, 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, + 0x73A9, 0x987D, 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, + 0x60CB, 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, + 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x5DCD, 0x5FAE, + 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A, 0x6F4D, + 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, + 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, + 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, + 0x543B, 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, + 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, + 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, + 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE, + 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F, 0x8BEF, + 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, + 0x9521, 0x727A, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, + 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60, + 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, + 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, + 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, + 0x54B8, 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, + 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, + 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, + 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, + 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE, + 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653, 0x5C0F, 0x5B5D, 0x6821, + 0x8096, 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, + 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, + 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, + 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F, + 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, 0x884C, + 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308, + 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x9508, + 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, + 0x5F90, 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, + 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, + 0x7384, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74, + 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB, 0x9A6F, + 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5, 0x538B, 0x62BC, + 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, + 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, + 0x6DF9, 0x76D0, 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, + 0x960E, 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, + 0x5830, 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, + 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F, + 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B, 0x6837, + 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0x6447, 0x5C27, 0x9065, 0x7A91, + 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, + 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, + 0x66F3, 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, + 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, + 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2, + 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF, + 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, 0x6BC5, + 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, + 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, + 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690, + 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, + 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, + 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, + 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, + 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, + 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, + 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, + 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88, + 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, + 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, + 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, + 0x9A6D, 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, + 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, + 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3, + 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668, + 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838, + 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, + 0x6512, 0x6682, 0x8D5E, 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, + 0x85FB, 0x67A3, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, + 0x7076, 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, + 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67, 0x94E1, + 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8, 0x8BC8, 0x6458, + 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB, 0x6BE1, 0x8A79, 0x7C98, + 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, + 0x6218, 0x7AD9, 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, + 0x638C, 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, + 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, + 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517, + 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827, 0x81FB, + 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707, 0x632F, 0x9547, + 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0, 0x4E89, 0x6014, 0x6574, + 0x62EF, 0x6B63, 0x653F, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, + 0x652F, 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, + 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, + 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, + 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, + 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, 0x949F, + 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, + 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, + 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, + 0x8BDB, 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, + 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x4F4F, 0x6CE8, + 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0, + 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, + 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, + 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, + 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, + 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 0x68D5, + 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, + 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, + 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6, + 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x4E8D, 0x4E0C, 0x5140, + 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, + 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, + 0x56DF, 0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, + 0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, + 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 0x5326, + 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x522D, + 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, 0x527D, + 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, + 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, + 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, + 0x4F5D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, + 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6, + 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, + 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, + 0x500C, 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, + 0x507B, 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, + 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, + 0x9FA0, 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, + 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156, + 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803, + 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0x51C7, 0x5196, 0x51A2, 0x51A5, + 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, + 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, + 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, + 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, + 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, + 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E, + 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D, 0x9622, + 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, + 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, + 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA, + 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, + 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, + 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, + 0x5942, 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, + 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, + 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, + 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, + 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, 0x576D, + 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, + 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, + 0x57EF, 0x57F8, 0x57E4, 0x57DD, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, + 0x581E, 0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, + 0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, + 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE, + 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC, + 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82CE, 0x82A4, + 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, + 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, + 0x82E0, 0x82D5, 0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, + 0x8334, 0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, + 0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, 0x8368, + 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378, 0x83B3, + 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6, 0x83A9, + 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, + 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, + 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, + 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, + 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C, + 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD, + 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0, 0x84A1, + 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538, 0x84F0, + 0x8539, 0x851F, 0x853A, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, + 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, + 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, + 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, + 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958, + 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB, + 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, + 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, + 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, + 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, + 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496, 0x647A, 0x64B7, + 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509, + 0x6525, 0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, + 0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, + 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, + 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, + 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, 0x54D3, + 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA, + 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7, + 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527, + 0x552A, 0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, + 0x5550, 0x553C, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, + 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, + 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, 0x5599, + 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, 0x55D4, 0x55E6, + 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, + 0x55F5, 0x55E4, 0x8F94, 0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, + 0x55FE, 0x5600, 0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, + 0x5662, 0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, + 0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, + 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F, + 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0x5E37, 0x5E44, 0x5E54, + 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, + 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, + 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, + 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, + 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, + 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73, + 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x5F8C, 0x5F95, + 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD, + 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, + 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, + 0x72FA, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, + 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, + 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, + 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974, 0x9977, + 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, + 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, + 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, + 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, + 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, + 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, + 0x6078, 0x6079, 0x607B, 0x607A, 0x6042, 0x606A, 0x607D, 0x6096, 0x609A, + 0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, + 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, + 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, + 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, 0x95F3, + 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, 0x9608, 0x960A, + 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, + 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, + 0x6C85, 0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, + 0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, + 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE, + 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E, + 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, 0x6D33, + 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60, + 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, + 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, + 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, + 0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, + 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2, + 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36, + 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, 0x6F78, + 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, + 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, + 0x7035, 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, + 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, + 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3, + 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, 0x9016, 0x9021, + 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, + 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, + 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, + 0x5B71, 0x5C63, 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, + 0x9B3B, 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x5997, + 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE, + 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, 0x5A09, + 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, + 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, + 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, + 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, + 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, + 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, + 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D, + 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, + 0x7EA5, 0x7EA8, 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, + 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, + 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, + 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, + 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, + 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, + 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, + 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, + 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, + 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, + 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C, 0x741B, 0x741A, + 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 0x7477, 0x746D, 0x747E, 0x749C, + 0x748E, 0x7480, 0x7481, 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, + 0x74A7, 0x74D2, 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, + 0x6748, 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, + 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, + 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 0x67DD, + 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, 0x6832, 0x6833, + 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 0x6883, 0x681D, 0x6855, + 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, + 0x688F, 0x6874, 0x6877, 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, + 0x6920, 0x68F9, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, + 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, + 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963, + 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, + 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17, + 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, + 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, + 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, + 0x6B93, 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, + 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, + 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0x8F8D, 0x8F8E, 0x8F8F, + 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, + 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, + 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, + 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, + 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677, + 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9, + 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, + 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, 0x89CC, + 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, + 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, + 0x63B0, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, + 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, + 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, + 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, + 0x80BD, 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, + 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, + 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, + 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, + 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 0x817D, + 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, + 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0x81C1, 0x81A6, 0x6B24, 0x6B37, + 0x6B39, 0x6B43, 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, + 0x98DA, 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, + 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, + 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, 0x70CA, + 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, 0x7168, 0x7145, + 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 0x71B5, 0x71A8, 0x71A0, + 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 0x7228, 0x706C, 0x7118, 0x7166, + 0x71B9, 0x623E, 0x623D, 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, + 0x7949, 0x795B, 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, + 0x7967, 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, + 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, 0x6106, + 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, 0x8080, 0x807F, + 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, 0x7809, 0x7817, 0x7818, + 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, + 0x783C, 0x7825, 0x782C, 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, + 0x7826, 0x7850, 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, + 0x789C, 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, + 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B, + 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, 0x7708, + 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751, + 0x7747, 0x7743, 0x775A, 0x7768, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, + 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, + 0x7540, 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, + 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, + 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, + 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C, + 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0, 0x94B2, + 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, + 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, + 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, + 0x94DF, 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x94E9, + 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, + 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, + 0x950E, 0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, + 0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, + 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, + 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, + 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, 0x955F, + 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, + 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, + 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, + 0x7A02, 0x7A1E, 0x7A14, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, + 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, + 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 0x9E36, + 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 0x9E44, 0x9E46, + 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, 0x9E51, 0x9E55, 0x9E57, + 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, + 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, + 0x75A0, 0x759D, 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, + 0x75B0, 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, + 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, + 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, 0x761B, 0x763C, + 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, 0x7635, 0x7643, 0x763E, + 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, + 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, + 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, + 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, + 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919, + 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966, 0x897B, + 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C, + 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800B, + 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, + 0x9880, 0x9883, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, + 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, + 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, + 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, + 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9, + 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, + 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, + 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, + 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, + 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, + 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2, 0x87C6, 0x8788, 0x8785, + 0x87AD, 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, + 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, + 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, + 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, + 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 0x7B2E, + 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, + 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72, + 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, + 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, + 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, + 0x7C0B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201, + 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, 0x822F, + 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, 0x8244, 0x8249, + 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, + 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, + 0x6549, 0x7C91, 0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, + 0x7CC1, 0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, + 0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, + 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4, + 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, 0x8C49, + 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0x9162, 0x9161, 0x9170, 0x9169, + 0x916F, 0x917D, 0x917E, 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, + 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, + 0x91B4, 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, + 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, + 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9, + 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E, + 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, 0x8E49, + 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, + 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, + 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, + 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, + 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, + 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, 0x9F8C, + 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, + 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, + 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, + 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, + 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, + 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4, + 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, + 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, + 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, + 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, + 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, + 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, + 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, + 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, + 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, + 0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, + 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, + 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44, 0x3007, + 0xFF5E, 0x2016, 0x3013, 0xFF0E, 0xFF1D, 0xFF3B, 0xFF3D, 0xFFE3, 0x00FC, + 0x00A9, 0x2122, 0x2026, 0x0020, 0x769A, 0x85F9, 0x7919, 0x611B, 0x9AAF, + 0x8956, 0x58E9, 0x7F77, 0x64FA, 0x6557, 0x9812, 0x8FA6, 0x7D46, 0x5E6B, + 0x7D81, 0x938A, 0x8B17, 0x98FD, 0x5BF6, 0x5831, 0x9B91, 0x8F29, 0x8C9D, + 0x92C7, 0x72FD, 0x5099, 0x618A, 0x7DB3, 0x7B46, 0x7562, 0x6583, 0x5E63, + 0x9589, 0x908A, 0x7DE8, 0x8CB6, 0x8B8A, 0x8FAF, 0x8FAE, 0x6A19, 0x9C49, + 0x765F, 0x7015, 0x6FF1, 0x8CD3, 0x64EF, 0x9905, 0x64A5, 0x9262, 0x9251, + 0x99C1, 0x88DC, 0x8CA1, 0x53C3, 0x8836, 0x6B98, 0x615A, 0x6158, 0x71E6, + 0x84BC, 0x8259, 0x5009, 0x6EC4, 0x53A0, 0x5074, 0x6E2C, 0x5C64, 0x8A6B, + 0x6519, 0x647B, 0x87EC, 0x995E, 0x8B92, 0x7E8F, 0x93DF, 0x7523, 0x95E1, + 0x986B, 0x5834, 0x5617, 0x9577, 0x511F, 0x8178, 0x5EE0, 0x66A2, 0x9214, + 0x8ECA, 0x5FB9, 0x5875, 0x9673, 0x896F, 0x7A31, 0x61F2, 0x8AA0, 0x9A01, + 0x9072, 0x99B3, 0x9F52, 0x71BE, 0x885D, 0x87F2, 0x5BF5, 0x7587, 0x8E8A, + 0x7C4C, 0x7DA2, 0x919C, 0x92E4, 0x96DB, 0x790E, 0x5132, 0x89F8, 0x8655, + 0x50B3, 0x7621, 0x95D6, 0x5275, 0x9318, 0x7D14, 0x7DBD, 0x8FAD, 0x8A5E, + 0x8CDC, 0x8070, 0x5F9E, 0x53E2, 0x8EA5, 0x7AC4, 0x932F, 0x9054, 0x5E36, + 0x8CB8, 0x64D4, 0x55AE, 0x9132, 0x64A3, 0x81BD, 0x619A, 0x8A95, 0x5F48, + 0x7576, 0x64CB, 0x9EE8, 0x8569, 0x6A94, 0x6417, 0x5CF6, 0x79B1, 0x5C0E, + 0x71C8, 0x9127, 0x6575, 0x6ECC, 0x905E, 0x7DE0, 0x985B, 0x9EDE, 0x588A, + 0x96FB, 0x6FB1, 0x91E3, 0x8ABF, 0x8ADC, 0x91D8, 0x9802, 0x9320, 0x8A02, + 0x6771, 0x52D5, 0x68DF, 0x51CD, 0x9B25, 0x72A2, 0x7368, 0x8B80, 0x8CED, + 0x934D, 0x935B, 0x65B7, 0x7DDE, 0x968A, 0x5C0D, 0x5678, 0x9813, 0x920D, + 0x596A, 0x58AE, 0x9D5D, 0x984D, 0x8A1B, 0x60E1, 0x9913, 0x5152, 0x723E, + 0x990C, 0x8CB3, 0x767C, 0x7F70, 0x95A5, 0x792C, 0x91E9, 0x7169, 0x7BC4, + 0x8CA9, 0x98EF, 0x8A2A, 0x7D21, 0x98DB, 0x8AB9, 0x5EE2, 0x8CBB, 0x7D1B, + 0x58B3, 0x596E, 0x61A4, 0x7CDE, 0x8C50, 0x6953, 0x92D2, 0x98A8, 0x760B, + 0x99AE, 0x7E2B, 0x8AF7, 0x9CF3, 0x819A, 0x8F3B, 0x64AB, 0x8F14, 0x8CE6, + 0x5FA9, 0x8CA0, 0x8A03, 0x5A66, 0x7E1B, 0x8A72, 0x9223, 0x84CB, 0x5E79, + 0x8D95, 0x8D1B, 0x5CA1, 0x525B, 0x92FC, 0x7DB1, 0x5D17, 0x93AC, 0x64F1, + 0x9D3F, 0x95A3, 0x927B, 0x500B, 0x7D66, 0x9F94, 0x978F, 0x8CA2, 0x920E, + 0x6E9D, 0x69CB, 0x8CFC, 0x8831, 0x9867, 0x526E, 0x95DC, 0x89C0, 0x9928, + 0x6163, 0x8CAB, 0x5EE3, 0x898F, 0x6B78, 0x9F9C, 0x95A8, 0x8ECC, 0x8A6D, + 0x6AC3, 0x8CB4, 0x528A, 0x8F25, 0x934B, 0x570B, 0x904E, 0x99ED, 0x97D3, + 0x6F22, 0x865F, 0x95A1, 0x9DB4, 0x8CC0, 0x8F5F, 0x9D3B, 0x7D05, 0x58FA, + 0x8B77, 0x6EEC, 0x5629, 0x83EF, 0x756B, 0x5283, 0x8A71, 0x61F7, 0x58DE, + 0x6B61, 0x74B0, 0x9084, 0x7DE9, 0x8B0A, 0x63EE, 0x8F1D, 0x8CC4, 0x7A62, + 0x6703, 0x71F4, 0x532F, 0x8AF1, 0x8AA8, 0x7E6A, 0x8477, 0x6E3E, 0x7372, + 0x8CA8, 0x798D, 0x64CA, 0x6A5F, 0x7A4D, 0x9951, 0x8B4F, 0x9DC4, 0x7E3E, + 0x7DDD, 0x6975, 0x8F2F, 0x7D1A, 0x64E0, 0x5E7E, 0x858A, 0x5291, 0x6FDF, + 0x8A08, 0x8A18, 0x969B, 0x7E7C, 0x7D00, 0x593E, 0x83A2, 0x9830, 0x8CC8, + 0x9240, 0x50F9, 0x99D5, 0x6BB2, 0x76E3, 0x5805, 0x7B8B, 0x9593, 0x8271, + 0x7DD8, 0x7E6D, 0x6AA2, 0x9E7C, 0x63C0, 0x64BF, 0x7C21, 0x5109, 0x85A6, + 0x6ABB, 0x9452, 0x8E10, 0x8CE4, 0x898B, 0x9375, 0x8266, 0x528D, 0x991E, + 0x6F38, 0x6FFA, 0x6F97, 0x5C07, 0x6F3F, 0x8523, 0x69F3, 0x596C, 0x8B1B, + 0x91AC, 0x81A0, 0x6F86, 0x9A55, 0x5B0C, 0x652A, 0x9278, 0x77EF, 0x50E5, + 0x9903, 0x7E73, 0x7D5E, 0x8F4E, 0x8F03, 0x968E, 0x7BC0, 0x6F54, 0x7D50, + 0x8AA1, 0x7DCA, 0x9326, 0x50C5, 0x8B39, 0x9032, 0x71FC, 0x76E1, 0x52C1, + 0x8396, 0x9BE8, 0x9A5A, 0x7D93, 0x9838, 0x93E1, 0x5F91, 0x75D9, 0x7AF6, + 0x7CFE, 0x820A, 0x99D2, 0x8209, 0x64DA, 0x92F8, 0x61FC, 0x5287, 0x9D51, + 0x7D79, 0x89BA, 0x8A23, 0x7D76, 0x921E, 0x8ECD, 0x99FF, 0x958B, 0x51F1, + 0x9846, 0x6BBB, 0x8AB2, 0x58BE, 0x61C7, 0x6473, 0x5EAB, 0x8932, 0x8A87, + 0x584A, 0x5108, 0x5BEC, 0x7926, 0x66E0, 0x8667, 0x5DCB, 0x7ABA, 0x994B, + 0x6F70, 0x64F4, 0x95CA, 0x881F, 0x81D8, 0x840A, 0x4F86, 0x8CF4, 0x85CD, + 0x6B04, 0x6514, 0x7C43, 0x95CC, 0x862D, 0x703E, 0x8B95, 0x652C, 0x89BD, + 0x61F6, 0x7E9C, 0x721B, 0x6FEB, 0x6488, 0x52DE, 0x6F87, 0x6A02, 0x9433, + 0x58D8, 0x985E, 0x7C6C, 0x96E2, 0x7055, 0x88CF, 0x9BC9, 0x79AE, 0x9E97, + 0x53B2, 0x52F5, 0x792B, 0x6B77, 0x701D, 0x96B8, 0x5006, 0x806F, 0x84EE, + 0x9023, 0x942E, 0x6190, 0x6F23, 0x7C3E, 0x6582, 0x81C9, 0x93C8, 0x6200, + 0x7149, 0x7DF4, 0x7CE7, 0x5169, 0x8F1B, 0x8AD2, 0x7642, 0x907C, 0x9410, + 0x7375, 0x81E8, 0x9130, 0x9C57, 0x8CC3, 0x9F61, 0x9234, 0x9748, 0x5DBA, + 0x9818, 0x993E, 0x5289, 0x9F8D, 0x807E, 0x56A8, 0x7C60, 0x58DF, 0x650F, + 0x96B4, 0x6A13, 0x5A41, 0x645F, 0x7C0D, 0x8606, 0x76E7, 0x9871, 0x5EEC, + 0x7210, 0x64C4, 0x6EF7, 0x865C, 0x9B6F, 0x8CC2, 0x9332, 0x9678, 0x9A62, + 0x92C1, 0x5C62, 0x7E37, 0x616E, 0x6FFE, 0x7DD1, 0x5DD2, 0x6523, 0x5B7F, + 0x7064, 0x4E82, 0x6384, 0x8F2A, 0x502B, 0x4F96, 0x6DEA, 0x7DB8, 0x8AD6, + 0x863F, 0x7F85, 0x908F, 0x947C, 0x7C6E, 0x9A3E, 0x99F1, 0x7D61, 0x5ABD, + 0x746A, 0x78BC, 0x879E, 0x99AC, 0x99E1, 0x55CE, 0x8CB7, 0x9EA5, 0x8CE3, + 0x9081, 0x779E, 0x9945, 0x883B, 0x6EFF, 0x8B3E, 0x9328, 0x925A, 0x8CBF, + 0x9382, 0x9580, 0x60B6, 0x5011, 0x9333, 0x5922, 0x8B0E, 0x5F4C, 0x8993, + 0x7DBF, 0x7DEC, 0x5EDF, 0x6EC5, 0x61AB, 0x95A9, 0x9CF4, 0x9298, 0x8B2C, + 0x8B00, 0x755D, 0x9209, 0x7D0D, 0x96E3, 0x6493, 0x8166, 0x60F1, 0x9B27, + 0x9912, 0x64EC, 0x81A9, 0x6506, 0x91C0, 0x9CE5, 0x8076, 0x5699, 0x9477, + 0x93B3, 0x6AB8, 0x7370, 0x5BE7, 0x64F0, 0x6FD8, 0x9215, 0x7D10, 0x81BF, + 0x6FC3, 0x8FB2, 0x7627, 0x8AFE, 0x6B50, 0x9DD7, 0x6BC6, 0x5614, 0x6F1A, + 0x76E4, 0x9F90, 0x8CE0, 0x5674, 0x9D6C, 0x9A19, 0x98C4, 0x983B, 0x8CA7, + 0x860B, 0x6191, 0x8A55, 0x6F51, 0x9817, 0x64B2, 0x92EA, 0x50D5, 0x6A38, + 0x8B5C, 0x81CD, 0x9F4A, 0x9A0E, 0x8C48, 0x5553, 0x6C23, 0x8A16, 0x727D, + 0x91FA, 0x925B, 0x9077, 0x7C3D, 0x8B19, 0x9322, 0x9257, 0x6DFA, 0x8B74, + 0x5879, 0x69CD, 0x55C6, 0x58BB, 0x8594, 0x6436, 0x936C, 0x6A4B, 0x55AC, + 0x50D1, 0x7FF9, 0x7AC5, 0x7ACA, 0x6B3D, 0x89AA, 0x5BE2, 0x8F15, 0x6C2B, + 0x50BE, 0x9803, 0x8ACB, 0x6176, 0x74CA, 0x7AAE, 0x8DA8, 0x5340, 0x8EC0, + 0x9A45, 0x9F72, 0x9874, 0x6B0A, 0x52F8, 0x9D72, 0x78BA, 0x8B93, 0x9952, + 0x64FE, 0x7E5E, 0x71B1, 0x97CC, 0x8A8D, 0x7D09, 0x69AE, 0x7D68, 0x8EDF, + 0x92ED, 0x958F, 0x6F64, 0x7051, 0x85A9, 0x9C13, 0x8CFD, 0x5098, 0x55AA, + 0x9A37, 0x6383, 0x6F80, 0x6BBA, 0x7D17, 0x7BE9, 0x66EC, 0x9583, 0x965D, + 0x8D0D, 0x7E55, 0x50B7, 0x8CDE, 0x71D2, 0x7D39, 0x8CD2, 0x6368, 0x651D, + 0x61FE, 0x8A2D, 0x7D33, 0x5BE9, 0x5B38, 0x814E, 0x6EF2, 0x8072, 0x7E69, + 0x52DD, 0x8056, 0x5E2B, 0x7345, 0x6FD5, 0x8A69, 0x6642, 0x8755, 0x5BE6, + 0x8B58, 0x99DB, 0x52E2, 0x9069, 0x91CB, 0x98FE, 0x8996, 0x8A66, 0x58FD, + 0x7378, 0x6A1E, 0x8F38, 0x66F8, 0x8D16, 0x5C6C, 0x8853, 0x6A39, 0x7AEA, + 0x6578, 0x5E25, 0x96D9, 0x8AB0, 0x9806, 0x8AAC, 0x78A9, 0x720D, 0x7D72, + 0x98FC, 0x9B06, 0x8073, 0x616B, 0x980C, 0x8A1F, 0x8AA6, 0x64FB, 0x8607, + 0x8A34, 0x8085, 0x96D6, 0x96A8, 0x7D8F, 0x6B72, 0x5B6B, 0x640D, 0x7E2E, + 0x7463, 0x9396, 0x737A, 0x64BB, 0x81FA, 0x614B, 0x6524, 0x8CAA, 0x7671, + 0x7058, 0x58C7, 0x8B5A, 0x8AC7, 0x5606, 0x6E6F, 0x71D9, 0x6FE4, 0x7E27, + 0x8A0E, 0x9A30, 0x8B04, 0x92BB, 0x984C, 0x9AD4, 0x689D, 0x8CBC, 0x9435, + 0x5EF3, 0x807D, 0x70F4, 0x9285, 0x7D71, 0x982D, 0x5716, 0x5857, 0x5718, + 0x983D, 0x9D15, 0x99B1, 0x99DD, 0x6A62, 0x7AAA, 0x896A, 0x5F4E, 0x7063, + 0x9811, 0x842C, 0x7DB2, 0x97CB, 0x9055, 0x570D, 0x7232, 0x6FF0, 0x7DAD, + 0x8466, 0x5049, 0x50DE, 0x7DEF, 0x8B02, 0x885B, 0x805E, 0x7D0B, 0x7A69, + 0x554F, 0x64BE, 0x8778, 0x6E26, 0x7AA9, 0x55DA, 0x93A2, 0x70CF, 0x8AA3, + 0x7121, 0x856A, 0x5862, 0x9727, 0x52D9, 0x8AA4, 0x932B, 0x72A7, 0x8972, + 0x7FD2, 0x9291, 0x6232, 0x7D30, 0x8766, 0x8F44, 0x5CFD, 0x4FE0, 0x72F9, + 0x5687, 0x9341, 0x9BAE, 0x7E96, 0x8CE2, 0x929C, 0x9591, 0x986F, 0x96AA, + 0x73FE, 0x737B, 0x7E23, 0x9921, 0x61B2, 0x7DAB, 0x9472, 0x9109, 0x8A73, + 0x97FF, 0x9805, 0x856D, 0x56C2, 0x92B7, 0x66C9, 0x562F, 0x5354, 0x633E, + 0x8105, 0x8AE7, 0x5BEB, 0x7009, 0x8B1D, 0x92C5, 0x91C1, 0x8208, 0x92B9, + 0x7D89, 0x9808, 0x8A31, 0x7DD2, 0x7E8C, 0x8ED2, 0x61F8, 0x9078, 0x766C, + 0x7D62, 0x5B78, 0x52DB, 0x8A62, 0x5C0B, 0x99B4, 0x8A13, 0x8A0A, 0x905C, + 0x58D3, 0x9D09, 0x9D28, 0x555E, 0x4E9E, 0x8A1D, 0x95B9, 0x9E7D, 0x56B4, + 0x9854, 0x95BB, 0x8277, 0x53AD, 0x786F, 0x8AFA, 0x9A57, 0x9D26, 0x694A, + 0x63DA, 0x760D, 0x967D, 0x7662, 0x990A, 0x6A23, 0x582F, 0x8B21, 0x85E5, + 0x723A, 0x9801, 0x696D, 0x8449, 0x91AB, 0x92A5, 0x9824, 0x907A, 0x5100, + 0x87FB, 0x85DD, 0x5104, 0x61B6, 0x7FA9, 0x8A63, 0x8B70, 0x8ABC, 0x8B6F, + 0x7E79, 0x852D, 0x9670, 0x9280, 0x98F2, 0x96B1, 0x6AFB, 0x5B30, 0x9DF9, + 0x61C9, 0x7E93, 0x7469, 0x87A2, 0x71DF, 0x7192, 0x8805, 0x8D0F, 0x7A4E, + 0x55B2, 0x64C1, 0x50AD, 0x7670, 0x8E34, 0x512A, 0x6182, 0x90F5, 0x923E, + 0x7336, 0x8A98, 0x8F3F, 0x9918, 0x9B5A, 0x6F01, 0x8207, 0x5DBC, 0x8A9E, + 0x9B31, 0x7344, 0x8B7D, 0x9810, 0x99AD, 0x9D1B, 0x6DF5, 0x8F45, 0x5712, + 0x54E1, 0x5713, 0x7DE3, 0x9060, 0x9858, 0x7D04, 0x8E8D, 0x9470, 0x95B2, + 0x96F2, 0x9116, 0x9695, 0x904B, 0x85F4, 0x9196, 0x6688, 0x96DC, 0x8F09, + 0x6522, 0x66AB, 0x8D0A, 0x8D1C, 0x81DF, 0x947F, 0x68D7, 0x7AC8, 0x8CAC, + 0x64C7, 0x5247, 0x6FA4, 0x8CCA, 0x8D08, 0x8ECB, 0x9358, 0x9598, 0x8A50, + 0x9F4B, 0x50B5, 0x6C08, 0x76DE, 0x65AC, 0x8F3E, 0x5D84, 0x68E7, 0x6230, + 0x7DBB, 0x5F35, 0x6F32, 0x5E33, 0x8CEC, 0x8139, 0x8D99, 0x87C4, 0x8F4D, + 0x937A, 0x9019, 0x8C9E, 0x91DD, 0x5075, 0x8A3A, 0x93AE, 0x9663, 0x5E40, + 0x7665, 0x912D, 0x8B49, 0x7E54, 0x8077, 0x57F7, 0x8879, 0x7D19, 0x646F, + 0x64F2, 0x5E5F, 0x8CEA, 0x6EEF, 0x9418, 0x7D42, 0x7A2E, 0x816B, 0x8846, + 0x8B05, 0x8EF8, 0x76BA, 0x665D, 0x9A5F, 0x8AF8, 0x8A85, 0x71ED, 0x77DA, + 0x56D1, 0x8CAF, 0x9444, 0x7BC9, 0x99D0, 0x5C08, 0x78DA, 0x8F49, 0x8CFA, + 0x6A01, 0x838A, 0x88DD, 0x599D, 0x58EF, 0x72C0, 0x9310, 0x8D05, 0x589C, + 0x7DB4, 0x8AC4, 0x6E96, 0x6FC1, 0x8CC7, 0x6F2C, 0x7D9C, 0x7E3D, 0x7E31, + 0x9112, 0x8A5B, 0x7D44, 0x947D, 0x55C7, 0x5399, 0x53B4, 0x9768, 0x8D0B, + 0x532D, 0x5331, 0x8CFE, 0x5244, 0x528C, 0x5274, 0x50B4, 0x5000, 0x5096, + 0x5115, 0x5102, 0x5114, 0x513C, 0x5137, 0x50E8, 0x50C2, 0x513B, 0x5110, + 0x513A, 0x50C9, 0x7CF4, 0x9ECC, 0x56C5, 0x9CEC, 0x893B, 0x81E0, 0x8A01, + 0x8A10, 0x8A0C, 0x8A15, 0x8B33, 0x8A4E, 0x8A25, 0x8A41, 0x8A36, 0x8A46, + 0x8A54, 0x8A58, 0x8A52, 0x8A86, 0x8A84, 0x8A7F, 0x8A70, 0x8A7C, 0x8A75, + 0x8A6C, 0x8A6E, 0x8ACD, 0x8AE2, 0x8A61, 0x8A9A, 0x8AA5, 0x8A91, 0x8A92, + 0x8ACF, 0x8AD1, 0x8AC9, 0x8ADB, 0x8AD7, 0x8AC2, 0x8AB6, 0x8AF6, 0x8AEB, + 0x8B14, 0x8B01, 0x8AE4, 0x8AED, 0x8AFC, 0x8AF3, 0x8AE6, 0x8AEE, 0x8ADE, + 0x8B28, 0x8B9C, 0x8B16, 0x8B1A, 0x8B10, 0x8B2B, 0x8B2D, 0x8B56, 0x8B59, + 0x8B4E, 0x8B9E, 0x8B6B, 0x8B96, 0x9658, 0x913A, 0x9114, 0x9134, 0x90DF, + 0x9136, 0x9106, 0x9148, 0x82BB, 0x52F1, 0x5DF0, 0x580A, 0x58D9, 0x58E2, + 0x58E0, 0x58DA, 0x57E1, 0x584F, 0x5816, 0x5852, 0x581D, 0x5864, 0x858C, + 0x8553, 0x85F6, 0x83A7, 0x8407, 0x84EF, 0x82E7, 0x8622, 0x8526, 0x584B, + 0x7162, 0x8558, 0x84FD, 0x854E, 0x8588, 0x85BA, 0x7296, 0x6ECE, 0x8541, + 0x85CE, 0x8552, 0x84C0, 0x8452, 0x8464, 0x8494, 0x8435, 0x859F, 0x8555, + 0x9DAF, 0x8493, 0x7E08, 0x8546, 0x8562, 0x851E, 0x9A40, 0x863A, 0x93A3, + 0x8577, 0x861E, 0x85FA, 0x8604, 0x85EA, 0x861A, 0x5969, 0x5C37, 0x636B, + 0x6476, 0x649F, 0x6451, 0x645C, 0x64B3, 0x6504, 0x6516, 0x64F7, 0x64FC, + 0x651B, 0x5630, 0x5638, 0x56C8, 0x56A6, 0x5504, 0x54BC, 0x5680, 0x565D, + 0x5660, 0x5635, 0x55F6, 0x5666, 0x5672, 0x568C, 0x5665, 0x561C, 0x562E, + 0x55E9, 0x5616, 0x56C0, 0x560D, 0x56B3, 0x56C1, 0x566F, 0x8F61, 0x56B6, + 0x5695, 0x5707, 0x5E43, 0x5E6C, 0x5E58, 0x5E57, 0x5D87, 0x5CF4, 0x5D50, + 0x5D2C, 0x5DA7, 0x5DA0, 0x5D97, 0x5D0D, 0x5DB8, 0x5D81, 0x5DD4, 0x5FA0, + 0x7377, 0x7341, 0x736A, 0x733B, 0x736B, 0x7380, 0x737C, 0x98E0, 0x9933, + 0x98E9, 0x993C, 0x98EA, 0x98EB, 0x98ED, 0x98F4, 0x9909, 0x9911, 0x991B, + 0x9937, 0x993F, 0x9943, 0x9948, 0x9949, 0x994A, 0x994C, 0x9962, 0x5EE1, + 0x8CE1, 0x61FA, 0x61AE, 0x616A, 0x613E, 0x60B5, 0x6134, 0x61CC, 0x615F, + 0x61E8, 0x60FB, 0x6137, 0x60F2, 0x6173, 0x611C, 0x6192, 0x9582, 0x9586, + 0x95C8, 0x958E, 0x9594, 0x958C, 0x95E5, 0x95AD, 0x95AB, 0x9B2E, 0x95AC, + 0x95BE, 0x95B6, 0x9B29, 0x95BF, 0x95BD, 0x95BC, 0x95C3, 0x95CB, 0x95D4, + 0x95D0, 0x95D5, 0x95DE, 0x7043, 0x6F59, 0x7027, 0x7018, 0x6FFC, 0x6D87, + 0x6D79, 0x6E5E, 0x6FAE, 0x700F, 0x6EF8, 0x6F6F, 0x6DF6, 0x6F7F, 0x7006, + 0x6FA0, 0x700B, 0x7067, 0x7044, 0x7005, 0x6F77, 0x7020, 0x701F, 0x7032, + 0x7028, 0x705D, 0x9A2B, 0x9087, 0x9015, 0x9090, 0x5C68, 0x5F33, 0x5AF5, + 0x5AD7, 0x5B00, 0x5A6D, 0x5B08, 0x5B4C, 0x5AA7, 0x5AFB, 0x5B0B, 0x5B21, + 0x5B2A, 0x5B19, 0x99D4, 0x99DF, 0x99D9, 0x9A36, 0x9A5B, 0x99D1, 0x99D8, + 0x9A4D, 0x9A4A, 0x99E2, 0x9A6A, 0x9A0F, 0x9A0D, 0x9A05, 0x9A42, 0x9A2D, + 0x9A16, 0x9A41, 0x9A2E, 0x9A38, 0x9A43, 0x9A44, 0x9A4F, 0x9A65, 0x9A64, + 0x7CF9, 0x7D06, 0x7D02, 0x7D07, 0x7D08, 0x7E8A, 0x7D1C, 0x7D15, 0x7D13, + 0x7D3A, 0x7D32, 0x7D31, 0x7E10, 0x7D3C, 0x7D40, 0x7D3F, 0x7D5D, 0x7D4E, + 0x7D73, 0x7D86, 0x7D83, 0x7D88, 0x7DBE, 0x7DBA, 0x7DCB, 0x7DD4, 0x7DC4, + 0x7D9E, 0x7DAC, 0x7DB9, 0x7DA3, 0x7DB0, 0x7DC7, 0x7DD9, 0x7DD7, 0x7DF9, + 0x7DF2, 0x7E62, 0x7DE6, 0x7DF6, 0x7DF1, 0x7E0B, 0x7DE1, 0x7E09, 0x7E1D, + 0x7E1F, 0x7E1E, 0x7E2D, 0x7E0A, 0x7E11, 0x7E7D, 0x7E39, 0x7E35, 0x7E32, + 0x7E46, 0x7E45, 0x7E88, 0x7E5A, 0x7E52, 0x7E6E, 0x7E7E, 0x7E70, 0x7E6F, + 0x7E98, 0x74A3, 0x744B, 0x74CF, 0x980A, 0x74BD, 0x743F, 0x7489, 0x74A6, + 0x74D4, 0x74DA, 0x97D9, 0x97DE, 0x97DC, 0x69AA, 0x6AEA, 0x6898, 0x68D6, + 0x6A05, 0x689F, 0x6ADB, 0x6AF3, 0x6AE8, 0x6ADF, 0x6A89, 0x690F, 0x6A48, + 0x6968, 0x69BF, 0x6A3A, 0x6A9C, 0x6B12, 0x6B1E, 0x6ADD, 0x69E7, 0x6B0F, + 0x6B16, 0x6AEC, 0x6ADA, 0x6AF8, 0x6AB3, 0x6AE7, 0x6AA3, 0x6AD3, 0x6ADE, + 0x6BA4, 0x6B9E, 0x6BAE, 0x6BAB, 0x6BAF, 0x8ED4, 0x8EDB, 0x8EF2, 0x8EFB, + 0x8F64, 0x8EF9, 0x8EFC, 0x8EEB, 0x8EE4, 0x8F62, 0x8EFA, 0x8EFE, 0x8F0A, + 0x8F07, 0x8F05, 0x8F12, 0x8F26, 0x8F1E, 0x8F1F, 0x8F1C, 0x8F33, 0x8F46, + 0x8F54, 0x6214, 0x6227, 0x750C, 0x66C7, 0x66C4, 0x6689, 0x66D6, 0x8CC1, + 0x8CB0, 0x8CBA, 0x8CBD, 0x8D04, 0x8CB2, 0x8CC5, 0x8D10, 0x8CD1, 0x8CDA, + 0x8CD5, 0x8CEB, 0x8CE7, 0x8CFB, 0x8998, 0x89AC, 0x89A1, 0x89BF, 0x89A6, + 0x89AF, 0x89B2, 0x89B7, 0x6BFF, 0x6C0C, 0x6C2C, 0x7258, 0x6727, 0x8156, + 0x81DA, 0x811B, 0x81BE, 0x8161, 0x81CF, 0x6B5F, 0x98AE, 0x98AF, 0x98B6, + 0x98BC, 0x98C6, 0x98C8, 0x8F42, 0x9F4F, 0x6595, 0x716C, 0x7152, 0x7197, + 0x71C1, 0x71DC, 0x71FE, 0x79B0, 0x798E, 0x79AA, 0x61DF, 0x6164, 0x61E3, + 0x6207, 0x6FA9, 0x78EF, 0x78AD, 0x7868, 0x78B8, 0x792A, 0x7931, 0x7864, + 0x78FD, 0x78E7, 0x78E3, 0x9F95, 0x7798, 0x775E, 0x77BC, 0x7F86, 0x7F88, + 0x91D2, 0x91D3, 0x91D4, 0x91D9, 0x91D7, 0x91D5, 0x91F7, 0x91E7, 0x91E4, + 0x9346, 0x91F5, 0x91F9, 0x9208, 0x9226, 0x9245, 0x9211, 0x9210, 0x9201, + 0x9227, 0x9204, 0x9225, 0x9200, 0x923A, 0x9266, 0x9237, 0x9233, 0x9255, + 0x923D, 0x9238, 0x925E, 0x926C, 0x926D, 0x923F, 0x9460, 0x9230, 0x9249, + 0x9248, 0x924D, 0x922E, 0x9239, 0x9438, 0x92AC, 0x92A0, 0x927A, 0x92AA, + 0x92EE, 0x92CF, 0x9403, 0x92E3, 0x943A, 0x92B1, 0x92A6, 0x93A7, 0x9296, + 0x92CC, 0x92A9, 0x93F5, 0x9293, 0x927F, 0x93A9, 0x929A, 0x931A, 0x92AB, + 0x9283, 0x940B, 0x92A8, 0x92A3, 0x9412, 0x9338, 0x92F1, 0x93D7, 0x92E5, + 0x92F0, 0x92EF, 0x92E8, 0x92BC, 0x92DD, 0x92F6, 0x9426, 0x9427, 0x92C3, + 0x92DF, 0x92E6, 0x9312, 0x9306, 0x9369, 0x931B, 0x9340, 0x9301, 0x9315, + 0x932E, 0x9343, 0x9307, 0x9308, 0x931F, 0x9319, 0x9365, 0x9347, 0x9376, + 0x9354, 0x9364, 0x93AA, 0x9370, 0x9384, 0x93E4, 0x93D8, 0x9428, 0x9387, + 0x93CC, 0x9398, 0x93B8, 0x93BF, 0x93A6, 0x93B0, 0x93B5, 0x944C, 0x93E2, + 0x93DC, 0x93DD, 0x93CD, 0x93DE, 0x93C3, 0x93C7, 0x93D1, 0x9414, 0x941D, + 0x93F7, 0x9465, 0x9413, 0x946D, 0x9420, 0x9479, 0x93F9, 0x9419, 0x944A, + 0x9432, 0x943F, 0x9454, 0x9463, 0x937E, 0x7A61, 0x9CE9, 0x9CF6, 0x9D07, + 0x9D06, 0x9D23, 0x9D87, 0x9E15, 0x9D1D, 0x9D1F, 0x9DE5, 0x9D2F, 0x9DD9, + 0x9D30, 0x9D42, 0x9E1E, 0x9D53, 0x9E1D, 0x9D60, 0x9D52, 0x9DF3, 0x9D5C, + 0x9D61, 0x9D93, 0x9D6A, 0x9D6F, 0x9D89, 0x9D98, 0x9D9A, 0x9DC0, 0x9DA5, + 0x9DA9, 0x9DC2, 0x9DBC, 0x9E1A, 0x9DD3, 0x9DDA, 0x9DEF, 0x9DE6, 0x9DF2, + 0x9DF8, 0x9E0C, 0x9DFA, 0x9E1B, 0x7664, 0x7658, 0x7667, 0x7602, 0x7646, + 0x7647, 0x7649, 0x761E, 0x763B, 0x766D, 0x766E, 0x7669, 0x7672, 0x7AC7, + 0x7AB6, 0x8960, 0x8933, 0x895D, 0x8947, 0x8938, 0x8964, 0x76B8, 0x802E, + 0x802C, 0x8079, 0x8075, 0x9807, 0x980E, 0x980F, 0x9821, 0x981C, 0x6F41, + 0x9826, 0x9837, 0x984E, 0x9853, 0x9873, 0x9862, 0x9859, 0x9865, 0x986C, + 0x9870, 0x87E3, 0x8806, 0x8706, 0x8823, 0x87F6, 0x86FA, 0x87EF, 0x8784, + 0x8810, 0x87C8, 0x8811, 0x87BB, 0x87CE, 0x7F4C, 0x7BE4, 0x7B67, 0x7C69, + 0x7BF3, 0x7C00, 0x7BCB, 0x7C5C, 0x7C1E, 0x7C2B, 0x7C23, 0x7C6A, 0x7C5F, + 0x8264, 0x826B, 0x88CA, 0x7FA5, 0x7CF2, 0x7CF6, 0x7CDD, 0x7E36, 0x9EA9, + 0x8DB2, 0x91C5, 0x91C3, 0x9E7A, 0x8E89, 0x8E4C, 0x8E92, 0x8E7A, 0x8E55, + 0x8E9A, 0x8E8B, 0x8E93, 0x8E91, 0x8EA1, 0x8E63, 0x8EAA, 0x8EA6, 0x89F4, + 0x89F6, 0x975A, 0x9742, 0x973D, 0x9744, 0x9F54, 0x9F5F, 0x9F59, 0x9F60, + 0x9F5C, 0x9F66, 0x9F6C, 0x9F6A, 0x9F77, 0x9EFD, 0x9EFF, 0x9F09, 0x8B8E, + 0x947E, 0x93E8, 0x9B77, 0x9B74, 0x9B81, 0x9B83, 0x9B8E, 0x9C78, 0x7A4C, + 0x9B92, 0x9C5F, 0x9B90, 0x9BAD, 0x9B9A, 0x9BAA, 0x9B9E, 0x9C6D, 0x9BAB, + 0x9B9D, 0x9C58, 0x9BC1, 0x9C7A, 0x9C31, 0x9C39, 0x9C23, 0x9C37, 0x9BC0, + 0x9BCA, 0x9BC7, 0x9BFD, 0x9BD6, 0x9BEA, 0x9BEB, 0x9BE1, 0x9BE4, 0x9BE7, + 0x9BDD, 0x9BE2, 0x9BF0, 0x9BDB, 0x9BF4, 0x9BD4, 0x9C5D, 0x9C08, 0x9C10, + 0x9C0D, 0x9C12, 0x9C09, 0x9BFF, 0x9C20, 0x9C32, 0x9C2D, 0x9C28, 0x9C25, + 0x9C29, 0x9C33, 0x9C3E, 0x9C48, 0x9C3B, 0x9C35, 0x9C45, 0x9C56, 0x9C54, + 0x9C52, 0x9C67, 0x97C3, 0x97BD, 0x97C9, 0x9DBB, 0x9ACF, 0x9AD6, 0x9AD5, + 0x9B58, 0x9B4E, 0x9957, 0x995C, 0x9B22, 0x9EF7, 0x9EF2, 0x896C, 0x95C6, + 0x9336, 0x5F46, 0x8514, 0x7E94, 0x9F63, 0x5679, 0x9F15, 0x5641, 0x9AEE, + 0x8907, 0x7A40, 0x98B3, 0x95A4, 0x9B0D, 0x8FF4, 0x5F59, 0x7A6B, 0x98E2, + 0x50A2, 0x8591, 0x5118, 0x6372, 0x524B, 0x774F, 0x7E8D, 0x66C6, 0x77AD, + 0x9E75, 0x56C9, 0x9EF4, 0x6FDB, 0x61DE, 0x77C7, 0x7030, 0x9EB5, 0x884A, + 0x95E2, 0x97C6, 0x7C64, 0x7E34, 0x97A6, 0x9EAF, 0x56CC, 0x98B1, 0x6AAF, + 0x7F4E, 0x7CF0, 0x4FC2, 0x7E6B, 0x9E79, 0x56AE, 0x9B1A, 0x846F, 0x79A6, + 0x7C72, 0x9AD2, 0x96BB, 0x7DFB, 0x88FD, 0x7843, 0x2170, 0x2171, 0x2172, + 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x02CA, 0x02CB, + 0x02D9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, 0x2197, + 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, 0x2252, 0x2266, 0x2267, 0x22BF, + 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, + 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, + 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, + 0x256B, 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573, + 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x2589, + 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F, 0x2593, 0x2594, 0x2595, + 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012, + 0x301D, 0x301E, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, + 0x3028, 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, + 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, 0x2121, + 0x3231, 0x2010, 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, + 0x309E, 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50, + 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A, 0xFE5B, + 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0xFE62, 0xFE63, 0xFE64, + 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, 0x303E, 0x2FF0, 0x2FF1, + 0x2FF2, 0x2FF3, 0x2FF4, 0x2FF5, 0x2FF6, 0x2FF7, 0x2FF8, 0x2FF9, 0x2FFA, + 0x2FFB, 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, + 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, 0x4E33, + 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, 0x4E46, 0x4E4A, + 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, 0x4E63, 0x4E64, 0x4E65, + 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C, 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, + 0x4E74, 0x4E75, 0x4E76, 0x4E77, 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, + 0x4E7D, 0x4E7F, 0x4E80, 0x4E81, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A, + 0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4EA3, 0x4EAA, 0x4EAF, + 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9, 0x4EBC, 0x4EBD, + 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC, + 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, + 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, + 0x4F04, 0x4F05, 0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, + 0x4F14, 0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, + 0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, + 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0x4F47, 0x4F48, + 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56, 0x4F61, 0x4F62, + 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E, 0x4F71, 0x4F72, 0x4F75, + 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85, + 0x4F87, 0x4F8A, 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F98, + 0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0x4FA4, 0x4FAB, + 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0x4FB6, 0x4FB7, 0x4FB8, + 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC6, + 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, + 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, + 0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB, + 0x4FFC, 0x4FFD, 0x4FFF, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5007, + 0x5008, 0x500A, 0x500E, 0x5010, 0x5013, 0x5015, 0x5016, 0x5017, 0x501B, + 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502F, 0x5030, + 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038, 0x5039, + 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, + 0x504A, 0x504B, 0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, + 0x5057, 0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061, + 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A, 0x506B, + 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073, 0x5078, 0x5079, + 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, + 0x5089, 0x508A, 0x508B, 0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092, + 0x5093, 0x5094, 0x5095, 0x5097, 0x509A, 0x509B, 0x509C, 0x509D, 0x509E, + 0x509F, 0x50A0, 0x50A1, 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AE, 0x50AF, + 0x50B0, 0x50B1, 0x50B6, 0x50B8, 0x50B9, 0x50BC, 0x50BD, 0x50BF, 0x50C0, + 0x50C1, 0x50C3, 0x50C4, 0x50C6, 0x50C7, 0x50C8, 0x50CA, 0x50CB, 0x50CC, + 0x50CD, 0x50CE, 0x50D0, 0x50D2, 0x50D3, 0x50D4, 0x50D7, 0x50D8, 0x50D9, + 0x50DB, 0x50DC, 0x50DD, 0x50DF, 0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4, + 0x50E9, 0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6, + 0x50F7, 0x50F8, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF, 0x5101, 0x5103, + 0x5105, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5111, 0x5113, 0x5116, + 0x5117, 0x5119, 0x511A, 0x511B, 0x511C, 0x511D, 0x511E, 0x5120, 0x5122, + 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512B, 0x512C, + 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5133, 0x5134, 0x5135, 0x5136, + 0x5138, 0x5139, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E, + 0x514F, 0x5150, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, 0x515D, 0x515E, + 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x516A, 0x516F, + 0x5172, 0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, 0x5187, 0x518A, + 0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A, + 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9, + 0x51AA, 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF, + 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CE, 0x51D0, 0x51D2, + 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7, 0x51D8, 0x51D9, 0x51DA, 0x51DC, + 0x51DE, 0x51DF, 0x51E2, 0x51E3, 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, + 0x51EA, 0x51EC, 0x51EE, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, + 0x5209, 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C, + 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522A, + 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, 0x523E, 0x5245, + 0x5246, 0x5248, 0x5249, 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, + 0x5258, 0x5259, 0x525A, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, 0x5264, + 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x5270, 0x5271, 0x5273, 0x5276, + 0x5277, 0x5278, 0x5279, 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5284, + 0x5285, 0x5286, 0x528B, 0x528E, 0x528F, 0x5292, 0x5294, 0x5295, 0x5296, + 0x5297, 0x5298, 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, + 0x52AE, 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9, + 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C2, 0x52C4, 0x52C5, 0x52C6, + 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, 0x52D1, 0x52D3, 0x52D4, + 0x52D7, 0x52DA, 0x52DC, 0x52E0, 0x52E1, 0x52E3, 0x52E5, 0x52E6, 0x52E7, + 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED, 0x52EE, 0x52EF, 0x52F2, + 0x52F3, 0x52F4, 0x52F6, 0x52F7, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, + 0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E, 0x5311, + 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E, 0x531F, 0x5322, + 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, 0x532C, 0x5330, 0x5332, + 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5342, + 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5358, 0x5359, 0x535B, + 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D, 0x5372, 0x5376, 0x5379, + 0x537B, 0x537C, 0x537D, 0x537E, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388, + 0x538A, 0x538E, 0x538F, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, + 0x5397, 0x539B, 0x539C, 0x539E, 0x53A1, 0x53A4, 0x53A7, 0x53AA, 0x53AB, + 0x53AC, 0x53AF, 0x53B0, 0x53B1, 0x53B3, 0x53B5, 0x53B7, 0x53B8, 0x53B9, + 0x53BA, 0x53BC, 0x53BD, 0x53BE, 0x53C0, 0x53C4, 0x53C5, 0x53C6, 0x53C7, + 0x53CE, 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD, + 0x53DE, 0x53E1, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, 0x5400, 0x5402, + 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, 0x541A, 0x541C, 0x5422, + 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, 0x5436, 0x5437, 0x543A, 0x543D, + 0x543F, 0x5441, 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, + 0x544E, 0x544F, 0x5451, 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, + 0x5463, 0x5465, 0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, + 0x546F, 0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483, + 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, 0x5497, + 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1, 0x54A2, 0x54A5, 0x54AE, + 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, 0x54B9, 0x54BA, 0x54BE, 0x54C3, + 0x54C5, 0x54CA, 0x54CB, 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E2, 0x54E3, + 0x54E4, 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6, + 0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, 0x5505, + 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, 0x5512, 0x5513, 0x5515, + 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, 0x551C, 0x551D, 0x551E, 0x551F, + 0x5521, 0x5525, 0x5526, 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, + 0x5535, 0x5536, 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, + 0x5545, 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x5551, 0x5552, + 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B, 0x555D, 0x555F, 0x5560, + 0x5562, 0x5563, 0x5568, 0x5569, 0x556B, 0x556F, 0x5570, 0x5571, 0x5572, + 0x5573, 0x5574, 0x5579, 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, + 0x558D, 0x558E, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, + 0x559B, 0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6, + 0x55A8, 0x55A9, 0x55AB, 0x55AD, 0x55AF, 0x55B0, 0x55B4, 0x55B6, 0x55B8, + 0x55BA, 0x55BC, 0x55BF, 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C8, 0x55CA, + 0x55CB, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, 0x55DB, 0x55DE, + 0x55E0, 0x55E2, 0x55E7, 0x55ED, 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F8, + 0x55F9, 0x55FA, 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605, + 0x5607, 0x560A, 0x560B, 0x5610, 0x5611, 0x5612, 0x5613, 0x5615, 0x5619, + 0x561A, 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x562A, + 0x562B, 0x5633, 0x5637, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5642, + 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A, 0x564B, + 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B, + 0x565E, 0x565F, 0x5661, 0x5663, 0x5667, 0x566D, 0x566E, 0x5670, 0x5673, + 0x5675, 0x5677, 0x567A, 0x567D, 0x567E, 0x567F, 0x5681, 0x5682, 0x5683, + 0x5684, 0x5688, 0x5689, 0x568A, 0x568B, 0x568D, 0x5690, 0x5691, 0x5692, + 0x5694, 0x5696, 0x5697, 0x5698, 0x569A, 0x569B, 0x569C, 0x569D, 0x569E, + 0x569F, 0x56A0, 0x56A1, 0x56A2, 0x56A4, 0x56A5, 0x56A7, 0x56A9, 0x56AA, + 0x56AB, 0x56AC, 0x56AD, 0x56B0, 0x56B1, 0x56B2, 0x56B5, 0x56B8, 0x56B9, + 0x56BA, 0x56BB, 0x56BD, 0x56BE, 0x56BF, 0x56C3, 0x56C4, 0x56C6, 0x56C7, + 0x56CB, 0x56CD, 0x56CE, 0x56CF, 0x56D0, 0x56D2, 0x56D3, 0x56D5, 0x56D6, + 0x56D8, 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9, + 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, 0x56F8, + 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x570C, 0x570E, 0x570F, + 0x5710, 0x5711, 0x5714, 0x5715, 0x5717, 0x5719, 0x571A, 0x571B, 0x571D, + 0x571E, 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B, + 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, + 0x573F, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, + 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, + 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775, + 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780, 0x5781, 0x5787, + 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F, 0x5790, 0x5791, 0x5794, + 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579A, 0x579C, 0x579D, 0x579E, + 0x579F, 0x57A5, 0x57A8, 0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, + 0x57B5, 0x57B6, 0x57B7, 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, + 0x57BF, 0x57C0, 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, + 0x57CA, 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB, + 0x57DC, 0x57DE, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7, 0x57E8, 0x57E9, + 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1, 0x57F2, 0x57F3, 0x57F5, + 0x57F6, 0x57FB, 0x57FC, 0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, 0x5808, + 0x5809, 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5817, + 0x5818, 0x581A, 0x581B, 0x581C, 0x581F, 0x5822, 0x5823, 0x5825, 0x5826, + 0x5827, 0x5828, 0x5829, 0x582B, 0x582C, 0x582D, 0x582E, 0x5832, 0x5833, + 0x5836, 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D, 0x583E, + 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, 0x5847, 0x5848, + 0x5849, 0x584E, 0x5850, 0x5853, 0x5855, 0x5856, 0x5859, 0x585A, 0x585B, + 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5863, 0x5866, 0x5867, 0x5868, + 0x5869, 0x586A, 0x586D, 0x586E, 0x586F, 0x5870, 0x5871, 0x5872, 0x5873, + 0x5874, 0x5876, 0x5877, 0x5878, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, + 0x5882, 0x5884, 0x5886, 0x5887, 0x5888, 0x588B, 0x588C, 0x588D, 0x588E, + 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589B, + 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, + 0x58AA, 0x58AB, 0x58AC, 0x58AD, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B4, + 0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BD, 0x58BF, 0x58C0, + 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC, + 0x58CD, 0x58CE, 0x58CF, 0x58D0, 0x58D2, 0x58D4, 0x58D6, 0x58D7, 0x58DB, + 0x58DC, 0x58DD, 0x58E1, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58EA, + 0x58ED, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0x58FB, 0x58FC, + 0x58FE, 0x58FF, 0x5900, 0x5901, 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, + 0x590A, 0x590B, 0x590C, 0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, + 0x5918, 0x591B, 0x591D, 0x591E, 0x5920, 0x5921, 0x5923, 0x5926, 0x5928, + 0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B, 0x593D, 0x593F, + 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, 0x594C, 0x594D, 0x5950, 0x5952, + 0x5953, 0x5959, 0x595B, 0x595C, 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, + 0x5964, 0x5966, 0x5967, 0x5968, 0x596B, 0x596D, 0x596F, 0x5970, 0x5971, + 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F, 0x5980, + 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990, 0x5991, 0x5994, + 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599F, 0x59A0, 0x59A1, 0x59A2, + 0x59A6, 0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5, + 0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, 0x59C1, + 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD, + 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, 0x59E0, + 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, 0x59EB, 0x59ED, + 0x59EE, 0x59EF, 0x59F0, 0x59F1, 0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6, + 0x59F7, 0x59F8, 0x59FA, 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, + 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16, + 0x5A17, 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24, + 0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, 0x5A2F, + 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D, + 0x5A3E, 0x5A3F, 0x5A42, 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0x5A4B, + 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, 0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54, + 0x5A56, 0x5A57, 0x5A58, 0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F, + 0x5A60, 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A68, 0x5A69, 0x5A6B, 0x5A6C, + 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73, 0x5A78, 0x5A79, 0x5A7B, + 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81, 0x5A82, 0x5A83, 0x5A84, 0x5A85, + 0x5A86, 0x5A87, 0x5A88, 0x5A89, 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E, + 0x5A8F, 0x5A90, 0x5A91, 0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98, + 0x5A99, 0x5A9C, 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3, + 0x5AA4, 0x5AA5, 0x5AA6, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC, 0x5AAD, 0x5AAE, + 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB, + 0x5ABC, 0x5ABF, 0x5AC0, 0x5AC3, 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, + 0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5, + 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5, + 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, 0x5AF2, + 0x5AF3, 0x5AF4, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9, 0x5AFA, 0x5AFC, 0x5AFD, + 0x5AFE, 0x5AFF, 0x5B01, 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07, + 0x5B0A, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12, 0x5B13, 0x5B14, + 0x5B15, 0x5B18, 0x5B1A, 0x5B1B, 0x5B1C, 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, + 0x5B22, 0x5B23, 0x5B24, 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2B, + 0x5B2C, 0x5B2D, 0x5B2E, 0x5B2F, 0x5B31, 0x5B33, 0x5B35, 0x5B36, 0x5B39, + 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F, 0x5B41, 0x5B42, 0x5B43, + 0x5B44, 0x5B45, 0x5B46, 0x5B47, 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4D, + 0x5B4E, 0x5B4F, 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, + 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B79, 0x5B7B, + 0x5B7C, 0x5B7E, 0x5B82, 0x5B86, 0x5B8A, 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, + 0x5B92, 0x5B94, 0x5B96, 0x5B9F, 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, + 0x5BAE, 0x5BAF, 0x5BB1, 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, + 0x5BC1, 0x5BC3, 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF, + 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, 0x5BDB, + 0x5BDC, 0x5BE0, 0x5BE3, 0x5BEA, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3, + 0x5BF4, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, 0x5C03, 0x5C05, 0x5C0C, + 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, 0x5C20, + 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, 0x5C2D, 0x5C2E, + 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, 0x5C43, 0x5C44, 0x5C46, + 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, + 0x5C5A, 0x5C5B, 0x5C5C, 0x5C5D, 0x5C5F, 0x5C67, 0x5C69, 0x5C6A, 0x5C6B, + 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75, 0x5C76, 0x5C77, 0x5C78, + 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, 0x5C83, 0x5C84, 0x5C85, 0x5C86, + 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, + 0x5C9D, 0x5C9E, 0x5C9F, 0x5CA0, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8, + 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, 0x5CBA, + 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5, 0x5CC6, 0x5CC7, + 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE, 0x5CCF, 0x5CD0, 0x5CD1, + 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7, 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, + 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0, 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, + 0x5CEC, 0x5CEE, 0x5CEF, 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF5, 0x5CF7, 0x5CF8, + 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFE, 0x5CFF, 0x5D00, 0x5D01, 0x5D04, 0x5D05, + 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, 0x5D0F, 0x5D10, 0x5D11, 0x5D12, + 0x5D13, 0x5D15, 0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, + 0x5D21, 0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2F, 0x5D30, + 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 0x5D39, 0x5D3A, + 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, 0x5D43, 0x5D44, 0x5D45, + 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, 0x5D4F, 0x5D51, 0x5D52, 0x5D53, + 0x5D54, 0x5D55, 0x5D56, 0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, + 0x5D60, 0x5D61, 0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, + 0x5D6A, 0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76, + 0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, 0x5D7F, + 0x5D80, 0x5D83, 0x5D85, 0x5D86, 0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, + 0x5D8D, 0x5D8E, 0x5D8F, 0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, + 0x5D96, 0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA1, 0x5DA2, + 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA8, 0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC, + 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, 0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5, + 0x5DB6, 0x5DB9, 0x5DBB, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, 0x5DC2, + 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, 0x5DCC, 0x5DCE, + 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD3, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, + 0x5DDA, 0x5DDC, 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED, + 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00, + 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13, + 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, 0x5E22, 0x5E23, 0x5E24, 0x5E28, + 0x5E29, 0x5E2A, 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E34, 0x5E35, 0x5E39, + 0x5E3A, 0x5E3E, 0x5E3F, 0x5E41, 0x5E46, 0x5E47, 0x5E48, 0x5E49, 0x5E4A, + 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, 0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56, + 0x5E59, 0x5E5A, 0x5E5C, 0x5E5D, 0x5E60, 0x5E64, 0x5E65, 0x5E66, 0x5E67, + 0x5E68, 0x5E69, 0x5E6A, 0x5E6D, 0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75, + 0x5E77, 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, + 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, 0x5EA4, + 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAC, 0x5EAE, 0x5EAF, 0x5EB0, 0x5EB1, 0x5EB2, + 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, 0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2, + 0x5EC3, 0x5EC4, 0x5EC5, 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD, + 0x5ECE, 0x5ECF, 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, + 0x5EDC, 0x5EDD, 0x5EDE, 0x5EE4, 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB, + 0x5EED, 0x5EEE, 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF5, 0x5EF8, 0x5EF9, + 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D, + 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D, + 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, + 0x5F30, 0x5F32, 0x5F34, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E, + 0x5F3F, 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F47, 0x5F49, 0x5F4A, + 0x5F4B, 0x5F4D, 0x5F4F, 0x5F51, 0x5F54, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E, + 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, + 0x5F72, 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F, + 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F93, 0x5F94, 0x5F96, 0x5F9A, + 0x5F9B, 0x5F9D, 0x5F9F, 0x5FA2, 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, + 0x5FAB, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6, + 0x5FB8, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7, + 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB, + 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9, + 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, + 0x5FFA, 0x5FFC, 0x6007, 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, + 0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024, + 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036, + 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044, 0x6045, + 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E, 0x604F, 0x6051, + 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B, 0x605C, 0x605E, 0x605F, + 0x6060, 0x6061, 0x6065, 0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075, + 0x6077, 0x607E, 0x6080, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, + 0x608A, 0x608B, 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, + 0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7, + 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B7, 0x60B9, 0x60BA, 0x60BD, + 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2, 0x60C3, 0x60C4, 0x60C7, 0x60C8, + 0x60C9, 0x60CC, 0x60CD, 0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, + 0x60D6, 0x60D7, 0x60D9, 0x60DB, 0x60DE, 0x60E2, 0x60E3, 0x60E4, 0x60E5, + 0x60EA, 0x60F5, 0x60F7, 0x60F8, 0x60FC, 0x60FD, 0x60FE, 0x60FF, 0x6102, + 0x6103, 0x6104, 0x6105, 0x6107, 0x610A, 0x610B, 0x610C, 0x6110, 0x6111, + 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611D, 0x611E, + 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E, + 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6135, 0x6136, 0x6138, 0x6139, + 0x613A, 0x613B, 0x613C, 0x613D, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, + 0x6145, 0x6146, 0x6147, 0x6149, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153, + 0x6154, 0x6156, 0x6157, 0x6159, 0x615B, 0x615C, 0x615E, 0x6160, 0x6161, + 0x6165, 0x6166, 0x6169, 0x616C, 0x616D, 0x616F, 0x6171, 0x6172, 0x6174, + 0x6178, 0x6179, 0x617A, 0x617B, 0x617C, 0x617D, 0x617E, 0x617F, 0x6180, + 0x6181, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618C, + 0x618D, 0x618F, 0x6193, 0x6195, 0x6196, 0x6197, 0x6198, 0x6199, 0x619B, + 0x619C, 0x619E, 0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A5, 0x61A6, + 0x61AA, 0x61AD, 0x61AF, 0x61B0, 0x61B1, 0x61B3, 0x61B4, 0x61B5, 0x61B8, + 0x61B9, 0x61BA, 0x61BB, 0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, + 0x61C4, 0x61C5, 0x61C6, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3, 0x61D5, + 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, 0x61DC, 0x61DD, 0x61E0, + 0x61E1, 0x61E2, 0x61E4, 0x61E5, 0x61E7, 0x61E9, 0x61EA, 0x61EB, 0x61EC, + 0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F3, 0x61F4, 0x61F9, 0x61FB, + 0x61FD, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6209, 0x6213, 0x6219, + 0x621C, 0x621D, 0x621E, 0x6220, 0x6223, 0x6226, 0x6228, 0x6229, 0x622B, + 0x622D, 0x622F, 0x6231, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B, + 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0x624F, 0x6250, 0x6255, + 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, 0x625D, 0x625E, 0x625F, 0x6260, + 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, + 0x6277, 0x6278, 0x627A, 0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285, + 0x6286, 0x6287, 0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, + 0x6294, 0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, + 0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6, + 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0x62C3, 0x62CB, 0x62CF, + 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, 0x62EA, 0x62EB, + 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303, + 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310, + 0x6312, 0x6313, 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, + 0x6327, 0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334, + 0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633F, 0x6340, 0x6341, + 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356, + 0x6357, 0x6358, 0x6359, 0x635A, 0x635B, 0x635C, 0x635D, 0x6360, 0x6364, + 0x6365, 0x6366, 0x636A, 0x636C, 0x636F, 0x6370, 0x6373, 0x6374, 0x6375, + 0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6385, 0x6386, + 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399, 0x639A, + 0x639B, 0x639C, 0x639D, 0x639E, 0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB, + 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF, + 0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC, + 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9, 0x63DB, 0x63DC, + 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, 0x63EB, + 0x63EC, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA, + 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, + 0x640A, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6418, 0x6419, 0x641A, + 0x641D, 0x641F, 0x6422, 0x6423, 0x6424, 0x6425, 0x6427, 0x6428, 0x6429, + 0x642B, 0x642E, 0x642F, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6437, + 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449, + 0x644B, 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6453, 0x6455, 0x6456, + 0x6457, 0x6459, 0x645A, 0x645B, 0x645D, 0x6460, 0x6461, 0x6462, 0x6463, + 0x6464, 0x6465, 0x6466, 0x6468, 0x646A, 0x646B, 0x646C, 0x646E, 0x6470, + 0x6471, 0x6472, 0x6474, 0x6475, 0x6477, 0x647C, 0x647D, 0x647E, 0x647F, + 0x6480, 0x6481, 0x6483, 0x6486, 0x6489, 0x648A, 0x648B, 0x648C, 0x648D, + 0x648E, 0x648F, 0x6490, 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C, + 0x649D, 0x64A0, 0x64A1, 0x64A2, 0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AF, + 0x64B1, 0x64B4, 0x64B6, 0x64B9, 0x64BD, 0x64C3, 0x64C6, 0x64C8, 0x64C9, + 0x64CC, 0x64CF, 0x64D1, 0x64D3, 0x64D5, 0x64D6, 0x64D9, 0x64DB, 0x64DC, + 0x64DD, 0x64DF, 0x64E1, 0x64E3, 0x64E5, 0x64E7, 0x64E8, 0x64E9, 0x64EA, + 0x64EB, 0x64ED, 0x64EE, 0x64F3, 0x64F5, 0x64F6, 0x64F8, 0x64F9, 0x64FD, + 0x64FF, 0x6501, 0x6502, 0x6503, 0x6505, 0x6507, 0x6508, 0x650A, 0x650B, + 0x650C, 0x650D, 0x650E, 0x6510, 0x6511, 0x6513, 0x6515, 0x6517, 0x651A, + 0x651C, 0x651E, 0x651F, 0x6520, 0x6521, 0x6526, 0x6527, 0x6528, 0x6529, + 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A, 0x653C, 0x653D, + 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547, 0x654A, 0x654B, + 0x654D, 0x654E, 0x6550, 0x6552, 0x6553, 0x6554, 0x6558, 0x655A, 0x655C, + 0x655F, 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, + 0x656D, 0x656E, 0x656F, 0x6571, 0x6573, 0x6576, 0x6579, 0x657A, 0x657B, + 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6584, 0x6585, 0x6586, + 0x6588, 0x6589, 0x658A, 0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6596, + 0x6598, 0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, + 0x65AA, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6, 0x65B8, + 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2, 0x65C7, 0x65C8, 0x65C9, + 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3, 0x65D4, 0x65D5, 0x65D8, 0x65D9, + 0x65DA, 0x65DB, 0x65DC, 0x65DD, 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, + 0x65EA, 0x65EB, 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, + 0x65FC, 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, + 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, 0x6618, + 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, + 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, 0x6632, 0x6633, 0x6637, + 0x6638, 0x6639, 0x663A, 0x663B, 0x663D, 0x663F, 0x6640, 0x6644, 0x6645, + 0x6646, 0x6647, 0x6648, 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, + 0x6658, 0x6659, 0x665B, 0x665C, 0x665E, 0x6660, 0x6662, 0x6663, 0x6665, + 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, 0x6672, 0x6673, + 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, 0x667F, 0x6680, 0x6681, + 0x6683, 0x6685, 0x6686, 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, + 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, + 0x669E, 0x669F, 0x66A0, 0x66A1, 0x66A3, 0x66A4, 0x66A5, 0x66A6, 0x66A9, + 0x66AA, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, 0x66B2, 0x66B3, 0x66B5, + 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, 0x66BC, 0x66BD, 0x66BF, 0x66C0, + 0x66C1, 0x66C2, 0x66C3, 0x66C5, 0x66C8, 0x66CA, 0x66CB, 0x66CC, 0x66CD, + 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, 0x66D5, 0x66D7, + 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5, + 0x66E7, 0x66E8, 0x66EA, 0x66EB, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, + 0x66F6, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6704, 0x6705, 0x6706, + 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, 0x6713, 0x6716, 0x6718, + 0x6719, 0x671A, 0x671C, 0x671E, 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, + 0x6725, 0x6729, 0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, + 0x6739, 0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, + 0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, + 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676B, + 0x676C, 0x676E, 0x6774, 0x6776, 0x6778, 0x6779, 0x677A, 0x677B, 0x677D, + 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, + 0x678E, 0x678F, 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, + 0x679F, 0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, + 0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, 0x67BF, + 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, 0x67CA, 0x67CB, + 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, 0x67DB, 0x67DF, 0x67E1, + 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, 0x67EB, 0x67ED, 0x67EE, + 0x67F2, 0x67F5, 0x67F6, 0x67F7, 0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC, + 0x67FE, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, + 0x6814, 0x6815, 0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, + 0x6820, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B, + 0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836, + 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F, 0x6852, 0x6856, + 0x6857, 0x6858, 0x6859, 0x685A, 0x685B, 0x685C, 0x685D, 0x685E, 0x685F, + 0x686A, 0x686C, 0x686D, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872, 0x6873, + 0x6875, 0x6878, 0x6879, 0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F, + 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C, + 0x688D, 0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6899, + 0x689A, 0x689B, 0x689C, 0x689E, 0x68A0, 0x68A1, 0x68A3, 0x68A4, 0x68A5, + 0x68A9, 0x68AA, 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, + 0x68B7, 0x68B8, 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF, + 0x68C1, 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC, + 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D9, 0x68DB, 0x68DC, + 0x68DD, 0x68DE, 0x68E1, 0x68E2, 0x68E4, 0x68E5, 0x68E6, 0x68E8, 0x68E9, + 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6, + 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903, + 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x6911, 0x6913, + 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691A, 0x691B, 0x691C, + 0x691D, 0x691E, 0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928, + 0x6929, 0x692A, 0x692B, 0x692C, 0x692E, 0x692F, 0x6931, 0x6932, 0x6933, + 0x6935, 0x6936, 0x6937, 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940, + 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694B, + 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6955, 0x6956, + 0x6958, 0x6959, 0x695B, 0x695C, 0x695F, 0x6961, 0x6962, 0x6964, 0x6965, + 0x6967, 0x6969, 0x696A, 0x696C, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974, + 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983, 0x6985, + 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991, 0x6992, 0x6993, + 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E, 0x699F, 0x69A0, 0x69A1, + 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6, 0x69A9, 0x69AC, 0x69AF, 0x69B0, + 0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD, + 0x69BE, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6, 0x69C7, 0x69C8, + 0x69C9, 0x69CF, 0x69D1, 0x69D2, 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, + 0x69D9, 0x69DA, 0x69DC, 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, + 0x69E5, 0x69E6, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF, + 0x69F0, 0x69F1, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8, 0x69F9, 0x69FA, + 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A03, 0x6A04, 0x6A06, 0x6A07, 0x6A08, + 0x6A09, 0x6A0B, 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, + 0x6A14, 0x6A15, 0x6A16, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D, 0x6A20, 0x6A22, + 0x6A24, 0x6A25, 0x6A26, 0x6A27, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, + 0x6A30, 0x6A32, 0x6A33, 0x6A34, 0x6A36, 0x6A37, 0x6A3B, 0x6A3C, 0x6A3F, + 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A49, 0x6A4A, 0x6A4C, + 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51, 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, + 0x6A57, 0x6A5A, 0x6A5C, 0x6A5D, 0x6A5E, 0x6A60, 0x6A63, 0x6A64, 0x6A66, + 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D, 0x6A6E, 0x6A6F, + 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76, 0x6A77, 0x6A78, 0x6A7A, + 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81, 0x6A82, 0x6A83, 0x6A85, 0x6A86, + 0x6A87, 0x6A88, 0x6A8A, 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, + 0x6A95, 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9D, 0x6A9E, 0x6A9F, + 0x6AA1, 0x6AA4, 0x6AA5, 0x6AA6, 0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, + 0x6AB0, 0x6AB1, 0x6AB2, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB9, 0x6ABA, + 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, 0x6AC2, 0x6AC4, 0x6AC5, + 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, 0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, + 0x6ACF, 0x6AD0, 0x6AD1, 0x6AD2, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, + 0x6AD9, 0x6ADC, 0x6AE0, 0x6AE1, 0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, + 0x6AE9, 0x6AEB, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, 0x6AF2, 0x6AF4, + 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF9, 0x6AFA, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, + 0x6B00, 0x6B01, 0x6B02, 0x6B03, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09, + 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B10, 0x6B11, 0x6B13, 0x6B14, 0x6B15, + 0x6B17, 0x6B18, 0x6B19, 0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1F, 0x6B25, + 0x6B26, 0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E, 0x6B2F, + 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, 0x6B3C, + 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, 0x6B48, 0x6B4A, 0x6B4B, + 0x6B4D, 0x6B4E, 0x6B4F, 0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56, + 0x6B57, 0x6B58, 0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B60, 0x6B68, + 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, 0x6B71, 0x6B73, + 0x6B74, 0x6B75, 0x6B76, 0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, + 0x6B88, 0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, + 0x6B99, 0x6B9C, 0x6B9D, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3, 0x6BA5, 0x6BA6, + 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAC, 0x6BAD, 0x6BB0, 0x6BB1, 0x6BB6, 0x6BB8, + 0x6BB9, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC7, 0x6BC8, + 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC, + 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, + 0x6BE7, 0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, + 0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, 0x6C00, + 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0E, 0x6C12, + 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C25, 0x6C2D, 0x6C31, 0x6C33, + 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43, + 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51, + 0x6C52, 0x6C53, 0x6C56, 0x6C58, 0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65, + 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73, + 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84, + 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96, + 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8, + 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0, + 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE, + 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, + 0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9, + 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A, + 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18, + 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24, 0x6D26, + 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37, + 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50, + 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, + 0x6D64, 0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, + 0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F, + 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F, + 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2, + 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7, + 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD, 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, + 0x6DC8, 0x6DC9, 0x6DCA, 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, + 0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3, + 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2, 0x6DF4, + 0x6DF8, 0x6DFD, 0x6DFE, 0x6DFF, 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, + 0x6E06, 0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, + 0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E27, 0x6E28, + 0x6E2A, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35, 0x6E36, 0x6E37, 0x6E39, + 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3F, 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, + 0x6E47, 0x6E48, 0x6E49, 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, + 0x6E52, 0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E60, 0x6E61, + 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69, 0x6E6A, + 0x6E6C, 0x6E6D, 0x6E70, 0x6E71, 0x6E72, 0x6E73, 0x6E74, 0x6E75, 0x6E76, + 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B, 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, + 0x6E82, 0x6E84, 0x6E87, 0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, + 0x6E91, 0x6E92, 0x6E93, 0x6E94, 0x6E95, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, + 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9, 0x6EAB, + 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8, 0x6EB9, 0x6EBC, + 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECD, + 0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3, + 0x6EE7, 0x6EEA, 0x6EEB, 0x6EED, 0x6EEE, 0x6EF0, 0x6EF1, 0x6EF3, 0x6EF5, + 0x6EF6, 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6F00, 0x6F03, 0x6F04, + 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C, 0x6F0D, 0x6F0E, 0x6F10, + 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18, 0x6F19, 0x6F1B, 0x6F1C, 0x6F1D, + 0x6F1E, 0x6F1F, 0x6F21, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2E, 0x6F30, + 0x6F34, 0x6F35, 0x6F37, 0x6F39, 0x6F3A, 0x6F3B, 0x6F3C, 0x6F3D, 0x6F40, + 0x6F42, 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E, + 0x6F4F, 0x6F50, 0x6F52, 0x6F53, 0x6F55, 0x6F56, 0x6F57, 0x6F5A, 0x6F5B, + 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, 0x6F63, 0x6F65, 0x6F67, 0x6F68, 0x6F69, + 0x6F6A, 0x6F6B, 0x6F6C, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F79, 0x6F7B, + 0x6F7D, 0x6F7E, 0x6F81, 0x6F82, 0x6F83, 0x6F85, 0x6F8A, 0x6F8B, 0x6F8F, + 0x6F90, 0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F98, 0x6F99, + 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA2, 0x6FA3, 0x6FA5, 0x6FA6, + 0x6FA8, 0x6FAA, 0x6FAB, 0x6FAC, 0x6FAD, 0x6FAF, 0x6FB0, 0x6FB2, 0x6FB4, + 0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, 0x6FBF, + 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, 0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD, + 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, 0x6FD4, 0x6FD6, 0x6FD7, 0x6FD9, 0x6FDA, + 0x6FDC, 0x6FDD, 0x6FE2, 0x6FE3, 0x6FE5, 0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9, + 0x6FEA, 0x6FEC, 0x6FED, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7, + 0x6FF8, 0x6FF9, 0x6FFB, 0x6FFD, 0x6FFF, 0x7000, 0x7001, 0x7002, 0x7003, + 0x7004, 0x7007, 0x7008, 0x700A, 0x700C, 0x700D, 0x700E, 0x7010, 0x7012, + 0x7013, 0x7014, 0x7016, 0x7017, 0x7019, 0x701C, 0x701E, 0x7021, 0x7022, + 0x7024, 0x7025, 0x7026, 0x7029, 0x702A, 0x702B, 0x702C, 0x702D, 0x702E, + 0x702F, 0x7031, 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B, + 0x703C, 0x703D, 0x703F, 0x7040, 0x7041, 0x7042, 0x7045, 0x7046, 0x7047, + 0x7048, 0x7049, 0x704A, 0x704B, 0x704D, 0x704E, 0x7050, 0x7052, 0x7053, + 0x7054, 0x7056, 0x7057, 0x7059, 0x705A, 0x705B, 0x705C, 0x705F, 0x7060, + 0x7061, 0x7062, 0x7065, 0x7066, 0x7068, 0x7069, 0x706A, 0x706E, 0x7071, + 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081, + 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D, + 0x708F, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E, + 0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, 0x70A7, + 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA, + 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70CB, 0x70CC, + 0x70CD, 0x70CE, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6, + 0x70D7, 0x70DA, 0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, + 0x70E5, 0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F5, 0x70F6, + 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100, 0x7101, 0x7102, + 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, 0x710B, 0x710C, 0x710D, + 0x710E, 0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x711B, 0x711C, 0x711D, + 0x711E, 0x711F, 0x7120, 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, + 0x7129, 0x712A, 0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134, + 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D, 0x713E, + 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147, 0x7148, + 0x714B, 0x714D, 0x714F, 0x7150, 0x7151, 0x7153, 0x7154, 0x7155, 0x7156, + 0x7157, 0x7158, 0x7159, 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161, + 0x7163, 0x7165, 0x716A, 0x716B, 0x716D, 0x716F, 0x7170, 0x7171, 0x7174, + 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, 0x717E, 0x717F, 0x7180, + 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718B, + 0x718C, 0x718D, 0x718E, 0x7190, 0x7191, 0x7193, 0x7195, 0x7196, 0x719A, + 0x719B, 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5, + 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF, 0x71B0, + 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA, 0x71BB, 0x71BC, 0x71BD, + 0x71BF, 0x71C0, 0x71C2, 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C9, 0x71CA, + 0x71CB, 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D3, 0x71D6, 0x71D7, + 0x71D8, 0x71DA, 0x71DB, 0x71DD, 0x71DE, 0x71E1, 0x71E2, 0x71E3, 0x71E4, + 0x71E8, 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71EF, 0x71F0, 0x71F1, 0x71F2, + 0x71F3, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA, 0x71FB, 0x71FD, 0x71FF, + 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, + 0x720A, 0x720B, 0x720C, 0x720E, 0x720F, 0x7211, 0x7212, 0x7213, 0x7214, + 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A, 0x721C, 0x721E, 0x721F, + 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, + 0x722B, 0x722D, 0x722E, 0x722F, 0x7233, 0x7234, 0x723C, 0x7240, 0x7241, + 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A, 0x724B, 0x724E, + 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, 0x725A, 0x725C, + 0x725E, 0x7260, 0x7263, 0x7264, 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, + 0x726D, 0x7270, 0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, + 0x727C, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C, + 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7297, 0x7298, 0x7299, + 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0, 0x72A1, 0x72A3, 0x72A4, + 0x72A5, 0x72A6, 0x72A8, 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, + 0x72B3, 0x72B5, 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C5, + 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, 0x72D3, + 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB, 0x72DC, 0x72DD, 0x72DF, + 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, 0x72E7, 0x72EA, 0x72EB, 0x72F5, + 0x72F6, 0x72FE, 0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, + 0x7308, 0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, + 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, 0x7326, + 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, 0x7335, 0x733A, + 0x733C, 0x733D, 0x7340, 0x7342, 0x7343, 0x7346, 0x7347, 0x7348, 0x7349, + 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, 0x7354, 0x7355, + 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C, 0x735D, 0x735E, 0x735F, + 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7369, 0x736E, + 0x7371, 0x7373, 0x7374, 0x7376, 0x7379, 0x737D, 0x737F, 0x7381, 0x7382, + 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F, 0x7390, + 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, 0x739A, 0x739C, + 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4, 0x73A5, 0x73A6, 0x73A7, + 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8, + 0x73B9, 0x73BC, 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, + 0x73C6, 0x73C7, 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5, + 0x73D6, 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1, + 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC, 0x73EE, + 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6, 0x73F7, 0x73F8, + 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FF, 0x7400, 0x7401, 0x7402, + 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, 0x740D, 0x740E, 0x7411, 0x7412, + 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, + 0x741E, 0x741F, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, + 0x742D, 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, + 0x743D, 0x743E, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, + 0x7448, 0x7449, 0x744A, 0x744C, 0x744D, 0x744E, 0x744F, 0x7450, 0x7451, + 0x7452, 0x7453, 0x7454, 0x7456, 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, + 0x7464, 0x7465, 0x7466, 0x7467, 0x7468, 0x746B, 0x746C, 0x746E, 0x746F, + 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747A, 0x747B, + 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486, 0x7488, 0x748A, + 0x748C, 0x748D, 0x748F, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, + 0x7497, 0x7498, 0x7499, 0x749A, 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, + 0x74A2, 0x74A4, 0x74A5, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF, + 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7, 0x74B8, 0x74B9, + 0x74BB, 0x74BC, 0x74BE, 0x74BF, 0x74C0, 0x74C1, 0x74C2, 0x74C3, 0x74C4, + 0x74C5, 0x74C6, 0x74C7, 0x74C8, 0x74C9, 0x74CB, 0x74CC, 0x74CD, 0x74CE, + 0x74D0, 0x74D1, 0x74D3, 0x74D5, 0x74D6, 0x74D7, 0x74D8, 0x74D9, 0x74DB, + 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, 0x74E8, 0x74E9, 0x74EA, 0x74EB, + 0x74EC, 0x74ED, 0x74F0, 0x74F1, 0x74F2, 0x74F3, 0x74F5, 0x74F8, 0x74F9, + 0x74FA, 0x74FB, 0x74FC, 0x74FD, 0x74FE, 0x7500, 0x7501, 0x7502, 0x7503, + 0x7505, 0x7506, 0x7507, 0x7508, 0x7509, 0x750A, 0x750B, 0x750E, 0x7510, + 0x7512, 0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, + 0x7521, 0x7522, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536, + 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546, + 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552, 0x7553, 0x7555, + 0x7556, 0x7557, 0x7558, 0x755E, 0x755F, 0x7560, 0x7561, 0x7563, 0x7564, + 0x7567, 0x7568, 0x7569, 0x756C, 0x756D, 0x756E, 0x756F, 0x7570, 0x7571, + 0x7573, 0x7575, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, 0x7580, + 0x7581, 0x7582, 0x7584, 0x7585, 0x7588, 0x7589, 0x758A, 0x758C, 0x758D, + 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2, + 0x75A6, 0x75A7, 0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, + 0x75BB, 0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF, + 0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0, + 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, 0x75F3, + 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, 0x75FE, 0x7604, + 0x7606, 0x7607, 0x7608, 0x7609, 0x760E, 0x760F, 0x7611, 0x7612, 0x7613, + 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x7623, 0x7628, 0x762C, 0x762E, + 0x762F, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763A, 0x763D, 0x7641, + 0x7644, 0x7645, 0x7648, 0x764A, 0x764B, 0x764E, 0x764F, 0x7650, 0x7651, + 0x7652, 0x7653, 0x7655, 0x7657, 0x7659, 0x765A, 0x765B, 0x765D, 0x7660, + 0x7661, 0x7666, 0x7668, 0x766A, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677, + 0x7679, 0x767A, 0x767F, 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A, + 0x768C, 0x768D, 0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, + 0x769B, 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3, + 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC, 0x76AD, + 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B9, 0x76BB, 0x76BC, + 0x76BD, 0x76BE, 0x76C0, 0x76C1, 0x76C3, 0x76C4, 0x76C7, 0x76C9, 0x76CB, + 0x76CC, 0x76D3, 0x76D5, 0x76D9, 0x76DA, 0x76DC, 0x76DD, 0x76E0, 0x76E2, + 0x76E6, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC, 0x76ED, 0x76F0, 0x76F3, + 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, 0x76FD, 0x76FF, 0x7700, 0x7702, + 0x7703, 0x7705, 0x7706, 0x770A, 0x770C, 0x770E, 0x770F, 0x7710, 0x7711, + 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, + 0x771D, 0x771E, 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B, + 0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773B, + 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748, 0x7749, + 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x7752, 0x7753, 0x7754, 0x7755, + 0x7756, 0x7757, 0x7758, 0x7759, 0x775C, 0x775D, 0x775F, 0x7760, 0x7764, + 0x7767, 0x7769, 0x776A, 0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772, + 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, + 0x7781, 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B, + 0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7799, 0x779A, + 0x779B, 0x779C, 0x779D, 0x77A1, 0x77A3, 0x77A4, 0x77A6, 0x77A8, 0x77AB, + 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9, + 0x77BA, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, 0x77C6, + 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, 0x77CF, 0x77D0, 0x77D1, + 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, 0x77D8, 0x77D9, 0x77DD, 0x77DE, + 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x77E6, 0x77E8, 0x77EA, 0x77F0, 0x77F1, + 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803, + 0x7804, 0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F, + 0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821, 0x7822, + 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833, + 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842, 0x7844, 0x7846, 0x7848, + 0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854, 0x7858, + 0x7859, 0x785A, 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862, + 0x7863, 0x7865, 0x7866, 0x7867, 0x7869, 0x7870, 0x7871, 0x7872, 0x7873, + 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787A, 0x787B, 0x787D, 0x787E, + 0x787F, 0x7880, 0x7881, 0x7882, 0x7883, 0x7884, 0x7885, 0x7886, 0x7888, + 0x788A, 0x788B, 0x788F, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, + 0x789D, 0x789E, 0x78A0, 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78AA, 0x78AB, + 0x78AC, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78BB, 0x78BD, 0x78BF, + 0x78C0, 0x78C2, 0x78C3, 0x78C4, 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, + 0x78CE, 0x78CF, 0x78D1, 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DB, + 0x78DC, 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E4, 0x78E5, + 0x78E6, 0x78E9, 0x78EA, 0x78EB, 0x78ED, 0x78EE, 0x78F0, 0x78F1, 0x78F3, + 0x78F5, 0x78F6, 0x78F8, 0x78F9, 0x78FB, 0x78FC, 0x78FE, 0x78FF, 0x7900, + 0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B, + 0x790C, 0x790D, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, 0x7916, + 0x7917, 0x7918, 0x791A, 0x791B, 0x791C, 0x791D, 0x791F, 0x7920, 0x7921, + 0x7922, 0x7923, 0x7925, 0x7927, 0x7928, 0x7929, 0x792D, 0x792E, 0x792F, + 0x7930, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793D, + 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, 0x794A, 0x794B, 0x794C, + 0x794D, 0x794E, 0x794F, 0x7950, 0x7951, 0x7952, 0x7954, 0x7955, 0x7958, + 0x7959, 0x7961, 0x7963, 0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, + 0x796E, 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, + 0x797B, 0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987, + 0x7988, 0x7989, 0x798B, 0x798C, 0x7990, 0x7991, 0x7992, 0x7993, 0x7994, + 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, 0x799C, 0x799D, 0x799E, + 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, 0x79A4, 0x79A5, 0x79A8, 0x79A9, + 0x79AB, 0x79AC, 0x79AD, 0x79AF, 0x79B2, 0x79B4, 0x79B5, 0x79B6, 0x79B7, + 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8, 0x79CA, + 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6, 0x79D7, 0x79D9, + 0x79DA, 0x79DB, 0x79DC, 0x79DD, 0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5, + 0x79E8, 0x79EA, 0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, + 0x79F6, 0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, + 0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11, + 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x7A1D, + 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27, 0x7A28, 0x7A29, + 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2F, 0x7A30, 0x7A32, 0x7A34, 0x7A35, + 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45, + 0x7A47, 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4F, 0x7A50, 0x7A52, 0x7A53, + 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59, 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, + 0x7A5E, 0x7A5F, 0x7A60, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68, + 0x7A6A, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71, 0x7A72, 0x7A73, 0x7A75, + 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A, + 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, + 0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x7AA3, 0x7AA4, 0x7AA7, 0x7AAB, 0x7AAF, + 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB7, 0x7AB8, 0x7AB9, 0x7ABB, + 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1, 0x7AC2, 0x7AC3, 0x7AC6, 0x7AC9, + 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2, 0x7AD3, 0x7AD4, + 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2, + 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, + 0x7AF2, 0x7AF3, 0x7AF4, 0x7AF5, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE, + 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D, 0x7B0E, + 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A, 0x7B1C, 0x7B1D, + 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29, 0x7B2D, 0x7B2F, 0x7B30, + 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39, 0x7B3B, 0x7B3D, 0x7B3F, + 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, + 0x7B53, 0x7B55, 0x7B57, 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, + 0x7B64, 0x7B65, 0x7B66, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D, + 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, 0x7B7D, + 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87, 0x7B88, 0x7B89, + 0x7B8A, 0x7B8C, 0x7B8E, 0x7B8F, 0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98, + 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, + 0x7BAE, 0x7BAF, 0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, + 0x7BBA, 0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC2, 0x7BC3, 0x7BC5, + 0x7BC8, 0x7BCA, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5, + 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2, + 0x7BE3, 0x7BE7, 0x7BE8, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, + 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0x7BFF, + 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, 0x7C06, 0x7C08, 0x7C09, 0x7C0A, + 0x7C0E, 0x7C10, 0x7C11, 0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18, + 0x7C19, 0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C20, 0x7C22, 0x7C24, 0x7C25, + 0x7C28, 0x7C29, 0x7C2C, 0x7C2D, 0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32, + 0x7C33, 0x7C34, 0x7C35, 0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C, + 0x7C42, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A, 0x7C4B, + 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53, 0x7C54, 0x7C55, 0x7C56, + 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B, 0x7C5D, 0x7C5E, 0x7C61, 0x7C62, + 0x7C63, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C6B, 0x7C6D, 0x7C6F, 0x7C70, + 0x7C71, 0x7C75, 0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F, + 0x7C80, 0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87, 0x7C88, + 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90, 0x7C93, 0x7C94, + 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7, + 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, + 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA, 0x7CBB, 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, + 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB, 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, + 0x7CD3, 0x7CD4, 0x7CD8, 0x7CDA, 0x7CDB, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4, + 0x7CE5, 0x7CE6, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED, 0x7CEE, 0x7CF1, + 0x7CF3, 0x7CF5, 0x7CF7, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFF, 0x7D01, 0x7D03, + 0x7D0C, 0x7D0E, 0x7D0F, 0x7D11, 0x7D12, 0x7D16, 0x7D18, 0x7D1D, 0x7D1E, + 0x7D1F, 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C, + 0x7D2D, 0x7D2E, 0x7D34, 0x7D35, 0x7D36, 0x7D37, 0x7D38, 0x7D3B, 0x7D3D, + 0x7D3E, 0x7D41, 0x7D43, 0x7D45, 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, + 0x7D4C, 0x7D4D, 0x7D4F, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56, + 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5F, 0x7D60, 0x7D63, + 0x7D64, 0x7D65, 0x7D67, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F, + 0x7D70, 0x7D74, 0x7D75, 0x7D78, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, + 0x7D7F, 0x7D80, 0x7D82, 0x7D84, 0x7D85, 0x7D87, 0x7D8A, 0x7D8B, 0x7D8C, + 0x7D8D, 0x7D8E, 0x7D90, 0x7D91, 0x7D92, 0x7D94, 0x7D95, 0x7D96, 0x7D97, + 0x7D98, 0x7D99, 0x7D9A, 0x7D9B, 0x7D9D, 0x7D9F, 0x7DA0, 0x7DA1, 0x7DA4, + 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, 0x7DAA, 0x7DAF, 0x7DB5, 0x7DB6, 0x7DB7, + 0x7DBC, 0x7DC0, 0x7DC1, 0x7DC2, 0x7DC3, 0x7DC5, 0x7DC6, 0x7DC8, 0x7DC9, + 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD3, 0x7DD5, 0x7DD6, 0x7DDA, + 0x7DDB, 0x7DDC, 0x7DDF, 0x7DE2, 0x7DE4, 0x7DE5, 0x7DE7, 0x7DEA, 0x7DEB, + 0x7DED, 0x7DEE, 0x7DF0, 0x7DF3, 0x7DF5, 0x7DF7, 0x7DF8, 0x7DFA, 0x7DFC, + 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02, 0x7E03, 0x7E04, 0x7E05, + 0x7E06, 0x7E07, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E12, 0x7E13, 0x7E14, + 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A, 0x7E1C, 0x7E20, 0x7E21, + 0x7E22, 0x7E24, 0x7E25, 0x7E26, 0x7E28, 0x7E29, 0x7E2A, 0x7E2C, 0x7E2F, + 0x7E30, 0x7E33, 0x7E38, 0x7E3A, 0x7E3C, 0x7E3F, 0x7E40, 0x7E42, 0x7E43, + 0x7E44, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C, 0x7E4D, 0x7E4E, 0x7E4F, + 0x7E50, 0x7E51, 0x7E53, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5B, 0x7E5C, + 0x7E5D, 0x7E5F, 0x7E60, 0x7E61, 0x7E63, 0x7E64, 0x7E65, 0x7E66, 0x7E67, + 0x7E68, 0x7E6C, 0x7E71, 0x7E72, 0x7E74, 0x7E75, 0x7E76, 0x7E77, 0x7E78, + 0x7E7A, 0x7E7B, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86, + 0x7E87, 0x7E89, 0x7E8B, 0x7E8E, 0x7E90, 0x7E91, 0x7E92, 0x7E95, 0x7E97, + 0x7E99, 0x7E9A, 0x7E9D, 0x7E9E, 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, + 0x7EE4, 0x7EEC, 0x7EF9, 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, + 0x7F3C, 0x7F3D, 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, + 0x7F48, 0x7F49, 0x7F4A, 0x7F4B, 0x7F4D, 0x7F4F, 0x7F52, 0x7F53, 0x7F56, + 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, 0x7F64, 0x7F65, + 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, 0x7F73, 0x7F75, 0x7F76, + 0x7F78, 0x7F7A, 0x7F7B, 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, + 0x7F84, 0x7F87, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 0x7F91, 0x7F92, + 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, 0x7F9B, 0x7F9C, 0x7FA0, + 0x7FA2, 0x7FA3, 0x7FA6, 0x7FA8, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, + 0x7FB1, 0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, + 0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB, + 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD3, 0x7FD6, 0x7FD7, 0x7FD9, 0x7FDA, + 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, 0x7FE3, 0x7FE4, 0x7FE7, 0x7FE8, + 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, + 0x7FF7, 0x7FF8, 0x7FFA, 0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008, + 0x8009, 0x800A, 0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, + 0x801E, 0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802D, 0x802F, 0x8030, + 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041, 0x8044, + 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050, 0x8051, 0x8053, + 0x8055, 0x8057, 0x8059, 0x805B, 0x805C, 0x805D, 0x805F, 0x8060, 0x8061, + 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B, 0x806C, + 0x806D, 0x806E, 0x8074, 0x8078, 0x807A, 0x807B, 0x807C, 0x8081, 0x8082, + 0x8088, 0x808A, 0x808D, 0x808E, 0x808F, 0x8090, 0x8091, 0x8092, 0x8094, + 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC, + 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7, + 0x80C8, 0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3, + 0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE, + 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103, + 0x8104, 0x8107, 0x8108, 0x810B, 0x810C, 0x8115, 0x8117, 0x8119, 0x811C, + 0x811D, 0x811F, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, + 0x8127, 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133, + 0x8134, 0x8135, 0x8137, 0x813A, 0x813B, 0x813C, 0x813D, 0x813F, 0x8140, + 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, 0x814D, 0x814F, + 0x8152, 0x8157, 0x8158, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8162, + 0x8163, 0x8164, 0x8168, 0x816A, 0x816C, 0x816F, 0x8172, 0x8173, 0x8175, + 0x8176, 0x8177, 0x8181, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, 0x8189, + 0x818B, 0x818C, 0x818D, 0x818E, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195, + 0x8196, 0x8197, 0x8199, 0x819E, 0x819F, 0x81A1, 0x81A2, 0x81A4, 0x81A5, + 0x81A7, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, 0x81B1, 0x81B2, + 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0x81BC, 0x81C4, 0x81C5, + 0x81C7, 0x81C8, 0x81CB, 0x81CE, 0x81D0, 0x81D1, 0x81D2, 0x81D3, 0x81D4, + 0x81D5, 0x81D6, 0x81D7, 0x81D9, 0x81DB, 0x81DC, 0x81DD, 0x81DE, 0x81E1, + 0x81E2, 0x81E4, 0x81E5, 0x81E6, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0, + 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FD, 0x81FF, + 0x8203, 0x820B, 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, + 0x8218, 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, + 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F, 0x8240, 0x8241, + 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, 0x824C, 0x824D, 0x824E, + 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x825B, + 0x825C, 0x825D, 0x825E, 0x8260, 0x8261, 0x8262, 0x8263, 0x8265, 0x8267, + 0x8269, 0x826A, 0x826C, 0x826D, 0x8275, 0x8276, 0x8278, 0x827B, 0x827C, + 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289, 0x828C, 0x8290, + 0x8293, 0x8294, 0x8295, 0x8296, 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, + 0x82A3, 0x82A7, 0x82B2, 0x82B5, 0x82B6, 0x82BA, 0x82BC, 0x82BF, 0x82C0, + 0x82C2, 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA, + 0x82DD, 0x82E2, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, 0x82EE, 0x82F0, + 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8, 0x82FA, 0x82FC, 0x82FD, 0x82FE, + 0x82FF, 0x8300, 0x830A, 0x830B, 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, + 0x8318, 0x8319, 0x831D, 0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323, + 0x8324, 0x8325, 0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337, + 0x833B, 0x833D, 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, + 0x834A, 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357, + 0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, + 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382, + 0x8383, 0x8384, 0x8387, 0x8388, 0x838B, 0x838C, 0x838D, 0x838F, 0x8390, + 0x8391, 0x8394, 0x8395, 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1, + 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B5, + 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4, 0x83C6, 0x83C8, 0x83C9, + 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7, + 0x83D9, 0x83DA, 0x83DB, 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, + 0x83E8, 0x83EB, 0x83EC, 0x83ED, 0x83EE, 0x83F3, 0x83F4, 0x83F5, 0x83F6, + 0x83F7, 0x83FA, 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, + 0x8408, 0x8409, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417, + 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420, 0x8421, 0x8422, 0x8423, + 0x8429, 0x842A, 0x842B, 0x842D, 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, + 0x8434, 0x8436, 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440, + 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x844A, 0x844B, + 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8453, 0x8454, 0x8455, 0x8456, + 0x8458, 0x845D, 0x845E, 0x845F, 0x8460, 0x8462, 0x8465, 0x8467, 0x8468, + 0x846A, 0x846E, 0x8470, 0x8472, 0x8474, 0x8479, 0x847B, 0x847C, 0x847D, + 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, 0x8486, 0x848A, + 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8495, 0x8496, 0x8498, 0x849A, + 0x849B, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, + 0x84A6, 0x84A7, 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, + 0x84B0, 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BE, 0x84C2, + 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CC, 0x84CE, 0x84CF, 0x84D2, + 0x84D4, 0x84D5, 0x84D7, 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, + 0x84E1, 0x84E2, 0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, + 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0x84F9, + 0x84FA, 0x84FB, 0x84FE, 0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8505, + 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, 0x850B, 0x850D, 0x850E, 0x850F, + 0x8510, 0x8512, 0x8515, 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, + 0x8520, 0x8522, 0x8524, 0x8525, 0x8527, 0x8528, 0x8529, 0x852A, 0x852E, + 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x853E, + 0x853F, 0x8540, 0x8542, 0x8544, 0x8545, 0x8547, 0x854B, 0x854C, 0x854D, + 0x854F, 0x8550, 0x8551, 0x8554, 0x8557, 0x855A, 0x855B, 0x855C, 0x855D, + 0x855F, 0x8560, 0x8561, 0x8563, 0x8565, 0x8566, 0x8567, 0x856B, 0x856C, + 0x856E, 0x856F, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8578, 0x857C, + 0x857D, 0x857F, 0x8580, 0x8581, 0x8582, 0x8583, 0x8586, 0x8589, 0x858B, + 0x858D, 0x858E, 0x8590, 0x8592, 0x8593, 0x8595, 0x8596, 0x8597, 0x8598, + 0x8599, 0x859A, 0x859D, 0x859E, 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5, + 0x85A7, 0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5, + 0x85B6, 0x85B8, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C2, + 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85CA, 0x85CB, 0x85CC, + 0x85D1, 0x85D2, 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, + 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E6, 0x85E7, 0x85E8, + 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, 0x85F0, 0x85F1, 0x85F2, 0x85F3, + 0x85F5, 0x85F7, 0x85F8, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602, + 0x8603, 0x8608, 0x8609, 0x860A, 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, + 0x8612, 0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861B, 0x861C, + 0x861D, 0x861F, 0x8620, 0x8621, 0x8623, 0x8624, 0x8625, 0x8626, 0x8628, + 0x862A, 0x862B, 0x862C, 0x862E, 0x862F, 0x8630, 0x8631, 0x8632, 0x8633, + 0x8634, 0x8635, 0x8636, 0x8637, 0x8639, 0x863B, 0x863D, 0x863E, 0x8640, + 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, + 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, + 0x865B, 0x865D, 0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8668, + 0x8669, 0x866A, 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, + 0x8676, 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, + 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, 0x8697, + 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0, 0x86A1, 0x86A2, + 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, 0x86B3, 0x86B7, 0x86B8, + 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, 0x86C1, 0x86C2, 0x86C3, + 0x86C5, 0x86C8, 0x86CC, 0x86CD, 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, + 0x86DA, 0x86DC, 0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, + 0x86E7, 0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, + 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x870B, 0x870C, + 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716, 0x8719, 0x871B, 0x871D, + 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A, 0x872B, 0x872C, + 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, + 0x873A, 0x873C, 0x873D, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, + 0x8746, 0x874A, 0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, + 0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, 0x8761, + 0x8762, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D, 0x876F, + 0x8771, 0x8772, 0x8773, 0x8775, 0x8777, 0x8779, 0x877A, 0x877F, 0x8780, + 0x8781, 0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, + 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A, 0x879B, + 0x879C, 0x879D, 0x87A0, 0x87A1, 0x87A3, 0x87A4, 0x87A5, 0x87A6, 0x87A7, + 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, 0x87B7, + 0x87B8, 0x87B9, 0x87BC, 0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C5, + 0x87C7, 0x87C9, 0x87CC, 0x87CD, 0x87CF, 0x87D0, 0x87D4, 0x87D5, 0x87D6, + 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1, + 0x87E2, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, 0x87ED, 0x87F0, + 0x87F1, 0x87F3, 0x87F4, 0x87F5, 0x87F7, 0x87F8, 0x87FA, 0x87FC, 0x87FD, + 0x87FF, 0x8800, 0x8801, 0x8802, 0x8804, 0x8807, 0x8808, 0x8809, 0x880B, + 0x880C, 0x880D, 0x880E, 0x880F, 0x8812, 0x8814, 0x8817, 0x8818, 0x8819, + 0x881A, 0x881C, 0x881D, 0x881E, 0x8820, 0x8824, 0x8825, 0x8826, 0x8827, + 0x8828, 0x8829, 0x882A, 0x882B, 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, + 0x8833, 0x8834, 0x8835, 0x8837, 0x8838, 0x883A, 0x883D, 0x883E, 0x883F, + 0x8841, 0x8842, 0x8843, 0x8847, 0x8848, 0x8849, 0x884B, 0x884E, 0x884F, + 0x8850, 0x8851, 0x8852, 0x8855, 0x8856, 0x8858, 0x885A, 0x885C, 0x885E, + 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871, 0x8873, + 0x8874, 0x8875, 0x8876, 0x8878, 0x887A, 0x887B, 0x887C, 0x8880, 0x8883, + 0x8886, 0x8887, 0x8889, 0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, + 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, + 0x889E, 0x889F, 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, + 0x88A9, 0x88AA, 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, + 0x88B5, 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF, + 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CB, 0x88CC, 0x88CD, 0x88D0, + 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA, 0x88DB, 0x88DE, 0x88E0, 0x88E1, + 0x88E6, 0x88E7, 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, + 0x88F2, 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FF, 0x8900, 0x8901, + 0x8903, 0x8904, 0x8905, 0x8906, 0x8908, 0x8909, 0x890B, 0x890C, 0x890D, + 0x890E, 0x890F, 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, + 0x891D, 0x891E, 0x891F, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, + 0x8928, 0x8929, 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8935, 0x8937, + 0x8939, 0x893A, 0x893C, 0x893D, 0x893E, 0x893F, 0x8940, 0x8942, 0x8943, + 0x8945, 0x8946, 0x8948, 0x8949, 0x894A, 0x894B, 0x894C, 0x894D, 0x894E, + 0x894F, 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8957, 0x8958, + 0x8959, 0x895A, 0x895B, 0x895C, 0x8961, 0x8962, 0x8963, 0x8965, 0x8967, + 0x8968, 0x8969, 0x896B, 0x896D, 0x896E, 0x8970, 0x8971, 0x8973, 0x8974, + 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C, 0x897D, 0x897E, + 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898A, 0x898C, + 0x898D, 0x898E, 0x8990, 0x8991, 0x8992, 0x8994, 0x8995, 0x8997, 0x8999, + 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A2, 0x89A3, + 0x89A4, 0x89A5, 0x89A7, 0x89A8, 0x89A9, 0x89AB, 0x89AD, 0x89AE, 0x89B0, + 0x89B1, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B8, 0x89B9, 0x89BB, 0x89BC, + 0x89BE, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9, + 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8, + 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2, 0x89F5, + 0x89F7, 0x89F9, 0x89FA, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A04, + 0x8A05, 0x8A06, 0x8A09, 0x8A0B, 0x8A0D, 0x8A0F, 0x8A11, 0x8A12, 0x8A14, + 0x8A17, 0x8A19, 0x8A1A, 0x8A1C, 0x8A1E, 0x8A20, 0x8A21, 0x8A22, 0x8A24, + 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2B, 0x8A2C, 0x8A2E, 0x8A2F, 0x8A30, + 0x8A32, 0x8A33, 0x8A35, 0x8A37, 0x8A38, 0x8A39, 0x8A3B, 0x8A3C, 0x8A3D, + 0x8A3F, 0x8A40, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A47, 0x8A49, 0x8A4A, + 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4F, 0x8A51, 0x8A53, 0x8A56, 0x8A57, 0x8A59, + 0x8A5A, 0x8A5C, 0x8A5D, 0x8A5F, 0x8A60, 0x8A64, 0x8A65, 0x8A67, 0x8A68, + 0x8A6A, 0x8A6F, 0x8A74, 0x8A76, 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7D, + 0x8A7E, 0x8A80, 0x8A81, 0x8A82, 0x8A83, 0x8A88, 0x8A8B, 0x8A8C, 0x8A8E, + 0x8A8F, 0x8A90, 0x8A94, 0x8A96, 0x8A97, 0x8A99, 0x8A9B, 0x8A9C, 0x8A9D, + 0x8A9F, 0x8AA2, 0x8AA7, 0x8AA9, 0x8AAA, 0x8AAB, 0x8AAD, 0x8AAE, 0x8AAF, + 0x8AB1, 0x8AB3, 0x8AB4, 0x8AB5, 0x8AB7, 0x8AB8, 0x8ABA, 0x8ABB, 0x8ABD, + 0x8ABE, 0x8AC0, 0x8AC1, 0x8AC3, 0x8AC5, 0x8AC6, 0x8AC8, 0x8ACA, 0x8ACC, + 0x8ACE, 0x8AD0, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD8, 0x8AD9, 0x8ADA, 0x8ADD, + 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE3, 0x8AE5, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEC, + 0x8AEF, 0x8AF0, 0x8AF2, 0x8AF4, 0x8AF5, 0x8AF9, 0x8AFB, 0x8AFD, 0x8AFF, + 0x8B03, 0x8B06, 0x8B08, 0x8B09, 0x8B0B, 0x8B0C, 0x8B0D, 0x8B0F, 0x8B11, + 0x8B12, 0x8B13, 0x8B15, 0x8B18, 0x8B1C, 0x8B1E, 0x8B1F, 0x8B20, 0x8B22, + 0x8B23, 0x8B24, 0x8B25, 0x8B27, 0x8B29, 0x8B2A, 0x8B2E, 0x8B2F, 0x8B30, + 0x8B31, 0x8B32, 0x8B34, 0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B3A, 0x8B3B, + 0x8B3C, 0x8B3D, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0x8B45, + 0x8B46, 0x8B47, 0x8B48, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, 0x8B50, 0x8B51, + 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B57, 0x8B5B, 0x8B5D, 0x8B5E, 0x8B5F, + 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65, 0x8B67, 0x8B68, 0x8B69, + 0x8B6A, 0x8B6D, 0x8B6E, 0x8B71, 0x8B72, 0x8B73, 0x8B75, 0x8B76, 0x8B78, + 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7E, 0x8B7F, 0x8B81, 0x8B82, 0x8B83, + 0x8B84, 0x8B85, 0x8B86, 0x8B87, 0x8B88, 0x8B89, 0x8B8B, 0x8B8C, 0x8B8D, + 0x8B8F, 0x8B90, 0x8B91, 0x8B94, 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, + 0x8B9D, 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09, + 0x8C1E, 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F, + 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C4A, 0x8C4B, 0x8C4D, 0x8C4E, + 0x8C4F, 0x8C51, 0x8C52, 0x8C53, 0x8C54, 0x8C56, 0x8C57, 0x8C58, 0x8C59, + 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E, 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, + 0x8C66, 0x8C67, 0x8C68, 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, + 0x8C71, 0x8C72, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D, + 0x8C7E, 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87, 0x8C88, + 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, 0x8C93, 0x8C95, + 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C, 0x8C9F, 0x8CA3, 0x8CA4, + 0x8CA5, 0x8CA6, 0x8CAD, 0x8CAE, 0x8CB1, 0x8CB5, 0x8CB9, 0x8CBE, 0x8CC6, + 0x8CC9, 0x8CCB, 0x8CCC, 0x8CCD, 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD4, 0x8CD6, + 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDB, 0x8CDD, 0x8CDF, 0x8CE5, 0x8CE8, 0x8CE9, + 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF5, 0x8CF6, 0x8CF7, + 0x8CF8, 0x8CF9, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D06, 0x8D07, + 0x8D09, 0x8D0C, 0x8D0E, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, 0x8D17, + 0x8D18, 0x8D19, 0x8D1A, 0x8D20, 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, + 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78, + 0x8D79, 0x8D7A, 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, + 0x8D83, 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F, + 0x8D90, 0x8D92, 0x8D93, 0x8D96, 0x8D97, 0x8D98, 0x8D9A, 0x8D9B, 0x8D9C, + 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7, + 0x8DA9, 0x8DAA, 0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB6, + 0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7, + 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x8DD5, + 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7, + 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC, + 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02, 0x8E03, 0x8E04, 0x8E06, 0x8E07, + 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16, + 0x8E17, 0x8E18, 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24, + 0x8E25, 0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33, + 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E, 0x8E3F, 0x8E43, 0x8E45, + 0x8E46, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E53, 0x8E54, 0x8E56, 0x8E57, + 0x8E58, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, + 0x8E62, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E, 0x8E71, + 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7B, 0x8E7D, 0x8E7E, 0x8E80, + 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E8C, 0x8E8E, 0x8E95, 0x8E96, + 0x8E97, 0x8E98, 0x8E99, 0x8E9B, 0x8E9D, 0x8E9F, 0x8EA0, 0x8EA2, 0x8EA3, + 0x8EA4, 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, 0x8EB3, + 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB, 0x8EBC, 0x8EBD, + 0x8EBE, 0x8EBF, 0x8EC1, 0x8EC2, 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, + 0x8EC8, 0x8EC9, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED3, 0x8ED5, 0x8ED6, 0x8ED7, + 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDC, 0x8EDD, 0x8EDE, 0x8EE0, 0x8EE1, 0x8EE2, + 0x8EE3, 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEC, 0x8EED, + 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF3, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7, + 0x8EFD, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F04, 0x8F06, 0x8F08, 0x8F0B, + 0x8F0C, 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F13, 0x8F16, 0x8F17, + 0x8F18, 0x8F19, 0x8F1A, 0x8F20, 0x8F21, 0x8F22, 0x8F23, 0x8F24, 0x8F27, + 0x8F28, 0x8F2B, 0x8F2C, 0x8F2D, 0x8F2E, 0x8F30, 0x8F31, 0x8F32, 0x8F34, + 0x8F35, 0x8F36, 0x8F37, 0x8F39, 0x8F3A, 0x8F3C, 0x8F3D, 0x8F40, 0x8F41, + 0x8F43, 0x8F47, 0x8F48, 0x8F4A, 0x8F4B, 0x8F4C, 0x8F4F, 0x8F50, 0x8F51, + 0x8F52, 0x8F53, 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, + 0x8F5C, 0x8F5D, 0x8F5E, 0x8F60, 0x8F63, 0x8F65, 0x8F6A, 0x8F80, 0x8F8C, + 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA7, 0x8FAA, + 0x8FAC, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, 0x8FBA, 0x8FBB, 0x8FBC, + 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, + 0x8FCF, 0x8FD2, 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, + 0x8FEC, 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC, + 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9018, 0x901C, + 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, 0x902A, 0x902B, 0x902C, 0x9030, + 0x9031, 0x9033, 0x9034, 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, + 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904A, 0x904C, 0x9056, 0x9059, + 0x905A, 0x905D, 0x905F, 0x9061, 0x9064, 0x9066, 0x9067, 0x906A, 0x906B, + 0x906C, 0x906F, 0x9070, 0x9071, 0x9073, 0x9076, 0x9079, 0x907B, 0x907E, + 0x9085, 0x9086, 0x9089, 0x908C, 0x908D, 0x908E, 0x9092, 0x9094, 0x9096, + 0x9098, 0x909A, 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, + 0x90A8, 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF, + 0x90C0, 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD, + 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, 0x90E0, + 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, 0x90EE, 0x90F0, 0x90F1, + 0x90F2, 0x90F3, 0x90F6, 0x90F7, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, + 0x9100, 0x9101, 0x9103, 0x9105, 0x9107, 0x9108, 0x910A, 0x910B, 0x910C, + 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9113, 0x9115, 0x9117, 0x9118, + 0x911A, 0x911B, 0x911C, 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, + 0x9126, 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912E, 0x9133, 0x9135, + 0x9137, 0x9138, 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, + 0x9142, 0x9144, 0x9145, 0x9147, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, + 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, 0x9168, + 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, 0x9181, 0x9182, + 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, 0x918F, 0x9193, 0x9194, + 0x9195, 0x9197, 0x9198, 0x9199, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, + 0x91A4, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91B0, 0x91B1, 0x91B2, + 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB, 0x91BC, 0x91BD, 0x91BE, + 0x91BF, 0x91C2, 0x91C4, 0x91C6, 0x91C8, 0x91D0, 0x91D6, 0x91DA, 0x91DB, + 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E5, 0x91E6, 0x91E8, 0x91EA, + 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3, + 0x91F4, 0x91F6, 0x91F8, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF, 0x9202, + 0x9203, 0x9205, 0x9206, 0x9207, 0x920A, 0x920B, 0x920C, 0x920F, 0x9212, + 0x9213, 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, + 0x921F, 0x9220, 0x9221, 0x9222, 0x9224, 0x9228, 0x9229, 0x922A, 0x922B, + 0x922C, 0x922D, 0x922F, 0x9231, 0x9232, 0x9235, 0x9236, 0x923B, 0x923C, + 0x9241, 0x9242, 0x9243, 0x9244, 0x9246, 0x9247, 0x924A, 0x924B, 0x924C, + 0x924E, 0x924F, 0x9250, 0x9252, 0x9253, 0x9254, 0x9256, 0x9258, 0x9259, + 0x925C, 0x925D, 0x925F, 0x9260, 0x9261, 0x9263, 0x9264, 0x9265, 0x9267, + 0x9268, 0x9269, 0x926A, 0x926B, 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, + 0x9273, 0x9275, 0x9276, 0x9277, 0x9279, 0x927C, 0x927D, 0x927E, 0x9281, + 0x9282, 0x9284, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C, + 0x928D, 0x928F, 0x9290, 0x9292, 0x9294, 0x9295, 0x9297, 0x9299, 0x929B, + 0x929D, 0x929E, 0x929F, 0x92A1, 0x92A2, 0x92A4, 0x92A7, 0x92AD, 0x92AF, + 0x92B0, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B8, 0x92BA, 0x92BD, + 0x92BE, 0x92BF, 0x92C0, 0x92C2, 0x92C4, 0x92C6, 0x92C9, 0x92CA, 0x92CB, + 0x92CD, 0x92CE, 0x92D0, 0x92D1, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, + 0x92D8, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DE, 0x92E0, 0x92E1, 0x92E2, + 0x92E7, 0x92E9, 0x92EB, 0x92EC, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F7, + 0x92F9, 0x92FA, 0x92FB, 0x92FD, 0x92FE, 0x92FF, 0x9300, 0x9302, 0x9303, + 0x9304, 0x9305, 0x9309, 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, + 0x9311, 0x9313, 0x9314, 0x9316, 0x9317, 0x931C, 0x931D, 0x931E, 0x9321, + 0x9323, 0x9324, 0x9325, 0x9327, 0x9329, 0x932A, 0x932C, 0x932D, 0x9330, + 0x9331, 0x9334, 0x9335, 0x9337, 0x9339, 0x933A, 0x933B, 0x933C, 0x933D, + 0x933F, 0x9342, 0x9344, 0x9345, 0x9348, 0x9349, 0x934A, 0x934C, 0x934E, + 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0x9355, 0x9356, 0x9357, 0x9359, + 0x935A, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, 0x9362, 0x9363, + 0x9366, 0x9367, 0x9368, 0x936B, 0x936D, 0x936E, 0x936F, 0x9371, 0x9372, + 0x9373, 0x9374, 0x9377, 0x9378, 0x9379, 0x937B, 0x937C, 0x937D, 0x937F, + 0x9380, 0x9381, 0x9383, 0x9385, 0x9386, 0x9388, 0x9389, 0x938B, 0x938C, + 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9397, + 0x9399, 0x939A, 0x939B, 0x939C, 0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1, + 0x93A4, 0x93A5, 0x93A8, 0x93AB, 0x93AD, 0x93AF, 0x93B1, 0x93B2, 0x93B4, + 0x93B6, 0x93B7, 0x93B9, 0x93BA, 0x93BB, 0x93BC, 0x93BD, 0x93BE, 0x93C0, + 0x93C1, 0x93C2, 0x93C4, 0x93C5, 0x93C6, 0x93C9, 0x93CB, 0x93CE, 0x93CF, + 0x93D0, 0x93D2, 0x93D3, 0x93D4, 0x93D5, 0x93D9, 0x93DA, 0x93DB, 0x93E0, + 0x93E3, 0x93E5, 0x93E6, 0x93E7, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, + 0x93EE, 0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F6, 0x93F8, + 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402, + 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A, 0x940C, 0x940D, + 0x940E, 0x940F, 0x9411, 0x9415, 0x9416, 0x9417, 0x941A, 0x941B, 0x941C, + 0x941E, 0x941F, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9429, 0x942A, + 0x942B, 0x942C, 0x942D, 0x942F, 0x9430, 0x9431, 0x9434, 0x9436, 0x9437, + 0x9439, 0x943B, 0x943C, 0x943D, 0x9440, 0x9441, 0x9442, 0x9443, 0x9445, + 0x9446, 0x9447, 0x9448, 0x9449, 0x944B, 0x944D, 0x944E, 0x944F, 0x9450, + 0x9451, 0x9453, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945A, 0x945B, + 0x945C, 0x945D, 0x945E, 0x945F, 0x9461, 0x9462, 0x9464, 0x9466, 0x9467, + 0x9468, 0x9469, 0x946A, 0x946C, 0x946E, 0x946F, 0x9471, 0x9473, 0x9474, + 0x9475, 0x9476, 0x9478, 0x947A, 0x947B, 0x9480, 0x9481, 0x9482, 0x9483, + 0x9484, 0x9491, 0x9496, 0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, + 0x94E6, 0x94FB, 0x951C, 0x9520, 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, + 0x954B, 0x9555, 0x955A, 0x9560, 0x956E, 0x9574, 0x9575, 0x9578, 0x9579, + 0x957A, 0x957B, 0x957C, 0x957D, 0x957E, 0x9581, 0x9584, 0x9585, 0x9587, + 0x9588, 0x958A, 0x958D, 0x9590, 0x9592, 0x9595, 0x9596, 0x9597, 0x9599, + 0x959A, 0x959B, 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A2, 0x95A6, + 0x95A7, 0x95AA, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B3, 0x95B4, 0x95B5, + 0x95B7, 0x95B8, 0x95BA, 0x95C0, 0x95C1, 0x95C2, 0x95C4, 0x95C5, 0x95C7, + 0x95C9, 0x95CD, 0x95CE, 0x95CF, 0x95D1, 0x95D2, 0x95D3, 0x95D7, 0x95D8, + 0x95D9, 0x95DA, 0x95DB, 0x95DD, 0x95DF, 0x95E0, 0x95E3, 0x95E4, 0x95E6, + 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, 0x961B, 0x961E, 0x9620, + 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628, 0x9629, 0x962B, 0x962C, + 0x962D, 0x962F, 0x9630, 0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, + 0x9643, 0x964A, 0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, + 0x9659, 0x965A, 0x965C, 0x965E, 0x9660, 0x9665, 0x9666, 0x966B, 0x966D, + 0x966E, 0x966F, 0x9671, 0x9679, 0x967A, 0x967B, 0x967C, 0x967E, 0x967F, + 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968C, 0x9691, + 0x9692, 0x9693, 0x9696, 0x969A, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1, + 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A9, 0x96AB, 0x96AC, 0x96AD, + 0x96AE, 0x96AF, 0x96B2, 0x96B5, 0x96B7, 0x96BA, 0x96BF, 0x96C2, 0x96C3, + 0x96C8, 0x96CA, 0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D7, 0x96D8, + 0x96DA, 0x96DD, 0x96DE, 0x96DF, 0x96E1, 0x96E4, 0x96E5, 0x96E6, 0x96E7, + 0x96EB, 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F4, 0x96F5, 0x96F8, + 0x96FA, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, 0x970B, + 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719, + 0x971A, 0x971B, 0x971D, 0x971F, 0x9720, 0x9721, 0x9722, 0x9723, 0x9724, + 0x9725, 0x9726, 0x9728, 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, + 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973F, + 0x9740, 0x9741, 0x9743, 0x9745, 0x9746, 0x9747, 0x9749, 0x974A, 0x974B, + 0x974C, 0x974D, 0x974E, 0x974F, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, + 0x9758, 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x976A, + 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771, 0x9772, 0x9775, + 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D, 0x977E, 0x977F, 0x9780, + 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787, 0x9788, 0x9789, 0x978A, + 0x978C, 0x978E, 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, + 0x979B, 0x979C, 0x979D, 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, + 0x97A7, 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, + 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC, 0x97BE, + 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C4, 0x97C5, 0x97C7, 0x97C8, 0x97CA, + 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D4, 0x97D5, 0x97D6, + 0x97D7, 0x97D8, 0x97DA, 0x97DB, 0x97DD, 0x97DF, 0x97E0, 0x97E1, 0x97E2, + 0x97E3, 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, + 0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, 0x97FE, + 0x9800, 0x9804, 0x9809, 0x980B, 0x980D, 0x9814, 0x9815, 0x9816, 0x9819, + 0x981A, 0x981B, 0x981D, 0x981E, 0x981F, 0x9820, 0x9822, 0x9823, 0x9825, + 0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982E, 0x982F, 0x9831, + 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9839, 0x983A, 0x983C, 0x983E, + 0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9847, 0x9848, + 0x9849, 0x984A, 0x984B, 0x984F, 0x9850, 0x9851, 0x9852, 0x9855, 0x9856, + 0x9857, 0x985A, 0x985C, 0x985D, 0x985F, 0x9860, 0x9861, 0x9863, 0x9864, + 0x9866, 0x9868, 0x9869, 0x986A, 0x986D, 0x986E, 0x9872, 0x988B, 0x988E, + 0x9892, 0x9895, 0x9899, 0x98A3, 0x98A9, 0x98AA, 0x98AB, 0x98AC, 0x98AD, + 0x98B0, 0x98B2, 0x98B4, 0x98B5, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB, + 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3, 0x98C5, 0x98C7, + 0x98C9, 0x98CA, 0x98CB, 0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6, + 0x98D7, 0x98DC, 0x98DD, 0x98E1, 0x98E3, 0x98E4, 0x98E5, 0x98E6, 0x98EC, + 0x98EE, 0x98F0, 0x98F1, 0x98F3, 0x98F5, 0x98F6, 0x98F7, 0x98F8, 0x98F9, + 0x98FA, 0x98FB, 0x98FF, 0x9900, 0x9901, 0x9902, 0x9904, 0x9906, 0x9907, + 0x9908, 0x990B, 0x990E, 0x990F, 0x9914, 0x9915, 0x9916, 0x9917, 0x9919, + 0x991A, 0x991C, 0x991D, 0x991F, 0x9920, 0x9922, 0x9923, 0x9924, 0x9925, + 0x9926, 0x9927, 0x9929, 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, + 0x9931, 0x9932, 0x9934, 0x9935, 0x9936, 0x9938, 0x9939, 0x993A, 0x993B, + 0x993D, 0x9940, 0x9941, 0x9942, 0x9944, 0x9946, 0x9947, 0x994D, 0x994E, + 0x994F, 0x9950, 0x9953, 0x9956, 0x9958, 0x9959, 0x995A, 0x995B, 0x995D, + 0x995F, 0x9960, 0x9961, 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, + 0x997E, 0x9982, 0x9983, 0x9989, 0x998C, 0x998E, 0x999A, 0x999B, 0x999C, + 0x999D, 0x999E, 0x999F, 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, + 0x99A7, 0x99A9, 0x99AA, 0x99AB, 0x99AF, 0x99B0, 0x99B2, 0x99B5, 0x99B6, + 0x99B7, 0x99B8, 0x99B9, 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, + 0x99C0, 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9, + 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D3, 0x99D6, 0x99D7, + 0x99DA, 0x99DC, 0x99DE, 0x99E0, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, + 0x99E8, 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99EE, 0x99EF, 0x99F0, 0x99F2, + 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, 0x99F9, 0x99FA, 0x99FB, + 0x99FC, 0x99FD, 0x99FE, 0x9A00, 0x9A02, 0x9A03, 0x9A04, 0x9A06, 0x9A07, + 0x9A08, 0x9A09, 0x9A0A, 0x9A0B, 0x9A0C, 0x9A10, 0x9A11, 0x9A12, 0x9A13, + 0x9A14, 0x9A15, 0x9A17, 0x9A18, 0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E, + 0x9A1F, 0x9A20, 0x9A21, 0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27, + 0x9A28, 0x9A29, 0x9A2A, 0x9A2C, 0x9A2F, 0x9A31, 0x9A32, 0x9A33, 0x9A34, + 0x9A35, 0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3F, 0x9A46, 0x9A47, + 0x9A48, 0x9A49, 0x9A4B, 0x9A4C, 0x9A4E, 0x9A50, 0x9A51, 0x9A52, 0x9A53, + 0x9A54, 0x9A56, 0x9A58, 0x9A59, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A60, 0x9A61, + 0x9A63, 0x9A66, 0x9A67, 0x9A68, 0x9A69, 0x9A6B, 0x9A72, 0x9A83, 0x9A89, + 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB, + 0x9AAC, 0x9AAD, 0x9AAE, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, + 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9, + 0x9ACA, 0x9ACD, 0x9ACE, 0x9AD0, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC, + 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8, + 0x9AE9, 0x9AEA, 0x9AEC, 0x9AF0, 0x9AF1, 0x9AF2, 0x9AF3, 0x9AF4, 0x9AF5, + 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC, 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, + 0x9B01, 0x9B02, 0x9B04, 0x9B05, 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, + 0x9B0E, 0x9B10, 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18, + 0x9B19, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B24, 0x9B26, + 0x9B28, 0x9B2A, 0x9B2B, 0x9B2C, 0x9B2D, 0x9B30, 0x9B33, 0x9B34, 0x9B35, + 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F, 0x9B40, + 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B50, 0x9B52, 0x9B53, 0x9B55, 0x9B56, + 0x9B57, 0x9B59, 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, + 0x9B62, 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A, + 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B70, 0x9B71, 0x9B72, 0x9B73, 0x9B75, + 0x9B76, 0x9B78, 0x9B79, 0x9B7A, 0x9B7B, 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, + 0x9B80, 0x9B82, 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, + 0x9B8B, 0x9B8C, 0x9B8D, 0x9B8F, 0x9B93, 0x9B94, 0x9B95, 0x9B96, 0x9B97, + 0x9B98, 0x9B99, 0x9B9B, 0x9B9C, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3, + 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAC, 0x9BAF, 0x9BB0, + 0x9BB1, 0x9BB2, 0x9BB3, 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, + 0x9BBA, 0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC2, 0x9BC3, 0x9BC4, + 0x9BC5, 0x9BC6, 0x9BC8, 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, + 0x9BD1, 0x9BD2, 0x9BD3, 0x9BD5, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, 0x9BDC, + 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE3, 0x9BE5, 0x9BE6, 0x9BE9, 0x9BEC, 0x9BED, + 0x9BEE, 0x9BEF, 0x9BF1, 0x9BF2, 0x9BF3, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, + 0x9BF9, 0x9BFA, 0x9BFB, 0x9BFC, 0x9BFE, 0x9C00, 0x9C01, 0x9C02, 0x9C03, + 0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C0A, 0x9C0B, 0x9C0C, 0x9C0E, 0x9C0F, + 0x9C11, 0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A, 0x9C1B, + 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C21, 0x9C22, 0x9C24, 0x9C26, 0x9C27, + 0x9C2A, 0x9C2B, 0x9C2C, 0x9C2E, 0x9C2F, 0x9C30, 0x9C34, 0x9C36, 0x9C38, + 0x9C3A, 0x9C3C, 0x9C3D, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43, 0x9C44, + 0x9C46, 0x9C47, 0x9C4A, 0x9C4B, 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50, + 0x9C51, 0x9C53, 0x9C55, 0x9C59, 0x9C5A, 0x9C5B, 0x9C5C, 0x9C5E, 0x9C60, + 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0x9C65, 0x9C66, 0x9C68, 0x9C69, 0x9C6A, + 0x9C6B, 0x9C6C, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73, 0x9C74, + 0x9C75, 0x9C76, 0x9C77, 0x9C79, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, + 0x9C84, 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, + 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0, + 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0, + 0x9CE1, 0x9CE3, 0x9CE4, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CEA, 0x9CEB, 0x9CED, + 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2, 0x9CF5, 0x9CF7, 0x9CF8, 0x9CF9, + 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02, + 0x9D03, 0x9D04, 0x9D05, 0x9D08, 0x9D0A, 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, + 0x9D0F, 0x9D10, 0x9D11, 0x9D12, 0x9D13, 0x9D14, 0x9D16, 0x9D17, 0x9D18, + 0x9D19, 0x9D1A, 0x9D1C, 0x9D1E, 0x9D20, 0x9D21, 0x9D22, 0x9D24, 0x9D25, + 0x9D27, 0x9D29, 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D31, 0x9D32, + 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39, 0x9D3A, 0x9D3C, + 0x9D3D, 0x9D3E, 0x9D40, 0x9D41, 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, + 0x9D48, 0x9D49, 0x9D4A, 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, + 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A, 0x9D5B, 0x9D5E, + 0x9D5F, 0x9D62, 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, + 0x9D6B, 0x9D6D, 0x9D6E, 0x9D70, 0x9D71, 0x9D73, 0x9D74, 0x9D75, 0x9D76, + 0x9D77, 0x9D78, 0x9D79, 0x9D7A, 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, + 0x9D80, 0x9D81, 0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D88, 0x9D8A, + 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, 0x9D92, 0x9D94, + 0x9D95, 0x9D96, 0x9D97, 0x9D99, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, + 0x9DA0, 0x9DA1, 0x9DA2, 0x9DA3, 0x9DA4, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DAA, + 0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DB0, 0x9DB1, 0x9DB2, 0x9DB3, 0x9DB5, + 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC1, + 0x9DC3, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0x9DCC, + 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD4, 0x9DD5, 0x9DD6, + 0x9DD8, 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1, 0x9DE2, + 0x9DE3, 0x9DE4, 0x9DE7, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED, + 0x9DEE, 0x9DF0, 0x9DF1, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DFB, 0x9DFC, + 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, 0x9E02, 0x9E03, 0x9E04, 0x9E05, + 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A, 0x9E0B, 0x9E0D, 0x9E0E, 0x9E0F, + 0x9E10, 0x9E11, 0x9E12, 0x9E13, 0x9E14, 0x9E16, 0x9E17, 0x9E18, 0x9E19, + 0x9E1C, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, 0x9E40, + 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F, + 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E76, + 0x9E77, 0x9E78, 0x9E7B, 0x9E80, 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, + 0x9E89, 0x9E8A, 0x9E8C, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94, + 0x9E95, 0x9E96, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0, + 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA7, 0x9EA8, 0x9EAA, 0x9EAB, 0x9EAC, + 0x9EAD, 0x9EAE, 0x9EB0, 0x9EB1, 0x9EB2, 0x9EB3, 0x9EB6, 0x9EB7, 0x9EB9, + 0x9EBA, 0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, + 0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6, + 0x9ED7, 0x9ED9, 0x9EDA, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, 0x9EEB, 0x9EEC, + 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF3, 0x9EF5, 0x9EF6, 0x9EF8, 0x9EFA, + 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05, 0x9F06, 0x9F07, 0x9F08, + 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, 0x9F12, 0x9F14, 0x9F16, 0x9F18, 0x9F1A, + 0x9F1B, 0x9F1C, 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, + 0x9F26, 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30, + 0x9F31, 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, + 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47, 0x9F48, + 0x9F49, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F53, 0x9F55, 0x9F56, 0x9F57, 0x9F58, + 0x9F5A, 0x9F5B, 0x9F5D, 0x9F5E, 0x9F62, 0x9F64, 0x9F65, 0x9F67, 0x9F68, + 0x9F69, 0x9F6B, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F73, 0x9F74, + 0x9F75, 0x9F76, 0x9F78, 0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, + 0x9F81, 0x9F82, 0x9F8E, 0x9F8F, 0x9F91, 0x9F92, 0x9F93, 0x9F96, 0x9F97, + 0x9F98, 0x9F9D, 0x9F9E, 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, + 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20, + 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, 0x2E81, 0x0000, 0x0000, + 0x0000, 0x2E84, 0x3473, 0x3447, 0x2E88, 0x2E8B, 0x9FB4, 0x359E, 0x361A, + 0x360E, 0x2E8C, 0x2E97, 0x396E, 0x3918, 0x9FB5, 0x39CF, 0x39DF, 0x3A73, + 0x39D0, 0x9FB6, 0x9FB7, 0x3B4E, 0x3C6E, 0x3CE0, 0x2EA7, 0x0000, 0x9FB8, + 0x2EAA, 0x4056, 0x415F, 0x2EAE, 0x4337, 0x2EB3, 0x2EB6, 0x2EB7, 0x0000, + 0x43B1, 0x43AC, 0x2EBB, 0x43DD, 0x44D6, 0x4661, 0x464C, 0x9FB9, 0x4723, + 0x4729, 0x477C, 0x478D, 0x2ECA, 0x4947, 0x497A, 0x497D, 0x4982, 0x4983, + 0x4985, 0x4986, 0x499F, 0x499B, 0x49B7, 0x49B6, 0x9FBA, 0x0000, 0x4CA3, + 0x4C9F, 0x4CA0, 0x4CA1, 0x4C77, 0x4CA2, 0x4D13, 0x4D14, 0x4D15, 0x4D16, + 0x4D17, 0x4D18, 0x4D19, 0x4DAE, 0x9FBB, 0x0020, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, + 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, + 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, + 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, + 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, + 0x007E, 0x00FC, 0x00A9, 0x2122, 0x2026, 0x0021, 0x0022, 0x0023, 0x0024, + 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, + 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, + 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, + 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, + 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, + 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, + 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, + 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, + 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, + 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B, + 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA, + 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, + 0x1E3F, 0x0144, 0x0148, 0x01F9, 0x0261, 0x0020, 0x20AC, 0x00A5, 0x20AC, + 0x0024, 0x303F, 0x20AC, 0x3041, 0x3047, 0x3043, 0x304B, 0x304B, 0x3051, + 0x3051, 0x3053, 0x3053, 0x3049, 0x3064, 0x3045, 0x308E, 0x3083, 0x3087, + 0x3085, 0x3094, 0x30A1, 0x30A7, 0x30A3, 0x30F5, 0x30F6, 0x30B3, 0x30B3, + 0x30A9, 0x30C3, 0x30A5, 0x30EE, 0x30E3, 0x30E7, 0x30E5, 0x30F7, 0x30F9, + 0x30F8, 0x30FA, 0x30FC, 0x3033, 0x3034, 0x3035, 0x3038, 0x3039, 0x303A, + 0x312A, 0x312B, 0x312C, 0x31A0, 0x31A1, 0x31A2, 0x31A3, 0x31A4, 0x31A5, + 0x31A6, 0x31A7, 0x31A8, 0x31A9, 0x31AA, 0x31AB, 0x31AC, 0x31AD, 0x31AE, + 0x31AF, 0x31B0, 0x31B1, 0x31B2, 0x31B3, 0x31B4, 0x31B5, 0x31B6, 0x31B7, + 0x2E80, 0x2E82, 0x2E83, 0x2E85, 0x2E86, 0x2E87, 0x2E89, 0x2E8A, 0x2E8D, + 0x2E8E, 0x2E8F, 0x2E90, 0x2E91, 0x2E92, 0x2E93, 0x2E94, 0x2E95, 0x2E96, + 0x2E98, 0x2E99, 0x2E9B, 0x2E9C, 0x2E9D, 0x2E9E, 0x2E9F, 0x2EA0, 0x2EA1, + 0x2EA2, 0x2EA3, 0x2EA4, 0x2EA5, 0x2EA6, 0x2EA8, 0x2EA9, 0x2EAB, 0x2EAC, + 0x2EAD, 0x2EAF, 0x2EB0, 0x2EB1, 0x2EB2, 0x2EB4, 0x2EB5, 0x2EB8, 0x2EB9, + 0x2EBA, 0x2EBC, 0x2EBD, 0x2EBE, 0x2EBF, 0x2EC0, 0x2EC1, 0x2EC2, 0x2EC3, + 0x2EC4, 0x2EC5, 0x2EC6, 0x2EC7, 0x2EC8, 0x2EC9, 0x2ECB, 0x2ECC, 0x2ECD, + 0x2ECE, 0x2ECF, 0x2ED0, 0x2ED1, 0x2ED2, 0x2ED3, 0x2ED4, 0x2ED5, 0x2ED6, + 0x2ED7, 0x2ED8, 0x2ED9, 0x2EDA, 0x2EDB, 0x2EDC, 0x2EDD, 0x2EDE, 0x2EDF, + 0x2EE0, 0x2EE1, 0x2EE2, 0x2EE3, 0x2EE4, 0x2EE5, 0x2EE6, 0x2EE7, 0x2EE8, + 0x2EE9, 0x2EEA, 0x2EEB, 0x2EEC, 0x2EED, 0x2EEE, 0x2EEF, 0x2EF0, 0x2EF1, + 0x2EF2, 0x2EF3, 0x3400, 0x3401, 0x3402, 0x3403, 0x3404, 0x3405, 0x3406, + 0x3407, 0x3408, 0x3409, 0x340A, 0x340B, 0x340C, 0x340D, 0x340E, 0x340F, + 0x3410, 0x3411, 0x3412, 0x3413, 0x3414, 0x3415, 0x3416, 0x3417, 0x3418, + 0x3419, 0x341A, 0x341B, 0x341C, 0x341D, 0x341E, 0x341F, 0x3420, 0x3421, + 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427, 0x3428, 0x3429, 0x342A, + 0x342B, 0x342C, 0x342D, 0x342E, 0x342F, 0x3430, 0x3431, 0x3432, 0x3433, + 0x3434, 0x3435, 0x3436, 0x3437, 0x3438, 0x3439, 0x343A, 0x343B, 0x343C, + 0x343D, 0x343E, 0x343F, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, + 0x3446, 0x3448, 0x3449, 0x344A, 0x344B, 0x344C, 0x344D, 0x344E, 0x344F, + 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457, 0x3458, + 0x3459, 0x345A, 0x345B, 0x345C, 0x345D, 0x345E, 0x345F, 0x3460, 0x3461, + 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467, 0x3468, 0x3469, 0x346A, + 0x346B, 0x346C, 0x346D, 0x346E, 0x346F, 0x3470, 0x3471, 0x3472, 0x3474, + 0x3475, 0x3476, 0x3477, 0x3478, 0x3479, 0x347A, 0x347B, 0x347C, 0x347D, + 0x347E, 0x347F, 0x3480, 0x3481, 0x3482, 0x3483, 0x3484, 0x3485, 0x3486, + 0x3487, 0x3488, 0x3489, 0x348A, 0x348B, 0x348C, 0x348D, 0x348E, 0x348F, + 0x3490, 0x3491, 0x3492, 0x3493, 0x3494, 0x3495, 0x3496, 0x3497, 0x3498, + 0x3499, 0x349A, 0x349B, 0x349C, 0x349D, 0x349E, 0x349F, 0x34A0, 0x34A1, + 0x34A2, 0x34A3, 0x34A4, 0x34A5, 0x34A6, 0x34A7, 0x34A8, 0x34A9, 0x34AA, + 0x34AB, 0x34AC, 0x34AD, 0x34AE, 0x34AF, 0x34B0, 0x34B1, 0x34B2, 0x34B3, + 0x34B4, 0x34B5, 0x34B6, 0x34B7, 0x34B8, 0x34B9, 0x34BA, 0x34BB, 0x34BC, + 0x34BD, 0x34BE, 0x34BF, 0x34C0, 0x34C1, 0x34C2, 0x34C3, 0x34C4, 0x34C5, + 0x34C6, 0x34C7, 0x34C8, 0x34C9, 0x34CA, 0x34CB, 0x34CC, 0x34CD, 0x34CE, + 0x34CF, 0x34D0, 0x34D1, 0x34D2, 0x34D3, 0x34D4, 0x34D5, 0x34D6, 0x34D7, + 0x34D8, 0x34D9, 0x34DA, 0x34DB, 0x34DC, 0x34DD, 0x34DE, 0x34DF, 0x34E0, + 0x34E1, 0x34E2, 0x34E3, 0x34E4, 0x34E5, 0x34E6, 0x34E7, 0x34E8, 0x34E9, + 0x34EA, 0x34EB, 0x34EC, 0x34ED, 0x34EE, 0x34EF, 0x34F0, 0x34F1, 0x34F2, + 0x34F3, 0x34F4, 0x34F5, 0x34F6, 0x34F7, 0x34F8, 0x34F9, 0x34FA, 0x34FB, + 0x34FC, 0x34FD, 0x34FE, 0x34FF, 0x3500, 0x3501, 0x3502, 0x3503, 0x3504, + 0x3505, 0x3506, 0x3507, 0x3508, 0x3509, 0x350A, 0x350B, 0x350C, 0x350D, + 0x350E, 0x350F, 0x3510, 0x3511, 0x3512, 0x3513, 0x3514, 0x3515, 0x3516, + 0x3517, 0x3518, 0x3519, 0x351A, 0x351B, 0x351C, 0x351D, 0x351E, 0x351F, + 0x3520, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528, + 0x3529, 0x352A, 0x352B, 0x352C, 0x352D, 0x352E, 0x352F, 0x3530, 0x3531, + 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538, 0x3539, 0x353A, + 0x353B, 0x353C, 0x353D, 0x353E, 0x353F, 0x3540, 0x3541, 0x3542, 0x3543, + 0x3544, 0x3545, 0x3546, 0x3547, 0x3548, 0x3549, 0x354A, 0x354B, 0x354C, + 0x354D, 0x354E, 0x354F, 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, + 0x3556, 0x3557, 0x3558, 0x3559, 0x355A, 0x355B, 0x355C, 0x355D, 0x355E, + 0x355F, 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, + 0x3568, 0x3569, 0x356A, 0x356B, 0x356C, 0x356D, 0x356E, 0x356F, 0x3570, + 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578, 0x3579, + 0x357A, 0x357B, 0x357C, 0x357D, 0x357E, 0x357F, 0x3580, 0x3581, 0x3582, + 0x3583, 0x3584, 0x3585, 0x3586, 0x3587, 0x3588, 0x3589, 0x358A, 0x358B, + 0x358C, 0x358D, 0x358E, 0x358F, 0x3590, 0x3591, 0x3592, 0x3593, 0x3594, + 0x3595, 0x3596, 0x3597, 0x3598, 0x3599, 0x359A, 0x359B, 0x359C, 0x359D, + 0x359F, 0x35A0, 0x35A1, 0x35A2, 0x35A3, 0x35A4, 0x35A5, 0x35A6, 0x35A7, + 0x35A8, 0x35A9, 0x35AA, 0x35AB, 0x35AC, 0x35AD, 0x35AE, 0x35AF, 0x35B0, + 0x35B1, 0x35B2, 0x35B3, 0x35B4, 0x35B5, 0x35B6, 0x35B7, 0x35B8, 0x35B9, + 0x35BA, 0x35BB, 0x35BC, 0x35BD, 0x35BE, 0x35BF, 0x35C0, 0x35C1, 0x35C2, + 0x35C3, 0x35C4, 0x35C5, 0x35C6, 0x35C7, 0x35C8, 0x35C9, 0x35CA, 0x35CB, + 0x35CC, 0x35CD, 0x35CE, 0x35CF, 0x35D0, 0x35D1, 0x35D2, 0x35D3, 0x35D4, + 0x35D5, 0x35D6, 0x35D7, 0x35D8, 0x35D9, 0x35DA, 0x35DB, 0x35DC, 0x35DD, + 0x35DE, 0x35DF, 0x35E0, 0x35E1, 0x35E2, 0x35E3, 0x35E4, 0x35E5, 0x35E6, + 0x35E7, 0x35E8, 0x35E9, 0x35EA, 0x35EB, 0x35EC, 0x35ED, 0x35EE, 0x35EF, + 0x35F0, 0x35F1, 0x35F2, 0x35F3, 0x35F4, 0x35F5, 0x35F6, 0x35F7, 0x35F8, + 0x35F9, 0x35FA, 0x35FB, 0x35FC, 0x35FD, 0x35FE, 0x35FF, 0x3600, 0x3601, + 0x3602, 0x3603, 0x3604, 0x3605, 0x3606, 0x3607, 0x3608, 0x3609, 0x360A, + 0x360B, 0x360C, 0x360D, 0x360F, 0x3610, 0x3611, 0x3612, 0x3613, 0x3614, + 0x3615, 0x3616, 0x3617, 0x3618, 0x3619, 0x361B, 0x361C, 0x361D, 0x361E, + 0x361F, 0x3620, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, + 0x3628, 0x3629, 0x362A, 0x362B, 0x362C, 0x362D, 0x362E, 0x362F, 0x3630, + 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, + 0x363A, 0x363B, 0x363C, 0x363D, 0x363E, 0x363F, 0x3640, 0x3641, 0x3642, + 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364A, 0x364B, + 0x364C, 0x364D, 0x364E, 0x364F, 0x3650, 0x3651, 0x3652, 0x3653, 0x3654, + 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365A, 0x365B, 0x365C, 0x365D, + 0x365E, 0x365F, 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666, + 0x3667, 0x3668, 0x3669, 0x366A, 0x366B, 0x366C, 0x366D, 0x366E, 0x366F, + 0x3670, 0x3671, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, + 0x3679, 0x367A, 0x367B, 0x367C, 0x367D, 0x367E, 0x367F, 0x3680, 0x3681, + 0x3682, 0x3683, 0x3684, 0x3685, 0x3686, 0x3687, 0x3688, 0x3689, 0x368A, + 0x368B, 0x368C, 0x368D, 0x368E, 0x368F, 0x3690, 0x3691, 0x3692, 0x3693, + 0x3694, 0x3695, 0x3696, 0x3697, 0x3698, 0x3699, 0x369A, 0x369B, 0x369C, + 0x369D, 0x369E, 0x369F, 0x36A0, 0x36A1, 0x36A2, 0x36A3, 0x36A4, 0x36A5, + 0x36A6, 0x36A7, 0x36A8, 0x36A9, 0x36AA, 0x36AB, 0x36AC, 0x36AD, 0x36AE, + 0x36AF, 0x36B0, 0x36B1, 0x36B2, 0x36B3, 0x36B4, 0x36B5, 0x36B6, 0x36B7, + 0x36B8, 0x36B9, 0x36BA, 0x36BB, 0x36BC, 0x36BD, 0x36BE, 0x36BF, 0x36C0, + 0x36C1, 0x36C2, 0x36C3, 0x36C4, 0x36C5, 0x36C6, 0x36C7, 0x36C8, 0x36C9, + 0x36CA, 0x36CB, 0x36CC, 0x36CD, 0x36CE, 0x36CF, 0x36D0, 0x36D1, 0x36D2, + 0x36D3, 0x36D4, 0x36D5, 0x36D6, 0x36D7, 0x36D8, 0x36D9, 0x36DA, 0x36DB, + 0x36DC, 0x36DD, 0x36DE, 0x36DF, 0x36E0, 0x36E1, 0x36E2, 0x36E3, 0x36E4, + 0x36E5, 0x36E6, 0x36E7, 0x36E8, 0x36E9, 0x36EA, 0x36EB, 0x36EC, 0x36ED, + 0x36EE, 0x36EF, 0x36F0, 0x36F1, 0x36F2, 0x36F3, 0x36F4, 0x36F5, 0x36F6, + 0x36F7, 0x36F8, 0x36F9, 0x36FA, 0x36FB, 0x36FC, 0x36FD, 0x36FE, 0x36FF, + 0x3700, 0x3701, 0x3702, 0x3703, 0x3704, 0x3705, 0x3706, 0x3707, 0x3708, + 0x3709, 0x370A, 0x370B, 0x370C, 0x370D, 0x370E, 0x370F, 0x3710, 0x3711, + 0x3712, 0x3713, 0x3714, 0x3715, 0x3716, 0x3717, 0x3718, 0x3719, 0x371A, + 0x371B, 0x371C, 0x371D, 0x371E, 0x371F, 0x3720, 0x3721, 0x3722, 0x3723, + 0x3724, 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372A, 0x372B, 0x372C, + 0x372D, 0x372E, 0x372F, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735, + 0x3736, 0x3737, 0x3738, 0x3739, 0x373A, 0x373B, 0x373C, 0x373D, 0x373E, + 0x373F, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, + 0x3748, 0x3749, 0x374A, 0x374B, 0x374C, 0x374D, 0x374E, 0x374F, 0x3750, + 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757, 0x3758, 0x3759, + 0x375A, 0x375B, 0x375C, 0x375D, 0x375E, 0x375F, 0x3760, 0x3761, 0x3762, + 0x3763, 0x3764, 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376A, 0x376B, + 0x376C, 0x376D, 0x376E, 0x376F, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774, + 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377A, 0x377B, 0x377C, 0x377D, + 0x377E, 0x377F, 0x3780, 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786, + 0x3787, 0x3788, 0x3789, 0x378A, 0x378B, 0x378C, 0x378D, 0x378E, 0x378F, + 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796, 0x3797, 0x3798, + 0x3799, 0x379A, 0x379B, 0x379C, 0x379D, 0x379E, 0x379F, 0x37A0, 0x37A1, + 0x37A2, 0x37A3, 0x37A4, 0x37A5, 0x37A6, 0x37A7, 0x37A8, 0x37A9, 0x37AA, + 0x37AB, 0x37AC, 0x37AD, 0x37AE, 0x37AF, 0x37B0, 0x37B1, 0x37B2, 0x37B3, + 0x37B4, 0x37B5, 0x37B6, 0x37B7, 0x37B8, 0x37B9, 0x37BA, 0x37BB, 0x37BC, + 0x37BD, 0x37BE, 0x37BF, 0x37C0, 0x37C1, 0x37C2, 0x37C3, 0x37C4, 0x37C5, + 0x37C6, 0x37C7, 0x37C8, 0x37C9, 0x37CA, 0x37CB, 0x37CC, 0x37CD, 0x37CE, + 0x37CF, 0x37D0, 0x37D1, 0x37D2, 0x37D3, 0x37D4, 0x37D5, 0x37D6, 0x37D7, + 0x37D8, 0x37D9, 0x37DA, 0x37DB, 0x37DC, 0x37DD, 0x37DE, 0x37DF, 0x37E0, + 0x37E1, 0x37E2, 0x37E3, 0x37E4, 0x37E5, 0x37E6, 0x37E7, 0x37E8, 0x37E9, + 0x37EA, 0x37EB, 0x37EC, 0x37ED, 0x37EE, 0x37EF, 0x37F0, 0x37F1, 0x37F2, + 0x37F3, 0x37F4, 0x37F5, 0x37F6, 0x37F7, 0x37F8, 0x37F9, 0x37FA, 0x37FB, + 0x37FC, 0x37FD, 0x37FE, 0x37FF, 0x3800, 0x3801, 0x3802, 0x3803, 0x3804, + 0x3805, 0x3806, 0x3807, 0x3808, 0x3809, 0x380A, 0x380B, 0x380C, 0x380D, + 0x380E, 0x380F, 0x3810, 0x3811, 0x3812, 0x3813, 0x3814, 0x3815, 0x3816, + 0x3817, 0x3818, 0x3819, 0x381A, 0x381B, 0x381C, 0x381D, 0x381E, 0x381F, + 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827, 0x3828, + 0x3829, 0x382A, 0x382B, 0x382C, 0x382D, 0x382E, 0x382F, 0x3830, 0x3831, + 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837, 0x3838, 0x3839, 0x383A, + 0x383B, 0x383C, 0x383D, 0x383E, 0x383F, 0x3840, 0x3841, 0x3842, 0x3843, + 0x3844, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849, 0x384A, 0x384B, 0x384C, + 0x384D, 0x384E, 0x384F, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, + 0x3856, 0x3857, 0x3858, 0x3859, 0x385A, 0x385B, 0x385C, 0x385D, 0x385E, + 0x385F, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866, 0x3867, + 0x3868, 0x3869, 0x386A, 0x386B, 0x386C, 0x386D, 0x386E, 0x386F, 0x3870, + 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, 0x3878, 0x3879, + 0x387A, 0x387B, 0x387C, 0x387D, 0x387E, 0x387F, 0x3880, 0x3881, 0x3882, + 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, 0x3888, 0x3889, 0x388A, 0x388B, + 0x388C, 0x388D, 0x388E, 0x388F, 0x3890, 0x3891, 0x3892, 0x3893, 0x3894, + 0x3895, 0x3896, 0x3897, 0x3898, 0x3899, 0x389A, 0x389B, 0x389C, 0x389D, + 0x389E, 0x389F, 0x38A0, 0x38A1, 0x38A2, 0x38A3, 0x38A4, 0x38A5, 0x38A6, + 0x38A7, 0x38A8, 0x38A9, 0x38AA, 0x38AB, 0x38AC, 0x38AD, 0x38AE, 0x38AF, + 0x38B0, 0x38B1, 0x38B2, 0x38B3, 0x38B4, 0x38B5, 0x38B6, 0x38B7, 0x38B8, + 0x38B9, 0x38BA, 0x38BB, 0x38BC, 0x38BD, 0x38BE, 0x38BF, 0x38C0, 0x38C1, + 0x38C2, 0x38C3, 0x38C4, 0x38C5, 0x38C6, 0x38C7, 0x38C8, 0x38C9, 0x38CA, + 0x38CB, 0x38CC, 0x38CD, 0x38CE, 0x38CF, 0x38D0, 0x38D1, 0x38D2, 0x38D3, + 0x38D4, 0x38D5, 0x38D6, 0x38D7, 0x38D8, 0x38D9, 0x38DA, 0x38DB, 0x38DC, + 0x38DD, 0x38DE, 0x38DF, 0x38E0, 0x38E1, 0x38E2, 0x38E3, 0x38E4, 0x38E5, + 0x38E6, 0x38E7, 0x38E8, 0x38E9, 0x38EA, 0x38EB, 0x38EC, 0x38ED, 0x38EE, + 0x38EF, 0x38F0, 0x38F1, 0x38F2, 0x38F3, 0x38F4, 0x38F5, 0x38F6, 0x38F7, + 0x38F8, 0x38F9, 0x38FA, 0x38FB, 0x38FC, 0x38FD, 0x38FE, 0x38FF, 0x3900, + 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, 0x3908, 0x3909, + 0x390A, 0x390B, 0x390C, 0x390D, 0x390E, 0x390F, 0x3910, 0x3911, 0x3912, + 0x3913, 0x3914, 0x3915, 0x3916, 0x3917, 0x3919, 0x391A, 0x391B, 0x391C, + 0x391D, 0x391E, 0x391F, 0x3920, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, + 0x3926, 0x3927, 0x3928, 0x3929, 0x392A, 0x392B, 0x392C, 0x392D, 0x392E, + 0x392F, 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, + 0x3938, 0x3939, 0x393A, 0x393B, 0x393C, 0x393D, 0x393E, 0x393F, 0x3940, + 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949, + 0x394A, 0x394B, 0x394C, 0x394D, 0x394E, 0x394F, 0x3950, 0x3951, 0x3952, + 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959, 0x395A, 0x395B, + 0x395C, 0x395D, 0x395E, 0x395F, 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, + 0x3965, 0x3966, 0x3967, 0x3968, 0x3969, 0x396A, 0x396B, 0x396C, 0x396D, + 0x396F, 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, + 0x3978, 0x3979, 0x397A, 0x397B, 0x397C, 0x397D, 0x397E, 0x397F, 0x3980, + 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987, 0x3988, 0x3989, + 0x398A, 0x398B, 0x398C, 0x398D, 0x398E, 0x398F, 0x3990, 0x3991, 0x3992, + 0x3993, 0x3994, 0x3995, 0x3996, 0x3997, 0x3998, 0x3999, 0x399A, 0x399B, + 0x399C, 0x399D, 0x399E, 0x399F, 0x39A0, 0x39A1, 0x39A2, 0x39A3, 0x39A4, + 0x39A5, 0x39A6, 0x39A7, 0x39A8, 0x39A9, 0x39AA, 0x39AB, 0x39AC, 0x39AD, + 0x39AE, 0x39AF, 0x39B0, 0x39B1, 0x39B2, 0x39B3, 0x39B4, 0x39B5, 0x39B6, + 0x39B7, 0x39B8, 0x39B9, 0x39BA, 0x39BB, 0x39BC, 0x39BD, 0x39BE, 0x39BF, + 0x39C0, 0x39C1, 0x39C2, 0x39C3, 0x39C4, 0x39C5, 0x39C6, 0x39C7, 0x39C8, + 0x39C9, 0x39CA, 0x39CB, 0x39CC, 0x39CD, 0x39CE, 0x39D1, 0x39D2, 0x39D3, + 0x39D4, 0x39D5, 0x39D6, 0x39D7, 0x39D8, 0x39D9, 0x39DA, 0x39DB, 0x39DC, + 0x39DD, 0x39DE, 0x39E0, 0x39E1, 0x39E2, 0x39E3, 0x39E4, 0x39E5, 0x39E6, + 0x39E7, 0x39E8, 0x39E9, 0x39EA, 0x39EB, 0x39EC, 0x39ED, 0x39EE, 0x39EF, + 0x39F0, 0x39F1, 0x39F2, 0x39F3, 0x39F4, 0x39F5, 0x39F6, 0x39F7, 0x39F8, + 0x39F9, 0x39FA, 0x39FB, 0x39FC, 0x39FD, 0x39FE, 0x39FF, 0x3A00, 0x3A01, + 0x3A02, 0x3A03, 0x3A04, 0x3A05, 0x3A06, 0x3A07, 0x3A08, 0x3A09, 0x3A0A, + 0x3A0B, 0x3A0C, 0x3A0D, 0x3A0E, 0x3A0F, 0x3A10, 0x3A11, 0x3A12, 0x3A13, + 0x3A14, 0x3A15, 0x3A16, 0x3A17, 0x3A18, 0x3A19, 0x3A1A, 0x3A1B, 0x3A1C, + 0x3A1D, 0x3A1E, 0x3A1F, 0x3A20, 0x3A21, 0x3A22, 0x3A23, 0x3A24, 0x3A25, + 0x3A26, 0x3A27, 0x3A28, 0x3A29, 0x3A2A, 0x3A2B, 0x3A2C, 0x3A2D, 0x3A2E, + 0x3A2F, 0x3A30, 0x3A31, 0x3A32, 0x3A33, 0x3A34, 0x3A35, 0x3A36, 0x3A37, + 0x3A38, 0x3A39, 0x3A3A, 0x3A3B, 0x3A3C, 0x3A3D, 0x3A3E, 0x3A3F, 0x3A40, + 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45, 0x3A46, 0x3A47, 0x3A48, 0x3A49, + 0x3A4A, 0x3A4B, 0x3A4C, 0x3A4D, 0x3A4E, 0x3A4F, 0x3A50, 0x3A51, 0x3A52, + 0x3A53, 0x3A54, 0x3A55, 0x3A56, 0x3A57, 0x3A58, 0x3A59, 0x3A5A, 0x3A5B, + 0x3A5C, 0x3A5D, 0x3A5E, 0x3A5F, 0x3A60, 0x3A61, 0x3A62, 0x3A63, 0x3A64, + 0x3A65, 0x3A66, 0x3A67, 0x3A68, 0x3A69, 0x3A6A, 0x3A6B, 0x3A6C, 0x3A6D, + 0x3A6E, 0x3A6F, 0x3A70, 0x3A71, 0x3A72, 0x3A74, 0x3A75, 0x3A76, 0x3A77, + 0x3A78, 0x3A79, 0x3A7A, 0x3A7B, 0x3A7C, 0x3A7D, 0x3A7E, 0x3A7F, 0x3A80, + 0x3A81, 0x3A82, 0x3A83, 0x3A84, 0x3A85, 0x3A86, 0x3A87, 0x3A88, 0x3A89, + 0x3A8A, 0x3A8B, 0x3A8C, 0x3A8D, 0x3A8E, 0x3A8F, 0x3A90, 0x3A91, 0x3A92, + 0x3A93, 0x3A94, 0x3A95, 0x3A96, 0x3A97, 0x3A98, 0x3A99, 0x3A9A, 0x3A9B, + 0x3A9C, 0x3A9D, 0x3A9E, 0x3A9F, 0x3AA0, 0x3AA1, 0x3AA2, 0x3AA3, 0x3AA4, + 0x3AA5, 0x3AA6, 0x3AA7, 0x3AA8, 0x3AA9, 0x3AAA, 0x3AAB, 0x3AAC, 0x3AAD, + 0x3AAE, 0x3AAF, 0x3AB0, 0x3AB1, 0x3AB2, 0x3AB3, 0x3AB4, 0x3AB5, 0x3AB6, + 0x3AB7, 0x3AB8, 0x3AB9, 0x3ABA, 0x3ABB, 0x3ABC, 0x3ABD, 0x3ABE, 0x3ABF, + 0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3, 0x3AC4, 0x3AC5, 0x3AC6, 0x3AC7, 0x3AC8, + 0x3AC9, 0x3ACA, 0x3ACB, 0x3ACC, 0x3ACD, 0x3ACE, 0x3ACF, 0x3AD0, 0x3AD1, + 0x3AD2, 0x3AD3, 0x3AD4, 0x3AD5, 0x3AD6, 0x3AD7, 0x3AD8, 0x3AD9, 0x3ADA, + 0x3ADB, 0x3ADC, 0x3ADD, 0x3ADE, 0x3ADF, 0x3AE0, 0x3AE1, 0x3AE2, 0x3AE3, + 0x3AE4, 0x3AE5, 0x3AE6, 0x3AE7, 0x3AE8, 0x3AE9, 0x3AEA, 0x3AEB, 0x3AEC, + 0x3AED, 0x3AEE, 0x3AEF, 0x3AF0, 0x3AF1, 0x3AF2, 0x3AF3, 0x3AF4, 0x3AF5, + 0x3AF6, 0x3AF7, 0x3AF8, 0x3AF9, 0x3AFA, 0x3AFB, 0x3AFC, 0x3AFD, 0x3AFE, + 0x3AFF, 0x3B00, 0x3B01, 0x3B02, 0x3B03, 0x3B04, 0x3B05, 0x3B06, 0x3B07, + 0x3B08, 0x3B09, 0x3B0A, 0x3B0B, 0x3B0C, 0x3B0D, 0x3B0E, 0x3B0F, 0x3B10, + 0x3B11, 0x3B12, 0x3B13, 0x3B14, 0x3B15, 0x3B16, 0x3B17, 0x3B18, 0x3B19, + 0x3B1A, 0x3B1B, 0x3B1C, 0x3B1D, 0x3B1E, 0x3B1F, 0x3B20, 0x3B21, 0x3B22, + 0x3B23, 0x3B24, 0x3B25, 0x3B26, 0x3B27, 0x3B28, 0x3B29, 0x3B2A, 0x3B2B, + 0x3B2C, 0x3B2D, 0x3B2E, 0x3B2F, 0x3B30, 0x3B31, 0x3B32, 0x3B33, 0x3B34, + 0x3B35, 0x3B36, 0x3B37, 0x3B38, 0x3B39, 0x3B3A, 0x3B3B, 0x3B3C, 0x3B3D, + 0x3B3E, 0x3B3F, 0x3B40, 0x3B41, 0x3B42, 0x3B43, 0x3B44, 0x3B45, 0x3B46, + 0x3B47, 0x3B48, 0x3B49, 0x3B4A, 0x3B4B, 0x3B4C, 0x3B4D, 0x3B4F, 0x3B50, + 0x3B51, 0x3B52, 0x3B53, 0x3B54, 0x3B55, 0x3B56, 0x3B57, 0x3B58, 0x3B59, + 0x3B5A, 0x3B5B, 0x3B5C, 0x3B5D, 0x3B5E, 0x3B5F, 0x3B60, 0x3B61, 0x3B62, + 0x3B63, 0x3B64, 0x3B65, 0x3B66, 0x3B67, 0x3B68, 0x3B69, 0x3B6A, 0x3B6B, + 0x3B6C, 0x3B6D, 0x3B6E, 0x3B6F, 0x3B70, 0x3B71, 0x3B72, 0x3B73, 0x3B74, + 0x3B75, 0x3B76, 0x3B77, 0x3B78, 0x3B79, 0x3B7A, 0x3B7B, 0x3B7C, 0x3B7D, + 0x3B7E, 0x3B7F, 0x3B80, 0x3B81, 0x3B82, 0x3B83, 0x3B84, 0x3B85, 0x3B86, + 0x3B87, 0x3B88, 0x3B89, 0x3B8A, 0x3B8B, 0x3B8C, 0x3B8D, 0x3B8E, 0x3B8F, + 0x3B90, 0x3B91, 0x3B92, 0x3B93, 0x3B94, 0x3B95, 0x3B96, 0x3B97, 0x3B98, + 0x3B99, 0x3B9A, 0x3B9B, 0x3B9C, 0x3B9D, 0x3B9E, 0x3B9F, 0x3BA0, 0x3BA1, + 0x3BA2, 0x3BA3, 0x3BA4, 0x3BA5, 0x3BA6, 0x3BA7, 0x3BA8, 0x3BA9, 0x3BAA, + 0x3BAB, 0x3BAC, 0x3BAD, 0x3BAE, 0x3BAF, 0x3BB0, 0x3BB1, 0x3BB2, 0x3BB3, + 0x3BB4, 0x3BB5, 0x3BB6, 0x3BB7, 0x3BB8, 0x3BB9, 0x3BBA, 0x3BBB, 0x3BBC, + 0x3BBD, 0x3BBE, 0x3BBF, 0x3BC0, 0x3BC1, 0x3BC2, 0x3BC3, 0x3BC4, 0x3BC5, + 0x3BC6, 0x3BC7, 0x3BC8, 0x3BC9, 0x3BCA, 0x3BCB, 0x3BCC, 0x3BCD, 0x3BCE, + 0x3BCF, 0x3BD0, 0x3BD1, 0x3BD2, 0x3BD3, 0x3BD4, 0x3BD5, 0x3BD6, 0x3BD7, + 0x3BD8, 0x3BD9, 0x3BDA, 0x3BDB, 0x3BDC, 0x3BDD, 0x3BDE, 0x3BDF, 0x3BE0, + 0x3BE1, 0x3BE2, 0x3BE3, 0x3BE4, 0x3BE5, 0x3BE6, 0x3BE7, 0x3BE8, 0x3BE9, + 0x3BEA, 0x3BEB, 0x3BEC, 0x3BED, 0x3BEE, 0x3BEF, 0x3BF0, 0x3BF1, 0x3BF2, + 0x3BF3, 0x3BF4, 0x3BF5, 0x3BF6, 0x3BF7, 0x3BF8, 0x3BF9, 0x3BFA, 0x3BFB, + 0x3BFC, 0x3BFD, 0x3BFE, 0x3BFF, 0x3C00, 0x3C01, 0x3C02, 0x3C03, 0x3C04, + 0x3C05, 0x3C06, 0x3C07, 0x3C08, 0x3C09, 0x3C0A, 0x3C0B, 0x3C0C, 0x3C0D, + 0x3C0E, 0x3C0F, 0x3C10, 0x3C11, 0x3C12, 0x3C13, 0x3C14, 0x3C15, 0x3C16, + 0x3C17, 0x3C18, 0x3C19, 0x3C1A, 0x3C1B, 0x3C1C, 0x3C1D, 0x3C1E, 0x3C1F, + 0x3C20, 0x3C21, 0x3C22, 0x3C23, 0x3C24, 0x3C25, 0x3C26, 0x3C27, 0x3C28, + 0x3C29, 0x3C2A, 0x3C2B, 0x3C2C, 0x3C2D, 0x3C2E, 0x3C2F, 0x3C30, 0x3C31, + 0x3C32, 0x3C33, 0x3C34, 0x3C35, 0x3C36, 0x3C37, 0x3C38, 0x3C39, 0x3C3A, + 0x3C3B, 0x3C3C, 0x3C3D, 0x3C3E, 0x3C3F, 0x3C40, 0x3C41, 0x3C42, 0x3C43, + 0x3C44, 0x3C45, 0x3C46, 0x3C47, 0x3C48, 0x3C49, 0x3C4A, 0x3C4B, 0x3C4C, + 0x3C4D, 0x3C4E, 0x3C4F, 0x3C50, 0x3C51, 0x3C52, 0x3C53, 0x3C54, 0x3C55, + 0x3C56, 0x3C57, 0x3C58, 0x3C59, 0x3C5A, 0x3C5B, 0x3C5C, 0x3C5D, 0x3C5E, + 0x3C5F, 0x3C60, 0x3C61, 0x3C62, 0x3C63, 0x3C64, 0x3C65, 0x3C66, 0x3C67, + 0x3C68, 0x3C69, 0x3C6A, 0x3C6B, 0x3C6C, 0x3C6D, 0x3C6F, 0x3C70, 0x3C71, + 0x3C72, 0x3C73, 0x3C74, 0x3C75, 0x3C76, 0x3C77, 0x3C78, 0x3C79, 0x3C7A, + 0x3C7B, 0x3C7C, 0x3C7D, 0x3C7E, 0x3C7F, 0x3C80, 0x3C81, 0x3C82, 0x3C83, + 0x3C84, 0x3C85, 0x3C86, 0x3C87, 0x3C88, 0x3C89, 0x3C8A, 0x3C8B, 0x3C8C, + 0x3C8D, 0x3C8E, 0x3C8F, 0x3C90, 0x3C91, 0x3C92, 0x3C93, 0x3C94, 0x3C95, + 0x3C96, 0x3C97, 0x3C98, 0x3C99, 0x3C9A, 0x3C9B, 0x3C9C, 0x3C9D, 0x3C9E, + 0x3C9F, 0x3CA0, 0x3CA1, 0x3CA2, 0x3CA3, 0x3CA4, 0x3CA5, 0x3CA6, 0x3CA7, + 0x3CA8, 0x3CA9, 0x3CAA, 0x3CAB, 0x3CAC, 0x3CAD, 0x3CAE, 0x3CAF, 0x3CB0, + 0x3CB1, 0x3CB2, 0x3CB3, 0x3CB4, 0x3CB5, 0x3CB6, 0x3CB7, 0x3CB8, 0x3CB9, + 0x3CBA, 0x3CBB, 0x3CBC, 0x3CBD, 0x3CBE, 0x3CBF, 0x3CC0, 0x3CC1, 0x3CC2, + 0x3CC3, 0x3CC4, 0x3CC5, 0x3CC6, 0x3CC7, 0x3CC8, 0x3CC9, 0x3CCA, 0x3CCB, + 0x3CCC, 0x3CCD, 0x3CCE, 0x3CCF, 0x3CD0, 0x3CD1, 0x3CD2, 0x3CD3, 0x3CD4, + 0x3CD5, 0x3CD6, 0x3CD7, 0x3CD8, 0x3CD9, 0x3CDA, 0x3CDB, 0x3CDC, 0x3CDD, + 0x3CDE, 0x3CDF, 0x3CE1, 0x3CE2, 0x3CE3, 0x3CE4, 0x3CE5, 0x3CE6, 0x3CE7, + 0x3CE8, 0x3CE9, 0x3CEA, 0x3CEB, 0x3CEC, 0x3CED, 0x3CEE, 0x3CEF, 0x3CF0, + 0x3CF1, 0x3CF2, 0x3CF3, 0x3CF4, 0x3CF5, 0x3CF6, 0x3CF7, 0x3CF8, 0x3CF9, + 0x3CFA, 0x3CFB, 0x3CFC, 0x3CFD, 0x3CFE, 0x3CFF, 0x3D00, 0x3D01, 0x3D02, + 0x3D03, 0x3D04, 0x3D05, 0x3D06, 0x3D07, 0x3D08, 0x3D09, 0x3D0A, 0x3D0B, + 0x3D0C, 0x3D0D, 0x3D0E, 0x3D0F, 0x3D10, 0x3D11, 0x3D12, 0x3D13, 0x3D14, + 0x3D15, 0x3D16, 0x3D17, 0x3D18, 0x3D19, 0x3D1A, 0x3D1B, 0x3D1C, 0x3D1D, + 0x3D1E, 0x3D1F, 0x3D20, 0x3D21, 0x3D22, 0x3D23, 0x3D24, 0x3D25, 0x3D26, + 0x3D27, 0x3D28, 0x3D29, 0x3D2A, 0x3D2B, 0x3D2C, 0x3D2D, 0x3D2E, 0x3D2F, + 0x3D30, 0x3D31, 0x3D32, 0x3D33, 0x3D34, 0x3D35, 0x3D36, 0x3D37, 0x3D38, + 0x3D39, 0x3D3A, 0x3D3B, 0x3D3C, 0x3D3D, 0x3D3E, 0x3D3F, 0x3D40, 0x3D41, + 0x3D42, 0x3D43, 0x3D44, 0x3D45, 0x3D46, 0x3D47, 0x3D48, 0x3D49, 0x3D4A, + 0x3D4B, 0x3D4C, 0x3D4D, 0x3D4E, 0x3D4F, 0x3D50, 0x3D51, 0x3D52, 0x3D53, + 0x3D54, 0x3D55, 0x3D56, 0x3D57, 0x3D58, 0x3D59, 0x3D5A, 0x3D5B, 0x3D5C, + 0x3D5D, 0x3D5E, 0x3D5F, 0x3D60, 0x3D61, 0x3D62, 0x3D63, 0x3D64, 0x3D65, + 0x3D66, 0x3D67, 0x3D68, 0x3D69, 0x3D6A, 0x3D6B, 0x3D6C, 0x3D6D, 0x3D6E, + 0x3D6F, 0x3D70, 0x3D71, 0x3D72, 0x3D73, 0x3D74, 0x3D75, 0x3D76, 0x3D77, + 0x3D78, 0x3D79, 0x3D7A, 0x3D7B, 0x3D7C, 0x3D7D, 0x3D7E, 0x3D7F, 0x3D80, + 0x3D81, 0x3D82, 0x3D83, 0x3D84, 0x3D85, 0x3D86, 0x3D87, 0x3D88, 0x3D89, + 0x3D8A, 0x3D8B, 0x3D8C, 0x3D8D, 0x3D8E, 0x3D8F, 0x3D90, 0x3D91, 0x3D92, + 0x3D93, 0x3D94, 0x3D95, 0x3D96, 0x3D97, 0x3D98, 0x3D99, 0x3D9A, 0x3D9B, + 0x3D9C, 0x3D9D, 0x3D9E, 0x3D9F, 0x3DA0, 0x3DA1, 0x3DA2, 0x3DA3, 0x3DA4, + 0x3DA5, 0x3DA6, 0x3DA7, 0x3DA8, 0x3DA9, 0x3DAA, 0x3DAB, 0x3DAC, 0x3DAD, + 0x3DAE, 0x3DAF, 0x3DB0, 0x3DB1, 0x3DB2, 0x3DB3, 0x3DB4, 0x3DB5, 0x3DB6, + 0x3DB7, 0x3DB8, 0x3DB9, 0x3DBA, 0x3DBB, 0x3DBC, 0x3DBD, 0x3DBE, 0x3DBF, + 0x3DC0, 0x3DC1, 0x3DC2, 0x3DC3, 0x3DC4, 0x3DC5, 0x3DC6, 0x3DC7, 0x3DC8, + 0x3DC9, 0x3DCA, 0x3DCB, 0x3DCC, 0x3DCD, 0x3DCE, 0x3DCF, 0x3DD0, 0x3DD1, + 0x3DD2, 0x3DD3, 0x3DD4, 0x3DD5, 0x3DD6, 0x3DD7, 0x3DD8, 0x3DD9, 0x3DDA, + 0x3DDB, 0x3DDC, 0x3DDD, 0x3DDE, 0x3DDF, 0x3DE0, 0x3DE1, 0x3DE2, 0x3DE3, + 0x3DE4, 0x3DE5, 0x3DE6, 0x3DE7, 0x3DE8, 0x3DE9, 0x3DEA, 0x3DEB, 0x3DEC, + 0x3DED, 0x3DEE, 0x3DEF, 0x3DF0, 0x3DF1, 0x3DF2, 0x3DF3, 0x3DF4, 0x3DF5, + 0x3DF6, 0x3DF7, 0x3DF8, 0x3DF9, 0x3DFA, 0x3DFB, 0x3DFC, 0x3DFD, 0x3DFE, + 0x3DFF, 0x3E00, 0x3E01, 0x3E02, 0x3E03, 0x3E04, 0x3E05, 0x3E06, 0x3E07, + 0x3E08, 0x3E09, 0x3E0A, 0x3E0B, 0x3E0C, 0x3E0D, 0x3E0E, 0x3E0F, 0x3E10, + 0x3E11, 0x3E12, 0x3E13, 0x3E14, 0x3E15, 0x3E16, 0x3E17, 0x3E18, 0x3E19, + 0x3E1A, 0x3E1B, 0x3E1C, 0x3E1D, 0x3E1E, 0x3E1F, 0x3E20, 0x3E21, 0x3E22, + 0x3E23, 0x3E24, 0x3E25, 0x3E26, 0x3E27, 0x3E28, 0x3E29, 0x3E2A, 0x3E2B, + 0x3E2C, 0x3E2D, 0x3E2E, 0x3E2F, 0x3E30, 0x3E31, 0x3E32, 0x3E33, 0x3E34, + 0x3E35, 0x3E36, 0x3E37, 0x3E38, 0x3E39, 0x3E3A, 0x3E3B, 0x3E3C, 0x3E3D, + 0x3E3E, 0x3E3F, 0x3E40, 0x3E41, 0x3E42, 0x3E43, 0x3E44, 0x3E45, 0x3E46, + 0x3E47, 0x3E48, 0x3E49, 0x3E4A, 0x3E4B, 0x3E4C, 0x3E4D, 0x3E4E, 0x3E4F, + 0x3E50, 0x3E51, 0x3E52, 0x3E53, 0x3E54, 0x3E55, 0x3E56, 0x3E57, 0x3E58, + 0x3E59, 0x3E5A, 0x3E5B, 0x3E5C, 0x3E5D, 0x3E5E, 0x3E5F, 0x3E60, 0x3E61, + 0x3E62, 0x3E63, 0x3E64, 0x3E65, 0x3E66, 0x3E67, 0x3E68, 0x3E69, 0x3E6A, + 0x3E6B, 0x3E6C, 0x3E6D, 0x3E6E, 0x3E6F, 0x3E70, 0x3E71, 0x3E72, 0x3E73, + 0x3E74, 0x3E75, 0x3E76, 0x3E77, 0x3E78, 0x3E79, 0x3E7A, 0x3E7B, 0x3E7C, + 0x3E7D, 0x3E7E, 0x3E7F, 0x3E80, 0x3E81, 0x3E82, 0x3E83, 0x3E84, 0x3E85, + 0x3E86, 0x3E87, 0x3E88, 0x3E89, 0x3E8A, 0x3E8B, 0x3E8C, 0x3E8D, 0x3E8E, + 0x3E8F, 0x3E90, 0x3E91, 0x3E92, 0x3E93, 0x3E94, 0x3E95, 0x3E96, 0x3E97, + 0x3E98, 0x3E99, 0x3E9A, 0x3E9B, 0x3E9C, 0x3E9D, 0x3E9E, 0x3E9F, 0x3EA0, + 0x3EA1, 0x3EA2, 0x3EA3, 0x3EA4, 0x3EA5, 0x3EA6, 0x3EA7, 0x3EA8, 0x3EA9, + 0x3EAA, 0x3EAB, 0x3EAC, 0x3EAD, 0x3EAE, 0x3EAF, 0x3EB0, 0x3EB1, 0x3EB2, + 0x3EB3, 0x3EB4, 0x3EB5, 0x3EB6, 0x3EB7, 0x3EB8, 0x3EB9, 0x3EBA, 0x3EBB, + 0x3EBC, 0x3EBD, 0x3EBE, 0x3EBF, 0x3EC0, 0x3EC1, 0x3EC2, 0x3EC3, 0x3EC4, + 0x3EC5, 0x3EC6, 0x3EC7, 0x3EC8, 0x3EC9, 0x3ECA, 0x3ECB, 0x3ECC, 0x3ECD, + 0x3ECE, 0x3ECF, 0x3ED0, 0x3ED1, 0x3ED2, 0x3ED3, 0x3ED4, 0x3ED5, 0x3ED6, + 0x3ED7, 0x3ED8, 0x3ED9, 0x3EDA, 0x3EDB, 0x3EDC, 0x3EDD, 0x3EDE, 0x3EDF, + 0x3EE0, 0x3EE1, 0x3EE2, 0x3EE3, 0x3EE4, 0x3EE5, 0x3EE6, 0x3EE7, 0x3EE8, + 0x3EE9, 0x3EEA, 0x3EEB, 0x3EEC, 0x3EED, 0x3EEE, 0x3EEF, 0x3EF0, 0x3EF1, + 0x3EF2, 0x3EF3, 0x3EF4, 0x3EF5, 0x3EF6, 0x3EF7, 0x3EF8, 0x3EF9, 0x3EFA, + 0x3EFB, 0x3EFC, 0x3EFD, 0x3EFE, 0x3EFF, 0x3F00, 0x3F01, 0x3F02, 0x3F03, + 0x3F04, 0x3F05, 0x3F06, 0x3F07, 0x3F08, 0x3F09, 0x3F0A, 0x3F0B, 0x3F0C, + 0x3F0D, 0x3F0E, 0x3F0F, 0x3F10, 0x3F11, 0x3F12, 0x3F13, 0x3F14, 0x3F15, + 0x3F16, 0x3F17, 0x3F18, 0x3F19, 0x3F1A, 0x3F1B, 0x3F1C, 0x3F1D, 0x3F1E, + 0x3F1F, 0x3F20, 0x3F21, 0x3F22, 0x3F23, 0x3F24, 0x3F25, 0x3F26, 0x3F27, + 0x3F28, 0x3F29, 0x3F2A, 0x3F2B, 0x3F2C, 0x3F2D, 0x3F2E, 0x3F2F, 0x3F30, + 0x3F31, 0x3F32, 0x3F33, 0x3F34, 0x3F35, 0x3F36, 0x3F37, 0x3F38, 0x3F39, + 0x3F3A, 0x3F3B, 0x3F3C, 0x3F3D, 0x3F3E, 0x3F3F, 0x3F40, 0x3F41, 0x3F42, + 0x3F43, 0x3F44, 0x3F45, 0x3F46, 0x3F47, 0x3F48, 0x3F49, 0x3F4A, 0x3F4B, + 0x3F4C, 0x3F4D, 0x3F4E, 0x3F4F, 0x3F50, 0x3F51, 0x3F52, 0x3F53, 0x3F54, + 0x3F55, 0x3F56, 0x3F57, 0x3F58, 0x3F59, 0x3F5A, 0x3F5B, 0x3F5C, 0x3F5D, + 0x3F5E, 0x3F5F, 0x3F60, 0x3F61, 0x3F62, 0x3F63, 0x3F64, 0x3F65, 0x3F66, + 0x3F67, 0x3F68, 0x3F69, 0x3F6A, 0x3F6B, 0x3F6C, 0x3F6D, 0x3F6E, 0x3F6F, + 0x3F70, 0x3F71, 0x3F72, 0x3F73, 0x3F74, 0x3F75, 0x3F76, 0x3F77, 0x3F78, + 0x3F79, 0x3F7A, 0x3F7B, 0x3F7C, 0x3F7D, 0x3F7E, 0x3F7F, 0x3F80, 0x3F81, + 0x3F82, 0x3F83, 0x3F84, 0x3F85, 0x3F86, 0x3F87, 0x3F88, 0x3F89, 0x3F8A, + 0x3F8B, 0x3F8C, 0x3F8D, 0x3F8E, 0x3F8F, 0x3F90, 0x3F91, 0x3F92, 0x3F93, + 0x3F94, 0x3F95, 0x3F96, 0x3F97, 0x3F98, 0x3F99, 0x3F9A, 0x3F9B, 0x3F9C, + 0x3F9D, 0x3F9E, 0x3F9F, 0x3FA0, 0x3FA1, 0x3FA2, 0x3FA3, 0x3FA4, 0x3FA5, + 0x3FA6, 0x3FA7, 0x3FA8, 0x3FA9, 0x3FAA, 0x3FAB, 0x3FAC, 0x3FAD, 0x3FAE, + 0x3FAF, 0x3FB0, 0x3FB1, 0x3FB2, 0x3FB3, 0x3FB4, 0x3FB5, 0x3FB6, 0x3FB7, + 0x3FB8, 0x3FB9, 0x3FBA, 0x3FBB, 0x3FBC, 0x3FBD, 0x3FBE, 0x3FBF, 0x3FC0, + 0x3FC1, 0x3FC2, 0x3FC3, 0x3FC4, 0x3FC5, 0x3FC6, 0x3FC7, 0x3FC8, 0x3FC9, + 0x3FCA, 0x3FCB, 0x3FCC, 0x3FCD, 0x3FCE, 0x3FCF, 0x3FD0, 0x3FD1, 0x3FD2, + 0x3FD3, 0x3FD4, 0x3FD5, 0x3FD6, 0x3FD7, 0x3FD8, 0x3FD9, 0x3FDA, 0x3FDB, + 0x3FDC, 0x3FDD, 0x3FDE, 0x3FDF, 0x3FE0, 0x3FE1, 0x3FE2, 0x3FE3, 0x3FE4, + 0x3FE5, 0x3FE6, 0x3FE7, 0x3FE8, 0x3FE9, 0x3FEA, 0x3FEB, 0x3FEC, 0x3FED, + 0x3FEE, 0x3FEF, 0x3FF0, 0x3FF1, 0x3FF2, 0x3FF3, 0x3FF4, 0x3FF5, 0x3FF6, + 0x3FF7, 0x3FF8, 0x3FF9, 0x3FFA, 0x3FFB, 0x3FFC, 0x3FFD, 0x3FFE, 0x3FFF, + 0x4000, 0x4001, 0x4002, 0x4003, 0x4004, 0x4005, 0x4006, 0x4007, 0x4008, + 0x4009, 0x400A, 0x400B, 0x400C, 0x400D, 0x400E, 0x400F, 0x4010, 0x4011, + 0x4012, 0x4013, 0x4014, 0x4015, 0x4016, 0x4017, 0x4018, 0x4019, 0x401A, + 0x401B, 0x401C, 0x401D, 0x401E, 0x401F, 0x4020, 0x4021, 0x4022, 0x4023, + 0x4024, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029, 0x402A, 0x402B, 0x402C, + 0x402D, 0x402E, 0x402F, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, + 0x4036, 0x4037, 0x4038, 0x4039, 0x403A, 0x403B, 0x403C, 0x403D, 0x403E, + 0x403F, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047, + 0x4048, 0x4049, 0x404A, 0x404B, 0x404C, 0x404D, 0x404E, 0x404F, 0x4050, + 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4057, 0x4058, 0x4059, 0x405A, + 0x405B, 0x405C, 0x405D, 0x405E, 0x405F, 0x4060, 0x4061, 0x4062, 0x4063, + 0x4064, 0x4065, 0x4066, 0x4067, 0x4068, 0x4069, 0x406A, 0x406B, 0x406C, + 0x406D, 0x406E, 0x406F, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, + 0x4076, 0x4077, 0x4078, 0x4079, 0x407A, 0x407B, 0x407C, 0x407D, 0x407E, + 0x407F, 0x4080, 0x4081, 0x4082, 0x4083, 0x4084, 0x4085, 0x4086, 0x4087, + 0x4088, 0x4089, 0x408A, 0x408B, 0x408C, 0x408D, 0x408E, 0x408F, 0x4090, + 0x4091, 0x4092, 0x4093, 0x4094, 0x4095, 0x4096, 0x4097, 0x4098, 0x4099, + 0x409A, 0x409B, 0x409C, 0x409D, 0x409E, 0x409F, 0x40A0, 0x40A1, 0x40A2, + 0x40A3, 0x40A4, 0x40A5, 0x40A6, 0x40A7, 0x40A8, 0x40A9, 0x40AA, 0x40AB, + 0x40AC, 0x40AD, 0x40AE, 0x40AF, 0x40B0, 0x40B1, 0x40B2, 0x40B3, 0x40B4, + 0x40B5, 0x40B6, 0x40B7, 0x40B8, 0x40B9, 0x40BA, 0x40BB, 0x40BC, 0x40BD, + 0x40BE, 0x40BF, 0x40C0, 0x40C1, 0x40C2, 0x40C3, 0x40C4, 0x40C5, 0x40C6, + 0x40C7, 0x40C8, 0x40C9, 0x40CA, 0x40CB, 0x40CC, 0x40CD, 0x40CE, 0x40CF, + 0x40D0, 0x40D1, 0x40D2, 0x40D3, 0x40D4, 0x40D5, 0x40D6, 0x40D7, 0x40D8, + 0x40D9, 0x40DA, 0x40DB, 0x40DC, 0x40DD, 0x40DE, 0x40DF, 0x40E0, 0x40E1, + 0x40E2, 0x40E3, 0x40E4, 0x40E5, 0x40E6, 0x40E7, 0x40E8, 0x40E9, 0x40EA, + 0x40EB, 0x40EC, 0x40ED, 0x40EE, 0x40EF, 0x40F0, 0x40F1, 0x40F2, 0x40F3, + 0x40F4, 0x40F5, 0x40F6, 0x40F7, 0x40F8, 0x40F9, 0x40FA, 0x40FB, 0x40FC, + 0x40FD, 0x40FE, 0x40FF, 0x4100, 0x4101, 0x4102, 0x4103, 0x4104, 0x4105, + 0x4106, 0x4107, 0x4108, 0x4109, 0x410A, 0x410B, 0x410C, 0x410D, 0x410E, + 0x410F, 0x4110, 0x4111, 0x4112, 0x4113, 0x4114, 0x4115, 0x4116, 0x4117, + 0x4118, 0x4119, 0x411A, 0x411B, 0x411C, 0x411D, 0x411E, 0x411F, 0x4120, + 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128, 0x4129, + 0x412A, 0x412B, 0x412C, 0x412D, 0x412E, 0x412F, 0x4130, 0x4131, 0x4132, + 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138, 0x4139, 0x413A, 0x413B, + 0x413C, 0x413D, 0x413E, 0x413F, 0x4140, 0x4141, 0x4142, 0x4143, 0x4144, + 0x4145, 0x4146, 0x4147, 0x4148, 0x4149, 0x414A, 0x414B, 0x414C, 0x414D, + 0x414E, 0x414F, 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, + 0x4157, 0x4158, 0x4159, 0x415A, 0x415B, 0x415C, 0x415D, 0x415E, 0x4160, + 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168, 0x4169, + 0x416A, 0x416B, 0x416C, 0x416D, 0x416E, 0x416F, 0x4170, 0x4171, 0x4172, + 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178, 0x4179, 0x417A, 0x417B, + 0x417C, 0x417D, 0x417E, 0x417F, 0x4180, 0x4181, 0x4182, 0x4183, 0x4184, + 0x4185, 0x4186, 0x4187, 0x4188, 0x4189, 0x418A, 0x418B, 0x418C, 0x418D, + 0x418E, 0x418F, 0x4190, 0x4191, 0x4192, 0x4193, 0x4194, 0x4195, 0x4196, + 0x4197, 0x4198, 0x4199, 0x419A, 0x419B, 0x419C, 0x419D, 0x419E, 0x419F, + 0x41A0, 0x41A1, 0x41A2, 0x41A3, 0x41A4, 0x41A5, 0x41A6, 0x41A7, 0x41A8, + 0x41A9, 0x41AA, 0x41AB, 0x41AC, 0x41AD, 0x41AE, 0x41AF, 0x41B0, 0x41B1, + 0x41B2, 0x41B3, 0x41B4, 0x41B5, 0x41B6, 0x41B7, 0x41B8, 0x41B9, 0x41BA, + 0x41BB, 0x41BC, 0x41BD, 0x41BE, 0x41BF, 0x41C0, 0x41C1, 0x41C2, 0x41C3, + 0x41C4, 0x41C5, 0x41C6, 0x41C7, 0x41C8, 0x41C9, 0x41CA, 0x41CB, 0x41CC, + 0x41CD, 0x41CE, 0x41CF, 0x41D0, 0x41D1, 0x41D2, 0x41D3, 0x41D4, 0x41D5, + 0x41D6, 0x41D7, 0x41D8, 0x41D9, 0x41DA, 0x41DB, 0x41DC, 0x41DD, 0x41DE, + 0x41DF, 0x41E0, 0x41E1, 0x41E2, 0x41E3, 0x41E4, 0x41E5, 0x41E6, 0x41E7, + 0x41E8, 0x41E9, 0x41EA, 0x41EB, 0x41EC, 0x41ED, 0x41EE, 0x41EF, 0x41F0, + 0x41F1, 0x41F2, 0x41F3, 0x41F4, 0x41F5, 0x41F6, 0x41F7, 0x41F8, 0x41F9, + 0x41FA, 0x41FB, 0x41FC, 0x41FD, 0x41FE, 0x41FF, 0x4200, 0x4201, 0x4202, + 0x4203, 0x4204, 0x4205, 0x4206, 0x4207, 0x4208, 0x4209, 0x420A, 0x420B, + 0x420C, 0x420D, 0x420E, 0x420F, 0x4210, 0x4211, 0x4212, 0x4213, 0x4214, + 0x4215, 0x4216, 0x4217, 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D, + 0x421E, 0x421F, 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, + 0x4227, 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D, 0x422E, 0x422F, + 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, + 0x4239, 0x423A, 0x423B, 0x423C, 0x423D, 0x423E, 0x423F, 0x4240, 0x4241, + 0x4242, 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424A, + 0x424B, 0x424C, 0x424D, 0x424E, 0x424F, 0x4250, 0x4251, 0x4252, 0x4253, + 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425A, 0x425B, 0x425C, + 0x425D, 0x425E, 0x425F, 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, + 0x4266, 0x4267, 0x4268, 0x4269, 0x426A, 0x426B, 0x426C, 0x426D, 0x426E, + 0x426F, 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, + 0x4278, 0x4279, 0x427A, 0x427B, 0x427C, 0x427D, 0x427E, 0x427F, 0x4280, + 0x4281, 0x4282, 0x4283, 0x4284, 0x4285, 0x4286, 0x4287, 0x4288, 0x4289, + 0x428A, 0x428B, 0x428C, 0x428D, 0x428E, 0x428F, 0x4290, 0x4291, 0x4292, + 0x4293, 0x4294, 0x4295, 0x4296, 0x4297, 0x4298, 0x4299, 0x429A, 0x429B, + 0x429C, 0x429D, 0x429E, 0x429F, 0x42A0, 0x42A1, 0x42A2, 0x42A3, 0x42A4, + 0x42A5, 0x42A6, 0x42A7, 0x42A8, 0x42A9, 0x42AA, 0x42AB, 0x42AC, 0x42AD, + 0x42AE, 0x42AF, 0x42B0, 0x42B1, 0x42B2, 0x42B3, 0x42B4, 0x42B5, 0x42B6, + 0x42B7, 0x42B8, 0x42B9, 0x42BA, 0x42BB, 0x42BC, 0x42BD, 0x42BE, 0x42BF, + 0x42C0, 0x42C1, 0x42C2, 0x42C3, 0x42C4, 0x42C5, 0x42C6, 0x42C7, 0x42C8, + 0x42C9, 0x42CA, 0x42CB, 0x42CC, 0x42CD, 0x42CE, 0x42CF, 0x42D0, 0x42D1, + 0x42D2, 0x42D3, 0x42D4, 0x42D5, 0x42D6, 0x42D7, 0x42D8, 0x42D9, 0x42DA, + 0x42DB, 0x42DC, 0x42DD, 0x42DE, 0x42DF, 0x42E0, 0x42E1, 0x42E2, 0x42E3, + 0x42E4, 0x42E5, 0x42E6, 0x42E7, 0x42E8, 0x42E9, 0x42EA, 0x42EB, 0x42EC, + 0x42ED, 0x42EE, 0x42EF, 0x42F0, 0x42F1, 0x42F2, 0x42F3, 0x42F4, 0x42F5, + 0x42F6, 0x42F7, 0x42F8, 0x42F9, 0x42FA, 0x42FB, 0x42FC, 0x42FD, 0x42FE, + 0x42FF, 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307, + 0x4308, 0x4309, 0x430A, 0x430B, 0x430C, 0x430D, 0x430E, 0x430F, 0x4310, + 0x4311, 0x4312, 0x4313, 0x4314, 0x4315, 0x4316, 0x4317, 0x4318, 0x4319, + 0x431A, 0x431B, 0x431C, 0x431D, 0x431E, 0x431F, 0x4320, 0x4321, 0x4322, + 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432A, 0x432B, + 0x432C, 0x432D, 0x432E, 0x432F, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, + 0x4335, 0x4336, 0x4338, 0x4339, 0x433A, 0x433B, 0x433C, 0x433D, 0x433E, + 0x433F, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347, + 0x4348, 0x4349, 0x434A, 0x434B, 0x434C, 0x434D, 0x434E, 0x434F, 0x4350, + 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, + 0x435A, 0x435B, 0x435C, 0x435D, 0x435E, 0x435F, 0x4360, 0x4361, 0x4362, + 0x4363, 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436A, 0x436B, + 0x436C, 0x436D, 0x436E, 0x436F, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, + 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437A, 0x437B, 0x437C, 0x437D, + 0x437E, 0x437F, 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386, + 0x4387, 0x4388, 0x4389, 0x438A, 0x438B, 0x438C, 0x438D, 0x438E, 0x438F, + 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395, 0x4396, 0x4397, 0x4398, + 0x4399, 0x439A, 0x439B, 0x439C, 0x439D, 0x439E, 0x439F, 0x43A0, 0x43A1, + 0x43A2, 0x43A3, 0x43A4, 0x43A5, 0x43A6, 0x43A7, 0x43A8, 0x43A9, 0x43AA, + 0x43AB, 0x43AD, 0x43AE, 0x43AF, 0x43B0, 0x43B2, 0x43B3, 0x43B4, 0x43B5, + 0x43B6, 0x43B7, 0x43B8, 0x43B9, 0x43BA, 0x43BB, 0x43BC, 0x43BD, 0x43BE, + 0x43BF, 0x43C0, 0x43C1, 0x43C2, 0x43C3, 0x43C4, 0x43C5, 0x43C6, 0x43C7, + 0x43C8, 0x43C9, 0x43CA, 0x43CB, 0x43CC, 0x43CD, 0x43CE, 0x43CF, 0x43D0, + 0x43D1, 0x43D2, 0x43D3, 0x43D4, 0x43D5, 0x43D6, 0x43D7, 0x43D8, 0x43D9, + 0x43DA, 0x43DB, 0x43DC, 0x43DE, 0x43DF, 0x43E0, 0x43E1, 0x43E2, 0x43E3, + 0x43E4, 0x43E5, 0x43E6, 0x43E7, 0x43E8, 0x43E9, 0x43EA, 0x43EB, 0x43EC, + 0x43ED, 0x43EE, 0x43EF, 0x43F0, 0x43F1, 0x43F2, 0x43F3, 0x43F4, 0x43F5, + 0x43F6, 0x43F7, 0x43F8, 0x43F9, 0x43FA, 0x43FB, 0x43FC, 0x43FD, 0x43FE, + 0x43FF, 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407, + 0x4408, 0x4409, 0x440A, 0x440B, 0x440C, 0x440D, 0x440E, 0x440F, 0x4410, + 0x4411, 0x4412, 0x4413, 0x4414, 0x4415, 0x4416, 0x4417, 0x4418, 0x4419, + 0x441A, 0x441B, 0x441C, 0x441D, 0x441E, 0x441F, 0x4420, 0x4421, 0x4422, + 0x4423, 0x4424, 0x4425, 0x4426, 0x4427, 0x4428, 0x4429, 0x442A, 0x442B, + 0x442C, 0x442D, 0x442E, 0x442F, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, + 0x4435, 0x4436, 0x4437, 0x4438, 0x4439, 0x443A, 0x443B, 0x443C, 0x443D, + 0x443E, 0x443F, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, + 0x4447, 0x4448, 0x4449, 0x444A, 0x444B, 0x444C, 0x444D, 0x444E, 0x444F, + 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457, 0x4458, + 0x4459, 0x445A, 0x445B, 0x445C, 0x445D, 0x445E, 0x445F, 0x4460, 0x4461, + 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469, 0x446A, + 0x446B, 0x446C, 0x446D, 0x446E, 0x446F, 0x4470, 0x4471, 0x4472, 0x4473, + 0x4474, 0x4475, 0x4476, 0x4477, 0x4478, 0x4479, 0x447A, 0x447B, 0x447C, + 0x447D, 0x447E, 0x447F, 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485, + 0x4486, 0x4487, 0x4488, 0x4489, 0x448A, 0x448B, 0x448C, 0x448D, 0x448E, + 0x448F, 0x4490, 0x4491, 0x4492, 0x4493, 0x4494, 0x4495, 0x4496, 0x4497, + 0x4498, 0x4499, 0x449A, 0x449B, 0x449C, 0x449D, 0x449E, 0x449F, 0x44A0, + 0x44A1, 0x44A2, 0x44A3, 0x44A4, 0x44A5, 0x44A6, 0x44A7, 0x44A8, 0x44A9, + 0x44AA, 0x44AB, 0x44AC, 0x44AD, 0x44AE, 0x44AF, 0x44B0, 0x44B1, 0x44B2, + 0x44B3, 0x44B4, 0x44B5, 0x44B6, 0x44B7, 0x44B8, 0x44B9, 0x44BA, 0x44BB, + 0x44BC, 0x44BD, 0x44BE, 0x44BF, 0x44C0, 0x44C1, 0x44C2, 0x44C3, 0x44C4, + 0x44C5, 0x44C6, 0x44C7, 0x44C8, 0x44C9, 0x44CA, 0x44CB, 0x44CC, 0x44CD, + 0x44CE, 0x44CF, 0x44D0, 0x44D1, 0x44D2, 0x44D3, 0x44D4, 0x44D5, 0x44D7, + 0x44D8, 0x44D9, 0x44DA, 0x44DB, 0x44DC, 0x44DD, 0x44DE, 0x44DF, 0x44E0, + 0x44E1, 0x44E2, 0x44E3, 0x44E4, 0x44E5, 0x44E6, 0x44E7, 0x44E8, 0x44E9, + 0x44EA, 0x44EB, 0x44EC, 0x44ED, 0x44EE, 0x44EF, 0x44F0, 0x44F1, 0x44F2, + 0x44F3, 0x44F4, 0x44F5, 0x44F6, 0x44F7, 0x44F8, 0x44F9, 0x44FA, 0x44FB, + 0x44FC, 0x44FD, 0x44FE, 0x44FF, 0x4500, 0x4501, 0x4502, 0x4503, 0x4504, + 0x4505, 0x4506, 0x4507, 0x4508, 0x4509, 0x450A, 0x450B, 0x450C, 0x450D, + 0x450E, 0x450F, 0x4510, 0x4511, 0x4512, 0x4513, 0x4514, 0x4515, 0x4516, + 0x4517, 0x4518, 0x4519, 0x451A, 0x451B, 0x451C, 0x451D, 0x451E, 0x451F, + 0x4520, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528, + 0x4529, 0x452A, 0x452B, 0x452C, 0x452D, 0x452E, 0x452F, 0x4530, 0x4531, + 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538, 0x4539, 0x453A, + 0x453B, 0x453C, 0x453D, 0x453E, 0x453F, 0x4540, 0x4541, 0x4542, 0x4543, + 0x4544, 0x4545, 0x4546, 0x4547, 0x4548, 0x4549, 0x454A, 0x454B, 0x454C, + 0x454D, 0x454E, 0x454F, 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, + 0x4556, 0x4557, 0x4558, 0x4559, 0x455A, 0x455B, 0x455C, 0x455D, 0x455E, + 0x455F, 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, + 0x4568, 0x4569, 0x456A, 0x456B, 0x456C, 0x456D, 0x456E, 0x456F, 0x4570, + 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578, 0x4579, + 0x457A, 0x457B, 0x457C, 0x457D, 0x457E, 0x457F, 0x4580, 0x4581, 0x4582, + 0x4583, 0x4584, 0x4585, 0x4586, 0x4587, 0x4588, 0x4589, 0x458A, 0x458B, + 0x458C, 0x458D, 0x458E, 0x458F, 0x4590, 0x4591, 0x4592, 0x4593, 0x4594, + 0x4595, 0x4596, 0x4597, 0x4598, 0x4599, 0x459A, 0x459B, 0x459C, 0x459D, + 0x459E, 0x459F, 0x45A0, 0x45A1, 0x45A2, 0x45A3, 0x45A4, 0x45A5, 0x45A6, + 0x45A7, 0x45A8, 0x45A9, 0x45AA, 0x45AB, 0x45AC, 0x45AD, 0x45AE, 0x45AF, + 0x45B0, 0x45B1, 0x45B2, 0x45B3, 0x45B4, 0x45B5, 0x45B6, 0x45B7, 0x45B8, + 0x45B9, 0x45BA, 0x45BB, 0x45BC, 0x45BD, 0x45BE, 0x45BF, 0x45C0, 0x45C1, + 0x45C2, 0x45C3, 0x45C4, 0x45C5, 0x45C6, 0x45C7, 0x45C8, 0x45C9, 0x45CA, + 0x45CB, 0x45CC, 0x45CD, 0x45CE, 0x45CF, 0x45D0, 0x45D1, 0x45D2, 0x45D3, + 0x45D4, 0x45D5, 0x45D6, 0x45D7, 0x45D8, 0x45D9, 0x45DA, 0x45DB, 0x45DC, + 0x45DD, 0x45DE, 0x45DF, 0x45E0, 0x45E1, 0x45E2, 0x45E3, 0x45E4, 0x45E5, + 0x45E6, 0x45E7, 0x45E8, 0x45E9, 0x45EA, 0x45EB, 0x45EC, 0x45ED, 0x45EE, + 0x45EF, 0x45F0, 0x45F1, 0x45F2, 0x45F3, 0x45F4, 0x45F5, 0x45F6, 0x45F7, + 0x45F8, 0x45F9, 0x45FA, 0x45FB, 0x45FC, 0x45FD, 0x45FE, 0x45FF, 0x4600, + 0x4601, 0x4602, 0x4603, 0x4604, 0x4605, 0x4606, 0x4607, 0x4608, 0x4609, + 0x460A, 0x460B, 0x460C, 0x460D, 0x460E, 0x460F, 0x4610, 0x4611, 0x4612, + 0x4613, 0x4614, 0x4615, 0x4616, 0x4617, 0x4618, 0x4619, 0x461A, 0x461B, + 0x461C, 0x461D, 0x461E, 0x461F, 0x4620, 0x4621, 0x4622, 0x4623, 0x4624, + 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462A, 0x462B, 0x462C, 0x462D, + 0x462E, 0x462F, 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, + 0x4637, 0x4638, 0x4639, 0x463A, 0x463B, 0x463C, 0x463D, 0x463E, 0x463F, + 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, + 0x4649, 0x464A, 0x464B, 0x464D, 0x464E, 0x464F, 0x4650, 0x4651, 0x4652, + 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465A, 0x465B, + 0x465C, 0x465D, 0x465E, 0x465F, 0x4660, 0x4662, 0x4663, 0x4664, 0x4665, + 0x4666, 0x4667, 0x4668, 0x4669, 0x466A, 0x466B, 0x466C, 0x466D, 0x466E, + 0x466F, 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, + 0x4678, 0x4679, 0x467A, 0x467B, 0x467C, 0x467D, 0x467E, 0x467F, 0x4680, + 0x4681, 0x4682, 0x4683, 0x4684, 0x4685, 0x4686, 0x4687, 0x4688, 0x4689, + 0x468A, 0x468B, 0x468C, 0x468D, 0x468E, 0x468F, 0x4690, 0x4691, 0x4692, + 0x4693, 0x4694, 0x4695, 0x4696, 0x4697, 0x4698, 0x4699, 0x469A, 0x469B, + 0x469C, 0x469D, 0x469E, 0x469F, 0x46A0, 0x46A1, 0x46A2, 0x46A3, 0x46A4, + 0x46A5, 0x46A6, 0x46A7, 0x46A8, 0x46A9, 0x46AA, 0x46AB, 0x46AC, 0x46AD, + 0x46AE, 0x46AF, 0x46B0, 0x46B1, 0x46B2, 0x46B3, 0x46B4, 0x46B5, 0x46B6, + 0x46B7, 0x46B8, 0x46B9, 0x46BA, 0x46BB, 0x46BC, 0x46BD, 0x46BE, 0x46BF, + 0x46C0, 0x46C1, 0x46C2, 0x46C3, 0x46C4, 0x46C5, 0x46C6, 0x46C7, 0x46C8, + 0x46C9, 0x46CA, 0x46CB, 0x46CC, 0x46CD, 0x46CE, 0x46CF, 0x46D0, 0x46D1, + 0x46D2, 0x46D3, 0x46D4, 0x46D5, 0x46D6, 0x46D7, 0x46D8, 0x46D9, 0x46DA, + 0x46DB, 0x46DC, 0x46DD, 0x46DE, 0x46DF, 0x46E0, 0x46E1, 0x46E2, 0x46E3, + 0x46E4, 0x46E5, 0x46E6, 0x46E7, 0x46E8, 0x46E9, 0x46EA, 0x46EB, 0x46EC, + 0x46ED, 0x46EE, 0x46EF, 0x46F0, 0x46F1, 0x46F2, 0x46F3, 0x46F4, 0x46F5, + 0x46F6, 0x46F7, 0x46F8, 0x46F9, 0x46FA, 0x46FB, 0x46FC, 0x46FD, 0x46FE, + 0x46FF, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706, 0x4707, + 0x4708, 0x4709, 0x470A, 0x470B, 0x470C, 0x470D, 0x470E, 0x470F, 0x4710, + 0x4711, 0x4712, 0x4713, 0x4714, 0x4715, 0x4716, 0x4717, 0x4718, 0x4719, + 0x471A, 0x471B, 0x471C, 0x471D, 0x471E, 0x471F, 0x4720, 0x4721, 0x4722, + 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x472A, 0x472B, 0x472C, 0x472D, + 0x472E, 0x472F, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4736, + 0x4737, 0x4738, 0x4739, 0x473A, 0x473B, 0x473C, 0x473D, 0x473E, 0x473F, + 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, 0x4748, + 0x4749, 0x474A, 0x474B, 0x474C, 0x474D, 0x474E, 0x474F, 0x4750, 0x4751, + 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475A, + 0x475B, 0x475C, 0x475D, 0x475E, 0x475F, 0x4760, 0x4761, 0x4762, 0x4763, + 0x4764, 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476A, 0x476B, 0x476C, + 0x476D, 0x476E, 0x476F, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775, + 0x4776, 0x4777, 0x4778, 0x4779, 0x477A, 0x477B, 0x477D, 0x477E, 0x477F, + 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785, 0x4786, 0x4787, 0x4788, + 0x4789, 0x478A, 0x478B, 0x478C, 0x478E, 0x478F, 0x4790, 0x4791, 0x4792, + 0x4793, 0x4794, 0x4795, 0x4796, 0x4797, 0x4798, 0x4799, 0x479A, 0x479B, + 0x479C, 0x479D, 0x479E, 0x479F, 0x47A0, 0x47A1, 0x47A2, 0x47A3, 0x47A4, + 0x47A5, 0x47A6, 0x47A7, 0x47A8, 0x47A9, 0x47AA, 0x47AB, 0x47AC, 0x47AD, + 0x47AE, 0x47AF, 0x47B0, 0x47B1, 0x47B2, 0x47B3, 0x47B4, 0x47B5, 0x47B6, + 0x47B7, 0x47B8, 0x47B9, 0x47BA, 0x47BB, 0x47BC, 0x47BD, 0x47BE, 0x47BF, + 0x47C0, 0x47C1, 0x47C2, 0x47C3, 0x47C4, 0x47C5, 0x47C6, 0x47C7, 0x47C8, + 0x47C9, 0x47CA, 0x47CB, 0x47CC, 0x47CD, 0x47CE, 0x47CF, 0x47D0, 0x47D1, + 0x47D2, 0x47D3, 0x47D4, 0x47D5, 0x47D6, 0x47D7, 0x47D8, 0x47D9, 0x47DA, + 0x47DB, 0x47DC, 0x47DD, 0x47DE, 0x47DF, 0x47E0, 0x47E1, 0x47E2, 0x47E3, + 0x47E4, 0x47E5, 0x47E6, 0x47E7, 0x47E8, 0x47E9, 0x47EA, 0x47EB, 0x47EC, + 0x47ED, 0x47EE, 0x47EF, 0x47F0, 0x47F1, 0x47F2, 0x47F3, 0x47F4, 0x47F5, + 0x47F6, 0x47F7, 0x47F8, 0x47F9, 0x47FA, 0x47FB, 0x47FC, 0x47FD, 0x47FE, + 0x47FF, 0x4800, 0x4801, 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807, + 0x4808, 0x4809, 0x480A, 0x480B, 0x480C, 0x480D, 0x480E, 0x480F, 0x4810, + 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817, 0x4818, 0x4819, + 0x481A, 0x481B, 0x481C, 0x481D, 0x481E, 0x481F, 0x4820, 0x4821, 0x4822, + 0x4823, 0x4824, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829, 0x482A, 0x482B, + 0x482C, 0x482D, 0x482E, 0x482F, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, + 0x4835, 0x4836, 0x4837, 0x4838, 0x4839, 0x483A, 0x483B, 0x483C, 0x483D, + 0x483E, 0x483F, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, + 0x4847, 0x4848, 0x4849, 0x484A, 0x484B, 0x484C, 0x484D, 0x484E, 0x484F, + 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, 0x4857, 0x4858, + 0x4859, 0x485A, 0x485B, 0x485C, 0x485D, 0x485E, 0x485F, 0x4860, 0x4861, + 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869, 0x486A, + 0x486B, 0x486C, 0x486D, 0x486E, 0x486F, 0x4870, 0x4871, 0x4872, 0x4873, + 0x4874, 0x4875, 0x4876, 0x4877, 0x4878, 0x4879, 0x487A, 0x487B, 0x487C, + 0x487D, 0x487E, 0x487F, 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885, + 0x4886, 0x4887, 0x4888, 0x4889, 0x488A, 0x488B, 0x488C, 0x488D, 0x488E, + 0x488F, 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895, 0x4896, 0x4897, + 0x4898, 0x4899, 0x489A, 0x489B, 0x489C, 0x489D, 0x489E, 0x489F, 0x48A0, + 0x48A1, 0x48A2, 0x48A3, 0x48A4, 0x48A5, 0x48A6, 0x48A7, 0x48A8, 0x48A9, + 0x48AA, 0x48AB, 0x48AC, 0x48AD, 0x48AE, 0x48AF, 0x48B0, 0x48B1, 0x48B2, + 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x48B8, 0x48B9, 0x48BA, 0x48BB, + 0x48BC, 0x48BD, 0x48BE, 0x48BF, 0x48C0, 0x48C1, 0x48C2, 0x48C3, 0x48C4, + 0x48C5, 0x48C6, 0x48C7, 0x48C8, 0x48C9, 0x48CA, 0x48CB, 0x48CC, 0x48CD, + 0x48CE, 0x48CF, 0x48D0, 0x48D1, 0x48D2, 0x48D3, 0x48D4, 0x48D5, 0x48D6, + 0x48D7, 0x48D8, 0x48D9, 0x48DA, 0x48DB, 0x48DC, 0x48DD, 0x48DE, 0x48DF, + 0x48E0, 0x48E1, 0x48E2, 0x48E3, 0x48E4, 0x48E5, 0x48E6, 0x48E7, 0x48E8, + 0x48E9, 0x48EA, 0x48EB, 0x48EC, 0x48ED, 0x48EE, 0x48EF, 0x48F0, 0x48F1, + 0x48F2, 0x48F3, 0x48F4, 0x48F5, 0x48F6, 0x48F7, 0x48F8, 0x48F9, 0x48FA, + 0x48FB, 0x48FC, 0x48FD, 0x48FE, 0x48FF, 0x4900, 0x4901, 0x4902, 0x4903, + 0x4904, 0x4905, 0x4906, 0x4907, 0x4908, 0x4909, 0x490A, 0x490B, 0x490C, + 0x490D, 0x490E, 0x490F, 0x4910, 0x4911, 0x4912, 0x4913, 0x4914, 0x4915, + 0x4916, 0x4917, 0x4918, 0x4919, 0x491A, 0x491B, 0x491C, 0x491D, 0x491E, + 0x491F, 0x4920, 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, + 0x4928, 0x4929, 0x492A, 0x492B, 0x492C, 0x492D, 0x492E, 0x492F, 0x4930, + 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938, 0x4939, + 0x493A, 0x493B, 0x493C, 0x493D, 0x493E, 0x493F, 0x4940, 0x4941, 0x4942, + 0x4943, 0x4944, 0x4945, 0x4946, 0x4948, 0x4949, 0x494A, 0x494B, 0x494C, + 0x494D, 0x494E, 0x494F, 0x4950, 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, + 0x4956, 0x4957, 0x4958, 0x4959, 0x495A, 0x495B, 0x495C, 0x495D, 0x495E, + 0x495F, 0x4960, 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, + 0x4968, 0x4969, 0x496A, 0x496B, 0x496C, 0x496D, 0x496E, 0x496F, 0x4970, + 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978, 0x4979, + 0x497B, 0x497C, 0x497E, 0x497F, 0x4980, 0x4981, 0x4984, 0x4987, 0x4988, + 0x4989, 0x498A, 0x498B, 0x498C, 0x498D, 0x498E, 0x498F, 0x4990, 0x4991, + 0x4992, 0x4993, 0x4994, 0x4995, 0x4996, 0x4997, 0x4998, 0x4999, 0x499A, + 0x499C, 0x499D, 0x499E, 0x49A0, 0x49A1, 0x49A2, 0x49A3, 0x49A4, 0x49A5, + 0x49A6, 0x49A7, 0x49A8, 0x49A9, 0x49AA, 0x49AB, 0x49AC, 0x49AD, 0x49AE, + 0x49AF, 0x49B0, 0x49B1, 0x49B2, 0x49B3, 0x49B4, 0x49B5, 0x49B8, 0x49B9, + 0x49BA, 0x49BB, 0x49BC, 0x49BD, 0x49BE, 0x49BF, 0x49C0, 0x49C1, 0x49C2, + 0x49C3, 0x49C4, 0x49C5, 0x49C6, 0x49C7, 0x49C8, 0x49C9, 0x49CA, 0x49CB, + 0x49CC, 0x49CD, 0x49CE, 0x49CF, 0x49D0, 0x49D1, 0x49D2, 0x49D3, 0x49D4, + 0x49D5, 0x49D6, 0x49D7, 0x49D8, 0x49D9, 0x49DA, 0x49DB, 0x49DC, 0x49DD, + 0x49DE, 0x49DF, 0x49E0, 0x49E1, 0x49E2, 0x49E3, 0x49E4, 0x49E5, 0x49E6, + 0x49E7, 0x49E8, 0x49E9, 0x49EA, 0x49EB, 0x49EC, 0x49ED, 0x49EE, 0x49EF, + 0x49F0, 0x49F1, 0x49F2, 0x49F3, 0x49F4, 0x49F5, 0x49F6, 0x49F7, 0x49F8, + 0x49F9, 0x49FA, 0x49FB, 0x49FC, 0x49FD, 0x49FE, 0x49FF, 0x4A00, 0x4A01, + 0x4A02, 0x4A03, 0x4A04, 0x4A05, 0x4A06, 0x4A07, 0x4A08, 0x4A09, 0x4A0A, + 0x4A0B, 0x4A0C, 0x4A0D, 0x4A0E, 0x4A0F, 0x4A10, 0x4A11, 0x4A12, 0x4A13, + 0x4A14, 0x4A15, 0x4A16, 0x4A17, 0x4A18, 0x4A19, 0x4A1A, 0x4A1B, 0x4A1C, + 0x4A1D, 0x4A1E, 0x4A1F, 0x4A20, 0x4A21, 0x4A22, 0x4A23, 0x4A24, 0x4A25, + 0x4A26, 0x4A27, 0x4A28, 0x4A29, 0x4A2A, 0x4A2B, 0x4A2C, 0x4A2D, 0x4A2E, + 0x4A2F, 0x4A30, 0x4A31, 0x4A32, 0x4A33, 0x4A34, 0x4A35, 0x4A36, 0x4A37, + 0x4A38, 0x4A39, 0x4A3A, 0x4A3B, 0x4A3C, 0x4A3D, 0x4A3E, 0x4A3F, 0x4A40, + 0x4A41, 0x4A42, 0x4A43, 0x4A44, 0x4A45, 0x4A46, 0x4A47, 0x4A48, 0x4A49, + 0x4A4A, 0x4A4B, 0x4A4C, 0x4A4D, 0x4A4E, 0x4A4F, 0x4A50, 0x4A51, 0x4A52, + 0x4A53, 0x4A54, 0x4A55, 0x4A56, 0x4A57, 0x4A58, 0x4A59, 0x4A5A, 0x4A5B, + 0x4A5C, 0x4A5D, 0x4A5E, 0x4A5F, 0x4A60, 0x4A61, 0x4A62, 0x4A63, 0x4A64, + 0x4A65, 0x4A66, 0x4A67, 0x4A68, 0x4A69, 0x4A6A, 0x4A6B, 0x4A6C, 0x4A6D, + 0x4A6E, 0x4A6F, 0x4A70, 0x4A71, 0x4A72, 0x4A73, 0x4A74, 0x4A75, 0x4A76, + 0x4A77, 0x4A78, 0x4A79, 0x4A7A, 0x4A7B, 0x4A7C, 0x4A7D, 0x4A7E, 0x4A7F, + 0x4A80, 0x4A81, 0x4A82, 0x4A83, 0x4A84, 0x4A85, 0x4A86, 0x4A87, 0x4A88, + 0x4A89, 0x4A8A, 0x4A8B, 0x4A8C, 0x4A8D, 0x4A8E, 0x4A8F, 0x4A90, 0x4A91, + 0x4A92, 0x4A93, 0x4A94, 0x4A95, 0x4A96, 0x4A97, 0x4A98, 0x4A99, 0x4A9A, + 0x4A9B, 0x4A9C, 0x4A9D, 0x4A9E, 0x4A9F, 0x4AA0, 0x4AA1, 0x4AA2, 0x4AA3, + 0x4AA4, 0x4AA5, 0x4AA6, 0x4AA7, 0x4AA8, 0x4AA9, 0x4AAA, 0x4AAB, 0x4AAC, + 0x4AAD, 0x4AAE, 0x4AAF, 0x4AB0, 0x4AB1, 0x4AB2, 0x4AB3, 0x4AB4, 0x4AB5, + 0x4AB6, 0x4AB7, 0x4AB8, 0x4AB9, 0x4ABA, 0x4ABB, 0x4ABC, 0x4ABD, 0x4ABE, + 0x4ABF, 0x4AC0, 0x4AC1, 0x4AC2, 0x4AC3, 0x4AC4, 0x4AC5, 0x4AC6, 0x4AC7, + 0x4AC8, 0x4AC9, 0x4ACA, 0x4ACB, 0x4ACC, 0x4ACD, 0x4ACE, 0x4ACF, 0x4AD0, + 0x4AD1, 0x4AD2, 0x4AD3, 0x4AD4, 0x4AD5, 0x4AD6, 0x4AD7, 0x4AD8, 0x4AD9, + 0x4ADA, 0x4ADB, 0x4ADC, 0x4ADD, 0x4ADE, 0x4ADF, 0x4AE0, 0x4AE1, 0x4AE2, + 0x4AE3, 0x4AE4, 0x4AE5, 0x4AE6, 0x4AE7, 0x4AE8, 0x4AE9, 0x4AEA, 0x4AEB, + 0x4AEC, 0x4AED, 0x4AEE, 0x4AEF, 0x4AF0, 0x4AF1, 0x4AF2, 0x4AF3, 0x4AF4, + 0x4AF5, 0x4AF6, 0x4AF7, 0x4AF8, 0x4AF9, 0x4AFA, 0x4AFB, 0x4AFC, 0x4AFD, + 0x4AFE, 0x4AFF, 0x4B00, 0x4B01, 0x4B02, 0x4B03, 0x4B04, 0x4B05, 0x4B06, + 0x4B07, 0x4B08, 0x4B09, 0x4B0A, 0x4B0B, 0x4B0C, 0x4B0D, 0x4B0E, 0x4B0F, + 0x4B10, 0x4B11, 0x4B12, 0x4B13, 0x4B14, 0x4B15, 0x4B16, 0x4B17, 0x4B18, + 0x4B19, 0x4B1A, 0x4B1B, 0x4B1C, 0x4B1D, 0x4B1E, 0x4B1F, 0x4B20, 0x4B21, + 0x4B22, 0x4B23, 0x4B24, 0x4B25, 0x4B26, 0x4B27, 0x4B28, 0x4B29, 0x4B2A, + 0x4B2B, 0x4B2C, 0x4B2D, 0x4B2E, 0x4B2F, 0x4B30, 0x4B31, 0x4B32, 0x4B33, + 0x4B34, 0x4B35, 0x4B36, 0x4B37, 0x4B38, 0x4B39, 0x4B3A, 0x4B3B, 0x4B3C, + 0x4B3D, 0x4B3E, 0x4B3F, 0x4B40, 0x4B41, 0x4B42, 0x4B43, 0x4B44, 0x4B45, + 0x4B46, 0x4B47, 0x4B48, 0x4B49, 0x4B4A, 0x4B4B, 0x4B4C, 0x4B4D, 0x4B4E, + 0x4B4F, 0x4B50, 0x4B51, 0x4B52, 0x4B53, 0x4B54, 0x4B55, 0x4B56, 0x4B57, + 0x4B58, 0x4B59, 0x4B5A, 0x4B5B, 0x4B5C, 0x4B5D, 0x4B5E, 0x4B5F, 0x4B60, + 0x4B61, 0x4B62, 0x4B63, 0x4B64, 0x4B65, 0x4B66, 0x4B67, 0x4B68, 0x4B69, + 0x4B6A, 0x4B6B, 0x4B6C, 0x4B6D, 0x4B6E, 0x4B6F, 0x4B70, 0x4B71, 0x4B72, + 0x4B73, 0x4B74, 0x4B75, 0x4B76, 0x4B77, 0x4B78, 0x4B79, 0x4B7A, 0x4B7B, + 0x4B7C, 0x4B7D, 0x4B7E, 0x4B7F, 0x4B80, 0x4B81, 0x4B82, 0x4B83, 0x4B84, + 0x4B85, 0x4B86, 0x4B87, 0x4B88, 0x4B89, 0x4B8A, 0x4B8B, 0x4B8C, 0x4B8D, + 0x4B8E, 0x4B8F, 0x4B90, 0x4B91, 0x4B92, 0x4B93, 0x4B94, 0x4B95, 0x4B96, + 0x4B97, 0x4B98, 0x4B99, 0x4B9A, 0x4B9B, 0x4B9C, 0x4B9D, 0x4B9E, 0x4B9F, + 0x4BA0, 0x4BA1, 0x4BA2, 0x4BA3, 0x4BA4, 0x4BA5, 0x4BA6, 0x4BA7, 0x4BA8, + 0x4BA9, 0x4BAA, 0x4BAB, 0x4BAC, 0x4BAD, 0x4BAE, 0x4BAF, 0x4BB0, 0x4BB1, + 0x4BB2, 0x4BB3, 0x4BB4, 0x4BB5, 0x4BB6, 0x4BB7, 0x4BB8, 0x4BB9, 0x4BBA, + 0x4BBB, 0x4BBC, 0x4BBD, 0x4BBE, 0x4BBF, 0x4BC0, 0x4BC1, 0x4BC2, 0x4BC3, + 0x4BC4, 0x4BC5, 0x4BC6, 0x4BC7, 0x4BC8, 0x4BC9, 0x4BCA, 0x4BCB, 0x4BCC, + 0x4BCD, 0x4BCE, 0x4BCF, 0x4BD0, 0x4BD1, 0x4BD2, 0x4BD3, 0x4BD4, 0x4BD5, + 0x4BD6, 0x4BD7, 0x4BD8, 0x4BD9, 0x4BDA, 0x4BDB, 0x4BDC, 0x4BDD, 0x4BDE, + 0x4BDF, 0x4BE0, 0x4BE1, 0x4BE2, 0x4BE3, 0x4BE4, 0x4BE5, 0x4BE6, 0x4BE7, + 0x4BE8, 0x4BE9, 0x4BEA, 0x4BEB, 0x4BEC, 0x4BED, 0x4BEE, 0x4BEF, 0x4BF0, + 0x4BF1, 0x4BF2, 0x4BF3, 0x4BF4, 0x4BF5, 0x4BF6, 0x4BF7, 0x4BF8, 0x4BF9, + 0x4BFA, 0x4BFB, 0x4BFC, 0x4BFD, 0x4BFE, 0x4BFF, 0x4C00, 0x4C01, 0x4C02, + 0x4C03, 0x4C04, 0x4C05, 0x4C06, 0x4C07, 0x4C08, 0x4C09, 0x4C0A, 0x4C0B, + 0x4C0C, 0x4C0D, 0x4C0E, 0x4C0F, 0x4C10, 0x4C11, 0x4C12, 0x4C13, 0x4C14, + 0x4C15, 0x4C16, 0x4C17, 0x4C18, 0x4C19, 0x4C1A, 0x4C1B, 0x4C1C, 0x4C1D, + 0x4C1E, 0x4C1F, 0x4C20, 0x4C21, 0x4C22, 0x4C23, 0x4C24, 0x4C25, 0x4C26, + 0x4C27, 0x4C28, 0x4C29, 0x4C2A, 0x4C2B, 0x4C2C, 0x4C2D, 0x4C2E, 0x4C2F, + 0x4C30, 0x4C31, 0x4C32, 0x4C33, 0x4C34, 0x4C35, 0x4C36, 0x4C37, 0x4C38, + 0x4C39, 0x4C3A, 0x4C3B, 0x4C3C, 0x4C3D, 0x4C3E, 0x4C3F, 0x4C40, 0x4C41, + 0x4C42, 0x4C43, 0x4C44, 0x4C45, 0x4C46, 0x4C47, 0x4C48, 0x4C49, 0x4C4A, + 0x4C4B, 0x4C4C, 0x4C4D, 0x4C4E, 0x4C4F, 0x4C50, 0x4C51, 0x4C52, 0x4C53, + 0x4C54, 0x4C55, 0x4C56, 0x4C57, 0x4C58, 0x4C59, 0x4C5A, 0x4C5B, 0x4C5C, + 0x4C5D, 0x4C5E, 0x4C5F, 0x4C60, 0x4C61, 0x4C62, 0x4C63, 0x4C64, 0x4C65, + 0x4C66, 0x4C67, 0x4C68, 0x4C69, 0x4C6A, 0x4C6B, 0x4C6C, 0x4C6D, 0x4C6E, + 0x4C6F, 0x4C70, 0x4C71, 0x4C72, 0x4C73, 0x4C74, 0x4C75, 0x4C76, 0x4C78, + 0x4C79, 0x4C7A, 0x4C7B, 0x4C7C, 0x4C7D, 0x4C7E, 0x4C7F, 0x4C80, 0x4C81, + 0x4C82, 0x4C83, 0x4C84, 0x4C85, 0x4C86, 0x4C87, 0x4C88, 0x4C89, 0x4C8A, + 0x4C8B, 0x4C8C, 0x4C8D, 0x4C8E, 0x4C8F, 0x4C90, 0x4C91, 0x4C92, 0x4C93, + 0x4C94, 0x4C95, 0x4C96, 0x4C97, 0x4C98, 0x4C99, 0x4C9A, 0x4C9B, 0x4C9C, + 0x4C9D, 0x4C9E, 0x4CA4, 0x4CA5, 0x4CA6, 0x4CA7, 0x4CA8, 0x4CA9, 0x4CAA, + 0x4CAB, 0x4CAC, 0x4CAD, 0x4CAE, 0x4CAF, 0x4CB0, 0x4CB1, 0x4CB2, 0x4CB3, + 0x4CB4, 0x4CB5, 0x4CB6, 0x4CB7, 0x4CB8, 0x4CB9, 0x4CBA, 0x4CBB, 0x4CBC, + 0x4CBD, 0x4CBE, 0x4CBF, 0x4CC0, 0x4CC1, 0x4CC2, 0x4CC3, 0x4CC4, 0x4CC5, + 0x4CC6, 0x4CC7, 0x4CC8, 0x4CC9, 0x4CCA, 0x4CCB, 0x4CCC, 0x4CCD, 0x4CCE, + 0x4CCF, 0x4CD0, 0x4CD1, 0x4CD2, 0x4CD3, 0x4CD4, 0x4CD5, 0x4CD6, 0x4CD7, + 0x4CD8, 0x4CD9, 0x4CDA, 0x4CDB, 0x4CDC, 0x4CDD, 0x4CDE, 0x4CDF, 0x4CE0, + 0x4CE1, 0x4CE2, 0x4CE3, 0x4CE4, 0x4CE5, 0x4CE6, 0x4CE7, 0x4CE8, 0x4CE9, + 0x4CEA, 0x4CEB, 0x4CEC, 0x4CED, 0x4CEE, 0x4CEF, 0x4CF0, 0x4CF1, 0x4CF2, + 0x4CF3, 0x4CF4, 0x4CF5, 0x4CF6, 0x4CF7, 0x4CF8, 0x4CF9, 0x4CFA, 0x4CFB, + 0x4CFC, 0x4CFD, 0x4CFE, 0x4CFF, 0x4D00, 0x4D01, 0x4D02, 0x4D03, 0x4D04, + 0x4D05, 0x4D06, 0x4D07, 0x4D08, 0x4D09, 0x4D0A, 0x4D0B, 0x4D0C, 0x4D0D, + 0x4D0E, 0x4D0F, 0x4D10, 0x4D11, 0x4D12, 0x4D1A, 0x4D1B, 0x4D1C, 0x4D1D, + 0x4D1E, 0x4D1F, 0x4D20, 0x4D21, 0x4D22, 0x4D23, 0x4D24, 0x4D25, 0x4D26, + 0x4D27, 0x4D28, 0x4D29, 0x4D2A, 0x4D2B, 0x4D2C, 0x4D2D, 0x4D2E, 0x4D2F, + 0x4D30, 0x4D31, 0x4D32, 0x4D33, 0x4D34, 0x4D35, 0x4D36, 0x4D37, 0x4D38, + 0x4D39, 0x4D3A, 0x4D3B, 0x4D3C, 0x4D3D, 0x4D3E, 0x4D3F, 0x4D40, 0x4D41, + 0x4D42, 0x4D43, 0x4D44, 0x4D45, 0x4D46, 0x4D47, 0x4D48, 0x4D49, 0x4D4A, + 0x4D4B, 0x4D4C, 0x4D4D, 0x4D4E, 0x4D4F, 0x4D50, 0x4D51, 0x4D52, 0x4D53, + 0x4D54, 0x4D55, 0x4D56, 0x4D57, 0x4D58, 0x4D59, 0x4D5A, 0x4D5B, 0x4D5C, + 0x4D5D, 0x4D5E, 0x4D5F, 0x4D60, 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65, + 0x4D66, 0x4D67, 0x4D68, 0x4D69, 0x4D6A, 0x4D6B, 0x4D6C, 0x4D6D, 0x4D6E, + 0x4D6F, 0x4D70, 0x4D71, 0x4D72, 0x4D73, 0x4D74, 0x4D75, 0x4D76, 0x4D77, + 0x4D78, 0x4D79, 0x4D7A, 0x4D7B, 0x4D7C, 0x4D7D, 0x4D7E, 0x4D7F, 0x4D80, + 0x4D81, 0x4D82, 0x4D83, 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88, 0x4D89, + 0x4D8A, 0x4D8B, 0x4D8C, 0x4D8D, 0x4D8E, 0x4D8F, 0x4D90, 0x4D91, 0x4D92, + 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97, 0x4D98, 0x4D99, 0x4D9A, 0x4D9B, + 0x4D9C, 0x4D9D, 0x4D9E, 0x4D9F, 0x4DA0, 0x4DA1, 0x4DA2, 0x4DA3, 0x4DA4, + 0x4DA5, 0x4DA6, 0x4DA7, 0x4DA8, 0x4DA9, 0x4DAA, 0x4DAB, 0x4DAC, 0x4DAD, + 0x4DAF, 0x4DB0, 0x4DB1, 0x4DB2, 0x4DB3, 0x4DB4, 0x4DB5, 0x20AC, 0x00A5, + 0x20AC, 0x0024, 0x303F, 0xA000, 0xA001, 0xA002, 0xA003, 0xA004, 0xA005, + 0xA006, 0xA007, 0xA008, 0xA009, 0xA00A, 0xA00B, 0xA00C, 0xA00D, 0xA00E, + 0xA00F, 0xA010, 0xA011, 0xA012, 0xA013, 0xA014, 0xA015, 0xA016, 0xA017, + 0xA018, 0xA019, 0xA01A, 0xA01B, 0xA01C, 0xA01D, 0xA01E, 0xA01F, 0xA020, + 0xA021, 0xA022, 0xA023, 0xA024, 0xA025, 0xA026, 0xA027, 0xA028, 0xA029, + 0xA02A, 0xA02B, 0xA02C, 0xA02D, 0xA02E, 0xA02F, 0xA030, 0xA031, 0xA032, + 0xA033, 0xA034, 0xA035, 0xA036, 0xA037, 0xA038, 0xA039, 0xA03A, 0xA03B, + 0xA03C, 0xA03D, 0xA03E, 0xA03F, 0xA040, 0xA041, 0xA042, 0xA043, 0xA044, + 0xA045, 0xA046, 0xA047, 0xA048, 0xA049, 0xA04A, 0xA04B, 0xA04C, 0xA04D, + 0xA04E, 0xA04F, 0xA050, 0xA051, 0xA052, 0xA053, 0xA054, 0xA055, 0xA056, + 0xA057, 0xA058, 0xA059, 0xA05A, 0xA05B, 0xA05C, 0xA05D, 0xA05E, 0xA05F, + 0xA060, 0xA061, 0xA062, 0xA063, 0xA064, 0xA065, 0xA066, 0xA067, 0xA068, + 0xA069, 0xA06A, 0xA06B, 0xA06C, 0xA06D, 0xA06E, 0xA06F, 0xA070, 0xA071, + 0xA072, 0xA073, 0xA074, 0xA075, 0xA076, 0xA077, 0xA078, 0xA079, 0xA07A, + 0xA07B, 0xA07C, 0xA07D, 0xA07E, 0xA07F, 0xA080, 0xA081, 0xA082, 0xA083, + 0xA084, 0xA085, 0xA086, 0xA087, 0xA088, 0xA089, 0xA08A, 0xA08B, 0xA08C, + 0xA08D, 0xA08E, 0xA08F, 0xA090, 0xA091, 0xA092, 0xA093, 0xA094, 0xA095, + 0xA096, 0xA097, 0xA098, 0xA099, 0xA09A, 0xA09B, 0xA09C, 0xA09D, 0xA09E, + 0xA09F, 0xA0A0, 0xA0A1, 0xA0A2, 0xA0A3, 0xA0A4, 0xA0A5, 0xA0A6, 0xA0A7, + 0xA0A8, 0xA0A9, 0xA0AA, 0xA0AB, 0xA0AC, 0xA0AD, 0xA0AE, 0xA0AF, 0xA0B0, + 0xA0B1, 0xA0B2, 0xA0B3, 0xA0B4, 0xA0B5, 0xA0B6, 0xA0B7, 0xA0B8, 0xA0B9, + 0xA0BA, 0xA0BB, 0xA0BC, 0xA0BD, 0xA0BE, 0xA0BF, 0xA0C0, 0xA0C1, 0xA0C2, + 0xA0C3, 0xA0C4, 0xA0C5, 0xA0C6, 0xA0C7, 0xA0C8, 0xA0C9, 0xA0CA, 0xA0CB, + 0xA0CC, 0xA0CD, 0xA0CE, 0xA0CF, 0xA0D0, 0xA0D1, 0xA0D2, 0xA0D3, 0xA0D4, + 0xA0D5, 0xA0D6, 0xA0D7, 0xA0D8, 0xA0D9, 0xA0DA, 0xA0DB, 0xA0DC, 0xA0DD, + 0xA0DE, 0xA0DF, 0xA0E0, 0xA0E1, 0xA0E2, 0xA0E3, 0xA0E4, 0xA0E5, 0xA0E6, + 0xA0E7, 0xA0E8, 0xA0E9, 0xA0EA, 0xA0EB, 0xA0EC, 0xA0ED, 0xA0EE, 0xA0EF, + 0xA0F0, 0xA0F1, 0xA0F2, 0xA0F3, 0xA0F4, 0xA0F5, 0xA0F6, 0xA0F7, 0xA0F8, + 0xA0F9, 0xA0FA, 0xA0FB, 0xA0FC, 0xA0FD, 0xA0FE, 0xA0FF, 0xA100, 0xA101, + 0xA102, 0xA103, 0xA104, 0xA105, 0xA106, 0xA107, 0xA108, 0xA109, 0xA10A, + 0xA10B, 0xA10C, 0xA10D, 0xA10E, 0xA10F, 0xA110, 0xA111, 0xA112, 0xA113, + 0xA114, 0xA115, 0xA116, 0xA117, 0xA118, 0xA119, 0xA11A, 0xA11B, 0xA11C, + 0xA11D, 0xA11E, 0xA11F, 0xA120, 0xA121, 0xA122, 0xA123, 0xA124, 0xA125, + 0xA126, 0xA127, 0xA128, 0xA129, 0xA12A, 0xA12B, 0xA12C, 0xA12D, 0xA12E, + 0xA12F, 0xA130, 0xA131, 0xA132, 0xA133, 0xA134, 0xA135, 0xA136, 0xA137, + 0xA138, 0xA139, 0xA13A, 0xA13B, 0xA13C, 0xA13D, 0xA13E, 0xA13F, 0xA140, + 0xA141, 0xA142, 0xA143, 0xA144, 0xA145, 0xA146, 0xA147, 0xA148, 0xA149, + 0xA14A, 0xA14B, 0xA14C, 0xA14D, 0xA14E, 0xA14F, 0xA150, 0xA151, 0xA152, + 0xA153, 0xA154, 0xA155, 0xA156, 0xA157, 0xA158, 0xA159, 0xA15A, 0xA15B, + 0xA15C, 0xA15D, 0xA15E, 0xA15F, 0xA160, 0xA161, 0xA162, 0xA163, 0xA164, + 0xA165, 0xA166, 0xA167, 0xA168, 0xA169, 0xA16A, 0xA16B, 0xA16C, 0xA16D, + 0xA16E, 0xA16F, 0xA170, 0xA171, 0xA172, 0xA173, 0xA174, 0xA175, 0xA176, + 0xA177, 0xA178, 0xA179, 0xA17A, 0xA17B, 0xA17C, 0xA17D, 0xA17E, 0xA17F, + 0xA180, 0xA181, 0xA182, 0xA183, 0xA184, 0xA185, 0xA186, 0xA187, 0xA188, + 0xA189, 0xA18A, 0xA18B, 0xA18C, 0xA18D, 0xA18E, 0xA18F, 0xA190, 0xA191, + 0xA192, 0xA193, 0xA194, 0xA195, 0xA196, 0xA197, 0xA198, 0xA199, 0xA19A, + 0xA19B, 0xA19C, 0xA19D, 0xA19E, 0xA19F, 0xA1A0, 0xA1A1, 0xA1A2, 0xA1A3, + 0xA1A4, 0xA1A5, 0xA1A6, 0xA1A7, 0xA1A8, 0xA1A9, 0xA1AA, 0xA1AB, 0xA1AC, + 0xA1AD, 0xA1AE, 0xA1AF, 0xA1B0, 0xA1B1, 0xA1B2, 0xA1B3, 0xA1B4, 0xA1B5, + 0xA1B6, 0xA1B7, 0xA1B8, 0xA1B9, 0xA1BA, 0xA1BB, 0xA1BC, 0xA1BD, 0xA1BE, + 0xA1BF, 0xA1C0, 0xA1C1, 0xA1C2, 0xA1C3, 0xA1C4, 0xA1C5, 0xA1C6, 0xA1C7, + 0xA1C8, 0xA1C9, 0xA1CA, 0xA1CB, 0xA1CC, 0xA1CD, 0xA1CE, 0xA1CF, 0xA1D0, + 0xA1D1, 0xA1D2, 0xA1D3, 0xA1D4, 0xA1D5, 0xA1D6, 0xA1D7, 0xA1D8, 0xA1D9, + 0xA1DA, 0xA1DB, 0xA1DC, 0xA1DD, 0xA1DE, 0xA1DF, 0xA1E0, 0xA1E1, 0xA1E2, + 0xA1E3, 0xA1E4, 0xA1E5, 0xA1E6, 0xA1E7, 0xA1E8, 0xA1E9, 0xA1EA, 0xA1EB, + 0xA1EC, 0xA1ED, 0xA1EE, 0xA1EF, 0xA1F0, 0xA1F1, 0xA1F2, 0xA1F3, 0xA1F4, + 0xA1F5, 0xA1F6, 0xA1F7, 0xA1F8, 0xA1F9, 0xA1FA, 0xA1FB, 0xA1FC, 0xA1FD, + 0xA1FE, 0xA1FF, 0xA200, 0xA201, 0xA202, 0xA203, 0xA204, 0xA205, 0xA206, + 0xA207, 0xA208, 0xA209, 0xA20A, 0xA20B, 0xA20C, 0xA20D, 0xA20E, 0xA20F, + 0xA210, 0xA211, 0xA212, 0xA213, 0xA214, 0xA215, 0xA216, 0xA217, 0xA218, + 0xA219, 0xA21A, 0xA21B, 0xA21C, 0xA21D, 0xA21E, 0xA21F, 0xA220, 0xA221, + 0xA222, 0xA223, 0xA224, 0xA225, 0xA226, 0xA227, 0xA228, 0xA229, 0xA22A, + 0xA22B, 0xA22C, 0xA22D, 0xA22E, 0xA22F, 0xA230, 0xA231, 0xA232, 0xA233, + 0xA234, 0xA235, 0xA236, 0xA237, 0xA238, 0xA239, 0xA23A, 0xA23B, 0xA23C, + 0xA23D, 0xA23E, 0xA23F, 0xA240, 0xA241, 0xA242, 0xA243, 0xA244, 0xA245, + 0xA246, 0xA247, 0xA248, 0xA249, 0xA24A, 0xA24B, 0xA24C, 0xA24D, 0xA24E, + 0xA24F, 0xA250, 0xA251, 0xA252, 0xA253, 0xA254, 0xA255, 0xA256, 0xA257, + 0xA258, 0xA259, 0xA25A, 0xA25B, 0xA25C, 0xA25D, 0xA25E, 0xA25F, 0xA260, + 0xA261, 0xA262, 0xA263, 0xA264, 0xA265, 0xA266, 0xA267, 0xA268, 0xA269, + 0xA26A, 0xA26B, 0xA26C, 0xA26D, 0xA26E, 0xA26F, 0xA270, 0xA271, 0xA272, + 0xA273, 0xA274, 0xA275, 0xA276, 0xA277, 0xA278, 0xA279, 0xA27A, 0xA27B, + 0xA27C, 0xA27D, 0xA27E, 0xA27F, 0xA280, 0xA281, 0xA282, 0xA283, 0xA284, + 0xA285, 0xA286, 0xA287, 0xA288, 0xA289, 0xA28A, 0xA28B, 0xA28C, 0xA28D, + 0xA28E, 0xA28F, 0xA290, 0xA291, 0xA292, 0xA293, 0xA294, 0xA295, 0xA296, + 0xA297, 0xA298, 0xA299, 0xA29A, 0xA29B, 0xA29C, 0xA29D, 0xA29E, 0xA29F, + 0xA2A0, 0xA2A1, 0xA2A2, 0xA2A3, 0xA2A4, 0xA2A5, 0xA2A6, 0xA2A7, 0xA2A8, + 0xA2A9, 0xA2AA, 0xA2AB, 0xA2AC, 0xA2AD, 0xA2AE, 0xA2AF, 0xA2B0, 0xA2B1, + 0xA2B2, 0xA2B3, 0xA2B4, 0xA2B5, 0xA2B6, 0xA2B7, 0xA2B8, 0xA2B9, 0xA2BA, + 0xA2BB, 0xA2BC, 0xA2BD, 0xA2BE, 0xA2BF, 0xA2C0, 0xA2C1, 0xA2C2, 0xA2C3, + 0xA2C4, 0xA2C5, 0xA2C6, 0xA2C7, 0xA2C8, 0xA2C9, 0xA2CA, 0xA2CB, 0xA2CC, + 0xA2CD, 0xA2CE, 0xA2CF, 0xA2D0, 0xA2D1, 0xA2D2, 0xA2D3, 0xA2D4, 0xA2D5, + 0xA2D6, 0xA2D7, 0xA2D8, 0xA2D9, 0xA2DA, 0xA2DB, 0xA2DC, 0xA2DD, 0xA2DE, + 0xA2DF, 0xA2E0, 0xA2E1, 0xA2E2, 0xA2E3, 0xA2E4, 0xA2E5, 0xA2E6, 0xA2E7, + 0xA2E8, 0xA2E9, 0xA2EA, 0xA2EB, 0xA2EC, 0xA2ED, 0xA2EE, 0xA2EF, 0xA2F0, + 0xA2F1, 0xA2F2, 0xA2F3, 0xA2F4, 0xA2F5, 0xA2F6, 0xA2F7, 0xA2F8, 0xA2F9, + 0xA2FA, 0xA2FB, 0xA2FC, 0xA2FD, 0xA2FE, 0xA2FF, 0xA300, 0xA301, 0xA302, + 0xA303, 0xA304, 0xA305, 0xA306, 0xA307, 0xA308, 0xA309, 0xA30A, 0xA30B, + 0xA30C, 0xA30D, 0xA30E, 0xA30F, 0xA310, 0xA311, 0xA312, 0xA313, 0xA314, + 0xA315, 0xA316, 0xA317, 0xA318, 0xA319, 0xA31A, 0xA31B, 0xA31C, 0xA31D, + 0xA31E, 0xA31F, 0xA320, 0xA321, 0xA322, 0xA323, 0xA324, 0xA325, 0xA326, + 0xA327, 0xA328, 0xA329, 0xA32A, 0xA32B, 0xA32C, 0xA32D, 0xA32E, 0xA32F, + 0xA330, 0xA331, 0xA332, 0xA333, 0xA334, 0xA335, 0xA336, 0xA337, 0xA338, + 0xA339, 0xA33A, 0xA33B, 0xA33C, 0xA33D, 0xA33E, 0xA33F, 0xA340, 0xA341, + 0xA342, 0xA343, 0xA344, 0xA345, 0xA346, 0xA347, 0xA348, 0xA349, 0xA34A, + 0xA34B, 0xA34C, 0xA34D, 0xA34E, 0xA34F, 0xA350, 0xA351, 0xA352, 0xA353, + 0xA354, 0xA355, 0xA356, 0xA357, 0xA358, 0xA359, 0xA35A, 0xA35B, 0xA35C, + 0xA35D, 0xA35E, 0xA35F, 0xA360, 0xA361, 0xA362, 0xA363, 0xA364, 0xA365, + 0xA366, 0xA367, 0xA368, 0xA369, 0xA36A, 0xA36B, 0xA36C, 0xA36D, 0xA36E, + 0xA36F, 0xA370, 0xA371, 0xA372, 0xA373, 0xA374, 0xA375, 0xA376, 0xA377, + 0xA378, 0xA379, 0xA37A, 0xA37B, 0xA37C, 0xA37D, 0xA37E, 0xA37F, 0xA380, + 0xA381, 0xA382, 0xA383, 0xA384, 0xA385, 0xA386, 0xA387, 0xA388, 0xA389, + 0xA38A, 0xA38B, 0xA38C, 0xA38D, 0xA38E, 0xA38F, 0xA390, 0xA391, 0xA392, + 0xA393, 0xA394, 0xA395, 0xA396, 0xA397, 0xA398, 0xA399, 0xA39A, 0xA39B, + 0xA39C, 0xA39D, 0xA39E, 0xA39F, 0xA3A0, 0xA3A1, 0xA3A2, 0xA3A3, 0xA3A4, + 0xA3A5, 0xA3A6, 0xA3A7, 0xA3A8, 0xA3A9, 0xA3AA, 0xA3AB, 0xA3AC, 0xA3AD, + 0xA3AE, 0xA3AF, 0xA3B0, 0xA3B1, 0xA3B2, 0xA3B3, 0xA3B4, 0xA3B5, 0xA3B6, + 0xA3B7, 0xA3B8, 0xA3B9, 0xA3BA, 0xA3BB, 0xA3BC, 0xA3BD, 0xA3BE, 0xA3BF, + 0xA3C0, 0xA3C1, 0xA3C2, 0xA3C3, 0xA3C4, 0xA3C5, 0xA3C6, 0xA3C7, 0xA3C8, + 0xA3C9, 0xA3CA, 0xA3CB, 0xA3CC, 0xA3CD, 0xA3CE, 0xA3CF, 0xA3D0, 0xA3D1, + 0xA3D2, 0xA3D3, 0xA3D4, 0xA3D5, 0xA3D6, 0xA3D7, 0xA3D8, 0xA3D9, 0xA3DA, + 0xA3DB, 0xA3DC, 0xA3DD, 0xA3DE, 0xA3DF, 0xA3E0, 0xA3E1, 0xA3E2, 0xA3E3, + 0xA3E4, 0xA3E5, 0xA3E6, 0xA3E7, 0xA3E8, 0xA3E9, 0xA3EA, 0xA3EB, 0xA3EC, + 0xA3ED, 0xA3EE, 0xA3EF, 0xA3F0, 0xA3F1, 0xA3F2, 0xA3F3, 0xA3F4, 0xA3F5, + 0xA3F6, 0xA3F7, 0xA3F8, 0xA3F9, 0xA3FA, 0xA3FB, 0xA3FC, 0xA3FD, 0xA3FE, + 0xA3FF, 0xA400, 0xA401, 0xA402, 0xA403, 0xA404, 0xA405, 0xA406, 0xA407, + 0xA408, 0xA409, 0xA40A, 0xA40B, 0xA40C, 0xA40D, 0xA40E, 0xA40F, 0xA410, + 0xA411, 0xA412, 0xA413, 0xA414, 0xA415, 0xA416, 0xA417, 0xA418, 0xA419, + 0xA41A, 0xA41B, 0xA41C, 0xA41D, 0xA41E, 0xA41F, 0xA420, 0xA421, 0xA422, + 0xA423, 0xA424, 0xA425, 0xA426, 0xA427, 0xA428, 0xA429, 0xA42A, 0xA42B, + 0xA42C, 0xA42D, 0xA42E, 0xA42F, 0xA430, 0xA431, 0xA432, 0xA433, 0xA434, + 0xA435, 0xA436, 0xA437, 0xA438, 0xA439, 0xA43A, 0xA43B, 0xA43C, 0xA43D, + 0xA43E, 0xA43F, 0xA440, 0xA441, 0xA442, 0xA443, 0xA444, 0xA445, 0xA446, + 0xA447, 0xA448, 0xA449, 0xA44A, 0xA44B, 0xA44C, 0xA44D, 0xA44E, 0xA44F, + 0xA450, 0xA451, 0xA452, 0xA453, 0xA454, 0xA455, 0xA456, 0xA457, 0xA458, + 0xA459, 0xA45A, 0xA45B, 0xA45C, 0xA45D, 0xA45E, 0xA45F, 0xA460, 0xA461, + 0xA462, 0xA463, 0xA464, 0xA465, 0xA466, 0xA467, 0xA468, 0xA469, 0xA46A, + 0xA46B, 0xA46C, 0xA46D, 0xA46E, 0xA46F, 0xA470, 0xA471, 0xA472, 0xA473, + 0xA474, 0xA475, 0xA476, 0xA477, 0xA478, 0xA479, 0xA47A, 0xA47B, 0xA47C, + 0xA47D, 0xA47E, 0xA47F, 0xA480, 0xA481, 0xA482, 0xA483, 0xA484, 0xA485, + 0xA486, 0xA487, 0xA488, 0xA489, 0xA48A, 0xA48B, 0xA48C, 0xA490, 0xA491, + 0xA492, 0xA493, 0xA494, 0xA495, 0xA496, 0xA497, 0xA498, 0xA499, 0xA49A, + 0xA49B, 0xA49C, 0xA49D, 0xA49E, 0xA49F, 0xA4A0, 0xA4A1, 0xA4A2, 0xA4A3, + 0xA4A4, 0xA4A5, 0xA4A6, 0xA4A7, 0xA4A8, 0xA4A9, 0xA4AA, 0xA4AB, 0xA4AC, + 0xA4AD, 0xA4AE, 0xA4AF, 0xA4B0, 0xA4B1, 0xA4B2, 0xA4B3, 0xA4B4, 0xA4B5, + 0xA4B6, 0xA4B7, 0xA4B8, 0xA4B9, 0xA4BA, 0xA4BB, 0xA4BC, 0xA4BD, 0xA4BE, + 0xA4BF, 0xA4C0, 0xA4C1, 0xA4C2, 0xA4C3, 0xA4C4, 0xA4C5, 0xA4C6, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp new file mode 100644 index 0000000000..0485aee635 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp @@ -0,0 +1,40 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GB_EUC_H_0[90 * 3] = { + 0x0020, 0x0020, 0x1E24, 0x0021, 0x007E, 0x032E, 0xA1A1, 0xA1FE, 0x0060, + 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, + 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, + 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, + 0xA7D1, 0xA7F1, 0x027B, 0xA8A1, 0xA8C0, 0x029C, 0xA8C5, 0xA8EA, 0x02BC, + 0xA9A4, 0xA9EF, 0x02E2, 0xAAA1, 0xAAFE, 0x032E, 0xABA1, 0xABC0, 0x038C, + 0xB0A1, 0xB0FE, 0x03AC, 0xB1A1, 0xB1FE, 0x040A, 0xB2A1, 0xB2FE, 0x0468, + 0xB3A1, 0xB3FE, 0x04C6, 0xB4A1, 0xB4FE, 0x0524, 0xB5A1, 0xB5FE, 0x0582, + 0xB6A1, 0xB6FE, 0x05E0, 0xB7A1, 0xB7FE, 0x063E, 0xB8A1, 0xB8FE, 0x069C, + 0xB9A1, 0xB9FE, 0x06FA, 0xBAA1, 0xBAFE, 0x0758, 0xBBA1, 0xBBFE, 0x07B6, + 0xBCA1, 0xBCFE, 0x0814, 0xBDA1, 0xBDFE, 0x0872, 0xBEA1, 0xBEFE, 0x08D0, + 0xBFA1, 0xBFFE, 0x092E, 0xC0A1, 0xC0FE, 0x098C, 0xC1A1, 0xC1FE, 0x09EA, + 0xC2A1, 0xC2FE, 0x0A48, 0xC3A1, 0xC3FE, 0x0AA6, 0xC4A1, 0xC4FE, 0x0B04, + 0xC5A1, 0xC5FE, 0x0B62, 0xC6A1, 0xC6FE, 0x0BC0, 0xC7A1, 0xC7FE, 0x0C1E, + 0xC8A1, 0xC8FE, 0x0C7C, 0xC9A1, 0xC9FE, 0x0CDA, 0xCAA1, 0xCAFE, 0x0D38, + 0xCBA1, 0xCBFE, 0x0D96, 0xCCA1, 0xCCFE, 0x0DF4, 0xCDA1, 0xCDFE, 0x0E52, + 0xCEA1, 0xCEFE, 0x0EB0, 0xCFA1, 0xCFFE, 0x0F0E, 0xD0A1, 0xD0FE, 0x0F6C, + 0xD1A1, 0xD1FE, 0x0FCA, 0xD2A1, 0xD2FE, 0x1028, 0xD3A1, 0xD3FE, 0x1086, + 0xD4A1, 0xD4FE, 0x10E4, 0xD5A1, 0xD5FE, 0x1142, 0xD6A1, 0xD6FE, 0x11A0, + 0xD7A1, 0xD7F9, 0x11FE, 0xD8A1, 0xD8FE, 0x1257, 0xD9A1, 0xD9FE, 0x12B5, + 0xDAA1, 0xDAFE, 0x1313, 0xDBA1, 0xDBFE, 0x1371, 0xDCA1, 0xDCFE, 0x13CF, + 0xDDA1, 0xDDFE, 0x142D, 0xDEA1, 0xDEFE, 0x148B, 0xDFA1, 0xDFFE, 0x14E9, + 0xE0A1, 0xE0FE, 0x1547, 0xE1A1, 0xE1FE, 0x15A5, 0xE2A1, 0xE2FE, 0x1603, + 0xE3A1, 0xE3FE, 0x1661, 0xE4A1, 0xE4FE, 0x16BF, 0xE5A1, 0xE5FE, 0x171D, + 0xE6A1, 0xE6FE, 0x177B, 0xE7A1, 0xE7FE, 0x17D9, 0xE8A1, 0xE8FE, 0x1837, + 0xE9A1, 0xE9FE, 0x1895, 0xEAA1, 0xEAFE, 0x18F3, 0xEBA1, 0xEBFE, 0x1951, + 0xECA1, 0xECFE, 0x19AF, 0xEDA1, 0xEDFE, 0x1A0D, 0xEEA1, 0xEEFE, 0x1A6B, + 0xEFA1, 0xEFFE, 0x1AC9, 0xF0A1, 0xF0FE, 0x1B27, 0xF1A1, 0xF1FE, 0x1B85, + 0xF2A1, 0xF2FE, 0x1BE3, 0xF3A1, 0xF3FE, 0x1C41, 0xF4A1, 0xF4FE, 0x1C9F, + 0xF5A1, 0xF5FE, 0x1CFD, 0xF6A1, 0xF6FE, 0x1D5B, 0xF7A1, 0xF7FE, 0x1DB9, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp new file mode 100644 index 0000000000..274d0d2fd2 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp @@ -0,0 +1,17 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GB_EUC_V_0[20 * 3] = { + 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, + 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, + 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, + 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, + 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, + 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, + 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp new file mode 100644 index 0000000000..7f668947b5 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp @@ -0,0 +1,1367 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBK_EUC_H_2[4071 * 3] = { + 0x0020, 0x0020, 0x1E24, 0x0021, 0x007E, 0x032E, 0x8140, 0x8178, 0x2758, + 0x8179, 0x8179, 0x2059, 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, + 0x8186, 0x8186, 0x21F1, 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, + 0x81EE, 0x81F5, 0x2802, 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, + 0x8240, 0x8252, 0x2812, 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, + 0x8262, 0x8262, 0x21B5, 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, + 0x8275, 0x8279, 0x2844, 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, + 0x827D, 0x827D, 0x1E62, 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, + 0x8281, 0x8282, 0x284C, 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, + 0x8290, 0x8290, 0x205C, 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, + 0x82A6, 0x82C7, 0x286E, 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, + 0x82CA, 0x82E0, 0x2890, 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, + 0x82E3, 0x82E3, 0x210A, 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, + 0x82ED, 0x82ED, 0x267F, 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, + 0x82F3, 0x82F6, 0x28B4, 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, + 0x82F9, 0x82F9, 0x226C, 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, + 0x82FC, 0x82FE, 0x28B9, 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, + 0x8342, 0x8344, 0x28BD, 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, + 0x8348, 0x8348, 0x1FB9, 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, + 0x834D, 0x8352, 0x28C5, 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, + 0x8357, 0x8357, 0x20C2, 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, + 0x835F, 0x8364, 0x28D4, 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, + 0x8367, 0x8371, 0x28DA, 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, + 0x8378, 0x8378, 0x2210, 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, + 0x837B, 0x837B, 0x28EB, 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, + 0x837E, 0x837E, 0x1FE4, 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, + 0x8386, 0x8386, 0x22D6, 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, + 0x838A, 0x838A, 0x22CE, 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, + 0x838E, 0x8393, 0x28F6, 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, + 0x839E, 0x839E, 0x2231, 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, + 0x83A7, 0x83AA, 0x290C, 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, + 0x83AE, 0x83AE, 0x22D7, 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, + 0x83B1, 0x83B9, 0x2912, 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, + 0x83C9, 0x83C9, 0x2025, 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, + 0x83F7, 0x83FE, 0x2955, 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, + 0x8451, 0x8470, 0x296D, 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, + 0x8474, 0x8474, 0x2263, 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, + 0x8478, 0x847E, 0x2991, 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, + 0x8483, 0x848D, 0x299A, 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, + 0x8492, 0x8492, 0x22CA, 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, + 0x849D, 0x849D, 0x1F4F, 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, + 0x84A2, 0x84A2, 0x2036, 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, + 0x84A5, 0x84A5, 0x22C9, 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, + 0x84A9, 0x84A9, 0x1F75, 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, + 0x84C6, 0x84D2, 0x29D2, 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, + 0x84D5, 0x84D5, 0x21A9, 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, + 0x84D8, 0x84D8, 0x29E1, 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, + 0x84DB, 0x84DC, 0x29E2, 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, + 0x84EA, 0x84EA, 0x2323, 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, + 0x84EF, 0x84F0, 0x29F3, 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, + 0x8540, 0x8550, 0x2A02, 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, + 0x8553, 0x8553, 0x2A13, 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, + 0x855E, 0x855E, 0x20EF, 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, + 0x8567, 0x857E, 0x2A24, 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, + 0x8588, 0x858A, 0x2A43, 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, + 0x8592, 0x8592, 0x21F9, 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, + 0x8597, 0x8597, 0x2A4F, 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, + 0x85A2, 0x85A2, 0x1E5A, 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, + 0x85B3, 0x85FE, 0x2A68, 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, + 0x864B, 0x8653, 0x2ABE, 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, + 0x8668, 0x8668, 0x236C, 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, + 0x8696, 0x8696, 0x219C, 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, + 0x869A, 0x86A0, 0x2B08, 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, + 0x86CA, 0x86CA, 0x210B, 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, + 0x86CD, 0x86CD, 0x2B38, 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, + 0x86D1, 0x86D1, 0x222C, 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, + 0x86DD, 0x86DD, 0x22C0, 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, + 0x86E2, 0x86E7, 0x2B48, 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, + 0x86EE, 0x86EE, 0x2379, 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, + 0x86F5, 0x86FE, 0x2B58, 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, + 0x8744, 0x8744, 0x237C, 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, + 0x874A, 0x874A, 0x2B69, 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, + 0x874D, 0x874E, 0x2B6A, 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, + 0x8757, 0x8757, 0x1F4C, 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, + 0x875B, 0x875B, 0x21CF, 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, + 0x875E, 0x875E, 0x2371, 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, + 0x8761, 0x8765, 0x2B77, 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, + 0x877A, 0x877A, 0x236F, 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, + 0x877E, 0x877E, 0x2B91, 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, + 0x8782, 0x8782, 0x2373, 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, + 0x8787, 0x8787, 0x2B96, 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, + 0x878A, 0x878A, 0x20B5, 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, + 0x878E, 0x878E, 0x2672, 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, + 0x8794, 0x8797, 0x2B9E, 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, + 0x879D, 0x879D, 0x2375, 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, + 0x87A4, 0x87A6, 0x2BAB, 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, + 0x87B3, 0x87B3, 0x236B, 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, + 0x87B6, 0x87BA, 0x2BBA, 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, + 0x87BF, 0x87BF, 0x237D, 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, + 0x87C2, 0x87C2, 0x2381, 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, + 0x87CB, 0x87CB, 0x237E, 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, + 0x87CF, 0x87CF, 0x22DB, 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, + 0x87D3, 0x87D3, 0x2689, 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, + 0x87D6, 0x87D9, 0x2BCF, 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, + 0x87F7, 0x87F7, 0x2383, 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, + 0x87FA, 0x87FA, 0x218F, 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, + 0x8841, 0x8841, 0x2248, 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, + 0x8845, 0x8845, 0x2BF6, 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, + 0x8880, 0x88B9, 0x2C2F, 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, + 0x88CC, 0x88CC, 0x228B, 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, + 0x88D5, 0x88D6, 0x2C81, 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, + 0x88DF, 0x88DF, 0x232C, 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, + 0x88E6, 0x88F1, 0x2C8F, 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, + 0x88F4, 0x88F5, 0x2C9B, 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, + 0x8940, 0x894A, 0x2CA5, 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, + 0x894D, 0x894D, 0x2CB0, 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, + 0x8950, 0x8950, 0x232D, 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, + 0x8955, 0x895C, 0x2CB5, 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, + 0x895F, 0x895F, 0x232F, 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, + 0x896E, 0x8970, 0x2CCB, 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, + 0x897C, 0x897C, 0x1EC2, 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, + 0x898B, 0x898B, 0x22B2, 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, + 0x899A, 0x899D, 0x2CF2, 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, + 0x89A6, 0x89A6, 0x20D9, 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, + 0x89A9, 0x89AE, 0x2CFE, 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, + 0x89BA, 0x89BA, 0x21ED, 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, + 0x89BF, 0x89BF, 0x2326, 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, + 0x89C4, 0x89C4, 0x1F52, 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, + 0x89C7, 0x89C7, 0x2D14, 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, + 0x89CE, 0x89CE, 0x1E2B, 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, + 0x89D2, 0x89D7, 0x2D1C, 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, + 0x89DB, 0x89DB, 0x2138, 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, + 0x89F5, 0x89FE, 0x2D3C, 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, + 0x8A42, 0x8A58, 0x2D47, 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, + 0x8A5B, 0x8A5B, 0x2D5E, 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, + 0x8A5E, 0x8A5E, 0x1EFA, 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, + 0x8A7A, 0x8A7E, 0x2D7A, 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, + 0x8AE5, 0x8AFE, 0x2DE3, 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, + 0x8B45, 0x8B48, 0x2E01, 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, + 0x8B7A, 0x8B7A, 0x23FC, 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, + 0x8B8C, 0x8B8C, 0x2069, 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, + 0x8B9F, 0x8BB2, 0x2E56, 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, + 0x8BB9, 0x8BB9, 0x23FD, 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, + 0x8BBF, 0x8BC5, 0x2E73, 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, + 0x8BC8, 0x8BC8, 0x23FE, 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, + 0x8BD4, 0x8BD4, 0x2401, 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, + 0x8BDD, 0x8BE4, 0x2E8C, 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, + 0x8BEB, 0x8BEB, 0x2221, 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, + 0x8BF1, 0x8BFE, 0x2E9D, 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, + 0x8C45, 0x8C4E, 0x2EAF, 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, + 0x8C57, 0x8C57, 0x21E5, 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, + 0x8C5D, 0x8C7E, 0x2EC4, 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, + 0x8C8C, 0x8C8C, 0x2EF1, 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, + 0x8C8F, 0x8C8F, 0x2121, 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, + 0x8C92, 0x8C92, 0x1FE5, 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, + 0x8C9A, 0x8C9A, 0x1E37, 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, + 0x8CA3, 0x8CA3, 0x22A6, 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, + 0x8CA6, 0x8CA6, 0x1EDA, 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, + 0x8CC0, 0x8CC0, 0x235C, 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, + 0x8CD3, 0x8CD3, 0x1E67, 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, + 0x8CD6, 0x8CD8, 0x2F2B, 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, + 0x8CF9, 0x8CF9, 0x1F16, 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, + 0x8D73, 0x8D73, 0x2389, 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, + 0x8D76, 0x8D7A, 0x2F86, 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, + 0x8D80, 0x8D87, 0x2F8E, 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, + 0x8D8F, 0x8D8F, 0x1F1A, 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, + 0x8D9F, 0x8DB8, 0x2FAA, 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, + 0x8DE2, 0x8DE2, 0x2391, 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, + 0x8DE5, 0x8DE6, 0x2FED, 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, + 0x8DF7, 0x8DF7, 0x238E, 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, + 0x8E40, 0x8E45, 0x3004, 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, + 0x8E56, 0x8E56, 0x2390, 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, + 0x8E59, 0x8E59, 0x301A, 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, + 0x8E68, 0x8E68, 0x1FE9, 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, + 0x8E6F, 0x8E6F, 0x302D, 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, + 0x8E80, 0x8E80, 0x2324, 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, + 0x8E9C, 0x8E9E, 0x3056, 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, + 0x8EA4, 0x8EA4, 0x2277, 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, + 0x8EA8, 0x8EAB, 0x305F, 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, + 0x8EAE, 0x8EAE, 0x2384, 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, + 0x8EBE, 0x8EBE, 0x2386, 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, + 0x8EC4, 0x8EC4, 0x3076, 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, + 0x8ECD, 0x8ECD, 0x1E32, 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, + 0x8ED6, 0x8ED6, 0x1F13, 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, + 0x8EEC, 0x8EEC, 0x1FE0, 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, + 0x8F52, 0x8F52, 0x2087, 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, + 0x8F55, 0x8F55, 0x1EF6, 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, + 0x8F5D, 0x8F5D, 0x2045, 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, + 0x8F65, 0x8F7E, 0x30C9, 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, + 0x8F87, 0x8F87, 0x30E9, 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, + 0x8F95, 0x8F95, 0x266E, 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, + 0x8F98, 0x8F9A, 0x30F7, 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, + 0x8F9D, 0x8F9D, 0x2188, 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, + 0x8FA2, 0x8FBC, 0x30FE, 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, + 0x8FC4, 0x8FC4, 0x1EA1, 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, + 0x8FC7, 0x8FCC, 0x3120, 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, + 0x8FD8, 0x8FD8, 0x1E7C, 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, + 0x9080, 0x909C, 0x3195, 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, + 0x909F, 0x90B9, 0x31B2, 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, + 0x90C0, 0x90C0, 0x2095, 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, + 0x90C5, 0x90C5, 0x23B9, 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, + 0x90DC, 0x90DC, 0x23BD, 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, + 0x90EE, 0x90EF, 0x31FA, 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, + 0x90F7, 0x90F7, 0x23B3, 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, + 0x9142, 0x9142, 0x2162, 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, + 0x914C, 0x914C, 0x3213, 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, + 0x9151, 0x9151, 0x23B7, 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, + 0x9155, 0x9155, 0x24DF, 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, + 0x915A, 0x915A, 0x214E, 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, + 0x915E, 0x9160, 0x321E, 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, + 0x9163, 0x9163, 0x20EB, 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, + 0x916F, 0x9175, 0x322C, 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, + 0x917A, 0x917A, 0x201B, 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, + 0x917D, 0x917E, 0x3236, 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, + 0x9185, 0x918C, 0x323C, 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, + 0x9191, 0x9191, 0x2089, 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, + 0x9194, 0x9196, 0x3248, 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, + 0x919B, 0x919B, 0x2214, 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, + 0x91AA, 0x91AA, 0x2223, 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, + 0x91BA, 0x91BA, 0x268C, 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, + 0x91BF, 0x91BF, 0x24E0, 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, + 0x91C4, 0x91CC, 0x326F, 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, + 0x91D0, 0x91D0, 0x1FFE, 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, + 0x91D3, 0x91D3, 0x327A, 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, + 0x91D6, 0x91D6, 0x1FCE, 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, + 0x91D9, 0x91D9, 0x2021, 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, + 0x91E0, 0x91E1, 0x3282, 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, + 0x91EA, 0x91EA, 0x24A4, 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, + 0x91F1, 0x91F1, 0x3290, 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, + 0x9240, 0x927E, 0x329D, 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, + 0x92B7, 0x92CD, 0x3312, 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, + 0x92D0, 0x92D0, 0x235D, 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, + 0x92D5, 0x92DE, 0x332D, 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, + 0x92E1, 0x92FD, 0x3337, 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, + 0x9350, 0x9350, 0x21FF, 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, + 0x935E, 0x936F, 0x3370, 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, + 0x9376, 0x9376, 0x1EB6, 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, + 0x938C, 0x938C, 0x20DB, 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, + 0x939E, 0x93A4, 0x33AB, 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, + 0x93A7, 0x93A7, 0x2040, 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, + 0x93B5, 0x93B7, 0x33BF, 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, + 0x93BB, 0x93BB, 0x235E, 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, + 0x93BE, 0x93C5, 0x33C5, 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, + 0x93CF, 0x93CF, 0x2093, 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, + 0x93D8, 0x93DA, 0x33DC, 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, + 0x93DD, 0x93E0, 0x33DF, 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, + 0x93E4, 0x93E4, 0x20C0, 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, + 0x93E9, 0x93E9, 0x2160, 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, + 0x93EC, 0x93EC, 0x1F8E, 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, + 0x93EF, 0x93EF, 0x2047, 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, + 0x93F2, 0x93F3, 0x33EB, 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, + 0x93F6, 0x93F9, 0x33ED, 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, + 0x93FE, 0x93FE, 0x1FCC, 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, + 0x9445, 0x944C, 0x33F8, 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, + 0x9450, 0x9450, 0x1E52, 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, + 0x9453, 0x9453, 0x228F, 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, + 0x9456, 0x9457, 0x3403, 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, + 0x945B, 0x945B, 0x1E2D, 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, + 0x945E, 0x945E, 0x3407, 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, + 0x9464, 0x9464, 0x2363, 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, + 0x9467, 0x946D, 0x340D, 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, + 0x9472, 0x9472, 0x1FF6, 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, + 0x9475, 0x9475, 0x3418, 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, + 0x9478, 0x9478, 0x2367, 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, + 0x947B, 0x947E, 0x341B, 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, + 0x9482, 0x9482, 0x2163, 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, + 0x9488, 0x9488, 0x1FFC, 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, + 0x94A2, 0x94B2, 0x343B, 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, + 0x94B5, 0x94B5, 0x2142, 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, + 0x94C0, 0x94C0, 0x1E43, 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, + 0x94CD, 0x94D7, 0x3461, 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, + 0x94E0, 0x94E0, 0x1ED7, 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, + 0x9572, 0x9572, 0x212D, 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, + 0x9583, 0x9583, 0x229B, 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, + 0x959F, 0x959F, 0x24A8, 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, + 0x95B4, 0x95B9, 0x34FF, 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, + 0x95CF, 0x95CF, 0x24A7, 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, + 0x95D2, 0x95D2, 0x24A6, 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, + 0x95D5, 0x95E0, 0x351B, 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, + 0x95E7, 0x95E7, 0x1FE7, 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, + 0x95F2, 0x95F7, 0x3535, 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, + 0x95FE, 0x95FE, 0x1F5C, 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, + 0x9657, 0x967B, 0x3556, 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, + 0x9680, 0x96FE, 0x357D, 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, + 0x9768, 0x976B, 0x3623, 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, + 0x976E, 0x976E, 0x246D, 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, + 0x9796, 0x9796, 0x246B, 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, + 0x979D, 0x979D, 0x1ECE, 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, + 0x97A4, 0x97BE, 0x3658, 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, + 0x97EE, 0x97EE, 0x21FE, 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, + 0x97F8, 0x97FE, 0x36A9, 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, + 0x9846, 0x9848, 0x36B5, 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, + 0x984F, 0x984F, 0x1F6F, 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, + 0x9872, 0x9872, 0x36DE, 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, + 0x9880, 0x9880, 0x36EA, 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, + 0x988B, 0x988B, 0x1F27, 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, + 0x98A0, 0x98A0, 0x247C, 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, + 0x98AB, 0x98B5, 0x3710, 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, + 0x98B8, 0x98B9, 0x371B, 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, + 0x98C7, 0x98C7, 0x203E, 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, + 0x98CC, 0x98CF, 0x372C, 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, + 0x98D3, 0x98D3, 0x2204, 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, + 0x98E4, 0x98E4, 0x2140, 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, + 0x98EF, 0x98EF, 0x2474, 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, + 0x98F3, 0x98FE, 0x374C, 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, + 0x9944, 0x9944, 0x375B, 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, + 0x9966, 0x9966, 0x2472, 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, + 0x996F, 0x9974, 0x3783, 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, + 0x997A, 0x997A, 0x1F8B, 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, + 0x9980, 0x9984, 0x3790, 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, + 0x9989, 0x9989, 0x2482, 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, + 0x998F, 0x9990, 0x379C, 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, + 0x9999, 0x9999, 0x1F38, 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, + 0x99AA, 0x99AF, 0x37B4, 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, + 0x99B2, 0x99B2, 0x37BA, 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, + 0x99B5, 0x99B5, 0x2471, 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, + 0x99BE, 0x99BE, 0x2470, 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, + 0x99C1, 0x99C1, 0x37C3, 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, + 0x99C9, 0x99C9, 0x246F, 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, + 0x99CF, 0x99D0, 0x37CE, 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, + 0x99DA, 0x99DA, 0x1FF5, 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, + 0x99E1, 0x99E4, 0x37DD, 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, + 0x99E8, 0x99E8, 0x2479, 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, + 0x99ED, 0x99F3, 0x37E6, 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, + 0x9A40, 0x9A49, 0x37F7, 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, + 0x9A57, 0x9A57, 0x20AD, 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, + 0x9A66, 0x9A66, 0x381A, 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, + 0x9A71, 0x9A71, 0x2159, 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, + 0x9A77, 0x9A77, 0x1F33, 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, + 0x9A88, 0x9A88, 0x1E5C, 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, + 0x9A8D, 0x9A90, 0x383A, 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, + 0x9A97, 0x9A97, 0x248A, 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, + 0x9A9B, 0x9A9B, 0x248B, 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, + 0x9A9F, 0x9AA1, 0x3847, 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, + 0x9AA4, 0x9AA9, 0x384A, 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, + 0x9AD0, 0x9AD0, 0x24C0, 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, + 0x9AD7, 0x9AD9, 0x387A, 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, + 0x9AE2, 0x9AE2, 0x20CA, 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, + 0x9AE5, 0x9AE5, 0x24C2, 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, + 0x9B80, 0x9BD0, 0x38DD, 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, + 0x9BDC, 0x9BDC, 0x23DB, 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, + 0x9C53, 0x9C53, 0x205E, 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, + 0x9C5A, 0x9C5A, 0x23E2, 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, + 0x9C5D, 0x9C74, 0x3973, 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, + 0x9C79, 0x9C79, 0x1E66, 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, + 0x9C86, 0x9C86, 0x1F63, 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, + 0x9C9E, 0x9CAA, 0x39AF, 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, + 0x9CCA, 0x9CCA, 0x22B5, 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, + 0x9CD0, 0x9CE5, 0x39DE, 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, + 0x9CE8, 0x9CEB, 0x39F4, 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, + 0x9CEE, 0x9CEE, 0x2341, 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, + 0x9CFC, 0x9CFD, 0x3A05, 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, + 0x9D42, 0x9D42, 0x2124, 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, + 0x9D47, 0x9D47, 0x23E0, 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, + 0x9D4E, 0x9D4E, 0x3A11, 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, + 0x9D61, 0x9D61, 0x20B1, 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, + 0x9D69, 0x9D69, 0x201C, 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, + 0x9D6F, 0x9D70, 0x3A2D, 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, + 0x9D75, 0x9D75, 0x1F9B, 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, + 0x9D7C, 0x9D7C, 0x3A37, 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, + 0x9D80, 0x9D89, 0x3A39, 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, + 0x9D8D, 0x9D8D, 0x1FB4, 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, + 0x9D92, 0x9D98, 0x3A48, 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, + 0x9DA1, 0x9DA1, 0x23E1, 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, + 0x9DA7, 0x9DA7, 0x23EA, 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, + 0x9DAD, 0x9DAD, 0x210E, 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, + 0x9DB3, 0x9DB3, 0x2004, 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, + 0x9DBF, 0x9DC5, 0x3A6C, 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, + 0x9DC9, 0x9DC9, 0x2264, 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, + 0x9DCE, 0x9DD1, 0x3A78, 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, + 0x9DD5, 0x9DD5, 0x1EC4, 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, + 0x9DE2, 0x9DE2, 0x20A9, 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, + 0x9DF2, 0x9DF3, 0x3A97, 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, + 0x9DF7, 0x9DF7, 0x268B, 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, + 0x9DFB, 0x9DFC, 0x3A9D, 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, + 0x9E40, 0x9E44, 0x3AA0, 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, + 0x9E48, 0x9E48, 0x2191, 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, + 0x9E52, 0x9E52, 0x1F9C, 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, + 0x9E55, 0x9E55, 0x3AB0, 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, + 0x9E5D, 0x9E5D, 0x23E9, 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, + 0x9E61, 0x9E61, 0x21D5, 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, + 0x9E64, 0x9E66, 0x3ABA, 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, + 0x9E6C, 0x9E6C, 0x1E4F, 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, + 0x9E70, 0x9E71, 0x3AC3, 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, + 0x9E74, 0x9E74, 0x23EC, 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, + 0x9E7B, 0x9E7B, 0x23D8, 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, + 0x9E80, 0x9E84, 0x3ACD, 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, + 0x9E87, 0x9E87, 0x23ED, 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, + 0x9E92, 0x9E95, 0x3ADC, 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, + 0x9E98, 0x9EA1, 0x3AE0, 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, + 0x9EA6, 0x9EA6, 0x200B, 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, + 0x9EAA, 0x9EAD, 0x3AEF, 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, + 0x9EB3, 0x9EB3, 0x2189, 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, + 0x9EB7, 0x9EB7, 0x23E7, 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, + 0x9EF6, 0x9EFE, 0x3B36, 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, + 0x9F4F, 0x9F6E, 0x3B4D, 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, + 0x9F80, 0x9F91, 0x3B7C, 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, + 0x9F98, 0x9F98, 0x24D6, 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, + 0x9FA7, 0x9FA8, 0x3BA0, 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, + 0x9FAC, 0x9FAC, 0x24D5, 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, + 0x9FCA, 0x9FCC, 0x3BC0, 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, + 0x9FE1, 0x9FE1, 0x20FC, 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, + 0x9FEC, 0x9FED, 0x3BDF, 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, + 0x9FF4, 0x9FF4, 0x1EBA, 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, + 0x9FFE, 0x9FFE, 0x3BEE, 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, + 0xA044, 0xA045, 0x3BF2, 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, + 0xA049, 0xA049, 0x2227, 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, + 0xA04F, 0xA053, 0x3BFA, 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, + 0xA05A, 0xA05A, 0x1F5D, 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, + 0xA062, 0xA062, 0x3C0A, 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, + 0xA071, 0xA071, 0x2149, 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, + 0xA075, 0xA07E, 0x3C1A, 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, + 0xA091, 0xA091, 0x2190, 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, + 0xA095, 0xA095, 0x3C36, 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, + 0xA0A9, 0xA0A9, 0x24C3, 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, + 0xA0C0, 0xA0CD, 0x3C5E, 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, + 0xA0D9, 0xA0D9, 0x1ED1, 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, + 0xA0DF, 0xA0ED, 0x3C7A, 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, + 0xA1A1, 0xA1FE, 0x0060, 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, + 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, + 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, + 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, + 0xA840, 0xA87E, 0x26B3, 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C, + 0xA8C5, 0xA8EA, 0x02BC, 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720, + 0xA95C, 0xA95C, 0x2722, 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742, + 0xA996, 0xA996, 0x1E17, 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99, + 0xAA4D, 0xAA4D, 0x21B6, 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6, + 0xAA71, 0xAA71, 0x2235, 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397, + 0xAA74, 0xAA76, 0x3CC9, 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC, + 0xAA7A, 0xAA7A, 0x223F, 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE, + 0xAA80, 0xAA99, 0x3CD1, 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB, + 0xAA9C, 0xAA9C, 0x2396, 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC, + 0xAA9F, 0xAA9F, 0x20A2, 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E, + 0xAB40, 0xAB40, 0x1F64, 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B, + 0xAB44, 0xAB44, 0x3CF0, 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139, + 0xAB47, 0xAB47, 0x3CF1, 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1, + 0xAB4A, 0xAB4A, 0x239A, 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399, + 0xAB4E, 0xAB7E, 0x3CF4, 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C, + 0xAC40, 0xAC45, 0x3D46, 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C, + 0xAC71, 0xAC71, 0x2460, 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C, + 0xAC7D, 0xAC7E, 0x3D80, 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D, + 0xAC8E, 0xAC92, 0x3D8F, 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A, + 0xAC95, 0xACA0, 0x3D94, 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461, + 0xAD4A, 0xAD5D, 0x3DA9, 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD, + 0xAD61, 0xAD61, 0x2462, 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54, + 0xAD69, 0xAD73, 0x3DC5, 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0, + 0xAD80, 0xAD81, 0x3DDA, 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC, + 0xAD87, 0xAD87, 0x245D, 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463, + 0xAD8C, 0xAD90, 0x3DE3, 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8, + 0xAE40, 0xAE53, 0x3DF7, 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B, + 0xAE62, 0xAE62, 0x1E70, 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F, + 0xAE81, 0xAE84, 0x3E34, 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38, + 0xAE8B, 0xAE8B, 0x1F4E, 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1, + 0xAE95, 0xAE9F, 0x3E45, 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50, + 0xAF64, 0xAF64, 0x1FC6, 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE, + 0xAF7C, 0xAF7E, 0x3E8A, 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01, + 0xAF83, 0xAF83, 0x2200, 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2, + 0xAF8F, 0xAF8F, 0x1E97, 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB, + 0xAF92, 0xAF9B, 0x3E9A, 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4, + 0xAF9F, 0xAF9F, 0x2028, 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7, + 0xB041, 0xB042, 0x25AF, 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1, + 0xB045, 0xB04E, 0x3EA9, 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3, + 0xB054, 0xB054, 0x1E4E, 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202, + 0xB058, 0xB058, 0x25AB, 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9, + 0xB05B, 0xB05B, 0x25AD, 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6, + 0xB05E, 0xB05E, 0x3EBB, 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4, + 0xB062, 0xB062, 0x222F, 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7, + 0xB065, 0xB06B, 0x3EBC, 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3, + 0xB07D, 0xB07D, 0x1E25, 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4, + 0xB097, 0xB097, 0x25C0, 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A, + 0xB09A, 0xB0A0, 0x3EEC, 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3, + 0xB14B, 0xB14B, 0x226E, 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD, + 0xB14E, 0xB14E, 0x3EFF, 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2, + 0xB151, 0xB151, 0x3F00, 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01, + 0xB180, 0xB196, 0x3F2D, 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44, + 0xB1A1, 0xB1FE, 0x040A, 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF, + 0xB242, 0xB266, 0x3F4E, 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73, + 0xB26D, 0xB26D, 0x2074, 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687, + 0xB275, 0xB27E, 0x3F7E, 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88, + 0xB289, 0xB289, 0x268D, 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0, + 0xB29B, 0xB2A0, 0x3FA0, 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6, + 0xB343, 0xB343, 0x1FAB, 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8, + 0xB371, 0xB37E, 0x3FD5, 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9, + 0xB389, 0xB38B, 0x3FEB, 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE, + 0xB38E, 0xB38E, 0x21FA, 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6, + 0xB440, 0xB453, 0x4001, 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015, + 0xB458, 0xB458, 0x24E4, 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6, + 0xB45F, 0xB45F, 0x20F7, 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B, + 0xB462, 0xB474, 0x401E, 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031, + 0xB47E, 0xB47E, 0x24EC, 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB, + 0xB484, 0xB488, 0x403C, 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041, + 0xB493, 0xB493, 0x24EA, 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524, + 0xB540, 0xB540, 0x4057, 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058, + 0xB54B, 0xB54B, 0x1E27, 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6, + 0xB557, 0xB559, 0x406B, 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012, + 0xB55C, 0xB55C, 0x1EEC, 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8, + 0xB562, 0xB57E, 0x4072, 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66, + 0xB59D, 0xB59D, 0x24DC, 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582, + 0xB640, 0xB651, 0x40AE, 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0, + 0xB655, 0xB655, 0x24DD, 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E, + 0xB65A, 0xB65A, 0x40C5, 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8, + 0xB65D, 0xB67E, 0x40C6, 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0, + 0xB740, 0xB74D, 0x4109, 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117, + 0xB751, 0xB751, 0x1E80, 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677, + 0xB75A, 0xB763, 0x4120, 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69, + 0xB766, 0xB766, 0x222B, 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F, + 0xB778, 0xB778, 0x1F5B, 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B, + 0xB781, 0xB781, 0x4140, 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141, + 0xB7A1, 0xB7FE, 0x063E, 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0, + 0xB844, 0xB844, 0x2186, 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED, + 0xB847, 0xB84C, 0x4163, 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169, + 0xB851, 0xB851, 0x1FEA, 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4, + 0xB85B, 0xB85B, 0x20E1, 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8, + 0xB85E, 0xB85E, 0x2260, 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2, + 0xB861, 0xB876, 0x4176, 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C, + 0xB880, 0xB881, 0x4193, 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195, + 0xB8A1, 0xB8FE, 0x069C, 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41, + 0xB951, 0xB960, 0x41C3, 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3, + 0xB97B, 0xB97B, 0x1F86, 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF, + 0xB99D, 0xB99D, 0x1FB3, 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF, + 0xB9A1, 0xB9FE, 0x06FA, 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4, + 0xBA43, 0xBA43, 0x4210, 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211, + 0xBA56, 0xBA56, 0x25E3, 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111, + 0xBA5A, 0xBA5F, 0x4224, 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A, + 0xBA6A, 0xBA6A, 0x25E7, 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041, + 0xBA75, 0xBA7E, 0x423C, 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA, + 0xBA85, 0xBA85, 0x424A, 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B, + 0xBA88, 0xBA88, 0x25EC, 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB, + 0xBA8E, 0xBA9D, 0x4250, 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D, + 0xBAA0, 0xBAA0, 0x4260, 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7, + 0xBB41, 0xBB48, 0x4261, 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269, + 0xBB58, 0xBB58, 0x25E9, 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE, + 0xBB5C, 0xBB5C, 0x203A, 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693, + 0xBB61, 0xBB64, 0x427C, 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED, + 0xBB67, 0xBB67, 0x4280, 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281, + 0xBB6A, 0xBB6A, 0x2065, 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3, + 0xBB6F, 0xBB7E, 0x4285, 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6, + 0xBC40, 0xBC51, 0x42B6, 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC, + 0xBC54, 0xBC59, 0x42C8, 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE, + 0xBC61, 0xBC61, 0x269B, 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3, + 0xBC64, 0xBC64, 0x42D5, 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6, + 0xBC67, 0xBC67, 0x25F4, 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B, + 0xBC6A, 0xBC6C, 0x42D8, 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB, + 0xBC6F, 0xBC6F, 0x1F7B, 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D, + 0xBC72, 0xBC72, 0x42DD, 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48, + 0xBC75, 0xBC75, 0x241C, 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF, + 0xBC79, 0xBC79, 0x219A, 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091, + 0xBC7C, 0xBC7D, 0x42DF, 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1, + 0xBC82, 0xBC82, 0x2423, 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422, + 0xBC85, 0xBC85, 0x42E3, 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4, + 0xBC88, 0xBC88, 0x228D, 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8, + 0xBC8B, 0xBC8B, 0x2421, 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3, + 0xBC90, 0xBC99, 0x42E8, 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426, + 0xBC9C, 0xBC9C, 0x2425, 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2, + 0xBCA1, 0xBCFE, 0x0814, 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A, + 0xBD43, 0xBD43, 0x2424, 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428, + 0xBD46, 0xBD47, 0x42F8, 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429, + 0xBD4A, 0xBD4A, 0x42FA, 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB, + 0xBD4D, 0xBD4D, 0x22BE, 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31, + 0xBD50, 0xBD56, 0x42FD, 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304, + 0xBD59, 0xBD59, 0x1FB5, 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B, + 0xBD67, 0xBD67, 0x1FAF, 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068, + 0xBD6B, 0xBD6B, 0x21E4, 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21, + 0xBD70, 0xBD70, 0x4316, 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317, + 0xBD79, 0xBD79, 0x217C, 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D, + 0xBD7C, 0xBD7D, 0x431E, 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320, + 0xBD81, 0xBD81, 0x1FD1, 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33, + 0xBD8A, 0xBD8A, 0x4328, 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329, + 0xBD8E, 0xBD8E, 0x242E, 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430, + 0xBD91, 0xBD91, 0x21DB, 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158, + 0xBD98, 0xBD9A, 0x4331, 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334, + 0xBDA1, 0xBDFE, 0x0872, 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9, + 0xBE44, 0xBE44, 0x433C, 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D, + 0xBE49, 0xBE49, 0x1E8E, 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340, + 0xBE51, 0xBE51, 0x21C5, 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192, + 0xBE54, 0xBE54, 0x4346, 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19, + 0xBE57, 0xBE57, 0x218C, 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3, + 0xBE5A, 0xBE5C, 0x4347, 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438, + 0xBE5F, 0xBE5F, 0x2432, 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A, + 0xBE62, 0xBE62, 0x1E9C, 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085, + 0xBE65, 0xBE68, 0x434B, 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F, + 0xBE6C, 0xBE6C, 0x243B, 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7, + 0xBE70, 0xBE70, 0x2433, 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054, + 0xBE77, 0xBE77, 0x21DE, 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434, + 0xBE7A, 0xBE7B, 0x4359, 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89, + 0xBE7E, 0xBE7E, 0x243C, 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E, + 0xBE84, 0xBE84, 0x1ED8, 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF, + 0xBE87, 0xBE87, 0x2445, 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249, + 0xBE8A, 0xBE8B, 0x4360, 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362, + 0xBE8E, 0xBE8E, 0x1E47, 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363, + 0xBE92, 0xBE92, 0x2086, 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196, + 0xBE96, 0xBE96, 0x4367, 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F, + 0xBE99, 0xBE99, 0x4368, 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369, + 0xBE9C, 0xBE9C, 0x2442, 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E, + 0xBEA0, 0xBEA0, 0x436C, 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6, + 0xBF41, 0xBF4C, 0x436D, 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446, + 0xBF4F, 0xBF4F, 0x244B, 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379, + 0xBF55, 0xBF55, 0x2427, 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D, + 0xBF60, 0xBF60, 0x1F0F, 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447, + 0xBF63, 0xBF63, 0x2449, 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387, + 0xBF68, 0xBF68, 0x21C2, 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E, + 0xBF6D, 0xBF6F, 0x438D, 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390, + 0xBF72, 0xBF72, 0x244A, 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391, + 0xBF76, 0xBF76, 0x22BB, 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393, + 0xBF79, 0xBF79, 0x2694, 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6, + 0xBF7C, 0xBF7C, 0x2051, 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E, + 0xBF80, 0xBF81, 0x4395, 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D, + 0xBF84, 0xBF88, 0x4397, 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451, + 0xBF8B, 0xBF94, 0x439C, 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6, + 0xBF97, 0xBF97, 0x2289, 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7, + 0xBF9D, 0xBF9D, 0x2454, 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E, + 0xC040, 0xC040, 0x20FB, 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440, + 0xC045, 0xC04A, 0x43B1, 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61, + 0xC04D, 0xC04D, 0x269D, 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A, + 0xC050, 0xC050, 0x2456, 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458, + 0xC053, 0xC054, 0x43B8, 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA, + 0xC05B, 0xC05B, 0x221A, 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A, + 0xC05F, 0xC05F, 0x244D, 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1, + 0xC069, 0xC069, 0x2453, 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420, + 0xC06C, 0xC06C, 0x43CA, 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685, + 0xC06F, 0xC06F, 0x43CB, 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC, + 0xC074, 0xC074, 0x2224, 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF, + 0xC077, 0xC077, 0x21BA, 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A, + 0xC07A, 0xC07B, 0x43D1, 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3, + 0xC080, 0xC09A, 0x43D5, 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0, + 0xC09D, 0xC09D, 0x269A, 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C, + 0xC140, 0xC14F, 0x43F4, 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404, + 0xC154, 0xC154, 0x1E2C, 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062, + 0xC160, 0xC160, 0x24F1, 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2, + 0xC163, 0xC174, 0x4412, 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424, + 0xC178, 0xC178, 0x2215, 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C, + 0xC195, 0xC195, 0x21AE, 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA, + 0xC240, 0xC24D, 0x444C, 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A, + 0xC265, 0xC265, 0x25C2, 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1, + 0xC268, 0xC27C, 0x4471, 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486, + 0xC280, 0xC283, 0x4487, 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B, + 0xC293, 0xC293, 0x2017, 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125, + 0xC296, 0xC296, 0x214D, 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4, + 0xC299, 0xC299, 0x209D, 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A, + 0xC29C, 0xC29C, 0x25C3, 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179, + 0xC2A1, 0xC2FE, 0x0A48, 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E, + 0xC343, 0xC343, 0x2155, 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2, + 0xC37C, 0xC37E, 0x44D7, 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7, + 0xC385, 0xC39A, 0x44DE, 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4, + 0xC3A1, 0xC3FE, 0x0AA6, 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123, + 0xC44A, 0xC44B, 0x4502, 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504, + 0xC454, 0xC454, 0x24C9, 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094, + 0xC459, 0xC45A, 0x450E, 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510, + 0xC463, 0xC463, 0x1E77, 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06, + 0xC478, 0xC479, 0x452A, 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C, + 0xC480, 0xC480, 0x4530, 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531, + 0xC491, 0xC491, 0x1EAD, 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8, + 0xC494, 0xC497, 0x4540, 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544, + 0xC49A, 0xC49A, 0x20C5, 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA, + 0xC49D, 0xC4A0, 0x4546, 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A, + 0xC544, 0xC544, 0x1FF0, 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6, + 0xC547, 0xC54A, 0x454F, 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE, + 0xC54D, 0xC551, 0x4553, 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558, + 0xC55F, 0xC55F, 0x2161, 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B, + 0xC564, 0xC564, 0x21D9, 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9, + 0xC567, 0xC57E, 0x4567, 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61, + 0xC594, 0xC59B, 0x4592, 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A, + 0xC59E, 0xC59E, 0x1F98, 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62, + 0xC640, 0xC640, 0x459D, 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E, + 0xC644, 0xC644, 0x1F88, 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8, + 0xC648, 0xC662, 0x45A2, 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD, + 0xC672, 0xC672, 0x2336, 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7, + 0xC6A1, 0xC6FE, 0x0BC0, 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB, + 0xC767, 0xC76E, 0x461E, 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626, + 0xC776, 0xC776, 0x1F7D, 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333, + 0xC77C, 0xC77E, 0x4630, 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E, + 0xC840, 0xC840, 0x4654, 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655, + 0xC84F, 0xC84F, 0x2334, 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1, + 0xC853, 0xC865, 0x4664, 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677, + 0xC86E, 0xC86E, 0x2349, 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B, + 0xC880, 0xC886, 0x468D, 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694, + 0xC892, 0xC892, 0x2347, 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193, + 0xC895, 0xC898, 0x469F, 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3, + 0xC89D, 0xC89D, 0x1F62, 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C, + 0xC940, 0xC94E, 0x46A9, 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348, + 0xC951, 0xC96D, 0x46B8, 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5, + 0xC970, 0xC970, 0x2345, 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12, + 0xC978, 0xC97E, 0x46DC, 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018, + 0xC990, 0xC990, 0x2335, 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C, + 0xC99D, 0xC9A0, 0x46FD, 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701, + 0xCA4E, 0xCA4E, 0x266F, 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351, + 0xCA57, 0xCA58, 0x4716, 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718, + 0xCA5C, 0xCA5C, 0x2338, 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B, + 0xCA62, 0xCA6D, 0x471E, 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A, + 0xCA72, 0xCA72, 0x234F, 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D, + 0xCA78, 0xCA7A, 0x4731, 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331, + 0xCA7D, 0xCA7D, 0x4734, 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735, + 0xCA81, 0xCA81, 0x233B, 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350, + 0xCA8A, 0xCA8D, 0x473D, 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6, + 0xCA90, 0xCA91, 0x4741, 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743, + 0xCA9A, 0xCA9A, 0x2355, 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38, + 0xCB40, 0xCB42, 0x4750, 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753, + 0xCB45, 0xCB45, 0x1F74, 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330, + 0xCB48, 0xCB4A, 0x4755, 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758, + 0xCB4E, 0xCB4E, 0x20DA, 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A, + 0xCB58, 0xCB5C, 0x4762, 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767, + 0xCB5F, 0xCB5F, 0x2107, 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F, + 0xCB6B, 0xCB7A, 0x4772, 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343, + 0xCB7D, 0xCB7E, 0x4782, 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212, + 0xCB88, 0xCB8D, 0x478B, 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791, + 0xCB92, 0xCB92, 0x2359, 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254, + 0xCB9D, 0xCB9D, 0x479D, 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E, + 0xCBA1, 0xCBFE, 0x0D96, 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357, + 0xCC42, 0xCC48, 0x47A0, 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042, + 0xCC4B, 0xCC4B, 0x2153, 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB, + 0xCC50, 0xCC5B, 0x47AA, 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6, + 0xCC60, 0xCC60, 0x2356, 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337, + 0xCC65, 0xCC6C, 0x47BC, 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4, + 0xCC79, 0xCC79, 0x2353, 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061, + 0xCC7E, 0xCC7E, 0x47D2, 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95, + 0xCC8F, 0xCC93, 0x47E1, 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6, + 0xCC96, 0xCC96, 0x1F42, 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8, + 0xCC9E, 0xCCA0, 0x47ED, 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0, + 0xCD80, 0xCD8F, 0x482F, 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F, + 0xCD98, 0xCD98, 0x25D7, 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52, + 0xCE40, 0xCE66, 0x484E, 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875, + 0xCE72, 0xCE72, 0x21B2, 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B, + 0xCE81, 0xCE81, 0x219E, 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC, + 0xCE88, 0xCE9A, 0x4891, 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4, + 0xCE9E, 0xCE9E, 0x2226, 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0, + 0xCF40, 0xCF4D, 0x48A8, 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6, + 0xCF55, 0xCF55, 0x227B, 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE, + 0xCF59, 0xCF5B, 0x48BE, 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1, + 0xCF6C, 0xCF6C, 0x25D5, 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B, + 0xCF74, 0xCF74, 0x48D6, 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7, + 0xCF78, 0xCF78, 0x1E89, 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9, + 0xCF7D, 0xCF7E, 0x48DC, 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211, + 0xCF82, 0xCF88, 0x48DF, 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6, + 0xCF8B, 0xCF92, 0x48E6, 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF, + 0xCF95, 0xCF9D, 0x48EE, 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7, + 0xCFA0, 0xCFA0, 0x25D8, 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8, + 0xD04D, 0xD04D, 0x1F29, 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B, + 0xD052, 0xD054, 0x4908, 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B, + 0xD05C, 0xD05C, 0x2297, 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690, + 0xD061, 0xD066, 0x4914, 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A, + 0xD06C, 0xD06C, 0x2198, 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88, + 0xD06F, 0xD07C, 0x491F, 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D, + 0xD080, 0xD0A0, 0x492E, 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F, + 0xD155, 0xD155, 0x25F1, 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C, + 0xD15A, 0xD160, 0x4967, 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC, + 0xD163, 0xD174, 0x496E, 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980, + 0xD17D, 0xD17D, 0x2676, 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988, + 0xD19D, 0xD19D, 0x1FE1, 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5, + 0xD1A1, 0xD1FE, 0x0FCA, 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7, + 0xD243, 0xD243, 0x22DD, 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD, + 0xD24E, 0xD25B, 0x49B2, 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0, + 0xD263, 0xD263, 0x25BC, 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6, + 0xD268, 0xD268, 0x25BF, 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187, + 0xD26E, 0xD26E, 0x49CD, 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE, + 0xD272, 0xD272, 0x1E7F, 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD, + 0xD276, 0xD27E, 0x49D2, 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96, + 0xD28B, 0xD28D, 0x49E5, 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8, + 0xD292, 0xD292, 0x2084, 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136, + 0xD296, 0xD296, 0x49ED, 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE, + 0xD2A0, 0xD2A0, 0x24BA, 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6, + 0xD344, 0xD344, 0x24BC, 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4, + 0xD349, 0xD349, 0x49FD, 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE, + 0xD34D, 0xD34D, 0x24BD, 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE, + 0xD351, 0xD354, 0x4A02, 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06, + 0xD358, 0xD358, 0x1FD2, 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD, + 0xD35C, 0xD35C, 0x4A0A, 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D, + 0xD35F, 0xD377, 0x4A0B, 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24, + 0xD37A, 0xD37A, 0x260A, 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94, + 0xD37D, 0xD37E, 0x4A26, 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF, + 0xD386, 0xD386, 0x1ECB, 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D, + 0xD38B, 0xD38B, 0x1F77, 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB, + 0xD38E, 0xD38E, 0x4A31, 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32, + 0xD391, 0xD391, 0x216F, 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0, + 0xD394, 0xD395, 0x4A34, 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36, + 0xD398, 0xD398, 0x22E2, 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37, + 0xD39B, 0xD39B, 0x1F78, 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2, + 0xD39F, 0xD39F, 0x4A3A, 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086, + 0xD440, 0xD440, 0x4A3B, 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C, + 0xD445, 0xD445, 0x1FD3, 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5, + 0xD448, 0xD44B, 0x4A40, 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44, + 0xD44F, 0xD44F, 0x211F, 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD, + 0xD454, 0xD455, 0x4A49, 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B, + 0xD458, 0xD458, 0x22E7, 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282, + 0xD45D, 0xD461, 0x4A4F, 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54, + 0xD467, 0xD467, 0x22E8, 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4, + 0xD46F, 0xD46F, 0x4A5E, 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F, + 0xD472, 0xD472, 0x22EB, 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9, + 0xD475, 0xD475, 0x20BD, 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA, + 0xD479, 0xD47A, 0x4A63, 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65, + 0xD47E, 0xD47E, 0x1E9E, 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6, + 0xD483, 0xD483, 0x21E7, 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69, + 0xD487, 0xD487, 0x2137, 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C, + 0xD48B, 0xD48B, 0x4A6D, 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2, + 0xD48E, 0xD48E, 0x1F37, 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E, + 0xD491, 0xD491, 0x22EF, 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10, + 0xD494, 0xD494, 0x21C8, 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1, + 0xD497, 0xD49B, 0x4A70, 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75, + 0xD49F, 0xD49F, 0x22EE, 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4, + 0xD540, 0xD542, 0x4A78, 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E, + 0xD545, 0xD545, 0x22EC, 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B, + 0xD54A, 0xD54A, 0x20FE, 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9, + 0xD550, 0xD550, 0x4A81, 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82, + 0xD554, 0xD554, 0x2236, 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7, + 0xD557, 0xD559, 0x4A85, 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88, + 0xD55C, 0xD55C, 0x1E82, 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89, + 0xD55F, 0xD55F, 0x21A4, 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8, + 0xD562, 0xD562, 0x2151, 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60, + 0xD565, 0xD567, 0x4A8B, 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E, + 0xD56C, 0xD56C, 0x2145, 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC, + 0xD56F, 0xD571, 0x4A92, 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95, + 0xD575, 0xD575, 0x1EF5, 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218, + 0xD579, 0xD57A, 0x4A99, 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B, + 0xD57E, 0xD57E, 0x2300, 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4, + 0xD582, 0xD583, 0x4A9E, 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0, + 0xD586, 0xD586, 0x22FD, 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA, + 0xD589, 0xD589, 0x4AA2, 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3, + 0xD58C, 0xD58C, 0x22FB, 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC, + 0xD58F, 0xD58F, 0x2027, 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060, + 0xD594, 0xD594, 0x22FF, 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE, + 0xD599, 0xD599, 0x1EC7, 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C, + 0xD59C, 0xD59E, 0x4AAC, 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF, + 0xD5A1, 0xD5FE, 0x1142, 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0, + 0xD642, 0xD642, 0x230A, 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1, + 0xD647, 0xD647, 0x2303, 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307, + 0xD64A, 0xD64A, 0x230B, 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F, + 0xD64E, 0xD64E, 0x4AB7, 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8, + 0xD652, 0xD652, 0x2302, 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D, + 0xD655, 0xD655, 0x4ABA, 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB, + 0xD658, 0xD658, 0x2308, 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC, + 0xD65B, 0xD65B, 0x4ABD, 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305, + 0xD65E, 0xD65E, 0x2197, 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171, + 0xD661, 0xD661, 0x2298, 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57, + 0xD666, 0xD668, 0x4AC2, 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5, + 0xD66B, 0xD66B, 0x2311, 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304, + 0xD670, 0xD670, 0x4AC9, 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35, + 0xD673, 0xD673, 0x4ACA, 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310, + 0xD676, 0xD676, 0x1FA3, 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6, + 0xD679, 0xD67B, 0x4ACC, 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF, + 0xD680, 0xD682, 0x4AD1, 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4, + 0xD686, 0xD686, 0x2312, 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313, + 0xD689, 0xD68D, 0x4AD6, 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB, + 0xD694, 0xD694, 0x1FBA, 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078, + 0xD69A, 0xD6A0, 0x4AE4, 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB, + 0xD743, 0xD743, 0x2288, 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316, + 0xD749, 0xD749, 0x1F6B, 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314, + 0xD751, 0xD751, 0x4AF8, 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315, + 0xD754, 0xD754, 0x2168, 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4, + 0xD757, 0xD763, 0x4AFA, 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07, + 0xD767, 0xD767, 0x2219, 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09, + 0xD76C, 0xD76C, 0x20D5, 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A, + 0xD770, 0xD774, 0x4B0E, 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13, + 0xD778, 0xD778, 0x1ED3, 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B, + 0xD783, 0xD783, 0x1E49, 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B, + 0xD788, 0xD78A, 0x4B21, 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8, + 0xD78D, 0xD78D, 0x4B24, 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319, + 0xD790, 0xD794, 0x4B25, 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A, + 0xD797, 0xD797, 0x2317, 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE, + 0xD840, 0xD84C, 0x4B34, 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41, + 0xD853, 0xD853, 0x1EFD, 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71, + 0xD890, 0xD890, 0x1E3B, 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81, + 0xD893, 0xD893, 0x1F0C, 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24, + 0xD896, 0xD899, 0x4B82, 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65, + 0xD89C, 0xD89C, 0x1EF0, 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30, + 0xD89F, 0xD89F, 0x2261, 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257, + 0xD940, 0xD940, 0x4B87, 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB, + 0xD943, 0xD943, 0x4B88, 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8, + 0xD946, 0xD946, 0x1F39, 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48, + 0xD949, 0xD949, 0x2070, 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A, + 0xD94C, 0xD94C, 0x24AC, 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176, + 0xD94F, 0xD94F, 0x24AD, 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B, + 0xD952, 0xD952, 0x1F45, 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B, + 0xD955, 0xD955, 0x202F, 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0, + 0xD958, 0xD958, 0x4B8C, 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F, + 0xD95B, 0xD95B, 0x4B8D, 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E, + 0xD963, 0xD963, 0x24B2, 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51, + 0xD966, 0xD966, 0x4B94, 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95, + 0xD96C, 0xD96C, 0x24B3, 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F, + 0xD96F, 0xD96F, 0x4B9A, 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B, + 0xD972, 0xD972, 0x20B4, 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB, + 0xD975, 0xD975, 0x2072, 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C, + 0xD978, 0xD978, 0x1F0A, 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D, + 0xD97C, 0xD97C, 0x2291, 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278, + 0xD980, 0xD980, 0x1ED4, 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3, + 0xD988, 0xD98C, 0x4BA5, 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7, + 0xD98F, 0xD98F, 0x1F28, 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7, + 0xD992, 0xD996, 0x4BAA, 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1, + 0xD999, 0xD99A, 0x4BAF, 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1, + 0xD99D, 0xD99D, 0x225B, 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2, + 0xD9A0, 0xD9A0, 0x2115, 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3, + 0xDA41, 0xDA41, 0x222A, 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4, + 0xDA48, 0xDA48, 0x213D, 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15, + 0xDA4E, 0xDA4E, 0x225C, 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14, + 0xDA74, 0xDA76, 0x4BE1, 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4, + 0xDA80, 0xDA84, 0x4BEB, 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0, + 0xDA8E, 0xDA8E, 0x25F8, 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313, + 0xDB40, 0xDB5F, 0x4C0A, 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A, + 0xDB78, 0xDB78, 0x2230, 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47, + 0xDB84, 0xDB84, 0x25FD, 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600, + 0xDB8C, 0xDB97, 0x4C51, 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D, + 0xDBA1, 0xDBFE, 0x1371, 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF, + 0xDC46, 0xDC4E, 0x4C6A, 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C, + 0xDC51, 0xDC51, 0x2602, 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D, + 0xDC54, 0xDC54, 0x4C74, 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE, + 0xDC57, 0xDC57, 0x2603, 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601, + 0xDC5E, 0xDC61, 0x4C7A, 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E, + 0xDC66, 0xDC66, 0x1EA3, 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81, + 0xDC6B, 0xDC6B, 0x2607, 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0, + 0xDC7D, 0xDC7E, 0x4C94, 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B, + 0xDC88, 0xDC88, 0x2267, 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6, + 0xDC8B, 0xDC8D, 0x4C9D, 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0, + 0xDC90, 0xDC90, 0x248C, 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D, + 0xDC98, 0xDC9A, 0x4CA7, 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA, + 0xDCA0, 0xDCA0, 0x2494, 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE, + 0xDD46, 0xDD46, 0x2493, 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E, + 0xDD4E, 0xDD52, 0x4CBA, 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491, + 0xDD55, 0xDD55, 0x2496, 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492, + 0xDD58, 0xDD58, 0x4CBF, 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0, + 0xDD5E, 0xDD5E, 0x1FB1, 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A, + 0xDD61, 0xDD61, 0x4CC5, 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6, + 0xDD64, 0xDD64, 0x2258, 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7, + 0xDD6D, 0xDD6D, 0x249B, 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09, + 0xDD70, 0xDD70, 0x20E6, 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026, + 0xDD77, 0xDD77, 0x249F, 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D, + 0xDD7B, 0xDD7E, 0x4CD4, 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B, + 0xDD82, 0xDD82, 0x249C, 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A, + 0xDD86, 0xDD86, 0x205B, 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70, + 0xDD8C, 0xDD8E, 0x4CDF, 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2, + 0xDD94, 0xDD94, 0x213B, 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07, + 0xDD98, 0xDD99, 0x4CE8, 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237, + 0xDD9C, 0xDD9D, 0x4CEA, 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC, + 0xDDA0, 0xDDA0, 0x21B3, 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245, + 0xDE41, 0xDE41, 0x24A1, 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8, + 0xDE45, 0xDE47, 0x4CEF, 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0, + 0xDE4A, 0xDE4E, 0x4CF2, 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7, + 0xDE5A, 0xDE5A, 0x1F46, 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380, + 0xDE5D, 0xDE5D, 0x2495, 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490, + 0xDE60, 0xDE6A, 0x4D03, 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E, + 0xDE6F, 0xDE6F, 0x1E9D, 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A, + 0xDE72, 0xDE72, 0x20AA, 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D, + 0xDE92, 0xDE92, 0x267B, 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2, + 0xDEA0, 0xDEA0, 0x4D3B, 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E, + 0xDF41, 0xDF41, 0x4D3C, 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D, + 0xDF4D, 0xDF4D, 0x1FBB, 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253, + 0xDF5D, 0xDF5D, 0x4D55, 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6, + 0xDF60, 0xDF60, 0x218E, 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC, + 0xDF65, 0xDF65, 0x4D59, 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A, + 0xDF68, 0xDF68, 0x224A, 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133, + 0xDF6E, 0xDF73, 0x4D5F, 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65, + 0xDF77, 0xDF77, 0x20CF, 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67, + 0xDF7A, 0xDF7A, 0x220F, 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029, + 0xDF7D, 0xDF7D, 0x4D69, 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55, + 0xDF81, 0xDF82, 0x4D6A, 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C, + 0xDF85, 0xDF85, 0x1E46, 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063, + 0xDF8A, 0xDF8A, 0x23F3, 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9, + 0xE040, 0xE04F, 0x4D86, 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96, + 0xE05D, 0xE05D, 0x2233, 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320, + 0xE06A, 0xE06B, 0x4DAD, 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF, + 0xE075, 0xE075, 0x22BC, 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C, + 0xE078, 0xE078, 0x4DB8, 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9, + 0xE080, 0xE086, 0x4DBE, 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5, + 0xE08D, 0xE08D, 0x2287, 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D, + 0xE090, 0xE090, 0x1EAB, 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D, + 0xE093, 0xE093, 0x4DCC, 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD, + 0xE097, 0xE097, 0x231B, 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547, + 0xE140, 0xE141, 0x4DD8, 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA, + 0xE164, 0xE164, 0x2255, 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F, + 0xE169, 0xE173, 0x4DFE, 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4, + 0xE176, 0xE17E, 0x4E09, 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B, + 0xE185, 0xE185, 0x21D8, 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA, + 0xE188, 0xE188, 0x4E17, 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18, + 0xE18C, 0xE18C, 0x2134, 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3, + 0xE191, 0xE191, 0x24F8, 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7, + 0xE194, 0xE194, 0x1EC8, 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C, + 0xE198, 0xE198, 0x2280, 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5, + 0xE19F, 0xE19F, 0x24FB, 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5, + 0xE240, 0xE240, 0x4E24, 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25, + 0xE243, 0xE243, 0x1EED, 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD, + 0xE250, 0xE250, 0x4E31, 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32, + 0xE253, 0xE253, 0x24FE, 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33, + 0xE25A, 0xE25A, 0x2508, 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38, + 0xE25E, 0xE25E, 0x2506, 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF, + 0xE263, 0xE263, 0x2090, 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD, + 0xE268, 0xE268, 0x1F25, 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503, + 0xE26B, 0xE26B, 0x2502, 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A, + 0xE26F, 0xE26F, 0x20A6, 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5, + 0xE279, 0xE27C, 0x4E4B, 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F, + 0xE280, 0xE280, 0x2507, 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505, + 0xE283, 0xE288, 0x4E50, 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56, + 0xE28B, 0xE28B, 0x2515, 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C, + 0xE28F, 0xE28F, 0x2031, 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B, + 0xE293, 0xE293, 0x250F, 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509, + 0xE296, 0xE297, 0x4E5B, 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234, + 0xE29A, 0xE29A, 0x2513, 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D, + 0xE2A0, 0xE2A0, 0x2501, 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61, + 0xE342, 0xE342, 0x2517, 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63, + 0xE347, 0xE347, 0x2518, 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56, + 0xE34C, 0xE34E, 0x4E69, 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C, + 0xE351, 0xE351, 0x20D3, 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A, + 0xE355, 0xE355, 0x20CE, 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510, + 0xE359, 0xE35B, 0x4E71, 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74, + 0xE360, 0xE360, 0x250A, 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511, + 0xE368, 0xE370, 0x4E7C, 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85, + 0xE373, 0xE373, 0x251E, 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86, + 0xE378, 0xE378, 0x252D, 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89, + 0xE37C, 0xE37C, 0x2532, 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B, + 0xE380, 0xE389, 0x4E8C, 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96, + 0xE38C, 0xE38C, 0x252C, 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528, + 0xE390, 0xE390, 0x4E99, 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A, + 0xE393, 0xE393, 0x252F, 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC, + 0xE396, 0xE398, 0x4E9C, 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F, + 0xE39C, 0xE39C, 0x2535, 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D, + 0xE39F, 0xE39F, 0x2526, 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661, + 0xE440, 0xE440, 0x2534, 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F, + 0xE443, 0xE443, 0x2531, 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3, + 0xE448, 0xE448, 0x2525, 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD, + 0xE44F, 0xE44F, 0x4EAB, 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC, + 0xE452, 0xE452, 0x2172, 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD, + 0xE458, 0xE458, 0x204F, 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543, + 0xE45B, 0xE45B, 0x4EB2, 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3, + 0xE45E, 0xE45E, 0x1E3C, 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529, + 0xE463, 0xE464, 0x4EB7, 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9, + 0xE468, 0xE468, 0x1EFF, 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F, + 0xE474, 0xE474, 0x4EC5, 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6, + 0xE479, 0xE479, 0x2523, 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A, + 0xE47C, 0xE47C, 0x2545, 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D, + 0xE480, 0xE480, 0x4ECA, 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB, + 0xE484, 0xE484, 0x2103, 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C, + 0xE487, 0xE487, 0x253B, 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD, + 0xE48D, 0xE48D, 0x2540, 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD, + 0xE490, 0xE492, 0x4ED2, 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5, + 0xE498, 0xE498, 0x254B, 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547, + 0xE49E, 0xE49F, 0x254F, 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF, + 0xE540, 0xE545, 0x4EDE, 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4, + 0xE548, 0xE548, 0x2546, 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C, + 0xE54C, 0xE54D, 0x4EE7, 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552, + 0xE550, 0xE550, 0x2530, 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9, + 0xE555, 0xE555, 0x2551, 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC, + 0xE558, 0xE558, 0x20D2, 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8, + 0xE55D, 0xE55D, 0x4EF0, 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1, + 0xE561, 0xE561, 0x21AB, 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D, + 0xE565, 0xE565, 0x1EA5, 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C, + 0xE569, 0xE569, 0x2080, 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D, + 0xE56D, 0xE56D, 0x4EF9, 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA, + 0xE575, 0xE575, 0x254A, 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00, + 0xE578, 0xE578, 0x254E, 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC, + 0xE57C, 0xE57C, 0x2554, 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05, + 0xE581, 0xE581, 0x1F3C, 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5, + 0xE584, 0xE589, 0x4F07, 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D, + 0xE58E, 0xE58E, 0x2268, 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6, + 0xE592, 0xE599, 0x4F12, 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553, + 0xE59C, 0xE59E, 0x4F1A, 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D, + 0xE5A1, 0xE5FE, 0x171D, 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E, + 0xE644, 0xE644, 0x2559, 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97, + 0xE64A, 0xE64A, 0x2555, 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D, + 0xE64F, 0xE651, 0x4F28, 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B, + 0xE656, 0xE656, 0x207C, 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A, + 0xE659, 0xE65A, 0x4F2F, 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31, + 0xE65E, 0xE65E, 0x1E34, 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E, + 0xE66A, 0xE66A, 0x4F3D, 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E, + 0xE675, 0xE675, 0x21A2, 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47, + 0xE679, 0xE679, 0x2563, 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49, + 0xE67C, 0xE67C, 0x252E, 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A, + 0xE680, 0xE680, 0x1F1B, 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283, + 0xE683, 0xE683, 0x4F4C, 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D, + 0xE687, 0xE687, 0x20A0, 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565, + 0xE68A, 0xE68B, 0x4F50, 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52, + 0xE693, 0xE693, 0x2562, 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C, + 0xE698, 0xE69A, 0x4F5B, 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020, + 0xE69D, 0xE69E, 0x4F5E, 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A, + 0xE6A1, 0xE6FE, 0x177B, 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E, + 0xE744, 0xE747, 0x4F63, 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C, + 0xE74A, 0xE74C, 0x4F67, 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B, + 0xE750, 0xE750, 0x1E6F, 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4, + 0xE753, 0xE753, 0x2567, 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B, + 0xE756, 0xE758, 0x4F6C, 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F, + 0xE766, 0xE766, 0x252B, 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571, + 0xE769, 0xE769, 0x4F7C, 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D, + 0xE774, 0xE774, 0x2522, 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533, + 0xE77D, 0xE77E, 0x4F8D, 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A, + 0xE783, 0xE783, 0x4F91, 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573, + 0xE786, 0xE786, 0x256F, 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293, + 0xE78B, 0xE78B, 0x2578, 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570, + 0xE790, 0xE791, 0x4F98, 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A, + 0xE798, 0xE799, 0x2541, 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F, + 0xE7A0, 0xE7A0, 0x201A, 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4, + 0xE843, 0xE843, 0x257A, 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7, + 0xE846, 0xE846, 0x2177, 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B, + 0xE84A, 0xE84A, 0x4FAA, 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB, + 0xE84F, 0xE84F, 0x257B, 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3, + 0xE855, 0xE859, 0x4FB2, 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7, + 0xE85C, 0xE85C, 0x2566, 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93, + 0xE863, 0xE863, 0x4FBD, 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE, + 0xE870, 0xE870, 0x2514, 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D, + 0xE874, 0xE874, 0x4FCB, 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC, + 0xE87C, 0xE87C, 0x2574, 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E, + 0xE881, 0xE881, 0x4FD4, 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5, + 0xE887, 0xE887, 0x209F, 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576, + 0xE88A, 0xE88B, 0x4FDA, 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF, + 0xE88E, 0xE88E, 0x261C, 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC, + 0xE8A1, 0xE8FE, 0x1837, 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75, + 0xE94D, 0xE953, 0x4FF9, 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000, + 0xE956, 0xE956, 0x23BF, 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001, + 0xE95A, 0xE95A, 0x23C0, 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45, + 0xE95E, 0xE95E, 0x5005, 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4, + 0xE961, 0xE961, 0x5006, 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104, + 0xE964, 0xE964, 0x5007, 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008, + 0xE967, 0xE967, 0x1F87, 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009, + 0xE96C, 0xE96C, 0x2269, 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43, + 0xE976, 0xE976, 0x5014, 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679, + 0xE979, 0xE979, 0x1EEB, 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35, + 0xE97D, 0xE97D, 0x208A, 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7, + 0xE981, 0xE981, 0x23C9, 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018, + 0xE987, 0xE987, 0x224F, 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB, + 0xE98C, 0xE98D, 0x501F, 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021, + 0xE990, 0xE990, 0x21F7, 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE, + 0xE993, 0xE993, 0x23CA, 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022, + 0xE998, 0xE998, 0x23D0, 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C, + 0xE99C, 0xE99C, 0x5027, 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028, + 0xE99F, 0xE99F, 0x1FEE, 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895, + 0xEA40, 0xEA40, 0x1FF8, 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3, + 0xEA45, 0xEA47, 0x502C, 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4, + 0xEA4A, 0xEA4A, 0x1E98, 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C, + 0xEA51, 0xEA51, 0x5034, 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035, + 0xEA55, 0xEA55, 0x1E71, 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037, + 0xEA59, 0xEA59, 0x23C5, 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A, + 0xEA81, 0xEA83, 0x505E, 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061, + 0xEA87, 0xEA87, 0x2284, 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C, + 0xEA8F, 0xEA8F, 0x5069, 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D, + 0xEA92, 0xEA95, 0x506A, 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E, + 0xEAA0, 0xEAA0, 0x1ED9, 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077, + 0xEB41, 0xEB41, 0x1FB2, 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252, + 0xEB46, 0xEB47, 0x507B, 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D, + 0xEB53, 0xEB53, 0x2157, 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF, + 0xEB56, 0xEB5A, 0x5088, 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D, + 0xEB5D, 0xEB5D, 0x203D, 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015, + 0xEB61, 0xEB61, 0x5090, 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091, + 0xEB6D, 0xEB6D, 0x2156, 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144, + 0xEB71, 0xEB71, 0x509D, 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257, + 0xEB74, 0xEB77, 0x509E, 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092, + 0xEB7A, 0xEB7E, 0x50A2, 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250, + 0xEB86, 0xEB89, 0x50AC, 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0, + 0xEBA1, 0xEBFE, 0x1951, 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8, + 0xEC47, 0xEC55, 0x50CC, 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB, + 0xEC5A, 0xEC5A, 0x260C, 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E, + 0xEC5D, 0xEC5F, 0x50DF, 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2, + 0xEC6E, 0xEC6E, 0x260B, 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3, + 0xEC77, 0xEC7E, 0x50F6, 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23, + 0xEC97, 0xECA0, 0x5114, 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E, + 0xED46, 0xED46, 0x2695, 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E, + 0xED59, 0xED5D, 0x5135, 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A, + 0xED61, 0xED61, 0x2692, 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F, + 0xED65, 0xED65, 0x513E, 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD, + 0xED68, 0xED6D, 0x513F, 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145, + 0xED74, 0xED74, 0x2465, 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467, + 0xED78, 0xED78, 0x514C, 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D, + 0xED80, 0xED90, 0x5152, 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163, + 0xED93, 0xED93, 0x2209, 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9, + 0xED96, 0xED96, 0x5164, 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146, + 0xED99, 0xED99, 0x25C5, 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165, + 0xED9C, 0xED9C, 0x245E, 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F, + 0xED9F, 0xED9F, 0x5167, 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D, + 0xEE40, 0xEE40, 0x25C7, 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A, + 0xEE43, 0xEE43, 0x1E2F, 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168, + 0xEE48, 0xEE48, 0x20BF, 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B, + 0xEE4D, 0xEE4D, 0x25C9, 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8, + 0xEE53, 0xEE54, 0x5172, 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174, + 0xEE57, 0xEE57, 0x25CB, 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D, + 0xEE5F, 0xEE60, 0x517B, 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D, + 0xEE68, 0xEE68, 0x25CC, 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183, + 0xEE6C, 0xEE6C, 0x20B9, 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181, + 0xEE6F, 0xEE76, 0x5186, 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E, + 0xEE7D, 0xEE7D, 0x2173, 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD, + 0xEE81, 0xEE84, 0x5193, 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6, + 0xEE87, 0xEE89, 0x5197, 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1, + 0xEE8C, 0xEE8C, 0x519A, 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B, + 0xEE90, 0xEE90, 0x2008, 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0, + 0xEE95, 0xEE96, 0x51A0, 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2, + 0xEE99, 0xEE99, 0x1F2A, 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72, + 0xEE9E, 0xEE9E, 0x25D3, 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B, + 0xEF40, 0xEF40, 0x21BE, 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044, + 0xEF43, 0xEF43, 0x51A8, 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3, + 0xEF46, 0xEF4B, 0x51A9, 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF, + 0xEF52, 0xEF53, 0x24CC, 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698, + 0xEF56, 0xEF56, 0x51B5, 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6, + 0xEF5A, 0xEF5A, 0x24CE, 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF, + 0xEF61, 0xEF67, 0x51BD, 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4, + 0xEF6A, 0xEF6A, 0x24D0, 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1, + 0xEF6D, 0xEF76, 0x51C6, 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0, + 0xEF7A, 0xEF7A, 0x239B, 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E, + 0xEF7D, 0xEF7E, 0x51D3, 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D, + 0xEF83, 0xEF84, 0x239F, 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1, + 0xEF87, 0xEF87, 0x51D8, 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9, + 0xEF8B, 0xEF8B, 0x221E, 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2, + 0xEF8E, 0xEF94, 0x51DC, 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36, + 0xEF97, 0xEF97, 0x2135, 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD, + 0xEF9D, 0xEF9D, 0x51E7, 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8, + 0xEFA1, 0xEFFE, 0x1AC9, 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3, + 0xF042, 0xF042, 0x2203, 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7, + 0xF045, 0xF046, 0x51EC, 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097, + 0xF049, 0xF049, 0x1EE4, 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238, + 0xF04F, 0xF050, 0x51F2, 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4, + 0xF054, 0xF054, 0x1F9A, 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3, + 0xF058, 0xF05D, 0x51F8, 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE, + 0xF068, 0xF068, 0x239C, 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6, + 0xF06D, 0xF070, 0x520A, 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E, + 0xF073, 0xF073, 0x2035, 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F, + 0xF078, 0xF078, 0x23A8, 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075, + 0xF07B, 0xF07C, 0x5213, 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB, + 0xF081, 0xF081, 0x1FEB, 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215, + 0xF087, 0xF087, 0x1F6A, 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219, + 0xF08B, 0xF08B, 0x2666, 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667, + 0xF091, 0xF091, 0x521F, 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220, + 0xF096, 0xF096, 0x23AD, 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27, + 0xF140, 0xF151, 0x522D, 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242, + 0xF154, 0xF154, 0x1F02, 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183, + 0xF158, 0xF158, 0x5241, 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9, + 0xF15B, 0xF166, 0x5242, 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E, + 0xF176, 0xF176, 0x22A5, 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA, + 0xF179, 0xF179, 0x525C, 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82, + 0xF17C, 0xF17D, 0x525D, 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404, + 0xF181, 0xF181, 0x525F, 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260, + 0xF184, 0xF184, 0x2184, 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403, + 0xF187, 0xF187, 0x5262, 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B, + 0xF18A, 0xF193, 0x5263, 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D, + 0xF198, 0xF198, 0x2067, 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85, + 0xF240, 0xF244, 0x5278, 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D, + 0xF247, 0xF247, 0x1E83, 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F, + 0xF24C, 0xF252, 0x5281, 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7, + 0xF255, 0xF255, 0x240D, 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412, + 0xF25D, 0xF25E, 0x528E, 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290, + 0xF271, 0xF271, 0x23F0, 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411, + 0xF274, 0xF274, 0x2414, 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170, + 0xF277, 0xF27B, 0x52A3, 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C, + 0xF27E, 0xF27E, 0x2415, 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066, + 0xF286, 0xF286, 0x52AD, 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413, + 0xF289, 0xF289, 0x2410, 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1, + 0xF28D, 0xF290, 0x52AE, 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2, + 0xF294, 0xF294, 0x2409, 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418, + 0xF297, 0xF29B, 0x52B5, 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA, + 0xF29E, 0xF29E, 0x21FC, 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3, + 0xF340, 0xF340, 0x1FC1, 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD, + 0xF345, 0xF345, 0x229C, 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E, + 0xF349, 0xF349, 0x52C2, 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419, + 0xF34C, 0xF34F, 0x52C3, 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7, + 0xF361, 0xF361, 0x1E29, 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661, + 0xF375, 0xF375, 0x52E9, 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174, + 0xF378, 0xF378, 0x2663, 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA, + 0xF380, 0xF38B, 0x52EF, 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB, + 0xF3A0, 0xF3A0, 0x214C, 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E, + 0xF445, 0xF445, 0x267A, 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0, + 0xF451, 0xF456, 0x531D, 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323, + 0xF459, 0xF459, 0x1ED0, 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096, + 0xF45C, 0xF45C, 0x5325, 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326, + 0xF462, 0xF462, 0x23C8, 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E, + 0xF465, 0xF474, 0x532B, 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B, + 0xF47C, 0xF47C, 0x2664, 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239, + 0xF480, 0xF493, 0x5342, 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356, + 0xF499, 0xF499, 0x261F, 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E, + 0xF49D, 0xF4A0, 0x535C, 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360, + 0xF545, 0xF545, 0x2620, 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621, + 0xF548, 0xF551, 0x5366, 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370, + 0xF554, 0xF554, 0x2627, 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625, + 0xF557, 0xF55D, 0x5371, 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378, + 0xF561, 0xF561, 0x262E, 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A, + 0xF56E, 0xF56E, 0x262A, 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385, + 0xF571, 0xF571, 0x2628, 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386, + 0xF580, 0xF584, 0x5392, 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630, + 0xF587, 0xF58B, 0x5397, 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C, + 0xF58E, 0xF58E, 0x200D, 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D, + 0xF599, 0xF599, 0x2645, 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A, + 0xF59C, 0xF59F, 0x53A7, 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD, + 0xF640, 0xF640, 0x53AB, 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC, + 0xF645, 0xF645, 0x263D, 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF, + 0xF648, 0xF648, 0x263E, 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F, + 0xF64C, 0xF64C, 0x1FC0, 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B, + 0xF650, 0xF653, 0x53B3, 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7, + 0xF658, 0xF658, 0x2644, 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639, + 0xF662, 0xF662, 0x53C2, 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3, + 0xF66C, 0xF66C, 0x2647, 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB, + 0xF671, 0xF671, 0x2649, 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648, + 0xF675, 0xF675, 0x53D0, 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108, + 0xF678, 0xF67E, 0x53D1, 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D, + 0xF686, 0xF687, 0x53DD, 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF, + 0xF68A, 0xF68A, 0x2651, 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650, + 0xF68E, 0xF68E, 0x2652, 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F, + 0xF693, 0xF695, 0x53E5, 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E, + 0xF698, 0xF698, 0x2653, 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657, + 0xF69B, 0xF69B, 0x53E9, 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA, + 0xF69E, 0xF69E, 0x2633, 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656, + 0xF6A1, 0xF6FE, 0x1D5B, 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654, + 0xF743, 0xF748, 0x53EE, 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4, + 0xF74C, 0xF74C, 0x2655, 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6, + 0xF756, 0xF756, 0x265B, 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A, + 0xF759, 0xF759, 0x53FF, 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E, + 0xF75C, 0xF75C, 0x262F, 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646, + 0xF762, 0xF762, 0x5404, 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405, + 0xF76B, 0xF76B, 0x265C, 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C, + 0xF772, 0xF77B, 0x5411, 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B, + 0xF77E, 0xF77E, 0x2631, 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9, + 0xF840, 0xF841, 0x543D, 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F, + 0xF846, 0xF846, 0x2580, 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC, + 0xF84A, 0xF84F, 0x5444, 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B, + 0xF852, 0xF852, 0x544A, 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B, + 0xF863, 0xF863, 0x2583, 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A, + 0xF866, 0xF866, 0x21EE, 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182, + 0xF873, 0xF877, 0x5466, 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B, + 0xF87A, 0xF87A, 0x2587, 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588, + 0xF87D, 0xF87E, 0x546D, 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584, + 0xF882, 0xF883, 0x5470, 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472, + 0xF886, 0xF886, 0x21EF, 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A, + 0xF88E, 0xF88E, 0x258C, 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47, + 0xF89A, 0xF89C, 0x5483, 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486, + 0xF8A0, 0xF8A0, 0x258D, 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0, + 0xF94F, 0xF94F, 0x2592, 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496, + 0xF959, 0xF959, 0x2594, 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E, + 0xF95D, 0xF95D, 0x2591, 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0, + 0xF967, 0xF967, 0x2597, 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6, + 0xF96A, 0xF96B, 0x54A9, 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB, + 0xF96F, 0xF96F, 0x20F6, 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC, + 0xF985, 0xF985, 0x2585, 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599, + 0xF988, 0xF990, 0x54C2, 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB, + 0xF996, 0xF996, 0x259A, 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B, + 0xF999, 0xF9A0, 0x54D0, 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D, + 0xFA43, 0xFA45, 0x54DA, 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD, + 0xFA4C, 0xFA4C, 0x234C, 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44, + 0xFA52, 0xFA57, 0x54E6, 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0, + 0xFA5A, 0xFA5C, 0x54EC, 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF, + 0xFA5F, 0xFA5F, 0x259F, 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C, + 0xFA62, 0xFA6F, 0x54F1, 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF, + 0xFA74, 0xFA74, 0x20AE, 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B, + 0xFA77, 0xFA77, 0x25A3, 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A, + 0xFA83, 0xFA83, 0x2589, 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D, + 0xFA8D, 0xFA8D, 0x25A4, 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6, + 0xFA91, 0xFA91, 0x2593, 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7, + 0xFA97, 0xFA97, 0x2222, 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B, + 0xFB40, 0xFB48, 0x5523, 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C, + 0xFB52, 0xFB52, 0x2586, 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1, + 0xFB58, 0xFB58, 0x25AA, 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590, + 0xFB5B, 0xFB5B, 0x258E, 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688, + 0xFB76, 0xFB78, 0x5552, 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB, + 0xFB7B, 0xFB7B, 0x5555, 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4, + 0xFB7E, 0xFB7E, 0x5556, 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F, + 0xFB91, 0xFB9B, 0x5567, 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572, + 0xFB9F, 0xFB9F, 0x25F7, 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575, + 0xFC44, 0xFC44, 0x2696, 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F, + 0xFC4A, 0xFC59, 0x557D, 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D, + 0xFC63, 0xFC63, 0x1EC1, 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3, + 0xFC69, 0xFC6E, 0x5599, 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F, + 0xFC71, 0xFC71, 0x268A, 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669, + 0xFC75, 0xFC76, 0x55A2, 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4, + 0xFC80, 0xFC82, 0x55AA, 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD, + 0xFC8A, 0xFC8A, 0x2673, 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9, + 0xFD52, 0xFD52, 0x20C6, 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB, + 0xFD57, 0xFD57, 0x24D3, 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE, + 0xFD5A, 0xFD5A, 0x260F, 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611, + 0xFD60, 0xFD61, 0x55E3, 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5, + 0xFD65, 0xFD65, 0x2610, 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030, + 0xFD68, 0xFD68, 0x55E7, 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8, + 0xFD6C, 0xFD6C, 0x2614, 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616, + 0xFD71, 0xFD71, 0x55ED, 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE, + 0xFD78, 0xFD78, 0x20F2, 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617, + 0xFD7E, 0xFD7E, 0x55F7, 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037, + 0xFD89, 0xFD8A, 0x5600, 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602, + 0xFD8F, 0xFD8F, 0x1F22, 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605, + 0xFD94, 0xFD94, 0x1F34, 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02, + 0xFD9E, 0xFD9E, 0x40D3, 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083, + 0xFE40, 0xFE40, 0x1259, 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp new file mode 100644 index 0000000000..ec35055da5 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp @@ -0,0 +1,17 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBK_EUC_V_2[20 * 3] = { + 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, + 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, + 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, + 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, + 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, + 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, + 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp new file mode 100644 index 0000000000..bd0b1be516 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp @@ -0,0 +1,1822 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBK2K_H_5[4071 * 3] = { + 0x0020, 0x007E, 0x0001, 0x8140, 0x8178, 0x2758, 0x8179, 0x8179, 0x2059, + 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, 0x8186, 0x8186, 0x21F1, + 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, 0x81EE, 0x81F5, 0x2802, + 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, 0x8240, 0x8252, 0x2812, + 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, 0x8262, 0x8262, 0x21B5, + 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, 0x8275, 0x8279, 0x2844, + 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, 0x827D, 0x827D, 0x1E62, + 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, 0x8281, 0x8282, 0x284C, + 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, 0x8290, 0x8290, 0x205C, + 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, 0x82A6, 0x82C7, 0x286E, + 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, 0x82CA, 0x82E0, 0x2890, + 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, 0x82E3, 0x82E3, 0x210A, + 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, 0x82ED, 0x82ED, 0x267F, + 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, 0x82F3, 0x82F6, 0x28B4, + 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, 0x82F9, 0x82F9, 0x226C, + 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, 0x82FC, 0x82FE, 0x28B9, + 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, 0x8342, 0x8344, 0x28BD, + 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, 0x8348, 0x8348, 0x1FB9, + 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, 0x834D, 0x8352, 0x28C5, + 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, 0x8357, 0x8357, 0x20C2, + 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, 0x835F, 0x8364, 0x28D4, + 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, 0x8367, 0x8371, 0x28DA, + 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, 0x8378, 0x8378, 0x2210, + 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, 0x837B, 0x837B, 0x28EB, + 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, 0x837E, 0x837E, 0x1FE4, + 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, 0x8386, 0x8386, 0x22D6, + 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, 0x838A, 0x838A, 0x22CE, + 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, 0x838E, 0x8393, 0x28F6, + 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, 0x839E, 0x839E, 0x2231, + 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, 0x83A7, 0x83AA, 0x290C, + 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, 0x83AE, 0x83AE, 0x22D7, + 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, 0x83B1, 0x83B9, 0x2912, + 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, 0x83C9, 0x83C9, 0x2025, + 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, 0x83F7, 0x83FE, 0x2955, + 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, 0x8451, 0x8470, 0x296D, + 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, 0x8474, 0x8474, 0x2263, + 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, 0x8478, 0x847E, 0x2991, + 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, 0x8483, 0x848D, 0x299A, + 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, 0x8492, 0x8492, 0x22CA, + 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, 0x849D, 0x849D, 0x1F4F, + 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, 0x84A2, 0x84A2, 0x2036, + 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, 0x84A5, 0x84A5, 0x22C9, + 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, 0x84A9, 0x84A9, 0x1F75, + 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, 0x84C6, 0x84D2, 0x29D2, + 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, 0x84D5, 0x84D5, 0x21A9, + 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, 0x84D8, 0x84D8, 0x29E1, + 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, 0x84DB, 0x84DC, 0x29E2, + 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, 0x84EA, 0x84EA, 0x2323, + 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, 0x84EF, 0x84F0, 0x29F3, + 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, 0x8540, 0x8550, 0x2A02, + 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, 0x8553, 0x8553, 0x2A13, + 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, 0x855E, 0x855E, 0x20EF, + 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, 0x8567, 0x857E, 0x2A24, + 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, 0x8588, 0x858A, 0x2A43, + 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, 0x8592, 0x8592, 0x21F9, + 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, 0x8597, 0x8597, 0x2A4F, + 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, 0x85A2, 0x85A2, 0x1E5A, + 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, 0x85B3, 0x85FE, 0x2A68, + 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, 0x864B, 0x8653, 0x2ABE, + 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, 0x8668, 0x8668, 0x236C, + 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, 0x8696, 0x8696, 0x219C, + 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, 0x869A, 0x86A0, 0x2B08, + 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, 0x86CA, 0x86CA, 0x210B, + 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, 0x86CD, 0x86CD, 0x2B38, + 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, 0x86D1, 0x86D1, 0x222C, + 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, 0x86DD, 0x86DD, 0x22C0, + 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, 0x86E2, 0x86E7, 0x2B48, + 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, 0x86EE, 0x86EE, 0x2379, + 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, 0x86F5, 0x86FE, 0x2B58, + 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, 0x8744, 0x8744, 0x237C, + 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, 0x874A, 0x874A, 0x2B69, + 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, 0x874D, 0x874E, 0x2B6A, + 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, 0x8757, 0x8757, 0x1F4C, + 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, 0x875B, 0x875B, 0x21CF, + 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, 0x875E, 0x875E, 0x2371, + 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, 0x8761, 0x8765, 0x2B77, + 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, 0x877A, 0x877A, 0x236F, + 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, 0x877E, 0x877E, 0x2B91, + 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, 0x8782, 0x8782, 0x2373, + 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, 0x8787, 0x8787, 0x2B96, + 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, 0x878A, 0x878A, 0x20B5, + 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, 0x878E, 0x878E, 0x2672, + 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, 0x8794, 0x8797, 0x2B9E, + 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, 0x879D, 0x879D, 0x2375, + 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, 0x87A4, 0x87A6, 0x2BAB, + 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, 0x87B3, 0x87B3, 0x236B, + 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, 0x87B6, 0x87BA, 0x2BBA, + 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, 0x87BF, 0x87BF, 0x237D, + 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, 0x87C2, 0x87C2, 0x2381, + 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, 0x87CB, 0x87CB, 0x237E, + 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, 0x87CF, 0x87CF, 0x22DB, + 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, 0x87D3, 0x87D3, 0x2689, + 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, 0x87D6, 0x87D9, 0x2BCF, + 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, 0x87F7, 0x87F7, 0x2383, + 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, 0x87FA, 0x87FA, 0x218F, + 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, 0x8841, 0x8841, 0x2248, + 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, 0x8845, 0x8845, 0x2BF6, + 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, 0x8880, 0x88B9, 0x2C2F, + 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, 0x88CC, 0x88CC, 0x228B, + 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, 0x88D5, 0x88D6, 0x2C81, + 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, 0x88DF, 0x88DF, 0x232C, + 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, 0x88E6, 0x88F1, 0x2C8F, + 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, 0x88F4, 0x88F5, 0x2C9B, + 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, 0x8940, 0x894A, 0x2CA5, + 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, 0x894D, 0x894D, 0x2CB0, + 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, 0x8950, 0x8950, 0x232D, + 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, 0x8955, 0x895C, 0x2CB5, + 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, 0x895F, 0x895F, 0x232F, + 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, 0x896E, 0x8970, 0x2CCB, + 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, 0x897C, 0x897C, 0x1EC2, + 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, 0x898B, 0x898B, 0x22B2, + 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, 0x899A, 0x899D, 0x2CF2, + 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, 0x89A6, 0x89A6, 0x20D9, + 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, 0x89A9, 0x89AE, 0x2CFE, + 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, 0x89BA, 0x89BA, 0x21ED, + 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, 0x89BF, 0x89BF, 0x2326, + 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, 0x89C4, 0x89C4, 0x1F52, + 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, 0x89C7, 0x89C7, 0x2D14, + 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, 0x89CE, 0x89CE, 0x1E2B, + 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, 0x89D2, 0x89D7, 0x2D1C, + 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, 0x89DB, 0x89DB, 0x2138, + 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, 0x89F5, 0x89FE, 0x2D3C, + 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, 0x8A42, 0x8A58, 0x2D47, + 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, 0x8A5B, 0x8A5B, 0x2D5E, + 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, 0x8A5E, 0x8A5E, 0x1EFA, + 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, 0x8A7A, 0x8A7E, 0x2D7A, + 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, 0x8AE5, 0x8AFE, 0x2DE3, + 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, 0x8B45, 0x8B48, 0x2E01, + 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, 0x8B7A, 0x8B7A, 0x23FC, + 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, 0x8B8C, 0x8B8C, 0x2069, + 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, 0x8B9F, 0x8BB2, 0x2E56, + 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, 0x8BB9, 0x8BB9, 0x23FD, + 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, 0x8BBF, 0x8BC5, 0x2E73, + 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, 0x8BC8, 0x8BC8, 0x23FE, + 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, 0x8BD4, 0x8BD4, 0x2401, + 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, 0x8BDD, 0x8BE4, 0x2E8C, + 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, 0x8BEB, 0x8BEB, 0x2221, + 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, 0x8BF1, 0x8BFE, 0x2E9D, + 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, 0x8C45, 0x8C4E, 0x2EAF, + 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, 0x8C57, 0x8C57, 0x21E5, + 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, 0x8C5D, 0x8C7E, 0x2EC4, + 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, 0x8C8C, 0x8C8C, 0x2EF1, + 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, 0x8C8F, 0x8C8F, 0x2121, + 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, 0x8C92, 0x8C92, 0x1FE5, + 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, 0x8C9A, 0x8C9A, 0x1E37, + 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, 0x8CA3, 0x8CA3, 0x22A6, + 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, 0x8CA6, 0x8CA6, 0x1EDA, + 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, 0x8CC0, 0x8CC0, 0x235C, + 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, 0x8CD3, 0x8CD3, 0x1E67, + 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, 0x8CD6, 0x8CD8, 0x2F2B, + 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, 0x8CF9, 0x8CF9, 0x1F16, + 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, 0x8D73, 0x8D73, 0x2389, + 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, 0x8D76, 0x8D7A, 0x2F86, + 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, 0x8D80, 0x8D87, 0x2F8E, + 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, 0x8D8F, 0x8D8F, 0x1F1A, + 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, 0x8D9F, 0x8DB8, 0x2FAA, + 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, 0x8DE2, 0x8DE2, 0x2391, + 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, 0x8DE5, 0x8DE6, 0x2FED, + 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, 0x8DF7, 0x8DF7, 0x238E, + 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, 0x8E40, 0x8E45, 0x3004, + 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, 0x8E56, 0x8E56, 0x2390, + 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, 0x8E59, 0x8E59, 0x301A, + 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, 0x8E68, 0x8E68, 0x1FE9, + 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, 0x8E6F, 0x8E6F, 0x302D, + 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, 0x8E80, 0x8E80, 0x2324, + 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, 0x8E9C, 0x8E9E, 0x3056, + 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, 0x8EA4, 0x8EA4, 0x2277, + 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, 0x8EA8, 0x8EAB, 0x305F, + 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, 0x8EAE, 0x8EAE, 0x2384, + 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, 0x8EBE, 0x8EBE, 0x2386, + 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, 0x8EC4, 0x8EC4, 0x3076, + 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, 0x8ECD, 0x8ECD, 0x1E32, + 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, 0x8ED6, 0x8ED6, 0x1F13, + 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, 0x8EEC, 0x8EEC, 0x1FE0, + 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, 0x8F52, 0x8F52, 0x2087, + 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, 0x8F55, 0x8F55, 0x1EF6, + 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, 0x8F5D, 0x8F5D, 0x2045, + 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, 0x8F65, 0x8F7E, 0x30C9, + 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, 0x8F87, 0x8F87, 0x30E9, + 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, 0x8F95, 0x8F95, 0x266E, + 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, 0x8F98, 0x8F9A, 0x30F7, + 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, 0x8F9D, 0x8F9D, 0x2188, + 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, 0x8FA2, 0x8FBC, 0x30FE, + 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, 0x8FC4, 0x8FC4, 0x1EA1, + 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, 0x8FC7, 0x8FCC, 0x3120, + 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, 0x8FD8, 0x8FD8, 0x1E7C, + 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, 0x9080, 0x909C, 0x3195, + 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, 0x909F, 0x90B9, 0x31B2, + 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, 0x90C0, 0x90C0, 0x2095, + 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, 0x90C5, 0x90C5, 0x23B9, + 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, 0x90DC, 0x90DC, 0x23BD, + 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, 0x90EE, 0x90EF, 0x31FA, + 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, 0x90F7, 0x90F7, 0x23B3, + 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, 0x9142, 0x9142, 0x2162, + 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, 0x914C, 0x914C, 0x3213, + 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, 0x9151, 0x9151, 0x23B7, + 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, 0x9155, 0x9155, 0x24DF, + 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, 0x915A, 0x915A, 0x214E, + 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, 0x915E, 0x9160, 0x321E, + 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, 0x9163, 0x9163, 0x20EB, + 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, 0x916F, 0x9175, 0x322C, + 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, 0x917A, 0x917A, 0x201B, + 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, 0x917D, 0x917E, 0x3236, + 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, 0x9185, 0x918C, 0x323C, + 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, 0x9191, 0x9191, 0x2089, + 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, 0x9194, 0x9196, 0x3248, + 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, 0x919B, 0x919B, 0x2214, + 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, 0x91AA, 0x91AA, 0x2223, + 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, 0x91BA, 0x91BA, 0x268C, + 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, 0x91BF, 0x91BF, 0x24E0, + 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, 0x91C4, 0x91CC, 0x326F, + 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, 0x91D0, 0x91D0, 0x1FFE, + 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, 0x91D3, 0x91D3, 0x327A, + 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, 0x91D6, 0x91D6, 0x1FCE, + 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, 0x91D9, 0x91D9, 0x2021, + 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, 0x91E0, 0x91E1, 0x3282, + 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, 0x91EA, 0x91EA, 0x24A4, + 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, 0x91F1, 0x91F1, 0x3290, + 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, 0x9240, 0x927E, 0x329D, + 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, 0x92B7, 0x92CD, 0x3312, + 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, 0x92D0, 0x92D0, 0x235D, + 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, 0x92D5, 0x92DE, 0x332D, + 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, 0x92E1, 0x92FD, 0x3337, + 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, 0x9350, 0x9350, 0x21FF, + 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, 0x935E, 0x936F, 0x3370, + 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, 0x9376, 0x9376, 0x1EB6, + 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, 0x938C, 0x938C, 0x20DB, + 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, 0x939E, 0x93A4, 0x33AB, + 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, 0x93A7, 0x93A7, 0x2040, + 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, 0x93B5, 0x93B7, 0x33BF, + 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, 0x93BB, 0x93BB, 0x235E, + 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, 0x93BE, 0x93C5, 0x33C5, + 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, 0x93CF, 0x93CF, 0x2093, + 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, 0x93D8, 0x93DA, 0x33DC, + 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, 0x93DD, 0x93E0, 0x33DF, + 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, 0x93E4, 0x93E4, 0x20C0, + 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, 0x93E9, 0x93E9, 0x2160, + 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, 0x93EC, 0x93EC, 0x1F8E, + 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, 0x93EF, 0x93EF, 0x2047, + 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, 0x93F2, 0x93F3, 0x33EB, + 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, 0x93F6, 0x93F9, 0x33ED, + 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, 0x93FE, 0x93FE, 0x1FCC, + 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, 0x9445, 0x944C, 0x33F8, + 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, 0x9450, 0x9450, 0x1E52, + 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, 0x9453, 0x9453, 0x228F, + 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, 0x9456, 0x9457, 0x3403, + 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, 0x945B, 0x945B, 0x1E2D, + 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, 0x945E, 0x945E, 0x3407, + 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, 0x9464, 0x9464, 0x2363, + 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, 0x9467, 0x946D, 0x340D, + 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, 0x9472, 0x9472, 0x1FF6, + 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, 0x9475, 0x9475, 0x3418, + 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, 0x9478, 0x9478, 0x2367, + 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, 0x947B, 0x947E, 0x341B, + 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, 0x9482, 0x9482, 0x2163, + 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, 0x9488, 0x9488, 0x1FFC, + 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, 0x94A2, 0x94B2, 0x343B, + 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, 0x94B5, 0x94B5, 0x2142, + 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, 0x94C0, 0x94C0, 0x1E43, + 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, 0x94CD, 0x94D7, 0x3461, + 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, 0x94E0, 0x94E0, 0x1ED7, + 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, 0x9572, 0x9572, 0x212D, + 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, 0x9583, 0x9583, 0x229B, + 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, 0x959F, 0x959F, 0x24A8, + 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, 0x95B4, 0x95B9, 0x34FF, + 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, 0x95CF, 0x95CF, 0x24A7, + 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, 0x95D2, 0x95D2, 0x24A6, + 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, 0x95D5, 0x95E0, 0x351B, + 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, 0x95E7, 0x95E7, 0x1FE7, + 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, 0x95F2, 0x95F7, 0x3535, + 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, 0x95FE, 0x95FE, 0x1F5C, + 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, 0x9657, 0x967B, 0x3556, + 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, 0x9680, 0x96FE, 0x357D, + 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, 0x9768, 0x976B, 0x3623, + 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, 0x976E, 0x976E, 0x246D, + 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, 0x9796, 0x9796, 0x246B, + 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, 0x979D, 0x979D, 0x1ECE, + 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, 0x97A4, 0x97BE, 0x3658, + 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, 0x97EE, 0x97EE, 0x21FE, + 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, 0x97F8, 0x97FE, 0x36A9, + 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, 0x9846, 0x9848, 0x36B5, + 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, 0x984F, 0x984F, 0x1F6F, + 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, 0x9872, 0x9872, 0x36DE, + 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, 0x9880, 0x9880, 0x36EA, + 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, 0x988B, 0x988B, 0x1F27, + 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, 0x98A0, 0x98A0, 0x247C, + 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, 0x98AB, 0x98B5, 0x3710, + 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, 0x98B8, 0x98B9, 0x371B, + 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, 0x98C7, 0x98C7, 0x203E, + 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, 0x98CC, 0x98CF, 0x372C, + 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, 0x98D3, 0x98D3, 0x2204, + 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, 0x98E4, 0x98E4, 0x2140, + 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, 0x98EF, 0x98EF, 0x2474, + 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, 0x98F3, 0x98FE, 0x374C, + 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, 0x9944, 0x9944, 0x375B, + 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, 0x9966, 0x9966, 0x2472, + 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, 0x996F, 0x9974, 0x3783, + 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, 0x997A, 0x997A, 0x1F8B, + 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, 0x9980, 0x9984, 0x3790, + 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, 0x9989, 0x9989, 0x2482, + 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, 0x998F, 0x9990, 0x379C, + 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, 0x9999, 0x9999, 0x1F38, + 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, 0x99AA, 0x99AF, 0x37B4, + 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, 0x99B2, 0x99B2, 0x37BA, + 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, 0x99B5, 0x99B5, 0x2471, + 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, 0x99BE, 0x99BE, 0x2470, + 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, 0x99C1, 0x99C1, 0x37C3, + 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, 0x99C9, 0x99C9, 0x246F, + 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, 0x99CF, 0x99D0, 0x37CE, + 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, 0x99DA, 0x99DA, 0x1FF5, + 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, 0x99E1, 0x99E4, 0x37DD, + 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, 0x99E8, 0x99E8, 0x2479, + 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, 0x99ED, 0x99F3, 0x37E6, + 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, 0x9A40, 0x9A49, 0x37F7, + 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, 0x9A57, 0x9A57, 0x20AD, + 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, 0x9A66, 0x9A66, 0x381A, + 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, 0x9A71, 0x9A71, 0x2159, + 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, 0x9A77, 0x9A77, 0x1F33, + 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, 0x9A88, 0x9A88, 0x1E5C, + 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, 0x9A8D, 0x9A90, 0x383A, + 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, 0x9A97, 0x9A97, 0x248A, + 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, 0x9A9B, 0x9A9B, 0x248B, + 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, 0x9A9F, 0x9AA1, 0x3847, + 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, 0x9AA4, 0x9AA9, 0x384A, + 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, 0x9AD0, 0x9AD0, 0x24C0, + 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, 0x9AD7, 0x9AD9, 0x387A, + 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, 0x9AE2, 0x9AE2, 0x20CA, + 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, 0x9AE5, 0x9AE5, 0x24C2, + 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, 0x9B80, 0x9BD0, 0x38DD, + 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, 0x9BDC, 0x9BDC, 0x23DB, + 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, 0x9C53, 0x9C53, 0x205E, + 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, 0x9C5A, 0x9C5A, 0x23E2, + 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, 0x9C5D, 0x9C74, 0x3973, + 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, 0x9C79, 0x9C79, 0x1E66, + 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, 0x9C86, 0x9C86, 0x1F63, + 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, 0x9C9E, 0x9CAA, 0x39AF, + 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, 0x9CCA, 0x9CCA, 0x22B5, + 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, 0x9CD0, 0x9CE5, 0x39DE, + 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, 0x9CE8, 0x9CEB, 0x39F4, + 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, 0x9CEE, 0x9CEE, 0x2341, + 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, 0x9CFC, 0x9CFD, 0x3A05, + 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, 0x9D42, 0x9D42, 0x2124, + 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, 0x9D47, 0x9D47, 0x23E0, + 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, 0x9D4E, 0x9D4E, 0x3A11, + 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, 0x9D61, 0x9D61, 0x20B1, + 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, 0x9D69, 0x9D69, 0x201C, + 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, 0x9D6F, 0x9D70, 0x3A2D, + 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, 0x9D75, 0x9D75, 0x1F9B, + 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, 0x9D7C, 0x9D7C, 0x3A37, + 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, 0x9D80, 0x9D89, 0x3A39, + 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, 0x9D8D, 0x9D8D, 0x1FB4, + 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, 0x9D92, 0x9D98, 0x3A48, + 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, 0x9DA1, 0x9DA1, 0x23E1, + 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, 0x9DA7, 0x9DA7, 0x23EA, + 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, 0x9DAD, 0x9DAD, 0x210E, + 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, 0x9DB3, 0x9DB3, 0x2004, + 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, 0x9DBF, 0x9DC5, 0x3A6C, + 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, 0x9DC9, 0x9DC9, 0x2264, + 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, 0x9DCE, 0x9DD1, 0x3A78, + 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, 0x9DD5, 0x9DD5, 0x1EC4, + 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, 0x9DE2, 0x9DE2, 0x20A9, + 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, 0x9DF2, 0x9DF3, 0x3A97, + 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, 0x9DF7, 0x9DF7, 0x268B, + 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, 0x9DFB, 0x9DFC, 0x3A9D, + 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, 0x9E40, 0x9E44, 0x3AA0, + 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, 0x9E48, 0x9E48, 0x2191, + 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, 0x9E52, 0x9E52, 0x1F9C, + 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, 0x9E55, 0x9E55, 0x3AB0, + 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, 0x9E5D, 0x9E5D, 0x23E9, + 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, 0x9E61, 0x9E61, 0x21D5, + 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, 0x9E64, 0x9E66, 0x3ABA, + 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, 0x9E6C, 0x9E6C, 0x1E4F, + 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, 0x9E70, 0x9E71, 0x3AC3, + 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, 0x9E74, 0x9E74, 0x23EC, + 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, 0x9E7B, 0x9E7B, 0x23D8, + 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, 0x9E80, 0x9E84, 0x3ACD, + 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, 0x9E87, 0x9E87, 0x23ED, + 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, 0x9E92, 0x9E95, 0x3ADC, + 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, 0x9E98, 0x9EA1, 0x3AE0, + 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, 0x9EA6, 0x9EA6, 0x200B, + 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, 0x9EAA, 0x9EAD, 0x3AEF, + 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, 0x9EB3, 0x9EB3, 0x2189, + 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, 0x9EB7, 0x9EB7, 0x23E7, + 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, 0x9EF6, 0x9EFE, 0x3B36, + 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, 0x9F4F, 0x9F6E, 0x3B4D, + 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, 0x9F80, 0x9F91, 0x3B7C, + 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, 0x9F98, 0x9F98, 0x24D6, + 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, 0x9FA7, 0x9FA8, 0x3BA0, + 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, 0x9FAC, 0x9FAC, 0x24D5, + 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, 0x9FCA, 0x9FCC, 0x3BC0, + 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, 0x9FE1, 0x9FE1, 0x20FC, + 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, 0x9FEC, 0x9FED, 0x3BDF, + 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, 0x9FF4, 0x9FF4, 0x1EBA, + 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, 0x9FFE, 0x9FFE, 0x3BEE, + 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, 0xA044, 0xA045, 0x3BF2, + 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, 0xA049, 0xA049, 0x2227, + 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, 0xA04F, 0xA053, 0x3BFA, + 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, 0xA05A, 0xA05A, 0x1F5D, + 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, 0xA062, 0xA062, 0x3C0A, + 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, 0xA071, 0xA071, 0x2149, + 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, 0xA075, 0xA07E, 0x3C1A, + 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, 0xA091, 0xA091, 0x2190, + 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, 0xA095, 0xA095, 0x3C36, + 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, 0xA0A9, 0xA0A9, 0x24C3, + 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, 0xA0C0, 0xA0CD, 0x3C5E, + 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, 0xA0D9, 0xA0D9, 0x1ED1, + 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, 0xA0DF, 0xA0ED, 0x3C7A, + 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, 0xA1A1, 0xA1FE, 0x0060, + 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E3, 0xA2E3, 0x5751, + 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, + 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, + 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, + 0xA840, 0xA87E, 0x26B3, 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C, + 0xA8C5, 0xA8EA, 0x02BC, 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720, + 0xA95C, 0xA95C, 0x2722, 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742, + 0xA996, 0xA996, 0x1E17, 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99, + 0xAA4D, 0xAA4D, 0x21B6, 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6, + 0xAA71, 0xAA71, 0x2235, 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397, + 0xAA74, 0xAA76, 0x3CC9, 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC, + 0xAA7A, 0xAA7A, 0x223F, 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE, + 0xAA80, 0xAA99, 0x3CD1, 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB, + 0xAA9C, 0xAA9C, 0x2396, 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC, + 0xAA9F, 0xAA9F, 0x20A2, 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E, + 0xAB40, 0xAB40, 0x1F64, 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B, + 0xAB44, 0xAB44, 0x3CF0, 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139, + 0xAB47, 0xAB47, 0x3CF1, 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1, + 0xAB4A, 0xAB4A, 0x239A, 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399, + 0xAB4E, 0xAB7E, 0x3CF4, 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C, + 0xAC40, 0xAC45, 0x3D46, 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C, + 0xAC71, 0xAC71, 0x2460, 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C, + 0xAC7D, 0xAC7E, 0x3D80, 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D, + 0xAC8E, 0xAC92, 0x3D8F, 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A, + 0xAC95, 0xACA0, 0x3D94, 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461, + 0xAD4A, 0xAD5D, 0x3DA9, 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD, + 0xAD61, 0xAD61, 0x2462, 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54, + 0xAD69, 0xAD73, 0x3DC5, 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0, + 0xAD80, 0xAD81, 0x3DDA, 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC, + 0xAD87, 0xAD87, 0x245D, 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463, + 0xAD8C, 0xAD90, 0x3DE3, 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8, + 0xAE40, 0xAE53, 0x3DF7, 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B, + 0xAE62, 0xAE62, 0x1E70, 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F, + 0xAE81, 0xAE84, 0x3E34, 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38, + 0xAE8B, 0xAE8B, 0x1F4E, 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1, + 0xAE95, 0xAE9F, 0x3E45, 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50, + 0xAF64, 0xAF64, 0x1FC6, 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE, + 0xAF7C, 0xAF7E, 0x3E8A, 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01, + 0xAF83, 0xAF83, 0x2200, 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2, + 0xAF8F, 0xAF8F, 0x1E97, 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB, + 0xAF92, 0xAF9B, 0x3E9A, 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4, + 0xAF9F, 0xAF9F, 0x2028, 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7, + 0xB041, 0xB042, 0x25AF, 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1, + 0xB045, 0xB04E, 0x3EA9, 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3, + 0xB054, 0xB054, 0x1E4E, 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202, + 0xB058, 0xB058, 0x25AB, 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9, + 0xB05B, 0xB05B, 0x25AD, 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6, + 0xB05E, 0xB05E, 0x3EBB, 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4, + 0xB062, 0xB062, 0x222F, 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7, + 0xB065, 0xB06B, 0x3EBC, 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3, + 0xB07D, 0xB07D, 0x1E25, 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4, + 0xB097, 0xB097, 0x25C0, 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A, + 0xB09A, 0xB0A0, 0x3EEC, 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3, + 0xB14B, 0xB14B, 0x226E, 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD, + 0xB14E, 0xB14E, 0x3EFF, 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2, + 0xB151, 0xB151, 0x3F00, 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01, + 0xB180, 0xB196, 0x3F2D, 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44, + 0xB1A1, 0xB1FE, 0x040A, 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF, + 0xB242, 0xB266, 0x3F4E, 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73, + 0xB26D, 0xB26D, 0x2074, 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687, + 0xB275, 0xB27E, 0x3F7E, 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88, + 0xB289, 0xB289, 0x268D, 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0, + 0xB29B, 0xB2A0, 0x3FA0, 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6, + 0xB343, 0xB343, 0x1FAB, 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8, + 0xB371, 0xB37E, 0x3FD5, 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9, + 0xB389, 0xB38B, 0x3FEB, 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE, + 0xB38E, 0xB38E, 0x21FA, 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6, + 0xB440, 0xB453, 0x4001, 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015, + 0xB458, 0xB458, 0x24E4, 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6, + 0xB45F, 0xB45F, 0x20F7, 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B, + 0xB462, 0xB474, 0x401E, 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031, + 0xB47E, 0xB47E, 0x24EC, 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB, + 0xB484, 0xB488, 0x403C, 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041, + 0xB493, 0xB493, 0x24EA, 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524, + 0xB540, 0xB540, 0x4057, 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058, + 0xB54B, 0xB54B, 0x1E27, 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6, + 0xB557, 0xB559, 0x406B, 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012, + 0xB55C, 0xB55C, 0x1EEC, 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8, + 0xB562, 0xB57E, 0x4072, 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66, + 0xB59D, 0xB59D, 0x24DC, 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582, + 0xB640, 0xB651, 0x40AE, 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0, + 0xB655, 0xB655, 0x24DD, 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E, + 0xB65A, 0xB65A, 0x40C5, 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8, + 0xB65D, 0xB67E, 0x40C6, 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0, + 0xB740, 0xB74D, 0x4109, 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117, + 0xB751, 0xB751, 0x1E80, 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677, + 0xB75A, 0xB763, 0x4120, 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69, + 0xB766, 0xB766, 0x222B, 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F, + 0xB778, 0xB778, 0x1F5B, 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B, + 0xB781, 0xB781, 0x4140, 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141, + 0xB7A1, 0xB7FE, 0x063E, 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0, + 0xB844, 0xB844, 0x2186, 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED, + 0xB847, 0xB84C, 0x4163, 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169, + 0xB851, 0xB851, 0x1FEA, 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4, + 0xB85B, 0xB85B, 0x20E1, 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8, + 0xB85E, 0xB85E, 0x2260, 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2, + 0xB861, 0xB876, 0x4176, 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C, + 0xB880, 0xB881, 0x4193, 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195, + 0xB8A1, 0xB8FE, 0x069C, 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41, + 0xB951, 0xB960, 0x41C3, 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3, + 0xB97B, 0xB97B, 0x1F86, 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF, + 0xB99D, 0xB99D, 0x1FB3, 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF, + 0xB9A1, 0xB9FE, 0x06FA, 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4, + 0xBA43, 0xBA43, 0x4210, 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211, + 0xBA56, 0xBA56, 0x25E3, 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111, + 0xBA5A, 0xBA5F, 0x4224, 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A, + 0xBA6A, 0xBA6A, 0x25E7, 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041, + 0xBA75, 0xBA7E, 0x423C, 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA, + 0xBA85, 0xBA85, 0x424A, 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B, + 0xBA88, 0xBA88, 0x25EC, 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB, + 0xBA8E, 0xBA9D, 0x4250, 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D, + 0xBAA0, 0xBAA0, 0x4260, 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7, + 0xBB41, 0xBB48, 0x4261, 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269, + 0xBB58, 0xBB58, 0x25E9, 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE, + 0xBB5C, 0xBB5C, 0x203A, 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693, + 0xBB61, 0xBB64, 0x427C, 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED, + 0xBB67, 0xBB67, 0x4280, 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281, + 0xBB6A, 0xBB6A, 0x2065, 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3, + 0xBB6F, 0xBB7E, 0x4285, 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6, + 0xBC40, 0xBC51, 0x42B6, 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC, + 0xBC54, 0xBC59, 0x42C8, 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE, + 0xBC61, 0xBC61, 0x269B, 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3, + 0xBC64, 0xBC64, 0x42D5, 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6, + 0xBC67, 0xBC67, 0x25F4, 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B, + 0xBC6A, 0xBC6C, 0x42D8, 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB, + 0xBC6F, 0xBC6F, 0x1F7B, 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D, + 0xBC72, 0xBC72, 0x42DD, 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48, + 0xBC75, 0xBC75, 0x241C, 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF, + 0xBC79, 0xBC79, 0x219A, 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091, + 0xBC7C, 0xBC7D, 0x42DF, 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1, + 0xBC82, 0xBC82, 0x2423, 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422, + 0xBC85, 0xBC85, 0x42E3, 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4, + 0xBC88, 0xBC88, 0x228D, 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8, + 0xBC8B, 0xBC8B, 0x2421, 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3, + 0xBC90, 0xBC99, 0x42E8, 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426, + 0xBC9C, 0xBC9C, 0x2425, 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2, + 0xBCA1, 0xBCFE, 0x0814, 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A, + 0xBD43, 0xBD43, 0x2424, 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428, + 0xBD46, 0xBD47, 0x42F8, 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429, + 0xBD4A, 0xBD4A, 0x42FA, 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB, + 0xBD4D, 0xBD4D, 0x22BE, 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31, + 0xBD50, 0xBD56, 0x42FD, 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304, + 0xBD59, 0xBD59, 0x1FB5, 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B, + 0xBD67, 0xBD67, 0x1FAF, 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068, + 0xBD6B, 0xBD6B, 0x21E4, 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21, + 0xBD70, 0xBD70, 0x4316, 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317, + 0xBD79, 0xBD79, 0x217C, 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D, + 0xBD7C, 0xBD7D, 0x431E, 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320, + 0xBD81, 0xBD81, 0x1FD1, 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33, + 0xBD8A, 0xBD8A, 0x4328, 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329, + 0xBD8E, 0xBD8E, 0x242E, 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430, + 0xBD91, 0xBD91, 0x21DB, 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158, + 0xBD98, 0xBD9A, 0x4331, 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334, + 0xBDA1, 0xBDFE, 0x0872, 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9, + 0xBE44, 0xBE44, 0x433C, 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D, + 0xBE49, 0xBE49, 0x1E8E, 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340, + 0xBE51, 0xBE51, 0x21C5, 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192, + 0xBE54, 0xBE54, 0x4346, 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19, + 0xBE57, 0xBE57, 0x218C, 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3, + 0xBE5A, 0xBE5C, 0x4347, 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438, + 0xBE5F, 0xBE5F, 0x2432, 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A, + 0xBE62, 0xBE62, 0x1E9C, 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085, + 0xBE65, 0xBE68, 0x434B, 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F, + 0xBE6C, 0xBE6C, 0x243B, 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7, + 0xBE70, 0xBE70, 0x2433, 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054, + 0xBE77, 0xBE77, 0x21DE, 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434, + 0xBE7A, 0xBE7B, 0x4359, 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89, + 0xBE7E, 0xBE7E, 0x243C, 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E, + 0xBE84, 0xBE84, 0x1ED8, 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF, + 0xBE87, 0xBE87, 0x2445, 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249, + 0xBE8A, 0xBE8B, 0x4360, 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362, + 0xBE8E, 0xBE8E, 0x1E47, 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363, + 0xBE92, 0xBE92, 0x2086, 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196, + 0xBE96, 0xBE96, 0x4367, 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F, + 0xBE99, 0xBE99, 0x4368, 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369, + 0xBE9C, 0xBE9C, 0x2442, 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E, + 0xBEA0, 0xBEA0, 0x436C, 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6, + 0xBF41, 0xBF4C, 0x436D, 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446, + 0xBF4F, 0xBF4F, 0x244B, 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379, + 0xBF55, 0xBF55, 0x2427, 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D, + 0xBF60, 0xBF60, 0x1F0F, 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447, + 0xBF63, 0xBF63, 0x2449, 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387, + 0xBF68, 0xBF68, 0x21C2, 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E, + 0xBF6D, 0xBF6F, 0x438D, 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390, + 0xBF72, 0xBF72, 0x244A, 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391, + 0xBF76, 0xBF76, 0x22BB, 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393, + 0xBF79, 0xBF79, 0x2694, 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6, + 0xBF7C, 0xBF7C, 0x2051, 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E, + 0xBF80, 0xBF81, 0x4395, 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D, + 0xBF84, 0xBF88, 0x4397, 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451, + 0xBF8B, 0xBF94, 0x439C, 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6, + 0xBF97, 0xBF97, 0x2289, 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7, + 0xBF9D, 0xBF9D, 0x2454, 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E, + 0xC040, 0xC040, 0x20FB, 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440, + 0xC045, 0xC04A, 0x43B1, 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61, + 0xC04D, 0xC04D, 0x269D, 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A, + 0xC050, 0xC050, 0x2456, 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458, + 0xC053, 0xC054, 0x43B8, 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA, + 0xC05B, 0xC05B, 0x221A, 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A, + 0xC05F, 0xC05F, 0x244D, 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1, + 0xC069, 0xC069, 0x2453, 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420, + 0xC06C, 0xC06C, 0x43CA, 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685, + 0xC06F, 0xC06F, 0x43CB, 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC, + 0xC074, 0xC074, 0x2224, 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF, + 0xC077, 0xC077, 0x21BA, 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A, + 0xC07A, 0xC07B, 0x43D1, 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3, + 0xC080, 0xC09A, 0x43D5, 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0, + 0xC09D, 0xC09D, 0x269A, 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C, + 0xC140, 0xC14F, 0x43F4, 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404, + 0xC154, 0xC154, 0x1E2C, 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062, + 0xC160, 0xC160, 0x24F1, 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2, + 0xC163, 0xC174, 0x4412, 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424, + 0xC178, 0xC178, 0x2215, 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C, + 0xC195, 0xC195, 0x21AE, 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA, + 0xC240, 0xC24D, 0x444C, 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A, + 0xC265, 0xC265, 0x25C2, 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1, + 0xC268, 0xC27C, 0x4471, 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486, + 0xC280, 0xC283, 0x4487, 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B, + 0xC293, 0xC293, 0x2017, 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125, + 0xC296, 0xC296, 0x214D, 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4, + 0xC299, 0xC299, 0x209D, 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A, + 0xC29C, 0xC29C, 0x25C3, 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179, + 0xC2A1, 0xC2FE, 0x0A48, 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E, + 0xC343, 0xC343, 0x2155, 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2, + 0xC37C, 0xC37E, 0x44D7, 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7, + 0xC385, 0xC39A, 0x44DE, 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4, + 0xC3A1, 0xC3FE, 0x0AA6, 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123, + 0xC44A, 0xC44B, 0x4502, 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504, + 0xC454, 0xC454, 0x24C9, 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094, + 0xC459, 0xC45A, 0x450E, 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510, + 0xC463, 0xC463, 0x1E77, 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06, + 0xC478, 0xC479, 0x452A, 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C, + 0xC480, 0xC480, 0x4530, 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531, + 0xC491, 0xC491, 0x1EAD, 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8, + 0xC494, 0xC497, 0x4540, 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544, + 0xC49A, 0xC49A, 0x20C5, 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA, + 0xC49D, 0xC4A0, 0x4546, 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A, + 0xC544, 0xC544, 0x1FF0, 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6, + 0xC547, 0xC54A, 0x454F, 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE, + 0xC54D, 0xC551, 0x4553, 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558, + 0xC55F, 0xC55F, 0x2161, 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B, + 0xC564, 0xC564, 0x21D9, 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9, + 0xC567, 0xC57E, 0x4567, 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61, + 0xC594, 0xC59B, 0x4592, 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A, + 0xC59E, 0xC59E, 0x1F98, 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62, + 0xC640, 0xC640, 0x459D, 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E, + 0xC644, 0xC644, 0x1F88, 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8, + 0xC648, 0xC662, 0x45A2, 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD, + 0xC672, 0xC672, 0x2336, 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7, + 0xC6A1, 0xC6FE, 0x0BC0, 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB, + 0xC767, 0xC76E, 0x461E, 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626, + 0xC776, 0xC776, 0x1F7D, 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333, + 0xC77C, 0xC77E, 0x4630, 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E, + 0xC840, 0xC840, 0x4654, 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655, + 0xC84F, 0xC84F, 0x2334, 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1, + 0xC853, 0xC865, 0x4664, 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677, + 0xC86E, 0xC86E, 0x2349, 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B, + 0xC880, 0xC886, 0x468D, 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694, + 0xC892, 0xC892, 0x2347, 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193, + 0xC895, 0xC898, 0x469F, 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3, + 0xC89D, 0xC89D, 0x1F62, 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C, + 0xC940, 0xC94E, 0x46A9, 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348, + 0xC951, 0xC96D, 0x46B8, 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5, + 0xC970, 0xC970, 0x2345, 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12, + 0xC978, 0xC97E, 0x46DC, 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018, + 0xC990, 0xC990, 0x2335, 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C, + 0xC99D, 0xC9A0, 0x46FD, 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701, + 0xCA4E, 0xCA4E, 0x266F, 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351, + 0xCA57, 0xCA58, 0x4716, 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718, + 0xCA5C, 0xCA5C, 0x2338, 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B, + 0xCA62, 0xCA6D, 0x471E, 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A, + 0xCA72, 0xCA72, 0x234F, 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D, + 0xCA78, 0xCA7A, 0x4731, 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331, + 0xCA7D, 0xCA7D, 0x4734, 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735, + 0xCA81, 0xCA81, 0x233B, 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350, + 0xCA8A, 0xCA8D, 0x473D, 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6, + 0xCA90, 0xCA91, 0x4741, 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743, + 0xCA9A, 0xCA9A, 0x2355, 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38, + 0xCB40, 0xCB42, 0x4750, 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753, + 0xCB45, 0xCB45, 0x1F74, 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330, + 0xCB48, 0xCB4A, 0x4755, 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758, + 0xCB4E, 0xCB4E, 0x20DA, 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A, + 0xCB58, 0xCB5C, 0x4762, 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767, + 0xCB5F, 0xCB5F, 0x2107, 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F, + 0xCB6B, 0xCB7A, 0x4772, 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343, + 0xCB7D, 0xCB7E, 0x4782, 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212, + 0xCB88, 0xCB8D, 0x478B, 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791, + 0xCB92, 0xCB92, 0x2359, 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254, + 0xCB9D, 0xCB9D, 0x479D, 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E, + 0xCBA1, 0xCBFE, 0x0D96, 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357, + 0xCC42, 0xCC48, 0x47A0, 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042, + 0xCC4B, 0xCC4B, 0x2153, 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB, + 0xCC50, 0xCC5B, 0x47AA, 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6, + 0xCC60, 0xCC60, 0x2356, 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337, + 0xCC65, 0xCC6C, 0x47BC, 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4, + 0xCC79, 0xCC79, 0x2353, 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061, + 0xCC7E, 0xCC7E, 0x47D2, 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95, + 0xCC8F, 0xCC93, 0x47E1, 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6, + 0xCC96, 0xCC96, 0x1F42, 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8, + 0xCC9E, 0xCCA0, 0x47ED, 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0, + 0xCD80, 0xCD8F, 0x482F, 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F, + 0xCD98, 0xCD98, 0x25D7, 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52, + 0xCE40, 0xCE66, 0x484E, 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875, + 0xCE72, 0xCE72, 0x21B2, 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B, + 0xCE81, 0xCE81, 0x219E, 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC, + 0xCE88, 0xCE9A, 0x4891, 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4, + 0xCE9E, 0xCE9E, 0x2226, 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0, + 0xCF40, 0xCF4D, 0x48A8, 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6, + 0xCF55, 0xCF55, 0x227B, 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE, + 0xCF59, 0xCF5B, 0x48BE, 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1, + 0xCF6C, 0xCF6C, 0x25D5, 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B, + 0xCF74, 0xCF74, 0x48D6, 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7, + 0xCF78, 0xCF78, 0x1E89, 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9, + 0xCF7D, 0xCF7E, 0x48DC, 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211, + 0xCF82, 0xCF88, 0x48DF, 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6, + 0xCF8B, 0xCF92, 0x48E6, 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF, + 0xCF95, 0xCF9D, 0x48EE, 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7, + 0xCFA0, 0xCFA0, 0x25D8, 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8, + 0xD04D, 0xD04D, 0x1F29, 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B, + 0xD052, 0xD054, 0x4908, 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B, + 0xD05C, 0xD05C, 0x2297, 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690, + 0xD061, 0xD066, 0x4914, 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A, + 0xD06C, 0xD06C, 0x2198, 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88, + 0xD06F, 0xD07C, 0x491F, 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D, + 0xD080, 0xD0A0, 0x492E, 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F, + 0xD155, 0xD155, 0x25F1, 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C, + 0xD15A, 0xD160, 0x4967, 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC, + 0xD163, 0xD174, 0x496E, 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980, + 0xD17D, 0xD17D, 0x2676, 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988, + 0xD19D, 0xD19D, 0x1FE1, 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5, + 0xD1A1, 0xD1FE, 0x0FCA, 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7, + 0xD243, 0xD243, 0x22DD, 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD, + 0xD24E, 0xD25B, 0x49B2, 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0, + 0xD263, 0xD263, 0x25BC, 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6, + 0xD268, 0xD268, 0x25BF, 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187, + 0xD26E, 0xD26E, 0x49CD, 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE, + 0xD272, 0xD272, 0x1E7F, 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD, + 0xD276, 0xD27E, 0x49D2, 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96, + 0xD28B, 0xD28D, 0x49E5, 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8, + 0xD292, 0xD292, 0x2084, 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136, + 0xD296, 0xD296, 0x49ED, 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE, + 0xD2A0, 0xD2A0, 0x24BA, 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6, + 0xD344, 0xD344, 0x24BC, 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4, + 0xD349, 0xD349, 0x49FD, 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE, + 0xD34D, 0xD34D, 0x24BD, 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE, + 0xD351, 0xD354, 0x4A02, 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06, + 0xD358, 0xD358, 0x1FD2, 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD, + 0xD35C, 0xD35C, 0x4A0A, 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D, + 0xD35F, 0xD377, 0x4A0B, 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24, + 0xD37A, 0xD37A, 0x260A, 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94, + 0xD37D, 0xD37E, 0x4A26, 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF, + 0xD386, 0xD386, 0x1ECB, 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D, + 0xD38B, 0xD38B, 0x1F77, 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB, + 0xD38E, 0xD38E, 0x4A31, 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32, + 0xD391, 0xD391, 0x216F, 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0, + 0xD394, 0xD395, 0x4A34, 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36, + 0xD398, 0xD398, 0x22E2, 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37, + 0xD39B, 0xD39B, 0x1F78, 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2, + 0xD39F, 0xD39F, 0x4A3A, 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086, + 0xD440, 0xD440, 0x4A3B, 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C, + 0xD445, 0xD445, 0x1FD3, 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5, + 0xD448, 0xD44B, 0x4A40, 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44, + 0xD44F, 0xD44F, 0x211F, 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD, + 0xD454, 0xD455, 0x4A49, 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B, + 0xD458, 0xD458, 0x22E7, 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282, + 0xD45D, 0xD461, 0x4A4F, 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54, + 0xD467, 0xD467, 0x22E8, 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4, + 0xD46F, 0xD46F, 0x4A5E, 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F, + 0xD472, 0xD472, 0x22EB, 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9, + 0xD475, 0xD475, 0x20BD, 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA, + 0xD479, 0xD47A, 0x4A63, 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65, + 0xD47E, 0xD47E, 0x1E9E, 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6, + 0xD483, 0xD483, 0x21E7, 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69, + 0xD487, 0xD487, 0x2137, 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C, + 0xD48B, 0xD48B, 0x4A6D, 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2, + 0xD48E, 0xD48E, 0x1F37, 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E, + 0xD491, 0xD491, 0x22EF, 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10, + 0xD494, 0xD494, 0x21C8, 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1, + 0xD497, 0xD49B, 0x4A70, 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75, + 0xD49F, 0xD49F, 0x22EE, 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4, + 0xD540, 0xD542, 0x4A78, 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E, + 0xD545, 0xD545, 0x22EC, 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B, + 0xD54A, 0xD54A, 0x20FE, 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9, + 0xD550, 0xD550, 0x4A81, 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82, + 0xD554, 0xD554, 0x2236, 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7, + 0xD557, 0xD559, 0x4A85, 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88, + 0xD55C, 0xD55C, 0x1E82, 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89, + 0xD55F, 0xD55F, 0x21A4, 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8, + 0xD562, 0xD562, 0x2151, 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60, + 0xD565, 0xD567, 0x4A8B, 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E, + 0xD56C, 0xD56C, 0x2145, 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC, + 0xD56F, 0xD571, 0x4A92, 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95, + 0xD575, 0xD575, 0x1EF5, 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218, + 0xD579, 0xD57A, 0x4A99, 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B, + 0xD57E, 0xD57E, 0x2300, 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4, + 0xD582, 0xD583, 0x4A9E, 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0, + 0xD586, 0xD586, 0x22FD, 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA, + 0xD589, 0xD589, 0x4AA2, 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3, + 0xD58C, 0xD58C, 0x22FB, 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC, + 0xD58F, 0xD58F, 0x2027, 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060, + 0xD594, 0xD594, 0x22FF, 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE, + 0xD599, 0xD599, 0x1EC7, 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C, + 0xD59C, 0xD59E, 0x4AAC, 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF, + 0xD5A1, 0xD5FE, 0x1142, 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0, + 0xD642, 0xD642, 0x230A, 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1, + 0xD647, 0xD647, 0x2303, 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307, + 0xD64A, 0xD64A, 0x230B, 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F, + 0xD64E, 0xD64E, 0x4AB7, 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8, + 0xD652, 0xD652, 0x2302, 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D, + 0xD655, 0xD655, 0x4ABA, 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB, + 0xD658, 0xD658, 0x2308, 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC, + 0xD65B, 0xD65B, 0x4ABD, 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305, + 0xD65E, 0xD65E, 0x2197, 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171, + 0xD661, 0xD661, 0x2298, 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57, + 0xD666, 0xD668, 0x4AC2, 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5, + 0xD66B, 0xD66B, 0x2311, 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304, + 0xD670, 0xD670, 0x4AC9, 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35, + 0xD673, 0xD673, 0x4ACA, 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310, + 0xD676, 0xD676, 0x1FA3, 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6, + 0xD679, 0xD67B, 0x4ACC, 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF, + 0xD680, 0xD682, 0x4AD1, 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4, + 0xD686, 0xD686, 0x2312, 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313, + 0xD689, 0xD68D, 0x4AD6, 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB, + 0xD694, 0xD694, 0x1FBA, 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078, + 0xD69A, 0xD6A0, 0x4AE4, 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB, + 0xD743, 0xD743, 0x2288, 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316, + 0xD749, 0xD749, 0x1F6B, 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314, + 0xD751, 0xD751, 0x4AF8, 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315, + 0xD754, 0xD754, 0x2168, 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4, + 0xD757, 0xD763, 0x4AFA, 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07, + 0xD767, 0xD767, 0x2219, 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09, + 0xD76C, 0xD76C, 0x20D5, 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A, + 0xD770, 0xD774, 0x4B0E, 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13, + 0xD778, 0xD778, 0x1ED3, 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B, + 0xD783, 0xD783, 0x1E49, 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B, + 0xD788, 0xD78A, 0x4B21, 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8, + 0xD78D, 0xD78D, 0x4B24, 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319, + 0xD790, 0xD794, 0x4B25, 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A, + 0xD797, 0xD797, 0x2317, 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE, + 0xD840, 0xD84C, 0x4B34, 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41, + 0xD853, 0xD853, 0x1EFD, 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71, + 0xD890, 0xD890, 0x1E3B, 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81, + 0xD893, 0xD893, 0x1F0C, 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24, + 0xD896, 0xD899, 0x4B82, 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65, + 0xD89C, 0xD89C, 0x1EF0, 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30, + 0xD89F, 0xD89F, 0x2261, 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257, + 0xD940, 0xD940, 0x4B87, 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB, + 0xD943, 0xD943, 0x4B88, 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8, + 0xD946, 0xD946, 0x1F39, 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48, + 0xD949, 0xD949, 0x2070, 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A, + 0xD94C, 0xD94C, 0x24AC, 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176, + 0xD94F, 0xD94F, 0x24AD, 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B, + 0xD952, 0xD952, 0x1F45, 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B, + 0xD955, 0xD955, 0x202F, 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0, + 0xD958, 0xD958, 0x4B8C, 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F, + 0xD95B, 0xD95B, 0x4B8D, 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E, + 0xD963, 0xD963, 0x24B2, 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51, + 0xD966, 0xD966, 0x4B94, 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95, + 0xD96C, 0xD96C, 0x24B3, 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F, + 0xD96F, 0xD96F, 0x4B9A, 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B, + 0xD972, 0xD972, 0x20B4, 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB, + 0xD975, 0xD975, 0x2072, 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C, + 0xD978, 0xD978, 0x1F0A, 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D, + 0xD97C, 0xD97C, 0x2291, 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278, + 0xD980, 0xD980, 0x1ED4, 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3, + 0xD988, 0xD98C, 0x4BA5, 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7, + 0xD98F, 0xD98F, 0x1F28, 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7, + 0xD992, 0xD996, 0x4BAA, 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1, + 0xD999, 0xD99A, 0x4BAF, 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1, + 0xD99D, 0xD99D, 0x225B, 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2, + 0xD9A0, 0xD9A0, 0x2115, 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3, + 0xDA41, 0xDA41, 0x222A, 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4, + 0xDA48, 0xDA48, 0x213D, 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15, + 0xDA4E, 0xDA4E, 0x225C, 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14, + 0xDA74, 0xDA76, 0x4BE1, 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4, + 0xDA80, 0xDA84, 0x4BEB, 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0, + 0xDA8E, 0xDA8E, 0x25F8, 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313, + 0xDB40, 0xDB5F, 0x4C0A, 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A, + 0xDB78, 0xDB78, 0x2230, 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47, + 0xDB84, 0xDB84, 0x25FD, 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600, + 0xDB8C, 0xDB97, 0x4C51, 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D, + 0xDBA1, 0xDBFE, 0x1371, 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF, + 0xDC46, 0xDC4E, 0x4C6A, 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C, + 0xDC51, 0xDC51, 0x2602, 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D, + 0xDC54, 0xDC54, 0x4C74, 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE, + 0xDC57, 0xDC57, 0x2603, 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601, + 0xDC5E, 0xDC61, 0x4C7A, 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E, + 0xDC66, 0xDC66, 0x1EA3, 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81, + 0xDC6B, 0xDC6B, 0x2607, 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0, + 0xDC7D, 0xDC7E, 0x4C94, 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B, + 0xDC88, 0xDC88, 0x2267, 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6, + 0xDC8B, 0xDC8D, 0x4C9D, 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0, + 0xDC90, 0xDC90, 0x248C, 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D, + 0xDC98, 0xDC9A, 0x4CA7, 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA, + 0xDCA0, 0xDCA0, 0x2494, 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE, + 0xDD46, 0xDD46, 0x2493, 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E, + 0xDD4E, 0xDD52, 0x4CBA, 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491, + 0xDD55, 0xDD55, 0x2496, 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492, + 0xDD58, 0xDD58, 0x4CBF, 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0, + 0xDD5E, 0xDD5E, 0x1FB1, 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A, + 0xDD61, 0xDD61, 0x4CC5, 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6, + 0xDD64, 0xDD64, 0x2258, 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7, + 0xDD6D, 0xDD6D, 0x249B, 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09, + 0xDD70, 0xDD70, 0x20E6, 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026, + 0xDD77, 0xDD77, 0x249F, 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D, + 0xDD7B, 0xDD7E, 0x4CD4, 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B, + 0xDD82, 0xDD82, 0x249C, 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A, + 0xDD86, 0xDD86, 0x205B, 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70, + 0xDD8C, 0xDD8E, 0x4CDF, 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2, + 0xDD94, 0xDD94, 0x213B, 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07, + 0xDD98, 0xDD99, 0x4CE8, 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237, + 0xDD9C, 0xDD9D, 0x4CEA, 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC, + 0xDDA0, 0xDDA0, 0x21B3, 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245, + 0xDE41, 0xDE41, 0x24A1, 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8, + 0xDE45, 0xDE47, 0x4CEF, 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0, + 0xDE4A, 0xDE4E, 0x4CF2, 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7, + 0xDE5A, 0xDE5A, 0x1F46, 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380, + 0xDE5D, 0xDE5D, 0x2495, 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490, + 0xDE60, 0xDE6A, 0x4D03, 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E, + 0xDE6F, 0xDE6F, 0x1E9D, 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A, + 0xDE72, 0xDE72, 0x20AA, 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D, + 0xDE92, 0xDE92, 0x267B, 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2, + 0xDEA0, 0xDEA0, 0x4D3B, 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E, + 0xDF41, 0xDF41, 0x4D3C, 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D, + 0xDF4D, 0xDF4D, 0x1FBB, 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253, + 0xDF5D, 0xDF5D, 0x4D55, 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6, + 0xDF60, 0xDF60, 0x218E, 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC, + 0xDF65, 0xDF65, 0x4D59, 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A, + 0xDF68, 0xDF68, 0x224A, 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133, + 0xDF6E, 0xDF73, 0x4D5F, 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65, + 0xDF77, 0xDF77, 0x20CF, 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67, + 0xDF7A, 0xDF7A, 0x220F, 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029, + 0xDF7D, 0xDF7D, 0x4D69, 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55, + 0xDF81, 0xDF82, 0x4D6A, 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C, + 0xDF85, 0xDF85, 0x1E46, 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063, + 0xDF8A, 0xDF8A, 0x23F3, 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9, + 0xE040, 0xE04F, 0x4D86, 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96, + 0xE05D, 0xE05D, 0x2233, 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320, + 0xE06A, 0xE06B, 0x4DAD, 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF, + 0xE075, 0xE075, 0x22BC, 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C, + 0xE078, 0xE078, 0x4DB8, 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9, + 0xE080, 0xE086, 0x4DBE, 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5, + 0xE08D, 0xE08D, 0x2287, 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D, + 0xE090, 0xE090, 0x1EAB, 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D, + 0xE093, 0xE093, 0x4DCC, 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD, + 0xE097, 0xE097, 0x231B, 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547, + 0xE140, 0xE141, 0x4DD8, 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA, + 0xE164, 0xE164, 0x2255, 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F, + 0xE169, 0xE173, 0x4DFE, 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4, + 0xE176, 0xE17E, 0x4E09, 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B, + 0xE185, 0xE185, 0x21D8, 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA, + 0xE188, 0xE188, 0x4E17, 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18, + 0xE18C, 0xE18C, 0x2134, 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3, + 0xE191, 0xE191, 0x24F8, 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7, + 0xE194, 0xE194, 0x1EC8, 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C, + 0xE198, 0xE198, 0x2280, 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5, + 0xE19F, 0xE19F, 0x24FB, 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5, + 0xE240, 0xE240, 0x4E24, 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25, + 0xE243, 0xE243, 0x1EED, 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD, + 0xE250, 0xE250, 0x4E31, 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32, + 0xE253, 0xE253, 0x24FE, 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33, + 0xE25A, 0xE25A, 0x2508, 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38, + 0xE25E, 0xE25E, 0x2506, 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF, + 0xE263, 0xE263, 0x2090, 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD, + 0xE268, 0xE268, 0x1F25, 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503, + 0xE26B, 0xE26B, 0x2502, 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A, + 0xE26F, 0xE26F, 0x20A6, 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5, + 0xE279, 0xE27C, 0x4E4B, 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F, + 0xE280, 0xE280, 0x2507, 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505, + 0xE283, 0xE288, 0x4E50, 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56, + 0xE28B, 0xE28B, 0x2515, 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C, + 0xE28F, 0xE28F, 0x2031, 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B, + 0xE293, 0xE293, 0x250F, 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509, + 0xE296, 0xE297, 0x4E5B, 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234, + 0xE29A, 0xE29A, 0x2513, 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D, + 0xE2A0, 0xE2A0, 0x2501, 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61, + 0xE342, 0xE342, 0x2517, 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63, + 0xE347, 0xE347, 0x2518, 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56, + 0xE34C, 0xE34E, 0x4E69, 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C, + 0xE351, 0xE351, 0x20D3, 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A, + 0xE355, 0xE355, 0x20CE, 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510, + 0xE359, 0xE35B, 0x4E71, 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74, + 0xE360, 0xE360, 0x250A, 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511, + 0xE368, 0xE370, 0x4E7C, 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85, + 0xE373, 0xE373, 0x251E, 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86, + 0xE378, 0xE378, 0x252D, 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89, + 0xE37C, 0xE37C, 0x2532, 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B, + 0xE380, 0xE389, 0x4E8C, 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96, + 0xE38C, 0xE38C, 0x252C, 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528, + 0xE390, 0xE390, 0x4E99, 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A, + 0xE393, 0xE393, 0x252F, 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC, + 0xE396, 0xE398, 0x4E9C, 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F, + 0xE39C, 0xE39C, 0x2535, 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D, + 0xE39F, 0xE39F, 0x2526, 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661, + 0xE440, 0xE440, 0x2534, 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F, + 0xE443, 0xE443, 0x2531, 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3, + 0xE448, 0xE448, 0x2525, 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD, + 0xE44F, 0xE44F, 0x4EAB, 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC, + 0xE452, 0xE452, 0x2172, 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD, + 0xE458, 0xE458, 0x204F, 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543, + 0xE45B, 0xE45B, 0x4EB2, 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3, + 0xE45E, 0xE45E, 0x1E3C, 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529, + 0xE463, 0xE464, 0x4EB7, 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9, + 0xE468, 0xE468, 0x1EFF, 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F, + 0xE474, 0xE474, 0x4EC5, 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6, + 0xE479, 0xE479, 0x2523, 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A, + 0xE47C, 0xE47C, 0x2545, 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D, + 0xE480, 0xE480, 0x4ECA, 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB, + 0xE484, 0xE484, 0x2103, 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C, + 0xE487, 0xE487, 0x253B, 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD, + 0xE48D, 0xE48D, 0x2540, 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD, + 0xE490, 0xE492, 0x4ED2, 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5, + 0xE498, 0xE498, 0x254B, 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547, + 0xE49E, 0xE49F, 0x254F, 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF, + 0xE540, 0xE545, 0x4EDE, 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4, + 0xE548, 0xE548, 0x2546, 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C, + 0xE54C, 0xE54D, 0x4EE7, 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552, + 0xE550, 0xE550, 0x2530, 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9, + 0xE555, 0xE555, 0x2551, 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC, + 0xE558, 0xE558, 0x20D2, 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8, + 0xE55D, 0xE55D, 0x4EF0, 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1, + 0xE561, 0xE561, 0x21AB, 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D, + 0xE565, 0xE565, 0x1EA5, 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C, + 0xE569, 0xE569, 0x2080, 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D, + 0xE56D, 0xE56D, 0x4EF9, 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA, + 0xE575, 0xE575, 0x254A, 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00, + 0xE578, 0xE578, 0x254E, 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC, + 0xE57C, 0xE57C, 0x2554, 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05, + 0xE581, 0xE581, 0x1F3C, 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5, + 0xE584, 0xE589, 0x4F07, 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D, + 0xE58E, 0xE58E, 0x2268, 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6, + 0xE592, 0xE599, 0x4F12, 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553, + 0xE59C, 0xE59E, 0x4F1A, 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D, + 0xE5A1, 0xE5FE, 0x171D, 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E, + 0xE644, 0xE644, 0x2559, 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97, + 0xE64A, 0xE64A, 0x2555, 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D, + 0xE64F, 0xE651, 0x4F28, 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B, + 0xE656, 0xE656, 0x207C, 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A, + 0xE659, 0xE65A, 0x4F2F, 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31, + 0xE65E, 0xE65E, 0x1E34, 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E, + 0xE66A, 0xE66A, 0x4F3D, 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E, + 0xE675, 0xE675, 0x21A2, 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47, + 0xE679, 0xE679, 0x2563, 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49, + 0xE67C, 0xE67C, 0x252E, 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A, + 0xE680, 0xE680, 0x1F1B, 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283, + 0xE683, 0xE683, 0x4F4C, 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D, + 0xE687, 0xE687, 0x20A0, 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565, + 0xE68A, 0xE68B, 0x4F50, 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52, + 0xE693, 0xE693, 0x2562, 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C, + 0xE698, 0xE69A, 0x4F5B, 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020, + 0xE69D, 0xE69E, 0x4F5E, 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A, + 0xE6A1, 0xE6FE, 0x177B, 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E, + 0xE744, 0xE747, 0x4F63, 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C, + 0xE74A, 0xE74C, 0x4F67, 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B, + 0xE750, 0xE750, 0x1E6F, 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4, + 0xE753, 0xE753, 0x2567, 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B, + 0xE756, 0xE758, 0x4F6C, 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F, + 0xE766, 0xE766, 0x252B, 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571, + 0xE769, 0xE769, 0x4F7C, 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D, + 0xE774, 0xE774, 0x2522, 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533, + 0xE77D, 0xE77E, 0x4F8D, 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A, + 0xE783, 0xE783, 0x4F91, 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573, + 0xE786, 0xE786, 0x256F, 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293, + 0xE78B, 0xE78B, 0x2578, 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570, + 0xE790, 0xE791, 0x4F98, 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A, + 0xE798, 0xE799, 0x2541, 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F, + 0xE7A0, 0xE7A0, 0x201A, 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4, + 0xE843, 0xE843, 0x257A, 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7, + 0xE846, 0xE846, 0x2177, 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B, + 0xE84A, 0xE84A, 0x4FAA, 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB, + 0xE84F, 0xE84F, 0x257B, 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3, + 0xE855, 0xE859, 0x4FB2, 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7, + 0xE85C, 0xE85C, 0x2566, 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93, + 0xE863, 0xE863, 0x4FBD, 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE, + 0xE870, 0xE870, 0x2514, 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D, + 0xE874, 0xE874, 0x4FCB, 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC, + 0xE87C, 0xE87C, 0x2574, 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E, + 0xE881, 0xE881, 0x4FD4, 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5, + 0xE887, 0xE887, 0x209F, 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576, + 0xE88A, 0xE88B, 0x4FDA, 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF, + 0xE88E, 0xE88E, 0x261C, 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC, + 0xE8A1, 0xE8FE, 0x1837, 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75, + 0xE94D, 0xE953, 0x4FF9, 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000, + 0xE956, 0xE956, 0x23BF, 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001, + 0xE95A, 0xE95A, 0x23C0, 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45, + 0xE95E, 0xE95E, 0x5005, 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4, + 0xE961, 0xE961, 0x5006, 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104, + 0xE964, 0xE964, 0x5007, 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008, + 0xE967, 0xE967, 0x1F87, 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009, + 0xE96C, 0xE96C, 0x2269, 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43, + 0xE976, 0xE976, 0x5014, 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679, + 0xE979, 0xE979, 0x1EEB, 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35, + 0xE97D, 0xE97D, 0x208A, 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7, + 0xE981, 0xE981, 0x23C9, 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018, + 0xE987, 0xE987, 0x224F, 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB, + 0xE98C, 0xE98D, 0x501F, 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021, + 0xE990, 0xE990, 0x21F7, 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE, + 0xE993, 0xE993, 0x23CA, 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022, + 0xE998, 0xE998, 0x23D0, 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C, + 0xE99C, 0xE99C, 0x5027, 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028, + 0xE99F, 0xE99F, 0x1FEE, 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895, + 0xEA40, 0xEA40, 0x1FF8, 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3, + 0xEA45, 0xEA47, 0x502C, 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4, + 0xEA4A, 0xEA4A, 0x1E98, 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C, + 0xEA51, 0xEA51, 0x5034, 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035, + 0xEA55, 0xEA55, 0x1E71, 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037, + 0xEA59, 0xEA59, 0x23C5, 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A, + 0xEA81, 0xEA83, 0x505E, 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061, + 0xEA87, 0xEA87, 0x2284, 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C, + 0xEA8F, 0xEA8F, 0x5069, 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D, + 0xEA92, 0xEA95, 0x506A, 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E, + 0xEAA0, 0xEAA0, 0x1ED9, 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077, + 0xEB41, 0xEB41, 0x1FB2, 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252, + 0xEB46, 0xEB47, 0x507B, 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D, + 0xEB53, 0xEB53, 0x2157, 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF, + 0xEB56, 0xEB5A, 0x5088, 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D, + 0xEB5D, 0xEB5D, 0x203D, 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015, + 0xEB61, 0xEB61, 0x5090, 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091, + 0xEB6D, 0xEB6D, 0x2156, 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144, + 0xEB71, 0xEB71, 0x509D, 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257, + 0xEB74, 0xEB77, 0x509E, 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092, + 0xEB7A, 0xEB7E, 0x50A2, 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250, + 0xEB86, 0xEB89, 0x50AC, 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0, + 0xEBA1, 0xEBFE, 0x1951, 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8, + 0xEC47, 0xEC55, 0x50CC, 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB, + 0xEC5A, 0xEC5A, 0x260C, 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E, + 0xEC5D, 0xEC5F, 0x50DF, 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2, + 0xEC6E, 0xEC6E, 0x260B, 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3, + 0xEC77, 0xEC7E, 0x50F6, 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23, + 0xEC97, 0xECA0, 0x5114, 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E, + 0xED46, 0xED46, 0x2695, 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E, + 0xED59, 0xED5D, 0x5135, 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A, + 0xED61, 0xED61, 0x2692, 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F, + 0xED65, 0xED65, 0x513E, 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD, + 0xED68, 0xED6D, 0x513F, 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145, + 0xED74, 0xED74, 0x2465, 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467, + 0xED78, 0xED78, 0x514C, 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D, + 0xED80, 0xED90, 0x5152, 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163, + 0xED93, 0xED93, 0x2209, 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9, + 0xED96, 0xED96, 0x5164, 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146, + 0xED99, 0xED99, 0x25C5, 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165, + 0xED9C, 0xED9C, 0x245E, 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F, + 0xED9F, 0xED9F, 0x5167, 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D, + 0xEE40, 0xEE40, 0x25C7, 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A, + 0xEE43, 0xEE43, 0x1E2F, 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168, + 0xEE48, 0xEE48, 0x20BF, 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B, + 0xEE4D, 0xEE4D, 0x25C9, 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8, + 0xEE53, 0xEE54, 0x5172, 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174, + 0xEE57, 0xEE57, 0x25CB, 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D, + 0xEE5F, 0xEE60, 0x517B, 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D, + 0xEE68, 0xEE68, 0x25CC, 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183, + 0xEE6C, 0xEE6C, 0x20B9, 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181, + 0xEE6F, 0xEE76, 0x5186, 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E, + 0xEE7D, 0xEE7D, 0x2173, 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD, + 0xEE81, 0xEE84, 0x5193, 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6, + 0xEE87, 0xEE89, 0x5197, 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1, + 0xEE8C, 0xEE8C, 0x519A, 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B, + 0xEE90, 0xEE90, 0x2008, 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0, + 0xEE95, 0xEE96, 0x51A0, 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2, + 0xEE99, 0xEE99, 0x1F2A, 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72, + 0xEE9E, 0xEE9E, 0x25D3, 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B, + 0xEF40, 0xEF40, 0x21BE, 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044, + 0xEF43, 0xEF43, 0x51A8, 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3, + 0xEF46, 0xEF4B, 0x51A9, 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF, + 0xEF52, 0xEF53, 0x24CC, 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698, + 0xEF56, 0xEF56, 0x51B5, 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6, + 0xEF5A, 0xEF5A, 0x24CE, 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF, + 0xEF61, 0xEF67, 0x51BD, 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4, + 0xEF6A, 0xEF6A, 0x24D0, 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1, + 0xEF6D, 0xEF76, 0x51C6, 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0, + 0xEF7A, 0xEF7A, 0x239B, 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E, + 0xEF7D, 0xEF7E, 0x51D3, 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D, + 0xEF83, 0xEF84, 0x239F, 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1, + 0xEF87, 0xEF87, 0x51D8, 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9, + 0xEF8B, 0xEF8B, 0x221E, 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2, + 0xEF8E, 0xEF94, 0x51DC, 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36, + 0xEF97, 0xEF97, 0x2135, 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD, + 0xEF9D, 0xEF9D, 0x51E7, 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8, + 0xEFA1, 0xEFFE, 0x1AC9, 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3, + 0xF042, 0xF042, 0x2203, 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7, + 0xF045, 0xF046, 0x51EC, 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097, + 0xF049, 0xF049, 0x1EE4, 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238, + 0xF04F, 0xF050, 0x51F2, 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4, + 0xF054, 0xF054, 0x1F9A, 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3, + 0xF058, 0xF05D, 0x51F8, 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE, + 0xF068, 0xF068, 0x239C, 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6, + 0xF06D, 0xF070, 0x520A, 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E, + 0xF073, 0xF073, 0x2035, 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F, + 0xF078, 0xF078, 0x23A8, 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075, + 0xF07B, 0xF07C, 0x5213, 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB, + 0xF081, 0xF081, 0x1FEB, 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215, + 0xF087, 0xF087, 0x1F6A, 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219, + 0xF08B, 0xF08B, 0x2666, 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667, + 0xF091, 0xF091, 0x521F, 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220, + 0xF096, 0xF096, 0x23AD, 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27, + 0xF140, 0xF151, 0x522D, 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242, + 0xF154, 0xF154, 0x1F02, 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183, + 0xF158, 0xF158, 0x5241, 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9, + 0xF15B, 0xF166, 0x5242, 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E, + 0xF176, 0xF176, 0x22A5, 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA, + 0xF179, 0xF179, 0x525C, 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82, + 0xF17C, 0xF17D, 0x525D, 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404, + 0xF181, 0xF181, 0x525F, 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260, + 0xF184, 0xF184, 0x2184, 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403, + 0xF187, 0xF187, 0x5262, 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B, + 0xF18A, 0xF193, 0x5263, 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D, + 0xF198, 0xF198, 0x2067, 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85, + 0xF240, 0xF244, 0x5278, 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D, + 0xF247, 0xF247, 0x1E83, 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F, + 0xF24C, 0xF252, 0x5281, 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7, + 0xF255, 0xF255, 0x240D, 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412, + 0xF25D, 0xF25E, 0x528E, 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290, + 0xF271, 0xF271, 0x23F0, 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411, + 0xF274, 0xF274, 0x2414, 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170, + 0xF277, 0xF27B, 0x52A3, 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C, + 0xF27E, 0xF27E, 0x2415, 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066, + 0xF286, 0xF286, 0x52AD, 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413, + 0xF289, 0xF289, 0x2410, 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1, + 0xF28D, 0xF290, 0x52AE, 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2, + 0xF294, 0xF294, 0x2409, 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418, + 0xF297, 0xF29B, 0x52B5, 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA, + 0xF29E, 0xF29E, 0x21FC, 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3, + 0xF340, 0xF340, 0x1FC1, 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD, + 0xF345, 0xF345, 0x229C, 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E, + 0xF349, 0xF349, 0x52C2, 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419, + 0xF34C, 0xF34F, 0x52C3, 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7, + 0xF361, 0xF361, 0x1E29, 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661, + 0xF375, 0xF375, 0x52E9, 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174, + 0xF378, 0xF378, 0x2663, 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA, + 0xF380, 0xF38B, 0x52EF, 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB, + 0xF3A0, 0xF3A0, 0x214C, 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E, + 0xF445, 0xF445, 0x267A, 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0, + 0xF451, 0xF456, 0x531D, 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323, + 0xF459, 0xF459, 0x1ED0, 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096, + 0xF45C, 0xF45C, 0x5325, 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326, + 0xF462, 0xF462, 0x23C8, 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E, + 0xF465, 0xF474, 0x532B, 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B, + 0xF47C, 0xF47C, 0x2664, 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239, + 0xF480, 0xF493, 0x5342, 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356, + 0xF499, 0xF499, 0x261F, 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E, + 0xF49D, 0xF4A0, 0x535C, 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360, + 0xF545, 0xF545, 0x2620, 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621, + 0xF548, 0xF551, 0x5366, 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370, + 0xF554, 0xF554, 0x2627, 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625, + 0xF557, 0xF55D, 0x5371, 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378, + 0xF561, 0xF561, 0x262E, 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A, + 0xF56E, 0xF56E, 0x262A, 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385, + 0xF571, 0xF571, 0x2628, 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386, + 0xF580, 0xF584, 0x5392, 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630, + 0xF587, 0xF58B, 0x5397, 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C, + 0xF58E, 0xF58E, 0x200D, 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D, + 0xF599, 0xF599, 0x2645, 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A, + 0xF59C, 0xF59F, 0x53A7, 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD, + 0xF640, 0xF640, 0x53AB, 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC, + 0xF645, 0xF645, 0x263D, 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF, + 0xF648, 0xF648, 0x263E, 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F, + 0xF64C, 0xF64C, 0x1FC0, 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B, + 0xF650, 0xF653, 0x53B3, 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7, + 0xF658, 0xF658, 0x2644, 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639, + 0xF662, 0xF662, 0x53C2, 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3, + 0xF66C, 0xF66C, 0x2647, 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB, + 0xF671, 0xF671, 0x2649, 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648, + 0xF675, 0xF675, 0x53D0, 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108, + 0xF678, 0xF67E, 0x53D1, 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D, + 0xF686, 0xF687, 0x53DD, 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF, + 0xF68A, 0xF68A, 0x2651, 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650, + 0xF68E, 0xF68E, 0x2652, 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F, + 0xF693, 0xF695, 0x53E5, 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E, + 0xF698, 0xF698, 0x2653, 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657, + 0xF69B, 0xF69B, 0x53E9, 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA, + 0xF69E, 0xF69E, 0x2633, 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656, + 0xF6A1, 0xF6FE, 0x1D5B, 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654, + 0xF743, 0xF748, 0x53EE, 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4, + 0xF74C, 0xF74C, 0x2655, 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6, + 0xF756, 0xF756, 0x265B, 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A, + 0xF759, 0xF759, 0x53FF, 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E, + 0xF75C, 0xF75C, 0x262F, 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646, + 0xF762, 0xF762, 0x5404, 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405, + 0xF76B, 0xF76B, 0x265C, 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C, + 0xF772, 0xF77B, 0x5411, 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B, + 0xF77E, 0xF77E, 0x2631, 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9, + 0xF840, 0xF841, 0x543D, 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F, + 0xF846, 0xF846, 0x2580, 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC, + 0xF84A, 0xF84F, 0x5444, 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B, + 0xF852, 0xF852, 0x544A, 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B, + 0xF863, 0xF863, 0x2583, 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A, + 0xF866, 0xF866, 0x21EE, 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182, + 0xF873, 0xF877, 0x5466, 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B, + 0xF87A, 0xF87A, 0x2587, 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588, + 0xF87D, 0xF87E, 0x546D, 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584, + 0xF882, 0xF883, 0x5470, 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472, + 0xF886, 0xF886, 0x21EF, 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A, + 0xF88E, 0xF88E, 0x258C, 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47, + 0xF89A, 0xF89C, 0x5483, 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486, + 0xF8A0, 0xF8A0, 0x258D, 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0, + 0xF94F, 0xF94F, 0x2592, 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496, + 0xF959, 0xF959, 0x2594, 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E, + 0xF95D, 0xF95D, 0x2591, 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0, + 0xF967, 0xF967, 0x2597, 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6, + 0xF96A, 0xF96B, 0x54A9, 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB, + 0xF96F, 0xF96F, 0x20F6, 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC, + 0xF985, 0xF985, 0x2585, 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599, + 0xF988, 0xF990, 0x54C2, 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB, + 0xF996, 0xF996, 0x259A, 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B, + 0xF999, 0xF9A0, 0x54D0, 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D, + 0xFA43, 0xFA45, 0x54DA, 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD, + 0xFA4C, 0xFA4C, 0x234C, 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44, + 0xFA52, 0xFA57, 0x54E6, 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0, + 0xFA5A, 0xFA5C, 0x54EC, 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF, + 0xFA5F, 0xFA5F, 0x259F, 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C, + 0xFA62, 0xFA6F, 0x54F1, 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF, + 0xFA74, 0xFA74, 0x20AE, 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B, + 0xFA77, 0xFA77, 0x25A3, 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A, + 0xFA83, 0xFA83, 0x2589, 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D, + 0xFA8D, 0xFA8D, 0x25A4, 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6, + 0xFA91, 0xFA91, 0x2593, 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7, + 0xFA97, 0xFA97, 0x2222, 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B, + 0xFB40, 0xFB48, 0x5523, 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C, + 0xFB52, 0xFB52, 0x2586, 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1, + 0xFB58, 0xFB58, 0x25AA, 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590, + 0xFB5B, 0xFB5B, 0x258E, 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688, + 0xFB76, 0xFB78, 0x5552, 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB, + 0xFB7B, 0xFB7B, 0x5555, 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4, + 0xFB7E, 0xFB7E, 0x5556, 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F, + 0xFB91, 0xFB9B, 0x5567, 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572, + 0xFB9F, 0xFB9F, 0x25F7, 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575, + 0xFC44, 0xFC44, 0x2696, 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F, + 0xFC4A, 0xFC59, 0x557D, 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D, + 0xFC63, 0xFC63, 0x1EC1, 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3, + 0xFC69, 0xFC6E, 0x5599, 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F, + 0xFC71, 0xFC71, 0x268A, 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669, + 0xFC75, 0xFC76, 0x55A2, 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4, + 0xFC80, 0xFC82, 0x55AA, 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD, + 0xFC8A, 0xFC8A, 0x2673, 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9, + 0xFD52, 0xFD52, 0x20C6, 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB, + 0xFD57, 0xFD57, 0x24D3, 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE, + 0xFD5A, 0xFD5A, 0x260F, 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611, + 0xFD60, 0xFD61, 0x55E3, 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5, + 0xFD65, 0xFD65, 0x2610, 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030, + 0xFD68, 0xFD68, 0x55E7, 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8, + 0xFD6C, 0xFD6C, 0x2614, 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616, + 0xFD71, 0xFD71, 0x55ED, 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE, + 0xFD78, 0xFD78, 0x20F2, 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617, + 0xFD7E, 0xFD7E, 0x55F7, 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037, + 0xFD89, 0xFD8A, 0x5600, 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602, + 0xFD8F, 0xFD8F, 0x1F22, 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605, + 0xFD94, 0xFD94, 0x1F34, 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02, + 0xFD9E, 0xFD9E, 0x40D3, 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083, + 0xFE40, 0xFE40, 0x1259, 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E, +}; + +const FX_WORD g_FXCMAP_GBK2K_H_5_DWord[1017 * 4] = { + 0x8130, 0x8436, 0x8436, 0x5752, 0x8138, 0xFD38, 0xFD39, 0x579C, 0x8138, + 0xFE30, 0xFE39, 0x579E, 0x8139, 0x8130, 0x8137, 0x57A8, 0x8139, 0x8139, + 0x8139, 0x57B0, 0x8139, 0x8230, 0x8239, 0x57B1, 0x8139, 0x8330, 0x8339, + 0x57BB, 0x8139, 0x8430, 0x8439, 0x57C5, 0x8139, 0x8530, 0x8539, 0x57CF, + 0x8139, 0x8630, 0x8639, 0x57D9, 0x8139, 0x8730, 0x8739, 0x57E3, 0x8139, + 0x8830, 0x8839, 0x57ED, 0x8139, 0x8930, 0x8939, 0x57F7, 0x8139, 0x8B32, + 0x8B32, 0x1042, 0x8139, 0x8B33, 0x8B33, 0x1263, 0x8139, 0x8B34, 0x8B34, + 0x1272, 0x8139, 0x8B35, 0x8B35, 0x1265, 0x8139, 0x8B36, 0x8B36, 0x1059, + 0x8139, 0x8B37, 0x8B37, 0x2793, 0x8139, 0x8B38, 0x8B38, 0x063D, 0x8139, + 0x8B39, 0x8B39, 0x1303, 0x8139, 0x8C30, 0x8C30, 0x0CA6, 0x8139, 0x8C31, + 0x8C31, 0x0638, 0x8139, 0x8C32, 0x8C32, 0x0CC6, 0x8139, 0x8C33, 0x8C33, + 0x03D6, 0x8139, 0x8C34, 0x8C34, 0x129D, 0x8139, 0x8C35, 0x8C35, 0x1314, + 0x8139, 0x8C36, 0x8C36, 0x130F, 0x8139, 0x8C37, 0x8C37, 0x082B, 0x8139, + 0x8C38, 0x8C38, 0x1399, 0x8139, 0x8C39, 0x8C39, 0x0597, 0x8139, 0x8D30, + 0x8D30, 0x09EF, 0x8139, 0x8D31, 0x8D31, 0x12FC, 0x8139, 0x8D32, 0x8D32, + 0x1266, 0x8139, 0x8D33, 0x8D33, 0x1284, 0x8139, 0x8D34, 0x8D34, 0x2A1A, + 0x8139, 0x8D35, 0x8D35, 0x0D45, 0x8139, 0x8D36, 0x8D36, 0x047E, 0x8139, + 0x8D37, 0x8D37, 0x1352, 0x8139, 0x8D38, 0x8D38, 0x04CC, 0x8139, 0x8D39, + 0x8D39, 0x139C, 0x8139, 0x8E30, 0x8E30, 0x10BB, 0x8139, 0x8E31, 0x8E31, + 0x0967, 0x8139, 0x8E32, 0x8E32, 0x1593, 0x8139, 0x8E33, 0x8E33, 0x0E72, + 0x8139, 0x8E34, 0x8E34, 0x0D56, 0x8139, 0x8E35, 0x8E35, 0x161C, 0x8139, + 0x8E36, 0x8E36, 0x2D2D, 0x8139, 0x8E37, 0x8E37, 0x0F13, 0x8139, 0x8E38, + 0x8E38, 0x0576, 0x8139, 0x8E39, 0x8E39, 0x0B6F, 0x8139, 0x8F30, 0x8F30, + 0x1230, 0x8139, 0x8F31, 0x8F31, 0x172E, 0x8139, 0x8F32, 0x8F32, 0x056A, + 0x8139, 0x8F33, 0x8F33, 0x0F6C, 0x8139, 0x8F34, 0x8F34, 0x14B6, 0x8139, + 0x8F35, 0x8F35, 0x0D43, 0x8139, 0x8F36, 0x8F36, 0x1774, 0x8139, 0x8F37, + 0x8F37, 0x0CF6, 0x8139, 0x8F38, 0x8F38, 0x1815, 0x8139, 0x8F39, 0x8F39, + 0x06FD, 0x8139, 0x9030, 0x9030, 0x082D, 0x8139, 0x9031, 0x9031, 0x08BE, + 0x8139, 0x9032, 0x9032, 0x06C4, 0x8139, 0x9033, 0x9033, 0x1813, 0x8139, + 0x9034, 0x9034, 0x073C, 0x8139, 0x9035, 0x9035, 0x1398, 0x8139, 0x9036, + 0x9036, 0x14AD, 0x8139, 0x9037, 0x9037, 0x14F6, 0x8139, 0x9038, 0x9038, + 0x0706, 0x8139, 0x9039, 0x9039, 0x1762, 0x8139, 0x9130, 0x9130, 0x15EE, + 0x8139, 0x9131, 0x9131, 0x15E0, 0x8139, 0x9132, 0x9132, 0x0F8F, 0x8139, + 0x9133, 0x9133, 0x06E5, 0x8139, 0x9134, 0x9134, 0x3292, 0x8139, 0x9135, + 0x9135, 0x0D6D, 0x8139, 0x9136, 0x9136, 0x11A6, 0x8139, 0x9137, 0x9137, + 0x1909, 0x8139, 0x9138, 0x9138, 0x0ED3, 0x8139, 0x9139, 0x9139, 0x05F6, + 0x8139, 0x9230, 0x9230, 0x08C0, 0x8139, 0x9231, 0x9231, 0x065A, 0x8139, + 0x9232, 0x9232, 0x0EED, 0x8139, 0x9233, 0x9233, 0x0CB0, 0x8139, 0x9234, + 0x9234, 0x10FE, 0x8139, 0x9235, 0x9235, 0x1105, 0x8139, 0x9236, 0x9236, + 0x0B21, 0x8139, 0x9237, 0x9237, 0x0C34, 0x8139, 0x9238, 0x9238, 0x11B8, + 0x8139, 0x9239, 0x9239, 0x0578, 0x8139, 0x9330, 0x9330, 0x19BD, 0x8139, + 0x9331, 0x9331, 0x0EF2, 0x8139, 0x9332, 0x9332, 0x0431, 0x8139, 0x9333, + 0x9333, 0x0AB0, 0x8139, 0x9334, 0x9334, 0x0D66, 0x8139, 0x9335, 0x9335, + 0x0C17, 0x8139, 0x9336, 0x9336, 0x0DA3, 0x8139, 0x9337, 0x9337, 0x0805, + 0x8139, 0x9338, 0x9338, 0x1203, 0x8139, 0x9339, 0x9339, 0x06B3, 0x8139, + 0x9430, 0x9430, 0x1269, 0x8139, 0x9431, 0x9431, 0x169D, 0x8139, 0x9432, + 0x9432, 0x0BCB, 0x8139, 0x9433, 0x9433, 0x0FE9, 0x8139, 0x9434, 0x9434, + 0x0B64, 0x8139, 0x9435, 0x9435, 0x0C89, 0x8139, 0x9436, 0x9436, 0x0FC9, + 0x8139, 0x9437, 0x9437, 0x10D6, 0x8139, 0x9438, 0x9438, 0x0728, 0x8139, + 0x9439, 0x9439, 0x0E90, 0x8139, 0x9530, 0x9530, 0x06C5, 0x8139, 0x9531, + 0x9531, 0x0D33, 0x8139, 0x9532, 0x9532, 0x10A8, 0x8139, 0x9533, 0x9533, + 0x0E42, 0x8139, 0x9534, 0x9534, 0x1BC6, 0x8139, 0x9535, 0x9535, 0x1B60, + 0x8139, 0x9536, 0x9536, 0x3EBF, 0x8139, 0x9537, 0x9537, 0x03E2, 0x8139, + 0x9538, 0x9538, 0x0BC3, 0x8139, 0x9539, 0x9539, 0x0AF8, 0x8139, 0x9630, + 0x9630, 0x0B22, 0x8139, 0x9631, 0x9631, 0x0AB1, 0x8139, 0x9632, 0x9632, + 0x0D4F, 0x8139, 0x9633, 0x9633, 0x0D46, 0x8139, 0x9634, 0x9634, 0x0D55, + 0x8139, 0x9635, 0x9635, 0x40CB, 0x8139, 0x9636, 0x9636, 0x0783, 0x8139, + 0x9637, 0x9637, 0x0FD1, 0x8139, 0x9638, 0x9638, 0x09EB, 0x8139, 0x9639, + 0x9639, 0x11F0, 0x8139, 0x9730, 0x9730, 0x0ADC, 0x8139, 0x9731, 0x9731, + 0x1CE7, 0x8139, 0x9732, 0x9732, 0x1C5E, 0x8139, 0x9733, 0x9733, 0x0EA9, + 0x8139, 0x9734, 0x9734, 0x101B, 0x8139, 0x9735, 0x9735, 0x10D5, 0x8139, + 0x9736, 0x9736, 0x09BA, 0x8139, 0x9737, 0x9737, 0x0637, 0x8139, 0x9738, + 0x9738, 0x1BCB, 0x8139, 0x9739, 0x9739, 0x0639, 0x8139, 0x9830, 0x9830, + 0x1A1E, 0x8139, 0x9831, 0x9831, 0x0CBD, 0x8139, 0x9832, 0x9832, 0x04E1, + 0x8139, 0x9833, 0x9833, 0x1231, 0x8139, 0x9834, 0x9834, 0x11C0, 0x8139, + 0x9835, 0x9835, 0x08F9, 0x8139, 0x9836, 0x9836, 0x0D19, 0x8139, 0x9837, + 0x9837, 0x1618, 0x8139, 0x9838, 0x9838, 0x11DA, 0x8139, 0x9839, 0x9839, + 0x1CDC, 0x8139, 0x9930, 0x9930, 0x0CE4, 0x8139, 0x9931, 0x9931, 0x45A2, + 0x8139, 0x9932, 0x9932, 0x1BF0, 0x8139, 0x9933, 0x9933, 0x050B, 0x8139, + 0x9934, 0x9934, 0x0FD3, 0x8139, 0x9935, 0x9935, 0x0F9B, 0x8139, 0x9936, + 0x9936, 0x1049, 0x8139, 0x9937, 0x9937, 0x49DC, 0x8139, 0x9938, 0x9938, + 0x1F96, 0x8139, 0x9939, 0x9939, 0x0898, 0x8139, 0x9A30, 0x9A30, 0x0FFD, + 0x8139, 0x9A31, 0x9A31, 0x0721, 0x8139, 0x9A32, 0x9A32, 0x05F8, 0x8139, + 0x9A33, 0x9A33, 0x1D15, 0x8139, 0x9A34, 0x9A34, 0x1D50, 0x8139, 0x9A35, + 0x9A35, 0x1E3B, 0x8139, 0x9A36, 0x9A36, 0x0505, 0x8139, 0x9A37, 0x9A37, + 0x123C, 0x8139, 0x9A38, 0x9A38, 0x1240, 0x8139, 0x9A39, 0x9A39, 0x0D26, + 0x8139, 0x9B30, 0x9B30, 0x1E7B, 0x8139, 0x9B31, 0x9B31, 0x0F8C, 0x8139, + 0x9B32, 0x9B32, 0x04E2, 0x8139, 0x9B33, 0x9B33, 0x4D13, 0x8139, 0x9B34, + 0x9B34, 0x105F, 0x8139, 0x9B35, 0x9B35, 0x10B4, 0x8139, 0x9B36, 0x9B36, + 0x4E18, 0x8139, 0x9B37, 0x9B37, 0x09DA, 0x8139, 0x9B38, 0x9B38, 0x08C1, + 0x8139, 0x9B39, 0x9B39, 0x1E75, 0x8139, 0x9C30, 0x9C30, 0x207D, 0x8139, + 0x9C31, 0x9C31, 0x06B2, 0x8139, 0x9C32, 0x9C32, 0x09EE, 0x8139, 0x9C33, + 0x9C33, 0x1D79, 0x8139, 0x9C34, 0x9C34, 0x10CF, 0x8139, 0x9C35, 0x9C35, + 0x50EA, 0x8139, 0x9C36, 0x9C36, 0x0664, 0x8139, 0x9C37, 0x9C37, 0x0AEB, + 0x8139, 0x9C38, 0x9C38, 0x06EA, 0x8139, 0x9C39, 0x9C39, 0x218D, 0x8139, + 0x9D30, 0x9D30, 0x08F1, 0x8139, 0x9D31, 0x9D31, 0x107B, 0x8139, 0x9D32, + 0x9D32, 0x2209, 0x8139, 0x9D33, 0x9D33, 0x1F00, 0x8139, 0x9D34, 0x9D34, + 0x1EF4, 0x8139, 0x9D35, 0x9D35, 0x0D4A, 0x8139, 0x9D36, 0x9D36, 0x0D6E, + 0x8139, 0x9D37, 0x9D37, 0x0F50, 0x8139, 0x9D38, 0x9D38, 0x206D, 0x8139, + 0x9D39, 0x9D39, 0x0720, 0x8139, 0x9E30, 0x9E30, 0x06DA, 0x8139, 0x9E31, + 0x9E31, 0x1DEC, 0x8139, 0x9E32, 0x9E32, 0x1ED0, 0x8139, 0x9E33, 0x9E33, + 0x139B, 0x8139, 0x9E34, 0x9E34, 0x1260, 0x8139, 0x9E35, 0x9E35, 0x0746, + 0x8139, 0x9E36, 0x9E36, 0x2239, 0x8139, 0x9E37, 0x9E37, 0x209C, 0x8139, + 0x9E38, 0x9E38, 0x2688, 0x8139, 0x9E39, 0x9E39, 0x0A60, 0x8139, 0x9F30, + 0x9F30, 0x2071, 0x8139, 0x9F31, 0x9F31, 0x0A90, 0x8139, 0x9F32, 0x9F32, + 0x5586, 0x8139, 0x9F33, 0x9F33, 0x0D89, 0x8139, 0x9F34, 0x9F34, 0x0791, + 0x8139, 0x9F35, 0x9F35, 0x1A55, 0x8139, 0x9F36, 0x9F36, 0x2618, 0x8139, + 0x9F37, 0x9F37, 0x05E5, 0x8139, 0x9F38, 0x9F38, 0x071D, 0x8139, 0x9F39, + 0x9F39, 0x0D8A, 0x8139, 0xA030, 0xA030, 0x0430, 0x8139, 0xA031, 0xA031, + 0x20C6, 0x8139, 0xA032, 0xA032, 0x1E86, 0x8139, 0xA033, 0xA033, 0x2037, + 0x8139, 0xA034, 0xA034, 0x1F34, 0x8139, 0xA035, 0xA035, 0x12F3, 0x8139, + 0xA533, 0xA535, 0x577B, 0x8139, 0xA538, 0xA539, 0x577E, 0x8139, 0xA630, + 0xA630, 0x5780, 0x8139, 0xA634, 0xA634, 0x5755, 0x8139, 0xA636, 0xA636, + 0x5767, 0x8139, 0xA735, 0xA735, 0x5776, 0x8139, 0xA736, 0xA736, 0x5778, + 0x8139, 0xA737, 0xA737, 0x5777, 0x8139, 0xA738, 0xA738, 0x5779, 0x8139, + 0xA836, 0xA838, 0x5781, 0x8139, 0xB434, 0xB439, 0x5784, 0x8139, 0xB530, + 0xB539, 0x578A, 0x8139, 0xB630, 0xB637, 0x5794, 0x8139, 0xEE39, 0xEE39, + 0x5801, 0x8139, 0xEF30, 0xEF39, 0x5802, 0x8139, 0xF030, 0xF039, 0x580C, + 0x8139, 0xF130, 0xF139, 0x5816, 0x8139, 0xF230, 0xF239, 0x5820, 0x8139, + 0xF330, 0xF339, 0x582A, 0x8139, 0xF430, 0xF439, 0x5834, 0x8139, 0xF530, + 0xF539, 0x583E, 0x8139, 0xF630, 0xF639, 0x5848, 0x8139, 0xF730, 0xF739, + 0x5852, 0x8139, 0xF830, 0xF839, 0x585C, 0x8139, 0xF930, 0xF939, 0x5866, + 0x8139, 0xFA30, 0xFA39, 0x5870, 0x8139, 0xFB30, 0xFB39, 0x587A, 0x8139, + 0xFC30, 0xFC39, 0x5884, 0x8139, 0xFD30, 0xFD39, 0x588E, 0x8139, 0xFE30, + 0xFE39, 0x5898, 0x8230, 0x8130, 0x8139, 0x58A2, 0x8230, 0x8230, 0x8239, + 0x58AC, 0x8230, 0x8330, 0x8339, 0x58B6, 0x8230, 0x8430, 0x8439, 0x58C0, + 0x8230, 0x8530, 0x8539, 0x58CA, 0x8230, 0x8630, 0x8639, 0x58D4, 0x8230, + 0x8730, 0x8739, 0x58DE, 0x8230, 0x8830, 0x8839, 0x58E8, 0x8230, 0x8930, + 0x8939, 0x58F2, 0x8230, 0x8A30, 0x8A39, 0x58FC, 0x8230, 0x8B30, 0x8B39, + 0x5906, 0x8230, 0x8C30, 0x8C39, 0x5910, 0x8230, 0x8D30, 0x8D39, 0x591A, + 0x8230, 0x8E30, 0x8E39, 0x5924, 0x8230, 0x8F30, 0x8F39, 0x592E, 0x8230, + 0x9030, 0x9039, 0x5938, 0x8230, 0x9130, 0x9139, 0x5942, 0x8230, 0x9230, + 0x9239, 0x594C, 0x8230, 0x9330, 0x9339, 0x5956, 0x8230, 0x9430, 0x9439, + 0x5960, 0x8230, 0x9530, 0x9539, 0x596A, 0x8230, 0x9630, 0x9639, 0x5974, + 0x8230, 0x9730, 0x9739, 0x597E, 0x8230, 0x9830, 0x9839, 0x5988, 0x8230, + 0x9930, 0x9939, 0x5992, 0x8230, 0x9A30, 0x9A39, 0x599C, 0x8230, 0x9B30, + 0x9B39, 0x59A6, 0x8230, 0x9C30, 0x9C39, 0x59B0, 0x8230, 0x9D30, 0x9D39, + 0x59BA, 0x8230, 0x9E30, 0x9E39, 0x59C4, 0x8230, 0x9F30, 0x9F39, 0x59CE, + 0x8230, 0xA030, 0xA039, 0x59D8, 0x8230, 0xA130, 0xA139, 0x59E2, 0x8230, + 0xA230, 0xA239, 0x59EC, 0x8230, 0xA330, 0xA339, 0x59F6, 0x8230, 0xA430, + 0xA439, 0x5A00, 0x8230, 0xA530, 0xA539, 0x5A0A, 0x8230, 0xA630, 0xA639, + 0x5A14, 0x8230, 0xA730, 0xA739, 0x5A1E, 0x8230, 0xA830, 0xA839, 0x5A28, + 0x8230, 0xA930, 0xA939, 0x5A32, 0x8230, 0xAA30, 0xAA39, 0x5A3C, 0x8230, + 0xAB30, 0xAB39, 0x5A46, 0x8230, 0xAC30, 0xAC39, 0x5A50, 0x8230, 0xAD30, + 0xAD39, 0x5A5A, 0x8230, 0xAE30, 0xAE39, 0x5A64, 0x8230, 0xAF30, 0xAF39, + 0x5A6E, 0x8230, 0xB030, 0xB039, 0x5A78, 0x8230, 0xB130, 0xB139, 0x5A82, + 0x8230, 0xB230, 0xB239, 0x5A8C, 0x8230, 0xB330, 0xB339, 0x5A96, 0x8230, + 0xB430, 0xB439, 0x5AA0, 0x8230, 0xB530, 0xB539, 0x5AAA, 0x8230, 0xB630, + 0xB639, 0x5AB4, 0x8230, 0xB730, 0xB739, 0x5ABE, 0x8230, 0xB830, 0xB839, + 0x5AC8, 0x8230, 0xB930, 0xB939, 0x5AD2, 0x8230, 0xBA30, 0xBA39, 0x5ADC, + 0x8230, 0xBB30, 0xBB39, 0x5AE6, 0x8230, 0xBC30, 0xBC39, 0x5AF0, 0x8230, + 0xBD30, 0xBD39, 0x5AFA, 0x8230, 0xBE30, 0xBE39, 0x5B04, 0x8230, 0xBF30, + 0xBF39, 0x5B0E, 0x8230, 0xC030, 0xC039, 0x5B18, 0x8230, 0xC130, 0xC139, + 0x5B22, 0x8230, 0xC230, 0xC239, 0x5B2C, 0x8230, 0xC330, 0xC339, 0x5B36, + 0x8230, 0xC430, 0xC439, 0x5B40, 0x8230, 0xC530, 0xC539, 0x5B4A, 0x8230, + 0xC630, 0xC639, 0x5B54, 0x8230, 0xC730, 0xC739, 0x5B5E, 0x8230, 0xC830, + 0xC839, 0x5B68, 0x8230, 0xC930, 0xC939, 0x5B72, 0x8230, 0xCA30, 0xCA39, + 0x5B7C, 0x8230, 0xCB30, 0xCB39, 0x5B86, 0x8230, 0xCC30, 0xCC39, 0x5B90, + 0x8230, 0xCD30, 0xCD39, 0x5B9A, 0x8230, 0xCE30, 0xCE39, 0x5BA4, 0x8230, + 0xCF30, 0xCF39, 0x5BAE, 0x8230, 0xD030, 0xD039, 0x5BB8, 0x8230, 0xD130, + 0xD139, 0x5BC2, 0x8230, 0xD230, 0xD239, 0x5BCC, 0x8230, 0xD330, 0xD339, + 0x5BD6, 0x8230, 0xD430, 0xD439, 0x5BE0, 0x8230, 0xD530, 0xD539, 0x5BEA, + 0x8230, 0xD630, 0xD639, 0x5BF4, 0x8230, 0xD730, 0xD739, 0x5BFE, 0x8230, + 0xD830, 0xD839, 0x5C08, 0x8230, 0xD930, 0xD939, 0x5C12, 0x8230, 0xDA30, + 0xDA39, 0x5C1C, 0x8230, 0xDB30, 0xDB39, 0x5C26, 0x8230, 0xDC30, 0xDC39, + 0x5C30, 0x8230, 0xDD30, 0xDD39, 0x5C3A, 0x8230, 0xDE30, 0xDE39, 0x5C44, + 0x8230, 0xDF30, 0xDF39, 0x5C4E, 0x8230, 0xE030, 0xE039, 0x5C58, 0x8230, + 0xE130, 0xE139, 0x5C62, 0x8230, 0xE230, 0xE239, 0x5C6C, 0x8230, 0xE330, + 0xE339, 0x5C76, 0x8230, 0xE430, 0xE439, 0x5C80, 0x8230, 0xE530, 0xE539, + 0x5C8A, 0x8230, 0xE630, 0xE639, 0x5C94, 0x8230, 0xE730, 0xE739, 0x5C9E, + 0x8230, 0xE830, 0xE839, 0x5CA8, 0x8230, 0xE930, 0xE939, 0x5CB2, 0x8230, + 0xEA30, 0xEA39, 0x5CBC, 0x8230, 0xEB30, 0xEB39, 0x5CC6, 0x8230, 0xEC30, + 0xEC39, 0x5CD0, 0x8230, 0xED30, 0xED39, 0x5CDA, 0x8230, 0xEE30, 0xEE39, + 0x5CE4, 0x8230, 0xEF30, 0xEF39, 0x5CEE, 0x8230, 0xF030, 0xF039, 0x5CF8, + 0x8230, 0xF130, 0xF139, 0x5D02, 0x8230, 0xF230, 0xF239, 0x5D0C, 0x8230, + 0xF330, 0xF339, 0x5D16, 0x8230, 0xF430, 0xF439, 0x5D20, 0x8230, 0xF530, + 0xF539, 0x5D2A, 0x8230, 0xF630, 0xF639, 0x5D34, 0x8230, 0xF730, 0xF739, + 0x5D3E, 0x8230, 0xF830, 0xF839, 0x5D48, 0x8230, 0xF930, 0xF939, 0x5D52, + 0x8230, 0xFA30, 0xFA39, 0x5D5C, 0x8230, 0xFB30, 0xFB39, 0x5D66, 0x8230, + 0xFC30, 0xFC39, 0x5D70, 0x8230, 0xFD30, 0xFD39, 0x5D7A, 0x8230, 0xFE30, + 0xFE39, 0x5D84, 0x8231, 0x8130, 0x8139, 0x5D8E, 0x8231, 0x8230, 0x8239, + 0x5D98, 0x8231, 0x8330, 0x8339, 0x5DA2, 0x8231, 0x8430, 0x8439, 0x5DAC, + 0x8231, 0x8530, 0x8539, 0x5DB6, 0x8231, 0x8630, 0x8639, 0x5DC0, 0x8231, + 0x8730, 0x8739, 0x5DCA, 0x8231, 0x8830, 0x8839, 0x5DD4, 0x8231, 0x8930, + 0x8939, 0x5DDE, 0x8231, 0x8A30, 0x8A39, 0x5DE8, 0x8231, 0x8B30, 0x8B39, + 0x5DF2, 0x8231, 0x8C30, 0x8C39, 0x5DFC, 0x8231, 0x8D30, 0x8D39, 0x5E06, + 0x8231, 0x8E30, 0x8E39, 0x5E10, 0x8231, 0x8F30, 0x8F39, 0x5E1A, 0x8231, + 0x9030, 0x9039, 0x5E24, 0x8231, 0x9130, 0x9139, 0x5E2E, 0x8231, 0x9230, + 0x9239, 0x5E38, 0x8231, 0x9330, 0x9339, 0x5E42, 0x8231, 0x9430, 0x9439, + 0x5E4C, 0x8231, 0x9530, 0x9539, 0x5E56, 0x8231, 0x9630, 0x9639, 0x5E60, + 0x8231, 0x9730, 0x9739, 0x5E6A, 0x8231, 0x9830, 0x9839, 0x5E74, 0x8231, + 0x9930, 0x9939, 0x5E7E, 0x8231, 0x9A30, 0x9A39, 0x5E88, 0x8231, 0x9B30, + 0x9B39, 0x5E92, 0x8231, 0x9C30, 0x9C39, 0x5E9C, 0x8231, 0x9D30, 0x9D39, + 0x5EA6, 0x8231, 0x9E30, 0x9E39, 0x5EB0, 0x8231, 0x9F30, 0x9F39, 0x5EBA, + 0x8231, 0xA030, 0xA039, 0x5EC4, 0x8231, 0xA130, 0xA139, 0x5ECE, 0x8231, + 0xA230, 0xA239, 0x5ED8, 0x8231, 0xA330, 0xA339, 0x5EE2, 0x8231, 0xA430, + 0xA439, 0x5EEC, 0x8231, 0xA530, 0xA539, 0x5EF6, 0x8231, 0xA630, 0xA639, + 0x5F00, 0x8231, 0xA730, 0xA739, 0x5F0A, 0x8231, 0xA830, 0xA839, 0x5F14, + 0x8231, 0xA930, 0xA939, 0x5F1E, 0x8231, 0xAA30, 0xAA39, 0x5F28, 0x8231, + 0xAB30, 0xAB39, 0x5F32, 0x8231, 0xAC30, 0xAC39, 0x5F3C, 0x8231, 0xAD30, + 0xAD39, 0x5F46, 0x8231, 0xAE30, 0xAE39, 0x5F50, 0x8231, 0xAF30, 0xAF39, + 0x5F5A, 0x8231, 0xB030, 0xB039, 0x5F64, 0x8231, 0xB130, 0xB139, 0x5F6E, + 0x8231, 0xB230, 0xB239, 0x5F78, 0x8231, 0xB330, 0xB339, 0x5F82, 0x8231, + 0xB430, 0xB439, 0x5F8C, 0x8231, 0xB530, 0xB539, 0x5F96, 0x8231, 0xB630, + 0xB639, 0x5FA0, 0x8231, 0xB730, 0xB739, 0x5FAA, 0x8231, 0xB830, 0xB839, + 0x5FB4, 0x8231, 0xB930, 0xB939, 0x5FBE, 0x8231, 0xBA30, 0xBA39, 0x5FC8, + 0x8231, 0xBB30, 0xBB39, 0x5FD2, 0x8231, 0xBC30, 0xBC39, 0x5FDC, 0x8231, + 0xBD30, 0xBD39, 0x5FE6, 0x8231, 0xBE30, 0xBE39, 0x5FF0, 0x8231, 0xBF30, + 0xBF39, 0x5FFA, 0x8231, 0xC030, 0xC039, 0x6004, 0x8231, 0xC130, 0xC139, + 0x600E, 0x8231, 0xC230, 0xC239, 0x6018, 0x8231, 0xC330, 0xC339, 0x6022, + 0x8231, 0xC430, 0xC439, 0x602C, 0x8231, 0xC530, 0xC539, 0x6036, 0x8231, + 0xC630, 0xC639, 0x6040, 0x8231, 0xC730, 0xC739, 0x604A, 0x8231, 0xC830, + 0xC839, 0x6054, 0x8231, 0xC930, 0xC939, 0x605E, 0x8231, 0xCA30, 0xCA39, + 0x6068, 0x8231, 0xCB30, 0xCB39, 0x6072, 0x8231, 0xCC30, 0xCC39, 0x607C, + 0x8231, 0xCD30, 0xCD39, 0x6086, 0x8231, 0xCE30, 0xCE39, 0x6090, 0x8231, + 0xCF30, 0xCF39, 0x609A, 0x8231, 0xD030, 0xD039, 0x60A4, 0x8231, 0xD130, + 0xD139, 0x60AE, 0x8231, 0xD230, 0xD239, 0x60B8, 0x8231, 0xD330, 0xD339, + 0x60C2, 0x8231, 0xD430, 0xD439, 0x60CC, 0x8231, 0xD530, 0xD539, 0x60D6, + 0x8231, 0xD630, 0xD639, 0x60E0, 0x8231, 0xD730, 0xD739, 0x60EA, 0x8231, + 0xD830, 0xD839, 0x60F4, 0x8231, 0xD930, 0xD939, 0x60FE, 0x8231, 0xDA30, + 0xDA39, 0x6108, 0x8231, 0xDB30, 0xDB39, 0x6112, 0x8231, 0xDC30, 0xDC39, + 0x611C, 0x8231, 0xDD30, 0xDD39, 0x6126, 0x8231, 0xDE30, 0xDE39, 0x6130, + 0x8231, 0xDF30, 0xDF39, 0x613A, 0x8231, 0xE030, 0xE039, 0x6144, 0x8231, + 0xE130, 0xE139, 0x614E, 0x8231, 0xE230, 0xE239, 0x6158, 0x8231, 0xE330, + 0xE339, 0x6162, 0x8231, 0xE430, 0xE439, 0x616C, 0x8231, 0xE530, 0xE539, + 0x6176, 0x8231, 0xE630, 0xE639, 0x6180, 0x8231, 0xE730, 0xE739, 0x618A, + 0x8231, 0xE830, 0xE839, 0x6194, 0x8231, 0xE930, 0xE939, 0x619E, 0x8231, + 0xEA30, 0xEA39, 0x61A8, 0x8231, 0xEB30, 0xEB39, 0x61B2, 0x8231, 0xEC30, + 0xEC39, 0x61BC, 0x8231, 0xED30, 0xED39, 0x61C6, 0x8231, 0xEE30, 0xEE39, + 0x61D0, 0x8231, 0xEF30, 0xEF39, 0x61DA, 0x8231, 0xF030, 0xF039, 0x61E4, + 0x8231, 0xF130, 0xF139, 0x61EE, 0x8231, 0xF230, 0xF239, 0x61F8, 0x8231, + 0xF330, 0xF339, 0x6202, 0x8231, 0xF430, 0xF439, 0x620C, 0x8231, 0xF530, + 0xF539, 0x6216, 0x8231, 0xF630, 0xF639, 0x6220, 0x8231, 0xF730, 0xF739, + 0x622A, 0x8231, 0xF830, 0xF839, 0x6234, 0x8231, 0xF930, 0xF939, 0x623E, + 0x8231, 0xFA30, 0xFA39, 0x6248, 0x8231, 0xFB30, 0xFB39, 0x6252, 0x8231, + 0xFC30, 0xFC39, 0x625C, 0x8231, 0xFD30, 0xFD39, 0x6266, 0x8231, 0xFE30, + 0xFE39, 0x6270, 0x8232, 0x8130, 0x8139, 0x627A, 0x8232, 0x8230, 0x8239, + 0x6284, 0x8232, 0x8330, 0x8339, 0x628E, 0x8232, 0x8430, 0x8439, 0x6298, + 0x8232, 0x8530, 0x8539, 0x62A2, 0x8232, 0x8630, 0x8639, 0x62AC, 0x8232, + 0x8730, 0x8739, 0x62B6, 0x8232, 0x8830, 0x8839, 0x62C0, 0x8232, 0x8930, + 0x8939, 0x62CA, 0x8232, 0x8A30, 0x8A39, 0x62D4, 0x8232, 0x8B30, 0x8B39, + 0x62DE, 0x8232, 0x8C30, 0x8C39, 0x62E8, 0x8232, 0x8D30, 0x8D39, 0x62F2, + 0x8232, 0x8E30, 0x8E39, 0x62FC, 0x8232, 0x8F30, 0x8F39, 0x6306, 0x8232, + 0x9030, 0x9039, 0x6310, 0x8232, 0x9130, 0x9139, 0x631A, 0x8232, 0x9230, + 0x9239, 0x6324, 0x8232, 0x9330, 0x9339, 0x632E, 0x8232, 0x9430, 0x9439, + 0x6338, 0x8232, 0x9530, 0x9539, 0x6342, 0x8232, 0x9630, 0x9639, 0x634C, + 0x8232, 0x9730, 0x9739, 0x6356, 0x8232, 0x9830, 0x9839, 0x6360, 0x8232, + 0x9930, 0x9939, 0x636A, 0x8232, 0x9A30, 0x9A39, 0x6374, 0x8232, 0x9B30, + 0x9B39, 0x637E, 0x8232, 0x9C30, 0x9C39, 0x6388, 0x8232, 0x9D30, 0x9D39, + 0x6392, 0x8232, 0x9E30, 0x9E39, 0x639C, 0x8232, 0x9F30, 0x9F39, 0x63A6, + 0x8232, 0xA030, 0xA039, 0x63B0, 0x8232, 0xA130, 0xA139, 0x63BA, 0x8232, + 0xA230, 0xA239, 0x63C4, 0x8232, 0xA330, 0xA339, 0x63CE, 0x8232, 0xA430, + 0xA439, 0x63D8, 0x8232, 0xA530, 0xA539, 0x63E2, 0x8232, 0xA630, 0xA639, + 0x63EC, 0x8232, 0xA730, 0xA739, 0x63F6, 0x8232, 0xA830, 0xA839, 0x6400, + 0x8232, 0xA930, 0xA939, 0x640A, 0x8232, 0xAA30, 0xAA39, 0x6414, 0x8232, + 0xAB30, 0xAB39, 0x641E, 0x8232, 0xAC30, 0xAC39, 0x6428, 0x8232, 0xAD30, + 0xAD39, 0x6432, 0x8232, 0xAE30, 0xAE39, 0x643C, 0x8232, 0xAF30, 0xAF39, + 0x6446, 0x8232, 0xB030, 0xB039, 0x6450, 0x8232, 0xB130, 0xB139, 0x645A, + 0x8232, 0xB230, 0xB239, 0x6464, 0x8232, 0xB330, 0xB339, 0x646E, 0x8232, + 0xB430, 0xB439, 0x6478, 0x8232, 0xB530, 0xB539, 0x6482, 0x8232, 0xB630, + 0xB639, 0x648C, 0x8232, 0xB730, 0xB739, 0x6496, 0x8232, 0xB830, 0xB839, + 0x64A0, 0x8232, 0xB930, 0xB939, 0x64AA, 0x8232, 0xBA30, 0xBA39, 0x64B4, + 0x8232, 0xBB30, 0xBB39, 0x64BE, 0x8232, 0xBC30, 0xBC39, 0x64C8, 0x8232, + 0xBD30, 0xBD39, 0x64D2, 0x8232, 0xBE30, 0xBE39, 0x64DC, 0x8232, 0xBF30, + 0xBF39, 0x64E6, 0x8232, 0xC030, 0xC039, 0x64F0, 0x8232, 0xC130, 0xC139, + 0x64FA, 0x8232, 0xC230, 0xC239, 0x6504, 0x8232, 0xC330, 0xC339, 0x650E, + 0x8232, 0xC430, 0xC439, 0x6518, 0x8232, 0xC530, 0xC539, 0x6522, 0x8232, + 0xC630, 0xC639, 0x652C, 0x8232, 0xC730, 0xC739, 0x6536, 0x8232, 0xC830, + 0xC839, 0x6540, 0x8232, 0xC930, 0xC939, 0x654A, 0x8232, 0xCA30, 0xCA39, + 0x6554, 0x8232, 0xCB30, 0xCB39, 0x655E, 0x8232, 0xCC30, 0xCC39, 0x6568, + 0x8232, 0xCD30, 0xCD39, 0x6572, 0x8232, 0xCE30, 0xCE39, 0x657C, 0x8232, + 0xCF30, 0xCF39, 0x6586, 0x8232, 0xD030, 0xD039, 0x6590, 0x8232, 0xD130, + 0xD139, 0x659A, 0x8232, 0xD230, 0xD239, 0x65A4, 0x8232, 0xD330, 0xD339, + 0x65AE, 0x8232, 0xD430, 0xD439, 0x65B8, 0x8232, 0xD530, 0xD539, 0x65C2, + 0x8232, 0xD630, 0xD639, 0x65CC, 0x8232, 0xD730, 0xD739, 0x65D6, 0x8232, + 0xD830, 0xD839, 0x65E0, 0x8232, 0xD930, 0xD939, 0x65EA, 0x8232, 0xDA30, + 0xDA39, 0x65F4, 0x8232, 0xDB30, 0xDB39, 0x65FE, 0x8232, 0xDC30, 0xDC39, + 0x6608, 0x8232, 0xDD30, 0xDD39, 0x6612, 0x8232, 0xDE30, 0xDE39, 0x661C, + 0x8232, 0xDF30, 0xDF39, 0x6626, 0x8232, 0xE030, 0xE039, 0x6630, 0x8232, + 0xE130, 0xE139, 0x663A, 0x8232, 0xE230, 0xE239, 0x6644, 0x8232, 0xE330, + 0xE339, 0x664E, 0x8232, 0xE430, 0xE439, 0x6658, 0x8232, 0xE530, 0xE539, + 0x6662, 0x8232, 0xE630, 0xE639, 0x666C, 0x8232, 0xE730, 0xE739, 0x6676, + 0x8232, 0xE830, 0xE839, 0x6680, 0x8232, 0xE930, 0xE939, 0x668A, 0x8232, + 0xEA30, 0xEA39, 0x6694, 0x8232, 0xEB30, 0xEB39, 0x669E, 0x8232, 0xEC30, + 0xEC39, 0x66A8, 0x8232, 0xED30, 0xED39, 0x66B2, 0x8232, 0xEE30, 0xEE39, + 0x66BC, 0x8232, 0xEF30, 0xEF39, 0x66C6, 0x8232, 0xF030, 0xF039, 0x66D0, + 0x8232, 0xF130, 0xF139, 0x66DA, 0x8232, 0xF230, 0xF239, 0x66E4, 0x8232, + 0xF330, 0xF339, 0x66EE, 0x8232, 0xF430, 0xF439, 0x66F8, 0x8232, 0xF530, + 0xF539, 0x6702, 0x8232, 0xF630, 0xF639, 0x670C, 0x8232, 0xF730, 0xF739, + 0x6716, 0x8232, 0xF830, 0xF839, 0x6720, 0x8232, 0xF930, 0xF939, 0x672A, + 0x8232, 0xFA30, 0xFA39, 0x6734, 0x8232, 0xFB30, 0xFB39, 0x673E, 0x8232, + 0xFC30, 0xFC39, 0x6748, 0x8232, 0xFD30, 0xFD39, 0x6752, 0x8232, 0xFE30, + 0xFE39, 0x675C, 0x8233, 0x8130, 0x8139, 0x6766, 0x8233, 0x8230, 0x8239, + 0x6770, 0x8233, 0x8330, 0x8339, 0x677A, 0x8233, 0x8430, 0x8439, 0x6784, + 0x8233, 0x8530, 0x8539, 0x678E, 0x8233, 0x8630, 0x8639, 0x6798, 0x8233, + 0x8730, 0x8739, 0x67A2, 0x8233, 0x8830, 0x8839, 0x67AC, 0x8233, 0x8930, + 0x8939, 0x67B6, 0x8233, 0x8A30, 0x8A39, 0x67C0, 0x8233, 0x8B30, 0x8B39, + 0x67CA, 0x8233, 0x8C30, 0x8C39, 0x67D4, 0x8233, 0x8D30, 0x8D39, 0x67DE, + 0x8233, 0x8E30, 0x8E39, 0x67E8, 0x8233, 0x8F30, 0x8F39, 0x67F2, 0x8233, + 0x9030, 0x9039, 0x67FC, 0x8233, 0x9130, 0x9139, 0x6806, 0x8233, 0x9230, + 0x9239, 0x6810, 0x8233, 0x9330, 0x9339, 0x681A, 0x8233, 0x9430, 0x9439, + 0x6824, 0x8233, 0x9530, 0x9539, 0x682E, 0x8233, 0x9630, 0x9639, 0x6838, + 0x8233, 0x9730, 0x9739, 0x6842, 0x8233, 0x9830, 0x9839, 0x684C, 0x8233, + 0x9930, 0x9939, 0x6856, 0x8233, 0x9A30, 0x9A39, 0x6860, 0x8233, 0x9B30, + 0x9B39, 0x686A, 0x8233, 0x9C30, 0x9C39, 0x6874, 0x8233, 0x9D30, 0x9D39, + 0x687E, 0x8233, 0x9E30, 0x9E39, 0x6888, 0x8233, 0x9F30, 0x9F39, 0x6892, + 0x8233, 0xA030, 0xA039, 0x689C, 0x8233, 0xA130, 0xA139, 0x68A6, 0x8233, + 0xA230, 0xA239, 0x68B0, 0x8233, 0xA330, 0xA339, 0x68BA, 0x8233, 0xA430, + 0xA439, 0x68C4, 0x8233, 0xA530, 0xA539, 0x68CE, 0x8233, 0xA630, 0xA639, + 0x68D8, 0x8233, 0xA730, 0xA739, 0x68E2, 0x8233, 0xA830, 0xA839, 0x68EC, + 0x8233, 0xA930, 0xA939, 0x68F6, 0x8233, 0xAA30, 0xAA39, 0x6900, 0x8233, + 0xAB30, 0xAB39, 0x690A, 0x8233, 0xAC30, 0xAC39, 0x6914, 0x8233, 0xAD30, + 0xAD39, 0x691E, 0x8233, 0xAE30, 0xAE39, 0x6928, 0x8233, 0xAF30, 0xAF39, + 0x6932, 0x8233, 0xB030, 0xB039, 0x693C, 0x8233, 0xB130, 0xB139, 0x6946, + 0x8233, 0xB230, 0xB239, 0x6950, 0x8233, 0xB330, 0xB339, 0x695A, 0x8233, + 0xB430, 0xB439, 0x6964, 0x8233, 0xB530, 0xB539, 0x696E, 0x8233, 0xB630, + 0xB639, 0x6978, 0x8233, 0xB730, 0xB739, 0x6982, 0x8233, 0xB830, 0xB839, + 0x698C, 0x8233, 0xB930, 0xB939, 0x6996, 0x8233, 0xBA30, 0xBA39, 0x69A0, + 0x8233, 0xBB30, 0xBB39, 0x69AA, 0x8233, 0xBC30, 0xBC39, 0x69B4, 0x8233, + 0xBD30, 0xBD39, 0x69BE, 0x8233, 0xBE30, 0xBE39, 0x69C8, 0x8233, 0xBF30, + 0xBF39, 0x69D2, 0x8233, 0xC030, 0xC039, 0x69DC, 0x8233, 0xC130, 0xC139, + 0x69E6, 0x8233, 0xC230, 0xC239, 0x69F0, 0x8233, 0xC330, 0xC339, 0x69FA, + 0x8233, 0xC430, 0xC439, 0x6A04, 0x8233, 0xC530, 0xC539, 0x6A0E, 0x8233, + 0xC630, 0xC639, 0x6A18, 0x8233, 0xC730, 0xC739, 0x6A22, 0x8233, 0xC830, + 0xC839, 0x6A2C, 0x8233, 0xC930, 0xC939, 0x6A36, 0x8233, 0xCA30, 0xCA39, + 0x6A40, 0x8233, 0xCB30, 0xCB39, 0x6A4A, 0x8233, 0xCC30, 0xCC39, 0x6A54, + 0x8233, 0xCD30, 0xCD39, 0x6A5E, 0x8233, 0xCE30, 0xCE39, 0x6A68, 0x8233, + 0xCF30, 0xCF39, 0x6A72, 0x8233, 0xD030, 0xD039, 0x6A7C, 0x8233, 0xD130, + 0xD139, 0x6A86, 0x8233, 0xD230, 0xD239, 0x6A90, 0x8233, 0xD330, 0xD339, + 0x6A9A, 0x8233, 0xD430, 0xD439, 0x6AA4, 0x8233, 0xD530, 0xD539, 0x6AAE, + 0x8233, 0xD630, 0xD639, 0x6AB8, 0x8233, 0xD730, 0xD739, 0x6AC2, 0x8233, + 0xD830, 0xD839, 0x6ACC, 0x8233, 0xD930, 0xD939, 0x6AD6, 0x8233, 0xDA30, + 0xDA39, 0x6AE0, 0x8233, 0xDB30, 0xDB39, 0x6AEA, 0x8233, 0xDC30, 0xDC39, + 0x6AF4, 0x8233, 0xDD30, 0xDD39, 0x6AFE, 0x8233, 0xDE30, 0xDE39, 0x6B08, + 0x8233, 0xDF30, 0xDF39, 0x6B12, 0x8233, 0xE030, 0xE039, 0x6B1C, 0x8233, + 0xE130, 0xE139, 0x6B26, 0x8233, 0xE230, 0xE239, 0x6B30, 0x8233, 0xE330, + 0xE339, 0x6B3A, 0x8233, 0xE430, 0xE439, 0x6B44, 0x8233, 0xE530, 0xE539, + 0x6B4E, 0x8233, 0xE630, 0xE639, 0x6B58, 0x8233, 0xE730, 0xE739, 0x6B62, + 0x8233, 0xE830, 0xE839, 0x6B6C, 0x8233, 0xE930, 0xE939, 0x6B76, 0x8233, + 0xEA30, 0xEA39, 0x6B80, 0x8233, 0xEB30, 0xEB39, 0x6B8A, 0x8233, 0xEC30, + 0xEC39, 0x6B94, 0x8233, 0xED30, 0xED39, 0x6B9E, 0x8233, 0xEE30, 0xEE39, + 0x6BA8, 0x8233, 0xEF30, 0xEF39, 0x6BB2, 0x8233, 0xF030, 0xF039, 0x6BBC, + 0x8233, 0xF130, 0xF139, 0x6BC6, 0x8233, 0xF230, 0xF239, 0x6BD0, 0x8233, + 0xF330, 0xF339, 0x6BDA, 0x8233, 0xF430, 0xF439, 0x6BE4, 0x8233, 0xF530, + 0xF539, 0x6BEE, 0x8233, 0xF630, 0xF639, 0x6BF8, 0x8233, 0xF730, 0xF739, + 0x6C02, 0x8233, 0xF830, 0xF839, 0x6C0C, 0x8233, 0xF930, 0xF939, 0x6C16, + 0x8233, 0xFA30, 0xFA39, 0x6C20, 0x8233, 0xFB30, 0xFB39, 0x6C2A, 0x8233, + 0xFC30, 0xFC39, 0x6C34, 0x8233, 0xFD30, 0xFD39, 0x6C3E, 0x8233, 0xFE30, + 0xFE39, 0x6C48, 0x8234, 0x8130, 0x8139, 0x6C52, 0x8234, 0x8230, 0x8239, + 0x6C5C, 0x8234, 0x8330, 0x8339, 0x6C66, 0x8234, 0x8430, 0x8439, 0x6C70, + 0x8234, 0x8530, 0x8539, 0x6C7A, 0x8234, 0x8630, 0x8639, 0x6C84, 0x8234, + 0x8730, 0x8739, 0x6C8E, 0x8234, 0x8830, 0x8839, 0x6C98, 0x8234, 0x8930, + 0x8939, 0x6CA2, 0x8234, 0x8A30, 0x8A39, 0x6CAC, 0x8234, 0x8B30, 0x8B39, + 0x6CB6, 0x8234, 0x8C30, 0x8C39, 0x6CC0, 0x8234, 0x8D30, 0x8D39, 0x6CCA, + 0x8234, 0x8E30, 0x8E39, 0x6CD4, 0x8234, 0x8F30, 0x8F39, 0x6CDE, 0x8234, + 0x9030, 0x9039, 0x6CE8, 0x8234, 0x9130, 0x9139, 0x6CF2, 0x8234, 0x9230, + 0x9239, 0x6CFC, 0x8234, 0x9330, 0x9339, 0x6D06, 0x8234, 0x9430, 0x9439, + 0x6D10, 0x8234, 0x9530, 0x9539, 0x6D1A, 0x8234, 0x9630, 0x9639, 0x6D24, + 0x8234, 0x9730, 0x9739, 0x6D2E, 0x8234, 0x9830, 0x9839, 0x6D38, 0x8234, + 0x9930, 0x9939, 0x6D42, 0x8234, 0x9A30, 0x9A39, 0x6D4C, 0x8234, 0x9B30, + 0x9B39, 0x6D56, 0x8234, 0x9C30, 0x9C39, 0x6D60, 0x8234, 0x9D30, 0x9D39, + 0x6D6A, 0x8234, 0x9E30, 0x9E39, 0x6D74, 0x8234, 0x9F30, 0x9F39, 0x6D7E, + 0x8234, 0xA030, 0xA039, 0x6D88, 0x8234, 0xA130, 0xA139, 0x6D92, 0x8234, + 0xA230, 0xA239, 0x6D9C, 0x8234, 0xA330, 0xA339, 0x6DA6, 0x8234, 0xA430, + 0xA439, 0x6DB0, 0x8234, 0xA530, 0xA539, 0x6DBA, 0x8234, 0xA630, 0xA639, + 0x6DC4, 0x8234, 0xA730, 0xA739, 0x6DCE, 0x8234, 0xA830, 0xA839, 0x6DD8, + 0x8234, 0xA930, 0xA939, 0x6DE2, 0x8234, 0xAA30, 0xAA39, 0x6DEC, 0x8234, + 0xAB30, 0xAB39, 0x6DF6, 0x8234, 0xAC30, 0xAC39, 0x6E00, 0x8234, 0xAD30, + 0xAD39, 0x6E0A, 0x8234, 0xAE30, 0xAE39, 0x6E14, 0x8234, 0xAF30, 0xAF39, + 0x6E1E, 0x8234, 0xB030, 0xB039, 0x6E28, 0x8234, 0xB130, 0xB139, 0x6E32, + 0x8234, 0xB230, 0xB239, 0x6E3C, 0x8234, 0xB330, 0xB339, 0x6E46, 0x8234, + 0xB430, 0xB439, 0x6E50, 0x8234, 0xB530, 0xB539, 0x6E5A, 0x8234, 0xB630, + 0xB639, 0x6E64, 0x8234, 0xB730, 0xB739, 0x6E6E, 0x8234, 0xB830, 0xB839, + 0x6E78, 0x8234, 0xB930, 0xB939, 0x6E82, 0x8234, 0xBA30, 0xBA39, 0x6E8C, + 0x8234, 0xBB30, 0xBB39, 0x6E96, 0x8234, 0xBC30, 0xBC39, 0x6EA0, 0x8234, + 0xBD30, 0xBD39, 0x6EAA, 0x8234, 0xBE30, 0xBE39, 0x6EB4, 0x8234, 0xBF30, + 0xBF39, 0x6EBE, 0x8234, 0xC030, 0xC039, 0x6EC8, 0x8234, 0xC130, 0xC139, + 0x6ED2, 0x8234, 0xC230, 0xC239, 0x6EDC, 0x8234, 0xC330, 0xC339, 0x6EE6, + 0x8234, 0xC430, 0xC439, 0x6EF0, 0x8234, 0xC530, 0xC539, 0x6EFA, 0x8234, + 0xC630, 0xC639, 0x6F04, 0x8234, 0xC730, 0xC739, 0x6F0E, 0x8234, 0xC830, + 0xC839, 0x6F18, 0x8234, 0xC930, 0xC939, 0x6F22, 0x8234, 0xCA30, 0xCA39, + 0x6F2C, 0x8234, 0xCB30, 0xCB39, 0x6F36, 0x8234, 0xCC30, 0xCC39, 0x6F40, + 0x8234, 0xCD30, 0xCD39, 0x6F4A, 0x8234, 0xCE30, 0xCE39, 0x6F54, 0x8234, + 0xCF30, 0xCF39, 0x6F5E, 0x8234, 0xD030, 0xD039, 0x6F68, 0x8234, 0xD130, + 0xD139, 0x6F72, 0x8234, 0xD230, 0xD239, 0x6F7C, 0x8234, 0xD330, 0xD339, + 0x6F86, 0x8234, 0xD430, 0xD439, 0x6F90, 0x8234, 0xD530, 0xD539, 0x6F9A, + 0x8234, 0xD630, 0xD639, 0x6FA4, 0x8234, 0xD730, 0xD739, 0x6FAE, 0x8234, + 0xD830, 0xD839, 0x6FB8, 0x8234, 0xD930, 0xD939, 0x6FC2, 0x8234, 0xDA30, + 0xDA39, 0x6FCC, 0x8234, 0xDB30, 0xDB39, 0x6FD6, 0x8234, 0xDC30, 0xDC39, + 0x6FE0, 0x8234, 0xDD30, 0xDD39, 0x6FEA, 0x8234, 0xDE30, 0xDE39, 0x6FF4, + 0x8234, 0xDF30, 0xDF39, 0x6FFE, 0x8234, 0xE030, 0xE039, 0x7008, 0x8234, + 0xE130, 0xE139, 0x7012, 0x8234, 0xE230, 0xE239, 0x701C, 0x8234, 0xE330, + 0xE339, 0x7026, 0x8234, 0xE430, 0xE439, 0x7030, 0x8234, 0xE530, 0xE539, + 0x703A, 0x8234, 0xE630, 0xE639, 0x7044, 0x8234, 0xE730, 0xE739, 0x704E, + 0x8234, 0xE830, 0xE839, 0x7058, 0x8234, 0xE930, 0xE939, 0x7062, 0x8234, + 0xEA30, 0xEA39, 0x706C, 0x8234, 0xEB30, 0xEB39, 0x7076, 0x8234, 0xEC30, + 0xEC39, 0x7080, 0x8234, 0xED30, 0xED39, 0x708A, 0x8234, 0xEE30, 0xEE39, + 0x7094, 0x8234, 0xEF30, 0xEF39, 0x709E, 0x8234, 0xF030, 0xF039, 0x70A8, + 0x8234, 0xF130, 0xF139, 0x70B2, 0x8234, 0xF230, 0xF239, 0x70BC, 0x8234, + 0xF330, 0xF339, 0x70C6, 0x8234, 0xF430, 0xF439, 0x70D0, 0x8234, 0xF530, + 0xF539, 0x70DA, 0x8234, 0xF630, 0xF639, 0x70E4, 0x8234, 0xF730, 0xF739, + 0x70EE, 0x8234, 0xF830, 0xF839, 0x70F8, 0x8234, 0xF930, 0xF939, 0x7102, + 0x8234, 0xFA30, 0xFA39, 0x710C, 0x8234, 0xFB30, 0xFB39, 0x7116, 0x8234, + 0xFC30, 0xFC39, 0x7120, 0x8234, 0xFD30, 0xFD39, 0x712A, 0x8234, 0xFE30, + 0xFE39, 0x7134, 0x8235, 0x8130, 0x8139, 0x713E, 0x8235, 0x8230, 0x8239, + 0x7148, 0x8235, 0x8330, 0x8339, 0x7152, 0x8235, 0x8430, 0x8439, 0x715C, + 0x8235, 0x8530, 0x8539, 0x7166, 0x8235, 0x8630, 0x8639, 0x7170, 0x8235, + 0x8730, 0x8738, 0x717A, 0x8235, 0x9833, 0x9839, 0x7188, 0x8235, 0x9930, + 0x9939, 0x718F, 0x8235, 0x9A30, 0x9A39, 0x7199, 0x8235, 0x9B30, 0x9B39, + 0x71A3, 0x8235, 0x9C30, 0x9C39, 0x71AD, 0x8235, 0x9D30, 0x9D39, 0x71B7, + 0x8235, 0x9E30, 0x9E39, 0x71C1, 0x8235, 0x9F30, 0x9F39, 0x71CB, 0x8235, + 0xA030, 0xA039, 0x71D5, 0x8235, 0xA130, 0xA139, 0x71DF, 0x8235, 0xA230, + 0xA239, 0x71E9, 0x8235, 0xA330, 0xA339, 0x71F3, 0x8235, 0xA430, 0xA439, + 0x71FD, 0x8235, 0xA530, 0xA539, 0x7207, 0x8235, 0xA630, 0xA639, 0x7211, + 0x8235, 0xA730, 0xA739, 0x721B, 0x8235, 0xA830, 0xA839, 0x7225, 0x8235, + 0xA930, 0xA939, 0x722F, 0x8235, 0xAA30, 0xAA39, 0x7239, 0x8235, 0xAB30, + 0xAB39, 0x7243, 0x8235, 0xAC30, 0xAC39, 0x724D, 0x8235, 0xAD30, 0xAD39, + 0x7257, 0x8235, 0xAE30, 0xAE39, 0x7261, 0x8235, 0xAF30, 0xAF39, 0x726B, + 0x8235, 0xB030, 0xB039, 0x7275, 0x8235, 0xB130, 0xB139, 0x727F, 0x8235, + 0xB230, 0xB239, 0x7289, 0x8235, 0xB330, 0xB339, 0x7293, 0x8235, 0xB430, + 0xB439, 0x729D, 0x8235, 0xB530, 0xB539, 0x72A7, 0x8235, 0xB630, 0xB639, + 0x72B1, 0x8235, 0xB730, 0xB739, 0x72BB, 0x8235, 0xB830, 0xB839, 0x72C5, + 0x8235, 0xB930, 0xB939, 0x72CF, 0x8235, 0xBA30, 0xBA39, 0x72D9, 0x8235, + 0xBB30, 0xBB39, 0x72E3, 0x8235, 0xBC30, 0xBC39, 0x72ED, 0x8235, 0xBD30, + 0xBD39, 0x72F7, 0x8235, 0xBE30, 0xBE39, 0x7301, 0x8235, 0xBF30, 0xBF39, + 0x730B, 0x8235, 0xC030, 0xC039, 0x7315, 0x8235, 0xC130, 0xC139, 0x731F, + 0x8235, 0xC230, 0xC239, 0x7329, 0x8235, 0xC330, 0xC339, 0x7333, 0x8235, + 0xC430, 0xC439, 0x733D, 0x8235, 0xC530, 0xC539, 0x7347, 0x8235, 0xC630, + 0xC639, 0x7351, 0x8235, 0xC730, 0xC739, 0x735B, 0x8235, 0xC830, 0xC839, + 0x7365, 0x8235, 0xC930, 0xC939, 0x736F, 0x8235, 0xCA30, 0xCA39, 0x7379, + 0x8235, 0xCB30, 0xCB39, 0x7383, 0x8235, 0xCC30, 0xCC39, 0x738D, 0x8235, + 0xCD30, 0xCD39, 0x7397, 0x8235, 0xCE30, 0xCE39, 0x73A1, 0x8235, 0xCF30, + 0xCF39, 0x73AB, 0x8235, 0xD030, 0xD039, 0x73B5, 0x8235, 0xD130, 0xD139, + 0x73BF, 0x8235, 0xD230, 0xD239, 0x73C9, 0x8235, 0xD330, 0xD339, 0x73D3, + 0x8235, 0xD430, 0xD439, 0x73DD, 0x8235, 0xD530, 0xD539, 0x73E7, 0x8235, + 0xD630, 0xD639, 0x73F1, 0x8235, 0xD730, 0xD739, 0x73FB, 0x8235, 0xD830, + 0xD839, 0x7405, 0x8235, 0xD930, 0xD939, 0x740F, 0x8235, 0xDA30, 0xDA39, + 0x7419, 0x8235, 0xDB30, 0xDB39, 0x7423, 0x8235, 0xDC30, 0xDC39, 0x742D, + 0x8235, 0xDD30, 0xDD39, 0x7437, 0x8235, 0xDE30, 0xDE39, 0x7441, 0x8235, + 0xDF30, 0xDF39, 0x744B, 0x8235, 0xE030, 0xE039, 0x7455, 0x8235, 0xE130, + 0xE139, 0x745F, 0x8235, 0xE230, 0xE239, 0x7469, 0x8235, 0xE330, 0xE339, + 0x7473, 0x8235, 0xE430, 0xE439, 0x747D, 0x8235, 0xE530, 0xE539, 0x7487, + 0x8235, 0xE630, 0xE639, 0x7491, 0x8235, 0xE730, 0xE739, 0x749B, 0x8235, + 0xE830, 0xE839, 0x74A5, 0x8235, 0xE930, 0xE939, 0x74AF, 0x8235, 0xEA30, + 0xEA39, 0x74B9, 0x8235, 0xEB30, 0xEB39, 0x74C3, 0x8235, 0xEC30, 0xEC39, + 0x74CD, 0x8235, 0xED30, 0xED39, 0x74D7, 0x8235, 0xEE30, 0xEE39, 0x74E1, + 0x8235, 0xEF30, 0xEF39, 0x74EB, 0x8235, 0xF030, 0xF039, 0x74F5, 0x8235, + 0xF130, 0xF139, 0x74FF, 0x8235, 0xF230, 0xF239, 0x7509, 0x8235, 0xF330, + 0xF339, 0x7513, 0x8235, 0xF430, 0xF439, 0x751D, 0x8235, 0xF530, 0xF539, + 0x7527, 0x8235, 0xF630, 0xF639, 0x7531, 0x8235, 0xF730, 0xF739, 0x753B, + 0x8235, 0xF830, 0xF839, 0x7545, 0x8235, 0xF930, 0xF939, 0x754F, 0x8235, + 0xFA30, 0xFA39, 0x7559, 0x8235, 0xFB30, 0xFB39, 0x7563, 0x8235, 0xFC30, + 0xFC39, 0x756D, 0x8235, 0xFD30, 0xFD39, 0x7577, 0x8235, 0xFE30, 0xFE39, + 0x7581, 0x8236, 0x8130, 0x8139, 0x758B, 0x8236, 0x8230, 0x8239, 0x7595, + 0x8236, 0x8330, 0x8339, 0x759F, 0x8236, 0x8430, 0x8439, 0x75A9, 0x8236, + 0x8530, 0x8539, 0x75B3, 0x8236, 0x8630, 0x8639, 0x75BD, 0x8236, 0x8730, + 0x8739, 0x75C7, 0x8236, 0x8830, 0x8839, 0x75D1, 0x8236, 0x8930, 0x8939, + 0x75DB, 0x8236, 0x8A30, 0x8A39, 0x75E5, 0x8236, 0x8B30, 0x8B39, 0x75EF, + 0x8236, 0x8C30, 0x8C39, 0x75F9, 0x8236, 0x8D30, 0x8D39, 0x7603, 0x8236, + 0x8E30, 0x8E37, 0x760D, 0x8236, 0x8F31, 0x8F39, 0x7615, 0x8236, 0x9030, + 0x9039, 0x761E, 0x8236, 0x9130, 0x9139, 0x7628, 0x8236, 0x9230, 0x9239, + 0x7632, 0x8236, 0x9330, 0x9339, 0x763C, 0x8236, 0x9430, 0x9435, 0x7646, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp new file mode 100644 index 0000000000..5e66e43b7e --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp @@ -0,0 +1,24 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBK2K_V_5[41 * 3] = { + 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, + 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, + 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, + 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, + 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, + 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, + 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, 0xA4A1, 0xA4A1, 0x5757, + 0xA4A3, 0xA4A3, 0x5759, 0xA4A5, 0xA4A5, 0x5762, 0xA4A7, 0xA4A7, 0x5758, + 0xA4A9, 0xA4A9, 0x5760, 0xA4C3, 0xA4C3, 0x5761, 0xA4E3, 0xA4E3, 0x5764, + 0xA4E5, 0xA4E5, 0x5766, 0xA4E7, 0xA4E7, 0x5765, 0xA4EE, 0xA4EE, 0x5763, + 0xA5A1, 0xA5A1, 0x5768, 0xA5A3, 0xA5A3, 0x576A, 0xA5A5, 0xA5A5, 0x5771, + 0xA5A7, 0xA5A7, 0x5769, 0xA5A9, 0xA5A9, 0x576F, 0xA5C3, 0xA5C3, 0x5770, + 0xA5E3, 0xA5E3, 0x5773, 0xA5E5, 0xA5E5, 0x5775, 0xA5E7, 0xA5E7, 0x5774, + 0xA5EE, 0xA5EE, 0x5772, 0xA960, 0xA960, 0x577A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp new file mode 100644 index 0000000000..540e7b6c2a --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp @@ -0,0 +1,1367 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBKp_EUC_H_2[4070 * 3] = { + 0x0020, 0x007E, 0x0001, 0x8140, 0x8178, 0x2758, 0x8179, 0x8179, 0x2059, + 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, 0x8186, 0x8186, 0x21F1, + 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, 0x81EE, 0x81F5, 0x2802, + 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, 0x8240, 0x8252, 0x2812, + 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, 0x8262, 0x8262, 0x21B5, + 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, 0x8275, 0x8279, 0x2844, + 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, 0x827D, 0x827D, 0x1E62, + 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, 0x8281, 0x8282, 0x284C, + 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, 0x8290, 0x8290, 0x205C, + 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, 0x82A6, 0x82C7, 0x286E, + 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, 0x82CA, 0x82E0, 0x2890, + 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, 0x82E3, 0x82E3, 0x210A, + 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, 0x82ED, 0x82ED, 0x267F, + 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, 0x82F3, 0x82F6, 0x28B4, + 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, 0x82F9, 0x82F9, 0x226C, + 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, 0x82FC, 0x82FE, 0x28B9, + 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, 0x8342, 0x8344, 0x28BD, + 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, 0x8348, 0x8348, 0x1FB9, + 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, 0x834D, 0x8352, 0x28C5, + 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, 0x8357, 0x8357, 0x20C2, + 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, 0x835F, 0x8364, 0x28D4, + 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, 0x8367, 0x8371, 0x28DA, + 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, 0x8378, 0x8378, 0x2210, + 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, 0x837B, 0x837B, 0x28EB, + 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, 0x837E, 0x837E, 0x1FE4, + 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, 0x8386, 0x8386, 0x22D6, + 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, 0x838A, 0x838A, 0x22CE, + 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, 0x838E, 0x8393, 0x28F6, + 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, 0x839E, 0x839E, 0x2231, + 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, 0x83A7, 0x83AA, 0x290C, + 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, 0x83AE, 0x83AE, 0x22D7, + 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, 0x83B1, 0x83B9, 0x2912, + 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, 0x83C9, 0x83C9, 0x2025, + 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, 0x83F7, 0x83FE, 0x2955, + 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, 0x8451, 0x8470, 0x296D, + 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, 0x8474, 0x8474, 0x2263, + 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, 0x8478, 0x847E, 0x2991, + 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, 0x8483, 0x848D, 0x299A, + 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, 0x8492, 0x8492, 0x22CA, + 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, 0x849D, 0x849D, 0x1F4F, + 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, 0x84A2, 0x84A2, 0x2036, + 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, 0x84A5, 0x84A5, 0x22C9, + 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, 0x84A9, 0x84A9, 0x1F75, + 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, 0x84C6, 0x84D2, 0x29D2, + 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, 0x84D5, 0x84D5, 0x21A9, + 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, 0x84D8, 0x84D8, 0x29E1, + 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, 0x84DB, 0x84DC, 0x29E2, + 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, 0x84EA, 0x84EA, 0x2323, + 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, 0x84EF, 0x84F0, 0x29F3, + 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, 0x8540, 0x8550, 0x2A02, + 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, 0x8553, 0x8553, 0x2A13, + 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, 0x855E, 0x855E, 0x20EF, + 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, 0x8567, 0x857E, 0x2A24, + 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, 0x8588, 0x858A, 0x2A43, + 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, 0x8592, 0x8592, 0x21F9, + 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, 0x8597, 0x8597, 0x2A4F, + 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, 0x85A2, 0x85A2, 0x1E5A, + 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, 0x85B3, 0x85FE, 0x2A68, + 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, 0x864B, 0x8653, 0x2ABE, + 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, 0x8668, 0x8668, 0x236C, + 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, 0x8696, 0x8696, 0x219C, + 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, 0x869A, 0x86A0, 0x2B08, + 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, 0x86CA, 0x86CA, 0x210B, + 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, 0x86CD, 0x86CD, 0x2B38, + 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, 0x86D1, 0x86D1, 0x222C, + 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, 0x86DD, 0x86DD, 0x22C0, + 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, 0x86E2, 0x86E7, 0x2B48, + 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, 0x86EE, 0x86EE, 0x2379, + 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, 0x86F5, 0x86FE, 0x2B58, + 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, 0x8744, 0x8744, 0x237C, + 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, 0x874A, 0x874A, 0x2B69, + 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, 0x874D, 0x874E, 0x2B6A, + 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, 0x8757, 0x8757, 0x1F4C, + 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, 0x875B, 0x875B, 0x21CF, + 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, 0x875E, 0x875E, 0x2371, + 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, 0x8761, 0x8765, 0x2B77, + 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, 0x877A, 0x877A, 0x236F, + 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, 0x877E, 0x877E, 0x2B91, + 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, 0x8782, 0x8782, 0x2373, + 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, 0x8787, 0x8787, 0x2B96, + 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, 0x878A, 0x878A, 0x20B5, + 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, 0x878E, 0x878E, 0x2672, + 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, 0x8794, 0x8797, 0x2B9E, + 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, 0x879D, 0x879D, 0x2375, + 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, 0x87A4, 0x87A6, 0x2BAB, + 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, 0x87B3, 0x87B3, 0x236B, + 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, 0x87B6, 0x87BA, 0x2BBA, + 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, 0x87BF, 0x87BF, 0x237D, + 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, 0x87C2, 0x87C2, 0x2381, + 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, 0x87CB, 0x87CB, 0x237E, + 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, 0x87CF, 0x87CF, 0x22DB, + 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, 0x87D3, 0x87D3, 0x2689, + 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, 0x87D6, 0x87D9, 0x2BCF, + 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, 0x87F7, 0x87F7, 0x2383, + 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, 0x87FA, 0x87FA, 0x218F, + 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, 0x8841, 0x8841, 0x2248, + 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, 0x8845, 0x8845, 0x2BF6, + 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, 0x8880, 0x88B9, 0x2C2F, + 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, 0x88CC, 0x88CC, 0x228B, + 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, 0x88D5, 0x88D6, 0x2C81, + 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, 0x88DF, 0x88DF, 0x232C, + 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, 0x88E6, 0x88F1, 0x2C8F, + 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, 0x88F4, 0x88F5, 0x2C9B, + 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, 0x8940, 0x894A, 0x2CA5, + 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, 0x894D, 0x894D, 0x2CB0, + 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, 0x8950, 0x8950, 0x232D, + 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, 0x8955, 0x895C, 0x2CB5, + 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, 0x895F, 0x895F, 0x232F, + 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, 0x896E, 0x8970, 0x2CCB, + 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, 0x897C, 0x897C, 0x1EC2, + 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, 0x898B, 0x898B, 0x22B2, + 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, 0x899A, 0x899D, 0x2CF2, + 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, 0x89A6, 0x89A6, 0x20D9, + 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, 0x89A9, 0x89AE, 0x2CFE, + 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, 0x89BA, 0x89BA, 0x21ED, + 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, 0x89BF, 0x89BF, 0x2326, + 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, 0x89C4, 0x89C4, 0x1F52, + 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, 0x89C7, 0x89C7, 0x2D14, + 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, 0x89CE, 0x89CE, 0x1E2B, + 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, 0x89D2, 0x89D7, 0x2D1C, + 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, 0x89DB, 0x89DB, 0x2138, + 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, 0x89F5, 0x89FE, 0x2D3C, + 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, 0x8A42, 0x8A58, 0x2D47, + 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, 0x8A5B, 0x8A5B, 0x2D5E, + 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, 0x8A5E, 0x8A5E, 0x1EFA, + 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, 0x8A7A, 0x8A7E, 0x2D7A, + 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, 0x8AE5, 0x8AFE, 0x2DE3, + 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, 0x8B45, 0x8B48, 0x2E01, + 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, 0x8B7A, 0x8B7A, 0x23FC, + 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, 0x8B8C, 0x8B8C, 0x2069, + 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, 0x8B9F, 0x8BB2, 0x2E56, + 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, 0x8BB9, 0x8BB9, 0x23FD, + 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, 0x8BBF, 0x8BC5, 0x2E73, + 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, 0x8BC8, 0x8BC8, 0x23FE, + 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, 0x8BD4, 0x8BD4, 0x2401, + 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, 0x8BDD, 0x8BE4, 0x2E8C, + 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, 0x8BEB, 0x8BEB, 0x2221, + 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, 0x8BF1, 0x8BFE, 0x2E9D, + 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, 0x8C45, 0x8C4E, 0x2EAF, + 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, 0x8C57, 0x8C57, 0x21E5, + 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, 0x8C5D, 0x8C7E, 0x2EC4, + 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, 0x8C8C, 0x8C8C, 0x2EF1, + 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, 0x8C8F, 0x8C8F, 0x2121, + 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, 0x8C92, 0x8C92, 0x1FE5, + 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, 0x8C9A, 0x8C9A, 0x1E37, + 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, 0x8CA3, 0x8CA3, 0x22A6, + 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, 0x8CA6, 0x8CA6, 0x1EDA, + 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, 0x8CC0, 0x8CC0, 0x235C, + 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, 0x8CD3, 0x8CD3, 0x1E67, + 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, 0x8CD6, 0x8CD8, 0x2F2B, + 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, 0x8CF9, 0x8CF9, 0x1F16, + 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, 0x8D73, 0x8D73, 0x2389, + 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, 0x8D76, 0x8D7A, 0x2F86, + 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, 0x8D80, 0x8D87, 0x2F8E, + 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, 0x8D8F, 0x8D8F, 0x1F1A, + 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, 0x8D9F, 0x8DB8, 0x2FAA, + 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, 0x8DE2, 0x8DE2, 0x2391, + 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, 0x8DE5, 0x8DE6, 0x2FED, + 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, 0x8DF7, 0x8DF7, 0x238E, + 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, 0x8E40, 0x8E45, 0x3004, + 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, 0x8E56, 0x8E56, 0x2390, + 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, 0x8E59, 0x8E59, 0x301A, + 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, 0x8E68, 0x8E68, 0x1FE9, + 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, 0x8E6F, 0x8E6F, 0x302D, + 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, 0x8E80, 0x8E80, 0x2324, + 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, 0x8E9C, 0x8E9E, 0x3056, + 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, 0x8EA4, 0x8EA4, 0x2277, + 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, 0x8EA8, 0x8EAB, 0x305F, + 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, 0x8EAE, 0x8EAE, 0x2384, + 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, 0x8EBE, 0x8EBE, 0x2386, + 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, 0x8EC4, 0x8EC4, 0x3076, + 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, 0x8ECD, 0x8ECD, 0x1E32, + 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, 0x8ED6, 0x8ED6, 0x1F13, + 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, 0x8EEC, 0x8EEC, 0x1FE0, + 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, 0x8F52, 0x8F52, 0x2087, + 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, 0x8F55, 0x8F55, 0x1EF6, + 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, 0x8F5D, 0x8F5D, 0x2045, + 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, 0x8F65, 0x8F7E, 0x30C9, + 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, 0x8F87, 0x8F87, 0x30E9, + 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, 0x8F95, 0x8F95, 0x266E, + 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, 0x8F98, 0x8F9A, 0x30F7, + 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, 0x8F9D, 0x8F9D, 0x2188, + 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, 0x8FA2, 0x8FBC, 0x30FE, + 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, 0x8FC4, 0x8FC4, 0x1EA1, + 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, 0x8FC7, 0x8FCC, 0x3120, + 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, 0x8FD8, 0x8FD8, 0x1E7C, + 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, 0x9080, 0x909C, 0x3195, + 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, 0x909F, 0x90B9, 0x31B2, + 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, 0x90C0, 0x90C0, 0x2095, + 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, 0x90C5, 0x90C5, 0x23B9, + 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, 0x90DC, 0x90DC, 0x23BD, + 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, 0x90EE, 0x90EF, 0x31FA, + 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, 0x90F7, 0x90F7, 0x23B3, + 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, 0x9142, 0x9142, 0x2162, + 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, 0x914C, 0x914C, 0x3213, + 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, 0x9151, 0x9151, 0x23B7, + 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, 0x9155, 0x9155, 0x24DF, + 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, 0x915A, 0x915A, 0x214E, + 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, 0x915E, 0x9160, 0x321E, + 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, 0x9163, 0x9163, 0x20EB, + 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, 0x916F, 0x9175, 0x322C, + 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, 0x917A, 0x917A, 0x201B, + 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, 0x917D, 0x917E, 0x3236, + 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, 0x9185, 0x918C, 0x323C, + 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, 0x9191, 0x9191, 0x2089, + 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, 0x9194, 0x9196, 0x3248, + 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, 0x919B, 0x919B, 0x2214, + 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, 0x91AA, 0x91AA, 0x2223, + 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, 0x91BA, 0x91BA, 0x268C, + 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, 0x91BF, 0x91BF, 0x24E0, + 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, 0x91C4, 0x91CC, 0x326F, + 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, 0x91D0, 0x91D0, 0x1FFE, + 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, 0x91D3, 0x91D3, 0x327A, + 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, 0x91D6, 0x91D6, 0x1FCE, + 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, 0x91D9, 0x91D9, 0x2021, + 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, 0x91E0, 0x91E1, 0x3282, + 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, 0x91EA, 0x91EA, 0x24A4, + 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, 0x91F1, 0x91F1, 0x3290, + 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, 0x9240, 0x927E, 0x329D, + 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, 0x92B7, 0x92CD, 0x3312, + 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, 0x92D0, 0x92D0, 0x235D, + 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, 0x92D5, 0x92DE, 0x332D, + 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, 0x92E1, 0x92FD, 0x3337, + 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, 0x9350, 0x9350, 0x21FF, + 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, 0x935E, 0x936F, 0x3370, + 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, 0x9376, 0x9376, 0x1EB6, + 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, 0x938C, 0x938C, 0x20DB, + 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, 0x939E, 0x93A4, 0x33AB, + 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, 0x93A7, 0x93A7, 0x2040, + 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, 0x93B5, 0x93B7, 0x33BF, + 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, 0x93BB, 0x93BB, 0x235E, + 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, 0x93BE, 0x93C5, 0x33C5, + 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, 0x93CF, 0x93CF, 0x2093, + 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, 0x93D8, 0x93DA, 0x33DC, + 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, 0x93DD, 0x93E0, 0x33DF, + 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, 0x93E4, 0x93E4, 0x20C0, + 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, 0x93E9, 0x93E9, 0x2160, + 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, 0x93EC, 0x93EC, 0x1F8E, + 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, 0x93EF, 0x93EF, 0x2047, + 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, 0x93F2, 0x93F3, 0x33EB, + 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, 0x93F6, 0x93F9, 0x33ED, + 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, 0x93FE, 0x93FE, 0x1FCC, + 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, 0x9445, 0x944C, 0x33F8, + 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, 0x9450, 0x9450, 0x1E52, + 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, 0x9453, 0x9453, 0x228F, + 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, 0x9456, 0x9457, 0x3403, + 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, 0x945B, 0x945B, 0x1E2D, + 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, 0x945E, 0x945E, 0x3407, + 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, 0x9464, 0x9464, 0x2363, + 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, 0x9467, 0x946D, 0x340D, + 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, 0x9472, 0x9472, 0x1FF6, + 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, 0x9475, 0x9475, 0x3418, + 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, 0x9478, 0x9478, 0x2367, + 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, 0x947B, 0x947E, 0x341B, + 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, 0x9482, 0x9482, 0x2163, + 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, 0x9488, 0x9488, 0x1FFC, + 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, 0x94A2, 0x94B2, 0x343B, + 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, 0x94B5, 0x94B5, 0x2142, + 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, 0x94C0, 0x94C0, 0x1E43, + 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, 0x94CD, 0x94D7, 0x3461, + 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, 0x94E0, 0x94E0, 0x1ED7, + 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, 0x9572, 0x9572, 0x212D, + 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, 0x9583, 0x9583, 0x229B, + 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, 0x959F, 0x959F, 0x24A8, + 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, 0x95B4, 0x95B9, 0x34FF, + 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, 0x95CF, 0x95CF, 0x24A7, + 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, 0x95D2, 0x95D2, 0x24A6, + 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, 0x95D5, 0x95E0, 0x351B, + 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, 0x95E7, 0x95E7, 0x1FE7, + 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, 0x95F2, 0x95F7, 0x3535, + 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, 0x95FE, 0x95FE, 0x1F5C, + 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, 0x9657, 0x967B, 0x3556, + 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, 0x9680, 0x96FE, 0x357D, + 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, 0x9768, 0x976B, 0x3623, + 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, 0x976E, 0x976E, 0x246D, + 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, 0x9796, 0x9796, 0x246B, + 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, 0x979D, 0x979D, 0x1ECE, + 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, 0x97A4, 0x97BE, 0x3658, + 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, 0x97EE, 0x97EE, 0x21FE, + 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, 0x97F8, 0x97FE, 0x36A9, + 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, 0x9846, 0x9848, 0x36B5, + 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, 0x984F, 0x984F, 0x1F6F, + 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, 0x9872, 0x9872, 0x36DE, + 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, 0x9880, 0x9880, 0x36EA, + 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, 0x988B, 0x988B, 0x1F27, + 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, 0x98A0, 0x98A0, 0x247C, + 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, 0x98AB, 0x98B5, 0x3710, + 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, 0x98B8, 0x98B9, 0x371B, + 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, 0x98C7, 0x98C7, 0x203E, + 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, 0x98CC, 0x98CF, 0x372C, + 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, 0x98D3, 0x98D3, 0x2204, + 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, 0x98E4, 0x98E4, 0x2140, + 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, 0x98EF, 0x98EF, 0x2474, + 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, 0x98F3, 0x98FE, 0x374C, + 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, 0x9944, 0x9944, 0x375B, + 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, 0x9966, 0x9966, 0x2472, + 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, 0x996F, 0x9974, 0x3783, + 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, 0x997A, 0x997A, 0x1F8B, + 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, 0x9980, 0x9984, 0x3790, + 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, 0x9989, 0x9989, 0x2482, + 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, 0x998F, 0x9990, 0x379C, + 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, 0x9999, 0x9999, 0x1F38, + 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, 0x99AA, 0x99AF, 0x37B4, + 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, 0x99B2, 0x99B2, 0x37BA, + 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, 0x99B5, 0x99B5, 0x2471, + 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, 0x99BE, 0x99BE, 0x2470, + 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, 0x99C1, 0x99C1, 0x37C3, + 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, 0x99C9, 0x99C9, 0x246F, + 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, 0x99CF, 0x99D0, 0x37CE, + 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, 0x99DA, 0x99DA, 0x1FF5, + 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, 0x99E1, 0x99E4, 0x37DD, + 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, 0x99E8, 0x99E8, 0x2479, + 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, 0x99ED, 0x99F3, 0x37E6, + 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, 0x9A40, 0x9A49, 0x37F7, + 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, 0x9A57, 0x9A57, 0x20AD, + 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, 0x9A66, 0x9A66, 0x381A, + 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, 0x9A71, 0x9A71, 0x2159, + 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, 0x9A77, 0x9A77, 0x1F33, + 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, 0x9A88, 0x9A88, 0x1E5C, + 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, 0x9A8D, 0x9A90, 0x383A, + 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, 0x9A97, 0x9A97, 0x248A, + 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, 0x9A9B, 0x9A9B, 0x248B, + 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, 0x9A9F, 0x9AA1, 0x3847, + 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, 0x9AA4, 0x9AA9, 0x384A, + 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, 0x9AD0, 0x9AD0, 0x24C0, + 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, 0x9AD7, 0x9AD9, 0x387A, + 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, 0x9AE2, 0x9AE2, 0x20CA, + 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, 0x9AE5, 0x9AE5, 0x24C2, + 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, 0x9B80, 0x9BD0, 0x38DD, + 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, 0x9BDC, 0x9BDC, 0x23DB, + 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, 0x9C53, 0x9C53, 0x205E, + 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, 0x9C5A, 0x9C5A, 0x23E2, + 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, 0x9C5D, 0x9C74, 0x3973, + 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, 0x9C79, 0x9C79, 0x1E66, + 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, 0x9C86, 0x9C86, 0x1F63, + 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, 0x9C9E, 0x9CAA, 0x39AF, + 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, 0x9CCA, 0x9CCA, 0x22B5, + 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, 0x9CD0, 0x9CE5, 0x39DE, + 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, 0x9CE8, 0x9CEB, 0x39F4, + 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, 0x9CEE, 0x9CEE, 0x2341, + 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, 0x9CFC, 0x9CFD, 0x3A05, + 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, 0x9D42, 0x9D42, 0x2124, + 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, 0x9D47, 0x9D47, 0x23E0, + 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, 0x9D4E, 0x9D4E, 0x3A11, + 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, 0x9D61, 0x9D61, 0x20B1, + 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, 0x9D69, 0x9D69, 0x201C, + 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, 0x9D6F, 0x9D70, 0x3A2D, + 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, 0x9D75, 0x9D75, 0x1F9B, + 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, 0x9D7C, 0x9D7C, 0x3A37, + 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, 0x9D80, 0x9D89, 0x3A39, + 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, 0x9D8D, 0x9D8D, 0x1FB4, + 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, 0x9D92, 0x9D98, 0x3A48, + 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, 0x9DA1, 0x9DA1, 0x23E1, + 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, 0x9DA7, 0x9DA7, 0x23EA, + 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, 0x9DAD, 0x9DAD, 0x210E, + 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, 0x9DB3, 0x9DB3, 0x2004, + 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, 0x9DBF, 0x9DC5, 0x3A6C, + 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, 0x9DC9, 0x9DC9, 0x2264, + 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, 0x9DCE, 0x9DD1, 0x3A78, + 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, 0x9DD5, 0x9DD5, 0x1EC4, + 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, 0x9DE2, 0x9DE2, 0x20A9, + 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, 0x9DF2, 0x9DF3, 0x3A97, + 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, 0x9DF7, 0x9DF7, 0x268B, + 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, 0x9DFB, 0x9DFC, 0x3A9D, + 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, 0x9E40, 0x9E44, 0x3AA0, + 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, 0x9E48, 0x9E48, 0x2191, + 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, 0x9E52, 0x9E52, 0x1F9C, + 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, 0x9E55, 0x9E55, 0x3AB0, + 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, 0x9E5D, 0x9E5D, 0x23E9, + 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, 0x9E61, 0x9E61, 0x21D5, + 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, 0x9E64, 0x9E66, 0x3ABA, + 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, 0x9E6C, 0x9E6C, 0x1E4F, + 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, 0x9E70, 0x9E71, 0x3AC3, + 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, 0x9E74, 0x9E74, 0x23EC, + 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, 0x9E7B, 0x9E7B, 0x23D8, + 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, 0x9E80, 0x9E84, 0x3ACD, + 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, 0x9E87, 0x9E87, 0x23ED, + 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, 0x9E92, 0x9E95, 0x3ADC, + 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, 0x9E98, 0x9EA1, 0x3AE0, + 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, 0x9EA6, 0x9EA6, 0x200B, + 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, 0x9EAA, 0x9EAD, 0x3AEF, + 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, 0x9EB3, 0x9EB3, 0x2189, + 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, 0x9EB7, 0x9EB7, 0x23E7, + 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, 0x9EF6, 0x9EFE, 0x3B36, + 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, 0x9F4F, 0x9F6E, 0x3B4D, + 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, 0x9F80, 0x9F91, 0x3B7C, + 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, 0x9F98, 0x9F98, 0x24D6, + 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, 0x9FA7, 0x9FA8, 0x3BA0, + 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, 0x9FAC, 0x9FAC, 0x24D5, + 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, 0x9FCA, 0x9FCC, 0x3BC0, + 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, 0x9FE1, 0x9FE1, 0x20FC, + 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, 0x9FEC, 0x9FED, 0x3BDF, + 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, 0x9FF4, 0x9FF4, 0x1EBA, + 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, 0x9FFE, 0x9FFE, 0x3BEE, + 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, 0xA044, 0xA045, 0x3BF2, + 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, 0xA049, 0xA049, 0x2227, + 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, 0xA04F, 0xA053, 0x3BFA, + 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, 0xA05A, 0xA05A, 0x1F5D, + 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, 0xA062, 0xA062, 0x3C0A, + 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, 0xA071, 0xA071, 0x2149, + 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, 0xA075, 0xA07E, 0x3C1A, + 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, 0xA091, 0xA091, 0x2190, + 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, 0xA095, 0xA095, 0x3C36, + 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, 0xA0A9, 0xA0A9, 0x24C3, + 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, 0xA0C0, 0xA0CD, 0x3C5E, + 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, 0xA0D9, 0xA0D9, 0x1ED1, + 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, 0xA0DF, 0xA0ED, 0x3C7A, + 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, 0xA1A1, 0xA1FE, 0x0060, + 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0, + 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164, + 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225, + 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, 0xA840, 0xA87E, 0x26B3, + 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C, 0xA8C5, 0xA8EA, 0x02BC, + 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720, 0xA95C, 0xA95C, 0x2722, + 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742, 0xA996, 0xA996, 0x1E17, + 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99, 0xAA4D, 0xAA4D, 0x21B6, + 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6, 0xAA71, 0xAA71, 0x2235, + 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397, 0xAA74, 0xAA76, 0x3CC9, + 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC, 0xAA7A, 0xAA7A, 0x223F, + 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE, 0xAA80, 0xAA99, 0x3CD1, + 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB, 0xAA9C, 0xAA9C, 0x2396, + 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC, 0xAA9F, 0xAA9F, 0x20A2, + 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E, 0xAB40, 0xAB40, 0x1F64, + 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B, 0xAB44, 0xAB44, 0x3CF0, + 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139, 0xAB47, 0xAB47, 0x3CF1, + 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1, 0xAB4A, 0xAB4A, 0x239A, + 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399, 0xAB4E, 0xAB7E, 0x3CF4, + 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C, 0xAC40, 0xAC45, 0x3D46, + 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C, 0xAC71, 0xAC71, 0x2460, + 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C, 0xAC7D, 0xAC7E, 0x3D80, + 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D, 0xAC8E, 0xAC92, 0x3D8F, + 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A, 0xAC95, 0xACA0, 0x3D94, + 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461, 0xAD4A, 0xAD5D, 0x3DA9, + 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD, 0xAD61, 0xAD61, 0x2462, + 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54, 0xAD69, 0xAD73, 0x3DC5, + 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0, 0xAD80, 0xAD81, 0x3DDA, + 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC, 0xAD87, 0xAD87, 0x245D, + 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463, 0xAD8C, 0xAD90, 0x3DE3, + 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8, 0xAE40, 0xAE53, 0x3DF7, + 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B, 0xAE62, 0xAE62, 0x1E70, + 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F, 0xAE81, 0xAE84, 0x3E34, + 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38, 0xAE8B, 0xAE8B, 0x1F4E, + 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1, 0xAE95, 0xAE9F, 0x3E45, + 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50, 0xAF64, 0xAF64, 0x1FC6, + 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE, 0xAF7C, 0xAF7E, 0x3E8A, + 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01, 0xAF83, 0xAF83, 0x2200, + 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2, 0xAF8F, 0xAF8F, 0x1E97, + 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB, 0xAF92, 0xAF9B, 0x3E9A, + 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4, 0xAF9F, 0xAF9F, 0x2028, + 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7, 0xB041, 0xB042, 0x25AF, + 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1, 0xB045, 0xB04E, 0x3EA9, + 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3, 0xB054, 0xB054, 0x1E4E, + 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202, 0xB058, 0xB058, 0x25AB, + 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9, 0xB05B, 0xB05B, 0x25AD, + 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6, 0xB05E, 0xB05E, 0x3EBB, + 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4, 0xB062, 0xB062, 0x222F, + 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7, 0xB065, 0xB06B, 0x3EBC, + 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3, 0xB07D, 0xB07D, 0x1E25, + 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4, 0xB097, 0xB097, 0x25C0, + 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A, 0xB09A, 0xB0A0, 0x3EEC, + 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3, 0xB14B, 0xB14B, 0x226E, + 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD, 0xB14E, 0xB14E, 0x3EFF, + 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2, 0xB151, 0xB151, 0x3F00, + 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01, 0xB180, 0xB196, 0x3F2D, + 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44, 0xB1A1, 0xB1FE, 0x040A, + 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF, 0xB242, 0xB266, 0x3F4E, + 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73, 0xB26D, 0xB26D, 0x2074, + 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687, 0xB275, 0xB27E, 0x3F7E, + 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88, 0xB289, 0xB289, 0x268D, + 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0, 0xB29B, 0xB2A0, 0x3FA0, + 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6, 0xB343, 0xB343, 0x1FAB, + 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8, 0xB371, 0xB37E, 0x3FD5, + 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9, 0xB389, 0xB38B, 0x3FEB, + 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE, 0xB38E, 0xB38E, 0x21FA, + 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6, 0xB440, 0xB453, 0x4001, + 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015, 0xB458, 0xB458, 0x24E4, + 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6, 0xB45F, 0xB45F, 0x20F7, + 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B, 0xB462, 0xB474, 0x401E, + 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031, 0xB47E, 0xB47E, 0x24EC, + 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB, 0xB484, 0xB488, 0x403C, + 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041, 0xB493, 0xB493, 0x24EA, + 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524, 0xB540, 0xB540, 0x4057, + 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058, 0xB54B, 0xB54B, 0x1E27, + 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6, 0xB557, 0xB559, 0x406B, + 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012, 0xB55C, 0xB55C, 0x1EEC, + 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8, 0xB562, 0xB57E, 0x4072, + 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66, 0xB59D, 0xB59D, 0x24DC, + 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582, 0xB640, 0xB651, 0x40AE, + 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0, 0xB655, 0xB655, 0x24DD, + 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E, 0xB65A, 0xB65A, 0x40C5, + 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8, 0xB65D, 0xB67E, 0x40C6, + 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0, 0xB740, 0xB74D, 0x4109, + 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117, 0xB751, 0xB751, 0x1E80, + 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677, 0xB75A, 0xB763, 0x4120, + 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69, 0xB766, 0xB766, 0x222B, + 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F, 0xB778, 0xB778, 0x1F5B, + 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B, 0xB781, 0xB781, 0x4140, + 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141, 0xB7A1, 0xB7FE, 0x063E, + 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0, 0xB844, 0xB844, 0x2186, + 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED, 0xB847, 0xB84C, 0x4163, + 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169, 0xB851, 0xB851, 0x1FEA, + 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4, 0xB85B, 0xB85B, 0x20E1, + 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8, 0xB85E, 0xB85E, 0x2260, + 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2, 0xB861, 0xB876, 0x4176, + 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C, 0xB880, 0xB881, 0x4193, + 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195, 0xB8A1, 0xB8FE, 0x069C, + 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41, 0xB951, 0xB960, 0x41C3, + 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3, 0xB97B, 0xB97B, 0x1F86, + 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF, 0xB99D, 0xB99D, 0x1FB3, + 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF, 0xB9A1, 0xB9FE, 0x06FA, + 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4, 0xBA43, 0xBA43, 0x4210, + 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211, 0xBA56, 0xBA56, 0x25E3, + 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111, 0xBA5A, 0xBA5F, 0x4224, + 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A, 0xBA6A, 0xBA6A, 0x25E7, + 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041, 0xBA75, 0xBA7E, 0x423C, + 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA, 0xBA85, 0xBA85, 0x424A, + 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B, 0xBA88, 0xBA88, 0x25EC, + 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB, 0xBA8E, 0xBA9D, 0x4250, + 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D, 0xBAA0, 0xBAA0, 0x4260, + 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7, 0xBB41, 0xBB48, 0x4261, + 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269, 0xBB58, 0xBB58, 0x25E9, + 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE, 0xBB5C, 0xBB5C, 0x203A, + 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693, 0xBB61, 0xBB64, 0x427C, + 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED, 0xBB67, 0xBB67, 0x4280, + 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281, 0xBB6A, 0xBB6A, 0x2065, + 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3, 0xBB6F, 0xBB7E, 0x4285, + 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6, 0xBC40, 0xBC51, 0x42B6, + 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC, 0xBC54, 0xBC59, 0x42C8, + 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE, 0xBC61, 0xBC61, 0x269B, + 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3, 0xBC64, 0xBC64, 0x42D5, + 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6, 0xBC67, 0xBC67, 0x25F4, + 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B, 0xBC6A, 0xBC6C, 0x42D8, + 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB, 0xBC6F, 0xBC6F, 0x1F7B, + 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D, 0xBC72, 0xBC72, 0x42DD, + 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48, 0xBC75, 0xBC75, 0x241C, + 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF, 0xBC79, 0xBC79, 0x219A, + 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091, 0xBC7C, 0xBC7D, 0x42DF, + 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1, 0xBC82, 0xBC82, 0x2423, + 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422, 0xBC85, 0xBC85, 0x42E3, + 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4, 0xBC88, 0xBC88, 0x228D, + 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8, 0xBC8B, 0xBC8B, 0x2421, + 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3, 0xBC90, 0xBC99, 0x42E8, + 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426, 0xBC9C, 0xBC9C, 0x2425, + 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2, 0xBCA1, 0xBCFE, 0x0814, + 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A, 0xBD43, 0xBD43, 0x2424, + 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428, 0xBD46, 0xBD47, 0x42F8, + 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429, 0xBD4A, 0xBD4A, 0x42FA, + 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB, 0xBD4D, 0xBD4D, 0x22BE, + 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31, 0xBD50, 0xBD56, 0x42FD, + 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304, 0xBD59, 0xBD59, 0x1FB5, + 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B, 0xBD67, 0xBD67, 0x1FAF, + 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068, 0xBD6B, 0xBD6B, 0x21E4, + 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21, 0xBD70, 0xBD70, 0x4316, + 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317, 0xBD79, 0xBD79, 0x217C, + 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D, 0xBD7C, 0xBD7D, 0x431E, + 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320, 0xBD81, 0xBD81, 0x1FD1, + 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33, 0xBD8A, 0xBD8A, 0x4328, + 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329, 0xBD8E, 0xBD8E, 0x242E, + 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430, 0xBD91, 0xBD91, 0x21DB, + 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158, 0xBD98, 0xBD9A, 0x4331, + 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334, 0xBDA1, 0xBDFE, 0x0872, + 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9, 0xBE44, 0xBE44, 0x433C, + 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D, 0xBE49, 0xBE49, 0x1E8E, + 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340, 0xBE51, 0xBE51, 0x21C5, + 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192, 0xBE54, 0xBE54, 0x4346, + 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19, 0xBE57, 0xBE57, 0x218C, + 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3, 0xBE5A, 0xBE5C, 0x4347, + 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438, 0xBE5F, 0xBE5F, 0x2432, + 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A, 0xBE62, 0xBE62, 0x1E9C, + 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085, 0xBE65, 0xBE68, 0x434B, + 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F, 0xBE6C, 0xBE6C, 0x243B, + 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7, 0xBE70, 0xBE70, 0x2433, + 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054, 0xBE77, 0xBE77, 0x21DE, + 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434, 0xBE7A, 0xBE7B, 0x4359, + 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89, 0xBE7E, 0xBE7E, 0x243C, + 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E, 0xBE84, 0xBE84, 0x1ED8, + 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF, 0xBE87, 0xBE87, 0x2445, + 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249, 0xBE8A, 0xBE8B, 0x4360, + 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362, 0xBE8E, 0xBE8E, 0x1E47, + 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363, 0xBE92, 0xBE92, 0x2086, + 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196, 0xBE96, 0xBE96, 0x4367, + 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F, 0xBE99, 0xBE99, 0x4368, + 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369, 0xBE9C, 0xBE9C, 0x2442, + 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E, 0xBEA0, 0xBEA0, 0x436C, + 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6, 0xBF41, 0xBF4C, 0x436D, + 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446, 0xBF4F, 0xBF4F, 0x244B, + 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379, 0xBF55, 0xBF55, 0x2427, + 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D, 0xBF60, 0xBF60, 0x1F0F, + 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447, 0xBF63, 0xBF63, 0x2449, + 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387, 0xBF68, 0xBF68, 0x21C2, + 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E, 0xBF6D, 0xBF6F, 0x438D, + 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390, 0xBF72, 0xBF72, 0x244A, + 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391, 0xBF76, 0xBF76, 0x22BB, + 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393, 0xBF79, 0xBF79, 0x2694, + 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6, 0xBF7C, 0xBF7C, 0x2051, + 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E, 0xBF80, 0xBF81, 0x4395, + 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D, 0xBF84, 0xBF88, 0x4397, + 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451, 0xBF8B, 0xBF94, 0x439C, + 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6, 0xBF97, 0xBF97, 0x2289, + 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7, 0xBF9D, 0xBF9D, 0x2454, + 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E, 0xC040, 0xC040, 0x20FB, + 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440, 0xC045, 0xC04A, 0x43B1, + 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61, 0xC04D, 0xC04D, 0x269D, + 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A, 0xC050, 0xC050, 0x2456, + 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458, 0xC053, 0xC054, 0x43B8, + 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA, 0xC05B, 0xC05B, 0x221A, + 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A, 0xC05F, 0xC05F, 0x244D, + 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1, 0xC069, 0xC069, 0x2453, + 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420, 0xC06C, 0xC06C, 0x43CA, + 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685, 0xC06F, 0xC06F, 0x43CB, + 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC, 0xC074, 0xC074, 0x2224, + 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF, 0xC077, 0xC077, 0x21BA, + 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A, 0xC07A, 0xC07B, 0x43D1, + 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3, 0xC080, 0xC09A, 0x43D5, + 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0, 0xC09D, 0xC09D, 0x269A, + 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C, 0xC140, 0xC14F, 0x43F4, + 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404, 0xC154, 0xC154, 0x1E2C, + 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062, 0xC160, 0xC160, 0x24F1, + 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2, 0xC163, 0xC174, 0x4412, + 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424, 0xC178, 0xC178, 0x2215, + 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C, 0xC195, 0xC195, 0x21AE, + 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA, 0xC240, 0xC24D, 0x444C, + 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A, 0xC265, 0xC265, 0x25C2, + 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1, 0xC268, 0xC27C, 0x4471, + 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486, 0xC280, 0xC283, 0x4487, + 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B, 0xC293, 0xC293, 0x2017, + 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125, 0xC296, 0xC296, 0x214D, + 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4, 0xC299, 0xC299, 0x209D, + 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A, 0xC29C, 0xC29C, 0x25C3, + 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179, 0xC2A1, 0xC2FE, 0x0A48, + 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E, 0xC343, 0xC343, 0x2155, + 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2, 0xC37C, 0xC37E, 0x44D7, + 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7, 0xC385, 0xC39A, 0x44DE, + 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4, 0xC3A1, 0xC3FE, 0x0AA6, + 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123, 0xC44A, 0xC44B, 0x4502, + 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504, 0xC454, 0xC454, 0x24C9, + 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094, 0xC459, 0xC45A, 0x450E, + 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510, 0xC463, 0xC463, 0x1E77, + 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06, 0xC478, 0xC479, 0x452A, + 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C, 0xC480, 0xC480, 0x4530, + 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531, 0xC491, 0xC491, 0x1EAD, + 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8, 0xC494, 0xC497, 0x4540, + 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544, 0xC49A, 0xC49A, 0x20C5, + 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA, 0xC49D, 0xC4A0, 0x4546, + 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A, 0xC544, 0xC544, 0x1FF0, + 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6, 0xC547, 0xC54A, 0x454F, + 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE, 0xC54D, 0xC551, 0x4553, + 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558, 0xC55F, 0xC55F, 0x2161, + 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B, 0xC564, 0xC564, 0x21D9, + 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9, 0xC567, 0xC57E, 0x4567, + 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61, 0xC594, 0xC59B, 0x4592, + 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A, 0xC59E, 0xC59E, 0x1F98, + 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62, 0xC640, 0xC640, 0x459D, + 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E, 0xC644, 0xC644, 0x1F88, + 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8, 0xC648, 0xC662, 0x45A2, + 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD, 0xC672, 0xC672, 0x2336, + 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7, 0xC6A1, 0xC6FE, 0x0BC0, + 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB, 0xC767, 0xC76E, 0x461E, + 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626, 0xC776, 0xC776, 0x1F7D, + 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333, 0xC77C, 0xC77E, 0x4630, + 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E, 0xC840, 0xC840, 0x4654, + 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655, 0xC84F, 0xC84F, 0x2334, + 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1, 0xC853, 0xC865, 0x4664, + 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677, 0xC86E, 0xC86E, 0x2349, + 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B, 0xC880, 0xC886, 0x468D, + 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694, 0xC892, 0xC892, 0x2347, + 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193, 0xC895, 0xC898, 0x469F, + 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3, 0xC89D, 0xC89D, 0x1F62, + 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C, 0xC940, 0xC94E, 0x46A9, + 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348, 0xC951, 0xC96D, 0x46B8, + 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5, 0xC970, 0xC970, 0x2345, + 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12, 0xC978, 0xC97E, 0x46DC, + 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018, 0xC990, 0xC990, 0x2335, + 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C, 0xC99D, 0xC9A0, 0x46FD, + 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701, 0xCA4E, 0xCA4E, 0x266F, + 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351, 0xCA57, 0xCA58, 0x4716, + 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718, 0xCA5C, 0xCA5C, 0x2338, + 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B, 0xCA62, 0xCA6D, 0x471E, + 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A, 0xCA72, 0xCA72, 0x234F, + 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D, 0xCA78, 0xCA7A, 0x4731, + 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331, 0xCA7D, 0xCA7D, 0x4734, + 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735, 0xCA81, 0xCA81, 0x233B, + 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350, 0xCA8A, 0xCA8D, 0x473D, + 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6, 0xCA90, 0xCA91, 0x4741, + 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743, 0xCA9A, 0xCA9A, 0x2355, + 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38, 0xCB40, 0xCB42, 0x4750, + 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753, 0xCB45, 0xCB45, 0x1F74, + 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330, 0xCB48, 0xCB4A, 0x4755, + 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758, 0xCB4E, 0xCB4E, 0x20DA, + 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A, 0xCB58, 0xCB5C, 0x4762, + 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767, 0xCB5F, 0xCB5F, 0x2107, + 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F, 0xCB6B, 0xCB7A, 0x4772, + 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343, 0xCB7D, 0xCB7E, 0x4782, + 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212, 0xCB88, 0xCB8D, 0x478B, + 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791, 0xCB92, 0xCB92, 0x2359, + 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254, 0xCB9D, 0xCB9D, 0x479D, + 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E, 0xCBA1, 0xCBFE, 0x0D96, + 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357, 0xCC42, 0xCC48, 0x47A0, + 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042, 0xCC4B, 0xCC4B, 0x2153, + 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB, 0xCC50, 0xCC5B, 0x47AA, + 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6, 0xCC60, 0xCC60, 0x2356, + 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337, 0xCC65, 0xCC6C, 0x47BC, + 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4, 0xCC79, 0xCC79, 0x2353, + 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061, 0xCC7E, 0xCC7E, 0x47D2, + 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95, 0xCC8F, 0xCC93, 0x47E1, + 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6, 0xCC96, 0xCC96, 0x1F42, + 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8, 0xCC9E, 0xCCA0, 0x47ED, + 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0, 0xCD80, 0xCD8F, 0x482F, + 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F, 0xCD98, 0xCD98, 0x25D7, + 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52, 0xCE40, 0xCE66, 0x484E, + 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875, 0xCE72, 0xCE72, 0x21B2, + 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B, 0xCE81, 0xCE81, 0x219E, + 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC, 0xCE88, 0xCE9A, 0x4891, + 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4, 0xCE9E, 0xCE9E, 0x2226, + 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0, 0xCF40, 0xCF4D, 0x48A8, + 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6, 0xCF55, 0xCF55, 0x227B, + 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE, 0xCF59, 0xCF5B, 0x48BE, + 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1, 0xCF6C, 0xCF6C, 0x25D5, + 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B, 0xCF74, 0xCF74, 0x48D6, + 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7, 0xCF78, 0xCF78, 0x1E89, + 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9, 0xCF7D, 0xCF7E, 0x48DC, + 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211, 0xCF82, 0xCF88, 0x48DF, + 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6, 0xCF8B, 0xCF92, 0x48E6, + 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF, 0xCF95, 0xCF9D, 0x48EE, + 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7, 0xCFA0, 0xCFA0, 0x25D8, + 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8, 0xD04D, 0xD04D, 0x1F29, + 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B, 0xD052, 0xD054, 0x4908, + 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B, 0xD05C, 0xD05C, 0x2297, + 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690, 0xD061, 0xD066, 0x4914, + 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A, 0xD06C, 0xD06C, 0x2198, + 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88, 0xD06F, 0xD07C, 0x491F, + 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D, 0xD080, 0xD0A0, 0x492E, + 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F, 0xD155, 0xD155, 0x25F1, + 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C, 0xD15A, 0xD160, 0x4967, + 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC, 0xD163, 0xD174, 0x496E, + 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980, 0xD17D, 0xD17D, 0x2676, + 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988, 0xD19D, 0xD19D, 0x1FE1, + 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5, 0xD1A1, 0xD1FE, 0x0FCA, + 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7, 0xD243, 0xD243, 0x22DD, + 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD, 0xD24E, 0xD25B, 0x49B2, + 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0, 0xD263, 0xD263, 0x25BC, + 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6, 0xD268, 0xD268, 0x25BF, + 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187, 0xD26E, 0xD26E, 0x49CD, + 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE, 0xD272, 0xD272, 0x1E7F, + 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD, 0xD276, 0xD27E, 0x49D2, + 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96, 0xD28B, 0xD28D, 0x49E5, + 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8, 0xD292, 0xD292, 0x2084, + 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136, 0xD296, 0xD296, 0x49ED, + 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE, 0xD2A0, 0xD2A0, 0x24BA, + 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6, 0xD344, 0xD344, 0x24BC, + 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4, 0xD349, 0xD349, 0x49FD, + 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE, 0xD34D, 0xD34D, 0x24BD, + 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE, 0xD351, 0xD354, 0x4A02, + 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06, 0xD358, 0xD358, 0x1FD2, + 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD, 0xD35C, 0xD35C, 0x4A0A, + 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D, 0xD35F, 0xD377, 0x4A0B, + 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24, 0xD37A, 0xD37A, 0x260A, + 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94, 0xD37D, 0xD37E, 0x4A26, + 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF, 0xD386, 0xD386, 0x1ECB, + 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D, 0xD38B, 0xD38B, 0x1F77, + 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB, 0xD38E, 0xD38E, 0x4A31, + 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32, 0xD391, 0xD391, 0x216F, + 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0, 0xD394, 0xD395, 0x4A34, + 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36, 0xD398, 0xD398, 0x22E2, + 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37, 0xD39B, 0xD39B, 0x1F78, + 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2, 0xD39F, 0xD39F, 0x4A3A, + 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086, 0xD440, 0xD440, 0x4A3B, + 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C, 0xD445, 0xD445, 0x1FD3, + 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5, 0xD448, 0xD44B, 0x4A40, + 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44, 0xD44F, 0xD44F, 0x211F, + 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD, 0xD454, 0xD455, 0x4A49, + 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B, 0xD458, 0xD458, 0x22E7, + 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282, 0xD45D, 0xD461, 0x4A4F, + 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54, 0xD467, 0xD467, 0x22E8, + 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4, 0xD46F, 0xD46F, 0x4A5E, + 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F, 0xD472, 0xD472, 0x22EB, + 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9, 0xD475, 0xD475, 0x20BD, + 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA, 0xD479, 0xD47A, 0x4A63, + 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65, 0xD47E, 0xD47E, 0x1E9E, + 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6, 0xD483, 0xD483, 0x21E7, + 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69, 0xD487, 0xD487, 0x2137, + 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C, 0xD48B, 0xD48B, 0x4A6D, + 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2, 0xD48E, 0xD48E, 0x1F37, + 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E, 0xD491, 0xD491, 0x22EF, + 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10, 0xD494, 0xD494, 0x21C8, + 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1, 0xD497, 0xD49B, 0x4A70, + 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75, 0xD49F, 0xD49F, 0x22EE, + 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4, 0xD540, 0xD542, 0x4A78, + 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E, 0xD545, 0xD545, 0x22EC, + 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B, 0xD54A, 0xD54A, 0x20FE, + 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9, 0xD550, 0xD550, 0x4A81, + 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82, 0xD554, 0xD554, 0x2236, + 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7, 0xD557, 0xD559, 0x4A85, + 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88, 0xD55C, 0xD55C, 0x1E82, + 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89, 0xD55F, 0xD55F, 0x21A4, + 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8, 0xD562, 0xD562, 0x2151, + 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60, 0xD565, 0xD567, 0x4A8B, + 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E, 0xD56C, 0xD56C, 0x2145, + 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC, 0xD56F, 0xD571, 0x4A92, + 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95, 0xD575, 0xD575, 0x1EF5, + 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218, 0xD579, 0xD57A, 0x4A99, + 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B, 0xD57E, 0xD57E, 0x2300, + 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4, 0xD582, 0xD583, 0x4A9E, + 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0, 0xD586, 0xD586, 0x22FD, + 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA, 0xD589, 0xD589, 0x4AA2, + 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3, 0xD58C, 0xD58C, 0x22FB, + 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC, 0xD58F, 0xD58F, 0x2027, + 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060, 0xD594, 0xD594, 0x22FF, + 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE, 0xD599, 0xD599, 0x1EC7, + 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C, 0xD59C, 0xD59E, 0x4AAC, + 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF, 0xD5A1, 0xD5FE, 0x1142, + 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0, 0xD642, 0xD642, 0x230A, + 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1, 0xD647, 0xD647, 0x2303, + 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307, 0xD64A, 0xD64A, 0x230B, + 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F, 0xD64E, 0xD64E, 0x4AB7, + 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8, 0xD652, 0xD652, 0x2302, + 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D, 0xD655, 0xD655, 0x4ABA, + 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB, 0xD658, 0xD658, 0x2308, + 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC, 0xD65B, 0xD65B, 0x4ABD, + 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305, 0xD65E, 0xD65E, 0x2197, + 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171, 0xD661, 0xD661, 0x2298, + 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57, 0xD666, 0xD668, 0x4AC2, + 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5, 0xD66B, 0xD66B, 0x2311, + 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304, 0xD670, 0xD670, 0x4AC9, + 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35, 0xD673, 0xD673, 0x4ACA, + 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310, 0xD676, 0xD676, 0x1FA3, + 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6, 0xD679, 0xD67B, 0x4ACC, + 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF, 0xD680, 0xD682, 0x4AD1, + 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4, 0xD686, 0xD686, 0x2312, + 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313, 0xD689, 0xD68D, 0x4AD6, + 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB, 0xD694, 0xD694, 0x1FBA, + 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078, 0xD69A, 0xD6A0, 0x4AE4, + 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB, 0xD743, 0xD743, 0x2288, + 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316, 0xD749, 0xD749, 0x1F6B, + 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314, 0xD751, 0xD751, 0x4AF8, + 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315, 0xD754, 0xD754, 0x2168, + 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4, 0xD757, 0xD763, 0x4AFA, + 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07, 0xD767, 0xD767, 0x2219, + 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09, 0xD76C, 0xD76C, 0x20D5, + 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A, 0xD770, 0xD774, 0x4B0E, + 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13, 0xD778, 0xD778, 0x1ED3, + 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B, 0xD783, 0xD783, 0x1E49, + 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B, 0xD788, 0xD78A, 0x4B21, + 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8, 0xD78D, 0xD78D, 0x4B24, + 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319, 0xD790, 0xD794, 0x4B25, + 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A, 0xD797, 0xD797, 0x2317, + 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE, 0xD840, 0xD84C, 0x4B34, + 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41, 0xD853, 0xD853, 0x1EFD, + 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71, 0xD890, 0xD890, 0x1E3B, + 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81, 0xD893, 0xD893, 0x1F0C, + 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24, 0xD896, 0xD899, 0x4B82, + 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65, 0xD89C, 0xD89C, 0x1EF0, + 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30, 0xD89F, 0xD89F, 0x2261, + 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257, 0xD940, 0xD940, 0x4B87, + 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB, 0xD943, 0xD943, 0x4B88, + 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8, 0xD946, 0xD946, 0x1F39, + 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48, 0xD949, 0xD949, 0x2070, + 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A, 0xD94C, 0xD94C, 0x24AC, + 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176, 0xD94F, 0xD94F, 0x24AD, + 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B, 0xD952, 0xD952, 0x1F45, + 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B, 0xD955, 0xD955, 0x202F, + 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0, 0xD958, 0xD958, 0x4B8C, + 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F, 0xD95B, 0xD95B, 0x4B8D, + 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E, 0xD963, 0xD963, 0x24B2, + 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51, 0xD966, 0xD966, 0x4B94, + 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95, 0xD96C, 0xD96C, 0x24B3, + 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F, 0xD96F, 0xD96F, 0x4B9A, + 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B, 0xD972, 0xD972, 0x20B4, + 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB, 0xD975, 0xD975, 0x2072, + 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C, 0xD978, 0xD978, 0x1F0A, + 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D, 0xD97C, 0xD97C, 0x2291, + 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278, 0xD980, 0xD980, 0x1ED4, + 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3, 0xD988, 0xD98C, 0x4BA5, + 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7, 0xD98F, 0xD98F, 0x1F28, + 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7, 0xD992, 0xD996, 0x4BAA, + 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1, 0xD999, 0xD99A, 0x4BAF, + 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1, 0xD99D, 0xD99D, 0x225B, + 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2, 0xD9A0, 0xD9A0, 0x2115, + 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3, 0xDA41, 0xDA41, 0x222A, + 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4, 0xDA48, 0xDA48, 0x213D, + 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15, 0xDA4E, 0xDA4E, 0x225C, + 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14, 0xDA74, 0xDA76, 0x4BE1, + 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4, 0xDA80, 0xDA84, 0x4BEB, + 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0, 0xDA8E, 0xDA8E, 0x25F8, + 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313, 0xDB40, 0xDB5F, 0x4C0A, + 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A, 0xDB78, 0xDB78, 0x2230, + 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47, 0xDB84, 0xDB84, 0x25FD, + 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600, 0xDB8C, 0xDB97, 0x4C51, + 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D, 0xDBA1, 0xDBFE, 0x1371, + 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF, 0xDC46, 0xDC4E, 0x4C6A, + 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C, 0xDC51, 0xDC51, 0x2602, + 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D, 0xDC54, 0xDC54, 0x4C74, + 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE, 0xDC57, 0xDC57, 0x2603, + 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601, 0xDC5E, 0xDC61, 0x4C7A, + 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E, 0xDC66, 0xDC66, 0x1EA3, + 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81, 0xDC6B, 0xDC6B, 0x2607, + 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0, 0xDC7D, 0xDC7E, 0x4C94, + 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B, 0xDC88, 0xDC88, 0x2267, + 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6, 0xDC8B, 0xDC8D, 0x4C9D, + 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0, 0xDC90, 0xDC90, 0x248C, + 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D, 0xDC98, 0xDC9A, 0x4CA7, + 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA, 0xDCA0, 0xDCA0, 0x2494, + 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE, 0xDD46, 0xDD46, 0x2493, + 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E, 0xDD4E, 0xDD52, 0x4CBA, + 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491, 0xDD55, 0xDD55, 0x2496, + 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492, 0xDD58, 0xDD58, 0x4CBF, + 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0, 0xDD5E, 0xDD5E, 0x1FB1, + 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A, 0xDD61, 0xDD61, 0x4CC5, + 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6, 0xDD64, 0xDD64, 0x2258, + 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7, 0xDD6D, 0xDD6D, 0x249B, + 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09, 0xDD70, 0xDD70, 0x20E6, + 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026, 0xDD77, 0xDD77, 0x249F, + 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D, 0xDD7B, 0xDD7E, 0x4CD4, + 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B, 0xDD82, 0xDD82, 0x249C, + 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A, 0xDD86, 0xDD86, 0x205B, + 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70, 0xDD8C, 0xDD8E, 0x4CDF, + 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2, 0xDD94, 0xDD94, 0x213B, + 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07, 0xDD98, 0xDD99, 0x4CE8, + 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237, 0xDD9C, 0xDD9D, 0x4CEA, + 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC, 0xDDA0, 0xDDA0, 0x21B3, + 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245, 0xDE41, 0xDE41, 0x24A1, + 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8, 0xDE45, 0xDE47, 0x4CEF, + 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0, 0xDE4A, 0xDE4E, 0x4CF2, + 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7, 0xDE5A, 0xDE5A, 0x1F46, + 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380, 0xDE5D, 0xDE5D, 0x2495, + 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490, 0xDE60, 0xDE6A, 0x4D03, + 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E, 0xDE6F, 0xDE6F, 0x1E9D, + 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A, 0xDE72, 0xDE72, 0x20AA, + 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D, 0xDE92, 0xDE92, 0x267B, + 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2, 0xDEA0, 0xDEA0, 0x4D3B, + 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E, 0xDF41, 0xDF41, 0x4D3C, + 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D, 0xDF4D, 0xDF4D, 0x1FBB, + 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253, 0xDF5D, 0xDF5D, 0x4D55, + 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6, 0xDF60, 0xDF60, 0x218E, + 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC, 0xDF65, 0xDF65, 0x4D59, + 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A, 0xDF68, 0xDF68, 0x224A, + 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133, 0xDF6E, 0xDF73, 0x4D5F, + 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65, 0xDF77, 0xDF77, 0x20CF, + 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67, 0xDF7A, 0xDF7A, 0x220F, + 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029, 0xDF7D, 0xDF7D, 0x4D69, + 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55, 0xDF81, 0xDF82, 0x4D6A, + 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C, 0xDF85, 0xDF85, 0x1E46, + 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063, 0xDF8A, 0xDF8A, 0x23F3, + 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9, 0xE040, 0xE04F, 0x4D86, + 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96, 0xE05D, 0xE05D, 0x2233, + 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320, 0xE06A, 0xE06B, 0x4DAD, + 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF, 0xE075, 0xE075, 0x22BC, + 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C, 0xE078, 0xE078, 0x4DB8, + 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9, 0xE080, 0xE086, 0x4DBE, + 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5, 0xE08D, 0xE08D, 0x2287, + 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D, 0xE090, 0xE090, 0x1EAB, + 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D, 0xE093, 0xE093, 0x4DCC, + 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD, 0xE097, 0xE097, 0x231B, + 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547, 0xE140, 0xE141, 0x4DD8, + 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA, 0xE164, 0xE164, 0x2255, + 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F, 0xE169, 0xE173, 0x4DFE, + 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4, 0xE176, 0xE17E, 0x4E09, + 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B, 0xE185, 0xE185, 0x21D8, + 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA, 0xE188, 0xE188, 0x4E17, + 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18, 0xE18C, 0xE18C, 0x2134, + 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3, 0xE191, 0xE191, 0x24F8, + 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7, 0xE194, 0xE194, 0x1EC8, + 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C, 0xE198, 0xE198, 0x2280, + 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5, 0xE19F, 0xE19F, 0x24FB, + 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5, 0xE240, 0xE240, 0x4E24, + 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25, 0xE243, 0xE243, 0x1EED, + 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD, 0xE250, 0xE250, 0x4E31, + 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32, 0xE253, 0xE253, 0x24FE, + 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33, 0xE25A, 0xE25A, 0x2508, + 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38, 0xE25E, 0xE25E, 0x2506, + 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF, 0xE263, 0xE263, 0x2090, + 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD, 0xE268, 0xE268, 0x1F25, + 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503, 0xE26B, 0xE26B, 0x2502, + 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A, 0xE26F, 0xE26F, 0x20A6, + 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5, 0xE279, 0xE27C, 0x4E4B, + 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F, 0xE280, 0xE280, 0x2507, + 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505, 0xE283, 0xE288, 0x4E50, + 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56, 0xE28B, 0xE28B, 0x2515, + 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C, 0xE28F, 0xE28F, 0x2031, + 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B, 0xE293, 0xE293, 0x250F, + 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509, 0xE296, 0xE297, 0x4E5B, + 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234, 0xE29A, 0xE29A, 0x2513, + 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D, 0xE2A0, 0xE2A0, 0x2501, + 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61, 0xE342, 0xE342, 0x2517, + 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63, 0xE347, 0xE347, 0x2518, + 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56, 0xE34C, 0xE34E, 0x4E69, + 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C, 0xE351, 0xE351, 0x20D3, + 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A, 0xE355, 0xE355, 0x20CE, + 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510, 0xE359, 0xE35B, 0x4E71, + 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74, 0xE360, 0xE360, 0x250A, + 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511, 0xE368, 0xE370, 0x4E7C, + 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85, 0xE373, 0xE373, 0x251E, + 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86, 0xE378, 0xE378, 0x252D, + 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89, 0xE37C, 0xE37C, 0x2532, + 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B, 0xE380, 0xE389, 0x4E8C, + 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96, 0xE38C, 0xE38C, 0x252C, + 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528, 0xE390, 0xE390, 0x4E99, + 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A, 0xE393, 0xE393, 0x252F, + 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC, 0xE396, 0xE398, 0x4E9C, + 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F, 0xE39C, 0xE39C, 0x2535, + 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D, 0xE39F, 0xE39F, 0x2526, + 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661, 0xE440, 0xE440, 0x2534, + 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F, 0xE443, 0xE443, 0x2531, + 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3, 0xE448, 0xE448, 0x2525, + 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD, 0xE44F, 0xE44F, 0x4EAB, + 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC, 0xE452, 0xE452, 0x2172, + 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD, 0xE458, 0xE458, 0x204F, + 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543, 0xE45B, 0xE45B, 0x4EB2, + 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3, 0xE45E, 0xE45E, 0x1E3C, + 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529, 0xE463, 0xE464, 0x4EB7, + 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9, 0xE468, 0xE468, 0x1EFF, + 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F, 0xE474, 0xE474, 0x4EC5, + 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6, 0xE479, 0xE479, 0x2523, + 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A, 0xE47C, 0xE47C, 0x2545, + 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D, 0xE480, 0xE480, 0x4ECA, + 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB, 0xE484, 0xE484, 0x2103, + 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C, 0xE487, 0xE487, 0x253B, + 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD, 0xE48D, 0xE48D, 0x2540, + 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD, 0xE490, 0xE492, 0x4ED2, + 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5, 0xE498, 0xE498, 0x254B, + 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547, 0xE49E, 0xE49F, 0x254F, + 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF, 0xE540, 0xE545, 0x4EDE, + 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4, 0xE548, 0xE548, 0x2546, + 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C, 0xE54C, 0xE54D, 0x4EE7, + 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552, 0xE550, 0xE550, 0x2530, + 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9, 0xE555, 0xE555, 0x2551, + 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC, 0xE558, 0xE558, 0x20D2, + 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8, 0xE55D, 0xE55D, 0x4EF0, + 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1, 0xE561, 0xE561, 0x21AB, + 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D, 0xE565, 0xE565, 0x1EA5, + 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C, 0xE569, 0xE569, 0x2080, + 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D, 0xE56D, 0xE56D, 0x4EF9, + 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA, 0xE575, 0xE575, 0x254A, + 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00, 0xE578, 0xE578, 0x254E, + 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC, 0xE57C, 0xE57C, 0x2554, + 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05, 0xE581, 0xE581, 0x1F3C, + 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5, 0xE584, 0xE589, 0x4F07, + 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D, 0xE58E, 0xE58E, 0x2268, + 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6, 0xE592, 0xE599, 0x4F12, + 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553, 0xE59C, 0xE59E, 0x4F1A, + 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D, 0xE5A1, 0xE5FE, 0x171D, + 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E, 0xE644, 0xE644, 0x2559, + 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97, 0xE64A, 0xE64A, 0x2555, + 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D, 0xE64F, 0xE651, 0x4F28, + 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B, 0xE656, 0xE656, 0x207C, + 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A, 0xE659, 0xE65A, 0x4F2F, + 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31, 0xE65E, 0xE65E, 0x1E34, + 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E, 0xE66A, 0xE66A, 0x4F3D, + 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E, 0xE675, 0xE675, 0x21A2, + 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47, 0xE679, 0xE679, 0x2563, + 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49, 0xE67C, 0xE67C, 0x252E, + 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A, 0xE680, 0xE680, 0x1F1B, + 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283, 0xE683, 0xE683, 0x4F4C, + 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D, 0xE687, 0xE687, 0x20A0, + 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565, 0xE68A, 0xE68B, 0x4F50, + 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52, 0xE693, 0xE693, 0x2562, + 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C, 0xE698, 0xE69A, 0x4F5B, + 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020, 0xE69D, 0xE69E, 0x4F5E, + 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A, 0xE6A1, 0xE6FE, 0x177B, + 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E, 0xE744, 0xE747, 0x4F63, + 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C, 0xE74A, 0xE74C, 0x4F67, + 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B, 0xE750, 0xE750, 0x1E6F, + 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4, 0xE753, 0xE753, 0x2567, + 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B, 0xE756, 0xE758, 0x4F6C, + 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F, 0xE766, 0xE766, 0x252B, + 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571, 0xE769, 0xE769, 0x4F7C, + 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D, 0xE774, 0xE774, 0x2522, + 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533, 0xE77D, 0xE77E, 0x4F8D, + 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A, 0xE783, 0xE783, 0x4F91, + 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573, 0xE786, 0xE786, 0x256F, + 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293, 0xE78B, 0xE78B, 0x2578, + 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570, 0xE790, 0xE791, 0x4F98, + 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A, 0xE798, 0xE799, 0x2541, + 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F, 0xE7A0, 0xE7A0, 0x201A, + 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4, 0xE843, 0xE843, 0x257A, + 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7, 0xE846, 0xE846, 0x2177, + 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B, 0xE84A, 0xE84A, 0x4FAA, + 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB, 0xE84F, 0xE84F, 0x257B, + 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3, 0xE855, 0xE859, 0x4FB2, + 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7, 0xE85C, 0xE85C, 0x2566, + 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93, 0xE863, 0xE863, 0x4FBD, + 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE, 0xE870, 0xE870, 0x2514, + 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D, 0xE874, 0xE874, 0x4FCB, + 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC, 0xE87C, 0xE87C, 0x2574, + 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E, 0xE881, 0xE881, 0x4FD4, + 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5, 0xE887, 0xE887, 0x209F, + 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576, 0xE88A, 0xE88B, 0x4FDA, + 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF, 0xE88E, 0xE88E, 0x261C, + 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC, 0xE8A1, 0xE8FE, 0x1837, + 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75, 0xE94D, 0xE953, 0x4FF9, + 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000, 0xE956, 0xE956, 0x23BF, + 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001, 0xE95A, 0xE95A, 0x23C0, + 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45, 0xE95E, 0xE95E, 0x5005, + 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4, 0xE961, 0xE961, 0x5006, + 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104, 0xE964, 0xE964, 0x5007, + 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008, 0xE967, 0xE967, 0x1F87, + 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009, 0xE96C, 0xE96C, 0x2269, + 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43, 0xE976, 0xE976, 0x5014, + 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679, 0xE979, 0xE979, 0x1EEB, + 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35, 0xE97D, 0xE97D, 0x208A, + 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7, 0xE981, 0xE981, 0x23C9, + 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018, 0xE987, 0xE987, 0x224F, + 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB, 0xE98C, 0xE98D, 0x501F, + 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021, 0xE990, 0xE990, 0x21F7, + 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE, 0xE993, 0xE993, 0x23CA, + 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022, 0xE998, 0xE998, 0x23D0, + 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C, 0xE99C, 0xE99C, 0x5027, + 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028, 0xE99F, 0xE99F, 0x1FEE, + 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895, 0xEA40, 0xEA40, 0x1FF8, + 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3, 0xEA45, 0xEA47, 0x502C, + 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4, 0xEA4A, 0xEA4A, 0x1E98, + 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C, 0xEA51, 0xEA51, 0x5034, + 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035, 0xEA55, 0xEA55, 0x1E71, + 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037, 0xEA59, 0xEA59, 0x23C5, + 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A, 0xEA81, 0xEA83, 0x505E, + 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061, 0xEA87, 0xEA87, 0x2284, + 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C, 0xEA8F, 0xEA8F, 0x5069, + 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D, 0xEA92, 0xEA95, 0x506A, + 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E, 0xEAA0, 0xEAA0, 0x1ED9, + 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077, 0xEB41, 0xEB41, 0x1FB2, + 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252, 0xEB46, 0xEB47, 0x507B, + 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D, 0xEB53, 0xEB53, 0x2157, + 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF, 0xEB56, 0xEB5A, 0x5088, + 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D, 0xEB5D, 0xEB5D, 0x203D, + 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015, 0xEB61, 0xEB61, 0x5090, + 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091, 0xEB6D, 0xEB6D, 0x2156, + 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144, 0xEB71, 0xEB71, 0x509D, + 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257, 0xEB74, 0xEB77, 0x509E, + 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092, 0xEB7A, 0xEB7E, 0x50A2, + 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250, 0xEB86, 0xEB89, 0x50AC, + 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0, 0xEBA1, 0xEBFE, 0x1951, + 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8, 0xEC47, 0xEC55, 0x50CC, + 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB, 0xEC5A, 0xEC5A, 0x260C, + 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E, 0xEC5D, 0xEC5F, 0x50DF, + 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2, 0xEC6E, 0xEC6E, 0x260B, + 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3, 0xEC77, 0xEC7E, 0x50F6, + 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23, 0xEC97, 0xECA0, 0x5114, + 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E, 0xED46, 0xED46, 0x2695, + 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E, 0xED59, 0xED5D, 0x5135, + 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A, 0xED61, 0xED61, 0x2692, + 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F, 0xED65, 0xED65, 0x513E, + 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD, 0xED68, 0xED6D, 0x513F, + 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145, 0xED74, 0xED74, 0x2465, + 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467, 0xED78, 0xED78, 0x514C, + 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D, 0xED80, 0xED90, 0x5152, + 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163, 0xED93, 0xED93, 0x2209, + 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9, 0xED96, 0xED96, 0x5164, + 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146, 0xED99, 0xED99, 0x25C5, + 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165, 0xED9C, 0xED9C, 0x245E, + 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F, 0xED9F, 0xED9F, 0x5167, + 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D, 0xEE40, 0xEE40, 0x25C7, + 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A, 0xEE43, 0xEE43, 0x1E2F, + 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168, 0xEE48, 0xEE48, 0x20BF, + 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B, 0xEE4D, 0xEE4D, 0x25C9, + 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8, 0xEE53, 0xEE54, 0x5172, + 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174, 0xEE57, 0xEE57, 0x25CB, + 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D, 0xEE5F, 0xEE60, 0x517B, + 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D, 0xEE68, 0xEE68, 0x25CC, + 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183, 0xEE6C, 0xEE6C, 0x20B9, + 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181, 0xEE6F, 0xEE76, 0x5186, + 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E, 0xEE7D, 0xEE7D, 0x2173, + 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD, 0xEE81, 0xEE84, 0x5193, + 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6, 0xEE87, 0xEE89, 0x5197, + 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1, 0xEE8C, 0xEE8C, 0x519A, + 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B, 0xEE90, 0xEE90, 0x2008, + 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0, 0xEE95, 0xEE96, 0x51A0, + 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2, 0xEE99, 0xEE99, 0x1F2A, + 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72, 0xEE9E, 0xEE9E, 0x25D3, + 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B, 0xEF40, 0xEF40, 0x21BE, + 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044, 0xEF43, 0xEF43, 0x51A8, + 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3, 0xEF46, 0xEF4B, 0x51A9, + 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF, 0xEF52, 0xEF53, 0x24CC, + 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698, 0xEF56, 0xEF56, 0x51B5, + 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6, 0xEF5A, 0xEF5A, 0x24CE, + 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF, 0xEF61, 0xEF67, 0x51BD, + 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4, 0xEF6A, 0xEF6A, 0x24D0, + 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1, 0xEF6D, 0xEF76, 0x51C6, + 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0, 0xEF7A, 0xEF7A, 0x239B, + 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E, 0xEF7D, 0xEF7E, 0x51D3, + 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D, 0xEF83, 0xEF84, 0x239F, + 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1, 0xEF87, 0xEF87, 0x51D8, + 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9, 0xEF8B, 0xEF8B, 0x221E, + 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2, 0xEF8E, 0xEF94, 0x51DC, + 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36, 0xEF97, 0xEF97, 0x2135, + 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD, 0xEF9D, 0xEF9D, 0x51E7, + 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8, 0xEFA1, 0xEFFE, 0x1AC9, + 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3, 0xF042, 0xF042, 0x2203, + 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7, 0xF045, 0xF046, 0x51EC, + 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097, 0xF049, 0xF049, 0x1EE4, + 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238, 0xF04F, 0xF050, 0x51F2, + 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4, 0xF054, 0xF054, 0x1F9A, + 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3, 0xF058, 0xF05D, 0x51F8, + 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE, 0xF068, 0xF068, 0x239C, + 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6, 0xF06D, 0xF070, 0x520A, + 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E, 0xF073, 0xF073, 0x2035, + 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F, 0xF078, 0xF078, 0x23A8, + 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075, 0xF07B, 0xF07C, 0x5213, + 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB, 0xF081, 0xF081, 0x1FEB, + 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215, 0xF087, 0xF087, 0x1F6A, + 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219, 0xF08B, 0xF08B, 0x2666, + 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667, 0xF091, 0xF091, 0x521F, + 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220, 0xF096, 0xF096, 0x23AD, + 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27, 0xF140, 0xF151, 0x522D, + 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242, 0xF154, 0xF154, 0x1F02, + 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183, 0xF158, 0xF158, 0x5241, + 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9, 0xF15B, 0xF166, 0x5242, + 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E, 0xF176, 0xF176, 0x22A5, + 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA, 0xF179, 0xF179, 0x525C, + 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82, 0xF17C, 0xF17D, 0x525D, + 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404, 0xF181, 0xF181, 0x525F, + 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260, 0xF184, 0xF184, 0x2184, + 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403, 0xF187, 0xF187, 0x5262, + 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B, 0xF18A, 0xF193, 0x5263, + 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D, 0xF198, 0xF198, 0x2067, + 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85, 0xF240, 0xF244, 0x5278, + 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D, 0xF247, 0xF247, 0x1E83, + 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F, 0xF24C, 0xF252, 0x5281, + 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7, 0xF255, 0xF255, 0x240D, + 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412, 0xF25D, 0xF25E, 0x528E, + 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290, 0xF271, 0xF271, 0x23F0, + 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411, 0xF274, 0xF274, 0x2414, + 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170, 0xF277, 0xF27B, 0x52A3, + 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C, 0xF27E, 0xF27E, 0x2415, + 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066, 0xF286, 0xF286, 0x52AD, + 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413, 0xF289, 0xF289, 0x2410, + 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1, 0xF28D, 0xF290, 0x52AE, + 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2, 0xF294, 0xF294, 0x2409, + 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418, 0xF297, 0xF29B, 0x52B5, + 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA, 0xF29E, 0xF29E, 0x21FC, + 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3, 0xF340, 0xF340, 0x1FC1, + 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD, 0xF345, 0xF345, 0x229C, + 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E, 0xF349, 0xF349, 0x52C2, + 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419, 0xF34C, 0xF34F, 0x52C3, + 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7, 0xF361, 0xF361, 0x1E29, + 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661, 0xF375, 0xF375, 0x52E9, + 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174, 0xF378, 0xF378, 0x2663, + 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA, 0xF380, 0xF38B, 0x52EF, + 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB, 0xF3A0, 0xF3A0, 0x214C, + 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E, 0xF445, 0xF445, 0x267A, + 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0, 0xF451, 0xF456, 0x531D, + 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323, 0xF459, 0xF459, 0x1ED0, + 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096, 0xF45C, 0xF45C, 0x5325, + 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326, 0xF462, 0xF462, 0x23C8, + 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E, 0xF465, 0xF474, 0x532B, + 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B, 0xF47C, 0xF47C, 0x2664, + 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239, 0xF480, 0xF493, 0x5342, + 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356, 0xF499, 0xF499, 0x261F, + 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E, 0xF49D, 0xF4A0, 0x535C, + 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360, 0xF545, 0xF545, 0x2620, + 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621, 0xF548, 0xF551, 0x5366, + 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370, 0xF554, 0xF554, 0x2627, + 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625, 0xF557, 0xF55D, 0x5371, + 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378, 0xF561, 0xF561, 0x262E, + 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A, 0xF56E, 0xF56E, 0x262A, + 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385, 0xF571, 0xF571, 0x2628, + 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386, 0xF580, 0xF584, 0x5392, + 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630, 0xF587, 0xF58B, 0x5397, + 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C, 0xF58E, 0xF58E, 0x200D, + 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D, 0xF599, 0xF599, 0x2645, + 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A, 0xF59C, 0xF59F, 0x53A7, + 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD, 0xF640, 0xF640, 0x53AB, + 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC, 0xF645, 0xF645, 0x263D, + 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF, 0xF648, 0xF648, 0x263E, + 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F, 0xF64C, 0xF64C, 0x1FC0, + 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B, 0xF650, 0xF653, 0x53B3, + 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7, 0xF658, 0xF658, 0x2644, + 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639, 0xF662, 0xF662, 0x53C2, + 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3, 0xF66C, 0xF66C, 0x2647, + 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB, 0xF671, 0xF671, 0x2649, + 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648, 0xF675, 0xF675, 0x53D0, + 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108, 0xF678, 0xF67E, 0x53D1, + 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D, 0xF686, 0xF687, 0x53DD, + 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF, 0xF68A, 0xF68A, 0x2651, + 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650, 0xF68E, 0xF68E, 0x2652, + 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F, 0xF693, 0xF695, 0x53E5, + 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E, 0xF698, 0xF698, 0x2653, + 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657, 0xF69B, 0xF69B, 0x53E9, + 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA, 0xF69E, 0xF69E, 0x2633, + 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656, 0xF6A1, 0xF6FE, 0x1D5B, + 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654, 0xF743, 0xF748, 0x53EE, + 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4, 0xF74C, 0xF74C, 0x2655, + 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6, 0xF756, 0xF756, 0x265B, + 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A, 0xF759, 0xF759, 0x53FF, + 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E, 0xF75C, 0xF75C, 0x262F, + 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646, 0xF762, 0xF762, 0x5404, + 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405, 0xF76B, 0xF76B, 0x265C, + 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C, 0xF772, 0xF77B, 0x5411, + 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B, 0xF77E, 0xF77E, 0x2631, + 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9, 0xF840, 0xF841, 0x543D, + 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F, 0xF846, 0xF846, 0x2580, + 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC, 0xF84A, 0xF84F, 0x5444, + 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B, 0xF852, 0xF852, 0x544A, + 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B, 0xF863, 0xF863, 0x2583, + 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A, 0xF866, 0xF866, 0x21EE, + 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182, 0xF873, 0xF877, 0x5466, + 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B, 0xF87A, 0xF87A, 0x2587, + 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588, 0xF87D, 0xF87E, 0x546D, + 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584, 0xF882, 0xF883, 0x5470, + 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472, 0xF886, 0xF886, 0x21EF, + 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A, 0xF88E, 0xF88E, 0x258C, + 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47, 0xF89A, 0xF89C, 0x5483, + 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486, 0xF8A0, 0xF8A0, 0x258D, + 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0, 0xF94F, 0xF94F, 0x2592, + 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496, 0xF959, 0xF959, 0x2594, + 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E, 0xF95D, 0xF95D, 0x2591, + 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0, 0xF967, 0xF967, 0x2597, + 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6, 0xF96A, 0xF96B, 0x54A9, + 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB, 0xF96F, 0xF96F, 0x20F6, + 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC, 0xF985, 0xF985, 0x2585, + 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599, 0xF988, 0xF990, 0x54C2, + 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB, 0xF996, 0xF996, 0x259A, + 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B, 0xF999, 0xF9A0, 0x54D0, + 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D, 0xFA43, 0xFA45, 0x54DA, + 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD, 0xFA4C, 0xFA4C, 0x234C, + 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44, 0xFA52, 0xFA57, 0x54E6, + 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0, 0xFA5A, 0xFA5C, 0x54EC, + 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF, 0xFA5F, 0xFA5F, 0x259F, + 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C, 0xFA62, 0xFA6F, 0x54F1, + 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF, 0xFA74, 0xFA74, 0x20AE, + 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B, 0xFA77, 0xFA77, 0x25A3, + 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A, 0xFA83, 0xFA83, 0x2589, + 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D, 0xFA8D, 0xFA8D, 0x25A4, + 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6, 0xFA91, 0xFA91, 0x2593, + 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7, 0xFA97, 0xFA97, 0x2222, + 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B, 0xFB40, 0xFB48, 0x5523, + 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C, 0xFB52, 0xFB52, 0x2586, + 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1, 0xFB58, 0xFB58, 0x25AA, + 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590, 0xFB5B, 0xFB5B, 0x258E, + 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688, 0xFB76, 0xFB78, 0x5552, + 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB, 0xFB7B, 0xFB7B, 0x5555, + 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4, 0xFB7E, 0xFB7E, 0x5556, + 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F, 0xFB91, 0xFB9B, 0x5567, + 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572, 0xFB9F, 0xFB9F, 0x25F7, + 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575, 0xFC44, 0xFC44, 0x2696, + 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F, 0xFC4A, 0xFC59, 0x557D, + 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D, 0xFC63, 0xFC63, 0x1EC1, + 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3, 0xFC69, 0xFC6E, 0x5599, + 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F, 0xFC71, 0xFC71, 0x268A, + 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669, 0xFC75, 0xFC76, 0x55A2, + 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4, 0xFC80, 0xFC82, 0x55AA, + 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD, 0xFC8A, 0xFC8A, 0x2673, + 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9, 0xFD52, 0xFD52, 0x20C6, + 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB, 0xFD57, 0xFD57, 0x24D3, + 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE, 0xFD5A, 0xFD5A, 0x260F, + 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611, 0xFD60, 0xFD61, 0x55E3, + 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5, 0xFD65, 0xFD65, 0x2610, + 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030, 0xFD68, 0xFD68, 0x55E7, + 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8, 0xFD6C, 0xFD6C, 0x2614, + 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616, 0xFD71, 0xFD71, 0x55ED, + 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE, 0xFD78, 0xFD78, 0x20F2, + 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617, 0xFD7E, 0xFD7E, 0x55F7, + 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037, 0xFD89, 0xFD8A, 0x5600, + 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602, 0xFD8F, 0xFD8F, 0x1F22, + 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605, 0xFD94, 0xFD94, 0x1F34, + 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02, 0xFD9E, 0xFD9E, 0x40D3, + 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083, 0xFE40, 0xFE40, 0x1259, + 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp new file mode 100644 index 0000000000..8c8b3d5c92 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp @@ -0,0 +1,17 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBKp_EUC_V_2[20 * 3] = { + 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, + 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, + 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, + 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, + 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, + 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, + 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp new file mode 100644 index 0000000000..0fab35577c --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp @@ -0,0 +1,41 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBpc_EUC_H_0[91 * 3] = { + 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x1E20, 0x00FD, 0x00FF, 0x1E21, + 0xA1A1, 0xA1FE, 0x0060, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0, + 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164, + 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225, + 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, 0xA8A1, 0xA8C0, 0x029C, + 0xA8C5, 0xA8EA, 0x02BC, 0xA9A4, 0xA9EF, 0x02E2, 0xAAA1, 0xAAFE, 0x032E, + 0xABA1, 0xABC0, 0x038C, 0xB0A1, 0xB0FE, 0x03AC, 0xB1A1, 0xB1FE, 0x040A, + 0xB2A1, 0xB2FE, 0x0468, 0xB3A1, 0xB3FE, 0x04C6, 0xB4A1, 0xB4FE, 0x0524, + 0xB5A1, 0xB5FE, 0x0582, 0xB6A1, 0xB6FE, 0x05E0, 0xB7A1, 0xB7FE, 0x063E, + 0xB8A1, 0xB8FE, 0x069C, 0xB9A1, 0xB9FE, 0x06FA, 0xBAA1, 0xBAFE, 0x0758, + 0xBBA1, 0xBBFE, 0x07B6, 0xBCA1, 0xBCFE, 0x0814, 0xBDA1, 0xBDFE, 0x0872, + 0xBEA1, 0xBEFE, 0x08D0, 0xBFA1, 0xBFFE, 0x092E, 0xC0A1, 0xC0FE, 0x098C, + 0xC1A1, 0xC1FE, 0x09EA, 0xC2A1, 0xC2FE, 0x0A48, 0xC3A1, 0xC3FE, 0x0AA6, + 0xC4A1, 0xC4FE, 0x0B04, 0xC5A1, 0xC5FE, 0x0B62, 0xC6A1, 0xC6FE, 0x0BC0, + 0xC7A1, 0xC7FE, 0x0C1E, 0xC8A1, 0xC8FE, 0x0C7C, 0xC9A1, 0xC9FE, 0x0CDA, + 0xCAA1, 0xCAFE, 0x0D38, 0xCBA1, 0xCBFE, 0x0D96, 0xCCA1, 0xCCFE, 0x0DF4, + 0xCDA1, 0xCDFE, 0x0E52, 0xCEA1, 0xCEFE, 0x0EB0, 0xCFA1, 0xCFFE, 0x0F0E, + 0xD0A1, 0xD0FE, 0x0F6C, 0xD1A1, 0xD1FE, 0x0FCA, 0xD2A1, 0xD2FE, 0x1028, + 0xD3A1, 0xD3FE, 0x1086, 0xD4A1, 0xD4FE, 0x10E4, 0xD5A1, 0xD5FE, 0x1142, + 0xD6A1, 0xD6FE, 0x11A0, 0xD7A1, 0xD7F9, 0x11FE, 0xD8A1, 0xD8FE, 0x1257, + 0xD9A1, 0xD9FE, 0x12B5, 0xDAA1, 0xDAFE, 0x1313, 0xDBA1, 0xDBFE, 0x1371, + 0xDCA1, 0xDCFE, 0x13CF, 0xDDA1, 0xDDFE, 0x142D, 0xDEA1, 0xDEFE, 0x148B, + 0xDFA1, 0xDFFE, 0x14E9, 0xE0A1, 0xE0FE, 0x1547, 0xE1A1, 0xE1FE, 0x15A5, + 0xE2A1, 0xE2FE, 0x1603, 0xE3A1, 0xE3FE, 0x1661, 0xE4A1, 0xE4FE, 0x16BF, + 0xE5A1, 0xE5FE, 0x171D, 0xE6A1, 0xE6FE, 0x177B, 0xE7A1, 0xE7FE, 0x17D9, + 0xE8A1, 0xE8FE, 0x1837, 0xE9A1, 0xE9FE, 0x1895, 0xEAA1, 0xEAFE, 0x18F3, + 0xEBA1, 0xEBFE, 0x1951, 0xECA1, 0xECFE, 0x19AF, 0xEDA1, 0xEDFE, 0x1A0D, + 0xEEA1, 0xEEFE, 0x1A6B, 0xEFA1, 0xEFFE, 0x1AC9, 0xF0A1, 0xF0FE, 0x1B27, + 0xF1A1, 0xF1FE, 0x1B85, 0xF2A1, 0xF2FE, 0x1BE3, 0xF3A1, 0xF3FE, 0x1C41, + 0xF4A1, 0xF4FE, 0x1C9F, 0xF5A1, 0xF5FE, 0x1CFD, 0xF6A1, 0xF6FE, 0x1D5B, + 0xF7A1, 0xF7FE, 0x1DB9, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp new file mode 100644 index 0000000000..c07c8a18c0 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp @@ -0,0 +1,17 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_GBpc_EUC_V_0[20 * 3] = { + 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, + 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, + 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, + 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, + 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, + 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, + 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp new file mode 100644 index 0000000000..60e109f864 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp @@ -0,0 +1,4619 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_UniGB_UCS2_H_4[13825 * 3] = { + 0x0020, 0x007E, 0x0001, 0x00A4, 0x00A4, 0x00A7, 0x00A5, 0x00A5, 0x5752, + 0x00A7, 0x00A7, 0x00AB, 0x00A8, 0x00A8, 0x0066, 0x00B0, 0x00B0, 0x00A2, + 0x00B1, 0x00B1, 0x007F, 0x00D7, 0x00D7, 0x0080, 0x00E0, 0x00E0, 0x029F, + 0x00E1, 0x00E1, 0x029D, 0x00E8, 0x00E8, 0x02A3, 0x00E9, 0x00E9, 0x02A1, + 0x00EA, 0x00EA, 0x02B5, 0x00EC, 0x00EC, 0x02A7, 0x00ED, 0x00ED, 0x02A5, + 0x00F2, 0x00F2, 0x02AB, 0x00F3, 0x00F3, 0x02A9, 0x00F7, 0x00F7, 0x0081, + 0x00F9, 0x00F9, 0x02AF, 0x00FA, 0x00FA, 0x02AD, 0x00FC, 0x00FC, 0x02B4, + 0x0101, 0x0101, 0x029C, 0x0113, 0x0113, 0x02A0, 0x011B, 0x011B, 0x02A2, + 0x012B, 0x012B, 0x02A4, 0x014D, 0x014D, 0x02A8, 0x016B, 0x016B, 0x02AC, + 0x01CE, 0x01CE, 0x029E, 0x01D0, 0x01D0, 0x02A6, 0x01D2, 0x01D2, 0x02AA, + 0x01D4, 0x01D4, 0x02AE, 0x01D6, 0x01D6, 0x02B0, 0x01D8, 0x01D8, 0x02B1, + 0x01DA, 0x01DA, 0x02B2, 0x01DC, 0x01DC, 0x02B3, 0x01F9, 0x01F9, 0x02BA, + 0x02C7, 0x02C7, 0x0065, 0x02C9, 0x02C9, 0x0064, 0x02CA, 0x02CB, 0x26B3, + 0x02D9, 0x02D9, 0x26B5, 0x0391, 0x03A1, 0x020D, 0x03A3, 0x03A9, 0x021E, + 0x03B1, 0x03C1, 0x0225, 0x03C3, 0x03C9, 0x0236, 0x0401, 0x0401, 0x0260, + 0x0410, 0x0415, 0x025A, 0x0416, 0x0435, 0x0261, 0x0436, 0x044F, 0x0282, + 0x0451, 0x0451, 0x0281, 0x1E3F, 0x1E3F, 0x02B7, 0x2010, 0x2010, 0x2722, + 0x2013, 0x2013, 0x26B6, 0x2014, 0x2014, 0x0069, 0x2015, 0x2015, 0x26B7, + 0x2016, 0x2016, 0x006B, 0x2018, 0x2019, 0x006D, 0x201C, 0x201D, 0x006F, + 0x2025, 0x2025, 0x26B8, 0x2026, 0x2026, 0x006C, 0x2030, 0x2030, 0x00AA, + 0x2032, 0x2033, 0x00A3, 0x2035, 0x2035, 0x26B9, 0x203B, 0x203B, 0x00B8, + 0x20AC, 0x20AC, 0x5751, 0x2103, 0x2103, 0x00A5, 0x2105, 0x2105, 0x26BA, + 0x2109, 0x2109, 0x26BB, 0x2116, 0x2116, 0x00AC, 0x2121, 0x2121, 0x2720, + 0x2160, 0x216B, 0x00FA, 0x2170, 0x2179, 0x26A9, 0x2190, 0x2191, 0x00BA, + 0x2192, 0x2192, 0x00B9, 0x2193, 0x2193, 0x00BC, 0x2196, 0x2199, 0x26BC, + 0x2208, 0x2208, 0x0089, 0x220F, 0x220F, 0x0086, 0x2211, 0x2211, 0x0085, + 0x2215, 0x2215, 0x26C0, 0x221A, 0x221A, 0x008B, 0x221D, 0x221D, 0x0097, + 0x221E, 0x221E, 0x009D, 0x221F, 0x221F, 0x26C1, 0x2220, 0x2220, 0x008E, + 0x2223, 0x2223, 0x26C2, 0x2225, 0x2225, 0x008D, 0x2227, 0x2228, 0x0083, + 0x2229, 0x2229, 0x0088, 0x222A, 0x222A, 0x0087, 0x222B, 0x222B, 0x0091, + 0x222E, 0x222E, 0x0092, 0x2234, 0x2234, 0x009F, 0x2235, 0x2235, 0x009E, + 0x2236, 0x2236, 0x0082, 0x2237, 0x2237, 0x008A, 0x223D, 0x223D, 0x0096, + 0x2248, 0x2248, 0x0095, 0x224C, 0x224C, 0x0094, 0x2252, 0x2252, 0x26C3, + 0x2260, 0x2260, 0x0098, 0x2261, 0x2261, 0x0093, 0x2264, 0x2265, 0x009B, + 0x2266, 0x2267, 0x26C4, 0x226E, 0x226F, 0x0099, 0x2295, 0x2295, 0x2704, + 0x2299, 0x2299, 0x0090, 0x22A5, 0x22A5, 0x008C, 0x22BF, 0x22BF, 0x26C6, + 0x22EF, 0x22EF, 0x006C, 0x2312, 0x2312, 0x008F, 0x2460, 0x2469, 0x00E6, + 0x2474, 0x2487, 0x00D2, 0x2488, 0x249B, 0x00BE, 0x2500, 0x254B, 0x02E2, + 0x2550, 0x2573, 0x26C7, 0x2581, 0x258F, 0x26EB, 0x2593, 0x2595, 0x26FA, + 0x25A0, 0x25A0, 0x00B5, 0x25A1, 0x25A1, 0x00B4, 0x25B2, 0x25B2, 0x00B7, + 0x25B3, 0x25B3, 0x00B6, 0x25BC, 0x25BD, 0x26FD, 0x25C6, 0x25C6, 0x00B3, + 0x25C7, 0x25C7, 0x00B2, 0x25CB, 0x25CB, 0x00AF, 0x25CE, 0x25CE, 0x00B1, + 0x25CF, 0x25CF, 0x00B0, 0x25E2, 0x25E5, 0x26FF, 0x2605, 0x2605, 0x00AE, + 0x2606, 0x2606, 0x00AD, 0x2609, 0x2609, 0x2703, 0x2640, 0x2640, 0x00A1, + 0x2642, 0x2642, 0x00A0, 0x2E80, 0x2E80, 0x579C, 0x2E81, 0x2E81, 0x561F, + 0x2E82, 0x2E83, 0x579D, 0x2E84, 0x2E84, 0x5623, 0x2E85, 0x2E87, 0x579F, + 0x2E88, 0x2E88, 0x5626, 0x2E89, 0x2E8A, 0x57A2, 0x2E8B, 0x2E8B, 0x5627, + 0x2E8C, 0x2E8C, 0x562C, 0x2E8D, 0x2E96, 0x57A4, 0x2E97, 0x2E97, 0x562D, + 0x2E98, 0x2E99, 0x57AE, 0x2E9B, 0x2EA6, 0x57B0, 0x2EA7, 0x2EA7, 0x563A, + 0x2EA8, 0x2EA9, 0x57BC, 0x2EAA, 0x2EAA, 0x563D, 0x2EAB, 0x2EAD, 0x57BE, + 0x2EAE, 0x2EAE, 0x5640, 0x2EAF, 0x2EB2, 0x57C1, 0x2EB3, 0x2EB3, 0x5642, + 0x2EB4, 0x2EB5, 0x57C5, 0x2EB6, 0x2EB7, 0x5643, 0x2EB8, 0x2EBA, 0x57C7, + 0x2EBB, 0x2EBB, 0x5648, 0x2EBC, 0x2EC9, 0x57CA, 0x2ECA, 0x2ECA, 0x5652, + 0x2ECB, 0x2EF3, 0x57D8, 0x2F00, 0x2F00, 0x1042, 0x2F01, 0x2F01, 0x1263, + 0x2F02, 0x2F02, 0x1272, 0x2F03, 0x2F03, 0x1265, 0x2F04, 0x2F04, 0x1059, + 0x2F05, 0x2F05, 0x2793, 0x2F06, 0x2F06, 0x063D, 0x2F07, 0x2F07, 0x1303, + 0x2F08, 0x2F08, 0x0CA6, 0x2F09, 0x2F09, 0x0638, 0x2F0A, 0x2F0A, 0x0CC6, + 0x2F0B, 0x2F0B, 0x03D6, 0x2F0C, 0x2F0C, 0x129D, 0x2F0D, 0x2F0D, 0x1314, + 0x2F0E, 0x2F0E, 0x130F, 0x2F0F, 0x2F0F, 0x082B, 0x2F10, 0x2F10, 0x1399, + 0x2F11, 0x2F11, 0x0597, 0x2F12, 0x2F12, 0x09EF, 0x2F13, 0x2F13, 0x12FC, + 0x2F14, 0x2F14, 0x1266, 0x2F15, 0x2F15, 0x1284, 0x2F16, 0x2F16, 0x2A1A, + 0x2F17, 0x2F17, 0x0D45, 0x2F18, 0x2F18, 0x047E, 0x2F19, 0x2F19, 0x1352, + 0x2F1A, 0x2F1A, 0x04CC, 0x2F1B, 0x2F1B, 0x139C, 0x2F1C, 0x2F1C, 0x10BB, + 0x2F1D, 0x2F1D, 0x0967, 0x2F1E, 0x2F1E, 0x1593, 0x2F1F, 0x2F1F, 0x0E72, + 0x2F20, 0x2F20, 0x0D56, 0x2F21, 0x2F21, 0x161C, 0x2F22, 0x2F22, 0x2D2D, + 0x2F23, 0x2F23, 0x0F13, 0x2F24, 0x2F24, 0x0576, 0x2F25, 0x2F25, 0x0B6F, + 0x2F26, 0x2F26, 0x1230, 0x2F27, 0x2F27, 0x172E, 0x2F28, 0x2F28, 0x056A, + 0x2F29, 0x2F29, 0x0F6C, 0x2F2A, 0x2F2A, 0x14B6, 0x2F2B, 0x2F2B, 0x0D43, + 0x2F2C, 0x2F2C, 0x1774, 0x2F2D, 0x2F2D, 0x0CF6, 0x2F2E, 0x2F2E, 0x1815, + 0x2F2F, 0x2F2F, 0x06FD, 0x2F30, 0x2F30, 0x082D, 0x2F31, 0x2F31, 0x08BE, + 0x2F32, 0x2F32, 0x06C4, 0x2F33, 0x2F33, 0x1813, 0x2F34, 0x2F34, 0x073C, + 0x2F35, 0x2F35, 0x1398, 0x2F36, 0x2F36, 0x14AD, 0x2F37, 0x2F37, 0x14F6, + 0x2F38, 0x2F38, 0x0706, 0x2F39, 0x2F39, 0x1762, 0x2F3A, 0x2F3A, 0x15EE, + 0x2F3B, 0x2F3B, 0x15E0, 0x2F3C, 0x2F3C, 0x0F8F, 0x2F3D, 0x2F3D, 0x06E5, + 0x2F3E, 0x2F3E, 0x3292, 0x2F3F, 0x2F3F, 0x0D6D, 0x2F40, 0x2F40, 0x11A6, + 0x2F41, 0x2F41, 0x1909, 0x2F42, 0x2F42, 0x0ED3, 0x2F43, 0x2F43, 0x05F6, + 0x2F44, 0x2F44, 0x08C0, 0x2F45, 0x2F45, 0x065A, 0x2F46, 0x2F46, 0x0EED, + 0x2F47, 0x2F47, 0x0CB0, 0x2F48, 0x2F48, 0x10FE, 0x2F49, 0x2F49, 0x1105, + 0x2F4A, 0x2F4A, 0x0B21, 0x2F4B, 0x2F4B, 0x0C34, 0x2F4C, 0x2F4C, 0x11B8, + 0x2F4D, 0x2F4D, 0x0578, 0x2F4E, 0x2F4E, 0x19BD, 0x2F4F, 0x2F4F, 0x0EF2, + 0x2F50, 0x2F50, 0x0431, 0x2F51, 0x2F51, 0x0AB0, 0x2F52, 0x2F52, 0x0D66, + 0x2F53, 0x2F53, 0x0C17, 0x2F54, 0x2F54, 0x0DA3, 0x2F55, 0x2F55, 0x0805, + 0x2F56, 0x2F56, 0x1203, 0x2F57, 0x2F57, 0x06B3, 0x2F58, 0x2F58, 0x1269, + 0x2F59, 0x2F59, 0x169D, 0x2F5A, 0x2F5A, 0x0BCB, 0x2F5B, 0x2F5B, 0x0FE9, + 0x2F5C, 0x2F5C, 0x0B64, 0x2F5D, 0x2F5D, 0x0C89, 0x2F5E, 0x2F5E, 0x0FC9, + 0x2F5F, 0x2F5F, 0x10D6, 0x2F60, 0x2F60, 0x0728, 0x2F61, 0x2F61, 0x0E90, + 0x2F62, 0x2F62, 0x06C5, 0x2F63, 0x2F63, 0x0D33, 0x2F64, 0x2F64, 0x10A8, + 0x2F65, 0x2F65, 0x0E42, 0x2F66, 0x2F66, 0x1BC6, 0x2F67, 0x2F67, 0x1B60, + 0x2F68, 0x2F68, 0x3EBF, 0x2F69, 0x2F69, 0x03E2, 0x2F6A, 0x2F6A, 0x0BC3, + 0x2F6B, 0x2F6B, 0x0AF8, 0x2F6C, 0x2F6C, 0x0B22, 0x2F6D, 0x2F6D, 0x0AB1, + 0x2F6E, 0x2F6E, 0x0D4F, 0x2F6F, 0x2F6F, 0x0D46, 0x2F70, 0x2F70, 0x0D55, + 0x2F71, 0x2F71, 0x40CB, 0x2F72, 0x2F72, 0x0783, 0x2F73, 0x2F73, 0x0FD1, + 0x2F74, 0x2F74, 0x09EB, 0x2F75, 0x2F75, 0x11F0, 0x2F76, 0x2F76, 0x0ADC, + 0x2F77, 0x2F77, 0x1CE7, 0x2F78, 0x2F78, 0x1C5E, 0x2F79, 0x2F79, 0x0EA9, + 0x2F7A, 0x2F7A, 0x101B, 0x2F7B, 0x2F7B, 0x10D5, 0x2F7C, 0x2F7C, 0x09BA, + 0x2F7D, 0x2F7D, 0x0637, 0x2F7E, 0x2F7E, 0x1BCB, 0x2F7F, 0x2F7F, 0x0639, + 0x2F80, 0x2F80, 0x1A1E, 0x2F81, 0x2F81, 0x0CBD, 0x2F82, 0x2F82, 0x04E1, + 0x2F83, 0x2F83, 0x1231, 0x2F84, 0x2F84, 0x11C0, 0x2F85, 0x2F85, 0x08F9, + 0x2F86, 0x2F86, 0x0D19, 0x2F87, 0x2F87, 0x1618, 0x2F88, 0x2F88, 0x11DA, + 0x2F89, 0x2F89, 0x1CDC, 0x2F8A, 0x2F8A, 0x0CE4, 0x2F8B, 0x2F8B, 0x45A2, + 0x2F8C, 0x2F8C, 0x1BF0, 0x2F8D, 0x2F8D, 0x050B, 0x2F8E, 0x2F8E, 0x0FD3, + 0x2F8F, 0x2F8F, 0x0F9B, 0x2F90, 0x2F90, 0x1049, 0x2F91, 0x2F91, 0x49DC, + 0x2F92, 0x2F92, 0x1F96, 0x2F93, 0x2F93, 0x0898, 0x2F94, 0x2F94, 0x0FFD, + 0x2F95, 0x2F95, 0x0721, 0x2F96, 0x2F96, 0x05F8, 0x2F97, 0x2F97, 0x1D15, + 0x2F98, 0x2F98, 0x1D50, 0x2F99, 0x2F99, 0x1E3B, 0x2F9A, 0x2F9A, 0x0505, + 0x2F9B, 0x2F9B, 0x123C, 0x2F9C, 0x2F9C, 0x1240, 0x2F9D, 0x2F9D, 0x0D26, + 0x2F9E, 0x2F9E, 0x1E7B, 0x2F9F, 0x2F9F, 0x0F8C, 0x2FA0, 0x2FA0, 0x04E2, + 0x2FA1, 0x2FA1, 0x4D13, 0x2FA2, 0x2FA2, 0x105F, 0x2FA3, 0x2FA3, 0x10B4, + 0x2FA4, 0x2FA4, 0x4E18, 0x2FA5, 0x2FA5, 0x09DA, 0x2FA6, 0x2FA6, 0x08C1, + 0x2FA7, 0x2FA7, 0x1E75, 0x2FA8, 0x2FA8, 0x207D, 0x2FA9, 0x2FA9, 0x06B2, + 0x2FAA, 0x2FAA, 0x09EE, 0x2FAB, 0x2FAB, 0x1D79, 0x2FAC, 0x2FAC, 0x10CF, + 0x2FAD, 0x2FAD, 0x50EA, 0x2FAE, 0x2FAE, 0x0664, 0x2FAF, 0x2FAF, 0x0AEB, + 0x2FB0, 0x2FB0, 0x06EA, 0x2FB1, 0x2FB1, 0x218D, 0x2FB2, 0x2FB2, 0x08F1, + 0x2FB3, 0x2FB3, 0x107B, 0x2FB4, 0x2FB4, 0x2209, 0x2FB5, 0x2FB5, 0x1F00, + 0x2FB6, 0x2FB6, 0x1EF4, 0x2FB7, 0x2FB7, 0x0D4A, 0x2FB8, 0x2FB8, 0x0D6E, + 0x2FB9, 0x2FB9, 0x0F50, 0x2FBA, 0x2FBA, 0x206D, 0x2FBB, 0x2FBB, 0x0720, + 0x2FBC, 0x2FBC, 0x06DA, 0x2FBD, 0x2FBD, 0x1DEC, 0x2FBE, 0x2FBE, 0x1ED0, + 0x2FBF, 0x2FBF, 0x139B, 0x2FC0, 0x2FC0, 0x1260, 0x2FC1, 0x2FC1, 0x0746, + 0x2FC2, 0x2FC2, 0x2239, 0x2FC3, 0x2FC3, 0x209C, 0x2FC4, 0x2FC4, 0x2688, + 0x2FC5, 0x2FC5, 0x0A60, 0x2FC6, 0x2FC6, 0x2071, 0x2FC7, 0x2FC7, 0x0A90, + 0x2FC8, 0x2FC8, 0x5586, 0x2FC9, 0x2FC9, 0x0D89, 0x2FCA, 0x2FCA, 0x0791, + 0x2FCB, 0x2FCB, 0x1A55, 0x2FCC, 0x2FCC, 0x2618, 0x2FCD, 0x2FCD, 0x05E5, + 0x2FCE, 0x2FCE, 0x071D, 0x2FCF, 0x2FCF, 0x0D8A, 0x2FD0, 0x2FD0, 0x0430, + 0x2FD1, 0x2FD1, 0x20C6, 0x2FD2, 0x2FD2, 0x1E86, 0x2FD3, 0x2FD3, 0x2037, + 0x2FD4, 0x2FD4, 0x1F34, 0x2FD5, 0x2FD5, 0x12F3, 0x2FF0, 0x2FFB, 0x274C, + 0x3000, 0x3002, 0x0060, 0x3003, 0x3003, 0x0067, 0x3005, 0x3005, 0x0068, + 0x3006, 0x3006, 0x2728, 0x3007, 0x3007, 0x1E17, 0x3008, 0x300F, 0x0073, + 0x3010, 0x3011, 0x007D, 0x3012, 0x3012, 0x2705, 0x3013, 0x3013, 0x00BD, + 0x3014, 0x3015, 0x0071, 0x3016, 0x3017, 0x007B, 0x301D, 0x301E, 0x2706, + 0x3021, 0x3029, 0x2708, 0x3033, 0x3035, 0x577B, 0x3038, 0x303A, 0x577E, + 0x303E, 0x303E, 0x274B, 0x303F, 0x303F, 0x5755, 0x3041, 0x3093, 0x0164, + 0x3094, 0x3094, 0x5767, 0x309B, 0x309C, 0x2724, 0x309D, 0x309E, 0x2729, + 0x30A1, 0x30F6, 0x01B7, 0x30F7, 0x30FA, 0x5776, 0x30FB, 0x30FB, 0x0063, + 0x30FC, 0x30FC, 0x2723, 0x30FD, 0x30FE, 0x2726, 0x3105, 0x3129, 0x02BC, + 0x312A, 0x312C, 0x5781, 0x31A0, 0x31B7, 0x5784, 0x3220, 0x3229, 0x00F0, + 0x3231, 0x3231, 0x2721, 0x32A3, 0x32A3, 0x2711, 0x338E, 0x338F, 0x2712, + 0x339C, 0x339E, 0x2714, 0x33A1, 0x33A1, 0x2717, 0x33C4, 0x33C4, 0x2718, + 0x33CE, 0x33CE, 0x2719, 0x33D1, 0x33D2, 0x271A, 0x33D5, 0x33D5, 0x271C, + 0x3400, 0x3446, 0x5801, 0x3447, 0x3447, 0x5625, 0x3448, 0x3472, 0x5848, + 0x3473, 0x3473, 0x5624, 0x3474, 0x34FF, 0x5873, 0x3500, 0x359D, 0x58FF, + 0x359E, 0x359E, 0x5629, 0x359F, 0x35FF, 0x599D, 0x3600, 0x360D, 0x59FE, + 0x360E, 0x360E, 0x562B, 0x360F, 0x3619, 0x5A0C, 0x361A, 0x361A, 0x562A, + 0x361B, 0x36FF, 0x5A17, 0x3700, 0x37FF, 0x5AFC, 0x3800, 0x38FF, 0x5BFC, + 0x3900, 0x3917, 0x5CFC, 0x3918, 0x3918, 0x562F, 0x3919, 0x396D, 0x5D14, + 0x396E, 0x396E, 0x562E, 0x396F, 0x39CE, 0x5D69, 0x39CF, 0x39CF, 0x5631, + 0x39D0, 0x39D0, 0x5634, 0x39D1, 0x39DE, 0x5DC9, 0x39DF, 0x39DF, 0x5632, + 0x39E0, 0x39FF, 0x5DD7, 0x3A00, 0x3A72, 0x5DF7, 0x3A73, 0x3A73, 0x5633, + 0x3A74, 0x3AFF, 0x5E6A, 0x3B00, 0x3B4D, 0x5EF6, 0x3B4E, 0x3B4E, 0x5637, + 0x3B4F, 0x3BFF, 0x5F44, 0x3C00, 0x3C6D, 0x5FF5, 0x3C6E, 0x3C6E, 0x5638, + 0x3C6F, 0x3CDF, 0x6063, 0x3CE0, 0x3CE0, 0x5639, 0x3CE1, 0x3CFF, 0x60D4, + 0x3D00, 0x3DFF, 0x60F3, 0x3E00, 0x3EFF, 0x61F3, 0x3F00, 0x3FFF, 0x62F3, + 0x4000, 0x4055, 0x63F3, 0x4056, 0x4056, 0x563E, 0x4057, 0x40FF, 0x6449, + 0x4100, 0x415E, 0x64F2, 0x415F, 0x415F, 0x563F, 0x4160, 0x41FF, 0x6551, + 0x4200, 0x42FF, 0x65F1, 0x4300, 0x4336, 0x66F1, 0x4337, 0x4337, 0x5641, + 0x4338, 0x43AB, 0x6728, 0x43AC, 0x43AC, 0x5647, 0x43AD, 0x43B0, 0x679C, + 0x43B1, 0x43B1, 0x5646, 0x43B2, 0x43DC, 0x67A0, 0x43DD, 0x43DD, 0x5649, + 0x43DE, 0x43FF, 0x67CB, 0x4400, 0x44D5, 0x67ED, 0x44D6, 0x44D6, 0x564A, + 0x44D7, 0x44FF, 0x68C3, 0x4500, 0x45FF, 0x68EC, 0x4600, 0x464B, 0x69EC, + 0x464C, 0x464C, 0x564C, 0x464D, 0x4660, 0x6A38, 0x4661, 0x4661, 0x564B, + 0x4662, 0x46FF, 0x6A4C, 0x4700, 0x4722, 0x6AEA, 0x4723, 0x4723, 0x564E, + 0x4724, 0x4728, 0x6B0D, 0x4729, 0x4729, 0x564F, 0x472A, 0x477B, 0x6B12, + 0x477C, 0x477C, 0x5650, 0x477D, 0x478C, 0x6B64, 0x478D, 0x478D, 0x5651, + 0x478E, 0x47FF, 0x6B74, 0x4800, 0x48FF, 0x6BE6, 0x4900, 0x4946, 0x6CE6, + 0x4947, 0x4947, 0x5653, 0x4948, 0x4979, 0x6D2D, 0x497A, 0x497A, 0x5654, + 0x497B, 0x497C, 0x6D5F, 0x497D, 0x497D, 0x5655, 0x497E, 0x4981, 0x6D61, + 0x4982, 0x4983, 0x5656, 0x4984, 0x4984, 0x6D65, 0x4985, 0x4986, 0x5658, + 0x4987, 0x499A, 0x6D66, 0x499B, 0x499B, 0x565B, 0x499C, 0x499E, 0x6D7A, + 0x499F, 0x499F, 0x565A, 0x49A0, 0x49B5, 0x6D7D, 0x49B6, 0x49B6, 0x565D, + 0x49B7, 0x49B7, 0x565C, 0x49B8, 0x49FF, 0x6D93, 0x4A00, 0x4AFF, 0x6DDB, + 0x4B00, 0x4BFF, 0x6EDB, 0x4C00, 0x4C76, 0x6FDB, 0x4C77, 0x4C77, 0x5664, + 0x4C78, 0x4C9E, 0x7052, 0x4C9F, 0x4CA1, 0x5661, 0x4CA2, 0x4CA2, 0x5665, + 0x4CA3, 0x4CA3, 0x5660, 0x4CA4, 0x4CFF, 0x7079, 0x4D00, 0x4D12, 0x70D5, + 0x4D13, 0x4D19, 0x5666, 0x4D1A, 0x4DAD, 0x70E8, 0x4DAE, 0x4DAE, 0x566D, + 0x4DAF, 0x4DB5, 0x717C, 0x4E00, 0x4E00, 0x1042, 0x4E01, 0x4E01, 0x05E0, + 0x4E02, 0x4E02, 0x2758, 0x4E03, 0x4E03, 0x0BFE, 0x4E04, 0x4E06, 0x2759, + 0x4E07, 0x4E07, 0x0EA3, 0x4E08, 0x4E08, 0x116A, 0x4E09, 0x4E09, 0x0CD8, + 0x4E0A, 0x4E0A, 0x0D08, 0x4E0B, 0x4E0B, 0x0F2F, 0x4E0C, 0x4E0C, 0x1258, + 0x4E0D, 0x4E0D, 0x0482, 0x4E0E, 0x4E0E, 0x10D0, 0x4E0F, 0x4E0F, 0x275C, + 0x4E10, 0x4E10, 0x125A, 0x4E11, 0x4E11, 0x0518, 0x4E12, 0x4E12, 0x275D, + 0x4E13, 0x4E13, 0x1205, 0x4E14, 0x4E14, 0x0C4F, 0x4E15, 0x4E15, 0x125D, + 0x4E16, 0x4E16, 0x0D57, 0x4E17, 0x4E17, 0x275E, 0x4E18, 0x4E18, 0x0C6D, + 0x4E19, 0x4E19, 0x0464, 0x4E1A, 0x4E1A, 0x103C, 0x4E1B, 0x4E1B, 0x0557, + 0x4E1C, 0x4E1C, 0x05EA, 0x4E1D, 0x4E1D, 0x0DB4, 0x4E1E, 0x4E1E, 0x125F, + 0x4E1F, 0x4E21, 0x275F, 0x4E22, 0x4E22, 0x05E9, 0x4E23, 0x4E23, 0x2762, + 0x4E24, 0x4E24, 0x0A06, 0x4E25, 0x4E25, 0x0FF8, 0x4E26, 0x4E26, 0x2763, + 0x4E27, 0x4E27, 0x0CDE, 0x4E28, 0x4E28, 0x1263, 0x4E29, 0x4E29, 0x2764, + 0x4E2A, 0x4E2A, 0x06F1, 0x4E2B, 0x4E2B, 0x0FE7, 0x4E2C, 0x4E2C, 0x169C, + 0x4E2D, 0x4E2D, 0x11CF, 0x4E2E, 0x4E2F, 0x2765, 0x4E30, 0x4E30, 0x067E, + 0x4E31, 0x4E31, 0x2767, 0x4E32, 0x4E32, 0x0531, 0x4E33, 0x4E33, 0x2768, + 0x4E34, 0x4E34, 0x0A22, 0x4E35, 0x4E35, 0x2769, 0x4E36, 0x4E36, 0x1272, + 0x4E37, 0x4E37, 0x276A, 0x4E38, 0x4E38, 0x0E99, 0x4E39, 0x4E39, 0x0585, + 0x4E3A, 0x4E3A, 0x0EB9, 0x4E3B, 0x4E3B, 0x11F6, 0x4E3C, 0x4E3C, 0x276B, + 0x4E3D, 0x4E3D, 0x09E1, 0x4E3E, 0x4E3E, 0x0908, 0x4E3F, 0x4E3F, 0x1265, + 0x4E40, 0x4E42, 0x276C, 0x4E43, 0x4E43, 0x0B2E, 0x4E44, 0x4E44, 0x276F, + 0x4E45, 0x4E45, 0x08F2, 0x4E46, 0x4E46, 0x2770, 0x4E47, 0x4E47, 0x1267, + 0x4E48, 0x4E48, 0x0AB9, 0x4E49, 0x4E49, 0x106C, 0x4E4A, 0x4E4A, 0x2771, + 0x4E4B, 0x4E4B, 0x11AD, 0x4E4C, 0x4E4C, 0x0EE9, 0x4E4D, 0x4E4D, 0x1148, + 0x4E4E, 0x4E4E, 0x07AC, 0x4E4F, 0x4E4F, 0x0643, 0x4E50, 0x4E50, 0x09C1, + 0x4E51, 0x4E51, 0x2772, 0x4E52, 0x4E52, 0x0BD8, 0x4E53, 0x4E53, 0x0B93, + 0x4E54, 0x4E54, 0x0C44, 0x4E55, 0x4E55, 0x2773, 0x4E56, 0x4E56, 0x072D, + 0x4E57, 0x4E57, 0x2774, 0x4E58, 0x4E58, 0x04F0, 0x4E59, 0x4E59, 0x1059, + 0x4E5A, 0x4E5B, 0x2775, 0x4E5C, 0x4E5C, 0x1275, 0x4E5D, 0x4E5D, 0x08F4, + 0x4E5E, 0x4E5E, 0x0C11, 0x4E5F, 0x4E5F, 0x1039, 0x4E60, 0x4E60, 0x0F1D, + 0x4E61, 0x4E61, 0x0F54, 0x4E62, 0x4E65, 0x2777, 0x4E66, 0x4E66, 0x0D80, + 0x4E67, 0x4E68, 0x277B, 0x4E69, 0x4E69, 0x1276, 0x4E6A, 0x4E6F, 0x277D, + 0x4E70, 0x4E70, 0x0A99, 0x4E71, 0x4E71, 0x0A79, 0x4E72, 0x4E72, 0x2783, + 0x4E73, 0x4E73, 0x0CC4, 0x4E74, 0x4E7D, 0x2784, 0x4E7E, 0x4E7E, 0x0C29, + 0x4E7F, 0x4E81, 0x278E, 0x4E82, 0x4E82, 0x2059, 0x4E83, 0x4E85, 0x2791, + 0x4E86, 0x4E86, 0x0A14, 0x4E87, 0x4E87, 0x2794, 0x4E88, 0x4E88, 0x10CD, + 0x4E89, 0x4E89, 0x119A, 0x4E8A, 0x4E8A, 0x2795, 0x4E8B, 0x4E8B, 0x0D59, + 0x4E8C, 0x4E8C, 0x063D, 0x4E8D, 0x4E8D, 0x1257, 0x4E8E, 0x4E8E, 0x10BF, + 0x4E8F, 0x4E8F, 0x0984, 0x4E90, 0x4E90, 0x2796, 0x4E91, 0x4E91, 0x1109, + 0x4E92, 0x4E92, 0x07BA, 0x4E93, 0x4E93, 0x1277, 0x4E94, 0x4E94, 0x0EF4, + 0x4E95, 0x4E95, 0x08DD, 0x4E96, 0x4E97, 0x2797, 0x4E98, 0x4E98, 0x125E, + 0x4E99, 0x4E99, 0x2799, 0x4E9A, 0x4E9A, 0x0FF0, 0x4E9B, 0x4E9B, 0x0F74, + 0x4E9C, 0x4E9D, 0x279A, 0x4E9E, 0x4E9E, 0x21F1, 0x4E9F, 0x4E9F, 0x1273, + 0x4EA0, 0x4EA0, 0x1303, 0x4EA1, 0x4EA1, 0x0EA7, 0x4EA2, 0x4EA2, 0x0947, + 0x4EA3, 0x4EA3, 0x279C, 0x4EA4, 0x4EA4, 0x088C, 0x4EA5, 0x4EA5, 0x075C, + 0x4EA6, 0x4EA6, 0x1067, 0x4EA7, 0x4EA7, 0x04C1, 0x4EA8, 0x4EA8, 0x0797, + 0x4EA9, 0x4EA9, 0x0B19, 0x4EAA, 0x4EAA, 0x279D, 0x4EAB, 0x4EAB, 0x0F5A, + 0x4EAC, 0x4EAC, 0x08D8, 0x4EAD, 0x4EAD, 0x0E55, 0x4EAE, 0x4EAE, 0x0A0A, + 0x4EAF, 0x4EB1, 0x279E, 0x4EB2, 0x4EB2, 0x0C54, 0x4EB3, 0x4EB3, 0x1305, + 0x4EB4, 0x4EB4, 0x27A1, 0x4EB5, 0x4EB5, 0x1308, 0x4EB6, 0x4EB9, 0x27A2, + 0x4EBA, 0x4EBA, 0x0CA6, 0x4EBB, 0x4EBB, 0x129F, 0x4EBC, 0x4EBE, 0x27A6, + 0x4EBF, 0x4EBF, 0x1061, 0x4EC0, 0x4EC0, 0x0D49, 0x4EC1, 0x4EC1, 0x0CA5, + 0x4EC2, 0x4EC2, 0x12A2, 0x4EC3, 0x4EC3, 0x12A0, 0x4EC4, 0x4EC4, 0x127C, + 0x4EC5, 0x4EC5, 0x08C7, 0x4EC6, 0x4EC6, 0x0BEC, 0x4EC7, 0x4EC7, 0x0515, + 0x4EC8, 0x4EC8, 0x27A9, 0x4EC9, 0x4EC9, 0x12A1, 0x4ECA, 0x4ECA, 0x08C2, + 0x4ECB, 0x4ECB, 0x08BA, 0x4ECC, 0x4ECC, 0x27AA, 0x4ECD, 0x4ECD, 0x0CAF, + 0x4ECE, 0x4ECE, 0x0556, 0x4ECF, 0x4ED0, 0x27AB, 0x4ED1, 0x4ED1, 0x0A7F, + 0x4ED2, 0x4ED2, 0x27AD, 0x4ED3, 0x4ED3, 0x049D, 0x4ED4, 0x4ED4, 0x122D, + 0x4ED5, 0x4ED5, 0x0D62, 0x4ED6, 0x4ED6, 0x0DF0, 0x4ED7, 0x4ED7, 0x116D, + 0x4ED8, 0x4ED8, 0x06B1, 0x4ED9, 0x4ED9, 0x0F36, 0x4EDA, 0x4EDC, 0x27AE, + 0x4EDD, 0x4EDD, 0x12EE, 0x4EDE, 0x4EDE, 0x12A6, 0x4EDF, 0x4EDF, 0x0C27, + 0x4EE0, 0x4EE0, 0x27B1, 0x4EE1, 0x4EE1, 0x12A4, 0x4EE2, 0x4EE2, 0x27B2, + 0x4EE3, 0x4EE3, 0x057D, 0x4EE4, 0x4EE4, 0x0A37, 0x4EE5, 0x4EE5, 0x105B, + 0x4EE6, 0x4EE7, 0x27B3, 0x4EE8, 0x4EE8, 0x12A3, 0x4EE9, 0x4EE9, 0x27B5, + 0x4EEA, 0x4EEA, 0x104E, 0x4EEB, 0x4EEB, 0x12A5, 0x4EEC, 0x4EEC, 0x0ACC, + 0x4EED, 0x4EEF, 0x27B6, 0x4EF0, 0x4EF0, 0x101F, 0x4EF1, 0x4EF1, 0x27B9, + 0x4EF2, 0x4EF2, 0x11D8, 0x4EF3, 0x4EF3, 0x12A8, 0x4EF4, 0x4EF4, 0x27BA, + 0x4EF5, 0x4EF5, 0x12AB, 0x4EF6, 0x4EF6, 0x0871, 0x4EF7, 0x4EF7, 0x084E, + 0x4EF8, 0x4EFA, 0x27BB, 0x4EFB, 0x4EFB, 0x0CA9, 0x4EFC, 0x4EFC, 0x27BE, + 0x4EFD, 0x4EFD, 0x067A, 0x4EFE, 0x4EFE, 0x27BF, 0x4EFF, 0x4EFF, 0x065F, + 0x4F00, 0x4F00, 0x27C0, 0x4F01, 0x4F01, 0x0C12, 0x4F02, 0x4F08, 0x27C1, + 0x4F09, 0x4F09, 0x12AE, 0x4F0A, 0x4F0A, 0x1048, 0x4F0B, 0x4F0C, 0x27C8, + 0x4F0D, 0x4F0D, 0x0EF8, 0x4F0E, 0x4F0E, 0x0832, 0x4F0F, 0x4F0F, 0x0699, + 0x4F10, 0x4F10, 0x0642, 0x4F11, 0x4F11, 0x0FA8, 0x4F12, 0x4F16, 0x27CA, + 0x4F17, 0x4F17, 0x11D9, 0x4F18, 0x4F18, 0x10AA, 0x4F19, 0x4F19, 0x0804, + 0x4F1A, 0x4F1A, 0x07F6, 0x4F1B, 0x4F1B, 0x12A7, 0x4F1C, 0x4F1D, 0x27CF, + 0x4F1E, 0x4F1E, 0x0CDA, 0x4F1F, 0x4F1F, 0x0EBF, 0x4F20, 0x4F20, 0x052E, + 0x4F21, 0x4F21, 0x27D1, 0x4F22, 0x4F22, 0x12A9, 0x4F23, 0x4F23, 0x27D2, + 0x4F24, 0x4F24, 0x0D04, 0x4F25, 0x4F25, 0x12AC, 0x4F26, 0x4F26, 0x0A7E, + 0x4F27, 0x4F27, 0x12AD, 0x4F28, 0x4F29, 0x27D3, 0x4F2A, 0x4F2A, 0x0EC0, + 0x4F2B, 0x4F2B, 0x12AF, 0x4F2C, 0x4F2E, 0x27D5, 0x4F2F, 0x4F2F, 0x0475, + 0x4F30, 0x4F30, 0x0719, 0x4F31, 0x4F31, 0x27D8, 0x4F32, 0x4F32, 0x12B7, + 0x4F33, 0x4F33, 0x27D9, 0x4F34, 0x4F34, 0x03F4, 0x4F35, 0x4F35, 0x27DA, + 0x4F36, 0x4F36, 0x0A2F, 0x4F37, 0x4F37, 0x27DB, 0x4F38, 0x4F38, 0x0D25, + 0x4F39, 0x4F39, 0x27DC, 0x4F3A, 0x4F3A, 0x0DBA, 0x4F3B, 0x4F3B, 0x27DD, + 0x4F3C, 0x4F3C, 0x0DBB, 0x4F3D, 0x4F3D, 0x12B8, 0x4F3E, 0x4F42, 0x27DE, + 0x4F43, 0x4F43, 0x05C9, 0x4F44, 0x4F45, 0x27E3, 0x4F46, 0x4F46, 0x058C, + 0x4F47, 0x4F4C, 0x27E5, 0x4F4D, 0x4F4D, 0x0ECA, 0x4F4E, 0x4F4E, 0x05AE, + 0x4F4F, 0x4F4F, 0x11FE, 0x4F50, 0x4F50, 0x1251, 0x4F51, 0x4F51, 0x10B8, + 0x4F52, 0x4F52, 0x27EB, 0x4F53, 0x4F53, 0x0E38, 0x4F54, 0x4F54, 0x27EC, + 0x4F55, 0x4F55, 0x0785, 0x4F56, 0x4F56, 0x27ED, 0x4F57, 0x4F57, 0x12B6, + 0x4F58, 0x4F58, 0x12F0, 0x4F59, 0x4F59, 0x10C5, 0x4F5A, 0x4F5A, 0x12B3, + 0x4F5B, 0x4F5B, 0x068D, 0x4F5C, 0x4F5C, 0x1254, 0x4F5D, 0x4F5D, 0x12B4, + 0x4F5E, 0x4F5E, 0x12B0, 0x4F5F, 0x4F5F, 0x12B5, 0x4F60, 0x4F60, 0x0B46, + 0x4F61, 0x4F62, 0x27EE, 0x4F63, 0x4F63, 0x109B, 0x4F64, 0x4F64, 0x12AA, + 0x4F65, 0x4F65, 0x12F1, 0x4F66, 0x4F66, 0x27F0, 0x4F67, 0x4F67, 0x12B1, + 0x4F68, 0x4F68, 0x27F1, 0x4F69, 0x4F69, 0x0BA6, 0x4F6A, 0x4F6B, 0x27F2, + 0x4F6C, 0x4F6C, 0x09BB, 0x4F6D, 0x4F6E, 0x27F4, 0x4F6F, 0x4F6F, 0x1019, + 0x4F70, 0x4F70, 0x03E6, 0x4F71, 0x4F72, 0x27F6, 0x4F73, 0x4F73, 0x0844, + 0x4F74, 0x4F74, 0x12BA, 0x4F75, 0x4F75, 0x27F8, 0x4F76, 0x4F76, 0x12B9, + 0x4F77, 0x4F7A, 0x27F9, 0x4F7B, 0x4F7B, 0x12C0, 0x4F7C, 0x4F7C, 0x12C2, + 0x4F7D, 0x4F7D, 0x27FD, 0x4F7E, 0x4F7E, 0x12BF, 0x4F7F, 0x4F7F, 0x0D50, + 0x4F80, 0x4F82, 0x27FE, 0x4F83, 0x4F83, 0x12BD, 0x4F84, 0x4F84, 0x11B5, + 0x4F85, 0x4F85, 0x2801, 0x4F86, 0x4F86, 0x1FF2, 0x4F87, 0x4F87, 0x2802, + 0x4F88, 0x4F88, 0x0503, 0x4F89, 0x4F89, 0x12BC, 0x4F8A, 0x4F8A, 0x2803, + 0x4F8B, 0x4F8B, 0x09E8, 0x4F8C, 0x4F8C, 0x2804, 0x4F8D, 0x4F8D, 0x0D63, + 0x4F8E, 0x4F8E, 0x2805, 0x4F8F, 0x4F8F, 0x12BE, 0x4F90, 0x4F90, 0x2806, + 0x4F91, 0x4F91, 0x12BB, 0x4F92, 0x4F93, 0x2807, 0x4F94, 0x4F94, 0x12C4, + 0x4F95, 0x4F95, 0x2809, 0x4F96, 0x4F96, 0x205D, 0x4F97, 0x4F97, 0x05F0, + 0x4F98, 0x4F9A, 0x280A, 0x4F9B, 0x4F9B, 0x0702, 0x4F9C, 0x4F9C, 0x280D, + 0x4F9D, 0x4F9D, 0x1047, 0x4F9E, 0x4F9F, 0x280E, 0x4FA0, 0x4FA0, 0x0F2D, + 0x4FA1, 0x4FA2, 0x2810, 0x4FA3, 0x4FA3, 0x0A69, 0x4FA4, 0x4FA4, 0x2812, + 0x4FA5, 0x4FA5, 0x0895, 0x4FA6, 0x4FA6, 0x118D, 0x4FA7, 0x4FA7, 0x04A7, + 0x4FA8, 0x4FA8, 0x0C45, 0x4FA9, 0x4FA9, 0x0978, 0x4FAA, 0x4FAA, 0x12C1, + 0x4FAB, 0x4FAB, 0x2813, 0x4FAC, 0x4FAC, 0x12C3, 0x4FAD, 0x4FAD, 0x2814, + 0x4FAE, 0x4FAE, 0x0EF9, 0x4FAF, 0x4FAF, 0x07A5, 0x4FB0, 0x4FB4, 0x2815, + 0x4FB5, 0x4FB5, 0x0C53, 0x4FB6, 0x4FBE, 0x281A, 0x4FBF, 0x4FBF, 0x044C, + 0x4FC0, 0x4FC1, 0x2823, 0x4FC2, 0x4FC2, 0x269C, 0x4FC3, 0x4FC3, 0x055C, + 0x4FC4, 0x4FC4, 0x062C, 0x4FC5, 0x4FC5, 0x12C8, 0x4FC6, 0x4FC9, 0x2825, + 0x4FCA, 0x4FCA, 0x092E, 0x4FCB, 0x4FCD, 0x2829, 0x4FCE, 0x4FCE, 0x12F2, + 0x4FCF, 0x4FCF, 0x0C4B, 0x4FD0, 0x4FD0, 0x09E9, 0x4FD1, 0x4FD1, 0x12CC, + 0x4FD2, 0x4FD6, 0x282C, 0x4FD7, 0x4FD7, 0x0DCC, 0x4FD8, 0x4FD8, 0x069A, + 0x4FD9, 0x4FD9, 0x2831, 0x4FDA, 0x4FDA, 0x12C9, 0x4FDB, 0x4FDB, 0x2832, + 0x4FDC, 0x4FDC, 0x12CB, 0x4FDD, 0x4FDD, 0x040C, 0x4FDE, 0x4FDE, 0x10C6, + 0x4FDF, 0x4FDF, 0x12CD, 0x4FE0, 0x4FE0, 0x21B5, 0x4FE1, 0x4FE1, 0x0F90, + 0x4FE2, 0x4FE2, 0x2833, 0x4FE3, 0x4FE3, 0x12CA, 0x4FE4, 0x4FE5, 0x2834, + 0x4FE6, 0x4FE6, 0x12C5, 0x4FE7, 0x4FE7, 0x2836, 0x4FE8, 0x4FE8, 0x12C6, + 0x4FE9, 0x4FE9, 0x09F2, 0x4FEA, 0x4FEA, 0x12C7, 0x4FEB, 0x4FEC, 0x2837, + 0x4FED, 0x4FED, 0x0866, 0x4FEE, 0x4FEE, 0x0FA9, 0x4FEF, 0x4FEF, 0x06A4, + 0x4FF0, 0x4FF0, 0x2839, 0x4FF1, 0x4FF1, 0x0912, 0x4FF2, 0x4FF2, 0x283A, + 0x4FF3, 0x4FF3, 0x12D1, 0x4FF4, 0x4FF7, 0x283B, 0x4FF8, 0x4FF8, 0x12CE, + 0x4FF9, 0x4FF9, 0x283F, 0x4FFA, 0x4FFA, 0x03BE, 0x4FFB, 0x4FFD, 0x2840, + 0x4FFE, 0x4FFE, 0x12D6, 0x4FFF, 0x4FFF, 0x2843, 0x5000, 0x5000, 0x22CC, + 0x5001, 0x5005, 0x2844, 0x5006, 0x5006, 0x2016, 0x5007, 0x5008, 0x2849, + 0x5009, 0x5009, 0x1E62, 0x500A, 0x500A, 0x284B, 0x500B, 0x500B, 0x1F20, + 0x500C, 0x500C, 0x12D8, 0x500D, 0x500D, 0x041F, 0x500E, 0x500E, 0x284C, + 0x500F, 0x500F, 0x12D3, 0x5010, 0x5010, 0x284D, 0x5011, 0x5011, 0x207F, + 0x5012, 0x5012, 0x059A, 0x5013, 0x5013, 0x284E, 0x5014, 0x5014, 0x0922, + 0x5015, 0x5017, 0x284F, 0x5018, 0x5018, 0x0E1B, 0x5019, 0x5019, 0x07A9, + 0x501A, 0x501A, 0x1057, 0x501B, 0x501B, 0x2852, 0x501C, 0x501C, 0x12D7, + 0x501D, 0x501E, 0x2853, 0x501F, 0x501F, 0x08B9, 0x5020, 0x5020, 0x2855, + 0x5021, 0x5021, 0x04D0, 0x5022, 0x5024, 0x2856, 0x5025, 0x5025, 0x12D9, + 0x5026, 0x5026, 0x091A, 0x5027, 0x5027, 0x2859, 0x5028, 0x5028, 0x12DA, + 0x5029, 0x5029, 0x12CF, 0x502A, 0x502A, 0x0B42, 0x502B, 0x502B, 0x205C, + 0x502C, 0x502C, 0x12D2, 0x502D, 0x502D, 0x12D5, 0x502E, 0x502E, 0x12D4, + 0x502F, 0x5039, 0x285A, 0x503A, 0x503A, 0x114F, 0x503B, 0x503B, 0x2865, + 0x503C, 0x503C, 0x11B4, 0x503D, 0x503D, 0x2866, 0x503E, 0x503E, 0x0C60, + 0x503F, 0x5042, 0x2867, 0x5043, 0x5043, 0x12DC, 0x5044, 0x5046, 0x286B, + 0x5047, 0x5047, 0x084C, 0x5048, 0x5048, 0x12DE, 0x5049, 0x5049, 0x2194, + 0x504A, 0x504B, 0x286E, 0x504C, 0x504C, 0x12D0, 0x504D, 0x504D, 0x2870, + 0x504E, 0x504E, 0x12DF, 0x504F, 0x504F, 0x0BCA, 0x5050, 0x5054, 0x2871, + 0x5055, 0x5055, 0x12DD, 0x5056, 0x5059, 0x2876, 0x505A, 0x505A, 0x1253, + 0x505B, 0x505B, 0x287A, 0x505C, 0x505C, 0x0E54, 0x505D, 0x5064, 0x287B, + 0x5065, 0x5065, 0x0872, 0x5066, 0x506B, 0x2883, 0x506C, 0x506C, 0x12E0, + 0x506D, 0x5073, 0x2889, 0x5074, 0x5074, 0x1E65, 0x5075, 0x5075, 0x2281, + 0x5076, 0x5076, 0x0B7D, 0x5077, 0x5077, 0x0E66, 0x5078, 0x507A, 0x2890, + 0x507B, 0x507B, 0x12E1, 0x507C, 0x507D, 0x2893, 0x507E, 0x507E, 0x12DB, + 0x507F, 0x507F, 0x04CA, 0x5080, 0x5080, 0x098B, 0x5081, 0x5084, 0x2895, + 0x5085, 0x5085, 0x06B0, 0x5086, 0x5087, 0x2899, 0x5088, 0x5088, 0x09E7, + 0x5089, 0x508C, 0x289B, 0x508D, 0x508D, 0x0403, 0x508E, 0x5095, 0x289F, + 0x5096, 0x5096, 0x22CD, 0x5097, 0x5097, 0x28A7, 0x5098, 0x5098, 0x210A, + 0x5099, 0x5099, 0x1E3E, 0x509A, 0x50A1, 0x28A8, 0x50A2, 0x50A2, 0x267F, + 0x50A3, 0x50A3, 0x0579, 0x50A4, 0x50A4, 0x28B0, 0x50A5, 0x50A5, 0x12E2, + 0x50A6, 0x50A6, 0x28B1, 0x50A7, 0x50A7, 0x12E3, 0x50A8, 0x50A8, 0x0525, + 0x50A9, 0x50A9, 0x12E4, 0x50AA, 0x50AB, 0x28B2, 0x50AC, 0x50AC, 0x0562, + 0x50AD, 0x50AD, 0x222E, 0x50AE, 0x50B1, 0x28B4, 0x50B2, 0x50B2, 0x03CC, + 0x50B3, 0x50B3, 0x1E96, 0x50B4, 0x50B4, 0x22CB, 0x50B5, 0x50B5, 0x226C, + 0x50B6, 0x50B6, 0x28B8, 0x50B7, 0x50B7, 0x2117, 0x50B8, 0x50B9, 0x28B9, + 0x50BA, 0x50BA, 0x12E5, 0x50BB, 0x50BB, 0x0CEE, 0x50BC, 0x50BD, 0x28BB, + 0x50BE, 0x50BE, 0x20E8, 0x50BF, 0x50C1, 0x28BD, 0x50C2, 0x50C2, 0x22D4, + 0x50C3, 0x50C4, 0x28C0, 0x50C5, 0x50C5, 0x1FB9, 0x50C6, 0x50C8, 0x28C2, + 0x50C9, 0x50C9, 0x22D8, 0x50CA, 0x50CE, 0x28C5, 0x50CF, 0x50CF, 0x0F5E, + 0x50D0, 0x50D0, 0x28CA, 0x50D1, 0x50D1, 0x20DF, 0x50D2, 0x50D4, 0x28CB, + 0x50D5, 0x50D5, 0x20C2, 0x50D6, 0x50D6, 0x12E6, 0x50D7, 0x50D9, 0x28CE, + 0x50DA, 0x50DA, 0x0A0E, 0x50DB, 0x50DD, 0x28D1, 0x50DE, 0x50DE, 0x2195, + 0x50DF, 0x50E4, 0x28D4, 0x50E5, 0x50E5, 0x1FAC, 0x50E6, 0x50E6, 0x12EA, + 0x50E7, 0x50E7, 0x0CE7, 0x50E8, 0x50E8, 0x22D3, 0x50E9, 0x50EB, 0x28DA, + 0x50EC, 0x50EC, 0x12E9, 0x50ED, 0x50ED, 0x12E8, 0x50EE, 0x50EE, 0x12EB, + 0x50EF, 0x50F2, 0x28DD, 0x50F3, 0x50F3, 0x0DD0, 0x50F4, 0x50F4, 0x28E1, + 0x50F5, 0x50F5, 0x087A, 0x50F6, 0x50F8, 0x28E2, 0x50F9, 0x50F9, 0x1F81, + 0x50FA, 0x50FA, 0x28E5, 0x50FB, 0x50FB, 0x0BC6, 0x50FC, 0x50FF, 0x28E6, + 0x5100, 0x5100, 0x2210, 0x5101, 0x5101, 0x28EA, 0x5102, 0x5102, 0x22CF, + 0x5103, 0x5103, 0x28EB, 0x5104, 0x5104, 0x2213, 0x5105, 0x5105, 0x28EC, + 0x5106, 0x5106, 0x12E7, 0x5107, 0x5107, 0x12EC, 0x5108, 0x5108, 0x1FE4, + 0x5109, 0x5109, 0x1F90, 0x510A, 0x510A, 0x28ED, 0x510B, 0x510B, 0x12ED, + 0x510C, 0x510F, 0x28EE, 0x5110, 0x5110, 0x22D6, 0x5111, 0x5111, 0x28F2, + 0x5112, 0x5112, 0x0CC0, 0x5113, 0x5113, 0x28F3, 0x5114, 0x5114, 0x22D0, + 0x5115, 0x5115, 0x22CE, 0x5116, 0x5117, 0x28F4, 0x5118, 0x5118, 0x2681, + 0x5119, 0x511E, 0x28F6, 0x511F, 0x511F, 0x1E76, 0x5120, 0x5120, 0x28FC, + 0x5121, 0x5121, 0x09C7, 0x5122, 0x5129, 0x28FD, 0x512A, 0x512A, 0x2231, + 0x512B, 0x5131, 0x2905, 0x5132, 0x5132, 0x1E93, 0x5133, 0x5136, 0x290C, + 0x5137, 0x5137, 0x22D2, 0x5138, 0x5139, 0x2910, 0x513A, 0x513A, 0x22D7, + 0x513B, 0x513B, 0x22D5, 0x513C, 0x513C, 0x22D1, 0x513D, 0x513E, 0x2912, + 0x513F, 0x513F, 0x0638, 0x5140, 0x5140, 0x1259, 0x5141, 0x5141, 0x110D, + 0x5142, 0x5142, 0x2914, 0x5143, 0x5143, 0x10ED, 0x5144, 0x5144, 0x0FA1, + 0x5145, 0x5145, 0x0509, 0x5146, 0x5146, 0x1178, 0x5147, 0x5147, 0x2915, + 0x5148, 0x5148, 0x0F35, 0x5149, 0x5149, 0x073B, 0x514A, 0x514A, 0x2916, + 0x514B, 0x514B, 0x0958, 0x514C, 0x514C, 0x2917, 0x514D, 0x514D, 0x0AE7, + 0x514E, 0x5150, 0x2918, 0x5151, 0x5151, 0x0611, 0x5152, 0x5152, 0x1EE5, + 0x5153, 0x5153, 0x291B, 0x5154, 0x5154, 0x0E74, 0x5155, 0x5155, 0x1302, + 0x5156, 0x5156, 0x1304, 0x5157, 0x5159, 0x291C, 0x515A, 0x515A, 0x0594, + 0x515B, 0x515B, 0x291F, 0x515C, 0x515C, 0x05F4, 0x515D, 0x5161, 0x2920, + 0x5162, 0x5162, 0x08D3, 0x5163, 0x5164, 0x2925, 0x5165, 0x5165, 0x0CC6, + 0x5166, 0x5167, 0x2927, 0x5168, 0x5168, 0x0C86, 0x5169, 0x5169, 0x2025, + 0x516A, 0x516A, 0x2929, 0x516B, 0x516B, 0x03D6, 0x516C, 0x516C, 0x0704, + 0x516D, 0x516D, 0x0A42, 0x516E, 0x516E, 0x12F6, 0x516F, 0x516F, 0x292A, + 0x5170, 0x5170, 0x09A7, 0x5171, 0x5171, 0x070B, 0x5172, 0x5172, 0x292B, + 0x5173, 0x5173, 0x0731, 0x5174, 0x5174, 0x0F96, 0x5175, 0x5175, 0x0461, + 0x5176, 0x5176, 0x0C03, 0x5177, 0x5177, 0x090E, 0x5178, 0x5178, 0x05C5, + 0x5179, 0x5179, 0x1225, 0x517A, 0x517A, 0x292C, 0x517B, 0x517B, 0x1021, + 0x517C, 0x517C, 0x0859, 0x517D, 0x517D, 0x0D75, 0x517E, 0x517F, 0x292D, + 0x5180, 0x5180, 0x0830, 0x5181, 0x5181, 0x12FA, 0x5182, 0x5182, 0x129D, + 0x5183, 0x5184, 0x292F, 0x5185, 0x5185, 0x0B3D, 0x5186, 0x5187, 0x2931, + 0x5188, 0x5188, 0x06CF, 0x5189, 0x5189, 0x0C98, 0x518A, 0x518B, 0x2933, + 0x518C, 0x518C, 0x04A8, 0x518D, 0x518D, 0x111C, 0x518E, 0x5191, 0x2935, + 0x5192, 0x5192, 0x0AB5, 0x5193, 0x5194, 0x2939, 0x5195, 0x5195, 0x0AE6, + 0x5196, 0x5196, 0x1314, 0x5197, 0x5197, 0x0CBA, 0x5198, 0x5198, 0x293B, + 0x5199, 0x5199, 0x0F7F, 0x519A, 0x519A, 0x293C, 0x519B, 0x519B, 0x092B, + 0x519C, 0x519C, 0x0B6A, 0x519D, 0x519F, 0x293D, 0x51A0, 0x51A0, 0x0733, + 0x51A1, 0x51A1, 0x2940, 0x51A2, 0x51A2, 0x1315, 0x51A3, 0x51A3, 0x2941, + 0x51A4, 0x51A4, 0x10EC, 0x51A5, 0x51A5, 0x1316, 0x51A6, 0x51AA, 0x2942, + 0x51AB, 0x51AB, 0x130F, 0x51AC, 0x51AC, 0x05EB, 0x51AD, 0x51AE, 0x2947, + 0x51AF, 0x51AF, 0x0688, 0x51B0, 0x51B0, 0x0462, 0x51B1, 0x51B1, 0x1310, + 0x51B2, 0x51B2, 0x050A, 0x51B3, 0x51B3, 0x0925, 0x51B4, 0x51B4, 0x2949, + 0x51B5, 0x51B5, 0x0983, 0x51B6, 0x51B6, 0x1038, 0x51B7, 0x51B7, 0x09CF, + 0x51B8, 0x51BA, 0x294A, 0x51BB, 0x51BB, 0x05F2, 0x51BC, 0x51BC, 0x1312, + 0x51BD, 0x51BD, 0x1311, 0x51BE, 0x51BF, 0x294D, 0x51C0, 0x51C0, 0x08EA, + 0x51C1, 0x51C3, 0x294F, 0x51C4, 0x51C4, 0x0BFF, 0x51C5, 0x51C5, 0x2952, + 0x51C6, 0x51C6, 0x1219, 0x51C7, 0x51C7, 0x1313, 0x51C8, 0x51C8, 0x2953, + 0x51C9, 0x51C9, 0x0A02, 0x51CA, 0x51CA, 0x2954, 0x51CB, 0x51CB, 0x05D3, + 0x51CC, 0x51CC, 0x0A31, 0x51CD, 0x51CD, 0x1ECF, 0x51CE, 0x51CE, 0x2955, + 0x51CF, 0x51CF, 0x0868, 0x51D0, 0x51D0, 0x2956, 0x51D1, 0x51D1, 0x0558, + 0x51D2, 0x51DA, 0x2957, 0x51DB, 0x51DB, 0x0A26, 0x51DC, 0x51DC, 0x2960, + 0x51DD, 0x51DD, 0x0B60, 0x51DE, 0x51DF, 0x2961, 0x51E0, 0x51E0, 0x082B, + 0x51E1, 0x51E1, 0x064F, 0x51E2, 0x51E3, 0x2963, 0x51E4, 0x51E4, 0x068C, + 0x51E5, 0x51EA, 0x2965, 0x51EB, 0x51EB, 0x1300, 0x51EC, 0x51EC, 0x296B, + 0x51ED, 0x51ED, 0x0BDD, 0x51EE, 0x51EE, 0x296C, 0x51EF, 0x51EF, 0x093A, + 0x51F0, 0x51F0, 0x07E0, 0x51F1, 0x51F1, 0x1FD9, 0x51F2, 0x51F2, 0x296D, + 0x51F3, 0x51F3, 0x05AB, 0x51F4, 0x51F4, 0x296E, 0x51F5, 0x51F5, 0x1399, + 0x51F6, 0x51F6, 0x0FA2, 0x51F7, 0x51F7, 0x296F, 0x51F8, 0x51F8, 0x0E6A, + 0x51F9, 0x51F9, 0x03C7, 0x51FA, 0x51FA, 0x051B, 0x51FB, 0x51FB, 0x080C, + 0x51FC, 0x51FC, 0x139A, 0x51FD, 0x51FD, 0x0766, 0x51FE, 0x51FE, 0x2970, + 0x51FF, 0x51FF, 0x1127, 0x5200, 0x5200, 0x0597, 0x5201, 0x5201, 0x05D4, + 0x5202, 0x5202, 0x128C, 0x5203, 0x5203, 0x0CAB, 0x5204, 0x5205, 0x2971, + 0x5206, 0x5206, 0x0673, 0x5207, 0x5207, 0x0C4D, 0x5208, 0x5208, 0x128D, + 0x5209, 0x5209, 0x2973, 0x520A, 0x520A, 0x093C, 0x520B, 0x520C, 0x2974, + 0x520D, 0x520D, 0x138B, 0x520E, 0x520E, 0x128E, 0x520F, 0x5210, 0x2976, + 0x5211, 0x5211, 0x0F97, 0x5212, 0x5212, 0x07C3, 0x5213, 0x5215, 0x2978, + 0x5216, 0x5216, 0x196E, 0x5217, 0x5217, 0x0A19, 0x5218, 0x5218, 0x0A3E, + 0x5219, 0x5219, 0x1135, 0x521A, 0x521A, 0x06D0, 0x521B, 0x521B, 0x0537, + 0x521C, 0x521C, 0x297B, 0x521D, 0x521D, 0x051A, 0x521E, 0x521F, 0x297C, + 0x5220, 0x5220, 0x0CF7, 0x5221, 0x5223, 0x297E, 0x5224, 0x5224, 0x0B91, + 0x5225, 0x5227, 0x2981, 0x5228, 0x5228, 0x0B9A, 0x5229, 0x5229, 0x09E6, + 0x522A, 0x522A, 0x2984, 0x522B, 0x522B, 0x0459, 0x522C, 0x522C, 0x2985, + 0x522D, 0x522D, 0x128F, 0x522E, 0x522E, 0x0727, 0x522F, 0x522F, 0x2986, + 0x5230, 0x5230, 0x059E, 0x5231, 0x5232, 0x2987, 0x5233, 0x5233, 0x1290, + 0x5234, 0x5235, 0x2989, 0x5236, 0x5236, 0x11C5, 0x5237, 0x5237, 0x0D97, + 0x5238, 0x5238, 0x0C8A, 0x5239, 0x5239, 0x0CEB, 0x523A, 0x523A, 0x054F, + 0x523B, 0x523B, 0x0959, 0x523C, 0x523C, 0x298B, 0x523D, 0x523D, 0x074D, + 0x523E, 0x523E, 0x298C, 0x523F, 0x5240, 0x1291, 0x5241, 0x5241, 0x0626, + 0x5242, 0x5242, 0x0834, 0x5243, 0x5243, 0x0E3D, 0x5244, 0x5244, 0x22C8, + 0x5245, 0x5246, 0x298D, 0x5247, 0x5247, 0x2263, 0x5248, 0x5249, 0x298F, + 0x524A, 0x524A, 0x0F64, 0x524B, 0x524B, 0x2683, 0x524C, 0x524C, 0x1293, + 0x524D, 0x524D, 0x0C2D, 0x524E, 0x524F, 0x2991, 0x5250, 0x5250, 0x0729, + 0x5251, 0x5251, 0x0874, 0x5252, 0x5253, 0x2993, 0x5254, 0x5254, 0x0E31, + 0x5255, 0x5255, 0x2995, 0x5256, 0x5256, 0x0BE9, 0x5257, 0x525A, 0x2996, + 0x525B, 0x525B, 0x1F17, 0x525C, 0x525C, 0x1296, 0x525D, 0x525D, 0x299A, + 0x525E, 0x525E, 0x1294, 0x525F, 0x5260, 0x299B, 0x5261, 0x5261, 0x1295, + 0x5262, 0x5264, 0x299D, 0x5265, 0x5265, 0x0409, 0x5266, 0x5266, 0x29A0, + 0x5267, 0x5267, 0x0916, 0x5268, 0x5268, 0x29A1, 0x5269, 0x5269, 0x0D3A, + 0x526A, 0x526A, 0x0867, 0x526B, 0x526D, 0x29A2, 0x526E, 0x526E, 0x1F2B, + 0x526F, 0x526F, 0x06AC, 0x5270, 0x5271, 0x29A5, 0x5272, 0x5272, 0x06E9, + 0x5273, 0x5273, 0x29A7, 0x5274, 0x5274, 0x22CA, 0x5275, 0x5275, 0x1E99, + 0x5276, 0x527C, 0x29A8, 0x527D, 0x527D, 0x1298, 0x527E, 0x527E, 0x29AF, + 0x527F, 0x527F, 0x089C, 0x5280, 0x5280, 0x29B0, 0x5281, 0x5281, 0x129A, + 0x5282, 0x5282, 0x1299, 0x5283, 0x5283, 0x1F4F, 0x5284, 0x5286, 0x29B1, + 0x5287, 0x5287, 0x1FCF, 0x5288, 0x5288, 0x0BBD, 0x5289, 0x5289, 0x2036, + 0x528A, 0x528A, 0x1F3A, 0x528B, 0x528B, 0x29B4, 0x528C, 0x528C, 0x22C9, + 0x528D, 0x528D, 0x1F99, 0x528E, 0x528F, 0x29B5, 0x5290, 0x5290, 0x129B, + 0x5291, 0x5291, 0x1F75, 0x5292, 0x5292, 0x29B7, 0x5293, 0x5293, 0x129C, + 0x5294, 0x529A, 0x29B8, 0x529B, 0x529B, 0x09EF, 0x529C, 0x529C, 0x29BF, + 0x529D, 0x529D, 0x0C8B, 0x529E, 0x529E, 0x03F7, 0x529F, 0x529F, 0x06FF, + 0x52A0, 0x52A0, 0x0846, 0x52A1, 0x52A1, 0x0F00, 0x52A2, 0x52A2, 0x138D, + 0x52A3, 0x52A3, 0x0A1C, 0x52A4, 0x52A7, 0x29C0, 0x52A8, 0x52A8, 0x05EE, + 0x52A9, 0x52A9, 0x11F9, 0x52AA, 0x52AA, 0x0B6D, 0x52AB, 0x52AB, 0x08AA, + 0x52AC, 0x52AD, 0x138E, 0x52AE, 0x52B0, 0x29C4, 0x52B1, 0x52B1, 0x09E3, + 0x52B2, 0x52B2, 0x08D1, 0x52B3, 0x52B3, 0x09B8, 0x52B4, 0x52BD, 0x29C7, + 0x52BE, 0x52BE, 0x1390, 0x52BF, 0x52BF, 0x0D5D, 0x52C0, 0x52C0, 0x29D1, + 0x52C1, 0x52C1, 0x1FBE, 0x52C2, 0x52C2, 0x29D2, 0x52C3, 0x52C3, 0x0471, + 0x52C4, 0x52C6, 0x29D3, 0x52C7, 0x52C7, 0x10A7, 0x52C8, 0x52C8, 0x29D6, + 0x52C9, 0x52C9, 0x0AE8, 0x52CA, 0x52CA, 0x29D7, 0x52CB, 0x52CB, 0x0FD4, + 0x52CC, 0x52CF, 0x29D8, 0x52D0, 0x52D0, 0x1392, 0x52D1, 0x52D1, 0x29DC, + 0x52D2, 0x52D2, 0x09C0, 0x52D3, 0x52D4, 0x29DD, 0x52D5, 0x52D5, 0x1ECD, + 0x52D6, 0x52D6, 0x1393, 0x52D7, 0x52D7, 0x29DF, 0x52D8, 0x52D8, 0x093E, + 0x52D9, 0x52D9, 0x21A9, 0x52DA, 0x52DA, 0x29E0, 0x52DB, 0x52DB, 0x21E6, + 0x52DC, 0x52DC, 0x29E1, 0x52DD, 0x52DD, 0x2127, 0x52DE, 0x52DE, 0x2003, + 0x52DF, 0x52DF, 0x0B1F, 0x52E0, 0x52E1, 0x29E2, 0x52E2, 0x52E2, 0x2132, + 0x52E3, 0x52E3, 0x29E4, 0x52E4, 0x52E4, 0x0C57, 0x52E5, 0x52EF, 0x29E5, + 0x52F0, 0x52F0, 0x1394, 0x52F1, 0x52F1, 0x2323, 0x52F2, 0x52F4, 0x29F0, + 0x52F5, 0x52F5, 0x2011, 0x52F6, 0x52F7, 0x29F3, 0x52F8, 0x52F8, 0x20F5, + 0x52F9, 0x52F9, 0x12FC, 0x52FA, 0x52FA, 0x0D10, 0x52FB, 0x52FD, 0x29F5, + 0x52FE, 0x52FE, 0x070D, 0x52FF, 0x52FF, 0x0EFF, 0x5300, 0x5300, 0x110B, + 0x5301, 0x5304, 0x29F8, 0x5305, 0x5305, 0x0407, 0x5306, 0x5306, 0x0555, + 0x5307, 0x5307, 0x29FC, 0x5308, 0x5308, 0x0FA4, 0x5309, 0x530C, 0x29FD, + 0x530D, 0x530D, 0x12FD, 0x530E, 0x530E, 0x2A01, 0x530F, 0x530F, 0x14B5, + 0x5310, 0x5310, 0x12FF, 0x5311, 0x5314, 0x2A02, 0x5315, 0x5315, 0x1266, + 0x5316, 0x5316, 0x07C4, 0x5317, 0x5317, 0x041A, 0x5318, 0x5318, 0x2A06, + 0x5319, 0x5319, 0x04FC, 0x531A, 0x531A, 0x1284, 0x531B, 0x531C, 0x2A07, + 0x531D, 0x531D, 0x1114, 0x531E, 0x531F, 0x2A09, 0x5320, 0x5320, 0x0884, + 0x5321, 0x5321, 0x097C, 0x5322, 0x5322, 0x2A0B, 0x5323, 0x5323, 0x0F28, + 0x5324, 0x5325, 0x2A0C, 0x5326, 0x5326, 0x1286, 0x5327, 0x5329, 0x2A0E, + 0x532A, 0x532A, 0x0668, 0x532B, 0x532C, 0x2A11, 0x532D, 0x532D, 0x22C5, + 0x532E, 0x532E, 0x1287, 0x532F, 0x532F, 0x1F5E, 0x5330, 0x5330, 0x2A13, + 0x5331, 0x5331, 0x22C6, 0x5332, 0x5338, 0x2A14, 0x5339, 0x5339, 0x0BC4, + 0x533A, 0x533A, 0x0C75, 0x533B, 0x533B, 0x1044, 0x533C, 0x533D, 0x2A1B, + 0x533E, 0x533E, 0x1288, 0x533F, 0x533F, 0x0B47, 0x5340, 0x5340, 0x20EF, + 0x5341, 0x5341, 0x0D45, 0x5342, 0x5342, 0x2A1D, 0x5343, 0x5343, 0x0C24, + 0x5344, 0x5344, 0x2A1E, 0x5345, 0x5345, 0x125C, 0x5346, 0x5346, 0x2A1F, + 0x5347, 0x5347, 0x0D36, 0x5348, 0x5348, 0x0EF6, 0x5349, 0x5349, 0x07F1, + 0x534A, 0x534A, 0x03F6, 0x534B, 0x534D, 0x2A20, 0x534E, 0x534E, 0x07BF, + 0x534F, 0x534F, 0x0F78, 0x5350, 0x5350, 0x2A23, 0x5351, 0x5351, 0x0419, + 0x5352, 0x5352, 0x1241, 0x5353, 0x5353, 0x121C, 0x5354, 0x5354, 0x21D0, + 0x5355, 0x5355, 0x0586, 0x5356, 0x5356, 0x0A9B, 0x5357, 0x5357, 0x0B32, + 0x5358, 0x5359, 0x2A24, 0x535A, 0x535A, 0x0470, 0x535B, 0x535B, 0x2A26, + 0x535C, 0x535C, 0x047E, 0x535D, 0x535D, 0x2A27, 0x535E, 0x535E, 0x044E, + 0x535F, 0x535F, 0x14FA, 0x5360, 0x5360, 0x115D, 0x5361, 0x5361, 0x0935, + 0x5362, 0x5362, 0x0A53, 0x5363, 0x5363, 0x128B, 0x5364, 0x5364, 0x0A58, + 0x5365, 0x5365, 0x2A28, 0x5366, 0x5366, 0x128A, 0x5367, 0x5367, 0x0EE3, + 0x5368, 0x5368, 0x2A29, 0x5369, 0x5369, 0x1352, 0x536A, 0x536A, 0x2A2A, + 0x536B, 0x536B, 0x0ECF, 0x536C, 0x536D, 0x2A2B, 0x536E, 0x536E, 0x126A, + 0x536F, 0x536F, 0x0AB3, 0x5370, 0x5370, 0x1086, 0x5371, 0x5371, 0x0EB2, + 0x5372, 0x5372, 0x2A2D, 0x5373, 0x5373, 0x0827, 0x5374, 0x5374, 0x0C8F, + 0x5375, 0x5375, 0x0A78, 0x5376, 0x5376, 0x2A2E, 0x5377, 0x5377, 0x091C, + 0x5378, 0x5378, 0x0F81, 0x5379, 0x5379, 0x2A2F, 0x537A, 0x537A, 0x1353, + 0x537B, 0x537E, 0x2A30, 0x537F, 0x537F, 0x0C61, 0x5380, 0x5381, 0x2A34, + 0x5382, 0x5382, 0x04CC, 0x5383, 0x5383, 0x2A36, 0x5384, 0x5384, 0x0631, + 0x5385, 0x5385, 0x0E4F, 0x5386, 0x5386, 0x09E5, 0x5387, 0x5388, 0x2A37, + 0x5389, 0x5389, 0x09E2, 0x538A, 0x538A, 0x2A39, 0x538B, 0x538B, 0x0FE2, + 0x538C, 0x538C, 0x100A, 0x538D, 0x538D, 0x127D, 0x538E, 0x5394, 0x2A3A, + 0x5395, 0x5395, 0x04A5, 0x5396, 0x5397, 0x2A41, 0x5398, 0x5398, 0x09D0, + 0x5399, 0x5399, 0x22C1, 0x539A, 0x539A, 0x07A8, 0x539B, 0x539C, 0x2A43, + 0x539D, 0x539D, 0x127E, 0x539E, 0x539E, 0x2A45, 0x539F, 0x539F, 0x10F0, + 0x53A0, 0x53A0, 0x1E64, 0x53A1, 0x53A1, 0x2A46, 0x53A2, 0x53A2, 0x0F4E, + 0x53A3, 0x53A3, 0x127F, 0x53A4, 0x53A4, 0x2A47, 0x53A5, 0x53A5, 0x1280, + 0x53A6, 0x53A6, 0x0F30, 0x53A7, 0x53A7, 0x2A48, 0x53A8, 0x53A8, 0x051D, + 0x53A9, 0x53A9, 0x08F6, 0x53AA, 0x53AC, 0x2A49, 0x53AD, 0x53AD, 0x21F9, + 0x53AE, 0x53AE, 0x1281, 0x53AF, 0x53B1, 0x2A4C, 0x53B2, 0x53B2, 0x2010, + 0x53B3, 0x53B3, 0x2A4F, 0x53B4, 0x53B4, 0x22C2, 0x53B5, 0x53B5, 0x2A50, + 0x53B6, 0x53B6, 0x139C, 0x53B7, 0x53BA, 0x2A51, 0x53BB, 0x53BB, 0x0C80, + 0x53BC, 0x53BE, 0x2A55, 0x53BF, 0x53BF, 0x0F45, 0x53C0, 0x53C0, 0x2A58, + 0x53C1, 0x53C1, 0x0CD9, 0x53C2, 0x53C2, 0x0495, 0x53C3, 0x53C3, 0x1E5A, + 0x53C4, 0x53C7, 0x2A59, 0x53C8, 0x53C8, 0x10BB, 0x53C9, 0x53C9, 0x04AD, + 0x53CA, 0x53CA, 0x0823, 0x53CB, 0x53CB, 0x10B6, 0x53CC, 0x53CC, 0x0DA0, + 0x53CD, 0x53CD, 0x0651, 0x53CE, 0x53D0, 0x2A5D, 0x53D1, 0x53D1, 0x063F, + 0x53D2, 0x53D3, 0x2A60, 0x53D4, 0x53D4, 0x0D7C, 0x53D5, 0x53D5, 0x2A62, + 0x53D6, 0x53D6, 0x0C7C, 0x53D7, 0x53D7, 0x0D73, 0x53D8, 0x53D8, 0x044D, + 0x53D9, 0x53D9, 0x0FBB, 0x53DA, 0x53DA, 0x2A63, 0x53DB, 0x53DB, 0x0B92, + 0x53DC, 0x53DE, 0x2A64, 0x53DF, 0x53DF, 0x1395, 0x53E0, 0x53E0, 0x05DF, + 0x53E1, 0x53E1, 0x2A67, 0x53E2, 0x53E2, 0x1EA2, 0x53E3, 0x53E3, 0x0967, + 0x53E4, 0x53E4, 0x071E, 0x53E5, 0x53E5, 0x0913, 0x53E6, 0x53E6, 0x0A36, + 0x53E7, 0x53E7, 0x2A68, 0x53E8, 0x53E8, 0x14FE, 0x53E9, 0x53E9, 0x14FD, + 0x53EA, 0x53EA, 0x11BA, 0x53EB, 0x53EB, 0x08A1, 0x53EC, 0x53EC, 0x117A, + 0x53ED, 0x53ED, 0x03D3, 0x53EE, 0x53EE, 0x05E2, 0x53EF, 0x53EF, 0x0956, + 0x53F0, 0x53F0, 0x0DFB, 0x53F1, 0x53F1, 0x14FB, 0x53F2, 0x53F2, 0x0D4E, + 0x53F3, 0x53F3, 0x10B7, 0x53F4, 0x53F4, 0x2A69, 0x53F5, 0x53F5, 0x1285, + 0x53F6, 0x53F6, 0x103D, 0x53F7, 0x53F7, 0x077C, 0x53F8, 0x53F8, 0x0DB3, + 0x53F9, 0x53F9, 0x0E11, 0x53FA, 0x53FA, 0x2A6A, 0x53FB, 0x53FB, 0x14FF, + 0x53FC, 0x53FC, 0x05D1, 0x53FD, 0x53FD, 0x14FC, 0x53FE, 0x53FF, 0x2A6B, + 0x5400, 0x5400, 0x2A6D, 0x5401, 0x5401, 0x10DA, 0x5402, 0x5402, 0x2A6E, + 0x5403, 0x5403, 0x04F9, 0x5404, 0x5404, 0x06F2, 0x5405, 0x5405, 0x2A6F, + 0x5406, 0x5406, 0x1502, 0x5407, 0x5407, 0x2A70, 0x5408, 0x5408, 0x0786, + 0x5409, 0x5409, 0x081D, 0x540A, 0x540A, 0x05D6, 0x540B, 0x540B, 0x2A71, + 0x540C, 0x540C, 0x0E5D, 0x540D, 0x540D, 0x0B00, 0x540E, 0x540E, 0x07AA, + 0x540F, 0x540F, 0x09DF, 0x5410, 0x5410, 0x0E73, 0x5411, 0x5411, 0x0F5F, + 0x5412, 0x5412, 0x1500, 0x5413, 0x5413, 0x0F32, 0x5414, 0x5414, 0x2A72, + 0x5415, 0x5415, 0x0A67, 0x5416, 0x5416, 0x1501, 0x5417, 0x5417, 0x0A97, + 0x5418, 0x541A, 0x2A73, 0x541B, 0x541B, 0x092C, 0x541C, 0x541C, 0x2A76, + 0x541D, 0x541D, 0x0A28, 0x541E, 0x541E, 0x0E7D, 0x541F, 0x541F, 0x107E, + 0x5420, 0x5420, 0x066A, 0x5421, 0x5421, 0x1509, 0x5422, 0x5422, 0x2A77, + 0x5423, 0x5423, 0x150C, 0x5424, 0x5425, 0x2A78, 0x5426, 0x5426, 0x068E, + 0x5427, 0x5427, 0x03D4, 0x5428, 0x5428, 0x0615, 0x5429, 0x5429, 0x0671, + 0x542A, 0x542A, 0x2A7A, 0x542B, 0x542B, 0x0763, 0x542C, 0x542C, 0x0E50, + 0x542D, 0x542D, 0x0961, 0x542E, 0x542E, 0x0DA6, 0x542F, 0x542F, 0x0C13, + 0x5430, 0x5430, 0x2A7B, 0x5431, 0x5431, 0x11A7, 0x5432, 0x5432, 0x150D, + 0x5433, 0x5433, 0x2A7C, 0x5434, 0x5434, 0x0EF1, 0x5435, 0x5435, 0x04D8, + 0x5436, 0x5437, 0x2A7D, 0x5438, 0x5438, 0x0F0B, 0x5439, 0x5439, 0x0538, + 0x543A, 0x543A, 0x2A7F, 0x543B, 0x543B, 0x0ED6, 0x543C, 0x543C, 0x07A7, + 0x543D, 0x543D, 0x2A80, 0x543E, 0x543E, 0x0EF0, 0x543F, 0x543F, 0x2A81, + 0x5440, 0x5440, 0x0FE6, 0x5441, 0x5442, 0x2A82, 0x5443, 0x5443, 0x1508, + 0x5444, 0x5445, 0x2A84, 0x5446, 0x5446, 0x0577, 0x5447, 0x5447, 0x2A86, + 0x5448, 0x5448, 0x04EF, 0x5449, 0x5449, 0x2A87, 0x544A, 0x544A, 0x06E1, + 0x544B, 0x544B, 0x1503, 0x544C, 0x544F, 0x2A88, 0x5450, 0x5450, 0x0B28, + 0x5451, 0x5451, 0x2A8C, 0x5452, 0x5454, 0x1504, 0x5455, 0x5455, 0x0B7C, + 0x5456, 0x5456, 0x1507, 0x5457, 0x5457, 0x150A, 0x5458, 0x5458, 0x10F4, + 0x5459, 0x5459, 0x150B, 0x545A, 0x545A, 0x2A8D, 0x545B, 0x545B, 0x0C37, + 0x545C, 0x545C, 0x0EE7, 0x545D, 0x5461, 0x2A8E, 0x5462, 0x5462, 0x0B3B, + 0x5463, 0x5463, 0x2A93, 0x5464, 0x5464, 0x1512, 0x5465, 0x5465, 0x2A94, + 0x5466, 0x5466, 0x1517, 0x5467, 0x5467, 0x2A95, 0x5468, 0x5468, 0x11DB, + 0x5469, 0x5470, 0x2A96, 0x5471, 0x5471, 0x1511, 0x5472, 0x5472, 0x1522, + 0x5473, 0x5473, 0x0EC5, 0x5474, 0x5474, 0x2A9E, 0x5475, 0x5475, 0x077E, + 0x5476, 0x5476, 0x1516, 0x5477, 0x5477, 0x1510, 0x5478, 0x5478, 0x0B9F, + 0x5479, 0x547A, 0x2A9F, 0x547B, 0x547B, 0x0D24, 0x547C, 0x547C, 0x07AB, + 0x547D, 0x547D, 0x0B01, 0x547E, 0x547F, 0x2AA1, 0x5480, 0x5480, 0x0906, + 0x5481, 0x5481, 0x2AA3, 0x5482, 0x5482, 0x150E, 0x5483, 0x5483, 0x2AA4, + 0x5484, 0x5484, 0x1515, 0x5485, 0x5485, 0x2AA5, 0x5486, 0x5486, 0x0B99, + 0x5487, 0x548A, 0x2AA6, 0x548B, 0x548B, 0x1147, 0x548C, 0x548C, 0x0784, + 0x548D, 0x548D, 0x2AAA, 0x548E, 0x548E, 0x08FB, 0x548F, 0x548F, 0x10A2, + 0x5490, 0x5490, 0x06BB, 0x5491, 0x5491, 0x2AAB, 0x5492, 0x5492, 0x11E3, + 0x5493, 0x5493, 0x2AAC, 0x5494, 0x5494, 0x150F, 0x5495, 0x5495, 0x0717, + 0x5496, 0x5496, 0x0934, 0x5497, 0x5498, 0x2AAD, 0x5499, 0x5499, 0x0A45, + 0x549A, 0x549B, 0x1513, 0x549C, 0x549C, 0x2AAF, 0x549D, 0x549D, 0x1518, + 0x549E, 0x54A2, 0x2AB0, 0x54A3, 0x54A3, 0x1523, 0x54A4, 0x54A4, 0x152D, + 0x54A5, 0x54A5, 0x2AB5, 0x54A6, 0x54A6, 0x151F, 0x54A7, 0x54A7, 0x151E, + 0x54A8, 0x54A8, 0x1226, 0x54A9, 0x54AA, 0x152B, 0x54AB, 0x54AB, 0x1767, + 0x54AC, 0x54AC, 0x102E, 0x54AD, 0x54AD, 0x151A, 0x54AE, 0x54AE, 0x2AB6, + 0x54AF, 0x54AF, 0x0936, 0x54B0, 0x54B0, 0x2AB7, 0x54B1, 0x54B1, 0x111E, + 0x54B2, 0x54B2, 0x2AB8, 0x54B3, 0x54B3, 0x0955, 0x54B4, 0x54B4, 0x151C, + 0x54B5, 0x54B7, 0x2AB9, 0x54B8, 0x54B8, 0x0F39, 0x54B9, 0x54BA, 0x2ABC, + 0x54BB, 0x54BB, 0x1525, 0x54BC, 0x54BC, 0x236D, 0x54BD, 0x54BD, 0x0FF3, + 0x54BE, 0x54BE, 0x2ABE, 0x54BF, 0x54BF, 0x1526, 0x54C0, 0x54C0, 0x03B2, + 0x54C1, 0x54C1, 0x0BD6, 0x54C2, 0x54C2, 0x151B, 0x54C3, 0x54C3, 0x2ABF, + 0x54C4, 0x54C4, 0x079C, 0x54C5, 0x54C5, 0x2AC0, 0x54C6, 0x54C6, 0x061E, + 0x54C7, 0x54C7, 0x0E8C, 0x54C8, 0x54C8, 0x0757, 0x54C9, 0x54C9, 0x1118, + 0x54CA, 0x54CB, 0x2AC1, 0x54CC, 0x54CC, 0x1527, 0x54CD, 0x54CD, 0x0F59, + 0x54CE, 0x54CE, 0x03B0, 0x54CF, 0x54CF, 0x152F, 0x54D0, 0x54D0, 0x1519, + 0x54D1, 0x54D1, 0x0FEF, 0x54D2, 0x54D2, 0x151D, 0x54D3, 0x54D4, 0x1520, + 0x54D5, 0x54D5, 0x1524, 0x54D6, 0x54D6, 0x2AC3, 0x54D7, 0x54D7, 0x07BE, + 0x54D8, 0x54D8, 0x2AC4, 0x54D9, 0x54DA, 0x1528, 0x54DB, 0x54DB, 0x2AC5, + 0x54DC, 0x54DC, 0x152A, 0x54DD, 0x54DD, 0x152E, 0x54DE, 0x54DE, 0x1530, + 0x54DF, 0x54DF, 0x1099, 0x54E0, 0x54E0, 0x2AC6, 0x54E1, 0x54E1, 0x2247, + 0x54E2, 0x54E4, 0x2AC7, 0x54E5, 0x54E5, 0x06E2, 0x54E6, 0x54E6, 0x0B77, + 0x54E7, 0x54E7, 0x1532, 0x54E8, 0x54E8, 0x0D13, 0x54E9, 0x54E9, 0x09F1, + 0x54EA, 0x54EA, 0x0B27, 0x54EB, 0x54EC, 0x2ACA, 0x54ED, 0x54ED, 0x096B, + 0x54EE, 0x54EE, 0x0F65, 0x54EF, 0x54F1, 0x2ACC, 0x54F2, 0x54F2, 0x117D, + 0x54F3, 0x54F3, 0x1536, 0x54F4, 0x54F9, 0x2ACF, 0x54FA, 0x54FA, 0x047F, + 0x54FB, 0x54FB, 0x2AD5, 0x54FC, 0x54FC, 0x0796, 0x54FD, 0x54FD, 0x1534, + 0x54FE, 0x54FE, 0x2AD6, 0x54FF, 0x54FF, 0x1391, 0x5500, 0x5500, 0x2AD7, + 0x5501, 0x5501, 0x100D, 0x5502, 0x5503, 0x2AD8, 0x5504, 0x5504, 0x236C, + 0x5505, 0x5505, 0x2ADA, 0x5506, 0x5506, 0x0DE9, 0x5507, 0x5507, 0x0540, + 0x5508, 0x5508, 0x2ADB, 0x5509, 0x5509, 0x03B1, 0x550A, 0x550E, 0x2ADC, + 0x550F, 0x550F, 0x1539, 0x5510, 0x5510, 0x0E19, 0x5511, 0x5511, 0x153A, + 0x5512, 0x5513, 0x2AE1, 0x5514, 0x5514, 0x1535, 0x5515, 0x551A, 0x2AE3, + 0x551B, 0x551B, 0x1531, 0x551C, 0x551F, 0x2AE9, 0x5520, 0x5520, 0x1533, + 0x5521, 0x5521, 0x2AED, 0x5522, 0x5523, 0x1537, 0x5524, 0x5524, 0x07D2, + 0x5525, 0x5526, 0x2AEE, 0x5527, 0x5527, 0x153B, 0x5528, 0x5529, 0x2AF0, + 0x552A, 0x552A, 0x153C, 0x552B, 0x552B, 0x2AF2, 0x552C, 0x552C, 0x07B8, + 0x552D, 0x552D, 0x2AF3, 0x552E, 0x552E, 0x0D72, 0x552F, 0x552F, 0x0EB7, + 0x5530, 0x5530, 0x154D, 0x5531, 0x5531, 0x04CF, 0x5532, 0x5532, 0x2AF4, + 0x5533, 0x5533, 0x154C, 0x5534, 0x5536, 0x2AF5, 0x5537, 0x5537, 0x1547, + 0x5538, 0x553B, 0x2AF8, 0x553C, 0x553C, 0x1546, 0x553D, 0x553D, 0x2AFC, + 0x553E, 0x553E, 0x0E8A, 0x553F, 0x553F, 0x1544, 0x5540, 0x5540, 0x2AFD, + 0x5541, 0x5541, 0x1542, 0x5542, 0x5542, 0x2AFE, 0x5543, 0x5543, 0x095D, + 0x5544, 0x5544, 0x1221, 0x5545, 0x5545, 0x2AFF, 0x5546, 0x5546, 0x0D05, + 0x5547, 0x5548, 0x2B00, 0x5549, 0x5549, 0x1540, 0x554A, 0x554A, 0x03AC, + 0x554B, 0x554E, 0x2B02, 0x554F, 0x554F, 0x219C, 0x5550, 0x5550, 0x1545, + 0x5551, 0x5552, 0x2B06, 0x5553, 0x5553, 0x20C9, 0x5554, 0x5554, 0x2B08, + 0x5555, 0x5555, 0x1543, 0x5556, 0x5556, 0x1548, 0x5557, 0x555B, 0x2B09, + 0x555C, 0x555C, 0x154E, 0x555D, 0x555D, 0x2B0E, 0x555E, 0x555E, 0x21F0, + 0x555F, 0x5560, 0x2B0F, 0x5561, 0x5561, 0x0665, 0x5562, 0x5563, 0x2B11, + 0x5564, 0x5564, 0x0BC0, 0x5565, 0x5565, 0x0CEF, 0x5566, 0x5566, 0x099D, + 0x5567, 0x5567, 0x153D, 0x5568, 0x5569, 0x2B13, 0x556A, 0x556A, 0x0B7F, + 0x556B, 0x556B, 0x2B15, 0x556C, 0x556C, 0x127A, 0x556D, 0x556D, 0x1541, + 0x556E, 0x556E, 0x0B59, 0x556F, 0x5574, 0x2B16, 0x5575, 0x5577, 0x1549, + 0x5578, 0x5578, 0x0F70, 0x5579, 0x557A, 0x2B1C, 0x557B, 0x557B, 0x155A, + 0x557C, 0x557C, 0x0E37, 0x557D, 0x557D, 0x2B1E, 0x557E, 0x557E, 0x1557, + 0x557F, 0x557F, 0x2B1F, 0x5580, 0x5580, 0x0933, 0x5581, 0x5581, 0x1555, + 0x5582, 0x5582, 0x0EC8, 0x5583, 0x5583, 0x1551, 0x5584, 0x5584, 0x0CFF, + 0x5585, 0x5586, 0x2B20, 0x5587, 0x5587, 0x0999, 0x5588, 0x5588, 0x1554, + 0x5589, 0x5589, 0x07A4, 0x558A, 0x558A, 0x0767, 0x558B, 0x558B, 0x154F, + 0x558C, 0x558E, 0x2B22, 0x558F, 0x558F, 0x153E, 0x5590, 0x5590, 0x2B25, + 0x5591, 0x5591, 0x1559, 0x5592, 0x5593, 0x2B26, 0x5594, 0x5594, 0x155E, + 0x5595, 0x5597, 0x2B28, 0x5598, 0x5598, 0x0530, 0x5599, 0x5599, 0x155F, + 0x559A, 0x559B, 0x2B2B, 0x559C, 0x559C, 0x0F1F, 0x559D, 0x559D, 0x077F, + 0x559E, 0x559E, 0x2B2D, 0x559F, 0x559F, 0x1556, 0x55A0, 0x55A6, 0x2B2E, + 0x55A7, 0x55A7, 0x0FC5, 0x55A8, 0x55A9, 0x2B35, 0x55AA, 0x55AA, 0x210B, + 0x55AB, 0x55AB, 0x2B37, 0x55AC, 0x55AC, 0x20DE, 0x55AD, 0x55AD, 0x2B38, + 0x55AE, 0x55AE, 0x1EAA, 0x55AF, 0x55B0, 0x2B39, 0x55B1, 0x55B1, 0x1552, + 0x55B2, 0x55B2, 0x222C, 0x55B3, 0x55B3, 0x113E, 0x55B4, 0x55B4, 0x2B3B, + 0x55B5, 0x55B5, 0x153F, 0x55B6, 0x55B6, 0x2B3C, 0x55B7, 0x55B7, 0x0BA8, + 0x55B8, 0x55B8, 0x2B3D, 0x55B9, 0x55B9, 0x1553, 0x55BA, 0x55BA, 0x2B3E, + 0x55BB, 0x55BB, 0x10DC, 0x55BC, 0x55BC, 0x2B3F, 0x55BD, 0x55BE, 0x155C, + 0x55BF, 0x55C3, 0x2B40, 0x55C4, 0x55C4, 0x156A, 0x55C5, 0x55C5, 0x0FAC, + 0x55C6, 0x55C6, 0x20D8, 0x55C7, 0x55C7, 0x22C0, 0x55C8, 0x55C8, 0x2B45, + 0x55C9, 0x55C9, 0x1562, 0x55CA, 0x55CB, 0x2B46, 0x55CC, 0x55CD, 0x156F, + 0x55CE, 0x55CE, 0x206F, 0x55CF, 0x55D0, 0x2B48, 0x55D1, 0x55D1, 0x1564, + 0x55D2, 0x55D2, 0x1550, 0x55D3, 0x55D3, 0x0CDD, 0x55D4, 0x55D4, 0x1567, + 0x55D5, 0x55D5, 0x2B4A, 0x55D6, 0x55D6, 0x1558, 0x55D7, 0x55D9, 0x2B4B, + 0x55DA, 0x55DA, 0x21A1, 0x55DB, 0x55DB, 0x2B4E, 0x55DC, 0x55DC, 0x0D5F, + 0x55DD, 0x55DD, 0x1569, 0x55DE, 0x55DE, 0x2B4F, 0x55DF, 0x55DF, 0x155B, + 0x55E0, 0x55E0, 0x2B50, 0x55E1, 0x55E1, 0x0EDA, 0x55E2, 0x55E2, 0x2B51, + 0x55E3, 0x55E3, 0x0DB8, 0x55E4, 0x55E4, 0x1573, 0x55E5, 0x55E5, 0x156C, + 0x55E6, 0x55E6, 0x1568, 0x55E7, 0x55E7, 0x2B52, 0x55E8, 0x55E8, 0x1571, + 0x55E9, 0x55E9, 0x2379, 0x55EA, 0x55EA, 0x1560, 0x55EB, 0x55EC, 0x1565, + 0x55ED, 0x55EE, 0x2B53, 0x55EF, 0x55EF, 0x156B, 0x55F0, 0x55F1, 0x2B55, + 0x55F2, 0x55F3, 0x156D, 0x55F4, 0x55F4, 0x2B57, 0x55F5, 0x55F5, 0x1572, + 0x55F6, 0x55F6, 0x2372, 0x55F7, 0x55F7, 0x1561, 0x55F8, 0x55FC, 0x2B58, + 0x55FD, 0x55FD, 0x0DC9, 0x55FE, 0x55FE, 0x157B, 0x55FF, 0x55FF, 0x2B5D, + 0x5600, 0x5600, 0x157C, 0x5601, 0x5601, 0x1578, 0x5602, 0x5605, 0x2B5E, + 0x5606, 0x5606, 0x216A, 0x5607, 0x5607, 0x2B62, 0x5608, 0x5608, 0x1576, + 0x5609, 0x5609, 0x0841, 0x560A, 0x560B, 0x2B63, 0x560C, 0x560C, 0x1577, + 0x560D, 0x560D, 0x237C, 0x560E, 0x560E, 0x06BD, 0x560F, 0x560F, 0x127B, + 0x5610, 0x5613, 0x2B65, 0x5614, 0x5614, 0x20B0, 0x5615, 0x5615, 0x2B69, + 0x5616, 0x5616, 0x237A, 0x5617, 0x5617, 0x1E74, 0x5618, 0x5618, 0x0FB5, + 0x5619, 0x561A, 0x2B6A, 0x561B, 0x561B, 0x0A96, 0x561C, 0x561C, 0x2377, + 0x561D, 0x561D, 0x2B6C, 0x561E, 0x561E, 0x1575, 0x561F, 0x561F, 0x1563, + 0x5620, 0x5622, 0x2B6D, 0x5623, 0x5623, 0x157A, 0x5624, 0x5624, 0x1579, + 0x5625, 0x5626, 0x2B70, 0x5627, 0x5627, 0x157D, 0x5628, 0x5628, 0x2B72, + 0x5629, 0x5629, 0x1F4C, 0x562A, 0x562B, 0x2B73, 0x562C, 0x562C, 0x1582, + 0x562D, 0x562D, 0x157E, 0x562E, 0x562E, 0x2378, 0x562F, 0x562F, 0x21CF, + 0x5630, 0x5630, 0x2368, 0x5631, 0x5631, 0x11F5, 0x5632, 0x5632, 0x04D5, + 0x5633, 0x5633, 0x2B75, 0x5634, 0x5634, 0x1249, 0x5635, 0x5635, 0x2371, + 0x5636, 0x5636, 0x0DB0, 0x5637, 0x5637, 0x2B76, 0x5638, 0x5638, 0x2369, + 0x5639, 0x5639, 0x1580, 0x563A, 0x563A, 0x2B77, 0x563B, 0x563B, 0x0F0A, + 0x563C, 0x563E, 0x2B78, 0x563F, 0x563F, 0x0790, 0x5640, 0x5640, 0x2B7B, + 0x5641, 0x5641, 0x2674, 0x5642, 0x564B, 0x2B7C, 0x564C, 0x564C, 0x1587, + 0x564D, 0x564D, 0x1583, 0x564E, 0x564E, 0x1034, 0x564F, 0x5653, 0x2B86, + 0x5654, 0x5654, 0x1588, 0x5655, 0x5656, 0x2B8B, 0x5657, 0x5657, 0x1581, + 0x5658, 0x5658, 0x157F, 0x5659, 0x5659, 0x1585, 0x565A, 0x565B, 0x2B8D, + 0x565C, 0x565C, 0x1586, 0x565D, 0x565D, 0x236F, 0x565E, 0x565F, 0x2B8F, + 0x5660, 0x5660, 0x2370, 0x5661, 0x5661, 0x2B91, 0x5662, 0x5662, 0x1584, + 0x5663, 0x5663, 0x2B92, 0x5664, 0x5664, 0x158A, 0x5665, 0x5665, 0x2376, + 0x5666, 0x5666, 0x2373, 0x5667, 0x5667, 0x2B93, 0x5668, 0x5668, 0x0C16, + 0x5669, 0x5669, 0x1262, 0x566A, 0x566A, 0x112E, 0x566B, 0x566B, 0x158C, + 0x566C, 0x566C, 0x0D60, 0x566D, 0x566E, 0x2B94, 0x566F, 0x566F, 0x237F, + 0x5670, 0x5670, 0x2B96, 0x5671, 0x5671, 0x158B, 0x5672, 0x5672, 0x2374, + 0x5673, 0x5673, 0x2B97, 0x5674, 0x5674, 0x20B5, 0x5675, 0x5675, 0x2B98, + 0x5676, 0x5676, 0x06BC, 0x5677, 0x5677, 0x2B99, 0x5678, 0x5678, 0x1EDB, + 0x5679, 0x5679, 0x2672, 0x567A, 0x567A, 0x2B9A, 0x567B, 0x567C, 0x158D, + 0x567D, 0x567F, 0x2B9B, 0x5680, 0x5680, 0x236E, 0x5681, 0x5684, 0x2B9E, + 0x5685, 0x5685, 0x158F, 0x5686, 0x5686, 0x1589, 0x5687, 0x5687, 0x21B7, + 0x5688, 0x568B, 0x2BA2, 0x568C, 0x568C, 0x2375, 0x568D, 0x568D, 0x2BA6, + 0x568E, 0x568E, 0x0776, 0x568F, 0x568F, 0x0E3A, 0x5690, 0x5692, 0x2BA7, + 0x5693, 0x5693, 0x1590, 0x5694, 0x5694, 0x2BAA, 0x5695, 0x5695, 0x2382, + 0x5696, 0x5698, 0x2BAB, 0x5699, 0x5699, 0x209E, 0x569A, 0x56A2, 0x2BAE, + 0x56A3, 0x56A3, 0x0F66, 0x56A4, 0x56A5, 0x2BB7, 0x56A6, 0x56A6, 0x236B, + 0x56A7, 0x56A7, 0x2BB9, 0x56A8, 0x56A8, 0x2039, 0x56A9, 0x56AD, 0x2BBA, + 0x56AE, 0x56AE, 0x269F, 0x56AF, 0x56AF, 0x1591, 0x56B0, 0x56B2, 0x2BBF, + 0x56B3, 0x56B3, 0x237D, 0x56B4, 0x56B4, 0x21F5, 0x56B5, 0x56B5, 0x2BC2, + 0x56B6, 0x56B6, 0x2381, 0x56B7, 0x56B7, 0x0C9D, 0x56B8, 0x56BB, 0x2BC3, + 0x56BC, 0x56BC, 0x0891, 0x56BD, 0x56BF, 0x2BC7, 0x56C0, 0x56C0, 0x237B, + 0x56C1, 0x56C1, 0x237E, 0x56C2, 0x56C2, 0x21CC, 0x56C3, 0x56C4, 0x2BCA, + 0x56C5, 0x56C5, 0x22DB, 0x56C6, 0x56C7, 0x2BCC, 0x56C8, 0x56C8, 0x236A, + 0x56C9, 0x56C9, 0x2689, 0x56CA, 0x56CA, 0x0B35, 0x56CB, 0x56CB, 0x2BCE, + 0x56CC, 0x56CC, 0x2697, 0x56CD, 0x56D0, 0x2BCF, 0x56D1, 0x56D1, 0x22A1, + 0x56D2, 0x56D3, 0x2BD3, 0x56D4, 0x56D4, 0x1592, 0x56D5, 0x56D6, 0x2BD5, + 0x56D7, 0x56D7, 0x1593, 0x56D8, 0x56D9, 0x2BD7, 0x56DA, 0x56DA, 0x0C71, + 0x56DB, 0x56DB, 0x0DB9, 0x56DC, 0x56DC, 0x2BD9, 0x56DD, 0x56DD, 0x1594, + 0x56DE, 0x56DE, 0x07ED, 0x56DF, 0x56DF, 0x126C, 0x56E0, 0x56E0, 0x1079, + 0x56E1, 0x56E1, 0x1595, 0x56E2, 0x56E2, 0x0E76, 0x56E3, 0x56E3, 0x2BDA, + 0x56E4, 0x56E4, 0x0619, 0x56E5, 0x56EA, 0x2BDB, 0x56EB, 0x56EB, 0x1597, + 0x56EC, 0x56EC, 0x2BE1, 0x56ED, 0x56ED, 0x10F3, 0x56EE, 0x56EF, 0x2BE2, + 0x56F0, 0x56F0, 0x0992, 0x56F1, 0x56F1, 0x0554, 0x56F2, 0x56F3, 0x2BE4, + 0x56F4, 0x56F4, 0x0EB6, 0x56F5, 0x56F5, 0x1596, 0x56F6, 0x56F8, 0x2BE6, + 0x56F9, 0x56F9, 0x1598, 0x56FA, 0x56FA, 0x0725, 0x56FB, 0x56FC, 0x2BE9, + 0x56FD, 0x56FD, 0x0753, 0x56FE, 0x56FE, 0x0E6D, 0x56FF, 0x56FF, 0x1599, + 0x5700, 0x5702, 0x2BEB, 0x5703, 0x5703, 0x0BF3, 0x5704, 0x5704, 0x159A, + 0x5705, 0x5705, 0x2BEE, 0x5706, 0x5706, 0x10F5, 0x5707, 0x5707, 0x2383, + 0x5708, 0x5708, 0x0C81, 0x5709, 0x5709, 0x159C, 0x570A, 0x570A, 0x159B, + 0x570B, 0x570B, 0x1F3D, 0x570C, 0x570C, 0x2BEF, 0x570D, 0x570D, 0x218F, + 0x570E, 0x5711, 0x2BF0, 0x5712, 0x5712, 0x2246, 0x5713, 0x5713, 0x2248, + 0x5714, 0x5715, 0x2BF4, 0x5716, 0x5716, 0x217E, 0x5717, 0x5717, 0x2BF6, + 0x5718, 0x5718, 0x2180, 0x5719, 0x571B, 0x2BF7, 0x571C, 0x571C, 0x159D, + 0x571D, 0x571E, 0x2BFA, 0x571F, 0x571F, 0x0E72, 0x5720, 0x5722, 0x2BFC, + 0x5723, 0x5723, 0x0D3C, 0x5724, 0x5727, 0x2BFF, 0x5728, 0x5728, 0x111D, + 0x5729, 0x5729, 0x13A7, 0x572A, 0x572A, 0x13A9, 0x572B, 0x572B, 0x2C03, + 0x572C, 0x572C, 0x13A8, 0x572D, 0x572D, 0x0740, 0x572E, 0x572F, 0x13AC, + 0x5730, 0x5730, 0x05B9, 0x5731, 0x5732, 0x2C04, 0x5733, 0x5733, 0x13AA, + 0x5734, 0x5738, 0x2C06, 0x5739, 0x5739, 0x13AB, 0x573A, 0x573A, 0x04C6, + 0x573B, 0x573B, 0x13AF, 0x573C, 0x573D, 0x2C0B, 0x573E, 0x573E, 0x080D, + 0x573F, 0x573F, 0x2C0D, 0x5740, 0x5740, 0x11B6, 0x5741, 0x5741, 0x2C0E, + 0x5742, 0x5742, 0x13B0, 0x5743, 0x5746, 0x2C0F, 0x5747, 0x5747, 0x0928, + 0x5748, 0x5749, 0x2C13, 0x574A, 0x574A, 0x0658, 0x574B, 0x574B, 0x2C15, + 0x574C, 0x574C, 0x13A0, 0x574D, 0x574D, 0x0E01, 0x574E, 0x574E, 0x093F, + 0x574F, 0x574F, 0x07CA, 0x5750, 0x5750, 0x1255, 0x5751, 0x5751, 0x0960, + 0x5752, 0x5756, 0x2C16, 0x5757, 0x5757, 0x0976, 0x5758, 0x5759, 0x2C1B, + 0x575A, 0x575A, 0x0854, 0x575B, 0x575B, 0x0E06, 0x575C, 0x575C, 0x13AE, + 0x575D, 0x575D, 0x03DE, 0x575E, 0x575E, 0x0EFA, 0x575F, 0x575F, 0x0675, + 0x5760, 0x5760, 0x1216, 0x5761, 0x5761, 0x0BE1, 0x5762, 0x5763, 0x2C1D, + 0x5764, 0x5764, 0x098F, 0x5765, 0x5765, 0x2C1F, 0x5766, 0x5766, 0x0E0C, + 0x5767, 0x5767, 0x2C20, 0x5768, 0x5768, 0x13B7, 0x5769, 0x5769, 0x13B1, + 0x576A, 0x576A, 0x0BD9, 0x576B, 0x576B, 0x13B3, 0x576C, 0x576C, 0x2C21, + 0x576D, 0x576D, 0x13B8, 0x576E, 0x576E, 0x2C22, 0x576F, 0x576F, 0x0BB8, + 0x5770, 0x5772, 0x2C23, 0x5773, 0x5773, 0x13BA, 0x5774, 0x5775, 0x2C26, + 0x5776, 0x5776, 0x13B9, 0x5777, 0x5777, 0x094D, 0x5778, 0x577A, 0x2C28, + 0x577B, 0x577B, 0x13B6, 0x577C, 0x577C, 0x13B5, 0x577D, 0x5781, 0x2C2B, + 0x5782, 0x5782, 0x053C, 0x5783, 0x5783, 0x0997, 0x5784, 0x5784, 0x0A49, + 0x5785, 0x5785, 0x13B2, 0x5786, 0x5786, 0x13B4, 0x5787, 0x578A, 0x2C30, + 0x578B, 0x578B, 0x0F98, 0x578C, 0x578C, 0x13BD, 0x578D, 0x5791, 0x2C34, + 0x5792, 0x5792, 0x09C8, 0x5793, 0x5793, 0x13C2, 0x5794, 0x579A, 0x2C39, + 0x579B, 0x579B, 0x0621, 0x579C, 0x579F, 0x2C40, 0x57A0, 0x57A0, 0x13C3, + 0x57A1, 0x57A1, 0x13A2, 0x57A2, 0x57A2, 0x0711, 0x57A3, 0x57A3, 0x10EE, + 0x57A4, 0x57A4, 0x13BC, 0x57A5, 0x57A5, 0x2C44, 0x57A6, 0x57A6, 0x095E, + 0x57A7, 0x57A7, 0x13C0, 0x57A8, 0x57A8, 0x2C45, 0x57A9, 0x57A9, 0x13A1, + 0x57AA, 0x57AA, 0x2C46, 0x57AB, 0x57AB, 0x05C7, 0x57AC, 0x57AC, 0x2C47, + 0x57AD, 0x57AD, 0x13BB, 0x57AE, 0x57AE, 0x0972, 0x57AF, 0x57B1, 0x2C48, + 0x57B2, 0x57B2, 0x13BE, 0x57B3, 0x57B3, 0x2C4B, 0x57B4, 0x57B4, 0x13C1, + 0x57B5, 0x57B7, 0x2C4C, 0x57B8, 0x57B8, 0x13C9, 0x57B9, 0x57C1, 0x2C4F, + 0x57C2, 0x57C2, 0x06FA, 0x57C3, 0x57C3, 0x03AE, 0x57C4, 0x57CA, 0x2C58, + 0x57CB, 0x57CB, 0x0A98, 0x57CC, 0x57CD, 0x2C5F, 0x57CE, 0x57CE, 0x04EC, + 0x57CF, 0x57CF, 0x13BF, 0x57D0, 0x57D1, 0x2C61, 0x57D2, 0x57D2, 0x13C8, + 0x57D3, 0x57D3, 0x2C63, 0x57D4, 0x57D4, 0x0BF1, 0x57D5, 0x57D5, 0x13C4, + 0x57D6, 0x57D7, 0x2C64, 0x57D8, 0x57D8, 0x13C5, 0x57D9, 0x57D9, 0x13C7, + 0x57DA, 0x57DA, 0x13C6, 0x57DB, 0x57DC, 0x2C66, 0x57DD, 0x57DD, 0x13CE, + 0x57DE, 0x57DE, 0x2C68, 0x57DF, 0x57DF, 0x10D7, 0x57E0, 0x57E0, 0x0481, + 0x57E1, 0x57E1, 0x232A, 0x57E2, 0x57E3, 0x2C69, 0x57E4, 0x57E4, 0x13CD, + 0x57E5, 0x57EC, 0x2C6B, 0x57ED, 0x57ED, 0x13D2, 0x57EE, 0x57EE, 0x2C73, + 0x57EF, 0x57EF, 0x13CB, 0x57F0, 0x57F3, 0x2C74, 0x57F4, 0x57F4, 0x13CA, + 0x57F5, 0x57F6, 0x2C78, 0x57F7, 0x57F7, 0x228B, 0x57F8, 0x57F8, 0x13CC, + 0x57F9, 0x57F9, 0x0BA1, 0x57FA, 0x57FA, 0x080E, 0x57FB, 0x57FC, 0x2C7A, + 0x57FD, 0x57FD, 0x13D1, 0x57FE, 0x57FF, 0x2C7C, 0x5800, 0x5800, 0x13D3, + 0x5801, 0x5801, 0x2C7E, 0x5802, 0x5802, 0x0E16, 0x5803, 0x5804, 0x2C7F, + 0x5805, 0x5805, 0x1F85, 0x5806, 0x5806, 0x0610, 0x5807, 0x5807, 0x144C, + 0x5808, 0x5809, 0x2C81, 0x580A, 0x580A, 0x2325, 0x580B, 0x580B, 0x13CF, + 0x580C, 0x580C, 0x2C83, 0x580D, 0x580D, 0x13D0, 0x580E, 0x5810, 0x2C84, + 0x5811, 0x5811, 0x0C32, 0x5812, 0x5814, 0x2C87, 0x5815, 0x5815, 0x0628, + 0x5816, 0x5816, 0x232C, 0x5817, 0x5818, 0x2C8A, 0x5819, 0x5819, 0x13D5, + 0x581A, 0x581C, 0x2C8C, 0x581D, 0x581D, 0x232E, 0x581E, 0x581E, 0x13D4, + 0x581F, 0x581F, 0x2C8F, 0x5820, 0x5820, 0x13D7, 0x5821, 0x5821, 0x040D, + 0x5822, 0x5823, 0x2C90, 0x5824, 0x5824, 0x05AD, 0x5825, 0x5829, 0x2C92, + 0x582A, 0x582A, 0x093D, 0x582B, 0x582E, 0x2C97, 0x582F, 0x582F, 0x2205, + 0x5830, 0x5830, 0x1008, 0x5831, 0x5831, 0x1E38, 0x5832, 0x5833, 0x2C9B, + 0x5834, 0x5834, 0x1E73, 0x5835, 0x5835, 0x0601, 0x5836, 0x5843, 0x2C9D, + 0x5844, 0x5844, 0x13D6, 0x5845, 0x5849, 0x2CAB, 0x584A, 0x584A, 0x1FE3, + 0x584B, 0x584B, 0x2339, 0x584C, 0x584C, 0x0DEF, 0x584D, 0x584D, 0x19A3, + 0x584E, 0x584E, 0x2CB0, 0x584F, 0x584F, 0x232B, 0x5850, 0x5850, 0x2CB1, + 0x5851, 0x5851, 0x0DD1, 0x5852, 0x5852, 0x232D, 0x5853, 0x5853, 0x2CB2, + 0x5854, 0x5854, 0x0DF3, 0x5855, 0x5856, 0x2CB3, 0x5857, 0x5857, 0x217F, + 0x5858, 0x5858, 0x0E14, 0x5859, 0x585D, 0x2CB5, 0x585E, 0x585E, 0x0CD6, + 0x585F, 0x5861, 0x2CBA, 0x5862, 0x5862, 0x21A7, 0x5863, 0x5863, 0x2CBD, + 0x5864, 0x5864, 0x232F, 0x5865, 0x5865, 0x13D8, 0x5866, 0x586A, 0x2CBE, + 0x586B, 0x586B, 0x0E41, 0x586C, 0x586C, 0x13D9, 0x586D, 0x5874, 0x2CC3, + 0x5875, 0x5875, 0x1E7D, 0x5876, 0x5878, 0x2CCB, 0x5879, 0x5879, 0x20D6, + 0x587A, 0x587D, 0x2CCE, 0x587E, 0x587E, 0x13A3, 0x587F, 0x587F, 0x2CD2, + 0x5880, 0x5880, 0x13DD, 0x5881, 0x5881, 0x13DA, 0x5882, 0x5882, 0x2CD3, + 0x5883, 0x5883, 0x08E2, 0x5884, 0x5884, 0x2CD4, 0x5885, 0x5885, 0x0D92, + 0x5886, 0x5888, 0x2CD5, 0x5889, 0x5889, 0x13DB, 0x588A, 0x588A, 0x1EC2, + 0x588B, 0x5891, 0x2CD8, 0x5892, 0x5892, 0x0D03, 0x5893, 0x5893, 0x0B1C, + 0x5894, 0x5898, 0x2CDF, 0x5899, 0x5899, 0x0C3A, 0x589A, 0x589A, 0x13DC, + 0x589B, 0x589B, 0x2CE4, 0x589C, 0x589C, 0x22B2, 0x589D, 0x589D, 0x2CE5, + 0x589E, 0x589E, 0x1139, 0x589F, 0x589F, 0x0FB1, 0x58A0, 0x58A7, 0x2CE6, + 0x58A8, 0x58A8, 0x0B0E, 0x58A9, 0x58A9, 0x0614, 0x58AA, 0x58AD, 0x2CEE, + 0x58AE, 0x58AE, 0x1EDF, 0x58AF, 0x58B2, 0x2CF2, 0x58B3, 0x58B3, 0x1EF9, + 0x58B4, 0x58BA, 0x2CF6, 0x58BB, 0x58BB, 0x20D9, 0x58BC, 0x58BC, 0x13A4, + 0x58BD, 0x58BD, 0x2CFD, 0x58BE, 0x58BE, 0x1FDD, 0x58BF, 0x58C0, 0x2CFE, + 0x58C1, 0x58C1, 0x0443, 0x58C2, 0x58C4, 0x2D00, 0x58C5, 0x58C5, 0x13A5, + 0x58C6, 0x58C6, 0x2D03, 0x58C7, 0x58C7, 0x2167, 0x58C8, 0x58D0, 0x2D04, + 0x58D1, 0x58D1, 0x13A6, 0x58D2, 0x58D2, 0x2D0D, 0x58D3, 0x58D3, 0x21ED, + 0x58D4, 0x58D4, 0x2D0E, 0x58D5, 0x58D5, 0x0775, 0x58D6, 0x58D7, 0x2D0F, + 0x58D8, 0x58D8, 0x2007, 0x58D9, 0x58D9, 0x2326, 0x58DA, 0x58DA, 0x2329, + 0x58DB, 0x58DD, 0x2D11, 0x58DE, 0x58DE, 0x1F52, 0x58DF, 0x58DF, 0x203B, + 0x58E0, 0x58E0, 0x2328, 0x58E1, 0x58E1, 0x2D14, 0x58E2, 0x58E2, 0x2327, + 0x58E3, 0x58E3, 0x2D15, 0x58E4, 0x58E4, 0x0C9B, 0x58E5, 0x58E8, 0x2D16, + 0x58E9, 0x58E9, 0x1E2B, 0x58EA, 0x58EA, 0x2D1A, 0x58EB, 0x58EB, 0x0D56, + 0x58EC, 0x58EC, 0x0CA4, 0x58ED, 0x58ED, 0x2D1B, 0x58EE, 0x58EE, 0x1210, + 0x58EF, 0x58EF, 0x22AE, 0x58F0, 0x58F0, 0x0D32, 0x58F1, 0x58F2, 0x2D1C, + 0x58F3, 0x58F3, 0x0954, 0x58F4, 0x58F5, 0x2D1E, 0x58F6, 0x58F6, 0x07AF, + 0x58F7, 0x58F8, 0x2D20, 0x58F9, 0x58F9, 0x1043, 0x58FA, 0x58FA, 0x1F49, + 0x58FB, 0x58FC, 0x2D22, 0x58FD, 0x58FD, 0x2138, 0x58FE, 0x58FF, 0x2D24, + 0x5900, 0x5901, 0x2D26, 0x5902, 0x5902, 0x161C, 0x5903, 0x5903, 0x2D28, + 0x5904, 0x5904, 0x0529, 0x5905, 0x5906, 0x2D29, 0x5907, 0x5907, 0x0421, + 0x5908, 0x590C, 0x2D2B, 0x590D, 0x590D, 0x06AF, 0x590E, 0x590E, 0x2D30, + 0x590F, 0x590F, 0x0F31, 0x5910, 0x5913, 0x2D31, 0x5914, 0x5914, 0x12FB, + 0x5915, 0x5915, 0x0F13, 0x5916, 0x5916, 0x0E93, 0x5917, 0x5918, 0x2D35, + 0x5919, 0x5919, 0x1301, 0x591A, 0x591A, 0x061F, 0x591B, 0x591B, 0x2D37, + 0x591C, 0x591C, 0x1040, 0x591D, 0x591E, 0x2D38, 0x591F, 0x591F, 0x0714, + 0x5920, 0x5921, 0x2D3A, 0x5922, 0x5922, 0x2081, 0x5923, 0x5923, 0x2D3C, + 0x5924, 0x5924, 0x161B, 0x5925, 0x5925, 0x1619, 0x5926, 0x5926, 0x2D3D, + 0x5927, 0x5927, 0x0576, 0x5928, 0x5928, 0x2D3E, 0x5929, 0x5929, 0x0E3F, + 0x592A, 0x592A, 0x0DFE, 0x592B, 0x592B, 0x068F, 0x592C, 0x592C, 0x2D3F, + 0x592D, 0x592D, 0x1268, 0x592E, 0x592E, 0x1014, 0x592F, 0x592F, 0x0772, + 0x5930, 0x5930, 0x2D40, 0x5931, 0x5931, 0x0D3E, 0x5932, 0x5933, 0x2D41, + 0x5934, 0x5934, 0x0E68, 0x5935, 0x5936, 0x2D43, 0x5937, 0x5937, 0x104B, + 0x5938, 0x5938, 0x0971, 0x5939, 0x5939, 0x0843, 0x593A, 0x593A, 0x0620, + 0x593B, 0x593B, 0x2D45, 0x593C, 0x593C, 0x14AF, 0x593D, 0x593D, 0x2D46, + 0x593E, 0x593E, 0x1F7C, 0x593F, 0x5940, 0x2D47, 0x5941, 0x5941, 0x14B0, + 0x5942, 0x5942, 0x138C, 0x5943, 0x5943, 0x2D49, 0x5944, 0x5944, 0x1002, + 0x5945, 0x5946, 0x2D4A, 0x5947, 0x5947, 0x0C05, 0x5948, 0x5948, 0x0B31, + 0x5949, 0x5949, 0x068B, 0x594A, 0x594A, 0x2D4C, 0x594B, 0x594B, 0x0679, + 0x594C, 0x594D, 0x2D4D, 0x594E, 0x594E, 0x0989, 0x594F, 0x594F, 0x123D, + 0x5950, 0x5950, 0x2D4F, 0x5951, 0x5951, 0x0C14, 0x5952, 0x5953, 0x2D50, + 0x5954, 0x5954, 0x0425, 0x5955, 0x5955, 0x14B2, 0x5956, 0x5956, 0x0882, + 0x5957, 0x5957, 0x0E2A, 0x5958, 0x5958, 0x14B4, 0x5959, 0x5959, 0x2D52, + 0x595A, 0x595A, 0x14B3, 0x595B, 0x595F, 0x2D53, 0x5960, 0x5960, 0x05CD, + 0x5961, 0x5961, 0x2D58, 0x5962, 0x5962, 0x0D16, 0x5963, 0x5964, 0x2D59, + 0x5965, 0x5965, 0x03CD, 0x5966, 0x5968, 0x2D5B, 0x5969, 0x5969, 0x235B, + 0x596A, 0x596A, 0x1EDE, 0x596B, 0x596B, 0x2D5E, 0x596C, 0x596C, 0x1FA2, + 0x596D, 0x596D, 0x2D5F, 0x596E, 0x596E, 0x1EFA, 0x596F, 0x5972, 0x2D60, + 0x5973, 0x5973, 0x0B6F, 0x5974, 0x5974, 0x0B6C, 0x5975, 0x5975, 0x2D64, + 0x5976, 0x5976, 0x0B2F, 0x5977, 0x5977, 0x2D65, 0x5978, 0x5978, 0x085C, + 0x5979, 0x5979, 0x0DF2, 0x597A, 0x597C, 0x2D66, 0x597D, 0x597D, 0x077A, + 0x597E, 0x5980, 0x2D69, 0x5981, 0x5981, 0x1775, 0x5982, 0x5982, 0x0CC2, + 0x5983, 0x5983, 0x1776, 0x5984, 0x5984, 0x0EAE, 0x5985, 0x5985, 0x2D6C, + 0x5986, 0x5986, 0x120E, 0x5987, 0x5987, 0x06B9, 0x5988, 0x5988, 0x0A8F, + 0x5989, 0x5989, 0x2D6D, 0x598A, 0x598A, 0x0CAC, 0x598B, 0x598C, 0x2D6E, + 0x598D, 0x598D, 0x1777, 0x598E, 0x5991, 0x2D70, 0x5992, 0x5992, 0x0609, + 0x5993, 0x5993, 0x083E, 0x5994, 0x5995, 0x2D74, 0x5996, 0x5996, 0x1026, + 0x5997, 0x5997, 0x177B, 0x5998, 0x5998, 0x2D76, 0x5999, 0x5999, 0x0AF3, + 0x599A, 0x599C, 0x2D77, 0x599D, 0x599D, 0x22AD, 0x599E, 0x599E, 0x177E, + 0x599F, 0x59A2, 0x2D7A, 0x59A3, 0x59A3, 0x177A, 0x59A4, 0x59A4, 0x177F, + 0x59A5, 0x59A5, 0x0E88, 0x59A6, 0x59A7, 0x2D7E, 0x59A8, 0x59A8, 0x065E, + 0x59A9, 0x59AA, 0x1778, 0x59AB, 0x59AB, 0x177D, 0x59AC, 0x59AD, 0x2D80, + 0x59AE, 0x59AE, 0x0B40, 0x59AF, 0x59AF, 0x1782, 0x59B0, 0x59B1, 0x2D82, + 0x59B2, 0x59B2, 0x1781, 0x59B3, 0x59B8, 0x2D84, 0x59B9, 0x59B9, 0x0AC8, + 0x59BA, 0x59BA, 0x2D8A, 0x59BB, 0x59BB, 0x0BFD, 0x59BC, 0x59BD, 0x2D8B, + 0x59BE, 0x59BE, 0x1784, 0x59BF, 0x59C5, 0x2D8D, 0x59C6, 0x59C6, 0x0B1A, + 0x59C7, 0x59C9, 0x2D94, 0x59CA, 0x59CA, 0x177C, 0x59CB, 0x59CB, 0x0D53, + 0x59CC, 0x59CF, 0x2D97, 0x59D0, 0x59D0, 0x08B4, 0x59D1, 0x59D1, 0x071C, + 0x59D2, 0x59D2, 0x1780, 0x59D3, 0x59D3, 0x0FA0, 0x59D4, 0x59D4, 0x0EBE, + 0x59D5, 0x59D6, 0x2D9B, 0x59D7, 0x59D7, 0x1783, 0x59D8, 0x59D8, 0x178A, + 0x59D9, 0x59D9, 0x2D9D, 0x59DA, 0x59DA, 0x102D, 0x59DB, 0x59DB, 0x2D9E, + 0x59DC, 0x59DC, 0x087B, 0x59DD, 0x59DD, 0x1787, 0x59DE, 0x59E2, 0x2D9F, + 0x59E3, 0x59E3, 0x1789, 0x59E4, 0x59E4, 0x2DA4, 0x59E5, 0x59E5, 0x09BC, + 0x59E6, 0x59E7, 0x2DA5, 0x59E8, 0x59E8, 0x1053, 0x59E9, 0x59EB, 0x2DA7, + 0x59EC, 0x59EC, 0x081A, 0x59ED, 0x59F8, 0x2DAA, 0x59F9, 0x59F9, 0x178B, + 0x59FA, 0x59FA, 0x2DB6, 0x59FB, 0x59FB, 0x107D, 0x59FC, 0x59FE, 0x2DB7, + 0x59FF, 0x59FF, 0x1228, 0x5A00, 0x5A00, 0x2DBA, 0x5A01, 0x5A01, 0x0EAF, + 0x5A02, 0x5A02, 0x2DBB, 0x5A03, 0x5A03, 0x0E8F, 0x5A04, 0x5A04, 0x0A4D, + 0x5A05, 0x5A06, 0x1785, 0x5A07, 0x5A07, 0x0890, 0x5A08, 0x5A08, 0x1788, + 0x5A09, 0x5A09, 0x178D, 0x5A0A, 0x5A0B, 0x2DBC, 0x5A0C, 0x5A0C, 0x178C, + 0x5A0D, 0x5A10, 0x2DBE, 0x5A11, 0x5A11, 0x1790, 0x5A12, 0x5A12, 0x2DC2, + 0x5A13, 0x5A13, 0x1792, 0x5A14, 0x5A17, 0x2DC3, 0x5A18, 0x5A18, 0x0B52, + 0x5A19, 0x5A1B, 0x2DC7, 0x5A1C, 0x5A1C, 0x0B2B, 0x5A1D, 0x5A1E, 0x2DCA, + 0x5A1F, 0x5A1F, 0x0919, 0x5A20, 0x5A20, 0x0D28, 0x5A21, 0x5A22, 0x2DCC, + 0x5A23, 0x5A23, 0x1791, 0x5A24, 0x5A24, 0x2DCE, 0x5A25, 0x5A25, 0x062F, + 0x5A26, 0x5A28, 0x2DCF, 0x5A29, 0x5A29, 0x0AE9, 0x5A2A, 0x5A30, 0x2DD2, + 0x5A31, 0x5A31, 0x10CE, 0x5A32, 0x5A32, 0x178E, 0x5A33, 0x5A33, 0x2DD9, + 0x5A34, 0x5A34, 0x178F, 0x5A35, 0x5A35, 0x2DDA, 0x5A36, 0x5A36, 0x0C7D, + 0x5A37, 0x5A3B, 0x2DDB, 0x5A3C, 0x5A3C, 0x1797, 0x5A3D, 0x5A3F, 0x2DE0, + 0x5A40, 0x5A40, 0x1793, 0x5A41, 0x5A41, 0x203F, 0x5A42, 0x5A45, 0x2DE3, + 0x5A46, 0x5A46, 0x0BE4, 0x5A47, 0x5A48, 0x2DE7, 0x5A49, 0x5A49, 0x0EA2, + 0x5A4A, 0x5A4A, 0x1795, 0x5A4B, 0x5A54, 0x2DE9, 0x5A55, 0x5A55, 0x1796, + 0x5A56, 0x5A59, 0x2DF3, 0x5A5A, 0x5A5A, 0x07FE, 0x5A5B, 0x5A61, 0x2DF7, + 0x5A62, 0x5A62, 0x1798, 0x5A63, 0x5A65, 0x2DFE, 0x5A66, 0x5A66, 0x1F0E, + 0x5A67, 0x5A67, 0x1794, 0x5A68, 0x5A69, 0x2E01, 0x5A6A, 0x5A6A, 0x09A2, + 0x5A6B, 0x5A6C, 0x2E03, 0x5A6D, 0x5A6D, 0x23F9, 0x5A6E, 0x5A73, 0x2E05, + 0x5A74, 0x5A74, 0x1089, 0x5A75, 0x5A75, 0x1799, 0x5A76, 0x5A76, 0x0D2D, + 0x5A77, 0x5A77, 0x179D, 0x5A78, 0x5A79, 0x2E0B, 0x5A7A, 0x5A7A, 0x179E, + 0x5A7B, 0x5A7E, 0x2E0D, 0x5A7F, 0x5A7F, 0x0FC1, 0x5A80, 0x5A91, 0x2E11, + 0x5A92, 0x5A92, 0x0AC2, 0x5A93, 0x5A99, 0x2E23, 0x5A9A, 0x5A9A, 0x0AC9, + 0x5A9B, 0x5A9B, 0x179C, 0x5A9C, 0x5AA6, 0x2E2A, 0x5AA7, 0x5AA7, 0x23FC, + 0x5AA8, 0x5AA9, 0x2E35, 0x5AAA, 0x5AAA, 0x179B, 0x5AAB, 0x5AB1, 0x2E37, + 0x5AB2, 0x5AB2, 0x17A1, 0x5AB3, 0x5AB3, 0x0F1E, 0x5AB4, 0x5AB4, 0x2E3E, + 0x5AB5, 0x5AB5, 0x19A4, 0x5AB6, 0x5AB7, 0x2E3F, 0x5AB8, 0x5AB8, 0x17A4, + 0x5AB9, 0x5ABC, 0x2E41, 0x5ABD, 0x5ABD, 0x2069, 0x5ABE, 0x5ABE, 0x179F, + 0x5ABF, 0x5AC0, 0x2E45, 0x5AC1, 0x5AC1, 0x0851, 0x5AC2, 0x5AC2, 0x0CE2, + 0x5AC3, 0x5AC8, 0x2E47, 0x5AC9, 0x5AC9, 0x0828, 0x5ACA, 0x5ACB, 0x2E4D, + 0x5ACC, 0x5ACC, 0x0F40, 0x5ACD, 0x5AD1, 0x2E4F, 0x5AD2, 0x5AD2, 0x17A2, + 0x5AD3, 0x5AD3, 0x2E54, 0x5AD4, 0x5AD4, 0x17A3, 0x5AD5, 0x5AD5, 0x2E55, + 0x5AD6, 0x5AD6, 0x17A8, 0x5AD7, 0x5AD7, 0x23F7, 0x5AD8, 0x5AD8, 0x17AA, + 0x5AD9, 0x5ADB, 0x2E56, 0x5ADC, 0x5ADC, 0x17AB, 0x5ADD, 0x5ADF, 0x2E59, + 0x5AE0, 0x5AE0, 0x17A5, 0x5AE1, 0x5AE1, 0x05B6, 0x5AE2, 0x5AE2, 0x2E5C, + 0x5AE3, 0x5AE3, 0x17A6, 0x5AE4, 0x5AE5, 0x2E5D, 0x5AE6, 0x5AE6, 0x17A9, + 0x5AE7, 0x5AE8, 0x2E5F, 0x5AE9, 0x5AE9, 0x0B3E, 0x5AEA, 0x5AEA, 0x2E61, + 0x5AEB, 0x5AEB, 0x17A0, 0x5AEC, 0x5AF0, 0x2E62, 0x5AF1, 0x5AF1, 0x17A7, + 0x5AF2, 0x5AF4, 0x2E67, 0x5AF5, 0x5AF5, 0x23F6, 0x5AF6, 0x5AFA, 0x2E6A, + 0x5AFB, 0x5AFB, 0x23FD, 0x5AFC, 0x5AFF, 0x2E6F, 0x5B00, 0x5B00, 0x23F8, + 0x5B01, 0x5B07, 0x2E73, 0x5B08, 0x5B08, 0x23FA, 0x5B09, 0x5B09, 0x17AC, + 0x5B0A, 0x5B0A, 0x2E7A, 0x5B0B, 0x5B0B, 0x23FE, 0x5B0C, 0x5B0C, 0x1FA8, + 0x5B0D, 0x5B15, 0x2E7B, 0x5B16, 0x5B16, 0x17AE, 0x5B17, 0x5B17, 0x17AD, + 0x5B18, 0x5B18, 0x2E84, 0x5B19, 0x5B19, 0x2401, 0x5B1A, 0x5B20, 0x2E85, + 0x5B21, 0x5B21, 0x23FF, 0x5B22, 0x5B29, 0x2E8C, 0x5B2A, 0x5B2A, 0x2400, + 0x5B2B, 0x5B2F, 0x2E94, 0x5B30, 0x5B30, 0x2221, 0x5B31, 0x5B31, 0x2E99, + 0x5B32, 0x5B32, 0x17AF, 0x5B33, 0x5B33, 0x2E9A, 0x5B34, 0x5B34, 0x130C, + 0x5B35, 0x5B36, 0x2E9B, 0x5B37, 0x5B37, 0x17B0, 0x5B38, 0x5B38, 0x2122, + 0x5B39, 0x5B3F, 0x2E9D, 0x5B40, 0x5B40, 0x17B1, 0x5B41, 0x5B4B, 0x2EA4, + 0x5B4C, 0x5B4C, 0x23FB, 0x5B4D, 0x5B4F, 0x2EAF, 0x5B50, 0x5B50, 0x1230, + 0x5B51, 0x5B51, 0x17B7, 0x5B52, 0x5B52, 0x2EB2, 0x5B53, 0x5B53, 0x17B8, + 0x5B54, 0x5B54, 0x0964, 0x5B55, 0x5B55, 0x1113, 0x5B56, 0x5B56, 0x2EB3, + 0x5B57, 0x5B57, 0x1233, 0x5B58, 0x5B58, 0x0569, 0x5B59, 0x5B59, 0x0DE4, + 0x5B5A, 0x5B5A, 0x17B4, 0x5B5B, 0x5B5B, 0x1279, 0x5B5C, 0x5B5C, 0x122B, + 0x5B5D, 0x5B5D, 0x0F6D, 0x5B5E, 0x5B5E, 0x2EB4, 0x5B5F, 0x5B5F, 0x0AD4, + 0x5B60, 0x5B61, 0x2EB5, 0x5B62, 0x5B62, 0x17B9, 0x5B63, 0x5B63, 0x0831, + 0x5B64, 0x5B64, 0x071B, 0x5B65, 0x5B65, 0x17B5, 0x5B66, 0x5B66, 0x0FD0, + 0x5B67, 0x5B68, 0x2EB7, 0x5B69, 0x5B69, 0x0759, 0x5B6A, 0x5B6A, 0x0A76, + 0x5B6B, 0x5B6B, 0x215A, 0x5B6C, 0x5B6C, 0x1261, 0x5B6D, 0x5B6F, 0x2EB9, + 0x5B70, 0x5B70, 0x0D82, 0x5B71, 0x5B71, 0x176A, 0x5B72, 0x5B72, 0x2EBC, + 0x5B73, 0x5B73, 0x17B6, 0x5B74, 0x5B74, 0x2EBD, 0x5B75, 0x5B75, 0x0692, + 0x5B76, 0x5B77, 0x2EBE, 0x5B78, 0x5B78, 0x21E5, 0x5B79, 0x5B79, 0x2EC0, + 0x5B7A, 0x5B7A, 0x0CC1, 0x5B7B, 0x5B7C, 0x2EC1, 0x5B7D, 0x5B7D, 0x0B58, + 0x5B7E, 0x5B7E, 0x2EC3, 0x5B7F, 0x5B7F, 0x2057, 0x5B80, 0x5B80, 0x172E, + 0x5B81, 0x5B81, 0x0B61, 0x5B82, 0x5B82, 0x2EC4, 0x5B83, 0x5B83, 0x0DF1, + 0x5B84, 0x5B84, 0x172F, 0x5B85, 0x5B85, 0x114D, 0x5B86, 0x5B86, 0x2EC5, + 0x5B87, 0x5B87, 0x10D3, 0x5B88, 0x5B88, 0x0D6F, 0x5B89, 0x5B89, 0x03BD, + 0x5B8A, 0x5B8A, 0x2EC6, 0x5B8B, 0x5B8B, 0x0DC3, 0x5B8C, 0x5B8C, 0x0E9B, + 0x5B8D, 0x5B8E, 0x2EC7, 0x5B8F, 0x5B8F, 0x07A1, 0x5B90, 0x5B92, 0x2EC9, + 0x5B93, 0x5B93, 0x1731, 0x5B94, 0x5B94, 0x2ECC, 0x5B95, 0x5B95, 0x1730, + 0x5B96, 0x5B96, 0x2ECD, 0x5B97, 0x5B97, 0x1237, 0x5B98, 0x5B98, 0x0732, + 0x5B99, 0x5B99, 0x11E5, 0x5B9A, 0x5B9A, 0x05E7, 0x5B9B, 0x5B9B, 0x0EA1, + 0x5B9C, 0x5B9C, 0x1052, 0x5B9D, 0x5B9D, 0x040F, 0x5B9E, 0x5B9E, 0x0D4C, + 0x5B9F, 0x5B9F, 0x2ECE, 0x5BA0, 0x5BA0, 0x050D, 0x5BA1, 0x5BA1, 0x0D2C, + 0x5BA2, 0x5BA2, 0x095A, 0x5BA3, 0x5BA3, 0x0FC6, 0x5BA4, 0x5BA4, 0x0D69, + 0x5BA5, 0x5BA5, 0x1732, 0x5BA6, 0x5BA6, 0x07D7, 0x5BA7, 0x5BA9, 0x2ECF, + 0x5BAA, 0x5BAA, 0x0F49, 0x5BAB, 0x5BAB, 0x0705, 0x5BAC, 0x5BAF, 0x2ED2, + 0x5BB0, 0x5BB0, 0x111A, 0x5BB1, 0x5BB2, 0x2ED6, 0x5BB3, 0x5BB3, 0x075D, + 0x5BB4, 0x5BB4, 0x1010, 0x5BB5, 0x5BB5, 0x0F69, 0x5BB6, 0x5BB6, 0x0845, + 0x5BB7, 0x5BB7, 0x2ED8, 0x5BB8, 0x5BB8, 0x1733, 0x5BB9, 0x5BB9, 0x0CB8, + 0x5BBA, 0x5BBC, 0x2ED9, 0x5BBD, 0x5BBD, 0x097A, 0x5BBE, 0x5BBE, 0x045F, + 0x5BBF, 0x5BBF, 0x0DD3, 0x5BC0, 0x5BC1, 0x2EDC, 0x5BC2, 0x5BC2, 0x0838, + 0x5BC3, 0x5BC3, 0x2EDE, 0x5BC4, 0x5BC4, 0x0837, 0x5BC5, 0x5BC5, 0x1081, + 0x5BC6, 0x5BC6, 0x0AE1, 0x5BC7, 0x5BC7, 0x0969, 0x5BC8, 0x5BCB, 0x2EDF, + 0x5BCC, 0x5BCC, 0x06B6, 0x5BCD, 0x5BCF, 0x2EE3, 0x5BD0, 0x5BD0, 0x0AC7, + 0x5BD1, 0x5BD1, 0x2EE6, 0x5BD2, 0x5BD2, 0x0765, 0x5BD3, 0x5BD3, 0x10E5, + 0x5BD4, 0x5BDC, 0x2EE7, 0x5BDD, 0x5BDD, 0x0C5B, 0x5BDE, 0x5BDE, 0x0B12, + 0x5BDF, 0x5BDF, 0x04B3, 0x5BE0, 0x5BE0, 0x2EF0, 0x5BE1, 0x5BE1, 0x072A, + 0x5BE2, 0x5BE2, 0x20E5, 0x5BE3, 0x5BE3, 0x2EF1, 0x5BE4, 0x5BE4, 0x1737, + 0x5BE5, 0x5BE5, 0x0A11, 0x5BE6, 0x5BE6, 0x212F, 0x5BE7, 0x5BE7, 0x20A3, + 0x5BE8, 0x5BE8, 0x1150, 0x5BE9, 0x5BE9, 0x2121, 0x5BEA, 0x5BEA, 0x2EF2, + 0x5BEB, 0x5BEB, 0x21D4, 0x5BEC, 0x5BEC, 0x1FE5, 0x5BED, 0x5BED, 0x2EF3, + 0x5BEE, 0x5BEE, 0x1738, 0x5BEF, 0x5BEF, 0x2EF4, 0x5BF0, 0x5BF0, 0x173A, + 0x5BF1, 0x5BF4, 0x2EF5, 0x5BF5, 0x5BF5, 0x1E8A, 0x5BF6, 0x5BF6, 0x1E37, + 0x5BF7, 0x5BF7, 0x2EF9, 0x5BF8, 0x5BF8, 0x056A, 0x5BF9, 0x5BF9, 0x0613, + 0x5BFA, 0x5BFA, 0x0DB7, 0x5BFB, 0x5BFB, 0x0FD9, 0x5BFC, 0x5BFC, 0x059D, + 0x5BFD, 0x5BFE, 0x2EFA, 0x5BFF, 0x5BFF, 0x0D70, 0x5C00, 0x5C00, 0x2EFC, + 0x5C01, 0x5C01, 0x067F, 0x5C02, 0x5C03, 0x2EFD, 0x5C04, 0x5C04, 0x0D1D, + 0x5C05, 0x5C05, 0x2EFF, 0x5C06, 0x5C06, 0x087C, 0x5C07, 0x5C07, 0x1F9E, + 0x5C08, 0x5C08, 0x22A6, 0x5C09, 0x5C09, 0x0ECD, 0x5C0A, 0x5C0A, 0x124D, + 0x5C0B, 0x5C0B, 0x21E8, 0x5C0C, 0x5C0C, 0x2F00, 0x5C0D, 0x5C0D, 0x1EDA, + 0x5C0E, 0x5C0E, 0x1EB9, 0x5C0F, 0x5C0F, 0x0F6C, 0x5C10, 0x5C10, 0x2F01, + 0x5C11, 0x5C11, 0x0D12, 0x5C12, 0x5C13, 0x2F02, 0x5C14, 0x5C14, 0x063A, + 0x5C15, 0x5C15, 0x17B2, 0x5C16, 0x5C16, 0x0855, 0x5C17, 0x5C17, 0x2F04, + 0x5C18, 0x5C18, 0x04E3, 0x5C19, 0x5C19, 0x2F05, 0x5C1A, 0x5C1A, 0x0D09, + 0x5C1B, 0x5C1B, 0x2F06, 0x5C1C, 0x5C1C, 0x17B3, 0x5C1D, 0x5C1D, 0x04C7, + 0x5C1E, 0x5C21, 0x2F07, 0x5C22, 0x5C22, 0x14B6, 0x5C23, 0x5C23, 0x2F0B, + 0x5C24, 0x5C24, 0x10AD, 0x5C25, 0x5C25, 0x14B7, 0x5C26, 0x5C26, 0x2F0C, + 0x5C27, 0x5C27, 0x1029, 0x5C28, 0x5C2B, 0x2F0D, 0x5C2C, 0x5C2C, 0x14B8, + 0x5C2D, 0x5C30, 0x2F11, 0x5C31, 0x5C31, 0x08FC, 0x5C32, 0x5C33, 0x2F15, + 0x5C34, 0x5C34, 0x14B9, 0x5C35, 0x5C36, 0x2F17, 0x5C37, 0x5C37, 0x235C, + 0x5C38, 0x5C38, 0x0D43, 0x5C39, 0x5C39, 0x1083, 0x5C3A, 0x5C3A, 0x0504, + 0x5C3B, 0x5C3B, 0x1766, 0x5C3C, 0x5C3C, 0x0B44, 0x5C3D, 0x5C3D, 0x08D0, + 0x5C3E, 0x5C3E, 0x0EC1, 0x5C3F, 0x5C3F, 0x0B55, 0x5C40, 0x5C40, 0x0905, + 0x5C41, 0x5C41, 0x0BC7, 0x5C42, 0x5C42, 0x04AA, 0x5C43, 0x5C44, 0x2F19, + 0x5C45, 0x5C45, 0x0902, 0x5C46, 0x5C47, 0x2F1B, 0x5C48, 0x5C48, 0x0C79, + 0x5C49, 0x5C49, 0x0E3E, 0x5C4A, 0x5C4A, 0x08BD, 0x5C4B, 0x5C4B, 0x0EEC, + 0x5C4C, 0x5C4D, 0x2F1D, 0x5C4E, 0x5C4E, 0x0D51, 0x5C4F, 0x5C4F, 0x0BE0, + 0x5C50, 0x5C50, 0x1768, 0x5C51, 0x5C51, 0x0F87, 0x5C52, 0x5C54, 0x2F1F, + 0x5C55, 0x5C55, 0x115A, 0x5C56, 0x5C58, 0x2F22, 0x5C59, 0x5C59, 0x1769, + 0x5C5A, 0x5C5D, 0x2F25, 0x5C5E, 0x5C5E, 0x0D8B, 0x5C5F, 0x5C5F, 0x2F29, + 0x5C60, 0x5C60, 0x0E71, 0x5C61, 0x5C61, 0x0A6C, 0x5C62, 0x5C62, 0x2050, + 0x5C63, 0x5C63, 0x176B, 0x5C64, 0x5C64, 0x1E67, 0x5C65, 0x5C65, 0x0A6B, + 0x5C66, 0x5C66, 0x176C, 0x5C67, 0x5C67, 0x2F2A, 0x5C68, 0x5C68, 0x23F4, + 0x5C69, 0x5C6B, 0x2F2B, 0x5C6C, 0x5C6C, 0x213E, 0x5C6D, 0x5C6D, 0x2F2E, + 0x5C6E, 0x5C6E, 0x1774, 0x5C6F, 0x5C6F, 0x0E7E, 0x5C70, 0x5C70, 0x2F2F, + 0x5C71, 0x5C71, 0x0CF6, 0x5C72, 0x5C78, 0x2F30, 0x5C79, 0x5C79, 0x1060, + 0x5C7A, 0x5C7A, 0x15AC, 0x5C7B, 0x5C7E, 0x2F37, 0x5C7F, 0x5C7F, 0x10D1, + 0x5C80, 0x5C80, 0x2F3B, 0x5C81, 0x5C81, 0x0DDF, 0x5C82, 0x5C82, 0x0C10, + 0x5C83, 0x5C87, 0x2F3C, 0x5C88, 0x5C88, 0x15B0, 0x5C89, 0x5C8B, 0x2F41, + 0x5C8C, 0x5C8C, 0x15AB, 0x5C8D, 0x5C8D, 0x15AD, 0x5C8E, 0x5C8F, 0x2F44, + 0x5C90, 0x5C90, 0x15AE, 0x5C91, 0x5C91, 0x15B3, 0x5C92, 0x5C93, 0x2F46, + 0x5C94, 0x5C94, 0x04B4, 0x5C95, 0x5C95, 0x2F48, 0x5C96, 0x5C96, 0x15AF, + 0x5C97, 0x5C97, 0x06D5, 0x5C98, 0x5C99, 0x15B1, 0x5C9A, 0x5C9A, 0x15B4, + 0x5C9B, 0x5C9B, 0x059B, 0x5C9C, 0x5C9C, 0x15B5, 0x5C9D, 0x5CA0, 0x2F49, + 0x5CA1, 0x5CA1, 0x1F16, 0x5CA2, 0x5CA2, 0x15B7, 0x5CA3, 0x5CA3, 0x15BC, + 0x5CA4, 0x5CA8, 0x2F4D, 0x5CA9, 0x5CA9, 0x0FFB, 0x5CAA, 0x5CAA, 0x2F52, + 0x5CAB, 0x5CAB, 0x15BA, 0x5CAC, 0x5CAC, 0x15B9, 0x5CAD, 0x5CAD, 0x0A34, + 0x5CAE, 0x5CB0, 0x2F53, 0x5CB1, 0x5CB1, 0x15BB, 0x5CB2, 0x5CB2, 0x2F56, + 0x5CB3, 0x5CB3, 0x1103, 0x5CB4, 0x5CB4, 0x2F57, 0x5CB5, 0x5CB5, 0x15B6, + 0x5CB6, 0x5CB6, 0x2F58, 0x5CB7, 0x5CB7, 0x15BE, 0x5CB8, 0x5CB8, 0x03C1, + 0x5CB9, 0x5CBC, 0x2F59, 0x5CBD, 0x5CBD, 0x15B8, 0x5CBE, 0x5CBE, 0x2F5D, + 0x5CBF, 0x5CBF, 0x0986, 0x5CC0, 0x5CC0, 0x2F5E, 0x5CC1, 0x5CC1, 0x15BD, + 0x5CC2, 0x5CC3, 0x2F5F, 0x5CC4, 0x5CC4, 0x15BF, 0x5CC5, 0x5CCA, 0x2F61, + 0x5CCB, 0x5CCB, 0x15C2, 0x5CCC, 0x5CD1, 0x2F67, 0x5CD2, 0x5CD2, 0x15C0, + 0x5CD3, 0x5CD8, 0x2F6D, 0x5CD9, 0x5CD9, 0x11C4, 0x5CDA, 0x5CE0, 0x2F73, + 0x5CE1, 0x5CE1, 0x0F2C, 0x5CE2, 0x5CE3, 0x2F7A, 0x5CE4, 0x5CE4, 0x15C1, + 0x5CE5, 0x5CE5, 0x15C3, 0x5CE6, 0x5CE6, 0x0A74, 0x5CE7, 0x5CE7, 0x2F7C, + 0x5CE8, 0x5CE8, 0x062A, 0x5CE9, 0x5CE9, 0x2F7D, 0x5CEA, 0x5CEA, 0x10DD, + 0x5CEB, 0x5CEC, 0x2F7E, 0x5CED, 0x5CED, 0x0C4A, 0x5CEE, 0x5CEF, 0x2F80, + 0x5CF0, 0x5CF0, 0x0682, 0x5CF1, 0x5CF3, 0x2F82, 0x5CF4, 0x5CF4, 0x2389, + 0x5CF5, 0x5CF5, 0x2F85, 0x5CF6, 0x5CF6, 0x1EB7, 0x5CF7, 0x5CFA, 0x2F86, + 0x5CFB, 0x5CFB, 0x092D, 0x5CFC, 0x5CFC, 0x2F8A, 0x5CFD, 0x5CFD, 0x21B4, + 0x5CFE, 0x5CFF, 0x2F8B, 0x5D00, 0x5D01, 0x2F8D, 0x5D02, 0x5D03, 0x15C4, + 0x5D04, 0x5D05, 0x2F8F, 0x5D06, 0x5D06, 0x15CB, 0x5D07, 0x5D07, 0x050C, + 0x5D08, 0x5D0C, 0x2F91, 0x5D0D, 0x5D0D, 0x238F, 0x5D0E, 0x5D0E, 0x0C08, + 0x5D0F, 0x5D13, 0x2F96, 0x5D14, 0x5D14, 0x0561, 0x5D15, 0x5D15, 0x2F9B, + 0x5D16, 0x5D16, 0x0FEB, 0x5D17, 0x5D17, 0x1F1A, 0x5D18, 0x5D1A, 0x2F9C, + 0x5D1B, 0x5D1B, 0x15CC, 0x5D1C, 0x5D1D, 0x2F9F, 0x5D1E, 0x5D1E, 0x15CA, + 0x5D1F, 0x5D23, 0x2FA1, 0x5D24, 0x5D24, 0x15C9, 0x5D25, 0x5D25, 0x2FA6, + 0x5D26, 0x5D26, 0x15C7, 0x5D27, 0x5D27, 0x15C6, 0x5D28, 0x5D28, 0x2FA7, + 0x5D29, 0x5D29, 0x0429, 0x5D2A, 0x5D2B, 0x2FA8, 0x5D2C, 0x5D2C, 0x238B, + 0x5D2D, 0x5D2D, 0x1159, 0x5D2E, 0x5D2E, 0x15C8, 0x5D2F, 0x5D33, 0x2FAA, + 0x5D34, 0x5D34, 0x15CF, 0x5D35, 0x5D3C, 0x2FAF, 0x5D3D, 0x5D3D, 0x15D0, + 0x5D3E, 0x5D3E, 0x15CE, 0x5D3F, 0x5D46, 0x2FB7, 0x5D47, 0x5D47, 0x1B22, + 0x5D48, 0x5D49, 0x2FBF, 0x5D4A, 0x5D4A, 0x15D7, 0x5D4B, 0x5D4B, 0x15D6, + 0x5D4C, 0x5D4C, 0x0C33, 0x5D4D, 0x5D4F, 0x2FC1, 0x5D50, 0x5D50, 0x238A, + 0x5D51, 0x5D57, 0x2FC4, 0x5D58, 0x5D58, 0x15CD, 0x5D59, 0x5D5A, 0x2FCB, + 0x5D5B, 0x5D5B, 0x15D2, 0x5D5C, 0x5D5C, 0x2FCD, 0x5D5D, 0x5D5D, 0x15D4, + 0x5D5E, 0x5D68, 0x2FCE, 0x5D69, 0x5D69, 0x15D8, 0x5D6A, 0x5D6A, 0x2FD9, + 0x5D6B, 0x5D6B, 0x15D5, 0x5D6C, 0x5D6C, 0x15D1, 0x5D6D, 0x5D6E, 0x2FDA, + 0x5D6F, 0x5D6F, 0x15D3, 0x5D70, 0x5D73, 0x2FDC, 0x5D74, 0x5D74, 0x15D9, + 0x5D75, 0x5D80, 0x2FE0, 0x5D81, 0x5D81, 0x2391, 0x5D82, 0x5D82, 0x15DA, + 0x5D83, 0x5D83, 0x2FEC, 0x5D84, 0x5D84, 0x2271, 0x5D85, 0x5D86, 0x2FED, + 0x5D87, 0x5D87, 0x2388, 0x5D88, 0x5D96, 0x2FEF, 0x5D97, 0x5D97, 0x238E, + 0x5D98, 0x5D98, 0x2FFE, 0x5D99, 0x5D99, 0x15DB, 0x5D9A, 0x5D9C, 0x2FFF, + 0x5D9D, 0x5D9D, 0x15DC, 0x5D9E, 0x5D9F, 0x3002, 0x5DA0, 0x5DA0, 0x238D, + 0x5DA1, 0x5DA6, 0x3004, 0x5DA7, 0x5DA7, 0x238C, 0x5DA8, 0x5DB6, 0x300A, + 0x5DB7, 0x5DB7, 0x15DE, 0x5DB8, 0x5DB8, 0x2390, 0x5DB9, 0x5DB9, 0x3019, + 0x5DBA, 0x5DBA, 0x2033, 0x5DBB, 0x5DBB, 0x301A, 0x5DBC, 0x5DBC, 0x223C, + 0x5DBD, 0x5DC4, 0x301B, 0x5DC5, 0x5DC5, 0x15DF, 0x5DC6, 0x5DCA, 0x3023, + 0x5DCB, 0x5DCB, 0x1FE9, 0x5DCC, 0x5DCC, 0x3028, 0x5DCD, 0x5DCD, 0x0EB0, + 0x5DCE, 0x5DD1, 0x3029, 0x5DD2, 0x5DD2, 0x2055, 0x5DD3, 0x5DD3, 0x302D, + 0x5DD4, 0x5DD4, 0x2392, 0x5DD5, 0x5DDA, 0x302E, 0x5DDB, 0x5DDB, 0x1815, + 0x5DDC, 0x5DDC, 0x3034, 0x5DDD, 0x5DDD, 0x052B, 0x5DDE, 0x5DDE, 0x11DC, + 0x5DDF, 0x5DE0, 0x3035, 0x5DE1, 0x5DE1, 0x0FDB, 0x5DE2, 0x5DE2, 0x04D7, + 0x5DE3, 0x5DE4, 0x3037, 0x5DE5, 0x5DE5, 0x06FD, 0x5DE6, 0x5DE6, 0x1250, + 0x5DE7, 0x5DE7, 0x0C46, 0x5DE8, 0x5DE8, 0x090D, 0x5DE9, 0x5DE9, 0x0707, + 0x5DEA, 0x5DEA, 0x3039, 0x5DEB, 0x5DEB, 0x0EE6, 0x5DEC, 0x5DED, 0x303A, + 0x5DEE, 0x5DEE, 0x04B5, 0x5DEF, 0x5DEF, 0x139F, 0x5DF0, 0x5DF0, 0x2324, + 0x5DF1, 0x5DF1, 0x082D, 0x5DF2, 0x5DF2, 0x1058, 0x5DF3, 0x5DF3, 0x0DBD, + 0x5DF4, 0x5DF4, 0x03D8, 0x5DF5, 0x5DF6, 0x303C, 0x5DF7, 0x5DF7, 0x0F5C, + 0x5DF8, 0x5DFC, 0x303E, 0x5DFD, 0x5DFD, 0x12F7, 0x5DFE, 0x5DFE, 0x08BE, + 0x5DFF, 0x5DFF, 0x3043, 0x5E00, 0x5E00, 0x3044, 0x5E01, 0x5E01, 0x043B, + 0x5E02, 0x5E02, 0x0D67, 0x5E03, 0x5E03, 0x0483, 0x5E04, 0x5E04, 0x3045, + 0x5E05, 0x5E05, 0x0D9C, 0x5E06, 0x5E06, 0x0648, 0x5E07, 0x5E07, 0x3046, + 0x5E08, 0x5E08, 0x0D3D, 0x5E09, 0x5E0B, 0x3047, 0x5E0C, 0x5E0C, 0x0F10, + 0x5E0D, 0x5E0E, 0x304A, 0x5E0F, 0x5E0F, 0x159E, 0x5E10, 0x5E10, 0x116B, + 0x5E11, 0x5E11, 0x15A1, 0x5E12, 0x5E13, 0x304C, 0x5E14, 0x5E14, 0x15A0, + 0x5E15, 0x5E15, 0x0B82, 0x5E16, 0x5E16, 0x0E4E, 0x5E17, 0x5E17, 0x304E, + 0x5E18, 0x5E18, 0x09FA, 0x5E19, 0x5E19, 0x159F, 0x5E1A, 0x5E1A, 0x11E2, + 0x5E1B, 0x5E1B, 0x0476, 0x5E1C, 0x5E1C, 0x11C3, 0x5E1D, 0x5E1D, 0x05BC, + 0x5E1E, 0x5E24, 0x304F, 0x5E25, 0x5E25, 0x2143, 0x5E26, 0x5E26, 0x057B, + 0x5E27, 0x5E27, 0x11A0, 0x5E28, 0x5E2A, 0x3056, 0x5E2B, 0x5E2B, 0x2129, + 0x5E2C, 0x5E2C, 0x3059, 0x5E2D, 0x5E2D, 0x0F1C, 0x5E2E, 0x5E2E, 0x03FA, + 0x5E2F, 0x5E30, 0x305A, 0x5E31, 0x5E31, 0x15A2, 0x5E32, 0x5E32, 0x305C, + 0x5E33, 0x5E33, 0x2277, 0x5E34, 0x5E35, 0x305D, 0x5E36, 0x5E36, 0x1EA7, + 0x5E37, 0x5E37, 0x15A5, 0x5E38, 0x5E38, 0x04C8, 0x5E39, 0x5E3A, 0x305F, + 0x5E3B, 0x5E3C, 0x15A3, 0x5E3D, 0x5E3D, 0x0AB6, 0x5E3E, 0x5E3F, 0x3061, + 0x5E40, 0x5E40, 0x2285, 0x5E41, 0x5E41, 0x3063, 0x5E42, 0x5E42, 0x0AE2, + 0x5E43, 0x5E43, 0x2384, 0x5E44, 0x5E44, 0x15A6, 0x5E45, 0x5E45, 0x0696, + 0x5E46, 0x5E4B, 0x3064, 0x5E4C, 0x5E4C, 0x07E4, 0x5E4D, 0x5E53, 0x306A, + 0x5E54, 0x5E54, 0x15A7, 0x5E55, 0x5E55, 0x0B1E, 0x5E56, 0x5E56, 0x3071, + 0x5E57, 0x5E57, 0x2387, 0x5E58, 0x5E58, 0x2386, 0x5E59, 0x5E5A, 0x3072, + 0x5E5B, 0x5E5B, 0x15A8, 0x5E5C, 0x5E5D, 0x3074, 0x5E5E, 0x5E5E, 0x15A9, + 0x5E5F, 0x5E5F, 0x2290, 0x5E60, 0x5E60, 0x3076, 0x5E61, 0x5E61, 0x15AA, + 0x5E62, 0x5E62, 0x0534, 0x5E63, 0x5E63, 0x1E44, 0x5E64, 0x5E6A, 0x3077, + 0x5E6B, 0x5E6B, 0x1E32, 0x5E6C, 0x5E6C, 0x2385, 0x5E6D, 0x5E71, 0x307E, + 0x5E72, 0x5E72, 0x06C4, 0x5E73, 0x5E73, 0x0BDC, 0x5E74, 0x5E74, 0x0B4D, + 0x5E75, 0x5E75, 0x3083, 0x5E76, 0x5E76, 0x0469, 0x5E77, 0x5E77, 0x3084, + 0x5E78, 0x5E78, 0x0F9D, 0x5E79, 0x5E79, 0x1F13, 0x5E7A, 0x5E7A, 0x1813, + 0x5E7B, 0x5E7B, 0x07D8, 0x5E7C, 0x5E7C, 0x10BC, 0x5E7D, 0x5E7D, 0x10A9, + 0x5E7E, 0x5E7E, 0x1F73, 0x5E7F, 0x5E7F, 0x073C, 0x5E80, 0x5E80, 0x1631, + 0x5E81, 0x5E83, 0x3085, 0x5E84, 0x5E84, 0x120C, 0x5E85, 0x5E85, 0x3088, + 0x5E86, 0x5E86, 0x0C69, 0x5E87, 0x5E87, 0x043C, 0x5E88, 0x5E89, 0x3089, + 0x5E8A, 0x5E8A, 0x0535, 0x5E8B, 0x5E8B, 0x1633, 0x5E8C, 0x5E8E, 0x308B, + 0x5E8F, 0x5E8F, 0x0FBD, 0x5E90, 0x5E90, 0x0A55, 0x5E91, 0x5E91, 0x1632, + 0x5E92, 0x5E92, 0x308E, 0x5E93, 0x5E93, 0x096F, 0x5E94, 0x5E94, 0x108B, + 0x5E95, 0x5E95, 0x05B8, 0x5E96, 0x5E96, 0x1634, 0x5E97, 0x5E97, 0x05CB, + 0x5E98, 0x5E98, 0x308F, 0x5E99, 0x5E99, 0x0AF2, 0x5E9A, 0x5E9A, 0x06F8, + 0x5E9B, 0x5E9B, 0x3090, 0x5E9C, 0x5E9C, 0x06A9, 0x5E9D, 0x5E9D, 0x3091, + 0x5E9E, 0x5E9E, 0x0B94, 0x5E9F, 0x5E9F, 0x066C, 0x5EA0, 0x5EA0, 0x1636, + 0x5EA1, 0x5EA4, 0x3092, 0x5EA5, 0x5EA5, 0x1635, 0x5EA6, 0x5EA6, 0x0607, + 0x5EA7, 0x5EA7, 0x1256, 0x5EA8, 0x5EAA, 0x3096, 0x5EAB, 0x5EAB, 0x1FE0, + 0x5EAC, 0x5EAC, 0x3099, 0x5EAD, 0x5EAD, 0x0E56, 0x5EAE, 0x5EB2, 0x309A, + 0x5EB3, 0x5EB3, 0x163A, 0x5EB4, 0x5EB4, 0x309F, 0x5EB5, 0x5EB5, 0x1638, + 0x5EB6, 0x5EB6, 0x0D93, 0x5EB7, 0x5EB7, 0x0942, 0x5EB8, 0x5EB8, 0x109E, + 0x5EB9, 0x5EB9, 0x1637, 0x5EBA, 0x5EBD, 0x30A0, 0x5EBE, 0x5EBE, 0x1639, + 0x5EBF, 0x5EC8, 0x30A4, 0x5EC9, 0x5EC9, 0x09F7, 0x5ECA, 0x5ECA, 0x09B3, + 0x5ECB, 0x5ED0, 0x30AE, 0x5ED1, 0x5ED1, 0x163D, 0x5ED2, 0x5ED2, 0x163C, + 0x5ED3, 0x5ED3, 0x0995, 0x5ED4, 0x5ED5, 0x30B4, 0x5ED6, 0x5ED6, 0x0A17, + 0x5ED7, 0x5EDA, 0x30B6, 0x5EDB, 0x5EDB, 0x163E, 0x5EDC, 0x5EDE, 0x30BA, + 0x5EDF, 0x5EDF, 0x2087, 0x5EE0, 0x5EE0, 0x1E78, 0x5EE1, 0x5EE1, 0x23AE, + 0x5EE2, 0x5EE2, 0x1EF6, 0x5EE3, 0x5EE3, 0x1F31, 0x5EE4, 0x5EE7, 0x30BD, + 0x5EE8, 0x5EE8, 0x163F, 0x5EE9, 0x5EE9, 0x30C1, 0x5EEA, 0x5EEA, 0x1640, + 0x5EEB, 0x5EEB, 0x30C2, 0x5EEC, 0x5EEC, 0x2045, 0x5EED, 0x5EF2, 0x30C3, + 0x5EF3, 0x5EF3, 0x2178, 0x5EF4, 0x5EF4, 0x1398, 0x5EF5, 0x5EF5, 0x30C9, + 0x5EF6, 0x5EF6, 0x0FFC, 0x5EF7, 0x5EF7, 0x0E53, 0x5EF8, 0x5EF9, 0x30CA, + 0x5EFA, 0x5EFA, 0x0879, 0x5EFB, 0x5EFD, 0x30CC, 0x5EFE, 0x5EFE, 0x14AD, + 0x5EFF, 0x5EFF, 0x125B, 0x5F00, 0x5F00, 0x0937, 0x5F01, 0x5F01, 0x139D, + 0x5F02, 0x5F02, 0x1073, 0x5F03, 0x5F03, 0x0C19, 0x5F04, 0x5F04, 0x0B6B, + 0x5F05, 0x5F07, 0x30CF, 0x5F08, 0x5F08, 0x14AE, 0x5F09, 0x5F09, 0x30D2, + 0x5F0A, 0x5F0A, 0x0440, 0x5F0B, 0x5F0B, 0x14F6, 0x5F0C, 0x5F0E, 0x30D3, + 0x5F0F, 0x5F0F, 0x0D54, 0x5F10, 0x5F10, 0x30D6, 0x5F11, 0x5F11, 0x14F9, + 0x5F12, 0x5F12, 0x30D7, 0x5F13, 0x5F13, 0x0706, 0x5F14, 0x5F14, 0x30D8, + 0x5F15, 0x5F15, 0x1084, 0x5F16, 0x5F16, 0x30D9, 0x5F17, 0x5F17, 0x06A0, + 0x5F18, 0x5F18, 0x07A2, 0x5F19, 0x5F1A, 0x30DA, 0x5F1B, 0x5F1B, 0x04FF, + 0x5F1C, 0x5F1E, 0x30DC, 0x5F1F, 0x5F1F, 0x05BD, 0x5F20, 0x5F20, 0x1166, + 0x5F21, 0x5F24, 0x30DF, 0x5F25, 0x5F25, 0x0ADB, 0x5F26, 0x5F26, 0x0F3F, + 0x5F27, 0x5F27, 0x07B6, 0x5F28, 0x5F28, 0x30E3, 0x5F29, 0x5F29, 0x176F, + 0x5F2A, 0x5F2A, 0x176E, 0x5F2B, 0x5F2C, 0x30E4, 0x5F2D, 0x5F2D, 0x1770, + 0x5F2E, 0x5F2E, 0x30E6, 0x5F2F, 0x5F2F, 0x0E95, 0x5F30, 0x5F30, 0x30E7, + 0x5F31, 0x5F31, 0x0CD0, 0x5F32, 0x5F32, 0x30E8, 0x5F33, 0x5F33, 0x23F5, + 0x5F34, 0x5F34, 0x30E9, 0x5F35, 0x5F35, 0x2275, 0x5F36, 0x5F38, 0x30EA, + 0x5F39, 0x5F39, 0x0590, 0x5F3A, 0x5F3A, 0x0C3C, 0x5F3B, 0x5F3B, 0x30ED, + 0x5F3C, 0x5F3C, 0x1772, 0x5F3D, 0x5F3F, 0x30EE, 0x5F40, 0x5F40, 0x19BE, + 0x5F41, 0x5F45, 0x30F1, 0x5F46, 0x5F46, 0x266E, 0x5F47, 0x5F47, 0x30F6, + 0x5F48, 0x5F48, 0x1EB0, 0x5F49, 0x5F4B, 0x30F7, 0x5F4C, 0x5F4C, 0x2083, + 0x5F4D, 0x5F4D, 0x30FA, 0x5F4E, 0x5F4E, 0x2188, 0x5F4F, 0x5F4F, 0x30FB, + 0x5F50, 0x5F50, 0x1762, 0x5F51, 0x5F51, 0x30FC, 0x5F52, 0x5F52, 0x0742, + 0x5F53, 0x5F53, 0x0592, 0x5F54, 0x5F54, 0x30FD, 0x5F55, 0x5F55, 0x0A63, + 0x5F56, 0x5F56, 0x1764, 0x5F57, 0x5F57, 0x1763, 0x5F58, 0x5F58, 0x1765, + 0x5F59, 0x5F59, 0x267C, 0x5F5A, 0x5F5C, 0x30FE, 0x5F5D, 0x5F5D, 0x1054, + 0x5F5E, 0x5F60, 0x3101, 0x5F61, 0x5F61, 0x15EE, 0x5F62, 0x5F62, 0x0F99, + 0x5F63, 0x5F63, 0x3104, 0x5F64, 0x5F64, 0x0E5F, 0x5F65, 0x5F65, 0x3105, + 0x5F66, 0x5F66, 0x100E, 0x5F67, 0x5F68, 0x3106, 0x5F69, 0x5F69, 0x0491, + 0x5F6A, 0x5F6A, 0x0454, 0x5F6B, 0x5F6B, 0x3108, 0x5F6C, 0x5F6C, 0x045B, + 0x5F6D, 0x5F6D, 0x0BAE, 0x5F6E, 0x5F6F, 0x3109, 0x5F70, 0x5F70, 0x1164, + 0x5F71, 0x5F71, 0x1095, 0x5F72, 0x5F72, 0x310B, 0x5F73, 0x5F73, 0x15E0, + 0x5F74, 0x5F76, 0x310C, 0x5F77, 0x5F77, 0x15E1, 0x5F78, 0x5F78, 0x310F, + 0x5F79, 0x5F79, 0x1062, 0x5F7A, 0x5F7A, 0x3110, 0x5F7B, 0x5F7B, 0x04DE, + 0x5F7C, 0x5F7C, 0x0434, 0x5F7D, 0x5F7F, 0x3111, 0x5F80, 0x5F80, 0x0EAA, + 0x5F81, 0x5F81, 0x1198, 0x5F82, 0x5F82, 0x15E2, 0x5F83, 0x5F83, 0x3114, + 0x5F84, 0x5F84, 0x08E5, 0x5F85, 0x5F85, 0x0580, 0x5F86, 0x5F86, 0x3115, + 0x5F87, 0x5F87, 0x15E3, 0x5F88, 0x5F88, 0x0793, 0x5F89, 0x5F89, 0x15E4, + 0x5F8A, 0x5F8A, 0x07C7, 0x5F8B, 0x5F8B, 0x0A70, 0x5F8C, 0x5F8C, 0x15E5, + 0x5F8D, 0x5F8F, 0x3116, 0x5F90, 0x5F90, 0x0FB7, 0x5F91, 0x5F91, 0x1FC5, + 0x5F92, 0x5F92, 0x0E6E, 0x5F93, 0x5F94, 0x3119, 0x5F95, 0x5F95, 0x15E6, + 0x5F96, 0x5F96, 0x311B, 0x5F97, 0x5F97, 0x05A4, 0x5F98, 0x5F98, 0x0B88, + 0x5F99, 0x5F99, 0x15E7, 0x5F9A, 0x5F9B, 0x311C, 0x5F9C, 0x5F9C, 0x15E8, + 0x5F9D, 0x5F9D, 0x311E, 0x5F9E, 0x5F9E, 0x1EA1, 0x5F9F, 0x5F9F, 0x311F, + 0x5FA0, 0x5FA0, 0x2393, 0x5FA1, 0x5FA1, 0x10DE, 0x5FA2, 0x5FA7, 0x3120, + 0x5FA8, 0x5FA8, 0x15E9, 0x5FA9, 0x5FA9, 0x1F0B, 0x5FAA, 0x5FAA, 0x0FD6, + 0x5FAB, 0x5FAC, 0x3126, 0x5FAD, 0x5FAD, 0x15EA, 0x5FAE, 0x5FAE, 0x0EB1, + 0x5FAF, 0x5FB4, 0x3128, 0x5FB5, 0x5FB5, 0x15EB, 0x5FB6, 0x5FB6, 0x312E, + 0x5FB7, 0x5FB7, 0x05A3, 0x5FB8, 0x5FB8, 0x312F, 0x5FB9, 0x5FB9, 0x1E7C, + 0x5FBA, 0x5FBB, 0x3130, 0x5FBC, 0x5FBC, 0x15EC, 0x5FBD, 0x5FBD, 0x07EA, + 0x5FBE, 0x5FC2, 0x3132, 0x5FC3, 0x5FC3, 0x0F8F, 0x5FC4, 0x5FC4, 0x1642, + 0x5FC5, 0x5FC5, 0x0441, 0x5FC6, 0x5FC6, 0x106B, 0x5FC7, 0x5FC8, 0x3137, + 0x5FC9, 0x5FC9, 0x1643, 0x5FCA, 0x5FCB, 0x3139, 0x5FCC, 0x5FCC, 0x083C, + 0x5FCD, 0x5FCD, 0x0CA7, 0x5FCE, 0x5FCE, 0x313B, 0x5FCF, 0x5FCF, 0x1645, + 0x5FD0, 0x5FD0, 0x1A0C, 0x5FD1, 0x5FD1, 0x1A0B, 0x5FD2, 0x5FD2, 0x14F7, + 0x5FD3, 0x5FD5, 0x313C, 0x5FD6, 0x5FD6, 0x1644, 0x5FD7, 0x5FD7, 0x11BD, + 0x5FD8, 0x5FD8, 0x0EAD, 0x5FD9, 0x5FD9, 0x0AAB, 0x5FDA, 0x5FDC, 0x313F, + 0x5FDD, 0x5FDD, 0x1683, 0x5FDE, 0x5FDF, 0x3142, 0x5FE0, 0x5FE0, 0x11D1, + 0x5FE1, 0x5FE1, 0x1649, 0x5FE2, 0x5FE3, 0x3144, 0x5FE4, 0x5FE4, 0x164A, + 0x5FE5, 0x5FE6, 0x3146, 0x5FE7, 0x5FE7, 0x10AC, 0x5FE8, 0x5FE9, 0x3148, + 0x5FEA, 0x5FEA, 0x164E, 0x5FEB, 0x5FEB, 0x0979, 0x5FEC, 0x5FEC, 0x314A, + 0x5FED, 0x5FED, 0x164F, 0x5FEE, 0x5FEE, 0x1647, 0x5FEF, 0x5FF0, 0x314B, + 0x5FF1, 0x5FF1, 0x04E5, 0x5FF2, 0x5FF4, 0x314D, 0x5FF5, 0x5FF5, 0x0B51, + 0x5FF6, 0x5FF7, 0x3150, 0x5FF8, 0x5FF8, 0x1650, 0x5FF9, 0x5FFA, 0x3152, + 0x5FFB, 0x5FFB, 0x0F8E, 0x5FFC, 0x5FFC, 0x3154, 0x5FFD, 0x5FFD, 0x07AD, + 0x5FFE, 0x5FFE, 0x164B, 0x5FFF, 0x5FFF, 0x067B, 0x6000, 0x6000, 0x07C8, + 0x6001, 0x6001, 0x0DFF, 0x6002, 0x6002, 0x0DC0, 0x6003, 0x6003, 0x1646, + 0x6004, 0x6004, 0x1648, 0x6005, 0x6006, 0x164C, 0x6007, 0x6009, 0x3155, + 0x600A, 0x600A, 0x1659, 0x600B, 0x600C, 0x3158, 0x600D, 0x600D, 0x1656, + 0x600E, 0x600E, 0x1138, 0x600F, 0x600F, 0x1655, 0x6010, 0x6011, 0x315A, + 0x6012, 0x6012, 0x0B6E, 0x6013, 0x6013, 0x315C, 0x6014, 0x6014, 0x119B, + 0x6015, 0x6015, 0x0B83, 0x6016, 0x6016, 0x0487, 0x6017, 0x6018, 0x315D, + 0x6019, 0x6019, 0x1651, 0x601A, 0x601A, 0x315F, 0x601B, 0x601B, 0x1654, + 0x601C, 0x601C, 0x09F8, 0x601D, 0x601D, 0x0DB1, 0x601E, 0x601F, 0x3160, + 0x6020, 0x6020, 0x0582, 0x6021, 0x6021, 0x165B, 0x6022, 0x6024, 0x3162, + 0x6025, 0x6025, 0x0824, 0x6026, 0x6026, 0x1653, 0x6027, 0x6027, 0x0F9F, + 0x6028, 0x6028, 0x10FC, 0x6029, 0x6029, 0x1657, 0x602A, 0x602A, 0x072F, + 0x602B, 0x602B, 0x1658, 0x602C, 0x602E, 0x3165, 0x602F, 0x602F, 0x0C50, + 0x6030, 0x6034, 0x3168, 0x6035, 0x6035, 0x1652, 0x6036, 0x603A, 0x316D, + 0x603B, 0x603B, 0x1239, 0x603C, 0x603C, 0x1A0D, 0x603D, 0x603E, 0x3172, + 0x603F, 0x603F, 0x165A, 0x6040, 0x6040, 0x3174, 0x6041, 0x6041, 0x1A11, + 0x6042, 0x6042, 0x1660, 0x6043, 0x6043, 0x0D68, 0x6044, 0x604A, 0x3175, + 0x604B, 0x604B, 0x09FE, 0x604C, 0x604C, 0x317C, 0x604D, 0x604D, 0x07E5, + 0x604E, 0x604F, 0x317D, 0x6050, 0x6050, 0x0963, 0x6051, 0x6051, 0x317F, + 0x6052, 0x6052, 0x079A, 0x6053, 0x6054, 0x3180, 0x6055, 0x6055, 0x0D96, + 0x6056, 0x6058, 0x3182, 0x6059, 0x6059, 0x1A12, 0x605A, 0x605A, 0x1A0F, + 0x605B, 0x605C, 0x3185, 0x605D, 0x605D, 0x1A0E, 0x605E, 0x6061, 0x3187, + 0x6062, 0x6062, 0x07EB, 0x6063, 0x6063, 0x1A13, 0x6064, 0x6064, 0x0FBF, + 0x6065, 0x6066, 0x318B, 0x6067, 0x6067, 0x1A10, 0x6068, 0x6068, 0x0795, + 0x6069, 0x6069, 0x0636, 0x606A, 0x606A, 0x1661, 0x606B, 0x606B, 0x05F1, + 0x606C, 0x606C, 0x0E44, 0x606D, 0x606D, 0x0700, 0x606E, 0x606E, 0x318D, + 0x606F, 0x606F, 0x0F0F, 0x6070, 0x6070, 0x0C1E, 0x6071, 0x6072, 0x318E, + 0x6073, 0x6073, 0x095F, 0x6074, 0x6075, 0x3190, 0x6076, 0x6076, 0x0630, + 0x6077, 0x6077, 0x3192, 0x6078, 0x6079, 0x165C, 0x607A, 0x607A, 0x165F, + 0x607B, 0x607B, 0x165E, 0x607C, 0x607C, 0x0B38, 0x607D, 0x607D, 0x1662, + 0x607E, 0x607E, 0x3193, 0x607F, 0x607F, 0x10A6, 0x6080, 0x6082, 0x3194, + 0x6083, 0x6083, 0x1667, 0x6084, 0x6084, 0x0C41, 0x6085, 0x6088, 0x3197, + 0x6089, 0x6089, 0x0F11, 0x608A, 0x608B, 0x319B, 0x608C, 0x608C, 0x1669, + 0x608D, 0x608D, 0x076E, 0x608E, 0x6091, 0x319D, 0x6092, 0x6092, 0x1668, + 0x6093, 0x6093, 0x31A1, 0x6094, 0x6094, 0x07EF, 0x6095, 0x6095, 0x31A2, + 0x6096, 0x6096, 0x1663, 0x6097, 0x6099, 0x31A3, 0x609A, 0x609A, 0x1664, + 0x609B, 0x609B, 0x166A, 0x609C, 0x609C, 0x31A6, 0x609D, 0x609D, 0x1666, + 0x609E, 0x609E, 0x31A7, 0x609F, 0x609F, 0x0F01, 0x60A0, 0x60A0, 0x10AB, + 0x60A1, 0x60A2, 0x31A8, 0x60A3, 0x60A3, 0x07D1, 0x60A4, 0x60A5, 0x31AA, + 0x60A6, 0x60A6, 0x1106, 0x60A7, 0x60A7, 0x31AC, 0x60A8, 0x60A8, 0x0B5D, + 0x60A9, 0x60AA, 0x31AD, 0x60AB, 0x60AB, 0x1A14, 0x60AC, 0x60AC, 0x0FC7, + 0x60AD, 0x60AD, 0x1665, 0x60AE, 0x60AE, 0x31AF, 0x60AF, 0x60AF, 0x0AFA, + 0x60B0, 0x60B0, 0x31B0, 0x60B1, 0x60B1, 0x166D, 0x60B2, 0x60B2, 0x0418, + 0x60B3, 0x60B3, 0x31B1, 0x60B4, 0x60B4, 0x1672, 0x60B5, 0x60B5, 0x23B4, + 0x60B6, 0x60B6, 0x207E, 0x60B7, 0x60B7, 0x31B2, 0x60B8, 0x60B8, 0x0835, + 0x60B9, 0x60BA, 0x31B3, 0x60BB, 0x60BB, 0x166C, 0x60BC, 0x60BC, 0x05A0, + 0x60BD, 0x60C4, 0x31B5, 0x60C5, 0x60C5, 0x0C66, 0x60C6, 0x60C6, 0x1670, + 0x60C7, 0x60C9, 0x31BD, 0x60CA, 0x60CA, 0x08D9, 0x60CB, 0x60CB, 0x0EA0, + 0x60CC, 0x60D0, 0x31C0, 0x60D1, 0x60D1, 0x0808, 0x60D2, 0x60D4, 0x31C5, + 0x60D5, 0x60D5, 0x0E3B, 0x60D6, 0x60D7, 0x31C8, 0x60D8, 0x60D8, 0x166F, + 0x60D9, 0x60D9, 0x31CA, 0x60DA, 0x60DA, 0x1671, 0x60DB, 0x60DB, 0x31CB, + 0x60DC, 0x60DC, 0x0F14, 0x60DD, 0x60DD, 0x166E, 0x60DE, 0x60DE, 0x31CC, + 0x60DF, 0x60DF, 0x0EB8, 0x60E0, 0x60E0, 0x07F2, 0x60E1, 0x60E1, 0x1EE3, + 0x60E2, 0x60E5, 0x31CD, 0x60E6, 0x60E6, 0x05CC, 0x60E7, 0x60E7, 0x0914, + 0x60E8, 0x60E8, 0x0499, 0x60E9, 0x60E9, 0x04F2, 0x60EA, 0x60EA, 0x31D1, + 0x60EB, 0x60EB, 0x0422, 0x60EC, 0x60EC, 0x166B, 0x60ED, 0x60ED, 0x0498, + 0x60EE, 0x60EE, 0x058D, 0x60EF, 0x60EF, 0x0738, 0x60F0, 0x60F0, 0x0627, + 0x60F1, 0x60F1, 0x2095, 0x60F2, 0x60F2, 0x23BB, 0x60F3, 0x60F3, 0x0F58, + 0x60F4, 0x60F4, 0x1677, 0x60F5, 0x60F5, 0x31D2, 0x60F6, 0x60F6, 0x07E1, + 0x60F7, 0x60F8, 0x31D3, 0x60F9, 0x60F9, 0x0CA2, 0x60FA, 0x60FA, 0x0F95, + 0x60FB, 0x60FB, 0x23B9, 0x60FC, 0x60FF, 0x31D5, 0x6100, 0x6100, 0x1678, + 0x6101, 0x6101, 0x0513, 0x6102, 0x6105, 0x31D9, 0x6106, 0x6106, 0x1A15, + 0x6107, 0x6107, 0x31DD, 0x6108, 0x6108, 0x10DF, 0x6109, 0x6109, 0x10C9, + 0x610A, 0x610C, 0x31DE, 0x610D, 0x610D, 0x1A16, 0x610E, 0x610E, 0x1679, + 0x610F, 0x610F, 0x1069, 0x6110, 0x6114, 0x31E1, 0x6115, 0x6115, 0x1675, + 0x6116, 0x6119, 0x31E6, 0x611A, 0x611A, 0x10C3, 0x611B, 0x611B, 0x1E28, + 0x611C, 0x611C, 0x23BD, 0x611D, 0x611E, 0x31EA, 0x611F, 0x611F, 0x06CB, + 0x6120, 0x6120, 0x1673, 0x6121, 0x6122, 0x31EC, 0x6123, 0x6123, 0x1676, + 0x6124, 0x6124, 0x067C, 0x6125, 0x6125, 0x31EE, 0x6126, 0x6126, 0x1674, + 0x6127, 0x6127, 0x098D, 0x6128, 0x612A, 0x31EF, 0x612B, 0x612B, 0x167A, + 0x612C, 0x6133, 0x31F2, 0x6134, 0x6134, 0x23B5, 0x6135, 0x6136, 0x31FA, + 0x6137, 0x6137, 0x23BA, 0x6138, 0x613D, 0x31FC, 0x613E, 0x613E, 0x23B3, + 0x613F, 0x613F, 0x10FB, 0x6140, 0x6147, 0x3202, 0x6148, 0x6148, 0x054B, + 0x6149, 0x6149, 0x320A, 0x614A, 0x614A, 0x167B, 0x614B, 0x614B, 0x2162, + 0x614C, 0x614C, 0x07DA, 0x614D, 0x614D, 0x320B, 0x614E, 0x614E, 0x0D30, + 0x614F, 0x6150, 0x320C, 0x6151, 0x6151, 0x0D1E, 0x6152, 0x6154, 0x320E, + 0x6155, 0x6155, 0x0B20, 0x6156, 0x6157, 0x3211, 0x6158, 0x6158, 0x1E5E, + 0x6159, 0x6159, 0x3213, 0x615A, 0x615A, 0x1E5D, 0x615B, 0x615C, 0x3214, + 0x615D, 0x615D, 0x1A17, 0x615E, 0x615E, 0x3216, 0x615F, 0x615F, 0x23B7, + 0x6160, 0x6161, 0x3217, 0x6162, 0x6162, 0x0AA4, 0x6163, 0x6163, 0x1F2F, + 0x6164, 0x6164, 0x24DF, 0x6165, 0x6166, 0x3219, 0x6167, 0x6167, 0x07F0, + 0x6168, 0x6168, 0x093B, 0x6169, 0x6169, 0x321B, 0x616A, 0x616A, 0x23B2, + 0x616B, 0x616B, 0x214E, 0x616C, 0x616D, 0x321C, 0x616E, 0x616E, 0x2052, + 0x616F, 0x616F, 0x321E, 0x6170, 0x6170, 0x0ECE, 0x6171, 0x6172, 0x321F, + 0x6173, 0x6173, 0x23BC, 0x6174, 0x6174, 0x3221, 0x6175, 0x6175, 0x167C, + 0x6176, 0x6176, 0x20EB, 0x6177, 0x6177, 0x0943, 0x6178, 0x6181, 0x3222, + 0x6182, 0x6182, 0x2232, 0x6183, 0x6189, 0x322C, 0x618A, 0x618A, 0x1E3F, + 0x618B, 0x618B, 0x0458, 0x618C, 0x618D, 0x3233, 0x618E, 0x618E, 0x113A, + 0x618F, 0x618F, 0x3235, 0x6190, 0x6190, 0x201B, 0x6191, 0x6191, 0x20BC, + 0x6192, 0x6192, 0x23BE, 0x6193, 0x6193, 0x3236, 0x6194, 0x6194, 0x167E, + 0x6195, 0x6199, 0x3237, 0x619A, 0x619A, 0x1EAE, 0x619B, 0x619C, 0x323C, + 0x619D, 0x619D, 0x1A19, 0x619E, 0x61A3, 0x323E, 0x61A4, 0x61A4, 0x1EFB, + 0x61A5, 0x61A6, 0x3244, 0x61A7, 0x61A7, 0x167F, 0x61A8, 0x61A8, 0x0760, + 0x61A9, 0x61A9, 0x1A18, 0x61AA, 0x61AA, 0x3246, 0x61AB, 0x61AB, 0x2089, + 0x61AC, 0x61AC, 0x167D, 0x61AD, 0x61AD, 0x3247, 0x61AE, 0x61AE, 0x23B1, + 0x61AF, 0x61B1, 0x3248, 0x61B2, 0x61B2, 0x21C4, 0x61B3, 0x61B5, 0x324B, + 0x61B6, 0x61B6, 0x2214, 0x61B7, 0x61B7, 0x1680, 0x61B8, 0x61BD, 0x324E, + 0x61BE, 0x61BE, 0x076D, 0x61BF, 0x61C1, 0x3254, 0x61C2, 0x61C2, 0x05ED, + 0x61C3, 0x61C6, 0x3257, 0x61C7, 0x61C7, 0x1FDE, 0x61C8, 0x61C8, 0x0F83, + 0x61C9, 0x61C9, 0x2223, 0x61CA, 0x61CA, 0x03CE, 0x61CB, 0x61CB, 0x1A1A, + 0x61CC, 0x61CC, 0x23B6, 0x61CD, 0x61D0, 0x325B, 0x61D1, 0x61D1, 0x1A1B, + 0x61D2, 0x61D2, 0x09AC, 0x61D3, 0x61D3, 0x325F, 0x61D4, 0x61D4, 0x1681, + 0x61D5, 0x61DD, 0x3260, 0x61DE, 0x61DE, 0x268C, 0x61DF, 0x61DF, 0x24DE, + 0x61E0, 0x61E2, 0x3269, 0x61E3, 0x61E3, 0x24E0, 0x61E4, 0x61E5, 0x326C, + 0x61E6, 0x61E6, 0x0B74, 0x61E7, 0x61E7, 0x326E, 0x61E8, 0x61E8, 0x23B8, + 0x61E9, 0x61F1, 0x326F, 0x61F2, 0x61F2, 0x1E81, 0x61F3, 0x61F4, 0x3278, + 0x61F5, 0x61F5, 0x1682, 0x61F6, 0x61F6, 0x1FFE, 0x61F7, 0x61F7, 0x1F51, + 0x61F8, 0x61F8, 0x21E1, 0x61F9, 0x61F9, 0x327A, 0x61FA, 0x61FA, 0x23B0, + 0x61FB, 0x61FB, 0x327B, 0x61FC, 0x61FC, 0x1FCE, 0x61FD, 0x61FD, 0x327C, + 0x61FE, 0x61FE, 0x211E, 0x61FF, 0x61FF, 0x13E0, 0x6200, 0x6200, 0x2021, + 0x6201, 0x6205, 0x327D, 0x6206, 0x6206, 0x1A1C, 0x6207, 0x6207, 0x24E1, + 0x6208, 0x6208, 0x06E5, 0x6209, 0x6209, 0x3282, 0x620A, 0x620A, 0x0EFB, + 0x620B, 0x620B, 0x18F9, 0x620C, 0x620C, 0x0FB2, 0x620D, 0x620D, 0x0D90, + 0x620E, 0x620E, 0x0CB1, 0x620F, 0x620F, 0x0F24, 0x6210, 0x6210, 0x04EE, + 0x6211, 0x6211, 0x0EE1, 0x6212, 0x6212, 0x08B5, 0x6213, 0x6213, 0x3283, + 0x6214, 0x6214, 0x24A3, 0x6215, 0x6215, 0x169E, 0x6216, 0x6216, 0x0807, + 0x6217, 0x6217, 0x18FA, 0x6218, 0x6218, 0x115E, 0x6219, 0x6219, 0x3284, + 0x621A, 0x621A, 0x0BFC, 0x621B, 0x621B, 0x18FB, 0x621C, 0x621E, 0x3285, + 0x621F, 0x621F, 0x18FC, 0x6220, 0x6220, 0x3288, 0x6221, 0x6221, 0x18FE, + 0x6222, 0x6222, 0x18FD, 0x6223, 0x6223, 0x3289, 0x6224, 0x6224, 0x1900, + 0x6225, 0x6225, 0x18FF, 0x6226, 0x6226, 0x328A, 0x6227, 0x6227, 0x24A4, + 0x6228, 0x6229, 0x328B, 0x622A, 0x622A, 0x08A9, 0x622B, 0x622B, 0x328D, + 0x622C, 0x622C, 0x1901, 0x622D, 0x622D, 0x328E, 0x622E, 0x622E, 0x0A65, + 0x622F, 0x622F, 0x328F, 0x6230, 0x6230, 0x2273, 0x6231, 0x6231, 0x3290, + 0x6232, 0x6232, 0x21B0, 0x6233, 0x6233, 0x0544, 0x6234, 0x6234, 0x057A, + 0x6235, 0x6236, 0x3291, 0x6237, 0x6237, 0x07BC, 0x6238, 0x623C, 0x3293, + 0x623D, 0x623D, 0x19F4, 0x623E, 0x623E, 0x19F3, 0x623F, 0x623F, 0x065C, + 0x6240, 0x6240, 0x0DEE, 0x6241, 0x6241, 0x044B, 0x6242, 0x6242, 0x3298, + 0x6243, 0x6243, 0x19F5, 0x6244, 0x6246, 0x3299, 0x6247, 0x6247, 0x0D01, + 0x6248, 0x6249, 0x19F6, 0x624A, 0x624A, 0x329C, 0x624B, 0x624B, 0x0D6D, + 0x624C, 0x624C, 0x14BA, 0x624D, 0x624D, 0x048C, 0x624E, 0x624E, 0x113D, + 0x624F, 0x6250, 0x329D, 0x6251, 0x6251, 0x0BEA, 0x6252, 0x6252, 0x03D2, + 0x6253, 0x6253, 0x0575, 0x6254, 0x6254, 0x0CAE, 0x6255, 0x6257, 0x329F, + 0x6258, 0x6258, 0x0E81, 0x6259, 0x625A, 0x32A2, 0x625B, 0x625B, 0x0945, + 0x625C, 0x6262, 0x32A4, 0x6263, 0x6263, 0x0968, 0x6264, 0x6265, 0x32AB, + 0x6266, 0x6266, 0x0C21, 0x6267, 0x6267, 0x11B3, 0x6268, 0x6268, 0x32AD, + 0x6269, 0x6269, 0x0994, 0x626A, 0x626A, 0x14BB, 0x626B, 0x626B, 0x0CE1, + 0x626C, 0x626C, 0x1018, 0x626D, 0x626D, 0x0B65, 0x626E, 0x626E, 0x03F2, + 0x626F, 0x626F, 0x04DB, 0x6270, 0x6270, 0x0CA0, 0x6271, 0x6272, 0x32AE, + 0x6273, 0x6273, 0x03ED, 0x6274, 0x6275, 0x32B0, 0x6276, 0x6276, 0x0693, + 0x6277, 0x6278, 0x32B2, 0x6279, 0x6279, 0x0BBB, 0x627A, 0x627B, 0x32B4, + 0x627C, 0x627C, 0x0632, 0x627D, 0x627D, 0x32B6, 0x627E, 0x627E, 0x1173, + 0x627F, 0x627F, 0x04F5, 0x6280, 0x6280, 0x082F, 0x6281, 0x6283, 0x32B7, + 0x6284, 0x6284, 0x04D2, 0x6285, 0x6288, 0x32BA, 0x6289, 0x6289, 0x0920, + 0x628A, 0x628A, 0x03DC, 0x628B, 0x6290, 0x32BE, 0x6291, 0x6291, 0x105D, + 0x6292, 0x6292, 0x0D7A, 0x6293, 0x6293, 0x1202, 0x6294, 0x6294, 0x32C4, + 0x6295, 0x6295, 0x0E67, 0x6296, 0x6296, 0x05F5, 0x6297, 0x6297, 0x0946, + 0x6298, 0x6298, 0x117C, 0x6299, 0x6299, 0x32C5, 0x629A, 0x629A, 0x06A2, + 0x629B, 0x629B, 0x0B98, 0x629C, 0x629E, 0x32C6, 0x629F, 0x629F, 0x14BC, + 0x62A0, 0x62A0, 0x0966, 0x62A1, 0x62A1, 0x0A7C, 0x62A2, 0x62A2, 0x0C3D, + 0x62A3, 0x62A3, 0x32C9, 0x62A4, 0x62A4, 0x07B9, 0x62A5, 0x62A5, 0x0411, + 0x62A6, 0x62A7, 0x32CA, 0x62A8, 0x62A8, 0x0BAB, 0x62A9, 0x62AA, 0x32CC, + 0x62AB, 0x62AB, 0x0BBC, 0x62AC, 0x62AC, 0x0DFA, 0x62AD, 0x62B0, 0x32CE, + 0x62B1, 0x62B1, 0x0410, 0x62B2, 0x62B4, 0x32D2, 0x62B5, 0x62B5, 0x05B7, + 0x62B6, 0x62B8, 0x32D5, 0x62B9, 0x62B9, 0x0B0B, 0x62BA, 0x62BA, 0x32D8, + 0x62BB, 0x62BB, 0x14BD, 0x62BC, 0x62BC, 0x0FE3, 0x62BD, 0x62BD, 0x050E, + 0x62BE, 0x62BE, 0x32D9, 0x62BF, 0x62BF, 0x0AF7, 0x62C0, 0x62C1, 0x32DA, + 0x62C2, 0x62C2, 0x0694, 0x62C3, 0x62C3, 0x32DC, 0x62C4, 0x62C4, 0x11F3, + 0x62C5, 0x62C5, 0x0584, 0x62C6, 0x62C6, 0x04B7, 0x62C7, 0x62C7, 0x0B17, + 0x62C8, 0x62C8, 0x0B4C, 0x62C9, 0x62C9, 0x0998, 0x62CA, 0x62CA, 0x14BE, + 0x62CB, 0x62CB, 0x32DD, 0x62CC, 0x62CC, 0x03F3, 0x62CD, 0x62CD, 0x0B85, + 0x62CE, 0x62CE, 0x0A29, 0x62CF, 0x62CF, 0x32DE, 0x62D0, 0x62D0, 0x072E, + 0x62D1, 0x62D1, 0x32DF, 0x62D2, 0x62D2, 0x090B, 0x62D3, 0x62D3, 0x0E89, + 0x62D4, 0x62D4, 0x03D9, 0x62D5, 0x62D5, 0x32E0, 0x62D6, 0x62D6, 0x0E80, + 0x62D7, 0x62D7, 0x14C0, 0x62D8, 0x62D8, 0x08FF, 0x62D9, 0x62D9, 0x121B, + 0x62DA, 0x62DA, 0x14BF, 0x62DB, 0x62DB, 0x1171, 0x62DC, 0x62DC, 0x03E8, + 0x62DD, 0x62DE, 0x32E1, 0x62DF, 0x62DF, 0x0B45, 0x62E0, 0x62E1, 0x32E3, + 0x62E2, 0x62E2, 0x0A4A, 0x62E3, 0x62E3, 0x0863, 0x62E4, 0x62E4, 0x32E5, + 0x62E5, 0x62E5, 0x109A, 0x62E6, 0x62E6, 0x09A4, 0x62E7, 0x62E7, 0x0B62, + 0x62E8, 0x62E8, 0x046D, 0x62E9, 0x62E9, 0x1134, 0x62EA, 0x62EB, 0x32E6, + 0x62EC, 0x62EC, 0x0993, 0x62ED, 0x62ED, 0x0D5A, 0x62EE, 0x62EE, 0x14C1, + 0x62EF, 0x62EF, 0x119D, 0x62F0, 0x62F0, 0x32E8, 0x62F1, 0x62F1, 0x0709, + 0x62F2, 0x62F2, 0x32E9, 0x62F3, 0x62F3, 0x0C88, 0x62F4, 0x62F4, 0x0D9E, + 0x62F5, 0x62F5, 0x32EA, 0x62F6, 0x62F6, 0x14C3, 0x62F7, 0x62F7, 0x094A, + 0x62F8, 0x62FB, 0x32EB, 0x62FC, 0x62FC, 0x0BD3, 0x62FD, 0x62FD, 0x1204, + 0x62FE, 0x62FE, 0x0D47, 0x62FF, 0x62FF, 0x0B26, 0x6300, 0x6300, 0x32EF, + 0x6301, 0x6301, 0x04FB, 0x6302, 0x6302, 0x072B, 0x6303, 0x6306, 0x32F0, + 0x6307, 0x6307, 0x11B7, 0x6308, 0x6308, 0x194E, 0x6309, 0x6309, 0x03BF, + 0x630A, 0x630D, 0x32F4, 0x630E, 0x630E, 0x0973, 0x630F, 0x6310, 0x32F8, + 0x6311, 0x6311, 0x0E47, 0x6312, 0x6315, 0x32FA, 0x6316, 0x6316, 0x0E8B, + 0x6317, 0x6319, 0x32FE, 0x631A, 0x631A, 0x11BE, 0x631B, 0x631B, 0x0A75, + 0x631C, 0x631C, 0x3301, 0x631D, 0x631D, 0x0EDD, 0x631E, 0x631E, 0x0DF5, + 0x631F, 0x631F, 0x0F79, 0x6320, 0x6320, 0x0B36, 0x6321, 0x6321, 0x0593, + 0x6322, 0x6322, 0x14C2, 0x6323, 0x6323, 0x1196, 0x6324, 0x6324, 0x082A, + 0x6325, 0x6325, 0x07E8, 0x6326, 0x6327, 0x3302, 0x6328, 0x6328, 0x03AF, + 0x6329, 0x6329, 0x3304, 0x632A, 0x632A, 0x0B73, 0x632B, 0x632B, 0x056F, + 0x632C, 0x632E, 0x3305, 0x632F, 0x632F, 0x1192, 0x6330, 0x6331, 0x3308, + 0x6332, 0x6332, 0x194F, 0x6333, 0x6338, 0x330A, 0x6339, 0x6339, 0x14C4, + 0x633A, 0x633A, 0x0E57, 0x633B, 0x633C, 0x3310, 0x633D, 0x633D, 0x0E9D, + 0x633E, 0x633E, 0x21D1, 0x633F, 0x6341, 0x3312, 0x6342, 0x6342, 0x0EF5, + 0x6343, 0x6343, 0x14C6, 0x6344, 0x6344, 0x3315, 0x6345, 0x6345, 0x0E62, + 0x6346, 0x6346, 0x0991, 0x6347, 0x6348, 0x3316, 0x6349, 0x6349, 0x121A, + 0x634A, 0x634A, 0x3318, 0x634B, 0x634B, 0x14C5, 0x634C, 0x634C, 0x03D1, + 0x634D, 0x634D, 0x076B, 0x634E, 0x634E, 0x0D0C, 0x634F, 0x634F, 0x0B56, + 0x6350, 0x6350, 0x0917, 0x6351, 0x6354, 0x3319, 0x6355, 0x6355, 0x047D, + 0x6356, 0x635D, 0x331D, 0x635E, 0x635E, 0x09B7, 0x635F, 0x635F, 0x0DE5, + 0x6360, 0x6360, 0x3325, 0x6361, 0x6361, 0x0864, 0x6362, 0x6362, 0x07D0, + 0x6363, 0x6363, 0x0598, 0x6364, 0x6366, 0x3326, 0x6367, 0x6367, 0x0BB6, + 0x6368, 0x6368, 0x211C, 0x6369, 0x6369, 0x14D0, 0x636A, 0x636A, 0x3329, + 0x636B, 0x636B, 0x235D, 0x636C, 0x636C, 0x332A, 0x636D, 0x636D, 0x14CD, + 0x636E, 0x636E, 0x090C, 0x636F, 0x6370, 0x332B, 0x6371, 0x6371, 0x14C9, + 0x6372, 0x6372, 0x2682, 0x6373, 0x6375, 0x332D, 0x6376, 0x6376, 0x053A, + 0x6377, 0x6377, 0x08AE, 0x6378, 0x6379, 0x3330, 0x637A, 0x637A, 0x14CA, + 0x637B, 0x637B, 0x0B50, 0x637C, 0x637F, 0x3332, 0x6380, 0x6380, 0x0F33, + 0x6381, 0x6381, 0x3336, 0x6382, 0x6382, 0x05C1, 0x6383, 0x6383, 0x210D, + 0x6384, 0x6384, 0x205A, 0x6385, 0x6386, 0x3337, 0x6387, 0x6387, 0x061D, + 0x6388, 0x6388, 0x0D71, 0x6389, 0x6389, 0x05D5, 0x638A, 0x638A, 0x14CF, + 0x638B, 0x638B, 0x3339, 0x638C, 0x638C, 0x1167, 0x638D, 0x638D, 0x333A, + 0x638E, 0x638E, 0x14CB, 0x638F, 0x638F, 0x0E20, 0x6390, 0x6390, 0x0C1D, + 0x6391, 0x6391, 0x333B, 0x6392, 0x6392, 0x0B86, 0x6393, 0x6395, 0x333C, + 0x6396, 0x6396, 0x103B, 0x6397, 0x6397, 0x333F, 0x6398, 0x6398, 0x0921, + 0x6399, 0x639F, 0x3340, 0x63A0, 0x63A0, 0x0A7A, 0x63A1, 0x63A1, 0x3347, + 0x63A2, 0x63A2, 0x0E10, 0x63A3, 0x63A3, 0x04DD, 0x63A4, 0x63A4, 0x3348, + 0x63A5, 0x63A5, 0x08A4, 0x63A6, 0x63A6, 0x3349, 0x63A7, 0x63A7, 0x0965, + 0x63A8, 0x63A8, 0x0E77, 0x63A9, 0x63A9, 0x1003, 0x63AA, 0x63AA, 0x056E, + 0x63AB, 0x63AB, 0x334A, 0x63AC, 0x63AC, 0x14CE, 0x63AD, 0x63AD, 0x14C7, + 0x63AE, 0x63AE, 0x14D1, 0x63AF, 0x63AF, 0x334B, 0x63B0, 0x63B0, 0x1950, + 0x63B1, 0x63B2, 0x334C, 0x63B3, 0x63B3, 0x0A57, 0x63B4, 0x63B4, 0x14CC, + 0x63B5, 0x63B6, 0x334E, 0x63B7, 0x63B7, 0x11BF, 0x63B8, 0x63B8, 0x0588, + 0x63B9, 0x63B9, 0x3350, 0x63BA, 0x63BA, 0x04BB, 0x63BB, 0x63BB, 0x3351, + 0x63BC, 0x63BC, 0x14D2, 0x63BD, 0x63BD, 0x3352, 0x63BE, 0x63BE, 0x14DC, + 0x63BF, 0x63BF, 0x3353, 0x63C0, 0x63C0, 0x1F8D, 0x63C1, 0x63C3, 0x3354, + 0x63C4, 0x63C4, 0x14D7, 0x63C5, 0x63C5, 0x3357, 0x63C6, 0x63C6, 0x14DB, + 0x63C7, 0x63C8, 0x3358, 0x63C9, 0x63C9, 0x0CBB, 0x63CA, 0x63CC, 0x335A, + 0x63CD, 0x63CD, 0x123E, 0x63CE, 0x63CE, 0x14D9, 0x63CF, 0x63CF, 0x0AED, + 0x63D0, 0x63D0, 0x0E34, 0x63D1, 0x63D1, 0x335D, 0x63D2, 0x63D2, 0x04AC, + 0x63D3, 0x63D5, 0x335E, 0x63D6, 0x63D6, 0x1045, 0x63D7, 0x63D9, 0x3361, + 0x63DA, 0x63DA, 0x21FF, 0x63DB, 0x63DD, 0x3364, 0x63DE, 0x63DE, 0x14D8, + 0x63DF, 0x63DF, 0x3367, 0x63E0, 0x63E0, 0x14D5, 0x63E1, 0x63E1, 0x0EE4, + 0x63E2, 0x63E2, 0x3368, 0x63E3, 0x63E3, 0x052A, 0x63E4, 0x63E8, 0x3369, + 0x63E9, 0x63E9, 0x0938, 0x63EA, 0x63EA, 0x08ED, 0x63EB, 0x63EC, 0x336E, + 0x63ED, 0x63ED, 0x08A3, 0x63EE, 0x63EE, 0x1F58, 0x63EF, 0x63F1, 0x3370, + 0x63F2, 0x63F2, 0x14D3, 0x63F3, 0x63F3, 0x3373, 0x63F4, 0x63F4, 0x10F1, + 0x63F5, 0x63F5, 0x3374, 0x63F6, 0x63F6, 0x14C8, 0x63F7, 0x63F7, 0x3375, + 0x63F8, 0x63F8, 0x14D4, 0x63F9, 0x63FC, 0x3376, 0x63FD, 0x63FD, 0x09AA, + 0x63FE, 0x63FE, 0x337A, 0x63FF, 0x63FF, 0x14D6, 0x6400, 0x6400, 0x04BA, + 0x6401, 0x6401, 0x06E4, 0x6402, 0x6402, 0x0A4E, 0x6403, 0x6404, 0x337B, + 0x6405, 0x6405, 0x0892, 0x6406, 0x640A, 0x337D, 0x640B, 0x640B, 0x14DF, + 0x640C, 0x640C, 0x14E2, 0x640D, 0x640D, 0x215B, 0x640E, 0x640E, 0x3382, + 0x640F, 0x640F, 0x0472, 0x6410, 0x6410, 0x0527, 0x6411, 0x6412, 0x3383, + 0x6413, 0x6413, 0x056D, 0x6414, 0x6414, 0x0CDF, 0x6415, 0x6416, 0x3385, + 0x6417, 0x6417, 0x1EB6, 0x6418, 0x641A, 0x3387, 0x641B, 0x641B, 0x14E0, + 0x641C, 0x641C, 0x0DC6, 0x641D, 0x641D, 0x338A, 0x641E, 0x641E, 0x06DE, + 0x641F, 0x641F, 0x338B, 0x6420, 0x6420, 0x14E1, 0x6421, 0x6421, 0x14E4, + 0x6422, 0x6425, 0x338C, 0x6426, 0x6426, 0x14E3, 0x6427, 0x6429, 0x3390, + 0x642A, 0x642A, 0x0E15, 0x642B, 0x642B, 0x3393, 0x642C, 0x642C, 0x03EC, + 0x642D, 0x642D, 0x0571, 0x642E, 0x6433, 0x3394, 0x6434, 0x6434, 0x1736, + 0x6435, 0x6435, 0x339A, 0x6436, 0x6436, 0x20DB, 0x6437, 0x6439, 0x339B, + 0x643A, 0x643A, 0x0F7A, 0x643B, 0x643C, 0x339E, 0x643D, 0x643D, 0x04B2, + 0x643E, 0x643E, 0x33A0, 0x643F, 0x643F, 0x1951, 0x6440, 0x6440, 0x33A1, + 0x6441, 0x6441, 0x14DE, 0x6442, 0x6443, 0x33A2, 0x6444, 0x6444, 0x0D1C, + 0x6445, 0x6445, 0x14DD, 0x6446, 0x6446, 0x03E5, 0x6447, 0x6447, 0x1028, + 0x6448, 0x6448, 0x0460, 0x6449, 0x6449, 0x33A4, 0x644A, 0x644A, 0x0E02, + 0x644B, 0x6450, 0x33A5, 0x6451, 0x6451, 0x2360, 0x6452, 0x6452, 0x14DA, + 0x6453, 0x6453, 0x33AB, 0x6454, 0x6454, 0x0D99, 0x6455, 0x6457, 0x33AC, + 0x6458, 0x6458, 0x114B, 0x6459, 0x645B, 0x33AF, 0x645C, 0x645C, 0x2361, + 0x645D, 0x645D, 0x33B2, 0x645E, 0x645E, 0x14E5, 0x645F, 0x645F, 0x2040, + 0x6460, 0x6466, 0x33B3, 0x6467, 0x6467, 0x0560, 0x6468, 0x6468, 0x33BA, + 0x6469, 0x6469, 0x0B09, 0x646A, 0x646C, 0x33BB, 0x646D, 0x646D, 0x14E7, + 0x646E, 0x646E, 0x33BE, 0x646F, 0x646F, 0x228E, 0x6470, 0x6472, 0x33BF, + 0x6473, 0x6473, 0x1FDF, 0x6474, 0x6475, 0x33C2, 0x6476, 0x6476, 0x235E, + 0x6477, 0x6477, 0x33C4, 0x6478, 0x6479, 0x0B03, 0x647A, 0x647A, 0x14E9, + 0x647B, 0x647B, 0x1E6A, 0x647C, 0x6481, 0x33C5, 0x6482, 0x6482, 0x0A15, + 0x6483, 0x6483, 0x33CB, 0x6484, 0x6484, 0x14E6, 0x6485, 0x6485, 0x091E, + 0x6486, 0x6486, 0x33CC, 0x6487, 0x6487, 0x0BD1, 0x6488, 0x6488, 0x2002, + 0x6489, 0x6490, 0x33CD, 0x6491, 0x6491, 0x04EA, 0x6492, 0x6492, 0x0CD1, + 0x6493, 0x6493, 0x2093, 0x6494, 0x6494, 0x33D5, 0x6495, 0x6495, 0x0DAF, + 0x6496, 0x6496, 0x14E8, 0x6497, 0x6498, 0x33D6, 0x6499, 0x6499, 0x14EC, + 0x649A, 0x649D, 0x33D8, 0x649E, 0x649E, 0x120F, 0x649F, 0x649F, 0x235F, + 0x64A0, 0x64A2, 0x33DC, 0x64A3, 0x64A3, 0x1EAC, 0x64A4, 0x64A4, 0x04DC, + 0x64A5, 0x64A5, 0x1E54, 0x64A6, 0x64A8, 0x33DF, 0x64A9, 0x64A9, 0x0A0C, + 0x64AA, 0x64AA, 0x33E2, 0x64AB, 0x64AB, 0x1F08, 0x64AC, 0x64AC, 0x0C48, + 0x64AD, 0x64AD, 0x046C, 0x64AE, 0x64AE, 0x056C, 0x64AF, 0x64AF, 0x33E3, + 0x64B0, 0x64B0, 0x1208, 0x64B1, 0x64B1, 0x33E4, 0x64B2, 0x64B2, 0x20C0, + 0x64B3, 0x64B3, 0x2362, 0x64B4, 0x64B4, 0x33E5, 0x64B5, 0x64B5, 0x0B4F, + 0x64B6, 0x64B6, 0x33E6, 0x64B7, 0x64B8, 0x14EA, 0x64B9, 0x64B9, 0x33E7, + 0x64BA, 0x64BA, 0x14ED, 0x64BB, 0x64BB, 0x2160, 0x64BC, 0x64BC, 0x076A, + 0x64BD, 0x64BD, 0x33E8, 0x64BE, 0x64BE, 0x219D, 0x64BF, 0x64BF, 0x1F8E, + 0x64C0, 0x64C0, 0x14EE, 0x64C1, 0x64C1, 0x222D, 0x64C2, 0x64C2, 0x09C9, + 0x64C3, 0x64C3, 0x33E9, 0x64C4, 0x64C4, 0x2047, 0x64C5, 0x64C5, 0x0CFC, + 0x64C6, 0x64C6, 0x33EA, 0x64C7, 0x64C7, 0x2262, 0x64C8, 0x64C9, 0x33EB, + 0x64CA, 0x64CA, 0x1F67, 0x64CB, 0x64CB, 0x1EB2, 0x64CC, 0x64CC, 0x33ED, + 0x64CD, 0x64CD, 0x04A0, 0x64CE, 0x64CE, 0x0C63, 0x64CF, 0x64CF, 0x33EE, + 0x64D0, 0x64D0, 0x14EF, 0x64D1, 0x64D1, 0x33EF, 0x64D2, 0x64D2, 0x0C59, + 0x64D3, 0x64D3, 0x33F0, 0x64D4, 0x64D4, 0x1EA9, 0x64D5, 0x64D6, 0x33F1, + 0x64D7, 0x64D7, 0x14F0, 0x64D8, 0x64D8, 0x1952, 0x64D9, 0x64D9, 0x33F3, + 0x64DA, 0x64DA, 0x1FCC, 0x64DB, 0x64DD, 0x33F4, 0x64DE, 0x64DE, 0x0DC8, + 0x64DF, 0x64DF, 0x33F7, 0x64E0, 0x64E0, 0x1F72, 0x64E1, 0x64E1, 0x33F8, + 0x64E2, 0x64E2, 0x14F2, 0x64E3, 0x64E3, 0x33F9, 0x64E4, 0x64E4, 0x14F1, + 0x64E5, 0x64E5, 0x33FA, 0x64E6, 0x64E6, 0x0488, 0x64E7, 0x64EB, 0x33FB, + 0x64EC, 0x64EC, 0x2098, 0x64ED, 0x64EE, 0x3400, 0x64EF, 0x64EF, 0x1E52, + 0x64F0, 0x64F0, 0x20A4, 0x64F1, 0x64F1, 0x1F1C, 0x64F2, 0x64F2, 0x228F, + 0x64F3, 0x64F3, 0x3402, 0x64F4, 0x64F4, 0x1FED, 0x64F5, 0x64F6, 0x3403, + 0x64F7, 0x64F7, 0x2365, 0x64F8, 0x64F9, 0x3405, 0x64FA, 0x64FA, 0x1E2D, + 0x64FB, 0x64FB, 0x2152, 0x64FC, 0x64FC, 0x2366, 0x64FD, 0x64FD, 0x3407, + 0x64FE, 0x64FE, 0x20FA, 0x64FF, 0x64FF, 0x3408, 0x6500, 0x6500, 0x0B8B, + 0x6501, 0x6503, 0x3409, 0x6504, 0x6504, 0x2363, 0x6505, 0x6505, 0x340C, + 0x6506, 0x6506, 0x209A, 0x6507, 0x6508, 0x340D, 0x6509, 0x6509, 0x14F3, + 0x650A, 0x650E, 0x340F, 0x650F, 0x650F, 0x203C, 0x6510, 0x6511, 0x3414, + 0x6512, 0x6512, 0x111F, 0x6513, 0x6513, 0x3416, 0x6514, 0x6514, 0x1FF6, + 0x6515, 0x6515, 0x3417, 0x6516, 0x6516, 0x2364, 0x6517, 0x6517, 0x3418, + 0x6518, 0x6518, 0x0C9C, 0x6519, 0x6519, 0x1E69, 0x651A, 0x651A, 0x3419, + 0x651B, 0x651B, 0x2367, 0x651C, 0x651C, 0x341A, 0x651D, 0x651D, 0x211D, + 0x651E, 0x6521, 0x341B, 0x6522, 0x6522, 0x2259, 0x6523, 0x6523, 0x2056, + 0x6524, 0x6524, 0x2163, 0x6525, 0x6525, 0x14F4, 0x6526, 0x6529, 0x341F, + 0x652A, 0x652A, 0x1FA9, 0x652B, 0x652B, 0x091F, 0x652C, 0x652C, 0x1FFC, + 0x652D, 0x652D, 0x3423, 0x652E, 0x652E, 0x14F5, 0x652F, 0x652F, 0x11A6, + 0x6530, 0x6533, 0x3424, 0x6534, 0x6534, 0x1909, 0x6535, 0x6535, 0x1966, + 0x6536, 0x6536, 0x0D6C, 0x6537, 0x6537, 0x3428, 0x6538, 0x6538, 0x12B2, + 0x6539, 0x6539, 0x06BF, 0x653A, 0x653A, 0x3429, 0x653B, 0x653B, 0x06FE, + 0x653C, 0x653D, 0x342A, 0x653E, 0x653E, 0x0662, 0x653F, 0x653F, 0x119F, + 0x6540, 0x6544, 0x342C, 0x6545, 0x6545, 0x0723, 0x6546, 0x6547, 0x3431, + 0x6548, 0x6548, 0x0F72, 0x6549, 0x6549, 0x1CCB, 0x654A, 0x654B, 0x3433, + 0x654C, 0x654C, 0x05B1, 0x654D, 0x654E, 0x3435, 0x654F, 0x654F, 0x0AF9, + 0x6550, 0x6550, 0x3437, 0x6551, 0x6551, 0x08F7, 0x6552, 0x6554, 0x3438, + 0x6555, 0x6555, 0x1967, 0x6556, 0x6556, 0x03C8, 0x6557, 0x6557, 0x1E2E, + 0x6558, 0x6558, 0x343B, 0x6559, 0x6559, 0x089D, 0x655A, 0x655A, 0x343C, + 0x655B, 0x655B, 0x09FB, 0x655C, 0x655C, 0x343D, 0x655D, 0x655D, 0x043F, + 0x655E, 0x655E, 0x04CD, 0x655F, 0x6561, 0x343E, 0x6562, 0x6562, 0x06CD, + 0x6563, 0x6563, 0x0CDB, 0x6564, 0x6565, 0x3441, 0x6566, 0x6566, 0x0617, + 0x6567, 0x656A, 0x3443, 0x656B, 0x656B, 0x1968, 0x656C, 0x656C, 0x08E3, + 0x656D, 0x656F, 0x3447, 0x6570, 0x6570, 0x0D94, 0x6571, 0x6571, 0x344A, + 0x6572, 0x6572, 0x0C40, 0x6573, 0x6573, 0x344B, 0x6574, 0x6574, 0x119C, + 0x6575, 0x6575, 0x1EBC, 0x6576, 0x6576, 0x344C, 0x6577, 0x6577, 0x0690, + 0x6578, 0x6578, 0x2142, 0x6579, 0x6581, 0x344D, 0x6582, 0x6582, 0x201E, + 0x6583, 0x6583, 0x1E43, 0x6584, 0x6586, 0x3456, 0x6587, 0x6587, 0x0ED3, + 0x6588, 0x658A, 0x3459, 0x658B, 0x658B, 0x114C, 0x658C, 0x658C, 0x045C, + 0x658D, 0x658F, 0x345C, 0x6590, 0x6590, 0x19C1, 0x6591, 0x6591, 0x03EA, + 0x6592, 0x6592, 0x345F, 0x6593, 0x6593, 0x19C3, 0x6594, 0x6594, 0x3460, + 0x6595, 0x6595, 0x24D4, 0x6596, 0x6596, 0x3461, 0x6597, 0x6597, 0x05F6, + 0x6598, 0x6598, 0x3462, 0x6599, 0x6599, 0x0A18, 0x659A, 0x659A, 0x3463, + 0x659B, 0x659B, 0x1D56, 0x659C, 0x659C, 0x0F7C, 0x659D, 0x659E, 0x3464, + 0x659F, 0x659F, 0x1186, 0x65A0, 0x65A0, 0x3466, 0x65A1, 0x65A1, 0x0EE2, + 0x65A2, 0x65A3, 0x3467, 0x65A4, 0x65A4, 0x08C0, 0x65A5, 0x65A5, 0x0507, + 0x65A6, 0x65A6, 0x3469, 0x65A7, 0x65A7, 0x06A6, 0x65A8, 0x65A8, 0x346A, + 0x65A9, 0x65A9, 0x1157, 0x65AA, 0x65AA, 0x346B, 0x65AB, 0x65AB, 0x1A29, + 0x65AC, 0x65AC, 0x226F, 0x65AD, 0x65AD, 0x060E, 0x65AE, 0x65AE, 0x346C, + 0x65AF, 0x65AF, 0x0DAE, 0x65B0, 0x65B0, 0x0F8D, 0x65B1, 0x65B6, 0x346D, + 0x65B7, 0x65B7, 0x1ED7, 0x65B8, 0x65B8, 0x3473, 0x65B9, 0x65B9, 0x065A, + 0x65BA, 0x65BB, 0x3474, 0x65BC, 0x65BC, 0x19C4, 0x65BD, 0x65BD, 0x0D40, + 0x65BE, 0x65C0, 0x3476, 0x65C1, 0x65C1, 0x0B95, 0x65C2, 0x65C2, 0x3479, + 0x65C3, 0x65C3, 0x19C7, 0x65C4, 0x65C4, 0x19C6, 0x65C5, 0x65C5, 0x0A6A, + 0x65C6, 0x65C6, 0x19C5, 0x65C7, 0x65CA, 0x347A, 0x65CB, 0x65CB, 0x0FC8, + 0x65CC, 0x65CC, 0x19C8, 0x65CD, 0x65CD, 0x347E, 0x65CE, 0x65CE, 0x19C9, + 0x65CF, 0x65CF, 0x1242, 0x65D0, 0x65D1, 0x347F, 0x65D2, 0x65D2, 0x19CA, + 0x65D3, 0x65D5, 0x3481, 0x65D6, 0x65D6, 0x19CB, 0x65D7, 0x65D7, 0x0C0B, + 0x65D8, 0x65DF, 0x3484, 0x65E0, 0x65E0, 0x0EED, 0x65E1, 0x65E1, 0x348C, + 0x65E2, 0x65E2, 0x083B, 0x65E3, 0x65E4, 0x348D, 0x65E5, 0x65E5, 0x0CB0, + 0x65E6, 0x65E6, 0x058A, 0x65E7, 0x65E7, 0x08F8, 0x65E8, 0x65E8, 0x11BB, + 0x65E9, 0x65E9, 0x112A, 0x65EA, 0x65EB, 0x348F, 0x65EC, 0x65EC, 0x0FD7, + 0x65ED, 0x65ED, 0x0FBC, 0x65EE, 0x65F0, 0x190A, 0x65F1, 0x65F1, 0x076C, + 0x65F2, 0x65F5, 0x3491, 0x65F6, 0x65F6, 0x0D48, 0x65F7, 0x65F7, 0x0982, + 0x65F8, 0x65F9, 0x3495, 0x65FA, 0x65FA, 0x0EAB, 0x65FB, 0x65FF, 0x3497, + 0x6600, 0x6600, 0x1912, 0x6601, 0x6601, 0x349C, 0x6602, 0x6602, 0x03C5, + 0x6603, 0x6603, 0x1910, 0x6604, 0x6605, 0x349D, 0x6606, 0x6606, 0x0990, + 0x6607, 0x6609, 0x349F, 0x660A, 0x660A, 0x190D, 0x660B, 0x660B, 0x34A2, + 0x660C, 0x660C, 0x04C4, 0x660D, 0x660D, 0x34A3, 0x660E, 0x660E, 0x0AFC, + 0x660F, 0x660F, 0x07FD, 0x6610, 0x6612, 0x34A4, 0x6613, 0x6613, 0x105E, + 0x6614, 0x6614, 0x0F03, 0x6615, 0x6615, 0x1911, 0x6616, 0x6618, 0x34A7, + 0x6619, 0x6619, 0x190E, 0x661A, 0x661C, 0x34AA, 0x661D, 0x661D, 0x1915, + 0x661E, 0x661E, 0x34AD, 0x661F, 0x661F, 0x0F92, 0x6620, 0x6620, 0x1098, + 0x6621, 0x6624, 0x34AE, 0x6625, 0x6625, 0x053D, 0x6626, 0x6626, 0x34B2, + 0x6627, 0x6627, 0x0AC6, 0x6628, 0x6628, 0x124F, 0x6629, 0x662C, 0x34B3, + 0x662D, 0x662D, 0x1172, 0x662E, 0x662E, 0x34B7, 0x662F, 0x662F, 0x0D5E, + 0x6630, 0x6630, 0x34B8, 0x6631, 0x6631, 0x1917, 0x6632, 0x6633, 0x34B9, + 0x6634, 0x6634, 0x1916, 0x6635, 0x6635, 0x1919, 0x6636, 0x6636, 0x1918, + 0x6637, 0x663B, 0x34BB, 0x663C, 0x663C, 0x11E6, 0x663D, 0x663D, 0x34C0, + 0x663E, 0x663E, 0x0F41, 0x663F, 0x6640, 0x34C1, 0x6641, 0x6641, 0x191D, + 0x6642, 0x6642, 0x212D, 0x6643, 0x6643, 0x07E3, 0x6644, 0x664A, 0x34C3, + 0x664B, 0x664B, 0x08CB, 0x664C, 0x664C, 0x0D07, 0x664D, 0x664E, 0x34CA, + 0x664F, 0x664F, 0x191E, 0x6650, 0x6651, 0x34CC, 0x6652, 0x6652, 0x0CF2, + 0x6653, 0x6653, 0x0F6B, 0x6654, 0x6654, 0x191C, 0x6655, 0x6655, 0x1111, + 0x6656, 0x6656, 0x191F, 0x6657, 0x6657, 0x1921, 0x6658, 0x6659, 0x34CE, + 0x665A, 0x665A, 0x0E9E, 0x665B, 0x665C, 0x34D0, 0x665D, 0x665D, 0x229B, + 0x665E, 0x665E, 0x34D2, 0x665F, 0x665F, 0x191B, 0x6660, 0x6660, 0x34D3, + 0x6661, 0x6661, 0x1920, 0x6662, 0x6663, 0x34D4, 0x6664, 0x6664, 0x0EFD, + 0x6665, 0x6665, 0x34D6, 0x6666, 0x6666, 0x07F3, 0x6667, 0x6667, 0x34D7, + 0x6668, 0x6668, 0x04E4, 0x6669, 0x666D, 0x34D8, 0x666E, 0x666E, 0x0BF4, + 0x666F, 0x666F, 0x08DF, 0x6670, 0x6670, 0x0F09, 0x6671, 0x6673, 0x34DD, + 0x6674, 0x6674, 0x0C64, 0x6675, 0x6675, 0x34E0, 0x6676, 0x6676, 0x08D6, + 0x6677, 0x6677, 0x1922, 0x6678, 0x6679, 0x34E1, 0x667A, 0x667A, 0x11C6, + 0x667B, 0x667D, 0x34E3, 0x667E, 0x667E, 0x0A09, 0x667F, 0x6681, 0x34E6, + 0x6682, 0x6682, 0x1120, 0x6683, 0x6683, 0x34E9, 0x6684, 0x6684, 0x1923, + 0x6685, 0x6686, 0x34EA, 0x6687, 0x6687, 0x0F2B, 0x6688, 0x6688, 0x2256, + 0x6689, 0x6689, 0x24A8, 0x668A, 0x668B, 0x34EC, 0x668C, 0x668C, 0x1924, + 0x668D, 0x6690, 0x34EE, 0x6691, 0x6691, 0x0D85, 0x6692, 0x6695, 0x34F2, + 0x6696, 0x6696, 0x0B70, 0x6697, 0x6697, 0x03C0, 0x6698, 0x669C, 0x34F6, + 0x669D, 0x669D, 0x1926, 0x669E, 0x66A1, 0x34FB, 0x66A2, 0x66A2, 0x1E79, + 0x66A3, 0x66A6, 0x34FF, 0x66A7, 0x66A7, 0x1925, 0x66A8, 0x66A8, 0x1CDD, + 0x66A9, 0x66AA, 0x3503, 0x66AB, 0x66AB, 0x225A, 0x66AC, 0x66AD, 0x3505, + 0x66AE, 0x66AE, 0x0B1D, 0x66AF, 0x66B3, 0x3507, 0x66B4, 0x66B4, 0x0412, + 0x66B5, 0x66B8, 0x350C, 0x66B9, 0x66B9, 0x175B, 0x66BA, 0x66BD, 0x3510, + 0x66BE, 0x66BE, 0x1927, 0x66BF, 0x66C3, 0x3514, 0x66C4, 0x66C4, 0x24A7, + 0x66C5, 0x66C5, 0x3519, 0x66C6, 0x66C6, 0x2686, 0x66C7, 0x66C7, 0x24A6, + 0x66C8, 0x66C8, 0x351A, 0x66C9, 0x66C9, 0x21CE, 0x66CA, 0x66D5, 0x351B, + 0x66D6, 0x66D6, 0x24A9, 0x66D7, 0x66D8, 0x3527, 0x66D9, 0x66D9, 0x0D86, + 0x66DA, 0x66DA, 0x3529, 0x66DB, 0x66DC, 0x1928, 0x66DD, 0x66DD, 0x0BF7, + 0x66DE, 0x66DF, 0x352A, 0x66E0, 0x66E0, 0x1FE7, 0x66E1, 0x66E5, 0x352C, + 0x66E6, 0x66E6, 0x192A, 0x66E7, 0x66E8, 0x3531, 0x66E9, 0x66E9, 0x192B, + 0x66EA, 0x66EB, 0x3533, 0x66EC, 0x66EC, 0x2112, 0x66ED, 0x66EF, 0x3535, + 0x66F0, 0x66F0, 0x10FE, 0x66F1, 0x66F1, 0x3538, 0x66F2, 0x66F2, 0x0C77, + 0x66F3, 0x66F3, 0x103E, 0x66F4, 0x66F4, 0x06F7, 0x66F5, 0x66F6, 0x3539, + 0x66F7, 0x66F7, 0x1914, 0x66F8, 0x66F8, 0x213C, 0x66F9, 0x66F9, 0x04A3, + 0x66FA, 0x66FB, 0x353B, 0x66FC, 0x66FC, 0x0AA3, 0x66FD, 0x66FD, 0x353D, + 0x66FE, 0x66FE, 0x113B, 0x66FF, 0x66FF, 0x0E39, 0x6700, 0x6700, 0x124B, + 0x6701, 0x6702, 0x353E, 0x6703, 0x6703, 0x1F5C, 0x6704, 0x6707, 0x3540, + 0x6708, 0x6708, 0x1105, 0x6709, 0x6709, 0x10B5, 0x670A, 0x670A, 0x1973, + 0x670B, 0x670B, 0x0BB4, 0x670C, 0x670C, 0x3544, 0x670D, 0x670D, 0x069B, + 0x670E, 0x670F, 0x3545, 0x6710, 0x6710, 0x1984, 0x6711, 0x6713, 0x3547, + 0x6714, 0x6714, 0x0DAC, 0x6715, 0x6715, 0x198E, 0x6716, 0x6716, 0x354A, + 0x6717, 0x6717, 0x09B5, 0x6718, 0x671A, 0x354B, 0x671B, 0x671B, 0x0EAC, + 0x671C, 0x671C, 0x354E, 0x671D, 0x671D, 0x04D4, 0x671E, 0x671E, 0x354F, + 0x671F, 0x671F, 0x0BF9, 0x6720, 0x6725, 0x3550, 0x6726, 0x6726, 0x19AC, + 0x6727, 0x6727, 0x24C4, 0x6728, 0x6728, 0x0B21, 0x6729, 0x6729, 0x3556, + 0x672A, 0x672A, 0x0EC3, 0x672B, 0x672B, 0x0B0C, 0x672C, 0x672C, 0x0427, + 0x672D, 0x672D, 0x1140, 0x672E, 0x672E, 0x3557, 0x672F, 0x672F, 0x0D8C, + 0x6730, 0x6730, 0x3558, 0x6731, 0x6731, 0x11EB, 0x6732, 0x6733, 0x3559, + 0x6734, 0x6734, 0x0BF2, 0x6735, 0x6735, 0x0623, 0x6736, 0x6739, 0x355B, + 0x673A, 0x673A, 0x080F, 0x673B, 0x673C, 0x355F, 0x673D, 0x673D, 0x0FAB, + 0x673E, 0x673F, 0x3561, 0x6740, 0x6740, 0x0CEA, 0x6741, 0x6741, 0x3563, + 0x6742, 0x6742, 0x1116, 0x6743, 0x6743, 0x0C83, 0x6744, 0x6745, 0x3564, + 0x6746, 0x6746, 0x06C6, 0x6747, 0x6747, 0x3566, 0x6748, 0x6748, 0x1854, + 0x6749, 0x6749, 0x0CF5, 0x674A, 0x674B, 0x3567, 0x674C, 0x674C, 0x1851, + 0x674D, 0x674D, 0x3569, 0x674E, 0x674E, 0x09D9, 0x674F, 0x674F, 0x0F9E, + 0x6750, 0x6750, 0x048B, 0x6751, 0x6751, 0x0568, 0x6752, 0x6752, 0x356A, + 0x6753, 0x6753, 0x1852, 0x6754, 0x6755, 0x356B, 0x6756, 0x6756, 0x1169, + 0x6757, 0x675B, 0x356D, 0x675C, 0x675C, 0x0604, 0x675D, 0x675D, 0x3572, + 0x675E, 0x675E, 0x1853, 0x675F, 0x675F, 0x0D8F, 0x6760, 0x6760, 0x06D7, + 0x6761, 0x6761, 0x0E48, 0x6762, 0x6764, 0x3573, 0x6765, 0x6765, 0x099F, + 0x6766, 0x6767, 0x3576, 0x6768, 0x6768, 0x1017, 0x6769, 0x6769, 0x1855, + 0x676A, 0x676A, 0x1858, 0x676B, 0x676C, 0x3578, 0x676D, 0x676D, 0x0773, + 0x676E, 0x676E, 0x357A, 0x676F, 0x676F, 0x0416, 0x6770, 0x6770, 0x08AD, + 0x6771, 0x6771, 0x1ECC, 0x6772, 0x6772, 0x190F, 0x6773, 0x6773, 0x1859, + 0x6774, 0x6774, 0x357B, 0x6775, 0x6775, 0x185C, 0x6776, 0x6776, 0x357C, + 0x6777, 0x6777, 0x1861, 0x6778, 0x677B, 0x357D, 0x677C, 0x677C, 0x1862, + 0x677D, 0x677D, 0x3581, 0x677E, 0x677E, 0x0DBE, 0x677F, 0x677F, 0x03F0, + 0x6780, 0x6780, 0x3582, 0x6781, 0x6781, 0x081E, 0x6782, 0x6783, 0x3583, + 0x6784, 0x6784, 0x0712, 0x6785, 0x6786, 0x3585, 0x6787, 0x6787, 0x1857, + 0x6788, 0x6788, 0x3587, 0x6789, 0x6789, 0x0EA8, 0x678A, 0x678A, 0x3588, + 0x678B, 0x678B, 0x1860, 0x678C, 0x678F, 0x3589, 0x6790, 0x6790, 0x0F05, + 0x6791, 0x6794, 0x358D, 0x6795, 0x6795, 0x118E, 0x6796, 0x6796, 0x3591, + 0x6797, 0x6797, 0x0A1F, 0x6798, 0x6798, 0x185A, 0x6799, 0x6799, 0x3592, + 0x679A, 0x679A, 0x0ABB, 0x679B, 0x679B, 0x3593, 0x679C, 0x679C, 0x0754, + 0x679D, 0x679D, 0x11A5, 0x679E, 0x679E, 0x185E, 0x679F, 0x67A1, 0x3594, + 0x67A2, 0x67A2, 0x0D77, 0x67A3, 0x67A3, 0x1129, 0x67A4, 0x67A4, 0x3597, + 0x67A5, 0x67A5, 0x1856, 0x67A6, 0x67A6, 0x3598, 0x67A7, 0x67A7, 0x185B, + 0x67A8, 0x67A8, 0x185D, 0x67A9, 0x67A9, 0x3599, 0x67AA, 0x67AA, 0x0C36, + 0x67AB, 0x67AB, 0x0680, 0x67AC, 0x67AC, 0x359A, 0x67AD, 0x67AD, 0x185F, + 0x67AE, 0x67AE, 0x359B, 0x67AF, 0x67AF, 0x096A, 0x67B0, 0x67B0, 0x1868, + 0x67B1, 0x67B2, 0x359C, 0x67B3, 0x67B3, 0x186D, 0x67B4, 0x67B4, 0x359E, + 0x67B5, 0x67B5, 0x186B, 0x67B6, 0x67B6, 0x084F, 0x67B7, 0x67B7, 0x0842, + 0x67B8, 0x67B8, 0x1871, 0x67B9, 0x67C0, 0x359F, 0x67C1, 0x67C1, 0x1874, + 0x67C2, 0x67C2, 0x35A7, 0x67C3, 0x67C3, 0x1870, 0x67C4, 0x67C4, 0x0463, + 0x67C5, 0x67CE, 0x35A8, 0x67CF, 0x67CF, 0x03E3, 0x67D0, 0x67D0, 0x0B16, + 0x67D1, 0x67D1, 0x06C7, 0x67D2, 0x67D2, 0x0C01, 0x67D3, 0x67D3, 0x0C99, + 0x67D4, 0x67D4, 0x0CBC, 0x67D5, 0x67D7, 0x35B2, 0x67D8, 0x67D8, 0x1865, + 0x67D9, 0x67D9, 0x186A, 0x67DA, 0x67DA, 0x186C, 0x67DB, 0x67DB, 0x35B5, + 0x67DC, 0x67DC, 0x074A, 0x67DD, 0x67DD, 0x186E, 0x67DE, 0x67DE, 0x1252, + 0x67DF, 0x67DF, 0x35B6, 0x67E0, 0x67E0, 0x0B5E, 0x67E1, 0x67E1, 0x35B7, + 0x67E2, 0x67E2, 0x1872, 0x67E3, 0x67E4, 0x35B8, 0x67E5, 0x67E5, 0x04B0, + 0x67E6, 0x67E8, 0x35BA, 0x67E9, 0x67E9, 0x1867, 0x67EA, 0x67EB, 0x35BD, + 0x67EC, 0x67EC, 0x0860, 0x67ED, 0x67EE, 0x35BF, 0x67EF, 0x67EF, 0x094F, + 0x67F0, 0x67F0, 0x1863, 0x67F1, 0x67F1, 0x11F8, 0x67F2, 0x67F2, 0x35C1, + 0x67F3, 0x67F3, 0x0A41, 0x67F4, 0x67F4, 0x04B8, 0x67F5, 0x67FC, 0x35C2, + 0x67FD, 0x67FD, 0x1875, 0x67FE, 0x67FE, 0x35CA, 0x67FF, 0x67FF, 0x0D58, + 0x6800, 0x6800, 0x186F, 0x6801, 0x6804, 0x35CB, 0x6805, 0x6805, 0x1145, + 0x6806, 0x6806, 0x35CF, 0x6807, 0x6807, 0x0453, 0x6808, 0x6808, 0x115C, + 0x6809, 0x6809, 0x1864, 0x680A, 0x680A, 0x1866, 0x680B, 0x680B, 0x05EF, + 0x680C, 0x680C, 0x1869, 0x680D, 0x680D, 0x35D0, 0x680E, 0x680E, 0x1873, + 0x680F, 0x680F, 0x09A3, 0x6810, 0x6810, 0x35D1, 0x6811, 0x6811, 0x0D8E, + 0x6812, 0x6812, 0x35D2, 0x6813, 0x6813, 0x0D9D, 0x6814, 0x6815, 0x35D3, + 0x6816, 0x6816, 0x0BFB, 0x6817, 0x6817, 0x09E0, 0x6818, 0x681C, 0x35D5, + 0x681D, 0x681D, 0x187F, 0x681E, 0x6820, 0x35DA, 0x6821, 0x6821, 0x0F6E, + 0x6822, 0x6828, 0x35DD, 0x6829, 0x6829, 0x1888, 0x682A, 0x682A, 0x11E9, + 0x682B, 0x6831, 0x35E4, 0x6832, 0x6833, 0x1876, 0x6834, 0x6836, 0x35EB, + 0x6837, 0x6837, 0x1022, 0x6838, 0x6838, 0x0782, 0x6839, 0x6839, 0x06F4, + 0x683A, 0x683B, 0x35EE, 0x683C, 0x683C, 0x06EC, 0x683D, 0x683D, 0x1117, + 0x683E, 0x683E, 0x1885, 0x683F, 0x683F, 0x35F0, 0x6840, 0x6840, 0x1884, + 0x6841, 0x6841, 0x1882, 0x6842, 0x6842, 0x0749, 0x6843, 0x6843, 0x0E25, + 0x6844, 0x6844, 0x187C, 0x6845, 0x6845, 0x0EB5, 0x6846, 0x6846, 0x097F, + 0x6847, 0x6847, 0x35F1, 0x6848, 0x6848, 0x03C3, 0x6849, 0x6849, 0x1887, + 0x684A, 0x684A, 0x1886, 0x684B, 0x684B, 0x35F2, 0x684C, 0x684C, 0x121D, + 0x684D, 0x684D, 0x35F3, 0x684E, 0x684E, 0x187A, 0x684F, 0x684F, 0x35F4, + 0x6850, 0x6850, 0x0E5A, 0x6851, 0x6851, 0x0CDC, 0x6852, 0x6852, 0x35F5, + 0x6853, 0x6853, 0x07CD, 0x6854, 0x6854, 0x08AC, 0x6855, 0x6855, 0x1880, + 0x6856, 0x685F, 0x35F6, 0x6860, 0x6861, 0x1878, 0x6862, 0x6862, 0x187B, + 0x6863, 0x6863, 0x0596, 0x6864, 0x6864, 0x187D, 0x6865, 0x6865, 0x0C42, + 0x6866, 0x6866, 0x1881, 0x6867, 0x6867, 0x1883, 0x6868, 0x6868, 0x0881, + 0x6869, 0x6869, 0x120B, 0x686A, 0x686A, 0x3600, 0x686B, 0x686B, 0x188E, + 0x686C, 0x6873, 0x3601, 0x6874, 0x6874, 0x188B, 0x6875, 0x6875, 0x3609, + 0x6876, 0x6876, 0x0E61, 0x6877, 0x6877, 0x188C, 0x6878, 0x6880, 0x360A, + 0x6881, 0x6881, 0x0A03, 0x6882, 0x6882, 0x3613, 0x6883, 0x6883, 0x187E, + 0x6884, 0x6884, 0x3614, 0x6885, 0x6885, 0x0ABC, 0x6886, 0x6886, 0x03FB, + 0x6887, 0x688E, 0x3615, 0x688F, 0x688F, 0x188A, 0x6890, 0x6892, 0x361D, + 0x6893, 0x6893, 0x188D, 0x6894, 0x6896, 0x3620, 0x6897, 0x6897, 0x06FC, + 0x6898, 0x6898, 0x246A, 0x6899, 0x689C, 0x3623, 0x689D, 0x689D, 0x2175, + 0x689E, 0x689E, 0x3627, 0x689F, 0x689F, 0x246D, 0x68A0, 0x68A1, 0x3628, + 0x68A2, 0x68A2, 0x0D0B, 0x68A3, 0x68A5, 0x362A, 0x68A6, 0x68A6, 0x0AD3, + 0x68A7, 0x68A7, 0x0EEF, 0x68A8, 0x68A8, 0x09D1, 0x68A9, 0x68AC, 0x362D, + 0x68AD, 0x68AD, 0x0DE8, 0x68AE, 0x68AE, 0x3631, 0x68AF, 0x68AF, 0x0E30, + 0x68B0, 0x68B0, 0x0F80, 0x68B1, 0x68B2, 0x3632, 0x68B3, 0x68B3, 0x0D78, + 0x68B4, 0x68B4, 0x3634, 0x68B5, 0x68B5, 0x1889, 0x68B6, 0x68BF, 0x3635, + 0x68C0, 0x68C0, 0x085F, 0x68C1, 0x68C1, 0x363F, 0x68C2, 0x68C2, 0x188F, + 0x68C3, 0x68C8, 0x3640, 0x68C9, 0x68C9, 0x0AE3, 0x68CA, 0x68CA, 0x3646, + 0x68CB, 0x68CB, 0x0C04, 0x68CC, 0x68CC, 0x3647, 0x68CD, 0x68CD, 0x0750, + 0x68CE, 0x68D1, 0x3648, 0x68D2, 0x68D2, 0x03FF, 0x68D3, 0x68D4, 0x364C, + 0x68D5, 0x68D5, 0x1235, 0x68D6, 0x68D6, 0x246B, 0x68D7, 0x68D7, 0x225F, + 0x68D8, 0x68D8, 0x081F, 0x68D9, 0x68D9, 0x364E, 0x68DA, 0x68DA, 0x0BB0, + 0x68DB, 0x68DE, 0x364F, 0x68DF, 0x68DF, 0x1ECE, 0x68E0, 0x68E0, 0x0E17, + 0x68E1, 0x68E2, 0x3653, 0x68E3, 0x68E3, 0x189A, 0x68E4, 0x68E6, 0x3655, + 0x68E7, 0x68E7, 0x2272, 0x68E8, 0x68ED, 0x3658, 0x68EE, 0x68EE, 0x0CE6, + 0x68EF, 0x68EF, 0x365E, 0x68F0, 0x68F0, 0x1896, 0x68F1, 0x68F1, 0x09CD, + 0x68F2, 0x68F4, 0x365F, 0x68F5, 0x68F5, 0x0950, 0x68F6, 0x68F8, 0x3662, + 0x68F9, 0x68F9, 0x1894, 0x68FA, 0x68FA, 0x0730, 0x68FB, 0x68FB, 0x3665, + 0x68FC, 0x68FC, 0x1891, 0x68FD, 0x68FF, 0x3666, 0x6900, 0x6900, 0x3669, + 0x6901, 0x6901, 0x1898, 0x6902, 0x6904, 0x366A, 0x6905, 0x6905, 0x1055, + 0x6906, 0x690A, 0x366D, 0x690B, 0x690B, 0x1897, 0x690C, 0x690C, 0x3672, + 0x690D, 0x690D, 0x11B1, 0x690E, 0x690E, 0x1212, 0x690F, 0x690F, 0x2473, + 0x6910, 0x6910, 0x189B, 0x6911, 0x6911, 0x3673, 0x6912, 0x6912, 0x0888, + 0x6913, 0x691E, 0x3674, 0x691F, 0x6920, 0x1892, 0x6921, 0x6923, 0x3680, + 0x6924, 0x6924, 0x1895, 0x6925, 0x692C, 0x3683, 0x692D, 0x692D, 0x0E87, + 0x692E, 0x692F, 0x368B, 0x6930, 0x6930, 0x1033, 0x6931, 0x6933, 0x368D, + 0x6934, 0x6934, 0x18A6, 0x6935, 0x6938, 0x3690, 0x6939, 0x6939, 0x189D, + 0x693A, 0x693C, 0x3694, 0x693D, 0x693D, 0x052D, 0x693E, 0x693E, 0x3697, + 0x693F, 0x693F, 0x053E, 0x6940, 0x6941, 0x3698, 0x6942, 0x6942, 0x189F, + 0x6943, 0x6949, 0x369A, 0x694A, 0x694A, 0x21FE, 0x694B, 0x6952, 0x36A1, + 0x6953, 0x6953, 0x1EFE, 0x6954, 0x6954, 0x0F73, 0x6955, 0x6956, 0x36A9, + 0x6957, 0x6957, 0x1899, 0x6958, 0x6959, 0x36AB, 0x695A, 0x695A, 0x0523, + 0x695B, 0x695C, 0x36AD, 0x695D, 0x695D, 0x18A0, 0x695E, 0x695E, 0x09CE, + 0x695F, 0x695F, 0x36AF, 0x6960, 0x6960, 0x189E, 0x6961, 0x6962, 0x36B0, + 0x6963, 0x6963, 0x18AD, 0x6964, 0x6965, 0x36B2, 0x6966, 0x6966, 0x18AC, + 0x6967, 0x6967, 0x36B4, 0x6968, 0x6968, 0x2475, 0x6969, 0x696A, 0x36B5, + 0x696B, 0x696B, 0x18A2, 0x696C, 0x696C, 0x36B7, 0x696D, 0x696D, 0x220A, + 0x696E, 0x696E, 0x1890, 0x696F, 0x6970, 0x36B8, 0x6971, 0x6971, 0x189C, + 0x6972, 0x6974, 0x36BA, 0x6975, 0x6975, 0x1F6F, 0x6976, 0x6976, 0x36BD, + 0x6977, 0x6977, 0x0939, 0x6978, 0x6978, 0x18A5, 0x6979, 0x6979, 0x18AE, + 0x697A, 0x697B, 0x36BE, 0x697C, 0x697C, 0x0A4C, 0x697D, 0x697F, 0x36C0, + 0x6980, 0x6980, 0x18A3, 0x6981, 0x6981, 0x36C3, 0x6982, 0x6982, 0x06C0, + 0x6983, 0x6983, 0x36C4, 0x6984, 0x6984, 0x18A1, 0x6985, 0x6985, 0x36C5, + 0x6986, 0x6986, 0x10C1, 0x6987, 0x6988, 0x18A8, 0x6989, 0x6989, 0x18AB, + 0x698A, 0x698C, 0x36C6, 0x698D, 0x698D, 0x18BB, 0x698E, 0x6993, 0x36C9, + 0x6994, 0x6994, 0x09B1, 0x6995, 0x6995, 0x18B9, 0x6996, 0x6997, 0x36CF, + 0x6998, 0x6998, 0x18A4, 0x6999, 0x699A, 0x36D1, 0x699B, 0x699B, 0x18AF, + 0x699C, 0x699C, 0x03FC, 0x699D, 0x69A6, 0x36D3, 0x69A7, 0x69A7, 0x18B0, + 0x69A8, 0x69A8, 0x1146, 0x69A9, 0x69A9, 0x36DD, 0x69AA, 0x69AA, 0x2468, + 0x69AB, 0x69AB, 0x18B2, 0x69AC, 0x69AC, 0x36DE, 0x69AD, 0x69AD, 0x18B3, + 0x69AE, 0x69AE, 0x2100, 0x69AF, 0x69B0, 0x36DF, 0x69B1, 0x69B1, 0x18B5, + 0x69B2, 0x69B3, 0x36E1, 0x69B4, 0x69B4, 0x0A3A, 0x69B5, 0x69B6, 0x36E3, + 0x69B7, 0x69B7, 0x0C91, 0x69B8, 0x69BA, 0x36E5, 0x69BB, 0x69BB, 0x18B1, + 0x69BC, 0x69BE, 0x36E8, 0x69BF, 0x69BF, 0x2476, 0x69C0, 0x69C0, 0x36EB, + 0x69C1, 0x69C1, 0x18B6, 0x69C2, 0x69C9, 0x36EC, 0x69CA, 0x69CA, 0x18B7, + 0x69CB, 0x69CB, 0x1F27, 0x69CC, 0x69CC, 0x18A7, 0x69CD, 0x69CD, 0x20D7, + 0x69CE, 0x69CE, 0x18AA, 0x69CF, 0x69CF, 0x36F4, 0x69D0, 0x69D0, 0x07C6, + 0x69D1, 0x69D3, 0x36F5, 0x69D4, 0x69D4, 0x18B4, 0x69D5, 0x69DA, 0x36F8, + 0x69DB, 0x69DB, 0x086A, 0x69DC, 0x69DE, 0x36FE, 0x69DF, 0x69DF, 0x18B8, + 0x69E0, 0x69E0, 0x18BA, 0x69E1, 0x69E6, 0x3701, 0x69E7, 0x69E7, 0x247C, + 0x69E8, 0x69EC, 0x3707, 0x69ED, 0x69ED, 0x18BE, 0x69EE, 0x69F1, 0x370C, + 0x69F2, 0x69F2, 0x18C2, 0x69F3, 0x69F3, 0x1FA1, 0x69F4, 0x69FC, 0x3710, + 0x69FD, 0x69FD, 0x04A2, 0x69FE, 0x69FE, 0x3719, 0x69FF, 0x69FF, 0x18BC, + 0x6A00, 0x6A00, 0x371A, 0x6A01, 0x6A01, 0x22AA, 0x6A02, 0x6A02, 0x2005, + 0x6A03, 0x6A04, 0x371B, 0x6A05, 0x6A05, 0x246C, 0x6A06, 0x6A09, 0x371D, + 0x6A0A, 0x6A0A, 0x064B, 0x6A0B, 0x6A12, 0x3721, 0x6A13, 0x6A13, 0x203E, + 0x6A14, 0x6A16, 0x3729, 0x6A17, 0x6A18, 0x18BF, 0x6A19, 0x6A19, 0x1E4C, + 0x6A1A, 0x6A1D, 0x372C, 0x6A1E, 0x6A1E, 0x213A, 0x6A1F, 0x6A1F, 0x1162, + 0x6A20, 0x6A20, 0x3730, 0x6A21, 0x6A21, 0x0B06, 0x6A22, 0x6A22, 0x3731, + 0x6A23, 0x6A23, 0x2204, 0x6A24, 0x6A27, 0x3732, 0x6A28, 0x6A28, 0x18CC, + 0x6A29, 0x6A29, 0x3736, 0x6A2A, 0x6A2A, 0x0798, 0x6A2B, 0x6A2E, 0x3737, + 0x6A2F, 0x6A2F, 0x18BD, 0x6A30, 0x6A30, 0x373B, 0x6A31, 0x6A31, 0x1088, + 0x6A32, 0x6A34, 0x373C, 0x6A35, 0x6A35, 0x18C8, 0x6A36, 0x6A37, 0x373F, + 0x6A38, 0x6A38, 0x20C3, 0x6A39, 0x6A39, 0x2140, 0x6A3A, 0x6A3A, 0x2477, + 0x6A3B, 0x6A3C, 0x3741, 0x6A3D, 0x6A3D, 0x18CB, 0x6A3E, 0x6A3E, 0x18C4, + 0x6A3F, 0x6A43, 0x3743, 0x6A44, 0x6A44, 0x18C3, 0x6A45, 0x6A46, 0x3748, + 0x6A47, 0x6A47, 0x0C3E, 0x6A48, 0x6A48, 0x2474, 0x6A49, 0x6A4A, 0x374A, + 0x6A4B, 0x6A4B, 0x20DD, 0x6A4C, 0x6A4F, 0x374C, 0x6A50, 0x6A50, 0x18C6, + 0x6A51, 0x6A57, 0x3750, 0x6A58, 0x6A58, 0x18CD, 0x6A59, 0x6A59, 0x04ED, + 0x6A5A, 0x6A5A, 0x3757, 0x6A5B, 0x6A5B, 0x18C7, 0x6A5C, 0x6A5E, 0x3758, + 0x6A5F, 0x6A5F, 0x1F68, 0x6A60, 0x6A60, 0x375B, 0x6A61, 0x6A61, 0x0F5D, + 0x6A62, 0x6A62, 0x2185, 0x6A63, 0x6A64, 0x375C, 0x6A65, 0x6A65, 0x18C1, + 0x6A66, 0x6A70, 0x375E, 0x6A71, 0x6A71, 0x051C, 0x6A72, 0x6A78, 0x3769, + 0x6A79, 0x6A79, 0x18CA, 0x6A7A, 0x6A7B, 0x3770, 0x6A7C, 0x6A7C, 0x18CE, + 0x6A7D, 0x6A7F, 0x3772, 0x6A80, 0x6A80, 0x0E07, 0x6A81, 0x6A83, 0x3775, + 0x6A84, 0x6A84, 0x0F1A, 0x6A85, 0x6A88, 0x3778, 0x6A89, 0x6A89, 0x2472, + 0x6A8A, 0x6A8D, 0x377C, 0x6A8E, 0x6A8E, 0x18C9, 0x6A8F, 0x6A8F, 0x3780, + 0x6A90, 0x6A90, 0x18D0, 0x6A91, 0x6A91, 0x18CF, 0x6A92, 0x6A93, 0x3781, + 0x6A94, 0x6A94, 0x1EB5, 0x6A95, 0x6A96, 0x3783, 0x6A97, 0x6A97, 0x18D2, + 0x6A98, 0x6A9B, 0x3785, 0x6A9C, 0x6A9C, 0x2478, 0x6A9D, 0x6A9F, 0x3789, + 0x6AA0, 0x6AA0, 0x18C5, 0x6AA1, 0x6AA1, 0x378C, 0x6AA2, 0x6AA2, 0x1F8B, + 0x6AA3, 0x6AA3, 0x2484, 0x6AA4, 0x6AA8, 0x378D, 0x6AA9, 0x6AA9, 0x18D1, + 0x6AAA, 0x6AAA, 0x3792, 0x6AAB, 0x6AAB, 0x18D3, 0x6AAC, 0x6AAC, 0x0ACF, + 0x6AAD, 0x6AAE, 0x3793, 0x6AAF, 0x6AAF, 0x2699, 0x6AB0, 0x6AB2, 0x3795, + 0x6AB3, 0x6AB3, 0x2482, 0x6AB4, 0x6AB7, 0x3798, 0x6AB8, 0x6AB8, 0x20A1, + 0x6AB9, 0x6ABA, 0x379C, 0x6ABB, 0x6ABB, 0x1F92, 0x6ABC, 0x6AC2, 0x379E, + 0x6AC3, 0x6AC3, 0x1F38, 0x6AC4, 0x6AD2, 0x37A5, 0x6AD3, 0x6AD3, 0x2485, + 0x6AD4, 0x6AD9, 0x37B4, 0x6ADA, 0x6ADA, 0x2480, 0x6ADB, 0x6ADB, 0x246E, + 0x6ADC, 0x6ADC, 0x37BA, 0x6ADD, 0x6ADD, 0x247B, 0x6ADE, 0x6ADE, 0x2486, + 0x6ADF, 0x6ADF, 0x2471, 0x6AE0, 0x6AE6, 0x37BB, 0x6AE7, 0x6AE7, 0x2483, + 0x6AE8, 0x6AE8, 0x2470, 0x6AE9, 0x6AE9, 0x37C2, 0x6AEA, 0x6AEA, 0x2469, + 0x6AEB, 0x6AEB, 0x37C3, 0x6AEC, 0x6AEC, 0x247F, 0x6AED, 0x6AF2, 0x37C4, + 0x6AF3, 0x6AF3, 0x246F, 0x6AF4, 0x6AF7, 0x37CA, 0x6AF8, 0x6AF8, 0x2481, + 0x6AF9, 0x6AFA, 0x37CE, 0x6AFB, 0x6AFB, 0x2220, 0x6AFC, 0x6AFF, 0x37D0, + 0x6B00, 0x6B03, 0x37D4, 0x6B04, 0x6B04, 0x1FF5, 0x6B05, 0x6B09, 0x37D8, + 0x6B0A, 0x6B0A, 0x20F4, 0x6B0B, 0x6B0E, 0x37DD, 0x6B0F, 0x6B0F, 0x247D, + 0x6B10, 0x6B11, 0x37E1, 0x6B12, 0x6B12, 0x2479, 0x6B13, 0x6B15, 0x37E3, + 0x6B16, 0x6B16, 0x247E, 0x6B17, 0x6B1D, 0x37E6, 0x6B1E, 0x6B1E, 0x247A, + 0x6B1F, 0x6B1F, 0x37ED, 0x6B20, 0x6B20, 0x0C34, 0x6B21, 0x6B21, 0x0551, + 0x6B22, 0x6B22, 0x07CB, 0x6B23, 0x6B23, 0x0F8B, 0x6B24, 0x6B24, 0x19B1, + 0x6B25, 0x6B26, 0x37EE, 0x6B27, 0x6B27, 0x0B78, 0x6B28, 0x6B31, 0x37F0, + 0x6B32, 0x6B32, 0x10E0, 0x6B33, 0x6B36, 0x37FA, 0x6B37, 0x6B37, 0x19B2, + 0x6B38, 0x6B38, 0x37FE, 0x6B39, 0x6B39, 0x19B3, 0x6B3A, 0x6B3A, 0x0BFA, + 0x6B3B, 0x6B3C, 0x37FF, 0x6B3D, 0x6B3D, 0x20E3, 0x6B3E, 0x6B3E, 0x097B, + 0x6B3F, 0x6B42, 0x3801, 0x6B43, 0x6B43, 0x19B4, 0x6B44, 0x6B45, 0x3805, + 0x6B46, 0x6B46, 0x19B5, 0x6B47, 0x6B47, 0x0F75, 0x6B48, 0x6B48, 0x3807, + 0x6B49, 0x6B49, 0x0C35, 0x6B4A, 0x6B4B, 0x3808, 0x6B4C, 0x6B4C, 0x06E3, + 0x6B4D, 0x6B4F, 0x380A, 0x6B50, 0x6B50, 0x20AD, 0x6B51, 0x6B58, 0x380D, + 0x6B59, 0x6B59, 0x19B6, 0x6B5A, 0x6B5E, 0x3815, 0x6B5F, 0x6B5F, 0x24CB, + 0x6B60, 0x6B60, 0x381A, 0x6B61, 0x6B61, 0x1F53, 0x6B62, 0x6B62, 0x11B8, + 0x6B63, 0x6B63, 0x119E, 0x6B64, 0x6B64, 0x054E, 0x6B65, 0x6B65, 0x0484, + 0x6B66, 0x6B66, 0x0EF3, 0x6B67, 0x6B67, 0x0C06, 0x6B68, 0x6B69, 0x381B, + 0x6B6A, 0x6B6A, 0x0E92, 0x6B6B, 0x6B71, 0x381D, 0x6B72, 0x6B72, 0x2159, + 0x6B73, 0x6B76, 0x3824, 0x6B77, 0x6B77, 0x2013, 0x6B78, 0x6B78, 0x1F33, + 0x6B79, 0x6B79, 0x0578, 0x6B7A, 0x6B7A, 0x3828, 0x6B7B, 0x6B7B, 0x0DB5, + 0x6B7C, 0x6B7C, 0x0852, 0x6B7D, 0x6B80, 0x3829, 0x6B81, 0x6B82, 0x18D6, + 0x6B83, 0x6B83, 0x1013, 0x6B84, 0x6B84, 0x18D9, 0x6B85, 0x6B85, 0x382D, + 0x6B86, 0x6B86, 0x057C, 0x6B87, 0x6B87, 0x18D8, 0x6B88, 0x6B88, 0x382E, + 0x6B89, 0x6B89, 0x0FDC, 0x6B8A, 0x6B8A, 0x0D79, 0x6B8B, 0x6B8B, 0x0497, + 0x6B8C, 0x6B8C, 0x382F, 0x6B8D, 0x6B8D, 0x18DC, 0x6B8E, 0x6B91, 0x3830, + 0x6B92, 0x6B93, 0x18DA, 0x6B94, 0x6B95, 0x3834, 0x6B96, 0x6B96, 0x11B2, + 0x6B97, 0x6B97, 0x3836, 0x6B98, 0x6B98, 0x1E5C, 0x6B99, 0x6B99, 0x3837, + 0x6B9A, 0x6B9B, 0x18DD, 0x6B9C, 0x6B9D, 0x3838, 0x6B9E, 0x6B9E, 0x2488, + 0x6B9F, 0x6BA0, 0x383A, 0x6BA1, 0x6BA1, 0x18DF, 0x6BA2, 0x6BA3, 0x383C, + 0x6BA4, 0x6BA4, 0x2487, 0x6BA5, 0x6BA9, 0x383E, 0x6BAA, 0x6BAA, 0x18E0, + 0x6BAB, 0x6BAB, 0x248A, 0x6BAC, 0x6BAD, 0x3843, 0x6BAE, 0x6BAE, 0x2489, + 0x6BAF, 0x6BAF, 0x248B, 0x6BB0, 0x6BB1, 0x3845, 0x6BB2, 0x6BB2, 0x1F83, + 0x6BB3, 0x6BB3, 0x19BD, 0x6BB4, 0x6BB4, 0x0B7A, 0x6BB5, 0x6BB5, 0x060D, + 0x6BB6, 0x6BB6, 0x3847, 0x6BB7, 0x6BB7, 0x107A, 0x6BB8, 0x6BB9, 0x3848, + 0x6BBA, 0x6BBA, 0x210F, 0x6BBB, 0x6BBB, 0x1FDB, 0x6BBC, 0x6BBE, 0x384A, + 0x6BBF, 0x6BBF, 0x05CF, 0x6BC0, 0x6BC0, 0x384D, 0x6BC1, 0x6BC1, 0x07EE, + 0x6BC2, 0x6BC2, 0x19BF, 0x6BC3, 0x6BC4, 0x384E, 0x6BC5, 0x6BC5, 0x106A, + 0x6BC6, 0x6BC6, 0x20AF, 0x6BC7, 0x6BCA, 0x3850, 0x6BCB, 0x6BCB, 0x0EF2, + 0x6BCC, 0x6BCC, 0x3854, 0x6BCD, 0x6BCD, 0x0B1B, 0x6BCE, 0x6BCE, 0x3855, + 0x6BCF, 0x6BCF, 0x0AC4, 0x6BD0, 0x6BD1, 0x3856, 0x6BD2, 0x6BD2, 0x05FD, + 0x6BD3, 0x6BD3, 0x126F, 0x6BD4, 0x6BD4, 0x0431, 0x6BD5, 0x6BD5, 0x0438, + 0x6BD6, 0x6BD6, 0x043A, 0x6BD7, 0x6BD7, 0x0BBF, 0x6BD8, 0x6BD8, 0x3858, + 0x6BD9, 0x6BD9, 0x0439, 0x6BDA, 0x6BDA, 0x3859, 0x6BDB, 0x6BDB, 0x0AB0, + 0x6BDC, 0x6BE0, 0x385A, 0x6BE1, 0x6BE1, 0x1152, 0x6BE2, 0x6BE9, 0x385F, + 0x6BEA, 0x6BEA, 0x1954, 0x6BEB, 0x6BEB, 0x0778, 0x6BEC, 0x6BEE, 0x3867, + 0x6BEF, 0x6BEF, 0x0E0D, 0x6BF0, 0x6BF2, 0x386A, 0x6BF3, 0x6BF3, 0x1955, + 0x6BF4, 0x6BF4, 0x386D, 0x6BF5, 0x6BF5, 0x1957, 0x6BF6, 0x6BF8, 0x386E, + 0x6BF9, 0x6BF9, 0x1958, 0x6BFA, 0x6BFC, 0x3871, 0x6BFD, 0x6BFD, 0x1956, + 0x6BFE, 0x6BFE, 0x3874, 0x6BFF, 0x6BFF, 0x24C0, 0x6C00, 0x6C04, 0x3875, + 0x6C05, 0x6C05, 0x1959, 0x6C06, 0x6C06, 0x195B, 0x6C07, 0x6C07, 0x195A, + 0x6C08, 0x6C08, 0x226D, 0x6C09, 0x6C0B, 0x387A, 0x6C0C, 0x6C0C, 0x24C1, + 0x6C0D, 0x6C0D, 0x195C, 0x6C0E, 0x6C0E, 0x387D, 0x6C0F, 0x6C0F, 0x0D66, + 0x6C10, 0x6C10, 0x126B, 0x6C11, 0x6C11, 0x0AF6, 0x6C12, 0x6C12, 0x387E, + 0x6C13, 0x6C13, 0x0AAA, 0x6C14, 0x6C14, 0x0C17, 0x6C15, 0x6C15, 0x195D, + 0x6C16, 0x6C16, 0x0B2D, 0x6C17, 0x6C17, 0x387F, 0x6C18, 0x6C1A, 0x195E, + 0x6C1B, 0x6C1B, 0x0672, 0x6C1C, 0x6C1E, 0x3880, 0x6C1F, 0x6C1F, 0x0697, + 0x6C20, 0x6C20, 0x3883, 0x6C21, 0x6C21, 0x1961, 0x6C22, 0x6C22, 0x0C5F, + 0x6C23, 0x6C23, 0x20CA, 0x6C24, 0x6C24, 0x1963, 0x6C25, 0x6C25, 0x3884, + 0x6C26, 0x6C26, 0x075B, 0x6C27, 0x6C27, 0x101E, 0x6C28, 0x6C28, 0x03BC, + 0x6C29, 0x6C29, 0x1962, 0x6C2A, 0x6C2A, 0x1964, 0x6C2B, 0x6C2B, 0x20E7, + 0x6C2C, 0x6C2C, 0x24C2, 0x6C2D, 0x6C2D, 0x3885, 0x6C2E, 0x6C2E, 0x058B, + 0x6C2F, 0x6C2F, 0x0A6F, 0x6C30, 0x6C30, 0x0C65, 0x6C31, 0x6C31, 0x3886, + 0x6C32, 0x6C32, 0x1965, 0x6C33, 0x6C33, 0x3887, 0x6C34, 0x6C34, 0x0DA3, + 0x6C35, 0x6C35, 0x169F, 0x6C36, 0x6C37, 0x3888, 0x6C38, 0x6C38, 0x10A5, + 0x6C39, 0x6C3C, 0x388A, 0x6C3D, 0x6C3D, 0x12EF, 0x6C3E, 0x6C3F, 0x388E, + 0x6C40, 0x6C40, 0x0E52, 0x6C41, 0x6C41, 0x11AC, 0x6C42, 0x6C42, 0x0C70, + 0x6C43, 0x6C45, 0x3890, 0x6C46, 0x6C46, 0x12F4, 0x6C47, 0x6C47, 0x07F8, + 0x6C48, 0x6C48, 0x3893, 0x6C49, 0x6C49, 0x0771, 0x6C4A, 0x6C4A, 0x16A2, + 0x6C4B, 0x6C4F, 0x3894, 0x6C50, 0x6C50, 0x0F18, 0x6C51, 0x6C53, 0x3899, + 0x6C54, 0x6C54, 0x16A0, 0x6C55, 0x6C55, 0x0D00, 0x6C56, 0x6C56, 0x389C, + 0x6C57, 0x6C57, 0x0770, 0x6C58, 0x6C5A, 0x389D, 0x6C5B, 0x6C5B, 0x0FDD, + 0x6C5C, 0x6C5C, 0x16A1, 0x6C5D, 0x6C5D, 0x0CC5, 0x6C5E, 0x6C5E, 0x0708, + 0x6C5F, 0x6C5F, 0x087E, 0x6C60, 0x6C60, 0x04FD, 0x6C61, 0x6C61, 0x0EEA, + 0x6C62, 0x6C63, 0x38A0, 0x6C64, 0x6C64, 0x0E13, 0x6C65, 0x6C67, 0x38A2, + 0x6C68, 0x6C69, 0x16A8, 0x6C6A, 0x6C6A, 0x0EA5, 0x6C6B, 0x6C6F, 0x38A5, + 0x6C70, 0x6C70, 0x0E00, 0x6C71, 0x6C71, 0x38AA, 0x6C72, 0x6C72, 0x0826, + 0x6C73, 0x6C73, 0x38AB, 0x6C74, 0x6C74, 0x16AA, 0x6C75, 0x6C75, 0x38AC, + 0x6C76, 0x6C76, 0x16AB, 0x6C77, 0x6C78, 0x38AD, 0x6C79, 0x6C79, 0x0FA5, + 0x6C7A, 0x6C7C, 0x38AF, 0x6C7D, 0x6C7D, 0x0C1A, 0x6C7E, 0x6C7E, 0x0677, + 0x6C7F, 0x6C80, 0x38B2, 0x6C81, 0x6C81, 0x0C5C, 0x6C82, 0x6C82, 0x1051, + 0x6C83, 0x6C83, 0x0EE5, 0x6C84, 0x6C84, 0x38B4, 0x6C85, 0x6C85, 0x16A4, + 0x6C86, 0x6C86, 0x16AC, 0x6C87, 0x6C87, 0x38B5, 0x6C88, 0x6C88, 0x0D2B, + 0x6C89, 0x6C89, 0x04E6, 0x6C8A, 0x6C8B, 0x38B6, 0x6C8C, 0x6C8C, 0x16A7, + 0x6C8D, 0x6C8E, 0x38B8, 0x6C8F, 0x6C8F, 0x0C02, 0x6C90, 0x6C90, 0x16A5, + 0x6C91, 0x6C92, 0x38BA, 0x6C93, 0x6C93, 0x1A1F, 0x6C94, 0x6C94, 0x16A6, + 0x6C95, 0x6C98, 0x38BC, 0x6C99, 0x6C99, 0x0CEC, 0x6C9A, 0x6C9A, 0x38C0, + 0x6C9B, 0x6C9B, 0x0BA7, 0x6C9C, 0x6C9E, 0x38C1, 0x6C9F, 0x6C9F, 0x070E, + 0x6CA0, 0x6CA0, 0x38C4, 0x6CA1, 0x6CA1, 0x0AC0, 0x6CA2, 0x6CA2, 0x38C5, + 0x6CA3, 0x6CA3, 0x16A3, 0x6CA4, 0x6CA4, 0x0B7E, 0x6CA5, 0x6CA5, 0x09ED, + 0x6CA6, 0x6CA6, 0x0A80, 0x6CA7, 0x6CA7, 0x049E, 0x6CA8, 0x6CA8, 0x38C6, + 0x6CA9, 0x6CA9, 0x16AD, 0x6CAA, 0x6CAA, 0x07BB, 0x6CAB, 0x6CAB, 0x0B10, + 0x6CAC, 0x6CAC, 0x38C7, 0x6CAD, 0x6CAD, 0x16B0, 0x6CAE, 0x6CAE, 0x0909, + 0x6CAF, 0x6CB0, 0x38C8, 0x6CB1, 0x6CB1, 0x16BB, 0x6CB2, 0x6CB2, 0x16B5, + 0x6CB3, 0x6CB3, 0x078A, 0x6CB4, 0x6CB7, 0x38CA, 0x6CB8, 0x6CB8, 0x066D, + 0x6CB9, 0x6CB9, 0x10B2, 0x6CBA, 0x6CBA, 0x38CE, 0x6CBB, 0x6CBB, 0x11CD, + 0x6CBC, 0x6CBC, 0x1174, 0x6CBD, 0x6CBD, 0x071A, 0x6CBE, 0x6CBE, 0x1155, + 0x6CBF, 0x6CBF, 0x1001, 0x6CC0, 0x6CC3, 0x38CF, 0x6CC4, 0x6CC4, 0x0F84, + 0x6CC5, 0x6CC5, 0x0C73, 0x6CC6, 0x6CC8, 0x38D3, 0x6CC9, 0x6CC9, 0x0C85, + 0x6CCA, 0x6CCA, 0x047B, 0x6CCB, 0x6CCB, 0x38D6, 0x6CCC, 0x6CCC, 0x0ADF, + 0x6CCD, 0x6CCF, 0x38D7, 0x6CD0, 0x6CD0, 0x16AE, 0x6CD1, 0x6CD2, 0x38DA, + 0x6CD3, 0x6CD3, 0x16BC, 0x6CD4, 0x6CD4, 0x16AF, 0x6CD5, 0x6CD5, 0x0645, + 0x6CD6, 0x6CD6, 0x16B7, 0x6CD7, 0x6CD7, 0x16B4, 0x6CD8, 0x6CDA, 0x38DC, + 0x6CDB, 0x6CDB, 0x0657, 0x6CDC, 0x6CDD, 0x38DF, 0x6CDE, 0x6CDE, 0x0B63, + 0x6CDF, 0x6CDF, 0x38E1, 0x6CE0, 0x6CE0, 0x16B6, 0x6CE1, 0x6CE1, 0x0B9E, + 0x6CE2, 0x6CE2, 0x046F, 0x6CE3, 0x6CE3, 0x0C1B, 0x6CE4, 0x6CE4, 0x38E2, + 0x6CE5, 0x6CE5, 0x0B43, 0x6CE6, 0x6CE7, 0x38E3, 0x6CE8, 0x6CE8, 0x11FF, + 0x6CE9, 0x6CE9, 0x38E5, 0x6CEA, 0x6CEA, 0x09CC, 0x6CEB, 0x6CEB, 0x16B9, + 0x6CEC, 0x6CED, 0x38E6, 0x6CEE, 0x6CEE, 0x16BA, 0x6CEF, 0x6CEF, 0x16BD, + 0x6CF0, 0x6CF0, 0x0DFC, 0x6CF1, 0x6CF1, 0x16B3, 0x6CF2, 0x6CF2, 0x38E8, + 0x6CF3, 0x6CF3, 0x10A3, 0x6CF4, 0x6CF4, 0x38E9, 0x6CF5, 0x6CF5, 0x042C, + 0x6CF6, 0x6CF6, 0x1A20, 0x6CF7, 0x6CF8, 0x16B1, 0x6CF9, 0x6CF9, 0x38EA, + 0x6CFA, 0x6CFA, 0x16B8, 0x6CFB, 0x6CFB, 0x0F85, 0x6CFC, 0x6CFC, 0x0BE2, + 0x6CFD, 0x6CFD, 0x1136, 0x6CFE, 0x6CFE, 0x16BE, 0x6CFF, 0x6CFF, 0x38EB, + 0x6D00, 0x6D00, 0x38EC, 0x6D01, 0x6D01, 0x08B1, 0x6D02, 0x6D03, 0x38ED, + 0x6D04, 0x6D04, 0x16C5, 0x6D05, 0x6D06, 0x38EF, 0x6D07, 0x6D07, 0x16C4, + 0x6D08, 0x6D0A, 0x38F1, 0x6D0B, 0x6D0B, 0x101C, 0x6D0C, 0x6D0C, 0x16C1, + 0x6D0D, 0x6D0D, 0x38F4, 0x6D0E, 0x6D0E, 0x16C7, 0x6D0F, 0x6D11, 0x38F5, + 0x6D12, 0x6D12, 0x0CD2, 0x6D13, 0x6D16, 0x38F8, 0x6D17, 0x6D17, 0x0F21, + 0x6D18, 0x6D18, 0x38FC, 0x6D19, 0x6D19, 0x16C6, 0x6D1A, 0x6D1A, 0x16CC, + 0x6D1B, 0x6D1B, 0x0A8C, 0x6D1C, 0x6D1D, 0x38FD, 0x6D1E, 0x6D1E, 0x05F3, + 0x6D1F, 0x6D24, 0x38FF, 0x6D25, 0x6D25, 0x08C3, 0x6D26, 0x6D26, 0x3905, + 0x6D27, 0x6D27, 0x16C0, 0x6D28, 0x6D29, 0x3906, 0x6D2A, 0x6D2A, 0x07A0, + 0x6D2B, 0x6D2B, 0x16C8, 0x6D2C, 0x6D2D, 0x3908, 0x6D2E, 0x6D2E, 0x16CA, + 0x6D2F, 0x6D30, 0x390A, 0x6D31, 0x6D31, 0x063C, 0x6D32, 0x6D32, 0x11DD, + 0x6D33, 0x6D33, 0x16D0, 0x6D34, 0x6D34, 0x390C, 0x6D35, 0x6D35, 0x16CB, + 0x6D36, 0x6D38, 0x390D, 0x6D39, 0x6D39, 0x16BF, 0x6D3A, 0x6D3A, 0x3910, + 0x6D3B, 0x6D3B, 0x0803, 0x6D3C, 0x6D3C, 0x0E8E, 0x6D3D, 0x6D3D, 0x0C1F, + 0x6D3E, 0x6D3E, 0x0B8A, 0x6D3F, 0x6D40, 0x3911, 0x6D41, 0x6D41, 0x0A40, + 0x6D42, 0x6D42, 0x3913, 0x6D43, 0x6D43, 0x16C2, 0x6D44, 0x6D44, 0x3914, + 0x6D45, 0x6D45, 0x0C30, 0x6D46, 0x6D46, 0x087D, 0x6D47, 0x6D47, 0x088E, + 0x6D48, 0x6D48, 0x16C3, 0x6D49, 0x6D49, 0x3915, 0x6D4A, 0x6D4A, 0x1224, + 0x6D4B, 0x6D4B, 0x04A9, 0x6D4C, 0x6D4C, 0x3916, 0x6D4D, 0x6D4D, 0x16C9, + 0x6D4E, 0x6D4E, 0x0836, 0x6D4F, 0x6D4F, 0x16CD, 0x6D50, 0x6D50, 0x3917, + 0x6D51, 0x6D51, 0x0800, 0x6D52, 0x6D52, 0x16CE, 0x6D53, 0x6D53, 0x0B69, + 0x6D54, 0x6D54, 0x16CF, 0x6D55, 0x6D58, 0x3918, 0x6D59, 0x6D59, 0x1184, + 0x6D5A, 0x6D5A, 0x0930, 0x6D5B, 0x6D5B, 0x391C, 0x6D5C, 0x6D5C, 0x16D8, + 0x6D5D, 0x6D5D, 0x391D, 0x6D5E, 0x6D5E, 0x16D5, 0x6D5F, 0x6D5F, 0x391E, + 0x6D60, 0x6D60, 0x16D9, 0x6D61, 0x6D62, 0x391F, 0x6D63, 0x6D63, 0x16DB, + 0x6D64, 0x6D65, 0x3921, 0x6D66, 0x6D66, 0x0BF5, 0x6D67, 0x6D68, 0x3923, + 0x6D69, 0x6D69, 0x077D, 0x6D6A, 0x6D6A, 0x09B6, 0x6D6B, 0x6D6D, 0x3925, + 0x6D6E, 0x6D6E, 0x069C, 0x6D6F, 0x6D6F, 0x16D2, 0x6D70, 0x6D73, 0x3928, + 0x6D74, 0x6D74, 0x10E4, 0x6D75, 0x6D76, 0x392C, 0x6D77, 0x6D77, 0x075A, + 0x6D78, 0x6D78, 0x08CF, 0x6D79, 0x6D79, 0x23DC, 0x6D7A, 0x6D7B, 0x392E, + 0x6D7C, 0x6D7C, 0x16DA, 0x6D7D, 0x6D81, 0x3930, 0x6D82, 0x6D82, 0x0E70, + 0x6D83, 0x6D84, 0x3935, 0x6D85, 0x6D85, 0x0B5C, 0x6D86, 0x6D86, 0x3937, + 0x6D87, 0x6D87, 0x23DB, 0x6D88, 0x6D88, 0x0F68, 0x6D89, 0x6D89, 0x0D1F, + 0x6D8A, 0x6D8B, 0x3938, 0x6D8C, 0x6D8C, 0x10A4, 0x6D8D, 0x6D8D, 0x393A, + 0x6D8E, 0x6D8E, 0x0F3E, 0x6D8F, 0x6D90, 0x393B, 0x6D91, 0x6D91, 0x16D1, + 0x6D92, 0x6D92, 0x393D, 0x6D93, 0x6D94, 0x16D6, 0x6D95, 0x6D95, 0x0E3C, + 0x6D96, 0x6D9A, 0x393E, 0x6D9B, 0x6D9B, 0x0E21, 0x6D9C, 0x6D9C, 0x3943, + 0x6D9D, 0x6D9D, 0x09BF, 0x6D9E, 0x6D9E, 0x16D3, 0x6D9F, 0x6D9F, 0x09F9, + 0x6DA0, 0x6DA0, 0x16D4, 0x6DA1, 0x6DA1, 0x0EDF, 0x6DA2, 0x6DA2, 0x3944, + 0x6DA3, 0x6DA3, 0x07D6, 0x6DA4, 0x6DA4, 0x05B4, 0x6DA5, 0x6DA5, 0x3945, + 0x6DA6, 0x6DA6, 0x0CCE, 0x6DA7, 0x6DA7, 0x0878, 0x6DA8, 0x6DA8, 0x1168, + 0x6DA9, 0x6DA9, 0x0CE5, 0x6DAA, 0x6DAA, 0x069D, 0x6DAB, 0x6DAB, 0x16E8, + 0x6DAC, 0x6DAD, 0x3946, 0x6DAE, 0x6DAE, 0x16EA, 0x6DAF, 0x6DAF, 0x0FED, + 0x6DB0, 0x6DB1, 0x3948, 0x6DB2, 0x6DB2, 0x1041, 0x6DB3, 0x6DB4, 0x394A, + 0x6DB5, 0x6DB5, 0x0764, 0x6DB6, 0x6DB7, 0x394C, 0x6DB8, 0x6DB8, 0x078B, + 0x6DB9, 0x6DBE, 0x394E, 0x6DBF, 0x6DBF, 0x16E1, 0x6DC0, 0x6DC0, 0x05CE, + 0x6DC1, 0x6DC3, 0x3954, 0x6DC4, 0x6DC4, 0x122A, 0x6DC5, 0x6DC5, 0x16DE, + 0x6DC6, 0x6DC6, 0x0F6A, 0x6DC7, 0x6DC7, 0x16DD, 0x6DC8, 0x6DCA, 0x3957, + 0x6DCB, 0x6DCB, 0x0A25, 0x6DCC, 0x6DCC, 0x0E1D, 0x6DCD, 0x6DD0, 0x395A, + 0x6DD1, 0x6DD1, 0x0D7E, 0x6DD2, 0x6DD5, 0x395E, 0x6DD6, 0x6DD6, 0x0B3A, + 0x6DD7, 0x6DD7, 0x3962, 0x6DD8, 0x6DD8, 0x0E27, 0x6DD9, 0x6DD9, 0x16E6, + 0x6DDA, 0x6DDC, 0x3963, 0x6DDD, 0x6DDD, 0x16E5, 0x6DDE, 0x6DDE, 0x16DF, + 0x6DDF, 0x6DDF, 0x3966, 0x6DE0, 0x6DE0, 0x16E2, 0x6DE1, 0x6DE1, 0x058E, + 0x6DE2, 0x6DE3, 0x3967, 0x6DE4, 0x6DE4, 0x10BE, 0x6DE5, 0x6DE5, 0x3969, + 0x6DE6, 0x6DE6, 0x16E4, 0x6DE7, 0x6DE9, 0x396A, 0x6DEA, 0x6DEA, 0x205E, + 0x6DEB, 0x6DEB, 0x1080, 0x6DEC, 0x6DEC, 0x0566, 0x6DED, 0x6DED, 0x396D, + 0x6DEE, 0x6DEE, 0x07C9, 0x6DEF, 0x6DF0, 0x396E, 0x6DF1, 0x6DF1, 0x0D27, + 0x6DF2, 0x6DF2, 0x3970, 0x6DF3, 0x6DF3, 0x0541, 0x6DF4, 0x6DF4, 0x3971, + 0x6DF5, 0x6DF5, 0x2244, 0x6DF6, 0x6DF6, 0x23E2, 0x6DF7, 0x6DF7, 0x0801, + 0x6DF8, 0x6DF8, 0x3972, 0x6DF9, 0x6DF9, 0x0FF6, 0x6DFA, 0x6DFA, 0x20D4, + 0x6DFB, 0x6DFB, 0x0E40, 0x6DFC, 0x6DFC, 0x1A21, 0x6DFD, 0x6DFF, 0x3973, + 0x6E00, 0x6E04, 0x3976, 0x6E05, 0x6E05, 0x0C62, 0x6E06, 0x6E09, 0x397B, + 0x6E0A, 0x6E0A, 0x10EB, 0x6E0B, 0x6E0B, 0x397F, 0x6E0C, 0x6E0C, 0x16E9, + 0x6E0D, 0x6E0D, 0x1232, 0x6E0E, 0x6E0E, 0x16E0, 0x6E0F, 0x6E0F, 0x3980, + 0x6E10, 0x6E10, 0x0876, 0x6E11, 0x6E11, 0x16E3, 0x6E12, 0x6E13, 0x3981, + 0x6E14, 0x6E14, 0x10CB, 0x6E15, 0x6E15, 0x3983, 0x6E16, 0x6E16, 0x16E7, + 0x6E17, 0x6E17, 0x0D31, 0x6E18, 0x6E19, 0x3984, 0x6E1A, 0x6E1A, 0x16DC, + 0x6E1B, 0x6E1C, 0x3986, 0x6E1D, 0x6E1D, 0x10CA, 0x6E1E, 0x6E1F, 0x3988, + 0x6E20, 0x6E20, 0x0C7B, 0x6E21, 0x6E21, 0x0608, 0x6E22, 0x6E22, 0x398A, + 0x6E23, 0x6E23, 0x113F, 0x6E24, 0x6E24, 0x047A, 0x6E25, 0x6E25, 0x16F5, + 0x6E26, 0x6E26, 0x219F, 0x6E27, 0x6E28, 0x398B, 0x6E29, 0x6E29, 0x0ED1, + 0x6E2A, 0x6E2A, 0x398D, 0x6E2B, 0x6E2B, 0x16EB, 0x6E2C, 0x6E2C, 0x1E66, + 0x6E2D, 0x6E2D, 0x0ECB, 0x6E2E, 0x6E2E, 0x398E, 0x6E2F, 0x6E2F, 0x06D6, + 0x6E30, 0x6E31, 0x398F, 0x6E32, 0x6E32, 0x16F4, 0x6E33, 0x6E33, 0x3991, + 0x6E34, 0x6E34, 0x0957, 0x6E35, 0x6E37, 0x3992, 0x6E38, 0x6E38, 0x10B3, + 0x6E39, 0x6E39, 0x3995, 0x6E3A, 0x6E3A, 0x0AF1, 0x6E3B, 0x6E3D, 0x3996, + 0x6E3E, 0x6E3E, 0x1F63, 0x6E3F, 0x6E42, 0x3999, 0x6E43, 0x6E43, 0x0B89, + 0x6E44, 0x6E44, 0x16F6, 0x6E45, 0x6E4C, 0x399D, 0x6E4D, 0x6E4D, 0x0E75, + 0x6E4E, 0x6E4E, 0x16ED, 0x6E4F, 0x6E52, 0x39A5, 0x6E53, 0x6E54, 0x16F2, + 0x6E55, 0x6E55, 0x39A9, 0x6E56, 0x6E56, 0x07B5, 0x6E57, 0x6E57, 0x39AA, + 0x6E58, 0x6E58, 0x0F53, 0x6E59, 0x6E5A, 0x39AB, 0x6E5B, 0x6E5B, 0x1160, + 0x6E5C, 0x6E5D, 0x39AD, 0x6E5E, 0x6E5E, 0x23DD, 0x6E5F, 0x6E5F, 0x16F0, + 0x6E60, 0x6E6A, 0x39AF, 0x6E6B, 0x6E6B, 0x16EE, 0x6E6C, 0x6E6D, 0x39BA, + 0x6E6E, 0x6E6E, 0x16EC, 0x6E6F, 0x6E6F, 0x216B, 0x6E70, 0x6E7D, 0x39BC, + 0x6E7E, 0x6E7E, 0x0E96, 0x6E7F, 0x6E7F, 0x0D41, 0x6E80, 0x6E82, 0x39CA, + 0x6E83, 0x6E83, 0x098E, 0x6E84, 0x6E84, 0x39CD, 0x6E85, 0x6E85, 0x0877, + 0x6E86, 0x6E86, 0x16F1, 0x6E87, 0x6E88, 0x39CE, 0x6E89, 0x6E89, 0x06C3, + 0x6E8A, 0x6E8E, 0x39D0, 0x6E8F, 0x6E8F, 0x1705, 0x6E90, 0x6E90, 0x10F7, + 0x6E91, 0x6E95, 0x39D5, 0x6E96, 0x6E96, 0x22B5, 0x6E97, 0x6E97, 0x39DA, + 0x6E98, 0x6E98, 0x16F9, 0x6E99, 0x6E9B, 0x39DB, 0x6E9C, 0x6E9C, 0x0A38, + 0x6E9D, 0x6E9D, 0x1F26, 0x6E9E, 0x6E9E, 0x39DE, 0x6E9F, 0x6E9F, 0x1707, + 0x6EA0, 0x6EA1, 0x39DF, 0x6EA2, 0x6EA2, 0x106E, 0x6EA3, 0x6EA4, 0x39E1, + 0x6EA5, 0x6EA5, 0x16FD, 0x6EA6, 0x6EA6, 0x39E3, 0x6EA7, 0x6EA7, 0x16FE, + 0x6EA8, 0x6EA9, 0x39E4, 0x6EAA, 0x6EAA, 0x0F17, 0x6EAB, 0x6EAE, 0x39E6, + 0x6EAF, 0x6EAF, 0x0DD2, 0x6EB0, 0x6EB0, 0x39EA, 0x6EB1, 0x6EB1, 0x16F8, + 0x6EB2, 0x6EB2, 0x16EF, 0x6EB3, 0x6EB3, 0x39EB, 0x6EB4, 0x6EB4, 0x1703, + 0x6EB5, 0x6EB5, 0x39EC, 0x6EB6, 0x6EB6, 0x0CB7, 0x6EB7, 0x6EB7, 0x1701, + 0x6EB8, 0x6EB9, 0x39ED, 0x6EBA, 0x6EBA, 0x0B4A, 0x6EBB, 0x6EBB, 0x1700, + 0x6EBC, 0x6EBC, 0x39EF, 0x6EBD, 0x6EBD, 0x16FF, 0x6EBE, 0x6EC0, 0x39F0, + 0x6EC1, 0x6EC1, 0x0521, 0x6EC2, 0x6EC2, 0x1706, 0x6EC3, 0x6EC3, 0x39F3, + 0x6EC4, 0x6EC4, 0x1E63, 0x6EC5, 0x6EC5, 0x2088, 0x6EC6, 0x6EC6, 0x39F4, + 0x6EC7, 0x6EC7, 0x05C2, 0x6EC8, 0x6ECA, 0x39F5, 0x6ECB, 0x6ECB, 0x1229, + 0x6ECC, 0x6ECC, 0x1EBD, 0x6ECD, 0x6ECD, 0x39F8, 0x6ECE, 0x6ECE, 0x2341, + 0x6ECF, 0x6ECF, 0x1704, 0x6ED0, 0x6ED0, 0x39F9, 0x6ED1, 0x6ED1, 0x07C1, + 0x6ED2, 0x6ED2, 0x39FA, 0x6ED3, 0x6ED3, 0x122F, 0x6ED4, 0x6ED4, 0x0E22, + 0x6ED5, 0x6ED5, 0x19A8, 0x6ED6, 0x6ED6, 0x39FB, 0x6ED7, 0x6ED7, 0x1702, + 0x6ED8, 0x6ED9, 0x39FC, 0x6EDA, 0x6EDA, 0x074F, 0x6EDB, 0x6EDD, 0x39FE, + 0x6EDE, 0x6EDE, 0x11CC, 0x6EDF, 0x6EDF, 0x16F7, 0x6EE0, 0x6EE0, 0x16FA, + 0x6EE1, 0x6EE1, 0x0AA1, 0x6EE2, 0x6EE2, 0x16FC, 0x6EE3, 0x6EE3, 0x3A01, + 0x6EE4, 0x6EE4, 0x0A72, 0x6EE5, 0x6EE5, 0x09AF, 0x6EE6, 0x6EE6, 0x0A77, + 0x6EE7, 0x6EE7, 0x3A02, 0x6EE8, 0x6EE8, 0x045E, 0x6EE9, 0x6EE9, 0x0E05, + 0x6EEA, 0x6EEB, 0x3A03, 0x6EEC, 0x6EEC, 0x1F4B, 0x6EED, 0x6EEE, 0x3A05, + 0x6EEF, 0x6EEF, 0x2292, 0x6EF0, 0x6EF1, 0x3A07, 0x6EF2, 0x6EF2, 0x2124, + 0x6EF3, 0x6EF3, 0x3A09, 0x6EF4, 0x6EF4, 0x05AF, 0x6EF5, 0x6EF6, 0x3A0A, + 0x6EF7, 0x6EF7, 0x2048, 0x6EF8, 0x6EF8, 0x23E0, 0x6EF9, 0x6EF9, 0x170D, + 0x6EFA, 0x6EFE, 0x3A0C, 0x6EFF, 0x6EFF, 0x2077, 0x6F00, 0x6F00, 0x3A11, + 0x6F01, 0x6F01, 0x223A, 0x6F02, 0x6F02, 0x0BCE, 0x6F03, 0x6F05, 0x3A12, + 0x6F06, 0x6F06, 0x0C00, 0x6F07, 0x6F08, 0x3A15, 0x6F09, 0x6F09, 0x1713, + 0x6F0A, 0x6F0E, 0x3A17, 0x6F0F, 0x6F0F, 0x0A50, 0x6F10, 0x6F12, 0x3A1C, + 0x6F13, 0x6F13, 0x09D7, 0x6F14, 0x6F14, 0x1006, 0x6F15, 0x6F15, 0x170C, + 0x6F16, 0x6F19, 0x3A1F, 0x6F1A, 0x6F1A, 0x20B1, 0x6F1B, 0x6F1F, 0x3A23, + 0x6F20, 0x6F20, 0x0B11, 0x6F21, 0x6F21, 0x3A28, 0x6F22, 0x6F22, 0x1F41, + 0x6F23, 0x6F23, 0x201C, 0x6F24, 0x6F24, 0x170B, 0x6F25, 0x6F28, 0x3A29, + 0x6F29, 0x6F29, 0x1714, 0x6F2A, 0x6F2A, 0x1712, 0x6F2B, 0x6F2B, 0x0AA5, + 0x6F2C, 0x6F2C, 0x22B8, 0x6F2D, 0x6F2D, 0x16FB, 0x6F2E, 0x6F2E, 0x3A2D, + 0x6F2F, 0x6F2F, 0x170E, 0x6F30, 0x6F30, 0x3A2E, 0x6F31, 0x6F31, 0x0D95, + 0x6F32, 0x6F32, 0x2276, 0x6F33, 0x6F33, 0x1165, 0x6F34, 0x6F35, 0x3A2F, + 0x6F36, 0x6F36, 0x170F, 0x6F37, 0x6F37, 0x3A31, 0x6F38, 0x6F38, 0x1F9B, + 0x6F39, 0x6F3D, 0x3A32, 0x6F3E, 0x6F3E, 0x1023, 0x6F3F, 0x6F3F, 0x1F9F, + 0x6F40, 0x6F40, 0x3A37, 0x6F41, 0x6F41, 0x25CA, 0x6F42, 0x6F45, 0x3A38, + 0x6F46, 0x6F47, 0x1709, 0x6F48, 0x6F4A, 0x3A3C, 0x6F4B, 0x6F4B, 0x1710, + 0x6F4C, 0x6F4C, 0x3A3F, 0x6F4D, 0x6F4D, 0x0EBA, 0x6F4E, 0x6F50, 0x3A40, + 0x6F51, 0x6F51, 0x20BE, 0x6F52, 0x6F53, 0x3A43, 0x6F54, 0x6F54, 0x1FB4, + 0x6F55, 0x6F57, 0x3A45, 0x6F58, 0x6F58, 0x0B8C, 0x6F59, 0x6F59, 0x23D7, + 0x6F5A, 0x6F5B, 0x3A48, 0x6F5C, 0x6F5C, 0x0C2E, 0x6F5D, 0x6F5D, 0x3A4A, + 0x6F5E, 0x6F5E, 0x0A61, 0x6F5F, 0x6F61, 0x3A4B, 0x6F62, 0x6F62, 0x1708, + 0x6F63, 0x6F63, 0x3A4E, 0x6F64, 0x6F64, 0x2105, 0x6F65, 0x6F65, 0x3A4F, + 0x6F66, 0x6F66, 0x0A13, 0x6F67, 0x6F6C, 0x3A50, 0x6F6D, 0x6F6D, 0x0E09, + 0x6F6E, 0x6F6E, 0x04D6, 0x6F6F, 0x6F6F, 0x23E1, 0x6F70, 0x6F70, 0x1FEC, + 0x6F71, 0x6F71, 0x3A56, 0x6F72, 0x6F72, 0x1719, 0x6F73, 0x6F73, 0x3A57, + 0x6F74, 0x6F74, 0x1711, 0x6F75, 0x6F76, 0x3A58, 0x6F77, 0x6F77, 0x23EA, + 0x6F78, 0x6F78, 0x1718, 0x6F79, 0x6F79, 0x3A5A, 0x6F7A, 0x6F7A, 0x171B, + 0x6F7B, 0x6F7B, 0x3A5B, 0x6F7C, 0x6F7C, 0x171A, 0x6F7D, 0x6F7E, 0x3A5C, + 0x6F7F, 0x6F7F, 0x23E3, 0x6F80, 0x6F80, 0x210E, 0x6F81, 0x6F83, 0x3A5E, + 0x6F84, 0x6F84, 0x04F3, 0x6F85, 0x6F85, 0x3A61, 0x6F86, 0x6F86, 0x1FA6, + 0x6F87, 0x6F87, 0x2004, 0x6F88, 0x6F88, 0x04DF, 0x6F89, 0x6F89, 0x1715, + 0x6F8A, 0x6F8B, 0x3A62, 0x6F8C, 0x6F8C, 0x1717, 0x6F8D, 0x6F8D, 0x1716, + 0x6F8E, 0x6F8E, 0x0BAD, 0x6F8F, 0x6F96, 0x3A64, 0x6F97, 0x6F97, 0x1F9D, + 0x6F98, 0x6F9B, 0x3A6C, 0x6F9C, 0x6F9C, 0x09A8, 0x6F9D, 0x6F9F, 0x3A70, + 0x6FA0, 0x6FA0, 0x23E5, 0x6FA1, 0x6FA1, 0x112B, 0x6FA2, 0x6FA3, 0x3A73, + 0x6FA4, 0x6FA4, 0x2264, 0x6FA5, 0x6FA6, 0x3A75, 0x6FA7, 0x6FA7, 0x171E, + 0x6FA8, 0x6FA8, 0x3A77, 0x6FA9, 0x6FA9, 0x24E2, 0x6FAA, 0x6FAD, 0x3A78, + 0x6FAE, 0x6FAE, 0x23DE, 0x6FAF, 0x6FB0, 0x3A7C, 0x6FB1, 0x6FB1, 0x1EC4, + 0x6FB2, 0x6FB2, 0x3A7E, 0x6FB3, 0x6FB3, 0x03CF, 0x6FB4, 0x6FB5, 0x3A7F, + 0x6FB6, 0x6FB6, 0x1720, 0x6FB7, 0x6FB8, 0x3A81, 0x6FB9, 0x6FB9, 0x171F, + 0x6FBA, 0x6FBF, 0x3A83, 0x6FC0, 0x6FC0, 0x0817, 0x6FC1, 0x6FC1, 0x22B6, + 0x6FC2, 0x6FC2, 0x1721, 0x6FC3, 0x6FC3, 0x20A9, 0x6FC4, 0x6FC8, 0x3A89, + 0x6FC9, 0x6FC9, 0x171D, 0x6FCA, 0x6FD0, 0x3A8E, 0x6FD1, 0x6FD1, 0x171C, + 0x6FD2, 0x6FD2, 0x045D, 0x6FD3, 0x6FD4, 0x3A95, 0x6FD5, 0x6FD5, 0x212B, + 0x6FD6, 0x6FD7, 0x3A97, 0x6FD8, 0x6FD8, 0x20A5, 0x6FD9, 0x6FDA, 0x3A99, + 0x6FDB, 0x6FDB, 0x268B, 0x6FDC, 0x6FDD, 0x3A9B, 0x6FDE, 0x6FDE, 0x1724, + 0x6FDF, 0x6FDF, 0x1F76, 0x6FE0, 0x6FE0, 0x1725, 0x6FE1, 0x6FE1, 0x1722, + 0x6FE2, 0x6FE3, 0x3A9D, 0x6FE4, 0x6FE4, 0x216D, 0x6FE5, 0x6FEA, 0x3A9F, + 0x6FEB, 0x6FEB, 0x2001, 0x6FEC, 0x6FED, 0x3AA5, 0x6FEE, 0x6FEE, 0x1723, + 0x6FEF, 0x6FEF, 0x1726, 0x6FF0, 0x6FF0, 0x2191, 0x6FF1, 0x6FF1, 0x1E50, + 0x6FF2, 0x6FF9, 0x3AA7, 0x6FFA, 0x6FFA, 0x1F9C, 0x6FFB, 0x6FFB, 0x3AAF, + 0x6FFC, 0x6FFC, 0x23DA, 0x6FFD, 0x6FFD, 0x3AB0, 0x6FFE, 0x6FFE, 0x2053, + 0x6FFF, 0x6FFF, 0x3AB1, 0x7000, 0x7004, 0x3AB2, 0x7005, 0x7005, 0x23E9, + 0x7006, 0x7006, 0x23E4, 0x7007, 0x7008, 0x3AB7, 0x7009, 0x7009, 0x21D5, + 0x700A, 0x700A, 0x3AB9, 0x700B, 0x700B, 0x23E6, 0x700C, 0x700E, 0x3ABA, + 0x700F, 0x700F, 0x23DF, 0x7010, 0x7010, 0x3ABD, 0x7011, 0x7011, 0x0BF8, + 0x7012, 0x7014, 0x3ABE, 0x7015, 0x7015, 0x1E4F, 0x7016, 0x7017, 0x3AC1, + 0x7018, 0x7018, 0x23D9, 0x7019, 0x7019, 0x3AC3, 0x701A, 0x701A, 0x1727, + 0x701B, 0x701B, 0x1729, 0x701C, 0x701C, 0x3AC4, 0x701D, 0x701D, 0x2014, + 0x701E, 0x701E, 0x3AC5, 0x701F, 0x701F, 0x23EC, 0x7020, 0x7020, 0x23EB, + 0x7021, 0x7022, 0x3AC6, 0x7023, 0x7023, 0x1728, 0x7024, 0x7026, 0x3AC8, + 0x7027, 0x7027, 0x23D8, 0x7028, 0x7028, 0x23EE, 0x7029, 0x702F, 0x3ACB, + 0x7030, 0x7030, 0x268E, 0x7031, 0x7031, 0x3AD2, 0x7032, 0x7032, 0x23ED, + 0x7033, 0x7034, 0x3AD3, 0x7035, 0x7035, 0x172B, 0x7036, 0x7038, 0x3AD5, + 0x7039, 0x7039, 0x172A, 0x703A, 0x703D, 0x3AD8, 0x703E, 0x703E, 0x1FFA, + 0x703F, 0x7042, 0x3ADC, 0x7043, 0x7043, 0x23D6, 0x7044, 0x7044, 0x23E8, + 0x7045, 0x704B, 0x3AE0, 0x704C, 0x704C, 0x0739, 0x704D, 0x704E, 0x3AE7, + 0x704F, 0x704F, 0x172C, 0x7050, 0x7050, 0x3AE9, 0x7051, 0x7051, 0x2106, + 0x7052, 0x7054, 0x3AEA, 0x7055, 0x7055, 0x200B, 0x7056, 0x7057, 0x3AED, + 0x7058, 0x7058, 0x2166, 0x7059, 0x705C, 0x3AEF, 0x705D, 0x705D, 0x23EF, + 0x705E, 0x705E, 0x172D, 0x705F, 0x7062, 0x3AF3, 0x7063, 0x7063, 0x2189, + 0x7064, 0x7064, 0x2058, 0x7065, 0x7066, 0x3AF7, 0x7067, 0x7067, 0x23E7, + 0x7068, 0x706A, 0x3AF9, 0x706B, 0x706B, 0x0805, 0x706C, 0x706C, 0x19EF, + 0x706D, 0x706D, 0x0AF5, 0x706E, 0x706E, 0x3AFC, 0x706F, 0x706F, 0x05A7, + 0x7070, 0x7070, 0x07E7, 0x7071, 0x7074, 0x3AFD, 0x7075, 0x7075, 0x0A32, + 0x7076, 0x7076, 0x1131, 0x7077, 0x7077, 0x3B01, 0x7078, 0x7078, 0x08F3, + 0x7079, 0x707B, 0x3B02, 0x707C, 0x707C, 0x1223, 0x707D, 0x707D, 0x3B05, + 0x707E, 0x707E, 0x1119, 0x707F, 0x707F, 0x049A, 0x7080, 0x7080, 0x19CC, + 0x7081, 0x7084, 0x3B06, 0x7085, 0x7085, 0x1913, 0x7086, 0x7088, 0x3B0A, + 0x7089, 0x7089, 0x0A56, 0x708A, 0x708A, 0x0539, 0x708B, 0x708D, 0x3B0D, + 0x708E, 0x708E, 0x1000, 0x708F, 0x7091, 0x3B10, 0x7092, 0x7092, 0x04D9, + 0x7093, 0x7093, 0x3B13, 0x7094, 0x7094, 0x0C8D, 0x7095, 0x7095, 0x0948, + 0x7096, 0x7096, 0x19CE, 0x7097, 0x7098, 0x3B14, 0x7099, 0x7099, 0x11CA, + 0x709A, 0x709B, 0x3B16, 0x709C, 0x709C, 0x19CD, 0x709D, 0x709D, 0x19CF, + 0x709E, 0x70AA, 0x3B18, 0x70AB, 0x70AB, 0x19D3, 0x70AC, 0x70AC, 0x0915, + 0x70AD, 0x70AD, 0x0E12, 0x70AE, 0x70AE, 0x0B9B, 0x70AF, 0x70AF, 0x08EB, + 0x70B0, 0x70B0, 0x3B25, 0x70B1, 0x70B1, 0x19D4, 0x70B2, 0x70B2, 0x3B26, + 0x70B3, 0x70B3, 0x0467, 0x70B4, 0x70B6, 0x3B27, 0x70B7, 0x70B7, 0x19D2, + 0x70B8, 0x70B8, 0x1149, 0x70B9, 0x70B9, 0x05C4, 0x70BA, 0x70BA, 0x3B2A, + 0x70BB, 0x70BB, 0x19D0, 0x70BC, 0x70BC, 0x09FF, 0x70BD, 0x70BD, 0x0508, + 0x70BE, 0x70BF, 0x3B2B, 0x70C0, 0x70C0, 0x19D1, 0x70C1, 0x70C1, 0x0DAD, + 0x70C2, 0x70C2, 0x09AE, 0x70C3, 0x70C3, 0x0E51, 0x70C4, 0x70C7, 0x3B2D, + 0x70C8, 0x70C8, 0x0A1B, 0x70C9, 0x70C9, 0x3B31, 0x70CA, 0x70CA, 0x19D6, + 0x70CB, 0x70CE, 0x3B32, 0x70CF, 0x70CF, 0x21A3, 0x70D0, 0x70D7, 0x3B36, + 0x70D8, 0x70D8, 0x079D, 0x70D9, 0x70D9, 0x09BE, 0x70DA, 0x70DA, 0x3B3E, + 0x70DB, 0x70DB, 0x11F1, 0x70DC, 0x70DE, 0x3B3F, 0x70DF, 0x70DF, 0x0FF5, + 0x70E0, 0x70E3, 0x3B42, 0x70E4, 0x70E4, 0x094B, 0x70E5, 0x70E5, 0x3B46, + 0x70E6, 0x70E6, 0x0650, 0x70E7, 0x70E7, 0x0D0E, 0x70E8, 0x70E8, 0x19D5, + 0x70E9, 0x70E9, 0x07F7, 0x70EA, 0x70EA, 0x3B47, 0x70EB, 0x70EB, 0x0E1F, + 0x70EC, 0x70EC, 0x08CE, 0x70ED, 0x70ED, 0x0CA3, 0x70EE, 0x70EE, 0x3B48, + 0x70EF, 0x70EF, 0x0F16, 0x70F0, 0x70F3, 0x3B49, 0x70F4, 0x70F4, 0x217A, + 0x70F5, 0x70F6, 0x3B4D, 0x70F7, 0x70F7, 0x0E9A, 0x70F8, 0x70F8, 0x3B4F, + 0x70F9, 0x70F9, 0x0BAC, 0x70FA, 0x70FC, 0x3B50, 0x70FD, 0x70FD, 0x0686, + 0x70FE, 0x70FF, 0x3B53, 0x7100, 0x7108, 0x3B55, 0x7109, 0x7109, 0x0FF2, + 0x710A, 0x710A, 0x076F, 0x710B, 0x710F, 0x3B5E, 0x7110, 0x7110, 0x19D7, + 0x7111, 0x7112, 0x3B63, 0x7113, 0x7113, 0x19D8, 0x7114, 0x7114, 0x3B65, + 0x7115, 0x7115, 0x07D5, 0x7116, 0x7116, 0x19D9, 0x7117, 0x7117, 0x3B66, + 0x7118, 0x7118, 0x19F0, 0x7119, 0x7119, 0x0423, 0x711A, 0x711A, 0x0676, + 0x711B, 0x7120, 0x3B67, 0x7121, 0x7121, 0x21A5, 0x7122, 0x7125, 0x3B6D, + 0x7126, 0x7126, 0x088A, 0x7127, 0x712E, 0x3B71, 0x712F, 0x712F, 0x19DA, + 0x7130, 0x7130, 0x100F, 0x7131, 0x7131, 0x19DB, 0x7132, 0x7135, 0x3B79, + 0x7136, 0x7136, 0x0C96, 0x7137, 0x7144, 0x3B7D, 0x7145, 0x7145, 0x19DF, + 0x7146, 0x7148, 0x3B8B, 0x7149, 0x7149, 0x2022, 0x714A, 0x714A, 0x19E1, + 0x714B, 0x714B, 0x3B8E, 0x714C, 0x714C, 0x07E2, 0x714D, 0x714D, 0x3B8F, + 0x714E, 0x714E, 0x0858, 0x714F, 0x7151, 0x3B90, 0x7152, 0x7152, 0x24D6, + 0x7153, 0x715B, 0x3B93, 0x715C, 0x715C, 0x19DD, 0x715D, 0x715D, 0x3B9C, + 0x715E, 0x715E, 0x0CF0, 0x715F, 0x7161, 0x3B9D, 0x7162, 0x7162, 0x233A, + 0x7163, 0x7163, 0x3BA0, 0x7164, 0x7164, 0x0ABF, 0x7165, 0x7165, 0x3BA1, + 0x7166, 0x7166, 0x19F1, 0x7167, 0x7167, 0x1176, 0x7168, 0x7168, 0x19DE, + 0x7169, 0x7169, 0x1EEE, 0x716A, 0x716B, 0x3BA2, 0x716C, 0x716C, 0x24D5, + 0x716D, 0x716D, 0x3BA4, 0x716E, 0x716E, 0x11F2, 0x716F, 0x7171, 0x3BA5, + 0x7172, 0x7172, 0x19E0, 0x7173, 0x7173, 0x19DC, 0x7174, 0x7177, 0x3BA8, + 0x7178, 0x7178, 0x19E2, 0x7179, 0x7179, 0x3BAC, 0x717A, 0x717A, 0x19E3, + 0x717B, 0x717C, 0x3BAD, 0x717D, 0x717D, 0x0CF8, 0x717E, 0x7183, 0x3BAF, + 0x7184, 0x7184, 0x0F15, 0x7185, 0x7189, 0x3BB5, 0x718A, 0x718A, 0x0FA7, + 0x718B, 0x718E, 0x3BBA, 0x718F, 0x718F, 0x0FD5, 0x7190, 0x7191, 0x3BBE, + 0x7192, 0x7192, 0x2228, 0x7193, 0x7193, 0x3BC0, 0x7194, 0x7194, 0x0CB6, + 0x7195, 0x7196, 0x3BC1, 0x7197, 0x7197, 0x24D7, 0x7198, 0x7198, 0x19E4, + 0x7199, 0x7199, 0x0F04, 0x719A, 0x719E, 0x3BC3, 0x719F, 0x719F, 0x0D83, + 0x71A0, 0x71A0, 0x19E8, 0x71A1, 0x71A7, 0x3BC8, 0x71A8, 0x71A8, 0x19E7, + 0x71A9, 0x71AB, 0x3BCF, 0x71AC, 0x71AC, 0x03C9, 0x71AD, 0x71B0, 0x3BD2, + 0x71B1, 0x71B1, 0x20FC, 0x71B2, 0x71B2, 0x3BD6, 0x71B3, 0x71B3, 0x19E5, + 0x71B4, 0x71B4, 0x3BD7, 0x71B5, 0x71B5, 0x19E6, 0x71B6, 0x71B8, 0x3BD8, + 0x71B9, 0x71B9, 0x19F2, 0x71BA, 0x71BD, 0x3BDB, 0x71BE, 0x71BE, 0x1E87, + 0x71BF, 0x71C0, 0x3BDF, 0x71C1, 0x71C1, 0x24D8, 0x71C2, 0x71C2, 0x3BE1, + 0x71C3, 0x71C3, 0x0C97, 0x71C4, 0x71C7, 0x3BE2, 0x71C8, 0x71C8, 0x1EBA, + 0x71C9, 0x71CD, 0x3BE6, 0x71CE, 0x71CE, 0x0A10, 0x71CF, 0x71D1, 0x3BEB, + 0x71D2, 0x71D2, 0x2119, 0x71D3, 0x71D3, 0x3BEE, 0x71D4, 0x71D4, 0x19EA, + 0x71D5, 0x71D5, 0x1009, 0x71D6, 0x71D8, 0x3BEF, 0x71D9, 0x71D9, 0x216C, + 0x71DA, 0x71DB, 0x3BF2, 0x71DC, 0x71DC, 0x24D9, 0x71DD, 0x71DE, 0x3BF4, + 0x71DF, 0x71DF, 0x2227, 0x71E0, 0x71E0, 0x19E9, 0x71E1, 0x71E4, 0x3BF6, + 0x71E5, 0x71E5, 0x1132, 0x71E6, 0x71E6, 0x1E5F, 0x71E7, 0x71E7, 0x19EB, + 0x71E8, 0x71EC, 0x3BFA, 0x71ED, 0x71ED, 0x229F, 0x71EE, 0x71EE, 0x1396, + 0x71EF, 0x71F3, 0x3BFF, 0x71F4, 0x71F4, 0x1F5D, 0x71F5, 0x71F8, 0x3C04, + 0x71F9, 0x71F9, 0x19EC, 0x71FA, 0x71FB, 0x3C08, 0x71FC, 0x71FC, 0x1FBC, + 0x71FD, 0x71FD, 0x3C0A, 0x71FE, 0x71FE, 0x24DA, 0x71FF, 0x71FF, 0x3C0B, + 0x7200, 0x7205, 0x3C0C, 0x7206, 0x7206, 0x0415, 0x7207, 0x720C, 0x3C12, + 0x720D, 0x720D, 0x2149, 0x720E, 0x720F, 0x3C18, 0x7210, 0x7210, 0x2046, + 0x7211, 0x721A, 0x3C1A, 0x721B, 0x721B, 0x2000, 0x721C, 0x721C, 0x3C24, + 0x721D, 0x721D, 0x19ED, 0x721E, 0x7227, 0x3C25, 0x7228, 0x7228, 0x19EE, + 0x7229, 0x7229, 0x3C2F, 0x722A, 0x722A, 0x1203, 0x722B, 0x722B, 0x3C30, + 0x722C, 0x722C, 0x0B81, 0x722D, 0x722F, 0x3C31, 0x7230, 0x7230, 0x196C, + 0x7231, 0x7231, 0x03B9, 0x7232, 0x7232, 0x2190, 0x7233, 0x7234, 0x3C34, + 0x7235, 0x7235, 0x0923, 0x7236, 0x7236, 0x06B3, 0x7237, 0x7237, 0x1036, + 0x7238, 0x7238, 0x03E1, 0x7239, 0x7239, 0x05DA, 0x723A, 0x723A, 0x2208, + 0x723B, 0x723B, 0x1269, 0x723C, 0x723C, 0x3C36, 0x723D, 0x723D, 0x0DA1, + 0x723E, 0x723E, 0x1EE6, 0x723F, 0x723F, 0x169D, 0x7240, 0x7246, 0x3C37, + 0x7247, 0x7247, 0x0BCB, 0x7248, 0x7248, 0x03F1, 0x7249, 0x724B, 0x3C3E, + 0x724C, 0x724C, 0x0B87, 0x724D, 0x724D, 0x1969, 0x724E, 0x7251, 0x3C41, + 0x7252, 0x7252, 0x196A, 0x7253, 0x7255, 0x3C45, 0x7256, 0x7256, 0x196B, + 0x7257, 0x7257, 0x3C48, 0x7258, 0x7258, 0x24C3, 0x7259, 0x7259, 0x0FE9, + 0x725A, 0x725A, 0x3C49, 0x725B, 0x725B, 0x0B64, 0x725C, 0x725C, 0x3C4A, + 0x725D, 0x725D, 0x1944, 0x725E, 0x725E, 0x3C4B, 0x725F, 0x725F, 0x0B15, + 0x7260, 0x7260, 0x3C4C, 0x7261, 0x7261, 0x0B18, 0x7262, 0x7262, 0x09B9, + 0x7263, 0x7265, 0x3C4D, 0x7266, 0x7266, 0x1945, 0x7267, 0x7267, 0x0B24, + 0x7268, 0x7268, 0x3C50, 0x7269, 0x7269, 0x0EFE, 0x726A, 0x726D, 0x3C51, + 0x726E, 0x726E, 0x1942, 0x726F, 0x726F, 0x1946, 0x7270, 0x7271, 0x3C55, + 0x7272, 0x7272, 0x0D35, 0x7273, 0x7274, 0x3C57, 0x7275, 0x7275, 0x0C20, + 0x7276, 0x7278, 0x3C59, 0x7279, 0x7279, 0x0E2B, 0x727A, 0x727A, 0x0F0D, + 0x727B, 0x727C, 0x3C5C, 0x727D, 0x727D, 0x20CC, 0x727E, 0x727F, 0x1947, + 0x7280, 0x7280, 0x0F19, 0x7281, 0x7281, 0x09D2, 0x7282, 0x7283, 0x3C5E, + 0x7284, 0x7284, 0x1949, 0x7285, 0x7289, 0x3C60, 0x728A, 0x728A, 0x05FE, + 0x728B, 0x728B, 0x194A, 0x728C, 0x728C, 0x3C65, 0x728D, 0x728D, 0x194B, + 0x728E, 0x728E, 0x3C66, 0x728F, 0x728F, 0x194C, 0x7290, 0x7291, 0x3C67, + 0x7292, 0x7292, 0x194D, 0x7293, 0x7295, 0x3C69, 0x7296, 0x7296, 0x2340, + 0x7297, 0x729E, 0x3C6C, 0x729F, 0x729F, 0x1943, 0x72A0, 0x72A1, 0x3C74, + 0x72A2, 0x72A2, 0x1ED1, 0x72A3, 0x72A6, 0x3C76, 0x72A7, 0x72A7, 0x21AC, + 0x72A8, 0x72AB, 0x3C7A, 0x72AC, 0x72AC, 0x0C89, 0x72AD, 0x72AD, 0x15EF, + 0x72AE, 0x72AE, 0x3C7E, 0x72AF, 0x72AF, 0x0655, 0x72B0, 0x72B0, 0x15F0, + 0x72B1, 0x72B3, 0x3C7F, 0x72B4, 0x72B4, 0x15F1, 0x72B5, 0x72B5, 0x3C82, + 0x72B6, 0x72B6, 0x1211, 0x72B7, 0x72B8, 0x15F2, 0x72B9, 0x72B9, 0x10B1, + 0x72BA, 0x72BF, 0x3C83, 0x72C0, 0x72C0, 0x22AF, 0x72C1, 0x72C1, 0x15F5, + 0x72C2, 0x72C2, 0x097E, 0x72C3, 0x72C3, 0x15F4, 0x72C4, 0x72C4, 0x05B3, + 0x72C5, 0x72C7, 0x3C89, 0x72C8, 0x72C8, 0x0420, 0x72C9, 0x72CC, 0x3C8C, + 0x72CD, 0x72CD, 0x15F7, 0x72CE, 0x72CE, 0x15F6, 0x72CF, 0x72CF, 0x3C90, + 0x72D0, 0x72D0, 0x07B3, 0x72D1, 0x72D1, 0x3C91, 0x72D2, 0x72D2, 0x15F8, + 0x72D3, 0x72D6, 0x3C92, 0x72D7, 0x72D7, 0x0710, 0x72D8, 0x72D8, 0x3C96, + 0x72D9, 0x72D9, 0x0900, 0x72DA, 0x72DD, 0x3C97, 0x72DE, 0x72DE, 0x0B5F, + 0x72DF, 0x72DF, 0x3C9B, 0x72E0, 0x72E0, 0x0794, 0x72E1, 0x72E1, 0x0897, + 0x72E2, 0x72E7, 0x3C9C, 0x72E8, 0x72E8, 0x15F9, 0x72E9, 0x72E9, 0x15FB, + 0x72EA, 0x72EB, 0x3CA2, 0x72EC, 0x72EC, 0x05FF, 0x72ED, 0x72ED, 0x0F2E, + 0x72EE, 0x72EE, 0x0D3F, 0x72EF, 0x72EF, 0x15FA, 0x72F0, 0x72F0, 0x1199, + 0x72F1, 0x72F1, 0x10E1, 0x72F2, 0x72F2, 0x15FC, 0x72F3, 0x72F3, 0x1600, + 0x72F4, 0x72F4, 0x15FD, 0x72F5, 0x72F6, 0x3CA4, 0x72F7, 0x72F7, 0x15FE, + 0x72F8, 0x72F8, 0x09D5, 0x72F9, 0x72F9, 0x21B6, 0x72FA, 0x72FB, 0x1602, + 0x72FC, 0x72FC, 0x09B2, 0x72FD, 0x72FD, 0x1E3D, 0x72FE, 0x72FF, 0x3CA6, + 0x7300, 0x7300, 0x3CA8, 0x7301, 0x7301, 0x15FF, 0x7302, 0x7302, 0x3CA9, + 0x7303, 0x7303, 0x1601, 0x7304, 0x7309, 0x3CAA, 0x730A, 0x730A, 0x1607, + 0x730B, 0x730D, 0x3CB0, 0x730E, 0x730E, 0x0A1D, 0x730F, 0x7312, 0x3CB3, + 0x7313, 0x7313, 0x1605, 0x7314, 0x7314, 0x3CB7, 0x7315, 0x7315, 0x160A, + 0x7316, 0x7316, 0x04C5, 0x7317, 0x7317, 0x1604, 0x7318, 0x731A, 0x3CB8, + 0x731B, 0x731B, 0x0AD2, 0x731C, 0x731C, 0x0489, 0x731D, 0x731D, 0x1609, + 0x731E, 0x731E, 0x1608, 0x731F, 0x7320, 0x3CBB, 0x7321, 0x7321, 0x1606, + 0x7322, 0x7322, 0x160B, 0x7323, 0x7324, 0x3CBD, 0x7325, 0x7325, 0x160D, + 0x7326, 0x7328, 0x3CBF, 0x7329, 0x7329, 0x0F94, 0x732A, 0x732A, 0x11EC, + 0x732B, 0x732B, 0x0AAD, 0x732C, 0x732C, 0x160E, 0x732D, 0x732D, 0x3CC2, + 0x732E, 0x732E, 0x0F44, 0x732F, 0x7330, 0x3CC3, 0x7331, 0x7331, 0x1610, + 0x7332, 0x7333, 0x3CC5, 0x7334, 0x7334, 0x07A6, 0x7335, 0x7335, 0x3CC7, + 0x7336, 0x7336, 0x2235, 0x7337, 0x7337, 0x18D4, 0x7338, 0x7338, 0x160F, + 0x7339, 0x7339, 0x160C, 0x733A, 0x733A, 0x3CC8, 0x733B, 0x733B, 0x2397, + 0x733C, 0x733D, 0x3CC9, 0x733E, 0x733E, 0x07C0, 0x733F, 0x733F, 0x10F6, + 0x7340, 0x7340, 0x3CCB, 0x7341, 0x7341, 0x2395, 0x7342, 0x7343, 0x3CCC, + 0x7344, 0x7344, 0x223F, 0x7345, 0x7345, 0x212A, 0x7346, 0x734C, 0x3CCE, + 0x734D, 0x734D, 0x1612, 0x734E, 0x734F, 0x3CD5, 0x7350, 0x7350, 0x1611, + 0x7351, 0x7351, 0x3CD7, 0x7352, 0x7352, 0x18D5, 0x7353, 0x7356, 0x3CD8, + 0x7357, 0x7357, 0x1613, 0x7358, 0x735F, 0x3CDC, 0x7360, 0x7360, 0x1614, + 0x7361, 0x7367, 0x3CE4, 0x7368, 0x7368, 0x1ED2, 0x7369, 0x7369, 0x3CEB, + 0x736A, 0x736A, 0x2396, 0x736B, 0x736B, 0x2398, 0x736C, 0x736C, 0x1615, + 0x736D, 0x736D, 0x0DF4, 0x736E, 0x736E, 0x3CEC, 0x736F, 0x736F, 0x1616, + 0x7370, 0x7370, 0x20A2, 0x7371, 0x7371, 0x3CED, 0x7372, 0x7372, 0x1F64, + 0x7373, 0x7374, 0x3CEE, 0x7375, 0x7375, 0x202B, 0x7376, 0x7376, 0x3CF0, + 0x7377, 0x7377, 0x2394, 0x7378, 0x7378, 0x2139, 0x7379, 0x7379, 0x3CF1, + 0x737A, 0x737A, 0x215F, 0x737B, 0x737B, 0x21C1, 0x737C, 0x737C, 0x239A, + 0x737D, 0x737D, 0x3CF2, 0x737E, 0x737E, 0x1617, 0x737F, 0x737F, 0x3CF3, + 0x7380, 0x7380, 0x2399, 0x7381, 0x7383, 0x3CF4, 0x7384, 0x7384, 0x0FC9, + 0x7385, 0x7386, 0x3CF7, 0x7387, 0x7387, 0x0A71, 0x7388, 0x7388, 0x3CF9, + 0x7389, 0x7389, 0x10D6, 0x738A, 0x738A, 0x3CFA, 0x738B, 0x738B, 0x0EA6, + 0x738C, 0x738D, 0x3CFB, 0x738E, 0x738E, 0x1818, 0x738F, 0x7390, 0x3CFD, + 0x7391, 0x7391, 0x1819, 0x7392, 0x7395, 0x3CFF, 0x7396, 0x7396, 0x08F0, + 0x7397, 0x739A, 0x3D03, 0x739B, 0x739B, 0x0A91, 0x739C, 0x739E, 0x3D07, + 0x739F, 0x739F, 0x181C, 0x73A0, 0x73A1, 0x3D0A, 0x73A2, 0x73A2, 0x181B, + 0x73A3, 0x73A8, 0x3D0C, 0x73A9, 0x73A9, 0x0E97, 0x73AA, 0x73AA, 0x3D12, + 0x73AB, 0x73AB, 0x0ABA, 0x73AC, 0x73AD, 0x3D13, 0x73AE, 0x73AE, 0x181A, + 0x73AF, 0x73AF, 0x07CC, 0x73B0, 0x73B0, 0x0F43, 0x73B1, 0x73B1, 0x3D15, + 0x73B2, 0x73B2, 0x0A2A, 0x73B3, 0x73B3, 0x1821, 0x73B4, 0x73B6, 0x3D16, + 0x73B7, 0x73B7, 0x1820, 0x73B8, 0x73B9, 0x3D19, 0x73BA, 0x73BA, 0x182C, + 0x73BB, 0x73BB, 0x046A, 0x73BC, 0x73BF, 0x3D1B, 0x73C0, 0x73C0, 0x1822, + 0x73C1, 0x73C1, 0x3D1F, 0x73C2, 0x73C2, 0x181E, 0x73C3, 0x73C7, 0x3D20, + 0x73C8, 0x73C8, 0x1824, 0x73C9, 0x73C9, 0x1823, 0x73CA, 0x73CA, 0x0CF3, + 0x73CB, 0x73CC, 0x3D25, 0x73CD, 0x73CD, 0x1185, 0x73CE, 0x73CE, 0x3D27, + 0x73CF, 0x73CF, 0x181D, 0x73D0, 0x73D0, 0x0646, 0x73D1, 0x73D1, 0x181F, + 0x73D2, 0x73D8, 0x3D28, 0x73D9, 0x73D9, 0x1826, 0x73DA, 0x73DD, 0x3D2F, + 0x73DE, 0x73DE, 0x182B, 0x73DF, 0x73DF, 0x3D33, 0x73E0, 0x73E0, 0x11E8, + 0x73E1, 0x73E4, 0x3D34, 0x73E5, 0x73E5, 0x1825, 0x73E6, 0x73E6, 0x3D38, + 0x73E7, 0x73E7, 0x182A, 0x73E8, 0x73E8, 0x3D39, 0x73E9, 0x73E9, 0x1829, + 0x73EA, 0x73EC, 0x3D3A, 0x73ED, 0x73ED, 0x03EB, 0x73EE, 0x73F1, 0x3D3D, + 0x73F2, 0x73F2, 0x182D, 0x73F3, 0x73FD, 0x3D41, 0x73FE, 0x73FE, 0x21C0, + 0x73FF, 0x73FF, 0x3D4C, 0x7400, 0x7402, 0x3D4D, 0x7403, 0x7403, 0x0C6F, + 0x7404, 0x7404, 0x3D50, 0x7405, 0x7405, 0x09B0, 0x7406, 0x7406, 0x09D8, + 0x7407, 0x7408, 0x3D51, 0x7409, 0x7409, 0x0A39, 0x740A, 0x740A, 0x1828, + 0x740B, 0x740E, 0x3D53, 0x740F, 0x740F, 0x182E, 0x7410, 0x7410, 0x0DEB, + 0x7411, 0x7419, 0x3D57, 0x741A, 0x741A, 0x1838, 0x741B, 0x741B, 0x1837, + 0x741C, 0x7421, 0x3D60, 0x7422, 0x7422, 0x121E, 0x7423, 0x7424, 0x3D66, + 0x7425, 0x7425, 0x1832, 0x7426, 0x7426, 0x1831, 0x7427, 0x7427, 0x3D68, + 0x7428, 0x7428, 0x1833, 0x7429, 0x7429, 0x3D69, 0x742A, 0x742A, 0x182F, + 0x742B, 0x742B, 0x3D6A, 0x742C, 0x742C, 0x1836, 0x742D, 0x742D, 0x3D6B, + 0x742E, 0x742E, 0x1835, 0x742F, 0x742F, 0x3D6C, 0x7430, 0x7430, 0x1834, + 0x7431, 0x7432, 0x3D6D, 0x7433, 0x7433, 0x0A1E, 0x7434, 0x7434, 0x0C56, + 0x7435, 0x7435, 0x0BBE, 0x7436, 0x7436, 0x0B84, 0x7437, 0x743B, 0x3D6F, + 0x743C, 0x743C, 0x0C6A, 0x743D, 0x743E, 0x3D74, 0x743F, 0x743F, 0x2460, + 0x7440, 0x7440, 0x3D76, 0x7441, 0x7441, 0x1839, 0x7442, 0x744A, 0x3D77, + 0x744B, 0x744B, 0x245C, 0x744C, 0x7454, 0x3D80, 0x7455, 0x7455, 0x183C, + 0x7456, 0x7456, 0x3D89, 0x7457, 0x7457, 0x183B, 0x7458, 0x7458, 0x3D8A, + 0x7459, 0x7459, 0x183D, 0x745A, 0x745A, 0x07AE, 0x745B, 0x745B, 0x1830, + 0x745C, 0x745C, 0x183A, 0x745D, 0x745D, 0x3D8B, 0x745E, 0x745E, 0x0CCB, + 0x745F, 0x745F, 0x0CE3, 0x7460, 0x7462, 0x3D8C, 0x7463, 0x7463, 0x215D, + 0x7464, 0x7468, 0x3D8F, 0x7469, 0x7469, 0x2225, 0x746A, 0x746A, 0x206A, + 0x746B, 0x746C, 0x3D94, 0x746D, 0x746D, 0x183F, 0x746E, 0x746F, 0x3D96, + 0x7470, 0x7470, 0x073E, 0x7471, 0x7475, 0x3D98, 0x7476, 0x7476, 0x1027, + 0x7477, 0x7477, 0x183E, 0x7478, 0x747D, 0x3D9D, 0x747E, 0x747E, 0x1840, + 0x747F, 0x747F, 0x3DA3, 0x7480, 0x7481, 0x1843, 0x7482, 0x7482, 0x3DA4, + 0x7483, 0x7483, 0x09F0, 0x7484, 0x7486, 0x3DA5, 0x7487, 0x7487, 0x1845, + 0x7488, 0x7488, 0x3DA8, 0x7489, 0x7489, 0x2461, 0x748A, 0x748A, 0x3DA9, + 0x748B, 0x748B, 0x1846, 0x748C, 0x748D, 0x3DAA, 0x748E, 0x748E, 0x1842, + 0x748F, 0x748F, 0x3DAC, 0x7490, 0x7490, 0x184A, 0x7491, 0x749B, 0x3DAD, + 0x749C, 0x749C, 0x1841, 0x749D, 0x749D, 0x3DB8, 0x749E, 0x749E, 0x1847, + 0x749F, 0x74A2, 0x3DB9, 0x74A3, 0x74A3, 0x245B, 0x74A4, 0x74A5, 0x3DBD, + 0x74A6, 0x74A6, 0x2462, 0x74A7, 0x74A7, 0x184B, 0x74A8, 0x74A9, 0x1848, + 0x74AA, 0x74AF, 0x3DBF, 0x74B0, 0x74B0, 0x1F54, 0x74B1, 0x74B9, 0x3DC5, + 0x74BA, 0x74BA, 0x184D, 0x74BB, 0x74BC, 0x3DCE, 0x74BD, 0x74BD, 0x245F, + 0x74BE, 0x74C9, 0x3DD0, 0x74CA, 0x74CA, 0x20EC, 0x74CB, 0x74CE, 0x3DDC, + 0x74CF, 0x74CF, 0x245D, 0x74D0, 0x74D1, 0x3DE0, 0x74D2, 0x74D2, 0x184C, + 0x74D3, 0x74D3, 0x3DE2, 0x74D4, 0x74D4, 0x2463, 0x74D5, 0x74D9, 0x3DE3, + 0x74DA, 0x74DA, 0x2464, 0x74DB, 0x74DB, 0x3DE8, 0x74DC, 0x74DC, 0x0728, + 0x74DD, 0x74DD, 0x3DE9, 0x74DE, 0x74DE, 0x1B32, 0x74DF, 0x74DF, 0x3DEA, + 0x74E0, 0x74E0, 0x1B33, 0x74E1, 0x74E1, 0x3DEB, 0x74E2, 0x74E2, 0x0BCF, + 0x74E3, 0x74E3, 0x03F5, 0x74E4, 0x74E4, 0x0C9A, 0x74E5, 0x74E5, 0x3DEC, + 0x74E6, 0x74E6, 0x0E90, 0x74E7, 0x74ED, 0x3DED, 0x74EE, 0x74EE, 0x0EDC, + 0x74EF, 0x74EF, 0x1903, 0x74F0, 0x74F3, 0x3DF4, 0x74F4, 0x74F4, 0x1904, + 0x74F5, 0x74F5, 0x3DF8, 0x74F6, 0x74F6, 0x0BDE, 0x74F7, 0x74F7, 0x054C, + 0x74F8, 0x74FE, 0x3DF9, 0x74FF, 0x74FF, 0x1905, 0x7500, 0x7503, 0x3E00, + 0x7504, 0x7504, 0x1188, 0x7505, 0x750B, 0x3E04, 0x750C, 0x750C, 0x24A5, + 0x750D, 0x750D, 0x1485, 0x750E, 0x750E, 0x3E0B, 0x750F, 0x750F, 0x1906, + 0x7510, 0x7510, 0x3E0C, 0x7511, 0x7511, 0x1907, 0x7512, 0x7512, 0x3E0D, + 0x7513, 0x7513, 0x1908, 0x7514, 0x7517, 0x3E0E, 0x7518, 0x7518, 0x06C5, + 0x7519, 0x7519, 0x14F8, 0x751A, 0x751A, 0x0D2E, 0x751B, 0x751B, 0x3E12, + 0x751C, 0x751C, 0x0E43, 0x751D, 0x751E, 0x3E13, 0x751F, 0x751F, 0x0D33, + 0x7520, 0x7522, 0x3E15, 0x7523, 0x7523, 0x1E70, 0x7524, 0x7524, 0x3E18, + 0x7525, 0x7525, 0x0D34, 0x7526, 0x7527, 0x3E19, 0x7528, 0x7528, 0x10A8, + 0x7529, 0x7529, 0x0D9B, 0x752A, 0x752A, 0x3E1B, 0x752B, 0x752B, 0x06A1, + 0x752C, 0x752C, 0x1B34, 0x752D, 0x752D, 0x042B, 0x752E, 0x752E, 0x3E1C, + 0x752F, 0x752F, 0x1734, 0x7530, 0x7530, 0x0E42, 0x7531, 0x7531, 0x10AE, + 0x7532, 0x7532, 0x084A, 0x7533, 0x7533, 0x0D23, 0x7534, 0x7534, 0x3E1D, + 0x7535, 0x7535, 0x05C8, 0x7536, 0x7536, 0x3E1E, 0x7537, 0x7537, 0x0B33, + 0x7538, 0x7538, 0x05CA, 0x7539, 0x7539, 0x3E1F, 0x753A, 0x753A, 0x1A78, + 0x753B, 0x753B, 0x07C2, 0x753C, 0x753D, 0x3E20, 0x753E, 0x753E, 0x1816, + 0x753F, 0x753F, 0x3E22, 0x7540, 0x7540, 0x1A79, 0x7541, 0x7544, 0x3E23, + 0x7545, 0x7545, 0x04CE, 0x7546, 0x7547, 0x3E27, 0x7548, 0x7548, 0x1A7C, + 0x7549, 0x754A, 0x3E29, 0x754B, 0x754B, 0x1A7B, 0x754C, 0x754C, 0x08B8, + 0x754D, 0x754D, 0x3E2B, 0x754E, 0x754E, 0x1A7A, 0x754F, 0x754F, 0x0EC6, + 0x7550, 0x7553, 0x3E2C, 0x7554, 0x7554, 0x0B90, 0x7555, 0x7558, 0x3E30, + 0x7559, 0x7559, 0x0A3D, 0x755A, 0x755A, 0x139E, 0x755B, 0x755B, 0x1A7D, + 0x755C, 0x755C, 0x0FBE, 0x755D, 0x755D, 0x208F, 0x755E, 0x7561, 0x3E34, + 0x7562, 0x7562, 0x1E42, 0x7563, 0x7564, 0x3E38, 0x7565, 0x7565, 0x0A7B, + 0x7566, 0x7566, 0x0C07, 0x7567, 0x7569, 0x3E3A, 0x756A, 0x756A, 0x0649, + 0x756B, 0x756B, 0x1F4E, 0x756C, 0x7571, 0x3E3D, 0x7572, 0x7572, 0x1A7E, + 0x7573, 0x7573, 0x3E43, 0x7574, 0x7574, 0x0510, 0x7575, 0x7575, 0x3E44, + 0x7576, 0x7576, 0x1EB1, 0x7577, 0x7577, 0x3E45, 0x7578, 0x7578, 0x0810, + 0x7579, 0x7579, 0x1A7F, 0x757A, 0x757E, 0x3E46, 0x757F, 0x757F, 0x1814, + 0x7580, 0x7582, 0x3E4B, 0x7583, 0x7583, 0x1A80, 0x7584, 0x7585, 0x3E4E, + 0x7586, 0x7586, 0x087F, 0x7587, 0x7587, 0x1E8B, 0x7588, 0x758A, 0x3E50, + 0x758B, 0x758B, 0x1BC6, 0x758C, 0x758E, 0x3E53, 0x758F, 0x758F, 0x0D7F, + 0x7590, 0x7590, 0x3E56, 0x7591, 0x7591, 0x1050, 0x7592, 0x7592, 0x1B60, + 0x7593, 0x7593, 0x3E57, 0x7594, 0x7594, 0x1B61, 0x7595, 0x7595, 0x3E58, + 0x7596, 0x7596, 0x1B62, 0x7597, 0x7597, 0x0A0F, 0x7598, 0x7598, 0x3E59, + 0x7599, 0x7599, 0x06E8, 0x759A, 0x759A, 0x08FD, 0x759B, 0x759C, 0x3E5A, + 0x759D, 0x759D, 0x1B64, 0x759E, 0x759E, 0x3E5C, 0x759F, 0x759F, 0x0B72, + 0x75A0, 0x75A0, 0x1B63, 0x75A1, 0x75A1, 0x101A, 0x75A2, 0x75A2, 0x3E5D, + 0x75A3, 0x75A3, 0x1B66, 0x75A4, 0x75A4, 0x03D7, 0x75A5, 0x75A5, 0x08BB, + 0x75A6, 0x75AA, 0x3E5E, 0x75AB, 0x75AB, 0x1066, 0x75AC, 0x75AC, 0x1B65, + 0x75AD, 0x75AD, 0x3E63, 0x75AE, 0x75AE, 0x0532, 0x75AF, 0x75AF, 0x0685, + 0x75B0, 0x75B0, 0x1B6C, 0x75B1, 0x75B1, 0x1B6B, 0x75B2, 0x75B2, 0x0BC2, + 0x75B3, 0x75B4, 0x1B67, 0x75B5, 0x75B5, 0x0546, 0x75B6, 0x75B7, 0x3E64, + 0x75B8, 0x75B8, 0x1B69, 0x75B9, 0x75B9, 0x118F, 0x75BA, 0x75BB, 0x3E66, + 0x75BC, 0x75BC, 0x0E2E, 0x75BD, 0x75BD, 0x0901, 0x75BE, 0x75BE, 0x0825, + 0x75BF, 0x75C1, 0x3E68, 0x75C2, 0x75C2, 0x1B6E, 0x75C3, 0x75C3, 0x1B6D, + 0x75C4, 0x75C4, 0x1B6A, 0x75C5, 0x75C5, 0x0468, 0x75C6, 0x75C6, 0x3E6B, + 0x75C7, 0x75C7, 0x11A1, 0x75C8, 0x75C8, 0x109D, 0x75C9, 0x75C9, 0x08E6, + 0x75CA, 0x75CA, 0x0C87, 0x75CB, 0x75CC, 0x3E6C, 0x75CD, 0x75CD, 0x1B70, + 0x75CE, 0x75D1, 0x3E6E, 0x75D2, 0x75D2, 0x1020, 0x75D3, 0x75D3, 0x3E72, + 0x75D4, 0x75D4, 0x11CB, 0x75D5, 0x75D5, 0x0792, 0x75D6, 0x75D6, 0x1B6F, + 0x75D7, 0x75D7, 0x3E73, 0x75D8, 0x75D8, 0x05FA, 0x75D9, 0x75D9, 0x1FC6, + 0x75DA, 0x75DA, 0x3E74, 0x75DB, 0x75DB, 0x0E65, 0x75DC, 0x75DD, 0x3E75, + 0x75DE, 0x75DE, 0x0BC5, 0x75DF, 0x75E1, 0x3E77, 0x75E2, 0x75E2, 0x09EA, + 0x75E3, 0x75E3, 0x1B71, 0x75E4, 0x75E4, 0x1B74, 0x75E5, 0x75E5, 0x3E7A, + 0x75E6, 0x75E6, 0x1B73, 0x75E7, 0x75E7, 0x1B76, 0x75E8, 0x75E8, 0x1B72, + 0x75E9, 0x75E9, 0x3E7B, 0x75EA, 0x75EA, 0x07D3, 0x75EB, 0x75EB, 0x1B75, + 0x75EC, 0x75EF, 0x3E7C, 0x75F0, 0x75F0, 0x0E08, 0x75F1, 0x75F1, 0x1B78, + 0x75F2, 0x75F3, 0x3E80, 0x75F4, 0x75F4, 0x04FA, 0x75F5, 0x75F8, 0x3E82, + 0x75F9, 0x75F9, 0x043D, 0x75FA, 0x75FB, 0x3E86, 0x75FC, 0x75FC, 0x1B79, + 0x75FD, 0x75FE, 0x3E88, 0x75FF, 0x75FF, 0x1B7A, 0x7600, 0x7600, 0x1B7C, + 0x7601, 0x7601, 0x0564, 0x7602, 0x7602, 0x25AE, 0x7603, 0x7603, 0x1B77, + 0x7604, 0x7604, 0x3E8A, 0x7605, 0x7605, 0x1B7D, 0x7606, 0x7609, 0x3E8B, + 0x760A, 0x760A, 0x1B80, 0x760B, 0x760B, 0x1F01, 0x760C, 0x760C, 0x1B7E, + 0x760D, 0x760D, 0x2200, 0x760E, 0x760F, 0x3E8F, 0x7610, 0x7610, 0x1B7B, + 0x7611, 0x7614, 0x3E91, 0x7615, 0x7615, 0x1B83, 0x7616, 0x7616, 0x3E95, + 0x7617, 0x7617, 0x1B7F, 0x7618, 0x7618, 0x1B82, 0x7619, 0x7619, 0x1B84, + 0x761A, 0x761A, 0x3E96, 0x761B, 0x761B, 0x1B85, 0x761C, 0x761D, 0x3E97, + 0x761E, 0x761E, 0x25B2, 0x761F, 0x761F, 0x0ED0, 0x7620, 0x7620, 0x1B88, + 0x7621, 0x7621, 0x1E97, 0x7622, 0x7622, 0x1B87, 0x7623, 0x7623, 0x3E99, + 0x7624, 0x7624, 0x0A3F, 0x7625, 0x7625, 0x1B81, 0x7626, 0x7626, 0x0D74, + 0x7627, 0x7627, 0x20AB, 0x7628, 0x7628, 0x3E9A, 0x7629, 0x7629, 0x0574, + 0x762A, 0x762A, 0x045A, 0x762B, 0x762B, 0x0E04, 0x762C, 0x762C, 0x3E9B, + 0x762D, 0x762D, 0x1B8A, 0x762E, 0x762F, 0x3E9C, 0x7630, 0x7630, 0x1B8B, + 0x7631, 0x7632, 0x3E9E, 0x7633, 0x7633, 0x1B90, 0x7634, 0x7634, 0x116F, + 0x7635, 0x7635, 0x1B8D, 0x7636, 0x7637, 0x3EA0, 0x7638, 0x7638, 0x0C8E, + 0x7639, 0x763A, 0x3EA2, 0x763B, 0x763B, 0x25B3, 0x763C, 0x763C, 0x1B86, + 0x763D, 0x763D, 0x3EA4, 0x763E, 0x763E, 0x1B8F, 0x763F, 0x763F, 0x1B8C, + 0x7640, 0x7640, 0x1B89, 0x7641, 0x7641, 0x3EA5, 0x7642, 0x7642, 0x2028, + 0x7643, 0x7643, 0x1B8E, 0x7644, 0x7645, 0x3EA6, 0x7646, 0x7647, 0x25AF, + 0x7648, 0x7648, 0x3EA8, 0x7649, 0x7649, 0x25B1, 0x764A, 0x764B, 0x3EA9, + 0x764C, 0x764C, 0x03B4, 0x764D, 0x764D, 0x1B91, 0x764E, 0x7653, 0x3EAB, + 0x7654, 0x7654, 0x1B93, 0x7655, 0x7655, 0x3EB1, 0x7656, 0x7656, 0x1B95, + 0x7657, 0x7657, 0x3EB2, 0x7658, 0x7658, 0x25AC, 0x7659, 0x765B, 0x3EB3, + 0x765C, 0x765C, 0x1B94, 0x765D, 0x765D, 0x3EB6, 0x765E, 0x765E, 0x1B92, + 0x765F, 0x765F, 0x1E4E, 0x7660, 0x7661, 0x3EB7, 0x7662, 0x7662, 0x2202, + 0x7663, 0x7663, 0x0FCB, 0x7664, 0x7664, 0x25AB, 0x7665, 0x7665, 0x2286, + 0x7666, 0x7666, 0x3EB9, 0x7667, 0x7667, 0x25AD, 0x7668, 0x7668, 0x3EBA, + 0x7669, 0x7669, 0x25B6, 0x766A, 0x766A, 0x3EBB, 0x766B, 0x766B, 0x1B96, + 0x766C, 0x766C, 0x21E3, 0x766D, 0x766E, 0x25B4, 0x766F, 0x766F, 0x1B97, + 0x7670, 0x7670, 0x222F, 0x7671, 0x7671, 0x2165, 0x7672, 0x7672, 0x25B7, + 0x7673, 0x7677, 0x3EBC, 0x7678, 0x7678, 0x0748, 0x7679, 0x767A, 0x3EC1, + 0x767B, 0x767B, 0x05A8, 0x767C, 0x767C, 0x1EE9, 0x767D, 0x767D, 0x03E2, + 0x767E, 0x767E, 0x03E4, 0x767F, 0x7681, 0x3EC3, 0x7682, 0x7682, 0x1130, + 0x7683, 0x7683, 0x3EC6, 0x7684, 0x7684, 0x05A5, 0x7685, 0x7685, 0x3EC7, + 0x7686, 0x7686, 0x08A5, 0x7687, 0x7687, 0x07DF, 0x7688, 0x7688, 0x1B2D, + 0x7689, 0x768A, 0x3EC8, 0x768B, 0x768B, 0x06D9, 0x768C, 0x768D, 0x3ECA, + 0x768E, 0x768E, 0x1B2E, 0x768F, 0x7690, 0x3ECC, 0x7691, 0x7691, 0x03B3, + 0x7692, 0x7692, 0x3ECE, 0x7693, 0x7693, 0x1B2F, 0x7694, 0x7695, 0x3ECF, + 0x7696, 0x7696, 0x0E9F, 0x7697, 0x7698, 0x3ED1, 0x7699, 0x7699, 0x1B30, + 0x769A, 0x769A, 0x1E25, 0x769B, 0x76A3, 0x3ED3, 0x76A4, 0x76A4, 0x1B31, + 0x76A5, 0x76AD, 0x3EDC, 0x76AE, 0x76AE, 0x0BC3, 0x76AF, 0x76B0, 0x3EE5, + 0x76B1, 0x76B1, 0x11E4, 0x76B2, 0x76B2, 0x1BC8, 0x76B3, 0x76B3, 0x3EE7, + 0x76B4, 0x76B4, 0x1BC9, 0x76B5, 0x76B7, 0x3EE8, 0x76B8, 0x76B8, 0x25C0, + 0x76B9, 0x76B9, 0x3EEB, 0x76BA, 0x76BA, 0x229A, 0x76BB, 0x76BE, 0x3EEC, + 0x76BF, 0x76BF, 0x0AF8, 0x76C0, 0x76C1, 0x3EF0, 0x76C2, 0x76C2, 0x10C0, + 0x76C3, 0x76C4, 0x3EF2, 0x76C5, 0x76C5, 0x11D0, 0x76C6, 0x76C6, 0x0BA9, + 0x76C7, 0x76C7, 0x3EF4, 0x76C8, 0x76C8, 0x1094, 0x76C9, 0x76C9, 0x3EF5, + 0x76CA, 0x76CA, 0x106D, 0x76CB, 0x76CC, 0x3EF6, 0x76CD, 0x76CD, 0x1A8B, + 0x76CE, 0x76CE, 0x03C6, 0x76CF, 0x76CF, 0x1156, 0x76D0, 0x76D0, 0x0FF7, + 0x76D1, 0x76D1, 0x0853, 0x76D2, 0x76D2, 0x0787, 0x76D3, 0x76D3, 0x3EF8, + 0x76D4, 0x76D4, 0x0985, 0x76D5, 0x76D5, 0x3EF9, 0x76D6, 0x76D6, 0x06C2, + 0x76D7, 0x76D7, 0x05A2, 0x76D8, 0x76D8, 0x0B8D, 0x76D9, 0x76DA, 0x3EFA, + 0x76DB, 0x76DB, 0x0D39, 0x76DC, 0x76DD, 0x3EFC, 0x76DE, 0x76DE, 0x226E, + 0x76DF, 0x76DF, 0x0AD0, 0x76E0, 0x76E0, 0x3EFE, 0x76E1, 0x76E1, 0x1FBD, + 0x76E2, 0x76E2, 0x3EFF, 0x76E3, 0x76E3, 0x1F84, 0x76E4, 0x76E4, 0x20B2, + 0x76E5, 0x76E5, 0x1A8C, 0x76E6, 0x76E6, 0x3F00, 0x76E7, 0x76E7, 0x2043, + 0x76E8, 0x76ED, 0x3F01, 0x76EE, 0x76EE, 0x0B22, 0x76EF, 0x76EF, 0x05E1, + 0x76F0, 0x76F0, 0x3F07, 0x76F1, 0x76F1, 0x1A58, 0x76F2, 0x76F2, 0x0AA9, + 0x76F3, 0x76F3, 0x3F08, 0x76F4, 0x76F4, 0x11B0, 0x76F5, 0x76F7, 0x3F09, + 0x76F8, 0x76F8, 0x0F4D, 0x76F9, 0x76F9, 0x1A5B, 0x76FA, 0x76FB, 0x3F0C, + 0x76FC, 0x76FC, 0x0B8F, 0x76FD, 0x76FD, 0x3F0E, 0x76FE, 0x76FE, 0x061B, + 0x76FF, 0x76FF, 0x3F0F, 0x7700, 0x7700, 0x3F10, 0x7701, 0x7701, 0x0D38, + 0x7702, 0x7703, 0x3F11, 0x7704, 0x7704, 0x1A59, 0x7705, 0x7706, 0x3F13, + 0x7707, 0x7708, 0x1A5C, 0x7709, 0x7709, 0x0AC1, 0x770A, 0x770A, 0x3F15, + 0x770B, 0x770B, 0x0941, 0x770C, 0x770C, 0x3F16, 0x770D, 0x770D, 0x1A5A, + 0x770E, 0x7718, 0x3F17, 0x7719, 0x7719, 0x1A60, 0x771A, 0x771A, 0x1A5E, + 0x771B, 0x771E, 0x3F22, 0x771F, 0x771F, 0x1187, 0x7720, 0x7720, 0x0AE4, + 0x7721, 0x7721, 0x3F26, 0x7722, 0x7722, 0x1A5F, 0x7723, 0x7725, 0x3F27, + 0x7726, 0x7726, 0x1A62, 0x7727, 0x7727, 0x3F2A, 0x7728, 0x7728, 0x1144, + 0x7729, 0x7729, 0x0FCC, 0x772A, 0x772C, 0x3F2B, 0x772D, 0x772D, 0x1A61, + 0x772E, 0x772E, 0x3F2E, 0x772F, 0x772F, 0x0AD5, 0x7730, 0x7734, 0x3F2F, + 0x7735, 0x7735, 0x1A63, 0x7736, 0x7736, 0x0981, 0x7737, 0x7737, 0x091B, + 0x7738, 0x7738, 0x1A64, 0x7739, 0x7739, 0x3F34, 0x773A, 0x773A, 0x0E4A, + 0x773B, 0x773B, 0x3F35, 0x773C, 0x773C, 0x1004, 0x773D, 0x773F, 0x3F36, + 0x7740, 0x7740, 0x1222, 0x7741, 0x7741, 0x1197, 0x7742, 0x7742, 0x3F39, + 0x7743, 0x7743, 0x1A68, 0x7744, 0x7746, 0x3F3A, 0x7747, 0x7747, 0x1A67, + 0x7748, 0x774E, 0x3F3D, 0x774F, 0x774F, 0x2684, 0x7750, 0x7751, 0x1A65, + 0x7752, 0x7759, 0x3F44, 0x775A, 0x775A, 0x1A69, 0x775B, 0x775B, 0x08D5, + 0x775C, 0x775D, 0x3F4C, 0x775E, 0x775E, 0x24EF, 0x775F, 0x7760, 0x3F4E, + 0x7761, 0x7761, 0x0DA4, 0x7762, 0x7762, 0x1A6B, 0x7763, 0x7763, 0x05FC, + 0x7764, 0x7764, 0x3F50, 0x7765, 0x7765, 0x1A6C, 0x7766, 0x7766, 0x0B23, + 0x7767, 0x7767, 0x3F51, 0x7768, 0x7768, 0x1A6A, 0x7769, 0x776A, 0x3F52, + 0x776B, 0x776B, 0x08AF, 0x776C, 0x776C, 0x048E, 0x776D, 0x7778, 0x3F54, + 0x7779, 0x7779, 0x0602, 0x777A, 0x777C, 0x3F60, 0x777D, 0x777D, 0x1A6F, + 0x777E, 0x777E, 0x1270, 0x777F, 0x777F, 0x1A6D, 0x7780, 0x7780, 0x1A70, + 0x7781, 0x7783, 0x3F63, 0x7784, 0x7784, 0x0AEE, 0x7785, 0x7785, 0x0517, + 0x7786, 0x778B, 0x3F66, 0x778C, 0x778C, 0x1A71, 0x778D, 0x778D, 0x1A6E, + 0x778E, 0x778E, 0x0F26, 0x778F, 0x7790, 0x3F6C, 0x7791, 0x7791, 0x1A72, + 0x7792, 0x7792, 0x0A9E, 0x7793, 0x7797, 0x3F6E, 0x7798, 0x7798, 0x24EE, + 0x7799, 0x779D, 0x3F73, 0x779E, 0x779E, 0x2074, 0x779F, 0x77A0, 0x1A73, + 0x77A1, 0x77A1, 0x3F78, 0x77A2, 0x77A2, 0x1495, 0x77A3, 0x77A4, 0x3F79, + 0x77A5, 0x77A5, 0x0BD2, 0x77A6, 0x77A6, 0x3F7B, 0x77A7, 0x77A7, 0x0C43, + 0x77A8, 0x77A8, 0x3F7C, 0x77A9, 0x77A9, 0x11F4, 0x77AA, 0x77AA, 0x05AA, + 0x77AB, 0x77AB, 0x3F7D, 0x77AC, 0x77AC, 0x0DA7, 0x77AD, 0x77AD, 0x2687, + 0x77AE, 0x77AF, 0x3F7E, 0x77B0, 0x77B0, 0x1A75, 0x77B1, 0x77B2, 0x3F80, + 0x77B3, 0x77B3, 0x0E5C, 0x77B4, 0x77B4, 0x3F82, 0x77B5, 0x77B5, 0x1A76, + 0x77B6, 0x77BA, 0x3F83, 0x77BB, 0x77BB, 0x1151, 0x77BC, 0x77BC, 0x24F0, + 0x77BD, 0x77BD, 0x1A77, 0x77BE, 0x77BE, 0x3F88, 0x77BF, 0x77BF, 0x1D7E, + 0x77C0, 0x77C6, 0x3F89, 0x77C7, 0x77C7, 0x268D, 0x77C8, 0x77CC, 0x3F90, + 0x77CD, 0x77CD, 0x1397, 0x77CE, 0x77D6, 0x3F95, 0x77D7, 0x77D7, 0x0526, + 0x77D8, 0x77D9, 0x3F9E, 0x77DA, 0x77DA, 0x22A0, 0x77DB, 0x77DB, 0x0AB1, + 0x77DC, 0x77DC, 0x1BCA, 0x77DD, 0x77E1, 0x3FA0, 0x77E2, 0x77E2, 0x0D4F, + 0x77E3, 0x77E3, 0x105A, 0x77E4, 0x77E4, 0x3FA5, 0x77E5, 0x77E5, 0x11A9, + 0x77E6, 0x77E6, 0x3FA6, 0x77E7, 0x77E7, 0x1B1A, 0x77E8, 0x77E8, 0x3FA7, + 0x77E9, 0x77E9, 0x0907, 0x77EA, 0x77EA, 0x3FA8, 0x77EB, 0x77EB, 0x0894, + 0x77EC, 0x77EC, 0x1B1B, 0x77ED, 0x77ED, 0x060B, 0x77EE, 0x77EE, 0x03B6, + 0x77EF, 0x77EF, 0x1FAB, 0x77F0, 0x77F2, 0x3FA9, 0x77F3, 0x77F3, 0x0D46, + 0x77F4, 0x77F5, 0x3FAC, 0x77F6, 0x77F6, 0x1A22, 0x77F7, 0x77F7, 0x3FAE, + 0x77F8, 0x77F8, 0x1A23, 0x77F9, 0x77FC, 0x3FAF, 0x77FD, 0x77FD, 0x0F08, + 0x77FE, 0x77FE, 0x064C, 0x77FF, 0x77FF, 0x0980, 0x7800, 0x7800, 0x1A24, + 0x7801, 0x7801, 0x0A92, 0x7802, 0x7802, 0x0CE9, 0x7803, 0x7808, 0x3FB3, + 0x7809, 0x7809, 0x1A25, 0x780A, 0x780B, 0x3FB9, 0x780C, 0x780C, 0x0C15, + 0x780D, 0x780D, 0x0940, 0x780E, 0x7810, 0x3FBB, 0x7811, 0x7811, 0x1A28, + 0x7812, 0x7812, 0x0BB9, 0x7813, 0x7813, 0x3FBE, 0x7814, 0x7814, 0x0FF9, + 0x7815, 0x7815, 0x3FBF, 0x7816, 0x7816, 0x1206, 0x7817, 0x7818, 0x1A26, + 0x7819, 0x7819, 0x3FC0, 0x781A, 0x781A, 0x100B, 0x781B, 0x781B, 0x3FC1, + 0x781C, 0x781D, 0x1A2B, 0x781E, 0x781E, 0x3FC2, 0x781F, 0x781F, 0x1A30, + 0x7820, 0x7822, 0x3FC3, 0x7823, 0x7823, 0x1A34, 0x7824, 0x7824, 0x3FC6, + 0x7825, 0x7825, 0x1A32, 0x7826, 0x7826, 0x1A3A, 0x7827, 0x7827, 0x1189, + 0x7828, 0x7828, 0x3FC7, 0x7829, 0x7829, 0x1A35, 0x782A, 0x782B, 0x3FC8, + 0x782C, 0x782C, 0x1A33, 0x782D, 0x782D, 0x1A2A, 0x782E, 0x782F, 0x3FCA, + 0x7830, 0x7830, 0x0BAA, 0x7831, 0x7833, 0x3FCC, 0x7834, 0x7834, 0x0BE5, + 0x7835, 0x7836, 0x3FCF, 0x7837, 0x7837, 0x0D22, 0x7838, 0x7838, 0x1115, + 0x7839, 0x783B, 0x1A2D, 0x783C, 0x783C, 0x1A31, 0x783D, 0x783D, 0x3FD1, + 0x783E, 0x783E, 0x09E4, 0x783F, 0x783F, 0x3FD2, 0x7840, 0x7840, 0x0524, + 0x7841, 0x7842, 0x3FD3, 0x7843, 0x7843, 0x26A8, 0x7844, 0x7844, 0x3FD5, + 0x7845, 0x7845, 0x0741, 0x7846, 0x7846, 0x3FD6, 0x7847, 0x7847, 0x1A3C, + 0x7848, 0x784B, 0x3FD7, 0x784C, 0x784C, 0x1A3D, 0x784D, 0x784D, 0x3FDB, + 0x784E, 0x784E, 0x1A36, 0x784F, 0x784F, 0x3FDC, 0x7850, 0x7850, 0x1A3B, + 0x7851, 0x7851, 0x3FDD, 0x7852, 0x7852, 0x0F07, 0x7853, 0x7854, 0x3FDE, + 0x7855, 0x7855, 0x0DAB, 0x7856, 0x7857, 0x1A38, 0x7858, 0x785C, 0x3FE0, + 0x785D, 0x785D, 0x0F62, 0x785E, 0x7863, 0x3FE5, 0x7864, 0x7864, 0x24E9, + 0x7865, 0x7867, 0x3FEB, 0x7868, 0x7868, 0x24E5, 0x7869, 0x7869, 0x3FEE, + 0x786A, 0x786A, 0x1A3E, 0x786B, 0x786B, 0x0A3B, 0x786C, 0x786C, 0x1097, + 0x786D, 0x786D, 0x1A37, 0x786E, 0x786E, 0x0C92, 0x786F, 0x786F, 0x21FA, + 0x7870, 0x7876, 0x3FEF, 0x7877, 0x7877, 0x0862, 0x7878, 0x787B, 0x3FF6, + 0x787C, 0x787C, 0x0BB1, 0x787D, 0x7886, 0x3FFA, 0x7887, 0x7887, 0x1A42, + 0x7888, 0x7888, 0x4004, 0x7889, 0x7889, 0x05D0, 0x788A, 0x788B, 0x4005, + 0x788C, 0x788C, 0x0A5C, 0x788D, 0x788D, 0x03B8, 0x788E, 0x788E, 0x0DDE, + 0x788F, 0x7890, 0x4007, 0x7891, 0x7891, 0x0417, 0x7892, 0x7892, 0x4009, + 0x7893, 0x7893, 0x1A40, 0x7894, 0x7896, 0x400A, 0x7897, 0x7897, 0x0E9C, + 0x7898, 0x7898, 0x05C3, 0x7899, 0x7899, 0x400D, 0x789A, 0x789A, 0x1A41, + 0x789B, 0x789B, 0x1A3F, 0x789C, 0x789C, 0x1A43, 0x789D, 0x789E, 0x400E, + 0x789F, 0x789F, 0x05DB, 0x78A0, 0x78A0, 0x4010, 0x78A1, 0x78A1, 0x1A44, + 0x78A2, 0x78A2, 0x4011, 0x78A3, 0x78A3, 0x1A45, 0x78A4, 0x78A4, 0x4012, + 0x78A5, 0x78A5, 0x1A48, 0x78A6, 0x78A6, 0x4013, 0x78A7, 0x78A7, 0x0435, + 0x78A8, 0x78A8, 0x4014, 0x78A9, 0x78A9, 0x2148, 0x78AA, 0x78AC, 0x4015, + 0x78AD, 0x78AD, 0x24E4, 0x78AE, 0x78AF, 0x4018, 0x78B0, 0x78B0, 0x0BB7, + 0x78B1, 0x78B1, 0x0861, 0x78B2, 0x78B2, 0x1A46, 0x78B3, 0x78B3, 0x0E0F, + 0x78B4, 0x78B4, 0x04B1, 0x78B5, 0x78B7, 0x401A, 0x78B8, 0x78B8, 0x24E6, + 0x78B9, 0x78B9, 0x1A47, 0x78BA, 0x78BA, 0x20F7, 0x78BB, 0x78BB, 0x401D, + 0x78BC, 0x78BC, 0x206B, 0x78BD, 0x78BD, 0x401E, 0x78BE, 0x78BE, 0x0B4E, + 0x78BF, 0x78C0, 0x401F, 0x78C1, 0x78C1, 0x0548, 0x78C2, 0x78C4, 0x4021, + 0x78C5, 0x78C5, 0x0400, 0x78C6, 0x78C8, 0x4024, 0x78C9, 0x78C9, 0x1A4B, + 0x78CA, 0x78CA, 0x09C5, 0x78CB, 0x78CB, 0x056B, 0x78CC, 0x78CF, 0x4027, + 0x78D0, 0x78D0, 0x0B8E, 0x78D1, 0x78D3, 0x402B, 0x78D4, 0x78D4, 0x1A49, + 0x78D5, 0x78D5, 0x0951, 0x78D6, 0x78D8, 0x402E, 0x78D9, 0x78D9, 0x1A4A, + 0x78DA, 0x78DA, 0x22A7, 0x78DB, 0x78E2, 0x4031, 0x78E3, 0x78E3, 0x24EC, + 0x78E4, 0x78E6, 0x4039, 0x78E7, 0x78E7, 0x24EB, 0x78E8, 0x78E8, 0x0B08, + 0x78E9, 0x78EB, 0x403C, 0x78EC, 0x78EC, 0x1A4C, 0x78ED, 0x78EE, 0x403F, + 0x78EF, 0x78EF, 0x24E3, 0x78F0, 0x78F1, 0x4041, 0x78F2, 0x78F2, 0x1A4D, + 0x78F3, 0x78F3, 0x4043, 0x78F4, 0x78F4, 0x1A4F, 0x78F5, 0x78F6, 0x4044, + 0x78F7, 0x78F7, 0x0A20, 0x78F8, 0x78F9, 0x4046, 0x78FA, 0x78FA, 0x07DC, + 0x78FB, 0x78FC, 0x4048, 0x78FD, 0x78FD, 0x24EA, 0x78FE, 0x78FF, 0x404A, + 0x7900, 0x7900, 0x404C, 0x7901, 0x7901, 0x0889, 0x7902, 0x7904, 0x404D, + 0x7905, 0x7905, 0x1A4E, 0x7906, 0x790D, 0x4050, 0x790E, 0x790E, 0x1E92, + 0x790F, 0x7912, 0x4058, 0x7913, 0x7913, 0x1A50, 0x7914, 0x7918, 0x405C, + 0x7919, 0x7919, 0x1E27, 0x791A, 0x791D, 0x4061, 0x791E, 0x791E, 0x1A52, + 0x791F, 0x7923, 0x4065, 0x7924, 0x7924, 0x1A51, 0x7925, 0x7925, 0x406A, + 0x7926, 0x7926, 0x1FE6, 0x7927, 0x7929, 0x406B, 0x792A, 0x792A, 0x24E7, + 0x792B, 0x792B, 0x2012, 0x792C, 0x792C, 0x1EEC, 0x792D, 0x7930, 0x406E, + 0x7931, 0x7931, 0x24E8, 0x7932, 0x7933, 0x4072, 0x7934, 0x7934, 0x1A53, + 0x7935, 0x7939, 0x4074, 0x793A, 0x793A, 0x0D55, 0x793B, 0x793B, 0x19F8, + 0x793C, 0x793C, 0x09DC, 0x793D, 0x793D, 0x4079, 0x793E, 0x793E, 0x0D20, + 0x793F, 0x793F, 0x407A, 0x7940, 0x7940, 0x19F9, 0x7941, 0x7941, 0x0C0D, + 0x7942, 0x7945, 0x407B, 0x7946, 0x7946, 0x19FA, 0x7947, 0x7947, 0x407F, + 0x7948, 0x7948, 0x0C0C, 0x7949, 0x7949, 0x19FB, 0x794A, 0x7952, 0x4080, + 0x7953, 0x7953, 0x19FE, 0x7954, 0x7955, 0x4089, 0x7956, 0x7956, 0x1243, + 0x7957, 0x7957, 0x1A01, 0x7958, 0x7959, 0x408B, 0x795A, 0x795A, 0x19FF, + 0x795B, 0x795C, 0x19FC, 0x795D, 0x795D, 0x1200, 0x795E, 0x795E, 0x0D2A, + 0x795F, 0x795F, 0x0DE3, 0x7960, 0x7960, 0x1A02, 0x7961, 0x7961, 0x408D, + 0x7962, 0x7962, 0x1A00, 0x7963, 0x7964, 0x408E, 0x7965, 0x7965, 0x0F56, + 0x7966, 0x7966, 0x4090, 0x7967, 0x7967, 0x1A04, 0x7968, 0x7968, 0x0BD0, + 0x7969, 0x796C, 0x4091, 0x796D, 0x796D, 0x0833, 0x796E, 0x796E, 0x4095, + 0x796F, 0x796F, 0x1A03, 0x7970, 0x7976, 0x4096, 0x7977, 0x7977, 0x059C, + 0x7978, 0x7978, 0x080B, 0x7979, 0x7979, 0x409D, 0x797A, 0x797A, 0x1A05, + 0x797B, 0x797F, 0x409E, 0x7980, 0x7980, 0x130B, 0x7981, 0x7981, 0x08CC, + 0x7982, 0x7983, 0x40A3, 0x7984, 0x7984, 0x0A62, 0x7985, 0x7985, 0x1A06, + 0x7986, 0x7989, 0x40A5, 0x798A, 0x798A, 0x1A07, 0x798B, 0x798C, 0x40A9, + 0x798D, 0x798D, 0x1F66, 0x798E, 0x798E, 0x24DC, 0x798F, 0x798F, 0x069E, + 0x7990, 0x7999, 0x40AB, 0x799A, 0x799A, 0x1A08, 0x799B, 0x79A5, 0x40B5, + 0x79A6, 0x79A6, 0x26A2, 0x79A7, 0x79A7, 0x1A09, 0x79A8, 0x79A9, 0x40C0, + 0x79AA, 0x79AA, 0x24DD, 0x79AB, 0x79AD, 0x40C2, 0x79AE, 0x79AE, 0x200E, + 0x79AF, 0x79AF, 0x40C5, 0x79B0, 0x79B0, 0x24DB, 0x79B1, 0x79B1, 0x1EB8, + 0x79B2, 0x79B2, 0x40C6, 0x79B3, 0x79B3, 0x1A0A, 0x79B4, 0x79B8, 0x40C7, + 0x79B9, 0x79B9, 0x10D2, 0x79BA, 0x79BA, 0x1264, 0x79BB, 0x79BB, 0x09D6, + 0x79BC, 0x79BC, 0x40CC, 0x79BD, 0x79BD, 0x0C5A, 0x79BE, 0x79BE, 0x0783, + 0x79BF, 0x79BF, 0x40CD, 0x79C0, 0x79C0, 0x0FAE, 0x79C1, 0x79C1, 0x0DB2, + 0x79C2, 0x79C2, 0x40CE, 0x79C3, 0x79C3, 0x0E6B, 0x79C4, 0x79C5, 0x40CF, + 0x79C6, 0x79C6, 0x06CC, 0x79C7, 0x79C8, 0x40D1, 0x79C9, 0x79C9, 0x0465, + 0x79CA, 0x79CA, 0x40D3, 0x79CB, 0x79CB, 0x0C6C, 0x79CC, 0x79CC, 0x40D4, + 0x79CD, 0x79CD, 0x11D5, 0x79CE, 0x79D0, 0x40D5, 0x79D1, 0x79D1, 0x0953, + 0x79D2, 0x79D2, 0x0AF0, 0x79D3, 0x79D4, 0x40D8, 0x79D5, 0x79D5, 0x1B1D, + 0x79D6, 0x79D7, 0x40DA, 0x79D8, 0x79D8, 0x0ADD, 0x79D9, 0x79DE, 0x40DC, + 0x79DF, 0x79DF, 0x123F, 0x79E0, 0x79E2, 0x40E2, 0x79E3, 0x79E3, 0x1B1F, + 0x79E4, 0x79E4, 0x04F8, 0x79E5, 0x79E5, 0x40E5, 0x79E6, 0x79E6, 0x0C55, + 0x79E7, 0x79E7, 0x1016, 0x79E8, 0x79E8, 0x40E6, 0x79E9, 0x79E9, 0x11C7, + 0x79EA, 0x79EA, 0x40E7, 0x79EB, 0x79EB, 0x1B20, 0x79EC, 0x79EC, 0x40E8, + 0x79ED, 0x79ED, 0x1B1E, 0x79EE, 0x79EE, 0x40E9, 0x79EF, 0x79EF, 0x0812, + 0x79F0, 0x79F0, 0x04EB, 0x79F1, 0x79F7, 0x40EA, 0x79F8, 0x79F8, 0x08A6, + 0x79F9, 0x79FA, 0x40F1, 0x79FB, 0x79FB, 0x104D, 0x79FC, 0x79FC, 0x40F3, + 0x79FD, 0x79FD, 0x07F5, 0x79FE, 0x79FF, 0x40F4, 0x7A00, 0x7A00, 0x0F0E, + 0x7A01, 0x7A01, 0x40F6, 0x7A02, 0x7A02, 0x1B24, 0x7A03, 0x7A03, 0x1B23, + 0x7A04, 0x7A05, 0x40F7, 0x7A06, 0x7A06, 0x1B21, 0x7A07, 0x7A0A, 0x40F9, + 0x7A0B, 0x7A0B, 0x04F1, 0x7A0C, 0x7A0C, 0x40FD, 0x7A0D, 0x7A0D, 0x0D0D, + 0x7A0E, 0x7A0E, 0x0DA5, 0x7A0F, 0x7A13, 0x40FE, 0x7A14, 0x7A14, 0x1B26, + 0x7A15, 0x7A16, 0x4103, 0x7A17, 0x7A17, 0x03E9, 0x7A18, 0x7A19, 0x4105, + 0x7A1A, 0x7A1A, 0x11C8, 0x7A1B, 0x7A1D, 0x4107, 0x7A1E, 0x7A1E, 0x1B25, + 0x7A1F, 0x7A1F, 0x410A, 0x7A20, 0x7A20, 0x0512, 0x7A21, 0x7A22, 0x410B, + 0x7A23, 0x7A23, 0x1D8F, 0x7A24, 0x7A2D, 0x410D, 0x7A2E, 0x7A2E, 0x2295, + 0x7A2F, 0x7A30, 0x4117, 0x7A31, 0x7A31, 0x1E80, 0x7A32, 0x7A32, 0x4119, + 0x7A33, 0x7A33, 0x0ED7, 0x7A34, 0x7A36, 0x411A, 0x7A37, 0x7A37, 0x1B28, + 0x7A38, 0x7A38, 0x411D, 0x7A39, 0x7A39, 0x1B27, 0x7A3A, 0x7A3A, 0x411E, + 0x7A3B, 0x7A3B, 0x059F, 0x7A3C, 0x7A3C, 0x084D, 0x7A3D, 0x7A3D, 0x0811, + 0x7A3E, 0x7A3E, 0x411F, 0x7A3F, 0x7A3F, 0x06E0, 0x7A40, 0x7A40, 0x2677, + 0x7A41, 0x7A45, 0x4120, 0x7A46, 0x7A46, 0x0B25, 0x7A47, 0x7A4B, 0x4125, + 0x7A4C, 0x7A4C, 0x2624, 0x7A4D, 0x7A4D, 0x1F69, 0x7A4E, 0x7A4E, 0x222B, + 0x7A4F, 0x7A50, 0x412A, 0x7A51, 0x7A51, 0x1B29, 0x7A52, 0x7A56, 0x412C, + 0x7A57, 0x7A57, 0x0DE0, 0x7A58, 0x7A60, 0x4131, 0x7A61, 0x7A61, 0x257F, + 0x7A62, 0x7A62, 0x1F5B, 0x7A63, 0x7A68, 0x413A, 0x7A69, 0x7A69, 0x219B, + 0x7A6A, 0x7A6A, 0x4140, 0x7A6B, 0x7A6B, 0x267D, 0x7A6C, 0x7A6F, 0x4141, + 0x7A70, 0x7A70, 0x1B2C, 0x7A71, 0x7A73, 0x4145, 0x7A74, 0x7A74, 0x0FD1, + 0x7A75, 0x7A75, 0x4148, 0x7A76, 0x7A76, 0x08EE, 0x7A77, 0x7A77, 0x0C6B, + 0x7A78, 0x7A79, 0x1B9A, 0x7A7A, 0x7A7A, 0x0962, 0x7A7B, 0x7A7E, 0x4149, + 0x7A7F, 0x7A7F, 0x052C, 0x7A80, 0x7A80, 0x1B9C, 0x7A81, 0x7A81, 0x0E6C, + 0x7A82, 0x7A82, 0x414D, 0x7A83, 0x7A83, 0x0C51, 0x7A84, 0x7A84, 0x114E, + 0x7A85, 0x7A85, 0x414E, 0x7A86, 0x7A86, 0x1B9D, 0x7A87, 0x7A87, 0x414F, + 0x7A88, 0x7A88, 0x1B9E, 0x7A89, 0x7A8C, 0x4150, 0x7A8D, 0x7A8D, 0x0C4C, + 0x7A8E, 0x7A90, 0x4154, 0x7A91, 0x7A91, 0x102B, 0x7A92, 0x7A92, 0x11CE, + 0x7A93, 0x7A94, 0x4157, 0x7A95, 0x7A95, 0x1B9F, 0x7A96, 0x7A96, 0x08A2, + 0x7A97, 0x7A97, 0x0533, 0x7A98, 0x7A98, 0x08EC, 0x7A99, 0x7A9B, 0x4159, + 0x7A9C, 0x7A9C, 0x055F, 0x7A9D, 0x7A9D, 0x0EE0, 0x7A9E, 0x7A9E, 0x415C, + 0x7A9F, 0x7A9F, 0x096C, 0x7AA0, 0x7AA0, 0x1BA1, 0x7AA1, 0x7AA4, 0x415D, + 0x7AA5, 0x7AA5, 0x0987, 0x7AA6, 0x7AA6, 0x1BA0, 0x7AA7, 0x7AA7, 0x4161, + 0x7AA8, 0x7AA8, 0x1BA3, 0x7AA9, 0x7AA9, 0x21A0, 0x7AAA, 0x7AAA, 0x2186, + 0x7AAB, 0x7AAB, 0x4162, 0x7AAC, 0x7AAC, 0x1BA2, 0x7AAD, 0x7AAD, 0x1BA4, + 0x7AAE, 0x7AAE, 0x20ED, 0x7AAF, 0x7AB2, 0x4163, 0x7AB3, 0x7AB3, 0x1BA5, + 0x7AB4, 0x7AB5, 0x4167, 0x7AB6, 0x7AB6, 0x25B9, 0x7AB7, 0x7AB9, 0x4169, + 0x7ABA, 0x7ABA, 0x1FEA, 0x7ABB, 0x7ABE, 0x416C, 0x7ABF, 0x7ABF, 0x0A47, + 0x7AC0, 0x7AC3, 0x4170, 0x7AC4, 0x7AC4, 0x1EA4, 0x7AC5, 0x7AC5, 0x20E1, + 0x7AC6, 0x7AC6, 0x4174, 0x7AC7, 0x7AC7, 0x25B8, 0x7AC8, 0x7AC8, 0x2260, + 0x7AC9, 0x7AC9, 0x4175, 0x7ACA, 0x7ACA, 0x20E2, 0x7ACB, 0x7ACB, 0x09EB, + 0x7ACC, 0x7AD5, 0x4176, 0x7AD6, 0x7AD6, 0x0D91, 0x7AD7, 0x7AD8, 0x4180, + 0x7AD9, 0x7AD9, 0x115F, 0x7ADA, 0x7ADD, 0x4182, 0x7ADE, 0x7ADE, 0x08E9, + 0x7ADF, 0x7ADF, 0x08E8, 0x7AE0, 0x7AE0, 0x1163, 0x7AE1, 0x7AE2, 0x4186, + 0x7AE3, 0x7AE3, 0x092F, 0x7AE4, 0x7AE4, 0x4188, 0x7AE5, 0x7AE5, 0x0E60, + 0x7AE6, 0x7AE6, 0x1B99, 0x7AE7, 0x7AE9, 0x4189, 0x7AEA, 0x7AEA, 0x2141, + 0x7AEB, 0x7AEC, 0x418C, 0x7AED, 0x7AED, 0x08B0, 0x7AEE, 0x7AEE, 0x418E, + 0x7AEF, 0x7AEF, 0x060A, 0x7AF0, 0x7AF5, 0x418F, 0x7AF6, 0x7AF6, 0x1FC7, + 0x7AF7, 0x7AF8, 0x4195, 0x7AF9, 0x7AF9, 0x11F0, 0x7AFA, 0x7AFA, 0x1C63, + 0x7AFB, 0x7AFC, 0x4197, 0x7AFD, 0x7AFD, 0x1C64, 0x7AFE, 0x7AFE, 0x4199, + 0x7AFF, 0x7AFF, 0x06C8, 0x7B00, 0x7B02, 0x419A, 0x7B03, 0x7B04, 0x1C66, + 0x7B05, 0x7B05, 0x419D, 0x7B06, 0x7B06, 0x03D5, 0x7B07, 0x7B07, 0x419E, + 0x7B08, 0x7B08, 0x1C65, 0x7B09, 0x7B09, 0x419F, 0x7B0A, 0x7B0A, 0x1C69, + 0x7B0B, 0x7B0B, 0x0DE6, 0x7B0C, 0x7B0E, 0x41A0, 0x7B0F, 0x7B0F, 0x1C6B, + 0x7B10, 0x7B10, 0x41A3, 0x7B11, 0x7B11, 0x0F71, 0x7B12, 0x7B13, 0x41A4, + 0x7B14, 0x7B14, 0x0433, 0x7B15, 0x7B15, 0x1C68, 0x7B16, 0x7B18, 0x41A6, + 0x7B19, 0x7B19, 0x1C6F, 0x7B1A, 0x7B1A, 0x41A9, 0x7B1B, 0x7B1B, 0x05B2, + 0x7B1C, 0x7B1D, 0x41AA, 0x7B1E, 0x7B1E, 0x1C77, 0x7B1F, 0x7B1F, 0x41AC, + 0x7B20, 0x7B20, 0x1C72, 0x7B21, 0x7B23, 0x41AD, 0x7B24, 0x7B24, 0x1C74, + 0x7B25, 0x7B25, 0x1C73, 0x7B26, 0x7B26, 0x0698, 0x7B27, 0x7B27, 0x41B0, + 0x7B28, 0x7B28, 0x0428, 0x7B29, 0x7B29, 0x41B1, 0x7B2A, 0x7B2A, 0x1C6E, + 0x7B2B, 0x7B2B, 0x1C6A, 0x7B2C, 0x7B2C, 0x05BB, 0x7B2D, 0x7B2D, 0x41B2, + 0x7B2E, 0x7B2E, 0x1C70, 0x7B2F, 0x7B30, 0x41B3, 0x7B31, 0x7B31, 0x1C71, + 0x7B32, 0x7B32, 0x41B5, 0x7B33, 0x7B33, 0x1C75, 0x7B34, 0x7B37, 0x41B6, + 0x7B38, 0x7B38, 0x1C6D, 0x7B39, 0x7B39, 0x41BA, 0x7B3A, 0x7B3A, 0x0856, + 0x7B3B, 0x7B3B, 0x41BB, 0x7B3C, 0x7B3C, 0x0A46, 0x7B3D, 0x7B3D, 0x41BC, + 0x7B3E, 0x7B3E, 0x1C76, 0x7B3F, 0x7B44, 0x41BD, 0x7B45, 0x7B45, 0x1C7A, + 0x7B46, 0x7B46, 0x1E41, 0x7B47, 0x7B47, 0x1C6C, 0x7B48, 0x7B48, 0x41C3, + 0x7B49, 0x7B49, 0x05A9, 0x7B4A, 0x7B4A, 0x41C4, 0x7B4B, 0x7B4B, 0x08BF, + 0x7B4C, 0x7B4C, 0x1C7C, 0x7B4D, 0x7B4E, 0x41C5, 0x7B4F, 0x7B4F, 0x0641, + 0x7B50, 0x7B50, 0x097D, 0x7B51, 0x7B51, 0x11FD, 0x7B52, 0x7B52, 0x0E63, + 0x7B53, 0x7B53, 0x41C7, 0x7B54, 0x7B54, 0x0573, 0x7B55, 0x7B55, 0x41C8, + 0x7B56, 0x7B56, 0x04A6, 0x7B57, 0x7B57, 0x41C9, 0x7B58, 0x7B58, 0x1C78, + 0x7B59, 0x7B59, 0x41CA, 0x7B5A, 0x7B5A, 0x1C79, 0x7B5B, 0x7B5B, 0x0CF1, + 0x7B5C, 0x7B5C, 0x41CB, 0x7B5D, 0x7B5D, 0x1C7D, 0x7B5E, 0x7B5F, 0x41CC, + 0x7B60, 0x7B60, 0x1C7E, 0x7B61, 0x7B61, 0x41CE, 0x7B62, 0x7B62, 0x1C81, + 0x7B63, 0x7B66, 0x41CF, 0x7B67, 0x7B67, 0x25E4, 0x7B68, 0x7B6D, 0x41D3, + 0x7B6E, 0x7B6E, 0x1C7F, 0x7B6F, 0x7B70, 0x41D9, 0x7B71, 0x7B71, 0x1C83, + 0x7B72, 0x7B72, 0x1C82, 0x7B73, 0x7B74, 0x41DB, 0x7B75, 0x7B75, 0x1C7B, + 0x7B76, 0x7B76, 0x41DD, 0x7B77, 0x7B77, 0x0977, 0x7B78, 0x7B78, 0x41DE, + 0x7B79, 0x7B79, 0x0514, 0x7B7A, 0x7B7A, 0x41DF, 0x7B7B, 0x7B7B, 0x1C80, + 0x7B7C, 0x7B7D, 0x41E0, 0x7B7E, 0x7B7E, 0x0C26, 0x7B7F, 0x7B7F, 0x41E2, + 0x7B80, 0x7B80, 0x0865, 0x7B81, 0x7B84, 0x41E3, 0x7B85, 0x7B85, 0x1C8B, + 0x7B86, 0x7B8A, 0x41E7, 0x7B8B, 0x7B8B, 0x1F86, 0x7B8C, 0x7B8C, 0x41EC, + 0x7B8D, 0x7B8D, 0x0718, 0x7B8E, 0x7B8F, 0x41ED, 0x7B90, 0x7B90, 0x1C84, + 0x7B91, 0x7B93, 0x41EF, 0x7B94, 0x7B94, 0x0474, 0x7B95, 0x7B95, 0x0813, + 0x7B96, 0x7B96, 0x41F2, 0x7B97, 0x7B97, 0x0DD8, 0x7B98, 0x7B9B, 0x41F3, + 0x7B9C, 0x7B9C, 0x1C8D, 0x7B9D, 0x7B9D, 0x1C89, 0x7B9E, 0x7BA0, 0x41F7, + 0x7BA1, 0x7BA1, 0x0735, 0x7BA2, 0x7BA2, 0x1C8E, 0x7BA3, 0x7BA5, 0x41FA, + 0x7BA6, 0x7BA7, 0x1C85, 0x7BA8, 0x7BA8, 0x1C8A, 0x7BA9, 0x7BA9, 0x0A88, + 0x7BAA, 0x7BAA, 0x1C8C, 0x7BAB, 0x7BAB, 0x1C8F, 0x7BAC, 0x7BAC, 0x1C88, + 0x7BAD, 0x7BAD, 0x0870, 0x7BAE, 0x7BB0, 0x41FD, 0x7BB1, 0x7BB1, 0x0F51, + 0x7BB2, 0x7BB3, 0x4200, 0x7BB4, 0x7BB4, 0x1C90, 0x7BB5, 0x7BB7, 0x4202, + 0x7BB8, 0x7BB8, 0x1C87, 0x7BB9, 0x7BBF, 0x4205, 0x7BC0, 0x7BC0, 0x1FB3, + 0x7BC1, 0x7BC1, 0x1C92, 0x7BC2, 0x7BC3, 0x420C, 0x7BC4, 0x7BC4, 0x1EEF, + 0x7BC5, 0x7BC5, 0x420E, 0x7BC6, 0x7BC6, 0x120A, 0x7BC7, 0x7BC7, 0x0BC9, + 0x7BC8, 0x7BC8, 0x420F, 0x7BC9, 0x7BC9, 0x22A4, 0x7BCA, 0x7BCA, 0x4210, + 0x7BCB, 0x7BCB, 0x25E8, 0x7BCC, 0x7BCC, 0x1C93, 0x7BCD, 0x7BD0, 0x4211, + 0x7BD1, 0x7BD1, 0x1C91, 0x7BD2, 0x7BD2, 0x4215, 0x7BD3, 0x7BD3, 0x0A4F, + 0x7BD4, 0x7BD8, 0x4216, 0x7BD9, 0x7BD9, 0x06D8, 0x7BDA, 0x7BDA, 0x1C95, + 0x7BDB, 0x7BDC, 0x421B, 0x7BDD, 0x7BDD, 0x1C94, 0x7BDE, 0x7BE0, 0x421D, + 0x7BE1, 0x7BE1, 0x055E, 0x7BE2, 0x7BE3, 0x4220, 0x7BE4, 0x7BE4, 0x25E3, + 0x7BE5, 0x7BE6, 0x1C96, 0x7BE7, 0x7BE8, 0x4222, 0x7BE9, 0x7BE9, 0x2111, + 0x7BEA, 0x7BEA, 0x1C98, 0x7BEB, 0x7BED, 0x4224, 0x7BEE, 0x7BEE, 0x09A5, + 0x7BEF, 0x7BF0, 0x4227, 0x7BF1, 0x7BF1, 0x09D4, 0x7BF2, 0x7BF2, 0x4229, + 0x7BF3, 0x7BF3, 0x25E6, 0x7BF4, 0x7BF6, 0x422A, 0x7BF7, 0x7BF7, 0x0BB2, + 0x7BF8, 0x7BFB, 0x422D, 0x7BFC, 0x7BFC, 0x1C9B, 0x7BFD, 0x7BFD, 0x4231, + 0x7BFE, 0x7BFE, 0x1C9A, 0x7BFF, 0x7BFF, 0x4232, 0x7C00, 0x7C00, 0x25E7, + 0x7C01, 0x7C06, 0x4233, 0x7C07, 0x7C07, 0x055B, 0x7C08, 0x7C0A, 0x4239, + 0x7C0B, 0x7C0B, 0x1C9E, 0x7C0C, 0x7C0C, 0x1C99, 0x7C0D, 0x7C0D, 0x2041, + 0x7C0E, 0x7C0E, 0x423C, 0x7C0F, 0x7C0F, 0x1C9C, 0x7C10, 0x7C15, 0x423D, + 0x7C16, 0x7C16, 0x1C9D, 0x7C17, 0x7C1D, 0x4243, 0x7C1E, 0x7C1E, 0x25EA, + 0x7C1F, 0x7C1F, 0x1C9F, 0x7C20, 0x7C20, 0x424A, 0x7C21, 0x7C21, 0x1F8F, + 0x7C22, 0x7C22, 0x424B, 0x7C23, 0x7C23, 0x25EC, 0x7C24, 0x7C25, 0x424C, + 0x7C26, 0x7C26, 0x1CA1, 0x7C27, 0x7C27, 0x07DE, 0x7C28, 0x7C29, 0x424E, + 0x7C2A, 0x7C2A, 0x1CA0, 0x7C2B, 0x7C2B, 0x25EB, 0x7C2C, 0x7C37, 0x4250, + 0x7C38, 0x7C38, 0x1CA2, 0x7C39, 0x7C3C, 0x425C, 0x7C3D, 0x7C3D, 0x20D0, + 0x7C3E, 0x7C3E, 0x201D, 0x7C3F, 0x7C3F, 0x0485, 0x7C40, 0x7C40, 0x1CA4, + 0x7C41, 0x7C41, 0x1CA3, 0x7C42, 0x7C42, 0x4260, 0x7C43, 0x7C43, 0x1FF7, + 0x7C44, 0x7C4B, 0x4261, 0x7C4C, 0x7C4C, 0x1E8D, 0x7C4D, 0x7C4D, 0x0821, + 0x7C4E, 0x7C5B, 0x4269, 0x7C5C, 0x7C5C, 0x25E9, 0x7C5D, 0x7C5E, 0x4277, + 0x7C5F, 0x7C5F, 0x25EE, 0x7C60, 0x7C60, 0x203A, 0x7C61, 0x7C63, 0x4279, + 0x7C64, 0x7C64, 0x2693, 0x7C65, 0x7C68, 0x427C, 0x7C69, 0x7C69, 0x25E5, + 0x7C6A, 0x7C6A, 0x25ED, 0x7C6B, 0x7C6B, 0x4280, 0x7C6C, 0x7C6C, 0x2009, + 0x7C6D, 0x7C6D, 0x4281, 0x7C6E, 0x7C6E, 0x2065, 0x7C6F, 0x7C71, 0x4282, + 0x7C72, 0x7C72, 0x26A3, 0x7C73, 0x7C73, 0x0ADC, 0x7C74, 0x7C74, 0x12F5, + 0x7C75, 0x7C7A, 0x4285, 0x7C7B, 0x7C7B, 0x09CB, 0x7C7C, 0x7C7C, 0x1CCA, + 0x7C7D, 0x7C7D, 0x122E, 0x7C7E, 0x7C88, 0x428B, 0x7C89, 0x7C89, 0x0678, + 0x7C8A, 0x7C90, 0x4296, 0x7C91, 0x7C91, 0x1CCC, 0x7C92, 0x7C92, 0x09EC, + 0x7C93, 0x7C94, 0x429D, 0x7C95, 0x7C95, 0x0BE8, 0x7C96, 0x7C96, 0x429F, + 0x7C97, 0x7C97, 0x0559, 0x7C98, 0x7C98, 0x1154, 0x7C99, 0x7C9B, 0x42A0, + 0x7C9C, 0x7C9C, 0x1CCE, 0x7C9D, 0x7C9D, 0x1CCD, 0x7C9E, 0x7C9E, 0x1CCF, + 0x7C9F, 0x7C9F, 0x0DCF, 0x7CA0, 0x7CA1, 0x42A3, 0x7CA2, 0x7CA2, 0x1CD0, + 0x7CA3, 0x7CA3, 0x42A5, 0x7CA4, 0x7CA4, 0x1104, 0x7CA5, 0x7CA5, 0x11DF, + 0x7CA6, 0x7CA9, 0x42A6, 0x7CAA, 0x7CAA, 0x067D, 0x7CAB, 0x7CAD, 0x42AA, + 0x7CAE, 0x7CAE, 0x0A01, 0x7CAF, 0x7CB0, 0x42AD, 0x7CB1, 0x7CB1, 0x0A04, + 0x7CB2, 0x7CB2, 0x1CD1, 0x7CB3, 0x7CB3, 0x08DB, 0x7CB4, 0x7CB8, 0x42AF, + 0x7CB9, 0x7CB9, 0x0565, 0x7CBA, 0x7CBB, 0x42B4, 0x7CBC, 0x7CBD, 0x1CD2, + 0x7CBE, 0x7CBE, 0x08DA, 0x7CBF, 0x7CC0, 0x42B6, 0x7CC1, 0x7CC1, 0x1CD4, + 0x7CC2, 0x7CC4, 0x42B8, 0x7CC5, 0x7CC5, 0x1CD9, 0x7CC6, 0x7CC6, 0x42BB, + 0x7CC7, 0x7CC7, 0x1CD5, 0x7CC8, 0x7CC8, 0x1CD8, 0x7CC9, 0x7CC9, 0x42BC, + 0x7CCA, 0x7CCA, 0x07B4, 0x7CCB, 0x7CCB, 0x42BD, 0x7CCC, 0x7CCD, 0x1CD6, + 0x7CCE, 0x7CD4, 0x42BE, 0x7CD5, 0x7CD5, 0x06DD, 0x7CD6, 0x7CD6, 0x0E1A, + 0x7CD7, 0x7CD7, 0x1CDA, 0x7CD8, 0x7CD8, 0x42C5, 0x7CD9, 0x7CD9, 0x04A1, + 0x7CDA, 0x7CDB, 0x42C6, 0x7CDC, 0x7CDC, 0x0AD8, 0x7CDD, 0x7CDD, 0x25F5, + 0x7CDE, 0x7CDE, 0x1EFC, 0x7CDF, 0x7CDF, 0x1126, 0x7CE0, 0x7CE0, 0x0944, + 0x7CE1, 0x7CE6, 0x42C8, 0x7CE7, 0x7CE7, 0x2024, 0x7CE8, 0x7CE8, 0x1CDB, + 0x7CE9, 0x7CEE, 0x42CE, 0x7CEF, 0x7CEF, 0x0B75, 0x7CF0, 0x7CF0, 0x269B, + 0x7CF1, 0x7CF1, 0x42D4, 0x7CF2, 0x7CF2, 0x25F3, 0x7CF3, 0x7CF3, 0x42D5, + 0x7CF4, 0x7CF4, 0x22D9, 0x7CF5, 0x7CF5, 0x42D6, 0x7CF6, 0x7CF6, 0x25F4, + 0x7CF7, 0x7CF7, 0x42D7, 0x7CF8, 0x7CF8, 0x1CE7, 0x7CF9, 0x7CF9, 0x241B, + 0x7CFA, 0x7CFA, 0x42D8, 0x7CFB, 0x7CFB, 0x0F22, 0x7CFC, 0x7CFD, 0x42D9, + 0x7CFE, 0x7CFE, 0x1FC8, 0x7CFF, 0x7CFF, 0x42DB, 0x7D00, 0x7D00, 0x1F7B, + 0x7D01, 0x7D01, 0x42DC, 0x7D02, 0x7D02, 0x241D, 0x7D03, 0x7D03, 0x42DD, + 0x7D04, 0x7D04, 0x224C, 0x7D05, 0x7D05, 0x1F48, 0x7D06, 0x7D06, 0x241C, + 0x7D07, 0x7D08, 0x241E, 0x7D09, 0x7D09, 0x20FF, 0x7D0A, 0x7D0A, 0x0ED8, + 0x7D0B, 0x7D0B, 0x219A, 0x7D0C, 0x7D0C, 0x42DE, 0x7D0D, 0x7D0D, 0x2091, + 0x7D0E, 0x7D0F, 0x42DF, 0x7D10, 0x7D10, 0x20A7, 0x7D11, 0x7D12, 0x42E1, + 0x7D13, 0x7D13, 0x2423, 0x7D14, 0x7D14, 0x1E9B, 0x7D15, 0x7D15, 0x2422, + 0x7D16, 0x7D16, 0x42E3, 0x7D17, 0x7D17, 0x2110, 0x7D18, 0x7D18, 0x42E4, + 0x7D19, 0x7D19, 0x228D, 0x7D1A, 0x7D1A, 0x1F71, 0x7D1B, 0x7D1B, 0x1EF8, + 0x7D1C, 0x7D1C, 0x2421, 0x7D1D, 0x7D1F, 0x42E5, 0x7D20, 0x7D20, 0x0DCD, + 0x7D21, 0x7D21, 0x1EF3, 0x7D22, 0x7D22, 0x0DEC, 0x7D23, 0x7D26, 0x42E8, + 0x7D27, 0x7D27, 0x08C5, 0x7D28, 0x7D2A, 0x42EC, 0x7D2B, 0x7D2B, 0x122C, + 0x7D2C, 0x7D2E, 0x42EF, 0x7D2F, 0x7D2F, 0x09C6, 0x7D30, 0x7D30, 0x21B1, + 0x7D31, 0x7D31, 0x2426, 0x7D32, 0x7D32, 0x2425, 0x7D33, 0x7D33, 0x2120, + 0x7D34, 0x7D38, 0x42F2, 0x7D39, 0x7D39, 0x211A, 0x7D3A, 0x7D3A, 0x2424, + 0x7D3B, 0x7D3B, 0x42F7, 0x7D3C, 0x7D3C, 0x2428, 0x7D3D, 0x7D3E, 0x42F8, + 0x7D3F, 0x7D3F, 0x242A, 0x7D40, 0x7D40, 0x2429, 0x7D41, 0x7D41, 0x42FA, + 0x7D42, 0x7D42, 0x2294, 0x7D43, 0x7D43, 0x42FB, 0x7D44, 0x7D44, 0x22BE, + 0x7D45, 0x7D45, 0x42FC, 0x7D46, 0x7D46, 0x1E31, 0x7D47, 0x7D4D, 0x42FD, + 0x7D4E, 0x7D4E, 0x242C, 0x7D4F, 0x7D4F, 0x4304, 0x7D50, 0x7D50, 0x1FB5, + 0x7D51, 0x7D5C, 0x4305, 0x7D5D, 0x7D5D, 0x242B, 0x7D5E, 0x7D5E, 0x1FAF, + 0x7D5F, 0x7D60, 0x4311, 0x7D61, 0x7D61, 0x2068, 0x7D62, 0x7D62, 0x21E4, + 0x7D63, 0x7D65, 0x4313, 0x7D66, 0x7D66, 0x1F21, 0x7D67, 0x7D67, 0x4316, + 0x7D68, 0x7D68, 0x2101, 0x7D69, 0x7D6D, 0x4317, 0x7D6E, 0x7D6E, 0x0FC0, + 0x7D6F, 0x7D70, 0x431C, 0x7D71, 0x7D71, 0x217C, 0x7D72, 0x7D72, 0x214A, + 0x7D73, 0x7D73, 0x242D, 0x7D74, 0x7D75, 0x431E, 0x7D76, 0x7D76, 0x1FD4, + 0x7D77, 0x7D77, 0x1CE8, 0x7D78, 0x7D78, 0x4320, 0x7D79, 0x7D79, 0x1FD1, + 0x7D7A, 0x7D80, 0x4321, 0x7D81, 0x7D81, 0x1E33, 0x7D82, 0x7D82, 0x4328, + 0x7D83, 0x7D83, 0x242F, 0x7D84, 0x7D85, 0x4329, 0x7D86, 0x7D86, 0x242E, + 0x7D87, 0x7D87, 0x432B, 0x7D88, 0x7D88, 0x2430, 0x7D89, 0x7D89, 0x21DB, + 0x7D8A, 0x7D8E, 0x432C, 0x7D8F, 0x7D8F, 0x2158, 0x7D90, 0x7D92, 0x4331, + 0x7D93, 0x7D93, 0x1FC2, 0x7D94, 0x7D9B, 0x4334, 0x7D9C, 0x7D9C, 0x22B9, + 0x7D9D, 0x7D9D, 0x433C, 0x7D9E, 0x7D9E, 0x2436, 0x7D9F, 0x7DA1, 0x433D, + 0x7DA2, 0x7DA2, 0x1E8E, 0x7DA3, 0x7DA3, 0x2439, 0x7DA4, 0x7DA5, 0x4340, + 0x7DA6, 0x7DA6, 0x1CE9, 0x7DA7, 0x7DAA, 0x4342, 0x7DAB, 0x7DAB, 0x21C5, + 0x7DAC, 0x7DAC, 0x2437, 0x7DAD, 0x7DAD, 0x2192, 0x7DAE, 0x7DAE, 0x1CEA, + 0x7DAF, 0x7DAF, 0x4346, 0x7DB0, 0x7DB0, 0x243A, 0x7DB1, 0x7DB1, 0x1F19, + 0x7DB2, 0x7DB2, 0x218C, 0x7DB3, 0x7DB3, 0x1E40, 0x7DB4, 0x7DB4, 0x22B3, + 0x7DB5, 0x7DB7, 0x4347, 0x7DB8, 0x7DB8, 0x205F, 0x7DB9, 0x7DB9, 0x2438, + 0x7DBA, 0x7DBA, 0x2432, 0x7DBB, 0x7DBB, 0x2274, 0x7DBC, 0x7DBC, 0x434A, + 0x7DBD, 0x7DBD, 0x1E9C, 0x7DBE, 0x7DBE, 0x2431, 0x7DBF, 0x7DBF, 0x2085, + 0x7DC0, 0x7DC3, 0x434B, 0x7DC4, 0x7DC4, 0x2435, 0x7DC5, 0x7DC6, 0x434F, + 0x7DC7, 0x7DC7, 0x243B, 0x7DC8, 0x7DC9, 0x4351, 0x7DCA, 0x7DCA, 0x1FB7, + 0x7DCB, 0x7DCB, 0x2433, 0x7DCC, 0x7DD0, 0x4353, 0x7DD1, 0x7DD1, 0x2054, + 0x7DD2, 0x7DD2, 0x21DE, 0x7DD3, 0x7DD3, 0x4358, 0x7DD4, 0x7DD4, 0x2434, + 0x7DD5, 0x7DD6, 0x4359, 0x7DD7, 0x7DD7, 0x243D, 0x7DD8, 0x7DD8, 0x1F89, + 0x7DD9, 0x7DD9, 0x243C, 0x7DDA, 0x7DDC, 0x435B, 0x7DDD, 0x7DDD, 0x1F6E, + 0x7DDE, 0x7DDE, 0x1ED8, 0x7DDF, 0x7DDF, 0x435E, 0x7DE0, 0x7DE0, 0x1EBF, + 0x7DE1, 0x7DE1, 0x2445, 0x7DE2, 0x7DE2, 0x435F, 0x7DE3, 0x7DE3, 0x2249, + 0x7DE4, 0x7DE5, 0x4360, 0x7DE6, 0x7DE6, 0x2441, 0x7DE7, 0x7DE7, 0x4362, + 0x7DE8, 0x7DE8, 0x1E47, 0x7DE9, 0x7DE9, 0x1F56, 0x7DEA, 0x7DEB, 0x4363, + 0x7DEC, 0x7DEC, 0x2086, 0x7DED, 0x7DEE, 0x4365, 0x7DEF, 0x7DEF, 0x2196, + 0x7DF0, 0x7DF0, 0x4367, 0x7DF1, 0x7DF1, 0x2443, 0x7DF2, 0x7DF2, 0x243F, + 0x7DF3, 0x7DF3, 0x4368, 0x7DF4, 0x7DF4, 0x2023, 0x7DF5, 0x7DF5, 0x4369, + 0x7DF6, 0x7DF6, 0x2442, 0x7DF7, 0x7DF8, 0x436A, 0x7DF9, 0x7DF9, 0x243E, + 0x7DFA, 0x7DFA, 0x436C, 0x7DFB, 0x7DFB, 0x26A6, 0x7DFC, 0x7DFF, 0x436D, + 0x7E00, 0x7E07, 0x4371, 0x7E08, 0x7E08, 0x234E, 0x7E09, 0x7E09, 0x2446, + 0x7E0A, 0x7E0A, 0x244B, 0x7E0B, 0x7E0B, 0x2444, 0x7E0C, 0x7E0F, 0x4379, + 0x7E10, 0x7E10, 0x2427, 0x7E11, 0x7E11, 0x244C, 0x7E12, 0x7E1A, 0x437D, + 0x7E1B, 0x7E1B, 0x1F0F, 0x7E1C, 0x7E1C, 0x4386, 0x7E1D, 0x7E1D, 0x2447, + 0x7E1E, 0x7E1E, 0x2449, 0x7E1F, 0x7E1F, 0x2448, 0x7E20, 0x7E22, 0x4387, + 0x7E23, 0x7E23, 0x21C2, 0x7E24, 0x7E26, 0x438A, 0x7E27, 0x7E27, 0x216E, + 0x7E28, 0x7E2A, 0x438D, 0x7E2B, 0x7E2B, 0x1F03, 0x7E2C, 0x7E2C, 0x4390, + 0x7E2D, 0x7E2D, 0x244A, 0x7E2E, 0x7E2E, 0x215C, 0x7E2F, 0x7E30, 0x4391, + 0x7E31, 0x7E31, 0x22BB, 0x7E32, 0x7E32, 0x2450, 0x7E33, 0x7E33, 0x4393, + 0x7E34, 0x7E34, 0x2694, 0x7E35, 0x7E35, 0x244F, 0x7E36, 0x7E36, 0x25F6, + 0x7E37, 0x7E37, 0x2051, 0x7E38, 0x7E38, 0x4394, 0x7E39, 0x7E39, 0x244E, + 0x7E3A, 0x7E3A, 0x4395, 0x7E3B, 0x7E3B, 0x1DFB, 0x7E3C, 0x7E3C, 0x4396, + 0x7E3D, 0x7E3D, 0x22BA, 0x7E3E, 0x7E3E, 0x1F6D, 0x7E3F, 0x7E40, 0x4397, + 0x7E41, 0x7E41, 0x064E, 0x7E42, 0x7E44, 0x4399, 0x7E45, 0x7E45, 0x2452, + 0x7E46, 0x7E46, 0x2451, 0x7E47, 0x7E47, 0x1CEB, 0x7E48, 0x7E51, 0x439C, + 0x7E52, 0x7E52, 0x2455, 0x7E53, 0x7E53, 0x43A6, 0x7E54, 0x7E54, 0x2289, + 0x7E55, 0x7E55, 0x2116, 0x7E56, 0x7E59, 0x43A7, 0x7E5A, 0x7E5A, 0x2454, + 0x7E5B, 0x7E5D, 0x43AB, 0x7E5E, 0x7E5E, 0x20FB, 0x7E5F, 0x7E61, 0x43AE, + 0x7E62, 0x7E62, 0x2440, 0x7E63, 0x7E68, 0x43B1, 0x7E69, 0x7E69, 0x2126, + 0x7E6A, 0x7E6A, 0x1F61, 0x7E6B, 0x7E6B, 0x269D, 0x7E6C, 0x7E6C, 0x43B7, + 0x7E6D, 0x7E6D, 0x1F8A, 0x7E6E, 0x7E6E, 0x2456, 0x7E6F, 0x7E6F, 0x2459, + 0x7E70, 0x7E70, 0x2458, 0x7E71, 0x7E72, 0x43B8, 0x7E73, 0x7E73, 0x1FAE, + 0x7E74, 0x7E78, 0x43BA, 0x7E79, 0x7E79, 0x221A, 0x7E7A, 0x7E7B, 0x43BF, + 0x7E7C, 0x7E7C, 0x1F7A, 0x7E7D, 0x7E7D, 0x244D, 0x7E7E, 0x7E7E, 0x2457, + 0x7E7F, 0x7E81, 0x43C1, 0x7E82, 0x7E82, 0x1248, 0x7E83, 0x7E87, 0x43C4, + 0x7E88, 0x7E88, 0x2453, 0x7E89, 0x7E89, 0x43C9, 0x7E8A, 0x7E8A, 0x2420, + 0x7E8B, 0x7E8B, 0x43CA, 0x7E8C, 0x7E8C, 0x21DF, 0x7E8D, 0x7E8D, 0x2685, + 0x7E8E, 0x7E8E, 0x43CB, 0x7E8F, 0x7E8F, 0x1E6E, 0x7E90, 0x7E92, 0x43CC, + 0x7E93, 0x7E93, 0x2224, 0x7E94, 0x7E94, 0x2670, 0x7E95, 0x7E95, 0x43CF, + 0x7E96, 0x7E96, 0x21BA, 0x7E97, 0x7E97, 0x43D0, 0x7E98, 0x7E98, 0x245A, + 0x7E99, 0x7E9A, 0x43D1, 0x7E9B, 0x7E9B, 0x1CEC, 0x7E9C, 0x7E9C, 0x1FFF, + 0x7E9D, 0x7E9E, 0x43D3, 0x7E9F, 0x7E9F, 0x17D3, 0x7EA0, 0x7EA0, 0x08EF, + 0x7EA1, 0x7EA1, 0x17D4, 0x7EA2, 0x7EA2, 0x07A3, 0x7EA3, 0x7EA3, 0x17D5, + 0x7EA4, 0x7EA4, 0x0F38, 0x7EA5, 0x7EA5, 0x17D6, 0x7EA6, 0x7EA6, 0x10FF, + 0x7EA7, 0x7EA7, 0x0829, 0x7EA8, 0x7EA9, 0x17D7, 0x7EAA, 0x7EAA, 0x0840, + 0x7EAB, 0x7EAB, 0x0CAD, 0x7EAC, 0x7EAC, 0x0EC2, 0x7EAD, 0x7EAD, 0x17D9, + 0x7EAE, 0x7EAE, 0x43D5, 0x7EAF, 0x7EAF, 0x0542, 0x7EB0, 0x7EB0, 0x17DA, + 0x7EB1, 0x7EB1, 0x0CED, 0x7EB2, 0x7EB2, 0x06D4, 0x7EB3, 0x7EB3, 0x0B2C, + 0x7EB4, 0x7EB4, 0x43D6, 0x7EB5, 0x7EB5, 0x123A, 0x7EB6, 0x7EB6, 0x0A81, + 0x7EB7, 0x7EB7, 0x0674, 0x7EB8, 0x7EB8, 0x11BC, 0x7EB9, 0x7EB9, 0x0ED5, + 0x7EBA, 0x7EBA, 0x0661, 0x7EBB, 0x7EBC, 0x43D7, 0x7EBD, 0x7EBD, 0x0B67, + 0x7EBE, 0x7EBE, 0x17DB, 0x7EBF, 0x7EBF, 0x0F4C, 0x7EC0, 0x7EC2, 0x17DC, + 0x7EC3, 0x7EC3, 0x0A00, 0x7EC4, 0x7EC4, 0x1246, 0x7EC5, 0x7EC5, 0x0D29, + 0x7EC6, 0x7EC6, 0x0F25, 0x7EC7, 0x7EC7, 0x11AE, 0x7EC8, 0x7EC8, 0x11D4, + 0x7EC9, 0x7EC9, 0x17DF, 0x7ECA, 0x7ECA, 0x03F8, 0x7ECB, 0x7ECC, 0x17E0, + 0x7ECD, 0x7ECD, 0x0D15, 0x7ECE, 0x7ECE, 0x1076, 0x7ECF, 0x7ECF, 0x08DC, + 0x7ED0, 0x7ED0, 0x17E2, 0x7ED1, 0x7ED1, 0x03FE, 0x7ED2, 0x7ED2, 0x0CB9, + 0x7ED3, 0x7ED3, 0x08B2, 0x7ED4, 0x7ED4, 0x17E3, 0x7ED5, 0x7ED5, 0x0CA1, + 0x7ED6, 0x7ED6, 0x43D9, 0x7ED7, 0x7ED7, 0x17E4, 0x7ED8, 0x7ED8, 0x07FB, + 0x7ED9, 0x7ED9, 0x06F3, 0x7EDA, 0x7EDA, 0x0FCD, 0x7EDB, 0x7EDB, 0x17E5, + 0x7EDC, 0x7EDC, 0x0A8E, 0x7EDD, 0x7EDD, 0x0927, 0x7EDE, 0x7EDE, 0x089B, + 0x7EDF, 0x7EDF, 0x0E64, 0x7EE0, 0x7EE1, 0x17E6, 0x7EE2, 0x7EE2, 0x091D, + 0x7EE3, 0x7EE3, 0x0FB0, 0x7EE4, 0x7EE4, 0x43DA, 0x7EE5, 0x7EE5, 0x0DDC, + 0x7EE6, 0x7EE6, 0x0E23, 0x7EE7, 0x7EE7, 0x083F, 0x7EE8, 0x7EE8, 0x17E8, + 0x7EE9, 0x7EE9, 0x081B, 0x7EEA, 0x7EEA, 0x0FC2, 0x7EEB, 0x7EEB, 0x17E9, + 0x7EEC, 0x7EEC, 0x43DB, 0x7EED, 0x7EED, 0x0FC3, 0x7EEE, 0x7EEF, 0x17EA, + 0x7EF0, 0x7EF0, 0x0545, 0x7EF1, 0x7EF2, 0x17EC, 0x7EF3, 0x7EF3, 0x0D37, + 0x7EF4, 0x7EF4, 0x0EBB, 0x7EF5, 0x7EF5, 0x0AE5, 0x7EF6, 0x7EF6, 0x17EF, + 0x7EF7, 0x7EF7, 0x042A, 0x7EF8, 0x7EF8, 0x0516, 0x7EF9, 0x7EF9, 0x43DC, + 0x7EFA, 0x7EFB, 0x17F0, 0x7EFC, 0x7EFC, 0x1238, 0x7EFD, 0x7EFD, 0x1161, + 0x7EFE, 0x7EFE, 0x17F2, 0x7EFF, 0x7EFF, 0x0A73, 0x7F00, 0x7F00, 0x1217, + 0x7F01, 0x7F03, 0x17F3, 0x7F04, 0x7F04, 0x085D, 0x7F05, 0x7F05, 0x0AEA, + 0x7F06, 0x7F06, 0x09AD, 0x7F07, 0x7F08, 0x17F6, 0x7F09, 0x7F09, 0x081C, + 0x7F0A, 0x7F0A, 0x43DD, 0x7F0B, 0x7F0C, 0x17F8, 0x7F0D, 0x7F0D, 0x17EE, + 0x7F0E, 0x7F0E, 0x060F, 0x7F0F, 0x7F0F, 0x17FA, 0x7F10, 0x7F10, 0x43DE, + 0x7F11, 0x7F12, 0x17FB, 0x7F13, 0x7F13, 0x07CF, 0x7F14, 0x7F14, 0x05BF, + 0x7F15, 0x7F15, 0x0A6D, 0x7F16, 0x7F16, 0x0449, 0x7F17, 0x7F17, 0x17FD, + 0x7F18, 0x7F18, 0x10F8, 0x7F19, 0x7F19, 0x17FE, 0x7F1A, 0x7F1A, 0x06BA, + 0x7F1B, 0x7F1B, 0x1800, 0x7F1C, 0x7F1C, 0x17FF, 0x7F1D, 0x7F1D, 0x0689, + 0x7F1E, 0x7F1E, 0x43DF, 0x7F1F, 0x7F1F, 0x1801, 0x7F20, 0x7F20, 0x04BF, + 0x7F21, 0x7F27, 0x1802, 0x7F28, 0x7F28, 0x108C, 0x7F29, 0x7F29, 0x0DEA, + 0x7F2A, 0x7F2D, 0x1809, 0x7F2E, 0x7F2E, 0x0D02, 0x7F2F, 0x7F33, 0x180D, + 0x7F34, 0x7F34, 0x089A, 0x7F35, 0x7F35, 0x1812, 0x7F36, 0x7F36, 0x1C5E, + 0x7F37, 0x7F37, 0x43E0, 0x7F38, 0x7F38, 0x06D2, 0x7F39, 0x7F39, 0x43E1, + 0x7F3A, 0x7F3A, 0x0C8C, 0x7F3B, 0x7F41, 0x43E2, 0x7F42, 0x7F42, 0x1C5F, + 0x7F43, 0x7F43, 0x43E9, 0x7F44, 0x7F45, 0x1C60, 0x7F46, 0x7F4B, 0x43EA, + 0x7F4C, 0x7F4C, 0x25E2, 0x7F4D, 0x7F4D, 0x43F0, 0x7F4E, 0x7F4E, 0x269A, + 0x7F4F, 0x7F4F, 0x43F1, 0x7F50, 0x7F50, 0x0737, 0x7F51, 0x7F51, 0x0EA9, + 0x7F52, 0x7F53, 0x43F2, 0x7F54, 0x7F54, 0x129E, 0x7F55, 0x7F55, 0x0768, + 0x7F56, 0x7F56, 0x43F4, 0x7F57, 0x7F57, 0x0A85, 0x7F58, 0x7F58, 0x1A81, + 0x7F59, 0x7F59, 0x43F5, 0x7F5A, 0x7F5A, 0x0640, 0x7F5B, 0x7F5E, 0x43F6, + 0x7F5F, 0x7F5F, 0x1A83, 0x7F60, 0x7F60, 0x43FA, 0x7F61, 0x7F61, 0x1A82, + 0x7F62, 0x7F62, 0x03E0, 0x7F63, 0x7F67, 0x43FB, 0x7F68, 0x7F68, 0x1A85, + 0x7F69, 0x7F69, 0x1177, 0x7F6A, 0x7F6A, 0x124C, 0x7F6B, 0x7F6D, 0x4400, + 0x7F6E, 0x7F6E, 0x11C2, 0x7F6F, 0x7F6F, 0x4403, 0x7F70, 0x7F70, 0x1EEA, + 0x7F71, 0x7F71, 0x1A87, 0x7F72, 0x7F72, 0x0D87, 0x7F73, 0x7F73, 0x4404, + 0x7F74, 0x7F74, 0x1A86, 0x7F75, 0x7F76, 0x4405, 0x7F77, 0x7F77, 0x1E2C, + 0x7F78, 0x7F78, 0x4407, 0x7F79, 0x7F79, 0x1A88, 0x7F7A, 0x7F7D, 0x4408, + 0x7F7E, 0x7F7E, 0x1A8A, 0x7F7F, 0x7F80, 0x440C, 0x7F81, 0x7F81, 0x1A89, + 0x7F82, 0x7F84, 0x440E, 0x7F85, 0x7F85, 0x2062, 0x7F86, 0x7F86, 0x24F1, + 0x7F87, 0x7F87, 0x4411, 0x7F88, 0x7F88, 0x24F2, 0x7F89, 0x7F89, 0x4412, + 0x7F8A, 0x7F8A, 0x101B, 0x7F8B, 0x7F8B, 0x4413, 0x7F8C, 0x7F8C, 0x0C39, + 0x7F8D, 0x7F8D, 0x4414, 0x7F8E, 0x7F8E, 0x0AC5, 0x7F8F, 0x7F93, 0x4415, + 0x7F94, 0x7F94, 0x06DC, 0x7F95, 0x7F99, 0x441A, 0x7F9A, 0x7F9A, 0x0A30, + 0x7F9B, 0x7F9C, 0x441F, 0x7F9D, 0x7F9D, 0x1CC4, 0x7F9E, 0x7F9E, 0x0FAA, + 0x7F9F, 0x7F9F, 0x1CC5, 0x7FA0, 0x7FA0, 0x4421, 0x7FA1, 0x7FA1, 0x0F48, + 0x7FA2, 0x7FA3, 0x4422, 0x7FA4, 0x7FA4, 0x0C95, 0x7FA5, 0x7FA5, 0x25F2, + 0x7FA6, 0x7FA6, 0x4424, 0x7FA7, 0x7FA7, 0x1CC6, 0x7FA8, 0x7FA8, 0x4425, + 0x7FA9, 0x7FA9, 0x2215, 0x7FAA, 0x7FAE, 0x4426, 0x7FAF, 0x7FB0, 0x1CC7, + 0x7FB1, 0x7FB1, 0x442B, 0x7FB2, 0x7FB2, 0x1CC9, 0x7FB3, 0x7FB7, 0x442C, + 0x7FB8, 0x7FB8, 0x130E, 0x7FB9, 0x7FB9, 0x06F9, 0x7FBA, 0x7FBB, 0x4431, + 0x7FBC, 0x7FBC, 0x176D, 0x7FBD, 0x7FBD, 0x10D5, 0x7FBE, 0x7FBE, 0x4433, + 0x7FBF, 0x7FBF, 0x1CDE, 0x7FC0, 0x7FC0, 0x4434, 0x7FC1, 0x7FC1, 0x0EDB, + 0x7FC2, 0x7FC4, 0x4435, 0x7FC5, 0x7FC5, 0x0506, 0x7FC6, 0x7FC9, 0x4438, + 0x7FCA, 0x7FCA, 0x1B98, 0x7FCB, 0x7FCB, 0x443C, 0x7FCC, 0x7FCC, 0x1075, + 0x7FCD, 0x7FCD, 0x443D, 0x7FCE, 0x7FCE, 0x1CDF, 0x7FCF, 0x7FD1, 0x443E, + 0x7FD2, 0x7FD2, 0x21AE, 0x7FD3, 0x7FD3, 0x4441, 0x7FD4, 0x7FD4, 0x0F55, + 0x7FD5, 0x7FD5, 0x1CE0, 0x7FD6, 0x7FD7, 0x4442, 0x7FD8, 0x7FD8, 0x0C49, + 0x7FD9, 0x7FDE, 0x4444, 0x7FDF, 0x7FDF, 0x05B5, 0x7FE0, 0x7FE0, 0x0567, + 0x7FE1, 0x7FE1, 0x1CE2, 0x7FE2, 0x7FE4, 0x444A, 0x7FE5, 0x7FE5, 0x1CE1, + 0x7FE6, 0x7FE6, 0x1CE3, 0x7FE7, 0x7FE8, 0x444D, 0x7FE9, 0x7FE9, 0x1CE4, + 0x7FEA, 0x7FED, 0x444F, 0x7FEE, 0x7FEE, 0x1CE5, 0x7FEF, 0x7FEF, 0x4453, + 0x7FF0, 0x7FF0, 0x0769, 0x7FF1, 0x7FF1, 0x03CA, 0x7FF2, 0x7FF2, 0x4454, + 0x7FF3, 0x7FF3, 0x1CE6, 0x7FF4, 0x7FF8, 0x4455, 0x7FF9, 0x7FF9, 0x20E0, + 0x7FFA, 0x7FFA, 0x445A, 0x7FFB, 0x7FFB, 0x064A, 0x7FFC, 0x7FFC, 0x1074, + 0x7FFD, 0x7FFF, 0x445B, 0x8000, 0x8000, 0x1032, 0x8001, 0x8001, 0x09BA, + 0x8002, 0x8002, 0x445E, 0x8003, 0x8003, 0x0949, 0x8004, 0x8004, 0x1953, + 0x8005, 0x8005, 0x1180, 0x8006, 0x8006, 0x191A, 0x8007, 0x800A, 0x445F, + 0x800B, 0x800B, 0x1BD7, 0x800C, 0x800C, 0x0637, 0x800D, 0x800D, 0x0D98, + 0x800E, 0x800F, 0x4463, 0x8010, 0x8010, 0x0B30, 0x8011, 0x8011, 0x4465, + 0x8012, 0x8012, 0x1BCB, 0x8013, 0x8013, 0x4466, 0x8014, 0x8014, 0x1BCC, + 0x8015, 0x8015, 0x06F6, 0x8016, 0x8016, 0x1BCD, 0x8017, 0x8017, 0x077B, + 0x8018, 0x8018, 0x1108, 0x8019, 0x8019, 0x03DD, 0x801A, 0x801B, 0x4467, + 0x801C, 0x801C, 0x1BCE, 0x801D, 0x801F, 0x4469, 0x8020, 0x8020, 0x1BCF, + 0x8021, 0x8021, 0x446C, 0x8022, 0x8022, 0x1BD0, 0x8023, 0x8024, 0x446D, + 0x8025, 0x8027, 0x1BD1, 0x8028, 0x8028, 0x1BD5, 0x8029, 0x8029, 0x1BD4, + 0x802A, 0x802A, 0x0B96, 0x802B, 0x802B, 0x446F, 0x802C, 0x802C, 0x25C2, + 0x802D, 0x802D, 0x4470, 0x802E, 0x802E, 0x25C1, 0x802F, 0x8030, 0x4471, + 0x8031, 0x8031, 0x1BD6, 0x8032, 0x8032, 0x4473, 0x8033, 0x8033, 0x0639, + 0x8034, 0x8034, 0x4474, 0x8035, 0x8035, 0x1BD8, 0x8036, 0x8036, 0x1035, + 0x8037, 0x8037, 0x14B1, 0x8038, 0x8038, 0x0DBF, 0x8039, 0x803A, 0x4475, + 0x803B, 0x803B, 0x0501, 0x803C, 0x803C, 0x4477, 0x803D, 0x803D, 0x0583, + 0x803E, 0x803E, 0x4478, 0x803F, 0x803F, 0x06FB, 0x8040, 0x8041, 0x4479, + 0x8042, 0x8042, 0x0B57, 0x8043, 0x8043, 0x1BD9, 0x8044, 0x8045, 0x447B, + 0x8046, 0x8046, 0x1BDA, 0x8047, 0x8049, 0x447D, 0x804A, 0x804A, 0x0A0D, + 0x804B, 0x804B, 0x0A44, 0x804C, 0x804C, 0x11AF, 0x804D, 0x804D, 0x1BDB, + 0x804E, 0x8051, 0x4480, 0x8052, 0x8052, 0x1BDC, 0x8053, 0x8053, 0x4484, + 0x8054, 0x8054, 0x09F3, 0x8055, 0x8055, 0x4485, 0x8056, 0x8056, 0x2128, + 0x8057, 0x8057, 0x4486, 0x8058, 0x8058, 0x0BD7, 0x8059, 0x8059, 0x4487, + 0x805A, 0x805A, 0x090A, 0x805B, 0x805D, 0x4488, 0x805E, 0x805E, 0x2199, + 0x805F, 0x8068, 0x448B, 0x8069, 0x8069, 0x1BDD, 0x806A, 0x806A, 0x0552, + 0x806B, 0x806E, 0x4495, 0x806F, 0x806F, 0x2017, 0x8070, 0x8070, 0x1EA0, + 0x8071, 0x8071, 0x1BDE, 0x8072, 0x8072, 0x2125, 0x8073, 0x8073, 0x214D, + 0x8074, 0x8074, 0x4499, 0x8075, 0x8075, 0x25C4, 0x8076, 0x8076, 0x209D, + 0x8077, 0x8077, 0x228A, 0x8078, 0x8078, 0x449A, 0x8079, 0x8079, 0x25C3, + 0x807A, 0x807C, 0x449B, 0x807D, 0x807D, 0x2179, 0x807E, 0x807E, 0x2038, + 0x807F, 0x807F, 0x1A1E, 0x8080, 0x8080, 0x1A1D, 0x8081, 0x8082, 0x449E, + 0x8083, 0x8083, 0x0DD5, 0x8084, 0x8084, 0x1065, 0x8085, 0x8085, 0x2155, + 0x8086, 0x8086, 0x0DB6, 0x8087, 0x8087, 0x1179, 0x8088, 0x8088, 0x44A0, + 0x8089, 0x8089, 0x0CBD, 0x808A, 0x808A, 0x44A1, 0x808B, 0x808B, 0x09CA, + 0x808C, 0x808C, 0x0814, 0x808D, 0x8092, 0x44A2, 0x8093, 0x8093, 0x1971, + 0x8094, 0x8095, 0x44A8, 0x8096, 0x8096, 0x0F6F, 0x8097, 0x8097, 0x44AA, + 0x8098, 0x8098, 0x11E1, 0x8099, 0x8099, 0x44AB, 0x809A, 0x809A, 0x0606, + 0x809B, 0x809B, 0x06D3, 0x809C, 0x809C, 0x1970, 0x809D, 0x809D, 0x06C9, + 0x809E, 0x809E, 0x44AC, 0x809F, 0x809F, 0x196F, 0x80A0, 0x80A0, 0x04CB, + 0x80A1, 0x80A1, 0x0722, 0x80A2, 0x80A2, 0x11AA, 0x80A3, 0x80A3, 0x44AD, + 0x80A4, 0x80A4, 0x0691, 0x80A5, 0x80A5, 0x0667, 0x80A6, 0x80A8, 0x44AE, + 0x80A9, 0x80A9, 0x085A, 0x80AA, 0x80AA, 0x065B, 0x80AB, 0x80AB, 0x1976, + 0x80AC, 0x80AC, 0x44B1, 0x80AD, 0x80AD, 0x1977, 0x80AE, 0x80AE, 0x03C4, + 0x80AF, 0x80AF, 0x095C, 0x80B0, 0x80B0, 0x44B2, 0x80B1, 0x80B1, 0x1975, + 0x80B2, 0x80B2, 0x10E2, 0x80B3, 0x80B3, 0x44B3, 0x80B4, 0x80B4, 0x1978, + 0x80B5, 0x80B6, 0x44B4, 0x80B7, 0x80B7, 0x1979, 0x80B8, 0x80B9, 0x44B6, + 0x80BA, 0x80BA, 0x066B, 0x80BB, 0x80BB, 0x44B8, 0x80BC, 0x80BC, 0x1972, + 0x80BD, 0x80BD, 0x1974, 0x80BE, 0x80BE, 0x0D2F, 0x80BF, 0x80BF, 0x11D6, + 0x80C0, 0x80C0, 0x116E, 0x80C1, 0x80C1, 0x0F7D, 0x80C2, 0x80C2, 0x197F, + 0x80C3, 0x80C3, 0x0EC7, 0x80C4, 0x80C4, 0x1980, 0x80C5, 0x80C5, 0x44B9, + 0x80C6, 0x80C6, 0x0589, 0x80C7, 0x80CB, 0x44BA, 0x80CC, 0x80CC, 0x041C, + 0x80CD, 0x80CD, 0x1982, 0x80CE, 0x80CE, 0x0DF8, 0x80CF, 0x80D5, 0x44BF, + 0x80D6, 0x80D6, 0x0B97, 0x80D7, 0x80D7, 0x1983, 0x80D8, 0x80D8, 0x44C6, + 0x80D9, 0x80D9, 0x1981, 0x80DA, 0x80DA, 0x0BA0, 0x80DB, 0x80DB, 0x197E, + 0x80DC, 0x80DC, 0x0D3B, 0x80DD, 0x80DD, 0x1985, 0x80DE, 0x80DE, 0x0406, + 0x80DF, 0x80E0, 0x44C7, 0x80E1, 0x80E1, 0x07B1, 0x80E2, 0x80E3, 0x44C9, + 0x80E4, 0x80E4, 0x126D, 0x80E5, 0x80E5, 0x1BC7, 0x80E6, 0x80E6, 0x44CB, + 0x80E7, 0x80EA, 0x197A, 0x80EB, 0x80EB, 0x1986, 0x80EC, 0x80EC, 0x179A, + 0x80ED, 0x80ED, 0x1989, 0x80EE, 0x80EE, 0x44CC, 0x80EF, 0x80EF, 0x0975, + 0x80F0, 0x80F0, 0x104F, 0x80F1, 0x80F1, 0x1987, 0x80F2, 0x80F2, 0x198C, + 0x80F3, 0x80F3, 0x06E7, 0x80F4, 0x80F4, 0x1988, 0x80F5, 0x80F5, 0x44CD, + 0x80F6, 0x80F6, 0x088B, 0x80F7, 0x80F7, 0x44CE, 0x80F8, 0x80F8, 0x0FA3, + 0x80F9, 0x80F9, 0x44CF, 0x80FA, 0x80FA, 0x03C2, 0x80FB, 0x80FB, 0x44D0, + 0x80FC, 0x80FC, 0x198D, 0x80FD, 0x80FD, 0x0B3F, 0x80FE, 0x80FF, 0x44D1, + 0x8100, 0x8101, 0x44D3, 0x8102, 0x8102, 0x11AB, 0x8103, 0x8104, 0x44D5, + 0x8105, 0x8105, 0x21D2, 0x8106, 0x8106, 0x0563, 0x8107, 0x8108, 0x44D7, + 0x8109, 0x8109, 0x0A9D, 0x810A, 0x810A, 0x082C, 0x810B, 0x810C, 0x44D9, + 0x810D, 0x810E, 0x198A, 0x810F, 0x810F, 0x1123, 0x8110, 0x8110, 0x0C09, + 0x8111, 0x8111, 0x0B37, 0x8112, 0x8112, 0x198F, 0x8113, 0x8113, 0x0B68, + 0x8114, 0x8114, 0x1309, 0x8115, 0x8115, 0x44DB, 0x8116, 0x8116, 0x0478, + 0x8117, 0x8117, 0x44DC, 0x8118, 0x8118, 0x1994, 0x8119, 0x8119, 0x44DD, + 0x811A, 0x811A, 0x0896, 0x811B, 0x811B, 0x24C7, 0x811C, 0x811D, 0x44DE, + 0x811E, 0x811E, 0x1992, 0x811F, 0x812B, 0x44E0, 0x812C, 0x812C, 0x1993, + 0x812D, 0x812E, 0x44ED, 0x812F, 0x812F, 0x06A7, 0x8130, 0x8130, 0x44EF, + 0x8131, 0x8131, 0x0E82, 0x8132, 0x8132, 0x1995, 0x8133, 0x8135, 0x44F0, + 0x8136, 0x8136, 0x1991, 0x8137, 0x8137, 0x44F3, 0x8138, 0x8138, 0x09FC, + 0x8139, 0x8139, 0x2279, 0x813A, 0x813D, 0x44F4, 0x813E, 0x813E, 0x0BC1, + 0x813F, 0x8145, 0x44F8, 0x8146, 0x8146, 0x0E46, 0x8147, 0x8147, 0x44FF, + 0x8148, 0x8148, 0x1996, 0x8149, 0x8149, 0x4500, 0x814A, 0x814A, 0x099B, + 0x814B, 0x814B, 0x103F, 0x814C, 0x814C, 0x1997, 0x814D, 0x814D, 0x4501, + 0x814E, 0x814E, 0x2123, 0x814F, 0x814F, 0x4502, 0x8150, 0x8150, 0x06AA, + 0x8151, 0x8151, 0x06A8, 0x8152, 0x8152, 0x4503, 0x8153, 0x8153, 0x1998, + 0x8154, 0x8154, 0x0C38, 0x8155, 0x8155, 0x0EA4, 0x8156, 0x8156, 0x24C5, + 0x8157, 0x8158, 0x4504, 0x8159, 0x815A, 0x199A, 0x815B, 0x815F, 0x4506, + 0x8160, 0x8160, 0x199D, 0x8161, 0x8161, 0x24C9, 0x8162, 0x8164, 0x450B, + 0x8165, 0x8165, 0x0F93, 0x8166, 0x8166, 0x2094, 0x8167, 0x8167, 0x19A2, + 0x8168, 0x8168, 0x450E, 0x8169, 0x8169, 0x199E, 0x816A, 0x816A, 0x450F, + 0x816B, 0x816B, 0x2296, 0x816C, 0x816C, 0x4510, 0x816D, 0x816D, 0x19A1, + 0x816E, 0x816E, 0x0CD4, 0x816F, 0x816F, 0x4511, 0x8170, 0x8170, 0x1025, + 0x8171, 0x8171, 0x199C, 0x8172, 0x8173, 0x4512, 0x8174, 0x8174, 0x1999, + 0x8175, 0x8177, 0x4514, 0x8178, 0x8178, 0x1E77, 0x8179, 0x8179, 0x06B4, + 0x817A, 0x817A, 0x0F46, 0x817B, 0x817B, 0x0B48, 0x817C, 0x817D, 0x199F, + 0x817E, 0x817E, 0x0E2D, 0x817F, 0x817F, 0x0E79, 0x8180, 0x8180, 0x03FD, + 0x8181, 0x8181, 0x4517, 0x8182, 0x8182, 0x19A6, 0x8183, 0x8187, 0x4518, + 0x8188, 0x8188, 0x19A5, 0x8189, 0x8189, 0x451D, 0x818A, 0x818A, 0x0479, + 0x818B, 0x818E, 0x451E, 0x818F, 0x818F, 0x06DB, 0x8190, 0x8190, 0x4522, + 0x8191, 0x8191, 0x19A7, 0x8192, 0x8197, 0x4523, 0x8198, 0x8198, 0x0455, + 0x8199, 0x8199, 0x4529, 0x819A, 0x819A, 0x1F06, 0x819B, 0x819B, 0x0E18, + 0x819C, 0x819C, 0x0B07, 0x819D, 0x819D, 0x0F12, 0x819E, 0x819F, 0x452A, + 0x81A0, 0x81A0, 0x1FA5, 0x81A1, 0x81A2, 0x452C, 0x81A3, 0x81A3, 0x19A9, + 0x81A4, 0x81A5, 0x452E, 0x81A6, 0x81A6, 0x19B0, 0x81A7, 0x81A7, 0x4530, + 0x81A8, 0x81A8, 0x0BB3, 0x81A9, 0x81A9, 0x2099, 0x81AA, 0x81AA, 0x19AA, + 0x81AB, 0x81B2, 0x4531, 0x81B3, 0x81B3, 0x0CFE, 0x81B4, 0x81B9, 0x4539, + 0x81BA, 0x81BA, 0x1641, 0x81BB, 0x81BB, 0x19AE, 0x81BC, 0x81BC, 0x453F, + 0x81BD, 0x81BD, 0x1EAD, 0x81BE, 0x81BE, 0x24C8, 0x81BF, 0x81BF, 0x20A8, + 0x81C0, 0x81C0, 0x0E7F, 0x81C1, 0x81C1, 0x19AF, 0x81C2, 0x81C2, 0x0444, + 0x81C3, 0x81C3, 0x109C, 0x81C4, 0x81C5, 0x4540, 0x81C6, 0x81C6, 0x1063, + 0x81C7, 0x81C8, 0x4542, 0x81C9, 0x81C9, 0x201F, 0x81CA, 0x81CA, 0x19AD, + 0x81CB, 0x81CB, 0x4544, 0x81CC, 0x81CC, 0x19AB, 0x81CD, 0x81CD, 0x20C5, + 0x81CE, 0x81CE, 0x4545, 0x81CF, 0x81CF, 0x24CA, 0x81D0, 0x81D7, 0x4546, + 0x81D8, 0x81D8, 0x1FF0, 0x81D9, 0x81D9, 0x454E, 0x81DA, 0x81DA, 0x24C6, + 0x81DB, 0x81DE, 0x454F, 0x81DF, 0x81DF, 0x225D, 0x81E0, 0x81E0, 0x22DE, + 0x81E1, 0x81E2, 0x4553, 0x81E3, 0x81E3, 0x04E1, 0x81E4, 0x81E6, 0x4555, + 0x81E7, 0x81E7, 0x1902, 0x81E8, 0x81E8, 0x202C, 0x81E9, 0x81E9, 0x4558, + 0x81EA, 0x81EA, 0x1231, 0x81EB, 0x81EB, 0x4559, 0x81EC, 0x81EC, 0x1CA9, + 0x81ED, 0x81ED, 0x0519, 0x81EE, 0x81F2, 0x455A, 0x81F3, 0x81F4, 0x11C0, + 0x81F5, 0x81F9, 0x455F, 0x81FA, 0x81FA, 0x2161, 0x81FB, 0x81FB, 0x118A, + 0x81FC, 0x81FC, 0x08F9, 0x81FD, 0x81FD, 0x4564, 0x81FE, 0x81FE, 0x1CA5, + 0x81FF, 0x81FF, 0x4565, 0x8200, 0x8200, 0x102F, 0x8201, 0x8202, 0x1CA6, + 0x8203, 0x8203, 0x4566, 0x8204, 0x8204, 0x1CA8, 0x8205, 0x8205, 0x08FA, + 0x8206, 0x8206, 0x10C4, 0x8207, 0x8207, 0x223B, 0x8208, 0x8208, 0x21D9, + 0x8209, 0x8209, 0x1FCB, 0x820A, 0x820A, 0x1FC9, 0x820B, 0x820B, 0x4567, + 0x820C, 0x820D, 0x0D19, 0x820E, 0x820F, 0x4568, 0x8210, 0x8210, 0x1C62, + 0x8211, 0x8211, 0x456A, 0x8212, 0x8212, 0x0D7D, 0x8213, 0x8213, 0x456B, + 0x8214, 0x8214, 0x0E45, 0x8215, 0x821A, 0x456C, 0x821B, 0x821B, 0x1618, + 0x821C, 0x821C, 0x0DA9, 0x821D, 0x821D, 0x4572, 0x821E, 0x821E, 0x0EF7, + 0x821F, 0x821F, 0x11DA, 0x8220, 0x8220, 0x4573, 0x8221, 0x8223, 0x1CAB, + 0x8224, 0x8227, 0x4574, 0x8228, 0x8228, 0x1CB0, 0x8229, 0x8229, 0x4578, + 0x822A, 0x822A, 0x0774, 0x822B, 0x822B, 0x1CB1, 0x822C, 0x822C, 0x03EE, + 0x822D, 0x822D, 0x1CAE, 0x822E, 0x822E, 0x4579, 0x822F, 0x822F, 0x1CAF, + 0x8230, 0x8230, 0x0873, 0x8231, 0x8231, 0x049C, 0x8232, 0x8232, 0x457A, + 0x8233, 0x8234, 0x1CB4, 0x8235, 0x8235, 0x0625, 0x8236, 0x8236, 0x0477, + 0x8237, 0x8237, 0x0F3C, 0x8238, 0x8238, 0x1CB2, 0x8239, 0x8239, 0x052F, + 0x823A, 0x823A, 0x457B, 0x823B, 0x823B, 0x1CB3, 0x823C, 0x823D, 0x457C, + 0x823E, 0x823E, 0x1CB6, 0x823F, 0x8243, 0x457E, 0x8244, 0x8244, 0x1CB7, + 0x8245, 0x8246, 0x4583, 0x8247, 0x8247, 0x0E58, 0x8248, 0x8248, 0x4585, + 0x8249, 0x8249, 0x1CB8, 0x824A, 0x824A, 0x4586, 0x824B, 0x824B, 0x1CB9, + 0x824C, 0x824E, 0x4587, 0x824F, 0x824F, 0x1CBA, 0x8250, 0x8257, 0x458A, + 0x8258, 0x8258, 0x0DC7, 0x8259, 0x8259, 0x1E61, 0x825A, 0x825A, 0x1CBB, + 0x825B, 0x825E, 0x4592, 0x825F, 0x825F, 0x1CBC, 0x8260, 0x8263, 0x4596, + 0x8264, 0x8264, 0x25EF, 0x8265, 0x8265, 0x459A, 0x8266, 0x8266, 0x1F98, + 0x8267, 0x8267, 0x459B, 0x8268, 0x8268, 0x1CBD, 0x8269, 0x826A, 0x459C, + 0x826B, 0x826B, 0x25F0, 0x826C, 0x826D, 0x459E, 0x826E, 0x826E, 0x1CDC, + 0x826F, 0x826F, 0x0A05, 0x8270, 0x8270, 0x085B, 0x8271, 0x8271, 0x1F88, + 0x8272, 0x8272, 0x0CE4, 0x8273, 0x8273, 0x1007, 0x8274, 0x8274, 0x1771, + 0x8275, 0x8276, 0x45A0, 0x8277, 0x8277, 0x21F8, 0x8278, 0x8278, 0x45A2, + 0x8279, 0x8279, 0x13E1, 0x827A, 0x827A, 0x105C, 0x827B, 0x827C, 0x45A3, + 0x827D, 0x827D, 0x13E2, 0x827E, 0x827E, 0x03B7, 0x827F, 0x827F, 0x13E3, + 0x8280, 0x8281, 0x45A5, 0x8282, 0x8282, 0x08AB, 0x8283, 0x8283, 0x45A7, + 0x8284, 0x8284, 0x13E7, 0x8285, 0x8287, 0x45A8, 0x8288, 0x8288, 0x1278, + 0x8289, 0x8289, 0x45AB, 0x828A, 0x828A, 0x13E5, 0x828B, 0x828B, 0x10D8, + 0x828C, 0x828C, 0x45AC, 0x828D, 0x828D, 0x0D0F, 0x828E, 0x828E, 0x13E8, + 0x828F, 0x828F, 0x13E4, 0x8290, 0x8290, 0x45AD, 0x8291, 0x8291, 0x13E9, + 0x8292, 0x8292, 0x0AA7, 0x8293, 0x8296, 0x45AE, 0x8297, 0x8297, 0x13EA, + 0x8298, 0x8298, 0x13F3, 0x8299, 0x8299, 0x13EB, 0x829A, 0x829B, 0x45B2, + 0x829C, 0x829C, 0x0EEE, 0x829D, 0x829D, 0x11A4, 0x829E, 0x829E, 0x45B4, + 0x829F, 0x829F, 0x13FD, 0x82A0, 0x82A0, 0x45B5, 0x82A1, 0x82A1, 0x13FB, + 0x82A2, 0x82A3, 0x45B6, 0x82A4, 0x82A4, 0x1400, 0x82A5, 0x82A5, 0x08B7, + 0x82A6, 0x82A6, 0x0A52, 0x82A7, 0x82A7, 0x45B8, 0x82A8, 0x82A8, 0x13E6, + 0x82A9, 0x82A9, 0x13F9, 0x82AA, 0x82AA, 0x13FC, 0x82AB, 0x82AB, 0x13EC, + 0x82AC, 0x82AC, 0x066F, 0x82AD, 0x82AD, 0x03D0, 0x82AE, 0x82AE, 0x13F5, + 0x82AF, 0x82AF, 0x0F89, 0x82B0, 0x82B0, 0x13EF, 0x82B1, 0x82B1, 0x07BD, + 0x82B2, 0x82B2, 0x45B9, 0x82B3, 0x82B3, 0x0659, 0x82B4, 0x82B4, 0x13FA, + 0x82B5, 0x82B6, 0x45BA, 0x82B7, 0x82B7, 0x13F4, 0x82B8, 0x82B8, 0x13ED, + 0x82B9, 0x82B9, 0x0C58, 0x82BA, 0x82BA, 0x45BC, 0x82BB, 0x82BB, 0x2322, + 0x82BC, 0x82BC, 0x45BD, 0x82BD, 0x82BD, 0x0FE8, 0x82BE, 0x82BE, 0x13EE, + 0x82BF, 0x82C0, 0x45BE, 0x82C1, 0x82C1, 0x13F8, 0x82C2, 0x82C3, 0x45C0, + 0x82C4, 0x82C4, 0x13FE, 0x82C5, 0x82C6, 0x45C2, 0x82C7, 0x82C7, 0x0EBC, + 0x82C8, 0x82C8, 0x13F0, 0x82C9, 0x82C9, 0x45C4, 0x82CA, 0x82CA, 0x13F1, + 0x82CB, 0x82CC, 0x13F6, 0x82CD, 0x82CD, 0x049B, 0x82CE, 0x82CE, 0x13FF, + 0x82CF, 0x82CF, 0x0DCA, 0x82D0, 0x82D0, 0x45C5, 0x82D1, 0x82D1, 0x10FA, + 0x82D2, 0x82D2, 0x1409, 0x82D3, 0x82D3, 0x140D, 0x82D4, 0x82D4, 0x0DF9, + 0x82D5, 0x82D5, 0x1414, 0x82D6, 0x82D6, 0x45C6, 0x82D7, 0x82D7, 0x0AEC, + 0x82D8, 0x82D8, 0x140A, 0x82D9, 0x82DA, 0x45C7, 0x82DB, 0x82DB, 0x094E, + 0x82DC, 0x82DC, 0x1407, 0x82DD, 0x82DD, 0x45C9, 0x82DE, 0x82DE, 0x0405, + 0x82DF, 0x82DF, 0x070F, 0x82E0, 0x82E0, 0x1413, 0x82E1, 0x82E1, 0x1401, + 0x82E2, 0x82E2, 0x45CA, 0x82E3, 0x82E3, 0x13F2, 0x82E4, 0x82E4, 0x1404, + 0x82E5, 0x82E5, 0x0CCF, 0x82E6, 0x82E6, 0x096D, 0x82E7, 0x82E7, 0x2336, + 0x82E8, 0x82EA, 0x45CB, 0x82EB, 0x82EB, 0x0CF4, 0x82EC, 0x82EE, 0x45CE, + 0x82EF, 0x82EF, 0x0426, 0x82F0, 0x82F0, 0x45D1, 0x82F1, 0x82F1, 0x1087, + 0x82F2, 0x82F3, 0x45D2, 0x82F4, 0x82F4, 0x1408, 0x82F5, 0x82F6, 0x45D4, + 0x82F7, 0x82F7, 0x1403, 0x82F8, 0x82F8, 0x45D6, 0x82F9, 0x82F9, 0x0BDA, + 0x82FA, 0x82FA, 0x45D7, 0x82FB, 0x82FB, 0x140C, 0x82FC, 0x82FF, 0x45D8, + 0x8300, 0x8300, 0x45DC, 0x8301, 0x8301, 0x121F, 0x8302, 0x8302, 0x0AB4, + 0x8303, 0x8303, 0x0653, 0x8304, 0x8304, 0x0C4E, 0x8305, 0x8305, 0x0AAE, + 0x8306, 0x8306, 0x1410, 0x8307, 0x8307, 0x1406, 0x8308, 0x8308, 0x1419, + 0x8309, 0x8309, 0x1402, 0x830A, 0x830B, 0x45DD, 0x830C, 0x830C, 0x140B, + 0x830D, 0x830D, 0x45DF, 0x830E, 0x830E, 0x08D4, 0x830F, 0x830F, 0x1405, + 0x8310, 0x8310, 0x45E0, 0x8311, 0x8311, 0x140E, 0x8312, 0x8313, 0x45E1, + 0x8314, 0x8315, 0x1411, 0x8316, 0x8316, 0x45E3, 0x8317, 0x8317, 0x1426, + 0x8318, 0x8319, 0x45E4, 0x831A, 0x831A, 0x140F, 0x831B, 0x831B, 0x142E, + 0x831C, 0x831C, 0x1415, 0x831D, 0x8326, 0x45E6, 0x8327, 0x8327, 0x085E, + 0x8328, 0x8328, 0x0547, 0x8329, 0x832A, 0x45F0, 0x832B, 0x832B, 0x0AA8, + 0x832C, 0x832C, 0x04AE, 0x832D, 0x832D, 0x1428, 0x832E, 0x832E, 0x45F2, + 0x832F, 0x832F, 0x1420, 0x8330, 0x8330, 0x45F3, 0x8331, 0x8331, 0x141D, + 0x8332, 0x8332, 0x45F4, 0x8333, 0x8333, 0x142A, 0x8334, 0x8334, 0x141C, + 0x8335, 0x8335, 0x1077, 0x8336, 0x8336, 0x04AF, 0x8337, 0x8337, 0x45F5, + 0x8338, 0x8338, 0x0CB2, 0x8339, 0x8339, 0x0CBE, 0x833A, 0x833A, 0x1429, + 0x833B, 0x833B, 0x45F6, 0x833C, 0x833C, 0x141B, 0x833D, 0x833F, 0x45F7, + 0x8340, 0x8340, 0x1425, 0x8341, 0x8342, 0x45FA, 0x8343, 0x8343, 0x1423, + 0x8344, 0x8345, 0x45FC, 0x8346, 0x8346, 0x08D2, 0x8347, 0x8347, 0x1422, + 0x8348, 0x8348, 0x45FE, 0x8349, 0x8349, 0x04A4, 0x834A, 0x834E, 0x45FF, + 0x834F, 0x834F, 0x1421, 0x8350, 0x8350, 0x0869, 0x8351, 0x8351, 0x1416, + 0x8352, 0x8352, 0x07D9, 0x8353, 0x8353, 0x4604, 0x8354, 0x8354, 0x09DE, + 0x8355, 0x8359, 0x4605, 0x835A, 0x835A, 0x0847, 0x835B, 0x835C, 0x1417, + 0x835D, 0x835D, 0x460A, 0x835E, 0x835E, 0x141F, 0x835F, 0x835F, 0x1424, + 0x8360, 0x8360, 0x1427, 0x8361, 0x8361, 0x0595, 0x8362, 0x8362, 0x460B, + 0x8363, 0x8363, 0x0CB4, 0x8364, 0x8364, 0x07FC, 0x8365, 0x8365, 0x142C, + 0x8366, 0x8366, 0x142B, 0x8367, 0x8367, 0x1090, 0x8368, 0x8368, 0x142D, + 0x8369, 0x8369, 0x142F, 0x836A, 0x836A, 0x1431, 0x836B, 0x836B, 0x1078, + 0x836C, 0x836C, 0x1430, 0x836D, 0x836E, 0x1432, 0x836F, 0x836F, 0x1030, + 0x8370, 0x8376, 0x460C, 0x8377, 0x8377, 0x0780, 0x8378, 0x8378, 0x1435, + 0x8379, 0x837A, 0x4613, 0x837B, 0x837B, 0x1442, 0x837C, 0x837C, 0x143D, + 0x837D, 0x837D, 0x1440, 0x837E, 0x8384, 0x4615, 0x8385, 0x8385, 0x143C, + 0x8386, 0x8386, 0x0BED, 0x8387, 0x8388, 0x461C, 0x8389, 0x8389, 0x09DD, + 0x838A, 0x838A, 0x22AB, 0x838B, 0x838D, 0x461E, 0x838E, 0x838E, 0x0CE8, + 0x838F, 0x8391, 0x4621, 0x8392, 0x8392, 0x141A, 0x8393, 0x8393, 0x143A, + 0x8394, 0x8395, 0x4624, 0x8396, 0x8396, 0x1FBF, 0x8397, 0x8397, 0x4626, + 0x8398, 0x8398, 0x1443, 0x8399, 0x839A, 0x4627, 0x839B, 0x839B, 0x141E, + 0x839C, 0x839C, 0x143B, 0x839D, 0x839D, 0x4629, 0x839E, 0x839E, 0x1444, + 0x839F, 0x839F, 0x462A, 0x83A0, 0x83A0, 0x1438, 0x83A1, 0x83A1, 0x462B, + 0x83A2, 0x83A2, 0x1F7D, 0x83A3, 0x83A6, 0x462C, 0x83A7, 0x83A7, 0x2333, + 0x83A8, 0x83A8, 0x1445, 0x83A9, 0x83A9, 0x143F, 0x83AA, 0x83AA, 0x1439, + 0x83AB, 0x83AB, 0x0B0D, 0x83AC, 0x83AF, 0x4630, 0x83B0, 0x83B0, 0x1434, + 0x83B1, 0x83B1, 0x099E, 0x83B2, 0x83B2, 0x09F4, 0x83B3, 0x83B4, 0x1436, + 0x83B5, 0x83B5, 0x4634, 0x83B6, 0x83B6, 0x143E, 0x83B7, 0x83B7, 0x0806, + 0x83B8, 0x83B8, 0x1441, 0x83B9, 0x83B9, 0x108D, 0x83BA, 0x83BA, 0x1446, + 0x83BB, 0x83BB, 0x4635, 0x83BC, 0x83BC, 0x1447, 0x83BD, 0x83BD, 0x0AAC, + 0x83BE, 0x83BF, 0x4636, 0x83C0, 0x83C0, 0x145E, 0x83C1, 0x83C1, 0x1448, + 0x83C2, 0x83C4, 0x4638, 0x83C5, 0x83C5, 0x145D, 0x83C6, 0x83C6, 0x463B, + 0x83C7, 0x83C7, 0x0716, 0x83C8, 0x83C9, 0x463C, 0x83CA, 0x83CA, 0x0904, + 0x83CB, 0x83CB, 0x463E, 0x83CC, 0x83CC, 0x0929, 0x83CD, 0x83CE, 0x463F, + 0x83CF, 0x83CF, 0x0781, 0x83D0, 0x83D3, 0x4641, 0x83D4, 0x83D4, 0x1456, + 0x83D5, 0x83D5, 0x4645, 0x83D6, 0x83D6, 0x1451, 0x83D7, 0x83D7, 0x4646, + 0x83D8, 0x83D8, 0x144B, 0x83D9, 0x83DB, 0x4647, 0x83DC, 0x83DC, 0x0492, + 0x83DD, 0x83DD, 0x144F, 0x83DE, 0x83DE, 0x464A, 0x83DF, 0x83DF, 0x1457, + 0x83E0, 0x83E0, 0x046B, 0x83E1, 0x83E1, 0x1461, 0x83E2, 0x83E4, 0x464B, + 0x83E5, 0x83E5, 0x144A, 0x83E6, 0x83E8, 0x464E, 0x83E9, 0x83E9, 0x0BEF, + 0x83EA, 0x83EA, 0x145C, 0x83EB, 0x83EE, 0x4651, 0x83EF, 0x83EF, 0x1F4D, + 0x83F0, 0x83F0, 0x1460, 0x83F1, 0x83F1, 0x0A2B, 0x83F2, 0x83F2, 0x0663, + 0x83F3, 0x83F7, 0x4655, 0x83F8, 0x83F9, 0x145A, 0x83FA, 0x83FC, 0x465A, + 0x83FD, 0x83FD, 0x1450, 0x83FE, 0x83FF, 0x465D, 0x8400, 0x8400, 0x465F, + 0x8401, 0x8401, 0x1449, 0x8402, 0x8402, 0x4660, 0x8403, 0x8403, 0x1459, + 0x8404, 0x8404, 0x0E24, 0x8405, 0x8405, 0x4661, 0x8406, 0x8406, 0x1455, + 0x8407, 0x8407, 0x2334, 0x8408, 0x8409, 0x4662, 0x840A, 0x840A, 0x1FF1, + 0x840B, 0x840B, 0x144E, 0x840C, 0x840C, 0x0ACD, 0x840D, 0x840D, 0x0BDB, + 0x840E, 0x840E, 0x0EBD, 0x840F, 0x840F, 0x1458, 0x8410, 0x8410, 0x4664, + 0x8411, 0x8411, 0x1454, 0x8412, 0x8417, 0x4665, 0x8418, 0x8418, 0x144D, + 0x8419, 0x841B, 0x466B, 0x841C, 0x841C, 0x1452, 0x841D, 0x841D, 0x0A83, + 0x841E, 0x8423, 0x466E, 0x8424, 0x8425, 0x108E, 0x8426, 0x8426, 0x145F, + 0x8427, 0x8427, 0x0F61, 0x8428, 0x8428, 0x0CD3, 0x8429, 0x842B, 0x4674, + 0x842C, 0x842C, 0x218B, 0x842D, 0x8430, 0x4677, 0x8431, 0x8431, 0x1472, + 0x8432, 0x8434, 0x467B, 0x8435, 0x8435, 0x2349, 0x8436, 0x8437, 0x467E, + 0x8438, 0x8438, 0x1453, 0x8439, 0x843B, 0x4680, 0x843C, 0x843C, 0x146C, + 0x843D, 0x843D, 0x0A8B, 0x843E, 0x8445, 0x4683, 0x8446, 0x8446, 0x146D, + 0x8447, 0x8448, 0x468B, 0x8449, 0x8449, 0x220B, 0x844A, 0x8450, 0x468D, + 0x8451, 0x8451, 0x1463, 0x8452, 0x8452, 0x2346, 0x8453, 0x8456, 0x4694, + 0x8457, 0x8457, 0x11F7, 0x8458, 0x8458, 0x4698, 0x8459, 0x8459, 0x1465, + 0x845A, 0x845A, 0x1464, 0x845B, 0x845B, 0x06EB, 0x845C, 0x845C, 0x1462, + 0x845D, 0x8460, 0x4699, 0x8461, 0x8461, 0x0BEE, 0x8462, 0x8462, 0x469D, + 0x8463, 0x8463, 0x05EC, 0x8464, 0x8464, 0x2347, 0x8465, 0x8465, 0x469E, + 0x8466, 0x8466, 0x2193, 0x8467, 0x8468, 0x469F, 0x8469, 0x8469, 0x146E, + 0x846A, 0x846A, 0x46A1, 0x846B, 0x846B, 0x07B0, 0x846C, 0x846C, 0x1124, + 0x846D, 0x846D, 0x1473, 0x846E, 0x846E, 0x46A2, 0x846F, 0x846F, 0x26A1, + 0x8470, 0x8470, 0x46A3, 0x8471, 0x8471, 0x0553, 0x8472, 0x8472, 0x46A4, + 0x8473, 0x8473, 0x1466, 0x8474, 0x8474, 0x46A5, 0x8475, 0x8475, 0x0988, + 0x8476, 0x8476, 0x146F, 0x8477, 0x8477, 0x1F62, 0x8478, 0x8478, 0x146B, + 0x8479, 0x8479, 0x46A6, 0x847A, 0x847A, 0x1469, 0x847B, 0x8481, 0x46A7, + 0x8482, 0x8482, 0x05BA, 0x8483, 0x8486, 0x46AE, 0x8487, 0x8488, 0x1467, + 0x8489, 0x8489, 0x146A, 0x848A, 0x848A, 0x46B2, 0x848B, 0x848B, 0x0880, + 0x848C, 0x848C, 0x1470, 0x848D, 0x848D, 0x46B3, 0x848E, 0x848E, 0x1471, + 0x848F, 0x8492, 0x46B4, 0x8493, 0x8493, 0x234D, 0x8494, 0x8494, 0x2348, + 0x8495, 0x8496, 0x46B8, 0x8497, 0x8497, 0x1481, 0x8498, 0x8498, 0x46BA, + 0x8499, 0x8499, 0x0ACE, 0x849A, 0x849B, 0x46BB, 0x849C, 0x849C, 0x0DD7, + 0x849D, 0x84A0, 0x46BD, 0x84A1, 0x84A1, 0x147E, 0x84A2, 0x84AE, 0x46C1, + 0x84AF, 0x84AF, 0x1297, 0x84B0, 0x84B1, 0x46CE, 0x84B2, 0x84B2, 0x0BF0, + 0x84B3, 0x84B3, 0x46D0, 0x84B4, 0x84B4, 0x1480, 0x84B5, 0x84B7, 0x46D1, + 0x84B8, 0x84B8, 0x1195, 0x84B9, 0x84B9, 0x147F, 0x84BA, 0x84BA, 0x147C, + 0x84BB, 0x84BB, 0x46D4, 0x84BC, 0x84BC, 0x1E60, 0x84BD, 0x84BD, 0x1478, + 0x84BE, 0x84BE, 0x46D5, 0x84BF, 0x84BF, 0x147B, 0x84C0, 0x84C0, 0x2345, + 0x84C1, 0x84C1, 0x1474, 0x84C2, 0x84C3, 0x46D6, 0x84C4, 0x84C4, 0x0FB9, + 0x84C5, 0x84C8, 0x46D8, 0x84C9, 0x84C9, 0x0CB3, 0x84CA, 0x84CA, 0x147A, + 0x84CB, 0x84CB, 0x1F12, 0x84CC, 0x84CC, 0x46DC, 0x84CD, 0x84CD, 0x1475, + 0x84CE, 0x84CF, 0x46DD, 0x84D0, 0x84D0, 0x1476, 0x84D1, 0x84D1, 0x0DE7, + 0x84D2, 0x84D2, 0x46DF, 0x84D3, 0x84D3, 0x1479, 0x84D4, 0x84D5, 0x46E0, + 0x84D6, 0x84D6, 0x0436, 0x84D7, 0x84DC, 0x46E2, 0x84DD, 0x84DD, 0x09A1, + 0x84DE, 0x84DE, 0x46E8, 0x84DF, 0x84DF, 0x082E, 0x84E0, 0x84E0, 0x147D, + 0x84E1, 0x84E2, 0x46E9, 0x84E3, 0x84E3, 0x1483, 0x84E4, 0x84E4, 0x46EB, + 0x84E5, 0x84E5, 0x1482, 0x84E6, 0x84E6, 0x1477, 0x84E7, 0x84EB, 0x46EC, + 0x84EC, 0x84EC, 0x0BAF, 0x84ED, 0x84ED, 0x46F1, 0x84EE, 0x84EE, 0x2018, + 0x84EF, 0x84EF, 0x2335, 0x84F0, 0x84F0, 0x1487, 0x84F1, 0x84FB, 0x46F2, + 0x84FC, 0x84FC, 0x148E, 0x84FD, 0x84FD, 0x233C, 0x84FE, 0x84FE, 0x46FD, + 0x84FF, 0x84FF, 0x148D, 0x8500, 0x850B, 0x46FE, 0x850C, 0x850C, 0x1484, + 0x850D, 0x8510, 0x470A, 0x8511, 0x8511, 0x0AF4, 0x8512, 0x8512, 0x470E, + 0x8513, 0x8513, 0x0AA2, 0x8514, 0x8514, 0x266F, 0x8515, 0x8516, 0x470F, + 0x8517, 0x8517, 0x1182, 0x8518, 0x8519, 0x4711, 0x851A, 0x851A, 0x0EC4, + 0x851B, 0x851D, 0x4713, 0x851E, 0x851E, 0x2351, 0x851F, 0x851F, 0x1489, + 0x8520, 0x8520, 0x4716, 0x8521, 0x8521, 0x0493, 0x8522, 0x8522, 0x4717, + 0x8523, 0x8523, 0x1FA0, 0x8524, 0x8525, 0x4718, 0x8526, 0x8526, 0x2338, + 0x8527, 0x852A, 0x471A, 0x852B, 0x852B, 0x0B4B, 0x852C, 0x852C, 0x0D76, + 0x852D, 0x852D, 0x221B, 0x852E, 0x8536, 0x471E, 0x8537, 0x8537, 0x0C3B, + 0x8538, 0x8538, 0x1486, 0x8539, 0x8539, 0x1488, 0x853A, 0x853A, 0x148A, + 0x853B, 0x853B, 0x148C, 0x853C, 0x853C, 0x03B5, 0x853D, 0x853D, 0x0437, + 0x853E, 0x8540, 0x4727, 0x8541, 0x8541, 0x2342, 0x8542, 0x8542, 0x472A, + 0x8543, 0x8543, 0x1496, 0x8544, 0x8545, 0x472B, 0x8546, 0x8546, 0x234F, + 0x8547, 0x8547, 0x472D, 0x8548, 0x8548, 0x1490, 0x8549, 0x8549, 0x0887, + 0x854A, 0x854A, 0x0CCA, 0x854B, 0x854D, 0x472E, 0x854E, 0x854E, 0x233D, + 0x854F, 0x8551, 0x4731, 0x8552, 0x8552, 0x2344, 0x8553, 0x8553, 0x2331, + 0x8554, 0x8554, 0x4734, 0x8555, 0x8555, 0x234B, 0x8556, 0x8556, 0x148B, + 0x8557, 0x8557, 0x4735, 0x8558, 0x8558, 0x233B, 0x8559, 0x8559, 0x148F, + 0x855A, 0x855D, 0x4736, 0x855E, 0x855E, 0x1493, 0x855F, 0x8561, 0x473A, + 0x8562, 0x8562, 0x2350, 0x8563, 0x8563, 0x473D, 0x8564, 0x8564, 0x1492, + 0x8565, 0x8567, 0x473E, 0x8568, 0x8568, 0x1491, 0x8569, 0x8569, 0x1EB4, + 0x856A, 0x856A, 0x21A6, 0x856B, 0x856C, 0x4741, 0x856D, 0x856D, 0x21CB, + 0x856E, 0x8571, 0x4743, 0x8572, 0x8572, 0x1497, 0x8573, 0x8573, 0x4747, + 0x8574, 0x8574, 0x110F, 0x8575, 0x8576, 0x4748, 0x8577, 0x8577, 0x2355, + 0x8578, 0x8578, 0x474A, 0x8579, 0x8579, 0x149D, 0x857A, 0x857A, 0x1494, + 0x857B, 0x857B, 0x1498, 0x857C, 0x857D, 0x474B, 0x857E, 0x857E, 0x09C4, + 0x857F, 0x8583, 0x474D, 0x8584, 0x8584, 0x040A, 0x8585, 0x8585, 0x14A0, + 0x8586, 0x8586, 0x4752, 0x8587, 0x8587, 0x149B, 0x8588, 0x8588, 0x233E, + 0x8589, 0x8589, 0x4753, 0x858A, 0x858A, 0x1F74, 0x858B, 0x858B, 0x4754, + 0x858C, 0x858C, 0x2330, 0x858D, 0x858E, 0x4755, 0x858F, 0x858F, 0x149C, + 0x8590, 0x8590, 0x4757, 0x8591, 0x8591, 0x2680, 0x8592, 0x8593, 0x4758, + 0x8594, 0x8594, 0x20DA, 0x8595, 0x859A, 0x475A, 0x859B, 0x859B, 0x0FCF, + 0x859C, 0x859C, 0x149F, 0x859D, 0x859E, 0x4760, 0x859F, 0x859F, 0x234A, + 0x85A0, 0x85A3, 0x4762, 0x85A4, 0x85A4, 0x1499, 0x85A5, 0x85A5, 0x4766, + 0x85A6, 0x85A6, 0x1F91, 0x85A7, 0x85A7, 0x4767, 0x85A8, 0x85A8, 0x149A, + 0x85A9, 0x85A9, 0x2107, 0x85AA, 0x85AA, 0x0F88, 0x85AB, 0x85AD, 0x4768, + 0x85AE, 0x85AE, 0x149E, 0x85AF, 0x85AF, 0x0D84, 0x85B0, 0x85B0, 0x14A3, + 0x85B1, 0x85B6, 0x476B, 0x85B7, 0x85B7, 0x14A2, 0x85B8, 0x85B8, 0x4771, + 0x85B9, 0x85B9, 0x14A1, 0x85BA, 0x85BA, 0x233F, 0x85BB, 0x85C0, 0x4772, + 0x85C1, 0x85C1, 0x14A5, 0x85C2, 0x85C8, 0x4778, 0x85C9, 0x85C9, 0x08B6, + 0x85CA, 0x85CC, 0x477F, 0x85CD, 0x85CD, 0x1FF4, 0x85CE, 0x85CE, 0x2343, + 0x85CF, 0x85CF, 0x049F, 0x85D0, 0x85D0, 0x0AEF, 0x85D1, 0x85D2, 0x4782, + 0x85D3, 0x85D3, 0x14A4, 0x85D4, 0x85D4, 0x4784, 0x85D5, 0x85D5, 0x0B7B, + 0x85D6, 0x85DB, 0x4785, 0x85DC, 0x85DC, 0x14A6, 0x85DD, 0x85DD, 0x2212, + 0x85DE, 0x85E3, 0x478B, 0x85E4, 0x85E4, 0x0E2C, 0x85E5, 0x85E5, 0x2207, + 0x85E6, 0x85E8, 0x4791, 0x85E9, 0x85E9, 0x0647, 0x85EA, 0x85EA, 0x2359, + 0x85EB, 0x85F3, 0x4794, 0x85F4, 0x85F4, 0x2254, 0x85F5, 0x85F5, 0x479D, + 0x85F6, 0x85F6, 0x2332, 0x85F7, 0x85F8, 0x479E, 0x85F9, 0x85F9, 0x1E26, + 0x85FA, 0x85FA, 0x2357, 0x85FB, 0x85FB, 0x1128, 0x85FC, 0x85FE, 0x47A0, + 0x85FF, 0x85FF, 0x14A7, 0x8600, 0x8603, 0x47A3, 0x8604, 0x8604, 0x2358, + 0x8605, 0x8605, 0x14A9, 0x8606, 0x8606, 0x2042, 0x8607, 0x8607, 0x2153, + 0x8608, 0x860A, 0x47A7, 0x860B, 0x860B, 0x20BB, 0x860C, 0x8610, 0x47AA, + 0x8611, 0x8611, 0x0B05, 0x8612, 0x8615, 0x47AF, 0x8616, 0x8616, 0x14AB, + 0x8617, 0x8619, 0x47B3, 0x861A, 0x861A, 0x235A, 0x861B, 0x861D, 0x47B6, + 0x861E, 0x861E, 0x2356, 0x861F, 0x8621, 0x47B9, 0x8622, 0x8622, 0x2337, + 0x8623, 0x8626, 0x47BC, 0x8627, 0x8627, 0x14A8, 0x8628, 0x8628, 0x47C0, + 0x8629, 0x8629, 0x14AA, 0x862A, 0x862C, 0x47C1, 0x862D, 0x862D, 0x1FF9, + 0x862E, 0x8637, 0x47C4, 0x8638, 0x8638, 0x115B, 0x8639, 0x8639, 0x47CE, + 0x863A, 0x863A, 0x2353, 0x863B, 0x863B, 0x47CF, 0x863C, 0x863C, 0x14AC, + 0x863D, 0x863E, 0x47D0, 0x863F, 0x863F, 0x2061, 0x8640, 0x864C, 0x47D2, + 0x864D, 0x864D, 0x1BF0, 0x864E, 0x864E, 0x07B7, 0x864F, 0x864F, 0x0A59, + 0x8650, 0x8650, 0x0B71, 0x8651, 0x8651, 0x0A6E, 0x8652, 0x8653, 0x47DF, + 0x8654, 0x8654, 0x1BF1, 0x8655, 0x8655, 0x1E95, 0x8656, 0x8659, 0x47E1, + 0x865A, 0x865A, 0x0FB4, 0x865B, 0x865B, 0x47E5, 0x865C, 0x865C, 0x2049, + 0x865D, 0x865D, 0x47E6, 0x865E, 0x865E, 0x10C2, 0x865F, 0x865F, 0x1F42, + 0x8660, 0x8661, 0x47E7, 0x8662, 0x8662, 0x196D, 0x8663, 0x8666, 0x47E9, + 0x8667, 0x8667, 0x1FE8, 0x8668, 0x866A, 0x47ED, 0x866B, 0x866B, 0x050B, + 0x866C, 0x866C, 0x1BF2, 0x866D, 0x866D, 0x47F0, 0x866E, 0x866E, 0x1BF3, + 0x866F, 0x8670, 0x47F1, 0x8671, 0x8671, 0x0D44, 0x8672, 0x8678, 0x47F3, + 0x8679, 0x8679, 0x079E, 0x867A, 0x867A, 0x1BF5, 0x867B, 0x867B, 0x1BF7, + 0x867C, 0x867C, 0x1BF6, 0x867D, 0x867D, 0x0DD9, 0x867E, 0x867E, 0x0F27, + 0x867F, 0x867F, 0x1BF4, 0x8680, 0x8680, 0x0D4B, 0x8681, 0x8681, 0x1056, + 0x8682, 0x8682, 0x0A93, 0x8683, 0x8689, 0x47FA, 0x868A, 0x868A, 0x0ED2, + 0x868B, 0x868B, 0x1BFA, 0x868C, 0x868C, 0x0401, 0x868D, 0x868D, 0x1BF9, + 0x868E, 0x8692, 0x4801, 0x8693, 0x8693, 0x1C00, 0x8694, 0x8694, 0x4806, + 0x8695, 0x8695, 0x0496, 0x8696, 0x869B, 0x4807, 0x869C, 0x869C, 0x0FEA, + 0x869D, 0x869D, 0x1BFC, 0x869E, 0x86A2, 0x480D, 0x86A3, 0x86A3, 0x1BFE, + 0x86A4, 0x86A4, 0x112C, 0x86A5, 0x86A6, 0x4812, 0x86A7, 0x86A7, 0x1BFD, + 0x86A8, 0x86A8, 0x1BF8, 0x86A9, 0x86A9, 0x1C01, 0x86AA, 0x86AA, 0x1BFF, + 0x86AB, 0x86AB, 0x4814, 0x86AC, 0x86AC, 0x1BFB, 0x86AD, 0x86AE, 0x4815, + 0x86AF, 0x86AF, 0x1C09, 0x86B0, 0x86B0, 0x1C06, 0x86B1, 0x86B1, 0x1C08, + 0x86B2, 0x86B3, 0x4817, 0x86B4, 0x86B4, 0x1C0C, 0x86B5, 0x86B5, 0x1C04, + 0x86B6, 0x86B6, 0x1C02, 0x86B7, 0x86B9, 0x4819, 0x86BA, 0x86BA, 0x1C07, + 0x86BB, 0x86BF, 0x481C, 0x86C0, 0x86C0, 0x11FA, 0x86C1, 0x86C3, 0x4821, + 0x86C4, 0x86C4, 0x1C03, 0x86C5, 0x86C5, 0x4824, 0x86C6, 0x86C6, 0x0C76, + 0x86C7, 0x86C7, 0x0D18, 0x86C8, 0x86C8, 0x4825, 0x86C9, 0x86C9, 0x1C0A, + 0x86CA, 0x86CA, 0x071F, 0x86CB, 0x86CB, 0x0591, 0x86CC, 0x86CD, 0x4826, + 0x86CE, 0x86CE, 0x1C05, 0x86CF, 0x86CF, 0x1C0B, 0x86D0, 0x86D0, 0x1C12, + 0x86D1, 0x86D1, 0x1C18, 0x86D2, 0x86D3, 0x4828, 0x86D4, 0x86D4, 0x07EC, + 0x86D5, 0x86D7, 0x482A, 0x86D8, 0x86D8, 0x1C17, 0x86D9, 0x86D9, 0x0E8D, + 0x86DA, 0x86DA, 0x482D, 0x86DB, 0x86DB, 0x11EA, 0x86DC, 0x86DD, 0x482E, + 0x86DE, 0x86DE, 0x1C14, 0x86DF, 0x86DF, 0x1C16, 0x86E0, 0x86E3, 0x4830, + 0x86E4, 0x86E4, 0x06ED, 0x86E5, 0x86E8, 0x4834, 0x86E9, 0x86E9, 0x1C0D, + 0x86EA, 0x86EC, 0x4838, 0x86ED, 0x86ED, 0x1C10, 0x86EE, 0x86EE, 0x0AA0, + 0x86EF, 0x86EF, 0x483B, 0x86F0, 0x86F0, 0x117E, 0x86F1, 0x86F2, 0x1C0E, + 0x86F3, 0x86F3, 0x1C11, 0x86F4, 0x86F4, 0x1C15, 0x86F5, 0x86F7, 0x483C, + 0x86F8, 0x86F8, 0x1C1B, 0x86F9, 0x86F9, 0x10A1, 0x86FA, 0x86FA, 0x25DA, + 0x86FB, 0x86FD, 0x483F, 0x86FE, 0x86FE, 0x0629, 0x86FF, 0x86FF, 0x4842, + 0x8700, 0x8700, 0x0D88, 0x8701, 0x8701, 0x4843, 0x8702, 0x8702, 0x0681, + 0x8703, 0x8703, 0x1C19, 0x8704, 0x8705, 0x4844, 0x8706, 0x8706, 0x25D7, + 0x8707, 0x8707, 0x1C1A, 0x8708, 0x8708, 0x1C1C, 0x8709, 0x8709, 0x1C1F, + 0x870A, 0x870A, 0x1C1D, 0x870B, 0x870C, 0x4846, 0x870D, 0x870D, 0x1C1E, + 0x870E, 0x8711, 0x4848, 0x8712, 0x8712, 0x0FFA, 0x8713, 0x8713, 0x1C13, + 0x8714, 0x8714, 0x484C, 0x8715, 0x8715, 0x0E7A, 0x8716, 0x8716, 0x484D, + 0x8717, 0x8717, 0x0EDE, 0x8718, 0x8718, 0x11A8, 0x8719, 0x8719, 0x484E, + 0x871A, 0x871A, 0x1C25, 0x871B, 0x871B, 0x484F, 0x871C, 0x871C, 0x0AE0, + 0x871D, 0x871D, 0x4850, 0x871E, 0x871E, 0x1C22, 0x871F, 0x8720, 0x4851, + 0x8721, 0x8721, 0x099A, 0x8722, 0x8722, 0x1C2E, 0x8723, 0x8723, 0x1C20, + 0x8724, 0x8724, 0x4853, 0x8725, 0x8725, 0x1C23, 0x8726, 0x8728, 0x4854, + 0x8729, 0x8729, 0x1C2A, 0x872A, 0x872D, 0x4857, 0x872E, 0x872E, 0x1C24, + 0x872F, 0x8730, 0x485B, 0x8731, 0x8731, 0x1C29, 0x8732, 0x8733, 0x485D, + 0x8734, 0x8734, 0x1C28, 0x8735, 0x8736, 0x485F, 0x8737, 0x8737, 0x1C2B, + 0x8738, 0x873A, 0x4861, 0x873B, 0x873B, 0x1C21, 0x873C, 0x873D, 0x4864, + 0x873E, 0x873E, 0x1C26, 0x873F, 0x873F, 0x1C2C, 0x8740, 0x8746, 0x4866, + 0x8747, 0x8747, 0x1091, 0x8748, 0x8748, 0x1C27, 0x8749, 0x8749, 0x04BC, + 0x874A, 0x874B, 0x486D, 0x874C, 0x874C, 0x1C34, 0x874D, 0x874D, 0x486F, + 0x874E, 0x874E, 0x0F76, 0x874F, 0x8752, 0x4870, 0x8753, 0x8753, 0x1C37, + 0x8754, 0x8754, 0x4874, 0x8755, 0x8755, 0x212E, 0x8756, 0x8756, 0x4875, + 0x8757, 0x8757, 0x07DD, 0x8758, 0x8758, 0x4876, 0x8759, 0x8759, 0x1C3B, + 0x875A, 0x875F, 0x4877, 0x8760, 0x8760, 0x1C32, 0x8761, 0x8762, 0x487D, + 0x8763, 0x8763, 0x1C38, 0x8764, 0x8764, 0x1C3A, 0x8765, 0x8765, 0x1C3C, + 0x8766, 0x8766, 0x21B2, 0x8767, 0x876D, 0x487F, 0x876E, 0x876E, 0x1C35, + 0x876F, 0x876F, 0x4886, 0x8770, 0x8770, 0x1C33, 0x8771, 0x8773, 0x4887, + 0x8774, 0x8774, 0x07B2, 0x8775, 0x8775, 0x488A, 0x8776, 0x8776, 0x05DC, + 0x8777, 0x8777, 0x488B, 0x8778, 0x8778, 0x219E, 0x8779, 0x877A, 0x488C, + 0x877B, 0x877B, 0x1C31, 0x877C, 0x877C, 0x1C39, 0x877D, 0x877E, 0x1C2F, + 0x877F, 0x8781, 0x488E, 0x8782, 0x8782, 0x1C2D, 0x8783, 0x8783, 0x1C46, + 0x8784, 0x8784, 0x25DC, 0x8785, 0x8785, 0x1C43, 0x8786, 0x8787, 0x4891, + 0x8788, 0x8788, 0x1C42, 0x8789, 0x878A, 0x4893, 0x878B, 0x878B, 0x1C36, + 0x878C, 0x878C, 0x4895, 0x878D, 0x878D, 0x0CB5, 0x878E, 0x8792, 0x4896, + 0x8793, 0x8793, 0x1C3D, 0x8794, 0x8796, 0x489B, 0x8797, 0x8797, 0x1C45, + 0x8798, 0x879D, 0x489E, 0x879E, 0x879E, 0x206C, 0x879F, 0x879F, 0x0AFD, + 0x87A0, 0x87A1, 0x48A4, 0x87A2, 0x87A2, 0x2226, 0x87A3, 0x87A7, 0x48A6, + 0x87A8, 0x87A8, 0x1C3F, 0x87A9, 0x87AA, 0x48AB, 0x87AB, 0x87AB, 0x1C47, + 0x87AC, 0x87AC, 0x1C49, 0x87AD, 0x87AD, 0x1C44, 0x87AE, 0x87AE, 0x48AD, + 0x87AF, 0x87AF, 0x1C3E, 0x87B0, 0x87B2, 0x48AE, 0x87B3, 0x87B3, 0x1C4B, + 0x87B4, 0x87B4, 0x48B1, 0x87B5, 0x87B5, 0x1C4A, 0x87B6, 0x87B9, 0x48B2, + 0x87BA, 0x87BA, 0x0A84, 0x87BB, 0x87BB, 0x25E0, 0x87BC, 0x87BC, 0x48B6, + 0x87BD, 0x87BD, 0x1C4E, 0x87BE, 0x87BF, 0x48B7, 0x87C0, 0x87C0, 0x1C50, + 0x87C1, 0x87C3, 0x48B9, 0x87C4, 0x87C4, 0x227B, 0x87C5, 0x87C5, 0x48BC, + 0x87C6, 0x87C6, 0x1C41, 0x87C7, 0x87C7, 0x48BD, 0x87C8, 0x87C8, 0x25DE, + 0x87C9, 0x87C9, 0x48BE, 0x87CA, 0x87CA, 0x1C51, 0x87CB, 0x87CB, 0x1C4C, + 0x87CC, 0x87CD, 0x48BF, 0x87CE, 0x87CE, 0x25E1, 0x87CF, 0x87D0, 0x48C1, + 0x87D1, 0x87D1, 0x1C4F, 0x87D2, 0x87D2, 0x1C40, 0x87D3, 0x87D3, 0x1C4D, + 0x87D4, 0x87DA, 0x48C3, 0x87DB, 0x87DB, 0x1C52, 0x87DC, 0x87DF, 0x48CA, + 0x87E0, 0x87E0, 0x1C54, 0x87E1, 0x87E2, 0x48CE, 0x87E3, 0x87E3, 0x25D5, + 0x87E4, 0x87E4, 0x48D0, 0x87E5, 0x87E5, 0x1C48, 0x87E6, 0x87E9, 0x48D1, + 0x87EA, 0x87EA, 0x1C53, 0x87EB, 0x87EB, 0x48D5, 0x87EC, 0x87EC, 0x1E6B, + 0x87ED, 0x87ED, 0x48D6, 0x87EE, 0x87EE, 0x1C55, 0x87EF, 0x87EF, 0x25DB, + 0x87F0, 0x87F1, 0x48D7, 0x87F2, 0x87F2, 0x1E89, 0x87F3, 0x87F5, 0x48D9, + 0x87F6, 0x87F6, 0x25D9, 0x87F7, 0x87F8, 0x48DC, 0x87F9, 0x87F9, 0x0F82, + 0x87FA, 0x87FA, 0x48DE, 0x87FB, 0x87FB, 0x2211, 0x87FC, 0x87FD, 0x48DF, + 0x87FE, 0x87FE, 0x1C58, 0x87FF, 0x87FF, 0x48E1, 0x8800, 0x8802, 0x48E2, + 0x8803, 0x8803, 0x130D, 0x8804, 0x8804, 0x48E5, 0x8805, 0x8805, 0x2229, + 0x8806, 0x8806, 0x25D6, 0x8807, 0x8809, 0x48E6, 0x880A, 0x880A, 0x1C59, + 0x880B, 0x880F, 0x48E9, 0x8810, 0x8810, 0x25DD, 0x8811, 0x8811, 0x25DF, + 0x8812, 0x8812, 0x48EE, 0x8813, 0x8813, 0x1C57, 0x8814, 0x8814, 0x48EF, + 0x8815, 0x8815, 0x0CBF, 0x8816, 0x8816, 0x1C56, 0x8817, 0x881A, 0x48F0, + 0x881B, 0x881B, 0x1C5A, 0x881C, 0x881E, 0x48F4, 0x881F, 0x881F, 0x1FEF, + 0x8820, 0x8820, 0x48F7, 0x8821, 0x8821, 0x1C5B, 0x8822, 0x8822, 0x0543, + 0x8823, 0x8823, 0x25D8, 0x8824, 0x8830, 0x48F8, 0x8831, 0x8831, 0x1F29, + 0x8832, 0x8832, 0x1A8D, 0x8833, 0x8835, 0x4905, 0x8836, 0x8836, 0x1E5B, + 0x8837, 0x8838, 0x4908, 0x8839, 0x8839, 0x1C5C, 0x883A, 0x883A, 0x490A, + 0x883B, 0x883B, 0x2076, 0x883C, 0x883C, 0x1C5D, 0x883D, 0x883F, 0x490B, + 0x8840, 0x8840, 0x0FD3, 0x8841, 0x8843, 0x490E, 0x8844, 0x8844, 0x1CAA, + 0x8845, 0x8845, 0x0F91, 0x8846, 0x8846, 0x2297, 0x8847, 0x8849, 0x4911, + 0x884A, 0x884A, 0x2690, 0x884B, 0x884B, 0x4914, 0x884C, 0x884C, 0x0F9B, + 0x884D, 0x884D, 0x1005, 0x884E, 0x8852, 0x4915, 0x8853, 0x8853, 0x213F, + 0x8854, 0x8854, 0x0F3B, 0x8855, 0x8856, 0x491A, 0x8857, 0x8857, 0x08A7, + 0x8858, 0x8858, 0x491C, 0x8859, 0x8859, 0x0FEC, 0x885A, 0x885A, 0x491D, + 0x885B, 0x885B, 0x2198, 0x885C, 0x885C, 0x491E, 0x885D, 0x885D, 0x1E88, + 0x885E, 0x8860, 0x491F, 0x8861, 0x8861, 0x0799, 0x8862, 0x8862, 0x15ED, + 0x8863, 0x8863, 0x1049, 0x8864, 0x8864, 0x1BA6, 0x8865, 0x8865, 0x0480, + 0x8866, 0x8867, 0x4922, 0x8868, 0x8868, 0x0456, 0x8869, 0x8869, 0x1BA7, + 0x886A, 0x886A, 0x4924, 0x886B, 0x886B, 0x0CF9, 0x886C, 0x886C, 0x04E9, + 0x886D, 0x886D, 0x4925, 0x886E, 0x886E, 0x1306, 0x886F, 0x886F, 0x4926, + 0x8870, 0x8870, 0x0D9A, 0x8871, 0x8871, 0x4927, 0x8872, 0x8872, 0x1BA8, + 0x8873, 0x8876, 0x4928, 0x8877, 0x8877, 0x11D3, 0x8878, 0x8878, 0x492C, + 0x8879, 0x8879, 0x228C, 0x887A, 0x887C, 0x492D, 0x887D, 0x887D, 0x1BA9, + 0x887E, 0x887E, 0x1CBE, 0x887F, 0x887F, 0x1BAA, 0x8880, 0x8880, 0x4930, + 0x8881, 0x8881, 0x10EF, 0x8882, 0x8882, 0x1BAB, 0x8883, 0x8883, 0x4931, + 0x8884, 0x8884, 0x03CB, 0x8885, 0x8885, 0x1CBF, 0x8886, 0x8887, 0x4932, + 0x8888, 0x8888, 0x1CC0, 0x8889, 0x888A, 0x4934, 0x888B, 0x888B, 0x057F, + 0x888C, 0x888C, 0x4936, 0x888D, 0x888D, 0x0B9C, 0x888E, 0x8891, 0x4937, + 0x8892, 0x8892, 0x0E0E, 0x8893, 0x8895, 0x493B, 0x8896, 0x8896, 0x0FAF, + 0x8897, 0x889B, 0x493E, 0x889C, 0x889C, 0x0E91, 0x889D, 0x88A1, 0x4943, + 0x88A2, 0x88A2, 0x1BAC, 0x88A3, 0x88A3, 0x4948, 0x88A4, 0x88A4, 0x1307, + 0x88A5, 0x88AA, 0x4949, 0x88AB, 0x88AB, 0x0424, 0x88AC, 0x88AC, 0x494F, + 0x88AD, 0x88AD, 0x0F1B, 0x88AE, 0x88B0, 0x4950, 0x88B1, 0x88B1, 0x069F, + 0x88B2, 0x88B6, 0x4953, 0x88B7, 0x88B7, 0x1BAE, 0x88B8, 0x88BB, 0x4958, + 0x88BC, 0x88BC, 0x1BAF, 0x88BD, 0x88C0, 0x495C, 0x88C1, 0x88C1, 0x048A, + 0x88C2, 0x88C2, 0x0A1A, 0x88C3, 0x88C4, 0x4960, 0x88C5, 0x88C5, 0x120D, + 0x88C6, 0x88C6, 0x1BAD, 0x88C7, 0x88C8, 0x4962, 0x88C9, 0x88C9, 0x1BB0, + 0x88CA, 0x88CA, 0x25F1, 0x88CB, 0x88CD, 0x4964, 0x88CE, 0x88CE, 0x1BB2, + 0x88CF, 0x88CF, 0x200C, 0x88D0, 0x88D1, 0x4967, 0x88D2, 0x88D2, 0x130A, + 0x88D3, 0x88D3, 0x4969, 0x88D4, 0x88D4, 0x1068, 0x88D5, 0x88D5, 0x10E6, + 0x88D6, 0x88D7, 0x496A, 0x88D8, 0x88D8, 0x1CC1, 0x88D9, 0x88D9, 0x0C94, + 0x88DA, 0x88DB, 0x496C, 0x88DC, 0x88DC, 0x1E58, 0x88DD, 0x88DD, 0x22AC, + 0x88DE, 0x88DE, 0x496E, 0x88DF, 0x88DF, 0x1CC2, 0x88E0, 0x88E1, 0x496F, + 0x88E2, 0x88E2, 0x1BB1, 0x88E3, 0x88E3, 0x1BB3, 0x88E4, 0x88E4, 0x0970, + 0x88E5, 0x88E5, 0x1BB4, 0x88E6, 0x88E7, 0x4971, 0x88E8, 0x88E8, 0x1BB8, + 0x88E9, 0x88EF, 0x4973, 0x88F0, 0x88F0, 0x1BBA, 0x88F1, 0x88F1, 0x1BB5, + 0x88F2, 0x88F2, 0x497A, 0x88F3, 0x88F3, 0x0D0A, 0x88F4, 0x88F4, 0x0BA2, + 0x88F5, 0x88F7, 0x497B, 0x88F8, 0x88F8, 0x0A8A, 0x88F9, 0x88F9, 0x0755, + 0x88FA, 0x88FB, 0x497E, 0x88FC, 0x88FC, 0x1BB7, 0x88FD, 0x88FD, 0x26A7, + 0x88FE, 0x88FE, 0x1BB9, 0x88FF, 0x88FF, 0x4980, 0x8900, 0x8901, 0x4981, + 0x8902, 0x8902, 0x072C, 0x8903, 0x8906, 0x4983, 0x8907, 0x8907, 0x2676, + 0x8908, 0x8909, 0x4987, 0x890A, 0x890A, 0x1BBF, 0x890B, 0x890F, 0x4989, + 0x8910, 0x8910, 0x078D, 0x8911, 0x8911, 0x498E, 0x8912, 0x8912, 0x0408, + 0x8913, 0x8913, 0x1BBD, 0x8914, 0x8918, 0x498F, 0x8919, 0x8919, 0x1BBC, + 0x891A, 0x891A, 0x1BB6, 0x891B, 0x891B, 0x1BBE, 0x891C, 0x8920, 0x4994, + 0x8921, 0x8921, 0x1BBB, 0x8922, 0x8924, 0x4999, 0x8925, 0x8925, 0x0CC7, + 0x8926, 0x8929, 0x499C, 0x892A, 0x892A, 0x0E7B, 0x892B, 0x892B, 0x1BC1, + 0x892C, 0x892F, 0x49A0, 0x8930, 0x8930, 0x1739, 0x8931, 0x8931, 0x49A4, + 0x8932, 0x8932, 0x1FE1, 0x8933, 0x8933, 0x25BB, 0x8934, 0x8934, 0x1BC0, + 0x8935, 0x8935, 0x49A5, 0x8936, 0x8936, 0x1BC2, 0x8937, 0x8937, 0x49A6, + 0x8938, 0x8938, 0x25BE, 0x8939, 0x893A, 0x49A7, 0x893B, 0x893B, 0x22DD, + 0x893C, 0x8940, 0x49A9, 0x8941, 0x8941, 0x1BC3, 0x8942, 0x8943, 0x49AE, + 0x8944, 0x8944, 0x0F52, 0x8945, 0x8946, 0x49B0, 0x8947, 0x8947, 0x25BD, + 0x8948, 0x8955, 0x49B2, 0x8956, 0x8956, 0x1E2A, 0x8957, 0x895C, 0x49C0, + 0x895D, 0x895D, 0x25BC, 0x895E, 0x895E, 0x1CC3, 0x895F, 0x895F, 0x08C4, + 0x8960, 0x8960, 0x25BA, 0x8961, 0x8963, 0x49C6, 0x8964, 0x8964, 0x25BF, + 0x8965, 0x8965, 0x49C9, 0x8966, 0x8966, 0x1BC4, 0x8967, 0x8969, 0x49CA, + 0x896A, 0x896A, 0x2187, 0x896B, 0x896B, 0x49CD, 0x896C, 0x896C, 0x266B, + 0x896D, 0x896E, 0x49CE, 0x896F, 0x896F, 0x1E7F, 0x8970, 0x8971, 0x49D0, + 0x8972, 0x8972, 0x21AD, 0x8973, 0x897A, 0x49D2, 0x897B, 0x897B, 0x1BC5, + 0x897C, 0x897E, 0x49DA, 0x897F, 0x897F, 0x0F06, 0x8980, 0x8980, 0x49DD, + 0x8981, 0x8981, 0x1031, 0x8982, 0x8982, 0x49DE, 0x8983, 0x8983, 0x1BDF, + 0x8984, 0x8985, 0x49DF, 0x8986, 0x8986, 0x06AD, 0x8987, 0x898A, 0x49E1, + 0x898B, 0x898B, 0x1F96, 0x898C, 0x898E, 0x49E5, 0x898F, 0x898F, 0x1F32, + 0x8990, 0x8992, 0x49E8, 0x8993, 0x8993, 0x2084, 0x8994, 0x8995, 0x49EB, + 0x8996, 0x8996, 0x2136, 0x8997, 0x8997, 0x49ED, 0x8998, 0x8998, 0x24B8, + 0x8999, 0x89A0, 0x49EE, 0x89A1, 0x89A1, 0x24BA, 0x89A2, 0x89A5, 0x49F6, + 0x89A6, 0x89A6, 0x24BC, 0x89A7, 0x89A9, 0x49FA, 0x89AA, 0x89AA, 0x20E4, + 0x89AB, 0x89AB, 0x49FD, 0x89AC, 0x89AC, 0x24B9, 0x89AD, 0x89AE, 0x49FE, + 0x89AF, 0x89AF, 0x24BD, 0x89B0, 0x89B1, 0x4A00, 0x89B2, 0x89B2, 0x24BE, + 0x89B3, 0x89B6, 0x4A02, 0x89B7, 0x89B7, 0x24BF, 0x89B8, 0x89B9, 0x4A06, + 0x89BA, 0x89BA, 0x1FD2, 0x89BB, 0x89BC, 0x4A08, 0x89BD, 0x89BD, 0x1FFD, + 0x89BE, 0x89BE, 0x4A0A, 0x89BF, 0x89BF, 0x24BB, 0x89C0, 0x89C0, 0x1F2D, + 0x89C1, 0x89C1, 0x086E, 0x89C2, 0x89C2, 0x0734, 0x89C3, 0x89C3, 0x4A0B, + 0x89C4, 0x89C4, 0x073F, 0x89C5, 0x89C5, 0x0ADE, 0x89C6, 0x89C6, 0x0D6A, + 0x89C7, 0x89C7, 0x193A, 0x89C8, 0x89C8, 0x09AB, 0x89C9, 0x89C9, 0x0924, + 0x89CA, 0x89CC, 0x193B, 0x89CD, 0x89CD, 0x4A0C, 0x89CE, 0x89D1, 0x193E, + 0x89D2, 0x89D2, 0x0898, 0x89D3, 0x89D5, 0x4A0D, 0x89D6, 0x89D6, 0x1D57, + 0x89D7, 0x89D9, 0x4A10, 0x89DA, 0x89DA, 0x1D59, 0x89DB, 0x89DB, 0x4A13, + 0x89DC, 0x89DC, 0x1D5A, 0x89DD, 0x89DD, 0x4A14, 0x89DE, 0x89DE, 0x1D58, + 0x89DF, 0x89E2, 0x4A15, 0x89E3, 0x89E3, 0x08B3, 0x89E4, 0x89E4, 0x4A19, + 0x89E5, 0x89E5, 0x1D5B, 0x89E6, 0x89E6, 0x0528, 0x89E7, 0x89EA, 0x4A1A, + 0x89EB, 0x89EB, 0x1D5C, 0x89EC, 0x89EE, 0x4A1E, 0x89EF, 0x89EF, 0x1D5D, + 0x89F0, 0x89F2, 0x4A21, 0x89F3, 0x89F3, 0x19C0, 0x89F4, 0x89F4, 0x2609, + 0x89F5, 0x89F5, 0x4A24, 0x89F6, 0x89F6, 0x260A, 0x89F7, 0x89F7, 0x4A25, + 0x89F8, 0x89F8, 0x1E94, 0x89F9, 0x89FF, 0x4A26, 0x8A00, 0x8A00, 0x0FFD, + 0x8A01, 0x8A01, 0x22DF, 0x8A02, 0x8A02, 0x1ECB, 0x8A03, 0x8A03, 0x1F0D, + 0x8A04, 0x8A06, 0x4A2D, 0x8A07, 0x8A07, 0x12FE, 0x8A08, 0x8A08, 0x1F77, + 0x8A09, 0x8A09, 0x4A30, 0x8A0A, 0x8A0A, 0x21EB, 0x8A0B, 0x8A0B, 0x4A31, + 0x8A0C, 0x8A0C, 0x22E1, 0x8A0D, 0x8A0D, 0x4A32, 0x8A0E, 0x8A0E, 0x216F, + 0x8A0F, 0x8A0F, 0x4A33, 0x8A10, 0x8A10, 0x22E0, 0x8A11, 0x8A12, 0x4A34, + 0x8A13, 0x8A13, 0x21EA, 0x8A14, 0x8A14, 0x4A36, 0x8A15, 0x8A15, 0x22E2, + 0x8A16, 0x8A16, 0x20CB, 0x8A17, 0x8A17, 0x4A37, 0x8A18, 0x8A18, 0x1F78, + 0x8A19, 0x8A1A, 0x4A38, 0x8A1B, 0x8A1B, 0x1EE2, 0x8A1C, 0x8A1C, 0x4A3A, + 0x8A1D, 0x8A1D, 0x21F2, 0x8A1E, 0x8A1E, 0x4A3B, 0x8A1F, 0x8A1F, 0x2150, + 0x8A20, 0x8A22, 0x4A3C, 0x8A23, 0x8A23, 0x1FD3, 0x8A24, 0x8A24, 0x4A3F, + 0x8A25, 0x8A25, 0x22E5, 0x8A26, 0x8A29, 0x4A40, 0x8A2A, 0x8A2A, 0x1EF2, + 0x8A2B, 0x8A2C, 0x4A44, 0x8A2D, 0x8A2D, 0x211F, 0x8A2E, 0x8A30, 0x4A46, + 0x8A31, 0x8A31, 0x21DD, 0x8A32, 0x8A33, 0x4A49, 0x8A34, 0x8A34, 0x2154, + 0x8A35, 0x8A35, 0x4A4B, 0x8A36, 0x8A36, 0x22E7, 0x8A37, 0x8A39, 0x4A4C, + 0x8A3A, 0x8A3A, 0x2282, 0x8A3B, 0x8A3D, 0x4A4F, 0x8A3E, 0x8A3E, 0x1D5E, + 0x8A3F, 0x8A40, 0x4A52, 0x8A41, 0x8A41, 0x22E6, 0x8A42, 0x8A45, 0x4A54, + 0x8A46, 0x8A46, 0x22E8, 0x8A47, 0x8A47, 0x4A58, 0x8A48, 0x8A48, 0x1A84, + 0x8A49, 0x8A4D, 0x4A59, 0x8A4E, 0x8A4E, 0x22E4, 0x8A4F, 0x8A4F, 0x4A5E, + 0x8A50, 0x8A50, 0x226A, 0x8A51, 0x8A51, 0x4A5F, 0x8A52, 0x8A52, 0x22EB, + 0x8A53, 0x8A53, 0x4A60, 0x8A54, 0x8A54, 0x22E9, 0x8A55, 0x8A55, 0x20BD, + 0x8A56, 0x8A57, 0x4A61, 0x8A58, 0x8A58, 0x22EA, 0x8A59, 0x8A5A, 0x4A63, + 0x8A5B, 0x8A5B, 0x22BD, 0x8A5C, 0x8A5D, 0x4A65, 0x8A5E, 0x8A5E, 0x1E9E, + 0x8A5F, 0x8A60, 0x4A67, 0x8A61, 0x8A61, 0x22F6, 0x8A62, 0x8A62, 0x21E7, + 0x8A63, 0x8A63, 0x2216, 0x8A64, 0x8A65, 0x4A69, 0x8A66, 0x8A66, 0x2137, + 0x8A67, 0x8A68, 0x4A6B, 0x8A69, 0x8A69, 0x212C, 0x8A6A, 0x8A6A, 0x4A6D, + 0x8A6B, 0x8A6B, 0x1E68, 0x8A6C, 0x8A6C, 0x22F2, 0x8A6D, 0x8A6D, 0x1F37, + 0x8A6E, 0x8A6E, 0x22F3, 0x8A6F, 0x8A6F, 0x4A6E, 0x8A70, 0x8A70, 0x22EF, + 0x8A71, 0x8A71, 0x1F50, 0x8A72, 0x8A72, 0x1F10, 0x8A73, 0x8A73, 0x21C8, + 0x8A74, 0x8A74, 0x4A6F, 0x8A75, 0x8A75, 0x22F1, 0x8A76, 0x8A78, 0x4A70, + 0x8A79, 0x8A79, 0x1153, 0x8A7A, 0x8A7B, 0x4A73, 0x8A7C, 0x8A7C, 0x22F0, + 0x8A7D, 0x8A7E, 0x4A75, 0x8A7F, 0x8A7F, 0x22EE, 0x8A80, 0x8A83, 0x4A77, + 0x8A84, 0x8A84, 0x22ED, 0x8A85, 0x8A85, 0x229E, 0x8A86, 0x8A86, 0x22EC, + 0x8A87, 0x8A87, 0x1FE2, 0x8A88, 0x8A88, 0x4A7B, 0x8A89, 0x8A89, 0x10E3, + 0x8A8A, 0x8A8A, 0x0E2F, 0x8A8B, 0x8A8C, 0x4A7C, 0x8A8D, 0x8A8D, 0x20FE, + 0x8A8E, 0x8A90, 0x4A7E, 0x8A91, 0x8A92, 0x22F9, 0x8A93, 0x8A93, 0x0D5B, + 0x8A94, 0x8A94, 0x4A81, 0x8A95, 0x8A95, 0x1EAF, 0x8A96, 0x8A97, 0x4A82, + 0x8A98, 0x8A98, 0x2236, 0x8A99, 0x8A99, 0x4A84, 0x8A9A, 0x8A9A, 0x22F7, + 0x8A9B, 0x8A9D, 0x4A85, 0x8A9E, 0x8A9E, 0x223D, 0x8A9F, 0x8A9F, 0x4A88, + 0x8AA0, 0x8AA0, 0x1E82, 0x8AA1, 0x8AA1, 0x1FB6, 0x8AA2, 0x8AA2, 0x4A89, + 0x8AA3, 0x8AA3, 0x21A4, 0x8AA4, 0x8AA4, 0x21AA, 0x8AA5, 0x8AA5, 0x22F8, + 0x8AA6, 0x8AA6, 0x2151, 0x8AA7, 0x8AA7, 0x4A8A, 0x8AA8, 0x8AA8, 0x1F60, + 0x8AA9, 0x8AAB, 0x4A8B, 0x8AAC, 0x8AAC, 0x2147, 0x8AAD, 0x8AAF, 0x4A8E, + 0x8AB0, 0x8AB0, 0x2145, 0x8AB1, 0x8AB1, 0x4A91, 0x8AB2, 0x8AB2, 0x1FDC, + 0x8AB3, 0x8AB5, 0x4A92, 0x8AB6, 0x8AB6, 0x2301, 0x8AB7, 0x8AB8, 0x4A95, + 0x8AB9, 0x8AB9, 0x1EF5, 0x8ABA, 0x8ABB, 0x4A97, 0x8ABC, 0x8ABC, 0x2218, + 0x8ABD, 0x8ABE, 0x4A99, 0x8ABF, 0x8ABF, 0x1EC6, 0x8AC0, 0x8AC1, 0x4A9B, + 0x8AC2, 0x8AC2, 0x2300, 0x8AC3, 0x8AC3, 0x4A9D, 0x8AC4, 0x8AC4, 0x22B4, + 0x8AC5, 0x8AC6, 0x4A9E, 0x8AC7, 0x8AC7, 0x2169, 0x8AC8, 0x8AC8, 0x4AA0, + 0x8AC9, 0x8AC9, 0x22FD, 0x8ACA, 0x8ACA, 0x4AA1, 0x8ACB, 0x8ACB, 0x20EA, + 0x8ACC, 0x8ACC, 0x4AA2, 0x8ACD, 0x8ACD, 0x22F4, 0x8ACE, 0x8ACE, 0x4AA3, + 0x8ACF, 0x8ACF, 0x22FB, 0x8AD0, 0x8AD0, 0x4AA4, 0x8AD1, 0x8AD1, 0x22FC, + 0x8AD2, 0x8AD2, 0x2027, 0x8AD3, 0x8AD5, 0x4AA5, 0x8AD6, 0x8AD6, 0x2060, + 0x8AD7, 0x8AD7, 0x22FF, 0x8AD8, 0x8ADA, 0x4AA8, 0x8ADB, 0x8ADB, 0x22FE, + 0x8ADC, 0x8ADC, 0x1EC7, 0x8ADD, 0x8ADD, 0x4AAB, 0x8ADE, 0x8ADE, 0x230C, + 0x8ADF, 0x8AE1, 0x4AAC, 0x8AE2, 0x8AE2, 0x22F5, 0x8AE3, 0x8AE3, 0x4AAF, + 0x8AE4, 0x8AE4, 0x2306, 0x8AE5, 0x8AE5, 0x4AB0, 0x8AE6, 0x8AE6, 0x230A, + 0x8AE7, 0x8AE7, 0x21D3, 0x8AE8, 0x8AEA, 0x4AB1, 0x8AEB, 0x8AEB, 0x2303, + 0x8AEC, 0x8AEC, 0x4AB4, 0x8AED, 0x8AED, 0x2307, 0x8AEE, 0x8AEE, 0x230B, + 0x8AEF, 0x8AF0, 0x4AB5, 0x8AF1, 0x8AF1, 0x1F5F, 0x8AF2, 0x8AF2, 0x4AB7, + 0x8AF3, 0x8AF3, 0x2309, 0x8AF4, 0x8AF5, 0x4AB8, 0x8AF6, 0x8AF6, 0x2302, + 0x8AF7, 0x8AF7, 0x1F04, 0x8AF8, 0x8AF8, 0x229D, 0x8AF9, 0x8AF9, 0x4ABA, + 0x8AFA, 0x8AFA, 0x21FB, 0x8AFB, 0x8AFB, 0x4ABB, 0x8AFC, 0x8AFC, 0x2308, + 0x8AFD, 0x8AFD, 0x4ABC, 0x8AFE, 0x8AFE, 0x20AC, 0x8AFF, 0x8AFF, 0x4ABD, + 0x8B00, 0x8B00, 0x208E, 0x8B01, 0x8B01, 0x2305, 0x8B02, 0x8B02, 0x2197, + 0x8B03, 0x8B03, 0x4ABE, 0x8B04, 0x8B04, 0x2171, 0x8B05, 0x8B05, 0x2298, + 0x8B06, 0x8B06, 0x4ABF, 0x8B07, 0x8B07, 0x173C, 0x8B08, 0x8B09, 0x4AC0, + 0x8B0A, 0x8B0A, 0x1F57, 0x8B0B, 0x8B0D, 0x4AC2, 0x8B0E, 0x8B0E, 0x2082, + 0x8B0F, 0x8B0F, 0x4AC5, 0x8B10, 0x8B10, 0x2311, 0x8B11, 0x8B13, 0x4AC6, + 0x8B14, 0x8B14, 0x2304, 0x8B15, 0x8B15, 0x4AC9, 0x8B16, 0x8B16, 0x230F, + 0x8B17, 0x8B17, 0x1E35, 0x8B18, 0x8B18, 0x4ACA, 0x8B19, 0x8B19, 0x20D1, + 0x8B1A, 0x8B1A, 0x2310, 0x8B1B, 0x8B1B, 0x1FA3, 0x8B1C, 0x8B1C, 0x4ACB, + 0x8B1D, 0x8B1D, 0x21D6, 0x8B1E, 0x8B20, 0x4ACC, 0x8B21, 0x8B21, 0x2206, + 0x8B22, 0x8B25, 0x4ACF, 0x8B26, 0x8B26, 0x1D5F, 0x8B27, 0x8B27, 0x4AD3, + 0x8B28, 0x8B28, 0x230D, 0x8B29, 0x8B2A, 0x4AD4, 0x8B2B, 0x8B2B, 0x2312, + 0x8B2C, 0x8B2C, 0x208D, 0x8B2D, 0x8B2D, 0x2313, 0x8B2E, 0x8B32, 0x4AD6, + 0x8B33, 0x8B33, 0x22E3, 0x8B34, 0x8B38, 0x4ADB, 0x8B39, 0x8B39, 0x1FBA, + 0x8B3A, 0x8B3D, 0x4AE0, 0x8B3E, 0x8B3E, 0x2078, 0x8B3F, 0x8B48, 0x4AE4, + 0x8B49, 0x8B49, 0x2288, 0x8B4A, 0x8B4D, 0x4AEE, 0x8B4E, 0x8B4E, 0x2316, + 0x8B4F, 0x8B4F, 0x1F6B, 0x8B50, 0x8B55, 0x4AF2, 0x8B56, 0x8B56, 0x2314, + 0x8B57, 0x8B57, 0x4AF8, 0x8B58, 0x8B58, 0x2130, 0x8B59, 0x8B59, 0x2315, + 0x8B5A, 0x8B5A, 0x2168, 0x8B5B, 0x8B5B, 0x4AF9, 0x8B5C, 0x8B5C, 0x20C4, + 0x8B5D, 0x8B65, 0x4AFA, 0x8B66, 0x8B66, 0x08DE, 0x8B67, 0x8B6A, 0x4B03, + 0x8B6B, 0x8B6B, 0x2318, 0x8B6C, 0x8B6C, 0x0BC8, 0x8B6D, 0x8B6E, 0x4B07, + 0x8B6F, 0x8B6F, 0x2219, 0x8B70, 0x8B70, 0x2217, 0x8B71, 0x8B73, 0x4B09, + 0x8B74, 0x8B74, 0x20D5, 0x8B75, 0x8B76, 0x4B0C, 0x8B77, 0x8B77, 0x1F4A, + 0x8B78, 0x8B7C, 0x4B0E, 0x8B7D, 0x8B7D, 0x2240, 0x8B7E, 0x8B7F, 0x4B13, + 0x8B80, 0x8B80, 0x1ED3, 0x8B81, 0x8B89, 0x4B15, 0x8B8A, 0x8B8A, 0x1E49, + 0x8B8B, 0x8B8D, 0x4B1E, 0x8B8E, 0x8B8E, 0x261B, 0x8B8F, 0x8B91, 0x4B21, + 0x8B92, 0x8B92, 0x1E6D, 0x8B93, 0x8B93, 0x20F8, 0x8B94, 0x8B94, 0x4B24, + 0x8B95, 0x8B95, 0x1FFB, 0x8B96, 0x8B96, 0x2319, 0x8B97, 0x8B9B, 0x4B25, + 0x8B9C, 0x8B9C, 0x230E, 0x8B9D, 0x8B9D, 0x4B2A, 0x8B9E, 0x8B9E, 0x2317, + 0x8B9F, 0x8B9F, 0x4B2B, 0x8BA0, 0x8BA0, 0x1317, 0x8BA1, 0x8BA1, 0x0839, + 0x8BA2, 0x8BA2, 0x05E8, 0x8BA3, 0x8BA3, 0x06B7, 0x8BA4, 0x8BA4, 0x0CAA, + 0x8BA5, 0x8BA5, 0x0818, 0x8BA6, 0x8BA7, 0x1318, 0x8BA8, 0x8BA8, 0x0E29, + 0x8BA9, 0x8BA9, 0x0C9E, 0x8BAA, 0x8BAA, 0x131A, 0x8BAB, 0x8BAB, 0x0C1C, + 0x8BAC, 0x8BAC, 0x4B2C, 0x8BAD, 0x8BAD, 0x0FDE, 0x8BAE, 0x8BAE, 0x1070, + 0x8BAF, 0x8BAF, 0x0FDF, 0x8BB0, 0x8BB0, 0x083A, 0x8BB1, 0x8BB1, 0x4B2D, + 0x8BB2, 0x8BB2, 0x0883, 0x8BB3, 0x8BB3, 0x07F9, 0x8BB4, 0x8BB5, 0x131B, + 0x8BB6, 0x8BB6, 0x0FF1, 0x8BB7, 0x8BB7, 0x131D, 0x8BB8, 0x8BB8, 0x0FB8, + 0x8BB9, 0x8BB9, 0x062E, 0x8BBA, 0x8BBA, 0x0A82, 0x8BBB, 0x8BBB, 0x4B2E, + 0x8BBC, 0x8BBC, 0x0DC4, 0x8BBD, 0x8BBD, 0x068A, 0x8BBE, 0x8BBE, 0x0D21, + 0x8BBF, 0x8BBF, 0x0660, 0x8BC0, 0x8BC0, 0x0926, 0x8BC1, 0x8BC1, 0x11A3, + 0x8BC2, 0x8BC3, 0x131E, 0x8BC4, 0x8BC4, 0x0BDF, 0x8BC5, 0x8BC5, 0x1244, + 0x8BC6, 0x8BC6, 0x0D4D, 0x8BC7, 0x8BC7, 0x4B2F, 0x8BC8, 0x8BC8, 0x114A, + 0x8BC9, 0x8BC9, 0x0DD4, 0x8BCA, 0x8BCA, 0x1190, 0x8BCB, 0x8BCB, 0x1320, + 0x8BCC, 0x8BCC, 0x11DE, 0x8BCD, 0x8BCD, 0x054D, 0x8BCE, 0x8BCE, 0x1322, + 0x8BCF, 0x8BCF, 0x1321, 0x8BD0, 0x8BD0, 0x4B30, 0x8BD1, 0x8BD1, 0x1072, + 0x8BD2, 0x8BD4, 0x1323, 0x8BD5, 0x8BD5, 0x0D6B, 0x8BD6, 0x8BD6, 0x1326, + 0x8BD7, 0x8BD7, 0x0D42, 0x8BD8, 0x8BD9, 0x1327, 0x8BDA, 0x8BDA, 0x04F4, + 0x8BDB, 0x8BDB, 0x11EE, 0x8BDC, 0x8BDC, 0x1329, 0x8BDD, 0x8BDD, 0x07C5, + 0x8BDE, 0x8BDE, 0x058F, 0x8BDF, 0x8BE0, 0x132A, 0x8BE1, 0x8BE1, 0x0747, + 0x8BE2, 0x8BE2, 0x0FD8, 0x8BE3, 0x8BE3, 0x106F, 0x8BE4, 0x8BE4, 0x132C, + 0x8BE5, 0x8BE5, 0x06BE, 0x8BE6, 0x8BE6, 0x0F57, 0x8BE7, 0x8BE7, 0x04B6, + 0x8BE8, 0x8BE9, 0x132D, 0x8BEA, 0x8BEA, 0x4B31, 0x8BEB, 0x8BEB, 0x08BC, + 0x8BEC, 0x8BEC, 0x0EEB, 0x8BED, 0x8BED, 0x10D4, 0x8BEE, 0x8BEE, 0x132F, + 0x8BEF, 0x8BEF, 0x0F02, 0x8BF0, 0x8BF0, 0x1330, 0x8BF1, 0x8BF1, 0x10BA, + 0x8BF2, 0x8BF2, 0x07FA, 0x8BF3, 0x8BF3, 0x1331, 0x8BF4, 0x8BF4, 0x0DAA, + 0x8BF5, 0x8BF5, 0x0DC5, 0x8BF6, 0x8BF6, 0x1332, 0x8BF7, 0x8BF7, 0x0C68, + 0x8BF8, 0x8BF8, 0x11ED, 0x8BF9, 0x8BF9, 0x1333, 0x8BFA, 0x8BFA, 0x0B76, + 0x8BFB, 0x8BFB, 0x0600, 0x8BFC, 0x8BFC, 0x1334, 0x8BFD, 0x8BFD, 0x0669, + 0x8BFE, 0x8BFE, 0x095B, 0x8BFF, 0x8BFF, 0x1335, 0x8C00, 0x8C00, 0x1336, + 0x8C01, 0x8C01, 0x0DA2, 0x8C02, 0x8C02, 0x1337, 0x8C03, 0x8C03, 0x05D8, + 0x8C04, 0x8C04, 0x1338, 0x8C05, 0x8C05, 0x0A0B, 0x8C06, 0x8C06, 0x1218, + 0x8C07, 0x8C07, 0x1339, 0x8C08, 0x8C08, 0x0E0B, 0x8C09, 0x8C09, 0x4B32, + 0x8C0A, 0x8C0A, 0x1071, 0x8C0B, 0x8C0B, 0x0B14, 0x8C0C, 0x8C0C, 0x133A, + 0x8C0D, 0x8C0D, 0x05DE, 0x8C0E, 0x8C0E, 0x07E6, 0x8C0F, 0x8C0F, 0x133B, + 0x8C10, 0x8C10, 0x0F7E, 0x8C11, 0x8C12, 0x133C, 0x8C13, 0x8C13, 0x0ECC, + 0x8C14, 0x8C16, 0x133E, 0x8C17, 0x8C17, 0x04BE, 0x8C18, 0x8C18, 0x1343, + 0x8C19, 0x8C19, 0x1341, 0x8C1A, 0x8C1A, 0x1011, 0x8C1B, 0x8C1B, 0x1342, + 0x8C1C, 0x8C1C, 0x0ADA, 0x8C1D, 0x8C1D, 0x1344, 0x8C1E, 0x8C1E, 0x4B33, + 0x8C1F, 0x8C21, 0x1345, 0x8C22, 0x8C22, 0x0F86, 0x8C23, 0x8C23, 0x102C, + 0x8C24, 0x8C24, 0x0404, 0x8C25, 0x8C25, 0x1348, 0x8C26, 0x8C26, 0x0C28, + 0x8C27, 0x8C27, 0x1349, 0x8C28, 0x8C28, 0x08C8, 0x8C29, 0x8C29, 0x0AA6, + 0x8C2A, 0x8C2B, 0x134A, 0x8C2C, 0x8C2C, 0x0B02, 0x8C2D, 0x8C2D, 0x0E0A, + 0x8C2E, 0x8C2F, 0x134C, 0x8C30, 0x8C30, 0x09A9, 0x8C31, 0x8C31, 0x0BF6, + 0x8C32, 0x8C33, 0x134E, 0x8C34, 0x8C34, 0x0C31, 0x8C35, 0x8C36, 0x1350, + 0x8C37, 0x8C37, 0x0721, 0x8C38, 0x8C40, 0x4B34, 0x8C41, 0x8C41, 0x0802, + 0x8C42, 0x8C45, 0x4B3D, 0x8C46, 0x8C46, 0x05F8, 0x8C47, 0x8C47, 0x1CF6, + 0x8C48, 0x8C48, 0x20C8, 0x8C49, 0x8C49, 0x1CF7, 0x8C4A, 0x8C4B, 0x4B41, + 0x8C4C, 0x8C4C, 0x0E94, 0x8C4D, 0x8C4F, 0x4B43, 0x8C50, 0x8C50, 0x1EFD, + 0x8C51, 0x8C54, 0x4B46, 0x8C55, 0x8C55, 0x1D15, 0x8C56, 0x8C59, 0x4B4A, + 0x8C5A, 0x8C5A, 0x1990, 0x8C5B, 0x8C60, 0x4B4E, 0x8C61, 0x8C61, 0x0F60, + 0x8C62, 0x8C62, 0x07D4, 0x8C63, 0x8C69, 0x4B54, 0x8C6A, 0x8C6A, 0x0777, + 0x8C6B, 0x8C6B, 0x10E8, 0x8C6C, 0x8C72, 0x4B5B, 0x8C73, 0x8C73, 0x15DD, + 0x8C74, 0x8C77, 0x4B62, 0x8C78, 0x8C78, 0x1D50, 0x8C79, 0x8C79, 0x0413, + 0x8C7A, 0x8C7A, 0x04B9, 0x8C7B, 0x8C81, 0x4B66, 0x8C82, 0x8C82, 0x1D51, + 0x8C83, 0x8C84, 0x4B6D, 0x8C85, 0x8C85, 0x1D53, 0x8C86, 0x8C88, 0x4B6F, + 0x8C89, 0x8C89, 0x0788, 0x8C8A, 0x8C8A, 0x1D52, 0x8C8B, 0x8C8B, 0x4B72, + 0x8C8C, 0x8C8C, 0x0AB7, 0x8C8D, 0x8C93, 0x4B73, 0x8C94, 0x8C94, 0x1D55, + 0x8C95, 0x8C97, 0x4B7A, 0x8C98, 0x8C98, 0x1D54, 0x8C99, 0x8C9C, 0x4B7D, + 0x8C9D, 0x8C9D, 0x1E3B, 0x8C9E, 0x8C9E, 0x227F, 0x8C9F, 0x8C9F, 0x4B81, + 0x8CA0, 0x8CA0, 0x1F0C, 0x8CA1, 0x8CA1, 0x1E59, 0x8CA2, 0x8CA2, 0x1F24, + 0x8CA3, 0x8CA6, 0x4B82, 0x8CA7, 0x8CA7, 0x20BA, 0x8CA8, 0x8CA8, 0x1F65, + 0x8CA9, 0x8CA9, 0x1EF0, 0x8CAA, 0x8CAA, 0x2164, 0x8CAB, 0x8CAB, 0x1F30, + 0x8CAC, 0x8CAC, 0x2261, 0x8CAD, 0x8CAE, 0x4B86, 0x8CAF, 0x8CAF, 0x22A2, + 0x8CB0, 0x8CB0, 0x24AB, 0x8CB1, 0x8CB1, 0x4B88, 0x8CB2, 0x8CB2, 0x24AF, + 0x8CB3, 0x8CB3, 0x1EE8, 0x8CB4, 0x8CB4, 0x1F39, 0x8CB5, 0x8CB5, 0x4B89, + 0x8CB6, 0x8CB6, 0x1E48, 0x8CB7, 0x8CB7, 0x2070, 0x8CB8, 0x8CB8, 0x1EA8, + 0x8CB9, 0x8CB9, 0x4B8A, 0x8CBA, 0x8CBA, 0x24AC, 0x8CBB, 0x8CBB, 0x1EF7, + 0x8CBC, 0x8CBC, 0x2176, 0x8CBD, 0x8CBD, 0x24AD, 0x8CBE, 0x8CBE, 0x4B8B, + 0x8CBF, 0x8CBF, 0x207B, 0x8CC0, 0x8CC0, 0x1F45, 0x8CC1, 0x8CC1, 0x24AA, + 0x8CC2, 0x8CC2, 0x204B, 0x8CC3, 0x8CC3, 0x202F, 0x8CC4, 0x8CC4, 0x1F5A, + 0x8CC5, 0x8CC5, 0x24B0, 0x8CC6, 0x8CC6, 0x4B8C, 0x8CC7, 0x8CC7, 0x22B7, + 0x8CC8, 0x8CC8, 0x1F7F, 0x8CC9, 0x8CC9, 0x4B8D, 0x8CCA, 0x8CCA, 0x2265, + 0x8CCB, 0x8CD0, 0x4B8E, 0x8CD1, 0x8CD1, 0x24B2, 0x8CD2, 0x8CD2, 0x211B, + 0x8CD3, 0x8CD3, 0x1E51, 0x8CD4, 0x8CD4, 0x4B94, 0x8CD5, 0x8CD5, 0x24B4, + 0x8CD6, 0x8CD9, 0x4B95, 0x8CDA, 0x8CDA, 0x24B3, 0x8CDB, 0x8CDB, 0x4B99, + 0x8CDC, 0x8CDC, 0x1E9F, 0x8CDD, 0x8CDD, 0x4B9A, 0x8CDE, 0x8CDE, 0x2118, + 0x8CDF, 0x8CDF, 0x4B9B, 0x8CE0, 0x8CE0, 0x20B4, 0x8CE1, 0x8CE1, 0x23AF, + 0x8CE2, 0x8CE2, 0x21BB, 0x8CE3, 0x8CE3, 0x2072, 0x8CE4, 0x8CE4, 0x1F95, + 0x8CE5, 0x8CE5, 0x4B9C, 0x8CE6, 0x8CE6, 0x1F0A, 0x8CE7, 0x8CE7, 0x24B6, + 0x8CE8, 0x8CE9, 0x4B9D, 0x8CEA, 0x8CEA, 0x2291, 0x8CEB, 0x8CEB, 0x24B5, + 0x8CEC, 0x8CEC, 0x2278, 0x8CED, 0x8CED, 0x1ED4, 0x8CEE, 0x8CF3, 0x4B9F, + 0x8CF4, 0x8CF4, 0x1FF3, 0x8CF5, 0x8CF9, 0x4BA5, 0x8CFA, 0x8CFA, 0x22A9, + 0x8CFB, 0x8CFB, 0x24B7, 0x8CFC, 0x8CFC, 0x1F28, 0x8CFD, 0x8CFD, 0x2109, + 0x8CFE, 0x8CFE, 0x22C7, 0x8CFF, 0x8CFF, 0x4BAA, 0x8D00, 0x8D03, 0x4BAB, + 0x8D04, 0x8D04, 0x24AE, 0x8D05, 0x8D05, 0x22B1, 0x8D06, 0x8D07, 0x4BAF, + 0x8D08, 0x8D08, 0x2266, 0x8D09, 0x8D09, 0x4BB1, 0x8D0A, 0x8D0A, 0x225B, + 0x8D0B, 0x8D0B, 0x22C4, 0x8D0C, 0x8D0C, 0x4BB2, 0x8D0D, 0x8D0D, 0x2115, + 0x8D0E, 0x8D0E, 0x4BB3, 0x8D0F, 0x8D0F, 0x222A, 0x8D10, 0x8D10, 0x24B1, + 0x8D11, 0x8D15, 0x4BB4, 0x8D16, 0x8D16, 0x213D, 0x8D17, 0x8D1A, 0x4BB9, + 0x8D1B, 0x8D1B, 0x1F15, 0x8D1C, 0x8D1C, 0x225C, 0x8D1D, 0x8D1D, 0x041D, + 0x8D1E, 0x8D1E, 0x118B, 0x8D1F, 0x8D1F, 0x06B5, 0x8D20, 0x8D20, 0x4BBD, + 0x8D21, 0x8D21, 0x070A, 0x8D22, 0x8D22, 0x048D, 0x8D23, 0x8D23, 0x1133, + 0x8D24, 0x8D24, 0x0F3A, 0x8D25, 0x8D25, 0x03E7, 0x8D26, 0x8D26, 0x116C, + 0x8D27, 0x8D27, 0x080A, 0x8D28, 0x8D28, 0x11C9, 0x8D29, 0x8D29, 0x0654, + 0x8D2A, 0x8D2A, 0x0E03, 0x8D2B, 0x8D2B, 0x0BD5, 0x8D2C, 0x8D2C, 0x044A, + 0x8D2D, 0x8D2D, 0x0713, 0x8D2E, 0x8D2E, 0x11FB, 0x8D2F, 0x8D2F, 0x073A, + 0x8D30, 0x8D30, 0x063E, 0x8D31, 0x8D31, 0x086D, 0x8D32, 0x8D33, 0x192C, + 0x8D34, 0x8D34, 0x0E4C, 0x8D35, 0x8D35, 0x074C, 0x8D36, 0x8D36, 0x192E, + 0x8D37, 0x8D37, 0x057E, 0x8D38, 0x8D38, 0x0AB8, 0x8D39, 0x8D39, 0x066E, + 0x8D3A, 0x8D3A, 0x078F, 0x8D3B, 0x8D3B, 0x192F, 0x8D3C, 0x8D3C, 0x1137, + 0x8D3D, 0x8D3D, 0x1930, 0x8D3E, 0x8D3E, 0x0849, 0x8D3F, 0x8D3F, 0x07F4, + 0x8D40, 0x8D40, 0x1931, 0x8D41, 0x8D41, 0x0A27, 0x8D42, 0x8D42, 0x0A5F, + 0x8D43, 0x8D43, 0x1122, 0x8D44, 0x8D44, 0x1227, 0x8D45, 0x8D46, 0x1932, + 0x8D47, 0x8D47, 0x1936, 0x8D48, 0x8D49, 0x1934, 0x8D4A, 0x8D4A, 0x0D17, + 0x8D4B, 0x8D4B, 0x06AE, 0x8D4C, 0x8D4C, 0x0603, 0x8D4D, 0x8D4D, 0x1937, + 0x8D4E, 0x8D4E, 0x0D81, 0x8D4F, 0x8D4F, 0x0D06, 0x8D50, 0x8D50, 0x0550, + 0x8D51, 0x8D52, 0x4BBE, 0x8D53, 0x8D53, 0x163B, 0x8D54, 0x8D54, 0x0BA3, + 0x8D55, 0x8D55, 0x1938, 0x8D56, 0x8D56, 0x09A0, 0x8D57, 0x8D57, 0x4BC0, + 0x8D58, 0x8D58, 0x1215, 0x8D59, 0x8D59, 0x1939, 0x8D5A, 0x8D5A, 0x1209, + 0x8D5B, 0x8D5B, 0x0CD7, 0x8D5C, 0x8D5C, 0x1289, 0x8D5D, 0x8D5D, 0x1283, + 0x8D5E, 0x8D5E, 0x1121, 0x8D5F, 0x8D5F, 0x4BC1, 0x8D60, 0x8D60, 0x113C, + 0x8D61, 0x8D61, 0x0CFD, 0x8D62, 0x8D62, 0x1093, 0x8D63, 0x8D63, 0x06CE, + 0x8D64, 0x8D64, 0x0505, 0x8D65, 0x8D65, 0x4BC2, 0x8D66, 0x8D66, 0x0D1B, + 0x8D67, 0x8D67, 0x1CF4, 0x8D68, 0x8D6A, 0x4BC3, 0x8D6B, 0x8D6B, 0x078C, + 0x8D6C, 0x8D6C, 0x4BC6, 0x8D6D, 0x8D6D, 0x1CF5, 0x8D6E, 0x8D6F, 0x4BC7, + 0x8D70, 0x8D70, 0x123C, 0x8D71, 0x8D72, 0x4BC9, 0x8D73, 0x8D73, 0x1CEF, + 0x8D74, 0x8D74, 0x06AB, 0x8D75, 0x8D75, 0x1175, 0x8D76, 0x8D76, 0x06CA, + 0x8D77, 0x8D77, 0x0C0F, 0x8D78, 0x8D80, 0x4BCB, 0x8D81, 0x8D81, 0x04E8, + 0x8D82, 0x8D83, 0x4BD4, 0x8D84, 0x8D84, 0x1CF0, 0x8D85, 0x8D85, 0x04D1, + 0x8D86, 0x8D89, 0x4BD6, 0x8D8A, 0x8D8A, 0x1100, 0x8D8B, 0x8D8B, 0x0C74, + 0x8D8C, 0x8D90, 0x4BDA, 0x8D91, 0x8D91, 0x1CF2, 0x8D92, 0x8D93, 0x4BDF, + 0x8D94, 0x8D94, 0x1CF1, 0x8D95, 0x8D95, 0x1F14, 0x8D96, 0x8D98, 0x4BE1, + 0x8D99, 0x8D99, 0x227A, 0x8D9A, 0x8D9E, 0x4BE4, 0x8D9F, 0x8D9F, 0x0E1E, + 0x8DA0, 0x8DA2, 0x4BE9, 0x8DA3, 0x8DA3, 0x0C7F, 0x8DA4, 0x8DA7, 0x4BEC, + 0x8DA8, 0x8DA8, 0x20EE, 0x8DA9, 0x8DB0, 0x4BF0, 0x8DB1, 0x8DB1, 0x1CF3, + 0x8DB2, 0x8DB2, 0x25F8, 0x8DB3, 0x8DB3, 0x1240, 0x8DB4, 0x8DB4, 0x0B80, + 0x8DB5, 0x8DB5, 0x1D1C, 0x8DB6, 0x8DB7, 0x4BF8, 0x8DB8, 0x8DB8, 0x1D17, + 0x8DB9, 0x8DB9, 0x4BFA, 0x8DBA, 0x8DBA, 0x1D1F, 0x8DBB, 0x8DBB, 0x4BFB, + 0x8DBC, 0x8DBC, 0x1D1E, 0x8DBD, 0x8DBD, 0x4BFC, 0x8DBE, 0x8DBE, 0x11B9, + 0x8DBF, 0x8DBF, 0x1D1D, 0x8DC0, 0x8DC2, 0x4BFD, 0x8DC3, 0x8DC3, 0x1101, + 0x8DC4, 0x8DC4, 0x1D20, 0x8DC5, 0x8DC5, 0x4C00, 0x8DC6, 0x8DC6, 0x1D28, + 0x8DC7, 0x8DCA, 0x4C01, 0x8DCB, 0x8DCB, 0x03DA, 0x8DCC, 0x8DCC, 0x05D9, + 0x8DCD, 0x8DCD, 0x4C05, 0x8DCE, 0x8DCF, 0x1D25, 0x8DD0, 0x8DD0, 0x4C06, + 0x8DD1, 0x8DD1, 0x0B9D, 0x8DD2, 0x8DD5, 0x4C07, 0x8DD6, 0x8DD7, 0x1D21, + 0x8DD8, 0x8DD9, 0x4C0B, 0x8DDA, 0x8DDA, 0x1D23, 0x8DDB, 0x8DDB, 0x1D27, + 0x8DDC, 0x8DDC, 0x4C0D, 0x8DDD, 0x8DDD, 0x090F, 0x8DDE, 0x8DDE, 0x1D24, + 0x8DDF, 0x8DDF, 0x06F5, 0x8DE0, 0x8DE2, 0x4C0E, 0x8DE3, 0x8DE3, 0x1D2C, + 0x8DE4, 0x8DE4, 0x1D2F, 0x8DE5, 0x8DE7, 0x4C11, 0x8DE8, 0x8DE8, 0x0974, + 0x8DE9, 0x8DE9, 0x4C14, 0x8DEA, 0x8DEA, 0x074B, 0x8DEB, 0x8DEB, 0x1D18, + 0x8DEC, 0x8DEC, 0x1D29, 0x8DED, 0x8DEE, 0x4C15, 0x8DEF, 0x8DEF, 0x0A5E, + 0x8DF0, 0x8DF2, 0x4C17, 0x8DF3, 0x8DF3, 0x0E4B, 0x8DF4, 0x8DF4, 0x4C1A, + 0x8DF5, 0x8DF5, 0x086C, 0x8DF6, 0x8DF6, 0x4C1B, 0x8DF7, 0x8DF8, 0x1D2A, + 0x8DF9, 0x8DF9, 0x1D2D, 0x8DFA, 0x8DFA, 0x0624, 0x8DFB, 0x8DFB, 0x1D2E, + 0x8DFC, 0x8DFC, 0x4C1C, 0x8DFD, 0x8DFD, 0x1D31, 0x8DFE, 0x8DFF, 0x4C1D, + 0x8E00, 0x8E04, 0x4C1F, 0x8E05, 0x8E05, 0x1D19, 0x8E06, 0x8E08, 0x4C24, + 0x8E09, 0x8E09, 0x1D30, 0x8E0A, 0x8E0A, 0x10A0, 0x8E0B, 0x8E0B, 0x4C27, + 0x8E0C, 0x8E0C, 0x0511, 0x8E0D, 0x8E0E, 0x4C28, 0x8E0F, 0x8E0F, 0x0DF7, + 0x8E10, 0x8E10, 0x1F94, 0x8E11, 0x8E13, 0x4C2A, 0x8E14, 0x8E14, 0x1D32, + 0x8E15, 0x8E1C, 0x4C2D, 0x8E1D, 0x8E1D, 0x1D33, 0x8E1E, 0x8E1E, 0x0910, + 0x8E1F, 0x8E1F, 0x1D34, 0x8E20, 0x8E21, 0x4C35, 0x8E22, 0x8E22, 0x0E32, + 0x8E23, 0x8E23, 0x1D37, 0x8E24, 0x8E28, 0x4C37, 0x8E29, 0x8E29, 0x048F, + 0x8E2A, 0x8E2A, 0x1236, 0x8E2B, 0x8E2B, 0x4C3C, 0x8E2C, 0x8E2C, 0x1D35, + 0x8E2D, 0x8E2D, 0x4C3D, 0x8E2E, 0x8E2E, 0x1D36, 0x8E2F, 0x8E2F, 0x1D38, + 0x8E30, 0x8E30, 0x4C3E, 0x8E31, 0x8E31, 0x1D3E, 0x8E32, 0x8E33, 0x4C3F, + 0x8E34, 0x8E34, 0x2230, 0x8E35, 0x8E35, 0x1D3C, 0x8E36, 0x8E38, 0x4C41, + 0x8E39, 0x8E39, 0x1D3B, 0x8E3A, 0x8E3A, 0x1D39, 0x8E3B, 0x8E3C, 0x4C44, + 0x8E3D, 0x8E3D, 0x1D3D, 0x8E3E, 0x8E3F, 0x4C46, 0x8E40, 0x8E40, 0x1D3A, + 0x8E41, 0x8E42, 0x1D40, 0x8E43, 0x8E43, 0x4C48, 0x8E44, 0x8E44, 0x0E36, + 0x8E45, 0x8E46, 0x4C49, 0x8E47, 0x8E47, 0x173B, 0x8E48, 0x8E48, 0x0599, + 0x8E49, 0x8E49, 0x1D3F, 0x8E4A, 0x8E4A, 0x1D44, 0x8E4B, 0x8E4B, 0x0DF6, + 0x8E4C, 0x8E4C, 0x25FD, 0x8E4D, 0x8E50, 0x4C4B, 0x8E51, 0x8E52, 0x1D42, + 0x8E53, 0x8E54, 0x4C4F, 0x8E55, 0x8E55, 0x2600, 0x8E56, 0x8E58, 0x4C51, + 0x8E59, 0x8E59, 0x1D1A, 0x8E5A, 0x8E62, 0x4C54, 0x8E63, 0x8E63, 0x2606, + 0x8E64, 0x8E65, 0x4C5D, 0x8E66, 0x8E66, 0x042D, 0x8E67, 0x8E68, 0x4C5F, + 0x8E69, 0x8E69, 0x1D1B, 0x8E6A, 0x8E6B, 0x4C61, 0x8E6C, 0x8E6C, 0x05A6, + 0x8E6D, 0x8E6D, 0x04AB, 0x8E6E, 0x8E6E, 0x4C63, 0x8E6F, 0x8E6F, 0x1D48, + 0x8E70, 0x8E70, 0x1D45, 0x8E71, 0x8E71, 0x4C64, 0x8E72, 0x8E72, 0x0616, + 0x8E73, 0x8E73, 0x4C65, 0x8E74, 0x8E74, 0x1D49, 0x8E75, 0x8E75, 0x4C66, + 0x8E76, 0x8E76, 0x1D46, 0x8E77, 0x8E79, 0x4C67, 0x8E7A, 0x8E7A, 0x25FF, + 0x8E7B, 0x8E7B, 0x4C6A, 0x8E7C, 0x8E7C, 0x1D47, 0x8E7D, 0x8E7E, 0x4C6B, + 0x8E7F, 0x8E7F, 0x055D, 0x8E80, 0x8E80, 0x4C6D, 0x8E81, 0x8E81, 0x112D, + 0x8E82, 0x8E84, 0x4C6E, 0x8E85, 0x8E85, 0x1D4A, 0x8E86, 0x8E86, 0x4C71, + 0x8E87, 0x8E87, 0x051E, 0x8E88, 0x8E88, 0x4C72, 0x8E89, 0x8E89, 0x25FC, + 0x8E8A, 0x8E8A, 0x1E8C, 0x8E8B, 0x8E8B, 0x2602, 0x8E8C, 0x8E8C, 0x4C73, + 0x8E8D, 0x8E8D, 0x224D, 0x8E8E, 0x8E8E, 0x4C74, 0x8E8F, 0x8E8F, 0x1D4B, + 0x8E90, 0x8E90, 0x1D4D, 0x8E91, 0x8E91, 0x2604, 0x8E92, 0x8E92, 0x25FE, + 0x8E93, 0x8E93, 0x2603, 0x8E94, 0x8E94, 0x1D4C, 0x8E95, 0x8E99, 0x4C75, + 0x8E9A, 0x8E9A, 0x2601, 0x8E9B, 0x8E9B, 0x4C7A, 0x8E9C, 0x8E9C, 0x1D4E, + 0x8E9D, 0x8E9D, 0x4C7B, 0x8E9E, 0x8E9E, 0x1D4F, 0x8E9F, 0x8EA0, 0x4C7C, + 0x8EA1, 0x8EA1, 0x2605, 0x8EA2, 0x8EA4, 0x4C7E, 0x8EA5, 0x8EA5, 0x1EA3, + 0x8EA6, 0x8EA6, 0x2608, 0x8EA7, 0x8EA9, 0x4C81, 0x8EAA, 0x8EAA, 0x2607, + 0x8EAB, 0x8EAB, 0x0D26, 0x8EAC, 0x8EAC, 0x0703, 0x8EAD, 0x8EAE, 0x4C84, + 0x8EAF, 0x8EAF, 0x0C78, 0x8EB0, 0x8EB1, 0x4C86, 0x8EB2, 0x8EB2, 0x0622, + 0x8EB3, 0x8EB9, 0x4C88, 0x8EBA, 0x8EBA, 0x0E1C, 0x8EBB, 0x8EBF, 0x4C8F, + 0x8EC0, 0x8EC0, 0x20F0, 0x8EC1, 0x8EC9, 0x4C94, 0x8ECA, 0x8ECA, 0x1E7B, + 0x8ECB, 0x8ECB, 0x2267, 0x8ECC, 0x8ECC, 0x1F36, 0x8ECD, 0x8ECD, 0x1FD6, + 0x8ECE, 0x8ECE, 0x18F8, 0x8ECF, 0x8ED1, 0x4C9D, 0x8ED2, 0x8ED2, 0x21E0, + 0x8ED3, 0x8ED3, 0x4CA0, 0x8ED4, 0x8ED4, 0x248C, 0x8ED5, 0x8EDA, 0x4CA1, + 0x8EDB, 0x8EDB, 0x248D, 0x8EDC, 0x8EDE, 0x4CA7, 0x8EDF, 0x8EDF, 0x2102, + 0x8EE0, 0x8EE3, 0x4CAA, 0x8EE4, 0x8EE4, 0x2494, 0x8EE5, 0x8EEA, 0x4CAE, + 0x8EEB, 0x8EEB, 0x2493, 0x8EEC, 0x8EF1, 0x4CB4, 0x8EF2, 0x8EF2, 0x248E, + 0x8EF3, 0x8EF7, 0x4CBA, 0x8EF8, 0x8EF8, 0x2299, 0x8EF9, 0x8EF9, 0x2491, + 0x8EFA, 0x8EFA, 0x2496, 0x8EFB, 0x8EFB, 0x248F, 0x8EFC, 0x8EFC, 0x2492, + 0x8EFD, 0x8EFD, 0x4CBF, 0x8EFE, 0x8EFE, 0x2497, 0x8EFF, 0x8EFF, 0x4CC0, + 0x8F00, 0x8F02, 0x4CC1, 0x8F03, 0x8F03, 0x1FB1, 0x8F04, 0x8F04, 0x4CC4, + 0x8F05, 0x8F05, 0x249A, 0x8F06, 0x8F06, 0x4CC5, 0x8F07, 0x8F07, 0x2499, + 0x8F08, 0x8F08, 0x4CC6, 0x8F09, 0x8F09, 0x2258, 0x8F0A, 0x8F0A, 0x2498, + 0x8F0B, 0x8F11, 0x4CC7, 0x8F12, 0x8F12, 0x249B, 0x8F13, 0x8F13, 0x4CCE, + 0x8F14, 0x8F14, 0x1F09, 0x8F15, 0x8F15, 0x20E6, 0x8F16, 0x8F1A, 0x4CCF, + 0x8F1B, 0x8F1B, 0x2026, 0x8F1C, 0x8F1C, 0x249F, 0x8F1D, 0x8F1D, 0x1F59, + 0x8F1E, 0x8F1F, 0x249D, 0x8F20, 0x8F24, 0x4CD4, 0x8F25, 0x8F25, 0x1F3B, + 0x8F26, 0x8F26, 0x249C, 0x8F27, 0x8F28, 0x4CD9, 0x8F29, 0x8F29, 0x1E3A, + 0x8F2A, 0x8F2A, 0x205B, 0x8F2B, 0x8F2E, 0x4CDB, 0x8F2F, 0x8F2F, 0x1F70, + 0x8F30, 0x8F32, 0x4CDF, 0x8F33, 0x8F33, 0x24A0, 0x8F34, 0x8F37, 0x4CE2, + 0x8F38, 0x8F38, 0x213B, 0x8F39, 0x8F3A, 0x4CE6, 0x8F3B, 0x8F3B, 0x1F07, + 0x8F3C, 0x8F3D, 0x4CE8, 0x8F3E, 0x8F3E, 0x2270, 0x8F3F, 0x8F3F, 0x2237, + 0x8F40, 0x8F41, 0x4CEA, 0x8F42, 0x8F42, 0x24D2, 0x8F43, 0x8F43, 0x4CEC, + 0x8F44, 0x8F44, 0x21B3, 0x8F45, 0x8F45, 0x2245, 0x8F46, 0x8F46, 0x24A1, + 0x8F47, 0x8F48, 0x4CED, 0x8F49, 0x8F49, 0x22A8, 0x8F4A, 0x8F4C, 0x4CEF, + 0x8F4D, 0x8F4D, 0x227C, 0x8F4E, 0x8F4E, 0x1FB0, 0x8F4F, 0x8F53, 0x4CF2, + 0x8F54, 0x8F54, 0x24A2, 0x8F55, 0x8F5E, 0x4CF7, 0x8F5F, 0x8F5F, 0x1F46, + 0x8F60, 0x8F60, 0x4D01, 0x8F61, 0x8F61, 0x2380, 0x8F62, 0x8F62, 0x2495, + 0x8F63, 0x8F63, 0x4D02, 0x8F64, 0x8F64, 0x2490, 0x8F65, 0x8F65, 0x4D03, + 0x8F66, 0x8F66, 0x04DA, 0x8F67, 0x8F67, 0x1141, 0x8F68, 0x8F68, 0x0745, + 0x8F69, 0x8F69, 0x0FC4, 0x8F6A, 0x8F6A, 0x4D04, 0x8F6B, 0x8F6B, 0x18E1, + 0x8F6C, 0x8F6C, 0x1207, 0x8F6D, 0x8F6D, 0x18E2, 0x8F6E, 0x8F6E, 0x0A7D, + 0x8F6F, 0x8F6F, 0x0CC8, 0x8F70, 0x8F70, 0x079B, 0x8F71, 0x8F73, 0x18E3, + 0x8F74, 0x8F74, 0x11E0, 0x8F75, 0x8F76, 0x18E6, 0x8F77, 0x8F77, 0x18E9, + 0x8F78, 0x8F78, 0x18E8, 0x8F79, 0x8F7A, 0x18EA, 0x8F7B, 0x8F7B, 0x0C5E, + 0x8F7C, 0x8F7C, 0x18EC, 0x8F7D, 0x8F7D, 0x111B, 0x8F7E, 0x8F7E, 0x18ED, + 0x8F7F, 0x8F7F, 0x089F, 0x8F80, 0x8F80, 0x4D05, 0x8F81, 0x8F82, 0x18EE, + 0x8F83, 0x8F83, 0x08A0, 0x8F84, 0x8F84, 0x18F0, 0x8F85, 0x8F85, 0x06A3, + 0x8F86, 0x8F86, 0x0A07, 0x8F87, 0x8F87, 0x18F1, 0x8F88, 0x8F88, 0x041B, + 0x8F89, 0x8F89, 0x07E9, 0x8F8A, 0x8F8A, 0x074E, 0x8F8B, 0x8F8B, 0x18F2, + 0x8F8C, 0x8F8C, 0x4D06, 0x8F8D, 0x8F8F, 0x18F3, 0x8F90, 0x8F90, 0x0695, + 0x8F91, 0x8F91, 0x0820, 0x8F92, 0x8F92, 0x4D07, 0x8F93, 0x8F93, 0x0D7B, + 0x8F94, 0x8F94, 0x1574, 0x8F95, 0x8F95, 0x10F2, 0x8F96, 0x8F96, 0x0F2A, + 0x8F97, 0x8F97, 0x1158, 0x8F98, 0x8F98, 0x18F6, 0x8F99, 0x8F99, 0x117F, + 0x8F9A, 0x8F9A, 0x18F7, 0x8F9B, 0x8F9B, 0x0F8C, 0x8F9C, 0x8F9C, 0x0715, + 0x8F9D, 0x8F9D, 0x4D08, 0x8F9E, 0x8F9E, 0x054A, 0x8F9F, 0x8F9F, 0x0442, + 0x8FA0, 0x8FA2, 0x4D09, 0x8FA3, 0x8FA3, 0x099C, 0x8FA4, 0x8FA5, 0x4D0C, + 0x8FA6, 0x8FA6, 0x1E30, 0x8FA7, 0x8FA7, 0x4D0E, 0x8FA8, 0x8FA9, 0x044F, + 0x8FAA, 0x8FAA, 0x4D0F, 0x8FAB, 0x8FAB, 0x0451, 0x8FAC, 0x8FAC, 0x4D10, + 0x8FAD, 0x8FAD, 0x1E9D, 0x8FAE, 0x8FAE, 0x1E4B, 0x8FAF, 0x8FAF, 0x1E4A, + 0x8FB0, 0x8FB0, 0x04E2, 0x8FB1, 0x8FB1, 0x0CC3, 0x8FB2, 0x8FB2, 0x20AA, + 0x8FB3, 0x8FB5, 0x4D11, 0x8FB6, 0x8FB6, 0x173D, 0x8FB7, 0x8FB8, 0x4D14, + 0x8FB9, 0x8FB9, 0x0448, 0x8FBA, 0x8FBC, 0x4D16, 0x8FBD, 0x8FBD, 0x0A12, + 0x8FBE, 0x8FBE, 0x0572, 0x8FBF, 0x8FC0, 0x4D19, 0x8FC1, 0x8FC1, 0x0C25, + 0x8FC2, 0x8FC2, 0x10BD, 0x8FC3, 0x8FC3, 0x4D1B, 0x8FC4, 0x8FC4, 0x0C18, + 0x8FC5, 0x8FC5, 0x0FE1, 0x8FC6, 0x8FC6, 0x4D1C, 0x8FC7, 0x8FC7, 0x0756, + 0x8FC8, 0x8FC8, 0x0A9C, 0x8FC9, 0x8FCD, 0x4D1D, 0x8FCE, 0x8FCE, 0x1092, + 0x8FCF, 0x8FCF, 0x4D22, 0x8FD0, 0x8FD0, 0x110E, 0x8FD1, 0x8FD1, 0x08CD, + 0x8FD2, 0x8FD2, 0x4D23, 0x8FD3, 0x8FD3, 0x173E, 0x8FD4, 0x8FD4, 0x0652, + 0x8FD5, 0x8FD5, 0x173F, 0x8FD6, 0x8FD7, 0x4D24, 0x8FD8, 0x8FD8, 0x07CE, + 0x8FD9, 0x8FD9, 0x1183, 0x8FDA, 0x8FDA, 0x4D26, 0x8FDB, 0x8FDB, 0x08C9, + 0x8FDC, 0x8FDC, 0x10F9, 0x8FDD, 0x8FDD, 0x0EB4, 0x8FDE, 0x8FDE, 0x09F5, + 0x8FDF, 0x8FDF, 0x04FE, 0x8FE0, 0x8FE1, 0x4D27, 0x8FE2, 0x8FE2, 0x0E49, + 0x8FE3, 0x8FE3, 0x4D29, 0x8FE4, 0x8FE4, 0x1742, 0x8FE5, 0x8FE5, 0x1740, + 0x8FE6, 0x8FE6, 0x1744, 0x8FE7, 0x8FE7, 0x4D2A, 0x8FE8, 0x8FE8, 0x1746, + 0x8FE9, 0x8FE9, 0x1743, 0x8FEA, 0x8FEA, 0x05B0, 0x8FEB, 0x8FEB, 0x0BE7, + 0x8FEC, 0x8FEC, 0x4D2B, 0x8FED, 0x8FED, 0x05DD, 0x8FEE, 0x8FEE, 0x1741, + 0x8FEF, 0x8FEF, 0x4D2C, 0x8FF0, 0x8FF0, 0x0D8D, 0x8FF1, 0x8FF2, 0x4D2D, + 0x8FF3, 0x8FF3, 0x1745, 0x8FF4, 0x8FF4, 0x267B, 0x8FF5, 0x8FF6, 0x4D2F, + 0x8FF7, 0x8FF7, 0x0AD9, 0x8FF8, 0x8FF8, 0x042E, 0x8FF9, 0x8FF9, 0x0816, + 0x8FFA, 0x8FFC, 0x4D31, 0x8FFD, 0x8FFD, 0x1214, 0x8FFE, 0x8FFF, 0x4D34, + 0x9000, 0x9000, 0x0E7C, 0x9001, 0x9001, 0x0DC2, 0x9002, 0x9002, 0x0D61, + 0x9003, 0x9003, 0x0E26, 0x9004, 0x9004, 0x1748, 0x9005, 0x9005, 0x1747, + 0x9006, 0x9006, 0x0B49, 0x9007, 0x9008, 0x4D36, 0x9009, 0x9009, 0x0FCA, + 0x900A, 0x900A, 0x0FE0, 0x900B, 0x900B, 0x1749, 0x900C, 0x900C, 0x4D38, + 0x900D, 0x900D, 0x174C, 0x900E, 0x900E, 0x4D39, 0x900F, 0x900F, 0x0E69, + 0x9010, 0x9010, 0x11EF, 0x9011, 0x9011, 0x174B, 0x9012, 0x9012, 0x05BE, + 0x9013, 0x9013, 0x4D3A, 0x9014, 0x9014, 0x0E6F, 0x9015, 0x9015, 0x23F2, + 0x9016, 0x9016, 0x174D, 0x9017, 0x9017, 0x05F9, 0x9018, 0x9018, 0x4D3B, + 0x9019, 0x9019, 0x227E, 0x901A, 0x901A, 0x0E59, 0x901B, 0x901B, 0x073D, + 0x901C, 0x901C, 0x4D3C, 0x901D, 0x901D, 0x0D5C, 0x901E, 0x901E, 0x04F6, + 0x901F, 0x901F, 0x0DCE, 0x9020, 0x9020, 0x112F, 0x9021, 0x9021, 0x174E, + 0x9022, 0x9022, 0x0687, 0x9023, 0x9023, 0x2019, 0x9024, 0x9025, 0x4D3D, + 0x9026, 0x9026, 0x174A, 0x9027, 0x902C, 0x4D3F, 0x902D, 0x902D, 0x1751, + 0x902E, 0x902E, 0x0581, 0x902F, 0x902F, 0x1752, 0x9030, 0x9031, 0x4D45, + 0x9032, 0x9032, 0x1FBB, 0x9033, 0x9034, 0x4D47, 0x9035, 0x9036, 0x174F, + 0x9037, 0x9037, 0x4D49, 0x9038, 0x9038, 0x1064, 0x9039, 0x903A, 0x4D4A, + 0x903B, 0x903B, 0x0A86, 0x903C, 0x903C, 0x042F, 0x903D, 0x903D, 0x4D4C, + 0x903E, 0x903E, 0x10C7, 0x903F, 0x9040, 0x4D4D, 0x9041, 0x9041, 0x061C, + 0x9042, 0x9042, 0x0DE1, 0x9043, 0x9043, 0x4D4F, 0x9044, 0x9044, 0x1753, + 0x9045, 0x9046, 0x4D50, 0x9047, 0x9047, 0x10DB, 0x9048, 0x904A, 0x4D52, + 0x904B, 0x904B, 0x2253, 0x904C, 0x904C, 0x4D55, 0x904D, 0x904D, 0x0452, + 0x904E, 0x904E, 0x1F3E, 0x904F, 0x904F, 0x0633, 0x9050, 0x9050, 0x1756, + 0x9051, 0x9052, 0x1754, 0x9053, 0x9053, 0x05A1, 0x9054, 0x9054, 0x1EA6, + 0x9055, 0x9055, 0x218E, 0x9056, 0x9056, 0x4D56, 0x9057, 0x9057, 0x104C, + 0x9058, 0x9058, 0x1758, 0x9059, 0x905A, 0x4D57, 0x905B, 0x905B, 0x175A, + 0x905C, 0x905C, 0x21EC, 0x905D, 0x905D, 0x4D59, 0x905E, 0x905E, 0x1EBE, + 0x905F, 0x905F, 0x4D5A, 0x9060, 0x9060, 0x224A, 0x9061, 0x9061, 0x4D5B, + 0x9062, 0x9062, 0x1759, 0x9063, 0x9063, 0x0C2F, 0x9064, 0x9064, 0x4D5C, + 0x9065, 0x9065, 0x102A, 0x9066, 0x9067, 0x4D5D, 0x9068, 0x9068, 0x1757, + 0x9069, 0x9069, 0x2133, 0x906A, 0x906C, 0x4D5F, 0x906D, 0x906D, 0x1125, + 0x906E, 0x906E, 0x117B, 0x906F, 0x9071, 0x4D62, 0x9072, 0x9072, 0x1E84, + 0x9073, 0x9073, 0x4D65, 0x9074, 0x9074, 0x175C, 0x9075, 0x9075, 0x124E, + 0x9076, 0x9076, 0x4D66, 0x9077, 0x9077, 0x20CF, 0x9078, 0x9078, 0x21E2, + 0x9079, 0x9079, 0x4D67, 0x907A, 0x907A, 0x220F, 0x907B, 0x907B, 0x4D68, + 0x907C, 0x907C, 0x2029, 0x907D, 0x907D, 0x175D, 0x907E, 0x907E, 0x4D69, + 0x907F, 0x907F, 0x0445, 0x9080, 0x9080, 0x1024, 0x9081, 0x9081, 0x2073, + 0x9082, 0x9082, 0x175E, 0x9083, 0x9083, 0x1760, 0x9084, 0x9084, 0x1F55, + 0x9085, 0x9086, 0x4D6A, 0x9087, 0x9087, 0x23F1, 0x9088, 0x9088, 0x175F, + 0x9089, 0x9089, 0x4D6C, 0x908A, 0x908A, 0x1E46, 0x908B, 0x908B, 0x1761, + 0x908C, 0x908E, 0x4D6D, 0x908F, 0x908F, 0x2063, 0x9090, 0x9090, 0x23F3, + 0x9091, 0x9091, 0x105F, 0x9092, 0x9092, 0x4D70, 0x9093, 0x9093, 0x05AC, + 0x9094, 0x9094, 0x4D71, 0x9095, 0x9095, 0x1817, 0x9096, 0x9096, 0x4D72, + 0x9097, 0x9097, 0x1367, 0x9098, 0x9098, 0x4D73, 0x9099, 0x9099, 0x136A, + 0x909A, 0x909A, 0x4D74, 0x909B, 0x909B, 0x1368, 0x909C, 0x909C, 0x4D75, + 0x909D, 0x909D, 0x1369, 0x909E, 0x90A0, 0x4D76, 0x90A1, 0x90A1, 0x136C, + 0x90A2, 0x90A2, 0x0F9A, 0x90A3, 0x90A3, 0x0B2A, 0x90A4, 0x90A5, 0x4D79, + 0x90A6, 0x90A6, 0x03F9, 0x90A7, 0x90A9, 0x4D7B, 0x90AA, 0x90AA, 0x0F7B, + 0x90AB, 0x90AB, 0x4D7E, 0x90AC, 0x90AC, 0x136B, 0x90AD, 0x90AD, 0x4D7F, + 0x90AE, 0x90AE, 0x10AF, 0x90AF, 0x90AF, 0x0761, 0x90B0, 0x90B0, 0x1372, + 0x90B1, 0x90B1, 0x0C6E, 0x90B2, 0x90B2, 0x4D80, 0x90B3, 0x90B3, 0x136E, + 0x90B4, 0x90B4, 0x136D, 0x90B5, 0x90B5, 0x0D14, 0x90B6, 0x90B6, 0x136F, + 0x90B7, 0x90B7, 0x4D81, 0x90B8, 0x90B8, 0x1371, 0x90B9, 0x90B9, 0x123B, + 0x90BA, 0x90BA, 0x1370, 0x90BB, 0x90BB, 0x0A23, 0x90BC, 0x90BD, 0x4D82, + 0x90BE, 0x90BE, 0x1375, 0x90BF, 0x90C0, 0x4D84, 0x90C1, 0x90C1, 0x10D9, + 0x90C2, 0x90C3, 0x4D86, 0x90C4, 0x90C4, 0x1377, 0x90C5, 0x90C5, 0x1374, + 0x90C6, 0x90C6, 0x4D88, 0x90C7, 0x90C7, 0x1378, 0x90C8, 0x90C9, 0x4D89, + 0x90CA, 0x90CA, 0x088D, 0x90CB, 0x90CD, 0x4D8B, 0x90CE, 0x90CE, 0x09B4, + 0x90CF, 0x90CF, 0x1373, 0x90D0, 0x90D0, 0x1376, 0x90D1, 0x90D1, 0x11A2, + 0x90D2, 0x90D2, 0x4D8E, 0x90D3, 0x90D3, 0x1379, 0x90D4, 0x90D6, 0x4D8F, + 0x90D7, 0x90D7, 0x137D, 0x90D8, 0x90DA, 0x4D92, 0x90DB, 0x90DB, 0x137E, + 0x90DC, 0x90DC, 0x137C, 0x90DD, 0x90DD, 0x0779, 0x90DE, 0x90DE, 0x4D95, + 0x90DF, 0x90DF, 0x231E, 0x90E0, 0x90E0, 0x4D96, 0x90E1, 0x90E1, 0x0931, + 0x90E2, 0x90E2, 0x137B, 0x90E3, 0x90E5, 0x4D97, 0x90E6, 0x90E6, 0x137A, + 0x90E7, 0x90E7, 0x110A, 0x90E8, 0x90E8, 0x0486, 0x90E9, 0x90EA, 0x4D9A, + 0x90EB, 0x90EB, 0x137F, 0x90EC, 0x90EC, 0x4D9C, 0x90ED, 0x90ED, 0x0752, + 0x90EE, 0x90EE, 0x4D9D, 0x90EF, 0x90EF, 0x1380, 0x90F0, 0x90F3, 0x4D9E, + 0x90F4, 0x90F4, 0x04E0, 0x90F5, 0x90F5, 0x2233, 0x90F6, 0x90F7, 0x4DA2, + 0x90F8, 0x90F8, 0x0587, 0x90F9, 0x90FC, 0x4DA4, 0x90FD, 0x90FD, 0x05FB, + 0x90FE, 0x90FE, 0x1381, 0x90FF, 0x90FF, 0x4DA8, 0x9100, 0x9101, 0x4DA9, + 0x9102, 0x9102, 0x0634, 0x9103, 0x9103, 0x4DAB, 0x9104, 0x9104, 0x1382, + 0x9105, 0x9105, 0x4DAC, 0x9106, 0x9106, 0x2320, 0x9107, 0x9108, 0x4DAD, + 0x9109, 0x9109, 0x21C7, 0x910A, 0x9111, 0x4DAF, 0x9112, 0x9112, 0x22BC, + 0x9113, 0x9113, 0x4DB7, 0x9114, 0x9114, 0x231C, 0x9115, 0x9115, 0x4DB8, + 0x9116, 0x9116, 0x2251, 0x9117, 0x9118, 0x4DB9, 0x9119, 0x9119, 0x0432, + 0x911A, 0x911D, 0x4DBB, 0x911E, 0x911E, 0x1384, 0x911F, 0x9121, 0x4DBF, + 0x9122, 0x9122, 0x1383, 0x9123, 0x9123, 0x1385, 0x9124, 0x9126, 0x4DC2, + 0x9127, 0x9127, 0x1EBB, 0x9128, 0x912C, 0x4DC5, 0x912D, 0x912D, 0x2287, + 0x912E, 0x912E, 0x4DCA, 0x912F, 0x912F, 0x1387, 0x9130, 0x9130, 0x202D, + 0x9131, 0x9131, 0x1386, 0x9132, 0x9132, 0x1EAB, 0x9133, 0x9133, 0x4DCB, + 0x9134, 0x9134, 0x231D, 0x9135, 0x9135, 0x4DCC, 0x9136, 0x9136, 0x231F, + 0x9137, 0x9138, 0x4DCD, 0x9139, 0x9139, 0x1388, 0x913A, 0x913A, 0x231B, + 0x913B, 0x9142, 0x4DCF, 0x9143, 0x9143, 0x1389, 0x9144, 0x9145, 0x4DD7, + 0x9146, 0x9146, 0x138A, 0x9147, 0x9147, 0x4DD9, 0x9148, 0x9148, 0x2321, + 0x9149, 0x9149, 0x10B4, 0x914A, 0x914A, 0x1CF8, 0x914B, 0x914B, 0x0C72, + 0x914C, 0x914C, 0x1220, 0x914D, 0x914D, 0x0BA5, 0x914E, 0x914F, 0x1CFA, + 0x9150, 0x9150, 0x1CF9, 0x9151, 0x9151, 0x4DDA, 0x9152, 0x9152, 0x08F5, + 0x9153, 0x9156, 0x4DDB, 0x9157, 0x9157, 0x0FBA, 0x9158, 0x9159, 0x4DDF, + 0x915A, 0x915A, 0x0670, 0x915B, 0x915C, 0x4DE1, 0x915D, 0x915D, 0x1110, + 0x915E, 0x915E, 0x0DFD, 0x915F, 0x9160, 0x4DE3, 0x9161, 0x9161, 0x1CFE, + 0x9162, 0x9162, 0x1CFD, 0x9163, 0x9163, 0x075F, 0x9164, 0x9164, 0x1CFC, + 0x9165, 0x9165, 0x0DCB, 0x9166, 0x9168, 0x4DE5, 0x9169, 0x9169, 0x1D00, + 0x916A, 0x916A, 0x09BD, 0x916B, 0x916B, 0x4DE8, 0x916C, 0x916C, 0x050F, + 0x916D, 0x916D, 0x4DE9, 0x916E, 0x916E, 0x0E5B, 0x916F, 0x916F, 0x1D01, + 0x9170, 0x9170, 0x1CFF, 0x9171, 0x9171, 0x0885, 0x9172, 0x9172, 0x1D04, + 0x9173, 0x9173, 0x4DEA, 0x9174, 0x9174, 0x1D05, 0x9175, 0x9175, 0x089E, + 0x9176, 0x9176, 0x0ABD, 0x9177, 0x9177, 0x096E, 0x9178, 0x9178, 0x0DD6, + 0x9179, 0x9179, 0x1D06, 0x917A, 0x917C, 0x4DEB, 0x917D, 0x917E, 0x1D02, + 0x917F, 0x917F, 0x0B53, 0x9180, 0x9184, 0x4DEE, 0x9185, 0x9185, 0x1D08, + 0x9186, 0x9186, 0x4DF3, 0x9187, 0x9187, 0x053F, 0x9188, 0x9188, 0x4DF4, + 0x9189, 0x9189, 0x124A, 0x918A, 0x918A, 0x4DF5, 0x918B, 0x918B, 0x055A, + 0x918C, 0x918C, 0x1D07, 0x918D, 0x918D, 0x1D0A, 0x918E, 0x918F, 0x4DF6, + 0x9190, 0x9190, 0x1D09, 0x9191, 0x9191, 0x1D0B, 0x9192, 0x9192, 0x0F9C, + 0x9193, 0x9195, 0x4DF8, 0x9196, 0x9196, 0x2255, 0x9197, 0x9199, 0x4DFB, + 0x919A, 0x919A, 0x0AD6, 0x919B, 0x919B, 0x0C84, 0x919C, 0x919C, 0x1E8F, + 0x919D, 0x91A1, 0x4DFE, 0x91A2, 0x91A3, 0x1D0C, 0x91A4, 0x91A9, 0x4E03, + 0x91AA, 0x91AA, 0x1D0E, 0x91AB, 0x91AB, 0x220C, 0x91AC, 0x91AC, 0x1FA4, + 0x91AD, 0x91AF, 0x1D0F, 0x91B0, 0x91B3, 0x4E09, 0x91B4, 0x91B4, 0x1D13, + 0x91B5, 0x91B5, 0x1D12, 0x91B6, 0x91B9, 0x4E0D, 0x91BA, 0x91BA, 0x1D14, + 0x91BB, 0x91BF, 0x4E11, 0x91C0, 0x91C0, 0x209B, 0x91C1, 0x91C1, 0x21D8, + 0x91C2, 0x91C2, 0x4E16, 0x91C3, 0x91C3, 0x25FA, 0x91C4, 0x91C4, 0x4E17, + 0x91C5, 0x91C5, 0x25F9, 0x91C6, 0x91C6, 0x4E18, 0x91C7, 0x91C7, 0x0490, + 0x91C8, 0x91C8, 0x4E19, 0x91C9, 0x91C9, 0x10B9, 0x91CA, 0x91CA, 0x0D64, + 0x91CB, 0x91CB, 0x2134, 0x91CC, 0x91CC, 0x09DA, 0x91CD, 0x91CD, 0x11D7, + 0x91CE, 0x91CE, 0x1037, 0x91CF, 0x91CF, 0x0A08, 0x91D0, 0x91D0, 0x4E1A, + 0x91D1, 0x91D1, 0x08C1, 0x91D2, 0x91D4, 0x24F3, 0x91D5, 0x91D5, 0x24F8, + 0x91D6, 0x91D6, 0x4E1B, 0x91D7, 0x91D7, 0x24F7, 0x91D8, 0x91D8, 0x1EC8, + 0x91D9, 0x91D9, 0x24F6, 0x91DA, 0x91DB, 0x4E1C, 0x91DC, 0x91DC, 0x06A5, + 0x91DD, 0x91DD, 0x2280, 0x91DE, 0x91E2, 0x4E1E, 0x91E3, 0x91E3, 0x1EC5, + 0x91E4, 0x91E4, 0x24FB, 0x91E5, 0x91E6, 0x4E23, 0x91E7, 0x91E7, 0x24FA, + 0x91E8, 0x91E8, 0x4E25, 0x91E9, 0x91E9, 0x1EED, 0x91EA, 0x91F4, 0x4E26, + 0x91F5, 0x91F5, 0x24FD, 0x91F6, 0x91F6, 0x4E31, 0x91F7, 0x91F7, 0x24F9, + 0x91F8, 0x91F8, 0x4E32, 0x91F9, 0x91F9, 0x24FE, 0x91FA, 0x91FA, 0x20CD, + 0x91FB, 0x91FF, 0x4E33, 0x9200, 0x9200, 0x2508, 0x9201, 0x9201, 0x2504, + 0x9202, 0x9203, 0x4E38, 0x9204, 0x9204, 0x2506, 0x9205, 0x9207, 0x4E3A, + 0x9208, 0x9208, 0x24FF, 0x9209, 0x9209, 0x2090, 0x920A, 0x920C, 0x4E3D, + 0x920D, 0x920D, 0x1EDD, 0x920E, 0x920E, 0x1F25, 0x920F, 0x920F, 0x4E40, + 0x9210, 0x9210, 0x2503, 0x9211, 0x9211, 0x2502, 0x9212, 0x9213, 0x4E41, + 0x9214, 0x9214, 0x1E7A, 0x9215, 0x9215, 0x20A6, 0x9216, 0x921D, 0x4E43, + 0x921E, 0x921E, 0x1FD5, 0x921F, 0x9222, 0x4E4B, 0x9223, 0x9223, 0x1F11, + 0x9224, 0x9224, 0x4E4F, 0x9225, 0x9225, 0x2507, 0x9226, 0x9226, 0x2500, + 0x9227, 0x9227, 0x2505, 0x9228, 0x922D, 0x4E50, 0x922E, 0x922E, 0x2519, + 0x922F, 0x922F, 0x4E56, 0x9230, 0x9230, 0x2515, 0x9231, 0x9232, 0x4E57, + 0x9233, 0x9233, 0x250C, 0x9234, 0x9234, 0x2031, 0x9235, 0x9236, 0x4E59, + 0x9237, 0x9237, 0x250B, 0x9238, 0x9238, 0x250F, 0x9239, 0x9239, 0x251A, + 0x923A, 0x923A, 0x2509, 0x923B, 0x923C, 0x4E5B, 0x923D, 0x923D, 0x250E, + 0x923E, 0x923E, 0x2234, 0x923F, 0x923F, 0x2513, 0x9240, 0x9240, 0x1F80, + 0x9241, 0x9244, 0x4E5D, 0x9245, 0x9245, 0x2501, 0x9246, 0x9247, 0x4E61, + 0x9248, 0x9248, 0x2517, 0x9249, 0x9249, 0x2516, 0x924A, 0x924C, 0x4E63, + 0x924D, 0x924D, 0x2518, 0x924E, 0x9250, 0x4E66, 0x9251, 0x9251, 0x1E56, + 0x9252, 0x9254, 0x4E69, 0x9255, 0x9255, 0x250D, 0x9256, 0x9256, 0x4E6C, + 0x9257, 0x9257, 0x20D3, 0x9258, 0x9259, 0x4E6D, 0x925A, 0x925A, 0x207A, + 0x925B, 0x925B, 0x20CE, 0x925C, 0x925D, 0x4E6F, 0x925E, 0x925E, 0x2510, + 0x925F, 0x9261, 0x4E71, 0x9262, 0x9262, 0x1E55, 0x9263, 0x9265, 0x4E74, + 0x9266, 0x9266, 0x250A, 0x9267, 0x926B, 0x4E77, 0x926C, 0x926D, 0x2511, + 0x926E, 0x9273, 0x4E7C, 0x9274, 0x9274, 0x086B, 0x9275, 0x9277, 0x4E82, + 0x9278, 0x9278, 0x1FAA, 0x9279, 0x9279, 0x4E85, 0x927A, 0x927A, 0x251E, + 0x927B, 0x927B, 0x1F1F, 0x927C, 0x927E, 0x4E86, 0x927F, 0x927F, 0x252D, + 0x9280, 0x9280, 0x221D, 0x9281, 0x9282, 0x4E89, 0x9283, 0x9283, 0x2532, + 0x9284, 0x9284, 0x4E8B, 0x9285, 0x9285, 0x217B, 0x9286, 0x928D, 0x4E8C, + 0x928E, 0x928E, 0x1D80, 0x928F, 0x9290, 0x4E94, 0x9291, 0x9291, 0x21AF, + 0x9292, 0x9292, 0x4E96, 0x9293, 0x9293, 0x252C, 0x9294, 0x9295, 0x4E97, + 0x9296, 0x9296, 0x2528, 0x9297, 0x9297, 0x4E99, 0x9298, 0x9298, 0x208C, + 0x9299, 0x9299, 0x4E9A, 0x929A, 0x929A, 0x252F, 0x929B, 0x929B, 0x4E9B, + 0x929C, 0x929C, 0x21BC, 0x929D, 0x929F, 0x4E9C, 0x92A0, 0x92A0, 0x251D, + 0x92A1, 0x92A2, 0x4E9F, 0x92A3, 0x92A3, 0x2535, 0x92A4, 0x92A4, 0x4EA1, + 0x92A5, 0x92A5, 0x220D, 0x92A6, 0x92A6, 0x2526, 0x92A7, 0x92A7, 0x4EA2, + 0x92A8, 0x92A8, 0x2534, 0x92A9, 0x92A9, 0x252A, 0x92AA, 0x92AA, 0x251F, + 0x92AB, 0x92AB, 0x2531, 0x92AC, 0x92AC, 0x251C, 0x92AD, 0x92AD, 0x4EA3, + 0x92AE, 0x92AE, 0x1D81, 0x92AF, 0x92B0, 0x4EA4, 0x92B1, 0x92B1, 0x2525, + 0x92B2, 0x92B6, 0x4EA6, 0x92B7, 0x92B7, 0x21CD, 0x92B8, 0x92B8, 0x4EAB, + 0x92B9, 0x92B9, 0x21DA, 0x92BA, 0x92BA, 0x4EAC, 0x92BB, 0x92BB, 0x2172, + 0x92BC, 0x92BC, 0x253E, 0x92BD, 0x92C0, 0x4EAD, 0x92C1, 0x92C1, 0x204F, + 0x92C2, 0x92C2, 0x4EB1, 0x92C3, 0x92C3, 0x2543, 0x92C4, 0x92C4, 0x4EB2, + 0x92C5, 0x92C5, 0x21D7, 0x92C6, 0x92C6, 0x4EB3, 0x92C7, 0x92C7, 0x1E3C, + 0x92C8, 0x92C8, 0x1D82, 0x92C9, 0x92CB, 0x4EB4, 0x92CC, 0x92CC, 0x2529, + 0x92CD, 0x92CE, 0x4EB7, 0x92CF, 0x92CF, 0x2521, 0x92D0, 0x92D1, 0x4EB9, + 0x92D2, 0x92D2, 0x1EFF, 0x92D3, 0x92DC, 0x4EBB, 0x92DD, 0x92DD, 0x253F, + 0x92DE, 0x92DE, 0x4EC5, 0x92DF, 0x92DF, 0x2544, 0x92E0, 0x92E2, 0x4EC6, + 0x92E3, 0x92E3, 0x2523, 0x92E4, 0x92E4, 0x1E90, 0x92E5, 0x92E5, 0x253A, + 0x92E6, 0x92E6, 0x2545, 0x92E7, 0x92E7, 0x4EC9, 0x92E8, 0x92E8, 0x253D, + 0x92E9, 0x92E9, 0x4ECA, 0x92EA, 0x92EA, 0x20C1, 0x92EB, 0x92EC, 0x4ECB, + 0x92ED, 0x92ED, 0x2103, 0x92EE, 0x92EE, 0x2520, 0x92EF, 0x92EF, 0x253C, + 0x92F0, 0x92F0, 0x253B, 0x92F1, 0x92F1, 0x2538, 0x92F2, 0x92F5, 0x4ECD, + 0x92F6, 0x92F6, 0x2540, 0x92F7, 0x92F7, 0x4ED1, 0x92F8, 0x92F8, 0x1FCD, + 0x92F9, 0x92FB, 0x4ED2, 0x92FC, 0x92FC, 0x1F18, 0x92FD, 0x92FF, 0x4ED5, + 0x9300, 0x9300, 0x4ED8, 0x9301, 0x9301, 0x254B, 0x9302, 0x9305, 0x4ED9, + 0x9306, 0x9306, 0x2547, 0x9307, 0x9308, 0x254F, 0x9309, 0x930F, 0x4EDD, + 0x9310, 0x9310, 0x22B0, 0x9311, 0x9311, 0x4EE4, 0x9312, 0x9312, 0x2546, + 0x9313, 0x9314, 0x4EE5, 0x9315, 0x9315, 0x254C, 0x9316, 0x9317, 0x4EE7, + 0x9318, 0x9318, 0x1E9A, 0x9319, 0x9319, 0x2552, 0x931A, 0x931A, 0x2530, + 0x931B, 0x931B, 0x2549, 0x931C, 0x931E, 0x4EE9, 0x931F, 0x931F, 0x2551, + 0x9320, 0x9320, 0x1ECA, 0x9321, 0x9321, 0x4EEC, 0x9322, 0x9322, 0x20D2, + 0x9323, 0x9325, 0x4EED, 0x9326, 0x9326, 0x1FB8, 0x9327, 0x9327, 0x4EF0, + 0x9328, 0x9328, 0x2079, 0x9329, 0x932A, 0x4EF1, 0x932B, 0x932B, 0x21AB, + 0x932C, 0x932D, 0x4EF3, 0x932E, 0x932E, 0x254D, 0x932F, 0x932F, 0x1EA5, + 0x9330, 0x9331, 0x4EF5, 0x9332, 0x9332, 0x204C, 0x9333, 0x9333, 0x2080, + 0x9334, 0x9335, 0x4EF7, 0x9336, 0x9336, 0x266D, 0x9337, 0x9337, 0x4EF9, + 0x9338, 0x9338, 0x2537, 0x9339, 0x933D, 0x4EFA, 0x933E, 0x933E, 0x1D83, + 0x933F, 0x933F, 0x4EFF, 0x9340, 0x9340, 0x254A, 0x9341, 0x9341, 0x21B8, + 0x9342, 0x9342, 0x4F00, 0x9343, 0x9343, 0x254E, 0x9344, 0x9345, 0x4F01, + 0x9346, 0x9346, 0x24FC, 0x9347, 0x9347, 0x2554, 0x9348, 0x934A, 0x4F03, + 0x934B, 0x934B, 0x1F3C, 0x934C, 0x934C, 0x4F06, 0x934D, 0x934D, 0x1ED5, + 0x934E, 0x9353, 0x4F07, 0x9354, 0x9354, 0x2556, 0x9355, 0x9357, 0x4F0D, + 0x9358, 0x9358, 0x2268, 0x9359, 0x935A, 0x4F10, 0x935B, 0x935B, 0x1ED6, + 0x935C, 0x9363, 0x4F12, 0x9364, 0x9364, 0x2557, 0x9365, 0x9365, 0x2553, + 0x9366, 0x9368, 0x4F1A, 0x9369, 0x9369, 0x2548, 0x936A, 0x936A, 0x1D84, + 0x936B, 0x936B, 0x4F1D, 0x936C, 0x936C, 0x20DC, 0x936D, 0x936F, 0x4F1E, + 0x9370, 0x9370, 0x2559, 0x9371, 0x9374, 0x4F21, 0x9375, 0x9375, 0x1F97, + 0x9376, 0x9376, 0x2555, 0x9377, 0x9379, 0x4F25, 0x937A, 0x937A, 0x227D, + 0x937B, 0x937D, 0x4F28, 0x937E, 0x937E, 0x257E, 0x937F, 0x9381, 0x4F2B, + 0x9382, 0x9382, 0x207C, 0x9383, 0x9383, 0x4F2E, 0x9384, 0x9384, 0x255A, + 0x9385, 0x9386, 0x4F2F, 0x9387, 0x9387, 0x255E, 0x9388, 0x9389, 0x4F31, + 0x938A, 0x938A, 0x1E34, 0x938B, 0x938E, 0x4F33, 0x938F, 0x938F, 0x1D86, + 0x9390, 0x9395, 0x4F37, 0x9396, 0x9396, 0x215E, 0x9397, 0x9397, 0x4F3D, + 0x9398, 0x9398, 0x2560, 0x9399, 0x93A1, 0x4F3E, 0x93A2, 0x93A2, 0x21A2, + 0x93A3, 0x93A3, 0x2354, 0x93A4, 0x93A5, 0x4F47, 0x93A6, 0x93A6, 0x2563, + 0x93A7, 0x93A7, 0x2527, 0x93A8, 0x93A8, 0x4F49, 0x93A9, 0x93A9, 0x252E, + 0x93AA, 0x93AA, 0x2558, 0x93AB, 0x93AB, 0x4F4A, 0x93AC, 0x93AC, 0x1F1B, + 0x93AD, 0x93AD, 0x4F4B, 0x93AE, 0x93AE, 0x2283, 0x93AF, 0x93AF, 0x4F4C, + 0x93B0, 0x93B0, 0x2564, 0x93B1, 0x93B2, 0x4F4D, 0x93B3, 0x93B3, 0x20A0, + 0x93B4, 0x93B4, 0x4F4F, 0x93B5, 0x93B5, 0x2565, 0x93B6, 0x93B7, 0x4F50, + 0x93B8, 0x93B8, 0x2561, 0x93B9, 0x93BE, 0x4F52, 0x93BF, 0x93BF, 0x2562, + 0x93C0, 0x93C2, 0x4F58, 0x93C3, 0x93C3, 0x256C, 0x93C4, 0x93C6, 0x4F5B, + 0x93C7, 0x93C7, 0x256D, 0x93C8, 0x93C8, 0x2020, 0x93C9, 0x93C9, 0x4F5E, + 0x93CA, 0x93CA, 0x1D85, 0x93CB, 0x93CB, 0x4F5F, 0x93CC, 0x93CC, 0x255F, + 0x93CD, 0x93CD, 0x256A, 0x93CE, 0x93D0, 0x4F60, 0x93D1, 0x93D1, 0x256E, + 0x93D2, 0x93D5, 0x4F63, 0x93D6, 0x93D6, 0x1E01, 0x93D7, 0x93D7, 0x2539, + 0x93D8, 0x93D8, 0x255C, 0x93D9, 0x93DB, 0x4F67, 0x93DC, 0x93DD, 0x2568, + 0x93DE, 0x93DE, 0x256B, 0x93DF, 0x93DF, 0x1E6F, 0x93E0, 0x93E0, 0x4F6A, + 0x93E1, 0x93E1, 0x1FC4, 0x93E2, 0x93E2, 0x2567, 0x93E3, 0x93E3, 0x4F6B, + 0x93E4, 0x93E4, 0x255B, 0x93E5, 0x93E7, 0x4F6C, 0x93E8, 0x93E8, 0x261D, + 0x93E9, 0x93F4, 0x4F6F, 0x93F5, 0x93F5, 0x252B, 0x93F6, 0x93F6, 0x4F7B, + 0x93F7, 0x93F7, 0x2571, 0x93F8, 0x93F8, 0x4F7C, 0x93F9, 0x93F9, 0x2577, + 0x93FA, 0x93FF, 0x4F7D, 0x9400, 0x9402, 0x4F83, 0x9403, 0x9403, 0x2522, + 0x9404, 0x940A, 0x4F86, 0x940B, 0x940B, 0x2533, 0x940C, 0x940F, 0x4F8D, + 0x9410, 0x9410, 0x202A, 0x9411, 0x9411, 0x4F91, 0x9412, 0x9412, 0x2536, + 0x9413, 0x9413, 0x2573, 0x9414, 0x9414, 0x256F, 0x9415, 0x9417, 0x4F92, + 0x9418, 0x9418, 0x2293, 0x9419, 0x9419, 0x2578, 0x941A, 0x941C, 0x4F95, + 0x941D, 0x941D, 0x2570, 0x941E, 0x941F, 0x4F98, 0x9420, 0x9420, 0x2575, + 0x9421, 0x9425, 0x4F9A, 0x9426, 0x9427, 0x2541, 0x9428, 0x9428, 0x255D, + 0x9429, 0x942D, 0x4F9F, 0x942E, 0x942E, 0x201A, 0x942F, 0x9431, 0x4FA4, + 0x9432, 0x9432, 0x257A, 0x9433, 0x9433, 0x2006, 0x9434, 0x9434, 0x4FA7, + 0x9435, 0x9435, 0x2177, 0x9436, 0x9437, 0x4FA8, 0x9438, 0x9438, 0x251B, + 0x9439, 0x9439, 0x4FAA, 0x943A, 0x943A, 0x2524, 0x943B, 0x943D, 0x4FAB, + 0x943E, 0x943E, 0x1D87, 0x943F, 0x943F, 0x257B, 0x9440, 0x9443, 0x4FAE, + 0x9444, 0x9444, 0x22A3, 0x9445, 0x9449, 0x4FB2, 0x944A, 0x944A, 0x2579, + 0x944B, 0x944B, 0x4FB7, 0x944C, 0x944C, 0x2566, 0x944D, 0x9451, 0x4FB8, + 0x9452, 0x9452, 0x1F93, 0x9453, 0x9453, 0x4FBD, 0x9454, 0x9454, 0x257C, + 0x9455, 0x945F, 0x4FBE, 0x9460, 0x9460, 0x2514, 0x9461, 0x9462, 0x4FC9, + 0x9463, 0x9463, 0x257D, 0x9464, 0x9464, 0x4FCB, 0x9465, 0x9465, 0x2572, + 0x9466, 0x946A, 0x4FCC, 0x946B, 0x946B, 0x1D88, 0x946C, 0x946C, 0x4FD1, + 0x946D, 0x946D, 0x2574, 0x946E, 0x946F, 0x4FD2, 0x9470, 0x9470, 0x224E, + 0x9471, 0x9471, 0x4FD4, 0x9472, 0x9472, 0x21C6, 0x9473, 0x9476, 0x4FD5, + 0x9477, 0x9477, 0x209F, 0x9478, 0x9478, 0x4FD9, 0x9479, 0x9479, 0x2576, + 0x947A, 0x947B, 0x4FDA, 0x947C, 0x947C, 0x2064, 0x947D, 0x947D, 0x22BF, + 0x947E, 0x947E, 0x261C, 0x947F, 0x947F, 0x225E, 0x9480, 0x9484, 0x4FDC, + 0x9485, 0x9487, 0x1A8E, 0x9488, 0x9488, 0x118C, 0x9489, 0x9489, 0x05E3, + 0x948A, 0x948A, 0x1A92, 0x948B, 0x948B, 0x1A91, 0x948C, 0x948D, 0x1A93, + 0x948E, 0x948E, 0x0C22, 0x948F, 0x9490, 0x1A95, 0x9491, 0x9491, 0x4FE1, + 0x9492, 0x9492, 0x064D, 0x9493, 0x9493, 0x05D7, 0x9494, 0x9494, 0x1A97, + 0x9495, 0x9495, 0x1A99, 0x9496, 0x9496, 0x4FE2, 0x9497, 0x9497, 0x1A98, + 0x9498, 0x9498, 0x4FE3, 0x9499, 0x9499, 0x06C1, 0x949A, 0x949C, 0x1A9A, + 0x949D, 0x949D, 0x061A, 0x949E, 0x949E, 0x04D3, 0x949F, 0x949F, 0x11D2, + 0x94A0, 0x94A0, 0x0B29, 0x94A1, 0x94A1, 0x041E, 0x94A2, 0x94A2, 0x06D1, + 0x94A3, 0x94A4, 0x1A9D, 0x94A5, 0x94A5, 0x1102, 0x94A6, 0x94A6, 0x0C52, + 0x94A7, 0x94A7, 0x092A, 0x94A8, 0x94A8, 0x0EE8, 0x94A9, 0x94A9, 0x070C, + 0x94AA, 0x94AA, 0x1AA0, 0x94AB, 0x94AB, 0x1A9F, 0x94AC, 0x94AC, 0x1AA2, + 0x94AD, 0x94AD, 0x1AA1, 0x94AE, 0x94AE, 0x0B66, 0x94AF, 0x94B0, 0x1AA3, + 0x94B1, 0x94B1, 0x0C2B, 0x94B2, 0x94B2, 0x1AA5, 0x94B3, 0x94B3, 0x0C2C, + 0x94B4, 0x94B4, 0x1AA6, 0x94B5, 0x94B5, 0x046E, 0x94B6, 0x94BA, 0x1AA7, + 0x94BB, 0x94BB, 0x1247, 0x94BC, 0x94BD, 0x1AAC, 0x94BE, 0x94BE, 0x084B, + 0x94BF, 0x94BF, 0x1AAE, 0x94C0, 0x94C0, 0x10B0, 0x94C1, 0x94C1, 0x0E4D, + 0x94C2, 0x94C2, 0x0473, 0x94C3, 0x94C3, 0x0A2E, 0x94C4, 0x94C4, 0x1AAF, + 0x94C5, 0x94C5, 0x0C23, 0x94C6, 0x94C6, 0x0AB2, 0x94C7, 0x94C7, 0x4FE4, + 0x94C8, 0x94CE, 0x1AB0, 0x94CF, 0x94CF, 0x4FE5, 0x94D0, 0x94D2, 0x1AB7, + 0x94D3, 0x94D4, 0x4FE6, 0x94D5, 0x94D7, 0x1ABA, 0x94D8, 0x94D8, 0x1ABE, + 0x94D9, 0x94D9, 0x1ABD, 0x94DA, 0x94DA, 0x4FE8, 0x94DB, 0x94DB, 0x1ABF, + 0x94DC, 0x94DC, 0x0E5E, 0x94DD, 0x94DD, 0x0A68, 0x94DE, 0x94E0, 0x1AC0, + 0x94E1, 0x94E1, 0x1142, 0x94E2, 0x94E2, 0x1AC3, 0x94E3, 0x94E3, 0x0F20, + 0x94E4, 0x94E5, 0x1AC4, 0x94E6, 0x94E6, 0x4FE9, 0x94E7, 0x94E8, 0x1AC6, + 0x94E9, 0x94E9, 0x1AC9, 0x94EA, 0x94EA, 0x1AC8, 0x94EB, 0x94EB, 0x1ACA, + 0x94EC, 0x94EC, 0x06F0, 0x94ED, 0x94ED, 0x0AFF, 0x94EE, 0x94EF, 0x1ACB, + 0x94F0, 0x94F0, 0x0893, 0x94F1, 0x94F1, 0x1046, 0x94F2, 0x94F2, 0x04C0, + 0x94F3, 0x94F5, 0x1ACD, 0x94F6, 0x94F6, 0x107F, 0x94F7, 0x94F7, 0x1AD0, + 0x94F8, 0x94F8, 0x11FC, 0x94F9, 0x94F9, 0x1AD1, 0x94FA, 0x94FA, 0x0BEB, + 0x94FB, 0x94FB, 0x4FEA, 0x94FC, 0x94FD, 0x1AD2, 0x94FE, 0x94FE, 0x09FD, + 0x94FF, 0x94FF, 0x1AD4, 0x9500, 0x9500, 0x0F67, 0x9501, 0x9501, 0x0DED, + 0x9502, 0x9502, 0x1AD6, 0x9503, 0x9503, 0x1AD5, 0x9504, 0x9504, 0x051F, + 0x9505, 0x9505, 0x0751, 0x9506, 0x9507, 0x1AD7, 0x9508, 0x9508, 0x0FAD, + 0x9509, 0x950A, 0x1AD9, 0x950B, 0x950B, 0x0683, 0x950C, 0x950C, 0x0F8A, + 0x950D, 0x950F, 0x1ADB, 0x9510, 0x9510, 0x0CCC, 0x9511, 0x9511, 0x0E33, + 0x9512, 0x9516, 0x1ADE, 0x9517, 0x9517, 0x1181, 0x9518, 0x9518, 0x1AE3, + 0x9519, 0x9519, 0x0570, 0x951A, 0x951A, 0x0AAF, 0x951B, 0x951B, 0x1AE4, + 0x951C, 0x951C, 0x4FEB, 0x951D, 0x951F, 0x1AE5, 0x9520, 0x9520, 0x4FEC, + 0x9521, 0x9521, 0x0F0C, 0x9522, 0x9522, 0x1AE8, 0x9523, 0x9523, 0x0A87, + 0x9524, 0x9524, 0x053B, 0x9525, 0x9525, 0x1213, 0x9526, 0x9526, 0x08C6, + 0x9527, 0x9527, 0x4FED, 0x9528, 0x9528, 0x0F34, 0x9529, 0x9529, 0x1AEB, + 0x952A, 0x952B, 0x1AE9, 0x952C, 0x952C, 0x1AEC, 0x952D, 0x952D, 0x05E6, + 0x952E, 0x952E, 0x086F, 0x952F, 0x952F, 0x0911, 0x9530, 0x9530, 0x0AD1, + 0x9531, 0x9532, 0x1AED, 0x9533, 0x9533, 0x4FEE, 0x9534, 0x9534, 0x1AEF, + 0x9535, 0x9535, 0x1AF7, 0x9536, 0x9538, 0x1AF0, 0x9539, 0x9539, 0x0C3F, + 0x953A, 0x953A, 0x1B19, 0x953B, 0x953B, 0x060C, 0x953C, 0x953C, 0x1AF3, + 0x953D, 0x953D, 0x4FEF, 0x953E, 0x953F, 0x1AF4, 0x9540, 0x9540, 0x0605, + 0x9541, 0x9541, 0x0AC3, 0x9542, 0x9542, 0x1AF6, 0x9543, 0x9543, 0x4FF0, + 0x9544, 0x9546, 0x1AF8, 0x9547, 0x9547, 0x1193, 0x9548, 0x9548, 0x4FF1, + 0x9549, 0x9549, 0x1AFB, 0x954A, 0x954A, 0x0B5A, 0x954B, 0x954B, 0x4FF2, + 0x954C, 0x954C, 0x1AFC, 0x954D, 0x954D, 0x0B5B, 0x954E, 0x954F, 0x1AFD, + 0x9550, 0x9550, 0x06DF, 0x9551, 0x9551, 0x0402, 0x9552, 0x9554, 0x1AFF, + 0x9555, 0x9555, 0x4FF3, 0x9556, 0x9559, 0x1B02, 0x955A, 0x955A, 0x4FF4, + 0x955B, 0x955B, 0x1B06, 0x955C, 0x955C, 0x08E4, 0x955D, 0x955D, 0x1B09, + 0x955E, 0x955F, 0x1B07, 0x9560, 0x9560, 0x4FF5, 0x9561, 0x9562, 0x1B0A, + 0x9563, 0x9563, 0x0A16, 0x9564, 0x956C, 0x1B0C, 0x956D, 0x956D, 0x09C3, + 0x956E, 0x956E, 0x4FF6, 0x956F, 0x956F, 0x1B15, 0x9570, 0x9570, 0x09F6, + 0x9571, 0x9573, 0x1B16, 0x9574, 0x9575, 0x4FF7, 0x9576, 0x9576, 0x0F4F, + 0x9577, 0x9577, 0x1E75, 0x9578, 0x957E, 0x4FF9, 0x957F, 0x957F, 0x04C9, + 0x9580, 0x9580, 0x207D, 0x9581, 0x9581, 0x5000, 0x9582, 0x9582, 0x23BF, + 0x9583, 0x9583, 0x2113, 0x9584, 0x9585, 0x5001, 0x9586, 0x9586, 0x23C0, + 0x9587, 0x9588, 0x5003, 0x9589, 0x9589, 0x1E45, 0x958A, 0x958A, 0x5005, + 0x958B, 0x958B, 0x1FD8, 0x958C, 0x958C, 0x23C4, 0x958D, 0x958D, 0x5006, + 0x958E, 0x958E, 0x23C2, 0x958F, 0x958F, 0x2104, 0x9590, 0x9590, 0x5007, + 0x9591, 0x9591, 0x21BD, 0x9592, 0x9592, 0x5008, 0x9593, 0x9593, 0x1F87, + 0x9594, 0x9594, 0x23C3, 0x9595, 0x9597, 0x5009, 0x9598, 0x9598, 0x2269, + 0x9599, 0x95A0, 0x500C, 0x95A1, 0x95A1, 0x1F43, 0x95A2, 0x95A2, 0x5014, + 0x95A3, 0x95A3, 0x1F1E, 0x95A4, 0x95A4, 0x2679, 0x95A5, 0x95A5, 0x1EEB, + 0x95A6, 0x95A7, 0x5015, 0x95A8, 0x95A8, 0x1F35, 0x95A9, 0x95A9, 0x208A, + 0x95AA, 0x95AA, 0x5017, 0x95AB, 0x95AB, 0x23C7, 0x95AC, 0x95AC, 0x23C9, + 0x95AD, 0x95AD, 0x23C6, 0x95AE, 0x95B1, 0x5018, 0x95B2, 0x95B2, 0x224F, + 0x95B3, 0x95B5, 0x501C, 0x95B6, 0x95B6, 0x23CB, 0x95B7, 0x95B8, 0x501F, + 0x95B9, 0x95B9, 0x21F3, 0x95BA, 0x95BA, 0x5021, 0x95BB, 0x95BB, 0x21F7, + 0x95BC, 0x95BC, 0x23CF, 0x95BD, 0x95BD, 0x23CE, 0x95BE, 0x95BE, 0x23CA, + 0x95BF, 0x95BF, 0x23CD, 0x95C0, 0x95C2, 0x5022, 0x95C3, 0x95C3, 0x23D0, + 0x95C4, 0x95C5, 0x5025, 0x95C6, 0x95C6, 0x266C, 0x95C7, 0x95C7, 0x5027, + 0x95C8, 0x95C8, 0x23C1, 0x95C9, 0x95C9, 0x5028, 0x95CA, 0x95CA, 0x1FEE, + 0x95CB, 0x95CB, 0x23D1, 0x95CC, 0x95CC, 0x1FF8, 0x95CD, 0x95CF, 0x5029, + 0x95D0, 0x95D0, 0x23D3, 0x95D1, 0x95D3, 0x502C, 0x95D4, 0x95D4, 0x23D2, + 0x95D5, 0x95D5, 0x23D4, 0x95D6, 0x95D6, 0x1E98, 0x95D7, 0x95DB, 0x502F, + 0x95DC, 0x95DC, 0x1F2C, 0x95DD, 0x95DD, 0x5034, 0x95DE, 0x95DE, 0x23D5, + 0x95DF, 0x95E0, 0x5035, 0x95E1, 0x95E1, 0x1E71, 0x95E2, 0x95E2, 0x2691, + 0x95E3, 0x95E4, 0x5037, 0x95E5, 0x95E5, 0x23C5, 0x95E6, 0x95E7, 0x5039, + 0x95E8, 0x95E8, 0x0ACA, 0x95E9, 0x95E9, 0x1685, 0x95EA, 0x95EA, 0x0CFA, + 0x95EB, 0x95EB, 0x1686, 0x95EC, 0x95EC, 0x503B, 0x95ED, 0x95ED, 0x043E, + 0x95EE, 0x95EE, 0x0ED9, 0x95EF, 0x95EF, 0x0536, 0x95F0, 0x95F0, 0x0CCD, + 0x95F1, 0x95F1, 0x1687, 0x95F2, 0x95F2, 0x0F3D, 0x95F3, 0x95F3, 0x1688, + 0x95F4, 0x95F4, 0x0857, 0x95F5, 0x95F6, 0x1689, 0x95F7, 0x95F7, 0x0ACB, + 0x95F8, 0x95F8, 0x1143, 0x95F9, 0x95F9, 0x0B39, 0x95FA, 0x95FA, 0x0744, + 0x95FB, 0x95FB, 0x0ED4, 0x95FC, 0x95FC, 0x168B, 0x95FD, 0x95FD, 0x0AFB, + 0x95FE, 0x95FE, 0x168C, 0x95FF, 0x95FF, 0x503C, 0x9600, 0x9600, 0x0644, + 0x9601, 0x9601, 0x06EE, 0x9602, 0x9602, 0x0789, 0x9603, 0x9604, 0x168D, + 0x9605, 0x9605, 0x1107, 0x9606, 0x9606, 0x168F, 0x9607, 0x9607, 0x503D, + 0x9608, 0x9608, 0x1690, 0x9609, 0x9609, 0x0FF4, 0x960A, 0x960D, 0x1691, + 0x960E, 0x960E, 0x0FFF, 0x960F, 0x960F, 0x1695, 0x9610, 0x9610, 0x04C2, + 0x9611, 0x9611, 0x09A6, 0x9612, 0x9612, 0x1696, 0x9613, 0x9613, 0x503E, + 0x9614, 0x9614, 0x0996, 0x9615, 0x9617, 0x1697, 0x9618, 0x9618, 0x503F, + 0x9619, 0x961A, 0x169A, 0x961B, 0x961B, 0x5040, 0x961C, 0x961C, 0x06B2, + 0x961D, 0x961D, 0x1354, 0x961E, 0x961E, 0x5041, 0x961F, 0x961F, 0x0612, + 0x9620, 0x9620, 0x5042, 0x9621, 0x9621, 0x1356, 0x9622, 0x9622, 0x1355, + 0x9623, 0x9629, 0x5043, 0x962A, 0x962A, 0x1358, 0x962B, 0x962D, 0x504A, + 0x962E, 0x962E, 0x0CC9, 0x962F, 0x9630, 0x504D, 0x9631, 0x9631, 0x1357, + 0x9632, 0x9632, 0x065D, 0x9633, 0x9633, 0x101D, 0x9634, 0x9634, 0x107C, + 0x9635, 0x9635, 0x1194, 0x9636, 0x9636, 0x08A8, 0x9637, 0x963A, 0x504F, + 0x963B, 0x963B, 0x1245, 0x963C, 0x963C, 0x135A, 0x963D, 0x963D, 0x1359, + 0x963E, 0x963E, 0x5053, 0x963F, 0x963F, 0x03AD, 0x9640, 0x9640, 0x0E84, + 0x9641, 0x9641, 0x5054, 0x9642, 0x9642, 0x135B, 0x9643, 0x9643, 0x5055, + 0x9644, 0x9644, 0x06B8, 0x9645, 0x9645, 0x083D, 0x9646, 0x9646, 0x0A64, + 0x9647, 0x9647, 0x0A4B, 0x9648, 0x9648, 0x04E7, 0x9649, 0x9649, 0x135C, + 0x964A, 0x964A, 0x5056, 0x964B, 0x964B, 0x0A51, 0x964C, 0x964C, 0x0B13, + 0x964D, 0x964D, 0x0886, 0x964E, 0x964F, 0x5057, 0x9650, 0x9650, 0x0F4B, + 0x9651, 0x9653, 0x5059, 0x9654, 0x9654, 0x135D, 0x9655, 0x9655, 0x0CFB, + 0x9656, 0x9657, 0x505C, 0x9658, 0x9658, 0x231A, 0x9659, 0x965A, 0x505E, + 0x965B, 0x965B, 0x0446, 0x965C, 0x965C, 0x5060, 0x965D, 0x965D, 0x2114, + 0x965E, 0x965E, 0x5061, 0x965F, 0x965F, 0x135E, 0x9660, 0x9660, 0x5062, + 0x9661, 0x9661, 0x05F7, 0x9662, 0x9662, 0x10FD, 0x9663, 0x9663, 0x2284, + 0x9664, 0x9664, 0x0522, 0x9665, 0x9666, 0x5063, 0x9667, 0x9667, 0x135F, + 0x9668, 0x9668, 0x110C, 0x9669, 0x9669, 0x0F42, 0x966A, 0x966A, 0x0BA4, + 0x966B, 0x966B, 0x5065, 0x966C, 0x966C, 0x1360, 0x966D, 0x966F, 0x5066, + 0x9670, 0x9670, 0x221C, 0x9671, 0x9671, 0x5069, 0x9672, 0x9672, 0x1361, + 0x9673, 0x9673, 0x1E7E, 0x9674, 0x9674, 0x1362, 0x9675, 0x9675, 0x0A33, + 0x9676, 0x9676, 0x0E28, 0x9677, 0x9677, 0x0F4A, 0x9678, 0x9678, 0x204D, + 0x9679, 0x967C, 0x506A, 0x967D, 0x967D, 0x2201, 0x967E, 0x9684, 0x506E, + 0x9685, 0x9685, 0x10CC, 0x9686, 0x9686, 0x0A48, 0x9687, 0x9687, 0x5075, + 0x9688, 0x9688, 0x1363, 0x9689, 0x9689, 0x5076, 0x968A, 0x968A, 0x1ED9, + 0x968B, 0x968B, 0x0DDA, 0x968C, 0x968C, 0x5077, 0x968D, 0x968D, 0x1364, + 0x968E, 0x968E, 0x1FB2, 0x968F, 0x968F, 0x0DDB, 0x9690, 0x9690, 0x1085, + 0x9691, 0x9693, 0x5078, 0x9694, 0x9694, 0x06EF, 0x9695, 0x9695, 0x2252, + 0x9696, 0x9696, 0x507B, 0x9697, 0x9697, 0x1365, 0x9698, 0x9698, 0x03BA, + 0x9699, 0x9699, 0x0F23, 0x969A, 0x969A, 0x507C, 0x969B, 0x969B, 0x1F79, + 0x969C, 0x969C, 0x1170, 0x969D, 0x96A6, 0x507D, 0x96A7, 0x96A7, 0x0DE2, + 0x96A8, 0x96A8, 0x2157, 0x96A9, 0x96A9, 0x5087, 0x96AA, 0x96AA, 0x21BF, + 0x96AB, 0x96AF, 0x5088, 0x96B0, 0x96B0, 0x1366, 0x96B1, 0x96B1, 0x221F, + 0x96B2, 0x96B2, 0x508D, 0x96B3, 0x96B3, 0x1684, 0x96B4, 0x96B4, 0x203D, + 0x96B5, 0x96B5, 0x508E, 0x96B6, 0x96B6, 0x09EE, 0x96B7, 0x96B7, 0x508F, + 0x96B8, 0x96B8, 0x2015, 0x96B9, 0x96B9, 0x1D79, 0x96BA, 0x96BA, 0x5090, + 0x96BB, 0x96BB, 0x26A5, 0x96BC, 0x96BD, 0x1D7A, 0x96BE, 0x96BE, 0x0B34, + 0x96BF, 0x96BF, 0x5091, 0x96C0, 0x96C0, 0x0C93, 0x96C1, 0x96C1, 0x100C, + 0x96C2, 0x96C3, 0x5092, 0x96C4, 0x96C4, 0x0FA6, 0x96C5, 0x96C5, 0x0FEE, + 0x96C6, 0x96C6, 0x0822, 0x96C7, 0x96C7, 0x0726, 0x96C8, 0x96C8, 0x5094, + 0x96C9, 0x96C9, 0x1B1C, 0x96CA, 0x96CB, 0x5095, 0x96CC, 0x96CC, 0x0549, + 0x96CD, 0x96CD, 0x109F, 0x96CE, 0x96CE, 0x1D7C, 0x96CF, 0x96CF, 0x0520, + 0x96D0, 0x96D1, 0x5097, 0x96D2, 0x96D2, 0x1D7D, 0x96D3, 0x96D4, 0x5099, + 0x96D5, 0x96D5, 0x05D2, 0x96D6, 0x96D6, 0x2156, 0x96D7, 0x96D8, 0x509B, + 0x96D9, 0x96D9, 0x2144, 0x96DA, 0x96DA, 0x509D, 0x96DB, 0x96DB, 0x1E91, + 0x96DC, 0x96DC, 0x2257, 0x96DD, 0x96DF, 0x509E, 0x96E0, 0x96E0, 0x1D7F, + 0x96E1, 0x96E1, 0x50A1, 0x96E2, 0x96E2, 0x200A, 0x96E3, 0x96E3, 0x2092, + 0x96E4, 0x96E7, 0x50A2, 0x96E8, 0x96E8, 0x10CF, 0x96E9, 0x96E9, 0x1D61, + 0x96EA, 0x96EA, 0x0FD2, 0x96EB, 0x96EE, 0x50A6, 0x96EF, 0x96EF, 0x1D63, + 0x96F0, 0x96F1, 0x50AA, 0x96F2, 0x96F2, 0x2250, 0x96F3, 0x96F3, 0x1D62, + 0x96F4, 0x96F5, 0x50AC, 0x96F6, 0x96F6, 0x0A2C, 0x96F7, 0x96F7, 0x09C2, + 0x96F8, 0x96F8, 0x50AE, 0x96F9, 0x96F9, 0x040B, 0x96FA, 0x96FA, 0x50AF, + 0x96FB, 0x96FB, 0x1EC3, 0x96FC, 0x96FD, 0x50B0, 0x96FE, 0x96FE, 0x0EFC, + 0x96FF, 0x96FF, 0x50B2, 0x9700, 0x9700, 0x0FB3, 0x9701, 0x9701, 0x1D65, + 0x9702, 0x9703, 0x50B3, 0x9704, 0x9704, 0x0F63, 0x9705, 0x9705, 0x50B5, + 0x9706, 0x9706, 0x1D64, 0x9707, 0x9707, 0x1191, 0x9708, 0x9708, 0x1D66, + 0x9709, 0x9709, 0x0ABE, 0x970A, 0x970C, 0x50B6, 0x970D, 0x970D, 0x0809, + 0x970E, 0x970E, 0x1D68, 0x970F, 0x970F, 0x1D67, 0x9710, 0x9712, 0x50B9, + 0x9713, 0x9713, 0x0B41, 0x9714, 0x9715, 0x50BC, 0x9716, 0x9716, 0x0A21, + 0x9717, 0x971B, 0x50BE, 0x971C, 0x971C, 0x0D9F, 0x971D, 0x971D, 0x50C3, + 0x971E, 0x971E, 0x0F29, 0x971F, 0x9726, 0x50C4, 0x9727, 0x9727, 0x21A8, + 0x9728, 0x9729, 0x50CC, 0x972A, 0x972A, 0x1D69, 0x972B, 0x972C, 0x50CE, + 0x972D, 0x972D, 0x1D6A, 0x972E, 0x972F, 0x50D0, 0x9730, 0x9730, 0x1D6B, + 0x9731, 0x9731, 0x50D2, 0x9732, 0x9732, 0x0A5D, 0x9733, 0x9737, 0x50D3, + 0x9738, 0x9738, 0x03DF, 0x9739, 0x9739, 0x0BBA, 0x973A, 0x973C, 0x50D8, + 0x973D, 0x973D, 0x260D, 0x973E, 0x973E, 0x1D6C, 0x973F, 0x9741, 0x50DB, + 0x9742, 0x9742, 0x260C, 0x9743, 0x9743, 0x50DE, 0x9744, 0x9744, 0x260E, + 0x9745, 0x9747, 0x50DF, 0x9748, 0x9748, 0x2032, 0x9749, 0x9751, 0x50E2, + 0x9752, 0x9752, 0x0C5D, 0x9753, 0x9753, 0x1D60, 0x9754, 0x9755, 0x50EB, + 0x9756, 0x9756, 0x08E7, 0x9757, 0x9758, 0x50ED, 0x9759, 0x9759, 0x08E1, + 0x975A, 0x975A, 0x260B, 0x975B, 0x975B, 0x05C6, 0x975C, 0x975D, 0x50EF, + 0x975E, 0x975E, 0x0664, 0x975F, 0x975F, 0x50F1, 0x9760, 0x9760, 0x094C, + 0x9761, 0x9761, 0x0AD7, 0x9762, 0x9762, 0x0AEB, 0x9763, 0x9764, 0x50F2, + 0x9765, 0x9765, 0x1282, 0x9766, 0x9767, 0x50F4, 0x9768, 0x9768, 0x22C3, + 0x9769, 0x9769, 0x06EA, 0x976A, 0x9772, 0x50F6, 0x9773, 0x9773, 0x08CA, + 0x9774, 0x9774, 0x0FCE, 0x9775, 0x9775, 0x50FF, 0x9776, 0x9776, 0x03DB, + 0x9777, 0x977B, 0x5100, 0x977C, 0x977C, 0x1DC8, 0x977D, 0x9784, 0x5105, + 0x9785, 0x9785, 0x1DC9, 0x9786, 0x978A, 0x510D, 0x978B, 0x978B, 0x0F77, + 0x978C, 0x978C, 0x5112, 0x978D, 0x978D, 0x03BB, 0x978E, 0x978E, 0x5113, + 0x978F, 0x978F, 0x1F23, 0x9790, 0x9790, 0x5114, 0x9791, 0x9792, 0x1DCA, + 0x9793, 0x9793, 0x5115, 0x9794, 0x9794, 0x1DCC, 0x9795, 0x9797, 0x5116, + 0x9798, 0x9798, 0x0C47, 0x9799, 0x979F, 0x5119, 0x97A0, 0x97A0, 0x08FE, + 0x97A1, 0x97A2, 0x5120, 0x97A3, 0x97A3, 0x1DCF, 0x97A4, 0x97A5, 0x5122, + 0x97A6, 0x97A6, 0x2695, 0x97A7, 0x97AA, 0x5124, 0x97AB, 0x97AB, 0x1DCE, + 0x97AC, 0x97AC, 0x5128, 0x97AD, 0x97AD, 0x0447, 0x97AE, 0x97AE, 0x5129, + 0x97AF, 0x97AF, 0x1DCD, 0x97B0, 0x97B1, 0x512A, 0x97B2, 0x97B2, 0x1DD0, + 0x97B3, 0x97B3, 0x512C, 0x97B4, 0x97B4, 0x1DD1, 0x97B5, 0x97BC, 0x512D, + 0x97BD, 0x97BD, 0x265E, 0x97BE, 0x97C2, 0x5135, 0x97C3, 0x97C3, 0x265D, + 0x97C4, 0x97C5, 0x513A, 0x97C6, 0x97C6, 0x2692, 0x97C7, 0x97C8, 0x513C, + 0x97C9, 0x97C9, 0x265F, 0x97CA, 0x97CA, 0x513E, 0x97CB, 0x97CB, 0x218D, + 0x97CC, 0x97CC, 0x20FD, 0x97CD, 0x97D2, 0x513F, 0x97D3, 0x97D3, 0x1F40, + 0x97D4, 0x97D8, 0x5145, 0x97D9, 0x97D9, 0x2465, 0x97DA, 0x97DB, 0x514A, + 0x97DC, 0x97DC, 0x2467, 0x97DD, 0x97DD, 0x514C, 0x97DE, 0x97DE, 0x2466, + 0x97DF, 0x97E5, 0x514D, 0x97E6, 0x97E6, 0x0EB3, 0x97E7, 0x97E7, 0x0CA8, + 0x97E8, 0x97E8, 0x5154, 0x97E9, 0x97E9, 0x0762, 0x97EA, 0x97EC, 0x184E, + 0x97ED, 0x97ED, 0x08F1, 0x97EE, 0x97F2, 0x5155, 0x97F3, 0x97F3, 0x107B, + 0x97F4, 0x97F4, 0x515A, 0x97F5, 0x97F5, 0x1112, 0x97F6, 0x97F6, 0x0D11, + 0x97F7, 0x97FE, 0x515B, 0x97FF, 0x97FF, 0x21C9, 0x9800, 0x9800, 0x5163, + 0x9801, 0x9801, 0x2209, 0x9802, 0x9802, 0x1EC9, 0x9803, 0x9803, 0x20E9, + 0x9804, 0x9804, 0x5164, 0x9805, 0x9805, 0x21CA, 0x9806, 0x9806, 0x2146, + 0x9807, 0x9807, 0x25C5, 0x9808, 0x9808, 0x21DC, 0x9809, 0x9809, 0x5165, + 0x980A, 0x980A, 0x245E, 0x980B, 0x980B, 0x5166, 0x980C, 0x980C, 0x214F, + 0x980D, 0x980D, 0x5167, 0x980E, 0x980F, 0x25C6, 0x9810, 0x9810, 0x2241, + 0x9811, 0x9811, 0x218A, 0x9812, 0x9812, 0x1E2F, 0x9813, 0x9813, 0x1EDC, + 0x9814, 0x9816, 0x5168, 0x9817, 0x9817, 0x20BF, 0x9818, 0x9818, 0x2034, + 0x9819, 0x981B, 0x516B, 0x981C, 0x981C, 0x25C9, 0x981D, 0x9820, 0x516E, + 0x9821, 0x9821, 0x25C8, 0x9822, 0x9823, 0x5172, 0x9824, 0x9824, 0x220E, + 0x9825, 0x9825, 0x5174, 0x9826, 0x9826, 0x25CB, 0x9827, 0x982C, 0x5175, + 0x982D, 0x982D, 0x217D, 0x982E, 0x982F, 0x517B, 0x9830, 0x9830, 0x1F7E, + 0x9831, 0x9836, 0x517D, 0x9837, 0x9837, 0x25CC, 0x9838, 0x9838, 0x1FC3, + 0x9839, 0x983A, 0x5183, 0x983B, 0x983B, 0x20B9, 0x983C, 0x983C, 0x5185, + 0x983D, 0x983D, 0x2181, 0x983E, 0x9845, 0x5186, 0x9846, 0x9846, 0x1FDA, + 0x9847, 0x984B, 0x518E, 0x984C, 0x984C, 0x2173, 0x984D, 0x984D, 0x1EE1, + 0x984E, 0x984E, 0x25CD, 0x984F, 0x9852, 0x5193, 0x9853, 0x9853, 0x25CE, + 0x9854, 0x9854, 0x21F6, 0x9855, 0x9857, 0x5197, 0x9858, 0x9858, 0x224B, + 0x9859, 0x9859, 0x25D1, 0x985A, 0x985A, 0x519A, 0x985B, 0x985B, 0x1EC0, + 0x985C, 0x985D, 0x519B, 0x985E, 0x985E, 0x2008, 0x985F, 0x9861, 0x519D, + 0x9862, 0x9862, 0x25D0, 0x9863, 0x9864, 0x51A0, 0x9865, 0x9865, 0x25D2, + 0x9866, 0x9866, 0x51A2, 0x9867, 0x9867, 0x1F2A, 0x9868, 0x986A, 0x51A3, + 0x986B, 0x986B, 0x1E72, 0x986C, 0x986C, 0x25D3, 0x986D, 0x986E, 0x51A6, + 0x986F, 0x986F, 0x21BE, 0x9870, 0x9870, 0x25D4, 0x9871, 0x9871, 0x2044, + 0x9872, 0x9872, 0x51A8, 0x9873, 0x9873, 0x25CF, 0x9874, 0x9874, 0x20F3, + 0x9875, 0x9875, 0x103A, 0x9876, 0x9876, 0x05E4, 0x9877, 0x9877, 0x0C67, + 0x9878, 0x9878, 0x1BE0, 0x9879, 0x9879, 0x0F5B, 0x987A, 0x987A, 0x0DA8, + 0x987B, 0x987B, 0x0FB6, 0x987C, 0x987C, 0x1827, 0x987D, 0x987D, 0x0E98, + 0x987E, 0x987E, 0x0724, 0x987F, 0x987F, 0x0618, 0x9880, 0x9880, 0x1BE1, + 0x9881, 0x9881, 0x03EF, 0x9882, 0x9882, 0x0DC1, 0x9883, 0x9883, 0x1BE2, + 0x9884, 0x9884, 0x10E7, 0x9885, 0x9885, 0x0A54, 0x9886, 0x9886, 0x0A35, + 0x9887, 0x9887, 0x0BE3, 0x9888, 0x9888, 0x08E0, 0x9889, 0x9889, 0x1BE3, + 0x988A, 0x988A, 0x0848, 0x988B, 0x988B, 0x51A9, 0x988C, 0x988D, 0x1BE4, + 0x988E, 0x988E, 0x51AA, 0x988F, 0x988F, 0x1BE6, 0x9890, 0x9890, 0x104A, + 0x9891, 0x9891, 0x0BD4, 0x9892, 0x9892, 0x51AB, 0x9893, 0x9893, 0x0E78, + 0x9894, 0x9894, 0x1BE7, 0x9895, 0x9895, 0x51AC, 0x9896, 0x9896, 0x1096, + 0x9897, 0x9897, 0x0952, 0x9898, 0x9898, 0x0E35, 0x9899, 0x9899, 0x51AD, + 0x989A, 0x989B, 0x1BE8, 0x989C, 0x989C, 0x0FFE, 0x989D, 0x989D, 0x062D, + 0x989E, 0x989F, 0x1BEA, 0x98A0, 0x98A0, 0x05C0, 0x98A1, 0x98A2, 0x1BEC, + 0x98A3, 0x98A3, 0x51AE, 0x98A4, 0x98A4, 0x04C3, 0x98A5, 0x98A6, 0x1BEE, + 0x98A7, 0x98A7, 0x0C82, 0x98A8, 0x98A8, 0x1F00, 0x98A9, 0x98AD, 0x51AF, + 0x98AE, 0x98AF, 0x24CC, 0x98B0, 0x98B0, 0x51B4, 0x98B1, 0x98B1, 0x2698, + 0x98B2, 0x98B2, 0x51B5, 0x98B3, 0x98B3, 0x2678, 0x98B4, 0x98B5, 0x51B6, + 0x98B6, 0x98B6, 0x24CE, 0x98B7, 0x98BB, 0x51B8, 0x98BC, 0x98BC, 0x24CF, + 0x98BD, 0x98C3, 0x51BD, 0x98C4, 0x98C4, 0x20B8, 0x98C5, 0x98C5, 0x51C4, + 0x98C6, 0x98C6, 0x24D0, 0x98C7, 0x98C7, 0x51C5, 0x98C8, 0x98C8, 0x24D1, + 0x98C9, 0x98CD, 0x51C6, 0x98CE, 0x98CE, 0x0684, 0x98CF, 0x98D0, 0x51CB, + 0x98D1, 0x98D3, 0x19B7, 0x98D4, 0x98D4, 0x51CD, 0x98D5, 0x98D5, 0x19BA, + 0x98D6, 0x98D7, 0x51CE, 0x98D8, 0x98D8, 0x0BCD, 0x98D9, 0x98DA, 0x19BB, + 0x98DB, 0x98DB, 0x1EF4, 0x98DC, 0x98DD, 0x51D0, 0x98DE, 0x98DE, 0x0666, + 0x98DF, 0x98DF, 0x0D4A, 0x98E0, 0x98E0, 0x239B, 0x98E1, 0x98E1, 0x51D2, + 0x98E2, 0x98E2, 0x267E, 0x98E3, 0x98E6, 0x51D3, 0x98E7, 0x98E7, 0x161A, + 0x98E8, 0x98E8, 0x1DE7, 0x98E9, 0x98E9, 0x239D, 0x98EA, 0x98EB, 0x239F, + 0x98EC, 0x98EC, 0x51D7, 0x98ED, 0x98ED, 0x23A1, 0x98EE, 0x98EE, 0x51D8, + 0x98EF, 0x98EF, 0x1EF1, 0x98F0, 0x98F1, 0x51D9, 0x98F2, 0x98F2, 0x221E, + 0x98F3, 0x98F3, 0x51DB, 0x98F4, 0x98F4, 0x23A2, 0x98F5, 0x98FB, 0x51DC, + 0x98FC, 0x98FC, 0x214B, 0x98FD, 0x98FD, 0x1E36, 0x98FE, 0x98FE, 0x2135, + 0x98FF, 0x98FF, 0x51E3, 0x9900, 0x9902, 0x51E4, 0x9903, 0x9903, 0x1FAD, + 0x9904, 0x9904, 0x51E7, 0x9905, 0x9905, 0x1E53, 0x9906, 0x9908, 0x51E8, + 0x9909, 0x9909, 0x23A3, 0x990A, 0x990A, 0x2203, 0x990B, 0x990B, 0x51EB, + 0x990C, 0x990C, 0x1EE7, 0x990D, 0x990D, 0x1DE8, 0x990E, 0x990F, 0x51EC, + 0x9910, 0x9910, 0x0494, 0x9911, 0x9911, 0x23A4, 0x9912, 0x9912, 0x2097, + 0x9913, 0x9913, 0x1EE4, 0x9914, 0x9917, 0x51EE, 0x9918, 0x9918, 0x2238, + 0x9919, 0x991A, 0x51F2, 0x991B, 0x991B, 0x23A5, 0x991C, 0x991D, 0x51F4, + 0x991E, 0x991E, 0x1F9A, 0x991F, 0x9920, 0x51F6, 0x9921, 0x9921, 0x21C3, + 0x9922, 0x9927, 0x51F8, 0x9928, 0x9928, 0x1F2E, 0x9929, 0x992D, 0x51FE, + 0x992E, 0x992E, 0x1DE9, 0x992F, 0x9932, 0x5203, 0x9933, 0x9933, 0x239C, + 0x9934, 0x9936, 0x5207, 0x9937, 0x9937, 0x23A6, 0x9938, 0x993B, 0x520A, + 0x993C, 0x993C, 0x239E, 0x993D, 0x993D, 0x520E, 0x993E, 0x993E, 0x2035, + 0x993F, 0x993F, 0x23A7, 0x9940, 0x9942, 0x520F, 0x9943, 0x9943, 0x23A8, + 0x9944, 0x9944, 0x5212, 0x9945, 0x9945, 0x2075, 0x9946, 0x9947, 0x5213, + 0x9948, 0x994A, 0x23A9, 0x994B, 0x994B, 0x1FEB, 0x994C, 0x994C, 0x23AC, + 0x994D, 0x9950, 0x5215, 0x9951, 0x9951, 0x1F6A, 0x9952, 0x9952, 0x20F9, + 0x9953, 0x9953, 0x5219, 0x9954, 0x9954, 0x1DEB, 0x9955, 0x9955, 0x1DEA, + 0x9956, 0x9956, 0x521A, 0x9957, 0x9957, 0x2666, 0x9958, 0x995B, 0x521B, + 0x995C, 0x995C, 0x2667, 0x995D, 0x995D, 0x521F, 0x995E, 0x995E, 0x1E6C, + 0x995F, 0x9961, 0x5220, 0x9962, 0x9962, 0x23AD, 0x9963, 0x9963, 0x161D, + 0x9964, 0x9964, 0x5223, 0x9965, 0x9965, 0x0815, 0x9966, 0x9966, 0x5224, + 0x9967, 0x996C, 0x161E, 0x996D, 0x996D, 0x0656, 0x996E, 0x996E, 0x1082, + 0x996F, 0x996F, 0x0875, 0x9970, 0x9970, 0x0D65, 0x9971, 0x9971, 0x040E, + 0x9972, 0x9972, 0x0DBC, 0x9973, 0x9973, 0x5225, 0x9974, 0x9974, 0x1624, + 0x9975, 0x9975, 0x063B, 0x9976, 0x9976, 0x0C9F, 0x9977, 0x9977, 0x1625, + 0x9978, 0x9979, 0x5226, 0x997A, 0x997A, 0x0899, 0x997B, 0x997B, 0x5228, + 0x997C, 0x997C, 0x0466, 0x997D, 0x997D, 0x1626, 0x997E, 0x997E, 0x5229, + 0x997F, 0x997F, 0x0635, 0x9980, 0x9980, 0x1627, 0x9981, 0x9981, 0x0B3C, + 0x9982, 0x9983, 0x522A, 0x9984, 0x9984, 0x1628, 0x9985, 0x9985, 0x0F47, + 0x9986, 0x9986, 0x0736, 0x9987, 0x9987, 0x1629, 0x9988, 0x9988, 0x098C, + 0x9989, 0x9989, 0x522C, 0x998A, 0x998A, 0x162A, 0x998B, 0x998B, 0x04BD, + 0x998C, 0x998C, 0x522D, 0x998D, 0x998D, 0x162B, 0x998E, 0x998E, 0x522E, + 0x998F, 0x998F, 0x0A3C, 0x9990, 0x9991, 0x162C, 0x9992, 0x9992, 0x0A9F, + 0x9993, 0x9995, 0x162E, 0x9996, 0x9996, 0x0D6E, 0x9997, 0x9997, 0x126E, + 0x9998, 0x9998, 0x12F9, 0x9999, 0x9999, 0x0F50, 0x999A, 0x99A4, 0x522F, + 0x99A5, 0x99A5, 0x1B2B, 0x99A6, 0x99A7, 0x523A, 0x99A8, 0x99A8, 0x13DE, + 0x99A9, 0x99AB, 0x523C, 0x99AC, 0x99AC, 0x206D, 0x99AD, 0x99AD, 0x2242, + 0x99AE, 0x99AE, 0x1F02, 0x99AF, 0x99B0, 0x523F, 0x99B1, 0x99B1, 0x2183, + 0x99B2, 0x99B2, 0x5241, 0x99B3, 0x99B3, 0x1E85, 0x99B4, 0x99B4, 0x21E9, + 0x99B5, 0x99C0, 0x5242, 0x99C1, 0x99C1, 0x1E57, 0x99C2, 0x99CF, 0x524E, + 0x99D0, 0x99D0, 0x22A5, 0x99D1, 0x99D1, 0x2407, 0x99D2, 0x99D2, 0x1FCA, + 0x99D3, 0x99D3, 0x525C, 0x99D4, 0x99D4, 0x2402, 0x99D5, 0x99D5, 0x1F82, + 0x99D6, 0x99D7, 0x525D, 0x99D8, 0x99D8, 0x2408, 0x99D9, 0x99D9, 0x2404, + 0x99DA, 0x99DA, 0x525F, 0x99DB, 0x99DB, 0x2131, 0x99DC, 0x99DC, 0x5260, + 0x99DD, 0x99DD, 0x2184, 0x99DE, 0x99DE, 0x5261, 0x99DF, 0x99DF, 0x2403, + 0x99E0, 0x99E0, 0x5262, 0x99E1, 0x99E1, 0x206E, 0x99E2, 0x99E2, 0x240B, + 0x99E3, 0x99EC, 0x5263, 0x99ED, 0x99ED, 0x1F3F, 0x99EE, 0x99F0, 0x526D, + 0x99F1, 0x99F1, 0x2067, 0x99F2, 0x99FE, 0x5270, 0x99FF, 0x99FF, 0x1FD7, + 0x9A00, 0x9A00, 0x527D, 0x9A01, 0x9A01, 0x1E83, 0x9A02, 0x9A04, 0x527E, + 0x9A05, 0x9A05, 0x240F, 0x9A06, 0x9A0C, 0x5281, 0x9A0D, 0x9A0D, 0x240E, + 0x9A0E, 0x9A0E, 0x20C7, 0x9A0F, 0x9A0F, 0x240D, 0x9A10, 0x9A15, 0x5288, + 0x9A16, 0x9A16, 0x2412, 0x9A17, 0x9A18, 0x528E, 0x9A19, 0x9A19, 0x20B7, + 0x9A1A, 0x9A2A, 0x5290, 0x9A2B, 0x9A2B, 0x23F0, 0x9A2C, 0x9A2C, 0x52A1, + 0x9A2D, 0x9A2D, 0x2411, 0x9A2E, 0x9A2E, 0x2414, 0x9A2F, 0x9A2F, 0x52A2, + 0x9A30, 0x9A30, 0x2170, 0x9A31, 0x9A35, 0x52A3, 0x9A36, 0x9A36, 0x2405, + 0x9A37, 0x9A37, 0x210C, 0x9A38, 0x9A38, 0x2415, 0x9A39, 0x9A3D, 0x52A8, + 0x9A3E, 0x9A3E, 0x2066, 0x9A3F, 0x9A3F, 0x52AD, 0x9A40, 0x9A40, 0x2352, + 0x9A41, 0x9A41, 0x2413, 0x9A42, 0x9A42, 0x2410, 0x9A43, 0x9A44, 0x2416, + 0x9A45, 0x9A45, 0x20F1, 0x9A46, 0x9A49, 0x52AE, 0x9A4A, 0x9A4A, 0x240A, + 0x9A4B, 0x9A4C, 0x52B2, 0x9A4D, 0x9A4D, 0x2409, 0x9A4E, 0x9A4E, 0x52B4, + 0x9A4F, 0x9A4F, 0x2418, 0x9A50, 0x9A54, 0x52B5, 0x9A55, 0x9A55, 0x1FA7, + 0x9A56, 0x9A56, 0x52BA, 0x9A57, 0x9A57, 0x21FC, 0x9A58, 0x9A59, 0x52BB, + 0x9A5A, 0x9A5A, 0x1FC1, 0x9A5B, 0x9A5B, 0x2406, 0x9A5C, 0x9A5E, 0x52BD, + 0x9A5F, 0x9A5F, 0x229C, 0x9A60, 0x9A61, 0x52C0, 0x9A62, 0x9A62, 0x204E, + 0x9A63, 0x9A63, 0x52C2, 0x9A64, 0x9A64, 0x241A, 0x9A65, 0x9A65, 0x2419, + 0x9A66, 0x9A69, 0x52C3, 0x9A6A, 0x9A6A, 0x240C, 0x9A6B, 0x9A6B, 0x52C7, + 0x9A6C, 0x9A6C, 0x0A94, 0x9A6D, 0x9A6D, 0x10E9, 0x9A6E, 0x9A6E, 0x0E85, + 0x9A6F, 0x9A6F, 0x0FDA, 0x9A70, 0x9A70, 0x0500, 0x9A71, 0x9A71, 0x0C7A, + 0x9A72, 0x9A72, 0x52C8, 0x9A73, 0x9A73, 0x047C, 0x9A74, 0x9A74, 0x0A66, + 0x9A75, 0x9A75, 0x17BA, 0x9A76, 0x9A76, 0x0D52, 0x9A77, 0x9A78, 0x17BB, + 0x9A79, 0x9A79, 0x0903, 0x9A7A, 0x9A7A, 0x17BD, 0x9A7B, 0x9A7B, 0x1201, + 0x9A7C, 0x9A7C, 0x0E86, 0x9A7D, 0x9A7D, 0x17BF, 0x9A7E, 0x9A7E, 0x0850, + 0x9A7F, 0x9A7F, 0x17BE, 0x9A80, 0x9A81, 0x17C0, 0x9A82, 0x9A82, 0x0A95, + 0x9A83, 0x9A83, 0x52C9, 0x9A84, 0x9A84, 0x088F, 0x9A85, 0x9A85, 0x17C2, + 0x9A86, 0x9A86, 0x0A8D, 0x9A87, 0x9A87, 0x075E, 0x9A88, 0x9A88, 0x17C3, + 0x9A89, 0x9A89, 0x52CA, 0x9A8A, 0x9A8A, 0x17C4, 0x9A8B, 0x9A8B, 0x04F7, + 0x9A8C, 0x9A8C, 0x1012, 0x9A8D, 0x9A8E, 0x52CB, 0x9A8F, 0x9A8F, 0x0932, + 0x9A90, 0x9A90, 0x17C5, 0x9A91, 0x9A91, 0x0C0E, 0x9A92, 0x9A93, 0x17C6, + 0x9A94, 0x9A95, 0x52CD, 0x9A96, 0x9A96, 0x17C8, 0x9A97, 0x9A97, 0x0BCC, + 0x9A98, 0x9A98, 0x17C9, 0x9A99, 0x9A99, 0x52CF, 0x9A9A, 0x9A9A, 0x0CE0, + 0x9A9B, 0x9A9D, 0x17CA, 0x9A9E, 0x9A9E, 0x1735, 0x9A9F, 0x9AA0, 0x17CD, + 0x9AA1, 0x9AA1, 0x0A89, 0x9AA2, 0x9AA3, 0x17CF, 0x9AA4, 0x9AA4, 0x11E7, + 0x9AA5, 0x9AA5, 0x17D1, 0x9AA6, 0x9AA6, 0x52D0, 0x9AA7, 0x9AA7, 0x17D2, + 0x9AA8, 0x9AA8, 0x0720, 0x9AA9, 0x9AAE, 0x52D1, 0x9AAF, 0x9AAF, 0x1E29, + 0x9AB0, 0x9AB0, 0x1DD3, 0x9AB1, 0x9AB1, 0x1DD2, 0x9AB2, 0x9AB5, 0x52D7, + 0x9AB6, 0x9AB6, 0x1DD6, 0x9AB7, 0x9AB7, 0x1DD4, 0x9AB8, 0x9AB8, 0x0758, + 0x9AB9, 0x9AB9, 0x52DB, 0x9ABA, 0x9ABA, 0x1DD7, 0x9ABB, 0x9ABB, 0x52DC, + 0x9ABC, 0x9ABC, 0x1DD8, 0x9ABD, 0x9ABF, 0x52DD, 0x9AC0, 0x9AC0, 0x1DDA, + 0x9AC1, 0x9AC1, 0x1DD9, 0x9AC2, 0x9AC2, 0x1DDC, 0x9AC3, 0x9AC4, 0x52E0, + 0x9AC5, 0x9AC5, 0x1DDB, 0x9AC6, 0x9ACA, 0x52E2, 0x9ACB, 0x9ACC, 0x1DDD, + 0x9ACD, 0x9ACE, 0x52E7, 0x9ACF, 0x9ACF, 0x2661, 0x9AD0, 0x9AD0, 0x52E9, + 0x9AD1, 0x9AD1, 0x1DDF, 0x9AD2, 0x9AD2, 0x26A4, 0x9AD3, 0x9AD3, 0x0DDD, + 0x9AD4, 0x9AD4, 0x2174, 0x9AD5, 0x9AD5, 0x2663, 0x9AD6, 0x9AD6, 0x2662, + 0x9AD7, 0x9AD7, 0x52EA, 0x9AD8, 0x9AD8, 0x06DA, 0x9AD9, 0x9ADE, 0x52EB, + 0x9ADF, 0x9ADF, 0x1DEC, 0x9AE0, 0x9AE0, 0x52F1, 0x9AE1, 0x9AE1, 0x1DED, + 0x9AE2, 0x9AE5, 0x52F2, 0x9AE6, 0x9AE6, 0x1DEE, 0x9AE7, 0x9AEA, 0x52F6, + 0x9AEB, 0x9AEB, 0x1DF0, 0x9AEC, 0x9AEC, 0x52FA, 0x9AED, 0x9AED, 0x1DF2, + 0x9AEE, 0x9AEE, 0x2675, 0x9AEF, 0x9AEF, 0x1DEF, 0x9AF0, 0x9AF8, 0x52FB, + 0x9AF9, 0x9AF9, 0x1DF3, 0x9AFA, 0x9AFA, 0x5304, 0x9AFB, 0x9AFB, 0x1DF1, + 0x9AFC, 0x9AFF, 0x5305, 0x9B00, 0x9B02, 0x5309, 0x9B03, 0x9B03, 0x1234, + 0x9B04, 0x9B05, 0x530C, 0x9B06, 0x9B06, 0x214C, 0x9B07, 0x9B07, 0x530E, + 0x9B08, 0x9B08, 0x1DF4, 0x9B09, 0x9B0C, 0x530F, 0x9B0D, 0x9B0D, 0x267A, + 0x9B0E, 0x9B0E, 0x5313, 0x9B0F, 0x9B0F, 0x1DF5, 0x9B10, 0x9B12, 0x5314, + 0x9B13, 0x9B13, 0x1DF6, 0x9B14, 0x9B19, 0x5317, 0x9B1A, 0x9B1A, 0x26A0, + 0x9B1B, 0x9B1E, 0x531D, 0x9B1F, 0x9B1F, 0x1DF7, 0x9B20, 0x9B21, 0x5321, + 0x9B22, 0x9B22, 0x2668, 0x9B23, 0x9B23, 0x1DF8, 0x9B24, 0x9B24, 0x5323, + 0x9B25, 0x9B25, 0x1ED0, 0x9B26, 0x9B26, 0x5324, 0x9B27, 0x9B27, 0x2096, + 0x9B28, 0x9B28, 0x5325, 0x9B29, 0x9B29, 0x23CC, 0x9B2A, 0x9B2D, 0x5326, + 0x9B2E, 0x9B2E, 0x23C8, 0x9B2F, 0x9B2F, 0x139B, 0x9B30, 0x9B30, 0x532A, + 0x9B31, 0x9B31, 0x223E, 0x9B32, 0x9B32, 0x1260, 0x9B33, 0x9B3A, 0x532B, + 0x9B3B, 0x9B3B, 0x1773, 0x9B3C, 0x9B3C, 0x0746, 0x9B3D, 0x9B40, 0x5333, + 0x9B41, 0x9B41, 0x098A, 0x9B42, 0x9B42, 0x07FF, 0x9B43, 0x9B43, 0x1DE1, + 0x9B44, 0x9B44, 0x0BE6, 0x9B45, 0x9B45, 0x1DE0, 0x9B46, 0x9B46, 0x5337, + 0x9B47, 0x9B47, 0x1DE2, 0x9B48, 0x9B48, 0x1DE4, 0x9B49, 0x9B49, 0x1DE3, + 0x9B4A, 0x9B4C, 0x5338, 0x9B4D, 0x9B4D, 0x1DE5, 0x9B4E, 0x9B4E, 0x2665, + 0x9B4F, 0x9B4F, 0x0EC9, 0x9B50, 0x9B50, 0x533B, 0x9B51, 0x9B51, 0x1DE6, + 0x9B52, 0x9B53, 0x533C, 0x9B54, 0x9B54, 0x0B0A, 0x9B55, 0x9B57, 0x533E, + 0x9B58, 0x9B58, 0x2664, 0x9B59, 0x9B59, 0x5341, 0x9B5A, 0x9B5A, 0x2239, + 0x9B5B, 0x9B6E, 0x5342, 0x9B6F, 0x9B6F, 0x204A, 0x9B70, 0x9B73, 0x5356, + 0x9B74, 0x9B74, 0x261F, 0x9B75, 0x9B76, 0x535A, 0x9B77, 0x9B77, 0x261E, + 0x9B78, 0x9B80, 0x535C, 0x9B81, 0x9B81, 0x2620, 0x9B82, 0x9B82, 0x5365, + 0x9B83, 0x9B83, 0x2621, 0x9B84, 0x9B8D, 0x5366, 0x9B8E, 0x9B8E, 0x2622, + 0x9B8F, 0x9B8F, 0x5370, 0x9B90, 0x9B90, 0x2627, 0x9B91, 0x9B91, 0x1E39, + 0x9B92, 0x9B92, 0x2625, 0x9B93, 0x9B99, 0x5371, 0x9B9A, 0x9B9A, 0x2629, + 0x9B9B, 0x9B9C, 0x5378, 0x9B9D, 0x9B9D, 0x262E, 0x9B9E, 0x9B9E, 0x262B, + 0x9B9F, 0x9BA9, 0x537A, 0x9BAA, 0x9BAA, 0x262A, 0x9BAB, 0x9BAB, 0x262D, + 0x9BAC, 0x9BAC, 0x5385, 0x9BAD, 0x9BAD, 0x2628, 0x9BAE, 0x9BAE, 0x21B9, + 0x9BAF, 0x9BBF, 0x5386, 0x9BC0, 0x9BC0, 0x2636, 0x9BC1, 0x9BC1, 0x2630, + 0x9BC2, 0x9BC6, 0x5397, 0x9BC7, 0x9BC7, 0x2638, 0x9BC8, 0x9BC8, 0x539C, + 0x9BC9, 0x9BC9, 0x200D, 0x9BCA, 0x9BCA, 0x2637, 0x9BCB, 0x9BD3, 0x539D, + 0x9BD4, 0x9BD4, 0x2645, 0x9BD5, 0x9BD5, 0x53A6, 0x9BD6, 0x9BD6, 0x263A, + 0x9BD7, 0x9BDA, 0x53A7, 0x9BDB, 0x9BDB, 0x2643, 0x9BDC, 0x9BDC, 0x53AB, + 0x9BDD, 0x9BDD, 0x2640, 0x9BDE, 0x9BE0, 0x53AC, 0x9BE1, 0x9BE1, 0x263D, + 0x9BE2, 0x9BE2, 0x2641, 0x9BE3, 0x9BE3, 0x53AF, 0x9BE4, 0x9BE4, 0x263E, + 0x9BE5, 0x9BE6, 0x53B0, 0x9BE7, 0x9BE7, 0x263F, 0x9BE8, 0x9BE8, 0x1FC0, + 0x9BE9, 0x9BE9, 0x53B2, 0x9BEA, 0x9BEB, 0x263B, 0x9BEC, 0x9BEF, 0x53B3, + 0x9BF0, 0x9BF0, 0x2642, 0x9BF1, 0x9BF3, 0x53B7, 0x9BF4, 0x9BF4, 0x2644, + 0x9BF5, 0x9BFC, 0x53BA, 0x9BFD, 0x9BFD, 0x2639, 0x9BFE, 0x9BFE, 0x53C2, + 0x9BFF, 0x9BFF, 0x264C, 0x9C00, 0x9C07, 0x53C3, 0x9C08, 0x9C08, 0x2647, + 0x9C09, 0x9C09, 0x264B, 0x9C0A, 0x9C0C, 0x53CB, 0x9C0D, 0x9C0D, 0x2649, + 0x9C0E, 0x9C0F, 0x53CE, 0x9C10, 0x9C10, 0x2648, 0x9C11, 0x9C11, 0x53D0, + 0x9C12, 0x9C12, 0x264A, 0x9C13, 0x9C13, 0x2108, 0x9C14, 0x9C1F, 0x53D1, + 0x9C20, 0x9C20, 0x264D, 0x9C21, 0x9C22, 0x53DD, 0x9C23, 0x9C23, 0x2634, + 0x9C24, 0x9C24, 0x53DF, 0x9C25, 0x9C25, 0x2651, 0x9C26, 0x9C27, 0x53E0, + 0x9C28, 0x9C28, 0x2650, 0x9C29, 0x9C29, 0x2652, 0x9C2A, 0x9C2C, 0x53E2, + 0x9C2D, 0x9C2D, 0x264F, 0x9C2E, 0x9C30, 0x53E5, 0x9C31, 0x9C31, 0x2632, + 0x9C32, 0x9C32, 0x264E, 0x9C33, 0x9C33, 0x2653, 0x9C34, 0x9C34, 0x53E8, + 0x9C35, 0x9C35, 0x2657, 0x9C36, 0x9C36, 0x53E9, 0x9C37, 0x9C37, 0x2635, + 0x9C38, 0x9C38, 0x53EA, 0x9C39, 0x9C39, 0x2633, 0x9C3A, 0x9C3A, 0x53EB, + 0x9C3B, 0x9C3B, 0x2656, 0x9C3C, 0x9C3D, 0x53EC, 0x9C3E, 0x9C3E, 0x2654, + 0x9C3F, 0x9C44, 0x53EE, 0x9C45, 0x9C45, 0x2658, 0x9C46, 0x9C47, 0x53F4, + 0x9C48, 0x9C48, 0x2655, 0x9C49, 0x9C49, 0x1E4D, 0x9C4A, 0x9C51, 0x53F6, + 0x9C52, 0x9C52, 0x265B, 0x9C53, 0x9C53, 0x53FE, 0x9C54, 0x9C54, 0x265A, + 0x9C55, 0x9C55, 0x53FF, 0x9C56, 0x9C56, 0x2659, 0x9C57, 0x9C57, 0x202E, + 0x9C58, 0x9C58, 0x262F, 0x9C59, 0x9C5C, 0x5400, 0x9C5D, 0x9C5D, 0x2646, + 0x9C5E, 0x9C5E, 0x5404, 0x9C5F, 0x9C5F, 0x2626, 0x9C60, 0x9C66, 0x5405, + 0x9C67, 0x9C67, 0x265C, 0x9C68, 0x9C6C, 0x540C, 0x9C6D, 0x9C6D, 0x262C, + 0x9C6E, 0x9C77, 0x5411, 0x9C78, 0x9C78, 0x2623, 0x9C79, 0x9C79, 0x541B, + 0x9C7A, 0x9C7A, 0x2631, 0x9C7B, 0x9C7B, 0x541C, 0x9C7C, 0x9C7C, 0x10C8, + 0x9C7D, 0x9C7E, 0x541D, 0x9C7F, 0x9C7F, 0x1D89, 0x9C80, 0x9C80, 0x541F, + 0x9C81, 0x9C81, 0x0A5A, 0x9C82, 0x9C82, 0x1D8A, 0x9C83, 0x9C84, 0x5420, + 0x9C85, 0x9C88, 0x1D8B, 0x9C89, 0x9C8A, 0x5422, 0x9C8B, 0x9C8B, 0x1D90, + 0x9C8C, 0x9C8C, 0x5424, 0x9C8D, 0x9C8D, 0x0414, 0x9C8E, 0x9C8E, 0x1D91, + 0x9C8F, 0x9C8F, 0x5425, 0x9C90, 0x9C92, 0x1D92, 0x9C93, 0x9C93, 0x5426, + 0x9C94, 0x9C95, 0x1D95, 0x9C96, 0x9C99, 0x5427, 0x9C9A, 0x9C9B, 0x1D97, + 0x9C9C, 0x9C9C, 0x0F37, 0x9C9D, 0x9C9D, 0x542B, 0x9C9E, 0x9CA3, 0x1D99, + 0x9CA4, 0x9CA4, 0x09DB, 0x9CA5, 0x9CA9, 0x1D9F, 0x9CAA, 0x9CAA, 0x542C, + 0x9CAB, 0x9CAB, 0x1DA4, 0x9CAC, 0x9CAC, 0x542D, 0x9CAD, 0x9CAE, 0x1DA5, + 0x9CAF, 0x9CAF, 0x542E, 0x9CB0, 0x9CB7, 0x1DA7, 0x9CB8, 0x9CB8, 0x08D7, + 0x9CB9, 0x9CB9, 0x542F, 0x9CBA, 0x9CBD, 0x1DAF, 0x9CBE, 0x9CC2, 0x5430, + 0x9CC3, 0x9CC3, 0x0CD5, 0x9CC4, 0x9CC7, 0x1DB3, 0x9CC8, 0x9CC9, 0x5435, + 0x9CCA, 0x9CD0, 0x1DB7, 0x9CD1, 0x9CD2, 0x5437, 0x9CD3, 0x9CD5, 0x1DBE, + 0x9CD6, 0x9CD6, 0x0457, 0x9CD7, 0x9CD9, 0x1DC1, 0x9CDA, 0x9CDB, 0x5439, + 0x9CDC, 0x9CDD, 0x1DC4, 0x9CDE, 0x9CDE, 0x0A24, 0x9CDF, 0x9CDF, 0x1DC6, + 0x9CE0, 0x9CE1, 0x543B, 0x9CE2, 0x9CE2, 0x1DC7, 0x9CE3, 0x9CE4, 0x543D, + 0x9CE5, 0x9CE5, 0x209C, 0x9CE6, 0x9CE8, 0x543F, 0x9CE9, 0x9CE9, 0x2580, + 0x9CEA, 0x9CEB, 0x5442, 0x9CEC, 0x9CEC, 0x22DC, 0x9CED, 0x9CF2, 0x5444, + 0x9CF3, 0x9CF3, 0x1F05, 0x9CF4, 0x9CF4, 0x208B, 0x9CF5, 0x9CF5, 0x544A, + 0x9CF6, 0x9CF6, 0x2581, 0x9CF7, 0x9CFF, 0x544B, 0x9D00, 0x9D05, 0x5454, + 0x9D06, 0x9D06, 0x2583, 0x9D07, 0x9D07, 0x2582, 0x9D08, 0x9D08, 0x545A, + 0x9D09, 0x9D09, 0x21EE, 0x9D0A, 0x9D14, 0x545B, 0x9D15, 0x9D15, 0x2182, + 0x9D16, 0x9D1A, 0x5466, 0x9D1B, 0x9D1B, 0x2243, 0x9D1C, 0x9D1C, 0x546B, + 0x9D1D, 0x9D1D, 0x2587, 0x9D1E, 0x9D1E, 0x546C, 0x9D1F, 0x9D1F, 0x2588, + 0x9D20, 0x9D22, 0x546D, 0x9D23, 0x9D23, 0x2584, 0x9D24, 0x9D25, 0x5470, + 0x9D26, 0x9D26, 0x21FD, 0x9D27, 0x9D27, 0x5472, 0x9D28, 0x9D28, 0x21EF, + 0x9D29, 0x9D2E, 0x5473, 0x9D2F, 0x9D2F, 0x258A, 0x9D30, 0x9D30, 0x258C, + 0x9D31, 0x9D3A, 0x5479, 0x9D3B, 0x9D3B, 0x1F47, 0x9D3C, 0x9D3E, 0x5483, + 0x9D3F, 0x9D3F, 0x1F1D, 0x9D40, 0x9D41, 0x5486, 0x9D42, 0x9D42, 0x258D, + 0x9D43, 0x9D50, 0x5488, 0x9D51, 0x9D51, 0x1FD0, 0x9D52, 0x9D52, 0x2592, + 0x9D53, 0x9D53, 0x258F, 0x9D54, 0x9D5B, 0x5496, 0x9D5C, 0x9D5C, 0x2594, + 0x9D5D, 0x9D5D, 0x1EE0, 0x9D5E, 0x9D5F, 0x549E, 0x9D60, 0x9D60, 0x2591, + 0x9D61, 0x9D61, 0x2595, 0x9D62, 0x9D69, 0x54A0, 0x9D6A, 0x9D6A, 0x2597, + 0x9D6B, 0x9D6B, 0x54A8, 0x9D6C, 0x9D6C, 0x20B6, 0x9D6D, 0x9D6E, 0x54A9, + 0x9D6F, 0x9D6F, 0x2598, 0x9D70, 0x9D71, 0x54AB, 0x9D72, 0x9D72, 0x20F6, + 0x9D73, 0x9D86, 0x54AD, 0x9D87, 0x9D87, 0x2585, 0x9D88, 0x9D88, 0x54C1, + 0x9D89, 0x9D89, 0x2599, 0x9D8A, 0x9D92, 0x54C2, 0x9D93, 0x9D93, 0x2596, + 0x9D94, 0x9D97, 0x54CB, 0x9D98, 0x9D98, 0x259A, 0x9D99, 0x9D99, 0x54CF, + 0x9D9A, 0x9D9A, 0x259B, 0x9D9B, 0x9DA4, 0x54D0, 0x9DA5, 0x9DA5, 0x259D, + 0x9DA6, 0x9DA8, 0x54DA, 0x9DA9, 0x9DA9, 0x259E, 0x9DAA, 0x9DAE, 0x54DD, + 0x9DAF, 0x9DAF, 0x234C, 0x9DB0, 0x9DB3, 0x54E2, 0x9DB4, 0x9DB4, 0x1F44, + 0x9DB5, 0x9DBA, 0x54E6, 0x9DBB, 0x9DBB, 0x2660, 0x9DBC, 0x9DBC, 0x25A0, + 0x9DBD, 0x9DBF, 0x54EC, 0x9DC0, 0x9DC0, 0x259C, 0x9DC1, 0x9DC1, 0x54EF, + 0x9DC2, 0x9DC2, 0x259F, 0x9DC3, 0x9DC3, 0x54F0, 0x9DC4, 0x9DC4, 0x1F6C, + 0x9DC5, 0x9DD2, 0x54F1, 0x9DD3, 0x9DD3, 0x25A2, 0x9DD4, 0x9DD6, 0x54FF, + 0x9DD7, 0x9DD7, 0x20AE, 0x9DD8, 0x9DD8, 0x5502, 0x9DD9, 0x9DD9, 0x258B, + 0x9DDA, 0x9DDA, 0x25A3, 0x9DDB, 0x9DE4, 0x5503, 0x9DE5, 0x9DE5, 0x2589, + 0x9DE6, 0x9DE6, 0x25A5, 0x9DE7, 0x9DEE, 0x550D, 0x9DEF, 0x9DEF, 0x25A4, + 0x9DF0, 0x9DF1, 0x5515, 0x9DF2, 0x9DF2, 0x25A6, 0x9DF3, 0x9DF3, 0x2593, + 0x9DF4, 0x9DF7, 0x5517, 0x9DF8, 0x9DF8, 0x25A7, 0x9DF9, 0x9DF9, 0x2222, + 0x9DFA, 0x9DFA, 0x25A9, 0x9DFB, 0x9DFF, 0x551B, 0x9E00, 0x9E0B, 0x5520, + 0x9E0C, 0x9E0C, 0x25A8, 0x9E0D, 0x9E14, 0x552C, 0x9E15, 0x9E15, 0x2586, + 0x9E16, 0x9E19, 0x5534, 0x9E1A, 0x9E1A, 0x25A1, 0x9E1B, 0x9E1B, 0x25AA, + 0x9E1C, 0x9E1C, 0x5538, 0x9E1D, 0x9E1D, 0x2590, 0x9E1E, 0x9E1E, 0x258E, + 0x9E1F, 0x9E1F, 0x0B54, 0x9E20, 0x9E20, 0x1B35, 0x9E21, 0x9E21, 0x0819, + 0x9E22, 0x9E22, 0x1B36, 0x9E23, 0x9E23, 0x0AFE, 0x9E24, 0x9E24, 0x5539, + 0x9E25, 0x9E25, 0x0B79, 0x9E26, 0x9E26, 0x0FE4, 0x9E27, 0x9E27, 0x553A, + 0x9E28, 0x9E2C, 0x1B37, 0x9E2D, 0x9E2D, 0x0FE5, 0x9E2E, 0x9E2E, 0x553B, + 0x9E2F, 0x9E2F, 0x1015, 0x9E30, 0x9E30, 0x553C, 0x9E31, 0x9E31, 0x1B3D, + 0x9E32, 0x9E32, 0x1B3C, 0x9E33, 0x9E33, 0x10EA, 0x9E34, 0x9E34, 0x553D, + 0x9E35, 0x9E35, 0x0E83, 0x9E36, 0x9E36, 0x1B3E, 0x9E37, 0x9E37, 0x1B40, + 0x9E38, 0x9E38, 0x1B3F, 0x9E39, 0x9E3A, 0x1B41, 0x9E3B, 0x9E3C, 0x553E, + 0x9E3D, 0x9E3D, 0x06E6, 0x9E3E, 0x9E3E, 0x1B43, 0x9E3F, 0x9E3F, 0x079F, + 0x9E40, 0x9E40, 0x5540, 0x9E41, 0x9E42, 0x1B44, 0x9E43, 0x9E43, 0x0918, + 0x9E44, 0x9E44, 0x1B46, 0x9E45, 0x9E45, 0x062B, 0x9E46, 0x9E49, 0x1B47, + 0x9E4A, 0x9E4A, 0x0C90, 0x9E4B, 0x9E4C, 0x1B4B, 0x9E4D, 0x9E4D, 0x5541, + 0x9E4E, 0x9E4E, 0x1B4D, 0x9E4F, 0x9E4F, 0x0BB5, 0x9E50, 0x9E50, 0x5542, + 0x9E51, 0x9E51, 0x1B4E, 0x9E52, 0x9E54, 0x5543, 0x9E55, 0x9E55, 0x1B4F, + 0x9E56, 0x9E56, 0x5546, 0x9E57, 0x9E57, 0x1B50, 0x9E58, 0x9E58, 0x1DD5, + 0x9E59, 0x9E59, 0x5547, 0x9E5A, 0x9E5C, 0x1B51, 0x9E5D, 0x9E5D, 0x5548, + 0x9E5E, 0x9E5E, 0x1B54, 0x9E5F, 0x9E62, 0x5549, 0x9E63, 0x9E63, 0x1B55, + 0x9E64, 0x9E64, 0x078E, 0x9E65, 0x9E65, 0x554D, 0x9E66, 0x9E6C, 0x1B56, + 0x9E6D, 0x9E6D, 0x1B5E, 0x9E6E, 0x9E6F, 0x554E, 0x9E70, 0x9E70, 0x108A, + 0x9E71, 0x9E71, 0x1B5D, 0x9E72, 0x9E72, 0x5550, 0x9E73, 0x9E73, 0x1B5F, + 0x9E74, 0x9E74, 0x5551, 0x9E75, 0x9E75, 0x2688, 0x9E76, 0x9E78, 0x5552, + 0x9E79, 0x9E79, 0x269E, 0x9E7A, 0x9E7A, 0x25FB, 0x9E7B, 0x9E7B, 0x5555, + 0x9E7C, 0x9E7C, 0x1F8C, 0x9E7D, 0x9E7D, 0x21F4, 0x9E7E, 0x9E7E, 0x1D16, + 0x9E7F, 0x9E7F, 0x0A60, 0x9E80, 0x9E81, 0x5556, 0x9E82, 0x9E82, 0x1DFC, + 0x9E83, 0x9E86, 0x5558, 0x9E87, 0x9E88, 0x1DFD, 0x9E89, 0x9E8A, 0x555C, + 0x9E8B, 0x9E8B, 0x1DFF, 0x9E8C, 0x9E91, 0x555E, 0x9E92, 0x9E92, 0x1E00, + 0x9E93, 0x9E93, 0x0A5B, 0x9E94, 0x9E96, 0x5564, 0x9E97, 0x9E97, 0x200F, + 0x9E98, 0x9E9C, 0x5567, 0x9E9D, 0x9E9D, 0x1E02, 0x9E9E, 0x9E9E, 0x556C, + 0x9E9F, 0x9E9F, 0x1E03, 0x9EA0, 0x9EA4, 0x556D, 0x9EA5, 0x9EA5, 0x2071, + 0x9EA6, 0x9EA6, 0x0A9A, 0x9EA7, 0x9EA8, 0x5572, 0x9EA9, 0x9EA9, 0x25F7, + 0x9EAA, 0x9EAE, 0x5574, 0x9EAF, 0x9EAF, 0x2696, 0x9EB0, 0x9EB3, 0x5579, + 0x9EB4, 0x9EB4, 0x1CEE, 0x9EB5, 0x9EB5, 0x268F, 0x9EB6, 0x9EB7, 0x557D, + 0x9EB8, 0x9EB8, 0x1CED, 0x9EB9, 0x9EBA, 0x557F, 0x9EBB, 0x9EBB, 0x0A90, + 0x9EBC, 0x9EBC, 0x5581, 0x9EBD, 0x9EBE, 0x1DF9, 0x9EBF, 0x9EC3, 0x5582, + 0x9EC4, 0x9EC4, 0x07DB, 0x9EC5, 0x9EC8, 0x5587, 0x9EC9, 0x9EC9, 0x12F8, + 0x9ECA, 0x9ECB, 0x558B, 0x9ECC, 0x9ECC, 0x22DA, 0x9ECD, 0x9ECD, 0x0D89, + 0x9ECE, 0x9ECE, 0x09D3, 0x9ECF, 0x9ECF, 0x1B2A, 0x9ED0, 0x9ED0, 0x558D, + 0x9ED1, 0x9ED1, 0x0791, 0x9ED2, 0x9ED3, 0x558E, 0x9ED4, 0x9ED4, 0x0C2A, + 0x9ED5, 0x9ED7, 0x5590, 0x9ED8, 0x9ED8, 0x0B0F, 0x9ED9, 0x9EDA, 0x5593, + 0x9EDB, 0x9EDD, 0x1E04, 0x9EDE, 0x9EDE, 0x1EC1, 0x9EDF, 0x9EDF, 0x1E08, + 0x9EE0, 0x9EE0, 0x1E07, 0x9EE1, 0x9EE1, 0x5595, 0x9EE2, 0x9EE2, 0x1E09, + 0x9EE3, 0x9EE4, 0x5596, 0x9EE5, 0x9EE5, 0x1E0C, 0x9EE6, 0x9EE6, 0x5598, + 0x9EE7, 0x9EE7, 0x1E0B, 0x9EE8, 0x9EE8, 0x1EB3, 0x9EE9, 0x9EE9, 0x1E0A, + 0x9EEA, 0x9EEA, 0x1E0D, 0x9EEB, 0x9EEE, 0x5599, 0x9EEF, 0x9EEF, 0x1E0E, + 0x9EF0, 0x9EF1, 0x559D, 0x9EF2, 0x9EF2, 0x266A, 0x9EF3, 0x9EF3, 0x559F, + 0x9EF4, 0x9EF4, 0x268A, 0x9EF5, 0x9EF6, 0x55A0, 0x9EF7, 0x9EF7, 0x2669, + 0x9EF8, 0x9EF8, 0x55A2, 0x9EF9, 0x9EF9, 0x1A55, 0x9EFA, 0x9EFA, 0x55A3, + 0x9EFB, 0x9EFC, 0x1A56, 0x9EFD, 0x9EFD, 0x2618, 0x9EFE, 0x9EFE, 0x1D76, + 0x9EFF, 0x9EFF, 0x2619, 0x9F00, 0x9F08, 0x55A4, 0x9F09, 0x9F09, 0x261A, + 0x9F0A, 0x9F0A, 0x55AD, 0x9F0B, 0x9F0B, 0x1D77, 0x9F0C, 0x9F0C, 0x55AE, + 0x9F0D, 0x9F0D, 0x1D78, 0x9F0E, 0x9F0E, 0x05E5, 0x9F0F, 0x9F0F, 0x55AF, + 0x9F10, 0x9F10, 0x1274, 0x9F11, 0x9F12, 0x55B0, 0x9F13, 0x9F13, 0x071D, + 0x9F14, 0x9F14, 0x55B2, 0x9F15, 0x9F15, 0x2673, 0x9F16, 0x9F16, 0x55B3, + 0x9F17, 0x9F17, 0x1271, 0x9F18, 0x9F18, 0x55B4, 0x9F19, 0x9F19, 0x13DF, + 0x9F1A, 0x9F1F, 0x55B5, 0x9F20, 0x9F20, 0x0D8A, 0x9F21, 0x9F21, 0x55BB, + 0x9F22, 0x9F22, 0x1E0F, 0x9F23, 0x9F2B, 0x55BC, 0x9F2C, 0x9F2C, 0x1E10, + 0x9F2D, 0x9F2E, 0x55C5, 0x9F2F, 0x9F2F, 0x1E11, 0x9F30, 0x9F36, 0x55C7, + 0x9F37, 0x9F37, 0x1E13, 0x9F38, 0x9F38, 0x55CE, 0x9F39, 0x9F39, 0x1E12, + 0x9F3A, 0x9F3A, 0x55CF, 0x9F3B, 0x9F3B, 0x0430, 0x9F3C, 0x9F3C, 0x55D0, + 0x9F3D, 0x9F3E, 0x1E14, 0x9F3F, 0x9F43, 0x55D1, 0x9F44, 0x9F44, 0x1E16, + 0x9F45, 0x9F49, 0x55D6, 0x9F4A, 0x9F4A, 0x20C6, 0x9F4B, 0x9F4B, 0x226B, + 0x9F4C, 0x9F4E, 0x55DB, 0x9F4F, 0x9F4F, 0x24D3, 0x9F50, 0x9F50, 0x0C0A, + 0x9F51, 0x9F51, 0x19C2, 0x9F52, 0x9F52, 0x1E86, 0x9F53, 0x9F53, 0x55DE, + 0x9F54, 0x9F54, 0x260F, 0x9F55, 0x9F58, 0x55DF, 0x9F59, 0x9F59, 0x2611, + 0x9F5A, 0x9F5B, 0x55E3, 0x9F5C, 0x9F5C, 0x2613, 0x9F5D, 0x9F5E, 0x55E5, + 0x9F5F, 0x9F5F, 0x2610, 0x9F60, 0x9F60, 0x2612, 0x9F61, 0x9F61, 0x2030, + 0x9F62, 0x9F62, 0x55E7, 0x9F63, 0x9F63, 0x2671, 0x9F64, 0x9F65, 0x55E8, + 0x9F66, 0x9F66, 0x2614, 0x9F67, 0x9F69, 0x55EA, 0x9F6A, 0x9F6A, 0x2616, + 0x9F6B, 0x9F6B, 0x55ED, 0x9F6C, 0x9F6C, 0x2615, 0x9F6D, 0x9F71, 0x55EE, + 0x9F72, 0x9F72, 0x20F2, 0x9F73, 0x9F76, 0x55F3, 0x9F77, 0x9F77, 0x2617, + 0x9F78, 0x9F7E, 0x55F7, 0x9F7F, 0x9F7F, 0x0502, 0x9F80, 0x9F80, 0x1D6D, + 0x9F81, 0x9F82, 0x55FE, 0x9F83, 0x9F83, 0x1D6E, 0x9F84, 0x9F84, 0x0A2D, + 0x9F85, 0x9F8A, 0x1D6F, 0x9F8B, 0x9F8B, 0x0C7E, 0x9F8C, 0x9F8C, 0x1D75, + 0x9F8D, 0x9F8D, 0x2037, 0x9F8E, 0x9F8F, 0x5600, 0x9F90, 0x9F90, 0x20B3, + 0x9F91, 0x9F93, 0x5602, 0x9F94, 0x9F94, 0x1F22, 0x9F95, 0x9F95, 0x24ED, + 0x9F96, 0x9F98, 0x5605, 0x9F99, 0x9F99, 0x0A43, 0x9F9A, 0x9F9A, 0x0701, + 0x9F9B, 0x9F9B, 0x1A54, 0x9F9C, 0x9F9C, 0x1F34, 0x9F9D, 0x9F9E, 0x5608, + 0x9F9F, 0x9F9F, 0x0743, 0x9FA0, 0x9FA0, 0x12F3, 0x9FA1, 0x9FA5, 0x560A, + 0xE816, 0xE818, 0x5620, 0xE81E, 0xE81E, 0x5628, 0xE826, 0xE826, 0x5630, + 0xE82B, 0xE82C, 0x5635, 0xE831, 0xE832, 0x563B, 0xE83B, 0xE83B, 0x5645, + 0xE843, 0xE843, 0x564D, 0xE854, 0xE855, 0x565E, 0xE864, 0xE864, 0x566E, + 0xF92C, 0xF92C, 0x560F, 0xFA0D, 0xFA0F, 0x5610, 0xFA11, 0xFA11, 0x5613, + 0xFA13, 0xFA14, 0x5614, 0xFA18, 0xFA18, 0x5616, 0xFA1F, 0xFA21, 0x5617, + 0xFA23, 0xFA24, 0x561A, 0xFA27, 0xFA29, 0x561C, 0xFE30, 0xFE30, 0x271D, + 0xFE49, 0xFE52, 0x272B, 0xFE54, 0xFE57, 0x2735, 0xFE59, 0xFE66, 0x2739, + 0xFE68, 0xFE6B, 0x2747, 0xFF01, 0xFF03, 0x0106, 0xFF04, 0xFF04, 0x00A6, + 0xFF05, 0xFF5D, 0x010A, 0xFF5E, 0xFF5E, 0x006A, 0xFFE0, 0xFFE1, 0x00A8, + 0xFFE2, 0xFFE2, 0x271E, 0xFFE3, 0xFFE3, 0x0163, 0xFFE4, 0xFFE4, 0x271F, + 0xFFE5, 0xFFE5, 0x0109, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp new file mode 100644 index 0000000000..5d53067e26 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp @@ -0,0 +1,18 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +const FX_WORD g_FXCMAP_UniGB_UCS2_V_4[24 * 3] = { + 0x2014, 0x2014, 0x0256, 0x2026, 0x2026, 0x0257, 0x2225, 0x2225, 0x1E1C, + 0x3001, 0x3001, 0x023F, 0x3002, 0x3002, 0x023E, 0x3008, 0x300F, 0x0248, + 0x3010, 0x3011, 0x0252, 0x3013, 0x3013, 0x1E1A, 0x3014, 0x3015, 0x0246, + 0x3016, 0x3017, 0x0250, 0xFF01, 0xFF01, 0x0242, 0xFF08, 0xFF09, 0x0244, + 0xFF0C, 0xFF0C, 0x023D, 0xFF0E, 0xFF0E, 0x1E1B, 0xFF1A, 0xFF1B, 0x0240, + 0xFF1D, 0xFF1D, 0x1E1C, 0xFF1F, 0xFF1F, 0x0243, 0xFF3B, 0xFF3B, 0x1E1D, + 0xFF3D, 0xFF3D, 0x1E1E, 0xFF3F, 0xFF3F, 0x0258, 0xFF5B, 0xFF5B, 0x0254, + 0xFF5D, 0xFF5D, 0x0255, 0xFF5E, 0xFF5E, 0x1E18, 0xFFE3, 0xFFE3, 0x1E1F, +}; diff --git a/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp new file mode 100644 index 0000000000..4b34235a64 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp @@ -0,0 +1,55 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" + +#include "core/fpdfapi/fpdf_cmaps/cmap_int.h" +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). + +static const FXCMAP_CMap g_FXCMAP_GB1_cmaps[] = { + {"GB-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GB_EUC_H_0, 90, FXCMAP_CMap::None, + NULL, 0, 0}, + {"GB-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GB_EUC_V_0, 20, FXCMAP_CMap::None, + NULL, 0, -1}, + {"GBpc-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBpc_EUC_H_0, 91, + FXCMAP_CMap::None, NULL, 0, 0}, + {"GBpc-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBpc_EUC_V_0, 20, + FXCMAP_CMap::None, NULL, 0, -1}, + {"GBK-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBK_EUC_H_2, 4071, + FXCMAP_CMap::None, NULL, 0, 0}, + {"GBK-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBK_EUC_V_2, 20, + FXCMAP_CMap::None, NULL, 0, -1}, + {"GBKp-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBKp_EUC_H_2, 4070, + FXCMAP_CMap::None, NULL, 0, -2}, + {"GBKp-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBKp_EUC_V_2, 20, + FXCMAP_CMap::None, NULL, 0, -1}, + {"GBK2K-H", FXCMAP_CMap::Range, g_FXCMAP_GBK2K_H_5, 4071, + FXCMAP_CMap::Single, g_FXCMAP_GBK2K_H_5_DWord, 1017, -4}, + {"GBK2K-V", FXCMAP_CMap::Range, g_FXCMAP_GBK2K_V_5, 41, FXCMAP_CMap::None, + NULL, 0, -1}, + {"UniGB-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_H_4, 13825, + FXCMAP_CMap::None, NULL, 0, 0}, + {"UniGB-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_V_4, 24, + FXCMAP_CMap::None, NULL, 0, -1}, + {"UniGB-UTF16-H", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_H_4, 13825, + FXCMAP_CMap::None, NULL, 0, 0}, + {"UniGB-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_V_4, 24, + FXCMAP_CMap::None, NULL, 0, -1}, +}; + +void CPDF_ModuleMgr::LoadEmbeddedGB1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->m_EmbeddedCharsets[CIDSET_GB1].m_pMapList = g_FXCMAP_GB1_cmaps; + pFontGlobals->m_EmbeddedCharsets[CIDSET_GB1].m_Count = + FX_ArraySize(g_FXCMAP_GB1_cmaps); + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_GB1].m_pMap = + g_FXCMAP_GB1CID2Unicode_5; + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_GB1].m_Count = 30284; +} diff --git a/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h new file mode 100644 index 0000000000..348783de9d --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h @@ -0,0 +1,27 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_ +#define CORE_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_ + +#include "core/include/fxcrt/fx_system.h" // For FX_WORD. + +extern const FX_WORD g_FXCMAP_GB_EUC_H_0[]; +extern const FX_WORD g_FXCMAP_GB_EUC_V_0[]; +extern const FX_WORD g_FXCMAP_GBpc_EUC_H_0[]; +extern const FX_WORD g_FXCMAP_GBpc_EUC_V_0[]; +extern const FX_WORD g_FXCMAP_GBK_EUC_H_2[]; +extern const FX_WORD g_FXCMAP_GBK_EUC_V_2[]; +extern const FX_WORD g_FXCMAP_GBKp_EUC_H_2[]; +extern const FX_WORD g_FXCMAP_GBKp_EUC_V_2[]; +extern const FX_WORD g_FXCMAP_GBK2K_H_5[]; +extern const FX_WORD g_FXCMAP_GBK2K_H_5_DWord[]; +extern const FX_WORD g_FXCMAP_GBK2K_V_5[]; +extern const FX_WORD g_FXCMAP_UniGB_UCS2_H_4[]; +extern const FX_WORD g_FXCMAP_UniGB_UCS2_V_4[]; +extern const FX_WORD g_FXCMAP_GB1CID2Unicode_5[]; + +#endif // CORE_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_ diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp new file mode 100644 index 0000000000..19b3976a07 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp @@ -0,0 +1,84 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_83pv_RKSJ_H_1[222 * 3] = { + 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x0061, 0x00A0, 0x00DF, 0x0146, + 0x00FD, 0x00FD, 0x0098, 0x00FE, 0x00FE, 0x00E4, 0x00FF, 0x00FF, 0x007C, + 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, + 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, + 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, + 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, + 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, + 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, + 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, + 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, + 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, + 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, + 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, + 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, + 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, + 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, + 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, + 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, + 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8540, 0x857E, 0x00E8, + 0x8580, 0x8580, 0x0186, 0x8581, 0x859E, 0x0128, 0x859F, 0x85DD, 0x0147, + 0x85DE, 0x85FC, 0x0187, 0x8640, 0x867E, 0x01A6, 0x8680, 0x8691, 0x01E5, + 0x8692, 0x8692, 0x0127, 0x8693, 0x869E, 0x01F7, 0x86A2, 0x86ED, 0x1D37, + 0x8740, 0x875D, 0x1D83, 0x875F, 0x8775, 0x1DA1, 0x8780, 0x878F, 0x1DB8, + 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9, 0x8792, 0x8792, 0x0301, + 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300, 0x879B, 0x879C, 0x1DCF, + 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3, 0x8980, 0x89FC, 0x0502, + 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE, 0x8B40, 0x8B7E, 0x063B, + 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7, 0x8C80, 0x8CFC, 0x0736, + 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2, 0x8E40, 0x8E7E, 0x086F, + 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B, 0x8F80, 0x8FFC, 0x096A, + 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26, 0x9140, 0x917E, 0x0AA3, + 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F, 0x9280, 0x92FC, 0x0B9E, + 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A, 0x9440, 0x947E, 0x0CD7, + 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93, 0x9580, 0x95FC, 0x0DD2, + 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E, 0x9740, 0x977E, 0x0F0B, + 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7, 0x989F, 0x98FC, 0x0FFA, + 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A7E, 0x1114, + 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0, 0x9B80, 0x9BFC, 0x120F, + 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB, 0x9D40, 0x9D7E, 0x1348, + 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404, 0x9E80, 0x9EFC, 0x1443, + 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF, 0xE040, 0xE07E, 0x157C, + 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638, 0xE180, 0xE1FC, 0x1677, + 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733, 0xE340, 0xE37E, 0x17B0, + 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C, 0xE480, 0xE4FC, 0x18AB, + 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967, 0xE640, 0xE67E, 0x19E4, + 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0, 0xE780, 0xE7FC, 0x1ADF, + 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B, 0xE940, 0xE97E, 0x1C18, + 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4, 0xEA80, 0xEAA2, 0x1D13, + 0xEAA3, 0xEAA4, 0x205C, 0xEB40, 0xEB40, 0x0279, 0xEB41, 0xEB42, 0x1ECF, + 0xEB43, 0xEB4F, 0x027C, 0xEB50, 0xEB51, 0x1ED1, 0xEB52, 0xEB5A, 0x028B, + 0xEB5B, 0xEB5D, 0x1ED3, 0xEB5E, 0xEB5F, 0x0297, 0xEB60, 0xEB64, 0x1ED6, + 0xEB65, 0xEB68, 0x029E, 0xEB69, 0xEB7A, 0x1EDB, 0xEB7B, 0xEB7E, 0x02B4, + 0xEB80, 0xEB80, 0x02B8, 0xEB81, 0xEB81, 0x1EED, 0xEB82, 0xEBAC, 0x02BA, + 0xEBB8, 0xEBBF, 0x02E5, 0xEBC8, 0xEBCE, 0x02ED, 0xEBDA, 0xEBE8, 0x02F4, + 0xEBF0, 0xEBF7, 0x0303, 0xEBFC, 0xEBFC, 0x030B, 0xEC4F, 0xEC58, 0x030C, + 0xEC60, 0xEC79, 0x0316, 0xEC81, 0xEC9A, 0x0330, 0xEC9F, 0xEC9F, 0x1EEE, + 0xECA0, 0xECA0, 0x034B, 0xECA1, 0xECA1, 0x1EEF, 0xECA2, 0xECA2, 0x034D, + 0xECA3, 0xECA3, 0x1EF0, 0xECA4, 0xECA4, 0x034F, 0xECA5, 0xECA5, 0x1EF1, + 0xECA6, 0xECA6, 0x0351, 0xECA7, 0xECA7, 0x1EF2, 0xECA8, 0xECC0, 0x0353, + 0xECC1, 0xECC1, 0x1EF3, 0xECC2, 0xECE0, 0x036D, 0xECE1, 0xECE1, 0x1EF4, + 0xECE2, 0xECE2, 0x038D, 0xECE3, 0xECE3, 0x1EF5, 0xECE4, 0xECE4, 0x038F, + 0xECE5, 0xECE5, 0x1EF6, 0xECE6, 0xECEB, 0x0391, 0xECEC, 0xECEC, 0x1EF7, + 0xECED, 0xECF1, 0x0398, 0xED40, 0xED40, 0x1EF8, 0xED41, 0xED41, 0x039E, + 0xED42, 0xED42, 0x1EF9, 0xED43, 0xED43, 0x03A0, 0xED44, 0xED44, 0x1EFA, + 0xED45, 0xED45, 0x03A2, 0xED46, 0xED46, 0x1EFB, 0xED47, 0xED47, 0x03A4, + 0xED48, 0xED48, 0x1EFC, 0xED49, 0xED61, 0x03A6, 0xED62, 0xED62, 0x1EFD, + 0xED63, 0xED7E, 0x03C0, 0xED80, 0xED82, 0x03DC, 0xED83, 0xED83, 0x1EFE, + 0xED84, 0xED84, 0x03E0, 0xED85, 0xED85, 0x1EFF, 0xED86, 0xED86, 0x03E2, + 0xED87, 0xED87, 0x1F00, 0xED88, 0xED8D, 0x03E4, 0xED8E, 0xED8E, 0x1F01, + 0xED8F, 0xED94, 0x03EB, 0xED95, 0xED96, 0x1F02, 0xED9F, 0xEDB6, 0x03F3, + 0xEDBF, 0xEDD6, 0x040B, 0xEE40, 0xEE5D, 0x1D83, 0xEE5F, 0xEE6E, 0x1F04, + 0xEE6F, 0xEE75, 0x1DB1, 0xEE80, 0xEE81, 0x1F14, 0xEE82, 0xEE8F, 0x1DBA, + 0xEE90, 0xEE90, 0x02FA, 0xEE91, 0xEE91, 0x02F9, 0xEE92, 0xEE92, 0x0301, + 0xEE93, 0xEE99, 0x1DC8, 0xEE9A, 0xEE9A, 0x0300, 0xEE9B, 0xEE9C, 0x1DCF, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp new file mode 100644 index 0000000000..d38111784e --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp @@ -0,0 +1,67 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_90ms_RKSJ_H_2[171 * 3] = { + 0x0020, 0x007D, 0x00E7, 0x007E, 0x007E, 0x0277, 0x00A0, 0x00DF, 0x0146, + 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, + 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, + 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, + 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, + 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, + 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, + 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, + 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, + 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, + 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, + 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, + 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, + 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, + 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, + 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, + 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, + 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8740, 0x875D, 0x1D83, + 0x875F, 0x8760, 0x1DA1, 0x8761, 0x8761, 0x1F66, 0x8762, 0x8762, 0x1DA4, + 0x8763, 0x8763, 0x1F68, 0x8764, 0x8764, 0x1DA6, 0x8765, 0x8765, 0x1F6A, + 0x8766, 0x8767, 0x1DA8, 0x8768, 0x8768, 0x1F6C, 0x8769, 0x876A, 0x1DAB, + 0x876B, 0x876B, 0x1F6B, 0x876C, 0x876D, 0x1DAE, 0x876E, 0x876E, 0x1F6F, + 0x876F, 0x8775, 0x1DB1, 0x877E, 0x877E, 0x2083, 0x8780, 0x8783, 0x1DB8, + 0x8784, 0x8784, 0x1F77, 0x8785, 0x878F, 0x1DBD, 0x8790, 0x8790, 0x02FA, + 0x8791, 0x8791, 0x02F9, 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, + 0x879A, 0x879A, 0x0300, 0x879B, 0x879C, 0x1DCF, 0x889F, 0x88FC, 0x0465, + 0x8940, 0x897E, 0x04C3, 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, + 0x8A80, 0x8AFC, 0x05BE, 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, + 0x8C40, 0x8C7E, 0x06F7, 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, + 0x8D80, 0x8DFC, 0x07F2, 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, + 0x8F40, 0x8F7E, 0x092B, 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, + 0x9080, 0x90FC, 0x0A26, 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, + 0x9240, 0x927E, 0x0B5F, 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, + 0x9380, 0x93FC, 0x0C5A, 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, + 0x9540, 0x957E, 0x0D93, 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, + 0x9680, 0x96FC, 0x0E8E, 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, + 0x9840, 0x9872, 0x0FC7, 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, + 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, + 0x9B40, 0x9B7E, 0x11D0, 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, + 0x9C80, 0x9CFC, 0x12CB, 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, + 0x9E40, 0x9E7E, 0x1404, 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, + 0x9F80, 0x9FFC, 0x14FF, 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, + 0xE140, 0xE17E, 0x1638, 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, + 0xE280, 0xE2FC, 0x1733, 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, + 0xE440, 0xE47E, 0x186C, 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, + 0xE580, 0xE5FC, 0x1967, 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, + 0xE740, 0xE77E, 0x1AA0, 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, + 0xE880, 0xE8FC, 0x1B9B, 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, + 0xEA40, 0xEA7E, 0x1CD4, 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, + 0xED40, 0xED7E, 0x20A7, 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, + 0xEDB5, 0xEDFC, 0x211A, 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, + 0xEEEF, 0xEEF8, 0x1F9C, 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45, + 0xFA40, 0xFA49, 0x1F9C, 0xFA4A, 0xFA53, 0x1D97, 0xFA54, 0xFA54, 0x02EF, + 0xFA55, 0xFA57, 0x1F45, 0xFA58, 0xFA58, 0x1DC2, 0xFA59, 0xFA59, 0x1DBA, + 0xFA5A, 0xFA5A, 0x1F77, 0xFA5B, 0xFA5B, 0x0300, 0xFA5C, 0xFA7E, 0x20A7, + 0xFA80, 0xFACF, 0x20CA, 0xFAD0, 0xFAD0, 0x07C9, 0xFAD1, 0xFAFC, 0x211A, + 0xFB40, 0xFB7E, 0x2146, 0xFB80, 0xFBFC, 0x2185, 0xFC40, 0xFC4B, 0x2202, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp new file mode 100644 index 0000000000..31a9ae55e2 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp @@ -0,0 +1,36 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_90ms_RKSJ_V_2[78 * 3] = { + 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, + 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6, + 0x8169, 0x817A, 0x1EDB, 0x8181, 0x8181, 0x1EED, 0x81A8, 0x81A8, 0x02E3, + 0x81A9, 0x81A9, 0x02E2, 0x81AA, 0x81AB, 0x02E0, 0x81AC, 0x81AC, 0x204E, + 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0, + 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3, + 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6, + 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9, + 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC, + 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF, + 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02, + 0x849F, 0x849F, 0x1D39, 0x84A0, 0x84A0, 0x1D37, 0x84A1, 0x84A1, 0x1D47, + 0x84A2, 0x84A2, 0x1D4F, 0x84A3, 0x84A3, 0x1D4B, 0x84A4, 0x84A4, 0x1D43, + 0x84A5, 0x84A5, 0x1D63, 0x84A6, 0x84A6, 0x1D5B, 0x84A7, 0x84A7, 0x1D6B, + 0x84A8, 0x84A8, 0x1D53, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D3A, + 0x84AB, 0x84AB, 0x1D38, 0x84AC, 0x84AC, 0x1D4A, 0x84AD, 0x84AD, 0x1D52, + 0x84AE, 0x84AE, 0x1D4E, 0x84AF, 0x84AF, 0x1D46, 0x84B0, 0x84B0, 0x1D6A, + 0x84B1, 0x84B1, 0x1D62, 0x84B2, 0x84B2, 0x1D72, 0x84B3, 0x84B3, 0x1D5A, + 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D66, 0x84B6, 0x84B6, 0x1D5F, + 0x84B7, 0x84B7, 0x1D6E, 0x84B8, 0x84B8, 0x1D57, 0x84B9, 0x84B9, 0x1D79, + 0x84BA, 0x84BA, 0x1D67, 0x84BB, 0x84BB, 0x1D5C, 0x84BC, 0x84BC, 0x1D6F, + 0x84BD, 0x84BD, 0x1D54, 0x84BE, 0x84BE, 0x1D76, 0x875F, 0x8760, 0x1F04, + 0x8761, 0x8761, 0x2089, 0x8762, 0x8762, 0x1F07, 0x8763, 0x8763, 0x2093, + 0x8764, 0x8764, 0x1F09, 0x8765, 0x8765, 0x2092, 0x8766, 0x8767, 0x1F0B, + 0x8768, 0x8768, 0x2098, 0x8769, 0x876A, 0x1F0E, 0x876B, 0x876B, 0x209C, + 0x876C, 0x876D, 0x1F11, 0x876E, 0x876E, 0x209D, 0x8780, 0x8781, 0x1F14, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp new file mode 100644 index 0000000000..dd930ea66d --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp @@ -0,0 +1,67 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_90msp_RKSJ_H_2[170 * 3] = { + 0x0020, 0x007E, 0x0001, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279, + 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, 0x81C8, 0x81CE, 0x02ED, + 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, 0x81FC, 0x81FC, 0x030B, + 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330, + 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, 0x8380, 0x8396, 0x03DC, + 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, 0x8440, 0x8460, 0x0423, + 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, 0x849F, 0x849F, 0x1D37, + 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, 0x84A2, 0x84A2, 0x1D47, + 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, 0x84A5, 0x84A5, 0x1D53, + 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, 0x84A8, 0x84A8, 0x1D6B, + 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, 0x84AB, 0x84AB, 0x1D3A, + 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, 0x84AE, 0x84AE, 0x1D52, + 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, 0x84B1, 0x84B1, 0x1D6A, + 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, 0x84B4, 0x84B4, 0x1D82, + 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, 0x84B7, 0x84B7, 0x1D5F, + 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, 0x84BA, 0x84BA, 0x1D54, + 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, 0x84BD, 0x84BD, 0x1D6F, + 0x84BE, 0x84BE, 0x1D79, 0x8740, 0x875D, 0x1D83, 0x875F, 0x8760, 0x1DA1, + 0x8761, 0x8761, 0x1F66, 0x8762, 0x8762, 0x1DA4, 0x8763, 0x8763, 0x1F68, + 0x8764, 0x8764, 0x1DA6, 0x8765, 0x8765, 0x1F6A, 0x8766, 0x8767, 0x1DA8, + 0x8768, 0x8768, 0x1F6C, 0x8769, 0x876A, 0x1DAB, 0x876B, 0x876B, 0x1F6B, + 0x876C, 0x876D, 0x1DAE, 0x876E, 0x876E, 0x1F6F, 0x876F, 0x8775, 0x1DB1, + 0x877E, 0x877E, 0x2083, 0x8780, 0x8783, 0x1DB8, 0x8784, 0x8784, 0x1F77, + 0x8785, 0x878F, 0x1DBD, 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9, + 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300, + 0x879B, 0x879C, 0x1DCF, 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3, + 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE, + 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7, + 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2, + 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B, + 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26, + 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F, + 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A, + 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93, + 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E, + 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7, + 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097, + 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0, + 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB, + 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404, + 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF, + 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638, + 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733, + 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C, + 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967, + 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0, + 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B, + 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4, + 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, 0xED40, 0xED7E, 0x20A7, + 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, 0xEDB5, 0xEDFC, 0x211A, + 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, 0xEEEF, 0xEEF8, 0x1F9C, + 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45, 0xFA40, 0xFA49, 0x1F9C, + 0xFA4A, 0xFA53, 0x1D97, 0xFA54, 0xFA54, 0x02EF, 0xFA55, 0xFA57, 0x1F45, + 0xFA58, 0xFA58, 0x1DC2, 0xFA59, 0xFA59, 0x1DBA, 0xFA5A, 0xFA5A, 0x1F77, + 0xFA5B, 0xFA5B, 0x0300, 0xFA5C, 0xFA7E, 0x20A7, 0xFA80, 0xFACF, 0x20CA, + 0xFAD0, 0xFAD0, 0x07C9, 0xFAD1, 0xFAFC, 0x211A, 0xFB40, 0xFB7E, 0x2146, + 0xFB80, 0xFBFC, 0x2185, 0xFC40, 0xFC4B, 0x2202, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp new file mode 100644 index 0000000000..a9731c4f8a --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp @@ -0,0 +1,36 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_90msp_RKSJ_V_2[78 * 3] = { + 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, + 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6, + 0x8169, 0x817A, 0x1EDB, 0x8181, 0x8181, 0x1EED, 0x81A8, 0x81A8, 0x02E3, + 0x81A9, 0x81A9, 0x02E2, 0x81AA, 0x81AB, 0x02E0, 0x81AC, 0x81AC, 0x204E, + 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0, + 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3, + 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6, + 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9, + 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC, + 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF, + 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02, + 0x849F, 0x849F, 0x1D39, 0x84A0, 0x84A0, 0x1D37, 0x84A1, 0x84A1, 0x1D47, + 0x84A2, 0x84A2, 0x1D4F, 0x84A3, 0x84A3, 0x1D4B, 0x84A4, 0x84A4, 0x1D43, + 0x84A5, 0x84A5, 0x1D63, 0x84A6, 0x84A6, 0x1D5B, 0x84A7, 0x84A7, 0x1D6B, + 0x84A8, 0x84A8, 0x1D53, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D3A, + 0x84AB, 0x84AB, 0x1D38, 0x84AC, 0x84AC, 0x1D4A, 0x84AD, 0x84AD, 0x1D52, + 0x84AE, 0x84AE, 0x1D4E, 0x84AF, 0x84AF, 0x1D46, 0x84B0, 0x84B0, 0x1D6A, + 0x84B1, 0x84B1, 0x1D62, 0x84B2, 0x84B2, 0x1D72, 0x84B3, 0x84B3, 0x1D5A, + 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D66, 0x84B6, 0x84B6, 0x1D5F, + 0x84B7, 0x84B7, 0x1D6E, 0x84B8, 0x84B8, 0x1D57, 0x84B9, 0x84B9, 0x1D79, + 0x84BA, 0x84BA, 0x1D67, 0x84BB, 0x84BB, 0x1D5C, 0x84BC, 0x84BC, 0x1D6F, + 0x84BD, 0x84BD, 0x1D54, 0x84BE, 0x84BE, 0x1D76, 0x875F, 0x8760, 0x1F04, + 0x8761, 0x8761, 0x2089, 0x8762, 0x8762, 0x1F07, 0x8763, 0x8763, 0x2093, + 0x8764, 0x8764, 0x1F09, 0x8765, 0x8765, 0x2092, 0x8766, 0x8767, 0x1F0B, + 0x8768, 0x8768, 0x2098, 0x8769, 0x876A, 0x1F0E, 0x876B, 0x876B, 0x209C, + 0x876C, 0x876D, 0x1F11, 0x876E, 0x876E, 0x209D, 0x8780, 0x8781, 0x1F14, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp new file mode 100644 index 0000000000..331e75614c --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp @@ -0,0 +1,98 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_90pv_RKSJ_H_1[263 * 3] = { + 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x0061, 0x00A0, 0x00DF, 0x0146, + 0x00FD, 0x00FD, 0x0098, 0x00FE, 0x00FE, 0x00E4, 0x00FF, 0x00FF, 0x007C, + 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, + 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, + 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, + 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, + 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, + 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, + 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, + 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, + 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, + 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, + 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, + 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, + 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, + 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, + 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, + 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, + 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8540, 0x8553, 0x1D83, + 0x855E, 0x8571, 0x1F87, 0x857C, 0x857E, 0x205E, 0x8580, 0x8585, 0x2061, + 0x8591, 0x859A, 0x1F7D, 0x859F, 0x85A8, 0x1D97, 0x85A9, 0x85AA, 0x2021, + 0x85AB, 0x85AD, 0x2067, 0x85B3, 0x85BC, 0x1F9C, 0x85BD, 0x85C1, 0x206A, + 0x85DB, 0x85F4, 0x1FB0, 0x8640, 0x8640, 0x1DB1, 0x8641, 0x8641, 0x1FFA, + 0x8642, 0x8642, 0x1DB2, 0x8643, 0x8643, 0x1F54, 0x8644, 0x8644, 0x1F56, + 0x8645, 0x8645, 0x206F, 0x8646, 0x8646, 0x1DB7, 0x8647, 0x8647, 0x1F57, + 0x8648, 0x8648, 0x1DB3, 0x8649, 0x8649, 0x1F55, 0x864A, 0x864A, 0x1DB4, + 0x864B, 0x864B, 0x2070, 0x864C, 0x864D, 0x1DB5, 0x864E, 0x864E, 0x1F65, + 0x864F, 0x8655, 0x1F58, 0x8656, 0x8656, 0x2071, 0x8657, 0x8657, 0x1F64, + 0x8658, 0x8659, 0x1F62, 0x865A, 0x865C, 0x1F5F, 0x865D, 0x865D, 0x2072, + 0x869B, 0x869D, 0x1DBA, 0x869E, 0x869E, 0x2073, 0x869F, 0x869F, 0x1F52, + 0x86A0, 0x86A1, 0x1F50, 0x86A2, 0x86A2, 0x1F53, 0x86A3, 0x86A3, 0x2013, + 0x86A4, 0x86A4, 0x2015, 0x86A5, 0x86A5, 0x2014, 0x86A6, 0x86A6, 0x2016, + 0x86B3, 0x86B3, 0x1F7A, 0x86B4, 0x86B4, 0x1F78, 0x86B5, 0x86B5, 0x2074, + 0x86C7, 0x86CA, 0x201B, 0x86CB, 0x86CE, 0x2075, 0x86CF, 0x86CF, 0x1F4E, + 0x86D0, 0x86D0, 0x1F4D, 0x86D1, 0x86D1, 0x1F4C, 0x86D2, 0x86D2, 0x1F4B, + 0x86D3, 0x86D6, 0x200E, 0x8740, 0x8746, 0x2005, 0x8747, 0x8747, 0x1FD6, + 0x8748, 0x8748, 0x200C, 0x8749, 0x8749, 0x1FD1, 0x874A, 0x874A, 0x1FCA, + 0x874B, 0x874B, 0x1DC4, 0x874C, 0x874C, 0x1FD7, 0x874D, 0x874D, 0x1DC2, + 0x874E, 0x874E, 0x1FD2, 0x874F, 0x874F, 0x1FCD, 0x8750, 0x8750, 0x1DC3, + 0x8751, 0x8751, 0x1FD5, 0x8752, 0x8752, 0x1FD3, 0x8753, 0x8753, 0x1FCF, + 0x8754, 0x8754, 0x1FD4, 0x8755, 0x8755, 0x1FD0, 0x8756, 0x8757, 0x1FCB, + 0x8758, 0x8758, 0x1FCE, 0x8791, 0x8792, 0x207D, 0x8793, 0x8797, 0x1DBD, + 0x8798, 0x8798, 0x1FDA, 0x8799, 0x8799, 0x1FE5, 0x879A, 0x879A, 0x207F, + 0x879B, 0x879B, 0x1FDE, 0x879C, 0x879C, 0x1FFF, 0x879D, 0x879D, 0x2080, + 0x879E, 0x879E, 0x201F, 0x879F, 0x879F, 0x1DA1, 0x87A0, 0x87A0, 0x1F66, + 0x87A1, 0x87A1, 0x1DA4, 0x87A2, 0x87A2, 0x1DA2, 0x87A3, 0x87A3, 0x1F67, + 0x87A4, 0x87A4, 0x1FF7, 0x87A5, 0x87A6, 0x2087, 0x87A7, 0x87A7, 0x1F6A, + 0x87A8, 0x87A8, 0x1DA8, 0x87A9, 0x87AA, 0x1F68, 0x87AB, 0x87AB, 0x1DA6, + 0x87AC, 0x87AC, 0x1DA9, 0x87AD, 0x87AD, 0x1DAF, 0x87AE, 0x87AE, 0x1F6E, + 0x87AF, 0x87AF, 0x1F6C, 0x87B0, 0x87B0, 0x1DAB, 0x87B1, 0x87B1, 0x1F6D, + 0x87B2, 0x87B2, 0x1F6B, 0x87B3, 0x87B3, 0x1DAC, 0x87B4, 0x87B4, 0x1F6F, + 0x87B5, 0x87B5, 0x1DAE, 0x87BD, 0x87BD, 0x1F70, 0x87BE, 0x87BF, 0x1F73, + 0x87C0, 0x87C1, 0x1F71, 0x87E5, 0x87E7, 0x1DC5, 0x87E8, 0x87E8, 0x2083, + 0x87FA, 0x87FA, 0x1F76, 0x87FB, 0x87FC, 0x2081, 0x8840, 0x8840, 0x1DC8, + 0x8841, 0x8842, 0x1DCD, 0x8854, 0x8855, 0x1DB8, 0x8868, 0x8868, 0x1F16, + 0x886A, 0x886D, 0x2079, 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3, + 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE, + 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7, + 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2, + 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B, + 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26, + 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F, + 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A, + 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93, + 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E, + 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7, + 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097, + 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0, + 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB, + 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404, + 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF, + 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638, + 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733, + 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C, + 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967, + 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0, + 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B, + 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4, + 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, 0xEB41, 0xEB42, 0x1ECF, + 0xEB50, 0xEB51, 0x1ED1, 0xEB5B, 0xEB5D, 0x1ED3, 0xEB60, 0xEB64, 0x1ED6, + 0xEB69, 0xEB7A, 0x1EDB, 0xEB81, 0xEB81, 0x1EED, 0xEC9F, 0xEC9F, 0x1EEE, + 0xECA1, 0xECA1, 0x1EEF, 0xECA3, 0xECA3, 0x1EF0, 0xECA5, 0xECA5, 0x1EF1, + 0xECA7, 0xECA7, 0x1EF2, 0xECC1, 0xECC1, 0x1EF3, 0xECE1, 0xECE1, 0x1EF4, + 0xECE3, 0xECE3, 0x1EF5, 0xECE5, 0xECE5, 0x1EF6, 0xECEC, 0xECEC, 0x1EF7, + 0xED40, 0xED40, 0x1EF8, 0xED42, 0xED42, 0x1EF9, 0xED44, 0xED44, 0x1EFA, + 0xED46, 0xED46, 0x1EFB, 0xED48, 0xED48, 0x1EFC, 0xED62, 0xED62, 0x1EFD, + 0xED83, 0xED83, 0x1EFE, 0xED85, 0xED85, 0x1EFF, 0xED87, 0xED87, 0x1F00, + 0xED8E, 0xED8E, 0x1F01, 0xED95, 0xED96, 0x1F02, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp new file mode 100644 index 0000000000..ee3027a526 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp @@ -0,0 +1,222 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_Add_RKSJ_H_1[635 * 3] = { + 0x0020, 0x007E, 0x00E7, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279, + 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, 0x81C8, 0x81CE, 0x02ED, + 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, 0x81FC, 0x81FC, 0x030B, + 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330, + 0x829F, 0x82F1, 0x034A, 0x82F2, 0x82F4, 0x1F16, 0x8340, 0x837E, 0x039D, + 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, + 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, + 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, + 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, + 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, + 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, + 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, + 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, + 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, + 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, + 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, + 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, + 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x889F, 0x889F, 0x0465, + 0x88A0, 0x88A0, 0x1DD1, 0x88A1, 0x88AF, 0x0467, 0x88B0, 0x88B0, 0x1F19, + 0x88B1, 0x88B8, 0x0477, 0x88B9, 0x88B9, 0x1DD2, 0x88BA, 0x88EB, 0x0480, + 0x88EC, 0x88EC, 0x1DD3, 0x88ED, 0x88EE, 0x04B3, 0x88EF, 0x88EF, 0x1F1A, + 0x88F0, 0x88F0, 0x04B6, 0x88F1, 0x88F1, 0x1DD4, 0x88F2, 0x88F9, 0x04B8, + 0x88FA, 0x88FA, 0x1DD5, 0x88FB, 0x88FC, 0x04C1, 0x8940, 0x8948, 0x04C3, + 0x8949, 0x8949, 0x1DD6, 0x894A, 0x8951, 0x04CD, 0x8952, 0x8952, 0x1F1B, + 0x8953, 0x8953, 0x04D6, 0x8954, 0x8954, 0x1DD7, 0x8955, 0x8957, 0x04D8, + 0x8958, 0x8958, 0x1F1C, 0x8959, 0x895B, 0x04DC, 0x895C, 0x895C, 0x1DDA, + 0x895D, 0x8960, 0x04E0, 0x8961, 0x8961, 0x1DDB, 0x8962, 0x897E, 0x04E5, + 0x8980, 0x898A, 0x0502, 0x898B, 0x898B, 0x1DDC, 0x898C, 0x89A5, 0x050E, + 0x89A6, 0x89A6, 0x1DDD, 0x89A7, 0x89A7, 0x0529, 0x89A8, 0x89A8, 0x1DDE, + 0x89A9, 0x89DD, 0x052B, 0x89DE, 0x89DE, 0x1DDF, 0x89DF, 0x89E4, 0x0561, + 0x89E5, 0x89E5, 0x1F1D, 0x89E6, 0x89F7, 0x0568, 0x89F8, 0x89F8, 0x1DE0, + 0x89F9, 0x89FC, 0x057B, 0x8A40, 0x8A40, 0x057F, 0x8A41, 0x8A41, 0x1DE2, + 0x8A42, 0x8A7E, 0x0581, 0x8A80, 0x8A8A, 0x05BE, 0x8A8B, 0x8A8B, 0x1DE4, + 0x8A8C, 0x8A92, 0x05CA, 0x8A93, 0x8A93, 0x1DE5, 0x8A94, 0x8A99, 0x05D2, + 0x8A9A, 0x8A9A, 0x1DE6, 0x8A9B, 0x8ABF, 0x05D9, 0x8AC0, 0x8AC0, 0x1DE7, + 0x8AC1, 0x8ACA, 0x05FF, 0x8ACB, 0x8ACB, 0x1DE8, 0x8ACC, 0x8AE2, 0x060A, + 0x8AE3, 0x8AE3, 0x1DE9, 0x8AE4, 0x8AFC, 0x0622, 0x8B40, 0x8B49, 0x063B, + 0x8B4A, 0x8B4A, 0x1DEA, 0x8B4B, 0x8B5E, 0x0646, 0x8B5F, 0x8B5F, 0x1DEB, + 0x8B60, 0x8B7E, 0x065B, 0x8B80, 0x8B81, 0x067A, 0x8B82, 0x8B82, 0x1F1E, + 0x8B83, 0x8B87, 0x067D, 0x8B88, 0x8B88, 0x1F1F, 0x8B89, 0x8B9F, 0x0683, + 0x8BA0, 0x8BA0, 0x1DEC, 0x8BA1, 0x8BA7, 0x069B, 0x8BA8, 0x8BA8, 0x1DED, + 0x8BA9, 0x8BBF, 0x06A3, 0x8BC0, 0x8BC0, 0x1F20, 0x8BC1, 0x8BCC, 0x06BB, + 0x8BCD, 0x8BCD, 0x1DEE, 0x8BCE, 0x8BEA, 0x06C8, 0x8BEB, 0x8BEB, 0x1DEF, + 0x8BEC, 0x8BF1, 0x06E6, 0x8BF2, 0x8BF2, 0x1DF0, 0x8BF3, 0x8BF8, 0x06ED, + 0x8BF9, 0x8BF9, 0x1DF1, 0x8BFA, 0x8BFA, 0x06F4, 0x8BFB, 0x8BFB, 0x1DF2, + 0x8BFC, 0x8BFC, 0x06F6, 0x8C40, 0x8C55, 0x06F7, 0x8C56, 0x8C56, 0x1DF4, + 0x8C57, 0x8C70, 0x070E, 0x8C71, 0x8C71, 0x1DF7, 0x8C72, 0x8C7E, 0x0729, + 0x8C80, 0x8C90, 0x0736, 0x8C91, 0x8C91, 0x1DFA, 0x8C92, 0x8C9C, 0x0748, + 0x8C9D, 0x8C9D, 0x1F21, 0x8C9E, 0x8C9E, 0x1DFC, 0x8C9F, 0x8CB1, 0x0755, + 0x8CB2, 0x8CB2, 0x1DFD, 0x8CB3, 0x8CBE, 0x0769, 0x8CBF, 0x8CBF, 0x1DFE, + 0x8CC0, 0x8CFC, 0x0776, 0x8D40, 0x8D49, 0x07B3, 0x8D4A, 0x8D4A, 0x1DFF, + 0x8D4B, 0x8D7E, 0x07BE, 0x8D80, 0x8D8C, 0x07F2, 0x8D8D, 0x8D8D, 0x1E02, + 0x8D8E, 0x8D93, 0x0800, 0x8D94, 0x8D94, 0x1E03, 0x8D95, 0x8D98, 0x0807, + 0x8D99, 0x8D99, 0x1E04, 0x8D9A, 0x8DD0, 0x080C, 0x8DD1, 0x8DD1, 0x1E05, + 0x8DD2, 0x8DE4, 0x0844, 0x8DE5, 0x8DE5, 0x1E06, 0x8DE6, 0x8DF1, 0x0858, + 0x8DF2, 0x8DF2, 0x1E07, 0x8DF3, 0x8DFC, 0x0865, 0x8E40, 0x8E45, 0x086F, + 0x8E46, 0x8E46, 0x1E08, 0x8E47, 0x8E48, 0x0876, 0x8E49, 0x8E49, 0x1E09, + 0x8E4A, 0x8E4A, 0x0879, 0x8E4B, 0x8E4B, 0x1E0A, 0x8E4C, 0x8E57, 0x087B, + 0x8E58, 0x8E58, 0x1E0B, 0x8E59, 0x8E5F, 0x0888, 0x8E60, 0x8E60, 0x1F22, + 0x8E61, 0x8E7E, 0x0890, 0x8E80, 0x8EC5, 0x08AE, 0x8EC6, 0x8EC6, 0x1E0D, + 0x8EC7, 0x8EDA, 0x08F5, 0x8EDB, 0x8EDC, 0x1E0F, 0x8EDD, 0x8EFC, 0x090B, + 0x8F40, 0x8F49, 0x092B, 0x8F4A, 0x8F4A, 0x1E11, 0x8F4B, 0x8F54, 0x0936, + 0x8F55, 0x8F55, 0x1E12, 0x8F56, 0x8F7E, 0x0941, 0x8F80, 0x8F8B, 0x096A, + 0x8F8C, 0x8F8C, 0x1E13, 0x8F8D, 0x8F91, 0x0977, 0x8F92, 0x8F93, 0x1E15, + 0x8F94, 0x8FA2, 0x097E, 0x8FA3, 0x8FA3, 0x1E17, 0x8FA4, 0x8FB0, 0x098E, + 0x8FB1, 0x8FB1, 0x1E18, 0x8FB2, 0x8FD2, 0x099C, 0x8FD3, 0x8FD3, 0x1E1A, + 0x8FD4, 0x8FDC, 0x09BE, 0x8FDD, 0x8FDD, 0x1E1B, 0x8FDE, 0x8FE1, 0x09C8, + 0x8FE2, 0x8FE2, 0x1E1C, 0x8FE3, 0x8FFC, 0x09CD, 0x9040, 0x9048, 0x09E7, + 0x9049, 0x9049, 0x1E1D, 0x904A, 0x9077, 0x09F1, 0x9078, 0x9078, 0x1F23, + 0x9079, 0x907E, 0x0A20, 0x9080, 0x9080, 0x1E1F, 0x9081, 0x909F, 0x0A27, + 0x90A0, 0x90A0, 0x1E21, 0x90A1, 0x90E3, 0x0A47, 0x90E4, 0x90E4, 0x1E23, + 0x90E5, 0x90EE, 0x0A8B, 0x90EF, 0x90EF, 0x1E24, 0x90F0, 0x90F6, 0x0A96, + 0x90F7, 0x90F7, 0x1E26, 0x90F8, 0x90F8, 0x1F24, 0x90F9, 0x90F9, 0x0A9F, + 0x90FA, 0x90FB, 0x1F25, 0x90FC, 0x90FC, 0x0AA2, 0x9140, 0x9145, 0x0AA3, + 0x9146, 0x9146, 0x1E28, 0x9147, 0x9157, 0x0AAA, 0x9158, 0x9158, 0x1E29, + 0x9159, 0x916A, 0x0ABC, 0x916B, 0x916B, 0x1E2A, 0x916C, 0x916D, 0x0ACF, + 0x916E, 0x916E, 0x1E2B, 0x916F, 0x917D, 0x0AD2, 0x917E, 0x917E, 0x1E2C, + 0x9180, 0x9188, 0x0AE2, 0x9189, 0x9189, 0x1E2D, 0x918A, 0x91B4, 0x0AEC, + 0x91B5, 0x91B5, 0x1F27, 0x91B6, 0x91BA, 0x0B18, 0x91BB, 0x91BB, 0x1E2E, + 0x91BC, 0x91CA, 0x0B1E, 0x91CB, 0x91CB, 0x1E2F, 0x91CC, 0x91D9, 0x0B2E, + 0x91DA, 0x91DA, 0x1E30, 0x91DB, 0x91E0, 0x0B3D, 0x91E1, 0x91E1, 0x1E31, + 0x91E2, 0x91EC, 0x0B44, 0x91ED, 0x91ED, 0x1E32, 0x91EE, 0x91FA, 0x0B50, + 0x91FB, 0x91FB, 0x1E35, 0x91FC, 0x91FC, 0x0B5E, 0x9240, 0x9245, 0x0B5F, + 0x9246, 0x9246, 0x1E36, 0x9247, 0x9247, 0x0B66, 0x9248, 0x9248, 0x1E37, + 0x9249, 0x924B, 0x0B68, 0x924C, 0x924D, 0x1E39, 0x924E, 0x925B, 0x0B6D, + 0x925C, 0x925C, 0x1E3B, 0x925D, 0x927E, 0x0B7C, 0x9280, 0x928F, 0x0B9E, + 0x9290, 0x9290, 0x1E3C, 0x9291, 0x9294, 0x0BAF, 0x9295, 0x9295, 0x1E3D, + 0x9296, 0x929B, 0x0BB4, 0x929C, 0x929C, 0x1E3E, 0x929D, 0x92BA, 0x0BBB, + 0x92BB, 0x92BB, 0x1E3F, 0x92BC, 0x92C5, 0x0BDA, 0x92C6, 0x92C6, 0x1E40, + 0x92C7, 0x92C7, 0x0BE5, 0x92C8, 0x92C8, 0x1E41, 0x92C9, 0x92CC, 0x0BE7, + 0x92CD, 0x92CD, 0x1E43, 0x92CE, 0x92FC, 0x0BEC, 0x9340, 0x9340, 0x0C1B, + 0x9341, 0x9341, 0x1E44, 0x9342, 0x9345, 0x0C1D, 0x9346, 0x9346, 0x1E45, + 0x9347, 0x934C, 0x0C22, 0x934D, 0x934D, 0x1E46, 0x934E, 0x9354, 0x0C29, + 0x9355, 0x9355, 0x1E47, 0x9356, 0x935D, 0x0C31, 0x935E, 0x935E, 0x1E48, + 0x935F, 0x9366, 0x0C3A, 0x9367, 0x9367, 0x1E49, 0x9368, 0x9369, 0x0C43, + 0x936A, 0x936A, 0x1E4A, 0x936B, 0x936F, 0x0C46, 0x9370, 0x9370, 0x1F28, + 0x9371, 0x9371, 0x1E4C, 0x9372, 0x937E, 0x0C4D, 0x9380, 0x9383, 0x0C5A, + 0x9384, 0x9384, 0x1E4D, 0x9385, 0x9397, 0x0C5F, 0x9398, 0x9398, 0x1E4E, + 0x9399, 0x93BF, 0x0C73, 0x93C0, 0x93C0, 0x1E50, 0x93C1, 0x93D1, 0x0C9B, + 0x93D2, 0x93D2, 0x1E51, 0x93D3, 0x93D8, 0x0CAD, 0x93D9, 0x93D9, 0x1E53, + 0x93DA, 0x93E3, 0x0CB4, 0x93E4, 0x93E5, 0x1E56, 0x93E6, 0x93E7, 0x0CC0, + 0x93E8, 0x93E8, 0x1E58, 0x93E9, 0x93F3, 0x0CC3, 0x93F4, 0x93F4, 0x1EC0, + 0x93F5, 0x93FC, 0x0CCF, 0x9440, 0x9447, 0x0CD7, 0x9448, 0x9448, 0x1E59, + 0x9449, 0x9449, 0x1F29, 0x944A, 0x9457, 0x0CE1, 0x9458, 0x9458, 0x1E5A, + 0x9459, 0x9475, 0x0CF0, 0x9476, 0x9476, 0x1E5B, 0x9477, 0x947E, 0x0D0E, + 0x9480, 0x9486, 0x0D16, 0x9487, 0x9487, 0x1E5C, 0x9488, 0x9488, 0x0D1E, + 0x9489, 0x9489, 0x1E5D, 0x948A, 0x948C, 0x0D20, 0x948D, 0x948D, 0x1E5E, + 0x948E, 0x94A1, 0x0D24, 0x94A2, 0x94A2, 0x1E5F, 0x94A3, 0x94AB, 0x0D39, + 0x94AC, 0x94AC, 0x1E60, 0x94AD, 0x94AD, 0x0D43, 0x94AE, 0x94AE, 0x1E61, + 0x94AF, 0x94BD, 0x0D45, 0x94BE, 0x94BE, 0x1F2A, 0x94BF, 0x94D1, 0x0D55, + 0x94D2, 0x94D2, 0x1E62, 0x94D3, 0x94F2, 0x0D69, 0x94F3, 0x94F3, 0x1E64, + 0x94F4, 0x94FC, 0x0D8A, 0x9540, 0x9540, 0x0D93, 0x9541, 0x9542, 0x1E65, + 0x9543, 0x954D, 0x0D96, 0x954E, 0x954E, 0x1E67, 0x954F, 0x9550, 0x0DA2, + 0x9551, 0x9551, 0x1E68, 0x9552, 0x9553, 0x0DA5, 0x9554, 0x9554, 0x1E69, + 0x9555, 0x955E, 0x0DA8, 0x955F, 0x955F, 0x1E6A, 0x9560, 0x956C, 0x0DB3, + 0x956D, 0x956D, 0x1E6B, 0x956E, 0x957E, 0x0DC1, 0x9580, 0x95C0, 0x0DD2, + 0x95C1, 0x95C1, 0x1E6D, 0x95C2, 0x95CA, 0x0E14, 0x95CB, 0x95CB, 0x1E6E, + 0x95CC, 0x95D0, 0x0E1E, 0x95D1, 0x95D1, 0x1F2B, 0x95D2, 0x95D7, 0x0E24, + 0x95D8, 0x95D8, 0x1E6F, 0x95D9, 0x95F6, 0x0E2B, 0x95F7, 0x95F7, 0x1E70, + 0x95F8, 0x95FC, 0x0E4A, 0x9640, 0x9647, 0x0E4F, 0x9648, 0x9648, 0x1E72, + 0x9649, 0x9669, 0x0E58, 0x966A, 0x966A, 0x1E73, 0x966B, 0x967E, 0x0E7A, + 0x9680, 0x968F, 0x0E8E, 0x9690, 0x9690, 0x1E74, 0x9691, 0x9697, 0x0E9F, + 0x9698, 0x9698, 0x1F2C, 0x9699, 0x96CA, 0x0EA7, 0x96CB, 0x96CB, 0x1E75, + 0x96CC, 0x96D6, 0x0EDA, 0x96D7, 0x96D7, 0x1E76, 0x96D8, 0x96DC, 0x0EE6, + 0x96DD, 0x96DD, 0x1E77, 0x96DE, 0x96DF, 0x0EEC, 0x96E0, 0x96E0, 0x1E78, + 0x96E1, 0x96F7, 0x0EEF, 0x96F8, 0x96F8, 0x1E79, 0x96F9, 0x96F9, 0x0F07, + 0x96FA, 0x96FA, 0x1E7A, 0x96FB, 0x96FC, 0x0F09, 0x9740, 0x9750, 0x0F0B, + 0x9751, 0x9751, 0x1E7C, 0x9752, 0x976E, 0x0F1D, 0x976F, 0x976F, 0x1E7D, + 0x9770, 0x9772, 0x0F3B, 0x9773, 0x9773, 0x1E7E, 0x9774, 0x977E, 0x0F3F, + 0x9780, 0x9788, 0x0F4A, 0x9789, 0x9789, 0x1E7F, 0x978A, 0x97F7, 0x0F54, + 0x97F8, 0x97F9, 0x1E81, 0x97FA, 0x97FA, 0x1F2D, 0x97FB, 0x97FC, 0x0FC5, + 0x9840, 0x9840, 0x1E83, 0x9841, 0x984F, 0x0FC8, 0x9850, 0x9850, 0x1E84, + 0x9851, 0x9857, 0x0FD8, 0x9858, 0x9858, 0x1E85, 0x9859, 0x9872, 0x0FE0, + 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x9940, 0x1058, 0x9941, 0x9941, 0x1F2E, + 0x9942, 0x995B, 0x105A, 0x995C, 0x995C, 0x1E86, 0x995D, 0x996B, 0x1075, + 0x996C, 0x996C, 0x1E89, 0x996D, 0x997E, 0x1085, 0x9980, 0x99B5, 0x1097, + 0x99B6, 0x99B6, 0x1F2F, 0x99B7, 0x99FC, 0x10CE, 0x9A40, 0x9A4E, 0x1114, + 0x9A4F, 0x9A4F, 0x1E8A, 0x9A50, 0x9A58, 0x1124, 0x9A59, 0x9A59, 0x1E8B, + 0x9A5A, 0x9A66, 0x112E, 0x9A67, 0x9A67, 0x1F30, 0x9A68, 0x9A7C, 0x113C, + 0x9A7D, 0x9A7D, 0x1E8D, 0x9A7E, 0x9A7E, 0x1152, 0x9A80, 0x9A8A, 0x1153, + 0x9A8B, 0x9A8B, 0x1E8E, 0x9A8C, 0x9A8C, 0x1F31, 0x9A8D, 0x9AC1, 0x1160, + 0x9AC2, 0x9AC2, 0x1E8F, 0x9AC3, 0x9AC3, 0x1F32, 0x9AC4, 0x9AE9, 0x1197, + 0x9AEA, 0x9AEA, 0x1F33, 0x9AEB, 0x9AFC, 0x11BE, 0x9B40, 0x9B5B, 0x11D0, + 0x9B5C, 0x9B5C, 0x1E90, 0x9B5D, 0x9B7E, 0x11ED, 0x9B80, 0x9B82, 0x120F, + 0x9B83, 0x9B83, 0x1E91, 0x9B84, 0x9B97, 0x1213, 0x9B98, 0x9B98, 0x1F34, + 0x9B99, 0x9B9F, 0x1228, 0x9BA0, 0x9BA0, 0x1E92, 0x9BA1, 0x9BFA, 0x1230, + 0x9BFB, 0x9BFC, 0x1F35, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CA1, 0x12CB, + 0x9CA2, 0x9CA2, 0x1E94, 0x9CA3, 0x9CFC, 0x12EE, 0x9D40, 0x9D46, 0x1348, + 0x9D47, 0x9D47, 0x1F37, 0x9D48, 0x9D7E, 0x1350, 0x9D80, 0x9D80, 0x1E95, + 0x9D81, 0x9D8B, 0x1388, 0x9D8C, 0x9D8C, 0x1E96, 0x9D8D, 0x9DB6, 0x1394, + 0x9DB7, 0x9DB7, 0x1E97, 0x9DB8, 0x9DF7, 0x13BF, 0x9DF8, 0x9DF8, 0x1F38, + 0x9DF9, 0x9DFC, 0x1400, 0x9E40, 0x9E63, 0x1404, 0x9E64, 0x9E64, 0x1E99, + 0x9E65, 0x9E7E, 0x1429, 0x9E80, 0x9E8A, 0x1443, 0x9E8B, 0x9E8B, 0x1E9B, + 0x9E8C, 0x9EFC, 0x144F, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9F80, 0x14FF, + 0x9F81, 0x9F81, 0x1F39, 0x9F82, 0x9FCD, 0x1501, 0x9FCE, 0x9FCE, 0x1E9D, + 0x9FCF, 0x9FD3, 0x154E, 0x9FD4, 0x9FD4, 0x1F3A, 0x9FD5, 0x9FF3, 0x1554, + 0x9FF4, 0x9FF4, 0x1F3B, 0x9FF5, 0x9FFC, 0x1574, 0xE040, 0xE07E, 0x157C, + 0xE080, 0xE092, 0x15BB, 0xE093, 0xE093, 0x1E9E, 0xE094, 0xE0A3, 0x15CF, + 0xE0A4, 0xE0A4, 0x1E9F, 0xE0A5, 0xE0DC, 0x15E0, 0xE0DD, 0xE0DD, 0x1EA0, + 0xE0DE, 0xE0FC, 0x1619, 0xE140, 0xE149, 0x1638, 0xE14A, 0xE14A, 0x1EA1, + 0xE14B, 0xE17E, 0x1643, 0xE180, 0xE1EC, 0x1677, 0xE1ED, 0xE1ED, 0x1EA5, + 0xE1EE, 0xE1FC, 0x16E5, 0xE240, 0xE268, 0x16F4, 0xE269, 0xE269, 0x1EA6, + 0xE26A, 0xE272, 0x171E, 0xE273, 0xE273, 0x1EA7, 0xE274, 0xE277, 0x1728, + 0xE278, 0xE278, 0x1F3C, 0xE279, 0xE27E, 0x172D, 0xE280, 0xE2B6, 0x1733, + 0xE2B7, 0xE2B7, 0x1EA8, 0xE2B8, 0xE2BD, 0x176B, 0xE2BE, 0xE2BE, 0x1F3D, + 0xE2BF, 0xE2E1, 0x1772, 0xE2E2, 0xE2E2, 0x1EA9, 0xE2E3, 0xE2EB, 0x1796, + 0xE2EC, 0xE2EC, 0x1EAA, 0xE2ED, 0xE2FC, 0x17A0, 0xE340, 0xE357, 0x17B0, + 0xE358, 0xE358, 0x1EAB, 0xE359, 0xE359, 0x17C9, 0xE35A, 0xE35A, 0x1EAC, + 0xE35B, 0xE364, 0x17CB, 0xE365, 0xE365, 0x1EAD, 0xE366, 0xE37E, 0x17D6, + 0xE380, 0xE3C6, 0x17EF, 0xE3C7, 0xE3C7, 0x1F3E, 0xE3C8, 0xE3FC, 0x1837, + 0xE440, 0xE47E, 0x186C, 0xE480, 0xE483, 0x18AB, 0xE484, 0xE484, 0x1EAF, + 0xE485, 0xE488, 0x18B0, 0xE489, 0xE489, 0x1EB0, 0xE48A, 0xE491, 0x18B5, + 0xE492, 0xE492, 0x1EB1, 0xE493, 0xE4B8, 0x18BE, 0xE4B9, 0xE4B9, 0x1EB3, + 0xE4BA, 0xE4CA, 0x18E5, 0xE4CB, 0xE4CB, 0x1F3F, 0xE4CC, 0xE4FC, 0x18F7, + 0xE540, 0xE57E, 0x1928, 0xE580, 0xE59D, 0x1967, 0xE59E, 0xE59E, 0x1F40, + 0xE59F, 0xE5B9, 0x1986, 0xE5BA, 0xE5BB, 0x1F41, 0xE5BC, 0xE5EC, 0x19A3, + 0xE5ED, 0xE5ED, 0x1EB8, 0xE5EE, 0xE5FC, 0x19D5, 0xE640, 0xE650, 0x19E4, + 0xE651, 0xE651, 0x1EB9, 0xE652, 0xE67E, 0x19F6, 0xE680, 0xE685, 0x1A23, + 0xE686, 0xE686, 0x1EBA, 0xE687, 0xE6E6, 0x1A2A, 0xE6E7, 0xE6E7, 0x1EBC, + 0xE6E8, 0xE6FC, 0x1A8B, 0xE740, 0xE76C, 0x1AA0, 0xE76D, 0xE76D, 0x1EBE, + 0xE76E, 0xE77E, 0x1ACE, 0xE780, 0xE7A6, 0x1ADF, 0xE7A7, 0xE7A7, 0x1EC1, + 0xE7A8, 0xE7BA, 0x1B07, 0xE7BB, 0xE7BB, 0x1EC2, 0xE7BC, 0xE7FC, 0x1B1B, + 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8CE, 0x1B9B, 0xE8CF, 0xE8CF, 0x1EC7, + 0xE8D0, 0xE8FC, 0x1BEB, 0xE940, 0xE977, 0x1C18, 0xE978, 0xE978, 0x1F43, + 0xE979, 0xE97E, 0x1C51, 0xE980, 0xE9AA, 0x1C57, 0xE9AB, 0xE9AB, 0x1ECA, + 0xE9AC, 0xE9B9, 0x1C83, 0xE9BA, 0xE9BA, 0x1ECB, 0xE9BB, 0xE9CB, 0x1C92, + 0xE9CC, 0xE9CC, 0x1ECC, 0xE9CD, 0xE9FC, 0x1CA4, 0xEA40, 0xEA6F, 0x1CD4, + 0xEA70, 0xEA70, 0x1ECD, 0xEA71, 0xEA71, 0x1F44, 0xEA72, 0xEA7E, 0x1D06, + 0xEA80, 0xEA9C, 0x1D13, 0xEA9D, 0xEA9D, 0x1ECE, 0xEA9E, 0xEAA2, 0x1D31, + 0xEAA3, 0xEAA4, 0x205C, 0xEC40, 0xEC42, 0x1F45, 0xEC46, 0xEC46, 0x1F48, + 0xEC47, 0xEC47, 0x0300, 0xEC48, 0xEC48, 0x02FA, 0xEC49, 0xEC49, 0x02F9, + 0xEC4D, 0xEC57, 0x1F49, 0xEC5B, 0xEC5D, 0x1DB1, 0xEC5E, 0xEC5E, 0x1F54, + 0xEC5F, 0xEC5F, 0x1DB7, 0xEC60, 0xEC62, 0x1F55, 0xEC63, 0xEC65, 0x1DB4, + 0xEC66, 0xEC6F, 0x1F58, 0xEC70, 0xEC70, 0x0303, 0xEC71, 0xEC71, 0x1F62, + 0xEC72, 0xEC72, 0x0304, 0xEC73, 0xEC74, 0x1F63, 0xEC76, 0xEC76, 0x1F65, + 0xEC78, 0xEC78, 0x1DA4, 0xEC79, 0xEC79, 0x1DA1, 0xEC7A, 0xEC7A, 0x1F66, + 0xEC7B, 0xEC7B, 0x1DA2, 0xEC7C, 0xEC7E, 0x1F67, 0xEC80, 0xEC80, 0x1DA6, + 0xEC81, 0xEC81, 0x1F6A, 0xEC82, 0xEC82, 0x1DA8, 0xEC83, 0xEC83, 0x1DAC, + 0xEC84, 0xEC84, 0x1F6B, 0xEC85, 0xEC85, 0x1DAE, 0xEC86, 0xEC86, 0x1DAB, + 0xEC87, 0xEC88, 0x1F6C, 0xEC89, 0xEC89, 0x1DAF, 0xEC8A, 0xEC90, 0x1F6E, + 0xEC94, 0xEC99, 0x1F75, 0xEC9A, 0xEC9A, 0x1DBA, 0xEC9B, 0xEC9B, 0x1F7B, + 0xEC9E, 0xEC9E, 0x1F7C, 0xECA7, 0xECB0, 0x1F7D, 0xECB2, 0xECC5, 0x1F87, + 0xECC7, 0xECDA, 0x1D83, 0xECDB, 0xECDB, 0x1F9B, 0xECDC, 0xECE5, 0x1D97, + 0xECE9, 0xECFC, 0x1F9C, 0xED40, 0xED59, 0x1FB0, 0xED64, 0xED64, 0x1F16, + 0xED68, 0xED69, 0x1FCA, 0xED6A, 0xED6A, 0x1DC4, 0xED6B, 0xED6D, 0x1FCC, + 0xED6E, 0xED6E, 0x1DC3, 0xED6F, 0xED73, 0x1FCF, 0xED74, 0xED74, 0x1DC2, + 0xED75, 0xED78, 0x1FD4, 0xED7C, 0xED7E, 0x1FD8, 0xED80, 0xED8A, 0x1FDB, + 0xED8F, 0xED9E, 0x1FE6, 0xEF40, 0xEF41, 0x1ECF, 0xEF42, 0xEF42, 0x204C, + 0xEF43, 0xEF43, 0x2052, 0xEF44, 0xEF4D, 0x1ED1, 0xEF4E, 0xEF4E, 0x205A, + 0xEF4F, 0xEF4F, 0x2053, 0xEF50, 0xEF50, 0x2058, 0xEF51, 0xEF51, 0x2055, + 0xEF52, 0xEF63, 0x1EDB, 0xEF64, 0xEF79, 0x1EEE, 0xEF7A, 0xEF7B, 0x2048, + 0xEF8D, 0xEF90, 0x02E0, 0xEF91, 0xEF94, 0x1FF6, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp new file mode 100644 index 0000000000..b23057f738 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp @@ -0,0 +1,29 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_Add_RKSJ_V_1[57 * 3] = { + 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, + 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6, + 0x8165, 0x8165, 0x205A, 0x8166, 0x8166, 0x2053, 0x8167, 0x8167, 0x2058, + 0x8168, 0x8168, 0x2055, 0x8169, 0x817A, 0x1EDB, 0x829F, 0x829F, 0x1EEE, + 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0, 0x82A5, 0x82A5, 0x1EF1, + 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3, 0x82E1, 0x82E1, 0x1EF4, + 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6, 0x82EC, 0x82EC, 0x1EF7, + 0x82F3, 0x82F4, 0x2048, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9, + 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC, + 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF, + 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02, + 0xEC78, 0xEC78, 0x1F07, 0xEC79, 0xEC79, 0x1F04, 0xEC7A, 0xEC7A, 0x2089, + 0xEC7B, 0xEC7B, 0x1F05, 0xEC7C, 0xEC7C, 0x208A, 0xEC7D, 0xEC7E, 0x2093, + 0xEC80, 0xEC80, 0x1F09, 0xEC81, 0xEC81, 0x2092, 0xEC82, 0xEC82, 0x1F0B, + 0xEC83, 0xEC83, 0x1F0F, 0xEC84, 0xEC84, 0x209C, 0xEC85, 0xEC85, 0x1F11, + 0xEC86, 0xEC86, 0x1F0E, 0xEC87, 0xEC87, 0x2098, 0xEC88, 0xEC88, 0x209B, + 0xEC89, 0xEC89, 0x1F12, 0xEC8A, 0xEC8A, 0x2097, 0xEC8B, 0xEC8C, 0x209D, + 0xEC8D, 0xEC8D, 0x20A6, 0xEC8E, 0xEC8E, 0x20A5, 0xEC8F, 0xEC8F, 0x20A1, + 0xEC90, 0xEC90, 0x20A4, 0xEC95, 0xEC95, 0x2084, 0xEF92, 0xEF92, 0x208D, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp new file mode 100644 index 0000000000..6be7bbfe5c --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp @@ -0,0 +1,1726 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_Japan1CID2Unicode_4[15444] = { + 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, + 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, + 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, + 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, + 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, + 0x007C, 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, + 0x201C, 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, + 0x00B7, 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, + 0x00BF, 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, + 0x030B, 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, + 0x00BA, 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, + 0x00AC, 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, + 0x00BD, 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, + 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, + 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, + 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, + 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, + 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, + 0x017D, 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x0020, 0x0021, 0x0022, + 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, + 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, + 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, + 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, + 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, + 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, + 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, + 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, + 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, + 0x007D, 0x203E, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, + 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, + 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, + 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81, + 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A, + 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, 0xFF93, + 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, + 0xFF9D, 0xFF9E, 0xFF9F, 0xFF40, 0x30F0, 0x30F1, 0x30EE, 0x30AB, 0x30B1, + 0x30F4, 0x30AC, 0x30AE, 0x30B0, 0x30B2, 0x30B4, 0x30B6, 0x30B8, 0x30BA, + 0x30BC, 0x30BE, 0x30C0, 0x30C2, 0x30C5, 0x30C7, 0x30C9, 0x30D0, 0x30D1, + 0x30D3, 0x30D4, 0x30D6, 0x30D7, 0x30D9, 0x30DA, 0x30DC, 0x30DD, 0xFF60, + 0x301D, 0x301E, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, + 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, + 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, + 0x2519, 0x251A, 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, + 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, + 0x252B, 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, + 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, + 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, + 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 0x2032, 0x00A8, 0x2036, + 0x005B, 0x005D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300E, 0x300F, 0x3010, + 0x3011, 0x2012, 0xFF60, 0x3092, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, + 0x3083, 0x3085, 0x3087, 0x3063, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, + 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, + 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, + 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, + 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, + 0x308C, 0x308D, 0x308F, 0x3093, 0x3090, 0x3091, 0x308E, 0x304C, 0x304E, + 0x3050, 0x3052, 0x3054, 0x3056, 0x3068, 0x305A, 0x305C, 0x305E, 0x3060, + 0x3062, 0x3065, 0x3067, 0x3069, 0x3070, 0x3071, 0x3073, 0x3074, 0x3076, + 0x3077, 0x3079, 0x307A, 0x307C, 0x307D, 0x00C4, 0x00F9, 0x00E9, 0x00ED, + 0x00DF, 0x00E7, 0x00C7, 0x00D1, 0x00F1, 0x00A2, 0x00A3, 0x00F3, 0x00FA, + 0x00A1, 0x00BF, 0x00BD, 0x00D6, 0x00DC, 0x00E4, 0x00EB, 0x00EF, 0x00F6, + 0x00DC, 0x00E2, 0x00EA, 0x00EE, 0x00F4, 0x00FC, 0x00E0, 0x00E9, 0x25B2, + 0x00E1, 0x007E, 0x0030, 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, + 0xFF1A, 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, + 0xFF3E, 0x203E, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, + 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C, 0xFF5E, + 0x2016, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08, + 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, + 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, + 0xFF0D, 0x00B1, 0x00D7, 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, + 0x2267, 0x221E, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, + 0xFFE5, 0xFF04, 0x00A2, 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, + 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, + 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, 0x2190, + 0x2191, 0x2193, 0x3013, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, + 0x222A, 0x2229, 0x2227, 0x2228, 0x00AC, 0x21D2, 0x21D4, 0x2200, 0x2203, + 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, + 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0x212B, 0x2030, 0x266F, + 0x266D, 0x266A, 0x2020, 0x2021, 0x00B6, 0x25EF, 0xFF10, 0xFF11, 0xFF12, + 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF21, 0xFF22, + 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, + 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, + 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, + 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, + 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, + 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x3041, 0x3042, 0x3043, 0x3044, + 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, + 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, + 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, + 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, + 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, + 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, + 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, + 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, + 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, + 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, + 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, + 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, + 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, + 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, + 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, + 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, + 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, + 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, + 0x30F4, 0x30F5, 0x30F6, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, + 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, + 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, + 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, + 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x0410, 0x0411, 0x0412, + 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, + 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, + 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, + 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, + 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, + 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, + 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, + 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, + 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6, + 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4, + 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309, + 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, + 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, + 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, + 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, + 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, + 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, + 0x98F2, 0x6DEB, 0x80E4, 0x852D, 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, + 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, + 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, + 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2, + 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, + 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, + 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, + 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, + 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, + 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, + 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC, 0x62BC, + 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, + 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, + 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, + 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, + 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, + 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, + 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6, + 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5, + 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, + 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, + 0x6212, 0x62D0, 0x6539, 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, + 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, + 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, + 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, 0x67FF, + 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C, + 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03, + 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, + 0x639B, 0x7B20, 0x6A2B, 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, + 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, + 0x9C39, 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, + 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431, 0x7CA5, 0x5208, + 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, 0x52E7, + 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79, + 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, + 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, + 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, + 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, + 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9, + 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858, + 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, 0x5B09, 0x5BC4, + 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, + 0x68CB, 0x68C4, 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, + 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, + 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, + 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, + 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, + 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, + 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, + 0x6025, 0x6551, 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, + 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, + 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, + 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC, 0x4F9B, 0x4FA0, 0x50D1, + 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, + 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, + 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, + 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, + 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4, + 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, + 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1, + 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, + 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, + 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, + 0x5C48, 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, + 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13, + 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, + 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, + 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, + 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, + 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, + 0x9BE8, 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, + 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, + 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, + 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372, 0x691C, 0x6A29, 0x727D, 0x72AC, + 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, + 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, + 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, + 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1, + 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0, + 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, + 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, 0x543E, + 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, + 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, + 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411, + 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, + 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C, + 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821, + 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, + 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, + 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, + 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, + 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5, + 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD, + 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD, + 0x60DA, 0x9AA8, 0x72DB, 0x8FBC, 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, + 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, + 0x75D5, 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, + 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, + 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, + 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D, + 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, + 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, + 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, + 0x4F5C, 0x524A, 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, + 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237, 0x5BDF, + 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, + 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, 0x5C71, + 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, + 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, + 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, + 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, + 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B, + 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, + 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, 0x8CDC, + 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA, + 0x6148, 0x6301, 0x6642, 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, + 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, + 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, + 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, + 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, + 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, + 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, + 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, + 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, + 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, + 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468, 0x5B97, 0x5C31, + 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, + 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, + 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, + 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, + 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, + 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C, + 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96, 0x6F64, + 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, + 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, + 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, + 0x50B7, 0x511F, 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, + 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, + 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377, + 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, + 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, + 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, + 0x848B, 0x8549, 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, + 0x8CDE, 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, + 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, + 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, + 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, 0x62ED, 0x690D, 0x6B96, + 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B, + 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, + 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, + 0x771F, 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, + 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, + 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D, + 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017, 0x5439, 0x5782, + 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, 0x8870, 0x9042, + 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, + 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, + 0x88FE, 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, + 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, + 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, + 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192, + 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, + 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, + 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, + 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, + 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, + 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, + 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA, 0x7E4A, 0x7FA8, 0x817A, 0x821B, + 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, + 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, + 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, + 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44, + 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2, + 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, + 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD, 0x65E9, 0x66F9, 0x5DE3, + 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, + 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, + 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E, + 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F, + 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, + 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, + 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, + 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, + 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, + 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, + 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C, + 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258, + 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE, + 0x8338, 0x51E7, 0x86F8, 0x53EA, 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, + 0x8131, 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, + 0x8AB0, 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, + 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, + 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80, + 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, 0x6065, 0x667A, + 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, + 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, + 0x7740, 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, + 0x866B, 0x8877, 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, + 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5, 0x5E16, + 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2, + 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178, 0x8776, + 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, + 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, + 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, + 0x63B4, 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, + 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, + 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, + 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, 0x633A, + 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, 0x8A02, + 0x8AE6, 0x8E44, 0x9013, 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, + 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, + 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, + 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, + 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, + 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, + 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, + 0x5012, 0x515A, 0x51AC, 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, + 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, + 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, + 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230, 0x8463, 0x8569, + 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, + 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, + 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, + 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, + 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, + 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566, + 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3, + 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, + 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, + 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, + 0x4E73, 0x5165, 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, + 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5, + 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, + 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4, + 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, + 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, + 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, + 0x5A92, 0x6885, 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, + 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, + 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, + 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6, 0x51FD, 0x7BB1, 0x7872, + 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, + 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, + 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, + 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, + 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6, + 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543, + 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249, + 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8, + 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, + 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, + 0x7F8E, 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, + 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, + 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, + 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2, + 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, + 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, + 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, + 0x6577, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, + 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66, + 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, + 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D, 0x798F, 0x8179, 0x8907, 0x8986, + 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, + 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, + 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, + 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, + 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909, + 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29, + 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355, 0x6B69, 0x752B, + 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, + 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, + 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B, + 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, + 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C, + 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, + 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8, + 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, + 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, + 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, + 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, + 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D, + 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D, + 0x9EBF, 0x4E07, 0x6162, 0x6E80, 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, + 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, + 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, + 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, + 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, + 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, + 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, + 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, + 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, + 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, + 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652, 0x8AED, + 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, + 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531, + 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, + 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, + 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, + 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, + 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83, + 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, + 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50, + 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, + 0x68A8, 0x7406, 0x7483, 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, + 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, + 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, + 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599, + 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, + 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, + 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, + 0x5841, 0x6D99, 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, + 0x5DBA, 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, + 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, + 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, 0x84EE, 0x9023, + 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, 0x52B4, + 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262, + 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, + 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, + 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, + 0x6900, 0x6E7E, 0x7897, 0x8155, 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, + 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, + 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, + 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE, + 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, + 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, + 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, + 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, + 0x5025, 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, + 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, + 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2, 0x50C9, + 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, 0x50EE, + 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114, 0x511A, + 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, + 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, + 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, + 0x51A2, 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, + 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0, + 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, 0x522E, + 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, 0x5254, 0x526A, + 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292, 0x5271, + 0x5288, 0x5291, 0x8FA8, 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, + 0x52CD, 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, + 0x52F8, 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, + 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, + 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, + 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, 0x53B6, + 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, + 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, + 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, + 0x5470, 0x5492, 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, + 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0x54AB, 0x54C2, + 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, + 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, 0x552E, + 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, + 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, + 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, + 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, + 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B, 0x5664, + 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, + 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0, + 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF, + 0x5704, 0x5709, 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, + 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, + 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, + 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, + 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, + 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, + 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, + 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, + 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, + 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, + 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969, 0x5978, 0x5981, 0x599D, + 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, + 0x59DA, 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, + 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, + 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, + 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43, + 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69, 0x5B70, + 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83, 0x5BA6, 0x5BB8, + 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, + 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, + 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, + 0x5C53, 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, + 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7, + 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, + 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, + 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, + 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, + 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, + 0x5DDB, 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, + 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, + 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, + 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, + 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, + 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, + 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, + 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, + 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98, + 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, + 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600E, + 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, + 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, + 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A, + 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, + 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D, + 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, + 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A, + 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, + 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, + 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, + 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, + 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6, + 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, + 0x620D, 0x620C, 0x6214, 0x621B, 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, + 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, + 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, + 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8, + 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, + 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, + 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, + 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, + 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, + 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, + 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC, 0x64DA, + 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209, + 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2, + 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, + 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, + 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, + 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, + 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603, + 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, + 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, 0x6670, + 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, + 0x66C9, 0x66BE, 0x66BC, 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, + 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, + 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, + 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C, + 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, + 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, + 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, + 0x684D, 0x6832, 0x684E, 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, + 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, + 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, + 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD, 0x68D4, 0x68E7, + 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0, + 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, + 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, + 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, + 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, + 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4, + 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7, + 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1, + 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78, 0x6A47, 0x6A62, + 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, + 0x6AA2, 0x6AA3, 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, + 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, + 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, + 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B, + 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, + 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, + 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, + 0x6BF3, 0x6BEF, 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, + 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, + 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, + 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA, 0x6CDB, 0x6CEF, + 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, + 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, + 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, + 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, + 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, + 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, + 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38, + 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, + 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, + 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, + 0x6ECC, 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, + 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, + 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, + 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, + 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, + 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, + 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, + 0x70DD, 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, + 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, + 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, + 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC, 0x71F9, 0x71FF, 0x720D, 0x7210, + 0x721B, 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, + 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, + 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, + 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317, + 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325, 0x733E, + 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, + 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE, + 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, + 0x743F, 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, + 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1, + 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8, + 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, 0x7513, + 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B, + 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, + 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, + 0x75A5, 0x75A3, 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, + 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, + 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609, + 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763B, + 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669, + 0x766A, 0x7667, 0x766C, 0x7670, 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, + 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, + 0x76B4, 0x76B8, 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, + 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, + 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, + 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, 0x778E, + 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC, + 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE, + 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, + 0x7886, 0x787C, 0x789A, 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, + 0x78C6, 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0x78E7, + 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, + 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F, + 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, + 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, + 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, + 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, + 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6, + 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, + 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0, + 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, + 0x7B28, 0x7B36, 0x7B50, 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, + 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, + 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, + 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, + 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, + 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, + 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, + 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, + 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, + 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, + 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06, 0x7D02, 0x7D1C, + 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46, + 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, + 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, + 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, + 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, + 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22, + 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32, 0x7E3A, + 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, + 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, + 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, + 0x7F38, 0x7F3A, 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, + 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, + 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, + 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5, + 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, + 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, + 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, + 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, + 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, + 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, + 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, 0x968B, 0x8146, 0x813E, + 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, 0x8183, + 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, + 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, + 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, + 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, + 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, + 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262, 0x8268, 0x826A, + 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB, + 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, + 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, + 0x82D9, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, + 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, + 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, + 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, + 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, + 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, + 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, + 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, + 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, + 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, + 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548, 0x8541, 0x8602, 0x854B, 0x8555, + 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, + 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, + 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, + 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D, + 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9, 0x86AA, + 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, + 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF, 0x86DB, 0x86EF, 0x8712, + 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, + 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, + 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759, + 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, + 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6, + 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, + 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, + 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, + 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, + 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, + 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902, + 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943, + 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938, + 0x894C, 0x891D, 0x8960, 0x895E, 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, + 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, + 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, + 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, + 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, + 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8, + 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, + 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, + 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, + 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, + 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B, 0x8B5F, + 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93, + 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, + 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, + 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, + 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, + 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, + 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D, + 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, + 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, 0x8DFC, + 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35, + 0x8E30, 0x8E34, 0x8E4A, 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, + 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, + 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, + 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, + 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, + 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, + 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, + 0x8F4E, 0x8F57, 0x8F5C, 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, + 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, + 0x8FF4, 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, + 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F, 0x9050, + 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068, + 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, 0x9080, 0x908A, + 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, + 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, + 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, + 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, + 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, + 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, + 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, 0x9296, + 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, + 0x9344, 0x932E, 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, + 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394, + 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, + 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, + 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, + 0x9462, 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, + 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, + 0x9598, 0x9599, 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, + 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, + 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, + 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E, 0x965D, 0x965F, 0x9666, + 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, + 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, + 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, + 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, + 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C, + 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779, 0x9785, + 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8, + 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, + 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, + 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, + 0x9870, 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, + 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, + 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E, + 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, 0x994C, 0x9955, + 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, + 0x99D8, 0x99D1, 0x99ED, 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, + 0x9A0F, 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, + 0x9A43, 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, + 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF, + 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF, + 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, + 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, + 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, + 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, + 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, + 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, + 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04, + 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, 0x9C32, 0x9C46, + 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, + 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, + 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48, + 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, + 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, + 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, + 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, + 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, + 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, + 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, + 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, + 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, + 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, + 0x9F76, 0x9F95, 0x9F9C, 0x9FA0, 0x582F, 0x69C7, 0x9059, 0x7464, 0x2642, + 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, + 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, + 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, + 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, + 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, + 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, + 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, + 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, + 0x2548, 0x2549, 0x254A, 0x254B, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, + 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, + 0x246E, 0x246F, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, + 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3349, 0x3314, + 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351, 0x3357, 0x330D, + 0x3326, 0x3323, 0x332B, 0x334A, 0x333B, 0x339C, 0x339D, 0x339E, 0x338E, + 0x338F, 0x33C4, 0x33A1, 0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4, + 0x32A5, 0x32A6, 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D, + 0x337C, 0x222E, 0x2211, 0x221A, 0x22A5, 0x2220, 0x221F, 0x22BF, 0x2229, + 0x222A, 0x555E, 0x98F4, 0x6EA2, 0x9C2F, 0x6DEB, 0x8FC2, 0x6B1D, 0x53A9, + 0x958F, 0x5642, 0x990C, 0x7130, 0x8956, 0x9DD7, 0x8FE6, 0x6062, 0x62D0, + 0x6666, 0x559D, 0x845B, 0x9784, 0x5699, 0x6F97, 0x7FF0, 0x7FEB, 0x5FBD, + 0x7947, 0x4FE0, 0x537F, 0x50C5, 0x8EC0, 0x55B0, 0x6ADB, 0x5C51, 0x9774, + 0x7941, 0x6167, 0x7A3D, 0x7E6B, 0x834A, 0x9699, 0x5026, 0x5ACC, 0x6372, + 0x9E7C, 0x8AFA, 0x5DF7, 0x663B, 0x6E9D, 0x9EB4, 0x9D60, 0x7511, 0x91C7, + 0x698A, 0x6805, 0x85A9, 0x9BD6, 0x9306, 0x73CA, 0x53F1, 0x5C62, 0x906E, + 0x6753, 0x707C, 0x7E61, 0x914B, 0x66D9, 0x6E1A, 0x85AF, 0x85F7, 0x54E8, + 0x5EE0, 0x68A2, 0x8523, 0x91AC, 0x9798, 0x8755, 0x9771, 0x9017, 0x7FE0, + 0x647A, 0x901D, 0x87EC, 0x64B0, 0x6813, 0x714E, 0x717D, 0x8A6E, 0x564C, + 0x9061, 0x5275, 0x6414, 0x7626, 0x905C, 0x9A52, 0x817F, 0x9EDB, 0x5544, + 0x6FEF, 0x7422, 0x86F8, 0x5DFD, 0x8FBF, 0x68DA, 0x9C48, 0x6A3D, 0x7C1E, + 0x8A3B, 0x7026, 0x51CB, 0x6357, 0x69CC, 0x939A, 0x585A, 0x6451, 0x912D, + 0x64E2, 0x6EBA, 0x5861, 0x985A, 0x5835, 0x5C60, 0x83DF, 0x8CED, 0x5858, + 0x79B1, 0x9D07, 0x7006, 0x701E, 0x5678, 0x9041, 0x9813, 0x90A3, 0x8B0E, + 0x7058, 0x6962, 0x79B0, 0x56CA, 0x724C, 0x9019, 0x79E4, 0x525D, 0x7BB8, + 0x6F51, 0x91B1, 0x633D, 0x6249, 0x6A0B, 0x67CA, 0x7A17, 0x903C, 0x5A9B, + 0x8B2C, 0x5EDF, 0x7015, 0x983B, 0x853D, 0x77A5, 0x5A29, 0x5E96, 0x6CE1, + 0x84EC, 0x9830, 0x9C52, 0x9EB5, 0x5132, 0x9905, 0x7C7E, 0x9453, 0x6108, + 0x7652, 0x7337, 0x7194, 0x8000, 0x840A, 0x907C, 0x6F23, 0x7149, 0x84EE, + 0x6994, 0x881F, 0x5154, 0x5189, 0x5195, 0x51A4, 0x5539, 0x5533, 0x55E4, + 0x5632, 0x56A5, 0x580B, 0x5ABE, 0x5BC3, 0x5C5B, 0x5E64, 0x6097, 0x6369, + 0x6406, 0x6522, 0x6583, 0x67A6, 0x67B4, 0x689B, 0x688E, 0x6E6E, 0x71D7, + 0x7228, 0x73CE, 0x7504, 0x750D, 0x7515, 0x7693, 0x787C, 0x7A31, 0x9F9D, + 0x7B99, 0x7C90, 0x7CAE, 0x7D9B, 0x7DAE, 0x7D9F, 0x7FD4, 0x822E, 0x828D, + 0x82D2, 0x8323, 0x8375, 0x8517, 0x853E, 0x8782, 0x87D2, 0x890A, 0x89AF, + 0x8ADE, 0x8B41, 0x8DDA, 0x8E09, 0x8F13, 0x8FEA, 0x8FE9, 0x9058, 0x6248, + 0x91C1, 0x95BB, 0x7762, 0x9724, 0x9760, 0x976D, 0x9824, 0x9B2E, 0x9B97, + 0x9BF2, 0x9EAA, 0x9F9C, 0x3001, 0x3002, 0x203E, 0xFF3F, 0x30FC, 0x2015, + 0x2010, 0x301C, 0x2016, 0xFF5C, 0x2026, 0x2025, 0xFF08, 0xFF09, 0x3014, + 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, + 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF1D, 0x3041, 0x3043, + 0x3045, 0x3047, 0x3049, 0x3063, 0x3083, 0x3085, 0x3087, 0x308E, 0x30A1, + 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30C3, 0x30E3, 0x30E5, 0x30E7, 0x30EE, + 0x30F5, 0x30F6, 0x3349, 0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, + 0x3336, 0x3351, 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B, + 0x301D, 0x301E, 0x3094, 0x304B, 0x3051, 0x82A6, 0x8328, 0x5653, 0x53A9, + 0x7259, 0x6C72, 0x7B08, 0x9957, 0x62F3, 0x9910, 0x976D, 0x717D, 0x7A7F, + 0x7BAD, 0x63C3, 0x83DF, 0x7962, 0x53DB, 0x7BC7, 0x8FC4, 0x7C3E, 0x50CA, + 0x5315, 0x55A9, 0x56AE, 0x5819, 0x591B, 0x5C28, 0x5ED0, 0x5ECF, 0x6241, + 0x66C1, 0x6C08, 0x6E23, 0x6EEC, 0x7A97, 0x7BDD, 0x7FE9, 0x8422, 0x8759, + 0x880E, 0x87D2, 0x9A19, 0x9EAD, 0xFFE4, 0xFF07, 0xFF02, 0x11A8, 0x25C1, + 0x25B7, 0x21E9, 0x21E7, 0x21E6, 0x21E8, 0x25A2, 0x2667, 0x2661, 0x2664, + 0x2662, 0x33A0, 0x33A2, 0x33A4, 0x33A5, 0x3397, 0x2113, 0x3398, 0x33B3, + 0x33B2, 0x33B1, 0x33B0, 0x3385, 0x3386, 0x3387, 0x33CB, 0x3390, 0x33D4, + 0x3396, 0x3322, 0x3316, 0x3318, 0x3315, 0x3303, 0x3323, 0x3357, 0x3342, + 0x3339, 0x333B, 0x3300, 0x3331, 0x3347, 0x331E, 0x332A, 0x33CD, 0x337F, + 0x2121, 0x260E, 0x3036, 0x3020, 0x00A9, 0x00AE, 0x0000, 0x2488, 0x2489, + 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2474, 0x2475, + 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, + 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, + 0x3251, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, + 0x2178, 0x2179, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, + 0x3259, 0x325A, 0x325B, 0x249C, 0x249D, 0x249E, 0x249F, 0x24A0, 0x24A1, + 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24AA, + 0x24AB, 0x24AC, 0x24AD, 0x24AE, 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3, + 0x24B4, 0x24B5, 0x3243, 0x323D, 0x323F, 0x3234, 0x3238, 0x3233, 0x323C, + 0x3242, 0x323E, 0x3236, 0x3235, 0x323B, 0x3240, 0x323A, 0x32B0, 0x32AD, + 0x32A9, 0x32AF, 0x3294, 0x32AA, 0x3298, 0x32AB, 0x3292, 0x3291, 0x3293, + 0x32AC, 0x32AE, 0x3296, 0x23A9, 0x23A8, 0x23A7, 0xFE38, 0x23AD, 0x23AC, + 0x23AB, 0xFE38, 0x23AB, 0x23AC, 0x23AD, 0xFE38, 0x23A7, 0x23A8, 0x23A9, + 0xFE38, 0x33CC, 0x3305, 0x00BD, 0x00BC, 0x339F, 0x33A3, 0x33A6, 0xFFFD, + 0xFFFD, 0x329E, 0x3388, 0x3389, 0x33C8, 0x222D, 0x5370, 0x3230, 0x322A, + 0x322B, 0x322C, 0x322D, 0x322E, 0x322F, 0x3237, 0x3241, 0x27A1, 0x21E6, + 0x21E7, 0x21E9, 0x25C9, 0x2660, 0x2665, 0x2663, 0x2666, 0x2600, 0x2601, + 0x2602, 0x2603, 0x261E, 0x261C, 0x261D, 0x261F, 0x3299, 0x24EA, 0x216A, + 0x216B, 0xFF10, 0xFF10, 0x3000, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, + 0x2586, 0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, + 0x2589, 0x2594, 0x2595, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, + 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x25CF, 0x0ED0, 0x2571, + 0x2572, 0x2573, 0x304B, 0x3051, 0x9022, 0x8FBB, 0xFF0C, 0x00B0, 0x3013, + 0x309C, 0x309B, 0x02CF, 0xFF0E, 0x2018, 0x2019, 0x201C, 0x201D, 0x201C, + 0x201E, 0x2018, 0x201A, 0x02BA, 0x51DC, 0x7199, 0x2776, 0x2777, 0x2778, + 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x0000, 0x0000, 0x0000, + 0x217A, 0x217B, 0x0000, 0x0000, 0x0000, 0x217F, 0x210A, 0x2109, 0x0000, + 0x0000, 0x3004, 0x21C6, 0x21C4, 0x21C5, 0x0000, 0x30F7, 0x30F8, 0x30F9, + 0x30FA, 0x5927, 0x5C0F, 0x329D, 0x63A7, 0x0000, 0x0000, 0x337B, 0x337F, + 0x0000, 0x0000, 0x3333, 0x334E, 0x3322, 0x3316, 0x3305, 0x3305, 0x3305, + 0x3333, 0x334E, 0x334E, 0x334E, 0x3303, 0x3318, 0x3315, 0x3339, 0x3339, + 0x3339, 0x3357, 0x3342, 0x3342, 0x3342, 0x3323, 0x333B, 0x3300, 0x331E, + 0x331E, 0x331E, 0x332A, 0x332A, 0x332A, 0x3347, 0x3331, 0x7E8A, 0x891C, + 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631, 0x68C8, 0x92F9, 0x66FB, + 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00, 0x4F03, 0x4F39, 0x4F56, 0x4F92, + 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, + 0x5070, 0x5042, 0x5094, 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, + 0x51EC, 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, + 0x5372, 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF, + 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFA10, 0x589E, + 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4, 0x59BA, 0x5B56, + 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E, 0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, + 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, + 0x5F67, 0x5FB7, 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, + 0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460, + 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x6609, 0x662E, 0x661E, 0x6624, + 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, 0x66A0, 0x66B2, 0x66BF, + 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, 0x6852, 0x67C0, 0x6801, 0x6844, + 0x68CF, 0xFA13, 0x6968, 0xFA14, 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46, + 0x6A73, 0x6A7E, 0x6AE2, 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, + 0x6CDA, 0x6D04, 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, + 0x6DFC, 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5, + 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, 0x7146, + 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1, 0x72BE, 0x7324, 0xFA16, 0x7377, + 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, + 0x7429, 0x742E, 0x7462, 0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C, + 0x769E, 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864, + 0x787A, 0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1, + 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7, 0x7DA0, + 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7, + 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0x856B, 0xFA1F, 0x85B0, 0xFA20, + 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF, + 0xFA22, 0x8AF6, 0x8B53, 0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, + 0x8ECF, 0xFA24, 0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA, + 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210, 0x920A, + 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251, 0x9239, 0x9267, 0x92A7, + 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0, + 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302, + 0x9370, 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, + 0x9592, 0xF9DC, 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, + 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C, + 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB, + 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0x00AC, 0x005C, 0x0020, + 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, + 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, + 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, + 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, + 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, + 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, + 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, + 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, + 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, + 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, 0x007C, 0x007E, + 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, 0x201C, 0x00AB, + 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, 0x00B7, 0x00B6, + 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00BF, 0x0301, + 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, 0x030B, 0x0328, + 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00E6, + 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, 0x00AC, 0x00AE, + 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, 0x00BD, 0x00BE, + 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, 0x00C8, 0x00C9, + 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2, + 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, 0x00DB, 0x00DC, + 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E7, + 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x00F0, + 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F9, 0x00FA, + 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, 0x017D, 0x0305, + 0x0161, 0x2122, 0x017E, 0x0030, 0x2002, 0x0021, 0x0022, 0x0023, 0x0024, + 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, + 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, + 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, + 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, + 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, + 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, + 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, + 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, + 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, + 0xFF40, 0x2032, 0x00A8, 0x2036, 0x00C4, 0x00F9, 0x00E9, 0x00ED, 0x00DF, + 0x00E7, 0x00C7, 0x00D1, 0x00F1, 0x00A2, 0x00A3, 0x00F3, 0x00FA, 0x00A1, + 0x00BF, 0x00BD, 0x00D6, 0x00DC, 0x00E4, 0x00EB, 0x00EF, 0x00F6, 0x00DC, + 0x00E2, 0x00EA, 0x00EE, 0x00F4, 0x00FC, 0x00E0, 0x00E9, 0x00E1, 0x007E, + 0x0030, 0x00AC, 0x005C, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, + 0xFF66, 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, + 0xFF6F, 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, + 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, + 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, + 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, + 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, + 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F, 0x30F0, 0x30F1, 0x30EE, 0x30AB, 0x30B1, + 0x30F4, 0x30AC, 0x30AE, 0x30B0, 0x30B2, 0x30B4, 0x30B6, 0x30B8, 0x30BA, + 0x30BC, 0x30BE, 0x30C0, 0x30C2, 0x30C5, 0x30C7, 0x30C9, 0x30D0, 0x30D1, + 0x30D3, 0x30D4, 0x30D6, 0x30D7, 0x30D9, 0x30DA, 0x30DC, 0x30DD, 0xFF60, + 0x3092, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, 0x3083, 0x3085, 0x3087, + 0x3063, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, + 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, + 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, + 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, + 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, + 0x3093, 0x3090, 0x3091, 0x308E, 0x304C, 0x304E, 0x3050, 0x3052, 0x3054, + 0x3056, 0x3068, 0x305A, 0x305C, 0x305E, 0x3060, 0x3062, 0x3065, 0x3067, + 0x3069, 0x3070, 0x3071, 0x3073, 0x3074, 0x3076, 0x3077, 0x3079, 0x307A, + 0x307C, 0x307D, 0x301D, 0x301E, 0x005B, 0x005D, 0x3008, 0x3009, 0x300A, + 0x300B, 0x300E, 0x300F, 0x3010, 0x3011, 0x2012, 0xFF60, 0x2500, 0x2501, + 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, + 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, + 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C, + 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, + 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, 0x252D, 0x252E, + 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, + 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, + 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, + 0x254A, 0x254B, 0x25B2, 0x20AC, 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, + 0xFB04, 0x0101, 0x012B, 0x016B, 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, + 0x0112, 0x014C, 0x215B, 0x215C, 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, + 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, + 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, + 0x0000, 0x1EBC, 0x01CF, 0x0000, 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, + 0x0168, 0x01CE, 0x011B, 0x0000, 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, + 0x0000, 0x01D4, 0x016F, 0x0169, 0x0251, 0x0251, 0x0251, 0x01FD, 0x00E6, + 0x0254, 0x0254, 0x0254, 0x0259, 0x0259, 0x0259, 0x025A, 0x025A, 0x025A, + 0x025B, 0x025B, 0x025B, 0x006A, 0x014B, 0x0275, 0x028C, 0x028C, 0x028C, + 0x0292, 0x0283, 0x02D0, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, + 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, + 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, + 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, + 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, + 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, + 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, + 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, + 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, + 0x005C, 0x02BB, 0x007C, 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, + 0x00A7, 0x00A4, 0x201C, 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, + 0x2020, 0x2021, 0x00B7, 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, + 0x2026, 0x2030, 0x00BF, 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, + 0x030A, 0x00B8, 0x030B, 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, + 0x00D8, 0x0152, 0x00BA, 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, + 0x002D, 0x00A9, 0x00AC, 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, + 0x00B9, 0x00BC, 0x00BD, 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, + 0x00C5, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, + 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, + 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, + 0x00E3, 0x00E4, 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, + 0x00ED, 0x00EE, 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, + 0x00F6, 0x00F7, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, + 0x0160, 0x0178, 0x017D, 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x20AC, + 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, 0x016B, + 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, 0x215C, + 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, 0x2077, + 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, + 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, 0x0000, + 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, 0x0000, + 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, 0x0169, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, + 0x0039, 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, + 0x003A, 0x003B, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, + 0x0037, 0x0038, 0x0039, 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, + 0x002E, 0x002F, 0x003A, 0x003B, 0x00B7, 0x20AC, 0x0000, 0x2153, 0x2154, + 0x00BE, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x215B, 0x215C, 0x215D, 0x215E, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, + 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x0030, 0x2163, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, + 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x0000, 0x0000, 0x0000, 0x2160, + 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, + 0x216A, 0x216B, 0x0000, 0x0000, 0x0000, 0x0041, 0x0042, 0x0043, 0x0044, + 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, + 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, + 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, + 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, + 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, + 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, + 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, + 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, + 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, + 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, + 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, + 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, + 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, + 0x30F3, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, + 0x3228, 0x3229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x55B6, 0x5408, 0x6CEB, 0x554F, 0x7B54, 0x4F8B, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, + 0x0039, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x3063, 0x624D, 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, + 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x3007, 0x4E00, 0x4E8C, + 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x3007, + 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, + 0x3064, 0x624D, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, + 0x516B, 0x4E5D, 0x5341, 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, + 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x30B3, 0x3063, 0x30C3, 0x30A9, + 0x0000, 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, + 0x2467, 0x2468, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x24D0, + 0x24D1, 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, + 0x24DA, 0x24DB, 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2, + 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x24B6, 0x24B7, + 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, 0x24BF, 0x24C0, + 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7, 0x24C8, 0x24C9, + 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x3042, 0x3044, 0x3046, + 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, + 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, + 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, + 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, + 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, + 0x32D0, 0x32D1, 0x32D2, 0x32D3, 0x32D4, 0x32D5, 0x32D6, 0x32D7, 0x32D8, + 0x32D9, 0x32DA, 0x32DB, 0x32DC, 0x32DD, 0x32DE, 0x32DF, 0x32E0, 0x32E1, + 0x32E2, 0x32E3, 0x32E4, 0x32E5, 0x32E6, 0x32E7, 0x32E8, 0x32E9, 0x32EA, + 0x32EB, 0x32EC, 0x32ED, 0x32EE, 0x32EF, 0x32F0, 0x32F1, 0x32F2, 0x32F3, + 0x32F4, 0x32F5, 0x32F6, 0x32F7, 0x32F8, 0x32F9, 0x32FA, 0x32FB, 0x32FC, + 0x32FD, 0x32FE, 0x30F3, 0x3280, 0x3281, 0x3282, 0x3283, 0x3284, 0x3285, + 0x3286, 0x3287, 0x3288, 0x3289, 0x3290, 0x328A, 0x328B, 0x328C, 0x328D, + 0x328E, 0x328F, 0x8ABF, 0x329F, 0x526F, 0x6E1B, 0x6A19, 0x6B20, 0x57FA, + 0x7981, 0x32A0, 0x32A1, 0x329B, 0x329A, 0x32A3, 0x32A2, 0x3297, 0x51FA, + 0x329C, 0x3295, 0x6E08, 0x5897, 0x554F, 0x7B54, 0x4F8B, 0x96FB, 0x25CC, + 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, + 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, + 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, + 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, + 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, + 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, + 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB, + 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC, + 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, 0x30DF, + 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, 0x30EA, 0x30EB, + 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x65E5, 0x6708, + 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, 0x7B54, 0x4F8B, 0x25CF, + 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, 0x0033, 0x0000, 0x0034, + 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, 0x0000, 0x0038, 0x0000, + 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, + 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, + 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, + 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, + 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, + 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, + 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB, + 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC, + 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, 0x30DF, + 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, 0x30EA, 0x30EB, + 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x65E5, 0x6708, + 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x8CA0, 0x52DD, 0x554F, 0x7B54, + 0x4F8B, 0x25A1, 0x25A1, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, + 0x0033, 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, + 0x0000, 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, + 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, + 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, + 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, + 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, + 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, + 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, + 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, + 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, + 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, + 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, + 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, + 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, + 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, + 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, + 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, + 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, + 0x30F3, 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, + 0x7B54, 0x4F8B, 0x25A0, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, + 0x0033, 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, + 0x0000, 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, + 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, + 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, + 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, + 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, + 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, + 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, + 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, + 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, + 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, + 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, + 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, + 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, + 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, + 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, + 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, + 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, + 0x30F3, 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, + 0x7B54, 0x4F8B, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, 0x0033, + 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, 0x0000, + 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, + 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, + 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, + 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, + 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, + 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, + 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, + 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, + 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, + 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, + 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, + 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, + 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, + 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, + 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, + 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, + 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, 0x7B54, + 0x4F8B, 0x25A0, 0x33C2, 0x33CD, 0x2116, 0x0000, 0x33D8, 0x33DA, 0x2121, + 0x2122, 0x0000, 0x2100, 0x33C2, 0x0000, 0x33C4, 0x2105, 0x3397, 0x3371, + 0x3398, 0x2113, 0x338D, 0x339B, 0x3396, 0x0000, 0x0000, 0x33D7, 0x33D8, + 0x0000, 0x0000, 0x0000, 0x3301, 0x3302, 0x3304, 0x3306, 0x0000, 0x3308, + 0x0000, 0x3307, 0x330A, 0x0000, 0x3309, 0x0000, 0x330B, 0x0000, 0x330C, + 0x330E, 0x330F, 0x3310, 0x3311, 0x3312, 0x3313, 0x0000, 0x3317, 0x0000, + 0x3319, 0x0000, 0x331A, 0x331B, 0x331C, 0x331D, 0x331F, 0x3320, 0x3321, + 0x3324, 0x0000, 0x3325, 0x0000, 0x0000, 0x3328, 0x3329, 0x0000, 0x332D, + 0x0000, 0x0000, 0x332E, 0x332F, 0x3330, 0x3332, 0x0000, 0x0000, 0x3334, + 0x3335, 0x333C, 0x0000, 0x0000, 0x0000, 0x3337, 0x0000, 0x3338, 0x333A, + 0x333D, 0x3341, 0x333E, 0x333F, 0x3340, 0x3343, 0x3344, 0x3345, 0x3346, + 0x3348, 0x334B, 0x334C, 0x334F, 0x3350, 0x0000, 0x0000, 0x3352, 0x3354, + 0x0000, 0x0000, 0x3353, 0x3355, 0x3356, 0x0000, 0x3301, 0x3302, 0x3304, + 0x3306, 0x0000, 0x3308, 0x0000, 0x3307, 0x330A, 0x0000, 0x3309, 0x0000, + 0x330B, 0x0000, 0x330C, 0x330E, 0x330F, 0x3310, 0x3311, 0x3312, 0x3313, + 0x0000, 0x3317, 0x0000, 0x3319, 0x0000, 0x331A, 0x331B, 0x331C, 0x331D, + 0x331F, 0x3320, 0x3321, 0x3324, 0x0000, 0x3325, 0x0000, 0x0000, 0x3328, + 0x3329, 0x0000, 0x332D, 0x0000, 0x0000, 0x332E, 0x332F, 0x3330, 0x3332, + 0x0000, 0x0000, 0x3334, 0x3335, 0x333C, 0x0000, 0x0000, 0x0000, 0x3337, + 0x0000, 0x3338, 0x333A, 0x333D, 0x3341, 0x333E, 0x333F, 0x3340, 0x3343, + 0x3344, 0x3345, 0x3346, 0x3348, 0x334B, 0x334C, 0x334F, 0x3350, 0x0000, + 0x0000, 0x3352, 0x3354, 0x0000, 0x0000, 0x3353, 0x3355, 0x3356, 0x337E, + 0x337D, 0x337C, 0x337B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x002D, 0x003D, 0x2103, 0x2640, 0x2642, 0x3013, + 0x3012, 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, + 0xFF08, 0xFF09, 0x301D, 0x301E, 0x2018, 0x2019, 0x201C, 0x201D, 0x0027, + 0x0022, 0x0000, 0x2135, 0x03D0, 0x220A, 0x210F, 0x00B5, 0x03C6, 0x03DB, + 0x03D1, 0xFFFD, 0x2668, 0x2669, 0x266C, 0xFF1A, 0x00A9, 0x00A9, 0x00AE, + 0x00AE, 0x303B, 0x303B, 0x3033, 0x3034, 0x3035, 0x203C, 0x2049, 0x0021, + 0x203C, 0x2049, 0x244A, 0x0000, 0x2213, 0x2260, 0x2243, 0x2272, 0x2273, + 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, 0xFF5F, + 0xFF60, 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, + 0xFF5F, 0xFF60, 0x239B, 0x239D, 0x239E, 0x23A0, 0x239D, 0x239B, 0x23A0, + 0x239E, 0x23A1, 0x23A3, 0x23A4, 0x23A6, 0x23A3, 0x23A1, 0x23A6, 0x23A4, + 0x23A1, 0x23A3, 0x23A4, 0x23A6, 0x23A3, 0x23A1, 0x23A6, 0x23A4, 0xFF5C, + 0x2015, 0x301D, 0x301E, 0x2018, 0x2019, 0x2018, 0x2019, 0x2702, 0x2702, + 0x2702, 0x2702, 0x303D, 0x3012, 0x309F, 0x534D, 0x2207, 0x2205, 0x22A0, + 0x2296, 0x2298, 0x2295, 0x2297, 0x229E, 0x2295, 0x0021, 0x25B3, 0x25C0, + 0x25B6, 0x21E6, 0x21E8, 0x21E7, 0x21E9, 0x21D0, 0x2194, 0x2198, 0x2199, + 0x2196, 0x2197, 0x21CC, 0x21C6, 0x21C4, 0x21C5, 0x2190, 0x2192, 0x2191, + 0x2193, 0x2194, 0x2195, 0x2504, 0x2506, 0x3030, 0x2307, 0x3030, 0x2307, + 0x3030, 0x2307, 0x3030, 0x2307, 0x3030, 0x2307, 0x2740, 0x273F, 0x25A1, + 0x25A0, 0x25A1, 0x25A1, 0x25A1, 0x25A1, 0x25A1, 0x25AB, 0x25A0, 0x25AA, + 0x271A, 0x271A, 0x25C7, 0x25C6, 0x25C7, 0x25C7, 0x25C7, 0x25C7, 0x25C7, + 0x25C6, 0x25C6, 0x25CE, 0x25C9, 0x25CB, 0x25E6, 0x25CF, 0x2022, 0x2756, + 0x2756, 0x2756, 0x2756, 0x3008, 0x3009, 0x3008, 0x3009, 0x300A, 0x300B, + 0x300A, 0x300B, 0x3053, 0x3053, 0x30B3, 0x30B3, 0x309D, 0x309E, 0x3041, + 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, + 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3051, + 0x3052, 0x3053, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, + 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, + 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, + 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, + 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, + 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, + 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, + 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x30FD, 0x30FE, 0x30FC, 0x30A1, + 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, + 0x30F5, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30F6, 0x30B1, + 0x30B2, 0x30B3, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, + 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, + 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, + 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, + 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, + 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, + 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, + 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F7, 0x30F8, 0x30F9, 0x30FA, + 0x309D, 0x309E, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, + 0x3048, 0x3049, 0x304A, 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, + 0x3050, 0x3051, 0x3051, 0x3052, 0x3053, 0x3053, 0x3054, 0x3055, 0x3056, + 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, + 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, + 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, + 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, + 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, + 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, + 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x30FD, + 0x30FE, 0x30FC, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, + 0x30A8, 0x30A9, 0x30AA, 0x30F5, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, + 0x30B0, 0x30F6, 0x30B1, 0x30B2, 0x30B3, 0x30B3, 0x30B4, 0x30B5, 0x30B6, + 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, + 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, + 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, + 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, + 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, + 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, + 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F7, + 0x30F8, 0x30F9, 0x30FA, 0x3001, 0x3002, 0x30FB, 0xFF0A, 0x203B, 0x25CB, + 0x25CE, 0x25C9, 0x25B3, 0x25B2, 0x30FD, 0x30FE, 0x309D, 0x309E, 0xFF08, + 0xFF09, 0x3014, 0x3015, 0xFF08, 0xFF09, 0x3014, 0x3015, 0x0030, 0x0031, + 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x3041, + 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, + 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3051, + 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, + 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, + 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, + 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, + 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, + 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, + 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, + 0x3091, 0x3092, 0x3093, 0x3094, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, + 0x304B, 0x3051, 0x3063, 0x3083, 0x3085, 0x3087, 0x308E, 0x30A1, 0x30A2, + 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, + 0x30F5, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30F6, 0x30B2, + 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, + 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, + 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, + 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, + 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, + 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, + 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, + 0x30F2, 0x30F3, 0x30F4, 0x30A1, 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30F5, + 0x30F6, 0x30C3, 0x30E3, 0x30E5, 0x30E7, 0x30EE, 0x30FC, 0x30FC, 0x6CE8, + 0x20AC, 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, + 0x016B, 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, + 0x215C, 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, + 0x2077, 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, + 0x2086, 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, + 0x0000, 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, + 0x0000, 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, + 0x0169, 0x0251, 0x0251, 0x0251, 0x01FD, 0x00E6, 0x0254, 0x0254, 0x0254, + 0x0259, 0x0259, 0x0259, 0x025A, 0x025A, 0x025A, 0x025B, 0x025B, 0x025B, + 0x006A, 0x014B, 0x0275, 0x028C, 0x028C, 0x028C, 0x0292, 0x0283, 0x02D0, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, + 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, + 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, + 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, + 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, + 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, + 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, + 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, + 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, + 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, 0x007C, + 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, 0x201C, + 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, 0x00B7, + 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00BF, + 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, 0x030B, + 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, 0x00BA, + 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, 0x00AC, + 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, 0x00BD, + 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, 0x00C8, + 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, + 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, 0x00DB, + 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, + 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, + 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F9, + 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, 0x017D, + 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x20AC, 0x2126, 0x2032, 0x2033, + 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, 0x016B, 0x0113, 0x014D, 0x0100, + 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, 0x215C, 0x215D, 0x215E, 0x2153, + 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x2080, + 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, + 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, 0x0000, 0x0128, 0x01D1, 0x0000, + 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, 0x0000, 0x1EBD, 0x01D0, 0x0000, + 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, 0x0169, 0x0030, 0x0031, 0x0032, + 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0336, 0x002D, + 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, 0x003A, 0x003B, 0x0030, + 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, 0x003A, + 0x003B, 0x00B7, 0x002D, 0x003D, 0x2103, 0x2640, 0x2642, 0x3013, 0x3012, + 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, 0xFF08, + 0xFF09, 0x301D, 0x301E, 0x2018, 0x2019, 0x201C, 0x201D, 0x0027, 0x0022, + 0x9038, 0x8B01, 0x7DE3, 0x9EC3, 0x6EAB, 0x798D, 0x6094, 0x6D77, 0x6168, + 0x6982, 0x6E34, 0x8910, 0x6F22, 0x5668, 0x65E2, 0x7948, 0x865B, 0x97FF, + 0x52E4, 0x8B39, 0x63ED, 0x64CA, 0x784F, 0x7A40, 0x6BBA, 0x7949, 0x8996, + 0x716E, 0x793E, 0x8005, 0x81ED, 0x795D, 0x6691, 0x7F72, 0x6D89, 0x72C0, + 0x613C, 0x771E, 0x7BC0, 0x7956, 0x50E7, 0x5C64, 0x5DE2, 0x618E, 0x8D08, + 0x537D, 0x5606, 0x8457, 0x5FB5, 0x61F2, 0x93AD, 0x798E, 0x9B2D, 0x7A81, + 0x96E3, 0x6885, 0x7E41, 0x6669, 0x5351, 0x7891, 0x8CD3, 0x654F, 0x4FAE, + 0x5002, 0x5840, 0x52C9, 0x6B65, 0x58A8, 0x6BCF, 0x514D, 0x623E, 0x7950, + 0x6B04, 0x9686, 0x865C, 0x6DDA, 0x985E, 0x66C6, 0x6B77, 0x7DF4, 0x934A, + 0x5ECA, 0x9304, 0x6982, 0x51B4, 0x634C, 0x86DB, 0x9089, 0x9022, 0x5049, + 0x7DEF, 0x9055, 0x53A9, 0x990C, 0x885B, 0x5EF6, 0x6CBF, 0x925B, 0x7FC1, + 0x82BD, 0x96C5, 0x5BB3, 0x6168, 0x6982, 0x6BBB, 0x6562, 0x8CAB, 0x5DCC, + 0x9811, 0x5E30, 0x8ECC, 0x7AAE, 0x5747, 0x5091, 0x7A74, 0x5065, 0x5EFA, + 0x9237, 0x6A8E, 0x4EA4, 0x516C, 0x66F4, 0x6821, 0x786C, 0x7D5E, 0x8003, + 0x8CFC, 0x964D, 0x62F7, 0x7F6A, 0x4F7F, 0x53F2, 0x59C9, 0x8B1D, 0x90AA, + 0x53CE, 0x8F2F, 0x67D4, 0x77AC, 0x821C, 0x696F, 0x677E, 0x8A1F, 0x4E08, + 0x57F4, 0x690D, 0x8077, 0x89AA, 0x9042, 0x636E, 0x6442, 0x8239, 0x7DCF, + 0x8061, 0x50CF, 0x8A95, 0x6065, 0x5146, 0x773A, 0x8074, 0x8DF3, 0x5EAD, + 0x5EF7, 0x8247, 0x6843, 0x9003, 0x6D3E, 0x6392, 0x8F29, 0x73ED, 0x9812, + 0x60B2, 0x6249, 0x6590, 0x7DCB, 0x8AB9, 0x8CA7, 0x7236, 0x847A, 0x5206, + 0x5674, 0x61A4, 0x7C89, 0x7D1B, 0x96F0, 0x853D, 0x4FBF, 0x6367, 0x76C6, + 0x685D, 0x8108, 0x8036, 0x7FFC, 0x540F, 0x96A3, 0x9E9F, 0x9E97, 0x806F, + 0x807E, 0x6E7E, 0x5085, 0x5193, 0x51DB, 0x5315, 0x5340, 0x96D9, 0x55A9, + 0x56C1, 0x570D, 0x58AB, 0x59DA, 0x5A36, 0x5ABE, 0x5D4E, 0x5D87, 0x5DC9, + 0x5DD3, 0x5F2D, 0x5F98, 0x60D8, 0x613D, 0x61FE, 0x6268, 0x62CF, 0x651D, + 0x640F, 0x64F2, 0x655D, 0x665F, 0x67A9, 0x67E7, 0x696B, 0x6930, 0x69A7, + 0x6A44, 0x6A90, 0x6C08, 0x6C13, 0x6E23, 0x6F11, 0x6EFE, 0x6F3E, 0x71FF, + 0x73E5, 0x7432, 0x745F, 0x74E0, 0x750C, 0x7672, 0x792A, 0x78D4, 0x79BA, + 0x7A19, 0x7A95, 0x7CF2, 0x7D73, 0x7DDD, 0x7E35, 0x7FAE, 0x7FE1, 0x805A, + 0x805F, 0x8073, 0x8070, 0x8076, 0x8153, 0x818A, 0x81B5, 0x81CD, 0x83F2, + 0x8555, 0x85D5, 0x871A, 0x8836, 0x889E, 0x88D8, 0x88F4, 0x892B, 0x893B, + 0x896A, 0x896F, 0x8A1D, 0x8D05, 0x8D0F, 0x9F4E, 0x8E91, 0x8EA1, 0x9052, + 0x900E, 0x9130, 0x9156, 0x9158, 0x9165, 0x9173, 0x9172, 0x91A2, 0x91AF, + 0x91AA, 0x91B4, 0x91BA, 0x9477, 0x9698, 0x973D, 0x9760, 0x9771, 0x980C, + 0x9873, 0x98C3, 0x9A45, 0x9B4D, 0x9B58, 0x9BC6, 0x9BE1, 0x9BF1, 0x9D48, + 0x9DCF, 0x9F08, 0x6271, 0x6697, 0x610F, 0x8863, 0x9055, 0x907A, 0x78EF, + 0x54E1, 0x2ED7, 0x2EBD, 0x53A9, 0x74DC, 0x904B, 0x990C, 0x885E, 0x92B3, + 0x95B1, 0x5EF6, 0x63F4, 0x6CBF, 0x7159, 0x9060, 0x925B, 0x65BC, 0x5F80, + 0x7FC1, 0x5378, 0x97F3, 0x5316, 0x82B1, 0x83D3, 0x8CA8, 0x904E, 0x82BD, + 0x96C5, 0x9913, 0x5EFB, 0x7070, 0x5BB3, 0x6168, 0x6168, 0x6168, 0x69EA, + 0x6982, 0x676E, 0x89D2, 0x9694, 0x5272, 0x8F44, 0x938C, 0x82C5, 0x5BD2, + 0x74B0, 0x7DE9, 0x7F36, 0x9084, 0x9592, 0x97D3, 0x8218, 0x5371, 0x559C, + 0x3402, 0x3402, 0x5E7E, 0x65E3, 0x671F, 0x6A5F, 0x8D77, 0x98E2, 0x5409, + 0x55AB, 0x8650, 0x9006, 0x53CA, 0x5438, 0x6025, 0x7D1A, 0x5DE8, 0x62D2, + 0x8DDD, 0x9B5A, 0x9B5A, 0x537F, 0x5F3A, 0x6050, 0x69C1, 0x6A4B, 0x6A4B, + 0x9115, 0x97FF, 0x9957, 0x6681, 0x2EA9, 0x8FD1, 0x5036, 0x77E9, 0x5177, + 0x865E, 0x7A7A, 0x9047, 0x6ADB, 0x5553, 0x5951, 0x6075, 0x6167, 0x8FCE, + 0x5091, 0x6F54, 0x7A74, 0x2EBC, 0x2EBC, 0x517C, 0x5238, 0x61B2, 0x6743, + 0x80A9, 0x8B19, 0x9063, 0x539F, 0x8A01, 0x6236, 0x96C7, 0x9867, 0x5433, + 0x5A1B, 0x8AA4, 0x5DE5, 0x614C, 0x6285, 0x63A7, 0x69CB, 0x6D69, 0x6E2F, + 0x8015, 0x8154, 0x8352, 0x8B1B, 0x8CFC, 0x543F, 0x9177, 0x8170, 0x7511, + 0x8FBC, 0x4ECA, 0x9396, 0x5EA7, 0x5F69, 0x63A1, 0x6B72, 0x83DC, 0x51B4, + 0x54B2, 0x524A, 0x7522, 0x9910, 0x59FF, 0x59FF, 0x5DFF, 0x8AEE, 0x8AEE, + 0x8CC7, 0x8CC7, 0x6B21, 0x6B21, 0x6ECB, 0x73BA, 0x53F1, 0x6368, 0x659C, + 0x90AA, 0x52FA, 0x7235, 0x7235, 0x914C, 0x5F31, 0x4E3B, 0x53D7, 0x6388, + 0x5468, 0x7D42, 0x7FD2, 0x8846, 0x9031, 0x4F4F, 0x8853, 0x8FF0, 0x5DE1, + 0x9075, 0x9075, 0x6240, 0x66F8, 0x5973, 0x52DD, 0x5546, 0x5BB5, 0x5C06, + 0x2E8C, 0x2E8D, 0x5C19, 0x6D88, 0x785D, 0x8096, 0x4E08, 0x5B82, 0x57CE, + 0x60C5, 0x57F4, 0x98FE, 0x690D, 0x6B96, 0x98DF, 0x98E0, 0x2EDE, 0x378D, + 0x4FB5, 0x2E97, 0x6D78, 0x771F, 0x9032, 0x4EBB, 0x4EBA, 0x5203, 0x5C0B, + 0x8A0A, 0x8A0A, 0x8FC5, 0x8870, 0x9042, 0x351F, 0x52E2, 0x6210, 0x76DB, + 0x8056, 0x8980, 0x8AA0, 0x8ACB, 0x975C, 0x975C, 0x7A05, 0x8106, 0x96BB, + 0x7C4D, 0x7BC0, 0x8AAA, 0x96EA, 0x7D76, 0x6247, 0x6F98, 0x7FA1, 0x8239, + 0x9078, 0x9077, 0x524D, 0x5168, 0x6383, 0x63F7, 0x7626, 0x8D70, 0x9001, + 0x906D, 0x9020, 0x2ECA, 0x901F, 0x8CCA, 0x5C0A, 0x5C0A, 0x59A5, 0x6CF0, + 0x9000, 0x902E, 0x968A, 0x9BDB, 0x5927, 0x3427, 0x7027, 0x9054, 0x812B, + 0x4E39, 0x6B4E, 0x70AD, 0x8A95, 0x6696, 0x5024, 0x7F6E, 0x7BC9, 0x2EAE, + 0x7B51, 0x9010, 0x67F1, 0x6CE8, 0x99D0, 0x5F6B, 0x5FB5, 0x61F2, 0x671D, + 0x6F6E, 0x8ABF, 0x76F4, 0x6715, 0x6715, 0x589C, 0x8FFD, 0x901A, 0x576A, + 0x91E3, 0x5448, 0x5E1D, 0x7A0B, 0x7684, 0x9069, 0x8FED, 0x6DFB, 0x514E, + 0x9014, 0x783A, 0x5721, 0x571F, 0x51AC, 0x5510, 0x7CD6, 0x85E4, 0x8B04, + 0x9003, 0x900F, 0x9A30, 0x5C0E, 0x9053, 0x5451, 0x3B88, 0x5167, 0x8089, + 0x4E73, 0x5FCD, 0x8A8D, 0x5BE7, 0x7D0D, 0x8987, 0x6D3E, 0x80BA, 0x535A, + 0x8584, 0x8FEB, 0x7E1B, 0x8087, 0x4E37, 0x6F51, 0x91B1, 0x4F34, 0x5224, + 0x534A, 0x5E06, 0x7554, 0x6669, 0x8543, 0x907F, 0x5FAE, 0x9F3B, 0x5339, + 0x2EAA, 0x5F65, 0x59EC, 0x59EB, 0x8A55, 0x5E99, 0x75C5, 0x5A66, 0x6577, + 0x6D6E, 0x8CA0, 0x8CA0, 0x670D, 0x8986, 0x4E19, 0x5E63, 0x5E73, 0x5F0A, + 0x8511, 0x504F, 0x7DE8, 0x8FD4, 0x904D, 0x7C3F, 0x5305, 0x5D29, 0x62B1, + 0x670B, 0x7832, 0x7E2B, 0x80DE, 0x840C, 0x90A6, 0x90A6, 0x98FD, 0x9D6C, + 0x4EA1, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x671B, 0x671B, 0x5192, 0x6469, + 0x7FFB, 0x51E1, 0x78E8, 0x9B54, 0x2FC7, 0x69D9, 0x685D, 0x4FE3, 0x53C8, + 0x7E6D, 0x9EBF, 0x8108, 0x660E, 0x76DF, 0x8FF7, 0x5984, 0x52D0, 0x76F2, + 0x8017, 0x623E, 0x7D0B, 0x9580, 0x7D04, 0x8E8D, 0x687A, 0x687A, 0x6801, + 0x6109, 0x8AED, 0x8F38, 0x52C7, 0x6709, 0x7336, 0x7336, 0x7337, 0x88D5, + 0x904A, 0x66DC, 0x2EB7, 0x8981, 0x990A, 0x7FCC, 0x7FFC, 0x8EB6, 0x862D, + 0x7387, 0x9F8D, 0x9F8D, 0x65C5, 0x6881, 0x71D0, 0x96A3, 0x9C57, 0x9E9F, + 0x7C7B, 0x5EC9, 0x6190, 0x9023, 0x6717, 0x8002, 0x8107, 0x50CA, 0x511A, + 0x5154, 0x5195, 0x2E87, 0x528D, 0x52D7, 0x52F9, 0x5349, 0x353E, 0x53DF, + 0x66FC, 0x5533, 0x55E4, 0x5455, 0x56C0, 0x5939, 0x5A1C, 0x5AC2, 0x5B73, + 0x5BC3, 0x5C14, 0x37E2, 0x5CE6, 0x5E54, 0x4E48, 0x5EE3, 0x6097, 0x62D4, + 0x62CC, 0x641C, 0x63C6, 0x6428, 0x8209, 0x631B, 0x665F, 0x665F, 0x6663, + 0x66F5, 0x675E, 0x689D, 0x688D, 0x69F6, 0x6961, 0x5BE8, 0x5BE8, 0x69BB, + 0x6BCC, 0x6F11, 0x6E17, 0x6F98, 0x6CAA, 0x6CAA, 0x701B, 0x7162, 0x723B, + 0x4E2C, 0x731C, 0x74CA, 0x74EF, 0x7575, 0x75EC, 0x764E, 0x3FB1, 0x776A, + 0x77A9, 0x7940, 0x7953, 0x7953, 0x9F4B, 0x79AE, 0x9083, 0x7B53, 0x7C11, + 0x7C14, 0x4264, 0x7C50, 0x7C58, 0x7D46, 0x7D63, 0x7E22, 0x7E22, 0x7E48, + 0x7E35, 0x7E43, 0x7E8C, 0x7F50, 0x7F51, 0x7F51, 0x7F51, 0x7FC5, 0x7FC6, + 0x7FE9, 0x8141, 0x4453, 0x8258, 0x8279, 0x2EBF, 0x2EC0, 0x82E3, 0x5179, + 0x83A2, 0x8420, 0x83BD, 0x84F4, 0x856D, 0x8587, 0x85F4, 0x4E55, 0x8737, + 0x873B, 0x8805, 0x87BD, 0x867D, 0x8836, 0x8944, 0x88C6, 0x89BD, 0x8ADB, + 0x8B3E, 0x8B5A, 0x8D73, 0x8D99, 0x8DCB, 0x8E34, 0x8E4A, 0x8FEF, 0x9087, + 0x8FFA, 0x901E, 0x9035, 0x9050, 0x8FC8, 0x9081, 0x908A, 0x908A, 0x908A, + 0x908A, 0x908A, 0x908A, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, + 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x92CF, 0x93DD, 0x95BC, + 0x9621, 0x96B2, 0x975C, 0x9839, 0x98EB, 0x9903, 0x9909, 0x9945, 0x9945, + 0x994B, 0x9A08, 0x9A5F, 0x9A65, 0x9AEF, 0x9B18, 0x9BDF, 0x9D09, 0x9D08, + 0x9EA5, 0x9ECC, 0x9F08, 0x9F4A, 0x9F63, 0x9F67, 0x9F6C, 0x7199, 0x7199, + 0x891C, 0x68C8, 0x66FB, 0x5F45, 0x5300, 0x5389, 0x5953, 0xFA11, 0x6852, + 0x6A73, 0x6D87, 0xFA15, 0x8A12, 0x4E04, 0x4E05, 0x4E1F, 0x4E2B, 0x4E2F, + 0x4E30, 0x4E40, 0x4E41, 0x4E44, 0x4E5A, 0x4E7F, 0x4E8D, 0x4E96, 0x4EB9, + 0x4ED0, 0x4EE0, 0x4EFD, 0x4EFF, 0x4F0B, 0x4F15, 0x4F60, 0x4F3B, 0x4F49, + 0x4F54, 0x4F7A, 0x4F7D, 0x4F7E, 0x4F97, 0x4FBE, 0x4FCF, 0x4FFD, 0x5000, + 0x5001, 0x5010, 0x501B, 0x5027, 0x502E, 0x5057, 0x5066, 0x506A, 0x503B, + 0x508F, 0x5096, 0x509C, 0x50CC, 0x50E6, 0x50E9, 0x50EF, 0x5108, 0x510B, + 0x5110, 0x511B, 0x511E, 0x515F, 0x51A1, 0x51BC, 0x51DE, 0x51EE, 0x51F4, + 0x5201, 0x5202, 0x5213, 0x5249, 0x5261, 0x5266, 0x5293, 0x52C8, 0x52F0, + 0x530A, 0x530B, 0x533E, 0x534C, 0x534B, 0x5361, 0x536C, 0x53AB, 0x53DA, + 0x53E6, 0x53F5, 0x5427, 0x544D, 0x5466, 0x546B, 0x5474, 0x548D, 0x5496, + 0x54A1, 0x54AD, 0x54B9, 0x54BF, 0x54C6, 0x54CD, 0x550E, 0x552B, 0x5535, + 0x554A, 0x5560, 0x5561, 0x5588, 0x558E, 0x5608, 0x560E, 0x560F, 0x5637, + 0x563F, 0x5649, 0x564B, 0x564F, 0x5666, 0x5669, 0x566F, 0x5671, 0x5672, + 0x5695, 0x569A, 0x56AC, 0x56AD, 0x56B1, 0x56C9, 0x56DD, 0x56E4, 0x570A, + 0x5715, 0x5723, 0x572F, 0x5733, 0x5734, 0x574C, 0x5770, 0x578C, 0x579C, + 0x57B8, 0x57E6, 0x57ED, 0x57F5, 0x57F6, 0x57FF, 0x5809, 0x5820, 0x5832, + 0x587C, 0x5880, 0x58A9, 0x58CE, 0x58D0, 0x58D4, 0x58DA, 0x58E9, 0x590C, + 0x5924, 0x592F, 0x5961, 0x596D, 0x59CA, 0x59D2, 0x59DD, 0x59E3, 0x59E4, + 0x5A04, 0x5A0C, 0x5A23, 0x5A47, 0x5A55, 0x5A63, 0x5A6D, 0x5A7E, 0x5A9E, + 0x5AA7, 0x5AAC, 0x5AB3, 0x5AE0, 0x5B00, 0x5B19, 0x5B25, 0x5B2D, 0x5B41, + 0x5B7C, 0x5B7E, 0x5B7F, 0x5B8A, 0x5C23, 0x5C2B, 0x5C30, 0x5C63, 0x5C69, + 0x5C7C, 0x5CCB, 0x5CD2, 0x5CF4, 0x5D24, 0x5D26, 0x5D43, 0x5D46, 0x5D4A, + 0x5D92, 0x5D94, 0x5D99, 0x5DA0, 0x5DD8, 0x5DE0, 0x5DF8, 0x5E00, 0x5E12, + 0x5E14, 0x5E15, 0x5E18, 0x5E2E, 0x5E58, 0x5E6B, 0x5E6C, 0x5EA8, 0x5EAA, + 0x5EBE, 0x5EBF, 0x5ECB, 0x5ED2, 0x5F07, 0x5F0E, 0x5F1C, 0x5F1D, 0x5F22, + 0x5F28, 0x5F36, 0x5F3B, 0x5F40, 0x5F50, 0x5F58, 0x5F64, 0x5F89, 0x5F9C, + 0x5FA7, 0x5FA4, 0x5FAF, 0x5FB8, 0x5FC4, 0x5FC9, 0x5FE1, 0x5FE9, 0x5FED, + 0x5FFC, 0x6017, 0x601A, 0x6033, 0x6061, 0x607F, 0x609E, 0x60A4, 0x60B0, + 0x60CB, 0x60DB, 0x60F8, 0x6112, 0x6113, 0x6114, 0x611C, 0x617C, 0x618D, + 0x619F, 0x61A8, 0x61C2, 0x61DF, 0x6215, 0x6229, 0x6243, 0x6246, 0x624C, + 0x6251, 0x6256, 0x62C4, 0x62FC, 0x630A, 0x630D, 0x6318, 0x6339, 0x6342, + 0x6343, 0x6365, 0x6374, 0x637D, 0x6384, 0x6387, 0x6390, 0x639E, 0x63D1, + 0x63DC, 0x6409, 0x6410, 0x6422, 0x6454, 0x645B, 0x646D, 0x647B, 0x64BE, + 0x64BF, 0x64E5, 0x64F7, 0x64FB, 0x6504, 0x6516, 0x6519, 0x6547, 0x6567, + 0x6581, 0x6585, 0x65C2, 0x65F0, 0x65F2, 0x662C, 0x664C, 0x665B, 0x665C, + 0x6661, 0x666B, 0x6677, 0x66A4, 0x66C8, 0x66EC, 0x6705, 0x6713, 0x6733, + 0x6748, 0x674C, 0x6776, 0x677B, 0x67B0, 0x67B2, 0x67F9, 0x67D7, 0x67D9, + 0x67F0, 0x682C, 0x6830, 0x6831, 0x685B, 0x6872, 0x6875, 0x687A, 0x6884, + 0x68A5, 0x68B2, 0x68D0, 0x68D6, 0x68E8, 0x68ED, 0x68F0, 0x68F1, 0x68FC, + 0x6911, 0x6913, 0x6935, 0x693B, 0x6957, 0x6963, 0x6972, 0x697F, 0x6980, + 0x69A6, 0x69AD, 0x69B7, 0x69D6, 0x69D7, 0x6A01, 0x6A0F, 0x6A15, 0x6A28, + 0x6A34, 0x6A3E, 0x6A45, 0x6A50, 0x6A51, 0x6A56, 0x6A5B, 0x6A83, 0x6A89, + 0x6A91, 0x6A9D, 0x6A9E, 0x6A9F, 0x6ADC, 0x6AE7, 0x6AEC, 0x6B1E, 0x6B24, + 0x6B35, 0x6B46, 0x6B56, 0x6B60, 0x6B82, 0x6BBE, 0x6BE1, 0x6BF1, 0x6C10, + 0x6C33, 0x6C35, 0x6C3A, 0x6C59, 0x6C76, 0x6C7B, 0x6C85, 0x6C95, 0x6C9C, + 0x6CD0, 0x6CD4, 0x6CD6, 0x6CE0, 0x6CEB, 0x6CEC, 0x6CEE, 0x6D0A, 0x6D0E, + 0x6D11, 0x6D2E, 0x6D57, 0x6D5E, 0x6D65, 0x6D82, 0x6DBF, 0x6DC4, 0x6DCA, + 0x6DD6, 0x6DE9, 0x6E22, 0x6E51, 0x6EC7, 0x6ECA, 0x6ECE, 0x6EFD, 0x6F1A, + 0x6F2A, 0x6F2F, 0x6F33, 0x6F5A, 0x6F5E, 0x6F62, 0x6F7D, 0x6F8B, 0x6F8D, + 0x6F92, 0x6F94, 0x6F9A, 0x6FA7, 0x6FA8, 0x6FB6, 0x6FDA, 0x6FDE, 0x6FF9, + 0x7039, 0x703C, 0x704A, 0x7054, 0x705D, 0x705E, 0x7064, 0x706C, 0x707E, + 0x7081, 0x7095, 0x70B7, 0x70D3, 0x70D4, 0x70D8, 0x70DC, 0x7107, 0x7120, + 0x7131, 0x714A, 0x7152, 0x7160, 0x7179, 0x7192, 0x71B3, 0x71CB, 0x71D3, + 0x71D6, 0x7200, 0x721D, 0x722B, 0x7238, 0x7241, 0x7253, 0x7255, 0x7256, + 0x725C, 0x728D, 0x72AD, 0x72B4, 0x72C7, 0x72FB, 0x7304, 0x7305, 0x7328, + 0x7331, 0x7343, 0x736C, 0x737C, 0x7383, 0x7385, 0x7386, 0x7395, 0x739E, + 0x739F, 0x73A0, 0x73A6, 0x73AB, 0x73B5, 0x73B7, 0x73BC, 0x73CF, 0x73D9, + 0x73E9, 0x73F4, 0x73FD, 0x7404, 0x740A, 0x741A, 0x741B, 0x7424, 0x7428, + 0x742C, 0x742F, 0x7430, 0x7431, 0x7439, 0x7444, 0x7447, 0x744B, 0x744D, + 0x7451, 0x7457, 0x7466, 0x746B, 0x7471, 0x7480, 0x7485, 0x7486, 0x7487, + 0x7490, 0x7498, 0x749C, 0x74A0, 0x74A3, 0x74A8, 0x74AB, 0x74B5, 0x74BF, + 0x74C8, 0x74DA, 0x74DE, 0x754E, 0x7579, 0x7581, 0x7590, 0x7592, 0x7593, + 0x75B4, 0x75E4, 0x75F9, 0x7600, 0x760A, 0x7615, 0x7616, 0x7619, 0x761E, + 0x762D, 0x7635, 0x7643, 0x764B, 0x7665, 0x766D, 0x766F, 0x7671, 0x7674, + 0x76A4, 0x76A5, 0x76C5, 0x76CC, 0x76EC, 0x76FC, 0x7734, 0x7736, 0x775C, + 0x775F, 0x7760, 0x7772, 0x777D, 0x7795, 0x77AA, 0x77E6, 0x77F0, 0x77F4, + 0x7806, 0x7822, 0x782D, 0x782E, 0x7830, 0x7835, 0x7868, 0x789E, 0x78C8, + 0x78CC, 0x78CE, 0x78E4, 0x78E0, 0x78E1, 0x78F2, 0x78F7, 0x78FB, 0x7931, + 0x7934, 0x793B, 0x793D, 0x7945, 0x795B, 0x795C, 0x798B, 0x7996, 0x7998, + 0x79B8, 0x79BB, 0x79CA, 0x79DA, 0x7A03, 0x7A09, 0x7A11, 0x7A1E, 0x7A2D, + 0x7A39, 0x7A45, 0x7A4C, 0x7A5D, 0x7A60, 0x7A6D, 0x7A78, 0x7AA0, 0x7AA3, + 0x7AB3, 0x7ABB, 0x7ABC, 0x7AC6, 0x7B07, 0x7B14, 0x7B27, 0x7B31, 0x7B47, + 0x7B4E, 0x7B60, 0x7B69, 0x7B6D, 0x7B72, 0x7B91, 0x7BAF, 0x7BD7, 0x7BD9, + 0x7C0B, 0x7C0F, 0x7C20, 0x7C26, 0x7C31, 0x7C36, 0x7C51, 0x7C59, 0x7C67, + 0x7C6E, 0x7C70, 0x7CBC, 0x7CBF, 0x7CC8, 0x7CC9, 0x7CD7, 0x7CD9, 0x7CDD, + 0x7CEB, 0x7D07, 0x7D08, 0x7D09, 0x7D13, 0x7D1D, 0x7D23, 0x7D41, 0x7D53, + 0x7D59, 0x7D5D, 0x7D7A, 0x7D86, 0x7D8B, 0x7D8C, 0x7DCC, 0x7DEB, 0x7DF1, + 0x7DF9, 0x7E08, 0x7E11, 0x7E15, 0x7E20, 0x7E47, 0x7E62, 0x7E6E, 0x7E73, + 0x7E8D, 0x7E91, 0x7E98, 0x7F44, 0x7F4F, 0x7F52, 0x7F53, 0x7F61, 0x7F91, + 0x7FBF, 0x7FCE, 0x7FDF, 0x7FE5, 0x7FEC, 0x7FEE, 0x7FEF, 0x7FFA, 0x800E, + 0x8011, 0x8014, 0x8024, 0x8026, 0x803A, 0x803C, 0x8060, 0x8071, 0x8075, + 0x809E, 0x80A6, 0x80AB, 0x80D7, 0x80D8, 0x8116, 0x8118, 0x813A, 0x814A, + 0x814C, 0x8181, 0x8184, 0x81B4, 0x81CF, 0x81F9, 0x8203, 0x8221, 0x8232, + 0x8234, 0x8246, 0x824B, 0x824F, 0x828E, 0x82AE, 0x82B7, 0x82BE, 0x82C6, + 0x82FE, 0x8343, 0x8351, 0x8355, 0x8386, 0x838D, 0x8392, 0x8398, 0x83A9, + 0x83BF, 0x83C0, 0x83EA, 0x840F, 0x8411, 0x844A, 0x8476, 0x84A8, 0x84AF, + 0x84C0, 0x84C2, 0x84F0, 0x84FD, 0x850C, 0x8534, 0x855E, 0x858F, 0x85B7, + 0x85CE, 0x85AD, 0x8612, 0x8629, 0x8652, 0x8663, 0x866C, 0x866F, 0x867A, + 0x868D, 0x8691, 0x8698, 0x86A7, 0x86A8, 0x86FA, 0x86FD, 0x870B, 0x8713, + 0x8719, 0x871E, 0x8728, 0x873E, 0x8771, 0x8788, 0x8799, 0x87AC, 0x87AD, + 0x87B5, 0x87D6, 0x87EB, 0x87ED, 0x8801, 0x8803, 0x8806, 0x880B, 0x8814, + 0x881C, 0x8856, 0x885F, 0x8864, 0x8898, 0x88AA, 0x88BD, 0x88BE, 0x88CA, + 0x88D2, 0x88DB, 0x88F0, 0x88F1, 0x8906, 0x8918, 0x8919, 0x891A, 0x8927, + 0x8930, 0x893E, 0x897B, 0x89D4, 0x89D6, 0x89E5, 0x89F1, 0x8A07, 0x8A0F, + 0x8A15, 0x8A22, 0x8A4E, 0x8A7F, 0x8AF4, 0x8B1F, 0x8B37, 0x8B43, 0x8B44, + 0x8B54, 0x8B9C, 0x8B9E, 0x8C47, 0x8C54, 0x8C73, 0x8CA4, 0x8CD9, 0x8CE1, + 0x8CF8, 0x8CFE, 0x8D1B, 0x8D69, 0x8D6C, 0x8D84, 0x8D8D, 0x8D95, 0x8DA6, + 0x8DC6, 0x8DCE, 0x8DE4, 0x8DEC, 0x8E20, 0x8E4B, 0x8E6C, 0x8E70, 0x8E7A, + 0x8E92, 0x8EAE, 0x8EB3, 0x8ED1, 0x8ED4, 0x8EF9, 0x8F17, 0x8F36, 0x8FA6, + 0x8FB5, 0x8FB6, 0x8FC6, 0x8FE0, 0x8FE4, 0x8FF6, 0x9002, 0x902C, 0x9044, + 0x9088, 0x9095, 0x9099, 0x909B, 0x90A2, 0x90B4, 0x90D7, 0x90DD, 0x90F4, + 0x9117, 0x911C, 0x9131, 0x913A, 0x913D, 0x9148, 0x915B, 0x9161, 0x9164, + 0x918E, 0x919E, 0x91A8, 0x91AD, 0x91AE, 0x91B2, 0x91BC, 0x91F0, 0x91F7, + 0x91FB, 0x9207, 0x9228, 0x9233, 0x9238, 0x9243, 0x9247, 0x924F, 0x9260, + 0x92C2, 0x92CB, 0x92CC, 0x92DF, 0x930D, 0x9315, 0x931F, 0x9327, 0x9347, + 0x9352, 0x9365, 0x936A, 0x936D, 0x939B, 0x93BA, 0x93A9, 0x93C1, 0x93CA, + 0x93E2, 0x93FA, 0x93FD, 0x940F, 0x9434, 0x943F, 0x9455, 0x946B, 0x9472, + 0x9578, 0x95A6, 0x95A9, 0x95AB, 0x95B4, 0x95BD, 0x95DA, 0x961D, 0x9641, + 0x9658, 0x9684, 0x96A4, 0x96A9, 0x96D2, 0x5DB2, 0x96DE, 0x96E9, 0x96F1, + 0x9702, 0x9709, 0x975A, 0x9763, 0x976E, 0x9773, 0x979A, 0x97A2, 0x97B5, + 0x97B6, 0x97D9, 0x97DE, 0x97F4, 0x980A, 0x980E, 0x981E, 0x9823, 0x982B, + 0x983E, 0x9852, 0x9853, 0x9859, 0x986C, 0x98B8, 0x98BA, 0x98BF, 0x98C8, + 0x98E5, 0x9932, 0x9933, 0x9940, 0x994D, 0x995C, 0x995F, 0x99B1, 0x99B9, + 0x99BA, 0x99C9, 0x9A02, 0x9A16, 0x9A24, 0x9A27, 0x9A2D, 0x9A2E, 0x9A36, + 0x9A38, 0x9A4A, 0x9A56, 0x9AB5, 0x9AB6, 0x9AF9, 0x9B03, 0x9B20, 0x9B33, + 0x9B34, 0x9B73, 0x9B79, 0x9BA7, 0x9BC1, 0x9BC7, 0x9BD7, 0x9BE7, 0x9BEB, + 0x9BF7, 0x9BFA, 0x9BFD, 0x9C0B, 0x9C27, 0x9C2A, 0x9C36, 0x9C41, 0x9C53, + 0x9C63, 0x9C6A, 0x9C77, 0x9D02, 0x9D42, 0x9D47, 0x9D63, 0x9D69, 0x9D7C, + 0x9D7E, 0x9D8D, 0x9DB1, 0x9DC3, 0x9DC7, 0x9DD6, 0x9DDF, 0x9DEB, 0x9DF4, + 0x9E15, 0x9E1D, 0x9EA4, 0x9EA8, 0x9EAC, 0x9EE7, 0x9EEE, 0x9F10, 0x9F12, + 0x9F17, 0x9F19, 0x9F2F, 0x9F37, 0x9F39, 0x9F41, 0x9F45, 0x9F57, 0x9F68, + 0x9F71, 0x9F75, 0x9F90, 0x9F94, 0x9FA2, 0x4E30, 0x3405, 0x4F60, 0x5620, + 0x5ECB, 0x2E95, 0x60A4, 0x69D7, 0x6B24, 0x6FF9, 0x6EE6, 0x71B3, 0x2EA4, + 0x7AC6, 0x7F61, 0x8071, 0x809E, 0x2ECC, 0x91F0, 0x5DB2, 0x97DE, 0x4FD3, + 0x50D9, 0x50F0, 0x51C3, 0x5676, 0x6A54, 0x6D01, 0x6DD0, 0x6E42, 0x6ED9, + 0x73E4, 0x7421, 0x756C, 0x7851, 0x87F5, 0xFFFD, 0x73A8, 0x3AF3, 0x34DB, + 0x440C, 0x3E8A, 0xFFFD, 0xFFFD, 0x4BE8, 0xFFFD, 0x3EDA, 0x3B22, 0xFFFD, + 0x457A, 0x4093, 0xFFFD, 0x4665, 0x4103, 0x4293, 0x46AE, 0x3488, 0xFFFD, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp new file mode 100644 index 0000000000..e729ebf90c --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp @@ -0,0 +1,50 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_EUC_H_1[120 * 3] = { + 0x0020, 0x007E, 0x00E7, 0x8EA0, 0x8EDF, 0x0146, 0xA1A1, 0xA1FE, 0x0279, + 0xA2A1, 0xA2AE, 0x02D7, 0xA2BA, 0xA2C1, 0x02E5, 0xA2CA, 0xA2D0, 0x02ED, + 0xA2DC, 0xA2EA, 0x02F4, 0xA2F2, 0xA2F9, 0x0303, 0xA2FE, 0xA2FE, 0x030B, + 0xA3B0, 0xA3B9, 0x030C, 0xA3C1, 0xA3DA, 0x0316, 0xA3E1, 0xA3FA, 0x0330, + 0xA4A1, 0xA4F3, 0x034A, 0xA5A1, 0xA5F6, 0x039D, 0xA6A1, 0xA6B8, 0x03F3, + 0xA6C1, 0xA6D8, 0x040B, 0xA7A1, 0xA7C1, 0x0423, 0xA7D1, 0xA7F1, 0x0444, + 0xA8A1, 0xA8A1, 0x1D37, 0xA8A2, 0xA8A2, 0x1D39, 0xA8A3, 0xA8A3, 0x1D43, + 0xA8A4, 0xA8A4, 0x1D47, 0xA8A5, 0xA8A5, 0x1D4F, 0xA8A6, 0xA8A6, 0x1D4B, + 0xA8A7, 0xA8A7, 0x1D53, 0xA8A8, 0xA8A8, 0x1D63, 0xA8A9, 0xA8A9, 0x1D5B, + 0xA8AA, 0xA8AA, 0x1D6B, 0xA8AB, 0xA8AB, 0x1D73, 0xA8AC, 0xA8AC, 0x1D38, + 0xA8AD, 0xA8AD, 0x1D3A, 0xA8AE, 0xA8AE, 0x1D46, 0xA8AF, 0xA8AF, 0x1D4A, + 0xA8B0, 0xA8B0, 0x1D52, 0xA8B1, 0xA8B1, 0x1D4E, 0xA8B2, 0xA8B2, 0x1D5A, + 0xA8B3, 0xA8B3, 0x1D6A, 0xA8B4, 0xA8B4, 0x1D62, 0xA8B5, 0xA8B5, 0x1D72, + 0xA8B6, 0xA8B6, 0x1D82, 0xA8B7, 0xA8B7, 0x1D57, 0xA8B8, 0xA8B8, 0x1D66, + 0xA8B9, 0xA8B9, 0x1D5F, 0xA8BA, 0xA8BA, 0x1D6E, 0xA8BB, 0xA8BB, 0x1D76, + 0xA8BC, 0xA8BC, 0x1D54, 0xA8BD, 0xA8BD, 0x1D67, 0xA8BE, 0xA8BE, 0x1D5C, + 0xA8BF, 0xA8BF, 0x1D6F, 0xA8C0, 0xA8C0, 0x1D79, 0xB0A1, 0xB0FE, 0x0465, + 0xB1A1, 0xB1FE, 0x04C3, 0xB2A1, 0xB2FE, 0x0521, 0xB3A1, 0xB3FE, 0x057F, + 0xB4A1, 0xB4FE, 0x05DD, 0xB5A1, 0xB5FE, 0x063B, 0xB6A1, 0xB6FE, 0x0699, + 0xB7A1, 0xB7FE, 0x06F7, 0xB8A1, 0xB8FE, 0x0755, 0xB9A1, 0xB9FE, 0x07B3, + 0xBAA1, 0xBAFE, 0x0811, 0xBBA1, 0xBBFE, 0x086F, 0xBCA1, 0xBCFE, 0x08CD, + 0xBDA1, 0xBDFE, 0x092B, 0xBEA1, 0xBEFE, 0x0989, 0xBFA1, 0xBFFE, 0x09E7, + 0xC0A1, 0xC0FE, 0x0A45, 0xC1A1, 0xC1FE, 0x0AA3, 0xC2A1, 0xC2FE, 0x0B01, + 0xC3A1, 0xC3FE, 0x0B5F, 0xC4A1, 0xC4FE, 0x0BBD, 0xC5A1, 0xC5FE, 0x0C1B, + 0xC6A1, 0xC6FE, 0x0C79, 0xC7A1, 0xC7FE, 0x0CD7, 0xC8A1, 0xC8FE, 0x0D35, + 0xC9A1, 0xC9FE, 0x0D93, 0xCAA1, 0xCAFE, 0x0DF1, 0xCBA1, 0xCBFE, 0x0E4F, + 0xCCA1, 0xCCFE, 0x0EAD, 0xCDA1, 0xCDFE, 0x0F0B, 0xCEA1, 0xCEFE, 0x0F69, + 0xCFA1, 0xCFD3, 0x0FC7, 0xD0A1, 0xD0FE, 0x0FFA, 0xD1A1, 0xD1FE, 0x1058, + 0xD2A1, 0xD2FE, 0x10B6, 0xD3A1, 0xD3FE, 0x1114, 0xD4A1, 0xD4FE, 0x1172, + 0xD5A1, 0xD5FE, 0x11D0, 0xD6A1, 0xD6FE, 0x122E, 0xD7A1, 0xD7FE, 0x128C, + 0xD8A1, 0xD8FE, 0x12EA, 0xD9A1, 0xD9FE, 0x1348, 0xDAA1, 0xDAFE, 0x13A6, + 0xDBA1, 0xDBFE, 0x1404, 0xDCA1, 0xDCFE, 0x1462, 0xDDA1, 0xDDFE, 0x14C0, + 0xDEA1, 0xDEFE, 0x151E, 0xDFA1, 0xDFFE, 0x157C, 0xE0A1, 0xE0FE, 0x15DA, + 0xE1A1, 0xE1FE, 0x1638, 0xE2A1, 0xE2FE, 0x1696, 0xE3A1, 0xE3FE, 0x16F4, + 0xE4A1, 0xE4FE, 0x1752, 0xE5A1, 0xE5FE, 0x17B0, 0xE6A1, 0xE6FE, 0x180E, + 0xE7A1, 0xE7FE, 0x186C, 0xE8A1, 0xE8FE, 0x18CA, 0xE9A1, 0xE9FE, 0x1928, + 0xEAA1, 0xEAFE, 0x1986, 0xEBA1, 0xEBFE, 0x19E4, 0xECA1, 0xECFE, 0x1A42, + 0xEDA1, 0xEDFE, 0x1AA0, 0xEEA1, 0xEEFE, 0x1AFE, 0xEFA1, 0xEFFE, 0x1B5C, + 0xF0A1, 0xF0FE, 0x1BBA, 0xF1A1, 0xF1FE, 0x1C18, 0xF2A1, 0xF2FE, 0x1C76, + 0xF3A1, 0xF3FE, 0x1CD4, 0xF4A1, 0xF4A4, 0x1D32, 0xF4A5, 0xF4A6, 0x205C, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp new file mode 100644 index 0000000000..af095bc570 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp @@ -0,0 +1,19 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_EUC_V_1[27 * 3] = { + 0xA1A2, 0xA1A3, 0x1ECF, 0xA1B1, 0xA1B2, 0x1ED1, 0xA1BC, 0xA1BE, 0x1ED3, + 0xA1C1, 0xA1C5, 0x1ED6, 0xA1CA, 0xA1DB, 0x1EDB, 0xA1E1, 0xA1E1, 0x1EED, + 0xA4A1, 0xA4A1, 0x1EEE, 0xA4A3, 0xA4A3, 0x1EEF, 0xA4A5, 0xA4A5, 0x1EF0, + 0xA4A7, 0xA4A7, 0x1EF1, 0xA4A9, 0xA4A9, 0x1EF2, 0xA4C3, 0xA4C3, 0x1EF3, + 0xA4E3, 0xA4E3, 0x1EF4, 0xA4E5, 0xA4E5, 0x1EF5, 0xA4E7, 0xA4E7, 0x1EF6, + 0xA4EE, 0xA4EE, 0x1EF7, 0xA5A1, 0xA5A1, 0x1EF8, 0xA5A3, 0xA5A3, 0x1EF9, + 0xA5A5, 0xA5A5, 0x1EFA, 0xA5A7, 0xA5A7, 0x1EFB, 0xA5A9, 0xA5A9, 0x1EFC, + 0xA5C3, 0xA5C3, 0x1EFD, 0xA5E3, 0xA5E3, 0x1EFE, 0xA5E5, 0xA5E5, 0x1EFF, + 0xA5E7, 0xA5E7, 0x1F00, 0xA5EE, 0xA5EE, 0x1F01, 0xA5F5, 0xA5F6, 0x1F02, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp new file mode 100644 index 0000000000..f4399cbdea --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp @@ -0,0 +1,232 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_Ext_RKSJ_H_2[665 * 3] = { + 0x0020, 0x007E, 0x00E7, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279, + 0x8180, 0x8188, 0x02B8, 0x8189, 0x8189, 0x1D36, 0x818A, 0x81AC, 0x02C2, + 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330, + 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, 0x8380, 0x8396, 0x03DC, + 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, 0x8440, 0x8460, 0x0423, + 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, 0x8540, 0x857E, 0x00E8, + 0x8580, 0x8580, 0x0186, 0x8581, 0x859E, 0x0128, 0x859F, 0x85DD, 0x0147, + 0x85DE, 0x85FC, 0x0187, 0x8640, 0x867E, 0x01A6, 0x8680, 0x8691, 0x01E5, + 0x8692, 0x8692, 0x0127, 0x8693, 0x869E, 0x01F7, 0x86A2, 0x86ED, 0x1D37, + 0x8740, 0x875D, 0x1D83, 0x875F, 0x8775, 0x1DA1, 0x877E, 0x877E, 0x2083, + 0x8780, 0x878F, 0x1DB8, 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9, + 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300, + 0x879B, 0x879C, 0x1DCF, 0x889F, 0x889F, 0x0465, 0x88A0, 0x88A0, 0x1DD1, + 0x88A1, 0x88B0, 0x0467, 0x88B1, 0x88B1, 0x1CA2, 0x88B2, 0x88B8, 0x0478, + 0x88B9, 0x88B9, 0x1DD2, 0x88BA, 0x88EB, 0x0480, 0x88EC, 0x88EC, 0x1DD3, + 0x88ED, 0x88F0, 0x04B3, 0x88F1, 0x88F1, 0x1DD4, 0x88F2, 0x88F9, 0x04B8, + 0x88FA, 0x88FA, 0x1DD5, 0x88FB, 0x88FC, 0x04C1, 0x8940, 0x8948, 0x04C3, + 0x8949, 0x8949, 0x1DD6, 0x894A, 0x8953, 0x04CD, 0x8954, 0x8954, 0x1DD7, + 0x8955, 0x8957, 0x04D8, 0x8958, 0x8958, 0x1DD8, 0x8959, 0x895A, 0x04DC, + 0x895B, 0x895C, 0x1DD9, 0x895D, 0x8960, 0x04E0, 0x8961, 0x8961, 0x1DDB, + 0x8962, 0x897E, 0x04E5, 0x8980, 0x898A, 0x0502, 0x898B, 0x898B, 0x1DDC, + 0x898C, 0x89A5, 0x050E, 0x89A6, 0x89A6, 0x1DDD, 0x89A7, 0x89A7, 0x1CC9, + 0x89A8, 0x89A8, 0x1DDE, 0x89A9, 0x89DD, 0x052B, 0x89DE, 0x89DE, 0x1DDF, + 0x89DF, 0x89F7, 0x0561, 0x89F8, 0x89F8, 0x1DE0, 0x89F9, 0x89FA, 0x057B, + 0x89FB, 0x89FB, 0x1DE1, 0x89FC, 0x89FC, 0x057E, 0x8A40, 0x8A40, 0x057F, + 0x8A41, 0x8A41, 0x1DE2, 0x8A42, 0x8A60, 0x0581, 0x8A61, 0x8A61, 0x1961, + 0x8A62, 0x8A67, 0x05A1, 0x8A68, 0x8A68, 0x139F, 0x8A69, 0x8A7E, 0x05A8, + 0x8A80, 0x8A84, 0x05BE, 0x8A85, 0x8A85, 0x1DE3, 0x8A86, 0x8A8A, 0x05C4, + 0x8A8B, 0x8A8B, 0x1DE4, 0x8A8C, 0x8A92, 0x05CA, 0x8A93, 0x8A93, 0x1DE5, + 0x8A94, 0x8A95, 0x05D2, 0x8A96, 0x8A96, 0x1731, 0x8A97, 0x8A99, 0x05D5, + 0x8A9A, 0x8A9A, 0x1DE6, 0x8A9B, 0x8ABF, 0x05D9, 0x8AC0, 0x8AC0, 0x1DE7, + 0x8AC1, 0x8AC1, 0x1572, 0x8AC2, 0x8ACA, 0x0600, 0x8ACB, 0x8ACB, 0x1DE8, + 0x8ACC, 0x8ACF, 0x060A, 0x8AD0, 0x8AD0, 0x1A20, 0x8AD1, 0x8AE2, 0x060F, + 0x8AE3, 0x8AE3, 0x1DE9, 0x8AE4, 0x8AFC, 0x0622, 0x8B40, 0x8B49, 0x063B, + 0x8B4A, 0x8B4A, 0x1DEA, 0x8B4B, 0x8B5E, 0x0646, 0x8B5F, 0x8B5F, 0x1DEB, + 0x8B60, 0x8B7E, 0x065B, 0x8B80, 0x8B9F, 0x067A, 0x8BA0, 0x8BA0, 0x1DEC, + 0x8BA1, 0x8BA7, 0x069B, 0x8BA8, 0x8BA8, 0x1DED, 0x8BA9, 0x8BC3, 0x06A3, + 0x8BC4, 0x8BC4, 0x1D32, 0x8BC5, 0x8BCC, 0x06BF, 0x8BCD, 0x8BCD, 0x1DEE, + 0x8BCE, 0x8BEA, 0x06C8, 0x8BEB, 0x8BEB, 0x1DEF, 0x8BEC, 0x8BF1, 0x06E6, + 0x8BF2, 0x8BF2, 0x1DF0, 0x8BF3, 0x8BF8, 0x06ED, 0x8BF9, 0x8BF9, 0x1DF1, + 0x8BFA, 0x8BFA, 0x06F4, 0x8BFB, 0x8BFB, 0x1DF2, 0x8BFC, 0x8BFC, 0x06F6, + 0x8C40, 0x8C42, 0x06F7, 0x8C43, 0x8C43, 0x1DF3, 0x8C44, 0x8C55, 0x06FB, + 0x8C56, 0x8C56, 0x1DF4, 0x8C57, 0x8C63, 0x070E, 0x8C64, 0x8C64, 0x1DF5, + 0x8C65, 0x8C6C, 0x071C, 0x8C6D, 0x8C6D, 0x1DF6, 0x8C6E, 0x8C70, 0x0725, + 0x8C71, 0x8C71, 0x1DF7, 0x8C72, 0x8C73, 0x0729, 0x8C74, 0x8C74, 0x1DF8, + 0x8C75, 0x8C79, 0x072C, 0x8C7A, 0x8C7A, 0x1C0D, 0x8C7B, 0x8C7E, 0x0732, + 0x8C80, 0x8C83, 0x0736, 0x8C84, 0x8C84, 0x1DF9, 0x8C85, 0x8C90, 0x073B, + 0x8C91, 0x8C91, 0x1DFA, 0x8C92, 0x8C98, 0x0748, 0x8C99, 0x8C99, 0x1DFB, + 0x8C9A, 0x8C9D, 0x0750, 0x8C9E, 0x8C9E, 0x1DFC, 0x8C9F, 0x8CB1, 0x0755, + 0x8CB2, 0x8CB2, 0x1DFD, 0x8CB3, 0x8CBE, 0x0769, 0x8CBF, 0x8CBF, 0x1DFE, + 0x8CC0, 0x8CFC, 0x0776, 0x8D40, 0x8D49, 0x07B3, 0x8D4A, 0x8D4A, 0x1DFF, + 0x8D4B, 0x8D55, 0x07BE, 0x8D56, 0x8D56, 0x1E00, 0x8D57, 0x8D60, 0x07CA, + 0x8D61, 0x8D61, 0x1E01, 0x8D62, 0x8D7A, 0x07D5, 0x8D7B, 0x8D7B, 0x16DD, + 0x8D7C, 0x8D7E, 0x07EF, 0x8D80, 0x8D8C, 0x07F2, 0x8D8D, 0x8D8D, 0x1E02, + 0x8D8E, 0x8D93, 0x0800, 0x8D94, 0x8D94, 0x1E03, 0x8D95, 0x8D98, 0x0807, + 0x8D99, 0x8D99, 0x1E04, 0x8D9A, 0x8DD0, 0x080C, 0x8DD1, 0x8DD1, 0x1E05, + 0x8DD2, 0x8DE4, 0x0844, 0x8DE5, 0x8DE5, 0x1E06, 0x8DE6, 0x8DF1, 0x0858, + 0x8DF2, 0x8DF2, 0x1E07, 0x8DF3, 0x8DFC, 0x0865, 0x8E40, 0x8E45, 0x086F, + 0x8E46, 0x8E46, 0x1E08, 0x8E47, 0x8E48, 0x0876, 0x8E49, 0x8E49, 0x1E09, + 0x8E4A, 0x8E4A, 0x0879, 0x8E4B, 0x8E4B, 0x1E0A, 0x8E4C, 0x8E57, 0x087B, + 0x8E58, 0x8E58, 0x1E0B, 0x8E59, 0x8E7E, 0x0888, 0x8E80, 0x8EB5, 0x08AE, + 0x8EB6, 0x8EB6, 0x1E0C, 0x8EB7, 0x8EC5, 0x08E5, 0x8EC6, 0x8EC6, 0x1E0D, + 0x8EC7, 0x8EC7, 0x1929, 0x8EC8, 0x8ED4, 0x08F6, 0x8ED5, 0x8ED5, 0x1E0E, + 0x8ED6, 0x8EDA, 0x0904, 0x8EDB, 0x8EDC, 0x1E0F, 0x8EDD, 0x8EFC, 0x090B, + 0x8F40, 0x8F49, 0x092B, 0x8F4A, 0x8F4A, 0x1E11, 0x8F4B, 0x8F54, 0x0936, + 0x8F55, 0x8F55, 0x1E12, 0x8F56, 0x8F7E, 0x0941, 0x8F80, 0x8F8B, 0x096A, + 0x8F8C, 0x8F8D, 0x1E13, 0x8F8E, 0x8F91, 0x0978, 0x8F92, 0x8F93, 0x1E15, + 0x8F94, 0x8FA2, 0x097E, 0x8FA3, 0x8FA3, 0x1E17, 0x8FA4, 0x8FB0, 0x098E, + 0x8FB1, 0x8FB1, 0x1E18, 0x8FB2, 0x8FBC, 0x099C, 0x8FBD, 0x8FBD, 0x1E19, + 0x8FBE, 0x8FD2, 0x09A8, 0x8FD3, 0x8FD3, 0x1E1A, 0x8FD4, 0x8FDC, 0x09BE, + 0x8FDD, 0x8FDD, 0x1E1B, 0x8FDE, 0x8FE1, 0x09C8, 0x8FE2, 0x8FE2, 0x1E1C, + 0x8FE3, 0x8FFC, 0x09CD, 0x9040, 0x9048, 0x09E7, 0x9049, 0x9049, 0x1E1D, + 0x904A, 0x9077, 0x09F1, 0x9078, 0x9078, 0x1E1E, 0x9079, 0x907E, 0x0A20, + 0x9080, 0x9080, 0x1E1F, 0x9081, 0x9088, 0x0A27, 0x9089, 0x9089, 0x1E20, + 0x908A, 0x909F, 0x0A30, 0x90A0, 0x90A0, 0x1E21, 0x90A1, 0x90BF, 0x0A47, + 0x90C0, 0x90C0, 0x1E22, 0x90C1, 0x90E3, 0x0A67, 0x90E4, 0x90E4, 0x1E23, + 0x90E5, 0x90EE, 0x0A8B, 0x90EF, 0x90F0, 0x1E24, 0x90F1, 0x90F6, 0x0A97, + 0x90F7, 0x90F8, 0x1E26, 0x90F9, 0x90FC, 0x0A9F, 0x9140, 0x9145, 0x0AA3, + 0x9146, 0x9146, 0x1E28, 0x9147, 0x9147, 0x1A6E, 0x9148, 0x9157, 0x0AAB, + 0x9158, 0x9158, 0x1E29, 0x9159, 0x916A, 0x0ABC, 0x916B, 0x916B, 0x1E2A, + 0x916C, 0x916D, 0x0ACF, 0x916E, 0x916E, 0x1E2B, 0x916F, 0x917D, 0x0AD2, + 0x917E, 0x917E, 0x1E2C, 0x9180, 0x9188, 0x0AE2, 0x9189, 0x9189, 0x1E2D, + 0x918A, 0x91BA, 0x0AEC, 0x91BB, 0x91BB, 0x1E2E, 0x91BC, 0x91CA, 0x0B1E, + 0x91CB, 0x91CB, 0x1E2F, 0x91CC, 0x91D9, 0x0B2E, 0x91DA, 0x91DA, 0x1E30, + 0x91DB, 0x91E0, 0x0B3D, 0x91E1, 0x91E1, 0x1E31, 0x91E2, 0x91EC, 0x0B44, + 0x91ED, 0x91ED, 0x1E32, 0x91EE, 0x91F2, 0x0B50, 0x91F3, 0x91F4, 0x1E33, + 0x91F5, 0x91FA, 0x0B57, 0x91FB, 0x91FB, 0x1E35, 0x91FC, 0x91FC, 0x0B5E, + 0x9240, 0x9245, 0x0B5F, 0x9246, 0x9246, 0x1E36, 0x9247, 0x9247, 0x0B66, + 0x9248, 0x9249, 0x1E37, 0x924A, 0x924B, 0x0B69, 0x924C, 0x924D, 0x1E39, + 0x924E, 0x925B, 0x0B6D, 0x925C, 0x925C, 0x1E3B, 0x925D, 0x927E, 0x0B7C, + 0x9280, 0x928F, 0x0B9E, 0x9290, 0x9290, 0x1E3C, 0x9291, 0x9294, 0x0BAF, + 0x9295, 0x9295, 0x1E3D, 0x9296, 0x929B, 0x0BB4, 0x929C, 0x929C, 0x1E3E, + 0x929D, 0x92BA, 0x0BBB, 0x92BB, 0x92BB, 0x1E3F, 0x92BC, 0x92C5, 0x0BDA, + 0x92C6, 0x92C6, 0x1E40, 0x92C7, 0x92C7, 0x0BE5, 0x92C8, 0x92C8, 0x1E41, + 0x92C9, 0x92CA, 0x0BE7, 0x92CB, 0x92CB, 0x1E42, 0x92CC, 0x92CC, 0x0BEA, + 0x92CD, 0x92CD, 0x1E43, 0x92CE, 0x92D8, 0x0BEC, 0x92D9, 0x92D9, 0x11B5, + 0x92DA, 0x92FC, 0x0BF8, 0x9340, 0x9340, 0x0C1B, 0x9341, 0x9341, 0x1E44, + 0x9342, 0x9345, 0x0C1D, 0x9346, 0x9346, 0x1E45, 0x9347, 0x934C, 0x0C22, + 0x934D, 0x934D, 0x1E46, 0x934E, 0x9354, 0x0C29, 0x9355, 0x9355, 0x1E47, + 0x9356, 0x935D, 0x0C31, 0x935E, 0x935E, 0x1E48, 0x935F, 0x9366, 0x0C3A, + 0x9367, 0x9367, 0x1E49, 0x9368, 0x9369, 0x0C43, 0x936A, 0x936A, 0x1E4A, + 0x936B, 0x936F, 0x0C46, 0x9370, 0x9371, 0x1E4B, 0x9372, 0x9375, 0x0C4D, + 0x9376, 0x9376, 0x16DF, 0x9377, 0x937E, 0x0C52, 0x9380, 0x9383, 0x0C5A, + 0x9384, 0x9384, 0x1E4D, 0x9385, 0x938D, 0x0C5F, 0x938E, 0x938E, 0x1450, + 0x938F, 0x9392, 0x0C69, 0x9393, 0x9393, 0x1536, 0x9394, 0x9397, 0x0C6E, + 0x9398, 0x9398, 0x1E4E, 0x9399, 0x93BB, 0x0C73, 0x93BC, 0x93BC, 0x1E4F, + 0x93BD, 0x93BF, 0x0C97, 0x93C0, 0x93C0, 0x1E50, 0x93C1, 0x93D1, 0x0C9B, + 0x93D2, 0x93D3, 0x1E51, 0x93D4, 0x93D8, 0x0CAE, 0x93D9, 0x93DA, 0x1E53, + 0x93DB, 0x93DE, 0x0CB5, 0x93DF, 0x93DF, 0x1E55, 0x93E0, 0x93E3, 0x0CBA, + 0x93E4, 0x93E5, 0x1E56, 0x93E6, 0x93E7, 0x0CC0, 0x93E8, 0x93E8, 0x1E58, + 0x93E9, 0x93F3, 0x0CC3, 0x93F4, 0x93F4, 0x1AED, 0x93F5, 0x93FC, 0x0CCF, + 0x9440, 0x9447, 0x0CD7, 0x9448, 0x9448, 0x1E59, 0x9449, 0x9457, 0x0CE0, + 0x9458, 0x9458, 0x1E5A, 0x9459, 0x9475, 0x0CF0, 0x9476, 0x9476, 0x1E5B, + 0x9477, 0x947E, 0x0D0E, 0x9480, 0x9486, 0x0D16, 0x9487, 0x9487, 0x1E5C, + 0x9488, 0x9488, 0x1989, 0x9489, 0x9489, 0x1E5D, 0x948A, 0x948C, 0x0D20, + 0x948D, 0x948D, 0x1E5E, 0x948E, 0x94A1, 0x0D24, 0x94A2, 0x94A2, 0x1E5F, + 0x94A3, 0x94AB, 0x0D39, 0x94AC, 0x94AC, 0x1E60, 0x94AD, 0x94AD, 0x0D43, + 0x94AE, 0x94AE, 0x1E61, 0x94AF, 0x94D1, 0x0D45, 0x94D2, 0x94D2, 0x1E62, + 0x94D3, 0x94DF, 0x0D69, 0x94E0, 0x94E0, 0x1E63, 0x94E1, 0x94F2, 0x0D77, + 0x94F3, 0x94F3, 0x1E64, 0x94F4, 0x94FC, 0x0D8A, 0x9540, 0x9540, 0x0D93, + 0x9541, 0x9542, 0x1E65, 0x9543, 0x954D, 0x0D96, 0x954E, 0x954E, 0x1E67, + 0x954F, 0x954F, 0x143B, 0x9550, 0x9550, 0x0DA3, 0x9551, 0x9551, 0x1E68, + 0x9552, 0x9553, 0x0DA5, 0x9554, 0x9554, 0x1E69, 0x9555, 0x955E, 0x0DA8, + 0x955F, 0x955F, 0x1E6A, 0x9560, 0x956C, 0x0DB3, 0x956D, 0x956D, 0x1E6B, + 0x956E, 0x956F, 0x0DC1, 0x9570, 0x9570, 0x1E6C, 0x9571, 0x957E, 0x0DC4, + 0x9580, 0x95C0, 0x0DD2, 0x95C1, 0x95C1, 0x1E6D, 0x95C2, 0x95CA, 0x0E14, + 0x95CB, 0x95CB, 0x1E6E, 0x95CC, 0x95D7, 0x0E1E, 0x95D8, 0x95D8, 0x1E6F, + 0x95D9, 0x95F6, 0x0E2B, 0x95F7, 0x95F7, 0x1E70, 0x95F8, 0x95FC, 0x0E4A, + 0x9640, 0x9640, 0x0E4F, 0x9641, 0x9641, 0x1E71, 0x9642, 0x9647, 0x0E51, + 0x9648, 0x9648, 0x1E72, 0x9649, 0x9669, 0x0E58, 0x966A, 0x966A, 0x1E73, + 0x966B, 0x967E, 0x0E7A, 0x9680, 0x9689, 0x0E8E, 0x968A, 0x968A, 0x1D33, + 0x968B, 0x968F, 0x0E99, 0x9690, 0x9690, 0x1E74, 0x9691, 0x9698, 0x0E9F, + 0x9699, 0x9699, 0x102F, 0x969A, 0x96CA, 0x0EA8, 0x96CB, 0x96CB, 0x1E75, + 0x96CC, 0x96D6, 0x0EDA, 0x96D7, 0x96D7, 0x1E76, 0x96D8, 0x96DC, 0x0EE6, + 0x96DD, 0x96DD, 0x1E77, 0x96DE, 0x96DF, 0x0EEC, 0x96E0, 0x96E0, 0x1E78, + 0x96E1, 0x96F6, 0x0EEF, 0x96F7, 0x96F7, 0x1935, 0x96F8, 0x96F8, 0x1E79, + 0x96F9, 0x96F9, 0x0F07, 0x96FA, 0x96FA, 0x1E7A, 0x96FB, 0x96FB, 0x0F09, + 0x96FC, 0x96FC, 0x1E7B, 0x9740, 0x9750, 0x0F0B, 0x9751, 0x9751, 0x1E7C, + 0x9752, 0x976E, 0x0F1D, 0x976F, 0x976F, 0x1E7D, 0x9770, 0x9772, 0x0F3B, + 0x9773, 0x9773, 0x1E7E, 0x9774, 0x9778, 0x0F3F, 0x9779, 0x9779, 0x1D34, + 0x977A, 0x977E, 0x0F45, 0x9780, 0x9788, 0x0F4A, 0x9789, 0x9789, 0x1E7F, + 0x978A, 0x97C8, 0x0F54, 0x97C9, 0x97C9, 0x1E80, 0x97CA, 0x97F7, 0x0F94, + 0x97F8, 0x97F9, 0x1E81, 0x97FA, 0x97FC, 0x0FC4, 0x9840, 0x9840, 0x1E83, + 0x9841, 0x984F, 0x0FC8, 0x9850, 0x9850, 0x1E84, 0x9851, 0x9854, 0x0FD8, + 0x9855, 0x9855, 0x1777, 0x9856, 0x9857, 0x0FDD, 0x9858, 0x9858, 0x1E85, + 0x9859, 0x9872, 0x0FE0, 0x989F, 0x98D3, 0x0FFA, 0x98D4, 0x98D4, 0x0EA7, + 0x98D5, 0x98FC, 0x1030, 0x9940, 0x995B, 0x1058, 0x995C, 0x995C, 0x1E86, + 0x995D, 0x9965, 0x1075, 0x9966, 0x9966, 0x1E87, 0x9967, 0x9969, 0x107F, + 0x996A, 0x996A, 0x1E88, 0x996B, 0x996B, 0x1083, 0x996C, 0x996C, 0x1E89, + 0x996D, 0x997E, 0x1085, 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A4E, 0x1114, + 0x9A4F, 0x9A4F, 0x1E8A, 0x9A50, 0x9A58, 0x1124, 0x9A59, 0x9A59, 0x1E8B, + 0x9A5A, 0x9A6E, 0x112E, 0x9A6F, 0x9A6F, 0x1E8C, 0x9A70, 0x9A7C, 0x1144, + 0x9A7D, 0x9A7D, 0x1E8D, 0x9A7E, 0x9A7E, 0x1152, 0x9A80, 0x9A8A, 0x1153, + 0x9A8B, 0x9A8B, 0x1E8E, 0x9A8C, 0x9AC1, 0x115F, 0x9AC2, 0x9AC2, 0x1E8F, + 0x9AC3, 0x9AE1, 0x1196, 0x9AE2, 0x9AE2, 0x0BF7, 0x9AE3, 0x9AFC, 0x11B6, + 0x9B40, 0x9B5B, 0x11D0, 0x9B5C, 0x9B5C, 0x1E90, 0x9B5D, 0x9B7E, 0x11ED, + 0x9B80, 0x9B82, 0x120F, 0x9B83, 0x9B83, 0x1E91, 0x9B84, 0x9B9F, 0x1213, + 0x9BA0, 0x9BA0, 0x1E92, 0x9BA1, 0x9BEF, 0x1230, 0x9BF0, 0x9BF0, 0x1E93, + 0x9BF1, 0x9BFC, 0x1280, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CA1, 0x12CB, + 0x9CA2, 0x9CA2, 0x1E94, 0x9CA3, 0x9CFC, 0x12EE, 0x9D40, 0x9D7E, 0x1348, + 0x9D80, 0x9D80, 0x1E95, 0x9D81, 0x9D8B, 0x1388, 0x9D8C, 0x9D8C, 0x1E96, + 0x9D8D, 0x9D97, 0x1394, 0x9D98, 0x9D98, 0x05A7, 0x9D99, 0x9DB6, 0x13A0, + 0x9DB7, 0x9DB7, 0x1E97, 0x9DB8, 0x9DCA, 0x13BF, 0x9DCB, 0x9DCB, 0x1E98, + 0x9DCC, 0x9DFC, 0x13D3, 0x9E40, 0x9E63, 0x1404, 0x9E64, 0x9E64, 0x1E99, + 0x9E65, 0x9E68, 0x1429, 0x9E69, 0x9E69, 0x1E9A, 0x9E6A, 0x9E76, 0x142E, + 0x9E77, 0x9E77, 0x0DA2, 0x9E78, 0x9E7E, 0x143C, 0x9E80, 0x9E8A, 0x1443, + 0x9E8B, 0x9E8B, 0x1E9B, 0x9E8C, 0x9E8C, 0x144F, 0x9E8D, 0x9E8D, 0x0C68, + 0x9E8E, 0x9E93, 0x1451, 0x9E94, 0x9E94, 0x1E9C, 0x9E95, 0x9EFC, 0x1458, + 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FB6, 0x14FF, 0x9FB7, 0x9FB7, 0x0C6D, + 0x9FB8, 0x9FCD, 0x1537, 0x9FCE, 0x9FCE, 0x1E9D, 0x9FCF, 0x9FF2, 0x154E, + 0x9FF3, 0x9FF3, 0x05FF, 0x9FF4, 0x9FFC, 0x1573, 0xE040, 0xE07E, 0x157C, + 0xE080, 0xE092, 0x15BB, 0xE093, 0xE093, 0x1E9E, 0xE094, 0xE0A3, 0x15CF, + 0xE0A4, 0xE0A4, 0x1E9F, 0xE0A5, 0xE0DC, 0x15E0, 0xE0DD, 0xE0DD, 0x1EA0, + 0xE0DE, 0xE0F3, 0x1619, 0xE0F4, 0xE0F4, 0x1D35, 0xE0F5, 0xE0FC, 0x1630, + 0xE140, 0xE149, 0x1638, 0xE14A, 0xE14A, 0x1EA1, 0xE14B, 0xE14E, 0x1643, + 0xE14F, 0xE150, 0x1EA2, 0xE151, 0xE17E, 0x1649, 0xE180, 0xE1A8, 0x1677, + 0xE1A9, 0xE1A9, 0x1EA4, 0xE1AA, 0xE1E5, 0x16A1, 0xE1E6, 0xE1E6, 0x07EE, + 0xE1E7, 0xE1E7, 0x16DE, 0xE1E8, 0xE1E8, 0x0C51, 0xE1E9, 0xE1EC, 0x16E0, + 0xE1ED, 0xE1ED, 0x1EA5, 0xE1EE, 0xE1FC, 0x16E5, 0xE240, 0xE268, 0x16F4, + 0xE269, 0xE269, 0x1EA6, 0xE26A, 0xE272, 0x171E, 0xE273, 0xE273, 0x1EA7, + 0xE274, 0xE27C, 0x1728, 0xE27D, 0xE27D, 0x05D4, 0xE27E, 0xE27E, 0x1732, + 0xE280, 0xE2B6, 0x1733, 0xE2B7, 0xE2B7, 0x1EA8, 0xE2B8, 0xE2C3, 0x176B, + 0xE2C4, 0xE2C4, 0x0FDC, 0xE2C5, 0xE2E1, 0x1778, 0xE2E2, 0xE2E2, 0x1EA9, + 0xE2E3, 0xE2EB, 0x1796, 0xE2EC, 0xE2EC, 0x1EAA, 0xE2ED, 0xE2FC, 0x17A0, + 0xE340, 0xE357, 0x17B0, 0xE358, 0xE358, 0x1EAB, 0xE359, 0xE359, 0x17C9, + 0xE35A, 0xE35A, 0x1EAC, 0xE35B, 0xE364, 0x17CB, 0xE365, 0xE365, 0x1EAD, + 0xE366, 0xE37E, 0x17D6, 0xE380, 0xE3C3, 0x17EF, 0xE3C4, 0xE3C4, 0x1EAE, + 0xE3C5, 0xE3FC, 0x1834, 0xE440, 0xE47E, 0x186C, 0xE480, 0xE483, 0x18AB, + 0xE484, 0xE484, 0x1EAF, 0xE485, 0xE488, 0x18B0, 0xE489, 0xE489, 0x1EB0, + 0xE48A, 0xE491, 0x18B5, 0xE492, 0xE492, 0x1EB1, 0xE493, 0xE4B1, 0x18BE, + 0xE4B2, 0xE4B2, 0x1EB2, 0xE4B3, 0xE4B8, 0x18DE, 0xE4B9, 0xE4B9, 0x1EB3, + 0xE4BA, 0xE4F1, 0x18E5, 0xE4F2, 0xE4F2, 0x1EB4, 0xE4F3, 0xE4FC, 0x191E, + 0xE540, 0xE540, 0x1928, 0xE541, 0xE541, 0x08F5, 0xE542, 0xE54C, 0x192A, + 0xE54D, 0xE54D, 0x0F05, 0xE54E, 0xE55A, 0x1936, 0xE55B, 0xE55B, 0x1EB5, + 0xE55C, 0xE578, 0x1944, 0xE579, 0xE579, 0x05A0, 0xE57A, 0xE57E, 0x1962, + 0xE580, 0xE5A1, 0x1967, 0xE5A2, 0xE5A2, 0x0D1E, 0xE5A3, 0xE5A4, 0x198A, + 0xE5A5, 0xE5A5, 0x1EB6, 0xE5A6, 0xE5BA, 0x198D, 0xE5BB, 0xE5BB, 0x1EB7, + 0xE5BC, 0xE5EC, 0x19A3, 0xE5ED, 0xE5ED, 0x1EB8, 0xE5EE, 0xE5FC, 0x19D5, + 0xE640, 0xE650, 0x19E4, 0xE651, 0xE651, 0x1EB9, 0xE652, 0xE67B, 0x19F6, + 0xE67C, 0xE67C, 0x060E, 0xE67D, 0xE67E, 0x1A21, 0xE680, 0xE685, 0x1A23, + 0xE686, 0xE686, 0x1EBA, 0xE687, 0xE695, 0x1A2A, 0xE696, 0xE696, 0x1EBB, + 0xE697, 0xE6CA, 0x1A3A, 0xE6CB, 0xE6CB, 0x0AAA, 0xE6CC, 0xE6E6, 0x1A6F, + 0xE6E7, 0xE6E7, 0x1EBC, 0xE6E8, 0xE6F1, 0x1A8B, 0xE6F2, 0xE6F2, 0x1EBD, + 0xE6F3, 0xE6FC, 0x1A96, 0xE740, 0xE76C, 0x1AA0, 0xE76D, 0xE76D, 0x1EBE, + 0xE76E, 0xE77E, 0x1ACE, 0xE780, 0xE78B, 0x1ADF, 0xE78C, 0xE78C, 0x1EBF, + 0xE78D, 0xE78D, 0x1AEC, 0xE78E, 0xE78E, 0x1EC0, 0xE78F, 0xE7A6, 0x1AEE, + 0xE7A7, 0xE7A7, 0x1EC1, 0xE7A8, 0xE7BA, 0x1B07, 0xE7BB, 0xE7BB, 0x1EC2, + 0xE7BC, 0xE7D4, 0x1B1B, 0xE7D5, 0xE7D5, 0x1EC3, 0xE7D6, 0xE7FC, 0x1B35, + 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE884, 0x1B9B, 0xE885, 0xE885, 0x1EC4, + 0xE886, 0xE8B0, 0x1BA1, 0xE8B1, 0xE8B1, 0x1EC5, 0xE8B2, 0xE8C2, 0x1BCD, + 0xE8C3, 0xE8C3, 0x1EC6, 0xE8C4, 0xE8CE, 0x1BDF, 0xE8CF, 0xE8CF, 0x1EC7, + 0xE8D0, 0xE8D4, 0x1BEB, 0xE8D5, 0xE8D5, 0x1EC8, 0xE8D6, 0xE8F1, 0x1BF1, + 0xE8F2, 0xE8F2, 0x0731, 0xE8F3, 0xE8F3, 0x1EC9, 0xE8F4, 0xE8FC, 0x1C0F, + 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9AA, 0x1C57, 0xE9AB, 0xE9AB, 0x1ECA, + 0xE9AC, 0xE9B9, 0x1C83, 0xE9BA, 0xE9BA, 0x1ECB, 0xE9BB, 0xE9CA, 0x1C92, + 0xE9CB, 0xE9CB, 0x0477, 0xE9CC, 0xE9CC, 0x1ECC, 0xE9CD, 0xE9F1, 0x1CA4, + 0xE9F2, 0xE9F2, 0x0529, 0xE9F3, 0xE9FC, 0x1CCA, 0xEA40, 0xEA6F, 0x1CD4, + 0xEA70, 0xEA70, 0x1ECD, 0xEA71, 0xEA7E, 0x1D05, 0xEA80, 0xEA9C, 0x1D13, + 0xEA9D, 0xEA9D, 0x1ECE, 0xEA9E, 0xEA9E, 0x1D31, 0xED40, 0xED7E, 0x20A7, + 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, 0xEDB5, 0xEDFC, 0x211A, + 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, 0xEEEF, 0xEEF8, 0x1F9C, + 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp new file mode 100644 index 0000000000..f3dbea981c --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp @@ -0,0 +1,23 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_Ext_RKSJ_V_2[39 * 3] = { + 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, + 0x814A, 0x814A, 0x2050, 0x814B, 0x814B, 0x204F, 0x815B, 0x815D, 0x1ED3, + 0x8160, 0x8164, 0x1ED6, 0x8165, 0x8165, 0x2059, 0x8166, 0x8166, 0x2054, + 0x8167, 0x8167, 0x2057, 0x8168, 0x8168, 0x2056, 0x8169, 0x817A, 0x1EDB, + 0x818B, 0x818B, 0x204D, 0x818C, 0x818C, 0x2051, 0x818D, 0x818D, 0x205B, + 0x81AC, 0x81AC, 0x204E, 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, + 0x82A3, 0x82A3, 0x1EF0, 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, + 0x82C1, 0x82C1, 0x1EF3, 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, + 0x82E5, 0x82E5, 0x1EF6, 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, + 0x8342, 0x8342, 0x1EF9, 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, + 0x8348, 0x8348, 0x1EFC, 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, + 0x8385, 0x8385, 0x1EFF, 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, + 0x8395, 0x8396, 0x1F02, 0x875F, 0x876E, 0x1F04, 0x8780, 0x8781, 0x1F14, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp new file mode 100644 index 0000000000..2905a5896b --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp @@ -0,0 +1,50 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_H_1[118 * 3] = { + 0x2121, 0x217E, 0x0279, 0x2221, 0x222E, 0x02D7, 0x223A, 0x2241, 0x02E5, + 0x224A, 0x2250, 0x02ED, 0x225C, 0x226A, 0x02F4, 0x2272, 0x2279, 0x0303, + 0x227E, 0x227E, 0x030B, 0x2330, 0x2339, 0x030C, 0x2341, 0x235A, 0x0316, + 0x2361, 0x237A, 0x0330, 0x2421, 0x2473, 0x034A, 0x2521, 0x2576, 0x039D, + 0x2621, 0x2638, 0x03F3, 0x2641, 0x2658, 0x040B, 0x2721, 0x2741, 0x0423, + 0x2751, 0x2771, 0x0444, 0x2821, 0x2821, 0x1D37, 0x2822, 0x2822, 0x1D39, + 0x2823, 0x2823, 0x1D43, 0x2824, 0x2824, 0x1D47, 0x2825, 0x2825, 0x1D4F, + 0x2826, 0x2826, 0x1D4B, 0x2827, 0x2827, 0x1D53, 0x2828, 0x2828, 0x1D63, + 0x2829, 0x2829, 0x1D5B, 0x282A, 0x282A, 0x1D6B, 0x282B, 0x282B, 0x1D73, + 0x282C, 0x282C, 0x1D38, 0x282D, 0x282D, 0x1D3A, 0x282E, 0x282E, 0x1D46, + 0x282F, 0x282F, 0x1D4A, 0x2830, 0x2830, 0x1D52, 0x2831, 0x2831, 0x1D4E, + 0x2832, 0x2832, 0x1D5A, 0x2833, 0x2833, 0x1D6A, 0x2834, 0x2834, 0x1D62, + 0x2835, 0x2835, 0x1D72, 0x2836, 0x2836, 0x1D82, 0x2837, 0x2837, 0x1D57, + 0x2838, 0x2838, 0x1D66, 0x2839, 0x2839, 0x1D5F, 0x283A, 0x283A, 0x1D6E, + 0x283B, 0x283B, 0x1D76, 0x283C, 0x283C, 0x1D54, 0x283D, 0x283D, 0x1D67, + 0x283E, 0x283E, 0x1D5C, 0x283F, 0x283F, 0x1D6F, 0x2840, 0x2840, 0x1D79, + 0x3021, 0x307E, 0x0465, 0x3121, 0x317E, 0x04C3, 0x3221, 0x327E, 0x0521, + 0x3321, 0x337E, 0x057F, 0x3421, 0x347E, 0x05DD, 0x3521, 0x357E, 0x063B, + 0x3621, 0x367E, 0x0699, 0x3721, 0x377E, 0x06F7, 0x3821, 0x387E, 0x0755, + 0x3921, 0x397E, 0x07B3, 0x3A21, 0x3A7E, 0x0811, 0x3B21, 0x3B7E, 0x086F, + 0x3C21, 0x3C7E, 0x08CD, 0x3D21, 0x3D7E, 0x092B, 0x3E21, 0x3E7E, 0x0989, + 0x3F21, 0x3F7E, 0x09E7, 0x4021, 0x407E, 0x0A45, 0x4121, 0x417E, 0x0AA3, + 0x4221, 0x427E, 0x0B01, 0x4321, 0x437E, 0x0B5F, 0x4421, 0x447E, 0x0BBD, + 0x4521, 0x457E, 0x0C1B, 0x4621, 0x467E, 0x0C79, 0x4721, 0x477E, 0x0CD7, + 0x4821, 0x487E, 0x0D35, 0x4921, 0x497E, 0x0D93, 0x4A21, 0x4A7E, 0x0DF1, + 0x4B21, 0x4B7E, 0x0E4F, 0x4C21, 0x4C7E, 0x0EAD, 0x4D21, 0x4D7E, 0x0F0B, + 0x4E21, 0x4E7E, 0x0F69, 0x4F21, 0x4F53, 0x0FC7, 0x5021, 0x507E, 0x0FFA, + 0x5121, 0x517E, 0x1058, 0x5221, 0x527E, 0x10B6, 0x5321, 0x537E, 0x1114, + 0x5421, 0x547E, 0x1172, 0x5521, 0x557E, 0x11D0, 0x5621, 0x567E, 0x122E, + 0x5721, 0x577E, 0x128C, 0x5821, 0x587E, 0x12EA, 0x5921, 0x597E, 0x1348, + 0x5A21, 0x5A7E, 0x13A6, 0x5B21, 0x5B7E, 0x1404, 0x5C21, 0x5C7E, 0x1462, + 0x5D21, 0x5D7E, 0x14C0, 0x5E21, 0x5E7E, 0x151E, 0x5F21, 0x5F7E, 0x157C, + 0x6021, 0x607E, 0x15DA, 0x6121, 0x617E, 0x1638, 0x6221, 0x627E, 0x1696, + 0x6321, 0x637E, 0x16F4, 0x6421, 0x647E, 0x1752, 0x6521, 0x657E, 0x17B0, + 0x6621, 0x667E, 0x180E, 0x6721, 0x677E, 0x186C, 0x6821, 0x687E, 0x18CA, + 0x6921, 0x697E, 0x1928, 0x6A21, 0x6A7E, 0x1986, 0x6B21, 0x6B7E, 0x19E4, + 0x6C21, 0x6C7E, 0x1A42, 0x6D21, 0x6D7E, 0x1AA0, 0x6E21, 0x6E7E, 0x1AFE, + 0x6F21, 0x6F7E, 0x1B5C, 0x7021, 0x707E, 0x1BBA, 0x7121, 0x717E, 0x1C18, + 0x7221, 0x727E, 0x1C76, 0x7321, 0x737E, 0x1CD4, 0x7421, 0x7424, 0x1D32, + 0x7425, 0x7426, 0x205C, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp new file mode 100644 index 0000000000..ac3ae2f82c --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp @@ -0,0 +1,12 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_H_4[4 * 3] = { + 0x0020, 0x005B, 0x00E7, 0x005C, 0x005C, 0x220F, + 0x005D, 0x007E, 0x0124, 0x00A5, 0x00A5, 0x0123, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp new file mode 100644 index 0000000000..2753934fc2 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp @@ -0,0 +1,77 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_V_4[199 * 3] = { + 0x0020, 0x005B, 0x00E7, 0x005C, 0x005C, 0x220F, 0x005D, 0x007E, 0x0124, + 0x00A5, 0x00A5, 0x0123, 0x00B0, 0x00B0, 0x204D, 0x2010, 0x2010, 0x1ED5, + 0x2015, 0x2015, 0x1ED4, 0x2016, 0x2016, 0x1ED7, 0x2018, 0x2019, 0x2059, + 0x201C, 0x201D, 0x2057, 0x2025, 0x2025, 0x1EDA, 0x2026, 0x2026, 0x1ED9, + 0x2032, 0x2032, 0x2051, 0x2033, 0x2033, 0x205B, 0x2190, 0x2190, 0x02E2, + 0x2191, 0x2191, 0x02E0, 0x2192, 0x2192, 0x02E3, 0x2193, 0x2193, 0x02E1, + 0x2195, 0x2195, 0x2FB6, 0x21C4, 0x21C4, 0x2077, 0x21C5, 0x21C5, 0x2076, + 0x21C6, 0x21C6, 0x2078, 0x21E6, 0x21E6, 0x1F4C, 0x21E7, 0x21E7, 0x1F4E, + 0x21E8, 0x21E8, 0x1F4B, 0x21E9, 0x21E9, 0x1F4D, 0x2225, 0x2225, 0x1ED7, + 0x223C, 0x223C, 0x1ED6, 0x22EF, 0x22EF, 0x1ED9, 0x2500, 0x2501, 0x1D39, + 0x2502, 0x2503, 0x1D37, 0x2504, 0x2505, 0x1D3D, 0x2506, 0x2507, 0x1D3B, + 0x2508, 0x2509, 0x1D41, 0x250A, 0x250B, 0x1D3F, 0x250C, 0x250C, 0x1D47, + 0x250D, 0x250D, 0x1D49, 0x250E, 0x250E, 0x1D48, 0x250F, 0x250F, 0x1D4A, + 0x2510, 0x2510, 0x1D4F, 0x2511, 0x2511, 0x1D51, 0x2512, 0x2512, 0x1D50, + 0x2513, 0x2513, 0x1D52, 0x2514, 0x2514, 0x1D43, 0x2515, 0x2515, 0x1D45, + 0x2516, 0x2516, 0x1D44, 0x2517, 0x2517, 0x1D46, 0x2518, 0x2518, 0x1D4B, + 0x2519, 0x2519, 0x1D4D, 0x251A, 0x251A, 0x1D4C, 0x251B, 0x251B, 0x1D4E, + 0x251C, 0x251C, 0x1D63, 0x251D, 0x251D, 0x1D67, 0x251E, 0x251E, 0x1D65, + 0x251F, 0x251F, 0x1D64, 0x2520, 0x2520, 0x1D66, 0x2521, 0x2521, 0x1D69, + 0x2522, 0x2522, 0x1D68, 0x2523, 0x2524, 0x1D6A, 0x2525, 0x2525, 0x1D6F, + 0x2526, 0x2526, 0x1D6D, 0x2527, 0x2527, 0x1D6C, 0x2528, 0x2528, 0x1D6E, + 0x2529, 0x2529, 0x1D71, 0x252A, 0x252A, 0x1D70, 0x252B, 0x252B, 0x1D72, + 0x252C, 0x252C, 0x1D5B, 0x252D, 0x252F, 0x1D5D, 0x2530, 0x2530, 0x1D5C, + 0x2531, 0x2533, 0x1D60, 0x2534, 0x2534, 0x1D53, 0x2535, 0x2537, 0x1D55, + 0x2538, 0x2538, 0x1D54, 0x2539, 0x253B, 0x1D58, 0x253D, 0x253F, 0x1D77, + 0x2540, 0x2540, 0x1D75, 0x2541, 0x2541, 0x1D74, 0x2542, 0x2542, 0x1D76, + 0x2543, 0x2543, 0x1D7B, 0x2544, 0x2544, 0x1D7D, 0x2545, 0x2545, 0x1D7A, + 0x2546, 0x2546, 0x1D7C, 0x2547, 0x2547, 0x1D81, 0x2548, 0x2548, 0x1D80, + 0x2549, 0x254A, 0x1D7E, 0x261C, 0x261C, 0x201D, 0x261D, 0x261D, 0x201B, + 0x261E, 0x261E, 0x201E, 0x261F, 0x261F, 0x201C, 0x2702, 0x2702, 0x2F92, + 0x27A1, 0x27A1, 0x2011, 0x3001, 0x3002, 0x1ECF, 0x3008, 0x3011, 0x1EE3, + 0x3013, 0x3013, 0x204E, 0x3014, 0x3015, 0x1EDD, 0x301C, 0x301C, 0x1ED6, + 0x301D, 0x301D, 0x1F14, 0x301F, 0x301F, 0x1F15, 0x3041, 0x3041, 0x1EEE, + 0x3043, 0x3043, 0x1EEF, 0x3045, 0x3045, 0x1EF0, 0x3047, 0x3047, 0x1EF1, + 0x3049, 0x3049, 0x1EF2, 0x3063, 0x3063, 0x1EF3, 0x3083, 0x3083, 0x1EF4, + 0x3085, 0x3085, 0x1EF5, 0x3087, 0x3087, 0x1EF6, 0x308E, 0x308E, 0x1EF7, + 0x309B, 0x309B, 0x2050, 0x309C, 0x309C, 0x204F, 0x30A1, 0x30A1, 0x1EF8, + 0x30A3, 0x30A3, 0x1EF9, 0x30A5, 0x30A5, 0x1EFA, 0x30A7, 0x30A7, 0x1EFB, + 0x30A9, 0x30A9, 0x1EFC, 0x30C3, 0x30C3, 0x1EFD, 0x30E3, 0x30E3, 0x1EFE, + 0x30E5, 0x30E5, 0x1EFF, 0x30E7, 0x30E7, 0x1F00, 0x30EE, 0x30EE, 0x1F01, + 0x30F5, 0x30F6, 0x1F02, 0x30FC, 0x30FC, 0x1ED3, 0x3300, 0x3300, 0x209E, + 0x3301, 0x3302, 0x2EB6, 0x3303, 0x3303, 0x2092, 0x3304, 0x3304, 0x2EB8, + 0x3305, 0x3305, 0x208D, 0x3306, 0x3306, 0x2EB9, 0x3307, 0x3307, 0x2EBD, + 0x3308, 0x3308, 0x2EBB, 0x3309, 0x3309, 0x2EC0, 0x330A, 0x330A, 0x2EBE, + 0x330B, 0x330B, 0x2EC2, 0x330C, 0x330C, 0x2EC4, 0x330D, 0x330D, 0x1F0E, + 0x330E, 0x3313, 0x2EC5, 0x3314, 0x3314, 0x1F05, 0x3315, 0x3315, 0x2094, + 0x3316, 0x3316, 0x208A, 0x3317, 0x3317, 0x2ECC, 0x3318, 0x3318, 0x2093, + 0x3319, 0x3319, 0x2ECE, 0x331A, 0x331D, 0x2ED0, 0x331E, 0x331E, 0x20A1, + 0x331F, 0x3321, 0x2ED4, 0x3322, 0x3322, 0x2089, 0x3323, 0x3323, 0x209C, + 0x3324, 0x3324, 0x2ED7, 0x3325, 0x3325, 0x2ED9, 0x3326, 0x3326, 0x1F0F, + 0x3327, 0x3327, 0x1F09, 0x3328, 0x3329, 0x2EDC, 0x332A, 0x332A, 0x20A4, + 0x332B, 0x332B, 0x1F11, 0x332D, 0x332D, 0x2EDF, 0x332E, 0x3330, 0x2EE2, + 0x3331, 0x3331, 0x20A6, 0x3332, 0x3332, 0x2EE5, 0x3333, 0x3333, 0x208E, + 0x3334, 0x3335, 0x2EE8, 0x3336, 0x3336, 0x1F0B, 0x3337, 0x3337, 0x2EEE, + 0x3338, 0x3338, 0x2EF0, 0x3339, 0x3339, 0x2097, 0x333A, 0x333A, 0x2EF1, + 0x333B, 0x333B, 0x209D, 0x333C, 0x333C, 0x2EEA, 0x333D, 0x333D, 0x2EF2, + 0x333E, 0x3340, 0x2EF4, 0x3341, 0x3341, 0x2EF3, 0x3342, 0x3342, 0x209B, + 0x3343, 0x3346, 0x2EF7, 0x3347, 0x3347, 0x20A5, 0x3348, 0x3348, 0x2EFB, + 0x3349, 0x3349, 0x1F04, 0x334A, 0x334A, 0x1F12, 0x334B, 0x334C, 0x2EFC, + 0x334D, 0x334D, 0x1F07, 0x334E, 0x334E, 0x2091, 0x334F, 0x3350, 0x2EFE, + 0x3351, 0x3351, 0x1F0C, 0x3352, 0x3352, 0x2F02, 0x3353, 0x3353, 0x2F06, + 0x3354, 0x3354, 0x2F03, 0x3355, 0x3356, 0x2F07, 0x3357, 0x3357, 0x2098, + 0x337F, 0x337F, 0x2084, 0xFF08, 0xFF09, 0x1EDB, 0xFF0C, 0xFF0C, 0x204C, + 0xFF0E, 0xFF0E, 0x2052, 0xFF1D, 0xFF1D, 0x1EED, 0xFF3B, 0xFF3B, 0x1EDF, + 0xFF3D, 0xFF3D, 0x1EE0, 0xFF3F, 0xFF3F, 0x1ED2, 0xFF5B, 0xFF5B, 0x1EE1, + 0xFF5C, 0xFF5C, 0x1ED8, 0xFF5D, 0xFF5D, 0x1EE2, 0xFF5E, 0xFF5E, 0x1ED6, + 0xFFE3, 0xFFE3, 0x1ED1, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp new file mode 100644 index 0000000000..9c1387a185 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp @@ -0,0 +1,2182 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_UniJIS_UCS2_H_4[9772 * 2] = { + 0x0020, 0x0001, 0x0021, 0x0002, 0x0022, 0x0003, 0x0023, 0x0004, 0x0024, + 0x0005, 0x0025, 0x0006, 0x0026, 0x0007, 0x0027, 0x0008, 0x0028, 0x0009, + 0x0029, 0x000A, 0x002A, 0x000B, 0x002B, 0x000C, 0x002C, 0x000D, 0x002D, + 0x000E, 0x002E, 0x000F, 0x002F, 0x0010, 0x0030, 0x0011, 0x0031, 0x0012, + 0x0032, 0x0013, 0x0033, 0x0014, 0x0034, 0x0015, 0x0035, 0x0016, 0x0036, + 0x0017, 0x0037, 0x0018, 0x0038, 0x0019, 0x0039, 0x001A, 0x003A, 0x001B, + 0x003B, 0x001C, 0x003C, 0x001D, 0x003D, 0x001E, 0x003E, 0x001F, 0x003F, + 0x0020, 0x0040, 0x0021, 0x0041, 0x0022, 0x0042, 0x0023, 0x0043, 0x0024, + 0x0044, 0x0025, 0x0045, 0x0026, 0x0046, 0x0027, 0x0047, 0x0028, 0x0048, + 0x0029, 0x0049, 0x002A, 0x004A, 0x002B, 0x004B, 0x002C, 0x004C, 0x002D, + 0x004D, 0x002E, 0x004E, 0x002F, 0x004F, 0x0030, 0x0050, 0x0031, 0x0051, + 0x0032, 0x0052, 0x0033, 0x0053, 0x0034, 0x0054, 0x0035, 0x0055, 0x0036, + 0x0056, 0x0037, 0x0057, 0x0038, 0x0058, 0x0039, 0x0059, 0x003A, 0x005A, + 0x003B, 0x005B, 0x003C, 0x005C, 0x0061, 0x005D, 0x003E, 0x005E, 0x003F, + 0x005F, 0x0040, 0x0060, 0x0041, 0x0061, 0x0042, 0x0062, 0x0043, 0x0063, + 0x0044, 0x0064, 0x0045, 0x0065, 0x0046, 0x0066, 0x0047, 0x0067, 0x0048, + 0x0068, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B, 0x004C, 0x006C, + 0x004D, 0x006D, 0x004E, 0x006E, 0x004F, 0x006F, 0x0050, 0x0070, 0x0051, + 0x0071, 0x0052, 0x0072, 0x0053, 0x0073, 0x0054, 0x0074, 0x0055, 0x0075, + 0x0056, 0x0076, 0x0057, 0x0077, 0x0058, 0x0078, 0x0059, 0x0079, 0x005A, + 0x007A, 0x005B, 0x007B, 0x005C, 0x007C, 0x005D, 0x007D, 0x005E, 0x007E, + 0x005F, 0x00A1, 0x0065, 0x00A2, 0x0066, 0x00A3, 0x0067, 0x00A4, 0x006B, + 0x00A5, 0x003D, 0x00A6, 0x0063, 0x00A7, 0x02D0, 0x00A8, 0x0287, 0x00A9, + 0x0098, 0x00AA, 0x008C, 0x00AB, 0x006D, 0x00AC, 0x0099, 0x00AD, 0x0097, + 0x00AE, 0x009A, 0x00AF, 0x0081, 0x00B0, 0x02C3, 0x00B1, 0x02B6, 0x00B2, + 0x009D, 0x00B3, 0x009E, 0x00B4, 0x0285, 0x00B5, 0x009F, 0x00B6, 0x030A, + 0x00B7, 0x0075, 0x00B8, 0x0086, 0x00B9, 0x00A0, 0x00BA, 0x0090, 0x00BB, + 0x007B, 0x00BC, 0x00A1, 0x00BD, 0x00A2, 0x00BE, 0x00A3, 0x00BF, 0x007E, + 0x00C0, 0x00A4, 0x00C1, 0x00A5, 0x00C2, 0x00A6, 0x00C3, 0x00A7, 0x00C4, + 0x00A8, 0x00C5, 0x00A9, 0x00C6, 0x008B, 0x00C7, 0x00AA, 0x00C8, 0x00AB, + 0x00C9, 0x00AC, 0x00CA, 0x00AD, 0x00CB, 0x00AE, 0x00CC, 0x00AF, 0x00CD, + 0x00B0, 0x00CE, 0x00B1, 0x00CF, 0x00B2, 0x00D0, 0x00B3, 0x00D1, 0x00B4, + 0x00D2, 0x00B5, 0x00D3, 0x00B6, 0x00D4, 0x00B7, 0x00D5, 0x00B8, 0x00D6, + 0x00B9, 0x00D7, 0x02B7, 0x00D8, 0x008E, 0x00D9, 0x00BB, 0x00DA, 0x00BC, + 0x00DB, 0x00BD, 0x00DC, 0x00BE, 0x00DD, 0x00BF, 0x00DE, 0x00C0, 0x00DF, + 0x0096, 0x00E0, 0x00C1, 0x00E1, 0x00C2, 0x00E2, 0x00C3, 0x00E3, 0x00C4, + 0x00E4, 0x00C5, 0x00E5, 0x00C6, 0x00E6, 0x0091, 0x00E7, 0x00C7, 0x00E8, + 0x00C8, 0x00E9, 0x00C9, 0x00EA, 0x00CA, 0x00EB, 0x00CB, 0x00EC, 0x00CC, + 0x00ED, 0x00CD, 0x00EE, 0x00CE, 0x00EF, 0x00CF, 0x00F0, 0x00D0, 0x00F1, + 0x00D1, 0x00F2, 0x00D2, 0x00F3, 0x00D3, 0x00F4, 0x00D4, 0x00F5, 0x00D5, + 0x00F6, 0x00D6, 0x00F7, 0x02B8, 0x00F8, 0x0094, 0x00F9, 0x00D8, 0x00FA, + 0x00D9, 0x00FB, 0x00DA, 0x00FC, 0x00DB, 0x00FD, 0x00DC, 0x00FE, 0x00DD, + 0x00FF, 0x00DE, 0x0100, 0x2496, 0x0101, 0x2491, 0x0112, 0x2499, 0x0113, + 0x2494, 0x011A, 0x24B3, 0x011B, 0x24BF, 0x0127, 0x2F3C, 0x0128, 0x24B8, + 0x0129, 0x24C4, 0x012A, 0x2497, 0x012B, 0x2492, 0x0131, 0x0092, 0x0141, + 0x008D, 0x0142, 0x0093, 0x014B, 0x24DC, 0x014C, 0x249A, 0x014D, 0x2495, + 0x0152, 0x008F, 0x0153, 0x0095, 0x0160, 0x00DF, 0x0161, 0x00E3, 0x0168, + 0x24BD, 0x0169, 0x24C9, 0x016A, 0x2498, 0x016B, 0x2493, 0x016E, 0x24BC, + 0x016F, 0x24C8, 0x0178, 0x00E0, 0x017D, 0x00E1, 0x017E, 0x00E5, 0x01C0, + 0x0063, 0x01CD, 0x24B2, 0x01CE, 0x24BE, 0x01CF, 0x24B6, 0x01D0, 0x24C2, + 0x01D1, 0x24B9, 0x01D2, 0x24C5, 0x01D3, 0x24BB, 0x01D4, 0x24C7, 0x01FD, + 0x24CD, 0x0251, 0x24CA, 0x0254, 0x24CF, 0x0259, 0x24D2, 0x025A, 0x24D5, + 0x025B, 0x24D8, 0x0275, 0x24DD, 0x0283, 0x24E2, 0x028C, 0x24DE, 0x0292, + 0x24E1, 0x02D0, 0x24E3, 0x0300, 0x0041, 0x0301, 0x007F, 0x0302, 0x0080, + 0x0303, 0x005F, 0x0304, 0x0081, 0x0305, 0x00E2, 0x0306, 0x0082, 0x0307, + 0x0083, 0x0308, 0x0084, 0x030A, 0x0085, 0x030B, 0x0087, 0x030C, 0x0089, + 0x0327, 0x0086, 0x0328, 0x0088, 0x0332, 0x0040, 0x0336, 0x008A, 0x0361, + 0x02F6, 0x0391, 0x03F3, 0x0392, 0x03F4, 0x0393, 0x03F5, 0x0394, 0x03F6, + 0x0395, 0x03F7, 0x0396, 0x03F8, 0x0397, 0x03F9, 0x0398, 0x03FA, 0x0399, + 0x03FB, 0x039A, 0x03FC, 0x039B, 0x03FD, 0x039C, 0x03FE, 0x039D, 0x03FF, + 0x039E, 0x0400, 0x039F, 0x0401, 0x03A0, 0x0402, 0x03A1, 0x0403, 0x03A3, + 0x0404, 0x03A4, 0x0405, 0x03A5, 0x0406, 0x03A6, 0x0407, 0x03A7, 0x0408, + 0x03A8, 0x0409, 0x03A9, 0x040A, 0x03B1, 0x040B, 0x03B2, 0x040C, 0x03B3, + 0x040D, 0x03B4, 0x040E, 0x03B5, 0x040F, 0x03B6, 0x0410, 0x03B7, 0x0411, + 0x03B8, 0x0412, 0x03B9, 0x0413, 0x03BA, 0x0414, 0x03BB, 0x0415, 0x03BC, + 0x0416, 0x03BD, 0x0417, 0x03BE, 0x0418, 0x03BF, 0x0419, 0x03C0, 0x041A, + 0x03C1, 0x041B, 0x03C3, 0x041C, 0x03C4, 0x041D, 0x03C5, 0x041E, 0x03C6, + 0x041F, 0x03C7, 0x0420, 0x03C8, 0x0421, 0x03C9, 0x0422, 0x03D0, 0x2F3A, + 0x03D1, 0x2F40, 0x03DB, 0x2F3F, 0x0401, 0x0429, 0x0410, 0x0423, 0x0411, + 0x0424, 0x0412, 0x0425, 0x0413, 0x0426, 0x0414, 0x0427, 0x0415, 0x0428, + 0x0416, 0x042A, 0x0417, 0x042B, 0x0418, 0x042C, 0x0419, 0x042D, 0x041A, + 0x042E, 0x041B, 0x042F, 0x041C, 0x0430, 0x041D, 0x0431, 0x041E, 0x0432, + 0x041F, 0x0433, 0x0420, 0x0434, 0x0421, 0x0435, 0x0422, 0x0436, 0x0423, + 0x0437, 0x0424, 0x0438, 0x0425, 0x0439, 0x0426, 0x043A, 0x0427, 0x043B, + 0x0428, 0x043C, 0x0429, 0x043D, 0x042A, 0x043E, 0x042B, 0x043F, 0x042C, + 0x0440, 0x042D, 0x0441, 0x042E, 0x0442, 0x042F, 0x0443, 0x0430, 0x0444, + 0x0431, 0x0445, 0x0432, 0x0446, 0x0433, 0x0447, 0x0434, 0x0448, 0x0435, + 0x0449, 0x0436, 0x044B, 0x0437, 0x044C, 0x0438, 0x044D, 0x0439, 0x044E, + 0x043A, 0x044F, 0x043B, 0x0450, 0x043C, 0x0451, 0x043D, 0x0452, 0x043E, + 0x0453, 0x043F, 0x0454, 0x0440, 0x0455, 0x0441, 0x0456, 0x0442, 0x0457, + 0x0443, 0x0458, 0x0444, 0x0459, 0x0445, 0x045A, 0x0446, 0x045B, 0x0447, + 0x045C, 0x0448, 0x045D, 0x0449, 0x045E, 0x044A, 0x045F, 0x044B, 0x0460, + 0x044C, 0x0461, 0x044D, 0x0462, 0x044E, 0x0463, 0x044F, 0x0464, 0x0451, + 0x044A, 0x045B, 0x2F3C, 0x1EBC, 0x24B5, 0x1EBD, 0x24C1, 0x2002, 0x00E7, + 0x2003, 0x0279, 0x2010, 0x0296, 0x2011, 0x000E, 0x2012, 0x0072, 0x2013, + 0x0072, 0x2014, 0x008A, 0x2015, 0x0295, 0x2016, 0x029A, 0x2018, 0x029E, + 0x2019, 0x029F, 0x201A, 0x0078, 0x201C, 0x02A0, 0x201D, 0x02A1, 0x201E, + 0x0079, 0x2020, 0x0308, 0x2021, 0x0309, 0x2022, 0x0077, 0x2025, 0x029D, + 0x2026, 0x029C, 0x2030, 0x0304, 0x2032, 0x02C4, 0x2033, 0x02C5, 0x2039, + 0x006E, 0x203A, 0x006F, 0x203B, 0x02DE, 0x203C, 0x2F4F, 0x203E, 0x0145, + 0x2044, 0x0068, 0x2049, 0x2F50, 0x2070, 0x24A1, 0x2074, 0x24A2, 0x2075, + 0x24A3, 0x2076, 0x24A4, 0x2077, 0x24A5, 0x2078, 0x24A6, 0x2079, 0x24A7, + 0x2080, 0x24A8, 0x2081, 0x24A9, 0x2082, 0x24AA, 0x2083, 0x24AB, 0x2084, + 0x24AC, 0x2085, 0x24AD, 0x2086, 0x24AE, 0x2087, 0x24AF, 0x2088, 0x24B0, + 0x2089, 0x24B1, 0x20AC, 0x248A, 0x20DD, 0x030B, 0x2100, 0x2E4F, 0x2103, + 0x02C6, 0x2105, 0x2E53, 0x2109, 0x2071, 0x210A, 0x2070, 0x210F, 0x2F3C, + 0x2113, 0x1F59, 0x2116, 0x1DBA, 0x2121, 0x1F77, 0x2122, 0x00E4, 0x2126, + 0x248B, 0x212B, 0x0303, 0x2135, 0x2F39, 0x2153, 0x249F, 0x2154, 0x24A0, + 0x215B, 0x249B, 0x215C, 0x249C, 0x215D, 0x249D, 0x215E, 0x249E, 0x2160, + 0x1D97, 0x2161, 0x1D98, 0x2162, 0x1D99, 0x2163, 0x1D9A, 0x2164, 0x1D9B, + 0x2165, 0x1D9C, 0x2166, 0x1D9D, 0x2167, 0x1D9E, 0x2168, 0x1D9F, 0x2169, + 0x1DA0, 0x216A, 0x2021, 0x216B, 0x2022, 0x2170, 0x1F9C, 0x2171, 0x1F9D, + 0x2172, 0x1F9E, 0x2173, 0x1F9F, 0x2174, 0x1FA0, 0x2175, 0x1FA1, 0x2176, + 0x1FA2, 0x2177, 0x1FA3, 0x2178, 0x1FA4, 0x2179, 0x1FA5, 0x217A, 0x206A, + 0x217B, 0x206B, 0x217F, 0x206F, 0x2190, 0x02E1, 0x2191, 0x02E2, 0x2192, + 0x02E0, 0x2193, 0x02E3, 0x2194, 0x2FA9, 0x2195, 0x2FB7, 0x2196, 0x2FAC, + 0x2197, 0x2FAD, 0x2198, 0x2FAA, 0x2199, 0x2FAB, 0x21C4, 0x2076, 0x21C5, + 0x2077, 0x21C6, 0x2075, 0x21CC, 0x2FAE, 0x21D0, 0x2FA8, 0x21D2, 0x02F0, + 0x21D4, 0x02F1, 0x21E6, 0x1F4D, 0x21E7, 0x1F4C, 0x21E8, 0x1F4E, 0x21E9, + 0x1F4B, 0x2200, 0x02F2, 0x2202, 0x02F7, 0x2203, 0x02F3, 0x2205, 0x2F98, + 0x2207, 0x02F8, 0x2208, 0x02E5, 0x220A, 0x2F3B, 0x220B, 0x02E6, 0x2211, + 0x1DC9, 0x2212, 0x02B5, 0x2213, 0x2F56, 0x221A, 0x02FD, 0x221D, 0x02FF, + 0x221E, 0x02BF, 0x221F, 0x1DCD, 0x2220, 0x02F4, 0x2225, 0x029A, 0x2227, + 0x02ED, 0x2228, 0x02EE, 0x2229, 0x02EC, 0x222A, 0x02EB, 0x222B, 0x0301, + 0x222C, 0x0302, 0x222D, 0x2003, 0x222E, 0x1DC8, 0x2234, 0x02C0, 0x2235, + 0x0300, 0x223C, 0x0299, 0x223D, 0x02FE, 0x2243, 0x2F58, 0x2252, 0x02FA, + 0x2260, 0x02BA, 0x2261, 0x02F9, 0x2266, 0x02BD, 0x2267, 0x02BE, 0x226A, + 0x02FB, 0x226B, 0x02FC, 0x2272, 0x2F59, 0x2273, 0x2F5A, 0x2282, 0x02E9, + 0x2283, 0x02EA, 0x2286, 0x02E7, 0x2287, 0x02E8, 0x2295, 0x2F9C, 0x2296, + 0x2F9A, 0x2297, 0x2F9D, 0x2298, 0x2F9B, 0x229D, 0x2F9A, 0x229E, 0x2F9E, + 0x22A0, 0x2F99, 0x22A5, 0x02F5, 0x22BF, 0x1DCE, 0x22EE, 0x1ED9, 0x22EF, + 0x029C, 0x2300, 0x2F98, 0x2307, 0x2FBB, 0x2312, 0x02F6, 0x244A, 0x2F54, + 0x2460, 0x1D83, 0x2461, 0x1D84, 0x2462, 0x1D85, 0x2463, 0x1D86, 0x2464, + 0x1D87, 0x2465, 0x1D88, 0x2466, 0x1D89, 0x2467, 0x1D8A, 0x2468, 0x1D8B, + 0x2469, 0x1D8C, 0x246A, 0x1D8D, 0x246B, 0x1D8E, 0x246C, 0x1D8F, 0x246D, + 0x1D90, 0x246E, 0x1D91, 0x246F, 0x1D92, 0x2470, 0x1D93, 0x2471, 0x1D94, + 0x2472, 0x1D95, 0x2473, 0x1D96, 0x2474, 0x1F87, 0x2475, 0x1F88, 0x2476, + 0x1F89, 0x2477, 0x1F8A, 0x2478, 0x1F8B, 0x2479, 0x1F8C, 0x247A, 0x1F8D, + 0x247B, 0x1F8E, 0x247C, 0x1F8F, 0x247D, 0x1F90, 0x247E, 0x1F91, 0x247F, + 0x1F92, 0x2480, 0x1F93, 0x2481, 0x1F94, 0x2482, 0x1F95, 0x2483, 0x1F96, + 0x2484, 0x1F97, 0x2485, 0x1F98, 0x2486, 0x1F99, 0x2487, 0x1F9A, 0x2488, + 0x1F7E, 0x2489, 0x1F7F, 0x248A, 0x1F80, 0x248B, 0x1F81, 0x248C, 0x1F82, + 0x248D, 0x1F83, 0x248E, 0x1F84, 0x248F, 0x1F85, 0x2490, 0x1F86, 0x249C, + 0x1FB0, 0x249D, 0x1FB1, 0x249E, 0x1FB2, 0x249F, 0x1FB3, 0x24A0, 0x1FB4, + 0x24A1, 0x1FB5, 0x24A2, 0x1FB6, 0x24A3, 0x1FB7, 0x24A4, 0x1FB8, 0x24A5, + 0x1FB9, 0x24A6, 0x1FBA, 0x24A7, 0x1FBB, 0x24A8, 0x1FBC, 0x24A9, 0x1FBD, + 0x24AA, 0x1FBE, 0x24AB, 0x1FBF, 0x24AC, 0x1FC0, 0x24AD, 0x1FC1, 0x24AE, + 0x1FC2, 0x24AF, 0x1FC3, 0x24B0, 0x1FC4, 0x24B1, 0x1FC5, 0x24B2, 0x1FC6, + 0x24B3, 0x1FC7, 0x24B4, 0x1FC8, 0x24B5, 0x1FC9, 0x24B6, 0x2863, 0x24B7, + 0x2864, 0x24B8, 0x2865, 0x24B9, 0x2866, 0x24BA, 0x2867, 0x24BB, 0x2868, + 0x24BC, 0x2869, 0x24BD, 0x286A, 0x24BE, 0x286B, 0x24BF, 0x286C, 0x24C0, + 0x286D, 0x24C1, 0x286E, 0x24C2, 0x286F, 0x24C3, 0x2870, 0x24C4, 0x2871, + 0x24C5, 0x2872, 0x24C6, 0x2873, 0x24C7, 0x2874, 0x24C8, 0x2875, 0x24C9, + 0x2876, 0x24CA, 0x2877, 0x24CB, 0x2878, 0x24CC, 0x2879, 0x24CD, 0x287A, + 0x24CE, 0x287B, 0x24CF, 0x287C, 0x24D0, 0x2849, 0x24D1, 0x284A, 0x24D2, + 0x284B, 0x24D3, 0x284C, 0x24D4, 0x284D, 0x24D5, 0x284E, 0x24D6, 0x284F, + 0x24D7, 0x2850, 0x24D8, 0x2851, 0x24D9, 0x2852, 0x24DA, 0x2853, 0x24DB, + 0x2854, 0x24DC, 0x2855, 0x24DD, 0x2856, 0x24DE, 0x2857, 0x24DF, 0x2858, + 0x24E0, 0x2859, 0x24E1, 0x285A, 0x24E2, 0x285B, 0x24E3, 0x285C, 0x24E4, + 0x285D, 0x24E5, 0x285E, 0x24E6, 0x285F, 0x24E7, 0x2860, 0x24E8, 0x2861, + 0x24E9, 0x2862, 0x24EA, 0x2020, 0x2500, 0x1D37, 0x2501, 0x1D38, 0x2502, + 0x1D39, 0x2503, 0x1D3A, 0x2504, 0x1D3B, 0x2505, 0x1D3C, 0x2506, 0x1D3D, + 0x2507, 0x1D3E, 0x2508, 0x1D3F, 0x2509, 0x1D40, 0x250A, 0x1D41, 0x250B, + 0x1D42, 0x250C, 0x1D43, 0x250D, 0x1D44, 0x250E, 0x1D45, 0x250F, 0x1D46, + 0x2510, 0x1D47, 0x2511, 0x1D48, 0x2512, 0x1D49, 0x2513, 0x1D4A, 0x2514, + 0x1D4B, 0x2515, 0x1D4C, 0x2516, 0x1D4D, 0x2517, 0x1D4E, 0x2518, 0x1D4F, + 0x2519, 0x1D50, 0x251A, 0x1D51, 0x251B, 0x1D52, 0x251C, 0x1D53, 0x251D, + 0x1D54, 0x251E, 0x1D55, 0x251F, 0x1D56, 0x2520, 0x1D57, 0x2521, 0x1D58, + 0x2522, 0x1D59, 0x2523, 0x1D5A, 0x2524, 0x1D5B, 0x2525, 0x1D5C, 0x2526, + 0x1D5D, 0x2527, 0x1D5E, 0x2528, 0x1D5F, 0x2529, 0x1D60, 0x252A, 0x1D61, + 0x252B, 0x1D62, 0x252C, 0x1D63, 0x252D, 0x1D64, 0x252E, 0x1D65, 0x252F, + 0x1D66, 0x2530, 0x1D67, 0x2531, 0x1D68, 0x2532, 0x1D69, 0x2533, 0x1D6A, + 0x2534, 0x1D6B, 0x2535, 0x1D6C, 0x2536, 0x1D6D, 0x2537, 0x1D6E, 0x2538, + 0x1D6F, 0x2539, 0x1D70, 0x253A, 0x1D71, 0x253B, 0x1D72, 0x253C, 0x1D73, + 0x253D, 0x1D74, 0x253E, 0x1D75, 0x253F, 0x1D76, 0x2540, 0x1D77, 0x2541, + 0x1D78, 0x2542, 0x1D79, 0x2543, 0x1D7A, 0x2544, 0x1D7B, 0x2545, 0x1D7C, + 0x2546, 0x1D7D, 0x2547, 0x1D7E, 0x2548, 0x1D7F, 0x2549, 0x1D80, 0x254A, + 0x1D81, 0x254B, 0x1D82, 0x2550, 0x203B, 0x255E, 0x203C, 0x2561, 0x203E, + 0x256A, 0x203D, 0x256D, 0x2037, 0x256E, 0x2038, 0x256F, 0x203A, 0x2570, + 0x2039, 0x2571, 0x2045, 0x2572, 0x2046, 0x2573, 0x2047, 0x2581, 0x2026, + 0x2582, 0x2027, 0x2583, 0x2028, 0x2584, 0x2029, 0x2585, 0x202A, 0x2586, + 0x202B, 0x2587, 0x202C, 0x2588, 0x202D, 0x2589, 0x2034, 0x258A, 0x2033, + 0x258B, 0x2032, 0x258C, 0x2031, 0x258D, 0x2030, 0x258E, 0x202F, 0x258F, + 0x202E, 0x2594, 0x2035, 0x2595, 0x2036, 0x25A0, 0x02D9, 0x25A1, 0x02D8, + 0x25A2, 0x1F4F, 0x25AA, 0x2FCF, 0x25AB, 0x2FCD, 0x25B2, 0x02DB, 0x25B3, + 0x02DA, 0x25B6, 0x2FA3, 0x25B7, 0x1F4A, 0x25BC, 0x02DD, 0x25BD, 0x02DC, + 0x25C0, 0x2FA2, 0x25C1, 0x1F49, 0x25C6, 0x02D7, 0x25C7, 0x02D6, 0x25C9, + 0x2012, 0x25CB, 0x02D3, 0x25CC, 0x2906, 0x25CE, 0x02D5, 0x25CF, 0x02D4, + 0x25E2, 0x203F, 0x25E3, 0x2040, 0x25E4, 0x2042, 0x25E5, 0x2041, 0x25E6, + 0x2FDE, 0x25EF, 0x030B, 0x2600, 0x2017, 0x2601, 0x2018, 0x2602, 0x2019, + 0x2603, 0x201A, 0x2605, 0x02D2, 0x2606, 0x02D1, 0x260E, 0x1F78, 0x2612, + 0x2F99, 0x261C, 0x201C, 0x261D, 0x201D, 0x261E, 0x201B, 0x261F, 0x201E, + 0x2640, 0x02C2, 0x2642, 0x02C1, 0x2660, 0x2013, 0x2661, 0x1F51, 0x2662, + 0x1F53, 0x2663, 0x2015, 0x2664, 0x1F52, 0x2665, 0x2014, 0x2666, 0x2016, + 0x2667, 0x1F50, 0x2668, 0x2F42, 0x2669, 0x2F43, 0x266A, 0x0307, 0x266C, + 0x2F44, 0x266D, 0x0306, 0x266F, 0x0305, 0x2702, 0x2F90, 0x271A, 0x2FD1, + 0x2756, 0x2FE3, 0x2776, 0x205E, 0x2777, 0x205F, 0x2778, 0x2060, 0x2779, + 0x2061, 0x277A, 0x2062, 0x277B, 0x2063, 0x277C, 0x2064, 0x277D, 0x2065, + 0x277E, 0x2066, 0x27A1, 0x200E, 0x2E83, 0x37E1, 0x2E85, 0x3620, 0x2E87, + 0x3719, 0x2E89, 0x3814, 0x2E8B, 0x371E, 0x2E8C, 0x3609, 0x2E8D, 0x360A, + 0x2E8E, 0x1071, 0x2E8F, 0x388C, 0x2E90, 0x1226, 0x2E92, 0x0EB2, 0x2E93, + 0x1283, 0x2E94, 0x12AB, 0x2E95, 0x3C1F, 0x2E96, 0x38C2, 0x2E97, 0x361C, + 0x2E98, 0x38E1, 0x2E99, 0x13C3, 0x2E9B, 0x13E1, 0x2E9F, 0x0E3C, 0x2EA0, + 0x0EBD, 0x2EA1, 0x3961, 0x2EA2, 0x3962, 0x2EA3, 0x399D, 0x2EA4, 0x3C26, + 0x2EA6, 0x374D, 0x2EA8, 0x39BC, 0x2EA9, 0x35A1, 0x2EAA, 0x36AB, 0x2EAB, + 0x3A97, 0x2EAC, 0x08D4, 0x2EAD, 0x3A39, 0x2EAE, 0x3662, 0x2EB1, 0x3A98, + 0x2EB2, 0x3A97, 0x2EB3, 0x376D, 0x2EB7, 0x36FE, 0x2EB9, 0x3713, 0x2EBC, + 0x35B3, 0x2EBD, 0x354E, 0x2EBE, 0x3775, 0x2EBF, 0x3776, 0x2EC0, 0x3777, + 0x2EC1, 0x078B, 0x2EC2, 0x3B0A, 0x2EC3, 0x362E, 0x2EC4, 0x0A62, 0x2EC6, + 0x3572, 0x2ECA, 0x364A, 0x2ECC, 0x3C2B, 0x2ECD, 0x3B50, 0x2ECF, 0x3B9E, + 0x2ED1, 0x0BD5, 0x2ED2, 0x3B97, 0x2ED6, 0x3B9E, 0x2ED7, 0x354D, 0x2ED8, + 0x0A68, 0x2EDD, 0x3617, 0x2EDE, 0x3619, 0x2EDF, 0x3618, 0x2EE4, 0x064E, + 0x2EE8, 0x0D34, 0x2EE9, 0x052B, 0x2EEB, 0x0A6A, 0x2EED, 0x08C3, 0x2EEF, + 0x0F7D, 0x2EF2, 0x064F, 0x2F00, 0x04B0, 0x2F01, 0x20B3, 0x2F02, 0x0FFF, + 0x2F03, 0x1001, 0x2F04, 0x0535, 0x2F05, 0x1006, 0x2F06, 0x0CCB, 0x2F07, + 0x100E, 0x2F08, 0x0A13, 0x2F09, 0x1070, 0x2F0A, 0x0CD6, 0x2F0B, 0x0D40, + 0x2F0C, 0x107B, 0x2F0D, 0x1083, 0x2F0E, 0x1089, 0x2F0F, 0x1093, 0x2F10, + 0x1098, 0x2F11, 0x0C5B, 0x2F12, 0x0F97, 0x2F13, 0x10C6, 0x2F14, 0x10CD, + 0x2F15, 0x10CE, 0x2F16, 0x10D3, 0x2F17, 0x0947, 0x2F18, 0x0E7C, 0x2F19, + 0x10DC, 0x2F1A, 0x10E1, 0x2F1B, 0x10E8, 0x2F1C, 0x0EA2, 0x2F1D, 0x07B1, + 0x2F1E, 0x116B, 0x2F1F, 0x0C54, 0x2F20, 0x089C, 0x2F21, 0x11BA, 0x2F22, + 0x11BB, 0x2F23, 0x0F26, 0x2F24, 0x0B47, 0x2F25, 0x0981, 0x2F26, 0x08A0, + 0x2F27, 0x120E, 0x2F28, 0x0A47, 0x2F29, 0x0996, 0x2F2A, 0x1226, 0x2F2B, + 0x1228, 0x2F2C, 0x1232, 0x2F2D, 0x0881, 0x2F2E, 0x126C, 0x2F2F, 0x07BB, + 0x2F30, 0x077E, 0x2F31, 0x06CA, 0x2F32, 0x05EF, 0x2F33, 0x1283, 0x2F34, + 0x1285, 0x2F35, 0x1299, 0x2F36, 0x129B, 0x2F37, 0x12A0, 0x2F38, 0x0677, + 0x2F39, 0x38B9, 0x2F3A, 0x12AF, 0x2F3B, 0x12B1, 0x2F3C, 0x09FA, 0x2F3D, + 0x1342, 0x2F3E, 0x0781, 0x2F3F, 0x0916, 0x2F40, 0x08A7, 0x2F41, 0x13C2, + 0x2F42, 0x0E08, 0x2F43, 0x0C47, 0x2F44, 0x06CC, 0x2F45, 0x0E4D, 0x2F46, + 0x13E0, 0x2F47, 0x0CD4, 0x2F48, 0x140C, 0x2F49, 0x0744, 0x2F4A, 0x0EE6, + 0x2F4B, 0x073D, 0x2F4C, 0x08AD, 0x2F4D, 0x14E5, 0x2F4E, 0x14F4, 0x2F4F, + 0x14F8, 0x2F50, 0x0D7A, 0x2F51, 0x0EDF, 0x2F52, 0x08AF, 0x2F53, 0x1502, + 0x2F54, 0x0A2B, 0x2F55, 0x0550, 0x2F56, 0x0BFA, 0x2F57, 0x0DD5, 0x2F58, + 0x15E4, 0x2F59, 0x15E6, 0x2F5A, 0x0E22, 0x2F5B, 0x0567, 0x2F5C, 0x0687, + 0x2F5D, 0x0758, 0x2F5E, 0x0770, 0x2F5F, 0x06C4, 0x2F60, 0x04DD, 0x2F61, + 0x05E0, 0x2F62, 0x0601, 0x2F63, 0x0A5C, 0x2F64, 0x0F3B, 0x2F65, 0x0C3E, + 0x2F66, 0x0D97, 0x2F67, 0x3A00, 0x2F68, 0x1697, 0x2F69, 0x0D28, 0x2F6A, + 0x0D7D, 0x2F6B, 0x087C, 0x2F6C, 0x0EE8, 0x2F6D, 0x0EC3, 0x2F6E, 0x0EFC, + 0x2F6F, 0x0A74, 0x2F70, 0x08D4, 0x2F71, 0x3A41, 0x2F72, 0x0553, 0x2F73, + 0x0740, 0x2F74, 0x0F71, 0x2F75, 0x0B9B, 0x2F76, 0x0E16, 0x2F77, 0x08B3, + 0x2F78, 0x0608, 0x2F79, 0x1813, 0x2F7A, 0x0F3D, 0x2F7B, 0x04CB, 0x2F7C, + 0x0FDD, 0x2F7D, 0x08D5, 0x2F7E, 0x183D, 0x2F7F, 0x08D6, 0x2F80, 0x1853, + 0x2F81, 0x0CD1, 0x2F82, 0x0A09, 0x2F83, 0x08D7, 0x2F84, 0x08B8, 0x2F85, + 0x04D3, 0x2F86, 0x0A89, 0x2F87, 0x0AA6, 0x2F88, 0x0938, 0x2F89, 0x0821, + 0x2F8A, 0x09ED, 0x2F8B, 0x18B2, 0x2F8C, 0x194F, 0x2F8D, 0x0BAC, 0x2F8E, + 0x0742, 0x2F8F, 0x07E6, 0x2F90, 0x04A5, 0x2F91, 0x19EB, 0x2F92, 0x075F, + 0x2F93, 0x05AF, 0x2F94, 0x0774, 0x2F95, 0x0B69, 0x2F96, 0x0C7E, 0x2F97, + 0x1A56, 0x2F98, 0x1A59, 0x2F99, 0x058B, 0x2F9A, 0x0A7A, 0x2F9B, 0x0AF8, + 0x2F9C, 0x0B0D, 0x2F9D, 0x0A0E, 0x2F9E, 0x0902, 0x2F9F, 0x0A0F, 0x2FA0, + 0x0B62, 0x2FA1, 0x3B4F, 0x2FA2, 0x0F22, 0x2FA3, 0x0CAB, 0x2FA4, 0x0D64, + 0x2FA5, 0x0F6C, 0x2FA6, 0x06DA, 0x2FA7, 0x0BD5, 0x2FA8, 0x0EF3, 0x2FA9, + 0x0DDE, 0x2FAA, 0x1BC9, 0x2FAB, 0x1BCB, 0x2FAC, 0x04CD, 0x2FAD, 0x21F7, + 0x2FAE, 0x0D87, 0x2FAF, 0x0ED8, 0x2FB0, 0x05B5, 0x2FB1, 0x1C03, 0x2FB2, + 0x1C05, 0x2FB3, 0x053B, 0x2FB4, 0x0E17, 0x2FB5, 0x0DE9, 0x2FB6, 0x0D88, + 0x2FB7, 0x09EF, 0x2FB8, 0x091F, 0x2FB9, 0x07F3, 0x2FBA, 0x0D05, 0x2FBB, + 0x080E, 0x2FBC, 0x07F4, 0x2FBD, 0x1C6C, 0x2FBE, 0x1C7D, 0x2FBF, 0x1C83, + 0x2FC0, 0x1C84, 0x2FC1, 0x064E, 0x2FC2, 0x0695, 0x2FC3, 0x0BD7, 0x2FC4, + 0x1CF6, 0x2FC5, 0x08DB, 0x2FC6, 0x1D01, 0x2FC7, 0x0E91, 0x2FC8, 0x340B, + 0x2FC9, 0x066A, 0x2FCA, 0x0807, 0x2FCB, 0x1D16, 0x2FCC, 0x1D19, 0x2FCD, + 0x0C1E, 0x2FCE, 0x0791, 0x2FCF, 0x0ACF, 0x2FD0, 0x0D93, 0x2FD1, 0x1D21, + 0x2FD2, 0x1D22, 0x2FD3, 0x0F7E, 0x2FD4, 0x1D30, 0x2FD5, 0x1D31, 0x3000, + 0x0279, 0x3001, 0x027A, 0x3002, 0x027B, 0x3003, 0x028F, 0x3004, 0x2074, + 0x3005, 0x0291, 0x3006, 0x0292, 0x3007, 0x0293, 0x3008, 0x02AA, 0x3009, + 0x02AB, 0x300A, 0x02AC, 0x300B, 0x02AD, 0x300C, 0x02AE, 0x300D, 0x02AF, + 0x300E, 0x02B0, 0x300F, 0x02B1, 0x3010, 0x02B2, 0x3011, 0x02B3, 0x3012, + 0x02DF, 0x3013, 0x02E4, 0x3014, 0x02A4, 0x3015, 0x02A5, 0x301C, 0x0299, + 0x301D, 0x1DB8, 0x301F, 0x1DB9, 0x3020, 0x1F7A, 0x3030, 0x2FBA, 0x3033, + 0x2F4C, 0x3034, 0x2F4D, 0x3035, 0x2F4E, 0x3036, 0x1F79, 0x3041, 0x034A, + 0x3042, 0x034B, 0x3043, 0x034C, 0x3044, 0x034D, 0x3045, 0x034E, 0x3046, + 0x034F, 0x3047, 0x0350, 0x3048, 0x0351, 0x3049, 0x0352, 0x304A, 0x0353, + 0x304B, 0x0354, 0x304C, 0x0355, 0x304D, 0x0356, 0x304E, 0x0357, 0x304F, + 0x0358, 0x3050, 0x0359, 0x3051, 0x035A, 0x3052, 0x035B, 0x3053, 0x035C, + 0x3054, 0x035D, 0x3055, 0x035E, 0x3056, 0x035F, 0x3057, 0x0360, 0x3058, + 0x0361, 0x3059, 0x0362, 0x305A, 0x0363, 0x305B, 0x0364, 0x305C, 0x0365, + 0x305D, 0x0366, 0x305E, 0x0367, 0x305F, 0x0368, 0x3060, 0x0369, 0x3061, + 0x036A, 0x3062, 0x036B, 0x3063, 0x036C, 0x3064, 0x036D, 0x3065, 0x036E, + 0x3066, 0x036F, 0x3067, 0x0370, 0x3068, 0x0371, 0x3069, 0x0372, 0x306A, + 0x0373, 0x306B, 0x0374, 0x306C, 0x0375, 0x306D, 0x0376, 0x306E, 0x0377, + 0x306F, 0x0378, 0x3070, 0x0379, 0x3071, 0x037A, 0x3072, 0x037B, 0x3073, + 0x037C, 0x3074, 0x037D, 0x3075, 0x037E, 0x3076, 0x037F, 0x3077, 0x0380, + 0x3078, 0x0381, 0x3079, 0x0382, 0x307A, 0x0383, 0x307B, 0x0384, 0x307C, + 0x0385, 0x307D, 0x0386, 0x307E, 0x0387, 0x307F, 0x0388, 0x3080, 0x0389, + 0x3081, 0x038A, 0x3082, 0x038B, 0x3083, 0x038C, 0x3084, 0x038D, 0x3085, + 0x038E, 0x3086, 0x038F, 0x3087, 0x0390, 0x3088, 0x0391, 0x3089, 0x0392, + 0x308A, 0x0393, 0x308B, 0x0394, 0x308C, 0x0395, 0x308D, 0x0396, 0x308E, + 0x0397, 0x308F, 0x0398, 0x3090, 0x0399, 0x3091, 0x039A, 0x3092, 0x039B, + 0x3093, 0x039C, 0x3094, 0x1F16, 0x309B, 0x0283, 0x309C, 0x0284, 0x309D, + 0x028D, 0x309E, 0x028E, 0x30A1, 0x039D, 0x30A2, 0x039E, 0x30A3, 0x039F, + 0x30A4, 0x03A0, 0x30A5, 0x03A1, 0x30A6, 0x03A2, 0x30A7, 0x03A3, 0x30A8, + 0x03A4, 0x30A9, 0x03A5, 0x30AA, 0x03A6, 0x30AB, 0x03A7, 0x30AC, 0x03A8, + 0x30AD, 0x03A9, 0x30AE, 0x03AA, 0x30AF, 0x03AB, 0x30B0, 0x03AC, 0x30B1, + 0x03AD, 0x30B2, 0x03AE, 0x30B3, 0x03AF, 0x30B4, 0x03B0, 0x30B5, 0x03B1, + 0x30B6, 0x03B2, 0x30B7, 0x03B3, 0x30B8, 0x03B4, 0x30B9, 0x03B5, 0x30BA, + 0x03B6, 0x30BB, 0x03B7, 0x30BC, 0x03B8, 0x30BD, 0x03B9, 0x30BE, 0x03BA, + 0x30BF, 0x03BB, 0x30C0, 0x03BC, 0x30C1, 0x03BD, 0x30C2, 0x03BE, 0x30C3, + 0x03BF, 0x30C4, 0x03C0, 0x30C5, 0x03C1, 0x30C6, 0x03C2, 0x30C7, 0x03C3, + 0x30C8, 0x03C4, 0x30C9, 0x03C5, 0x30CA, 0x03C6, 0x30CB, 0x03C7, 0x30CC, + 0x03C8, 0x30CD, 0x03C9, 0x30CE, 0x03CA, 0x30CF, 0x03CB, 0x30D0, 0x03CC, + 0x30D1, 0x03CD, 0x30D2, 0x03CE, 0x30D3, 0x03CF, 0x30D4, 0x03D0, 0x30D5, + 0x03D1, 0x30D6, 0x03D2, 0x30D7, 0x03D3, 0x30D8, 0x03D4, 0x30D9, 0x03D5, + 0x30DA, 0x03D6, 0x30DB, 0x03D7, 0x30DC, 0x03D8, 0x30DD, 0x03D9, 0x30DE, + 0x03DA, 0x30DF, 0x03DB, 0x30E0, 0x03DC, 0x30E1, 0x03DD, 0x30E2, 0x03DE, + 0x30E3, 0x03DF, 0x30E4, 0x03E0, 0x30E5, 0x03E1, 0x30E6, 0x03E2, 0x30E7, + 0x03E3, 0x30E8, 0x03E4, 0x30E9, 0x03E5, 0x30EA, 0x03E6, 0x30EB, 0x03E7, + 0x30EC, 0x03E8, 0x30ED, 0x03E9, 0x30EE, 0x03EA, 0x30EF, 0x03EB, 0x30F0, + 0x03EC, 0x30F1, 0x03ED, 0x30F2, 0x03EE, 0x30F3, 0x03EF, 0x30F4, 0x03F0, + 0x30F5, 0x03F1, 0x30F6, 0x03F2, 0x30F7, 0x2079, 0x30F8, 0x207A, 0x30F9, + 0x207B, 0x30FA, 0x207C, 0x30FB, 0x027E, 0x30FC, 0x0294, 0x30FD, 0x028B, + 0x30FE, 0x028C, 0x3220, 0x278E, 0x3221, 0x278F, 0x3222, 0x2790, 0x3223, + 0x2791, 0x3224, 0x2792, 0x3225, 0x2793, 0x3226, 0x2794, 0x3227, 0x2795, + 0x3228, 0x2796, 0x3229, 0x2797, 0x322A, 0x2006, 0x322B, 0x2007, 0x322C, + 0x2008, 0x322D, 0x2009, 0x322E, 0x200A, 0x322F, 0x200B, 0x3230, 0x2005, + 0x3231, 0x1DC2, 0x3232, 0x1DC3, 0x3233, 0x1FCF, 0x3234, 0x1FCD, 0x3235, + 0x1FD4, 0x3236, 0x1FD3, 0x3237, 0x200C, 0x3238, 0x1FCE, 0x3239, 0x1DC4, + 0x323A, 0x1FD7, 0x323B, 0x1FD5, 0x323C, 0x1FD0, 0x323D, 0x1FCB, 0x323E, + 0x1FD2, 0x323F, 0x1FCC, 0x3240, 0x1FD6, 0x3241, 0x200D, 0x3242, 0x1FD1, + 0x3243, 0x1FCA, 0x3280, 0x28DD, 0x3281, 0x28DE, 0x3282, 0x28DF, 0x3283, + 0x28E0, 0x3284, 0x28E1, 0x3285, 0x28E2, 0x3286, 0x28E3, 0x3287, 0x28E4, + 0x3288, 0x28E5, 0x3289, 0x28E6, 0x328A, 0x28E8, 0x328B, 0x28E9, 0x328C, + 0x28EA, 0x328D, 0x28EB, 0x328E, 0x28EC, 0x328F, 0x28ED, 0x3290, 0x28E7, + 0x3291, 0x1FE1, 0x3292, 0x1FE0, 0x3293, 0x1FE2, 0x3294, 0x1FDC, 0x3295, + 0x28FF, 0x3296, 0x1FE5, 0x3297, 0x28FC, 0x3298, 0x1FDE, 0x3299, 0x201F, + 0x329A, 0x28F9, 0x329B, 0x28F8, 0x329C, 0x28FE, 0x329D, 0x207F, 0x329E, + 0x1FFF, 0x329F, 0x28EF, 0x32A0, 0x28F6, 0x32A1, 0x28F7, 0x32A2, 0x28FB, + 0x32A3, 0x28FA, 0x32A4, 0x1DBD, 0x32A5, 0x1DBE, 0x32A6, 0x1DBF, 0x32A7, + 0x1DC0, 0x32A8, 0x1DC1, 0x32A9, 0x1FDA, 0x32AA, 0x1FDD, 0x32AB, 0x1FDF, + 0x32AC, 0x1FE3, 0x32AD, 0x1FD9, 0x32AE, 0x1FE4, 0x32AF, 0x1FDB, 0x32B0, + 0x1FD8, 0x32D0, 0x28AD, 0x32D1, 0x28AE, 0x32D2, 0x28AF, 0x32D3, 0x28B0, + 0x32D4, 0x28B1, 0x32D5, 0x28B2, 0x32D6, 0x28B3, 0x32D7, 0x28B4, 0x32D8, + 0x28B5, 0x32D9, 0x28B6, 0x32DA, 0x28B7, 0x32DB, 0x28B8, 0x32DC, 0x28B9, + 0x32DD, 0x28BA, 0x32DE, 0x28BB, 0x32DF, 0x28BC, 0x32E0, 0x28BD, 0x32E1, + 0x28BE, 0x32E2, 0x28BF, 0x32E3, 0x28C0, 0x32E4, 0x28C1, 0x32E5, 0x28C2, + 0x32E6, 0x28C3, 0x32E7, 0x28C4, 0x32E8, 0x28C5, 0x32E9, 0x28C6, 0x32EA, + 0x28C7, 0x32EB, 0x28C8, 0x32EC, 0x28C9, 0x32ED, 0x28CA, 0x32EE, 0x28CB, + 0x32EF, 0x28CC, 0x32F0, 0x28CD, 0x32F1, 0x28CE, 0x32F2, 0x28CF, 0x32F3, + 0x28D0, 0x32F4, 0x28D1, 0x32F5, 0x28D2, 0x32F6, 0x28D3, 0x32F7, 0x28D4, + 0x32F8, 0x28D5, 0x32F9, 0x28D6, 0x32FA, 0x28D7, 0x32FB, 0x28D8, 0x32FC, + 0x28D9, 0x32FD, 0x28DA, 0x32FE, 0x28DB, 0x3300, 0x1F70, 0x3301, 0x2E62, + 0x3302, 0x2E63, 0x3303, 0x1F6A, 0x3304, 0x2E64, 0x3305, 0x1FF7, 0x3306, + 0x2E65, 0x3307, 0x2E69, 0x3308, 0x2E67, 0x3309, 0x2E6C, 0x330A, 0x2E6A, + 0x330B, 0x2E6E, 0x330C, 0x2E70, 0x330D, 0x1DAB, 0x330E, 0x2E71, 0x330F, + 0x2E72, 0x3310, 0x2E73, 0x3311, 0x2E74, 0x3312, 0x2E75, 0x3313, 0x2E76, + 0x3314, 0x1DA2, 0x3315, 0x1F69, 0x3316, 0x1F67, 0x3317, 0x2E78, 0x3318, + 0x1F68, 0x3319, 0x2E7A, 0x331A, 0x2E7C, 0x331B, 0x2E7D, 0x331C, 0x2E7E, + 0x331D, 0x2E7F, 0x331E, 0x1F73, 0x331F, 0x2E80, 0x3320, 0x2E81, 0x3321, + 0x2E82, 0x3322, 0x1F66, 0x3323, 0x1F6B, 0x3324, 0x2E83, 0x3325, 0x2E85, + 0x3326, 0x1DAC, 0x3327, 0x1DA6, 0x3328, 0x2E88, 0x3329, 0x2E89, 0x332A, + 0x1F74, 0x332B, 0x1DAE, 0x332D, 0x2E8B, 0x332E, 0x2E8E, 0x332F, 0x2E8F, + 0x3330, 0x2E90, 0x3331, 0x1F71, 0x3332, 0x2E91, 0x3333, 0x2087, 0x3334, + 0x2E94, 0x3335, 0x2E95, 0x3336, 0x1DA8, 0x3337, 0x2E9A, 0x3338, 0x2E9C, + 0x3339, 0x1F6E, 0x333A, 0x2E9D, 0x333B, 0x1F6F, 0x333C, 0x2E96, 0x333D, + 0x2E9E, 0x333E, 0x2EA0, 0x333F, 0x2EA1, 0x3340, 0x2EA2, 0x3341, 0x2E9F, + 0x3342, 0x1F6D, 0x3343, 0x2EA3, 0x3344, 0x2EA4, 0x3345, 0x2EA5, 0x3346, + 0x2EA6, 0x3347, 0x1F72, 0x3348, 0x2EA7, 0x3349, 0x1DA1, 0x334A, 0x1DAF, + 0x334B, 0x2EA8, 0x334C, 0x2EA9, 0x334D, 0x1DA4, 0x334E, 0x2088, 0x334F, + 0x2EAA, 0x3350, 0x2EAB, 0x3351, 0x1DA9, 0x3352, 0x2EAE, 0x3353, 0x2EB2, + 0x3354, 0x2EAF, 0x3355, 0x2EB3, 0x3356, 0x2EB4, 0x3357, 0x1F6C, 0x3371, + 0x2E55, 0x337B, 0x2083, 0x337C, 0x1DC7, 0x337D, 0x1DC6, 0x337E, 0x1DC5, + 0x337F, 0x1F76, 0x3385, 0x1F5F, 0x3386, 0x1F60, 0x3387, 0x1F61, 0x3388, + 0x2000, 0x3389, 0x2001, 0x338D, 0x2E58, 0x338E, 0x1DB4, 0x338F, 0x1DB5, + 0x3390, 0x1F63, 0x3396, 0x1F65, 0x3397, 0x1F58, 0x3398, 0x1F5A, 0x339B, + 0x2E59, 0x339C, 0x1DB1, 0x339D, 0x1DB2, 0x339E, 0x1DB3, 0x339F, 0x1FFA, + 0x33A0, 0x1F54, 0x33A1, 0x1DB7, 0x33A2, 0x1F55, 0x33A3, 0x1FFB, 0x33A4, + 0x1F56, 0x33A5, 0x1F57, 0x33A6, 0x1FFC, 0x33B0, 0x1F5E, 0x33B1, 0x1F5D, + 0x33B2, 0x1F5C, 0x33B3, 0x1F5B, 0x33C2, 0x2E50, 0x33C4, 0x1DB6, 0x33C8, + 0x2002, 0x33CB, 0x1F62, 0x33CC, 0x1FF6, 0x33CD, 0x1DBB, 0x33D4, 0x1F64, + 0x33D7, 0x2E5D, 0x33D8, 0x2E5E, 0x33DA, 0x2E4B, 0x3402, 0x3582, 0x3405, + 0x3C1B, 0x3427, 0x3656, 0x3488, 0x3C52, 0x34DB, 0x3C41, 0x351F, 0x3629, + 0x353E, 0x371E, 0x378D, 0x361A, 0x37E2, 0x372B, 0x3AF3, 0x3C40, 0x3B22, + 0x3C49, 0x3B88, 0x368D, 0x3E8A, 0x3C43, 0x3EDA, 0x3C48, 0x3FB1, 0x3754, + 0x4093, 0x3C4C, 0x4103, 0x3C4F, 0x4264, 0x3760, 0x4293, 0x3C50, 0x440C, + 0x3C42, 0x4453, 0x3773, 0x457A, 0x3C4B, 0x4665, 0x3C4E, 0x46AE, 0x3C51, + 0x4BE8, 0x3C46, 0x4E00, 0x04B0, 0x4E01, 0x0BB8, 0x4E03, 0x08E3, 0x4E04, + 0x37D8, 0x4E05, 0x37D9, 0x4E07, 0x0EAA, 0x4E08, 0x09CE, 0x4E09, 0x087E, + 0x4E0A, 0x09CD, 0x4E0B, 0x053C, 0x4E0D, 0x0DC6, 0x4E0E, 0x0F29, 0x4E10, + 0x0FFB, 0x4E11, 0x04D1, 0x4E14, 0x05CC, 0x4E15, 0x0FFC, 0x4E16, 0x0A48, + 0x4E17, 0x10D7, 0x4E18, 0x0670, 0x4E19, 0x0E0A, 0x4E1E, 0x09CF, 0x4E1F, + 0x37DA, 0x4E21, 0x0F86, 0x4E26, 0x0E12, 0x4E28, 0x20B3, 0x4E2A, 0x0FFD, + 0x4E2B, 0x37DB, 0x4E2C, 0x374D, 0x4E2D, 0x0BA4, 0x4E2F, 0x37DC, 0x4E30, + 0x37DD, 0x4E31, 0x0FFE, 0x4E32, 0x06F2, 0x4E36, 0x0FFF, 0x4E37, 0x369D, + 0x4E38, 0x0619, 0x4E39, 0x0B6E, 0x4E3B, 0x0913, 0x4E3C, 0x1000, 0x4E3F, + 0x1001, 0x4E40, 0x37DE, 0x4E41, 0x37DF, 0x4E42, 0x1002, 0x4E43, 0x0CEB, + 0x4E44, 0x37E0, 0x4E45, 0x0671, 0x4E48, 0x372E, 0x4E4B, 0x0CED, 0x4E4D, + 0x0CBB, 0x4E4E, 0x0777, 0x4E4F, 0x0E61, 0x4E55, 0x1950, 0x4E56, 0x1003, + 0x4E57, 0x09D0, 0x4E58, 0x1004, 0x4E59, 0x0535, 0x4E5A, 0x37E1, 0x4E5D, + 0x06DD, 0x4E5E, 0x07A4, 0x4E5F, 0x0EF5, 0x4E62, 0x1233, 0x4E71, 0x0F5A, + 0x4E73, 0x0CD5, 0x4E7E, 0x05E1, 0x4E7F, 0x37E2, 0x4E80, 0x064F, 0x4E82, + 0x1005, 0x4E85, 0x1006, 0x4E86, 0x0F83, 0x4E88, 0x0F27, 0x4E89, 0x0AEA, + 0x4E8A, 0x1008, 0x4E8B, 0x08C4, 0x4E8C, 0x0CCB, 0x4E8D, 0x37E3, 0x4E8E, + 0x100B, 0x4E91, 0x04E0, 0x4E92, 0x0793, 0x4E94, 0x0792, 0x4E95, 0x04AA, + 0x4E96, 0x37E4, 0x4E98, 0x0FF1, 0x4E99, 0x0FF0, 0x4E9B, 0x0823, 0x4E9C, + 0x0465, 0x4E9E, 0x100C, 0x4E9F, 0x100D, 0x4EA0, 0x100E, 0x4EA1, 0x0E62, + 0x4EA2, 0x100F, 0x4EA4, 0x07A6, 0x4EA5, 0x04AB, 0x4EA6, 0x0EA0, 0x4EA8, + 0x0696, 0x4EAB, 0x0697, 0x4EAC, 0x0698, 0x4EAD, 0x0BFE, 0x4EAE, 0x0F84, + 0x4EB0, 0x1010, 0x4EB3, 0x1011, 0x4EB6, 0x1012, 0x4EB9, 0x37E5, 0x4EBA, + 0x0A13, 0x4EBB, 0x3620, 0x4EC0, 0x0944, 0x4EC1, 0x0A14, 0x4EC2, 0x1017, + 0x4EC4, 0x1015, 0x4EC6, 0x1016, 0x4EC7, 0x0672, 0x4ECA, 0x0813, 0x4ECB, + 0x0570, 0x4ECD, 0x1014, 0x4ECE, 0x1013, 0x4ECF, 0x0DF9, 0x4ED0, 0x37E6, + 0x4ED4, 0x0894, 0x4ED5, 0x0893, 0x4ED6, 0x0B1E, 0x4ED7, 0x1018, 0x4ED8, + 0x0DC7, 0x4ED9, 0x0A8B, 0x4EDD, 0x0290, 0x4EDE, 0x1019, 0x4EDF, 0x101B, + 0x4EE0, 0x37E7, 0x4EE1, 0x20B4, 0x4EE3, 0x0B45, 0x4EE4, 0x0FA9, 0x4EE5, + 0x048E, 0x4EED, 0x101A, 0x4EEE, 0x053E, 0x4EF0, 0x06BC, 0x4EF2, 0x0BA5, + 0x4EF6, 0x0745, 0x4EF7, 0x101C, 0x4EFB, 0x0CDA, 0x4EFC, 0x20B5, 0x4EFD, + 0x37E8, 0x4EFF, 0x37E9, 0x4F00, 0x20B6, 0x4F01, 0x0627, 0x4F03, 0x20B7, + 0x4F09, 0x101D, 0x4F0A, 0x048F, 0x4F0B, 0x37EA, 0x4F0D, 0x0794, 0x4F0E, + 0x0628, 0x4F0F, 0x0DEC, 0x4F10, 0x0D46, 0x4F11, 0x0673, 0x4F15, 0x37EB, + 0x4F1A, 0x0571, 0x4F1C, 0x1040, 0x4F1D, 0x0C3B, 0x4F2F, 0x0D22, 0x4F30, + 0x101F, 0x4F34, 0x0D50, 0x4F36, 0x0FAA, 0x4F38, 0x09F3, 0x4F39, 0x20B8, + 0x4F3A, 0x0895, 0x4F3B, 0x37ED, 0x4F3C, 0x08C5, 0x4F3D, 0x0540, 0x4F43, + 0x0BED, 0x4F46, 0x0B60, 0x4F47, 0x1023, 0x4F49, 0x37EE, 0x4F4D, 0x0490, + 0x4F4E, 0x0BFF, 0x4F4F, 0x0945, 0x4F50, 0x0824, 0x4F51, 0x0F0E, 0x4F53, + 0x0B2E, 0x4F54, 0x37EF, 0x4F55, 0x053F, 0x4F56, 0x20B9, 0x4F57, 0x1022, + 0x4F59, 0x0F28, 0x4F5A, 0x101E, 0x4F5B, 0x1020, 0x4F5C, 0x085E, 0x4F5D, + 0x1021, 0x4F5E, 0x11D3, 0x4F60, 0x37EC, 0x4F69, 0x1029, 0x4F6F, 0x102C, + 0x4F70, 0x102A, 0x4F73, 0x0542, 0x4F75, 0x0E0B, 0x4F76, 0x1024, 0x4F7A, + 0x37F0, 0x4F7B, 0x1028, 0x4F7C, 0x07A7, 0x4F7D, 0x37F1, 0x4F7E, 0x37F2, + 0x4F7F, 0x0896, 0x4F83, 0x05E2, 0x4F86, 0x102D, 0x4F88, 0x1025, 0x4F8A, + 0x20BB, 0x4F8B, 0x0FAB, 0x4F8D, 0x08C6, 0x4F8F, 0x1026, 0x4F91, 0x102B, + 0x4F92, 0x20BA, 0x4F94, 0x20BD, 0x4F96, 0x102E, 0x4F97, 0x37F3, 0x4F98, + 0x1027, 0x4F9A, 0x20BC, 0x4F9B, 0x0699, 0x4F9D, 0x0491, 0x4FA0, 0x069A, + 0x4FA1, 0x0541, 0x4FAB, 0x11D4, 0x4FAD, 0x0EA7, 0x4FAE, 0x0DE0, 0x4FAF, + 0x07A8, 0x4FB5, 0x09F5, 0x4FB6, 0x0F7F, 0x4FBE, 0x37F4, 0x4FBF, 0x0E28, + 0x4FC2, 0x070E, 0x4FC3, 0x0B05, 0x4FC4, 0x0564, 0x4FC9, 0x20AC, 0x4FCA, + 0x095D, 0x4FCD, 0x20BE, 0x4FCE, 0x1032, 0x4FCF, 0x37F5, 0x4FD0, 0x1037, + 0x4FD1, 0x1035, 0x4FD3, 0x3C2F, 0x4FD4, 0x1030, 0x4FD7, 0x0B0F, 0x4FD8, + 0x1033, 0x4FDA, 0x1036, 0x4FDB, 0x1034, 0x4FDD, 0x0E2D, 0x4FDF, 0x1031, + 0x4FE0, 0x1DEC, 0x4FE1, 0x09F4, 0x4FE3, 0x0EA1, 0x4FE4, 0x1038, 0x4FE5, + 0x1039, 0x4FEE, 0x092E, 0x4FEF, 0x1046, 0x4FF3, 0x0D06, 0x4FF5, 0x0DA8, + 0x4FF6, 0x1041, 0x4FF8, 0x0E40, 0x4FFA, 0x0536, 0x4FFD, 0x37F6, 0x4FFE, + 0x1045, 0x4FFF, 0x20C1, 0x5000, 0x37F7, 0x5001, 0x37F8, 0x5002, 0x3447, + 0x5005, 0x103F, 0x5006, 0x1048, 0x5009, 0x0AD4, 0x500B, 0x0778, 0x500D, + 0x0D12, 0x500F, 0x1600, 0x5010, 0x37F9, 0x5011, 0x1047, 0x5012, 0x0C57, + 0x5014, 0x103C, 0x5016, 0x07AA, 0x5019, 0x07A9, 0x501A, 0x103A, 0x501B, + 0x37FA, 0x501E, 0x20C2, 0x501F, 0x0906, 0x5021, 0x1042, 0x5022, 0x20C0, + 0x5023, 0x0E3F, 0x5024, 0x0B8B, 0x5025, 0x103E, 0x5026, 0x0747, 0x5027, + 0x37FB, 0x5028, 0x103B, 0x5029, 0x1043, 0x502A, 0x103D, 0x502B, 0x0F99, + 0x502C, 0x1044, 0x502D, 0x0FE7, 0x502E, 0x37FC, 0x5036, 0x06DE, 0x5039, + 0x0746, 0x503B, 0x3800, 0x5040, 0x20BF, 0x5042, 0x20C5, 0x5043, 0x1049, + 0x5046, 0x20C3, 0x5047, 0x104A, 0x5048, 0x104E, 0x5049, 0x0492, 0x504F, + 0x0E20, 0x5050, 0x104D, 0x5055, 0x104C, 0x5056, 0x1050, 0x5057, 0x37FD, + 0x505A, 0x104F, 0x505C, 0x0C00, 0x5065, 0x0748, 0x5066, 0x37FE, 0x506A, + 0x37FF, 0x506C, 0x1051, 0x5070, 0x20C4, 0x5072, 0x08F1, 0x5074, 0x0B06, + 0x5075, 0x0C01, 0x5076, 0x06EE, 0x5078, 0x1052, 0x507D, 0x0650, 0x5080, + 0x1053, 0x5085, 0x1055, 0x508D, 0x0E63, 0x508F, 0x3801, 0x5091, 0x073C, + 0x5094, 0x20C6, 0x5096, 0x3802, 0x5098, 0x087F, 0x5099, 0x0D8B, 0x509A, + 0x1054, 0x509C, 0x3803, 0x50AC, 0x0835, 0x50AD, 0x0F2D, 0x50B2, 0x1057, + 0x50B3, 0x105A, 0x50B4, 0x1056, 0x50B5, 0x0834, 0x50B7, 0x0987, 0x50BE, + 0x070F, 0x50C2, 0x105B, 0x50C5, 0x06C7, 0x50C9, 0x1058, 0x50CA, 0x1059, + 0x50CC, 0x3804, 0x50CD, 0x0C87, 0x50CF, 0x0AFE, 0x50D1, 0x069B, 0x50D5, + 0x0E7B, 0x50D6, 0x105C, 0x50D8, 0x20C8, 0x50D9, 0x3C30, 0x50DA, 0x0F85, + 0x50DE, 0x105D, 0x50E3, 0x1060, 0x50E5, 0x105E, 0x50E6, 0x3805, 0x50E7, + 0x0AD0, 0x50E9, 0x3806, 0x50ED, 0x105F, 0x50EE, 0x1061, 0x50EF, 0x3807, + 0x50F0, 0x3C31, 0x50F4, 0x20C7, 0x50F5, 0x1063, 0x50F9, 0x1062, 0x50FB, + 0x0E18, 0x5100, 0x0651, 0x5101, 0x1065, 0x5102, 0x1066, 0x5104, 0x052F, + 0x5108, 0x3808, 0x5109, 0x1064, 0x510B, 0x3809, 0x5110, 0x380A, 0x5112, + 0x0920, 0x5114, 0x1069, 0x5115, 0x1068, 0x5116, 0x1067, 0x5118, 0x102F, + 0x511A, 0x106A, 0x511B, 0x380B, 0x511E, 0x380C, 0x511F, 0x0988, 0x5121, + 0x106B, 0x512A, 0x0F0F, 0x5132, 0x0EE5, 0x5137, 0x106D, 0x513A, 0x106C, + 0x513B, 0x106F, 0x513C, 0x106E, 0x513F, 0x1070, 0x5140, 0x1071, 0x5141, + 0x04B8, 0x5143, 0x0769, 0x5144, 0x0711, 0x5145, 0x0946, 0x5146, 0x0BB9, + 0x5147, 0x069C, 0x5148, 0x0A8C, 0x5149, 0x07AB, 0x514A, 0x20C9, 0x514B, + 0x0800, 0x514C, 0x1073, 0x514D, 0x0ED4, 0x514E, 0x0C40, 0x5150, 0x08C7, + 0x5152, 0x1072, 0x5154, 0x1074, 0x515A, 0x0C58, 0x515C, 0x05D3, 0x515F, + 0x380D, 0x5162, 0x1075, 0x5164, 0x20CA, 0x5165, 0x0CD6, 0x5167, 0x368E, + 0x5168, 0x0AB6, 0x5169, 0x1077, 0x516A, 0x1078, 0x516B, 0x0D40, 0x516C, + 0x07AC, 0x516D, 0x0FE1, 0x516E, 0x1079, 0x5171, 0x069E, 0x5175, 0x0E0C, + 0x5176, 0x0B16, 0x5177, 0x06E9, 0x5178, 0x0C2F, 0x5179, 0x3779, 0x517C, + 0x0749, 0x5180, 0x107A, 0x5182, 0x107B, 0x5185, 0x0CBA, 0x5186, 0x0501, + 0x5189, 0x107E, 0x518A, 0x086D, 0x518C, 0x107D, 0x518D, 0x0836, 0x518F, + 0x107F, 0x5190, 0x185B, 0x5191, 0x1080, 0x5192, 0x0E6F, 0x5193, 0x1081, + 0x5195, 0x1082, 0x5196, 0x1083, 0x5197, 0x09D1, 0x5199, 0x08F8, 0x519D, + 0x20CB, 0x51A0, 0x05E3, 0x51A1, 0x380E, 0x51A2, 0x1086, 0x51A4, 0x1084, + 0x51A5, 0x0EC9, 0x51A6, 0x1085, 0x51A8, 0x0DCC, 0x51A9, 0x1087, 0x51AA, + 0x1088, 0x51AB, 0x1089, 0x51AC, 0x0C59, 0x51B0, 0x108D, 0x51B1, 0x108B, + 0x51B2, 0x108C, 0x51B3, 0x108A, 0x51B4, 0x0853, 0x51B5, 0x108E, 0x51B6, + 0x0EF6, 0x51B7, 0x0FAC, 0x51BC, 0x380F, 0x51BD, 0x108F, 0x51BE, 0x20CC, + 0x51C3, 0x3C32, 0x51C4, 0x0A4C, 0x51C5, 0x1090, 0x51C6, 0x0964, 0x51C9, + 0x1091, 0x51CB, 0x0BBA, 0x51CC, 0x0F87, 0x51CD, 0x0C5A, 0x51D6, 0x10DA, + 0x51DB, 0x1092, 0x51DC, 0x205C, 0x51DD, 0x06BD, 0x51DE, 0x3810, 0x51E0, + 0x1093, 0x51E1, 0x0E8C, 0x51E6, 0x0972, 0x51E7, 0x0B5C, 0x51E9, 0x1095, + 0x51EA, 0x0CBC, 0x51EC, 0x20CD, 0x51ED, 0x1096, 0x51EE, 0x3811, 0x51F0, + 0x1097, 0x51F1, 0x058C, 0x51F4, 0x3812, 0x51F5, 0x1098, 0x51F6, 0x069F, + 0x51F8, 0x0CA4, 0x51F9, 0x051C, 0x51FA, 0x095A, 0x51FD, 0x0D35, 0x51FE, + 0x1099, 0x5200, 0x0C5B, 0x5201, 0x3813, 0x5202, 0x3814, 0x5203, 0x0A15, + 0x5204, 0x109A, 0x5206, 0x0DFC, 0x5207, 0x0A7E, 0x5208, 0x05DE, 0x520A, + 0x05E5, 0x520B, 0x109B, 0x520E, 0x109D, 0x5211, 0x0710, 0x5213, 0x3815, + 0x5214, 0x109C, 0x5215, 0x20CE, 0x5217, 0x0FBB, 0x521D, 0x0973, 0x5224, + 0x0D51, 0x5225, 0x0E1C, 0x5227, 0x109E, 0x5229, 0x0F62, 0x522A, 0x109F, + 0x522E, 0x10A0, 0x5230, 0x0C78, 0x5233, 0x10A1, 0x5236, 0x0A4D, 0x5237, + 0x086E, 0x5238, 0x074A, 0x5239, 0x10A2, 0x523A, 0x0897, 0x523B, 0x0801, + 0x5243, 0x0C02, 0x5244, 0x10A4, 0x5247, 0x0B07, 0x5249, 0x3816, 0x524A, + 0x085F, 0x524B, 0x10A5, 0x524C, 0x10A6, 0x524D, 0x0AB2, 0x524F, 0x10A3, + 0x5254, 0x10A8, 0x5256, 0x0E64, 0x525B, 0x07F6, 0x525D, 0x1E5E, 0x525E, + 0x10A7, 0x5261, 0x3817, 0x5263, 0x074B, 0x5264, 0x084E, 0x5265, 0x0D23, + 0x5266, 0x3818, 0x5269, 0x10AB, 0x526A, 0x10A9, 0x526F, 0x0DED, 0x5270, + 0x09D2, 0x5271, 0x10B2, 0x5272, 0x05C2, 0x5273, 0x10AC, 0x5274, 0x10AA, + 0x5275, 0x0AD1, 0x527D, 0x10AE, 0x527F, 0x10AD, 0x5283, 0x05A2, 0x5287, + 0x0736, 0x5288, 0x10B3, 0x5289, 0x0F75, 0x528D, 0x10AF, 0x5291, 0x10B4, + 0x5292, 0x10B1, 0x5293, 0x3819, 0x5294, 0x10B0, 0x529B, 0x0F97, 0x529C, + 0x20CF, 0x529F, 0x07AD, 0x52A0, 0x0543, 0x52A3, 0x0FBC, 0x52A6, 0x20D0, + 0x52A9, 0x097F, 0x52AA, 0x0C52, 0x52AB, 0x07F7, 0x52AC, 0x10B7, 0x52AD, + 0x10B8, 0x52AF, 0x217D, 0x52B1, 0x0FAD, 0x52B4, 0x0FD1, 0x52B5, 0x10BA, + 0x52B9, 0x07AE, 0x52BC, 0x10B9, 0x52BE, 0x058D, 0x52C0, 0x20D1, 0x52C1, + 0x10BB, 0x52C3, 0x0E84, 0x52C5, 0x0BD8, 0x52C7, 0x0F10, 0x52C8, 0x381A, + 0x52C9, 0x0E29, 0x52CD, 0x10BC, 0x52D0, 0x36E8, 0x52D2, 0x1BEE, 0x52D5, + 0x0C88, 0x52D7, 0x10BD, 0x52D8, 0x05E6, 0x52D9, 0x0EBF, 0x52DB, 0x20D2, + 0x52DD, 0x0989, 0x52DE, 0x10BE, 0x52DF, 0x0E37, 0x52E0, 0x10C2, 0x52E2, + 0x0A4E, 0x52E3, 0x10BF, 0x52E4, 0x06C8, 0x52E6, 0x10C0, 0x52E7, 0x05E7, + 0x52F0, 0x381B, 0x52F2, 0x0704, 0x52F3, 0x10C3, 0x52F5, 0x10C4, 0x52F8, + 0x10C5, 0x52F9, 0x10C6, 0x52FA, 0x0907, 0x52FE, 0x07AF, 0x52FF, 0x0EEA, + 0x5300, 0x20D3, 0x5301, 0x0EF4, 0x5302, 0x0CCF, 0x5305, 0x0E41, 0x5306, + 0x10C7, 0x5307, 0x20D4, 0x5308, 0x10C8, 0x530A, 0x381C, 0x530B, 0x381D, + 0x530D, 0x10CA, 0x530F, 0x10CC, 0x5310, 0x10CB, 0x5315, 0x10CD, 0x5316, + 0x053D, 0x5317, 0x0E7A, 0x5319, 0x086C, 0x531A, 0x10CE, 0x531D, 0x0ADB, + 0x5320, 0x098A, 0x5321, 0x06A1, 0x5323, 0x10CF, 0x5324, 0x20D5, 0x532A, + 0x0D6F, 0x532F, 0x10D0, 0x5331, 0x10D1, 0x5333, 0x10D2, 0x5338, 0x10D3, + 0x5339, 0x0D96, 0x533A, 0x06E0, 0x533B, 0x04A9, 0x533E, 0x381E, 0x533F, + 0x0C97, 0x5340, 0x10D4, 0x5341, 0x0947, 0x5343, 0x0A8D, 0x5345, 0x10D6, + 0x5346, 0x10D5, 0x5347, 0x098B, 0x5348, 0x0795, 0x5349, 0x10D8, 0x534A, + 0x0D52, 0x534B, 0x3820, 0x534C, 0x381F, 0x534D, 0x10D9, 0x5351, 0x0D70, + 0x5352, 0x0B14, 0x5353, 0x0B4E, 0x5354, 0x06A0, 0x5357, 0x0CC6, 0x5358, + 0x0B6F, 0x535A, 0x0D24, 0x535C, 0x0E7C, 0x535E, 0x10DB, 0x5360, 0x0A8E, + 0x5361, 0x3821, 0x5366, 0x070B, 0x5369, 0x10DC, 0x536C, 0x3822, 0x536E, + 0x10DD, 0x536F, 0x04CE, 0x5370, 0x04B9, 0x5371, 0x0629, 0x5372, 0x20D6, + 0x5373, 0x0B08, 0x5374, 0x066B, 0x5375, 0x0F5B, 0x5377, 0x10E0, 0x5378, + 0x0537, 0x537B, 0x10DF, 0x537D, 0x3435, 0x537F, 0x06A2, 0x5382, 0x10E1, + 0x5384, 0x0EFD, 0x5389, 0x37D0, 0x5393, 0x20D7, 0x5396, 0x10E2, 0x5398, + 0x0F9A, 0x539A, 0x07B0, 0x539F, 0x076A, 0x53A0, 0x10E3, 0x53A5, 0x10E5, + 0x53A6, 0x10E4, 0x53A8, 0x0A25, 0x53A9, 0x04DB, 0x53AB, 0x3823, 0x53AD, + 0x0500, 0x53AE, 0x10E6, 0x53B0, 0x10E7, 0x53B2, 0x20D8, 0x53B3, 0x076B, + 0x53B6, 0x10E8, 0x53BB, 0x0688, 0x53C2, 0x0880, 0x53C3, 0x10E9, 0x53C8, + 0x0EA2, 0x53C9, 0x0825, 0x53CA, 0x0674, 0x53CB, 0x0F11, 0x53CC, 0x0AD2, + 0x53CD, 0x0D53, 0x53CE, 0x0929, 0x53D4, 0x0951, 0x53D6, 0x0914, 0x53D7, + 0x0921, 0x53D9, 0x0980, 0x53DA, 0x3824, 0x53DB, 0x0D54, 0x53DD, 0x20D9, + 0x53DF, 0x10EC, 0x53E1, 0x04E5, 0x53E2, 0x0AD3, 0x53E3, 0x07B1, 0x53E4, + 0x0779, 0x53E5, 0x06DF, 0x53E6, 0x3825, 0x53E8, 0x10F0, 0x53E9, 0x0B5F, + 0x53EA, 0x0B5E, 0x53EB, 0x06A3, 0x53EC, 0x098C, 0x53ED, 0x10F1, 0x53EE, + 0x10EF, 0x53EF, 0x0544, 0x53F0, 0x0B46, 0x53F1, 0x08E4, 0x53F2, 0x0899, + 0x53F3, 0x04C8, 0x53F5, 0x3826, 0x53F6, 0x05CE, 0x53F7, 0x07F8, 0x53F8, + 0x0898, 0x53FA, 0x10F2, 0x5401, 0x10F3, 0x5403, 0x0663, 0x5404, 0x05A4, + 0x5408, 0x07F9, 0x5409, 0x0662, 0x540A, 0x0BFB, 0x540B, 0x04C7, 0x540C, + 0x0C89, 0x540D, 0x0ECA, 0x540E, 0x07B3, 0x540F, 0x0F63, 0x5410, 0x0C41, + 0x5411, 0x07B2, 0x541B, 0x0705, 0x541D, 0x10FC, 0x541F, 0x06DB, 0x5420, + 0x0E78, 0x5426, 0x0D71, 0x5427, 0x3827, 0x5429, 0x10FB, 0x542B, 0x061A, + 0x542C, 0x10F6, 0x542D, 0x10F7, 0x542E, 0x10F9, 0x5433, 0x35C0, 0x5436, + 0x10FA, 0x5438, 0x0675, 0x5439, 0x0A27, 0x543B, 0x0DFD, 0x543C, 0x10F8, + 0x543D, 0x10F4, 0x543E, 0x0797, 0x543F, 0x35CF, 0x5440, 0x10F5, 0x5442, + 0x0FCA, 0x5446, 0x0E42, 0x5448, 0x0C04, 0x5449, 0x0796, 0x544A, 0x0802, + 0x544D, 0x3828, 0x544E, 0x10FD, 0x5451, 0x0CB5, 0x5455, 0x3723, 0x545F, + 0x1101, 0x5466, 0x3829, 0x5468, 0x092A, 0x546A, 0x0922, 0x546B, 0x382A, + 0x5470, 0x1104, 0x5471, 0x1102, 0x5473, 0x0EAF, 0x5474, 0x382B, 0x5475, + 0x10FF, 0x5476, 0x1108, 0x5477, 0x1103, 0x547B, 0x1106, 0x547C, 0x077A, + 0x547D, 0x0ECB, 0x5480, 0x1107, 0x5484, 0x1109, 0x5486, 0x110B, 0x548A, + 0x20DC, 0x548B, 0x0860, 0x548C, 0x0FE8, 0x548D, 0x382C, 0x548E, 0x1100, + 0x548F, 0x10FE, 0x5490, 0x110A, 0x5492, 0x1105, 0x5496, 0x382D, 0x549C, + 0x20DB, 0x54A1, 0x382E, 0x54A2, 0x110D, 0x54A4, 0x1116, 0x54A5, 0x110F, + 0x54A8, 0x1113, 0x54A9, 0x20DD, 0x54AB, 0x1114, 0x54AC, 0x1110, 0x54AD, + 0x382F, 0x54AF, 0x1131, 0x54B2, 0x0859, 0x54B3, 0x058F, 0x54B8, 0x110E, + 0x54B9, 0x3830, 0x54BC, 0x1118, 0x54BD, 0x04BA, 0x54BE, 0x1117, 0x54BF, + 0x3831, 0x54C0, 0x0469, 0x54C1, 0x0DBC, 0x54C2, 0x1115, 0x54C4, 0x1111, + 0x54C6, 0x3832, 0x54C7, 0x110C, 0x54C8, 0x1112, 0x54C9, 0x0838, 0x54CD, + 0x3833, 0x54D8, 0x1119, 0x54E1, 0x04BB, 0x54E2, 0x1122, 0x54E5, 0x111A, + 0x54E6, 0x111B, 0x54E8, 0x098D, 0x54E9, 0x0E97, 0x54ED, 0x1120, 0x54EE, + 0x111F, 0x54F2, 0x0C29, 0x54FA, 0x1121, 0x54FD, 0x111E, 0x54FF, 0x20DE, + 0x5504, 0x04D6, 0x5506, 0x0826, 0x5507, 0x09F6, 0x550E, 0x3834, 0x550F, + 0x111C, 0x5510, 0x0C5C, 0x5514, 0x111D, 0x5516, 0x0466, 0x552B, 0x3835, + 0x552E, 0x1127, 0x552F, 0x0F0D, 0x5531, 0x098F, 0x5533, 0x112D, 0x5535, + 0x3836, 0x5538, 0x112C, 0x5539, 0x1123, 0x553E, 0x0B23, 0x5540, 0x1124, + 0x5544, 0x0B4F, 0x5545, 0x1129, 0x5546, 0x098E, 0x554A, 0x3837, 0x554C, + 0x1126, 0x554F, 0x0EF0, 0x5553, 0x0712, 0x5556, 0x112A, 0x5557, 0x112B, + 0x555C, 0x1128, 0x555D, 0x112E, 0x555E, 0x1DD1, 0x5560, 0x3838, 0x5561, + 0x3839, 0x5563, 0x1125, 0x557B, 0x1134, 0x557C, 0x1139, 0x557E, 0x1135, + 0x5580, 0x1130, 0x5583, 0x113A, 0x5584, 0x0AB3, 0x5586, 0x20DF, 0x5587, + 0x113C, 0x5588, 0x383A, 0x5589, 0x07B4, 0x558A, 0x1132, 0x558B, 0x0BBB, + 0x558E, 0x383B, 0x5598, 0x1136, 0x5599, 0x112F, 0x559A, 0x05E9, 0x559C, + 0x062A, 0x559D, 0x05C3, 0x559E, 0x1137, 0x559F, 0x1133, 0x55A7, 0x074C, + 0x55A8, 0x113D, 0x55A9, 0x113B, 0x55AA, 0x0AD5, 0x55AB, 0x0664, 0x55AC, + 0x06A4, 0x55AE, 0x1138, 0x55B0, 0x06EC, 0x55B6, 0x04E6, 0x55C4, 0x1141, + 0x55C5, 0x113F, 0x55C7, 0x1178, 0x55D4, 0x1144, 0x55DA, 0x113E, 0x55DC, + 0x1142, 0x55DF, 0x1140, 0x55E3, 0x089A, 0x55E4, 0x1143, 0x55F7, 0x1146, + 0x55F9, 0x114B, 0x55FD, 0x1149, 0x55FE, 0x1148, 0x5606, 0x0B70, 0x5608, + 0x383C, 0x5609, 0x0545, 0x560E, 0x383D, 0x560F, 0x383E, 0x5614, 0x1145, + 0x5616, 0x1147, 0x5617, 0x0990, 0x5618, 0x04D5, 0x561B, 0x114A, 0x5620, + 0x3C1D, 0x5629, 0x055E, 0x562F, 0x1155, 0x5631, 0x09E4, 0x5632, 0x1151, + 0x5634, 0x114F, 0x5636, 0x1150, 0x5637, 0x383F, 0x5638, 0x1152, 0x563F, + 0x3840, 0x5642, 0x04DF, 0x5649, 0x3841, 0x564B, 0x3842, 0x564C, 0x0ABB, + 0x564E, 0x114C, 0x564F, 0x3843, 0x5650, 0x114D, 0x5653, 0x1F1B, 0x565B, + 0x05D8, 0x5664, 0x1154, 0x5666, 0x3844, 0x5668, 0x062B, 0x5669, 0x3845, + 0x566A, 0x1157, 0x566B, 0x1153, 0x566C, 0x1156, 0x566F, 0x3846, 0x5671, + 0x3847, 0x5672, 0x3848, 0x5674, 0x0DFE, 0x5676, 0x3C33, 0x5678, 0x0CAD, + 0x567A, 0x0D4C, 0x5680, 0x1159, 0x5686, 0x1158, 0x5687, 0x05A3, 0x568A, + 0x115A, 0x568F, 0x115D, 0x5694, 0x115C, 0x5695, 0x3849, 0x5699, 0x1DE6, + 0x569A, 0x384A, 0x56A0, 0x115B, 0x56A2, 0x0CEF, 0x56A5, 0x115E, 0x56AC, + 0x384B, 0x56AD, 0x384C, 0x56AE, 0x115F, 0x56B1, 0x384D, 0x56B4, 0x1161, + 0x56B6, 0x1160, 0x56BC, 0x1163, 0x56C0, 0x1166, 0x56C1, 0x1164, 0x56C2, + 0x1162, 0x56C3, 0x1165, 0x56C8, 0x1167, 0x56C9, 0x384E, 0x56CA, 0x1E5A, + 0x56CE, 0x1168, 0x56D1, 0x1169, 0x56D3, 0x116A, 0x56D7, 0x116B, 0x56D8, + 0x107C, 0x56DA, 0x0928, 0x56DB, 0x089B, 0x56DD, 0x384F, 0x56DE, 0x0573, + 0x56E0, 0x04BC, 0x56E3, 0x0B82, 0x56E4, 0x3850, 0x56EE, 0x116C, 0x56F0, + 0x0814, 0x56F2, 0x0493, 0x56F3, 0x0A24, 0x56F9, 0x116D, 0x56FA, 0x077B, + 0x56FD, 0x0803, 0x56FF, 0x116F, 0x5700, 0x116E, 0x5703, 0x0E30, 0x5704, + 0x1170, 0x5708, 0x1172, 0x5709, 0x1171, 0x570A, 0x3851, 0x570B, 0x1173, + 0x570D, 0x1174, 0x570F, 0x074D, 0x5712, 0x0502, 0x5713, 0x1175, 0x5715, + 0x3852, 0x5716, 0x1177, 0x5718, 0x1176, 0x571C, 0x1179, 0x571F, 0x0C54, + 0x5721, 0x3680, 0x5723, 0x3853, 0x5726, 0x117A, 0x5727, 0x0479, 0x5728, + 0x084F, 0x572D, 0x0713, 0x572F, 0x3854, 0x5730, 0x0B8D, 0x5733, 0x3855, + 0x5734, 0x3856, 0x5737, 0x117B, 0x5738, 0x117C, 0x573B, 0x117E, 0x5740, + 0x117F, 0x5742, 0x0854, 0x5747, 0x06C9, 0x574A, 0x0E65, 0x574C, 0x3857, + 0x574E, 0x117D, 0x574F, 0x1180, 0x5750, 0x0831, 0x5751, 0x07B5, 0x5759, + 0x20E0, 0x5761, 0x1184, 0x5764, 0x0815, 0x5765, 0x20E1, 0x5766, 0x0B71, + 0x5769, 0x1181, 0x576A, 0x0BF6, 0x5770, 0x3858, 0x577F, 0x1185, 0x5782, + 0x0A28, 0x5788, 0x1183, 0x5789, 0x1186, 0x578B, 0x0715, 0x578C, 0x3859, + 0x5793, 0x1187, 0x579C, 0x385A, 0x57A0, 0x1188, 0x57A2, 0x07B6, 0x57A3, + 0x059E, 0x57A4, 0x118A, 0x57AA, 0x118B, 0x57AC, 0x20E2, 0x57B0, 0x118C, + 0x57B3, 0x1189, 0x57B8, 0x385B, 0x57C0, 0x1182, 0x57C3, 0x118D, 0x57C6, + 0x118E, 0x57C7, 0x20E4, 0x57C8, 0x20E3, 0x57CB, 0x0E92, 0x57CE, 0x09D3, + 0x57D2, 0x1190, 0x57D3, 0x1191, 0x57D4, 0x118F, 0x57D6, 0x1193, 0x57DC, + 0x0CEE, 0x57DF, 0x04AC, 0x57E0, 0x0DC8, 0x57E3, 0x1194, 0x57E6, 0x385C, + 0x57ED, 0x385D, 0x57F4, 0x09E5, 0x57F5, 0x385E, 0x57F6, 0x385F, 0x57F7, + 0x08E5, 0x57F9, 0x0D13, 0x57FA, 0x062C, 0x57FC, 0x085B, 0x57FF, 0x3860, + 0x5800, 0x0E87, 0x5802, 0x0C8A, 0x5805, 0x074E, 0x5806, 0x0B2F, 0x5809, + 0x3861, 0x580A, 0x1192, 0x580B, 0x1195, 0x5815, 0x0B24, 0x5819, 0x1196, + 0x581D, 0x1197, 0x5820, 0x3862, 0x5821, 0x1199, 0x5824, 0x0C05, 0x582A, + 0x05EA, 0x582F, 0x1D32, 0x5830, 0x0503, 0x5831, 0x0E43, 0x5832, 0x3863, + 0x5834, 0x09D4, 0x5835, 0x0C42, 0x583A, 0x0856, 0x583D, 0x119F, 0x5840, + 0x0E0D, 0x5841, 0x0FA5, 0x584A, 0x0574, 0x584B, 0x119B, 0x5851, 0x0ABC, + 0x5852, 0x119E, 0x5854, 0x0C5D, 0x5857, 0x0C43, 0x5858, 0x0C5E, 0x5859, + 0x0D4D, 0x585A, 0x0BE9, 0x585E, 0x0839, 0x5861, 0x1E47, 0x5862, 0x119A, + 0x5869, 0x0518, 0x586B, 0x0C30, 0x5870, 0x119C, 0x5872, 0x1198, 0x5875, + 0x0A16, 0x5879, 0x11A0, 0x587C, 0x3864, 0x587E, 0x0958, 0x5880, 0x3865, + 0x5883, 0x06A5, 0x5885, 0x11A1, 0x5893, 0x0E38, 0x5897, 0x0AFF, 0x589C, + 0x0BE2, 0x589E, 0x20E7, 0x589F, 0x11A3, 0x58A8, 0x0E7D, 0x58A9, 0x3866, + 0x58AB, 0x11A4, 0x58AE, 0x11A9, 0x58B2, 0x20E8, 0x58B3, 0x0DFF, 0x58B8, + 0x11A8, 0x58B9, 0x11A2, 0x58BA, 0x11A5, 0x58BB, 0x11A7, 0x58BE, 0x0816, + 0x58C1, 0x0E19, 0x58C5, 0x11AA, 0x58C7, 0x0B83, 0x58CA, 0x0575, 0x58CC, + 0x09D5, 0x58CE, 0x3867, 0x58D0, 0x3868, 0x58D1, 0x11AC, 0x58D3, 0x11AB, + 0x58D4, 0x3869, 0x58D5, 0x07FA, 0x58D7, 0x11AD, 0x58D8, 0x11AF, 0x58D9, + 0x11AE, 0x58DA, 0x386A, 0x58DC, 0x11B1, 0x58DE, 0x11A6, 0x58DF, 0x11B3, + 0x58E4, 0x11B2, 0x58E5, 0x11B0, 0x58E9, 0x386B, 0x58EB, 0x089C, 0x58EC, + 0x0A17, 0x58EE, 0x0AD6, 0x58EF, 0x11B4, 0x58F0, 0x0A60, 0x58F1, 0x04B1, + 0x58F2, 0x0D1A, 0x58F7, 0x0BF7, 0x58F9, 0x11B6, 0x58FA, 0x11B5, 0x58FB, + 0x11B7, 0x58FC, 0x11B8, 0x58FD, 0x11B9, 0x5902, 0x11BA, 0x5909, 0x0E21, + 0x590A, 0x11BB, 0x590B, 0x20E9, 0x590C, 0x386C, 0x590F, 0x0546, 0x5910, + 0x11BC, 0x5915, 0x0F26, 0x5916, 0x058E, 0x5918, 0x10DE, 0x5919, 0x0952, + 0x591A, 0x0B1F, 0x591B, 0x11BD, 0x591C, 0x0EF7, 0x5922, 0x0EC0, 0x5924, + 0x386D, 0x5925, 0x11BF, 0x5927, 0x0B47, 0x5929, 0x0C31, 0x592A, 0x0B20, + 0x592B, 0x0DC9, 0x592C, 0x11C0, 0x592D, 0x11C1, 0x592E, 0x051D, 0x592F, + 0x386E, 0x5931, 0x08E6, 0x5932, 0x11C2, 0x5937, 0x0494, 0x5938, 0x11C3, + 0x5939, 0x3725, 0x593E, 0x11C4, 0x5944, 0x0504, 0x5947, 0x062D, 0x5948, + 0x0CB8, 0x5949, 0x0E44, 0x594E, 0x11C8, 0x594F, 0x0AD7, 0x5950, 0x11C7, + 0x5951, 0x0716, 0x5953, 0x20EA, 0x5954, 0x0E89, 0x5955, 0x11C6, 0x5957, + 0x0C5F, 0x5958, 0x11CA, 0x595A, 0x11C9, 0x595B, 0x20EB, 0x595D, 0x20EC, + 0x5960, 0x11CC, 0x5961, 0x386F, 0x5962, 0x11CB, 0x5963, 0x20ED, 0x5965, + 0x051E, 0x5967, 0x11CD, 0x5968, 0x0991, 0x5969, 0x11CF, 0x596A, 0x0B63, + 0x596C, 0x11CE, 0x596D, 0x3870, 0x596E, 0x0E03, 0x5973, 0x0981, 0x5974, + 0x0C55, 0x5978, 0x11D0, 0x597D, 0x07B7, 0x5981, 0x11D1, 0x5982, 0x0CD7, + 0x5983, 0x0D72, 0x5984, 0x0EDD, 0x598A, 0x0CDB, 0x598D, 0x11DA, 0x5993, + 0x0652, 0x5996, 0x0F2F, 0x5999, 0x0EBB, 0x599B, 0x1239, 0x599D, 0x11D2, + 0x59A3, 0x11D5, 0x59A4, 0x20EE, 0x59A5, 0x0B25, 0x59A8, 0x0E66, 0x59AC, + 0x0C44, 0x59B2, 0x11D6, 0x59B9, 0x0E93, 0x59BA, 0x20EF, 0x59BB, 0x083A, + 0x59BE, 0x0992, 0x59C6, 0x11D7, 0x59C9, 0x089E, 0x59CA, 0x3871, 0x59CB, + 0x089D, 0x59D0, 0x047D, 0x59D1, 0x077C, 0x59D2, 0x3872, 0x59D3, 0x0A4F, + 0x59D4, 0x0495, 0x59D9, 0x11DB, 0x59DA, 0x11DC, 0x59DC, 0x11D9, 0x59DD, + 0x3873, 0x59E3, 0x3874, 0x59E4, 0x3875, 0x59E5, 0x04DA, 0x59E6, 0x05EB, + 0x59E8, 0x11D8, 0x59EA, 0x0ED1, 0x59EB, 0x0DA3, 0x59EC, 0x36AD, 0x59F6, + 0x046C, 0x59FB, 0x04BD, 0x59FF, 0x089F, 0x5A01, 0x0496, 0x5A03, 0x0467, + 0x5A04, 0x3876, 0x5A09, 0x11E1, 0x5A0C, 0x3877, 0x5A11, 0x11DF, 0x5A18, + 0x0EC8, 0x5A1A, 0x11E2, 0x5A1B, 0x35C1, 0x5A1C, 0x11E0, 0x5A1F, 0x11DE, + 0x5A20, 0x09F7, 0x5A23, 0x3878, 0x5A25, 0x11DD, 0x5A29, 0x0E2A, 0x5A2F, + 0x0798, 0x5A35, 0x11E6, 0x5A36, 0x11E7, 0x5A3C, 0x0993, 0x5A40, 0x11E3, + 0x5A41, 0x0FD2, 0x5A46, 0x0D02, 0x5A47, 0x3879, 0x5A49, 0x11E5, 0x5A55, + 0x387A, 0x5A5A, 0x0817, 0x5A62, 0x11E8, 0x5A63, 0x387B, 0x5A66, 0x0DCA, + 0x5A6A, 0x11E9, 0x5A6C, 0x11E4, 0x5A6D, 0x387C, 0x5A7E, 0x387D, 0x5A7F, + 0x0EC7, 0x5A92, 0x0D14, 0x5A9A, 0x11EA, 0x5A9B, 0x0DA4, 0x5A9E, 0x387E, + 0x5AA7, 0x387F, 0x5AAC, 0x3880, 0x5AB3, 0x3881, 0x5ABC, 0x11EB, 0x5ABD, + 0x11EF, 0x5ABE, 0x11EC, 0x5AC1, 0x0547, 0x5AC2, 0x11EE, 0x5AC9, 0x08E7, + 0x5ACB, 0x11ED, 0x5ACC, 0x074F, 0x5AD0, 0x11FB, 0x5AD6, 0x11F4, 0x5AD7, + 0x11F1, 0x5AE0, 0x3882, 0x5AE1, 0x0BA2, 0x5AE3, 0x11F0, 0x5AE6, 0x11F2, + 0x5AE9, 0x11F3, 0x5AFA, 0x11F5, 0x5AFB, 0x11F6, 0x5B00, 0x3883, 0x5B09, + 0x062E, 0x5B0B, 0x11F8, 0x5B0C, 0x11F7, 0x5B16, 0x11F9, 0x5B19, 0x3884, + 0x5B22, 0x09D6, 0x5B25, 0x3885, 0x5B2A, 0x11FC, 0x5B2C, 0x0BF8, 0x5B2D, + 0x3886, 0x5B30, 0x04E7, 0x5B32, 0x11FA, 0x5B36, 0x11FD, 0x5B3E, 0x11FE, + 0x5B40, 0x1201, 0x5B41, 0x3887, 0x5B43, 0x11FF, 0x5B45, 0x1200, 0x5B50, + 0x08A0, 0x5B51, 0x1202, 0x5B54, 0x07B8, 0x5B55, 0x1203, 0x5B56, 0x20F0, + 0x5B57, 0x08C8, 0x5B58, 0x0B18, 0x5B5A, 0x1204, 0x5B5B, 0x1205, 0x5B5C, + 0x08A8, 0x5B5D, 0x07B9, 0x5B5F, 0x0EDE, 0x5B63, 0x0642, 0x5B64, 0x077D, + 0x5B65, 0x1206, 0x5B66, 0x05B6, 0x5B69, 0x1207, 0x5B6B, 0x0B19, 0x5B70, + 0x1208, 0x5B71, 0x1230, 0x5B73, 0x1209, 0x5B75, 0x120A, 0x5B78, 0x120B, + 0x5B7A, 0x120D, 0x5B7C, 0x3888, 0x5B7E, 0x3889, 0x5B7F, 0x388A, 0x5B80, + 0x120E, 0x5B82, 0x3610, 0x5B83, 0x120F, 0x5B85, 0x0B50, 0x5B87, 0x04C9, + 0x5B88, 0x0915, 0x5B89, 0x0486, 0x5B8A, 0x388B, 0x5B8B, 0x0AD9, 0x5B8C, + 0x05EC, 0x5B8D, 0x08E1, 0x5B8F, 0x07BA, 0x5B95, 0x0C60, 0x5B97, 0x092B, + 0x5B98, 0x05ED, 0x5B99, 0x0BA6, 0x5B9A, 0x0C06, 0x5B9B, 0x047C, 0x5B9C, + 0x0653, 0x5B9D, 0x0E45, 0x5B9F, 0x08EE, 0x5BA2, 0x066C, 0x5BA3, 0x0A8F, + 0x5BA4, 0x08E8, 0x5BA5, 0x0F12, 0x5BA6, 0x1210, 0x5BAE, 0x0676, 0x5BB0, + 0x083B, 0x5BB3, 0x0590, 0x5BB4, 0x0505, 0x5BB5, 0x0994, 0x5BB6, 0x0548, + 0x5BB8, 0x1211, 0x5BB9, 0x0F30, 0x5BBF, 0x0953, 0x5BC0, 0x20F1, 0x5BC2, + 0x0910, 0x5BC3, 0x1212, 0x5BC4, 0x062F, 0x5BC5, 0x0CAA, 0x5BC6, 0x0EB5, + 0x5BC7, 0x1213, 0x5BC9, 0x1214, 0x5BCC, 0x0DCB, 0x5BD0, 0x1216, 0x5BD2, + 0x05E4, 0x5BD3, 0x06EF, 0x5BD4, 0x1215, 0x5BD8, 0x20F3, 0x5BDB, 0x05EE, + 0x5BDD, 0x09F8, 0x5BDE, 0x121A, 0x5BDF, 0x086F, 0x5BE1, 0x0549, 0x5BE2, + 0x1219, 0x5BE4, 0x1217, 0x5BE5, 0x121B, 0x5BE6, 0x1218, 0x5BE7, 0x0CE1, + 0x5BE8, 0x148E, 0x5BE9, 0x09F9, 0x5BEB, 0x121C, 0x5BEC, 0x20F4, 0x5BEE, + 0x0F88, 0x5BF0, 0x121D, 0x5BF3, 0x121F, 0x5BF5, 0x0BBC, 0x5BF6, 0x121E, + 0x5BF8, 0x0A47, 0x5BFA, 0x08C9, 0x5BFE, 0x0B30, 0x5BFF, 0x0923, 0x5C01, + 0x0DE7, 0x5C02, 0x0A90, 0x5C04, 0x08F9, 0x5C05, 0x1220, 0x5C06, 0x0995, + 0x5C07, 0x1221, 0x5C08, 0x1222, 0x5C09, 0x0497, 0x5C0A, 0x0B1A, 0x5C0B, + 0x0A18, 0x5C0D, 0x1223, 0x5C0E, 0x0C8B, 0x5C0F, 0x0996, 0x5C11, 0x0997, + 0x5C13, 0x1224, 0x5C14, 0x372A, 0x5C16, 0x0A91, 0x5C19, 0x360B, 0x5C1A, + 0x0998, 0x5C1E, 0x20F5, 0x5C20, 0x1225, 0x5C22, 0x1226, 0x5C23, 0x388C, + 0x5C24, 0x0EEC, 0x5C28, 0x1227, 0x5C2B, 0x388D, 0x5C2D, 0x06BE, 0x5C30, + 0x388E, 0x5C31, 0x092C, 0x5C38, 0x1228, 0x5C39, 0x1229, 0x5C3A, 0x0908, + 0x5C3B, 0x09F2, 0x5C3C, 0x0CCC, 0x5C3D, 0x0A1A, 0x5C3E, 0x0D8C, 0x5C3F, + 0x0CD8, 0x5C40, 0x06C1, 0x5C41, 0x122A, 0x5C45, 0x0689, 0x5C46, 0x122B, + 0x5C48, 0x06F6, 0x5C4A, 0x0CA7, 0x5C4B, 0x0530, 0x5C4D, 0x08A1, 0x5C4E, + 0x122C, 0x5C4F, 0x122F, 0x5C50, 0x122E, 0x5C51, 0x06F5, 0x5C53, 0x122D, + 0x5C55, 0x0C32, 0x5C5B, 0x1E92, 0x5C5E, 0x0B10, 0x5C60, 0x0C45, 0x5C61, + 0x08F4, 0x5C62, 0x1E0D, 0x5C63, 0x388F, 0x5C64, 0x0ADA, 0x5C65, 0x0F64, + 0x5C69, 0x3890, 0x5C6C, 0x1231, 0x5C6E, 0x1232, 0x5C6F, 0x0CAE, 0x5C71, + 0x0881, 0x5C76, 0x1234, 0x5C79, 0x1235, 0x5C7C, 0x3891, 0x5C8C, 0x1236, + 0x5C90, 0x0630, 0x5C91, 0x1237, 0x5C94, 0x1238, 0x5CA1, 0x052C, 0x5CA6, + 0x20F6, 0x5CA8, 0x0ABD, 0x5CA9, 0x0620, 0x5CAB, 0x123A, 0x5CAC, 0x0EB4, + 0x5CB1, 0x0B32, 0x5CB3, 0x05B7, 0x5CB6, 0x123C, 0x5CB7, 0x123E, 0x5CB8, + 0x061B, 0x5CBA, 0x20F7, 0x5CBB, 0x123B, 0x5CBC, 0x123D, 0x5CBE, 0x1240, + 0x5CC5, 0x123F, 0x5CC7, 0x1241, 0x5CCB, 0x3892, 0x5CD2, 0x3893, 0x5CD9, + 0x1242, 0x5CE0, 0x0C95, 0x5CE1, 0x06A6, 0x5CE6, 0x372C, 0x5CE8, 0x0565, + 0x5CE9, 0x1243, 0x5CEA, 0x1248, 0x5CED, 0x1246, 0x5CEF, 0x0E47, 0x5CF0, + 0x0E46, 0x5CF4, 0x3894, 0x5CF5, 0x20F8, 0x5CF6, 0x0C61, 0x5CFA, 0x1245, + 0x5CFB, 0x095E, 0x5CFD, 0x1244, 0x5D07, 0x0A38, 0x5D0B, 0x1249, 0x5D0E, + 0x085A, 0x5D11, 0x124F, 0x5D14, 0x1250, 0x5D15, 0x124A, 0x5D16, 0x0591, + 0x5D17, 0x124B, 0x5D18, 0x1254, 0x5D19, 0x1253, 0x5D1A, 0x1252, 0x5D1B, + 0x124E, 0x5D1F, 0x124D, 0x5D22, 0x1251, 0x5D24, 0x3895, 0x5D26, 0x3896, + 0x5D27, 0x20F9, 0x5D29, 0x0E48, 0x5D42, 0x20FC, 0x5D43, 0x3897, 0x5D46, + 0x3898, 0x5D4A, 0x3899, 0x5D4B, 0x1258, 0x5D4C, 0x1255, 0x5D4E, 0x1257, + 0x5D50, 0x0F5C, 0x5D52, 0x1256, 0x5D53, 0x20FA, 0x5D5C, 0x124C, 0x5D69, + 0x0A39, 0x5D6C, 0x1259, 0x5D6D, 0x20FD, 0x5D6F, 0x0827, 0x5D73, 0x125A, + 0x5D76, 0x125B, 0x5D82, 0x125E, 0x5D84, 0x125D, 0x5D87, 0x125C, 0x5D8B, + 0x0C62, 0x5D8C, 0x1247, 0x5D90, 0x1264, 0x5D92, 0x389A, 0x5D94, 0x389B, + 0x5D99, 0x389C, 0x5D9D, 0x1260, 0x5DA0, 0x389D, 0x5DA2, 0x125F, 0x5DAC, + 0x1261, 0x5DAE, 0x1262, 0x5DB2, 0x3BA5, 0x5DB7, 0x1265, 0x5DB8, 0x20FE, + 0x5DB9, 0x20FF, 0x5DBA, 0x0FAE, 0x5DBC, 0x1266, 0x5DBD, 0x1263, 0x5DC9, + 0x1267, 0x5DCC, 0x061C, 0x5DCD, 0x1268, 0x5DD0, 0x2100, 0x5DD2, 0x126A, + 0x5DD3, 0x1269, 0x5DD6, 0x126B, 0x5DD8, 0x389E, 0x5DDB, 0x126C, 0x5DDD, + 0x0A92, 0x5DDE, 0x092D, 0x5DE0, 0x389F, 0x5DE1, 0x096E, 0x5DE2, 0x3432, + 0x5DE3, 0x0AE5, 0x5DE5, 0x07BB, 0x5DE6, 0x0828, 0x5DE7, 0x07BC, 0x5DE8, + 0x068A, 0x5DEB, 0x126D, 0x5DEE, 0x0829, 0x5DF1, 0x077E, 0x5DF2, 0x126E, + 0x5DF3, 0x0EB2, 0x5DF4, 0x0CF9, 0x5DF5, 0x126F, 0x5DF7, 0x07BD, 0x5DF8, + 0x38A0, 0x5DFB, 0x05E8, 0x5DFD, 0x0B65, 0x5DFE, 0x06CA, 0x5DFF, 0x35E2, + 0x5E00, 0x38A1, 0x5E02, 0x08A2, 0x5E03, 0x0DCD, 0x5E06, 0x0D55, 0x5E0B, + 0x1270, 0x5E0C, 0x0631, 0x5E11, 0x1273, 0x5E12, 0x38A2, 0x5E14, 0x38A3, + 0x5E15, 0x38A4, 0x5E16, 0x0BBD, 0x5E18, 0x38A5, 0x5E19, 0x1272, 0x5E1A, + 0x1271, 0x5E1B, 0x1274, 0x5E1D, 0x0C07, 0x5E25, 0x0A29, 0x5E2B, 0x08A3, + 0x5E2D, 0x0A6E, 0x5E2E, 0x38A6, 0x5E2F, 0x0B33, 0x5E30, 0x063C, 0x5E33, + 0x0BBE, 0x5E36, 0x1275, 0x5E37, 0x1276, 0x5E38, 0x09D7, 0x5E3D, 0x0E67, + 0x5E40, 0x1279, 0x5E43, 0x1278, 0x5E44, 0x1277, 0x5E45, 0x0DEF, 0x5E47, + 0x1280, 0x5E4C, 0x0E88, 0x5E4E, 0x127A, 0x5E54, 0x127C, 0x5E55, 0x0E99, + 0x5E57, 0x127B, 0x5E58, 0x38A7, 0x5E5F, 0x127D, 0x5E61, 0x0D3C, 0x5E62, + 0x127E, 0x5E63, 0x0E0E, 0x5E64, 0x127F, 0x5E6B, 0x38A8, 0x5E6C, 0x38A9, + 0x5E72, 0x05EF, 0x5E73, 0x0E0F, 0x5E74, 0x0CE5, 0x5E75, 0x1281, 0x5E76, + 0x1282, 0x5E78, 0x07BE, 0x5E79, 0x05F0, 0x5E7A, 0x1283, 0x5E7B, 0x076C, + 0x5E7C, 0x0F2E, 0x5E7D, 0x0F13, 0x5E7E, 0x0632, 0x5E7F, 0x1285, 0x5E81, + 0x0BBF, 0x5E83, 0x07BF, 0x5E84, 0x0999, 0x5E87, 0x0D73, 0x5E8A, 0x099A, + 0x5E8F, 0x0982, 0x5E95, 0x0C08, 0x5E96, 0x0E49, 0x5E97, 0x0C33, 0x5E99, + 0x36B0, 0x5E9A, 0x07C0, 0x5E9C, 0x0DCE, 0x5EA0, 0x1286, 0x5EA6, 0x0C53, + 0x5EA7, 0x0832, 0x5EA8, 0x38AA, 0x5EAA, 0x38AB, 0x5EAB, 0x077F, 0x5EAD, + 0x0C09, 0x5EB5, 0x0487, 0x5EB6, 0x0978, 0x5EB7, 0x07C1, 0x5EB8, 0x0F31, + 0x5EBE, 0x38AC, 0x5EBF, 0x38AD, 0x5EC1, 0x1287, 0x5EC2, 0x1288, 0x5EC3, + 0x0D07, 0x5EC8, 0x1289, 0x5EC9, 0x0FBF, 0x5ECA, 0x0FD3, 0x5ECB, 0x38AE, + 0x5ECF, 0x128B, 0x5ED0, 0x128A, 0x5ED2, 0x38AF, 0x5ED3, 0x05A5, 0x5ED6, + 0x128C, 0x5EDA, 0x128F, 0x5EDB, 0x1290, 0x5EDD, 0x128E, 0x5EDF, 0x0DB2, + 0x5EE0, 0x099B, 0x5EE1, 0x1292, 0x5EE2, 0x1291, 0x5EE3, 0x128D, 0x5EE8, + 0x1293, 0x5EE9, 0x1294, 0x5EEC, 0x1295, 0x5EF0, 0x1298, 0x5EF1, 0x1296, + 0x5EF3, 0x1297, 0x5EF4, 0x1299, 0x5EF6, 0x0506, 0x5EF7, 0x0C0A, 0x5EF8, + 0x129A, 0x5EFA, 0x0750, 0x5EFB, 0x0576, 0x5EFC, 0x0CEC, 0x5EFE, 0x129B, + 0x5EFF, 0x0CD3, 0x5F01, 0x0E2B, 0x5F03, 0x129C, 0x5F04, 0x0FD4, 0x5F07, + 0x38B0, 0x5F09, 0x129D, 0x5F0A, 0x0E10, 0x5F0B, 0x12A0, 0x5F0C, 0x0FFA, + 0x5F0D, 0x100A, 0x5F0E, 0x38B1, 0x5F0F, 0x08DC, 0x5F10, 0x0CCD, 0x5F11, + 0x12A1, 0x5F13, 0x0677, 0x5F14, 0x0BC0, 0x5F15, 0x04BE, 0x5F16, 0x12A2, + 0x5F17, 0x0DF6, 0x5F18, 0x07C2, 0x5F1B, 0x0B8E, 0x5F1C, 0x38B2, 0x5F1D, + 0x38B3, 0x5F1F, 0x0C0B, 0x5F21, 0x2101, 0x5F22, 0x38B4, 0x5F25, 0x0EFB, + 0x5F26, 0x076D, 0x5F27, 0x0780, 0x5F28, 0x38B5, 0x5F29, 0x12A3, 0x5F2D, + 0x12A4, 0x5F2F, 0x12AA, 0x5F31, 0x0911, 0x5F34, 0x2102, 0x5F35, 0x0BC1, + 0x5F36, 0x38B6, 0x5F37, 0x06A7, 0x5F38, 0x12A5, 0x5F3A, 0x3598, 0x5F3B, + 0x38B7, 0x5F3C, 0x0D9D, 0x5F3E, 0x0B84, 0x5F40, 0x38B8, 0x5F41, 0x12A6, + 0x5F45, 0x20B2, 0x5F48, 0x12A7, 0x5F4A, 0x06A8, 0x5F4C, 0x12A8, 0x5F4E, + 0x12A9, 0x5F50, 0x38B9, 0x5F51, 0x12AB, 0x5F53, 0x0C70, 0x5F56, 0x12AC, + 0x5F57, 0x12AD, 0x5F58, 0x38BA, 0x5F59, 0x12AE, 0x5F5C, 0x129F, 0x5F5D, + 0x129E, 0x5F61, 0x12AF, 0x5F62, 0x0717, 0x5F64, 0x38BB, 0x5F65, 0x36AC, + 0x5F66, 0x0D99, 0x5F67, 0x2103, 0x5F69, 0x083C, 0x5F6A, 0x0DA9, 0x5F6B, + 0x0BC2, 0x5F6C, 0x0DBD, 0x5F6D, 0x12B0, 0x5F70, 0x099C, 0x5F71, 0x04E8, + 0x5F73, 0x12B1, 0x5F77, 0x12B2, 0x5F79, 0x0EFE, 0x5F7C, 0x0D74, 0x5F7F, + 0x12B5, 0x5F80, 0x051F, 0x5F81, 0x0A50, 0x5F82, 0x12B4, 0x5F83, 0x12B3, + 0x5F84, 0x0718, 0x5F85, 0x0B34, 0x5F87, 0x12B9, 0x5F88, 0x12B7, 0x5F89, + 0x38BC, 0x5F8A, 0x12B6, 0x5F8B, 0x0F6F, 0x5F8C, 0x0799, 0x5F90, 0x0983, + 0x5F91, 0x12B8, 0x5F92, 0x0C46, 0x5F93, 0x0948, 0x5F97, 0x0C98, 0x5F98, + 0x12BC, 0x5F99, 0x12BB, 0x5F9C, 0x38BD, 0x5F9E, 0x12BA, 0x5FA0, 0x12BD, + 0x5FA1, 0x079A, 0x5FA4, 0x38BF, 0x5FA7, 0x38BE, 0x5FA8, 0x12BE, 0x5FA9, + 0x0DEE, 0x5FAA, 0x0965, 0x5FAD, 0x12BF, 0x5FAE, 0x0D8D, 0x5FAF, 0x38C0, + 0x5FB3, 0x0C99, 0x5FB4, 0x0BC3, 0x5FB5, 0x3438, 0x5FB7, 0x2104, 0x5FB8, + 0x38C1, 0x5FB9, 0x0C2A, 0x5FBC, 0x12C0, 0x5FBD, 0x0645, 0x5FC3, 0x09FA, + 0x5FC4, 0x38C2, 0x5FC5, 0x0D9E, 0x5FC9, 0x38C3, 0x5FCC, 0x0633, 0x5FCD, + 0x0CDC, 0x5FD6, 0x12C1, 0x5FD7, 0x08A4, 0x5FD8, 0x0E68, 0x5FD9, 0x0E69, + 0x5FDC, 0x0520, 0x5FDD, 0x12C6, 0x5FDE, 0x2105, 0x5FE0, 0x0BA7, 0x5FE1, + 0x38C4, 0x5FE4, 0x12C3, 0x5FE9, 0x38C5, 0x5FEB, 0x0577, 0x5FED, 0x38C6, + 0x5FF0, 0x12F6, 0x5FF1, 0x12C5, 0x5FF5, 0x0CE6, 0x5FF8, 0x12C4, 0x5FFB, + 0x12C2, 0x5FFC, 0x38C7, 0x5FFD, 0x080C, 0x5FFF, 0x12C8, 0x600E, 0x12CE, + 0x600F, 0x12D4, 0x6010, 0x12CC, 0x6012, 0x0C56, 0x6015, 0x12D1, 0x6016, + 0x0DCF, 0x6017, 0x38C8, 0x6019, 0x12CB, 0x601A, 0x38C9, 0x601B, 0x12D0, + 0x601C, 0x0FAF, 0x601D, 0x08A5, 0x6020, 0x0B35, 0x6021, 0x12C9, 0x6025, + 0x0678, 0x6026, 0x12D3, 0x6027, 0x0A51, 0x6028, 0x0507, 0x6029, 0x12CD, + 0x602A, 0x0578, 0x602B, 0x12D2, 0x602F, 0x06A9, 0x6031, 0x12CF, 0x6033, + 0x38CA, 0x603A, 0x12D5, 0x6041, 0x12D7, 0x6042, 0x12E1, 0x6043, 0x12DF, + 0x6046, 0x12DC, 0x604A, 0x12DB, 0x604B, 0x0FC0, 0x604D, 0x12DD, 0x6050, + 0x06AA, 0x6052, 0x07C3, 0x6055, 0x0984, 0x6059, 0x12E4, 0x605A, 0x12D6, + 0x605D, 0x2106, 0x605F, 0x12DA, 0x6060, 0x12CA, 0x6061, 0x38CB, 0x6062, + 0x057A, 0x6063, 0x12DE, 0x6064, 0x12E0, 0x6065, 0x0B8F, 0x6068, 0x0818, + 0x6069, 0x0538, 0x606A, 0x12D8, 0x606B, 0x12E3, 0x606C, 0x12E2, 0x606D, + 0x06AB, 0x606F, 0x0B09, 0x6070, 0x05C4, 0x6075, 0x0719, 0x6077, 0x12D9, + 0x607F, 0x38CC, 0x6081, 0x12E5, 0x6083, 0x12E8, 0x6084, 0x12EA, 0x6085, + 0x2107, 0x6089, 0x08E9, 0x608A, 0x2108, 0x608B, 0x12F0, 0x608C, 0x0C0C, + 0x608D, 0x12E6, 0x6092, 0x12EE, 0x6094, 0x0579, 0x6096, 0x12EC, 0x6097, + 0x12ED, 0x609A, 0x12E9, 0x609B, 0x12EB, 0x609E, 0x38CD, 0x609F, 0x079B, + 0x60A0, 0x0F14, 0x60A3, 0x05F1, 0x60A4, 0x38CE, 0x60A6, 0x04FB, 0x60A7, + 0x12EF, 0x60A9, 0x0CF0, 0x60AA, 0x0471, 0x60B0, 0x38CF, 0x60B2, 0x0D75, + 0x60B3, 0x12C7, 0x60B4, 0x12F5, 0x60B5, 0x12F9, 0x60B6, 0x0EF1, 0x60B8, + 0x12F2, 0x60BC, 0x0C63, 0x60BD, 0x12F7, 0x60C5, 0x09D8, 0x60C6, 0x12F8, + 0x60C7, 0x0CAF, 0x60CB, 0x38D0, 0x60D1, 0x0FED, 0x60D3, 0x12F4, 0x60D5, + 0x210A, 0x60D8, 0x12FA, 0x60DA, 0x080D, 0x60DB, 0x38D1, 0x60DC, 0x0A6F, + 0x60DE, 0x2109, 0x60DF, 0x0498, 0x60E0, 0x12F3, 0x60E1, 0x12F1, 0x60E3, + 0x0ADC, 0x60E7, 0x12E7, 0x60E8, 0x0882, 0x60F0, 0x0B26, 0x60F1, 0x1306, + 0x60F2, 0x210C, 0x60F3, 0x0ADD, 0x60F4, 0x1301, 0x60F6, 0x12FE, 0x60F7, + 0x12FF, 0x60F8, 0x38D2, 0x60F9, 0x0912, 0x60FA, 0x1302, 0x60FB, 0x1305, + 0x6100, 0x1300, 0x6101, 0x092F, 0x6103, 0x1303, 0x6106, 0x12FD, 0x6108, + 0x0F08, 0x6109, 0x0F07, 0x610D, 0x1307, 0x610E, 0x1308, 0x610F, 0x0499, + 0x6111, 0x210D, 0x6112, 0x38D3, 0x6113, 0x38D4, 0x6114, 0x38D5, 0x6115, + 0x12FC, 0x611A, 0x06EA, 0x611B, 0x046A, 0x611C, 0x38D6, 0x611F, 0x05F2, + 0x6120, 0x210B, 0x6121, 0x1304, 0x6127, 0x130C, 0x6128, 0x130B, 0x612C, + 0x1310, 0x6130, 0x210F, 0x6134, 0x1311, 0x6137, 0x210E, 0x613C, 0x130F, + 0x613D, 0x1312, 0x613E, 0x130A, 0x613F, 0x130E, 0x6142, 0x1313, 0x6144, + 0x1314, 0x6147, 0x1309, 0x6148, 0x08CA, 0x614A, 0x130D, 0x614B, 0x0B36, + 0x614C, 0x07C4, 0x614D, 0x12FB, 0x614E, 0x09FB, 0x6153, 0x1321, 0x6155, + 0x0E39, 0x6158, 0x1317, 0x6159, 0x1318, 0x615A, 0x1319, 0x615D, 0x1320, + 0x615F, 0x131F, 0x6162, 0x0EAB, 0x6163, 0x05F3, 0x6165, 0x131D, 0x6167, + 0x071B, 0x6168, 0x0592, 0x616B, 0x131A, 0x616E, 0x0F80, 0x616F, 0x131C, + 0x6170, 0x049A, 0x6171, 0x131E, 0x6173, 0x1315, 0x6174, 0x131B, 0x6175, + 0x1322, 0x6176, 0x071A, 0x6177, 0x1316, 0x617C, 0x38D7, 0x617E, 0x0F47, + 0x6182, 0x0F15, 0x6187, 0x1325, 0x618A, 0x1329, 0x618D, 0x38D8, 0x618E, + 0x0B00, 0x6190, 0x0FC1, 0x6191, 0x132A, 0x6194, 0x1327, 0x6196, 0x1324, + 0x6198, 0x2110, 0x6199, 0x1323, 0x619A, 0x1328, 0x619F, 0x38D9, 0x61A4, + 0x0E00, 0x61A7, 0x0C8C, 0x61A8, 0x38DA, 0x61A9, 0x071C, 0x61AB, 0x132B, + 0x61AC, 0x1326, 0x61AE, 0x132C, 0x61B2, 0x0751, 0x61B6, 0x0531, 0x61BA, + 0x1334, 0x61BE, 0x05F4, 0x61C2, 0x38DB, 0x61C3, 0x1332, 0x61C6, 0x1333, + 0x61C7, 0x0819, 0x61C8, 0x1331, 0x61C9, 0x132F, 0x61CA, 0x132E, 0x61CB, + 0x1335, 0x61CC, 0x132D, 0x61CD, 0x1337, 0x61D0, 0x057B, 0x61DF, 0x38DC, + 0x61E3, 0x1339, 0x61E6, 0x1338, 0x61F2, 0x0BC4, 0x61F4, 0x133C, 0x61F6, + 0x133A, 0x61F7, 0x1330, 0x61F8, 0x0752, 0x61FA, 0x133B, 0x61FC, 0x133F, + 0x61FD, 0x133E, 0x61FE, 0x1340, 0x61FF, 0x133D, 0x6200, 0x1341, 0x6208, + 0x1342, 0x6209, 0x1343, 0x620A, 0x0E3A, 0x620C, 0x1345, 0x620D, 0x1344, + 0x620E, 0x0949, 0x6210, 0x0A52, 0x6211, 0x0566, 0x6212, 0x057C, 0x6213, + 0x2111, 0x6214, 0x1346, 0x6215, 0x38DD, 0x6216, 0x0483, 0x621A, 0x0A70, + 0x621B, 0x1347, 0x621D, 0x1A64, 0x621E, 0x1348, 0x621F, 0x0737, 0x6221, + 0x1349, 0x6226, 0x0A93, 0x6229, 0x38DE, 0x622A, 0x134A, 0x622E, 0x134B, + 0x622F, 0x0654, 0x6230, 0x134C, 0x6232, 0x134D, 0x6233, 0x134E, 0x6234, + 0x0B37, 0x6236, 0x35BD, 0x6238, 0x0781, 0x623B, 0x0EED, 0x623E, 0x344E, + 0x623F, 0x0E6A, 0x6240, 0x0974, 0x6241, 0x134F, 0x6243, 0x38DF, 0x6246, + 0x38E0, 0x6247, 0x0A94, 0x6248, 0x1B1A, 0x6249, 0x0D76, 0x624B, 0x0916, + 0x624C, 0x38E1, 0x624D, 0x083D, 0x624E, 0x1350, 0x6251, 0x38E2, 0x6253, + 0x0B27, 0x6255, 0x0DF7, 0x6256, 0x38E3, 0x6258, 0x0B51, 0x625B, 0x1353, + 0x625E, 0x1351, 0x6260, 0x1354, 0x6263, 0x1352, 0x6268, 0x1355, 0x626E, + 0x0E01, 0x6271, 0x047B, 0x6276, 0x0DD0, 0x6279, 0x0D77, 0x627C, 0x1356, + 0x627E, 0x1359, 0x627F, 0x099D, 0x6280, 0x0655, 0x6282, 0x1357, 0x6283, + 0x135E, 0x6284, 0x099E, 0x6285, 0x35C5, 0x6289, 0x1358, 0x628A, 0x0CFA, + 0x6291, 0x0F48, 0x6292, 0x135A, 0x6293, 0x135B, 0x6294, 0x135F, 0x6295, + 0x0C64, 0x6296, 0x135C, 0x6297, 0x07C5, 0x6298, 0x0A82, 0x629B, 0x136D, + 0x629C, 0x0D48, 0x629E, 0x0B52, 0x62A6, 0x2112, 0x62AB, 0x0D78, 0x62AC, + 0x13B2, 0x62B1, 0x0E4A, 0x62B5, 0x0C0D, 0x62B9, 0x0EA3, 0x62BB, 0x1362, + 0x62BC, 0x0521, 0x62BD, 0x0BA8, 0x62C2, 0x136B, 0x62C4, 0x38E4, 0x62C5, + 0x0B72, 0x62C6, 0x1365, 0x62C7, 0x136C, 0x62C8, 0x1367, 0x62C9, 0x136E, + 0x62CA, 0x136A, 0x62CC, 0x1369, 0x62CD, 0x0D25, 0x62CF, 0x1363, 0x62D0, + 0x057D, 0x62D1, 0x1361, 0x62D2, 0x068B, 0x62D3, 0x0B53, 0x62D4, 0x135D, + 0x62D7, 0x1360, 0x62D8, 0x07C6, 0x62D9, 0x0A7F, 0x62DB, 0x099F, 0x62DC, + 0x1368, 0x62DD, 0x0D08, 0x62E0, 0x068C, 0x62E1, 0x05A6, 0x62EC, 0x05C5, + 0x62ED, 0x09E7, 0x62EE, 0x1370, 0x62EF, 0x1375, 0x62F1, 0x1371, 0x62F3, + 0x0753, 0x62F5, 0x1376, 0x62F6, 0x0870, 0x62F7, 0x07FB, 0x62FC, 0x38E5, + 0x62FE, 0x0930, 0x62FF, 0x1364, 0x6301, 0x08CB, 0x6302, 0x1373, 0x6307, + 0x08A6, 0x6308, 0x1374, 0x6309, 0x0488, 0x630A, 0x38E6, 0x630C, 0x136F, + 0x630D, 0x38E7, 0x6311, 0x0BC5, 0x6318, 0x38E8, 0x6319, 0x068D, 0x631B, + 0x3737, 0x631F, 0x06AC, 0x6327, 0x1372, 0x6328, 0x046B, 0x632B, 0x0833, + 0x632F, 0x09FC, 0x6339, 0x38E9, 0x633A, 0x0C0E, 0x633D, 0x0D68, 0x633E, + 0x1378, 0x633F, 0x0AE0, 0x6342, 0x38EA, 0x6343, 0x38EB, 0x6349, 0x0B0A, + 0x634C, 0x0879, 0x634D, 0x1379, 0x634F, 0x137B, 0x6350, 0x1377, 0x6355, + 0x0E31, 0x6357, 0x0BD9, 0x635C, 0x0ADE, 0x6365, 0x38EC, 0x6367, 0x0E4B, + 0x6368, 0x08FA, 0x6369, 0x1387, 0x636B, 0x1386, 0x636E, 0x0A3E, 0x6372, + 0x0754, 0x6374, 0x38ED, 0x6376, 0x1380, 0x6377, 0x09A1, 0x637A, 0x0CC0, + 0x637B, 0x0CE7, 0x637D, 0x38EE, 0x6380, 0x137E, 0x6383, 0x0ADF, 0x6384, + 0x38EF, 0x6387, 0x38F0, 0x6388, 0x0924, 0x6389, 0x1383, 0x638C, 0x09A0, + 0x638E, 0x137D, 0x638F, 0x1382, 0x6390, 0x38F1, 0x6392, 0x0D09, 0x6396, + 0x137C, 0x6398, 0x06F7, 0x639B, 0x05BB, 0x639E, 0x38F2, 0x639F, 0x1384, + 0x63A0, 0x0F73, 0x63A1, 0x083E, 0x63A2, 0x0B73, 0x63A3, 0x1381, 0x63A5, + 0x0A80, 0x63A7, 0x07C7, 0x63A8, 0x0A2A, 0x63A9, 0x0508, 0x63AA, 0x0ABE, + 0x63AB, 0x137F, 0x63AC, 0x065F, 0x63B2, 0x071D, 0x63B4, 0x0BEB, 0x63B5, + 0x1385, 0x63BB, 0x0AE1, 0x63BE, 0x1388, 0x63C0, 0x138A, 0x63C3, 0x0B17, + 0x63C4, 0x1390, 0x63C6, 0x138B, 0x63C9, 0x138D, 0x63CF, 0x0DB3, 0x63D0, + 0x0C0F, 0x63D1, 0x38F3, 0x63D2, 0x138E, 0x63D6, 0x0F16, 0x63DA, 0x0F32, + 0x63DB, 0x05F5, 0x63DC, 0x38F4, 0x63E1, 0x0472, 0x63E3, 0x138C, 0x63E9, + 0x1389, 0x63ED, 0x341C, 0x63EE, 0x0634, 0x63F4, 0x0509, 0x63F5, 0x2113, + 0x63F6, 0x138F, 0x63F7, 0x3644, 0x63FA, 0x0F33, 0x6406, 0x1393, 0x6409, + 0x38F5, 0x640D, 0x0B1B, 0x640F, 0x139A, 0x6410, 0x38F6, 0x6413, 0x1394, + 0x6414, 0x1E2C, 0x6416, 0x1391, 0x6417, 0x1398, 0x641C, 0x137A, 0x6422, + 0x38F7, 0x6426, 0x1395, 0x6428, 0x1399, 0x642C, 0x0D56, 0x642D, 0x0C65, + 0x6434, 0x1392, 0x6436, 0x1396, 0x643A, 0x071E, 0x643E, 0x0861, 0x6442, + 0x0A81, 0x644E, 0x139E, 0x6451, 0x1E43, 0x6454, 0x38F8, 0x6458, 0x0C20, + 0x645B, 0x38F9, 0x6460, 0x2114, 0x6467, 0x139B, 0x6469, 0x0E8E, 0x646D, + 0x38FA, 0x646F, 0x139C, 0x6476, 0x139D, 0x6478, 0x0EDA, 0x647A, 0x0A46, + 0x647B, 0x38FB, 0x6483, 0x0738, 0x6488, 0x13A4, 0x6492, 0x0883, 0x6493, + 0x13A1, 0x6495, 0x13A0, 0x649A, 0x0CE8, 0x649D, 0x2115, 0x649E, 0x0C8D, + 0x64A4, 0x0C2B, 0x64A5, 0x13A2, 0x64A9, 0x13A3, 0x64AB, 0x0DE1, 0x64AD, + 0x0CFB, 0x64AE, 0x0871, 0x64B0, 0x0A95, 0x64B2, 0x0E7E, 0x64B9, 0x05A7, + 0x64BB, 0x13AA, 0x64BC, 0x13A5, 0x64BE, 0x38FC, 0x64BF, 0x38FD, 0x64C1, + 0x0F34, 0x64C2, 0x13AC, 0x64C5, 0x13A8, 0x64C7, 0x13A9, 0x64CA, 0x341D, + 0x64CD, 0x0AE2, 0x64CE, 0x2116, 0x64D2, 0x13A7, 0x64D4, 0x1366, 0x64D8, + 0x13AB, 0x64DA, 0x13A6, 0x64E0, 0x13B0, 0x64E1, 0x13B1, 0x64E2, 0x0C21, + 0x64E3, 0x13B3, 0x64E5, 0x38FE, 0x64E6, 0x0872, 0x64E7, 0x13AE, 0x64EC, + 0x0656, 0x64EF, 0x13B4, 0x64F1, 0x13AD, 0x64F2, 0x13B8, 0x64F4, 0x13B7, + 0x64F6, 0x13B6, 0x64F7, 0x38FF, 0x64FA, 0x13B9, 0x64FB, 0x3900, 0x64FD, + 0x13BB, 0x64FE, 0x09D9, 0x6500, 0x13BA, 0x6504, 0x3901, 0x6505, 0x13BE, + 0x6516, 0x3902, 0x6518, 0x13BC, 0x6519, 0x3903, 0x651C, 0x13BD, 0x651D, + 0x1397, 0x6522, 0x1E97, 0x6523, 0x13C0, 0x6524, 0x13BF, 0x652A, 0x139F, + 0x652B, 0x13C1, 0x652C, 0x13B5, 0x652F, 0x08A7, 0x6534, 0x13C2, 0x6535, + 0x13C3, 0x6536, 0x13C5, 0x6537, 0x13C4, 0x6538, 0x13C6, 0x6539, 0x057E, + 0x653B, 0x07C8, 0x653E, 0x0E4C, 0x653F, 0x0A53, 0x6545, 0x0782, 0x6547, + 0x3904, 0x6548, 0x13C8, 0x654D, 0x13CB, 0x654E, 0x2117, 0x654F, 0x0DC4, + 0x6551, 0x0679, 0x6555, 0x13CA, 0x6556, 0x13C9, 0x6557, 0x0D0A, 0x6558, + 0x13CC, 0x6559, 0x06AD, 0x655D, 0x13CE, 0x655E, 0x13CD, 0x6562, 0x05F6, + 0x6563, 0x0884, 0x6566, 0x0CB0, 0x6567, 0x3905, 0x656C, 0x071F, 0x6570, + 0x0A3A, 0x6572, 0x13CF, 0x6574, 0x0A54, 0x6575, 0x0C22, 0x6577, 0x0DD1, + 0x6578, 0x13D0, 0x6581, 0x3906, 0x6582, 0x13D1, 0x6583, 0x13D2, 0x6585, + 0x3907, 0x6587, 0x0E08, 0x6588, 0x120C, 0x6589, 0x0A6A, 0x658C, 0x0DBE, + 0x658E, 0x0848, 0x6590, 0x0D79, 0x6591, 0x0D57, 0x6597, 0x0C47, 0x6599, + 0x0F89, 0x659B, 0x13D4, 0x659C, 0x08FC, 0x659F, 0x13D5, 0x65A1, 0x047A, + 0x65A4, 0x06CC, 0x65A5, 0x0A71, 0x65A7, 0x0DD2, 0x65AB, 0x13D6, 0x65AC, + 0x0890, 0x65AD, 0x0B85, 0x65AF, 0x08A9, 0x65B0, 0x09FD, 0x65B7, 0x13D7, + 0x65B9, 0x0E4D, 0x65BC, 0x0519, 0x65BD, 0x08AA, 0x65C1, 0x13DA, 0x65C2, + 0x3908, 0x65C3, 0x13D8, 0x65C4, 0x13DB, 0x65C5, 0x0F81, 0x65C6, 0x13D9, + 0x65CB, 0x0A9F, 0x65CC, 0x13DC, 0x65CF, 0x0B12, 0x65D2, 0x13DD, 0x65D7, + 0x0636, 0x65D9, 0x13DF, 0x65DB, 0x13DE, 0x65E0, 0x13E0, 0x65E1, 0x13E1, + 0x65E2, 0x0637, 0x65E3, 0x3585, 0x65E5, 0x0CD4, 0x65E6, 0x0B74, 0x65E7, + 0x0686, 0x65E8, 0x08AB, 0x65E9, 0x0AE3, 0x65EC, 0x0966, 0x65ED, 0x0474, + 0x65F0, 0x3909, 0x65F1, 0x13E2, 0x65F2, 0x390A, 0x65FA, 0x0522, 0x65FB, + 0x13E6, 0x6600, 0x2118, 0x6602, 0x07C9, 0x6603, 0x13E5, 0x6606, 0x081B, + 0x6607, 0x09A2, 0x6609, 0x211A, 0x660A, 0x13E4, 0x660C, 0x09A3, 0x660E, + 0x0ECC, 0x660F, 0x081A, 0x6613, 0x049B, 0x6614, 0x0A72, 0x6615, 0x2119, + 0x661C, 0x13EB, 0x661E, 0x211C, 0x661F, 0x0A55, 0x6620, 0x04E9, 0x6624, + 0x211D, 0x6625, 0x095F, 0x6627, 0x0E94, 0x6628, 0x0862, 0x662C, 0x390B, + 0x662D, 0x09A4, 0x662E, 0x211B, 0x662F, 0x0A4B, 0x6631, 0x20AE, 0x6634, + 0x13EA, 0x6635, 0x13E8, 0x6636, 0x13E9, 0x663B, 0x1E00, 0x663C, 0x0BA9, + 0x663F, 0x1409, 0x6641, 0x13EF, 0x6642, 0x08CC, 0x6643, 0x07CA, 0x6644, + 0x13ED, 0x6649, 0x13EE, 0x664B, 0x09FE, 0x664C, 0x390C, 0x664F, 0x13EC, + 0x6652, 0x087D, 0x6657, 0x211F, 0x6659, 0x2120, 0x665B, 0x390D, 0x665C, + 0x390E, 0x665D, 0x13F1, 0x665E, 0x13F0, 0x665F, 0x13F5, 0x6661, 0x390F, + 0x6662, 0x13F6, 0x6663, 0x373A, 0x6664, 0x13F2, 0x6665, 0x211E, 0x6666, + 0x0580, 0x6667, 0x13F3, 0x6668, 0x13F4, 0x6669, 0x0D69, 0x666B, 0x3910, + 0x666E, 0x0DD3, 0x666F, 0x0720, 0x6670, 0x13F7, 0x6673, 0x2122, 0x6674, + 0x0A56, 0x6676, 0x09A5, 0x6677, 0x3911, 0x667A, 0x0B90, 0x6681, 0x06BF, + 0x6683, 0x13F8, 0x6684, 0x13FC, 0x6687, 0x054B, 0x6688, 0x13F9, 0x6689, + 0x13FB, 0x668E, 0x13FA, 0x6691, 0x0975, 0x6696, 0x0B86, 0x6697, 0x0489, + 0x6698, 0x13FD, 0x6699, 0x2123, 0x669D, 0x13FE, 0x66A0, 0x2124, 0x66A2, + 0x0BC6, 0x66A4, 0x3912, 0x66A6, 0x0FB9, 0x66AB, 0x0891, 0x66AE, 0x0E3B, + 0x66B2, 0x2125, 0x66B4, 0x0E6B, 0x66B8, 0x1405, 0x66B9, 0x1400, 0x66BC, + 0x1403, 0x66BE, 0x1402, 0x66BF, 0x2126, 0x66C1, 0x13FF, 0x66C4, 0x1404, + 0x66C6, 0x3455, 0x66C7, 0x0CB6, 0x66C8, 0x3913, 0x66C9, 0x1401, 0x66D6, + 0x1406, 0x66D9, 0x0976, 0x66DA, 0x1407, 0x66DC, 0x0F35, 0x66DD, 0x0D2E, + 0x66E0, 0x1408, 0x66E6, 0x140A, 0x66E9, 0x140B, 0x66EC, 0x3914, 0x66F0, + 0x140C, 0x66F2, 0x06C2, 0x66F3, 0x04EA, 0x66F4, 0x07CB, 0x66F5, 0x140D, + 0x66F7, 0x140E, 0x66F8, 0x097B, 0x66F9, 0x0AE4, 0x66FA, 0x2127, 0x66FB, + 0x20B1, 0x66FC, 0x10ED, 0x66FD, 0x0AC0, 0x66FE, 0x0ABF, 0x66FF, 0x0B38, + 0x6700, 0x0837, 0x6703, 0x104B, 0x6705, 0x3915, 0x6708, 0x0744, 0x6709, + 0x0F17, 0x670B, 0x0E4E, 0x670D, 0x0DF0, 0x670E, 0x2128, 0x670F, 0x140F, + 0x6713, 0x3916, 0x6714, 0x0863, 0x6715, 0x0BDB, 0x6716, 0x1410, 0x6717, + 0x0FD5, 0x671B, 0x0E6C, 0x671D, 0x0BC7, 0x671E, 0x1411, 0x671F, 0x0638, + 0x6726, 0x1412, 0x6727, 0x1413, 0x6728, 0x0EE6, 0x672A, 0x0EB0, 0x672B, + 0x0EA4, 0x672C, 0x0E8A, 0x672D, 0x0873, 0x672E, 0x1415, 0x6731, 0x0917, + 0x6733, 0x3917, 0x6734, 0x0E7F, 0x6736, 0x1417, 0x6737, 0x141A, 0x6738, + 0x1419, 0x673A, 0x0635, 0x673D, 0x067A, 0x673F, 0x1416, 0x6741, 0x1418, + 0x6743, 0x35B7, 0x6746, 0x141B, 0x6748, 0x3918, 0x6749, 0x0A3F, 0x674C, + 0x3919, 0x674E, 0x0F65, 0x674F, 0x048D, 0x6750, 0x0850, 0x6751, 0x0B1C, + 0x6753, 0x0909, 0x6756, 0x09DB, 0x6759, 0x141E, 0x675C, 0x0C48, 0x675E, + 0x141C, 0x675F, 0x0B0B, 0x6760, 0x141D, 0x6761, 0x09DA, 0x6762, 0x0EE9, + 0x6763, 0x141F, 0x6764, 0x1420, 0x6765, 0x0F52, 0x6766, 0x212A, 0x676A, + 0x1425, 0x676D, 0x07CC, 0x676E, 0x3571, 0x676F, 0x0D0B, 0x6770, 0x1422, + 0x6771, 0x0C66, 0x6772, 0x13E3, 0x6773, 0x13E7, 0x6775, 0x0669, 0x6776, + 0x391A, 0x6777, 0x0CFD, 0x677B, 0x391B, 0x677C, 0x1424, 0x677E, 0x09A6, + 0x677F, 0x0D58, 0x6785, 0x142A, 0x6787, 0x0D8E, 0x6789, 0x1421, 0x678B, + 0x1427, 0x678C, 0x1426, 0x6790, 0x0A73, 0x6795, 0x0E9B, 0x6797, 0x0F9B, + 0x679A, 0x0E95, 0x679C, 0x054C, 0x679D, 0x08AC, 0x67A0, 0x0FEE, 0x67A1, + 0x1429, 0x67A2, 0x0A3B, 0x67A6, 0x1428, 0x67A9, 0x1423, 0x67AF, 0x0783, + 0x67B0, 0x391C, 0x67B2, 0x391D, 0x67B3, 0x142F, 0x67B4, 0x142D, 0x67B6, + 0x054D, 0x67B7, 0x142B, 0x67B8, 0x1431, 0x67B9, 0x1437, 0x67BB, 0x212B, + 0x67C0, 0x212D, 0x67C1, 0x0B28, 0x67C4, 0x0E11, 0x67C6, 0x1439, 0x67CA, + 0x0D94, 0x67CE, 0x1438, 0x67CF, 0x0D26, 0x67D0, 0x0E6D, 0x67D1, 0x05F7, + 0x67D3, 0x0A9B, 0x67D4, 0x094A, 0x67D7, 0x391F, 0x67D8, 0x0BEF, 0x67D9, + 0x3920, 0x67DA, 0x0F18, 0x67DD, 0x1434, 0x67DE, 0x1433, 0x67E2, 0x1435, + 0x67E4, 0x1432, 0x67E7, 0x143A, 0x67E9, 0x1430, 0x67EC, 0x142E, 0x67EE, + 0x1436, 0x67EF, 0x142C, 0x67F0, 0x3921, 0x67F1, 0x0BAA, 0x67F3, 0x0F04, + 0x67F4, 0x08F2, 0x67F5, 0x0864, 0x67F9, 0x391E, 0x67FB, 0x082A, 0x67FE, + 0x0E9D, 0x67FF, 0x059F, 0x6801, 0x212E, 0x6802, 0x0BEA, 0x6803, 0x0CA2, + 0x6804, 0x04EB, 0x6805, 0x1E07, 0x6813, 0x0A96, 0x6816, 0x0A58, 0x6817, + 0x0700, 0x681E, 0x143C, 0x6821, 0x07CD, 0x6822, 0x05DA, 0x6829, 0x143E, + 0x682A, 0x05D2, 0x682B, 0x1444, 0x682C, 0x3922, 0x6830, 0x3923, 0x6831, + 0x3924, 0x6832, 0x1441, 0x6834, 0x0A97, 0x6838, 0x05A9, 0x6839, 0x081C, + 0x683C, 0x05A8, 0x683D, 0x083F, 0x6840, 0x143F, 0x6841, 0x073B, 0x6842, + 0x0721, 0x6843, 0x0C67, 0x6844, 0x212F, 0x6846, 0x143D, 0x6848, 0x048A, + 0x684D, 0x1440, 0x684E, 0x1442, 0x6850, 0x06C5, 0x6851, 0x0702, 0x6852, + 0x212C, 0x6853, 0x05F8, 0x6854, 0x0665, 0x6859, 0x1445, 0x685B, 0x3925, + 0x685C, 0x0869, 0x685D, 0x0E9F, 0x685F, 0x0885, 0x6863, 0x1446, 0x6867, + 0x0DA2, 0x6872, 0x3926, 0x6874, 0x1452, 0x6875, 0x3927, 0x6876, 0x0533, + 0x6877, 0x1447, 0x687A, 0x3928, 0x687E, 0x1458, 0x687F, 0x1448, 0x6881, + 0x0F8A, 0x6883, 0x144F, 0x6884, 0x3929, 0x6885, 0x0D15, 0x688D, 0x1457, + 0x688E, 0x1E9C, 0x688F, 0x144A, 0x6893, 0x0478, 0x6894, 0x144C, 0x6897, + 0x07CE, 0x689B, 0x144E, 0x689D, 0x144D, 0x689F, 0x1449, 0x68A0, 0x1454, + 0x68A2, 0x09A7, 0x68A5, 0x392A, 0x68A6, 0x11BE, 0x68A7, 0x079C, 0x68A8, + 0x0F66, 0x68AD, 0x144B, 0x68AF, 0x0C10, 0x68B0, 0x0581, 0x68B1, 0x081D, + 0x68B2, 0x392B, 0x68B3, 0x1443, 0x68B5, 0x1453, 0x68B6, 0x05BF, 0x68B9, + 0x1451, 0x68BA, 0x1455, 0x68BC, 0x0C68, 0x68C4, 0x063A, 0x68C6, 0x1473, + 0x68C8, 0x20AF, 0x68C9, 0x0ED5, 0x68CA, 0x145A, 0x68CB, 0x0639, 0x68CD, + 0x1461, 0x68CF, 0x2130, 0x68D0, 0x392C, 0x68D2, 0x0E6E, 0x68D4, 0x1462, + 0x68D5, 0x1464, 0x68D6, 0x392D, 0x68D7, 0x1468, 0x68D8, 0x145C, 0x68DA, + 0x0B68, 0x68DF, 0x0C69, 0x68E0, 0x146C, 0x68E1, 0x145F, 0x68E3, 0x1469, + 0x68E7, 0x1463, 0x68E8, 0x392E, 0x68ED, 0x392F, 0x68EE, 0x09FF, 0x68EF, + 0x146D, 0x68F0, 0x3930, 0x68F1, 0x3931, 0x68F2, 0x0A57, 0x68F9, 0x146B, + 0x68FA, 0x05F9, 0x68FC, 0x3932, 0x6900, 0x0FF6, 0x6901, 0x1459, 0x6904, + 0x1467, 0x6905, 0x049C, 0x6908, 0x145B, 0x690B, 0x0EC6, 0x690C, 0x1460, + 0x690D, 0x09E8, 0x690E, 0x0BE3, 0x690F, 0x1456, 0x6911, 0x3933, 0x6912, + 0x1466, 0x6913, 0x3934, 0x6919, 0x0A40, 0x691A, 0x1470, 0x691B, 0x05CF, + 0x691C, 0x0755, 0x6921, 0x1472, 0x6922, 0x145D, 0x6923, 0x1471, 0x6925, + 0x146A, 0x6926, 0x145E, 0x6928, 0x146E, 0x692A, 0x146F, 0x6930, 0x1480, + 0x6934, 0x0CA6, 0x6935, 0x3935, 0x6936, 0x1465, 0x6939, 0x147C, 0x693B, + 0x3936, 0x693D, 0x147E, 0x693F, 0x0BF4, 0x694A, 0x0F36, 0x6953, 0x0DE8, + 0x6954, 0x1479, 0x6955, 0x0B2A, 0x6957, 0x3937, 0x6959, 0x147F, 0x695A, + 0x0AC1, 0x695C, 0x1476, 0x695D, 0x1483, 0x695E, 0x1482, 0x6960, 0x0CC7, + 0x6961, 0x1481, 0x6962, 0x0CC2, 0x6963, 0x3938, 0x6968, 0x2132, 0x696A, + 0x1485, 0x696B, 0x1478, 0x696D, 0x06C0, 0x696E, 0x147B, 0x696F, 0x0967, + 0x6972, 0x3939, 0x6973, 0x0D16, 0x6974, 0x147D, 0x6975, 0x06C3, 0x6977, + 0x1475, 0x6978, 0x1477, 0x6979, 0x1474, 0x697C, 0x0FD6, 0x697D, 0x05B8, + 0x697E, 0x147A, 0x697F, 0x393A, 0x6980, 0x393B, 0x6981, 0x1484, 0x6982, + 0x0593, 0x698A, 0x0857, 0x698E, 0x04FF, 0x6991, 0x1495, 0x6994, 0x0FD7, + 0x6995, 0x1498, 0x6998, 0x2134, 0x699B, 0x0A00, 0x699C, 0x1497, 0x69A0, + 0x1496, 0x69A6, 0x393C, 0x69A7, 0x1493, 0x69AD, 0x393D, 0x69AE, 0x1487, + 0x69B1, 0x14A4, 0x69B2, 0x1486, 0x69B4, 0x1499, 0x69B7, 0x393E, 0x69BB, + 0x1491, 0x69BE, 0x148C, 0x69BF, 0x1489, 0x69C1, 0x148A, 0x69C3, 0x1492, + 0x69C7, 0x1D33, 0x69CA, 0x148F, 0x69CB, 0x07CF, 0x69CC, 0x0BE4, 0x69CD, + 0x0AE6, 0x69CE, 0x148D, 0x69D0, 0x1488, 0x69D3, 0x148B, 0x69D6, 0x393F, + 0x69D7, 0x3940, 0x69D8, 0x0F37, 0x69D9, 0x0E98, 0x69DD, 0x1490, 0x69DE, + 0x149A, 0x69E2, 0x2135, 0x69E7, 0x14A2, 0x69E8, 0x149B, 0x69EA, 0x356F, + 0x69EB, 0x14A8, 0x69ED, 0x14A6, 0x69F2, 0x14A1, 0x69F6, 0x373F, 0x69F9, + 0x14A0, 0x69FB, 0x0BEC, 0x69FD, 0x0AE7, 0x69FF, 0x149E, 0x6A01, 0x3941, + 0x6A02, 0x149C, 0x6A05, 0x14A3, 0x6A0A, 0x14A9, 0x6A0B, 0x0D89, 0x6A0C, + 0x14AF, 0x6A0F, 0x3942, 0x6A12, 0x14AA, 0x6A13, 0x14AD, 0x6A14, 0x14A7, + 0x6A15, 0x3943, 0x6A17, 0x0BB2, 0x6A19, 0x0DAA, 0x6A1B, 0x149D, 0x6A1E, + 0x14A5, 0x6A1F, 0x09A8, 0x6A21, 0x0EDB, 0x6A22, 0x14B9, 0x6A23, 0x14AC, + 0x6A28, 0x3944, 0x6A29, 0x0756, 0x6A2A, 0x0523, 0x6A2B, 0x05BD, 0x6A2E, + 0x1494, 0x6A30, 0x2136, 0x6A34, 0x3945, 0x6A35, 0x09A9, 0x6A36, 0x14B1, + 0x6A38, 0x14B8, 0x6A39, 0x0925, 0x6A3A, 0x05D0, 0x6A3D, 0x0B6C, 0x6A3E, + 0x3946, 0x6A44, 0x14AE, 0x6A45, 0x3947, 0x6A46, 0x2138, 0x6A47, 0x14B3, + 0x6A48, 0x14B7, 0x6A4B, 0x06AE, 0x6A50, 0x3948, 0x6A51, 0x3949, 0x6A54, + 0x3C34, 0x6A56, 0x394A, 0x6A58, 0x0666, 0x6A59, 0x14B5, 0x6A5B, 0x394B, + 0x6A5F, 0x063B, 0x6A61, 0x0CA3, 0x6A62, 0x14B4, 0x6A66, 0x14B6, 0x6A6B, + 0x2137, 0x6A72, 0x14B0, 0x6A73, 0x2139, 0x6A78, 0x14B2, 0x6A7E, 0x213A, + 0x6A7F, 0x05BE, 0x6A80, 0x0B87, 0x6A83, 0x394C, 0x6A84, 0x14BD, 0x6A89, + 0x394D, 0x6A8D, 0x14BB, 0x6A8E, 0x079D, 0x6A90, 0x14BA, 0x6A91, 0x394E, + 0x6A97, 0x14C0, 0x6A9C, 0x143B, 0x6A9D, 0x394F, 0x6A9E, 0x3950, 0x6A9F, + 0x3951, 0x6AA0, 0x14BC, 0x6AA2, 0x14BE, 0x6AA3, 0x14BF, 0x6AAA, 0x14CB, + 0x6AAC, 0x14C7, 0x6AAE, 0x1450, 0x6AB3, 0x14C6, 0x6AB8, 0x14C5, 0x6ABB, + 0x14C2, 0x6AC1, 0x14AB, 0x6AC2, 0x14C4, 0x6AC3, 0x14C3, 0x6AD1, 0x14C9, + 0x6AD3, 0x0FCC, 0x6ADA, 0x14CC, 0x6ADB, 0x06F3, 0x6ADC, 0x3952, 0x6ADE, + 0x14C8, 0x6ADF, 0x14CA, 0x6AE2, 0x213B, 0x6AE4, 0x213C, 0x6AE7, 0x3953, + 0x6AE8, 0x0D3B, 0x6AEA, 0x14CD, 0x6AEC, 0x3954, 0x6AFA, 0x14D1, 0x6AFB, + 0x14CE, 0x6B04, 0x0F5D, 0x6B05, 0x14CF, 0x6B0A, 0x149F, 0x6B12, 0x14D2, + 0x6B16, 0x14D3, 0x6B1D, 0x04D7, 0x6B1E, 0x3955, 0x6B1F, 0x14D5, 0x6B20, + 0x073D, 0x6B21, 0x08CD, 0x6B23, 0x06CD, 0x6B24, 0x3956, 0x6B27, 0x0524, + 0x6B32, 0x0F49, 0x6B35, 0x3957, 0x6B37, 0x14D7, 0x6B38, 0x14D6, 0x6B39, + 0x14D9, 0x6B3A, 0x0657, 0x6B3D, 0x06CE, 0x6B3E, 0x05FA, 0x6B43, 0x14DC, + 0x6B46, 0x3958, 0x6B47, 0x14DB, 0x6B49, 0x14DD, 0x6B4C, 0x054E, 0x6B4E, + 0x0B75, 0x6B50, 0x14DE, 0x6B53, 0x05FB, 0x6B54, 0x14E0, 0x6B56, 0x3959, + 0x6B59, 0x14DF, 0x6B5B, 0x14E1, 0x6B5F, 0x14E2, 0x6B60, 0x395A, 0x6B61, + 0x14E3, 0x6B62, 0x08AD, 0x6B63, 0x0A59, 0x6B64, 0x0811, 0x6B65, 0x344A, + 0x6B66, 0x0DE2, 0x6B69, 0x0E32, 0x6B6A, 0x0FEA, 0x6B6F, 0x08C3, 0x6B72, + 0x35D9, 0x6B73, 0x0840, 0x6B74, 0x0FBA, 0x6B77, 0x3456, 0x6B78, 0x14E4, + 0x6B79, 0x14E5, 0x6B7B, 0x08AE, 0x6B7F, 0x14E6, 0x6B80, 0x14E7, 0x6B82, + 0x395B, 0x6B83, 0x14E9, 0x6B84, 0x14E8, 0x6B86, 0x0E86, 0x6B89, 0x0968, + 0x6B8A, 0x0918, 0x6B8B, 0x0892, 0x6B8D, 0x14EA, 0x6B95, 0x14EC, 0x6B96, + 0x09E9, 0x6B98, 0x14EB, 0x6B9E, 0x14ED, 0x6BA4, 0x14EE, 0x6BAA, 0x14EF, + 0x6BAB, 0x14F0, 0x6BAF, 0x14F1, 0x6BB1, 0x14F3, 0x6BB2, 0x14F2, 0x6BB3, + 0x14F4, 0x6BB4, 0x0525, 0x6BB5, 0x0B88, 0x6BB7, 0x14F5, 0x6BBA, 0x0874, + 0x6BBB, 0x05AA, 0x6BBC, 0x14F6, 0x6BBE, 0x395C, 0x6BBF, 0x0C3C, 0x6BC0, + 0x119D, 0x6BC5, 0x063D, 0x6BC6, 0x14F7, 0x6BCB, 0x14F8, 0x6BCC, 0x3744, + 0x6BCD, 0x0E3C, 0x6BCE, 0x0E96, 0x6BCF, 0x344C, 0x6BD2, 0x0C9F, 0x6BD3, + 0x14F9, 0x6BD4, 0x0D7A, 0x6BD6, 0x213D, 0x6BD8, 0x0D8F, 0x6BDB, 0x0EDF, + 0x6BDF, 0x14FA, 0x6BE1, 0x395D, 0x6BEB, 0x14FC, 0x6BEC, 0x14FB, 0x6BEF, + 0x14FE, 0x6BF1, 0x395E, 0x6BF3, 0x14FD, 0x6C08, 0x1500, 0x6C0F, 0x08AF, + 0x6C10, 0x395F, 0x6C11, 0x0EBD, 0x6C13, 0x1501, 0x6C14, 0x1502, 0x6C17, + 0x063E, 0x6C1B, 0x1503, 0x6C23, 0x1505, 0x6C24, 0x1504, 0x6C33, 0x3960, + 0x6C34, 0x0A2B, 0x6C35, 0x3961, 0x6C37, 0x0DAB, 0x6C38, 0x04EC, 0x6C3A, + 0x3962, 0x6C3E, 0x0D59, 0x6C3F, 0x213E, 0x6C40, 0x0C11, 0x6C41, 0x094B, + 0x6C42, 0x067B, 0x6C4E, 0x0D5A, 0x6C50, 0x08DA, 0x6C55, 0x1507, 0x6C57, + 0x05FC, 0x6C59, 0x3963, 0x6C5A, 0x051A, 0x6C5C, 0x213F, 0x6C5D, 0x0CCA, + 0x6C5E, 0x1506, 0x6C5F, 0x07D0, 0x6C60, 0x0B91, 0x6C62, 0x1508, 0x6C68, + 0x1510, 0x6C6A, 0x1509, 0x6C6F, 0x2141, 0x6C70, 0x0B21, 0x6C72, 0x067C, + 0x6C73, 0x1511, 0x6C76, 0x3964, 0x6C7A, 0x073E, 0x6C7B, 0x3965, 0x6C7D, + 0x063F, 0x6C7E, 0x150F, 0x6C81, 0x150D, 0x6C82, 0x150A, 0x6C83, 0x0F4A, + 0x6C85, 0x3966, 0x6C86, 0x2140, 0x6C88, 0x0BDC, 0x6C8C, 0x0CB1, 0x6C8D, + 0x150B, 0x6C90, 0x1513, 0x6C92, 0x1512, 0x6C93, 0x06F9, 0x6C95, 0x3967, + 0x6C96, 0x052D, 0x6C99, 0x082B, 0x6C9A, 0x150C, 0x6C9B, 0x150E, 0x6C9C, + 0x3968, 0x6CA1, 0x0E85, 0x6CA2, 0x0B54, 0x6CAA, 0x3749, 0x6CAB, 0x0EA5, + 0x6CAE, 0x151B, 0x6CB1, 0x151C, 0x6CB3, 0x054F, 0x6CB8, 0x0DF8, 0x6CB9, + 0x0F09, 0x6CBA, 0x151E, 0x6CBB, 0x08CF, 0x6CBC, 0x09AA, 0x6CBD, 0x1517, + 0x6CBE, 0x151D, 0x6CBF, 0x050A, 0x6CC1, 0x06AF, 0x6CC4, 0x1514, 0x6CC5, + 0x1519, 0x6CC9, 0x0A98, 0x6CCA, 0x0D27, 0x6CCC, 0x0D7B, 0x6CD0, 0x3969, + 0x6CD3, 0x1516, 0x6CD4, 0x396A, 0x6CD5, 0x0E4F, 0x6CD6, 0x396B, 0x6CD7, + 0x1518, 0x6CD9, 0x1521, 0x6CDA, 0x2142, 0x6CDB, 0x151F, 0x6CDD, 0x151A, + 0x6CE0, 0x396C, 0x6CE1, 0x0E50, 0x6CE2, 0x0CFE, 0x6CE3, 0x067D, 0x6CE5, + 0x0C1F, 0x6CE8, 0x0BAB, 0x6CEA, 0x1522, 0x6CEB, 0x396D, 0x6CEC, 0x396E, + 0x6CEE, 0x396F, 0x6CEF, 0x1520, 0x6CF0, 0x0B39, 0x6CF1, 0x1515, 0x6CF3, + 0x04ED, 0x6D01, 0x3C35, 0x6D04, 0x2143, 0x6D0A, 0x3970, 0x6D0B, 0x0F38, + 0x6D0C, 0x152D, 0x6D0E, 0x3971, 0x6D11, 0x3972, 0x6D12, 0x152C, 0x6D17, + 0x0A9A, 0x6D19, 0x1529, 0x6D1B, 0x0F56, 0x6D1E, 0x0C8E, 0x6D1F, 0x1523, + 0x6D25, 0x0BE1, 0x6D29, 0x04EE, 0x6D2A, 0x07D1, 0x6D2B, 0x1526, 0x6D2E, + 0x3973, 0x6D32, 0x0931, 0x6D33, 0x152B, 0x6D35, 0x152A, 0x6D36, 0x1525, + 0x6D38, 0x1528, 0x6D3B, 0x05C6, 0x6D3D, 0x1527, 0x6D3E, 0x0CFF, 0x6D41, + 0x0F76, 0x6D44, 0x09DC, 0x6D45, 0x0A99, 0x6D57, 0x3974, 0x6D59, 0x1533, + 0x6D5A, 0x1531, 0x6D5C, 0x0DBF, 0x6D5E, 0x3975, 0x6D63, 0x152E, 0x6D64, + 0x1530, 0x6D65, 0x3976, 0x6D66, 0x04DC, 0x6D69, 0x07D2, 0x6D6A, 0x0FD8, + 0x6D6C, 0x059B, 0x6D6E, 0x0DD4, 0x6D6F, 0x2145, 0x6D74, 0x0F4B, 0x6D77, + 0x0582, 0x6D78, 0x0A01, 0x6D79, 0x1532, 0x6D82, 0x3977, 0x6D85, 0x1537, + 0x6D87, 0x2144, 0x6D88, 0x09AB, 0x6D89, 0x342A, 0x6D8C, 0x0F1A, 0x6D8E, + 0x1534, 0x6D93, 0x152F, 0x6D95, 0x1535, 0x6D96, 0x2146, 0x6D99, 0x0FA6, + 0x6D9B, 0x0C6D, 0x6D9C, 0x0C9A, 0x6DAC, 0x2147, 0x6DAF, 0x0594, 0x6DB2, + 0x04F7, 0x6DB5, 0x153B, 0x6DB8, 0x153E, 0x6DBC, 0x0F8B, 0x6DBF, 0x3978, + 0x6DC0, 0x0F4E, 0x6DC4, 0x3979, 0x6DC5, 0x1545, 0x6DC6, 0x153F, 0x6DC7, + 0x153C, 0x6DCA, 0x397A, 0x6DCB, 0x0F9C, 0x6DCC, 0x1542, 0x6DCF, 0x2148, + 0x6DD0, 0x3C36, 0x6DD1, 0x0954, 0x6DD2, 0x1544, 0x6DD5, 0x1549, 0x6DD6, + 0x397B, 0x6DD8, 0x0C6B, 0x6DD9, 0x1547, 0x6DDA, 0x3453, 0x6DDE, 0x1541, + 0x6DE1, 0x0B76, 0x6DE4, 0x1548, 0x6DE6, 0x153D, 0x6DE8, 0x1543, 0x6DE9, + 0x397C, 0x6DEA, 0x154A, 0x6DEB, 0x04C0, 0x6DEC, 0x1540, 0x6DEE, 0x154B, + 0x6DF1, 0x0A02, 0x6DF2, 0x214A, 0x6DF3, 0x0969, 0x6DF5, 0x0DF5, 0x6DF7, + 0x081E, 0x6DF8, 0x2149, 0x6DF9, 0x1538, 0x6DFA, 0x1546, 0x6DFB, 0x0C34, + 0x6DFC, 0x214B, 0x6E05, 0x0A5A, 0x6E07, 0x05C7, 0x6E08, 0x0841, 0x6E09, + 0x09AC, 0x6E0A, 0x153A, 0x6E0B, 0x094C, 0x6E13, 0x0722, 0x6E15, 0x1539, + 0x6E17, 0x3746, 0x6E19, 0x154F, 0x6E1A, 0x0977, 0x6E1B, 0x076E, 0x6E1D, + 0x155E, 0x6E1F, 0x1558, 0x6E20, 0x068E, 0x6E21, 0x0C49, 0x6E22, 0x397D, + 0x6E23, 0x1553, 0x6E24, 0x155C, 0x6E25, 0x0473, 0x6E26, 0x04D4, 0x6E27, + 0x214E, 0x6E29, 0x0539, 0x6E2B, 0x1555, 0x6E2C, 0x0B0C, 0x6E2D, 0x154C, + 0x6E2E, 0x154E, 0x6E2F, 0x07D3, 0x6E34, 0x3412, 0x6E38, 0x155F, 0x6E39, + 0x214C, 0x6E3A, 0x155A, 0x6E3C, 0x214F, 0x6E3E, 0x1552, 0x6E42, 0x3C37, + 0x6E43, 0x1559, 0x6E4A, 0x0EB7, 0x6E4D, 0x1557, 0x6E4E, 0x155B, 0x6E51, + 0x397E, 0x6E56, 0x0784, 0x6E58, 0x09AD, 0x6E5B, 0x0B77, 0x6E5C, 0x214D, + 0x6E5F, 0x1551, 0x6E67, 0x0F19, 0x6E6B, 0x1554, 0x6E6E, 0x154D, 0x6E6F, + 0x0C6C, 0x6E72, 0x1550, 0x6E76, 0x1556, 0x6E7E, 0x0FF7, 0x6E7F, 0x08EA, + 0x6E80, 0x0EAC, 0x6E82, 0x1560, 0x6E8C, 0x0D42, 0x6E8F, 0x156C, 0x6E90, + 0x076F, 0x6E96, 0x096A, 0x6E98, 0x1562, 0x6E9C, 0x0F77, 0x6E9D, 0x07D4, + 0x6E9F, 0x156F, 0x6EA2, 0x04B2, 0x6EA5, 0x156D, 0x6EAA, 0x1561, 0x6EAB, + 0x340C, 0x6EAF, 0x1567, 0x6EB2, 0x1569, 0x6EB6, 0x0F39, 0x6EB7, 0x1564, + 0x6EBA, 0x0C28, 0x6EBD, 0x1566, 0x6EBF, 0x2150, 0x6EC2, 0x156E, 0x6EC4, + 0x1568, 0x6EC5, 0x0ED3, 0x6EC7, 0x397F, 0x6EC9, 0x1563, 0x6ECA, 0x3980, + 0x6ECB, 0x08CE, 0x6ECC, 0x157B, 0x6ECE, 0x3981, 0x6ED1, 0x05C8, 0x6ED3, + 0x1565, 0x6ED4, 0x156A, 0x6ED5, 0x156B, 0x6ED9, 0x3C38, 0x6EDD, 0x0B4C, + 0x6EDE, 0x0B3A, 0x6EE6, 0x3C24, 0x6EEC, 0x1573, 0x6EEF, 0x1579, 0x6EF2, + 0x1577, 0x6EF4, 0x0C23, 0x6EF7, 0x157E, 0x6EF8, 0x1574, 0x6EFD, 0x3982, + 0x6EFE, 0x1575, 0x6EFF, 0x155D, 0x6F01, 0x0693, 0x6F02, 0x0DAC, 0x6F06, + 0x08EB, 0x6F09, 0x0809, 0x6F0F, 0x0FD9, 0x6F11, 0x1571, 0x6F13, 0x157D, + 0x6F14, 0x050B, 0x6F15, 0x0AE8, 0x6F1A, 0x3983, 0x6F20, 0x0D2F, 0x6F22, + 0x05FD, 0x6F23, 0x0FC2, 0x6F2A, 0x3984, 0x6F2B, 0x0EAD, 0x6F2C, 0x0BEE, + 0x6F2F, 0x3985, 0x6F31, 0x1578, 0x6F32, 0x157A, 0x6F33, 0x3986, 0x6F38, + 0x0AB4, 0x6F3E, 0x157C, 0x6F3F, 0x1576, 0x6F41, 0x1570, 0x6F45, 0x05FF, + 0x6F51, 0x1E60, 0x6F54, 0x073F, 0x6F58, 0x158A, 0x6F5A, 0x3987, 0x6F5B, + 0x1585, 0x6F5C, 0x0A9C, 0x6F5E, 0x3988, 0x6F5F, 0x05C1, 0x6F62, 0x3989, + 0x6F64, 0x096B, 0x6F66, 0x158E, 0x6F6D, 0x1587, 0x6F6E, 0x0BC8, 0x6F6F, + 0x1584, 0x6F70, 0x0BF5, 0x6F74, 0x15A7, 0x6F78, 0x1581, 0x6F7A, 0x1580, + 0x6F7C, 0x1589, 0x6F7D, 0x398A, 0x6F80, 0x1583, 0x6F81, 0x1582, 0x6F82, + 0x1588, 0x6F84, 0x0A45, 0x6F86, 0x157F, 0x6F88, 0x2151, 0x6F8B, 0x398B, + 0x6F8D, 0x398C, 0x6F8E, 0x158B, 0x6F91, 0x158C, 0x6F92, 0x398D, 0x6F94, + 0x398E, 0x6F97, 0x05FE, 0x6F98, 0x363C, 0x6F9A, 0x398F, 0x6FA1, 0x1591, + 0x6FA3, 0x1590, 0x6FA4, 0x1592, 0x6FA7, 0x3990, 0x6FA8, 0x3991, 0x6FAA, + 0x1595, 0x6FB1, 0x0C3D, 0x6FB3, 0x158F, 0x6FB5, 0x2152, 0x6FB6, 0x3992, + 0x6FB9, 0x1593, 0x6FC0, 0x0739, 0x6FC1, 0x0B59, 0x6FC2, 0x158D, 0x6FC3, + 0x0CF1, 0x6FC6, 0x1594, 0x6FD4, 0x1599, 0x6FD5, 0x1597, 0x6FD8, 0x159A, + 0x6FDA, 0x3993, 0x6FDB, 0x159D, 0x6FDE, 0x3994, 0x6FDF, 0x1596, 0x6FE0, + 0x07FC, 0x6FE1, 0x0CDE, 0x6FE4, 0x1536, 0x6FEB, 0x0F5E, 0x6FEC, 0x1598, + 0x6FEE, 0x159C, 0x6FEF, 0x0B55, 0x6FF1, 0x159B, 0x6FF3, 0x1586, 0x6FF5, + 0x2153, 0x6FF6, 0x1BA4, 0x6FF9, 0x3995, 0x6FFA, 0x15A0, 0x6FFE, 0x15A4, + 0x7001, 0x15A2, 0x7005, 0x2154, 0x7006, 0x1E50, 0x7007, 0x2155, 0x7009, + 0x159E, 0x700B, 0x159F, 0x700F, 0x15A3, 0x7011, 0x15A1, 0x7015, 0x0DC0, + 0x7018, 0x15A9, 0x701A, 0x15A6, 0x701B, 0x15A5, 0x701D, 0x15A8, 0x701E, + 0x0CAC, 0x701F, 0x15AA, 0x7026, 0x0BB3, 0x7027, 0x0B4D, 0x7028, 0x2156, + 0x702C, 0x0A49, 0x7030, 0x15AB, 0x7032, 0x15AD, 0x7039, 0x3996, 0x703C, + 0x3997, 0x703E, 0x15AC, 0x704A, 0x3998, 0x704C, 0x1572, 0x7051, 0x15AE, + 0x7054, 0x3999, 0x7058, 0x0CBF, 0x705D, 0x399A, 0x705E, 0x399B, 0x7063, + 0x15AF, 0x7064, 0x399C, 0x706B, 0x0550, 0x706C, 0x399D, 0x706F, 0x0C6E, + 0x7070, 0x0583, 0x7078, 0x067E, 0x707C, 0x090A, 0x707D, 0x0842, 0x707E, + 0x399E, 0x7081, 0x399F, 0x7085, 0x2157, 0x7089, 0x0FCD, 0x708A, 0x0A2C, + 0x708E, 0x050C, 0x7092, 0x15B1, 0x7095, 0x39A0, 0x7099, 0x15B0, 0x70AB, + 0x2158, 0x70AC, 0x15B4, 0x70AD, 0x0B78, 0x70AE, 0x15B7, 0x70AF, 0x15B2, + 0x70B3, 0x15B6, 0x70B7, 0x39A1, 0x70B8, 0x15B5, 0x70B9, 0x0C3A, 0x70BA, + 0x049D, 0x70BB, 0x20AD, 0x70C8, 0x0FBD, 0x70CB, 0x15B9, 0x70CF, 0x04CA, + 0x70D3, 0x39A2, 0x70D4, 0x39A3, 0x70D8, 0x39A4, 0x70D9, 0x15BB, 0x70DC, + 0x39A5, 0x70DD, 0x15BA, 0x70DF, 0x15B8, 0x70F1, 0x15B3, 0x70F9, 0x0E51, + 0x70FD, 0x15BD, 0x7104, 0x215A, 0x7107, 0x39A6, 0x7109, 0x15BC, 0x710F, + 0x2159, 0x7114, 0x050D, 0x7119, 0x15BF, 0x711A, 0x0E02, 0x711C, 0x15BE, + 0x7120, 0x39A7, 0x7121, 0x0EC1, 0x7126, 0x09AF, 0x7130, 0x1DDC, 0x7131, + 0x39A8, 0x7136, 0x0AB5, 0x713C, 0x09AE, 0x7146, 0x215C, 0x7147, 0x215D, + 0x7149, 0x0FC3, 0x714A, 0x39A9, 0x714C, 0x15C5, 0x714E, 0x0A9D, 0x7152, + 0x39AA, 0x7155, 0x15C1, 0x7156, 0x15C6, 0x7159, 0x050E, 0x715C, 0x215B, + 0x7160, 0x39AB, 0x7162, 0x15C4, 0x7164, 0x0D17, 0x7165, 0x15C0, 0x7166, + 0x15C3, 0x7167, 0x09B0, 0x7169, 0x0D65, 0x716C, 0x15C7, 0x716E, 0x08FD, + 0x7179, 0x39AC, 0x717D, 0x0A9E, 0x7184, 0x15CA, 0x7188, 0x15C2, 0x718A, + 0x06FD, 0x718F, 0x15C8, 0x7192, 0x39AD, 0x7194, 0x0F3A, 0x7195, 0x15CB, + 0x7199, 0x205D, 0x719F, 0x0959, 0x71A8, 0x15CC, 0x71AC, 0x15CD, 0x71B1, + 0x0CE4, 0x71B3, 0x39AE, 0x71B9, 0x15CF, 0x71BE, 0x15D0, 0x71C1, 0x215F, + 0x71C3, 0x0CE9, 0x71C8, 0x0C6F, 0x71C9, 0x15D2, 0x71CB, 0x39AF, 0x71CE, + 0x15D4, 0x71D0, 0x0F9D, 0x71D2, 0x15D1, 0x71D3, 0x39B0, 0x71D4, 0x15D3, + 0x71D5, 0x050F, 0x71D6, 0x39B1, 0x71D7, 0x15CE, 0x71DF, 0x114E, 0x71E0, + 0x15D5, 0x71E5, 0x0AE9, 0x71E6, 0x0886, 0x71E7, 0x15D7, 0x71EC, 0x15D6, + 0x71ED, 0x09EA, 0x71EE, 0x10EE, 0x71F5, 0x15D8, 0x71F9, 0x15DA, 0x71FB, + 0x15C9, 0x71FC, 0x15D9, 0x71FE, 0x2160, 0x71FF, 0x15DB, 0x7200, 0x39B2, + 0x7206, 0x0D30, 0x720D, 0x15DC, 0x7210, 0x15DD, 0x721B, 0x15DE, 0x721D, + 0x39B3, 0x7228, 0x15DF, 0x722A, 0x0BFA, 0x722B, 0x39B4, 0x722C, 0x15E1, + 0x722D, 0x15E0, 0x7230, 0x15E2, 0x7232, 0x15E3, 0x7235, 0x090B, 0x7236, + 0x0DD5, 0x7238, 0x39B5, 0x723A, 0x0EF8, 0x723B, 0x15E4, 0x723C, 0x15E5, + 0x723D, 0x0AD8, 0x723E, 0x08D0, 0x723F, 0x15E6, 0x7240, 0x15E7, 0x7241, + 0x39B6, 0x7246, 0x15E8, 0x7247, 0x0E22, 0x7248, 0x0D5B, 0x724B, 0x15E9, + 0x724C, 0x0D0D, 0x7252, 0x0BC9, 0x7253, 0x39B7, 0x7255, 0x39B8, 0x7256, + 0x39B9, 0x7258, 0x15EA, 0x7259, 0x0567, 0x725B, 0x0687, 0x725C, 0x39BA, + 0x725D, 0x0ED2, 0x725F, 0x0EC2, 0x7261, 0x0534, 0x7262, 0x0FDA, 0x7267, + 0x0E80, 0x7269, 0x0DFA, 0x7272, 0x0A5B, 0x7274, 0x15EB, 0x7279, 0x0C9B, + 0x727D, 0x0757, 0x727E, 0x15EC, 0x7280, 0x0844, 0x7281, 0x15EE, 0x7282, + 0x15ED, 0x7287, 0x15EF, 0x728D, 0x39BB, 0x7292, 0x15F0, 0x7296, 0x15F1, + 0x72A0, 0x0658, 0x72A2, 0x15F2, 0x72A7, 0x15F3, 0x72AC, 0x0758, 0x72AD, + 0x39BC, 0x72AF, 0x0D5C, 0x72B1, 0x2161, 0x72B2, 0x15F5, 0x72B4, 0x39BD, + 0x72B6, 0x09DD, 0x72B9, 0x15F4, 0x72BE, 0x2162, 0x72C0, 0x342B, 0x72C2, + 0x06B0, 0x72C3, 0x15F6, 0x72C4, 0x15F8, 0x72C6, 0x15F7, 0x72C7, 0x39BE, + 0x72CE, 0x15F9, 0x72D0, 0x0785, 0x72D2, 0x15FA, 0x72D7, 0x06E1, 0x72D9, + 0x0AC2, 0x72DB, 0x080F, 0x72E0, 0x15FC, 0x72E1, 0x15FD, 0x72E2, 0x15FB, + 0x72E9, 0x0919, 0x72EC, 0x0CA0, 0x72ED, 0x06B1, 0x72F7, 0x15FF, 0x72F8, + 0x0B6A, 0x72F9, 0x15FE, 0x72FB, 0x39BF, 0x72FC, 0x0FDB, 0x72FD, 0x0D18, + 0x7304, 0x39C0, 0x7305, 0x39C1, 0x730A, 0x1602, 0x7316, 0x1604, 0x7317, + 0x1601, 0x731B, 0x0EE0, 0x731C, 0x1603, 0x731D, 0x1605, 0x731F, 0x0F8C, + 0x7324, 0x2163, 0x7325, 0x1609, 0x7328, 0x39C2, 0x7329, 0x1608, 0x732A, + 0x0BB4, 0x732B, 0x0CE3, 0x732E, 0x0759, 0x732F, 0x1607, 0x7331, 0x39C3, + 0x7334, 0x1606, 0x7336, 0x0F1B, 0x7337, 0x0F1C, 0x733E, 0x160A, 0x733F, + 0x0510, 0x7343, 0x39C4, 0x7344, 0x0808, 0x7345, 0x08B0, 0x734E, 0x160B, + 0x734F, 0x160C, 0x7357, 0x160E, 0x7363, 0x094D, 0x7368, 0x1610, 0x736A, + 0x160F, 0x736C, 0x39C5, 0x7370, 0x1611, 0x7372, 0x05AB, 0x7375, 0x1613, + 0x7377, 0x2165, 0x7378, 0x1612, 0x737A, 0x1615, 0x737B, 0x1614, 0x737C, + 0x39C6, 0x7383, 0x39C7, 0x7384, 0x0770, 0x7385, 0x39C8, 0x7386, 0x39C9, + 0x7387, 0x0F70, 0x7389, 0x06C4, 0x738B, 0x0526, 0x7395, 0x39CA, 0x7396, + 0x06E2, 0x739E, 0x39CB, 0x739F, 0x39CC, 0x73A0, 0x39CD, 0x73A6, 0x39CE, + 0x73A8, 0x3C3F, 0x73A9, 0x061D, 0x73AB, 0x39CF, 0x73B2, 0x0FB0, 0x73B3, + 0x1617, 0x73B5, 0x39D0, 0x73B7, 0x39D1, 0x73BA, 0x35EA, 0x73BB, 0x1619, + 0x73BC, 0x39D2, 0x73BD, 0x2166, 0x73C0, 0x161A, 0x73C2, 0x0551, 0x73C8, + 0x1616, 0x73C9, 0x2167, 0x73CA, 0x0887, 0x73CD, 0x0BDD, 0x73CE, 0x1618, + 0x73CF, 0x39D3, 0x73D2, 0x216A, 0x73D6, 0x2168, 0x73D9, 0x39D4, 0x73DE, + 0x161D, 0x73E0, 0x091A, 0x73E3, 0x2169, 0x73E4, 0x3C39, 0x73E5, 0x161B, + 0x73E9, 0x39D5, 0x73EA, 0x0714, 0x73ED, 0x0D5D, 0x73EE, 0x161C, 0x73F1, + 0x1637, 0x73F4, 0x39D6, 0x73F5, 0x216C, 0x73F8, 0x1622, 0x73FD, 0x39D7, + 0x73FE, 0x0771, 0x7403, 0x067F, 0x7404, 0x39D8, 0x7405, 0x161F, 0x7406, + 0x0F67, 0x7407, 0x216B, 0x7409, 0x0F78, 0x740A, 0x39D9, 0x741A, 0x39DA, + 0x741B, 0x39DB, 0x7421, 0x3C3A, 0x7422, 0x0B56, 0x7424, 0x39DC, 0x7425, + 0x1621, 0x7426, 0x216D, 0x7428, 0x39DD, 0x7429, 0x216F, 0x742A, 0x216E, + 0x742C, 0x39DE, 0x742E, 0x2170, 0x742F, 0x39DF, 0x7430, 0x39E0, 0x7431, + 0x39E1, 0x7432, 0x1623, 0x7433, 0x0F9E, 0x7434, 0x06CF, 0x7435, 0x0D90, + 0x7436, 0x0D00, 0x7439, 0x39E2, 0x743A, 0x1624, 0x743F, 0x1626, 0x7441, + 0x1629, 0x7444, 0x39E3, 0x7447, 0x39E4, 0x744B, 0x39E5, 0x744D, 0x39E6, + 0x7451, 0x39E7, 0x7455, 0x1625, 0x7457, 0x39E8, 0x7459, 0x1628, 0x745A, + 0x079E, 0x745B, 0x04EF, 0x745C, 0x162A, 0x745E, 0x0A36, 0x745F, 0x1627, + 0x7460, 0x0FA4, 0x7462, 0x2171, 0x7463, 0x162D, 0x7464, 0x1D35, 0x7466, + 0x39E9, 0x7469, 0x162B, 0x746A, 0x162E, 0x746B, 0x39EA, 0x746F, 0x1620, + 0x7470, 0x162C, 0x7471, 0x39EB, 0x7473, 0x082C, 0x7476, 0x162F, 0x747E, + 0x1630, 0x7480, 0x39EC, 0x7483, 0x0F68, 0x7485, 0x39ED, 0x7486, 0x39EE, + 0x7487, 0x39EF, 0x7489, 0x2172, 0x748B, 0x1631, 0x7490, 0x39F0, 0x7498, + 0x39F1, 0x749C, 0x39F2, 0x749E, 0x1632, 0x749F, 0x2173, 0x74A0, 0x39F3, + 0x74A2, 0x161E, 0x74A3, 0x39F4, 0x74A7, 0x1633, 0x74A8, 0x39F5, 0x74AB, + 0x39F6, 0x74B0, 0x0600, 0x74B5, 0x39F7, 0x74BD, 0x08D1, 0x74BF, 0x39F8, + 0x74C8, 0x39F9, 0x74CA, 0x1634, 0x74CF, 0x1635, 0x74D4, 0x1636, 0x74DA, + 0x39FA, 0x74DC, 0x04DD, 0x74DE, 0x39FB, 0x74E0, 0x1638, 0x74E2, 0x0DAD, + 0x74E3, 0x1639, 0x74E6, 0x05E0, 0x74E7, 0x163A, 0x74E9, 0x163B, 0x74EE, + 0x163C, 0x74EF, 0x3750, 0x74F0, 0x163E, 0x74F1, 0x163F, 0x74F2, 0x163D, + 0x74F6, 0x0DC5, 0x74F7, 0x1641, 0x74F8, 0x1640, 0x7501, 0x2174, 0x7503, + 0x1643, 0x7504, 0x1642, 0x7505, 0x1644, 0x750C, 0x1645, 0x750D, 0x1647, + 0x750E, 0x1646, 0x7511, 0x080B, 0x7513, 0x1649, 0x7515, 0x1648, 0x7518, + 0x0601, 0x751A, 0x0A19, 0x751C, 0x0C36, 0x751E, 0x164A, 0x751F, 0x0A5C, + 0x7522, 0x35DE, 0x7523, 0x0888, 0x7525, 0x051B, 0x7526, 0x164B, 0x7528, + 0x0F3B, 0x752B, 0x0E33, 0x752C, 0x164C, 0x752F, 0x20F2, 0x7530, 0x0C3E, + 0x7531, 0x0F1D, 0x7532, 0x07D5, 0x7533, 0x0A03, 0x7537, 0x0B89, 0x7538, + 0x10C9, 0x753A, 0x0BCA, 0x753B, 0x0568, 0x753C, 0x164D, 0x7544, 0x164E, + 0x7546, 0x1653, 0x7549, 0x1651, 0x754A, 0x1650, 0x754B, 0x13C7, 0x754C, + 0x0584, 0x754D, 0x164F, 0x754E, 0x39FC, 0x754F, 0x049E, 0x7551, 0x0D3E, + 0x7554, 0x0D5E, 0x7559, 0x0F79, 0x755A, 0x1654, 0x755B, 0x1652, 0x755C, + 0x0B9A, 0x755D, 0x0A4A, 0x7560, 0x0D3F, 0x7562, 0x0D9F, 0x7564, 0x1656, + 0x7565, 0x0F74, 0x7566, 0x0723, 0x7567, 0x1657, 0x7569, 0x1655, 0x756A, + 0x0D6A, 0x756B, 0x1658, 0x756C, 0x3C3B, 0x756D, 0x1659, 0x756F, 0x2175, + 0x7570, 0x049F, 0x7573, 0x09DE, 0x7574, 0x165E, 0x7575, 0x3751, 0x7576, + 0x165B, 0x7577, 0x0CC5, 0x7578, 0x165A, 0x7579, 0x39FD, 0x757F, 0x0640, + 0x7581, 0x39FE, 0x7582, 0x1661, 0x7586, 0x165C, 0x7587, 0x165D, 0x7589, + 0x1660, 0x758A, 0x165F, 0x758B, 0x0D97, 0x758E, 0x0AC4, 0x758F, 0x0AC3, + 0x7590, 0x39FF, 0x7591, 0x0659, 0x7592, 0x3A00, 0x7593, 0x3A01, 0x7594, + 0x1662, 0x759A, 0x1663, 0x759D, 0x1664, 0x75A3, 0x1666, 0x75A5, 0x1665, + 0x75AB, 0x04F8, 0x75B1, 0x166E, 0x75B2, 0x0D7C, 0x75B3, 0x1668, 0x75B4, + 0x3A02, 0x75B5, 0x166A, 0x75B8, 0x166C, 0x75B9, 0x0A04, 0x75BC, 0x166D, + 0x75BD, 0x166B, 0x75BE, 0x08EC, 0x75C2, 0x1667, 0x75C3, 0x1669, 0x75C5, + 0x0DB4, 0x75C7, 0x09B1, 0x75CA, 0x1670, 0x75CD, 0x166F, 0x75D2, 0x1671, + 0x75D4, 0x08D2, 0x75D5, 0x081F, 0x75D8, 0x0C71, 0x75D9, 0x1672, 0x75DB, + 0x0BE7, 0x75DE, 0x1674, 0x75E2, 0x0F69, 0x75E3, 0x1673, 0x75E4, 0x3A03, + 0x75E9, 0x0AEB, 0x75EC, 0x3752, 0x75F0, 0x1679, 0x75F2, 0x167B, 0x75F3, + 0x167C, 0x75F4, 0x0B92, 0x75F9, 0x3A04, 0x75FA, 0x167A, 0x75FC, 0x1677, + 0x75FE, 0x1675, 0x75FF, 0x1676, 0x7600, 0x3A05, 0x7601, 0x1678, 0x7609, + 0x167F, 0x760A, 0x3A06, 0x760B, 0x167D, 0x760D, 0x167E, 0x7615, 0x3A07, + 0x7616, 0x3A08, 0x7619, 0x3A09, 0x761E, 0x3A0A, 0x761F, 0x1680, 0x7620, + 0x1682, 0x7621, 0x1683, 0x7622, 0x1684, 0x7624, 0x1685, 0x7626, 0x1E2D, + 0x7627, 0x1681, 0x762D, 0x3A0B, 0x7630, 0x1687, 0x7634, 0x1686, 0x7635, + 0x3A0C, 0x763B, 0x1688, 0x7642, 0x0F8D, 0x7643, 0x3A0D, 0x7646, 0x168B, + 0x7647, 0x1689, 0x7648, 0x168A, 0x764B, 0x3A0E, 0x764C, 0x061E, 0x764E, + 0x3753, 0x7652, 0x0F0A, 0x7656, 0x0E1A, 0x7658, 0x168D, 0x765C, 0x168C, + 0x7661, 0x168E, 0x7662, 0x168F, 0x7665, 0x3A0F, 0x7667, 0x1693, 0x7668, + 0x1690, 0x7669, 0x1691, 0x766A, 0x1692, 0x766C, 0x1694, 0x766D, 0x3A10, + 0x766F, 0x3A11, 0x7670, 0x1695, 0x7671, 0x3A12, 0x7672, 0x1696, 0x7674, + 0x3A13, 0x7676, 0x1697, 0x7678, 0x1698, 0x767A, 0x0D43, 0x767B, 0x0C4A, + 0x767C, 0x1699, 0x767D, 0x0D28, 0x767E, 0x0DA6, 0x7680, 0x169A, 0x7682, + 0x2176, 0x7683, 0x169B, 0x7684, 0x0C24, 0x7686, 0x0585, 0x7687, 0x07D6, + 0x7688, 0x169C, 0x768B, 0x169D, 0x768E, 0x169E, 0x7690, 0x0877, 0x7693, + 0x16A0, 0x7696, 0x169F, 0x7699, 0x16A1, 0x769A, 0x16A2, 0x769B, 0x2179, + 0x769C, 0x2177, 0x769E, 0x2178, 0x76A4, 0x3A14, 0x76A5, 0x3A15, 0x76A6, + 0x217A, 0x76AE, 0x0D7D, 0x76B0, 0x16A3, 0x76B4, 0x16A4, 0x76B7, 0x1D1C, + 0x76B8, 0x16A5, 0x76B9, 0x16A6, 0x76BA, 0x16A7, 0x76BF, 0x087C, 0x76C2, + 0x16A8, 0x76C3, 0x0D0C, 0x76C5, 0x3A16, 0x76C6, 0x0E8D, 0x76C8, 0x04F0, + 0x76CA, 0x04F9, 0x76CC, 0x3A17, 0x76CD, 0x16A9, 0x76D2, 0x16AB, 0x76D6, + 0x16AA, 0x76D7, 0x0C6A, 0x76DB, 0x0A5D, 0x76DC, 0x14D8, 0x76DE, 0x16AC, + 0x76DF, 0x0ECD, 0x76E1, 0x16AD, 0x76E3, 0x0602, 0x76E4, 0x0D6B, 0x76E5, + 0x16AE, 0x76E7, 0x16AF, 0x76EA, 0x16B0, 0x76EC, 0x3A18, 0x76EE, 0x0EE8, + 0x76F2, 0x0EE1, 0x76F4, 0x0BDA, 0x76F8, 0x0AEC, 0x76FB, 0x16B2, 0x76FC, + 0x3A19, 0x76FE, 0x096C, 0x7701, 0x09B2, 0x7704, 0x16B5, 0x7707, 0x16B4, + 0x7708, 0x16B3, 0x7709, 0x0D91, 0x770B, 0x0603, 0x770C, 0x075D, 0x771B, + 0x16BB, 0x771E, 0x16B8, 0x771F, 0x0A05, 0x7720, 0x0EBE, 0x7724, 0x16B7, + 0x7725, 0x16B9, 0x7726, 0x16BA, 0x7729, 0x16B6, 0x7734, 0x3A1A, 0x7736, + 0x3A1B, 0x7737, 0x16BC, 0x7738, 0x16BD, 0x773A, 0x0BCB, 0x773C, 0x061F, + 0x7740, 0x0BA3, 0x7746, 0x217C, 0x7747, 0x16BE, 0x775A, 0x16BF, 0x775B, + 0x16C2, 0x775C, 0x3A1C, 0x775F, 0x3A1D, 0x7760, 0x3A1E, 0x7761, 0x0A2D, + 0x7762, 0x1EC5, 0x7763, 0x0C9C, 0x7765, 0x16C3, 0x7766, 0x0E81, 0x7768, + 0x16C0, 0x776A, 0x3755, 0x776B, 0x16C1, 0x7772, 0x3A1F, 0x7779, 0x16C6, + 0x777D, 0x3A20, 0x777E, 0x16C5, 0x777F, 0x16C4, 0x778B, 0x16C8, 0x778E, + 0x16C7, 0x7791, 0x16C9, 0x7795, 0x3A21, 0x779E, 0x16CB, 0x77A0, 0x16CA, + 0x77A5, 0x0E1D, 0x77A9, 0x3756, 0x77AA, 0x3A22, 0x77AC, 0x0960, 0x77AD, + 0x0F8E, 0x77B0, 0x16CC, 0x77B3, 0x0C8F, 0x77B6, 0x16CD, 0x77B9, 0x16CE, + 0x77BB, 0x16D2, 0x77BC, 0x16D0, 0x77BD, 0x16D1, 0x77BF, 0x16CF, 0x77C7, + 0x16D3, 0x77CD, 0x16D4, 0x77D7, 0x16D5, 0x77DA, 0x16D6, 0x77DB, 0x0EC3, + 0x77DC, 0x16D7, 0x77E2, 0x0EFC, 0x77E3, 0x16D8, 0x77E5, 0x0B8C, 0x77E6, + 0x3A23, 0x77E7, 0x0D20, 0x77E9, 0x06E3, 0x77ED, 0x0B79, 0x77EE, 0x16D9, + 0x77EF, 0x06B2, 0x77F0, 0x3A24, 0x77F3, 0x0A74, 0x77F4, 0x3A25, 0x77FC, + 0x16DA, 0x7802, 0x082D, 0x7806, 0x3A26, 0x780C, 0x16DB, 0x7812, 0x16DC, + 0x7814, 0x075A, 0x7815, 0x0845, 0x7820, 0x16DE, 0x7821, 0x217E, 0x7822, + 0x3A27, 0x7825, 0x0C50, 0x7826, 0x0846, 0x7827, 0x0668, 0x782D, 0x3A28, + 0x782E, 0x3A29, 0x7830, 0x3A2A, 0x7832, 0x0E52, 0x7834, 0x0D01, 0x7835, + 0x3A2B, 0x783A, 0x0C51, 0x783F, 0x07EE, 0x7845, 0x16E0, 0x784E, 0x217F, + 0x784F, 0x341E, 0x7851, 0x3C3C, 0x785D, 0x09B3, 0x7864, 0x2180, 0x7868, + 0x3A2C, 0x786B, 0x0F7A, 0x786C, 0x07D7, 0x786F, 0x075B, 0x7872, 0x0D37, + 0x7874, 0x16E2, 0x787A, 0x2181, 0x787C, 0x16E4, 0x7881, 0x079F, 0x7886, + 0x16E3, 0x7887, 0x0C12, 0x788C, 0x16E6, 0x788D, 0x0595, 0x788E, 0x16E1, + 0x7891, 0x0D7E, 0x7893, 0x04D2, 0x7895, 0x085C, 0x7897, 0x0FF8, 0x789A, + 0x16E5, 0x789E, 0x3A2D, 0x78A3, 0x16E7, 0x78A7, 0x0E1B, 0x78A9, 0x0A7D, + 0x78AA, 0x16E9, 0x78AF, 0x16EA, 0x78B5, 0x16E8, 0x78BA, 0x05AC, 0x78BC, + 0x16F0, 0x78BE, 0x16EF, 0x78C1, 0x08D3, 0x78C5, 0x16F1, 0x78C6, 0x16EC, + 0x78C8, 0x3A2E, 0x78CA, 0x16F2, 0x78CB, 0x16ED, 0x78CC, 0x3A2F, 0x78CE, + 0x3A30, 0x78D0, 0x0D6C, 0x78D1, 0x16EB, 0x78D4, 0x16EE, 0x78DA, 0x16F5, + 0x78E0, 0x3A32, 0x78E1, 0x3A33, 0x78E4, 0x3A31, 0x78E7, 0x16F4, 0x78E8, + 0x0E8F, 0x78EC, 0x16F3, 0x78EF, 0x04AF, 0x78F2, 0x3A34, 0x78F4, 0x16F7, + 0x78F7, 0x3A35, 0x78FB, 0x3A36, 0x78FD, 0x16F6, 0x7901, 0x09B4, 0x7907, + 0x16F8, 0x790E, 0x0AC5, 0x7911, 0x16FA, 0x7912, 0x16F9, 0x7919, 0x16FB, + 0x7926, 0x16DD, 0x792A, 0x16DF, 0x792B, 0x16FD, 0x792C, 0x16FC, 0x7930, + 0x2182, 0x7931, 0x3A37, 0x7934, 0x3A38, 0x793A, 0x08D4, 0x793B, 0x3A39, + 0x793C, 0x0FB1, 0x793D, 0x3A3A, 0x793E, 0x08FE, 0x7940, 0x16FE, 0x7941, + 0x070D, 0x7945, 0x3A3B, 0x7947, 0x065A, 0x7948, 0x0641, 0x7949, 0x08B1, + 0x7950, 0x0F1E, 0x7953, 0x1704, 0x7955, 0x1703, 0x7956, 0x0AC6, 0x7957, + 0x1700, 0x795A, 0x1702, 0x795B, 0x3A3C, 0x795C, 0x3A3D, 0x795D, 0x0955, + 0x795E, 0x0A06, 0x795F, 0x1701, 0x7960, 0x16FF, 0x7962, 0x0CE0, 0x7965, + 0x09B5, 0x7968, 0x0DAE, 0x796D, 0x0847, 0x7977, 0x0C72, 0x797A, 0x1705, + 0x797F, 0x1706, 0x7980, 0x171C, 0x7981, 0x06D0, 0x7984, 0x0FE3, 0x7985, + 0x0AB7, 0x798A, 0x1707, 0x798B, 0x3A3E, 0x798D, 0x0552, 0x798E, 0x0C13, + 0x798F, 0x0DF1, 0x7994, 0x2186, 0x7996, 0x3A3F, 0x7998, 0x3A40, 0x799B, + 0x2188, 0x799D, 0x1708, 0x79A6, 0x0694, 0x79A7, 0x1709, 0x79AA, 0x170B, + 0x79AE, 0x170C, 0x79B0, 0x0CDF, 0x79B1, 0x1E4E, 0x79B3, 0x170D, 0x79B8, + 0x3A41, 0x79B9, 0x170E, 0x79BA, 0x170F, 0x79BB, 0x3A42, 0x79BD, 0x06D1, + 0x79BE, 0x0553, 0x79BF, 0x0C9D, 0x79C0, 0x0932, 0x79C1, 0x08B2, 0x79C9, + 0x1710, 0x79CA, 0x3A43, 0x79CB, 0x0933, 0x79D1, 0x054A, 0x79D2, 0x0DB5, + 0x79D5, 0x1711, 0x79D8, 0x0D7F, 0x79DA, 0x3A44, 0x79DF, 0x0AC7, 0x79E1, + 0x1714, 0x79E3, 0x1715, 0x79E4, 0x0D1F, 0x79E6, 0x0A07, 0x79E7, 0x1712, + 0x79E9, 0x0B9F, 0x79EC, 0x1713, 0x79F0, 0x09B6, 0x79FB, 0x04A0, 0x7A00, + 0x0643, 0x7A03, 0x3A45, 0x7A05, 0x3633, 0x7A08, 0x1716, 0x7A09, 0x3A46, + 0x7A0B, 0x0C14, 0x7A0D, 0x1717, 0x7A0E, 0x0A6B, 0x7A11, 0x3A47, 0x7A14, + 0x0EB9, 0x7A17, 0x0D95, 0x7A18, 0x1718, 0x7A19, 0x1719, 0x7A1A, 0x0B93, + 0x7A1C, 0x0F8F, 0x7A1E, 0x3A48, 0x7A1F, 0x171B, 0x7A20, 0x171A, 0x7A2D, + 0x3A49, 0x7A2E, 0x091B, 0x7A31, 0x171D, 0x7A32, 0x04B4, 0x7A37, 0x1720, + 0x7A39, 0x3A4A, 0x7A3B, 0x171E, 0x7A3C, 0x0554, 0x7A3D, 0x0724, 0x7A3E, + 0x171F, 0x7A3F, 0x07D8, 0x7A40, 0x0804, 0x7A42, 0x0E36, 0x7A43, 0x1721, + 0x7A45, 0x3A4B, 0x7A46, 0x0E82, 0x7A49, 0x1723, 0x7A4C, 0x3A4C, 0x7A4D, + 0x0A75, 0x7A4E, 0x04F1, 0x7A4F, 0x053A, 0x7A50, 0x0470, 0x7A57, 0x1722, + 0x7A5D, 0x3A4D, 0x7A60, 0x3A4E, 0x7A61, 0x1724, 0x7A62, 0x1725, 0x7A63, + 0x09DF, 0x7A69, 0x1726, 0x7A6B, 0x05AD, 0x7A6D, 0x3A4F, 0x7A70, 0x1728, + 0x7A74, 0x0740, 0x7A76, 0x0680, 0x7A78, 0x3A50, 0x7A79, 0x1729, 0x7A7A, + 0x06ED, 0x7A7D, 0x172A, 0x7A7F, 0x0AA0, 0x7A81, 0x0CA5, 0x7A83, 0x0A84, + 0x7A84, 0x0865, 0x7A88, 0x172B, 0x7A92, 0x0BA0, 0x7A93, 0x0AED, 0x7A95, + 0x172D, 0x7A96, 0x172F, 0x7A97, 0x172C, 0x7A98, 0x172E, 0x7A9F, 0x06F8, + 0x7AA0, 0x3A51, 0x7AA3, 0x3A52, 0x7AA9, 0x1730, 0x7AAA, 0x06FC, 0x7AAE, + 0x0681, 0x7AAF, 0x0F3C, 0x7AB0, 0x1732, 0x7AB3, 0x3A53, 0x7AB6, 0x1733, + 0x7ABA, 0x04D0, 0x7ABB, 0x3A54, 0x7ABC, 0x3A55, 0x7ABF, 0x1736, 0x7AC3, + 0x05D4, 0x7AC4, 0x1735, 0x7AC5, 0x1734, 0x7AC6, 0x3A56, 0x7AC7, 0x1738, + 0x7AC8, 0x1731, 0x7ACA, 0x1739, 0x7ACB, 0x0F71, 0x7ACD, 0x173A, 0x7ACF, + 0x173B, 0x7AD1, 0x2189, 0x7AD2, 0x11C5, 0x7AD3, 0x173D, 0x7AD5, 0x173C, + 0x7AD9, 0x173E, 0x7ADA, 0x173F, 0x7ADC, 0x0F7D, 0x7ADD, 0x1740, 0x7ADF, + 0x1C08, 0x7AE0, 0x09B7, 0x7AE1, 0x1741, 0x7AE2, 0x1742, 0x7AE3, 0x0961, + 0x7AE5, 0x0C90, 0x7AE6, 0x1743, 0x7AE7, 0x218A, 0x7AEA, 0x0B66, 0x7AEB, + 0x218C, 0x7AED, 0x1744, 0x7AEF, 0x0B7A, 0x7AF0, 0x1745, 0x7AF6, 0x069D, + 0x7AF8, 0x1076, 0x7AF9, 0x0B9B, 0x7AFA, 0x08DF, 0x7AFF, 0x0604, 0x7B02, + 0x1746, 0x7B04, 0x1753, 0x7B06, 0x1749, 0x7B07, 0x3A57, 0x7B08, 0x0682, + 0x7B0A, 0x1748, 0x7B0B, 0x1755, 0x7B0F, 0x1747, 0x7B11, 0x09B8, 0x7B14, + 0x3A58, 0x7B18, 0x174B, 0x7B19, 0x174C, 0x7B1B, 0x0C25, 0x7B1E, 0x174D, + 0x7B20, 0x05BC, 0x7B25, 0x0A20, 0x7B26, 0x0DD6, 0x7B27, 0x3A59, 0x7B28, + 0x174F, 0x7B2C, 0x0B48, 0x7B31, 0x3A5A, 0x7B33, 0x174A, 0x7B35, 0x174E, + 0x7B36, 0x1750, 0x7B39, 0x086B, 0x7B45, 0x1757, 0x7B46, 0x0DA0, 0x7B47, + 0x3A5B, 0x7B48, 0x0D3A, 0x7B49, 0x0C73, 0x7B4B, 0x06D2, 0x7B4C, 0x1756, + 0x7B4D, 0x1754, 0x7B4E, 0x3A5C, 0x7B4F, 0x0D49, 0x7B50, 0x1751, 0x7B51, + 0x0B9C, 0x7B52, 0x0C75, 0x7B53, 0x375D, 0x7B54, 0x0C74, 0x7B56, 0x0866, + 0x7B5D, 0x1769, 0x7B60, 0x3A5D, 0x7B65, 0x1759, 0x7B67, 0x175B, 0x7B69, + 0x3A5E, 0x7B6C, 0x175E, 0x7B6D, 0x3A5F, 0x7B6E, 0x175F, 0x7B70, 0x175C, + 0x7B71, 0x175D, 0x7B72, 0x3A60, 0x7B74, 0x175A, 0x7B75, 0x1758, 0x7B7A, + 0x1752, 0x7B86, 0x0E1F, 0x7B87, 0x0555, 0x7B8B, 0x1766, 0x7B8D, 0x1763, + 0x7B8F, 0x1768, 0x7B91, 0x3A61, 0x7B92, 0x1767, 0x7B94, 0x0D29, 0x7B95, + 0x0EB3, 0x7B97, 0x0889, 0x7B98, 0x1761, 0x7B99, 0x176A, 0x7B9A, 0x1765, + 0x7B9C, 0x1764, 0x7B9D, 0x1760, 0x7B9E, 0x218D, 0x7B9F, 0x1762, 0x7BA1, + 0x0605, 0x7BAA, 0x0B7B, 0x7BAD, 0x0AA1, 0x7BAF, 0x3A62, 0x7BB1, 0x0D36, + 0x7BB4, 0x176F, 0x7BB8, 0x0D38, 0x7BC0, 0x0A85, 0x7BC1, 0x176C, 0x7BC4, + 0x0D63, 0x7BC6, 0x1770, 0x7BC7, 0x0E23, 0x7BC9, 0x0B99, 0x7BCB, 0x176B, + 0x7BCC, 0x176D, 0x7BCF, 0x176E, 0x7BD7, 0x3A63, 0x7BD9, 0x3A64, 0x7BDD, + 0x1771, 0x7BE0, 0x08F0, 0x7BE4, 0x0C9E, 0x7BE5, 0x1776, 0x7BE6, 0x1775, + 0x7BE9, 0x1772, 0x7BED, 0x0FDC, 0x7BF3, 0x177B, 0x7BF6, 0x177F, 0x7BF7, + 0x177C, 0x7C00, 0x1778, 0x7C07, 0x1779, 0x7C0B, 0x3A65, 0x7C0D, 0x177E, + 0x7C0F, 0x3A66, 0x7C11, 0x1773, 0x7C12, 0x10EA, 0x7C13, 0x177A, 0x7C14, + 0x1774, 0x7C17, 0x177D, 0x7C1E, 0x1E3B, 0x7C1F, 0x1783, 0x7C20, 0x3A67, + 0x7C21, 0x0606, 0x7C23, 0x1780, 0x7C26, 0x3A68, 0x7C27, 0x1781, 0x7C2A, + 0x1782, 0x7C2B, 0x1785, 0x7C31, 0x3A69, 0x7C36, 0x3A6A, 0x7C37, 0x1784, + 0x7C38, 0x0D8A, 0x7C3D, 0x1786, 0x7C3E, 0x0FC4, 0x7C3F, 0x0E3D, 0x7C40, + 0x178B, 0x7C43, 0x1788, 0x7C4C, 0x1787, 0x7C4D, 0x0A76, 0x7C4F, 0x178A, + 0x7C50, 0x178C, 0x7C51, 0x3A6B, 0x7C54, 0x1789, 0x7C56, 0x1790, 0x7C58, + 0x178D, 0x7C59, 0x3A6C, 0x7C5F, 0x178E, 0x7C60, 0x1777, 0x7C64, 0x178F, + 0x7C65, 0x1791, 0x7C67, 0x3A6D, 0x7C6C, 0x1792, 0x7C6E, 0x3A6E, 0x7C70, + 0x3A6F, 0x7C73, 0x0E16, 0x7C75, 0x1793, 0x7C7B, 0x370E, 0x7C7E, 0x0EEE, + 0x7C81, 0x06C6, 0x7C82, 0x06FF, 0x7C83, 0x1794, 0x7C89, 0x0E04, 0x7C8B, + 0x0A2E, 0x7C8D, 0x0EBC, 0x7C90, 0x1795, 0x7C92, 0x0F7B, 0x7C95, 0x0D2A, + 0x7C97, 0x0AC8, 0x7C98, 0x0CEA, 0x7C9B, 0x0957, 0x7C9F, 0x0484, 0x7CA1, + 0x179A, 0x7CA2, 0x1798, 0x7CA4, 0x1796, 0x7CA5, 0x05DD, 0x7CA7, 0x09B9, + 0x7CA8, 0x179B, 0x7CAB, 0x1799, 0x7CAD, 0x1797, 0x7CAE, 0x179F, 0x7CB1, + 0x179E, 0x7CB2, 0x179D, 0x7CB3, 0x179C, 0x7CB9, 0x17A0, 0x7CBC, 0x3A70, + 0x7CBD, 0x17A1, 0x7CBE, 0x0A5E, 0x7CBF, 0x3A71, 0x7CC0, 0x17A2, 0x7CC2, + 0x17A4, 0x7CC5, 0x17A3, 0x7CC8, 0x3A72, 0x7CC9, 0x3A73, 0x7CCA, 0x0786, + 0x7CCE, 0x0ABA, 0x7CD2, 0x17A6, 0x7CD6, 0x0C76, 0x7CD7, 0x3A74, 0x7CD8, + 0x17A5, 0x7CD9, 0x3A75, 0x7CDC, 0x17A7, 0x7CDD, 0x3A76, 0x7CDE, 0x0E05, + 0x7CDF, 0x0AEE, 0x7CE0, 0x07D9, 0x7CE2, 0x17A8, 0x7CE7, 0x0F90, 0x7CEB, + 0x3A77, 0x7CEF, 0x17AA, 0x7CF2, 0x17AB, 0x7CF4, 0x17AC, 0x7CF6, 0x17AD, + 0x7CF8, 0x08B3, 0x7CFA, 0x17AE, 0x7CFB, 0x0725, 0x7CFE, 0x0684, 0x7D00, + 0x0644, 0x7D02, 0x17B0, 0x7D04, 0x0EFF, 0x7D05, 0x07DA, 0x7D06, 0x17AF, + 0x7D07, 0x3A78, 0x7D08, 0x3A79, 0x7D09, 0x3A7A, 0x7D0A, 0x17B3, 0x7D0B, + 0x0EF2, 0x7D0D, 0x0CF2, 0x7D10, 0x0DA5, 0x7D13, 0x3A7B, 0x7D14, 0x096D, + 0x7D15, 0x17B2, 0x7D17, 0x08FF, 0x7D18, 0x07DB, 0x7D19, 0x08B4, 0x7D1A, + 0x0683, 0x7D1B, 0x0E06, 0x7D1C, 0x17B1, 0x7D1D, 0x3A7C, 0x7D20, 0x0AC9, + 0x7D21, 0x0E70, 0x7D22, 0x0867, 0x7D23, 0x3A7D, 0x7D2B, 0x08B5, 0x7D2C, + 0x0BF9, 0x7D2E, 0x17B6, 0x7D2F, 0x0FA7, 0x7D30, 0x0849, 0x7D32, 0x17B7, + 0x7D33, 0x0A08, 0x7D35, 0x17B9, 0x7D39, 0x09BA, 0x7D3A, 0x0820, 0x7D3F, + 0x17B8, 0x7D41, 0x3A7E, 0x7D42, 0x0934, 0x7D43, 0x0772, 0x7D44, 0x0ACA, + 0x7D45, 0x17B4, 0x7D46, 0x17BA, 0x7D48, 0x218F, 0x7D4B, 0x17B5, 0x7D4C, + 0x0726, 0x7D4E, 0x17BD, 0x7D4F, 0x17C1, 0x7D50, 0x0741, 0x7D53, 0x3A7F, + 0x7D56, 0x17BC, 0x7D59, 0x3A80, 0x7D5B, 0x17C5, 0x7D5C, 0x2190, 0x7D5D, + 0x3A81, 0x7D5E, 0x07DC, 0x7D61, 0x0F57, 0x7D62, 0x0480, 0x7D63, 0x17C2, + 0x7D66, 0x0685, 0x7D68, 0x17BF, 0x7D6E, 0x17C0, 0x7D71, 0x0C77, 0x7D72, + 0x17BE, 0x7D73, 0x17BB, 0x7D75, 0x0586, 0x7D76, 0x0A88, 0x7D79, 0x075C, + 0x7D7A, 0x3A82, 0x7D7D, 0x17C7, 0x7D86, 0x3A83, 0x7D89, 0x17C4, 0x7D8B, + 0x3A84, 0x7D8C, 0x3A85, 0x7D8F, 0x17C6, 0x7D93, 0x17C3, 0x7D99, 0x0727, + 0x7D9A, 0x0B13, 0x7D9B, 0x17C8, 0x7D9C, 0x0AF0, 0x7D9F, 0x17D5, 0x7DA0, + 0x2192, 0x7DA2, 0x17D1, 0x7DA3, 0x17CB, 0x7DAB, 0x17CF, 0x7DAC, 0x0926, + 0x7DAD, 0x04A1, 0x7DAE, 0x17CA, 0x7DAF, 0x17D2, 0x7DB0, 0x17D6, 0x7DB1, + 0x07DD, 0x7DB2, 0x0EE2, 0x7DB4, 0x0BF2, 0x7DB5, 0x17CC, 0x7DB7, 0x2191, + 0x7DB8, 0x17D4, 0x7DBA, 0x17C9, 0x7DBB, 0x0B7C, 0x7DBD, 0x17CE, 0x7DBE, + 0x0481, 0x7DBF, 0x0ED6, 0x7DC7, 0x17CD, 0x7DCA, 0x06D3, 0x7DCB, 0x0D80, + 0x7DCC, 0x3A86, 0x7DCF, 0x0AEF, 0x7DD1, 0x0F98, 0x7DD2, 0x0979, 0x7DD5, + 0x17FD, 0x7DD6, 0x2193, 0x7DD8, 0x17D7, 0x7DDA, 0x0AA2, 0x7DDC, 0x17D3, + 0x7DDD, 0x17D8, 0x7DDE, 0x17DA, 0x7DE0, 0x0C15, 0x7DE1, 0x17DD, 0x7DE3, + 0x340A, 0x7DE4, 0x17D9, 0x7DE8, 0x0E24, 0x7DE9, 0x0607, 0x7DEB, 0x3A87, + 0x7DEC, 0x0ED7, 0x7DEF, 0x04A2, 0x7DF1, 0x3A88, 0x7DF2, 0x17DC, 0x7DF4, + 0x0FC5, 0x7DF9, 0x3A89, 0x7DFB, 0x17DB, 0x7E01, 0x0511, 0x7E04, 0x0CC4, + 0x7E05, 0x17DE, 0x7E08, 0x3A8A, 0x7E09, 0x17E5, 0x7E0A, 0x17DF, 0x7E0B, + 0x17E6, 0x7E11, 0x3A8B, 0x7E12, 0x17E2, 0x7E15, 0x3A8C, 0x7E1B, 0x0D31, + 0x7E1E, 0x08F6, 0x7E1F, 0x17E4, 0x7E20, 0x3A8D, 0x7E21, 0x17E1, 0x7E22, + 0x17E7, 0x7E23, 0x17E0, 0x7E26, 0x094E, 0x7E2B, 0x0E53, 0x7E2E, 0x0956, + 0x7E31, 0x17E3, 0x7E32, 0x17EF, 0x7E35, 0x17EB, 0x7E37, 0x17EE, 0x7E39, + 0x17EC, 0x7E3A, 0x17F0, 0x7E3B, 0x17EA, 0x7E3D, 0x17D0, 0x7E3E, 0x0A77, + 0x7E41, 0x0D5F, 0x7E43, 0x17ED, 0x7E46, 0x17E8, 0x7E47, 0x3A8E, 0x7E48, + 0x3767, 0x7E4A, 0x0AA3, 0x7E4B, 0x0728, 0x7E4D, 0x0935, 0x7E52, 0x2194, + 0x7E54, 0x09EB, 0x7E55, 0x0AB8, 0x7E56, 0x17F3, 0x7E59, 0x17F5, 0x7E5A, + 0x17F6, 0x7E5D, 0x17F2, 0x7E5E, 0x17F4, 0x7E61, 0x1E11, 0x7E62, 0x3A8F, + 0x7E66, 0x17E9, 0x7E67, 0x17F1, 0x7E69, 0x17F9, 0x7E6A, 0x17F8, 0x7E6B, + 0x1DF7, 0x7E6D, 0x0EA8, 0x7E6E, 0x3A90, 0x7E70, 0x0701, 0x7E73, 0x3A91, + 0x7E79, 0x17F7, 0x7E7B, 0x17FB, 0x7E7C, 0x17FA, 0x7E7D, 0x17FE, 0x7E7F, + 0x1800, 0x7E82, 0x088A, 0x7E83, 0x17FC, 0x7E88, 0x1801, 0x7E89, 0x1802, + 0x7E8A, 0x20A7, 0x7E8C, 0x1803, 0x7E8D, 0x3A92, 0x7E8E, 0x1809, 0x7E8F, + 0x0C35, 0x7E90, 0x1805, 0x7E91, 0x3A93, 0x7E92, 0x1804, 0x7E93, 0x1806, + 0x7E94, 0x1807, 0x7E96, 0x1808, 0x7E98, 0x3A94, 0x7E9B, 0x180A, 0x7E9C, + 0x180B, 0x7F36, 0x0608, 0x7F38, 0x180C, 0x7F3A, 0x180D, 0x7F44, 0x3A95, + 0x7F45, 0x180E, 0x7F47, 0x2195, 0x7F4C, 0x180F, 0x7F4D, 0x1810, 0x7F4E, + 0x1811, 0x7F4F, 0x3A96, 0x7F50, 0x1812, 0x7F51, 0x1813, 0x7F52, 0x3A97, + 0x7F53, 0x3A98, 0x7F54, 0x1815, 0x7F55, 0x1814, 0x7F58, 0x1816, 0x7F5F, + 0x1817, 0x7F60, 0x1818, 0x7F61, 0x3A99, 0x7F67, 0x181B, 0x7F68, 0x1819, + 0x7F69, 0x181A, 0x7F6A, 0x0851, 0x7F6B, 0x0729, 0x7F6E, 0x0B94, 0x7F70, + 0x0D47, 0x7F72, 0x097A, 0x7F75, 0x0D03, 0x7F77, 0x0D81, 0x7F78, 0x181C, + 0x7F79, 0x1336, 0x7F82, 0x181D, 0x7F83, 0x181F, 0x7F85, 0x0F4F, 0x7F86, + 0x181E, 0x7F87, 0x1821, 0x7F88, 0x1820, 0x7F8A, 0x0F3D, 0x7F8C, 0x1822, + 0x7F8E, 0x0D92, 0x7F91, 0x3A9A, 0x7F94, 0x1823, 0x7F9A, 0x1826, 0x7F9D, + 0x1825, 0x7F9E, 0x1824, 0x7FA1, 0x2196, 0x7FA3, 0x1827, 0x7FA4, 0x0708, + 0x7FA8, 0x0AA4, 0x7FA9, 0x065B, 0x7FAE, 0x182B, 0x7FAF, 0x1828, 0x7FB2, + 0x1829, 0x7FB6, 0x182C, 0x7FB8, 0x182D, 0x7FB9, 0x182A, 0x7FBD, 0x04CB, + 0x7FBF, 0x3A9B, 0x7FC1, 0x0527, 0x7FC5, 0x182F, 0x7FC6, 0x1830, 0x7FCA, + 0x1831, 0x7FCC, 0x0F4C, 0x7FCE, 0x3A9C, 0x7FD2, 0x0936, 0x7FD4, 0x1833, + 0x7FD5, 0x1832, 0x7FDF, 0x3A9D, 0x7FE0, 0x0A2F, 0x7FE1, 0x1834, 0x7FE5, + 0x3A9E, 0x7FE6, 0x1835, 0x7FE9, 0x1836, 0x7FEB, 0x0621, 0x7FEC, 0x3A9F, + 0x7FEE, 0x3AA0, 0x7FEF, 0x3AA1, 0x7FF0, 0x0609, 0x7FF3, 0x1837, 0x7FF9, + 0x1838, 0x7FFA, 0x3AA2, 0x7FFB, 0x0E8B, 0x7FFC, 0x0F4D, 0x8000, 0x0F3E, + 0x8001, 0x0FDD, 0x8002, 0x3713, 0x8003, 0x07DF, 0x8004, 0x183B, 0x8005, + 0x0900, 0x8006, 0x183A, 0x800B, 0x183C, 0x800C, 0x08D5, 0x800E, 0x3AA3, + 0x8010, 0x0B31, 0x8011, 0x3AA4, 0x8012, 0x183D, 0x8014, 0x3AA5, 0x8015, + 0x07DE, 0x8017, 0x0EE3, 0x8018, 0x183E, 0x8019, 0x183F, 0x801C, 0x1840, + 0x8021, 0x1841, 0x8024, 0x3AA6, 0x8026, 0x3AA7, 0x8028, 0x1842, 0x8033, + 0x08D6, 0x8036, 0x0EF9, 0x803A, 0x3AA8, 0x803B, 0x1844, 0x803C, 0x3AA9, + 0x803D, 0x0B7D, 0x803F, 0x1843, 0x8046, 0x1846, 0x804A, 0x1845, 0x8052, + 0x1847, 0x8056, 0x0A5F, 0x8058, 0x1848, 0x805A, 0x1849, 0x805E, 0x0E09, + 0x805F, 0x184A, 0x8060, 0x3AAA, 0x8061, 0x0AF1, 0x8062, 0x184B, 0x8068, + 0x184C, 0x806F, 0x0FC6, 0x8070, 0x184F, 0x8071, 0x3AAB, 0x8072, 0x184E, + 0x8073, 0x184D, 0x8074, 0x0BCC, 0x8075, 0x3AAC, 0x8076, 0x1850, 0x8077, + 0x09EC, 0x8079, 0x1851, 0x807D, 0x1852, 0x807E, 0x0FDE, 0x807F, 0x1853, + 0x8084, 0x1854, 0x8085, 0x1856, 0x8086, 0x1855, 0x8087, 0x0D39, 0x8089, + 0x0CD1, 0x808B, 0x0FE4, 0x808C, 0x0D3D, 0x8093, 0x1858, 0x8096, 0x09BB, + 0x8098, 0x0D9C, 0x809A, 0x1859, 0x809B, 0x1857, 0x809D, 0x060A, 0x809E, + 0x3AAD, 0x80A1, 0x0788, 0x80A2, 0x08B6, 0x80A5, 0x0D82, 0x80A6, 0x3AAE, + 0x80A9, 0x075E, 0x80AA, 0x0E71, 0x80AB, 0x3AAF, 0x80AC, 0x185C, 0x80AD, + 0x185A, 0x80AF, 0x07E0, 0x80B1, 0x07E1, 0x80B2, 0x04AD, 0x80B4, 0x0858, + 0x80BA, 0x0D0F, 0x80C3, 0x04A3, 0x80C4, 0x1861, 0x80C6, 0x0B7E, 0x80CC, + 0x0D0E, 0x80CE, 0x0B3B, 0x80D6, 0x1863, 0x80D7, 0x3AB0, 0x80D8, 0x3AB1, + 0x80D9, 0x185F, 0x80DA, 0x1862, 0x80DB, 0x185D, 0x80DD, 0x1860, 0x80DE, + 0x0E54, 0x80E1, 0x0789, 0x80E4, 0x04C1, 0x80E5, 0x185E, 0x80EF, 0x1865, + 0x80F1, 0x1866, 0x80F4, 0x0C91, 0x80F8, 0x06B3, 0x80FC, 0x1871, 0x80FD, + 0x0CF3, 0x8102, 0x08B7, 0x8105, 0x06B4, 0x8106, 0x0A6C, 0x8107, 0x0FEC, + 0x8108, 0x0EBA, 0x8109, 0x1864, 0x810A, 0x0A78, 0x8116, 0x3AB2, 0x8118, + 0x3AB3, 0x811A, 0x066D, 0x811B, 0x1867, 0x8123, 0x1869, 0x8129, 0x1868, + 0x812B, 0x3659, 0x812F, 0x186A, 0x8131, 0x0B64, 0x8133, 0x0CF4, 0x8139, + 0x0BCD, 0x813A, 0x3AB4, 0x813E, 0x186E, 0x8141, 0x3772, 0x8146, 0x186D, + 0x814A, 0x3AB5, 0x814B, 0x186B, 0x814C, 0x3AB6, 0x814E, 0x0A1B, 0x8150, + 0x0DD7, 0x8151, 0x1870, 0x8153, 0x186F, 0x8154, 0x07E2, 0x8155, 0x0FF9, + 0x815F, 0x1880, 0x8165, 0x1874, 0x8166, 0x1875, 0x816B, 0x091C, 0x816E, + 0x1873, 0x8170, 0x080A, 0x8171, 0x1872, 0x8174, 0x1876, 0x8178, 0x0BCE, + 0x8179, 0x0DF2, 0x817A, 0x0AA5, 0x817F, 0x0B3C, 0x8180, 0x187A, 0x8181, + 0x3AB7, 0x8182, 0x187B, 0x8183, 0x1877, 0x8184, 0x3AB8, 0x8188, 0x1878, + 0x818A, 0x1879, 0x818F, 0x07E3, 0x8193, 0x1881, 0x8195, 0x187D, 0x819A, + 0x0DD8, 0x819C, 0x0E9A, 0x819D, 0x0D9A, 0x81A0, 0x187C, 0x81A3, 0x187F, + 0x81A4, 0x187E, 0x81A8, 0x0E72, 0x81A9, 0x1882, 0x81B0, 0x1883, 0x81B3, + 0x0AB9, 0x81B4, 0x3AB9, 0x81B5, 0x1884, 0x81B8, 0x1886, 0x81BA, 0x188A, + 0x81BD, 0x1887, 0x81BE, 0x1885, 0x81BF, 0x0CF5, 0x81C0, 0x1888, 0x81C2, + 0x1889, 0x81C6, 0x0532, 0x81C8, 0x1890, 0x81C9, 0x188B, 0x81CD, 0x188C, + 0x81CF, 0x3ABA, 0x81D1, 0x188D, 0x81D3, 0x0B01, 0x81D8, 0x188F, 0x81D9, + 0x188E, 0x81DA, 0x1891, 0x81DF, 0x1892, 0x81E0, 0x1893, 0x81E3, 0x0A09, + 0x81E5, 0x0569, 0x81E7, 0x1894, 0x81E8, 0x0F9F, 0x81EA, 0x08D7, 0x81ED, + 0x0937, 0x81F3, 0x08B8, 0x81F4, 0x0B95, 0x81F9, 0x3ABB, 0x81FA, 0x1895, + 0x81FB, 0x1896, 0x81FC, 0x04D3, 0x81FE, 0x1897, 0x8201, 0x1898, 0x8202, + 0x1899, 0x8203, 0x3ABC, 0x8205, 0x189A, 0x8207, 0x189B, 0x8208, 0x06B5, + 0x8209, 0x13AF, 0x820A, 0x189C, 0x820C, 0x0A89, 0x820D, 0x189D, 0x820E, + 0x08F7, 0x8210, 0x189E, 0x8212, 0x1009, 0x8216, 0x189F, 0x8217, 0x0E2E, + 0x8218, 0x0618, 0x821B, 0x0AA6, 0x821C, 0x0962, 0x821E, 0x0DE3, 0x821F, + 0x0938, 0x8221, 0x3ABD, 0x8229, 0x18A0, 0x822A, 0x07E4, 0x822B, 0x18A1, + 0x822C, 0x0D60, 0x822E, 0x18AF, 0x8232, 0x3ABE, 0x8233, 0x18A3, 0x8234, + 0x3ABF, 0x8235, 0x0B29, 0x8236, 0x0D2B, 0x8237, 0x0773, 0x8238, 0x18A2, + 0x8239, 0x0AA7, 0x8240, 0x18A4, 0x8246, 0x3AC0, 0x8247, 0x0C16, 0x824B, + 0x3AC1, 0x824F, 0x3AC2, 0x8258, 0x18A6, 0x8259, 0x18A5, 0x825A, 0x18A8, + 0x825D, 0x18A7, 0x825F, 0x18A9, 0x8262, 0x18AB, 0x8264, 0x18AA, 0x8266, + 0x060B, 0x8268, 0x18AC, 0x826A, 0x18AD, 0x826B, 0x18AE, 0x826E, 0x0821, + 0x826F, 0x0F91, 0x8271, 0x18B0, 0x8272, 0x09ED, 0x8276, 0x0512, 0x8277, + 0x18B1, 0x8278, 0x18B2, 0x8279, 0x3775, 0x827E, 0x18B3, 0x828B, 0x04B6, + 0x828D, 0x18B4, 0x828E, 0x3AC3, 0x8292, 0x18B5, 0x8299, 0x0DD9, 0x829D, + 0x08F3, 0x829F, 0x18B7, 0x82A5, 0x0587, 0x82A6, 0x0476, 0x82AB, 0x18B6, + 0x82AC, 0x18B9, 0x82AD, 0x0D04, 0x82AE, 0x3AC4, 0x82AF, 0x0A0A, 0x82B1, + 0x0556, 0x82B3, 0x0E55, 0x82B7, 0x3AC5, 0x82B8, 0x0733, 0x82B9, 0x06D4, + 0x82BB, 0x18B8, 0x82BD, 0x056A, 0x82BE, 0x3AC6, 0x82C5, 0x05DF, 0x82C6, + 0x3AC7, 0x82D1, 0x0513, 0x82D2, 0x18BD, 0x82D3, 0x0FB2, 0x82D4, 0x0B3D, + 0x82D7, 0x0DB6, 0x82D9, 0x18C9, 0x82DB, 0x0557, 0x82DC, 0x18C7, 0x82DE, + 0x18C5, 0x82DF, 0x18BC, 0x82E1, 0x18BA, 0x82E3, 0x18BB, 0x82E5, 0x090F, + 0x82E6, 0x06E4, 0x82E7, 0x0BB5, 0x82EB, 0x0CA9, 0x82F1, 0x04F3, 0x82F3, + 0x18BF, 0x82F4, 0x18BE, 0x82F9, 0x18C4, 0x82FA, 0x18C0, 0x82FB, 0x18C3, + 0x82FE, 0x3AC8, 0x8301, 0x2198, 0x8302, 0x0EDC, 0x8303, 0x18C2, 0x8304, + 0x0558, 0x8305, 0x05DB, 0x8306, 0x18C6, 0x8309, 0x18C8, 0x830E, 0x072A, + 0x8316, 0x18CC, 0x8317, 0x18D5, 0x8318, 0x18D6, 0x831C, 0x046F, 0x8323, + 0x18DD, 0x8328, 0x04B5, 0x832B, 0x18D4, 0x832F, 0x18D3, 0x8331, 0x18CE, + 0x8332, 0x18CD, 0x8334, 0x18CB, 0x8335, 0x18CA, 0x8336, 0x0BA1, 0x8338, + 0x0B5B, 0x8339, 0x18D0, 0x8340, 0x18CF, 0x8343, 0x3AC9, 0x8345, 0x18D2, + 0x8349, 0x0AF2, 0x834A, 0x072B, 0x834F, 0x04E3, 0x8350, 0x18D1, 0x8351, + 0x3ACA, 0x8352, 0x07E5, 0x8355, 0x3ACB, 0x8358, 0x0AF3, 0x8362, 0x2199, + 0x8373, 0x18E3, 0x8375, 0x18E4, 0x8377, 0x0559, 0x837B, 0x052E, 0x837C, + 0x18E1, 0x837F, 0x219A, 0x8385, 0x18D7, 0x8386, 0x3ACC, 0x8387, 0x18DF, + 0x8389, 0x18E6, 0x838A, 0x18E0, 0x838D, 0x3ACD, 0x838E, 0x18DE, 0x8392, + 0x3ACE, 0x8393, 0x18C1, 0x8396, 0x18DC, 0x8398, 0x3ACF, 0x839A, 0x18D8, + 0x839E, 0x060C, 0x839F, 0x18DA, 0x83A0, 0x18E5, 0x83A2, 0x18DB, 0x83A8, + 0x18E7, 0x83A9, 0x3AD0, 0x83AA, 0x18D9, 0x83AB, 0x0D32, 0x83B1, 0x0F53, + 0x83B5, 0x18E2, 0x83BD, 0x18F8, 0x83BF, 0x3AD1, 0x83C0, 0x3AD2, 0x83C1, + 0x18F0, 0x83C5, 0x0A41, 0x83C7, 0x219B, 0x83CA, 0x0660, 0x83CC, 0x06D5, + 0x83CE, 0x18EB, 0x83D3, 0x055B, 0x83D6, 0x09BC, 0x83D8, 0x18EE, 0x83DC, + 0x084A, 0x83DF, 0x0C4B, 0x83E0, 0x18F3, 0x83E9, 0x0E3E, 0x83EA, 0x3AD3, + 0x83EB, 0x18EA, 0x83EF, 0x055A, 0x83F0, 0x078A, 0x83F1, 0x0D9B, 0x83F2, + 0x18F4, 0x83F4, 0x18E8, 0x83F6, 0x219C, 0x83F7, 0x18F1, 0x83FB, 0x18FB, + 0x83FD, 0x18EC, 0x8403, 0x18ED, 0x8404, 0x0C92, 0x8407, 0x18F2, 0x840A, + 0x1E7F, 0x840B, 0x18EF, 0x840C, 0x0E56, 0x840D, 0x18F5, 0x840E, 0x04A4, + 0x840F, 0x3AD4, 0x8411, 0x3AD5, 0x8413, 0x18E9, 0x8420, 0x18F7, 0x8422, + 0x18F6, 0x8429, 0x0D21, 0x842A, 0x18FD, 0x842C, 0x1908, 0x8431, 0x05DC, + 0x8435, 0x190B, 0x8438, 0x18F9, 0x843C, 0x18FE, 0x843D, 0x0F58, 0x8446, + 0x1907, 0x8448, 0x219D, 0x8449, 0x0F3F, 0x844A, 0x3AD6, 0x844E, 0x0F72, + 0x8457, 0x0BB6, 0x845B, 0x05C9, 0x8461, 0x0DE4, 0x8462, 0x190D, 0x8463, + 0x0C79, 0x8466, 0x0475, 0x8469, 0x1906, 0x846B, 0x1902, 0x846C, 0x0AF4, + 0x846D, 0x18FC, 0x846E, 0x1904, 0x846F, 0x1909, 0x8471, 0x0CE2, 0x8475, + 0x046E, 0x8476, 0x3AD7, 0x8477, 0x1901, 0x8479, 0x190A, 0x847A, 0x0DEA, + 0x8482, 0x1905, 0x8484, 0x1900, 0x848B, 0x09BD, 0x8490, 0x0939, 0x8494, + 0x08D8, 0x8499, 0x0EE4, 0x849C, 0x0DB9, 0x849F, 0x1910, 0x84A1, 0x1919, + 0x84A8, 0x3AD8, 0x84AD, 0x1903, 0x84AF, 0x3AD9, 0x84B2, 0x05D5, 0x84B4, + 0x219E, 0x84B8, 0x09E0, 0x84B9, 0x190E, 0x84BB, 0x1913, 0x84BC, 0x0AF5, + 0x84BF, 0x190F, 0x84C0, 0x3ADA, 0x84C1, 0x1916, 0x84C2, 0x3ADB, 0x84C4, + 0x0B9D, 0x84C6, 0x1917, 0x84C9, 0x0F40, 0x84CA, 0x190C, 0x84CB, 0x0596, + 0x84CD, 0x1912, 0x84D0, 0x1915, 0x84D1, 0x0EB8, 0x84D6, 0x1918, 0x84D9, + 0x1911, 0x84DA, 0x1914, 0x84DC, 0x20AB, 0x84EC, 0x0E57, 0x84EE, 0x0FC7, + 0x84F0, 0x3ADC, 0x84F4, 0x191C, 0x84FC, 0x1923, 0x84FD, 0x3ADD, 0x84FF, + 0x191B, 0x8500, 0x08EF, 0x8506, 0x18FA, 0x850C, 0x3ADE, 0x8511, 0x0E1E, + 0x8513, 0x0EAE, 0x8514, 0x1922, 0x8515, 0x1921, 0x8517, 0x191D, 0x8518, + 0x191E, 0x851A, 0x04D8, 0x851F, 0x1920, 0x8521, 0x191A, 0x8523, 0x1E1A, + 0x8526, 0x0BF1, 0x852C, 0x191F, 0x852D, 0x04C2, 0x8534, 0x3ADF, 0x8535, + 0x0B02, 0x853D, 0x0E13, 0x853E, 0x1EB5, 0x8540, 0x1924, 0x8541, 0x1928, + 0x8543, 0x0D6D, 0x8548, 0x1927, 0x8549, 0x09BE, 0x854A, 0x08F5, 0x854B, + 0x192A, 0x854E, 0x06B6, 0x8553, 0x219F, 0x8555, 0x192B, 0x8557, 0x0DEB, + 0x8558, 0x1926, 0x8559, 0x21A0, 0x855A, 0x18FF, 0x855E, 0x3AE0, 0x8563, + 0x1925, 0x8568, 0x0FF5, 0x8569, 0x0C7A, 0x856A, 0x0DE5, 0x856B, 0x21A1, + 0x856D, 0x1932, 0x8577, 0x1938, 0x857E, 0x1939, 0x8580, 0x192C, 0x8584, + 0x0D2C, 0x8587, 0x1936, 0x8588, 0x192E, 0x858A, 0x1930, 0x858F, 0x3AE1, + 0x8590, 0x193A, 0x8591, 0x192F, 0x8594, 0x1933, 0x8597, 0x0514, 0x8599, + 0x0CBD, 0x859B, 0x1934, 0x859C, 0x1937, 0x85A4, 0x192D, 0x85A6, 0x0AA8, + 0x85A8, 0x1931, 0x85A9, 0x0875, 0x85AA, 0x0A0B, 0x85AB, 0x0706, 0x85AC, + 0x0F00, 0x85AD, 0x3AE4, 0x85AE, 0x0F05, 0x85AF, 0x097C, 0x85B0, 0x21A3, + 0x85B7, 0x3AE2, 0x85B9, 0x193E, 0x85BA, 0x193C, 0x85C1, 0x0FF4, 0x85C9, + 0x193B, 0x85CD, 0x0F5F, 0x85CE, 0x3AE3, 0x85CF, 0x193D, 0x85D0, 0x193F, + 0x85D5, 0x1940, 0x85DC, 0x1943, 0x85DD, 0x1941, 0x85E4, 0x0C7B, 0x85E5, + 0x1942, 0x85E9, 0x0D61, 0x85EA, 0x1935, 0x85F4, 0x3780, 0x85F7, 0x097D, + 0x85F9, 0x1944, 0x85FA, 0x1949, 0x85FB, 0x0AF6, 0x85FE, 0x1948, 0x8602, + 0x1929, 0x8606, 0x194A, 0x8607, 0x0ACB, 0x860A, 0x1945, 0x860B, 0x1947, + 0x8612, 0x3AE5, 0x8613, 0x1946, 0x8616, 0x14D0, 0x8617, 0x14C1, 0x861A, + 0x194C, 0x8622, 0x194B, 0x8629, 0x3AE6, 0x862D, 0x0F60, 0x862F, 0x16B1, + 0x8630, 0x194D, 0x863F, 0x194E, 0x864D, 0x194F, 0x864E, 0x078B, 0x8650, + 0x066E, 0x8652, 0x3AE7, 0x8654, 0x1951, 0x8655, 0x1094, 0x865A, 0x068F, + 0x865B, 0x3418, 0x865C, 0x0F82, 0x865E, 0x06EB, 0x865F, 0x1952, 0x8663, + 0x3AE8, 0x8667, 0x1953, 0x866B, 0x0BAC, 0x866C, 0x3AE9, 0x866F, 0x3AEA, + 0x8671, 0x1954, 0x8679, 0x0CD2, 0x867A, 0x3AEB, 0x867B, 0x047E, 0x867D, + 0x3786, 0x868A, 0x0563, 0x868B, 0x1959, 0x868C, 0x195A, 0x868D, 0x3AEC, + 0x8691, 0x3AED, 0x8693, 0x1955, 0x8695, 0x088B, 0x8698, 0x3AEE, 0x86A3, + 0x1956, 0x86A4, 0x0CF8, 0x86A7, 0x3AEF, 0x86A8, 0x3AF0, 0x86A9, 0x1957, + 0x86AA, 0x1958, 0x86AB, 0x1962, 0x86AF, 0x195C, 0x86B0, 0x195F, 0x86B6, + 0x195B, 0x86C4, 0x195D, 0x86C6, 0x195E, 0x86C7, 0x0904, 0x86C9, 0x1960, + 0x86CB, 0x0B7F, 0x86CD, 0x072C, 0x86CE, 0x05A0, 0x86D4, 0x1963, 0x86D9, + 0x059D, 0x86DB, 0x1968, 0x86DE, 0x1964, 0x86DF, 0x1967, 0x86E4, 0x0D4E, + 0x86E9, 0x1965, 0x86EC, 0x1966, 0x86ED, 0x0DBA, 0x86EE, 0x0D6E, 0x86EF, + 0x1969, 0x86F8, 0x0B5D, 0x86F9, 0x1973, 0x86FA, 0x3AF1, 0x86FB, 0x196F, + 0x86FD, 0x3AF2, 0x86FE, 0x056B, 0x8700, 0x196D, 0x8702, 0x0E58, 0x8703, + 0x196E, 0x8706, 0x196B, 0x8708, 0x196C, 0x8709, 0x1971, 0x870A, 0x1974, + 0x870B, 0x3AF3, 0x870D, 0x1972, 0x8711, 0x1970, 0x8712, 0x196A, 0x8713, + 0x3AF4, 0x8718, 0x0B96, 0x8719, 0x3AF5, 0x871A, 0x197B, 0x871C, 0x0EB6, + 0x871E, 0x3AF6, 0x8725, 0x1979, 0x8728, 0x3AF7, 0x8729, 0x197A, 0x8734, + 0x1975, 0x8737, 0x1977, 0x873B, 0x1978, 0x873E, 0x3AF8, 0x873F, 0x1976, + 0x8749, 0x0A8A, 0x874B, 0x0FDF, 0x874C, 0x197F, 0x874E, 0x1980, 0x8753, + 0x1986, 0x8755, 0x09F0, 0x8757, 0x1982, 0x8759, 0x1985, 0x875F, 0x197D, + 0x8760, 0x197C, 0x8763, 0x1987, 0x8766, 0x055C, 0x8768, 0x1983, 0x876A, + 0x1988, 0x876E, 0x1984, 0x8771, 0x3AF9, 0x8774, 0x1981, 0x8776, 0x0BCF, + 0x8778, 0x197E, 0x877F, 0x0D1E, 0x8782, 0x198C, 0x8788, 0x3AFA, 0x878D, + 0x0F25, 0x8799, 0x3AFB, 0x879F, 0x198B, 0x87A2, 0x198A, 0x87AB, 0x1993, + 0x87AC, 0x3AFC, 0x87AD, 0x3AFD, 0x87AF, 0x198D, 0x87B3, 0x1995, 0x87B5, + 0x3AFE, 0x87BA, 0x0F50, 0x87BB, 0x1998, 0x87BD, 0x198F, 0x87C0, 0x1990, + 0x87C4, 0x1994, 0x87C6, 0x1997, 0x87C7, 0x1996, 0x87CB, 0x198E, 0x87D0, + 0x1991, 0x87D2, 0x19A2, 0x87D6, 0x3AFF, 0x87E0, 0x199B, 0x87EB, 0x3B00, + 0x87EC, 0x1E23, 0x87ED, 0x3B01, 0x87EF, 0x1999, 0x87F2, 0x199A, 0x87F5, + 0x3C3D, 0x87F6, 0x199F, 0x87F7, 0x19A0, 0x87F9, 0x0588, 0x87FB, 0x065C, + 0x87FE, 0x199E, 0x8801, 0x3B02, 0x8803, 0x3B03, 0x8805, 0x1989, 0x8806, + 0x3B04, 0x8807, 0x21A6, 0x880B, 0x3B05, 0x880D, 0x199D, 0x880E, 0x19A1, + 0x880F, 0x199C, 0x8811, 0x19A3, 0x8814, 0x3B06, 0x8815, 0x19A5, 0x8816, + 0x19A4, 0x881C, 0x3B07, 0x881F, 0x1E85, 0x8821, 0x19A7, 0x8822, 0x19A6, + 0x8823, 0x1961, 0x8827, 0x19AB, 0x8831, 0x19A8, 0x8836, 0x19A9, 0x8839, + 0x19AA, 0x883B, 0x19AC, 0x8840, 0x0742, 0x8842, 0x19AE, 0x8844, 0x19AD, + 0x8846, 0x093A, 0x884C, 0x07E6, 0x884D, 0x1524, 0x8852, 0x19AF, 0x8853, + 0x095B, 0x8856, 0x3B08, 0x8857, 0x0597, 0x8859, 0x19B0, 0x885B, 0x04F4, + 0x885D, 0x09BF, 0x885E, 0x19B1, 0x885F, 0x3B09, 0x8861, 0x07E7, 0x8862, + 0x19B2, 0x8863, 0x04A5, 0x8864, 0x3B0A, 0x8868, 0x0DAF, 0x886B, 0x19B3, + 0x8870, 0x0A30, 0x8872, 0x19BA, 0x8875, 0x19B7, 0x8877, 0x0BAD, 0x887D, + 0x19B8, 0x887E, 0x19B5, 0x887F, 0x06D6, 0x8881, 0x19B4, 0x8882, 0x19BB, + 0x8888, 0x070C, 0x888B, 0x0B3E, 0x888D, 0x19C1, 0x8892, 0x19BD, 0x8896, + 0x0B15, 0x8897, 0x19BC, 0x8898, 0x3B0B, 0x8899, 0x19BF, 0x889E, 0x19B6, + 0x88A2, 0x19C0, 0x88A4, 0x19C2, 0x88AA, 0x3B0C, 0x88AB, 0x0D83, 0x88AE, + 0x19BE, 0x88B0, 0x19C3, 0x88B1, 0x19C5, 0x88B4, 0x0787, 0x88B5, 0x19B9, + 0x88B7, 0x0485, 0x88BD, 0x3B0D, 0x88BE, 0x3B0E, 0x88BF, 0x19C4, 0x88C1, + 0x084B, 0x88C2, 0x0FBE, 0x88C3, 0x19C6, 0x88C4, 0x19C7, 0x88C5, 0x0AF7, + 0x88C6, 0x3789, 0x88CA, 0x3B0F, 0x88CF, 0x0F6A, 0x88D2, 0x3B10, 0x88D4, + 0x19C8, 0x88D5, 0x0F1F, 0x88D8, 0x19C9, 0x88D9, 0x19CA, 0x88DB, 0x3B11, + 0x88DC, 0x0E34, 0x88DD, 0x19CB, 0x88DF, 0x0830, 0x88E1, 0x0F6B, 0x88E8, + 0x19D0, 0x88F0, 0x3B12, 0x88F1, 0x3B13, 0x88F2, 0x19D1, 0x88F3, 0x09C0, + 0x88F4, 0x19CF, 0x88F5, 0x21A7, 0x88F8, 0x0F51, 0x88F9, 0x19CC, 0x88FC, + 0x19CE, 0x88FD, 0x0A61, 0x88FE, 0x0A44, 0x8902, 0x19CD, 0x8904, 0x19D2, + 0x8906, 0x3B14, 0x8907, 0x0DF3, 0x890A, 0x19D4, 0x890C, 0x19D3, 0x8910, + 0x05CA, 0x8912, 0x0E59, 0x8913, 0x19D5, 0x8918, 0x3B15, 0x8919, 0x3B16, + 0x891A, 0x3B17, 0x891C, 0x20A8, 0x891D, 0x19E1, 0x891E, 0x19D7, 0x8925, + 0x19D8, 0x8927, 0x3B18, 0x892A, 0x19D9, 0x892B, 0x19DA, 0x8930, 0x3B19, + 0x8936, 0x19DE, 0x8938, 0x19DF, 0x893B, 0x19DD, 0x893E, 0x3B1A, 0x8941, + 0x19DB, 0x8943, 0x19D6, 0x8944, 0x19DC, 0x894C, 0x19E0, 0x894D, 0x1BD0, + 0x8956, 0x0528, 0x895E, 0x19E3, 0x895F, 0x06D7, 0x8960, 0x19E2, 0x8964, + 0x19E5, 0x8966, 0x19E4, 0x896A, 0x19E7, 0x896D, 0x19E6, 0x896F, 0x19E8, + 0x8972, 0x093B, 0x8974, 0x19E9, 0x8977, 0x19EA, 0x897B, 0x3B1B, 0x897E, + 0x19EB, 0x897F, 0x0A62, 0x8980, 0x362E, 0x8981, 0x0F41, 0x8983, 0x19EC, + 0x8986, 0x0DF4, 0x8987, 0x0CFC, 0x8988, 0x19ED, 0x898A, 0x19EE, 0x898B, + 0x075F, 0x898F, 0x0646, 0x8993, 0x19EF, 0x8996, 0x08B9, 0x8997, 0x0CF7, + 0x8998, 0x19F0, 0x899A, 0x05AE, 0x89A1, 0x19F1, 0x89A6, 0x19F3, 0x89A7, + 0x0F61, 0x89A9, 0x19F2, 0x89AA, 0x0A0C, 0x89AC, 0x19F4, 0x89AF, 0x19F5, + 0x89B2, 0x19F6, 0x89B3, 0x060D, 0x89BA, 0x19F7, 0x89BD, 0x19F8, 0x89BF, + 0x19F9, 0x89C0, 0x19FA, 0x89D2, 0x05AF, 0x89D4, 0x3B1C, 0x89D6, 0x3B1D, + 0x89DA, 0x19FB, 0x89DC, 0x19FC, 0x89DD, 0x19FD, 0x89E3, 0x0572, 0x89E5, + 0x3B1E, 0x89E6, 0x09EE, 0x89E7, 0x19FE, 0x89F1, 0x3B1F, 0x89F4, 0x19FF, + 0x89F8, 0x1A00, 0x8A00, 0x0774, 0x8A01, 0x35BC, 0x8A02, 0x0C17, 0x8A03, + 0x1A01, 0x8A07, 0x3B20, 0x8A08, 0x072D, 0x8A0A, 0x0A1C, 0x8A0C, 0x1A04, + 0x8A0E, 0x0C7C, 0x8A0F, 0x3B21, 0x8A10, 0x1A03, 0x8A12, 0x21A8, 0x8A13, + 0x0707, 0x8A15, 0x3B22, 0x8A16, 0x1A02, 0x8A17, 0x0B57, 0x8A18, 0x0647, + 0x8A1B, 0x1A05, 0x8A1D, 0x1A06, 0x8A1F, 0x09C1, 0x8A22, 0x3B23, 0x8A23, + 0x0743, 0x8A25, 0x1A07, 0x8A2A, 0x0E5A, 0x8A2D, 0x0A83, 0x8A31, 0x0690, + 0x8A33, 0x0F01, 0x8A34, 0x0ACC, 0x8A36, 0x1A08, 0x8A37, 0x21A9, 0x8A3A, + 0x0A0D, 0x8A3B, 0x0BAE, 0x8A3C, 0x09C2, 0x8A41, 0x1A09, 0x8A46, 0x1A0C, + 0x8A48, 0x1A0D, 0x8A4E, 0x3B24, 0x8A50, 0x082E, 0x8A51, 0x0B22, 0x8A52, + 0x1A0B, 0x8A54, 0x09C3, 0x8A55, 0x0DB0, 0x8A5B, 0x1A0A, 0x8A5E, 0x08BA, + 0x8A60, 0x04F5, 0x8A62, 0x1A11, 0x8A63, 0x072E, 0x8A66, 0x08BC, 0x8A69, + 0x08BB, 0x8A6B, 0x0FF3, 0x8A6C, 0x1A10, 0x8A6D, 0x1A0F, 0x8A6E, 0x0AA9, + 0x8A70, 0x0667, 0x8A71, 0x0FE9, 0x8A72, 0x0598, 0x8A73, 0x09C4, 0x8A79, + 0x21AA, 0x8A7C, 0x1A0E, 0x8A7F, 0x3B25, 0x8A82, 0x1A13, 0x8A84, 0x1A14, + 0x8A85, 0x1A12, 0x8A87, 0x078C, 0x8A89, 0x0F2A, 0x8A8C, 0x08BD, 0x8A8D, + 0x0CDD, 0x8A91, 0x1A17, 0x8A93, 0x0A64, 0x8A95, 0x0B80, 0x8A98, 0x0F20, + 0x8A9A, 0x1A1A, 0x8A9E, 0x07A0, 0x8AA0, 0x0A63, 0x8AA1, 0x1A16, 0x8AA3, + 0x1A1B, 0x8AA4, 0x07A1, 0x8AA5, 0x1A18, 0x8AA6, 0x1A19, 0x8AA7, 0x21AB, + 0x8AA8, 0x1A15, 0x8AAA, 0x3638, 0x8AAC, 0x0A86, 0x8AAD, 0x0CA1, 0x8AB0, + 0x0B6D, 0x8AB2, 0x055D, 0x8AB9, 0x0D84, 0x8ABC, 0x065D, 0x8ABE, 0x21AC, + 0x8ABF, 0x0BD0, 0x8AC2, 0x1A1E, 0x8AC4, 0x1A1C, 0x8AC7, 0x0B8A, 0x8ACB, + 0x0A65, 0x8ACC, 0x060E, 0x8ACD, 0x1A1D, 0x8ACF, 0x0A21, 0x8AD2, 0x0F92, + 0x8AD6, 0x0FE6, 0x8ADA, 0x1A1F, 0x8ADB, 0x1A2A, 0x8ADC, 0x0BD1, 0x8ADE, + 0x1A29, 0x8ADF, 0x21AD, 0x8AE0, 0x1A26, 0x8AE1, 0x1A2E, 0x8AE2, 0x1A27, + 0x8AE4, 0x1A23, 0x8AE6, 0x0C18, 0x8AE7, 0x1A22, 0x8AEB, 0x1A20, 0x8AED, + 0x0F0B, 0x8AEE, 0x08BE, 0x8AF1, 0x1A24, 0x8AF3, 0x1A21, 0x8AF4, 0x3B26, + 0x8AF6, 0x21AF, 0x8AF7, 0x1A28, 0x8AF8, 0x097E, 0x8AFA, 0x0775, 0x8AFE, + 0x0B5A, 0x8B00, 0x0E73, 0x8B01, 0x04FC, 0x8B02, 0x04A6, 0x8B04, 0x0C7D, + 0x8B07, 0x1A2C, 0x8B0C, 0x1A2B, 0x8B0E, 0x0CBE, 0x8B10, 0x1A30, 0x8B14, + 0x1A25, 0x8B16, 0x1A2F, 0x8B17, 0x1A31, 0x8B19, 0x0760, 0x8B1A, 0x1A2D, + 0x8B1B, 0x07E8, 0x8B1D, 0x0901, 0x8B1F, 0x3B27, 0x8B20, 0x1A32, 0x8B21, + 0x0F42, 0x8B26, 0x1A35, 0x8B28, 0x1A38, 0x8B2B, 0x1A36, 0x8B2C, 0x0DA7, + 0x8B33, 0x1A33, 0x8B37, 0x3B28, 0x8B39, 0x06D8, 0x8B3E, 0x1A37, 0x8B41, + 0x1A39, 0x8B43, 0x3B29, 0x8B44, 0x3B2A, 0x8B49, 0x1A3D, 0x8B4C, 0x1A3A, + 0x8B4E, 0x1A3C, 0x8B4F, 0x1A3B, 0x8B53, 0x21B0, 0x8B54, 0x3B2B, 0x8B56, + 0x1A3E, 0x8B58, 0x08DD, 0x8B5A, 0x1A40, 0x8B5B, 0x1A3F, 0x8B5C, 0x0DDA, + 0x8B5F, 0x1A42, 0x8B66, 0x072F, 0x8B6B, 0x1A41, 0x8B6C, 0x1A43, 0x8B6F, + 0x1A44, 0x8B70, 0x065E, 0x8B71, 0x182E, 0x8B72, 0x09E1, 0x8B74, 0x1A45, + 0x8B77, 0x07A2, 0x8B7D, 0x1A46, 0x8B7F, 0x21B1, 0x8B80, 0x1A47, 0x8B83, + 0x088C, 0x8B8A, 0x13D3, 0x8B8C, 0x1A48, 0x8B8E, 0x1A49, 0x8B90, 0x093C, + 0x8B92, 0x1A4A, 0x8B93, 0x1A4B, 0x8B96, 0x1A4C, 0x8B99, 0x1A4D, 0x8B9A, + 0x1A4E, 0x8B9C, 0x3B2C, 0x8B9E, 0x3B2D, 0x8C37, 0x0B69, 0x8C3A, 0x1A4F, + 0x8C3F, 0x1A51, 0x8C41, 0x1A50, 0x8C46, 0x0C7E, 0x8C47, 0x3B2E, 0x8C48, + 0x1A52, 0x8C4A, 0x0E5B, 0x8C4C, 0x1A53, 0x8C4E, 0x1A54, 0x8C50, 0x1A55, + 0x8C54, 0x3B2F, 0x8C55, 0x1A56, 0x8C5A, 0x0CB2, 0x8C61, 0x09C5, 0x8C62, + 0x1A57, 0x8C6A, 0x07FD, 0x8C6B, 0x1007, 0x8C6C, 0x1A58, 0x8C73, 0x3B30, + 0x8C78, 0x1A59, 0x8C79, 0x0DB1, 0x8C7A, 0x1A5A, 0x8C7C, 0x1A62, 0x8C82, + 0x1A5B, 0x8C85, 0x1A5D, 0x8C89, 0x1A5C, 0x8C8A, 0x1A5E, 0x8C8C, 0x0E74, + 0x8C8D, 0x1A5F, 0x8C8E, 0x1A60, 0x8C94, 0x1A61, 0x8C98, 0x1A63, 0x8C9D, + 0x058B, 0x8C9E, 0x0C03, 0x8CA0, 0x0DDB, 0x8CA1, 0x0852, 0x8CA2, 0x07E9, + 0x8CA4, 0x3B31, 0x8CA7, 0x0DC1, 0x8CA8, 0x055F, 0x8CA9, 0x0D62, 0x8CAA, + 0x1A66, 0x8CAB, 0x060F, 0x8CAC, 0x0A79, 0x8CAD, 0x1A65, 0x8CAE, 0x1A6A, + 0x8CAF, 0x0BB7, 0x8CB0, 0x0EEF, 0x8CB2, 0x1A68, 0x8CB3, 0x1A69, 0x8CB4, + 0x0648, 0x8CB6, 0x1A6B, 0x8CB7, 0x0D19, 0x8CB8, 0x0B3F, 0x8CBB, 0x0D85, + 0x8CBC, 0x0C37, 0x8CBD, 0x1A67, 0x8CBF, 0x0E75, 0x8CC0, 0x056C, 0x8CC1, + 0x1A6D, 0x8CC2, 0x0FCE, 0x8CC3, 0x0BDE, 0x8CC4, 0x0FEB, 0x8CC7, 0x08BF, + 0x8CC8, 0x1A6C, 0x8CCA, 0x0B11, 0x8CCD, 0x1A7D, 0x8CCE, 0x0AAA, 0x8CD1, + 0x0CD0, 0x8CD3, 0x0DC2, 0x8CD9, 0x3B32, 0x8CDA, 0x1A70, 0x8CDB, 0x088D, + 0x8CDC, 0x08C0, 0x8CDE, 0x09C6, 0x8CE0, 0x0D1B, 0x8CE1, 0x3B33, 0x8CE2, + 0x0761, 0x8CE3, 0x1A6F, 0x8CE4, 0x1A6E, 0x8CE6, 0x0DDC, 0x8CEA, 0x08ED, + 0x8CED, 0x0C4C, 0x8CF0, 0x21B2, 0x8CF4, 0x21B3, 0x8CF8, 0x3B34, 0x8CFA, + 0x1A72, 0x8CFB, 0x1A73, 0x8CFC, 0x07EA, 0x8CFD, 0x1A71, 0x8CFE, 0x3B35, + 0x8D04, 0x1A74, 0x8D05, 0x1A75, 0x8D07, 0x1A77, 0x8D08, 0x0B03, 0x8D0A, + 0x1A76, 0x8D0B, 0x0622, 0x8D0D, 0x1A79, 0x8D0F, 0x1A78, 0x8D10, 0x1A7A, + 0x8D12, 0x21B4, 0x8D13, 0x1A7C, 0x8D14, 0x1A7E, 0x8D16, 0x1A7F, 0x8D1B, + 0x3B36, 0x8D64, 0x0A7A, 0x8D66, 0x08FB, 0x8D67, 0x1A80, 0x8D69, 0x3B37, + 0x8D6B, 0x05B0, 0x8D6C, 0x3B38, 0x8D6D, 0x1A81, 0x8D70, 0x0AF8, 0x8D71, + 0x1A82, 0x8D73, 0x1A83, 0x8D74, 0x0DDD, 0x8D76, 0x21B5, 0x8D77, 0x0649, + 0x8D81, 0x1A84, 0x8D84, 0x3B39, 0x8D85, 0x0BD2, 0x8D8A, 0x04FD, 0x8D8D, + 0x3B3A, 0x8D95, 0x3B3B, 0x8D99, 0x1A85, 0x8DA3, 0x091D, 0x8DA6, 0x3B3C, + 0x8DA8, 0x0A3C, 0x8DB3, 0x0B0D, 0x8DBA, 0x1A88, 0x8DBE, 0x1A87, 0x8DC2, + 0x1A86, 0x8DC6, 0x3B3D, 0x8DCB, 0x1A8E, 0x8DCC, 0x1A8C, 0x8DCE, 0x3B3E, + 0x8DCF, 0x1A89, 0x8DD6, 0x1A8B, 0x8DDA, 0x1A8A, 0x8DDB, 0x1A8D, 0x8DDD, + 0x0691, 0x8DDF, 0x1A91, 0x8DE1, 0x0A7B, 0x8DE3, 0x1A92, 0x8DE4, 0x3B3F, + 0x8DE8, 0x078D, 0x8DEA, 0x1A8F, 0x8DEB, 0x1A90, 0x8DEC, 0x3B40, 0x8DEF, + 0x0FCF, 0x8DF3, 0x0BD3, 0x8DF5, 0x0AAB, 0x8DFC, 0x1A93, 0x8DFF, 0x1A96, + 0x8E08, 0x1A94, 0x8E09, 0x1A95, 0x8E0A, 0x0F43, 0x8E0F, 0x0C7F, 0x8E10, + 0x1A99, 0x8E1D, 0x1A97, 0x8E1E, 0x1A98, 0x8E1F, 0x1A9A, 0x8E20, 0x3B41, + 0x8E2A, 0x1AA8, 0x8E30, 0x1A9D, 0x8E34, 0x1A9E, 0x8E35, 0x1A9C, 0x8E42, + 0x1A9B, 0x8E44, 0x0C19, 0x8E47, 0x1AA0, 0x8E48, 0x1AA4, 0x8E49, 0x1AA1, + 0x8E4A, 0x1A9F, 0x8E4B, 0x3B42, 0x8E4C, 0x1AA2, 0x8E50, 0x1AA3, 0x8E55, + 0x1AAA, 0x8E59, 0x1AA5, 0x8E5F, 0x0A7C, 0x8E60, 0x1AA7, 0x8E63, 0x1AA9, + 0x8E64, 0x1AA6, 0x8E6C, 0x3B43, 0x8E70, 0x3B44, 0x8E72, 0x1AAC, 0x8E74, + 0x093D, 0x8E76, 0x1AAB, 0x8E7A, 0x3B45, 0x8E7C, 0x1AAD, 0x8E81, 0x1AAE, + 0x8E84, 0x1AB1, 0x8E85, 0x1AB0, 0x8E87, 0x1AAF, 0x8E8A, 0x1AB3, 0x8E8B, + 0x1AB2, 0x8E8D, 0x0F02, 0x8E91, 0x1AB5, 0x8E92, 0x3B46, 0x8E93, 0x1AB4, + 0x8E94, 0x1AB6, 0x8E99, 0x1AB7, 0x8EA1, 0x1AB9, 0x8EAA, 0x1AB8, 0x8EAB, + 0x0A0E, 0x8EAC, 0x1ABA, 0x8EAE, 0x3B47, 0x8EAF, 0x06E5, 0x8EB0, 0x1ABB, + 0x8EB1, 0x1ABD, 0x8EB3, 0x3B48, 0x8EB6, 0x3703, 0x8EBE, 0x1ABE, 0x8EC0, + 0x1DEF, 0x8EC5, 0x1ABF, 0x8EC6, 0x1ABC, 0x8EC8, 0x1AC0, 0x8ECA, 0x0902, + 0x8ECB, 0x1AC1, 0x8ECC, 0x064A, 0x8ECD, 0x0709, 0x8ECF, 0x21B7, 0x8ED1, + 0x3B49, 0x8ED2, 0x0762, 0x8ED4, 0x3B4A, 0x8EDB, 0x1AC2, 0x8EDF, 0x0CC8, + 0x8EE2, 0x0C38, 0x8EE3, 0x1AC3, 0x8EEB, 0x1AC6, 0x8EF8, 0x08E0, 0x8EF9, + 0x3B4B, 0x8EFB, 0x1AC5, 0x8EFC, 0x1AC4, 0x8EFD, 0x0730, 0x8EFE, 0x1AC7, + 0x8F03, 0x05B1, 0x8F05, 0x1AC9, 0x8F09, 0x084C, 0x8F0A, 0x1AC8, 0x8F0C, + 0x1AD1, 0x8F12, 0x1ACB, 0x8F13, 0x1ACD, 0x8F14, 0x0E35, 0x8F15, 0x1ACA, + 0x8F17, 0x3B4C, 0x8F19, 0x1ACC, 0x8F1B, 0x1AD0, 0x8F1C, 0x1ACE, 0x8F1D, + 0x064B, 0x8F1F, 0x1ACF, 0x8F26, 0x1AD2, 0x8F29, 0x0D10, 0x8F2A, 0x0FA0, + 0x8F2F, 0x093E, 0x8F33, 0x1AD3, 0x8F36, 0x3B4D, 0x8F38, 0x0F0C, 0x8F39, + 0x1AD5, 0x8F3B, 0x1AD4, 0x8F3E, 0x1AD8, 0x8F3F, 0x0F2B, 0x8F42, 0x1AD7, + 0x8F44, 0x05CB, 0x8F45, 0x1AD6, 0x8F46, 0x1ADB, 0x8F49, 0x1ADA, 0x8F4C, + 0x1AD9, 0x8F4D, 0x0C2C, 0x8F4E, 0x1ADC, 0x8F57, 0x1ADD, 0x8F5C, 0x1ADE, + 0x8F5F, 0x07FE, 0x8F61, 0x06FB, 0x8F62, 0x1ADF, 0x8F63, 0x1AE0, 0x8F64, + 0x1AE1, 0x8F9B, 0x0A0F, 0x8F9C, 0x1AE2, 0x8F9E, 0x08D9, 0x8F9F, 0x1AE3, + 0x8FA3, 0x1AE4, 0x8FA6, 0x3B4E, 0x8FA7, 0x10B6, 0x8FA8, 0x10B5, 0x8FAD, + 0x1AE5, 0x8FAE, 0x17FF, 0x8FAF, 0x1AE6, 0x8FB0, 0x0B62, 0x8FB1, 0x09F1, + 0x8FB2, 0x0CF6, 0x8FB5, 0x3B4F, 0x8FB6, 0x3B50, 0x8FB7, 0x1AE7, 0x8FBA, + 0x0E25, 0x8FBB, 0x0BF0, 0x8FBC, 0x0810, 0x8FBF, 0x0B67, 0x8FC2, 0x04CC, + 0x8FC4, 0x0EA6, 0x8FC5, 0x0A1D, 0x8FC6, 0x3B51, 0x8FC8, 0x3799, 0x8FCE, + 0x0734, 0x8FD1, 0x06D9, 0x8FD4, 0x0E26, 0x8FDA, 0x1AE8, 0x8FE0, 0x3B52, + 0x8FE2, 0x1AEA, 0x8FE4, 0x3B53, 0x8FE5, 0x1AE9, 0x8FE6, 0x0560, 0x8FE9, + 0x0CCE, 0x8FEA, 0x1AEB, 0x8FEB, 0x0D2D, 0x8FED, 0x0C2D, 0x8FEF, 0x1AEC, + 0x8FF0, 0x095C, 0x8FF4, 0x1AEE, 0x8FF6, 0x3B54, 0x8FF7, 0x0ECE, 0x8FF8, + 0x1AFD, 0x8FF9, 0x1AF0, 0x8FFA, 0x1AF1, 0x8FFD, 0x0BE5, 0x9000, 0x0B40, + 0x9001, 0x0AF9, 0x9002, 0x3B55, 0x9003, 0x0C80, 0x9005, 0x1AEF, 0x9006, + 0x066F, 0x900B, 0x1AF8, 0x900D, 0x1AF5, 0x900E, 0x1B02, 0x900F, 0x0C81, + 0x9010, 0x0B9E, 0x9011, 0x1AF2, 0x9013, 0x0C1A, 0x9014, 0x0C4D, 0x9015, + 0x1AF3, 0x9016, 0x1AF7, 0x9017, 0x0A26, 0x9019, 0x0D1D, 0x901A, 0x0BE8, + 0x901D, 0x0A66, 0x901E, 0x1AF6, 0x901F, 0x0B0E, 0x9020, 0x0B04, 0x9021, + 0x1AF4, 0x9022, 0x046D, 0x9023, 0x0FC8, 0x9027, 0x1AF9, 0x902C, 0x3B56, + 0x902E, 0x0B41, 0x9031, 0x093F, 0x9032, 0x0A10, 0x9035, 0x1AFB, 0x9036, + 0x1AFA, 0x9038, 0x04B3, 0x9039, 0x1AFC, 0x903C, 0x0DA1, 0x903E, 0x1B04, + 0x9041, 0x0CB3, 0x9042, 0x0A31, 0x9044, 0x3B57, 0x9045, 0x0B97, 0x9047, + 0x06F0, 0x9049, 0x1B03, 0x904A, 0x0F21, 0x904B, 0x04E1, 0x904D, 0x0E27, + 0x904E, 0x0561, 0x904F, 0x1AFE, 0x9050, 0x1AFF, 0x9051, 0x1B00, 0x9052, + 0x1B01, 0x9053, 0x0C93, 0x9054, 0x0B61, 0x9055, 0x04A7, 0x9056, 0x1B05, + 0x9058, 0x1B06, 0x9059, 0x1D34, 0x905C, 0x0B1D, 0x905E, 0x1B07, 0x9060, + 0x0515, 0x9061, 0x0ACE, 0x9063, 0x0763, 0x9065, 0x0F44, 0x9067, 0x21BA, + 0x9068, 0x1B08, 0x9069, 0x0C26, 0x906D, 0x0AFA, 0x906E, 0x0903, 0x906F, + 0x1B09, 0x9072, 0x1B0C, 0x9075, 0x096F, 0x9076, 0x1B0A, 0x9077, 0x0AAD, + 0x9078, 0x0AAC, 0x907A, 0x04A8, 0x907C, 0x0F93, 0x907D, 0x1B0E, 0x907F, + 0x0D86, 0x9080, 0x1B10, 0x9081, 0x1B0F, 0x9082, 0x1B0D, 0x9083, 0x1737, + 0x9084, 0x0610, 0x9087, 0x1AED, 0x9088, 0x3B58, 0x9089, 0x1B12, 0x908A, + 0x1B11, 0x908F, 0x1B13, 0x9091, 0x0F22, 0x9095, 0x3B59, 0x9099, 0x3B5A, + 0x909B, 0x3B5B, 0x90A2, 0x3B5C, 0x90A3, 0x0CB9, 0x90A6, 0x0E5C, 0x90A8, + 0x1B14, 0x90AA, 0x0905, 0x90AF, 0x1B15, 0x90B1, 0x1B16, 0x90B4, 0x3B5D, + 0x90B5, 0x1B17, 0x90B8, 0x0C1B, 0x90C1, 0x04AE, 0x90CA, 0x07EB, 0x90CE, + 0x0FE0, 0x90D7, 0x3B5E, 0x90DB, 0x1B1B, 0x90DD, 0x3B5F, 0x90DE, 0x21BB, + 0x90E1, 0x070A, 0x90E2, 0x1B18, 0x90E4, 0x1B19, 0x90E8, 0x0DE6, 0x90ED, + 0x05B2, 0x90F4, 0x3B60, 0x90F5, 0x0F23, 0x90F7, 0x06B7, 0x90FD, 0x0C4E, + 0x9102, 0x1B1C, 0x9112, 0x1B1D, 0x9115, 0x21BD, 0x9117, 0x3B61, 0x9119, + 0x1B1E, 0x911C, 0x3B62, 0x9127, 0x21BE, 0x912D, 0x0C1C, 0x9130, 0x1B20, + 0x9131, 0x3B63, 0x9132, 0x1B1F, 0x913A, 0x3B64, 0x913D, 0x3B65, 0x9148, + 0x3B66, 0x9149, 0x0CAB, 0x914A, 0x1B21, 0x914B, 0x0940, 0x914C, 0x090C, + 0x914D, 0x0D11, 0x914E, 0x0BAF, 0x9152, 0x091E, 0x9154, 0x0A32, 0x9156, + 0x1B22, 0x9158, 0x1B23, 0x915B, 0x3B67, 0x9161, 0x3B68, 0x9162, 0x0A23, + 0x9163, 0x1B24, 0x9164, 0x3B69, 0x9165, 0x1B25, 0x9169, 0x1B26, 0x916A, + 0x0F59, 0x916C, 0x0941, 0x9172, 0x1B28, 0x9173, 0x1B27, 0x9175, 0x07EC, + 0x9177, 0x0805, 0x9178, 0x088E, 0x9182, 0x1B2B, 0x9187, 0x0970, 0x9189, + 0x1B2A, 0x918B, 0x1B29, 0x918D, 0x0B49, 0x918E, 0x3B6A, 0x9190, 0x07A3, + 0x9192, 0x0A67, 0x9197, 0x0D44, 0x919C, 0x0943, 0x919E, 0x3B6B, 0x91A2, + 0x1B2C, 0x91A4, 0x09C7, 0x91A8, 0x3B6C, 0x91AA, 0x1B2F, 0x91AB, 0x1B2D, + 0x91AC, 0x1E1B, 0x91AD, 0x3B6D, 0x91AE, 0x3B6E, 0x91AF, 0x1B2E, 0x91B1, + 0x1E61, 0x91B2, 0x3B6F, 0x91B4, 0x1B31, 0x91B5, 0x1B30, 0x91B8, 0x09E2, + 0x91BA, 0x1B32, 0x91BC, 0x3B70, 0x91C0, 0x1B33, 0x91C1, 0x1B34, 0x91C6, + 0x0D64, 0x91C7, 0x0843, 0x91C8, 0x090D, 0x91C9, 0x1B35, 0x91CB, 0x1B36, + 0x91CC, 0x0F6C, 0x91CD, 0x094F, 0x91CE, 0x0EFA, 0x91CF, 0x0F94, 0x91D0, + 0x1B37, 0x91D1, 0x06DA, 0x91D6, 0x1B38, 0x91D7, 0x21C0, 0x91D8, 0x0C1D, + 0x91DA, 0x21BF, 0x91DB, 0x1B3B, 0x91DC, 0x05D6, 0x91DD, 0x0A11, 0x91DE, + 0x21C1, 0x91DF, 0x1B39, 0x91E1, 0x1B3A, 0x91E3, 0x0BFC, 0x91E4, 0x21C4, + 0x91E5, 0x21C5, 0x91E6, 0x0E83, 0x91E7, 0x06F4, 0x91ED, 0x21C2, 0x91EE, + 0x21C3, 0x91F0, 0x3B71, 0x91F5, 0x1B3D, 0x91F6, 0x1B3E, 0x91F7, 0x3B72, + 0x91FB, 0x3B73, 0x91FC, 0x1B3C, 0x91FF, 0x1B40, 0x9206, 0x21C6, 0x9207, + 0x3B74, 0x920A, 0x21C8, 0x920D, 0x0CB7, 0x920E, 0x05A1, 0x9210, 0x21C7, + 0x9211, 0x1B44, 0x9214, 0x1B41, 0x9215, 0x1B43, 0x921E, 0x1B3F, 0x9228, + 0x3B75, 0x9229, 0x1B8A, 0x922C, 0x1B42, 0x9233, 0x3B76, 0x9234, 0x0FB3, + 0x9237, 0x078E, 0x9238, 0x3B77, 0x9239, 0x21CF, 0x923A, 0x21C9, 0x923C, + 0x21CB, 0x923F, 0x1B4C, 0x9240, 0x21CA, 0x9243, 0x3B78, 0x9244, 0x0C2E, + 0x9245, 0x1B47, 0x9247, 0x3B79, 0x9248, 0x1B4A, 0x9249, 0x1B48, 0x924B, + 0x1B4D, 0x924E, 0x21CC, 0x924F, 0x3B7A, 0x9250, 0x1B4E, 0x9251, 0x21CE, + 0x9257, 0x1B46, 0x9259, 0x21CD, 0x925A, 0x1B53, 0x925B, 0x0516, 0x925E, + 0x1B45, 0x9260, 0x3B7B, 0x9262, 0x0D41, 0x9264, 0x1B49, 0x9266, 0x09C8, + 0x9267, 0x21D0, 0x9271, 0x07ED, 0x9277, 0x21D2, 0x9278, 0x21D3, 0x927E, + 0x0E76, 0x9280, 0x06DC, 0x9283, 0x0950, 0x9285, 0x0C94, 0x9288, 0x20AA, + 0x9291, 0x0AAF, 0x9293, 0x1B51, 0x9295, 0x1B4B, 0x9296, 0x1B50, 0x9298, + 0x0ECF, 0x929A, 0x0BD4, 0x929B, 0x1B52, 0x929C, 0x1B4F, 0x92A7, 0x21D1, + 0x92AD, 0x0AAE, 0x92B3, 0x3554, 0x92B7, 0x1B56, 0x92B9, 0x1B55, 0x92C2, + 0x3B7C, 0x92CB, 0x3B7D, 0x92CC, 0x3B7E, 0x92CF, 0x1B54, 0x92D0, 0x21D7, + 0x92D2, 0x0E5D, 0x92D3, 0x21DB, 0x92D5, 0x21D9, 0x92D7, 0x21D5, 0x92D9, + 0x21D6, 0x92DF, 0x3B7F, 0x92E0, 0x21DA, 0x92E4, 0x0985, 0x92E7, 0x21D4, + 0x92E9, 0x1B57, 0x92EA, 0x0E2F, 0x92ED, 0x04F6, 0x92F2, 0x0DB8, 0x92F3, + 0x0BB0, 0x92F8, 0x0692, 0x92F9, 0x20B0, 0x92FA, 0x1B59, 0x92FB, 0x21DE, + 0x92FC, 0x07EF, 0x92FF, 0x21E1, 0x9302, 0x21E3, 0x9304, 0x345A, 0x9306, + 0x087A, 0x930D, 0x3B80, 0x930F, 0x1B58, 0x9310, 0x0A33, 0x9315, 0x3B81, + 0x9318, 0x0A34, 0x9319, 0x1B5C, 0x931A, 0x1B5E, 0x931D, 0x21E2, 0x931E, + 0x21E0, 0x931F, 0x3B82, 0x9320, 0x09E3, 0x9321, 0x21DD, 0x9322, 0x1B5D, + 0x9323, 0x1B5F, 0x9325, 0x21DC, 0x9326, 0x06CB, 0x9327, 0x3B83, 0x9328, + 0x0DB7, 0x932B, 0x090E, 0x932C, 0x0FC9, 0x932E, 0x1B5B, 0x932F, 0x0868, + 0x9332, 0x0FE5, 0x9335, 0x1B61, 0x933A, 0x1B60, 0x933B, 0x1B62, 0x9344, + 0x1B5A, 0x9347, 0x3B84, 0x9348, 0x20A9, 0x934A, 0x3458, 0x934B, 0x0CC1, + 0x934D, 0x0C4F, 0x9352, 0x3B85, 0x9354, 0x0BF3, 0x9356, 0x1B67, 0x9357, + 0x21E5, 0x935B, 0x0B81, 0x935C, 0x1B63, 0x9360, 0x1B64, 0x9365, 0x3B86, + 0x936A, 0x3B87, 0x936C, 0x0703, 0x936D, 0x3B88, 0x936E, 0x1B66, 0x9370, + 0x21E4, 0x9375, 0x0764, 0x937C, 0x1B65, 0x937E, 0x09C9, 0x938C, 0x05D7, + 0x9394, 0x1B6B, 0x9396, 0x082F, 0x9397, 0x0AFB, 0x939A, 0x0BE6, 0x939B, + 0x3B89, 0x93A4, 0x21E6, 0x93A7, 0x0599, 0x93A9, 0x3B8B, 0x93AC, 0x1B69, + 0x93AD, 0x1B6A, 0x93AE, 0x0BDF, 0x93B0, 0x1B68, 0x93B9, 0x1B6C, 0x93BA, + 0x3B8A, 0x93C1, 0x3B8C, 0x93C3, 0x1B72, 0x93C6, 0x21E7, 0x93C8, 0x1B75, + 0x93CA, 0x3B8D, 0x93D0, 0x1B74, 0x93D1, 0x0C27, 0x93D6, 0x1B6D, 0x93D7, + 0x1B6E, 0x93D8, 0x1B71, 0x93DD, 0x1B73, 0x93DE, 0x21E8, 0x93E1, 0x06B8, + 0x93E2, 0x3B8E, 0x93E4, 0x1B76, 0x93E5, 0x1B70, 0x93E8, 0x1B6F, 0x93F8, + 0x21E9, 0x93FA, 0x3B8F, 0x93FD, 0x3B90, 0x9403, 0x1B7A, 0x9407, 0x1B7B, + 0x940F, 0x3B91, 0x9410, 0x1B7C, 0x9413, 0x1B79, 0x9414, 0x1B78, 0x9418, + 0x09CA, 0x9419, 0x0C82, 0x941A, 0x1B77, 0x9421, 0x1B80, 0x942B, 0x1B7E, + 0x9431, 0x21EA, 0x9434, 0x3B92, 0x9435, 0x1B7F, 0x9436, 0x1B7D, 0x9438, + 0x0B58, 0x943A, 0x1B81, 0x943F, 0x3B93, 0x9441, 0x1B82, 0x9444, 0x1B84, + 0x9445, 0x21EB, 0x9448, 0x21EC, 0x9451, 0x0611, 0x9452, 0x1B83, 0x9453, + 0x0F06, 0x9455, 0x3B94, 0x945A, 0x1B8F, 0x945B, 0x1B85, 0x945E, 0x1B88, + 0x9460, 0x1B86, 0x9462, 0x1B87, 0x946A, 0x1B89, 0x946B, 0x3B95, 0x9470, + 0x1B8B, 0x9472, 0x3B96, 0x9475, 0x1B8C, 0x9477, 0x1B8D, 0x947C, 0x1B90, + 0x947D, 0x1B8E, 0x947E, 0x1B91, 0x947F, 0x1B93, 0x9481, 0x1B92, 0x9577, + 0x0BD5, 0x9578, 0x3B97, 0x9580, 0x0EF3, 0x9582, 0x1B94, 0x9583, 0x0AB0, + 0x9587, 0x1B95, 0x9589, 0x0E14, 0x958A, 0x1B96, 0x958B, 0x0589, 0x958F, + 0x04DE, 0x9591, 0x0613, 0x9592, 0x21ED, 0x9593, 0x0612, 0x9594, 0x1B97, + 0x9596, 0x1B98, 0x9598, 0x1B99, 0x9599, 0x1B9A, 0x95A0, 0x1B9B, 0x95A2, + 0x0614, 0x95A3, 0x05B3, 0x95A4, 0x07F0, 0x95A5, 0x0D4A, 0x95A6, 0x3B98, + 0x95A7, 0x1B9D, 0x95A8, 0x1B9C, 0x95A9, 0x3B99, 0x95AB, 0x3B9A, 0x95AD, + 0x1B9E, 0x95B1, 0x3555, 0x95B2, 0x04FE, 0x95B4, 0x3B9B, 0x95B9, 0x1BA1, + 0x95BB, 0x1BA0, 0x95BC, 0x1B9F, 0x95BD, 0x3B9C, 0x95BE, 0x1BA2, 0x95C3, + 0x1BA5, 0x95C7, 0x048B, 0x95CA, 0x1BA3, 0x95CC, 0x1BA7, 0x95CD, 0x1BA6, + 0x95D4, 0x1BA9, 0x95D5, 0x1BA8, 0x95D6, 0x1BAA, 0x95D8, 0x0C86, 0x95DA, + 0x3B9D, 0x95DC, 0x1BAB, 0x95E1, 0x1BAC, 0x95E2, 0x1BAE, 0x95E5, 0x1BAD, + 0x961C, 0x0DDE, 0x961D, 0x3B9E, 0x9621, 0x1BAF, 0x9628, 0x1BB0, 0x962A, + 0x0855, 0x962E, 0x1BB1, 0x962F, 0x1BB2, 0x9632, 0x0E77, 0x963B, 0x0ACD, + 0x963F, 0x0468, 0x9640, 0x0B2B, 0x9641, 0x3B9F, 0x9642, 0x1BB3, 0x9644, + 0x0DDF, 0x964B, 0x1BB6, 0x964C, 0x1BB4, 0x964D, 0x07F1, 0x964F, 0x1BB5, + 0x9650, 0x0776, 0x9658, 0x3BA0, 0x965B, 0x0E15, 0x965C, 0x1BB8, 0x965D, + 0x1BBA, 0x965E, 0x1BB9, 0x965F, 0x1BBB, 0x9662, 0x04C3, 0x9663, 0x0A1E, + 0x9664, 0x0986, 0x9665, 0x0615, 0x9666, 0x1BBC, 0x966A, 0x0D1C, 0x966C, + 0x1BBE, 0x9670, 0x04C4, 0x9672, 0x1BBD, 0x9673, 0x0BE0, 0x9675, 0x0F95, + 0x9676, 0x0C83, 0x9677, 0x1BB7, 0x9678, 0x0F6E, 0x967A, 0x0765, 0x967D, + 0x0F45, 0x9684, 0x3BA1, 0x9685, 0x06F1, 0x9686, 0x0F7C, 0x9688, 0x06FE, + 0x968A, 0x0B42, 0x968B, 0x186C, 0x968D, 0x1BBF, 0x968E, 0x058A, 0x968F, + 0x0A35, 0x9694, 0x05B4, 0x9695, 0x1BC1, 0x9697, 0x1BC2, 0x9698, 0x1BC0, + 0x9699, 0x073A, 0x969B, 0x084D, 0x969C, 0x09CB, 0x969D, 0x21F0, 0x96A0, + 0x04C5, 0x96A3, 0x0FA1, 0x96A4, 0x3BA2, 0x96A7, 0x1BC4, 0x96A8, 0x1B0B, + 0x96A9, 0x3BA3, 0x96AA, 0x1BC3, 0x96AF, 0x21F1, 0x96B0, 0x1BC7, 0x96B1, + 0x1BC5, 0x96B2, 0x1BC6, 0x96B4, 0x1BC8, 0x96B6, 0x1BC9, 0x96B7, 0x0FB4, + 0x96B8, 0x1BCA, 0x96B9, 0x1BCB, 0x96BB, 0x0A6D, 0x96BC, 0x0D4F, 0x96C0, + 0x0A43, 0x96C1, 0x0623, 0x96C4, 0x0F24, 0x96C5, 0x056D, 0x96C6, 0x0942, + 0x96C7, 0x078F, 0x96C9, 0x1BCE, 0x96CB, 0x1BCD, 0x96CC, 0x08C1, 0x96CD, + 0x1BCF, 0x96CE, 0x1BCC, 0x96D1, 0x0876, 0x96D2, 0x3BA4, 0x96D5, 0x1BD3, + 0x96D6, 0x1992, 0x96D9, 0x10EB, 0x96DB, 0x0A3D, 0x96DC, 0x1BD1, 0x96DE, + 0x3BA6, 0x96E2, 0x0F6D, 0x96E3, 0x0CC9, 0x96E8, 0x04CD, 0x96E9, 0x3BA7, + 0x96EA, 0x0A87, 0x96EB, 0x08E2, 0x96F0, 0x0E07, 0x96F1, 0x3BA8, 0x96F2, + 0x04E2, 0x96F6, 0x0FB5, 0x96F7, 0x0F55, 0x96F9, 0x1BD4, 0x96FB, 0x0C3F, + 0x9700, 0x0927, 0x9702, 0x3BA9, 0x9704, 0x1BD5, 0x9706, 0x1BD6, 0x9707, + 0x0A12, 0x9708, 0x1BD7, 0x9709, 0x3BAA, 0x970A, 0x0FB6, 0x970D, 0x1BD2, + 0x970E, 0x1BD9, 0x970F, 0x1BDB, 0x9711, 0x1BDA, 0x9713, 0x1BD8, 0x9716, + 0x1BDC, 0x9719, 0x1BDD, 0x971C, 0x0AFC, 0x971E, 0x0562, 0x9724, 0x1BDE, + 0x9727, 0x0EC4, 0x972A, 0x1BDF, 0x9730, 0x1BE0, 0x9732, 0x0FD0, 0x9733, + 0x21F2, 0x9738, 0x1414, 0x9739, 0x1BE1, 0x973B, 0x21F3, 0x973D, 0x1BE2, + 0x973E, 0x1BE3, 0x9742, 0x1BE7, 0x9743, 0x21F4, 0x9744, 0x1BE4, 0x9746, + 0x1BE5, 0x9748, 0x1BE6, 0x9749, 0x1BE8, 0x974D, 0x21F5, 0x974F, 0x21F6, + 0x9751, 0x21F7, 0x9752, 0x0A68, 0x9755, 0x21F8, 0x9756, 0x0F03, 0x9759, + 0x0A69, 0x975A, 0x3BAB, 0x975C, 0x1BE9, 0x975E, 0x0D87, 0x9760, 0x1BEA, + 0x9761, 0x1D06, 0x9762, 0x0ED8, 0x9763, 0x3BAC, 0x9764, 0x1BEB, 0x9766, + 0x1BEC, 0x9768, 0x1BED, 0x9769, 0x05B5, 0x976B, 0x1BEF, 0x976D, 0x0A1F, + 0x976E, 0x3BAD, 0x9771, 0x1BF0, 0x9773, 0x3BAE, 0x9774, 0x06FA, 0x9779, + 0x1BF1, 0x977A, 0x1BF5, 0x977C, 0x1BF3, 0x9781, 0x1BF4, 0x9784, 0x05D1, + 0x9785, 0x1BF2, 0x9786, 0x1BF6, 0x978B, 0x1BF7, 0x978D, 0x048C, 0x978F, + 0x1BF8, 0x9790, 0x1BF9, 0x9798, 0x09CC, 0x979A, 0x3BAF, 0x979C, 0x1BFA, + 0x97A0, 0x0661, 0x97A2, 0x3BB0, 0x97A3, 0x1BFD, 0x97A6, 0x1BFC, 0x97A8, + 0x1BFB, 0x97AB, 0x1A34, 0x97AD, 0x0E2C, 0x97B3, 0x1BFE, 0x97B4, 0x1BFF, + 0x97B5, 0x3BB1, 0x97B6, 0x3BB2, 0x97C3, 0x1C00, 0x97C6, 0x1C01, 0x97C8, + 0x1C02, 0x97CB, 0x1C03, 0x97D3, 0x0616, 0x97D9, 0x3BB3, 0x97DC, 0x1C04, + 0x97DE, 0x3BB4, 0x97ED, 0x1C05, 0x97EE, 0x0CD9, 0x97F2, 0x1C07, 0x97F3, + 0x053B, 0x97F4, 0x3BB5, 0x97F5, 0x1C0A, 0x97F6, 0x1C09, 0x97FB, 0x04C6, + 0x97FF, 0x06B9, 0x9801, 0x0E17, 0x9802, 0x0BD6, 0x9803, 0x0812, 0x9805, + 0x07F2, 0x9806, 0x0971, 0x9808, 0x0A22, 0x980A, 0x3BB6, 0x980C, 0x1C0C, + 0x980E, 0x3BB7, 0x980F, 0x1C0B, 0x9810, 0x0F2C, 0x9811, 0x0624, 0x9812, + 0x0D66, 0x9813, 0x0CB4, 0x9817, 0x0A42, 0x9818, 0x0F96, 0x981A, 0x0731, + 0x981E, 0x3BB8, 0x9821, 0x1C0F, 0x9823, 0x3BB9, 0x9824, 0x1C0E, 0x982B, + 0x3BBA, 0x982C, 0x0E79, 0x982D, 0x0C84, 0x9830, 0x1E73, 0x9834, 0x04F2, + 0x9837, 0x1C10, 0x9838, 0x1C0D, 0x9839, 0x37B3, 0x983B, 0x0DC3, 0x983C, + 0x0F54, 0x983D, 0x1C11, 0x983E, 0x3BBB, 0x9846, 0x1C12, 0x984B, 0x1C14, + 0x984C, 0x0B4A, 0x984D, 0x05B9, 0x984E, 0x05BA, 0x984F, 0x1C13, 0x9852, + 0x3BBC, 0x9853, 0x3BBD, 0x9854, 0x0625, 0x9855, 0x0766, 0x9857, 0x21F9, + 0x9858, 0x0626, 0x9859, 0x3BBE, 0x985A, 0x1E48, 0x985B, 0x0C39, 0x985E, + 0x0FA8, 0x9865, 0x21FA, 0x9867, 0x0790, 0x986B, 0x1C15, 0x986C, 0x3BBF, + 0x986F, 0x1C16, 0x9870, 0x1C17, 0x9871, 0x1C18, 0x9873, 0x1C1A, 0x9874, + 0x1C19, 0x98A8, 0x0DE9, 0x98AA, 0x1C1B, 0x98AF, 0x1C1C, 0x98B1, 0x1C1D, + 0x98B6, 0x1C1E, 0x98B8, 0x3BC0, 0x98BA, 0x3BC1, 0x98BF, 0x3BC2, 0x98C3, + 0x1C20, 0x98C4, 0x1C1F, 0x98C6, 0x1C21, 0x98C8, 0x3BC3, 0x98DB, 0x0D88, + 0x98DC, 0x1839, 0x98DF, 0x09EF, 0x98E0, 0x3618, 0x98E2, 0x064C, 0x98E5, + 0x3BC4, 0x98E9, 0x1C22, 0x98EB, 0x1C23, 0x98ED, 0x10C1, 0x98EE, 0x14DA, + 0x98EF, 0x0D67, 0x98F2, 0x04BF, 0x98F4, 0x047F, 0x98FC, 0x08C2, 0x98FD, + 0x0E5E, 0x98FE, 0x09E6, 0x9903, 0x1C24, 0x9905, 0x0EEB, 0x9909, 0x1C25, + 0x990A, 0x0F46, 0x990C, 0x04E4, 0x9910, 0x088F, 0x9912, 0x1C26, 0x9913, + 0x056E, 0x9914, 0x1C27, 0x9918, 0x1C28, 0x991D, 0x1C2A, 0x991E, 0x1C2B, + 0x9920, 0x1C2D, 0x9921, 0x1C29, 0x9924, 0x1C2C, 0x9927, 0x21FD, 0x9928, + 0x0617, 0x992C, 0x1C2E, 0x992E, 0x1C2F, 0x9932, 0x3BC5, 0x9933, 0x3BC6, + 0x993D, 0x1C30, 0x993E, 0x1C31, 0x9940, 0x3BC7, 0x9942, 0x1C32, 0x9945, + 0x1C34, 0x9949, 0x1C33, 0x994B, 0x1C36, 0x994C, 0x1C39, 0x994D, 0x3BC8, + 0x9950, 0x1C35, 0x9951, 0x1C37, 0x9952, 0x1C38, 0x9955, 0x1C3A, 0x9957, + 0x06BA, 0x995C, 0x3BC9, 0x995F, 0x3BCA, 0x9996, 0x091F, 0x9997, 0x1C3B, + 0x9998, 0x1C3C, 0x9999, 0x07F3, 0x999E, 0x21FF, 0x99A5, 0x1C3D, 0x99A8, + 0x059C, 0x99AC, 0x0D05, 0x99AD, 0x1C3E, 0x99AE, 0x1C3F, 0x99B1, 0x3BCB, + 0x99B3, 0x0B98, 0x99B4, 0x0CC3, 0x99B9, 0x3BCC, 0x99BA, 0x3BCD, 0x99BC, + 0x1C40, 0x99C1, 0x0D33, 0x99C4, 0x0B2C, 0x99C5, 0x04FA, 0x99C6, 0x06E6, + 0x99C8, 0x06E7, 0x99C9, 0x3BCE, 0x99D0, 0x0BB1, 0x99D1, 0x1C45, 0x99D2, + 0x06E8, 0x99D5, 0x056F, 0x99D8, 0x1C44, 0x99DB, 0x1C42, 0x99DD, 0x1C43, + 0x99DF, 0x1C41, 0x99E2, 0x1C4F, 0x99ED, 0x1C46, 0x99EE, 0x1C47, 0x99F1, + 0x1C48, 0x99F2, 0x1C49, 0x99F8, 0x1C4B, 0x99FB, 0x1C4A, 0x99FF, 0x0963, + 0x9A01, 0x1C4C, 0x9A02, 0x3BCF, 0x9A05, 0x1C4E, 0x9A08, 0x37BA, 0x9A0E, + 0x064D, 0x9A0F, 0x1C4D, 0x9A12, 0x0AFD, 0x9A13, 0x0767, 0x9A16, 0x3BD0, + 0x9A19, 0x1C50, 0x9A24, 0x3BD1, 0x9A27, 0x3BD2, 0x9A28, 0x0B2D, 0x9A2B, + 0x1C51, 0x9A2D, 0x3BD3, 0x9A2E, 0x3BD4, 0x9A30, 0x0C85, 0x9A36, 0x3BD5, + 0x9A37, 0x1C52, 0x9A38, 0x3BD6, 0x9A3E, 0x1C57, 0x9A40, 0x1C55, 0x9A42, + 0x1C54, 0x9A43, 0x1C56, 0x9A45, 0x1C53, 0x9A4A, 0x3BD7, 0x9A4D, 0x1C59, + 0x9A4E, 0x2200, 0x9A52, 0x1E2F, 0x9A55, 0x1C58, 0x9A56, 0x3BD8, 0x9A57, + 0x1C5B, 0x9A5A, 0x06BB, 0x9A5B, 0x1C5A, 0x9A5F, 0x1C5C, 0x9A62, 0x1C5D, + 0x9A64, 0x1C5F, 0x9A65, 0x1C5E, 0x9A69, 0x1C60, 0x9A6A, 0x1C62, 0x9A6B, + 0x1C61, 0x9AA8, 0x080E, 0x9AAD, 0x1C63, 0x9AB0, 0x1C64, 0x9AB5, 0x3BD9, + 0x9AB6, 0x3BDA, 0x9AB8, 0x059A, 0x9ABC, 0x1C65, 0x9AC0, 0x1C66, 0x9AC4, + 0x0A37, 0x9ACF, 0x1C67, 0x9AD1, 0x1C68, 0x9AD3, 0x1C69, 0x9AD4, 0x1C6A, + 0x9AD8, 0x07F4, 0x9AD9, 0x2201, 0x9ADC, 0x2202, 0x9ADE, 0x1C6B, 0x9ADF, + 0x1C6C, 0x9AE2, 0x1C6D, 0x9AE3, 0x1C6E, 0x9AE6, 0x1C6F, 0x9AEA, 0x0D45, + 0x9AEB, 0x1C71, 0x9AED, 0x0D98, 0x9AEE, 0x1C72, 0x9AEF, 0x1C70, 0x9AF1, + 0x1C74, 0x9AF4, 0x1C73, 0x9AF7, 0x1C75, 0x9AF9, 0x3BDB, 0x9AFB, 0x1C76, + 0x9B03, 0x3BDC, 0x9B06, 0x1C77, 0x9B18, 0x1C78, 0x9B1A, 0x1C79, 0x9B1F, + 0x1C7A, 0x9B20, 0x3BDD, 0x9B22, 0x1C7B, 0x9B23, 0x1C7C, 0x9B25, 0x1C7D, + 0x9B27, 0x1C7E, 0x9B28, 0x1C7F, 0x9B29, 0x1C80, 0x9B2A, 0x1C81, 0x9B2D, + 0x343C, 0x9B2E, 0x1C82, 0x9B2F, 0x1C83, 0x9B31, 0x14D4, 0x9B32, 0x1C84, + 0x9B33, 0x3BDE, 0x9B34, 0x3BDF, 0x9B3B, 0x17A9, 0x9B3C, 0x064E, 0x9B41, + 0x057F, 0x9B42, 0x0822, 0x9B43, 0x1C86, 0x9B44, 0x1C85, 0x9B45, 0x0EB1, + 0x9B4D, 0x1C88, 0x9B4E, 0x1C89, 0x9B4F, 0x1C87, 0x9B51, 0x1C8A, 0x9B54, + 0x0E90, 0x9B58, 0x1C8B, 0x9B5A, 0x0695, 0x9B6F, 0x0FCB, 0x9B72, 0x2204, + 0x9B73, 0x3BE0, 0x9B74, 0x1C8C, 0x9B75, 0x2203, 0x9B79, 0x3BE1, 0x9B83, + 0x1C8E, 0x9B8E, 0x0482, 0x9B8F, 0x2205, 0x9B91, 0x1C8F, 0x9B92, 0x0DFB, + 0x9B93, 0x1C8D, 0x9B96, 0x1C90, 0x9B97, 0x1C91, 0x9B9F, 0x1C92, 0x9BA0, + 0x1C93, 0x9BA7, 0x3BE2, 0x9BA8, 0x1C94, 0x9BAA, 0x0E9C, 0x9BAB, 0x087B, + 0x9BAD, 0x086A, 0x9BAE, 0x0AB1, 0x9BB1, 0x2206, 0x9BB4, 0x1C95, 0x9BB9, + 0x1C98, 0x9BBB, 0x2207, 0x9BC0, 0x1C96, 0x9BC1, 0x3BE3, 0x9BC6, 0x1C99, + 0x9BC7, 0x3BE4, 0x9BC9, 0x07A5, 0x9BCA, 0x1C97, 0x9BCF, 0x1C9A, 0x9BD1, + 0x1C9B, 0x9BD2, 0x1C9C, 0x9BD4, 0x1CA0, 0x9BD6, 0x0878, 0x9BD7, 0x3BE5, + 0x9BDB, 0x0B44, 0x9BDF, 0x37BF, 0x9BE1, 0x1CA1, 0x9BE2, 0x1C9E, 0x9BE3, + 0x1C9D, 0x9BE4, 0x1C9F, 0x9BE7, 0x3BE6, 0x9BE8, 0x0735, 0x9BEB, 0x3BE7, + 0x9BF0, 0x1CA5, 0x9BF1, 0x1CA4, 0x9BF2, 0x1CA3, 0x9BF5, 0x0477, 0x9BF7, + 0x3BE8, 0x9BFA, 0x3BE9, 0x9BFD, 0x3BEA, 0x9C00, 0x2208, 0x9C04, 0x1CAF, + 0x9C06, 0x1CAB, 0x9C08, 0x1CAC, 0x9C09, 0x1CA8, 0x9C0A, 0x1CAE, 0x9C0B, + 0x3BEB, 0x9C0C, 0x1CAA, 0x9C0D, 0x05C0, 0x9C10, 0x0FF2, 0x9C12, 0x1CAD, + 0x9C13, 0x1CA9, 0x9C14, 0x1CA7, 0x9C15, 0x1CA6, 0x9C1B, 0x1CB1, 0x9C21, + 0x1CB4, 0x9C24, 0x1CB3, 0x9C25, 0x1CB2, 0x9C27, 0x3BEC, 0x9C2A, 0x3BED, + 0x9C2D, 0x0DBB, 0x9C2E, 0x1CB0, 0x9C2F, 0x04B7, 0x9C30, 0x1CB5, 0x9C32, + 0x1CB7, 0x9C36, 0x3BEE, 0x9C39, 0x05CD, 0x9C3A, 0x1CA2, 0x9C3B, 0x04D9, + 0x9C3E, 0x1CB9, 0x9C41, 0x3BEF, 0x9C46, 0x1CB8, 0x9C47, 0x1CB6, 0x9C48, + 0x0B6B, 0x9C52, 0x0E9E, 0x9C53, 0x3BF0, 0x9C57, 0x0FA2, 0x9C5A, 0x1CBA, + 0x9C60, 0x1CBB, 0x9C63, 0x3BF1, 0x9C67, 0x1CBC, 0x9C6A, 0x3BF2, 0x9C76, + 0x1CBD, 0x9C77, 0x3BF3, 0x9C78, 0x1CBE, 0x9CE5, 0x0BD7, 0x9CE7, 0x1CBF, + 0x9CE9, 0x0D4B, 0x9CEB, 0x1CC4, 0x9CEC, 0x1CC0, 0x9CF0, 0x1CC1, 0x9CF3, + 0x0E5F, 0x9CF4, 0x0ED0, 0x9CF6, 0x0CA8, 0x9D02, 0x3BF4, 0x9D03, 0x1CC5, + 0x9D06, 0x1CC6, 0x9D07, 0x0C96, 0x9D08, 0x1CC3, 0x9D09, 0x1CC2, 0x9D0E, + 0x052A, 0x9D12, 0x1CCE, 0x9D15, 0x1CCD, 0x9D1B, 0x0517, 0x9D1F, 0x1CCB, + 0x9D23, 0x1CCA, 0x9D26, 0x1CC8, 0x9D28, 0x05D9, 0x9D2A, 0x1CC7, 0x9D2B, + 0x08DE, 0x9D2C, 0x0529, 0x9D3B, 0x07F5, 0x9D3E, 0x1CD1, 0x9D3F, 0x1CD0, + 0x9D41, 0x1CCF, 0x9D42, 0x3BF5, 0x9D44, 0x1CCC, 0x9D46, 0x1CD2, 0x9D47, + 0x3BF6, 0x9D48, 0x1CD3, 0x9D50, 0x1CD8, 0x9D51, 0x1CD7, 0x9D59, 0x1CD9, + 0x9D5C, 0x04CF, 0x9D5D, 0x1CD4, 0x9D5E, 0x1CD5, 0x9D60, 0x0806, 0x9D61, + 0x0EC5, 0x9D63, 0x3BF7, 0x9D64, 0x1CD6, 0x9D69, 0x3BF8, 0x9D6B, 0x220A, + 0x9D6C, 0x0E60, 0x9D6F, 0x1CDE, 0x9D70, 0x2209, 0x9D72, 0x1CDA, 0x9D7A, + 0x1CDF, 0x9D7C, 0x3BF9, 0x9D7E, 0x3BFA, 0x9D87, 0x1CDC, 0x9D89, 0x1CDB, + 0x9D8D, 0x3BFB, 0x9D8F, 0x0732, 0x9D9A, 0x1CE0, 0x9DA4, 0x1CE1, 0x9DA9, + 0x1CE2, 0x9DAB, 0x1CDD, 0x9DAF, 0x1CC9, 0x9DB1, 0x3BFC, 0x9DB2, 0x1CE3, + 0x9DB4, 0x0BFD, 0x9DB8, 0x1CE7, 0x9DBA, 0x1CE8, 0x9DBB, 0x1CE6, 0x9DC1, + 0x1CE5, 0x9DC2, 0x1CEB, 0x9DC3, 0x3BFD, 0x9DC4, 0x1CE4, 0x9DC6, 0x1CE9, + 0x9DC7, 0x3BFE, 0x9DCF, 0x1CEA, 0x9DD3, 0x1CED, 0x9DD6, 0x3BFF, 0x9DD7, + 0x1DDE, 0x9DD9, 0x1CEC, 0x9DDF, 0x3C00, 0x9DE6, 0x1CEF, 0x9DEB, 0x3C01, + 0x9DED, 0x1CF0, 0x9DEF, 0x1CF1, 0x9DF2, 0x0FEF, 0x9DF4, 0x3C02, 0x9DF8, + 0x1CEE, 0x9DF9, 0x0B4B, 0x9DFA, 0x085D, 0x9DFD, 0x1CF2, 0x9E15, 0x3C03, + 0x9E19, 0x220C, 0x9E1A, 0x1CF3, 0x9E1B, 0x1CF4, 0x9E1D, 0x3C04, 0x9E1E, + 0x1CF5, 0x9E75, 0x1CF6, 0x9E78, 0x0768, 0x9E79, 0x1CF7, 0x9E7C, 0x1DFD, + 0x9E7D, 0x1CF8, 0x9E7F, 0x08DB, 0x9E81, 0x1CF9, 0x9E88, 0x1CFA, 0x9E8B, + 0x1CFB, 0x9E8C, 0x1CFC, 0x9E91, 0x1CFF, 0x9E92, 0x1CFD, 0x9E93, 0x0FE2, + 0x9E95, 0x1CFE, 0x9E97, 0x0FB7, 0x9E9D, 0x1D00, 0x9E9F, 0x0FA3, 0x9EA4, + 0x3C05, 0x9EA5, 0x1D01, 0x9EA6, 0x0D34, 0x9EA8, 0x3C06, 0x9EA9, 0x1D02, + 0x9EAA, 0x1D04, 0x9EAC, 0x3C07, 0x9EAD, 0x1D05, 0x9EB4, 0x1E02, 0x9EB5, + 0x1E75, 0x9EB8, 0x1D03, 0x9EB9, 0x07FF, 0x9EBA, 0x0ED9, 0x9EBB, 0x0E91, + 0x9EBC, 0x1284, 0x9EBE, 0x14FF, 0x9EBF, 0x0EA9, 0x9EC3, 0x340B, 0x9EC4, + 0x052B, 0x9ECC, 0x1D07, 0x9ECD, 0x066A, 0x9ECE, 0x1D08, 0x9ECF, 0x1D09, + 0x9ED0, 0x1D0A, 0x9ED1, 0x220D, 0x9ED2, 0x0807, 0x9ED4, 0x1D0B, 0x9ED8, + 0x160D, 0x9ED9, 0x0EE7, 0x9EDB, 0x0B43, 0x9EDC, 0x1D0C, 0x9EDD, 0x1D0E, + 0x9EDE, 0x1D0D, 0x9EE0, 0x1D0F, 0x9EE5, 0x1D10, 0x9EE7, 0x3C08, 0x9EE8, + 0x1D11, 0x9EEE, 0x3C09, 0x9EEF, 0x1D12, 0x9EF4, 0x1D13, 0x9EF6, 0x1D14, + 0x9EF7, 0x1D15, 0x9EF9, 0x1D16, 0x9EFB, 0x1D17, 0x9EFC, 0x1D18, 0x9EFD, + 0x1D19, 0x9F07, 0x1D1A, 0x9F08, 0x1D1B, 0x9F0E, 0x0C1E, 0x9F10, 0x3C0A, + 0x9F12, 0x3C0B, 0x9F13, 0x0791, 0x9F15, 0x1D1D, 0x9F17, 0x3C0C, 0x9F19, + 0x3C0D, 0x9F20, 0x0ACF, 0x9F21, 0x1D1E, 0x9F2C, 0x1D1F, 0x9F2F, 0x3C0E, + 0x9F37, 0x3C0F, 0x9F39, 0x3C10, 0x9F3B, 0x0D93, 0x9F3E, 0x1D20, 0x9F41, + 0x3C11, 0x9F45, 0x3C12, 0x9F4A, 0x1D21, 0x9F4B, 0x170A, 0x9F4E, 0x1A7B, + 0x9F4F, 0x1C06, 0x9F52, 0x1D22, 0x9F54, 0x1D23, 0x9F57, 0x3C13, 0x9F5F, + 0x1D25, 0x9F60, 0x1D26, 0x9F61, 0x1D27, 0x9F62, 0x0FB8, 0x9F63, 0x1D24, + 0x9F66, 0x1D28, 0x9F67, 0x1D29, 0x9F68, 0x3C14, 0x9F6A, 0x1D2B, 0x9F6C, + 0x1D2A, 0x9F71, 0x3C15, 0x9F72, 0x1D2D, 0x9F75, 0x3C16, 0x9F76, 0x1D2E, + 0x9F77, 0x1D2C, 0x9F8D, 0x0F7E, 0x9F90, 0x3C17, 0x9F94, 0x3C18, 0x9F95, + 0x1D2F, 0x9F9C, 0x1D30, 0x9F9D, 0x1727, 0x9FA0, 0x1D31, 0x9FA2, 0x3C19, + 0xF929, 0x2129, 0xF9DC, 0x21EE, 0xFA0E, 0x20DA, 0xFA0F, 0x20E5, 0xFA10, + 0x20E6, 0xFA11, 0x20FB, 0xFA12, 0x2121, 0xFA13, 0x2131, 0xFA14, 0x2133, + 0xFA15, 0x215E, 0xFA16, 0x2164, 0xFA17, 0x217B, 0xFA18, 0x2183, 0xFA19, + 0x2184, 0xFA1A, 0x2185, 0xFA1B, 0x2187, 0xFA1C, 0x218B, 0xFA1D, 0x218E, + 0xFA1E, 0x2197, 0xFA1F, 0x21A2, 0xFA20, 0x21A4, 0xFA21, 0x21A5, 0xFA22, + 0x21AE, 0xFA23, 0x21B6, 0xFA24, 0x21B8, 0xFA25, 0x21B9, 0xFA26, 0x21BC, + 0xFA27, 0x21D8, 0xFA28, 0x21DF, 0xFA29, 0x21EF, 0xFA2A, 0x21FB, 0xFA2B, + 0x21FC, 0xFA2C, 0x21FE, 0xFA2D, 0x220B, 0xFB00, 0x248E, 0xFB01, 0x0070, + 0xFB02, 0x0071, 0xFB03, 0x248F, 0xFB04, 0x2490, 0xFE30, 0x1EDA, 0xFE31, + 0x1ED4, 0xFE32, 0x1ED5, 0xFE33, 0x1ED2, 0xFE35, 0x1EDB, 0xFE36, 0x1EDC, + 0xFE37, 0x1EE1, 0xFE38, 0x1EE2, 0xFE39, 0x1EDD, 0xFE3A, 0x1EDE, 0xFE3B, + 0x1EEB, 0xFE3C, 0x1EEC, 0xFE3D, 0x1EE5, 0xFE3E, 0x1EE6, 0xFE3F, 0x1EE3, + 0xFE40, 0x1EE4, 0xFE41, 0x1EE7, 0xFE42, 0x1EE8, 0xFE43, 0x1EE9, 0xFE44, + 0x1EEA, 0xFF01, 0x0282, 0xFF02, 0x1F47, 0xFF03, 0x02CC, 0xFF04, 0x02C8, + 0xFF05, 0x02CB, 0xFF06, 0x02CD, 0xFF07, 0x1F46, 0xFF08, 0x02A2, 0xFF09, + 0x02A3, 0xFF0A, 0x02CE, 0xFF0B, 0x02B4, 0xFF0C, 0x027C, 0xFF0D, 0x02B5, + 0xFF0E, 0x027D, 0xFF0F, 0x0297, 0xFF10, 0x030C, 0xFF11, 0x030D, 0xFF12, + 0x030E, 0xFF13, 0x030F, 0xFF14, 0x0310, 0xFF15, 0x0311, 0xFF16, 0x0312, + 0xFF17, 0x0313, 0xFF18, 0x0314, 0xFF19, 0x0315, 0xFF1A, 0x027F, 0xFF1B, + 0x0280, 0xFF1C, 0x02BB, 0xFF1D, 0x02B9, 0xFF1E, 0x02BC, 0xFF1F, 0x0281, + 0xFF20, 0x02CF, 0xFF21, 0x0316, 0xFF22, 0x0317, 0xFF23, 0x0318, 0xFF24, + 0x0319, 0xFF25, 0x031A, 0xFF26, 0x031B, 0xFF27, 0x031C, 0xFF28, 0x031D, + 0xFF29, 0x031E, 0xFF2A, 0x031F, 0xFF2B, 0x0320, 0xFF2C, 0x0321, 0xFF2D, + 0x0322, 0xFF2E, 0x0323, 0xFF2F, 0x0324, 0xFF30, 0x0325, 0xFF31, 0x0326, + 0xFF32, 0x0327, 0xFF33, 0x0328, 0xFF34, 0x0329, 0xFF35, 0x032A, 0xFF36, + 0x032B, 0xFF37, 0x032C, 0xFF38, 0x032D, 0xFF39, 0x032E, 0xFF3A, 0x032F, + 0xFF3B, 0x02A6, 0xFF3C, 0x0298, 0xFF3D, 0x02A7, 0xFF3E, 0x0288, 0xFF3F, + 0x028A, 0xFF40, 0x0286, 0xFF41, 0x0330, 0xFF42, 0x0331, 0xFF43, 0x0332, + 0xFF44, 0x0333, 0xFF45, 0x0334, 0xFF46, 0x0335, 0xFF47, 0x0336, 0xFF48, + 0x0337, 0xFF49, 0x0338, 0xFF4A, 0x0339, 0xFF4B, 0x033A, 0xFF4C, 0x033B, + 0xFF4D, 0x033C, 0xFF4E, 0x033D, 0xFF4F, 0x033E, 0xFF50, 0x033F, 0xFF51, + 0x0340, 0xFF52, 0x0341, 0xFF53, 0x0342, 0xFF54, 0x0343, 0xFF55, 0x0344, + 0xFF56, 0x0345, 0xFF57, 0x0346, 0xFF58, 0x0347, 0xFF59, 0x0348, 0xFF5A, + 0x0349, 0xFF5B, 0x02A8, 0xFF5C, 0x029B, 0xFF5D, 0x02A9, 0xFF5E, 0x0299, + 0xFF61, 0x0147, 0xFF62, 0x0148, 0xFF63, 0x0149, 0xFF64, 0x014A, 0xFF65, + 0x014B, 0xFF66, 0x014C, 0xFF67, 0x014D, 0xFF68, 0x014E, 0xFF69, 0x014F, + 0xFF6A, 0x0150, 0xFF6B, 0x0151, 0xFF6C, 0x0152, 0xFF6D, 0x0153, 0xFF6E, + 0x0154, 0xFF6F, 0x0155, 0xFF70, 0x0156, 0xFF71, 0x0157, 0xFF72, 0x0158, + 0xFF73, 0x0159, 0xFF74, 0x015A, 0xFF75, 0x015B, 0xFF76, 0x015C, 0xFF77, + 0x015D, 0xFF78, 0x015E, 0xFF79, 0x015F, 0xFF7A, 0x0160, 0xFF7B, 0x0161, + 0xFF7C, 0x0162, 0xFF7D, 0x0163, 0xFF7E, 0x0164, 0xFF7F, 0x0165, 0xFF80, + 0x0166, 0xFF81, 0x0167, 0xFF82, 0x0168, 0xFF83, 0x0169, 0xFF84, 0x016A, + 0xFF85, 0x016B, 0xFF86, 0x016C, 0xFF87, 0x016D, 0xFF88, 0x016E, 0xFF89, + 0x016F, 0xFF8A, 0x0170, 0xFF8B, 0x0171, 0xFF8C, 0x0172, 0xFF8D, 0x0173, + 0xFF8E, 0x0174, 0xFF8F, 0x0175, 0xFF90, 0x0176, 0xFF91, 0x0177, 0xFF92, + 0x0178, 0xFF93, 0x0179, 0xFF94, 0x017A, 0xFF95, 0x017B, 0xFF96, 0x017C, + 0xFF97, 0x017D, 0xFF98, 0x017E, 0xFF99, 0x017F, 0xFF9A, 0x0180, 0xFF9B, + 0x0181, 0xFF9C, 0x0182, 0xFF9D, 0x0183, 0xFF9E, 0x0184, 0xFF9F, 0x0185, + 0xFFE0, 0x02C9, 0xFFE1, 0x02CA, 0xFFE2, 0x02EF, 0xFFE3, 0x0289, 0xFFE4, + 0x1F45, 0xFFE5, 0x02C7, 0xFFE8, 0x0143, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp new file mode 100644 index 0000000000..fc0375cb20 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp @@ -0,0 +1,66 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_UniJIS_UCS2_V_4[251 * 2] = { + 0x00B0, 0x204D, 0x2010, 0x1ED5, 0x2015, 0x1ED4, 0x2016, 0x1ED7, 0x2018, + 0x2059, 0x2019, 0x205A, 0x201C, 0x2057, 0x201D, 0x2058, 0x2025, 0x1EDA, + 0x2026, 0x1ED9, 0x2032, 0x2051, 0x2033, 0x205B, 0x2190, 0x02E2, 0x2191, + 0x02E0, 0x2192, 0x02E3, 0x2193, 0x02E1, 0x2195, 0x2FB6, 0x21C4, 0x2077, + 0x21C5, 0x2076, 0x21C6, 0x2078, 0x21E6, 0x1F4C, 0x21E7, 0x1F4E, 0x21E8, + 0x1F4B, 0x21E9, 0x1F4D, 0x2225, 0x1ED7, 0x223C, 0x1ED6, 0x22EF, 0x1ED9, + 0x2500, 0x1D39, 0x2501, 0x1D3A, 0x2502, 0x1D37, 0x2503, 0x1D38, 0x2504, + 0x1D3D, 0x2505, 0x1D3E, 0x2506, 0x1D3B, 0x2507, 0x1D3C, 0x2508, 0x1D41, + 0x2509, 0x1D42, 0x250A, 0x1D3F, 0x250B, 0x1D40, 0x250C, 0x1D47, 0x250D, + 0x1D49, 0x250E, 0x1D48, 0x250F, 0x1D4A, 0x2510, 0x1D4F, 0x2511, 0x1D51, + 0x2512, 0x1D50, 0x2513, 0x1D52, 0x2514, 0x1D43, 0x2515, 0x1D45, 0x2516, + 0x1D44, 0x2517, 0x1D46, 0x2518, 0x1D4B, 0x2519, 0x1D4D, 0x251A, 0x1D4C, + 0x251B, 0x1D4E, 0x251C, 0x1D63, 0x251D, 0x1D67, 0x251E, 0x1D65, 0x251F, + 0x1D64, 0x2520, 0x1D66, 0x2521, 0x1D69, 0x2522, 0x1D68, 0x2523, 0x1D6A, + 0x2524, 0x1D6B, 0x2525, 0x1D6F, 0x2526, 0x1D6D, 0x2527, 0x1D6C, 0x2528, + 0x1D6E, 0x2529, 0x1D71, 0x252A, 0x1D70, 0x252B, 0x1D72, 0x252C, 0x1D5B, + 0x252D, 0x1D5D, 0x252E, 0x1D5E, 0x252F, 0x1D5F, 0x2530, 0x1D5C, 0x2531, + 0x1D60, 0x2532, 0x1D61, 0x2533, 0x1D62, 0x2534, 0x1D53, 0x2535, 0x1D55, + 0x2536, 0x1D56, 0x2537, 0x1D57, 0x2538, 0x1D54, 0x2539, 0x1D58, 0x253A, + 0x1D59, 0x253B, 0x1D5A, 0x253D, 0x1D77, 0x253E, 0x1D78, 0x253F, 0x1D79, + 0x2540, 0x1D75, 0x2541, 0x1D74, 0x2542, 0x1D76, 0x2543, 0x1D7B, 0x2544, + 0x1D7D, 0x2545, 0x1D7A, 0x2546, 0x1D7C, 0x2547, 0x1D81, 0x2548, 0x1D80, + 0x2549, 0x1D7E, 0x254A, 0x1D7F, 0x261C, 0x201D, 0x261D, 0x201B, 0x261E, + 0x201E, 0x261F, 0x201C, 0x2702, 0x2F92, 0x27A1, 0x2011, 0x3001, 0x1ECF, + 0x3002, 0x1ED0, 0x3008, 0x1EE3, 0x3009, 0x1EE4, 0x300A, 0x1EE5, 0x300B, + 0x1EE6, 0x300C, 0x1EE7, 0x300D, 0x1EE8, 0x300E, 0x1EE9, 0x300F, 0x1EEA, + 0x3010, 0x1EEB, 0x3011, 0x1EEC, 0x3013, 0x204E, 0x3014, 0x1EDD, 0x3015, + 0x1EDE, 0x301C, 0x1ED6, 0x301D, 0x1F14, 0x301F, 0x1F15, 0x3041, 0x1EEE, + 0x3043, 0x1EEF, 0x3045, 0x1EF0, 0x3047, 0x1EF1, 0x3049, 0x1EF2, 0x3063, + 0x1EF3, 0x3083, 0x1EF4, 0x3085, 0x1EF5, 0x3087, 0x1EF6, 0x308E, 0x1EF7, + 0x309B, 0x2050, 0x309C, 0x204F, 0x30A1, 0x1EF8, 0x30A3, 0x1EF9, 0x30A5, + 0x1EFA, 0x30A7, 0x1EFB, 0x30A9, 0x1EFC, 0x30C3, 0x1EFD, 0x30E3, 0x1EFE, + 0x30E5, 0x1EFF, 0x30E7, 0x1F00, 0x30EE, 0x1F01, 0x30F5, 0x1F02, 0x30F6, + 0x1F03, 0x30FC, 0x1ED3, 0x3300, 0x209E, 0x3301, 0x2EB6, 0x3302, 0x2EB7, + 0x3303, 0x2092, 0x3304, 0x2EB8, 0x3305, 0x208D, 0x3306, 0x2EB9, 0x3307, + 0x2EBD, 0x3308, 0x2EBB, 0x3309, 0x2EC0, 0x330A, 0x2EBE, 0x330B, 0x2EC2, + 0x330C, 0x2EC4, 0x330D, 0x1F0E, 0x330E, 0x2EC5, 0x330F, 0x2EC6, 0x3310, + 0x2EC7, 0x3311, 0x2EC8, 0x3312, 0x2EC9, 0x3313, 0x2ECA, 0x3314, 0x1F05, + 0x3315, 0x2094, 0x3316, 0x208A, 0x3317, 0x2ECC, 0x3318, 0x2093, 0x3319, + 0x2ECE, 0x331A, 0x2ED0, 0x331B, 0x2ED1, 0x331C, 0x2ED2, 0x331D, 0x2ED3, + 0x331E, 0x20A1, 0x331F, 0x2ED4, 0x3320, 0x2ED5, 0x3321, 0x2ED6, 0x3322, + 0x2089, 0x3323, 0x209C, 0x3324, 0x2ED7, 0x3325, 0x2ED9, 0x3326, 0x1F0F, + 0x3327, 0x1F09, 0x3328, 0x2EDC, 0x3329, 0x2EDD, 0x332A, 0x20A4, 0x332B, + 0x1F11, 0x332D, 0x2EDF, 0x332E, 0x2EE2, 0x332F, 0x2EE3, 0x3330, 0x2EE4, + 0x3331, 0x20A6, 0x3332, 0x2EE5, 0x3333, 0x208E, 0x3334, 0x2EE8, 0x3335, + 0x2EE9, 0x3336, 0x1F0B, 0x3337, 0x2EEE, 0x3338, 0x2EF0, 0x3339, 0x2097, + 0x333A, 0x2EF1, 0x333B, 0x209D, 0x333C, 0x2EEA, 0x333D, 0x2EF2, 0x333E, + 0x2EF4, 0x333F, 0x2EF5, 0x3340, 0x2EF6, 0x3341, 0x2EF3, 0x3342, 0x209B, + 0x3343, 0x2EF7, 0x3344, 0x2EF8, 0x3345, 0x2EF9, 0x3346, 0x2EFA, 0x3347, + 0x20A5, 0x3348, 0x2EFB, 0x3349, 0x1F04, 0x334A, 0x1F12, 0x334B, 0x2EFC, + 0x334C, 0x2EFD, 0x334D, 0x1F07, 0x334E, 0x2091, 0x334F, 0x2EFE, 0x3350, + 0x2EFF, 0x3351, 0x1F0C, 0x3352, 0x2F02, 0x3353, 0x2F06, 0x3354, 0x2F03, + 0x3355, 0x2F07, 0x3356, 0x2F08, 0x3357, 0x2098, 0x337F, 0x2084, 0xFF08, + 0x1EDB, 0xFF09, 0x1EDC, 0xFF0C, 0x204C, 0xFF0E, 0x2052, 0xFF1D, 0x1EED, + 0xFF3B, 0x1EDF, 0xFF3D, 0x1EE0, 0xFF3F, 0x1ED2, 0xFF5B, 0x1EE1, 0xFF5C, + 0x1ED8, 0xFF5D, 0x1EE2, 0xFF5E, 0x1ED6, 0xFFE3, 0x1ED1, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp new file mode 100644 index 0000000000..1c5663e3d9 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp @@ -0,0 +1,19 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +const FX_WORD g_FXCMAP_V_1[27 * 3] = { + 0x2122, 0x2123, 0x1ECF, 0x2131, 0x2132, 0x1ED1, 0x213C, 0x213E, 0x1ED3, + 0x2141, 0x2145, 0x1ED6, 0x214A, 0x215B, 0x1EDB, 0x2161, 0x2161, 0x1EED, + 0x2421, 0x2421, 0x1EEE, 0x2423, 0x2423, 0x1EEF, 0x2425, 0x2425, 0x1EF0, + 0x2427, 0x2427, 0x1EF1, 0x2429, 0x2429, 0x1EF2, 0x2443, 0x2443, 0x1EF3, + 0x2463, 0x2463, 0x1EF4, 0x2465, 0x2465, 0x1EF5, 0x2467, 0x2467, 0x1EF6, + 0x246E, 0x246E, 0x1EF7, 0x2521, 0x2521, 0x1EF8, 0x2523, 0x2523, 0x1EF9, + 0x2525, 0x2525, 0x1EFA, 0x2527, 0x2527, 0x1EFB, 0x2529, 0x2529, 0x1EFC, + 0x2543, 0x2543, 0x1EFD, 0x2563, 0x2563, 0x1EFE, 0x2565, 0x2565, 0x1EFF, + 0x2567, 0x2567, 0x1F00, 0x256E, 0x256E, 0x1F01, 0x2575, 0x2576, 0x1F02, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp new file mode 100644 index 0000000000..93c9be6d55 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp @@ -0,0 +1,66 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" + +#include "core/fpdfapi/fpdf_cmaps/cmap_int.h" +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). + +static const FXCMAP_CMap g_FXCMAP_Japan1_cmaps[] = { + {"83pv-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_83pv_RKSJ_H_1, 222, + FXCMAP_CMap::None, NULL, 0, 0}, + {"90ms-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90ms_RKSJ_H_2, 171, + FXCMAP_CMap::None, NULL, 0, 0}, + {"90ms-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_90ms_RKSJ_V_2, 78, + FXCMAP_CMap::None, NULL, 0, -1}, + {"90msp-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90msp_RKSJ_H_2, 170, + FXCMAP_CMap::None, NULL, 0, -2}, + {"90msp-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_90msp_RKSJ_V_2, 78, + FXCMAP_CMap::None, NULL, 0, -1}, + {"90pv-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90pv_RKSJ_H_1, 263, + FXCMAP_CMap::None, NULL, 0, 0}, + {"Add-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_Add_RKSJ_H_1, 635, + FXCMAP_CMap::None, NULL, 0, 0}, + {"Add-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_Add_RKSJ_V_1, 57, + FXCMAP_CMap::None, NULL, 0, -1}, + {"EUC-H", FXCMAP_CMap::Range, g_FXCMAP_EUC_H_1, 120, FXCMAP_CMap::None, + NULL, 0, 0}, + {"EUC-V", FXCMAP_CMap::Range, g_FXCMAP_EUC_V_1, 27, FXCMAP_CMap::None, NULL, + 0, -1}, + {"Ext-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_Ext_RKSJ_H_2, 665, + FXCMAP_CMap::None, NULL, 0, -4}, + {"Ext-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_Ext_RKSJ_V_2, 39, + FXCMAP_CMap::None, NULL, 0, -1}, + {"H", FXCMAP_CMap::Range, g_FXCMAP_H_1, 118, FXCMAP_CMap::None, NULL, 0, 0}, + {"V", FXCMAP_CMap::Range, g_FXCMAP_V_1, 27, FXCMAP_CMap::None, NULL, 0, -1}, + {"UniJIS-UCS2-H", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_H_4, 9772, + FXCMAP_CMap::None, NULL, 0, 0}, + {"UniJIS-UCS2-V", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_V_4, 251, + FXCMAP_CMap::None, NULL, 0, -1}, + {"UniJIS-UCS2-HW-H", FXCMAP_CMap::Range, g_FXCMAP_UniJIS_UCS2_HW_H_4, 4, + FXCMAP_CMap::None, NULL, 0, -2}, + {"UniJIS-UCS2-HW-V", FXCMAP_CMap::Range, g_FXCMAP_UniJIS_UCS2_HW_V_4, 199, + FXCMAP_CMap::None, NULL, 0, -1}, + {"UniJIS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_H_4, 9772, + FXCMAP_CMap::None, NULL, 0, 0}, + {"UniJIS-UTF16-V", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_V_4, 251, + FXCMAP_CMap::None, NULL, 0, -1}, +}; + +void CPDF_ModuleMgr::LoadEmbeddedJapan1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->m_EmbeddedCharsets[CIDSET_JAPAN1].m_pMapList = + g_FXCMAP_Japan1_cmaps; + pFontGlobals->m_EmbeddedCharsets[CIDSET_JAPAN1].m_Count = + FX_ArraySize(g_FXCMAP_Japan1_cmaps); + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_JAPAN1].m_pMap = + g_FXCMAP_Japan1CID2Unicode_4; + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_JAPAN1].m_Count = 15444; +} diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h new file mode 100644 index 0000000000..851dbde44e --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h @@ -0,0 +1,35 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_ +#define CORE_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_ + +#include "core/include/fxcrt/fx_system.h" // For FX_WORD. + +extern const FX_WORD g_FXCMAP_83pv_RKSJ_H_1[]; +extern const FX_WORD g_FXCMAP_90ms_RKSJ_H_2[]; +extern const FX_WORD g_FXCMAP_90ms_RKSJ_V_2[]; +extern const FX_WORD g_FXCMAP_90msp_RKSJ_H_2[]; +extern const FX_WORD g_FXCMAP_90msp_RKSJ_V_2[]; +extern const FX_WORD g_FXCMAP_90pv_RKSJ_H_1[]; +extern const FX_WORD g_FXCMAP_Add_RKSJ_H_1[]; +extern const FX_WORD g_FXCMAP_Add_RKSJ_V_1[]; +extern const FX_WORD g_FXCMAP_EUC_H_1[]; +extern const FX_WORD g_FXCMAP_EUC_V_1[]; +extern const FX_WORD g_FXCMAP_Ext_RKSJ_H_2[]; +extern const FX_WORD g_FXCMAP_Ext_RKSJ_V_2[]; +extern const FX_WORD g_FXCMAP_H_1[]; +extern const FX_WORD g_FXCMAP_V_1[]; +extern const FX_WORD g_FXCMAP_UniJIS_UCS2_H_4[]; +extern const FX_WORD g_FXCMAP_UniJIS_UCS2_V_4[]; +extern const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_H_4[]; +extern const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_V_4[]; +extern const FX_WORD g_FXCMAP_UniJIS_UTF16_H_0[]; +extern const FX_WORD g_FXCMAP_UniJIS_UTF16_H_0_DWord[]; +extern const FX_WORD g_FXCMAP_UniJIS_UTF16_V_0[]; +extern const FX_WORD g_FXCMAP_Japan1CID2Unicode_4[]; + +#endif // CORE_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_ diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp new file mode 100644 index 0000000000..71c065375e --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp @@ -0,0 +1,2050 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_Korea1CID2Unicode_2[18352] = { + 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, + 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, + 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, + 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, + 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, + 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, + 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, + 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20A9, 0x2010, 0x00A9, + 0x2122, 0x22EF, 0x3000, 0x3001, 0x3002, 0x00B7, 0x2025, 0x2026, 0x00A8, + 0x3003, 0x2013, 0x2014, 0x2016, 0xFF3C, 0x223C, 0x2018, 0x2019, 0x201C, + 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, + 0x300E, 0x300F, 0x3010, 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2260, 0x2264, + 0x2265, 0x221E, 0x2234, 0x00B0, 0x2032, 0x2033, 0x2103, 0x212B, 0xFFE0, + 0xFFE1, 0xFFE5, 0x2642, 0x2640, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, + 0x2261, 0x2252, 0x00A7, 0x203B, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, + 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x2192, + 0x2190, 0x2191, 0x2193, 0x2194, 0x3013, 0x226A, 0x226B, 0x221A, 0x223D, + 0x221D, 0x2235, 0x222B, 0x222C, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, + 0x2283, 0x222A, 0x2229, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, + 0x2203, 0x00B4, 0x02DC, 0x02C7, 0x02D8, 0x02DD, 0x02DA, 0x02D9, 0x00B8, + 0x02DB, 0x00A1, 0x00BF, 0x2236, 0x222E, 0x2211, 0x220F, 0x00A4, 0x2109, + 0x2030, 0x25C1, 0x25C0, 0x25B7, 0x25B6, 0x2664, 0x2660, 0x2661, 0x2665, + 0x2667, 0x2663, 0x2299, 0x25C8, 0x25A3, 0x25D0, 0x25D1, 0x2592, 0x25A4, + 0x25A5, 0x25A8, 0x25A7, 0x25A6, 0x25A9, 0x2668, 0x260F, 0x260E, 0x261C, + 0x261E, 0x00B6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, + 0x266D, 0x2669, 0x266A, 0x266C, 0x327F, 0x321C, 0x2116, 0x33C7, 0x2122, + 0x33C2, 0x33D8, 0x2121, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, 0xFF06, + 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, + 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, + 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, + 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, + 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, + 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFFE6, + 0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, + 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, + 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, + 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0x3131, 0x3132, + 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313A, 0x313B, + 0x313C, 0x313D, 0x313E, 0x313F, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, + 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314A, 0x314B, 0x314C, 0x314D, + 0x314E, 0x314F, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, + 0x3157, 0x3158, 0x3159, 0x315A, 0x315B, 0x315C, 0x315D, 0x315E, 0x315F, + 0x3160, 0x3161, 0x3162, 0x3163, 0x3165, 0x3166, 0x3167, 0x3168, 0x3169, + 0x316A, 0x316B, 0x316C, 0x316D, 0x316E, 0x316F, 0x3170, 0x3171, 0x3172, + 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178, 0x3179, 0x317A, 0x317B, + 0x317C, 0x317D, 0x317E, 0x317F, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, + 0x3185, 0x3186, 0x3187, 0x3188, 0x3189, 0x318A, 0x318B, 0x318C, 0x318D, + 0x318E, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, + 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, + 0x2167, 0x2168, 0x2169, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, + 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, + 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, + 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, + 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, + 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x2500, 0x2502, 0x250C, + 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, + 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, + 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, + 0x2538, 0x2542, 0x2512, 0x2511, 0x251A, 0x2519, 0x2516, 0x2515, 0x250E, + 0x250D, 0x251E, 0x251F, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252A, + 0x252D, 0x252E, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253A, 0x253D, + 0x253E, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, + 0x2549, 0x254A, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33C4, 0x33A3, + 0x33A4, 0x33A5, 0x33A6, 0x3399, 0x339A, 0x339B, 0x339C, 0x339D, 0x339E, + 0x339F, 0x33A0, 0x33A1, 0x33A2, 0x33CA, 0x338D, 0x338E, 0x338F, 0x33CF, + 0x3388, 0x3389, 0x33C8, 0x33A7, 0x33A8, 0x33B0, 0x33B1, 0x33B2, 0x33B3, + 0x33B4, 0x33B5, 0x33B6, 0x33B7, 0x33B8, 0x33B9, 0x3380, 0x3381, 0x3382, + 0x3383, 0x3384, 0x33BA, 0x33BB, 0x33BC, 0x33BD, 0x33BE, 0x33BF, 0x3390, + 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33C0, 0x33C1, 0x338A, 0x338B, + 0x338C, 0x33D6, 0x33C5, 0x33AD, 0x33AE, 0x33AF, 0x33DB, 0x33A9, 0x33AA, + 0x33AB, 0x33AC, 0x33DD, 0x33D0, 0x33D3, 0x33C3, 0x33C9, 0x33DC, 0x33C6, + 0x00C6, 0x00D0, 0x00AA, 0x0126, 0x0132, 0x013F, 0x0141, 0x00D8, 0x0152, + 0x00BA, 0x00DE, 0x0166, 0x014A, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, + 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326A, 0x326B, 0x326C, 0x326D, + 0x326E, 0x326F, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, + 0x3277, 0x3278, 0x3279, 0x327A, 0x327B, 0x24D0, 0x24D1, 0x24D2, 0x24D3, + 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, 0x24DA, 0x24DB, 0x24DC, + 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5, + 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, + 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, + 0x246E, 0x00BD, 0x2153, 0x2154, 0x00BC, 0x00BE, 0x215B, 0x215C, 0x215D, + 0x215E, 0x00E6, 0x0111, 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, + 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, 0x3200, + 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209, + 0x320A, 0x320B, 0x320C, 0x320D, 0x320E, 0x320F, 0x3210, 0x3211, 0x3212, + 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, 0x3218, 0x3219, 0x321A, 0x321B, + 0x249C, 0x249D, 0x249E, 0x249F, 0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4, + 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD, + 0x24AE, 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x2474, + 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, + 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, 0x00B9, 0x00B2, 0x00B3, 0x2074, + 0x207F, 0x2081, 0x2082, 0x2083, 0x2084, 0x3041, 0x3042, 0x3043, 0x3044, + 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, + 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, + 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, + 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, + 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, + 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, + 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, + 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, + 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, + 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, + 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, + 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, + 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, + 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, + 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, + 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, + 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, + 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, + 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, + 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, + 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, + 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, + 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, + 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0xAC00, 0xAC01, 0xAC04, + 0xAC07, 0xAC08, 0xAC09, 0xAC0A, 0xAC10, 0xAC11, 0xAC12, 0xAC13, 0xAC14, + 0xAC15, 0xAC16, 0xAC17, 0xAC19, 0xAC1A, 0xAC1B, 0xAC1C, 0xAC1D, 0xAC20, + 0xAC24, 0xAC2C, 0xAC2D, 0xAC2F, 0xAC30, 0xAC31, 0xAC38, 0xAC39, 0xAC3C, + 0xAC40, 0xAC4B, 0xAC4D, 0xAC54, 0xAC58, 0xAC5C, 0xAC70, 0xAC71, 0xAC74, + 0xAC77, 0xAC78, 0xAC7A, 0xAC80, 0xAC81, 0xAC83, 0xAC84, 0xAC85, 0xAC86, + 0xAC89, 0xAC8A, 0xAC8B, 0xAC8C, 0xAC90, 0xAC94, 0xAC9C, 0xAC9D, 0xAC9F, + 0xACA0, 0xACA1, 0xACA8, 0xACA9, 0xACAA, 0xACAC, 0xACAF, 0xACB0, 0xACB8, + 0xACB9, 0xACBB, 0xACBC, 0xACBD, 0xACC1, 0xACC4, 0xACC8, 0xACCC, 0xACD5, + 0xACD7, 0xACE0, 0xACE1, 0xACE4, 0xACE7, 0xACE8, 0xACEA, 0xACEC, 0xACEF, + 0xACF0, 0xACF1, 0xACF3, 0xACF5, 0xACF6, 0xACFC, 0xACFD, 0xAD00, 0xAD04, + 0xAD06, 0xAD0C, 0xAD0D, 0xAD0F, 0xAD11, 0xAD18, 0xAD1C, 0xAD20, 0xAD29, + 0xAD2C, 0xAD2D, 0xAD34, 0xAD35, 0xAD38, 0xAD3C, 0xAD44, 0xAD45, 0xAD47, + 0xAD49, 0xAD50, 0xAD54, 0xAD58, 0xAD61, 0xAD63, 0xAD6C, 0xAD6D, 0xAD70, + 0xAD73, 0xAD74, 0xAD75, 0xAD76, 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7F, 0xAD81, + 0xAD82, 0xAD88, 0xAD89, 0xAD8C, 0xAD90, 0xAD9C, 0xAD9D, 0xADA4, 0xADB7, + 0xADC0, 0xADC1, 0xADC4, 0xADC8, 0xADD0, 0xADD1, 0xADD3, 0xADDC, 0xADE0, + 0xADE4, 0xADF8, 0xADF9, 0xADFC, 0xADFF, 0xAE00, 0xAE01, 0xAE08, 0xAE09, + 0xAE0B, 0xAE0D, 0xAE14, 0xAE30, 0xAE31, 0xAE34, 0xAE37, 0xAE38, 0xAE3A, + 0xAE40, 0xAE41, 0xAE43, 0xAE45, 0xAE46, 0xAE4A, 0xAE4C, 0xAE4D, 0xAE4E, + 0xAE50, 0xAE54, 0xAE56, 0xAE5C, 0xAE5D, 0xAE5F, 0xAE60, 0xAE61, 0xAE65, + 0xAE68, 0xAE69, 0xAE6C, 0xAE70, 0xAE78, 0xAE79, 0xAE7B, 0xAE7C, 0xAE7D, + 0xAE84, 0xAE85, 0xAE8C, 0xAEBC, 0xAEBD, 0xAEBE, 0xAEC0, 0xAEC4, 0xAECC, + 0xAECD, 0xAECF, 0xAED0, 0xAED1, 0xAED8, 0xAED9, 0xAEDC, 0xAEE8, 0xAEEB, + 0xAEED, 0xAEF4, 0xAEF8, 0xAEFC, 0xAF07, 0xAF08, 0xAF0D, 0xAF10, 0xAF2C, + 0xAF2D, 0xAF30, 0xAF32, 0xAF34, 0xAF3C, 0xAF3D, 0xAF3F, 0xAF41, 0xAF42, + 0xAF43, 0xAF48, 0xAF49, 0xAF50, 0xAF5C, 0xAF5D, 0xAF64, 0xAF65, 0xAF79, + 0xAF80, 0xAF84, 0xAF88, 0xAF90, 0xAF91, 0xAF95, 0xAF9C, 0xAFB8, 0xAFB9, + 0xAFBC, 0xAFC0, 0xAFC7, 0xAFC8, 0xAFC9, 0xAFCB, 0xAFCD, 0xAFCE, 0xAFD4, + 0xAFDC, 0xAFE8, 0xAFE9, 0xAFF0, 0xAFF1, 0xAFF4, 0xAFF8, 0xB000, 0xB001, + 0xB004, 0xB00C, 0xB010, 0xB014, 0xB01C, 0xB01D, 0xB028, 0xB044, 0xB045, + 0xB048, 0xB04A, 0xB04C, 0xB04E, 0xB053, 0xB054, 0xB055, 0xB057, 0xB059, + 0xB05D, 0xB07C, 0xB07D, 0xB080, 0xB084, 0xB08C, 0xB08D, 0xB08F, 0xB091, + 0xB098, 0xB099, 0xB09A, 0xB09C, 0xB09F, 0xB0A0, 0xB0A1, 0xB0A2, 0xB0A8, + 0xB0A9, 0xB0AB, 0xB0AC, 0xB0AD, 0xB0AE, 0xB0AF, 0xB0B1, 0xB0B3, 0xB0B4, + 0xB0B5, 0xB0B8, 0xB0BC, 0xB0C4, 0xB0C5, 0xB0C7, 0xB0C8, 0xB0C9, 0xB0D0, + 0xB0D1, 0xB0D4, 0xB0D8, 0xB0E0, 0xB0E5, 0xB108, 0xB109, 0xB10B, 0xB10C, + 0xB110, 0xB112, 0xB113, 0xB118, 0xB119, 0xB11B, 0xB11C, 0xB11D, 0xB123, + 0xB124, 0xB125, 0xB128, 0xB12C, 0xB134, 0xB135, 0xB137, 0xB138, 0xB139, + 0xB140, 0xB141, 0xB144, 0xB148, 0xB150, 0xB151, 0xB154, 0xB155, 0xB158, + 0xB15C, 0xB160, 0xB178, 0xB179, 0xB17C, 0xB180, 0xB182, 0xB188, 0xB189, + 0xB18B, 0xB18D, 0xB192, 0xB193, 0xB194, 0xB198, 0xB19C, 0xB1A8, 0xB1CC, + 0xB1D0, 0xB1D4, 0xB1DC, 0xB1DD, 0xB1DF, 0xB1E8, 0xB1E9, 0xB1EC, 0xB1F0, + 0xB1F9, 0xB1FB, 0xB1FD, 0xB204, 0xB205, 0xB208, 0xB20B, 0xB20C, 0xB214, + 0xB215, 0xB217, 0xB219, 0xB220, 0xB234, 0xB23C, 0xB258, 0xB25C, 0xB260, + 0xB268, 0xB269, 0xB274, 0xB275, 0xB27C, 0xB284, 0xB285, 0xB289, 0xB290, + 0xB291, 0xB294, 0xB298, 0xB299, 0xB29A, 0xB2A0, 0xB2A1, 0xB2A3, 0xB2A5, + 0xB2A6, 0xB2AA, 0xB2AC, 0xB2B0, 0xB2B4, 0xB2C8, 0xB2C9, 0xB2CC, 0xB2D0, + 0xB2D2, 0xB2D8, 0xB2D9, 0xB2DB, 0xB2DD, 0xB2E2, 0xB2E4, 0xB2E5, 0xB2E6, + 0xB2E8, 0xB2EB, 0xB2EC, 0xB2ED, 0xB2EE, 0xB2EF, 0xB2F3, 0xB2F4, 0xB2F5, + 0xB2F7, 0xB2F8, 0xB2F9, 0xB2FA, 0xB2FB, 0xB2FF, 0xB300, 0xB301, 0xB304, + 0xB308, 0xB310, 0xB311, 0xB313, 0xB314, 0xB315, 0xB31C, 0xB354, 0xB355, + 0xB356, 0xB358, 0xB35B, 0xB35C, 0xB35E, 0xB35F, 0xB364, 0xB365, 0xB367, + 0xB369, 0xB36B, 0xB36E, 0xB370, 0xB371, 0xB374, 0xB378, 0xB380, 0xB381, + 0xB383, 0xB384, 0xB385, 0xB38C, 0xB390, 0xB394, 0xB3A0, 0xB3A1, 0xB3A8, + 0xB3AC, 0xB3C4, 0xB3C5, 0xB3C8, 0xB3CB, 0xB3CC, 0xB3CE, 0xB3D0, 0xB3D4, + 0xB3D5, 0xB3D7, 0xB3D9, 0xB3DB, 0xB3DD, 0xB3E0, 0xB3E4, 0xB3E8, 0xB3FC, + 0xB410, 0xB418, 0xB41C, 0xB420, 0xB428, 0xB429, 0xB42B, 0xB434, 0xB450, + 0xB451, 0xB454, 0xB458, 0xB460, 0xB461, 0xB463, 0xB465, 0xB46C, 0xB480, + 0xB488, 0xB49D, 0xB4A4, 0xB4A8, 0xB4AC, 0xB4B5, 0xB4B7, 0xB4B9, 0xB4C0, + 0xB4C4, 0xB4C8, 0xB4D0, 0xB4D5, 0xB4DC, 0xB4DD, 0xB4E0, 0xB4E3, 0xB4E4, + 0xB4E6, 0xB4EC, 0xB4ED, 0xB4EF, 0xB4F1, 0xB4F8, 0xB514, 0xB515, 0xB518, + 0xB51B, 0xB51C, 0xB524, 0xB525, 0xB527, 0xB528, 0xB529, 0xB52A, 0xB530, + 0xB531, 0xB534, 0xB538, 0xB540, 0xB541, 0xB543, 0xB544, 0xB545, 0xB54B, + 0xB54C, 0xB54D, 0xB550, 0xB554, 0xB55C, 0xB55D, 0xB55F, 0xB560, 0xB561, + 0xB5A0, 0xB5A1, 0xB5A4, 0xB5A8, 0xB5AA, 0xB5AB, 0xB5B0, 0xB5B1, 0xB5B3, + 0xB5B4, 0xB5B5, 0xB5BB, 0xB5BC, 0xB5BD, 0xB5C0, 0xB5C4, 0xB5CC, 0xB5CD, + 0xB5CF, 0xB5D0, 0xB5D1, 0xB5D8, 0xB5EC, 0xB610, 0xB611, 0xB614, 0xB618, + 0xB625, 0xB62C, 0xB634, 0xB648, 0xB664, 0xB668, 0xB69C, 0xB69D, 0xB6A0, + 0xB6A4, 0xB6AB, 0xB6AC, 0xB6B1, 0xB6D4, 0xB6F0, 0xB6F4, 0xB6F8, 0xB700, + 0xB701, 0xB705, 0xB728, 0xB729, 0xB72C, 0xB72F, 0xB730, 0xB738, 0xB739, + 0xB73B, 0xB744, 0xB748, 0xB74C, 0xB754, 0xB755, 0xB760, 0xB764, 0xB768, + 0xB770, 0xB771, 0xB773, 0xB775, 0xB77C, 0xB77D, 0xB780, 0xB784, 0xB78C, + 0xB78D, 0xB78F, 0xB790, 0xB791, 0xB792, 0xB796, 0xB797, 0xB798, 0xB799, + 0xB79C, 0xB7A0, 0xB7A8, 0xB7A9, 0xB7AB, 0xB7AC, 0xB7AD, 0xB7B4, 0xB7B5, + 0xB7B8, 0xB7C7, 0xB7C9, 0xB7EC, 0xB7ED, 0xB7F0, 0xB7F4, 0xB7FC, 0xB7FD, + 0xB7FF, 0xB800, 0xB801, 0xB807, 0xB808, 0xB809, 0xB80C, 0xB810, 0xB818, + 0xB819, 0xB81B, 0xB81D, 0xB824, 0xB825, 0xB828, 0xB82C, 0xB834, 0xB835, + 0xB837, 0xB838, 0xB839, 0xB840, 0xB844, 0xB851, 0xB853, 0xB85C, 0xB85D, + 0xB860, 0xB864, 0xB86C, 0xB86D, 0xB86F, 0xB871, 0xB878, 0xB87C, 0xB88D, + 0xB8A8, 0xB8B0, 0xB8B4, 0xB8B8, 0xB8C0, 0xB8C1, 0xB8C3, 0xB8C5, 0xB8CC, + 0xB8D0, 0xB8D4, 0xB8DD, 0xB8DF, 0xB8E1, 0xB8E8, 0xB8E9, 0xB8EC, 0xB8F0, + 0xB8F8, 0xB8F9, 0xB8FB, 0xB8FD, 0xB904, 0xB918, 0xB920, 0xB93C, 0xB93D, + 0xB940, 0xB944, 0xB94C, 0xB94F, 0xB951, 0xB958, 0xB959, 0xB95C, 0xB960, + 0xB968, 0xB969, 0xB96B, 0xB96D, 0xB974, 0xB975, 0xB978, 0xB97C, 0xB984, + 0xB985, 0xB987, 0xB989, 0xB98A, 0xB98D, 0xB98E, 0xB9AC, 0xB9AD, 0xB9B0, + 0xB9B4, 0xB9BC, 0xB9BD, 0xB9BF, 0xB9C1, 0xB9C8, 0xB9C9, 0xB9CC, 0xB9CE, + 0xB9CF, 0xB9D0, 0xB9D1, 0xB9D2, 0xB9D8, 0xB9D9, 0xB9DB, 0xB9DD, 0xB9DE, + 0xB9E1, 0xB9E3, 0xB9E4, 0xB9E5, 0xB9E8, 0xB9EC, 0xB9F4, 0xB9F5, 0xB9F7, + 0xB9F8, 0xB9F9, 0xB9FA, 0xBA00, 0xBA01, 0xBA08, 0xBA15, 0xBA38, 0xBA39, + 0xBA3C, 0xBA40, 0xBA42, 0xBA48, 0xBA49, 0xBA4B, 0xBA4D, 0xBA4E, 0xBA53, + 0xBA54, 0xBA55, 0xBA58, 0xBA5C, 0xBA64, 0xBA65, 0xBA67, 0xBA68, 0xBA69, + 0xBA70, 0xBA71, 0xBA74, 0xBA78, 0xBA83, 0xBA84, 0xBA85, 0xBA87, 0xBA8C, + 0xBAA8, 0xBAA9, 0xBAAB, 0xBAAC, 0xBAB0, 0xBAB2, 0xBAB8, 0xBAB9, 0xBABB, + 0xBABD, 0xBAC4, 0xBAC8, 0xBAD8, 0xBAD9, 0xBAFC, 0xBB00, 0xBB04, 0xBB0D, + 0xBB0F, 0xBB11, 0xBB18, 0xBB1C, 0xBB20, 0xBB29, 0xBB2B, 0xBB34, 0xBB35, + 0xBB36, 0xBB38, 0xBB3B, 0xBB3C, 0xBB3D, 0xBB3E, 0xBB44, 0xBB45, 0xBB47, + 0xBB49, 0xBB4D, 0xBB4F, 0xBB50, 0xBB54, 0xBB58, 0xBB61, 0xBB63, 0xBB6C, + 0xBB88, 0xBB8C, 0xBB90, 0xBBA4, 0xBBA8, 0xBBAC, 0xBBB4, 0xBBB7, 0xBBC0, + 0xBBC4, 0xBBC8, 0xBBD0, 0xBBD3, 0xBBF8, 0xBBF9, 0xBBFC, 0xBBFF, 0xBC00, + 0xBC02, 0xBC08, 0xBC09, 0xBC0B, 0xBC0C, 0xBC0D, 0xBC0F, 0xBC11, 0xBC14, + 0xBC15, 0xBC16, 0xBC17, 0xBC18, 0xBC1B, 0xBC1C, 0xBC1D, 0xBC1E, 0xBC1F, + 0xBC24, 0xBC25, 0xBC27, 0xBC29, 0xBC2D, 0xBC30, 0xBC31, 0xBC34, 0xBC38, + 0xBC40, 0xBC41, 0xBC43, 0xBC44, 0xBC45, 0xBC49, 0xBC4C, 0xBC4D, 0xBC50, + 0xBC5D, 0xBC84, 0xBC85, 0xBC88, 0xBC8B, 0xBC8C, 0xBC8E, 0xBC94, 0xBC95, + 0xBC97, 0xBC99, 0xBC9A, 0xBCA0, 0xBCA1, 0xBCA4, 0xBCA7, 0xBCA8, 0xBCB0, + 0xBCB1, 0xBCB3, 0xBCB4, 0xBCB5, 0xBCBC, 0xBCBD, 0xBCC0, 0xBCC4, 0xBCCD, + 0xBCCF, 0xBCD0, 0xBCD1, 0xBCD5, 0xBCD8, 0xBCDC, 0xBCF4, 0xBCF5, 0xBCF6, + 0xBCF8, 0xBCFC, 0xBD04, 0xBD05, 0xBD07, 0xBD09, 0xBD10, 0xBD14, 0xBD24, + 0xBD2C, 0xBD40, 0xBD48, 0xBD49, 0xBD4C, 0xBD50, 0xBD58, 0xBD59, 0xBD64, + 0xBD68, 0xBD80, 0xBD81, 0xBD84, 0xBD87, 0xBD88, 0xBD89, 0xBD8A, 0xBD90, + 0xBD91, 0xBD93, 0xBD95, 0xBD99, 0xBD9A, 0xBD9C, 0xBDA4, 0xBDB0, 0xBDB8, + 0xBDD4, 0xBDD5, 0xBDD8, 0xBDDC, 0xBDE9, 0xBDF0, 0xBDF4, 0xBDF8, 0xBE00, + 0xBE03, 0xBE05, 0xBE0C, 0xBE0D, 0xBE10, 0xBE14, 0xBE1C, 0xBE1D, 0xBE1F, + 0xBE44, 0xBE45, 0xBE48, 0xBE4C, 0xBE4E, 0xBE54, 0xBE55, 0xBE57, 0xBE59, + 0xBE5A, 0xBE5B, 0xBE60, 0xBE61, 0xBE64, 0xBE68, 0xBE6A, 0xBE70, 0xBE71, + 0xBE73, 0xBE74, 0xBE75, 0xBE7B, 0xBE7C, 0xBE7D, 0xBE80, 0xBE84, 0xBE8C, + 0xBE8D, 0xBE8F, 0xBE90, 0xBE91, 0xBE98, 0xBE99, 0xBEA8, 0xBED0, 0xBED1, + 0xBED4, 0xBED7, 0xBED8, 0xBEE0, 0xBEE3, 0xBEE4, 0xBEE5, 0xBEEC, 0xBF01, + 0xBF08, 0xBF09, 0xBF18, 0xBF19, 0xBF1B, 0xBF1C, 0xBF1D, 0xBF40, 0xBF41, + 0xBF44, 0xBF48, 0xBF50, 0xBF51, 0xBF55, 0xBF94, 0xBFB0, 0xBFC5, 0xBFCC, + 0xBFCD, 0xBFD0, 0xBFD4, 0xBFDC, 0xBFDF, 0xBFE1, 0xC03C, 0xC051, 0xC058, + 0xC05C, 0xC060, 0xC068, 0xC069, 0xC090, 0xC091, 0xC094, 0xC098, 0xC0A0, + 0xC0A1, 0xC0A3, 0xC0A5, 0xC0AC, 0xC0AD, 0xC0AF, 0xC0B0, 0xC0B3, 0xC0B4, + 0xC0B5, 0xC0B6, 0xC0BC, 0xC0BD, 0xC0BF, 0xC0C0, 0xC0C1, 0xC0C5, 0xC0C8, + 0xC0C9, 0xC0CC, 0xC0D0, 0xC0D8, 0xC0D9, 0xC0DB, 0xC0DC, 0xC0DD, 0xC0E4, + 0xC0E5, 0xC0E8, 0xC0EC, 0xC0F4, 0xC0F5, 0xC0F7, 0xC0F9, 0xC100, 0xC104, + 0xC108, 0xC110, 0xC115, 0xC11C, 0xC11D, 0xC11E, 0xC11F, 0xC120, 0xC123, + 0xC124, 0xC126, 0xC127, 0xC12C, 0xC12D, 0xC12F, 0xC130, 0xC131, 0xC136, + 0xC138, 0xC139, 0xC13C, 0xC140, 0xC148, 0xC149, 0xC14B, 0xC14C, 0xC14D, + 0xC154, 0xC155, 0xC158, 0xC15C, 0xC164, 0xC165, 0xC167, 0xC168, 0xC169, + 0xC170, 0xC174, 0xC178, 0xC185, 0xC18C, 0xC18D, 0xC18E, 0xC190, 0xC194, + 0xC196, 0xC19C, 0xC19D, 0xC19F, 0xC1A1, 0xC1A5, 0xC1A8, 0xC1A9, 0xC1AC, + 0xC1B0, 0xC1BD, 0xC1C4, 0xC1C8, 0xC1CC, 0xC1D4, 0xC1D7, 0xC1D8, 0xC1E0, + 0xC1E4, 0xC1E8, 0xC1F0, 0xC1F1, 0xC1F3, 0xC1FC, 0xC1FD, 0xC200, 0xC204, + 0xC20C, 0xC20D, 0xC20F, 0xC211, 0xC218, 0xC219, 0xC21C, 0xC21F, 0xC220, + 0xC228, 0xC229, 0xC22B, 0xC22D, 0xC22F, 0xC231, 0xC232, 0xC234, 0xC248, + 0xC250, 0xC251, 0xC254, 0xC258, 0xC260, 0xC265, 0xC26C, 0xC26D, 0xC270, + 0xC274, 0xC27C, 0xC27D, 0xC27F, 0xC281, 0xC288, 0xC289, 0xC290, 0xC298, + 0xC29B, 0xC29D, 0xC2A4, 0xC2A5, 0xC2A8, 0xC2AC, 0xC2AD, 0xC2B4, 0xC2B5, + 0xC2B7, 0xC2B9, 0xC2DC, 0xC2DD, 0xC2E0, 0xC2E3, 0xC2E4, 0xC2EB, 0xC2EC, + 0xC2ED, 0xC2EF, 0xC2F1, 0xC2F6, 0xC2F8, 0xC2F9, 0xC2FB, 0xC2FC, 0xC300, + 0xC308, 0xC309, 0xC30C, 0xC30D, 0xC313, 0xC314, 0xC315, 0xC318, 0xC31C, + 0xC324, 0xC325, 0xC328, 0xC329, 0xC345, 0xC368, 0xC369, 0xC36C, 0xC370, + 0xC372, 0xC378, 0xC379, 0xC37C, 0xC37D, 0xC384, 0xC388, 0xC38C, 0xC3C0, + 0xC3D8, 0xC3D9, 0xC3DC, 0xC3DF, 0xC3E0, 0xC3E2, 0xC3E8, 0xC3E9, 0xC3ED, + 0xC3F4, 0xC3F5, 0xC3F8, 0xC408, 0xC410, 0xC424, 0xC42C, 0xC430, 0xC434, + 0xC43C, 0xC43D, 0xC448, 0xC464, 0xC465, 0xC468, 0xC46C, 0xC474, 0xC475, + 0xC479, 0xC480, 0xC494, 0xC49C, 0xC4B8, 0xC4BC, 0xC4E9, 0xC4F0, 0xC4F1, + 0xC4F4, 0xC4F8, 0xC4FA, 0xC4FF, 0xC500, 0xC501, 0xC50C, 0xC510, 0xC514, + 0xC51C, 0xC528, 0xC529, 0xC52C, 0xC530, 0xC538, 0xC539, 0xC53B, 0xC53D, + 0xC544, 0xC545, 0xC548, 0xC549, 0xC54A, 0xC54C, 0xC54D, 0xC54E, 0xC553, + 0xC554, 0xC555, 0xC557, 0xC558, 0xC559, 0xC55D, 0xC55E, 0xC560, 0xC561, + 0xC564, 0xC568, 0xC570, 0xC571, 0xC573, 0xC574, 0xC575, 0xC57C, 0xC57D, + 0xC580, 0xC584, 0xC587, 0xC58C, 0xC58D, 0xC58F, 0xC591, 0xC595, 0xC597, + 0xC598, 0xC59C, 0xC5A0, 0xC5A9, 0xC5B4, 0xC5B5, 0xC5B8, 0xC5B9, 0xC5BB, + 0xC5BC, 0xC5BD, 0xC5BE, 0xC5C4, 0xC5C5, 0xC5C6, 0xC5C7, 0xC5C8, 0xC5C9, + 0xC5CA, 0xC5CC, 0xC5CE, 0xC5D0, 0xC5D1, 0xC5D4, 0xC5D8, 0xC5E0, 0xC5E1, + 0xC5E3, 0xC5E5, 0xC5EC, 0xC5ED, 0xC5EE, 0xC5F0, 0xC5F4, 0xC5F6, 0xC5F7, + 0xC5FC, 0xC5FD, 0xC5FE, 0xC5FF, 0xC600, 0xC601, 0xC605, 0xC606, 0xC607, + 0xC608, 0xC60C, 0xC610, 0xC618, 0xC619, 0xC61B, 0xC61C, 0xC624, 0xC625, + 0xC628, 0xC62C, 0xC62D, 0xC62E, 0xC630, 0xC633, 0xC634, 0xC635, 0xC637, + 0xC639, 0xC63B, 0xC640, 0xC641, 0xC644, 0xC648, 0xC650, 0xC651, 0xC653, + 0xC654, 0xC655, 0xC65C, 0xC65D, 0xC660, 0xC66C, 0xC66F, 0xC671, 0xC678, + 0xC679, 0xC67C, 0xC680, 0xC688, 0xC689, 0xC68B, 0xC68D, 0xC694, 0xC695, + 0xC698, 0xC69C, 0xC6A4, 0xC6A5, 0xC6A7, 0xC6A9, 0xC6B0, 0xC6B1, 0xC6B4, + 0xC6B8, 0xC6B9, 0xC6BA, 0xC6C0, 0xC6C1, 0xC6C3, 0xC6C5, 0xC6CC, 0xC6CD, + 0xC6D0, 0xC6D4, 0xC6DC, 0xC6DD, 0xC6E0, 0xC6E1, 0xC6E8, 0xC6E9, 0xC6EC, + 0xC6F0, 0xC6F8, 0xC6F9, 0xC6FD, 0xC704, 0xC705, 0xC708, 0xC70C, 0xC714, + 0xC715, 0xC717, 0xC719, 0xC720, 0xC721, 0xC724, 0xC728, 0xC730, 0xC731, + 0xC733, 0xC735, 0xC737, 0xC73C, 0xC73D, 0xC740, 0xC744, 0xC74A, 0xC74C, + 0xC74D, 0xC74F, 0xC751, 0xC752, 0xC753, 0xC754, 0xC755, 0xC756, 0xC757, + 0xC758, 0xC75C, 0xC760, 0xC768, 0xC76B, 0xC774, 0xC775, 0xC778, 0xC77C, + 0xC77D, 0xC77E, 0xC783, 0xC784, 0xC785, 0xC787, 0xC788, 0xC789, 0xC78A, + 0xC78E, 0xC790, 0xC791, 0xC794, 0xC796, 0xC797, 0xC798, 0xC79A, 0xC7A0, + 0xC7A1, 0xC7A3, 0xC7A4, 0xC7A5, 0xC7A6, 0xC7AC, 0xC7AD, 0xC7B0, 0xC7B4, + 0xC7BC, 0xC7BD, 0xC7BF, 0xC7C0, 0xC7C1, 0xC7C8, 0xC7C9, 0xC7CC, 0xC7CE, + 0xC7D0, 0xC7D8, 0xC7DD, 0xC7E4, 0xC7E8, 0xC7EC, 0xC800, 0xC801, 0xC804, + 0xC808, 0xC80A, 0xC810, 0xC811, 0xC813, 0xC815, 0xC816, 0xC81C, 0xC81D, + 0xC820, 0xC824, 0xC82C, 0xC82D, 0xC82F, 0xC831, 0xC838, 0xC83C, 0xC840, + 0xC848, 0xC849, 0xC84C, 0xC84D, 0xC854, 0xC870, 0xC871, 0xC874, 0xC878, + 0xC87A, 0xC880, 0xC881, 0xC883, 0xC885, 0xC886, 0xC887, 0xC88B, 0xC88C, + 0xC88D, 0xC894, 0xC89D, 0xC89F, 0xC8A1, 0xC8A8, 0xC8BC, 0xC8BD, 0xC8C4, + 0xC8C8, 0xC8CC, 0xC8D4, 0xC8D5, 0xC8D7, 0xC8D9, 0xC8E0, 0xC8E1, 0xC8E4, + 0xC8F5, 0xC8FC, 0xC8FD, 0xC900, 0xC904, 0xC905, 0xC906, 0xC90C, 0xC90D, + 0xC90F, 0xC911, 0xC918, 0xC92C, 0xC934, 0xC950, 0xC951, 0xC954, 0xC958, + 0xC960, 0xC961, 0xC963, 0xC96C, 0xC970, 0xC974, 0xC97C, 0xC988, 0xC989, + 0xC98C, 0xC990, 0xC998, 0xC999, 0xC99B, 0xC99D, 0xC9C0, 0xC9C1, 0xC9C4, + 0xC9C7, 0xC9C8, 0xC9CA, 0xC9D0, 0xC9D1, 0xC9D3, 0xC9D5, 0xC9D6, 0xC9D9, + 0xC9DA, 0xC9DC, 0xC9DD, 0xC9E0, 0xC9E2, 0xC9E4, 0xC9E7, 0xC9EC, 0xC9ED, + 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F8, 0xC9F9, 0xC9FC, 0xCA00, 0xCA08, 0xCA09, + 0xCA0B, 0xCA0C, 0xCA0D, 0xCA14, 0xCA18, 0xCA29, 0xCA4C, 0xCA4D, 0xCA50, + 0xCA54, 0xCA5C, 0xCA5D, 0xCA5F, 0xCA60, 0xCA61, 0xCA68, 0xCA7D, 0xCA84, + 0xCA98, 0xCABC, 0xCABD, 0xCAC0, 0xCAC4, 0xCACC, 0xCACD, 0xCACF, 0xCAD1, + 0xCAD3, 0xCAD8, 0xCAD9, 0xCAE0, 0xCAEC, 0xCAF4, 0xCB08, 0xCB10, 0xCB14, + 0xCB18, 0xCB20, 0xCB21, 0xCB41, 0xCB48, 0xCB49, 0xCB4C, 0xCB50, 0xCB58, + 0xCB59, 0xCB5D, 0xCB64, 0xCB78, 0xCB79, 0xCB9C, 0xCBB8, 0xCBD4, 0xCBE4, + 0xCBE7, 0xCBE9, 0xCC0C, 0xCC0D, 0xCC10, 0xCC14, 0xCC1C, 0xCC1D, 0xCC21, + 0xCC22, 0xCC27, 0xCC28, 0xCC29, 0xCC2C, 0xCC2E, 0xCC30, 0xCC38, 0xCC39, + 0xCC3B, 0xCC3C, 0xCC3D, 0xCC3E, 0xCC44, 0xCC45, 0xCC48, 0xCC4C, 0xCC54, + 0xCC55, 0xCC57, 0xCC58, 0xCC59, 0xCC60, 0xCC64, 0xCC66, 0xCC68, 0xCC70, + 0xCC75, 0xCC98, 0xCC99, 0xCC9C, 0xCCA0, 0xCCA8, 0xCCA9, 0xCCAB, 0xCCAC, + 0xCCAD, 0xCCB4, 0xCCB5, 0xCCB8, 0xCCBC, 0xCCC4, 0xCCC5, 0xCCC7, 0xCCC9, + 0xCCD0, 0xCCD4, 0xCCE4, 0xCCEC, 0xCCF0, 0xCD01, 0xCD08, 0xCD09, 0xCD0C, + 0xCD10, 0xCD18, 0xCD19, 0xCD1B, 0xCD1D, 0xCD24, 0xCD28, 0xCD2C, 0xCD39, + 0xCD5C, 0xCD60, 0xCD64, 0xCD6C, 0xCD6D, 0xCD6F, 0xCD71, 0xCD78, 0xCD88, + 0xCD94, 0xCD95, 0xCD98, 0xCD9C, 0xCDA4, 0xCDA5, 0xCDA7, 0xCDA9, 0xCDB0, + 0xCDC4, 0xCDCC, 0xCDD0, 0xCDE8, 0xCDEC, 0xCDF0, 0xCDF8, 0xCDF9, 0xCDFB, + 0xCDFD, 0xCE04, 0xCE08, 0xCE0C, 0xCE14, 0xCE19, 0xCE20, 0xCE21, 0xCE24, + 0xCE28, 0xCE30, 0xCE31, 0xCE33, 0xCE35, 0xCE58, 0xCE59, 0xCE5C, 0xCE5F, + 0xCE60, 0xCE61, 0xCE68, 0xCE69, 0xCE6B, 0xCE6D, 0xCE74, 0xCE75, 0xCE78, + 0xCE7C, 0xCE84, 0xCE85, 0xCE87, 0xCE89, 0xCE90, 0xCE91, 0xCE94, 0xCE98, + 0xCEA0, 0xCEA1, 0xCEA3, 0xCEA4, 0xCEA5, 0xCEAC, 0xCEAD, 0xCEC1, 0xCEE4, + 0xCEE5, 0xCEE8, 0xCEEB, 0xCEEC, 0xCEF4, 0xCEF5, 0xCEF7, 0xCEF8, 0xCEF9, + 0xCF00, 0xCF01, 0xCF04, 0xCF08, 0xCF10, 0xCF11, 0xCF13, 0xCF15, 0xCF1C, + 0xCF20, 0xCF24, 0xCF2C, 0xCF2D, 0xCF2F, 0xCF30, 0xCF31, 0xCF38, 0xCF54, + 0xCF55, 0xCF58, 0xCF5C, 0xCF64, 0xCF65, 0xCF67, 0xCF69, 0xCF70, 0xCF71, + 0xCF74, 0xCF78, 0xCF80, 0xCF85, 0xCF8C, 0xCFA1, 0xCFA8, 0xCFB0, 0xCFC4, + 0xCFE0, 0xCFE1, 0xCFE4, 0xCFE8, 0xCFF0, 0xCFF1, 0xCFF3, 0xCFF5, 0xCFFC, + 0xD000, 0xD004, 0xD011, 0xD018, 0xD02D, 0xD034, 0xD035, 0xD038, 0xD03C, + 0xD044, 0xD045, 0xD047, 0xD049, 0xD050, 0xD054, 0xD058, 0xD060, 0xD06C, + 0xD06D, 0xD070, 0xD074, 0xD07C, 0xD07D, 0xD081, 0xD0A4, 0xD0A5, 0xD0A8, + 0xD0AC, 0xD0B4, 0xD0B5, 0xD0B7, 0xD0B9, 0xD0C0, 0xD0C1, 0xD0C4, 0xD0C8, + 0xD0C9, 0xD0D0, 0xD0D1, 0xD0D3, 0xD0D4, 0xD0D5, 0xD0DC, 0xD0DD, 0xD0E0, + 0xD0E4, 0xD0EC, 0xD0ED, 0xD0EF, 0xD0F0, 0xD0F1, 0xD0F8, 0xD10D, 0xD130, + 0xD131, 0xD134, 0xD138, 0xD13A, 0xD140, 0xD141, 0xD143, 0xD144, 0xD145, + 0xD14C, 0xD14D, 0xD150, 0xD154, 0xD15C, 0xD15D, 0xD15F, 0xD161, 0xD168, + 0xD16C, 0xD17C, 0xD184, 0xD188, 0xD1A0, 0xD1A1, 0xD1A4, 0xD1A8, 0xD1B0, + 0xD1B1, 0xD1B3, 0xD1B5, 0xD1BA, 0xD1BC, 0xD1C0, 0xD1D8, 0xD1F4, 0xD1F8, + 0xD207, 0xD209, 0xD210, 0xD22C, 0xD22D, 0xD230, 0xD234, 0xD23C, 0xD23D, + 0xD23F, 0xD241, 0xD248, 0xD25C, 0xD264, 0xD280, 0xD281, 0xD284, 0xD288, + 0xD290, 0xD291, 0xD295, 0xD29C, 0xD2A0, 0xD2A4, 0xD2AC, 0xD2B1, 0xD2B8, + 0xD2B9, 0xD2BC, 0xD2BF, 0xD2C0, 0xD2C2, 0xD2C8, 0xD2C9, 0xD2CB, 0xD2D4, + 0xD2D8, 0xD2DC, 0xD2E4, 0xD2E5, 0xD2F0, 0xD2F1, 0xD2F4, 0xD2F8, 0xD300, + 0xD301, 0xD303, 0xD305, 0xD30C, 0xD30D, 0xD30E, 0xD310, 0xD314, 0xD316, + 0xD31C, 0xD31D, 0xD31F, 0xD320, 0xD321, 0xD325, 0xD328, 0xD329, 0xD32C, + 0xD330, 0xD338, 0xD339, 0xD33B, 0xD33C, 0xD33D, 0xD344, 0xD345, 0xD37C, + 0xD37D, 0xD380, 0xD384, 0xD38C, 0xD38D, 0xD38F, 0xD390, 0xD391, 0xD398, + 0xD399, 0xD39C, 0xD3A0, 0xD3A8, 0xD3A9, 0xD3AB, 0xD3AD, 0xD3B4, 0xD3B8, + 0xD3BC, 0xD3C4, 0xD3C5, 0xD3C8, 0xD3C9, 0xD3D0, 0xD3D8, 0xD3E1, 0xD3E3, + 0xD3EC, 0xD3ED, 0xD3F0, 0xD3F4, 0xD3FC, 0xD3FD, 0xD3FF, 0xD401, 0xD408, + 0xD41D, 0xD440, 0xD444, 0xD45C, 0xD460, 0xD464, 0xD46D, 0xD46F, 0xD478, + 0xD479, 0xD47C, 0xD47F, 0xD480, 0xD482, 0xD488, 0xD489, 0xD48B, 0xD48D, + 0xD494, 0xD4A9, 0xD4CC, 0xD4D0, 0xD4D4, 0xD4DC, 0xD4DF, 0xD4E8, 0xD4EC, + 0xD4F0, 0xD4F8, 0xD4FB, 0xD4FD, 0xD504, 0xD508, 0xD50C, 0xD514, 0xD515, + 0xD517, 0xD53C, 0xD53D, 0xD540, 0xD544, 0xD54C, 0xD54D, 0xD54F, 0xD551, + 0xD558, 0xD559, 0xD55C, 0xD560, 0xD565, 0xD568, 0xD569, 0xD56B, 0xD56D, + 0xD574, 0xD575, 0xD578, 0xD57C, 0xD584, 0xD585, 0xD587, 0xD588, 0xD589, + 0xD590, 0xD5A5, 0xD5C8, 0xD5C9, 0xD5CC, 0xD5D0, 0xD5D2, 0xD5D8, 0xD5D9, + 0xD5DB, 0xD5DD, 0xD5E4, 0xD5E5, 0xD5E8, 0xD5EC, 0xD5F4, 0xD5F5, 0xD5F7, + 0xD5F9, 0xD600, 0xD601, 0xD604, 0xD608, 0xD610, 0xD611, 0xD613, 0xD614, + 0xD615, 0xD61C, 0xD620, 0xD624, 0xD62D, 0xD638, 0xD639, 0xD63C, 0xD640, + 0xD645, 0xD648, 0xD649, 0xD64B, 0xD64D, 0xD651, 0xD654, 0xD655, 0xD658, + 0xD65C, 0xD667, 0xD669, 0xD670, 0xD671, 0xD674, 0xD683, 0xD685, 0xD68C, + 0xD68D, 0xD690, 0xD694, 0xD69D, 0xD69F, 0xD6A1, 0xD6A8, 0xD6AC, 0xD6B0, + 0xD6B9, 0xD6BB, 0xD6C4, 0xD6C5, 0xD6C8, 0xD6CC, 0xD6D1, 0xD6D4, 0xD6D7, + 0xD6D9, 0xD6E0, 0xD6E4, 0xD6E8, 0xD6F0, 0xD6F5, 0xD6FC, 0xD6FD, 0xD700, + 0xD704, 0xD711, 0xD718, 0xD719, 0xD71C, 0xD720, 0xD728, 0xD729, 0xD72B, + 0xD72D, 0xD734, 0xD735, 0xD738, 0xD73C, 0xD744, 0xD747, 0xD749, 0xD750, + 0xD751, 0xD754, 0xD756, 0xD757, 0xD758, 0xD759, 0xD760, 0xD761, 0xD763, + 0xD765, 0xD769, 0xD76C, 0xD770, 0xD774, 0xD77C, 0xD77D, 0xD781, 0xD788, + 0xD789, 0xD78C, 0xD790, 0xD798, 0xD799, 0xD79B, 0xD79D, 0x4F3D, 0x4F73, + 0x5047, 0x50F9, 0x52A0, 0x53EF, 0x5475, 0x54E5, 0x5609, 0x5AC1, 0x5BB6, + 0x6687, 0x67B6, 0x67B7, 0x67EF, 0x6B4C, 0x73C2, 0x75C2, 0x7A3C, 0x82DB, + 0x8304, 0x8857, 0x8888, 0x8A36, 0x8CC8, 0x8DCF, 0x8EFB, 0x8FE6, 0x99D5, + 0x523B, 0x5374, 0x5404, 0x606A, 0x6164, 0x6BBC, 0x73CF, 0x811A, 0x89BA, + 0x89D2, 0x95A3, 0x4F83, 0x520A, 0x58BE, 0x5978, 0x59E6, 0x5E72, 0x5E79, + 0x61C7, 0x63C0, 0x6746, 0x67EC, 0x687F, 0x6F97, 0x764E, 0x770B, 0x78F5, + 0x7A08, 0x7AFF, 0x7C21, 0x809D, 0x826E, 0x8271, 0x8AEB, 0x9593, 0x4E6B, + 0x559D, 0x66F7, 0x6E34, 0x78A3, 0x7AED, 0x845B, 0x8910, 0x874E, 0x97A8, + 0x52D8, 0x574E, 0x582A, 0x5D4C, 0x611F, 0x61BE, 0x6221, 0x6562, 0x67D1, + 0x6A44, 0x6E1B, 0x7518, 0x75B3, 0x76E3, 0x77B0, 0x7D3A, 0x90AF, 0x9451, + 0x9452, 0x9F95, 0x5323, 0x5CAC, 0x7532, 0x80DB, 0x9240, 0x9598, 0x525B, + 0x5808, 0x59DC, 0x5CA1, 0x5D17, 0x5EB7, 0x5F3A, 0x5F4A, 0x6177, 0x6C5F, + 0x757A, 0x7586, 0x7CE0, 0x7D73, 0x7DB1, 0x7F8C, 0x8154, 0x8221, 0x8591, + 0x8941, 0x8B1B, 0x92FC, 0x964D, 0x9C47, 0x4ECB, 0x4EF7, 0x500B, 0x51F1, + 0x584F, 0x6137, 0x613E, 0x6168, 0x6539, 0x69EA, 0x6F11, 0x75A5, 0x7686, + 0x76D6, 0x7B87, 0x82A5, 0x84CB, 0x93A7, 0x958B, 0x5580, 0x5BA2, 0x5751, + 0x7CB3, 0x7FB9, 0x91B5, 0x5028, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x636E, + 0x64DA, 0x64E7, 0x6E20, 0x70AC, 0x795B, 0x8DDD, 0x8E1E, 0x907D, 0x9245, + 0x92F8, 0x4E7E, 0x4EF6, 0x5065, 0x5DFE, 0x5EFA, 0x6106, 0x6957, 0x8171, + 0x8654, 0x8E47, 0x9375, 0x9A2B, 0x4E5E, 0x5091, 0x6770, 0x6840, 0x5109, + 0x528D, 0x5292, 0x6AA2, 0x77BC, 0x9210, 0x9ED4, 0x52AB, 0x602F, 0x8FF2, + 0x5048, 0x61A9, 0x63ED, 0x64CA, 0x683C, 0x6A84, 0x6FC0, 0x8188, 0x89A1, + 0x9694, 0x5805, 0x727D, 0x72AC, 0x7504, 0x7D79, 0x7E6D, 0x80A9, 0x898B, + 0x8B74, 0x9063, 0x9D51, 0x6289, 0x6C7A, 0x6F54, 0x7D50, 0x7F3A, 0x8A23, + 0x517C, 0x614A, 0x7B9D, 0x8B19, 0x9257, 0x938C, 0x4EAC, 0x4FD3, 0x501E, + 0x50BE, 0x5106, 0x52C1, 0x52CD, 0x537F, 0x5770, 0x5883, 0x5E9A, 0x5F91, + 0x6176, 0x61AC, 0x64CE, 0x656C, 0x666F, 0x66BB, 0x66F4, 0x6897, 0x6D87, + 0x7085, 0x70F1, 0x749F, 0x74A5, 0x74CA, 0x75D9, 0x786C, 0x78EC, 0x7ADF, + 0x7AF6, 0x7D45, 0x7D93, 0x8015, 0x803F, 0x811B, 0x8396, 0x8B66, 0x8F15, + 0x9015, 0x93E1, 0x9803, 0x9838, 0x9A5A, 0x9BE8, 0x4FC2, 0x5553, 0x583A, + 0x5951, 0x5B63, 0x5C46, 0x60B8, 0x6212, 0x6842, 0x68B0, 0x68E8, 0x6EAA, + 0x754C, 0x7678, 0x78CE, 0x7A3D, 0x7CFB, 0x7E6B, 0x7E7C, 0x8A08, 0x8AA1, + 0x8C3F, 0x968E, 0x9DC4, 0x53E4, 0x53E9, 0x544A, 0x5471, 0x56FA, 0x59D1, + 0x5B64, 0x5C3B, 0x5EAB, 0x62F7, 0x6537, 0x6545, 0x6572, 0x66A0, 0x67AF, + 0x69C1, 0x6CBD, 0x75FC, 0x7690, 0x777E, 0x7A3F, 0x7F94, 0x8003, 0x80A1, + 0x818F, 0x82E6, 0x82FD, 0x83F0, 0x85C1, 0x8831, 0x88B4, 0x8AA5, 0x8F9C, + 0x932E, 0x96C7, 0x9867, 0x9AD8, 0x9F13, 0x54ED, 0x659B, 0x66F2, 0x688F, + 0x7A40, 0x8C37, 0x9D60, 0x56F0, 0x5764, 0x5D11, 0x6606, 0x68B1, 0x68CD, + 0x6EFE, 0x7428, 0x889E, 0x9BE4, 0x6C68, 0x9AA8, 0x4F9B, 0x516C, 0x5171, + 0x529F, 0x5B54, 0x5DE5, 0x6050, 0x606D, 0x62F1, 0x63A7, 0x653B, 0x73D9, + 0x7A7A, 0x86A3, 0x8CA2, 0x978F, 0x4E32, 0x5BE1, 0x6208, 0x679C, 0x74DC, + 0x79D1, 0x83D3, 0x8A87, 0x8AB2, 0x8DE8, 0x904E, 0x934B, 0x9846, 0x5ED3, + 0x69E8, 0x85FF, 0x90ED, 0x51A0, 0x5B98, 0x5BEC, 0x6163, 0x68FA, 0x6B3E, + 0x704C, 0x742F, 0x74D8, 0x7BA1, 0x7F50, 0x83C5, 0x89C0, 0x8CAB, 0x95DC, + 0x9928, 0x522E, 0x605D, 0x62EC, 0x9002, 0x4F8A, 0x5149, 0x5321, 0x58D9, + 0x5EE3, 0x66E0, 0x6D38, 0x709A, 0x72C2, 0x73D6, 0x7B50, 0x80F1, 0x945B, + 0x5366, 0x639B, 0x7F6B, 0x4E56, 0x5080, 0x584A, 0x58DE, 0x602A, 0x6127, + 0x62D0, 0x69D0, 0x9B41, 0x5B8F, 0x7D18, 0x80B1, 0x8F5F, 0x4EA4, 0x50D1, + 0x54AC, 0x55AC, 0x5B0C, 0x5DA0, 0x5DE7, 0x652A, 0x654E, 0x6821, 0x6A4B, + 0x72E1, 0x768E, 0x77EF, 0x7D5E, 0x7FF9, 0x81A0, 0x854E, 0x86DF, 0x8F03, + 0x8F4E, 0x90CA, 0x9903, 0x9A55, 0x9BAB, 0x4E18, 0x4E45, 0x4E5D, 0x4EC7, + 0x4FF1, 0x5177, 0x52FE, 0x5340, 0x53E3, 0x53E5, 0x548E, 0x5614, 0x5775, + 0x57A2, 0x5BC7, 0x5D87, 0x5ED0, 0x61FC, 0x62D8, 0x6551, 0x67B8, 0x67E9, + 0x69CB, 0x6B50, 0x6BC6, 0x6BEC, 0x6C42, 0x6E9D, 0x7078, 0x72D7, 0x7396, + 0x7403, 0x77BF, 0x77E9, 0x7A76, 0x7D7F, 0x8009, 0x81FC, 0x8205, 0x820A, + 0x82DF, 0x8862, 0x8B33, 0x8CFC, 0x8EC0, 0x9011, 0x90B1, 0x9264, 0x92B6, + 0x99D2, 0x9A45, 0x9CE9, 0x9DD7, 0x9F9C, 0x570B, 0x5C40, 0x83CA, 0x97A0, + 0x97AB, 0x9EB4, 0x541B, 0x7A98, 0x7FA4, 0x88D9, 0x8ECD, 0x90E1, 0x5800, + 0x5C48, 0x6398, 0x7A9F, 0x5BAE, 0x5F13, 0x7A79, 0x7AAE, 0x828E, 0x8EAC, + 0x5026, 0x5238, 0x52F8, 0x5377, 0x5708, 0x62F3, 0x6372, 0x6B0A, 0x6DC3, + 0x7737, 0x53A5, 0x7357, 0x8568, 0x8E76, 0x95D5, 0x673A, 0x6AC3, 0x6F70, + 0x8A6D, 0x8ECC, 0x994B, 0x6677, 0x6B78, 0x8CB4, 0x9B3C, 0x53EB, 0x572D, + 0x594E, 0x63C6, 0x69FB, 0x73EA, 0x7845, 0x7ABA, 0x7AC5, 0x7CFE, 0x8475, + 0x898F, 0x8D73, 0x9035, 0x95A8, 0x52FB, 0x5747, 0x7547, 0x7B60, 0x83CC, + 0x921E, 0x6A58, 0x514B, 0x524B, 0x5287, 0x621F, 0x68D8, 0x6975, 0x9699, + 0x50C5, 0x52A4, 0x52E4, 0x61C3, 0x65A4, 0x6839, 0x69FF, 0x747E, 0x7B4B, + 0x82B9, 0x83EB, 0x89B2, 0x8B39, 0x8FD1, 0x9949, 0x4ECA, 0x5997, 0x64D2, + 0x6611, 0x6A8E, 0x7434, 0x7981, 0x79BD, 0x82A9, 0x887E, 0x887F, 0x895F, + 0x9326, 0x4F0B, 0x53CA, 0x6025, 0x6271, 0x6C72, 0x7D1A, 0x7D66, 0x4E98, + 0x5162, 0x77DC, 0x80AF, 0x4F01, 0x4F0E, 0x5176, 0x5180, 0x55DC, 0x5668, + 0x573B, 0x57FA, 0x57FC, 0x5914, 0x5947, 0x5993, 0x5BC4, 0x5C90, 0x5D0E, + 0x5DF1, 0x5E7E, 0x5FCC, 0x6280, 0x65D7, 0x65E3, 0x671E, 0x671F, 0x675E, + 0x68CB, 0x68C4, 0x6A5F, 0x6B3A, 0x6C23, 0x6C7D, 0x6C82, 0x6DC7, 0x7398, + 0x7426, 0x742A, 0x7482, 0x74A3, 0x7578, 0x757F, 0x7881, 0x78EF, 0x7941, + 0x7947, 0x7948, 0x797A, 0x7B95, 0x7D00, 0x7DBA, 0x7F88, 0x8006, 0x802D, + 0x808C, 0x8A18, 0x8B4F, 0x8C48, 0x8D77, 0x9321, 0x9324, 0x98E2, 0x9951, + 0x9A0E, 0x9A0F, 0x9A65, 0x9E92, 0x7DCA, 0x4F76, 0x5409, 0x62EE, 0x6854, + 0x91D1, 0x55AB, 0x513A, 0x5A1C, 0x61E6, 0x62CF, 0x62FF, 0x90A3, 0x8AFE, + 0x6696, 0x7156, 0x96E3, 0x634F, 0x637A, 0x5357, 0x678F, 0x6960, 0x6E73, + 0x7537, 0x7D0D, 0x8872, 0x56CA, 0x5A18, 0x4E43, 0x5167, 0x5948, 0x67F0, + 0x8010, 0x5973, 0x5E74, 0x649A, 0x79CA, 0x5FF5, 0x606C, 0x62C8, 0x637B, + 0x5BE7, 0x5BD7, 0x52AA, 0x5974, 0x5F29, 0x6012, 0x7459, 0x99D1, 0x6FC3, + 0x81BF, 0x8FB2, 0x60F1, 0x8166, 0x5C3F, 0x5AE9, 0x8A25, 0x677B, 0x7D10, + 0x80FD, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA, 0x591A, 0x8336, 0x4E39, 0x4EB6, + 0x4F46, 0x55AE, 0x5718, 0x58C7, 0x5F56, 0x65B7, 0x65E6, 0x6A80, 0x6BB5, + 0x6E4D, 0x77ED, 0x7AEF, 0x7C1E, 0x7DDE, 0x86CB, 0x8892, 0x9132, 0x935B, + 0x64BB, 0x6FBE, 0x737A, 0x75B8, 0x9054, 0x5556, 0x574D, 0x61BA, 0x64D4, + 0x66C7, 0x6DE1, 0x6E5B, 0x6F6D, 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541, + 0x8983, 0x8AC7, 0x8B5A, 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, 0x905D, + 0x5510, 0x5802, 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, 0x7576, 0x7CD6, + 0x87B3, 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, 0x5C0D, 0x5CB1, 0x5E36, + 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, 0x888B, 0x8CB8, 0x968A, 0x9EDB, + 0x5B85, 0x5FB7, 0x60B3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835, 0x5857, + 0x5C0E, 0x5C60, 0x5CF6, 0x5D8B, 0x5EA6, 0x5F92, 0x60BC, 0x6311, 0x6389, + 0x6417, 0x6843, 0x68F9, 0x6AC2, 0x6DD8, 0x6E21, 0x6ED4, 0x6FE4, 0x71FE, + 0x76DC, 0x7779, 0x79B1, 0x7A3B, 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48, + 0x9003, 0x9014, 0x9053, 0x90FD, 0x934D, 0x9676, 0x97DC, 0x6BD2, 0x7006, + 0x7258, 0x72A2, 0x7368, 0x7763, 0x79BF, 0x7BE4, 0x7E9B, 0x8B80, 0x58A9, + 0x60C7, 0x6566, 0x65FD, 0x66BE, 0x6C8C, 0x711E, 0x71C9, 0x8C5A, 0x9813, + 0x4E6D, 0x7A81, 0x4EDD, 0x51AC, 0x51CD, 0x52D5, 0x540C, 0x61A7, 0x6771, + 0x6850, 0x68DF, 0x6D1E, 0x6F7C, 0x75BC, 0x77B3, 0x7AE5, 0x80F4, 0x8463, + 0x9285, 0x515C, 0x6597, 0x675C, 0x6793, 0x75D8, 0x7AC7, 0x8373, 0x8C46, + 0x9017, 0x982D, 0x5C6F, 0x81C0, 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97, + 0x5D9D, 0x6A59, 0x71C8, 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, 0x9A30, + 0x5587, 0x61F6, 0x7669, 0x7F85, 0x863F, 0x87BA, 0x88F8, 0x908F, 0x6D1B, + 0x70D9, 0x73DE, 0x7D61, 0x843D, 0x916A, 0x99F1, 0x4E82, 0x5375, 0x6B04, + 0x6B12, 0x703E, 0x721B, 0x862D, 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5, + 0x652C, 0x6B16, 0x6FEB, 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, 0x62C9, + 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x7405, 0x746F, 0x8782, + 0x90DE, 0x4F86, 0x5D0D, 0x5FA0, 0x840A, 0x51B7, 0x63A0, 0x7565, 0x4EAE, + 0x5006, 0x5169, 0x51C9, 0x6881, 0x6A11, 0x7CAE, 0x7CB1, 0x7CE7, 0x826F, + 0x8AD2, 0x8F1B, 0x91CF, 0x4FB6, 0x5137, 0x52F5, 0x5442, 0x5EEC, 0x616E, + 0x623E, 0x65C5, 0x6ADA, 0x6FFE, 0x792A, 0x85DC, 0x8823, 0x95AD, 0x9A62, + 0x9A6A, 0x9E97, 0x9ECE, 0x529B, 0x66C6, 0x6B77, 0x701D, 0x792B, 0x8F62, + 0x9742, 0x6190, 0x6200, 0x6523, 0x6F23, 0x7149, 0x7489, 0x7DF4, 0x806F, + 0x84EE, 0x8F26, 0x9023, 0x934A, 0x51BD, 0x5217, 0x52A3, 0x6D0C, 0x70C8, + 0x88C2, 0x5EC9, 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375, 0x4EE4, 0x4F36, + 0x56F9, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, 0x7B2D, 0x7F9A, 0x7FCE, 0x8046, + 0x901E, 0x9234, 0x96F6, 0x9748, 0x9818, 0x9F61, 0x4F8B, 0x6FA7, 0x79AE, + 0x91B4, 0x96B7, 0x52DE, 0x6488, 0x64C4, 0x6AD3, 0x6F5E, 0x7018, 0x7210, + 0x76E7, 0x8001, 0x8606, 0x865C, 0x8DEF, 0x8F05, 0x9732, 0x9B6F, 0x9DFA, + 0x9E75, 0x788C, 0x797F, 0x7DA0, 0x83C9, 0x9304, 0x9E7F, 0x9E93, 0x8AD6, + 0x58DF, 0x5F04, 0x6727, 0x7027, 0x74CF, 0x7C60, 0x807E, 0x5121, 0x7028, + 0x7262, 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4, 0x96F7, 0x4E86, 0x50DA, 0x5BEE, + 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD, 0x804A, 0x84FC, 0x907C, 0x9B27, + 0x9F8D, 0x58D8, 0x5A41, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, 0x763B, 0x7D2F, + 0x7E37, 0x851E, 0x8938, 0x93E4, 0x964B, 0x5289, 0x65D2, 0x67F3, 0x69B4, + 0x6D41, 0x6E9C, 0x700F, 0x7409, 0x7460, 0x7559, 0x7624, 0x786B, 0x8B2C, + 0x985E, 0x516D, 0x622E, 0x9678, 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8, + 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0x9686, 0x52D2, 0x808B, 0x51DC, 0x51CC, + 0x695E, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, 0x5229, 0x5398, 0x540F, + 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, 0x6D6C, 0x7281, 0x72F8, 0x7406, + 0x7483, 0x75E2, 0x7C6C, 0x7F79, 0x7FB8, 0x8389, 0x88CF, 0x88E1, 0x91CC, + 0x91D0, 0x96E2, 0x9BC9, 0x541D, 0x6F7E, 0x71D0, 0x7498, 0x85FA, 0x8EAA, + 0x96A3, 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x7433, 0x81E8, 0x9716, 0x782C, + 0x7ACB, 0x7B20, 0x7C92, 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, 0x99AC, + 0x9B54, 0x9EBB, 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, 0x9088, 0x4E07, + 0x534D, 0x5A29, 0x5DD2, 0x5F4E, 0x6162, 0x633D, 0x6669, 0x66FC, 0x6EFF, + 0x6F2B, 0x7063, 0x779E, 0x842C, 0x8513, 0x883B, 0x8F13, 0x9945, 0x9C3B, + 0x551C, 0x62B9, 0x672B, 0x6CAB, 0x8309, 0x896A, 0x977A, 0x4EA1, 0x5984, + 0x5FD8, 0x5FD9, 0x671B, 0x7DB2, 0x7F54, 0x8292, 0x832B, 0x83BD, 0x8F1E, + 0x9099, 0x57CB, 0x59B9, 0x5A92, 0x5BD0, 0x6627, 0x679A, 0x6885, 0x6BCF, + 0x7164, 0x7F75, 0x8CB7, 0x8CE3, 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C, + 0x9A40, 0x9EA5, 0x5B5F, 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, 0x51AA, + 0x8993, 0x514D, 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, 0x7720, 0x7DBF, + 0x7DEC, 0x9762, 0x9EB5, 0x6EC5, 0x8511, 0x51A5, 0x540D, 0x547D, 0x660E, + 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, 0x8317, 0x84C2, 0x879F, 0x9169, + 0x9298, 0x9CF4, 0x8882, 0x4FAE, 0x5192, 0x52DF, 0x59C6, 0x5E3D, 0x6155, + 0x6478, 0x6479, 0x66AE, 0x67D0, 0x6A21, 0x6BCD, 0x6BDB, 0x725F, 0x7261, + 0x7441, 0x7738, 0x77DB, 0x8017, 0x82BC, 0x8305, 0x8B00, 0x8B28, 0x8C8C, + 0x6728, 0x6C90, 0x7267, 0x76EE, 0x7766, 0x7A46, 0x9DA9, 0x6B7F, 0x6C92, + 0x5922, 0x6726, 0x8499, 0x536F, 0x5893, 0x5999, 0x5EDF, 0x63CF, 0x6634, + 0x6773, 0x6E3A, 0x732B, 0x7AD7, 0x82D7, 0x9328, 0x52D9, 0x5DEB, 0x61AE, + 0x61CB, 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959, 0x6B66, 0x6BCB, 0x7121, + 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, 0x856A, 0x8AA3, 0x8CBF, 0x9727, + 0x9D61, 0x58A8, 0x9ED8, 0x5011, 0x520E, 0x543B, 0x554F, 0x6587, 0x6C76, + 0x7D0A, 0x7D0B, 0x805E, 0x868A, 0x9580, 0x96EF, 0x52FF, 0x6C95, 0x7269, + 0x5473, 0x5A9A, 0x5C3E, 0x5D4B, 0x5F4C, 0x5FAE, 0x672A, 0x68B6, 0x6963, + 0x6E3C, 0x6E44, 0x7709, 0x7C73, 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761, + 0x9EF4, 0x5CB7, 0x60B6, 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, 0x6C11, + 0x6CEF, 0x739F, 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, 0x8B10, 0x525D, + 0x535A, 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, 0x6CCA, 0x73C0, 0x749E, + 0x7B94, 0x7C95, 0x7E1B, 0x818A, 0x8236, 0x8584, 0x8FEB, 0x96F9, 0x99C1, + 0x4F34, 0x534A, 0x53CD, 0x53DB, 0x62CC, 0x642C, 0x6500, 0x6591, 0x69C3, + 0x6CEE, 0x6F58, 0x73ED, 0x7554, 0x7622, 0x76E4, 0x76FC, 0x78D0, 0x78FB, + 0x792C, 0x7D46, 0x822C, 0x87E0, 0x8FD4, 0x9812, 0x98EF, 0x52C3, 0x62D4, + 0x64A5, 0x6E24, 0x6F51, 0x767C, 0x8DCB, 0x91B1, 0x9262, 0x9AEE, 0x9B43, + 0x5023, 0x508D, 0x574A, 0x59A8, 0x5C28, 0x5E47, 0x5F77, 0x623F, 0x653E, + 0x65B9, 0x65C1, 0x6609, 0x678B, 0x699C, 0x6EC2, 0x78C5, 0x7D21, 0x80AA, + 0x8180, 0x822B, 0x82B3, 0x84A1, 0x868C, 0x8A2A, 0x8B17, 0x90A6, 0x9632, + 0x9F90, 0x500D, 0x4FF3, 0x57F9, 0x5F98, 0x62DC, 0x6392, 0x676F, 0x6E43, + 0x7119, 0x76C3, 0x80CC, 0x80DA, 0x88F4, 0x88F5, 0x8919, 0x8CE0, 0x8F29, + 0x914D, 0x966A, 0x4F2F, 0x4F70, 0x5E1B, 0x67CF, 0x6822, 0x767D, 0x767E, + 0x9B44, 0x5E61, 0x6A0A, 0x7169, 0x71D4, 0x756A, 0x7E41, 0x8543, 0x85E9, + 0x98DC, 0x4F10, 0x7B4F, 0x7F70, 0x95A5, 0x51E1, 0x5E06, 0x68B5, 0x6C3E, + 0x6C4E, 0x6CDB, 0x72AF, 0x7BC4, 0x8303, 0x6CD5, 0x743A, 0x50FB, 0x5288, + 0x58C1, 0x64D8, 0x6A97, 0x74A7, 0x7656, 0x78A7, 0x8617, 0x95E2, 0x9739, + 0x535E, 0x5F01, 0x8B8A, 0x8FA8, 0x8FAF, 0x908A, 0x5225, 0x77A5, 0x9C49, + 0x9F08, 0x4E19, 0x5002, 0x5175, 0x5C5B, 0x5E77, 0x661E, 0x663A, 0x67C4, + 0x68C5, 0x70B3, 0x7501, 0x75C5, 0x79C9, 0x7ADD, 0x8F27, 0x9920, 0x9A08, + 0x4FDD, 0x5821, 0x5831, 0x5BF6, 0x666E, 0x6B65, 0x6D11, 0x6E7A, 0x6F7D, + 0x73E4, 0x752B, 0x83E9, 0x88DC, 0x8913, 0x8B5C, 0x8F14, 0x4F0F, 0x50D5, + 0x5310, 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F, 0x8179, 0x832F, 0x8514, + 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, 0x9C12, 0x672C, 0x4E76, 0x4FF8, + 0x5949, 0x5C01, 0x5CEF, 0x5CF0, 0x6367, 0x68D2, 0x70FD, 0x71A2, 0x742B, + 0x7E2B, 0x84EC, 0x8702, 0x9022, 0x92D2, 0x9CF3, 0x4E0D, 0x4ED8, 0x4FEF, + 0x5085, 0x5256, 0x526F, 0x5426, 0x5490, 0x57E0, 0x592B, 0x5A66, 0x5B5A, + 0x5B75, 0x5BCC, 0x5E9C, 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, 0x7236, + 0x7B26, 0x7C3F, 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, 0x8299, 0x83A9, + 0x8A03, 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, 0x90E8, 0x91DC, 0x961C, + 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58B3, 0x5954, + 0x596E, 0x5FFF, 0x61A4, 0x626E, 0x6610, 0x6C7E, 0x711A, 0x76C6, 0x7C89, + 0x7CDE, 0x7D1B, 0x82AC, 0x8CC1, 0x96F0, 0x4F5B, 0x5F17, 0x5F7F, 0x62C2, + 0x5D29, 0x670B, 0x68DA, 0x787C, 0x7E43, 0x9D6C, 0x4E15, 0x5099, 0x5315, + 0x532A, 0x5351, 0x5983, 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249, 0x6279, + 0x6590, 0x6787, 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, 0x6CB8, 0x7435, + 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, 0x7C83, 0x7DCB, 0x7FE1, 0x80A5, + 0x813E, 0x81C2, 0x83F2, 0x871A, 0x88E8, 0x8AB9, 0x8B6C, 0x8CBB, 0x9119, + 0x975E, 0x98DB, 0x9F3B, 0x56AC, 0x5B2A, 0x5F6C, 0x658C, 0x6AB3, 0x6BAF, + 0x6D5C, 0x6FF1, 0x7015, 0x725D, 0x73AD, 0x8CA7, 0x8CD3, 0x983B, 0x6191, + 0x6C37, 0x8058, 0x9A01, 0x4E4D, 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C, + 0x4F7F, 0x4FDF, 0x50FF, 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, 0x58EB, + 0x5962, 0x5A11, 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, 0x5F99, 0x601D, + 0x6368, 0x659C, 0x65AF, 0x67F6, 0x67FB, 0x68AD, 0x6B7B, 0x6C99, 0x6CD7, + 0x6E23, 0x7009, 0x7345, 0x7802, 0x793E, 0x7940, 0x7960, 0x79C1, 0x7BE9, + 0x7D17, 0x7D72, 0x8086, 0x820D, 0x838E, 0x84D1, 0x86C7, 0x88DF, 0x8A50, + 0x8A5E, 0x8B1D, 0x8CDC, 0x8D66, 0x8FAD, 0x90AA, 0x98FC, 0x99DF, 0x9E9D, + 0x524A, 0x6714, 0x5098, 0x522A, 0x5C71, 0x6563, 0x6C55, 0x73CA, 0x7523, + 0x759D, 0x7B97, 0x849C, 0x9178, 0x9730, 0x4E77, 0x6492, 0x6BBA, 0x715E, + 0x85A9, 0x4E09, 0x6749, 0x68EE, 0x6E17, 0x829F, 0x8518, 0x886B, 0x63F7, + 0x6F81, 0x9212, 0x98AF, 0x4E0A, 0x50B7, 0x50CF, 0x511F, 0x5546, 0x55AA, + 0x5617, 0x5B40, 0x5C19, 0x5CE0, 0x5E38, 0x5E8A, 0x5EA0, 0x5EC2, 0x60F3, + 0x6851, 0x6A61, 0x6E58, 0x723D, 0x7240, 0x72C0, 0x76F8, 0x7965, 0x7BB1, + 0x7FD4, 0x88F3, 0x89F4, 0x8A73, 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD, + 0x8CFD, 0x55C7, 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, 0x7525, 0x7B19, + 0x5885, 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, 0x5F90, 0x6055, 0x6292, 0x637F, + 0x654D, 0x6691, 0x66D9, 0x66F8, 0x6816, 0x68F2, 0x7280, 0x745E, 0x7B6E, + 0x7D6E, 0x7DD6, 0x7F72, 0x80E5, 0x8212, 0x85AF, 0x897F, 0x8A93, 0x901D, + 0x92E4, 0x9ECD, 0x9F20, 0x5915, 0x596D, 0x5E2D, 0x60DC, 0x6614, 0x6673, + 0x6790, 0x6C50, 0x6DC5, 0x6F5F, 0x77F3, 0x78A9, 0x84C6, 0x91CB, 0x932B, + 0x4ED9, 0x50CA, 0x5148, 0x5584, 0x5B0B, 0x5BA3, 0x6247, 0x657E, 0x65CB, + 0x6E32, 0x717D, 0x7401, 0x7444, 0x7487, 0x74BF, 0x766C, 0x79AA, 0x7DDA, + 0x7E55, 0x7FA8, 0x817A, 0x81B3, 0x8239, 0x861A, 0x87EC, 0x8A75, 0x8DE3, + 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE, 0x5368, 0x5C51, 0x6954, 0x6CC4, + 0x6D29, 0x6E2B, 0x820C, 0x859B, 0x893B, 0x8A2D, 0x8AAA, 0x96EA, 0x9F67, + 0x5261, 0x66B9, 0x6BB2, 0x7E96, 0x87FE, 0x8D0D, 0x9583, 0x965D, 0x651D, + 0x6D89, 0x71EE, 0x57CE, 0x59D3, 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F, + 0x665F, 0x7329, 0x73F9, 0x76DB, 0x7701, 0x7B6C, 0x8056, 0x8072, 0x8165, + 0x8AA0, 0x9192, 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, 0x7B39, 0x7D30, + 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, 0x5C0F, 0x5C11, 0x5DE2, 0x6240, + 0x6383, 0x6414, 0x662D, 0x68B3, 0x6CBC, 0x6D88, 0x6EAF, 0x701F, 0x70A4, + 0x71D2, 0x7526, 0x758F, 0x758E, 0x7619, 0x7B11, 0x7BE0, 0x7C2B, 0x7D20, + 0x7D39, 0x852C, 0x856D, 0x8607, 0x8A34, 0x900D, 0x9061, 0x90B5, 0x92B7, + 0x97F6, 0x9A37, 0x4FD7, 0x5C6C, 0x675F, 0x6D91, 0x7C9F, 0x7E8C, 0x8B16, + 0x8D16, 0x901F, 0x5B6B, 0x5DFD, 0x640D, 0x84C0, 0x905C, 0x98E1, 0x7387, + 0x5B8B, 0x609A, 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001, 0x980C, 0x5237, + 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, 0x4FEE, 0x53D7, 0x55FD, 0x56DA, + 0x5782, 0x58FD, 0x5AC2, 0x5B88, 0x5CAB, 0x5CC0, 0x5E25, 0x6101, 0x620D, + 0x624B, 0x6388, 0x641C, 0x6536, 0x6578, 0x6A39, 0x6B8A, 0x6C34, 0x6D19, + 0x6F31, 0x71E7, 0x72E9, 0x7378, 0x7407, 0x74B2, 0x7626, 0x7761, 0x79C0, + 0x7A57, 0x7AEA, 0x7CB9, 0x7D8F, 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331, + 0x8490, 0x84DA, 0x85EA, 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, 0x9083, + 0x916C, 0x9296, 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, 0x9700, 0x9808, + 0x9996, 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, 0x5B70, 0x5BBF, 0x6DD1, + 0x6F5A, 0x719F, 0x7421, 0x74B9, 0x8085, 0x83FD, 0x5DE1, 0x5F87, 0x5FAA, + 0x6042, 0x65EC, 0x6812, 0x696F, 0x6A53, 0x6B89, 0x6D35, 0x6DF3, 0x73E3, + 0x76FE, 0x77AC, 0x7B4D, 0x7D14, 0x8123, 0x821C, 0x8340, 0x84F4, 0x8563, + 0x8A62, 0x8AC4, 0x9187, 0x931E, 0x9806, 0x99B4, 0x620C, 0x8853, 0x8FF0, + 0x9265, 0x5D07, 0x5D27, 0x5D69, 0x745F, 0x819D, 0x8768, 0x6FD5, 0x62FE, + 0x7FD2, 0x8936, 0x8972, 0x4E1E, 0x4E58, 0x50E7, 0x52DD, 0x5347, 0x627F, + 0x6607, 0x7E69, 0x8805, 0x965E, 0x4F8D, 0x5319, 0x5636, 0x59CB, 0x5AA4, + 0x5C38, 0x5C4E, 0x5C4D, 0x5E02, 0x5F11, 0x6043, 0x65BD, 0x662F, 0x6642, + 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A, 0x7FC5, 0x8494, 0x84CD, 0x8996, + 0x8A66, 0x8A69, 0x8AE1, 0x8C55, 0x8C7A, 0x57F4, 0x5BD4, 0x5F0F, 0x606F, + 0x62ED, 0x690D, 0x6B96, 0x6E5C, 0x7184, 0x7BD2, 0x8755, 0x8B58, 0x8EFE, + 0x98DF, 0x98FE, 0x4F38, 0x4F81, 0x4FE1, 0x547B, 0x5A20, 0x5BB8, 0x613C, + 0x65B0, 0x6668, 0x71FC, 0x7533, 0x795E, 0x7D33, 0x814E, 0x81E3, 0x8398, + 0x85AA, 0x85CE, 0x8703, 0x8A0A, 0x8EAB, 0x8F9B, 0x8FC5, 0x5931, 0x5BA4, + 0x5BE6, 0x6089, 0x5BE9, 0x5C0B, 0x5FC3, 0x6C81, 0x6DF1, 0x700B, 0x751A, + 0x82AF, 0x8AF6, 0x4EC0, 0x5341, 0x96D9, 0x6C0F, 0x4E9E, 0x4FC4, 0x5152, + 0x555E, 0x5A25, 0x5CE8, 0x6211, 0x7259, 0x82BD, 0x83AA, 0x86FE, 0x8859, + 0x8A1D, 0x963F, 0x96C5, 0x9913, 0x9D09, 0x9D5D, 0x580A, 0x5CB3, 0x5DBD, + 0x5E44, 0x60E1, 0x6115, 0x63E1, 0x6A02, 0x6E25, 0x9102, 0x9354, 0x984E, + 0x9C10, 0x9F77, 0x5B89, 0x5CB8, 0x6309, 0x664F, 0x6848, 0x773C, 0x96C1, + 0x978D, 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB, 0x95BC, 0x5535, 0x5CA9, + 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, 0x95C7, 0x58D3, 0x62BC, 0x72CE, + 0x9D28, 0x4EF0, 0x592E, 0x600F, 0x663B, 0x6B83, 0x79E7, 0x9D26, 0x5393, + 0x54C0, 0x57C3, 0x5D16, 0x611B, 0x66D6, 0x6DAF, 0x788D, 0x827E, 0x9698, + 0x9744, 0x5384, 0x627C, 0x6396, 0x6DB2, 0x7E0A, 0x814B, 0x984D, 0x6AFB, + 0x7F4C, 0x9DAF, 0x9E1A, 0x4E5F, 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6, + 0x6930, 0x723A, 0x8036, 0x91CE, 0x5F31, 0x7D04, 0x82E5, 0x846F, 0x84BB, + 0x85E5, 0x8E8D, 0x4F6F, 0x58E4, 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D, + 0x6698, 0x694A, 0x6A23, 0x6D0B, 0x7001, 0x716C, 0x75D2, 0x760D, 0x79B3, + 0x7A70, 0x7F8A, 0x8944, 0x8B93, 0x91C0, 0x967D, 0x990A, 0x5704, 0x5FA1, + 0x65BC, 0x6F01, 0x7600, 0x79A6, 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C, 0x5104, + 0x61B6, 0x6291, 0x6A8D, 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109, 0x8A00, + 0x8AFA, 0x5B7C, 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, 0x63A9, 0x6DF9, + 0x5DAA, 0x696D, 0x5186, 0x4E88, 0x4F59, 0x5982, 0x6B5F, 0x6C5D, 0x74B5, + 0x7916, 0x8207, 0x8245, 0x8339, 0x8F3F, 0x8F5D, 0x9918, 0x4EA6, 0x57DF, + 0x5F79, 0x6613, 0x75AB, 0x7E79, 0x8B6F, 0x9006, 0x9A5B, 0x56A5, 0x5827, + 0x59F8, 0x5A1F, 0x5BB4, 0x5EF6, 0x6350, 0x633B, 0x693D, 0x6C87, 0x6CBF, + 0x6D8E, 0x6D93, 0x6DF5, 0x6F14, 0x70DF, 0x7136, 0x7159, 0x71C3, 0x71D5, + 0x784F, 0x786F, 0x7B75, 0x7DE3, 0x7E2F, 0x884D, 0x8EDF, 0x925B, 0x9CF6, + 0x6085, 0x6D85, 0x71B1, 0x95B1, 0x53AD, 0x67D3, 0x708E, 0x7130, 0x7430, + 0x8276, 0x82D2, 0x95BB, 0x9AE5, 0x9E7D, 0x66C4, 0x71C1, 0x8449, 0x584B, + 0x5DB8, 0x5F71, 0x6620, 0x668E, 0x6979, 0x69AE, 0x6C38, 0x6CF3, 0x6E36, + 0x6F41, 0x6FDA, 0x701B, 0x702F, 0x7150, 0x71DF, 0x7370, 0x745B, 0x74D4, + 0x76C8, 0x7A4E, 0x7E93, 0x82F1, 0x8A60, 0x8FCE, 0x9348, 0x9719, 0x4E42, + 0x502A, 0x5208, 0x53E1, 0x66F3, 0x6C6D, 0x6FCA, 0x730A, 0x777F, 0x7A62, + 0x82AE, 0x85DD, 0x8602, 0x88D4, 0x8A63, 0x8B7D, 0x8C6B, 0x92B3, 0x9713, + 0x9810, 0x4E94, 0x4F0D, 0x4FC9, 0x50B2, 0x5348, 0x543E, 0x5433, 0x55DA, + 0x5862, 0x58BA, 0x5967, 0x5A1B, 0x5BE4, 0x609F, 0x61CA, 0x6556, 0x65FF, + 0x6664, 0x68A7, 0x6C5A, 0x6FB3, 0x70CF, 0x71AC, 0x7352, 0x7B7D, 0x8708, + 0x8AA4, 0x9C32, 0x9F07, 0x5C4B, 0x6C83, 0x7344, 0x7389, 0x923A, 0x6EAB, + 0x7465, 0x761F, 0x7A69, 0x7E15, 0x860A, 0x5140, 0x58C5, 0x64C1, 0x74EE, + 0x7515, 0x7670, 0x7FC1, 0x9095, 0x96CD, 0x9954, 0x6E26, 0x74E6, 0x7AA9, + 0x7AAA, 0x81E5, 0x86D9, 0x8778, 0x8A1B, 0x5A49, 0x5B8C, 0x5B9B, 0x68A1, + 0x6900, 0x6D63, 0x73A9, 0x7413, 0x742C, 0x7897, 0x7DE9, 0x7FEB, 0x8118, + 0x8155, 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0, 0x5F80, 0x65FA, 0x6789, + 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, 0x77EE, 0x5916, 0x5D6C, 0x5DCD, + 0x7325, 0x754F, 0x50E5, 0x51F9, 0x582F, 0x592D, 0x5996, 0x59DA, 0x5BE5, + 0x5DA2, 0x62D7, 0x6416, 0x6493, 0x64FE, 0x66DC, 0x6A48, 0x71FF, 0x7464, + 0x7A88, 0x7AAF, 0x7E47, 0x7E5E, 0x8000, 0x8170, 0x87EF, 0x8981, 0x8B20, + 0x9059, 0x9080, 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, 0x8925, 0x8FB1, + 0x4FD1, 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, 0x5BB9, 0x5EB8, 0x6142, + 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, 0x7462, 0x7528, 0x752C, 0x8073, + 0x8338, 0x84C9, 0x8E0A, 0x9394, 0x93DE, 0x4E8E, 0x4F51, 0x5076, 0x512A, + 0x53C8, 0x53CB, 0x53F3, 0x5B87, 0x5BD3, 0x5C24, 0x611A, 0x6182, 0x65F4, + 0x725B, 0x7397, 0x7440, 0x76C2, 0x7950, 0x7991, 0x79B9, 0x7D06, 0x7FBD, + 0x828B, 0x85D5, 0x865E, 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685, 0x96E8, + 0x96E9, 0x52D6, 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, 0x7A36, 0x90C1, + 0x980A, 0x4E91, 0x6A52, 0x6B9E, 0x6F90, 0x7189, 0x8018, 0x82B8, 0x8553, + 0x904B, 0x9695, 0x96F2, 0x97FB, 0x851A, 0x9B31, 0x4E90, 0x718A, 0x96C4, + 0x5143, 0x539F, 0x54E1, 0x5713, 0x5712, 0x57A3, 0x5A9B, 0x5AC4, 0x5BC3, + 0x6028, 0x613F, 0x63F4, 0x6C85, 0x6D39, 0x6E72, 0x6E90, 0x7230, 0x733F, + 0x7457, 0x82D1, 0x8881, 0x8F45, 0x9060, 0x9662, 0x9858, 0x9D1B, 0x6708, + 0x8D8A, 0x925E, 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, 0x59D4, 0x5A01, + 0x5C09, 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, 0x7DEF, 0x80C3, 0x840E, + 0x8466, 0x853F, 0x875F, 0x885B, 0x8918, 0x8B02, 0x9055, 0x97CB, 0x9B4F, + 0x4E73, 0x4F91, 0x5112, 0x516A, 0x552F, 0x55A9, 0x5B7A, 0x5BA5, 0x5E7C, + 0x5E7D, 0x5EBE, 0x60A0, 0x60DF, 0x6108, 0x6109, 0x63C4, 0x6538, 0x6709, + 0x67D4, 0x67DA, 0x6961, 0x6962, 0x6CB9, 0x6D27, 0x6E38, 0x6FE1, 0x7336, + 0x7337, 0x745C, 0x7531, 0x7652, 0x7DAD, 0x81FE, 0x8438, 0x88D5, 0x8A98, + 0x8ADB, 0x8AED, 0x8E30, 0x8E42, 0x904A, 0x903E, 0x907A, 0x9149, 0x91C9, + 0x936E, 0x5809, 0x6BD3, 0x8089, 0x80B2, 0x5141, 0x596B, 0x5C39, 0x6F64, + 0x73A7, 0x80E4, 0x8D07, 0x9217, 0x958F, 0x807F, 0x620E, 0x701C, 0x7D68, + 0x878D, 0x57A0, 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, 0x96B1, 0x4E59, + 0x541F, 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, 0x63D6, 0x6CE3, 0x9091, + 0x51DD, 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, 0x501A, 0x5100, 0x5B9C, 0x610F, + 0x61FF, 0x64EC, 0x6905, 0x6BC5, 0x7591, 0x77E3, 0x7FA9, 0x8264, 0x858F, + 0x87FB, 0x8863, 0x8ABC, 0x8B70, 0x91AB, 0x4E8C, 0x4EE5, 0x4F0A, 0x5937, + 0x59E8, 0x5DF2, 0x5F1B, 0x5F5B, 0x6021, 0x723E, 0x73E5, 0x7570, 0x75CD, + 0x79FB, 0x800C, 0x8033, 0x8084, 0x82E1, 0x8351, 0x8CBD, 0x8CB3, 0x9087, + 0x98F4, 0x990C, 0x7037, 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC, 0x8B1A, 0x4EBA, + 0x4EC1, 0x5203, 0x5370, 0x54BD, 0x56E0, 0x59FB, 0x5BC5, 0x5F15, 0x5FCD, + 0x6E6E, 0x7D6A, 0x8335, 0x8693, 0x8A8D, 0x976D, 0x9777, 0x4E00, 0x4F5A, + 0x4F7E, 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, 0x99B9, 0x4EFB, 0x58EC, + 0x598A, 0x59D9, 0x6041, 0x7A14, 0x834F, 0x8CC3, 0x5165, 0x5344, 0x4ECD, + 0x5269, 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, 0x59C9, 0x59FF, 0x5B50, + 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, 0x7099, 0x716E, 0x7386, 0x74F7, + 0x75B5, 0x78C1, 0x7D2B, 0x8005, 0x81EA, 0x8328, 0x8517, 0x85C9, 0x8AEE, + 0x8CC7, 0x96CC, 0x4F5C, 0x52FA, 0x56BC, 0x65AB, 0x6628, 0x707C, 0x70B8, + 0x7235, 0x7DBD, 0x828D, 0x914C, 0x96C0, 0x9D72, 0x5B71, 0x68E7, 0x6B98, + 0x6F7A, 0x76DE, 0x5C91, 0x66AB, 0x6F5B, 0x7BB4, 0x7C2A, 0x8836, 0x96DC, + 0x4E08, 0x4ED7, 0x5320, 0x5834, 0x58BB, 0x58EF, 0x596C, 0x5C07, 0x5E33, + 0x5E84, 0x5F35, 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3, 0x6B0C, 0x6F3F, + 0x7246, 0x7350, 0x748B, 0x7AE0, 0x7CA7, 0x8178, 0x81DF, 0x81E7, 0x838A, + 0x846C, 0x8523, 0x8594, 0x85CF, 0x88DD, 0x8D13, 0x91AC, 0x9577, 0x969C, + 0x518D, 0x54C9, 0x5728, 0x5BB0, 0x624D, 0x6750, 0x683D, 0x6893, 0x6E3D, + 0x6ED3, 0x707D, 0x7E21, 0x88C1, 0x8CA1, 0x8F09, 0x9F4B, 0x9F4E, 0x722D, + 0x7B8F, 0x8ACD, 0x931A, 0x4F47, 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95, + 0x62B5, 0x6775, 0x696E, 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, 0x75BD, + 0x7BB8, 0x7D35, 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, 0x8CAF, 0x8E87, + 0x9019, 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, 0x5AE1, 0x5BC2, 0x6458, + 0x6575, 0x6EF4, 0x72C4, 0x7684, 0x7A4D, 0x7B1B, 0x7C4D, 0x7E3E, 0x7FDF, + 0x837B, 0x8B2B, 0x8CCA, 0x8D64, 0x8DE1, 0x8E5F, 0x8FEA, 0x8FF9, 0x9069, + 0x93D1, 0x4F43, 0x4F7A, 0x50B3, 0x5168, 0x5178, 0x524D, 0x526A, 0x5861, + 0x587C, 0x5960, 0x5C08, 0x5C55, 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF, + 0x6C08, 0x6FB1, 0x714E, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7B4C, + 0x7B8B, 0x7BAD, 0x7BC6, 0x7E8F, 0x8A6E, 0x8F3E, 0x8F49, 0x923F, 0x9293, + 0x9322, 0x942B, 0x96FB, 0x985A, 0x986B, 0x991E, 0x5207, 0x622A, 0x6298, + 0x6D59, 0x7664, 0x7ACA, 0x7BC0, 0x7D76, 0x5360, 0x5CBE, 0x5E97, 0x6F38, + 0x70B9, 0x7C98, 0x9711, 0x9B8E, 0x9EDE, 0x63A5, 0x647A, 0x8776, 0x4E01, + 0x4E95, 0x4EAD, 0x505C, 0x5075, 0x5448, 0x59C3, 0x5B9A, 0x5E40, 0x5EAD, + 0x5EF7, 0x5F81, 0x60C5, 0x633A, 0x653F, 0x6574, 0x65CC, 0x6676, 0x6678, + 0x67FE, 0x6968, 0x6A89, 0x6B63, 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E, + 0x701E, 0x70A1, 0x738E, 0x73FD, 0x753A, 0x775B, 0x7887, 0x798E, 0x7A0B, + 0x7A7D, 0x7CBE, 0x7D8E, 0x8247, 0x8A02, 0x8AEA, 0x8C9E, 0x912D, 0x914A, + 0x91D8, 0x9266, 0x92CC, 0x9320, 0x9706, 0x9756, 0x975C, 0x9802, 0x9F0E, + 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, 0x5F1F, 0x608C, 0x63D0, 0x68AF, + 0x6FDF, 0x796D, 0x7B2C, 0x81CD, 0x85BA, 0x88FD, 0x8AF8, 0x8E44, 0x918D, + 0x9664, 0x969B, 0x973D, 0x984C, 0x9F4A, 0x4FCE, 0x5146, 0x51CB, 0x52A9, + 0x5632, 0x5F14, 0x5F6B, 0x63AA, 0x64CD, 0x65E9, 0x6641, 0x66FA, 0x66F9, + 0x671D, 0x689D, 0x68D7, 0x69FD, 0x6F15, 0x6F6E, 0x7167, 0x71E5, 0x722A, + 0x74AA, 0x773A, 0x7956, 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97, 0x7CDF, + 0x7D44, 0x7E70, 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, 0x8D99, 0x8E81, + 0x9020, 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, 0x65CF, 0x7C07, 0x8DB3, + 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, 0x731D, 0x5027, 0x5B97, 0x5F9E, + 0x60B0, 0x616B, 0x68D5, 0x6DD9, 0x742E, 0x7A2E, 0x7D42, 0x7D9C, 0x7E31, + 0x816B, 0x8E2A, 0x8E35, 0x937E, 0x9418, 0x4F50, 0x5750, 0x5DE6, 0x5EA7, + 0x632B, 0x7F6A, 0x4E3B, 0x4F4F, 0x4F8F, 0x505A, 0x59DD, 0x80C4, 0x546A, + 0x5468, 0x55FE, 0x594F, 0x5B99, 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1, + 0x682A, 0x6CE8, 0x6D32, 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, 0x7C4C, + 0x7D02, 0x7D2C, 0x7DA2, 0x821F, 0x86DB, 0x8A3B, 0x8A85, 0x8D70, 0x8E8A, + 0x8F33, 0x9031, 0x914E, 0x9152, 0x9444, 0x99D0, 0x7AF9, 0x7CA5, 0x4FCA, + 0x5101, 0x51C6, 0x57C8, 0x5BEF, 0x5CFB, 0x6659, 0x6A3D, 0x6D5A, 0x6E96, + 0x6FEC, 0x710C, 0x756F, 0x7AE3, 0x8822, 0x9021, 0x9075, 0x96CB, 0x99FF, + 0x8301, 0x4E2D, 0x4EF2, 0x8846, 0x91CD, 0x537D, 0x6ADB, 0x696B, 0x6C41, + 0x847A, 0x589E, 0x618E, 0x66FE, 0x62EF, 0x70DD, 0x7511, 0x75C7, 0x7E52, + 0x84B8, 0x8B49, 0x8D08, 0x4E4B, 0x53EA, 0x54AB, 0x5730, 0x5740, 0x5FD7, + 0x6301, 0x6307, 0x646F, 0x652F, 0x65E8, 0x667A, 0x679D, 0x67B3, 0x6B62, + 0x6C60, 0x6C9A, 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957, 0x7D19, 0x80A2, + 0x8102, 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, 0x8D04, 0x8DBE, 0x9072, + 0x76F4, 0x7A19, 0x7A37, 0x7E54, 0x8077, 0x5507, 0x55D4, 0x5875, 0x632F, + 0x6422, 0x6649, 0x664B, 0x686D, 0x699B, 0x6B84, 0x6D25, 0x6EB1, 0x73CD, + 0x7468, 0x74A1, 0x755B, 0x75B9, 0x76E1, 0x771E, 0x778B, 0x79E6, 0x7E09, + 0x7E1D, 0x81FB, 0x852F, 0x8897, 0x8A3A, 0x8CD1, 0x8EEB, 0x8FB0, 0x9032, + 0x93AD, 0x9663, 0x9673, 0x9707, 0x4F84, 0x53F1, 0x59EA, 0x5AC9, 0x5E19, + 0x684E, 0x74C6, 0x75BE, 0x79E9, 0x7A92, 0x81A3, 0x86ED, 0x8CEA, 0x8DCC, + 0x8FED, 0x659F, 0x6715, 0x57F7, 0x6F57, 0x7DDD, 0x8F2F, 0x93F6, 0x96C6, + 0x5FB5, 0x61F2, 0x6F84, 0x4E14, 0x4F98, 0x501F, 0x53C9, 0x55DF, 0x5D6F, + 0x5DEE, 0x6B21, 0x6B64, 0x78CB, 0x7B9A, 0x8E49, 0x8ECA, 0x906E, 0x6349, + 0x643E, 0x7740, 0x7A84, 0x932F, 0x947F, 0x9F6A, 0x64B0, 0x6FAF, 0x71E6, + 0x74A8, 0x74DA, 0x7AC4, 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A, 0x8D0A, + 0x947D, 0x9910, 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, 0x7D2E, 0x50ED, + 0x53C3, 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, 0x7AD9, 0x8B92, 0x8B96, + 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, 0x5EE0, 0x5F70, 0x6134, 0x655E, + 0x660C, 0x6636, 0x66A2, 0x69CD, 0x6EC4, 0x6F32, 0x7316, 0x7621, 0x7A93, + 0x8139, 0x8259, 0x83D6, 0x84BC, 0x50B5, 0x57F0, 0x5BC0, 0x5BE8, 0x5F69, + 0x63A1, 0x7826, 0x7DB5, 0x83DC, 0x8521, 0x91C7, 0x91F5, 0x518A, 0x67F5, + 0x7B56, 0x8CAC, 0x51C4, 0x59BB, 0x60BD, 0x8655, 0x501C, 0x5254, 0x5C3A, + 0x617D, 0x621A, 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, 0x810A, 0x8E60, + 0x965F, 0x96BB, 0x4EDF, 0x5343, 0x5598, 0x5929, 0x5DDD, 0x64C5, 0x6CC9, + 0x6DFA, 0x7394, 0x7A7F, 0x821B, 0x85A6, 0x8CE4, 0x8E10, 0x9077, 0x91E7, + 0x95E1, 0x9621, 0x97C6, 0x51F8, 0x54F2, 0x5586, 0x5FB9, 0x64A4, 0x6F88, + 0x7DB4, 0x8F1F, 0x8F4D, 0x9435, 0x50C9, 0x5C16, 0x6CBE, 0x6DFB, 0x751B, + 0x77BB, 0x7C3D, 0x7C64, 0x8A79, 0x8AC2, 0x581E, 0x59BE, 0x5E16, 0x6377, + 0x7252, 0x758A, 0x776B, 0x8ADC, 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8, + 0x807D, 0x83C1, 0x8ACB, 0x9751, 0x9BD6, 0x5243, 0x66FF, 0x6D95, 0x6EEF, + 0x7DE0, 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, 0x527F, 0x54E8, 0x6194, + 0x6284, 0x62DB, 0x68A2, 0x6912, 0x695A, 0x6A35, 0x7092, 0x7126, 0x785D, + 0x7901, 0x790E, 0x79D2, 0x7A0D, 0x8096, 0x8278, 0x82D5, 0x8349, 0x8549, + 0x8C82, 0x8D85, 0x9162, 0x918B, 0x91AE, 0x4FC3, 0x56D1, 0x71ED, 0x77D7, + 0x8700, 0x89F8, 0x5BF8, 0x5FD6, 0x6751, 0x90A8, 0x53E2, 0x585A, 0x5BF5, + 0x60A4, 0x6181, 0x6460, 0x7E3D, 0x8070, 0x8525, 0x9283, 0x64AE, 0x50AC, + 0x5D14, 0x6700, 0x589C, 0x62BD, 0x63A8, 0x690E, 0x6978, 0x6A1E, 0x6E6B, + 0x76BA, 0x79CB, 0x82BB, 0x8429, 0x8ACF, 0x8DA8, 0x8FFD, 0x9112, 0x914B, + 0x919C, 0x9310, 0x9318, 0x939A, 0x96DB, 0x9A36, 0x9C0D, 0x4E11, 0x755C, + 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E, 0x84C4, 0x8E59, 0x8E74, 0x8EF8, + 0x9010, 0x6625, 0x693F, 0x7443, 0x51FA, 0x672E, 0x9EDC, 0x5145, 0x5FE0, + 0x6C96, 0x87F2, 0x885D, 0x8877, 0x60B4, 0x81B5, 0x8403, 0x8D05, 0x53D6, + 0x5439, 0x5634, 0x5A36, 0x5C31, 0x708A, 0x7FE0, 0x805A, 0x8106, 0x81ED, + 0x8DA3, 0x9189, 0x9A5F, 0x9DF2, 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C, + 0x5C64, 0x4F88, 0x5024, 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, 0x6CBB, + 0x6DC4, 0x71BE, 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, 0x7DC7, 0x7DFB, + 0x7F6E, 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, 0x9F52, 0x5247, 0x52C5, + 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, 0x4FB5, 0x5BE2, 0x6795, 0x6C88, + 0x6D78, 0x741B, 0x7827, 0x91DD, 0x937C, 0x87C4, 0x79E4, 0x7A31, 0x5FEB, + 0x4ED6, 0x54A4, 0x553E, 0x58AE, 0x59A5, 0x60F0, 0x6253, 0x62D6, 0x6736, + 0x6955, 0x8235, 0x9640, 0x99B1, 0x99DD, 0x502C, 0x5353, 0x5544, 0x577C, + 0x6258, 0x64E2, 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422, 0x7438, 0x8A17, + 0x9438, 0x5451, 0x5606, 0x5766, 0x5F48, 0x619A, 0x6B4E, 0x7058, 0x70AD, + 0x7DBB, 0x8A95, 0x596A, 0x812B, 0x63A2, 0x7708, 0x803D, 0x8CAA, 0x5854, + 0x642D, 0x69BB, 0x5B95, 0x5E11, 0x6E6F, 0x8569, 0x514C, 0x53F0, 0x592A, + 0x6020, 0x614B, 0x6B86, 0x6C70, 0x6CF0, 0x7B1E, 0x80CE, 0x82D4, 0x8DC6, + 0x90B0, 0x98B1, 0x64C7, 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, 0x571F, + 0x8A0E, 0x615F, 0x6876, 0x75DB, 0x7B52, 0x7D71, 0x901A, 0x5806, 0x69CC, + 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, 0x5957, 0x59AC, 0x6295, 0x900F, + 0x9B2A, 0x615D, 0x7279, 0x95D6, 0x5761, 0x5A46, 0x5DF4, 0x628A, 0x64AD, + 0x64FA, 0x6777, 0x6CE2, 0x6D3E, 0x722C, 0x7436, 0x7834, 0x7F77, 0x82AD, + 0x8DDB, 0x9817, 0x5224, 0x5742, 0x677F, 0x7248, 0x74E3, 0x8CA9, 0x8FA6, + 0x9211, 0x962A, 0x516B, 0x53ED, 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557, + 0x6C9B, 0x6D7F, 0x724C, 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, 0x6F8E, + 0x70F9, 0x81A8, 0x610E, 0x4FBF, 0x504F, 0x6241, 0x7247, 0x7BC7, 0x7DE8, + 0x7FE9, 0x904D, 0x97AD, 0x9A19, 0x8CB6, 0x576A, 0x5E73, 0x67B0, 0x840D, + 0x8A55, 0x5420, 0x5B16, 0x5E63, 0x5EE2, 0x5F0A, 0x6583, 0x80BA, 0x853D, + 0x9589, 0x965B, 0x4F48, 0x5305, 0x530D, 0x530F, 0x5486, 0x54FA, 0x5703, + 0x5E03, 0x6016, 0x629B, 0x62B1, 0x6355, 0x6CE1, 0x6D66, 0x75B1, 0x7832, + 0x80DE, 0x812F, 0x82DE, 0x8461, 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA, + 0x98FD, 0x9B91, 0x5E45, 0x66B4, 0x66DD, 0x7011, 0x7206, 0x4FF5, 0x527D, + 0x5F6A, 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8C79, + 0x98C7, 0x98C4, 0x9A43, 0x54C1, 0x7A1F, 0x6953, 0x8AF7, 0x8C4A, 0x98A8, + 0x99AE, 0x5F7C, 0x62AB, 0x75B2, 0x76AE, 0x88AB, 0x907F, 0x9642, 0x5339, + 0x5F3C, 0x5FC5, 0x6CCC, 0x73CC, 0x7562, 0x758B, 0x7B46, 0x82FE, 0x999D, + 0x4E4F, 0x903C, 0x4E0B, 0x4F55, 0x53A6, 0x590F, 0x5EC8, 0x6630, 0x6CB3, + 0x7455, 0x8377, 0x8766, 0x8CC0, 0x9050, 0x971E, 0x9C15, 0x58D1, 0x5B78, + 0x8650, 0x8B14, 0x9DB4, 0x5BD2, 0x6068, 0x608D, 0x65F1, 0x6C57, 0x6F22, + 0x6FA3, 0x701A, 0x7F55, 0x7FF0, 0x9591, 0x9592, 0x9650, 0x97D3, 0x5272, + 0x8F44, 0x51FD, 0x542B, 0x54B8, 0x5563, 0x558A, 0x6ABB, 0x6DB5, 0x7DD8, + 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408, 0x54C8, 0x76D2, 0x86E4, 0x95A4, + 0x95D4, 0x965C, 0x4EA2, 0x4F09, 0x59EE, 0x5AE6, 0x5DF7, 0x6052, 0x6297, + 0x676D, 0x6841, 0x6C86, 0x6E2F, 0x7F38, 0x809B, 0x822A, 0x9805, 0x4EA5, + 0x5055, 0x54B3, 0x5793, 0x595A, 0x5B69, 0x5BB3, 0x61C8, 0x6977, 0x6D77, + 0x7023, 0x87F9, 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED, 0x9AB8, 0x52BE, + 0x6838, 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, 0x4EAB, 0x5411, 0x56AE, + 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, 0x9999, 0x5653, 0x589F, 0x865B, + 0x8A31, 0x61B2, 0x6AF6, 0x737B, 0x8ED2, 0x6B47, 0x96AA, 0x9A57, 0x5955, + 0x7200, 0x8D6B, 0x9769, 0x4FD4, 0x5CF4, 0x5F26, 0x61F8, 0x665B, 0x6CEB, + 0x70AB, 0x7384, 0x73B9, 0x73FE, 0x7729, 0x774D, 0x7D43, 0x7D62, 0x7E23, + 0x8237, 0x8852, 0x8CE2, 0x9249, 0x986F, 0x5B51, 0x7A74, 0x8840, 0x9801, + 0x5ACC, 0x4FE0, 0x5354, 0x593E, 0x5CFD, 0x633E, 0x6D79, 0x72F9, 0x8105, + 0x8107, 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144, 0x5211, 0x578B, 0x5F62, + 0x6CC2, 0x6ECE, 0x7005, 0x7050, 0x70AF, 0x7192, 0x73E9, 0x7469, 0x834A, + 0x87A2, 0x8861, 0x9008, 0x90A2, 0x93A3, 0x99A8, 0x516E, 0x5F57, 0x60E0, + 0x6167, 0x66B3, 0x8559, 0x8E4A, 0x91AF, 0x978B, 0x4E4E, 0x4E92, 0x547C, + 0x58D5, 0x58FA, 0x597D, 0x5CB5, 0x5F27, 0x6236, 0x6248, 0x660A, 0x6667, + 0x6BEB, 0x6D69, 0x6DCF, 0x6E56, 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D, + 0x72D0, 0x7425, 0x745A, 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, 0x80E1, + 0x82A6, 0x846B, 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, 0x8C6A, 0x93AC, + 0x9800, 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, 0x660F, 0x6DF7, 0x6E3E, + 0x743F, 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, 0x54C4, 0x5F18, 0x6C5E, 0x6CD3, + 0x6D2A, 0x70D8, 0x7D05, 0x8679, 0x8A0C, 0x9D3B, 0x5316, 0x548C, 0x5B05, + 0x6A3A, 0x706B, 0x7575, 0x798D, 0x79BE, 0x82B1, 0x83EF, 0x8A71, 0x8B41, + 0x8CA8, 0x9774, 0x64F4, 0x652B, 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A, + 0x5950, 0x5BA6, 0x5E7B, 0x60A3, 0x63DB, 0x6B61, 0x6665, 0x6853, 0x6E19, + 0x7165, 0x74B0, 0x7D08, 0x9084, 0x9A69, 0x9C25, 0x6D3B, 0x6ED1, 0x733E, + 0x8C41, 0x95CA, 0x51F0, 0x5E4C, 0x5FA8, 0x604D, 0x60F6, 0x6130, 0x614C, + 0x6643, 0x6644, 0x69A5, 0x6CC1, 0x6E5F, 0x6EC9, 0x6F62, 0x714C, 0x749C, + 0x7687, 0x7BC1, 0x7C27, 0x8352, 0x8757, 0x9051, 0x968D, 0x9EC3, 0x532F, + 0x56DE, 0x5EFB, 0x5F8A, 0x6062, 0x6094, 0x61F7, 0x6666, 0x6703, 0x6A9C, + 0x6DEE, 0x6FAE, 0x7070, 0x736A, 0x7E6A, 0x81BE, 0x8334, 0x86D4, 0x8AA8, + 0x8CC4, 0x5283, 0x7372, 0x5B96, 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D, + 0x6548, 0x6585, 0x66C9, 0x689F, 0x6D8D, 0x6DC6, 0x723B, 0x80B4, 0x9175, + 0x9A4D, 0x4FAF, 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, 0x55C5, 0x5E3F, + 0x5F8C, 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, 0x52F3, 0x5864, 0x58CE, + 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, 0x6688, 0x85A8, 0x55A7, 0x6684, + 0x714A, 0x8431, 0x5349, 0x5599, 0x6BC1, 0x5F59, 0x5FBD, 0x63EE, 0x6689, + 0x7147, 0x8AF1, 0x8F1D, 0x9EBE, 0x4F11, 0x643A, 0x70CB, 0x7566, 0x8667, + 0x6064, 0x8B4E, 0x9DF8, 0x5147, 0x51F6, 0x5308, 0x6D36, 0x80F8, 0x9ED1, + 0x6615, 0x6B23, 0x7098, 0x75D5, 0x5403, 0x5C79, 0x7D07, 0x8A16, 0x6B20, + 0x6B3D, 0x6B46, 0x5438, 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6, 0x51DE, + 0x559C, 0x566B, 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, 0x6198, 0x6231, + 0x665E, 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, 0x79A7, 0x7A00, 0x7FB2, + 0x8A70, 0x3001, 0x3002, 0x2025, 0x00AD, 0x2015, 0x2225, 0xFF5E, 0x3014, + 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, + 0x3010, 0x3011, 0x3013, 0xFF01, 0xFF08, 0xFF09, 0xFF0C, 0xFF0E, 0xFF1A, + 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF3B, 0xFF3D, 0xFF3F, 0xFF5B, + 0xFF5C, 0xFF5D, 0xFF5E, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, + 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, + 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, + 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, + 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, + 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, + 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, + 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, + 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007E, + 0x005C, 0x231C, 0x231F, 0x0000, 0x0000, 0x0000, 0x0000, 0x300E, 0x300F, + 0x300A, 0x300B, 0x3008, 0x3009, 0x0028, 0x0029, 0x0000, 0x0000, 0x0028, + 0x0029, 0x0028, 0x0029, 0x0000, 0x0000, 0x0028, 0x0029, 0x0000, 0x0000, + 0x3016, 0x3017, 0x3016, 0x3017, 0x3018, 0x3019, 0x005B, 0x005D, 0x0000, + 0x0000, 0x263E, 0x263D, 0x2021, 0x2021, 0x2020, 0x2021, 0x0000, 0x2217, + 0x0000, 0x0000, 0x201F, 0x201B, 0x02D6, 0x02D7, 0x00D7, 0x221E, 0x0000, + 0x00B1, 0x2213, 0x003E, 0x003C, 0x003D, 0x2260, 0x207D, 0x207E, 0x007B, + 0x007D, 0x0000, 0x0000, 0x2229, 0x222A, 0x2282, 0x2208, 0x03A3, 0x0021, + 0x0000, 0x3021, 0x3022, 0x3023, 0x0000, 0x0000, 0x0000, 0x4E03, 0x0000, + 0x0000, 0x5341, 0x0000, 0x0000, 0x0027, 0x3014, 0x3015, 0x002A, 0x0000, + 0x2217, 0x002A, 0xCDCD, 0x3001, 0x3002, 0x0028, 0x0029, 0x0028, 0x0029, + 0x0028, 0x0029, 0x3016, 0x3017, 0x3010, 0x3011, 0x0000, 0x0000, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, + 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, + 0x005D, 0x00B6, 0x0000, 0x0000, 0x22EF, 0x2237, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, + 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x278A, + 0x278B, 0x278C, 0x278D, 0x278E, 0x278F, 0x2790, 0x2791, 0x2792, 0x2793, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x24B6, 0x24B7, 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, + 0x24BF, 0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7, + 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, + 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, + 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, + 0x005D, 0x005D, 0x005D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x22CF, 0x22CE, 0x22CF, + 0x22CE, 0x2280, 0x2281, 0x2270, 0x2271, 0x2272, 0x2273, 0x0000, 0x228A, + 0x0000, 0x228B, 0x2276, 0x2277, 0x2279, 0x22DA, 0x22DB, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2221, 0x2245, 0x2243, 0x2248, 0x0000, 0x22A4, 0x22AB, + 0x0000, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, + 0x2466, 0x2467, 0x2468, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0021, 0x00B0, 0x0027, 0x0022, 0x2034, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0000, 0x0000, 0x2020, 0x2020, 0x2021, 0x2020, 0x00A7, 0x0023, + 0x002A, 0x002A, 0x0000, 0x0000, 0x2042, 0x002A, 0x0000, 0x0000, 0x2042, + 0x002A, 0x0000, 0x0000, 0x2022, 0x20DF, 0x20DF, 0x0000, 0x20DF, 0x3008, + 0x3009, 0x300A, 0x300B, 0x261C, 0x261E, 0x0000, 0x0000, 0x20DE, 0x0000, + 0x20DE, 0x20DE, 0x0000, 0x0000, 0x0000, 0x0000, 0x20DD, 0x20DD, 0x271A, + 0x2716, 0x0000, 0x25EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25CC, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x20A9, 0x0000, 0x0000, 0x262F, 0x0000, 0x262F, + 0x262F, 0x0000, 0x0000, 0x0000, 0x3020, 0x0000, 0x2776, 0x2777, 0x2778, + 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x277F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x2642, 0x22A9, 0x3036, 0x25CB, + 0x25D3, 0x25A1, 0x2302, 0x0000, 0x25AD, 0x25AD, 0x0000, 0x0000, 0x0000, + 0x25C7, 0x0000, 0x0000, 0x2206, 0x22BF, 0x231E, 0x0000, 0x2225, 0x2226, + 0x0000, 0x2253, 0x2251, 0x2266, 0x2267, 0x2213, 0x2295, 0x2296, 0x2297, + 0x20DD, 0x2314, 0x0000, 0x0000, 0x2262, 0x0000, 0x25B1, 0x0000, 0x2222, + 0x2250, 0x00D8, 0x234A, 0x22A3, 0x0338, 0x0000, 0x226E, 0x226F, 0x2285, + 0x2284, 0x2209, 0x220C, 0x22BB, 0x0016, 0x225A, 0x2306, 0x0024, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x329E, 0x0000, 0x203C, 0x003F, 0x0000, + 0x003F, 0x22C4, 0x25C7, 0x22C4, 0x25C6, 0x25AB, 0x25A1, 0x25AB, 0x25A0, + 0x25E6, 0x25CB, 0x25E6, 0x25CF, 0x25BD, 0x25B3, 0x25B7, 0x25C1, 0x2726, + 0x25CF, 0x25A0, 0x0000, 0x25CA, 0x3231, 0x3239, 0x33CB, 0x2483, 0x2494, + 0x2495, 0x2496, 0x2497, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, + 0x0029, 0x0029, 0x0029, 0x0029, 0x2192, 0x2190, 0x2191, 0x2193, 0x2196, + 0x2197, 0x2198, 0x2199, 0x21D0, 0x21CF, 0x21CD, 0x21D4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2794, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x279C, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x27BA, 0x0000, 0x0000, 0x0000, 0x0000, 0x21D1, 0x21D3, + 0x0000, 0x279E, 0x0000, 0x0000, 0x0000, 0x279E, 0x0000, 0x0000, 0x21B5, + 0x21B1, 0x0000, 0x21B4, 0x21B0, 0x21B3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x21E6, 0x21E8, 0x21E7, + 0x21E9, 0x21BC, 0x21C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x21C0, 0x21BC, + 0x0000, 0x0000, 0x0000, 0x0000, 0x21C4, 0x21C5, 0x002E, 0x002E, 0x002E, + 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, + 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, + 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, + 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, + 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, + 0x002E, 0x002E, 0x002E, 0x002E, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x2483, 0x2484, 0x2485, + 0x2486, 0x2487, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x3294, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x32A5, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, + 0x20DD, 0x0029, 0x0029, 0x0029, 0x0029, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2794, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x21E0, 0x21E1, 0x21E2, 0x21E3, 0x0000, 0x27A1, 0x0000, 0x0000, + 0x21E6, 0x21E8, 0x21E7, 0x21E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x261D, 0x261F, 0x0000, + 0x0000, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, + 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, + 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, + 0x005D, 0x005D, 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, + 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, + 0x20DE, 0x20DE, 0x20DE, 0x3290, 0x328A, 0x328B, 0x328C, 0x328D, 0x328E, + 0x328F, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x300C, + 0x300D, 0x300E, 0x300F, 0x21E8, 0x21E6, 0x21E7, 0x21E9, 0x0022, 0x301F, + 0x301D, 0x2036, 0x0060, 0x3001, 0x0000, 0x0021, 0x3021, 0x002C, 0x3002, + 0xAC02, 0xAC03, 0xAC05, 0xAC06, 0xAC0B, 0xAC0C, 0xAC0D, 0xAC0E, 0xAC0F, + 0xAC18, 0xAC1E, 0xAC1F, 0xAC21, 0xAC22, 0xAC23, 0xAC25, 0xAC26, 0xAC27, + 0xAC28, 0xAC29, 0xAC2A, 0xAC2B, 0xAC2E, 0xAC32, 0xAC33, 0xAC34, 0xAC35, + 0xAC36, 0xAC37, 0xAC3A, 0xAC3B, 0xAC3D, 0xAC3E, 0xAC3F, 0xAC41, 0xAC42, + 0xAC43, 0xAC44, 0xAC45, 0xAC46, 0xAC47, 0xAC48, 0xAC49, 0xAC4A, 0xAC4C, + 0xAC4E, 0xAC4F, 0xAC50, 0xAC51, 0xAC52, 0xAC53, 0xAC55, 0xAC56, 0xAC57, + 0xAC59, 0xAC5A, 0xAC5B, 0xAC5D, 0xAC5E, 0xAC5F, 0xAC60, 0xAC61, 0xAC62, + 0xAC63, 0xAC64, 0xAC65, 0xAC66, 0xAC67, 0xAC68, 0xAC69, 0xAC6A, 0xAC6B, + 0xAC6C, 0xAC6D, 0xAC6E, 0xAC6F, 0xAC72, 0xAC73, 0xAC75, 0xAC76, 0xAC79, + 0xAC7B, 0xAC7C, 0xAC7D, 0xAC7E, 0xAC7F, 0xAC82, 0xAC87, 0xAC88, 0xAC8D, + 0xAC8E, 0xAC8F, 0xAC91, 0xAC92, 0xAC93, 0xAC95, 0xAC96, 0xAC97, 0xAC98, + 0xAC99, 0xAC9A, 0xAC9B, 0xAC9E, 0xACA2, 0xACA3, 0xACA4, 0xACA5, 0xACA6, + 0xACA7, 0xACAB, 0xACAD, 0xACAE, 0xACB1, 0xACB2, 0xACB3, 0xACB4, 0xACB5, + 0xACB6, 0xACB7, 0xACBA, 0xACBE, 0xACBF, 0xACC0, 0xACC2, 0xACC3, 0xACC5, + 0xACC6, 0xACC7, 0xACC9, 0xACCA, 0xACCB, 0xACCD, 0xACCE, 0xACCF, 0xACD0, + 0xACD1, 0xACD2, 0xACD3, 0xACD4, 0xACD6, 0xACD8, 0xACD9, 0xACDA, 0xACDB, + 0xACDC, 0xACDD, 0xACDE, 0xACDF, 0xACE2, 0xACE3, 0xACE5, 0xACE6, 0xACE9, + 0xACEB, 0xACED, 0xACEE, 0xACF2, 0xACF4, 0xACF7, 0xACF8, 0xACF9, 0xACFA, + 0xACFB, 0xACFE, 0xACFF, 0xAD01, 0xAD02, 0xAD03, 0xAD05, 0xAD07, 0xAD08, + 0xAD09, 0xAD0A, 0xAD0B, 0xAD0E, 0xAD10, 0xAD12, 0xAD13, 0xAD14, 0xAD15, + 0xAD16, 0xAD17, 0xAD19, 0xAD1A, 0xAD1B, 0xAD1D, 0xAD1E, 0xAD1F, 0xAD21, + 0xAD22, 0xAD23, 0xAD24, 0xAD25, 0xAD26, 0xAD27, 0xAD28, 0xAD2A, 0xAD2B, + 0xAD2E, 0xAD2F, 0xAD30, 0xAD31, 0xAD32, 0xAD33, 0xAD36, 0xAD37, 0xAD39, + 0xAD3A, 0xAD3B, 0xAD3D, 0xAD3E, 0xAD3F, 0xAD40, 0xAD41, 0xAD42, 0xAD43, + 0xAD46, 0xAD48, 0xAD4A, 0xAD4B, 0xAD4C, 0xAD4D, 0xAD4E, 0xAD4F, 0xAD51, + 0xAD52, 0xAD53, 0xAD55, 0xAD56, 0xAD57, 0xAD59, 0xAD5A, 0xAD5B, 0xAD5C, + 0xAD5D, 0xAD5E, 0xAD5F, 0xAD60, 0xAD62, 0xAD64, 0xAD65, 0xAD66, 0xAD67, + 0xAD68, 0xAD69, 0xAD6A, 0xAD6B, 0xAD6E, 0xAD6F, 0xAD71, 0xAD72, 0xAD77, + 0xAD78, 0xAD79, 0xAD7A, 0xAD7E, 0xAD80, 0xAD83, 0xAD84, 0xAD85, 0xAD86, + 0xAD87, 0xAD8A, 0xAD8B, 0xAD8D, 0xAD8E, 0xAD8F, 0xAD91, 0xAD92, 0xAD93, + 0xAD94, 0xAD95, 0xAD96, 0xAD97, 0xAD98, 0xAD99, 0xAD9A, 0xAD9B, 0xAD9E, + 0xAD9F, 0xADA0, 0xADA1, 0xADA2, 0xADA3, 0xADA5, 0xADA6, 0xADA7, 0xADA8, + 0xADA9, 0xADAA, 0xADAB, 0xADAC, 0xADAD, 0xADAE, 0xADAF, 0xADB0, 0xADB1, + 0xADB2, 0xADB3, 0xADB4, 0xADB5, 0xADB6, 0xADB8, 0xADB9, 0xADBA, 0xADBB, + 0xADBC, 0xADBD, 0xADBE, 0xADBF, 0xADC2, 0xADC3, 0xADC5, 0xADC6, 0xADC7, + 0xADC9, 0xADCA, 0xADCB, 0xADCC, 0xADCD, 0xADCE, 0xADCF, 0xADD2, 0xADD4, + 0xADD5, 0xADD6, 0xADD7, 0xADD8, 0xADD9, 0xADDA, 0xADDB, 0xADDD, 0xADDE, + 0xADDF, 0xADE1, 0xADE2, 0xADE3, 0xADE5, 0xADE6, 0xADE7, 0xADE8, 0xADE9, + 0xADEA, 0xADEB, 0xADEC, 0xADED, 0xADEE, 0xADEF, 0xADF0, 0xADF1, 0xADF2, + 0xADF3, 0xADF4, 0xADF5, 0xADF6, 0xADF7, 0xADFA, 0xADFB, 0xADFD, 0xADFE, + 0xAE02, 0xAE03, 0xAE04, 0xAE05, 0xAE06, 0xAE07, 0xAE0A, 0xAE0C, 0xAE0E, + 0xAE0F, 0xAE10, 0xAE11, 0xAE12, 0xAE13, 0xAE15, 0xAE16, 0xAE17, 0xAE18, + 0xAE19, 0xAE1A, 0xAE1B, 0xAE1C, 0xAE1D, 0xAE1E, 0xAE1F, 0xAE20, 0xAE21, + 0xAE22, 0xAE23, 0xAE24, 0xAE25, 0xAE26, 0xAE27, 0xAE28, 0xAE29, 0xAE2A, + 0xAE2B, 0xAE2C, 0xAE2D, 0xAE2E, 0xAE2F, 0xAE32, 0xAE33, 0xAE35, 0xAE36, + 0xAE39, 0xAE3B, 0xAE3C, 0xAE3D, 0xAE3E, 0xAE3F, 0xAE42, 0xAE44, 0xAE47, + 0xAE48, 0xAE49, 0xAE4B, 0xAE4F, 0xAE51, 0xAE52, 0xAE53, 0xAE55, 0xAE57, + 0xAE58, 0xAE59, 0xAE5A, 0xAE5B, 0xAE5E, 0xAE62, 0xAE63, 0xAE64, 0xAE66, + 0xAE67, 0xAE6A, 0xAE6B, 0xAE6D, 0xAE6E, 0xAE6F, 0xAE71, 0xAE72, 0xAE73, + 0xAE74, 0xAE75, 0xAE76, 0xAE77, 0xAE7A, 0xAE7E, 0xAE7F, 0xAE80, 0xAE81, + 0xAE82, 0xAE83, 0xAE86, 0xAE87, 0xAE88, 0xAE89, 0xAE8A, 0xAE8B, 0xAE8D, + 0xAE8E, 0xAE8F, 0xAE90, 0xAE91, 0xAE92, 0xAE93, 0xAE94, 0xAE95, 0xAE96, + 0xAE97, 0xAE98, 0xAE99, 0xAE9A, 0xAE9B, 0xAE9C, 0xAE9D, 0xAE9E, 0xAE9F, + 0xAEA0, 0xAEA1, 0xAEA2, 0xAEA3, 0xAEA4, 0xAEA5, 0xAEA6, 0xAEA7, 0xAEA8, + 0xAEA9, 0xAEAA, 0xAEAB, 0xAEAC, 0xAEAD, 0xAEAE, 0xAEAF, 0xAEB0, 0xAEB1, + 0xAEB2, 0xAEB3, 0xAEB4, 0xAEB5, 0xAEB6, 0xAEB7, 0xAEB8, 0xAEB9, 0xAEBA, + 0xAEBB, 0xAEBF, 0xAEC1, 0xAEC2, 0xAEC3, 0xAEC5, 0xAEC6, 0xAEC7, 0xAEC8, + 0xAEC9, 0xAECA, 0xAECB, 0xAECE, 0xAED2, 0xAED3, 0xAED4, 0xAED5, 0xAED6, + 0xAED7, 0xAEDA, 0xAEDB, 0xAEDD, 0xAEDE, 0xAEDF, 0xAEE0, 0xAEE1, 0xAEE2, + 0xAEE3, 0xAEE4, 0xAEE5, 0xAEE6, 0xAEE7, 0xAEE9, 0xAEEA, 0xAEEC, 0xAEEE, + 0xAEEF, 0xAEF0, 0xAEF1, 0xAEF2, 0xAEF3, 0xAEF5, 0xAEF6, 0xAEF7, 0xAEF9, + 0xAEFA, 0xAEFB, 0xAEFD, 0xAEFE, 0xAEFF, 0xAF00, 0xAF01, 0xAF02, 0xAF03, + 0xAF04, 0xAF05, 0xAF06, 0xAF09, 0xAF0A, 0xAF0B, 0xAF0C, 0xAF0E, 0xAF0F, + 0xAF11, 0xAF12, 0xAF13, 0xAF14, 0xAF15, 0xAF16, 0xAF17, 0xAF18, 0xAF19, + 0xAF1A, 0xAF1B, 0xAF1C, 0xAF1D, 0xAF1E, 0xAF1F, 0xAF20, 0xAF21, 0xAF22, + 0xAF23, 0xAF24, 0xAF25, 0xAF26, 0xAF27, 0xAF28, 0xAF29, 0xAF2A, 0xAF2B, + 0xAF2E, 0xAF2F, 0xAF31, 0xAF33, 0xAF35, 0xAF36, 0xAF37, 0xAF38, 0xAF39, + 0xAF3A, 0xAF3B, 0xAF3E, 0xAF40, 0xAF44, 0xAF45, 0xAF46, 0xAF47, 0xAF4A, + 0xAF4B, 0xAF4C, 0xAF4D, 0xAF4E, 0xAF4F, 0xAF51, 0xAF52, 0xAF53, 0xAF54, + 0xAF55, 0xAF56, 0xAF57, 0xAF58, 0xAF59, 0xAF5A, 0xAF5B, 0xAF5E, 0xAF5F, + 0xAF60, 0xAF61, 0xAF62, 0xAF63, 0xAF66, 0xAF67, 0xAF68, 0xAF69, 0xAF6A, + 0xAF6B, 0xAF6C, 0xAF6D, 0xAF6E, 0xAF6F, 0xAF70, 0xAF71, 0xAF72, 0xAF73, + 0xAF74, 0xAF75, 0xAF76, 0xAF77, 0xAF78, 0xAF7A, 0xAF7B, 0xAF7C, 0xAF7D, + 0xAF7E, 0xAF7F, 0xAF81, 0xAF82, 0xAF83, 0xAF85, 0xAF86, 0xAF87, 0xAF89, + 0xAF8A, 0xAF8B, 0xAF8C, 0xAF8D, 0xAF8E, 0xAF8F, 0xAF92, 0xAF93, 0xAF94, + 0xAF96, 0xAF97, 0xAF98, 0xAF99, 0xAF9A, 0xAF9B, 0xAF9D, 0xAF9E, 0xAF9F, + 0xAFA0, 0xAFA1, 0xAFA2, 0xAFA3, 0xAFA4, 0xAFA5, 0xAFA6, 0xAFA7, 0xAFA8, + 0xAFA9, 0xAFAA, 0xAFAB, 0xAFAC, 0xAFAD, 0xAFAE, 0xAFAF, 0xAFB0, 0xAFB1, + 0xAFB2, 0xAFB3, 0xAFB4, 0xAFB5, 0xAFB6, 0xAFB7, 0xAFBA, 0xAFBB, 0xAFBD, + 0xAFBE, 0xAFBF, 0xAFC1, 0xAFC2, 0xAFC3, 0xAFC4, 0xAFC5, 0xAFC6, 0xAFCA, + 0xAFCC, 0xAFCF, 0xAFD0, 0xAFD1, 0xAFD2, 0xAFD3, 0xAFD5, 0xAFD6, 0xAFD7, + 0xAFD8, 0xAFD9, 0xAFDA, 0xAFDB, 0xAFDD, 0xAFDE, 0xAFDF, 0xAFE0, 0xAFE1, + 0xAFE2, 0xAFE3, 0xAFE4, 0xAFE5, 0xAFE6, 0xAFE7, 0xAFEA, 0xAFEB, 0xAFEC, + 0xAFED, 0xAFEE, 0xAFEF, 0xAFF2, 0xAFF3, 0xAFF5, 0xAFF6, 0xAFF7, 0xAFF9, + 0xAFFA, 0xAFFB, 0xAFFC, 0xAFFD, 0xAFFE, 0xAFFF, 0xB002, 0xB003, 0xB005, + 0xB006, 0xB007, 0xB008, 0xB009, 0xB00A, 0xB00B, 0xB00D, 0xB00E, 0xB00F, + 0xB011, 0xB012, 0xB013, 0xB015, 0xB016, 0xB017, 0xB018, 0xB019, 0xB01A, + 0xB01B, 0xB01E, 0xB01F, 0xB020, 0xB021, 0xB022, 0xB023, 0xB024, 0xB025, + 0xB026, 0xB027, 0xB029, 0xB02A, 0xB02B, 0xB02C, 0xB02D, 0xB02E, 0xB02F, + 0xB030, 0xB031, 0xB032, 0xB033, 0xB034, 0xB035, 0xB036, 0xB037, 0xB038, + 0xB039, 0xB03A, 0xB03B, 0xB03C, 0xB03D, 0xB03E, 0xB03F, 0xB040, 0xB041, + 0xB042, 0xB043, 0xB046, 0xB047, 0xB049, 0xB04B, 0xB04D, 0xB04F, 0xB050, + 0xB051, 0xB052, 0xB056, 0xB058, 0xB05A, 0xB05B, 0xB05C, 0xB05E, 0xB05F, + 0xB060, 0xB061, 0xB062, 0xB063, 0xB064, 0xB065, 0xB066, 0xB067, 0xB068, + 0xB069, 0xB06A, 0xB06B, 0xB06C, 0xB06D, 0xB06E, 0xB06F, 0xB070, 0xB071, + 0xB072, 0xB073, 0xB074, 0xB075, 0xB076, 0xB077, 0xB078, 0xB079, 0xB07A, + 0xB07B, 0xB07E, 0xB07F, 0xB081, 0xB082, 0xB083, 0xB085, 0xB086, 0xB087, + 0xB088, 0xB089, 0xB08A, 0xB08B, 0xB08E, 0xB090, 0xB092, 0xB093, 0xB094, + 0xB095, 0xB096, 0xB097, 0xB09B, 0xB09D, 0xB09E, 0xB0A3, 0xB0A4, 0xB0A5, + 0xB0A6, 0xB0A7, 0xB0AA, 0xB0B0, 0xB0B2, 0xB0B6, 0xB0B7, 0xB0B9, 0xB0BA, + 0xB0BB, 0xB0BD, 0xB0BE, 0xB0BF, 0xB0C0, 0xB0C1, 0xB0C2, 0xB0C3, 0xB0C6, + 0xB0CA, 0xB0CB, 0xB0CC, 0xB0CD, 0xB0CE, 0xB0CF, 0xB0D2, 0xB0D3, 0xB0D5, + 0xB0D6, 0xB0D7, 0xB0D9, 0xB0DA, 0xB0DB, 0xB0DC, 0xB0DD, 0xB0DE, 0xB0DF, + 0xB0E1, 0xB0E2, 0xB0E3, 0xB0E4, 0xB0E6, 0xB0E7, 0xB0E8, 0xB0E9, 0xB0EA, + 0xB0EB, 0xB0EC, 0xB0ED, 0xB0EE, 0xB0EF, 0xB0F0, 0xB0F1, 0xB0F2, 0xB0F3, + 0xB0F4, 0xB0F5, 0xB0F6, 0xB0F7, 0xB0F8, 0xB0F9, 0xB0FA, 0xB0FB, 0xB0FC, + 0xB0FD, 0xB0FE, 0xB0FF, 0xB100, 0xB101, 0xB102, 0xB103, 0xB104, 0xB105, + 0xB106, 0xB107, 0xB10A, 0xB10D, 0xB10E, 0xB10F, 0xB111, 0xB114, 0xB115, + 0xB116, 0xB117, 0xB11A, 0xB11E, 0xB11F, 0xB120, 0xB121, 0xB122, 0xB126, + 0xB127, 0xB129, 0xB12A, 0xB12B, 0xB12D, 0xB12E, 0xB12F, 0xB130, 0xB131, + 0xB132, 0xB133, 0xB136, 0xB13A, 0xB13B, 0xB13C, 0xB13D, 0xB13E, 0xB13F, + 0xB142, 0xB143, 0xB145, 0xB146, 0xB147, 0xB149, 0xB14A, 0xB14B, 0xB14C, + 0xB14D, 0xB14E, 0xB14F, 0xB152, 0xB153, 0xB156, 0xB157, 0xB159, 0xB15A, + 0xB15B, 0xB15D, 0xB15E, 0xB15F, 0xB161, 0xB162, 0xB163, 0xB164, 0xB165, + 0xB166, 0xB167, 0xB168, 0xB169, 0xB16A, 0xB16B, 0xB16C, 0xB16D, 0xB16E, + 0xB16F, 0xB170, 0xB171, 0xB172, 0xB173, 0xB174, 0xB175, 0xB176, 0xB177, + 0xB17A, 0xB17B, 0xB17D, 0xB17E, 0xB17F, 0xB181, 0xB183, 0xB184, 0xB185, + 0xB186, 0xB187, 0xB18A, 0xB18C, 0xB18E, 0xB18F, 0xB190, 0xB191, 0xB195, + 0xB196, 0xB197, 0xB199, 0xB19A, 0xB19B, 0xB19D, 0xB19E, 0xB19F, 0xB1A0, + 0xB1A1, 0xB1A2, 0xB1A3, 0xB1A4, 0xB1A5, 0xB1A6, 0xB1A7, 0xB1A9, 0xB1AA, + 0xB1AB, 0xB1AC, 0xB1AD, 0xB1AE, 0xB1AF, 0xB1B0, 0xB1B1, 0xB1B2, 0xB1B3, + 0xB1B4, 0xB1B5, 0xB1B6, 0xB1B7, 0xB1B8, 0xB1B9, 0xB1BA, 0xB1BB, 0xB1BC, + 0xB1BD, 0xB1BE, 0xB1BF, 0xB1C0, 0xB1C1, 0xB1C2, 0xB1C3, 0xB1C4, 0xB1C5, + 0xB1C6, 0xB1C7, 0xB1C8, 0xB1C9, 0xB1CA, 0xB1CB, 0xB1CD, 0xB1CE, 0xB1CF, + 0xB1D1, 0xB1D2, 0xB1D3, 0xB1D5, 0xB1D6, 0xB1D7, 0xB1D8, 0xB1D9, 0xB1DA, + 0xB1DB, 0xB1DE, 0xB1E0, 0xB1E1, 0xB1E2, 0xB1E3, 0xB1E4, 0xB1E5, 0xB1E6, + 0xB1E7, 0xB1EA, 0xB1EB, 0xB1ED, 0xB1EE, 0xB1EF, 0xB1F1, 0xB1F2, 0xB1F3, + 0xB1F4, 0xB1F5, 0xB1F6, 0xB1F7, 0xB1F8, 0xB1FA, 0xB1FC, 0xB1FE, 0xB1FF, + 0xB200, 0xB201, 0xB202, 0xB203, 0xB206, 0xB207, 0xB209, 0xB20A, 0xB20D, + 0xB20E, 0xB20F, 0xB210, 0xB211, 0xB212, 0xB213, 0xB216, 0xB218, 0xB21A, + 0xB21B, 0xB21C, 0xB21D, 0xB21E, 0xB21F, 0xB221, 0xB222, 0xB223, 0xB224, + 0xB225, 0xB226, 0xB227, 0xB228, 0xB229, 0xB22A, 0xB22B, 0xB22C, 0xB22D, + 0xB22E, 0xB22F, 0xB230, 0xB231, 0xB232, 0xB233, 0xB235, 0xB236, 0xB237, + 0xB238, 0xB239, 0xB23A, 0xB23B, 0xB23D, 0xB23E, 0xB23F, 0xB240, 0xB241, + 0xB242, 0xB243, 0xB244, 0xB245, 0xB246, 0xB247, 0xB248, 0xB249, 0xB24A, + 0xB24B, 0xB24C, 0xB24D, 0xB24E, 0xB24F, 0xB250, 0xB251, 0xB252, 0xB253, + 0xB254, 0xB255, 0xB256, 0xB257, 0xB259, 0xB25A, 0xB25B, 0xB25D, 0xB25E, + 0xB25F, 0xB261, 0xB262, 0xB263, 0xB264, 0xB265, 0xB266, 0xB267, 0xB26A, + 0xB26B, 0xB26C, 0xB26D, 0xB26E, 0xB26F, 0xB270, 0xB271, 0xB272, 0xB273, + 0xB276, 0xB277, 0xB278, 0xB279, 0xB27A, 0xB27B, 0xB27D, 0xB27E, 0xB27F, + 0xB280, 0xB281, 0xB282, 0xB283, 0xB286, 0xB287, 0xB288, 0xB28A, 0xB28B, + 0xB28C, 0xB28D, 0xB28E, 0xB28F, 0xB292, 0xB293, 0xB295, 0xB296, 0xB297, + 0xB29B, 0xB29C, 0xB29D, 0xB29E, 0xB29F, 0xB2A2, 0xB2A4, 0xB2A7, 0xB2A8, + 0xB2A9, 0xB2AB, 0xB2AD, 0xB2AE, 0xB2AF, 0xB2B1, 0xB2B2, 0xB2B3, 0xB2B5, + 0xB2B6, 0xB2B7, 0xB2B8, 0xB2B9, 0xB2BA, 0xB2BB, 0xB2BC, 0xB2BD, 0xB2BE, + 0xB2BF, 0xB2C0, 0xB2C1, 0xB2C2, 0xB2C3, 0xB2C4, 0xB2C5, 0xB2C6, 0xB2C7, + 0xB2CA, 0xB2CB, 0xB2CD, 0xB2CE, 0xB2CF, 0xB2D1, 0xB2D3, 0xB2D4, 0xB2D5, + 0xB2D6, 0xB2D7, 0xB2DA, 0xB2DC, 0xB2DE, 0xB2DF, 0xB2E0, 0xB2E1, 0xB2E3, + 0xB2E7, 0xB2E9, 0xB2EA, 0xB2F0, 0xB2F1, 0xB2F2, 0xB2F6, 0xB2FC, 0xB2FD, + 0xB2FE, 0xB302, 0xB303, 0xB305, 0xB306, 0xB307, 0xB309, 0xB30A, 0xB30B, + 0xB30C, 0xB30D, 0xB30E, 0xB30F, 0xB312, 0xB316, 0xB317, 0xB318, 0xB319, + 0xB31A, 0xB31B, 0xB31D, 0xB31E, 0xB31F, 0xB320, 0xB321, 0xB322, 0xB323, + 0xB324, 0xB325, 0xB326, 0xB327, 0xB328, 0xB329, 0xB32A, 0xB32B, 0xB32C, + 0xB32D, 0xB32E, 0xB32F, 0xB330, 0xB331, 0xB332, 0xB333, 0xB334, 0xB335, + 0xB336, 0xB337, 0xB338, 0xB339, 0xB33A, 0xB33B, 0xB33C, 0xB33D, 0xB33E, + 0xB33F, 0xB340, 0xB341, 0xB342, 0xB343, 0xB344, 0xB345, 0xB346, 0xB347, + 0xB348, 0xB349, 0xB34A, 0xB34B, 0xB34C, 0xB34D, 0xB34E, 0xB34F, 0xB350, + 0xB351, 0xB352, 0xB353, 0xB357, 0xB359, 0xB35A, 0xB35D, 0xB360, 0xB361, + 0xB362, 0xB363, 0xB366, 0xB368, 0xB36A, 0xB36C, 0xB36D, 0xB36F, 0xB372, + 0xB373, 0xB375, 0xB376, 0xB377, 0xB379, 0xB37A, 0xB37B, 0xB37C, 0xB37D, + 0xB37E, 0xB37F, 0xB382, 0xB386, 0xB387, 0xB388, 0xB389, 0xB38A, 0xB38B, + 0xB38D, 0xB38E, 0xB38F, 0xB391, 0xB392, 0xB393, 0xB395, 0xB396, 0xB397, + 0xB398, 0xB399, 0xB39A, 0xB39B, 0xB39C, 0xB39D, 0xB39E, 0xB39F, 0xB3A2, + 0xB3A3, 0xB3A4, 0xB3A5, 0xB3A6, 0xB3A7, 0xB3A9, 0xB3AA, 0xB3AB, 0xB3AD, + 0xB3AE, 0xB3AF, 0xB3B0, 0xB3B1, 0xB3B2, 0xB3B3, 0xB3B4, 0xB3B5, 0xB3B6, + 0xB3B7, 0xB3B8, 0xB3B9, 0xB3BA, 0xB3BB, 0xB3BC, 0xB3BD, 0xB3BE, 0xB3BF, + 0xB3C0, 0xB3C1, 0xB3C2, 0xB3C3, 0xB3C6, 0xB3C7, 0xB3C9, 0xB3CA, 0xB3CD, + 0xB3CF, 0xB3D1, 0xB3D2, 0xB3D3, 0xB3D6, 0xB3D8, 0xB3DA, 0xB3DC, 0xB3DE, + 0xB3DF, 0xB3E1, 0xB3E2, 0xB3E3, 0xB3E5, 0xB3E6, 0xB3E7, 0xB3E9, 0xB3EA, + 0xB3EB, 0xB3EC, 0xB3ED, 0xB3EE, 0xB3EF, 0xB3F0, 0xB3F1, 0xB3F2, 0xB3F3, + 0xB3F4, 0xB3F5, 0xB3F6, 0xB3F7, 0xB3F8, 0xB3F9, 0xB3FA, 0xB3FB, 0xB3FD, + 0xB3FE, 0xB3FF, 0xB400, 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xB406, + 0xB407, 0xB408, 0xB409, 0xB40A, 0xB40B, 0xB40C, 0xB40D, 0xB40E, 0xB40F, + 0xB411, 0xB412, 0xB413, 0xB414, 0xB415, 0xB416, 0xB417, 0xB419, 0xB41A, + 0xB41B, 0xB41D, 0xB41E, 0xB41F, 0xB421, 0xB422, 0xB423, 0xB424, 0xB425, + 0xB426, 0xB427, 0xB42A, 0xB42C, 0xB42D, 0xB42E, 0xB42F, 0xB430, 0xB431, + 0xB432, 0xB433, 0xB435, 0xB436, 0xB437, 0xB438, 0xB439, 0xB43A, 0xB43B, + 0xB43C, 0xB43D, 0xB43E, 0xB43F, 0xB440, 0xB441, 0xB442, 0xB443, 0xB444, + 0xB445, 0xB446, 0xB447, 0xB448, 0xB449, 0xB44A, 0xB44B, 0xB44C, 0xB44D, + 0xB44E, 0xB44F, 0xB452, 0xB453, 0xB455, 0xB456, 0xB457, 0xB459, 0xB45A, + 0xB45B, 0xB45C, 0xB45D, 0xB45E, 0xB45F, 0xB462, 0xB464, 0xB466, 0xB467, + 0xB468, 0xB469, 0xB46A, 0xB46B, 0xB46D, 0xB46E, 0xB46F, 0xB470, 0xB471, + 0xB472, 0xB473, 0xB474, 0xB475, 0xB476, 0xB477, 0xB478, 0xB479, 0xB47A, + 0xB47B, 0xB47C, 0xB47D, 0xB47E, 0xB47F, 0xB481, 0xB482, 0xB483, 0xB484, + 0xB485, 0xB486, 0xB487, 0xB489, 0xB48A, 0xB48B, 0xB48C, 0xB48D, 0xB48E, + 0xB48F, 0xB490, 0xB491, 0xB492, 0xB493, 0xB494, 0xB495, 0xB496, 0xB497, + 0xB498, 0xB499, 0xB49A, 0xB49B, 0xB49C, 0xB49E, 0xB49F, 0xB4A0, 0xB4A1, + 0xB4A2, 0xB4A3, 0xB4A5, 0xB4A6, 0xB4A7, 0xB4A9, 0xB4AA, 0xB4AB, 0xB4AD, + 0xB4AE, 0xB4AF, 0xB4B0, 0xB4B1, 0xB4B2, 0xB4B3, 0xB4B4, 0xB4B6, 0xB4B8, + 0xB4BA, 0xB4BB, 0xB4BC, 0xB4BD, 0xB4BE, 0xB4BF, 0xB4C1, 0xB4C2, 0xB4C3, + 0xB4C5, 0xB4C6, 0xB4C7, 0xB4C9, 0xB4CA, 0xB4CB, 0xB4CC, 0xB4CD, 0xB4CE, + 0xB4CF, 0xB4D1, 0xB4D2, 0xB4D3, 0xB4D4, 0xB4D6, 0xB4D7, 0xB4D8, 0xB4D9, + 0xB4DA, 0xB4DB, 0xB4DE, 0xB4DF, 0xB4E1, 0xB4E2, 0xB4E5, 0xB4E7, 0xB4E8, + 0xB4E9, 0xB4EA, 0xB4EB, 0xB4EE, 0xB4F0, 0xB4F2, 0xB4F3, 0xB4F4, 0xB4F5, + 0xB4F6, 0xB4F7, 0xB4F9, 0xB4FA, 0xB4FB, 0xB4FC, 0xB4FD, 0xB4FE, 0xB4FF, + 0xB500, 0xB501, 0xB502, 0xB503, 0xB504, 0xB505, 0xB506, 0xB507, 0xB508, + 0xB509, 0xB50A, 0xB50B, 0xB50C, 0xB50D, 0xB50E, 0xB50F, 0xB510, 0xB511, + 0xB512, 0xB513, 0xB516, 0xB517, 0xB519, 0xB51A, 0xB51D, 0xB51E, 0xB51F, + 0xB520, 0xB521, 0xB522, 0xB523, 0xB526, 0xB52B, 0xB52C, 0xB52D, 0xB52E, + 0xB52F, 0xB532, 0xB533, 0xB535, 0xB536, 0xB537, 0xB539, 0xB53A, 0xB53B, + 0xB53C, 0xB53D, 0xB53E, 0xB53F, 0xB542, 0xB546, 0xB547, 0xB548, 0xB549, + 0xB54A, 0xB54E, 0xB54F, 0xB551, 0xB552, 0xB553, 0xB555, 0xB556, 0xB557, + 0xB558, 0xB559, 0xB55A, 0xB55B, 0xB55E, 0xB562, 0xB563, 0xB564, 0xB565, + 0xB566, 0xB567, 0xB568, 0xB569, 0xB56A, 0xB56B, 0xB56C, 0xB56D, 0xB56E, + 0xB56F, 0xB570, 0xB571, 0xB572, 0xB573, 0xB574, 0xB575, 0xB576, 0xB577, + 0xB578, 0xB579, 0xB57A, 0xB57B, 0xB57C, 0xB57D, 0xB57E, 0xB57F, 0xB580, + 0xB581, 0xB582, 0xB583, 0xB584, 0xB585, 0xB586, 0xB587, 0xB588, 0xB589, + 0xB58A, 0xB58B, 0xB58C, 0xB58D, 0xB58E, 0xB58F, 0xB590, 0xB591, 0xB592, + 0xB593, 0xB594, 0xB595, 0xB596, 0xB597, 0xB598, 0xB599, 0xB59A, 0xB59B, + 0xB59C, 0xB59D, 0xB59E, 0xB59F, 0xB5A2, 0xB5A3, 0xB5A5, 0xB5A6, 0xB5A7, + 0xB5A9, 0xB5AC, 0xB5AD, 0xB5AE, 0xB5AF, 0xB5B2, 0xB5B6, 0xB5B7, 0xB5B8, + 0xB5B9, 0xB5BA, 0xB5BE, 0xB5BF, 0xB5C1, 0xB5C2, 0xB5C3, 0xB5C5, 0xB5C6, + 0xB5C7, 0xB5C8, 0xB5C9, 0xB5CA, 0xB5CB, 0xB5CE, 0xB5D2, 0xB5D3, 0xB5D4, + 0xB5D5, 0xB5D6, 0xB5D7, 0xB5D9, 0xB5DA, 0xB5DB, 0xB5DC, 0xB5DD, 0xB5DE, + 0xB5DF, 0xB5E0, 0xB5E1, 0xB5E2, 0xB5E3, 0xB5E4, 0xB5E5, 0xB5E6, 0xB5E7, + 0xB5E8, 0xB5E9, 0xB5EA, 0xB5EB, 0xB5ED, 0xB5EE, 0xB5EF, 0xB5F0, 0xB5F1, + 0xB5F2, 0xB5F3, 0xB5F4, 0xB5F5, 0xB5F6, 0xB5F7, 0xB5F8, 0xB5F9, 0xB5FA, + 0xB5FB, 0xB5FC, 0xB5FD, 0xB5FE, 0xB5FF, 0xB600, 0xB601, 0xB602, 0xB603, + 0xB604, 0xB605, 0xB606, 0xB607, 0xB608, 0xB609, 0xB60A, 0xB60B, 0xB60C, + 0xB60D, 0xB60E, 0xB60F, 0xB612, 0xB613, 0xB615, 0xB616, 0xB617, 0xB619, + 0xB61A, 0xB61B, 0xB61C, 0xB61D, 0xB61E, 0xB61F, 0xB620, 0xB621, 0xB622, + 0xB623, 0xB624, 0xB626, 0xB627, 0xB628, 0xB629, 0xB62A, 0xB62B, 0xB62D, + 0xB62E, 0xB62F, 0xB630, 0xB631, 0xB632, 0xB633, 0xB635, 0xB636, 0xB637, + 0xB638, 0xB639, 0xB63A, 0xB63B, 0xB63C, 0xB63D, 0xB63E, 0xB63F, 0xB640, + 0xB641, 0xB642, 0xB643, 0xB644, 0xB645, 0xB646, 0xB647, 0xB649, 0xB64A, + 0xB64B, 0xB64C, 0xB64D, 0xB64E, 0xB64F, 0xB650, 0xB651, 0xB652, 0xB653, + 0xB654, 0xB655, 0xB656, 0xB657, 0xB658, 0xB659, 0xB65A, 0xB65B, 0xB65C, + 0xB65D, 0xB65E, 0xB65F, 0xB660, 0xB661, 0xB662, 0xB663, 0xB665, 0xB666, + 0xB667, 0xB669, 0xB66A, 0xB66B, 0xB66C, 0xB66D, 0xB66E, 0xB66F, 0xB670, + 0xB671, 0xB672, 0xB673, 0xB674, 0xB675, 0xB676, 0xB677, 0xB678, 0xB679, + 0xB67A, 0xB67B, 0xB67C, 0xB67D, 0xB67E, 0xB67F, 0xB680, 0xB681, 0xB682, + 0xB683, 0xB684, 0xB685, 0xB686, 0xB687, 0xB688, 0xB689, 0xB68A, 0xB68B, + 0xB68C, 0xB68D, 0xB68E, 0xB68F, 0xB690, 0xB691, 0xB692, 0xB693, 0xB694, + 0xB695, 0xB696, 0xB697, 0xB698, 0xB699, 0xB69A, 0xB69B, 0xB69E, 0xB69F, + 0xB6A1, 0xB6A2, 0xB6A3, 0xB6A5, 0xB6A6, 0xB6A7, 0xB6A8, 0xB6A9, 0xB6AA, + 0xB6AD, 0xB6AE, 0xB6AF, 0xB6B0, 0xB6B2, 0xB6B3, 0xB6B4, 0xB6B5, 0xB6B6, + 0xB6B7, 0xB6B8, 0xB6B9, 0xB6BA, 0xB6BB, 0xB6BC, 0xB6BD, 0xB6BE, 0xB6BF, + 0xB6C0, 0xB6C1, 0xB6C2, 0xB6C3, 0xB6C4, 0xB6C5, 0xB6C6, 0xB6C7, 0xB6C8, + 0xB6C9, 0xB6CA, 0xB6CB, 0xB6CC, 0xB6CD, 0xB6CE, 0xB6CF, 0xB6D0, 0xB6D1, + 0xB6D2, 0xB6D3, 0xB6D5, 0xB6D6, 0xB6D7, 0xB6D8, 0xB6D9, 0xB6DA, 0xB6DB, + 0xB6DC, 0xB6DD, 0xB6DE, 0xB6DF, 0xB6E0, 0xB6E1, 0xB6E2, 0xB6E3, 0xB6E4, + 0xB6E5, 0xB6E6, 0xB6E7, 0xB6E8, 0xB6E9, 0xB6EA, 0xB6EB, 0xB6EC, 0xB6ED, + 0xB6EE, 0xB6EF, 0xB6F1, 0xB6F2, 0xB6F3, 0xB6F5, 0xB6F6, 0xB6F7, 0xB6F9, + 0xB6FA, 0xB6FB, 0xB6FC, 0xB6FD, 0xB6FE, 0xB6FF, 0xB702, 0xB703, 0xB704, + 0xB706, 0xB707, 0xB708, 0xB709, 0xB70A, 0xB70B, 0xB70C, 0xB70D, 0xB70E, + 0xB70F, 0xB710, 0xB711, 0xB712, 0xB713, 0xB714, 0xB715, 0xB716, 0xB717, + 0xB718, 0xB719, 0xB71A, 0xB71B, 0xB71C, 0xB71D, 0xB71E, 0xB71F, 0xB720, + 0xB721, 0xB722, 0xB723, 0xB724, 0xB725, 0xB726, 0xB727, 0xB72A, 0xB72B, + 0xB72D, 0xB72E, 0xB731, 0xB732, 0xB733, 0xB734, 0xB735, 0xB736, 0xB737, + 0xB73A, 0xB73C, 0xB73D, 0xB73E, 0xB73F, 0xB740, 0xB741, 0xB742, 0xB743, + 0xB745, 0xB746, 0xB747, 0xB749, 0xB74A, 0xB74B, 0xB74D, 0xB74E, 0xB74F, + 0xB750, 0xB751, 0xB752, 0xB753, 0xB756, 0xB757, 0xB758, 0xB759, 0xB75A, + 0xB75B, 0xB75C, 0xB75D, 0xB75E, 0xB75F, 0xB761, 0xB762, 0xB763, 0xB765, + 0xB766, 0xB767, 0xB769, 0xB76A, 0xB76B, 0xB76C, 0xB76D, 0xB76E, 0xB76F, + 0xB772, 0xB774, 0xB776, 0xB777, 0xB778, 0xB779, 0xB77A, 0xB77B, 0xB77E, + 0xB77F, 0xB781, 0xB782, 0xB783, 0xB785, 0xB786, 0xB787, 0xB788, 0xB789, + 0xB78A, 0xB78B, 0xB78E, 0xB793, 0xB794, 0xB795, 0xB79A, 0xB79B, 0xB79D, + 0xB79E, 0xB79F, 0xB7A1, 0xB7A2, 0xB7A3, 0xB7A4, 0xB7A5, 0xB7A6, 0xB7A7, + 0xB7AA, 0xB7AE, 0xB7AF, 0xB7B0, 0xB7B1, 0xB7B2, 0xB7B3, 0xB7B6, 0xB7B7, + 0xB7B9, 0xB7BA, 0xB7BB, 0xB7BC, 0xB7BD, 0xB7BE, 0xB7BF, 0xB7C0, 0xB7C1, + 0xB7C2, 0xB7C3, 0xB7C4, 0xB7C5, 0xB7C6, 0xB7C8, 0xB7CA, 0xB7CB, 0xB7CC, + 0xB7CD, 0xB7CE, 0xB7CF, 0xB7D0, 0xB7D1, 0xB7D2, 0xB7D3, 0xB7D4, 0xB7D5, + 0xB7D6, 0xB7D7, 0xB7D8, 0xB7D9, 0xB7DA, 0xB7DB, 0xB7DC, 0xB7DD, 0xB7DE, + 0xB7DF, 0xB7E0, 0xB7E1, 0xB7E2, 0xB7E3, 0xB7E4, 0xB7E5, 0xB7E6, 0xB7E7, + 0xB7E8, 0xB7E9, 0xB7EA, 0xB7EB, 0xB7EE, 0xB7EF, 0xB7F1, 0xB7F2, 0xB7F3, + 0xB7F5, 0xB7F6, 0xB7F7, 0xB7F8, 0xB7F9, 0xB7FA, 0xB7FB, 0xB7FE, 0xB802, + 0xB803, 0xB804, 0xB805, 0xB806, 0xB80A, 0xB80B, 0xB80D, 0xB80E, 0xB80F, + 0xB811, 0xB812, 0xB813, 0xB814, 0xB815, 0xB816, 0xB817, 0xB81A, 0xB81C, + 0xB81E, 0xB81F, 0xB820, 0xB821, 0xB822, 0xB823, 0xB826, 0xB827, 0xB829, + 0xB82A, 0xB82B, 0xB82D, 0xB82E, 0xB82F, 0xB830, 0xB831, 0xB832, 0xB833, + 0xB836, 0xB83A, 0xB83B, 0xB83C, 0xB83D, 0xB83E, 0xB83F, 0xB841, 0xB842, + 0xB843, 0xB845, 0xB846, 0xB847, 0xB848, 0xB849, 0xB84A, 0xB84B, 0xB84C, + 0xB84D, 0xB84E, 0xB84F, 0xB850, 0xB852, 0xB854, 0xB855, 0xB856, 0xB857, + 0xB858, 0xB859, 0xB85A, 0xB85B, 0xB85E, 0xB85F, 0xB861, 0xB862, 0xB863, + 0xB865, 0xB866, 0xB867, 0xB868, 0xB869, 0xB86A, 0xB86B, 0xB86E, 0xB870, + 0xB872, 0xB873, 0xB874, 0xB875, 0xB876, 0xB877, 0xB879, 0xB87A, 0xB87B, + 0xB87D, 0xB87E, 0xB87F, 0xB880, 0xB881, 0xB882, 0xB883, 0xB884, 0xB885, + 0xB886, 0xB887, 0xB888, 0xB889, 0xB88A, 0xB88B, 0xB88C, 0xB88E, 0xB88F, + 0xB890, 0xB891, 0xB892, 0xB893, 0xB894, 0xB895, 0xB896, 0xB897, 0xB898, + 0xB899, 0xB89A, 0xB89B, 0xB89C, 0xB89D, 0xB89E, 0xB89F, 0xB8A0, 0xB8A1, + 0xB8A2, 0xB8A3, 0xB8A4, 0xB8A5, 0xB8A6, 0xB8A7, 0xB8A9, 0xB8AA, 0xB8AB, + 0xB8AC, 0xB8AD, 0xB8AE, 0xB8AF, 0xB8B1, 0xB8B2, 0xB8B3, 0xB8B5, 0xB8B6, + 0xB8B7, 0xB8B9, 0xB8BA, 0xB8BB, 0xB8BC, 0xB8BD, 0xB8BE, 0xB8BF, 0xB8C2, + 0xB8C4, 0xB8C6, 0xB8C7, 0xB8C8, 0xB8C9, 0xB8CA, 0xB8CB, 0xB8CD, 0xB8CE, + 0xB8CF, 0xB8D1, 0xB8D2, 0xB8D3, 0xB8D5, 0xB8D6, 0xB8D7, 0xB8D8, 0xB8D9, + 0xB8DA, 0xB8DB, 0xB8DC, 0xB8DE, 0xB8E0, 0xB8E2, 0xB8E3, 0xB8E4, 0xB8E5, + 0xB8E6, 0xB8E7, 0xB8EA, 0xB8EB, 0xB8ED, 0xB8EE, 0xB8EF, 0xB8F1, 0xB8F2, + 0xB8F3, 0xB8F4, 0xB8F5, 0xB8F6, 0xB8F7, 0xB8FA, 0xB8FC, 0xB8FE, 0xB8FF, + 0xB900, 0xB901, 0xB902, 0xB903, 0xB905, 0xB906, 0xB907, 0xB908, 0xB909, + 0xB90A, 0xB90B, 0xB90C, 0xB90D, 0xB90E, 0xB90F, 0xB910, 0xB911, 0xB912, + 0xB913, 0xB914, 0xB915, 0xB916, 0xB917, 0xB919, 0xB91A, 0xB91B, 0xB91C, + 0xB91D, 0xB91E, 0xB91F, 0xB921, 0xB922, 0xB923, 0xB924, 0xB925, 0xB926, + 0xB927, 0xB928, 0xB929, 0xB92A, 0xB92B, 0xB92C, 0xB92D, 0xB92E, 0xB92F, + 0xB930, 0xB931, 0xB932, 0xB933, 0xB934, 0xB935, 0xB936, 0xB937, 0xB938, + 0xB939, 0xB93A, 0xB93B, 0xB93E, 0xB93F, 0xB941, 0xB942, 0xB943, 0xB945, + 0xB946, 0xB947, 0xB948, 0xB949, 0xB94A, 0xB94B, 0xB94D, 0xB94E, 0xB950, + 0xB952, 0xB953, 0xB954, 0xB955, 0xB956, 0xB957, 0xB95A, 0xB95B, 0xB95D, + 0xB95E, 0xB95F, 0xB961, 0xB962, 0xB963, 0xB964, 0xB965, 0xB966, 0xB967, + 0xB96A, 0xB96C, 0xB96E, 0xB96F, 0xB970, 0xB971, 0xB972, 0xB973, 0xB976, + 0xB977, 0xB979, 0xB97A, 0xB97B, 0xB97D, 0xB97E, 0xB97F, 0xB980, 0xB981, + 0xB982, 0xB983, 0xB986, 0xB988, 0xB98B, 0xB98C, 0xB98F, 0xB990, 0xB991, + 0xB992, 0xB993, 0xB994, 0xB995, 0xB996, 0xB997, 0xB998, 0xB999, 0xB99A, + 0xB99B, 0xB99C, 0xB99D, 0xB99E, 0xB99F, 0xB9A0, 0xB9A1, 0xB9A2, 0xB9A3, + 0xB9A4, 0xB9A5, 0xB9A6, 0xB9A7, 0xB9A8, 0xB9A9, 0xB9AA, 0xB9AB, 0xB9AE, + 0xB9AF, 0xB9B1, 0xB9B2, 0xB9B3, 0xB9B5, 0xB9B6, 0xB9B7, 0xB9B8, 0xB9B9, + 0xB9BA, 0xB9BB, 0xB9BE, 0xB9C0, 0xB9C2, 0xB9C3, 0xB9C4, 0xB9C5, 0xB9C6, + 0xB9C7, 0xB9CA, 0xB9CB, 0xB9CD, 0xB9D3, 0xB9D4, 0xB9D5, 0xB9D6, 0xB9D7, + 0xB9DA, 0xB9DC, 0xB9DF, 0xB9E0, 0xB9E2, 0xB9E6, 0xB9E7, 0xB9E9, 0xB9EA, + 0xB9EB, 0xB9ED, 0xB9EE, 0xB9EF, 0xB9F0, 0xB9F1, 0xB9F2, 0xB9F3, 0xB9F6, + 0xB9FB, 0xB9FC, 0xB9FD, 0xB9FE, 0xB9FF, 0xBA02, 0xBA03, 0xBA04, 0xBA05, + 0xBA06, 0xBA07, 0xBA09, 0xBA0A, 0xBA0B, 0xBA0C, 0xBA0D, 0xBA0E, 0xBA0F, + 0xBA10, 0xBA11, 0xBA12, 0xBA13, 0xBA14, 0xBA16, 0xBA17, 0xBA18, 0xBA19, + 0xBA1A, 0xBA1B, 0xBA1C, 0xBA1D, 0xBA1E, 0xBA1F, 0xBA20, 0xBA21, 0xBA22, + 0xBA23, 0xBA24, 0xBA25, 0xBA26, 0xBA27, 0xBA28, 0xBA29, 0xBA2A, 0xBA2B, + 0xBA2C, 0xBA2D, 0xBA2E, 0xBA2F, 0xBA30, 0xBA31, 0xBA32, 0xBA33, 0xBA34, + 0xBA35, 0xBA36, 0xBA37, 0xBA3A, 0xBA3B, 0xBA3D, 0xBA3E, 0xBA3F, 0xBA41, + 0xBA43, 0xBA44, 0xBA45, 0xBA46, 0xBA47, 0xBA4A, 0xBA4C, 0xBA4F, 0xBA50, + 0xBA51, 0xBA52, 0xBA56, 0xBA57, 0xBA59, 0xBA5A, 0xBA5B, 0xBA5D, 0xBA5E, + 0xBA5F, 0xBA60, 0xBA61, 0xBA62, 0xBA63, 0xBA66, 0xBA6A, 0xBA6B, 0xBA6C, + 0xBA6D, 0xBA6E, 0xBA6F, 0xBA72, 0xBA73, 0xBA75, 0xBA76, 0xBA77, 0xBA79, + 0xBA7A, 0xBA7B, 0xBA7C, 0xBA7D, 0xBA7E, 0xBA7F, 0xBA80, 0xBA81, 0xBA82, + 0xBA86, 0xBA88, 0xBA89, 0xBA8A, 0xBA8B, 0xBA8D, 0xBA8E, 0xBA8F, 0xBA90, + 0xBA91, 0xBA92, 0xBA93, 0xBA94, 0xBA95, 0xBA96, 0xBA97, 0xBA98, 0xBA99, + 0xBA9A, 0xBA9B, 0xBA9C, 0xBA9D, 0xBA9E, 0xBA9F, 0xBAA0, 0xBAA1, 0xBAA2, + 0xBAA3, 0xBAA4, 0xBAA5, 0xBAA6, 0xBAA7, 0xBAAA, 0xBAAD, 0xBAAE, 0xBAAF, + 0xBAB1, 0xBAB3, 0xBAB4, 0xBAB5, 0xBAB6, 0xBAB7, 0xBABA, 0xBABC, 0xBABE, + 0xBABF, 0xBAC0, 0xBAC1, 0xBAC2, 0xBAC3, 0xBAC5, 0xBAC6, 0xBAC7, 0xBAC9, + 0xBACA, 0xBACB, 0xBACC, 0xBACD, 0xBACE, 0xBACF, 0xBAD0, 0xBAD1, 0xBAD2, + 0xBAD3, 0xBAD4, 0xBAD5, 0xBAD6, 0xBAD7, 0xBADA, 0xBADB, 0xBADC, 0xBADD, + 0xBADE, 0xBADF, 0xBAE0, 0xBAE1, 0xBAE2, 0xBAE3, 0xBAE4, 0xBAE5, 0xBAE6, + 0xBAE7, 0xBAE8, 0xBAE9, 0xBAEA, 0xBAEB, 0xBAEC, 0xBAED, 0xBAEE, 0xBAEF, + 0xBAF0, 0xBAF1, 0xBAF2, 0xBAF3, 0xBAF4, 0xBAF5, 0xBAF6, 0xBAF7, 0xBAF8, + 0xBAF9, 0xBAFA, 0xBAFB, 0xBAFD, 0xBAFE, 0xBAFF, 0xBB01, 0xBB02, 0xBB03, + 0xBB05, 0xBB06, 0xBB07, 0xBB08, 0xBB09, 0xBB0A, 0xBB0B, 0xBB0C, 0xBB0E, + 0xBB10, 0xBB12, 0xBB13, 0xBB14, 0xBB15, 0xBB16, 0xBB17, 0xBB19, 0xBB1A, + 0xBB1B, 0xBB1D, 0xBB1E, 0xBB1F, 0xBB21, 0xBB22, 0xBB23, 0xBB24, 0xBB25, + 0xBB26, 0xBB27, 0xBB28, 0xBB2A, 0xBB2C, 0xBB2D, 0xBB2E, 0xBB2F, 0xBB30, + 0xBB31, 0xBB32, 0xBB33, 0xBB37, 0xBB39, 0xBB3A, 0xBB3F, 0xBB40, 0xBB41, + 0xBB42, 0xBB43, 0xBB46, 0xBB48, 0xBB4A, 0xBB4B, 0xBB4C, 0xBB4E, 0xBB51, + 0xBB52, 0xBB53, 0xBB55, 0xBB56, 0xBB57, 0xBB59, 0xBB5A, 0xBB5B, 0xBB5C, + 0xBB5D, 0xBB5E, 0xBB5F, 0xBB60, 0xBB62, 0xBB64, 0xBB65, 0xBB66, 0xBB67, + 0xBB68, 0xBB69, 0xBB6A, 0xBB6B, 0xBB6D, 0xBB6E, 0xBB6F, 0xBB70, 0xBB71, + 0xBB72, 0xBB73, 0xBB74, 0xBB75, 0xBB76, 0xBB77, 0xBB78, 0xBB79, 0xBB7A, + 0xBB7B, 0xBB7C, 0xBB7D, 0xBB7E, 0xBB7F, 0xBB80, 0xBB81, 0xBB82, 0xBB83, + 0xBB84, 0xBB85, 0xBB86, 0xBB87, 0xBB89, 0xBB8A, 0xBB8B, 0xBB8D, 0xBB8E, + 0xBB8F, 0xBB91, 0xBB92, 0xBB93, 0xBB94, 0xBB95, 0xBB96, 0xBB97, 0xBB98, + 0xBB99, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D, 0xBB9E, 0xBB9F, 0xBBA0, 0xBBA1, + 0xBBA2, 0xBBA3, 0xBBA5, 0xBBA6, 0xBBA7, 0xBBA9, 0xBBAA, 0xBBAB, 0xBBAD, + 0xBBAE, 0xBBAF, 0xBBB0, 0xBBB1, 0xBBB2, 0xBBB3, 0xBBB5, 0xBBB6, 0xBBB8, + 0xBBB9, 0xBBBA, 0xBBBB, 0xBBBC, 0xBBBD, 0xBBBE, 0xBBBF, 0xBBC1, 0xBBC2, + 0xBBC3, 0xBBC5, 0xBBC6, 0xBBC7, 0xBBC9, 0xBBCA, 0xBBCB, 0xBBCC, 0xBBCD, + 0xBBCE, 0xBBCF, 0xBBD1, 0xBBD2, 0xBBD4, 0xBBD5, 0xBBD6, 0xBBD7, 0xBBD8, + 0xBBD9, 0xBBDA, 0xBBDB, 0xBBDC, 0xBBDD, 0xBBDE, 0xBBDF, 0xBBE0, 0xBBE1, + 0xBBE2, 0xBBE3, 0xBBE4, 0xBBE5, 0xBBE6, 0xBBE7, 0xBBE8, 0xBBE9, 0xBBEA, + 0xBBEB, 0xBBEC, 0xBBED, 0xBBEE, 0xBBEF, 0xBBF0, 0xBBF1, 0xBBF2, 0xBBF3, + 0xBBF4, 0xBBF5, 0xBBF6, 0xBBF7, 0xBBFA, 0xBBFB, 0xBBFD, 0xBBFE, 0xBC01, + 0xBC03, 0xBC04, 0xBC05, 0xBC06, 0xBC07, 0xBC0A, 0xBC0E, 0xBC10, 0xBC12, + 0xBC13, 0xBC19, 0xBC1A, 0xBC20, 0xBC21, 0xBC22, 0xBC23, 0xBC26, 0xBC28, + 0xBC2A, 0xBC2B, 0xBC2C, 0xBC2E, 0xBC2F, 0xBC32, 0xBC33, 0xBC35, 0xBC36, + 0xBC37, 0xBC39, 0xBC3A, 0xBC3B, 0xBC3C, 0xBC3D, 0xBC3E, 0xBC3F, 0xBC42, + 0xBC46, 0xBC47, 0xBC48, 0xBC4A, 0xBC4B, 0xBC4E, 0xBC4F, 0xBC51, 0xBC52, + 0xBC53, 0xBC54, 0xBC55, 0xBC56, 0xBC57, 0xBC58, 0xBC59, 0xBC5A, 0xBC5B, + 0xBC5C, 0xBC5E, 0xBC5F, 0xBC60, 0xBC61, 0xBC62, 0xBC63, 0xBC64, 0xBC65, + 0xBC66, 0xBC67, 0xBC68, 0xBC69, 0xBC6A, 0xBC6B, 0xBC6C, 0xBC6D, 0xBC6E, + 0xBC6F, 0xBC70, 0xBC71, 0xBC72, 0xBC73, 0xBC74, 0xBC75, 0xBC76, 0xBC77, + 0xBC78, 0xBC79, 0xBC7A, 0xBC7B, 0xBC7C, 0xBC7D, 0xBC7E, 0xBC7F, 0xBC80, + 0xBC81, 0xBC82, 0xBC83, 0xBC86, 0xBC87, 0xBC89, 0xBC8A, 0xBC8D, 0xBC8F, + 0xBC90, 0xBC91, 0xBC92, 0xBC93, 0xBC96, 0xBC98, 0xBC9B, 0xBC9C, 0xBC9D, + 0xBC9E, 0xBC9F, 0xBCA2, 0xBCA3, 0xBCA5, 0xBCA6, 0xBCA9, 0xBCAA, 0xBCAB, + 0xBCAC, 0xBCAD, 0xBCAE, 0xBCAF, 0xBCB2, 0xBCB6, 0xBCB7, 0xBCB8, 0xBCB9, + 0xBCBA, 0xBCBB, 0xBCBE, 0xBCBF, 0xBCC1, 0xBCC2, 0xBCC3, 0xBCC5, 0xBCC6, + 0xBCC7, 0xBCC8, 0xBCC9, 0xBCCA, 0xBCCB, 0xBCCC, 0xBCCE, 0xBCD2, 0xBCD3, + 0xBCD4, 0xBCD6, 0xBCD7, 0xBCD9, 0xBCDA, 0xBCDB, 0xBCDD, 0xBCDE, 0xBCDF, + 0xBCE0, 0xBCE1, 0xBCE2, 0xBCE3, 0xBCE4, 0xBCE5, 0xBCE6, 0xBCE7, 0xBCE8, + 0xBCE9, 0xBCEA, 0xBCEB, 0xBCEC, 0xBCED, 0xBCEE, 0xBCEF, 0xBCF0, 0xBCF1, + 0xBCF2, 0xBCF3, 0xBCF7, 0xBCF9, 0xBCFA, 0xBCFB, 0xBCFD, 0xBCFE, 0xBCFF, + 0xBD00, 0xBD01, 0xBD02, 0xBD03, 0xBD06, 0xBD08, 0xBD0A, 0xBD0B, 0xBD0C, + 0xBD0D, 0xBD0E, 0xBD0F, 0xBD11, 0xBD12, 0xBD13, 0xBD15, 0xBD16, 0xBD17, + 0xBD18, 0xBD19, 0xBD1A, 0xBD1B, 0xBD1C, 0xBD1D, 0xBD1E, 0xBD1F, 0xBD20, + 0xBD21, 0xBD22, 0xBD23, 0xBD25, 0xBD26, 0xBD27, 0xBD28, 0xBD29, 0xBD2A, + 0xBD2B, 0xBD2D, 0xBD2E, 0xBD2F, 0xBD30, 0xBD31, 0xBD32, 0xBD33, 0xBD34, + 0xBD35, 0xBD36, 0xBD37, 0xBD38, 0xBD39, 0xBD3A, 0xBD3B, 0xBD3C, 0xBD3D, + 0xBD3E, 0xBD3F, 0xBD41, 0xBD42, 0xBD43, 0xBD44, 0xBD45, 0xBD46, 0xBD47, + 0xBD4A, 0xBD4B, 0xBD4D, 0xBD4E, 0xBD4F, 0xBD51, 0xBD52, 0xBD53, 0xBD54, + 0xBD55, 0xBD56, 0xBD57, 0xBD5A, 0xBD5B, 0xBD5C, 0xBD5D, 0xBD5E, 0xBD5F, + 0xBD60, 0xBD61, 0xBD62, 0xBD63, 0xBD65, 0xBD66, 0xBD67, 0xBD69, 0xBD6A, + 0xBD6B, 0xBD6C, 0xBD6D, 0xBD6E, 0xBD6F, 0xBD70, 0xBD71, 0xBD72, 0xBD73, + 0xBD74, 0xBD75, 0xBD76, 0xBD77, 0xBD78, 0xBD79, 0xBD7A, 0xBD7B, 0xBD7C, + 0xBD7D, 0xBD7E, 0xBD7F, 0xBD82, 0xBD83, 0xBD85, 0xBD86, 0xBD8B, 0xBD8C, + 0xBD8D, 0xBD8E, 0xBD8F, 0xBD92, 0xBD94, 0xBD96, 0xBD97, 0xBD98, 0xBD9B, + 0xBD9D, 0xBD9E, 0xBD9F, 0xBDA0, 0xBDA1, 0xBDA2, 0xBDA3, 0xBDA5, 0xBDA6, + 0xBDA7, 0xBDA8, 0xBDA9, 0xBDAA, 0xBDAB, 0xBDAC, 0xBDAD, 0xBDAE, 0xBDAF, + 0xBDB1, 0xBDB2, 0xBDB3, 0xBDB4, 0xBDB5, 0xBDB6, 0xBDB7, 0xBDB9, 0xBDBA, + 0xBDBB, 0xBDBC, 0xBDBD, 0xBDBE, 0xBDBF, 0xBDC0, 0xBDC1, 0xBDC2, 0xBDC3, + 0xBDC4, 0xBDC5, 0xBDC6, 0xBDC7, 0xBDC8, 0xBDC9, 0xBDCA, 0xBDCB, 0xBDCC, + 0xBDCD, 0xBDCE, 0xBDCF, 0xBDD0, 0xBDD1, 0xBDD2, 0xBDD3, 0xBDD6, 0xBDD7, + 0xBDD9, 0xBDDA, 0xBDDB, 0xBDDD, 0xBDDE, 0xBDDF, 0xBDE0, 0xBDE1, 0xBDE2, + 0xBDE3, 0xBDE4, 0xBDE5, 0xBDE6, 0xBDE7, 0xBDE8, 0xBDEA, 0xBDEB, 0xBDEC, + 0xBDED, 0xBDEE, 0xBDEF, 0xBDF1, 0xBDF2, 0xBDF3, 0xBDF5, 0xBDF6, 0xBDF7, + 0xBDF9, 0xBDFA, 0xBDFB, 0xBDFC, 0xBDFD, 0xBDFE, 0xBDFF, 0xBE01, 0xBE02, + 0xBE04, 0xBE06, 0xBE07, 0xBE08, 0xBE09, 0xBE0A, 0xBE0B, 0xBE0E, 0xBE0F, + 0xBE11, 0xBE12, 0xBE13, 0xBE15, 0xBE16, 0xBE17, 0xBE18, 0xBE19, 0xBE1A, + 0xBE1B, 0xBE1E, 0xBE20, 0xBE21, 0xBE22, 0xBE23, 0xBE24, 0xBE25, 0xBE26, + 0xBE27, 0xBE28, 0xBE29, 0xBE2A, 0xBE2B, 0xBE2C, 0xBE2D, 0xBE2E, 0xBE2F, + 0xBE30, 0xBE31, 0xBE32, 0xBE33, 0xBE34, 0xBE35, 0xBE36, 0xBE37, 0xBE38, + 0xBE39, 0xBE3A, 0xBE3B, 0xBE3C, 0xBE3D, 0xBE3E, 0xBE3F, 0xBE40, 0xBE41, + 0xBE42, 0xBE43, 0xBE46, 0xBE47, 0xBE49, 0xBE4A, 0xBE4B, 0xBE4D, 0xBE4F, + 0xBE50, 0xBE51, 0xBE52, 0xBE53, 0xBE56, 0xBE58, 0xBE5C, 0xBE5D, 0xBE5E, + 0xBE5F, 0xBE62, 0xBE63, 0xBE65, 0xBE66, 0xBE67, 0xBE69, 0xBE6B, 0xBE6C, + 0xBE6D, 0xBE6E, 0xBE6F, 0xBE72, 0xBE76, 0xBE77, 0xBE78, 0xBE79, 0xBE7A, + 0xBE7E, 0xBE7F, 0xBE81, 0xBE82, 0xBE83, 0xBE85, 0xBE86, 0xBE87, 0xBE88, + 0xBE89, 0xBE8A, 0xBE8B, 0xBE8E, 0xBE92, 0xBE93, 0xBE94, 0xBE95, 0xBE96, + 0xBE97, 0xBE9A, 0xBE9B, 0xBE9C, 0xBE9D, 0xBE9E, 0xBE9F, 0xBEA0, 0xBEA1, + 0xBEA2, 0xBEA3, 0xBEA4, 0xBEA5, 0xBEA6, 0xBEA7, 0xBEA9, 0xBEAA, 0xBEAB, + 0xBEAC, 0xBEAD, 0xBEAE, 0xBEAF, 0xBEB0, 0xBEB1, 0xBEB2, 0xBEB3, 0xBEB4, + 0xBEB5, 0xBEB6, 0xBEB7, 0xBEB8, 0xBEB9, 0xBEBA, 0xBEBB, 0xBEBC, 0xBEBD, + 0xBEBE, 0xBEBF, 0xBEC0, 0xBEC1, 0xBEC2, 0xBEC3, 0xBEC4, 0xBEC5, 0xBEC6, + 0xBEC7, 0xBEC8, 0xBEC9, 0xBECA, 0xBECB, 0xBECC, 0xBECD, 0xBECE, 0xBECF, + 0xBED2, 0xBED3, 0xBED5, 0xBED6, 0xBED9, 0xBEDA, 0xBEDB, 0xBEDC, 0xBEDD, + 0xBEDE, 0xBEDF, 0xBEE1, 0xBEE2, 0xBEE6, 0xBEE7, 0xBEE8, 0xBEE9, 0xBEEA, + 0xBEEB, 0xBEED, 0xBEEE, 0xBEEF, 0xBEF0, 0xBEF1, 0xBEF2, 0xBEF3, 0xBEF4, + 0xBEF5, 0xBEF6, 0xBEF7, 0xBEF8, 0xBEF9, 0xBEFA, 0xBEFB, 0xBEFC, 0xBEFD, + 0xBEFE, 0xBEFF, 0xBF00, 0xBF02, 0xBF03, 0xBF04, 0xBF05, 0xBF06, 0xBF07, + 0xBF0A, 0xBF0B, 0xBF0C, 0xBF0D, 0xBF0E, 0xBF0F, 0xBF10, 0xBF11, 0xBF12, + 0xBF13, 0xBF14, 0xBF15, 0xBF16, 0xBF17, 0xBF1A, 0xBF1E, 0xBF1F, 0xBF20, + 0xBF21, 0xBF22, 0xBF23, 0xBF24, 0xBF25, 0xBF26, 0xBF27, 0xBF28, 0xBF29, + 0xBF2A, 0xBF2B, 0xBF2C, 0xBF2D, 0xBF2E, 0xBF2F, 0xBF30, 0xBF31, 0xBF32, + 0xBF33, 0xBF34, 0xBF35, 0xBF36, 0xBF37, 0xBF38, 0xBF39, 0xBF3A, 0xBF3B, + 0xBF3C, 0xBF3D, 0xBF3E, 0xBF3F, 0xBF42, 0xBF43, 0xBF45, 0xBF46, 0xBF47, + 0xBF49, 0xBF4A, 0xBF4B, 0xBF4C, 0xBF4D, 0xBF4E, 0xBF4F, 0xBF52, 0xBF53, + 0xBF54, 0xBF56, 0xBF57, 0xBF58, 0xBF59, 0xBF5A, 0xBF5B, 0xBF5C, 0xBF5D, + 0xBF5E, 0xBF5F, 0xBF60, 0xBF61, 0xBF62, 0xBF63, 0xBF64, 0xBF65, 0xBF66, + 0xBF67, 0xBF68, 0xBF69, 0xBF6A, 0xBF6B, 0xBF6C, 0xBF6D, 0xBF6E, 0xBF6F, + 0xBF70, 0xBF71, 0xBF72, 0xBF73, 0xBF74, 0xBF75, 0xBF76, 0xBF77, 0xBF78, + 0xBF79, 0xBF7A, 0xBF7B, 0xBF7C, 0xBF7D, 0xBF7E, 0xBF7F, 0xBF80, 0xBF81, + 0xBF82, 0xBF83, 0xBF84, 0xBF85, 0xBF86, 0xBF87, 0xBF88, 0xBF89, 0xBF8A, + 0xBF8B, 0xBF8C, 0xBF8D, 0xBF8E, 0xBF8F, 0xBF90, 0xBF91, 0xBF92, 0xBF93, + 0xBF95, 0xBF96, 0xBF97, 0xBF98, 0xBF99, 0xBF9A, 0xBF9B, 0xBF9C, 0xBF9D, + 0xBF9E, 0xBF9F, 0xBFA0, 0xBFA1, 0xBFA2, 0xBFA3, 0xBFA4, 0xBFA5, 0xBFA6, + 0xBFA7, 0xBFA8, 0xBFA9, 0xBFAA, 0xBFAB, 0xBFAC, 0xBFAD, 0xBFAE, 0xBFAF, + 0xBFB1, 0xBFB2, 0xBFB3, 0xBFB4, 0xBFB5, 0xBFB6, 0xBFB7, 0xBFB8, 0xBFB9, + 0xBFBA, 0xBFBB, 0xBFBC, 0xBFBD, 0xBFBE, 0xBFBF, 0xBFC0, 0xBFC1, 0xBFC2, + 0xBFC3, 0xBFC4, 0xBFC6, 0xBFC7, 0xBFC8, 0xBFC9, 0xBFCA, 0xBFCB, 0xBFCE, + 0xBFCF, 0xBFD1, 0xBFD2, 0xBFD3, 0xBFD5, 0xBFD6, 0xBFD7, 0xBFD8, 0xBFD9, + 0xBFDA, 0xBFDB, 0xBFDD, 0xBFDE, 0xBFE0, 0xBFE2, 0xBFE3, 0xBFE4, 0xBFE5, + 0xBFE6, 0xBFE7, 0xBFE8, 0xBFE9, 0xBFEA, 0xBFEB, 0xBFEC, 0xBFED, 0xBFEE, + 0xBFEF, 0xBFF0, 0xBFF1, 0xBFF2, 0xBFF3, 0xBFF4, 0xBFF5, 0xBFF6, 0xBFF7, + 0xBFF8, 0xBFF9, 0xBFFA, 0xBFFB, 0xBFFC, 0xBFFD, 0xBFFE, 0xBFFF, 0xC000, + 0xC001, 0xC002, 0xC003, 0xC004, 0xC005, 0xC006, 0xC007, 0xC008, 0xC009, + 0xC00A, 0xC00B, 0xC00C, 0xC00D, 0xC00E, 0xC00F, 0xC010, 0xC011, 0xC012, + 0xC013, 0xC014, 0xC015, 0xC016, 0xC017, 0xC018, 0xC019, 0xC01A, 0xC01B, + 0xC01C, 0xC01D, 0xC01E, 0xC01F, 0xC020, 0xC021, 0xC022, 0xC023, 0xC024, + 0xC025, 0xC026, 0xC027, 0xC028, 0xC029, 0xC02A, 0xC02B, 0xC02C, 0xC02D, + 0xC02E, 0xC02F, 0xC030, 0xC031, 0xC032, 0xC033, 0xC034, 0xC035, 0xC036, + 0xC037, 0xC038, 0xC039, 0xC03A, 0xC03B, 0xC03D, 0xC03E, 0xC03F, 0xC040, + 0xC041, 0xC042, 0xC043, 0xC044, 0xC045, 0xC046, 0xC047, 0xC048, 0xC049, + 0xC04A, 0xC04B, 0xC04C, 0xC04D, 0xC04E, 0xC04F, 0xC050, 0xC052, 0xC053, + 0xC054, 0xC055, 0xC056, 0xC057, 0xC059, 0xC05A, 0xC05B, 0xC05D, 0xC05E, + 0xC05F, 0xC061, 0xC062, 0xC063, 0xC064, 0xC065, 0xC066, 0xC067, 0xC06A, + 0xC06B, 0xC06C, 0xC06D, 0xC06E, 0xC06F, 0xC070, 0xC071, 0xC072, 0xC073, + 0xC074, 0xC075, 0xC076, 0xC077, 0xC078, 0xC079, 0xC07A, 0xC07B, 0xC07C, + 0xC07D, 0xC07E, 0xC07F, 0xC080, 0xC081, 0xC082, 0xC083, 0xC084, 0xC085, + 0xC086, 0xC087, 0xC088, 0xC089, 0xC08A, 0xC08B, 0xC08C, 0xC08D, 0xC08E, + 0xC08F, 0xC092, 0xC093, 0xC095, 0xC096, 0xC097, 0xC099, 0xC09A, 0xC09B, + 0xC09C, 0xC09D, 0xC09E, 0xC09F, 0xC0A2, 0xC0A4, 0xC0A6, 0xC0A7, 0xC0A8, + 0xC0A9, 0xC0AA, 0xC0AB, 0xC0AE, 0xC0B1, 0xC0B2, 0xC0B7, 0xC0B8, 0xC0B9, + 0xC0BA, 0xC0BB, 0xC0BE, 0xC0C2, 0xC0C3, 0xC0C4, 0xC0C6, 0xC0C7, 0xC0CA, + 0xC0CB, 0xC0CD, 0xC0CE, 0xC0CF, 0xC0D1, 0xC0D2, 0xC0D3, 0xC0D4, 0xC0D5, + 0xC0D6, 0xC0D7, 0xC0DA, 0xC0DE, 0xC0DF, 0xC0E0, 0xC0E1, 0xC0E2, 0xC0E3, + 0xC0E6, 0xC0E7, 0xC0E9, 0xC0EA, 0xC0EB, 0xC0ED, 0xC0EE, 0xC0EF, 0xC0F0, + 0xC0F1, 0xC0F2, 0xC0F3, 0xC0F6, 0xC0F8, 0xC0FA, 0xC0FB, 0xC0FC, 0xC0FD, + 0xC0FE, 0xC0FF, 0xC101, 0xC102, 0xC103, 0xC105, 0xC106, 0xC107, 0xC109, + 0xC10A, 0xC10B, 0xC10C, 0xC10D, 0xC10E, 0xC10F, 0xC111, 0xC112, 0xC113, + 0xC114, 0xC116, 0xC117, 0xC118, 0xC119, 0xC11A, 0xC11B, 0xC121, 0xC122, + 0xC125, 0xC128, 0xC129, 0xC12A, 0xC12B, 0xC12E, 0xC132, 0xC133, 0xC134, + 0xC135, 0xC137, 0xC13A, 0xC13B, 0xC13D, 0xC13E, 0xC13F, 0xC141, 0xC142, + 0xC143, 0xC144, 0xC145, 0xC146, 0xC147, 0xC14A, 0xC14E, 0xC14F, 0xC150, + 0xC151, 0xC152, 0xC153, 0xC156, 0xC157, 0xC159, 0xC15A, 0xC15B, 0xC15D, + 0xC15E, 0xC15F, 0xC160, 0xC161, 0xC162, 0xC163, 0xC166, 0xC16A, 0xC16B, + 0xC16C, 0xC16D, 0xC16E, 0xC16F, 0xC171, 0xC172, 0xC173, 0xC175, 0xC176, + 0xC177, 0xC179, 0xC17A, 0xC17B, 0xC17C, 0xC17D, 0xC17E, 0xC17F, 0xC180, + 0xC181, 0xC182, 0xC183, 0xC184, 0xC186, 0xC187, 0xC188, 0xC189, 0xC18A, + 0xC18B, 0xC18F, 0xC191, 0xC192, 0xC193, 0xC195, 0xC197, 0xC198, 0xC199, + 0xC19A, 0xC19B, 0xC19E, 0xC1A0, 0xC1A2, 0xC1A3, 0xC1A4, 0xC1A6, 0xC1A7, + 0xC1AA, 0xC1AB, 0xC1AD, 0xC1AE, 0xC1AF, 0xC1B1, 0xC1B2, 0xC1B3, 0xC1B4, + 0xC1B5, 0xC1B6, 0xC1B7, 0xC1B8, 0xC1B9, 0xC1BA, 0xC1BB, 0xC1BC, 0xC1BE, + 0xC1BF, 0xC1C0, 0xC1C1, 0xC1C2, 0xC1C3, 0xC1C5, 0xC1C6, 0xC1C7, 0xC1C9, + 0xC1CA, 0xC1CB, 0xC1CD, 0xC1CE, 0xC1CF, 0xC1D0, 0xC1D1, 0xC1D2, 0xC1D3, + 0xC1D5, 0xC1D6, 0xC1D9, 0xC1DA, 0xC1DB, 0xC1DC, 0xC1DD, 0xC1DE, 0xC1DF, + 0xC1E1, 0xC1E2, 0xC1E3, 0xC1E5, 0xC1E6, 0xC1E7, 0xC1E9, 0xC1EA, 0xC1EB, + 0xC1EC, 0xC1ED, 0xC1EE, 0xC1EF, 0xC1F2, 0xC1F4, 0xC1F5, 0xC1F6, 0xC1F7, + 0xC1F8, 0xC1F9, 0xC1FA, 0xC1FB, 0xC1FE, 0xC1FF, 0xC201, 0xC202, 0xC203, + 0xC205, 0xC206, 0xC207, 0xC208, 0xC209, 0xC20A, 0xC20B, 0xC20E, 0xC210, + 0xC212, 0xC213, 0xC214, 0xC215, 0xC216, 0xC217, 0xC21A, 0xC21B, 0xC21D, + 0xC21E, 0xC221, 0xC222, 0xC223, 0xC224, 0xC225, 0xC226, 0xC227, 0xC22A, + 0xC22C, 0xC22E, 0xC230, 0xC233, 0xC235, 0xC236, 0xC237, 0xC238, 0xC239, + 0xC23A, 0xC23B, 0xC23C, 0xC23D, 0xC23E, 0xC23F, 0xC240, 0xC241, 0xC242, + 0xC243, 0xC244, 0xC245, 0xC246, 0xC247, 0xC249, 0xC24A, 0xC24B, 0xC24C, + 0xC24D, 0xC24E, 0xC24F, 0xC252, 0xC253, 0xC255, 0xC256, 0xC257, 0xC259, + 0xC25A, 0xC25B, 0xC25C, 0xC25D, 0xC25E, 0xC25F, 0xC261, 0xC262, 0xC263, + 0xC264, 0xC266, 0xC267, 0xC268, 0xC269, 0xC26A, 0xC26B, 0xC26E, 0xC26F, + 0xC271, 0xC272, 0xC273, 0xC275, 0xC276, 0xC277, 0xC278, 0xC279, 0xC27A, + 0xC27B, 0xC27E, 0xC280, 0xC282, 0xC283, 0xC284, 0xC285, 0xC286, 0xC287, + 0xC28A, 0xC28B, 0xC28C, 0xC28D, 0xC28E, 0xC28F, 0xC291, 0xC292, 0xC293, + 0xC294, 0xC295, 0xC296, 0xC297, 0xC299, 0xC29A, 0xC29C, 0xC29E, 0xC29F, + 0xC2A0, 0xC2A1, 0xC2A2, 0xC2A3, 0xC2A6, 0xC2A7, 0xC2A9, 0xC2AA, 0xC2AB, + 0xC2AE, 0xC2AF, 0xC2B0, 0xC2B1, 0xC2B2, 0xC2B3, 0xC2B6, 0xC2B8, 0xC2BA, + 0xC2BB, 0xC2BC, 0xC2BD, 0xC2BE, 0xC2BF, 0xC2C0, 0xC2C1, 0xC2C2, 0xC2C3, + 0xC2C4, 0xC2C5, 0xC2C6, 0xC2C7, 0xC2C8, 0xC2C9, 0xC2CA, 0xC2CB, 0xC2CC, + 0xC2CD, 0xC2CE, 0xC2CF, 0xC2D0, 0xC2D1, 0xC2D2, 0xC2D3, 0xC2D4, 0xC2D5, + 0xC2D6, 0xC2D7, 0xC2D8, 0xC2D9, 0xC2DA, 0xC2DB, 0xC2DE, 0xC2DF, 0xC2E1, + 0xC2E2, 0xC2E5, 0xC2E6, 0xC2E7, 0xC2E8, 0xC2E9, 0xC2EA, 0xC2EE, 0xC2F0, + 0xC2F2, 0xC2F3, 0xC2F4, 0xC2F5, 0xC2F7, 0xC2FA, 0xC2FD, 0xC2FE, 0xC2FF, + 0xC301, 0xC302, 0xC303, 0xC304, 0xC305, 0xC306, 0xC307, 0xC30A, 0xC30B, + 0xC30E, 0xC30F, 0xC310, 0xC311, 0xC312, 0xC316, 0xC317, 0xC319, 0xC31A, + 0xC31B, 0xC31D, 0xC31E, 0xC31F, 0xC320, 0xC321, 0xC322, 0xC323, 0xC326, + 0xC327, 0xC32A, 0xC32B, 0xC32C, 0xC32D, 0xC32E, 0xC32F, 0xC330, 0xC331, + 0xC332, 0xC333, 0xC334, 0xC335, 0xC336, 0xC337, 0xC338, 0xC339, 0xC33A, + 0xC33B, 0xC33C, 0xC33D, 0xC33E, 0xC33F, 0xC340, 0xC341, 0xC342, 0xC343, + 0xC344, 0xC346, 0xC347, 0xC348, 0xC349, 0xC34A, 0xC34B, 0xC34C, 0xC34D, + 0xC34E, 0xC34F, 0xC350, 0xC351, 0xC352, 0xC353, 0xC354, 0xC355, 0xC356, + 0xC357, 0xC358, 0xC359, 0xC35A, 0xC35B, 0xC35C, 0xC35D, 0xC35E, 0xC35F, + 0xC360, 0xC361, 0xC362, 0xC363, 0xC364, 0xC365, 0xC366, 0xC367, 0xC36A, + 0xC36B, 0xC36D, 0xC36E, 0xC36F, 0xC371, 0xC373, 0xC374, 0xC375, 0xC376, + 0xC377, 0xC37A, 0xC37B, 0xC37E, 0xC37F, 0xC380, 0xC381, 0xC382, 0xC383, + 0xC385, 0xC386, 0xC387, 0xC389, 0xC38A, 0xC38B, 0xC38D, 0xC38E, 0xC38F, + 0xC390, 0xC391, 0xC392, 0xC393, 0xC394, 0xC395, 0xC396, 0xC397, 0xC398, + 0xC399, 0xC39A, 0xC39B, 0xC39C, 0xC39D, 0xC39E, 0xC39F, 0xC3A0, 0xC3A1, + 0xC3A2, 0xC3A3, 0xC3A4, 0xC3A5, 0xC3A6, 0xC3A7, 0xC3A8, 0xC3A9, 0xC3AA, + 0xC3AB, 0xC3AC, 0xC3AD, 0xC3AE, 0xC3AF, 0xC3B0, 0xC3B1, 0xC3B2, 0xC3B3, + 0xC3B4, 0xC3B5, 0xC3B6, 0xC3B7, 0xC3B8, 0xC3B9, 0xC3BA, 0xC3BB, 0xC3BC, + 0xC3BD, 0xC3BE, 0xC3BF, 0xC3C1, 0xC3C2, 0xC3C3, 0xC3C4, 0xC3C5, 0xC3C6, + 0xC3C7, 0xC3C8, 0xC3C9, 0xC3CA, 0xC3CB, 0xC3CC, 0xC3CD, 0xC3CE, 0xC3CF, + 0xC3D0, 0xC3D1, 0xC3D2, 0xC3D3, 0xC3D4, 0xC3D5, 0xC3D6, 0xC3D7, 0xC3DA, + 0xC3DB, 0xC3DD, 0xC3DE, 0xC3E1, 0xC3E3, 0xC3E4, 0xC3E5, 0xC3E6, 0xC3E7, + 0xC3EA, 0xC3EB, 0xC3EC, 0xC3EE, 0xC3EF, 0xC3F0, 0xC3F1, 0xC3F2, 0xC3F3, + 0xC3F6, 0xC3F7, 0xC3F9, 0xC3FA, 0xC3FB, 0xC3FC, 0xC3FD, 0xC3FE, 0xC3FF, + 0xC400, 0xC401, 0xC402, 0xC403, 0xC404, 0xC405, 0xC406, 0xC407, 0xC409, + 0xC40A, 0xC40B, 0xC40C, 0xC40D, 0xC40E, 0xC40F, 0xC411, 0xC412, 0xC413, + 0xC414, 0xC415, 0xC416, 0xC417, 0xC418, 0xC419, 0xC41A, 0xC41B, 0xC41C, + 0xC41D, 0xC41E, 0xC41F, 0xC420, 0xC421, 0xC422, 0xC423, 0xC425, 0xC426, + 0xC427, 0xC428, 0xC429, 0xC42A, 0xC42B, 0xC42D, 0xC42E, 0xC42F, 0xC431, + 0xC432, 0xC433, 0xC435, 0xC436, 0xC437, 0xC438, 0xC439, 0xC43A, 0xC43B, + 0xC43E, 0xC43F, 0xC440, 0xC441, 0xC442, 0xC443, 0xC444, 0xC445, 0xC446, + 0xC447, 0xC449, 0xC44A, 0xC44B, 0xC44C, 0xC44D, 0xC44E, 0xC44F, 0xC450, + 0xC451, 0xC452, 0xC453, 0xC454, 0xC455, 0xC456, 0xC457, 0xC458, 0xC459, + 0xC45A, 0xC45B, 0xC45C, 0xC45D, 0xC45E, 0xC45F, 0xC460, 0xC461, 0xC462, + 0xC463, 0xC466, 0xC467, 0xC469, 0xC46A, 0xC46B, 0xC46D, 0xC46E, 0xC46F, + 0xC470, 0xC471, 0xC472, 0xC473, 0xC476, 0xC477, 0xC478, 0xC47A, 0xC47B, + 0xC47C, 0xC47D, 0xC47E, 0xC47F, 0xC481, 0xC482, 0xC483, 0xC484, 0xC485, + 0xC486, 0xC487, 0xC488, 0xC489, 0xC48A, 0xC48B, 0xC48C, 0xC48D, 0xC48E, + 0xC48F, 0xC490, 0xC491, 0xC492, 0xC493, 0xC495, 0xC496, 0xC497, 0xC498, + 0xC499, 0xC49A, 0xC49B, 0xC49D, 0xC49E, 0xC49F, 0xC4A0, 0xC4A1, 0xC4A2, + 0xC4A3, 0xC4A4, 0xC4A5, 0xC4A6, 0xC4A7, 0xC4A8, 0xC4A9, 0xC4AA, 0xC4AB, + 0xC4AC, 0xC4AD, 0xC4AE, 0xC4AF, 0xC4B0, 0xC4B1, 0xC4B2, 0xC4B3, 0xC4B4, + 0xC4B5, 0xC4B6, 0xC4B7, 0xC4B9, 0xC4BA, 0xC4BB, 0xC4BD, 0xC4BE, 0xC4BF, + 0xC4C0, 0xC4C1, 0xC4C2, 0xC4C3, 0xC4C4, 0xC4C5, 0xC4C6, 0xC4C7, 0xC4C8, + 0xC4C9, 0xC4CA, 0xC4CB, 0xC4CC, 0xC4CD, 0xC4CE, 0xC4CF, 0xC4D0, 0xC4D1, + 0xC4D2, 0xC4D3, 0xC4D4, 0xC4D5, 0xC4D6, 0xC4D7, 0xC4D8, 0xC4D9, 0xC4DA, + 0xC4DB, 0xC4DC, 0xC4DD, 0xC4DE, 0xC4DF, 0xC4E0, 0xC4E1, 0xC4E2, 0xC4E3, + 0xC4E4, 0xC4E5, 0xC4E6, 0xC4E7, 0xC4E8, 0xC4EA, 0xC4EB, 0xC4EC, 0xC4ED, + 0xC4EE, 0xC4EF, 0xC4F2, 0xC4F3, 0xC4F5, 0xC4F6, 0xC4F7, 0xC4F9, 0xC4FB, + 0xC4FC, 0xC4FD, 0xC4FE, 0xC502, 0xC503, 0xC504, 0xC505, 0xC506, 0xC507, + 0xC508, 0xC509, 0xC50A, 0xC50B, 0xC50D, 0xC50E, 0xC50F, 0xC511, 0xC512, + 0xC513, 0xC515, 0xC516, 0xC517, 0xC518, 0xC519, 0xC51A, 0xC51B, 0xC51D, + 0xC51E, 0xC51F, 0xC520, 0xC521, 0xC522, 0xC523, 0xC524, 0xC525, 0xC526, + 0xC527, 0xC52A, 0xC52B, 0xC52D, 0xC52E, 0xC52F, 0xC531, 0xC532, 0xC533, + 0xC534, 0xC535, 0xC536, 0xC537, 0xC53A, 0xC53C, 0xC53E, 0xC53F, 0xC540, + 0xC541, 0xC542, 0xC543, 0xC546, 0xC547, 0xC54B, 0xC54F, 0xC550, 0xC551, + 0xC552, 0xC556, 0xC55A, 0xC55B, 0xC55C, 0xC55F, 0xC562, 0xC563, 0xC565, + 0xC566, 0xC567, 0xC569, 0xC56A, 0xC56B, 0xC56C, 0xC56D, 0xC56E, 0xC56F, + 0xC572, 0xC576, 0xC577, 0xC578, 0xC579, 0xC57A, 0xC57B, 0xC57E, 0xC57F, + 0xC581, 0xC582, 0xC583, 0xC585, 0xC586, 0xC588, 0xC589, 0xC58A, 0xC58B, + 0xC58E, 0xC590, 0xC592, 0xC593, 0xC594, 0xC596, 0xC599, 0xC59A, 0xC59B, + 0xC59D, 0xC59E, 0xC59F, 0xC5A1, 0xC5A2, 0xC5A3, 0xC5A4, 0xC5A5, 0xC5A6, + 0xC5A7, 0xC5A8, 0xC5AA, 0xC5AB, 0xC5AC, 0xC5AD, 0xC5AE, 0xC5AF, 0xC5B0, + 0xC5B1, 0xC5B2, 0xC5B3, 0xC5B6, 0xC5B7, 0xC5BA, 0xC5BF, 0xC5C0, 0xC5C1, + 0xC5C2, 0xC5C3, 0xC5CB, 0xC5CD, 0xC5CF, 0xC5D2, 0xC5D3, 0xC5D5, 0xC5D6, + 0xC5D7, 0xC5D9, 0xC5DA, 0xC5DB, 0xC5DC, 0xC5DD, 0xC5DE, 0xC5DF, 0xC5E2, + 0xC5E4, 0xC5E6, 0xC5E7, 0xC5E8, 0xC5E9, 0xC5EA, 0xC5EB, 0xC5EF, 0xC5F1, + 0xC5F2, 0xC5F3, 0xC5F5, 0xC5F8, 0xC5F9, 0xC5FA, 0xC5FB, 0xC602, 0xC603, + 0xC604, 0xC609, 0xC60A, 0xC60B, 0xC60D, 0xC60E, 0xC60F, 0xC611, 0xC612, + 0xC613, 0xC614, 0xC615, 0xC616, 0xC617, 0xC61A, 0xC61D, 0xC61E, 0xC61F, + 0xC620, 0xC621, 0xC622, 0xC623, 0xC626, 0xC627, 0xC629, 0xC62A, 0xC62B, + 0xC62F, 0xC631, 0xC632, 0xC636, 0xC638, 0xC63A, 0xC63C, 0xC63D, 0xC63E, + 0xC63F, 0xC642, 0xC643, 0xC645, 0xC646, 0xC647, 0xC649, 0xC64A, 0xC64B, + 0xC64C, 0xC64D, 0xC64E, 0xC64F, 0xC652, 0xC656, 0xC657, 0xC658, 0xC659, + 0xC65A, 0xC65B, 0xC65E, 0xC65F, 0xC661, 0xC662, 0xC663, 0xC664, 0xC665, + 0xC666, 0xC667, 0xC668, 0xC669, 0xC66A, 0xC66B, 0xC66D, 0xC66E, 0xC670, + 0xC672, 0xC673, 0xC674, 0xC675, 0xC676, 0xC677, 0xC67A, 0xC67B, 0xC67D, + 0xC67E, 0xC67F, 0xC681, 0xC682, 0xC683, 0xC684, 0xC685, 0xC686, 0xC687, + 0xC68A, 0xC68C, 0xC68E, 0xC68F, 0xC690, 0xC691, 0xC692, 0xC693, 0xC696, + 0xC697, 0xC699, 0xC69A, 0xC69B, 0xC69D, 0xC69E, 0xC69F, 0xC6A0, 0xC6A1, + 0xC6A2, 0xC6A3, 0xC6A6, 0xC6A8, 0xC6AA, 0xC6AB, 0xC6AC, 0xC6AD, 0xC6AE, + 0xC6AF, 0xC6B2, 0xC6B3, 0xC6B5, 0xC6B6, 0xC6B7, 0xC6BB, 0xC6BC, 0xC6BD, + 0xC6BE, 0xC6BF, 0xC6C2, 0xC6C4, 0xC6C6, 0xC6C7, 0xC6C8, 0xC6C9, 0xC6CA, + 0xC6CB, 0xC6CE, 0xC6CF, 0xC6D1, 0xC6D2, 0xC6D3, 0xC6D5, 0xC6D6, 0xC6D7, + 0xC6D8, 0xC6D9, 0xC6DA, 0xC6DB, 0xC6DE, 0xC6DF, 0xC6E2, 0xC6E3, 0xC6E4, + 0xC6E5, 0xC6E6, 0xC6E7, 0xC6EA, 0xC6EB, 0xC6ED, 0xC6EE, 0xC6EF, 0xC6F1, + 0xC6F2, 0xC6F3, 0xC6F4, 0xC6F5, 0xC6F6, 0xC6F7, 0xC6FA, 0xC6FB, 0xC6FC, + 0xC6FE, 0xC6FF, 0xC700, 0xC701, 0xC702, 0xC703, 0xC706, 0xC707, 0xC709, + 0xC70A, 0xC70B, 0xC70D, 0xC70E, 0xC70F, 0xC710, 0xC711, 0xC712, 0xC713, + 0xC716, 0xC718, 0xC71A, 0xC71B, 0xC71C, 0xC71D, 0xC71E, 0xC71F, 0xC722, + 0xC723, 0xC725, 0xC726, 0xC727, 0xC729, 0xC72A, 0xC72B, 0xC72C, 0xC72D, + 0xC72E, 0xC72F, 0xC732, 0xC734, 0xC736, 0xC738, 0xC739, 0xC73A, 0xC73B, + 0xC73E, 0xC73F, 0xC741, 0xC742, 0xC743, 0xC745, 0xC746, 0xC747, 0xC748, + 0xC749, 0xC74B, 0xC74E, 0xC750, 0xC759, 0xC75A, 0xC75B, 0xC75D, 0xC75E, + 0xC75F, 0xC761, 0xC762, 0xC763, 0xC764, 0xC765, 0xC766, 0xC767, 0xC769, + 0xC76A, 0xC76C, 0xC76D, 0xC76E, 0xC76F, 0xC770, 0xC771, 0xC772, 0xC773, + 0xC776, 0xC777, 0xC779, 0xC77A, 0xC77B, 0xC77F, 0xC780, 0xC781, 0xC782, + 0xC786, 0xC78B, 0xC78C, 0xC78D, 0xC78F, 0xC792, 0xC793, 0xC795, 0xC799, + 0xC79B, 0xC79C, 0xC79D, 0xC79E, 0xC79F, 0xC7A2, 0xC7A7, 0xC7A8, 0xC7A9, + 0xC7AA, 0xC7AB, 0xC7AE, 0xC7AF, 0xC7B1, 0xC7B2, 0xC7B3, 0xC7B5, 0xC7B6, + 0xC7B7, 0xC7B8, 0xC7B9, 0xC7BA, 0xC7BB, 0xC7BE, 0xC7C2, 0xC7C3, 0xC7C4, + 0xC7C5, 0xC7C6, 0xC7C7, 0xC7CA, 0xC7CB, 0xC7CD, 0xC7CF, 0xC7D1, 0xC7D2, + 0xC7D3, 0xC7D4, 0xC7D5, 0xC7D6, 0xC7D7, 0xC7D9, 0xC7DA, 0xC7DB, 0xC7DC, + 0xC7DE, 0xC7DF, 0xC7E0, 0xC7E1, 0xC7E2, 0xC7E3, 0xC7E5, 0xC7E6, 0xC7E7, + 0xC7E9, 0xC7EA, 0xC7EB, 0xC7ED, 0xC7EE, 0xC7EF, 0xC7F0, 0xC7F1, 0xC7F2, + 0xC7F3, 0xC7F4, 0xC7F5, 0xC7F6, 0xC7F7, 0xC7F8, 0xC7F9, 0xC7FA, 0xC7FB, + 0xC7FC, 0xC7FD, 0xC7FE, 0xC7FF, 0xC802, 0xC803, 0xC805, 0xC806, 0xC807, + 0xC809, 0xC80B, 0xC80C, 0xC80D, 0xC80E, 0xC80F, 0xC812, 0xC814, 0xC817, + 0xC818, 0xC819, 0xC81A, 0xC81B, 0xC81E, 0xC81F, 0xC821, 0xC822, 0xC823, + 0xC825, 0xC826, 0xC827, 0xC828, 0xC829, 0xC82A, 0xC82B, 0xC82E, 0xC830, + 0xC832, 0xC833, 0xC834, 0xC835, 0xC836, 0xC837, 0xC839, 0xC83A, 0xC83B, + 0xC83D, 0xC83E, 0xC83F, 0xC841, 0xC842, 0xC843, 0xC844, 0xC845, 0xC846, + 0xC847, 0xC84A, 0xC84B, 0xC84E, 0xC84F, 0xC850, 0xC851, 0xC852, 0xC853, + 0xC855, 0xC856, 0xC857, 0xC858, 0xC859, 0xC85A, 0xC85B, 0xC85C, 0xC85D, + 0xC85E, 0xC85F, 0xC860, 0xC861, 0xC862, 0xC863, 0xC864, 0xC865, 0xC866, + 0xC867, 0xC868, 0xC869, 0xC86A, 0xC86B, 0xC86C, 0xC86D, 0xC86E, 0xC86F, + 0xC872, 0xC873, 0xC875, 0xC876, 0xC877, 0xC879, 0xC87B, 0xC87C, 0xC87D, + 0xC87E, 0xC87F, 0xC882, 0xC884, 0xC888, 0xC889, 0xC88A, 0xC88E, 0xC88F, + 0xC890, 0xC891, 0xC892, 0xC893, 0xC895, 0xC896, 0xC897, 0xC898, 0xC899, + 0xC89A, 0xC89B, 0xC89C, 0xC89E, 0xC8A0, 0xC8A2, 0xC8A3, 0xC8A4, 0xC8A5, + 0xC8A6, 0xC8A7, 0xC8A9, 0xC8AA, 0xC8AB, 0xC8AC, 0xC8AD, 0xC8AE, 0xC8AF, + 0xC8B0, 0xC8B1, 0xC8B2, 0xC8B3, 0xC8B4, 0xC8B5, 0xC8B6, 0xC8B7, 0xC8B8, + 0xC8B9, 0xC8BA, 0xC8BB, 0xC8BE, 0xC8BF, 0xC8C0, 0xC8C1, 0xC8C2, 0xC8C3, + 0xC8C5, 0xC8C6, 0xC8C7, 0xC8C9, 0xC8CA, 0xC8CB, 0xC8CD, 0xC8CE, 0xC8CF, + 0xC8D0, 0xC8D1, 0xC8D2, 0xC8D3, 0xC8D6, 0xC8D8, 0xC8DA, 0xC8DB, 0xC8DC, + 0xC8DD, 0xC8DE, 0xC8DF, 0xC8E2, 0xC8E3, 0xC8E5, 0xC8E6, 0xC8E7, 0xC8E8, + 0xC8E9, 0xC8EA, 0xC8EB, 0xC8EC, 0xC8ED, 0xC8EE, 0xC8EF, 0xC8F0, 0xC8F1, + 0xC8F2, 0xC8F3, 0xC8F4, 0xC8F6, 0xC8F7, 0xC8F8, 0xC8F9, 0xC8FA, 0xC8FB, + 0xC8FE, 0xC8FF, 0xC901, 0xC902, 0xC903, 0xC907, 0xC908, 0xC909, 0xC90A, + 0xC90B, 0xC90E, 0xC910, 0xC912, 0xC913, 0xC914, 0xC915, 0xC916, 0xC917, + 0xC919, 0xC91A, 0xC91B, 0xC91C, 0xC91D, 0xC91E, 0xC91F, 0xC920, 0xC921, + 0xC922, 0xC923, 0xC924, 0xC925, 0xC926, 0xC927, 0xC928, 0xC929, 0xC92A, + 0xC92B, 0xC92D, 0xC92E, 0xC92F, 0xC930, 0xC931, 0xC932, 0xC933, 0xC935, + 0xC936, 0xC937, 0xC938, 0xC939, 0xC93A, 0xC93B, 0xC93C, 0xC93D, 0xC93E, + 0xC93F, 0xC940, 0xC941, 0xC942, 0xC943, 0xC944, 0xC945, 0xC946, 0xC947, + 0xC948, 0xC949, 0xC94A, 0xC94B, 0xC94C, 0xC94D, 0xC94E, 0xC94F, 0xC952, + 0xC953, 0xC955, 0xC956, 0xC957, 0xC959, 0xC95A, 0xC95B, 0xC95C, 0xC95D, + 0xC95E, 0xC95F, 0xC962, 0xC964, 0xC965, 0xC966, 0xC967, 0xC968, 0xC969, + 0xC96A, 0xC96B, 0xC96D, 0xC96E, 0xC96F, 0xC971, 0xC972, 0xC973, 0xC975, + 0xC976, 0xC977, 0xC978, 0xC979, 0xC97A, 0xC97B, 0xC97D, 0xC97E, 0xC97F, + 0xC980, 0xC981, 0xC982, 0xC983, 0xC984, 0xC985, 0xC986, 0xC987, 0xC98A, + 0xC98B, 0xC98D, 0xC98E, 0xC98F, 0xC991, 0xC992, 0xC993, 0xC994, 0xC995, + 0xC996, 0xC997, 0xC99A, 0xC99C, 0xC99E, 0xC99F, 0xC9A0, 0xC9A1, 0xC9A2, + 0xC9A3, 0xC9A4, 0xC9A5, 0xC9A6, 0xC9A7, 0xC9A8, 0xC9A9, 0xC9AA, 0xC9AB, + 0xC9AC, 0xC9AD, 0xC9AE, 0xC9AF, 0xC9B0, 0xC9B1, 0xC9B2, 0xC9B3, 0xC9B4, + 0xC9B5, 0xC9B6, 0xC9B7, 0xC9B8, 0xC9B9, 0xC9BA, 0xC9BB, 0xC9BC, 0xC9BD, + 0xC9BE, 0xC9BF, 0xC9C2, 0xC9C3, 0xC9C5, 0xC9C6, 0xC9C9, 0xC9CB, 0xC9CC, + 0xC9CD, 0xC9CE, 0xC9CF, 0xC9D2, 0xC9D4, 0xC9D7, 0xC9D8, 0xC9DB, 0xC9DE, + 0xC9DF, 0xC9E1, 0xC9E3, 0xC9E5, 0xC9E6, 0xC9E8, 0xC9E9, 0xC9EA, 0xC9EB, + 0xC9EE, 0xC9F2, 0xC9F3, 0xC9F4, 0xC9F5, 0xC9F6, 0xC9F7, 0xC9FA, 0xC9FB, + 0xC9FD, 0xC9FE, 0xC9FF, 0xCA01, 0xCA02, 0xCA03, 0xCA04, 0xCA05, 0xCA06, + 0xCA07, 0xCA0A, 0xCA0E, 0xCA0F, 0xCA10, 0xCA11, 0xCA12, 0xCA13, 0xCA15, + 0xCA16, 0xCA17, 0xCA19, 0xCA1A, 0xCA1B, 0xCA1C, 0xCA1D, 0xCA1E, 0xCA1F, + 0xCA20, 0xCA21, 0xCA22, 0xCA23, 0xCA24, 0xCA25, 0xCA26, 0xCA27, 0xCA28, + 0xCA2A, 0xCA2B, 0xCA2C, 0xCA2D, 0xCA2E, 0xCA2F, 0xCA30, 0xCA31, 0xCA32, + 0xCA33, 0xCA34, 0xCA35, 0xCA36, 0xCA37, 0xCA38, 0xCA39, 0xCA3A, 0xCA3B, + 0xCA3C, 0xCA3D, 0xCA3E, 0xCA3F, 0xCA40, 0xCA41, 0xCA42, 0xCA43, 0xCA44, + 0xCA45, 0xCA46, 0xCA47, 0xCA48, 0xCA49, 0xCA4A, 0xCA4B, 0xCA4E, 0xCA4F, + 0xCA51, 0xCA52, 0xCA53, 0xCA55, 0xCA56, 0xCA57, 0xCA58, 0xCA59, 0xCA5A, + 0xCA5B, 0xCA5E, 0xCA62, 0xCA63, 0xCA64, 0xCA65, 0xCA66, 0xCA67, 0xCA69, + 0xCA6A, 0xCA6B, 0xCA6C, 0xCA6D, 0xCA6E, 0xCA6F, 0xCA70, 0xCA71, 0xCA72, + 0xCA73, 0xCA74, 0xCA75, 0xCA76, 0xCA77, 0xCA78, 0xCA79, 0xCA7A, 0xCA7B, + 0xCA7C, 0xCA7E, 0xCA7F, 0xCA80, 0xCA81, 0xCA82, 0xCA83, 0xCA85, 0xCA86, + 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xCA8B, 0xCA8C, 0xCA8D, 0xCA8E, 0xCA8F, + 0xCA90, 0xCA91, 0xCA92, 0xCA93, 0xCA94, 0xCA95, 0xCA96, 0xCA97, 0xCA99, + 0xCA9A, 0xCA9B, 0xCA9C, 0xCA9D, 0xCA9E, 0xCA9F, 0xCAA0, 0xCAA1, 0xCAA2, + 0xCAA3, 0xCAA4, 0xCAA5, 0xCAA6, 0xCAA7, 0xCAA8, 0xCAA9, 0xCAAA, 0xCAAB, + 0xCAAC, 0xCAAD, 0xCAAE, 0xCAAF, 0xCAB0, 0xCAB1, 0xCAB2, 0xCAB3, 0xCAB4, + 0xCAB5, 0xCAB6, 0xCAB7, 0xCAB8, 0xCAB9, 0xCABA, 0xCABB, 0xCABE, 0xCABF, + 0xCAC1, 0xCAC2, 0xCAC3, 0xCAC5, 0xCAC6, 0xCAC7, 0xCAC8, 0xCAC9, 0xCACA, + 0xCACB, 0xCACE, 0xCAD0, 0xCAD2, 0xCAD4, 0xCAD5, 0xCAD6, 0xCAD7, 0xCADA, + 0xCADB, 0xCADC, 0xCADD, 0xCADE, 0xCADF, 0xCAE1, 0xCAE2, 0xCAE3, 0xCAE4, + 0xCAE5, 0xCAE6, 0xCAE7, 0xCAE8, 0xCAE9, 0xCAEA, 0xCAEB, 0xCAED, 0xCAEE, + 0xCAEF, 0xCAF0, 0xCAF1, 0xCAF2, 0xCAF3, 0xCAF5, 0xCAF6, 0xCAF7, 0xCAF8, + 0xCAF9, 0xCAFA, 0xCAFB, 0xCAFC, 0xCAFD, 0xCAFE, 0xCAFF, 0xCB00, 0xCB01, + 0xCB02, 0xCB03, 0xCB04, 0xCB05, 0xCB06, 0xCB07, 0xCB09, 0xCB0A, 0xCB0B, + 0xCB0C, 0xCB0D, 0xCB0E, 0xCB0F, 0xCB11, 0xCB12, 0xCB13, 0xCB15, 0xCB16, + 0xCB17, 0xCB19, 0xCB1A, 0xCB1B, 0xCB1C, 0xCB1D, 0xCB1E, 0xCB1F, 0xCB22, + 0xCB23, 0xCB24, 0xCB25, 0xCB26, 0xCB27, 0xCB28, 0xCB29, 0xCB2A, 0xCB2B, + 0xCB2C, 0xCB2D, 0xCB2E, 0xCB2F, 0xCB30, 0xCB31, 0xCB32, 0xCB33, 0xCB34, + 0xCB35, 0xCB36, 0xCB37, 0xCB38, 0xCB39, 0xCB3A, 0xCB3B, 0xCB3C, 0xCB3D, + 0xCB3E, 0xCB3F, 0xCB40, 0xCB42, 0xCB43, 0xCB44, 0xCB45, 0xCB46, 0xCB47, + 0xCB4A, 0xCB4B, 0xCB4D, 0xCB4E, 0xCB4F, 0xCB51, 0xCB52, 0xCB53, 0xCB54, + 0xCB55, 0xCB56, 0xCB57, 0xCB5A, 0xCB5B, 0xCB5C, 0xCB5E, 0xCB5F, 0xCB60, + 0xCB61, 0xCB62, 0xCB63, 0xCB65, 0xCB66, 0xCB67, 0xCB68, 0xCB69, 0xCB6A, + 0xCB6B, 0xCB6C, 0xCB6D, 0xCB6E, 0xCB6F, 0xCB70, 0xCB71, 0xCB72, 0xCB73, + 0xCB74, 0xCB75, 0xCB76, 0xCB77, 0xCB7A, 0xCB7B, 0xCB7C, 0xCB7D, 0xCB7E, + 0xCB7F, 0xCB80, 0xCB81, 0xCB82, 0xCB83, 0xCB84, 0xCB85, 0xCB86, 0xCB87, + 0xCB88, 0xCB89, 0xCB8A, 0xCB8B, 0xCB8C, 0xCB8D, 0xCB8E, 0xCB8F, 0xCB90, + 0xCB91, 0xCB92, 0xCB93, 0xCB94, 0xCB95, 0xCB96, 0xCB97, 0xCB98, 0xCB99, + 0xCB9A, 0xCB9B, 0xCB9D, 0xCB9E, 0xCB9F, 0xCBA0, 0xCBA1, 0xCBA2, 0xCBA3, + 0xCBA4, 0xCBA5, 0xCBA6, 0xCBA7, 0xCBA8, 0xCBA9, 0xCBAA, 0xCBAB, 0xCBAC, + 0xCBAD, 0xCBAE, 0xCBAF, 0xCBB0, 0xCBB1, 0xCBB2, 0xCBB3, 0xCBB4, 0xCBB5, + 0xCBB6, 0xCBB7, 0xCBB9, 0xCBBA, 0xCBBB, 0xCBBC, 0xCBBD, 0xCBBE, 0xCBBF, + 0xCBC0, 0xCBC1, 0xCBC2, 0xCBC3, 0xCBC4, 0xCBC5, 0xCBC6, 0xCBC7, 0xCBC8, + 0xCBC9, 0xCBCA, 0xCBCB, 0xCBCC, 0xCBCD, 0xCBCE, 0xCBCF, 0xCBD0, 0xCBD1, + 0xCBD2, 0xCBD3, 0xCBD5, 0xCBD6, 0xCBD7, 0xCBD8, 0xCBD9, 0xCBDA, 0xCBDB, + 0xCBDC, 0xCBDD, 0xCBDE, 0xCBDF, 0xCBE0, 0xCBE1, 0xCBE2, 0xCBE3, 0xCBE5, + 0xCBE6, 0xCBE8, 0xCBEA, 0xCBEB, 0xCBEC, 0xCBED, 0xCBEE, 0xCBEF, 0xCBF0, + 0xCBF1, 0xCBF2, 0xCBF3, 0xCBF4, 0xCBF5, 0xCBF6, 0xCBF7, 0xCBF8, 0xCBF9, + 0xCBFA, 0xCBFB, 0xCBFC, 0xCBFD, 0xCBFE, 0xCBFF, 0xCC00, 0xCC01, 0xCC02, + 0xCC03, 0xCC04, 0xCC05, 0xCC06, 0xCC07, 0xCC08, 0xCC09, 0xCC0A, 0xCC0B, + 0xCC0E, 0xCC0F, 0xCC11, 0xCC12, 0xCC13, 0xCC15, 0xCC16, 0xCC17, 0xCC18, + 0xCC19, 0xCC1A, 0xCC1B, 0xCC1E, 0xCC1F, 0xCC20, 0xCC23, 0xCC24, 0xCC25, + 0xCC26, 0xCC2A, 0xCC2B, 0xCC2D, 0xCC2F, 0xCC31, 0xCC32, 0xCC33, 0xCC34, + 0xCC35, 0xCC36, 0xCC37, 0xCC3A, 0xCC3F, 0xCC40, 0xCC41, 0xCC42, 0xCC43, + 0xCC46, 0xCC47, 0xCC49, 0xCC4A, 0xCC4B, 0xCC4D, 0xCC4E, 0xCC4F, 0xCC50, + 0xCC51, 0xCC52, 0xCC53, 0xCC56, 0xCC5A, 0xCC5B, 0xCC5C, 0xCC5D, 0xCC5E, + 0xCC5F, 0xCC61, 0xCC62, 0xCC63, 0xCC65, 0xCC67, 0xCC69, 0xCC6A, 0xCC6B, + 0xCC6C, 0xCC6D, 0xCC6E, 0xCC6F, 0xCC71, 0xCC72, 0xCC73, 0xCC74, 0xCC76, + 0xCC77, 0xCC78, 0xCC79, 0xCC7A, 0xCC7B, 0xCC7C, 0xCC7D, 0xCC7E, 0xCC7F, + 0xCC80, 0xCC81, 0xCC82, 0xCC83, 0xCC84, 0xCC85, 0xCC86, 0xCC87, 0xCC88, + 0xCC89, 0xCC8A, 0xCC8B, 0xCC8C, 0xCC8D, 0xCC8E, 0xCC8F, 0xCC90, 0xCC91, + 0xCC92, 0xCC93, 0xCC94, 0xCC95, 0xCC96, 0xCC97, 0xCC9A, 0xCC9B, 0xCC9D, + 0xCC9E, 0xCC9F, 0xCCA1, 0xCCA2, 0xCCA3, 0xCCA4, 0xCCA5, 0xCCA6, 0xCCA7, + 0xCCAA, 0xCCAE, 0xCCAF, 0xCCB0, 0xCCB1, 0xCCB2, 0xCCB3, 0xCCB6, 0xCCB7, + 0xCCB9, 0xCCBA, 0xCCBB, 0xCCBD, 0xCCBE, 0xCCBF, 0xCCC0, 0xCCC1, 0xCCC2, + 0xCCC3, 0xCCC6, 0xCCC8, 0xCCCA, 0xCCCB, 0xCCCC, 0xCCCD, 0xCCCE, 0xCCCF, + 0xCCD1, 0xCCD2, 0xCCD3, 0xCCD5, 0xCCD6, 0xCCD7, 0xCCD8, 0xCCD9, 0xCCDA, + 0xCCDB, 0xCCDC, 0xCCDD, 0xCCDE, 0xCCDF, 0xCCE0, 0xCCE1, 0xCCE2, 0xCCE3, + 0xCCE5, 0xCCE6, 0xCCE7, 0xCCE8, 0xCCE9, 0xCCEA, 0xCCEB, 0xCCED, 0xCCEE, + 0xCCEF, 0xCCF1, 0xCCF2, 0xCCF3, 0xCCF4, 0xCCF5, 0xCCF6, 0xCCF7, 0xCCF8, + 0xCCF9, 0xCCFA, 0xCCFB, 0xCCFC, 0xCCFD, 0xCCFE, 0xCCFF, 0xCD00, 0xCD02, + 0xCD03, 0xCD04, 0xCD05, 0xCD06, 0xCD07, 0xCD0A, 0xCD0B, 0xCD0D, 0xCD0E, + 0xCD0F, 0xCD11, 0xCD12, 0xCD13, 0xCD14, 0xCD15, 0xCD16, 0xCD17, 0xCD1A, + 0xCD1C, 0xCD1E, 0xCD1F, 0xCD20, 0xCD21, 0xCD22, 0xCD23, 0xCD25, 0xCD26, + 0xCD27, 0xCD29, 0xCD2A, 0xCD2B, 0xCD2D, 0xCD2E, 0xCD2F, 0xCD30, 0xCD31, + 0xCD32, 0xCD33, 0xCD34, 0xCD35, 0xCD36, 0xCD37, 0xCD38, 0xCD3A, 0xCD3B, + 0xCD3C, 0xCD3D, 0xCD3E, 0xCD3F, 0xCD40, 0xCD41, 0xCD42, 0xCD43, 0xCD44, + 0xCD45, 0xCD46, 0xCD47, 0xCD48, 0xCD49, 0xCD4A, 0xCD4B, 0xCD4C, 0xCD4D, + 0xCD4E, 0xCD4F, 0xCD50, 0xCD51, 0xCD52, 0xCD53, 0xCD54, 0xCD55, 0xCD56, + 0xCD57, 0xCD58, 0xCD59, 0xCD5A, 0xCD5B, 0xCD5D, 0xCD5E, 0xCD5F, 0xCD61, + 0xCD62, 0xCD63, 0xCD65, 0xCD66, 0xCD67, 0xCD68, 0xCD69, 0xCD6A, 0xCD6B, + 0xCD6E, 0xCD70, 0xCD72, 0xCD73, 0xCD74, 0xCD75, 0xCD76, 0xCD77, 0xCD79, + 0xCD7A, 0xCD7B, 0xCD7C, 0xCD7D, 0xCD7E, 0xCD7F, 0xCD80, 0xCD81, 0xCD82, + 0xCD83, 0xCD84, 0xCD85, 0xCD86, 0xCD87, 0xCD89, 0xCD8A, 0xCD8B, 0xCD8C, + 0xCD8D, 0xCD8E, 0xCD8F, 0xCD90, 0xCD91, 0xCD92, 0xCD93, 0xCD96, 0xCD97, + 0xCD99, 0xCD9A, 0xCD9B, 0xCD9D, 0xCD9E, 0xCD9F, 0xCDA0, 0xCDA1, 0xCDA2, + 0xCDA3, 0xCDA6, 0xCDA8, 0xCDAA, 0xCDAB, 0xCDAC, 0xCDAD, 0xCDAE, 0xCDAF, + 0xCDB1, 0xCDB2, 0xCDB3, 0xCDB4, 0xCDB5, 0xCDB6, 0xCDB7, 0xCDB8, 0xCDB9, + 0xCDBA, 0xCDBB, 0xCDBC, 0xCDBD, 0xCDBE, 0xCDBF, 0xCDC0, 0xCDC1, 0xCDC2, + 0xCDC3, 0xCDC5, 0xCDC6, 0xCDC7, 0xCDC8, 0xCDC9, 0xCDCA, 0xCDCB, 0xCDCD, + 0xCDCE, 0xCDCF, 0xCDD1, 0xCDD2, 0xCDD3, 0xCDD4, 0xCDD5, 0xCDD6, 0xCDD7, + 0xCDD8, 0xCDD9, 0xCDDA, 0xCDDB, 0xCDDC, 0xCDDD, 0xCDDE, 0xCDDF, 0xCDE0, + 0xCDE1, 0xCDE2, 0xCDE3, 0xCDE4, 0xCDE5, 0xCDE6, 0xCDE7, 0xCDE9, 0xCDEA, + 0xCDEB, 0xCDED, 0xCDEE, 0xCDEF, 0xCDF1, 0xCDF2, 0xCDF3, 0xCDF4, 0xCDF5, + 0xCDF6, 0xCDF7, 0xCDFA, 0xCDFC, 0xCDFE, 0xCDFF, 0xCE00, 0xCE01, 0xCE02, + 0xCE03, 0xCE05, 0xCE06, 0xCE07, 0xCE09, 0xCE0A, 0xCE0B, 0xCE0D, 0xCE0E, + 0xCE0F, 0xCE10, 0xCE11, 0xCE12, 0xCE13, 0xCE15, 0xCE16, 0xCE17, 0xCE18, + 0xCE1A, 0xCE1B, 0xCE1C, 0xCE1D, 0xCE1E, 0xCE1F, 0xCE22, 0xCE23, 0xCE25, + 0xCE26, 0xCE27, 0xCE29, 0xCE2A, 0xCE2B, 0xCE2C, 0xCE2D, 0xCE2E, 0xCE2F, + 0xCE32, 0xCE34, 0xCE36, 0xCE37, 0xCE38, 0xCE39, 0xCE3A, 0xCE3B, 0xCE3C, + 0xCE3D, 0xCE3E, 0xCE3F, 0xCE40, 0xCE41, 0xCE42, 0xCE43, 0xCE44, 0xCE45, + 0xCE46, 0xCE47, 0xCE48, 0xCE49, 0xCE4A, 0xCE4B, 0xCE4C, 0xCE4D, 0xCE4E, + 0xCE4F, 0xCE50, 0xCE51, 0xCE52, 0xCE53, 0xCE54, 0xCE55, 0xCE56, 0xCE57, + 0xCE5A, 0xCE5B, 0xCE5D, 0xCE5E, 0xCE62, 0xCE63, 0xCE64, 0xCE65, 0xCE66, + 0xCE67, 0xCE6A, 0xCE6C, 0xCE6E, 0xCE6F, 0xCE70, 0xCE71, 0xCE72, 0xCE73, + 0xCE76, 0xCE77, 0xCE79, 0xCE7A, 0xCE7B, 0xCE7D, 0xCE7E, 0xCE7F, 0xCE80, + 0xCE81, 0xCE82, 0xCE83, 0xCE86, 0xCE88, 0xCE8A, 0xCE8B, 0xCE8C, 0xCE8D, + 0xCE8E, 0xCE8F, 0xCE92, 0xCE93, 0xCE95, 0xCE96, 0xCE97, 0xCE99, 0xCE9A, + 0xCE9B, 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA2, 0xCEA6, 0xCEA7, 0xCEA8, + 0xCEA9, 0xCEAA, 0xCEAB, 0xCEAE, 0xCEAF, 0xCEB0, 0xCEB1, 0xCEB2, 0xCEB3, + 0xCEB4, 0xCEB5, 0xCEB6, 0xCEB7, 0xCEB8, 0xCEB9, 0xCEBA, 0xCEBB, 0xCEBC, + 0xCEBD, 0xCEBE, 0xCEBF, 0xCEC0, 0xCEC2, 0xCEC3, 0xCEC4, 0xCEC5, 0xCEC6, + 0xCEC7, 0xCEC8, 0xCEC9, 0xCECA, 0xCECB, 0xCECC, 0xCECD, 0xCECE, 0xCECF, + 0xCED0, 0xCED1, 0xCED2, 0xCED3, 0xCED4, 0xCED5, 0xCED6, 0xCED7, 0xCED8, + 0xCED9, 0xCEDA, 0xCEDB, 0xCEDC, 0xCEDD, 0xCEDE, 0xCEDF, 0xCEE0, 0xCEE1, + 0xCEE2, 0xCEE3, 0xCEE6, 0xCEE7, 0xCEE9, 0xCEEA, 0xCEED, 0xCEEE, 0xCEEF, + 0xCEF0, 0xCEF1, 0xCEF2, 0xCEF3, 0xCEF6, 0xCEFA, 0xCEFB, 0xCEFC, 0xCEFD, + 0xCEFE, 0xCEFF, 0xCF02, 0xCF03, 0xCF05, 0xCF06, 0xCF07, 0xCF09, 0xCF0A, + 0xCF0B, 0xCF0C, 0xCF0D, 0xCF0E, 0xCF0F, 0xCF12, 0xCF14, 0xCF16, 0xCF17, + 0xCF18, 0xCF19, 0xCF1A, 0xCF1B, 0xCF1D, 0xCF1E, 0xCF1F, 0xCF21, 0xCF22, + 0xCF23, 0xCF25, 0xCF26, 0xCF27, 0xCF28, 0xCF29, 0xCF2A, 0xCF2B, 0xCF2E, + 0xCF32, 0xCF33, 0xCF34, 0xCF35, 0xCF36, 0xCF37, 0xCF39, 0xCF3A, 0xCF3B, + 0xCF3C, 0xCF3D, 0xCF3E, 0xCF3F, 0xCF40, 0xCF41, 0xCF42, 0xCF43, 0xCF44, + 0xCF45, 0xCF46, 0xCF47, 0xCF48, 0xCF49, 0xCF4A, 0xCF4B, 0xCF4C, 0xCF4D, + 0xCF4E, 0xCF4F, 0xCF50, 0xCF51, 0xCF52, 0xCF53, 0xCF56, 0xCF57, 0xCF59, + 0xCF5A, 0xCF5B, 0xCF5D, 0xCF5E, 0xCF5F, 0xCF60, 0xCF61, 0xCF62, 0xCF63, + 0xCF66, 0xCF68, 0xCF6A, 0xCF6B, 0xCF6C, 0xCF6D, 0xCF6E, 0xCF6F, 0xCF72, + 0xCF73, 0xCF75, 0xCF76, 0xCF77, 0xCF79, 0xCF7A, 0xCF7B, 0xCF7C, 0xCF7D, + 0xCF7E, 0xCF7F, 0xCF81, 0xCF82, 0xCF83, 0xCF84, 0xCF86, 0xCF87, 0xCF88, + 0xCF89, 0xCF8A, 0xCF8B, 0xCF8D, 0xCF8E, 0xCF8F, 0xCF90, 0xCF91, 0xCF92, + 0xCF93, 0xCF94, 0xCF95, 0xCF96, 0xCF97, 0xCF98, 0xCF99, 0xCF9A, 0xCF9B, + 0xCF9C, 0xCF9D, 0xCF9E, 0xCF9F, 0xCFA0, 0xCFA2, 0xCFA3, 0xCFA4, 0xCFA5, + 0xCFA6, 0xCFA7, 0xCFA9, 0xCFAA, 0xCFAB, 0xCFAC, 0xCFAD, 0xCFAE, 0xCFAF, + 0xCFB1, 0xCFB2, 0xCFB3, 0xCFB4, 0xCFB5, 0xCFB6, 0xCFB7, 0xCFB8, 0xCFB9, + 0xCFBA, 0xCFBB, 0xCFBC, 0xCFBD, 0xCFBE, 0xCFBF, 0xCFC0, 0xCFC1, 0xCFC2, + 0xCFC3, 0xCFC5, 0xCFC6, 0xCFC7, 0xCFC8, 0xCFC9, 0xCFCA, 0xCFCB, 0xCFCC, + 0xCFCD, 0xCFCE, 0xCFCF, 0xCFD0, 0xCFD1, 0xCFD2, 0xCFD3, 0xCFD4, 0xCFD5, + 0xCFD6, 0xCFD7, 0xCFD8, 0xCFD9, 0xCFDA, 0xCFDB, 0xCFDC, 0xCFDD, 0xCFDE, + 0xCFDF, 0xCFE2, 0xCFE3, 0xCFE5, 0xCFE6, 0xCFE7, 0xCFE9, 0xCFEA, 0xCFEB, + 0xCFEC, 0xCFED, 0xCFEE, 0xCFEF, 0xCFF2, 0xCFF4, 0xCFF6, 0xCFF7, 0xCFF8, + 0xCFF9, 0xCFFA, 0xCFFB, 0xCFFD, 0xCFFE, 0xCFFF, 0xD001, 0xD002, 0xD003, + 0xD005, 0xD006, 0xD007, 0xD008, 0xD009, 0xD00A, 0xD00B, 0xD00C, 0xD00D, + 0xD00E, 0xD00F, 0xD010, 0xD012, 0xD013, 0xD014, 0xD015, 0xD016, 0xD017, + 0xD019, 0xD01A, 0xD01B, 0xD01C, 0xD01D, 0xD01E, 0xD01F, 0xD020, 0xD021, + 0xD022, 0xD023, 0xD024, 0xD025, 0xD026, 0xD027, 0xD028, 0xD029, 0xD02A, + 0xD02B, 0xD02C, 0xD02E, 0xD02F, 0xD030, 0xD031, 0xD032, 0xD033, 0xD036, + 0xD037, 0xD039, 0xD03A, 0xD03B, 0xD03D, 0xD03E, 0xD03F, 0xD040, 0xD041, + 0xD042, 0xD043, 0xD046, 0xD048, 0xD04A, 0xD04B, 0xD04C, 0xD04D, 0xD04E, + 0xD04F, 0xD051, 0xD052, 0xD053, 0xD055, 0xD056, 0xD057, 0xD059, 0xD05A, + 0xD05B, 0xD05C, 0xD05D, 0xD05E, 0xD05F, 0xD061, 0xD062, 0xD063, 0xD064, + 0xD065, 0xD066, 0xD067, 0xD068, 0xD069, 0xD06A, 0xD06B, 0xD06E, 0xD06F, + 0xD071, 0xD072, 0xD073, 0xD075, 0xD076, 0xD077, 0xD078, 0xD079, 0xD07A, + 0xD07B, 0xD07E, 0xD07F, 0xD080, 0xD082, 0xD083, 0xD084, 0xD085, 0xD086, + 0xD087, 0xD088, 0xD089, 0xD08A, 0xD08B, 0xD08C, 0xD08D, 0xD08E, 0xD08F, + 0xD090, 0xD091, 0xD092, 0xD093, 0xD094, 0xD095, 0xD096, 0xD097, 0xD098, + 0xD099, 0xD09A, 0xD09B, 0xD09C, 0xD09D, 0xD09E, 0xD09F, 0xD0A0, 0xD0A1, + 0xD0A2, 0xD0A3, 0xD0A6, 0xD0A7, 0xD0A9, 0xD0AA, 0xD0AB, 0xD0AD, 0xD0AE, + 0xD0AF, 0xD0B0, 0xD0B1, 0xD0B2, 0xD0B3, 0xD0B6, 0xD0B8, 0xD0BA, 0xD0BB, + 0xD0BC, 0xD0BD, 0xD0BE, 0xD0BF, 0xD0C2, 0xD0C3, 0xD0C5, 0xD0C6, 0xD0C7, + 0xD0CA, 0xD0CB, 0xD0CC, 0xD0CD, 0xD0CE, 0xD0CF, 0xD0D2, 0xD0D6, 0xD0D7, + 0xD0D8, 0xD0D9, 0xD0DA, 0xD0DB, 0xD0DE, 0xD0DF, 0xD0E1, 0xD0E2, 0xD0E3, + 0xD0E5, 0xD0E6, 0xD0E7, 0xD0E8, 0xD0E9, 0xD0EA, 0xD0EB, 0xD0EE, 0xD0F2, + 0xD0F3, 0xD0F4, 0xD0F5, 0xD0F6, 0xD0F7, 0xD0F9, 0xD0FA, 0xD0FB, 0xD0FC, + 0xD0FD, 0xD0FE, 0xD0FF, 0xD100, 0xD101, 0xD102, 0xD103, 0xD104, 0xD105, + 0xD106, 0xD107, 0xD108, 0xD109, 0xD10A, 0xD10B, 0xD10C, 0xD10E, 0xD10F, + 0xD110, 0xD111, 0xD112, 0xD113, 0xD114, 0xD115, 0xD116, 0xD117, 0xD118, + 0xD119, 0xD11A, 0xD11B, 0xD11C, 0xD11D, 0xD11E, 0xD11F, 0xD120, 0xD121, + 0xD122, 0xD123, 0xD124, 0xD125, 0xD126, 0xD127, 0xD128, 0xD129, 0xD12A, + 0xD12B, 0xD12C, 0xD12D, 0xD12E, 0xD12F, 0xD132, 0xD133, 0xD135, 0xD136, + 0xD137, 0xD139, 0xD13B, 0xD13C, 0xD13D, 0xD13E, 0xD13F, 0xD142, 0xD146, + 0xD147, 0xD148, 0xD149, 0xD14A, 0xD14B, 0xD14E, 0xD14F, 0xD151, 0xD152, + 0xD153, 0xD155, 0xD156, 0xD157, 0xD158, 0xD159, 0xD15A, 0xD15B, 0xD15E, + 0xD160, 0xD162, 0xD163, 0xD164, 0xD165, 0xD166, 0xD167, 0xD169, 0xD16A, + 0xD16B, 0xD16D, 0xD16E, 0xD16F, 0xD170, 0xD171, 0xD172, 0xD173, 0xD174, + 0xD175, 0xD176, 0xD177, 0xD178, 0xD179, 0xD17A, 0xD17B, 0xD17D, 0xD17E, + 0xD17F, 0xD180, 0xD181, 0xD182, 0xD183, 0xD185, 0xD186, 0xD187, 0xD189, + 0xD18A, 0xD18B, 0xD18C, 0xD18D, 0xD18E, 0xD18F, 0xD190, 0xD191, 0xD192, + 0xD193, 0xD194, 0xD195, 0xD196, 0xD197, 0xD198, 0xD199, 0xD19A, 0xD19B, + 0xD19C, 0xD19D, 0xD19E, 0xD19F, 0xD1A2, 0xD1A3, 0xD1A5, 0xD1A6, 0xD1A7, + 0xD1A9, 0xD1AA, 0xD1AB, 0xD1AC, 0xD1AD, 0xD1AE, 0xD1AF, 0xD1B2, 0xD1B4, + 0xD1B6, 0xD1B7, 0xD1B8, 0xD1B9, 0xD1BB, 0xD1BD, 0xD1BE, 0xD1BF, 0xD1C1, + 0xD1C2, 0xD1C3, 0xD1C4, 0xD1C5, 0xD1C6, 0xD1C7, 0xD1C8, 0xD1C9, 0xD1CA, + 0xD1CB, 0xD1CC, 0xD1CD, 0xD1CE, 0xD1CF, 0xD1D0, 0xD1D1, 0xD1D2, 0xD1D3, + 0xD1D4, 0xD1D5, 0xD1D6, 0xD1D7, 0xD1D9, 0xD1DA, 0xD1DB, 0xD1DC, 0xD1DD, + 0xD1DE, 0xD1DF, 0xD1E0, 0xD1E1, 0xD1E2, 0xD1E3, 0xD1E4, 0xD1E5, 0xD1E6, + 0xD1E7, 0xD1E8, 0xD1E9, 0xD1EA, 0xD1EB, 0xD1EC, 0xD1ED, 0xD1EE, 0xD1EF, + 0xD1F0, 0xD1F1, 0xD1F2, 0xD1F3, 0xD1F5, 0xD1F6, 0xD1F7, 0xD1F9, 0xD1FA, + 0xD1FB, 0xD1FC, 0xD1FD, 0xD1FE, 0xD1FF, 0xD200, 0xD201, 0xD202, 0xD203, + 0xD204, 0xD205, 0xD206, 0xD208, 0xD20A, 0xD20B, 0xD20C, 0xD20D, 0xD20E, + 0xD20F, 0xD211, 0xD212, 0xD213, 0xD214, 0xD215, 0xD216, 0xD217, 0xD218, + 0xD219, 0xD21A, 0xD21B, 0xD21C, 0xD21D, 0xD21E, 0xD21F, 0xD220, 0xD221, + 0xD222, 0xD223, 0xD224, 0xD225, 0xD226, 0xD227, 0xD228, 0xD229, 0xD22A, + 0xD22B, 0xD22E, 0xD22F, 0xD231, 0xD232, 0xD233, 0xD235, 0xD236, 0xD237, + 0xD238, 0xD239, 0xD23A, 0xD23B, 0xD23E, 0xD240, 0xD242, 0xD243, 0xD244, + 0xD245, 0xD246, 0xD247, 0xD249, 0xD24A, 0xD24B, 0xD24C, 0xD24D, 0xD24E, + 0xD24F, 0xD250, 0xD251, 0xD252, 0xD253, 0xD254, 0xD255, 0xD256, 0xD257, + 0xD258, 0xD259, 0xD25A, 0xD25B, 0xD25D, 0xD25E, 0xD25F, 0xD260, 0xD261, + 0xD262, 0xD263, 0xD265, 0xD266, 0xD267, 0xD268, 0xD269, 0xD26A, 0xD26B, + 0xD26C, 0xD26D, 0xD26E, 0xD26F, 0xD270, 0xD271, 0xD272, 0xD273, 0xD274, + 0xD275, 0xD276, 0xD277, 0xD278, 0xD279, 0xD27A, 0xD27B, 0xD27C, 0xD27D, + 0xD27E, 0xD27F, 0xD282, 0xD283, 0xD285, 0xD286, 0xD287, 0xD289, 0xD28A, + 0xD28B, 0xD28C, 0xD28D, 0xD28E, 0xD28F, 0xD292, 0xD293, 0xD294, 0xD296, + 0xD297, 0xD298, 0xD299, 0xD29A, 0xD29B, 0xD29D, 0xD29E, 0xD29F, 0xD2A1, + 0xD2A2, 0xD2A3, 0xD2A5, 0xD2A6, 0xD2A7, 0xD2A8, 0xD2A9, 0xD2AA, 0xD2AB, + 0xD2AD, 0xD2AE, 0xD2AF, 0xD2B0, 0xD2B2, 0xD2B3, 0xD2B4, 0xD2B5, 0xD2B6, + 0xD2B7, 0xD2BA, 0xD2BB, 0xD2BD, 0xD2BE, 0xD2C1, 0xD2C3, 0xD2C4, 0xD2C5, + 0xD2C6, 0xD2C7, 0xD2CA, 0xD2CC, 0xD2CD, 0xD2CE, 0xD2CF, 0xD2D0, 0xD2D1, + 0xD2D2, 0xD2D3, 0xD2D5, 0xD2D6, 0xD2D7, 0xD2D9, 0xD2DA, 0xD2DB, 0xD2DD, + 0xD2DE, 0xD2DF, 0xD2E0, 0xD2E1, 0xD2E2, 0xD2E3, 0xD2E6, 0xD2E7, 0xD2E8, + 0xD2E9, 0xD2EA, 0xD2EB, 0xD2EC, 0xD2ED, 0xD2EE, 0xD2EF, 0xD2F2, 0xD2F3, + 0xD2F5, 0xD2F6, 0xD2F7, 0xD2F9, 0xD2FA, 0xD2FB, 0xD2FC, 0xD2FD, 0xD2FE, + 0xD2FF, 0xD302, 0xD304, 0xD306, 0xD307, 0xD308, 0xD309, 0xD30A, 0xD30B, + 0xD30F, 0xD311, 0xD312, 0xD313, 0xD315, 0xD317, 0xD318, 0xD319, 0xD31A, + 0xD31B, 0xD31E, 0xD322, 0xD323, 0xD324, 0xD326, 0xD327, 0xD32A, 0xD32B, + 0xD32D, 0xD32E, 0xD32F, 0xD331, 0xD332, 0xD333, 0xD334, 0xD335, 0xD336, + 0xD337, 0xD33A, 0xD33E, 0xD33F, 0xD340, 0xD341, 0xD342, 0xD343, 0xD346, + 0xD347, 0xD348, 0xD349, 0xD34A, 0xD34B, 0xD34C, 0xD34D, 0xD34E, 0xD34F, + 0xD350, 0xD351, 0xD352, 0xD353, 0xD354, 0xD355, 0xD356, 0xD357, 0xD358, + 0xD359, 0xD35A, 0xD35B, 0xD35C, 0xD35D, 0xD35E, 0xD35F, 0xD360, 0xD361, + 0xD362, 0xD363, 0xD364, 0xD365, 0xD366, 0xD367, 0xD368, 0xD369, 0xD36A, + 0xD36B, 0xD36C, 0xD36D, 0xD36E, 0xD36F, 0xD370, 0xD371, 0xD372, 0xD373, + 0xD374, 0xD375, 0xD376, 0xD377, 0xD378, 0xD379, 0xD37A, 0xD37B, 0xD37E, + 0xD37F, 0xD381, 0xD382, 0xD383, 0xD385, 0xD386, 0xD387, 0xD388, 0xD389, + 0xD38A, 0xD38B, 0xD38E, 0xD392, 0xD393, 0xD394, 0xD395, 0xD396, 0xD397, + 0xD39A, 0xD39B, 0xD39D, 0xD39E, 0xD39F, 0xD3A1, 0xD3A2, 0xD3A3, 0xD3A4, + 0xD3A5, 0xD3A6, 0xD3A7, 0xD3AA, 0xD3AC, 0xD3AE, 0xD3AF, 0xD3B0, 0xD3B1, + 0xD3B2, 0xD3B3, 0xD3B5, 0xD3B6, 0xD3B7, 0xD3B9, 0xD3BA, 0xD3BB, 0xD3BD, + 0xD3BE, 0xD3BF, 0xD3C0, 0xD3C1, 0xD3C2, 0xD3C3, 0xD3C6, 0xD3C7, 0xD3CA, + 0xD3CB, 0xD3CC, 0xD3CD, 0xD3CE, 0xD3CF, 0xD3D1, 0xD3D2, 0xD3D3, 0xD3D4, + 0xD3D5, 0xD3D6, 0xD3D7, 0xD3D9, 0xD3DA, 0xD3DB, 0xD3DC, 0xD3DD, 0xD3DE, + 0xD3DF, 0xD3E0, 0xD3E2, 0xD3E4, 0xD3E5, 0xD3E6, 0xD3E7, 0xD3E8, 0xD3E9, + 0xD3EA, 0xD3EB, 0xD3EE, 0xD3EF, 0xD3F1, 0xD3F2, 0xD3F3, 0xD3F5, 0xD3F6, + 0xD3F7, 0xD3F8, 0xD3F9, 0xD3FA, 0xD3FB, 0xD3FE, 0xD400, 0xD402, 0xD403, + 0xD404, 0xD405, 0xD406, 0xD407, 0xD409, 0xD40A, 0xD40B, 0xD40C, 0xD40D, + 0xD40E, 0xD40F, 0xD410, 0xD411, 0xD412, 0xD413, 0xD414, 0xD415, 0xD416, + 0xD417, 0xD418, 0xD419, 0xD41A, 0xD41B, 0xD41C, 0xD41E, 0xD41F, 0xD420, + 0xD421, 0xD422, 0xD423, 0xD424, 0xD425, 0xD426, 0xD427, 0xD428, 0xD429, + 0xD42A, 0xD42B, 0xD42C, 0xD42D, 0xD42E, 0xD42F, 0xD430, 0xD431, 0xD432, + 0xD433, 0xD434, 0xD435, 0xD436, 0xD437, 0xD438, 0xD439, 0xD43A, 0xD43B, + 0xD43C, 0xD43D, 0xD43E, 0xD43F, 0xD441, 0xD442, 0xD443, 0xD445, 0xD446, + 0xD447, 0xD448, 0xD449, 0xD44A, 0xD44B, 0xD44C, 0xD44D, 0xD44E, 0xD44F, + 0xD450, 0xD451, 0xD452, 0xD453, 0xD454, 0xD455, 0xD456, 0xD457, 0xD458, + 0xD459, 0xD45A, 0xD45B, 0xD45D, 0xD45E, 0xD45F, 0xD461, 0xD462, 0xD463, + 0xD465, 0xD466, 0xD467, 0xD468, 0xD469, 0xD46A, 0xD46B, 0xD46C, 0xD46E, + 0xD470, 0xD471, 0xD472, 0xD473, 0xD474, 0xD475, 0xD476, 0xD477, 0xD47A, + 0xD47B, 0xD47D, 0xD47E, 0xD481, 0xD483, 0xD484, 0xD485, 0xD486, 0xD487, + 0xD48A, 0xD48C, 0xD48E, 0xD48F, 0xD490, 0xD491, 0xD492, 0xD493, 0xD495, + 0xD496, 0xD497, 0xD498, 0xD499, 0xD49A, 0xD49B, 0xD49C, 0xD49D, 0xD49E, + 0xD49F, 0xD4A0, 0xD4A1, 0xD4A2, 0xD4A3, 0xD4A4, 0xD4A5, 0xD4A6, 0xD4A7, + 0xD4A8, 0xD4AA, 0xD4AB, 0xD4AC, 0xD4AD, 0xD4AE, 0xD4AF, 0xD4B0, 0xD4B1, + 0xD4B2, 0xD4B3, 0xD4B4, 0xD4B5, 0xD4B6, 0xD4B7, 0xD4B8, 0xD4B9, 0xD4BA, + 0xD4BB, 0xD4BC, 0xD4BD, 0xD4BE, 0xD4BF, 0xD4C0, 0xD4C1, 0xD4C2, 0xD4C3, + 0xD4C4, 0xD4C5, 0xD4C6, 0xD4C7, 0xD4C8, 0xD4C9, 0xD4CA, 0xD4CB, 0xD4CD, + 0xD4CE, 0xD4CF, 0xD4D1, 0xD4D2, 0xD4D3, 0xD4D5, 0xD4D6, 0xD4D7, 0xD4D8, + 0xD4D9, 0xD4DA, 0xD4DB, 0xD4DD, 0xD4DE, 0xD4E0, 0xD4E1, 0xD4E2, 0xD4E3, + 0xD4E4, 0xD4E5, 0xD4E6, 0xD4E7, 0xD4E9, 0xD4EA, 0xD4EB, 0xD4ED, 0xD4EE, + 0xD4EF, 0xD4F1, 0xD4F2, 0xD4F3, 0xD4F4, 0xD4F5, 0xD4F6, 0xD4F7, 0xD4F9, + 0xD4FA, 0xD4FC, 0xD4FE, 0xD4FF, 0xD500, 0xD501, 0xD502, 0xD503, 0xD505, + 0xD506, 0xD507, 0xD509, 0xD50A, 0xD50B, 0xD50D, 0xD50E, 0xD50F, 0xD510, + 0xD511, 0xD512, 0xD513, 0xD516, 0xD518, 0xD519, 0xD51A, 0xD51B, 0xD51C, + 0xD51D, 0xD51E, 0xD51F, 0xD520, 0xD521, 0xD522, 0xD523, 0xD524, 0xD525, + 0xD526, 0xD527, 0xD528, 0xD529, 0xD52A, 0xD52B, 0xD52C, 0xD52D, 0xD52E, + 0xD52F, 0xD530, 0xD531, 0xD532, 0xD533, 0xD534, 0xD535, 0xD536, 0xD537, + 0xD538, 0xD539, 0xD53A, 0xD53B, 0xD53E, 0xD53F, 0xD541, 0xD542, 0xD543, + 0xD545, 0xD546, 0xD547, 0xD548, 0xD549, 0xD54A, 0xD54B, 0xD54E, 0xD550, + 0xD552, 0xD553, 0xD554, 0xD555, 0xD556, 0xD557, 0xD55A, 0xD55B, 0xD55D, + 0xD55E, 0xD55F, 0xD561, 0xD562, 0xD563, 0xD564, 0xD566, 0xD567, 0xD56A, + 0xD56C, 0xD56E, 0xD56F, 0xD570, 0xD571, 0xD572, 0xD573, 0xD576, 0xD577, + 0xD579, 0xD57A, 0xD57B, 0xD57D, 0xD57E, 0xD57F, 0xD580, 0xD581, 0xD582, + 0xD583, 0xD586, 0xD58A, 0xD58B, 0xD58C, 0xD58D, 0xD58E, 0xD58F, 0xD591, + 0xD592, 0xD593, 0xD594, 0xD595, 0xD596, 0xD597, 0xD598, 0xD599, 0xD59A, + 0xD59B, 0xD59C, 0xD59D, 0xD59E, 0xD59F, 0xD5A0, 0xD5A1, 0xD5A2, 0xD5A3, + 0xD5A4, 0xD5A6, 0xD5A7, 0xD5A8, 0xD5A9, 0xD5AA, 0xD5AB, 0xD5AC, 0xD5AD, + 0xD5AE, 0xD5AF, 0xD5B0, 0xD5B1, 0xD5B2, 0xD5B3, 0xD5B4, 0xD5B5, 0xD5B6, + 0xD5B7, 0xD5B8, 0xD5B9, 0xD5BA, 0xD5BB, 0xD5BC, 0xD5BD, 0xD5BE, 0xD5BF, + 0xD5C0, 0xD5C1, 0xD5C2, 0xD5C3, 0xD5C4, 0xD5C5, 0xD5C6, 0xD5C7, 0xD5CA, + 0xD5CB, 0xD5CD, 0xD5CE, 0xD5CF, 0xD5D1, 0xD5D3, 0xD5D4, 0xD5D5, 0xD5D6, + 0xD5D7, 0xD5DA, 0xD5DC, 0xD5DE, 0xD5DF, 0xD5E0, 0xD5E1, 0xD5E2, 0xD5E3, + 0xD5E6, 0xD5E7, 0xD5E9, 0xD5EA, 0xD5EB, 0xD5ED, 0xD5EE, 0xD5EF, 0xD5F0, + 0xD5F1, 0xD5F2, 0xD5F3, 0xD5F6, 0xD5F8, 0xD5FA, 0xD5FB, 0xD5FC, 0xD5FD, + 0xD5FE, 0xD5FF, 0xD602, 0xD603, 0xD605, 0xD606, 0xD607, 0xD609, 0xD60A, + 0xD60B, 0xD60C, 0xD60D, 0xD60E, 0xD60F, 0xD612, 0xD616, 0xD617, 0xD618, + 0xD619, 0xD61A, 0xD61B, 0xD61D, 0xD61E, 0xD61F, 0xD621, 0xD622, 0xD623, + 0xD625, 0xD626, 0xD627, 0xD628, 0xD629, 0xD62A, 0xD62B, 0xD62C, 0xD62E, + 0xD62F, 0xD630, 0xD631, 0xD632, 0xD633, 0xD634, 0xD635, 0xD636, 0xD637, + 0xD63A, 0xD63B, 0xD63D, 0xD63E, 0xD63F, 0xD641, 0xD642, 0xD643, 0xD644, + 0xD646, 0xD647, 0xD64A, 0xD64C, 0xD64E, 0xD64F, 0xD650, 0xD652, 0xD653, + 0xD656, 0xD657, 0xD659, 0xD65A, 0xD65B, 0xD65D, 0xD65E, 0xD65F, 0xD660, + 0xD661, 0xD662, 0xD663, 0xD664, 0xD665, 0xD666, 0xD668, 0xD66A, 0xD66B, + 0xD66C, 0xD66D, 0xD66E, 0xD66F, 0xD672, 0xD673, 0xD675, 0xD676, 0xD677, + 0xD678, 0xD679, 0xD67A, 0xD67B, 0xD67C, 0xD67D, 0xD67E, 0xD67F, 0xD680, + 0xD681, 0xD682, 0xD684, 0xD686, 0xD687, 0xD688, 0xD689, 0xD68A, 0xD68B, + 0xD68E, 0xD68F, 0xD691, 0xD692, 0xD693, 0xD695, 0xD696, 0xD697, 0xD698, + 0xD699, 0xD69A, 0xD69B, 0xD69C, 0xD69E, 0xD6A0, 0xD6A2, 0xD6A3, 0xD6A4, + 0xD6A5, 0xD6A6, 0xD6A7, 0xD6A9, 0xD6AA, 0xD6AB, 0xD6AD, 0xD6AE, 0xD6AF, + 0xD6B1, 0xD6B2, 0xD6B3, 0xD6B4, 0xD6B5, 0xD6B6, 0xD6B7, 0xD6B8, 0xD6BA, + 0xD6BC, 0xD6BD, 0xD6BE, 0xD6BF, 0xD6C0, 0xD6C1, 0xD6C2, 0xD6C3, 0xD6C6, + 0xD6C7, 0xD6C9, 0xD6CA, 0xD6CB, 0xD6CD, 0xD6CE, 0xD6CF, 0xD6D0, 0xD6D2, + 0xD6D3, 0xD6D5, 0xD6D6, 0xD6D8, 0xD6DA, 0xD6DB, 0xD6DC, 0xD6DD, 0xD6DE, + 0xD6DF, 0xD6E1, 0xD6E2, 0xD6E3, 0xD6E5, 0xD6E6, 0xD6E7, 0xD6E9, 0xD6EA, + 0xD6EB, 0xD6EC, 0xD6ED, 0xD6EE, 0xD6EF, 0xD6F1, 0xD6F2, 0xD6F3, 0xD6F4, + 0xD6F6, 0xD6F7, 0xD6F8, 0xD6F9, 0xD6FA, 0xD6FB, 0xD6FE, 0xD6FF, 0xD701, + 0xD702, 0xD703, 0xD705, 0xD706, 0xD707, 0xD708, 0xD709, 0xD70A, 0xD70B, + 0xD70C, 0xD70D, 0xD70E, 0xD70F, 0xD710, 0xD712, 0xD713, 0xD714, 0xD715, + 0xD716, 0xD717, 0xD71A, 0xD71B, 0xD71D, 0xD71E, 0xD71F, 0xD721, 0xD722, + 0xD723, 0xD724, 0xD725, 0xD726, 0xD727, 0xD72A, 0xD72C, 0xD72E, 0xD72F, + 0xD730, 0xD731, 0xD732, 0xD733, 0xD736, 0xD737, 0xD739, 0xD73A, 0xD73B, + 0xD73D, 0xD73E, 0xD73F, 0xD740, 0xD741, 0xD742, 0xD743, 0xD745, 0xD746, + 0xD748, 0xD74A, 0xD74B, 0xD74C, 0xD74D, 0xD74E, 0xD74F, 0xD752, 0xD753, + 0xD755, 0xD75A, 0xD75B, 0xD75C, 0xD75D, 0xD75E, 0xD75F, 0xD762, 0xD764, + 0xD766, 0xD767, 0xD768, 0xD76A, 0xD76B, 0xD76D, 0xD76E, 0xD76F, 0xD771, + 0xD772, 0xD773, 0xD775, 0xD776, 0xD777, 0xD778, 0xD779, 0xD77A, 0xD77B, + 0xD77E, 0xD77F, 0xD780, 0xD782, 0xD783, 0xD784, 0xD785, 0xD786, 0xD787, + 0xD78A, 0xD78B, 0xD78D, 0xD78E, 0xD78F, 0xD791, 0xD792, 0xD793, 0xD794, + 0xD795, 0xD796, 0xD797, 0xD79A, 0xD79C, 0xD79E, 0xD79F, 0xD7A0, 0xD7A1, + 0xD7A2, 0xD7A3, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, + 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, + 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, + 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, + 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, + 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, + 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, + 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, + 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20A9, 0x2010, + 0x00A9, 0x2122, 0x22EF, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, + 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, + 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, + 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, + 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, + 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, + 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, + 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, + 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, + 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007E, + 0x005C, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp new file mode 100644 index 0000000000..93349291d7 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp @@ -0,0 +1,166 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_KSC_EUC_H_0[467 * 3] = { + 0x0020, 0x007E, 0x1F9E, 0xA1A1, 0xA1FE, 0x0065, 0xA2A1, 0xA2E5, 0x00C3, + 0xA3A1, 0xA3FE, 0x0108, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199, + 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, + 0xA5E1, 0xA5F8, 0x01EF, 0xA6A1, 0xA6E4, 0x0207, 0xA7A1, 0xA7EF, 0x024B, + 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F, + 0xA8B1, 0xA8FE, 0x02A7, 0xA9A1, 0xA9FE, 0x02F5, 0xAAA1, 0xAAF3, 0x0353, + 0xABA1, 0xABF6, 0x03A6, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D, + 0xB0A1, 0xB0FE, 0x043E, 0xB1A1, 0xB1FE, 0x049C, 0xB2A1, 0xB2FE, 0x04FA, + 0xB3A1, 0xB3FE, 0x0558, 0xB4A1, 0xB4FE, 0x05B6, 0xB5A1, 0xB5FE, 0x0614, + 0xB6A1, 0xB6FE, 0x0672, 0xB7A1, 0xB7FE, 0x06D0, 0xB8A1, 0xB8FE, 0x072E, + 0xB9A1, 0xB9FE, 0x078C, 0xBAA1, 0xBAFE, 0x07EA, 0xBBA1, 0xBBFE, 0x0848, + 0xBCA1, 0xBCFE, 0x08A6, 0xBDA1, 0xBDFE, 0x0904, 0xBEA1, 0xBEFE, 0x0962, + 0xBFA1, 0xBFFE, 0x09C0, 0xC0A1, 0xC0FE, 0x0A1E, 0xC1A1, 0xC1FE, 0x0A7C, + 0xC2A1, 0xC2FE, 0x0ADA, 0xC3A1, 0xC3FE, 0x0B38, 0xC4A1, 0xC4FE, 0x0B96, + 0xC5A1, 0xC5FE, 0x0BF4, 0xC6A1, 0xC6FE, 0x0C52, 0xC7A1, 0xC7FE, 0x0CB0, + 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, 0xCBA1, 0xCBCF, 0x0DCA, + 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, 0xCBD6, 0xCBD6, 0x0E5E, + 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, 0xCBE8, 0xCBFE, 0x0E0E, + 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, 0xCDCF, 0xCDCF, 0x0D84, + 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, 0xCDE9, 0xCDFE, 0x0EC9, + 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, 0xCEAE, 0xCEFE, 0x0EEB, + 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, 0xCFFC, 0xCFFE, 0x0F96, + 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, 0xD0A3, 0xD0B7, 0x0F9A, + 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, 0xD0D0, 0xD0D0, 0x0E7C, + 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, 0xD0DE, 0xD0FE, 0x0FD2, + 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, 0xD1D5, 0xD1D5, 0x103C, + 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, 0xD1D9, 0xD1DA, 0x1028, + 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, 0xD1E2, 0xD1E2, 0x16A8, + 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, 0xD1E7, 0xD1E7, 0x102B, + 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, 0xD1ED, 0xD1ED, 0x1127, + 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, 0xD1F1, 0xD1F1, 0x102E, + 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, 0xD1F6, 0xD1F6, 0x112F, + 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, 0xD1FB, 0xD1FB, 0x1035, + 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, 0xD2A1, 0xD2A1, 0x1036, + 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, 0xD2A7, 0xD2AA, 0x113C, + 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, 0xD2AD, 0xD2AD, 0x1144, + 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, 0xD2B3, 0xD2BD, 0x103F, + 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, 0xD2C2, 0xD2C3, 0x11A1, + 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, 0xD2C6, 0xD2CA, 0x11A6, + 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, 0xD2CD, 0xD2CE, 0x11AD, + 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, 0xD2D8, 0xD2D8, 0x104F, + 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, 0xD2DE, 0xD2DF, 0x11C1, + 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, 0xD2E2, 0xD2E2, 0x11C6, + 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, 0xD2E5, 0xD2E8, 0x11D6, + 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, 0xD2EC, 0xD2EF, 0x1055, + 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, 0xD2F6, 0xD2F6, 0x1059, + 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, 0xD3A1, 0xD3FE, 0x1060, + 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, 0xD4E7, 0xD4FB, 0x1103, + 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, 0xD5A1, 0xD5A4, 0x111A, + 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, 0xD5AB, 0xD5AB, 0x102B, + 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, 0xD5AF, 0xD5FE, 0x1125, + 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, 0xD6B9, 0xD6CC, 0x118C, + 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, 0xD7A1, 0xD7CA, 0x11D1, + 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, 0xD7E4, 0xD7E4, 0x1918, + 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, 0xD9A1, 0xD9FE, 0x128B, + 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, 0xDBC5, 0xDBC5, 0x141F, + 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, 0xDBE5, 0xDBFE, 0x1389, + 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, 0xDCA6, 0xDCFE, 0x13A7, + 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, 0xDDA6, 0xDDD4, 0x1404, + 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, 0xDDF4, 0xDDF4, 0x1DB7, + 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, 0xDEFC, 0xDEFC, 0x15D0, + 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, 0xDFA1, 0xDFB2, 0x14B7, + 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, 0xDFE1, 0xDFE1, 0x14F2, + 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, 0xDFE9, 0xDFFE, 0x14FC, + 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, 0xE0F2, 0xE0FE, 0x1562, + 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, 0xE1AE, 0xE1EC, 0x157B, + 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, 0xE2A1, 0xE2FE, 0x15CB, + 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, 0xE3F6, 0xE3FE, 0x167D, + 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, 0xE4A9, 0xE4A9, 0x162E, + 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, 0xE5AE, 0xE5AE, 0x16F2, + 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, 0xE5B3, 0xE5B8, 0x16F1, + 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, 0xE5BB, 0xE5BC, 0x114D, + 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, 0xE5C5, 0xE5CD, 0x16FF, + 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, 0xE5D0, 0xE5D0, 0x1154, + 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, 0xE5D3, 0xE5D5, 0x170A, + 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, 0xE5FA, 0xE5FB, 0x115A, + 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, 0xE5FE, 0xE5FE, 0x115C, + 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, 0xE6A4, 0xE6A4, 0x1161, + 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, 0xE6A8, 0xE6AC, 0x1735, + 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, 0xE6AF, 0xE6B1, 0x1167, + 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, 0xE6B4, 0xE6B6, 0x173C, + 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, 0xE6BC, 0xE6BC, 0x116F, + 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, 0xE6C5, 0xE6C5, 0x1749, + 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, 0xE6CA, 0xE6CA, 0x1041, + 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, 0xE6D3, 0xE6D5, 0x1753, + 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, 0xE6D9, 0xE6D9, 0x1176, + 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, 0xE6DD, 0xE6DE, 0x175A, + 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, 0xE6E1, 0xE6E1, 0x1178, + 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, 0xE6E5, 0xE6E5, 0x1179, + 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, 0xE6E8, 0xE6E8, 0x117C, + 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, 0xE6EC, 0xE6EC, 0x192F, + 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, 0xE6F0, 0xE6F0, 0x1763, + 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, 0xE6F3, 0xE6F4, 0x1764, + 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, 0xE6F7, 0xE6F7, 0x1046, + 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, 0xE6FA, 0xE6FE, 0x1767, + 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, 0xE7A6, 0xE7A6, 0x1188, + 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, 0xE7AA, 0xE7AA, 0x118B, + 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, 0xE7AD, 0xE7AD, 0x118D, + 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, 0xE7B1, 0xE7BE, 0x1775, + 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, 0xE7C1, 0xE7C1, 0x1E67, + 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, 0xE7C7, 0xE7C7, 0x1193, + 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, 0xE7CC, 0xE7CC, 0x178B, + 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, 0xE7CF, 0xE7D0, 0x1197, + 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, 0xE7D4, 0xE7DE, 0x178F, + 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, 0xE7E4, 0xE7E4, 0x119D, + 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, 0xE7E7, 0xE7F6, 0x179F, + 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, 0xE8A1, 0xE8E6, 0x17B6, + 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, 0xE8F0, 0xE8F0, 0x11C9, + 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, 0xE8F7, 0xE8F7, 0x11CB, + 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, 0xE8FA, 0xE8FA, 0x1809, + 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, 0xE8FE, 0xE8FE, 0x11CD, + 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, 0xE9A8, 0xE9AB, 0x1812, + 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, 0xE9CC, 0xE9CC, 0x11D3, + 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, 0xE9F8, 0xE9FE, 0x185F, + 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, 0xEAC2, 0xEAE4, 0x1886, + 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, 0xEAF4, 0xEAF4, 0x1057, + 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, 0xEAF8, 0xEAFB, 0x18B9, + 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, 0xEAFE, 0xEAFE, 0x11E6, + 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, 0xEBA5, 0xEBA6, 0x18C1, + 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, 0xEBA9, 0xEBA9, 0x11EC, + 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, 0xEBBA, 0xEBBB, 0x11EE, + 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, 0xEBBE, 0xEBC0, 0x18D4, + 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, 0xEBC3, 0xEBC5, 0x18D7, + 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, 0xEBCC, 0xEBCC, 0x11F7, + 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, 0xEBD2, 0xEBD2, 0x15B0, + 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, 0xEBD9, 0xEBFE, 0x18E5, + 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, 0xECA7, 0xECA7, 0x1208, + 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, 0xECAB, 0xECAE, 0x1912, + 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, 0xECB2, 0xECB2, 0x105B, + 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, 0xECB6, 0xECB7, 0x1918, + 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, 0xECBA, 0xECBA, 0x1215, + 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, 0xECC2, 0xECC4, 0x1920, + 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, 0xECC7, 0xECC8, 0x1923, + 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, 0xECD5, 0xECD5, 0x121E, + 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, 0xECDF, 0xECE0, 0x1936, + 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, 0xECE4, 0xECE4, 0x1224, + 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, 0xECE9, 0xECF6, 0x193C, + 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, 0xECFA, 0xECFA, 0x122A, + 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, 0xEDA4, 0xEDED, 0x194F, + 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, 0xEEA1, 0xEEDA, 0x19A9, + 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, 0xEFA1, 0xEFFE, 0x1A06, + 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, 0xF2A1, 0xF2BC, 0x1B20, + 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, 0xF2FA, 0xF2FA, 0x168B, + 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, 0xF3B1, 0xF3B1, 0x105F, + 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, 0xF4A7, 0xF4A7, 0x1954, + 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, 0xF4EF, 0xF4FE, 0x1C25, + 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, 0xF6F4, 0xF6F4, 0x10B7, + 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, 0xF6F7, 0xF6FE, 0x1CE7, + 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, 0xF7B9, 0xF7C7, 0x1D06, + 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, 0xF7D3, 0xF7D3, 0x10F4, + 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, 0xF8DB, 0xF8DB, 0x1D94, + 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, 0xF8F1, 0xF8FE, 0x1D98, + 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, 0xFAA2, 0xFAA2, 0x0DE6, + 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, 0xFAE7, 0xFAFE, 0x1E47, + 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, 0xFCA9, 0xFCA9, 0x0EE7, + 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp new file mode 100644 index 0000000000..843ab7c0d1 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp @@ -0,0 +1,16 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_KSC_EUC_V_0[16 * 3] = { + 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6, + 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2, + 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C, + 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE, + 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD, + 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp new file mode 100644 index 0000000000..4476c3c169 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp @@ -0,0 +1,235 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_KSCms_UHC_HW_H_1[675 * 3] = { + 0x0020, 0x007E, 0x1F9E, 0x8141, 0x815A, 0x2475, 0x8161, 0x817A, 0x248F, + 0x8181, 0x81FE, 0x24A9, 0x8241, 0x825A, 0x2527, 0x8261, 0x827A, 0x2541, + 0x8281, 0x82FE, 0x255B, 0x8341, 0x835A, 0x25D9, 0x8361, 0x837A, 0x25F3, + 0x8381, 0x83FE, 0x260D, 0x8441, 0x845A, 0x268B, 0x8461, 0x847A, 0x26A5, + 0x8481, 0x84FE, 0x26BF, 0x8541, 0x855A, 0x273D, 0x8561, 0x857A, 0x2757, + 0x8581, 0x85FE, 0x2771, 0x8641, 0x865A, 0x27EF, 0x8661, 0x867A, 0x2809, + 0x8681, 0x86FE, 0x2823, 0x8741, 0x875A, 0x28A1, 0x8761, 0x877A, 0x28BB, + 0x8781, 0x87FE, 0x28D5, 0x8841, 0x885A, 0x2953, 0x8861, 0x887A, 0x296D, + 0x8881, 0x88FE, 0x2987, 0x8941, 0x895A, 0x2A05, 0x8961, 0x897A, 0x2A1F, + 0x8981, 0x89FE, 0x2A39, 0x8A41, 0x8A5A, 0x2AB7, 0x8A61, 0x8A7A, 0x2AD1, + 0x8A81, 0x8AFE, 0x2AEB, 0x8B41, 0x8B5A, 0x2B69, 0x8B61, 0x8B7A, 0x2B83, + 0x8B81, 0x8BFE, 0x2B9D, 0x8C41, 0x8C5A, 0x2C1B, 0x8C61, 0x8C7A, 0x2C35, + 0x8C81, 0x8CFE, 0x2C4F, 0x8D41, 0x8D5A, 0x2CCD, 0x8D61, 0x8D7A, 0x2CE7, + 0x8D81, 0x8DFE, 0x2D01, 0x8E41, 0x8E5A, 0x2D7F, 0x8E61, 0x8E7A, 0x2D99, + 0x8E81, 0x8EFE, 0x2DB3, 0x8F41, 0x8F5A, 0x2E31, 0x8F61, 0x8F7A, 0x2E4B, + 0x8F81, 0x8FFE, 0x2E65, 0x9041, 0x905A, 0x2EE3, 0x9061, 0x907A, 0x2EFD, + 0x9081, 0x90FE, 0x2F17, 0x9141, 0x915A, 0x2F95, 0x9161, 0x917A, 0x2FAF, + 0x9181, 0x91FE, 0x2FC9, 0x9241, 0x925A, 0x3047, 0x9261, 0x927A, 0x3061, + 0x9281, 0x92FE, 0x307B, 0x9341, 0x935A, 0x30F9, 0x9361, 0x937A, 0x3113, + 0x9381, 0x93FE, 0x312D, 0x9441, 0x945A, 0x31AB, 0x9461, 0x947A, 0x31C5, + 0x9481, 0x94FE, 0x31DF, 0x9541, 0x955A, 0x325D, 0x9561, 0x957A, 0x3277, + 0x9581, 0x95FE, 0x3291, 0x9641, 0x965A, 0x330F, 0x9661, 0x967A, 0x3329, + 0x9681, 0x96FE, 0x3343, 0x9741, 0x975A, 0x33C1, 0x9761, 0x977A, 0x33DB, + 0x9781, 0x97FE, 0x33F5, 0x9841, 0x985A, 0x3473, 0x9861, 0x987A, 0x348D, + 0x9881, 0x98FE, 0x34A7, 0x9941, 0x995A, 0x3525, 0x9961, 0x997A, 0x353F, + 0x9981, 0x99FE, 0x3559, 0x9A41, 0x9A5A, 0x35D7, 0x9A61, 0x9A7A, 0x35F1, + 0x9A81, 0x9AFE, 0x360B, 0x9B41, 0x9B5A, 0x3689, 0x9B61, 0x9B7A, 0x36A3, + 0x9B81, 0x9BFE, 0x36BD, 0x9C41, 0x9C5A, 0x373B, 0x9C61, 0x9C7A, 0x3755, + 0x9C81, 0x9CFE, 0x376F, 0x9D41, 0x9D5A, 0x37ED, 0x9D61, 0x9D7A, 0x3807, + 0x9D81, 0x9DFE, 0x3821, 0x9E41, 0x9E5A, 0x389F, 0x9E61, 0x9E7A, 0x38B9, + 0x9E81, 0x9EFE, 0x38D3, 0x9F41, 0x9F5A, 0x3951, 0x9F61, 0x9F7A, 0x396B, + 0x9F81, 0x9FFE, 0x3985, 0xA041, 0xA05A, 0x3A03, 0xA061, 0xA07A, 0x3A1D, + 0xA081, 0xA0FE, 0x3A37, 0xA141, 0xA15A, 0x3AB5, 0xA161, 0xA17A, 0x3ACF, + 0xA181, 0xA1A0, 0x3AE9, 0xA1A1, 0xA1FE, 0x0065, 0xA241, 0xA25A, 0x3B09, + 0xA261, 0xA27A, 0x3B23, 0xA281, 0xA2A0, 0x3B3D, 0xA2A1, 0xA2E5, 0x00C3, + 0xA341, 0xA35A, 0x3B5D, 0xA361, 0xA37A, 0x3B77, 0xA381, 0xA3A0, 0x3B91, + 0xA3A1, 0xA3FE, 0x0108, 0xA441, 0xA45A, 0x3BB1, 0xA461, 0xA47A, 0x3BCB, + 0xA481, 0xA4A0, 0x3BE5, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199, + 0xA541, 0xA55A, 0x3C05, 0xA561, 0xA57A, 0x3C1F, 0xA581, 0xA5A0, 0x3C39, + 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, + 0xA5E1, 0xA5F8, 0x01EF, 0xA641, 0xA65A, 0x3C59, 0xA661, 0xA67A, 0x3C73, + 0xA681, 0xA6A0, 0x3C8D, 0xA6A1, 0xA6E4, 0x0207, 0xA741, 0xA75A, 0x3CAD, + 0xA761, 0xA77A, 0x3CC7, 0xA781, 0xA7A0, 0x3CE1, 0xA7A1, 0xA7EF, 0x024B, + 0xA841, 0xA85A, 0x3D01, 0xA861, 0xA87A, 0x3D1B, 0xA881, 0xA8A0, 0x3D35, + 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F, + 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA95A, 0x3D55, 0xA961, 0xA97A, 0x3D6F, + 0xA981, 0xA9A0, 0x3D89, 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA5A, 0x3DA9, + 0xAA61, 0xAA7A, 0x3DC3, 0xAA81, 0xAAA0, 0x3DDD, 0xAAA1, 0xAAF3, 0x0353, + 0xAB41, 0xAB5A, 0x3DFD, 0xAB61, 0xAB7A, 0x3E17, 0xAB81, 0xABA0, 0x3E31, + 0xABA1, 0xABF6, 0x03A6, 0xAC41, 0xAC5A, 0x3E51, 0xAC61, 0xAC7A, 0x3E6B, + 0xAC81, 0xACA0, 0x3E85, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D, + 0xAD41, 0xAD5A, 0x3EA5, 0xAD61, 0xAD7A, 0x3EBF, 0xAD81, 0xADA0, 0x3ED9, + 0xAE41, 0xAE5A, 0x3EF9, 0xAE61, 0xAE7A, 0x3F13, 0xAE81, 0xAEA0, 0x3F2D, + 0xAF41, 0xAF5A, 0x3F4D, 0xAF61, 0xAF7A, 0x3F67, 0xAF81, 0xAFA0, 0x3F81, + 0xB041, 0xB05A, 0x3FA1, 0xB061, 0xB07A, 0x3FBB, 0xB081, 0xB0A0, 0x3FD5, + 0xB0A1, 0xB0FE, 0x043E, 0xB141, 0xB15A, 0x3FF5, 0xB161, 0xB17A, 0x400F, + 0xB181, 0xB1A0, 0x4029, 0xB1A1, 0xB1FE, 0x049C, 0xB241, 0xB25A, 0x4049, + 0xB261, 0xB27A, 0x4063, 0xB281, 0xB2A0, 0x407D, 0xB2A1, 0xB2FE, 0x04FA, + 0xB341, 0xB35A, 0x409D, 0xB361, 0xB37A, 0x40B7, 0xB381, 0xB3A0, 0x40D1, + 0xB3A1, 0xB3FE, 0x0558, 0xB441, 0xB45A, 0x40F1, 0xB461, 0xB47A, 0x410B, + 0xB481, 0xB4A0, 0x4125, 0xB4A1, 0xB4FE, 0x05B6, 0xB541, 0xB55A, 0x4145, + 0xB561, 0xB57A, 0x415F, 0xB581, 0xB5A0, 0x4179, 0xB5A1, 0xB5FE, 0x0614, + 0xB641, 0xB65A, 0x4199, 0xB661, 0xB67A, 0x41B3, 0xB681, 0xB6A0, 0x41CD, + 0xB6A1, 0xB6FE, 0x0672, 0xB741, 0xB75A, 0x41ED, 0xB761, 0xB77A, 0x4207, + 0xB781, 0xB7A0, 0x4221, 0xB7A1, 0xB7FE, 0x06D0, 0xB841, 0xB85A, 0x4241, + 0xB861, 0xB87A, 0x425B, 0xB881, 0xB8A0, 0x4275, 0xB8A1, 0xB8FE, 0x072E, + 0xB941, 0xB95A, 0x4295, 0xB961, 0xB97A, 0x42AF, 0xB981, 0xB9A0, 0x42C9, + 0xB9A1, 0xB9FE, 0x078C, 0xBA41, 0xBA5A, 0x42E9, 0xBA61, 0xBA7A, 0x4303, + 0xBA81, 0xBAA0, 0x431D, 0xBAA1, 0xBAFE, 0x07EA, 0xBB41, 0xBB5A, 0x433D, + 0xBB61, 0xBB7A, 0x4357, 0xBB81, 0xBBA0, 0x4371, 0xBBA1, 0xBBFE, 0x0848, + 0xBC41, 0xBC5A, 0x4391, 0xBC61, 0xBC7A, 0x43AB, 0xBC81, 0xBCA0, 0x43C5, + 0xBCA1, 0xBCFE, 0x08A6, 0xBD41, 0xBD5A, 0x43E5, 0xBD61, 0xBD7A, 0x43FF, + 0xBD81, 0xBDA0, 0x4419, 0xBDA1, 0xBDFE, 0x0904, 0xBE41, 0xBE5A, 0x4439, + 0xBE61, 0xBE7A, 0x4453, 0xBE81, 0xBEA0, 0x446D, 0xBEA1, 0xBEFE, 0x0962, + 0xBF41, 0xBF5A, 0x448D, 0xBF61, 0xBF7A, 0x44A7, 0xBF81, 0xBFA0, 0x44C1, + 0xBFA1, 0xBFFE, 0x09C0, 0xC041, 0xC05A, 0x44E1, 0xC061, 0xC07A, 0x44FB, + 0xC081, 0xC0A0, 0x4515, 0xC0A1, 0xC0FE, 0x0A1E, 0xC141, 0xC15A, 0x4535, + 0xC161, 0xC17A, 0x454F, 0xC181, 0xC1A0, 0x4569, 0xC1A1, 0xC1FE, 0x0A7C, + 0xC241, 0xC25A, 0x4589, 0xC261, 0xC27A, 0x45A3, 0xC281, 0xC2A0, 0x45BD, + 0xC2A1, 0xC2FE, 0x0ADA, 0xC341, 0xC35A, 0x45DD, 0xC361, 0xC37A, 0x45F7, + 0xC381, 0xC3A0, 0x4611, 0xC3A1, 0xC3FE, 0x0B38, 0xC441, 0xC45A, 0x4631, + 0xC461, 0xC47A, 0x464B, 0xC481, 0xC4A0, 0x4665, 0xC4A1, 0xC4FE, 0x0B96, + 0xC541, 0xC55A, 0x4685, 0xC561, 0xC57A, 0x469F, 0xC581, 0xC5A0, 0x46B9, + 0xC5A1, 0xC5FE, 0x0BF4, 0xC641, 0xC652, 0x46D9, 0xC6A1, 0xC6FE, 0x0C52, + 0xC7A1, 0xC7FE, 0x0CB0, 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, + 0xCBA1, 0xCBCF, 0x0DCA, 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, + 0xCBD6, 0xCBD6, 0x0E5E, 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, + 0xCBE8, 0xCBFE, 0x0E0E, 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, + 0xCDCF, 0xCDCF, 0x0D84, 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, + 0xCDE9, 0xCDFE, 0x0EC9, 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, + 0xCEAE, 0xCEFE, 0x0EEB, 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, + 0xCFFC, 0xCFFE, 0x0F96, 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, + 0xD0A3, 0xD0B7, 0x0F9A, 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, + 0xD0D0, 0xD0D0, 0x0E7C, 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, + 0xD0DE, 0xD0FE, 0x0FD2, 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, + 0xD1D5, 0xD1D5, 0x103C, 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, + 0xD1D9, 0xD1DA, 0x1028, 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, + 0xD1E2, 0xD1E2, 0x16A8, 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, + 0xD1E7, 0xD1E7, 0x102B, 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, + 0xD1ED, 0xD1ED, 0x1127, 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, + 0xD1F1, 0xD1F1, 0x102E, 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, + 0xD1F6, 0xD1F6, 0x112F, 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, + 0xD1FB, 0xD1FB, 0x1035, 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, + 0xD2A1, 0xD2A1, 0x1036, 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, + 0xD2A7, 0xD2AA, 0x113C, 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, + 0xD2AD, 0xD2AD, 0x1144, 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, + 0xD2B3, 0xD2BD, 0x103F, 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, + 0xD2C2, 0xD2C3, 0x11A1, 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, + 0xD2C6, 0xD2CA, 0x11A6, 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, + 0xD2CD, 0xD2CE, 0x11AD, 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, + 0xD2D8, 0xD2D8, 0x104F, 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, + 0xD2DE, 0xD2DF, 0x11C1, 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, + 0xD2E2, 0xD2E2, 0x11C6, 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, + 0xD2E5, 0xD2E8, 0x11D6, 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, + 0xD2EC, 0xD2EF, 0x1055, 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, + 0xD2F6, 0xD2F6, 0x1059, 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, + 0xD3A1, 0xD3FE, 0x1060, 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, + 0xD4E7, 0xD4FB, 0x1103, 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, + 0xD5A1, 0xD5A4, 0x111A, 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, + 0xD5AB, 0xD5AB, 0x102B, 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, + 0xD5AF, 0xD5FE, 0x1125, 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, + 0xD6B9, 0xD6CC, 0x118C, 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, + 0xD7A1, 0xD7CA, 0x11D1, 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, + 0xD7E4, 0xD7E4, 0x1918, 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, + 0xD9A1, 0xD9FE, 0x128B, 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, + 0xDBC5, 0xDBC5, 0x141F, 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, + 0xDBE5, 0xDBFE, 0x1389, 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, + 0xDCA6, 0xDCFE, 0x13A7, 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, + 0xDDA6, 0xDDD4, 0x1404, 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, + 0xDDF4, 0xDDF4, 0x1DB7, 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, + 0xDEFC, 0xDEFC, 0x15D0, 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, + 0xDFA1, 0xDFB2, 0x14B7, 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, + 0xDFE1, 0xDFE1, 0x14F2, 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, + 0xDFE9, 0xDFFE, 0x14FC, 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, + 0xE0F2, 0xE0FE, 0x1562, 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, + 0xE1AE, 0xE1EC, 0x157B, 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, + 0xE2A1, 0xE2FE, 0x15CB, 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, + 0xE3F6, 0xE3FE, 0x167D, 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, + 0xE4A9, 0xE4A9, 0x162E, 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, + 0xE5AE, 0xE5AE, 0x16F2, 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, + 0xE5B3, 0xE5B8, 0x16F1, 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, + 0xE5BB, 0xE5BC, 0x114D, 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, + 0xE5C5, 0xE5CD, 0x16FF, 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, + 0xE5D0, 0xE5D0, 0x1154, 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, + 0xE5D3, 0xE5D5, 0x170A, 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, + 0xE5FA, 0xE5FB, 0x115A, 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, + 0xE5FE, 0xE5FE, 0x115C, 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, + 0xE6A4, 0xE6A4, 0x1161, 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, + 0xE6A8, 0xE6AC, 0x1735, 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, + 0xE6AF, 0xE6B1, 0x1167, 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, + 0xE6B4, 0xE6B6, 0x173C, 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, + 0xE6BC, 0xE6BC, 0x116F, 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, + 0xE6C5, 0xE6C5, 0x1749, 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, + 0xE6CA, 0xE6CA, 0x1041, 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, + 0xE6D3, 0xE6D5, 0x1753, 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, + 0xE6D9, 0xE6D9, 0x1176, 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, + 0xE6DD, 0xE6DE, 0x175A, 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, + 0xE6E1, 0xE6E1, 0x1178, 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, + 0xE6E5, 0xE6E5, 0x1179, 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, + 0xE6E8, 0xE6E8, 0x117C, 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, + 0xE6EC, 0xE6EC, 0x192F, 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, + 0xE6F0, 0xE6F0, 0x1763, 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, + 0xE6F3, 0xE6F4, 0x1764, 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, + 0xE6F7, 0xE6F7, 0x1046, 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, + 0xE6FA, 0xE6FE, 0x1767, 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, + 0xE7A6, 0xE7A6, 0x1188, 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, + 0xE7AA, 0xE7AA, 0x118B, 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, + 0xE7AD, 0xE7AD, 0x118D, 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, + 0xE7B1, 0xE7BE, 0x1775, 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, + 0xE7C1, 0xE7C1, 0x1E67, 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, + 0xE7C7, 0xE7C7, 0x1193, 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, + 0xE7CC, 0xE7CC, 0x178B, 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, + 0xE7CF, 0xE7D0, 0x1197, 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, + 0xE7D4, 0xE7DE, 0x178F, 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, + 0xE7E4, 0xE7E4, 0x119D, 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, + 0xE7E7, 0xE7F6, 0x179F, 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, + 0xE8A1, 0xE8E6, 0x17B6, 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, + 0xE8F0, 0xE8F0, 0x11C9, 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, + 0xE8F7, 0xE8F7, 0x11CB, 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, + 0xE8FA, 0xE8FA, 0x1809, 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, + 0xE8FE, 0xE8FE, 0x11CD, 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, + 0xE9A8, 0xE9AB, 0x1812, 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, + 0xE9CC, 0xE9CC, 0x11D3, 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, + 0xE9F8, 0xE9FE, 0x185F, 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, + 0xEAC2, 0xEAE4, 0x1886, 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, + 0xEAF4, 0xEAF4, 0x1057, 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, + 0xEAF8, 0xEAFB, 0x18B9, 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, + 0xEAFE, 0xEAFE, 0x11E6, 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, + 0xEBA5, 0xEBA6, 0x18C1, 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, + 0xEBA9, 0xEBA9, 0x11EC, 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, + 0xEBBA, 0xEBBB, 0x11EE, 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, + 0xEBBE, 0xEBC0, 0x18D4, 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, + 0xEBC3, 0xEBC5, 0x18D7, 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, + 0xEBCC, 0xEBCC, 0x11F7, 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, + 0xEBD2, 0xEBD2, 0x15B0, 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, + 0xEBD9, 0xEBFE, 0x18E5, 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, + 0xECA7, 0xECA7, 0x1208, 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, + 0xECAB, 0xECAE, 0x1912, 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, + 0xECB2, 0xECB2, 0x105B, 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, + 0xECB6, 0xECB7, 0x1918, 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, + 0xECBA, 0xECBA, 0x1215, 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, + 0xECC2, 0xECC4, 0x1920, 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, + 0xECC7, 0xECC8, 0x1923, 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, + 0xECD5, 0xECD5, 0x121E, 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, + 0xECDF, 0xECE0, 0x1936, 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, + 0xECE4, 0xECE4, 0x1224, 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, + 0xECE9, 0xECF6, 0x193C, 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, + 0xECFA, 0xECFA, 0x122A, 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, + 0xEDA4, 0xEDED, 0x194F, 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, + 0xEEA1, 0xEEDA, 0x19A9, 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, + 0xEFA1, 0xEFFE, 0x1A06, 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, + 0xF2A1, 0xF2BC, 0x1B20, 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, + 0xF2FA, 0xF2FA, 0x168B, 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, + 0xF3B1, 0xF3B1, 0x105F, 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, + 0xF4A7, 0xF4A7, 0x1954, 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, + 0xF4EF, 0xF4FE, 0x1C25, 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, + 0xF6F4, 0xF6F4, 0x10B7, 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, + 0xF6F7, 0xF6FE, 0x1CE7, 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, + 0xF7B9, 0xF7C7, 0x1D06, 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, + 0xF7D3, 0xF7D3, 0x10F4, 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, + 0xF8DB, 0xF8DB, 0x1D94, 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, + 0xF8F1, 0xF8FE, 0x1D98, 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, + 0xFAA2, 0xFAA2, 0x0DE6, 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, + 0xFAE7, 0xFAFE, 0x1E47, 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, + 0xFCA9, 0xFCA9, 0x0EE7, 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp new file mode 100644 index 0000000000..1ebcdd34be --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp @@ -0,0 +1,16 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_KSCms_UHC_HW_V_1[16 * 3] = { + 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6, + 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2, + 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C, + 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE, + 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD, + 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp new file mode 100644 index 0000000000..865b7c6c79 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp @@ -0,0 +1,235 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_KSCms_UHC_H_1[675 * 3] = { + 0x0020, 0x007E, 0x0001, 0x8141, 0x815A, 0x2475, 0x8161, 0x817A, 0x248F, + 0x8181, 0x81FE, 0x24A9, 0x8241, 0x825A, 0x2527, 0x8261, 0x827A, 0x2541, + 0x8281, 0x82FE, 0x255B, 0x8341, 0x835A, 0x25D9, 0x8361, 0x837A, 0x25F3, + 0x8381, 0x83FE, 0x260D, 0x8441, 0x845A, 0x268B, 0x8461, 0x847A, 0x26A5, + 0x8481, 0x84FE, 0x26BF, 0x8541, 0x855A, 0x273D, 0x8561, 0x857A, 0x2757, + 0x8581, 0x85FE, 0x2771, 0x8641, 0x865A, 0x27EF, 0x8661, 0x867A, 0x2809, + 0x8681, 0x86FE, 0x2823, 0x8741, 0x875A, 0x28A1, 0x8761, 0x877A, 0x28BB, + 0x8781, 0x87FE, 0x28D5, 0x8841, 0x885A, 0x2953, 0x8861, 0x887A, 0x296D, + 0x8881, 0x88FE, 0x2987, 0x8941, 0x895A, 0x2A05, 0x8961, 0x897A, 0x2A1F, + 0x8981, 0x89FE, 0x2A39, 0x8A41, 0x8A5A, 0x2AB7, 0x8A61, 0x8A7A, 0x2AD1, + 0x8A81, 0x8AFE, 0x2AEB, 0x8B41, 0x8B5A, 0x2B69, 0x8B61, 0x8B7A, 0x2B83, + 0x8B81, 0x8BFE, 0x2B9D, 0x8C41, 0x8C5A, 0x2C1B, 0x8C61, 0x8C7A, 0x2C35, + 0x8C81, 0x8CFE, 0x2C4F, 0x8D41, 0x8D5A, 0x2CCD, 0x8D61, 0x8D7A, 0x2CE7, + 0x8D81, 0x8DFE, 0x2D01, 0x8E41, 0x8E5A, 0x2D7F, 0x8E61, 0x8E7A, 0x2D99, + 0x8E81, 0x8EFE, 0x2DB3, 0x8F41, 0x8F5A, 0x2E31, 0x8F61, 0x8F7A, 0x2E4B, + 0x8F81, 0x8FFE, 0x2E65, 0x9041, 0x905A, 0x2EE3, 0x9061, 0x907A, 0x2EFD, + 0x9081, 0x90FE, 0x2F17, 0x9141, 0x915A, 0x2F95, 0x9161, 0x917A, 0x2FAF, + 0x9181, 0x91FE, 0x2FC9, 0x9241, 0x925A, 0x3047, 0x9261, 0x927A, 0x3061, + 0x9281, 0x92FE, 0x307B, 0x9341, 0x935A, 0x30F9, 0x9361, 0x937A, 0x3113, + 0x9381, 0x93FE, 0x312D, 0x9441, 0x945A, 0x31AB, 0x9461, 0x947A, 0x31C5, + 0x9481, 0x94FE, 0x31DF, 0x9541, 0x955A, 0x325D, 0x9561, 0x957A, 0x3277, + 0x9581, 0x95FE, 0x3291, 0x9641, 0x965A, 0x330F, 0x9661, 0x967A, 0x3329, + 0x9681, 0x96FE, 0x3343, 0x9741, 0x975A, 0x33C1, 0x9761, 0x977A, 0x33DB, + 0x9781, 0x97FE, 0x33F5, 0x9841, 0x985A, 0x3473, 0x9861, 0x987A, 0x348D, + 0x9881, 0x98FE, 0x34A7, 0x9941, 0x995A, 0x3525, 0x9961, 0x997A, 0x353F, + 0x9981, 0x99FE, 0x3559, 0x9A41, 0x9A5A, 0x35D7, 0x9A61, 0x9A7A, 0x35F1, + 0x9A81, 0x9AFE, 0x360B, 0x9B41, 0x9B5A, 0x3689, 0x9B61, 0x9B7A, 0x36A3, + 0x9B81, 0x9BFE, 0x36BD, 0x9C41, 0x9C5A, 0x373B, 0x9C61, 0x9C7A, 0x3755, + 0x9C81, 0x9CFE, 0x376F, 0x9D41, 0x9D5A, 0x37ED, 0x9D61, 0x9D7A, 0x3807, + 0x9D81, 0x9DFE, 0x3821, 0x9E41, 0x9E5A, 0x389F, 0x9E61, 0x9E7A, 0x38B9, + 0x9E81, 0x9EFE, 0x38D3, 0x9F41, 0x9F5A, 0x3951, 0x9F61, 0x9F7A, 0x396B, + 0x9F81, 0x9FFE, 0x3985, 0xA041, 0xA05A, 0x3A03, 0xA061, 0xA07A, 0x3A1D, + 0xA081, 0xA0FE, 0x3A37, 0xA141, 0xA15A, 0x3AB5, 0xA161, 0xA17A, 0x3ACF, + 0xA181, 0xA1A0, 0x3AE9, 0xA1A1, 0xA1FE, 0x0065, 0xA241, 0xA25A, 0x3B09, + 0xA261, 0xA27A, 0x3B23, 0xA281, 0xA2A0, 0x3B3D, 0xA2A1, 0xA2E5, 0x00C3, + 0xA341, 0xA35A, 0x3B5D, 0xA361, 0xA37A, 0x3B77, 0xA381, 0xA3A0, 0x3B91, + 0xA3A1, 0xA3FE, 0x0108, 0xA441, 0xA45A, 0x3BB1, 0xA461, 0xA47A, 0x3BCB, + 0xA481, 0xA4A0, 0x3BE5, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199, + 0xA541, 0xA55A, 0x3C05, 0xA561, 0xA57A, 0x3C1F, 0xA581, 0xA5A0, 0x3C39, + 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, + 0xA5E1, 0xA5F8, 0x01EF, 0xA641, 0xA65A, 0x3C59, 0xA661, 0xA67A, 0x3C73, + 0xA681, 0xA6A0, 0x3C8D, 0xA6A1, 0xA6E4, 0x0207, 0xA741, 0xA75A, 0x3CAD, + 0xA761, 0xA77A, 0x3CC7, 0xA781, 0xA7A0, 0x3CE1, 0xA7A1, 0xA7EF, 0x024B, + 0xA841, 0xA85A, 0x3D01, 0xA861, 0xA87A, 0x3D1B, 0xA881, 0xA8A0, 0x3D35, + 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F, + 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA95A, 0x3D55, 0xA961, 0xA97A, 0x3D6F, + 0xA981, 0xA9A0, 0x3D89, 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA5A, 0x3DA9, + 0xAA61, 0xAA7A, 0x3DC3, 0xAA81, 0xAAA0, 0x3DDD, 0xAAA1, 0xAAF3, 0x0353, + 0xAB41, 0xAB5A, 0x3DFD, 0xAB61, 0xAB7A, 0x3E17, 0xAB81, 0xABA0, 0x3E31, + 0xABA1, 0xABF6, 0x03A6, 0xAC41, 0xAC5A, 0x3E51, 0xAC61, 0xAC7A, 0x3E6B, + 0xAC81, 0xACA0, 0x3E85, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D, + 0xAD41, 0xAD5A, 0x3EA5, 0xAD61, 0xAD7A, 0x3EBF, 0xAD81, 0xADA0, 0x3ED9, + 0xAE41, 0xAE5A, 0x3EF9, 0xAE61, 0xAE7A, 0x3F13, 0xAE81, 0xAEA0, 0x3F2D, + 0xAF41, 0xAF5A, 0x3F4D, 0xAF61, 0xAF7A, 0x3F67, 0xAF81, 0xAFA0, 0x3F81, + 0xB041, 0xB05A, 0x3FA1, 0xB061, 0xB07A, 0x3FBB, 0xB081, 0xB0A0, 0x3FD5, + 0xB0A1, 0xB0FE, 0x043E, 0xB141, 0xB15A, 0x3FF5, 0xB161, 0xB17A, 0x400F, + 0xB181, 0xB1A0, 0x4029, 0xB1A1, 0xB1FE, 0x049C, 0xB241, 0xB25A, 0x4049, + 0xB261, 0xB27A, 0x4063, 0xB281, 0xB2A0, 0x407D, 0xB2A1, 0xB2FE, 0x04FA, + 0xB341, 0xB35A, 0x409D, 0xB361, 0xB37A, 0x40B7, 0xB381, 0xB3A0, 0x40D1, + 0xB3A1, 0xB3FE, 0x0558, 0xB441, 0xB45A, 0x40F1, 0xB461, 0xB47A, 0x410B, + 0xB481, 0xB4A0, 0x4125, 0xB4A1, 0xB4FE, 0x05B6, 0xB541, 0xB55A, 0x4145, + 0xB561, 0xB57A, 0x415F, 0xB581, 0xB5A0, 0x4179, 0xB5A1, 0xB5FE, 0x0614, + 0xB641, 0xB65A, 0x4199, 0xB661, 0xB67A, 0x41B3, 0xB681, 0xB6A0, 0x41CD, + 0xB6A1, 0xB6FE, 0x0672, 0xB741, 0xB75A, 0x41ED, 0xB761, 0xB77A, 0x4207, + 0xB781, 0xB7A0, 0x4221, 0xB7A1, 0xB7FE, 0x06D0, 0xB841, 0xB85A, 0x4241, + 0xB861, 0xB87A, 0x425B, 0xB881, 0xB8A0, 0x4275, 0xB8A1, 0xB8FE, 0x072E, + 0xB941, 0xB95A, 0x4295, 0xB961, 0xB97A, 0x42AF, 0xB981, 0xB9A0, 0x42C9, + 0xB9A1, 0xB9FE, 0x078C, 0xBA41, 0xBA5A, 0x42E9, 0xBA61, 0xBA7A, 0x4303, + 0xBA81, 0xBAA0, 0x431D, 0xBAA1, 0xBAFE, 0x07EA, 0xBB41, 0xBB5A, 0x433D, + 0xBB61, 0xBB7A, 0x4357, 0xBB81, 0xBBA0, 0x4371, 0xBBA1, 0xBBFE, 0x0848, + 0xBC41, 0xBC5A, 0x4391, 0xBC61, 0xBC7A, 0x43AB, 0xBC81, 0xBCA0, 0x43C5, + 0xBCA1, 0xBCFE, 0x08A6, 0xBD41, 0xBD5A, 0x43E5, 0xBD61, 0xBD7A, 0x43FF, + 0xBD81, 0xBDA0, 0x4419, 0xBDA1, 0xBDFE, 0x0904, 0xBE41, 0xBE5A, 0x4439, + 0xBE61, 0xBE7A, 0x4453, 0xBE81, 0xBEA0, 0x446D, 0xBEA1, 0xBEFE, 0x0962, + 0xBF41, 0xBF5A, 0x448D, 0xBF61, 0xBF7A, 0x44A7, 0xBF81, 0xBFA0, 0x44C1, + 0xBFA1, 0xBFFE, 0x09C0, 0xC041, 0xC05A, 0x44E1, 0xC061, 0xC07A, 0x44FB, + 0xC081, 0xC0A0, 0x4515, 0xC0A1, 0xC0FE, 0x0A1E, 0xC141, 0xC15A, 0x4535, + 0xC161, 0xC17A, 0x454F, 0xC181, 0xC1A0, 0x4569, 0xC1A1, 0xC1FE, 0x0A7C, + 0xC241, 0xC25A, 0x4589, 0xC261, 0xC27A, 0x45A3, 0xC281, 0xC2A0, 0x45BD, + 0xC2A1, 0xC2FE, 0x0ADA, 0xC341, 0xC35A, 0x45DD, 0xC361, 0xC37A, 0x45F7, + 0xC381, 0xC3A0, 0x4611, 0xC3A1, 0xC3FE, 0x0B38, 0xC441, 0xC45A, 0x4631, + 0xC461, 0xC47A, 0x464B, 0xC481, 0xC4A0, 0x4665, 0xC4A1, 0xC4FE, 0x0B96, + 0xC541, 0xC55A, 0x4685, 0xC561, 0xC57A, 0x469F, 0xC581, 0xC5A0, 0x46B9, + 0xC5A1, 0xC5FE, 0x0BF4, 0xC641, 0xC652, 0x46D9, 0xC6A1, 0xC6FE, 0x0C52, + 0xC7A1, 0xC7FE, 0x0CB0, 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, + 0xCBA1, 0xCBCF, 0x0DCA, 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, + 0xCBD6, 0xCBD6, 0x0E5E, 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, + 0xCBE8, 0xCBFE, 0x0E0E, 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, + 0xCDCF, 0xCDCF, 0x0D84, 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, + 0xCDE9, 0xCDFE, 0x0EC9, 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, + 0xCEAE, 0xCEFE, 0x0EEB, 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, + 0xCFFC, 0xCFFE, 0x0F96, 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, + 0xD0A3, 0xD0B7, 0x0F9A, 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, + 0xD0D0, 0xD0D0, 0x0E7C, 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, + 0xD0DE, 0xD0FE, 0x0FD2, 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, + 0xD1D5, 0xD1D5, 0x103C, 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, + 0xD1D9, 0xD1DA, 0x1028, 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, + 0xD1E2, 0xD1E2, 0x16A8, 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, + 0xD1E7, 0xD1E7, 0x102B, 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, + 0xD1ED, 0xD1ED, 0x1127, 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, + 0xD1F1, 0xD1F1, 0x102E, 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, + 0xD1F6, 0xD1F6, 0x112F, 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, + 0xD1FB, 0xD1FB, 0x1035, 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, + 0xD2A1, 0xD2A1, 0x1036, 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, + 0xD2A7, 0xD2AA, 0x113C, 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, + 0xD2AD, 0xD2AD, 0x1144, 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, + 0xD2B3, 0xD2BD, 0x103F, 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, + 0xD2C2, 0xD2C3, 0x11A1, 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, + 0xD2C6, 0xD2CA, 0x11A6, 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, + 0xD2CD, 0xD2CE, 0x11AD, 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, + 0xD2D8, 0xD2D8, 0x104F, 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, + 0xD2DE, 0xD2DF, 0x11C1, 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, + 0xD2E2, 0xD2E2, 0x11C6, 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, + 0xD2E5, 0xD2E8, 0x11D6, 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, + 0xD2EC, 0xD2EF, 0x1055, 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, + 0xD2F6, 0xD2F6, 0x1059, 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, + 0xD3A1, 0xD3FE, 0x1060, 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, + 0xD4E7, 0xD4FB, 0x1103, 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, + 0xD5A1, 0xD5A4, 0x111A, 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, + 0xD5AB, 0xD5AB, 0x102B, 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, + 0xD5AF, 0xD5FE, 0x1125, 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, + 0xD6B9, 0xD6CC, 0x118C, 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, + 0xD7A1, 0xD7CA, 0x11D1, 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, + 0xD7E4, 0xD7E4, 0x1918, 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, + 0xD9A1, 0xD9FE, 0x128B, 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, + 0xDBC5, 0xDBC5, 0x141F, 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, + 0xDBE5, 0xDBFE, 0x1389, 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, + 0xDCA6, 0xDCFE, 0x13A7, 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, + 0xDDA6, 0xDDD4, 0x1404, 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, + 0xDDF4, 0xDDF4, 0x1DB7, 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, + 0xDEFC, 0xDEFC, 0x15D0, 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, + 0xDFA1, 0xDFB2, 0x14B7, 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, + 0xDFE1, 0xDFE1, 0x14F2, 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, + 0xDFE9, 0xDFFE, 0x14FC, 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, + 0xE0F2, 0xE0FE, 0x1562, 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, + 0xE1AE, 0xE1EC, 0x157B, 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, + 0xE2A1, 0xE2FE, 0x15CB, 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, + 0xE3F6, 0xE3FE, 0x167D, 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, + 0xE4A9, 0xE4A9, 0x162E, 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, + 0xE5AE, 0xE5AE, 0x16F2, 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, + 0xE5B3, 0xE5B8, 0x16F1, 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, + 0xE5BB, 0xE5BC, 0x114D, 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, + 0xE5C5, 0xE5CD, 0x16FF, 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, + 0xE5D0, 0xE5D0, 0x1154, 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, + 0xE5D3, 0xE5D5, 0x170A, 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, + 0xE5FA, 0xE5FB, 0x115A, 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, + 0xE5FE, 0xE5FE, 0x115C, 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, + 0xE6A4, 0xE6A4, 0x1161, 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, + 0xE6A8, 0xE6AC, 0x1735, 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, + 0xE6AF, 0xE6B1, 0x1167, 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, + 0xE6B4, 0xE6B6, 0x173C, 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, + 0xE6BC, 0xE6BC, 0x116F, 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, + 0xE6C5, 0xE6C5, 0x1749, 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, + 0xE6CA, 0xE6CA, 0x1041, 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, + 0xE6D3, 0xE6D5, 0x1753, 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, + 0xE6D9, 0xE6D9, 0x1176, 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, + 0xE6DD, 0xE6DE, 0x175A, 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, + 0xE6E1, 0xE6E1, 0x1178, 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, + 0xE6E5, 0xE6E5, 0x1179, 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, + 0xE6E8, 0xE6E8, 0x117C, 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, + 0xE6EC, 0xE6EC, 0x192F, 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, + 0xE6F0, 0xE6F0, 0x1763, 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, + 0xE6F3, 0xE6F4, 0x1764, 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, + 0xE6F7, 0xE6F7, 0x1046, 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, + 0xE6FA, 0xE6FE, 0x1767, 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, + 0xE7A6, 0xE7A6, 0x1188, 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, + 0xE7AA, 0xE7AA, 0x118B, 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, + 0xE7AD, 0xE7AD, 0x118D, 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, + 0xE7B1, 0xE7BE, 0x1775, 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, + 0xE7C1, 0xE7C1, 0x1E67, 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, + 0xE7C7, 0xE7C7, 0x1193, 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, + 0xE7CC, 0xE7CC, 0x178B, 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, + 0xE7CF, 0xE7D0, 0x1197, 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, + 0xE7D4, 0xE7DE, 0x178F, 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, + 0xE7E4, 0xE7E4, 0x119D, 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, + 0xE7E7, 0xE7F6, 0x179F, 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, + 0xE8A1, 0xE8E6, 0x17B6, 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, + 0xE8F0, 0xE8F0, 0x11C9, 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, + 0xE8F7, 0xE8F7, 0x11CB, 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, + 0xE8FA, 0xE8FA, 0x1809, 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, + 0xE8FE, 0xE8FE, 0x11CD, 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, + 0xE9A8, 0xE9AB, 0x1812, 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, + 0xE9CC, 0xE9CC, 0x11D3, 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, + 0xE9F8, 0xE9FE, 0x185F, 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, + 0xEAC2, 0xEAE4, 0x1886, 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, + 0xEAF4, 0xEAF4, 0x1057, 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, + 0xEAF8, 0xEAFB, 0x18B9, 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, + 0xEAFE, 0xEAFE, 0x11E6, 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, + 0xEBA5, 0xEBA6, 0x18C1, 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, + 0xEBA9, 0xEBA9, 0x11EC, 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, + 0xEBBA, 0xEBBB, 0x11EE, 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, + 0xEBBE, 0xEBC0, 0x18D4, 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, + 0xEBC3, 0xEBC5, 0x18D7, 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, + 0xEBCC, 0xEBCC, 0x11F7, 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, + 0xEBD2, 0xEBD2, 0x15B0, 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, + 0xEBD9, 0xEBFE, 0x18E5, 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, + 0xECA7, 0xECA7, 0x1208, 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, + 0xECAB, 0xECAE, 0x1912, 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, + 0xECB2, 0xECB2, 0x105B, 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, + 0xECB6, 0xECB7, 0x1918, 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, + 0xECBA, 0xECBA, 0x1215, 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, + 0xECC2, 0xECC4, 0x1920, 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, + 0xECC7, 0xECC8, 0x1923, 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, + 0xECD5, 0xECD5, 0x121E, 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, + 0xECDF, 0xECE0, 0x1936, 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, + 0xECE4, 0xECE4, 0x1224, 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, + 0xECE9, 0xECF6, 0x193C, 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, + 0xECFA, 0xECFA, 0x122A, 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, + 0xEDA4, 0xEDED, 0x194F, 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, + 0xEEA1, 0xEEDA, 0x19A9, 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, + 0xEFA1, 0xEFFE, 0x1A06, 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, + 0xF2A1, 0xF2BC, 0x1B20, 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, + 0xF2FA, 0xF2FA, 0x168B, 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, + 0xF3B1, 0xF3B1, 0x105F, 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, + 0xF4A7, 0xF4A7, 0x1954, 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, + 0xF4EF, 0xF4FE, 0x1C25, 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, + 0xF6F4, 0xF6F4, 0x10B7, 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, + 0xF6F7, 0xF6FE, 0x1CE7, 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, + 0xF7B9, 0xF7C7, 0x1D06, 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, + 0xF7D3, 0xF7D3, 0x10F4, 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, + 0xF8DB, 0xF8DB, 0x1D94, 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, + 0xF8F1, 0xF8FE, 0x1D98, 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, + 0xFAA2, 0xFAA2, 0x0DE6, 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, + 0xFAE7, 0xFAFE, 0x1E47, 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, + 0xFCA9, 0xFCA9, 0x0EE7, 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp new file mode 100644 index 0000000000..ed55f14c12 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp @@ -0,0 +1,16 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_KSCms_UHC_V_1[16 * 3] = { + 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6, + 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2, + 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C, + 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE, + 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD, + 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp new file mode 100644 index 0000000000..2fcebc1fb1 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp @@ -0,0 +1,180 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_KSCpc_EUC_H_0[509 * 3] = { + 0x0020, 0x007E, 0x0001, 0x0081, 0x0083, 0x0060, 0x00FE, 0x00FF, 0x0063, + 0xA141, 0xA17D, 0x1FFF, 0xA181, 0xA19A, 0x203C, 0xA19C, 0xA1A0, 0x2056, + 0xA1A1, 0xA1A1, 0x0065, 0xA1A2, 0xA1A3, 0x205B, 0xA1A4, 0xA1FE, 0x0068, + 0xA241, 0xA24C, 0x205D, 0xA2A1, 0xA2E5, 0x00C3, 0xA2E6, 0xA2FE, 0x2069, + 0xA341, 0xA37D, 0x2082, 0xA381, 0xA39F, 0x20BF, 0xA3A1, 0xA3FE, 0x0108, + 0xA441, 0xA47D, 0x20DE, 0xA481, 0xA49F, 0x211B, 0xA4A1, 0xA4D3, 0x0166, + 0xA4D5, 0xA4FE, 0x0199, 0xA541, 0xA57D, 0x213A, 0xA581, 0xA58B, 0x2177, + 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, + 0xA5DA, 0xA5DE, 0x2182, 0xA5E1, 0xA5F8, 0x01EF, 0xA5F9, 0xA5FC, 0x2187, + 0xA641, 0xA67D, 0x218B, 0xA681, 0xA68A, 0x21C8, 0xA68D, 0xA693, 0x21D2, + 0xA696, 0xA69B, 0x21D9, 0xA69E, 0xA69F, 0x21DF, 0xA6A1, 0xA6E4, 0x0207, + 0xA6E5, 0xA6FE, 0x21E1, 0xA741, 0xA77D, 0x21FB, 0xA781, 0xA79F, 0x2238, + 0xA7A1, 0xA7EF, 0x024B, 0xA7F0, 0xA7FE, 0x2257, 0xA841, 0xA87D, 0x2266, + 0xA881, 0xA89F, 0x22A3, 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, + 0xA8A8, 0xA8AF, 0x029F, 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA974, 0x22C2, + 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA7D, 0x22F6, 0xAA81, 0xAA9F, 0x2333, + 0xAAA1, 0xAAF3, 0x0353, 0xAAF4, 0xAAFE, 0x2352, 0xAB41, 0xAB7D, 0x235D, + 0xAB81, 0xAB9F, 0x239A, 0xABA1, 0xABF6, 0x03A6, 0xABF7, 0xABFA, 0x23B9, + 0xABFB, 0xABFD, 0x2472, 0xAC41, 0xAC7D, 0x23BD, 0xAC81, 0xAC97, 0x23FA, + 0xACA1, 0xACC1, 0x03FC, 0xACC2, 0xACD0, 0x2411, 0xACD1, 0xACF1, 0x041D, + 0xACF2, 0xACF6, 0x2420, 0xAD41, 0xAD7D, 0x2425, 0xADA1, 0xADB0, 0x2462, + 0xB0A1, 0xB0FE, 0x043E, 0xB1A1, 0xB1FE, 0x049C, 0xB2A1, 0xB2FE, 0x04FA, + 0xB3A1, 0xB3FE, 0x0558, 0xB4A1, 0xB4FE, 0x05B6, 0xB5A1, 0xB5FE, 0x0614, + 0xB6A1, 0xB6FE, 0x0672, 0xB7A1, 0xB7FE, 0x06D0, 0xB8A1, 0xB8FE, 0x072E, + 0xB9A1, 0xB9FE, 0x078C, 0xBAA1, 0xBAFE, 0x07EA, 0xBBA1, 0xBBFE, 0x0848, + 0xBCA1, 0xBCFE, 0x08A6, 0xBDA1, 0xBDFE, 0x0904, 0xBEA1, 0xBEFE, 0x0962, + 0xBFA1, 0xBFFE, 0x09C0, 0xC0A1, 0xC0FE, 0x0A1E, 0xC1A1, 0xC1FE, 0x0A7C, + 0xC2A1, 0xC2FE, 0x0ADA, 0xC3A1, 0xC3FE, 0x0B38, 0xC4A1, 0xC4FE, 0x0B96, + 0xC5A1, 0xC5FE, 0x0BF4, 0xC6A1, 0xC6FE, 0x0C52, 0xC7A1, 0xC7FE, 0x0CB0, + 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, 0xCBA1, 0xCBCF, 0x0DCA, + 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, 0xCBD6, 0xCBD6, 0x0E5E, + 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, 0xCBE8, 0xCBFE, 0x0E0E, + 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, 0xCDCF, 0xCDCF, 0x0D84, + 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, 0xCDE9, 0xCDFE, 0x0EC9, + 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, 0xCEAE, 0xCEFE, 0x0EEB, + 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, 0xCFFC, 0xCFFE, 0x0F96, + 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, 0xD0A3, 0xD0B7, 0x0F9A, + 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, 0xD0D0, 0xD0D0, 0x0E7C, + 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, 0xD0DE, 0xD0FE, 0x0FD2, + 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, 0xD1D5, 0xD1D5, 0x103C, + 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, 0xD1D9, 0xD1DA, 0x1028, + 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, 0xD1E2, 0xD1E2, 0x16A8, + 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, 0xD1E7, 0xD1E7, 0x102B, + 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, 0xD1ED, 0xD1ED, 0x1127, + 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, 0xD1F1, 0xD1F1, 0x102E, + 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, 0xD1F6, 0xD1F6, 0x112F, + 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, 0xD1FB, 0xD1FB, 0x1035, + 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, 0xD2A1, 0xD2A1, 0x1036, + 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, 0xD2A7, 0xD2AA, 0x113C, + 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, 0xD2AD, 0xD2AD, 0x1144, + 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, 0xD2B3, 0xD2BD, 0x103F, + 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, 0xD2C2, 0xD2C3, 0x11A1, + 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, 0xD2C6, 0xD2CA, 0x11A6, + 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, 0xD2CD, 0xD2CE, 0x11AD, + 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, 0xD2D8, 0xD2D8, 0x104F, + 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, 0xD2DE, 0xD2DF, 0x11C1, + 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, 0xD2E2, 0xD2E2, 0x11C6, + 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, 0xD2E5, 0xD2E8, 0x11D6, + 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, 0xD2EC, 0xD2EF, 0x1055, + 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, 0xD2F6, 0xD2F6, 0x1059, + 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, 0xD3A1, 0xD3FE, 0x1060, + 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, 0xD4E7, 0xD4FB, 0x1103, + 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, 0xD5A1, 0xD5A4, 0x111A, + 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, 0xD5AB, 0xD5AB, 0x102B, + 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, 0xD5AF, 0xD5FE, 0x1125, + 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, 0xD6B9, 0xD6CC, 0x118C, + 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, 0xD7A1, 0xD7CA, 0x11D1, + 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, 0xD7E4, 0xD7E4, 0x1918, + 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, 0xD9A1, 0xD9FE, 0x128B, + 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, 0xDBC5, 0xDBC5, 0x141F, + 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, 0xDBE5, 0xDBFE, 0x1389, + 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, 0xDCA6, 0xDCFE, 0x13A7, + 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, 0xDDA6, 0xDDD4, 0x1404, + 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, 0xDDF4, 0xDDF4, 0x1DB7, + 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, 0xDEFC, 0xDEFC, 0x15D0, + 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, 0xDFA1, 0xDFB2, 0x14B7, + 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, 0xDFE1, 0xDFE1, 0x14F2, + 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, 0xDFE9, 0xDFFE, 0x14FC, + 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, 0xE0F2, 0xE0FE, 0x1562, + 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, 0xE1AE, 0xE1EC, 0x157B, + 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, 0xE2A1, 0xE2FE, 0x15CB, + 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, 0xE3F6, 0xE3FE, 0x167D, + 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, 0xE4A9, 0xE4A9, 0x162E, + 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, 0xE5AE, 0xE5AE, 0x16F2, + 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, 0xE5B3, 0xE5B8, 0x16F1, + 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, 0xE5BB, 0xE5BC, 0x114D, + 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, 0xE5C5, 0xE5CD, 0x16FF, + 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, 0xE5D0, 0xE5D0, 0x1154, + 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, 0xE5D3, 0xE5D5, 0x170A, + 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, 0xE5FA, 0xE5FB, 0x115A, + 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, 0xE5FE, 0xE5FE, 0x115C, + 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, 0xE6A4, 0xE6A4, 0x1161, + 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, 0xE6A8, 0xE6AC, 0x1735, + 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, 0xE6AF, 0xE6B1, 0x1167, + 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, 0xE6B4, 0xE6B6, 0x173C, + 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, 0xE6BC, 0xE6BC, 0x116F, + 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, 0xE6C5, 0xE6C5, 0x1749, + 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, 0xE6CA, 0xE6CA, 0x1041, + 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, 0xE6D3, 0xE6D5, 0x1753, + 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, 0xE6D9, 0xE6D9, 0x1176, + 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, 0xE6DD, 0xE6DE, 0x175A, + 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, 0xE6E1, 0xE6E1, 0x1178, + 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, 0xE6E5, 0xE6E5, 0x1179, + 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, 0xE6E8, 0xE6E8, 0x117C, + 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, 0xE6EC, 0xE6EC, 0x192F, + 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, 0xE6F0, 0xE6F0, 0x1763, + 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, 0xE6F3, 0xE6F4, 0x1764, + 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, 0xE6F7, 0xE6F7, 0x1046, + 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, 0xE6FA, 0xE6FE, 0x1767, + 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, 0xE7A6, 0xE7A6, 0x1188, + 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, 0xE7AA, 0xE7AA, 0x118B, + 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, 0xE7AD, 0xE7AD, 0x118D, + 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, 0xE7B1, 0xE7BE, 0x1775, + 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, 0xE7C1, 0xE7C1, 0x1E67, + 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, 0xE7C7, 0xE7C7, 0x1193, + 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, 0xE7CC, 0xE7CC, 0x178B, + 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, 0xE7CF, 0xE7D0, 0x1197, + 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, 0xE7D4, 0xE7DE, 0x178F, + 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, 0xE7E4, 0xE7E4, 0x119D, + 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, 0xE7E7, 0xE7F6, 0x179F, + 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, 0xE8A1, 0xE8E6, 0x17B6, + 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, 0xE8F0, 0xE8F0, 0x11C9, + 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, 0xE8F7, 0xE8F7, 0x11CB, + 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, 0xE8FA, 0xE8FA, 0x1809, + 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, 0xE8FE, 0xE8FE, 0x11CD, + 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, 0xE9A8, 0xE9AB, 0x1812, + 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, 0xE9CC, 0xE9CC, 0x11D3, + 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, 0xE9F8, 0xE9FE, 0x185F, + 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, 0xEAC2, 0xEAE4, 0x1886, + 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, 0xEAF4, 0xEAF4, 0x1057, + 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, 0xEAF8, 0xEAFB, 0x18B9, + 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, 0xEAFE, 0xEAFE, 0x11E6, + 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, 0xEBA5, 0xEBA6, 0x18C1, + 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, 0xEBA9, 0xEBA9, 0x11EC, + 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, 0xEBBA, 0xEBBB, 0x11EE, + 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, 0xEBBE, 0xEBC0, 0x18D4, + 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, 0xEBC3, 0xEBC5, 0x18D7, + 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, 0xEBCC, 0xEBCC, 0x11F7, + 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, 0xEBD2, 0xEBD2, 0x15B0, + 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, 0xEBD9, 0xEBFE, 0x18E5, + 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, 0xECA7, 0xECA7, 0x1208, + 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, 0xECAB, 0xECAE, 0x1912, + 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, 0xECB2, 0xECB2, 0x105B, + 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, 0xECB6, 0xECB7, 0x1918, + 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, 0xECBA, 0xECBA, 0x1215, + 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, 0xECC2, 0xECC4, 0x1920, + 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, 0xECC7, 0xECC8, 0x1923, + 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, 0xECD5, 0xECD5, 0x121E, + 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, 0xECDF, 0xECE0, 0x1936, + 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, 0xECE4, 0xECE4, 0x1224, + 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, 0xECE9, 0xECF6, 0x193C, + 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, 0xECFA, 0xECFA, 0x122A, + 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, 0xEDA4, 0xEDED, 0x194F, + 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, 0xEEA1, 0xEEDA, 0x19A9, + 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, 0xEFA1, 0xEFFE, 0x1A06, + 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, 0xF2A1, 0xF2BC, 0x1B20, + 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, 0xF2FA, 0xF2FA, 0x168B, + 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, 0xF3B1, 0xF3B1, 0x105F, + 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, 0xF4A7, 0xF4A7, 0x1954, + 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, 0xF4EF, 0xF4FE, 0x1C25, + 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, 0xF6F4, 0xF6F4, 0x10B7, + 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, 0xF6F7, 0xF6FE, 0x1CE7, + 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, 0xF7B9, 0xF7C7, 0x1D06, + 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, 0xF7D3, 0xF7D3, 0x10F4, + 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, 0xF8DB, 0xF8DB, 0x1D94, + 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, 0xF8F1, 0xF8FE, 0x1D98, + 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, 0xFAA2, 0xFAA2, 0x0DE6, + 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, 0xFAE7, 0xFAFE, 0x1E47, + 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, 0xFCA9, 0xFCA9, 0x0EE7, + 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp new file mode 100644 index 0000000000..8bab432fcd --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp @@ -0,0 +1,2808 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_UniKS_UCS2_H_1[8394 * 3] = { + 0x0020, 0x007E, 0x0001, 0x00A1, 0x00A1, 0x00D0, 0x00A4, 0x00A4, 0x00D6, + 0x00A7, 0x00A7, 0x009B, 0x00A8, 0x00A8, 0x006B, 0x00AA, 0x00AA, 0x029C, + 0x00AB, 0x00AB, 0x00B0, 0x00B0, 0x00B0, 0x008A, 0x00B1, 0x00B1, 0x0082, + 0x00B2, 0x00B3, 0x034B, 0x00B4, 0x00B4, 0x00C7, 0x00B6, 0x00B6, 0x00F4, + 0x00B8, 0x00B8, 0x00CE, 0x00B9, 0x00B9, 0x034A, 0x00BA, 0x00BA, 0x02A3, + 0x00BB, 0x00BB, 0x00B1, 0x00BC, 0x00BC, 0x02EF, 0x00BD, 0x00BD, 0x02EC, + 0x00BE, 0x00BE, 0x02F0, 0x00BF, 0x00BF, 0x00D1, 0x00C6, 0x00C6, 0x029A, + 0x00D0, 0x00D0, 0x029B, 0x00D7, 0x00D7, 0x0083, 0x00D8, 0x00D8, 0x02A1, + 0x00DE, 0x00DE, 0x02A4, 0x00DF, 0x00DF, 0x0300, 0x00E6, 0x00E6, 0x02F5, + 0x00F0, 0x00F0, 0x02F7, 0x00F7, 0x00F7, 0x0084, 0x00F8, 0x00F8, 0x02FE, + 0x00FE, 0x00FE, 0x0301, 0x0111, 0x0111, 0x02F6, 0x0126, 0x0126, 0x029D, + 0x0127, 0x0127, 0x02F8, 0x0131, 0x0131, 0x02F9, 0x0132, 0x0132, 0x029E, + 0x0133, 0x0133, 0x02FA, 0x0138, 0x0138, 0x02FB, 0x013F, 0x013F, 0x029F, + 0x0140, 0x0140, 0x02FC, 0x0141, 0x0141, 0x02A0, 0x0142, 0x0142, 0x02FD, + 0x0149, 0x0149, 0x0304, 0x014A, 0x014A, 0x02A6, 0x014B, 0x014B, 0x0303, + 0x0152, 0x0152, 0x02A2, 0x0153, 0x0153, 0x02FF, 0x0166, 0x0166, 0x02A5, + 0x0167, 0x0167, 0x0302, 0x02BC, 0x02BC, 0x2053, 0x02C7, 0x02C7, 0x00C9, + 0x02D8, 0x02D8, 0x00CA, 0x02D9, 0x02D9, 0x00CD, 0x02DA, 0x02DA, 0x00CC, + 0x02DB, 0x02DB, 0x00CF, 0x02DC, 0x02DC, 0x00C8, 0x02DD, 0x02DD, 0x00CB, + 0x0391, 0x03A1, 0x01D7, 0x03A3, 0x03A9, 0x01E8, 0x03B1, 0x03C1, 0x01EF, + 0x03C3, 0x03C9, 0x0200, 0x0401, 0x0401, 0x0402, 0x0410, 0x0415, 0x03FC, + 0x0416, 0x0435, 0x0403, 0x0436, 0x044F, 0x0424, 0x0451, 0x0451, 0x0423, + 0x2013, 0x2014, 0x006D, 0x2016, 0x2016, 0x006F, 0x2018, 0x2019, 0x0072, + 0x201B, 0x201B, 0x202E, 0x201C, 0x201D, 0x0074, 0x201F, 0x201F, 0x202D, + 0x2020, 0x2021, 0x00F5, 0x2022, 0x2022, 0x219F, 0x2025, 0x2026, 0x0069, + 0x2030, 0x2030, 0x00D8, 0x2032, 0x2033, 0x008B, 0x2034, 0x2034, 0x2186, + 0x2035, 0x2035, 0x246E, 0x2036, 0x2036, 0x246C, 0x2039, 0x203A, 0x21A4, + 0x203B, 0x203B, 0x009C, 0x203C, 0x203C, 0x223B, 0x2042, 0x2042, 0x2197, + 0x2074, 0x2074, 0x034D, 0x207A, 0x207B, 0x202F, 0x207C, 0x207C, 0x2038, + 0x207D, 0x207E, 0x203A, 0x207F, 0x207F, 0x034E, 0x2081, 0x2084, 0x034F, + 0x2103, 0x2103, 0x008D, 0x2109, 0x2109, 0x00D7, 0x2113, 0x2113, 0x024E, + 0x2116, 0x2116, 0x0102, 0x2121, 0x2121, 0x0107, 0x2122, 0x2122, 0x0104, + 0x2126, 0x2126, 0x0283, 0x212B, 0x212B, 0x008E, 0x2153, 0x2154, 0x02ED, + 0x215B, 0x215E, 0x02F1, 0x2160, 0x2169, 0x01CD, 0x2170, 0x2179, 0x01C3, + 0x2190, 0x2191, 0x00AB, 0x2192, 0x2192, 0x00AA, 0x2193, 0x2194, 0x00AD, + 0x2195, 0x2195, 0x00F7, 0x2196, 0x2196, 0x00FA, 0x2197, 0x2197, 0x00F8, + 0x2198, 0x2198, 0x00FB, 0x2199, 0x2199, 0x00F9, 0x21B0, 0x21B0, 0x22A4, + 0x21B1, 0x21B1, 0x22A1, 0x21B2, 0x21B2, 0x22A0, 0x21B3, 0x21B3, 0x22A5, + 0x21B4, 0x21B4, 0x22A3, 0x21BC, 0x21BC, 0x22B4, 0x21C0, 0x21C0, 0x22B5, + 0x21C4, 0x21C5, 0x22C0, 0x21CD, 0x21CD, 0x2270, 0x21CF, 0x21CF, 0x226F, + 0x21D0, 0x21D0, 0x226E, 0x21D1, 0x21D1, 0x2296, 0x21D2, 0x21D2, 0x00C3, + 0x21D3, 0x21D3, 0x2297, 0x21D4, 0x21D4, 0x00C4, 0x21E0, 0x21E0, 0x23E6, + 0x21E1, 0x21E1, 0x23E8, 0x21E2, 0x21E2, 0x23E7, 0x21E3, 0x21E3, 0x23E9, + 0x21E6, 0x21E6, 0x23EE, 0x21E7, 0x21E7, 0x23F0, 0x21E8, 0x21E8, 0x23EF, + 0x21E9, 0x21E9, 0x23F1, 0x2200, 0x2200, 0x00C5, 0x2202, 0x2202, 0x0097, + 0x2203, 0x2203, 0x00C6, 0x2206, 0x2206, 0x220B, 0x2207, 0x2207, 0x0098, + 0x2208, 0x2208, 0x00B8, 0x2209, 0x2209, 0x222D, 0x220B, 0x220B, 0x00B9, + 0x220C, 0x220C, 0x222E, 0x220F, 0x220F, 0x00D5, 0x2211, 0x2211, 0x00D4, + 0x2213, 0x2213, 0x2216, 0x221A, 0x221A, 0x00B2, 0x221D, 0x221D, 0x00B4, + 0x221E, 0x221E, 0x0088, 0x221F, 0x221F, 0x220D, 0x2220, 0x2220, 0x0094, + 0x2222, 0x2222, 0x2222, 0x2225, 0x2226, 0x220F, 0x2227, 0x2228, 0x00C0, + 0x2229, 0x2229, 0x00BF, 0x222A, 0x222A, 0x00BE, 0x222B, 0x222C, 0x00B6, + 0x222E, 0x222E, 0x00D3, 0x2234, 0x2234, 0x0089, 0x2235, 0x2235, 0x00B5, + 0x2236, 0x2236, 0x00D2, 0x2237, 0x2237, 0x2081, 0x223D, 0x223D, 0x00B3, + 0x2243, 0x2243, 0x2134, 0x2245, 0x2245, 0x2133, 0x2248, 0x2248, 0x2135, + 0x2250, 0x2250, 0x2223, 0x2251, 0x2251, 0x2213, 0x2252, 0x2252, 0x009A, + 0x2253, 0x2253, 0x2212, 0x225A, 0x225A, 0x2231, 0x2260, 0x2260, 0x0085, + 0x2261, 0x2261, 0x0099, 0x2262, 0x2262, 0x221E, 0x2264, 0x2265, 0x0086, + 0x2266, 0x2267, 0x2214, 0x226E, 0x226F, 0x2229, 0x2270, 0x2273, 0x2121, + 0x2276, 0x2277, 0x2129, 0x2279, 0x2279, 0x212B, 0x227A, 0x227B, 0x211B, + 0x2280, 0x2281, 0x211F, 0x2282, 0x2283, 0x00BC, 0x2284, 0x2284, 0x222C, + 0x2285, 0x2285, 0x222B, 0x2286, 0x2287, 0x00BA, 0x228A, 0x228A, 0x2126, + 0x228B, 0x228B, 0x2128, 0x2295, 0x2297, 0x2217, 0x22A3, 0x22A3, 0x2226, + 0x22A4, 0x22A4, 0x2137, 0x22A5, 0x22A5, 0x0095, 0x22BB, 0x22BC, 0x222F, + 0x22CE, 0x22CF, 0x211D, 0x22DA, 0x22DB, 0x212C, 0x22EE, 0x22EE, 0x2080, + 0x22EF, 0x22EF, 0x006A, 0x2306, 0x2306, 0x2232, 0x2312, 0x2312, 0x0096, + 0x2314, 0x2314, 0x221B, 0x2460, 0x246E, 0x02DD, 0x246F, 0x2473, 0x2257, + 0x2474, 0x2482, 0x033B, 0x2483, 0x2487, 0x2352, 0x249C, 0x24B5, 0x0321, + 0x24B6, 0x24CF, 0x20C4, 0x24D0, 0x24E9, 0x02C3, 0x2500, 0x2500, 0x0207, + 0x2501, 0x2501, 0x0212, 0x2502, 0x2502, 0x0208, 0x2503, 0x2503, 0x0213, + 0x250C, 0x250C, 0x0209, 0x250D, 0x250D, 0x022E, 0x250E, 0x250E, 0x022D, + 0x250F, 0x250F, 0x0214, 0x2510, 0x2510, 0x020A, 0x2511, 0x2511, 0x0228, + 0x2512, 0x2512, 0x0227, 0x2513, 0x2513, 0x0215, 0x2514, 0x2514, 0x020C, + 0x2515, 0x2515, 0x022C, 0x2516, 0x2516, 0x022B, 0x2517, 0x2517, 0x0217, + 0x2518, 0x2518, 0x020B, 0x2519, 0x2519, 0x022A, 0x251A, 0x251A, 0x0229, + 0x251B, 0x251B, 0x0216, 0x251C, 0x251C, 0x020D, 0x251D, 0x251D, 0x0222, + 0x251E, 0x251F, 0x022F, 0x2520, 0x2520, 0x021D, 0x2521, 0x2522, 0x0231, + 0x2523, 0x2523, 0x0218, 0x2524, 0x2524, 0x020F, 0x2525, 0x2525, 0x0224, + 0x2526, 0x2527, 0x0233, 0x2528, 0x2528, 0x021F, 0x2529, 0x252A, 0x0235, + 0x252B, 0x252B, 0x021A, 0x252C, 0x252C, 0x020E, 0x252D, 0x252E, 0x0237, + 0x252F, 0x252F, 0x021E, 0x2530, 0x2530, 0x0223, 0x2531, 0x2532, 0x0239, + 0x2533, 0x2533, 0x0219, 0x2534, 0x2534, 0x0210, 0x2535, 0x2536, 0x023B, + 0x2537, 0x2537, 0x0220, 0x2538, 0x2538, 0x0225, 0x2539, 0x253A, 0x023D, + 0x253B, 0x253B, 0x021B, 0x253C, 0x253C, 0x0211, 0x253D, 0x253E, 0x023F, + 0x253F, 0x253F, 0x0221, 0x2540, 0x2541, 0x0241, 0x2542, 0x2542, 0x0226, + 0x2543, 0x254A, 0x0243, 0x254B, 0x254B, 0x021C, 0x2592, 0x2592, 0x00E8, + 0x25A0, 0x25A0, 0x00A5, 0x25A1, 0x25A1, 0x00A4, 0x25A3, 0x25A3, 0x00E5, + 0x25A4, 0x25A5, 0x00E9, 0x25A6, 0x25A6, 0x00ED, 0x25A7, 0x25A7, 0x00EC, + 0x25A8, 0x25A8, 0x00EB, 0x25A9, 0x25A9, 0x00EE, 0x25B1, 0x25B1, 0x2220, + 0x25B2, 0x25B2, 0x00A7, 0x25B3, 0x25B3, 0x00A6, 0x25B5, 0x25B5, 0x224C, + 0x25B6, 0x25B6, 0x00DC, 0x25B7, 0x25B7, 0x00DB, 0x25B9, 0x25B9, 0x224D, + 0x25BC, 0x25BC, 0x00A9, 0x25BD, 0x25BD, 0x00A8, 0x25BF, 0x25BF, 0x224B, + 0x25C0, 0x25C0, 0x00DA, 0x25C1, 0x25C1, 0x00D9, 0x25C3, 0x25C3, 0x224E, + 0x25C6, 0x25C6, 0x00A3, 0x25C7, 0x25C7, 0x00A2, 0x25C8, 0x25C8, 0x00E4, + 0x25C9, 0x25C9, 0x00E3, 0x25CA, 0x25CA, 0x2253, 0x25CB, 0x25CB, 0x009F, + 0x25CC, 0x25CC, 0x21BF, 0x25CE, 0x25CE, 0x00A1, 0x25CF, 0x25CF, 0x00A0, + 0x25D0, 0x25D1, 0x00E6, 0x25E6, 0x25E6, 0x2247, 0x25EF, 0x25EF, 0x21B9, + 0x2605, 0x2605, 0x009E, 0x2606, 0x2606, 0x009D, 0x260E, 0x260E, 0x00F1, + 0x260F, 0x260F, 0x00F0, 0x261C, 0x261C, 0x00F2, 0x261D, 0x261D, 0x2406, + 0x261E, 0x261E, 0x00F3, 0x261F, 0x261F, 0x2407, 0x262F, 0x262F, 0x21D8, + 0x2640, 0x2640, 0x0093, 0x2642, 0x2642, 0x0092, 0x2660, 0x2661, 0x00DE, + 0x2663, 0x2663, 0x00E2, 0x2664, 0x2664, 0x00DD, 0x2665, 0x2665, 0x00E0, + 0x2667, 0x2667, 0x00E1, 0x2668, 0x2668, 0x00EF, 0x2669, 0x266A, 0x00FD, + 0x266C, 0x266C, 0x00FF, 0x266D, 0x266D, 0x00FC, 0x266F, 0x266F, 0x2192, + 0x2716, 0x2716, 0x21B7, 0x271A, 0x271A, 0x21B6, 0x273D, 0x273D, 0x219C, + 0x2756, 0x2756, 0x21BD, 0x2776, 0x277F, 0x21E1, 0x278A, 0x2793, 0x2096, + 0x3000, 0x3002, 0x0065, 0x3003, 0x3003, 0x006C, 0x3008, 0x3011, 0x0078, + 0x3012, 0x3012, 0x21FC, 0x3013, 0x3013, 0x00AF, 0x3014, 0x3015, 0x0076, + 0x3016, 0x3019, 0x201B, 0x301E, 0x301F, 0x246A, 0x3020, 0x3020, 0x21DF, + 0x3036, 0x3036, 0x21FD, 0x3041, 0x3093, 0x0353, 0x30A1, 0x30F6, 0x03A6, + 0x30FB, 0x30FB, 0x0068, 0x30FC, 0x30FC, 0x2472, 0x3131, 0x3163, 0x0166, + 0x3164, 0x3164, 0x0065, 0x3165, 0x318E, 0x0199, 0x3200, 0x321B, 0x0305, + 0x321C, 0x321C, 0x0101, 0x3231, 0x3231, 0x2254, 0x3239, 0x3239, 0x2255, + 0x3260, 0x327B, 0x02A7, 0x327F, 0x327F, 0x0100, 0x328A, 0x328F, 0x2455, + 0x3290, 0x3290, 0x2454, 0x3294, 0x3294, 0x2378, 0x329E, 0x329E, 0x2239, + 0x32A5, 0x32A5, 0x2388, 0x3380, 0x3384, 0x0273, 0x3388, 0x3389, 0x0264, + 0x338A, 0x338C, 0x0286, 0x338D, 0x338F, 0x0260, 0x3390, 0x3394, 0x027E, + 0x3395, 0x3397, 0x024B, 0x3398, 0x3398, 0x024F, 0x3399, 0x33A2, 0x0255, + 0x33A3, 0x33A6, 0x0251, 0x33A7, 0x33A8, 0x0267, 0x33A9, 0x33AC, 0x028F, + 0x33AD, 0x33AF, 0x028B, 0x33B0, 0x33B9, 0x0269, 0x33BA, 0x33BF, 0x0278, + 0x33C0, 0x33C1, 0x0284, 0x33C2, 0x33C2, 0x0105, 0x33C3, 0x33C3, 0x0296, + 0x33C4, 0x33C4, 0x0250, 0x33C5, 0x33C5, 0x028A, 0x33C6, 0x33C6, 0x0299, + 0x33C7, 0x33C7, 0x0103, 0x33C8, 0x33C8, 0x0266, 0x33C9, 0x33C9, 0x0297, + 0x33CA, 0x33CA, 0x025F, 0x33CB, 0x33CB, 0x2256, 0x33CF, 0x33CF, 0x0263, + 0x33D0, 0x33D0, 0x0294, 0x33D3, 0x33D3, 0x0295, 0x33D6, 0x33D6, 0x0289, + 0x33D8, 0x33D8, 0x0106, 0x33DB, 0x33DB, 0x028E, 0x33DC, 0x33DC, 0x0298, + 0x33DD, 0x33DD, 0x0293, 0x4E00, 0x4E00, 0x193C, 0x4E01, 0x4E01, 0x1A30, + 0x4E03, 0x4E03, 0x1CC4, 0x4E07, 0x4E07, 0x123E, 0x4E08, 0x4E08, 0x1986, + 0x4E09, 0x4E09, 0x14C8, 0x4E0A, 0x4E0A, 0x14D3, 0x4E0B, 0x4E0B, 0x1DC0, + 0x4E0D, 0x4E0D, 0x13F5, 0x4E11, 0x4E11, 0x1C78, 0x4E14, 0x4E14, 0x1B81, + 0x4E15, 0x4E15, 0x143D, 0x4E16, 0x4E16, 0x1574, 0x4E18, 0x4E18, 0x0F35, + 0x4E19, 0x4E19, 0x13B1, 0x4E1E, 0x4E1E, 0x1632, 0x4E2D, 0x4E2D, 0x1B0A, + 0x4E32, 0x4E32, 0x0EDA, 0x4E38, 0x4E38, 0x1ECA, 0x4E39, 0x4E39, 0x1060, + 0x4E3B, 0x4E3B, 0x1ACC, 0x4E42, 0x4E42, 0x178D, 0x4E43, 0x4E43, 0x103A, + 0x4E45, 0x4E45, 0x0F36, 0x4E4B, 0x4E4B, 0x1B1E, 0x4E4D, 0x4E4D, 0x1479, + 0x4E4E, 0x4E4E, 0x1E78, 0x4E4F, 0x4E4F, 0x1DBE, 0x4E56, 0x4E56, 0x0F0F, + 0x4E58, 0x4E58, 0x1633, 0x4E59, 0x4E59, 0x18EC, 0x4E5D, 0x4E5D, 0x0F37, + 0x4E5E, 0x4E5E, 0x0E1D, 0x4E5F, 0x4E5F, 0x16E6, 0x4E6B, 0x4E6B, 0x0DAC, + 0x4E6D, 0x4E6D, 0x10E9, 0x4E73, 0x4E73, 0x18A5, 0x4E76, 0x4E76, 0x13E4, + 0x4E77, 0x4E77, 0x14C3, 0x4E7E, 0x4E7E, 0x0E11, 0x4E82, 0x4E82, 0x1125, + 0x4E86, 0x4E86, 0x11C7, 0x4E88, 0x4E88, 0x172E, 0x4E8B, 0x4E8B, 0x147A, + 0x4E8C, 0x4E8C, 0x190D, 0x4E8E, 0x4E8E, 0x1835, 0x4E90, 0x4E90, 0x186C, + 0x4E91, 0x4E91, 0x185E, 0x4E92, 0x4E92, 0x1E79, 0x4E94, 0x4E94, 0x17A1, + 0x4E95, 0x4E95, 0x1A31, 0x4E98, 0x4E98, 0x0FDA, 0x4E9B, 0x4E9B, 0x147B, + 0x4E9E, 0x4E9E, 0x168F, 0x4EA1, 0x4EA1, 0x1258, 0x4EA2, 0x4EA2, 0x1DF6, + 0x4EA4, 0x4EA4, 0x0F1C, 0x4EA5, 0x4EA5, 0x1E05, 0x4EA6, 0x4EA6, 0x173B, + 0x4EA8, 0x4EA8, 0x1E5B, 0x4EAB, 0x4EAB, 0x1E1E, 0x4EAC, 0x4EAC, 0x0E4C, + 0x4EAD, 0x4EAD, 0x1A32, 0x4EAE, 0x4EAE, 0x114B, 0x4EB6, 0x4EB6, 0x1061, + 0x4EBA, 0x4EBA, 0x192B, 0x4EC0, 0x4EC0, 0x168B, 0x4EC1, 0x4EC1, 0x192C, + 0x4EC4, 0x4EC4, 0x1CA3, 0x4EC7, 0x4EC7, 0x0F38, 0x4ECA, 0x4ECA, 0x0FC6, + 0x4ECB, 0x4ECB, 0x0DE8, 0x4ECD, 0x4ECD, 0x194F, 0x4ED4, 0x4ED4, 0x1953, + 0x4ED5, 0x4ED5, 0x147C, 0x4ED6, 0x4ED6, 0x1CD4, 0x4ED7, 0x4ED7, 0x1987, + 0x4ED8, 0x4ED8, 0x13F6, 0x4ED9, 0x4ED9, 0x152A, 0x4EDD, 0x4EDD, 0x10EB, + 0x4EDF, 0x4EDF, 0x1BEC, 0x4EE3, 0x4EE3, 0x109A, 0x4EE4, 0x4EE4, 0x1189, + 0x4EE5, 0x4EE5, 0x190E, 0x4EF0, 0x4EF0, 0x16C9, 0x4EF2, 0x4EF2, 0x1B0B, + 0x4EF6, 0x4EF6, 0x0E12, 0x4EF7, 0x4EF7, 0x0DE9, 0x4EFB, 0x4EFB, 0x1945, + 0x4F01, 0x4F01, 0x0FDE, 0x4F09, 0x4F09, 0x1DF7, 0x4F0A, 0x4F0A, 0x190F, + 0x4F0B, 0x4F0B, 0x0FD3, 0x4F0D, 0x4F0D, 0x17A2, 0x4F0E, 0x4F0E, 0x0FDF, + 0x4F0F, 0x4F0F, 0x13D2, 0x4F10, 0x4F10, 0x138D, 0x4F11, 0x4F11, 0x1F45, + 0x4F2F, 0x4F2F, 0x137C, 0x4F34, 0x4F34, 0x1329, 0x4F36, 0x4F36, 0x118A, + 0x4F38, 0x4F38, 0x1667, 0x4F3A, 0x4F3A, 0x147D, 0x4F3C, 0x4F3C, 0x147E, + 0x4F3D, 0x4F3D, 0x0D6C, 0x4F43, 0x4F43, 0x19F3, 0x4F46, 0x4F46, 0x1062, + 0x4F47, 0x4F47, 0x19BF, 0x4F48, 0x4F48, 0x1D78, 0x4F4D, 0x4F4D, 0x188C, + 0x4F4E, 0x4F4E, 0x19C0, 0x4F4F, 0x4F4F, 0x1ACD, 0x4F50, 0x4F50, 0x1AC6, + 0x4F51, 0x4F51, 0x1836, 0x4F55, 0x4F55, 0x1DC1, 0x4F59, 0x4F59, 0x172F, + 0x4F5A, 0x4F5A, 0x193D, 0x4F5B, 0x4F5B, 0x1433, 0x4F5C, 0x4F5C, 0x196D, + 0x4F69, 0x4F69, 0x1D4E, 0x4F6F, 0x4F6F, 0x16F7, 0x4F70, 0x4F70, 0x137D, + 0x4F73, 0x4F73, 0x0D6D, 0x4F76, 0x4F76, 0x101F, 0x4F7A, 0x4F7A, 0x19F4, + 0x4F7E, 0x4F7E, 0x193E, 0x4F7F, 0x4F7F, 0x147F, 0x4F81, 0x4F81, 0x1668, + 0x4F83, 0x4F83, 0x0D94, 0x4F84, 0x4F84, 0x1B67, 0x4F86, 0x4F86, 0x1144, + 0x4F88, 0x4F88, 0x1CA8, 0x4F8A, 0x4F8A, 0x0EFF, 0x4F8B, 0x4F8B, 0x119A, + 0x4F8D, 0x4F8D, 0x163C, 0x4F8F, 0x4F8F, 0x1ACE, 0x4F91, 0x4F91, 0x18A6, + 0x4F96, 0x4F96, 0x11F2, 0x4F98, 0x4F98, 0x1B82, 0x4F9B, 0x4F9B, 0x0ECA, + 0x4F9D, 0x4F9D, 0x18FA, 0x4FAE, 0x4FAE, 0x129C, 0x4FAF, 0x4FAF, 0x1F1E, + 0x4FB5, 0x4FB5, 0x1CC7, 0x4FB6, 0x4FB6, 0x1158, 0x4FBF, 0x4FBF, 0x1D5E, + 0x4FC2, 0x4FC2, 0x0E79, 0x4FC3, 0x4FC3, 0x1C49, 0x4FC4, 0x4FC4, 0x1690, + 0x4FC9, 0x4FC9, 0x17A3, 0x4FCA, 0x4FCA, 0x1AF6, 0x4FCE, 0x4FCE, 0x1A7E, + 0x4FD1, 0x4FD1, 0x181E, 0x4FD3, 0x4FD3, 0x0E4D, 0x4FD4, 0x4FD4, 0x1E36, + 0x4FD7, 0x4FD7, 0x15A1, 0x4FDA, 0x4FDA, 0x1205, 0x4FDD, 0x4FDD, 0x13C2, + 0x4FDF, 0x4FDF, 0x1480, 0x4FE0, 0x4FE0, 0x1E4F, 0x4FE1, 0x4FE1, 0x1669, + 0x4FEE, 0x4FEE, 0x15BF, 0x4FEF, 0x4FEF, 0x13F7, 0x4FF1, 0x4FF1, 0x0F39, + 0x4FF3, 0x4FF3, 0x136A, 0x4FF5, 0x4FF5, 0x1D98, 0x4FF8, 0x4FF8, 0x13E5, + 0x4FFA, 0x4FFA, 0x1725, 0x5002, 0x5002, 0x13B2, 0x5006, 0x5006, 0x114C, + 0x5009, 0x5009, 0x1BB4, 0x500B, 0x500B, 0x0DEA, 0x500D, 0x500D, 0x1369, + 0x5011, 0x5011, 0x12E4, 0x5012, 0x5012, 0x10AD, 0x5016, 0x5016, 0x1E19, + 0x5019, 0x5019, 0x1F1F, 0x501A, 0x501A, 0x18FB, 0x501C, 0x501C, 0x1BDE, + 0x501E, 0x501E, 0x0E4E, 0x501F, 0x501F, 0x1B83, 0x5021, 0x5021, 0x1BB5, + 0x5023, 0x5023, 0x134D, 0x5024, 0x5024, 0x1CA9, 0x5026, 0x5026, 0x0F81, + 0x5027, 0x5027, 0x1AB5, 0x5028, 0x5028, 0x0E01, 0x502A, 0x502A, 0x178E, + 0x502B, 0x502B, 0x11F3, 0x502C, 0x502C, 0x1CE2, 0x502D, 0x502D, 0x17F3, + 0x503B, 0x503B, 0x16E7, 0x5043, 0x5043, 0x171D, 0x5047, 0x5047, 0x0D6E, + 0x5048, 0x5048, 0x0E2B, 0x5049, 0x5049, 0x188D, 0x504F, 0x504F, 0x1D5F, + 0x5055, 0x5055, 0x1E06, 0x505A, 0x505A, 0x1ACF, 0x505C, 0x505C, 0x1A33, + 0x5065, 0x5065, 0x0E13, 0x5074, 0x5074, 0x1CA2, 0x5075, 0x5075, 0x1A34, + 0x5076, 0x5076, 0x1837, 0x5078, 0x5078, 0x1D29, 0x5080, 0x5080, 0x0F10, + 0x5085, 0x5085, 0x13F8, 0x508D, 0x508D, 0x134E, 0x5091, 0x5091, 0x0E1E, + 0x5098, 0x5098, 0x14B7, 0x5099, 0x5099, 0x143E, 0x50AC, 0x50AC, 0x1C5E, + 0x50AD, 0x50AD, 0x181F, 0x50B2, 0x50B2, 0x17A4, 0x50B3, 0x50B3, 0x19F5, + 0x50B5, 0x50B5, 0x1BCA, 0x50B7, 0x50B7, 0x14D4, 0x50BE, 0x50BE, 0x0E4F, + 0x50C5, 0x50C5, 0x0FB7, 0x50C9, 0x50C9, 0x1C09, 0x50CA, 0x50CA, 0x152B, + 0x50CF, 0x50CF, 0x14D5, 0x50D1, 0x50D1, 0x0F1D, 0x50D5, 0x50D5, 0x13D3, + 0x50D6, 0x50D6, 0x1F63, 0x50DA, 0x50DA, 0x11C8, 0x50DE, 0x50DE, 0x188E, + 0x50E5, 0x50E5, 0x17FC, 0x50E7, 0x50E7, 0x1634, 0x50ED, 0x50ED, 0x1BAA, + 0x50F9, 0x50F9, 0x0D6F, 0x50FB, 0x50FB, 0x139C, 0x50FF, 0x50FF, 0x1481, + 0x5100, 0x5100, 0x18FC, 0x5101, 0x5101, 0x1AF7, 0x5104, 0x5104, 0x1718, + 0x5106, 0x5106, 0x0E50, 0x5109, 0x5109, 0x0E21, 0x5112, 0x5112, 0x18A7, + 0x511F, 0x511F, 0x14D6, 0x5121, 0x5121, 0x11BF, 0x512A, 0x512A, 0x1838, + 0x5132, 0x5132, 0x19C1, 0x5137, 0x5137, 0x1159, 0x513A, 0x513A, 0x1025, + 0x513C, 0x513C, 0x1726, 0x5140, 0x5140, 0x17C9, 0x5141, 0x5141, 0x18D7, + 0x5143, 0x5143, 0x186F, 0x5144, 0x5144, 0x1E5C, 0x5145, 0x5145, 0x1C8A, + 0x5146, 0x5146, 0x1A7F, 0x5147, 0x5147, 0x1F4D, 0x5148, 0x5148, 0x152C, + 0x5149, 0x5149, 0x0F00, 0x514B, 0x514B, 0x0FB0, 0x514C, 0x514C, 0x1D07, + 0x514D, 0x514D, 0x127F, 0x514E, 0x514E, 0x1D19, 0x5152, 0x5152, 0x1691, + 0x515C, 0x515C, 0x10FC, 0x5162, 0x5162, 0x0FDB, 0x5165, 0x5165, 0x194D, + 0x5167, 0x5167, 0x103B, 0x5168, 0x5168, 0x19F6, 0x5169, 0x5169, 0x114D, + 0x516A, 0x516A, 0x18A8, 0x516B, 0x516B, 0x1D4B, 0x516C, 0x516C, 0x0ECB, + 0x516D, 0x516D, 0x11EF, 0x516E, 0x516E, 0x1E6F, 0x5171, 0x5171, 0x0ECC, + 0x5175, 0x5175, 0x13B3, 0x5176, 0x5176, 0x0FE0, 0x5177, 0x5177, 0x0F3A, + 0x5178, 0x5178, 0x19F7, 0x517C, 0x517C, 0x0E46, 0x5180, 0x5180, 0x0FE1, + 0x5186, 0x5186, 0x172D, 0x518A, 0x518A, 0x1BD6, 0x518D, 0x518D, 0x19AA, + 0x5192, 0x5192, 0x129D, 0x5195, 0x5195, 0x1280, 0x5197, 0x5197, 0x1820, + 0x51A0, 0x51A0, 0x0EEB, 0x51A5, 0x51A5, 0x128C, 0x51AA, 0x51AA, 0x127D, + 0x51AC, 0x51AC, 0x10EC, 0x51B6, 0x51B6, 0x16E8, 0x51B7, 0x51B7, 0x1148, + 0x51BD, 0x51BD, 0x117D, 0x51C4, 0x51C4, 0x1BDA, 0x51C6, 0x51C6, 0x1AF8, + 0x51C9, 0x51C9, 0x114E, 0x51CB, 0x51CB, 0x1A80, 0x51CC, 0x51CC, 0x11FF, + 0x51CD, 0x51CD, 0x10ED, 0x51DC, 0x51DC, 0x11FE, 0x51DD, 0x51DD, 0x18F6, + 0x51DE, 0x51DE, 0x1F64, 0x51E1, 0x51E1, 0x1391, 0x51F0, 0x51F0, 0x1EE0, + 0x51F1, 0x51F1, 0x0DEB, 0x51F6, 0x51F6, 0x1F4E, 0x51F8, 0x51F8, 0x1BFF, + 0x51F9, 0x51F9, 0x17FD, 0x51FA, 0x51FA, 0x1C87, 0x51FD, 0x51FD, 0x1DE3, + 0x5200, 0x5200, 0x10AE, 0x5203, 0x5203, 0x192D, 0x5206, 0x5206, 0x1420, + 0x5207, 0x5207, 0x1A1C, 0x5208, 0x5208, 0x178F, 0x520A, 0x520A, 0x0D95, + 0x520E, 0x520E, 0x12E5, 0x5211, 0x5211, 0x1E5D, 0x5217, 0x5217, 0x117E, + 0x521D, 0x521D, 0x1C2E, 0x5224, 0x5224, 0x1D42, 0x5225, 0x5225, 0x13AD, + 0x5229, 0x5229, 0x1206, 0x522A, 0x522A, 0x14B8, 0x522E, 0x522E, 0x0EFB, + 0x5230, 0x5230, 0x10AF, 0x5236, 0x5236, 0x1A67, 0x5237, 0x5237, 0x15B9, + 0x5238, 0x5238, 0x0F82, 0x5239, 0x5239, 0x1BA5, 0x523A, 0x523A, 0x1954, + 0x523B, 0x523B, 0x0D89, 0x5243, 0x5243, 0x1C25, 0x5247, 0x5247, 0x1CC0, + 0x524A, 0x524A, 0x14B5, 0x524B, 0x524B, 0x0FB1, 0x524C, 0x524C, 0x112D, + 0x524D, 0x524D, 0x19F8, 0x5254, 0x5254, 0x1BDF, 0x5256, 0x5256, 0x13F9, + 0x525B, 0x525B, 0x0DD0, 0x525D, 0x525D, 0x1316, 0x5261, 0x5261, 0x1557, + 0x5269, 0x5269, 0x1950, 0x526A, 0x526A, 0x19F9, 0x526F, 0x526F, 0x13FA, + 0x5272, 0x5272, 0x1DE1, 0x5275, 0x5275, 0x1BB6, 0x527D, 0x527D, 0x1D99, + 0x527F, 0x527F, 0x1C2F, 0x5283, 0x5283, 0x1F0C, 0x5287, 0x5287, 0x0FB2, + 0x5288, 0x5288, 0x139D, 0x5289, 0x5289, 0x11E1, 0x528D, 0x528D, 0x0E22, + 0x5291, 0x5291, 0x1A68, 0x5292, 0x5292, 0x0E23, 0x529B, 0x529B, 0x116A, + 0x529F, 0x529F, 0x0ECD, 0x52A0, 0x52A0, 0x0D70, 0x52A3, 0x52A3, 0x117F, + 0x52A4, 0x52A4, 0x0FB8, 0x52A9, 0x52A9, 0x1A81, 0x52AA, 0x52AA, 0x1049, + 0x52AB, 0x52AB, 0x0E28, 0x52BE, 0x52BE, 0x1E17, 0x52C1, 0x52C1, 0x0E51, + 0x52C3, 0x52C3, 0x1342, 0x52C5, 0x52C5, 0x1CC1, 0x52C7, 0x52C7, 0x1821, + 0x52C9, 0x52C9, 0x1281, 0x52CD, 0x52CD, 0x0E52, 0x52D2, 0x52D2, 0x11FC, + 0x52D5, 0x52D5, 0x10EE, 0x52D6, 0x52D6, 0x1855, 0x52D8, 0x52D8, 0x0DB6, + 0x52D9, 0x52D9, 0x12CC, 0x52DB, 0x52DB, 0x1F2B, 0x52DD, 0x52DD, 0x1635, + 0x52DE, 0x52DE, 0x119F, 0x52DF, 0x52DF, 0x129E, 0x52E2, 0x52E2, 0x1575, + 0x52E3, 0x52E3, 0x19DB, 0x52E4, 0x52E4, 0x0FB9, 0x52F3, 0x52F3, 0x1F2C, + 0x52F5, 0x52F5, 0x115A, 0x52F8, 0x52F8, 0x0F83, 0x52FA, 0x52FA, 0x196E, + 0x52FB, 0x52FB, 0x0FA9, 0x52FE, 0x52FE, 0x0F3B, 0x52FF, 0x52FF, 0x12F0, + 0x5305, 0x5305, 0x1D79, 0x5308, 0x5308, 0x1F4F, 0x530D, 0x530D, 0x1D7A, + 0x530F, 0x530F, 0x1D7B, 0x5310, 0x5310, 0x13D4, 0x5315, 0x5315, 0x143F, + 0x5316, 0x5316, 0x1EB7, 0x5317, 0x5317, 0x141F, 0x5319, 0x5319, 0x163D, + 0x5320, 0x5320, 0x1988, 0x5321, 0x5321, 0x0F01, 0x5323, 0x5323, 0x0DCA, + 0x532A, 0x532A, 0x1440, 0x532F, 0x532F, 0x1EF8, 0x5339, 0x5339, 0x1DB4, + 0x533F, 0x533F, 0x105C, 0x5340, 0x5340, 0x0F3C, 0x5341, 0x5341, 0x168C, + 0x5343, 0x5343, 0x1BED, 0x5344, 0x5344, 0x194E, 0x5347, 0x5347, 0x1636, + 0x5348, 0x5348, 0x17A5, 0x5349, 0x5349, 0x1F3A, 0x534A, 0x534A, 0x132A, + 0x534D, 0x534D, 0x123F, 0x5351, 0x5351, 0x1441, 0x5352, 0x5352, 0x1AB2, + 0x5353, 0x5353, 0x1CE3, 0x5354, 0x5354, 0x1E50, 0x5357, 0x5357, 0x1031, + 0x535A, 0x535A, 0x1317, 0x535C, 0x535C, 0x13D5, 0x535E, 0x535E, 0x13A7, + 0x5360, 0x5360, 0x1A24, 0x5366, 0x5366, 0x0F0C, 0x5368, 0x5368, 0x154A, + 0x536F, 0x536F, 0x12C0, 0x5370, 0x5370, 0x192E, 0x5371, 0x5371, 0x188F, + 0x5374, 0x5374, 0x0D8A, 0x5375, 0x5375, 0x1126, 0x5377, 0x5377, 0x0F84, + 0x537D, 0x537D, 0x1B0E, 0x537F, 0x537F, 0x0E53, 0x5384, 0x5384, 0x16DB, + 0x5393, 0x5393, 0x16D0, 0x5398, 0x5398, 0x1207, 0x539A, 0x539A, 0x1F20, + 0x539F, 0x539F, 0x1870, 0x53A0, 0x53A0, 0x1CA4, 0x53A5, 0x53A5, 0x0F8B, + 0x53A6, 0x53A6, 0x1DC2, 0x53AD, 0x53AD, 0x1765, 0x53BB, 0x53BB, 0x0E02, + 0x53C3, 0x53C3, 0x1BAB, 0x53C8, 0x53C8, 0x1839, 0x53C9, 0x53C9, 0x1B84, + 0x53CA, 0x53CA, 0x0FD4, 0x53CB, 0x53CB, 0x183A, 0x53CD, 0x53CD, 0x132B, + 0x53D4, 0x53D4, 0x15FC, 0x53D6, 0x53D6, 0x1C94, 0x53D7, 0x53D7, 0x15C0, + 0x53DB, 0x53DB, 0x132C, 0x53E1, 0x53E1, 0x1790, 0x53E2, 0x53E2, 0x1C53, + 0x53E3, 0x53E3, 0x0F3D, 0x53E4, 0x53E4, 0x0E91, 0x53E5, 0x53E5, 0x0F3E, + 0x53E9, 0x53E9, 0x0E92, 0x53EA, 0x53EA, 0x1B1F, 0x53EB, 0x53EB, 0x0F9A, + 0x53EC, 0x53EC, 0x157C, 0x53ED, 0x53ED, 0x1D4C, 0x53EF, 0x53EF, 0x0D71, + 0x53F0, 0x53F0, 0x1D08, 0x53F1, 0x53F1, 0x1B68, 0x53F2, 0x53F2, 0x1482, + 0x53F3, 0x53F3, 0x183B, 0x53F8, 0x53F8, 0x1483, 0x5403, 0x5403, 0x1F57, + 0x5404, 0x5404, 0x0D8B, 0x5408, 0x5408, 0x1DEF, 0x5409, 0x5409, 0x1020, + 0x540A, 0x540A, 0x19DC, 0x540C, 0x540C, 0x10EF, 0x540D, 0x540D, 0x128D, + 0x540E, 0x540E, 0x1F21, 0x540F, 0x540F, 0x1208, 0x5410, 0x5410, 0x1D1A, + 0x5411, 0x5411, 0x1E1F, 0x541B, 0x541B, 0x0F71, 0x541D, 0x541D, 0x121E, + 0x541F, 0x541F, 0x18ED, 0x5420, 0x5420, 0x1D6E, 0x5426, 0x5426, 0x13FB, + 0x5429, 0x5429, 0x1421, 0x542B, 0x542B, 0x1DE4, 0x5433, 0x5433, 0x17A7, + 0x5438, 0x5438, 0x1F5E, 0x5439, 0x5439, 0x1C95, 0x543B, 0x543B, 0x12E6, + 0x543C, 0x543C, 0x1F22, 0x543E, 0x543E, 0x17A6, 0x5442, 0x5442, 0x115B, + 0x5448, 0x5448, 0x1A35, 0x544A, 0x544A, 0x0E93, 0x5451, 0x5451, 0x1CF0, + 0x5468, 0x5468, 0x1AD3, 0x546A, 0x546A, 0x1AD2, 0x5471, 0x5471, 0x0E94, + 0x5473, 0x5473, 0x12F3, 0x5475, 0x5475, 0x0D72, 0x547B, 0x547B, 0x166A, + 0x547C, 0x547C, 0x1E7A, 0x547D, 0x547D, 0x128E, 0x5480, 0x5480, 0x19C2, + 0x5486, 0x5486, 0x1D7C, 0x548C, 0x548C, 0x1EB8, 0x548E, 0x548E, 0x0F3F, + 0x5490, 0x5490, 0x13FC, 0x54A4, 0x54A4, 0x1CD5, 0x54A8, 0x54A8, 0x1955, + 0x54AB, 0x54AB, 0x1B20, 0x54AC, 0x54AC, 0x0F1E, 0x54B3, 0x54B3, 0x1E07, + 0x54B8, 0x54B8, 0x1DE5, 0x54BD, 0x54BD, 0x192F, 0x54C0, 0x54C0, 0x16D1, + 0x54C1, 0x54C1, 0x1DA6, 0x54C4, 0x54C4, 0x1EAD, 0x54C8, 0x54C8, 0x1DF0, + 0x54C9, 0x54C9, 0x19AB, 0x54E1, 0x54E1, 0x1871, 0x54E5, 0x54E5, 0x0D73, + 0x54E8, 0x54E8, 0x1C30, 0x54ED, 0x54ED, 0x0EB7, 0x54EE, 0x54EE, 0x1F11, + 0x54F2, 0x54F2, 0x1C00, 0x54FA, 0x54FA, 0x1D7D, 0x5504, 0x5504, 0x1D4F, + 0x5506, 0x5506, 0x1484, 0x5507, 0x5507, 0x1B44, 0x550E, 0x550E, 0x1209, + 0x5510, 0x5510, 0x108F, 0x551C, 0x551C, 0x1251, 0x552F, 0x552F, 0x18A9, + 0x5531, 0x5531, 0x1BB7, 0x5535, 0x5535, 0x16BD, 0x553E, 0x553E, 0x1CD6, + 0x5544, 0x5544, 0x1CE4, 0x5546, 0x5546, 0x14D7, 0x554F, 0x554F, 0x12E7, + 0x5553, 0x5553, 0x0E7A, 0x5556, 0x5556, 0x1079, 0x555E, 0x555E, 0x1692, + 0x5563, 0x5563, 0x1DE6, 0x557C, 0x557C, 0x1A69, 0x5580, 0x5580, 0x0DFB, + 0x5584, 0x5584, 0x152D, 0x5586, 0x5586, 0x1C01, 0x5587, 0x5587, 0x1116, + 0x5589, 0x5589, 0x1F23, 0x558A, 0x558A, 0x1DE7, 0x5598, 0x5598, 0x1BEE, + 0x5599, 0x5599, 0x1F3B, 0x559A, 0x559A, 0x1ECB, 0x559C, 0x559C, 0x1F65, + 0x559D, 0x559D, 0x0DAD, 0x55A7, 0x55A7, 0x1F36, 0x55A9, 0x55A9, 0x18AA, + 0x55AA, 0x55AA, 0x14D8, 0x55AB, 0x55AB, 0x1024, 0x55AC, 0x55AC, 0x0F1F, + 0x55AE, 0x55AE, 0x1063, 0x55C5, 0x55C5, 0x1F24, 0x55C7, 0x55C7, 0x14F5, + 0x55D4, 0x55D4, 0x1B45, 0x55DA, 0x55DA, 0x17A8, 0x55DC, 0x55DC, 0x0FE2, + 0x55DF, 0x55DF, 0x1B85, 0x55E3, 0x55E3, 0x1485, 0x55E4, 0x55E4, 0x1CAA, + 0x55FD, 0x55FD, 0x15C1, 0x55FE, 0x55FE, 0x1AD4, 0x5606, 0x5606, 0x1CF1, + 0x5609, 0x5609, 0x0D74, 0x5614, 0x5614, 0x0F40, 0x5617, 0x5617, 0x14D9, + 0x562F, 0x562F, 0x157D, 0x5632, 0x5632, 0x1A82, 0x5634, 0x5634, 0x1C96, + 0x5636, 0x5636, 0x163E, 0x5653, 0x5653, 0x1E27, 0x5668, 0x5668, 0x0FE3, + 0x566B, 0x566B, 0x1F66, 0x5674, 0x5674, 0x1422, 0x5686, 0x5686, 0x1F12, + 0x56A5, 0x56A5, 0x1744, 0x56AC, 0x56AC, 0x1467, 0x56AE, 0x56AE, 0x1E20, + 0x56B4, 0x56B4, 0x1727, 0x56BC, 0x56BC, 0x196F, 0x56CA, 0x56CA, 0x1038, + 0x56CD, 0x56CD, 0x1F67, 0x56D1, 0x56D1, 0x1C4A, 0x56DA, 0x56DA, 0x15C2, + 0x56DB, 0x56DB, 0x1486, 0x56DE, 0x56DE, 0x1EF9, 0x56E0, 0x56E0, 0x1930, + 0x56F0, 0x56F0, 0x0EBE, 0x56F9, 0x56F9, 0x118B, 0x56FA, 0x56FA, 0x0E95, + 0x5703, 0x5703, 0x1D7E, 0x5704, 0x5704, 0x170E, 0x5708, 0x5708, 0x0F85, + 0x570B, 0x570B, 0x0F6B, 0x570D, 0x570D, 0x1890, 0x5712, 0x5712, 0x1873, + 0x5713, 0x5713, 0x1872, 0x5716, 0x5716, 0x10B0, 0x5718, 0x5718, 0x1064, + 0x571F, 0x571F, 0x1D1B, 0x5728, 0x5728, 0x19AC, 0x572D, 0x572D, 0x0F9B, + 0x5730, 0x5730, 0x1B21, 0x573B, 0x573B, 0x0FE4, 0x5740, 0x5740, 0x1B22, + 0x5742, 0x5742, 0x1D43, 0x5747, 0x5747, 0x0FAA, 0x574A, 0x574A, 0x134F, + 0x574D, 0x574D, 0x107A, 0x574E, 0x574E, 0x0DB7, 0x5750, 0x5750, 0x1AC7, + 0x5751, 0x5751, 0x0DFD, 0x5761, 0x5761, 0x1D32, 0x5764, 0x5764, 0x0EBF, + 0x5766, 0x5766, 0x1CF2, 0x576A, 0x576A, 0x1D69, 0x576E, 0x576E, 0x109C, + 0x5770, 0x5770, 0x0E54, 0x5775, 0x5775, 0x0F41, 0x577C, 0x577C, 0x1CE5, + 0x5782, 0x5782, 0x15C3, 0x5788, 0x5788, 0x109B, 0x578B, 0x578B, 0x1E5E, + 0x5793, 0x5793, 0x1E08, 0x57A0, 0x57A0, 0x18E5, 0x57A2, 0x57A2, 0x0F42, + 0x57A3, 0x57A3, 0x1874, 0x57C3, 0x57C3, 0x16D2, 0x57C7, 0x57C7, 0x1822, + 0x57C8, 0x57C8, 0x1AF9, 0x57CB, 0x57CB, 0x1264, 0x57CE, 0x57CE, 0x1562, + 0x57DF, 0x57DF, 0x173C, 0x57E0, 0x57E0, 0x13FD, 0x57F0, 0x57F0, 0x1BCB, + 0x57F4, 0x57F4, 0x1658, 0x57F7, 0x57F7, 0x1B78, 0x57F9, 0x57F9, 0x136B, + 0x57FA, 0x57FA, 0x0FE5, 0x57FC, 0x57FC, 0x0FE6, 0x5800, 0x5800, 0x0F77, + 0x5802, 0x5802, 0x1090, 0x5805, 0x5805, 0x0E35, 0x5806, 0x5806, 0x1D23, + 0x5808, 0x5808, 0x0DD1, 0x5809, 0x5809, 0x18D3, 0x580A, 0x580A, 0x16A1, + 0x581E, 0x581E, 0x1C13, 0x5821, 0x5821, 0x13C3, 0x5824, 0x5824, 0x1A6A, + 0x5827, 0x5827, 0x1745, 0x582A, 0x582A, 0x0DB8, 0x582F, 0x582F, 0x17FE, + 0x5830, 0x5830, 0x171E, 0x5831, 0x5831, 0x13C4, 0x5834, 0x5834, 0x1989, + 0x5835, 0x5835, 0x10B1, 0x583A, 0x583A, 0x0E7B, 0x584A, 0x584A, 0x0F11, + 0x584B, 0x584B, 0x1772, 0x584F, 0x584F, 0x0DEC, 0x5851, 0x5851, 0x157E, + 0x5854, 0x5854, 0x1D00, 0x5857, 0x5857, 0x10B2, 0x5858, 0x5858, 0x1091, + 0x585A, 0x585A, 0x1C54, 0x585E, 0x585E, 0x14F2, 0x5861, 0x5861, 0x19FA, + 0x5862, 0x5862, 0x17A9, 0x5864, 0x5864, 0x1F2D, 0x5875, 0x5875, 0x1B46, + 0x5879, 0x5879, 0x1BAC, 0x587C, 0x587C, 0x19FB, 0x587E, 0x587E, 0x15FD, + 0x5883, 0x5883, 0x0E55, 0x5885, 0x5885, 0x14FD, 0x5889, 0x5889, 0x1823, + 0x5893, 0x5893, 0x12C1, 0x589C, 0x589C, 0x1C61, 0x589E, 0x589E, 0x1B13, + 0x589F, 0x589F, 0x1E28, 0x58A8, 0x58A8, 0x12E2, 0x58A9, 0x58A9, 0x10DF, + 0x58AE, 0x58AE, 0x1CD7, 0x58B3, 0x58B3, 0x1423, 0x58BA, 0x58BA, 0x17AA, + 0x58BB, 0x58BB, 0x198A, 0x58BE, 0x58BE, 0x0D96, 0x58C1, 0x58C1, 0x139E, + 0x58C5, 0x58C5, 0x17CA, 0x58C7, 0x58C7, 0x1065, 0x58CE, 0x58CE, 0x1F2E, + 0x58D1, 0x58D1, 0x1DCE, 0x58D3, 0x58D3, 0x16C5, 0x58D5, 0x58D5, 0x1E7B, + 0x58D8, 0x58D8, 0x11D4, 0x58D9, 0x58D9, 0x0F02, 0x58DE, 0x58DE, 0x0F12, + 0x58DF, 0x58DF, 0x11B8, 0x58E4, 0x58E4, 0x16F8, 0x58EB, 0x58EB, 0x1487, + 0x58EC, 0x58EC, 0x1946, 0x58EF, 0x58EF, 0x198B, 0x58F9, 0x58F9, 0x193F, + 0x58FA, 0x58FA, 0x1E7C, 0x58FB, 0x58FB, 0x14FE, 0x58FD, 0x58FD, 0x15C4, + 0x590F, 0x590F, 0x1DC3, 0x5914, 0x5914, 0x0FE7, 0x5915, 0x5915, 0x151B, + 0x5916, 0x5916, 0x17F7, 0x5919, 0x5919, 0x15FE, 0x591A, 0x591A, 0x105E, + 0x591C, 0x591C, 0x16E9, 0x5922, 0x5922, 0x12BD, 0x5927, 0x5927, 0x109D, + 0x5929, 0x5929, 0x1BEF, 0x592A, 0x592A, 0x1D09, 0x592B, 0x592B, 0x13FE, + 0x592D, 0x592D, 0x17FF, 0x592E, 0x592E, 0x16CA, 0x5931, 0x5931, 0x167E, + 0x5937, 0x5937, 0x1910, 0x593E, 0x593E, 0x1E51, 0x5944, 0x5944, 0x1728, + 0x5947, 0x5947, 0x0FE8, 0x5948, 0x5948, 0x103C, 0x5949, 0x5949, 0x13E6, + 0x594E, 0x594E, 0x0F9C, 0x594F, 0x594F, 0x1AD5, 0x5950, 0x5950, 0x1ECC, + 0x5951, 0x5951, 0x0E7C, 0x5954, 0x5954, 0x1424, 0x5955, 0x5955, 0x1E32, + 0x5957, 0x5957, 0x1D2A, 0x595A, 0x595A, 0x1E09, 0x5960, 0x5960, 0x19FC, + 0x5962, 0x5962, 0x1488, 0x5967, 0x5967, 0x17AB, 0x596A, 0x596A, 0x1CFA, + 0x596B, 0x596B, 0x18D8, 0x596C, 0x596C, 0x198C, 0x596D, 0x596D, 0x151C, + 0x596E, 0x596E, 0x1425, 0x5973, 0x5973, 0x103F, 0x5974, 0x5974, 0x104A, + 0x5978, 0x5978, 0x0D97, 0x597D, 0x597D, 0x1E7D, 0x5982, 0x5982, 0x1730, + 0x5983, 0x5983, 0x1442, 0x5984, 0x5984, 0x1259, 0x598A, 0x598A, 0x1947, + 0x5993, 0x5993, 0x0FE9, 0x5996, 0x5996, 0x1800, 0x5997, 0x5997, 0x0FC7, + 0x5999, 0x5999, 0x12C2, 0x59A5, 0x59A5, 0x1CD8, 0x59A8, 0x59A8, 0x1350, + 0x59AC, 0x59AC, 0x1D2B, 0x59B9, 0x59B9, 0x1265, 0x59BB, 0x59BB, 0x1BDB, + 0x59BE, 0x59BE, 0x1C14, 0x59C3, 0x59C3, 0x1A36, 0x59C6, 0x59C6, 0x129F, + 0x59C9, 0x59C9, 0x1956, 0x59CB, 0x59CB, 0x163F, 0x59D0, 0x59D0, 0x19C3, + 0x59D1, 0x59D1, 0x0E96, 0x59D3, 0x59D3, 0x1563, 0x59D4, 0x59D4, 0x1891, + 0x59D9, 0x59D9, 0x1948, 0x59DA, 0x59DA, 0x1801, 0x59DC, 0x59DC, 0x0DD2, + 0x59DD, 0x59DD, 0x1AD0, 0x59E6, 0x59E6, 0x0D98, 0x59E8, 0x59E8, 0x1911, + 0x59EA, 0x59EA, 0x1B69, 0x59EC, 0x59EC, 0x1F68, 0x59EE, 0x59EE, 0x1DF8, + 0x59F8, 0x59F8, 0x1746, 0x59FB, 0x59FB, 0x1931, 0x59FF, 0x59FF, 0x1957, + 0x5A01, 0x5A01, 0x1892, 0x5A03, 0x5A03, 0x17F4, 0x5A11, 0x5A11, 0x1489, + 0x5A18, 0x5A18, 0x1039, 0x5A1B, 0x5A1B, 0x17AC, 0x5A1C, 0x5A1C, 0x1026, + 0x5A1F, 0x5A1F, 0x1747, 0x5A20, 0x5A20, 0x166B, 0x5A25, 0x5A25, 0x1693, + 0x5A29, 0x5A29, 0x1240, 0x5A36, 0x5A36, 0x1C97, 0x5A3C, 0x5A3C, 0x1BB8, + 0x5A41, 0x5A41, 0x11D5, 0x5A46, 0x5A46, 0x1D33, 0x5A49, 0x5A49, 0x17DB, + 0x5A5A, 0x5A5A, 0x1EA4, 0x5A62, 0x5A62, 0x1443, 0x5A66, 0x5A66, 0x13FF, + 0x5A92, 0x5A92, 0x1266, 0x5A9A, 0x5A9A, 0x12F4, 0x5A9B, 0x5A9B, 0x1875, + 0x5AA4, 0x5AA4, 0x1640, 0x5AC1, 0x5AC1, 0x0D75, 0x5AC2, 0x5AC2, 0x15C5, + 0x5AC4, 0x5AC4, 0x1876, 0x5AC9, 0x5AC9, 0x1B6A, 0x5ACC, 0x5ACC, 0x1E4E, + 0x5AE1, 0x5AE1, 0x19DD, 0x5AE6, 0x5AE6, 0x1DF9, 0x5AE9, 0x5AE9, 0x1055, + 0x5B05, 0x5B05, 0x1EB9, 0x5B09, 0x5B09, 0x1F69, 0x5B0B, 0x5B0B, 0x152E, + 0x5B0C, 0x5B0C, 0x0F20, 0x5B16, 0x5B16, 0x1D6F, 0x5B2A, 0x5B2A, 0x1468, + 0x5B40, 0x5B40, 0x14DA, 0x5B43, 0x5B43, 0x16F9, 0x5B50, 0x5B50, 0x1958, + 0x5B51, 0x5B51, 0x1E4A, 0x5B54, 0x5B54, 0x0ECE, 0x5B55, 0x5B55, 0x1951, + 0x5B57, 0x5B57, 0x1959, 0x5B58, 0x5B58, 0x1AB0, 0x5B5A, 0x5B5A, 0x1400, + 0x5B5C, 0x5B5C, 0x195A, 0x5B5D, 0x5B5D, 0x1F13, 0x5B5F, 0x5B5F, 0x1277, + 0x5B63, 0x5B63, 0x0E7D, 0x5B64, 0x5B64, 0x0E97, 0x5B69, 0x5B69, 0x1E0A, + 0x5B6B, 0x5B6B, 0x15AA, 0x5B70, 0x5B70, 0x15FF, 0x5B71, 0x5B71, 0x197A, + 0x5B75, 0x5B75, 0x1401, 0x5B78, 0x5B78, 0x1DCF, 0x5B7A, 0x5B7A, 0x18AB, + 0x5B7C, 0x5B7C, 0x1723, 0x5B85, 0x5B85, 0x10AA, 0x5B87, 0x5B87, 0x183C, + 0x5B88, 0x5B88, 0x15C6, 0x5B89, 0x5B89, 0x16AF, 0x5B8B, 0x5B8B, 0x15B1, + 0x5B8C, 0x5B8C, 0x17DC, 0x5B8F, 0x5B8F, 0x0F18, 0x5B93, 0x5B93, 0x13D6, + 0x5B95, 0x5B95, 0x1D03, 0x5B96, 0x5B96, 0x1F0E, 0x5B97, 0x5B97, 0x1AB6, + 0x5B98, 0x5B98, 0x0EEC, 0x5B99, 0x5B99, 0x1AD6, 0x5B9A, 0x5B9A, 0x1A37, + 0x5B9B, 0x5B9B, 0x17DD, 0x5B9C, 0x5B9C, 0x18FD, 0x5BA2, 0x5BA2, 0x0DFC, + 0x5BA3, 0x5BA3, 0x152F, 0x5BA4, 0x5BA4, 0x167F, 0x5BA5, 0x5BA5, 0x18AC, + 0x5BA6, 0x5BA6, 0x1ECD, 0x5BAC, 0x5BAC, 0x1564, 0x5BAE, 0x5BAE, 0x0F7B, + 0x5BB0, 0x5BB0, 0x19AD, 0x5BB3, 0x5BB3, 0x1E0B, 0x5BB4, 0x5BB4, 0x1748, + 0x5BB5, 0x5BB5, 0x157F, 0x5BB6, 0x5BB6, 0x0D76, 0x5BB8, 0x5BB8, 0x166C, + 0x5BB9, 0x5BB9, 0x1824, 0x5BBF, 0x5BBF, 0x1600, 0x5BC0, 0x5BC0, 0x1BCC, + 0x5BC2, 0x5BC2, 0x19DE, 0x5BC3, 0x5BC3, 0x1877, 0x5BC4, 0x5BC4, 0x0FEA, + 0x5BC5, 0x5BC5, 0x1932, 0x5BC6, 0x5BC6, 0x1313, 0x5BC7, 0x5BC7, 0x0F43, + 0x5BCC, 0x5BCC, 0x1402, 0x5BD0, 0x5BD0, 0x1267, 0x5BD2, 0x5BD2, 0x1DD3, + 0x5BD3, 0x5BD3, 0x183D, 0x5BD4, 0x5BD4, 0x1659, 0x5BD7, 0x5BD7, 0x1048, + 0x5BDE, 0x5BDE, 0x1238, 0x5BDF, 0x5BDF, 0x1BA6, 0x5BE1, 0x5BE1, 0x0EDB, + 0x5BE2, 0x5BE2, 0x1CC8, 0x5BE4, 0x5BE4, 0x17AD, 0x5BE5, 0x5BE5, 0x1802, + 0x5BE6, 0x5BE6, 0x1680, 0x5BE7, 0x5BE7, 0x1047, 0x5BE8, 0x5BE8, 0x1BCD, + 0x5BE9, 0x5BE9, 0x1682, 0x5BEB, 0x5BEB, 0x148A, 0x5BEC, 0x5BEC, 0x0EED, + 0x5BEE, 0x5BEE, 0x11C9, 0x5BEF, 0x5BEF, 0x1AFA, 0x5BF5, 0x5BF5, 0x1C55, + 0x5BF6, 0x5BF6, 0x13C5, 0x5BF8, 0x5BF8, 0x1C4F, 0x5BFA, 0x5BFA, 0x148B, + 0x5C01, 0x5C01, 0x13E7, 0x5C04, 0x5C04, 0x148C, 0x5C07, 0x5C07, 0x198D, + 0x5C08, 0x5C08, 0x19FD, 0x5C09, 0x5C09, 0x1893, 0x5C0A, 0x5C0A, 0x1AB1, + 0x5C0B, 0x5C0B, 0x1683, 0x5C0D, 0x5C0D, 0x109E, 0x5C0E, 0x5C0E, 0x10B3, + 0x5C0F, 0x5C0F, 0x1580, 0x5C11, 0x5C11, 0x1581, 0x5C16, 0x5C16, 0x1C0A, + 0x5C19, 0x5C19, 0x14DB, 0x5C24, 0x5C24, 0x183E, 0x5C28, 0x5C28, 0x1351, + 0x5C31, 0x5C31, 0x1C98, 0x5C38, 0x5C38, 0x1641, 0x5C39, 0x5C39, 0x18D9, + 0x5C3A, 0x5C3A, 0x1BE0, 0x5C3B, 0x5C3B, 0x0E98, 0x5C3C, 0x5C3C, 0x105A, + 0x5C3E, 0x5C3E, 0x12F5, 0x5C3F, 0x5C3F, 0x1054, 0x5C40, 0x5C40, 0x0F6C, + 0x5C45, 0x5C45, 0x0E03, 0x5C46, 0x5C46, 0x0E7E, 0x5C48, 0x5C48, 0x0F78, + 0x5C4B, 0x5C4B, 0x17BE, 0x5C4D, 0x5C4D, 0x1643, 0x5C4E, 0x5C4E, 0x1642, + 0x5C51, 0x5C51, 0x154B, 0x5C55, 0x5C55, 0x19FE, 0x5C5B, 0x5C5B, 0x13B4, + 0x5C60, 0x5C60, 0x10B4, 0x5C62, 0x5C62, 0x11D6, 0x5C64, 0x5C64, 0x1CA7, + 0x5C65, 0x5C65, 0x120A, 0x5C6C, 0x5C6C, 0x15A2, 0x5C6F, 0x5C6F, 0x1106, + 0x5C71, 0x5C71, 0x14B9, 0x5C79, 0x5C79, 0x1F58, 0x5C90, 0x5C90, 0x0FEB, + 0x5C91, 0x5C91, 0x197F, 0x5CA1, 0x5CA1, 0x0DD3, 0x5CA9, 0x5CA9, 0x16BE, + 0x5CAB, 0x5CAB, 0x15C7, 0x5CAC, 0x5CAC, 0x0DCB, 0x5CB1, 0x5CB1, 0x109F, + 0x5CB3, 0x5CB3, 0x16A2, 0x5CB5, 0x5CB5, 0x1E7E, 0x5CB7, 0x5CB7, 0x1306, + 0x5CB8, 0x5CB8, 0x16B0, 0x5CBA, 0x5CBA, 0x118C, 0x5CBE, 0x5CBE, 0x1A25, + 0x5CC0, 0x5CC0, 0x15C8, 0x5CD9, 0x5CD9, 0x1CAB, 0x5CE0, 0x5CE0, 0x14DC, + 0x5CE8, 0x5CE8, 0x1694, 0x5CEF, 0x5CF0, 0x13E8, 0x5CF4, 0x5CF4, 0x1E37, + 0x5CF6, 0x5CF6, 0x10B5, 0x5CFB, 0x5CFB, 0x1AFB, 0x5CFD, 0x5CFD, 0x1E52, + 0x5D07, 0x5D07, 0x1627, 0x5D0D, 0x5D0D, 0x1145, 0x5D0E, 0x5D0E, 0x0FEC, + 0x5D11, 0x5D11, 0x0EC0, 0x5D14, 0x5D14, 0x1C5F, 0x5D16, 0x5D16, 0x16D3, + 0x5D17, 0x5D17, 0x0DD4, 0x5D19, 0x5D19, 0x11F4, 0x5D27, 0x5D27, 0x1628, + 0x5D29, 0x5D29, 0x1437, 0x5D4B, 0x5D4B, 0x12F6, 0x5D4C, 0x5D4C, 0x0DB9, + 0x5D50, 0x5D50, 0x112F, 0x5D69, 0x5D69, 0x1629, 0x5D6C, 0x5D6C, 0x17F8, + 0x5D6F, 0x5D6F, 0x1B86, 0x5D87, 0x5D87, 0x0F44, 0x5D8B, 0x5D8B, 0x10B6, + 0x5D9D, 0x5D9D, 0x110D, 0x5DA0, 0x5DA0, 0x0F21, 0x5DA2, 0x5DA2, 0x1803, + 0x5DAA, 0x5DAA, 0x172B, 0x5DB8, 0x5DB8, 0x1773, 0x5DBA, 0x5DBA, 0x118D, + 0x5DBC, 0x5DBC, 0x14FF, 0x5DBD, 0x5DBD, 0x16A3, 0x5DCD, 0x5DCD, 0x17F9, + 0x5DD2, 0x5DD2, 0x1241, 0x5DD6, 0x5DD6, 0x16BF, 0x5DDD, 0x5DDD, 0x1BF0, + 0x5DDE, 0x5DDE, 0x1AD7, 0x5DE1, 0x5DE1, 0x1608, 0x5DE2, 0x5DE2, 0x1582, + 0x5DE5, 0x5DE5, 0x0ECF, 0x5DE6, 0x5DE6, 0x1AC8, 0x5DE7, 0x5DE7, 0x0F22, + 0x5DE8, 0x5DE8, 0x0E04, 0x5DEB, 0x5DEB, 0x12CD, 0x5DEE, 0x5DEE, 0x1B87, + 0x5DF1, 0x5DF1, 0x0FED, 0x5DF2, 0x5DF2, 0x1912, 0x5DF3, 0x5DF3, 0x148D, + 0x5DF4, 0x5DF4, 0x1D34, 0x5DF7, 0x5DF7, 0x1DFA, 0x5DFD, 0x5DFD, 0x15AB, + 0x5DFE, 0x5DFE, 0x0E14, 0x5E02, 0x5E02, 0x1644, 0x5E03, 0x5E03, 0x1D7F, + 0x5E06, 0x5E06, 0x1392, 0x5E0C, 0x5E0C, 0x1F6A, 0x5E11, 0x5E11, 0x1D04, + 0x5E16, 0x5E16, 0x1C15, 0x5E19, 0x5E19, 0x1B6B, 0x5E1B, 0x5E1B, 0x137E, + 0x5E1D, 0x5E1D, 0x1A6B, 0x5E25, 0x5E25, 0x15C9, 0x5E2B, 0x5E2B, 0x148E, + 0x5E2D, 0x5E2D, 0x151D, 0x5E33, 0x5E33, 0x198E, 0x5E36, 0x5E36, 0x10A0, + 0x5E38, 0x5E38, 0x14DD, 0x5E3D, 0x5E3D, 0x12A0, 0x5E3F, 0x5E3F, 0x1F25, + 0x5E40, 0x5E40, 0x1A38, 0x5E44, 0x5E44, 0x16A4, 0x5E45, 0x5E45, 0x1D93, + 0x5E47, 0x5E47, 0x1352, 0x5E4C, 0x5E4C, 0x1EE1, 0x5E55, 0x5E55, 0x1239, + 0x5E5F, 0x5E5F, 0x1CAC, 0x5E61, 0x5E61, 0x1384, 0x5E62, 0x5E62, 0x1092, + 0x5E63, 0x5E63, 0x1D70, 0x5E72, 0x5E72, 0x0D99, 0x5E73, 0x5E73, 0x1D6A, + 0x5E74, 0x5E74, 0x1040, 0x5E77, 0x5E77, 0x13B5, 0x5E78, 0x5E78, 0x1E1A, + 0x5E79, 0x5E79, 0x0D9A, 0x5E7B, 0x5E7B, 0x1ECE, 0x5E7C, 0x5E7D, 0x18AD, + 0x5E7E, 0x5E7E, 0x0FEE, 0x5E84, 0x5E84, 0x198F, 0x5E87, 0x5E87, 0x1444, + 0x5E8A, 0x5E8A, 0x14DE, 0x5E8F, 0x5E8F, 0x1500, 0x5E95, 0x5E95, 0x19C4, + 0x5E97, 0x5E97, 0x1A26, 0x5E9A, 0x5E9A, 0x0E56, 0x5E9C, 0x5E9C, 0x1403, + 0x5EA0, 0x5EA0, 0x14DF, 0x5EA6, 0x5EA6, 0x10B7, 0x5EA7, 0x5EA7, 0x1AC9, + 0x5EAB, 0x5EAB, 0x0E99, 0x5EAD, 0x5EAD, 0x1A39, 0x5EB5, 0x5EB5, 0x16C0, + 0x5EB6, 0x5EB6, 0x1501, 0x5EB7, 0x5EB7, 0x0DD5, 0x5EB8, 0x5EB8, 0x1825, + 0x5EBE, 0x5EBE, 0x18AF, 0x5EC2, 0x5EC2, 0x14E0, 0x5EC8, 0x5EC8, 0x1DC4, + 0x5EC9, 0x5EC9, 0x1183, 0x5ECA, 0x5ECA, 0x113C, 0x5ED0, 0x5ED0, 0x0F45, + 0x5ED3, 0x5ED3, 0x0EE7, 0x5ED6, 0x5ED6, 0x11CA, 0x5EDA, 0x5EDA, 0x1AD8, + 0x5EDB, 0x5EDB, 0x19FF, 0x5EDF, 0x5EDF, 0x12C3, 0x5EE0, 0x5EE0, 0x1BB9, + 0x5EE2, 0x5EE2, 0x1D71, 0x5EE3, 0x5EE3, 0x0F03, 0x5EEC, 0x5EEC, 0x115C, + 0x5EF3, 0x5EF3, 0x1C1D, 0x5EF6, 0x5EF6, 0x1749, 0x5EF7, 0x5EF7, 0x1A3A, + 0x5EFA, 0x5EFA, 0x0E15, 0x5EFB, 0x5EFB, 0x1EFA, 0x5F01, 0x5F01, 0x13A8, + 0x5F04, 0x5F04, 0x11B9, 0x5F0A, 0x5F0A, 0x1D72, 0x5F0F, 0x5F0F, 0x165A, + 0x5F11, 0x5F11, 0x1645, 0x5F13, 0x5F13, 0x0F7C, 0x5F14, 0x5F14, 0x1A83, + 0x5F15, 0x5F15, 0x1933, 0x5F17, 0x5F17, 0x1434, 0x5F18, 0x5F18, 0x1EAE, + 0x5F1B, 0x5F1B, 0x1913, 0x5F1F, 0x5F1F, 0x1A6C, 0x5F26, 0x5F26, 0x1E38, + 0x5F27, 0x5F27, 0x1E7F, 0x5F29, 0x5F29, 0x104B, 0x5F31, 0x5F31, 0x16F0, + 0x5F35, 0x5F35, 0x1990, 0x5F3A, 0x5F3A, 0x0DD6, 0x5F3C, 0x5F3C, 0x1DB5, + 0x5F48, 0x5F48, 0x1CF3, 0x5F4A, 0x5F4A, 0x0DD7, 0x5F4C, 0x5F4C, 0x12F7, + 0x5F4E, 0x5F4E, 0x1242, 0x5F56, 0x5F56, 0x1066, 0x5F57, 0x5F57, 0x1E70, + 0x5F59, 0x5F59, 0x1F3D, 0x5F5B, 0x5F5B, 0x1914, 0x5F62, 0x5F62, 0x1E5F, + 0x5F66, 0x5F66, 0x171F, 0x5F67, 0x5F67, 0x1856, 0x5F69, 0x5F69, 0x1BCE, + 0x5F6A, 0x5F6A, 0x1D9A, 0x5F6B, 0x5F6B, 0x1A84, 0x5F6C, 0x5F6C, 0x1469, + 0x5F6D, 0x5F6D, 0x1D59, 0x5F70, 0x5F70, 0x1BBA, 0x5F71, 0x5F71, 0x1774, + 0x5F77, 0x5F77, 0x1353, 0x5F79, 0x5F79, 0x173D, 0x5F7C, 0x5F7C, 0x1DAD, + 0x5F7F, 0x5F7F, 0x1435, 0x5F80, 0x5F80, 0x17EE, 0x5F81, 0x5F81, 0x1A3B, + 0x5F85, 0x5F85, 0x10A1, 0x5F87, 0x5F87, 0x1609, 0x5F8A, 0x5F8A, 0x1EFB, + 0x5F8B, 0x5F8B, 0x11F8, 0x5F8C, 0x5F8C, 0x1F26, 0x5F90, 0x5F90, 0x1502, + 0x5F91, 0x5F91, 0x0E57, 0x5F92, 0x5F92, 0x10B8, 0x5F97, 0x5F97, 0x110C, + 0x5F98, 0x5F98, 0x136C, 0x5F99, 0x5F99, 0x148F, 0x5F9E, 0x5F9E, 0x1AB7, + 0x5FA0, 0x5FA0, 0x1146, 0x5FA1, 0x5FA1, 0x170F, 0x5FA8, 0x5FA8, 0x1EE2, + 0x5FA9, 0x5FA9, 0x13D7, 0x5FAA, 0x5FAA, 0x160A, 0x5FAE, 0x5FAE, 0x12F8, + 0x5FB5, 0x5FB5, 0x1B7E, 0x5FB7, 0x5FB7, 0x10AB, 0x5FB9, 0x5FB9, 0x1C02, + 0x5FBD, 0x5FBD, 0x1F3E, 0x5FC3, 0x5FC3, 0x1684, 0x5FC5, 0x5FC5, 0x1DB6, + 0x5FCC, 0x5FCC, 0x0FEF, 0x5FCD, 0x5FCD, 0x1934, 0x5FD6, 0x5FD6, 0x1C50, + 0x5FD7, 0x5FD7, 0x1B23, 0x5FD8, 0x5FD9, 0x125A, 0x5FE0, 0x5FE0, 0x1C8B, + 0x5FEB, 0x5FEB, 0x1CD3, 0x5FF5, 0x5FF5, 0x1043, 0x5FFD, 0x5FFD, 0x1EAA, + 0x5FFF, 0x5FFF, 0x1426, 0x600F, 0x600F, 0x16CB, 0x6012, 0x6012, 0x104C, + 0x6016, 0x6016, 0x1D80, 0x601C, 0x601C, 0x118E, 0x601D, 0x601D, 0x1490, + 0x6020, 0x6020, 0x1D0A, 0x6021, 0x6021, 0x1915, 0x6025, 0x6025, 0x0FD5, + 0x6027, 0x6027, 0x1565, 0x6028, 0x6028, 0x1878, 0x602A, 0x602A, 0x0F13, + 0x602F, 0x602F, 0x0E29, 0x6041, 0x6041, 0x1949, 0x6042, 0x6042, 0x160B, + 0x6043, 0x6043, 0x1646, 0x604D, 0x604D, 0x1EE3, 0x6050, 0x6050, 0x0ED0, + 0x6052, 0x6052, 0x1DFB, 0x6055, 0x6055, 0x1503, 0x6059, 0x6059, 0x16FA, + 0x605D, 0x605D, 0x0EFC, 0x6062, 0x6062, 0x1EFC, 0x6063, 0x6063, 0x195B, + 0x6064, 0x6064, 0x1F4A, 0x6065, 0x6065, 0x1CAD, 0x6068, 0x6068, 0x1DD4, + 0x6069, 0x6069, 0x18E6, 0x606A, 0x606A, 0x0D8C, 0x606C, 0x606C, 0x1044, + 0x606D, 0x606D, 0x0ED1, 0x606F, 0x606F, 0x165B, 0x6070, 0x6070, 0x1F5F, + 0x6085, 0x6085, 0x1761, 0x6089, 0x6089, 0x1681, 0x608C, 0x608C, 0x1A6D, + 0x608D, 0x608D, 0x1DD5, 0x6094, 0x6094, 0x1EFD, 0x6096, 0x6096, 0x1D50, + 0x609A, 0x609A, 0x15B2, 0x609B, 0x609B, 0x1A00, 0x609F, 0x609F, 0x17AE, + 0x60A0, 0x60A0, 0x18B0, 0x60A3, 0x60A3, 0x1ECF, 0x60A4, 0x60A4, 0x1C56, + 0x60A7, 0x60A7, 0x120B, 0x60B0, 0x60B0, 0x1AB8, 0x60B2, 0x60B2, 0x1445, + 0x60B3, 0x60B3, 0x10AC, 0x60B4, 0x60B4, 0x1C90, 0x60B6, 0x60B6, 0x1307, + 0x60B8, 0x60B8, 0x0E7F, 0x60BC, 0x60BC, 0x10B9, 0x60BD, 0x60BD, 0x1BDC, + 0x60C5, 0x60C5, 0x1A3C, 0x60C7, 0x60C7, 0x10E0, 0x60D1, 0x60D1, 0x1EA1, + 0x60DA, 0x60DA, 0x1EAB, 0x60DC, 0x60DC, 0x151E, 0x60DF, 0x60DF, 0x18B1, + 0x60E0, 0x60E0, 0x1E71, 0x60E1, 0x60E1, 0x16A5, 0x60F0, 0x60F0, 0x1CD9, + 0x60F1, 0x60F1, 0x1052, 0x60F3, 0x60F3, 0x14E1, 0x60F6, 0x60F6, 0x1EE4, + 0x60F9, 0x60F9, 0x16EA, 0x60FA, 0x60FA, 0x1566, 0x60FB, 0x60FB, 0x1CA5, + 0x6101, 0x6101, 0x15CA, 0x6106, 0x6106, 0x0E16, 0x6108, 0x6109, 0x18B2, + 0x610D, 0x610D, 0x1308, 0x610E, 0x610E, 0x1D5D, 0x610F, 0x610F, 0x18FE, + 0x6115, 0x6115, 0x16A6, 0x611A, 0x611A, 0x183F, 0x611B, 0x611B, 0x16D4, + 0x611F, 0x611F, 0x0DBA, 0x6127, 0x6127, 0x0F14, 0x6130, 0x6130, 0x1EE5, + 0x6134, 0x6134, 0x1BBB, 0x6137, 0x6137, 0x0DED, 0x613C, 0x613C, 0x166D, + 0x613E, 0x613E, 0x0DEE, 0x613F, 0x613F, 0x1879, 0x6142, 0x6142, 0x1826, + 0x6144, 0x6144, 0x11F9, 0x6147, 0x6147, 0x18E7, 0x6148, 0x6148, 0x195C, + 0x614A, 0x614A, 0x0E47, 0x614B, 0x614B, 0x1D0B, 0x614C, 0x614C, 0x1EE6, + 0x6153, 0x6153, 0x1D9B, 0x6155, 0x6155, 0x12A1, 0x6158, 0x6159, 0x1BAD, + 0x615D, 0x615D, 0x1D2F, 0x615F, 0x615F, 0x1D1D, 0x6162, 0x6162, 0x1243, + 0x6163, 0x6163, 0x0EEE, 0x6164, 0x6164, 0x0D8D, 0x6167, 0x6167, 0x1E72, + 0x6168, 0x6168, 0x0DEF, 0x616B, 0x616B, 0x1AB9, 0x616E, 0x616E, 0x115D, + 0x6170, 0x6170, 0x1894, 0x6176, 0x6176, 0x0E58, 0x6177, 0x6177, 0x0DD8, + 0x617D, 0x617D, 0x1BE1, 0x617E, 0x617E, 0x1818, 0x6181, 0x6181, 0x1C57, + 0x6182, 0x6182, 0x1840, 0x618A, 0x618A, 0x1446, 0x618E, 0x618E, 0x1B14, + 0x6190, 0x6190, 0x1171, 0x6191, 0x6191, 0x1475, 0x6194, 0x6194, 0x1C31, + 0x6198, 0x6198, 0x1F6C, 0x6199, 0x6199, 0x1F6B, 0x619A, 0x619A, 0x1CF4, + 0x61A4, 0x61A4, 0x1427, 0x61A7, 0x61A7, 0x10F0, 0x61A9, 0x61A9, 0x0E2C, + 0x61AB, 0x61AB, 0x1309, 0x61AC, 0x61AC, 0x0E59, 0x61AE, 0x61AE, 0x12CE, + 0x61B2, 0x61B2, 0x1E2B, 0x61B6, 0x61B6, 0x1719, 0x61BA, 0x61BA, 0x107B, + 0x61BE, 0x61BE, 0x0DBB, 0x61C3, 0x61C3, 0x0FBA, 0x61C7, 0x61C7, 0x0D9B, + 0x61C8, 0x61C8, 0x1E0C, 0x61C9, 0x61C9, 0x18F7, 0x61CA, 0x61CA, 0x17AF, + 0x61CB, 0x61CB, 0x12CF, 0x61E6, 0x61E6, 0x1027, 0x61F2, 0x61F2, 0x1B7F, + 0x61F6, 0x61F6, 0x1117, 0x61F7, 0x61F7, 0x1EFE, 0x61F8, 0x61F8, 0x1E39, + 0x61FA, 0x61FA, 0x1BAF, 0x61FC, 0x61FC, 0x0F46, 0x61FF, 0x61FF, 0x18FF, + 0x6200, 0x6200, 0x1172, 0x6207, 0x6207, 0x1093, 0x6208, 0x6208, 0x0EDC, + 0x620A, 0x620A, 0x12D0, 0x620C, 0x620C, 0x1623, 0x620D, 0x620D, 0x15CB, + 0x620E, 0x620E, 0x18E1, 0x6210, 0x6210, 0x1567, 0x6211, 0x6211, 0x1695, + 0x6212, 0x6212, 0x0E80, 0x6216, 0x6216, 0x1EA2, 0x621A, 0x621A, 0x1BE2, + 0x621F, 0x621F, 0x0FB3, 0x6221, 0x6221, 0x0DBC, 0x622A, 0x622A, 0x1A1D, + 0x622E, 0x622E, 0x11F0, 0x6230, 0x6230, 0x1A01, 0x6231, 0x6231, 0x1F6D, + 0x6234, 0x6234, 0x10A2, 0x6236, 0x6236, 0x1E80, 0x623E, 0x623E, 0x115E, + 0x623F, 0x623F, 0x1354, 0x6240, 0x6240, 0x1583, 0x6241, 0x6241, 0x1D60, + 0x6247, 0x6247, 0x1530, 0x6248, 0x6248, 0x1E81, 0x6249, 0x6249, 0x1447, + 0x624B, 0x624B, 0x15CC, 0x624D, 0x624D, 0x19AE, 0x6253, 0x6253, 0x1CDA, + 0x6258, 0x6258, 0x1CE6, 0x626E, 0x626E, 0x1428, 0x6271, 0x6271, 0x0FD6, + 0x6276, 0x6276, 0x1404, 0x6279, 0x6279, 0x1448, 0x627C, 0x627C, 0x16DC, + 0x627F, 0x627F, 0x1637, 0x6280, 0x6280, 0x0FF0, 0x6284, 0x6284, 0x1C32, + 0x6289, 0x6289, 0x0E40, 0x628A, 0x628A, 0x1D35, 0x6291, 0x6291, 0x171A, + 0x6292, 0x6292, 0x1504, 0x6295, 0x6295, 0x1D2C, 0x6297, 0x6297, 0x1DFC, + 0x6298, 0x6298, 0x1A1E, 0x629B, 0x629B, 0x1D81, 0x62AB, 0x62AB, 0x1DAE, + 0x62B1, 0x62B1, 0x1D82, 0x62B5, 0x62B5, 0x19C5, 0x62B9, 0x62B9, 0x1252, + 0x62BC, 0x62BC, 0x16C6, 0x62BD, 0x62BD, 0x1C62, 0x62C2, 0x62C2, 0x1436, + 0x62C7, 0x62C7, 0x12D1, 0x62C8, 0x62C8, 0x1045, 0x62C9, 0x62C9, 0x1139, + 0x62CC, 0x62CC, 0x132D, 0x62CD, 0x62CD, 0x1318, 0x62CF, 0x62CF, 0x1028, + 0x62D0, 0x62D0, 0x0F15, 0x62D2, 0x62D2, 0x0E05, 0x62D3, 0x62D3, 0x1BE3, + 0x62D4, 0x62D4, 0x1343, 0x62D6, 0x62D6, 0x1CDB, 0x62D7, 0x62D7, 0x1804, + 0x62D8, 0x62D8, 0x0F47, 0x62D9, 0x62D9, 0x1AB3, 0x62DB, 0x62DB, 0x1C33, + 0x62DC, 0x62DC, 0x136D, 0x62EC, 0x62EC, 0x0EFD, 0x62ED, 0x62ED, 0x165C, + 0x62EE, 0x62EE, 0x1021, 0x62EF, 0x62EF, 0x1B16, 0x62F1, 0x62F1, 0x0ED2, + 0x62F3, 0x62F3, 0x0F86, 0x62F7, 0x62F7, 0x0E9A, 0x62FE, 0x62FE, 0x162E, + 0x62FF, 0x62FF, 0x1029, 0x6301, 0x6301, 0x1B24, 0x6307, 0x6307, 0x1B25, + 0x6309, 0x6309, 0x16B1, 0x6311, 0x6311, 0x10BA, 0x632B, 0x632B, 0x1ACA, + 0x632F, 0x632F, 0x1B47, 0x633A, 0x633A, 0x1A3D, 0x633B, 0x633B, 0x174B, + 0x633D, 0x633D, 0x1244, 0x633E, 0x633E, 0x1E53, 0x6349, 0x6349, 0x1B8F, + 0x634C, 0x634C, 0x1D4D, 0x634F, 0x634F, 0x102F, 0x6350, 0x6350, 0x174A, + 0x6355, 0x6355, 0x1D83, 0x6367, 0x6367, 0x13EA, 0x6368, 0x6368, 0x1491, + 0x636E, 0x636E, 0x0E06, 0x6372, 0x6372, 0x0F87, 0x6377, 0x6377, 0x1C16, + 0x637A, 0x637A, 0x1030, 0x637B, 0x637B, 0x1046, 0x637F, 0x637F, 0x1505, + 0x6383, 0x6383, 0x1584, 0x6388, 0x6388, 0x15CD, 0x6389, 0x6389, 0x10BB, + 0x638C, 0x638C, 0x1991, 0x6392, 0x6392, 0x136E, 0x6396, 0x6396, 0x16DD, + 0x6398, 0x6398, 0x0F79, 0x639B, 0x639B, 0x0F0D, 0x63A0, 0x63A0, 0x1149, + 0x63A1, 0x63A1, 0x1BCF, 0x63A2, 0x63A2, 0x1CFC, 0x63A5, 0x63A5, 0x1A2D, + 0x63A7, 0x63A7, 0x0ED3, 0x63A8, 0x63A8, 0x1C63, 0x63A9, 0x63A9, 0x1729, + 0x63AA, 0x63AA, 0x1A85, 0x63C0, 0x63C0, 0x0D9C, 0x63C4, 0x63C4, 0x18B4, + 0x63C6, 0x63C6, 0x0F9D, 0x63CF, 0x63CF, 0x12C4, 0x63D0, 0x63D0, 0x1A6E, + 0x63D6, 0x63D6, 0x18F3, 0x63DA, 0x63DA, 0x16FB, 0x63DB, 0x63DB, 0x1ED0, + 0x63E1, 0x63E1, 0x16A7, 0x63ED, 0x63ED, 0x0E2D, 0x63EE, 0x63EE, 0x1F3F, + 0x63F4, 0x63F4, 0x187A, 0x63F6, 0x63F6, 0x16EB, 0x63F7, 0x63F7, 0x14CF, + 0x640D, 0x640D, 0x15AC, 0x640F, 0x640F, 0x1319, 0x6414, 0x6414, 0x1585, + 0x6416, 0x6416, 0x1805, 0x6417, 0x6417, 0x10BC, 0x641C, 0x641C, 0x15CE, + 0x6422, 0x6422, 0x1B48, 0x642C, 0x642C, 0x132E, 0x642D, 0x642D, 0x1D01, + 0x643A, 0x643A, 0x1F46, 0x643E, 0x643E, 0x1B90, 0x6458, 0x6458, 0x19DF, + 0x6460, 0x6460, 0x1C58, 0x6469, 0x6469, 0x1230, 0x646F, 0x646F, 0x1B26, + 0x6478, 0x6479, 0x12A2, 0x647A, 0x647A, 0x1A2E, 0x6488, 0x6488, 0x11A0, + 0x6491, 0x6491, 0x1D17, 0x6492, 0x6492, 0x14C4, 0x6493, 0x6493, 0x1806, + 0x649A, 0x649A, 0x1041, 0x649E, 0x649E, 0x1094, 0x64A4, 0x64A4, 0x1C03, + 0x64A5, 0x64A5, 0x1344, 0x64AB, 0x64AB, 0x12D2, 0x64AD, 0x64AD, 0x1D36, + 0x64AE, 0x64AE, 0x1C5D, 0x64B0, 0x64B0, 0x1B96, 0x64B2, 0x64B2, 0x131A, + 0x64BB, 0x64BB, 0x1074, 0x64C1, 0x64C1, 0x17CB, 0x64C4, 0x64C4, 0x11A1, + 0x64C5, 0x64C5, 0x1BF1, 0x64C7, 0x64C7, 0x1D15, 0x64CA, 0x64CA, 0x0E2E, + 0x64CD, 0x64CD, 0x1A86, 0x64CE, 0x64CE, 0x0E5A, 0x64D2, 0x64D2, 0x0FC8, + 0x64D4, 0x64D4, 0x107C, 0x64D8, 0x64D8, 0x139F, 0x64DA, 0x64DA, 0x0E07, + 0x64E1, 0x64E1, 0x10A3, 0x64E2, 0x64E2, 0x1CE7, 0x64E5, 0x64E5, 0x1130, + 0x64E6, 0x64E6, 0x1BA7, 0x64E7, 0x64E7, 0x0E08, 0x64EC, 0x64EC, 0x1900, + 0x64F2, 0x64F2, 0x1BE4, 0x64F4, 0x64F4, 0x1EC5, 0x64FA, 0x64FA, 0x1D37, + 0x64FE, 0x64FE, 0x1807, 0x6500, 0x6500, 0x132F, 0x6504, 0x6504, 0x1D18, + 0x6518, 0x6518, 0x16FC, 0x651D, 0x651D, 0x155F, 0x6523, 0x6523, 0x1173, + 0x652A, 0x652A, 0x0F23, 0x652B, 0x652B, 0x1EC6, 0x652C, 0x652C, 0x1131, + 0x652F, 0x652F, 0x1B27, 0x6536, 0x6536, 0x15CF, 0x6537, 0x6537, 0x0E9B, + 0x6538, 0x6538, 0x18B5, 0x6539, 0x6539, 0x0DF0, 0x653B, 0x653B, 0x0ED4, + 0x653E, 0x653E, 0x1355, 0x653F, 0x653F, 0x1A3E, 0x6545, 0x6545, 0x0E9C, + 0x6548, 0x6548, 0x1F14, 0x654D, 0x654D, 0x1506, 0x654E, 0x654E, 0x0F24, + 0x654F, 0x654F, 0x130A, 0x6551, 0x6551, 0x0F48, 0x6556, 0x6556, 0x17B0, + 0x6557, 0x6557, 0x1D51, 0x655E, 0x655E, 0x1BBC, 0x6562, 0x6562, 0x0DBD, + 0x6563, 0x6563, 0x14BA, 0x6566, 0x6566, 0x10E1, 0x656C, 0x656C, 0x0E5B, + 0x656D, 0x656D, 0x16FD, 0x6572, 0x6572, 0x0E9D, 0x6574, 0x6574, 0x1A3F, + 0x6575, 0x6575, 0x19E0, 0x6577, 0x6577, 0x1405, 0x6578, 0x6578, 0x15D0, + 0x657E, 0x657E, 0x1531, 0x6582, 0x6582, 0x1184, 0x6583, 0x6583, 0x1D73, + 0x6585, 0x6585, 0x1F15, 0x6587, 0x6587, 0x12E8, 0x658C, 0x658C, 0x146A, + 0x6590, 0x6590, 0x1449, 0x6591, 0x6591, 0x1330, 0x6597, 0x6597, 0x10FD, + 0x6599, 0x6599, 0x11CB, 0x659B, 0x659B, 0x0EB8, 0x659C, 0x659C, 0x1492, + 0x659F, 0x659F, 0x1B76, 0x65A1, 0x65A1, 0x16B9, 0x65A4, 0x65A4, 0x0FBB, + 0x65A5, 0x65A5, 0x1BE5, 0x65A7, 0x65A7, 0x1406, 0x65AB, 0x65AB, 0x1970, + 0x65AC, 0x65AC, 0x1BB0, 0x65AF, 0x65AF, 0x1493, 0x65B0, 0x65B0, 0x166E, + 0x65B7, 0x65B7, 0x1067, 0x65B9, 0x65B9, 0x1356, 0x65BC, 0x65BC, 0x1710, + 0x65BD, 0x65BD, 0x1647, 0x65C1, 0x65C1, 0x1357, 0x65C5, 0x65C5, 0x115F, + 0x65CB, 0x65CB, 0x1532, 0x65CC, 0x65CC, 0x1A40, 0x65CF, 0x65CF, 0x1AAC, + 0x65D2, 0x65D2, 0x11E2, 0x65D7, 0x65D7, 0x0FF1, 0x65E0, 0x65E0, 0x12D3, + 0x65E3, 0x65E3, 0x0FF2, 0x65E5, 0x65E5, 0x1940, 0x65E6, 0x65E6, 0x1068, + 0x65E8, 0x65E8, 0x1B28, 0x65E9, 0x65E9, 0x1A87, 0x65EC, 0x65EC, 0x160C, + 0x65ED, 0x65ED, 0x1857, 0x65F1, 0x65F1, 0x1DD6, 0x65F4, 0x65F4, 0x1841, + 0x65FA, 0x65FA, 0x17EF, 0x65FB, 0x65FC, 0x130B, 0x65FD, 0x65FD, 0x10E2, + 0x65FF, 0x65FF, 0x17B1, 0x6606, 0x6606, 0x0EC1, 0x6607, 0x6607, 0x1638, + 0x6609, 0x6609, 0x1358, 0x660A, 0x660A, 0x1E82, 0x660C, 0x660C, 0x1BBD, + 0x660E, 0x660E, 0x128F, 0x660F, 0x660F, 0x1EA5, 0x6610, 0x6610, 0x1429, + 0x6611, 0x6611, 0x0FC9, 0x6613, 0x6613, 0x173E, 0x6614, 0x6614, 0x151F, + 0x6615, 0x6615, 0x1F53, 0x661E, 0x661E, 0x13B6, 0x661F, 0x661F, 0x1568, + 0x6620, 0x6620, 0x1775, 0x6625, 0x6625, 0x1C84, 0x6627, 0x6627, 0x1268, + 0x6628, 0x6628, 0x1971, 0x662D, 0x662D, 0x1586, 0x662F, 0x662F, 0x1648, + 0x6630, 0x6630, 0x1DC5, 0x6631, 0x6631, 0x1858, 0x6634, 0x6634, 0x12C5, + 0x6636, 0x6636, 0x1BBE, 0x663A, 0x663A, 0x13B7, 0x663B, 0x663B, 0x16CC, + 0x6641, 0x6641, 0x1A88, 0x6642, 0x6642, 0x1649, 0x6643, 0x6644, 0x1EE7, + 0x6649, 0x6649, 0x1B49, 0x664B, 0x664B, 0x1B4A, 0x664F, 0x664F, 0x16B2, + 0x6659, 0x6659, 0x1AFC, 0x665B, 0x665B, 0x1E3A, 0x665D, 0x665D, 0x1AD9, + 0x665E, 0x665E, 0x1F6E, 0x665F, 0x665F, 0x1569, 0x6664, 0x6664, 0x17B2, + 0x6665, 0x6665, 0x1ED2, 0x6666, 0x6666, 0x1EFF, 0x6667, 0x6667, 0x1E83, + 0x6668, 0x6668, 0x166F, 0x6669, 0x6669, 0x1245, 0x666B, 0x666B, 0x1CE8, + 0x666E, 0x666E, 0x13C6, 0x666F, 0x666F, 0x0E5C, 0x6673, 0x6673, 0x1520, + 0x6674, 0x6674, 0x1C1E, 0x6676, 0x6676, 0x1A41, 0x6677, 0x6677, 0x0F96, + 0x6678, 0x6678, 0x1A42, 0x667A, 0x667A, 0x1B29, 0x6684, 0x6684, 0x1F37, + 0x6687, 0x6687, 0x0D77, 0x6688, 0x6688, 0x1F34, 0x6689, 0x6689, 0x1F40, + 0x668E, 0x668E, 0x1776, 0x6690, 0x6690, 0x1895, 0x6691, 0x6691, 0x1507, + 0x6696, 0x6696, 0x102C, 0x6697, 0x6697, 0x16C1, 0x6698, 0x6698, 0x16FE, + 0x669D, 0x669D, 0x1290, 0x66A0, 0x66A0, 0x0E9E, 0x66A2, 0x66A2, 0x1BBF, + 0x66AB, 0x66AB, 0x1980, 0x66AE, 0x66AE, 0x12A4, 0x66B2, 0x66B2, 0x1992, + 0x66B3, 0x66B3, 0x1E73, 0x66B4, 0x66B4, 0x1D94, 0x66B9, 0x66B9, 0x1558, + 0x66BB, 0x66BB, 0x0E5D, 0x66BE, 0x66BE, 0x10E3, 0x66C4, 0x66C4, 0x176F, + 0x66C6, 0x66C6, 0x116B, 0x66C7, 0x66C7, 0x107D, 0x66C9, 0x66C9, 0x1F16, + 0x66D6, 0x66D6, 0x16D5, 0x66D9, 0x66D9, 0x1508, 0x66DC, 0x66DC, 0x1808, + 0x66DD, 0x66DD, 0x1D95, 0x66E0, 0x66E0, 0x0F04, 0x66E6, 0x66E6, 0x1F6F, + 0x66F0, 0x66F0, 0x17ED, 0x66F2, 0x66F2, 0x0EB9, 0x66F3, 0x66F3, 0x1791, + 0x66F4, 0x66F4, 0x0E5E, 0x66F7, 0x66F7, 0x0DAE, 0x66F8, 0x66F8, 0x1509, + 0x66F9, 0x66F9, 0x1A8A, 0x66FA, 0x66FA, 0x1A89, 0x66FC, 0x66FC, 0x1246, + 0x66FE, 0x66FE, 0x1B15, 0x66FF, 0x66FF, 0x1C26, 0x6700, 0x6700, 0x1C60, + 0x6703, 0x6703, 0x1F00, 0x6708, 0x6708, 0x1889, 0x6709, 0x6709, 0x18B6, + 0x670B, 0x670B, 0x1438, 0x670D, 0x670D, 0x13D8, 0x6714, 0x6714, 0x14B6, + 0x6715, 0x6715, 0x1B77, 0x6717, 0x6717, 0x113D, 0x671B, 0x671B, 0x125C, + 0x671D, 0x671D, 0x1A8B, 0x671E, 0x671F, 0x0FF3, 0x6726, 0x6726, 0x12BE, + 0x6727, 0x6727, 0x11BA, 0x6728, 0x6728, 0x12B4, 0x672A, 0x672A, 0x12F9, + 0x672B, 0x672B, 0x1253, 0x672C, 0x672C, 0x13E3, 0x672D, 0x672D, 0x1BA8, + 0x672E, 0x672E, 0x1C88, 0x6731, 0x6731, 0x1ADA, 0x6734, 0x6734, 0x131B, + 0x6736, 0x6736, 0x1CDC, 0x673A, 0x673A, 0x0F90, 0x673D, 0x673D, 0x1F27, + 0x6746, 0x6746, 0x0D9D, 0x6749, 0x6749, 0x14C9, 0x674E, 0x674E, 0x120C, + 0x674F, 0x674F, 0x1E1B, 0x6750, 0x6750, 0x19AF, 0x6751, 0x6751, 0x1C51, + 0x6753, 0x6753, 0x1D9C, 0x6756, 0x6756, 0x1993, 0x675C, 0x675C, 0x10FE, + 0x675E, 0x675E, 0x0FF5, 0x675F, 0x675F, 0x15A3, 0x676D, 0x676D, 0x1DFD, + 0x676F, 0x676F, 0x136F, 0x6770, 0x6770, 0x0E1F, 0x6771, 0x6771, 0x10F1, + 0x6773, 0x6773, 0x12C6, 0x6775, 0x6775, 0x19C6, 0x6777, 0x6777, 0x1D38, + 0x677B, 0x677B, 0x1057, 0x677E, 0x677E, 0x15B3, 0x677F, 0x677F, 0x1D44, + 0x6787, 0x6787, 0x144A, 0x6789, 0x6789, 0x17F0, 0x678B, 0x678B, 0x1359, + 0x678F, 0x678F, 0x1032, 0x6790, 0x6790, 0x1521, 0x6793, 0x6793, 0x10FF, + 0x6795, 0x6795, 0x1CC9, 0x6797, 0x6797, 0x1227, 0x679A, 0x679A, 0x1269, + 0x679C, 0x679C, 0x0EDD, 0x679D, 0x679D, 0x1B2A, 0x67AF, 0x67AF, 0x0E9F, + 0x67B0, 0x67B0, 0x1D6B, 0x67B3, 0x67B3, 0x1B2B, 0x67B6, 0x67B7, 0x0D78, + 0x67B8, 0x67B8, 0x0F49, 0x67BE, 0x67BE, 0x164A, 0x67C4, 0x67C4, 0x13B8, + 0x67CF, 0x67CF, 0x137F, 0x67D0, 0x67D0, 0x12A5, 0x67D1, 0x67D1, 0x0DBE, + 0x67D2, 0x67D2, 0x1CC5, 0x67D3, 0x67D3, 0x1766, 0x67D4, 0x67D4, 0x18B7, + 0x67DA, 0x67DA, 0x18B8, 0x67DD, 0x67DD, 0x1CE9, 0x67E9, 0x67E9, 0x0F4A, + 0x67EC, 0x67EC, 0x0D9E, 0x67EF, 0x67EF, 0x0D7A, 0x67F0, 0x67F0, 0x103D, + 0x67F1, 0x67F1, 0x1ADB, 0x67F3, 0x67F3, 0x11E3, 0x67F4, 0x67F4, 0x164B, + 0x67F5, 0x67F5, 0x1BD7, 0x67F6, 0x67F6, 0x1494, 0x67FB, 0x67FB, 0x1495, + 0x67FE, 0x67FE, 0x1A43, 0x6812, 0x6812, 0x160D, 0x6813, 0x6813, 0x1A02, + 0x6816, 0x6816, 0x150A, 0x6817, 0x6817, 0x11FA, 0x6821, 0x6821, 0x0F25, + 0x6822, 0x6822, 0x1380, 0x682A, 0x682A, 0x1ADC, 0x682F, 0x682F, 0x1859, + 0x6838, 0x6838, 0x1E18, 0x6839, 0x6839, 0x0FBC, 0x683C, 0x683C, 0x0E2F, + 0x683D, 0x683D, 0x19B0, 0x6840, 0x6840, 0x0E20, 0x6841, 0x6841, 0x1DFE, + 0x6842, 0x6842, 0x0E81, 0x6843, 0x6843, 0x10BD, 0x6848, 0x6848, 0x16B3, + 0x684E, 0x684E, 0x1B6C, 0x6850, 0x6850, 0x10F2, 0x6851, 0x6851, 0x14E2, + 0x6853, 0x6853, 0x1ED3, 0x6854, 0x6854, 0x1022, 0x686D, 0x686D, 0x1B4B, + 0x6876, 0x6876, 0x1D1E, 0x687F, 0x687F, 0x0D9F, 0x6881, 0x6881, 0x114F, + 0x6885, 0x6885, 0x126A, 0x688F, 0x688F, 0x0EBA, 0x6893, 0x6893, 0x19B1, + 0x6894, 0x6894, 0x1CAE, 0x6897, 0x6897, 0x0E5F, 0x689D, 0x689D, 0x1A8C, + 0x689F, 0x689F, 0x1F17, 0x68A1, 0x68A1, 0x17DE, 0x68A2, 0x68A2, 0x1C34, + 0x68A7, 0x68A7, 0x17B3, 0x68A8, 0x68A8, 0x120D, 0x68AD, 0x68AD, 0x1496, + 0x68AF, 0x68AF, 0x1A6F, 0x68B0, 0x68B0, 0x0E82, 0x68B1, 0x68B1, 0x0EC2, + 0x68B3, 0x68B3, 0x1587, 0x68B5, 0x68B5, 0x1393, 0x68B6, 0x68B6, 0x12FA, + 0x68C4, 0x68C4, 0x0FF7, 0x68C5, 0x68C5, 0x13B9, 0x68C9, 0x68C9, 0x1282, + 0x68CB, 0x68CB, 0x0FF6, 0x68CD, 0x68CD, 0x0EC3, 0x68D2, 0x68D2, 0x13EB, + 0x68D5, 0x68D5, 0x1ABA, 0x68D7, 0x68D7, 0x1A8D, 0x68D8, 0x68D8, 0x0FB4, + 0x68DA, 0x68DA, 0x1439, 0x68DF, 0x68DF, 0x10F3, 0x68E0, 0x68E0, 0x1095, + 0x68E7, 0x68E7, 0x197B, 0x68E8, 0x68E8, 0x0E83, 0x68EE, 0x68EE, 0x14CA, + 0x68F2, 0x68F2, 0x150B, 0x68F9, 0x68F9, 0x10BE, 0x68FA, 0x68FA, 0x0EEF, + 0x6900, 0x6900, 0x17DF, 0x6905, 0x6905, 0x1901, 0x690D, 0x690D, 0x165D, + 0x690E, 0x690E, 0x1C64, 0x6912, 0x6912, 0x1C35, 0x6927, 0x6927, 0x1291, + 0x6930, 0x6930, 0x16EC, 0x693D, 0x693D, 0x174C, 0x693F, 0x693F, 0x1C85, + 0x694A, 0x694A, 0x16FF, 0x6953, 0x6953, 0x1DA8, 0x6954, 0x6954, 0x154C, + 0x6955, 0x6955, 0x1CDD, 0x6957, 0x6957, 0x0E17, 0x6959, 0x6959, 0x12D4, + 0x695A, 0x695A, 0x1C36, 0x695E, 0x695E, 0x1200, 0x6960, 0x6960, 0x1033, + 0x6961, 0x6962, 0x18B9, 0x6963, 0x6963, 0x12FB, 0x6968, 0x6968, 0x1A44, + 0x696B, 0x696B, 0x1B10, 0x696D, 0x696D, 0x172C, 0x696E, 0x696E, 0x19C7, + 0x696F, 0x696F, 0x160E, 0x6975, 0x6975, 0x0FB5, 0x6977, 0x6977, 0x1E0D, + 0x6978, 0x6978, 0x1C65, 0x6979, 0x6979, 0x1777, 0x6995, 0x6995, 0x1827, + 0x699B, 0x699B, 0x1B4C, 0x699C, 0x699C, 0x135A, 0x69A5, 0x69A5, 0x1EE9, + 0x69A7, 0x69A7, 0x144B, 0x69AE, 0x69AE, 0x1778, 0x69B4, 0x69B4, 0x11E4, + 0x69BB, 0x69BB, 0x1D02, 0x69C1, 0x69C1, 0x0EA0, 0x69C3, 0x69C3, 0x1331, + 0x69CB, 0x69CB, 0x0F4B, 0x69CC, 0x69CC, 0x1D24, 0x69CD, 0x69CD, 0x1BC0, + 0x69D0, 0x69D0, 0x0F16, 0x69E8, 0x69E8, 0x0EE8, 0x69EA, 0x69EA, 0x0DF1, + 0x69FB, 0x69FB, 0x0F9E, 0x69FD, 0x69FD, 0x1A8E, 0x69FF, 0x69FF, 0x0FBD, + 0x6A02, 0x6A02, 0x16A8, 0x6A0A, 0x6A0A, 0x1385, 0x6A11, 0x6A11, 0x1150, + 0x6A13, 0x6A13, 0x11D7, 0x6A17, 0x6A17, 0x19C8, 0x6A19, 0x6A19, 0x1D9D, + 0x6A1E, 0x6A1E, 0x1C66, 0x6A1F, 0x6A1F, 0x1994, 0x6A21, 0x6A21, 0x12A6, + 0x6A23, 0x6A23, 0x1700, 0x6A35, 0x6A35, 0x1C37, 0x6A38, 0x6A38, 0x131C, + 0x6A39, 0x6A39, 0x15D1, 0x6A3A, 0x6A3A, 0x1EBA, 0x6A3D, 0x6A3D, 0x1AFD, + 0x6A44, 0x6A44, 0x0DBF, 0x6A48, 0x6A48, 0x1809, 0x6A4B, 0x6A4B, 0x0F26, + 0x6A52, 0x6A52, 0x185F, 0x6A53, 0x6A53, 0x160F, 0x6A58, 0x6A58, 0x0FAF, + 0x6A59, 0x6A59, 0x110E, 0x6A5F, 0x6A5F, 0x0FF8, 0x6A61, 0x6A61, 0x14E3, + 0x6A6B, 0x6A6B, 0x1F0F, 0x6A80, 0x6A80, 0x1069, 0x6A84, 0x6A84, 0x0E30, + 0x6A89, 0x6A89, 0x1A45, 0x6A8D, 0x6A8D, 0x171B, 0x6A8E, 0x6A8E, 0x0FCA, + 0x6A97, 0x6A97, 0x13A0, 0x6A9C, 0x6A9C, 0x1F01, 0x6AA2, 0x6AA2, 0x0E24, + 0x6AA3, 0x6AA3, 0x1995, 0x6AB3, 0x6AB3, 0x146B, 0x6ABB, 0x6ABB, 0x1DE8, + 0x6AC2, 0x6AC2, 0x10BF, 0x6AC3, 0x6AC3, 0x0F91, 0x6AD3, 0x6AD3, 0x11A2, + 0x6ADA, 0x6ADA, 0x1160, 0x6ADB, 0x6ADB, 0x1B0F, 0x6AF6, 0x6AF6, 0x1E2C, + 0x6AFB, 0x6AFB, 0x16E2, 0x6B04, 0x6B04, 0x1127, 0x6B0A, 0x6B0A, 0x0F88, + 0x6B0C, 0x6B0C, 0x1996, 0x6B12, 0x6B12, 0x1128, 0x6B16, 0x6B16, 0x1132, + 0x6B20, 0x6B20, 0x1F5B, 0x6B21, 0x6B21, 0x1B88, 0x6B23, 0x6B23, 0x1F54, + 0x6B32, 0x6B32, 0x1819, 0x6B3A, 0x6B3A, 0x0FF9, 0x6B3D, 0x6B3D, 0x1F5C, + 0x6B3E, 0x6B3E, 0x0EF0, 0x6B46, 0x6B46, 0x1F5D, 0x6B47, 0x6B47, 0x1E2F, + 0x6B4C, 0x6B4C, 0x0D7B, 0x6B4E, 0x6B4E, 0x1CF5, 0x6B50, 0x6B50, 0x0F4C, + 0x6B5F, 0x6B5F, 0x1731, 0x6B61, 0x6B61, 0x1ED1, 0x6B62, 0x6B62, 0x1B2C, + 0x6B63, 0x6B63, 0x1A46, 0x6B64, 0x6B64, 0x1B89, 0x6B65, 0x6B65, 0x13C7, + 0x6B66, 0x6B66, 0x12D5, 0x6B6A, 0x6B6A, 0x17F5, 0x6B72, 0x6B72, 0x1576, + 0x6B77, 0x6B77, 0x116C, 0x6B78, 0x6B78, 0x0F97, 0x6B7B, 0x6B7B, 0x1497, + 0x6B7F, 0x6B7F, 0x12BB, 0x6B83, 0x6B83, 0x16CD, 0x6B84, 0x6B84, 0x1B4D, + 0x6B86, 0x6B86, 0x1D0C, 0x6B89, 0x6B89, 0x1610, 0x6B8A, 0x6B8A, 0x15D2, + 0x6B96, 0x6B96, 0x165E, 0x6B98, 0x6B98, 0x197C, 0x6B9E, 0x6B9E, 0x1860, + 0x6BAE, 0x6BAE, 0x1185, 0x6BAF, 0x6BAF, 0x146C, 0x6BB2, 0x6BB2, 0x1559, + 0x6BB5, 0x6BB5, 0x106A, 0x6BB7, 0x6BB7, 0x18E8, 0x6BBA, 0x6BBA, 0x14C5, + 0x6BBC, 0x6BBC, 0x0D8E, 0x6BBF, 0x6BBF, 0x1A03, 0x6BC1, 0x6BC1, 0x1F3C, + 0x6BC5, 0x6BC5, 0x1902, 0x6BC6, 0x6BC6, 0x0F4D, 0x6BCB, 0x6BCB, 0x12D6, + 0x6BCD, 0x6BCD, 0x12A7, 0x6BCF, 0x6BCF, 0x126B, 0x6BD2, 0x6BD2, 0x10D5, + 0x6BD3, 0x6BD3, 0x18D4, 0x6BD4, 0x6BD4, 0x144C, 0x6BD6, 0x6BD8, 0x144D, + 0x6BDB, 0x6BDB, 0x12A8, 0x6BEB, 0x6BEB, 0x1E84, 0x6BEC, 0x6BEC, 0x0F4E, + 0x6C08, 0x6C08, 0x1A04, 0x6C0F, 0x6C0F, 0x168E, 0x6C11, 0x6C11, 0x130D, + 0x6C13, 0x6C13, 0x1278, 0x6C23, 0x6C23, 0x0FFA, 0x6C34, 0x6C34, 0x15D3, + 0x6C37, 0x6C37, 0x1476, 0x6C38, 0x6C38, 0x1779, 0x6C3E, 0x6C3E, 0x1394, + 0x6C40, 0x6C40, 0x1A47, 0x6C41, 0x6C41, 0x1B11, 0x6C42, 0x6C42, 0x0F4F, + 0x6C4E, 0x6C4E, 0x1395, 0x6C50, 0x6C50, 0x1522, 0x6C55, 0x6C55, 0x14BB, + 0x6C57, 0x6C57, 0x1DD7, 0x6C5A, 0x6C5A, 0x17B4, 0x6C5D, 0x6C5D, 0x1732, + 0x6C5E, 0x6C5E, 0x1EAF, 0x6C5F, 0x6C5F, 0x0DD9, 0x6C60, 0x6C60, 0x1B2D, + 0x6C68, 0x6C68, 0x0EC8, 0x6C6A, 0x6C6A, 0x17F1, 0x6C6D, 0x6C6D, 0x1792, + 0x6C70, 0x6C70, 0x1D0D, 0x6C72, 0x6C72, 0x0FD7, 0x6C76, 0x6C76, 0x12E9, + 0x6C7A, 0x6C7A, 0x0E41, 0x6C7D, 0x6C7D, 0x0FFB, 0x6C7E, 0x6C7E, 0x142A, + 0x6C81, 0x6C81, 0x1685, 0x6C82, 0x6C82, 0x0FFC, 0x6C83, 0x6C83, 0x17BF, + 0x6C85, 0x6C85, 0x187B, 0x6C86, 0x6C86, 0x1DFF, 0x6C87, 0x6C87, 0x174D, + 0x6C88, 0x6C88, 0x1CCA, 0x6C8C, 0x6C8C, 0x10E4, 0x6C90, 0x6C90, 0x12B5, + 0x6C92, 0x6C92, 0x12BC, 0x6C93, 0x6C93, 0x108A, 0x6C94, 0x6C94, 0x1283, + 0x6C95, 0x6C95, 0x12F1, 0x6C96, 0x6C96, 0x1C8C, 0x6C99, 0x6C99, 0x1498, + 0x6C9A, 0x6C9A, 0x1B2E, 0x6C9B, 0x6C9B, 0x1D52, 0x6CAB, 0x6CAB, 0x1254, + 0x6CAE, 0x6CAE, 0x19C9, 0x6CB3, 0x6CB3, 0x1DC6, 0x6CB8, 0x6CB8, 0x1450, + 0x6CB9, 0x6CB9, 0x18BB, 0x6CBB, 0x6CBB, 0x1CAF, 0x6CBC, 0x6CBC, 0x1588, + 0x6CBD, 0x6CBD, 0x0EA1, 0x6CBE, 0x6CBE, 0x1C0B, 0x6CBF, 0x6CBF, 0x174E, + 0x6CC1, 0x6CC1, 0x1EEA, 0x6CC2, 0x6CC2, 0x1E60, 0x6CC4, 0x6CC4, 0x154D, + 0x6CC9, 0x6CC9, 0x1BF2, 0x6CCA, 0x6CCA, 0x131D, 0x6CCC, 0x6CCC, 0x1DB7, + 0x6CD3, 0x6CD3, 0x1EB0, 0x6CD5, 0x6CD5, 0x139A, 0x6CD7, 0x6CD7, 0x1499, + 0x6CDB, 0x6CDB, 0x1396, 0x6CE1, 0x6CE1, 0x1D84, 0x6CE2, 0x6CE2, 0x1D39, + 0x6CE3, 0x6CE3, 0x18F4, 0x6CE5, 0x6CE5, 0x105B, 0x6CE8, 0x6CE8, 0x1ADD, + 0x6CEB, 0x6CEB, 0x1E3B, 0x6CEE, 0x6CEE, 0x1332, 0x6CEF, 0x6CEF, 0x130E, + 0x6CF0, 0x6CF0, 0x1D0E, 0x6CF3, 0x6CF3, 0x177A, 0x6D0B, 0x6D0B, 0x1701, + 0x6D0C, 0x6D0C, 0x1180, 0x6D11, 0x6D11, 0x13C8, 0x6D17, 0x6D17, 0x1577, + 0x6D19, 0x6D19, 0x15D4, 0x6D1B, 0x6D1B, 0x111E, 0x6D1E, 0x6D1E, 0x10F4, + 0x6D25, 0x6D25, 0x1B4E, 0x6D27, 0x6D27, 0x18BC, 0x6D29, 0x6D29, 0x154E, + 0x6D2A, 0x6D2A, 0x1EB1, 0x6D32, 0x6D32, 0x1ADE, 0x6D35, 0x6D35, 0x1611, + 0x6D36, 0x6D36, 0x1F50, 0x6D38, 0x6D38, 0x0F05, 0x6D39, 0x6D39, 0x187C, + 0x6D3B, 0x6D3B, 0x1EDB, 0x6D3D, 0x6D3D, 0x1F60, 0x6D3E, 0x6D3E, 0x1D3A, + 0x6D41, 0x6D41, 0x11E5, 0x6D59, 0x6D59, 0x1A1F, 0x6D5A, 0x6D5A, 0x1AFE, + 0x6D5C, 0x6D5C, 0x146D, 0x6D63, 0x6D63, 0x17E0, 0x6D66, 0x6D66, 0x1D85, + 0x6D69, 0x6D69, 0x1E85, 0x6D6A, 0x6D6A, 0x113E, 0x6D6C, 0x6D6C, 0x120E, + 0x6D6E, 0x6D6E, 0x1407, 0x6D74, 0x6D74, 0x181A, 0x6D77, 0x6D77, 0x1E0E, + 0x6D78, 0x6D78, 0x1CCB, 0x6D79, 0x6D79, 0x1E54, 0x6D7F, 0x6D7F, 0x1D53, + 0x6D85, 0x6D85, 0x1762, 0x6D87, 0x6D87, 0x0E60, 0x6D88, 0x6D88, 0x1589, + 0x6D89, 0x6D89, 0x1560, 0x6D8C, 0x6D8C, 0x1828, 0x6D8D, 0x6D8D, 0x1F18, + 0x6D8E, 0x6D8E, 0x174F, 0x6D91, 0x6D91, 0x15A4, 0x6D93, 0x6D93, 0x1750, + 0x6D95, 0x6D95, 0x1C27, 0x6DAF, 0x6DAF, 0x16D6, 0x6DB2, 0x6DB2, 0x16DE, + 0x6DB5, 0x6DB5, 0x1DE9, 0x6DC0, 0x6DC0, 0x1A48, 0x6DC3, 0x6DC3, 0x0F89, + 0x6DC4, 0x6DC4, 0x1CB0, 0x6DC5, 0x6DC5, 0x1523, 0x6DC6, 0x6DC6, 0x1F19, + 0x6DC7, 0x6DC7, 0x0FFD, 0x6DCB, 0x6DCB, 0x1228, 0x6DCF, 0x6DCF, 0x1E86, + 0x6DD1, 0x6DD1, 0x1601, 0x6DD8, 0x6DD8, 0x10C0, 0x6DD9, 0x6DD9, 0x1ABB, + 0x6DDA, 0x6DDA, 0x11D8, 0x6DDE, 0x6DDE, 0x15B4, 0x6DE1, 0x6DE1, 0x107E, + 0x6DE8, 0x6DE8, 0x1A49, 0x6DEA, 0x6DEA, 0x11F5, 0x6DEB, 0x6DEB, 0x18EE, + 0x6DEE, 0x6DEE, 0x1F02, 0x6DF1, 0x6DF1, 0x1686, 0x6DF3, 0x6DF3, 0x1612, + 0x6DF5, 0x6DF5, 0x1751, 0x6DF7, 0x6DF7, 0x1EA6, 0x6DF8, 0x6DF8, 0x1C1F, + 0x6DF9, 0x6DF9, 0x172A, 0x6DFA, 0x6DFA, 0x1BF3, 0x6DFB, 0x6DFB, 0x1C0C, + 0x6E17, 0x6E17, 0x14CB, 0x6E19, 0x6E19, 0x1ED4, 0x6E1A, 0x6E1A, 0x19CA, + 0x6E1B, 0x6E1B, 0x0DC0, 0x6E1F, 0x6E1F, 0x1A4A, 0x6E20, 0x6E20, 0x0E09, + 0x6E21, 0x6E21, 0x10C1, 0x6E23, 0x6E23, 0x149A, 0x6E24, 0x6E24, 0x1345, + 0x6E25, 0x6E25, 0x16A9, 0x6E26, 0x6E26, 0x17D3, 0x6E2B, 0x6E2B, 0x154F, + 0x6E2C, 0x6E2C, 0x1CA6, 0x6E2D, 0x6E2D, 0x1896, 0x6E2F, 0x6E2F, 0x1E00, + 0x6E32, 0x6E32, 0x1533, 0x6E34, 0x6E34, 0x0DAF, 0x6E36, 0x6E36, 0x177B, + 0x6E38, 0x6E38, 0x18BD, 0x6E3A, 0x6E3A, 0x12C7, 0x6E3C, 0x6E3C, 0x12FC, + 0x6E3D, 0x6E3D, 0x19B2, 0x6E3E, 0x6E3E, 0x1EA7, 0x6E43, 0x6E43, 0x1370, + 0x6E44, 0x6E44, 0x12FD, 0x6E4A, 0x6E4A, 0x1ADF, 0x6E4D, 0x6E4D, 0x106B, + 0x6E56, 0x6E56, 0x1E87, 0x6E58, 0x6E58, 0x14E4, 0x6E5B, 0x6E5B, 0x107F, + 0x6E5C, 0x6E5C, 0x165F, 0x6E5E, 0x6E5E, 0x1A4B, 0x6E5F, 0x6E5F, 0x1EEB, + 0x6E67, 0x6E67, 0x1829, 0x6E6B, 0x6E6B, 0x1C67, 0x6E6E, 0x6E6E, 0x1935, + 0x6E6F, 0x6E6F, 0x1D05, 0x6E72, 0x6E72, 0x187D, 0x6E73, 0x6E73, 0x1034, + 0x6E7A, 0x6E7A, 0x13C9, 0x6E90, 0x6E90, 0x187E, 0x6E96, 0x6E96, 0x1AFF, + 0x6E9C, 0x6E9C, 0x11E6, 0x6E9D, 0x6E9D, 0x0F50, 0x6E9F, 0x6E9F, 0x1292, + 0x6EA2, 0x6EA2, 0x1941, 0x6EA5, 0x6EA5, 0x1408, 0x6EAA, 0x6EAA, 0x0E84, + 0x6EAB, 0x6EAB, 0x17C3, 0x6EAF, 0x6EAF, 0x158A, 0x6EB1, 0x6EB1, 0x1B4F, + 0x6EB6, 0x6EB6, 0x182A, 0x6EBA, 0x6EBA, 0x105D, 0x6EC2, 0x6EC2, 0x135B, + 0x6EC4, 0x6EC4, 0x1BC1, 0x6EC5, 0x6EC5, 0x128A, 0x6EC9, 0x6EC9, 0x1EEC, + 0x6ECB, 0x6ECB, 0x195D, 0x6ECC, 0x6ECC, 0x1BE6, 0x6ECE, 0x6ECE, 0x1E61, + 0x6ED1, 0x6ED1, 0x1EDC, 0x6ED3, 0x6ED3, 0x19B3, 0x6ED4, 0x6ED4, 0x10C2, + 0x6EEF, 0x6EEF, 0x1C28, 0x6EF4, 0x6EF4, 0x19E1, 0x6EF8, 0x6EF8, 0x1E88, + 0x6EFE, 0x6EFE, 0x0EC4, 0x6EFF, 0x6EFF, 0x1247, 0x6F01, 0x6F01, 0x1711, + 0x6F02, 0x6F02, 0x1D9E, 0x6F06, 0x6F06, 0x1CC6, 0x6F0F, 0x6F0F, 0x11D9, + 0x6F11, 0x6F11, 0x0DF2, 0x6F14, 0x6F14, 0x1752, 0x6F15, 0x6F15, 0x1A8F, + 0x6F20, 0x6F20, 0x123A, 0x6F22, 0x6F22, 0x1DD8, 0x6F23, 0x6F23, 0x1174, + 0x6F2B, 0x6F2B, 0x1248, 0x6F2C, 0x6F2C, 0x1B2F, 0x6F31, 0x6F31, 0x15D5, + 0x6F32, 0x6F32, 0x1BC2, 0x6F38, 0x6F38, 0x1A27, 0x6F3F, 0x6F3F, 0x1997, + 0x6F41, 0x6F41, 0x177C, 0x6F51, 0x6F51, 0x1346, 0x6F54, 0x6F54, 0x0E42, + 0x6F57, 0x6F57, 0x1B79, 0x6F58, 0x6F58, 0x1333, 0x6F5A, 0x6F5A, 0x1602, + 0x6F5B, 0x6F5B, 0x1981, 0x6F5E, 0x6F5E, 0x11A3, 0x6F5F, 0x6F5F, 0x1524, + 0x6F62, 0x6F62, 0x1EED, 0x6F64, 0x6F64, 0x18DA, 0x6F6D, 0x6F6D, 0x1080, + 0x6F6E, 0x6F6E, 0x1A90, 0x6F70, 0x6F70, 0x0F92, 0x6F7A, 0x6F7A, 0x197D, + 0x6F7C, 0x6F7C, 0x10F5, 0x6F7D, 0x6F7D, 0x13CA, 0x6F7E, 0x6F7E, 0x121F, + 0x6F81, 0x6F81, 0x14D0, 0x6F84, 0x6F84, 0x1B80, 0x6F88, 0x6F88, 0x1C04, + 0x6F8D, 0x6F8D, 0x1AE0, 0x6F8E, 0x6F8E, 0x1D5A, 0x6F90, 0x6F90, 0x1861, + 0x6F94, 0x6F94, 0x1E89, 0x6F97, 0x6F97, 0x0DA0, 0x6FA3, 0x6FA3, 0x1DD9, + 0x6FA4, 0x6FA4, 0x1D16, 0x6FA7, 0x6FA7, 0x119B, 0x6FAE, 0x6FAE, 0x1F03, + 0x6FAF, 0x6FAF, 0x1B97, 0x6FB1, 0x6FB1, 0x1A05, 0x6FB3, 0x6FB3, 0x17B5, + 0x6FB9, 0x6FB9, 0x1081, 0x6FBE, 0x6FBE, 0x1075, 0x6FC0, 0x6FC0, 0x0E31, + 0x6FC1, 0x6FC1, 0x1CEA, 0x6FC2, 0x6FC2, 0x1186, 0x6FC3, 0x6FC3, 0x104F, + 0x6FCA, 0x6FCA, 0x1793, 0x6FD5, 0x6FD5, 0x162D, 0x6FDA, 0x6FDA, 0x177D, + 0x6FDF, 0x6FDF, 0x1A70, 0x6FE0, 0x6FE0, 0x1E8A, 0x6FE1, 0x6FE1, 0x18BE, + 0x6FE4, 0x6FE4, 0x10C3, 0x6FE9, 0x6FE9, 0x1E8B, 0x6FEB, 0x6FEB, 0x1133, + 0x6FEC, 0x6FEC, 0x1B00, 0x6FEF, 0x6FEF, 0x1CEB, 0x6FF1, 0x6FF1, 0x146E, + 0x6FFE, 0x6FFE, 0x1161, 0x7001, 0x7001, 0x1702, 0x7005, 0x7005, 0x1E62, + 0x7006, 0x7006, 0x10D6, 0x7009, 0x7009, 0x149B, 0x700B, 0x700B, 0x1687, + 0x700F, 0x700F, 0x11E7, 0x7011, 0x7011, 0x1D96, 0x7015, 0x7015, 0x146F, + 0x7018, 0x7018, 0x11A4, 0x701A, 0x701A, 0x1DDA, 0x701B, 0x701B, 0x177E, + 0x701C, 0x701C, 0x18E2, 0x701D, 0x701D, 0x116D, 0x701E, 0x701E, 0x1A4C, + 0x701F, 0x701F, 0x158B, 0x7023, 0x7023, 0x1E0F, 0x7027, 0x7027, 0x11BB, + 0x7028, 0x7028, 0x11C0, 0x702F, 0x702F, 0x177F, 0x7037, 0x7037, 0x1925, + 0x703E, 0x703E, 0x1129, 0x704C, 0x704C, 0x0EF1, 0x7050, 0x7050, 0x1E63, + 0x7051, 0x7051, 0x15BA, 0x7058, 0x7058, 0x1CF6, 0x705D, 0x705D, 0x1E8C, + 0x7063, 0x7063, 0x1249, 0x706B, 0x706B, 0x1EBB, 0x7070, 0x7070, 0x1F04, + 0x7078, 0x7078, 0x0F51, 0x707C, 0x707C, 0x1972, 0x707D, 0x707D, 0x19B4, + 0x7085, 0x7085, 0x0E61, 0x708A, 0x708A, 0x1C99, 0x708E, 0x708E, 0x1767, + 0x7092, 0x7092, 0x1C38, 0x7098, 0x7098, 0x1F55, 0x7099, 0x7099, 0x195E, + 0x709A, 0x709A, 0x0F06, 0x70A1, 0x70A1, 0x1A4D, 0x70A4, 0x70A4, 0x158C, + 0x70AB, 0x70AB, 0x1E3C, 0x70AC, 0x70AC, 0x0E0A, 0x70AD, 0x70AD, 0x1CF7, + 0x70AF, 0x70AF, 0x1E64, 0x70B3, 0x70B3, 0x13BA, 0x70B7, 0x70B7, 0x1AE1, + 0x70B8, 0x70B8, 0x1973, 0x70B9, 0x70B9, 0x1A28, 0x70C8, 0x70C8, 0x1181, + 0x70CB, 0x70CB, 0x1F47, 0x70CF, 0x70CF, 0x17B6, 0x70D8, 0x70D8, 0x1EB2, + 0x70D9, 0x70D9, 0x111F, 0x70DD, 0x70DD, 0x1B17, 0x70DF, 0x70DF, 0x1753, + 0x70F1, 0x70F1, 0x0E62, 0x70F9, 0x70F9, 0x1D5B, 0x70FD, 0x70FD, 0x13EC, + 0x7104, 0x7104, 0x1F2F, 0x7109, 0x7109, 0x1720, 0x710C, 0x710C, 0x1B01, + 0x7119, 0x7119, 0x1371, 0x711A, 0x711A, 0x142B, 0x711E, 0x711E, 0x10E5, + 0x7121, 0x7121, 0x12D7, 0x7126, 0x7126, 0x1C39, 0x7130, 0x7130, 0x1768, + 0x7136, 0x7136, 0x1754, 0x7147, 0x7147, 0x1F41, 0x7149, 0x7149, 0x1175, + 0x714A, 0x714A, 0x1F38, 0x714C, 0x714C, 0x1EEE, 0x714E, 0x714E, 0x1A06, + 0x7150, 0x7150, 0x1780, 0x7156, 0x7156, 0x102D, 0x7159, 0x7159, 0x1755, + 0x715C, 0x715C, 0x185A, 0x715E, 0x715E, 0x14C6, 0x7164, 0x7164, 0x126C, + 0x7165, 0x7165, 0x1ED5, 0x7166, 0x7166, 0x1F28, 0x7167, 0x7167, 0x1A91, + 0x7169, 0x7169, 0x1386, 0x716C, 0x716C, 0x1703, 0x716E, 0x716E, 0x195F, + 0x717D, 0x717D, 0x1534, 0x7184, 0x7184, 0x1660, 0x7189, 0x7189, 0x1862, + 0x718A, 0x718A, 0x186D, 0x718F, 0x718F, 0x1F30, 0x7192, 0x7192, 0x1E65, + 0x7194, 0x7194, 0x182B, 0x7199, 0x7199, 0x1F70, 0x719F, 0x719F, 0x1603, + 0x71A2, 0x71A2, 0x13ED, 0x71AC, 0x71AC, 0x17B7, 0x71B1, 0x71B1, 0x1763, + 0x71B9, 0x71BA, 0x1F71, 0x71BE, 0x71BE, 0x1CB1, 0x71C1, 0x71C1, 0x1770, + 0x71C3, 0x71C3, 0x1756, 0x71C8, 0x71C8, 0x110F, 0x71C9, 0x71C9, 0x10E6, + 0x71CE, 0x71CE, 0x11CC, 0x71D0, 0x71D0, 0x1220, 0x71D2, 0x71D2, 0x158D, + 0x71D4, 0x71D4, 0x1387, 0x71D5, 0x71D5, 0x1757, 0x71DF, 0x71DF, 0x1781, + 0x71E5, 0x71E5, 0x1A92, 0x71E6, 0x71E6, 0x1B98, 0x71E7, 0x71E7, 0x15D6, + 0x71ED, 0x71ED, 0x1C4B, 0x71EE, 0x71EE, 0x1561, 0x71FB, 0x71FB, 0x1F31, + 0x71FC, 0x71FC, 0x1670, 0x71FE, 0x71FE, 0x10C4, 0x71FF, 0x71FF, 0x180A, + 0x7200, 0x7200, 0x1E33, 0x7206, 0x7206, 0x1D97, 0x7210, 0x7210, 0x11A5, + 0x721B, 0x721B, 0x112A, 0x722A, 0x722A, 0x1A93, 0x722C, 0x722C, 0x1D3B, + 0x722D, 0x722D, 0x19BB, 0x7230, 0x7230, 0x187F, 0x7232, 0x7232, 0x1897, + 0x7235, 0x7235, 0x1974, 0x7236, 0x7236, 0x1409, 0x723A, 0x723A, 0x16ED, + 0x723B, 0x723B, 0x1F1A, 0x723D, 0x723D, 0x14E5, 0x723E, 0x723E, 0x1916, + 0x7240, 0x7240, 0x14E6, 0x7246, 0x7246, 0x1998, 0x7247, 0x7247, 0x1D61, + 0x7248, 0x7248, 0x1D45, 0x724C, 0x724C, 0x1D54, 0x7252, 0x7252, 0x1C17, + 0x7258, 0x7258, 0x10D7, 0x7259, 0x7259, 0x1696, 0x725B, 0x725B, 0x1842, + 0x725D, 0x725D, 0x1470, 0x725F, 0x725F, 0x12A9, 0x7261, 0x7261, 0x12AA, + 0x7262, 0x7262, 0x11C1, 0x7267, 0x7267, 0x12B6, 0x7269, 0x7269, 0x12F2, + 0x7272, 0x7272, 0x14F9, 0x7279, 0x7279, 0x1D30, 0x727D, 0x727D, 0x0E36, + 0x7280, 0x7280, 0x150C, 0x7281, 0x7281, 0x120F, 0x72A2, 0x72A2, 0x10D8, + 0x72A7, 0x72A7, 0x1F73, 0x72AC, 0x72AC, 0x0E37, 0x72AF, 0x72AF, 0x1397, + 0x72C0, 0x72C0, 0x14E7, 0x72C2, 0x72C2, 0x0F07, 0x72C4, 0x72C4, 0x19E2, + 0x72CE, 0x72CE, 0x16C7, 0x72D0, 0x72D0, 0x1E8D, 0x72D7, 0x72D7, 0x0F52, + 0x72D9, 0x72D9, 0x19CB, 0x72E1, 0x72E1, 0x0F27, 0x72E9, 0x72E9, 0x15D7, + 0x72F8, 0x72F8, 0x1210, 0x72F9, 0x72F9, 0x1E55, 0x72FC, 0x72FC, 0x113F, + 0x72FD, 0x72FD, 0x1D55, 0x730A, 0x730A, 0x1794, 0x7316, 0x7316, 0x1BC3, + 0x731B, 0x731B, 0x1279, 0x731C, 0x731C, 0x164C, 0x731D, 0x731D, 0x1AB4, + 0x7325, 0x7325, 0x17FA, 0x7329, 0x7329, 0x156A, 0x732A, 0x732A, 0x19CC, + 0x732B, 0x732B, 0x12C8, 0x7336, 0x7337, 0x18BF, 0x733E, 0x733E, 0x1EDD, + 0x733F, 0x733F, 0x1880, 0x7344, 0x7344, 0x17C0, 0x7345, 0x7345, 0x149C, + 0x7350, 0x7350, 0x1999, 0x7352, 0x7352, 0x17B8, 0x7357, 0x7357, 0x0F8C, + 0x7368, 0x7368, 0x10D9, 0x736A, 0x736A, 0x1F05, 0x7370, 0x7370, 0x1782, + 0x7372, 0x7372, 0x1F0D, 0x7375, 0x7375, 0x1188, 0x7378, 0x7378, 0x15D8, + 0x737A, 0x737A, 0x1076, 0x737B, 0x737B, 0x1E2D, 0x7384, 0x7384, 0x1E3D, + 0x7386, 0x7386, 0x1960, 0x7387, 0x7387, 0x15B0, 0x7389, 0x7389, 0x17C1, + 0x738B, 0x738B, 0x17F2, 0x738E, 0x738E, 0x1A4E, 0x7394, 0x7394, 0x1BF4, + 0x7396, 0x7396, 0x0F53, 0x7397, 0x7397, 0x1843, 0x7398, 0x7398, 0x0FFE, + 0x739F, 0x739F, 0x130F, 0x73A7, 0x73A7, 0x18DB, 0x73A9, 0x73A9, 0x17E1, + 0x73AD, 0x73AD, 0x1471, 0x73B2, 0x73B2, 0x118F, 0x73B3, 0x73B3, 0x10A4, + 0x73B9, 0x73B9, 0x1E3E, 0x73C0, 0x73C0, 0x131E, 0x73C2, 0x73C2, 0x0D7C, + 0x73C9, 0x73C9, 0x1310, 0x73CA, 0x73CA, 0x14BC, 0x73CC, 0x73CC, 0x1DB8, + 0x73CD, 0x73CD, 0x1B50, 0x73CF, 0x73CF, 0x0D8F, 0x73D6, 0x73D6, 0x0F08, + 0x73D9, 0x73D9, 0x0ED5, 0x73DD, 0x73DD, 0x1F29, 0x73DE, 0x73DE, 0x1120, + 0x73E0, 0x73E0, 0x1AE2, 0x73E3, 0x73E3, 0x1613, 0x73E4, 0x73E4, 0x13CB, + 0x73E5, 0x73E5, 0x1917, 0x73E6, 0x73E6, 0x1E21, 0x73E9, 0x73E9, 0x1E66, + 0x73EA, 0x73EA, 0x0F9F, 0x73ED, 0x73ED, 0x1334, 0x73F7, 0x73F7, 0x12D8, + 0x73F9, 0x73F9, 0x156B, 0x73FD, 0x73FD, 0x1A4F, 0x73FE, 0x73FE, 0x1E3F, + 0x7401, 0x7401, 0x1535, 0x7403, 0x7403, 0x0F54, 0x7405, 0x7405, 0x1140, + 0x7406, 0x7406, 0x1211, 0x7407, 0x7407, 0x15D9, 0x7409, 0x7409, 0x11E8, + 0x7413, 0x7413, 0x17E2, 0x741B, 0x741B, 0x1CCC, 0x7420, 0x7420, 0x1A07, + 0x7421, 0x7421, 0x1604, 0x7422, 0x7422, 0x1CEC, 0x7425, 0x7425, 0x1E8E, + 0x7426, 0x7426, 0x0FFF, 0x7428, 0x7428, 0x0EC5, 0x742A, 0x742A, 0x1000, + 0x742B, 0x742B, 0x13EE, 0x742C, 0x742C, 0x17E3, 0x742E, 0x742E, 0x1ABC, + 0x742F, 0x742F, 0x0EF2, 0x7430, 0x7430, 0x1769, 0x7433, 0x7433, 0x1229, + 0x7434, 0x7434, 0x0FCB, 0x7435, 0x7435, 0x1451, 0x7436, 0x7436, 0x1D3C, + 0x7438, 0x7438, 0x1CED, 0x743A, 0x743A, 0x139B, 0x743F, 0x743F, 0x1EA8, + 0x7440, 0x7440, 0x1844, 0x7441, 0x7441, 0x12AB, 0x7443, 0x7443, 0x1C86, + 0x7444, 0x7444, 0x1536, 0x744B, 0x744B, 0x1898, 0x7455, 0x7455, 0x1DC7, + 0x7457, 0x7457, 0x1881, 0x7459, 0x7459, 0x104D, 0x745A, 0x745A, 0x1E8F, + 0x745B, 0x745B, 0x1783, 0x745C, 0x745C, 0x18C1, 0x745E, 0x745E, 0x150D, + 0x745F, 0x745F, 0x162A, 0x7460, 0x7460, 0x11E9, 0x7462, 0x7462, 0x182C, + 0x7464, 0x7464, 0x180B, 0x7465, 0x7465, 0x17C4, 0x7468, 0x7468, 0x1B51, + 0x7469, 0x7469, 0x1E67, 0x746A, 0x746A, 0x1231, 0x746F, 0x746F, 0x1141, + 0x747E, 0x747E, 0x0FBE, 0x7482, 0x7482, 0x1001, 0x7483, 0x7483, 0x1212, + 0x7487, 0x7487, 0x1537, 0x7489, 0x7489, 0x1176, 0x748B, 0x748B, 0x199A, + 0x7498, 0x7498, 0x1221, 0x749C, 0x749C, 0x1EEF, 0x749E, 0x749E, 0x131F, + 0x749F, 0x749F, 0x0E63, 0x74A1, 0x74A1, 0x1B52, 0x74A3, 0x74A3, 0x1002, + 0x74A5, 0x74A5, 0x0E64, 0x74A7, 0x74A7, 0x13A1, 0x74A8, 0x74A8, 0x1B99, + 0x74AA, 0x74AA, 0x1A94, 0x74B0, 0x74B0, 0x1ED6, 0x74B2, 0x74B2, 0x15DA, + 0x74B5, 0x74B5, 0x1733, 0x74B9, 0x74B9, 0x1605, 0x74BD, 0x74BD, 0x14F3, + 0x74BF, 0x74BF, 0x1538, 0x74C6, 0x74C6, 0x1B6D, 0x74CA, 0x74CA, 0x0E65, + 0x74CF, 0x74CF, 0x11BC, 0x74D4, 0x74D4, 0x1784, 0x74D8, 0x74D8, 0x0EF3, + 0x74DA, 0x74DA, 0x1B9A, 0x74DC, 0x74DC, 0x0EDE, 0x74E0, 0x74E0, 0x1E90, + 0x74E2, 0x74E2, 0x1D9F, 0x74E3, 0x74E3, 0x1D46, 0x74E6, 0x74E6, 0x17D4, + 0x74EE, 0x74EE, 0x17CC, 0x74F7, 0x74F7, 0x1961, 0x7501, 0x7501, 0x13BB, + 0x7504, 0x7504, 0x0E38, 0x7511, 0x7511, 0x1B18, 0x7515, 0x7515, 0x17CD, + 0x7518, 0x7518, 0x0DC1, 0x751A, 0x751A, 0x1688, 0x751B, 0x751B, 0x1C0D, + 0x751F, 0x751F, 0x14FA, 0x7523, 0x7523, 0x14BD, 0x7525, 0x7525, 0x14FB, + 0x7526, 0x7526, 0x158E, 0x7528, 0x7528, 0x182D, 0x752B, 0x752B, 0x13CC, + 0x752C, 0x752C, 0x182E, 0x7530, 0x7530, 0x1A08, 0x7531, 0x7531, 0x18C2, + 0x7532, 0x7532, 0x0DCC, 0x7533, 0x7533, 0x1671, 0x7537, 0x7537, 0x1035, + 0x7538, 0x7538, 0x1A09, 0x753A, 0x753A, 0x1A50, 0x7547, 0x7547, 0x0FAB, + 0x754C, 0x754C, 0x0E85, 0x754F, 0x754F, 0x17FB, 0x7551, 0x7551, 0x1A0A, + 0x7553, 0x7553, 0x108B, 0x7554, 0x7554, 0x1335, 0x7559, 0x7559, 0x11EA, + 0x755B, 0x755B, 0x1B53, 0x755C, 0x755C, 0x1C79, 0x755D, 0x755D, 0x12D9, + 0x7562, 0x7562, 0x1DB9, 0x7565, 0x7565, 0x114A, 0x7566, 0x7566, 0x1F48, + 0x756A, 0x756A, 0x1388, 0x756F, 0x756F, 0x1B02, 0x7570, 0x7570, 0x1918, + 0x7575, 0x7575, 0x1EBC, 0x7576, 0x7576, 0x1096, 0x7578, 0x7578, 0x1003, + 0x757A, 0x757A, 0x0DDA, 0x757F, 0x757F, 0x1004, 0x7586, 0x7586, 0x0DDB, + 0x7587, 0x7587, 0x1AE3, 0x758A, 0x758A, 0x1C18, 0x758B, 0x758B, 0x1DBA, + 0x758E, 0x758E, 0x1590, 0x758F, 0x758F, 0x158F, 0x7591, 0x7591, 0x1903, + 0x759D, 0x759D, 0x14BE, 0x75A5, 0x75A5, 0x0DF3, 0x75AB, 0x75AB, 0x173F, + 0x75B1, 0x75B1, 0x1D86, 0x75B2, 0x75B2, 0x1DAF, 0x75B3, 0x75B3, 0x0DC2, + 0x75B5, 0x75B5, 0x1962, 0x75B8, 0x75B8, 0x1077, 0x75B9, 0x75B9, 0x1B54, + 0x75BC, 0x75BC, 0x10F6, 0x75BD, 0x75BD, 0x19CD, 0x75BE, 0x75BE, 0x1B6E, + 0x75C2, 0x75C2, 0x0D7D, 0x75C5, 0x75C5, 0x13BC, 0x75C7, 0x75C7, 0x1B19, + 0x75CD, 0x75CD, 0x1919, 0x75D2, 0x75D2, 0x1704, 0x75D4, 0x75D4, 0x1CB2, + 0x75D5, 0x75D5, 0x1F56, 0x75D8, 0x75D8, 0x1100, 0x75D9, 0x75D9, 0x0E66, + 0x75DB, 0x75DB, 0x1D1F, 0x75E2, 0x75E2, 0x1213, 0x75F0, 0x75F0, 0x1082, + 0x75F2, 0x75F2, 0x1232, 0x75F4, 0x75F4, 0x1CB3, 0x75FA, 0x75FA, 0x1452, + 0x75FC, 0x75FC, 0x0EA2, 0x7600, 0x7600, 0x1712, 0x760D, 0x760D, 0x1705, + 0x7619, 0x7619, 0x1591, 0x761F, 0x761F, 0x17C5, 0x7620, 0x7620, 0x1BE7, + 0x7621, 0x7621, 0x1BC4, 0x7622, 0x7622, 0x1336, 0x7624, 0x7624, 0x11EB, + 0x7626, 0x7626, 0x15DB, 0x763B, 0x763B, 0x11DA, 0x7642, 0x7642, 0x11CD, + 0x764C, 0x764C, 0x16C2, 0x764E, 0x764E, 0x0DA1, 0x7652, 0x7652, 0x18C3, + 0x7656, 0x7656, 0x13A2, 0x7661, 0x7661, 0x1CB4, 0x7664, 0x7664, 0x1A20, + 0x7669, 0x7669, 0x1118, 0x766C, 0x766C, 0x1539, 0x7670, 0x7670, 0x17CE, + 0x7672, 0x7672, 0x1A0B, 0x7678, 0x7678, 0x0E86, 0x767B, 0x767B, 0x1110, + 0x767C, 0x767C, 0x1347, 0x767D, 0x767E, 0x1381, 0x7684, 0x7684, 0x19E3, + 0x7686, 0x7686, 0x0DF4, 0x7687, 0x7687, 0x1EF0, 0x768E, 0x768E, 0x0F28, + 0x7690, 0x7690, 0x0EA3, 0x7693, 0x7693, 0x1E91, 0x76AE, 0x76AE, 0x1DB0, + 0x76BA, 0x76BA, 0x1C68, 0x76BF, 0x76BF, 0x1293, 0x76C2, 0x76C2, 0x1845, + 0x76C3, 0x76C3, 0x1372, 0x76C6, 0x76C6, 0x142C, 0x76C8, 0x76C8, 0x1785, + 0x76CA, 0x76CA, 0x1926, 0x76D2, 0x76D2, 0x1DF1, 0x76D6, 0x76D6, 0x0DF5, + 0x76DB, 0x76DB, 0x156C, 0x76DC, 0x76DC, 0x10C5, 0x76DE, 0x76DE, 0x197E, + 0x76DF, 0x76DF, 0x127B, 0x76E1, 0x76E1, 0x1B55, 0x76E3, 0x76E3, 0x0DC3, + 0x76E4, 0x76E4, 0x1337, 0x76E7, 0x76E7, 0x11A6, 0x76EE, 0x76EE, 0x12B7, + 0x76F2, 0x76F2, 0x127A, 0x76F4, 0x76F4, 0x1B3F, 0x76F8, 0x76F8, 0x14E8, + 0x76FC, 0x76FC, 0x1338, 0x76FE, 0x76FE, 0x1614, 0x7701, 0x7701, 0x156D, + 0x7704, 0x7704, 0x1284, 0x7708, 0x7708, 0x1CFD, 0x7709, 0x7709, 0x12FE, + 0x770B, 0x770B, 0x0DA2, 0x771E, 0x771E, 0x1B56, 0x7720, 0x7720, 0x1285, + 0x7729, 0x7729, 0x1E40, 0x7737, 0x7737, 0x0F8A, 0x7738, 0x7738, 0x12AC, + 0x773A, 0x773A, 0x1A95, 0x773C, 0x773C, 0x16B4, 0x7740, 0x7740, 0x1B91, + 0x774D, 0x774D, 0x1E41, 0x775B, 0x775B, 0x1A51, 0x7761, 0x7761, 0x15DC, + 0x7763, 0x7763, 0x10DA, 0x7766, 0x7766, 0x12B8, 0x776B, 0x776B, 0x1C19, + 0x7779, 0x7779, 0x10C6, 0x777E, 0x777E, 0x0EA4, 0x777F, 0x777F, 0x1795, + 0x778B, 0x778B, 0x1B57, 0x7791, 0x7791, 0x1294, 0x779E, 0x779E, 0x124A, + 0x77A5, 0x77A5, 0x13AE, 0x77AC, 0x77AC, 0x1615, 0x77AD, 0x77AD, 0x11CE, + 0x77B0, 0x77B0, 0x0DC4, 0x77B3, 0x77B3, 0x10F7, 0x77BB, 0x77BB, 0x1C0E, + 0x77BC, 0x77BC, 0x0E25, 0x77BF, 0x77BF, 0x0F55, 0x77D7, 0x77D7, 0x1C4C, + 0x77DB, 0x77DB, 0x12AD, 0x77DC, 0x77DC, 0x0FDC, 0x77E2, 0x77E2, 0x164D, + 0x77E3, 0x77E3, 0x1904, 0x77E5, 0x77E5, 0x1B30, 0x77E9, 0x77E9, 0x0F56, + 0x77ED, 0x77ED, 0x106C, 0x77EE, 0x77EE, 0x17F6, 0x77EF, 0x77EF, 0x0F29, + 0x77F3, 0x77F3, 0x1525, 0x7802, 0x7802, 0x149D, 0x7812, 0x7812, 0x1453, + 0x7825, 0x7825, 0x1B31, 0x7826, 0x7826, 0x1BD0, 0x7827, 0x7827, 0x1CCD, + 0x782C, 0x782C, 0x122C, 0x7832, 0x7832, 0x1D87, 0x7834, 0x7834, 0x1D3D, + 0x7845, 0x7845, 0x0FA0, 0x784F, 0x784F, 0x1758, 0x785D, 0x785D, 0x1C3A, + 0x786B, 0x786B, 0x11EC, 0x786C, 0x786C, 0x0E67, 0x786F, 0x786F, 0x1759, + 0x787C, 0x787C, 0x143A, 0x7881, 0x7881, 0x1005, 0x7887, 0x7887, 0x1A52, + 0x788C, 0x788C, 0x11B0, 0x788D, 0x788D, 0x16D7, 0x788E, 0x788E, 0x15BB, + 0x7891, 0x7891, 0x1454, 0x7897, 0x7897, 0x17E4, 0x78A3, 0x78A3, 0x0DB0, + 0x78A7, 0x78A7, 0x13A3, 0x78A9, 0x78A9, 0x1526, 0x78BA, 0x78BB, 0x1EC7, + 0x78BC, 0x78BC, 0x1233, 0x78C1, 0x78C1, 0x1963, 0x78C5, 0x78C5, 0x135C, + 0x78CA, 0x78CA, 0x11C2, 0x78CB, 0x78CB, 0x1B8A, 0x78CE, 0x78CE, 0x0E87, + 0x78D0, 0x78D0, 0x1339, 0x78E8, 0x78E8, 0x1234, 0x78EC, 0x78EC, 0x0E68, + 0x78EF, 0x78EF, 0x1006, 0x78F5, 0x78F5, 0x0DA3, 0x78FB, 0x78FB, 0x133A, + 0x7901, 0x7901, 0x1C3B, 0x790E, 0x790E, 0x1C3C, 0x7916, 0x7916, 0x1734, + 0x792A, 0x792A, 0x1162, 0x792B, 0x792B, 0x116E, 0x792C, 0x792C, 0x133B, + 0x793A, 0x793A, 0x164E, 0x793E, 0x793E, 0x149E, 0x7940, 0x7940, 0x149F, + 0x7941, 0x7941, 0x1007, 0x7947, 0x7948, 0x1008, 0x7949, 0x7949, 0x1B32, + 0x7950, 0x7950, 0x1846, 0x7956, 0x7956, 0x1A96, 0x7957, 0x7957, 0x1B33, + 0x795A, 0x795A, 0x1A97, 0x795B, 0x795B, 0x0E0B, 0x795C, 0x795C, 0x1E92, + 0x795D, 0x795D, 0x1C7A, 0x795E, 0x795E, 0x1672, 0x7960, 0x7960, 0x14A0, + 0x7965, 0x7965, 0x14E9, 0x7968, 0x7968, 0x1DA0, 0x796D, 0x796D, 0x1A71, + 0x797A, 0x797A, 0x100A, 0x797F, 0x797F, 0x11B1, 0x7981, 0x7981, 0x0FCC, + 0x798D, 0x798D, 0x1EBD, 0x798E, 0x798E, 0x1A53, 0x798F, 0x798F, 0x13D9, + 0x7991, 0x7991, 0x1847, 0x79A6, 0x79A6, 0x1713, 0x79A7, 0x79A7, 0x1F74, + 0x79AA, 0x79AA, 0x153A, 0x79AE, 0x79AE, 0x119C, 0x79B1, 0x79B1, 0x10C7, + 0x79B3, 0x79B3, 0x1706, 0x79B9, 0x79B9, 0x1848, 0x79BD, 0x79BD, 0x0FCD, + 0x79BE, 0x79BE, 0x1EBE, 0x79BF, 0x79BF, 0x10DB, 0x79C0, 0x79C0, 0x15DD, + 0x79C1, 0x79C1, 0x14A1, 0x79C9, 0x79C9, 0x13BD, 0x79CA, 0x79CA, 0x1042, + 0x79CB, 0x79CB, 0x1C69, 0x79D1, 0x79D1, 0x0EDF, 0x79D2, 0x79D2, 0x1C3D, + 0x79D5, 0x79D5, 0x1455, 0x79D8, 0x79D8, 0x1456, 0x79DF, 0x79DF, 0x1A98, + 0x79E4, 0x79E4, 0x1CD1, 0x79E6, 0x79E6, 0x1B58, 0x79E7, 0x79E7, 0x16CE, + 0x79E9, 0x79E9, 0x1B6F, 0x79FB, 0x79FB, 0x191A, 0x7A00, 0x7A00, 0x1F75, + 0x7A05, 0x7A05, 0x1578, 0x7A08, 0x7A08, 0x0DA4, 0x7A0B, 0x7A0B, 0x1A54, + 0x7A0D, 0x7A0D, 0x1C3E, 0x7A14, 0x7A14, 0x194A, 0x7A17, 0x7A17, 0x1D56, + 0x7A19, 0x7A19, 0x1B40, 0x7A1A, 0x7A1A, 0x1CB5, 0x7A1C, 0x7A1C, 0x1201, + 0x7A1F, 0x7A1F, 0x1DA7, 0x7A20, 0x7A20, 0x1A99, 0x7A2E, 0x7A2E, 0x1ABD, + 0x7A31, 0x7A31, 0x1CD2, 0x7A36, 0x7A36, 0x185B, 0x7A37, 0x7A37, 0x1B41, + 0x7A3B, 0x7A3B, 0x10C8, 0x7A3C, 0x7A3C, 0x0D7E, 0x7A3D, 0x7A3D, 0x0E88, + 0x7A3F, 0x7A3F, 0x0EA5, 0x7A40, 0x7A40, 0x0EBB, 0x7A46, 0x7A46, 0x12B9, + 0x7A49, 0x7A49, 0x1CB6, 0x7A4D, 0x7A4D, 0x19E4, 0x7A4E, 0x7A4E, 0x1786, + 0x7A57, 0x7A57, 0x15DE, 0x7A61, 0x7A61, 0x14F6, 0x7A62, 0x7A62, 0x1796, + 0x7A69, 0x7A69, 0x17C6, 0x7A6B, 0x7A6B, 0x1EC9, 0x7A70, 0x7A70, 0x1707, + 0x7A74, 0x7A74, 0x1E4B, 0x7A76, 0x7A76, 0x0F57, 0x7A79, 0x7A79, 0x0F7D, + 0x7A7A, 0x7A7A, 0x0ED6, 0x7A7D, 0x7A7D, 0x1A55, 0x7A7F, 0x7A7F, 0x1BF5, + 0x7A81, 0x7A81, 0x10EA, 0x7A84, 0x7A84, 0x1B92, 0x7A88, 0x7A88, 0x180C, + 0x7A92, 0x7A92, 0x1B70, 0x7A93, 0x7A93, 0x1BC5, 0x7A95, 0x7A95, 0x1A9A, + 0x7A98, 0x7A98, 0x0F72, 0x7A9F, 0x7A9F, 0x0F7A, 0x7AA9, 0x7AAA, 0x17D5, + 0x7AAE, 0x7AAE, 0x0F7E, 0x7AAF, 0x7AAF, 0x180D, 0x7ABA, 0x7ABA, 0x0FA1, + 0x7AC4, 0x7AC4, 0x1B9B, 0x7AC5, 0x7AC5, 0x0FA2, 0x7AC7, 0x7AC7, 0x1101, + 0x7ACA, 0x7ACA, 0x1A21, 0x7ACB, 0x7ACB, 0x122D, 0x7AD7, 0x7AD7, 0x12C9, + 0x7AD9, 0x7AD9, 0x1BB1, 0x7ADD, 0x7ADD, 0x13BE, 0x7ADF, 0x7ADF, 0x0E69, + 0x7AE0, 0x7AE0, 0x199B, 0x7AE3, 0x7AE3, 0x1B03, 0x7AE5, 0x7AE5, 0x10F8, + 0x7AEA, 0x7AEA, 0x15DF, 0x7AED, 0x7AED, 0x0DB1, 0x7AEF, 0x7AEF, 0x106D, + 0x7AF6, 0x7AF6, 0x0E6A, 0x7AF9, 0x7AF9, 0x1AF4, 0x7AFA, 0x7AFA, 0x1C7B, + 0x7AFF, 0x7AFF, 0x0DA5, 0x7B0F, 0x7B0F, 0x1EAC, 0x7B11, 0x7B11, 0x1592, + 0x7B19, 0x7B19, 0x14FC, 0x7B1B, 0x7B1B, 0x19E5, 0x7B1E, 0x7B1E, 0x1D0F, + 0x7B20, 0x7B20, 0x122E, 0x7B26, 0x7B26, 0x140A, 0x7B2C, 0x7B2C, 0x1A72, + 0x7B2D, 0x7B2D, 0x1190, 0x7B39, 0x7B39, 0x1579, 0x7B46, 0x7B46, 0x1DBB, + 0x7B49, 0x7B49, 0x1111, 0x7B4B, 0x7B4B, 0x0FBF, 0x7B4C, 0x7B4C, 0x1A0C, + 0x7B4D, 0x7B4D, 0x1616, 0x7B4F, 0x7B4F, 0x138E, 0x7B50, 0x7B50, 0x0F09, + 0x7B51, 0x7B51, 0x1C7C, 0x7B52, 0x7B52, 0x1D20, 0x7B54, 0x7B54, 0x108C, + 0x7B56, 0x7B56, 0x1BD8, 0x7B60, 0x7B60, 0x0FAC, 0x7B6C, 0x7B6C, 0x156E, + 0x7B6E, 0x7B6E, 0x150E, 0x7B75, 0x7B75, 0x175A, 0x7B7D, 0x7B7D, 0x17B9, + 0x7B87, 0x7B87, 0x0DF6, 0x7B8B, 0x7B8B, 0x1A0D, 0x7B8F, 0x7B8F, 0x19BC, + 0x7B94, 0x7B94, 0x1320, 0x7B95, 0x7B95, 0x100B, 0x7B97, 0x7B97, 0x14BF, + 0x7B9A, 0x7B9A, 0x1B8B, 0x7B9D, 0x7B9D, 0x0E48, 0x7BA1, 0x7BA1, 0x0EF4, + 0x7BAD, 0x7BAD, 0x1A0E, 0x7BB1, 0x7BB1, 0x14EA, 0x7BB4, 0x7BB4, 0x1982, + 0x7BB8, 0x7BB8, 0x19CE, 0x7BC0, 0x7BC0, 0x1A22, 0x7BC1, 0x7BC1, 0x1EF1, + 0x7BC4, 0x7BC4, 0x1398, 0x7BC6, 0x7BC6, 0x1A0F, 0x7BC7, 0x7BC7, 0x1D62, + 0x7BC9, 0x7BC9, 0x1C7D, 0x7BD2, 0x7BD2, 0x1661, 0x7BE0, 0x7BE0, 0x1593, + 0x7BE4, 0x7BE4, 0x10DC, 0x7BE9, 0x7BE9, 0x14A2, 0x7C07, 0x7C07, 0x1AAD, + 0x7C12, 0x7C12, 0x1B9C, 0x7C1E, 0x7C1E, 0x106E, 0x7C21, 0x7C21, 0x0DA6, + 0x7C27, 0x7C27, 0x1EF2, 0x7C2A, 0x7C2A, 0x1983, 0x7C2B, 0x7C2B, 0x1594, + 0x7C3D, 0x7C3D, 0x1C0F, 0x7C3E, 0x7C3E, 0x1187, 0x7C3F, 0x7C3F, 0x140B, + 0x7C43, 0x7C43, 0x1134, 0x7C4C, 0x7C4C, 0x1AE4, 0x7C4D, 0x7C4D, 0x19E6, + 0x7C60, 0x7C60, 0x11BD, 0x7C64, 0x7C64, 0x1C10, 0x7C6C, 0x7C6C, 0x1214, + 0x7C73, 0x7C73, 0x12FF, 0x7C83, 0x7C83, 0x1457, 0x7C89, 0x7C89, 0x142D, + 0x7C92, 0x7C92, 0x122F, 0x7C95, 0x7C95, 0x1321, 0x7C97, 0x7C97, 0x1A9B, + 0x7C98, 0x7C98, 0x1A29, 0x7C9F, 0x7C9F, 0x15A5, 0x7CA5, 0x7CA5, 0x1AF5, + 0x7CA7, 0x7CA7, 0x199C, 0x7CAE, 0x7CAE, 0x1151, 0x7CB1, 0x7CB1, 0x1152, + 0x7CB2, 0x7CB2, 0x1B9E, 0x7CB3, 0x7CB3, 0x0DFE, 0x7CB9, 0x7CB9, 0x15E0, + 0x7CBE, 0x7CBE, 0x1A56, 0x7CCA, 0x7CCA, 0x1E93, 0x7CD6, 0x7CD6, 0x1097, + 0x7CDE, 0x7CDE, 0x142E, 0x7CDF, 0x7CDF, 0x1A9C, 0x7CE0, 0x7CE0, 0x0DDC, + 0x7CE7, 0x7CE7, 0x1153, 0x7CFB, 0x7CFB, 0x0E89, 0x7CFE, 0x7CFE, 0x0FA3, + 0x7D00, 0x7D00, 0x100C, 0x7D02, 0x7D02, 0x1AE5, 0x7D04, 0x7D04, 0x16F1, + 0x7D05, 0x7D05, 0x1EB3, 0x7D06, 0x7D06, 0x1849, 0x7D07, 0x7D07, 0x1F59, + 0x7D08, 0x7D08, 0x1ED7, 0x7D0A, 0x7D0B, 0x12EA, 0x7D0D, 0x7D0D, 0x1036, + 0x7D10, 0x7D10, 0x1058, 0x7D14, 0x7D14, 0x1617, 0x7D17, 0x7D17, 0x14A3, + 0x7D18, 0x7D18, 0x0F19, 0x7D19, 0x7D19, 0x1B34, 0x7D1A, 0x7D1A, 0x0FD8, + 0x7D1B, 0x7D1B, 0x142F, 0x7D20, 0x7D20, 0x1595, 0x7D21, 0x7D21, 0x135D, + 0x7D22, 0x7D22, 0x14F7, 0x7D2B, 0x7D2B, 0x1964, 0x7D2C, 0x7D2C, 0x1AE6, + 0x7D2E, 0x7D2E, 0x1BA9, 0x7D2F, 0x7D2F, 0x11DB, 0x7D30, 0x7D30, 0x157A, + 0x7D33, 0x7D33, 0x1673, 0x7D35, 0x7D35, 0x19CF, 0x7D39, 0x7D39, 0x1596, + 0x7D3A, 0x7D3A, 0x0DC5, 0x7D42, 0x7D42, 0x1ABE, 0x7D43, 0x7D43, 0x1E42, + 0x7D44, 0x7D44, 0x1A9D, 0x7D45, 0x7D45, 0x0E6B, 0x7D46, 0x7D46, 0x133C, + 0x7D50, 0x7D50, 0x0E43, 0x7D5E, 0x7D5E, 0x0F2A, 0x7D61, 0x7D61, 0x1121, + 0x7D62, 0x7D62, 0x1E43, 0x7D66, 0x7D66, 0x0FD9, 0x7D68, 0x7D68, 0x18E3, + 0x7D6A, 0x7D6A, 0x1936, 0x7D6E, 0x7D6E, 0x150F, 0x7D71, 0x7D71, 0x1D21, + 0x7D72, 0x7D72, 0x14A4, 0x7D73, 0x7D73, 0x0DDD, 0x7D76, 0x7D76, 0x1A23, + 0x7D79, 0x7D79, 0x0E39, 0x7D7F, 0x7D7F, 0x0F58, 0x7D8E, 0x7D8E, 0x1A57, + 0x7D8F, 0x7D8F, 0x15E1, 0x7D93, 0x7D93, 0x0E6C, 0x7D9C, 0x7D9C, 0x1ABF, + 0x7DA0, 0x7DA0, 0x11B2, 0x7DA2, 0x7DA2, 0x1AE7, 0x7DAC, 0x7DAC, 0x15E2, + 0x7DAD, 0x7DAD, 0x18C4, 0x7DB1, 0x7DB1, 0x0DDE, 0x7DB2, 0x7DB2, 0x125D, + 0x7DB4, 0x7DB4, 0x1C05, 0x7DB5, 0x7DB5, 0x1BD1, 0x7DB8, 0x7DB8, 0x11F6, + 0x7DBA, 0x7DBA, 0x100D, 0x7DBB, 0x7DBB, 0x1CF8, 0x7DBD, 0x7DBD, 0x1975, + 0x7DBE, 0x7DBE, 0x1202, 0x7DBF, 0x7DBF, 0x1286, 0x7DC7, 0x7DC7, 0x1CB7, + 0x7DCA, 0x7DCA, 0x101E, 0x7DCB, 0x7DCB, 0x1458, 0x7DD6, 0x7DD6, 0x1510, + 0x7DD8, 0x7DD8, 0x1DEA, 0x7DDA, 0x7DDA, 0x153B, 0x7DDD, 0x7DDD, 0x1B7A, + 0x7DDE, 0x7DDE, 0x106F, 0x7DE0, 0x7DE0, 0x1C29, 0x7DE1, 0x7DE1, 0x1311, + 0x7DE3, 0x7DE3, 0x175B, 0x7DE8, 0x7DE8, 0x1D63, 0x7DE9, 0x7DE9, 0x17E5, + 0x7DEC, 0x7DEC, 0x1287, 0x7DEF, 0x7DEF, 0x1899, 0x7DF4, 0x7DF4, 0x1177, + 0x7DFB, 0x7DFB, 0x1CB8, 0x7E09, 0x7E09, 0x1B59, 0x7E0A, 0x7E0A, 0x16DF, + 0x7E15, 0x7E15, 0x17C7, 0x7E1B, 0x7E1B, 0x1322, 0x7E1D, 0x7E1D, 0x1B5A, + 0x7E1E, 0x7E1E, 0x1E94, 0x7E1F, 0x7E1F, 0x181B, 0x7E21, 0x7E21, 0x19B5, + 0x7E23, 0x7E23, 0x1E44, 0x7E2B, 0x7E2B, 0x13EF, 0x7E2E, 0x7E2E, 0x1C7E, + 0x7E2F, 0x7E2F, 0x175C, 0x7E31, 0x7E31, 0x1AC0, 0x7E37, 0x7E37, 0x11DC, + 0x7E3D, 0x7E3D, 0x1C59, 0x7E3E, 0x7E3E, 0x19E7, 0x7E41, 0x7E41, 0x1389, + 0x7E43, 0x7E43, 0x143B, 0x7E46, 0x7E46, 0x12DA, 0x7E47, 0x7E47, 0x180E, + 0x7E52, 0x7E52, 0x1B1A, 0x7E54, 0x7E54, 0x1B42, 0x7E55, 0x7E55, 0x153C, + 0x7E5E, 0x7E5E, 0x180F, 0x7E61, 0x7E61, 0x15E3, 0x7E69, 0x7E69, 0x1639, + 0x7E6A, 0x7E6A, 0x1F06, 0x7E6B, 0x7E6B, 0x0E8A, 0x7E6D, 0x7E6D, 0x0E3A, + 0x7E70, 0x7E70, 0x1A9E, 0x7E79, 0x7E79, 0x1740, 0x7E7C, 0x7E7C, 0x0E8B, + 0x7E82, 0x7E82, 0x1B9D, 0x7E8C, 0x7E8C, 0x15A6, 0x7E8F, 0x7E8F, 0x1A10, + 0x7E93, 0x7E93, 0x1787, 0x7E96, 0x7E96, 0x155A, 0x7E98, 0x7E98, 0x1B9F, + 0x7E9B, 0x7E9B, 0x10DD, 0x7E9C, 0x7E9C, 0x1135, 0x7F36, 0x7F36, 0x140C, + 0x7F38, 0x7F38, 0x1E01, 0x7F3A, 0x7F3A, 0x0E44, 0x7F4C, 0x7F4C, 0x16E3, + 0x7F50, 0x7F50, 0x0EF5, 0x7F54, 0x7F54, 0x125E, 0x7F55, 0x7F55, 0x1DDB, + 0x7F6A, 0x7F6A, 0x1ACB, 0x7F6B, 0x7F6B, 0x0F0E, 0x7F6E, 0x7F6E, 0x1CB9, + 0x7F70, 0x7F70, 0x138F, 0x7F72, 0x7F72, 0x1511, 0x7F75, 0x7F75, 0x126D, + 0x7F77, 0x7F77, 0x1D3E, 0x7F79, 0x7F79, 0x1215, 0x7F85, 0x7F85, 0x1119, + 0x7F88, 0x7F88, 0x100E, 0x7F8A, 0x7F8A, 0x1708, 0x7F8C, 0x7F8C, 0x0DDF, + 0x7F8E, 0x7F8E, 0x1300, 0x7F94, 0x7F94, 0x0EA6, 0x7F9A, 0x7F9A, 0x1191, + 0x7F9E, 0x7F9E, 0x15E4, 0x7FA4, 0x7FA4, 0x0F73, 0x7FA8, 0x7FA8, 0x153D, + 0x7FA9, 0x7FA9, 0x1905, 0x7FB2, 0x7FB2, 0x1F76, 0x7FB8, 0x7FB8, 0x1216, + 0x7FB9, 0x7FB9, 0x0DFF, 0x7FBD, 0x7FBD, 0x184A, 0x7FC1, 0x7FC1, 0x17CF, + 0x7FC5, 0x7FC5, 0x164F, 0x7FCA, 0x7FCA, 0x1927, 0x7FCC, 0x7FCC, 0x1928, + 0x7FCE, 0x7FCE, 0x1192, 0x7FD2, 0x7FD2, 0x162F, 0x7FD4, 0x7FD4, 0x14EB, + 0x7FD5, 0x7FD5, 0x1F61, 0x7FDF, 0x7FDF, 0x19E8, 0x7FE0, 0x7FE0, 0x1C9A, + 0x7FE1, 0x7FE1, 0x1459, 0x7FE9, 0x7FE9, 0x1D64, 0x7FEB, 0x7FEB, 0x17E6, + 0x7FF0, 0x7FF0, 0x1DDC, 0x7FF9, 0x7FF9, 0x0F2B, 0x7FFC, 0x7FFC, 0x1929, + 0x8000, 0x8000, 0x1810, 0x8001, 0x8001, 0x11A7, 0x8003, 0x8003, 0x0EA7, + 0x8005, 0x8005, 0x1965, 0x8006, 0x8006, 0x100F, 0x8009, 0x8009, 0x0F59, + 0x800C, 0x800C, 0x191B, 0x8010, 0x8010, 0x103E, 0x8015, 0x8015, 0x0E6D, + 0x8017, 0x8017, 0x12AE, 0x8018, 0x8018, 0x1863, 0x802D, 0x802D, 0x1010, + 0x8033, 0x8033, 0x191C, 0x8036, 0x8036, 0x16EE, 0x803D, 0x803D, 0x1CFE, + 0x803F, 0x803F, 0x0E6E, 0x8043, 0x8043, 0x1083, 0x8046, 0x8046, 0x1193, + 0x804A, 0x804A, 0x11CF, 0x8056, 0x8056, 0x156F, 0x8058, 0x8058, 0x1477, + 0x805A, 0x805A, 0x1C9B, 0x805E, 0x805E, 0x12EC, 0x806F, 0x806F, 0x1178, + 0x8070, 0x8070, 0x1C5A, 0x8072, 0x8072, 0x1570, 0x8073, 0x8073, 0x182F, + 0x8077, 0x8077, 0x1B43, 0x807D, 0x807D, 0x1C20, 0x807E, 0x807E, 0x11BE, + 0x807F, 0x807F, 0x18E0, 0x8084, 0x8084, 0x191D, 0x8085, 0x8085, 0x1606, + 0x8086, 0x8086, 0x14A5, 0x8087, 0x8087, 0x1A9F, 0x8089, 0x8089, 0x18D5, + 0x808B, 0x808B, 0x11FD, 0x808C, 0x808C, 0x1011, 0x8096, 0x8096, 0x1C3F, + 0x809B, 0x809B, 0x1E02, 0x809D, 0x809D, 0x0DA7, 0x80A1, 0x80A1, 0x0EA8, + 0x80A2, 0x80A2, 0x1B35, 0x80A5, 0x80A5, 0x145A, 0x80A9, 0x80A9, 0x0E3B, + 0x80AA, 0x80AA, 0x135E, 0x80AF, 0x80AF, 0x0FDD, 0x80B1, 0x80B1, 0x0F1A, + 0x80B2, 0x80B2, 0x18D6, 0x80B4, 0x80B4, 0x1F1B, 0x80BA, 0x80BA, 0x1D74, + 0x80C3, 0x80C3, 0x189A, 0x80C4, 0x80C4, 0x1AD1, 0x80CC, 0x80CC, 0x1373, + 0x80CE, 0x80CE, 0x1D10, 0x80DA, 0x80DA, 0x1374, 0x80DB, 0x80DB, 0x0DCD, + 0x80DE, 0x80DE, 0x1D88, 0x80E1, 0x80E1, 0x1E95, 0x80E4, 0x80E4, 0x18DC, + 0x80E5, 0x80E5, 0x1512, 0x80F1, 0x80F1, 0x0F0A, 0x80F4, 0x80F4, 0x10F9, + 0x80F8, 0x80F8, 0x1F51, 0x80FD, 0x80FD, 0x1059, 0x8102, 0x8102, 0x1B36, + 0x8105, 0x8105, 0x1E56, 0x8106, 0x8106, 0x1C9C, 0x8107, 0x8107, 0x1E57, + 0x8108, 0x8108, 0x1272, 0x810A, 0x810A, 0x1BE8, 0x8118, 0x8118, 0x17E7, + 0x811A, 0x811A, 0x0D90, 0x811B, 0x811B, 0x0E6F, 0x8123, 0x8123, 0x1618, + 0x8129, 0x8129, 0x15E5, 0x812B, 0x812B, 0x1CFB, 0x812F, 0x812F, 0x1D89, + 0x8139, 0x8139, 0x1BC6, 0x813E, 0x813E, 0x145B, 0x814B, 0x814B, 0x16E0, + 0x814E, 0x814E, 0x1674, 0x8150, 0x8151, 0x140D, 0x8154, 0x8154, 0x0DE0, + 0x8155, 0x8155, 0x17E8, 0x8165, 0x8165, 0x1571, 0x8166, 0x8166, 0x1053, + 0x816B, 0x816B, 0x1AC1, 0x8170, 0x8170, 0x1811, 0x8171, 0x8171, 0x0E18, + 0x8178, 0x8178, 0x199D, 0x8179, 0x8179, 0x13DA, 0x817A, 0x817A, 0x153E, + 0x817F, 0x817F, 0x1D25, 0x8180, 0x8180, 0x135F, 0x8188, 0x8188, 0x0E32, + 0x818A, 0x818A, 0x1323, 0x818F, 0x818F, 0x0EA9, 0x819A, 0x819A, 0x140F, + 0x819C, 0x819C, 0x123B, 0x819D, 0x819D, 0x162B, 0x81A0, 0x81A0, 0x0F2C, + 0x81A3, 0x81A3, 0x1B71, 0x81A8, 0x81A8, 0x1D5C, 0x81B3, 0x81B3, 0x153F, + 0x81B5, 0x81B5, 0x1C91, 0x81BA, 0x81BA, 0x18F8, 0x81BD, 0x81BD, 0x1084, + 0x81BE, 0x81BE, 0x1F07, 0x81BF, 0x81BF, 0x1050, 0x81C0, 0x81C0, 0x1107, + 0x81C2, 0x81C2, 0x145C, 0x81C6, 0x81C6, 0x171C, 0x81CD, 0x81CD, 0x1A73, + 0x81D8, 0x81D8, 0x113A, 0x81DF, 0x81DF, 0x199E, 0x81E3, 0x81E3, 0x1675, + 0x81E5, 0x81E5, 0x17D7, 0x81E7, 0x81E7, 0x199F, 0x81E8, 0x81E8, 0x122A, + 0x81EA, 0x81EA, 0x1966, 0x81ED, 0x81ED, 0x1C9D, 0x81F3, 0x81F3, 0x1B37, + 0x81F4, 0x81F4, 0x1CBA, 0x81FA, 0x81FA, 0x10A5, 0x81FB, 0x81FB, 0x1B5B, + 0x81FC, 0x81FC, 0x0F5A, 0x81FE, 0x81FE, 0x18C5, 0x8205, 0x8205, 0x0F5B, + 0x8207, 0x8207, 0x1735, 0x8208, 0x8208, 0x1F62, 0x820A, 0x820A, 0x0F5C, + 0x820C, 0x820C, 0x1550, 0x820D, 0x820D, 0x14A6, 0x8212, 0x8212, 0x1513, + 0x821B, 0x821B, 0x1BF6, 0x821C, 0x821C, 0x1619, 0x821E, 0x821E, 0x12DB, + 0x821F, 0x821F, 0x1AE8, 0x8221, 0x8221, 0x0DE1, 0x822A, 0x822A, 0x1E03, + 0x822B, 0x822B, 0x1360, 0x822C, 0x822C, 0x133D, 0x8235, 0x8235, 0x1CDE, + 0x8236, 0x8236, 0x1324, 0x8237, 0x8237, 0x1E45, 0x8239, 0x8239, 0x1540, + 0x8240, 0x8240, 0x1410, 0x8245, 0x8245, 0x1736, 0x8247, 0x8247, 0x1A58, + 0x8259, 0x8259, 0x1BC7, 0x8264, 0x8264, 0x1906, 0x8266, 0x8266, 0x1DEB, + 0x826E, 0x826E, 0x0DA8, 0x826F, 0x826F, 0x1154, 0x8271, 0x8271, 0x0DA9, + 0x8272, 0x8272, 0x14F8, 0x8276, 0x8276, 0x176A, 0x8278, 0x8278, 0x1C40, + 0x827E, 0x827E, 0x16D8, 0x828B, 0x828B, 0x184B, 0x828D, 0x828D, 0x1976, + 0x828E, 0x828E, 0x0F7F, 0x8292, 0x8292, 0x125F, 0x8299, 0x8299, 0x1411, + 0x829A, 0x829A, 0x1108, 0x829D, 0x829D, 0x1B38, 0x829F, 0x829F, 0x14CC, + 0x82A5, 0x82A5, 0x0DF7, 0x82A6, 0x82A6, 0x1E96, 0x82A9, 0x82A9, 0x0FCE, + 0x82AC, 0x82AC, 0x1430, 0x82AD, 0x82AD, 0x1D3F, 0x82AE, 0x82AE, 0x1797, + 0x82AF, 0x82AF, 0x1689, 0x82B1, 0x82B1, 0x1EBF, 0x82B3, 0x82B3, 0x1361, + 0x82B7, 0x82B7, 0x1B39, 0x82B8, 0x82B8, 0x1864, 0x82B9, 0x82B9, 0x0FC0, + 0x82BB, 0x82BB, 0x1C6A, 0x82BC, 0x82BC, 0x12AF, 0x82BD, 0x82BD, 0x1697, + 0x82BF, 0x82BF, 0x1952, 0x82D1, 0x82D1, 0x1882, 0x82D2, 0x82D2, 0x176B, + 0x82D4, 0x82D4, 0x1D11, 0x82D5, 0x82D5, 0x1C41, 0x82D7, 0x82D7, 0x12CA, + 0x82DB, 0x82DB, 0x0D7F, 0x82DE, 0x82DE, 0x1D8A, 0x82DF, 0x82DF, 0x0F5D, + 0x82E1, 0x82E1, 0x191E, 0x82E5, 0x82E5, 0x16F2, 0x82E6, 0x82E6, 0x0EAA, + 0x82E7, 0x82E7, 0x19D0, 0x82F1, 0x82F1, 0x1788, 0x82FD, 0x82FD, 0x0EAB, + 0x82FE, 0x82FE, 0x1DBC, 0x8301, 0x8301, 0x1B09, 0x8302, 0x8302, 0x12DC, + 0x8303, 0x8303, 0x1399, 0x8304, 0x8304, 0x0D80, 0x8305, 0x8305, 0x12B0, + 0x8309, 0x8309, 0x1255, 0x8317, 0x8317, 0x1295, 0x8328, 0x8328, 0x1967, + 0x832B, 0x832B, 0x1260, 0x832F, 0x832F, 0x13DB, 0x8331, 0x8331, 0x15E6, + 0x8334, 0x8334, 0x1F08, 0x8335, 0x8335, 0x1937, 0x8336, 0x8336, 0x105F, + 0x8338, 0x8338, 0x1830, 0x8339, 0x8339, 0x1737, 0x8340, 0x8340, 0x161A, + 0x8347, 0x8347, 0x1E1C, 0x8349, 0x8349, 0x1C42, 0x834A, 0x834A, 0x1E68, + 0x834F, 0x834F, 0x194B, 0x8351, 0x8351, 0x191F, 0x8352, 0x8352, 0x1EF3, + 0x8373, 0x8373, 0x1102, 0x8377, 0x8377, 0x1DC8, 0x837B, 0x837B, 0x19E9, + 0x8389, 0x8389, 0x1217, 0x838A, 0x838A, 0x19A0, 0x838E, 0x838E, 0x14A7, + 0x8396, 0x8396, 0x0E70, 0x8398, 0x8398, 0x1676, 0x839E, 0x839E, 0x17E9, + 0x83A2, 0x83A2, 0x1E58, 0x83A9, 0x83A9, 0x1412, 0x83AA, 0x83AA, 0x1698, + 0x83AB, 0x83AB, 0x123C, 0x83BD, 0x83BD, 0x1261, 0x83C1, 0x83C1, 0x1C21, + 0x83C5, 0x83C5, 0x0EF6, 0x83C9, 0x83C9, 0x11B3, 0x83CA, 0x83CA, 0x0F6D, + 0x83CC, 0x83CC, 0x0FAD, 0x83D3, 0x83D3, 0x0EE0, 0x83D6, 0x83D6, 0x1BC8, + 0x83DC, 0x83DC, 0x1BD2, 0x83E9, 0x83E9, 0x13CD, 0x83EB, 0x83EB, 0x0FC1, + 0x83EF, 0x83EF, 0x1EC0, 0x83F0, 0x83F0, 0x0EAC, 0x83F1, 0x83F1, 0x1203, + 0x83F2, 0x83F2, 0x145D, 0x83F4, 0x83F4, 0x16C3, 0x83F9, 0x83F9, 0x19D1, + 0x83FD, 0x83FD, 0x1607, 0x8403, 0x8403, 0x1C92, 0x8404, 0x8404, 0x10C9, + 0x840A, 0x840A, 0x1147, 0x840C, 0x840C, 0x127C, 0x840D, 0x840D, 0x1D6C, + 0x840E, 0x840E, 0x189B, 0x8429, 0x8429, 0x1C6B, 0x842C, 0x842C, 0x124B, + 0x8431, 0x8431, 0x1F39, 0x8438, 0x8438, 0x18C6, 0x843D, 0x843D, 0x1122, + 0x8449, 0x8449, 0x1771, 0x8457, 0x8457, 0x19D2, 0x845B, 0x845B, 0x0DB2, + 0x8461, 0x8461, 0x1D8B, 0x8463, 0x8463, 0x10FA, 0x8466, 0x8466, 0x189C, + 0x846B, 0x846B, 0x1E97, 0x846C, 0x846C, 0x19A1, 0x846F, 0x846F, 0x16F3, + 0x8475, 0x8475, 0x0FA4, 0x847A, 0x847A, 0x1B12, 0x8490, 0x8490, 0x15E7, + 0x8494, 0x8494, 0x1650, 0x8499, 0x8499, 0x12BF, 0x849C, 0x849C, 0x14C0, + 0x84A1, 0x84A1, 0x1362, 0x84B2, 0x84B2, 0x1D8C, 0x84B8, 0x84B8, 0x1B1B, + 0x84BB, 0x84BB, 0x16F4, 0x84BC, 0x84BC, 0x1BC9, 0x84BF, 0x84BF, 0x1E98, + 0x84C0, 0x84C0, 0x15AD, 0x84C2, 0x84C2, 0x1296, 0x84C4, 0x84C4, 0x1C7F, + 0x84C6, 0x84C6, 0x1527, 0x84C9, 0x84C9, 0x1831, 0x84CB, 0x84CB, 0x0DF8, + 0x84CD, 0x84CD, 0x1651, 0x84D1, 0x84D1, 0x14A8, 0x84DA, 0x84DA, 0x15E8, + 0x84EC, 0x84EC, 0x13F0, 0x84EE, 0x84EE, 0x1179, 0x84F4, 0x84F4, 0x161B, + 0x84FC, 0x84FC, 0x11D0, 0x8511, 0x8511, 0x128B, 0x8513, 0x8513, 0x124C, + 0x8514, 0x8514, 0x13DC, 0x8517, 0x8517, 0x1968, 0x8518, 0x8518, 0x14CD, + 0x851A, 0x851A, 0x186A, 0x851E, 0x851E, 0x11DD, 0x8521, 0x8521, 0x1BD3, + 0x8523, 0x8523, 0x19A2, 0x8525, 0x8525, 0x1C5B, 0x852C, 0x852C, 0x1597, + 0x852D, 0x852D, 0x18EF, 0x852F, 0x852F, 0x1B5C, 0x853D, 0x853D, 0x1D75, + 0x853F, 0x853F, 0x189D, 0x8541, 0x8541, 0x1085, 0x8543, 0x8543, 0x138A, + 0x8549, 0x8549, 0x1C43, 0x854E, 0x854E, 0x0F2D, 0x8553, 0x8553, 0x1865, + 0x8559, 0x8559, 0x1E74, 0x8563, 0x8563, 0x161C, 0x8568, 0x8568, 0x0F8D, + 0x8569, 0x8569, 0x1D06, 0x856A, 0x856A, 0x12DD, 0x856D, 0x856D, 0x1598, + 0x8584, 0x8584, 0x1325, 0x8587, 0x8587, 0x1301, 0x858F, 0x858F, 0x1907, + 0x8591, 0x8591, 0x0DE2, 0x8594, 0x8594, 0x19A3, 0x859B, 0x859B, 0x1551, + 0x85A6, 0x85A6, 0x1BF7, 0x85A8, 0x85A8, 0x1F35, 0x85A9, 0x85A9, 0x14C7, + 0x85AA, 0x85AA, 0x1677, 0x85AF, 0x85AF, 0x1514, 0x85B0, 0x85B0, 0x1F32, + 0x85BA, 0x85BA, 0x1A74, 0x85C1, 0x85C1, 0x0EAD, 0x85C9, 0x85C9, 0x1969, + 0x85CD, 0x85CD, 0x1136, 0x85CE, 0x85CE, 0x1678, 0x85CF, 0x85CF, 0x19A4, + 0x85D5, 0x85D5, 0x184C, 0x85DC, 0x85DC, 0x1163, 0x85DD, 0x85DD, 0x1798, + 0x85E4, 0x85E4, 0x1112, 0x85E5, 0x85E5, 0x16F5, 0x85E9, 0x85E9, 0x138B, + 0x85EA, 0x85EA, 0x15E9, 0x85F7, 0x85F7, 0x19D3, 0x85FA, 0x85FA, 0x1222, + 0x85FB, 0x85FB, 0x1AA0, 0x85FF, 0x85FF, 0x0EE9, 0x8602, 0x8602, 0x1799, + 0x8606, 0x8606, 0x11A8, 0x8607, 0x8607, 0x1599, 0x860A, 0x860A, 0x17C8, + 0x8616, 0x8616, 0x1724, 0x8617, 0x8617, 0x13A4, 0x861A, 0x861A, 0x1541, + 0x862D, 0x862D, 0x112B, 0x863F, 0x863F, 0x111A, 0x864E, 0x864E, 0x1E99, + 0x8650, 0x8650, 0x1DD0, 0x8654, 0x8654, 0x0E19, 0x8655, 0x8655, 0x1BDD, + 0x865B, 0x865B, 0x1E29, 0x865C, 0x865C, 0x11A9, 0x865E, 0x865E, 0x184D, + 0x865F, 0x865F, 0x1E9A, 0x8667, 0x8667, 0x1F49, 0x8679, 0x8679, 0x1EB4, + 0x868A, 0x868A, 0x12ED, 0x868C, 0x868C, 0x1363, 0x8693, 0x8693, 0x1938, + 0x86A3, 0x86A3, 0x0ED7, 0x86A4, 0x86A4, 0x1AA1, 0x86A9, 0x86A9, 0x1CBB, + 0x86C7, 0x86C7, 0x14A9, 0x86CB, 0x86CB, 0x1070, 0x86D4, 0x86D4, 0x1F09, + 0x86D9, 0x86D9, 0x17D8, 0x86DB, 0x86DB, 0x1AE9, 0x86DF, 0x86DF, 0x0F2E, + 0x86E4, 0x86E4, 0x1DF2, 0x86ED, 0x86ED, 0x1B72, 0x86FE, 0x86FE, 0x1699, + 0x8700, 0x8700, 0x1C4D, 0x8702, 0x8702, 0x13F1, 0x8703, 0x8703, 0x1679, + 0x8708, 0x8708, 0x17BA, 0x8718, 0x8718, 0x1B3A, 0x871A, 0x871A, 0x145E, + 0x871C, 0x871C, 0x1314, 0x874E, 0x874E, 0x0DB4, 0x8755, 0x8755, 0x1662, + 0x8757, 0x8757, 0x1EF4, 0x875F, 0x875F, 0x189E, 0x8766, 0x8766, 0x1DC9, + 0x8768, 0x8768, 0x162C, 0x8774, 0x8774, 0x1E9B, 0x8776, 0x8776, 0x1A2F, + 0x8778, 0x8778, 0x17D9, 0x8782, 0x8782, 0x1142, 0x878D, 0x878D, 0x18E4, + 0x879F, 0x879F, 0x1297, 0x87A2, 0x87A2, 0x1E69, 0x87B3, 0x87B3, 0x1098, + 0x87BA, 0x87BA, 0x111B, 0x87C4, 0x87C4, 0x1CD0, 0x87E0, 0x87E0, 0x133E, + 0x87EC, 0x87EC, 0x1542, 0x87EF, 0x87EF, 0x1812, 0x87F2, 0x87F2, 0x1C8D, + 0x87F9, 0x87F9, 0x1E10, 0x87FB, 0x87FB, 0x1908, 0x87FE, 0x87FE, 0x155B, + 0x8805, 0x8805, 0x163A, 0x881F, 0x881F, 0x113B, 0x8822, 0x8822, 0x1B04, + 0x8823, 0x8823, 0x1164, 0x8831, 0x8831, 0x0EAE, 0x8836, 0x8836, 0x1984, + 0x883B, 0x883B, 0x124D, 0x8840, 0x8840, 0x1E4C, 0x8846, 0x8846, 0x1B0C, + 0x884C, 0x884C, 0x1E1D, 0x884D, 0x884D, 0x175D, 0x8852, 0x8852, 0x1E46, + 0x8853, 0x8853, 0x1624, 0x8857, 0x8857, 0x0D81, 0x8859, 0x8859, 0x169A, + 0x885B, 0x885B, 0x189F, 0x885D, 0x885D, 0x1C8E, 0x8861, 0x8861, 0x1E6A, + 0x8862, 0x8862, 0x0F5E, 0x8863, 0x8863, 0x1909, 0x8868, 0x8868, 0x1DA1, + 0x886B, 0x886B, 0x14CE, 0x8870, 0x8870, 0x15BD, 0x8872, 0x8872, 0x1037, + 0x8877, 0x8877, 0x1C8F, 0x887E, 0x887F, 0x0FCF, 0x8881, 0x8881, 0x1883, + 0x8882, 0x8882, 0x129B, 0x8888, 0x8888, 0x0D82, 0x888B, 0x888B, 0x10A6, + 0x888D, 0x888D, 0x1D8D, 0x8892, 0x8892, 0x1071, 0x8896, 0x8896, 0x15EA, + 0x8897, 0x8897, 0x1B5D, 0x889E, 0x889E, 0x0EC6, 0x88AB, 0x88AB, 0x1DB1, + 0x88B4, 0x88B4, 0x0EAF, 0x88C1, 0x88C1, 0x19B6, 0x88C2, 0x88C2, 0x1182, + 0x88CF, 0x88CF, 0x1218, 0x88D4, 0x88D4, 0x179A, 0x88D5, 0x88D5, 0x18C7, + 0x88D9, 0x88D9, 0x0F74, 0x88DC, 0x88DC, 0x13CE, 0x88DD, 0x88DD, 0x19A5, + 0x88DF, 0x88DF, 0x14AA, 0x88E1, 0x88E1, 0x1219, 0x88E8, 0x88E8, 0x145F, + 0x88F3, 0x88F3, 0x14EC, 0x88F4, 0x88F5, 0x1375, 0x88F8, 0x88F8, 0x111C, + 0x88FD, 0x88FD, 0x1A75, 0x8907, 0x8907, 0x13DD, 0x8910, 0x8910, 0x0DB3, + 0x8912, 0x8912, 0x1D8E, 0x8913, 0x8913, 0x13CF, 0x8918, 0x8918, 0x18A0, + 0x8919, 0x8919, 0x1377, 0x8925, 0x8925, 0x181C, 0x892A, 0x892A, 0x1D26, + 0x8936, 0x8936, 0x1630, 0x8938, 0x8938, 0x11DE, 0x893B, 0x893B, 0x1552, + 0x8941, 0x8941, 0x0DE3, 0x8944, 0x8944, 0x1709, 0x895F, 0x895F, 0x0FD1, + 0x8964, 0x8964, 0x1137, 0x896A, 0x896A, 0x1256, 0x8972, 0x8972, 0x1631, + 0x897F, 0x897F, 0x1515, 0x8981, 0x8981, 0x1813, 0x8983, 0x8983, 0x1086, + 0x8986, 0x8986, 0x13DE, 0x8987, 0x8987, 0x1D57, 0x898B, 0x898B, 0x0E3C, + 0x898F, 0x898F, 0x0FA5, 0x8993, 0x8993, 0x127E, 0x8996, 0x8996, 0x1652, + 0x89A1, 0x89A1, 0x0E33, 0x89A9, 0x89A9, 0x10CA, 0x89AA, 0x89AA, 0x1CC3, + 0x89B2, 0x89B2, 0x0FC2, 0x89BA, 0x89BA, 0x0D91, 0x89BD, 0x89BD, 0x1138, + 0x89C0, 0x89C0, 0x0EF7, 0x89D2, 0x89D2, 0x0D92, 0x89E3, 0x89E3, 0x1E11, + 0x89F4, 0x89F4, 0x14ED, 0x89F8, 0x89F8, 0x1C4E, 0x8A00, 0x8A00, 0x1721, + 0x8A02, 0x8A02, 0x1A59, 0x8A03, 0x8A03, 0x1413, 0x8A08, 0x8A08, 0x0E8C, + 0x8A0A, 0x8A0A, 0x167A, 0x8A0C, 0x8A0C, 0x1EB5, 0x8A0E, 0x8A0E, 0x1D1C, + 0x8A13, 0x8A13, 0x1F33, 0x8A16, 0x8A16, 0x1F5A, 0x8A17, 0x8A17, 0x1CEE, + 0x8A18, 0x8A18, 0x1012, 0x8A1B, 0x8A1B, 0x17DA, 0x8A1D, 0x8A1D, 0x169B, + 0x8A1F, 0x8A1F, 0x15B5, 0x8A23, 0x8A23, 0x0E45, 0x8A25, 0x8A25, 0x1056, + 0x8A2A, 0x8A2A, 0x1364, 0x8A2D, 0x8A2D, 0x1553, 0x8A31, 0x8A31, 0x1E2A, + 0x8A34, 0x8A34, 0x159A, 0x8A36, 0x8A36, 0x0D83, 0x8A3A, 0x8A3A, 0x1B5E, + 0x8A3B, 0x8A3B, 0x1AEA, 0x8A50, 0x8A50, 0x14AB, 0x8A54, 0x8A54, 0x1AA2, + 0x8A55, 0x8A55, 0x1D6D, 0x8A5B, 0x8A5B, 0x19D4, 0x8A5E, 0x8A5E, 0x14AC, + 0x8A60, 0x8A60, 0x1789, 0x8A62, 0x8A62, 0x161D, 0x8A63, 0x8A63, 0x179B, + 0x8A66, 0x8A66, 0x1653, 0x8A69, 0x8A69, 0x1654, 0x8A6D, 0x8A6D, 0x0F93, + 0x8A6E, 0x8A6E, 0x1A11, 0x8A70, 0x8A70, 0x1F77, 0x8A71, 0x8A71, 0x1EC1, + 0x8A72, 0x8A72, 0x1E12, 0x8A73, 0x8A73, 0x14EE, 0x8A75, 0x8A75, 0x1543, + 0x8A79, 0x8A79, 0x1C11, 0x8A85, 0x8A85, 0x1AEB, 0x8A87, 0x8A87, 0x0EE1, + 0x8A8C, 0x8A8C, 0x1B3B, 0x8A8D, 0x8A8D, 0x1939, 0x8A93, 0x8A93, 0x1516, + 0x8A95, 0x8A95, 0x1CF9, 0x8A98, 0x8A98, 0x18C8, 0x8A9E, 0x8A9E, 0x1714, + 0x8AA0, 0x8AA0, 0x1572, 0x8AA1, 0x8AA1, 0x0E8D, 0x8AA3, 0x8AA3, 0x12DE, + 0x8AA4, 0x8AA4, 0x17BB, 0x8AA5, 0x8AA5, 0x0EB0, 0x8AA6, 0x8AA6, 0x15B6, + 0x8AA8, 0x8AA8, 0x1F0A, 0x8AAA, 0x8AAA, 0x1554, 0x8AB0, 0x8AB0, 0x15EB, + 0x8AB2, 0x8AB2, 0x0EE2, 0x8AB9, 0x8AB9, 0x1460, 0x8ABC, 0x8ABC, 0x190A, + 0x8ABE, 0x8ABE, 0x18E9, 0x8ABF, 0x8ABF, 0x1AA3, 0x8AC2, 0x8AC2, 0x1C12, + 0x8AC4, 0x8AC4, 0x161E, 0x8AC7, 0x8AC7, 0x1087, 0x8ACB, 0x8ACB, 0x1C22, + 0x8ACD, 0x8ACD, 0x19BD, 0x8ACF, 0x8ACF, 0x1C6C, 0x8AD2, 0x8AD2, 0x1155, + 0x8AD6, 0x8AD6, 0x11B7, 0x8ADB, 0x8ADB, 0x18C9, 0x8ADC, 0x8ADC, 0x1C1A, + 0x8AE1, 0x8AE1, 0x1655, 0x8AE6, 0x8AE6, 0x1C2A, 0x8AE7, 0x8AE7, 0x1E13, + 0x8AEA, 0x8AEA, 0x1A5A, 0x8AEB, 0x8AEB, 0x0DAA, 0x8AED, 0x8AED, 0x18CA, + 0x8AEE, 0x8AEE, 0x196A, 0x8AF1, 0x8AF1, 0x1F42, 0x8AF6, 0x8AF6, 0x168A, + 0x8AF7, 0x8AF7, 0x1DA9, 0x8AF8, 0x8AF8, 0x1A76, 0x8AFA, 0x8AFA, 0x1722, + 0x8AFE, 0x8AFE, 0x102B, 0x8B00, 0x8B00, 0x12B1, 0x8B01, 0x8B01, 0x16BA, + 0x8B02, 0x8B02, 0x18A1, 0x8B04, 0x8B04, 0x1113, 0x8B0E, 0x8B0E, 0x1302, + 0x8B10, 0x8B10, 0x1315, 0x8B14, 0x8B14, 0x1DD1, 0x8B16, 0x8B16, 0x15A7, + 0x8B17, 0x8B17, 0x1365, 0x8B19, 0x8B19, 0x0E49, 0x8B1A, 0x8B1A, 0x192A, + 0x8B1B, 0x8B1B, 0x0DE4, 0x8B1D, 0x8B1D, 0x14AD, 0x8B20, 0x8B20, 0x1814, + 0x8B28, 0x8B28, 0x12B2, 0x8B2B, 0x8B2B, 0x19EA, 0x8B2C, 0x8B2C, 0x11ED, + 0x8B33, 0x8B33, 0x0F5F, 0x8B39, 0x8B39, 0x0FC3, 0x8B41, 0x8B41, 0x1EC2, + 0x8B49, 0x8B49, 0x1B1C, 0x8B4E, 0x8B4E, 0x1F4B, 0x8B4F, 0x8B4F, 0x1013, + 0x8B58, 0x8B58, 0x1663, 0x8B5A, 0x8B5A, 0x1088, 0x8B5C, 0x8B5C, 0x13D0, + 0x8B66, 0x8B66, 0x0E71, 0x8B6C, 0x8B6C, 0x1461, 0x8B6F, 0x8B6F, 0x1741, + 0x8B70, 0x8B70, 0x190B, 0x8B74, 0x8B74, 0x0E3D, 0x8B77, 0x8B77, 0x1E9C, + 0x8B7D, 0x8B7D, 0x179C, 0x8B80, 0x8B80, 0x10DE, 0x8B8A, 0x8B8A, 0x13A9, + 0x8B90, 0x8B90, 0x15EC, 0x8B92, 0x8B92, 0x1BB2, 0x8B93, 0x8B93, 0x170A, + 0x8B96, 0x8B96, 0x1BB3, 0x8B9A, 0x8B9A, 0x1BA0, 0x8C37, 0x8C37, 0x0EBC, + 0x8C3F, 0x8C3F, 0x0E8E, 0x8C41, 0x8C41, 0x1EDE, 0x8C46, 0x8C46, 0x1103, + 0x8C48, 0x8C48, 0x1014, 0x8C4A, 0x8C4A, 0x1DAA, 0x8C4C, 0x8C4C, 0x17EA, + 0x8C55, 0x8C55, 0x1656, 0x8C5A, 0x8C5A, 0x10E7, 0x8C61, 0x8C61, 0x14EF, + 0x8C6A, 0x8C6A, 0x1E9D, 0x8C6B, 0x8C6B, 0x179D, 0x8C79, 0x8C79, 0x1DA2, + 0x8C7A, 0x8C7A, 0x1657, 0x8C82, 0x8C82, 0x1C44, 0x8C8A, 0x8C8A, 0x1273, + 0x8C8C, 0x8C8C, 0x12B3, 0x8C9D, 0x8C9D, 0x1D58, 0x8C9E, 0x8C9E, 0x1A5B, + 0x8CA0, 0x8CA0, 0x1414, 0x8CA1, 0x8CA1, 0x19B7, 0x8CA2, 0x8CA2, 0x0ED8, + 0x8CA7, 0x8CA7, 0x1472, 0x8CA8, 0x8CA8, 0x1EC3, 0x8CA9, 0x8CA9, 0x1D47, + 0x8CAA, 0x8CAA, 0x1CFF, 0x8CAB, 0x8CAB, 0x0EF8, 0x8CAC, 0x8CAC, 0x1BD9, + 0x8CAF, 0x8CAF, 0x19D5, 0x8CB0, 0x8CB0, 0x157B, 0x8CB3, 0x8CB3, 0x1921, + 0x8CB4, 0x8CB4, 0x0F98, 0x8CB6, 0x8CB6, 0x1D68, 0x8CB7, 0x8CB7, 0x126E, + 0x8CB8, 0x8CB8, 0x10A7, 0x8CBB, 0x8CBB, 0x1462, 0x8CBC, 0x8CBC, 0x1C1B, + 0x8CBD, 0x8CBD, 0x1920, 0x8CBF, 0x8CBF, 0x12DF, 0x8CC0, 0x8CC0, 0x1DCA, + 0x8CC1, 0x8CC1, 0x1431, 0x8CC2, 0x8CC2, 0x11C3, 0x8CC3, 0x8CC3, 0x194C, + 0x8CC4, 0x8CC4, 0x1F0B, 0x8CC7, 0x8CC7, 0x196B, 0x8CC8, 0x8CC8, 0x0D84, + 0x8CCA, 0x8CCA, 0x19EB, 0x8CD1, 0x8CD1, 0x1B5F, 0x8CD3, 0x8CD3, 0x1473, + 0x8CDA, 0x8CDA, 0x11C4, 0x8CDC, 0x8CDC, 0x14AE, 0x8CDE, 0x8CDE, 0x14F0, + 0x8CE0, 0x8CE0, 0x1378, 0x8CE2, 0x8CE2, 0x1E47, 0x8CE3, 0x8CE3, 0x126F, + 0x8CE4, 0x8CE4, 0x1BF8, 0x8CE6, 0x8CE6, 0x1415, 0x8CEA, 0x8CEA, 0x1B73, + 0x8CED, 0x8CED, 0x10CB, 0x8CF4, 0x8CF4, 0x11C5, 0x8CFB, 0x8CFB, 0x1416, + 0x8CFC, 0x8CFC, 0x0F60, 0x8CFD, 0x8CFD, 0x14F4, 0x8D04, 0x8D04, 0x1B3C, + 0x8D05, 0x8D05, 0x1C93, 0x8D07, 0x8D07, 0x18DD, 0x8D08, 0x8D08, 0x1B1D, + 0x8D0A, 0x8D0A, 0x1BA1, 0x8D0D, 0x8D0D, 0x155C, 0x8D13, 0x8D13, 0x19A6, + 0x8D16, 0x8D16, 0x15A8, 0x8D64, 0x8D64, 0x19EC, 0x8D66, 0x8D66, 0x14AF, + 0x8D6B, 0x8D6B, 0x1E34, 0x8D70, 0x8D70, 0x1AEC, 0x8D73, 0x8D73, 0x0FA6, + 0x8D74, 0x8D74, 0x1417, 0x8D77, 0x8D77, 0x1015, 0x8D85, 0x8D85, 0x1C45, + 0x8D8A, 0x8D8A, 0x188A, 0x8D99, 0x8D99, 0x1AA4, 0x8DA3, 0x8DA3, 0x1C9E, + 0x8DA8, 0x8DA8, 0x1C6D, 0x8DB3, 0x8DB3, 0x1AAE, 0x8DBA, 0x8DBA, 0x1418, + 0x8DBE, 0x8DBE, 0x1B3D, 0x8DC6, 0x8DC6, 0x1D12, 0x8DCB, 0x8DCB, 0x1348, + 0x8DCC, 0x8DCC, 0x1B74, 0x8DCF, 0x8DCF, 0x0D85, 0x8DDB, 0x8DDB, 0x1D40, + 0x8DDD, 0x8DDD, 0x0E0C, 0x8DE1, 0x8DE1, 0x19ED, 0x8DE3, 0x8DE3, 0x1544, + 0x8DE8, 0x8DE8, 0x0EE3, 0x8DEF, 0x8DEF, 0x11AA, 0x8DF3, 0x8DF3, 0x10CC, + 0x8E0A, 0x8E0A, 0x1832, 0x8E0F, 0x8E0F, 0x108D, 0x8E10, 0x8E10, 0x1BF9, + 0x8E1E, 0x8E1E, 0x0E0D, 0x8E2A, 0x8E2A, 0x1AC2, 0x8E30, 0x8E30, 0x18CB, + 0x8E35, 0x8E35, 0x1AC3, 0x8E42, 0x8E42, 0x18CC, 0x8E44, 0x8E44, 0x1A77, + 0x8E47, 0x8E47, 0x0E1A, 0x8E48, 0x8E48, 0x10CD, 0x8E49, 0x8E49, 0x1B8C, + 0x8E4A, 0x8E4A, 0x1E75, 0x8E59, 0x8E59, 0x1C80, 0x8E5F, 0x8E5F, 0x19EE, + 0x8E60, 0x8E60, 0x1BE9, 0x8E74, 0x8E74, 0x1C81, 0x8E76, 0x8E76, 0x0F8E, + 0x8E81, 0x8E81, 0x1AA5, 0x8E87, 0x8E87, 0x19D6, 0x8E8A, 0x8E8A, 0x1AED, + 0x8E8D, 0x8E8D, 0x16F6, 0x8EAA, 0x8EAA, 0x1223, 0x8EAB, 0x8EAB, 0x167B, + 0x8EAC, 0x8EAC, 0x0F80, 0x8EC0, 0x8EC0, 0x0F61, 0x8ECA, 0x8ECA, 0x1B8D, + 0x8ECB, 0x8ECB, 0x16BB, 0x8ECC, 0x8ECC, 0x0F94, 0x8ECD, 0x8ECD, 0x0F75, + 0x8ED2, 0x8ED2, 0x1E2E, 0x8EDF, 0x8EDF, 0x175E, 0x8EEB, 0x8EEB, 0x1B60, + 0x8EF8, 0x8EF8, 0x1C82, 0x8EFB, 0x8EFB, 0x0D86, 0x8EFE, 0x8EFE, 0x1664, + 0x8F03, 0x8F03, 0x0F2F, 0x8F05, 0x8F05, 0x11AB, 0x8F09, 0x8F09, 0x19B8, + 0x8F12, 0x8F12, 0x1C1C, 0x8F13, 0x8F13, 0x124E, 0x8F14, 0x8F14, 0x13D1, + 0x8F15, 0x8F15, 0x0E72, 0x8F1B, 0x8F1B, 0x1156, 0x8F1C, 0x8F1C, 0x1CBC, + 0x8F1D, 0x8F1D, 0x1F43, 0x8F1E, 0x8F1E, 0x1262, 0x8F1F, 0x8F1F, 0x1C06, + 0x8F26, 0x8F26, 0x117A, 0x8F27, 0x8F27, 0x13BF, 0x8F29, 0x8F29, 0x1379, + 0x8F2A, 0x8F2A, 0x11F7, 0x8F2F, 0x8F2F, 0x1B7B, 0x8F33, 0x8F33, 0x1AEE, + 0x8F38, 0x8F38, 0x15ED, 0x8F39, 0x8F39, 0x13DF, 0x8F3B, 0x8F3B, 0x13E0, + 0x8F3E, 0x8F3E, 0x1A12, 0x8F3F, 0x8F3F, 0x1738, 0x8F44, 0x8F44, 0x1DE2, + 0x8F45, 0x8F45, 0x1884, 0x8F49, 0x8F49, 0x1A13, 0x8F4D, 0x8F4D, 0x1C07, + 0x8F4E, 0x8F4E, 0x0F30, 0x8F5D, 0x8F5D, 0x1739, 0x8F5F, 0x8F5F, 0x0F1B, + 0x8F62, 0x8F62, 0x116F, 0x8F9B, 0x8F9B, 0x167C, 0x8F9C, 0x8F9C, 0x0EB1, + 0x8FA3, 0x8FA3, 0x112E, 0x8FA6, 0x8FA6, 0x1D48, 0x8FA8, 0x8FA8, 0x13AA, + 0x8FAD, 0x8FAD, 0x14B0, 0x8FAF, 0x8FAF, 0x13AB, 0x8FB0, 0x8FB0, 0x1B61, + 0x8FB1, 0x8FB1, 0x181D, 0x8FB2, 0x8FB2, 0x1051, 0x8FC2, 0x8FC2, 0x184E, + 0x8FC5, 0x8FC5, 0x167D, 0x8FCE, 0x8FCE, 0x178A, 0x8FD1, 0x8FD1, 0x0FC4, + 0x8FD4, 0x8FD4, 0x133F, 0x8FE6, 0x8FE6, 0x0D87, 0x8FEA, 0x8FEA, 0x19EF, + 0x8FEB, 0x8FEB, 0x1326, 0x8FED, 0x8FED, 0x1B75, 0x8FF0, 0x8FF0, 0x1625, + 0x8FF2, 0x8FF2, 0x0E2A, 0x8FF7, 0x8FF7, 0x1303, 0x8FF9, 0x8FF9, 0x19F0, + 0x8FFD, 0x8FFD, 0x1C6E, 0x9000, 0x9000, 0x1D27, 0x9001, 0x9001, 0x15B7, + 0x9002, 0x9002, 0x0EFE, 0x9003, 0x9003, 0x10CE, 0x9005, 0x9005, 0x1F2A, + 0x9006, 0x9006, 0x1742, 0x9008, 0x9008, 0x1E6B, 0x900B, 0x900B, 0x1D8F, + 0x900D, 0x900D, 0x159B, 0x900F, 0x900F, 0x1D2D, 0x9010, 0x9010, 0x1C83, + 0x9011, 0x9011, 0x0F62, 0x9014, 0x9014, 0x10CF, 0x9015, 0x9015, 0x0E73, + 0x9017, 0x9017, 0x1104, 0x9019, 0x9019, 0x19D7, 0x901A, 0x901A, 0x1D22, + 0x901D, 0x901D, 0x1517, 0x901E, 0x901E, 0x1194, 0x901F, 0x901F, 0x15A9, + 0x9020, 0x9020, 0x1AA6, 0x9021, 0x9021, 0x1B05, 0x9022, 0x9022, 0x13F2, + 0x9023, 0x9023, 0x117B, 0x902E, 0x902E, 0x1C2B, 0x9031, 0x9031, 0x1AEF, + 0x9032, 0x9032, 0x1B62, 0x9035, 0x9035, 0x0FA7, 0x9038, 0x9038, 0x1942, + 0x903C, 0x903C, 0x1DBF, 0x903E, 0x903E, 0x18CE, 0x9041, 0x9041, 0x1109, + 0x9042, 0x9042, 0x15EE, 0x9047, 0x9047, 0x184F, 0x904A, 0x904A, 0x18CD, + 0x904B, 0x904B, 0x1866, 0x904D, 0x904D, 0x1D65, 0x904E, 0x904E, 0x0EE4, + 0x9050, 0x9050, 0x1DCB, 0x9051, 0x9051, 0x1EF5, 0x9053, 0x9053, 0x10D0, + 0x9054, 0x9054, 0x1078, 0x9055, 0x9055, 0x18A2, 0x9059, 0x9059, 0x1815, + 0x905C, 0x905C, 0x15AE, 0x905D, 0x905D, 0x108E, 0x905E, 0x905E, 0x1C2C, + 0x9060, 0x9060, 0x1885, 0x9061, 0x9061, 0x159C, 0x9063, 0x9063, 0x0E3E, + 0x9069, 0x9069, 0x19F1, 0x906D, 0x906D, 0x1AA7, 0x906E, 0x906E, 0x1B8E, + 0x906F, 0x906F, 0x110A, 0x9072, 0x9072, 0x1B3E, 0x9075, 0x9075, 0x1B06, + 0x9077, 0x9077, 0x1BFA, 0x9078, 0x9078, 0x1545, 0x907A, 0x907A, 0x18CF, + 0x907C, 0x907C, 0x11D1, 0x907D, 0x907D, 0x0E0E, 0x907F, 0x907F, 0x1DB2, + 0x9080, 0x9080, 0x1816, 0x9081, 0x9081, 0x1270, 0x9082, 0x9082, 0x1E14, + 0x9083, 0x9083, 0x15EF, 0x9084, 0x9084, 0x1ED8, 0x9087, 0x9087, 0x1922, + 0x9088, 0x9088, 0x123D, 0x908A, 0x908A, 0x13AC, 0x908F, 0x908F, 0x111D, + 0x9091, 0x9091, 0x18F5, 0x9095, 0x9095, 0x17D0, 0x9099, 0x9099, 0x1263, + 0x90A2, 0x90A2, 0x1E6C, 0x90A3, 0x90A3, 0x102A, 0x90A6, 0x90A6, 0x1366, + 0x90A8, 0x90A8, 0x1C52, 0x90AA, 0x90AA, 0x14B1, 0x90AF, 0x90AF, 0x0DC6, + 0x90B0, 0x90B0, 0x1D13, 0x90B1, 0x90B1, 0x0F63, 0x90B5, 0x90B5, 0x159D, + 0x90B8, 0x90B8, 0x19D8, 0x90C1, 0x90C1, 0x185C, 0x90CA, 0x90CA, 0x0F31, + 0x90DE, 0x90DE, 0x1143, 0x90E1, 0x90E1, 0x0F76, 0x90E8, 0x90E8, 0x1419, + 0x90ED, 0x90ED, 0x0EEA, 0x90F5, 0x90F5, 0x1850, 0x90FD, 0x90FD, 0x10D1, + 0x9102, 0x9102, 0x16AA, 0x9112, 0x9112, 0x1C6F, 0x9115, 0x9115, 0x1E22, + 0x9119, 0x9119, 0x1463, 0x9127, 0x9127, 0x1114, 0x912D, 0x912D, 0x1A5C, + 0x9132, 0x9132, 0x1072, 0x9149, 0x9149, 0x18D0, 0x914A, 0x914A, 0x1A5D, + 0x914B, 0x914B, 0x1C70, 0x914C, 0x914C, 0x1977, 0x914D, 0x914D, 0x137A, + 0x914E, 0x914E, 0x1AF0, 0x9152, 0x9152, 0x1AF1, 0x9162, 0x9162, 0x1C46, + 0x9169, 0x9169, 0x1298, 0x916A, 0x916A, 0x1123, 0x916C, 0x916C, 0x15F0, + 0x9175, 0x9175, 0x1F1C, 0x9177, 0x9177, 0x1EA3, 0x9178, 0x9178, 0x14C1, + 0x9187, 0x9187, 0x161F, 0x9189, 0x9189, 0x1C9F, 0x918B, 0x918B, 0x1C47, + 0x918D, 0x918D, 0x1A78, 0x9192, 0x9192, 0x1573, 0x919C, 0x919C, 0x1C71, + 0x91AB, 0x91AB, 0x190C, 0x91AC, 0x91AC, 0x19A7, 0x91AE, 0x91AE, 0x1C48, + 0x91AF, 0x91AF, 0x1E76, 0x91B1, 0x91B1, 0x1349, 0x91B4, 0x91B4, 0x119D, + 0x91B5, 0x91B5, 0x0E00, 0x91C0, 0x91C0, 0x170B, 0x91C7, 0x91C7, 0x1BD4, + 0x91C9, 0x91C9, 0x18D1, 0x91CB, 0x91CB, 0x1528, 0x91CC, 0x91CC, 0x121A, + 0x91CD, 0x91CD, 0x1B0D, 0x91CE, 0x91CE, 0x16EF, 0x91CF, 0x91CF, 0x1157, + 0x91D0, 0x91D0, 0x121B, 0x91D1, 0x91D1, 0x1023, 0x91D7, 0x91D7, 0x15BE, + 0x91D8, 0x91D8, 0x1A5E, 0x91DC, 0x91DC, 0x141A, 0x91DD, 0x91DD, 0x1CCE, + 0x91E3, 0x91E3, 0x1AA8, 0x91E7, 0x91E7, 0x1BFB, 0x91EA, 0x91EA, 0x1851, + 0x91F5, 0x91F5, 0x1BD5, 0x920D, 0x920D, 0x110B, 0x9210, 0x9210, 0x0E26, + 0x9211, 0x9211, 0x1D49, 0x9212, 0x9212, 0x14D1, 0x9217, 0x9217, 0x18DE, + 0x921E, 0x921E, 0x0FAE, 0x9234, 0x9234, 0x1195, 0x923A, 0x923A, 0x17C2, + 0x923F, 0x923F, 0x1A14, 0x9240, 0x9240, 0x0DCE, 0x9245, 0x9245, 0x0E0F, + 0x9249, 0x9249, 0x1E48, 0x9257, 0x9257, 0x0E4A, 0x925B, 0x925B, 0x175F, + 0x925E, 0x925E, 0x188B, 0x9262, 0x9262, 0x134A, 0x9264, 0x9264, 0x0F64, + 0x9265, 0x9265, 0x1626, 0x9266, 0x9266, 0x1A5F, 0x9280, 0x9280, 0x18EA, + 0x9283, 0x9283, 0x1C5C, 0x9285, 0x9285, 0x10FB, 0x9291, 0x9291, 0x1546, + 0x9293, 0x9293, 0x1A15, 0x9296, 0x9296, 0x15F1, 0x9298, 0x9298, 0x1299, + 0x929C, 0x929C, 0x1DEC, 0x92B3, 0x92B3, 0x179E, 0x92B6, 0x92B6, 0x0F65, + 0x92B7, 0x92B7, 0x159E, 0x92B9, 0x92B9, 0x15F2, 0x92CC, 0x92CC, 0x1A60, + 0x92CF, 0x92CF, 0x1E59, 0x92D2, 0x92D2, 0x13F3, 0x92E4, 0x92E4, 0x1518, + 0x92EA, 0x92EA, 0x1D90, 0x92F8, 0x92F8, 0x0E10, 0x92FC, 0x92FC, 0x0DE5, + 0x9304, 0x9304, 0x11B4, 0x9310, 0x9310, 0x1C72, 0x9318, 0x9318, 0x1C73, + 0x931A, 0x931A, 0x19BE, 0x931E, 0x931E, 0x1620, 0x931F, 0x931F, 0x1089, + 0x9320, 0x9320, 0x1A61, 0x9321, 0x9321, 0x1016, 0x9322, 0x9322, 0x1A16, + 0x9324, 0x9324, 0x1017, 0x9326, 0x9326, 0x0FD2, 0x9328, 0x9328, 0x12CB, + 0x932B, 0x932B, 0x1529, 0x932E, 0x932E, 0x0EB2, 0x932F, 0x932F, 0x1B93, + 0x9348, 0x9348, 0x178B, 0x934A, 0x934A, 0x117C, 0x934B, 0x934B, 0x0EE5, + 0x934D, 0x934D, 0x10D2, 0x9354, 0x9354, 0x16AB, 0x935B, 0x935B, 0x1073, + 0x936E, 0x936E, 0x18D2, 0x9375, 0x9375, 0x0E1B, 0x937C, 0x937C, 0x1CCF, + 0x937E, 0x937E, 0x1AC4, 0x938C, 0x938C, 0x0E4B, 0x9394, 0x9394, 0x1833, + 0x9396, 0x9396, 0x15BC, 0x939A, 0x939A, 0x1C74, 0x93A3, 0x93A3, 0x1E6D, + 0x93A7, 0x93A7, 0x0DF9, 0x93AC, 0x93AC, 0x1E9E, 0x93AD, 0x93AD, 0x1B63, + 0x93B0, 0x93B0, 0x1943, 0x93C3, 0x93C3, 0x1AAF, 0x93D1, 0x93D1, 0x19F2, + 0x93DE, 0x93DE, 0x1834, 0x93E1, 0x93E1, 0x0E74, 0x93E4, 0x93E4, 0x11DF, + 0x93F6, 0x93F6, 0x1B7C, 0x9404, 0x9404, 0x1F10, 0x9418, 0x9418, 0x1AC5, + 0x9425, 0x9425, 0x1547, 0x942B, 0x942B, 0x1A17, 0x9435, 0x9435, 0x1C08, + 0x9438, 0x9438, 0x1CEF, 0x9444, 0x9444, 0x1AF2, 0x9451, 0x9452, 0x0DC7, + 0x945B, 0x945B, 0x0F0B, 0x947D, 0x947D, 0x1BA2, 0x947F, 0x947F, 0x1B94, + 0x9577, 0x9577, 0x19A8, 0x9580, 0x9580, 0x12EE, 0x9583, 0x9583, 0x155D, + 0x9589, 0x9589, 0x1D76, 0x958B, 0x958B, 0x0DFA, 0x958F, 0x958F, 0x18DF, + 0x9591, 0x9592, 0x1DDD, 0x9593, 0x9593, 0x0DAB, 0x9594, 0x9594, 0x1312, + 0x9598, 0x9598, 0x0DCF, 0x95A3, 0x95A3, 0x0D93, 0x95A4, 0x95A4, 0x1DF3, + 0x95A5, 0x95A5, 0x1390, 0x95A8, 0x95A8, 0x0FA8, 0x95AD, 0x95AD, 0x1165, + 0x95B1, 0x95B1, 0x1764, 0x95BB, 0x95BB, 0x176C, 0x95BC, 0x95BC, 0x16BC, + 0x95C7, 0x95C7, 0x16C4, 0x95CA, 0x95CA, 0x1EDF, 0x95D4, 0x95D4, 0x1DF4, + 0x95D5, 0x95D5, 0x0F8F, 0x95D6, 0x95D6, 0x1D31, 0x95DC, 0x95DC, 0x0EF9, + 0x95E1, 0x95E1, 0x1BFC, 0x95E2, 0x95E2, 0x13A5, 0x961C, 0x961C, 0x141B, + 0x9621, 0x9621, 0x1BFD, 0x962A, 0x962A, 0x1D4A, 0x962E, 0x962E, 0x17EB, + 0x9632, 0x9632, 0x1367, 0x963B, 0x963B, 0x1AA9, 0x963F, 0x963F, 0x169C, + 0x9640, 0x9640, 0x1CDF, 0x9642, 0x9642, 0x1DB3, 0x9644, 0x9644, 0x141C, + 0x964B, 0x964B, 0x11E0, 0x964C, 0x964C, 0x1274, 0x964D, 0x964D, 0x0DE6, + 0x9650, 0x9650, 0x1DDF, 0x965B, 0x965B, 0x1D77, 0x965C, 0x965C, 0x1DF5, + 0x965D, 0x965D, 0x155E, 0x965E, 0x965E, 0x163B, 0x965F, 0x965F, 0x1BEA, + 0x9662, 0x9662, 0x1886, 0x9663, 0x9663, 0x1B64, 0x9664, 0x9664, 0x1A79, + 0x966A, 0x966A, 0x137B, 0x9670, 0x9670, 0x18F0, 0x9673, 0x9673, 0x1B65, + 0x9675, 0x9675, 0x1204, 0x9676, 0x9676, 0x10D3, 0x9677, 0x9677, 0x1DED, + 0x9678, 0x9678, 0x11F1, 0x967D, 0x967D, 0x170C, 0x9685, 0x9685, 0x1852, + 0x9686, 0x9686, 0x11FB, 0x968A, 0x968A, 0x10A8, 0x968B, 0x968B, 0x15F3, + 0x968D, 0x968D, 0x1EF6, 0x968E, 0x968E, 0x0E8F, 0x9694, 0x9694, 0x0E34, + 0x9695, 0x9695, 0x1867, 0x9698, 0x9698, 0x16D9, 0x9699, 0x9699, 0x0FB6, + 0x969B, 0x969B, 0x1A7A, 0x969C, 0x969C, 0x19A9, 0x96A3, 0x96A3, 0x1224, + 0x96A7, 0x96A8, 0x15F4, 0x96AA, 0x96AA, 0x1E30, 0x96B1, 0x96B1, 0x18EB, + 0x96B7, 0x96B7, 0x119E, 0x96BB, 0x96BB, 0x1BEB, 0x96C0, 0x96C0, 0x1978, + 0x96C1, 0x96C1, 0x16B5, 0x96C4, 0x96C4, 0x186E, 0x96C5, 0x96C5, 0x169D, + 0x96C6, 0x96C6, 0x1B7D, 0x96C7, 0x96C7, 0x0EB3, 0x96C9, 0x96C9, 0x1CBD, + 0x96CB, 0x96CB, 0x1B07, 0x96CC, 0x96CC, 0x196C, 0x96CD, 0x96CD, 0x17D1, + 0x96CE, 0x96CE, 0x19D9, 0x96D5, 0x96D5, 0x1AAA, 0x96D6, 0x96D6, 0x15F6, + 0x96D9, 0x96D9, 0x168D, 0x96DB, 0x96DB, 0x1C75, 0x96DC, 0x96DC, 0x1985, + 0x96E2, 0x96E2, 0x121C, 0x96E3, 0x96E3, 0x102E, 0x96E8, 0x96E9, 0x1853, + 0x96EA, 0x96EA, 0x1555, 0x96EF, 0x96EF, 0x12EF, 0x96F0, 0x96F0, 0x1432, + 0x96F2, 0x96F2, 0x1868, 0x96F6, 0x96F6, 0x1196, 0x96F7, 0x96F7, 0x11C6, + 0x96F9, 0x96F9, 0x1327, 0x96FB, 0x96FB, 0x1A18, 0x9700, 0x9700, 0x15F7, + 0x9706, 0x9706, 0x1A62, 0x9707, 0x9707, 0x1B66, 0x9711, 0x9711, 0x1A2A, + 0x9713, 0x9713, 0x179F, 0x9716, 0x9716, 0x122B, 0x9719, 0x9719, 0x178C, + 0x971C, 0x971C, 0x14F1, 0x971E, 0x971E, 0x1DCC, 0x9727, 0x9727, 0x12E0, + 0x9730, 0x9730, 0x14C2, 0x9732, 0x9732, 0x11AC, 0x9739, 0x9739, 0x13A6, + 0x973D, 0x973D, 0x1A7B, 0x9742, 0x9742, 0x1170, 0x9744, 0x9744, 0x16DA, + 0x9748, 0x9748, 0x1197, 0x9751, 0x9751, 0x1C23, 0x9756, 0x9756, 0x1A63, + 0x975C, 0x975C, 0x1A64, 0x975E, 0x975E, 0x1464, 0x9761, 0x9761, 0x1304, + 0x9762, 0x9762, 0x1288, 0x9769, 0x9769, 0x1E35, 0x976D, 0x976D, 0x193A, + 0x9774, 0x9774, 0x1EC4, 0x9777, 0x9777, 0x193B, 0x977A, 0x977A, 0x1257, + 0x978B, 0x978B, 0x1E77, 0x978D, 0x978D, 0x16B6, 0x978F, 0x978F, 0x0ED9, + 0x97A0, 0x97A0, 0x0F6E, 0x97A8, 0x97A8, 0x0DB5, 0x97AB, 0x97AB, 0x0F6F, + 0x97AD, 0x97AD, 0x1D66, 0x97C6, 0x97C6, 0x1BFE, 0x97CB, 0x97CB, 0x18A3, + 0x97D3, 0x97D3, 0x1DE0, 0x97DC, 0x97DC, 0x10D4, 0x97F3, 0x97F3, 0x18F1, + 0x97F6, 0x97F6, 0x159F, 0x97FB, 0x97FB, 0x1869, 0x97FF, 0x97FF, 0x1E23, + 0x9800, 0x9800, 0x1E9F, 0x9801, 0x9801, 0x1E4D, 0x9802, 0x9802, 0x1A65, + 0x9803, 0x9803, 0x0E75, 0x9805, 0x9805, 0x1E04, 0x9806, 0x9806, 0x1621, + 0x9808, 0x9808, 0x15F8, 0x980A, 0x980A, 0x185D, 0x980C, 0x980C, 0x15B8, + 0x9810, 0x9810, 0x17A0, 0x9811, 0x9811, 0x17EC, 0x9812, 0x9812, 0x1340, + 0x9813, 0x9813, 0x10E8, 0x9817, 0x9817, 0x1D41, 0x9818, 0x9818, 0x1198, + 0x982D, 0x982D, 0x1105, 0x9830, 0x9830, 0x1E5A, 0x9838, 0x9838, 0x0E76, + 0x9839, 0x9839, 0x1D28, 0x983B, 0x983B, 0x1474, 0x9846, 0x9846, 0x0EE6, + 0x984C, 0x984C, 0x1A7C, 0x984D, 0x984D, 0x16E1, 0x984E, 0x984E, 0x16AC, + 0x9854, 0x9854, 0x16B7, 0x9858, 0x9858, 0x1887, 0x985A, 0x985A, 0x1A19, + 0x985E, 0x985E, 0x11EE, 0x9865, 0x9865, 0x1EA0, 0x9867, 0x9867, 0x0EB4, + 0x986B, 0x986B, 0x1A1A, 0x986F, 0x986F, 0x1E49, 0x98A8, 0x98A8, 0x1DAB, + 0x98AF, 0x98AF, 0x14D2, 0x98B1, 0x98B1, 0x1D14, 0x98C4, 0x98C4, 0x1DA4, + 0x98C7, 0x98C7, 0x1DA3, 0x98DB, 0x98DB, 0x1465, 0x98DC, 0x98DC, 0x138C, + 0x98DF, 0x98DF, 0x1665, 0x98E1, 0x98E1, 0x15AF, 0x98E2, 0x98E2, 0x1018, + 0x98ED, 0x98ED, 0x1CC2, 0x98EE, 0x98EE, 0x18F2, 0x98EF, 0x98EF, 0x1341, + 0x98F4, 0x98F4, 0x1923, 0x98FC, 0x98FC, 0x14B2, 0x98FD, 0x98FD, 0x1D91, + 0x98FE, 0x98FE, 0x1666, 0x9903, 0x9903, 0x0F32, 0x9909, 0x9909, 0x1E24, + 0x990A, 0x990A, 0x170D, 0x990C, 0x990C, 0x1924, 0x9910, 0x9910, 0x1BA3, + 0x9913, 0x9913, 0x169E, 0x9918, 0x9918, 0x173A, 0x991E, 0x991E, 0x1A1B, + 0x9920, 0x9920, 0x13C0, 0x9928, 0x9928, 0x0EFA, 0x9945, 0x9945, 0x124F, + 0x9949, 0x9949, 0x0FC5, 0x994B, 0x994B, 0x0F95, 0x994C, 0x994C, 0x1BA4, + 0x994D, 0x994D, 0x1548, 0x9951, 0x9951, 0x1019, 0x9952, 0x9952, 0x1817, + 0x9954, 0x9954, 0x17D2, 0x9957, 0x9957, 0x1E25, 0x9996, 0x9996, 0x15F9, + 0x9999, 0x9999, 0x1E26, 0x999D, 0x999D, 0x1DBD, 0x99A5, 0x99A5, 0x13E1, + 0x99A8, 0x99A8, 0x1E6E, 0x99AC, 0x99AC, 0x1235, 0x99AD, 0x99AD, 0x1715, + 0x99AE, 0x99AE, 0x1DAC, 0x99B1, 0x99B1, 0x1CE0, 0x99B3, 0x99B3, 0x1CBE, + 0x99B4, 0x99B4, 0x1622, 0x99B9, 0x99B9, 0x1944, 0x99C1, 0x99C1, 0x1328, + 0x99D0, 0x99D0, 0x1AF3, 0x99D1, 0x99D1, 0x104E, 0x99D2, 0x99D2, 0x0F66, + 0x99D5, 0x99D5, 0x0D88, 0x99D9, 0x99D9, 0x141D, 0x99DD, 0x99DD, 0x1CE1, + 0x99DF, 0x99DF, 0x14B3, 0x99ED, 0x99ED, 0x1E15, 0x99F1, 0x99F1, 0x1124, + 0x99FF, 0x99FF, 0x1B08, 0x9A01, 0x9A01, 0x1478, 0x9A08, 0x9A08, 0x13C1, + 0x9A0E, 0x9A0F, 0x101A, 0x9A19, 0x9A19, 0x1D67, 0x9A2B, 0x9A2B, 0x0E1C, + 0x9A30, 0x9A30, 0x1115, 0x9A36, 0x9A36, 0x1C76, 0x9A37, 0x9A37, 0x15A0, + 0x9A40, 0x9A40, 0x1275, 0x9A43, 0x9A43, 0x1DA5, 0x9A45, 0x9A45, 0x0F67, + 0x9A4D, 0x9A4D, 0x1F1D, 0x9A55, 0x9A55, 0x0F33, 0x9A57, 0x9A57, 0x1E31, + 0x9A5A, 0x9A5A, 0x0E77, 0x9A5B, 0x9A5B, 0x1743, 0x9A5F, 0x9A5F, 0x1CA0, + 0x9A62, 0x9A62, 0x1166, 0x9A65, 0x9A65, 0x101C, 0x9A69, 0x9A69, 0x1ED9, + 0x9A6A, 0x9A6A, 0x1167, 0x9AA8, 0x9AA8, 0x0EC9, 0x9AB8, 0x9AB8, 0x1E16, + 0x9AD3, 0x9AD3, 0x15FA, 0x9AD4, 0x9AD4, 0x1C2D, 0x9AD8, 0x9AD8, 0x0EB5, + 0x9AE5, 0x9AE5, 0x176D, 0x9AEE, 0x9AEE, 0x134B, 0x9B1A, 0x9B1A, 0x15FB, + 0x9B27, 0x9B27, 0x11D2, 0x9B2A, 0x9B2A, 0x1D2E, 0x9B31, 0x9B31, 0x186B, + 0x9B3C, 0x9B3C, 0x0F99, 0x9B41, 0x9B41, 0x0F17, 0x9B42, 0x9B42, 0x1EA9, + 0x9B43, 0x9B43, 0x134C, 0x9B44, 0x9B44, 0x1383, 0x9B45, 0x9B45, 0x1271, + 0x9B4F, 0x9B4F, 0x18A4, 0x9B54, 0x9B54, 0x1236, 0x9B5A, 0x9B5A, 0x1716, + 0x9B6F, 0x9B6F, 0x11AD, 0x9B8E, 0x9B8E, 0x1A2B, 0x9B91, 0x9B91, 0x1D92, + 0x9B9F, 0x9B9F, 0x16B8, 0x9BAB, 0x9BAB, 0x0F34, 0x9BAE, 0x9BAE, 0x1549, + 0x9BC9, 0x9BC9, 0x121D, 0x9BD6, 0x9BD6, 0x1C24, 0x9BE4, 0x9BE4, 0x0EC7, + 0x9BE8, 0x9BE8, 0x0E78, 0x9C0D, 0x9C0D, 0x1C77, 0x9C10, 0x9C10, 0x16AD, + 0x9C12, 0x9C12, 0x13E2, 0x9C15, 0x9C15, 0x1DCD, 0x9C25, 0x9C25, 0x1EDA, + 0x9C32, 0x9C32, 0x17BC, 0x9C3B, 0x9C3B, 0x1250, 0x9C47, 0x9C47, 0x0DE7, + 0x9C49, 0x9C49, 0x13AF, 0x9C57, 0x9C57, 0x1225, 0x9CE5, 0x9CE5, 0x1AAB, + 0x9CE7, 0x9CE7, 0x141E, 0x9CE9, 0x9CE9, 0x0F68, 0x9CF3, 0x9CF3, 0x13F4, + 0x9CF4, 0x9CF4, 0x129A, 0x9CF6, 0x9CF6, 0x1760, 0x9D09, 0x9D09, 0x169F, + 0x9D1B, 0x9D1B, 0x1888, 0x9D26, 0x9D26, 0x16CF, 0x9D28, 0x9D28, 0x16C8, + 0x9D3B, 0x9D3B, 0x1EB6, 0x9D51, 0x9D51, 0x0E3F, 0x9D5D, 0x9D5D, 0x16A0, + 0x9D60, 0x9D60, 0x0EBD, 0x9D61, 0x9D61, 0x12E1, 0x9D6C, 0x9D6C, 0x143C, + 0x9D72, 0x9D72, 0x1979, 0x9DA9, 0x9DA9, 0x12BA, 0x9DAF, 0x9DAF, 0x16E4, + 0x9DB4, 0x9DB4, 0x1DD2, 0x9DC4, 0x9DC4, 0x0E90, 0x9DD7, 0x9DD7, 0x0F69, + 0x9DF2, 0x9DF2, 0x1CA1, 0x9DF8, 0x9DF8, 0x1F4C, 0x9DF9, 0x9DF9, 0x18F9, + 0x9DFA, 0x9DFA, 0x11AE, 0x9E1A, 0x9E1A, 0x16E5, 0x9E1E, 0x9E1E, 0x112C, + 0x9E75, 0x9E75, 0x11AF, 0x9E79, 0x9E79, 0x1DEE, 0x9E7D, 0x9E7D, 0x176E, + 0x9E7F, 0x9E7F, 0x11B5, 0x9E92, 0x9E92, 0x101D, 0x9E93, 0x9E93, 0x11B6, + 0x9E97, 0x9E97, 0x1168, 0x9E9D, 0x9E9D, 0x14B4, 0x9E9F, 0x9E9F, 0x1226, + 0x9EA5, 0x9EA5, 0x1276, 0x9EB4, 0x9EB4, 0x0F70, 0x9EB5, 0x9EB5, 0x1289, + 0x9EBB, 0x9EBB, 0x1237, 0x9EBE, 0x9EBE, 0x1F44, 0x9EC3, 0x9EC3, 0x1EF7, + 0x9ECD, 0x9ECD, 0x1519, 0x9ECE, 0x9ECE, 0x1169, 0x9ED1, 0x9ED1, 0x1F52, + 0x9ED4, 0x9ED4, 0x0E27, 0x9ED8, 0x9ED8, 0x12E3, 0x9EDB, 0x9EDB, 0x10A9, + 0x9EDC, 0x9EDC, 0x1C89, 0x9EDE, 0x9EDE, 0x1A2C, 0x9EE8, 0x9EE8, 0x1099, + 0x9EF4, 0x9EF4, 0x1305, 0x9F07, 0x9F07, 0x17BD, 0x9F08, 0x9F08, 0x13B0, + 0x9F0E, 0x9F0E, 0x1A66, 0x9F13, 0x9F13, 0x0EB6, 0x9F20, 0x9F20, 0x151A, + 0x9F3B, 0x9F3B, 0x1466, 0x9F4A, 0x9F4A, 0x1A7D, 0x9F4B, 0x9F4B, 0x19B9, + 0x9F4E, 0x9F4E, 0x19BA, 0x9F52, 0x9F52, 0x1CBF, 0x9F5F, 0x9F5F, 0x19DA, + 0x9F61, 0x9F61, 0x1199, 0x9F67, 0x9F67, 0x1556, 0x9F6A, 0x9F6A, 0x1B95, + 0x9F6C, 0x9F6C, 0x1717, 0x9F77, 0x9F77, 0x16AE, 0x9F8D, 0x9F8D, 0x11D3, + 0x9F90, 0x9F90, 0x1368, 0x9F95, 0x9F95, 0x0DC9, 0x9F9C, 0x9F9C, 0x0F6A, + 0xAC00, 0xAC01, 0x043E, 0xAC02, 0xAC03, 0x2475, 0xAC04, 0xAC04, 0x0440, + 0xAC05, 0xAC06, 0x2477, 0xAC07, 0xAC0A, 0x0441, 0xAC0B, 0xAC0F, 0x2479, + 0xAC10, 0xAC17, 0x0445, 0xAC18, 0xAC18, 0x247E, 0xAC19, 0xAC1D, 0x044D, + 0xAC1E, 0xAC1F, 0x247F, 0xAC20, 0xAC20, 0x0452, 0xAC21, 0xAC23, 0x2481, + 0xAC24, 0xAC24, 0x0453, 0xAC25, 0xAC2B, 0x2484, 0xAC2C, 0xAC2D, 0x0454, + 0xAC2E, 0xAC2E, 0x248B, 0xAC2F, 0xAC31, 0x0456, 0xAC32, 0xAC37, 0x248C, + 0xAC38, 0xAC39, 0x0459, 0xAC3A, 0xAC3B, 0x2492, 0xAC3C, 0xAC3C, 0x045B, + 0xAC3D, 0xAC3F, 0x2494, 0xAC40, 0xAC40, 0x045C, 0xAC41, 0xAC4A, 0x2497, + 0xAC4B, 0xAC4B, 0x045D, 0xAC4C, 0xAC4C, 0x24A1, 0xAC4D, 0xAC4D, 0x045E, + 0xAC4E, 0xAC53, 0x24A2, 0xAC54, 0xAC54, 0x045F, 0xAC55, 0xAC57, 0x24A8, + 0xAC58, 0xAC58, 0x0460, 0xAC59, 0xAC5B, 0x24AB, 0xAC5C, 0xAC5C, 0x0461, + 0xAC5D, 0xAC6F, 0x24AE, 0xAC70, 0xAC71, 0x0462, 0xAC72, 0xAC73, 0x24C1, + 0xAC74, 0xAC74, 0x0464, 0xAC75, 0xAC76, 0x24C3, 0xAC77, 0xAC78, 0x0465, + 0xAC79, 0xAC79, 0x24C5, 0xAC7A, 0xAC7A, 0x0467, 0xAC7B, 0xAC7F, 0x24C6, + 0xAC80, 0xAC81, 0x0468, 0xAC82, 0xAC82, 0x24CB, 0xAC83, 0xAC86, 0x046A, + 0xAC87, 0xAC88, 0x24CC, 0xAC89, 0xAC8C, 0x046E, 0xAC8D, 0xAC8F, 0x24CE, + 0xAC90, 0xAC90, 0x0472, 0xAC91, 0xAC93, 0x24D1, 0xAC94, 0xAC94, 0x0473, + 0xAC95, 0xAC9B, 0x24D4, 0xAC9C, 0xAC9D, 0x0474, 0xAC9E, 0xAC9E, 0x24DB, + 0xAC9F, 0xACA1, 0x0476, 0xACA2, 0xACA7, 0x24DC, 0xACA8, 0xACAA, 0x0479, + 0xACAB, 0xACAB, 0x24E2, 0xACAC, 0xACAC, 0x047C, 0xACAD, 0xACAE, 0x24E3, + 0xACAF, 0xACB0, 0x047D, 0xACB1, 0xACB7, 0x24E5, 0xACB8, 0xACB9, 0x047F, + 0xACBA, 0xACBA, 0x24EC, 0xACBB, 0xACBD, 0x0481, 0xACBE, 0xACC0, 0x24ED, + 0xACC1, 0xACC1, 0x0484, 0xACC2, 0xACC3, 0x24F0, 0xACC4, 0xACC4, 0x0485, + 0xACC5, 0xACC7, 0x24F2, 0xACC8, 0xACC8, 0x0486, 0xACC9, 0xACCB, 0x24F5, + 0xACCC, 0xACCC, 0x0487, 0xACCD, 0xACD4, 0x24F8, 0xACD5, 0xACD5, 0x0488, + 0xACD6, 0xACD6, 0x2500, 0xACD7, 0xACD7, 0x0489, 0xACD8, 0xACDF, 0x2501, + 0xACE0, 0xACE1, 0x048A, 0xACE2, 0xACE3, 0x2509, 0xACE4, 0xACE4, 0x048C, + 0xACE5, 0xACE6, 0x250B, 0xACE7, 0xACE8, 0x048D, 0xACE9, 0xACE9, 0x250D, + 0xACEA, 0xACEA, 0x048F, 0xACEB, 0xACEB, 0x250E, 0xACEC, 0xACEC, 0x0490, + 0xACED, 0xACEE, 0x250F, 0xACEF, 0xACF1, 0x0491, 0xACF2, 0xACF2, 0x2511, + 0xACF3, 0xACF3, 0x0494, 0xACF4, 0xACF4, 0x2512, 0xACF5, 0xACF6, 0x0495, + 0xACF7, 0xACFB, 0x2513, 0xACFC, 0xACFD, 0x0497, 0xACFE, 0xACFF, 0x2518, + 0xAD00, 0xAD00, 0x0499, 0xAD01, 0xAD03, 0x251A, 0xAD04, 0xAD04, 0x049A, + 0xAD05, 0xAD05, 0x251D, 0xAD06, 0xAD06, 0x049B, 0xAD07, 0xAD0B, 0x251E, + 0xAD0C, 0xAD0D, 0x049C, 0xAD0E, 0xAD0E, 0x2523, 0xAD0F, 0xAD0F, 0x049E, + 0xAD10, 0xAD10, 0x2524, 0xAD11, 0xAD11, 0x049F, 0xAD12, 0xAD17, 0x2525, + 0xAD18, 0xAD18, 0x04A0, 0xAD19, 0xAD1B, 0x252B, 0xAD1C, 0xAD1C, 0x04A1, + 0xAD1D, 0xAD1F, 0x252E, 0xAD20, 0xAD20, 0x04A2, 0xAD21, 0xAD28, 0x2531, + 0xAD29, 0xAD29, 0x04A3, 0xAD2A, 0xAD2B, 0x2539, 0xAD2C, 0xAD2D, 0x04A4, + 0xAD2E, 0xAD33, 0x253B, 0xAD34, 0xAD35, 0x04A6, 0xAD36, 0xAD37, 0x2541, + 0xAD38, 0xAD38, 0x04A8, 0xAD39, 0xAD3B, 0x2543, 0xAD3C, 0xAD3C, 0x04A9, + 0xAD3D, 0xAD43, 0x2546, 0xAD44, 0xAD45, 0x04AA, 0xAD46, 0xAD46, 0x254D, + 0xAD47, 0xAD47, 0x04AC, 0xAD48, 0xAD48, 0x254E, 0xAD49, 0xAD49, 0x04AD, + 0xAD4A, 0xAD4F, 0x254F, 0xAD50, 0xAD50, 0x04AE, 0xAD51, 0xAD53, 0x2555, + 0xAD54, 0xAD54, 0x04AF, 0xAD55, 0xAD57, 0x2558, 0xAD58, 0xAD58, 0x04B0, + 0xAD59, 0xAD60, 0x255B, 0xAD61, 0xAD61, 0x04B1, 0xAD62, 0xAD62, 0x2563, + 0xAD63, 0xAD63, 0x04B2, 0xAD64, 0xAD6B, 0x2564, 0xAD6C, 0xAD6D, 0x04B3, + 0xAD6E, 0xAD6F, 0x256C, 0xAD70, 0xAD70, 0x04B5, 0xAD71, 0xAD72, 0x256E, + 0xAD73, 0xAD76, 0x04B6, 0xAD77, 0xAD7A, 0x2570, 0xAD7B, 0xAD7D, 0x04BA, + 0xAD7E, 0xAD7E, 0x2574, 0xAD7F, 0xAD7F, 0x04BD, 0xAD80, 0xAD80, 0x2575, + 0xAD81, 0xAD82, 0x04BE, 0xAD83, 0xAD87, 0x2576, 0xAD88, 0xAD89, 0x04C0, + 0xAD8A, 0xAD8B, 0x257B, 0xAD8C, 0xAD8C, 0x04C2, 0xAD8D, 0xAD8F, 0x257D, + 0xAD90, 0xAD90, 0x04C3, 0xAD91, 0xAD9B, 0x2580, 0xAD9C, 0xAD9D, 0x04C4, + 0xAD9E, 0xADA3, 0x258B, 0xADA4, 0xADA4, 0x04C6, 0xADA5, 0xADB6, 0x2591, + 0xADB7, 0xADB7, 0x04C7, 0xADB8, 0xADBF, 0x25A3, 0xADC0, 0xADC1, 0x04C8, + 0xADC2, 0xADC3, 0x25AB, 0xADC4, 0xADC4, 0x04CA, 0xADC5, 0xADC7, 0x25AD, + 0xADC8, 0xADC8, 0x04CB, 0xADC9, 0xADCF, 0x25B0, 0xADD0, 0xADD1, 0x04CC, + 0xADD2, 0xADD2, 0x25B7, 0xADD3, 0xADD3, 0x04CE, 0xADD4, 0xADDB, 0x25B8, + 0xADDC, 0xADDC, 0x04CF, 0xADDD, 0xADDF, 0x25C0, 0xADE0, 0xADE0, 0x04D0, + 0xADE1, 0xADE3, 0x25C3, 0xADE4, 0xADE4, 0x04D1, 0xADE5, 0xADF7, 0x25C6, + 0xADF8, 0xADF9, 0x04D2, 0xADFA, 0xADFB, 0x25D9, 0xADFC, 0xADFC, 0x04D4, + 0xADFD, 0xADFE, 0x25DB, 0xADFF, 0xADFF, 0x04D5, 0xAE00, 0xAE01, 0x04D6, + 0xAE02, 0xAE07, 0x25DD, 0xAE08, 0xAE09, 0x04D8, 0xAE0A, 0xAE0A, 0x25E3, + 0xAE0B, 0xAE0B, 0x04DA, 0xAE0C, 0xAE0C, 0x25E4, 0xAE0D, 0xAE0D, 0x04DB, + 0xAE0E, 0xAE13, 0x25E5, 0xAE14, 0xAE14, 0x04DC, 0xAE15, 0xAE2F, 0x25EB, + 0xAE30, 0xAE31, 0x04DD, 0xAE32, 0xAE33, 0x2606, 0xAE34, 0xAE34, 0x04DF, + 0xAE35, 0xAE36, 0x2608, 0xAE37, 0xAE38, 0x04E0, 0xAE39, 0xAE39, 0x260A, + 0xAE3A, 0xAE3A, 0x04E2, 0xAE3B, 0xAE3F, 0x260B, 0xAE40, 0xAE41, 0x04E3, + 0xAE42, 0xAE42, 0x2610, 0xAE43, 0xAE43, 0x04E5, 0xAE44, 0xAE44, 0x2611, + 0xAE45, 0xAE46, 0x04E6, 0xAE47, 0xAE49, 0x2612, 0xAE4A, 0xAE4A, 0x04E8, + 0xAE4B, 0xAE4B, 0x2615, 0xAE4C, 0xAE4E, 0x04E9, 0xAE4F, 0xAE4F, 0x2616, + 0xAE50, 0xAE50, 0x04EC, 0xAE51, 0xAE53, 0x2617, 0xAE54, 0xAE54, 0x04ED, + 0xAE55, 0xAE55, 0x261A, 0xAE56, 0xAE56, 0x04EE, 0xAE57, 0xAE5B, 0x261B, + 0xAE5C, 0xAE5D, 0x04EF, 0xAE5E, 0xAE5E, 0x2620, 0xAE5F, 0xAE61, 0x04F1, + 0xAE62, 0xAE64, 0x2621, 0xAE65, 0xAE65, 0x04F4, 0xAE66, 0xAE67, 0x2624, + 0xAE68, 0xAE69, 0x04F5, 0xAE6A, 0xAE6B, 0x2626, 0xAE6C, 0xAE6C, 0x04F7, + 0xAE6D, 0xAE6F, 0x2628, 0xAE70, 0xAE70, 0x04F8, 0xAE71, 0xAE77, 0x262B, + 0xAE78, 0xAE79, 0x04F9, 0xAE7A, 0xAE7A, 0x2632, 0xAE7B, 0xAE7D, 0x04FB, + 0xAE7E, 0xAE83, 0x2633, 0xAE84, 0xAE85, 0x04FE, 0xAE86, 0xAE8B, 0x2639, + 0xAE8C, 0xAE8C, 0x0500, 0xAE8D, 0xAEBB, 0x263F, 0xAEBC, 0xAEBE, 0x0501, + 0xAEBF, 0xAEBF, 0x266E, 0xAEC0, 0xAEC0, 0x0504, 0xAEC1, 0xAEC3, 0x266F, + 0xAEC4, 0xAEC4, 0x0505, 0xAEC5, 0xAECB, 0x2672, 0xAECC, 0xAECD, 0x0506, + 0xAECE, 0xAECE, 0x2679, 0xAECF, 0xAED1, 0x0508, 0xAED2, 0xAED7, 0x267A, + 0xAED8, 0xAED9, 0x050B, 0xAEDA, 0xAEDB, 0x2680, 0xAEDC, 0xAEDC, 0x050D, + 0xAEDD, 0xAEE7, 0x2682, 0xAEE8, 0xAEE8, 0x050E, 0xAEE9, 0xAEEA, 0x268D, + 0xAEEB, 0xAEEB, 0x050F, 0xAEEC, 0xAEEC, 0x268F, 0xAEED, 0xAEED, 0x0510, + 0xAEEE, 0xAEF3, 0x2690, 0xAEF4, 0xAEF4, 0x0511, 0xAEF5, 0xAEF7, 0x2696, + 0xAEF8, 0xAEF8, 0x0512, 0xAEF9, 0xAEFB, 0x2699, 0xAEFC, 0xAEFC, 0x0513, + 0xAEFD, 0xAEFF, 0x269C, 0xAF00, 0xAF06, 0x269F, 0xAF07, 0xAF08, 0x0514, + 0xAF09, 0xAF0C, 0x26A6, 0xAF0D, 0xAF0D, 0x0516, 0xAF0E, 0xAF0F, 0x26AA, + 0xAF10, 0xAF10, 0x0517, 0xAF11, 0xAF2B, 0x26AC, 0xAF2C, 0xAF2D, 0x0518, + 0xAF2E, 0xAF2F, 0x26C7, 0xAF30, 0xAF30, 0x051A, 0xAF31, 0xAF31, 0x26C9, + 0xAF32, 0xAF32, 0x051B, 0xAF33, 0xAF33, 0x26CA, 0xAF34, 0xAF34, 0x051C, + 0xAF35, 0xAF3B, 0x26CB, 0xAF3C, 0xAF3D, 0x051D, 0xAF3E, 0xAF3E, 0x26D2, + 0xAF3F, 0xAF3F, 0x051F, 0xAF40, 0xAF40, 0x26D3, 0xAF41, 0xAF43, 0x0520, + 0xAF44, 0xAF47, 0x26D4, 0xAF48, 0xAF49, 0x0523, 0xAF4A, 0xAF4F, 0x26D8, + 0xAF50, 0xAF50, 0x0525, 0xAF51, 0xAF5B, 0x26DE, 0xAF5C, 0xAF5D, 0x0526, + 0xAF5E, 0xAF63, 0x26E9, 0xAF64, 0xAF65, 0x0528, 0xAF66, 0xAF78, 0x26EF, + 0xAF79, 0xAF79, 0x052A, 0xAF7A, 0xAF7F, 0x2702, 0xAF80, 0xAF80, 0x052B, + 0xAF81, 0xAF83, 0x2708, 0xAF84, 0xAF84, 0x052C, 0xAF85, 0xAF87, 0x270B, + 0xAF88, 0xAF88, 0x052D, 0xAF89, 0xAF8F, 0x270E, 0xAF90, 0xAF91, 0x052E, + 0xAF92, 0xAF94, 0x2715, 0xAF95, 0xAF95, 0x0530, 0xAF96, 0xAF9B, 0x2718, + 0xAF9C, 0xAF9C, 0x0531, 0xAF9D, 0xAFB7, 0x271E, 0xAFB8, 0xAFB9, 0x0532, + 0xAFBA, 0xAFBB, 0x2739, 0xAFBC, 0xAFBC, 0x0534, 0xAFBD, 0xAFBF, 0x273B, + 0xAFC0, 0xAFC0, 0x0535, 0xAFC1, 0xAFC6, 0x273E, 0xAFC7, 0xAFC9, 0x0536, + 0xAFCA, 0xAFCA, 0x2744, 0xAFCB, 0xAFCB, 0x0539, 0xAFCC, 0xAFCC, 0x2745, + 0xAFCD, 0xAFCE, 0x053A, 0xAFCF, 0xAFD3, 0x2746, 0xAFD4, 0xAFD4, 0x053C, + 0xAFD5, 0xAFDB, 0x274B, 0xAFDC, 0xAFDC, 0x053D, 0xAFDD, 0xAFE7, 0x2752, + 0xAFE8, 0xAFE9, 0x053E, 0xAFEA, 0xAFEF, 0x275D, 0xAFF0, 0xAFF1, 0x0540, + 0xAFF2, 0xAFF3, 0x2763, 0xAFF4, 0xAFF4, 0x0542, 0xAFF5, 0xAFF7, 0x2765, + 0xAFF8, 0xAFF8, 0x0543, 0xAFF9, 0xAFFF, 0x2768, 0xB000, 0xB001, 0x0544, + 0xB002, 0xB003, 0x276F, 0xB004, 0xB004, 0x0546, 0xB005, 0xB00B, 0x2771, + 0xB00C, 0xB00C, 0x0547, 0xB00D, 0xB00F, 0x2778, 0xB010, 0xB010, 0x0548, + 0xB011, 0xB013, 0x277B, 0xB014, 0xB014, 0x0549, 0xB015, 0xB01B, 0x277E, + 0xB01C, 0xB01D, 0x054A, 0xB01E, 0xB027, 0x2785, 0xB028, 0xB028, 0x054C, + 0xB029, 0xB043, 0x278F, 0xB044, 0xB045, 0x054D, 0xB046, 0xB047, 0x27AA, + 0xB048, 0xB048, 0x054F, 0xB049, 0xB049, 0x27AC, 0xB04A, 0xB04A, 0x0550, + 0xB04B, 0xB04B, 0x27AD, 0xB04C, 0xB04C, 0x0551, 0xB04D, 0xB04D, 0x27AE, + 0xB04E, 0xB04E, 0x0552, 0xB04F, 0xB052, 0x27AF, 0xB053, 0xB055, 0x0553, + 0xB056, 0xB056, 0x27B3, 0xB057, 0xB057, 0x0556, 0xB058, 0xB058, 0x27B4, + 0xB059, 0xB059, 0x0557, 0xB05A, 0xB05C, 0x27B5, 0xB05D, 0xB05D, 0x0558, + 0xB05E, 0xB07B, 0x27B8, 0xB07C, 0xB07D, 0x0559, 0xB07E, 0xB07F, 0x27D6, + 0xB080, 0xB080, 0x055B, 0xB081, 0xB083, 0x27D8, 0xB084, 0xB084, 0x055C, + 0xB085, 0xB08B, 0x27DB, 0xB08C, 0xB08D, 0x055D, 0xB08E, 0xB08E, 0x27E2, + 0xB08F, 0xB08F, 0x055F, 0xB090, 0xB090, 0x27E3, 0xB091, 0xB091, 0x0560, + 0xB092, 0xB097, 0x27E4, 0xB098, 0xB09A, 0x0561, 0xB09B, 0xB09B, 0x27EA, + 0xB09C, 0xB09C, 0x0564, 0xB09D, 0xB09E, 0x27EB, 0xB09F, 0xB0A2, 0x0565, + 0xB0A3, 0xB0A7, 0x27ED, 0xB0A8, 0xB0A9, 0x0569, 0xB0AA, 0xB0AA, 0x27F2, + 0xB0AB, 0xB0AF, 0x056B, 0xB0B0, 0xB0B0, 0x27F3, 0xB0B1, 0xB0B1, 0x0570, + 0xB0B2, 0xB0B2, 0x27F4, 0xB0B3, 0xB0B5, 0x0571, 0xB0B6, 0xB0B7, 0x27F5, + 0xB0B8, 0xB0B8, 0x0574, 0xB0B9, 0xB0BB, 0x27F7, 0xB0BC, 0xB0BC, 0x0575, + 0xB0BD, 0xB0C3, 0x27FA, 0xB0C4, 0xB0C5, 0x0576, 0xB0C6, 0xB0C6, 0x2801, + 0xB0C7, 0xB0C9, 0x0578, 0xB0CA, 0xB0CF, 0x2802, 0xB0D0, 0xB0D1, 0x057B, + 0xB0D2, 0xB0D3, 0x2808, 0xB0D4, 0xB0D4, 0x057D, 0xB0D5, 0xB0D7, 0x280A, + 0xB0D8, 0xB0D8, 0x057E, 0xB0D9, 0xB0DF, 0x280D, 0xB0E0, 0xB0E0, 0x057F, + 0xB0E1, 0xB0E4, 0x2814, 0xB0E5, 0xB0E5, 0x0580, 0xB0E6, 0xB0FF, 0x2818, + 0xB100, 0xB107, 0x2832, 0xB108, 0xB109, 0x0581, 0xB10A, 0xB10A, 0x283A, + 0xB10B, 0xB10C, 0x0583, 0xB10D, 0xB10F, 0x283B, 0xB110, 0xB110, 0x0585, + 0xB111, 0xB111, 0x283E, 0xB112, 0xB113, 0x0586, 0xB114, 0xB117, 0x283F, + 0xB118, 0xB119, 0x0588, 0xB11A, 0xB11A, 0x2843, 0xB11B, 0xB11D, 0x058A, + 0xB11E, 0xB122, 0x2844, 0xB123, 0xB125, 0x058D, 0xB126, 0xB127, 0x2849, + 0xB128, 0xB128, 0x0590, 0xB129, 0xB12B, 0x284B, 0xB12C, 0xB12C, 0x0591, + 0xB12D, 0xB133, 0x284E, 0xB134, 0xB135, 0x0592, 0xB136, 0xB136, 0x2855, + 0xB137, 0xB139, 0x0594, 0xB13A, 0xB13F, 0x2856, 0xB140, 0xB141, 0x0597, + 0xB142, 0xB143, 0x285C, 0xB144, 0xB144, 0x0599, 0xB145, 0xB147, 0x285E, + 0xB148, 0xB148, 0x059A, 0xB149, 0xB14F, 0x2861, 0xB150, 0xB151, 0x059B, + 0xB152, 0xB153, 0x2868, 0xB154, 0xB155, 0x059D, 0xB156, 0xB157, 0x286A, + 0xB158, 0xB158, 0x059F, 0xB159, 0xB15B, 0x286C, 0xB15C, 0xB15C, 0x05A0, + 0xB15D, 0xB15F, 0x286F, 0xB160, 0xB160, 0x05A1, 0xB161, 0xB177, 0x2872, + 0xB178, 0xB179, 0x05A2, 0xB17A, 0xB17B, 0x2889, 0xB17C, 0xB17C, 0x05A4, + 0xB17D, 0xB17F, 0x288B, 0xB180, 0xB180, 0x05A5, 0xB181, 0xB181, 0x288E, + 0xB182, 0xB182, 0x05A6, 0xB183, 0xB187, 0x288F, 0xB188, 0xB189, 0x05A7, + 0xB18A, 0xB18A, 0x2894, 0xB18B, 0xB18B, 0x05A9, 0xB18C, 0xB18C, 0x2895, + 0xB18D, 0xB18D, 0x05AA, 0xB18E, 0xB191, 0x2896, 0xB192, 0xB194, 0x05AB, + 0xB195, 0xB197, 0x289A, 0xB198, 0xB198, 0x05AE, 0xB199, 0xB19B, 0x289D, + 0xB19C, 0xB19C, 0x05AF, 0xB19D, 0xB1A7, 0x28A0, 0xB1A8, 0xB1A8, 0x05B0, + 0xB1A9, 0xB1CB, 0x28AB, 0xB1CC, 0xB1CC, 0x05B1, 0xB1CD, 0xB1CF, 0x28CE, + 0xB1D0, 0xB1D0, 0x05B2, 0xB1D1, 0xB1D3, 0x28D1, 0xB1D4, 0xB1D4, 0x05B3, + 0xB1D5, 0xB1DB, 0x28D4, 0xB1DC, 0xB1DD, 0x05B4, 0xB1DE, 0xB1DE, 0x28DB, + 0xB1DF, 0xB1DF, 0x05B6, 0xB1E0, 0xB1E7, 0x28DC, 0xB1E8, 0xB1E9, 0x05B7, + 0xB1EA, 0xB1EB, 0x28E4, 0xB1EC, 0xB1EC, 0x05B9, 0xB1ED, 0xB1EF, 0x28E6, + 0xB1F0, 0xB1F0, 0x05BA, 0xB1F1, 0xB1F8, 0x28E9, 0xB1F9, 0xB1F9, 0x05BB, + 0xB1FA, 0xB1FA, 0x28F1, 0xB1FB, 0xB1FB, 0x05BC, 0xB1FC, 0xB1FC, 0x28F2, + 0xB1FD, 0xB1FD, 0x05BD, 0xB1FE, 0xB1FF, 0x28F3, 0xB200, 0xB203, 0x28F5, + 0xB204, 0xB205, 0x05BE, 0xB206, 0xB207, 0x28F9, 0xB208, 0xB208, 0x05C0, + 0xB209, 0xB20A, 0x28FB, 0xB20B, 0xB20C, 0x05C1, 0xB20D, 0xB213, 0x28FD, + 0xB214, 0xB215, 0x05C3, 0xB216, 0xB216, 0x2904, 0xB217, 0xB217, 0x05C5, + 0xB218, 0xB218, 0x2905, 0xB219, 0xB219, 0x05C6, 0xB21A, 0xB21F, 0x2906, + 0xB220, 0xB220, 0x05C7, 0xB221, 0xB233, 0x290C, 0xB234, 0xB234, 0x05C8, + 0xB235, 0xB23B, 0x291F, 0xB23C, 0xB23C, 0x05C9, 0xB23D, 0xB257, 0x2926, + 0xB258, 0xB258, 0x05CA, 0xB259, 0xB25B, 0x2941, 0xB25C, 0xB25C, 0x05CB, + 0xB25D, 0xB25F, 0x2944, 0xB260, 0xB260, 0x05CC, 0xB261, 0xB267, 0x2947, + 0xB268, 0xB269, 0x05CD, 0xB26A, 0xB273, 0x294E, 0xB274, 0xB275, 0x05CF, + 0xB276, 0xB27B, 0x2958, 0xB27C, 0xB27C, 0x05D1, 0xB27D, 0xB283, 0x295E, + 0xB284, 0xB285, 0x05D2, 0xB286, 0xB288, 0x2965, 0xB289, 0xB289, 0x05D4, + 0xB28A, 0xB28F, 0x2968, 0xB290, 0xB291, 0x05D5, 0xB292, 0xB293, 0x296E, + 0xB294, 0xB294, 0x05D7, 0xB295, 0xB297, 0x2970, 0xB298, 0xB29A, 0x05D8, + 0xB29B, 0xB29F, 0x2973, 0xB2A0, 0xB2A1, 0x05DB, 0xB2A2, 0xB2A2, 0x2978, + 0xB2A3, 0xB2A3, 0x05DD, 0xB2A4, 0xB2A4, 0x2979, 0xB2A5, 0xB2A6, 0x05DE, + 0xB2A7, 0xB2A9, 0x297A, 0xB2AA, 0xB2AA, 0x05E0, 0xB2AB, 0xB2AB, 0x297D, + 0xB2AC, 0xB2AC, 0x05E1, 0xB2AD, 0xB2AF, 0x297E, 0xB2B0, 0xB2B0, 0x05E2, + 0xB2B1, 0xB2B3, 0x2981, 0xB2B4, 0xB2B4, 0x05E3, 0xB2B5, 0xB2C7, 0x2984, + 0xB2C8, 0xB2C9, 0x05E4, 0xB2CA, 0xB2CB, 0x2997, 0xB2CC, 0xB2CC, 0x05E6, + 0xB2CD, 0xB2CF, 0x2999, 0xB2D0, 0xB2D0, 0x05E7, 0xB2D1, 0xB2D1, 0x299C, + 0xB2D2, 0xB2D2, 0x05E8, 0xB2D3, 0xB2D7, 0x299D, 0xB2D8, 0xB2D9, 0x05E9, + 0xB2DA, 0xB2DA, 0x29A2, 0xB2DB, 0xB2DB, 0x05EB, 0xB2DC, 0xB2DC, 0x29A3, + 0xB2DD, 0xB2DD, 0x05EC, 0xB2DE, 0xB2E1, 0x29A4, 0xB2E2, 0xB2E2, 0x05ED, + 0xB2E3, 0xB2E3, 0x29A8, 0xB2E4, 0xB2E6, 0x05EE, 0xB2E7, 0xB2E7, 0x29A9, + 0xB2E8, 0xB2E8, 0x05F1, 0xB2E9, 0xB2EA, 0x29AA, 0xB2EB, 0xB2EF, 0x05F2, + 0xB2F0, 0xB2F2, 0x29AC, 0xB2F3, 0xB2F5, 0x05F7, 0xB2F6, 0xB2F6, 0x29AF, + 0xB2F7, 0xB2FB, 0x05FA, 0xB2FC, 0xB2FE, 0x29B0, 0xB2FF, 0xB2FF, 0x05FF, + 0xB300, 0xB301, 0x0600, 0xB302, 0xB303, 0x29B3, 0xB304, 0xB304, 0x0602, + 0xB305, 0xB307, 0x29B5, 0xB308, 0xB308, 0x0603, 0xB309, 0xB30F, 0x29B8, + 0xB310, 0xB311, 0x0604, 0xB312, 0xB312, 0x29BF, 0xB313, 0xB315, 0x0606, + 0xB316, 0xB31B, 0x29C0, 0xB31C, 0xB31C, 0x0609, 0xB31D, 0xB353, 0x29C6, + 0xB354, 0xB356, 0x060A, 0xB357, 0xB357, 0x29FD, 0xB358, 0xB358, 0x060D, + 0xB359, 0xB35A, 0x29FE, 0xB35B, 0xB35C, 0x060E, 0xB35D, 0xB35D, 0x2A00, + 0xB35E, 0xB35F, 0x0610, 0xB360, 0xB363, 0x2A01, 0xB364, 0xB365, 0x0612, + 0xB366, 0xB366, 0x2A05, 0xB367, 0xB367, 0x0614, 0xB368, 0xB368, 0x2A06, + 0xB369, 0xB369, 0x0615, 0xB36A, 0xB36A, 0x2A07, 0xB36B, 0xB36B, 0x0616, + 0xB36C, 0xB36D, 0x2A08, 0xB36E, 0xB36E, 0x0617, 0xB36F, 0xB36F, 0x2A0A, + 0xB370, 0xB371, 0x0618, 0xB372, 0xB373, 0x2A0B, 0xB374, 0xB374, 0x061A, + 0xB375, 0xB377, 0x2A0D, 0xB378, 0xB378, 0x061B, 0xB379, 0xB37F, 0x2A10, + 0xB380, 0xB381, 0x061C, 0xB382, 0xB382, 0x2A17, 0xB383, 0xB385, 0x061E, + 0xB386, 0xB38B, 0x2A18, 0xB38C, 0xB38C, 0x0621, 0xB38D, 0xB38F, 0x2A1E, + 0xB390, 0xB390, 0x0622, 0xB391, 0xB393, 0x2A21, 0xB394, 0xB394, 0x0623, + 0xB395, 0xB39F, 0x2A24, 0xB3A0, 0xB3A1, 0x0624, 0xB3A2, 0xB3A7, 0x2A2F, + 0xB3A8, 0xB3A8, 0x0626, 0xB3A9, 0xB3AB, 0x2A35, 0xB3AC, 0xB3AC, 0x0627, + 0xB3AD, 0xB3C3, 0x2A38, 0xB3C4, 0xB3C5, 0x0628, 0xB3C6, 0xB3C7, 0x2A4F, + 0xB3C8, 0xB3C8, 0x062A, 0xB3C9, 0xB3CA, 0x2A51, 0xB3CB, 0xB3CC, 0x062B, + 0xB3CD, 0xB3CD, 0x2A53, 0xB3CE, 0xB3CE, 0x062D, 0xB3CF, 0xB3CF, 0x2A54, + 0xB3D0, 0xB3D0, 0x062E, 0xB3D1, 0xB3D3, 0x2A55, 0xB3D4, 0xB3D5, 0x062F, + 0xB3D6, 0xB3D6, 0x2A58, 0xB3D7, 0xB3D7, 0x0631, 0xB3D8, 0xB3D8, 0x2A59, + 0xB3D9, 0xB3D9, 0x0632, 0xB3DA, 0xB3DA, 0x2A5A, 0xB3DB, 0xB3DB, 0x0633, + 0xB3DC, 0xB3DC, 0x2A5B, 0xB3DD, 0xB3DD, 0x0634, 0xB3DE, 0xB3DF, 0x2A5C, + 0xB3E0, 0xB3E0, 0x0635, 0xB3E1, 0xB3E3, 0x2A5E, 0xB3E4, 0xB3E4, 0x0636, + 0xB3E5, 0xB3E7, 0x2A61, 0xB3E8, 0xB3E8, 0x0637, 0xB3E9, 0xB3FB, 0x2A64, + 0xB3FC, 0xB3FC, 0x0638, 0xB3FD, 0xB3FF, 0x2A77, 0xB400, 0xB40F, 0x2A7A, + 0xB410, 0xB410, 0x0639, 0xB411, 0xB417, 0x2A8A, 0xB418, 0xB418, 0x063A, + 0xB419, 0xB41B, 0x2A91, 0xB41C, 0xB41C, 0x063B, 0xB41D, 0xB41F, 0x2A94, + 0xB420, 0xB420, 0x063C, 0xB421, 0xB427, 0x2A97, 0xB428, 0xB429, 0x063D, + 0xB42A, 0xB42A, 0x2A9E, 0xB42B, 0xB42B, 0x063F, 0xB42C, 0xB433, 0x2A9F, + 0xB434, 0xB434, 0x0640, 0xB435, 0xB44F, 0x2AA7, 0xB450, 0xB451, 0x0641, + 0xB452, 0xB453, 0x2AC2, 0xB454, 0xB454, 0x0643, 0xB455, 0xB457, 0x2AC4, + 0xB458, 0xB458, 0x0644, 0xB459, 0xB45F, 0x2AC7, 0xB460, 0xB461, 0x0645, + 0xB462, 0xB462, 0x2ACE, 0xB463, 0xB463, 0x0647, 0xB464, 0xB464, 0x2ACF, + 0xB465, 0xB465, 0x0648, 0xB466, 0xB46B, 0x2AD0, 0xB46C, 0xB46C, 0x0649, + 0xB46D, 0xB47F, 0x2AD6, 0xB480, 0xB480, 0x064A, 0xB481, 0xB487, 0x2AE9, + 0xB488, 0xB488, 0x064B, 0xB489, 0xB49C, 0x2AF0, 0xB49D, 0xB49D, 0x064C, + 0xB49E, 0xB4A3, 0x2B04, 0xB4A4, 0xB4A4, 0x064D, 0xB4A5, 0xB4A7, 0x2B0A, + 0xB4A8, 0xB4A8, 0x064E, 0xB4A9, 0xB4AB, 0x2B0D, 0xB4AC, 0xB4AC, 0x064F, + 0xB4AD, 0xB4B4, 0x2B10, 0xB4B5, 0xB4B5, 0x0650, 0xB4B6, 0xB4B6, 0x2B18, + 0xB4B7, 0xB4B7, 0x0651, 0xB4B8, 0xB4B8, 0x2B19, 0xB4B9, 0xB4B9, 0x0652, + 0xB4BA, 0xB4BF, 0x2B1A, 0xB4C0, 0xB4C0, 0x0653, 0xB4C1, 0xB4C3, 0x2B20, + 0xB4C4, 0xB4C4, 0x0654, 0xB4C5, 0xB4C7, 0x2B23, 0xB4C8, 0xB4C8, 0x0655, + 0xB4C9, 0xB4CF, 0x2B26, 0xB4D0, 0xB4D0, 0x0656, 0xB4D1, 0xB4D4, 0x2B2D, + 0xB4D5, 0xB4D5, 0x0657, 0xB4D6, 0xB4DB, 0x2B31, 0xB4DC, 0xB4DD, 0x0658, + 0xB4DE, 0xB4DF, 0x2B37, 0xB4E0, 0xB4E0, 0x065A, 0xB4E1, 0xB4E2, 0x2B39, + 0xB4E3, 0xB4E4, 0x065B, 0xB4E5, 0xB4E5, 0x2B3B, 0xB4E6, 0xB4E6, 0x065D, + 0xB4E7, 0xB4EB, 0x2B3C, 0xB4EC, 0xB4ED, 0x065E, 0xB4EE, 0xB4EE, 0x2B41, + 0xB4EF, 0xB4EF, 0x0660, 0xB4F0, 0xB4F0, 0x2B42, 0xB4F1, 0xB4F1, 0x0661, + 0xB4F2, 0xB4F7, 0x2B43, 0xB4F8, 0xB4F8, 0x0662, 0xB4F9, 0xB4FF, 0x2B49, + 0xB500, 0xB513, 0x2B50, 0xB514, 0xB515, 0x0663, 0xB516, 0xB517, 0x2B64, + 0xB518, 0xB518, 0x0665, 0xB519, 0xB51A, 0x2B66, 0xB51B, 0xB51C, 0x0666, + 0xB51D, 0xB523, 0x2B68, 0xB524, 0xB525, 0x0668, 0xB526, 0xB526, 0x2B6F, + 0xB527, 0xB52A, 0x066A, 0xB52B, 0xB52F, 0x2B70, 0xB530, 0xB531, 0x066E, + 0xB532, 0xB533, 0x2B75, 0xB534, 0xB534, 0x0670, 0xB535, 0xB537, 0x2B77, + 0xB538, 0xB538, 0x0671, 0xB539, 0xB53F, 0x2B7A, 0xB540, 0xB541, 0x0672, + 0xB542, 0xB542, 0x2B81, 0xB543, 0xB545, 0x0674, 0xB546, 0xB54A, 0x2B82, + 0xB54B, 0xB54D, 0x0677, 0xB54E, 0xB54F, 0x2B87, 0xB550, 0xB550, 0x067A, + 0xB551, 0xB553, 0x2B89, 0xB554, 0xB554, 0x067B, 0xB555, 0xB55B, 0x2B8C, + 0xB55C, 0xB55D, 0x067C, 0xB55E, 0xB55E, 0x2B93, 0xB55F, 0xB561, 0x067E, + 0xB562, 0xB59F, 0x2B94, 0xB5A0, 0xB5A1, 0x0681, 0xB5A2, 0xB5A3, 0x2BD2, + 0xB5A4, 0xB5A4, 0x0683, 0xB5A5, 0xB5A7, 0x2BD4, 0xB5A8, 0xB5A8, 0x0684, + 0xB5A9, 0xB5A9, 0x2BD7, 0xB5AA, 0xB5AB, 0x0685, 0xB5AC, 0xB5AF, 0x2BD8, + 0xB5B0, 0xB5B1, 0x0687, 0xB5B2, 0xB5B2, 0x2BDC, 0xB5B3, 0xB5B5, 0x0689, + 0xB5B6, 0xB5BA, 0x2BDD, 0xB5BB, 0xB5BD, 0x068C, 0xB5BE, 0xB5BF, 0x2BE2, + 0xB5C0, 0xB5C0, 0x068F, 0xB5C1, 0xB5C3, 0x2BE4, 0xB5C4, 0xB5C4, 0x0690, + 0xB5C5, 0xB5CB, 0x2BE7, 0xB5CC, 0xB5CD, 0x0691, 0xB5CE, 0xB5CE, 0x2BEE, + 0xB5CF, 0xB5D1, 0x0693, 0xB5D2, 0xB5D7, 0x2BEF, 0xB5D8, 0xB5D8, 0x0696, + 0xB5D9, 0xB5EB, 0x2BF5, 0xB5EC, 0xB5EC, 0x0697, 0xB5ED, 0xB5FF, 0x2C08, + 0xB600, 0xB60F, 0x2C1B, 0xB610, 0xB611, 0x0698, 0xB612, 0xB613, 0x2C2B, + 0xB614, 0xB614, 0x069A, 0xB615, 0xB617, 0x2C2D, 0xB618, 0xB618, 0x069B, + 0xB619, 0xB624, 0x2C30, 0xB625, 0xB625, 0x069C, 0xB626, 0xB62B, 0x2C3C, + 0xB62C, 0xB62C, 0x069D, 0xB62D, 0xB633, 0x2C42, 0xB634, 0xB634, 0x069E, + 0xB635, 0xB647, 0x2C49, 0xB648, 0xB648, 0x069F, 0xB649, 0xB663, 0x2C5C, + 0xB664, 0xB664, 0x06A0, 0xB665, 0xB667, 0x2C77, 0xB668, 0xB668, 0x06A1, + 0xB669, 0xB69B, 0x2C7A, 0xB69C, 0xB69D, 0x06A2, 0xB69E, 0xB69F, 0x2CAD, + 0xB6A0, 0xB6A0, 0x06A4, 0xB6A1, 0xB6A3, 0x2CAF, 0xB6A4, 0xB6A4, 0x06A5, + 0xB6A5, 0xB6AA, 0x2CB2, 0xB6AB, 0xB6AC, 0x06A6, 0xB6AD, 0xB6B0, 0x2CB8, + 0xB6B1, 0xB6B1, 0x06A8, 0xB6B2, 0xB6D3, 0x2CBC, 0xB6D4, 0xB6D4, 0x06A9, + 0xB6D5, 0xB6EF, 0x2CDE, 0xB6F0, 0xB6F0, 0x06AA, 0xB6F1, 0xB6F3, 0x2CF9, + 0xB6F4, 0xB6F4, 0x06AB, 0xB6F5, 0xB6F7, 0x2CFC, 0xB6F8, 0xB6F8, 0x06AC, + 0xB6F9, 0xB6FF, 0x2CFF, 0xB700, 0xB701, 0x06AD, 0xB702, 0xB704, 0x2D06, + 0xB705, 0xB705, 0x06AF, 0xB706, 0xB727, 0x2D09, 0xB728, 0xB729, 0x06B0, + 0xB72A, 0xB72B, 0x2D2B, 0xB72C, 0xB72C, 0x06B2, 0xB72D, 0xB72E, 0x2D2D, + 0xB72F, 0xB730, 0x06B3, 0xB731, 0xB737, 0x2D2F, 0xB738, 0xB739, 0x06B5, + 0xB73A, 0xB73A, 0x2D36, 0xB73B, 0xB73B, 0x06B7, 0xB73C, 0xB743, 0x2D37, + 0xB744, 0xB744, 0x06B8, 0xB745, 0xB747, 0x2D3F, 0xB748, 0xB748, 0x06B9, + 0xB749, 0xB74B, 0x2D42, 0xB74C, 0xB74C, 0x06BA, 0xB74D, 0xB753, 0x2D45, + 0xB754, 0xB755, 0x06BB, 0xB756, 0xB75F, 0x2D4C, 0xB760, 0xB760, 0x06BD, + 0xB761, 0xB763, 0x2D56, 0xB764, 0xB764, 0x06BE, 0xB765, 0xB767, 0x2D59, + 0xB768, 0xB768, 0x06BF, 0xB769, 0xB76F, 0x2D5C, 0xB770, 0xB771, 0x06C0, + 0xB772, 0xB772, 0x2D63, 0xB773, 0xB773, 0x06C2, 0xB774, 0xB774, 0x2D64, + 0xB775, 0xB775, 0x06C3, 0xB776, 0xB77B, 0x2D65, 0xB77C, 0xB77D, 0x06C4, + 0xB77E, 0xB77F, 0x2D6B, 0xB780, 0xB780, 0x06C6, 0xB781, 0xB783, 0x2D6D, + 0xB784, 0xB784, 0x06C7, 0xB785, 0xB78B, 0x2D70, 0xB78C, 0xB78D, 0x06C8, + 0xB78E, 0xB78E, 0x2D77, 0xB78F, 0xB792, 0x06CA, 0xB793, 0xB795, 0x2D78, + 0xB796, 0xB799, 0x06CE, 0xB79A, 0xB79B, 0x2D7B, 0xB79C, 0xB79C, 0x06D2, + 0xB79D, 0xB79F, 0x2D7D, 0xB7A0, 0xB7A0, 0x06D3, 0xB7A1, 0xB7A7, 0x2D80, + 0xB7A8, 0xB7A9, 0x06D4, 0xB7AA, 0xB7AA, 0x2D87, 0xB7AB, 0xB7AD, 0x06D6, + 0xB7AE, 0xB7B3, 0x2D88, 0xB7B4, 0xB7B5, 0x06D9, 0xB7B6, 0xB7B7, 0x2D8E, + 0xB7B8, 0xB7B8, 0x06DB, 0xB7B9, 0xB7C6, 0x2D90, 0xB7C7, 0xB7C7, 0x06DC, + 0xB7C8, 0xB7C8, 0x2D9E, 0xB7C9, 0xB7C9, 0x06DD, 0xB7CA, 0xB7EB, 0x2D9F, + 0xB7EC, 0xB7ED, 0x06DE, 0xB7EE, 0xB7EF, 0x2DC1, 0xB7F0, 0xB7F0, 0x06E0, + 0xB7F1, 0xB7F3, 0x2DC3, 0xB7F4, 0xB7F4, 0x06E1, 0xB7F5, 0xB7FB, 0x2DC6, + 0xB7FC, 0xB7FD, 0x06E2, 0xB7FE, 0xB7FE, 0x2DCD, 0xB7FF, 0xB7FF, 0x06E4, + 0xB800, 0xB801, 0x06E5, 0xB802, 0xB806, 0x2DCE, 0xB807, 0xB809, 0x06E7, + 0xB80A, 0xB80B, 0x2DD3, 0xB80C, 0xB80C, 0x06EA, 0xB80D, 0xB80F, 0x2DD5, + 0xB810, 0xB810, 0x06EB, 0xB811, 0xB817, 0x2DD8, 0xB818, 0xB819, 0x06EC, + 0xB81A, 0xB81A, 0x2DDF, 0xB81B, 0xB81B, 0x06EE, 0xB81C, 0xB81C, 0x2DE0, + 0xB81D, 0xB81D, 0x06EF, 0xB81E, 0xB823, 0x2DE1, 0xB824, 0xB825, 0x06F0, + 0xB826, 0xB827, 0x2DE7, 0xB828, 0xB828, 0x06F2, 0xB829, 0xB82B, 0x2DE9, + 0xB82C, 0xB82C, 0x06F3, 0xB82D, 0xB833, 0x2DEC, 0xB834, 0xB835, 0x06F4, + 0xB836, 0xB836, 0x2DF3, 0xB837, 0xB839, 0x06F6, 0xB83A, 0xB83F, 0x2DF4, + 0xB840, 0xB840, 0x06F9, 0xB841, 0xB843, 0x2DFA, 0xB844, 0xB844, 0x06FA, + 0xB845, 0xB850, 0x2DFD, 0xB851, 0xB851, 0x06FB, 0xB852, 0xB852, 0x2E09, + 0xB853, 0xB853, 0x06FC, 0xB854, 0xB85B, 0x2E0A, 0xB85C, 0xB85D, 0x06FD, + 0xB85E, 0xB85F, 0x2E12, 0xB860, 0xB860, 0x06FF, 0xB861, 0xB863, 0x2E14, + 0xB864, 0xB864, 0x0700, 0xB865, 0xB86B, 0x2E17, 0xB86C, 0xB86D, 0x0701, + 0xB86E, 0xB86E, 0x2E1E, 0xB86F, 0xB86F, 0x0703, 0xB870, 0xB870, 0x2E1F, + 0xB871, 0xB871, 0x0704, 0xB872, 0xB877, 0x2E20, 0xB878, 0xB878, 0x0705, + 0xB879, 0xB87B, 0x2E26, 0xB87C, 0xB87C, 0x0706, 0xB87D, 0xB88C, 0x2E29, + 0xB88D, 0xB88D, 0x0707, 0xB88E, 0xB8A7, 0x2E39, 0xB8A8, 0xB8A8, 0x0708, + 0xB8A9, 0xB8AF, 0x2E53, 0xB8B0, 0xB8B0, 0x0709, 0xB8B1, 0xB8B3, 0x2E5A, + 0xB8B4, 0xB8B4, 0x070A, 0xB8B5, 0xB8B7, 0x2E5D, 0xB8B8, 0xB8B8, 0x070B, + 0xB8B9, 0xB8BF, 0x2E60, 0xB8C0, 0xB8C1, 0x070C, 0xB8C2, 0xB8C2, 0x2E67, + 0xB8C3, 0xB8C3, 0x070E, 0xB8C4, 0xB8C4, 0x2E68, 0xB8C5, 0xB8C5, 0x070F, + 0xB8C6, 0xB8CB, 0x2E69, 0xB8CC, 0xB8CC, 0x0710, 0xB8CD, 0xB8CF, 0x2E6F, + 0xB8D0, 0xB8D0, 0x0711, 0xB8D1, 0xB8D3, 0x2E72, 0xB8D4, 0xB8D4, 0x0712, + 0xB8D5, 0xB8DC, 0x2E75, 0xB8DD, 0xB8DD, 0x0713, 0xB8DE, 0xB8DE, 0x2E7D, + 0xB8DF, 0xB8DF, 0x0714, 0xB8E0, 0xB8E0, 0x2E7E, 0xB8E1, 0xB8E1, 0x0715, + 0xB8E2, 0xB8E7, 0x2E7F, 0xB8E8, 0xB8E9, 0x0716, 0xB8EA, 0xB8EB, 0x2E85, + 0xB8EC, 0xB8EC, 0x0718, 0xB8ED, 0xB8EF, 0x2E87, 0xB8F0, 0xB8F0, 0x0719, + 0xB8F1, 0xB8F7, 0x2E8A, 0xB8F8, 0xB8F9, 0x071A, 0xB8FA, 0xB8FA, 0x2E91, + 0xB8FB, 0xB8FB, 0x071C, 0xB8FC, 0xB8FC, 0x2E92, 0xB8FD, 0xB8FD, 0x071D, + 0xB8FE, 0xB8FF, 0x2E93, 0xB900, 0xB903, 0x2E95, 0xB904, 0xB904, 0x071E, + 0xB905, 0xB917, 0x2E99, 0xB918, 0xB918, 0x071F, 0xB919, 0xB91F, 0x2EAC, + 0xB920, 0xB920, 0x0720, 0xB921, 0xB93B, 0x2EB3, 0xB93C, 0xB93D, 0x0721, + 0xB93E, 0xB93F, 0x2ECE, 0xB940, 0xB940, 0x0723, 0xB941, 0xB943, 0x2ED0, + 0xB944, 0xB944, 0x0724, 0xB945, 0xB94B, 0x2ED3, 0xB94C, 0xB94C, 0x0725, + 0xB94D, 0xB94E, 0x2EDA, 0xB94F, 0xB94F, 0x0726, 0xB950, 0xB950, 0x2EDC, + 0xB951, 0xB951, 0x0727, 0xB952, 0xB957, 0x2EDD, 0xB958, 0xB959, 0x0728, + 0xB95A, 0xB95B, 0x2EE3, 0xB95C, 0xB95C, 0x072A, 0xB95D, 0xB95F, 0x2EE5, + 0xB960, 0xB960, 0x072B, 0xB961, 0xB967, 0x2EE8, 0xB968, 0xB969, 0x072C, + 0xB96A, 0xB96A, 0x2EEF, 0xB96B, 0xB96B, 0x072E, 0xB96C, 0xB96C, 0x2EF0, + 0xB96D, 0xB96D, 0x072F, 0xB96E, 0xB973, 0x2EF1, 0xB974, 0xB975, 0x0730, + 0xB976, 0xB977, 0x2EF7, 0xB978, 0xB978, 0x0732, 0xB979, 0xB97B, 0x2EF9, + 0xB97C, 0xB97C, 0x0733, 0xB97D, 0xB983, 0x2EFC, 0xB984, 0xB985, 0x0734, + 0xB986, 0xB986, 0x2F03, 0xB987, 0xB987, 0x0736, 0xB988, 0xB988, 0x2F04, + 0xB989, 0xB98A, 0x0737, 0xB98B, 0xB98C, 0x2F05, 0xB98D, 0xB98E, 0x0739, + 0xB98F, 0xB9AB, 0x2F07, 0xB9AC, 0xB9AD, 0x073B, 0xB9AE, 0xB9AF, 0x2F24, + 0xB9B0, 0xB9B0, 0x073D, 0xB9B1, 0xB9B3, 0x2F26, 0xB9B4, 0xB9B4, 0x073E, + 0xB9B5, 0xB9BB, 0x2F29, 0xB9BC, 0xB9BD, 0x073F, 0xB9BE, 0xB9BE, 0x2F30, + 0xB9BF, 0xB9BF, 0x0741, 0xB9C0, 0xB9C0, 0x2F31, 0xB9C1, 0xB9C1, 0x0742, + 0xB9C2, 0xB9C7, 0x2F32, 0xB9C8, 0xB9C9, 0x0743, 0xB9CA, 0xB9CB, 0x2F38, + 0xB9CC, 0xB9CC, 0x0745, 0xB9CD, 0xB9CD, 0x2F3A, 0xB9CE, 0xB9D2, 0x0746, + 0xB9D3, 0xB9D7, 0x2F3B, 0xB9D8, 0xB9D9, 0x074B, 0xB9DA, 0xB9DA, 0x2F40, + 0xB9DB, 0xB9DB, 0x074D, 0xB9DC, 0xB9DC, 0x2F41, 0xB9DD, 0xB9DE, 0x074E, + 0xB9DF, 0xB9E0, 0x2F42, 0xB9E1, 0xB9E1, 0x0750, 0xB9E2, 0xB9E2, 0x2F44, + 0xB9E3, 0xB9E5, 0x0751, 0xB9E6, 0xB9E7, 0x2F45, 0xB9E8, 0xB9E8, 0x0754, + 0xB9E9, 0xB9EB, 0x2F47, 0xB9EC, 0xB9EC, 0x0755, 0xB9ED, 0xB9F3, 0x2F4A, + 0xB9F4, 0xB9F5, 0x0756, 0xB9F6, 0xB9F6, 0x2F51, 0xB9F7, 0xB9FA, 0x0758, + 0xB9FB, 0xB9FF, 0x2F52, 0xBA00, 0xBA01, 0x075C, 0xBA02, 0xBA07, 0x2F57, + 0xBA08, 0xBA08, 0x075E, 0xBA09, 0xBA14, 0x2F5D, 0xBA15, 0xBA15, 0x075F, + 0xBA16, 0xBA37, 0x2F69, 0xBA38, 0xBA39, 0x0760, 0xBA3A, 0xBA3B, 0x2F8B, + 0xBA3C, 0xBA3C, 0x0762, 0xBA3D, 0xBA3F, 0x2F8D, 0xBA40, 0xBA40, 0x0763, + 0xBA41, 0xBA41, 0x2F90, 0xBA42, 0xBA42, 0x0764, 0xBA43, 0xBA47, 0x2F91, + 0xBA48, 0xBA49, 0x0765, 0xBA4A, 0xBA4A, 0x2F96, 0xBA4B, 0xBA4B, 0x0767, + 0xBA4C, 0xBA4C, 0x2F97, 0xBA4D, 0xBA4E, 0x0768, 0xBA4F, 0xBA52, 0x2F98, + 0xBA53, 0xBA55, 0x076A, 0xBA56, 0xBA57, 0x2F9C, 0xBA58, 0xBA58, 0x076D, + 0xBA59, 0xBA5B, 0x2F9E, 0xBA5C, 0xBA5C, 0x076E, 0xBA5D, 0xBA63, 0x2FA1, + 0xBA64, 0xBA65, 0x076F, 0xBA66, 0xBA66, 0x2FA8, 0xBA67, 0xBA69, 0x0771, + 0xBA6A, 0xBA6F, 0x2FA9, 0xBA70, 0xBA71, 0x0774, 0xBA72, 0xBA73, 0x2FAF, + 0xBA74, 0xBA74, 0x0776, 0xBA75, 0xBA77, 0x2FB1, 0xBA78, 0xBA78, 0x0777, + 0xBA79, 0xBA82, 0x2FB4, 0xBA83, 0xBA85, 0x0778, 0xBA86, 0xBA86, 0x2FBE, + 0xBA87, 0xBA87, 0x077B, 0xBA88, 0xBA8B, 0x2FBF, 0xBA8C, 0xBA8C, 0x077C, + 0xBA8D, 0xBAA7, 0x2FC3, 0xBAA8, 0xBAA9, 0x077D, 0xBAAA, 0xBAAA, 0x2FDE, + 0xBAAB, 0xBAAC, 0x077F, 0xBAAD, 0xBAAF, 0x2FDF, 0xBAB0, 0xBAB0, 0x0781, + 0xBAB1, 0xBAB1, 0x2FE2, 0xBAB2, 0xBAB2, 0x0782, 0xBAB3, 0xBAB7, 0x2FE3, + 0xBAB8, 0xBAB9, 0x0783, 0xBABA, 0xBABA, 0x2FE8, 0xBABB, 0xBABB, 0x0785, + 0xBABC, 0xBABC, 0x2FE9, 0xBABD, 0xBABD, 0x0786, 0xBABE, 0xBAC3, 0x2FEA, + 0xBAC4, 0xBAC4, 0x0787, 0xBAC5, 0xBAC7, 0x2FF0, 0xBAC8, 0xBAC8, 0x0788, + 0xBAC9, 0xBAD7, 0x2FF3, 0xBAD8, 0xBAD9, 0x0789, 0xBADA, 0xBAFB, 0x3002, + 0xBAFC, 0xBAFC, 0x078B, 0xBAFD, 0xBAFF, 0x3024, 0xBB00, 0xBB00, 0x078C, + 0xBB01, 0xBB03, 0x3027, 0xBB04, 0xBB04, 0x078D, 0xBB05, 0xBB0C, 0x302A, + 0xBB0D, 0xBB0D, 0x078E, 0xBB0E, 0xBB0E, 0x3032, 0xBB0F, 0xBB0F, 0x078F, + 0xBB10, 0xBB10, 0x3033, 0xBB11, 0xBB11, 0x0790, 0xBB12, 0xBB17, 0x3034, + 0xBB18, 0xBB18, 0x0791, 0xBB19, 0xBB1B, 0x303A, 0xBB1C, 0xBB1C, 0x0792, + 0xBB1D, 0xBB1F, 0x303D, 0xBB20, 0xBB20, 0x0793, 0xBB21, 0xBB28, 0x3040, + 0xBB29, 0xBB29, 0x0794, 0xBB2A, 0xBB2A, 0x3048, 0xBB2B, 0xBB2B, 0x0795, + 0xBB2C, 0xBB33, 0x3049, 0xBB34, 0xBB36, 0x0796, 0xBB37, 0xBB37, 0x3051, + 0xBB38, 0xBB38, 0x0799, 0xBB39, 0xBB3A, 0x3052, 0xBB3B, 0xBB3E, 0x079A, + 0xBB3F, 0xBB43, 0x3054, 0xBB44, 0xBB45, 0x079E, 0xBB46, 0xBB46, 0x3059, + 0xBB47, 0xBB47, 0x07A0, 0xBB48, 0xBB48, 0x305A, 0xBB49, 0xBB49, 0x07A1, + 0xBB4A, 0xBB4C, 0x305B, 0xBB4D, 0xBB4D, 0x07A2, 0xBB4E, 0xBB4E, 0x305E, + 0xBB4F, 0xBB50, 0x07A3, 0xBB51, 0xBB53, 0x305F, 0xBB54, 0xBB54, 0x07A5, + 0xBB55, 0xBB57, 0x3062, 0xBB58, 0xBB58, 0x07A6, 0xBB59, 0xBB60, 0x3065, + 0xBB61, 0xBB61, 0x07A7, 0xBB62, 0xBB62, 0x306D, 0xBB63, 0xBB63, 0x07A8, + 0xBB64, 0xBB6B, 0x306E, 0xBB6C, 0xBB6C, 0x07A9, 0xBB6D, 0xBB87, 0x3076, + 0xBB88, 0xBB88, 0x07AA, 0xBB89, 0xBB8B, 0x3091, 0xBB8C, 0xBB8C, 0x07AB, + 0xBB8D, 0xBB8F, 0x3094, 0xBB90, 0xBB90, 0x07AC, 0xBB91, 0xBBA3, 0x3097, + 0xBBA4, 0xBBA4, 0x07AD, 0xBBA5, 0xBBA7, 0x30AA, 0xBBA8, 0xBBA8, 0x07AE, + 0xBBA9, 0xBBAB, 0x30AD, 0xBBAC, 0xBBAC, 0x07AF, 0xBBAD, 0xBBB3, 0x30B0, + 0xBBB4, 0xBBB4, 0x07B0, 0xBBB5, 0xBBB6, 0x30B7, 0xBBB7, 0xBBB7, 0x07B1, + 0xBBB8, 0xBBBF, 0x30B9, 0xBBC0, 0xBBC0, 0x07B2, 0xBBC1, 0xBBC3, 0x30C1, + 0xBBC4, 0xBBC4, 0x07B3, 0xBBC5, 0xBBC7, 0x30C4, 0xBBC8, 0xBBC8, 0x07B4, + 0xBBC9, 0xBBCF, 0x30C7, 0xBBD0, 0xBBD0, 0x07B5, 0xBBD1, 0xBBD2, 0x30CE, + 0xBBD3, 0xBBD3, 0x07B6, 0xBBD4, 0xBBF7, 0x30D0, 0xBBF8, 0xBBF9, 0x07B7, + 0xBBFA, 0xBBFB, 0x30F4, 0xBBFC, 0xBBFC, 0x07B9, 0xBBFD, 0xBBFE, 0x30F6, + 0xBBFF, 0xBBFF, 0x07BA, 0xBC00, 0xBC00, 0x07BB, 0xBC01, 0xBC01, 0x30F8, + 0xBC02, 0xBC02, 0x07BC, 0xBC03, 0xBC07, 0x30F9, 0xBC08, 0xBC09, 0x07BD, + 0xBC0A, 0xBC0A, 0x30FE, 0xBC0B, 0xBC0D, 0x07BF, 0xBC0E, 0xBC0E, 0x30FF, + 0xBC0F, 0xBC0F, 0x07C2, 0xBC10, 0xBC10, 0x3100, 0xBC11, 0xBC11, 0x07C3, + 0xBC12, 0xBC13, 0x3101, 0xBC14, 0xBC18, 0x07C4, 0xBC19, 0xBC1A, 0x3103, + 0xBC1B, 0xBC1F, 0x07C9, 0xBC20, 0xBC23, 0x3105, 0xBC24, 0xBC25, 0x07CE, + 0xBC26, 0xBC26, 0x3109, 0xBC27, 0xBC27, 0x07D0, 0xBC28, 0xBC28, 0x310A, + 0xBC29, 0xBC29, 0x07D1, 0xBC2A, 0xBC2C, 0x310B, 0xBC2D, 0xBC2D, 0x07D2, + 0xBC2E, 0xBC2F, 0x310E, 0xBC30, 0xBC31, 0x07D3, 0xBC32, 0xBC33, 0x3110, + 0xBC34, 0xBC34, 0x07D5, 0xBC35, 0xBC37, 0x3112, 0xBC38, 0xBC38, 0x07D6, + 0xBC39, 0xBC3F, 0x3115, 0xBC40, 0xBC41, 0x07D7, 0xBC42, 0xBC42, 0x311C, + 0xBC43, 0xBC45, 0x07D9, 0xBC46, 0xBC48, 0x311D, 0xBC49, 0xBC49, 0x07DC, + 0xBC4A, 0xBC4B, 0x3120, 0xBC4C, 0xBC4D, 0x07DD, 0xBC4E, 0xBC4F, 0x3122, + 0xBC50, 0xBC50, 0x07DF, 0xBC51, 0xBC5C, 0x3124, 0xBC5D, 0xBC5D, 0x07E0, + 0xBC5E, 0xBC83, 0x3130, 0xBC84, 0xBC85, 0x07E1, 0xBC86, 0xBC87, 0x3156, + 0xBC88, 0xBC88, 0x07E3, 0xBC89, 0xBC8A, 0x3158, 0xBC8B, 0xBC8C, 0x07E4, + 0xBC8D, 0xBC8D, 0x315A, 0xBC8E, 0xBC8E, 0x07E6, 0xBC8F, 0xBC93, 0x315B, + 0xBC94, 0xBC95, 0x07E7, 0xBC96, 0xBC96, 0x3160, 0xBC97, 0xBC97, 0x07E9, + 0xBC98, 0xBC98, 0x3161, 0xBC99, 0xBC9A, 0x07EA, 0xBC9B, 0xBC9F, 0x3162, + 0xBCA0, 0xBCA1, 0x07EC, 0xBCA2, 0xBCA3, 0x3167, 0xBCA4, 0xBCA4, 0x07EE, + 0xBCA5, 0xBCA6, 0x3169, 0xBCA7, 0xBCA8, 0x07EF, 0xBCA9, 0xBCAF, 0x316B, + 0xBCB0, 0xBCB1, 0x07F1, 0xBCB2, 0xBCB2, 0x3172, 0xBCB3, 0xBCB5, 0x07F3, + 0xBCB6, 0xBCBB, 0x3173, 0xBCBC, 0xBCBD, 0x07F6, 0xBCBE, 0xBCBF, 0x3179, + 0xBCC0, 0xBCC0, 0x07F8, 0xBCC1, 0xBCC3, 0x317B, 0xBCC4, 0xBCC4, 0x07F9, + 0xBCC5, 0xBCCC, 0x317E, 0xBCCD, 0xBCCD, 0x07FA, 0xBCCE, 0xBCCE, 0x3186, + 0xBCCF, 0xBCD1, 0x07FB, 0xBCD2, 0xBCD4, 0x3187, 0xBCD5, 0xBCD5, 0x07FE, + 0xBCD6, 0xBCD7, 0x318A, 0xBCD8, 0xBCD8, 0x07FF, 0xBCD9, 0xBCDB, 0x318C, + 0xBCDC, 0xBCDC, 0x0800, 0xBCDD, 0xBCF3, 0x318F, 0xBCF4, 0xBCF6, 0x0801, + 0xBCF7, 0xBCF7, 0x31A6, 0xBCF8, 0xBCF8, 0x0804, 0xBCF9, 0xBCFB, 0x31A7, + 0xBCFC, 0xBCFC, 0x0805, 0xBCFD, 0xBCFF, 0x31AA, 0xBD00, 0xBD03, 0x31AD, + 0xBD04, 0xBD05, 0x0806, 0xBD06, 0xBD06, 0x31B1, 0xBD07, 0xBD07, 0x0808, + 0xBD08, 0xBD08, 0x31B2, 0xBD09, 0xBD09, 0x0809, 0xBD0A, 0xBD0F, 0x31B3, + 0xBD10, 0xBD10, 0x080A, 0xBD11, 0xBD13, 0x31B9, 0xBD14, 0xBD14, 0x080B, + 0xBD15, 0xBD23, 0x31BC, 0xBD24, 0xBD24, 0x080C, 0xBD25, 0xBD2B, 0x31CB, + 0xBD2C, 0xBD2C, 0x080D, 0xBD2D, 0xBD3F, 0x31D2, 0xBD40, 0xBD40, 0x080E, + 0xBD41, 0xBD47, 0x31E5, 0xBD48, 0xBD49, 0x080F, 0xBD4A, 0xBD4B, 0x31EC, + 0xBD4C, 0xBD4C, 0x0811, 0xBD4D, 0xBD4F, 0x31EE, 0xBD50, 0xBD50, 0x0812, + 0xBD51, 0xBD57, 0x31F1, 0xBD58, 0xBD59, 0x0813, 0xBD5A, 0xBD63, 0x31F8, + 0xBD64, 0xBD64, 0x0815, 0xBD65, 0xBD67, 0x3202, 0xBD68, 0xBD68, 0x0816, + 0xBD69, 0xBD7F, 0x3205, 0xBD80, 0xBD81, 0x0817, 0xBD82, 0xBD83, 0x321C, + 0xBD84, 0xBD84, 0x0819, 0xBD85, 0xBD86, 0x321E, 0xBD87, 0xBD8A, 0x081A, + 0xBD8B, 0xBD8F, 0x3220, 0xBD90, 0xBD91, 0x081E, 0xBD92, 0xBD92, 0x3225, + 0xBD93, 0xBD93, 0x0820, 0xBD94, 0xBD94, 0x3226, 0xBD95, 0xBD95, 0x0821, + 0xBD96, 0xBD98, 0x3227, 0xBD99, 0xBD9A, 0x0822, 0xBD9B, 0xBD9B, 0x322A, + 0xBD9C, 0xBD9C, 0x0824, 0xBD9D, 0xBDA3, 0x322B, 0xBDA4, 0xBDA4, 0x0825, + 0xBDA5, 0xBDAF, 0x3232, 0xBDB0, 0xBDB0, 0x0826, 0xBDB1, 0xBDB7, 0x323D, + 0xBDB8, 0xBDB8, 0x0827, 0xBDB9, 0xBDD3, 0x3244, 0xBDD4, 0xBDD5, 0x0828, + 0xBDD6, 0xBDD7, 0x325F, 0xBDD8, 0xBDD8, 0x082A, 0xBDD9, 0xBDDB, 0x3261, + 0xBDDC, 0xBDDC, 0x082B, 0xBDDD, 0xBDE8, 0x3264, 0xBDE9, 0xBDE9, 0x082C, + 0xBDEA, 0xBDEF, 0x3270, 0xBDF0, 0xBDF0, 0x082D, 0xBDF1, 0xBDF3, 0x3276, + 0xBDF4, 0xBDF4, 0x082E, 0xBDF5, 0xBDF7, 0x3279, 0xBDF8, 0xBDF8, 0x082F, + 0xBDF9, 0xBDFF, 0x327C, 0xBE00, 0xBE00, 0x0830, 0xBE01, 0xBE02, 0x3283, + 0xBE03, 0xBE03, 0x0831, 0xBE04, 0xBE04, 0x3285, 0xBE05, 0xBE05, 0x0832, + 0xBE06, 0xBE0B, 0x3286, 0xBE0C, 0xBE0D, 0x0833, 0xBE0E, 0xBE0F, 0x328C, + 0xBE10, 0xBE10, 0x0835, 0xBE11, 0xBE13, 0x328E, 0xBE14, 0xBE14, 0x0836, + 0xBE15, 0xBE1B, 0x3291, 0xBE1C, 0xBE1D, 0x0837, 0xBE1E, 0xBE1E, 0x3298, + 0xBE1F, 0xBE1F, 0x0839, 0xBE20, 0xBE43, 0x3299, 0xBE44, 0xBE45, 0x083A, + 0xBE46, 0xBE47, 0x32BD, 0xBE48, 0xBE48, 0x083C, 0xBE49, 0xBE4B, 0x32BF, + 0xBE4C, 0xBE4C, 0x083D, 0xBE4D, 0xBE4D, 0x32C2, 0xBE4E, 0xBE4E, 0x083E, + 0xBE4F, 0xBE53, 0x32C3, 0xBE54, 0xBE55, 0x083F, 0xBE56, 0xBE56, 0x32C8, + 0xBE57, 0xBE57, 0x0841, 0xBE58, 0xBE58, 0x32C9, 0xBE59, 0xBE5B, 0x0842, + 0xBE5C, 0xBE5F, 0x32CA, 0xBE60, 0xBE61, 0x0845, 0xBE62, 0xBE63, 0x32CE, + 0xBE64, 0xBE64, 0x0847, 0xBE65, 0xBE67, 0x32D0, 0xBE68, 0xBE68, 0x0848, + 0xBE69, 0xBE69, 0x32D3, 0xBE6A, 0xBE6A, 0x0849, 0xBE6B, 0xBE6F, 0x32D4, + 0xBE70, 0xBE71, 0x084A, 0xBE72, 0xBE72, 0x32D9, 0xBE73, 0xBE75, 0x084C, + 0xBE76, 0xBE7A, 0x32DA, 0xBE7B, 0xBE7D, 0x084F, 0xBE7E, 0xBE7F, 0x32DF, + 0xBE80, 0xBE80, 0x0852, 0xBE81, 0xBE83, 0x32E1, 0xBE84, 0xBE84, 0x0853, + 0xBE85, 0xBE8B, 0x32E4, 0xBE8C, 0xBE8D, 0x0854, 0xBE8E, 0xBE8E, 0x32EB, + 0xBE8F, 0xBE91, 0x0856, 0xBE92, 0xBE97, 0x32EC, 0xBE98, 0xBE99, 0x0859, + 0xBE9A, 0xBEA7, 0x32F2, 0xBEA8, 0xBEA8, 0x085B, 0xBEA9, 0xBECF, 0x3300, + 0xBED0, 0xBED1, 0x085C, 0xBED2, 0xBED3, 0x3327, 0xBED4, 0xBED4, 0x085E, + 0xBED5, 0xBED6, 0x3329, 0xBED7, 0xBED8, 0x085F, 0xBED9, 0xBEDF, 0x332B, + 0xBEE0, 0xBEE0, 0x0861, 0xBEE1, 0xBEE2, 0x3332, 0xBEE3, 0xBEE5, 0x0862, + 0xBEE6, 0xBEEB, 0x3334, 0xBEEC, 0xBEEC, 0x0865, 0xBEED, 0xBEFF, 0x333A, + 0xBF00, 0xBF00, 0x334D, 0xBF01, 0xBF01, 0x0866, 0xBF02, 0xBF07, 0x334E, + 0xBF08, 0xBF09, 0x0867, 0xBF0A, 0xBF17, 0x3354, 0xBF18, 0xBF19, 0x0869, + 0xBF1A, 0xBF1A, 0x3362, 0xBF1B, 0xBF1D, 0x086B, 0xBF1E, 0xBF3F, 0x3363, + 0xBF40, 0xBF41, 0x086E, 0xBF42, 0xBF43, 0x3385, 0xBF44, 0xBF44, 0x0870, + 0xBF45, 0xBF47, 0x3387, 0xBF48, 0xBF48, 0x0871, 0xBF49, 0xBF4F, 0x338A, + 0xBF50, 0xBF51, 0x0872, 0xBF52, 0xBF54, 0x3391, 0xBF55, 0xBF55, 0x0874, + 0xBF56, 0xBF93, 0x3394, 0xBF94, 0xBF94, 0x0875, 0xBF95, 0xBFAF, 0x33D2, + 0xBFB0, 0xBFB0, 0x0876, 0xBFB1, 0xBFC4, 0x33ED, 0xBFC5, 0xBFC5, 0x0877, + 0xBFC6, 0xBFCB, 0x3401, 0xBFCC, 0xBFCD, 0x0878, 0xBFCE, 0xBFCF, 0x3407, + 0xBFD0, 0xBFD0, 0x087A, 0xBFD1, 0xBFD3, 0x3409, 0xBFD4, 0xBFD4, 0x087B, + 0xBFD5, 0xBFDB, 0x340C, 0xBFDC, 0xBFDC, 0x087C, 0xBFDD, 0xBFDE, 0x3413, + 0xBFDF, 0xBFDF, 0x087D, 0xBFE0, 0xBFE0, 0x3415, 0xBFE1, 0xBFE1, 0x087E, + 0xBFE2, 0xBFFF, 0x3416, 0xC000, 0xC03B, 0x3434, 0xC03C, 0xC03C, 0x087F, + 0xC03D, 0xC050, 0x3470, 0xC051, 0xC051, 0x0880, 0xC052, 0xC057, 0x3484, + 0xC058, 0xC058, 0x0881, 0xC059, 0xC05B, 0x348A, 0xC05C, 0xC05C, 0x0882, + 0xC05D, 0xC05F, 0x348D, 0xC060, 0xC060, 0x0883, 0xC061, 0xC067, 0x3490, + 0xC068, 0xC069, 0x0884, 0xC06A, 0xC08F, 0x3497, 0xC090, 0xC091, 0x0886, + 0xC092, 0xC093, 0x34BD, 0xC094, 0xC094, 0x0888, 0xC095, 0xC097, 0x34BF, + 0xC098, 0xC098, 0x0889, 0xC099, 0xC09F, 0x34C2, 0xC0A0, 0xC0A1, 0x088A, + 0xC0A2, 0xC0A2, 0x34C9, 0xC0A3, 0xC0A3, 0x088C, 0xC0A4, 0xC0A4, 0x34CA, + 0xC0A5, 0xC0A5, 0x088D, 0xC0A6, 0xC0AB, 0x34CB, 0xC0AC, 0xC0AD, 0x088E, + 0xC0AE, 0xC0AE, 0x34D1, 0xC0AF, 0xC0B0, 0x0890, 0xC0B1, 0xC0B2, 0x34D2, + 0xC0B3, 0xC0B6, 0x0892, 0xC0B7, 0xC0BB, 0x34D4, 0xC0BC, 0xC0BD, 0x0896, + 0xC0BE, 0xC0BE, 0x34D9, 0xC0BF, 0xC0C1, 0x0898, 0xC0C2, 0xC0C4, 0x34DA, + 0xC0C5, 0xC0C5, 0x089B, 0xC0C6, 0xC0C7, 0x34DD, 0xC0C8, 0xC0C9, 0x089C, + 0xC0CA, 0xC0CB, 0x34DF, 0xC0CC, 0xC0CC, 0x089E, 0xC0CD, 0xC0CF, 0x34E1, + 0xC0D0, 0xC0D0, 0x089F, 0xC0D1, 0xC0D7, 0x34E4, 0xC0D8, 0xC0D9, 0x08A0, + 0xC0DA, 0xC0DA, 0x34EB, 0xC0DB, 0xC0DD, 0x08A2, 0xC0DE, 0xC0E3, 0x34EC, + 0xC0E4, 0xC0E5, 0x08A5, 0xC0E6, 0xC0E7, 0x34F2, 0xC0E8, 0xC0E8, 0x08A7, + 0xC0E9, 0xC0EB, 0x34F4, 0xC0EC, 0xC0EC, 0x08A8, 0xC0ED, 0xC0F3, 0x34F7, + 0xC0F4, 0xC0F5, 0x08A9, 0xC0F6, 0xC0F6, 0x34FE, 0xC0F7, 0xC0F7, 0x08AB, + 0xC0F8, 0xC0F8, 0x34FF, 0xC0F9, 0xC0F9, 0x08AC, 0xC0FA, 0xC0FF, 0x3500, + 0xC100, 0xC100, 0x08AD, 0xC101, 0xC103, 0x3506, 0xC104, 0xC104, 0x08AE, + 0xC105, 0xC107, 0x3509, 0xC108, 0xC108, 0x08AF, 0xC109, 0xC10F, 0x350C, + 0xC110, 0xC110, 0x08B0, 0xC111, 0xC114, 0x3513, 0xC115, 0xC115, 0x08B1, + 0xC116, 0xC11B, 0x3517, 0xC11C, 0xC120, 0x08B2, 0xC121, 0xC122, 0x351D, + 0xC123, 0xC124, 0x08B7, 0xC125, 0xC125, 0x351F, 0xC126, 0xC127, 0x08B9, + 0xC128, 0xC12B, 0x3520, 0xC12C, 0xC12D, 0x08BB, 0xC12E, 0xC12E, 0x3524, + 0xC12F, 0xC131, 0x08BD, 0xC132, 0xC135, 0x3525, 0xC136, 0xC136, 0x08C0, + 0xC137, 0xC137, 0x3529, 0xC138, 0xC139, 0x08C1, 0xC13A, 0xC13B, 0x352A, + 0xC13C, 0xC13C, 0x08C3, 0xC13D, 0xC13F, 0x352C, 0xC140, 0xC140, 0x08C4, + 0xC141, 0xC147, 0x352F, 0xC148, 0xC149, 0x08C5, 0xC14A, 0xC14A, 0x3536, + 0xC14B, 0xC14D, 0x08C7, 0xC14E, 0xC153, 0x3537, 0xC154, 0xC155, 0x08CA, + 0xC156, 0xC157, 0x353D, 0xC158, 0xC158, 0x08CC, 0xC159, 0xC15B, 0x353F, + 0xC15C, 0xC15C, 0x08CD, 0xC15D, 0xC163, 0x3542, 0xC164, 0xC165, 0x08CE, + 0xC166, 0xC166, 0x3549, 0xC167, 0xC169, 0x08D0, 0xC16A, 0xC16F, 0x354A, + 0xC170, 0xC170, 0x08D3, 0xC171, 0xC173, 0x3550, 0xC174, 0xC174, 0x08D4, + 0xC175, 0xC177, 0x3553, 0xC178, 0xC178, 0x08D5, 0xC179, 0xC184, 0x3556, + 0xC185, 0xC185, 0x08D6, 0xC186, 0xC18B, 0x3562, 0xC18C, 0xC18E, 0x08D7, + 0xC18F, 0xC18F, 0x3568, 0xC190, 0xC190, 0x08DA, 0xC191, 0xC193, 0x3569, + 0xC194, 0xC194, 0x08DB, 0xC195, 0xC195, 0x356C, 0xC196, 0xC196, 0x08DC, + 0xC197, 0xC19B, 0x356D, 0xC19C, 0xC19D, 0x08DD, 0xC19E, 0xC19E, 0x3572, + 0xC19F, 0xC19F, 0x08DF, 0xC1A0, 0xC1A0, 0x3573, 0xC1A1, 0xC1A1, 0x08E0, + 0xC1A2, 0xC1A4, 0x3574, 0xC1A5, 0xC1A5, 0x08E1, 0xC1A6, 0xC1A7, 0x3577, + 0xC1A8, 0xC1A9, 0x08E2, 0xC1AA, 0xC1AB, 0x3579, 0xC1AC, 0xC1AC, 0x08E4, + 0xC1AD, 0xC1AF, 0x357B, 0xC1B0, 0xC1B0, 0x08E5, 0xC1B1, 0xC1BC, 0x357E, + 0xC1BD, 0xC1BD, 0x08E6, 0xC1BE, 0xC1C3, 0x358A, 0xC1C4, 0xC1C4, 0x08E7, + 0xC1C5, 0xC1C7, 0x3590, 0xC1C8, 0xC1C8, 0x08E8, 0xC1C9, 0xC1CB, 0x3593, + 0xC1CC, 0xC1CC, 0x08E9, 0xC1CD, 0xC1D3, 0x3596, 0xC1D4, 0xC1D4, 0x08EA, + 0xC1D5, 0xC1D6, 0x359D, 0xC1D7, 0xC1D8, 0x08EB, 0xC1D9, 0xC1DF, 0x359F, + 0xC1E0, 0xC1E0, 0x08ED, 0xC1E1, 0xC1E3, 0x35A6, 0xC1E4, 0xC1E4, 0x08EE, + 0xC1E5, 0xC1E7, 0x35A9, 0xC1E8, 0xC1E8, 0x08EF, 0xC1E9, 0xC1EF, 0x35AC, + 0xC1F0, 0xC1F1, 0x08F0, 0xC1F2, 0xC1F2, 0x35B3, 0xC1F3, 0xC1F3, 0x08F2, + 0xC1F4, 0xC1FB, 0x35B4, 0xC1FC, 0xC1FD, 0x08F3, 0xC1FE, 0xC1FF, 0x35BC, + 0xC200, 0xC200, 0x08F5, 0xC201, 0xC203, 0x35BE, 0xC204, 0xC204, 0x08F6, + 0xC205, 0xC20B, 0x35C1, 0xC20C, 0xC20D, 0x08F7, 0xC20E, 0xC20E, 0x35C8, + 0xC20F, 0xC20F, 0x08F9, 0xC210, 0xC210, 0x35C9, 0xC211, 0xC211, 0x08FA, + 0xC212, 0xC217, 0x35CA, 0xC218, 0xC219, 0x08FB, 0xC21A, 0xC21B, 0x35D0, + 0xC21C, 0xC21C, 0x08FD, 0xC21D, 0xC21E, 0x35D2, 0xC21F, 0xC220, 0x08FE, + 0xC221, 0xC227, 0x35D4, 0xC228, 0xC229, 0x0900, 0xC22A, 0xC22A, 0x35DB, + 0xC22B, 0xC22B, 0x0902, 0xC22C, 0xC22C, 0x35DC, 0xC22D, 0xC22D, 0x0903, + 0xC22E, 0xC22E, 0x35DD, 0xC22F, 0xC22F, 0x0904, 0xC230, 0xC230, 0x35DE, + 0xC231, 0xC232, 0x0905, 0xC233, 0xC233, 0x35DF, 0xC234, 0xC234, 0x0907, + 0xC235, 0xC247, 0x35E0, 0xC248, 0xC248, 0x0908, 0xC249, 0xC24F, 0x35F3, + 0xC250, 0xC251, 0x0909, 0xC252, 0xC253, 0x35FA, 0xC254, 0xC254, 0x090B, + 0xC255, 0xC257, 0x35FC, 0xC258, 0xC258, 0x090C, 0xC259, 0xC25F, 0x35FF, + 0xC260, 0xC260, 0x090D, 0xC261, 0xC264, 0x3606, 0xC265, 0xC265, 0x090E, + 0xC266, 0xC26B, 0x360A, 0xC26C, 0xC26D, 0x090F, 0xC26E, 0xC26F, 0x3610, + 0xC270, 0xC270, 0x0911, 0xC271, 0xC273, 0x3612, 0xC274, 0xC274, 0x0912, + 0xC275, 0xC27B, 0x3615, 0xC27C, 0xC27D, 0x0913, 0xC27E, 0xC27E, 0x361C, + 0xC27F, 0xC27F, 0x0915, 0xC280, 0xC280, 0x361D, 0xC281, 0xC281, 0x0916, + 0xC282, 0xC287, 0x361E, 0xC288, 0xC289, 0x0917, 0xC28A, 0xC28F, 0x3624, + 0xC290, 0xC290, 0x0919, 0xC291, 0xC297, 0x362A, 0xC298, 0xC298, 0x091A, + 0xC299, 0xC29A, 0x3631, 0xC29B, 0xC29B, 0x091B, 0xC29C, 0xC29C, 0x3633, + 0xC29D, 0xC29D, 0x091C, 0xC29E, 0xC2A3, 0x3634, 0xC2A4, 0xC2A5, 0x091D, + 0xC2A6, 0xC2A7, 0x363A, 0xC2A8, 0xC2A8, 0x091F, 0xC2A9, 0xC2AB, 0x363C, + 0xC2AC, 0xC2AD, 0x0920, 0xC2AE, 0xC2B3, 0x363F, 0xC2B4, 0xC2B5, 0x0922, + 0xC2B6, 0xC2B6, 0x3645, 0xC2B7, 0xC2B7, 0x0924, 0xC2B8, 0xC2B8, 0x3646, + 0xC2B9, 0xC2B9, 0x0925, 0xC2BA, 0xC2DB, 0x3647, 0xC2DC, 0xC2DD, 0x0926, + 0xC2DE, 0xC2DF, 0x3669, 0xC2E0, 0xC2E0, 0x0928, 0xC2E1, 0xC2E2, 0x366B, + 0xC2E3, 0xC2E4, 0x0929, 0xC2E5, 0xC2EA, 0x366D, 0xC2EB, 0xC2ED, 0x092B, + 0xC2EE, 0xC2EE, 0x3673, 0xC2EF, 0xC2EF, 0x092E, 0xC2F0, 0xC2F0, 0x3674, + 0xC2F1, 0xC2F1, 0x092F, 0xC2F2, 0xC2F5, 0x3675, 0xC2F6, 0xC2F6, 0x0930, + 0xC2F7, 0xC2F7, 0x3679, 0xC2F8, 0xC2F9, 0x0931, 0xC2FA, 0xC2FA, 0x367A, + 0xC2FB, 0xC2FC, 0x0933, 0xC2FD, 0xC2FF, 0x367B, 0xC300, 0xC300, 0x0935, + 0xC301, 0xC307, 0x367E, 0xC308, 0xC309, 0x0936, 0xC30A, 0xC30B, 0x3685, + 0xC30C, 0xC30D, 0x0938, 0xC30E, 0xC312, 0x3687, 0xC313, 0xC315, 0x093A, + 0xC316, 0xC317, 0x368C, 0xC318, 0xC318, 0x093D, 0xC319, 0xC31B, 0x368E, + 0xC31C, 0xC31C, 0x093E, 0xC31D, 0xC323, 0x3691, 0xC324, 0xC325, 0x093F, + 0xC326, 0xC327, 0x3698, 0xC328, 0xC329, 0x0941, 0xC32A, 0xC344, 0x369A, + 0xC345, 0xC345, 0x0943, 0xC346, 0xC367, 0x36B5, 0xC368, 0xC369, 0x0944, + 0xC36A, 0xC36B, 0x36D7, 0xC36C, 0xC36C, 0x0946, 0xC36D, 0xC36F, 0x36D9, + 0xC370, 0xC370, 0x0947, 0xC371, 0xC371, 0x36DC, 0xC372, 0xC372, 0x0948, + 0xC373, 0xC377, 0x36DD, 0xC378, 0xC379, 0x0949, 0xC37A, 0xC37B, 0x36E2, + 0xC37C, 0xC37D, 0x094B, 0xC37E, 0xC383, 0x36E4, 0xC384, 0xC384, 0x094D, + 0xC385, 0xC387, 0x36EA, 0xC388, 0xC388, 0x094E, 0xC389, 0xC38B, 0x36ED, + 0xC38C, 0xC38C, 0x094F, 0xC38D, 0xC3BF, 0x36F0, 0xC3C0, 0xC3C0, 0x0950, + 0xC3C1, 0xC3D7, 0x3723, 0xC3D8, 0xC3D9, 0x0951, 0xC3DA, 0xC3DB, 0x373A, + 0xC3DC, 0xC3DC, 0x0953, 0xC3DD, 0xC3DE, 0x373C, 0xC3DF, 0xC3E0, 0x0954, + 0xC3E1, 0xC3E1, 0x373E, 0xC3E2, 0xC3E2, 0x0956, 0xC3E3, 0xC3E7, 0x373F, + 0xC3E8, 0xC3E9, 0x0957, 0xC3EA, 0xC3EC, 0x3744, 0xC3ED, 0xC3ED, 0x0959, + 0xC3EE, 0xC3F3, 0x3747, 0xC3F4, 0xC3F5, 0x095A, 0xC3F6, 0xC3F7, 0x374D, + 0xC3F8, 0xC3F8, 0x095C, 0xC3F9, 0xC3FF, 0x374F, 0xC400, 0xC407, 0x3756, + 0xC408, 0xC408, 0x095D, 0xC409, 0xC40F, 0x375E, 0xC410, 0xC410, 0x095E, + 0xC411, 0xC423, 0x3765, 0xC424, 0xC424, 0x095F, 0xC425, 0xC42B, 0x3778, + 0xC42C, 0xC42C, 0x0960, 0xC42D, 0xC42F, 0x377F, 0xC430, 0xC430, 0x0961, + 0xC431, 0xC433, 0x3782, 0xC434, 0xC434, 0x0962, 0xC435, 0xC43B, 0x3785, + 0xC43C, 0xC43D, 0x0963, 0xC43E, 0xC447, 0x378C, 0xC448, 0xC448, 0x0965, + 0xC449, 0xC463, 0x3796, 0xC464, 0xC465, 0x0966, 0xC466, 0xC467, 0x37B1, + 0xC468, 0xC468, 0x0968, 0xC469, 0xC46B, 0x37B3, 0xC46C, 0xC46C, 0x0969, + 0xC46D, 0xC473, 0x37B6, 0xC474, 0xC475, 0x096A, 0xC476, 0xC478, 0x37BD, + 0xC479, 0xC479, 0x096C, 0xC47A, 0xC47F, 0x37C0, 0xC480, 0xC480, 0x096D, + 0xC481, 0xC493, 0x37C6, 0xC494, 0xC494, 0x096E, 0xC495, 0xC49B, 0x37D9, + 0xC49C, 0xC49C, 0x096F, 0xC49D, 0xC4B7, 0x37E0, 0xC4B8, 0xC4B8, 0x0970, + 0xC4B9, 0xC4BB, 0x37FB, 0xC4BC, 0xC4BC, 0x0971, 0xC4BD, 0xC4E8, 0x37FE, + 0xC4E9, 0xC4E9, 0x0972, 0xC4EA, 0xC4EF, 0x382A, 0xC4F0, 0xC4F1, 0x0973, + 0xC4F2, 0xC4F3, 0x3830, 0xC4F4, 0xC4F4, 0x0975, 0xC4F5, 0xC4F7, 0x3832, + 0xC4F8, 0xC4F8, 0x0976, 0xC4F9, 0xC4F9, 0x3835, 0xC4FA, 0xC4FA, 0x0977, + 0xC4FB, 0xC4FE, 0x3836, 0xC4FF, 0xC4FF, 0x0978, 0xC500, 0xC501, 0x0979, + 0xC502, 0xC50B, 0x383A, 0xC50C, 0xC50C, 0x097B, 0xC50D, 0xC50F, 0x3844, + 0xC510, 0xC510, 0x097C, 0xC511, 0xC513, 0x3847, 0xC514, 0xC514, 0x097D, + 0xC515, 0xC51B, 0x384A, 0xC51C, 0xC51C, 0x097E, 0xC51D, 0xC527, 0x3851, + 0xC528, 0xC529, 0x097F, 0xC52A, 0xC52B, 0x385C, 0xC52C, 0xC52C, 0x0981, + 0xC52D, 0xC52F, 0x385E, 0xC530, 0xC530, 0x0982, 0xC531, 0xC537, 0x3861, + 0xC538, 0xC539, 0x0983, 0xC53A, 0xC53A, 0x3868, 0xC53B, 0xC53B, 0x0985, + 0xC53C, 0xC53C, 0x3869, 0xC53D, 0xC53D, 0x0986, 0xC53E, 0xC543, 0x386A, + 0xC544, 0xC545, 0x0987, 0xC546, 0xC547, 0x3870, 0xC548, 0xC54A, 0x0989, + 0xC54B, 0xC54B, 0x3872, 0xC54C, 0xC54E, 0x098C, 0xC54F, 0xC552, 0x3873, + 0xC553, 0xC555, 0x098F, 0xC556, 0xC556, 0x3877, 0xC557, 0xC559, 0x0992, + 0xC55A, 0xC55C, 0x3878, 0xC55D, 0xC55E, 0x0995, 0xC55F, 0xC55F, 0x387B, + 0xC560, 0xC561, 0x0997, 0xC562, 0xC563, 0x387C, 0xC564, 0xC564, 0x0999, + 0xC565, 0xC567, 0x387E, 0xC568, 0xC568, 0x099A, 0xC569, 0xC56F, 0x3881, + 0xC570, 0xC571, 0x099B, 0xC572, 0xC572, 0x3888, 0xC573, 0xC575, 0x099D, + 0xC576, 0xC57B, 0x3889, 0xC57C, 0xC57D, 0x09A0, 0xC57E, 0xC57F, 0x388F, + 0xC580, 0xC580, 0x09A2, 0xC581, 0xC583, 0x3891, 0xC584, 0xC584, 0x09A3, + 0xC585, 0xC586, 0x3894, 0xC587, 0xC587, 0x09A4, 0xC588, 0xC58B, 0x3896, + 0xC58C, 0xC58D, 0x09A5, 0xC58E, 0xC58E, 0x389A, 0xC58F, 0xC58F, 0x09A7, + 0xC590, 0xC590, 0x389B, 0xC591, 0xC591, 0x09A8, 0xC592, 0xC594, 0x389C, + 0xC595, 0xC595, 0x09A9, 0xC596, 0xC596, 0x389F, 0xC597, 0xC598, 0x09AA, + 0xC599, 0xC59B, 0x38A0, 0xC59C, 0xC59C, 0x09AC, 0xC59D, 0xC59F, 0x38A3, + 0xC5A0, 0xC5A0, 0x09AD, 0xC5A1, 0xC5A8, 0x38A6, 0xC5A9, 0xC5A9, 0x09AE, + 0xC5AA, 0xC5B3, 0x38AE, 0xC5B4, 0xC5B5, 0x09AF, 0xC5B6, 0xC5B7, 0x38B8, + 0xC5B8, 0xC5B9, 0x09B1, 0xC5BA, 0xC5BA, 0x38BA, 0xC5BB, 0xC5BE, 0x09B3, + 0xC5BF, 0xC5C3, 0x38BB, 0xC5C4, 0xC5CA, 0x09B7, 0xC5CB, 0xC5CB, 0x38C0, + 0xC5CC, 0xC5CC, 0x09BE, 0xC5CD, 0xC5CD, 0x38C1, 0xC5CE, 0xC5CE, 0x09BF, + 0xC5CF, 0xC5CF, 0x38C2, 0xC5D0, 0xC5D1, 0x09C0, 0xC5D2, 0xC5D3, 0x38C3, + 0xC5D4, 0xC5D4, 0x09C2, 0xC5D5, 0xC5D7, 0x38C5, 0xC5D8, 0xC5D8, 0x09C3, + 0xC5D9, 0xC5DF, 0x38C8, 0xC5E0, 0xC5E1, 0x09C4, 0xC5E2, 0xC5E2, 0x38CF, + 0xC5E3, 0xC5E3, 0x09C6, 0xC5E4, 0xC5E4, 0x38D0, 0xC5E5, 0xC5E5, 0x09C7, + 0xC5E6, 0xC5EB, 0x38D1, 0xC5EC, 0xC5EE, 0x09C8, 0xC5EF, 0xC5EF, 0x38D7, + 0xC5F0, 0xC5F0, 0x09CB, 0xC5F1, 0xC5F3, 0x38D8, 0xC5F4, 0xC5F4, 0x09CC, + 0xC5F5, 0xC5F5, 0x38DB, 0xC5F6, 0xC5F7, 0x09CD, 0xC5F8, 0xC5FB, 0x38DC, + 0xC5FC, 0xC5FF, 0x09CF, 0xC600, 0xC601, 0x09D3, 0xC602, 0xC604, 0x38E0, + 0xC605, 0xC608, 0x09D5, 0xC609, 0xC60B, 0x38E3, 0xC60C, 0xC60C, 0x09D9, + 0xC60D, 0xC60F, 0x38E6, 0xC610, 0xC610, 0x09DA, 0xC611, 0xC617, 0x38E9, + 0xC618, 0xC619, 0x09DB, 0xC61A, 0xC61A, 0x38F0, 0xC61B, 0xC61C, 0x09DD, + 0xC61D, 0xC623, 0x38F1, 0xC624, 0xC625, 0x09DF, 0xC626, 0xC627, 0x38F8, + 0xC628, 0xC628, 0x09E1, 0xC629, 0xC62B, 0x38FA, 0xC62C, 0xC62E, 0x09E2, + 0xC62F, 0xC62F, 0x38FD, 0xC630, 0xC630, 0x09E5, 0xC631, 0xC632, 0x38FE, + 0xC633, 0xC635, 0x09E6, 0xC636, 0xC636, 0x3900, 0xC637, 0xC637, 0x09E9, + 0xC638, 0xC638, 0x3901, 0xC639, 0xC639, 0x09EA, 0xC63A, 0xC63A, 0x3902, + 0xC63B, 0xC63B, 0x09EB, 0xC63C, 0xC63F, 0x3903, 0xC640, 0xC641, 0x09EC, + 0xC642, 0xC643, 0x3907, 0xC644, 0xC644, 0x09EE, 0xC645, 0xC647, 0x3909, + 0xC648, 0xC648, 0x09EF, 0xC649, 0xC64F, 0x390C, 0xC650, 0xC651, 0x09F0, + 0xC652, 0xC652, 0x3913, 0xC653, 0xC655, 0x09F2, 0xC656, 0xC65B, 0x3914, + 0xC65C, 0xC65D, 0x09F5, 0xC65E, 0xC65F, 0x391A, 0xC660, 0xC660, 0x09F7, + 0xC661, 0xC66B, 0x391C, 0xC66C, 0xC66C, 0x09F8, 0xC66D, 0xC66E, 0x3927, + 0xC66F, 0xC66F, 0x09F9, 0xC670, 0xC670, 0x3929, 0xC671, 0xC671, 0x09FA, + 0xC672, 0xC677, 0x392A, 0xC678, 0xC679, 0x09FB, 0xC67A, 0xC67B, 0x3930, + 0xC67C, 0xC67C, 0x09FD, 0xC67D, 0xC67F, 0x3932, 0xC680, 0xC680, 0x09FE, + 0xC681, 0xC687, 0x3935, 0xC688, 0xC689, 0x09FF, 0xC68A, 0xC68A, 0x393C, + 0xC68B, 0xC68B, 0x0A01, 0xC68C, 0xC68C, 0x393D, 0xC68D, 0xC68D, 0x0A02, + 0xC68E, 0xC693, 0x393E, 0xC694, 0xC695, 0x0A03, 0xC696, 0xC697, 0x3944, + 0xC698, 0xC698, 0x0A05, 0xC699, 0xC69B, 0x3946, 0xC69C, 0xC69C, 0x0A06, + 0xC69D, 0xC6A3, 0x3949, 0xC6A4, 0xC6A5, 0x0A07, 0xC6A6, 0xC6A6, 0x3950, + 0xC6A7, 0xC6A7, 0x0A09, 0xC6A8, 0xC6A8, 0x3951, 0xC6A9, 0xC6A9, 0x0A0A, + 0xC6AA, 0xC6AF, 0x3952, 0xC6B0, 0xC6B1, 0x0A0B, 0xC6B2, 0xC6B3, 0x3958, + 0xC6B4, 0xC6B4, 0x0A0D, 0xC6B5, 0xC6B7, 0x395A, 0xC6B8, 0xC6BA, 0x0A0E, + 0xC6BB, 0xC6BF, 0x395D, 0xC6C0, 0xC6C1, 0x0A11, 0xC6C2, 0xC6C2, 0x3962, + 0xC6C3, 0xC6C3, 0x0A13, 0xC6C4, 0xC6C4, 0x3963, 0xC6C5, 0xC6C5, 0x0A14, + 0xC6C6, 0xC6CB, 0x3964, 0xC6CC, 0xC6CD, 0x0A15, 0xC6CE, 0xC6CF, 0x396A, + 0xC6D0, 0xC6D0, 0x0A17, 0xC6D1, 0xC6D3, 0x396C, 0xC6D4, 0xC6D4, 0x0A18, + 0xC6D5, 0xC6DB, 0x396F, 0xC6DC, 0xC6DD, 0x0A19, 0xC6DE, 0xC6DF, 0x3976, + 0xC6E0, 0xC6E1, 0x0A1B, 0xC6E2, 0xC6E7, 0x3978, 0xC6E8, 0xC6E9, 0x0A1D, + 0xC6EA, 0xC6EB, 0x397E, 0xC6EC, 0xC6EC, 0x0A1F, 0xC6ED, 0xC6EF, 0x3980, + 0xC6F0, 0xC6F0, 0x0A20, 0xC6F1, 0xC6F7, 0x3983, 0xC6F8, 0xC6F9, 0x0A21, + 0xC6FA, 0xC6FC, 0x398A, 0xC6FD, 0xC6FD, 0x0A23, 0xC6FE, 0xC6FF, 0x398D, + 0xC700, 0xC703, 0x398F, 0xC704, 0xC705, 0x0A24, 0xC706, 0xC707, 0x3993, + 0xC708, 0xC708, 0x0A26, 0xC709, 0xC70B, 0x3995, 0xC70C, 0xC70C, 0x0A27, + 0xC70D, 0xC713, 0x3998, 0xC714, 0xC715, 0x0A28, 0xC716, 0xC716, 0x399F, + 0xC717, 0xC717, 0x0A2A, 0xC718, 0xC718, 0x39A0, 0xC719, 0xC719, 0x0A2B, + 0xC71A, 0xC71F, 0x39A1, 0xC720, 0xC721, 0x0A2C, 0xC722, 0xC723, 0x39A7, + 0xC724, 0xC724, 0x0A2E, 0xC725, 0xC727, 0x39A9, 0xC728, 0xC728, 0x0A2F, + 0xC729, 0xC72F, 0x39AC, 0xC730, 0xC731, 0x0A30, 0xC732, 0xC732, 0x39B3, + 0xC733, 0xC733, 0x0A32, 0xC734, 0xC734, 0x39B4, 0xC735, 0xC735, 0x0A33, + 0xC736, 0xC736, 0x39B5, 0xC737, 0xC737, 0x0A34, 0xC738, 0xC73B, 0x39B6, + 0xC73C, 0xC73D, 0x0A35, 0xC73E, 0xC73F, 0x39BA, 0xC740, 0xC740, 0x0A37, + 0xC741, 0xC743, 0x39BC, 0xC744, 0xC744, 0x0A38, 0xC745, 0xC749, 0x39BF, + 0xC74A, 0xC74A, 0x0A39, 0xC74B, 0xC74B, 0x39C4, 0xC74C, 0xC74D, 0x0A3A, + 0xC74E, 0xC74E, 0x39C5, 0xC74F, 0xC74F, 0x0A3C, 0xC750, 0xC750, 0x39C6, + 0xC751, 0xC758, 0x0A3D, 0xC759, 0xC75B, 0x39C7, 0xC75C, 0xC75C, 0x0A45, + 0xC75D, 0xC75F, 0x39CA, 0xC760, 0xC760, 0x0A46, 0xC761, 0xC767, 0x39CD, + 0xC768, 0xC768, 0x0A47, 0xC769, 0xC76A, 0x39D4, 0xC76B, 0xC76B, 0x0A48, + 0xC76C, 0xC773, 0x39D6, 0xC774, 0xC775, 0x0A49, 0xC776, 0xC777, 0x39DE, + 0xC778, 0xC778, 0x0A4B, 0xC779, 0xC77B, 0x39E0, 0xC77C, 0xC77E, 0x0A4C, + 0xC77F, 0xC782, 0x39E3, 0xC783, 0xC785, 0x0A4F, 0xC786, 0xC786, 0x39E7, + 0xC787, 0xC78A, 0x0A52, 0xC78B, 0xC78D, 0x39E8, 0xC78E, 0xC78E, 0x0A56, + 0xC78F, 0xC78F, 0x39EB, 0xC790, 0xC791, 0x0A57, 0xC792, 0xC793, 0x39EC, + 0xC794, 0xC794, 0x0A59, 0xC795, 0xC795, 0x39EE, 0xC796, 0xC798, 0x0A5A, + 0xC799, 0xC799, 0x39EF, 0xC79A, 0xC79A, 0x0A5D, 0xC79B, 0xC79F, 0x39F0, + 0xC7A0, 0xC7A1, 0x0A5E, 0xC7A2, 0xC7A2, 0x39F5, 0xC7A3, 0xC7A6, 0x0A60, + 0xC7A7, 0xC7AB, 0x39F6, 0xC7AC, 0xC7AD, 0x0A64, 0xC7AE, 0xC7AF, 0x39FB, + 0xC7B0, 0xC7B0, 0x0A66, 0xC7B1, 0xC7B3, 0x39FD, 0xC7B4, 0xC7B4, 0x0A67, + 0xC7B5, 0xC7BB, 0x3A00, 0xC7BC, 0xC7BD, 0x0A68, 0xC7BE, 0xC7BE, 0x3A07, + 0xC7BF, 0xC7C1, 0x0A6A, 0xC7C2, 0xC7C7, 0x3A08, 0xC7C8, 0xC7C9, 0x0A6D, + 0xC7CA, 0xC7CB, 0x3A0E, 0xC7CC, 0xC7CC, 0x0A6F, 0xC7CD, 0xC7CD, 0x3A10, + 0xC7CE, 0xC7CE, 0x0A70, 0xC7CF, 0xC7CF, 0x3A11, 0xC7D0, 0xC7D0, 0x0A71, + 0xC7D1, 0xC7D7, 0x3A12, 0xC7D8, 0xC7D8, 0x0A72, 0xC7D9, 0xC7DC, 0x3A19, + 0xC7DD, 0xC7DD, 0x0A73, 0xC7DE, 0xC7E3, 0x3A1D, 0xC7E4, 0xC7E4, 0x0A74, + 0xC7E5, 0xC7E7, 0x3A23, 0xC7E8, 0xC7E8, 0x0A75, 0xC7E9, 0xC7EB, 0x3A26, + 0xC7EC, 0xC7EC, 0x0A76, 0xC7ED, 0xC7FF, 0x3A29, 0xC800, 0xC801, 0x0A77, + 0xC802, 0xC803, 0x3A3C, 0xC804, 0xC804, 0x0A79, 0xC805, 0xC807, 0x3A3E, + 0xC808, 0xC808, 0x0A7A, 0xC809, 0xC809, 0x3A41, 0xC80A, 0xC80A, 0x0A7B, + 0xC80B, 0xC80F, 0x3A42, 0xC810, 0xC811, 0x0A7C, 0xC812, 0xC812, 0x3A47, + 0xC813, 0xC813, 0x0A7E, 0xC814, 0xC814, 0x3A48, 0xC815, 0xC816, 0x0A7F, + 0xC817, 0xC81B, 0x3A49, 0xC81C, 0xC81D, 0x0A81, 0xC81E, 0xC81F, 0x3A4E, + 0xC820, 0xC820, 0x0A83, 0xC821, 0xC823, 0x3A50, 0xC824, 0xC824, 0x0A84, + 0xC825, 0xC82B, 0x3A53, 0xC82C, 0xC82D, 0x0A85, 0xC82E, 0xC82E, 0x3A5A, + 0xC82F, 0xC82F, 0x0A87, 0xC830, 0xC830, 0x3A5B, 0xC831, 0xC831, 0x0A88, + 0xC832, 0xC837, 0x3A5C, 0xC838, 0xC838, 0x0A89, 0xC839, 0xC83B, 0x3A62, + 0xC83C, 0xC83C, 0x0A8A, 0xC83D, 0xC83F, 0x3A65, 0xC840, 0xC840, 0x0A8B, + 0xC841, 0xC847, 0x3A68, 0xC848, 0xC849, 0x0A8C, 0xC84A, 0xC84B, 0x3A6F, + 0xC84C, 0xC84D, 0x0A8E, 0xC84E, 0xC853, 0x3A71, 0xC854, 0xC854, 0x0A90, + 0xC855, 0xC86F, 0x3A77, 0xC870, 0xC871, 0x0A91, 0xC872, 0xC873, 0x3A92, + 0xC874, 0xC874, 0x0A93, 0xC875, 0xC877, 0x3A94, 0xC878, 0xC878, 0x0A94, + 0xC879, 0xC879, 0x3A97, 0xC87A, 0xC87A, 0x0A95, 0xC87B, 0xC87F, 0x3A98, + 0xC880, 0xC881, 0x0A96, 0xC882, 0xC882, 0x3A9D, 0xC883, 0xC883, 0x0A98, + 0xC884, 0xC884, 0x3A9E, 0xC885, 0xC887, 0x0A99, 0xC888, 0xC88A, 0x3A9F, + 0xC88B, 0xC88D, 0x0A9C, 0xC88E, 0xC893, 0x3AA2, 0xC894, 0xC894, 0x0A9F, + 0xC895, 0xC89C, 0x3AA8, 0xC89D, 0xC89D, 0x0AA0, 0xC89E, 0xC89E, 0x3AB0, + 0xC89F, 0xC89F, 0x0AA1, 0xC8A0, 0xC8A0, 0x3AB1, 0xC8A1, 0xC8A1, 0x0AA2, + 0xC8A2, 0xC8A7, 0x3AB2, 0xC8A8, 0xC8A8, 0x0AA3, 0xC8A9, 0xC8BB, 0x3AB8, + 0xC8BC, 0xC8BD, 0x0AA4, 0xC8BE, 0xC8C3, 0x3ACB, 0xC8C4, 0xC8C4, 0x0AA6, + 0xC8C5, 0xC8C7, 0x3AD1, 0xC8C8, 0xC8C8, 0x0AA7, 0xC8C9, 0xC8CB, 0x3AD4, + 0xC8CC, 0xC8CC, 0x0AA8, 0xC8CD, 0xC8D3, 0x3AD7, 0xC8D4, 0xC8D5, 0x0AA9, + 0xC8D6, 0xC8D6, 0x3ADE, 0xC8D7, 0xC8D7, 0x0AAB, 0xC8D8, 0xC8D8, 0x3ADF, + 0xC8D9, 0xC8D9, 0x0AAC, 0xC8DA, 0xC8DF, 0x3AE0, 0xC8E0, 0xC8E1, 0x0AAD, + 0xC8E2, 0xC8E3, 0x3AE6, 0xC8E4, 0xC8E4, 0x0AAF, 0xC8E5, 0xC8F4, 0x3AE8, + 0xC8F5, 0xC8F5, 0x0AB0, 0xC8F6, 0xC8FB, 0x3AF8, 0xC8FC, 0xC8FD, 0x0AB1, + 0xC8FE, 0xC8FF, 0x3AFE, 0xC900, 0xC900, 0x0AB3, 0xC901, 0xC903, 0x3B00, + 0xC904, 0xC906, 0x0AB4, 0xC907, 0xC90B, 0x3B03, 0xC90C, 0xC90D, 0x0AB7, + 0xC90E, 0xC90E, 0x3B08, 0xC90F, 0xC90F, 0x0AB9, 0xC910, 0xC910, 0x3B09, + 0xC911, 0xC911, 0x0ABA, 0xC912, 0xC917, 0x3B0A, 0xC918, 0xC918, 0x0ABB, + 0xC919, 0xC92B, 0x3B10, 0xC92C, 0xC92C, 0x0ABC, 0xC92D, 0xC933, 0x3B23, + 0xC934, 0xC934, 0x0ABD, 0xC935, 0xC94F, 0x3B2A, 0xC950, 0xC951, 0x0ABE, + 0xC952, 0xC953, 0x3B45, 0xC954, 0xC954, 0x0AC0, 0xC955, 0xC957, 0x3B47, + 0xC958, 0xC958, 0x0AC1, 0xC959, 0xC95F, 0x3B4A, 0xC960, 0xC961, 0x0AC2, + 0xC962, 0xC962, 0x3B51, 0xC963, 0xC963, 0x0AC4, 0xC964, 0xC96B, 0x3B52, + 0xC96C, 0xC96C, 0x0AC5, 0xC96D, 0xC96F, 0x3B5A, 0xC970, 0xC970, 0x0AC6, + 0xC971, 0xC973, 0x3B5D, 0xC974, 0xC974, 0x0AC7, 0xC975, 0xC97B, 0x3B60, + 0xC97C, 0xC97C, 0x0AC8, 0xC97D, 0xC987, 0x3B67, 0xC988, 0xC989, 0x0AC9, + 0xC98A, 0xC98B, 0x3B72, 0xC98C, 0xC98C, 0x0ACB, 0xC98D, 0xC98F, 0x3B74, + 0xC990, 0xC990, 0x0ACC, 0xC991, 0xC997, 0x3B77, 0xC998, 0xC999, 0x0ACD, + 0xC99A, 0xC99A, 0x3B7E, 0xC99B, 0xC99B, 0x0ACF, 0xC99C, 0xC99C, 0x3B7F, + 0xC99D, 0xC99D, 0x0AD0, 0xC99E, 0xC9BF, 0x3B80, 0xC9C0, 0xC9C1, 0x0AD1, + 0xC9C2, 0xC9C3, 0x3BA2, 0xC9C4, 0xC9C4, 0x0AD3, 0xC9C5, 0xC9C6, 0x3BA4, + 0xC9C7, 0xC9C8, 0x0AD4, 0xC9C9, 0xC9C9, 0x3BA6, 0xC9CA, 0xC9CA, 0x0AD6, + 0xC9CB, 0xC9CF, 0x3BA7, 0xC9D0, 0xC9D1, 0x0AD7, 0xC9D2, 0xC9D2, 0x3BAC, + 0xC9D3, 0xC9D3, 0x0AD9, 0xC9D4, 0xC9D4, 0x3BAD, 0xC9D5, 0xC9D6, 0x0ADA, + 0xC9D7, 0xC9D8, 0x3BAE, 0xC9D9, 0xC9DA, 0x0ADC, 0xC9DB, 0xC9DB, 0x3BB0, + 0xC9DC, 0xC9DD, 0x0ADE, 0xC9DE, 0xC9DF, 0x3BB1, 0xC9E0, 0xC9E0, 0x0AE0, + 0xC9E1, 0xC9E1, 0x3BB3, 0xC9E2, 0xC9E2, 0x0AE1, 0xC9E3, 0xC9E3, 0x3BB4, + 0xC9E4, 0xC9E4, 0x0AE2, 0xC9E5, 0xC9E6, 0x3BB5, 0xC9E7, 0xC9E7, 0x0AE3, + 0xC9E8, 0xC9EB, 0x3BB7, 0xC9EC, 0xC9ED, 0x0AE4, 0xC9EE, 0xC9EE, 0x3BBB, + 0xC9EF, 0xC9F1, 0x0AE6, 0xC9F2, 0xC9F7, 0x3BBC, 0xC9F8, 0xC9F9, 0x0AE9, + 0xC9FA, 0xC9FB, 0x3BC2, 0xC9FC, 0xC9FC, 0x0AEB, 0xC9FD, 0xC9FF, 0x3BC4, + 0xCA00, 0xCA00, 0x0AEC, 0xCA01, 0xCA07, 0x3BC7, 0xCA08, 0xCA09, 0x0AED, + 0xCA0A, 0xCA0A, 0x3BCE, 0xCA0B, 0xCA0D, 0x0AEF, 0xCA0E, 0xCA13, 0x3BCF, + 0xCA14, 0xCA14, 0x0AF2, 0xCA15, 0xCA17, 0x3BD5, 0xCA18, 0xCA18, 0x0AF3, + 0xCA19, 0xCA28, 0x3BD8, 0xCA29, 0xCA29, 0x0AF4, 0xCA2A, 0xCA4B, 0x3BE8, + 0xCA4C, 0xCA4D, 0x0AF5, 0xCA4E, 0xCA4F, 0x3C0A, 0xCA50, 0xCA50, 0x0AF7, + 0xCA51, 0xCA53, 0x3C0C, 0xCA54, 0xCA54, 0x0AF8, 0xCA55, 0xCA5B, 0x3C0F, + 0xCA5C, 0xCA5D, 0x0AF9, 0xCA5E, 0xCA5E, 0x3C16, 0xCA5F, 0xCA61, 0x0AFB, + 0xCA62, 0xCA67, 0x3C17, 0xCA68, 0xCA68, 0x0AFE, 0xCA69, 0xCA7C, 0x3C1D, + 0xCA7D, 0xCA7D, 0x0AFF, 0xCA7E, 0xCA83, 0x3C31, 0xCA84, 0xCA84, 0x0B00, + 0xCA85, 0xCA97, 0x3C37, 0xCA98, 0xCA98, 0x0B01, 0xCA99, 0xCABB, 0x3C4A, + 0xCABC, 0xCABD, 0x0B02, 0xCABE, 0xCABF, 0x3C6D, 0xCAC0, 0xCAC0, 0x0B04, + 0xCAC1, 0xCAC3, 0x3C6F, 0xCAC4, 0xCAC4, 0x0B05, 0xCAC5, 0xCACB, 0x3C72, + 0xCACC, 0xCACD, 0x0B06, 0xCACE, 0xCACE, 0x3C79, 0xCACF, 0xCACF, 0x0B08, + 0xCAD0, 0xCAD0, 0x3C7A, 0xCAD1, 0xCAD1, 0x0B09, 0xCAD2, 0xCAD2, 0x3C7B, + 0xCAD3, 0xCAD3, 0x0B0A, 0xCAD4, 0xCAD7, 0x3C7C, 0xCAD8, 0xCAD9, 0x0B0B, + 0xCADA, 0xCADF, 0x3C80, 0xCAE0, 0xCAE0, 0x0B0D, 0xCAE1, 0xCAEB, 0x3C86, + 0xCAEC, 0xCAEC, 0x0B0E, 0xCAED, 0xCAF3, 0x3C91, 0xCAF4, 0xCAF4, 0x0B0F, + 0xCAF5, 0xCAFF, 0x3C98, 0xCB00, 0xCB07, 0x3CA3, 0xCB08, 0xCB08, 0x0B10, + 0xCB09, 0xCB0F, 0x3CAB, 0xCB10, 0xCB10, 0x0B11, 0xCB11, 0xCB13, 0x3CB2, + 0xCB14, 0xCB14, 0x0B12, 0xCB15, 0xCB17, 0x3CB5, 0xCB18, 0xCB18, 0x0B13, + 0xCB19, 0xCB1F, 0x3CB8, 0xCB20, 0xCB21, 0x0B14, 0xCB22, 0xCB40, 0x3CBF, + 0xCB41, 0xCB41, 0x0B16, 0xCB42, 0xCB47, 0x3CDE, 0xCB48, 0xCB49, 0x0B17, + 0xCB4A, 0xCB4B, 0x3CE4, 0xCB4C, 0xCB4C, 0x0B19, 0xCB4D, 0xCB4F, 0x3CE6, + 0xCB50, 0xCB50, 0x0B1A, 0xCB51, 0xCB57, 0x3CE9, 0xCB58, 0xCB59, 0x0B1B, + 0xCB5A, 0xCB5C, 0x3CF0, 0xCB5D, 0xCB5D, 0x0B1D, 0xCB5E, 0xCB63, 0x3CF3, + 0xCB64, 0xCB64, 0x0B1E, 0xCB65, 0xCB77, 0x3CF9, 0xCB78, 0xCB79, 0x0B1F, + 0xCB7A, 0xCB9B, 0x3D0C, 0xCB9C, 0xCB9C, 0x0B21, 0xCB9D, 0xCBB7, 0x3D2E, + 0xCBB8, 0xCBB8, 0x0B22, 0xCBB9, 0xCBD3, 0x3D49, 0xCBD4, 0xCBD4, 0x0B23, + 0xCBD5, 0xCBE3, 0x3D64, 0xCBE4, 0xCBE4, 0x0B24, 0xCBE5, 0xCBE6, 0x3D73, + 0xCBE7, 0xCBE7, 0x0B25, 0xCBE8, 0xCBE8, 0x3D75, 0xCBE9, 0xCBE9, 0x0B26, + 0xCBEA, 0xCBFF, 0x3D76, 0xCC00, 0xCC0B, 0x3D8C, 0xCC0C, 0xCC0D, 0x0B27, + 0xCC0E, 0xCC0F, 0x3D98, 0xCC10, 0xCC10, 0x0B29, 0xCC11, 0xCC13, 0x3D9A, + 0xCC14, 0xCC14, 0x0B2A, 0xCC15, 0xCC1B, 0x3D9D, 0xCC1C, 0xCC1D, 0x0B2B, + 0xCC1E, 0xCC20, 0x3DA4, 0xCC21, 0xCC22, 0x0B2D, 0xCC23, 0xCC26, 0x3DA7, + 0xCC27, 0xCC29, 0x0B2F, 0xCC2A, 0xCC2B, 0x3DAB, 0xCC2C, 0xCC2C, 0x0B32, + 0xCC2D, 0xCC2D, 0x3DAD, 0xCC2E, 0xCC2E, 0x0B33, 0xCC2F, 0xCC2F, 0x3DAE, + 0xCC30, 0xCC30, 0x0B34, 0xCC31, 0xCC37, 0x3DAF, 0xCC38, 0xCC39, 0x0B35, + 0xCC3A, 0xCC3A, 0x3DB6, 0xCC3B, 0xCC3E, 0x0B37, 0xCC3F, 0xCC43, 0x3DB7, + 0xCC44, 0xCC45, 0x0B3B, 0xCC46, 0xCC47, 0x3DBC, 0xCC48, 0xCC48, 0x0B3D, + 0xCC49, 0xCC4B, 0x3DBE, 0xCC4C, 0xCC4C, 0x0B3E, 0xCC4D, 0xCC53, 0x3DC1, + 0xCC54, 0xCC55, 0x0B3F, 0xCC56, 0xCC56, 0x3DC8, 0xCC57, 0xCC59, 0x0B41, + 0xCC5A, 0xCC5F, 0x3DC9, 0xCC60, 0xCC60, 0x0B44, 0xCC61, 0xCC63, 0x3DCF, + 0xCC64, 0xCC64, 0x0B45, 0xCC65, 0xCC65, 0x3DD2, 0xCC66, 0xCC66, 0x0B46, + 0xCC67, 0xCC67, 0x3DD3, 0xCC68, 0xCC68, 0x0B47, 0xCC69, 0xCC6F, 0x3DD4, + 0xCC70, 0xCC70, 0x0B48, 0xCC71, 0xCC74, 0x3DDB, 0xCC75, 0xCC75, 0x0B49, + 0xCC76, 0xCC97, 0x3DDF, 0xCC98, 0xCC99, 0x0B4A, 0xCC9A, 0xCC9B, 0x3E01, + 0xCC9C, 0xCC9C, 0x0B4C, 0xCC9D, 0xCC9F, 0x3E03, 0xCCA0, 0xCCA0, 0x0B4D, + 0xCCA1, 0xCCA7, 0x3E06, 0xCCA8, 0xCCA9, 0x0B4E, 0xCCAA, 0xCCAA, 0x3E0D, + 0xCCAB, 0xCCAD, 0x0B50, 0xCCAE, 0xCCB3, 0x3E0E, 0xCCB4, 0xCCB5, 0x0B53, + 0xCCB6, 0xCCB7, 0x3E14, 0xCCB8, 0xCCB8, 0x0B55, 0xCCB9, 0xCCBB, 0x3E16, + 0xCCBC, 0xCCBC, 0x0B56, 0xCCBD, 0xCCC3, 0x3E19, 0xCCC4, 0xCCC5, 0x0B57, + 0xCCC6, 0xCCC6, 0x3E20, 0xCCC7, 0xCCC7, 0x0B59, 0xCCC8, 0xCCC8, 0x3E21, + 0xCCC9, 0xCCC9, 0x0B5A, 0xCCCA, 0xCCCF, 0x3E22, 0xCCD0, 0xCCD0, 0x0B5B, + 0xCCD1, 0xCCD3, 0x3E28, 0xCCD4, 0xCCD4, 0x0B5C, 0xCCD5, 0xCCE3, 0x3E2B, + 0xCCE4, 0xCCE4, 0x0B5D, 0xCCE5, 0xCCEB, 0x3E3A, 0xCCEC, 0xCCEC, 0x0B5E, + 0xCCED, 0xCCEF, 0x3E41, 0xCCF0, 0xCCF0, 0x0B5F, 0xCCF1, 0xCCFF, 0x3E44, + 0xCD00, 0xCD00, 0x3E53, 0xCD01, 0xCD01, 0x0B60, 0xCD02, 0xCD07, 0x3E54, + 0xCD08, 0xCD09, 0x0B61, 0xCD0A, 0xCD0B, 0x3E5A, 0xCD0C, 0xCD0C, 0x0B63, + 0xCD0D, 0xCD0F, 0x3E5C, 0xCD10, 0xCD10, 0x0B64, 0xCD11, 0xCD17, 0x3E5F, + 0xCD18, 0xCD19, 0x0B65, 0xCD1A, 0xCD1A, 0x3E66, 0xCD1B, 0xCD1B, 0x0B67, + 0xCD1C, 0xCD1C, 0x3E67, 0xCD1D, 0xCD1D, 0x0B68, 0xCD1E, 0xCD23, 0x3E68, + 0xCD24, 0xCD24, 0x0B69, 0xCD25, 0xCD27, 0x3E6E, 0xCD28, 0xCD28, 0x0B6A, + 0xCD29, 0xCD2B, 0x3E71, 0xCD2C, 0xCD2C, 0x0B6B, 0xCD2D, 0xCD38, 0x3E74, + 0xCD39, 0xCD39, 0x0B6C, 0xCD3A, 0xCD5B, 0x3E80, 0xCD5C, 0xCD5C, 0x0B6D, + 0xCD5D, 0xCD5F, 0x3EA2, 0xCD60, 0xCD60, 0x0B6E, 0xCD61, 0xCD63, 0x3EA5, + 0xCD64, 0xCD64, 0x0B6F, 0xCD65, 0xCD6B, 0x3EA8, 0xCD6C, 0xCD6D, 0x0B70, + 0xCD6E, 0xCD6E, 0x3EAF, 0xCD6F, 0xCD6F, 0x0B72, 0xCD70, 0xCD70, 0x3EB0, + 0xCD71, 0xCD71, 0x0B73, 0xCD72, 0xCD77, 0x3EB1, 0xCD78, 0xCD78, 0x0B74, + 0xCD79, 0xCD87, 0x3EB7, 0xCD88, 0xCD88, 0x0B75, 0xCD89, 0xCD93, 0x3EC6, + 0xCD94, 0xCD95, 0x0B76, 0xCD96, 0xCD97, 0x3ED1, 0xCD98, 0xCD98, 0x0B78, + 0xCD99, 0xCD9B, 0x3ED3, 0xCD9C, 0xCD9C, 0x0B79, 0xCD9D, 0xCDA3, 0x3ED6, + 0xCDA4, 0xCDA5, 0x0B7A, 0xCDA6, 0xCDA6, 0x3EDD, 0xCDA7, 0xCDA7, 0x0B7C, + 0xCDA8, 0xCDA8, 0x3EDE, 0xCDA9, 0xCDA9, 0x0B7D, 0xCDAA, 0xCDAF, 0x3EDF, + 0xCDB0, 0xCDB0, 0x0B7E, 0xCDB1, 0xCDC3, 0x3EE5, 0xCDC4, 0xCDC4, 0x0B7F, + 0xCDC5, 0xCDCB, 0x3EF8, 0xCDCC, 0xCDCC, 0x0B80, 0xCDCD, 0xCDCF, 0x3EFF, + 0xCDD0, 0xCDD0, 0x0B81, 0xCDD1, 0xCDE7, 0x3F02, 0xCDE8, 0xCDE8, 0x0B82, + 0xCDE9, 0xCDEB, 0x3F19, 0xCDEC, 0xCDEC, 0x0B83, 0xCDED, 0xCDEF, 0x3F1C, + 0xCDF0, 0xCDF0, 0x0B84, 0xCDF1, 0xCDF7, 0x3F1F, 0xCDF8, 0xCDF9, 0x0B85, + 0xCDFA, 0xCDFA, 0x3F26, 0xCDFB, 0xCDFB, 0x0B87, 0xCDFC, 0xCDFC, 0x3F27, + 0xCDFD, 0xCDFD, 0x0B88, 0xCDFE, 0xCDFF, 0x3F28, 0xCE00, 0xCE03, 0x3F2A, + 0xCE04, 0xCE04, 0x0B89, 0xCE05, 0xCE07, 0x3F2E, 0xCE08, 0xCE08, 0x0B8A, + 0xCE09, 0xCE0B, 0x3F31, 0xCE0C, 0xCE0C, 0x0B8B, 0xCE0D, 0xCE13, 0x3F34, + 0xCE14, 0xCE14, 0x0B8C, 0xCE15, 0xCE18, 0x3F3B, 0xCE19, 0xCE19, 0x0B8D, + 0xCE1A, 0xCE1F, 0x3F3F, 0xCE20, 0xCE21, 0x0B8E, 0xCE22, 0xCE23, 0x3F45, + 0xCE24, 0xCE24, 0x0B90, 0xCE25, 0xCE27, 0x3F47, 0xCE28, 0xCE28, 0x0B91, + 0xCE29, 0xCE2F, 0x3F4A, 0xCE30, 0xCE31, 0x0B92, 0xCE32, 0xCE32, 0x3F51, + 0xCE33, 0xCE33, 0x0B94, 0xCE34, 0xCE34, 0x3F52, 0xCE35, 0xCE35, 0x0B95, + 0xCE36, 0xCE57, 0x3F53, 0xCE58, 0xCE59, 0x0B96, 0xCE5A, 0xCE5B, 0x3F75, + 0xCE5C, 0xCE5C, 0x0B98, 0xCE5D, 0xCE5E, 0x3F77, 0xCE5F, 0xCE61, 0x0B99, + 0xCE62, 0xCE67, 0x3F79, 0xCE68, 0xCE69, 0x0B9C, 0xCE6A, 0xCE6A, 0x3F7F, + 0xCE6B, 0xCE6B, 0x0B9E, 0xCE6C, 0xCE6C, 0x3F80, 0xCE6D, 0xCE6D, 0x0B9F, + 0xCE6E, 0xCE73, 0x3F81, 0xCE74, 0xCE75, 0x0BA0, 0xCE76, 0xCE77, 0x3F87, + 0xCE78, 0xCE78, 0x0BA2, 0xCE79, 0xCE7B, 0x3F89, 0xCE7C, 0xCE7C, 0x0BA3, + 0xCE7D, 0xCE83, 0x3F8C, 0xCE84, 0xCE85, 0x0BA4, 0xCE86, 0xCE86, 0x3F93, + 0xCE87, 0xCE87, 0x0BA6, 0xCE88, 0xCE88, 0x3F94, 0xCE89, 0xCE89, 0x0BA7, + 0xCE8A, 0xCE8F, 0x3F95, 0xCE90, 0xCE91, 0x0BA8, 0xCE92, 0xCE93, 0x3F9B, + 0xCE94, 0xCE94, 0x0BAA, 0xCE95, 0xCE97, 0x3F9D, 0xCE98, 0xCE98, 0x0BAB, + 0xCE99, 0xCE9F, 0x3FA0, 0xCEA0, 0xCEA1, 0x0BAC, 0xCEA2, 0xCEA2, 0x3FA7, + 0xCEA3, 0xCEA5, 0x0BAE, 0xCEA6, 0xCEAB, 0x3FA8, 0xCEAC, 0xCEAD, 0x0BB1, + 0xCEAE, 0xCEC0, 0x3FAE, 0xCEC1, 0xCEC1, 0x0BB3, 0xCEC2, 0xCEE3, 0x3FC1, + 0xCEE4, 0xCEE5, 0x0BB4, 0xCEE6, 0xCEE7, 0x3FE3, 0xCEE8, 0xCEE8, 0x0BB6, + 0xCEE9, 0xCEEA, 0x3FE5, 0xCEEB, 0xCEEC, 0x0BB7, 0xCEED, 0xCEF3, 0x3FE7, + 0xCEF4, 0xCEF5, 0x0BB9, 0xCEF6, 0xCEF6, 0x3FEE, 0xCEF7, 0xCEF9, 0x0BBB, + 0xCEFA, 0xCEFF, 0x3FEF, 0xCF00, 0xCF01, 0x0BBE, 0xCF02, 0xCF03, 0x3FF5, + 0xCF04, 0xCF04, 0x0BC0, 0xCF05, 0xCF07, 0x3FF7, 0xCF08, 0xCF08, 0x0BC1, + 0xCF09, 0xCF0F, 0x3FFA, 0xCF10, 0xCF11, 0x0BC2, 0xCF12, 0xCF12, 0x4001, + 0xCF13, 0xCF13, 0x0BC4, 0xCF14, 0xCF14, 0x4002, 0xCF15, 0xCF15, 0x0BC5, + 0xCF16, 0xCF1B, 0x4003, 0xCF1C, 0xCF1C, 0x0BC6, 0xCF1D, 0xCF1F, 0x4009, + 0xCF20, 0xCF20, 0x0BC7, 0xCF21, 0xCF23, 0x400C, 0xCF24, 0xCF24, 0x0BC8, + 0xCF25, 0xCF2B, 0x400F, 0xCF2C, 0xCF2D, 0x0BC9, 0xCF2E, 0xCF2E, 0x4016, + 0xCF2F, 0xCF31, 0x0BCB, 0xCF32, 0xCF37, 0x4017, 0xCF38, 0xCF38, 0x0BCE, + 0xCF39, 0xCF53, 0x401D, 0xCF54, 0xCF55, 0x0BCF, 0xCF56, 0xCF57, 0x4038, + 0xCF58, 0xCF58, 0x0BD1, 0xCF59, 0xCF5B, 0x403A, 0xCF5C, 0xCF5C, 0x0BD2, + 0xCF5D, 0xCF63, 0x403D, 0xCF64, 0xCF65, 0x0BD3, 0xCF66, 0xCF66, 0x4044, + 0xCF67, 0xCF67, 0x0BD5, 0xCF68, 0xCF68, 0x4045, 0xCF69, 0xCF69, 0x0BD6, + 0xCF6A, 0xCF6F, 0x4046, 0xCF70, 0xCF71, 0x0BD7, 0xCF72, 0xCF73, 0x404C, + 0xCF74, 0xCF74, 0x0BD9, 0xCF75, 0xCF77, 0x404E, 0xCF78, 0xCF78, 0x0BDA, + 0xCF79, 0xCF7F, 0x4051, 0xCF80, 0xCF80, 0x0BDB, 0xCF81, 0xCF84, 0x4058, + 0xCF85, 0xCF85, 0x0BDC, 0xCF86, 0xCF8B, 0x405C, 0xCF8C, 0xCF8C, 0x0BDD, + 0xCF8D, 0xCFA0, 0x4062, 0xCFA1, 0xCFA1, 0x0BDE, 0xCFA2, 0xCFA7, 0x4076, + 0xCFA8, 0xCFA8, 0x0BDF, 0xCFA9, 0xCFAF, 0x407C, 0xCFB0, 0xCFB0, 0x0BE0, + 0xCFB1, 0xCFC3, 0x4083, 0xCFC4, 0xCFC4, 0x0BE1, 0xCFC5, 0xCFDF, 0x4096, + 0xCFE0, 0xCFE1, 0x0BE2, 0xCFE2, 0xCFE3, 0x40B1, 0xCFE4, 0xCFE4, 0x0BE4, + 0xCFE5, 0xCFE7, 0x40B3, 0xCFE8, 0xCFE8, 0x0BE5, 0xCFE9, 0xCFEF, 0x40B6, + 0xCFF0, 0xCFF1, 0x0BE6, 0xCFF2, 0xCFF2, 0x40BD, 0xCFF3, 0xCFF3, 0x0BE8, + 0xCFF4, 0xCFF4, 0x40BE, 0xCFF5, 0xCFF5, 0x0BE9, 0xCFF6, 0xCFFB, 0x40BF, + 0xCFFC, 0xCFFC, 0x0BEA, 0xCFFD, 0xCFFF, 0x40C5, 0xD000, 0xD000, 0x0BEB, + 0xD001, 0xD003, 0x40C8, 0xD004, 0xD004, 0x0BEC, 0xD005, 0xD010, 0x40CB, + 0xD011, 0xD011, 0x0BED, 0xD012, 0xD017, 0x40D7, 0xD018, 0xD018, 0x0BEE, + 0xD019, 0xD02C, 0x40DD, 0xD02D, 0xD02D, 0x0BEF, 0xD02E, 0xD033, 0x40F1, + 0xD034, 0xD035, 0x0BF0, 0xD036, 0xD037, 0x40F7, 0xD038, 0xD038, 0x0BF2, + 0xD039, 0xD03B, 0x40F9, 0xD03C, 0xD03C, 0x0BF3, 0xD03D, 0xD043, 0x40FC, + 0xD044, 0xD045, 0x0BF4, 0xD046, 0xD046, 0x4103, 0xD047, 0xD047, 0x0BF6, + 0xD048, 0xD048, 0x4104, 0xD049, 0xD049, 0x0BF7, 0xD04A, 0xD04F, 0x4105, + 0xD050, 0xD050, 0x0BF8, 0xD051, 0xD053, 0x410B, 0xD054, 0xD054, 0x0BF9, + 0xD055, 0xD057, 0x410E, 0xD058, 0xD058, 0x0BFA, 0xD059, 0xD05F, 0x4111, + 0xD060, 0xD060, 0x0BFB, 0xD061, 0xD06B, 0x4118, 0xD06C, 0xD06D, 0x0BFC, + 0xD06E, 0xD06F, 0x4123, 0xD070, 0xD070, 0x0BFE, 0xD071, 0xD073, 0x4125, + 0xD074, 0xD074, 0x0BFF, 0xD075, 0xD07B, 0x4128, 0xD07C, 0xD07D, 0x0C00, + 0xD07E, 0xD080, 0x412F, 0xD081, 0xD081, 0x0C02, 0xD082, 0xD0A3, 0x4132, + 0xD0A4, 0xD0A5, 0x0C03, 0xD0A6, 0xD0A7, 0x4154, 0xD0A8, 0xD0A8, 0x0C05, + 0xD0A9, 0xD0AB, 0x4156, 0xD0AC, 0xD0AC, 0x0C06, 0xD0AD, 0xD0B3, 0x4159, + 0xD0B4, 0xD0B5, 0x0C07, 0xD0B6, 0xD0B6, 0x4160, 0xD0B7, 0xD0B7, 0x0C09, + 0xD0B8, 0xD0B8, 0x4161, 0xD0B9, 0xD0B9, 0x0C0A, 0xD0BA, 0xD0BF, 0x4162, + 0xD0C0, 0xD0C1, 0x0C0B, 0xD0C2, 0xD0C3, 0x4168, 0xD0C4, 0xD0C4, 0x0C0D, + 0xD0C5, 0xD0C7, 0x416A, 0xD0C8, 0xD0C9, 0x0C0E, 0xD0CA, 0xD0CF, 0x416D, + 0xD0D0, 0xD0D1, 0x0C10, 0xD0D2, 0xD0D2, 0x4173, 0xD0D3, 0xD0D5, 0x0C12, + 0xD0D6, 0xD0DB, 0x4174, 0xD0DC, 0xD0DD, 0x0C15, 0xD0DE, 0xD0DF, 0x417A, + 0xD0E0, 0xD0E0, 0x0C17, 0xD0E1, 0xD0E3, 0x417C, 0xD0E4, 0xD0E4, 0x0C18, + 0xD0E5, 0xD0EB, 0x417F, 0xD0EC, 0xD0ED, 0x0C19, 0xD0EE, 0xD0EE, 0x4186, + 0xD0EF, 0xD0F1, 0x0C1B, 0xD0F2, 0xD0F7, 0x4187, 0xD0F8, 0xD0F8, 0x0C1E, + 0xD0F9, 0xD0FF, 0x418D, 0xD100, 0xD10C, 0x4194, 0xD10D, 0xD10D, 0x0C1F, + 0xD10E, 0xD12F, 0x41A1, 0xD130, 0xD131, 0x0C20, 0xD132, 0xD133, 0x41C3, + 0xD134, 0xD134, 0x0C22, 0xD135, 0xD137, 0x41C5, 0xD138, 0xD138, 0x0C23, + 0xD139, 0xD139, 0x41C8, 0xD13A, 0xD13A, 0x0C24, 0xD13B, 0xD13F, 0x41C9, + 0xD140, 0xD141, 0x0C25, 0xD142, 0xD142, 0x41CE, 0xD143, 0xD145, 0x0C27, + 0xD146, 0xD14B, 0x41CF, 0xD14C, 0xD14D, 0x0C2A, 0xD14E, 0xD14F, 0x41D5, + 0xD150, 0xD150, 0x0C2C, 0xD151, 0xD153, 0x41D7, 0xD154, 0xD154, 0x0C2D, + 0xD155, 0xD15B, 0x41DA, 0xD15C, 0xD15D, 0x0C2E, 0xD15E, 0xD15E, 0x41E1, + 0xD15F, 0xD15F, 0x0C30, 0xD160, 0xD160, 0x41E2, 0xD161, 0xD161, 0x0C31, + 0xD162, 0xD167, 0x41E3, 0xD168, 0xD168, 0x0C32, 0xD169, 0xD16B, 0x41E9, + 0xD16C, 0xD16C, 0x0C33, 0xD16D, 0xD17B, 0x41EC, 0xD17C, 0xD17C, 0x0C34, + 0xD17D, 0xD183, 0x41FB, 0xD184, 0xD184, 0x0C35, 0xD185, 0xD187, 0x4202, + 0xD188, 0xD188, 0x0C36, 0xD189, 0xD19F, 0x4205, 0xD1A0, 0xD1A1, 0x0C37, + 0xD1A2, 0xD1A3, 0x421C, 0xD1A4, 0xD1A4, 0x0C39, 0xD1A5, 0xD1A7, 0x421E, + 0xD1A8, 0xD1A8, 0x0C3A, 0xD1A9, 0xD1AF, 0x4221, 0xD1B0, 0xD1B1, 0x0C3B, + 0xD1B2, 0xD1B2, 0x4228, 0xD1B3, 0xD1B3, 0x0C3D, 0xD1B4, 0xD1B4, 0x4229, + 0xD1B5, 0xD1B5, 0x0C3E, 0xD1B6, 0xD1B9, 0x422A, 0xD1BA, 0xD1BA, 0x0C3F, + 0xD1BB, 0xD1BB, 0x422E, 0xD1BC, 0xD1BC, 0x0C40, 0xD1BD, 0xD1BF, 0x422F, + 0xD1C0, 0xD1C0, 0x0C41, 0xD1C1, 0xD1D7, 0x4232, 0xD1D8, 0xD1D8, 0x0C42, + 0xD1D9, 0xD1F3, 0x4249, 0xD1F4, 0xD1F4, 0x0C43, 0xD1F5, 0xD1F7, 0x4264, + 0xD1F8, 0xD1F8, 0x0C44, 0xD1F9, 0xD1FF, 0x4267, 0xD200, 0xD206, 0x426E, + 0xD207, 0xD207, 0x0C45, 0xD208, 0xD208, 0x4275, 0xD209, 0xD209, 0x0C46, + 0xD20A, 0xD20F, 0x4276, 0xD210, 0xD210, 0x0C47, 0xD211, 0xD22B, 0x427C, + 0xD22C, 0xD22D, 0x0C48, 0xD22E, 0xD22F, 0x4297, 0xD230, 0xD230, 0x0C4A, + 0xD231, 0xD233, 0x4299, 0xD234, 0xD234, 0x0C4B, 0xD235, 0xD23B, 0x429C, + 0xD23C, 0xD23D, 0x0C4C, 0xD23E, 0xD23E, 0x42A3, 0xD23F, 0xD23F, 0x0C4E, + 0xD240, 0xD240, 0x42A4, 0xD241, 0xD241, 0x0C4F, 0xD242, 0xD247, 0x42A5, + 0xD248, 0xD248, 0x0C50, 0xD249, 0xD25B, 0x42AB, 0xD25C, 0xD25C, 0x0C51, + 0xD25D, 0xD263, 0x42BE, 0xD264, 0xD264, 0x0C52, 0xD265, 0xD27F, 0x42C5, + 0xD280, 0xD281, 0x0C53, 0xD282, 0xD283, 0x42E0, 0xD284, 0xD284, 0x0C55, + 0xD285, 0xD287, 0x42E2, 0xD288, 0xD288, 0x0C56, 0xD289, 0xD28F, 0x42E5, + 0xD290, 0xD291, 0x0C57, 0xD292, 0xD294, 0x42EC, 0xD295, 0xD295, 0x0C59, + 0xD296, 0xD29B, 0x42EF, 0xD29C, 0xD29C, 0x0C5A, 0xD29D, 0xD29F, 0x42F5, + 0xD2A0, 0xD2A0, 0x0C5B, 0xD2A1, 0xD2A3, 0x42F8, 0xD2A4, 0xD2A4, 0x0C5C, + 0xD2A5, 0xD2AB, 0x42FB, 0xD2AC, 0xD2AC, 0x0C5D, 0xD2AD, 0xD2B0, 0x4302, + 0xD2B1, 0xD2B1, 0x0C5E, 0xD2B2, 0xD2B7, 0x4306, 0xD2B8, 0xD2B9, 0x0C5F, + 0xD2BA, 0xD2BB, 0x430C, 0xD2BC, 0xD2BC, 0x0C61, 0xD2BD, 0xD2BE, 0x430E, + 0xD2BF, 0xD2C0, 0x0C62, 0xD2C1, 0xD2C1, 0x4310, 0xD2C2, 0xD2C2, 0x0C64, + 0xD2C3, 0xD2C7, 0x4311, 0xD2C8, 0xD2C9, 0x0C65, 0xD2CA, 0xD2CA, 0x4316, + 0xD2CB, 0xD2CB, 0x0C67, 0xD2CC, 0xD2D3, 0x4317, 0xD2D4, 0xD2D4, 0x0C68, + 0xD2D5, 0xD2D7, 0x431F, 0xD2D8, 0xD2D8, 0x0C69, 0xD2D9, 0xD2DB, 0x4322, + 0xD2DC, 0xD2DC, 0x0C6A, 0xD2DD, 0xD2E3, 0x4325, 0xD2E4, 0xD2E5, 0x0C6B, + 0xD2E6, 0xD2EF, 0x432C, 0xD2F0, 0xD2F1, 0x0C6D, 0xD2F2, 0xD2F3, 0x4336, + 0xD2F4, 0xD2F4, 0x0C6F, 0xD2F5, 0xD2F7, 0x4338, 0xD2F8, 0xD2F8, 0x0C70, + 0xD2F9, 0xD2FF, 0x433B, 0xD300, 0xD301, 0x0C71, 0xD302, 0xD302, 0x4342, + 0xD303, 0xD303, 0x0C73, 0xD304, 0xD304, 0x4343, 0xD305, 0xD305, 0x0C74, + 0xD306, 0xD30B, 0x4344, 0xD30C, 0xD30E, 0x0C75, 0xD30F, 0xD30F, 0x434A, + 0xD310, 0xD310, 0x0C78, 0xD311, 0xD313, 0x434B, 0xD314, 0xD314, 0x0C79, + 0xD315, 0xD315, 0x434E, 0xD316, 0xD316, 0x0C7A, 0xD317, 0xD31B, 0x434F, + 0xD31C, 0xD31D, 0x0C7B, 0xD31E, 0xD31E, 0x4354, 0xD31F, 0xD321, 0x0C7D, + 0xD322, 0xD324, 0x4355, 0xD325, 0xD325, 0x0C80, 0xD326, 0xD327, 0x4358, + 0xD328, 0xD329, 0x0C81, 0xD32A, 0xD32B, 0x435A, 0xD32C, 0xD32C, 0x0C83, + 0xD32D, 0xD32F, 0x435C, 0xD330, 0xD330, 0x0C84, 0xD331, 0xD337, 0x435F, + 0xD338, 0xD339, 0x0C85, 0xD33A, 0xD33A, 0x4366, 0xD33B, 0xD33D, 0x0C87, + 0xD33E, 0xD343, 0x4367, 0xD344, 0xD345, 0x0C8A, 0xD346, 0xD37B, 0x436D, + 0xD37C, 0xD37D, 0x0C8C, 0xD37E, 0xD37F, 0x43A3, 0xD380, 0xD380, 0x0C8E, + 0xD381, 0xD383, 0x43A5, 0xD384, 0xD384, 0x0C8F, 0xD385, 0xD38B, 0x43A8, + 0xD38C, 0xD38D, 0x0C90, 0xD38E, 0xD38E, 0x43AF, 0xD38F, 0xD391, 0x0C92, + 0xD392, 0xD397, 0x43B0, 0xD398, 0xD399, 0x0C95, 0xD39A, 0xD39B, 0x43B6, + 0xD39C, 0xD39C, 0x0C97, 0xD39D, 0xD39F, 0x43B8, 0xD3A0, 0xD3A0, 0x0C98, + 0xD3A1, 0xD3A7, 0x43BB, 0xD3A8, 0xD3A9, 0x0C99, 0xD3AA, 0xD3AA, 0x43C2, + 0xD3AB, 0xD3AB, 0x0C9B, 0xD3AC, 0xD3AC, 0x43C3, 0xD3AD, 0xD3AD, 0x0C9C, + 0xD3AE, 0xD3B3, 0x43C4, 0xD3B4, 0xD3B4, 0x0C9D, 0xD3B5, 0xD3B7, 0x43CA, + 0xD3B8, 0xD3B8, 0x0C9E, 0xD3B9, 0xD3BB, 0x43CD, 0xD3BC, 0xD3BC, 0x0C9F, + 0xD3BD, 0xD3C3, 0x43D0, 0xD3C4, 0xD3C5, 0x0CA0, 0xD3C6, 0xD3C7, 0x43D7, + 0xD3C8, 0xD3C9, 0x0CA2, 0xD3CA, 0xD3CF, 0x43D9, 0xD3D0, 0xD3D0, 0x0CA4, + 0xD3D1, 0xD3D7, 0x43DF, 0xD3D8, 0xD3D8, 0x0CA5, 0xD3D9, 0xD3E0, 0x43E6, + 0xD3E1, 0xD3E1, 0x0CA6, 0xD3E2, 0xD3E2, 0x43EE, 0xD3E3, 0xD3E3, 0x0CA7, + 0xD3E4, 0xD3EB, 0x43EF, 0xD3EC, 0xD3ED, 0x0CA8, 0xD3EE, 0xD3EF, 0x43F7, + 0xD3F0, 0xD3F0, 0x0CAA, 0xD3F1, 0xD3F3, 0x43F9, 0xD3F4, 0xD3F4, 0x0CAB, + 0xD3F5, 0xD3FB, 0x43FC, 0xD3FC, 0xD3FD, 0x0CAC, 0xD3FE, 0xD3FE, 0x4403, + 0xD3FF, 0xD3FF, 0x0CAE, 0xD400, 0xD400, 0x4404, 0xD401, 0xD401, 0x0CAF, + 0xD402, 0xD407, 0x4405, 0xD408, 0xD408, 0x0CB0, 0xD409, 0xD41C, 0x440B, + 0xD41D, 0xD41D, 0x0CB1, 0xD41E, 0xD43F, 0x441F, 0xD440, 0xD440, 0x0CB2, + 0xD441, 0xD443, 0x4441, 0xD444, 0xD444, 0x0CB3, 0xD445, 0xD45B, 0x4444, + 0xD45C, 0xD45C, 0x0CB4, 0xD45D, 0xD45F, 0x445B, 0xD460, 0xD460, 0x0CB5, + 0xD461, 0xD463, 0x445E, 0xD464, 0xD464, 0x0CB6, 0xD465, 0xD46C, 0x4461, + 0xD46D, 0xD46D, 0x0CB7, 0xD46E, 0xD46E, 0x4469, 0xD46F, 0xD46F, 0x0CB8, + 0xD470, 0xD477, 0x446A, 0xD478, 0xD479, 0x0CB9, 0xD47A, 0xD47B, 0x4472, + 0xD47C, 0xD47C, 0x0CBB, 0xD47D, 0xD47E, 0x4474, 0xD47F, 0xD480, 0x0CBC, + 0xD481, 0xD481, 0x4476, 0xD482, 0xD482, 0x0CBE, 0xD483, 0xD487, 0x4477, + 0xD488, 0xD489, 0x0CBF, 0xD48A, 0xD48A, 0x447C, 0xD48B, 0xD48B, 0x0CC1, + 0xD48C, 0xD48C, 0x447D, 0xD48D, 0xD48D, 0x0CC2, 0xD48E, 0xD493, 0x447E, + 0xD494, 0xD494, 0x0CC3, 0xD495, 0xD4A8, 0x4484, 0xD4A9, 0xD4A9, 0x0CC4, + 0xD4AA, 0xD4CB, 0x4498, 0xD4CC, 0xD4CC, 0x0CC5, 0xD4CD, 0xD4CF, 0x44BA, + 0xD4D0, 0xD4D0, 0x0CC6, 0xD4D1, 0xD4D3, 0x44BD, 0xD4D4, 0xD4D4, 0x0CC7, + 0xD4D5, 0xD4DB, 0x44C0, 0xD4DC, 0xD4DC, 0x0CC8, 0xD4DD, 0xD4DE, 0x44C7, + 0xD4DF, 0xD4DF, 0x0CC9, 0xD4E0, 0xD4E7, 0x44C9, 0xD4E8, 0xD4E8, 0x0CCA, + 0xD4E9, 0xD4EB, 0x44D1, 0xD4EC, 0xD4EC, 0x0CCB, 0xD4ED, 0xD4EF, 0x44D4, + 0xD4F0, 0xD4F0, 0x0CCC, 0xD4F1, 0xD4F7, 0x44D7, 0xD4F8, 0xD4F8, 0x0CCD, + 0xD4F9, 0xD4FA, 0x44DE, 0xD4FB, 0xD4FB, 0x0CCE, 0xD4FC, 0xD4FC, 0x44E0, + 0xD4FD, 0xD4FD, 0x0CCF, 0xD4FE, 0xD4FF, 0x44E1, 0xD500, 0xD503, 0x44E3, + 0xD504, 0xD504, 0x0CD0, 0xD505, 0xD507, 0x44E7, 0xD508, 0xD508, 0x0CD1, + 0xD509, 0xD50B, 0x44EA, 0xD50C, 0xD50C, 0x0CD2, 0xD50D, 0xD513, 0x44ED, + 0xD514, 0xD515, 0x0CD3, 0xD516, 0xD516, 0x44F4, 0xD517, 0xD517, 0x0CD5, + 0xD518, 0xD53B, 0x44F5, 0xD53C, 0xD53D, 0x0CD6, 0xD53E, 0xD53F, 0x4519, + 0xD540, 0xD540, 0x0CD8, 0xD541, 0xD543, 0x451B, 0xD544, 0xD544, 0x0CD9, + 0xD545, 0xD54B, 0x451E, 0xD54C, 0xD54D, 0x0CDA, 0xD54E, 0xD54E, 0x4525, + 0xD54F, 0xD54F, 0x0CDC, 0xD550, 0xD550, 0x4526, 0xD551, 0xD551, 0x0CDD, + 0xD552, 0xD557, 0x4527, 0xD558, 0xD559, 0x0CDE, 0xD55A, 0xD55B, 0x452D, + 0xD55C, 0xD55C, 0x0CE0, 0xD55D, 0xD55F, 0x452F, 0xD560, 0xD560, 0x0CE1, + 0xD561, 0xD564, 0x4532, 0xD565, 0xD565, 0x0CE2, 0xD566, 0xD567, 0x4536, + 0xD568, 0xD569, 0x0CE3, 0xD56A, 0xD56A, 0x4538, 0xD56B, 0xD56B, 0x0CE5, + 0xD56C, 0xD56C, 0x4539, 0xD56D, 0xD56D, 0x0CE6, 0xD56E, 0xD573, 0x453A, + 0xD574, 0xD575, 0x0CE7, 0xD576, 0xD577, 0x4540, 0xD578, 0xD578, 0x0CE9, + 0xD579, 0xD57B, 0x4542, 0xD57C, 0xD57C, 0x0CEA, 0xD57D, 0xD583, 0x4545, + 0xD584, 0xD585, 0x0CEB, 0xD586, 0xD586, 0x454C, 0xD587, 0xD589, 0x0CED, + 0xD58A, 0xD58F, 0x454D, 0xD590, 0xD590, 0x0CF0, 0xD591, 0xD5A4, 0x4553, + 0xD5A5, 0xD5A5, 0x0CF1, 0xD5A6, 0xD5C7, 0x4567, 0xD5C8, 0xD5C9, 0x0CF2, + 0xD5CA, 0xD5CB, 0x4589, 0xD5CC, 0xD5CC, 0x0CF4, 0xD5CD, 0xD5CF, 0x458B, + 0xD5D0, 0xD5D0, 0x0CF5, 0xD5D1, 0xD5D1, 0x458E, 0xD5D2, 0xD5D2, 0x0CF6, + 0xD5D3, 0xD5D7, 0x458F, 0xD5D8, 0xD5D9, 0x0CF7, 0xD5DA, 0xD5DA, 0x4594, + 0xD5DB, 0xD5DB, 0x0CF9, 0xD5DC, 0xD5DC, 0x4595, 0xD5DD, 0xD5DD, 0x0CFA, + 0xD5DE, 0xD5E3, 0x4596, 0xD5E4, 0xD5E5, 0x0CFB, 0xD5E6, 0xD5E7, 0x459C, + 0xD5E8, 0xD5E8, 0x0CFD, 0xD5E9, 0xD5EB, 0x459E, 0xD5EC, 0xD5EC, 0x0CFE, + 0xD5ED, 0xD5F3, 0x45A1, 0xD5F4, 0xD5F5, 0x0CFF, 0xD5F6, 0xD5F6, 0x45A8, + 0xD5F7, 0xD5F7, 0x0D01, 0xD5F8, 0xD5F8, 0x45A9, 0xD5F9, 0xD5F9, 0x0D02, + 0xD5FA, 0xD5FF, 0x45AA, 0xD600, 0xD601, 0x0D03, 0xD602, 0xD603, 0x45B0, + 0xD604, 0xD604, 0x0D05, 0xD605, 0xD607, 0x45B2, 0xD608, 0xD608, 0x0D06, + 0xD609, 0xD60F, 0x45B5, 0xD610, 0xD611, 0x0D07, 0xD612, 0xD612, 0x45BC, + 0xD613, 0xD615, 0x0D09, 0xD616, 0xD61B, 0x45BD, 0xD61C, 0xD61C, 0x0D0C, + 0xD61D, 0xD61F, 0x45C3, 0xD620, 0xD620, 0x0D0D, 0xD621, 0xD623, 0x45C6, + 0xD624, 0xD624, 0x0D0E, 0xD625, 0xD62C, 0x45C9, 0xD62D, 0xD62D, 0x0D0F, + 0xD62E, 0xD637, 0x45D1, 0xD638, 0xD639, 0x0D10, 0xD63A, 0xD63B, 0x45DB, + 0xD63C, 0xD63C, 0x0D12, 0xD63D, 0xD63F, 0x45DD, 0xD640, 0xD640, 0x0D13, + 0xD641, 0xD644, 0x45E0, 0xD645, 0xD645, 0x0D14, 0xD646, 0xD647, 0x45E4, + 0xD648, 0xD649, 0x0D15, 0xD64A, 0xD64A, 0x45E6, 0xD64B, 0xD64B, 0x0D17, + 0xD64C, 0xD64C, 0x45E7, 0xD64D, 0xD64D, 0x0D18, 0xD64E, 0xD650, 0x45E8, + 0xD651, 0xD651, 0x0D19, 0xD652, 0xD653, 0x45EB, 0xD654, 0xD655, 0x0D1A, + 0xD656, 0xD657, 0x45ED, 0xD658, 0xD658, 0x0D1C, 0xD659, 0xD65B, 0x45EF, + 0xD65C, 0xD65C, 0x0D1D, 0xD65D, 0xD666, 0x45F2, 0xD667, 0xD667, 0x0D1E, + 0xD668, 0xD668, 0x45FC, 0xD669, 0xD669, 0x0D1F, 0xD66A, 0xD66F, 0x45FD, + 0xD670, 0xD671, 0x0D20, 0xD672, 0xD673, 0x4603, 0xD674, 0xD674, 0x0D22, + 0xD675, 0xD682, 0x4605, 0xD683, 0xD683, 0x0D23, 0xD684, 0xD684, 0x4613, + 0xD685, 0xD685, 0x0D24, 0xD686, 0xD68B, 0x4614, 0xD68C, 0xD68D, 0x0D25, + 0xD68E, 0xD68F, 0x461A, 0xD690, 0xD690, 0x0D27, 0xD691, 0xD693, 0x461C, + 0xD694, 0xD694, 0x0D28, 0xD695, 0xD69C, 0x461F, 0xD69D, 0xD69D, 0x0D29, + 0xD69E, 0xD69E, 0x4627, 0xD69F, 0xD69F, 0x0D2A, 0xD6A0, 0xD6A0, 0x4628, + 0xD6A1, 0xD6A1, 0x0D2B, 0xD6A2, 0xD6A7, 0x4629, 0xD6A8, 0xD6A8, 0x0D2C, + 0xD6A9, 0xD6AB, 0x462F, 0xD6AC, 0xD6AC, 0x0D2D, 0xD6AD, 0xD6AF, 0x4632, + 0xD6B0, 0xD6B0, 0x0D2E, 0xD6B1, 0xD6B8, 0x4635, 0xD6B9, 0xD6B9, 0x0D2F, + 0xD6BA, 0xD6BA, 0x463D, 0xD6BB, 0xD6BB, 0x0D30, 0xD6BC, 0xD6C3, 0x463E, + 0xD6C4, 0xD6C5, 0x0D31, 0xD6C6, 0xD6C7, 0x4646, 0xD6C8, 0xD6C8, 0x0D33, + 0xD6C9, 0xD6CB, 0x4648, 0xD6CC, 0xD6CC, 0x0D34, 0xD6CD, 0xD6D0, 0x464B, + 0xD6D1, 0xD6D1, 0x0D35, 0xD6D2, 0xD6D3, 0x464F, 0xD6D4, 0xD6D4, 0x0D36, + 0xD6D5, 0xD6D6, 0x4651, 0xD6D7, 0xD6D7, 0x0D37, 0xD6D8, 0xD6D8, 0x4653, + 0xD6D9, 0xD6D9, 0x0D38, 0xD6DA, 0xD6DF, 0x4654, 0xD6E0, 0xD6E0, 0x0D39, + 0xD6E1, 0xD6E3, 0x465A, 0xD6E4, 0xD6E4, 0x0D3A, 0xD6E5, 0xD6E7, 0x465D, + 0xD6E8, 0xD6E8, 0x0D3B, 0xD6E9, 0xD6EF, 0x4660, 0xD6F0, 0xD6F0, 0x0D3C, + 0xD6F1, 0xD6F4, 0x4667, 0xD6F5, 0xD6F5, 0x0D3D, 0xD6F6, 0xD6FB, 0x466B, + 0xD6FC, 0xD6FD, 0x0D3E, 0xD6FE, 0xD6FF, 0x4671, 0xD700, 0xD700, 0x0D40, + 0xD701, 0xD703, 0x4673, 0xD704, 0xD704, 0x0D41, 0xD705, 0xD710, 0x4676, + 0xD711, 0xD711, 0x0D42, 0xD712, 0xD717, 0x4682, 0xD718, 0xD719, 0x0D43, + 0xD71A, 0xD71B, 0x4688, 0xD71C, 0xD71C, 0x0D45, 0xD71D, 0xD71F, 0x468A, + 0xD720, 0xD720, 0x0D46, 0xD721, 0xD727, 0x468D, 0xD728, 0xD729, 0x0D47, + 0xD72A, 0xD72A, 0x4694, 0xD72B, 0xD72B, 0x0D49, 0xD72C, 0xD72C, 0x4695, + 0xD72D, 0xD72D, 0x0D4A, 0xD72E, 0xD733, 0x4696, 0xD734, 0xD735, 0x0D4B, + 0xD736, 0xD737, 0x469C, 0xD738, 0xD738, 0x0D4D, 0xD739, 0xD73B, 0x469E, + 0xD73C, 0xD73C, 0x0D4E, 0xD73D, 0xD743, 0x46A1, 0xD744, 0xD744, 0x0D4F, + 0xD745, 0xD746, 0x46A8, 0xD747, 0xD747, 0x0D50, 0xD748, 0xD748, 0x46AA, + 0xD749, 0xD749, 0x0D51, 0xD74A, 0xD74F, 0x46AB, 0xD750, 0xD751, 0x0D52, + 0xD752, 0xD753, 0x46B1, 0xD754, 0xD754, 0x0D54, 0xD755, 0xD755, 0x46B3, + 0xD756, 0xD759, 0x0D55, 0xD75A, 0xD75F, 0x46B4, 0xD760, 0xD761, 0x0D59, + 0xD762, 0xD762, 0x46BA, 0xD763, 0xD763, 0x0D5B, 0xD764, 0xD764, 0x46BB, + 0xD765, 0xD765, 0x0D5C, 0xD766, 0xD768, 0x46BC, 0xD769, 0xD769, 0x0D5D, + 0xD76A, 0xD76B, 0x46BF, 0xD76C, 0xD76C, 0x0D5E, 0xD76D, 0xD76F, 0x46C1, + 0xD770, 0xD770, 0x0D5F, 0xD771, 0xD773, 0x46C4, 0xD774, 0xD774, 0x0D60, + 0xD775, 0xD77B, 0x46C7, 0xD77C, 0xD77D, 0x0D61, 0xD77E, 0xD780, 0x46CE, + 0xD781, 0xD781, 0x0D63, 0xD782, 0xD787, 0x46D1, 0xD788, 0xD789, 0x0D64, + 0xD78A, 0xD78B, 0x46D7, 0xD78C, 0xD78C, 0x0D66, 0xD78D, 0xD78F, 0x46D9, + 0xD790, 0xD790, 0x0D67, 0xD791, 0xD797, 0x46DC, 0xD798, 0xD799, 0x0D68, + 0xD79A, 0xD79A, 0x46E3, 0xD79B, 0xD79B, 0x0D6A, 0xD79C, 0xD79C, 0x46E4, + 0xD79D, 0xD79D, 0x0D6B, 0xD79E, 0xD7A3, 0x46E5, 0xF900, 0xF900, 0x1014, + 0xF901, 0xF901, 0x0E5E, 0xF902, 0xF902, 0x1B8D, 0xF903, 0xF903, 0x0D84, + 0xF904, 0xF904, 0x1EDC, 0xF905, 0xF905, 0x0EDA, 0xF906, 0xF906, 0x0F3E, + 0xF907, 0xF907, 0x0F6A, 0xF908, 0xF908, 0x0F6A, 0xF909, 0xF909, 0x0E7C, + 0xF90A, 0xF90A, 0x1023, 0xF90B, 0xF90B, 0x1116, 0xF90C, 0xF90C, 0x103C, + 0xF90D, 0xF913, 0x1117, 0xF914, 0xF914, 0x16A8, 0xF915, 0xF917, 0x111E, + 0xF918, 0xF91D, 0x1122, 0xF91E, 0xF920, 0x112A, 0xF921, 0xF921, 0x112F, + 0xF922, 0xF922, 0x1133, 0xF923, 0xF924, 0x1136, 0xF925, 0xF92B, 0x1139, + 0xF92C, 0xF92D, 0x1143, 0xF92E, 0xF92E, 0x1148, 0xF92F, 0xF92F, 0x119F, + 0xF930, 0xF931, 0x11A1, 0xF932, 0xF937, 0x11A5, 0xF938, 0xF93A, 0x11AC, + 0xF93B, 0xF940, 0x11B0, 0xF941, 0xF943, 0x11B7, 0xF944, 0xF945, 0x11BD, + 0xF946, 0xF948, 0x11C1, 0xF949, 0xF949, 0x11C6, 0xF94A, 0xF94A, 0x11D4, + 0xF94B, 0xF94E, 0x11D6, 0xF94F, 0xF950, 0x11DB, 0xF951, 0xF951, 0x11E0, + 0xF952, 0xF955, 0x11FC, 0xF956, 0xF959, 0x1201, 0xF95A, 0xF95A, 0x10DE, + 0xF95B, 0xF95B, 0x1028, 0xF95C, 0xF95C, 0x16A8, 0xF95D, 0xF95D, 0x102B, + 0xF95E, 0xF95E, 0x1060, 0xF95F, 0xF95F, 0x1047, 0xF960, 0xF960, 0x104C, + 0xF961, 0xF961, 0x15B0, 0xF962, 0xF962, 0x1918, 0xF963, 0xF963, 0x141F, + 0xF964, 0xF964, 0x133A, 0xF965, 0xF965, 0x1D5E, 0xF966, 0xF966, 0x13D7, + 0xF967, 0xF967, 0x13F5, 0xF968, 0xF968, 0x1DB7, 0xF969, 0xF969, 0x15D0, + 0xF96A, 0xF96A, 0x14F7, 0xF96B, 0xF96B, 0x1BAB, 0xF96C, 0xF96C, 0x14F2, + 0xF96D, 0xF96D, 0x156D, 0xF96E, 0xF96E, 0x1771, 0xF96F, 0xF96F, 0x1554, + 0xF970, 0xF970, 0x14C5, 0xF971, 0xF971, 0x1B61, 0xF972, 0xF972, 0x1CCA, + 0xF973, 0xF973, 0x162E, 0xF974, 0xF974, 0x16F2, 0xF975, 0xF977, 0x1149, + 0xF978, 0xF97A, 0x114D, 0xF97B, 0xF97D, 0x1153, 0xF97E, 0xF97E, 0x1157, + 0xF97F, 0xF980, 0x115A, 0xF981, 0xF981, 0x103F, 0xF982, 0xF982, 0x115C, + 0xF983, 0xF983, 0x115F, 0xF984, 0xF985, 0x1161, 0xF986, 0xF986, 0x1165, + 0xF987, 0xF98C, 0x1167, 0xF98D, 0xF98D, 0x116F, 0xF98E, 0xF98E, 0x1040, + 0xF98F, 0xF990, 0x1171, 0xF991, 0xF991, 0x1041, 0xF992, 0xF994, 0x1174, + 0xF995, 0xF995, 0x1042, 0xF996, 0xF997, 0x1177, 0xF998, 0xF998, 0x117A, + 0xF999, 0xF999, 0x1179, 0xF99A, 0xF99B, 0x117B, 0xF99C, 0xF99D, 0x117E, + 0xF99E, 0xF99E, 0x192F, 0xF99F, 0xF9A0, 0x1181, 0xF9A1, 0xF9A1, 0x1554, + 0xF9A2, 0xF9A2, 0x1183, 0xF9A3, 0xF9A3, 0x1043, 0xF9A4, 0xF9A4, 0x1046, + 0xF9A5, 0xF9A5, 0x1185, 0xF9A6, 0xF9A8, 0x1187, 0xF9A9, 0xF9A9, 0x118B, + 0xF9AA, 0xF9AA, 0x1047, 0xF9AB, 0xF9AD, 0x118D, 0xF9AE, 0xF9AE, 0x1E67, + 0xF9AF, 0xF9AF, 0x1191, 0xF9B0, 0xF9B0, 0x1193, 0xF9B1, 0xF9B4, 0x1195, + 0xF9B5, 0xF9B5, 0x119A, 0xF9B6, 0xF9B8, 0x119C, 0xF9B9, 0xF9B9, 0x16A5, + 0xF9BA, 0xF9BC, 0x11C7, 0xF9BD, 0xF9BD, 0x1054, 0xF9BE, 0xF9BE, 0x11CB, + 0xF9BF, 0xF9BF, 0x16A8, 0xF9C0, 0xF9C1, 0x11CC, 0xF9C2, 0xF9C3, 0x11D0, + 0xF9C4, 0xF9C4, 0x11D3, 0xF9C5, 0xF9C5, 0x1F34, 0xF9C6, 0xF9C6, 0x17EB, + 0xF9C7, 0xF9C7, 0x11E1, 0xF9C8, 0xF9C8, 0x1057, 0xF9C9, 0xF9C9, 0x11E3, + 0xF9CA, 0xF9CB, 0x11E5, 0xF9CC, 0xF9CC, 0x11E8, 0xF9CD, 0xF9CD, 0x11EA, + 0xF9CE, 0xF9CE, 0x11EC, 0xF9CF, 0xF9CF, 0x1058, 0xF9D0, 0xF9D3, 0x11EE, + 0xF9D4, 0xF9D6, 0x11F3, 0xF9D7, 0xF9DA, 0x11F7, 0xF9DB, 0xF9DB, 0x15B0, + 0xF9DC, 0xF9DC, 0x11FB, 0xF9DD, 0xF9DD, 0x1206, 0xF9DE, 0xF9DE, 0x1208, + 0xF9DF, 0xF9DF, 0x120A, 0xF9E0, 0xF9E0, 0x173E, 0xF9E1, 0xF9E2, 0x120C, + 0xF9E3, 0xF9E3, 0x105B, 0xF9E4, 0xF9E4, 0x1211, 0xF9E5, 0xF9E5, 0x1213, + 0xF9E6, 0xF9E6, 0x1215, 0xF9E7, 0xF9E9, 0x1218, 0xF9EA, 0xF9EA, 0x121C, + 0xF9EB, 0xF9EC, 0x105C, 0xF9ED, 0xF9ED, 0x121E, 0xF9EE, 0xF9F0, 0x1220, + 0xF9F1, 0xF9F5, 0x1224, 0xF9F6, 0xF9F6, 0x122A, 0xF9F7, 0xF9F9, 0x122D, + 0xF9FA, 0xF9FA, 0x14E7, 0xF9FB, 0xF9FB, 0x195E, 0xF9FC, 0xF9FC, 0x1663, + 0xF9FD, 0xF9FD, 0x168B, 0xF9FE, 0xF9FE, 0x105F, 0xF9FF, 0xF9FF, 0x1954, + 0xFA00, 0xFA00, 0x1A1C, 0xFA01, 0xFA01, 0x10B7, 0xFA02, 0xFA02, 0x1BE3, + 0xFA03, 0xFA03, 0x1097, 0xFA04, 0xFA04, 0x10AA, 0xFA05, 0xFA05, 0x10F4, + 0xFA06, 0xFA06, 0x1D94, 0xFA07, 0xFA07, 0x13E0, 0xFA08, 0xFA08, 0x1E1D, + 0xFA09, 0xFA09, 0x0DE6, 0xFA0A, 0xFA0A, 0x0E3C, 0xFA0B, 0xFA0B, 0x0EE7, + 0xFF01, 0xFF3B, 0x0108, 0xFF3C, 0xFF3C, 0x0070, 0xFF3D, 0xFF5D, 0x0144, + 0xFF5E, 0xFF5E, 0x0071, 0xFFE0, 0xFFE1, 0x008F, 0xFFE2, 0xFFE2, 0x00C2, + 0xFFE3, 0xFFE3, 0x0165, 0xFFE5, 0xFFE5, 0x0091, 0xFFE6, 0xFFE6, 0x0143, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp new file mode 100644 index 0000000000..834594d007 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp @@ -0,0 +1,16 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_UniKS_UCS2_V_1[18 * 3] = { + 0x2013, 0x2014, 0x1F7B, 0x2016, 0x2016, 0x1F7D, 0x2025, 0x2025, 0x1F7A, + 0x3001, 0x3002, 0x1F78, 0x3008, 0x3011, 0x1F81, 0x3013, 0x3013, 0x1F8B, + 0x3014, 0x3015, 0x1F7F, 0xFF01, 0xFF01, 0x1F8C, 0xFF08, 0xFF09, 0x1F8D, + 0xFF0C, 0xFF0C, 0x1F8F, 0xFF0E, 0xFF0E, 0x1F90, 0xFF1A, 0xFF1F, 0x1F91, + 0xFF3B, 0xFF3B, 0x1F97, 0xFF3D, 0xFF3D, 0x1F98, 0xFF3F, 0xFF3F, 0x1F99, + 0xFF5B, 0xFF5D, 0x1F9A, 0xFF5E, 0xFF5E, 0x1F7E, 0xFFE3, 0xFFE3, 0x1F9D, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp new file mode 100644 index 0000000000..81f0c6ea7e --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp @@ -0,0 +1,46 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +const FX_WORD g_FXCMAP_UniKS_UTF16_H_0[158 * 2] = { + 0x00A9, 0x0062, 0x2010, 0x0061, 0x20A9, 0x0060, 0x2F00, 0x193C, 0x2F04, + 0x18EC, 0x2F06, 0x190D, 0x2F08, 0x192B, 0x2F0A, 0x194D, 0x2F0B, 0x1D4B, + 0x2F11, 0x10AE, 0x2F12, 0x116A, 0x2F14, 0x143F, 0x2F17, 0x168C, 0x2F18, + 0x13D5, 0x2F1C, 0x1839, 0x2F1D, 0x0F3D, 0x2F1F, 0x1D1B, 0x2F20, 0x1487, + 0x2F23, 0x151B, 0x2F24, 0x109D, 0x2F25, 0x103F, 0x2F26, 0x1958, 0x2F28, + 0x1C4F, 0x2F29, 0x1580, 0x2F2B, 0x1641, 0x2F2D, 0x14B9, 0x2F2F, 0x0ECF, + 0x2F30, 0x0FED, 0x2F31, 0x0E14, 0x2F32, 0x0D99, 0x2F38, 0x0F7C, 0x2F3C, + 0x1684, 0x2F3D, 0x0EDC, 0x2F3E, 0x1E80, 0x2F3F, 0x15CC, 0x2F40, 0x1B27, + 0x2F42, 0x12E8, 0x2F43, 0x10FD, 0x2F44, 0x0FBB, 0x2F45, 0x1356, 0x2F46, + 0x12D3, 0x2F47, 0x1940, 0x2F48, 0x17ED, 0x2F49, 0x1889, 0x2F4A, 0x12B4, + 0x2F4B, 0x1F5B, 0x2F4C, 0x1B2C, 0x2F4F, 0x12D6, 0x2F50, 0x144C, 0x2F51, + 0x12A8, 0x2F52, 0x168E, 0x2F54, 0x15D3, 0x2F55, 0x1EBB, 0x2F56, 0x1A93, + 0x2F57, 0x1409, 0x2F58, 0x1F1A, 0x2F5A, 0x1D61, 0x2F5B, 0x1696, 0x2F5C, + 0x1842, 0x2F5D, 0x0E37, 0x2F5E, 0x1E3D, 0x2F5F, 0x17C1, 0x2F60, 0x0EDE, + 0x2F61, 0x17D4, 0x2F62, 0x0DC1, 0x2F63, 0x14FA, 0x2F64, 0x182D, 0x2F65, + 0x1A08, 0x2F66, 0x1DBA, 0x2F69, 0x1381, 0x2F6A, 0x1DB0, 0x2F6B, 0x1293, + 0x2F6C, 0x12B7, 0x2F6D, 0x12AD, 0x2F6E, 0x164D, 0x2F6F, 0x1525, 0x2F70, + 0x164E, 0x2F72, 0x1EBE, 0x2F73, 0x1E4B, 0x2F74, 0x122D, 0x2F75, 0x1AF4, + 0x2F76, 0x12FF, 0x2F78, 0x140C, 0x2F7A, 0x1708, 0x2F7B, 0x184A, 0x2F7C, + 0x11A7, 0x2F7D, 0x191B, 0x2F7F, 0x191C, 0x2F80, 0x18E0, 0x2F81, 0x18D5, + 0x2F82, 0x1675, 0x2F83, 0x1966, 0x2F84, 0x1B37, 0x2F85, 0x0F5A, 0x2F86, + 0x1550, 0x2F87, 0x1BF6, 0x2F88, 0x1AE8, 0x2F89, 0x0DA8, 0x2F8A, 0x14F8, + 0x2F8B, 0x1C40, 0x2F8E, 0x1E4C, 0x2F8F, 0x1E1D, 0x2F90, 0x1909, 0x2F92, + 0x0E3C, 0x2F93, 0x0D92, 0x2F94, 0x1721, 0x2F95, 0x0EBC, 0x2F96, 0x1103, + 0x2F97, 0x1656, 0x2F99, 0x1D58, 0x2F9A, 0x19EC, 0x2F9B, 0x1AEC, 0x2F9C, + 0x1AAE, 0x2F9D, 0x167B, 0x2F9E, 0x1B8D, 0x2F9F, 0x167C, 0x2FA0, 0x1B61, + 0x2FA2, 0x18F5, 0x2FA3, 0x18D0, 0x2FA5, 0x121A, 0x2FA6, 0x1023, 0x2FA7, + 0x19A8, 0x2FA8, 0x12EE, 0x2FA9, 0x141B, 0x2FAC, 0x1853, 0x2FAD, 0x1C23, + 0x2FAE, 0x1464, 0x2FAF, 0x1288, 0x2FB0, 0x1E35, 0x2FB1, 0x18A3, 0x2FB3, + 0x18F1, 0x2FB4, 0x1E4D, 0x2FB5, 0x1DAB, 0x2FB6, 0x1465, 0x2FB7, 0x1665, + 0x2FB8, 0x15F9, 0x2FB9, 0x1E26, 0x2FBA, 0x1235, 0x2FBB, 0x0EC9, 0x2FBC, + 0x0EB5, 0x2FC1, 0x0F99, 0x2FC2, 0x1716, 0x2FC3, 0x1AAB, 0x2FC4, 0x11AF, + 0x2FC5, 0x11B5, 0x2FC6, 0x1276, 0x2FC7, 0x1237, 0x2FC8, 0x1EF7, 0x2FC9, + 0x1519, 0x2FCA, 0x1F52, 0x2FCD, 0x1A66, 0x2FCE, 0x0EB6, 0x2FCF, 0x151A, + 0x2FD0, 0x1466, 0x2FD1, 0x1A7D, 0x2FD2, 0x1CBF, 0x2FD3, 0x11D3, 0x2FD4, + 0x0F6A, +}; diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp new file mode 100644 index 0000000000..e5072104d6 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp @@ -0,0 +1,50 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" + +#include "core/fpdfapi/fpdf_cmaps/cmap_int.h" +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). + +static const FXCMAP_CMap g_FXCMAP_Korea1_cmaps[] = { + {"KSC-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_KSC_EUC_H_0, 467, + FXCMAP_CMap::None, NULL, 0, 0}, + {"KSC-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_KSC_EUC_V_0, 16, + FXCMAP_CMap::None, NULL, 0, -1}, + {"KSCms-UHC-H", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_H_1, 675, + FXCMAP_CMap::None, NULL, 0, -2}, + {"KSCms-UHC-V", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_V_1, 16, + FXCMAP_CMap::None, NULL, 0, -1}, + {"KSCms-UHC-HW-H", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_HW_H_1, 675, + FXCMAP_CMap::None, NULL, 0, 0}, + {"KSCms-UHC-HW-V", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_HW_V_1, 16, + FXCMAP_CMap::None, NULL, 0, -1}, + {"KSCpc-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_KSCpc_EUC_H_0, 509, + FXCMAP_CMap::None, NULL, 0, -6}, + {"UniKS-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_H_1, 8394, + FXCMAP_CMap::None, NULL, 0, 0}, + {"UniKS-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_V_1, 18, + FXCMAP_CMap::None, NULL, 0, -1}, + {"UniKS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniKS_UTF16_H_0, 158, + FXCMAP_CMap::None, NULL, 0, -2}, + {"UniKS-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_V_1, 18, + FXCMAP_CMap::None, NULL, 0, -1}, +}; + +void CPDF_ModuleMgr::LoadEmbeddedKorea1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->m_EmbeddedCharsets[CIDSET_KOREA1].m_pMapList = + g_FXCMAP_Korea1_cmaps; + pFontGlobals->m_EmbeddedCharsets[CIDSET_KOREA1].m_Count = + FX_ArraySize(g_FXCMAP_Korea1_cmaps); + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_KOREA1].m_pMap = + g_FXCMAP_Korea1CID2Unicode_2; + pFontGlobals->m_EmbeddedToUnicodes[CIDSET_KOREA1].m_Count = 18352; +} diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h new file mode 100644 index 0000000000..0180658422 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h @@ -0,0 +1,24 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_ +#define CORE_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_ + +#include "core/include/fxcrt/fx_system.h" // For FX_WORD. + +extern const FX_WORD g_FXCMAP_KSC_EUC_H_0[]; +extern const FX_WORD g_FXCMAP_KSC_EUC_V_0[]; +extern const FX_WORD g_FXCMAP_KSCms_UHC_H_1[]; +extern const FX_WORD g_FXCMAP_KSCms_UHC_V_1[]; +extern const FX_WORD g_FXCMAP_KSCms_UHC_HW_H_1[]; +extern const FX_WORD g_FXCMAP_KSCms_UHC_HW_V_1[]; +extern const FX_WORD g_FXCMAP_KSCpc_EUC_H_0[]; +extern const FX_WORD g_FXCMAP_UniKS_UCS2_H_1[]; +extern const FX_WORD g_FXCMAP_UniKS_UCS2_V_1[]; +extern const FX_WORD g_FXCMAP_UniKS_UTF16_H_0[]; +extern const FX_WORD g_FXCMAP_Korea1CID2Unicode_2[]; + +#endif // CORE_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_ diff --git a/core/fpdfapi/fpdf_cmaps/cmap_int.h b/core/fpdfapi/fpdf_cmaps/cmap_int.h new file mode 100644 index 0000000000..a812d84f33 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/cmap_int.h @@ -0,0 +1,32 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_ +#define CORE_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_ + +#include "core/include/fxcrt/fx_system.h" // For FX_WORD. + +struct FXCMAP_CMap { + enum MapType { None, Single, Range, Reverse }; + + const char* m_Name; + MapType m_WordMapType; + const FX_WORD* m_pWordMap; + int m_WordCount; + MapType m_DWordMapType; + const FX_WORD* m_pDWordMap; + int m_DWordCount; + int m_UseOffset; +}; + +void FPDFAPI_FindEmbeddedCMap(const char* name, + int charset, + int coding, + const FXCMAP_CMap*& pMap); +FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, FX_DWORD charcode); +FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid); + +#endif // CORE_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_ diff --git a/core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp b/core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp new file mode 100644 index 0000000000..eed376db71 --- /dev/null +++ b/core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp @@ -0,0 +1,192 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_cmaps/cmap_int.h" + +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_resource.h" + +void FPDFAPI_FindEmbeddedCMap(const char* name, + int charset, + int coding, + const FXCMAP_CMap*& pMap) { + pMap = NULL; + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + const FXCMAP_CMap* pCMaps = + pFontGlobals->m_EmbeddedCharsets[charset].m_pMapList; + int nCMaps = pFontGlobals->m_EmbeddedCharsets[charset].m_Count; + for (int i = 0; i < nCMaps; i++) { + if (FXSYS_strcmp(name, pCMaps[i].m_Name)) { + continue; + } + pMap = &pCMaps[i]; + break; + } +} +extern "C" { +static int compareWord(const void* p1, const void* p2) { + return (*(FX_WORD*)p1) - (*(FX_WORD*)p2); +} +}; +extern "C" { +static int compareWordRange(const void* key, const void* element) { + if (*(FX_WORD*)key < *(FX_WORD*)element) { + return -1; + } + if (*(FX_WORD*)key > ((FX_WORD*)element)[1]) { + return 1; + } + return 0; +} +}; +extern "C" { +static int compareDWordRange(const void* p1, const void* p2) { + FX_DWORD key = *(FX_DWORD*)p1; + FX_WORD hiword = (FX_WORD)(key >> 16); + FX_WORD* element = (FX_WORD*)p2; + if (hiword < element[0]) { + return -1; + } + if (hiword > element[0]) { + return 1; + } + FX_WORD loword = (FX_WORD)key; + if (loword < element[1]) { + return -1; + } + if (loword > element[2]) { + return 1; + } + return 0; +} +}; +extern "C" { +static int compareDWordSingle(const void* p1, const void* p2) { + FX_DWORD key = *(FX_DWORD*)p1; + FX_DWORD value = ((*(FX_WORD*)p2) << 16) | ((FX_WORD*)p2)[1]; + if (key < value) { + return -1; + } + if (key > value) { + return 1; + } + return 0; +} +}; +FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, FX_DWORD charcode) { + if (charcode >> 16) { + while (1) { + if (pMap->m_DWordMapType == FXCMAP_CMap::Range) { + FX_WORD* found = + (FX_WORD*)FXSYS_bsearch(&charcode, pMap->m_pDWordMap, + pMap->m_DWordCount, 8, compareDWordRange); + if (found) { + return found[3] + (FX_WORD)charcode - found[1]; + } + } else if (pMap->m_DWordMapType == FXCMAP_CMap::Single) { + FX_WORD* found = + (FX_WORD*)FXSYS_bsearch(&charcode, pMap->m_pDWordMap, + pMap->m_DWordCount, 6, compareDWordSingle); + if (found) { + return found[2]; + } + } + if (pMap->m_UseOffset == 0) { + return 0; + } + pMap = pMap + pMap->m_UseOffset; + } + return 0; + } + FX_WORD code = (FX_WORD)charcode; + while (1) { + if (!pMap->m_pWordMap) { + return 0; + } + if (pMap->m_WordMapType == FXCMAP_CMap::Single) { + FX_WORD* found = (FX_WORD*)FXSYS_bsearch( + &code, pMap->m_pWordMap, pMap->m_WordCount, 4, compareWord); + if (found) { + return found[1]; + } + } else if (pMap->m_WordMapType == FXCMAP_CMap::Range) { + FX_WORD* found = (FX_WORD*)FXSYS_bsearch( + &code, pMap->m_pWordMap, pMap->m_WordCount, 6, compareWordRange); + if (found) { + return found[2] + code - found[0]; + } + } + if (pMap->m_UseOffset == 0) { + return 0; + } + pMap = pMap + pMap->m_UseOffset; + } + return 0; +} +FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid) { + while (1) { + if (pMap->m_WordMapType == FXCMAP_CMap::Single) { + const FX_WORD* pCur = pMap->m_pWordMap; + const FX_WORD* pEnd = pMap->m_pWordMap + pMap->m_WordCount * 2; + while (pCur < pEnd) { + if (pCur[1] == cid) { + return pCur[0]; + } + pCur += 2; + } + } else if (pMap->m_WordMapType == FXCMAP_CMap::Range) { + const FX_WORD* pCur = pMap->m_pWordMap; + const FX_WORD* pEnd = pMap->m_pWordMap + pMap->m_WordCount * 3; + while (pCur < pEnd) { + if (cid >= pCur[2] && cid <= pCur[2] + pCur[1] - pCur[0]) { + return pCur[0] + cid - pCur[2]; + } + pCur += 3; + } + } + if (pMap->m_UseOffset == 0) { + return 0; + } + pMap = pMap + pMap->m_UseOffset; + } + while (1) { + if (pMap->m_DWordMapType == FXCMAP_CMap::Range) { + const FX_WORD* pCur = pMap->m_pDWordMap; + const FX_WORD* pEnd = pMap->m_pDWordMap + pMap->m_DWordCount * 4; + while (pCur < pEnd) { + if (cid >= pCur[3] && cid <= pCur[3] + pCur[2] - pCur[1]) { + return (((FX_DWORD)pCur[0] << 16) | pCur[1]) + cid - pCur[3]; + } + pCur += 4; + } + } else if (pMap->m_DWordMapType == FXCMAP_CMap::Single) { + const FX_WORD* pCur = pMap->m_pDWordMap; + const FX_WORD* pEnd = pMap->m_pDWordMap + pMap->m_DWordCount * 3; + while (pCur < pEnd) { + if (pCur[2] == cid) { + return ((FX_DWORD)pCur[0] << 16) | pCur[1]; + } + pCur += 3; + } + } + if (pMap->m_UseOffset == 0) { + return 0; + } + pMap = pMap + pMap->m_UseOffset; + } + return 0; +} + +void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset, + const FX_WORD*& pMap, + FX_DWORD& count) { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pMap = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; + count = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count; +} diff --git a/core/fpdfapi/fpdf_edit/editint.h b/core/fpdfapi/fpdf_edit/editint.h new file mode 100644 index 0000000000..2e4b0cc067 --- /dev/null +++ b/core/fpdfapi/fpdf_edit/editint.h @@ -0,0 +1,74 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_EDIT_EDITINT_H_ +#define CORE_FPDFAPI_FPDF_EDIT_EDITINT_H_ + +#include + +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_stream.h" +#include "core/include/fxcrt/fx_system.h" + +class CPDF_Creator; +class CPDF_Object; + +class CPDF_ObjectStream { + public: + CPDF_ObjectStream(); + + FX_BOOL Start(); + + int32_t CompressIndirectObject(FX_DWORD dwObjNum, const CPDF_Object* pObj); + int32_t CompressIndirectObject(FX_DWORD dwObjNum, + const uint8_t* pBuffer, + FX_DWORD dwSize); + + FX_FILESIZE End(CPDF_Creator* pCreator); + + CFX_DWordArray m_ObjNumArray; + + CFX_ByteTextBuf m_Buffer; + FX_DWORD m_dwObjNum; + int32_t m_index; + + protected: + CFX_DWordArray m_OffsetArray; +}; +class CPDF_XRefStream { + public: + struct Index { + FX_DWORD objnum; + FX_DWORD count; + }; + + CPDF_XRefStream(); + + FX_BOOL Start(); + int32_t CompressIndirectObject(FX_DWORD dwObjNum, + const CPDF_Object* pObj, + CPDF_Creator* pCreator); + int32_t CompressIndirectObject(FX_DWORD dwObjNum, + const uint8_t* pBuffer, + FX_DWORD dwSize, + CPDF_Creator* pCreator); + FX_BOOL End(CPDF_Creator* pCreator, FX_BOOL bEOF = FALSE); + void AddObjectNumberToIndexArray(FX_DWORD objnum); + FX_BOOL EndXRefStream(CPDF_Creator* pCreator); + + std::vector m_IndexArray; + FX_FILESIZE m_PrevOffset; + FX_DWORD m_dwTempObjNum; + + protected: + int32_t EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF = TRUE); + FX_BOOL GenerateXRefStream(CPDF_Creator* pCreator, FX_BOOL bEOF); + size_t m_iSeg; + CPDF_ObjectStream m_ObjStream; + CFX_ByteTextBuf m_Buffer; +}; + +#endif // CORE_FPDFAPI_FPDF_EDIT_EDITINT_H_ diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp new file mode 100644 index 0000000000..ad77455949 --- /dev/null +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp @@ -0,0 +1,162 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fpdfapi/fpdf_serial.h" + +CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& ar, CFX_Matrix& matrix) { + ar << matrix.a << " " << matrix.b << " " << matrix.c << " " << matrix.d << " " + << matrix.e << " " << matrix.f; + return ar; +} + +CPDF_PageContentGenerator::CPDF_PageContentGenerator(CPDF_Page* pPage) + : m_pPage(pPage), m_pDocument(m_pPage->m_pDocument) { + for (const auto& pObj : *pPage->GetPageObjectList()) + InsertPageObject(pObj.get()); +} + +FX_BOOL CPDF_PageContentGenerator::InsertPageObject( + CPDF_PageObject* pPageObject) { + return pPageObject && m_pageObjects.Add(pPageObject); +} + +void CPDF_PageContentGenerator::GenerateContent() { + CFX_ByteTextBuf buf; + CPDF_Dictionary* pPageDict = m_pPage->m_pFormDict; + for (int i = 0; i < m_pageObjects.GetSize(); ++i) { + CPDF_PageObject* pPageObj = m_pageObjects[i]; + if (!pPageObj || !pPageObj->IsImage()) { + continue; + } + ProcessImage(buf, pPageObj->AsImage()); + } + CPDF_Object* pContent = + pPageDict ? pPageDict->GetElementValue("Contents") : NULL; + if (pContent) { + pPageDict->RemoveAt("Contents"); + } + CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); + pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); + m_pDocument->AddIndirectObject(pStream); + pPageDict->SetAtReference("Contents", m_pDocument, pStream->GetObjNum()); +} +CFX_ByteString CPDF_PageContentGenerator::RealizeResource( + CPDF_Object* pResourceObj, + const FX_CHAR* szType) { + if (!m_pPage->m_pResources) { + m_pPage->m_pResources = new CPDF_Dictionary; + int objnum = m_pDocument->AddIndirectObject(m_pPage->m_pResources); + m_pPage->m_pFormDict->SetAtReference("Resources", m_pDocument, objnum); + } + CPDF_Dictionary* pResList = m_pPage->m_pResources->GetDictBy(szType); + if (!pResList) { + pResList = new CPDF_Dictionary; + m_pPage->m_pResources->SetAt(szType, pResList); + } + m_pDocument->AddIndirectObject(pResourceObj); + CFX_ByteString name; + int idnum = 1; + while (1) { + name.Format("FX%c%d", szType[0], idnum); + if (!pResList->KeyExist(name)) { + break; + } + idnum++; + } + pResList->AddReference(name, m_pDocument, pResourceObj->GetObjNum()); + return name; +} +void CPDF_PageContentGenerator::ProcessImage(CFX_ByteTextBuf& buf, + CPDF_ImageObject* pImageObj) { + if ((pImageObj->m_Matrix.a == 0 && pImageObj->m_Matrix.b == 0) || + (pImageObj->m_Matrix.c == 0 && pImageObj->m_Matrix.d == 0)) { + return; + } + buf << "q " << pImageObj->m_Matrix << " cm "; + if (!pImageObj->m_pImage->IsInline()) { + CPDF_Stream* pStream = pImageObj->m_pImage->GetStream(); + FX_DWORD dwSavedObjNum = pStream->GetObjNum(); + CFX_ByteString name = RealizeResource(pStream, "XObject"); + if (dwSavedObjNum == 0) { + if (pImageObj->m_pImage) + pImageObj->m_pImage->Release(); + pImageObj->m_pImage = m_pDocument->GetPageData()->GetImage(pStream); + } + buf << "/" << PDF_NameEncode(name) << " Do Q\n"; + } +} +void CPDF_PageContentGenerator::ProcessForm(CFX_ByteTextBuf& buf, + const uint8_t* data, + FX_DWORD size, + CFX_Matrix& matrix) { + if (!data || !size) { + return; + } + CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); + CPDF_Dictionary* pFormDict = new CPDF_Dictionary; + pFormDict->SetAtName("Type", "XObject"); + pFormDict->SetAtName("Subtype", "Form"); + CFX_FloatRect bbox = m_pPage->GetPageBBox(); + matrix.TransformRect(bbox); + pFormDict->SetAtRect("BBox", bbox); + pStream->InitStream((uint8_t*)data, size, pFormDict); + buf << "q " << matrix << " cm "; + CFX_ByteString name = RealizeResource(pStream, "XObject"); + buf << "/" << PDF_NameEncode(name) << " Do Q\n"; +} +void CPDF_PageContentGenerator::TransformContent(CFX_Matrix& matrix) { + CPDF_Dictionary* pDict = m_pPage->m_pFormDict; + CPDF_Object* pContent = pDict ? pDict->GetElementValue("Contents") : NULL; + if (!pContent) + return; + + CFX_ByteTextBuf buf; + if (CPDF_Array* pArray = pContent->AsArray()) { + int iCount = pArray->GetCount(); + CPDF_StreamAcc** pContentArray = FX_Alloc(CPDF_StreamAcc*, iCount); + int size = 0; + int i = 0; + for (i = 0; i < iCount; ++i) { + pContent = pArray->GetElement(i); + CPDF_Stream* pStream = ToStream(pContent); + if (!pStream) + continue; + + CPDF_StreamAcc* pStreamAcc = new CPDF_StreamAcc(); + pStreamAcc->LoadAllData(pStream); + pContentArray[i] = pStreamAcc; + size += pContentArray[i]->GetSize() + 1; + } + int pos = 0; + uint8_t* pBuf = FX_Alloc(uint8_t, size); + for (i = 0; i < iCount; ++i) { + FXSYS_memcpy(pBuf + pos, pContentArray[i]->GetData(), + pContentArray[i]->GetSize()); + pos += pContentArray[i]->GetSize() + 1; + pBuf[pos - 1] = ' '; + delete pContentArray[i]; + } + ProcessForm(buf, pBuf, size, matrix); + FX_Free(pBuf); + FX_Free(pContentArray); + } else if (CPDF_Stream* pStream = pContent->AsStream()) { + CPDF_StreamAcc contentStream; + contentStream.LoadAllData(pStream); + ProcessForm(buf, contentStream.GetData(), contentStream.GetSize(), matrix); + } + CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); + pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); + m_pDocument->AddIndirectObject(pStream); + m_pPage->m_pFormDict->SetAtReference("Contents", m_pDocument, + pStream->GetObjNum()); +} diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp new file mode 100644 index 0000000000..2dc2e3eb8e --- /dev/null +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp @@ -0,0 +1,2076 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_edit/editint.h" + +#include + +#include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h" +#include "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fpdfapi/fpdf_serial.h" +#include "core/include/fpdfapi/ipdf_crypto_handler.h" +#include "core/include/fxcrt/fx_ext.h" +#include "third_party/base/stl_util.h" + +#define PDF_OBJECTSTREAM_MAXLENGTH (256 * 1024) +#define PDF_XREFSTREAM_MAXSIZE 10000 + +// TODO(ochang): Make helper for appending "objnum 0 R ". + +namespace { + +int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj, + CFX_FileBufferArchive* pFile, + FX_FILESIZE& offset) { + int32_t len = 0; + if (!pObj) { + if (pFile->AppendString(" null") < 0) { + return -1; + } + offset += 5; + return 1; + } + switch (pObj->GetType()) { + case CPDF_Object::NULLOBJ: + if (pFile->AppendString(" null") < 0) { + return -1; + } + offset += 5; + break; + case CPDF_Object::BOOLEAN: + case CPDF_Object::NUMBER: + if (pFile->AppendString(" ") < 0) { + return -1; + } + if ((len = pFile->AppendString(pObj->GetString())) < 0) { + return -1; + } + offset += len + 1; + break; + case CPDF_Object::STRING: { + CFX_ByteString str = pObj->GetString(); + FX_BOOL bHex = pObj->AsString()->IsHex(); + if ((len = pFile->AppendString(PDF_EncodeString(str, bHex))) < 0) { + return -1; + } + offset += len; + break; + } + case CPDF_Object::NAME: { + if (pFile->AppendString("/") < 0) { + return -1; + } + CFX_ByteString str = pObj->GetString(); + if ((len = pFile->AppendString(PDF_NameEncode(str))) < 0) { + return -1; + } + offset += len + 1; + break; + } + case CPDF_Object::REFERENCE: { + if (pFile->AppendString(" ") < 0) + return -1; + if ((len = pFile->AppendDWord(pObj->AsReference()->GetRefObjNum())) < 0) + return -1; + if (pFile->AppendString(" 0 R ") < 0) + return -1; + offset += len + 6; + break; + } + case CPDF_Object::ARRAY: { + if (pFile->AppendString("[") < 0) { + return -1; + } + offset += 1; + const CPDF_Array* p = pObj->AsArray(); + for (FX_DWORD i = 0; i < p->GetCount(); i++) { + CPDF_Object* pElement = p->GetElement(i); + if (pElement->GetObjNum()) { + if (pFile->AppendString(" ") < 0) { + return -1; + } + if ((len = pFile->AppendDWord(pElement->GetObjNum())) < 0) { + return -1; + } + if (pFile->AppendString(" 0 R") < 0) { + return -1; + } + offset += len + 5; + } else { + if (PDF_CreatorAppendObject(pElement, pFile, offset) < 0) { + return -1; + } + } + } + if (pFile->AppendString("]") < 0) { + return -1; + } + offset += 1; + break; + } + case CPDF_Object::DICTIONARY: { + if (pFile->AppendString("<<") < 0) { + return -1; + } + offset += 2; + const CPDF_Dictionary* p = pObj->AsDictionary(); + for (const auto& it : *p) { + const CFX_ByteString& key = it.first; + CPDF_Object* pValue = it.second; + if (pFile->AppendString("/") < 0) { + return -1; + } + if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) { + return -1; + } + offset += len + 1; + if (pValue->GetObjNum()) { + if (pFile->AppendString(" ") < 0) { + return -1; + } + if ((len = pFile->AppendDWord(pValue->GetObjNum())) < 0) { + return -1; + } + if (pFile->AppendString(" 0 R") < 0) { + return -1; + } + offset += len + 5; + } else { + if (PDF_CreatorAppendObject(pValue, pFile, offset) < 0) { + return -1; + } + } + } + if (pFile->AppendString(">>") < 0) { + return -1; + } + offset += 2; + break; + } + case CPDF_Object::STREAM: { + const CPDF_Stream* p = pObj->AsStream(); + if (PDF_CreatorAppendObject(p->GetDict(), pFile, offset) < 0) { + return -1; + } + if (pFile->AppendString("stream\r\n") < 0) { + return -1; + } + offset += 8; + CPDF_StreamAcc acc; + acc.LoadAllData(p, TRUE); + if (pFile->AppendBlock(acc.GetData(), acc.GetSize()) < 0) { + return -1; + } + offset += acc.GetSize(); + if ((len = pFile->AppendString("\r\nendstream")) < 0) { + return -1; + } + offset += len; + break; + } + default: + ASSERT(FALSE); + break; + } + return 1; +} + +int32_t PDF_CreatorWriteTrailer(CPDF_Document* pDocument, + CFX_FileBufferArchive* pFile, + CPDF_Array* pIDArray, + FX_BOOL bCompress) { + FX_FILESIZE offset = 0; + int32_t len = 0; + FXSYS_assert(pDocument && pFile); + CPDF_Parser* pParser = (CPDF_Parser*)pDocument->GetParser(); + if (pParser) { + CPDF_Dictionary* p = pParser->GetTrailer(); + for (const auto& it : *p) { + const CFX_ByteString& key = it.first; + CPDF_Object* pValue = it.second; + if (key == "Encrypt" || key == "Size" || key == "Filter" || + key == "Index" || key == "Length" || key == "Prev" || key == "W" || + key == "XRefStm" || key == "Type" || key == "ID") { + continue; + } + if (bCompress && key == "DecodeParms") { + continue; + } + if (pFile->AppendString(("/")) < 0) { + return -1; + } + if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) { + return -1; + } + offset += len + 1; + if (pValue->GetObjNum()) { + if (pFile->AppendString(" ") < 0) { + return -1; + } + if ((len = pFile->AppendDWord(pValue->GetObjNum())) < 0) { + return -1; + } + if (pFile->AppendString(" 0 R ") < 0) { + return -1; + } + offset += len + 6; + } else { + if (PDF_CreatorAppendObject(pValue, pFile, offset) < 0) { + return -1; + } + } + } + if (pIDArray) { + if (pFile->AppendString(("/ID")) < 0) { + return -1; + } + offset += 3; + if (PDF_CreatorAppendObject(pIDArray, pFile, offset) < 0) { + return -1; + } + } + return offset; + } + if (pFile->AppendString("\r\n/Root ") < 0) { + return -1; + } + if ((len = pFile->AppendDWord(pDocument->GetRoot()->GetObjNum())) < 0) { + return -1; + } + if (pFile->AppendString(" 0 R\r\n") < 0) { + return -1; + } + offset += len + 14; + if (pDocument->GetInfo()) { + if (pFile->AppendString("/Info ") < 0) { + return -1; + } + if ((len = pFile->AppendDWord(pDocument->GetInfo()->GetObjNum())) < 0) { + return -1; + } + if (pFile->AppendString(" 0 R\r\n") < 0) { + return -1; + } + offset += len + 12; + } + if (pIDArray) { + if (pFile->AppendString(("/ID")) < 0) { + return -1; + } + offset += 3; + if (PDF_CreatorAppendObject(pIDArray, pFile, offset) < 0) { + return -1; + } + } + return offset; +} + +int32_t PDF_CreatorWriteEncrypt(const CPDF_Dictionary* pEncryptDict, + FX_DWORD dwObjNum, + CFX_FileBufferArchive* pFile) { + if (!pEncryptDict) { + return 0; + } + FXSYS_assert(pFile); + FX_FILESIZE offset = 0; + int32_t len = 0; + if (pFile->AppendString("/Encrypt") < 0) { + return -1; + } + offset += 8; + if (pFile->AppendString(" ") < 0) { + return -1; + } + if ((len = pFile->AppendDWord(dwObjNum)) < 0) { + return -1; + } + if (pFile->AppendString(" 0 R ") < 0) { + return -1; + } + offset += len + 6; + return offset; +} + +std::vector PDF_GenerateFileID(FX_DWORD dwSeed1, FX_DWORD dwSeed2) { + std::vector buffer(sizeof(FX_DWORD) * 4); + FX_DWORD* pBuffer = reinterpret_cast(buffer.data()); + void* pContext = FX_Random_MT_Start(dwSeed1); + for (int i = 0; i < 2; ++i) + *pBuffer++ = FX_Random_MT_Generate(pContext); + FX_Random_MT_Close(pContext); + pContext = FX_Random_MT_Start(dwSeed2); + for (int i = 0; i < 2; ++i) + *pBuffer++ = FX_Random_MT_Generate(pContext); + FX_Random_MT_Close(pContext); + return buffer; +} + +void AppendIndex0(CFX_ByteTextBuf& buffer, bool bFirstObject) { + buffer.AppendByte(0); + buffer.AppendByte(0); + buffer.AppendByte(0); + buffer.AppendByte(0); + buffer.AppendByte(0); + const uint8_t byte = bFirstObject ? 0xFF : 0; + buffer.AppendByte(byte); + buffer.AppendByte(byte); +} + +void AppendIndex1(CFX_ByteTextBuf& buffer, FX_FILESIZE offset) { + buffer.AppendByte(1); + buffer.AppendByte(FX_GETBYTEOFFSET24(offset)); + buffer.AppendByte(FX_GETBYTEOFFSET16(offset)); + buffer.AppendByte(FX_GETBYTEOFFSET8(offset)); + buffer.AppendByte(FX_GETBYTEOFFSET0(offset)); + buffer.AppendByte(0); + buffer.AppendByte(0); +} + +void AppendIndex2(CFX_ByteTextBuf& buffer, FX_DWORD objnum, int32_t index) { + buffer.AppendByte(2); + buffer.AppendByte(FX_GETBYTEOFFSET24(objnum)); + buffer.AppendByte(FX_GETBYTEOFFSET16(objnum)); + buffer.AppendByte(FX_GETBYTEOFFSET8(objnum)); + buffer.AppendByte(FX_GETBYTEOFFSET0(objnum)); + buffer.AppendByte(FX_GETBYTEOFFSET8(index)); + buffer.AppendByte(FX_GETBYTEOFFSET0(index)); +} + +bool IsXRefNeedEnd(CPDF_XRefStream* pXRef, FX_DWORD flag) { + if (!(flag & FPDFCREATE_INCREMENTAL)) + return false; + + FX_DWORD iCount = 0; + for (const auto& pair : pXRef->m_IndexArray) + iCount += pair.count; + + return iCount >= PDF_XREFSTREAM_MAXSIZE; +} + +int32_t OutputIndex(CFX_FileBufferArchive* pFile, FX_FILESIZE offset) { + if (sizeof(offset) > 4) { + if (FX_GETBYTEOFFSET32(offset)) { + if (pFile->AppendByte(FX_GETBYTEOFFSET56(offset)) < 0) + return -1; + if (pFile->AppendByte(FX_GETBYTEOFFSET48(offset)) < 0) + return -1; + if (pFile->AppendByte(FX_GETBYTEOFFSET40(offset)) < 0) + return -1; + if (pFile->AppendByte(FX_GETBYTEOFFSET32(offset)) < 0) + return -1; + } + } + if (pFile->AppendByte(FX_GETBYTEOFFSET24(offset)) < 0) + return -1; + if (pFile->AppendByte(FX_GETBYTEOFFSET16(offset)) < 0) + return -1; + if (pFile->AppendByte(FX_GETBYTEOFFSET8(offset)) < 0) + return -1; + if (pFile->AppendByte(FX_GETBYTEOFFSET0(offset)) < 0) + return -1; + if (pFile->AppendByte(0) < 0) + return -1; + return 0; +} + +class CPDF_FlateEncoder { + public: + CPDF_FlateEncoder(); + ~CPDF_FlateEncoder(); + FX_BOOL Initialize(CPDF_Stream* pStream, FX_BOOL bFlateEncode); + FX_BOOL Initialize(const uint8_t* pBuffer, + FX_DWORD size, + FX_BOOL bFlateEncode, + FX_BOOL bXRefStream = FALSE); + void CloneDict(); + uint8_t* m_pData; + FX_DWORD m_dwSize; + CPDF_Dictionary* m_pDict; + FX_BOOL m_bCloned; + FX_BOOL m_bNewData; + CPDF_StreamAcc m_Acc; +}; +CPDF_FlateEncoder::CPDF_FlateEncoder() { + m_pData = NULL; + m_dwSize = 0; + m_pDict = NULL; + m_bCloned = FALSE; + m_bNewData = FALSE; +} +void CPDF_FlateEncoder::CloneDict() { + if (!m_bCloned) { + m_pDict = ToDictionary(m_pDict->Clone()); + ASSERT(m_pDict); + m_bCloned = TRUE; + } +} +FX_BOOL CPDF_FlateEncoder::Initialize(CPDF_Stream* pStream, + FX_BOOL bFlateEncode) { + m_Acc.LoadAllData(pStream, TRUE); + if ((pStream && pStream->GetDict() && + pStream->GetDict()->KeyExist("Filter")) || + !bFlateEncode) { + if (pStream->GetDict()->KeyExist("Filter") && !bFlateEncode) { + CPDF_StreamAcc destAcc; + destAcc.LoadAllData(pStream); + m_dwSize = destAcc.GetSize(); + m_pData = (uint8_t*)destAcc.DetachData(); + m_pDict = ToDictionary(pStream->GetDict()->Clone()); + m_pDict->RemoveAt("Filter"); + m_bNewData = TRUE; + m_bCloned = TRUE; + } else { + m_pData = (uint8_t*)m_Acc.GetData(); + m_dwSize = m_Acc.GetSize(); + m_pDict = pStream->GetDict(); + } + return TRUE; + } + m_pData = NULL; + m_dwSize = 0; + m_bNewData = TRUE; + m_bCloned = TRUE; + ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), m_pData, m_dwSize); + m_pDict = ToDictionary(pStream->GetDict()->Clone()); + m_pDict->SetAtInteger("Length", m_dwSize); + m_pDict->SetAtName("Filter", "FlateDecode"); + m_pDict->RemoveAt("DecodeParms"); + return TRUE; +} +FX_BOOL CPDF_FlateEncoder::Initialize(const uint8_t* pBuffer, + FX_DWORD size, + FX_BOOL bFlateEncode, + FX_BOOL bXRefStream) { + if (!bFlateEncode) { + m_pData = (uint8_t*)pBuffer; + m_dwSize = size; + return TRUE; + } + m_bNewData = TRUE; + if (bXRefStream) { + ::FlateEncode(pBuffer, size, 12, 1, 8, 7, m_pData, m_dwSize); + } else { + ::FlateEncode(pBuffer, size, m_pData, m_dwSize); + } + return TRUE; +} +CPDF_FlateEncoder::~CPDF_FlateEncoder() { + if (m_bCloned && m_pDict) { + m_pDict->Release(); + } + if (m_bNewData) { + FX_Free(m_pData); + } +} +class CPDF_Encryptor { + public: + CPDF_Encryptor(); + ~CPDF_Encryptor(); + FX_BOOL Initialize(IPDF_CryptoHandler* pHandler, + int objnum, + uint8_t* src_data, + FX_DWORD src_size); + uint8_t* m_pData; + FX_DWORD m_dwSize; + FX_BOOL m_bNewBuf; +}; +CPDF_Encryptor::CPDF_Encryptor() { + m_pData = NULL; + m_dwSize = 0; + m_bNewBuf = FALSE; +} +FX_BOOL CPDF_Encryptor::Initialize(IPDF_CryptoHandler* pHandler, + int objnum, + uint8_t* src_data, + FX_DWORD src_size) { + if (src_size == 0) { + return TRUE; + } + if (!pHandler) { + m_pData = (uint8_t*)src_data; + m_dwSize = src_size; + m_bNewBuf = FALSE; + return TRUE; + } + m_dwSize = pHandler->EncryptGetSize(objnum, 0, src_data, src_size); + m_pData = FX_Alloc(uint8_t, m_dwSize); + pHandler->EncryptContent(objnum, 0, src_data, src_size, m_pData, m_dwSize); + m_bNewBuf = TRUE; + return TRUE; +} +CPDF_Encryptor::~CPDF_Encryptor() { + if (m_bNewBuf) { + FX_Free(m_pData); + } +} + +} // namespace + +CPDF_ObjectStream::CPDF_ObjectStream() : m_dwObjNum(0), m_index(0) {} +FX_BOOL CPDF_ObjectStream::Start() { + m_ObjNumArray.RemoveAll(); + m_OffsetArray.RemoveAll(); + m_Buffer.Clear(); + m_dwObjNum = 0; + m_index = 0; + return TRUE; +} +int32_t CPDF_ObjectStream::CompressIndirectObject(FX_DWORD dwObjNum, + const CPDF_Object* pObj) { + m_ObjNumArray.Add(dwObjNum); + m_OffsetArray.Add(m_Buffer.GetLength()); + m_Buffer << pObj; + return 1; +} +int32_t CPDF_ObjectStream::CompressIndirectObject(FX_DWORD dwObjNum, + const uint8_t* pBuffer, + FX_DWORD dwSize) { + m_ObjNumArray.Add(dwObjNum); + m_OffsetArray.Add(m_Buffer.GetLength()); + m_Buffer.AppendBlock(pBuffer, dwSize); + return 1; +} +FX_FILESIZE CPDF_ObjectStream::End(CPDF_Creator* pCreator) { + FXSYS_assert(pCreator); + if (m_ObjNumArray.GetSize() == 0) { + return 0; + } + CFX_FileBufferArchive* pFile = &pCreator->m_File; + IPDF_CryptoHandler* pHandler = pCreator->m_pCryptoHandler; + FX_FILESIZE ObjOffset = pCreator->m_Offset; + if (!m_dwObjNum) { + m_dwObjNum = ++pCreator->m_dwLastObjNum; + } + CFX_ByteTextBuf tempBuffer; + int32_t iCount = m_ObjNumArray.GetSize(); + for (int32_t i = 0; i < iCount; i++) { + tempBuffer << m_ObjNumArray.ElementAt(i) << " " + << m_OffsetArray.ElementAt(i) << " "; + } + FX_FILESIZE& offset = pCreator->m_Offset; + int32_t len = pFile->AppendDWord(m_dwObjNum); + if (len < 0) { + return -1; + } + offset += len; + if ((len = pFile->AppendString(" 0 obj\r\n<AppendDWord((FX_DWORD)iCount)) < 0) { + return -1; + } + offset += len; + if (pFile->AppendString("/First ") < 0) { + return -1; + } + if ((len = pFile->AppendDWord((FX_DWORD)tempBuffer.GetLength())) < 0) { + return -1; + } + if (pFile->AppendString("/Length ") < 0) { + return -1; + } + offset += len + 15; + if (!pCreator->m_bCompress && !pHandler) { + if ((len = pFile->AppendDWord( + (FX_DWORD)(tempBuffer.GetLength() + m_Buffer.GetLength()))) < 0) { + return -1; + } + offset += len; + if ((len = pFile->AppendString(">>stream\r\n")) < 0) { + return -1; + } + if (pFile->AppendBlock(tempBuffer.GetBuffer(), tempBuffer.GetLength()) < + 0) { + return -1; + } + if (pFile->AppendBlock(m_Buffer.GetBuffer(), m_Buffer.GetLength()) < 0) { + return -1; + } + offset += len + tempBuffer.GetLength() + m_Buffer.GetLength(); + } else { + tempBuffer << m_Buffer; + CPDF_FlateEncoder encoder; + encoder.Initialize(tempBuffer.GetBuffer(), tempBuffer.GetLength(), + pCreator->m_bCompress); + CPDF_Encryptor encryptor; + encryptor.Initialize(pHandler, m_dwObjNum, encoder.m_pData, + encoder.m_dwSize); + if ((len = pFile->AppendDWord(encryptor.m_dwSize)) < 0) { + return -1; + } + offset += len; + if (pCreator->m_bCompress) { + if (pFile->AppendString("/Filter /FlateDecode") < 0) { + return -1; + } + offset += 20; + } + if ((len = pFile->AppendString(">>stream\r\n")) < 0) { + return -1; + } + if (pFile->AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) { + return -1; + } + offset += len + encryptor.m_dwSize; + } + if ((len = pFile->AppendString("\r\nendstream\r\nendobj\r\n")) < 0) { + return -1; + } + offset += len; + return ObjOffset; +} +CPDF_XRefStream::CPDF_XRefStream() + : m_PrevOffset(0), m_dwTempObjNum(0), m_iSeg(0) {} +FX_BOOL CPDF_XRefStream::Start() { + m_IndexArray.clear(); + m_Buffer.Clear(); + m_iSeg = 0; + return TRUE; +} +int32_t CPDF_XRefStream::CompressIndirectObject(FX_DWORD dwObjNum, + const CPDF_Object* pObj, + CPDF_Creator* pCreator) { + if (!pCreator) { + return 0; + } + m_ObjStream.CompressIndirectObject(dwObjNum, pObj); + if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize && + m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) { + return 1; + } + return EndObjectStream(pCreator); +} +int32_t CPDF_XRefStream::CompressIndirectObject(FX_DWORD dwObjNum, + const uint8_t* pBuffer, + FX_DWORD dwSize, + CPDF_Creator* pCreator) { + if (!pCreator) { + return 0; + } + m_ObjStream.CompressIndirectObject(dwObjNum, pBuffer, dwSize); + if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize && + m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) { + return 1; + } + return EndObjectStream(pCreator); +} + +int32_t CPDF_XRefStream::EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF) { + FX_FILESIZE objOffset = 0; + if (bEOF) { + objOffset = m_ObjStream.End(pCreator); + if (objOffset < 0) { + return -1; + } + } + FX_DWORD& dwObjStmNum = m_ObjStream.m_dwObjNum; + if (!dwObjStmNum) { + dwObjStmNum = ++pCreator->m_dwLastObjNum; + } + int32_t iSize = m_ObjStream.m_ObjNumArray.GetSize(); + size_t iSeg = m_IndexArray.size(); + if (!(pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL)) { + if (m_dwTempObjNum == 0) { + AppendIndex0(m_Buffer, true); + m_dwTempObjNum++; + } + FX_DWORD end_num = m_IndexArray.back().objnum + m_IndexArray.back().count; + int index = 0; + for (; m_dwTempObjNum < end_num; m_dwTempObjNum++) { + FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(m_dwTempObjNum); + if (offset) { + if (index >= iSize || + m_dwTempObjNum != m_ObjStream.m_ObjNumArray[index]) { + AppendIndex1(m_Buffer, *offset); + } else { + AppendIndex2(m_Buffer, dwObjStmNum, index++); + } + } else { + AppendIndex0(m_Buffer, false); + } + } + if (iSize > 0 && bEOF) { + pCreator->m_ObjectOffset.Add(dwObjStmNum, 1); + pCreator->m_ObjectOffset[dwObjStmNum] = objOffset; + } + m_iSeg = iSeg; + if (bEOF) { + m_ObjStream.Start(); + } + return 1; + } + for (auto it = m_IndexArray.begin() + m_iSeg; it != m_IndexArray.end(); + ++it) { + for (FX_DWORD m = it->objnum; m < it->objnum + it->count; ++m) { + if (m_ObjStream.m_index >= iSize || + m != m_ObjStream.m_ObjNumArray.ElementAt(it - m_IndexArray.begin())) { + AppendIndex1(m_Buffer, pCreator->m_ObjectOffset[m]); + } else { + AppendIndex2(m_Buffer, dwObjStmNum, m_ObjStream.m_index++); + } + } + } + if (iSize > 0 && bEOF) { + AppendIndex1(m_Buffer, objOffset); + m_IndexArray.push_back({dwObjStmNum, 1}); + iSeg += 1; + } + m_iSeg = iSeg; + if (bEOF) { + m_ObjStream.Start(); + } + return 1; +} +FX_BOOL CPDF_XRefStream::GenerateXRefStream(CPDF_Creator* pCreator, + FX_BOOL bEOF) { + FX_FILESIZE offset_tmp = pCreator->m_Offset; + FX_DWORD objnum = ++pCreator->m_dwLastObjNum; + CFX_FileBufferArchive* pFile = &pCreator->m_File; + FX_BOOL bIncremental = (pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL) != 0; + if (bIncremental) { + AddObjectNumberToIndexArray(objnum); + } else { + for (; m_dwTempObjNum < pCreator->m_dwLastObjNum; m_dwTempObjNum++) { + FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(m_dwTempObjNum); + if (offset) { + AppendIndex1(m_Buffer, *offset); + } else { + AppendIndex0(m_Buffer, false); + } + } + } + AppendIndex1(m_Buffer, offset_tmp); + FX_FILESIZE& offset = pCreator->m_Offset; + int32_t len = pFile->AppendDWord(objnum); + if (len < 0) { + return FALSE; + } + offset += len; + if ((len = pFile->AppendString(" 0 obj\r\n<AppendDWord(0)) < 0) { + return FALSE; + } + if ((len = pFile->AppendString(" ")) < 0) { + return FALSE; + } + offset += len + 1; + if ((len = pFile->AppendDWord(objnum + 1)) < 0) { + return FALSE; + } + offset += len; + } else { + for (const auto& pair : m_IndexArray) { + if ((len = pFile->AppendDWord(pair.objnum)) < 0) { + return FALSE; + } + if (pFile->AppendString(" ") < 0) { + return FALSE; + } + offset += len + 1; + if ((len = pFile->AppendDWord(pair.count)) < 0) { + return FALSE; + } + if (pFile->AppendString(" ") < 0) { + return FALSE; + } + offset += len + 1; + } + } + if (pFile->AppendString("]/Size ") < 0) { + return FALSE; + } + if ((len = pFile->AppendDWord(objnum + 1)) < 0) { + return FALSE; + } + offset += len + 7; + if (m_PrevOffset > 0) { + if (pFile->AppendString("/Prev ") < 0) { + return FALSE; + } + FX_CHAR offset_buf[20]; + FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); + FXSYS_i64toa(m_PrevOffset, offset_buf, 10); + int32_t len = (int32_t)FXSYS_strlen(offset_buf); + if (pFile->AppendBlock(offset_buf, len) < 0) { + return FALSE; + } + offset += len + 6; + } + FX_BOOL bPredictor = TRUE; + CPDF_FlateEncoder encoder; + encoder.Initialize(m_Buffer.GetBuffer(), m_Buffer.GetLength(), + pCreator->m_bCompress, bPredictor); + if (pCreator->m_bCompress) { + if (pFile->AppendString("/Filter /FlateDecode") < 0) { + return FALSE; + } + offset += 20; + if (bPredictor) { + if ((len = pFile->AppendString( + "/DecodeParms<>")) < 0) { + return FALSE; + } + offset += len; + } + } + if (pFile->AppendString("/Length ") < 0) { + return FALSE; + } + if ((len = pFile->AppendDWord(encoder.m_dwSize)) < 0) { + return FALSE; + } + offset += len + 8; + if (bEOF) { + if ((len = PDF_CreatorWriteTrailer(pCreator->m_pDocument, pFile, + pCreator->m_pIDArray, + pCreator->m_bCompress)) < 0) { + return FALSE; + } + offset += len; + if (pCreator->m_pEncryptDict) { + FX_DWORD dwEncryptObjNum = pCreator->m_pEncryptDict->GetObjNum(); + if (dwEncryptObjNum == 0) { + dwEncryptObjNum = pCreator->m_dwEnryptObjNum; + } + if ((len = PDF_CreatorWriteEncrypt(pCreator->m_pEncryptDict, + dwEncryptObjNum, pFile)) < 0) { + return FALSE; + } + offset += len; + } + } + if ((len = pFile->AppendString(">>stream\r\n")) < 0) { + return FALSE; + } + offset += len; + if (pFile->AppendBlock(encoder.m_pData, encoder.m_dwSize) < 0) { + return FALSE; + } + if ((len = pFile->AppendString("\r\nendstream\r\nendobj\r\n")) < 0) { + return FALSE; + } + offset += encoder.m_dwSize + len; + m_PrevOffset = offset_tmp; + return TRUE; +} +FX_BOOL CPDF_XRefStream::End(CPDF_Creator* pCreator, FX_BOOL bEOF) { + if (EndObjectStream(pCreator, bEOF) < 0) { + return FALSE; + } + return GenerateXRefStream(pCreator, bEOF); +} +FX_BOOL CPDF_XRefStream::EndXRefStream(CPDF_Creator* pCreator) { + if (!(pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL)) { + AppendIndex0(m_Buffer, true); + for (FX_DWORD i = 1; i < pCreator->m_dwLastObjNum + 1; i++) { + FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(i); + if (offset) { + AppendIndex1(m_Buffer, *offset); + } else { + AppendIndex0(m_Buffer, false); + } + } + } else { + for (const auto& pair : m_IndexArray) { + for (FX_DWORD j = pair.objnum; j < pair.objnum + pair.count; ++j) + AppendIndex1(m_Buffer, pCreator->m_ObjectOffset[j]); + } + } + return GenerateXRefStream(pCreator, FALSE); +} +void CPDF_XRefStream::AddObjectNumberToIndexArray(FX_DWORD objnum) { + if (m_IndexArray.empty()) { + m_IndexArray.push_back({objnum, 1}); + return; + } + FX_DWORD next_objnum = m_IndexArray.back().objnum + m_IndexArray.back().count; + if (objnum == next_objnum) + m_IndexArray.back().count += 1; + else + m_IndexArray.push_back({objnum, 1}); +} +CPDF_Creator::CPDF_Creator(CPDF_Document* pDoc) { + m_pDocument = pDoc; + m_pParser = (CPDF_Parser*)pDoc->m_pParser; + m_bCompress = TRUE; + if (m_pParser) { + m_pEncryptDict = m_pParser->GetEncryptDict(); + m_pCryptoHandler = m_pParser->GetCryptoHandler(); + } else { + m_pEncryptDict = NULL; + m_pCryptoHandler = NULL; + } + m_bSecurityChanged = FALSE; + m_bStandardSecurity = FALSE; + m_pMetadata = NULL; + m_bEncryptCloned = FALSE; + m_bEncryptMetadata = FALSE; + m_Offset = 0; + m_iStage = -1; + m_dwFlags = 0; + m_Pos = NULL; + m_XrefStart = 0; + m_pXRefStream = NULL; + m_ObjectStreamSize = 200; + m_dwLastObjNum = m_pDocument->GetLastObjNum(); + m_pIDArray = NULL; + m_FileVersion = 0; + m_dwEnryptObjNum = 0; + m_bNewCrypto = FALSE; +} +CPDF_Creator::~CPDF_Creator() { + ResetStandardSecurity(); + if (m_bEncryptCloned && m_pEncryptDict) { + m_pEncryptDict->Release(); + m_pEncryptDict = NULL; + } + Clear(); +} + +int32_t CPDF_Creator::WriteIndirectObjectToStream(const CPDF_Object* pObj) { + if (!m_pXRefStream) + return 1; + + FX_DWORD objnum = pObj->GetObjNum(); + if (m_pParser && m_pParser->GetObjectGenNum(objnum) > 0) + return 1; + + if (pObj->IsNumber()) + return 1; + + CPDF_Dictionary* pDict = pObj->GetDict(); + if (pObj->IsStream()) { + if (pDict && pDict->GetStringBy("Type") == "XRef") + return 0; + return 1; + } + + if (pDict) { + if (pDict == m_pDocument->m_pRootDict || pDict == m_pEncryptDict) + return 1; + if (pDict->IsSignatureDict()) + return 1; + if (pDict->GetStringBy("Type") == "Page") + return 1; + } + + m_pXRefStream->AddObjectNumberToIndexArray(objnum); + if (m_pXRefStream->CompressIndirectObject(objnum, pObj, this) < 0) + return -1; + if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) + return 0; + if (!m_pXRefStream->End(this)) + return -1; + if (!m_pXRefStream->Start()) + return -1; + return 0; +} +int32_t CPDF_Creator::WriteIndirectObjectToStream(FX_DWORD objnum, + const uint8_t* pBuffer, + FX_DWORD dwSize) { + if (!m_pXRefStream) { + return 1; + } + m_pXRefStream->AddObjectNumberToIndexArray(objnum); + int32_t iRet = + m_pXRefStream->CompressIndirectObject(objnum, pBuffer, dwSize, this); + if (iRet < 1) { + return iRet; + } + if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) { + return 0; + } + if (!m_pXRefStream->End(this)) { + return -1; + } + if (!m_pXRefStream->Start()) { + return -1; + } + return 0; +} +int32_t CPDF_Creator::AppendObjectNumberToXRef(FX_DWORD objnum) { + if (!m_pXRefStream) { + return 1; + } + m_pXRefStream->AddObjectNumberToIndexArray(objnum); + if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) { + return 0; + } + if (!m_pXRefStream->End(this)) { + return -1; + } + if (!m_pXRefStream->Start()) { + return -1; + } + return 0; +} +int32_t CPDF_Creator::WriteStream(const CPDF_Object* pStream, + FX_DWORD objnum, + IPDF_CryptoHandler* pCrypto) { + CPDF_FlateEncoder encoder; + encoder.Initialize(const_cast(pStream->AsStream()), + pStream == m_pMetadata ? FALSE : m_bCompress); + CPDF_Encryptor encryptor; + if (!encryptor.Initialize(pCrypto, objnum, encoder.m_pData, + encoder.m_dwSize)) { + return -1; + } + if ((FX_DWORD)encoder.m_pDict->GetIntegerBy("Length") != encryptor.m_dwSize) { + encoder.CloneDict(); + encoder.m_pDict->SetAtInteger("Length", encryptor.m_dwSize); + } + if (WriteDirectObj(objnum, encoder.m_pDict) < 0) { + return -1; + } + int len = m_File.AppendString("stream\r\n"); + if (len < 0) { + return -1; + } + m_Offset += len; + if (m_File.AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) { + return -1; + } + m_Offset += encryptor.m_dwSize; + if ((len = m_File.AppendString("\r\nendstream")) < 0) { + return -1; + } + m_Offset += len; + return 1; +} +int32_t CPDF_Creator::WriteIndirectObj(FX_DWORD objnum, + const CPDF_Object* pObj) { + int32_t len = m_File.AppendDWord(objnum); + if (len < 0) + return -1; + + m_Offset += len; + if ((len = m_File.AppendString(" 0 obj\r\n")) < 0) + return -1; + + m_Offset += len; + if (pObj->IsStream()) { + IPDF_CryptoHandler* pHandler = nullptr; + pHandler = + (pObj == m_pMetadata && !m_bEncryptMetadata) ? NULL : m_pCryptoHandler; + if (WriteStream(pObj, objnum, pHandler) < 0) + return -1; + } else { + if (WriteDirectObj(objnum, pObj) < 0) + return -1; + } + if ((len = m_File.AppendString("\r\nendobj\r\n")) < 0) + return -1; + + m_Offset += len; + if (AppendObjectNumberToXRef(objnum) < 0) + return -1; + return 0; +} +int32_t CPDF_Creator::WriteIndirectObj(const CPDF_Object* pObj) { + int32_t iRet = WriteIndirectObjectToStream(pObj); + if (iRet < 1) { + return iRet; + } + return WriteIndirectObj(pObj->GetObjNum(), pObj); +} +int32_t CPDF_Creator::WriteDirectObj(FX_DWORD objnum, + const CPDF_Object* pObj, + FX_BOOL bEncrypt) { + int32_t len = 0; + if (!pObj) { + if (m_File.AppendString(" null") < 0) { + return -1; + } + m_Offset += 5; + return 1; + } + switch (pObj->GetType()) { + case CPDF_Object::NULLOBJ: + if (m_File.AppendString(" null") < 0) { + return -1; + } + m_Offset += 5; + break; + case CPDF_Object::BOOLEAN: + case CPDF_Object::NUMBER: + if (m_File.AppendString(" ") < 0) { + return -1; + } + if ((len = m_File.AppendString(pObj->GetString())) < 0) { + return -1; + } + m_Offset += len + 1; + break; + case CPDF_Object::STRING: { + CFX_ByteString str = pObj->GetString(); + FX_BOOL bHex = pObj->AsString()->IsHex(); + if (!m_pCryptoHandler || !bEncrypt) { + CFX_ByteString content = PDF_EncodeString(str, bHex); + if ((len = m_File.AppendString(content)) < 0) { + return -1; + } + m_Offset += len; + break; + } + CPDF_Encryptor encryptor; + encryptor.Initialize(m_pCryptoHandler, objnum, (uint8_t*)str.c_str(), + str.GetLength()); + CFX_ByteString content = PDF_EncodeString( + CFX_ByteString((const FX_CHAR*)encryptor.m_pData, encryptor.m_dwSize), + bHex); + if ((len = m_File.AppendString(content)) < 0) { + return -1; + } + m_Offset += len; + break; + } + case CPDF_Object::STREAM: { + CPDF_FlateEncoder encoder; + encoder.Initialize(const_cast(pObj->AsStream()), + m_bCompress); + CPDF_Encryptor encryptor; + IPDF_CryptoHandler* pHandler = m_pCryptoHandler; + encryptor.Initialize(pHandler, objnum, encoder.m_pData, encoder.m_dwSize); + if ((FX_DWORD)encoder.m_pDict->GetIntegerBy("Length") != + encryptor.m_dwSize) { + encoder.CloneDict(); + encoder.m_pDict->SetAtInteger("Length", encryptor.m_dwSize); + } + if (WriteDirectObj(objnum, encoder.m_pDict) < 0) { + return -1; + } + if ((len = m_File.AppendString("stream\r\n")) < 0) { + return -1; + } + m_Offset += len; + if (m_File.AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) { + return -1; + } + m_Offset += encryptor.m_dwSize; + if ((len = m_File.AppendString("\r\nendstream")) < 0) { + return -1; + } + m_Offset += len; + break; + } + case CPDF_Object::NAME: { + if (m_File.AppendString("/") < 0) { + return -1; + } + CFX_ByteString str = pObj->GetString(); + if ((len = m_File.AppendString(PDF_NameEncode(str))) < 0) { + return -1; + } + m_Offset += len + 1; + break; + } + case CPDF_Object::REFERENCE: { + if (m_File.AppendString(" ") < 0) + return -1; + if ((len = m_File.AppendDWord(pObj->AsReference()->GetRefObjNum())) < 0) + return -1; + if (m_File.AppendString(" 0 R") < 0) + return -1; + m_Offset += len + 5; + break; + } + case CPDF_Object::ARRAY: { + if (m_File.AppendString("[") < 0) { + return -1; + } + m_Offset += 1; + const CPDF_Array* p = pObj->AsArray(); + for (FX_DWORD i = 0; i < p->GetCount(); i++) { + CPDF_Object* pElement = p->GetElement(i); + if (pElement->GetObjNum()) { + if (m_File.AppendString(" ") < 0) { + return -1; + } + if ((len = m_File.AppendDWord(pElement->GetObjNum())) < 0) { + return -1; + } + if (m_File.AppendString(" 0 R") < 0) { + return -1; + } + m_Offset += len + 5; + } else { + if (WriteDirectObj(objnum, pElement) < 0) { + return -1; + } + } + } + if (m_File.AppendString("]") < 0) { + return -1; + } + m_Offset += 1; + break; + } + case CPDF_Object::DICTIONARY: { + if (!m_pCryptoHandler || pObj == m_pEncryptDict) { + return PDF_CreatorAppendObject(pObj, &m_File, m_Offset); + } + if (m_File.AppendString("<<") < 0) { + return -1; + } + m_Offset += 2; + const CPDF_Dictionary* p = pObj->AsDictionary(); + bool bSignDict = p->IsSignatureDict(); + for (const auto& it : *p) { + FX_BOOL bSignValue = FALSE; + const CFX_ByteString& key = it.first; + CPDF_Object* pValue = it.second; + if (m_File.AppendString("/") < 0) { + return -1; + } + if ((len = m_File.AppendString(PDF_NameEncode(key))) < 0) { + return -1; + } + m_Offset += len + 1; + if (bSignDict && key == "Contents") { + bSignValue = TRUE; + } + if (pValue->GetObjNum()) { + if (m_File.AppendString(" ") < 0) { + return -1; + } + if ((len = m_File.AppendDWord(pValue->GetObjNum())) < 0) { + return -1; + } + if (m_File.AppendString(" 0 R ") < 0) { + return -1; + } + m_Offset += len + 6; + } else { + if (WriteDirectObj(objnum, pValue, !bSignValue) < 0) { + return -1; + } + } + } + if (m_File.AppendString(">>") < 0) { + return -1; + } + m_Offset += 2; + break; + } + } + return 1; +} +int32_t CPDF_Creator::WriteOldIndirectObject(FX_DWORD objnum) { + if (m_pParser->IsObjectFreeOrNull(objnum)) + return 0; + + m_ObjectOffset[objnum] = m_Offset; + FX_BOOL bExistInMap = + pdfium::ContainsKey(m_pDocument->m_IndirectObjs, objnum); + const uint8_t object_type = m_pParser->GetObjectType(objnum); + bool bObjStm = (object_type == 2) && m_pEncryptDict && !m_pXRefStream; + if (m_pParser->IsVersionUpdated() || m_bSecurityChanged || bExistInMap || + bObjStm) { + CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum); + if (!pObj) { + m_ObjectOffset[objnum] = 0; + return 0; + } + if (WriteIndirectObj(pObj)) { + return -1; + } + if (!bExistInMap) { + m_pDocument->ReleaseIndirectObject(objnum); + } + } else { + uint8_t* pBuffer; + FX_DWORD size; + m_pParser->GetIndirectBinary(objnum, pBuffer, size); + if (!pBuffer) { + return 0; + } + if (object_type == 2) { + if (m_pXRefStream) { + if (WriteIndirectObjectToStream(objnum, pBuffer, size) < 0) { + FX_Free(pBuffer); + return -1; + } + } else { + int32_t len = m_File.AppendDWord(objnum); + if (len < 0) { + return -1; + } + if (m_File.AppendString(" 0 obj ") < 0) { + return -1; + } + m_Offset += len + 7; + if (m_File.AppendBlock(pBuffer, size) < 0) { + return -1; + } + m_Offset += size; + if (m_File.AppendString("\r\nendobj\r\n") < 0) { + return -1; + } + m_Offset += 10; + } + } else { + if (m_File.AppendBlock(pBuffer, size) < 0) { + return -1; + } + m_Offset += size; + if (AppendObjectNumberToXRef(objnum) < 0) { + return -1; + } + } + FX_Free(pBuffer); + } + return 1; +} +int32_t CPDF_Creator::WriteOldObjs(IFX_Pause* pPause) { + FX_DWORD nLastObjNum = m_pParser->GetLastObjNum(); + if (!m_pParser->IsValidObjectNumber(nLastObjNum)) + return 0; + + FX_DWORD objnum = (FX_DWORD)(uintptr_t)m_Pos; + for (; objnum <= nLastObjNum; ++objnum) { + int32_t iRet = WriteOldIndirectObject(objnum); + if (iRet < 0) + return iRet; + + if (!iRet) + continue; + + if (pPause && pPause->NeedToPauseNow()) { + m_Pos = (void*)(uintptr_t)(objnum + 1); + return 1; + } + } + return 0; +} +int32_t CPDF_Creator::WriteNewObjs(FX_BOOL bIncremental, IFX_Pause* pPause) { + int32_t iCount = m_NewObjNumArray.GetSize(); + int32_t index = (int32_t)(uintptr_t)m_Pos; + while (index < iCount) { + FX_DWORD objnum = m_NewObjNumArray.ElementAt(index); + auto it = m_pDocument->m_IndirectObjs.find(objnum); + if (it == m_pDocument->m_IndirectObjs.end()) { + ++index; + continue; + } + m_ObjectOffset[objnum] = m_Offset; + if (WriteIndirectObj(it->second)) { + return -1; + } + index++; + if (pPause && pPause->NeedToPauseNow()) { + m_Pos = (FX_POSITION)(uintptr_t)index; + return 1; + } + } + return 0; +} +void CPDF_Creator::InitOldObjNumOffsets() { + if (!m_pParser) { + return; + } + FX_DWORD j = 0; + FX_DWORD dwStart = 0; + FX_DWORD dwEnd = m_pParser->GetLastObjNum(); + while (dwStart <= dwEnd) { + while (dwStart <= dwEnd && m_pParser->IsObjectFreeOrNull(dwStart)) + dwStart++; + + if (dwStart > dwEnd) + break; + + j = dwStart; + while (j <= dwEnd && !m_pParser->IsObjectFreeOrNull(j)) + j++; + + m_ObjectOffset.Add(dwStart, j - dwStart); + dwStart = j; + } +} +void CPDF_Creator::InitNewObjNumOffsets() { + FX_BOOL bIncremental = (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0; + FX_BOOL bNoOriginal = (m_dwFlags & FPDFCREATE_NO_ORIGINAL) != 0; + for (const auto& pair : m_pDocument->m_IndirectObjs) { + const FX_DWORD objnum = pair.first; + const CPDF_Object* pObj = pair.second; + if (pObj->GetObjNum() == -1) + continue; + if (bIncremental) { + if (!pObj->IsModified()) + continue; + } else if (m_pParser && m_pParser->IsValidObjectNumber(objnum) && + m_pParser->GetObjectType(objnum)) { + continue; + } + AppendNewObjNum(objnum); + } + + int32_t iCount = m_NewObjNumArray.GetSize(); + if (iCount == 0) { + return; + } + int32_t i = 0; + FX_DWORD dwStartObjNum = 0; + FX_BOOL bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0; + while (i < iCount) { + dwStartObjNum = m_NewObjNumArray.ElementAt(i); + if ((bIncremental && (bNoOriginal || bCrossRefValid)) || + !m_ObjectOffset.GetPtrAt(dwStartObjNum)) { + break; + } + i++; + } + if (i >= iCount) { + return; + } + FX_DWORD dwLastObjNum = dwStartObjNum; + i++; + FX_BOOL bNewStart = FALSE; + for (; i < iCount; i++) { + FX_DWORD dwCurObjNum = m_NewObjNumArray.ElementAt(i); + bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) && + m_ObjectOffset.GetPtrAt(dwCurObjNum); + if (bExist || dwCurObjNum - dwLastObjNum > 1) { + if (!bNewStart) + m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); + dwStartObjNum = dwCurObjNum; + } + if (bNewStart) { + dwStartObjNum = dwCurObjNum; + } + bNewStart = bExist; + dwLastObjNum = dwCurObjNum; + } + m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); +} +void CPDF_Creator::AppendNewObjNum(FX_DWORD objbum) { + int32_t iStart = 0, iFind = 0; + int32_t iEnd = m_NewObjNumArray.GetUpperBound(); + while (iStart <= iEnd) { + int32_t iMid = (iStart + iEnd) / 2; + FX_DWORD dwMid = m_NewObjNumArray.ElementAt(iMid); + if (objbum < dwMid) { + iEnd = iMid - 1; + } else { + if (iMid == iEnd) { + iFind = iMid + 1; + break; + } + FX_DWORD dwNext = m_NewObjNumArray.ElementAt(iMid + 1); + if (objbum < dwNext) { + iFind = iMid + 1; + break; + } + iStart = iMid + 1; + } + } + m_NewObjNumArray.InsertAt(iFind, objbum); +} +int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { + FXSYS_assert(m_iStage > -1 || m_iStage < 20); + if (m_iStage == 0) { + if (!m_pParser) { + m_dwFlags &= ~FPDFCREATE_INCREMENTAL; + } + if (m_bSecurityChanged && (m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0) { + m_dwFlags &= ~FPDFCREATE_INCREMENTAL; + } + CPDF_Dictionary* pDict = m_pDocument->GetRoot(); + m_pMetadata = pDict ? pDict->GetElementValue("Metadata") : NULL; + if (m_dwFlags & FPDFCREATE_OBJECTSTREAM) { + m_pXRefStream = new CPDF_XRefStream; + m_pXRefStream->Start(); + if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser) { + FX_FILESIZE prev = m_pParser->GetLastXRefOffset(); + m_pXRefStream->m_PrevOffset = prev; + } + } + m_iStage = 10; + } + if (m_iStage == 10) { + if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0) { + if (m_File.AppendString("%PDF-1.") < 0) { + return -1; + } + m_Offset += 7; + int32_t version = 7; + if (m_FileVersion) { + version = m_FileVersion; + } else if (m_pParser) { + version = m_pParser->GetFileVersion(); + } + int32_t len = m_File.AppendDWord(version % 10); + if (len < 0) { + return -1; + } + m_Offset += len; + if ((len = m_File.AppendString("\r\n%\xA1\xB3\xC5\xD7\r\n")) < 0) { + return -1; + } + m_Offset += len; + InitOldObjNumOffsets(); + m_iStage = 20; + } else { + IFX_FileRead* pSrcFile = m_pParser->GetFileAccess(); + m_Offset = pSrcFile->GetSize(); + m_Pos = (void*)(uintptr_t)m_Offset; + m_iStage = 15; + } + } + if (m_iStage == 15) { + if ((m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0 && m_Pos) { + IFX_FileRead* pSrcFile = m_pParser->GetFileAccess(); + uint8_t buffer[4096]; + FX_DWORD src_size = (FX_DWORD)(uintptr_t)m_Pos; + while (src_size) { + FX_DWORD block_size = src_size > 4096 ? 4096 : src_size; + if (!pSrcFile->ReadBlock(buffer, m_Offset - src_size, block_size)) { + return -1; + } + if (m_File.AppendBlock(buffer, block_size) < 0) { + return -1; + } + src_size -= block_size; + if (pPause && pPause->NeedToPauseNow()) { + m_Pos = (void*)(uintptr_t)src_size; + return 1; + } + } + } + if ((m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0 && + m_pParser->GetLastXRefOffset() == 0) { + InitOldObjNumOffsets(); + FX_DWORD dwEnd = m_pParser->GetLastObjNum(); + bool bObjStm = (m_dwFlags & FPDFCREATE_OBJECTSTREAM) != 0; + for (FX_DWORD objnum = 0; objnum <= dwEnd; objnum++) { + if (m_pParser->IsObjectFreeOrNull(objnum)) + continue; + + m_ObjectOffset[objnum] = m_pParser->GetObjectPositionOrZero(objnum); + if (bObjStm) { + m_pXRefStream->AddObjectNumberToIndexArray(objnum); + } + } + if (bObjStm) { + m_pXRefStream->EndXRefStream(this); + m_pXRefStream->Start(); + } + } + m_iStage = 20; + } + InitNewObjNumOffsets(); + return m_iStage; +} +int32_t CPDF_Creator::WriteDoc_Stage2(IFX_Pause* pPause) { + FXSYS_assert(m_iStage >= 20 || m_iStage < 30); + if (m_iStage == 20) { + if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 && m_pParser) { + m_Pos = (void*)(uintptr_t)0; + m_iStage = 21; + } else { + m_iStage = 25; + } + } + if (m_iStage == 21) { + int32_t iRet = WriteOldObjs(pPause); + if (iRet) { + return iRet; + } + m_iStage = 25; + } + if (m_iStage == 25) { + m_Pos = (void*)(uintptr_t)0; + m_iStage = 26; + } + if (m_iStage == 26) { + int32_t iRet = + WriteNewObjs((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0, pPause); + if (iRet) { + return iRet; + } + m_iStage = 27; + } + if (m_iStage == 27) { + if (NULL != m_pEncryptDict && 0 == m_pEncryptDict->GetObjNum()) { + m_dwLastObjNum += 1; + FX_FILESIZE saveOffset = m_Offset; + if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) { + return -1; + } + m_ObjectOffset.Add(m_dwLastObjNum, 1); + m_ObjectOffset[m_dwLastObjNum] = saveOffset; + m_dwEnryptObjNum = m_dwLastObjNum; + if (m_dwFlags & FPDFCREATE_INCREMENTAL) { + m_NewObjNumArray.Add(m_dwLastObjNum); + } + } + m_iStage = 80; + } + return m_iStage; +} +int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) { + FXSYS_assert(m_iStage >= 80 || m_iStage < 90); + FX_DWORD dwLastObjNum = m_dwLastObjNum; + if (m_iStage == 80) { + m_XrefStart = m_Offset; + if (m_dwFlags & FPDFCREATE_OBJECTSTREAM) { + m_pXRefStream->End(this, TRUE); + m_XrefStart = m_pXRefStream->m_PrevOffset; + m_iStage = 90; + } else if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 || + !m_pParser->IsXRefStream()) { + if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 || + m_pParser->GetLastXRefOffset() == 0) { + CFX_ByteString str; + str = m_ObjectOffset.GetPtrAt(1) + ? "xref\r\n" + : "xref\r\n0 1\r\n0000000000 65535 f\r\n"; + if (m_File.AppendString(str) < 0) { + return -1; + } + m_Pos = (void*)(uintptr_t)1; + m_iStage = 81; + } else { + if (m_File.AppendString("xref\r\n") < 0) { + return -1; + } + m_Pos = (void*)(uintptr_t)0; + m_iStage = 82; + } + } else { + m_iStage = 90; + } + } + if (m_iStage == 81) { + CFX_ByteString str; + FX_DWORD i = (FX_DWORD)(uintptr_t)m_Pos, j; + while (i <= dwLastObjNum) { + while (i <= dwLastObjNum && !m_ObjectOffset.GetPtrAt(i)) { + i++; + } + if (i > dwLastObjNum) { + break; + } + j = i; + while (j <= dwLastObjNum && m_ObjectOffset.GetPtrAt(j)) { + j++; + } + if (i == 1) { + str.Format("0 %d\r\n0000000000 65535 f\r\n", j); + } else { + str.Format("%d %d\r\n", i, j - i); + } + if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { + return -1; + } + while (i < j) { + str.Format("%010d 00000 n\r\n", m_ObjectOffset[i++]); + if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { + return -1; + } + } + if (i > dwLastObjNum) { + break; + } + if (pPause && pPause->NeedToPauseNow()) { + m_Pos = (void*)(uintptr_t)i; + return 1; + } + } + m_iStage = 90; + } + if (m_iStage == 82) { + CFX_ByteString str; + int32_t iCount = m_NewObjNumArray.GetSize(); + int32_t i = (int32_t)(uintptr_t)m_Pos; + while (i < iCount) { + int32_t j = i; + FX_DWORD objnum = m_NewObjNumArray.ElementAt(i); + while (j < iCount) { + if (++j == iCount) { + break; + } + FX_DWORD dwCurrent = m_NewObjNumArray.ElementAt(j); + if (dwCurrent - objnum > 1) { + break; + } + objnum = dwCurrent; + } + objnum = m_NewObjNumArray.ElementAt(i); + if (objnum == 1) { + str.Format("0 %d\r\n0000000000 65535 f\r\n", j - i + 1); + } else { + str.Format("%d %d\r\n", objnum, j - i); + } + if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { + return -1; + } + while (i < j) { + objnum = m_NewObjNumArray.ElementAt(i++); + str.Format("%010d 00000 n\r\n", m_ObjectOffset[objnum]); + if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { + return -1; + } + } + if (pPause && (i % 100) == 0 && pPause->NeedToPauseNow()) { + m_Pos = (void*)(uintptr_t)i; + return 1; + } + } + m_iStage = 90; + } + return m_iStage; +} + +int32_t CPDF_Creator::WriteDoc_Stage4(IFX_Pause* pPause) { + FXSYS_assert(m_iStage >= 90); + if ((m_dwFlags & FPDFCREATE_OBJECTSTREAM) == 0) { + FX_BOOL bXRefStream = + (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser->IsXRefStream(); + if (!bXRefStream) { + if (m_File.AppendString("trailer\r\n<<") < 0) { + return -1; + } + } else { + if (m_File.AppendDWord(m_pDocument->m_LastObjNum + 1) < 0) { + return -1; + } + if (m_File.AppendString(" 0 obj <<") < 0) { + return -1; + } + } + if (m_pParser) { + CPDF_Dictionary* p = m_pParser->GetTrailer(); + for (const auto& it : *p) { + const CFX_ByteString& key = it.first; + CPDF_Object* pValue = it.second; + // TODO(ochang): Consolidate with similar check in + // PDF_CreatorWriteTrailer. + if (key == "Encrypt" || key == "Size" || key == "Filter" || + key == "Index" || key == "Length" || key == "Prev" || key == "W" || + key == "XRefStm" || key == "ID") { + continue; + } + if (m_File.AppendString(("/")) < 0) { + return -1; + } + if (m_File.AppendString(PDF_NameEncode(key)) < 0) { + return -1; + } + if (pValue->GetObjNum()) { + if (m_File.AppendString(" ") < 0) { + return -1; + } + if (m_File.AppendDWord(pValue->GetObjNum()) < 0) { + return -1; + } + if (m_File.AppendString(" 0 R ") < 0) { + return -1; + } + } else { + FX_FILESIZE offset = 0; + if (PDF_CreatorAppendObject(pValue, &m_File, offset) < 0) { + return -1; + } + } + } + } else { + if (m_File.AppendString("\r\n/Root ") < 0) { + return -1; + } + if (m_File.AppendDWord(m_pDocument->m_pRootDict->GetObjNum()) < 0) { + return -1; + } + if (m_File.AppendString(" 0 R\r\n") < 0) { + return -1; + } + if (m_pDocument->m_pInfoDict) { + if (m_File.AppendString("/Info ") < 0) { + return -1; + } + if (m_File.AppendDWord(m_pDocument->m_pInfoDict->GetObjNum()) < 0) { + return -1; + } + if (m_File.AppendString(" 0 R\r\n") < 0) { + return -1; + } + } + } + if (m_pEncryptDict) { + if (m_File.AppendString("/Encrypt") < 0) { + return -1; + } + FX_DWORD dwObjNum = m_pEncryptDict->GetObjNum(); + if (dwObjNum == 0) { + dwObjNum = m_pDocument->GetLastObjNum() + 1; + } + if (m_File.AppendString(" ") < 0) { + return -1; + } + if (m_File.AppendDWord(dwObjNum) < 0) { + return -1; + } + if (m_File.AppendString(" 0 R ") < 0) { + return -1; + } + } + if (m_File.AppendString("/Size ") < 0) { + return -1; + } + if (m_File.AppendDWord(m_dwLastObjNum + (bXRefStream ? 2 : 1)) < 0) { + return -1; + } + if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0) { + FX_FILESIZE prev = m_pParser->GetLastXRefOffset(); + if (prev) { + if (m_File.AppendString("/Prev ") < 0) { + return -1; + } + FX_CHAR offset_buf[20]; + FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); + FXSYS_i64toa(prev, offset_buf, 10); + if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { + return -1; + } + } + } + if (m_pIDArray) { + if (m_File.AppendString(("/ID")) < 0) { + return -1; + } + FX_FILESIZE offset = 0; + if (PDF_CreatorAppendObject(m_pIDArray, &m_File, offset) < 0) { + return -1; + } + } + if (!bXRefStream) { + if (m_File.AppendString(">>") < 0) { + return -1; + } + } else { + if (m_File.AppendString("/W[0 4 1]/Index[") < 0) { + return -1; + } + if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser && + m_pParser->GetLastXRefOffset() == 0) { + FX_DWORD i = 0; + for (i = 0; i < m_dwLastObjNum; i++) { + if (!m_ObjectOffset.GetPtrAt(i)) { + continue; + } + if (m_File.AppendDWord(i) < 0) { + return -1; + } + if (m_File.AppendString(" 1 ") < 0) { + return -1; + } + } + if (m_File.AppendString("]/Length ") < 0) { + return -1; + } + if (m_File.AppendDWord(m_dwLastObjNum * 5) < 0) { + return -1; + } + if (m_File.AppendString(">>stream\r\n") < 0) { + return -1; + } + for (i = 0; i < m_dwLastObjNum; i++) { + FX_FILESIZE* offset = m_ObjectOffset.GetPtrAt(i); + if (!offset) { + continue; + } + OutputIndex(&m_File, *offset); + } + } else { + int count = m_NewObjNumArray.GetSize(); + int32_t i = 0; + for (i = 0; i < count; i++) { + FX_DWORD objnum = m_NewObjNumArray.ElementAt(i); + if (m_File.AppendDWord(objnum) < 0) { + return -1; + } + if (m_File.AppendString(" 1 ") < 0) { + return -1; + } + } + if (m_File.AppendString("]/Length ") < 0) { + return -1; + } + if (m_File.AppendDWord(count * 5) < 0) { + return -1; + } + if (m_File.AppendString(">>stream\r\n") < 0) { + return -1; + } + for (i = 0; i < count; i++) { + FX_DWORD objnum = m_NewObjNumArray.ElementAt(i); + FX_FILESIZE offset = m_ObjectOffset[objnum]; + OutputIndex(&m_File, offset); + } + } + if (m_File.AppendString("\r\nendstream") < 0) { + return -1; + } + } + } + if (m_File.AppendString("\r\nstartxref\r\n") < 0) { + return -1; + } + FX_CHAR offset_buf[20]; + FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); + FXSYS_i64toa(m_XrefStart, offset_buf, 10); + if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { + return -1; + } + if (m_File.AppendString("\r\n%%EOF\r\n") < 0) { + return -1; + } + m_File.Flush(); + return m_iStage = 100; +} +void CPDF_Creator::Clear() { + delete m_pXRefStream; + m_pXRefStream = NULL; + m_File.Clear(); + m_NewObjNumArray.RemoveAll(); + if (m_pIDArray) { + m_pIDArray->Release(); + m_pIDArray = NULL; + } +} + +bool CPDF_Creator::Create(IFX_StreamWrite* pFile, FX_DWORD flags) { + m_File.AttachFile(pFile); + return Create(flags); +} + +bool CPDF_Creator::Create(FX_DWORD flags) { + m_dwFlags = flags; + m_iStage = 0; + m_Offset = 0; + m_dwLastObjNum = m_pDocument->GetLastObjNum(); + m_ObjectOffset.Clear(); + m_NewObjNumArray.RemoveAll(); + InitID(); + if (flags & FPDFCREATE_PROGRESSIVE) { + return true; + } + return Continue(NULL) > -1; +} +void CPDF_Creator::InitID(FX_BOOL bDefault) { + CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : NULL; + FX_BOOL bNewId = !m_pIDArray; + if (!m_pIDArray) { + m_pIDArray = new CPDF_Array; + CPDF_Object* pID1 = pOldIDArray ? pOldIDArray->GetElement(0) : NULL; + if (pID1) { + m_pIDArray->Add(pID1->Clone()); + } else { + std::vector buffer = + PDF_GenerateFileID((FX_DWORD)(uintptr_t) this, m_dwLastObjNum); + CFX_ByteStringC bsBuffer(buffer.data(), buffer.size()); + m_pIDArray->Add(new CPDF_String(bsBuffer, TRUE), m_pDocument); + } + } + if (!bDefault) { + return; + } + if (pOldIDArray) { + CPDF_Object* pID2 = pOldIDArray->GetElement(1); + if ((m_dwFlags & FPDFCREATE_INCREMENTAL) && m_pEncryptDict && pID2) { + m_pIDArray->Add(pID2->Clone()); + return; + } + std::vector buffer = + PDF_GenerateFileID((FX_DWORD)(uintptr_t) this, m_dwLastObjNum); + CFX_ByteStringC bsBuffer(buffer.data(), buffer.size()); + m_pIDArray->Add(new CPDF_String(bsBuffer, TRUE), m_pDocument); + return; + } + m_pIDArray->Add(m_pIDArray->GetElement(0)->Clone()); + if (m_pEncryptDict && !pOldIDArray && m_pParser && bNewId) { + if (m_pEncryptDict->GetStringBy("Filter") == "Standard") { + CPDF_StandardSecurityHandler handler; + CFX_ByteString user_pass = m_pParser->GetPassword(); + FX_DWORD flag = PDF_ENCRYPT_CONTENT; + handler.OnCreate(m_pEncryptDict, m_pIDArray, (const uint8_t*)user_pass, + user_pass.GetLength(), flag); + if (m_bNewCrypto) { + delete m_pCryptoHandler; + } + m_pCryptoHandler = new CPDF_StandardCryptoHandler; + m_pCryptoHandler->Init(m_pEncryptDict, &handler); + m_bNewCrypto = TRUE; + m_bSecurityChanged = TRUE; + } + } +} +int32_t CPDF_Creator::Continue(IFX_Pause* pPause) { + if (m_iStage < 0) { + return m_iStage; + } + int32_t iRet = 0; + while (m_iStage < 100) { + if (m_iStage < 20) { + iRet = WriteDoc_Stage1(pPause); + } else if (m_iStage < 30) { + iRet = WriteDoc_Stage2(pPause); + } else if (m_iStage < 90) { + iRet = WriteDoc_Stage3(pPause); + } else { + iRet = WriteDoc_Stage4(pPause); + } + if (iRet < m_iStage) { + break; + } + } + if (iRet < 1 || m_iStage == 100) { + m_iStage = -1; + Clear(); + return iRet > 99 ? 0 : (iRet < 1 ? -1 : iRet); + } + return m_iStage; +} +FX_BOOL CPDF_Creator::SetFileVersion(int32_t fileVersion) { + if (fileVersion < 10 || fileVersion > 17) { + return FALSE; + } + m_FileVersion = fileVersion; + return TRUE; +} +void CPDF_Creator::RemoveSecurity() { + ResetStandardSecurity(); + m_bSecurityChanged = TRUE; + m_pEncryptDict = NULL; + m_pCryptoHandler = NULL; +} +void CPDF_Creator::ResetStandardSecurity() { + if (m_bStandardSecurity || m_bNewCrypto) { + delete m_pCryptoHandler; + m_pCryptoHandler = NULL; + } + m_bNewCrypto = FALSE; + if (!m_bStandardSecurity) { + return; + } + if (m_pEncryptDict) { + m_pEncryptDict->Release(); + m_pEncryptDict = NULL; + } + m_bStandardSecurity = FALSE; +} diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp new file mode 100644 index 0000000000..48e42e2a1f --- /dev/null +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp @@ -0,0 +1,1156 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" + +CPDF_Document::CPDF_Document() : CPDF_IndirectObjectHolder(NULL) { + m_pRootDict = NULL; + m_pInfoDict = NULL; + m_bLinearized = FALSE; + m_dwFirstPageNo = 0; + m_dwFirstPageObjNum = 0; + m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this); + m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this); +} +void CPDF_Document::CreateNewDoc() { + ASSERT(!m_pRootDict && !m_pInfoDict); + m_pRootDict = new CPDF_Dictionary; + m_pRootDict->SetAtName("Type", "Catalog"); + int objnum = AddIndirectObject(m_pRootDict); + CPDF_Dictionary* pPages = new CPDF_Dictionary; + pPages->SetAtName("Type", "Pages"); + pPages->SetAtNumber("Count", 0); + pPages->SetAt("Kids", new CPDF_Array); + objnum = AddIndirectObject(pPages); + m_pRootDict->SetAtReference("Pages", this, objnum); + m_pInfoDict = new CPDF_Dictionary; + AddIndirectObject(m_pInfoDict); +} +static const FX_WCHAR g_FX_CP874Unicodes[128] = { + 0x20AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x2026, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x0E01, 0x0E02, 0x0E03, + 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, + 0x0E0D, 0x0E0E, 0x0E0F, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, + 0x0E16, 0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, + 0x0E1F, 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27, + 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, 0x0E30, + 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38, 0x0E39, + 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F, 0x0E40, 0x0E41, 0x0E42, + 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, + 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, + 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000, + 0x0000, 0x0000, +}; +static const FX_WCHAR g_FX_CP1250Unicodes[128] = { + 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000, + 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, 0x0000, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0161, + 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, 0x00A0, 0x02C7, 0x02D8, 0x0141, + 0x00A4, 0x0104, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, + 0x00AD, 0x00AE, 0x017B, 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, + 0x00B6, 0x00B7, 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, + 0x017C, 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, + 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, 0x0110, + 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, 0x0158, 0x016E, + 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, 0x0155, 0x00E1, 0x00E2, + 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB, + 0x011B, 0x00ED, 0x00EE, 0x010F, 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, + 0x0151, 0x00F6, 0x00F7, 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, + 0x0163, 0x02D9, +}; +static const FX_WCHAR g_FX_CP1251Unicodes[128] = { + 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC, + 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, 0x0452, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0459, + 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, 0x00A0, 0x040E, 0x045E, 0x0408, + 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, + 0x00AD, 0x00AE, 0x0407, 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, + 0x00B6, 0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, + 0x0457, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, + 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, + 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, + 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, + 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, + 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, + 0x044E, 0x044F, +}; +static const FX_WCHAR g_FX_CP1253Unicodes[128] = { + 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000, + 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000, + 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x0385, 0x0386, 0x00A3, + 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, + 0x00AD, 0x00AE, 0x2015, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, + 0x00B6, 0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, + 0x038F, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, + 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, + 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, 0x03B0, 0x03B1, 0x03B2, + 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, + 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, + 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, + 0x03CE, 0x0000, +}; +static const FX_WCHAR g_FX_CP1254Unicodes[128] = { + 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, + 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, + 0x203A, 0x0153, 0x0000, 0x0000, 0x0178, 0x00A0, 0x00A1, 0x00A2, 0x00A3, + 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, + 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, + 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, + 0x00BF, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, + 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x011E, + 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, + 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, 0x00E0, 0x00E1, 0x00E2, + 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, + 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, + 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, + 0x015F, 0x00FF, +}; +static const FX_WCHAR g_FX_CP1255Unicodes[128] = { + 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, + 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0000, + 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x00A1, 0x00A2, 0x00A3, + 0x20AA, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, + 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, + 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, + 0x00BF, 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, + 0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, 0x05C0, + 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05D0, 0x05D1, 0x05D2, + 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, + 0x05DC, 0x05DD, 0x05DE, 0x05DF, 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, + 0x05E5, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, + 0x200F, 0x0000, +}; +static const FX_WCHAR g_FX_CP1256Unicodes[128] = { + 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, + 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, 0x06AF, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x06A9, 0x2122, 0x0691, + 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, 0x00A0, 0x060C, 0x00A2, 0x00A3, + 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, + 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, + 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, + 0x061F, 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, 0x0630, + 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, 0x0637, 0x0638, + 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, 0x00E0, 0x0644, 0x00E2, + 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, + 0x0649, 0x064A, 0x00EE, 0x00EF, 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, + 0x064F, 0x0650, 0x00F7, 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, + 0x200F, 0x06D2, +}; +static const FX_WCHAR g_FX_CP1257Unicodes[128] = { + 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000, + 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8, 0x0000, 0x2018, + 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000, + 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000, 0x00A0, 0x0000, 0x00A2, 0x00A3, + 0x00A4, 0x0000, 0x00A6, 0x00A7, 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, + 0x00AD, 0x00AE, 0x00C6, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, + 0x00B6, 0x00B7, 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, + 0x00E6, 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, + 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, 0x0160, + 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, 0x0172, 0x0141, + 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, 0x0105, 0x012F, 0x0101, + 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, 0x010D, 0x00E9, 0x017A, 0x0117, + 0x0123, 0x0137, 0x012B, 0x013C, 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, + 0x00F5, 0x00F6, 0x00F7, 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, + 0x017E, 0x02D9, +}; +typedef struct { + uint8_t m_Charset; + const FX_WCHAR* m_pUnicodes; +} FX_CharsetUnicodes; +const FX_CharsetUnicodes g_FX_CharsetUnicodes[] = { + {FXFONT_THAI_CHARSET, g_FX_CP874Unicodes}, + {FXFONT_EASTEUROPE_CHARSET, g_FX_CP1250Unicodes}, + {FXFONT_RUSSIAN_CHARSET, g_FX_CP1251Unicodes}, + {FXFONT_GREEK_CHARSET, g_FX_CP1253Unicodes}, + {FXFONT_TURKISH_CHARSET, g_FX_CP1254Unicodes}, + {FXFONT_HEBREW_CHARSET, g_FX_CP1255Unicodes}, + {FXFONT_ARABIC_CHARSET, g_FX_CP1256Unicodes}, + {FXFONT_BALTIC_CHARSET, g_FX_CP1257Unicodes}, +}; +#if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_) +static void _InsertWidthArray(HDC hDC, + int start, + int end, + CPDF_Array* pWidthArray) { + int size = end - start + 1; + int* widths = FX_Alloc(int, size); + GetCharWidth(hDC, start, end, widths); + int i; + for (i = 1; i < size; i++) + if (widths[i] != *widths) { + break; + } + if (i == size) { + int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1); + pWidthArray->AddInteger(first + size - 1); + pWidthArray->AddInteger(*widths); + } else { + CPDF_Array* pWidthArray1 = new CPDF_Array; + pWidthArray->Add(pWidthArray1); + for (i = 0; i < size; i++) { + pWidthArray1->AddInteger(widths[i]); + } + } + FX_Free(widths); +} +CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTW* pLogFont, + FX_BOOL bVert, + FX_BOOL bTranslateName) { + LOGFONTA lfa; + FXSYS_memcpy(&lfa, pLogFont, (char*)lfa.lfFaceName - (char*)&lfa); + CFX_ByteString face = CFX_ByteString::FromUnicode(pLogFont->lfFaceName); + if (face.GetLength() >= LF_FACESIZE) { + return NULL; + } + FXSYS_strcpy(lfa.lfFaceName, face.c_str()); + return AddWindowsFont(&lfa, bVert, bTranslateName); +} +CFX_ByteString _FPDF_GetPSNameFromTT(HDC hDC) { + CFX_ByteString result; + DWORD size = ::GetFontData(hDC, 'eman', 0, NULL, 0); + if (size != GDI_ERROR) { + LPBYTE buffer = FX_Alloc(BYTE, size); + ::GetFontData(hDC, 'eman', 0, buffer, size); + result = GetNameFromTT(buffer, 6); + FX_Free(buffer); + } + return result; +} +CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont, + FX_BOOL bVert, + FX_BOOL bTranslateName) { + pLogFont->lfHeight = -1000; + pLogFont->lfWidth = 0; + HGDIOBJ hFont = CreateFontIndirectA(pLogFont); + HDC hDC = CreateCompatibleDC(NULL); + hFont = SelectObject(hDC, hFont); + int tm_size = GetOutlineTextMetrics(hDC, 0, NULL); + if (tm_size == 0) { + hFont = SelectObject(hDC, hFont); + DeleteObject(hFont); + DeleteDC(hDC); + return NULL; + } + LPBYTE tm_buf = FX_Alloc(BYTE, tm_size); + OUTLINETEXTMETRIC* ptm = (OUTLINETEXTMETRIC*)tm_buf; + GetOutlineTextMetrics(hDC, tm_size, ptm); + int flags = 0, italicangle, ascend, descend, capheight, bbox[4]; + if (pLogFont->lfItalic) { + flags |= PDFFONT_ITALIC; + } + if ((pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH) { + flags |= PDFFONT_FIXEDPITCH; + } + if ((pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN) { + flags |= PDFFONT_SERIF; + } + if ((pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT) { + flags |= PDFFONT_SCRIPT; + } + bool bCJK = pLogFont->lfCharSet == CHINESEBIG5_CHARSET || + pLogFont->lfCharSet == GB2312_CHARSET || + pLogFont->lfCharSet == HANGEUL_CHARSET || + pLogFont->lfCharSet == SHIFTJIS_CHARSET; + CFX_ByteString basefont; + if (bTranslateName && bCJK) { + basefont = _FPDF_GetPSNameFromTT(hDC); + } + if (basefont.IsEmpty()) { + basefont = pLogFont->lfFaceName; + } + italicangle = ptm->otmItalicAngle / 10; + ascend = ptm->otmrcFontBox.top; + descend = ptm->otmrcFontBox.bottom; + capheight = ptm->otmsCapEmHeight; + bbox[0] = ptm->otmrcFontBox.left; + bbox[1] = ptm->otmrcFontBox.bottom; + bbox[2] = ptm->otmrcFontBox.right; + bbox[3] = ptm->otmrcFontBox.top; + FX_Free(tm_buf); + basefont.Replace(" ", ""); + CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; + pBaseDict->SetAtName("Type", "Font"); + CPDF_Dictionary* pFontDict = pBaseDict; + if (!bCJK) { + if (pLogFont->lfCharSet == ANSI_CHARSET || + pLogFont->lfCharSet == DEFAULT_CHARSET || + pLogFont->lfCharSet == SYMBOL_CHARSET) { + if (pLogFont->lfCharSet == SYMBOL_CHARSET) { + flags |= PDFFONT_SYMBOLIC; + } else { + flags |= PDFFONT_NONSYMBOLIC; + } + pBaseDict->SetAtName("Encoding", "WinAnsiEncoding"); + } else { + flags |= PDFFONT_NONSYMBOLIC; + int i; + for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes); + i++) + if (g_FX_CharsetUnicodes[i].m_Charset == pLogFont->lfCharSet) { + break; + } + if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) { + CPDF_Dictionary* pEncoding = new CPDF_Dictionary; + pEncoding->SetAtName("BaseEncoding", "WinAnsiEncoding"); + CPDF_Array* pArray = new CPDF_Array; + pArray->AddInteger(128); + const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes; + for (int j = 0; j < 128; j++) { + CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]); + if (name.IsEmpty()) { + pArray->AddName(".notdef"); + } else { + pArray->AddName(name); + } + } + pEncoding->SetAt("Differences", pArray); + AddIndirectObject(pEncoding); + pBaseDict->SetAtReference("Encoding", this, pEncoding); + } + } + if (pLogFont->lfWeight > FW_MEDIUM && pLogFont->lfItalic) { + basefont += ",BoldItalic"; + } else if (pLogFont->lfWeight > FW_MEDIUM) { + basefont += ",Bold"; + } else if (pLogFont->lfItalic) { + basefont += ",Italic"; + } + pBaseDict->SetAtName("Subtype", "TrueType"); + pBaseDict->SetAtName("BaseFont", basefont); + pBaseDict->SetAtNumber("FirstChar", 32); + pBaseDict->SetAtNumber("LastChar", 255); + int char_widths[224]; + GetCharWidth(hDC, 32, 255, char_widths); + CPDF_Array* pWidths = new CPDF_Array; + for (int i = 0; i < 224; i++) { + pWidths->AddInteger(char_widths[i]); + } + pBaseDict->SetAt("Widths", pWidths); + } else { + flags |= PDFFONT_NONSYMBOLIC; + pFontDict = new CPDF_Dictionary; + CFX_ByteString cmap; + CFX_ByteString ordering; + int supplement; + CPDF_Array* pWidthArray = new CPDF_Array; + switch (pLogFont->lfCharSet) { + case CHINESEBIG5_CHARSET: + cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H"; + ordering = "CNS1"; + supplement = 4; + pWidthArray->AddInteger(1); + _InsertWidthArray(hDC, 0x20, 0x7e, pWidthArray); + break; + case GB2312_CHARSET: + cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H"; + ordering = "GB1", supplement = 2; + pWidthArray->AddInteger(7716); + _InsertWidthArray(hDC, 0x20, 0x20, pWidthArray); + pWidthArray->AddInteger(814); + _InsertWidthArray(hDC, 0x21, 0x7e, pWidthArray); + break; + case HANGEUL_CHARSET: + cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H"; + ordering = "Korea1"; + supplement = 2; + pWidthArray->AddInteger(1); + _InsertWidthArray(hDC, 0x20, 0x7e, pWidthArray); + break; + case SHIFTJIS_CHARSET: + cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H"; + ordering = "Japan1"; + supplement = 5; + pWidthArray->AddInteger(231); + _InsertWidthArray(hDC, 0x20, 0x7d, pWidthArray); + pWidthArray->AddInteger(326); + _InsertWidthArray(hDC, 0xa0, 0xa0, pWidthArray); + pWidthArray->AddInteger(327); + _InsertWidthArray(hDC, 0xa1, 0xdf, pWidthArray); + pWidthArray->AddInteger(631); + _InsertWidthArray(hDC, 0x7e, 0x7e, pWidthArray); + break; + } + pBaseDict->SetAtName("Subtype", "Type0"); + pBaseDict->SetAtName("BaseFont", basefont); + pBaseDict->SetAtName("Encoding", cmap); + pFontDict->SetAt("W", pWidthArray); + pFontDict->SetAtName("Type", "Font"); + pFontDict->SetAtName("Subtype", "CIDFontType2"); + pFontDict->SetAtName("BaseFont", basefont); + CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary; + pCIDSysInfo->SetAtString("Registry", "Adobe"); + pCIDSysInfo->SetAtString("Ordering", ordering); + pCIDSysInfo->SetAtInteger("Supplement", supplement); + pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo); + CPDF_Array* pArray = new CPDF_Array; + pBaseDict->SetAt("DescendantFonts", pArray); + AddIndirectObject(pFontDict); + pArray->AddReference(this, pFontDict); + } + AddIndirectObject(pBaseDict); + CPDF_Dictionary* pFontDesc = new CPDF_Dictionary; + pFontDesc->SetAtName("Type", "FontDescriptor"); + pFontDesc->SetAtName("FontName", basefont); + pFontDesc->SetAtInteger("Flags", flags); + CPDF_Array* pBBox = new CPDF_Array; + for (int i = 0; i < 4; i++) { + pBBox->AddInteger(bbox[i]); + } + pFontDesc->SetAt("FontBBox", pBBox); + pFontDesc->SetAtInteger("ItalicAngle", italicangle); + pFontDesc->SetAtInteger("Ascent", ascend); + pFontDesc->SetAtInteger("Descent", descend); + pFontDesc->SetAtInteger("CapHeight", capheight); + pFontDesc->SetAtInteger("StemV", pLogFont->lfWeight / 5); + AddIndirectObject(pFontDesc); + pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); + hFont = SelectObject(hDC, hFont); + DeleteObject(hFont); + DeleteDC(hDC); + return LoadFont(pBaseDict); +} +#endif + +#if (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_) +uint32_t FX_GetLangHashCode(const FX_CHAR* pStr) { + FXSYS_assert(pStr); + int32_t iLength = FXSYS_strlen(pStr); + const FX_CHAR* pStrEnd = pStr + iLength; + uint32_t uHashCode = 0; + while (pStr < pStrEnd) { + uHashCode = 31 * uHashCode + tolower(*pStr++); + } + return uHashCode; +} +struct FX_LANG2CS { + FX_DWORD uLang; + int uCharset; +} * FX_LPLANG2CS; +static const FX_LANG2CS gs_FXLang2CharsetTable[] = { + {3109, 0}, {3121, 178}, {3129, 162}, {3139, 204}, {3141, 204}, + {3166, 0}, {3184, 238}, {3197, 0}, {3201, 0}, {3239, 161}, + {3241, 0}, {3246, 0}, {3247, 186}, {3248, 0}, {3259, 178}, + {3267, 0}, {3273, 0}, {3276, 0}, {3301, 0}, {3310, 1}, + {3325, 177}, {3329, 1}, {3338, 238}, {3341, 238}, {3345, 1}, + {3355, 0}, {3370, 0}, {3371, 0}, {3383, 128}, {3424, 204}, + {3427, 1}, {3428, 129}, {3436, 178}, {3464, 186}, {3466, 186}, + {3486, 204}, {3487, 0}, {3493, 1}, {3494, 0}, {3508, 0}, + {3518, 0}, {3520, 0}, {3569, 1}, {3580, 238}, {3588, 0}, + {3645, 238}, {3651, 204}, {3672, 238}, {3673, 238}, {3678, 238}, + {3679, 238}, {3683, 0}, {3684, 0}, {3693, 1}, {3697, 1}, + {3700, 222}, {3710, 162}, {3734, 204}, {3741, 178}, {3749, 162}, + {3763, 163}, {3886, 134}, {105943, 0}, {106375, 1}, {3923451837, 134}, + {3923451838, 136}, +}; +static FX_WORD FX_GetCsFromLangCode(uint32_t uCode) { + int32_t iStart = 0; + int32_t iEnd = sizeof(gs_FXLang2CharsetTable) / sizeof(FX_LANG2CS) - 1; + while (iStart <= iEnd) { + int32_t iMid = (iStart + iEnd) / 2; + const FX_LANG2CS& charset = gs_FXLang2CharsetTable[iMid]; + if (uCode == charset.uLang) { + return charset.uCharset; + } + if (uCode < charset.uLang) { + iEnd = iMid - 1; + } else { + iStart = iMid + 1; + } + } + return 0; +} +static FX_WORD FX_GetCharsetFromLang(const FX_CHAR* pLang, int32_t iLength) { + FXSYS_assert(pLang); + if (iLength < 0) { + iLength = FXSYS_strlen(pLang); + } + uint32_t uHash = FX_GetLangHashCode(pLang); + return FX_GetCsFromLangCode(uHash); +} +static void _CFString2CFXByteString(CFStringRef src, CFX_ByteString& dest) { + SInt32 len = CFStringGetLength(src); + CFRange range = CFRangeMake(0, len); + CFIndex used = 0; + UInt8* pBuffer = (UInt8*)calloc(len + 1, sizeof(UInt8)); + CFStringGetBytes(src, range, kCFStringEncodingASCII, 0, false, pBuffer, len, + &used); + dest = (FX_CHAR*)pBuffer; + free(pBuffer); +} +FX_BOOL IsHasCharSet(CFArrayRef languages, const CFX_DWordArray& charSets) { + int iCount = charSets.GetSize(); + for (int i = 0; i < CFArrayGetCount(languages); ++i) { + CFStringRef language = (CFStringRef)CFArrayGetValueAtIndex(languages, i); + FX_DWORD CharSet = FX_GetCharsetFromLang( + CFStringGetCStringPtr(language, kCFStringEncodingMacRoman), -1); + for (int j = 0; j < iCount; ++j) { + if (CharSet == charSets[j]) { + return TRUE; + } + } + } + return FALSE; +} +void FX_GetCharWidth(CTFontRef font, UniChar start, UniChar end, int* width) { + CGFloat size = CTFontGetSize(font); + for (; start <= end; ++start) { + CGGlyph pGlyph = 0; + CFIndex count = 1; + CTFontGetGlyphsForCharacters(font, &start, &pGlyph, count); + CGSize advances; + CTFontGetAdvancesForGlyphs(font, kCTFontDefaultOrientation, &pGlyph, + &advances, 1); + *width = (int)(advances.width / size * 1000); + width++; + } +} +static void _InsertWidthArray(CTFontRef font, + int start, + int end, + CPDF_Array* pWidthArray) { + int size = end - start + 1; + int* widths = FX_Alloc(int, size); + FX_GetCharWidth(font, start, end, widths); + int i; + for (i = 1; i < size; i++) + if (widths[i] != *widths) { + break; + } + if (i == size) { + int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1); + pWidthArray->AddInteger(first + size - 1); + pWidthArray->AddInteger(*widths); + } else { + CPDF_Array* pWidthArray1 = new CPDF_Array; + pWidthArray->Add(pWidthArray1); + for (i = 0; i < size; i++) { + pWidthArray1->AddInteger(widths[i]); + } + } + FX_Free(widths); +} +CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont, + FX_BOOL bVert, + FX_BOOL bTranslateName) { + CTFontRef font = (CTFontRef)pFont; + CTFontDescriptorRef descriptor = CTFontCopyFontDescriptor(font); + if (!descriptor) { + return NULL; + } + CFX_ByteString basefont; + FX_BOOL bCJK = FALSE; + int flags = 0, italicangle = 0, ascend = 0, descend = 0, capheight = 0, + bbox[4]; + FXSYS_memset(bbox, 0, sizeof(int) * 4); + CFArrayRef languages = (CFArrayRef)CTFontDescriptorCopyAttribute( + descriptor, kCTFontLanguagesAttribute); + if (!languages) { + CFRelease(descriptor); + return NULL; + } + CFX_DWordArray charSets; + charSets.Add(FXFONT_CHINESEBIG5_CHARSET); + charSets.Add(FXFONT_GB2312_CHARSET); + charSets.Add(FXFONT_HANGEUL_CHARSET); + charSets.Add(FXFONT_SHIFTJIS_CHARSET); + if (IsHasCharSet(languages, charSets)) { + bCJK = TRUE; + } + CFRelease(descriptor); + CFDictionaryRef traits = (CFDictionaryRef)CTFontCopyTraits(font); + if (!traits) { + CFRelease(languages); + return NULL; + } + CFNumberRef sybolicTrait = + (CFNumberRef)CFDictionaryGetValue(traits, kCTFontSymbolicTrait); + CTFontSymbolicTraits trait = 0; + CFNumberGetValue(sybolicTrait, kCFNumberSInt32Type, &trait); + if (trait & kCTFontItalicTrait) { + flags |= PDFFONT_ITALIC; + } + if (trait & kCTFontMonoSpaceTrait) { + flags |= PDFFONT_FIXEDPITCH; + } + if (trait & kCTFontModernSerifsClass) { + flags |= PDFFONT_SERIF; + } + if (trait & kCTFontScriptsClass) { + flags |= PDFFONT_SCRIPT; + } + CFNumberRef weightTrait = + (CFNumberRef)CFDictionaryGetValue(traits, kCTFontWeightTrait); + Float32 weight = 0; + CFNumberGetValue(weightTrait, kCFNumberFloat32Type, &weight); + italicangle = CTFontGetSlantAngle(font); + ascend = CTFontGetAscent(font); + descend = CTFontGetDescent(font); + capheight = CTFontGetCapHeight(font); + CGRect box = CTFontGetBoundingBox(font); + bbox[0] = box.origin.x; + bbox[1] = box.origin.y; + bbox[2] = box.origin.x + box.size.width; + bbox[3] = box.origin.y + box.size.height; + if (bTranslateName && bCJK) { + CFStringRef postName = CTFontCopyPostScriptName(font); + _CFString2CFXByteString(postName, basefont); + CFRelease(postName); + } + if (basefont.IsEmpty()) { + CFStringRef fullName = CTFontCopyFullName(font); + _CFString2CFXByteString(fullName, basefont); + CFRelease(fullName); + } + basefont.Replace(" ", ""); + CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; + CPDF_Dictionary* pFontDict = pBaseDict; + if (!bCJK) { + charSets.RemoveAll(); + charSets.Add(FXFONT_ANSI_CHARSET); + charSets.Add(FXFONT_DEFAULT_CHARSET); + charSets.Add(FXFONT_SYMBOL_CHARSET); + if (IsHasCharSet(languages, charSets)) { + charSets.RemoveAll(); + charSets.Add(FXFONT_SYMBOL_CHARSET); + if (IsHasCharSet(languages, charSets)) { + flags |= PDFFONT_SYMBOLIC; + } else { + flags |= PDFFONT_NONSYMBOLIC; + } + pBaseDict->SetAtName("Encoding", "WinAnsiEncoding"); + } else { + flags |= PDFFONT_NONSYMBOLIC; + size_t i; + for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes); + i++) { + charSets.RemoveAll(); + charSets.Add(g_FX_CharsetUnicodes[i].m_Charset); + if (IsHasCharSet(languages, charSets)) { + break; + } + } + if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) { + CPDF_Dictionary* pEncoding = new CPDF_Dictionary; + pEncoding->SetAtName("BaseEncoding", "WinAnsiEncoding"); + CPDF_Array* pArray = new CPDF_Array; + pArray->AddInteger(128); + const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes; + for (int j = 0; j < 128; j++) { + CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]); + if (name.IsEmpty()) { + pArray->AddName(".notdef"); + } else { + pArray->AddName(name); + } + } + pEncoding->SetAt("Differences", pArray); + AddIndirectObject(pEncoding); + pBaseDict->SetAtReference("Encoding", this, pEncoding); + } + } + if (weight > 0.0 && trait & kCTFontItalicTrait) { + basefont += ",BoldItalic"; + } else if (weight > 0.0) { + basefont += ",Bold"; + } else if (trait & kCTFontItalicTrait) { + basefont += ",Italic"; + } + pBaseDict->SetAtName("Subtype", "TrueType"); + pBaseDict->SetAtName("BaseFont", basefont); + pBaseDict->SetAtNumber("FirstChar", 32); + pBaseDict->SetAtNumber("LastChar", 255); + int char_widths[224]; + FX_GetCharWidth(font, 32, 255, char_widths); + CPDF_Array* pWidths = new CPDF_Array; + for (int i = 0; i < 224; i++) { + pWidths->AddInteger(char_widths[i]); + } + pBaseDict->SetAt("Widths", pWidths); + } else { + flags |= PDFFONT_NONSYMBOLIC; + CPDF_Array* pArray = NULL; + pFontDict = new CPDF_Dictionary; + CFX_ByteString cmap; + CFX_ByteString ordering; + int supplement; + FX_BOOL bFound = FALSE; + CPDF_Array* pWidthArray = new CPDF_Array; + charSets.RemoveAll(); + charSets.Add(FXFONT_CHINESEBIG5_CHARSET); + if (IsHasCharSet(languages, charSets)) { + cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H"; + ordering = "CNS1"; + supplement = 4; + pWidthArray->AddInteger(1); + _InsertWidthArray(font, 0x20, 0x7e, pWidthArray); + bFound = TRUE; + } + charSets.RemoveAll(); + charSets.Add(FXFONT_GB2312_CHARSET); + if (!bFound && IsHasCharSet(languages, charSets)) { + cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H"; + ordering = "GB1", supplement = 2; + pWidthArray->AddInteger(7716); + _InsertWidthArray(font, 0x20, 0x20, pWidthArray); + pWidthArray->AddInteger(814); + _InsertWidthArray(font, 0x21, 0x7e, pWidthArray); + bFound = TRUE; + } + charSets.RemoveAll(); + charSets.Add(FXFONT_HANGEUL_CHARSET); + if (!bFound && IsHasCharSet(languages, charSets)) { + cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H"; + ordering = "Korea1"; + supplement = 2; + pWidthArray->AddInteger(1); + _InsertWidthArray(font, 0x20, 0x7e, pWidthArray); + bFound = TRUE; + } + charSets.RemoveAll(); + charSets.Add(FXFONT_SHIFTJIS_CHARSET); + if (!bFound && IsHasCharSet(languages, charSets)) { + cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H"; + ordering = "Japan1"; + supplement = 5; + pWidthArray->AddInteger(231); + _InsertWidthArray(font, 0x20, 0x7d, pWidthArray); + pWidthArray->AddInteger(326); + _InsertWidthArray(font, 0xa0, 0xa0, pWidthArray); + pWidthArray->AddInteger(327); + _InsertWidthArray(font, 0xa1, 0xdf, pWidthArray); + pWidthArray->AddInteger(631); + _InsertWidthArray(font, 0x7e, 0x7e, pWidthArray); + } + pBaseDict->SetAtName("Subtype", "Type0"); + pBaseDict->SetAtName("BaseFont", basefont); + pBaseDict->SetAtName("Encoding", cmap); + pFontDict->SetAt("W", pWidthArray); + pFontDict->SetAtName("Type", "Font"); + pFontDict->SetAtName("Subtype", "CIDFontType2"); + pFontDict->SetAtName("BaseFont", basefont); + CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary; + pCIDSysInfo->SetAtString("Registry", "Adobe"); + pCIDSysInfo->SetAtString("Ordering", ordering); + pCIDSysInfo->SetAtInteger("Supplement", supplement); + pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo); + pArray = new CPDF_Array; + pBaseDict->SetAt("DescendantFonts", pArray); + AddIndirectObject(pFontDict); + pArray->AddReference(this, pFontDict); + } + AddIndirectObject(pBaseDict); + CPDF_Dictionary* pFontDesc = new CPDF_Dictionary; + pFontDesc->SetAtName("Type", "FontDescriptor"); + pFontDesc->SetAtName("FontName", basefont); + pFontDesc->SetAtInteger("Flags", flags); + CPDF_Array* pBBox = new CPDF_Array; + for (int i = 0; i < 4; i++) { + pBBox->AddInteger(bbox[i]); + } + pFontDesc->SetAt("FontBBox", pBBox); + pFontDesc->SetAtInteger("ItalicAngle", italicangle); + pFontDesc->SetAtInteger("Ascent", ascend); + pFontDesc->SetAtInteger("Descent", descend); + pFontDesc->SetAtInteger("CapHeight", capheight); + CGFloat fStemV = 0; + int16_t min_width = SHRT_MAX; + + static const UniChar stem_chars[] = {'i', 'I', '!', '1'}; + CGGlyph glyphs[FX_ArraySize(stem_chars)]; + CGRect boundingRects[FX_ArraySize(stem_chars)]; + + const size_t count = FX_ArraySize(stem_chars); + if (CTFontGetGlyphsForCharacters(font, stem_chars, glyphs, count)) { + CTFontGetBoundingRectsForGlyphs(font, kCTFontHorizontalOrientation, glyphs, + boundingRects, count); + for (size_t i = 0; i < count; i++) { + int16_t width = boundingRects[i].size.width; + if (width > 0 && width < min_width) { + min_width = width; + fStemV = min_width; + } + } + } + pFontDesc->SetAtInteger("StemV", fStemV); + AddIndirectObject(pFontDesc); + pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); + CFRelease(traits); + CFRelease(languages); + return LoadFont(pBaseDict); +} +#endif // (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_) + +static void _InsertWidthArray1(CFX_Font* pFont, + CFX_UnicodeEncoding* pEncoding, + FX_WCHAR start, + FX_WCHAR end, + CPDF_Array* pWidthArray) { + int size = end - start + 1; + int* widths = FX_Alloc(int, size); + int i; + for (i = 0; i < size; i++) { + int glyph_index = pEncoding->GlyphFromCharCode(start + i); + widths[i] = pFont->GetGlyphWidth(glyph_index); + } + for (i = 1; i < size; i++) + if (widths[i] != *widths) { + break; + } + if (i == size) { + int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1); + pWidthArray->AddInteger(first + size - 1); + pWidthArray->AddInteger(*widths); + } else { + CPDF_Array* pWidthArray1 = new CPDF_Array; + pWidthArray->Add(pWidthArray1); + for (i = 0; i < size; i++) { + pWidthArray1->AddInteger(widths[i]); + } + } + FX_Free(widths); +} + +CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) { + if (!pFont) { + return NULL; + } + bool bCJK = charset == FXFONT_CHINESEBIG5_CHARSET || + charset == FXFONT_GB2312_CHARSET || + charset == FXFONT_HANGEUL_CHARSET || + charset == FXFONT_SHIFTJIS_CHARSET; + CFX_ByteString basefont = pFont->GetFamilyName(); + basefont.Replace(" ", ""); + int flags = 0; + if (pFont->IsBold()) { + flags |= PDFFONT_FORCEBOLD; + } + if (pFont->IsItalic()) { + flags |= PDFFONT_ITALIC; + } + if (pFont->IsFixedWidth()) { + flags |= PDFFONT_FIXEDPITCH; + } + CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; + pBaseDict->SetAtName("Type", "Font"); + std::unique_ptr pEncoding( + new CFX_UnicodeEncoding(pFont)); + CPDF_Dictionary* pFontDict = pBaseDict; + if (!bCJK) { + CPDF_Array* pWidths = new CPDF_Array; + int charcode; + for (charcode = 32; charcode < 128; charcode++) { + int glyph_index = pEncoding->GlyphFromCharCode(charcode); + int char_width = pFont->GetGlyphWidth(glyph_index); + pWidths->AddInteger(char_width); + } + if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_DEFAULT_CHARSET || + charset == FXFONT_SYMBOL_CHARSET) { + if (charset == FXFONT_SYMBOL_CHARSET) { + flags |= PDFFONT_SYMBOLIC; + } else { + flags |= PDFFONT_NONSYMBOLIC; + } + pBaseDict->SetAtName("Encoding", "WinAnsiEncoding"); + for (charcode = 128; charcode <= 255; charcode++) { + int glyph_index = pEncoding->GlyphFromCharCode(charcode); + int char_width = pFont->GetGlyphWidth(glyph_index); + pWidths->AddInteger(char_width); + } + } else { + flags |= PDFFONT_NONSYMBOLIC; + size_t i; + for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes); + i++) + if (g_FX_CharsetUnicodes[i].m_Charset == charset) { + break; + } + if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) { + CPDF_Dictionary* pEncodingDict = new CPDF_Dictionary; + pEncodingDict->SetAtName("BaseEncoding", "WinAnsiEncoding"); + CPDF_Array* pArray = new CPDF_Array; + pArray->AddInteger(128); + const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes; + for (int j = 0; j < 128; j++) { + CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]); + if (name.IsEmpty()) { + pArray->AddName(".notdef"); + } else { + pArray->AddName(name); + } + int glyph_index = pEncoding->GlyphFromCharCode(pUnicodes[j]); + int char_width = pFont->GetGlyphWidth(glyph_index); + pWidths->AddInteger(char_width); + } + pEncodingDict->SetAt("Differences", pArray); + AddIndirectObject(pEncodingDict); + pBaseDict->SetAtReference("Encoding", this, pEncodingDict); + } + } + if (pFont->IsBold() && pFont->IsItalic()) { + basefont += ",BoldItalic"; + } else if (pFont->IsBold()) { + basefont += ",Bold"; + } else if (pFont->IsItalic()) { + basefont += ",Italic"; + } + pBaseDict->SetAtName("Subtype", "TrueType"); + pBaseDict->SetAtName("BaseFont", basefont); + pBaseDict->SetAtNumber("FirstChar", 32); + pBaseDict->SetAtNumber("LastChar", 255); + pBaseDict->SetAt("Widths", pWidths); + } else { + flags |= PDFFONT_NONSYMBOLIC; + pFontDict = new CPDF_Dictionary; + CFX_ByteString cmap; + CFX_ByteString ordering; + int supplement; + CPDF_Array* pWidthArray = new CPDF_Array; + switch (charset) { + case FXFONT_CHINESEBIG5_CHARSET: + cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H"; + ordering = "CNS1"; + supplement = 4; + pWidthArray->AddInteger(1); + _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7e, pWidthArray); + break; + case FXFONT_GB2312_CHARSET: + cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H"; + ordering = "GB1", supplement = 2; + pWidthArray->AddInteger(7716); + _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x20, pWidthArray); + pWidthArray->AddInteger(814); + _InsertWidthArray1(pFont, pEncoding.get(), 0x21, 0x7e, pWidthArray); + break; + case FXFONT_HANGEUL_CHARSET: + cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H"; + ordering = "Korea1"; + supplement = 2; + pWidthArray->AddInteger(1); + _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7e, pWidthArray); + break; + case FXFONT_SHIFTJIS_CHARSET: + cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H"; + ordering = "Japan1"; + supplement = 5; + pWidthArray->AddInteger(231); + _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7d, pWidthArray); + pWidthArray->AddInteger(326); + _InsertWidthArray1(pFont, pEncoding.get(), 0xa0, 0xa0, pWidthArray); + pWidthArray->AddInteger(327); + _InsertWidthArray1(pFont, pEncoding.get(), 0xa1, 0xdf, pWidthArray); + pWidthArray->AddInteger(631); + _InsertWidthArray1(pFont, pEncoding.get(), 0x7e, 0x7e, pWidthArray); + break; + } + pBaseDict->SetAtName("Subtype", "Type0"); + pBaseDict->SetAtName("BaseFont", basefont); + pBaseDict->SetAtName("Encoding", cmap); + pFontDict->SetAt("W", pWidthArray); + pFontDict->SetAtName("Type", "Font"); + pFontDict->SetAtName("Subtype", "CIDFontType2"); + pFontDict->SetAtName("BaseFont", basefont); + CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary; + pCIDSysInfo->SetAtString("Registry", "Adobe"); + pCIDSysInfo->SetAtString("Ordering", ordering); + pCIDSysInfo->SetAtInteger("Supplement", supplement); + pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo); + CPDF_Array* pArray = new CPDF_Array; + pBaseDict->SetAt("DescendantFonts", pArray); + AddIndirectObject(pFontDict); + pArray->AddReference(this, pFontDict); + } + AddIndirectObject(pBaseDict); + CPDF_Dictionary* pFontDesc = new CPDF_Dictionary; + pFontDesc->SetAtName("Type", "FontDescriptor"); + pFontDesc->SetAtName("FontName", basefont); + pFontDesc->SetAtInteger("Flags", flags); + pFontDesc->SetAtInteger( + "ItalicAngle", + pFont->GetSubstFont() ? pFont->GetSubstFont()->m_ItalicAngle : 0); + pFontDesc->SetAtInteger("Ascent", pFont->GetAscent()); + pFontDesc->SetAtInteger("Descent", pFont->GetDescent()); + FX_RECT bbox; + pFont->GetBBox(bbox); + CPDF_Array* pBBox = new CPDF_Array; + pBBox->AddInteger(bbox.left); + pBBox->AddInteger(bbox.bottom); + pBBox->AddInteger(bbox.right); + pBBox->AddInteger(bbox.top); + pFontDesc->SetAt("FontBBox", pBBox); + int32_t nStemV = 0; + if (pFont->GetSubstFont()) { + nStemV = pFont->GetSubstFont()->m_Weight / 5; + } else { + static const FX_CHAR stem_chars[] = {'i', 'I', '!', '1'}; + const size_t count = sizeof(stem_chars) / sizeof(stem_chars[0]); + FX_DWORD glyph = pEncoding->GlyphFromCharCode(stem_chars[0]); + nStemV = pFont->GetGlyphWidth(glyph); + for (size_t i = 1; i < count; i++) { + glyph = pEncoding->GlyphFromCharCode(stem_chars[i]); + int width = pFont->GetGlyphWidth(glyph); + if (width > 0 && width < nStemV) { + nStemV = width; + } + } + } + pFontDesc->SetAtInteger("StemV", nStemV); + AddIndirectObject(pFontDesc); + pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); + return LoadFont(pBaseDict); +} +static int InsertDeletePDFPage(CPDF_Document* pDoc, + CPDF_Dictionary* pPages, + int nPagesToGo, + CPDF_Dictionary* pPage, + FX_BOOL bInsert, + CFX_ArrayTemplate& stackList) { + CPDF_Array* pKidList = pPages->GetArrayBy("Kids"); + if (!pKidList) { + return -1; + } + int nKids = pKidList->GetCount(); + for (int i = 0; i < nKids; i++) { + CPDF_Dictionary* pKid = pKidList->GetDictAt(i); + if (pKid->GetStringBy("Type") == "Page") { + if (nPagesToGo == 0) { + if (bInsert) { + pKidList->InsertAt(i, new CPDF_Reference(pDoc, pPage->GetObjNum())); + pPage->SetAtReference("Parent", pDoc, pPages->GetObjNum()); + } else { + pKidList->RemoveAt(i); + } + pPages->SetAtInteger( + "Count", pPages->GetIntegerBy("Count") + (bInsert ? 1 : -1)); + return 1; + } + nPagesToGo--; + } else { + int nPages = pKid->GetIntegerBy("Count"); + if (nPagesToGo < nPages) { + int stackCount = stackList.GetSize(); + for (int j = 0; j < stackCount; ++j) { + if (pKid == stackList[j]) { + return -1; + } + } + stackList.Add(pKid); + if (InsertDeletePDFPage(pDoc, pKid, nPagesToGo, pPage, bInsert, + stackList) < 0) { + return -1; + } + stackList.RemoveAt(stackCount); + pPages->SetAtInteger( + "Count", pPages->GetIntegerBy("Count") + (bInsert ? 1 : -1)); + return 1; + } + nPagesToGo -= nPages; + } + } + return 0; +} +static int InsertNewPage(CPDF_Document* pDoc, + int iPage, + CPDF_Dictionary* pPageDict, + CFX_DWordArray& pageList) { + CPDF_Dictionary* pRoot = pDoc->GetRoot(); + if (!pRoot) { + return -1; + } + CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); + if (!pPages) { + return -1; + } + int nPages = pDoc->GetPageCount(); + if (iPage < 0 || iPage > nPages) { + return -1; + } + if (iPage == nPages) { + CPDF_Array* pPagesList = pPages->GetArrayBy("Kids"); + if (!pPagesList) { + pPagesList = new CPDF_Array; + pPages->SetAt("Kids", pPagesList); + } + pPagesList->Add(pPageDict, pDoc); + pPages->SetAtInteger("Count", nPages + 1); + pPageDict->SetAtReference("Parent", pDoc, pPages->GetObjNum()); + } else { + CFX_ArrayTemplate stack; + stack.Add(pPages); + if (InsertDeletePDFPage(pDoc, pPages, iPage, pPageDict, TRUE, stack) < 0) { + return -1; + } + } + pageList.InsertAt(iPage, pPageDict->GetObjNum()); + return iPage; +} +CPDF_Dictionary* CPDF_Document::CreateNewPage(int iPage) { + CPDF_Dictionary* pDict = new CPDF_Dictionary; + pDict->SetAtName("Type", "Page"); + FX_DWORD dwObjNum = AddIndirectObject(pDict); + if (InsertNewPage(this, iPage, pDict, m_PageList) < 0) { + ReleaseIndirectObject(dwObjNum); + return NULL; + } + return pDict; +} + +CPDF_Font* CPDF_Document::AddStandardFont(const FX_CHAR* font, + CPDF_FontEncoding* pEncoding) { + CFX_ByteString name(font); + if (PDF_GetStandardFontName(&name) < 0) + return nullptr; + return GetPageData()->GetStandardFont(name, pEncoding); +} + +void CPDF_Document::DeletePage(int iPage) { + CPDF_Dictionary* pRoot = GetRoot(); + if (!pRoot) { + return; + } + CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); + if (!pPages) { + return; + } + int nPages = pPages->GetIntegerBy("Count"); + if (iPage < 0 || iPage >= nPages) { + return; + } + CFX_ArrayTemplate stack; + stack.Add(pPages); + if (InsertDeletePDFPage(this, pPages, iPage, NULL, FALSE, stack) < 0) { + return; + } + m_PageList.RemoveAt(iPage); +} +CPDF_Object* FPDFAPI_GetPageAttr(CPDF_Dictionary* pPageDict, + const CFX_ByteStringC& name); +void FPDFAPI_FlatPageAttr(CPDF_Dictionary* pPageDict, + const CFX_ByteStringC& name) { + if (pPageDict->KeyExist(name)) { + return; + } + CPDF_Object* pObj = FPDFAPI_GetPageAttr(pPageDict, name); + if (pObj) { + pPageDict->SetAt(name, pObj->Clone()); + } +} diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp new file mode 100644 index 0000000000..f3e6a439c2 --- /dev/null +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp @@ -0,0 +1,391 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/fpdfapi/fpdf_render/render_int.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_boolean.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "core/include/fxcodec/fx_codec.h" + +CPDF_Dictionary* CPDF_Image::InitJPEG(uint8_t* pData, FX_DWORD size) { + int32_t width; + int32_t height; + int32_t num_comps; + int32_t bits; + FX_BOOL color_trans; + if (!CPDF_ModuleMgr::Get()->GetJpegModule()->LoadInfo( + pData, size, width, height, num_comps, bits, color_trans)) { + return NULL; + } + CPDF_Dictionary* pDict = new CPDF_Dictionary; + pDict->SetAtName("Type", "XObject"); + pDict->SetAtName("Subtype", "Image"); + pDict->SetAtInteger("Width", width); + pDict->SetAtInteger("Height", height); + const FX_CHAR* csname = NULL; + if (num_comps == 1) { + csname = "DeviceGray"; + } else if (num_comps == 3) { + csname = "DeviceRGB"; + } else if (num_comps == 4) { + csname = "DeviceCMYK"; + CPDF_Array* pDecode = new CPDF_Array; + for (int n = 0; n < 4; n++) { + pDecode->AddInteger(1); + pDecode->AddInteger(0); + } + pDict->SetAt("Decode", pDecode); + } + pDict->SetAtName("ColorSpace", csname); + pDict->SetAtInteger("BitsPerComponent", bits); + pDict->SetAtName("Filter", "DCTDecode"); + if (!color_trans) { + CPDF_Dictionary* pParms = new CPDF_Dictionary; + pDict->SetAt("DecodeParms", pParms); + pParms->SetAtInteger("ColorTransform", 0); + } + m_bIsMask = FALSE; + m_Width = width; + m_Height = height; + if (!m_pStream) { + m_pStream = new CPDF_Stream(NULL, 0, NULL); + } + return pDict; +} +void CPDF_Image::SetJpegImage(uint8_t* pData, FX_DWORD size) { + CPDF_Dictionary* pDict = InitJPEG(pData, size); + if (!pDict) { + return; + } + m_pStream->InitStream(pData, size, pDict); +} +void CPDF_Image::SetJpegImage(IFX_FileRead* pFile) { + FX_DWORD size = (FX_DWORD)pFile->GetSize(); + if (!size) { + return; + } + FX_DWORD dwEstimateSize = size; + if (dwEstimateSize > 8192) { + dwEstimateSize = 8192; + } + uint8_t* pData = FX_Alloc(uint8_t, dwEstimateSize); + pFile->ReadBlock(pData, 0, dwEstimateSize); + CPDF_Dictionary* pDict = InitJPEG(pData, dwEstimateSize); + FX_Free(pData); + if (!pDict && size > dwEstimateSize) { + pData = FX_Alloc(uint8_t, size); + pFile->ReadBlock(pData, 0, size); + pDict = InitJPEG(pData, size); + FX_Free(pData); + } + if (!pDict) { + return; + } + m_pStream->InitStreamFromFile(pFile, pDict); +} +void _DCTEncodeBitmap(CPDF_Dictionary* pBitmapDict, + const CFX_DIBitmap* pBitmap, + int quality, + uint8_t*& buf, + FX_STRSIZE& size) {} +void _JBIG2EncodeBitmap(CPDF_Dictionary* pBitmapDict, + const CFX_DIBitmap* pBitmap, + CPDF_Document* pDoc, + uint8_t*& buf, + FX_STRSIZE& size, + FX_BOOL bLossLess) {} +void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap, + int32_t iCompress, + IFX_FileWrite* pFileWrite, + IFX_FileRead* pFileRead, + const CFX_DIBitmap* pMask, + const CPDF_ImageSetParam* pParam) { + int32_t BitmapWidth = pBitmap->GetWidth(); + int32_t BitmapHeight = pBitmap->GetHeight(); + if (BitmapWidth < 1 || BitmapHeight < 1) { + return; + } + uint8_t* src_buf = pBitmap->GetBuffer(); + int32_t src_pitch = pBitmap->GetPitch(); + int32_t bpp = pBitmap->GetBPP(); + FX_BOOL bUseMatte = + pParam && pParam->pMatteColor && (pBitmap->GetFormat() == FXDIB_Argb); + CPDF_Dictionary* pDict = new CPDF_Dictionary; + pDict->SetAtName("Type", "XObject"); + pDict->SetAtName("Subtype", "Image"); + pDict->SetAtInteger("Width", BitmapWidth); + pDict->SetAtInteger("Height", BitmapHeight); + uint8_t* dest_buf = NULL; + FX_STRSIZE dest_pitch = 0, dest_size = 0, opType = -1; + if (bpp == 1) { + int32_t reset_a = 0, reset_r = 0, reset_g = 0, reset_b = 0; + int32_t set_a = 0, set_r = 0, set_g = 0, set_b = 0; + if (!pBitmap->IsAlphaMask()) { + ArgbDecode(pBitmap->GetPaletteArgb(0), reset_a, reset_r, reset_g, + reset_b); + ArgbDecode(pBitmap->GetPaletteArgb(1), set_a, set_r, set_g, set_b); + } + if (set_a == 0 || reset_a == 0) { + pDict->SetAt("ImageMask", new CPDF_Boolean(TRUE)); + if (reset_a == 0) { + CPDF_Array* pArray = new CPDF_Array; + pArray->AddInteger(1); + pArray->AddInteger(0); + pDict->SetAt("Decode", pArray); + } + } else { + CPDF_Array* pCS = new CPDF_Array; + pCS->AddName("Indexed"); + pCS->AddName("DeviceRGB"); + pCS->AddInteger(1); + CFX_ByteString ct; + FX_CHAR* pBuf = ct.GetBuffer(6); + pBuf[0] = (FX_CHAR)reset_r; + pBuf[1] = (FX_CHAR)reset_g; + pBuf[2] = (FX_CHAR)reset_b; + pBuf[3] = (FX_CHAR)set_r; + pBuf[4] = (FX_CHAR)set_g; + pBuf[5] = (FX_CHAR)set_b; + ct.ReleaseBuffer(6); + pCS->Add(new CPDF_String(ct, TRUE)); + pDict->SetAt("ColorSpace", pCS); + } + pDict->SetAtInteger("BitsPerComponent", 1); + dest_pitch = (BitmapWidth + 7) / 8; + if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { + opType = 1; + } else { + opType = 0; + } + } else if (bpp == 8) { + int32_t iPalette = pBitmap->GetPaletteSize(); + if (iPalette > 0) { + CPDF_Array* pCS = new CPDF_Array; + m_pDocument->AddIndirectObject(pCS); + pCS->AddName("Indexed"); + pCS->AddName("DeviceRGB"); + pCS->AddInteger(iPalette - 1); + uint8_t* pColorTable = FX_Alloc2D(uint8_t, iPalette, 3); + uint8_t* ptr = pColorTable; + for (int32_t i = 0; i < iPalette; i++) { + FX_DWORD argb = pBitmap->GetPaletteArgb(i); + ptr[0] = (uint8_t)(argb >> 16); + ptr[1] = (uint8_t)(argb >> 8); + ptr[2] = (uint8_t)argb; + ptr += 3; + } + CPDF_Stream* pCTS = + new CPDF_Stream(pColorTable, iPalette * 3, new CPDF_Dictionary); + m_pDocument->AddIndirectObject(pCTS); + pCS->AddReference(m_pDocument, pCTS); + pDict->SetAtReference("ColorSpace", m_pDocument, pCS); + } else { + pDict->SetAtName("ColorSpace", "DeviceGray"); + } + pDict->SetAtInteger("BitsPerComponent", 8); + if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { + dest_pitch = BitmapWidth; + opType = 1; + } else { + opType = 0; + } + } else { + pDict->SetAtName("ColorSpace", "DeviceRGB"); + pDict->SetAtInteger("BitsPerComponent", 8); + if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { + dest_pitch = BitmapWidth * 3; + opType = 2; + } else { + opType = 0; + } + } + const CFX_DIBitmap* pMaskBitmap = NULL; + FX_BOOL bDeleteMask = FALSE; + if (pBitmap->HasAlpha()) { + pMaskBitmap = pBitmap->GetAlphaMask(); + bDeleteMask = TRUE; + } + if (!pMaskBitmap && pMask) { + FXDIB_Format maskFormat = pMask->GetFormat(); + if (maskFormat == FXDIB_1bppMask || maskFormat == FXDIB_8bppMask) { + pMaskBitmap = pMask; + } + } + if (pMaskBitmap) { + int32_t maskWidth = pMaskBitmap->GetWidth(); + int32_t maskHeight = pMaskBitmap->GetHeight(); + uint8_t* mask_buf = NULL; + FX_STRSIZE mask_size = 0; + CPDF_Dictionary* pMaskDict = new CPDF_Dictionary; + pMaskDict->SetAtName("Type", "XObject"); + pMaskDict->SetAtName("Subtype", "Image"); + pMaskDict->SetAtInteger("Width", maskWidth); + pMaskDict->SetAtInteger("Height", maskHeight); + pMaskDict->SetAtName("ColorSpace", "DeviceGray"); + pMaskDict->SetAtInteger("BitsPerComponent", 8); + if (pMaskBitmap->GetBPP() == 8 && + (iCompress & PDF_IMAGE_MASK_LOSSY_COMPRESS) != 0) { + _DCTEncodeBitmap(pMaskDict, pMaskBitmap, pParam ? pParam->nQuality : 75, + mask_buf, mask_size); + } else if (pMaskBitmap->GetFormat() == FXDIB_1bppMask) { + _JBIG2EncodeBitmap(pMaskDict, pMaskBitmap, m_pDocument, mask_buf, + mask_size, TRUE); + } else { + mask_buf = FX_Alloc2D(uint8_t, maskHeight, maskWidth); + mask_size = maskHeight * maskWidth; // Safe since checked alloc returned. + for (int32_t a = 0; a < maskHeight; a++) { + FXSYS_memcpy(mask_buf + a * maskWidth, pMaskBitmap->GetScanline(a), + maskWidth); + } + } + pMaskDict->SetAtInteger("Length", mask_size); + if (bUseMatte) { + int a, r, g, b; + ArgbDecode(*(pParam->pMatteColor), a, r, g, b); + CPDF_Array* pMatte = new CPDF_Array; + pMatte->AddInteger(r); + pMatte->AddInteger(g); + pMatte->AddInteger(b); + pMaskDict->SetAt("Matte", pMatte); + } + CPDF_Stream* pMaskStream = new CPDF_Stream(mask_buf, mask_size, pMaskDict); + m_pDocument->AddIndirectObject(pMaskStream); + pDict->SetAtReference("SMask", m_pDocument, pMaskStream); + if (bDeleteMask) { + delete pMaskBitmap; + } + } + FX_BOOL bStream = pFileWrite && pFileRead; + if (opType == 0) { + if (iCompress & PDF_IMAGE_LOSSLESS_COMPRESS) { + if (pBitmap->GetBPP() == 1) { + _JBIG2EncodeBitmap(pDict, pBitmap, m_pDocument, dest_buf, dest_size, + TRUE); + } + } else { + if (pBitmap->GetBPP() == 1) { + _JBIG2EncodeBitmap(pDict, pBitmap, m_pDocument, dest_buf, dest_size, + FALSE); + } else if (pBitmap->GetBPP() >= 8 && pBitmap->GetPalette()) { + CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap(); + pNewBitmap->Copy(pBitmap); + pNewBitmap->ConvertFormat(FXDIB_Rgb); + SetImage(pNewBitmap, iCompress, pFileWrite, pFileRead); + if (pDict) { + pDict->Release(); + pDict = NULL; + } + FX_Free(dest_buf); + dest_buf = NULL; + dest_size = 0; + delete pNewBitmap; + return; + } else { + if (bUseMatte) { + CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap(); + pNewBitmap->Create(BitmapWidth, BitmapHeight, FXDIB_Argb); + uint8_t* dst_buf = pNewBitmap->GetBuffer(); + int32_t src_offset = 0; + for (int32_t row = 0; row < BitmapHeight; row++) { + src_offset = row * src_pitch; + for (int32_t column = 0; column < BitmapWidth; column++) { + FX_FLOAT alpha = src_buf[src_offset + 3] / 255.0f; + dst_buf[src_offset] = (uint8_t)(src_buf[src_offset] * alpha); + dst_buf[src_offset + 1] = + (uint8_t)(src_buf[src_offset + 1] * alpha); + dst_buf[src_offset + 2] = + (uint8_t)(src_buf[src_offset + 2] * alpha); + dst_buf[src_offset + 3] = (uint8_t)(src_buf[src_offset + 3]); + src_offset += 4; + } + } + _DCTEncodeBitmap(pDict, pNewBitmap, pParam ? pParam->nQuality : 75, + dest_buf, dest_size); + delete pNewBitmap; + } else { + _DCTEncodeBitmap(pDict, pBitmap, pParam ? pParam->nQuality : 75, + dest_buf, dest_size); + } + } + } + if (bStream) { + pFileWrite->WriteBlock(dest_buf, dest_size); + FX_Free(dest_buf); + dest_buf = NULL; + } + } else if (opType == 1) { + if (!bStream) { + dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight); + dest_size = + dest_pitch * BitmapHeight; // Safe since checked alloc returned. + } + uint8_t* pDest = dest_buf; + for (int32_t i = 0; i < BitmapHeight; i++) { + if (!bStream) { + FXSYS_memcpy(pDest, src_buf, dest_pitch); + pDest += dest_pitch; + } else { + pFileWrite->WriteBlock(src_buf, dest_pitch); + } + src_buf += src_pitch; + } + } else if (opType == 2) { + if (!bStream) { + dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight); + dest_size = + dest_pitch * BitmapHeight; // Safe since checked alloc returned. + } else { + dest_buf = FX_Alloc(uint8_t, dest_pitch); + } + uint8_t* pDest = dest_buf; + int32_t src_offset = 0; + int32_t dest_offset = 0; + for (int32_t row = 0; row < BitmapHeight; row++) { + src_offset = row * src_pitch; + for (int32_t column = 0; column < BitmapWidth; column++) { + FX_FLOAT alpha = bUseMatte ? src_buf[src_offset + 3] / 255.0f : 1; + pDest[dest_offset] = (uint8_t)(src_buf[src_offset + 2] * alpha); + pDest[dest_offset + 1] = (uint8_t)(src_buf[src_offset + 1] * alpha); + pDest[dest_offset + 2] = (uint8_t)(src_buf[src_offset] * alpha); + dest_offset += 3; + src_offset += bpp == 24 ? 3 : 4; + } + if (bStream) { + pFileWrite->WriteBlock(pDest, dest_pitch); + pDest = dest_buf; + } else { + pDest += dest_pitch; + } + dest_offset = 0; + } + if (bStream) { + FX_Free(dest_buf); + dest_buf = NULL; + } + } + if (!m_pStream) { + m_pStream = new CPDF_Stream(NULL, 0, NULL); + } + if (!bStream) { + m_pStream->InitStream(dest_buf, dest_size, pDict); + } else { + pFileWrite->Flush(); + m_pStream->InitStreamFromFile(pFileRead, pDict); + } + m_bIsMask = pBitmap->IsAlphaMask(); + m_Width = BitmapWidth; + m_Height = BitmapHeight; + FX_Free(dest_buf); +} +void CPDF_Image::ResetCache(CPDF_Page* pPage, const CFX_DIBitmap* pBitmap) { + pPage->GetRenderCache()->ResetBitmap(m_pStream, pBitmap); +} diff --git a/core/fpdfapi/fpdf_font/font_int.h b/core/fpdfapi/fpdf_font/font_int.h new file mode 100644 index 0000000000..8ceefe353e --- /dev/null +++ b/core/fpdfapi/fpdf_font/font_int.h @@ -0,0 +1,203 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ +#define CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ + +#include +#include + +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcrt/fx_basic.h" + +class CPDF_CID2UnicodeMap; +class CPDF_CMap; +class CPDF_Font; +class CPDF_Stream; + +typedef void* FXFT_Library; + +short TT2PDF(int m, FXFT_Face face); +FX_BOOL FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id); + +class CPDF_CMapManager { + public: + CPDF_CMapManager(); + ~CPDF_CMapManager(); + void* GetPackage(FX_BOOL bPrompt); + CPDF_CMap* GetPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPromptCJK); + CPDF_CID2UnicodeMap* GetCID2UnicodeMap(CIDSet charset, FX_BOOL bPromptCJK); + void ReloadAll(); + + private: + CPDF_CMap* LoadPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPromptCJK); + CPDF_CID2UnicodeMap* LoadCID2UnicodeMap(CIDSet charset, FX_BOOL bPromptCJK); + + FX_BOOL m_bPrompted; + std::map m_CMaps; + CPDF_CID2UnicodeMap* m_CID2UnicodeMaps[6]; +}; + +class CFX_StockFontArray { + public: + CFX_StockFontArray(); + ~CFX_StockFontArray(); + + // Takes ownership of |pFont|. + void SetFont(int index, CPDF_Font* pFont); + CPDF_Font* GetFont(int index) const; + + private: + std::unique_ptr m_StockFonts[14]; +}; + +class CPDF_FontGlobals { + public: + CPDF_FontGlobals(); + ~CPDF_FontGlobals(); + + void Clear(CPDF_Document* pDoc); + CPDF_Font* Find(CPDF_Document* pDoc, int index); + + // Takes ownership of |pFont|. + void Set(CPDF_Document* key, int index, CPDF_Font* pFont); + + CPDF_CMapManager m_CMapManager; + struct { + const struct FXCMAP_CMap* m_pMapList; + int m_Count; + } m_EmbeddedCharsets[CIDSET_NUM_SETS]; + struct { + const FX_WORD* m_pMap; + int m_Count; + } m_EmbeddedToUnicodes[CIDSET_NUM_SETS]; + + private: + std::map> m_StockMap; +}; + +struct CMap_CodeRange { + int m_CharSize; + uint8_t m_Lower[4]; + uint8_t m_Upper[4]; +}; + +class CPDF_CMapParser { + public: + CPDF_CMapParser(); + ~CPDF_CMapParser() {} + FX_BOOL Initialize(CPDF_CMap* pMap); + void ParseWord(const CFX_ByteStringC& str); + CFX_BinaryBuf m_AddMaps; + + private: + friend class fpdf_font_cid_CMap_GetCode_Test; + friend class fpdf_font_cid_CMap_GetCodeRange_Test; + + static FX_DWORD CMap_GetCode(const CFX_ByteStringC& word); + static bool CMap_GetCodeRange(CMap_CodeRange& range, + const CFX_ByteStringC& first, + const CFX_ByteStringC& second); + + CPDF_CMap* m_pCMap; + int m_Status; + int m_CodeSeq; + FX_DWORD m_CodePoints[4]; + CFX_ArrayTemplate m_CodeRanges; + CFX_ByteString m_Registry, m_Ordering, m_Supplement; + CFX_ByteString m_LastWord; +}; +#define CIDCODING_UNKNOWN 0 +#define CIDCODING_GB 1 +#define CIDCODING_BIG5 2 +#define CIDCODING_JIS 3 +#define CIDCODING_KOREA 4 +#define CIDCODING_UCS2 5 +#define CIDCODING_CID 6 +#define CIDCODING_UTF16 7 +class CPDF_CMap { + public: + CPDF_CMap(); + FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr, + const FX_CHAR* name, + FX_BOOL bPromptCJK); + FX_BOOL LoadEmbedded(const uint8_t* pData, FX_DWORD dwSize); + void Release(); + FX_BOOL IsLoaded() const { return m_bLoaded; } + FX_BOOL IsVertWriting() const { return m_bVertical; } + FX_WORD CIDFromCharCode(FX_DWORD charcode) const; + FX_DWORD CharCodeFromCID(FX_WORD CID) const; + int GetCharSize(FX_DWORD charcode) const; + FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const; + int CountChar(const FX_CHAR* pString, int size) const; + int AppendChar(FX_CHAR* str, FX_DWORD charcode) const; + typedef enum { + OneByte, + TwoBytes, + MixedTwoBytes, + MixedFourBytes + } CodingScheme; + + protected: + ~CPDF_CMap(); + friend class CPDF_CMapParser; + friend class CPDF_CMapManager; + friend class CPDF_CIDFont; + + protected: + CFX_ByteString m_PredefinedCMap; + FX_BOOL m_bVertical; + CIDSet m_Charset; + int m_Coding; + CodingScheme m_CodingScheme; + int m_nCodeRanges; + uint8_t* m_pLeadingBytes; + FX_WORD* m_pMapping; + uint8_t* m_pAddMapping; + FX_BOOL m_bLoaded; + const FXCMAP_CMap* m_pEmbedMap; + CPDF_CMap* m_pUseMap; +}; + +class CPDF_CID2UnicodeMap { + public: + CPDF_CID2UnicodeMap(); + ~CPDF_CID2UnicodeMap(); + FX_BOOL Initialize(); + FX_BOOL IsLoaded(); + void Load(CPDF_CMapManager* pMgr, CIDSet charset, FX_BOOL bPromptCJK); + FX_WCHAR UnicodeFromCID(FX_WORD CID); + + protected: + CIDSet m_Charset; + const FX_WORD* m_pEmbeddedMap; + FX_DWORD m_EmbeddedCount; +}; + +class CPDF_ToUnicodeMap { + public: + void Load(CPDF_Stream* pStream); + CFX_WideString Lookup(FX_DWORD charcode); + FX_DWORD ReverseLookup(FX_WCHAR unicode); + + protected: + std::map m_Map; + CPDF_CID2UnicodeMap* m_pBaseMap; + CFX_WideTextBuf m_MultiCharBuf; + + private: + friend class fpdf_font_StringToCode_Test; + friend class fpdf_font_StringToWideString_Test; + + static FX_DWORD StringToCode(const CFX_ByteStringC& str); + static CFX_WideString StringToWideString(const CFX_ByteStringC& str); +}; + +void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset, + const FX_WORD*& pMap, + FX_DWORD& count); + +#endif // CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ diff --git a/core/fpdfapi/fpdf_font/fpdf_font.cpp b/core/fpdfapi/fpdf_font/fpdf_font.cpp new file mode 100644 index 0000000000..98411ef0f1 --- /dev/null +++ b/core/fpdfapi/fpdf_font/fpdf_font.cpp @@ -0,0 +1,1814 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_font/font_int.h" + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_simple_parser.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxge/fx_freetype.h" +#include "third_party/base/stl_util.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ +#include "core/fxge/apple/apple_int.h" +#endif + +namespace { + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ +struct GlyphNameMap { + const FX_CHAR* m_pStrAdobe; + const FX_CHAR* m_pStrUnicode; +}; + +const GlyphNameMap g_GlyphNameSubsts[] = {{"ff", "uniFB00"}, + {"fi", "uniFB01"}, + {"fl", "uniFB02"}, + {"ffi", "uniFB03"}, + {"ffl", "uniFB04"}}; + +int compareString(const void* key, const void* element) { + return FXSYS_stricmp((const FX_CHAR*)key, + ((GlyphNameMap*)element)->m_pStrAdobe); +} + +const FX_CHAR* GlyphNameRemap(const FX_CHAR* pStrAdobe) { + GlyphNameMap* found = (GlyphNameMap*)FXSYS_bsearch( + pStrAdobe, g_GlyphNameSubsts, + sizeof(g_GlyphNameSubsts) / sizeof(GlyphNameMap), sizeof(GlyphNameMap), + compareString); + if (found) + return found->m_pStrUnicode; + return NULL; +} +#endif + +const uint8_t ChineseFontNames[][5] = {{0xCB, 0xCE, 0xCC, 0xE5, 0x00}, + {0xBF, 0xAC, 0xCC, 0xE5, 0x00}, + {0xBA, 0xDA, 0xCC, 0xE5, 0x00}, + {0xB7, 0xC2, 0xCB, 0xCE, 0x00}, + {0xD0, 0xC2, 0xCB, 0xCE, 0x00}}; + +FX_BOOL GetPredefinedEncoding(int& basemap, const CFX_ByteString& value) { + if (value == "WinAnsiEncoding") { + basemap = PDFFONT_ENCODING_WINANSI; + } else if (value == "MacRomanEncoding") { + basemap = PDFFONT_ENCODING_MACROMAN; + } else if (value == "MacExpertEncoding") { + basemap = PDFFONT_ENCODING_MACEXPERT; + } else if (value == "PDFDocEncoding") { + basemap = PDFFONT_ENCODING_PDFDOC; + } else { + return FALSE; + } + return TRUE; +} + +FX_BOOL FT_UseType1Charmap(FXFT_Face face) { + if (FXFT_Get_Face_CharmapCount(face) == 0) { + return FALSE; + } + if (FXFT_Get_Face_CharmapCount(face) == 1 && + FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) == + FXFT_ENCODING_UNICODE) { + return FALSE; + } + if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) == + FXFT_ENCODING_UNICODE) { + FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[1]); + } else { + FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]); + } + return TRUE; +} + +} // namespace + +FX_BOOL FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id) { + for (int i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) { + if (FXFT_Get_Charmap_PlatformID(FXFT_Get_Face_Charmaps(face)[i]) == + platform_id && + FXFT_Get_Charmap_EncodingID(FXFT_Get_Face_Charmaps(face)[i]) == + encoding_id) { + FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]); + return TRUE; + } + } + return FALSE; +} + +CFX_StockFontArray::CFX_StockFontArray() {} + +CFX_StockFontArray::~CFX_StockFontArray() { + for (size_t i = 0; i < FX_ArraySize(m_StockFonts); ++i) { + if (!m_StockFonts[i]) + continue; + CPDF_Dictionary* pFontDict = m_StockFonts[i]->GetFontDict(); + if (pFontDict) + pFontDict->Release(); + } +} + +CPDF_Font* CFX_StockFontArray::GetFont(int index) const { + if (index < 0 || index >= FX_ArraySize(m_StockFonts)) + return nullptr; + return m_StockFonts[index].get(); +} + +void CFX_StockFontArray::SetFont(int index, CPDF_Font* font) { + if (index < 0 || index >= FX_ArraySize(m_StockFonts)) + return; + m_StockFonts[index].reset(font); +} + +CPDF_FontGlobals::CPDF_FontGlobals() { + FXSYS_memset(m_EmbeddedCharsets, 0, sizeof(m_EmbeddedCharsets)); + FXSYS_memset(m_EmbeddedToUnicodes, 0, sizeof(m_EmbeddedToUnicodes)); +} + +CPDF_FontGlobals::~CPDF_FontGlobals() {} + +CPDF_Font* CPDF_FontGlobals::Find(CPDF_Document* pDoc, int index) { + auto it = m_StockMap.find(pDoc); + if (it == m_StockMap.end()) + return nullptr; + return it->second ? it->second->GetFont(index) : nullptr; +} + +void CPDF_FontGlobals::Set(CPDF_Document* pDoc, int index, CPDF_Font* pFont) { + if (!pdfium::ContainsKey(m_StockMap, pDoc)) + m_StockMap[pDoc].reset(new CFX_StockFontArray); + m_StockMap[pDoc]->SetFont(index, pFont); +} + +void CPDF_FontGlobals::Clear(CPDF_Document* pDoc) { + m_StockMap.erase(pDoc); +} + +CPDF_Font::CPDF_Font() + : m_pFontFile(nullptr), + m_pFontDict(nullptr), + m_pToUnicodeMap(nullptr), + m_bToUnicodeLoaded(FALSE), + m_Flags(0), + m_StemV(0), + m_Ascent(0), + m_Descent(0), + m_ItalicAngle(0) {} + +CPDF_Font::~CPDF_Font() { + delete m_pToUnicodeMap; + m_pToUnicodeMap = NULL; + + if (m_pFontFile) { + m_pDocument->GetPageData()->ReleaseFontFileStreamAcc( + const_cast(m_pFontFile->GetStream()->AsStream())); + } +} + +bool CPDF_Font::IsType1Font() const { + return false; +} + +bool CPDF_Font::IsTrueTypeFont() const { + return false; +} + +bool CPDF_Font::IsType3Font() const { + return false; +} + +bool CPDF_Font::IsCIDFont() const { + return false; +} + +const CPDF_Type1Font* CPDF_Font::AsType1Font() const { + return nullptr; +} + +CPDF_Type1Font* CPDF_Font::AsType1Font() { + return nullptr; +} + +const CPDF_TrueTypeFont* CPDF_Font::AsTrueTypeFont() const { + return nullptr; +} + +CPDF_TrueTypeFont* CPDF_Font::AsTrueTypeFont() { + return nullptr; +} + +const CPDF_Type3Font* CPDF_Font::AsType3Font() const { + return nullptr; +} + +CPDF_Type3Font* CPDF_Font::AsType3Font() { + return nullptr; +} + +const CPDF_CIDFont* CPDF_Font::AsCIDFont() const { + return nullptr; +} + +CPDF_CIDFont* CPDF_Font::AsCIDFont() { + return nullptr; +} + +FX_BOOL CPDF_Font::IsUnicodeCompatible() const { + return FALSE; +} + +int CPDF_Font::CountChar(const FX_CHAR* pString, int size) const { + return size; +} + +int CPDF_Font::GetCharSize(FX_DWORD charcode) const { + return 1; +} + +int CPDF_Font::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) { + ASSERT(false); + return 0; +} + +int CPDF_Font::GlyphFromCharCodeExt(FX_DWORD charcode) { + return GlyphFromCharCode(charcode); +} + +FX_BOOL CPDF_Font::IsVertWriting() const { + FX_BOOL bVertWriting = FALSE; + const CPDF_CIDFont* pCIDFont = AsCIDFont(); + if (pCIDFont) { + bVertWriting = pCIDFont->IsVertWriting(); + } else { + bVertWriting = m_Font.IsVertical(); + } + return bVertWriting; +} + +int CPDF_Font::AppendChar(FX_CHAR* buf, FX_DWORD charcode) const { + *buf = (FX_CHAR)charcode; + return 1; +} + +void CPDF_Font::AppendChar(CFX_ByteString& str, FX_DWORD charcode) const { + char buf[4]; + int len = AppendChar(buf, charcode); + if (len == 1) { + str += buf[0]; + } else { + str += CFX_ByteString(buf, len); + } +} + +CFX_WideString CPDF_Font::UnicodeFromCharCode(FX_DWORD charcode) const { + if (!m_bToUnicodeLoaded) + ((CPDF_Font*)this)->LoadUnicodeMap(); + + if (m_pToUnicodeMap) + return m_pToUnicodeMap->Lookup(charcode); + return CFX_WideString(); +} + +FX_DWORD CPDF_Font::CharCodeFromUnicode(FX_WCHAR unicode) const { + if (!m_bToUnicodeLoaded) + ((CPDF_Font*)this)->LoadUnicodeMap(); + + if (m_pToUnicodeMap) + return m_pToUnicodeMap->ReverseLookup(unicode); + return 0; +} + +void CPDF_Font::LoadFontDescriptor(CPDF_Dictionary* pFontDesc) { + m_Flags = pFontDesc->GetIntegerBy("Flags", PDFFONT_NONSYMBOLIC); + int ItalicAngle = 0; + FX_BOOL bExistItalicAngle = FALSE; + if (pFontDesc->KeyExist("ItalicAngle")) { + ItalicAngle = pFontDesc->GetIntegerBy("ItalicAngle"); + bExistItalicAngle = TRUE; + } + if (ItalicAngle < 0) { + m_Flags |= PDFFONT_ITALIC; + m_ItalicAngle = ItalicAngle; + } + FX_BOOL bExistStemV = FALSE; + if (pFontDesc->KeyExist("StemV")) { + m_StemV = pFontDesc->GetIntegerBy("StemV"); + bExistStemV = TRUE; + } + FX_BOOL bExistAscent = FALSE; + if (pFontDesc->KeyExist("Ascent")) { + m_Ascent = pFontDesc->GetIntegerBy("Ascent"); + bExistAscent = TRUE; + } + FX_BOOL bExistDescent = FALSE; + if (pFontDesc->KeyExist("Descent")) { + m_Descent = pFontDesc->GetIntegerBy("Descent"); + bExistDescent = TRUE; + } + FX_BOOL bExistCapHeight = FALSE; + if (pFontDesc->KeyExist("CapHeight")) { + bExistCapHeight = TRUE; + } + if (bExistItalicAngle && bExistAscent && bExistCapHeight && bExistDescent && + bExistStemV) { + m_Flags |= PDFFONT_USEEXTERNATTR; + } + if (m_Descent > 10) { + m_Descent = -m_Descent; + } + CPDF_Array* pBBox = pFontDesc->GetArrayBy("FontBBox"); + if (pBBox) { + m_FontBBox.left = pBBox->GetIntegerAt(0); + m_FontBBox.bottom = pBBox->GetIntegerAt(1); + m_FontBBox.right = pBBox->GetIntegerAt(2); + m_FontBBox.top = pBBox->GetIntegerAt(3); + } + + CPDF_Stream* pFontFile = pFontDesc->GetStreamBy("FontFile"); + if (!pFontFile) + pFontFile = pFontDesc->GetStreamBy("FontFile2"); + if (!pFontFile) + pFontFile = pFontDesc->GetStreamBy("FontFile3"); + if (!pFontFile) + return; + + m_pFontFile = m_pDocument->LoadFontFile(pFontFile); + if (!m_pFontFile) + return; + + const uint8_t* pFontData = m_pFontFile->GetData(); + FX_DWORD dwFontSize = m_pFontFile->GetSize(); + if (!m_Font.LoadEmbedded(pFontData, dwFontSize)) { + m_pDocument->GetPageData()->ReleaseFontFileStreamAcc( + const_cast(m_pFontFile->GetStream()->AsStream())); + m_pFontFile = nullptr; + } +} + +short TT2PDF(int m, FXFT_Face face) { + int upm = FXFT_Get_Face_UnitsPerEM(face); + if (upm == 0) { + return (short)m; + } + return (m * 1000 + upm / 2) / upm; +} + +void CPDF_Font::CheckFontMetrics() { + if (m_FontBBox.top == 0 && m_FontBBox.bottom == 0 && m_FontBBox.left == 0 && + m_FontBBox.right == 0) { + FXFT_Face face = m_Font.GetFace(); + if (face) { + m_FontBBox.left = TT2PDF(FXFT_Get_Face_xMin(face), face); + m_FontBBox.bottom = TT2PDF(FXFT_Get_Face_yMin(face), face); + m_FontBBox.right = TT2PDF(FXFT_Get_Face_xMax(face), face); + m_FontBBox.top = TT2PDF(FXFT_Get_Face_yMax(face), face); + m_Ascent = TT2PDF(FXFT_Get_Face_Ascender(face), face); + m_Descent = TT2PDF(FXFT_Get_Face_Descender(face), face); + } else { + FX_BOOL bFirst = TRUE; + for (int i = 0; i < 256; i++) { + FX_RECT rect = GetCharBBox(i); + if (rect.left == rect.right) { + continue; + } + if (bFirst) { + m_FontBBox = rect; + bFirst = FALSE; + } else { + if (m_FontBBox.top < rect.top) { + m_FontBBox.top = rect.top; + } + if (m_FontBBox.right < rect.right) { + m_FontBBox.right = rect.right; + } + if (m_FontBBox.left > rect.left) { + m_FontBBox.left = rect.left; + } + if (m_FontBBox.bottom > rect.bottom) { + m_FontBBox.bottom = rect.bottom; + } + } + } + } + } + if (m_Ascent == 0 && m_Descent == 0) { + FX_RECT rect = GetCharBBox('A'); + m_Ascent = rect.bottom == rect.top ? m_FontBBox.top : rect.top; + rect = GetCharBBox('g'); + m_Descent = rect.bottom == rect.top ? m_FontBBox.bottom : rect.bottom; + } +} + +void CPDF_Font::LoadUnicodeMap() { + m_bToUnicodeLoaded = TRUE; + CPDF_Stream* pStream = m_pFontDict->GetStreamBy("ToUnicode"); + if (!pStream) { + return; + } + m_pToUnicodeMap = new CPDF_ToUnicodeMap; + m_pToUnicodeMap->Load(pStream); +} + +int CPDF_Font::GetStringWidth(const FX_CHAR* pString, int size) { + int offset = 0; + int width = 0; + while (offset < size) { + FX_DWORD charcode = GetNextChar(pString, size, offset); + width += GetCharWidthF(charcode); + } + return width; +} + +CPDF_Font* CPDF_Font::GetStockFont(CPDF_Document* pDoc, + const CFX_ByteStringC& name) { + CFX_ByteString fontname(name); + int font_id = PDF_GetStandardFontName(&fontname); + if (font_id < 0) { + return nullptr; + } + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + CPDF_Font* pFont = pFontGlobals->Find(pDoc, font_id); + if (pFont) { + return pFont; + } + CPDF_Dictionary* pDict = new CPDF_Dictionary; + pDict->SetAtName("Type", "Font"); + pDict->SetAtName("Subtype", "Type1"); + pDict->SetAtName("BaseFont", fontname); + pDict->SetAtName("Encoding", "WinAnsiEncoding"); + pFont = CPDF_Font::CreateFontF(NULL, pDict); + pFontGlobals->Set(pDoc, font_id, pFont); + return pFont; +} + +CPDF_Font* CPDF_Font::CreateFontF(CPDF_Document* pDoc, + CPDF_Dictionary* pFontDict) { + CFX_ByteString type = pFontDict->GetStringBy("Subtype"); + CPDF_Font* pFont; + if (type == "TrueType") { + { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + CFX_ByteString basefont = pFontDict->GetStringBy("BaseFont"); + CFX_ByteString tag = basefont.Left(4); + int i; + int count = sizeof(ChineseFontNames) / sizeof(ChineseFontNames[0]); + for (i = 0; i < count; ++i) { + if (tag == CFX_ByteString((const FX_CHAR*)ChineseFontNames[i])) { + break; + } + } + if (i < count) { + CPDF_Dictionary* pFontDesc = pFontDict->GetDictBy("FontDescriptor"); + if (!pFontDesc || !pFontDesc->KeyExist("FontFile2")) { + pFont = new CPDF_CIDFont; + pFont->m_pFontDict = pFontDict; + pFont->m_pDocument = pDoc; + pFont->m_BaseFont = pFontDict->GetStringBy("BaseFont"); + if (!pFont->Load()) { + delete pFont; + return NULL; + } + return pFont; + } + } +#endif + } + pFont = new CPDF_TrueTypeFont; + } else if (type == "Type3") { + pFont = new CPDF_Type3Font; + } else if (type == "Type0") { + pFont = new CPDF_CIDFont; + } else { + pFont = new CPDF_Type1Font; + } + pFont->m_pFontDict = pFontDict; + pFont->m_pDocument = pDoc; + pFont->m_BaseFont = pFontDict->GetStringBy("BaseFont"); + if (!pFont->Load()) { + delete pFont; + return NULL; + } + return pFont; +} + +CFX_WideString CPDF_ToUnicodeMap::Lookup(FX_DWORD charcode) { + auto it = m_Map.find(charcode); + if (it != m_Map.end()) { + FX_DWORD value = it->second; + FX_WCHAR unicode = (FX_WCHAR)(value & 0xffff); + if (unicode != 0xffff) { + return unicode; + } + const FX_WCHAR* buf = m_MultiCharBuf.GetBuffer(); + FX_DWORD buf_len = m_MultiCharBuf.GetLength(); + if (!buf || buf_len == 0) { + return CFX_WideString(); + } + FX_DWORD index = value >> 16; + if (index >= buf_len) { + return CFX_WideString(); + } + FX_DWORD len = buf[index]; + if (index + len < index || index + len >= buf_len) { + return CFX_WideString(); + } + return CFX_WideString(buf + index + 1, len); + } + if (m_pBaseMap) { + return m_pBaseMap->UnicodeFromCID((FX_WORD)charcode); + } + return CFX_WideString(); +} + +FX_DWORD CPDF_ToUnicodeMap::ReverseLookup(FX_WCHAR unicode) { + for (const auto& pair : m_Map) { + if (pair.second == unicode) + return pair.first; + } + return 0; +} + +// Static. +FX_DWORD CPDF_ToUnicodeMap::StringToCode(const CFX_ByteStringC& str) { + const FX_CHAR* buf = str.GetCStr(); + int len = str.GetLength(); + if (len == 0) + return 0; + + int result = 0; + if (buf[0] == '<') { + for (int i = 1; i < len && std::isxdigit(buf[i]); ++i) + result = result * 16 + FXSYS_toHexDigit(buf[i]); + return result; + } + + for (int i = 0; i < len && std::isdigit(buf[i]); ++i) + result = result * 10 + FXSYS_toDecimalDigit(buf[i]); + + return result; +} + +static CFX_WideString StringDataAdd(CFX_WideString str) { + CFX_WideString ret; + int len = str.GetLength(); + FX_WCHAR value = 1; + for (int i = len - 1; i >= 0; --i) { + FX_WCHAR ch = str[i] + value; + if (ch < str[i]) { + ret.Insert(0, 0); + } else { + ret.Insert(0, ch); + value = 0; + } + } + if (value) { + ret.Insert(0, value); + } + return ret; +} + +// Static. +CFX_WideString CPDF_ToUnicodeMap::StringToWideString( + const CFX_ByteStringC& str) { + const FX_CHAR* buf = str.GetCStr(); + int len = str.GetLength(); + if (len == 0) + return CFX_WideString(); + + CFX_WideString result; + if (buf[0] == '<') { + int byte_pos = 0; + FX_WCHAR ch = 0; + for (int i = 1; i < len && std::isxdigit(buf[i]); ++i) { + ch = ch * 16 + FXSYS_toHexDigit(buf[i]); + byte_pos++; + if (byte_pos == 4) { + result += ch; + byte_pos = 0; + ch = 0; + } + } + return result; + } + return result; +} + +void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { + CIDSet cid_set = CIDSET_UNKNOWN; + CPDF_StreamAcc stream; + stream.LoadAllData(pStream, FALSE); + CPDF_SimpleParser parser(stream.GetData(), stream.GetSize()); + while (1) { + CFX_ByteStringC word = parser.GetWord(); + if (word.IsEmpty()) { + break; + } + if (word == "beginbfchar") { + while (1) { + word = parser.GetWord(); + if (word.IsEmpty() || word == "endbfchar") { + break; + } + FX_DWORD srccode = StringToCode(word); + word = parser.GetWord(); + CFX_WideString destcode = StringToWideString(word); + int len = destcode.GetLength(); + if (len == 0) { + continue; + } + if (len == 1) { + m_Map[srccode] = destcode.GetAt(0); + } else { + m_Map[srccode] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; + m_MultiCharBuf.AppendChar(destcode.GetLength()); + m_MultiCharBuf << destcode; + } + } + } else if (word == "beginbfrange") { + while (1) { + CFX_ByteString low, high; + low = parser.GetWord(); + if (low.IsEmpty() || low == "endbfrange") { + break; + } + high = parser.GetWord(); + FX_DWORD lowcode = StringToCode(low); + FX_DWORD highcode = + (lowcode & 0xffffff00) | (StringToCode(high) & 0xff); + if (highcode == (FX_DWORD)-1) { + break; + } + CFX_ByteString start = parser.GetWord(); + if (start == "[") { + for (FX_DWORD code = lowcode; code <= highcode; code++) { + CFX_ByteString dest = parser.GetWord(); + CFX_WideString destcode = StringToWideString(dest); + int len = destcode.GetLength(); + if (len == 0) { + continue; + } + if (len == 1) { + m_Map[code] = destcode.GetAt(0); + } else { + m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; + m_MultiCharBuf.AppendChar(destcode.GetLength()); + m_MultiCharBuf << destcode; + } + } + parser.GetWord(); + } else { + CFX_WideString destcode = StringToWideString(start); + int len = destcode.GetLength(); + FX_DWORD value = 0; + if (len == 1) { + value = StringToCode(start); + for (FX_DWORD code = lowcode; code <= highcode; code++) { + m_Map[code] = value++; + } + } else { + for (FX_DWORD code = lowcode; code <= highcode; code++) { + CFX_WideString retcode; + if (code == lowcode) { + retcode = destcode; + } else { + retcode = StringDataAdd(destcode); + } + m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; + m_MultiCharBuf.AppendChar(retcode.GetLength()); + m_MultiCharBuf << retcode; + destcode = retcode; + } + } + } + } + } else if (word == "/Adobe-Korea1-UCS2") { + cid_set = CIDSET_KOREA1; + } else if (word == "/Adobe-Japan1-UCS2") { + cid_set = CIDSET_JAPAN1; + } else if (word == "/Adobe-CNS1-UCS2") { + cid_set = CIDSET_CNS1; + } else if (word == "/Adobe-GB1-UCS2") { + cid_set = CIDSET_GB1; + } + } + if (cid_set) { + m_pBaseMap = CPDF_ModuleMgr::Get() + ->GetPageModule() + ->GetFontGlobals() + ->m_CMapManager.GetCID2UnicodeMap(cid_set, FALSE); + } else { + m_pBaseMap = NULL; + } +} + +FX_DWORD CPDF_Font::GetNextChar(const FX_CHAR* pString, + int nStrLen, + int& offset) const { + if (offset < 0 || nStrLen < 1) { + return 0; + } + uint8_t ch = offset < nStrLen ? pString[offset++] : pString[nStrLen - 1]; + return static_cast(ch); +} + +void CPDF_Font::LoadPDFEncoding(CPDF_Object* pEncoding, + int& iBaseEncoding, + CFX_ByteString*& pCharNames, + FX_BOOL bEmbedded, + FX_BOOL bTrueType) { + if (!pEncoding) { + if (m_BaseFont == "Symbol") { + iBaseEncoding = bTrueType ? PDFFONT_ENCODING_MS_SYMBOL + : PDFFONT_ENCODING_ADOBE_SYMBOL; + } else if (!bEmbedded && iBaseEncoding == PDFFONT_ENCODING_BUILTIN) { + iBaseEncoding = PDFFONT_ENCODING_WINANSI; + } + return; + } + if (pEncoding->IsName()) { + if (iBaseEncoding == PDFFONT_ENCODING_ADOBE_SYMBOL || + iBaseEncoding == PDFFONT_ENCODING_ZAPFDINGBATS) { + return; + } + if ((m_Flags & PDFFONT_SYMBOLIC) && m_BaseFont == "Symbol") { + if (!bTrueType) { + iBaseEncoding = PDFFONT_ENCODING_ADOBE_SYMBOL; + } + return; + } + CFX_ByteString bsEncoding = pEncoding->GetString(); + if (bsEncoding.Compare("MacExpertEncoding") == 0) { + bsEncoding = "WinAnsiEncoding"; + } + GetPredefinedEncoding(iBaseEncoding, bsEncoding); + return; + } + + CPDF_Dictionary* pDict = pEncoding->AsDictionary(); + if (!pDict) + return; + + if (iBaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL && + iBaseEncoding != PDFFONT_ENCODING_ZAPFDINGBATS) { + CFX_ByteString bsEncoding = pDict->GetStringBy("BaseEncoding"); + if (bsEncoding.Compare("MacExpertEncoding") == 0 && bTrueType) { + bsEncoding = "WinAnsiEncoding"; + } + GetPredefinedEncoding(iBaseEncoding, bsEncoding); + } + if ((!bEmbedded || bTrueType) && iBaseEncoding == PDFFONT_ENCODING_BUILTIN) { + iBaseEncoding = PDFFONT_ENCODING_STANDARD; + } + CPDF_Array* pDiffs = pDict->GetArrayBy("Differences"); + if (!pDiffs) { + return; + } + pCharNames = new CFX_ByteString[256]; + FX_DWORD cur_code = 0; + for (FX_DWORD i = 0; i < pDiffs->GetCount(); i++) { + CPDF_Object* pElement = pDiffs->GetElementValue(i); + if (!pElement) + continue; + + if (CPDF_Name* pName = pElement->AsName()) { + if (cur_code < 256) + pCharNames[cur_code] = pName->GetString(); + cur_code++; + } else { + cur_code = pElement->GetInteger(); + } + } +} + +FX_BOOL CPDF_Font::IsStandardFont() const { + if (!IsType1Font()) + return FALSE; + if (m_pFontFile) + return FALSE; + if (AsType1Font()->GetBase14Font() < 0) + return FALSE; + return TRUE; +} + +CPDF_SimpleFont::CPDF_SimpleFont() + : m_pCharNames(nullptr), m_BaseEncoding(PDFFONT_ENCODING_BUILTIN) { + FXSYS_memset(m_CharWidth, 0xff, sizeof m_CharWidth); + FXSYS_memset(m_GlyphIndex, 0xff, sizeof m_GlyphIndex); + FXSYS_memset(m_ExtGID, 0xff, sizeof m_ExtGID); +} + +CPDF_SimpleFont::~CPDF_SimpleFont() { + delete[] m_pCharNames; +} + +int CPDF_SimpleFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) { + if (pVertGlyph) { + *pVertGlyph = FALSE; + } + if (charcode > 0xff) { + return -1; + } + int index = m_GlyphIndex[(uint8_t)charcode]; + if (index == 0xffff) { + return -1; + } + return index; +} + +void CPDF_SimpleFont::LoadCharMetrics(int charcode) { + if (!m_Font.GetFace()) + return; + + if (charcode < 0 || charcode > 0xff) { + return; + } + int glyph_index = m_GlyphIndex[charcode]; + if (glyph_index == 0xffff) { + if (!m_pFontFile && charcode != 32) { + LoadCharMetrics(32); + m_CharBBox[charcode] = m_CharBBox[32]; + if (m_bUseFontWidth) { + m_CharWidth[charcode] = m_CharWidth[32]; + } + } + return; + } + FXFT_Face face = m_Font.GetFace(); + int err = FXFT_Load_Glyph( + face, glyph_index, + FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + if (err) { + return; + } + m_CharBBox[charcode] = FX_SMALL_RECT( + TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face), + TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face), + TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) + FXFT_Get_Glyph_Width(face), + face), + TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) - FXFT_Get_Glyph_Height(face), + face)); + + if (m_bUseFontWidth) { + int TT_Width = TT2PDF(FXFT_Get_Glyph_HoriAdvance(face), face); + if (m_CharWidth[charcode] == 0xffff) { + m_CharWidth[charcode] = TT_Width; + } else if (TT_Width && !IsEmbedded()) { + m_CharBBox[charcode].right = + m_CharBBox[charcode].right * m_CharWidth[charcode] / TT_Width; + m_CharBBox[charcode].left = + m_CharBBox[charcode].left * m_CharWidth[charcode] / TT_Width; + } + } +} + +int CPDF_SimpleFont::GetCharWidthF(FX_DWORD charcode, int level) { + if (charcode > 0xff) { + charcode = 0; + } + if (m_CharWidth[charcode] == 0xffff) { + LoadCharMetrics(charcode); + if (m_CharWidth[charcode] == 0xffff) { + m_CharWidth[charcode] = 0; + } + } + return (int16_t)m_CharWidth[charcode]; +} + +FX_RECT CPDF_SimpleFont::GetCharBBox(FX_DWORD charcode, int level) { + if (charcode > 0xff) + charcode = 0; + + if (m_CharBBox[charcode].left == FX_SMALL_RECT::kInvalid) + LoadCharMetrics(charcode); + + return FX_RECT(m_CharBBox[charcode]); +} + +const FX_CHAR* GetAdobeCharName(int iBaseEncoding, + const CFX_ByteString* pCharNames, + int charcode) { + ASSERT(charcode >= 0 && charcode < 256); + if (charcode < 0 || charcode >= 256) { + return NULL; + } + const FX_CHAR* name = NULL; + if (pCharNames) { + name = pCharNames[charcode]; + } + if ((!name || name[0] == 0) && iBaseEncoding) { + name = PDF_CharNameFromPredefinedCharSet(iBaseEncoding, charcode); + } + return name && name[0] ? name : nullptr; +} + +FX_BOOL CPDF_SimpleFont::LoadCommon() { + CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor"); + if (pFontDesc) { + LoadFontDescriptor(pFontDesc); + } + CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths"); + int width_start = 0, width_end = -1; + m_bUseFontWidth = TRUE; + if (pWidthArray) { + m_bUseFontWidth = FALSE; + if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) { + int MissingWidth = pFontDesc->GetIntegerBy("MissingWidth"); + for (int i = 0; i < 256; i++) { + m_CharWidth[i] = MissingWidth; + } + } + width_start = m_pFontDict->GetIntegerBy("FirstChar", 0); + width_end = m_pFontDict->GetIntegerBy("LastChar", 0); + if (width_start >= 0 && width_start <= 255) { + if (width_end <= 0 || + width_end >= width_start + (int)pWidthArray->GetCount()) { + width_end = width_start + pWidthArray->GetCount() - 1; + } + if (width_end > 255) { + width_end = 255; + } + for (int i = width_start; i <= width_end; i++) { + m_CharWidth[i] = pWidthArray->GetIntegerAt(i - width_start); + } + } + } + if (m_pFontFile) { + if (m_BaseFont.GetLength() > 8 && m_BaseFont[7] == '+') { + m_BaseFont = m_BaseFont.Mid(8); + } + } else { + LoadSubstFont(); + } + if (!(m_Flags & PDFFONT_SYMBOLIC)) { + m_BaseEncoding = PDFFONT_ENCODING_STANDARD; + } + CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); + LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, m_pFontFile != NULL, + m_Font.IsTTFont()); + LoadGlyphMap(); + delete[] m_pCharNames; + m_pCharNames = NULL; + if (!m_Font.GetFace()) + return TRUE; + + if (m_Flags & PDFFONT_ALLCAP) { + unsigned char lowercases[] = {'a', 'z', 0xe0, 0xf6, 0xf8, 0xfd}; + for (size_t range = 0; range < sizeof lowercases / 2; range++) { + for (int i = lowercases[range * 2]; i <= lowercases[range * 2 + 1]; i++) { + if (m_GlyphIndex[i] != 0xffff && m_pFontFile) { + continue; + } + m_GlyphIndex[i] = m_GlyphIndex[i - 32]; + if (m_CharWidth[i - 32]) { + m_CharWidth[i] = m_CharWidth[i - 32]; + m_CharBBox[i] = m_CharBBox[i - 32]; + } + } + } + } + CheckFontMetrics(); + return TRUE; +} + +void CPDF_SimpleFont::LoadSubstFont() { + if (!m_bUseFontWidth && !(m_Flags & PDFFONT_FIXEDPITCH)) { + int width = 0, i; + for (i = 0; i < 256; i++) { + if (m_CharWidth[i] == 0 || m_CharWidth[i] == 0xffff) { + continue; + } + if (width == 0) { + width = m_CharWidth[i]; + } else if (width != m_CharWidth[i]) { + break; + } + } + if (i == 256 && width) { + m_Flags |= PDFFONT_FIXEDPITCH; + } + } + int weight = m_StemV < 140 ? m_StemV * 5 : (m_StemV * 4 + 140); + m_Font.LoadSubst(m_BaseFont, IsTrueTypeFont(), m_Flags, weight, m_ItalicAngle, + 0); + if (m_Font.GetSubstFont()->m_SubstFlags & FXFONT_SUBST_NONSYMBOL) { + } +} + +FX_BOOL CPDF_SimpleFont::IsUnicodeCompatible() const { + return m_BaseEncoding != PDFFONT_ENCODING_BUILTIN && + m_BaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL && + m_BaseEncoding != PDFFONT_ENCODING_ZAPFDINGBATS; +} + +CFX_WideString CPDF_SimpleFont::UnicodeFromCharCode(FX_DWORD charcode) const { + CFX_WideString unicode = CPDF_Font::UnicodeFromCharCode(charcode); + if (!unicode.IsEmpty()) + return unicode; + FX_WCHAR ret = m_Encoding.UnicodeFromCharCode((uint8_t)charcode); + if (ret == 0) + return CFX_WideString(); + return ret; +} + +FX_DWORD CPDF_SimpleFont::CharCodeFromUnicode(FX_WCHAR unicode) const { + FX_DWORD ret = CPDF_Font::CharCodeFromUnicode(unicode); + if (ret) + return ret; + return m_Encoding.CharCodeFromUnicode(unicode); +} + +CPDF_Type1Font::CPDF_Type1Font() : m_Base14Font(-1) {} + +bool CPDF_Type1Font::IsType1Font() const { + return true; +} + +const CPDF_Type1Font* CPDF_Type1Font::AsType1Font() const { + return this; +} + +CPDF_Type1Font* CPDF_Type1Font::AsType1Font() { + return this; +} + +FX_BOOL CPDF_Type1Font::Load() { + m_Base14Font = PDF_GetStandardFontName(&m_BaseFont); + if (m_Base14Font >= 0) { + CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor"); + if (pFontDesc && pFontDesc->KeyExist("Flags")) + m_Flags = pFontDesc->GetIntegerBy("Flags"); + else + m_Flags = m_Base14Font >= 12 ? PDFFONT_SYMBOLIC : PDFFONT_NONSYMBOLIC; + + if (m_Base14Font < 4) { + for (int i = 0; i < 256; i++) + m_CharWidth[i] = 600; + } + if (m_Base14Font == 12) + m_BaseEncoding = PDFFONT_ENCODING_ADOBE_SYMBOL; + else if (m_Base14Font == 13) + m_BaseEncoding = PDFFONT_ENCODING_ZAPFDINGBATS; + else if (m_Flags & PDFFONT_NONSYMBOLIC) + m_BaseEncoding = PDFFONT_ENCODING_STANDARD; + } + return LoadCommon(); +} + +int CPDF_Type1Font::GlyphFromCharCodeExt(FX_DWORD charcode) { + if (charcode > 0xff) { + return -1; + } + int index = m_ExtGID[(uint8_t)charcode]; + if (index == 0xffff) { + return -1; + } + return index; +} + +void CPDF_Type1Font::LoadGlyphMap() { + if (!m_Font.GetFace()) + return; + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + FX_BOOL bCoreText = TRUE; + CQuartz2D& quartz2d = + ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; + if (!m_Font.GetPlatformFont()) { + if (m_Font.GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) { + bCoreText = FALSE; + } + m_Font.SetPlatformFont( + quartz2d.CreateFont(m_Font.GetFontData(), m_Font.GetSize())); + if (!m_Font.GetPlatformFont()) { + bCoreText = FALSE; + } + } +#endif + if (!IsEmbedded() && (m_Base14Font < 12) && m_Font.IsTTFont()) { + if (FT_UseTTCharmap(m_Font.GetFace(), 3, 0)) { + FX_BOOL bGotOne = FALSE; + for (int charcode = 0; charcode < 256; charcode++) { + const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2}; + for (int j = 0; j < 4; j++) { + FX_WORD unicode = prefix[j] * 256 + charcode; + m_GlyphIndex[charcode] = + FXFT_Get_Char_Index(m_Font.GetFace(), unicode); +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + FX_CHAR name_glyph[256]; + FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], + name_glyph, 256); + name_glyph[255] = 0; + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, + kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } +#endif + if (m_GlyphIndex[charcode]) { + bGotOne = TRUE; + break; + } + } + } + if (bGotOne) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (!bCoreText) { + FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); + } +#endif + return; + } + } + FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE); + if (m_BaseEncoding == 0) { + m_BaseEncoding = PDFFONT_ENCODING_STANDARD; + } + for (int charcode = 0; charcode < 256; charcode++) { + const FX_CHAR* name = + GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); + if (!name) { + continue; + } + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_GlyphIndex[charcode] = FXFT_Get_Char_Index( + m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + FX_CHAR name_glyph[256]; + FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], name_glyph, + 256); + name_glyph[255] = 0; + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, + kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } +#endif + if (m_GlyphIndex[charcode] == 0 && FXSYS_strcmp(name, ".notdef") == 0) { + m_Encoding.m_Unicodes[charcode] = 0x20; + m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 0x20); +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + FX_CHAR name_glyph[256]; + FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], + name_glyph, 256); + name_glyph[255] = 0; + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, + kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } +#endif + } + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (!bCoreText) { + FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); + } +#endif + return; + } + FT_UseType1Charmap(m_Font.GetFace()); +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (bCoreText) { + if (m_Flags & PDFFONT_SYMBOLIC) { + for (int charcode = 0; charcode < 256; charcode++) { + const FX_CHAR* name = + GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); + if (name) { + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_GlyphIndex[charcode] = + FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name, kCFStringEncodingASCII, + kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } + } else { + m_GlyphIndex[charcode] = + FXFT_Get_Char_Index(m_Font.GetFace(), charcode); + FX_WCHAR unicode = 0; + if (m_GlyphIndex[charcode]) { + unicode = + FT_UnicodeFromCharCode(PDFFONT_ENCODING_STANDARD, charcode); + } + FX_CHAR name_glyph[256]; + FXSYS_memset(name_glyph, 0, sizeof(name_glyph)); + FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], + name_glyph, 256); + name_glyph[255] = 0; + if (unicode == 0 && name_glyph[0] != 0) { + unicode = PDF_UnicodeFromAdobeName(name_glyph); + } + m_Encoding.m_Unicodes[charcode] = unicode; + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, + kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } + } + } + return; + } + FX_BOOL bUnicode = FALSE; + if (0 == FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE)) { + bUnicode = TRUE; + } + for (int charcode = 0; charcode < 256; charcode++) { + const FX_CHAR* name = + GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); + if (!name) { + continue; + } + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + const FX_CHAR* pStrUnicode = GlyphNameRemap(name); + if (pStrUnicode && + 0 == FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name)) { + name = pStrUnicode; + } + m_GlyphIndex[charcode] = + FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name, kCFStringEncodingASCII, kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } + if (m_GlyphIndex[charcode] == 0) { + if (FXSYS_strcmp(name, ".notdef") != 0 && + FXSYS_strcmp(name, "space") != 0) { + m_GlyphIndex[charcode] = FXFT_Get_Char_Index( + m_Font.GetFace(), + bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode); + FX_CHAR name_glyph[256]; + FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], + name_glyph, 256); + name_glyph[255] = 0; + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, + kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } + } else { + m_Encoding.m_Unicodes[charcode] = 0x20; + m_GlyphIndex[charcode] = + bUnicode ? FXFT_Get_Char_Index(m_Font.GetFace(), 0x20) : 0xffff; + FX_CHAR name_glyph[256]; + FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], + name_glyph, 256); + name_glyph[255] = 0; + CFStringRef name_ct = CFStringCreateWithCStringNoCopy( + kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, + kCFAllocatorNull); + m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( + (CGFontRef)m_Font.GetPlatformFont(), name_ct); + if (name_ct) { + CFRelease(name_ct); + } + } + } + } + return; + } +#endif + if (m_Flags & PDFFONT_SYMBOLIC) { + for (int charcode = 0; charcode < 256; charcode++) { + const FX_CHAR* name = + GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); + if (name) { + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_GlyphIndex[charcode] = + FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); + } else { + m_GlyphIndex[charcode] = + FXFT_Get_Char_Index(m_Font.GetFace(), charcode); + if (m_GlyphIndex[charcode]) { + FX_WCHAR unicode = + FT_UnicodeFromCharCode(PDFFONT_ENCODING_STANDARD, charcode); + if (unicode == 0) { + FX_CHAR name_glyph[256]; + FXSYS_memset(name_glyph, 0, sizeof(name_glyph)); + FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], + name_glyph, 256); + name_glyph[255] = 0; + if (name_glyph[0] != 0) { + unicode = PDF_UnicodeFromAdobeName(name_glyph); + } + } + m_Encoding.m_Unicodes[charcode] = unicode; + } + } + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (!bCoreText) { + FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); + } +#endif + return; + } + FX_BOOL bUnicode = FALSE; + if (0 == FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE)) { + bUnicode = TRUE; + } + for (int charcode = 0; charcode < 256; charcode++) { + const FX_CHAR* name = + GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); + if (!name) { + continue; + } + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); + if (m_GlyphIndex[charcode] == 0) { + if (FXSYS_strcmp(name, ".notdef") != 0 && + FXSYS_strcmp(name, "space") != 0) { + m_GlyphIndex[charcode] = FXFT_Get_Char_Index( + m_Font.GetFace(), + bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode); + } else { + m_Encoding.m_Unicodes[charcode] = 0x20; + m_GlyphIndex[charcode] = 0xffff; + } + } + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (!bCoreText) { + FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); + } +#endif +} + +CPDF_FontEncoding::CPDF_FontEncoding() { + FXSYS_memset(m_Unicodes, 0, sizeof(m_Unicodes)); +} + +int CPDF_FontEncoding::CharCodeFromUnicode(FX_WCHAR unicode) const { + for (int i = 0; i < 256; i++) + if (m_Unicodes[i] == unicode) { + return i; + } + return -1; +} + +CPDF_FontEncoding::CPDF_FontEncoding(int PredefinedEncoding) { + const FX_WORD* pSrc = PDF_UnicodesForPredefinedCharSet(PredefinedEncoding); + if (!pSrc) { + FXSYS_memset(m_Unicodes, 0, sizeof(m_Unicodes)); + } else { + for (int i = 0; i < 256; i++) + m_Unicodes[i] = pSrc[i]; + } +} + +FX_BOOL CPDF_FontEncoding::IsIdentical(CPDF_FontEncoding* pAnother) const { + return FXSYS_memcmp(m_Unicodes, pAnother->m_Unicodes, sizeof(m_Unicodes)) == + 0; +} + +CPDF_Object* CPDF_FontEncoding::Realize() { + int predefined = 0; + for (int cs = PDFFONT_ENCODING_WINANSI; cs < PDFFONT_ENCODING_ZAPFDINGBATS; + cs++) { + const FX_WORD* pSrc = PDF_UnicodesForPredefinedCharSet(cs); + FX_BOOL match = TRUE; + for (int i = 0; i < 256; ++i) { + if (m_Unicodes[i] != pSrc[i]) { + match = FALSE; + break; + } + } + if (match) { + predefined = cs; + break; + } + } + if (predefined) { + if (predefined == PDFFONT_ENCODING_WINANSI) { + return new CPDF_Name("WinAnsiEncoding"); + } + if (predefined == PDFFONT_ENCODING_MACROMAN) { + return new CPDF_Name("MacRomanEncoding"); + } + if (predefined == PDFFONT_ENCODING_MACEXPERT) { + return new CPDF_Name("MacExpertEncoding"); + } + return NULL; + } + const FX_WORD* pStandard = + PDF_UnicodesForPredefinedCharSet(PDFFONT_ENCODING_WINANSI); + CPDF_Array* pDiff = new CPDF_Array; + for (int i = 0; i < 256; i++) { + if (pStandard[i] == m_Unicodes[i]) { + continue; + } + pDiff->Add(new CPDF_Number(i)); + pDiff->Add(new CPDF_Name(PDF_AdobeNameFromUnicode(m_Unicodes[i]))); + } + + CPDF_Dictionary* pDict = new CPDF_Dictionary; + pDict->SetAtName("BaseEncoding", "WinAnsiEncoding"); + pDict->SetAt("Differences", pDiff); + return pDict; +} + +CPDF_TrueTypeFont::CPDF_TrueTypeFont() {} + +bool CPDF_TrueTypeFont::IsTrueTypeFont() const { + return true; +} + +const CPDF_TrueTypeFont* CPDF_TrueTypeFont::AsTrueTypeFont() const { + return this; +} + +CPDF_TrueTypeFont* CPDF_TrueTypeFont::AsTrueTypeFont() { + return this; +} + +FX_BOOL CPDF_TrueTypeFont::Load() { + return LoadCommon(); +} + +void CPDF_TrueTypeFont::LoadGlyphMap() { + if (!m_Font.GetFace()) + return; + + int baseEncoding = m_BaseEncoding; + if (m_pFontFile && m_Font.GetFace()->num_charmaps > 0 && + (baseEncoding == PDFFONT_ENCODING_MACROMAN || + baseEncoding == PDFFONT_ENCODING_WINANSI) && + (m_Flags & PDFFONT_SYMBOLIC)) { + FX_BOOL bSupportWin = FALSE; + FX_BOOL bSupportMac = FALSE; + for (int i = 0; i < FXFT_Get_Face_CharmapCount(m_Font.GetFace()); i++) { + int platform_id = FXFT_Get_Charmap_PlatformID( + FXFT_Get_Face_Charmaps(m_Font.GetFace())[i]); + if (platform_id == 0 || platform_id == 3) { + bSupportWin = TRUE; + } else if (platform_id == 0 || platform_id == 1) { + bSupportMac = TRUE; + } + } + if (baseEncoding == PDFFONT_ENCODING_WINANSI && !bSupportWin) { + baseEncoding = + bSupportMac ? PDFFONT_ENCODING_MACROMAN : PDFFONT_ENCODING_BUILTIN; + } else if (baseEncoding == PDFFONT_ENCODING_MACROMAN && !bSupportMac) { + baseEncoding = + bSupportWin ? PDFFONT_ENCODING_WINANSI : PDFFONT_ENCODING_BUILTIN; + } + } + if (((baseEncoding == PDFFONT_ENCODING_MACROMAN || + baseEncoding == PDFFONT_ENCODING_WINANSI) && + !m_pCharNames) || + (m_Flags & PDFFONT_NONSYMBOLIC)) { + if (!FXFT_Has_Glyph_Names(m_Font.GetFace()) && + (!m_Font.GetFace()->num_charmaps || !m_Font.GetFace()->charmaps)) { + int nStartChar = m_pFontDict->GetIntegerBy("FirstChar"); + if (nStartChar < 0 || nStartChar > 255) + return; + + int charcode = 0; + for (; charcode < nStartChar; charcode++) { + m_GlyphIndex[charcode] = 0; + } + FX_WORD nGlyph = charcode - nStartChar + 3; + for (; charcode < 256; charcode++, nGlyph++) { + m_GlyphIndex[charcode] = nGlyph; + } + return; + } + FX_BOOL bMSUnicode = FT_UseTTCharmap(m_Font.GetFace(), 3, 1); + FX_BOOL bMacRoman = FALSE, bMSSymbol = FALSE; + if (!bMSUnicode) { + if (m_Flags & PDFFONT_NONSYMBOLIC) { + bMacRoman = FT_UseTTCharmap(m_Font.GetFace(), 1, 0); + bMSSymbol = !bMacRoman && FT_UseTTCharmap(m_Font.GetFace(), 3, 0); + } else { + bMSSymbol = FT_UseTTCharmap(m_Font.GetFace(), 3, 0); + bMacRoman = !bMSSymbol && FT_UseTTCharmap(m_Font.GetFace(), 1, 0); + } + } + FX_BOOL bToUnicode = m_pFontDict->KeyExist("ToUnicode"); + for (int charcode = 0; charcode < 256; charcode++) { + const FX_CHAR* name = + GetAdobeCharName(baseEncoding, m_pCharNames, charcode); + if (!name) { + m_GlyphIndex[charcode] = + m_pFontFile ? FXFT_Get_Char_Index(m_Font.GetFace(), charcode) : -1; + continue; + } + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + if (bMSSymbol) { + const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2}; + for (int j = 0; j < 4; j++) { + FX_WORD unicode = prefix[j] * 256 + charcode; + m_GlyphIndex[charcode] = + FXFT_Get_Char_Index(m_Font.GetFace(), unicode); + if (m_GlyphIndex[charcode]) { + break; + } + } + } else if (m_Encoding.m_Unicodes[charcode]) { + if (bMSUnicode) { + m_GlyphIndex[charcode] = FXFT_Get_Char_Index( + m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); + } else if (bMacRoman) { + FX_DWORD maccode = FT_CharCodeFromUnicode( + FXFT_ENCODING_APPLE_ROMAN, m_Encoding.m_Unicodes[charcode]); + if (!maccode) { + m_GlyphIndex[charcode] = + FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); + } else { + m_GlyphIndex[charcode] = + FXFT_Get_Char_Index(m_Font.GetFace(), maccode); + } + } + } + if ((m_GlyphIndex[charcode] == 0 || m_GlyphIndex[charcode] == 0xffff) && + name) { + if (name[0] == '.' && FXSYS_strcmp(name, ".notdef") == 0) { + m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 32); + } else { + m_GlyphIndex[charcode] = + FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); + if (m_GlyphIndex[charcode] == 0) { + if (bToUnicode) { + CFX_WideString wsUnicode = UnicodeFromCharCode(charcode); + if (!wsUnicode.IsEmpty()) { + m_GlyphIndex[charcode] = + FXFT_Get_Char_Index(m_Font.GetFace(), wsUnicode[0]); + m_Encoding.m_Unicodes[charcode] = wsUnicode[0]; + } + } + if (m_GlyphIndex[charcode] == 0) { + m_GlyphIndex[charcode] = + FXFT_Get_Char_Index(m_Font.GetFace(), charcode); + } + } + } + } + } + return; + } + if (FT_UseTTCharmap(m_Font.GetFace(), 3, 0)) { + const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2}; + FX_BOOL bGotOne = FALSE; + for (int charcode = 0; charcode < 256; charcode++) { + for (int j = 0; j < 4; j++) { + FX_WORD unicode = prefix[j] * 256 + charcode; + m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), unicode); + if (m_GlyphIndex[charcode]) { + bGotOne = TRUE; + break; + } + } + } + if (bGotOne) { + if (baseEncoding != PDFFONT_ENCODING_BUILTIN) { + for (int charcode = 0; charcode < 256; charcode++) { + const FX_CHAR* name = + GetAdobeCharName(baseEncoding, m_pCharNames, charcode); + if (!name) { + continue; + } + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + } + } else if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) { + for (int charcode = 0; charcode < 256; charcode++) { + m_Encoding.m_Unicodes[charcode] = + FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode); + } + } + return; + } + } + if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) { + FX_BOOL bGotOne = FALSE; + for (int charcode = 0; charcode < 256; charcode++) { + m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), charcode); + m_Encoding.m_Unicodes[charcode] = + FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode); + if (m_GlyphIndex[charcode]) { + bGotOne = TRUE; + } + } + if (m_pFontFile || bGotOne) { + return; + } + } + if (FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE) == 0) { + FX_BOOL bGotOne = FALSE; + const FX_WORD* pUnicodes = PDF_UnicodesForPredefinedCharSet(baseEncoding); + for (int charcode = 0; charcode < 256; charcode++) { + if (m_pFontFile) { + m_Encoding.m_Unicodes[charcode] = charcode; + } else { + const FX_CHAR* name = GetAdobeCharName(0, m_pCharNames, charcode); + if (name) { + m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); + } else if (pUnicodes) { + m_Encoding.m_Unicodes[charcode] = pUnicodes[charcode]; + } + } + m_GlyphIndex[charcode] = FXFT_Get_Char_Index( + m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); + if (m_GlyphIndex[charcode]) { + bGotOne = TRUE; + } + } + if (bGotOne) { + return; + } + } + for (int charcode = 0; charcode < 256; charcode++) { + m_GlyphIndex[charcode] = charcode; + } +} + +CPDF_Type3Font::CPDF_Type3Font() + : m_pCharProcs(nullptr), + m_pPageResources(nullptr), + m_pFontResources(nullptr) { + FXSYS_memset(m_CharWidthL, 0, sizeof(m_CharWidthL)); +} + +CPDF_Type3Font::~CPDF_Type3Font() { + for (auto it : m_CacheMap) + delete it.second; +} + +bool CPDF_Type3Font::IsType3Font() const { + return true; +} + +const CPDF_Type3Font* CPDF_Type3Font::AsType3Font() const { + return this; +} + +CPDF_Type3Font* CPDF_Type3Font::AsType3Font() { + return this; +} + +FX_BOOL CPDF_Type3Font::Load() { + m_pFontResources = m_pFontDict->GetDictBy("Resources"); + CPDF_Array* pMatrix = m_pFontDict->GetArrayBy("FontMatrix"); + FX_FLOAT xscale = 1.0f, yscale = 1.0f; + if (pMatrix) { + m_FontMatrix = pMatrix->GetMatrix(); + xscale = m_FontMatrix.a; + yscale = m_FontMatrix.d; + } + CPDF_Array* pBBox = m_pFontDict->GetArrayBy("FontBBox"); + if (pBBox) { + m_FontBBox.left = (int32_t)(pBBox->GetNumberAt(0) * xscale * 1000); + m_FontBBox.bottom = (int32_t)(pBBox->GetNumberAt(1) * yscale * 1000); + m_FontBBox.right = (int32_t)(pBBox->GetNumberAt(2) * xscale * 1000); + m_FontBBox.top = (int32_t)(pBBox->GetNumberAt(3) * yscale * 1000); + } + int StartChar = m_pFontDict->GetIntegerBy("FirstChar"); + CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths"); + if (pWidthArray && (StartChar >= 0 && StartChar < 256)) { + FX_DWORD count = pWidthArray->GetCount(); + if (count > 256) { + count = 256; + } + if (StartChar + count > 256) { + count = 256 - StartChar; + } + for (FX_DWORD i = 0; i < count; i++) { + m_CharWidthL[StartChar + i] = + FXSYS_round(pWidthArray->GetNumberAt(i) * xscale * 1000); + } + } + m_pCharProcs = m_pFontDict->GetDictBy("CharProcs"); + CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); + if (pEncoding) { + LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, FALSE, FALSE); + if (m_pCharNames) { + for (int i = 0; i < 256; i++) { + m_Encoding.m_Unicodes[i] = PDF_UnicodeFromAdobeName(m_pCharNames[i]); + if (m_Encoding.m_Unicodes[i] == 0) { + m_Encoding.m_Unicodes[i] = i; + } + } + } + } + return TRUE; +} + +void CPDF_Type3Font::CheckType3FontMetrics() { + CheckFontMetrics(); +} + +CPDF_Type3Char* CPDF_Type3Font::LoadChar(FX_DWORD charcode, int level) { + if (level >= _FPDF_MAX_TYPE3_FORM_LEVEL_) + return nullptr; + + auto it = m_CacheMap.find(charcode); + if (it != m_CacheMap.end()) + return it->second; + + const FX_CHAR* name = + GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); + if (!name) + return nullptr; + + CPDF_Stream* pStream = + ToStream(m_pCharProcs ? m_pCharProcs->GetElementValue(name) : nullptr); + if (!pStream) + return nullptr; + + std::unique_ptr pNewChar(new CPDF_Type3Char(new CPDF_Form( + m_pDocument, m_pFontResources ? m_pFontResources : m_pPageResources, + pStream, nullptr))); + + // This can trigger recursion into this method. The content of |m_CacheMap| + // can change as a result. Thus after it returns, check the cache again for + // a cache hit. + pNewChar->m_pForm->ParseContent(nullptr, nullptr, pNewChar.get(), nullptr, + level + 1); + it = m_CacheMap.find(charcode); + if (it != m_CacheMap.end()) + return it->second; + + FX_FLOAT scale = m_FontMatrix.GetXUnit(); + pNewChar->m_Width = (int32_t)(pNewChar->m_Width * scale + 0.5f); + FX_RECT& rcBBox = pNewChar->m_BBox; + CFX_FloatRect char_rect( + (FX_FLOAT)rcBBox.left / 1000.0f, (FX_FLOAT)rcBBox.bottom / 1000.0f, + (FX_FLOAT)rcBBox.right / 1000.0f, (FX_FLOAT)rcBBox.top / 1000.0f); + if (rcBBox.right <= rcBBox.left || rcBBox.bottom >= rcBBox.top) + char_rect = pNewChar->m_pForm->CalcBoundingBox(); + + char_rect.Transform(&m_FontMatrix); + rcBBox.left = FXSYS_round(char_rect.left * 1000); + rcBBox.right = FXSYS_round(char_rect.right * 1000); + rcBBox.top = FXSYS_round(char_rect.top * 1000); + rcBBox.bottom = FXSYS_round(char_rect.bottom * 1000); + + ASSERT(!pdfium::ContainsKey(m_CacheMap, charcode)); + CPDF_Type3Char* pCachedChar = pNewChar.release(); + m_CacheMap[charcode] = pCachedChar; + if (pCachedChar->m_pForm->GetPageObjectList()->empty()) { + delete pCachedChar->m_pForm; + pCachedChar->m_pForm = nullptr; + } + return pCachedChar; +} + +int CPDF_Type3Font::GetCharWidthF(FX_DWORD charcode, int level) { + if (charcode >= FX_ArraySize(m_CharWidthL)) + charcode = 0; + + if (m_CharWidthL[charcode]) + return m_CharWidthL[charcode]; + + const CPDF_Type3Char* pChar = LoadChar(charcode, level); + return pChar ? pChar->m_Width : 0; +} + +FX_RECT CPDF_Type3Font::GetCharBBox(FX_DWORD charcode, int level) { + const CPDF_Type3Char* pChar = LoadChar(charcode, level); + return pChar ? pChar->m_BBox : FX_RECT(); +} + +CPDF_Type3Char::CPDF_Type3Char(CPDF_Form* pForm) + : m_pForm(pForm), m_pBitmap(nullptr), m_bColored(FALSE) {} + +CPDF_Type3Char::~CPDF_Type3Char() { + delete m_pForm; + delete m_pBitmap; +} diff --git a/core/fpdfapi/fpdf_font/fpdf_font_charset.cpp b/core/fpdfapi/fpdf_font/fpdf_font_charset.cpp new file mode 100644 index 0000000000..a4167914d1 --- /dev/null +++ b/core/fpdfapi/fpdf_font/fpdf_font_charset.cpp @@ -0,0 +1,1782 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxge/fx_freetype.h" + +static const struct _UnicodeAlt { + FX_WORD m_Unicode; + const FX_CHAR* m_Alter; +} UnicodeAlts[] = { + {0x00a0, " "}, {0x00a1, "!"}, {0x00a2, "c"}, {0x00a3, "P"}, + {0x00a4, "o"}, {0x00a5, "Y"}, {0x00a6, "|"}, {0x00a7, "S"}, + {0x00a9, "(C)"}, {0x00aa, "a"}, {0x00ab, "<<"}, {0x00ac, "-|"}, + {0x00ae, "(R)"}, {0x00af, "-"}, {0x00b0, "o"}, {0x00b1, "+/-"}, + {0x00b2, "^2"}, {0x00b3, "^3"}, {0x00b4, "'"}, {0x00b5, "u"}, + {0x00b6, "P"}, {0x00b7, "."}, {0x00b9, "^1"}, {0x00ba, "o"}, + {0x00bb, ">>"}, {0x00bc, "1/4"}, {0x00bd, "1/2"}, {0x00be, "3/4"}, + {0x00bf, "?"}, {0x00c0, "A"}, {0x00c1, "A"}, {0x00c2, "A"}, + {0x00c3, "A"}, {0x00c4, "A"}, {0x00c5, "A"}, {0x00c6, "AE"}, + {0x00c7, "C"}, {0x00c8, "E"}, {0x00c9, "E"}, {0x00ca, "E"}, + {0x00cb, "E"}, {0x00cc, "I"}, {0x00cd, "I"}, {0x00ce, "I"}, + {0x00cf, "I"}, {0x00d1, "N"}, {0x00d2, "O"}, {0x00d3, "O"}, + {0x00d4, "O"}, {0x00d5, "O"}, {0x00d6, "O"}, {0x00d7, "x"}, + {0x00d8, "O"}, {0x00d9, "U"}, {0x00da, "U"}, {0x00db, "U"}, + {0x00dc, "U"}, {0x00dd, "Y"}, {0x00df, "S"}, {0x00e0, "a"}, + {0x00e1, "a"}, {0x00e2, "a"}, {0x00e3, "a"}, {0x00e4, "a"}, + {0x00e5, "a"}, {0x00e6, "ae"}, {0x00e7, "c"}, {0x00e8, "e"}, + {0x00e9, "e"}, {0x00ea, "e"}, {0x00eb, "e"}, {0x00ec, "i"}, + {0x00ed, "i"}, {0x00ee, "i"}, {0x00ef, "i"}, {0x00f1, "n"}, + {0x00f2, "o"}, {0x00f3, "o"}, {0x00f4, "o"}, {0x00f5, "o"}, + {0x00f6, "o"}, {0x00f7, "/"}, {0x00f8, "o"}, {0x00f9, "u"}, + {0x00fa, "u"}, {0x00fb, "u"}, {0x00fc, "u"}, {0x00fd, "y"}, + {0x00ff, "y"}, {0x02b0, "h"}, {0x02b2, "j"}, {0x02b3, "r"}, + {0x02b7, "w"}, {0x02b8, "y"}, {0x02b9, "'"}, {0x02ba, "\""}, + {0x02bb, "'"}, {0x02bc, "'"}, {0x02bd, "'"}, {0x02be, "'"}, + {0x02bf, "'"}, {0x02c2, "<"}, {0x02c3, ">"}, {0x02c4, "^"}, + {0x02c5, "v"}, {0x02c6, "^"}, {0x02c7, "v"}, {0x02c8, "'"}, + {0x02c9, "-"}, {0x02ca, "'"}, {0x02cb, "'"}, {0x02cc, "."}, + {0x02cd, "_"}, {0x2010, "-"}, {0x2012, "-"}, {0x2013, "-"}, + {0x2014, "--"}, {0x2015, "--"}, {0x2016, "|"}, {0x2017, "_"}, + {0x2018, "'"}, {0x2019, "'"}, {0x201a, ","}, {0x201b, "'"}, + {0x201c, "\""}, {0x201d, "\""}, {0x201e, ","}, {0x201f, "'"}, + {0x2020, "+"}, {0x2021, "+"}, {0x2022, "*"}, {0x2023, ">"}, + {0x2024, "."}, {0x2025, ".."}, {0x2027, "."}, {0x2032, "'"}, + {0x2033, "\""}, {0x2035, "'"}, {0x2036, "\""}, {0x2038, "^"}, + {0x2039, "<"}, {0x203a, ">"}, {0x203b, "*"}, {0x203c, "!!"}, + {0x203d, "?!"}, {0x203e, "-"}, {0x2044, "/"}, {0x2047, "??"}, + {0x2048, "?!"}, {0x2049, "!?"}, {0x204e, "*"}, {0x2052, "%"}, + {0x2122, "(TM)"}, {0x2212, "-"}, {0x2215, "/"}, {0x2216, "\\"}, + {0x2217, "*"}, {0x2218, "*"}, {0x2219, "*"}, {0x2223, "|"}, + {0x22c5, "."}, {0x266f, "#"}, {0XF6D9, "(C)"}, {0XF6DA, "(C)"}, + {0XF6DB, "(TM)"}, {0XF8E8, "(C)"}, {0xf8e9, "(C)"}, {0XF8EA, "(TM)"}, + {0xfb01, "fi"}, {0xfb02, "fl"}}; +const FX_CHAR* FCS_GetAltStr(FX_WCHAR unicode) { + int begin = 0; + int end = sizeof UnicodeAlts / sizeof(struct _UnicodeAlt) - 1; + while (begin <= end) { + int middle = (begin + end) / 2; + FX_WORD middlecode = UnicodeAlts[middle].m_Unicode; + if (middlecode > unicode) { + end = middle - 1; + } else if (middlecode < unicode) { + begin = middle + 1; + } else { + return UnicodeAlts[middle].m_Alter; + } + } + return NULL; +} +static const FX_WORD StandardEncoding[256] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x2019, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, + 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, + 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x2018, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, + 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, + 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, + 0x007e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a1, + 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7, 0x00a4, 0x0027, 0x201c, + 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x0000, 0x2013, 0x2020, 0x2021, + 0x00b7, 0x0000, 0x00b6, 0x2022, 0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, + 0x2030, 0x0000, 0x00bf, 0x0000, 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x00af, + 0x02d8, 0x02d9, 0x00a8, 0x0000, 0x02da, 0x00b8, 0x0000, 0x02dd, 0x02db, + 0x02c7, 0x2014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00c6, 0x0000, 0x00aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0141, 0x00d8, + 0x0152, 0x00ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x0000, + 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, 0x0142, 0x00f8, 0x0153, 0x00df, + 0x0000, 0x0000, 0x0000, 0x0000}; +static const FX_WORD MacRomanEncoding[256] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, + 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, + 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, + 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, + 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, + 0x007e, 0x0000, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, + 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, + 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0, + 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, + 0x00b4, 0x00a8, 0x0000, 0x00c6, 0x00d8, 0x0000, 0x00b1, 0x0000, 0x0000, + 0x00a5, 0x00b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00aa, 0x00ba, + 0x0000, 0x00e6, 0x00f8, 0x00bf, 0x00a3, 0x00ac, 0x0000, 0x0192, 0x0000, + 0x0000, 0x00ab, 0x00bb, 0x2026, 0x0020, 0x00c0, 0x00c3, 0x00d5, 0x0152, + 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0000, + 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x2021, + 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, + 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0x0000, 0x00d2, 0x00da, + 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, + 0x00b8, 0x02dd, 0x02db, 0x02c7}; +static const FX_WORD AdobeWinAnsiEncoding[256] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, + 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, + 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, + 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, + 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, + 0x007e, 0x2022, 0x20ac, 0x2022, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, + 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x2022, 0x017d, 0x2022, + 0x2022, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, + 0x2122, 0x0161, 0x203a, 0x0153, 0x2022, 0x017e, 0x0178, 0x0020, 0x00a1, + 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, + 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, + 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, + 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, + 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, + 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, + 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, + 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, + 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, + 0x00fc, 0x00fd, 0x00fe, 0x00ff}; +static const FX_WORD MacExpertEncoding[256] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xf721, 0xf6f8, 0xf7a2, + 0xf724, 0xf6e4, 0xf726, 0xf7b4, 0x207d, 0x207e, 0x2025, 0x2024, 0x002c, + 0x002d, 0x002e, 0x2044, 0xf730, 0xf731, 0xf732, 0xf733, 0xf734, 0xf735, + 0xf736, 0xf737, 0xf738, 0xf739, 0x003a, 0x003b, 0x0000, 0xf6de, 0x0000, + 0xf73f, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7f0, 0x0000, 0x0000, 0x00bc, + 0x00bd, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, 0x2153, 0x2154, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfb01, 0xfb02, 0xfb03, + 0xfb04, 0x208d, 0x0000, 0x208e, 0xf6f6, 0xf6e5, 0xf760, 0xf761, 0xf762, + 0xf763, 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b, + 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, 0xf774, + 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0x20a1, 0xf6dc, 0xf6dd, + 0xf6fe, 0x0000, 0x0000, 0xf6e9, 0xf6e0, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf7e1, 0xf7e0, 0xf7e2, 0xf7e4, 0xf7e3, 0xf7e5, 0xf7e7, 0xf7e9, 0xf7e8, + 0xf7ea, 0xf7eb, 0xf7ed, 0xf7ec, 0xf7ee, 0xf7ef, 0xf7f1, 0xf7f3, 0xf7f2, + 0xf7f4, 0xf7f6, 0xf7f5, 0xf7fa, 0xf7f9, 0xf7fb, 0xf7fc, 0x0000, 0x2078, + 0x2084, 0x2083, 0x2086, 0x2088, 0x2087, 0xf6fd, 0x0000, 0xf6df, 0x2082, + 0x0000, 0xf7a8, 0x0000, 0xf6f5, 0xf6fd, 0x2085, 0x0000, 0xf6e1, 0xf6e7, + 0xf7fd, 0x0000, 0xf6e3, 0x0000, 0x0000, 0xf7fe, 0x0000, 0x2089, 0x2080, + 0xf6ff, 0xf7e6, 0xf7f8, 0xf7bf, 0x2081, 0xf6e9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf6fa, 0x2012, 0xf6e6, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7a1, 0x0000, + 0xf7ff, 0x0000, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077, + 0x2079, 0x2070, 0x0000, 0xf6ec, 0xf6f1, 0x0000, 0x0000, 0x0000, 0xf6ed, + 0xf6f2, 0xf6eb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6ee, 0xf6fb, + 0xf6f4, 0xf7af, 0xf6ea, 0x207f, 0xf6ef, 0xf6e2, 0xf6e8, 0xf6f7, 0xf6fc, + 0x0000, 0x0000, 0x0000, 0x0000}; +static const FX_WORD AdobeSymbolEncoding[256] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x2200, 0x0023, + 0x2203, 0x0025, 0x0026, 0x220B, 0x0028, 0x0029, 0x2217, 0x002B, 0x002C, + 0x2212, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, + 0x003F, 0x2245, 0x0391, 0x0392, 0x03A7, 0x0394, 0x0395, 0x03A6, 0x0393, + 0x0397, 0x0399, 0x03D1, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, 0x03A0, + 0x0398, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03C2, 0x03A9, 0x039E, 0x03A8, + 0x0396, 0x005B, 0x2234, 0x005D, 0x22A5, 0x005F, 0xF8E5, 0x03B1, 0x03B2, + 0x03C7, 0x03B4, 0x03B5, 0x03C6, 0x03B3, 0x03B7, 0x03B9, 0x03D5, 0x03BA, + 0x03BB, 0x03BC, 0x03BD, 0x03BF, 0x03C0, 0x03B8, 0x03C1, 0x03C3, 0x03C4, + 0x03C5, 0x03D6, 0x03C9, 0x03BE, 0x03C8, 0x03B6, 0x007B, 0x007C, 0x007D, + 0x223C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20AC, 0x03D2, + 0x2032, 0x2264, 0x2044, 0x221E, 0x0192, 0x2663, 0x2666, 0x2665, 0x2660, + 0x2194, 0x2190, 0x2191, 0x2192, 0x2193, 0x00B0, 0x00B1, 0x2033, 0x2265, + 0x00D7, 0x221D, 0x2202, 0x2022, 0x00F7, 0x2260, 0x2261, 0x2248, 0x2026, + 0xF8E6, 0xF8E7, 0x21B5, 0x2135, 0x2111, 0x211C, 0x2118, 0x2297, 0x2295, + 0x2205, 0x2229, 0x222A, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, + 0x2209, 0x2220, 0x2207, 0xF6DA, 0xF6D9, 0xF6DB, 0x220F, 0x221A, 0x22C5, + 0x00AC, 0x2227, 0x2228, 0x21D4, 0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x25CA, + 0x2329, 0xF8E8, 0xF8E9, 0xF8EA, 0x2211, 0xF8EB, 0xF8EC, 0xF8ED, 0xF8EE, + 0xF8EF, 0xF8F0, 0xF8F1, 0xF8F2, 0xF8F3, 0xF8F4, 0x0000, 0x232A, 0x222B, + 0x2320, 0xF8F5, 0x2321, 0xF8F6, 0xF8F7, 0xF8F8, 0xF8F9, 0xF8FA, 0xF8FB, + 0xF8FC, 0xF8FD, 0xF8FE, 0x0000, +}; +static const FX_WORD ZapfEncoding[256] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x2701, 0x2702, 0x2703, + 0x2704, 0x260E, 0x2706, 0x2707, 0x2708, 0x2709, 0x261B, 0x261E, 0x270C, + 0x270D, 0x270E, 0x270F, 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, + 0x2716, 0x2717, 0x2718, 0x2719, 0x271A, 0x271B, 0x271C, 0x271D, 0x271E, + 0x271F, 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, + 0x2605, 0x2729, 0x272A, 0x272B, 0x272C, 0x272D, 0x272E, 0x272F, 0x2730, + 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, + 0x273A, 0x273B, 0x273C, 0x273D, 0x273E, 0x273F, 0x2740, 0x2741, 0x2742, + 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274A, 0x274B, + 0x25CF, 0x274D, 0x25A0, 0x274F, 0x2750, 0x2751, 0x2752, 0x25B2, 0x25BC, + 0x25C6, 0x2756, 0x25D7, 0x2758, 0x2759, 0x275A, 0x275B, 0x275C, 0x275D, + 0x275E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2761, + 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2663, 0x2666, 0x2665, + 0x2660, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + 0x2468, 0x2469, 0x2776, 0x2777, 0x2778, 0x2779, 0x277A, 0x277B, 0x277C, + 0x277D, 0x277E, 0x277F, 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, + 0x2786, 0x2787, 0x2788, 0x2789, 0x278A, 0x278B, 0x278C, 0x278D, 0x278E, + 0x278F, 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195, + 0x2798, 0x2799, 0x279A, 0x279B, 0x279C, 0x279D, 0x279E, 0x279F, 0x27A0, + 0x27A1, 0x27A2, 0x27A3, 0x27A4, 0x27A5, 0x27A6, 0x27A7, 0x27A8, 0x27A9, + 0x27AA, 0x27AB, 0x27AC, 0x27AD, 0x27AE, 0x27AF, 0x0000, 0x27B1, 0x27B2, + 0x27B3, 0x27B4, 0x27B5, 0x27B6, 0x27B7, 0x27B8, 0x27B9, 0x27BA, 0x27BB, + 0x27BC, 0x27BD, 0x27BE, 0x0000, +}; +static const FX_CHAR* const StandardEncodingNames[224] = { + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quoteright", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "quoteleft", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "exclamdown", + "cent", + "sterling", + "fraction", + "yen", + "florin", + "section", + "currency", + "quotesingle", + "quotedblleft", + "guillemotleft", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + NULL, + "endash", + "dagger", + "daggerdbl", + "periodcentered", + NULL, + "paragraph", + "bullet", + "quotesinglbase", + "quotedblbase", + "quotedblright", + "guillemotright", + "ellipsis", + "perthousand", + NULL, + "questiondown", + NULL, + "grave", + "acute", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "dieresis", + NULL, + "ring", + "cedilla", + NULL, + "hungarumlaut", + "ogonek", + "caron", + "emdash", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "AE", + NULL, + "ordfeminine", + NULL, + NULL, + NULL, + NULL, + "Lslash", + "Oslash", + "OE", + "ordmasculine", + NULL, + NULL, + NULL, + NULL, + NULL, + "ae", + NULL, + NULL, + NULL, + "dotlessi", + NULL, + NULL, + "lslash", + "oslash", + "oe", + "germandbls", + NULL, + NULL, + NULL, + NULL, +}; +static const FX_CHAR* const AdobeWinAnsiEncodingNames[224] = { + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quotesingle", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "grave", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "bullet", + "Euro", + "bullet", + "quotesinglbase", + "florin", + "quotedblbase", + "ellipsis", + "dagger", + "daggerdbl", + "circumflex", + "perthousand", + "Scaron", + "guilsinglleft", + "OE", + "bullet", + "Zcaron", + "bullet", + "bullet", + "quoteleft", + "quoteright", + "quotedblleft", + "quotedblright", + "bullet", + "endash", + "emdash", + "tilde", + "trademark", + "scaron", + "guilsinglright", + "oe", + "bullet", + "zcaron", + "Ydieresis", + "space", + "exclamdown", + "cent", + "sterling", + "currency", + "yen", + "brokenbar", + "section", + "dieresis", + "copyright", + "ordfeminine", + "guillemotleft", + "logicalnot", + "hyphen", + "registered", + "macron", + "degree", + "plusminus", + "twosuperior", + "threesuperior", + "acute", + "mu", + "paragraph", + "periodcentered", + "cedilla", + "onesuperior", + "ordmasculine", + "guillemotright", + "onequarter", + "onehalf", + "threequarters", + "questiondown", + "Agrave", + "Aacute", + "Acircumflex", + "Atilde", + "Adieresis", + "Aring", + "AE", + "Ccedilla", + "Egrave", + "Eacute", + "Ecircumflex", + "Edieresis", + "Igrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Eth", + "Ntilde", + "Ograve", + "Oacute", + "Ocircumflex", + "Otilde", + "Odieresis", + "multiply", + "Oslash", + "Ugrave", + "Uacute", + "Ucircumflex", + "Udieresis", + "Yacute", + "Thorn", + "germandbls", + "agrave", + "aacute", + "acircumflex", + "atilde", + "adieresis", + "aring", + "ae", + "ccedilla", + "egrave", + "eacute", + "ecircumflex", + "edieresis", + "igrave", + "iacute", + "icircumflex", + "idieresis", + "eth", + "ntilde", + "ograve", + "oacute", + "ocircumflex", + "otilde", + "odieresis", + "divide", + "oslash", + "ugrave", + "uacute", + "ucircumflex", + "udieresis", + "yacute", + "thorn", + "ydieresis", +}; +static const FX_CHAR* const MacRomanEncodingNames[224] = { + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quotesingle", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "grave", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + NULL, + "Adieresis", + "Aring", + "Ccedilla", + "Eacute", + "Ntilde", + "Odieresis", + "Udieresis", + "aacute", + "agrave", + "acircumflex", + "adieresis", + "atilde", + "aring", + "ccedilla", + "eacute", + "egrave", + "ecircumflex", + "edieresis", + "iacute", + "igrave", + "icircumflex", + "idieresis", + "ntilde", + "oacute", + "ograve", + "ocircumflex", + "odieresis", + "otilde", + "uacute", + "ugrave", + "ucircumflex", + "udieresis", + "dagger", + "degree", + "cent", + "sterling", + "section", + "bullet", + "paragraph", + "germandbls", + "registered", + "copyright", + "trademark", + "acute", + "dieresis", + "notequal", + "AE", + "Oslash", + "infinity", + "plusminus", + "lessequal", + "greaterequal", + "yen", + "mu", + "partialdiff", + "summation", + "product", + "pi", + "integral", + "ordfeminine", + "ordmasculine", + "Omega", + "ae", + "oslash", + "questiondown", + "exclamdown", + "logicalnot", + "radical", + "florin", + "approxequal", + "Delta", + "guillemotleft", + "guillemotright", + "ellipsis", + "space", + "Agrave", + "Atilde", + "Otilde", + "OE", + "oe", + "endash", + "emdash", + "quotedblleft", + "quotedblright", + "quoteleft", + "quoteright", + "divide", + "lozenge", + "ydieresis", + "Ydieresis", + "fraction", + "currency", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + "daggerdbl", + "periodcentered", + "quotesinglbase", + "quotedblbase", + "perthousand", + "Acircumflex", + "Ecircumflex", + "Aacute", + "Edieresis", + "Egrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Igrave", + "Oacute", + "Ocircumflex", + "apple", + "Ograve", + "Uacute", + "Ucircumflex", + "Ugrave", + "dotlessi", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "ring", + "cedilla", + "hungarumlaut", + "ogonek", + "caron", +}; +static const FX_CHAR* const MacExpertEncodingNames[224] = { + "space", + "exclamsmall", + "Hungarumlautsmall", + "centoldstyle", + "dollaroldstyle", + "dollarsuperior", + "ampersandsmall", + "Acutesmall", + "parenleftsuperior", + "parenrightsuperior", + "twodotenleader", + "onedotenleader", + "comma", + "hyphen", + "period", + "fraction", + "zerooldstyle", + "oneoldstyle", + "twooldstyle", + "threeoldstyle", + "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", + "sevenoldstyle", + "eightoldstyle", + "nineoldstyle", + "colon", + "semicolon", + NULL, + "threequartersemdash", + NULL, + "questionsmall", + NULL, + NULL, + NULL, + NULL, + "Ethsmall", + NULL, + NULL, + "onequarter", + "onehalf", + "threequarters", + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + "onethird", + "twothirds", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "ff", + "fi", + "fl", + "ffi", + "ffl", + "parenleftinferior", + NULL, + "parenrightinferior", + "Circumflexsmall", + "hypheninferior", + "Gravesmall", + "Asmall", + "Bsmall", + "Csmall", + "Dsmall", + "Esmall", + "Fsmall", + "Gsmall", + "Hsmall", + "Ismall", + "Jsmall", + "Ksmall", + "Lsmall", + "Msmall", + "Nsmall", + "Osmall", + "Psmall", + "Qsmall", + "Rsmall", + "Ssmall", + "Tsmall", + "Usmall", + "Vsmall", + "Wsmall", + "Xsmall", + "Ysmall", + "Zsmall", + "colonmonetary", + "onefitted", + "rupiah", + "Tildesmall", + NULL, + NULL, + "asuperior", + "centsuperior", + NULL, + NULL, + NULL, + NULL, + "Aacutesmall", + "Agravesmall", + "Acircumflexsmall", + "Adieresissmall", + "Atildesmall", + "Aringsmall", + "Ccedillasmall", + "Eacutesmall", + "Egravesmall", + "Ecircumflexsmall", + "Edieresissmall", + "Iacutesmall", + "Igravesmall", + "Icircumflexsmall", + "Idieresissmall", + "Ntildesmall", + "Oacutesmall", + "Ogravesmall", + "Ocircumflexsmall", + "Odieresissmall", + "Otildesmall", + "Uacutesmall", + "Ugravesmall", + "Ucircumflexsmall", + "Udieresissmall", + NULL, + "eightsuperior", + "fourinferior", + "threeinferior", + "sixinferior", + "eightinferior", + "seveninferior", + "Scaronsmall", + NULL, + "centinferior", + "twoinferior", + NULL, + "Dieresissmall", + NULL, + "Caronsmall", + "Scaronsmall", + "fiveinferior", + NULL, + "commainferior", + "periodinferior", + "Yacutesmall", + NULL, + "dollarinferior", + NULL, + NULL, + "Thornsmall", + NULL, + "nineinferior", + "zeroinferior", + "Zcaronsmall", + "AEsmall", + "Oslashsmall", + "questiondownsmall", + "oneinferior", + "asuperior", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Cedillasmall", + NULL, + NULL, + NULL, + NULL, + NULL, + "OEsmall", + "figuredash", + "hyphensuperior", + NULL, + NULL, + NULL, + NULL, + "exclamdownsmall", + NULL, + "Ydieresissmall", + NULL, + "onesuperior", + "twosuperior", + "threesuperior", + "foursuperior", + "fivesuperior", + "sixsuperior", + "sevensuperior", + "ninesuperior", + "zerosuperior", + NULL, + "esuperior", + "rsuperior", + NULL, + NULL, + NULL, + "isuperior", + "ssuperior", + "dsuperior", + NULL, + NULL, + NULL, + NULL, + NULL, + "lsuperior", + "Ogoneksmall", + "Brevesmall", + "Macronsmall", + "bsuperior", + "nsuperior", + "msuperior", + "commasuperior", + "periodsuperior", + "Dotaccentsmall", + "Ringsmall", + NULL, + NULL, + NULL, + NULL, +}; +static const FX_CHAR* const PDFDocEncodingNames[232] = { + "breve", + "caron", + "circumflex", + "dotaccent", + "hungarumlaut", + "ogonek", + "ring", + "tilde", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quotesingle", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "grave", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + NULL, + "bullet3", + "dagger", + "daggerdbl", + "ellipsis", + "emdash", + "endash", + "florin", + "fraction", + "guilsinglleft", + "guilsinglright", + "minus", + "perthousand", + "quotedblbase", + "quotedblleft", + "quotedblright", + "quoteleft", + "quoteright", + "quotesinglbase", + "trademark", + "fi", + "fl", + "Lslash", + "OE", + "Scaron", + "Ydieresis", + "Zcaron2", + "dotlessi", + "lslash", + "oe", + "scaron", + "zcaron2", + NULL, + "Euro", + "exclamdown", + "cent", + "sterling", + "currency", + "yen", + "brokenbar", + "section", + "dieresis", + "copyright", + "ordfeminine", + "guillemotleft4", + "logicalnot", + NULL, + "registered", + "macron", + "degree", + "plusminus", + "twosuperior", + "threesuperior", + "acute", + "mu", + "paragraph", + "periodcentered", + "cedilla", + "onesuperior", + "ordmasculine", + "guillemotright4", + "onequarter", + "onehalf", + "threequarters", + "questiondown", + "Agrave", + "Aacute", + "Acircumflex", + "Atilde", + "Adieresis", + "Aring", + "AE", + "Ccedilla", + "Egrave", + "Eacute", + "Ecircumflex", + "Edieresis", + "Igrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Eth", + "Ntilde", + "Ograve", + "Oacute", + "Ocircumflex", + "Otilde", + "Odieresis", + "multiply", + "Oslash", + "Ugrave", + "Uacute", + "Ucircumflex", + "Udieresis", + "Yacute", + "Thorn", + "germandbls", + "agrave", + "aacute", + "acircumflex", + "atilde", + "adieresis", + "aring", + "ae", + "ccedilla", + "egrave", + "eacute", + "ecircumflex", + "edieresis", + "igrave", + "iacute", + "icircumflex", + "idieresis", + "eth", + "ntilde", + "ograve", + "oacute", + "ocircumflex", + "otilde", + "odieresis", + "divide", + "oslash", + "ugrave", + "uacute", + "ucircumflex", + "udieresis", + "yacute", + "thorn", + "ydieresis", +}; +static const FX_CHAR* const AdobeSymbolEncodingNames[224] = { + "space", + "exclam", + "universal", + "numbersign", + "existential", + "percent", + "ampersand", + "suchthat", + "parenleft", + "parenright", + "asteriskmath", + "plus", + "comma", + "minus", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "congruent", + "Alpha", + "Beta", + "Chi", + "Delta", + "Epsilon", + "Phi", + "Gamma", + "Eta", + "Iota", + "theta1", + "Kappa", + "Lambda", + "Mu", + "Nu", + "Omicron", + "Pi", + "Theta", + "Rho", + "Sigma", + "Tau", + "Upsilon", + "sigma1", + "Omega", + "Xi", + "Psi", + "Zeta", + "bracketleft", + "therefore", + "bracketright", + "perpendicular", + "underscore", + "radicalex", + "alpha", + "beta", + "chi", + "delta", + "epsilon", + "phi", + "gamma", + "eta", + "iota", + "phi1", + "kappa", + "lambda", + "mu", + "nu", + "omicron", + "pi", + "theta", + "rho", + "sigma", + "tau", + "upsilon", + "omega1", + "omega", + "xi", + "psi", + "zeta", + "braceleft", + "bar", + "braceright", + "similar", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Euro", + "Upsilon1", + "minute", + "lessequal", + "fraction", + "infinity", + "florin", + "club", + "diamond", + "heart", + "spade", + "arrowboth", + "arrowleft", + "arrowup", + "arrowright", + "arrowdown", + "degree", + "plusminus", + "second", + "greaterequal", + "multiply", + "proportional", + "partialdiff", + "bullet", + "divide", + "notequal", + "equivalence", + "approxequal", + "ellipsis", + "arrowvertex", + "arrowhorizex", + "carriagereturn", + "aleph", + "Ifraktur", + "Rfraktur", + "weierstrass", + "circlemultiply", + "circleplus", + "emptyset", + "intersection", + "union", + "propersuperset", + "reflexsuperset", + "notsubset", + "propersubset", + "reflexsubset", + "element", + "notelement", + "angle", + "gradient", + "registerserif", + "copyrightserif", + "trademarkserif", + "product", + "radical", + "dotmath", + "logicalnot", + "logicaland", + "logicalor", + "arrowdblboth", + "arrowdblleft", + "arrowdblup", + "arrowdblright", + "arrowdbldown", + "lozenge", + "angleleft", + "registersans", + "copyrightsans", + "trademarksans", + "summation", + "parenlefttp", + "parenleftex", + "parenleftbt", + "bracketlefttp", + "bracketleftex", + "bracketleftbt", + "bracelefttp", + "braceleftmid", + "braceleftbt", + "braceex", + NULL, + "angleright", + "integral", + "integraltp", + "integralex", + "integralbt", + "parenrighttp", + "parenrightex", + "parenrightbt", + "bracketrighttp", + "bracketrightex", + "bracketrightbt", + "bracerighttp", + "bracerightmid", + "bracerightbt", + NULL, +}; +static const FX_CHAR* const ZapfEncodingNames[224] = { + "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", "a118", + "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", + "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26", + "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", + "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", + "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", + "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", + "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66", + "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", + "a75", "a204", "a76", "a77", "a78", "a79", "a81", "a82", "a83", + "a84", "a97", "a98", "a99", "a100", NULL, "a89", "a90", "a93", + "a94", "a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", + "a95", "a96", NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, "a101", "a102", "a103", "a104", "a106", "a107", + "a108", "a112", "a111", "a110", "a109", "a120", "a121", "a122", "a123", + "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", + "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", + "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150", + "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", + "a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", + "a168", "a169", "a170", "a171", "a172", "a173", "a162", "a174", "a175", + "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", "a200", + "a182", NULL, "a201", "a183", "a184", "a197", "a185", "a194", "a198", + "a186", "a195", "a187", "a188", "a189", "a190", "a191", NULL}; +const FX_CHAR* PDF_CharNameFromPredefinedCharSet(int encoding, + uint8_t charcode) { + if (encoding == PDFFONT_ENCODING_PDFDOC) { + if (charcode < 24) { + return NULL; + } + charcode -= 24; + } else { + if (charcode < 32) { + return NULL; + } + charcode -= 32; + } + switch (encoding) { + case PDFFONT_ENCODING_WINANSI: + return AdobeWinAnsiEncodingNames[charcode]; + case PDFFONT_ENCODING_MACROMAN: + return MacRomanEncodingNames[charcode]; + case PDFFONT_ENCODING_MACEXPERT: + return MacExpertEncodingNames[charcode]; + case PDFFONT_ENCODING_STANDARD: + return StandardEncodingNames[charcode]; + case PDFFONT_ENCODING_ADOBE_SYMBOL: + return AdobeSymbolEncodingNames[charcode]; + case PDFFONT_ENCODING_ZAPFDINGBATS: + return ZapfEncodingNames[charcode]; + case PDFFONT_ENCODING_PDFDOC: + return PDFDocEncodingNames[charcode]; + } + return NULL; +} +FX_WCHAR FT_UnicodeFromCharCode(int encoding, FX_DWORD charcode) { + switch (encoding) { + case FXFT_ENCODING_UNICODE: + return (FX_WORD)charcode; + case FXFT_ENCODING_ADOBE_STANDARD: + return StandardEncoding[(uint8_t)charcode]; + case FXFT_ENCODING_ADOBE_EXPERT: + return MacExpertEncoding[(uint8_t)charcode]; + case FXFT_ENCODING_ADOBE_LATIN_1: + return AdobeWinAnsiEncoding[(uint8_t)charcode]; + case FXFT_ENCODING_APPLE_ROMAN: + return MacRomanEncoding[(uint8_t)charcode]; + case PDFFONT_ENCODING_PDFDOC: + return PDFDocEncoding[(uint8_t)charcode]; + } + return 0; +} +static FX_DWORD PDF_FindCode(const FX_WORD* pCodes, FX_WORD unicode) { + for (FX_DWORD i = 0; i < 256; i++) + if (pCodes[i] == unicode) { + return i; + } + return 0; +} +static const FX_WORD MSSymbolEncoding[256] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 32, 33, 8704, 35, + 8707, 37, 38, 8715, 40, 41, 8727, 43, 44, + 8722, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 8773, 913, 914, 935, 916, 917, 934, 915, + 919, 921, 977, 922, 923, 924, 925, 927, 928, + 920, 929, 931, 932, 933, 962, 937, 926, 936, + 918, 91, 8756, 93, 8869, 95, 8254, 945, 946, + 967, 948, 949, 966, 947, 951, 953, 981, 954, + 955, 956, 957, 959, 960, 952, 961, 963, 964, + 965, 982, 969, 958, 968, 950, 123, 124, 125, + 8764, 0, 0, 0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 978, + 8242, 8804, 8725, 8734, 402, 9827, 9830, 9828, 9824, + 8596, 8592, 8593, 8594, 8595, 176, 177, 8243, 8805, + 215, 8733, 8706, 8729, 247, 8800, 8801, 8776, 8943, + 0, 0, 8629, 0, 8465, 8476, 8472, 8855, 8853, + 8709, 8745, 8746, 8835, 8839, 8836, 8834, 8838, 8712, + 8713, 8736, 8711, 174, 169, 8482, 8719, 8730, 8901, + 172, 8743, 8744, 8660, 8656, 8657, 8658, 8659, 9674, + 9001, 0, 0, 0, 8721, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0x0000, 9002, 8747, + 8992, 0, 8993, 0, 0, 0, 0, 0, 0, + 0x0000, 0x0000, 0x0000, 0x0000}; +FX_DWORD FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode) { + switch (encoding) { + case FXFT_ENCODING_UNICODE: + return unicode; + case FXFT_ENCODING_ADOBE_STANDARD: + return PDF_FindCode(StandardEncoding, unicode); + case FXFT_ENCODING_ADOBE_EXPERT: + return PDF_FindCode(MacExpertEncoding, unicode); + case FXFT_ENCODING_ADOBE_LATIN_1: + return PDF_FindCode(AdobeWinAnsiEncoding, unicode); + case FXFT_ENCODING_APPLE_ROMAN: + return PDF_FindCode(MacRomanEncoding, unicode); + case FXFT_ENCODING_ADOBE_CUSTOM: + return PDF_FindCode(PDFDocEncoding, unicode); + case FXFT_ENCODING_MS_SYMBOL: + return PDF_FindCode(MSSymbolEncoding, unicode); + } + return 0; +} +const FX_WORD* PDF_UnicodesForPredefinedCharSet(int encoding) { + switch (encoding) { + case PDFFONT_ENCODING_WINANSI: + return AdobeWinAnsiEncoding; + case PDFFONT_ENCODING_MACROMAN: + return MacRomanEncoding; + case PDFFONT_ENCODING_MACEXPERT: + return MacExpertEncoding; + case PDFFONT_ENCODING_STANDARD: + return StandardEncoding; + case PDFFONT_ENCODING_ADOBE_SYMBOL: + return AdobeSymbolEncoding; + case PDFFONT_ENCODING_ZAPFDINGBATS: + return ZapfEncoding; + case PDFFONT_ENCODING_PDFDOC: + return PDFDocEncoding; + case PDFFONT_ENCODING_MS_SYMBOL: + return MSSymbolEncoding; + } + return NULL; +} +FX_DWORD PDF_PredefinedCharCodeFromUnicode(int encoding, FX_WCHAR unicode) { + return PDF_FindCode(PDF_UnicodesForPredefinedCharSet(encoding), unicode); +} +FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name) { + return (FX_WCHAR)(FXFT_unicode_from_adobe_name(name) & 0x7FFFFFFF); +} +CFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode) { + char glyph_name[64]; + FXFT_adobe_name_from_unicode(glyph_name, unicode); + return CFX_ByteString(glyph_name); +} diff --git a/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp b/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp new file mode 100644 index 0000000000..91fb9fc2ae --- /dev/null +++ b/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp @@ -0,0 +1,1676 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_font/font_int.h" + +#include "core/fpdfapi/fpdf_cmaps/cmap_int.h" +#include "core/fpdfapi/fpdf_font/ttgsubtable.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_simple_parser.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge.h" + +namespace { + +const FX_CHAR* const g_CharsetNames[CIDSET_NUM_SETS] = { + nullptr, "GB1", "CNS1", "Japan1", "Korea1", "UCS"}; + +const int g_CharsetCPs[CIDSET_NUM_SETS] = {0, 936, 950, 932, 949, 1200}; + +class CPDF_PredefinedCMap { + public: + const FX_CHAR* m_pName; + CIDSet m_Charset; + int m_Coding; + CPDF_CMap::CodingScheme m_CodingScheme; + FX_DWORD m_LeadingSegCount; + uint8_t m_LeadingSegs[4]; +}; + +const CPDF_PredefinedCMap g_PredefinedCMaps[] = { + {"GB-EUC", + CIDSET_GB1, + CIDCODING_GB, + CPDF_CMap::MixedTwoBytes, + 1, + {0xa1, 0xfe}}, + {"GBpc-EUC", + CIDSET_GB1, + CIDCODING_GB, + CPDF_CMap::MixedTwoBytes, + 1, + {0xa1, 0xfc}}, + {"GBK-EUC", + CIDSET_GB1, + CIDCODING_GB, + CPDF_CMap::MixedTwoBytes, + 1, + {0x81, 0xfe}}, + {"GBKp-EUC", + CIDSET_GB1, + CIDCODING_GB, + CPDF_CMap::MixedTwoBytes, + 1, + {0x81, 0xfe}}, + {"GBK2K-EUC", + CIDSET_GB1, + CIDCODING_GB, + CPDF_CMap::MixedTwoBytes, + 1, + {0x81, 0xfe}}, + {"GBK2K", + CIDSET_GB1, + CIDCODING_GB, + CPDF_CMap::MixedTwoBytes, + 1, + {0x81, 0xfe}}, + {"UniGB-UCS2", CIDSET_GB1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, + {"UniGB-UTF16", CIDSET_GB1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}}, + {"B5pc", + CIDSET_CNS1, + CIDCODING_BIG5, + CPDF_CMap::MixedTwoBytes, + 1, + {0xa1, 0xfc}}, + {"HKscs-B5", + CIDSET_CNS1, + CIDCODING_BIG5, + CPDF_CMap::MixedTwoBytes, + 1, + {0x88, 0xfe}}, + {"ETen-B5", + CIDSET_CNS1, + CIDCODING_BIG5, + CPDF_CMap::MixedTwoBytes, + 1, + {0xa1, 0xfe}}, + {"ETenms-B5", + CIDSET_CNS1, + CIDCODING_BIG5, + CPDF_CMap::MixedTwoBytes, + 1, + {0xa1, 0xfe}}, + {"UniCNS-UCS2", CIDSET_CNS1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, + {"UniCNS-UTF16", CIDSET_CNS1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}}, + {"83pv-RKSJ", + CIDSET_JAPAN1, + CIDCODING_JIS, + CPDF_CMap::MixedTwoBytes, + 2, + {0x81, 0x9f, 0xe0, 0xfc}}, + {"90ms-RKSJ", + CIDSET_JAPAN1, + CIDCODING_JIS, + CPDF_CMap::MixedTwoBytes, + 2, + {0x81, 0x9f, 0xe0, 0xfc}}, + {"90msp-RKSJ", + CIDSET_JAPAN1, + CIDCODING_JIS, + CPDF_CMap::MixedTwoBytes, + 2, + {0x81, 0x9f, 0xe0, 0xfc}}, + {"90pv-RKSJ", + CIDSET_JAPAN1, + CIDCODING_JIS, + CPDF_CMap::MixedTwoBytes, + 2, + {0x81, 0x9f, 0xe0, 0xfc}}, + {"Add-RKSJ", + CIDSET_JAPAN1, + CIDCODING_JIS, + CPDF_CMap::MixedTwoBytes, + 2, + {0x81, 0x9f, 0xe0, 0xfc}}, + {"EUC", + CIDSET_JAPAN1, + CIDCODING_JIS, + CPDF_CMap::MixedTwoBytes, + 2, + {0x8e, 0x8e, 0xa1, 0xfe}}, + {"H", CIDSET_JAPAN1, CIDCODING_JIS, CPDF_CMap::TwoBytes, 1, {0x21, 0x7e}}, + {"V", CIDSET_JAPAN1, CIDCODING_JIS, CPDF_CMap::TwoBytes, 1, {0x21, 0x7e}}, + {"Ext-RKSJ", + CIDSET_JAPAN1, + CIDCODING_JIS, + CPDF_CMap::MixedTwoBytes, + 2, + {0x81, 0x9f, 0xe0, 0xfc}}, + {"UniJIS-UCS2", CIDSET_JAPAN1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, + {"UniJIS-UCS2-HW", + CIDSET_JAPAN1, + CIDCODING_UCS2, + CPDF_CMap::TwoBytes, + 0, + {}}, + {"UniJIS-UTF16", + CIDSET_JAPAN1, + CIDCODING_UTF16, + CPDF_CMap::TwoBytes, + 0, + {}}, + {"KSC-EUC", + CIDSET_KOREA1, + CIDCODING_KOREA, + CPDF_CMap::MixedTwoBytes, + 1, + {0xa1, 0xfe}}, + {"KSCms-UHC", + CIDSET_KOREA1, + CIDCODING_KOREA, + CPDF_CMap::MixedTwoBytes, + 1, + {0x81, 0xfe}}, + {"KSCms-UHC-HW", + CIDSET_KOREA1, + CIDCODING_KOREA, + CPDF_CMap::MixedTwoBytes, + 1, + {0x81, 0xfe}}, + {"KSCpc-EUC", + CIDSET_KOREA1, + CIDCODING_KOREA, + CPDF_CMap::MixedTwoBytes, + 1, + {0xa1, 0xfd}}, + {"UniKS-UCS2", CIDSET_KOREA1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, + {"UniKS-UTF16", CIDSET_KOREA1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}}, +}; + +CIDSet CIDSetFromSizeT(size_t index) { + if (index >= CIDSET_NUM_SETS) { + NOTREACHED(); + return CIDSET_UNKNOWN; + } + return static_cast(index); +} + +CIDSet CharsetFromOrdering(const CFX_ByteString& ordering) { + for (size_t charset = 1; charset < FX_ArraySize(g_CharsetNames); ++charset) { + if (ordering == CFX_ByteStringC(g_CharsetNames[charset])) + return CIDSetFromSizeT(charset); + } + return CIDSET_UNKNOWN; +} + +CFX_ByteString CMap_GetString(const CFX_ByteStringC& word) { + return word.Mid(1, word.GetLength() - 2); +} + +int CompareDWORD(const void* data1, const void* data2) { + return (*(FX_DWORD*)data1) - (*(FX_DWORD*)data2); +} + +int CompareCID(const void* key, const void* element) { + if ((*(FX_DWORD*)key) < (*(FX_DWORD*)element)) { + return -1; + } + if ((*(FX_DWORD*)key) > + (*(FX_DWORD*)element) + ((FX_DWORD*)element)[1] / 65536) { + return 1; + } + return 0; +} + +int CheckCodeRange(uint8_t* codes, + int size, + CMap_CodeRange* pRanges, + int nRanges) { + int iSeg = nRanges - 1; + while (iSeg >= 0) { + if (pRanges[iSeg].m_CharSize < size) { + --iSeg; + continue; + } + int iChar = 0; + while (iChar < size) { + if (codes[iChar] < pRanges[iSeg].m_Lower[iChar] || + codes[iChar] > pRanges[iSeg].m_Upper[iChar]) { + break; + } + ++iChar; + } + if (iChar == pRanges[iSeg].m_CharSize) + return 2; + + if (iChar) + return (size == pRanges[iSeg].m_CharSize) ? 2 : 1; + iSeg--; + } + return 0; +} + +int GetCharSizeImpl(FX_DWORD charcode, + CMap_CodeRange* pRanges, + int iRangesSize) { + if (!iRangesSize) + return 1; + + uint8_t codes[4]; + codes[0] = codes[1] = 0x00; + codes[2] = (uint8_t)(charcode >> 8 & 0xFF); + codes[3] = (uint8_t)charcode; + int offset = 0; + int size = 4; + for (int i = 0; i < 4; ++i) { + int iSeg = iRangesSize - 1; + while (iSeg >= 0) { + if (pRanges[iSeg].m_CharSize < size) { + --iSeg; + continue; + } + int iChar = 0; + while (iChar < size) { + if (codes[offset + iChar] < pRanges[iSeg].m_Lower[iChar] || + codes[offset + iChar] > pRanges[iSeg].m_Upper[iChar]) { + break; + } + ++iChar; + } + if (iChar == pRanges[iSeg].m_CharSize) + return size; + --iSeg; + } + --size; + ++offset; + } + return 1; +} + +bool IsValidEmbeddedCharcodeFromUnicodeCharset(CIDSet charset) { + switch (charset) { + case CIDSET_GB1: + case CIDSET_CNS1: + case CIDSET_JAPAN1: + case CIDSET_KOREA1: + return true; + + default: + return false; + } +} + +#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ +FX_DWORD EmbeddedCharcodeFromUnicode(const FXCMAP_CMap* pEmbedMap, + CIDSet charset, + FX_WCHAR unicode) { + if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset)) + return 0; + + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + const FX_WORD* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; + if (!pCodes) + return 0; + + int nCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count; + for (int i = 0; i < nCodes; ++i) { + if (pCodes[i] == unicode) { + FX_DWORD CharCode = FPDFAPI_CharCodeFromCID(pEmbedMap, i); + if (CharCode != 0) { + return CharCode; + } + } + } + return 0; +} +#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ + +FX_WCHAR EmbeddedUnicodeFromCharcode(const FXCMAP_CMap* pEmbedMap, + CIDSet charset, + FX_DWORD charcode) { + if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset)) + return 0; + + FX_WORD cid = FPDFAPI_CIDFromCharCode(pEmbedMap, charcode); + if (cid == 0) + return 0; + + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + const FX_WORD* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; + if (!pCodes) + return 0; + + if (cid < pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count) + return pCodes[cid]; + return 0; +} + +void FT_UseCIDCharmap(FXFT_Face face, int coding) { + int encoding; + switch (coding) { + case CIDCODING_GB: + encoding = FXFT_ENCODING_GB2312; + break; + case CIDCODING_BIG5: + encoding = FXFT_ENCODING_BIG5; + break; + case CIDCODING_JIS: + encoding = FXFT_ENCODING_SJIS; + break; + case CIDCODING_KOREA: + encoding = FXFT_ENCODING_JOHAB; + break; + default: + encoding = FXFT_ENCODING_UNICODE; + } + int err = FXFT_Select_Charmap(face, encoding); + if (err) { + err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE); + } + if (err && FXFT_Get_Face_Charmaps(face)) { + FXFT_Set_Charmap(face, *FXFT_Get_Face_Charmaps(face)); + } +} + +const struct CIDTransform { + FX_WORD CID; + uint8_t a, b, c, d, e, f; +} g_Japan1_VertCIDs[] = { + {97, 129, 0, 0, 127, 55, 0}, {7887, 127, 0, 0, 127, 76, 89}, + {7888, 127, 0, 0, 127, 79, 94}, {7889, 0, 129, 127, 0, 17, 127}, + {7890, 0, 129, 127, 0, 17, 127}, {7891, 0, 129, 127, 0, 17, 127}, + {7892, 0, 129, 127, 0, 17, 127}, {7893, 0, 129, 127, 0, 17, 127}, + {7894, 0, 129, 127, 0, 17, 127}, {7895, 0, 129, 127, 0, 17, 127}, + {7896, 0, 129, 127, 0, 17, 127}, {7897, 0, 129, 127, 0, 17, 127}, + {7898, 0, 129, 127, 0, 17, 127}, {7899, 0, 129, 127, 0, 17, 104}, + {7900, 0, 129, 127, 0, 17, 127}, {7901, 0, 129, 127, 0, 17, 104}, + {7902, 0, 129, 127, 0, 17, 127}, {7903, 0, 129, 127, 0, 17, 127}, + {7904, 0, 129, 127, 0, 17, 127}, {7905, 0, 129, 127, 0, 17, 114}, + {7906, 0, 129, 127, 0, 17, 127}, {7907, 0, 129, 127, 0, 17, 127}, + {7908, 0, 129, 127, 0, 17, 127}, {7909, 0, 129, 127, 0, 17, 127}, + {7910, 0, 129, 127, 0, 17, 127}, {7911, 0, 129, 127, 0, 17, 127}, + {7912, 0, 129, 127, 0, 17, 127}, {7913, 0, 129, 127, 0, 17, 127}, + {7914, 0, 129, 127, 0, 17, 127}, {7915, 0, 129, 127, 0, 17, 114}, + {7916, 0, 129, 127, 0, 17, 127}, {7917, 0, 129, 127, 0, 17, 127}, + {7918, 127, 0, 0, 127, 18, 25}, {7919, 127, 0, 0, 127, 18, 25}, + {7920, 127, 0, 0, 127, 18, 25}, {7921, 127, 0, 0, 127, 18, 25}, + {7922, 127, 0, 0, 127, 18, 25}, {7923, 127, 0, 0, 127, 18, 25}, + {7924, 127, 0, 0, 127, 18, 25}, {7925, 127, 0, 0, 127, 18, 25}, + {7926, 127, 0, 0, 127, 18, 25}, {7927, 127, 0, 0, 127, 18, 25}, + {7928, 127, 0, 0, 127, 18, 25}, {7929, 127, 0, 0, 127, 18, 25}, + {7930, 127, 0, 0, 127, 18, 25}, {7931, 127, 0, 0, 127, 18, 25}, + {7932, 127, 0, 0, 127, 18, 25}, {7933, 127, 0, 0, 127, 18, 25}, + {7934, 127, 0, 0, 127, 18, 25}, {7935, 127, 0, 0, 127, 18, 25}, + {7936, 127, 0, 0, 127, 18, 25}, {7937, 127, 0, 0, 127, 18, 25}, + {7938, 127, 0, 0, 127, 18, 25}, {7939, 127, 0, 0, 127, 18, 25}, + {8720, 0, 129, 127, 0, 19, 102}, {8721, 0, 129, 127, 0, 13, 127}, + {8722, 0, 129, 127, 0, 19, 108}, {8723, 0, 129, 127, 0, 19, 102}, + {8724, 0, 129, 127, 0, 19, 102}, {8725, 0, 129, 127, 0, 19, 102}, + {8726, 0, 129, 127, 0, 19, 102}, {8727, 0, 129, 127, 0, 19, 102}, + {8728, 0, 129, 127, 0, 19, 114}, {8729, 0, 129, 127, 0, 19, 114}, + {8730, 0, 129, 127, 0, 38, 108}, {8731, 0, 129, 127, 0, 13, 108}, + {8732, 0, 129, 127, 0, 19, 108}, {8733, 0, 129, 127, 0, 19, 108}, + {8734, 0, 129, 127, 0, 19, 108}, {8735, 0, 129, 127, 0, 19, 108}, + {8736, 0, 129, 127, 0, 19, 102}, {8737, 0, 129, 127, 0, 19, 102}, + {8738, 0, 129, 127, 0, 19, 102}, {8739, 0, 129, 127, 0, 19, 102}, + {8740, 0, 129, 127, 0, 19, 102}, {8741, 0, 129, 127, 0, 19, 102}, + {8742, 0, 129, 127, 0, 19, 102}, {8743, 0, 129, 127, 0, 19, 102}, + {8744, 0, 129, 127, 0, 19, 102}, {8745, 0, 129, 127, 0, 19, 102}, + {8746, 0, 129, 127, 0, 19, 114}, {8747, 0, 129, 127, 0, 19, 114}, + {8748, 0, 129, 127, 0, 19, 102}, {8749, 0, 129, 127, 0, 19, 102}, + {8750, 0, 129, 127, 0, 19, 102}, {8751, 0, 129, 127, 0, 19, 102}, + {8752, 0, 129, 127, 0, 19, 102}, {8753, 0, 129, 127, 0, 19, 102}, + {8754, 0, 129, 127, 0, 19, 102}, {8755, 0, 129, 127, 0, 19, 102}, + {8756, 0, 129, 127, 0, 19, 102}, {8757, 0, 129, 127, 0, 19, 102}, + {8758, 0, 129, 127, 0, 19, 102}, {8759, 0, 129, 127, 0, 19, 102}, + {8760, 0, 129, 127, 0, 19, 102}, {8761, 0, 129, 127, 0, 19, 102}, + {8762, 0, 129, 127, 0, 19, 102}, {8763, 0, 129, 127, 0, 19, 102}, + {8764, 0, 129, 127, 0, 19, 102}, {8765, 0, 129, 127, 0, 19, 102}, + {8766, 0, 129, 127, 0, 19, 102}, {8767, 0, 129, 127, 0, 19, 102}, + {8768, 0, 129, 127, 0, 19, 102}, {8769, 0, 129, 127, 0, 19, 102}, + {8770, 0, 129, 127, 0, 19, 102}, {8771, 0, 129, 127, 0, 19, 102}, + {8772, 0, 129, 127, 0, 19, 102}, {8773, 0, 129, 127, 0, 19, 102}, + {8774, 0, 129, 127, 0, 19, 102}, {8775, 0, 129, 127, 0, 19, 102}, + {8776, 0, 129, 127, 0, 19, 102}, {8777, 0, 129, 127, 0, 19, 102}, + {8778, 0, 129, 127, 0, 19, 102}, {8779, 0, 129, 127, 0, 19, 114}, + {8780, 0, 129, 127, 0, 19, 108}, {8781, 0, 129, 127, 0, 19, 114}, + {8782, 0, 129, 127, 0, 13, 114}, {8783, 0, 129, 127, 0, 19, 108}, + {8784, 0, 129, 127, 0, 13, 114}, {8785, 0, 129, 127, 0, 19, 108}, + {8786, 0, 129, 127, 0, 19, 108}, {8787, 0, 129, 127, 0, 19, 108}, + {8788, 0, 129, 127, 0, 19, 108}, {8789, 0, 129, 127, 0, 19, 108}, + {8790, 0, 129, 127, 0, 19, 108}, {8791, 0, 129, 127, 0, 19, 108}, + {8792, 0, 129, 127, 0, 19, 108}, {8793, 0, 129, 127, 0, 19, 108}, + {8794, 0, 129, 127, 0, 19, 108}, {8795, 0, 129, 127, 0, 19, 108}, + {8796, 0, 129, 127, 0, 19, 108}, {8797, 0, 129, 127, 0, 19, 108}, + {8798, 0, 129, 127, 0, 19, 108}, {8799, 0, 129, 127, 0, 19, 108}, + {8800, 0, 129, 127, 0, 19, 108}, {8801, 0, 129, 127, 0, 19, 108}, + {8802, 0, 129, 127, 0, 19, 108}, {8803, 0, 129, 127, 0, 19, 108}, + {8804, 0, 129, 127, 0, 19, 108}, {8805, 0, 129, 127, 0, 19, 108}, + {8806, 0, 129, 127, 0, 19, 108}, {8807, 0, 129, 127, 0, 19, 108}, + {8808, 0, 129, 127, 0, 19, 108}, {8809, 0, 129, 127, 0, 19, 108}, + {8810, 0, 129, 127, 0, 19, 108}, {8811, 0, 129, 127, 0, 19, 114}, + {8812, 0, 129, 127, 0, 19, 102}, {8813, 0, 129, 127, 0, 19, 114}, + {8814, 0, 129, 127, 0, 76, 102}, {8815, 0, 129, 127, 0, 13, 121}, + {8816, 0, 129, 127, 0, 19, 114}, {8817, 0, 129, 127, 0, 19, 127}, + {8818, 0, 129, 127, 0, 19, 114}, {8819, 0, 129, 127, 0, 218, 108}, +}; + +int CompareCIDTransform(const void* key, const void* element) { + FX_WORD CID = *static_cast(key); + return CID - static_cast(element)->CID; +} + +} // namespace + +CPDF_CMapManager::CPDF_CMapManager() { + m_bPrompted = FALSE; + FXSYS_memset(m_CID2UnicodeMaps, 0, sizeof m_CID2UnicodeMaps); +} +CPDF_CMapManager::~CPDF_CMapManager() { + for (const auto& pair : m_CMaps) { + delete pair.second; + } + m_CMaps.clear(); + for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { + delete m_CID2UnicodeMaps[i]; + } +} +CPDF_CMap* CPDF_CMapManager::GetPredefinedCMap(const CFX_ByteString& name, + FX_BOOL bPromptCJK) { + auto it = m_CMaps.find(name); + if (it != m_CMaps.end()) { + return it->second; + } + CPDF_CMap* pCMap = LoadPredefinedCMap(name, bPromptCJK); + if (!name.IsEmpty()) { + m_CMaps[name] = pCMap; + } + return pCMap; +} +CPDF_CMap* CPDF_CMapManager::LoadPredefinedCMap(const CFX_ByteString& name, + FX_BOOL bPromptCJK) { + CPDF_CMap* pCMap = new CPDF_CMap; + const FX_CHAR* pname = name; + if (*pname == '/') { + pname++; + } + pCMap->LoadPredefined(this, pname, bPromptCJK); + return pCMap; +} + +void CPDF_CMapManager::ReloadAll() { + for (const auto& pair : m_CMaps) { + CPDF_CMap* pCMap = pair.second; + pCMap->LoadPredefined(this, pair.first, FALSE); + } + for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { + if (CPDF_CID2UnicodeMap* pMap = m_CID2UnicodeMaps[i]) { + pMap->Load(this, CIDSetFromSizeT(i), FALSE); + } + } +} +CPDF_CID2UnicodeMap* CPDF_CMapManager::GetCID2UnicodeMap(CIDSet charset, + FX_BOOL bPromptCJK) { + if (!m_CID2UnicodeMaps[charset]) + m_CID2UnicodeMaps[charset] = LoadCID2UnicodeMap(charset, bPromptCJK); + return m_CID2UnicodeMaps[charset]; +} +CPDF_CID2UnicodeMap* CPDF_CMapManager::LoadCID2UnicodeMap(CIDSet charset, + FX_BOOL bPromptCJK) { + CPDF_CID2UnicodeMap* pMap = new CPDF_CID2UnicodeMap(); + if (!pMap->Initialize()) { + delete pMap; + return NULL; + } + pMap->Load(this, charset, bPromptCJK); + return pMap; +} +CPDF_CMapParser::CPDF_CMapParser() { + m_pCMap = NULL; + m_Status = 0; + m_CodeSeq = 0; +} +FX_BOOL CPDF_CMapParser::Initialize(CPDF_CMap* pCMap) { + m_pCMap = pCMap; + m_Status = 0; + m_CodeSeq = 0; + m_AddMaps.EstimateSize(0, 10240); + return TRUE; +} + +void CPDF_CMapParser::ParseWord(const CFX_ByteStringC& word) { + if (word.IsEmpty()) { + return; + } + if (word == "begincidchar") { + m_Status = 1; + m_CodeSeq = 0; + } else if (word == "begincidrange") { + m_Status = 2; + m_CodeSeq = 0; + } else if (word == "endcidrange" || word == "endcidchar") { + m_Status = 0; + } else if (word == "/WMode") { + m_Status = 6; + } else if (word == "/Registry") { + m_Status = 3; + } else if (word == "/Ordering") { + m_Status = 4; + } else if (word == "/Supplement") { + m_Status = 5; + } else if (word == "begincodespacerange") { + m_Status = 7; + m_CodeSeq = 0; + } else if (word == "usecmap") { + } else if (m_Status == 1 || m_Status == 2) { + m_CodePoints[m_CodeSeq] = CMap_GetCode(word); + m_CodeSeq++; + FX_DWORD StartCode, EndCode; + FX_WORD StartCID; + if (m_Status == 1) { + if (m_CodeSeq < 2) { + return; + } + EndCode = StartCode = m_CodePoints[0]; + StartCID = (FX_WORD)m_CodePoints[1]; + } else { + if (m_CodeSeq < 3) { + return; + } + StartCode = m_CodePoints[0]; + EndCode = m_CodePoints[1]; + StartCID = (FX_WORD)m_CodePoints[2]; + } + if (EndCode < 0x10000) { + for (FX_DWORD code = StartCode; code <= EndCode; code++) { + m_pCMap->m_pMapping[code] = (FX_WORD)(StartCID + code - StartCode); + } + } else { + FX_DWORD buf[2]; + buf[0] = StartCode; + buf[1] = ((EndCode - StartCode) << 16) + StartCID; + m_AddMaps.AppendBlock(buf, sizeof buf); + } + m_CodeSeq = 0; + } else if (m_Status == 3) { + CMap_GetString(word); + m_Status = 0; + } else if (m_Status == 4) { + m_pCMap->m_Charset = CharsetFromOrdering(CMap_GetString(word)); + m_Status = 0; + } else if (m_Status == 5) { + CMap_GetCode(word); + m_Status = 0; + } else if (m_Status == 6) { + m_pCMap->m_bVertical = CMap_GetCode(word); + m_Status = 0; + } else if (m_Status == 7) { + if (word == "endcodespacerange") { + int nSegs = m_CodeRanges.GetSize(); + if (nSegs > 1) { + m_pCMap->m_CodingScheme = CPDF_CMap::MixedFourBytes; + m_pCMap->m_nCodeRanges = nSegs; + m_pCMap->m_pLeadingBytes = + FX_Alloc2D(uint8_t, nSegs, sizeof(CMap_CodeRange)); + FXSYS_memcpy(m_pCMap->m_pLeadingBytes, m_CodeRanges.GetData(), + nSegs * sizeof(CMap_CodeRange)); + } else if (nSegs == 1) { + m_pCMap->m_CodingScheme = (m_CodeRanges[0].m_CharSize == 2) + ? CPDF_CMap::TwoBytes + : CPDF_CMap::OneByte; + } + m_Status = 0; + } else { + if (word.GetLength() == 0 || word.GetAt(0) != '<') { + return; + } + if (m_CodeSeq % 2) { + CMap_CodeRange range; + if (CMap_GetCodeRange(range, m_LastWord, word)) { + m_CodeRanges.Add(range); + } + } + m_CodeSeq++; + } + } + m_LastWord = word; +} + +// Static. +FX_DWORD CPDF_CMapParser::CMap_GetCode(const CFX_ByteStringC& word) { + int num = 0; + if (word.GetAt(0) == '<') { + for (int i = 1; i < word.GetLength() && std::isxdigit(word.GetAt(i)); ++i) + num = num * 16 + FXSYS_toHexDigit(word.GetAt(i)); + return num; + } + + for (int i = 0; i < word.GetLength() && std::isdigit(word.GetAt(i)); ++i) + num = num * 10 + FXSYS_toDecimalDigit(static_cast(word.GetAt(i))); + return num; +} + +// Static. +bool CPDF_CMapParser::CMap_GetCodeRange(CMap_CodeRange& range, + const CFX_ByteStringC& first, + const CFX_ByteStringC& second) { + if (first.GetLength() == 0 || first.GetAt(0) != '<') + return false; + + int i; + for (i = 1; i < first.GetLength(); ++i) { + if (first.GetAt(i) == '>') { + break; + } + } + range.m_CharSize = (i - 1) / 2; + if (range.m_CharSize > 4) + return false; + + for (i = 0; i < range.m_CharSize; ++i) { + uint8_t digit1 = first.GetAt(i * 2 + 1); + uint8_t digit2 = first.GetAt(i * 2 + 2); + range.m_Lower[i] = FXSYS_toHexDigit(digit1) * 16 + FXSYS_toHexDigit(digit2); + } + + FX_DWORD size = second.GetLength(); + for (i = 0; i < range.m_CharSize; ++i) { + uint8_t digit1 = ((FX_DWORD)i * 2 + 1 < size) + ? second.GetAt((FX_STRSIZE)i * 2 + 1) + : '0'; + uint8_t digit2 = ((FX_DWORD)i * 2 + 2 < size) + ? second.GetAt((FX_STRSIZE)i * 2 + 2) + : '0'; + range.m_Upper[i] = FXSYS_toHexDigit(digit1) * 16 + FXSYS_toHexDigit(digit2); + } + return true; +} + +CPDF_CMap::CPDF_CMap() { + m_Charset = CIDSET_UNKNOWN; + m_Coding = CIDCODING_UNKNOWN; + m_CodingScheme = TwoBytes; + m_bVertical = 0; + m_bLoaded = FALSE; + m_pMapping = NULL; + m_pLeadingBytes = NULL; + m_pAddMapping = NULL; + m_pEmbedMap = NULL; + m_pUseMap = NULL; + m_nCodeRanges = 0; +} +CPDF_CMap::~CPDF_CMap() { + FX_Free(m_pMapping); + FX_Free(m_pAddMapping); + FX_Free(m_pLeadingBytes); + delete m_pUseMap; +} +void CPDF_CMap::Release() { + if (m_PredefinedCMap.IsEmpty()) { + delete this; + } +} + +FX_BOOL CPDF_CMap::LoadPredefined(CPDF_CMapManager* pMgr, + const FX_CHAR* pName, + FX_BOOL bPromptCJK) { + m_PredefinedCMap = pName; + if (m_PredefinedCMap == "Identity-H" || m_PredefinedCMap == "Identity-V") { + m_Coding = CIDCODING_CID; + m_bVertical = pName[9] == 'V'; + m_bLoaded = TRUE; + return TRUE; + } + CFX_ByteString cmapid = m_PredefinedCMap; + m_bVertical = cmapid.Right(1) == "V"; + if (cmapid.GetLength() > 2) { + cmapid = cmapid.Left(cmapid.GetLength() - 2); + } + const CPDF_PredefinedCMap* map = nullptr; + for (size_t i = 0; i < FX_ArraySize(g_PredefinedCMaps); ++i) { + if (cmapid == CFX_ByteStringC(g_PredefinedCMaps[i].m_pName)) { + map = &g_PredefinedCMaps[i]; + break; + } + } + if (!map) + return FALSE; + + m_Charset = map->m_Charset; + m_Coding = map->m_Coding; + m_CodingScheme = map->m_CodingScheme; + if (m_CodingScheme == MixedTwoBytes) { + m_pLeadingBytes = FX_Alloc(uint8_t, 256); + for (FX_DWORD i = 0; i < map->m_LeadingSegCount; ++i) { + const uint8_t* segs = map->m_LeadingSegs; + for (int b = segs[i * 2]; b <= segs[i * 2 + 1]; ++b) { + m_pLeadingBytes[b] = 1; + } + } + } + FPDFAPI_FindEmbeddedCMap(pName, m_Charset, m_Coding, m_pEmbedMap); + if (m_pEmbedMap) { + m_bLoaded = TRUE; + return TRUE; + } + return FALSE; +} +FX_BOOL CPDF_CMap::LoadEmbedded(const uint8_t* pData, FX_DWORD size) { + m_pMapping = FX_Alloc(FX_WORD, 65536); + CPDF_CMapParser parser; + parser.Initialize(this); + CPDF_SimpleParser syntax(pData, size); + while (1) { + CFX_ByteStringC word = syntax.GetWord(); + if (word.IsEmpty()) { + break; + } + parser.ParseWord(word); + } + if (m_CodingScheme == MixedFourBytes && parser.m_AddMaps.GetSize()) { + m_pAddMapping = FX_Alloc(uint8_t, parser.m_AddMaps.GetSize() + 4); + *(FX_DWORD*)m_pAddMapping = parser.m_AddMaps.GetSize() / 8; + FXSYS_memcpy(m_pAddMapping + 4, parser.m_AddMaps.GetBuffer(), + parser.m_AddMaps.GetSize()); + FXSYS_qsort(m_pAddMapping + 4, parser.m_AddMaps.GetSize() / 8, 8, + CompareDWORD); + } + return TRUE; +} + +FX_WORD CPDF_CMap::CIDFromCharCode(FX_DWORD charcode) const { + if (m_Coding == CIDCODING_CID) { + return (FX_WORD)charcode; + } + if (m_pEmbedMap) { + return FPDFAPI_CIDFromCharCode(m_pEmbedMap, charcode); + } + if (!m_pMapping) { + return (FX_WORD)charcode; + } + if (charcode >> 16) { + if (m_pAddMapping) { + void* found = FXSYS_bsearch(&charcode, m_pAddMapping + 4, + *(FX_DWORD*)m_pAddMapping, 8, CompareCID); + if (!found) { + if (m_pUseMap) { + return m_pUseMap->CIDFromCharCode(charcode); + } + return 0; + } + return (FX_WORD)(((FX_DWORD*)found)[1] % 65536 + charcode - + *(FX_DWORD*)found); + } + if (m_pUseMap) + return m_pUseMap->CIDFromCharCode(charcode); + return 0; + } + FX_DWORD CID = m_pMapping[charcode]; + if (!CID && m_pUseMap) + return m_pUseMap->CIDFromCharCode(charcode); + return (FX_WORD)CID; +} + +FX_DWORD CPDF_CMap::GetNextChar(const FX_CHAR* pString, + int nStrLen, + int& offset) const { + switch (m_CodingScheme) { + case OneByte: + return ((uint8_t*)pString)[offset++]; + case TwoBytes: + offset += 2; + return ((uint8_t*)pString)[offset - 2] * 256 + + ((uint8_t*)pString)[offset - 1]; + case MixedTwoBytes: { + uint8_t byte1 = ((uint8_t*)pString)[offset++]; + if (!m_pLeadingBytes[byte1]) { + return byte1; + } + uint8_t byte2 = ((uint8_t*)pString)[offset++]; + return byte1 * 256 + byte2; + } + case MixedFourBytes: { + uint8_t codes[4]; + int char_size = 1; + codes[0] = ((uint8_t*)pString)[offset++]; + CMap_CodeRange* pRanges = (CMap_CodeRange*)m_pLeadingBytes; + while (1) { + int ret = CheckCodeRange(codes, char_size, pRanges, m_nCodeRanges); + if (ret == 0) { + return 0; + } + if (ret == 2) { + FX_DWORD charcode = 0; + for (int i = 0; i < char_size; i++) { + charcode = (charcode << 8) + codes[i]; + } + return charcode; + } + if (char_size == 4 || offset == nStrLen) { + return 0; + } + codes[char_size++] = ((uint8_t*)pString)[offset++]; + } + break; + } + } + return 0; +} +int CPDF_CMap::GetCharSize(FX_DWORD charcode) const { + switch (m_CodingScheme) { + case OneByte: + return 1; + case TwoBytes: + return 2; + case MixedTwoBytes: + case MixedFourBytes: + if (charcode < 0x100) { + return 1; + } + if (charcode < 0x10000) { + return 2; + } + if (charcode < 0x1000000) { + return 3; + } + return 4; + } + return 1; +} +int CPDF_CMap::CountChar(const FX_CHAR* pString, int size) const { + switch (m_CodingScheme) { + case OneByte: + return size; + case TwoBytes: + return (size + 1) / 2; + case MixedTwoBytes: { + int count = 0; + for (int i = 0; i < size; i++) { + count++; + if (m_pLeadingBytes[((uint8_t*)pString)[i]]) { + i++; + } + } + return count; + } + case MixedFourBytes: { + int count = 0, offset = 0; + while (offset < size) { + GetNextChar(pString, size, offset); + count++; + } + return count; + } + } + return size; +} + +int CPDF_CMap::AppendChar(FX_CHAR* str, FX_DWORD charcode) const { + switch (m_CodingScheme) { + case OneByte: + str[0] = (uint8_t)charcode; + return 1; + case TwoBytes: + str[0] = (uint8_t)(charcode / 256); + str[1] = (uint8_t)(charcode % 256); + return 2; + case MixedTwoBytes: + case MixedFourBytes: + if (charcode < 0x100) { + CMap_CodeRange* pRanges = (CMap_CodeRange*)m_pLeadingBytes; + int iSize = GetCharSizeImpl(charcode, pRanges, m_nCodeRanges); + if (iSize == 0) { + iSize = 1; + } + if (iSize > 1) { + FXSYS_memset(str, 0, sizeof(uint8_t) * iSize); + } + str[iSize - 1] = (uint8_t)charcode; + return iSize; + } + if (charcode < 0x10000) { + str[0] = (uint8_t)(charcode >> 8); + str[1] = (uint8_t)charcode; + return 2; + } + if (charcode < 0x1000000) { + str[0] = (uint8_t)(charcode >> 16); + str[1] = (uint8_t)(charcode >> 8); + str[2] = (uint8_t)charcode; + return 3; + } + str[0] = (uint8_t)(charcode >> 24); + str[1] = (uint8_t)(charcode >> 16); + str[2] = (uint8_t)(charcode >> 8); + str[3] = (uint8_t)charcode; + return 4; + } + return 0; +} +CPDF_CID2UnicodeMap::CPDF_CID2UnicodeMap() { + m_EmbeddedCount = 0; +} +CPDF_CID2UnicodeMap::~CPDF_CID2UnicodeMap() {} +FX_BOOL CPDF_CID2UnicodeMap::Initialize() { + return TRUE; +} +FX_BOOL CPDF_CID2UnicodeMap::IsLoaded() { + return m_EmbeddedCount != 0; +} +FX_WCHAR CPDF_CID2UnicodeMap::UnicodeFromCID(FX_WORD CID) { + if (m_Charset == CIDSET_UNICODE) { + return CID; + } + if (CID < m_EmbeddedCount) { + return m_pEmbeddedMap[CID]; + } + return 0; +} + +void CPDF_CID2UnicodeMap::Load(CPDF_CMapManager* pMgr, + CIDSet charset, + FX_BOOL bPromptCJK) { + m_Charset = charset; + FPDFAPI_LoadCID2UnicodeMap(charset, m_pEmbeddedMap, m_EmbeddedCount); +} + +CPDF_CIDFont::CPDF_CIDFont() + : m_pCMap(nullptr), + m_pAllocatedCMap(nullptr), + m_pCID2UnicodeMap(nullptr), + m_pCIDToGIDMap(nullptr), + m_bCIDIsGID(FALSE), + m_pAnsiWidths(nullptr), + m_bAdobeCourierStd(FALSE), + m_pTTGSUBTable(nullptr) {} + +CPDF_CIDFont::~CPDF_CIDFont() { + if (m_pAnsiWidths) { + FX_Free(m_pAnsiWidths); + } + delete m_pAllocatedCMap; + delete m_pCIDToGIDMap; + delete m_pTTGSUBTable; +} + +bool CPDF_CIDFont::IsCIDFont() const { + return true; +} + +const CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() const { + return this; +} + +CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() { + return this; +} + +FX_WORD CPDF_CIDFont::CIDFromCharCode(FX_DWORD charcode) const { + if (!m_pCMap) { + return (FX_WORD)charcode; + } + return m_pCMap->CIDFromCharCode(charcode); +} + +FX_BOOL CPDF_CIDFont::IsVertWriting() const { + return m_pCMap ? m_pCMap->IsVertWriting() : FALSE; +} + +CFX_WideString CPDF_CIDFont::UnicodeFromCharCode(FX_DWORD charcode) const { + CFX_WideString str = CPDF_Font::UnicodeFromCharCode(charcode); + if (!str.IsEmpty()) + return str; + FX_WCHAR ret = GetUnicodeFromCharCode(charcode); + if (ret == 0) + return CFX_WideString(); + return ret; +} + +FX_WCHAR CPDF_CIDFont::GetUnicodeFromCharCode(FX_DWORD charcode) const { + switch (m_pCMap->m_Coding) { + case CIDCODING_UCS2: + case CIDCODING_UTF16: + return (FX_WCHAR)charcode; + case CIDCODING_CID: + if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) { + return 0; + } + return m_pCID2UnicodeMap->UnicodeFromCID((FX_WORD)charcode); + } + if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap || + !m_pCID2UnicodeMap->IsLoaded()) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + FX_WCHAR unicode; + int charsize = 1; + if (charcode > 255) { + charcode = (charcode % 256) * 256 + (charcode / 256); + charsize = 2; + } + int ret = FXSYS_MultiByteToWideChar(g_CharsetCPs[m_pCMap->m_Coding], 0, + (const FX_CHAR*)&charcode, charsize, + &unicode, 1); + if (ret != 1) { + return 0; + } + return unicode; +#endif + if (m_pCMap->m_pEmbedMap) { + return EmbeddedUnicodeFromCharcode(m_pCMap->m_pEmbedMap, + m_pCMap->m_Charset, charcode); + } + return 0; + } + return m_pCID2UnicodeMap->UnicodeFromCID(CIDFromCharCode(charcode)); +} + +FX_DWORD CPDF_CIDFont::CharCodeFromUnicode(FX_WCHAR unicode) const { + FX_DWORD charcode = CPDF_Font::CharCodeFromUnicode(unicode); + if (charcode) + return charcode; + switch (m_pCMap->m_Coding) { + case CIDCODING_UNKNOWN: + return 0; + case CIDCODING_UCS2: + case CIDCODING_UTF16: + return unicode; + case CIDCODING_CID: { + if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) { + return 0; + } + FX_DWORD CID = 0; + while (CID < 65536) { + FX_WCHAR this_unicode = m_pCID2UnicodeMap->UnicodeFromCID((FX_WORD)CID); + if (this_unicode == unicode) { + return CID; + } + CID++; + } + break; + } + } + + if (unicode < 0x80) { + return static_cast(unicode); + } + if (m_pCMap->m_Coding == CIDCODING_CID) { + return 0; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + uint8_t buffer[32]; + int ret = + FXSYS_WideCharToMultiByte(g_CharsetCPs[m_pCMap->m_Coding], 0, &unicode, 1, + (char*)buffer, 4, NULL, NULL); + if (ret == 1) { + return buffer[0]; + } + if (ret == 2) { + return buffer[0] * 256 + buffer[1]; + } +#else + if (m_pCMap->m_pEmbedMap) { + return EmbeddedCharcodeFromUnicode(m_pCMap->m_pEmbedMap, m_pCMap->m_Charset, + unicode); + } +#endif + return 0; +} + +FX_BOOL CPDF_CIDFont::Load() { + if (m_pFontDict->GetStringBy("Subtype") == "TrueType") { + return LoadGB2312(); + } + CPDF_Array* pFonts = m_pFontDict->GetArrayBy("DescendantFonts"); + if (!pFonts) { + return FALSE; + } + if (pFonts->GetCount() != 1) { + return FALSE; + } + CPDF_Dictionary* pCIDFontDict = pFonts->GetDictAt(0); + if (!pCIDFontDict) { + return FALSE; + } + m_BaseFont = pCIDFontDict->GetStringBy("BaseFont"); + if ((m_BaseFont.Compare("CourierStd") == 0 || + m_BaseFont.Compare("CourierStd-Bold") == 0 || + m_BaseFont.Compare("CourierStd-BoldOblique") == 0 || + m_BaseFont.Compare("CourierStd-Oblique") == 0) && + !IsEmbedded()) { + m_bAdobeCourierStd = TRUE; + } + CPDF_Dictionary* pFontDesc = pCIDFontDict->GetDictBy("FontDescriptor"); + if (pFontDesc) { + LoadFontDescriptor(pFontDesc); + } + CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); + if (!pEncoding) { + return FALSE; + } + CFX_ByteString subtype = pCIDFontDict->GetStringBy("Subtype"); + m_bType1 = (subtype == "CIDFontType0"); + + if (pEncoding->IsName()) { + CFX_ByteString cmap = pEncoding->GetString(); + m_pCMap = + CPDF_ModuleMgr::Get() + ->GetPageModule() + ->GetFontGlobals() + ->m_CMapManager.GetPredefinedCMap(cmap, m_pFontFile && m_bType1); + } else if (CPDF_Stream* pStream = pEncoding->AsStream()) { + m_pAllocatedCMap = m_pCMap = new CPDF_CMap; + CPDF_StreamAcc acc; + acc.LoadAllData(pStream, FALSE); + m_pCMap->LoadEmbedded(acc.GetData(), acc.GetSize()); + } else { + return FALSE; + } + if (!m_pCMap) { + return FALSE; + } + m_Charset = m_pCMap->m_Charset; + if (m_Charset == CIDSET_UNKNOWN) { + CPDF_Dictionary* pCIDInfo = pCIDFontDict->GetDictBy("CIDSystemInfo"); + if (pCIDInfo) { + m_Charset = CharsetFromOrdering(pCIDInfo->GetStringBy("Ordering")); + } + } + if (m_Charset != CIDSET_UNKNOWN) + m_pCID2UnicodeMap = + CPDF_ModuleMgr::Get() + ->GetPageModule() + ->GetFontGlobals() + ->m_CMapManager.GetCID2UnicodeMap( + m_Charset, + !m_pFontFile && (m_pCMap->m_Coding == CIDCODING_CID || + pCIDFontDict->KeyExist("W"))); + if (m_Font.GetFace()) { + if (m_bType1) { + FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE); + } else { + FT_UseCIDCharmap(m_Font.GetFace(), m_pCMap->m_Coding); + } + } + m_DefaultWidth = pCIDFontDict->GetIntegerBy("DW", 1000); + CPDF_Array* pWidthArray = pCIDFontDict->GetArrayBy("W"); + if (pWidthArray) { + LoadMetricsArray(pWidthArray, m_WidthList, 1); + } + if (!IsEmbedded()) { + LoadSubstFont(); + } + if (1) { + if (m_pFontFile || (GetSubstFont()->m_SubstFlags & FXFONT_SUBST_EXACT)) { + CPDF_Object* pmap = pCIDFontDict->GetElementValue("CIDToGIDMap"); + if (pmap) { + if (CPDF_Stream* pStream = pmap->AsStream()) { + m_pCIDToGIDMap = new CPDF_StreamAcc; + m_pCIDToGIDMap->LoadAllData(pStream, FALSE); + } else if (pmap->GetString() == "Identity") { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (m_pFontFile) { + m_bCIDIsGID = TRUE; + } +#else + m_bCIDIsGID = TRUE; +#endif + } + } + } + } + CheckFontMetrics(); + if (IsVertWriting()) { + pWidthArray = pCIDFontDict->GetArrayBy("W2"); + if (pWidthArray) { + LoadMetricsArray(pWidthArray, m_VertMetrics, 3); + } + CPDF_Array* pDefaultArray = pCIDFontDict->GetArrayBy("DW2"); + if (pDefaultArray) { + m_DefaultVY = pDefaultArray->GetIntegerAt(0); + m_DefaultW1 = pDefaultArray->GetIntegerAt(1); + } else { + m_DefaultVY = 880; + m_DefaultW1 = -1000; + } + } + return TRUE; +} + +FX_RECT CPDF_CIDFont::GetCharBBox(FX_DWORD charcode, int level) { + if (charcode < 256 && m_CharBBox[charcode].right != FX_SMALL_RECT::kInvalid) + return FX_RECT(m_CharBBox[charcode]); + + FX_RECT rect; + FX_BOOL bVert = FALSE; + int glyph_index = GlyphFromCharCode(charcode, &bVert); + FXFT_Face face = m_Font.GetFace(); + if (face) { + if (FXFT_Is_Face_Tricky(face)) { + int err = FXFT_Load_Glyph(face, glyph_index, + FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + if (!err) { + FXFT_BBox cbox; + FXFT_Glyph glyph; + err = FXFT_Get_Glyph(((FXFT_Face)face)->glyph, &glyph); + if (!err) { + FXFT_Glyph_Get_CBox(glyph, FXFT_GLYPH_BBOX_PIXELS, &cbox); + int pixel_size_x = ((FXFT_Face)face)->size->metrics.x_ppem; + int pixel_size_y = ((FXFT_Face)face)->size->metrics.y_ppem; + if (pixel_size_x == 0 || pixel_size_y == 0) { + rect = FX_RECT(cbox.xMin, cbox.yMax, cbox.xMax, cbox.yMin); + } else { + rect = FX_RECT(cbox.xMin * 1000 / pixel_size_x, + cbox.yMax * 1000 / pixel_size_y, + cbox.xMax * 1000 / pixel_size_x, + cbox.yMin * 1000 / pixel_size_y); + } + if (rect.top > FXFT_Get_Face_Ascender(face)) { + rect.top = FXFT_Get_Face_Ascender(face); + } + if (rect.bottom < FXFT_Get_Face_Descender(face)) { + rect.bottom = FXFT_Get_Face_Descender(face); + } + FXFT_Done_Glyph(glyph); + } + } + } else { + int err = FXFT_Load_Glyph(face, glyph_index, FXFT_LOAD_NO_SCALE); + if (err == 0) { + rect = FX_RECT(TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face), + TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face), + TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) + + FXFT_Get_Glyph_Width(face), + face), + TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) - + FXFT_Get_Glyph_Height(face), + face)); + rect.top += rect.top / 64; + } + } + } + if (!m_pFontFile && m_Charset == CIDSET_JAPAN1) { + FX_WORD CID = CIDFromCharCode(charcode); + const uint8_t* pTransform = GetCIDTransform(CID); + if (pTransform && !bVert) { + CFX_Matrix matrix(CIDTransformToFloat(pTransform[0]), + CIDTransformToFloat(pTransform[1]), + CIDTransformToFloat(pTransform[2]), + CIDTransformToFloat(pTransform[3]), + CIDTransformToFloat(pTransform[4]) * 1000, + CIDTransformToFloat(pTransform[5]) * 1000); + CFX_FloatRect rect_f(rect); + rect_f.Transform(&matrix); + rect = rect_f.GetOutterRect(); + } + } + if (charcode < 256) + m_CharBBox[charcode] = rect.ToSmallRect(); + + return rect; +} +int CPDF_CIDFont::GetCharWidthF(FX_DWORD charcode, int level) { + if (m_pAnsiWidths && charcode < 0x80) { + return m_pAnsiWidths[charcode]; + } + FX_WORD cid = CIDFromCharCode(charcode); + int size = m_WidthList.GetSize(); + FX_DWORD* list = m_WidthList.GetData(); + for (int i = 0; i < size; i += 3) { + if (cid >= list[i] && cid <= list[i + 1]) { + return (int)list[i + 2]; + } + } + return m_DefaultWidth; +} +short CPDF_CIDFont::GetVertWidth(FX_WORD CID) const { + FX_DWORD vertsize = m_VertMetrics.GetSize() / 5; + if (vertsize == 0) { + return m_DefaultW1; + } + const FX_DWORD* pTable = m_VertMetrics.GetData(); + for (FX_DWORD i = 0; i < vertsize; i++) + if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) { + return (short)(int)pTable[i * 5 + 2]; + } + return m_DefaultW1; +} +void CPDF_CIDFont::GetVertOrigin(FX_WORD CID, short& vx, short& vy) const { + FX_DWORD vertsize = m_VertMetrics.GetSize() / 5; + if (vertsize) { + const FX_DWORD* pTable = m_VertMetrics.GetData(); + for (FX_DWORD i = 0; i < vertsize; i++) + if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) { + vx = (short)(int)pTable[i * 5 + 3]; + vy = (short)(int)pTable[i * 5 + 4]; + return; + } + } + FX_DWORD dwWidth = m_DefaultWidth; + int size = m_WidthList.GetSize(); + const FX_DWORD* list = m_WidthList.GetData(); + for (int i = 0; i < size; i += 3) { + if (CID >= list[i] && CID <= list[i + 1]) { + dwWidth = (FX_WORD)list[i + 2]; + break; + } + } + vx = (short)dwWidth / 2; + vy = (short)m_DefaultVY; +} +int CPDF_CIDFont::GetGlyphIndex(FX_DWORD unicode, FX_BOOL* pVertGlyph) { + if (pVertGlyph) { + *pVertGlyph = FALSE; + } + FXFT_Face face = m_Font.GetFace(); + int index = FXFT_Get_Char_Index(face, unicode); + if (unicode == 0x2502) { + return index; + } + if (index && IsVertWriting()) { + if (m_pTTGSUBTable) { + uint32_t vindex = 0; + m_pTTGSUBTable->GetVerticalGlyph(index, &vindex); + if (vindex) { + index = vindex; + if (pVertGlyph) { + *pVertGlyph = TRUE; + } + } + return index; + } + if (!m_Font.GetSubData()) { + unsigned long length = 0; + int error = FXFT_Load_Sfnt_Table(face, FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, + NULL, &length); + if (!error) { + m_Font.SetSubData(FX_Alloc(uint8_t, length)); + } + } + int error = FXFT_Load_Sfnt_Table(face, FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, + m_Font.GetSubData(), NULL); + if (!error && m_Font.GetSubData()) { + m_pTTGSUBTable = new CFX_CTTGSUBTable; + m_pTTGSUBTable->LoadGSUBTable((FT_Bytes)m_Font.GetSubData()); + uint32_t vindex = 0; + m_pTTGSUBTable->GetVerticalGlyph(index, &vindex); + if (vindex) { + index = vindex; + if (pVertGlyph) { + *pVertGlyph = TRUE; + } + } + } + return index; + } + if (pVertGlyph) { + *pVertGlyph = FALSE; + } + return index; +} +int CPDF_CIDFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) { + if (pVertGlyph) { + *pVertGlyph = FALSE; + } + if (!m_pFontFile && !m_pCIDToGIDMap) { + FX_WORD cid = CIDFromCharCode(charcode); + FX_WCHAR unicode = 0; + if (m_bCIDIsGID) { +#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ + return cid; +#else + if (m_Flags & PDFFONT_SYMBOLIC) { + return cid; + } + CFX_WideString uni_str = UnicodeFromCharCode(charcode); + if (uni_str.IsEmpty()) { + return cid; + } + unicode = uni_str.GetAt(0); +#endif + } else { + if (cid && m_pCID2UnicodeMap && m_pCID2UnicodeMap->IsLoaded()) { + unicode = m_pCID2UnicodeMap->UnicodeFromCID(cid); + } + if (unicode == 0) { + unicode = GetUnicodeFromCharCode(charcode); + } + if (unicode == 0 && !(m_Flags & PDFFONT_SYMBOLIC)) { + unicode = UnicodeFromCharCode(charcode).GetAt(0); + } + } + FXFT_Face face = m_Font.GetFace(); + if (unicode == 0) { + if (!m_bAdobeCourierStd) { + return charcode == 0 ? -1 : (int)charcode; + } + charcode += 31; + int index = 0, iBaseEncoding; + FX_BOOL bMSUnicode = FT_UseTTCharmap(face, 3, 1); + FX_BOOL bMacRoman = FALSE; + if (!bMSUnicode) { + bMacRoman = FT_UseTTCharmap(face, 1, 0); + } + iBaseEncoding = PDFFONT_ENCODING_STANDARD; + if (bMSUnicode) { + iBaseEncoding = PDFFONT_ENCODING_WINANSI; + } else if (bMacRoman) { + iBaseEncoding = PDFFONT_ENCODING_MACROMAN; + } + const FX_CHAR* name = GetAdobeCharName(iBaseEncoding, NULL, charcode); + if (!name) { + return charcode == 0 ? -1 : (int)charcode; + } + FX_WORD unicode = PDF_UnicodeFromAdobeName(name); + if (unicode) { + if (bMSUnicode) { + index = FXFT_Get_Char_Index(face, unicode); + } else if (bMacRoman) { + FX_DWORD maccode = + FT_CharCodeFromUnicode(FXFT_ENCODING_APPLE_ROMAN, unicode); + index = !maccode ? FXFT_Get_Name_Index(face, (char*)name) + : FXFT_Get_Char_Index(face, maccode); + } else { + return FXFT_Get_Char_Index(face, unicode); + } + } else { + return charcode == 0 ? -1 : (int)charcode; + } + if (index == 0 || index == 0xffff) { + return charcode == 0 ? -1 : (int)charcode; + } + return index; + } + if (m_Charset == CIDSET_JAPAN1) { + if (unicode == '\\') { + unicode = '/'; +#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ + } else if (unicode == 0xa5) { + unicode = 0x5c; +#endif + } + } + if (!face) + return unicode; + + int err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE); + if (err != 0) { + int i; + for (i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) { + FX_DWORD ret = FT_CharCodeFromUnicode( + FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]), + (FX_WCHAR)charcode); + if (ret == 0) { + continue; + } + FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]); + unicode = (FX_WCHAR)ret; + break; + } + if (i == FXFT_Get_Face_CharmapCount(face) && i) { + FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]); + unicode = (FX_WCHAR)charcode; + } + } + if (FXFT_Get_Face_Charmap(face)) { + int index = GetGlyphIndex(unicode, pVertGlyph); + if (index == 0) + return -1; + return index; + } + return unicode; + } + if (!m_Font.GetFace()) + return -1; + + FX_WORD cid = CIDFromCharCode(charcode); + if (m_bType1) { + if (!m_pCIDToGIDMap) { + return cid; + } + } else { + if (!m_pCIDToGIDMap) { + if (m_pFontFile && !m_pCMap->m_pMapping) + return cid; + if (m_pCMap->m_Coding == CIDCODING_UNKNOWN || + !FXFT_Get_Face_Charmap(m_Font.GetFace())) { + return cid; + } + if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmap(m_Font.GetFace())) == + FXFT_ENCODING_UNICODE) { + CFX_WideString unicode_str = UnicodeFromCharCode(charcode); + if (unicode_str.IsEmpty()) { + return -1; + } + charcode = unicode_str.GetAt(0); + } + return GetGlyphIndex(charcode, pVertGlyph); + } + } + FX_DWORD byte_pos = cid * 2; + if (byte_pos + 2 > m_pCIDToGIDMap->GetSize()) + return -1; + + const uint8_t* pdata = m_pCIDToGIDMap->GetData() + byte_pos; + return pdata[0] * 256 + pdata[1]; +} +FX_DWORD CPDF_CIDFont::GetNextChar(const FX_CHAR* pString, + int nStrLen, + int& offset) const { + return m_pCMap->GetNextChar(pString, nStrLen, offset); +} +int CPDF_CIDFont::GetCharSize(FX_DWORD charcode) const { + return m_pCMap->GetCharSize(charcode); +} +int CPDF_CIDFont::CountChar(const FX_CHAR* pString, int size) const { + return m_pCMap->CountChar(pString, size); +} +int CPDF_CIDFont::AppendChar(FX_CHAR* str, FX_DWORD charcode) const { + return m_pCMap->AppendChar(str, charcode); +} +FX_BOOL CPDF_CIDFont::IsUnicodeCompatible() const { + if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap || + !m_pCID2UnicodeMap->IsLoaded()) { + return m_pCMap->m_Coding != CIDCODING_UNKNOWN; + } + return TRUE; +} +FX_BOOL CPDF_CIDFont::IsFontStyleFromCharCode(FX_DWORD charcode) const { + return TRUE; +} +void CPDF_CIDFont::LoadSubstFont() { + m_Font.LoadSubst(m_BaseFont, !m_bType1, m_Flags, m_StemV * 5, m_ItalicAngle, + g_CharsetCPs[m_Charset], IsVertWriting()); +} +void CPDF_CIDFont::LoadMetricsArray(CPDF_Array* pArray, + CFX_DWordArray& result, + int nElements) { + int width_status = 0; + int iCurElement = 0; + int first_code = 0, last_code; + FX_DWORD count = pArray->GetCount(); + for (FX_DWORD i = 0; i < count; i++) { + CPDF_Object* pObj = pArray->GetElementValue(i); + if (!pObj) + continue; + + if (CPDF_Array* pArray = pObj->AsArray()) { + if (width_status != 1) + return; + + FX_DWORD count = pArray->GetCount(); + for (FX_DWORD j = 0; j < count; j += nElements) { + result.Add(first_code); + result.Add(first_code); + for (int k = 0; k < nElements; k++) { + result.Add(pArray->GetIntegerAt(j + k)); + } + first_code++; + } + width_status = 0; + } else { + if (width_status == 0) { + first_code = pObj->GetInteger(); + width_status = 1; + } else if (width_status == 1) { + last_code = pObj->GetInteger(); + width_status = 2; + iCurElement = 0; + } else { + if (!iCurElement) { + result.Add(first_code); + result.Add(last_code); + } + result.Add(pObj->GetInteger()); + iCurElement++; + if (iCurElement == nElements) { + width_status = 0; + } + } + } + } +} + +// static +FX_FLOAT CPDF_CIDFont::CIDTransformToFloat(uint8_t ch) { + if (ch < 128) { + return ch * 1.0f / 127; + } + return (-255 + ch) * 1.0f / 127; +} + +FX_BOOL CPDF_CIDFont::LoadGB2312() { + m_BaseFont = m_pFontDict->GetStringBy("BaseFont"); + CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor"); + if (pFontDesc) { + LoadFontDescriptor(pFontDesc); + } + m_Charset = CIDSET_GB1; + m_bType1 = FALSE; + m_pCMap = CPDF_ModuleMgr::Get() + ->GetPageModule() + ->GetFontGlobals() + ->m_CMapManager.GetPredefinedCMap("GBK-EUC-H", FALSE); + m_pCID2UnicodeMap = CPDF_ModuleMgr::Get() + ->GetPageModule() + ->GetFontGlobals() + ->m_CMapManager.GetCID2UnicodeMap(m_Charset, FALSE); + if (!IsEmbedded()) { + LoadSubstFont(); + } + CheckFontMetrics(); + m_DefaultWidth = 1000; + m_pAnsiWidths = FX_Alloc(FX_WORD, 128); + for (int i = 32; i < 127; i++) { + m_pAnsiWidths[i] = 500; + } + return TRUE; +} + +const uint8_t* CPDF_CIDFont::GetCIDTransform(FX_WORD CID) const { + if (m_Charset != CIDSET_JAPAN1 || m_pFontFile) + return nullptr; + + const struct CIDTransform* found = (const struct CIDTransform*)FXSYS_bsearch( + &CID, g_Japan1_VertCIDs, FX_ArraySize(g_Japan1_VertCIDs), + sizeof(g_Japan1_VertCIDs[0]), CompareCIDTransform); + return found ? &found->a : nullptr; +} diff --git a/core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp b/core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp new file mode 100644 index 0000000000..c12b9c5eee --- /dev/null +++ b/core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp @@ -0,0 +1,65 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +bool uint_ranges_equal(uint8_t* a, uint8_t* b, size_t count) { + for (size_t i = 0; i < count; ++i) { + if (a[i] != b[i]) + return false; + } + return true; +} + +} // namespace + +TEST(fpdf_font_cid, CMap_GetCode) { + EXPECT_EQ(0, CPDF_CMapParser::CMap_GetCode("")); + EXPECT_EQ(0, CPDF_CMapParser::CMap_GetCode("<")); + EXPECT_EQ(194, CPDF_CMapParser::CMap_GetCode("", "")); + EXPECT_EQ(5, range.m_CharSize); + + EXPECT_TRUE( + CPDF_CMapParser::CMap_GetCodeRange(range, "<12345678>", "<87654321>")); + EXPECT_EQ(4, range.m_CharSize); + { + uint8_t lower[4] = {18, 52, 86, 120}; + uint8_t upper[4] = {135, 101, 67, 33}; + EXPECT_TRUE(uint_ranges_equal(lower, range.m_Lower, range.m_CharSize)); + EXPECT_TRUE(uint_ranges_equal(upper, range.m_Upper, range.m_CharSize)); + } + + // Hex characters + EXPECT_TRUE(CPDF_CMapParser::CMap_GetCodeRange(range, "", "")); + EXPECT_EQ(1, range.m_CharSize); + EXPECT_EQ(161, range.m_Lower[0]); + EXPECT_EQ(243, range.m_Upper[0]); + + // The second string should return 0's if it is shorter + EXPECT_TRUE(CPDF_CMapParser::CMap_GetCodeRange(range, "", "")); + EXPECT_EQ(1, range.m_CharSize); + EXPECT_EQ(161, range.m_Lower[0]); + EXPECT_EQ(0, range.m_Upper[0]); +} diff --git a/core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp b/core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp new file mode 100644 index 0000000000..dd2119e0cf --- /dev/null +++ b/core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp @@ -0,0 +1,30 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "testing/gtest/include/gtest/gtest.h" + +TEST(fpdf_font, StringToCode) { + EXPECT_EQ(0, CPDF_ToUnicodeMap::StringToCode("")); + EXPECT_EQ(194, CPDF_ToUnicodeMap::StringToCode(" + +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge.h" +#include "third_party/base/stl_util.h" + +CFX_GlyphMap::CFX_GlyphMap() {} +CFX_GlyphMap::~CFX_GlyphMap() {} +extern "C" { +static int _CompareInt(const void* p1, const void* p2) { + return (*(FX_DWORD*)p1) - (*(FX_DWORD*)p2); +} +}; +struct _IntPair { + int32_t key; + int32_t value; +}; +void CFX_GlyphMap::SetAt(int key, int value) { + FX_DWORD count = m_Buffer.GetSize() / sizeof(_IntPair); + _IntPair* buf = (_IntPair*)m_Buffer.GetBuffer(); + _IntPair pair = {key, value}; + if (count == 0 || key > buf[count - 1].key) { + m_Buffer.AppendBlock(&pair, sizeof(_IntPair)); + return; + } + int low = 0, high = count - 1; + while (low <= high) { + int mid = (low + high) / 2; + if (buf[mid].key < key) { + low = mid + 1; + } else if (buf[mid].key > key) { + high = mid - 1; + } else { + buf[mid].value = value; + return; + } + } + m_Buffer.InsertBlock(low * sizeof(_IntPair), &pair, sizeof(_IntPair)); +} +FX_BOOL CFX_GlyphMap::Lookup(int key, int& value) { + void* pResult = FXSYS_bsearch(&key, m_Buffer.GetBuffer(), + m_Buffer.GetSize() / sizeof(_IntPair), + sizeof(_IntPair), _CompareInt); + if (!pResult) { + return FALSE; + } + value = ((FX_DWORD*)pResult)[1]; + return TRUE; +} +bool CFX_CTTGSUBTable::LoadGSUBTable(FT_Bytes gsub) { + header.Version = gsub[0] << 24 | gsub[1] << 16 | gsub[2] << 8 | gsub[3]; + if (header.Version != 0x00010000) { + return false; + } + header.ScriptList = gsub[4] << 8 | gsub[5]; + header.FeatureList = gsub[6] << 8 | gsub[7]; + header.LookupList = gsub[8] << 8 | gsub[9]; + return Parse(&gsub[header.ScriptList], &gsub[header.FeatureList], + &gsub[header.LookupList]); +} +bool CFX_CTTGSUBTable::GetVerticalGlyph(uint32_t glyphnum, + uint32_t* vglyphnum) { + uint32_t tag[] = { + (uint8_t)'v' << 24 | (uint8_t)'r' << 16 | (uint8_t)'t' << 8 | + (uint8_t)'2', + (uint8_t)'v' << 24 | (uint8_t)'e' << 16 | (uint8_t)'r' << 8 | + (uint8_t)'t', + }; + if (!m_bFeautureMapLoad) { + for (int i = 0; i < ScriptList.ScriptCount; i++) { + for (int j = 0; j < (ScriptList.ScriptRecord + i)->Script.LangSysCount; + ++j) { + for (int k = 0; + k < ((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) + ->LangSys.FeatureCount; + ++k) { + FX_DWORD index = + *(((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) + ->LangSys.FeatureIndex + + k); + if (FeatureList.FeatureRecord[index].FeatureTag == tag[0] || + FeatureList.FeatureRecord[index].FeatureTag == tag[1]) { + if (!pdfium::ContainsKey(m_featureMap, index)) { + m_featureMap[index] = index; + } + } + } + } + } + if (m_featureMap.empty()) { + for (int i = 0; i < FeatureList.FeatureCount; i++) { + if (FeatureList.FeatureRecord[i].FeatureTag == tag[0] || + FeatureList.FeatureRecord[i].FeatureTag == tag[1]) { + m_featureMap[i] = i; + } + } + } + m_bFeautureMapLoad = TRUE; + } + for (const auto& pair : m_featureMap) { + if (GetVerticalGlyphSub(glyphnum, vglyphnum, + &FeatureList.FeatureRecord[pair.second].Feature)) { + return true; + } + } + return false; +} +bool CFX_CTTGSUBTable::GetVerticalGlyphSub(uint32_t glyphnum, + uint32_t* vglyphnum, + struct TFeature* Feature) { + for (int i = 0; i < Feature->LookupCount; i++) { + int index = Feature->LookupListIndex[i]; + if (index < 0 || LookupList.LookupCount < index) { + continue; + } + if (LookupList.Lookup[index].LookupType == 1) { + if (GetVerticalGlyphSub2(glyphnum, vglyphnum, + &LookupList.Lookup[index])) { + return true; + } + } + } + return false; +} +bool CFX_CTTGSUBTable::GetVerticalGlyphSub2(uint32_t glyphnum, + uint32_t* vglyphnum, + struct TLookup* Lookup) { + for (int i = 0; i < Lookup->SubTableCount; i++) { + switch (Lookup->SubTable[i]->SubstFormat) { + case 1: { + TSingleSubstFormat1* tbl1 = (TSingleSubstFormat1*)Lookup->SubTable[i]; + if (GetCoverageIndex(tbl1->Coverage, glyphnum) >= 0) { + *vglyphnum = glyphnum + tbl1->DeltaGlyphID; + return true; + } + break; + } + case 2: { + TSingleSubstFormat2* tbl2 = (TSingleSubstFormat2*)Lookup->SubTable[i]; + int index = -1; + index = GetCoverageIndex(tbl2->Coverage, glyphnum); + if (0 <= index && index < tbl2->GlyphCount) { + *vglyphnum = tbl2->Substitute[index]; + return true; + } + break; + } + } + } + return false; +} +int CFX_CTTGSUBTable::GetCoverageIndex(struct TCoverageFormatBase* Coverage, + uint32_t g) { + int i = 0; + if (!Coverage) { + return -1; + } + switch (Coverage->CoverageFormat) { + case 1: { + TCoverageFormat1* c1 = (TCoverageFormat1*)Coverage; + for (i = 0; i < c1->GlyphCount; i++) { + if ((uint32_t)c1->GlyphArray[i] == g) { + return i; + } + } + return -1; + } + case 2: { + TCoverageFormat2* c2 = (TCoverageFormat2*)Coverage; + for (i = 0; i < c2->RangeCount; i++) { + uint32_t s = c2->RangeRecord[i].Start; + uint32_t e = c2->RangeRecord[i].End; + uint32_t si = c2->RangeRecord[i].StartCoverageIndex; + if (s <= g && g <= e) { + return si + g - s; + } + } + return -1; + } + } + return -1; +} +bool CFX_CTTGSUBTable::Parse(FT_Bytes scriptlist, + FT_Bytes featurelist, + FT_Bytes lookuplist) { + ParseScriptList(scriptlist, &ScriptList); + ParseFeatureList(featurelist, &FeatureList); + ParseLookupList(lookuplist, &LookupList); + return true; +} +void CFX_CTTGSUBTable::ParseScriptList(FT_Bytes raw, struct TScriptList* rec) { + int i; + FT_Bytes sp = raw; + rec->ScriptCount = GetUInt16(sp); + if (rec->ScriptCount <= 0) { + return; + } + rec->ScriptRecord = new struct TScriptRecord[rec->ScriptCount]; + for (i = 0; i < rec->ScriptCount; i++) { + rec->ScriptRecord[i].ScriptTag = GetUInt32(sp); + uint16_t offset = GetUInt16(sp); + ParseScript(&raw[offset], &rec->ScriptRecord[i].Script); + } +} +void CFX_CTTGSUBTable::ParseScript(FT_Bytes raw, struct TScript* rec) { + int i; + FT_Bytes sp = raw; + rec->DefaultLangSys = GetUInt16(sp); + rec->LangSysCount = GetUInt16(sp); + if (rec->LangSysCount <= 0) { + return; + } + rec->LangSysRecord = new struct TLangSysRecord[rec->LangSysCount]; + for (i = 0; i < rec->LangSysCount; i++) { + rec->LangSysRecord[i].LangSysTag = GetUInt32(sp); + uint16_t offset = GetUInt16(sp); + ParseLangSys(&raw[offset], &rec->LangSysRecord[i].LangSys); + } +} +void CFX_CTTGSUBTable::ParseLangSys(FT_Bytes raw, struct TLangSys* rec) { + FT_Bytes sp = raw; + rec->LookupOrder = GetUInt16(sp); + rec->ReqFeatureIndex = GetUInt16(sp); + rec->FeatureCount = GetUInt16(sp); + if (rec->FeatureCount <= 0) { + return; + } + rec->FeatureIndex = new uint16_t[rec->FeatureCount]; + FXSYS_memset(rec->FeatureIndex, 0, sizeof(uint16_t) * rec->FeatureCount); + for (int i = 0; i < rec->FeatureCount; ++i) { + rec->FeatureIndex[i] = GetUInt16(sp); + } +} +void CFX_CTTGSUBTable::ParseFeatureList(FT_Bytes raw, TFeatureList* rec) { + int i; + FT_Bytes sp = raw; + rec->FeatureCount = GetUInt16(sp); + if (rec->FeatureCount <= 0) { + return; + } + rec->FeatureRecord = new struct TFeatureRecord[rec->FeatureCount]; + for (i = 0; i < rec->FeatureCount; i++) { + rec->FeatureRecord[i].FeatureTag = GetUInt32(sp); + uint16_t offset = GetUInt16(sp); + ParseFeature(&raw[offset], &rec->FeatureRecord[i].Feature); + } +} +void CFX_CTTGSUBTable::ParseFeature(FT_Bytes raw, TFeature* rec) { + int i; + FT_Bytes sp = raw; + rec->FeatureParams = GetUInt16(sp); + rec->LookupCount = GetUInt16(sp); + if (rec->LookupCount <= 0) { + return; + } + rec->LookupListIndex = new uint16_t[rec->LookupCount]; + for (i = 0; i < rec->LookupCount; i++) { + rec->LookupListIndex[i] = GetUInt16(sp); + } +} +void CFX_CTTGSUBTable::ParseLookupList(FT_Bytes raw, TLookupList* rec) { + int i; + FT_Bytes sp = raw; + rec->LookupCount = GetUInt16(sp); + if (rec->LookupCount <= 0) { + return; + } + rec->Lookup = new struct TLookup[rec->LookupCount]; + for (i = 0; i < rec->LookupCount; i++) { + uint16_t offset = GetUInt16(sp); + ParseLookup(&raw[offset], &rec->Lookup[i]); + } +} +void CFX_CTTGSUBTable::ParseLookup(FT_Bytes raw, TLookup* rec) { + int i; + FT_Bytes sp = raw; + rec->LookupType = GetUInt16(sp); + rec->LookupFlag = GetUInt16(sp); + rec->SubTableCount = GetUInt16(sp); + if (rec->SubTableCount <= 0) { + return; + } + rec->SubTable = new struct TSubTableBase*[rec->SubTableCount]; + for (i = 0; i < rec->SubTableCount; i++) { + rec->SubTable[i] = NULL; + } + if (rec->LookupType != 1) { + return; + } + for (i = 0; i < rec->SubTableCount; i++) { + uint16_t offset = GetUInt16(sp); + ParseSingleSubst(&raw[offset], &rec->SubTable[i]); + } +} +void CFX_CTTGSUBTable::ParseCoverage(FT_Bytes raw, TCoverageFormatBase** rec) { + FT_Bytes sp = raw; + uint16_t Format = GetUInt16(sp); + switch (Format) { + case 1: + *rec = new TCoverageFormat1(); + ParseCoverageFormat1(raw, (TCoverageFormat1*)*rec); + break; + case 2: + *rec = new TCoverageFormat2(); + ParseCoverageFormat2(raw, (TCoverageFormat2*)*rec); + break; + } +} +void CFX_CTTGSUBTable::ParseCoverageFormat1(FT_Bytes raw, + TCoverageFormat1* rec) { + int i; + FT_Bytes sp = raw; + GetUInt16(sp); + rec->GlyphCount = GetUInt16(sp); + if (rec->GlyphCount <= 0) { + return; + } + rec->GlyphArray = new uint16_t[rec->GlyphCount]; + for (i = 0; i < rec->GlyphCount; i++) { + rec->GlyphArray[i] = GetUInt16(sp); + } +} +void CFX_CTTGSUBTable::ParseCoverageFormat2(FT_Bytes raw, + TCoverageFormat2* rec) { + int i; + FT_Bytes sp = raw; + GetUInt16(sp); + rec->RangeCount = GetUInt16(sp); + if (rec->RangeCount <= 0) { + return; + } + rec->RangeRecord = new TRangeRecord[rec->RangeCount]; + for (i = 0; i < rec->RangeCount; i++) { + rec->RangeRecord[i].Start = GetUInt16(sp); + rec->RangeRecord[i].End = GetUInt16(sp); + rec->RangeRecord[i].StartCoverageIndex = GetUInt16(sp); + } +} +void CFX_CTTGSUBTable::ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec) { + FT_Bytes sp = raw; + uint16_t Format = GetUInt16(sp); + switch (Format) { + case 1: + *rec = new TSingleSubstFormat1(); + ParseSingleSubstFormat1(raw, (TSingleSubstFormat1*)*rec); + break; + case 2: + *rec = new TSingleSubstFormat2(); + ParseSingleSubstFormat2(raw, (TSingleSubstFormat2*)*rec); + break; + } +} +void CFX_CTTGSUBTable::ParseSingleSubstFormat1(FT_Bytes raw, + TSingleSubstFormat1* rec) { + FT_Bytes sp = raw; + GetUInt16(sp); + uint16_t offset = GetUInt16(sp); + ParseCoverage(&raw[offset], &rec->Coverage); + rec->DeltaGlyphID = GetInt16(sp); +} +void CFX_CTTGSUBTable::ParseSingleSubstFormat2(FT_Bytes raw, + TSingleSubstFormat2* rec) { + int i; + FT_Bytes sp = raw; + GetUInt16(sp); + uint16_t offset = GetUInt16(sp); + ParseCoverage(&raw[offset], &rec->Coverage); + rec->GlyphCount = GetUInt16(sp); + if (rec->GlyphCount <= 0) { + return; + } + rec->Substitute = new uint16_t[rec->GlyphCount]; + for (i = 0; i < rec->GlyphCount; i++) { + rec->Substitute[i] = GetUInt16(sp); + } +} +FX_BOOL CFX_GSUBTable::GetVerticalGlyph(FX_DWORD glyphnum, + FX_DWORD* vglyphnum) { + return m_GsubImp.GetVerticalGlyph(glyphnum, vglyphnum); +} +// static +IFX_GSUBTable* IFX_GSUBTable::Create(CFX_Font* pFont) { + if (!pFont) { + return NULL; + } + if (!pFont->GetSubData()) { + unsigned long length = 0; + int error = FXFT_Load_Sfnt_Table( + pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, NULL, &length); + if (!error) { + pFont->SetSubData(FX_Alloc(uint8_t, length)); + } + if (!pFont->GetSubData()) { + return NULL; + } + } + int error = + FXFT_Load_Sfnt_Table(pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, + pFont->GetSubData(), NULL); + if (!error && pFont->GetSubData()) { + std::unique_ptr pGsubTable(new CFX_GSUBTable); + if (pGsubTable->m_GsubImp.LoadGSUBTable((FT_Bytes)pFont->GetSubData())) { + return pGsubTable.release(); + } + } + return NULL; +} diff --git a/core/fpdfapi/fpdf_font/ttgsubtable.h b/core/fpdfapi/fpdf_font/ttgsubtable.h new file mode 100644 index 0000000000..47ae5a1fa4 --- /dev/null +++ b/core/fpdfapi/fpdf_font/ttgsubtable.h @@ -0,0 +1,363 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ +#define CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ + +#include + +#include + +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxge/fx_font.h" +#include "core/include/fxge/fx_freetype.h" + +class CFX_GlyphMap { + public: + CFX_GlyphMap(); + ~CFX_GlyphMap(); + void SetAt(int key, int value); + FX_BOOL Lookup(int key, int& value); + + protected: + CFX_BinaryBuf m_Buffer; +}; +class CFX_CTTGSUBTable { + public: + CFX_CTTGSUBTable(void) : m_bFeautureMapLoad(FALSE), loaded(false) {} + CFX_CTTGSUBTable(FT_Bytes gsub) : m_bFeautureMapLoad(FALSE), loaded(false) { + LoadGSUBTable(gsub); + } + virtual ~CFX_CTTGSUBTable() {} + bool IsOk(void) const { return loaded; } + bool LoadGSUBTable(FT_Bytes gsub); + bool GetVerticalGlyph(uint32_t glyphnum, uint32_t* vglyphnum); + + private: + struct tt_gsub_header { + uint32_t Version; + uint16_t ScriptList; + uint16_t FeatureList; + uint16_t LookupList; + }; + struct TLangSys { + uint16_t LookupOrder; + uint16_t ReqFeatureIndex; + uint16_t FeatureCount; + uint16_t* FeatureIndex; + TLangSys() + : LookupOrder(0), + ReqFeatureIndex(0), + FeatureCount(0), + FeatureIndex(NULL) {} + ~TLangSys() { delete[] FeatureIndex; } + + private: + TLangSys(const TLangSys&); + TLangSys& operator=(const TLangSys&); + }; + struct TLangSysRecord { + uint32_t LangSysTag; + struct TLangSys LangSys; + TLangSysRecord() : LangSysTag(0) {} + + private: + TLangSysRecord(const TLangSysRecord&); + TLangSysRecord& operator=(const TLangSysRecord&); + }; + struct TScript { + uint16_t DefaultLangSys; + uint16_t LangSysCount; + struct TLangSysRecord* LangSysRecord; + TScript() : DefaultLangSys(0), LangSysCount(0), LangSysRecord(NULL) {} + ~TScript() { delete[] LangSysRecord; } + + private: + TScript(const TScript&); + TScript& operator=(const TScript&); + }; + struct TScriptRecord { + uint32_t ScriptTag; + struct TScript Script; + TScriptRecord() : ScriptTag(0) {} + + private: + TScriptRecord(const TScriptRecord&); + TScriptRecord& operator=(const TScriptRecord&); + }; + struct TScriptList { + uint16_t ScriptCount; + struct TScriptRecord* ScriptRecord; + TScriptList() : ScriptCount(0), ScriptRecord(NULL) {} + ~TScriptList() { delete[] ScriptRecord; } + + private: + TScriptList(const TScriptList&); + TScriptList& operator=(const TScriptList&); + }; + struct TFeature { + uint16_t FeatureParams; + int LookupCount; + uint16_t* LookupListIndex; + TFeature() : FeatureParams(0), LookupCount(0), LookupListIndex(NULL) {} + ~TFeature() { delete[] LookupListIndex; } + + private: + TFeature(const TFeature&); + TFeature& operator=(const TFeature&); + }; + struct TFeatureRecord { + uint32_t FeatureTag; + struct TFeature Feature; + TFeatureRecord() : FeatureTag(0) {} + + private: + TFeatureRecord(const TFeatureRecord&); + TFeatureRecord& operator=(const TFeatureRecord&); + }; + struct TFeatureList { + int FeatureCount; + struct TFeatureRecord* FeatureRecord; + TFeatureList() : FeatureCount(0), FeatureRecord(NULL) {} + ~TFeatureList() { delete[] FeatureRecord; } + + private: + TFeatureList(const TFeatureList&); + TFeatureList& operator=(const TFeatureList&); + }; + enum TLookupFlag { + LOOKUPFLAG_RightToLeft = 0x0001, + LOOKUPFLAG_IgnoreBaseGlyphs = 0x0002, + LOOKUPFLAG_IgnoreLigatures = 0x0004, + LOOKUPFLAG_IgnoreMarks = 0x0008, + LOOKUPFLAG_Reserved = 0x00F0, + LOOKUPFLAG_MarkAttachmentType = 0xFF00, + }; + struct TCoverageFormatBase { + uint16_t CoverageFormat; + CFX_GlyphMap m_glyphMap; + TCoverageFormatBase() : CoverageFormat(0) {} + virtual ~TCoverageFormatBase() {} + + private: + TCoverageFormatBase(const TCoverageFormatBase&); + TCoverageFormatBase& operator=(const TCoverageFormatBase&); + }; + struct TCoverageFormat1 : public TCoverageFormatBase { + uint16_t GlyphCount; + uint16_t* GlyphArray; + TCoverageFormat1() : GlyphCount(0), GlyphArray(NULL) { CoverageFormat = 1; } + ~TCoverageFormat1() override { delete[] GlyphArray; } + + private: + TCoverageFormat1(const TCoverageFormat1&); + TCoverageFormat1& operator=(const TCoverageFormat1&); + }; + struct TRangeRecord { + uint16_t Start; + uint16_t End; + uint16_t StartCoverageIndex; + TRangeRecord() : Start(0), End(0), StartCoverageIndex(0) {} + friend bool operator>(const TRangeRecord& r1, const TRangeRecord& r2) { + return r1.Start > r2.Start; + } + + private: + TRangeRecord(const TRangeRecord&); + }; + struct TCoverageFormat2 : public TCoverageFormatBase { + uint16_t RangeCount; + struct TRangeRecord* RangeRecord; + TCoverageFormat2() : RangeCount(0), RangeRecord(NULL) { + CoverageFormat = 2; + } + ~TCoverageFormat2() override { delete[] RangeRecord; } + + private: + TCoverageFormat2(const TCoverageFormat2&); + TCoverageFormat2& operator=(const TCoverageFormat2&); + }; + struct TClassDefFormatBase { + uint16_t ClassFormat; + TClassDefFormatBase() : ClassFormat(0) {} + virtual ~TClassDefFormatBase() {} + + private: + TClassDefFormatBase(const TClassDefFormatBase&); + TClassDefFormatBase& operator=(const TClassDefFormatBase&); + }; + struct TClassDefFormat1 : public TClassDefFormatBase { + uint16_t StartGlyph; + uint16_t GlyphCount; + uint16_t* ClassValueArray; + TClassDefFormat1() : StartGlyph(0), GlyphCount(0), ClassValueArray(NULL) { + ClassFormat = 1; + } + ~TClassDefFormat1() override { delete[] ClassValueArray; } + + private: + TClassDefFormat1(const TClassDefFormat1&); + TClassDefFormat1& operator=(const TClassDefFormat1&); + }; + struct TClassRangeRecord { + uint16_t Start; + uint16_t End; + uint16_t Class; + TClassRangeRecord() : Start(0), End(0), Class(0) {} + + private: + TClassRangeRecord(const TClassRangeRecord&); + TClassRangeRecord& operator=(const TClassRangeRecord&); + }; + struct TClassDefFormat2 : public TClassDefFormatBase { + uint16_t ClassRangeCount; + struct TClassRangeRecord* ClassRangeRecord; + TClassDefFormat2() : ClassRangeCount(0), ClassRangeRecord(NULL) { + ClassFormat = 2; + } + ~TClassDefFormat2() override { delete[] ClassRangeRecord; } + + private: + TClassDefFormat2(const TClassDefFormat2&); + TClassDefFormat2& operator=(const TClassDefFormat2&); + }; + struct TDevice { + uint16_t StartSize; + uint16_t EndSize; + uint16_t DeltaFormat; + TDevice() : StartSize(0), EndSize(0), DeltaFormat(0) {} + + private: + TDevice(const TDevice&); + TDevice& operator=(const TDevice&); + }; + struct TSubTableBase { + uint16_t SubstFormat; + TSubTableBase() : SubstFormat(0) {} + virtual ~TSubTableBase() {} + + private: + TSubTableBase(const TSubTableBase&); + TSubTableBase& operator=(const TSubTableBase&); + }; + struct TSingleSubstFormat1 : public TSubTableBase { + TCoverageFormatBase* Coverage; + int16_t DeltaGlyphID; + TSingleSubstFormat1() : Coverage(NULL), DeltaGlyphID(0) { SubstFormat = 1; } + ~TSingleSubstFormat1() override { delete Coverage; } + + private: + TSingleSubstFormat1(const TSingleSubstFormat1&); + TSingleSubstFormat1& operator=(const TSingleSubstFormat1&); + }; + struct TSingleSubstFormat2 : public TSubTableBase { + TCoverageFormatBase* Coverage; + uint16_t GlyphCount; + uint16_t* Substitute; + TSingleSubstFormat2() : Coverage(NULL), GlyphCount(0), Substitute(NULL) { + SubstFormat = 2; + } + ~TSingleSubstFormat2() override { + delete Coverage; + delete[] Substitute; + } + + private: + TSingleSubstFormat2(const TSingleSubstFormat2&); + TSingleSubstFormat2& operator=(const TSingleSubstFormat2&); + }; + struct TLookup { + uint16_t LookupType; + uint16_t LookupFlag; + uint16_t SubTableCount; + struct TSubTableBase** SubTable; + TLookup() + : LookupType(0), LookupFlag(0), SubTableCount(0), SubTable(NULL) {} + ~TLookup() { + if (SubTable) { + for (int i = 0; i < SubTableCount; ++i) + delete SubTable[i]; + delete[] SubTable; + } + } + + private: + TLookup(const TLookup&); + TLookup& operator=(const TLookup&); + }; + struct TLookupList { + int LookupCount; + struct TLookup* Lookup; + TLookupList() : LookupCount(0), Lookup(NULL) {} + ~TLookupList() { delete[] Lookup; } + + private: + TLookupList(const TLookupList&); + TLookupList& operator=(const TLookupList&); + }; + bool Parse(FT_Bytes scriptlist, FT_Bytes featurelist, FT_Bytes lookuplist); + void ParseScriptList(FT_Bytes raw, TScriptList* rec); + void ParseScript(FT_Bytes raw, TScript* rec); + void ParseLangSys(FT_Bytes raw, TLangSys* rec); + void ParseFeatureList(FT_Bytes raw, TFeatureList* rec); + void ParseFeature(FT_Bytes raw, TFeature* rec); + void ParseLookupList(FT_Bytes raw, TLookupList* rec); + void ParseLookup(FT_Bytes raw, TLookup* rec); + void ParseCoverage(FT_Bytes raw, TCoverageFormatBase** rec); + void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec); + void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec); + void ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec); + void ParseSingleSubstFormat1(FT_Bytes raw, TSingleSubstFormat1* rec); + void ParseSingleSubstFormat2(FT_Bytes raw, TSingleSubstFormat2* rec); + bool GetVerticalGlyphSub(uint32_t glyphnum, + uint32_t* vglyphnum, + struct TFeature* Feature); + bool GetVerticalGlyphSub2(uint32_t glyphnum, + uint32_t* vglyphnum, + struct TLookup* Lookup); + int GetCoverageIndex(struct TCoverageFormatBase* Coverage, uint32_t g); + uint8_t GetUInt8(FT_Bytes& p) const { + uint8_t ret = p[0]; + p += 1; + return ret; + } + int16_t GetInt16(FT_Bytes& p) const { + uint16_t ret = p[0] << 8 | p[1]; + p += 2; + return *(int16_t*)&ret; + } + uint16_t GetUInt16(FT_Bytes& p) const { + uint16_t ret = p[0] << 8 | p[1]; + p += 2; + return ret; + } + int32_t GetInt32(FT_Bytes& p) const { + uint32_t ret = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3]; + p += 4; + return *(int32_t*)&ret; + } + uint32_t GetUInt32(FT_Bytes& p) const { + uint32_t ret = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3]; + p += 4; + return ret; + } + std::map m_featureMap; + FX_BOOL m_bFeautureMapLoad; + bool loaded; + struct tt_gsub_header header; + struct TScriptList ScriptList; + struct TFeatureList FeatureList; + struct TLookupList LookupList; +}; +class CFX_GSUBTable final : public IFX_GSUBTable { + public: + ~CFX_GSUBTable() override {} + FX_BOOL GetVerticalGlyph(FX_DWORD glyphnum, FX_DWORD* vglyphnum) override; + + CFX_CTTGSUBTable m_GsubImp; +}; + +#endif // CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ diff --git a/core/fpdfapi/fpdf_page/fpdf_page.cpp b/core/fpdfapi/fpdf_page/fpdf_page.cpp new file mode 100644 index 0000000000..5d4a584349 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page.cpp @@ -0,0 +1,764 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "third_party/base/stl_util.h" + +CPDF_PageObject::CPDF_PageObject() {} + +CPDF_PageObject::~CPDF_PageObject() {} + +void CPDF_PageObject::CopyData(const CPDF_PageObject* pSrc) { + CopyStates(*pSrc); + m_Left = pSrc->m_Left; + m_Right = pSrc->m_Right; + m_Top = pSrc->m_Top; + m_Bottom = pSrc->m_Bottom; +} + +void CPDF_PageObject::TransformClipPath(CFX_Matrix& matrix) { + if (m_ClipPath.IsNull()) { + return; + } + m_ClipPath.GetModify(); + m_ClipPath.Transform(matrix); +} + +void CPDF_PageObject::TransformGeneralState(CFX_Matrix& matrix) { + if (m_GeneralState.IsNull()) { + return; + } + CPDF_GeneralStateData* pGS = m_GeneralState.GetModify(); + pGS->m_Matrix.Concat(matrix); +} + +FX_RECT CPDF_PageObject::GetBBox(const CFX_Matrix* pMatrix) const { + CFX_FloatRect rect(m_Left, m_Bottom, m_Right, m_Top); + if (pMatrix) { + pMatrix->TransformRect(rect); + } + return rect.GetOutterRect(); +} + +CPDF_TextObject::CPDF_TextObject() + : m_PosX(0), + m_PosY(0), + m_nChars(0), + m_pCharCodes(nullptr), + m_pCharPos(nullptr) {} + +CPDF_TextObject::~CPDF_TextObject() { + if (m_nChars > 1) { + FX_Free(m_pCharCodes); + } + FX_Free(m_pCharPos); +} + +void CPDF_TextObject::GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const { + pInfo->m_CharCode = + m_nChars == 1 ? (FX_DWORD)(uintptr_t)m_pCharCodes : m_pCharCodes[index]; + pInfo->m_OriginX = index ? m_pCharPos[index - 1] : 0; + pInfo->m_OriginY = 0; + if (pInfo->m_CharCode == -1) { + return; + } + CPDF_Font* pFont = m_TextState.GetFont(); + if (!pFont->IsCIDFont()) { + return; + } + if (!pFont->AsCIDFont()->IsVertWriting()) { + return; + } + FX_WORD CID = pFont->AsCIDFont()->CIDFromCharCode(pInfo->m_CharCode); + pInfo->m_OriginY = pInfo->m_OriginX; + pInfo->m_OriginX = 0; + short vx, vy; + pFont->AsCIDFont()->GetVertOrigin(CID, vx, vy); + FX_FLOAT fontsize = m_TextState.GetFontSize(); + pInfo->m_OriginX -= fontsize * vx / 1000; + pInfo->m_OriginY -= fontsize * vy / 1000; +} + +int CPDF_TextObject::CountChars() const { + if (m_nChars == 1) { + return 1; + } + int count = 0; + for (int i = 0; i < m_nChars; ++i) + if (m_pCharCodes[i] != (FX_DWORD)-1) { + ++count; + } + return count; +} + +void CPDF_TextObject::GetCharInfo(int index, + FX_DWORD& charcode, + FX_FLOAT& kerning) const { + if (m_nChars == 1) { + charcode = (FX_DWORD)(uintptr_t)m_pCharCodes; + kerning = 0; + return; + } + int count = 0; + for (int i = 0; i < m_nChars; ++i) { + if (m_pCharCodes[i] != (FX_DWORD)-1) { + if (count == index) { + charcode = m_pCharCodes[i]; + if (i == m_nChars - 1 || m_pCharCodes[i + 1] != (FX_DWORD)-1) { + kerning = 0; + } else { + kerning = m_pCharPos[i]; + } + return; + } + ++count; + } + } +} + +void CPDF_TextObject::GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const { + if (m_nChars == 1) { + GetItemInfo(0, pInfo); + return; + } + int count = 0; + for (int i = 0; i < m_nChars; ++i) { + FX_DWORD charcode = m_pCharCodes[i]; + if (charcode == (FX_DWORD)-1) { + continue; + } + if (count == index) { + GetItemInfo(i, pInfo); + break; + } + ++count; + } +} + +CPDF_TextObject* CPDF_TextObject::Clone() const { + CPDF_TextObject* obj = new CPDF_TextObject; + obj->CopyData(this); + + obj->m_nChars = m_nChars; + if (m_nChars > 1) { + obj->m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars); + FXSYS_memcpy(obj->m_pCharCodes, m_pCharCodes, m_nChars * sizeof(FX_DWORD)); + obj->m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1); + FXSYS_memcpy(obj->m_pCharPos, m_pCharPos, + (m_nChars - 1) * sizeof(FX_FLOAT)); + } else { + obj->m_pCharCodes = m_pCharCodes; + } + obj->m_PosX = m_PosX; + obj->m_PosY = m_PosY; + return obj; +} + +void CPDF_TextObject::GetTextMatrix(CFX_Matrix* pMatrix) const { + FX_FLOAT* pTextMatrix = m_TextState.GetMatrix(); + pMatrix->Set(pTextMatrix[0], pTextMatrix[2], pTextMatrix[1], pTextMatrix[3], + m_PosX, m_PosY); +} + +void CPDF_TextObject::SetSegments(const CFX_ByteString* pStrs, + FX_FLOAT* pKerning, + int nsegs) { + if (m_nChars > 1) { + FX_Free(m_pCharCodes); + m_pCharCodes = nullptr; + } + FX_Free(m_pCharPos); + m_pCharPos = nullptr; + CPDF_Font* pFont = m_TextState.GetFont(); + m_nChars = 0; + for (int i = 0; i < nsegs; ++i) { + m_nChars += pFont->CountChar(pStrs[i], pStrs[i].GetLength()); + } + m_nChars += nsegs - 1; + if (m_nChars > 1) { + m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars); + m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1); + int index = 0; + for (int i = 0; i < nsegs; ++i) { + const FX_CHAR* segment = pStrs[i]; + int offset = 0, len = pStrs[i].GetLength(); + while (offset < len) { + m_pCharCodes[index++] = pFont->GetNextChar(segment, len, offset); + } + if (i != nsegs - 1) { + m_pCharPos[index - 1] = pKerning[i]; + m_pCharCodes[index++] = (FX_DWORD)-1; + } + } + } else { + int offset = 0; + m_pCharCodes = (FX_DWORD*)(uintptr_t)pFont->GetNextChar( + pStrs[0], pStrs[0].GetLength(), offset); + } +} + +void CPDF_TextObject::SetText(const CFX_ByteString& str) { + SetSegments(&str, nullptr, 1); + RecalcPositionData(); +} + +FX_FLOAT CPDF_TextObject::GetCharWidth(FX_DWORD charcode) const { + FX_FLOAT fontsize = m_TextState.GetFontSize() / 1000; + CPDF_Font* pFont = m_TextState.GetFont(); + FX_BOOL bVertWriting = FALSE; + CPDF_CIDFont* pCIDFont = pFont->AsCIDFont(); + if (pCIDFont) { + bVertWriting = pCIDFont->IsVertWriting(); + } + if (!bVertWriting) + return pFont->GetCharWidthF(charcode, 0) * fontsize; + + FX_WORD CID = pCIDFont->CIDFromCharCode(charcode); + return pCIDFont->GetVertWidth(CID) * fontsize; +} + +void CPDF_TextObject::CalcPositionData(FX_FLOAT* pTextAdvanceX, + FX_FLOAT* pTextAdvanceY, + FX_FLOAT horz_scale, + int level) { + FX_FLOAT curpos = 0; + FX_FLOAT min_x = 10000 * 1.0f; + FX_FLOAT max_x = -10000 * 1.0f; + FX_FLOAT min_y = 10000 * 1.0f; + FX_FLOAT max_y = -10000 * 1.0f; + CPDF_Font* pFont = m_TextState.GetFont(); + FX_BOOL bVertWriting = FALSE; + CPDF_CIDFont* pCIDFont = pFont->AsCIDFont(); + if (pCIDFont) { + bVertWriting = pCIDFont->IsVertWriting(); + } + FX_FLOAT fontsize = m_TextState.GetFontSize(); + for (int i = 0; i < m_nChars; ++i) { + FX_DWORD charcode = + m_nChars == 1 ? (FX_DWORD)(uintptr_t)m_pCharCodes : m_pCharCodes[i]; + if (i > 0) { + if (charcode == (FX_DWORD)-1) { + curpos -= (m_pCharPos[i - 1] * fontsize) / 1000; + continue; + } + m_pCharPos[i - 1] = curpos; + } + FX_RECT char_rect = pFont->GetCharBBox(charcode, level); + FX_FLOAT charwidth; + if (!bVertWriting) { + if (min_y > char_rect.top) { + min_y = (FX_FLOAT)char_rect.top; + } + if (max_y < char_rect.top) { + max_y = (FX_FLOAT)char_rect.top; + } + if (min_y > char_rect.bottom) { + min_y = (FX_FLOAT)char_rect.bottom; + } + if (max_y < char_rect.bottom) { + max_y = (FX_FLOAT)char_rect.bottom; + } + FX_FLOAT char_left = curpos + char_rect.left * fontsize / 1000; + FX_FLOAT char_right = curpos + char_rect.right * fontsize / 1000; + if (min_x > char_left) { + min_x = char_left; + } + if (max_x < char_left) { + max_x = char_left; + } + if (min_x > char_right) { + min_x = char_right; + } + if (max_x < char_right) { + max_x = char_right; + } + charwidth = pFont->GetCharWidthF(charcode, level) * fontsize / 1000; + } else { + FX_WORD CID = pCIDFont->CIDFromCharCode(charcode); + short vx; + short vy; + pCIDFont->GetVertOrigin(CID, vx, vy); + char_rect.left -= vx; + char_rect.right -= vx; + char_rect.top -= vy; + char_rect.bottom -= vy; + if (min_x > char_rect.left) { + min_x = (FX_FLOAT)char_rect.left; + } + if (max_x < char_rect.left) { + max_x = (FX_FLOAT)char_rect.left; + } + if (min_x > char_rect.right) { + min_x = (FX_FLOAT)char_rect.right; + } + if (max_x < char_rect.right) { + max_x = (FX_FLOAT)char_rect.right; + } + FX_FLOAT char_top = curpos + char_rect.top * fontsize / 1000; + FX_FLOAT char_bottom = curpos + char_rect.bottom * fontsize / 1000; + if (min_y > char_top) { + min_y = char_top; + } + if (max_y < char_top) { + max_y = char_top; + } + if (min_y > char_bottom) { + min_y = char_bottom; + } + if (max_y < char_bottom) { + max_y = char_bottom; + } + charwidth = pCIDFont->GetVertWidth(CID) * fontsize / 1000; + } + curpos += charwidth; + if (charcode == ' ' && (!pCIDFont || pCIDFont->GetCharSize(32) == 1)) { + curpos += m_TextState.GetObject()->m_WordSpace; + } + curpos += m_TextState.GetObject()->m_CharSpace; + } + if (bVertWriting) { + if (pTextAdvanceX) { + *pTextAdvanceX = 0; + } + if (pTextAdvanceY) { + *pTextAdvanceY = curpos; + } + min_x = min_x * fontsize / 1000; + max_x = max_x * fontsize / 1000; + } else { + if (pTextAdvanceX) { + *pTextAdvanceX = curpos * horz_scale; + } + if (pTextAdvanceY) { + *pTextAdvanceY = 0; + } + min_y = min_y * fontsize / 1000; + max_y = max_y * fontsize / 1000; + } + CFX_Matrix matrix; + GetTextMatrix(&matrix); + m_Left = min_x; + m_Right = max_x; + m_Bottom = min_y; + m_Top = max_y; + matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); + int textmode = m_TextState.GetObject()->m_TextMode; + if (textmode == 1 || textmode == 2 || textmode == 5 || textmode == 6) { + FX_FLOAT half_width = m_GraphState.GetObject()->m_LineWidth / 2; + m_Left -= half_width; + m_Right += half_width; + m_Top += half_width; + m_Bottom -= half_width; + } +} + +void CPDF_TextObject::Transform(const CFX_Matrix& matrix) { + m_TextState.GetModify(); + CFX_Matrix text_matrix; + GetTextMatrix(&text_matrix); + text_matrix.Concat(matrix); + FX_FLOAT* pTextMatrix = m_TextState.GetMatrix(); + pTextMatrix[0] = text_matrix.GetA(); + pTextMatrix[1] = text_matrix.GetC(); + pTextMatrix[2] = text_matrix.GetB(); + pTextMatrix[3] = text_matrix.GetD(); + m_PosX = text_matrix.GetE(); + m_PosY = text_matrix.GetF(); + CalcPositionData(nullptr, nullptr, 0); +} + +void CPDF_TextObject::SetPosition(FX_FLOAT x, FX_FLOAT y) { + FX_FLOAT dx = x - m_PosX; + FX_FLOAT dy = y - m_PosY; + m_PosX = x; + m_PosY = y; + m_Left += dx; + m_Right += dx; + m_Top += dy; + m_Bottom += dy; +} + +CPDF_ShadingObject::CPDF_ShadingObject() : m_pShading(nullptr) {} + +CPDF_ShadingObject::~CPDF_ShadingObject() {} + +CPDF_ShadingObject* CPDF_ShadingObject::Clone() const { + CPDF_ShadingObject* obj = new CPDF_ShadingObject; + obj->CopyData(this); + + obj->m_pShading = m_pShading; + if (obj->m_pShading && obj->m_pShading->m_pDocument) { + CPDF_DocPageData* pDocPageData = + obj->m_pShading->m_pDocument->GetPageData(); + obj->m_pShading = (CPDF_ShadingPattern*)pDocPageData->GetPattern( + obj->m_pShading->m_pShadingObj, m_pShading->m_bShadingObj, + &obj->m_pShading->m_ParentMatrix); + } + obj->m_Matrix = m_Matrix; + return obj; +} + +void CPDF_ShadingObject::Transform(const CFX_Matrix& matrix) { + if (!m_ClipPath.IsNull()) { + m_ClipPath.GetModify(); + m_ClipPath.Transform(matrix); + } + m_Matrix.Concat(matrix); + if (!m_ClipPath.IsNull()) { + CalcBoundingBox(); + } else { + matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); + } +} + +void CPDF_ShadingObject::CalcBoundingBox() { + if (m_ClipPath.IsNull()) { + return; + } + CFX_FloatRect rect = m_ClipPath.GetClipBox(); + m_Left = rect.left; + m_Bottom = rect.bottom; + m_Right = rect.right; + m_Top = rect.top; +} + +CPDF_FormObject::CPDF_FormObject() : m_pForm(nullptr) {} + +CPDF_FormObject::~CPDF_FormObject() { + delete m_pForm; +} + +void CPDF_FormObject::Transform(const CFX_Matrix& matrix) { + m_FormMatrix.Concat(matrix); + CalcBoundingBox(); +} + +CPDF_FormObject* CPDF_FormObject::Clone() const { + CPDF_FormObject* obj = new CPDF_FormObject; + obj->CopyData(this); + + obj->m_pForm = m_pForm->Clone(); + obj->m_FormMatrix = m_FormMatrix; + return obj; +} + +void CPDF_FormObject::CalcBoundingBox() { + CFX_FloatRect form_rect = m_pForm->CalcBoundingBox(); + form_rect.Transform(&m_FormMatrix); + m_Left = form_rect.left; + m_Bottom = form_rect.bottom; + m_Right = form_rect.right; + m_Top = form_rect.top; +} + +CPDF_PageObject* CPDF_PageObjectList::GetPageObjectByIndex(int index) { + if (index < 0 || index >= pdfium::CollectionSize(*this)) + return nullptr; + return (*this)[index].get(); +} + +CPDF_PageObjectHolder::CPDF_PageObjectHolder() + : m_pFormDict(nullptr), + m_pFormStream(nullptr), + m_pDocument(nullptr), + m_pPageResources(nullptr), + m_pResources(nullptr), + m_Transparency(0), + m_bBackgroundAlphaNeeded(FALSE), + m_bHasImageMask(FALSE), + m_ParseState(CONTENT_NOT_PARSED) {} + +void CPDF_PageObjectHolder::ContinueParse(IFX_Pause* pPause) { + if (!m_pParser) { + return; + } + m_pParser->Continue(pPause); + if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { + m_ParseState = CONTENT_PARSED; + m_pParser.reset(); + } +} + +void CPDF_PageObjectHolder::Transform(const CFX_Matrix& matrix) { + for (auto& pObj : m_PageObjectList) + pObj->Transform(matrix); +} + +CFX_FloatRect CPDF_PageObjectHolder::CalcBoundingBox() const { + if (m_PageObjectList.empty()) + return CFX_FloatRect(0, 0, 0, 0); + + FX_FLOAT left = 1000000.0f; + FX_FLOAT right = -1000000.0f; + FX_FLOAT bottom = 1000000.0f; + FX_FLOAT top = -1000000.0f; + for (const auto& pObj : m_PageObjectList) { + left = std::min(left, pObj->m_Left); + right = std::max(right, pObj->m_Right); + bottom = std::min(bottom, pObj->m_Bottom); + top = std::max(top, pObj->m_Top); + } + return CFX_FloatRect(left, bottom, right, top); +} + +void CPDF_PageObjectHolder::LoadTransInfo() { + if (!m_pFormDict) { + return; + } + CPDF_Dictionary* pGroup = m_pFormDict->GetDictBy("Group"); + if (!pGroup) { + return; + } + if (pGroup->GetStringBy("S") != "Transparency") { + return; + } + m_Transparency |= PDFTRANS_GROUP; + if (pGroup->GetIntegerBy("I")) { + m_Transparency |= PDFTRANS_ISOLATED; + } + if (pGroup->GetIntegerBy("K")) { + m_Transparency |= PDFTRANS_KNOCKOUT; + } +} + +CPDF_Page::CPDF_Page() : m_pPageRender(nullptr) {} + +void CPDF_Page::Load(CPDF_Document* pDocument, + CPDF_Dictionary* pPageDict, + FX_BOOL bPageCache) { + m_pDocument = (CPDF_Document*)pDocument; + m_pFormDict = pPageDict; + if (bPageCache) { + m_pPageRender = + CPDF_ModuleMgr::Get()->GetRenderModule()->CreatePageCache(this); + } + if (!pPageDict) { + m_PageWidth = m_PageHeight = 100 * 1.0f; + m_pPageResources = m_pResources = NULL; + return; + } + CPDF_Object* pageAttr = GetPageAttr("Resources"); + m_pResources = pageAttr ? pageAttr->GetDict() : NULL; + m_pPageResources = m_pResources; + CPDF_Object* pRotate = GetPageAttr("Rotate"); + int rotate = 0; + if (pRotate) { + rotate = pRotate->GetInteger() / 90 % 4; + } + if (rotate < 0) { + rotate += 4; + } + CPDF_Array* pMediaBox = ToArray(GetPageAttr("MediaBox")); + CFX_FloatRect mediabox; + if (pMediaBox) { + mediabox = pMediaBox->GetRect(); + mediabox.Normalize(); + } + if (mediabox.IsEmpty()) { + mediabox = CFX_FloatRect(0, 0, 612, 792); + } + + CPDF_Array* pCropBox = ToArray(GetPageAttr("CropBox")); + if (pCropBox) { + m_BBox = pCropBox->GetRect(); + m_BBox.Normalize(); + } + if (m_BBox.IsEmpty()) { + m_BBox = mediabox; + } else { + m_BBox.Intersect(mediabox); + } + if (rotate % 2) { + m_PageHeight = m_BBox.right - m_BBox.left; + m_PageWidth = m_BBox.top - m_BBox.bottom; + } else { + m_PageWidth = m_BBox.right - m_BBox.left; + m_PageHeight = m_BBox.top - m_BBox.bottom; + } + switch (rotate) { + case 0: + m_PageMatrix.Set(1.0f, 0, 0, 1.0f, -m_BBox.left, -m_BBox.bottom); + break; + case 1: + m_PageMatrix.Set(0, -1.0f, 1.0f, 0, -m_BBox.bottom, m_BBox.right); + break; + case 2: + m_PageMatrix.Set(-1.0f, 0, 0, -1.0f, m_BBox.right, m_BBox.top); + break; + case 3: + m_PageMatrix.Set(0, 1.0f, -1.0f, 0, m_BBox.top, -m_BBox.left); + break; + } + m_Transparency = PDFTRANS_ISOLATED; + LoadTransInfo(); +} + +void CPDF_Page::StartParse(CPDF_ParseOptions* pOptions) { + if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { + return; + } + m_pParser.reset(new CPDF_ContentParser); + m_pParser->Start(this, pOptions); + m_ParseState = CONTENT_PARSING; +} + +void CPDF_Page::ParseContent(CPDF_ParseOptions* pOptions) { + StartParse(pOptions); + ContinueParse(nullptr); +} + +CPDF_Page::~CPDF_Page() { + if (m_pPageRender) { + IPDF_RenderModule* pModule = CPDF_ModuleMgr::Get()->GetRenderModule(); + pModule->DestroyPageCache(m_pPageRender); + } +} + +CPDF_Object* FPDFAPI_GetPageAttr(CPDF_Dictionary* pPageDict, + const CFX_ByteStringC& name) { + int level = 0; + while (1) { + CPDF_Object* pObj = pPageDict->GetElementValue(name); + if (pObj) { + return pObj; + } + CPDF_Dictionary* pParent = pPageDict->GetDictBy("Parent"); + if (!pParent || pParent == pPageDict) { + return NULL; + } + pPageDict = pParent; + level++; + if (level == 1000) { + return NULL; + } + } +} + +CPDF_Object* CPDF_Page::GetPageAttr(const CFX_ByteStringC& name) const { + return FPDFAPI_GetPageAttr(m_pFormDict, name); +} + +CPDF_Form::CPDF_Form(CPDF_Document* pDoc, + CPDF_Dictionary* pPageResources, + CPDF_Stream* pFormStream, + CPDF_Dictionary* pParentResources) { + m_pDocument = pDoc; + m_pFormStream = pFormStream; + m_pFormDict = pFormStream ? pFormStream->GetDict() : NULL; + m_pResources = m_pFormDict->GetDictBy("Resources"); + m_pPageResources = pPageResources; + if (!m_pResources) { + m_pResources = pParentResources; + } + if (!m_pResources) { + m_pResources = pPageResources; + } + m_Transparency = 0; + LoadTransInfo(); +} + +CPDF_Form::~CPDF_Form() {} + +void CPDF_Form::StartParse(CPDF_AllStates* pGraphicStates, + CFX_Matrix* pParentMatrix, + CPDF_Type3Char* pType3Char, + CPDF_ParseOptions* pOptions, + int level) { + if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { + return; + } + m_pParser.reset(new CPDF_ContentParser); + m_pParser->Start(this, pGraphicStates, pParentMatrix, pType3Char, pOptions, + level); + m_ParseState = CONTENT_PARSING; +} + +void CPDF_Form::ParseContent(CPDF_AllStates* pGraphicStates, + CFX_Matrix* pParentMatrix, + CPDF_Type3Char* pType3Char, + CPDF_ParseOptions* pOptions, + int level) { + StartParse(pGraphicStates, pParentMatrix, pType3Char, pOptions, level); + ContinueParse(NULL); +} + +CPDF_Form* CPDF_Form::Clone() const { + CPDF_Form* pCloneForm = + new CPDF_Form(m_pDocument, m_pPageResources, m_pFormStream, m_pResources); + for (const auto& pObj : m_PageObjectList) + pCloneForm->m_PageObjectList.emplace_back(pObj->Clone()); + + return pCloneForm; +} + +void CPDF_Page::GetDisplayMatrix(CFX_Matrix& matrix, + int xPos, + int yPos, + int xSize, + int ySize, + int iRotate) const { + if (m_PageWidth == 0 || m_PageHeight == 0) { + return; + } + CFX_Matrix display_matrix; + int x0, y0, x1, y1, x2, y2; + iRotate %= 4; + switch (iRotate) { + case 0: + x0 = xPos; + y0 = yPos + ySize; + x1 = xPos; + y1 = yPos; + x2 = xPos + xSize; + y2 = yPos + ySize; + break; + case 1: + x0 = xPos; + y0 = yPos; + x1 = xPos + xSize; + y1 = yPos; + x2 = xPos; + y2 = yPos + ySize; + break; + case 2: + x0 = xPos + xSize; + y0 = yPos; + x1 = xPos + xSize; + y1 = yPos + ySize; + x2 = xPos; + y2 = yPos; + break; + case 3: + x0 = xPos + xSize; + y0 = yPos + ySize; + x1 = xPos; + y1 = yPos + ySize; + x2 = xPos + xSize; + y2 = yPos; + break; + } + display_matrix.Set( + ((FX_FLOAT)(x2 - x0)) / m_PageWidth, ((FX_FLOAT)(y2 - y0)) / m_PageWidth, + ((FX_FLOAT)(x1 - x0)) / m_PageHeight, + ((FX_FLOAT)(y1 - y0)) / m_PageHeight, (FX_FLOAT)x0, (FX_FLOAT)y0); + matrix = m_PageMatrix; + matrix.Concat(display_matrix); +} + +CPDF_ParseOptions::CPDF_ParseOptions() { + m_bTextOnly = FALSE; + m_bMarkedContent = TRUE; + m_bSeparateForm = TRUE; + m_bDecodeInlineImage = FALSE; +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_colors.cpp b/core/fpdfapi/fpdf_page/fpdf_page_colors.cpp new file mode 100644 index 0000000000..f557669a77 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_colors.cpp @@ -0,0 +1,1550 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include + +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fxcodec/fx_codec.h" + +namespace { + +void sRGB_to_AdobeCMYK(FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B, + FX_FLOAT& c, + FX_FLOAT& m, + FX_FLOAT& y, + FX_FLOAT& k) { + c = 1.0f - R; + m = 1.0f - G; + y = 1.0f - B; + k = c; + if (m < k) { + k = m; + } + if (y < k) { + k = y; + } +} + +FX_DWORD ComponentsForFamily(int family) { + if (family == PDFCS_DEVICERGB) + return 3; + if (family == PDFCS_DEVICEGRAY) + return 1; + return 4; +} + +void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels) { + if (pDestBuf == pSrcBuf) { + for (int i = 0; i < pixels; i++) { + uint8_t temp = pDestBuf[2]; + pDestBuf[2] = pDestBuf[0]; + pDestBuf[0] = temp; + pDestBuf += 3; + } + } else { + for (int i = 0; i < pixels; i++) { + *pDestBuf++ = pSrcBuf[2]; + *pDestBuf++ = pSrcBuf[1]; + *pDestBuf++ = pSrcBuf[0]; + pSrcBuf += 3; + } + } +} + +} // namespace + +CPDF_DeviceCS::CPDF_DeviceCS(CPDF_Document* pDoc, int family) + : CPDF_ColorSpace(pDoc, family, ComponentsForFamily(family)) {} + +FX_BOOL CPDF_DeviceCS::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + if (m_Family == PDFCS_DEVICERGB) { + R = pBuf[0]; + if (R < 0) { + R = 0; + } else if (R > 1) { + R = 1; + } + G = pBuf[1]; + if (G < 0) { + G = 0; + } else if (G > 1) { + G = 1; + } + B = pBuf[2]; + if (B < 0) { + B = 0; + } else if (B > 1) { + B = 1; + } + } else if (m_Family == PDFCS_DEVICEGRAY) { + R = *pBuf; + if (R < 0) { + R = 0; + } else if (R > 1) { + R = 1; + } + G = B = R; + } else if (m_Family == PDFCS_DEVICECMYK) { + if (!m_dwStdConversion) { + AdobeCMYK_to_sRGB(pBuf[0], pBuf[1], pBuf[2], pBuf[3], R, G, B); + } else { + FX_FLOAT k = pBuf[3]; + R = 1.0f - std::min(1.0f, pBuf[0] + k); + G = 1.0f - std::min(1.0f, pBuf[1] + k); + B = 1.0f - std::min(1.0f, pBuf[2] + k); + } + } else { + ASSERT(m_Family == PDFCS_PATTERN); + R = G = B = 0; + return FALSE; + } + return TRUE; +} +FX_BOOL CPDF_DeviceCS::v_GetCMYK(FX_FLOAT* pBuf, + FX_FLOAT& c, + FX_FLOAT& m, + FX_FLOAT& y, + FX_FLOAT& k) const { + if (m_Family != PDFCS_DEVICECMYK) { + return FALSE; + } + c = pBuf[0]; + m = pBuf[1]; + y = pBuf[2]; + k = pBuf[3]; + return TRUE; +} +FX_BOOL CPDF_DeviceCS::SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const { + if (m_Family == PDFCS_DEVICERGB) { + pBuf[0] = R; + pBuf[1] = G; + pBuf[2] = B; + return TRUE; + } + if (m_Family == PDFCS_DEVICEGRAY) { + if (R == G && R == B) { + *pBuf = R; + return TRUE; + } + return FALSE; + } + if (m_Family == PDFCS_DEVICECMYK) { + sRGB_to_AdobeCMYK(R, G, B, pBuf[0], pBuf[1], pBuf[2], pBuf[3]); + return TRUE; + } + return FALSE; +} +FX_BOOL CPDF_DeviceCS::v_SetCMYK(FX_FLOAT* pBuf, + FX_FLOAT c, + FX_FLOAT m, + FX_FLOAT y, + FX_FLOAT k) const { + if (m_Family == PDFCS_DEVICERGB) { + AdobeCMYK_to_sRGB(c, m, y, k, pBuf[0], pBuf[1], pBuf[2]); + return TRUE; + } + if (m_Family == PDFCS_DEVICECMYK) { + pBuf[0] = c; + pBuf[1] = m; + pBuf[2] = y; + pBuf[3] = k; + return TRUE; + } + return FALSE; +} + +void CPDF_DeviceCS::TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask) const { + if (bTransMask && m_Family == PDFCS_DEVICECMYK) { + for (int i = 0; i < pixels; i++) { + int k = 255 - pSrcBuf[3]; + pDestBuf[0] = ((255 - pSrcBuf[0]) * k) / 255; + pDestBuf[1] = ((255 - pSrcBuf[1]) * k) / 255; + pDestBuf[2] = ((255 - pSrcBuf[2]) * k) / 255; + pDestBuf += 3; + pSrcBuf += 4; + } + return; + } + if (m_Family == PDFCS_DEVICERGB) { + ReverseRGB(pDestBuf, pSrcBuf, pixels); + } else if (m_Family == PDFCS_DEVICEGRAY) { + for (int i = 0; i < pixels; i++) { + *pDestBuf++ = pSrcBuf[i]; + *pDestBuf++ = pSrcBuf[i]; + *pDestBuf++ = pSrcBuf[i]; + } + } else { + for (int i = 0; i < pixels; i++) { + if (!m_dwStdConversion) { + AdobeCMYK_to_sRGB1(pSrcBuf[0], pSrcBuf[1], pSrcBuf[2], pSrcBuf[3], + pDestBuf[2], pDestBuf[1], pDestBuf[0]); + } else { + uint8_t k = pSrcBuf[3]; + pDestBuf[2] = 255 - std::min(255, pSrcBuf[0] + k); + pDestBuf[1] = 255 - std::min(255, pSrcBuf[1] + k); + pDestBuf[0] = 255 - std::min(255, pSrcBuf[2] + k); + } + pSrcBuf += 4; + pDestBuf += 3; + } + } +} +const uint8_t g_sRGBSamples1[] = { + 0, 3, 6, 10, 13, 15, 18, 20, 22, 23, 25, 27, 28, 30, 31, + 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 49, 50, 51, 52, 53, 53, 54, 55, 56, 56, 57, 58, 58, + 59, 60, 61, 61, 62, 62, 63, 64, 64, 65, 66, 66, 67, 67, 68, + 68, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 76, 76, + 77, 77, 78, 78, 79, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, + 84, 84, 85, 85, 85, 86, 86, 87, 87, 88, 88, 88, 89, 89, 90, + 90, 91, 91, 91, 92, 92, 93, 93, 93, 94, 94, 95, 95, 95, 96, + 96, 97, 97, 97, 98, 98, 98, 99, 99, 99, 100, 100, 101, 101, 101, + 102, 102, 102, 103, 103, 103, 104, 104, 104, 105, 105, 106, 106, 106, 107, + 107, 107, 108, 108, 108, 109, 109, 109, 110, 110, 110, 110, 111, 111, 111, + 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 115, 116, 116, + 116, 117, 117, 117, 118, 118, 118, 118, 119, 119, 119, 120, +}; +const uint8_t g_sRGBSamples2[] = { + 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 148, 149, + 150, 151, 152, 153, 154, 155, 155, 156, 157, 158, 159, 159, 160, 161, 162, + 163, 163, 164, 165, 166, 167, 167, 168, 169, 170, 170, 171, 172, 173, 173, + 174, 175, 175, 176, 177, 178, 178, 179, 180, 180, 181, 182, 182, 183, 184, + 185, 185, 186, 187, 187, 188, 189, 189, 190, 190, 191, 192, 192, 193, 194, + 194, 195, 196, 196, 197, 197, 198, 199, 199, 200, 200, 201, 202, 202, 203, + 203, 204, 205, 205, 206, 206, 207, 208, 208, 209, 209, 210, 210, 211, 212, + 212, 213, 213, 214, 214, 215, 215, 216, 216, 217, 218, 218, 219, 219, 220, + 220, 221, 221, 222, 222, 223, 223, 224, 224, 225, 226, 226, 227, 227, 228, + 228, 229, 229, 230, 230, 231, 231, 232, 232, 233, 233, 234, 234, 235, 235, + 236, 236, 237, 237, 238, 238, 238, 239, 239, 240, 240, 241, 241, 242, 242, + 243, 243, 244, 244, 245, 245, 246, 246, 246, 247, 247, 248, 248, 249, 249, + 250, 250, 251, 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, +}; + +static FX_FLOAT RGB_Conversion(FX_FLOAT colorComponent) { + if (colorComponent > 1) { + colorComponent = 1; + } + if (colorComponent < 0) { + colorComponent = 0; + } + int scale = (int)(colorComponent * 1023); + if (scale < 0) { + scale = 0; + } + if (scale < 192) { + colorComponent = (g_sRGBSamples1[scale] / 255.0f); + } else { + colorComponent = (g_sRGBSamples2[scale / 4 - 48] / 255.0f); + } + return colorComponent; +} + +static void XYZ_to_sRGB(FX_FLOAT X, + FX_FLOAT Y, + FX_FLOAT Z, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) { + FX_FLOAT R1 = 3.2410f * X - 1.5374f * Y - 0.4986f * Z; + FX_FLOAT G1 = -0.9692f * X + 1.8760f * Y + 0.0416f * Z; + FX_FLOAT B1 = 0.0556f * X - 0.2040f * Y + 1.0570f * Z; + + R = RGB_Conversion(R1); + G = RGB_Conversion(G1); + B = RGB_Conversion(B1); +} + +static void XYZ_to_sRGB_WhitePoint(FX_FLOAT X, + FX_FLOAT Y, + FX_FLOAT Z, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B, + FX_FLOAT Xw, + FX_FLOAT Yw, + FX_FLOAT Zw) { + // The following RGB_xyz is based on + // sRGB value {Rx,Ry}={0.64, 0.33}, {Gx,Gy}={0.30, 0.60}, {Bx,By}={0.15, 0.06} + + FX_FLOAT Rx = 0.64f, Ry = 0.33f; + FX_FLOAT Gx = 0.30f, Gy = 0.60f; + FX_FLOAT Bx = 0.15f, By = 0.06f; + CFX_Matrix_3by3 RGB_xyz(Rx, Gx, Bx, Ry, Gy, By, 1 - Rx - Ry, 1 - Gx - Gy, + 1 - Bx - By); + CFX_Vector_3by1 whitePoint(Xw, Yw, Zw); + CFX_Vector_3by1 XYZ(X, Y, Z); + + CFX_Vector_3by1 RGB_Sum_XYZ = RGB_xyz.Inverse().TransformVector(whitePoint); + CFX_Matrix_3by3 RGB_SUM_XYZ_DIAG(RGB_Sum_XYZ.a, 0, 0, 0, RGB_Sum_XYZ.b, 0, 0, + 0, RGB_Sum_XYZ.c); + CFX_Matrix_3by3 M = RGB_xyz.Multiply(RGB_SUM_XYZ_DIAG); + CFX_Vector_3by1 RGB = M.Inverse().TransformVector(XYZ); + + R = RGB_Conversion(RGB.a); + G = RGB_Conversion(RGB.b); + B = RGB_Conversion(RGB.c); +} +class CPDF_CalGray : public CPDF_ColorSpace { + public: + explicit CPDF_CalGray(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_CALGRAY, 1) {} + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + FX_BOOL SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const override; + void TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask = FALSE) const override; + + private: + FX_FLOAT m_WhitePoint[3]; + FX_FLOAT m_BlackPoint[3]; + FX_FLOAT m_Gamma; +}; + +FX_BOOL CPDF_CalGray::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + CPDF_Dictionary* pDict = pArray->GetDictAt(1); + if (!pDict) + return FALSE; + + CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint"); + int i; + for (i = 0; i < 3; i++) { + m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0; + } + pParam = pDict->GetArrayBy("BlackPoint"); + for (i = 0; i < 3; i++) { + m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0; + } + m_Gamma = pDict->GetNumberBy("Gamma"); + if (m_Gamma == 0) { + m_Gamma = 1.0f; + } + return TRUE; +} +FX_BOOL CPDF_CalGray::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + R = G = B = *pBuf; + return TRUE; +} +FX_BOOL CPDF_CalGray::SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const { + if (R == G && R == B) { + *pBuf = R; + return TRUE; + } + return FALSE; +} +void CPDF_CalGray::TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask) const { + for (int i = 0; i < pixels; i++) { + *pDestBuf++ = pSrcBuf[i]; + *pDestBuf++ = pSrcBuf[i]; + *pDestBuf++ = pSrcBuf[i]; + } +} +class CPDF_CalRGB : public CPDF_ColorSpace { + public: + explicit CPDF_CalRGB(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_CALRGB, 3) {} + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + FX_BOOL SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const override; + void TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask = FALSE) const override; + + FX_FLOAT m_WhitePoint[3]; + FX_FLOAT m_BlackPoint[3]; + FX_FLOAT m_Gamma[3]; + FX_FLOAT m_Matrix[9]; + FX_BOOL m_bGamma; + FX_BOOL m_bMatrix; +}; +FX_BOOL CPDF_CalRGB::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + CPDF_Dictionary* pDict = pArray->GetDictAt(1); + if (!pDict) + return FALSE; + + CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint"); + int i; + for (i = 0; i < 3; i++) { + m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0; + } + pParam = pDict->GetArrayBy("BlackPoint"); + for (i = 0; i < 3; i++) { + m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0; + } + pParam = pDict->GetArrayBy("Gamma"); + if (pParam) { + m_bGamma = TRUE; + for (i = 0; i < 3; i++) { + m_Gamma[i] = pParam->GetNumberAt(i); + } + } else { + m_bGamma = FALSE; + } + pParam = pDict->GetArrayBy("Matrix"); + if (pParam) { + m_bMatrix = TRUE; + for (i = 0; i < 9; i++) { + m_Matrix[i] = pParam->GetNumberAt(i); + } + } else { + m_bMatrix = FALSE; + } + return TRUE; +} +FX_BOOL CPDF_CalRGB::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + FX_FLOAT A_ = pBuf[0]; + FX_FLOAT B_ = pBuf[1]; + FX_FLOAT C_ = pBuf[2]; + if (m_bGamma) { + A_ = (FX_FLOAT)FXSYS_pow(A_, m_Gamma[0]); + B_ = (FX_FLOAT)FXSYS_pow(B_, m_Gamma[1]); + C_ = (FX_FLOAT)FXSYS_pow(C_, m_Gamma[2]); + } + FX_FLOAT X, Y, Z; + if (m_bMatrix) { + X = m_Matrix[0] * A_ + m_Matrix[3] * B_ + m_Matrix[6] * C_; + Y = m_Matrix[1] * A_ + m_Matrix[4] * B_ + m_Matrix[7] * C_; + Z = m_Matrix[2] * A_ + m_Matrix[5] * B_ + m_Matrix[8] * C_; + } else { + X = A_; + Y = B_; + Z = C_; + } + XYZ_to_sRGB_WhitePoint(X, Y, Z, R, G, B, m_WhitePoint[0], m_WhitePoint[1], + m_WhitePoint[2]); + return TRUE; +} +FX_BOOL CPDF_CalRGB::SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const { + pBuf[0] = R; + pBuf[1] = G; + pBuf[2] = B; + return TRUE; +} +void CPDF_CalRGB::TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask) const { + if (bTransMask) { + FX_FLOAT Cal[3]; + FX_FLOAT R, G, B; + for (int i = 0; i < pixels; i++) { + Cal[0] = ((FX_FLOAT)pSrcBuf[2]) / 255; + Cal[1] = ((FX_FLOAT)pSrcBuf[1]) / 255; + Cal[2] = ((FX_FLOAT)pSrcBuf[0]) / 255; + GetRGB(Cal, R, G, B); + pDestBuf[0] = FXSYS_round(B * 255); + pDestBuf[1] = FXSYS_round(G * 255); + pDestBuf[2] = FXSYS_round(R * 255); + pSrcBuf += 3; + pDestBuf += 3; + } + } + ReverseRGB(pDestBuf, pSrcBuf, pixels); +} +class CPDF_LabCS : public CPDF_ColorSpace { + public: + explicit CPDF_LabCS(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_LAB, 3) {} + void GetDefaultValue(int iComponent, + FX_FLOAT& value, + FX_FLOAT& min, + FX_FLOAT& max) const override; + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + FX_BOOL SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const override; + void TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask = FALSE) const override; + + FX_FLOAT m_WhitePoint[3]; + FX_FLOAT m_BlackPoint[3]; + FX_FLOAT m_Ranges[4]; +}; +FX_BOOL CPDF_LabCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + CPDF_Dictionary* pDict = pArray->GetDictAt(1); + if (!pDict) { + return FALSE; + } + CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint"); + int i; + for (i = 0; i < 3; i++) { + m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0; + } + pParam = pDict->GetArrayBy("BlackPoint"); + for (i = 0; i < 3; i++) { + m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0; + } + pParam = pDict->GetArrayBy("Range"); + const FX_FLOAT def_ranges[4] = {-100 * 1.0f, 100 * 1.0f, -100 * 1.0f, + 100 * 1.0f}; + for (i = 0; i < 4; i++) { + m_Ranges[i] = pParam ? pParam->GetNumberAt(i) : def_ranges[i]; + } + return TRUE; +} +void CPDF_LabCS::GetDefaultValue(int iComponent, + FX_FLOAT& value, + FX_FLOAT& min, + FX_FLOAT& max) const { + assert(iComponent < 3); + value = 0; + if (iComponent == 0) { + min = 0; + max = 100 * 1.0f; + } else { + min = m_Ranges[iComponent * 2 - 2]; + max = m_Ranges[iComponent * 2 - 1]; + if (value < min) { + value = min; + } else if (value > max) { + value = max; + } + } +} +FX_BOOL CPDF_LabCS::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + FX_FLOAT Lstar = pBuf[0]; + FX_FLOAT astar = pBuf[1]; + FX_FLOAT bstar = pBuf[2]; + FX_FLOAT M = (Lstar + 16.0f) / 116.0f; + FX_FLOAT L = M + astar / 500.0f; + FX_FLOAT N = M - bstar / 200.0f; + FX_FLOAT X, Y, Z; + if (L < 0.2069f) { + X = 0.957f * 0.12842f * (L - 0.1379f); + } else { + X = 0.957f * L * L * L; + } + if (M < 0.2069f) { + Y = 0.12842f * (M - 0.1379f); + } else { + Y = M * M * M; + } + if (N < 0.2069f) { + Z = 1.0889f * 0.12842f * (N - 0.1379f); + } else { + Z = 1.0889f * N * N * N; + } + XYZ_to_sRGB(X, Y, Z, R, G, B); + return TRUE; +} +FX_BOOL CPDF_LabCS::SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const { + return FALSE; +} +void CPDF_LabCS::TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask) const { + for (int i = 0; i < pixels; i++) { + FX_FLOAT lab[3]; + FX_FLOAT R, G, B; + lab[0] = (pSrcBuf[0] * 100 / 255.0f); + lab[1] = (FX_FLOAT)(pSrcBuf[1] - 128); + lab[2] = (FX_FLOAT)(pSrcBuf[2] - 128); + GetRGB(lab, R, G, B); + pDestBuf[0] = (int32_t)(B * 255); + pDestBuf[1] = (int32_t)(G * 255); + pDestBuf[2] = (int32_t)(R * 255); + pDestBuf += 3; + pSrcBuf += 3; + } +} +CPDF_IccProfile::CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize) + : m_bsRGB(FALSE), m_pTransform(NULL), m_nSrcComponents(0) { + if (dwSize == 3144 && + FXSYS_memcmp(pData + 0x190, "sRGB IEC61966-2.1", 17) == 0) { + m_bsRGB = TRUE; + m_nSrcComponents = 3; + } else if (CPDF_ModuleMgr::Get()->GetIccModule()) { + m_pTransform = CPDF_ModuleMgr::Get()->GetIccModule()->CreateTransform_sRGB( + pData, dwSize, m_nSrcComponents); + } +} +CPDF_IccProfile::~CPDF_IccProfile() { + if (m_pTransform) { + CPDF_ModuleMgr::Get()->GetIccModule()->DestroyTransform(m_pTransform); + } +} +class CPDF_ICCBasedCS : public CPDF_ColorSpace { + public: + explicit CPDF_ICCBasedCS(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_ICCBASED, 0), + m_pAlterCS(nullptr), + m_pProfile(nullptr), + m_pCache(nullptr), + m_pRanges(nullptr), + m_bOwn(FALSE) {} + ~CPDF_ICCBasedCS() override; + + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + FX_BOOL SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const override; + FX_BOOL v_GetCMYK(FX_FLOAT* pBuf, + FX_FLOAT& c, + FX_FLOAT& m, + FX_FLOAT& y, + FX_FLOAT& k) const override; + void EnableStdConversion(FX_BOOL bEnabled) override; + void TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask = FALSE) const override; + + CPDF_ColorSpace* m_pAlterCS; + CPDF_IccProfile* m_pProfile; + uint8_t* m_pCache; + FX_FLOAT* m_pRanges; + FX_BOOL m_bOwn; +}; + +CPDF_ICCBasedCS::~CPDF_ICCBasedCS() { + FX_Free(m_pCache); + FX_Free(m_pRanges); + if (m_pAlterCS && m_bOwn) { + m_pAlterCS->ReleaseCS(); + } + if (m_pProfile && m_pDocument) { + m_pDocument->GetPageData()->ReleaseIccProfile(m_pProfile); + } +} + +FX_BOOL CPDF_ICCBasedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + CPDF_Stream* pStream = pArray->GetStreamAt(1); + if (!pStream) { + return FALSE; + } + m_pProfile = pDoc->LoadIccProfile(pStream); + if (!m_pProfile) { + return FALSE; + } + m_nComponents = + m_pProfile + ->GetComponents(); // Try using the nComponents from ICC profile + CPDF_Dictionary* pDict = pStream->GetDict(); + if (!m_pProfile->m_pTransform) { // No valid ICC profile or using sRGB + CPDF_Object* pAlterCSObj = + pDict ? pDict->GetElementValue("Alternate") : NULL; + if (pAlterCSObj) { + CPDF_ColorSpace* pAlterCS = CPDF_ColorSpace::Load(pDoc, pAlterCSObj); + if (pAlterCS) { + if (m_nComponents == 0) { // NO valid ICC profile + if (pAlterCS->CountComponents() > 0) { // Use Alternative colorspace + m_nComponents = pAlterCS->CountComponents(); + m_pAlterCS = pAlterCS; + m_bOwn = TRUE; + } else { // No valid alternative colorspace + pAlterCS->ReleaseCS(); + int32_t nDictComponents = pDict ? pDict->GetIntegerBy("N") : 0; + if (nDictComponents != 1 && nDictComponents != 3 && + nDictComponents != 4) { + return FALSE; + } + m_nComponents = nDictComponents; + } + + } else { // Using sRGB + if (pAlterCS->CountComponents() != m_nComponents) { + pAlterCS->ReleaseCS(); + } else { + m_pAlterCS = pAlterCS; + m_bOwn = TRUE; + } + } + } + } + if (!m_pAlterCS) { + if (m_nComponents == 1) { + m_pAlterCS = GetStockCS(PDFCS_DEVICEGRAY); + } else if (m_nComponents == 3) { + m_pAlterCS = GetStockCS(PDFCS_DEVICERGB); + } else if (m_nComponents == 4) { + m_pAlterCS = GetStockCS(PDFCS_DEVICECMYK); + } + } + } + CPDF_Array* pRanges = pDict->GetArrayBy("Range"); + m_pRanges = FX_Alloc2D(FX_FLOAT, m_nComponents, 2); + for (int i = 0; i < m_nComponents * 2; i++) { + if (pRanges) { + m_pRanges[i] = pRanges->GetNumberAt(i); + } else if (i % 2) { + m_pRanges[i] = 1.0f; + } else { + m_pRanges[i] = 0; + } + } + return TRUE; +} +FX_BOOL CPDF_ICCBasedCS::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + if (m_pProfile && m_pProfile->m_bsRGB) { + R = pBuf[0]; + G = pBuf[1]; + B = pBuf[2]; + return TRUE; + } + ICodec_IccModule* pIccModule = CPDF_ModuleMgr::Get()->GetIccModule(); + if (!m_pProfile->m_pTransform || !pIccModule) { + if (m_pAlterCS) { + return m_pAlterCS->GetRGB(pBuf, R, G, B); + } + R = G = B = 0.0f; + return TRUE; + } + FX_FLOAT rgb[3]; + pIccModule->SetComponents(m_nComponents); + pIccModule->Translate(m_pProfile->m_pTransform, pBuf, rgb); + R = rgb[0]; + G = rgb[1]; + B = rgb[2]; + return TRUE; +} +FX_BOOL CPDF_ICCBasedCS::v_GetCMYK(FX_FLOAT* pBuf, + FX_FLOAT& c, + FX_FLOAT& m, + FX_FLOAT& y, + FX_FLOAT& k) const { + if (m_nComponents != 4) { + return FALSE; + } + c = pBuf[0]; + m = pBuf[1]; + y = pBuf[2]; + k = pBuf[3]; + return TRUE; +} +FX_BOOL CPDF_ICCBasedCS::SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const { + return FALSE; +} +void CPDF_ICCBasedCS::EnableStdConversion(FX_BOOL bEnabled) { + CPDF_ColorSpace::EnableStdConversion(bEnabled); + if (m_pAlterCS) { + m_pAlterCS->EnableStdConversion(bEnabled); + } +} +void CPDF_ICCBasedCS::TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask) const { + if (m_pProfile->m_bsRGB) { + ReverseRGB(pDestBuf, pSrcBuf, pixels); + } else if (m_pProfile->m_pTransform) { + int nMaxColors = 1; + for (int i = 0; i < m_nComponents; i++) { + nMaxColors *= 52; + } + if (m_nComponents > 3 || image_width * image_height < nMaxColors * 3 / 2) { + CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline( + m_pProfile->m_pTransform, pDestBuf, pSrcBuf, pixels); + } else { + if (!m_pCache) { + ((CPDF_ICCBasedCS*)this)->m_pCache = FX_Alloc2D(uint8_t, nMaxColors, 3); + uint8_t* temp_src = FX_Alloc2D(uint8_t, nMaxColors, m_nComponents); + uint8_t* pSrc = temp_src; + for (int i = 0; i < nMaxColors; i++) { + FX_DWORD color = i; + FX_DWORD order = nMaxColors / 52; + for (int c = 0; c < m_nComponents; c++) { + *pSrc++ = (uint8_t)(color / order * 5); + color %= order; + order /= 52; + } + } + CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline( + m_pProfile->m_pTransform, m_pCache, temp_src, nMaxColors); + FX_Free(temp_src); + } + for (int i = 0; i < pixels; i++) { + int index = 0; + for (int c = 0; c < m_nComponents; c++) { + index = index * 52 + (*pSrcBuf) / 5; + pSrcBuf++; + } + index *= 3; + *pDestBuf++ = m_pCache[index]; + *pDestBuf++ = m_pCache[index + 1]; + *pDestBuf++ = m_pCache[index + 2]; + } + } + } else if (m_pAlterCS) { + m_pAlterCS->TranslateImageLine(pDestBuf, pSrcBuf, pixels, image_width, + image_height); + } +} +class CPDF_IndexedCS : public CPDF_ColorSpace { + public: + explicit CPDF_IndexedCS(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_INDEXED, 1), + m_pBaseCS(nullptr), + m_pCountedBaseCS(nullptr), + m_pCompMinMax(nullptr) {} + ~CPDF_IndexedCS() override; + + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + CPDF_ColorSpace* GetBaseCS() const override; + void EnableStdConversion(FX_BOOL bEnabled) override; + + CPDF_ColorSpace* m_pBaseCS; + CPDF_CountedColorSpace* m_pCountedBaseCS; + int m_nBaseComponents; + int m_MaxIndex; + CFX_ByteString m_Table; + FX_FLOAT* m_pCompMinMax; +}; +CPDF_IndexedCS::~CPDF_IndexedCS() { + FX_Free(m_pCompMinMax); + CPDF_ColorSpace* pCS = m_pCountedBaseCS ? m_pCountedBaseCS->get() : NULL; + if (pCS && m_pDocument) { + m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); + } +} +FX_BOOL CPDF_IndexedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + if (pArray->GetCount() < 4) { + return FALSE; + } + CPDF_Object* pBaseObj = pArray->GetElementValue(1); + if (pBaseObj == m_pArray) { + return FALSE; + } + CPDF_DocPageData* pDocPageData = pDoc->GetPageData(); + m_pBaseCS = pDocPageData->GetColorSpace(pBaseObj, NULL); + if (!m_pBaseCS) { + return FALSE; + } + m_pCountedBaseCS = pDocPageData->FindColorSpacePtr(m_pBaseCS->GetArray()); + m_nBaseComponents = m_pBaseCS->CountComponents(); + m_pCompMinMax = FX_Alloc2D(FX_FLOAT, m_nBaseComponents, 2); + FX_FLOAT defvalue; + for (int i = 0; i < m_nBaseComponents; i++) { + m_pBaseCS->GetDefaultValue(i, defvalue, m_pCompMinMax[i * 2], + m_pCompMinMax[i * 2 + 1]); + m_pCompMinMax[i * 2 + 1] -= m_pCompMinMax[i * 2]; + } + m_MaxIndex = pArray->GetIntegerAt(2); + + CPDF_Object* pTableObj = pArray->GetElementValue(3); + if (!pTableObj) + return FALSE; + + if (CPDF_String* pString = pTableObj->AsString()) { + m_Table = pString->GetString(); + } else if (CPDF_Stream* pStream = pTableObj->AsStream()) { + CPDF_StreamAcc acc; + acc.LoadAllData(pStream, FALSE); + m_Table = CFX_ByteStringC(acc.GetData(), acc.GetSize()); + } + return TRUE; +} + +FX_BOOL CPDF_IndexedCS::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + int index = (int32_t)(*pBuf); + if (index < 0 || index > m_MaxIndex) { + return FALSE; + } + if (m_nBaseComponents) { + if (index == INT_MAX || (index + 1) > INT_MAX / m_nBaseComponents || + (index + 1) * m_nBaseComponents > (int)m_Table.GetLength()) { + R = G = B = 0; + return FALSE; + } + } + CFX_FixedBufGrow Comps(m_nBaseComponents); + FX_FLOAT* comps = Comps; + const uint8_t* pTable = m_Table; + for (int i = 0; i < m_nBaseComponents; i++) { + comps[i] = + m_pCompMinMax[i * 2] + + m_pCompMinMax[i * 2 + 1] * pTable[index * m_nBaseComponents + i] / 255; + } + return m_pBaseCS->GetRGB(comps, R, G, B); +} +CPDF_ColorSpace* CPDF_IndexedCS::GetBaseCS() const { + return m_pBaseCS; +} +void CPDF_IndexedCS::EnableStdConversion(FX_BOOL bEnabled) { + CPDF_ColorSpace::EnableStdConversion(bEnabled); + if (m_pBaseCS) { + m_pBaseCS->EnableStdConversion(bEnabled); + } +} + +#define MAX_PATTERN_COLORCOMPS 16 +struct PatternValue { + CPDF_Pattern* m_pPattern; + CPDF_CountedPattern* m_pCountedPattern; + int m_nComps; + FX_FLOAT m_Comps[MAX_PATTERN_COLORCOMPS]; +}; + +CPDF_PatternCS::~CPDF_PatternCS() { + CPDF_ColorSpace* pCS = m_pCountedBaseCS ? m_pCountedBaseCS->get() : NULL; + if (pCS && m_pDocument) { + m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); + } +} +FX_BOOL CPDF_PatternCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + CPDF_Object* pBaseCS = pArray->GetElementValue(1); + if (pBaseCS == m_pArray) { + return FALSE; + } + CPDF_DocPageData* pDocPageData = pDoc->GetPageData(); + m_pBaseCS = pDocPageData->GetColorSpace(pBaseCS, NULL); + if (m_pBaseCS) { + if (m_pBaseCS->GetFamily() == PDFCS_PATTERN) { + return FALSE; + } + m_pCountedBaseCS = pDocPageData->FindColorSpacePtr(m_pBaseCS->GetArray()); + m_nComponents = m_pBaseCS->CountComponents() + 1; + if (m_pBaseCS->CountComponents() > MAX_PATTERN_COLORCOMPS) { + return FALSE; + } + } else { + m_nComponents = 1; + } + return TRUE; +} +FX_BOOL CPDF_PatternCS::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + if (m_pBaseCS) { + ASSERT(m_pBaseCS->GetFamily() != PDFCS_PATTERN); + PatternValue* pvalue = (PatternValue*)pBuf; + if (m_pBaseCS->GetRGB(pvalue->m_Comps, R, G, B)) { + return TRUE; + } + } + R = G = B = 0.75f; + return FALSE; +} +CPDF_ColorSpace* CPDF_PatternCS::GetBaseCS() const { + return m_pBaseCS; +} +class CPDF_SeparationCS : public CPDF_ColorSpace { + public: + explicit CPDF_SeparationCS(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_SEPARATION, 1), + m_pAltCS(nullptr), + m_pFunc(nullptr) {} + ~CPDF_SeparationCS() override; + + // CPDF_ColorSpace: + void GetDefaultValue(int iComponent, + FX_FLOAT& value, + FX_FLOAT& min, + FX_FLOAT& max) const override; + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + void EnableStdConversion(FX_BOOL bEnabled) override; + + CPDF_ColorSpace* m_pAltCS; + CPDF_Function* m_pFunc; + enum { None, All, Colorant } m_Type; +}; +CPDF_SeparationCS::~CPDF_SeparationCS() { + if (m_pAltCS) { + m_pAltCS->ReleaseCS(); + } + delete m_pFunc; +} +void CPDF_SeparationCS::GetDefaultValue(int iComponent, + FX_FLOAT& value, + FX_FLOAT& min, + FX_FLOAT& max) const { + value = 1.0f; + min = 0; + max = 1.0f; +} +FX_BOOL CPDF_SeparationCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + CFX_ByteString name = pArray->GetStringAt(1); + if (name == "None") { + m_Type = None; + } else { + m_Type = Colorant; + CPDF_Object* pAltCS = pArray->GetElementValue(2); + if (pAltCS == m_pArray) { + return FALSE; + } + m_pAltCS = Load(pDoc, pAltCS); + if (!m_pAltCS) { + return FALSE; + } + CPDF_Object* pFuncObj = pArray->GetElementValue(3); + if (pFuncObj && !pFuncObj->IsName()) + m_pFunc = CPDF_Function::Load(pFuncObj); + + if (m_pFunc && m_pFunc->CountOutputs() < m_pAltCS->CountComponents()) { + delete m_pFunc; + m_pFunc = NULL; + } + } + return TRUE; +} +FX_BOOL CPDF_SeparationCS::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + if (m_Type == None) { + return FALSE; + } + if (!m_pFunc) { + if (!m_pAltCS) { + return FALSE; + } + int nComps = m_pAltCS->CountComponents(); + CFX_FixedBufGrow results(nComps); + for (int i = 0; i < nComps; i++) { + results[i] = *pBuf; + } + return m_pAltCS->GetRGB(results, R, G, B); + } + CFX_FixedBufGrow results(m_pFunc->CountOutputs()); + int nresults = 0; + m_pFunc->Call(pBuf, 1, results, nresults); + if (nresults == 0) { + return FALSE; + } + if (m_pAltCS) { + return m_pAltCS->GetRGB(results, R, G, B); + } + R = G = B = 0; + return FALSE; +} +void CPDF_SeparationCS::EnableStdConversion(FX_BOOL bEnabled) { + CPDF_ColorSpace::EnableStdConversion(bEnabled); + if (m_pAltCS) { + m_pAltCS->EnableStdConversion(bEnabled); + } +} +class CPDF_DeviceNCS : public CPDF_ColorSpace { + public: + explicit CPDF_DeviceNCS(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_DEVICEN, 0), + m_pAltCS(nullptr), + m_pFunc(nullptr) {} + ~CPDF_DeviceNCS() override; + + // CPDF_ColorSpace: + void GetDefaultValue(int iComponent, + FX_FLOAT& value, + FX_FLOAT& min, + FX_FLOAT& max) const override; + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + void EnableStdConversion(FX_BOOL bEnabled) override; + + CPDF_ColorSpace* m_pAltCS; + CPDF_Function* m_pFunc; +}; +CPDF_DeviceNCS::~CPDF_DeviceNCS() { + delete m_pFunc; + if (m_pAltCS) { + m_pAltCS->ReleaseCS(); + } +} +void CPDF_DeviceNCS::GetDefaultValue(int iComponent, + FX_FLOAT& value, + FX_FLOAT& min, + FX_FLOAT& max) const { + value = 1.0f; + min = 0; + max = 1.0f; +} +FX_BOOL CPDF_DeviceNCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { + CPDF_Array* pObj = ToArray(pArray->GetElementValue(1)); + if (!pObj) + return FALSE; + + m_nComponents = pObj->GetCount(); + CPDF_Object* pAltCS = pArray->GetElementValue(2); + if (!pAltCS || pAltCS == m_pArray) { + return FALSE; + } + m_pAltCS = Load(pDoc, pAltCS); + m_pFunc = CPDF_Function::Load(pArray->GetElementValue(3)); + if (!m_pAltCS || !m_pFunc) { + return FALSE; + } + if (m_pFunc->CountOutputs() < m_pAltCS->CountComponents()) { + return FALSE; + } + return TRUE; +} +FX_BOOL CPDF_DeviceNCS::GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const { + if (!m_pFunc) { + return FALSE; + } + CFX_FixedBufGrow results(m_pFunc->CountOutputs()); + int nresults = 0; + m_pFunc->Call(pBuf, m_nComponents, results, nresults); + if (nresults == 0) { + return FALSE; + } + return m_pAltCS->GetRGB(results, R, G, B); +} +void CPDF_DeviceNCS::EnableStdConversion(FX_BOOL bEnabled) { + CPDF_ColorSpace::EnableStdConversion(bEnabled); + if (m_pAltCS) { + m_pAltCS->EnableStdConversion(bEnabled); + } +} + +CPDF_ColorSpace* CPDF_ColorSpace::GetStockCS(int family) { + return CPDF_ModuleMgr::Get()->GetPageModule()->GetStockCS(family); +} + +CPDF_ColorSpace* _CSFromName(const CFX_ByteString& name) { + if (name == "DeviceRGB" || name == "RGB") { + return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); + } + if (name == "DeviceGray" || name == "G") { + return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); + } + if (name == "DeviceCMYK" || name == "CMYK") { + return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); + } + if (name == "Pattern") { + return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); + } + return NULL; +} +CPDF_ColorSpace* CPDF_ColorSpace::Load(CPDF_Document* pDoc, CPDF_Object* pObj) { + if (!pObj) + return nullptr; + if (pObj->IsName()) + return _CSFromName(pObj->GetString()); + + if (CPDF_Stream* pStream = pObj->AsStream()) { + CPDF_Dictionary* pDict = pStream->GetDict(); + if (!pDict) + return nullptr; + + for (const auto& it : *pDict) { + CPDF_ColorSpace* pRet = nullptr; + CPDF_Object* pValue = it.second; + if (ToName(pValue)) + pRet = _CSFromName(pValue->GetString()); + if (pRet) + return pRet; + } + return nullptr; + } + + CPDF_Array* pArray = pObj->AsArray(); + if (!pArray || pArray->GetCount() == 0) + return nullptr; + + CPDF_Object* pFamilyObj = pArray->GetElementValue(0); + if (!pFamilyObj) + return nullptr; + + CFX_ByteString familyname = pFamilyObj->GetString(); + if (pArray->GetCount() == 1) + return _CSFromName(familyname); + + CPDF_ColorSpace* pCS = NULL; + FX_DWORD id = familyname.GetID(); + if (id == FXBSTR_ID('C', 'a', 'l', 'G')) { + pCS = new CPDF_CalGray(pDoc); + } else if (id == FXBSTR_ID('C', 'a', 'l', 'R')) { + pCS = new CPDF_CalRGB(pDoc); + } else if (id == FXBSTR_ID('L', 'a', 'b', 0)) { + pCS = new CPDF_LabCS(pDoc); + } else if (id == FXBSTR_ID('I', 'C', 'C', 'B')) { + pCS = new CPDF_ICCBasedCS(pDoc); + } else if (id == FXBSTR_ID('I', 'n', 'd', 'e') || + id == FXBSTR_ID('I', 0, 0, 0)) { + pCS = new CPDF_IndexedCS(pDoc); + } else if (id == FXBSTR_ID('S', 'e', 'p', 'a')) { + pCS = new CPDF_SeparationCS(pDoc); + } else if (id == FXBSTR_ID('D', 'e', 'v', 'i')) { + pCS = new CPDF_DeviceNCS(pDoc); + } else if (id == FXBSTR_ID('P', 'a', 't', 't')) { + pCS = new CPDF_PatternCS(pDoc); + } else { + return NULL; + } + pCS->m_pArray = pArray; + if (!pCS->v_Load(pDoc, pArray)) { + pCS->ReleaseCS(); + return NULL; + } + return pCS; +} +void CPDF_ColorSpace::ReleaseCS() { + if (this == GetStockCS(PDFCS_DEVICERGB)) { + return; + } + if (this == GetStockCS(PDFCS_DEVICEGRAY)) { + return; + } + if (this == GetStockCS(PDFCS_DEVICECMYK)) { + return; + } + if (this == GetStockCS(PDFCS_PATTERN)) { + return; + } + delete this; +} +int CPDF_ColorSpace::GetBufSize() const { + if (m_Family == PDFCS_PATTERN) { + return sizeof(PatternValue); + } + return m_nComponents * sizeof(FX_FLOAT); +} +FX_FLOAT* CPDF_ColorSpace::CreateBuf() { + int size = GetBufSize(); + uint8_t* pBuf = FX_Alloc(uint8_t, size); + return (FX_FLOAT*)pBuf; +} +FX_BOOL CPDF_ColorSpace::sRGB() const { + if (m_Family == PDFCS_DEVICERGB) { + return TRUE; + } + if (m_Family != PDFCS_ICCBASED) { + return FALSE; + } + CPDF_ICCBasedCS* pCS = (CPDF_ICCBasedCS*)this; + return pCS->m_pProfile->m_bsRGB; +} +FX_BOOL CPDF_ColorSpace::GetCMYK(FX_FLOAT* pBuf, + FX_FLOAT& c, + FX_FLOAT& m, + FX_FLOAT& y, + FX_FLOAT& k) const { + if (v_GetCMYK(pBuf, c, m, y, k)) { + return TRUE; + } + FX_FLOAT R, G, B; + if (!GetRGB(pBuf, R, G, B)) { + return FALSE; + } + sRGB_to_AdobeCMYK(R, G, B, c, m, y, k); + return TRUE; +} +FX_BOOL CPDF_ColorSpace::SetCMYK(FX_FLOAT* pBuf, + FX_FLOAT c, + FX_FLOAT m, + FX_FLOAT y, + FX_FLOAT k) const { + if (v_SetCMYK(pBuf, c, m, y, k)) { + return TRUE; + } + FX_FLOAT R, G, B; + AdobeCMYK_to_sRGB(c, m, y, k, R, G, B); + return SetRGB(pBuf, R, G, B); +} +void CPDF_ColorSpace::GetDefaultColor(FX_FLOAT* buf) const { + if (!buf || m_Family == PDFCS_PATTERN) { + return; + } + FX_FLOAT min, max; + for (int i = 0; i < m_nComponents; i++) { + GetDefaultValue(i, buf[i], min, max); + } +} +int CPDF_ColorSpace::GetMaxIndex() const { + if (m_Family != PDFCS_INDEXED) { + return 0; + } + CPDF_IndexedCS* pCS = (CPDF_IndexedCS*)this; + return pCS->m_MaxIndex; +} +void CPDF_ColorSpace::TranslateImageLine(uint8_t* dest_buf, + const uint8_t* src_buf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask) const { + CFX_FixedBufGrow srcbuf(m_nComponents); + FX_FLOAT* src = srcbuf; + FX_FLOAT R, G, B; + for (int i = 0; i < pixels; i++) { + for (int j = 0; j < m_nComponents; j++) + if (m_Family == PDFCS_INDEXED) { + src[j] = (FX_FLOAT)(*src_buf++); + } else { + src[j] = (FX_FLOAT)(*src_buf++) / 255; + } + GetRGB(src, R, G, B); + *dest_buf++ = (int32_t)(B * 255); + *dest_buf++ = (int32_t)(G * 255); + *dest_buf++ = (int32_t)(R * 255); + } +} +void CPDF_ColorSpace::EnableStdConversion(FX_BOOL bEnabled) { + if (bEnabled) { + m_dwStdConversion++; + } else if (m_dwStdConversion) { + m_dwStdConversion--; + } +} +CPDF_Color::CPDF_Color(int family) { + m_pCS = CPDF_ColorSpace::GetStockCS(family); + int nComps = 3; + if (family == PDFCS_DEVICEGRAY) { + nComps = 1; + } else if (family == PDFCS_DEVICECMYK) { + nComps = 4; + } + m_pBuffer = FX_Alloc(FX_FLOAT, nComps); + for (int i = 0; i < nComps; i++) { + m_pBuffer[i] = 0; + } +} +CPDF_Color::~CPDF_Color() { + ReleaseBuffer(); + ReleaseColorSpace(); +} +void CPDF_Color::ReleaseBuffer() { + if (!m_pBuffer) { + return; + } + if (m_pCS->GetFamily() == PDFCS_PATTERN) { + PatternValue* pvalue = (PatternValue*)m_pBuffer; + CPDF_Pattern* pPattern = + pvalue->m_pCountedPattern ? pvalue->m_pCountedPattern->get() : NULL; + if (pPattern && pPattern->m_pDocument) { + CPDF_DocPageData* pPageData = pPattern->m_pDocument->GetPageData(); + if (pPageData) { + pPageData->ReleasePattern(pPattern->m_pPatternObj); + } + } + } + FX_Free(m_pBuffer); + m_pBuffer = NULL; +} +void CPDF_Color::ReleaseColorSpace() { + if (m_pCS && m_pCS->m_pDocument && m_pCS->GetArray()) { + m_pCS->m_pDocument->GetPageData()->ReleaseColorSpace(m_pCS->GetArray()); + m_pCS = NULL; + } +} +void CPDF_Color::SetColorSpace(CPDF_ColorSpace* pCS) { + if (m_pCS == pCS) { + if (!m_pBuffer) { + m_pBuffer = pCS->CreateBuf(); + } + ReleaseColorSpace(); + m_pCS = pCS; + return; + } + ReleaseBuffer(); + ReleaseColorSpace(); + m_pCS = pCS; + if (m_pCS) { + m_pBuffer = pCS->CreateBuf(); + pCS->GetDefaultColor(m_pBuffer); + } +} +void CPDF_Color::SetValue(FX_FLOAT* comps) { + if (!m_pBuffer) { + return; + } + if (m_pCS->GetFamily() != PDFCS_PATTERN) { + FXSYS_memcpy(m_pBuffer, comps, m_pCS->CountComponents() * sizeof(FX_FLOAT)); + } +} +void CPDF_Color::SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comps, int ncomps) { + if (ncomps > MAX_PATTERN_COLORCOMPS) { + return; + } + if (!m_pCS || m_pCS->GetFamily() != PDFCS_PATTERN) { + FX_Free(m_pBuffer); + m_pCS = CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); + m_pBuffer = m_pCS->CreateBuf(); + } + CPDF_DocPageData* pDocPageData = NULL; + PatternValue* pvalue = (PatternValue*)m_pBuffer; + if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) { + pDocPageData = pvalue->m_pPattern->m_pDocument->GetPageData(); + if (pDocPageData) { + pDocPageData->ReleasePattern(pvalue->m_pPattern->m_pPatternObj); + } + } + pvalue->m_nComps = ncomps; + pvalue->m_pPattern = pPattern; + if (ncomps) { + FXSYS_memcpy(pvalue->m_Comps, comps, ncomps * sizeof(FX_FLOAT)); + } + pvalue->m_pCountedPattern = NULL; + if (pPattern && pPattern->m_pDocument) { + if (!pDocPageData) { + pDocPageData = pPattern->m_pDocument->GetPageData(); + } + pvalue->m_pCountedPattern = + pDocPageData->FindPatternPtr(pPattern->m_pPatternObj); + } +} +void CPDF_Color::Copy(const CPDF_Color* pSrc) { + ReleaseBuffer(); + ReleaseColorSpace(); + m_pCS = pSrc->m_pCS; + if (m_pCS && m_pCS->m_pDocument) { + CPDF_Array* pArray = m_pCS->GetArray(); + if (pArray) { + m_pCS = m_pCS->m_pDocument->GetPageData()->GetCopiedColorSpace(pArray); + } + } + if (!m_pCS) { + return; + } + m_pBuffer = m_pCS->CreateBuf(); + FXSYS_memcpy(m_pBuffer, pSrc->m_pBuffer, m_pCS->GetBufSize()); + if (m_pCS->GetFamily() == PDFCS_PATTERN) { + PatternValue* pvalue = (PatternValue*)m_pBuffer; + if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) { + pvalue->m_pPattern = + pvalue->m_pPattern->m_pDocument->GetPageData()->GetPattern( + pvalue->m_pPattern->m_pPatternObj, FALSE, + &pvalue->m_pPattern->m_ParentMatrix); + } + } +} +FX_BOOL CPDF_Color::GetRGB(int& R, int& G, int& B) const { + if (!m_pCS || !m_pBuffer) { + return FALSE; + } + FX_FLOAT r = 0.0f, g = 0.0f, b = 0.0f; + if (!m_pCS->GetRGB(m_pBuffer, r, g, b)) { + return FALSE; + } + R = (int32_t)(r * 255 + 0.5f); + G = (int32_t)(g * 255 + 0.5f); + B = (int32_t)(b * 255 + 0.5f); + return TRUE; +} +CPDF_Pattern* CPDF_Color::GetPattern() const { + if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) { + return NULL; + } + PatternValue* pvalue = (PatternValue*)m_pBuffer; + return pvalue->m_pPattern; +} +CPDF_ColorSpace* CPDF_Color::GetPatternCS() const { + if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) { + return NULL; + } + return m_pCS->GetBaseCS(); +} +FX_FLOAT* CPDF_Color::GetPatternColor() const { + if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) { + return NULL; + } + PatternValue* pvalue = (PatternValue*)m_pBuffer; + return pvalue->m_nComps ? pvalue->m_Comps : NULL; +} +FX_BOOL CPDF_Color::IsEqual(const CPDF_Color& other) const { + return m_pCS && m_pCS == other.m_pCS && + FXSYS_memcmp(m_pBuffer, other.m_pBuffer, m_pCS->GetBufSize()) == 0; +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp new file mode 100644 index 0000000000..1a31364b1c --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp @@ -0,0 +1,610 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include "core/fpdfapi/fpdf_font/font_int.h" +#include "core/include/fdrm/fx_crypt.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" + +class CPDF_PageModule : public IPDF_PageModule { + public: + CPDF_PageModule() + : m_StockGrayCS(nullptr, PDFCS_DEVICEGRAY), + m_StockRGBCS(nullptr, PDFCS_DEVICERGB), + m_StockCMYKCS(nullptr, PDFCS_DEVICECMYK), + m_StockPatternCS(nullptr) {} + + private: + ~CPDF_PageModule() override {} + + CPDF_DocPageData* CreateDocData(CPDF_Document* pDoc) override { + return new CPDF_DocPageData(pDoc); + } + + void ReleaseDoc(CPDF_Document* pDoc) override; + void ClearDoc(CPDF_Document* pDoc) override; + + CPDF_FontGlobals* GetFontGlobals() override { return &m_FontGlobals; } + + void ClearStockFont(CPDF_Document* pDoc) override { + m_FontGlobals.Clear(pDoc); + } + + CPDF_ColorSpace* GetStockCS(int family) override; + void NotifyCJKAvailable() override; + + CPDF_FontGlobals m_FontGlobals; + CPDF_DeviceCS m_StockGrayCS; + CPDF_DeviceCS m_StockRGBCS; + CPDF_DeviceCS m_StockCMYKCS; + CPDF_PatternCS m_StockPatternCS; +}; + +CPDF_ColorSpace* CPDF_PageModule::GetStockCS(int family) { + if (family == PDFCS_DEVICEGRAY) { + return &m_StockGrayCS; + } + if (family == PDFCS_DEVICERGB) { + return &m_StockRGBCS; + } + if (family == PDFCS_DEVICECMYK) { + return &m_StockCMYKCS; + } + if (family == PDFCS_PATTERN) { + return &m_StockPatternCS; + } + return NULL; +} + +void CPDF_ModuleMgr::InitPageModule() { + m_pPageModule.reset(new CPDF_PageModule); +} + +void CPDF_PageModule::ReleaseDoc(CPDF_Document* pDoc) { + delete pDoc->GetPageData(); +} +void CPDF_PageModule::ClearDoc(CPDF_Document* pDoc) { + pDoc->GetPageData()->Clear(FALSE); +} +void CPDF_PageModule::NotifyCJKAvailable() { + m_FontGlobals.m_CMapManager.ReloadAll(); +} + +CPDF_Font* CPDF_Document::LoadFont(CPDF_Dictionary* pFontDict) { + ASSERT(pFontDict); + return GetValidatePageData()->GetFont(pFontDict, FALSE); +} + +CPDF_StreamAcc* CPDF_Document::LoadFontFile(CPDF_Stream* pStream) { + return GetValidatePageData()->GetFontFileStreamAcc(pStream); +} + +CPDF_ColorSpace* _CSFromName(const CFX_ByteString& name); +CPDF_ColorSpace* CPDF_Document::LoadColorSpace(CPDF_Object* pCSObj, + CPDF_Dictionary* pResources) { + return GetValidatePageData()->GetColorSpace(pCSObj, pResources); +} +CPDF_Pattern* CPDF_Document::LoadPattern(CPDF_Object* pPatternObj, + FX_BOOL bShading, + const CFX_Matrix* matrix) { + return GetValidatePageData()->GetPattern(pPatternObj, bShading, matrix); +} +CPDF_IccProfile* CPDF_Document::LoadIccProfile(CPDF_Stream* pStream) { + return GetValidatePageData()->GetIccProfile(pStream); +} +CPDF_Image* CPDF_Document::LoadImageF(CPDF_Object* pObj) { + if (!pObj) { + return NULL; + } + FXSYS_assert(pObj->GetObjNum()); + return GetValidatePageData()->GetImage(pObj); +} +void CPDF_Document::RemoveColorSpaceFromPageData(CPDF_Object* pCSObj) { + if (!pCSObj) { + return; + } + GetPageData()->ReleaseColorSpace(pCSObj); +} +CPDF_DocPageData::CPDF_DocPageData(CPDF_Document* pPDFDoc) + : m_pPDFDoc(pPDFDoc), m_bForceClear(FALSE) {} + +CPDF_DocPageData::~CPDF_DocPageData() { + Clear(FALSE); + Clear(TRUE); + + for (auto& it : m_PatternMap) + delete it.second; + m_PatternMap.clear(); + + for (auto& it : m_FontMap) + delete it.second; + m_FontMap.clear(); + + for (auto& it : m_ColorSpaceMap) + delete it.second; + m_ColorSpaceMap.clear(); +} + +void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) { + m_bForceClear = bForceRelease; + + for (auto& it : m_PatternMap) { + CPDF_CountedPattern* ptData = it.second; + if (!ptData->get()) + continue; + + if (bForceRelease || ptData->use_count() < 2) { + ptData->get()->SetForceClear(bForceRelease); + ptData->clear(); + } + } + + for (auto& it : m_FontMap) { + CPDF_CountedFont* fontData = it.second; + if (!fontData->get()) + continue; + + if (bForceRelease || fontData->use_count() < 2) { + fontData->clear(); + } + } + + for (auto& it : m_ColorSpaceMap) { + CPDF_CountedColorSpace* csData = it.second; + if (!csData->get()) + continue; + + if (bForceRelease || csData->use_count() < 2) { + csData->get()->ReleaseCS(); + csData->reset(nullptr); + } + } + + for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end();) { + auto curr_it = it++; + CPDF_CountedIccProfile* ipData = curr_it->second; + if (!ipData->get()) + continue; + + if (bForceRelease || ipData->use_count() < 2) { + for (auto hash_it = m_HashProfileMap.begin(); + hash_it != m_HashProfileMap.end(); ++hash_it) { + if (curr_it->first == hash_it->second) { + m_HashProfileMap.erase(hash_it); + break; + } + } + delete ipData->get(); + delete ipData; + m_IccProfileMap.erase(curr_it); + } + } + + for (auto it = m_FontFileMap.begin(); it != m_FontFileMap.end();) { + auto curr_it = it++; + CPDF_CountedStreamAcc* ftData = curr_it->second; + if (!ftData->get()) + continue; + + if (bForceRelease || ftData->use_count() < 2) { + delete ftData->get(); + delete ftData; + m_FontFileMap.erase(curr_it); + } + } + + for (auto it = m_ImageMap.begin(); it != m_ImageMap.end();) { + auto curr_it = it++; + CPDF_CountedImage* imageData = curr_it->second; + if (!imageData->get()) + continue; + + if (bForceRelease || imageData->use_count() < 2) { + delete imageData->get(); + delete imageData; + m_ImageMap.erase(curr_it); + } + } +} + +CPDF_Font* CPDF_DocPageData::GetFont(CPDF_Dictionary* pFontDict, + FX_BOOL findOnly) { + if (!pFontDict) { + return NULL; + } + if (findOnly) { + auto it = m_FontMap.find(pFontDict); + if (it != m_FontMap.end() && it->second->get()) { + return it->second->AddRef(); + } + return nullptr; + } + + CPDF_CountedFont* fontData = nullptr; + auto it = m_FontMap.find(pFontDict); + if (it != m_FontMap.end()) { + fontData = it->second; + if (fontData->get()) { + return fontData->AddRef(); + } + } + + CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pFontDict); + if (!pFont) { + return nullptr; + } + if (!fontData) { + fontData = new CPDF_CountedFont(pFont); + m_FontMap[pFontDict] = fontData; + } else { + fontData->reset(pFont); + } + return fontData->AddRef(); +} + +CPDF_Font* CPDF_DocPageData::GetStandardFont(const CFX_ByteStringC& fontName, + CPDF_FontEncoding* pEncoding) { + if (fontName.IsEmpty()) + return nullptr; + + for (auto& it : m_FontMap) { + CPDF_CountedFont* fontData = it.second; + CPDF_Font* pFont = fontData->get(); + if (!pFont) + continue; + if (pFont->GetBaseFont() != fontName) + continue; + if (pFont->IsEmbedded()) + continue; + if (!pFont->IsType1Font()) + continue; + if (pFont->GetFontDict()->KeyExist("Widths")) + continue; + + CPDF_Type1Font* pT1Font = pFont->AsType1Font(); + if (pEncoding && !pT1Font->GetEncoding()->IsIdentical(pEncoding)) + continue; + + return fontData->AddRef(); + } + + CPDF_Dictionary* pDict = new CPDF_Dictionary; + pDict->SetAtName("Type", "Font"); + pDict->SetAtName("Subtype", "Type1"); + pDict->SetAtName("BaseFont", fontName); + if (pEncoding) { + pDict->SetAt("Encoding", pEncoding->Realize()); + } + m_pPDFDoc->AddIndirectObject(pDict); + CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pDict); + if (!pFont) { + return nullptr; + } + CPDF_CountedFont* fontData = new CPDF_CountedFont(pFont); + m_FontMap[pDict] = fontData; + return fontData->AddRef(); +} + +void CPDF_DocPageData::ReleaseFont(CPDF_Dictionary* pFontDict) { + if (!pFontDict) + return; + + auto it = m_FontMap.find(pFontDict); + if (it == m_FontMap.end()) + return; + + CPDF_CountedFont* fontData = it->second; + if (fontData->get()) { + fontData->RemoveRef(); + if (fontData->use_count() == 0) { + fontData->clear(); + } + } +} + +CPDF_ColorSpace* CPDF_DocPageData::GetColorSpace( + CPDF_Object* pCSObj, + const CPDF_Dictionary* pResources) { + if (!pCSObj) + return nullptr; + + if (pCSObj->IsName()) { + CFX_ByteString name = pCSObj->GetConstString(); + CPDF_ColorSpace* pCS = _CSFromName(name); + if (!pCS && pResources) { + CPDF_Dictionary* pList = pResources->GetDictBy("ColorSpace"); + if (pList) { + pCSObj = pList->GetElementValue(name); + return GetColorSpace(pCSObj, nullptr); + } + } + if (!pCS || !pResources) + return pCS; + + CPDF_Dictionary* pColorSpaces = pResources->GetDictBy("ColorSpace"); + if (!pColorSpaces) + return pCS; + + CPDF_Object* pDefaultCS = nullptr; + switch (pCS->GetFamily()) { + case PDFCS_DEVICERGB: + pDefaultCS = pColorSpaces->GetElementValue("DefaultRGB"); + break; + case PDFCS_DEVICEGRAY: + pDefaultCS = pColorSpaces->GetElementValue("DefaultGray"); + break; + case PDFCS_DEVICECMYK: + pDefaultCS = pColorSpaces->GetElementValue("DefaultCMYK"); + break; + } + return pDefaultCS ? GetColorSpace(pDefaultCS, nullptr) : pCS; + } + + CPDF_Array* pArray = pCSObj->AsArray(); + if (!pArray || pArray->GetCount() == 0) + return nullptr; + if (pArray->GetCount() == 1) + return GetColorSpace(pArray->GetElementValue(0), pResources); + + CPDF_CountedColorSpace* csData = nullptr; + auto it = m_ColorSpaceMap.find(pCSObj); + if (it != m_ColorSpaceMap.end()) { + csData = it->second; + if (csData->get()) { + return csData->AddRef(); + } + } + + CPDF_ColorSpace* pCS = CPDF_ColorSpace::Load(m_pPDFDoc, pArray); + if (!pCS) + return nullptr; + + if (!csData) { + csData = new CPDF_CountedColorSpace(pCS); + m_ColorSpaceMap[pCSObj] = csData; + } else { + csData->reset(pCS); + } + return csData->AddRef(); +} + +CPDF_ColorSpace* CPDF_DocPageData::GetCopiedColorSpace(CPDF_Object* pCSObj) { + if (!pCSObj) + return nullptr; + + auto it = m_ColorSpaceMap.find(pCSObj); + if (it != m_ColorSpaceMap.end()) + return it->second->AddRef(); + + return nullptr; +} + +void CPDF_DocPageData::ReleaseColorSpace(CPDF_Object* pColorSpace) { + if (!pColorSpace) + return; + + auto it = m_ColorSpaceMap.find(pColorSpace); + if (it == m_ColorSpaceMap.end()) + return; + + CPDF_CountedColorSpace* csData = it->second; + if (csData->get()) { + csData->RemoveRef(); + if (csData->use_count() == 0) { + csData->get()->ReleaseCS(); + csData->reset(nullptr); + } + } +} + +CPDF_Pattern* CPDF_DocPageData::GetPattern(CPDF_Object* pPatternObj, + FX_BOOL bShading, + const CFX_Matrix* matrix) { + if (!pPatternObj) + return nullptr; + + CPDF_CountedPattern* ptData = nullptr; + auto it = m_PatternMap.find(pPatternObj); + if (it != m_PatternMap.end()) { + ptData = it->second; + if (ptData->get()) { + return ptData->AddRef(); + } + } + CPDF_Pattern* pPattern = nullptr; + if (bShading) { + pPattern = + new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, bShading, matrix); + } else { + CPDF_Dictionary* pDict = pPatternObj ? pPatternObj->GetDict() : nullptr; + if (pDict) { + int type = pDict->GetIntegerBy("PatternType"); + if (type == 1) { + pPattern = new CPDF_TilingPattern(m_pPDFDoc, pPatternObj, matrix); + } else if (type == 2) { + pPattern = + new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, FALSE, matrix); + } + } + } + if (!pPattern) + return nullptr; + + if (!ptData) { + ptData = new CPDF_CountedPattern(pPattern); + m_PatternMap[pPatternObj] = ptData; + } else { + ptData->reset(pPattern); + } + return ptData->AddRef(); +} + +void CPDF_DocPageData::ReleasePattern(CPDF_Object* pPatternObj) { + if (!pPatternObj) + return; + + auto it = m_PatternMap.find(pPatternObj); + if (it == m_PatternMap.end()) + return; + + CPDF_CountedPattern* ptData = it->second; + if (ptData->get()) { + ptData->RemoveRef(); + if (ptData->use_count() == 0) { + ptData->clear(); + } + } +} + +CPDF_Image* CPDF_DocPageData::GetImage(CPDF_Object* pImageStream) { + if (!pImageStream) + return nullptr; + + const FX_DWORD dwImageObjNum = pImageStream->GetObjNum(); + auto it = m_ImageMap.find(dwImageObjNum); + if (it != m_ImageMap.end()) { + return it->second->AddRef(); + } + + CPDF_Image* pImage = new CPDF_Image(m_pPDFDoc); + pImage->LoadImageF(pImageStream->AsStream(), FALSE); + + CPDF_CountedImage* imageData = new CPDF_CountedImage(pImage); + m_ImageMap[dwImageObjNum] = imageData; + return imageData->AddRef(); +} + +void CPDF_DocPageData::ReleaseImage(CPDF_Object* pImageStream) { + if (!pImageStream || !pImageStream->GetObjNum()) + return; + + auto it = m_ImageMap.find(pImageStream->GetObjNum()); + if (it == m_ImageMap.end()) + return; + + CPDF_CountedImage* image = it->second; + if (!image) + return; + + image->RemoveRef(); + if (image->use_count() == 0) { + delete image->get(); + delete image; + m_ImageMap.erase(it); + } +} + +CPDF_IccProfile* CPDF_DocPageData::GetIccProfile( + CPDF_Stream* pIccProfileStream) { + if (!pIccProfileStream) + return NULL; + + auto it = m_IccProfileMap.find(pIccProfileStream); + if (it != m_IccProfileMap.end()) { + return it->second->AddRef(); + } + + CPDF_StreamAcc stream; + stream.LoadAllData(pIccProfileStream, FALSE); + uint8_t digest[20]; + CRYPT_SHA1Generate(stream.GetData(), stream.GetSize(), digest); + auto hash_it = m_HashProfileMap.find(CFX_ByteStringC(digest, 20)); + if (hash_it != m_HashProfileMap.end()) { + auto it_copied_stream = m_IccProfileMap.find(hash_it->second); + return it_copied_stream->second->AddRef(); + } + CPDF_IccProfile* pProfile = + new CPDF_IccProfile(stream.GetData(), stream.GetSize()); + CPDF_CountedIccProfile* ipData = new CPDF_CountedIccProfile(pProfile); + m_IccProfileMap[pIccProfileStream] = ipData; + m_HashProfileMap[CFX_ByteStringC(digest, 20)] = pIccProfileStream; + return ipData->AddRef(); +} + +void CPDF_DocPageData::ReleaseIccProfile(CPDF_IccProfile* pIccProfile) { + ASSERT(pIccProfile); + + for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end(); ++it) { + CPDF_CountedIccProfile* profile = it->second; + if (profile->get() != pIccProfile) + continue; + + profile->RemoveRef(); + if (profile->use_count() == 0) { + delete profile->get(); + delete profile; + m_IccProfileMap.erase(it); + return; + } + } +} + +CPDF_StreamAcc* CPDF_DocPageData::GetFontFileStreamAcc( + CPDF_Stream* pFontStream) { + ASSERT(pFontStream); + + auto it = m_FontFileMap.find(pFontStream); + if (it != m_FontFileMap.end()) + return it->second->AddRef(); + + CPDF_Dictionary* pFontDict = pFontStream->GetDict(); + int32_t org_size = pFontDict->GetIntegerBy("Length1") + + pFontDict->GetIntegerBy("Length2") + + pFontDict->GetIntegerBy("Length3"); + if (org_size < 0) + org_size = 0; + + CPDF_StreamAcc* pFontFile = new CPDF_StreamAcc; + pFontFile->LoadAllData(pFontStream, FALSE, org_size); + + CPDF_CountedStreamAcc* ftData = new CPDF_CountedStreamAcc(pFontFile); + m_FontFileMap[pFontStream] = ftData; + return ftData->AddRef(); +} + +void CPDF_DocPageData::ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, + FX_BOOL bForce) { + if (!pFontStream) + return; + + auto it = m_FontFileMap.find(pFontStream); + if (it == m_FontFileMap.end()) + return; + + CPDF_CountedStreamAcc* findData = it->second; + if (!findData) + return; + + findData->RemoveRef(); + if (findData->use_count() == 0 || bForce) { + delete findData->get(); + delete findData; + m_FontFileMap.erase(it); + } +} + +CPDF_CountedColorSpace* CPDF_DocPageData::FindColorSpacePtr( + CPDF_Object* pCSObj) const { + if (!pCSObj) + return nullptr; + + auto it = m_ColorSpaceMap.find(pCSObj); + return it != m_ColorSpaceMap.end() ? it->second : nullptr; +} + +CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr( + CPDF_Object* pPatternObj) const { + if (!pPatternObj) + return nullptr; + + auto it = m_PatternMap.find(pPatternObj); + return it != m_PatternMap.end() ? it->second : nullptr; +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_func.cpp b/core/fpdfapi/fpdf_page/fpdf_page_func.cpp new file mode 100644 index 0000000000..fd37e1d3e4 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_func.cpp @@ -0,0 +1,966 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include + +#include +#include +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_simple_parser.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "third_party/base/numerics/safe_conversions_impl.h" + +namespace { + +enum PDF_PSOP { + PSOP_ADD, + PSOP_SUB, + PSOP_MUL, + PSOP_DIV, + PSOP_IDIV, + PSOP_MOD, + PSOP_NEG, + PSOP_ABS, + PSOP_CEILING, + PSOP_FLOOR, + PSOP_ROUND, + PSOP_TRUNCATE, + PSOP_SQRT, + PSOP_SIN, + PSOP_COS, + PSOP_ATAN, + PSOP_EXP, + PSOP_LN, + PSOP_LOG, + PSOP_CVI, + PSOP_CVR, + PSOP_EQ, + PSOP_NE, + PSOP_GT, + PSOP_GE, + PSOP_LT, + PSOP_LE, + PSOP_AND, + PSOP_OR, + PSOP_XOR, + PSOP_NOT, + PSOP_BITSHIFT, + PSOP_TRUE, + PSOP_FALSE, + PSOP_IF, + PSOP_IFELSE, + PSOP_POP, + PSOP_EXCH, + PSOP_DUP, + PSOP_COPY, + PSOP_INDEX, + PSOP_ROLL, + PSOP_PROC, + PSOP_CONST +}; + +class CPDF_PSEngine; +class CPDF_PSProc; + +class CPDF_PSOP { + public: + explicit CPDF_PSOP(PDF_PSOP op) : m_op(op), m_value(0) { + ASSERT(m_op != PSOP_CONST); + ASSERT(m_op != PSOP_PROC); + } + explicit CPDF_PSOP(FX_FLOAT value) : m_op(PSOP_CONST), m_value(value) {} + explicit CPDF_PSOP(std::unique_ptr proc) + : m_op(PSOP_PROC), m_value(0), m_proc(std::move(proc)) {} + + FX_FLOAT GetFloatValue() const { + if (m_op == PSOP_CONST) + return m_value; + + ASSERT(false); + return 0; + } + CPDF_PSProc* GetProc() const { + if (m_op == PSOP_PROC) + return m_proc.get(); + ASSERT(false); + return nullptr; + } + + PDF_PSOP GetOp() const { return m_op; } + + private: + const PDF_PSOP m_op; + const FX_FLOAT m_value; + std::unique_ptr m_proc; +}; + +class CPDF_PSProc { + public: + CPDF_PSProc() {} + ~CPDF_PSProc() {} + + FX_BOOL Parse(CPDF_SimpleParser* parser); + FX_BOOL Execute(CPDF_PSEngine* pEngine); + + private: + std::vector> m_Operators; +}; + +const size_t PSENGINE_STACKSIZE = 100; + +class CPDF_PSEngine { + public: + CPDF_PSEngine(); + ~CPDF_PSEngine(); + + FX_BOOL Parse(const FX_CHAR* str, int size); + FX_BOOL Execute() { return m_MainProc.Execute(this); } + FX_BOOL DoOperator(PDF_PSOP op); + void Reset() { m_StackCount = 0; } + void Push(FX_FLOAT value); + void Push(int value) { Push((FX_FLOAT)value); } + FX_FLOAT Pop(); + int GetStackSize() const { return m_StackCount; } + + private: + FX_FLOAT m_Stack[PSENGINE_STACKSIZE]; + int m_StackCount; + CPDF_PSProc m_MainProc; +}; + +FX_BOOL CPDF_PSProc::Execute(CPDF_PSEngine* pEngine) { + for (size_t i = 0; i < m_Operators.size(); ++i) { + const PDF_PSOP op = m_Operators[i]->GetOp(); + if (op == PSOP_PROC) + continue; + + if (op == PSOP_CONST) { + pEngine->Push(m_Operators[i]->GetFloatValue()); + continue; + } + + if (op == PSOP_IF) { + if (i == 0 || m_Operators[i - 1]->GetOp() != PSOP_PROC) + return FALSE; + + if (static_cast(pEngine->Pop())) + m_Operators[i - 1]->GetProc()->Execute(pEngine); + } else if (op == PSOP_IFELSE) { + if (i < 2 || m_Operators[i - 1]->GetOp() != PSOP_PROC || + m_Operators[i - 2]->GetOp() != PSOP_PROC) { + return FALSE; + } + size_t offset = static_cast(pEngine->Pop()) ? 2 : 1; + m_Operators[i - offset]->GetProc()->Execute(pEngine); + } else { + pEngine->DoOperator(op); + } + } + return TRUE; +} + +CPDF_PSEngine::CPDF_PSEngine() { + m_StackCount = 0; +} +CPDF_PSEngine::~CPDF_PSEngine() {} +void CPDF_PSEngine::Push(FX_FLOAT v) { + if (m_StackCount == PSENGINE_STACKSIZE) { + return; + } + m_Stack[m_StackCount++] = v; +} +FX_FLOAT CPDF_PSEngine::Pop() { + if (m_StackCount == 0) { + return 0; + } + return m_Stack[--m_StackCount]; +} +const struct PDF_PSOpName { + const FX_CHAR* name; + PDF_PSOP op; +} PDF_PSOpNames[] = {{"add", PSOP_ADD}, {"sub", PSOP_SUB}, + {"mul", PSOP_MUL}, {"div", PSOP_DIV}, + {"idiv", PSOP_IDIV}, {"mod", PSOP_MOD}, + {"neg", PSOP_NEG}, {"abs", PSOP_ABS}, + {"ceiling", PSOP_CEILING}, {"floor", PSOP_FLOOR}, + {"round", PSOP_ROUND}, {"truncate", PSOP_TRUNCATE}, + {"sqrt", PSOP_SQRT}, {"sin", PSOP_SIN}, + {"cos", PSOP_COS}, {"atan", PSOP_ATAN}, + {"exp", PSOP_EXP}, {"ln", PSOP_LN}, + {"log", PSOP_LOG}, {"cvi", PSOP_CVI}, + {"cvr", PSOP_CVR}, {"eq", PSOP_EQ}, + {"ne", PSOP_NE}, {"gt", PSOP_GT}, + {"ge", PSOP_GE}, {"lt", PSOP_LT}, + {"le", PSOP_LE}, {"and", PSOP_AND}, + {"or", PSOP_OR}, {"xor", PSOP_XOR}, + {"not", PSOP_NOT}, {"bitshift", PSOP_BITSHIFT}, + {"true", PSOP_TRUE}, {"false", PSOP_FALSE}, + {"if", PSOP_IF}, {"ifelse", PSOP_IFELSE}, + {"pop", PSOP_POP}, {"exch", PSOP_EXCH}, + {"dup", PSOP_DUP}, {"copy", PSOP_COPY}, + {"index", PSOP_INDEX}, {"roll", PSOP_ROLL}}; + +FX_BOOL CPDF_PSEngine::Parse(const FX_CHAR* str, int size) { + CPDF_SimpleParser parser((uint8_t*)str, size); + CFX_ByteStringC word = parser.GetWord(); + if (word != "{") { + return FALSE; + } + return m_MainProc.Parse(&parser); +} +FX_BOOL CPDF_PSProc::Parse(CPDF_SimpleParser* parser) { + while (1) { + CFX_ByteStringC word = parser->GetWord(); + if (word.IsEmpty()) { + return FALSE; + } + if (word == "}") { + return TRUE; + } + if (word == "{") { + std::unique_ptr proc(new CPDF_PSProc); + std::unique_ptr op(new CPDF_PSOP(std::move(proc))); + m_Operators.push_back(std::move(op)); + if (!m_Operators.back()->GetProc()->Parse(parser)) { + return FALSE; + } + } else { + bool found = false; + for (const PDF_PSOpName& op_name : PDF_PSOpNames) { + if (word == CFX_ByteStringC(op_name.name)) { + std::unique_ptr op(new CPDF_PSOP(op_name.op)); + m_Operators.push_back(std::move(op)); + found = true; + break; + } + } + if (!found) { + std::unique_ptr op(new CPDF_PSOP(FX_atof(word))); + m_Operators.push_back(std::move(op)); + } + } + } +} + +FX_BOOL CPDF_PSEngine::DoOperator(PDF_PSOP op) { + int i1, i2; + FX_FLOAT d1, d2; + switch (op) { + case PSOP_ADD: + d1 = Pop(); + d2 = Pop(); + Push(d1 + d2); + break; + case PSOP_SUB: + d2 = Pop(); + d1 = Pop(); + Push(d1 - d2); + break; + case PSOP_MUL: + d1 = Pop(); + d2 = Pop(); + Push(d1 * d2); + break; + case PSOP_DIV: + d2 = Pop(); + d1 = Pop(); + Push(d1 / d2); + break; + case PSOP_IDIV: + i2 = (int)Pop(); + i1 = (int)Pop(); + Push(i1 / i2); + break; + case PSOP_MOD: + i2 = (int)Pop(); + i1 = (int)Pop(); + Push(i1 % i2); + break; + case PSOP_NEG: + d1 = Pop(); + Push(-d1); + break; + case PSOP_ABS: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_fabs(d1)); + break; + case PSOP_CEILING: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_ceil(d1)); + break; + case PSOP_FLOOR: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_floor(d1)); + break; + case PSOP_ROUND: + d1 = Pop(); + Push(FXSYS_round(d1)); + break; + case PSOP_TRUNCATE: + i1 = (int)Pop(); + Push(i1); + break; + case PSOP_SQRT: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_sqrt(d1)); + break; + case PSOP_SIN: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_sin(d1 * FX_PI / 180.0f)); + break; + case PSOP_COS: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_cos(d1 * FX_PI / 180.0f)); + break; + case PSOP_ATAN: + d2 = Pop(); + d1 = Pop(); + d1 = (FX_FLOAT)(FXSYS_atan2(d1, d2) * 180.0 / FX_PI); + if (d1 < 0) { + d1 += 360; + } + Push(d1); + break; + case PSOP_EXP: + d2 = Pop(); + d1 = Pop(); + Push((FX_FLOAT)FXSYS_pow(d1, d2)); + break; + case PSOP_LN: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_log(d1)); + break; + case PSOP_LOG: + d1 = Pop(); + Push((FX_FLOAT)FXSYS_log10(d1)); + break; + case PSOP_CVI: + i1 = (int)Pop(); + Push(i1); + break; + case PSOP_CVR: + break; + case PSOP_EQ: + d2 = Pop(); + d1 = Pop(); + Push((int)(d1 == d2)); + break; + case PSOP_NE: + d2 = Pop(); + d1 = Pop(); + Push((int)(d1 != d2)); + break; + case PSOP_GT: + d2 = Pop(); + d1 = Pop(); + Push((int)(d1 > d2)); + break; + case PSOP_GE: + d2 = Pop(); + d1 = Pop(); + Push((int)(d1 >= d2)); + break; + case PSOP_LT: + d2 = Pop(); + d1 = Pop(); + Push((int)(d1 < d2)); + break; + case PSOP_LE: + d2 = Pop(); + d1 = Pop(); + Push((int)(d1 <= d2)); + break; + case PSOP_AND: + i1 = (int)Pop(); + i2 = (int)Pop(); + Push(i1 & i2); + break; + case PSOP_OR: + i1 = (int)Pop(); + i2 = (int)Pop(); + Push(i1 | i2); + break; + case PSOP_XOR: + i1 = (int)Pop(); + i2 = (int)Pop(); + Push(i1 ^ i2); + break; + case PSOP_NOT: + i1 = (int)Pop(); + Push((int)!i1); + break; + case PSOP_BITSHIFT: { + int shift = (int)Pop(); + int i = (int)Pop(); + if (shift > 0) { + Push(i << shift); + } else { + Push(i >> -shift); + } + break; + } + case PSOP_TRUE: + Push(1); + break; + case PSOP_FALSE: + Push(0); + break; + case PSOP_POP: + Pop(); + break; + case PSOP_EXCH: + d2 = Pop(); + d1 = Pop(); + Push(d2); + Push(d1); + break; + case PSOP_DUP: + d1 = Pop(); + Push(d1); + Push(d1); + break; + case PSOP_COPY: { + int n = (int)Pop(); + if (n < 0 || n > PSENGINE_STACKSIZE || + m_StackCount + n > PSENGINE_STACKSIZE || n > m_StackCount) { + break; + } + for (int i = 0; i < n; i++) { + m_Stack[m_StackCount + i] = m_Stack[m_StackCount + i - n]; + } + m_StackCount += n; + break; + } + case PSOP_INDEX: { + int n = (int)Pop(); + if (n < 0 || n >= m_StackCount) { + break; + } + Push(m_Stack[m_StackCount - n - 1]); + break; + } + case PSOP_ROLL: { + int j = (int)Pop(); + int n = (int)Pop(); + if (m_StackCount == 0) { + break; + } + if (n < 0 || n > m_StackCount) { + break; + } + if (j < 0) { + for (int i = 0; i < -j; i++) { + FX_FLOAT first = m_Stack[m_StackCount - n]; + for (int ii = 0; ii < n - 1; ii++) { + m_Stack[m_StackCount - n + ii] = m_Stack[m_StackCount - n + ii + 1]; + } + m_Stack[m_StackCount - 1] = first; + } + } else { + for (int i = 0; i < j; i++) { + FX_FLOAT last = m_Stack[m_StackCount - 1]; + int ii; + for (ii = 0; ii < n - 1; ii++) { + m_Stack[m_StackCount - ii - 1] = m_Stack[m_StackCount - ii - 2]; + } + m_Stack[m_StackCount - ii - 1] = last; + } + } + break; + } + default: + break; + } + return TRUE; +} +static FX_FLOAT PDF_Interpolate(FX_FLOAT x, + FX_FLOAT xmin, + FX_FLOAT xmax, + FX_FLOAT ymin, + FX_FLOAT ymax) { + return ((x - xmin) * (ymax - ymin) / (xmax - xmin)) + ymin; +} +static FX_DWORD _GetBits32(const uint8_t* pData, int bitpos, int nbits) { + int result = 0; + for (int i = 0; i < nbits; i++) + if (pData[(bitpos + i) / 8] & (1 << (7 - (bitpos + i) % 8))) { + result |= 1 << (nbits - i - 1); + } + return result; +} +typedef struct { + FX_FLOAT encode_max, encode_min; + int sizes; +} SampleEncodeInfo; +typedef struct { FX_FLOAT decode_max, decode_min; } SampleDecodeInfo; + +class CPDF_SampledFunc : public CPDF_Function { + public: + CPDF_SampledFunc(); + ~CPDF_SampledFunc() override; + + // CPDF_Function + FX_BOOL v_Init(CPDF_Object* pObj) override; + FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; + + SampleEncodeInfo* m_pEncodeInfo; + SampleDecodeInfo* m_pDecodeInfo; + FX_DWORD m_nBitsPerSample; + FX_DWORD m_SampleMax; + CPDF_StreamAcc* m_pSampleStream; +}; + +CPDF_SampledFunc::CPDF_SampledFunc() { + m_pSampleStream = NULL; + m_pEncodeInfo = NULL; + m_pDecodeInfo = NULL; +} +CPDF_SampledFunc::~CPDF_SampledFunc() { + delete m_pSampleStream; + FX_Free(m_pEncodeInfo); + FX_Free(m_pDecodeInfo); +} +FX_BOOL CPDF_SampledFunc::v_Init(CPDF_Object* pObj) { + CPDF_Stream* pStream = pObj->AsStream(); + if (!pStream) + return false; + + CPDF_Dictionary* pDict = pStream->GetDict(); + CPDF_Array* pSize = pDict->GetArrayBy("Size"); + CPDF_Array* pEncode = pDict->GetArrayBy("Encode"); + CPDF_Array* pDecode = pDict->GetArrayBy("Decode"); + m_nBitsPerSample = pDict->GetIntegerBy("BitsPerSample"); + if (m_nBitsPerSample > 32) { + return FALSE; + } + m_SampleMax = 0xffffffff >> (32 - m_nBitsPerSample); + m_pSampleStream = new CPDF_StreamAcc; + m_pSampleStream->LoadAllData(pStream, FALSE); + m_pEncodeInfo = FX_Alloc(SampleEncodeInfo, m_nInputs); + FX_SAFE_DWORD nTotalSampleBits = 1; + for (int i = 0; i < m_nInputs; i++) { + m_pEncodeInfo[i].sizes = pSize ? pSize->GetIntegerAt(i) : 0; + if (!pSize && i == 0) { + m_pEncodeInfo[i].sizes = pDict->GetIntegerBy("Size"); + } + nTotalSampleBits *= m_pEncodeInfo[i].sizes; + if (pEncode) { + m_pEncodeInfo[i].encode_min = pEncode->GetFloatAt(i * 2); + m_pEncodeInfo[i].encode_max = pEncode->GetFloatAt(i * 2 + 1); + } else { + m_pEncodeInfo[i].encode_min = 0; + if (m_pEncodeInfo[i].sizes == 1) { + m_pEncodeInfo[i].encode_max = 1; + } else { + m_pEncodeInfo[i].encode_max = (FX_FLOAT)m_pEncodeInfo[i].sizes - 1; + } + } + } + nTotalSampleBits *= m_nBitsPerSample; + nTotalSampleBits *= m_nOutputs; + FX_SAFE_DWORD nTotalSampleBytes = nTotalSampleBits; + nTotalSampleBytes += 7; + nTotalSampleBytes /= 8; + if (!nTotalSampleBytes.IsValid() || nTotalSampleBytes.ValueOrDie() == 0 || + nTotalSampleBytes.ValueOrDie() > m_pSampleStream->GetSize()) { + return FALSE; + } + m_pDecodeInfo = FX_Alloc(SampleDecodeInfo, m_nOutputs); + for (int i = 0; i < m_nOutputs; i++) { + if (pDecode) { + m_pDecodeInfo[i].decode_min = pDecode->GetFloatAt(2 * i); + m_pDecodeInfo[i].decode_max = pDecode->GetFloatAt(2 * i + 1); + } else { + m_pDecodeInfo[i].decode_min = m_pRanges[i * 2]; + m_pDecodeInfo[i].decode_max = m_pRanges[i * 2 + 1]; + } + } + return TRUE; +} +FX_BOOL CPDF_SampledFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { + int pos = 0; + CFX_FixedBufGrow encoded_input_buf(m_nInputs); + FX_FLOAT* encoded_input = encoded_input_buf; + CFX_FixedBufGrow int_buf(m_nInputs * 2); + int* index = int_buf; + int* blocksize = index + m_nInputs; + for (int i = 0; i < m_nInputs; i++) { + if (i == 0) { + blocksize[i] = 1; + } else { + blocksize[i] = blocksize[i - 1] * m_pEncodeInfo[i - 1].sizes; + } + encoded_input[i] = PDF_Interpolate( + inputs[i], m_pDomains[i * 2], m_pDomains[i * 2 + 1], + m_pEncodeInfo[i].encode_min, m_pEncodeInfo[i].encode_max); + index[i] = (int)encoded_input[i]; + if (index[i] < 0) { + index[i] = 0; + } else if (index[i] > m_pEncodeInfo[i].sizes - 1) { + index[i] = m_pEncodeInfo[i].sizes - 1; + } + pos += index[i] * blocksize[i]; + } + FX_SAFE_INT32 bits_to_output = m_nOutputs; + bits_to_output *= m_nBitsPerSample; + if (!bits_to_output.IsValid()) { + return FALSE; + } + FX_SAFE_INT32 bitpos = pos; + bitpos *= bits_to_output.ValueOrDie(); + if (!bitpos.IsValid()) { + return FALSE; + } + FX_SAFE_INT32 range_check = bitpos; + range_check += bits_to_output.ValueOrDie(); + if (!range_check.IsValid()) { + return FALSE; + } + const uint8_t* pSampleData = m_pSampleStream->GetData(); + if (!pSampleData) { + return FALSE; + } + for (int j = 0; j < m_nOutputs; j++) { + FX_DWORD sample = + _GetBits32(pSampleData, bitpos.ValueOrDie() + j * m_nBitsPerSample, + m_nBitsPerSample); + FX_FLOAT encoded = (FX_FLOAT)sample; + for (int i = 0; i < m_nInputs; i++) { + if (index[i] == m_pEncodeInfo[i].sizes - 1) { + if (index[i] == 0) { + encoded = encoded_input[i] * (FX_FLOAT)sample; + } + } else { + FX_SAFE_INT32 bitpos2 = blocksize[i]; + bitpos2 += pos; + bitpos2 *= m_nOutputs; + bitpos2 += j; + bitpos2 *= m_nBitsPerSample; + if (!bitpos2.IsValid()) { + return FALSE; + } + FX_DWORD sample1 = + _GetBits32(pSampleData, bitpos2.ValueOrDie(), m_nBitsPerSample); + encoded += (encoded_input[i] - index[i]) * + ((FX_FLOAT)sample1 - (FX_FLOAT)sample); + } + } + results[j] = PDF_Interpolate(encoded, 0, (FX_FLOAT)m_SampleMax, + m_pDecodeInfo[j].decode_min, + m_pDecodeInfo[j].decode_max); + } + return TRUE; +} + +class CPDF_PSFunc : public CPDF_Function { + public: + // CPDF_Function + FX_BOOL v_Init(CPDF_Object* pObj) override; + FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; + + CPDF_PSEngine m_PS; +}; + +FX_BOOL CPDF_PSFunc::v_Init(CPDF_Object* pObj) { + CPDF_Stream* pStream = pObj->AsStream(); + CPDF_StreamAcc acc; + acc.LoadAllData(pStream, FALSE); + return m_PS.Parse((const FX_CHAR*)acc.GetData(), acc.GetSize()); +} +FX_BOOL CPDF_PSFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { + CPDF_PSEngine& PS = (CPDF_PSEngine&)m_PS; + PS.Reset(); + int i; + for (i = 0; i < m_nInputs; i++) { + PS.Push(inputs[i]); + } + PS.Execute(); + if (PS.GetStackSize() < m_nOutputs) { + return FALSE; + } + for (i = 0; i < m_nOutputs; i++) { + results[m_nOutputs - i - 1] = PS.Pop(); + } + return TRUE; +} + +class CPDF_ExpIntFunc : public CPDF_Function { + public: + CPDF_ExpIntFunc(); + ~CPDF_ExpIntFunc() override; + + // CPDF_Function + FX_BOOL v_Init(CPDF_Object* pObj) override; + FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; + + FX_FLOAT m_Exponent; + FX_FLOAT* m_pBeginValues; + FX_FLOAT* m_pEndValues; + int m_nOrigOutputs; +}; + +CPDF_ExpIntFunc::CPDF_ExpIntFunc() { + m_pBeginValues = NULL; + m_pEndValues = NULL; +} +CPDF_ExpIntFunc::~CPDF_ExpIntFunc() { + FX_Free(m_pBeginValues); + FX_Free(m_pEndValues); +} +FX_BOOL CPDF_ExpIntFunc::v_Init(CPDF_Object* pObj) { + CPDF_Dictionary* pDict = pObj->GetDict(); + if (!pDict) { + return FALSE; + } + CPDF_Array* pArray0 = pDict->GetArrayBy("C0"); + if (m_nOutputs == 0) { + m_nOutputs = 1; + if (pArray0) { + m_nOutputs = pArray0->GetCount(); + } + } + CPDF_Array* pArray1 = pDict->GetArrayBy("C1"); + m_pBeginValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); + m_pEndValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); + for (int i = 0; i < m_nOutputs; i++) { + m_pBeginValues[i] = pArray0 ? pArray0->GetFloatAt(i) : 0.0f; + m_pEndValues[i] = pArray1 ? pArray1->GetFloatAt(i) : 1.0f; + } + m_Exponent = pDict->GetFloatBy("N"); + m_nOrigOutputs = m_nOutputs; + if (m_nOutputs && m_nInputs > INT_MAX / m_nOutputs) { + return FALSE; + } + m_nOutputs *= m_nInputs; + return TRUE; +} +FX_BOOL CPDF_ExpIntFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { + for (int i = 0; i < m_nInputs; i++) + for (int j = 0; j < m_nOrigOutputs; j++) { + results[i * m_nOrigOutputs + j] = + m_pBeginValues[j] + + (FX_FLOAT)FXSYS_pow(inputs[i], m_Exponent) * + (m_pEndValues[j] - m_pBeginValues[j]); + } + return TRUE; +} + +class CPDF_StitchFunc : public CPDF_Function { + public: + CPDF_StitchFunc(); + ~CPDF_StitchFunc() override; + + // CPDF_Function + FX_BOOL v_Init(CPDF_Object* pObj) override; + FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; + + std::vector m_pSubFunctions; + FX_FLOAT* m_pBounds; + FX_FLOAT* m_pEncode; + + static const int kRequiredNumInputs = 1; +}; + +CPDF_StitchFunc::CPDF_StitchFunc() { + m_pBounds = NULL; + m_pEncode = NULL; +} +CPDF_StitchFunc::~CPDF_StitchFunc() { + for (auto& sub : m_pSubFunctions) { + delete sub; + } + FX_Free(m_pBounds); + FX_Free(m_pEncode); +} +FX_BOOL CPDF_StitchFunc::v_Init(CPDF_Object* pObj) { + CPDF_Dictionary* pDict = pObj->GetDict(); + if (!pDict) { + return FALSE; + } + if (m_nInputs != kRequiredNumInputs) { + return FALSE; + } + CPDF_Array* pArray = pDict->GetArrayBy("Functions"); + if (!pArray) { + return FALSE; + } + FX_DWORD nSubs = pArray->GetCount(); + if (nSubs == 0) { + return FALSE; + } + m_nOutputs = 0; + for (FX_DWORD i = 0; i < nSubs; i++) { + CPDF_Object* pSub = pArray->GetElementValue(i); + if (pSub == pObj) { + return FALSE; + } + std::unique_ptr pFunc(CPDF_Function::Load(pSub)); + if (!pFunc) { + return FALSE; + } + // Check that the input dimensionality is 1, and that all output + // dimensionalities are the same. + if (pFunc->CountInputs() != kRequiredNumInputs) { + return FALSE; + } + if (pFunc->CountOutputs() != m_nOutputs) { + if (m_nOutputs) + return FALSE; + + m_nOutputs = pFunc->CountOutputs(); + } + + m_pSubFunctions.push_back(pFunc.release()); + } + m_pBounds = FX_Alloc(FX_FLOAT, nSubs + 1); + m_pBounds[0] = m_pDomains[0]; + pArray = pDict->GetArrayBy("Bounds"); + if (!pArray) { + return FALSE; + } + for (FX_DWORD i = 0; i < nSubs - 1; i++) { + m_pBounds[i + 1] = pArray->GetFloatAt(i); + } + m_pBounds[nSubs] = m_pDomains[1]; + m_pEncode = FX_Alloc2D(FX_FLOAT, nSubs, 2); + pArray = pDict->GetArrayBy("Encode"); + if (!pArray) { + return FALSE; + } + for (FX_DWORD i = 0; i < nSubs * 2; i++) { + m_pEncode[i] = pArray->GetFloatAt(i); + } + return TRUE; +} +FX_BOOL CPDF_StitchFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* outputs) const { + FX_FLOAT input = inputs[0]; + size_t i; + for (i = 0; i < m_pSubFunctions.size() - 1; i++) + if (input < m_pBounds[i + 1]) { + break; + } + if (!m_pSubFunctions[i]) { + return FALSE; + } + input = PDF_Interpolate(input, m_pBounds[i], m_pBounds[i + 1], + m_pEncode[i * 2], m_pEncode[i * 2 + 1]); + int nresults; + m_pSubFunctions[i]->Call(&input, kRequiredNumInputs, outputs, nresults); + return TRUE; +} + +} // namespace + +CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) { + if (!pFuncObj) { + return NULL; + } + CPDF_Function* pFunc = NULL; + int type; + if (CPDF_Stream* pStream = pFuncObj->AsStream()) { + type = pStream->GetDict()->GetIntegerBy("FunctionType"); + } else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary()) { + type = pDict->GetIntegerBy("FunctionType"); + } else { + return NULL; + } + if (type == 0) { + pFunc = new CPDF_SampledFunc; + } else if (type == 2) { + pFunc = new CPDF_ExpIntFunc; + } else if (type == 3) { + pFunc = new CPDF_StitchFunc; + } else if (type == 4) { + pFunc = new CPDF_PSFunc; + } else { + return NULL; + } + if (!pFunc->Init(pFuncObj)) { + delete pFunc; + return NULL; + } + return pFunc; +} +CPDF_Function::CPDF_Function() { + m_pDomains = NULL; + m_pRanges = NULL; +} +CPDF_Function::~CPDF_Function() { + FX_Free(m_pDomains); + FX_Free(m_pRanges); +} +FX_BOOL CPDF_Function::Init(CPDF_Object* pObj) { + CPDF_Stream* pStream = pObj->AsStream(); + CPDF_Dictionary* pDict = pStream ? pStream->GetDict() : pObj->AsDictionary(); + + CPDF_Array* pDomains = pDict->GetArrayBy("Domain"); + if (!pDomains) + return FALSE; + + m_nInputs = pDomains->GetCount() / 2; + if (m_nInputs == 0) + return FALSE; + + m_pDomains = FX_Alloc2D(FX_FLOAT, m_nInputs, 2); + for (int i = 0; i < m_nInputs * 2; i++) { + m_pDomains[i] = pDomains->GetFloatAt(i); + } + CPDF_Array* pRanges = pDict->GetArrayBy("Range"); + m_nOutputs = 0; + if (pRanges) { + m_nOutputs = pRanges->GetCount() / 2; + m_pRanges = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); + for (int i = 0; i < m_nOutputs * 2; i++) { + m_pRanges[i] = pRanges->GetFloatAt(i); + } + } + FX_DWORD old_outputs = m_nOutputs; + if (!v_Init(pObj)) { + return FALSE; + } + if (m_pRanges && m_nOutputs > (int)old_outputs) { + m_pRanges = FX_Realloc(FX_FLOAT, m_pRanges, m_nOutputs * 2); + if (m_pRanges) { + FXSYS_memset(m_pRanges + (old_outputs * 2), 0, + sizeof(FX_FLOAT) * (m_nOutputs - old_outputs) * 2); + } + } + return TRUE; +} +FX_BOOL CPDF_Function::Call(FX_FLOAT* inputs, + int ninputs, + FX_FLOAT* results, + int& nresults) const { + if (m_nInputs != ninputs) { + return FALSE; + } + nresults = m_nOutputs; + for (int i = 0; i < m_nInputs; i++) { + if (inputs[i] < m_pDomains[i * 2]) { + inputs[i] = m_pDomains[i * 2]; + } else if (inputs[i] > m_pDomains[i * 2 + 1]) { + inputs[i] = m_pDomains[i * 2] + 1; + } + } + v_Call(inputs, results); + if (m_pRanges) { + for (int i = 0; i < m_nOutputs; i++) { + if (results[i] < m_pRanges[i * 2]) { + results[i] = m_pRanges[i * 2]; + } else if (results[i] > m_pRanges[i * 2 + 1]) { + results[i] = m_pRanges[i * 2 + 1]; + } + } + } + return TRUE; +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp b/core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp new file mode 100644 index 0000000000..2892036882 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp @@ -0,0 +1,20 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/embedder_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +class FPDFPageFuncEmbeddertest : public EmbedderTest {}; + +TEST_F(FPDFPageFuncEmbeddertest, Bug_551460) { + // Should not crash under ASan. + // Tests that the number of inputs is not simply calculated from the domain + // and trusted. The number of inputs has to be 1. + EXPECT_TRUE(OpenDocument("bug_551460.pdf")); + FPDF_PAGE page = LoadPage(0); + EXPECT_NE(nullptr, page); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp b/core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp new file mode 100644 index 0000000000..76753d2965 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp @@ -0,0 +1,697 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include + +#include "core/fpdfapi/fpdf_render/render_int.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "third_party/base/stl_util.h" + +namespace { + +FX_FLOAT ClipFloat(FX_FLOAT f) { + return std::max(0.0f, std::min(1.0f, f)); +} + +} // namespace + +void CPDF_GraphicStates::DefaultStates() { + m_ColorState.New()->Default(); +} +void CPDF_GraphicStates::CopyStates(const CPDF_GraphicStates& src) { + m_ClipPath = src.m_ClipPath; + m_GraphState = src.m_GraphState; + m_ColorState = src.m_ColorState; + m_TextState = src.m_TextState; + m_GeneralState = src.m_GeneralState; +} +CPDF_ClipPathData::CPDF_ClipPathData() { + m_PathCount = 0; + m_pPathList = NULL; + m_pTypeList = NULL; + m_TextCount = 0; + m_pTextList = NULL; +} +CPDF_ClipPathData::~CPDF_ClipPathData() { + int i; + delete[] m_pPathList; + FX_Free(m_pTypeList); + for (i = m_TextCount - 1; i > -1; i--) + delete m_pTextList[i]; + FX_Free(m_pTextList); +} +CPDF_ClipPathData::CPDF_ClipPathData(const CPDF_ClipPathData& src) { + m_pPathList = NULL; + m_pPathList = NULL; + m_pTextList = NULL; + m_PathCount = src.m_PathCount; + if (m_PathCount) { + int alloc_size = m_PathCount; + if (alloc_size % 8) { + alloc_size += 8 - (alloc_size % 8); + } + m_pPathList = new CPDF_Path[alloc_size]; + for (int i = 0; i < m_PathCount; i++) { + m_pPathList[i] = src.m_pPathList[i]; + } + m_pTypeList = FX_Alloc(uint8_t, alloc_size); + FXSYS_memcpy(m_pTypeList, src.m_pTypeList, m_PathCount); + } else { + m_pPathList = NULL; + m_pTypeList = NULL; + } + m_TextCount = src.m_TextCount; + if (m_TextCount) { + m_pTextList = FX_Alloc(CPDF_TextObject*, m_TextCount); + for (int i = 0; i < m_TextCount; i++) { + if (src.m_pTextList[i]) { + m_pTextList[i] = src.m_pTextList[i]->Clone(); + } else { + m_pTextList[i] = NULL; + } + } + } else { + m_pTextList = NULL; + } +} +void CPDF_ClipPathData::SetCount(int path_count, int text_count) { + ASSERT(m_TextCount == 0 && m_PathCount == 0); + if (path_count) { + m_PathCount = path_count; + int alloc_size = (path_count + 7) / 8 * 8; + m_pPathList = new CPDF_Path[alloc_size]; + m_pTypeList = FX_Alloc(uint8_t, alloc_size); + } + if (text_count) { + m_TextCount = text_count; + m_pTextList = FX_Alloc(CPDF_TextObject*, text_count); + } +} +CFX_FloatRect CPDF_ClipPath::GetClipBox() const { + CFX_FloatRect rect; + FX_BOOL bStarted = FALSE; + int count = GetPathCount(); + if (count) { + rect = GetPath(0).GetBoundingBox(); + for (int i = 1; i < count; i++) { + CFX_FloatRect path_rect = GetPath(i).GetBoundingBox(); + rect.Intersect(path_rect); + } + bStarted = TRUE; + } + count = GetTextCount(); + if (count) { + CFX_FloatRect layer_rect; + FX_BOOL bLayerStarted = FALSE; + for (int i = 0; i < count; i++) { + CPDF_TextObject* pTextObj = GetText(i); + if (!pTextObj) { + if (!bStarted) { + rect = layer_rect; + bStarted = TRUE; + } else { + rect.Intersect(layer_rect); + } + bLayerStarted = FALSE; + } else { + if (!bLayerStarted) { + layer_rect = CFX_FloatRect(pTextObj->GetBBox(nullptr)); + bLayerStarted = TRUE; + } else { + layer_rect.Union(CFX_FloatRect(pTextObj->GetBBox(nullptr))); + } + } + } + } + return rect; +} +void CPDF_ClipPath::AppendPath(CPDF_Path path, int type, FX_BOOL bAutoMerge) { + CPDF_ClipPathData* pData = GetModify(); + if (pData->m_PathCount && bAutoMerge) { + CPDF_Path old_path = pData->m_pPathList[pData->m_PathCount - 1]; + if (old_path.IsRect()) { + CFX_FloatRect old_rect(old_path.GetPointX(0), old_path.GetPointY(0), + old_path.GetPointX(2), old_path.GetPointY(2)); + CFX_FloatRect new_rect = path.GetBoundingBox(); + if (old_rect.Contains(new_rect)) { + pData->m_PathCount--; + pData->m_pPathList[pData->m_PathCount].SetNull(); + } + } + } + if (pData->m_PathCount % 8 == 0) { + CPDF_Path* pNewPath = new CPDF_Path[pData->m_PathCount + 8]; + for (int i = 0; i < pData->m_PathCount; i++) { + pNewPath[i] = pData->m_pPathList[i]; + } + delete[] pData->m_pPathList; + uint8_t* pNewType = FX_Alloc(uint8_t, pData->m_PathCount + 8); + FXSYS_memcpy(pNewType, pData->m_pTypeList, pData->m_PathCount); + FX_Free(pData->m_pTypeList); + pData->m_pPathList = pNewPath; + pData->m_pTypeList = pNewType; + } + pData->m_pPathList[pData->m_PathCount] = path; + pData->m_pTypeList[pData->m_PathCount] = (uint8_t)type; + pData->m_PathCount++; +} +void CPDF_ClipPath::DeletePath(int index) { + CPDF_ClipPathData* pData = GetModify(); + if (index >= pData->m_PathCount) { + return; + } + pData->m_pPathList[index].SetNull(); + for (int i = index; i < pData->m_PathCount - 1; i++) { + pData->m_pPathList[i] = pData->m_pPathList[i + 1]; + } + pData->m_pPathList[pData->m_PathCount - 1].SetNull(); + FXSYS_memmove(pData->m_pTypeList + index, pData->m_pTypeList + index + 1, + pData->m_PathCount - index - 1); + pData->m_PathCount--; +} +#define FPDF_CLIPPATH_MAX_TEXTS 1024 +void CPDF_ClipPath::AppendTexts(CPDF_TextObject** pTexts, int count) { + CPDF_ClipPathData* pData = GetModify(); + if (pData->m_TextCount + count > FPDF_CLIPPATH_MAX_TEXTS) { + for (int i = 0; i < count; i++) { + delete pTexts[i]; + } + return; + } + CPDF_TextObject** pNewList = + FX_Alloc(CPDF_TextObject*, pData->m_TextCount + count + 1); + if (pData->m_pTextList) { + FXSYS_memcpy(pNewList, pData->m_pTextList, + pData->m_TextCount * sizeof(CPDF_TextObject*)); + FX_Free(pData->m_pTextList); + } + pData->m_pTextList = pNewList; + for (int i = 0; i < count; i++) { + pData->m_pTextList[pData->m_TextCount + i] = pTexts[i]; + } + pData->m_pTextList[pData->m_TextCount + count] = NULL; + pData->m_TextCount += count + 1; +} +void CPDF_ClipPath::Transform(const CFX_Matrix& matrix) { + CPDF_ClipPathData* pData = GetModify(); + int i; + for (i = 0; i < pData->m_PathCount; i++) { + pData->m_pPathList[i].Transform(&matrix); + } + for (i = 0; i < pData->m_TextCount; i++) + if (pData->m_pTextList[i]) { + pData->m_pTextList[i]->Transform(matrix); + } +} +CPDF_ColorStateData::CPDF_ColorStateData(const CPDF_ColorStateData& src) { + m_FillColor.Copy(&src.m_FillColor); + m_FillRGB = src.m_FillRGB; + m_StrokeColor.Copy(&src.m_StrokeColor); + m_StrokeRGB = src.m_StrokeRGB; +} +void CPDF_ColorStateData::Default() { + m_FillRGB = m_StrokeRGB = 0; + m_FillColor.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)); + m_StrokeColor.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)); +} +void CPDF_ColorState::SetFillColor(CPDF_ColorSpace* pCS, + FX_FLOAT* pValue, + int nValues) { + CPDF_ColorStateData* pData = GetModify(); + SetColor(pData->m_FillColor, pData->m_FillRGB, pCS, pValue, nValues); +} +void CPDF_ColorState::SetStrokeColor(CPDF_ColorSpace* pCS, + FX_FLOAT* pValue, + int nValues) { + CPDF_ColorStateData* pData = GetModify(); + SetColor(pData->m_StrokeColor, pData->m_StrokeRGB, pCS, pValue, nValues); +} +void CPDF_ColorState::SetColor(CPDF_Color& color, + FX_DWORD& rgb, + CPDF_ColorSpace* pCS, + FX_FLOAT* pValue, + int nValues) { + if (pCS) { + color.SetColorSpace(pCS); + } else if (color.IsNull()) { + color.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)); + } + if (color.m_pCS->CountComponents() > nValues) { + return; + } + color.SetValue(pValue); + int R, G, B; + rgb = color.GetRGB(R, G, B) ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1; +} +void CPDF_ColorState::SetFillPattern(CPDF_Pattern* pPattern, + FX_FLOAT* pValue, + int nValues) { + CPDF_ColorStateData* pData = GetModify(); + pData->m_FillColor.SetValue(pPattern, pValue, nValues); + int R, G, B; + FX_BOOL ret = pData->m_FillColor.GetRGB(R, G, B); + if (pPattern->m_PatternType == 1 && + ((CPDF_TilingPattern*)pPattern)->m_bColored && !ret) { + pData->m_FillRGB = 0x00BFBFBF; + return; + } + pData->m_FillRGB = ret ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1; +} +void CPDF_ColorState::SetStrokePattern(CPDF_Pattern* pPattern, + FX_FLOAT* pValue, + int nValues) { + CPDF_ColorStateData* pData = GetModify(); + pData->m_StrokeColor.SetValue(pPattern, pValue, nValues); + int R, G, B; + FX_BOOL ret = pData->m_StrokeColor.GetRGB(R, G, B); + if (pPattern->m_PatternType == 1 && + ((CPDF_TilingPattern*)pPattern)->m_bColored && !ret) { + pData->m_StrokeRGB = 0x00BFBFBF; + return; + } + pData->m_StrokeRGB = + pData->m_StrokeColor.GetRGB(R, G, B) ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1; +} +CPDF_TextStateData::CPDF_TextStateData() { + m_pFont = NULL; + m_pDocument = NULL; + m_FontSize = 1.0f; + m_WordSpace = 0; + m_CharSpace = 0; + m_TextMode = 0; + m_Matrix[0] = m_Matrix[3] = 1.0f; + m_Matrix[1] = m_Matrix[2] = 0; + m_CTM[0] = m_CTM[3] = 1.0f; + m_CTM[1] = m_CTM[2] = 0; +} +CPDF_TextStateData::CPDF_TextStateData(const CPDF_TextStateData& src) { + if (this == &src) { + return; + } + FXSYS_memcpy(this, &src, sizeof(CPDF_TextStateData)); + if (m_pDocument && m_pFont) { + m_pFont = + m_pDocument->GetPageData()->GetFont(m_pFont->GetFontDict(), FALSE); + } +} +CPDF_TextStateData::~CPDF_TextStateData() { + if (m_pDocument && m_pFont) { + CPDF_DocPageData* pPageData = m_pDocument->GetPageData(); + if (pPageData && !pPageData->IsForceClear()) { + pPageData->ReleaseFont(m_pFont->GetFontDict()); + } + } +} +void CPDF_TextState::SetFont(CPDF_Font* pFont) { + CPDF_TextStateData* pStateData = GetModify(); + if (pStateData) { + CPDF_Document* pDoc = pStateData->m_pDocument; + CPDF_DocPageData* pPageData = pDoc ? pDoc->GetPageData() : NULL; + if (pPageData && pStateData->m_pFont && !pPageData->IsForceClear()) { + pPageData->ReleaseFont(pStateData->m_pFont->GetFontDict()); + } + pStateData->m_pDocument = pFont ? pFont->m_pDocument : NULL; + pStateData->m_pFont = pFont; + } +} +FX_FLOAT CPDF_TextState::GetFontSizeV() const { + FX_FLOAT* pMatrix = GetMatrix(); + FX_FLOAT unit = FXSYS_sqrt2(pMatrix[1], pMatrix[3]); + FX_FLOAT size = unit * GetFontSize(); + return (FX_FLOAT)FXSYS_fabs(size); +} +FX_FLOAT CPDF_TextState::GetFontSizeH() const { + FX_FLOAT* pMatrix = GetMatrix(); + FX_FLOAT unit = FXSYS_sqrt2(pMatrix[0], pMatrix[2]); + FX_FLOAT size = unit * GetFontSize(); + return (FX_FLOAT)FXSYS_fabs(size); +} +FX_FLOAT CPDF_TextState::GetBaselineAngle() const { + FX_FLOAT* m_Matrix = GetMatrix(); + return FXSYS_atan2(m_Matrix[2], m_Matrix[0]); +} +FX_FLOAT CPDF_TextState::GetShearAngle() const { + FX_FLOAT* m_Matrix = GetMatrix(); + FX_FLOAT shear_angle = FXSYS_atan2(m_Matrix[1], m_Matrix[3]); + return GetBaselineAngle() + shear_angle; +} +CPDF_GeneralStateData::CPDF_GeneralStateData() { + FXSYS_memset(this, 0, sizeof(CPDF_GeneralStateData)); + FXSYS_strcpy((FX_CHAR*)m_BlendMode, "Normal"); + m_StrokeAlpha = 1.0f; + m_FillAlpha = 1.0f; + m_Flatness = 1.0f; + m_Matrix.SetIdentity(); +} +CPDF_GeneralStateData::CPDF_GeneralStateData(const CPDF_GeneralStateData& src) { + FXSYS_memcpy(this, &src, sizeof(CPDF_GeneralStateData)); + if (src.m_pTransferFunc && src.m_pTransferFunc->m_pPDFDoc) { + CPDF_DocRenderData* pDocCache = + src.m_pTransferFunc->m_pPDFDoc->GetRenderData(); + if (!pDocCache) { + return; + } + m_pTransferFunc = pDocCache->GetTransferFunc(m_pTR); + } +} +CPDF_GeneralStateData::~CPDF_GeneralStateData() { + if (m_pTransferFunc && m_pTransferFunc->m_pPDFDoc) { + CPDF_DocRenderData* pDocCache = m_pTransferFunc->m_pPDFDoc->GetRenderData(); + if (!pDocCache) { + return; + } + pDocCache->ReleaseTransferFunc(m_pTR); + } +} +static int GetBlendType(const CFX_ByteStringC& mode) { + switch (mode.GetID()) { + case FXBSTR_ID('N', 'o', 'r', 'm'): + case FXBSTR_ID('C', 'o', 'm', 'p'): + return FXDIB_BLEND_NORMAL; + case FXBSTR_ID('M', 'u', 'l', 't'): + return FXDIB_BLEND_MULTIPLY; + case FXBSTR_ID('S', 'c', 'r', 'e'): + return FXDIB_BLEND_SCREEN; + case FXBSTR_ID('O', 'v', 'e', 'r'): + return FXDIB_BLEND_OVERLAY; + case FXBSTR_ID('D', 'a', 'r', 'k'): + return FXDIB_BLEND_DARKEN; + case FXBSTR_ID('L', 'i', 'g', 'h'): + return FXDIB_BLEND_LIGHTEN; + case FXBSTR_ID('C', 'o', 'l', 'o'): + if (mode.GetLength() == 10) { + return FXDIB_BLEND_COLORDODGE; + } + if (mode.GetLength() == 9) { + return FXDIB_BLEND_COLORBURN; + } + return FXDIB_BLEND_COLOR; + case FXBSTR_ID('H', 'a', 'r', 'd'): + return FXDIB_BLEND_HARDLIGHT; + case FXBSTR_ID('S', 'o', 'f', 't'): + return FXDIB_BLEND_SOFTLIGHT; + case FXBSTR_ID('D', 'i', 'f', 'f'): + return FXDIB_BLEND_DIFFERENCE; + case FXBSTR_ID('E', 'x', 'c', 'l'): + return FXDIB_BLEND_EXCLUSION; + case FXBSTR_ID('H', 'u', 'e', 0): + return FXDIB_BLEND_HUE; + case FXBSTR_ID('S', 'a', 't', 'u'): + return FXDIB_BLEND_SATURATION; + case FXBSTR_ID('L', 'u', 'm', 'i'): + return FXDIB_BLEND_LUMINOSITY; + } + return FXDIB_BLEND_NORMAL; +} +void CPDF_GeneralStateData::SetBlendMode(const CFX_ByteStringC& blend_mode) { + if (blend_mode.GetLength() > 15) { + return; + } + FXSYS_memcpy(m_BlendMode, blend_mode.GetPtr(), blend_mode.GetLength()); + m_BlendMode[blend_mode.GetLength()] = 0; + m_BlendType = ::GetBlendType(blend_mode); +} +int RI_StringToId(const CFX_ByteString& ri) { + FX_DWORD id = ri.GetID(); + if (id == FXBSTR_ID('A', 'b', 's', 'o')) { + return 1; + } + if (id == FXBSTR_ID('S', 'a', 't', 'u')) { + return 2; + } + if (id == FXBSTR_ID('P', 'e', 'r', 'c')) { + return 3; + } + return 0; +} +void CPDF_GeneralState::SetRenderIntent(const CFX_ByteString& ri) { + GetModify()->m_RenderIntent = RI_StringToId(ri); +} +CPDF_AllStates::CPDF_AllStates() { + m_TextX = m_TextY = m_TextLineX = m_TextLineY = 0; + m_TextLeading = 0; + m_TextRise = 0; + m_TextHorzScale = 1.0f; +} +CPDF_AllStates::~CPDF_AllStates() {} +void CPDF_AllStates::Copy(const CPDF_AllStates& src) { + CopyStates(src); + m_TextMatrix.Copy(src.m_TextMatrix); + m_ParentMatrix.Copy(src.m_ParentMatrix); + m_CTM.Copy(src.m_CTM); + m_TextX = src.m_TextX; + m_TextY = src.m_TextY; + m_TextLineX = src.m_TextLineX; + m_TextLineY = src.m_TextLineY; + m_TextLeading = src.m_TextLeading; + m_TextRise = src.m_TextRise; + m_TextHorzScale = src.m_TextHorzScale; +} +void CPDF_AllStates::SetLineDash(CPDF_Array* pArray, + FX_FLOAT phase, + FX_FLOAT scale) { + CFX_GraphStateData* pData = m_GraphState.GetModify(); + pData->m_DashPhase = phase * scale; + pData->SetDashCount(pArray->GetCount()); + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + pData->m_DashArray[i] = pArray->GetNumberAt(i) * scale; + } +} +void CPDF_AllStates::ProcessExtGS(CPDF_Dictionary* pGS, + CPDF_StreamContentParser* pParser) { + CPDF_GeneralStateData* pGeneralState = m_GeneralState.GetModify(); + for (const auto& it : *pGS) { + const CFX_ByteString& key_str = it.first; + CPDF_Object* pElement = it.second; + CPDF_Object* pObject = pElement ? pElement->GetDirect() : nullptr; + if (!pObject) + continue; + + FX_DWORD key = key_str.GetID(); + switch (key) { + case FXBSTR_ID('L', 'W', 0, 0): + m_GraphState.GetModify()->m_LineWidth = pObject->GetNumber(); + break; + case FXBSTR_ID('L', 'C', 0, 0): + m_GraphState.GetModify()->m_LineCap = + (CFX_GraphStateData::LineCap)pObject->GetInteger(); + break; + case FXBSTR_ID('L', 'J', 0, 0): + m_GraphState.GetModify()->m_LineJoin = + (CFX_GraphStateData::LineJoin)pObject->GetInteger(); + break; + case FXBSTR_ID('M', 'L', 0, 0): + m_GraphState.GetModify()->m_MiterLimit = pObject->GetNumber(); + break; + case FXBSTR_ID('D', 0, 0, 0): { + CPDF_Array* pDash = pObject->AsArray(); + if (!pDash) + break; + + CPDF_Array* pArray = pDash->GetArrayAt(0); + if (!pArray) + break; + + SetLineDash(pArray, pDash->GetNumberAt(1), 1.0f); + break; + } + case FXBSTR_ID('R', 'I', 0, 0): + m_GeneralState.SetRenderIntent(pObject->GetString()); + break; + case FXBSTR_ID('F', 'o', 'n', 't'): { + CPDF_Array* pFont = pObject->AsArray(); + if (!pFont) + break; + + m_TextState.GetModify()->m_FontSize = pFont->GetNumberAt(1); + m_TextState.SetFont(pParser->FindFont(pFont->GetStringAt(0))); + break; + } + case FXBSTR_ID('T', 'R', 0, 0): + if (pGS->KeyExist("TR2")) { + continue; + } + case FXBSTR_ID('T', 'R', '2', 0): + pGeneralState->m_pTR = + (pObject && !pObject->IsName()) ? pObject : nullptr; + break; + case FXBSTR_ID('B', 'M', 0, 0): { + CPDF_Array* pArray = pObject->AsArray(); + CFX_ByteString mode = + pArray ? pArray->GetStringAt(0) : pObject->GetString(); + + pGeneralState->SetBlendMode(mode); + if (pGeneralState->m_BlendType > FXDIB_BLEND_MULTIPLY) { + pParser->GetPageObjectHolder()->SetBackgroundAlphaNeeded(TRUE); + } + break; + } + case FXBSTR_ID('S', 'M', 'a', 's'): + if (ToDictionary(pObject)) { + pGeneralState->m_pSoftMask = pObject; + FXSYS_memcpy(pGeneralState->m_SMaskMatrix, + &pParser->GetCurStates()->m_CTM, sizeof(CFX_Matrix)); + } else { + pGeneralState->m_pSoftMask = NULL; + } + break; + case FXBSTR_ID('C', 'A', 0, 0): + pGeneralState->m_StrokeAlpha = ClipFloat(pObject->GetNumber()); + break; + case FXBSTR_ID('c', 'a', 0, 0): + pGeneralState->m_FillAlpha = ClipFloat(pObject->GetNumber()); + break; + case FXBSTR_ID('O', 'P', 0, 0): + pGeneralState->m_StrokeOP = pObject->GetInteger(); + if (!pGS->KeyExist("op")) { + pGeneralState->m_FillOP = pObject->GetInteger(); + } + break; + case FXBSTR_ID('o', 'p', 0, 0): + pGeneralState->m_FillOP = pObject->GetInteger(); + break; + case FXBSTR_ID('O', 'P', 'M', 0): + pGeneralState->m_OPMode = pObject->GetInteger(); + break; + case FXBSTR_ID('B', 'G', 0, 0): + if (pGS->KeyExist("BG2")) { + continue; + } + case FXBSTR_ID('B', 'G', '2', 0): + pGeneralState->m_pBG = pObject; + break; + case FXBSTR_ID('U', 'C', 'R', 0): + if (pGS->KeyExist("UCR2")) { + continue; + } + case FXBSTR_ID('U', 'C', 'R', '2'): + pGeneralState->m_pUCR = pObject; + break; + case FXBSTR_ID('H', 'T', 0, 0): + pGeneralState->m_pHT = pObject; + break; + case FXBSTR_ID('F', 'L', 0, 0): + pGeneralState->m_Flatness = pObject->GetNumber(); + break; + case FXBSTR_ID('S', 'M', 0, 0): + pGeneralState->m_Smoothness = pObject->GetNumber(); + break; + case FXBSTR_ID('S', 'A', 0, 0): + pGeneralState->m_StrokeAdjust = pObject->GetInteger(); + break; + case FXBSTR_ID('A', 'I', 'S', 0): + pGeneralState->m_AlphaSource = pObject->GetInteger(); + break; + case FXBSTR_ID('T', 'K', 0, 0): + pGeneralState->m_TextKnockout = pObject->GetInteger(); + break; + } + } + pGeneralState->m_Matrix = m_CTM; +} +CPDF_ContentMarkItem::CPDF_ContentMarkItem() { + m_ParamType = None; +} +CPDF_ContentMarkItem::CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src) { + m_MarkName = src.m_MarkName; + m_ParamType = src.m_ParamType; + if (m_ParamType == DirectDict) { + m_pParam = ToDictionary(src.m_pParam->Clone()); + } else { + m_pParam = src.m_pParam; + } +} +CPDF_ContentMarkItem::~CPDF_ContentMarkItem() { + if (m_ParamType == DirectDict && m_pParam) + m_pParam->Release(); +} +FX_BOOL CPDF_ContentMarkItem::HasMCID() const { + if (m_pParam && + (m_ParamType == DirectDict || m_ParamType == PropertiesDict)) { + return m_pParam->KeyExist("MCID"); + } + return FALSE; +} + +CPDF_ContentMarkData::CPDF_ContentMarkData(const CPDF_ContentMarkData& src) + : m_Marks(src.m_Marks) {} + +int CPDF_ContentMarkData::CountItems() const { + return pdfium::CollectionSize(m_Marks); +} + +int CPDF_ContentMarkData::GetMCID() const { + for (const auto& mark : m_Marks) { + CPDF_ContentMarkItem::ParamType type = mark.GetParamType(); + if (type == CPDF_ContentMarkItem::PropertiesDict || + type == CPDF_ContentMarkItem::DirectDict) { + CPDF_Dictionary* pDict = mark.GetParam(); + if (pDict->KeyExist("MCID")) + return pDict->GetIntegerBy("MCID"); + } + } + return -1; +} + +void CPDF_ContentMarkData::AddMark(const CFX_ByteString& name, + CPDF_Dictionary* pDict, + FX_BOOL bDirect) { + CPDF_ContentMarkItem item; + item.SetName(name); + if (pDict) { + if (bDirect) { + item.SetParam(CPDF_ContentMarkItem::DirectDict, + ToDictionary(pDict->Clone())); + } else { + item.SetParam(CPDF_ContentMarkItem::PropertiesDict, pDict); + } + } + m_Marks.push_back(item); +} + +void CPDF_ContentMarkData::DeleteLastMark() { + if (!m_Marks.empty()) + m_Marks.pop_back(); +} + +FX_BOOL CPDF_ContentMark::HasMark(const CFX_ByteStringC& mark) const { + if (!m_pObject) { + return FALSE; + } + for (int i = 0; i < m_pObject->CountItems(); i++) { + CPDF_ContentMarkItem& item = m_pObject->GetItem(i); + if (item.GetName() == mark) { + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_ContentMark::LookupMark(const CFX_ByteStringC& mark, + CPDF_Dictionary*& pDict) const { + if (!m_pObject) { + return FALSE; + } + for (int i = 0; i < m_pObject->CountItems(); i++) { + CPDF_ContentMarkItem& item = m_pObject->GetItem(i); + if (item.GetName() == mark) { + pDict = NULL; + if (item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict || + item.GetParamType() == CPDF_ContentMarkItem::DirectDict) { + pDict = item.GetParam(); + } + return TRUE; + } + } + return FALSE; +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_image.cpp b/core/fpdfapi/fpdf_page/fpdf_page_image.cpp new file mode 100644 index 0000000000..a88d2b30bd --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_image.cpp @@ -0,0 +1,100 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" + +CPDF_ImageObject::CPDF_ImageObject() : m_pImage(nullptr) {} + +CPDF_ImageObject::~CPDF_ImageObject() { + if (!m_pImage) { + return; + } + if (m_pImage->IsInline() || + (m_pImage->GetStream() && m_pImage->GetStream()->GetObjNum() == 0)) { + delete m_pImage; + } else { + m_pImage->GetDocument()->GetPageData()->ReleaseImage(m_pImage->GetStream()); + } +} + +CPDF_ImageObject* CPDF_ImageObject::Clone() const { + CPDF_ImageObject* obj = new CPDF_ImageObject; + obj->CopyData(this); + + obj->m_pImage = m_pImage->Clone(); + obj->m_Matrix = m_Matrix; + return obj; +} + +void CPDF_ImageObject::Transform(const CFX_Matrix& matrix) { + m_Matrix.Concat(matrix); + CalcBoundingBox(); +} +void CPDF_ImageObject::CalcBoundingBox() { + m_Left = m_Bottom = 0; + m_Right = m_Top = 1.0f; + m_Matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); +} +void CPDF_Image::Release() { + if (m_bInline || (m_pStream && m_pStream->GetObjNum() == 0)) { + delete this; + } +} +CPDF_Image* CPDF_Image::Clone() { + if (m_pStream->GetObjNum()) + return m_pDocument->GetPageData()->GetImage(m_pStream); + + CPDF_Image* pImage = new CPDF_Image(m_pDocument); + pImage->LoadImageF(ToStream(m_pStream->Clone()), m_bInline); + if (m_bInline) + pImage->SetInlineDict(ToDictionary(m_pInlineDict->Clone(TRUE))); + + return pImage; +} +CPDF_Image::CPDF_Image(CPDF_Document* pDoc) { + m_pDocument = pDoc; + m_pStream = NULL; + m_pOC = NULL; + m_bInline = FALSE; + m_pInlineDict = NULL; + m_pDIBSource = NULL; + m_pMask = NULL; + m_MatteColor = 0; +} +CPDF_Image::~CPDF_Image() { + if (m_bInline) { + if (m_pStream) { + m_pStream->Release(); + } + if (m_pInlineDict) { + m_pInlineDict->Release(); + } + } +} +FX_BOOL CPDF_Image::LoadImageF(CPDF_Stream* pStream, FX_BOOL bInline) { + m_pStream = pStream; + if (m_bInline && m_pInlineDict) { + m_pInlineDict->Release(); + m_pInlineDict = NULL; + } + m_bInline = bInline; + CPDF_Dictionary* pDict = pStream->GetDict(); + if (m_bInline) { + m_pInlineDict = ToDictionary(pDict->Clone()); + } + m_pOC = pDict->GetDictBy("OC"); + m_bIsMask = + !pDict->KeyExist("ColorSpace") || pDict->GetIntegerBy("ImageMask"); + m_bInterpolate = pDict->GetIntegerBy("Interpolate"); + m_Height = pDict->GetIntegerBy("Height"); + m_Width = pDict->GetIntegerBy("Width"); + return TRUE; +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp new file mode 100644 index 0000000000..e4cdaba9d0 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp @@ -0,0 +1,1819 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fpdfapi/fpdf_serial.h" + +namespace { + +const char kPathOperatorSubpath = 'm'; +const char kPathOperatorLine = 'l'; +const char kPathOperatorCubicBezier1 = 'c'; +const char kPathOperatorCubicBezier2 = 'v'; +const char kPathOperatorCubicBezier3 = 'y'; +const char kPathOperatorClosePath = 'h'; +const char kPathOperatorRectangle[] = "re"; + +struct _FX_BSTR { + const FX_CHAR* m_Ptr; + int m_Size; +}; +#define _FX_BSTRC(str) \ + { str, sizeof(str) - 1 } + +struct PDF_AbbrPairs { + _FX_BSTR full_name; + _FX_BSTR abbr; +}; + +const PDF_AbbrPairs PDF_InlineKeyAbbr[] = { + {_FX_BSTRC("BitsPerComponent"), _FX_BSTRC("BPC")}, + {_FX_BSTRC("ColorSpace"), _FX_BSTRC("CS")}, + {_FX_BSTRC("Decode"), _FX_BSTRC("D")}, + {_FX_BSTRC("DecodeParms"), _FX_BSTRC("DP")}, + {_FX_BSTRC("Filter"), _FX_BSTRC("F")}, + {_FX_BSTRC("Height"), _FX_BSTRC("H")}, + {_FX_BSTRC("ImageMask"), _FX_BSTRC("IM")}, + {_FX_BSTRC("Interpolate"), _FX_BSTRC("I")}, + {_FX_BSTRC("Width"), _FX_BSTRC("W")}, +}; + +const PDF_AbbrPairs PDF_InlineValueAbbr[] = { + {_FX_BSTRC("DeviceGray"), _FX_BSTRC("G")}, + {_FX_BSTRC("DeviceRGB"), _FX_BSTRC("RGB")}, + {_FX_BSTRC("DeviceCMYK"), _FX_BSTRC("CMYK")}, + {_FX_BSTRC("Indexed"), _FX_BSTRC("I")}, + {_FX_BSTRC("ASCIIHexDecode"), _FX_BSTRC("AHx")}, + {_FX_BSTRC("ASCII85Decode"), _FX_BSTRC("A85")}, + {_FX_BSTRC("LZWDecode"), _FX_BSTRC("LZW")}, + {_FX_BSTRC("FlateDecode"), _FX_BSTRC("Fl")}, + {_FX_BSTRC("RunLengthDecode"), _FX_BSTRC("RL")}, + {_FX_BSTRC("CCITTFaxDecode"), _FX_BSTRC("CCF")}, + {_FX_BSTRC("DCTDecode"), _FX_BSTRC("DCT")}, +}; + +struct AbbrReplacementOp { + bool is_replace_key; + CFX_ByteString key; + CFX_ByteStringC replacement; +}; + +class CPDF_StreamParserAutoClearer { + public: + CPDF_StreamParserAutoClearer(CPDF_StreamParser** scoped_variable, + CPDF_StreamParser* new_parser) + : scoped_variable_(scoped_variable) { + *scoped_variable_ = new_parser; + } + ~CPDF_StreamParserAutoClearer() { *scoped_variable_ = NULL; } + + private: + CPDF_StreamParser** scoped_variable_; +}; + +CFX_ByteStringC PDF_FindFullName(const PDF_AbbrPairs* table, + size_t count, + const CFX_ByteStringC& abbr) { + for (size_t i = 0; i < count; ++i) { + if (abbr.GetLength() != table[i].abbr.m_Size) + continue; + if (memcmp(abbr.GetPtr(), table[i].abbr.m_Ptr, abbr.GetLength())) + continue; + return CFX_ByteStringC(table[i].full_name.m_Ptr, table[i].full_name.m_Size); + } + return CFX_ByteStringC(); +} + +} // namespace + +bool IsPathOperator(const uint8_t* buf, size_t len) { + if (len == 1) { + uint8_t op = buf[0]; + if (op == kPathOperatorSubpath || op == kPathOperatorLine || + op == kPathOperatorCubicBezier1 || op == kPathOperatorCubicBezier2 || + op == kPathOperatorCubicBezier3) { + return true; + } + } else if (len == 2) { + if (buf[0] == kPathOperatorRectangle[0] && + buf[1] == kPathOperatorRectangle[1]) { + return true; + } + } + return false; +} + +CPDF_StreamContentParser::CPDF_StreamContentParser( + CPDF_Document* pDocument, + CPDF_Dictionary* pPageResources, + CPDF_Dictionary* pParentResources, + CFX_Matrix* pmtContentToUser, + CPDF_PageObjectHolder* pObjHolder, + CPDF_Dictionary* pResources, + CFX_FloatRect* pBBox, + CPDF_ParseOptions* pOptions, + CPDF_AllStates* pStates, + int level) + : m_pDocument(pDocument), + m_pPageResources(pPageResources), + m_pParentResources(pParentResources), + m_pResources(pResources), + m_pObjectHolder(pObjHolder), + m_Level(level), + m_ParamStartPos(0), + m_ParamCount(0), + m_pCurStates(new CPDF_AllStates), + m_pLastTextObject(nullptr), + m_DefFontSize(0), + m_pPathPoints(nullptr), + m_PathPointCount(0), + m_PathAllocSize(0), + m_PathCurrentX(0.0f), + m_PathCurrentY(0.0f), + m_PathClipType(0), + m_pLastImage(nullptr), + m_pLastImageDict(nullptr), + m_pLastCloneImageDict(nullptr), + m_bReleaseLastDict(TRUE), + m_bColored(FALSE), + m_bResourceMissing(FALSE) { + if (pmtContentToUser) { + m_mtContentToUser = *pmtContentToUser; + } + if (pOptions) { + m_Options = *pOptions; + } + if (!m_pResources) { + m_pResources = m_pParentResources; + } + if (!m_pResources) { + m_pResources = m_pPageResources; + } + if (pBBox) { + m_BBox = *pBBox; + } + if (pStates) { + m_pCurStates->Copy(*pStates); + } else { + m_pCurStates->m_GeneralState.New(); + m_pCurStates->m_GraphState.New(); + m_pCurStates->m_TextState.New(); + m_pCurStates->m_ColorState.New(); + } + for (size_t i = 0; i < FX_ArraySize(m_Type3Data); ++i) { + m_Type3Data[i] = 0.0; + } +} + +CPDF_StreamContentParser::~CPDF_StreamContentParser() { + ClearAllParams(); + FX_Free(m_pPathPoints); + if (m_pLastImageDict) { + m_pLastImageDict->Release(); + } + if (m_pLastCloneImageDict) { + m_pLastCloneImageDict->Release(); + } +} + +int CPDF_StreamContentParser::GetNextParamPos() { + if (m_ParamCount == PARAM_BUF_SIZE) { + m_ParamStartPos++; + if (m_ParamStartPos == PARAM_BUF_SIZE) { + m_ParamStartPos = 0; + } + if (m_ParamBuf[m_ParamStartPos].m_Type == 0) { + if (CPDF_Object* pObject = m_ParamBuf[m_ParamStartPos].m_pObject) + pObject->Release(); + } + return m_ParamStartPos; + } + int index = m_ParamStartPos + m_ParamCount; + if (index >= PARAM_BUF_SIZE) { + index -= PARAM_BUF_SIZE; + } + m_ParamCount++; + return index; +} + +void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) { + int index = GetNextParamPos(); + if (len > 32) { + m_ParamBuf[index].m_Type = ContentParam::OBJECT; + m_ParamBuf[index].m_pObject = + new CPDF_Name(PDF_NameDecode(CFX_ByteStringC(name, len))); + } else { + m_ParamBuf[index].m_Type = ContentParam::NAME; + if (!FXSYS_memchr(name, '#', len)) { + FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, name, len); + m_ParamBuf[index].m_Name.m_Len = len; + } else { + CFX_ByteString str = PDF_NameDecode(CFX_ByteStringC(name, len)); + FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, str.c_str(), + str.GetLength()); + m_ParamBuf[index].m_Name.m_Len = str.GetLength(); + } + } +} + +void CPDF_StreamContentParser::AddNumberParam(const FX_CHAR* str, int len) { + int index = GetNextParamPos(); + m_ParamBuf[index].m_Type = ContentParam::NUMBER; + FX_atonum(CFX_ByteStringC(str, len), m_ParamBuf[index].m_Number.m_bInteger, + &m_ParamBuf[index].m_Number.m_Integer); +} +void CPDF_StreamContentParser::AddObjectParam(CPDF_Object* pObj) { + int index = GetNextParamPos(); + m_ParamBuf[index].m_Type = ContentParam::OBJECT; + m_ParamBuf[index].m_pObject = pObj; +} +void CPDF_StreamContentParser::ClearAllParams() { + FX_DWORD index = m_ParamStartPos; + for (FX_DWORD i = 0; i < m_ParamCount; i++) { + if (m_ParamBuf[index].m_Type == 0) { + if (CPDF_Object* pObject = m_ParamBuf[index].m_pObject) + pObject->Release(); + } + index++; + if (index == PARAM_BUF_SIZE) { + index = 0; + } + } + m_ParamStartPos = 0; + m_ParamCount = 0; +} + +CPDF_Object* CPDF_StreamContentParser::GetObject(FX_DWORD index) { + if (index >= m_ParamCount) { + return NULL; + } + int real_index = m_ParamStartPos + m_ParamCount - index - 1; + if (real_index >= PARAM_BUF_SIZE) { + real_index -= PARAM_BUF_SIZE; + } + ContentParam& param = m_ParamBuf[real_index]; + if (param.m_Type == ContentParam::NUMBER) { + CPDF_Number* pNumber = param.m_Number.m_bInteger + ? new CPDF_Number(param.m_Number.m_Integer) + : new CPDF_Number(param.m_Number.m_Float); + + param.m_Type = ContentParam::OBJECT; + param.m_pObject = pNumber; + return pNumber; + } + if (param.m_Type == ContentParam::NAME) { + CPDF_Name* pName = new CPDF_Name( + CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len)); + param.m_Type = ContentParam::OBJECT; + param.m_pObject = pName; + return pName; + } + if (param.m_Type == ContentParam::OBJECT) { + return param.m_pObject; + } + ASSERT(FALSE); + return NULL; +} + +CFX_ByteString CPDF_StreamContentParser::GetString(FX_DWORD index) { + if (index >= m_ParamCount) { + return CFX_ByteString(); + } + int real_index = m_ParamStartPos + m_ParamCount - index - 1; + if (real_index >= PARAM_BUF_SIZE) { + real_index -= PARAM_BUF_SIZE; + } + ContentParam& param = m_ParamBuf[real_index]; + if (param.m_Type == ContentParam::NAME) { + return CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len); + } + if (param.m_Type == 0 && param.m_pObject) { + return param.m_pObject->GetString(); + } + return CFX_ByteString(); +} + +FX_FLOAT CPDF_StreamContentParser::GetNumber(FX_DWORD index) { + if (index >= m_ParamCount) { + return 0; + } + int real_index = m_ParamStartPos + m_ParamCount - index - 1; + if (real_index >= PARAM_BUF_SIZE) { + real_index -= PARAM_BUF_SIZE; + } + ContentParam& param = m_ParamBuf[real_index]; + if (param.m_Type == ContentParam::NUMBER) { + return param.m_Number.m_bInteger ? (FX_FLOAT)param.m_Number.m_Integer + : param.m_Number.m_Float; + } + if (param.m_Type == 0 && param.m_pObject) { + return param.m_pObject->GetNumber(); + } + return 0; +} + +FX_FLOAT CPDF_StreamContentParser::GetNumber16(FX_DWORD index) { + return GetNumber(index); +} + +void CPDF_StreamContentParser::SetGraphicStates(CPDF_PageObject* pObj, + FX_BOOL bColor, + FX_BOOL bText, + FX_BOOL bGraph) { + pObj->m_GeneralState = m_pCurStates->m_GeneralState; + pObj->m_ClipPath = m_pCurStates->m_ClipPath; + pObj->m_ContentMark = m_CurContentMark; + if (bColor) { + pObj->m_ColorState = m_pCurStates->m_ColorState; + } + if (bGraph) { + pObj->m_GraphState = m_pCurStates->m_GraphState; + } + if (bText) { + pObj->m_TextState = m_pCurStates->m_TextState; + } +} + +// static +CPDF_StreamContentParser::OpCodes +CPDF_StreamContentParser::InitializeOpCodes() { + return OpCodes({ + {FXBSTR_ID('"', 0, 0, 0), + &CPDF_StreamContentParser::Handle_NextLineShowText_Space}, + {FXBSTR_ID('\'', 0, 0, 0), + &CPDF_StreamContentParser::Handle_NextLineShowText}, + {FXBSTR_ID('B', 0, 0, 0), + &CPDF_StreamContentParser::Handle_FillStrokePath}, + {FXBSTR_ID('B', '*', 0, 0), + &CPDF_StreamContentParser::Handle_EOFillStrokePath}, + {FXBSTR_ID('B', 'D', 'C', 0), + &CPDF_StreamContentParser::Handle_BeginMarkedContent_Dictionary}, + {FXBSTR_ID('B', 'I', 0, 0), &CPDF_StreamContentParser::Handle_BeginImage}, + {FXBSTR_ID('B', 'M', 'C', 0), + &CPDF_StreamContentParser::Handle_BeginMarkedContent}, + {FXBSTR_ID('B', 'T', 0, 0), &CPDF_StreamContentParser::Handle_BeginText}, + {FXBSTR_ID('C', 'S', 0, 0), + &CPDF_StreamContentParser::Handle_SetColorSpace_Stroke}, + {FXBSTR_ID('D', 'P', 0, 0), + &CPDF_StreamContentParser::Handle_MarkPlace_Dictionary}, + {FXBSTR_ID('D', 'o', 0, 0), + &CPDF_StreamContentParser::Handle_ExecuteXObject}, + {FXBSTR_ID('E', 'I', 0, 0), &CPDF_StreamContentParser::Handle_EndImage}, + {FXBSTR_ID('E', 'M', 'C', 0), + &CPDF_StreamContentParser::Handle_EndMarkedContent}, + {FXBSTR_ID('E', 'T', 0, 0), &CPDF_StreamContentParser::Handle_EndText}, + {FXBSTR_ID('F', 0, 0, 0), &CPDF_StreamContentParser::Handle_FillPathOld}, + {FXBSTR_ID('G', 0, 0, 0), + &CPDF_StreamContentParser::Handle_SetGray_Stroke}, + {FXBSTR_ID('I', 'D', 0, 0), + &CPDF_StreamContentParser::Handle_BeginImageData}, + {FXBSTR_ID('J', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineCap}, + {FXBSTR_ID('K', 0, 0, 0), + &CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke}, + {FXBSTR_ID('M', 0, 0, 0), + &CPDF_StreamContentParser::Handle_SetMiterLimit}, + {FXBSTR_ID('M', 'P', 0, 0), &CPDF_StreamContentParser::Handle_MarkPlace}, + {FXBSTR_ID('Q', 0, 0, 0), + &CPDF_StreamContentParser::Handle_RestoreGraphState}, + {FXBSTR_ID('R', 'G', 0, 0), + &CPDF_StreamContentParser::Handle_SetRGBColor_Stroke}, + {FXBSTR_ID('S', 0, 0, 0), &CPDF_StreamContentParser::Handle_StrokePath}, + {FXBSTR_ID('S', 'C', 0, 0), + &CPDF_StreamContentParser::Handle_SetColor_Stroke}, + {FXBSTR_ID('S', 'C', 'N', 0), + &CPDF_StreamContentParser::Handle_SetColorPS_Stroke}, + {FXBSTR_ID('T', '*', 0, 0), + &CPDF_StreamContentParser::Handle_MoveToNextLine}, + {FXBSTR_ID('T', 'D', 0, 0), + &CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading}, + {FXBSTR_ID('T', 'J', 0, 0), + &CPDF_StreamContentParser::Handle_ShowText_Positioning}, + {FXBSTR_ID('T', 'L', 0, 0), + &CPDF_StreamContentParser::Handle_SetTextLeading}, + {FXBSTR_ID('T', 'c', 0, 0), + &CPDF_StreamContentParser::Handle_SetCharSpace}, + {FXBSTR_ID('T', 'd', 0, 0), + &CPDF_StreamContentParser::Handle_MoveTextPoint}, + {FXBSTR_ID('T', 'f', 0, 0), &CPDF_StreamContentParser::Handle_SetFont}, + {FXBSTR_ID('T', 'j', 0, 0), &CPDF_StreamContentParser::Handle_ShowText}, + {FXBSTR_ID('T', 'm', 0, 0), + &CPDF_StreamContentParser::Handle_SetTextMatrix}, + {FXBSTR_ID('T', 'r', 0, 0), + &CPDF_StreamContentParser::Handle_SetTextRenderMode}, + {FXBSTR_ID('T', 's', 0, 0), + &CPDF_StreamContentParser::Handle_SetTextRise}, + {FXBSTR_ID('T', 'w', 0, 0), + &CPDF_StreamContentParser::Handle_SetWordSpace}, + {FXBSTR_ID('T', 'z', 0, 0), + &CPDF_StreamContentParser::Handle_SetHorzScale}, + {FXBSTR_ID('W', 0, 0, 0), &CPDF_StreamContentParser::Handle_Clip}, + {FXBSTR_ID('W', '*', 0, 0), &CPDF_StreamContentParser::Handle_EOClip}, + {FXBSTR_ID('b', 0, 0, 0), + &CPDF_StreamContentParser::Handle_CloseFillStrokePath}, + {FXBSTR_ID('b', '*', 0, 0), + &CPDF_StreamContentParser::Handle_CloseEOFillStrokePath}, + {FXBSTR_ID('c', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_123}, + {FXBSTR_ID('c', 'm', 0, 0), + &CPDF_StreamContentParser::Handle_ConcatMatrix}, + {FXBSTR_ID('c', 's', 0, 0), + &CPDF_StreamContentParser::Handle_SetColorSpace_Fill}, + {FXBSTR_ID('d', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetDash}, + {FXBSTR_ID('d', '0', 0, 0), + &CPDF_StreamContentParser::Handle_SetCharWidth}, + {FXBSTR_ID('d', '1', 0, 0), + &CPDF_StreamContentParser::Handle_SetCachedDevice}, + {FXBSTR_ID('f', 0, 0, 0), &CPDF_StreamContentParser::Handle_FillPath}, + {FXBSTR_ID('f', '*', 0, 0), &CPDF_StreamContentParser::Handle_EOFillPath}, + {FXBSTR_ID('g', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetGray_Fill}, + {FXBSTR_ID('g', 's', 0, 0), + &CPDF_StreamContentParser::Handle_SetExtendGraphState}, + {FXBSTR_ID('h', 0, 0, 0), &CPDF_StreamContentParser::Handle_ClosePath}, + {FXBSTR_ID('i', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetFlat}, + {FXBSTR_ID('j', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineJoin}, + {FXBSTR_ID('k', 0, 0, 0), + &CPDF_StreamContentParser::Handle_SetCMYKColor_Fill}, + {FXBSTR_ID('l', 0, 0, 0), &CPDF_StreamContentParser::Handle_LineTo}, + {FXBSTR_ID('m', 0, 0, 0), &CPDF_StreamContentParser::Handle_MoveTo}, + {FXBSTR_ID('n', 0, 0, 0), &CPDF_StreamContentParser::Handle_EndPath}, + {FXBSTR_ID('q', 0, 0, 0), + &CPDF_StreamContentParser::Handle_SaveGraphState}, + {FXBSTR_ID('r', 'e', 0, 0), &CPDF_StreamContentParser::Handle_Rectangle}, + {FXBSTR_ID('r', 'g', 0, 0), + &CPDF_StreamContentParser::Handle_SetRGBColor_Fill}, + {FXBSTR_ID('r', 'i', 0, 0), + &CPDF_StreamContentParser::Handle_SetRenderIntent}, + {FXBSTR_ID('s', 0, 0, 0), + &CPDF_StreamContentParser::Handle_CloseStrokePath}, + {FXBSTR_ID('s', 'c', 0, 0), + &CPDF_StreamContentParser::Handle_SetColor_Fill}, + {FXBSTR_ID('s', 'c', 'n', 0), + &CPDF_StreamContentParser::Handle_SetColorPS_Fill}, + {FXBSTR_ID('s', 'h', 0, 0), &CPDF_StreamContentParser::Handle_ShadeFill}, + {FXBSTR_ID('v', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_23}, + {FXBSTR_ID('w', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineWidth}, + {FXBSTR_ID('y', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_13}, + }); +} + +void CPDF_StreamContentParser::OnOperator(const FX_CHAR* op) { + int i = 0; + FX_DWORD opid = 0; + while (i < 4 && op[i]) { + opid = (opid << 8) + op[i]; + i++; + } + while (i < 4) { + opid <<= 8; + i++; + } + + static const OpCodes s_OpCodes = InitializeOpCodes(); + + auto it = s_OpCodes.find(opid); + if (it != s_OpCodes.end()) + (this->*it->second)(); +} + +void CPDF_StreamContentParser::Handle_CloseFillStrokePath() { + if (m_Options.m_bTextOnly) { + return; + } + Handle_ClosePath(); + AddPathObject(FXFILL_WINDING, TRUE); +} + +void CPDF_StreamContentParser::Handle_FillStrokePath() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathObject(FXFILL_WINDING, TRUE); +} + +void CPDF_StreamContentParser::Handle_CloseEOFillStrokePath() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE); + AddPathObject(FXFILL_ALTERNATE, TRUE); +} + +void CPDF_StreamContentParser::Handle_EOFillStrokePath() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathObject(FXFILL_ALTERNATE, TRUE); +} + +void CPDF_StreamContentParser::Handle_BeginMarkedContent_Dictionary() { + if (!m_Options.m_bMarkedContent) { + return; + } + CFX_ByteString tag = GetString(1); + CPDF_Object* pProperty = GetObject(0); + if (!pProperty) { + return; + } + FX_BOOL bDirect = TRUE; + if (pProperty->IsName()) { + pProperty = FindResourceObj("Properties", pProperty->GetString()); + if (!pProperty) + return; + bDirect = FALSE; + } + if (CPDF_Dictionary* pDict = pProperty->AsDictionary()) { + m_CurContentMark.GetModify()->AddMark(tag, pDict, bDirect); + } +} + +void CPDF_StreamContentParser::Handle_BeginImage() { + FX_FILESIZE savePos = m_pSyntax->GetPos(); + CPDF_Dictionary* pDict = new CPDF_Dictionary; + while (1) { + CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement(); + if (type == CPDF_StreamParser::Keyword) { + CFX_ByteString bsKeyword(m_pSyntax->GetWordBuf(), + m_pSyntax->GetWordSize()); + if (bsKeyword != "ID") { + m_pSyntax->SetPos(savePos); + pDict->Release(); + return; + } + } + if (type != CPDF_StreamParser::Name) { + break; + } + CFX_ByteString key((const FX_CHAR*)m_pSyntax->GetWordBuf() + 1, + m_pSyntax->GetWordSize() - 1); + std::unique_ptr> pObj( + m_pSyntax->ReadNextObject()); + if (!key.IsEmpty()) { + FX_DWORD dwObjNum = pObj ? pObj->GetObjNum() : 0; + if (dwObjNum) + pDict->SetAtReference(key, m_pDocument, dwObjNum); + else + pDict->SetAt(key, pObj.release()); + } + } + PDF_ReplaceAbbr(pDict); + CPDF_Object* pCSObj = NULL; + if (pDict->KeyExist("ColorSpace")) { + pCSObj = pDict->GetElementValue("ColorSpace"); + if (pCSObj->IsName()) { + CFX_ByteString name = pCSObj->GetString(); + if (name != "DeviceRGB" && name != "DeviceGray" && name != "DeviceCMYK") { + pCSObj = FindResourceObj("ColorSpace", name); + if (pCSObj && !pCSObj->GetObjNum()) { + pCSObj = pCSObj->Clone(); + pDict->SetAt("ColorSpace", pCSObj); + } + } + } + } + CPDF_Stream* pStream = m_pSyntax->ReadInlineStream( + m_pDocument, pDict, pCSObj, m_Options.m_bDecodeInlineImage); + while (1) { + CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement(); + if (type == CPDF_StreamParser::EndOfData) { + break; + } + if (type != CPDF_StreamParser::Keyword) { + continue; + } + if (m_pSyntax->GetWordSize() == 2 && m_pSyntax->GetWordBuf()[0] == 'E' && + m_pSyntax->GetWordBuf()[1] == 'I') { + break; + } + } + if (m_Options.m_bTextOnly) { + if (pStream) { + pStream->Release(); + } else { + pDict->Release(); + } + return; + } + pDict->SetAtName("Subtype", "Image"); + CPDF_ImageObject* pImgObj = AddImage(pStream, NULL, TRUE); + if (!pImgObj) { + if (pStream) { + pStream->Release(); + } else { + pDict->Release(); + } + } +} + +void CPDF_StreamContentParser::Handle_BeginMarkedContent() { + if (!m_Options.m_bMarkedContent) { + return; + } + CFX_ByteString tag = GetString(0); + m_CurContentMark.GetModify()->AddMark(tag, NULL, FALSE); +} + +void CPDF_StreamContentParser::Handle_BeginText() { + m_pCurStates->m_TextMatrix.Set(1.0f, 0, 0, 1.0f, 0, 0); + OnChangeTextMatrix(); + m_pCurStates->m_TextX = 0; + m_pCurStates->m_TextY = 0; + m_pCurStates->m_TextLineX = 0; + m_pCurStates->m_TextLineY = 0; +} + +void CPDF_StreamContentParser::Handle_CurveTo_123() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathPoint(GetNumber(5), GetNumber(4), FXPT_BEZIERTO); + AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); + AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); +} + +void CPDF_StreamContentParser::Handle_ConcatMatrix() { + FX_FLOAT a2 = GetNumber16(5), b2 = GetNumber16(4), c2 = GetNumber16(3), + d2 = GetNumber16(2); + FX_FLOAT e2 = GetNumber(1), f2 = GetNumber(0); + CFX_Matrix new_matrix(a2, b2, c2, d2, e2, f2); + new_matrix.Concat(m_pCurStates->m_CTM); + m_pCurStates->m_CTM = new_matrix; + OnChangeTextMatrix(); +} + +void CPDF_StreamContentParser::Handle_SetColorSpace_Fill() { + if (m_Options.m_bTextOnly) { + return; + } + CFX_ByteString csname = GetString(0); + CPDF_ColorSpace* pCS = FindColorSpace(csname); + if (!pCS) { + return; + } + m_pCurStates->m_ColorState.GetModify()->m_FillColor.SetColorSpace(pCS); +} + +void CPDF_StreamContentParser::Handle_SetColorSpace_Stroke() { + if (m_Options.m_bTextOnly) { + return; + } + CFX_ByteString csname = GetString(0); + CPDF_ColorSpace* pCS = FindColorSpace(csname); + if (!pCS) { + return; + } + m_pCurStates->m_ColorState.GetModify()->m_StrokeColor.SetColorSpace(pCS); +} + +void CPDF_StreamContentParser::Handle_SetDash() { + if (m_Options.m_bTextOnly) { + return; + } + CPDF_Array* pArray = GetObject(1) ? GetObject(1)->GetArray() : NULL; + if (!pArray) { + return; + } + m_pCurStates->SetLineDash(pArray, GetNumber(0), 1.0f); +} + +void CPDF_StreamContentParser::Handle_SetCharWidth() { + m_Type3Data[0] = GetNumber(1); + m_Type3Data[1] = GetNumber(0); + m_bColored = TRUE; +} + +void CPDF_StreamContentParser::Handle_SetCachedDevice() { + for (int i = 0; i < 6; i++) { + m_Type3Data[i] = GetNumber(5 - i); + } + m_bColored = FALSE; +} + +void CPDF_StreamContentParser::Handle_ExecuteXObject() { + CFX_ByteString name = GetString(0); + if (name == m_LastImageName && m_pLastImage && m_pLastImage->GetStream() && + m_pLastImage->GetStream()->GetObjNum()) { + AddImage(nullptr, m_pLastImage, FALSE); + return; + } + + if (m_Options.m_bTextOnly) { + if (!m_pResources) + return; + + CPDF_Dictionary* pList = m_pResources->GetDictBy("XObject"); + if (!pList && m_pPageResources && m_pResources != m_pPageResources) + pList = m_pPageResources->GetDictBy("XObject"); + if (!pList) + return; + CPDF_Reference* pRes = ToReference(pList->GetElement(name)); + if (!pRes) + return; + + FX_BOOL bForm; + if (m_pDocument->IsFormStream(pRes->GetRefObjNum(), bForm) && !bForm) + return; + } + + CPDF_Stream* pXObject = ToStream(FindResourceObj("XObject", name)); + if (!pXObject) { + m_bResourceMissing = TRUE; + return; + } + + CFX_ByteStringC type = pXObject->GetDict() + ? pXObject->GetDict()->GetConstStringBy("Subtype") + : CFX_ByteStringC(); + if (type == "Image") { + if (m_Options.m_bTextOnly) { + return; + } + CPDF_ImageObject* pObj = AddImage(pXObject, NULL, FALSE); + m_LastImageName = name; + m_pLastImage = pObj->m_pImage; + if (!m_pObjectHolder->HasImageMask()) + m_pObjectHolder->SetHasImageMask(m_pLastImage->IsMask()); + } else if (type == "Form") { + AddForm(pXObject); + } else { + return; + } +} + +void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) { + if (!m_Options.m_bSeparateForm) { + CPDF_Dictionary* pResources = pStream->GetDict()->GetDictBy("Resources"); + CFX_Matrix form_matrix = pStream->GetDict()->GetMatrixBy("Matrix"); + form_matrix.Concat(m_pCurStates->m_CTM); + CPDF_Array* pBBox = pStream->GetDict()->GetArrayBy("BBox"); + CFX_FloatRect form_bbox; + CPDF_Path ClipPath; + if (pBBox) { + form_bbox = pStream->GetDict()->GetRectBy("BBox"); + ClipPath.New(); + ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right, + form_bbox.top); + ClipPath.Transform(&form_matrix); + form_bbox.Transform(&form_matrix); + } + CPDF_StreamContentParser parser(m_pDocument, m_pPageResources, m_pResources, + &m_mtContentToUser, m_pObjectHolder, + pResources, &form_bbox, &m_Options, + m_pCurStates.get(), m_Level + 1); + parser.m_pCurStates->m_CTM = form_matrix; + if (ClipPath.NotNull()) { + parser.m_pCurStates->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING, + TRUE); + } + CPDF_StreamAcc stream; + stream.LoadAllData(pStream, FALSE); + if (stream.GetSize() == 0) { + return; + } + parser.Parse(stream.GetData(), stream.GetSize(), 0); + return; + } + std::unique_ptr pFormObj(new CPDF_FormObject); + pFormObj->m_pForm = + new CPDF_Form(m_pDocument, m_pPageResources, pStream, m_pResources); + pFormObj->m_FormMatrix = m_pCurStates->m_CTM; + pFormObj->m_FormMatrix.Concat(m_mtContentToUser); + CPDF_AllStates status; + status.m_GeneralState = m_pCurStates->m_GeneralState; + status.m_GraphState = m_pCurStates->m_GraphState; + status.m_ColorState = m_pCurStates->m_ColorState; + status.m_TextState = m_pCurStates->m_TextState; + pFormObj->m_pForm->ParseContent(&status, NULL, NULL, &m_Options, m_Level + 1); + if (!m_pObjectHolder->BackgroundAlphaNeeded() && + pFormObj->m_pForm->BackgroundAlphaNeeded()) { + m_pObjectHolder->SetBackgroundAlphaNeeded(TRUE); + } + pFormObj->CalcBoundingBox(); + SetGraphicStates(pFormObj.get(), TRUE, TRUE, TRUE); + m_pObjectHolder->GetPageObjectList()->push_back(std::move(pFormObj)); +} + +CPDF_ImageObject* CPDF_StreamContentParser::AddImage(CPDF_Stream* pStream, + CPDF_Image* pImage, + FX_BOOL bInline) { + if (!pStream && !pImage) { + return NULL; + } + CFX_Matrix ImageMatrix; + ImageMatrix.Copy(m_pCurStates->m_CTM); + ImageMatrix.Concat(m_mtContentToUser); + + std::unique_ptr pImageObj(new CPDF_ImageObject); + if (pImage) { + pImageObj->m_pImage = + m_pDocument->GetPageData()->GetImage(pImage->GetStream()); + } else if (pStream->GetObjNum()) { + pImageObj->m_pImage = m_pDocument->LoadImageF(pStream); + } else { + pImageObj->m_pImage = new CPDF_Image(m_pDocument); + pImageObj->m_pImage->LoadImageF(pStream, bInline); + } + SetGraphicStates(pImageObj.get(), pImageObj->m_pImage->IsMask(), FALSE, + FALSE); + pImageObj->m_Matrix = ImageMatrix; + pImageObj->CalcBoundingBox(); + CPDF_ImageObject* pRet = pImageObj.get(); + m_pObjectHolder->GetPageObjectList()->push_back(std::move(pImageObj)); + return pRet; +} + +void CPDF_StreamContentParser::Handle_MarkPlace_Dictionary() {} + +void CPDF_StreamContentParser::Handle_EndImage() {} + +void CPDF_StreamContentParser::Handle_EndMarkedContent() { + if (!m_Options.m_bMarkedContent) { + return; + } + if (m_CurContentMark.IsNull()) { + return; + } + int count = m_CurContentMark.GetObject()->CountItems(); + if (count == 1) { + m_CurContentMark.SetNull(); + return; + } + m_CurContentMark.GetModify()->DeleteLastMark(); +} + +void CPDF_StreamContentParser::Handle_EndText() { + int count = m_ClipTextList.GetSize(); + if (count == 0) { + return; + } + if (m_pCurStates->m_TextState.GetObject()->m_TextMode < 4) { + for (int i = 0; i < count; i++) { + delete m_ClipTextList.GetAt(i); + } + } else { + m_pCurStates->m_ClipPath.AppendTexts(m_ClipTextList.GetData(), count); + } + m_ClipTextList.RemoveAll(); +} + +void CPDF_StreamContentParser::Handle_FillPath() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathObject(FXFILL_WINDING, FALSE); +} + +void CPDF_StreamContentParser::Handle_FillPathOld() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathObject(FXFILL_WINDING, FALSE); +} + +void CPDF_StreamContentParser::Handle_EOFillPath() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathObject(FXFILL_ALTERNATE, FALSE); +} + +void CPDF_StreamContentParser::Handle_SetGray_Fill() { + FX_FLOAT value = GetNumber(0); + CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); + m_pCurStates->m_ColorState.SetFillColor(pCS, &value, 1); +} + +void CPDF_StreamContentParser::Handle_SetGray_Stroke() { + FX_FLOAT value = GetNumber(0); + CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); + m_pCurStates->m_ColorState.SetStrokeColor(pCS, &value, 1); +} + +void CPDF_StreamContentParser::Handle_SetExtendGraphState() { + CFX_ByteString name = GetString(0); + CPDF_Dictionary* pGS = ToDictionary(FindResourceObj("ExtGState", name)); + if (!pGS) { + m_bResourceMissing = TRUE; + return; + } + m_pCurStates->ProcessExtGS(pGS, this); +} + +void CPDF_StreamContentParser::Handle_ClosePath() { + if (m_Options.m_bTextOnly) { + return; + } + if (m_PathPointCount == 0) { + return; + } + if (m_PathStartX != m_PathCurrentX || m_PathStartY != m_PathCurrentY) { + AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE); + } else if (m_pPathPoints[m_PathPointCount - 1].m_Flag != FXPT_MOVETO) { + m_pPathPoints[m_PathPointCount - 1].m_Flag |= FXPT_CLOSEFIGURE; + } +} + +void CPDF_StreamContentParser::Handle_SetFlat() { + m_pCurStates->m_GeneralState.GetModify()->m_Flatness = GetNumber(0); +} + +void CPDF_StreamContentParser::Handle_BeginImageData() {} + +void CPDF_StreamContentParser::Handle_SetLineJoin() { + m_pCurStates->m_GraphState.GetModify()->m_LineJoin = + (CFX_GraphStateData::LineJoin)GetInteger(0); +} + +void CPDF_StreamContentParser::Handle_SetLineCap() { + m_pCurStates->m_GraphState.GetModify()->m_LineCap = + (CFX_GraphStateData::LineCap)GetInteger(0); +} + +void CPDF_StreamContentParser::Handle_SetCMYKColor_Fill() { + if (m_ParamCount != 4) + return; + + FX_FLOAT values[4]; + for (int i = 0; i < 4; i++) { + values[i] = GetNumber(3 - i); + } + CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); + m_pCurStates->m_ColorState.SetFillColor(pCS, values, 4); +} + +void CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke() { + if (m_ParamCount != 4) + return; + + FX_FLOAT values[4]; + for (int i = 0; i < 4; i++) { + values[i] = GetNumber(3 - i); + } + CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); + m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 4); +} + +void CPDF_StreamContentParser::Handle_LineTo() { + if (m_ParamCount != 2) + return; + + if (m_Options.m_bTextOnly) { + return; + } + AddPathPoint(GetNumber(1), GetNumber(0), FXPT_LINETO); +} + +void CPDF_StreamContentParser::Handle_MoveTo() { + if (m_ParamCount != 2) + return; + + if (m_Options.m_bTextOnly) { + m_pSyntax->SkipPathObject(); + return; + } + AddPathPoint(GetNumber(1), GetNumber(0), FXPT_MOVETO); + ParsePathObject(); +} + +void CPDF_StreamContentParser::Handle_SetMiterLimit() { + m_pCurStates->m_GraphState.GetModify()->m_MiterLimit = GetNumber(0); +} + +void CPDF_StreamContentParser::Handle_MarkPlace() {} + +void CPDF_StreamContentParser::Handle_EndPath() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathObject(0, FALSE); +} + +void CPDF_StreamContentParser::Handle_SaveGraphState() { + std::unique_ptr pStates(new CPDF_AllStates); + pStates->Copy(*m_pCurStates); + m_StateStack.push_back(std::move(pStates)); +} + +void CPDF_StreamContentParser::Handle_RestoreGraphState() { + if (m_StateStack.empty()) + return; + std::unique_ptr pStates = std::move(m_StateStack.back()); + m_StateStack.pop_back(); + m_pCurStates->Copy(*pStates); +} + +void CPDF_StreamContentParser::Handle_Rectangle() { + if (m_Options.m_bTextOnly) { + return; + } + FX_FLOAT x = GetNumber(3), y = GetNumber(2); + FX_FLOAT w = GetNumber(1), h = GetNumber(0); + AddPathRect(x, y, w, h); +} + +void CPDF_StreamContentParser::AddPathRect(FX_FLOAT x, + FX_FLOAT y, + FX_FLOAT w, + FX_FLOAT h) { + AddPathPoint(x, y, FXPT_MOVETO); + AddPathPoint(x + w, y, FXPT_LINETO); + AddPathPoint(x + w, y + h, FXPT_LINETO); + AddPathPoint(x, y + h, FXPT_LINETO); + AddPathPoint(x, y, FXPT_LINETO | FXPT_CLOSEFIGURE); +} + +void CPDF_StreamContentParser::Handle_SetRGBColor_Fill() { + if (m_ParamCount != 3) + return; + + FX_FLOAT values[3]; + for (int i = 0; i < 3; i++) { + values[i] = GetNumber(2 - i); + } + CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); + m_pCurStates->m_ColorState.SetFillColor(pCS, values, 3); +} + +void CPDF_StreamContentParser::Handle_SetRGBColor_Stroke() { + if (m_ParamCount != 3) + return; + + FX_FLOAT values[3]; + for (int i = 0; i < 3; i++) { + values[i] = GetNumber(2 - i); + } + CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); + m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 3); +} + +void CPDF_StreamContentParser::Handle_SetRenderIntent() {} + +void CPDF_StreamContentParser::Handle_CloseStrokePath() { + if (m_Options.m_bTextOnly) { + return; + } + Handle_ClosePath(); + AddPathObject(0, TRUE); +} + +void CPDF_StreamContentParser::Handle_StrokePath() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathObject(0, TRUE); +} + +void CPDF_StreamContentParser::Handle_SetColor_Fill() { + if (m_Options.m_bTextOnly) { + return; + } + FX_FLOAT values[4]; + int nargs = m_ParamCount; + if (nargs > 4) { + nargs = 4; + } + for (int i = 0; i < nargs; i++) { + values[i] = GetNumber(nargs - i - 1); + } + m_pCurStates->m_ColorState.SetFillColor(NULL, values, nargs); +} + +void CPDF_StreamContentParser::Handle_SetColor_Stroke() { + if (m_Options.m_bTextOnly) { + return; + } + FX_FLOAT values[4]; + int nargs = m_ParamCount; + if (nargs > 4) { + nargs = 4; + } + for (int i = 0; i < nargs; i++) { + values[i] = GetNumber(nargs - i - 1); + } + m_pCurStates->m_ColorState.SetStrokeColor(NULL, values, nargs); +} + +void CPDF_StreamContentParser::Handle_SetColorPS_Fill() { + if (m_Options.m_bTextOnly) { + return; + } + CPDF_Object* pLastParam = GetObject(0); + if (!pLastParam) { + return; + } + int nargs = m_ParamCount; + int nvalues = nargs; + if (pLastParam->IsName()) { + nvalues--; + } + FX_FLOAT* values = NULL; + if (nvalues) { + values = FX_Alloc(FX_FLOAT, nvalues); + for (int i = 0; i < nvalues; i++) { + values[i] = GetNumber(nargs - i - 1); + } + } + if (nvalues != nargs) { + CPDF_Pattern* pPattern = FindPattern(GetString(0), FALSE); + if (pPattern) { + m_pCurStates->m_ColorState.SetFillPattern(pPattern, values, nvalues); + } + } else { + m_pCurStates->m_ColorState.SetFillColor(NULL, values, nvalues); + } + FX_Free(values); +} + +void CPDF_StreamContentParser::Handle_SetColorPS_Stroke() { + if (m_Options.m_bTextOnly) { + return; + } + CPDF_Object* pLastParam = GetObject(0); + if (!pLastParam) { + return; + } + int nargs = m_ParamCount; + int nvalues = nargs; + if (pLastParam->IsName()) + nvalues--; + + FX_FLOAT* values = NULL; + if (nvalues) { + values = FX_Alloc(FX_FLOAT, nvalues); + for (int i = 0; i < nvalues; i++) { + values[i] = GetNumber(nargs - i - 1); + } + } + if (nvalues != nargs) { + CPDF_Pattern* pPattern = FindPattern(GetString(0), FALSE); + if (pPattern) { + m_pCurStates->m_ColorState.SetStrokePattern(pPattern, values, nvalues); + } + } else { + m_pCurStates->m_ColorState.SetStrokeColor(NULL, values, nvalues); + } + FX_Free(values); +} + +CFX_FloatRect GetShadingBBox(CPDF_Stream* pStream, + ShadingType type, + const CFX_Matrix* pMatrix, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS); + +void CPDF_StreamContentParser::Handle_ShadeFill() { + if (m_Options.m_bTextOnly) { + return; + } + CPDF_Pattern* pPattern = FindPattern(GetString(0), TRUE); + if (!pPattern) { + return; + } + if (pPattern->m_PatternType != CPDF_Pattern::SHADING) { + return; + } + CPDF_ShadingPattern* pShading = static_cast(pPattern); + if (!pShading->m_bShadingObj) { + return; + } + if (!pShading->Load()) { + return; + } + std::unique_ptr pObj(new CPDF_ShadingObject); + pObj->m_pShading = pShading; + SetGraphicStates(pObj.get(), FALSE, FALSE, FALSE); + pObj->m_Matrix = m_pCurStates->m_CTM; + pObj->m_Matrix.Concat(m_mtContentToUser); + CFX_FloatRect bbox; + if (!pObj->m_ClipPath.IsNull()) { + bbox = pObj->m_ClipPath.GetClipBox(); + } else { + bbox = m_BBox; + } + if (pShading->IsMeshShading()) { + bbox.Intersect(GetShadingBBox(ToStream(pShading->m_pShadingObj), + pShading->m_ShadingType, &pObj->m_Matrix, + pShading->m_pFunctions, pShading->m_nFuncs, + pShading->m_pCS)); + } + pObj->m_Left = bbox.left; + pObj->m_Right = bbox.right; + pObj->m_Top = bbox.top; + pObj->m_Bottom = bbox.bottom; + m_pObjectHolder->GetPageObjectList()->push_back(std::move(pObj)); +} + +void CPDF_StreamContentParser::Handle_SetCharSpace() { + m_pCurStates->m_TextState.GetModify()->m_CharSpace = GetNumber(0); +} + +void CPDF_StreamContentParser::Handle_MoveTextPoint() { + m_pCurStates->m_TextLineX += GetNumber(1); + m_pCurStates->m_TextLineY += GetNumber(0); + m_pCurStates->m_TextX = m_pCurStates->m_TextLineX; + m_pCurStates->m_TextY = m_pCurStates->m_TextLineY; +} + +void CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading() { + Handle_MoveTextPoint(); + m_pCurStates->m_TextLeading = -GetNumber(0); +} + +void CPDF_StreamContentParser::Handle_SetFont() { + FX_FLOAT fs = GetNumber(0); + if (fs == 0) { + fs = m_DefFontSize; + } + m_pCurStates->m_TextState.GetModify()->m_FontSize = fs; + CPDF_Font* pFont = FindFont(GetString(1)); + if (pFont) { + m_pCurStates->m_TextState.SetFont(pFont); + } +} + +CPDF_Object* CPDF_StreamContentParser::FindResourceObj( + const CFX_ByteStringC& type, + const CFX_ByteString& name) { + if (!m_pResources) { + return NULL; + } + if (m_pResources == m_pPageResources) { + CPDF_Dictionary* pList = m_pResources->GetDictBy(type); + if (!pList) { + return NULL; + } + CPDF_Object* pRes = pList->GetElementValue(name); + return pRes; + } + CPDF_Dictionary* pList = m_pResources->GetDictBy(type); + if (!pList) { + if (!m_pPageResources) { + return NULL; + } + CPDF_Dictionary* pList = m_pPageResources->GetDictBy(type); + if (!pList) { + return NULL; + } + CPDF_Object* pRes = pList->GetElementValue(name); + return pRes; + } + CPDF_Object* pRes = pList->GetElementValue(name); + return pRes; +} + +CPDF_Font* CPDF_StreamContentParser::FindFont(const CFX_ByteString& name) { + CPDF_Dictionary* pFontDict = ToDictionary(FindResourceObj("Font", name)); + if (!pFontDict) { + m_bResourceMissing = TRUE; + return CPDF_Font::GetStockFont(m_pDocument, "Helvetica"); + } + + CPDF_Font* pFont = m_pDocument->LoadFont(pFontDict); + if (pFont && pFont->IsType3Font()) { + pFont->AsType3Font()->SetPageResources(m_pResources); + pFont->AsType3Font()->CheckType3FontMetrics(); + } + return pFont; +} + +CPDF_ColorSpace* CPDF_StreamContentParser::FindColorSpace( + const CFX_ByteString& name) { + if (name == "Pattern") { + return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); + } + if (name == "DeviceGray" || name == "DeviceCMYK" || name == "DeviceRGB") { + CFX_ByteString defname = "Default"; + defname += name.Mid(7); + CPDF_Object* pDefObj = FindResourceObj("ColorSpace", defname); + if (!pDefObj) { + if (name == "DeviceGray") { + return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); + } + if (name == "DeviceRGB") { + return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); + } + return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); + } + return m_pDocument->LoadColorSpace(pDefObj); + } + CPDF_Object* pCSObj = FindResourceObj("ColorSpace", name); + if (!pCSObj) { + m_bResourceMissing = TRUE; + return NULL; + } + return m_pDocument->LoadColorSpace(pCSObj); +} + +CPDF_Pattern* CPDF_StreamContentParser::FindPattern(const CFX_ByteString& name, + FX_BOOL bShading) { + CPDF_Object* pPattern = + FindResourceObj(bShading ? "Shading" : "Pattern", name); + if (!pPattern || (!pPattern->IsDictionary() && !pPattern->IsStream())) { + m_bResourceMissing = TRUE; + return NULL; + } + return m_pDocument->LoadPattern(pPattern, bShading, + &m_pCurStates->m_ParentMatrix); +} + +void CPDF_StreamContentParser::ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y) { + m_pCurStates->m_TextMatrix.Transform(x, y, x, y); + ConvertUserSpace(x, y); +} + +void CPDF_StreamContentParser::ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y) { + m_pCurStates->m_CTM.Transform(x, y, x, y); + m_mtContentToUser.Transform(x, y, x, y); +} + +void CPDF_StreamContentParser::AddTextObject(CFX_ByteString* pStrs, + FX_FLOAT fInitKerning, + FX_FLOAT* pKerning, + int nsegs) { + CPDF_Font* pFont = m_pCurStates->m_TextState.GetFont(); + if (!pFont) { + return; + } + if (fInitKerning != 0) { + if (!pFont->IsVertWriting()) { + m_pCurStates->m_TextX -= + (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000; + } else { + m_pCurStates->m_TextY -= + (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000; + } + } + if (nsegs == 0) { + return; + } + int textmode; + if (pFont->IsType3Font()) { + textmode = 0; + } else { + textmode = m_pCurStates->m_TextState.GetObject()->m_TextMode; + } + { + std::unique_ptr pText(new CPDF_TextObject); + m_pLastTextObject = pText.get(); + SetGraphicStates(m_pLastTextObject, TRUE, TRUE, TRUE); + if (textmode && textmode != 3 && textmode != 4 && textmode != 7) { + FX_FLOAT* pCTM = pText->m_TextState.GetModify()->m_CTM; + pCTM[0] = m_pCurStates->m_CTM.a; + pCTM[1] = m_pCurStates->m_CTM.c; + pCTM[2] = m_pCurStates->m_CTM.b; + pCTM[3] = m_pCurStates->m_CTM.d; + } + pText->SetSegments(pStrs, pKerning, nsegs); + pText->m_PosX = m_pCurStates->m_TextX; + pText->m_PosY = m_pCurStates->m_TextY + m_pCurStates->m_TextRise; + ConvertTextSpace(pText->m_PosX, pText->m_PosY); + FX_FLOAT x_advance; + FX_FLOAT y_advance; + pText->CalcPositionData(&x_advance, &y_advance, + m_pCurStates->m_TextHorzScale, m_Level); + m_pCurStates->m_TextX += x_advance; + m_pCurStates->m_TextY += y_advance; + if (textmode > 3) + m_ClipTextList.Add(pText->Clone()); + m_pObjectHolder->GetPageObjectList()->push_back(std::move(pText)); + } + if (pKerning && pKerning[nsegs - 1] != 0) { + if (!pFont->IsVertWriting()) { + m_pCurStates->m_TextX -= + (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) / + 1000; + } else { + m_pCurStates->m_TextY -= + (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) / + 1000; + } + } +} + +void CPDF_StreamContentParser::Handle_ShowText() { + CFX_ByteString str = GetString(0); + if (str.IsEmpty()) { + return; + } + AddTextObject(&str, 0, NULL, 1); +} + +void CPDF_StreamContentParser::Handle_ShowText_Positioning() { + CPDF_Array* pArray = GetObject(0) ? GetObject(0)->GetArray() : NULL; + if (!pArray) { + return; + } + int n = pArray->GetCount(); + int nsegs = 0; + for (int i = 0; i < n; i++) { + if (pArray->GetElementValue(i)->IsString()) + nsegs++; + } + if (nsegs == 0) { + for (int i = 0; i < n; i++) { + m_pCurStates->m_TextX -= + (pArray->GetNumberAt(i) * m_pCurStates->m_TextState.GetFontSize()) / + 1000; + } + return; + } + CFX_ByteString* pStrs = new CFX_ByteString[nsegs]; + FX_FLOAT* pKerning = FX_Alloc(FX_FLOAT, nsegs); + int iSegment = 0; + FX_FLOAT fInitKerning = 0; + for (int i = 0; i < n; i++) { + CPDF_Object* pObj = pArray->GetElementValue(i); + if (pObj->IsString()) { + CFX_ByteString str = pObj->GetString(); + if (str.IsEmpty()) { + continue; + } + pStrs[iSegment] = str; + pKerning[iSegment++] = 0; + } else { + FX_FLOAT num = pObj ? pObj->GetNumber() : 0; + if (iSegment == 0) { + fInitKerning += num; + } else { + pKerning[iSegment - 1] += num; + } + } + } + AddTextObject(pStrs, fInitKerning, pKerning, iSegment); + delete[] pStrs; + FX_Free(pKerning); +} + +void CPDF_StreamContentParser::Handle_SetTextLeading() { + m_pCurStates->m_TextLeading = GetNumber(0); +} + +void CPDF_StreamContentParser::Handle_SetTextMatrix() { + m_pCurStates->m_TextMatrix.Set(GetNumber16(5), GetNumber16(4), GetNumber16(3), + GetNumber16(2), GetNumber(1), GetNumber(0)); + OnChangeTextMatrix(); + m_pCurStates->m_TextX = 0; + m_pCurStates->m_TextY = 0; + m_pCurStates->m_TextLineX = 0; + m_pCurStates->m_TextLineY = 0; +} + +void CPDF_StreamContentParser::OnChangeTextMatrix() { + CFX_Matrix text_matrix(m_pCurStates->m_TextHorzScale, 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f); + text_matrix.Concat(m_pCurStates->m_TextMatrix); + text_matrix.Concat(m_pCurStates->m_CTM); + text_matrix.Concat(m_mtContentToUser); + FX_FLOAT* pTextMatrix = m_pCurStates->m_TextState.GetModify()->m_Matrix; + pTextMatrix[0] = text_matrix.a; + pTextMatrix[1] = text_matrix.c; + pTextMatrix[2] = text_matrix.b; + pTextMatrix[3] = text_matrix.d; +} + +void CPDF_StreamContentParser::Handle_SetTextRenderMode() { + int mode = GetInteger(0); + if (mode < 0 || mode > 7) { + return; + } + m_pCurStates->m_TextState.GetModify()->m_TextMode = mode; +} + +void CPDF_StreamContentParser::Handle_SetTextRise() { + m_pCurStates->m_TextRise = GetNumber(0); +} + +void CPDF_StreamContentParser::Handle_SetWordSpace() { + m_pCurStates->m_TextState.GetModify()->m_WordSpace = GetNumber(0); +} + +void CPDF_StreamContentParser::Handle_SetHorzScale() { + if (m_ParamCount != 1) { + return; + } + m_pCurStates->m_TextHorzScale = GetNumber(0) / 100; + OnChangeTextMatrix(); +} + +void CPDF_StreamContentParser::Handle_MoveToNextLine() { + m_pCurStates->m_TextLineY -= m_pCurStates->m_TextLeading; + m_pCurStates->m_TextX = m_pCurStates->m_TextLineX; + m_pCurStates->m_TextY = m_pCurStates->m_TextLineY; +} + +void CPDF_StreamContentParser::Handle_CurveTo_23() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO); + AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); + AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); +} + +void CPDF_StreamContentParser::Handle_SetLineWidth() { + FX_FLOAT width = GetNumber(0); + m_pCurStates->m_GraphState.GetModify()->m_LineWidth = width; +} + +void CPDF_StreamContentParser::Handle_Clip() { + m_PathClipType = FXFILL_WINDING; +} + +void CPDF_StreamContentParser::Handle_EOClip() { + m_PathClipType = FXFILL_ALTERNATE; +} + +void CPDF_StreamContentParser::Handle_CurveTo_13() { + if (m_Options.m_bTextOnly) { + return; + } + AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); + AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); + AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); +} + +void CPDF_StreamContentParser::Handle_NextLineShowText() { + Handle_MoveToNextLine(); + Handle_ShowText(); +} + +void CPDF_StreamContentParser::Handle_NextLineShowText_Space() { + m_pCurStates->m_TextState.GetModify()->m_WordSpace = GetNumber(2); + m_pCurStates->m_TextState.GetModify()->m_CharSpace = GetNumber(1); + Handle_NextLineShowText(); +} + +void CPDF_StreamContentParser::Handle_Invalid() {} + +void CPDF_StreamContentParser::AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag) { + m_PathCurrentX = x; + m_PathCurrentY = y; + if (flag == FXPT_MOVETO) { + m_PathStartX = x; + m_PathStartY = y; + if (m_PathPointCount && + m_pPathPoints[m_PathPointCount - 1].m_Flag == FXPT_MOVETO) { + m_pPathPoints[m_PathPointCount - 1].m_PointX = x; + m_pPathPoints[m_PathPointCount - 1].m_PointY = y; + return; + } + } else if (m_PathPointCount == 0) { + return; + } + m_PathPointCount++; + if (m_PathPointCount > m_PathAllocSize) { + int newsize = m_PathPointCount + 256; + FX_PATHPOINT* pNewPoints = FX_Alloc(FX_PATHPOINT, newsize); + if (m_PathAllocSize) { + FXSYS_memcpy(pNewPoints, m_pPathPoints, + m_PathAllocSize * sizeof(FX_PATHPOINT)); + FX_Free(m_pPathPoints); + } + m_pPathPoints = pNewPoints; + m_PathAllocSize = newsize; + } + m_pPathPoints[m_PathPointCount - 1].m_Flag = flag; + m_pPathPoints[m_PathPointCount - 1].m_PointX = x; + m_pPathPoints[m_PathPointCount - 1].m_PointY = y; +} + +void CPDF_StreamContentParser::AddPathObject(int FillType, FX_BOOL bStroke) { + int PathPointCount = m_PathPointCount, PathClipType = m_PathClipType; + m_PathPointCount = 0; + m_PathClipType = 0; + if (PathPointCount <= 1) { + if (PathPointCount && PathClipType) { + CPDF_Path path; + path.New()->AppendRect(0, 0, 0, 0); + m_pCurStates->m_ClipPath.AppendPath(path, FXFILL_WINDING, TRUE); + } + return; + } + if (PathPointCount && + m_pPathPoints[PathPointCount - 1].m_Flag == FXPT_MOVETO) { + PathPointCount--; + } + CPDF_Path Path; + CFX_PathData* pPathData = Path.New(); + pPathData->SetPointCount(PathPointCount); + FXSYS_memcpy(pPathData->GetPoints(), m_pPathPoints, + sizeof(FX_PATHPOINT) * PathPointCount); + CFX_Matrix matrix = m_pCurStates->m_CTM; + matrix.Concat(m_mtContentToUser); + if (bStroke || FillType) { + std::unique_ptr pPathObj(new CPDF_PathObject); + pPathObj->m_bStroke = bStroke; + pPathObj->m_FillType = FillType; + pPathObj->m_Path = Path; + pPathObj->m_Matrix = matrix; + SetGraphicStates(pPathObj.get(), TRUE, FALSE, TRUE); + pPathObj->CalcBoundingBox(); + m_pObjectHolder->GetPageObjectList()->push_back(std::move(pPathObj)); + } + if (PathClipType) { + if (!matrix.IsIdentity()) { + Path.Transform(&matrix); + matrix.SetIdentity(); + } + m_pCurStates->m_ClipPath.AppendPath(Path, PathClipType, TRUE); + } +} + +FX_DWORD CPDF_StreamContentParser::Parse(const uint8_t* pData, + FX_DWORD dwSize, + FX_DWORD max_cost) { + if (m_Level > _FPDF_MAX_FORM_LEVEL_) { + return dwSize; + } + FX_DWORD InitObjCount = m_pObjectHolder->GetPageObjectList()->size(); + CPDF_StreamParser syntax(pData, dwSize); + CPDF_StreamParserAutoClearer auto_clearer(&m_pSyntax, &syntax); + while (1) { + FX_DWORD cost = m_pObjectHolder->GetPageObjectList()->size() - InitObjCount; + if (max_cost && cost >= max_cost) { + break; + } + switch (syntax.ParseNextElement()) { + case CPDF_StreamParser::EndOfData: + return m_pSyntax->GetPos(); + case CPDF_StreamParser::Keyword: + OnOperator((char*)syntax.GetWordBuf()); + ClearAllParams(); + break; + case CPDF_StreamParser::Number: + AddNumberParam((char*)syntax.GetWordBuf(), syntax.GetWordSize()); + break; + case CPDF_StreamParser::Name: + AddNameParam((const FX_CHAR*)syntax.GetWordBuf() + 1, + syntax.GetWordSize() - 1); + break; + default: + AddObjectParam(syntax.GetObject()); + } + } + return m_pSyntax->GetPos(); +} + +void CPDF_StreamContentParser::ParsePathObject() { + FX_FLOAT params[6] = {}; + int nParams = 0; + int last_pos = m_pSyntax->GetPos(); + while (1) { + CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement(); + FX_BOOL bProcessed = TRUE; + switch (type) { + case CPDF_StreamParser::EndOfData: + return; + case CPDF_StreamParser::Keyword: { + int len = m_pSyntax->GetWordSize(); + if (len == 1) { + switch (m_pSyntax->GetWordBuf()[0]) { + case kPathOperatorSubpath: + AddPathPoint(params[0], params[1], FXPT_MOVETO); + nParams = 0; + break; + case kPathOperatorLine: + AddPathPoint(params[0], params[1], FXPT_LINETO); + nParams = 0; + break; + case kPathOperatorCubicBezier1: + AddPathPoint(params[0], params[1], FXPT_BEZIERTO); + AddPathPoint(params[2], params[3], FXPT_BEZIERTO); + AddPathPoint(params[4], params[5], FXPT_BEZIERTO); + nParams = 0; + break; + case kPathOperatorCubicBezier2: + AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO); + AddPathPoint(params[0], params[1], FXPT_BEZIERTO); + AddPathPoint(params[2], params[3], FXPT_BEZIERTO); + nParams = 0; + break; + case kPathOperatorCubicBezier3: + AddPathPoint(params[0], params[1], FXPT_BEZIERTO); + AddPathPoint(params[2], params[3], FXPT_BEZIERTO); + AddPathPoint(params[2], params[3], FXPT_BEZIERTO); + nParams = 0; + break; + case kPathOperatorClosePath: + Handle_ClosePath(); + nParams = 0; + break; + default: + bProcessed = FALSE; + break; + } + } else if (len == 2) { + if (m_pSyntax->GetWordBuf()[0] == kPathOperatorRectangle[0] && + m_pSyntax->GetWordBuf()[1] == kPathOperatorRectangle[1]) { + AddPathRect(params[0], params[1], params[2], params[3]); + nParams = 0; + } else { + bProcessed = FALSE; + } + } else { + bProcessed = FALSE; + } + if (bProcessed) { + last_pos = m_pSyntax->GetPos(); + } + break; + } + case CPDF_StreamParser::Number: { + if (nParams == 6) { + break; + } + FX_BOOL bInteger; + int value; + FX_atonum( + CFX_ByteStringC(m_pSyntax->GetWordBuf(), m_pSyntax->GetWordSize()), + bInteger, &value); + params[nParams++] = bInteger ? (FX_FLOAT)value : *(FX_FLOAT*)&value; + break; + } + default: + bProcessed = FALSE; + } + if (!bProcessed) { + m_pSyntax->SetPos(last_pos); + return; + } + } +} + +void PDF_ReplaceAbbr(CPDF_Object* pObj) { + switch (pObj->GetType()) { + case CPDF_Object::DICTIONARY: { + CPDF_Dictionary* pDict = pObj->AsDictionary(); + std::vector replacements; + for (const auto& it : *pDict) { + CFX_ByteString key = it.first; + CPDF_Object* value = it.second; + CFX_ByteStringC fullname = PDF_FindFullName( + PDF_InlineKeyAbbr, FX_ArraySize(PDF_InlineKeyAbbr), key); + if (!fullname.IsEmpty()) { + AbbrReplacementOp op; + op.is_replace_key = true; + op.key = key; + op.replacement = fullname; + replacements.push_back(op); + key = fullname; + } + + if (value->IsName()) { + CFX_ByteString name = value->GetString(); + fullname = PDF_FindFullName(PDF_InlineValueAbbr, + FX_ArraySize(PDF_InlineValueAbbr), name); + if (!fullname.IsEmpty()) { + AbbrReplacementOp op; + op.is_replace_key = false; + op.key = key; + op.replacement = fullname; + replacements.push_back(op); + } + } else { + PDF_ReplaceAbbr(value); + } + } + for (const auto& op : replacements) { + if (op.is_replace_key) + pDict->ReplaceKey(op.key, op.replacement); + else + pDict->SetAtName(op.key, op.replacement); + } + break; + } + case CPDF_Object::ARRAY: { + CPDF_Array* pArray = pObj->AsArray(); + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + CPDF_Object* pElement = pArray->GetElement(i); + if (pElement->IsName()) { + CFX_ByteString name = pElement->GetString(); + CFX_ByteStringC fullname = PDF_FindFullName( + PDF_InlineValueAbbr, FX_ArraySize(PDF_InlineValueAbbr), name); + if (!fullname.IsEmpty()) { + pArray->SetAt(i, new CPDF_Name(fullname)); + } + } else { + PDF_ReplaceAbbr(pElement); + } + } + break; + } + default: + break; + } +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp new file mode 100644 index 0000000000..13c56b4718 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp @@ -0,0 +1,888 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include + +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_boolean.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_null.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_safe_types.h" + +CPDF_StreamParser::CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize) { + m_pBuf = pData; + m_Size = dwSize; + m_Pos = 0; + m_pLastObj = NULL; +} + +CPDF_StreamParser::~CPDF_StreamParser() { + if (m_pLastObj) { + m_pLastObj->Release(); + } +} + +FX_DWORD _DecodeAllScanlines(ICodec_ScanlineDecoder* pDecoder, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + if (!pDecoder) { + return (FX_DWORD)-1; + } + int ncomps = pDecoder->CountComps(); + int bpc = pDecoder->GetBPC(); + int width = pDecoder->GetWidth(); + int height = pDecoder->GetHeight(); + int pitch = (width * ncomps * bpc + 7) / 8; + if (height == 0 || pitch > (1 << 30) / height) { + delete pDecoder; + return -1; + } + dest_buf = FX_Alloc2D(uint8_t, pitch, height); + dest_size = pitch * height; // Safe since checked alloc returned. + for (int row = 0; row < height; row++) { + const uint8_t* pLine = pDecoder->GetScanline(row); + if (!pLine) + break; + + FXSYS_memcpy(dest_buf + row * pitch, pLine, pitch); + } + FX_DWORD srcoff = pDecoder->GetSrcOffset(); + delete pDecoder; + return srcoff; +} + +ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + const CPDF_Dictionary* pParams); + +FX_DWORD PDF_DecodeInlineStream(const uint8_t* src_buf, + FX_DWORD limit, + int width, + int height, + CFX_ByteString& decoder, + CPDF_Dictionary* pParam, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + if (decoder == "CCITTFaxDecode" || decoder == "CCF") { + ICodec_ScanlineDecoder* pDecoder = + FPDFAPI_CreateFaxDecoder(src_buf, limit, width, height, pParam); + return _DecodeAllScanlines(pDecoder, dest_buf, dest_size); + } + if (decoder == "ASCII85Decode" || decoder == "A85") { + return A85Decode(src_buf, limit, dest_buf, dest_size); + } + if (decoder == "ASCIIHexDecode" || decoder == "AHx") { + return HexDecode(src_buf, limit, dest_buf, dest_size); + } + if (decoder == "FlateDecode" || decoder == "Fl") { + return FPDFAPI_FlateOrLZWDecode(FALSE, src_buf, limit, pParam, dest_size, + dest_buf, dest_size); + } + if (decoder == "LZWDecode" || decoder == "LZW") { + return FPDFAPI_FlateOrLZWDecode(TRUE, src_buf, limit, pParam, 0, dest_buf, + dest_size); + } + if (decoder == "DCTDecode" || decoder == "DCT") { + ICodec_ScanlineDecoder* pDecoder = + CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder( + src_buf, limit, width, height, 0, + pParam ? pParam->GetIntegerBy("ColorTransform", 1) : 1); + return _DecodeAllScanlines(pDecoder, dest_buf, dest_size); + } + if (decoder == "RunLengthDecode" || decoder == "RL") { + return RunLengthDecode(src_buf, limit, dest_buf, dest_size); + } + dest_size = 0; + dest_buf = 0; + return (FX_DWORD)-1; +} + +CPDF_Stream* CPDF_StreamParser::ReadInlineStream(CPDF_Document* pDoc, + CPDF_Dictionary* pDict, + CPDF_Object* pCSObj, + FX_BOOL bDecode) { + if (m_Pos == m_Size) + return nullptr; + + if (PDFCharIsWhitespace(m_pBuf[m_Pos])) + m_Pos++; + + CFX_ByteString Decoder; + CPDF_Dictionary* pParam = nullptr; + CPDF_Object* pFilter = pDict->GetElementValue("Filter"); + if (pFilter) { + if (CPDF_Array* pArray = pFilter->AsArray()) { + Decoder = pArray->GetStringAt(0); + CPDF_Array* pParams = pDict->GetArrayBy("DecodeParms"); + if (pParams) + pParam = pParams->GetDictAt(0); + } else { + Decoder = pFilter->GetString(); + pParam = pDict->GetDictBy("DecodeParms"); + } + } + FX_DWORD width = pDict->GetIntegerBy("Width"); + FX_DWORD height = pDict->GetIntegerBy("Height"); + FX_DWORD OrigSize = 0; + if (pCSObj) { + FX_DWORD bpc = pDict->GetIntegerBy("BitsPerComponent"); + FX_DWORD nComponents = 1; + CPDF_ColorSpace* pCS = pDoc->LoadColorSpace(pCSObj); + if (!pCS) { + nComponents = 3; + } else { + nComponents = pCS->CountComponents(); + pDoc->GetPageData()->ReleaseColorSpace(pCSObj); + } + FX_DWORD pitch = width; + if (bpc && pitch > INT_MAX / bpc) { + return NULL; + } + pitch *= bpc; + if (nComponents && pitch > INT_MAX / nComponents) { + return NULL; + } + pitch *= nComponents; + if (pitch > INT_MAX - 7) { + return NULL; + } + pitch += 7; + pitch /= 8; + OrigSize = pitch; + } else { + if (width > INT_MAX - 7) { + return NULL; + } + OrigSize = ((width + 7) / 8); + } + if (height && OrigSize > INT_MAX / height) { + return NULL; + } + OrigSize *= height; + uint8_t* pData = NULL; + FX_DWORD dwStreamSize; + if (Decoder.IsEmpty()) { + if (OrigSize > m_Size - m_Pos) { + OrigSize = m_Size - m_Pos; + } + pData = FX_Alloc(uint8_t, OrigSize); + FXSYS_memcpy(pData, m_pBuf + m_Pos, OrigSize); + dwStreamSize = OrigSize; + m_Pos += OrigSize; + } else { + FX_DWORD dwDestSize = OrigSize; + dwStreamSize = + PDF_DecodeInlineStream(m_pBuf + m_Pos, m_Size - m_Pos, width, height, + Decoder, pParam, pData, dwDestSize); + if ((int)dwStreamSize < 0) { + FX_Free(pData); + return NULL; + } + if (bDecode) { + m_Pos += dwStreamSize; + dwStreamSize = dwDestSize; + if (CPDF_Array* pArray = pFilter->AsArray()) { + pArray->RemoveAt(0); + CPDF_Array* pParams = pDict->GetArrayBy("DecodeParms"); + if (pParams) + pParams->RemoveAt(0); + } else { + pDict->RemoveAt("Filter"); + pDict->RemoveAt("DecodeParms"); + } + } else { + FX_Free(pData); + FX_DWORD dwSavePos = m_Pos; + m_Pos += dwStreamSize; + while (1) { + FX_DWORD dwPrevPos = m_Pos; + CPDF_StreamParser::SyntaxType type = ParseNextElement(); + if (type == CPDF_StreamParser::EndOfData) { + break; + } + if (type != CPDF_StreamParser::Keyword) { + dwStreamSize += m_Pos - dwPrevPos; + continue; + } + if (GetWordSize() == 2 && GetWordBuf()[0] == 'E' && + GetWordBuf()[1] == 'I') { + m_Pos = dwPrevPos; + break; + } + dwStreamSize += m_Pos - dwPrevPos; + } + m_Pos = dwSavePos; + pData = FX_Alloc(uint8_t, dwStreamSize); + FXSYS_memcpy(pData, m_pBuf + m_Pos, dwStreamSize); + m_Pos += dwStreamSize; + } + } + pDict->SetAtInteger("Length", (int)dwStreamSize); + return new CPDF_Stream(pData, dwStreamSize, pDict); +} + +#define MAX_WORD_BUFFER 256 +#define MAX_STRING_LENGTH 32767 +#define FXDWORD_TRUE FXDWORD_FROM_LSBFIRST(0x65757274) +#define FXDWORD_NULL FXDWORD_FROM_LSBFIRST(0x6c6c756e) +#define FXDWORD_FALS FXDWORD_FROM_LSBFIRST(0x736c6166) +CPDF_StreamParser::SyntaxType CPDF_StreamParser::ParseNextElement() { + if (m_pLastObj) { + m_pLastObj->Release(); + m_pLastObj = nullptr; + } + + m_WordSize = 0; + FX_BOOL bIsNumber = TRUE; + if (!PositionIsInBounds()) + return EndOfData; + + int ch = m_pBuf[m_Pos++]; + while (1) { + while (PDFCharIsWhitespace(ch)) { + if (!PositionIsInBounds()) + return EndOfData; + + ch = m_pBuf[m_Pos++]; + } + + if (ch != '%') + break; + + while (1) { + if (!PositionIsInBounds()) + return EndOfData; + + ch = m_pBuf[m_Pos++]; + if (PDFCharIsLineEnding(ch)) + break; + } + } + + if (PDFCharIsDelimiter(ch) && ch != '/') { + m_Pos--; + m_pLastObj = ReadNextObject(); + return Others; + } + + while (1) { + if (m_WordSize < MAX_WORD_BUFFER) + m_WordBuffer[m_WordSize++] = ch; + + if (!PDFCharIsNumeric(ch)) + bIsNumber = FALSE; + + if (!PositionIsInBounds()) + break; + + ch = m_pBuf[m_Pos++]; + + if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { + m_Pos--; + break; + } + } + + m_WordBuffer[m_WordSize] = 0; + if (bIsNumber) + return Number; + if (m_WordBuffer[0] == '/') + return Name; + + if (m_WordSize == 4) { + if (*(FX_DWORD*)m_WordBuffer == FXDWORD_TRUE) { + m_pLastObj = new CPDF_Boolean(TRUE); + return Others; + } + if (*(FX_DWORD*)m_WordBuffer == FXDWORD_NULL) { + m_pLastObj = new CPDF_Null; + return Others; + } + } else if (m_WordSize == 5) { + if (*(FX_DWORD*)m_WordBuffer == FXDWORD_FALS && m_WordBuffer[4] == 'e') { + m_pLastObj = new CPDF_Boolean(FALSE); + return Others; + } + } + return Keyword; +} + +void CPDF_StreamParser::SkipPathObject() { + FX_DWORD command_startpos = m_Pos; + if (!PositionIsInBounds()) + return; + + int ch = m_pBuf[m_Pos++]; + while (1) { + while (PDFCharIsWhitespace(ch)) { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + } + + if (!PDFCharIsNumeric(ch)) { + m_Pos = command_startpos; + return; + } + + while (1) { + while (!PDFCharIsWhitespace(ch)) { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + } + + while (PDFCharIsWhitespace(ch)) { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + } + + if (PDFCharIsNumeric(ch)) + continue; + + FX_DWORD op_startpos = m_Pos - 1; + while (!PDFCharIsWhitespace(ch) && !PDFCharIsDelimiter(ch)) { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + } + + if (IsPathOperator(&m_pBuf[op_startpos], m_Pos - 1 - op_startpos)) { + command_startpos = m_Pos; + break; + } + m_Pos = command_startpos; + return; + } + } +} + +CPDF_Object* CPDF_StreamParser::ReadNextObject(FX_BOOL bAllowNestedArray, + FX_BOOL bInArray) { + FX_BOOL bIsNumber; + GetNextWord(bIsNumber); + if (m_WordSize == 0) { + return NULL; + } + if (bIsNumber) { + m_WordBuffer[m_WordSize] = 0; + return new CPDF_Number(CFX_ByteStringC(m_WordBuffer, m_WordSize)); + } + int first_char = m_WordBuffer[0]; + if (first_char == '/') { + return new CPDF_Name( + PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); + } + if (first_char == '(') { + return new CPDF_String(ReadString(), FALSE); + } + if (first_char == '<') { + if (m_WordSize == 1) { + return new CPDF_String(ReadHexString(), TRUE); + } + CPDF_Dictionary* pDict = new CPDF_Dictionary; + while (1) { + GetNextWord(bIsNumber); + if (m_WordSize == 0) { + pDict->Release(); + return nullptr; + } + if (m_WordSize == 2 && m_WordBuffer[0] == '>') { + break; + } + if (m_WordBuffer[0] != '/') { + pDict->Release(); + return nullptr; + } + CFX_ByteString key = + PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1)); + CPDF_Object* pObj = ReadNextObject(TRUE); + if (!pObj) { + pDict->Release(); + return nullptr; + } + if (!key.IsEmpty()) { + pDict->SetAt(key, pObj); + } else { + pObj->Release(); + } + } + return pDict; + } + if (first_char == '[') { + if (!bAllowNestedArray && bInArray) { + return NULL; + } + CPDF_Array* pArray = new CPDF_Array; + while (1) { + CPDF_Object* pObj = ReadNextObject(bAllowNestedArray, TRUE); + if (pObj) { + pArray->Add(pObj); + continue; + } + + if (m_WordSize == 0 || m_WordBuffer[0] == ']') + break; + } + return pArray; + } + if (m_WordSize == 4) { + if (*(FX_DWORD*)m_WordBuffer == FXDWORD_TRUE) { + return new CPDF_Boolean(TRUE); + } + if (*(FX_DWORD*)m_WordBuffer == FXDWORD_NULL) { + return new CPDF_Null; + } + } else if (m_WordSize == 5) { + if (*(FX_DWORD*)m_WordBuffer == FXDWORD_FALS && m_WordBuffer[4] == 'e') { + return new CPDF_Boolean(FALSE); + } + } + return NULL; +} + +void CPDF_StreamParser::GetNextWord(FX_BOOL& bIsNumber) { + m_WordSize = 0; + bIsNumber = TRUE; + if (!PositionIsInBounds()) + return; + + int ch = m_pBuf[m_Pos++]; + while (1) { + while (PDFCharIsWhitespace(ch)) { + if (!PositionIsInBounds()) { + return; + } + ch = m_pBuf[m_Pos++]; + } + + if (ch != '%') + break; + + while (1) { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + if (PDFCharIsLineEnding(ch)) + break; + } + } + + if (PDFCharIsDelimiter(ch)) { + bIsNumber = FALSE; + m_WordBuffer[m_WordSize++] = ch; + if (ch == '/') { + while (1) { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { + m_Pos--; + return; + } + + if (m_WordSize < MAX_WORD_BUFFER) + m_WordBuffer[m_WordSize++] = ch; + } + } else if (ch == '<') { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + if (ch == '<') + m_WordBuffer[m_WordSize++] = ch; + else + m_Pos--; + } else if (ch == '>') { + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + if (ch == '>') + m_WordBuffer[m_WordSize++] = ch; + else + m_Pos--; + } + return; + } + + while (1) { + if (m_WordSize < MAX_WORD_BUFFER) + m_WordBuffer[m_WordSize++] = ch; + if (!PDFCharIsNumeric(ch)) + bIsNumber = FALSE; + + if (!PositionIsInBounds()) + return; + ch = m_pBuf[m_Pos++]; + if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { + m_Pos--; + break; + } + } +} + +CFX_ByteString CPDF_StreamParser::ReadString() { + if (!PositionIsInBounds()) + return CFX_ByteString(); + + uint8_t ch = m_pBuf[m_Pos++]; + CFX_ByteTextBuf buf; + int parlevel = 0; + int status = 0; + int iEscCode = 0; + while (1) { + switch (status) { + case 0: + if (ch == ')') { + if (parlevel == 0) { + if (buf.GetLength() > MAX_STRING_LENGTH) { + return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH); + } + return buf.GetByteString(); + } + parlevel--; + buf.AppendChar(')'); + } else if (ch == '(') { + parlevel++; + buf.AppendChar('('); + } else if (ch == '\\') { + status = 1; + } else { + buf.AppendChar((char)ch); + } + break; + case 1: + if (ch >= '0' && ch <= '7') { + iEscCode = FXSYS_toDecimalDigit(static_cast(ch)); + status = 2; + break; + } + if (ch == 'n') { + buf.AppendChar('\n'); + } else if (ch == 'r') { + buf.AppendChar('\r'); + } else if (ch == 't') { + buf.AppendChar('\t'); + } else if (ch == 'b') { + buf.AppendChar('\b'); + } else if (ch == 'f') { + buf.AppendChar('\f'); + } else if (ch == '\r') { + status = 4; + break; + } else if (ch == '\n') { + } else { + buf.AppendChar(ch); + } + status = 0; + break; + case 2: + if (ch >= '0' && ch <= '7') { + iEscCode = + iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); + status = 3; + } else { + buf.AppendChar(iEscCode); + status = 0; + continue; + } + break; + case 3: + if (ch >= '0' && ch <= '7') { + iEscCode = + iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); + buf.AppendChar(iEscCode); + status = 0; + } else { + buf.AppendChar(iEscCode); + status = 0; + continue; + } + break; + case 4: + status = 0; + if (ch != '\n') { + continue; + } + break; + } + if (!PositionIsInBounds()) + break; + + ch = m_pBuf[m_Pos++]; + } + if (PositionIsInBounds()) + ++m_Pos; + + if (buf.GetLength() > MAX_STRING_LENGTH) { + return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH); + } + return buf.GetByteString(); +} + +CFX_ByteString CPDF_StreamParser::ReadHexString() { + if (!PositionIsInBounds()) + return CFX_ByteString(); + + CFX_ByteTextBuf buf; + bool bFirst = true; + int code = 0; + while (PositionIsInBounds()) { + int ch = m_pBuf[m_Pos++]; + + if (ch == '>') + break; + + if (!std::isxdigit(ch)) + continue; + + int val = FXSYS_toHexDigit(ch); + if (bFirst) { + code = val * 16; + } else { + code += val; + buf.AppendByte((uint8_t)code); + } + bFirst = !bFirst; + } + if (!bFirst) + buf.AppendChar((char)code); + + if (buf.GetLength() > MAX_STRING_LENGTH) + return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH); + + return buf.GetByteString(); +} + +bool CPDF_StreamParser::PositionIsInBounds() const { + return m_Pos < m_Size; +} + +CPDF_ContentParser::CPDF_ContentParser() + : m_Status(Ready), + m_InternalStage(STAGE_GETCONTENT), + m_pObjectHolder(nullptr), + m_bForm(false), + m_pType3Char(nullptr), + m_pData(nullptr), + m_Size(0), + m_CurrentOffset(0) {} + +CPDF_ContentParser::~CPDF_ContentParser() { + if (!m_pSingleStream) + FX_Free(m_pData); +} + +void CPDF_ContentParser::Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions) { + if (m_Status != Ready || !pPage || !pPage->m_pDocument || + !pPage->m_pFormDict) { + m_Status = Done; + return; + } + m_pObjectHolder = pPage; + m_bForm = FALSE; + if (pOptions) { + m_Options = *pOptions; + } + m_Status = ToBeContinued; + m_InternalStage = STAGE_GETCONTENT; + m_CurrentOffset = 0; + + CPDF_Object* pContent = pPage->m_pFormDict->GetElementValue("Contents"); + if (!pContent) { + m_Status = Done; + return; + } + if (CPDF_Stream* pStream = pContent->AsStream()) { + m_nStreams = 0; + m_pSingleStream.reset(new CPDF_StreamAcc); + m_pSingleStream->LoadAllData(pStream, FALSE); + } else if (CPDF_Array* pArray = pContent->AsArray()) { + m_nStreams = pArray->GetCount(); + if (m_nStreams) + m_StreamArray.resize(m_nStreams); + else + m_Status = Done; + } else { + m_Status = Done; + } +} + +void CPDF_ContentParser::Start(CPDF_Form* pForm, + CPDF_AllStates* pGraphicStates, + CFX_Matrix* pParentMatrix, + CPDF_Type3Char* pType3Char, + CPDF_ParseOptions* pOptions, + int level) { + m_pType3Char = pType3Char; + m_pObjectHolder = pForm; + m_bForm = TRUE; + CFX_Matrix form_matrix = pForm->m_pFormDict->GetMatrixBy("Matrix"); + if (pGraphicStates) { + form_matrix.Concat(pGraphicStates->m_CTM); + } + CPDF_Array* pBBox = pForm->m_pFormDict->GetArrayBy("BBox"); + CFX_FloatRect form_bbox; + CPDF_Path ClipPath; + if (pBBox) { + form_bbox = pBBox->GetRect(); + ClipPath.New(); + ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right, + form_bbox.top); + ClipPath.Transform(&form_matrix); + if (pParentMatrix) { + ClipPath.Transform(pParentMatrix); + } + form_bbox.Transform(&form_matrix); + if (pParentMatrix) { + form_bbox.Transform(pParentMatrix); + } + } + CPDF_Dictionary* pResources = pForm->m_pFormDict->GetDictBy("Resources"); + m_pParser.reset(new CPDF_StreamContentParser( + pForm->m_pDocument, pForm->m_pPageResources, pForm->m_pResources, + pParentMatrix, pForm, pResources, &form_bbox, pOptions, pGraphicStates, + level)); + m_pParser->GetCurStates()->m_CTM = form_matrix; + m_pParser->GetCurStates()->m_ParentMatrix = form_matrix; + if (ClipPath.NotNull()) { + m_pParser->GetCurStates()->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING, + TRUE); + } + if (pForm->m_Transparency & PDFTRANS_GROUP) { + CPDF_GeneralStateData* pData = + m_pParser->GetCurStates()->m_GeneralState.GetModify(); + pData->m_BlendType = FXDIB_BLEND_NORMAL; + pData->m_StrokeAlpha = 1.0f; + pData->m_FillAlpha = 1.0f; + pData->m_pSoftMask = NULL; + } + m_nStreams = 0; + m_pSingleStream.reset(new CPDF_StreamAcc); + m_pSingleStream->LoadAllData(pForm->m_pFormStream, FALSE); + m_pData = (uint8_t*)m_pSingleStream->GetData(); + m_Size = m_pSingleStream->GetSize(); + m_Status = ToBeContinued; + m_InternalStage = STAGE_PARSE; + m_CurrentOffset = 0; +} + +void CPDF_ContentParser::Continue(IFX_Pause* pPause) { + int steps = 0; + while (m_Status == ToBeContinued) { + if (m_InternalStage == STAGE_GETCONTENT) { + if (m_CurrentOffset == m_nStreams) { + if (!m_StreamArray.empty()) { + FX_SAFE_DWORD safeSize = 0; + for (const auto& stream : m_StreamArray) { + safeSize += stream->GetSize(); + safeSize += 1; + } + if (!safeSize.IsValid()) { + m_Status = Done; + return; + } + m_Size = safeSize.ValueOrDie(); + m_pData = FX_Alloc(uint8_t, m_Size); + FX_DWORD pos = 0; + for (const auto& stream : m_StreamArray) { + FXSYS_memcpy(m_pData + pos, stream->GetData(), stream->GetSize()); + pos += stream->GetSize(); + m_pData[pos++] = ' '; + } + m_StreamArray.clear(); + } else { + m_pData = (uint8_t*)m_pSingleStream->GetData(); + m_Size = m_pSingleStream->GetSize(); + } + m_InternalStage = STAGE_PARSE; + m_CurrentOffset = 0; + } else { + CPDF_Array* pContent = + m_pObjectHolder->m_pFormDict->GetArrayBy("Contents"); + m_StreamArray[m_CurrentOffset].reset(new CPDF_StreamAcc); + CPDF_Stream* pStreamObj = ToStream( + pContent ? pContent->GetElementValue(m_CurrentOffset) : nullptr); + m_StreamArray[m_CurrentOffset]->LoadAllData(pStreamObj, FALSE); + m_CurrentOffset++; + } + } + if (m_InternalStage == STAGE_PARSE) { + if (!m_pParser) { + m_pParser.reset(new CPDF_StreamContentParser( + m_pObjectHolder->m_pDocument, m_pObjectHolder->m_pPageResources, + nullptr, nullptr, m_pObjectHolder, m_pObjectHolder->m_pResources, + &m_pObjectHolder->m_BBox, &m_Options, nullptr, 0)); + m_pParser->GetCurStates()->m_ColorState.GetModify()->Default(); + } + if (m_CurrentOffset >= m_Size) { + m_InternalStage = STAGE_CHECKCLIP; + } else { + m_CurrentOffset += + m_pParser->Parse(m_pData + m_CurrentOffset, + m_Size - m_CurrentOffset, PARSE_STEP_LIMIT); + } + } + if (m_InternalStage == STAGE_CHECKCLIP) { + if (m_pType3Char) { + m_pType3Char->m_bColored = m_pParser->IsColored(); + m_pType3Char->m_Width = + FXSYS_round(m_pParser->GetType3Data()[0] * 1000); + m_pType3Char->m_BBox.left = + FXSYS_round(m_pParser->GetType3Data()[2] * 1000); + m_pType3Char->m_BBox.bottom = + FXSYS_round(m_pParser->GetType3Data()[3] * 1000); + m_pType3Char->m_BBox.right = + FXSYS_round(m_pParser->GetType3Data()[4] * 1000); + m_pType3Char->m_BBox.top = + FXSYS_round(m_pParser->GetType3Data()[5] * 1000); + } + for (auto& pObj : *m_pObjectHolder->GetPageObjectList()) { + if (pObj->m_ClipPath.IsNull()) { + continue; + } + if (pObj->m_ClipPath.GetPathCount() != 1) { + continue; + } + if (pObj->m_ClipPath.GetTextCount()) { + continue; + } + CPDF_Path ClipPath = pObj->m_ClipPath.GetPath(0); + if (!ClipPath.IsRect() || pObj->IsShading()) { + continue; + } + CFX_FloatRect old_rect(ClipPath.GetPointX(0), ClipPath.GetPointY(0), + ClipPath.GetPointX(2), ClipPath.GetPointY(2)); + CFX_FloatRect obj_rect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, + pObj->m_Top); + if (old_rect.Contains(obj_rect)) { + pObj->m_ClipPath.SetNull(); + } + } + m_Status = Done; + return; + } + steps++; + if (pPause && pPause->NeedToPauseNow()) { + break; + } + } +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp new file mode 100644 index 0000000000..f4c33d2811 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp @@ -0,0 +1,47 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "testing/gtest/include/gtest/gtest.h" + +TEST(fpdf_page_parser_old, ReadHexString) { + { + // Position out of bounds. + uint8_t data[] = "12ab>"; + CPDF_StreamParser parser(data, 5); + parser.SetPos(6); + EXPECT_EQ("", parser.ReadHexString()); + } + + { + // Regular conversion. + uint8_t data[] = "1A2b>abcd"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); + EXPECT_EQ(5, parser.GetPos()); + } + + { + // Missing ending > + uint8_t data[] = "1A2b"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); + EXPECT_EQ(5, parser.GetPos()); + } + + { + // Uneven number of bytes. + uint8_t data[] = "1A2>asdf"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("\x1a\x20", parser.ReadHexString()); + EXPECT_EQ(4, parser.GetPos()); + } + + { + uint8_t data[] = ">"; + CPDF_StreamParser parser(data, 5); + EXPECT_EQ("", parser.ReadHexString()); + EXPECT_EQ(1, parser.GetPos()); + } +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_path.cpp b/core/fpdfapi/fpdf_page/fpdf_page_path.cpp new file mode 100644 index 0000000000..c2b6f13ca0 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_path.cpp @@ -0,0 +1,55 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" + +CPDF_PathObject::CPDF_PathObject() {} + +CPDF_PathObject::~CPDF_PathObject() {} + +CPDF_PathObject* CPDF_PathObject::Clone() const { + CPDF_PathObject* obj = new CPDF_PathObject; + obj->CopyData(this); + + obj->m_Path = m_Path; + obj->m_FillType = m_FillType; + obj->m_bStroke = m_bStroke; + obj->m_Matrix = m_Matrix; + return obj; +} + +void CPDF_PathObject::Transform(const CFX_Matrix& matrix) { + m_Matrix.Concat(matrix); + CalcBoundingBox(); +} + +void CPDF_PathObject::CalcBoundingBox() { + if (m_Path.IsNull()) { + return; + } + CFX_FloatRect rect; + FX_FLOAT width = m_GraphState.GetObject()->m_LineWidth; + if (m_bStroke && width != 0) { + rect = m_Path.GetBoundingBox(width, m_GraphState.GetObject()->m_MiterLimit); + } else { + rect = m_Path.GetBoundingBox(); + } + rect.Transform(&m_Matrix); + if (width == 0 && m_bStroke) { + rect.left += -0.5f; + rect.right += 0.5f; + rect.bottom += -0.5f; + rect.top += 0.5f; + } + m_Left = rect.left; + m_Right = rect.right; + m_Top = rect.top; + m_Bottom = rect.bottom; +} diff --git a/core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp b/core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp new file mode 100644 index 0000000000..6bb64292a3 --- /dev/null +++ b/core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp @@ -0,0 +1,320 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_page/pageint.h" + +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_page.h" + +namespace { + +const int kSingleCoordinatePair = 1; +const int kTensorCoordinatePairs = 16; +const int kCoonsCoordinatePairs = 12; + +const int kSingleColorPerPatch = 1; +const int kQuadColorsPerPatch = 4; + +ShadingType ToShadingType(int type) { + return (type > static_cast(kInvalidShading) && + type < static_cast(kMaxShading)) + ? static_cast(type) + : kInvalidShading; +} + +} // namespace + +CPDF_Pattern::CPDF_Pattern(PatternType type, + CPDF_Document* pDoc, + CPDF_Object* pObj, + const CFX_Matrix* pParentMatrix) + : m_PatternType(type), + m_pDocument(pDoc), + m_pPatternObj(pObj), + m_bForceClear(FALSE) { + if (pParentMatrix) + m_ParentMatrix = *pParentMatrix; +} +CPDF_Pattern::~CPDF_Pattern() {} +CPDF_TilingPattern::CPDF_TilingPattern(CPDF_Document* pDoc, + CPDF_Object* pPatternObj, + const CFX_Matrix* parentMatrix) + : CPDF_Pattern(TILING, pDoc, pPatternObj, parentMatrix) { + CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); + m_Pattern2Form = pDict->GetMatrixBy("Matrix"); + m_bColored = pDict->GetIntegerBy("PaintType") == 1; + if (parentMatrix) { + m_Pattern2Form.Concat(*parentMatrix); + } + m_pForm = NULL; +} +CPDF_TilingPattern::~CPDF_TilingPattern() { + delete m_pForm; + m_pForm = NULL; +} +FX_BOOL CPDF_TilingPattern::Load() { + if (m_pForm) + return TRUE; + + CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); + if (!pDict) + return FALSE; + + m_bColored = pDict->GetIntegerBy("PaintType") == 1; + m_XStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumberBy("XStep")); + m_YStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumberBy("YStep")); + + CPDF_Stream* pStream = m_pPatternObj->AsStream(); + if (!pStream) + return FALSE; + + m_pForm = new CPDF_Form(m_pDocument, NULL, pStream); + m_pForm->ParseContent(NULL, &m_ParentMatrix, NULL, NULL); + m_BBox = pDict->GetRectBy("BBox"); + return TRUE; +} +CPDF_ShadingPattern::CPDF_ShadingPattern(CPDF_Document* pDoc, + CPDF_Object* pPatternObj, + FX_BOOL bShading, + const CFX_Matrix* parentMatrix) + : CPDF_Pattern(SHADING, + pDoc, + bShading ? nullptr : pPatternObj, + parentMatrix), + m_ShadingType(kInvalidShading), + m_bShadingObj(bShading), + m_pShadingObj(pPatternObj), + m_pCS(nullptr), + m_pCountedCS(nullptr), + m_nFuncs(0) { + if (!bShading) { + CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); + m_Pattern2Form = pDict->GetMatrixBy("Matrix"); + m_pShadingObj = pDict->GetElementValue("Shading"); + if (parentMatrix) + m_Pattern2Form.Concat(*parentMatrix); + } + for (int i = 0; i < FX_ArraySize(m_pFunctions); ++i) + m_pFunctions[i] = nullptr; +} + +CPDF_ShadingPattern::~CPDF_ShadingPattern() { + for (int i = 0; i < m_nFuncs; ++i) + delete m_pFunctions[i]; + + CPDF_ColorSpace* pCS = m_pCountedCS ? m_pCountedCS->get() : NULL; + if (pCS && m_pDocument) + m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); +} + +FX_BOOL CPDF_ShadingPattern::Load() { + if (m_ShadingType != kInvalidShading) + return TRUE; + + CPDF_Dictionary* pShadingDict = + m_pShadingObj ? m_pShadingObj->GetDict() : NULL; + if (!pShadingDict) { + return FALSE; + } + if (m_nFuncs) { + for (int i = 0; i < m_nFuncs; i++) + delete m_pFunctions[i]; + m_nFuncs = 0; + } + CPDF_Object* pFunc = pShadingDict->GetElementValue("Function"); + if (pFunc) { + if (CPDF_Array* pArray = pFunc->AsArray()) { + m_nFuncs = std::min(pArray->GetCount(), 4); + + for (int i = 0; i < m_nFuncs; i++) { + m_pFunctions[i] = CPDF_Function::Load(pArray->GetElementValue(i)); + } + } else { + m_pFunctions[0] = CPDF_Function::Load(pFunc); + m_nFuncs = 1; + } + } + CPDF_Object* pCSObj = pShadingDict->GetElementValue("ColorSpace"); + if (!pCSObj) { + return FALSE; + } + CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData(); + m_pCS = pDocPageData->GetColorSpace(pCSObj, NULL); + if (m_pCS) { + m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray()); + } + + m_ShadingType = ToShadingType(pShadingDict->GetIntegerBy("ShadingType")); + + // We expect to have a stream if our shading type is a mesh. + if (IsMeshShading() && !ToStream(m_pShadingObj)) + return FALSE; + + return TRUE; +} +FX_BOOL CPDF_MeshStream::Load(CPDF_Stream* pShadingStream, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS) { + m_Stream.LoadAllData(pShadingStream); + m_BitStream.Init(m_Stream.GetData(), m_Stream.GetSize()); + m_pFuncs = pFuncs; + m_nFuncs = nFuncs; + m_pCS = pCS; + CPDF_Dictionary* pDict = pShadingStream->GetDict(); + m_nCoordBits = pDict->GetIntegerBy("BitsPerCoordinate"); + m_nCompBits = pDict->GetIntegerBy("BitsPerComponent"); + m_nFlagBits = pDict->GetIntegerBy("BitsPerFlag"); + if (!m_nCoordBits || !m_nCompBits) { + return FALSE; + } + FX_DWORD nComps = pCS->CountComponents(); + if (nComps > 8) { + return FALSE; + } + m_nComps = nFuncs ? 1 : nComps; + if (((int)m_nComps < 0) || m_nComps > 8) { + return FALSE; + } + m_CoordMax = m_nCoordBits == 32 ? -1 : (1 << m_nCoordBits) - 1; + m_CompMax = (1 << m_nCompBits) - 1; + CPDF_Array* pDecode = pDict->GetArrayBy("Decode"); + if (!pDecode || pDecode->GetCount() != 4 + m_nComps * 2) { + return FALSE; + } + m_xmin = pDecode->GetNumberAt(0); + m_xmax = pDecode->GetNumberAt(1); + m_ymin = pDecode->GetNumberAt(2); + m_ymax = pDecode->GetNumberAt(3); + for (FX_DWORD i = 0; i < m_nComps; i++) { + m_ColorMin[i] = pDecode->GetNumberAt(i * 2 + 4); + m_ColorMax[i] = pDecode->GetNumberAt(i * 2 + 5); + } + return TRUE; +} +FX_DWORD CPDF_MeshStream::GetFlag() { + return m_BitStream.GetBits(m_nFlagBits) & 0x03; +} +void CPDF_MeshStream::GetCoords(FX_FLOAT& x, FX_FLOAT& y) { + if (m_nCoordBits == 32) { + x = m_xmin + (FX_FLOAT)(m_BitStream.GetBits(m_nCoordBits) * + (m_xmax - m_xmin) / (double)m_CoordMax); + y = m_ymin + (FX_FLOAT)(m_BitStream.GetBits(m_nCoordBits) * + (m_ymax - m_ymin) / (double)m_CoordMax); + } else { + x = m_xmin + + m_BitStream.GetBits(m_nCoordBits) * (m_xmax - m_xmin) / m_CoordMax; + y = m_ymin + + m_BitStream.GetBits(m_nCoordBits) * (m_ymax - m_ymin) / m_CoordMax; + } +} +void CPDF_MeshStream::GetColor(FX_FLOAT& r, FX_FLOAT& g, FX_FLOAT& b) { + FX_DWORD i; + FX_FLOAT color_value[8]; + for (i = 0; i < m_nComps; i++) { + color_value[i] = m_ColorMin[i] + + m_BitStream.GetBits(m_nCompBits) * + (m_ColorMax[i] - m_ColorMin[i]) / m_CompMax; + } + if (m_nFuncs) { + static const int kMaxResults = 8; + FX_FLOAT result[kMaxResults]; + int nResults; + FXSYS_memset(result, 0, sizeof(result)); + for (FX_DWORD i = 0; i < m_nFuncs; i++) { + if (m_pFuncs[i] && m_pFuncs[i]->CountOutputs() <= kMaxResults) { + m_pFuncs[i]->Call(color_value, 1, result, nResults); + } + } + m_pCS->GetRGB(result, r, g, b); + } else { + m_pCS->GetRGB(color_value, r, g, b); + } +} +FX_DWORD CPDF_MeshStream::GetVertex(CPDF_MeshVertex& vertex, + CFX_Matrix* pObject2Bitmap) { + FX_DWORD flag = GetFlag(); + GetCoords(vertex.x, vertex.y); + pObject2Bitmap->Transform(vertex.x, vertex.y); + GetColor(vertex.r, vertex.g, vertex.b); + m_BitStream.ByteAlign(); + return flag; +} +FX_BOOL CPDF_MeshStream::GetVertexRow(CPDF_MeshVertex* vertex, + int count, + CFX_Matrix* pObject2Bitmap) { + for (int i = 0; i < count; i++) { + if (m_BitStream.IsEOF()) { + return FALSE; + } + GetCoords(vertex[i].x, vertex[i].y); + pObject2Bitmap->Transform(vertex[i].x, vertex[i].y); + GetColor(vertex[i].r, vertex[i].g, vertex[i].b); + m_BitStream.ByteAlign(); + } + return TRUE; +} + +CFX_FloatRect GetShadingBBox(CPDF_Stream* pStream, + ShadingType type, + const CFX_Matrix* pMatrix, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS) { + if (!pStream || !pStream->IsStream() || !pFuncs || !pCS) + return CFX_FloatRect(0, 0, 0, 0); + + CPDF_MeshStream stream; + if (!stream.Load(pStream, pFuncs, nFuncs, pCS)) + return CFX_FloatRect(0, 0, 0, 0); + + CFX_FloatRect rect; + bool bStarted = false; + bool bGouraud = type == kFreeFormGouraudTriangleMeshShading || + type == kLatticeFormGouraudTriangleMeshShading; + + int point_count = kSingleCoordinatePair; + if (type == kTensorProductPatchMeshShading) + point_count = kTensorCoordinatePairs; + else if (type == kCoonsPatchMeshShading) + point_count = kCoonsCoordinatePairs; + + int color_count = kSingleColorPerPatch; + if (type == kCoonsPatchMeshShading || type == kTensorProductPatchMeshShading) + color_count = kQuadColorsPerPatch; + + while (!stream.m_BitStream.IsEOF()) { + FX_DWORD flag = 0; + if (type != kLatticeFormGouraudTriangleMeshShading) + flag = stream.GetFlag(); + + if (!bGouraud && flag) { + point_count -= 4; + color_count -= 2; + } + + for (int i = 0; i < point_count; i++) { + FX_FLOAT x, y; + stream.GetCoords(x, y); + if (bStarted) { + rect.UpdateRect(x, y); + } else { + rect.InitRect(x, y); + bStarted = TRUE; + } + } + stream.m_BitStream.SkipBits(stream.m_nComps * stream.m_nCompBits * + color_count); + if (bGouraud) + stream.m_BitStream.ByteAlign(); + } + rect.Transform(pMatrix); + return rect; +} diff --git a/core/fpdfapi/fpdf_page/pageint.h b/core/fpdfapi/fpdf_page/pageint.h new file mode 100644 index 0000000000..8818bc9af0 --- /dev/null +++ b/core/fpdfapi/fpdf_page/pageint.h @@ -0,0 +1,459 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_ +#define CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_ + +#include +#include +#include +#include + +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" + +class CPDF_AllStates; +class CPDF_ParseOptions; +class CPDF_IccProfile; + +#define PARSE_STEP_LIMIT 100 + +class CPDF_StreamParser { + public: + enum SyntaxType { EndOfData, Number, Keyword, Name, Others }; + + CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize); + ~CPDF_StreamParser(); + + CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc, + CPDF_Dictionary* pDict, + CPDF_Object* pCSObj, + FX_BOOL bDecode); + SyntaxType ParseNextElement(); + uint8_t* GetWordBuf() { return m_WordBuffer; } + FX_DWORD GetWordSize() const { return m_WordSize; } + CPDF_Object* GetObject() { + CPDF_Object* pObj = m_pLastObj; + m_pLastObj = NULL; + return pObj; + } + FX_DWORD GetPos() const { return m_Pos; } + void SetPos(FX_DWORD pos) { m_Pos = pos; } + CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE, + FX_BOOL bInArray = FALSE); + void SkipPathObject(); + + protected: + friend class fpdf_page_parser_old_ReadHexString_Test; + + void GetNextWord(FX_BOOL& bIsNumber); + CFX_ByteString ReadString(); + CFX_ByteString ReadHexString(); + const uint8_t* m_pBuf; + + // Length in bytes of m_pBuf. + FX_DWORD m_Size; + + // Current byte position within m_pBuf. + FX_DWORD m_Pos; + + uint8_t m_WordBuffer[256]; + FX_DWORD m_WordSize; + CPDF_Object* m_pLastObj; + + private: + bool PositionIsInBounds() const; +}; + +#define PARAM_BUF_SIZE 16 +struct ContentParam { + enum Type { OBJECT = 0, NUMBER, NAME }; + Type m_Type; + union { + struct { + FX_BOOL m_bInteger; + union { + int m_Integer; + FX_FLOAT m_Float; + }; + } m_Number; + CPDF_Object* m_pObject; + struct { + int m_Len; + char m_Buffer[32]; + } m_Name; + }; +}; +#define _FPDF_MAX_FORM_LEVEL_ 30 +#define _FPDF_MAX_TYPE3_FORM_LEVEL_ 4 +#define _FPDF_MAX_OBJECT_STACK_SIZE_ 512 +class CPDF_StreamContentParser { + public: + CPDF_StreamContentParser(CPDF_Document* pDoc, + CPDF_Dictionary* pPageResources, + CPDF_Dictionary* pParentResources, + CFX_Matrix* pmtContentToUser, + CPDF_PageObjectHolder* pObjectHolder, + CPDF_Dictionary* pResources, + CFX_FloatRect* pBBox, + CPDF_ParseOptions* pOptions, + CPDF_AllStates* pAllStates, + int level); + ~CPDF_StreamContentParser(); + + CPDF_PageObjectHolder* GetPageObjectHolder() const { return m_pObjectHolder; } + CPDF_AllStates* GetCurStates() const { return m_pCurStates.get(); } + FX_BOOL IsColored() const { return m_bColored; } + const FX_FLOAT* GetType3Data() const { return m_Type3Data; } + + void AddNumberParam(const FX_CHAR* str, int len); + void AddObjectParam(CPDF_Object* pObj); + void AddNameParam(const FX_CHAR* name, int size); + int GetNextParamPos(); + void ClearAllParams(); + CPDF_Object* GetObject(FX_DWORD index); + CFX_ByteString GetString(FX_DWORD index); + FX_FLOAT GetNumber(FX_DWORD index); + FX_FLOAT GetNumber16(FX_DWORD index); + int GetInteger(FX_DWORD index) { return (int32_t)(GetNumber(index)); } + void OnOperator(const FX_CHAR* op); + void BigCaseCaller(int index); + FX_DWORD GetParsePos() { return m_pSyntax->GetPos(); } + void AddTextObject(CFX_ByteString* pText, + FX_FLOAT fInitKerning, + FX_FLOAT* pKerning, + int count); + + void ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y); + void ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y); + void OnChangeTextMatrix(); + FX_DWORD Parse(const uint8_t* pData, FX_DWORD dwSize, FX_DWORD max_cost); + void ParsePathObject(); + void AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag); + void AddPathRect(FX_FLOAT x, FX_FLOAT y, FX_FLOAT w, FX_FLOAT h); + void AddPathObject(int FillType, FX_BOOL bStroke); + CPDF_ImageObject* AddImage(CPDF_Stream* pStream, + CPDF_Image* pImage, + FX_BOOL bInline); + void AddDuplicateImage(); + void AddForm(CPDF_Stream* pStream); + void SetGraphicStates(CPDF_PageObject* pObj, + FX_BOOL bColor, + FX_BOOL bText, + FX_BOOL bGraph); + void SaveStates(CPDF_AllStates* pState); + void RestoreStates(CPDF_AllStates* pState); + CPDF_Font* FindFont(const CFX_ByteString& name); + CPDF_ColorSpace* FindColorSpace(const CFX_ByteString& name); + CPDF_Pattern* FindPattern(const CFX_ByteString& name, FX_BOOL bShading); + CPDF_Object* FindResourceObj(const CFX_ByteStringC& type, + const CFX_ByteString& name); + + protected: + using OpCodes = + std::unordered_map; + static OpCodes InitializeOpCodes(); + + void Handle_CloseFillStrokePath(); + void Handle_FillStrokePath(); + void Handle_CloseEOFillStrokePath(); + void Handle_EOFillStrokePath(); + void Handle_BeginMarkedContent_Dictionary(); + void Handle_BeginImage(); + void Handle_BeginMarkedContent(); + void Handle_BeginText(); + void Handle_CurveTo_123(); + void Handle_ConcatMatrix(); + void Handle_SetColorSpace_Fill(); + void Handle_SetColorSpace_Stroke(); + void Handle_SetDash(); + void Handle_SetCharWidth(); + void Handle_SetCachedDevice(); + void Handle_ExecuteXObject(); + void Handle_MarkPlace_Dictionary(); + void Handle_EndImage(); + void Handle_EndMarkedContent(); + void Handle_EndText(); + void Handle_FillPath(); + void Handle_FillPathOld(); + void Handle_EOFillPath(); + void Handle_SetGray_Fill(); + void Handle_SetGray_Stroke(); + void Handle_SetExtendGraphState(); + void Handle_ClosePath(); + void Handle_SetFlat(); + void Handle_BeginImageData(); + void Handle_SetLineJoin(); + void Handle_SetLineCap(); + void Handle_SetCMYKColor_Fill(); + void Handle_SetCMYKColor_Stroke(); + void Handle_LineTo(); + void Handle_MoveTo(); + void Handle_SetMiterLimit(); + void Handle_MarkPlace(); + void Handle_EndPath(); + void Handle_SaveGraphState(); + void Handle_RestoreGraphState(); + void Handle_Rectangle(); + void Handle_SetRGBColor_Fill(); + void Handle_SetRGBColor_Stroke(); + void Handle_SetRenderIntent(); + void Handle_CloseStrokePath(); + void Handle_StrokePath(); + void Handle_SetColor_Fill(); + void Handle_SetColor_Stroke(); + void Handle_SetColorPS_Fill(); + void Handle_SetColorPS_Stroke(); + void Handle_ShadeFill(); + void Handle_SetCharSpace(); + void Handle_MoveTextPoint(); + void Handle_MoveTextPoint_SetLeading(); + void Handle_SetFont(); + void Handle_ShowText(); + void Handle_ShowText_Positioning(); + void Handle_SetTextLeading(); + void Handle_SetTextMatrix(); + void Handle_SetTextRenderMode(); + void Handle_SetTextRise(); + void Handle_SetWordSpace(); + void Handle_SetHorzScale(); + void Handle_MoveToNextLine(); + void Handle_CurveTo_23(); + void Handle_SetLineWidth(); + void Handle_Clip(); + void Handle_EOClip(); + void Handle_CurveTo_13(); + void Handle_NextLineShowText(); + void Handle_NextLineShowText_Space(); + void Handle_Invalid(); + + CPDF_Document* const m_pDocument; + CPDF_Dictionary* m_pPageResources; + CPDF_Dictionary* m_pParentResources; + CPDF_Dictionary* m_pResources; + CPDF_PageObjectHolder* m_pObjectHolder; + int m_Level; + CFX_Matrix m_mtContentToUser; + CFX_FloatRect m_BBox; + CPDF_ParseOptions m_Options; + ContentParam m_ParamBuf[PARAM_BUF_SIZE]; + FX_DWORD m_ParamStartPos; + FX_DWORD m_ParamCount; + CPDF_StreamParser* m_pSyntax; + std::unique_ptr m_pCurStates; + CPDF_ContentMark m_CurContentMark; + CFX_ArrayTemplate m_ClipTextList; + CPDF_TextObject* m_pLastTextObject; + FX_FLOAT m_DefFontSize; + FX_PATHPOINT* m_pPathPoints; + int m_PathPointCount; + int m_PathAllocSize; + FX_FLOAT m_PathStartX; + FX_FLOAT m_PathStartY; + FX_FLOAT m_PathCurrentX; + FX_FLOAT m_PathCurrentY; + int m_PathClipType; + CFX_ByteString m_LastImageName; + CPDF_Image* m_pLastImage; + CFX_BinaryBuf m_LastImageDict; + CFX_BinaryBuf m_LastImageData; + CPDF_Dictionary* m_pLastImageDict; + CPDF_Dictionary* m_pLastCloneImageDict; + FX_BOOL m_bReleaseLastDict; + FX_BOOL m_bSameLastDict; + FX_BOOL m_bColored; + FX_FLOAT m_Type3Data[6]; + FX_BOOL m_bResourceMissing; + std::vector> m_StateStack; +}; +class CPDF_ContentParser { + public: + enum ParseStatus { Ready, ToBeContinued, Done }; + + CPDF_ContentParser(); + ~CPDF_ContentParser(); + + ParseStatus GetStatus() const { return m_Status; } + void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions); + void Start(CPDF_Form* pForm, + CPDF_AllStates* pGraphicStates, + CFX_Matrix* pParentMatrix, + CPDF_Type3Char* pType3Char, + CPDF_ParseOptions* pOptions, + int level); + void Continue(IFX_Pause* pPause); + + private: + enum InternalStage { + STAGE_GETCONTENT = 1, + STAGE_PARSE, + STAGE_CHECKCLIP, + }; + + ParseStatus m_Status; + InternalStage m_InternalStage; + CPDF_PageObjectHolder* m_pObjectHolder; + FX_BOOL m_bForm; + CPDF_ParseOptions m_Options; + CPDF_Type3Char* m_pType3Char; + FX_DWORD m_nStreams; + std::unique_ptr m_pSingleStream; + std::vector> m_StreamArray; + uint8_t* m_pData; + FX_DWORD m_Size; + FX_DWORD m_CurrentOffset; + std::unique_ptr m_pParser; +}; +class CPDF_AllStates : public CPDF_GraphicStates { + public: + CPDF_AllStates(); + ~CPDF_AllStates(); + void Copy(const CPDF_AllStates& src); + void ProcessExtGS(CPDF_Dictionary* pGS, CPDF_StreamContentParser* pParser); + void SetLineDash(CPDF_Array*, FX_FLOAT, FX_FLOAT scale); + CFX_Matrix m_TextMatrix, m_CTM, m_ParentMatrix; + FX_FLOAT m_TextX, m_TextY, m_TextLineX, m_TextLineY; + FX_FLOAT m_TextLeading, m_TextRise, m_TextHorzScale; +}; + +class CPDF_DocPageData { + public: + explicit CPDF_DocPageData(CPDF_Document* pPDFDoc); + ~CPDF_DocPageData(); + + void Clear(FX_BOOL bRelease = FALSE); + CPDF_Font* GetFont(CPDF_Dictionary* pFontDict, FX_BOOL findOnly); + CPDF_Font* GetStandardFont(const CFX_ByteStringC& fontName, + CPDF_FontEncoding* pEncoding); + void ReleaseFont(CPDF_Dictionary* pFontDict); + CPDF_ColorSpace* GetColorSpace(CPDF_Object* pCSObj, + const CPDF_Dictionary* pResources); + CPDF_ColorSpace* GetCopiedColorSpace(CPDF_Object* pCSObj); + void ReleaseColorSpace(CPDF_Object* pColorSpace); + CPDF_Pattern* GetPattern(CPDF_Object* pPatternObj, + FX_BOOL bShading, + const CFX_Matrix* matrix); + void ReleasePattern(CPDF_Object* pPatternObj); + CPDF_Image* GetImage(CPDF_Object* pImageStream); + void ReleaseImage(CPDF_Object* pImageStream); + CPDF_IccProfile* GetIccProfile(CPDF_Stream* pIccProfileStream); + void ReleaseIccProfile(CPDF_IccProfile* pIccProfile); + CPDF_StreamAcc* GetFontFileStreamAcc(CPDF_Stream* pFontStream); + void ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, + FX_BOOL bForce = FALSE); + FX_BOOL IsForceClear() const { return m_bForceClear; } + CPDF_CountedColorSpace* FindColorSpacePtr(CPDF_Object* pCSObj) const; + CPDF_CountedPattern* FindPatternPtr(CPDF_Object* pPatternObj) const; + + private: + using CPDF_CountedFont = CPDF_CountedObject; + using CPDF_CountedIccProfile = CPDF_CountedObject; + using CPDF_CountedImage = CPDF_CountedObject; + using CPDF_CountedStreamAcc = CPDF_CountedObject; + + using CPDF_ColorSpaceMap = std::map; + using CPDF_FontFileMap = std::map; + using CPDF_FontMap = std::map; + using CPDF_IccProfileMap = std::map; + using CPDF_ImageMap = std::map; + using CPDF_PatternMap = std::map; + + CPDF_Document* const m_pPDFDoc; + FX_BOOL m_bForceClear; + std::map m_HashProfileMap; + CPDF_ColorSpaceMap m_ColorSpaceMap; + CPDF_FontFileMap m_FontFileMap; + CPDF_FontMap m_FontMap; + CPDF_IccProfileMap m_IccProfileMap; + CPDF_ImageMap m_ImageMap; + CPDF_PatternMap m_PatternMap; +}; + +class CPDF_Function { + public: + static CPDF_Function* Load(CPDF_Object* pFuncObj); + virtual ~CPDF_Function(); + FX_BOOL Call(FX_FLOAT* inputs, + int ninputs, + FX_FLOAT* results, + int& nresults) const; + int CountInputs() { return m_nInputs; } + int CountOutputs() { return m_nOutputs; } + + protected: + CPDF_Function(); + int m_nInputs, m_nOutputs; + FX_FLOAT* m_pDomains; + FX_FLOAT* m_pRanges; + FX_BOOL Init(CPDF_Object* pObj); + virtual FX_BOOL v_Init(CPDF_Object* pObj) = 0; + virtual FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const = 0; +}; +class CPDF_IccProfile { + public: + CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize); + ~CPDF_IccProfile(); + FX_DWORD GetComponents() const { return m_nSrcComponents; } + FX_BOOL m_bsRGB; + void* m_pTransform; + + private: + FX_DWORD m_nSrcComponents; +}; + +class CPDF_DeviceCS : public CPDF_ColorSpace { + public: + CPDF_DeviceCS(CPDF_Document* pDoc, int family); + + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + FX_BOOL SetRGB(FX_FLOAT* pBuf, + FX_FLOAT R, + FX_FLOAT G, + FX_FLOAT B) const override; + FX_BOOL v_GetCMYK(FX_FLOAT* pBuf, + FX_FLOAT& c, + FX_FLOAT& m, + FX_FLOAT& y, + FX_FLOAT& k) const override; + FX_BOOL v_SetCMYK(FX_FLOAT* pBuf, + FX_FLOAT c, + FX_FLOAT m, + FX_FLOAT y, + FX_FLOAT k) const override; + void TranslateImageLine(uint8_t* pDestBuf, + const uint8_t* pSrcBuf, + int pixels, + int image_width, + int image_height, + FX_BOOL bTransMask = FALSE) const override; +}; + +class CPDF_PatternCS : public CPDF_ColorSpace { + public: + explicit CPDF_PatternCS(CPDF_Document* pDoc) + : CPDF_ColorSpace(pDoc, PDFCS_PATTERN, 1), + m_pBaseCS(nullptr), + m_pCountedBaseCS(nullptr) {} + ~CPDF_PatternCS() override; + FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; + FX_BOOL GetRGB(FX_FLOAT* pBuf, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) const override; + CPDF_ColorSpace* GetBaseCS() const override; + + private: + CPDF_ColorSpace* m_pBaseCS; + CPDF_CountedColorSpace* m_pCountedBaseCS; +}; + +void PDF_ReplaceAbbr(CPDF_Object* pObj); +bool IsPathOperator(const uint8_t* buf, size_t len); + +#endif // CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_ diff --git a/core/fpdfapi/fpdf_parser/cfdf_document.cpp b/core/fpdfapi/fpdf_parser/cfdf_document.cpp new file mode 100644 index 0000000000..fd144a10a9 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cfdf_document.cpp @@ -0,0 +1,98 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cfdf_document.h" + +#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/fpdf_serial.h" + +CFDF_Document::CFDF_Document() : CPDF_IndirectObjectHolder(NULL) { + m_pRootDict = NULL; + m_pFile = NULL; + m_bOwnFile = FALSE; +} +CFDF_Document::~CFDF_Document() { + if (m_bOwnFile && m_pFile) { + m_pFile->Release(); + } +} +CFDF_Document* CFDF_Document::CreateNewDoc() { + CFDF_Document* pDoc = new CFDF_Document; + pDoc->m_pRootDict = new CPDF_Dictionary; + pDoc->AddIndirectObject(pDoc->m_pRootDict); + CPDF_Dictionary* pFDFDict = new CPDF_Dictionary; + pDoc->m_pRootDict->SetAt("FDF", pFDFDict); + return pDoc; +} +CFDF_Document* CFDF_Document::ParseFile(IFX_FileRead* pFile, FX_BOOL bOwnFile) { + if (!pFile) { + return NULL; + } + CFDF_Document* pDoc = new CFDF_Document; + pDoc->ParseStream(pFile, bOwnFile); + if (!pDoc->m_pRootDict) { + delete pDoc; + return NULL; + } + return pDoc; +} +CFDF_Document* CFDF_Document::ParseMemory(const uint8_t* pData, FX_DWORD size) { + return CFDF_Document::ParseFile(FX_CreateMemoryStream((uint8_t*)pData, size), + TRUE); +} +void CFDF_Document::ParseStream(IFX_FileRead* pFile, FX_BOOL bOwnFile) { + m_pFile = pFile; + m_bOwnFile = bOwnFile; + CPDF_SyntaxParser parser; + parser.InitParser(m_pFile, 0); + while (1) { + bool bNumber; + CFX_ByteString word = parser.GetNextWord(&bNumber); + if (bNumber) { + FX_DWORD objnum = FXSYS_atoui(word); + word = parser.GetNextWord(&bNumber); + if (!bNumber) { + break; + } + word = parser.GetNextWord(nullptr); + if (word != "obj") { + break; + } + CPDF_Object* pObj = parser.GetObject(this, objnum, 0, true); + if (!pObj) { + break; + } + InsertIndirectObject(objnum, pObj); + word = parser.GetNextWord(nullptr); + if (word != "endobj") { + break; + } + } else { + if (word != "trailer") { + break; + } + if (CPDF_Dictionary* pMainDict = + ToDictionary(parser.GetObject(this, 0, 0, true))) { + m_pRootDict = pMainDict->GetDictBy("Root"); + pMainDict->Release(); + } + break; + } + } +} +FX_BOOL CFDF_Document::WriteBuf(CFX_ByteTextBuf& buf) const { + if (!m_pRootDict) { + return FALSE; + } + buf << "%FDF-1.2\r\n"; + for (const auto& pair : m_IndirectObjs) { + buf << pair.first << " 0 obj\r\n" << pair.second << "\r\nendobj\r\n\r\n"; + } + buf << "trailer\r\n<GetObjNum() + << " 0 R>>\r\n%%EOF\r\n"; + return TRUE; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_array.cpp b/core/fpdfapi/fpdf_parser/cpdf_array.cpp new file mode 100644 index 0000000000..3b21a45ae2 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_array.cpp @@ -0,0 +1,207 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_array.h" + +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fpdfapi/cpdf_string.h" + +CPDF_Array::CPDF_Array() {} + +CPDF_Array::~CPDF_Array() { + int size = m_Objects.GetSize(); + CPDF_Object** pList = m_Objects.GetData(); + for (int i = 0; i < size; i++) { + if (pList[i]) + pList[i]->Release(); + } +} + +CPDF_Object::Type CPDF_Array::GetType() const { + return ARRAY; +} + +CPDF_Array* CPDF_Array::GetArray() const { + // The method should be made non-const if we want to not be const. + // See bug #234. + return const_cast(this); +} + +bool CPDF_Array::IsArray() const { + return true; +} + +CPDF_Array* CPDF_Array::AsArray() { + return this; +} + +const CPDF_Array* CPDF_Array::AsArray() const { + return this; +} + +CPDF_Object* CPDF_Array::Clone(FX_BOOL bDirect) const { + CPDF_Array* pCopy = new CPDF_Array(); + for (int i = 0; i < GetCount(); i++) { + CPDF_Object* value = m_Objects.GetAt(i); + pCopy->m_Objects.Add(value->Clone(bDirect)); + } + return pCopy; +} + +CFX_FloatRect CPDF_Array::GetRect() { + CFX_FloatRect rect; + if (!IsArray() || m_Objects.GetSize() != 4) + return rect; + + rect.left = GetNumberAt(0); + rect.bottom = GetNumberAt(1); + rect.right = GetNumberAt(2); + rect.top = GetNumberAt(3); + return rect; +} + +CFX_Matrix CPDF_Array::GetMatrix() { + CFX_Matrix matrix; + if (!IsArray() || m_Objects.GetSize() != 6) + return matrix; + + matrix.Set(GetNumberAt(0), GetNumberAt(1), GetNumberAt(2), GetNumberAt(3), + GetNumberAt(4), GetNumberAt(5)); + return matrix; +} + +CPDF_Object* CPDF_Array::GetElement(FX_DWORD i) const { + if (i >= (FX_DWORD)m_Objects.GetSize()) + return nullptr; + return m_Objects.GetAt(i); +} + +CPDF_Object* CPDF_Array::GetElementValue(FX_DWORD i) const { + if (i >= (FX_DWORD)m_Objects.GetSize()) + return nullptr; + return m_Objects.GetAt(i)->GetDirect(); +} + +CFX_ByteString CPDF_Array::GetStringAt(FX_DWORD i) const { + if (i >= (FX_DWORD)m_Objects.GetSize()) + return CFX_ByteString(); + return m_Objects.GetAt(i)->GetString(); +} + +CFX_ByteStringC CPDF_Array::GetConstStringAt(FX_DWORD i) const { + if (i >= (FX_DWORD)m_Objects.GetSize()) + return CFX_ByteStringC(); + return m_Objects.GetAt(i)->GetConstString(); +} + +int CPDF_Array::GetIntegerAt(FX_DWORD i) const { + if (i >= (FX_DWORD)m_Objects.GetSize()) + return 0; + return m_Objects.GetAt(i)->GetInteger(); +} + +FX_FLOAT CPDF_Array::GetNumberAt(FX_DWORD i) const { + if (i >= (FX_DWORD)m_Objects.GetSize()) + return 0; + return m_Objects.GetAt(i)->GetNumber(); +} + +CPDF_Dictionary* CPDF_Array::GetDictAt(FX_DWORD i) const { + CPDF_Object* p = GetElementValue(i); + if (!p) + return NULL; + if (CPDF_Dictionary* pDict = p->AsDictionary()) + return pDict; + if (CPDF_Stream* pStream = p->AsStream()) + return pStream->GetDict(); + return NULL; +} + +CPDF_Stream* CPDF_Array::GetStreamAt(FX_DWORD i) const { + return ToStream(GetElementValue(i)); +} + +CPDF_Array* CPDF_Array::GetArrayAt(FX_DWORD i) const { + return ToArray(GetElementValue(i)); +} + +void CPDF_Array::RemoveAt(FX_DWORD i, int nCount) { + if (i >= (FX_DWORD)m_Objects.GetSize()) + return; + + if (nCount <= 0 || nCount > m_Objects.GetSize() - i) + return; + + for (int j = 0; j < nCount; ++j) { + if (CPDF_Object* p = m_Objects.GetAt(i + j)) + p->Release(); + } + m_Objects.RemoveAt(i, nCount); +} + +void CPDF_Array::SetAt(FX_DWORD i, + CPDF_Object* pObj, + CPDF_IndirectObjectHolder* pObjs) { + ASSERT(IsArray()); + ASSERT(i < (FX_DWORD)m_Objects.GetSize()); + if (i >= (FX_DWORD)m_Objects.GetSize()) + return; + if (CPDF_Object* pOld = m_Objects.GetAt(i)) + pOld->Release(); + if (pObj->GetObjNum()) { + ASSERT(pObjs); + pObj = new CPDF_Reference(pObjs, pObj->GetObjNum()); + } + m_Objects.SetAt(i, pObj); +} + +void CPDF_Array::InsertAt(FX_DWORD index, + CPDF_Object* pObj, + CPDF_IndirectObjectHolder* pObjs) { + if (pObj->GetObjNum()) { + ASSERT(pObjs); + pObj = new CPDF_Reference(pObjs, pObj->GetObjNum()); + } + m_Objects.InsertAt(index, pObj); +} + +void CPDF_Array::Add(CPDF_Object* pObj, CPDF_IndirectObjectHolder* pObjs) { + if (pObj->GetObjNum()) { + ASSERT(pObjs); + pObj = new CPDF_Reference(pObjs, pObj->GetObjNum()); + } + m_Objects.Add(pObj); +} + +void CPDF_Array::AddName(const CFX_ByteString& str) { + ASSERT(IsArray()); + Add(new CPDF_Name(str)); +} + +void CPDF_Array::AddString(const CFX_ByteString& str) { + ASSERT(IsArray()); + Add(new CPDF_String(str, FALSE)); +} + +void CPDF_Array::AddInteger(int i) { + ASSERT(IsArray()); + Add(new CPDF_Number(i)); +} + +void CPDF_Array::AddNumber(FX_FLOAT f) { + ASSERT(IsArray()); + CPDF_Number* pNumber = new CPDF_Number(f); + Add(pNumber); +} + +void CPDF_Array::AddReference(CPDF_IndirectObjectHolder* pDoc, + FX_DWORD objnum) { + ASSERT(IsArray()); + Add(new CPDF_Reference(pDoc, objnum)); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_boolean.cpp b/core/fpdfapi/fpdf_parser/cpdf_boolean.cpp new file mode 100644 index 0000000000..75f2203954 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_boolean.cpp @@ -0,0 +1,45 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_boolean.h" + +CPDF_Boolean::CPDF_Boolean() : m_bValue(false) {} + +CPDF_Boolean::CPDF_Boolean(FX_BOOL value) : m_bValue(value) {} + +CPDF_Boolean::~CPDF_Boolean() {} + +CPDF_Object::Type CPDF_Boolean::GetType() const { + return BOOLEAN; +} + +CPDF_Object* CPDF_Boolean::Clone(FX_BOOL bDirect) const { + return new CPDF_Boolean(m_bValue); +} + +CFX_ByteString CPDF_Boolean::GetString() const { + return m_bValue ? "true" : "false"; +} + +int CPDF_Boolean::GetInteger() const { + return m_bValue; +} + +void CPDF_Boolean::SetString(const CFX_ByteString& str) { + m_bValue = (str == "true"); +} + +bool CPDF_Boolean::IsBoolean() const { + return true; +} + +CPDF_Boolean* CPDF_Boolean::AsBoolean() { + return this; +} + +const CPDF_Boolean* CPDF_Boolean::AsBoolean() const { + return this; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp b/core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp new file mode 100644 index 0000000000..93916cba8b --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp @@ -0,0 +1,1841 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h" +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "third_party/base/stl_util.h" + +IPDF_DataAvail::IPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail, + IFX_FileRead* pFileRead) + : m_pFileAvail(pFileAvail), m_pFileRead(pFileRead) {} + +IPDF_DataAvail::~IPDF_DataAvail() {} + +IPDF_DataAvail::FileAvail::~FileAvail() {} + +IPDF_DataAvail::DownloadHints::~DownloadHints() {} + +// static +IPDF_DataAvail* IPDF_DataAvail::Create(IPDF_DataAvail::FileAvail* pFileAvail, + IFX_FileRead* pFileRead) { + return new CPDF_DataAvail(pFileAvail, pFileRead, TRUE); +} + +// static +int CPDF_DataAvail::s_CurrentDataAvailRecursionDepth = 0; + +CPDF_DataAvail::CPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail, + IFX_FileRead* pFileRead, + FX_BOOL bSupportHintTable) + : IPDF_DataAvail(pFileAvail, pFileRead) { + m_Pos = 0; + m_dwFileLen = 0; + if (m_pFileRead) { + m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize(); + } + m_dwCurrentOffset = 0; + m_dwXRefOffset = 0; + m_bufferOffset = 0; + m_dwFirstPageNo = 0; + m_bufferSize = 0; + m_PagesObjNum = 0; + m_dwCurrentXRefSteam = 0; + m_dwAcroFormObjNum = 0; + m_dwInfoObjNum = 0; + m_pDocument = 0; + m_dwEncryptObjNum = 0; + m_dwPrevXRefOffset = 0; + m_dwLastXRefOffset = 0; + m_bDocAvail = FALSE; + m_bMainXRefLoadTried = FALSE; + m_bDocAvail = FALSE; + m_bLinearized = FALSE; + m_bPagesLoad = FALSE; + m_bPagesTreeLoad = FALSE; + m_bMainXRefLoadedOK = FALSE; + m_bAnnotsLoad = FALSE; + m_bHaveAcroForm = FALSE; + m_bAcroFormLoad = FALSE; + m_bPageLoadedOK = FALSE; + m_bNeedDownLoadResource = FALSE; + m_bLinearizedFormParamLoad = FALSE; + m_pLinearized = NULL; + m_pRoot = NULL; + m_pTrailer = NULL; + m_pCurrentParser = NULL; + m_pAcroForm = NULL; + m_pPageDict = NULL; + m_pPageResource = NULL; + m_docStatus = PDF_DATAAVAIL_HEADER; + m_parser.m_bOwnFileRead = false; + m_bTotalLoadPageTree = FALSE; + m_bCurPageDictLoadOK = FALSE; + m_bLinearedDataOK = FALSE; + m_bSupportHintTable = bSupportHintTable; +} +CPDF_DataAvail::~CPDF_DataAvail() { + if (m_pLinearized) + m_pLinearized->Release(); + + if (m_pRoot) + m_pRoot->Release(); + + if (m_pTrailer) + m_pTrailer->Release(); + + int iSize = m_arrayAcroforms.GetSize(); + for (int i = 0; i < iSize; ++i) + m_arrayAcroforms.GetAt(i)->Release(); +} + +void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) { + m_pDocument = pDoc; +} + +FX_DWORD CPDF_DataAvail::GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset) { + CPDF_Parser* pParser = m_pDocument->GetParser(); + if (!pParser || !pParser->IsValidObjectNumber(objnum)) + return 0; + + if (pParser->GetObjectType(objnum) == 2) + objnum = pParser->GetObjectPositionOrZero(objnum); + + if (pParser->GetObjectType(objnum) != 1 && + pParser->GetObjectType(objnum) != 255) { + return 0; + } + + offset = pParser->GetObjectPositionOrZero(objnum); + if (offset == 0) + return 0; + + auto it = pParser->m_SortedOffset.find(offset); + if (it == pParser->m_SortedOffset.end() || + ++it == pParser->m_SortedOffset.end()) { + return 0; + } + return *it - offset; +} + +FX_BOOL CPDF_DataAvail::IsObjectsAvail( + CFX_ArrayTemplate& obj_array, + FX_BOOL bParsePage, + IPDF_DataAvail::DownloadHints* pHints, + CFX_ArrayTemplate& ret_array) { + if (!obj_array.GetSize()) + return TRUE; + + FX_DWORD count = 0; + CFX_ArrayTemplate new_obj_array; + int32_t i = 0; + for (i = 0; i < obj_array.GetSize(); i++) { + CPDF_Object* pObj = obj_array[i]; + if (!pObj) + continue; + + int32_t type = pObj->GetType(); + switch (type) { + case CPDF_Object::ARRAY: { + CPDF_Array* pArray = pObj->GetArray(); + for (FX_DWORD k = 0; k < pArray->GetCount(); ++k) + new_obj_array.Add(pArray->GetElement(k)); + } break; + case CPDF_Object::STREAM: + pObj = pObj->GetDict(); + case CPDF_Object::DICTIONARY: { + CPDF_Dictionary* pDict = pObj->GetDict(); + if (pDict && pDict->GetStringBy("Type") == "Page" && !bParsePage) + continue; + + for (const auto& it : *pDict) { + const CFX_ByteString& key = it.first; + CPDF_Object* value = it.second; + if (key != "Parent") + new_obj_array.Add(value); + } + } break; + case CPDF_Object::REFERENCE: { + CPDF_Reference* pRef = pObj->AsReference(); + FX_DWORD dwNum = pRef->GetRefObjNum(); + + FX_FILESIZE offset; + FX_DWORD size = GetObjectSize(dwNum, offset); + if (size == 0 || offset < 0 || offset >= m_dwFileLen) + break; + + if (!IsDataAvail(offset, size, pHints)) { + ret_array.Add(pObj); + count++; + } else if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) { + m_ObjectSet.insert(dwNum); + CPDF_Object* pReferred = + m_pDocument->GetIndirectObject(pRef->GetRefObjNum()); + if (pReferred) + new_obj_array.Add(pReferred); + } + } break; + } + } + + if (count > 0) { + int32_t iSize = new_obj_array.GetSize(); + for (i = 0; i < iSize; ++i) { + CPDF_Object* pObj = new_obj_array[i]; + if (CPDF_Reference* pRef = pObj->AsReference()) { + FX_DWORD dwNum = pRef->GetRefObjNum(); + if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) + ret_array.Add(pObj); + } else { + ret_array.Add(pObj); + } + } + return FALSE; + } + + obj_array.RemoveAll(); + obj_array.Append(new_obj_array); + return IsObjectsAvail(obj_array, FALSE, pHints, ret_array); +} + +IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail( + IPDF_DataAvail::DownloadHints* pHints) { + if (!m_dwFileLen && m_pFileRead) { + m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize(); + if (!m_dwFileLen) + return DataError; + } + + while (!m_bDocAvail) { + if (!CheckDocStatus(pHints)) + return DataNotAvailable; + } + + return DataAvailable; +} + +FX_BOOL CPDF_DataAvail::CheckAcroFormSubObject( + IPDF_DataAvail::DownloadHints* pHints) { + if (!m_objs_array.GetSize()) { + m_objs_array.RemoveAll(); + m_ObjectSet.clear(); + CFX_ArrayTemplate obj_array; + obj_array.Append(m_arrayAcroforms); + FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array); + if (bRet) + m_objs_array.RemoveAll(); + return bRet; + } + + CFX_ArrayTemplate new_objs_array; + FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); + if (bRet) { + int32_t iSize = m_arrayAcroforms.GetSize(); + for (int32_t i = 0; i < iSize; ++i) { + m_arrayAcroforms.GetAt(i)->Release(); + } + m_arrayAcroforms.RemoveAll(); + } else { + m_objs_array.RemoveAll(); + m_objs_array.Append(new_objs_array); + } + return bRet; +} + +FX_BOOL CPDF_DataAvail::CheckAcroForm(IPDF_DataAvail::DownloadHints* pHints) { + FX_BOOL bExist = FALSE; + m_pAcroForm = GetObject(m_dwAcroFormObjNum, pHints, &bExist); + if (!bExist) { + m_docStatus = PDF_DATAAVAIL_PAGETREE; + return TRUE; + } + + if (!m_pAcroForm) { + if (m_docStatus == PDF_DATAAVAIL_ERROR) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + return FALSE; + } + + m_arrayAcroforms.Add(m_pAcroForm); + m_docStatus = PDF_DATAAVAIL_PAGETREE; + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckDocStatus(IPDF_DataAvail::DownloadHints* pHints) { + switch (m_docStatus) { + case PDF_DATAAVAIL_HEADER: + return CheckHeader(pHints); + case PDF_DATAAVAIL_FIRSTPAGE: + case PDF_DATAAVAIL_FIRSTPAGE_PREPARE: + return CheckFirstPage(pHints); + case PDF_DATAAVAIL_HINTTABLE: + return CheckHintTables(pHints); + case PDF_DATAAVAIL_END: + return CheckEnd(pHints); + case PDF_DATAAVAIL_CROSSREF: + return CheckCrossRef(pHints); + case PDF_DATAAVAIL_CROSSREF_ITEM: + return CheckCrossRefItem(pHints); + case PDF_DATAAVAIL_CROSSREF_STREAM: + return CheckAllCrossRefStream(pHints); + case PDF_DATAAVAIL_TRAILER: + return CheckTrailer(pHints); + case PDF_DATAAVAIL_TRAILER_APPEND: + return CheckTrailerAppend(pHints); + case PDF_DATAAVAIL_LOADALLCROSSREF: + return LoadAllXref(pHints); + case PDF_DATAAVAIL_LOADALLFILE: + return LoadAllFile(pHints); + case PDF_DATAAVAIL_ROOT: + return CheckRoot(pHints); + case PDF_DATAAVAIL_INFO: + return CheckInfo(pHints); + case PDF_DATAAVAIL_ACROFORM: + return CheckAcroForm(pHints); + case PDF_DATAAVAIL_PAGETREE: + if (m_bTotalLoadPageTree) + return CheckPages(pHints); + return LoadDocPages(pHints); + case PDF_DATAAVAIL_PAGE: + if (m_bTotalLoadPageTree) + return CheckPage(pHints); + m_docStatus = PDF_DATAAVAIL_PAGE_LATERLOAD; + return TRUE; + case PDF_DATAAVAIL_ERROR: + return LoadAllFile(pHints); + case PDF_DATAAVAIL_PAGE_LATERLOAD: + m_docStatus = PDF_DATAAVAIL_PAGE; + default: + m_bDocAvail = TRUE; + return TRUE; + } +} + +FX_BOOL CPDF_DataAvail::CheckPageStatus(IPDF_DataAvail::DownloadHints* pHints) { + switch (m_docStatus) { + case PDF_DATAAVAIL_PAGETREE: + return CheckPages(pHints); + case PDF_DATAAVAIL_PAGE: + return CheckPage(pHints); + case PDF_DATAAVAIL_ERROR: + return LoadAllFile(pHints); + default: + m_bPagesTreeLoad = TRUE; + m_bPagesLoad = TRUE; + return TRUE; + } +} + +FX_BOOL CPDF_DataAvail::LoadAllFile(IPDF_DataAvail::DownloadHints* pHints) { + if (m_pFileAvail->IsDataAvail(0, (FX_DWORD)m_dwFileLen)) { + m_docStatus = PDF_DATAAVAIL_DONE; + return TRUE; + } + + pHints->AddSegment(0, (FX_DWORD)m_dwFileLen); + return FALSE; +} + +FX_BOOL CPDF_DataAvail::LoadAllXref(IPDF_DataAvail::DownloadHints* pHints) { + m_parser.m_pSyntax->InitParser(m_pFileRead, (FX_DWORD)m_dwHeaderOffset); + m_parser.m_bOwnFileRead = false; + if (!m_parser.LoadAllCrossRefV4(m_dwLastXRefOffset) && + !m_parser.LoadAllCrossRefV5(m_dwLastXRefOffset)) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return FALSE; + } + + m_dwRootObjNum = m_parser.GetRootObjNum(); + m_dwInfoObjNum = m_parser.GetInfoObjNum(); + m_pCurrentParser = &m_parser; + m_docStatus = PDF_DATAAVAIL_ROOT; + return TRUE; +} + +CPDF_Object* CPDF_DataAvail::GetObject(FX_DWORD objnum, + IPDF_DataAvail::DownloadHints* pHints, + FX_BOOL* pExistInFile) { + CPDF_Object* pRet = nullptr; + FX_DWORD size = 0; + FX_FILESIZE offset = 0; + CPDF_Parser* pParser = nullptr; + + if (pExistInFile) + *pExistInFile = TRUE; + + if (m_pDocument) { + size = GetObjectSize(objnum, offset); + pParser = m_pDocument->GetParser(); + } else { + size = (FX_DWORD)m_parser.GetObjectSize(objnum); + offset = m_parser.GetObjectOffset(objnum); + pParser = &m_parser; + } + + if (!IsDataAvail(offset, size, pHints)) + return nullptr; + + if (pParser) + pRet = pParser->ParseIndirectObject(nullptr, objnum); + + if (!pRet && pExistInFile) + *pExistInFile = FALSE; + + return pRet; +} + +FX_BOOL CPDF_DataAvail::CheckInfo(IPDF_DataAvail::DownloadHints* pHints) { + FX_BOOL bExist = FALSE; + CPDF_Object* pInfo = GetObject(m_dwInfoObjNum, pHints, &bExist); + if (!bExist) { + m_docStatus = + (m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE); + return TRUE; + } + + if (!pInfo) { + if (m_docStatus == PDF_DATAAVAIL_ERROR) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + + if (m_Pos == m_dwFileLen) + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (pInfo) + pInfo->Release(); + + m_docStatus = + (m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE); + + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckRoot(IPDF_DataAvail::DownloadHints* pHints) { + FX_BOOL bExist = FALSE; + m_pRoot = GetObject(m_dwRootObjNum, pHints, &bExist); + if (!bExist) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + + if (!m_pRoot) { + if (m_docStatus == PDF_DATAAVAIL_ERROR) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + return FALSE; + } + + CPDF_Dictionary* pDict = m_pRoot->GetDict(); + if (!pDict) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + CPDF_Reference* pRef = ToReference(pDict->GetElement("Pages")); + if (!pRef) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + m_PagesObjNum = pRef->GetRefObjNum(); + CPDF_Reference* pAcroFormRef = + ToReference(m_pRoot->GetDict()->GetElement("AcroForm")); + if (pAcroFormRef) { + m_bHaveAcroForm = TRUE; + m_dwAcroFormObjNum = pAcroFormRef->GetRefObjNum(); + } + + if (m_dwInfoObjNum) { + m_docStatus = PDF_DATAAVAIL_INFO; + } else { + m_docStatus = + m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE; + } + return TRUE; +} + +FX_BOOL CPDF_DataAvail::PreparePageItem() { + CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + CPDF_Reference* pRef = + ToReference(pRoot ? pRoot->GetElement("Pages") : nullptr); + if (!pRef) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + m_PagesObjNum = pRef->GetRefObjNum(); + m_pCurrentParser = m_pDocument->GetParser(); + m_docStatus = PDF_DATAAVAIL_PAGETREE; + return TRUE; +} + +bool CPDF_DataAvail::IsFirstCheck(int iPage) { + return m_pageMapCheckState.insert(iPage).second; +} + +void CPDF_DataAvail::ResetFirstCheck(int iPage) { + m_pageMapCheckState.erase(iPage); +} + +FX_BOOL CPDF_DataAvail::CheckPage(IPDF_DataAvail::DownloadHints* pHints) { + FX_DWORD iPageObjs = m_PageObjList.GetSize(); + CFX_DWordArray UnavailObjList; + for (FX_DWORD i = 0; i < iPageObjs; ++i) { + FX_DWORD dwPageObjNum = m_PageObjList.GetAt(i); + FX_BOOL bExist = FALSE; + CPDF_Object* pObj = GetObject(dwPageObjNum, pHints, &bExist); + if (!pObj) { + if (bExist) + UnavailObjList.Add(dwPageObjNum); + continue; + } + + if (pObj->IsArray()) { + CPDF_Array* pArray = pObj->GetArray(); + if (pArray) { + int32_t iSize = pArray->GetCount(); + for (int32_t j = 0; j < iSize; ++j) { + if (CPDF_Reference* pRef = ToReference(pArray->GetElement(j))) + UnavailObjList.Add(pRef->GetRefObjNum()); + } + } + } + + if (!pObj->IsDictionary()) { + pObj->Release(); + continue; + } + + CFX_ByteString type = pObj->GetDict()->GetStringBy("Type"); + if (type == "Pages") { + m_PagesArray.Add(pObj); + continue; + } + pObj->Release(); + } + + m_PageObjList.RemoveAll(); + if (UnavailObjList.GetSize()) { + m_PageObjList.Append(UnavailObjList); + return FALSE; + } + + FX_DWORD iPages = m_PagesArray.GetSize(); + for (FX_DWORD i = 0; i < iPages; i++) { + CPDF_Object* pPages = m_PagesArray.GetAt(i); + if (!pPages) + continue; + + if (!GetPageKids(m_pCurrentParser, pPages)) { + pPages->Release(); + while (++i < iPages) { + pPages = m_PagesArray.GetAt(i); + pPages->Release(); + } + m_PagesArray.RemoveAll(); + + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + pPages->Release(); + } + + m_PagesArray.RemoveAll(); + if (!m_PageObjList.GetSize()) + m_docStatus = PDF_DATAAVAIL_DONE; + return TRUE; +} + +FX_BOOL CPDF_DataAvail::GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages) { + if (!pParser) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + CPDF_Dictionary* pDict = pPages->GetDict(); + CPDF_Object* pKids = pDict ? pDict->GetElement("Kids") : NULL; + if (!pKids) + return TRUE; + + switch (pKids->GetType()) { + case CPDF_Object::REFERENCE: + m_PageObjList.Add(pKids->AsReference()->GetRefObjNum()); + break; + case CPDF_Object::ARRAY: { + CPDF_Array* pKidsArray = pKids->AsArray(); + for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) { + if (CPDF_Reference* pRef = ToReference(pKidsArray->GetElement(i))) + m_PageObjList.Add(pRef->GetRefObjNum()); + } + } break; + default: + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckPages(IPDF_DataAvail::DownloadHints* pHints) { + FX_BOOL bExist = FALSE; + CPDF_Object* pPages = GetObject(m_PagesObjNum, pHints, &bExist); + if (!bExist) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + + if (!pPages) { + if (m_docStatus == PDF_DATAAVAIL_ERROR) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + return FALSE; + } + + if (!GetPageKids(m_pCurrentParser, pPages)) { + pPages->Release(); + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + pPages->Release(); + m_docStatus = PDF_DATAAVAIL_PAGE; + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckHeader(IPDF_DataAvail::DownloadHints* pHints) { + FX_DWORD req_size = 1024; + if ((FX_FILESIZE)req_size > m_dwFileLen) + req_size = (FX_DWORD)m_dwFileLen; + + if (m_pFileAvail->IsDataAvail(0, req_size)) { + uint8_t buffer[1024]; + m_pFileRead->ReadBlock(buffer, 0, req_size); + + if (IsLinearizedFile(buffer, req_size)) { + m_docStatus = PDF_DATAAVAIL_FIRSTPAGE; + } else { + if (m_docStatus == PDF_DATAAVAIL_ERROR) + return FALSE; + m_docStatus = PDF_DATAAVAIL_END; + } + return TRUE; + } + + pHints->AddSegment(0, req_size); + return FALSE; +} + +FX_BOOL CPDF_DataAvail::CheckFirstPage(IPDF_DataAvail::DownloadHints* pHints) { + CPDF_Dictionary* pDict = m_pLinearized->GetDict(); + CPDF_Object* pEndOffSet = pDict ? pDict->GetElement("E") : NULL; + if (!pEndOffSet) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + CPDF_Object* pXRefOffset = pDict ? pDict->GetElement("T") : NULL; + if (!pXRefOffset) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + CPDF_Object* pFileLen = pDict ? pDict->GetElement("L") : NULL; + if (!pFileLen) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + FX_BOOL bNeedDownLoad = FALSE; + if (pEndOffSet->IsNumber()) { + FX_DWORD dwEnd = pEndOffSet->GetInteger(); + dwEnd += 512; + if ((FX_FILESIZE)dwEnd > m_dwFileLen) + dwEnd = (FX_DWORD)m_dwFileLen; + + int32_t iStartPos = (int32_t)(m_dwFileLen > 1024 ? 1024 : m_dwFileLen); + int32_t iSize = dwEnd > 1024 ? dwEnd - 1024 : 0; + if (!m_pFileAvail->IsDataAvail(iStartPos, iSize)) { + pHints->AddSegment(iStartPos, iSize); + bNeedDownLoad = TRUE; + } + } + + m_dwLastXRefOffset = 0; + FX_FILESIZE dwFileLen = 0; + if (pXRefOffset->IsNumber()) + m_dwLastXRefOffset = pXRefOffset->GetInteger(); + + if (pFileLen->IsNumber()) + dwFileLen = pFileLen->GetInteger(); + + if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset, + (FX_DWORD)(dwFileLen - m_dwLastXRefOffset))) { + if (m_docStatus == PDF_DATAAVAIL_FIRSTPAGE) { + FX_DWORD dwSize = (FX_DWORD)(dwFileLen - m_dwLastXRefOffset); + FX_FILESIZE offset = m_dwLastXRefOffset; + if (dwSize < 512 && dwFileLen > 512) { + dwSize = 512; + offset = dwFileLen - 512; + } + pHints->AddSegment(offset, dwSize); + } + } else { + m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE; + } + + if (bNeedDownLoad || m_docStatus != PDF_DATAAVAIL_FIRSTPAGE_PREPARE) { + m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE; + return FALSE; + } + + m_docStatus = + m_bSupportHintTable ? PDF_DATAAVAIL_HINTTABLE : PDF_DATAAVAIL_DONE; + return TRUE; +} + +FX_BOOL CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset, + FX_DWORD size, + IPDF_DataAvail::DownloadHints* pHints) { + if (offset > m_dwFileLen) + return TRUE; + + FX_SAFE_DWORD safeSize = pdfium::base::checked_cast(offset); + safeSize += size; + safeSize += 512; + if (!safeSize.IsValid() || safeSize.ValueOrDie() > m_dwFileLen) + size = m_dwFileLen - offset; + else + size += 512; + + if (!m_pFileAvail->IsDataAvail(offset, size)) { + pHints->AddSegment(offset, size); + return FALSE; + } + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckHintTables(IPDF_DataAvail::DownloadHints* pHints) { + CPDF_Dictionary* pDict = m_pLinearized->GetDict(); + if (!pDict) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (!pDict->KeyExist("H") || !pDict->KeyExist("O") || !pDict->KeyExist("N")) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + int nPageCount = pDict->GetElementValue("N")->GetInteger(); + if (nPageCount <= 1) { + m_docStatus = PDF_DATAAVAIL_DONE; + return TRUE; + } + + CPDF_Array* pHintStreamRange = pDict->GetArrayBy("H"); + FX_FILESIZE szHSStart = + pHintStreamRange->GetElementValue(0) + ? pHintStreamRange->GetElementValue(0)->GetInteger() + : 0; + FX_FILESIZE szHSLength = + pHintStreamRange->GetElementValue(1) + ? pHintStreamRange->GetElementValue(1)->GetInteger() + : 0; + if (szHSStart < 0 || szHSLength <= 0) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (!IsDataAvail(szHSStart, szHSLength, pHints)) + return FALSE; + + m_syntaxParser.InitParser(m_pFileRead, m_dwHeaderOffset); + + std::unique_ptr pHintTables( + new CPDF_HintTables(this, pDict)); + std::unique_ptr> pHintStream( + ParseIndirectObjectAt(szHSStart, 0)); + CPDF_Stream* pStream = ToStream(pHintStream.get()); + if (pStream && pHintTables->LoadHintStream(pStream)) + m_pHintTables = std::move(pHintTables); + + m_docStatus = PDF_DATAAVAIL_DONE; + return TRUE; +} + +CPDF_Object* CPDF_DataAvail::ParseIndirectObjectAt( + FX_FILESIZE pos, + FX_DWORD objnum, + CPDF_IndirectObjectHolder* pObjList) { + FX_FILESIZE SavedPos = m_syntaxParser.SavePos(); + m_syntaxParser.RestorePos(pos); + + bool bIsNumber; + CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber); + if (!bIsNumber) + return nullptr; + + FX_DWORD parser_objnum = FXSYS_atoui(word); + if (objnum && parser_objnum != objnum) + return nullptr; + + word = m_syntaxParser.GetNextWord(&bIsNumber); + if (!bIsNumber) + return nullptr; + + FX_DWORD gennum = FXSYS_atoui(word); + if (m_syntaxParser.GetKeyword() != "obj") { + m_syntaxParser.RestorePos(SavedPos); + return nullptr; + } + + CPDF_Object* pObj = + m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true); + m_syntaxParser.RestorePos(SavedPos); + return pObj; +} + +IPDF_DataAvail::DocLinearizationStatus CPDF_DataAvail::IsLinearizedPDF() { + FX_DWORD req_size = 1024; + if (!m_pFileAvail->IsDataAvail(0, req_size)) + return LinearizationUnknown; + + if (!m_pFileRead) + return NotLinearized; + + FX_FILESIZE dwSize = m_pFileRead->GetSize(); + if (dwSize < (FX_FILESIZE)req_size) + return LinearizationUnknown; + + uint8_t buffer[1024]; + m_pFileRead->ReadBlock(buffer, 0, req_size); + if (IsLinearizedFile(buffer, req_size)) + return Linearized; + + return NotLinearized; +} +FX_BOOL CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen) { + ScopedFileStream file(FX_CreateMemoryStream(pData, (size_t)dwLen, FALSE)); + + int32_t offset = GetHeaderOffset(file.get()); + if (offset == -1) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + m_dwHeaderOffset = offset; + m_syntaxParser.InitParser(file.get(), offset); + m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); + + bool bNumber; + CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber); + if (!bNumber) + return FALSE; + + FX_DWORD objnum = FXSYS_atoui(wordObjNum); + if (m_pLinearized) { + m_pLinearized->Release(); + m_pLinearized = nullptr; + } + + m_pLinearized = + ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum); + if (!m_pLinearized) + return FALSE; + + CPDF_Dictionary* pDict = m_pLinearized->GetDict(); + if (pDict && pDict->GetElement("Linearized")) { + CPDF_Object* pLen = pDict->GetElement("L"); + if (!pLen) + return FALSE; + + if ((FX_FILESIZE)pLen->GetInteger() != m_pFileRead->GetSize()) + return FALSE; + + m_bLinearized = TRUE; + + if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P"))) + m_dwFirstPageNo = pNo->GetInteger(); + + return TRUE; + } + return FALSE; +} + +FX_BOOL CPDF_DataAvail::CheckEnd(IPDF_DataAvail::DownloadHints* pHints) { + FX_DWORD req_pos = (FX_DWORD)(m_dwFileLen > 1024 ? m_dwFileLen - 1024 : 0); + FX_DWORD dwSize = (FX_DWORD)(m_dwFileLen - req_pos); + + if (m_pFileAvail->IsDataAvail(req_pos, dwSize)) { + uint8_t buffer[1024]; + m_pFileRead->ReadBlock(buffer, req_pos, dwSize); + + ScopedFileStream file(FX_CreateMemoryStream(buffer, (size_t)dwSize, FALSE)); + m_syntaxParser.InitParser(file.get(), 0); + m_syntaxParser.RestorePos(dwSize - 1); + + if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) { + m_syntaxParser.GetNextWord(nullptr); + + bool bNumber; + CFX_ByteString xrefpos_str = m_syntaxParser.GetNextWord(&bNumber); + if (!bNumber) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + m_dwXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str); + if (!m_dwXRefOffset || m_dwXRefOffset > m_dwFileLen) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + + m_dwLastXRefOffset = m_dwXRefOffset; + SetStartOffset(m_dwXRefOffset); + m_docStatus = PDF_DATAAVAIL_CROSSREF; + return TRUE; + } + + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + + pHints->AddSegment(req_pos, dwSize); + return FALSE; +} + +int32_t CPDF_DataAvail::CheckCrossRefStream( + IPDF_DataAvail::DownloadHints* pHints, + FX_FILESIZE& xref_offset) { + xref_offset = 0; + FX_DWORD req_size = + (FX_DWORD)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); + + if (m_pFileAvail->IsDataAvail(m_Pos, req_size)) { + int32_t iSize = (int32_t)(m_Pos + req_size - m_dwCurrentXRefSteam); + CFX_BinaryBuf buf(iSize); + uint8_t* pBuf = buf.GetBuffer(); + + m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); + + ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); + m_parser.m_pSyntax->InitParser(file.get(), 0); + + bool bNumber; + CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); + if (!bNumber) + return -1; + + FX_DWORD objNum = FXSYS_atoui(objnum); + CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum); + if (!pObj) { + m_Pos += m_parser.m_pSyntax->SavePos(); + return 0; + } + + CPDF_Dictionary* pDict = pObj->GetDict(); + CPDF_Name* pName = ToName(pDict ? pDict->GetElement("Type") : nullptr); + if (pName) { + if (pName->GetString() == "XRef") { + m_Pos += m_parser.m_pSyntax->SavePos(); + xref_offset = pObj->GetDict()->GetIntegerBy("Prev"); + pObj->Release(); + return 1; + } + } + pObj->Release(); + return -1; + } + pHints->AddSegment(m_Pos, req_size); + return 0; +} + +inline void CPDF_DataAvail::SetStartOffset(FX_FILESIZE dwOffset) { + m_Pos = dwOffset; +} + +FX_BOOL CPDF_DataAvail::GetNextToken(CFX_ByteString& token) { + uint8_t ch; + if (!GetNextChar(ch)) + return FALSE; + + while (1) { + while (PDFCharIsWhitespace(ch)) { + if (!GetNextChar(ch)) + return FALSE; + } + + if (ch != '%') + break; + + while (1) { + if (!GetNextChar(ch)) + return FALSE; + if (PDFCharIsLineEnding(ch)) + break; + } + } + + uint8_t buffer[256]; + FX_DWORD index = 0; + if (PDFCharIsDelimiter(ch)) { + buffer[index++] = ch; + if (ch == '/') { + while (1) { + if (!GetNextChar(ch)) + return FALSE; + + if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { + m_Pos--; + CFX_ByteString ret(buffer, index); + token = ret; + return TRUE; + } + + if (index < sizeof(buffer)) + buffer[index++] = ch; + } + } else if (ch == '<') { + if (!GetNextChar(ch)) + return FALSE; + + if (ch == '<') + buffer[index++] = ch; + else + m_Pos--; + } else if (ch == '>') { + if (!GetNextChar(ch)) + return FALSE; + + if (ch == '>') + buffer[index++] = ch; + else + m_Pos--; + } + + CFX_ByteString ret(buffer, index); + token = ret; + return TRUE; + } + + while (1) { + if (index < sizeof(buffer)) + buffer[index++] = ch; + + if (!GetNextChar(ch)) + return FALSE; + + if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { + m_Pos--; + break; + } + } + + token = CFX_ByteString(buffer, index); + return TRUE; +} + +FX_BOOL CPDF_DataAvail::GetNextChar(uint8_t& ch) { + FX_FILESIZE pos = m_Pos; + if (pos >= m_dwFileLen) + return FALSE; + + if (m_bufferOffset >= pos || + (FX_FILESIZE)(m_bufferOffset + m_bufferSize) <= pos) { + FX_FILESIZE read_pos = pos; + FX_DWORD read_size = 512; + if ((FX_FILESIZE)read_size > m_dwFileLen) + read_size = (FX_DWORD)m_dwFileLen; + + if ((FX_FILESIZE)(read_pos + read_size) > m_dwFileLen) + read_pos = m_dwFileLen - read_size; + + if (!m_pFileRead->ReadBlock(m_bufferData, read_pos, read_size)) + return FALSE; + + m_bufferOffset = read_pos; + m_bufferSize = read_size; + } + ch = m_bufferData[pos - m_bufferOffset]; + m_Pos++; + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckCrossRefItem( + IPDF_DataAvail::DownloadHints* pHints) { + int32_t iSize = 0; + CFX_ByteString token; + while (1) { + if (!GetNextToken(token)) { + iSize = (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); + pHints->AddSegment(m_Pos, iSize); + return FALSE; + } + + if (token == "trailer") { + m_dwTrailerOffset = m_Pos; + m_docStatus = PDF_DATAAVAIL_TRAILER; + return TRUE; + } + } +} + +FX_BOOL CPDF_DataAvail::CheckAllCrossRefStream( + IPDF_DataAvail::DownloadHints* pHints) { + FX_FILESIZE xref_offset = 0; + + int32_t nRet = CheckCrossRefStream(pHints, xref_offset); + if (nRet == 1) { + if (!xref_offset) { + m_docStatus = PDF_DATAAVAIL_LOADALLCROSSREF; + } else { + m_dwCurrentXRefSteam = xref_offset; + m_Pos = xref_offset; + } + return TRUE; + } + + if (nRet == -1) + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; +} + +FX_BOOL CPDF_DataAvail::CheckCrossRef(IPDF_DataAvail::DownloadHints* pHints) { + int32_t iSize = 0; + CFX_ByteString token; + if (!GetNextToken(token)) { + iSize = (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); + pHints->AddSegment(m_Pos, iSize); + return FALSE; + } + + if (token == "xref") { + while (1) { + if (!GetNextToken(token)) { + iSize = + (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); + pHints->AddSegment(m_Pos, iSize); + m_docStatus = PDF_DATAAVAIL_CROSSREF_ITEM; + return FALSE; + } + + if (token == "trailer") { + m_dwTrailerOffset = m_Pos; + m_docStatus = PDF_DATAAVAIL_TRAILER; + return TRUE; + } + } + } else { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + return FALSE; +} + +FX_BOOL CPDF_DataAvail::CheckTrailerAppend( + IPDF_DataAvail::DownloadHints* pHints) { + if (m_Pos < m_dwFileLen) { + FX_FILESIZE dwAppendPos = m_Pos + m_syntaxParser.SavePos(); + int32_t iSize = (int32_t)( + dwAppendPos + 512 > m_dwFileLen ? m_dwFileLen - dwAppendPos : 512); + + if (!m_pFileAvail->IsDataAvail(dwAppendPos, iSize)) { + pHints->AddSegment(dwAppendPos, iSize); + return FALSE; + } + } + + if (m_dwPrevXRefOffset) { + SetStartOffset(m_dwPrevXRefOffset); + m_docStatus = PDF_DATAAVAIL_CROSSREF; + } else { + m_docStatus = PDF_DATAAVAIL_LOADALLCROSSREF; + } + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckTrailer(IPDF_DataAvail::DownloadHints* pHints) { + int32_t iTrailerSize = + (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); + if (m_pFileAvail->IsDataAvail(m_Pos, iTrailerSize)) { + int32_t iSize = (int32_t)(m_Pos + iTrailerSize - m_dwTrailerOffset); + CFX_BinaryBuf buf(iSize); + uint8_t* pBuf = buf.GetBuffer(); + if (!pBuf) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (!m_pFileRead->ReadBlock(pBuf, m_dwTrailerOffset, iSize)) + return FALSE; + + ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); + m_syntaxParser.InitParser(file.get(), 0); + + std::unique_ptr> pTrailer( + m_syntaxParser.GetObject(nullptr, 0, 0, true)); + if (!pTrailer) { + m_Pos += m_syntaxParser.SavePos(); + pHints->AddSegment(m_Pos, iTrailerSize); + return FALSE; + } + + if (!pTrailer->IsDictionary()) + return FALSE; + + CPDF_Dictionary* pTrailerDict = pTrailer->GetDict(); + CPDF_Object* pEncrypt = pTrailerDict->GetElement("Encrypt"); + if (ToReference(pEncrypt)) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + return TRUE; + } + + FX_DWORD xrefpos = GetDirectInteger(pTrailerDict, "Prev"); + if (xrefpos) { + m_dwPrevXRefOffset = GetDirectInteger(pTrailerDict, "XRefStm"); + if (m_dwPrevXRefOffset) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + } else { + m_dwPrevXRefOffset = xrefpos; + if (m_dwPrevXRefOffset >= m_dwFileLen) { + m_docStatus = PDF_DATAAVAIL_LOADALLFILE; + } else { + SetStartOffset(m_dwPrevXRefOffset); + m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND; + } + } + return TRUE; + } + m_dwPrevXRefOffset = 0; + m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND; + return TRUE; + } + pHints->AddSegment(m_Pos, iTrailerSize); + return FALSE; +} + +FX_BOOL CPDF_DataAvail::CheckPage(int32_t iPage, + IPDF_DataAvail::DownloadHints* pHints) { + while (TRUE) { + switch (m_docStatus) { + case PDF_DATAAVAIL_PAGETREE: + if (!LoadDocPages(pHints)) + return FALSE; + break; + case PDF_DATAAVAIL_PAGE: + if (!LoadDocPage(iPage, pHints)) + return FALSE; + break; + case PDF_DATAAVAIL_ERROR: + return LoadAllFile(pHints); + default: + m_bPagesTreeLoad = TRUE; + m_bPagesLoad = TRUE; + m_bCurPageDictLoadOK = TRUE; + m_docStatus = PDF_DATAAVAIL_PAGE; + return TRUE; + } + } +} + +FX_BOOL CPDF_DataAvail::CheckArrayPageNode( + FX_DWORD dwPageNo, + CPDF_DataAvail::PageNode* pPageNode, + IPDF_DataAvail::DownloadHints* pHints) { + FX_BOOL bExist = FALSE; + CPDF_Object* pPages = GetObject(dwPageNo, pHints, &bExist); + if (!bExist) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (!pPages) { + if (m_docStatus == PDF_DATAAVAIL_ERROR) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + return FALSE; + } + + CPDF_Array* pArray = pPages->AsArray(); + if (!pArray) { + pPages->Release(); + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + pPageNode->m_type = PDF_PAGENODE_PAGES; + for (FX_DWORD i = 0; i < pArray->GetCount(); ++i) { + CPDF_Reference* pKid = ToReference(pArray->GetElement(i)); + if (!pKid) + continue; + + PageNode* pNode = new PageNode(); + pPageNode->m_childNode.Add(pNode); + pNode->m_dwPageNo = pKid->GetRefObjNum(); + } + pPages->Release(); + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckUnkownPageNode( + FX_DWORD dwPageNo, + CPDF_DataAvail::PageNode* pPageNode, + IPDF_DataAvail::DownloadHints* pHints) { + FX_BOOL bExist = FALSE; + CPDF_Object* pPage = GetObject(dwPageNo, pHints, &bExist); + if (!bExist) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (!pPage) { + if (m_docStatus == PDF_DATAAVAIL_ERROR) + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (pPage->IsArray()) { + pPageNode->m_dwPageNo = dwPageNo; + pPageNode->m_type = PDF_PAGENODE_ARRAY; + pPage->Release(); + return TRUE; + } + + if (!pPage->IsDictionary()) { + pPage->Release(); + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + pPageNode->m_dwPageNo = dwPageNo; + CPDF_Dictionary* pDict = pPage->GetDict(); + CFX_ByteString type = pDict->GetStringBy("Type"); + if (type == "Pages") { + pPageNode->m_type = PDF_PAGENODE_PAGES; + CPDF_Object* pKids = pDict->GetElement("Kids"); + if (!pKids) { + m_docStatus = PDF_DATAAVAIL_PAGE; + return TRUE; + } + + switch (pKids->GetType()) { + case CPDF_Object::REFERENCE: { + CPDF_Reference* pKid = pKids->AsReference(); + PageNode* pNode = new PageNode(); + pPageNode->m_childNode.Add(pNode); + pNode->m_dwPageNo = pKid->GetRefObjNum(); + } break; + case CPDF_Object::ARRAY: { + CPDF_Array* pKidsArray = pKids->AsArray(); + for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) { + CPDF_Reference* pKid = ToReference(pKidsArray->GetElement(i)); + if (!pKid) + continue; + + PageNode* pNode = new PageNode(); + pPageNode->m_childNode.Add(pNode); + pNode->m_dwPageNo = pKid->GetRefObjNum(); + } + } break; + default: + break; + } + } else if (type == "Page") { + pPageNode->m_type = PDF_PAGENODE_PAGE; + } else { + pPage->Release(); + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + pPage->Release(); + return TRUE; +} + +FX_BOOL CPDF_DataAvail::CheckPageNode(CPDF_DataAvail::PageNode& pageNodes, + int32_t iPage, + int32_t& iCount, + IPDF_DataAvail::DownloadHints* pHints, + int level) { + if (level >= kMaxPageRecursionDepth) + return FALSE; + + int32_t iSize = pageNodes.m_childNode.GetSize(); + if (iSize <= 0 || iPage >= iSize) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + for (int32_t i = 0; i < iSize; ++i) { + PageNode* pNode = pageNodes.m_childNode.GetAt(i); + if (!pNode) + continue; + + switch (pNode->m_type) { + case PDF_PAGENODE_UNKNOWN: + if (!CheckUnkownPageNode(pNode->m_dwPageNo, pNode, pHints)) { + return FALSE; + } + --i; + break; + case PDF_PAGENODE_PAGE: + iCount++; + if (iPage == iCount && m_pDocument) + m_pDocument->m_PageList.SetAt(iPage, pNode->m_dwPageNo); + break; + case PDF_PAGENODE_PAGES: + if (!CheckPageNode(*pNode, iPage, iCount, pHints, level + 1)) + return FALSE; + break; + case PDF_PAGENODE_ARRAY: + if (!CheckArrayPageNode(pNode->m_dwPageNo, pNode, pHints)) + return FALSE; + --i; + break; + } + + if (iPage == iCount) { + m_docStatus = PDF_DATAAVAIL_DONE; + return TRUE; + } + } + return TRUE; +} + +FX_BOOL CPDF_DataAvail::LoadDocPage(int32_t iPage, + IPDF_DataAvail::DownloadHints* pHints) { + if (m_pDocument->GetPageCount() <= iPage || + m_pDocument->m_PageList.GetAt(iPage)) { + m_docStatus = PDF_DATAAVAIL_DONE; + return TRUE; + } + + if (m_pageNodes.m_type == PDF_PAGENODE_PAGE) { + if (iPage == 0) { + m_docStatus = PDF_DATAAVAIL_DONE; + return TRUE; + } + m_docStatus = PDF_DATAAVAIL_ERROR; + return TRUE; + } + int32_t iCount = -1; + return CheckPageNode(m_pageNodes, iPage, iCount, pHints, 0); +} + +FX_BOOL CPDF_DataAvail::CheckPageCount(IPDF_DataAvail::DownloadHints* pHints) { + FX_BOOL bExist = FALSE; + CPDF_Object* pPages = GetObject(m_PagesObjNum, pHints, &bExist); + if (!bExist) { + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (!pPages) + return FALSE; + + CPDF_Dictionary* pPagesDict = pPages->GetDict(); + if (!pPagesDict) { + pPages->Release(); + m_docStatus = PDF_DATAAVAIL_ERROR; + return FALSE; + } + + if (!pPagesDict->KeyExist("Kids")) { + pPages->Release(); + return TRUE; + } + + int count = pPagesDict->GetIntegerBy("Count"); + if (count > 0) { + pPages->Release(); + return TRUE; + } + + pPages->Release(); + return FALSE; +} + +FX_BOOL CPDF_DataAvail::LoadDocPages(IPDF_DataAvail::DownloadHints* pHints) { + if (!CheckUnkownPageNode(m_PagesObjNum, &m_pageNodes, pHints)) + return FALSE; + + if (CheckPageCount(pHints)) { + m_docStatus = PDF_DATAAVAIL_PAGE; + return TRUE; + } + + m_bTotalLoadPageTree = TRUE; + return FALSE; +} + +FX_BOOL CPDF_DataAvail::LoadPages(IPDF_DataAvail::DownloadHints* pHints) { + while (!m_bPagesTreeLoad) { + if (!CheckPageStatus(pHints)) + return FALSE; + } + + if (m_bPagesLoad) + return TRUE; + + m_pDocument->LoadPages(); + return FALSE; +} + +IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedData( + IPDF_DataAvail::DownloadHints* pHints) { + if (m_bLinearedDataOK) + return DataAvailable; + + if (!m_bMainXRefLoadTried) { + FX_SAFE_DWORD data_size = m_dwFileLen; + data_size -= m_dwLastXRefOffset; + if (!data_size.IsValid()) + return DataError; + + if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset, + data_size.ValueOrDie())) { + pHints->AddSegment(m_dwLastXRefOffset, data_size.ValueOrDie()); + return DataNotAvailable; + } + + CPDF_Parser::Error eRet = + m_pDocument->GetParser()->LoadLinearizedMainXRefTable(); + m_bMainXRefLoadTried = TRUE; + if (eRet != CPDF_Parser::SUCCESS) + return DataError; + + if (!PreparePageItem()) + return DataNotAvailable; + + m_bMainXRefLoadedOK = TRUE; + m_bLinearedDataOK = TRUE; + } + + return m_bLinearedDataOK ? DataAvailable : DataNotAvailable; +} + +FX_BOOL CPDF_DataAvail::CheckPageAnnots(int32_t iPage, + IPDF_DataAvail::DownloadHints* pHints) { + if (!m_objs_array.GetSize()) { + m_objs_array.RemoveAll(); + m_ObjectSet.clear(); + + CPDF_Dictionary* pPageDict = m_pDocument->GetPage(iPage); + if (!pPageDict) + return TRUE; + + CPDF_Object* pAnnots = pPageDict->GetElement("Annots"); + if (!pAnnots) + return TRUE; + + CFX_ArrayTemplate obj_array; + obj_array.Add(pAnnots); + + FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array); + if (bRet) + m_objs_array.RemoveAll(); + + return bRet; + } + + CFX_ArrayTemplate new_objs_array; + FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); + m_objs_array.RemoveAll(); + if (!bRet) + m_objs_array.Append(new_objs_array); + + return bRet; +} + +IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedFirstPage( + int32_t iPage, + IPDF_DataAvail::DownloadHints* pHints) { + if (!m_bAnnotsLoad) { + if (!CheckPageAnnots(iPage, pHints)) + return DataNotAvailable; + m_bAnnotsLoad = TRUE; + } + + DocAvailStatus nRet = CheckLinearizedData(pHints); + if (nRet == DataAvailable) + m_bPageLoadedOK = FALSE; + return nRet; +} + +FX_BOOL CPDF_DataAvail::HaveResourceAncestor(CPDF_Dictionary* pDict) { + CFX_AutoRestorer restorer(&s_CurrentDataAvailRecursionDepth); + if (++s_CurrentDataAvailRecursionDepth > kMaxDataAvailRecursionDepth) + return FALSE; + + CPDF_Object* pParent = pDict->GetElement("Parent"); + if (!pParent) + return FALSE; + + CPDF_Dictionary* pParentDict = pParent->GetDict(); + if (!pParentDict) + return FALSE; + + CPDF_Object* pRet = pParentDict->GetElement("Resources"); + if (pRet) { + m_pPageResource = pRet; + return TRUE; + } + + return HaveResourceAncestor(pParentDict); +} + +IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail( + int32_t iPage, + IPDF_DataAvail::DownloadHints* pHints) { + if (!m_pDocument) + return DataError; + + if (IsFirstCheck(iPage)) { + m_bCurPageDictLoadOK = FALSE; + m_bPageLoadedOK = FALSE; + m_bAnnotsLoad = FALSE; + m_bNeedDownLoadResource = FALSE; + m_objs_array.RemoveAll(); + m_ObjectSet.clear(); + } + + if (pdfium::ContainsKey(m_pagesLoadState, iPage)) + return DataAvailable; + + if (m_bLinearized) { + if ((FX_DWORD)iPage == m_dwFirstPageNo) { + DocAvailStatus nRet = CheckLinearizedFirstPage(iPage, pHints); + if (nRet == DataAvailable) + m_pagesLoadState.insert(iPage); + return nRet; + } + + DocAvailStatus nResult = CheckLinearizedData(pHints); + if (nResult != DataAvailable) + return nResult; + + if (m_pHintTables) { + nResult = m_pHintTables->CheckPage(iPage, pHints); + if (nResult != DataAvailable) + return nResult; + m_pagesLoadState.insert(iPage); + return DataAvailable; + } + + if (m_bMainXRefLoadedOK) { + if (m_bTotalLoadPageTree) { + if (!LoadPages(pHints)) + return DataNotAvailable; + } else { + if (!m_bCurPageDictLoadOK && !CheckPage(iPage, pHints)) + return DataNotAvailable; + } + } else { + if (!LoadAllFile(pHints)) + return DataNotAvailable; + m_pDocument->GetParser()->RebuildCrossRef(); + ResetFirstCheck(iPage); + return DataAvailable; + } + } else { + if (!m_bTotalLoadPageTree && !m_bCurPageDictLoadOK && + !CheckPage(iPage, pHints)) { + return DataNotAvailable; + } + } + + if (m_bHaveAcroForm && !m_bAcroFormLoad) { + if (!CheckAcroFormSubObject(pHints)) + return DataNotAvailable; + m_bAcroFormLoad = TRUE; + } + + if (!m_bPageLoadedOK) { + if (!m_objs_array.GetSize()) { + m_objs_array.RemoveAll(); + m_ObjectSet.clear(); + + m_pPageDict = m_pDocument->GetPage(iPage); + if (!m_pPageDict) { + ResetFirstCheck(iPage); + return DataAvailable; + } + + CFX_ArrayTemplate obj_array; + obj_array.Add(m_pPageDict); + FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); + if (!bRet) + return DataNotAvailable; + + m_objs_array.RemoveAll(); + } else { + CFX_ArrayTemplate new_objs_array; + FX_BOOL bRet = + IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); + + m_objs_array.RemoveAll(); + if (!bRet) { + m_objs_array.Append(new_objs_array); + return DataNotAvailable; + } + } + m_bPageLoadedOK = TRUE; + } + + if (!m_bAnnotsLoad) { + if (!CheckPageAnnots(iPage, pHints)) + return DataNotAvailable; + m_bAnnotsLoad = TRUE; + } + + if (m_pPageDict && !m_bNeedDownLoadResource) { + m_pPageResource = m_pPageDict->GetElement("Resources"); + if (!m_pPageResource) + m_bNeedDownLoadResource = HaveResourceAncestor(m_pPageDict); + else + m_bNeedDownLoadResource = TRUE; + } + + if (m_bNeedDownLoadResource) { + FX_BOOL bRet = CheckResources(pHints); + if (!bRet) + return DataNotAvailable; + m_bNeedDownLoadResource = FALSE; + } + + m_bPageLoadedOK = FALSE; + m_bAnnotsLoad = FALSE; + m_bCurPageDictLoadOK = FALSE; + + ResetFirstCheck(iPage); + m_pagesLoadState.insert(iPage); + return DataAvailable; +} + +FX_BOOL CPDF_DataAvail::CheckResources(IPDF_DataAvail::DownloadHints* pHints) { + if (!m_objs_array.GetSize()) { + m_objs_array.RemoveAll(); + CFX_ArrayTemplate obj_array; + obj_array.Add(m_pPageResource); + + FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); + if (bRet) + m_objs_array.RemoveAll(); + return bRet; + } + + CFX_ArrayTemplate new_objs_array; + FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); + m_objs_array.RemoveAll(); + if (!bRet) + m_objs_array.Append(new_objs_array); + return bRet; +} + +void CPDF_DataAvail::GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, + FX_DWORD* pSize) { + if (pPos) + *pPos = m_dwLastXRefOffset; + if (pSize) + *pSize = (FX_DWORD)(m_dwFileLen - m_dwLastXRefOffset); +} + +int CPDF_DataAvail::GetPageCount() const { + if (m_pLinearized) { + CPDF_Dictionary* pDict = m_pLinearized->GetDict(); + CPDF_Object* pObj = pDict ? pDict->GetElementValue("N") : nullptr; + return pObj ? pObj->GetInteger() : 0; + } + return m_pDocument ? m_pDocument->GetPageCount() : 0; +} + +CPDF_Dictionary* CPDF_DataAvail::GetPage(int index) { + if (!m_pDocument || index < 0 || index >= GetPageCount()) + return nullptr; + + if (m_pLinearized) { + CPDF_Dictionary* pDict = m_pLinearized->GetDict(); + CPDF_Object* pObj = pDict ? pDict->GetElementValue("P") : nullptr; + + int pageNum = pObj ? pObj->GetInteger() : 0; + if (m_pHintTables && index != pageNum) { + FX_FILESIZE szPageStartPos = 0; + FX_FILESIZE szPageLength = 0; + FX_DWORD dwObjNum = 0; + FX_BOOL bPagePosGot = m_pHintTables->GetPagePos(index, szPageStartPos, + szPageLength, dwObjNum); + if (!bPagePosGot) + return nullptr; + + m_syntaxParser.InitParser(m_pFileRead, (FX_DWORD)szPageStartPos); + CPDF_Object* pPageDict = ParseIndirectObjectAt(0, dwObjNum, m_pDocument); + if (!pPageDict) + return nullptr; + + if (!m_pDocument->InsertIndirectObject(dwObjNum, pPageDict)) + return nullptr; + return pPageDict->GetDict(); + } + } + return m_pDocument->GetPage(index); +} + +IPDF_DataAvail::DocFormStatus CPDF_DataAvail::IsFormAvail( + IPDF_DataAvail::DownloadHints* pHints) { + if (!m_pDocument) + return FormAvailable; + + if (!m_bLinearizedFormParamLoad) { + CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + if (!pRoot) + return FormAvailable; + + CPDF_Object* pAcroForm = pRoot->GetElement("AcroForm"); + if (!pAcroForm) + return FormNotExist; + + DocAvailStatus nDocStatus = CheckLinearizedData(pHints); + if (nDocStatus == DataError) + return FormError; + if (nDocStatus == DataNotAvailable) + return FormNotAvailable; + + if (!m_objs_array.GetSize()) + m_objs_array.Add(pAcroForm->GetDict()); + m_bLinearizedFormParamLoad = TRUE; + } + + CFX_ArrayTemplate new_objs_array; + FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); + m_objs_array.RemoveAll(); + if (!bRet) { + m_objs_array.Append(new_objs_array); + return FormNotAvailable; + } + return FormAvailable; +} + +CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} + +CPDF_DataAvail::PageNode::~PageNode() { + for (int32_t i = 0; i < m_childNode.GetSize(); ++i) + delete m_childNode[i]; + m_childNode.RemoveAll(); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_data_avail.h b/core/fpdfapi/fpdf_parser/cpdf_data_avail.h new file mode 100644 index 0000000000..2a6995914c --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_data_avail.h @@ -0,0 +1,217 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_ +#define CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_ + +#include "core/fpdfapi/fpdf_parser/cpdf_hint_tables.h" +#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fpdfapi/ipdf_data_avail.h" +#include "core/include/fxcrt/fx_basic.h" + +class CPDF_Dictionary; +class CPDF_IndirectObjectHolder; +class CPDF_Parser; + +enum PDF_DATAAVAIL_STATUS { + PDF_DATAAVAIL_HEADER = 0, + PDF_DATAAVAIL_FIRSTPAGE, + PDF_DATAAVAIL_FIRSTPAGE_PREPARE, + PDF_DATAAVAIL_HINTTABLE, + PDF_DATAAVAIL_END, + PDF_DATAAVAIL_CROSSREF, + PDF_DATAAVAIL_CROSSREF_ITEM, + PDF_DATAAVAIL_CROSSREF_STREAM, + PDF_DATAAVAIL_TRAILER, + PDF_DATAAVAIL_LOADALLCROSSREF, + PDF_DATAAVAIL_ROOT, + PDF_DATAAVAIL_INFO, + PDF_DATAAVAIL_ACROFORM, + PDF_DATAAVAIL_ACROFORM_SUBOBJECT, + PDF_DATAAVAIL_PAGETREE, + PDF_DATAAVAIL_PAGE, + PDF_DATAAVAIL_PAGE_LATERLOAD, + PDF_DATAAVAIL_RESOURCES, + PDF_DATAAVAIL_DONE, + PDF_DATAAVAIL_ERROR, + PDF_DATAAVAIL_LOADALLFILE, + PDF_DATAAVAIL_TRAILER_APPEND +}; + +enum PDF_PAGENODE_TYPE { + PDF_PAGENODE_UNKNOWN = 0, + PDF_PAGENODE_PAGE, + PDF_PAGENODE_PAGES, + PDF_PAGENODE_ARRAY, +}; + +class CPDF_DataAvail final : public IPDF_DataAvail { + public: + CPDF_DataAvail(FileAvail* pFileAvail, + IFX_FileRead* pFileRead, + FX_BOOL bSupportHintTable); + ~CPDF_DataAvail() override; + + // IPDF_DataAvail: + DocAvailStatus IsDocAvail(DownloadHints* pHints) override; + void SetDocument(CPDF_Document* pDoc) override; + DocAvailStatus IsPageAvail(int iPage, DownloadHints* pHints) override; + DocFormStatus IsFormAvail(DownloadHints* pHints) override; + DocLinearizationStatus IsLinearizedPDF() override; + FX_BOOL IsLinearized() override { return m_bLinearized; } + void GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, FX_DWORD* pSize) override; + + int GetPageCount() const; + CPDF_Dictionary* GetPage(int index); + + friend class CPDF_HintTables; + + protected: + class PageNode { + public: + PageNode(); + ~PageNode(); + + PDF_PAGENODE_TYPE m_type; + FX_DWORD m_dwPageNo; + CFX_ArrayTemplate m_childNode; + }; + + static const int kMaxDataAvailRecursionDepth = 64; + static int s_CurrentDataAvailRecursionDepth; + static const int kMaxPageRecursionDepth = 1024; + + FX_DWORD GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset); + FX_BOOL IsObjectsAvail(CFX_ArrayTemplate& obj_array, + FX_BOOL bParsePage, + IPDF_DataAvail::DownloadHints* pHints, + CFX_ArrayTemplate& ret_array); + FX_BOOL CheckDocStatus(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckHeader(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckFirstPage(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckHintTables(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckEnd(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckCrossRef(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckCrossRefItem(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckTrailer(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckRoot(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckInfo(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckPages(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckPage(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckResources(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckAnnots(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckAcroForm(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckAcroFormSubObject(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckTrailerAppend(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckPageStatus(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckAllCrossRefStream(IPDF_DataAvail::DownloadHints* pHints); + + int32_t CheckCrossRefStream(IPDF_DataAvail::DownloadHints* pHints, + FX_FILESIZE& xref_offset); + FX_BOOL IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen); + void SetStartOffset(FX_FILESIZE dwOffset); + FX_BOOL GetNextToken(CFX_ByteString& token); + FX_BOOL GetNextChar(uint8_t& ch); + CPDF_Object* ParseIndirectObjectAt( + FX_FILESIZE pos, + FX_DWORD objnum, + CPDF_IndirectObjectHolder* pObjList = nullptr); + CPDF_Object* GetObject(FX_DWORD objnum, + IPDF_DataAvail::DownloadHints* pHints, + FX_BOOL* pExistInFile); + FX_BOOL GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages); + FX_BOOL PreparePageItem(); + FX_BOOL LoadPages(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL LoadAllXref(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL LoadAllFile(IPDF_DataAvail::DownloadHints* pHints); + DocAvailStatus CheckLinearizedData(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckPageAnnots(int iPage, IPDF_DataAvail::DownloadHints* pHints); + + DocAvailStatus CheckLinearizedFirstPage( + int iPage, + IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL HaveResourceAncestor(CPDF_Dictionary* pDict); + FX_BOOL CheckPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL LoadDocPages(IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL LoadDocPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckPageNode(PageNode& pageNodes, + int32_t iPage, + int32_t& iCount, + IPDF_DataAvail::DownloadHints* pHints, + int level); + FX_BOOL CheckUnkownPageNode(FX_DWORD dwPageNo, + PageNode* pPageNode, + IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckArrayPageNode(FX_DWORD dwPageNo, + PageNode* pPageNode, + IPDF_DataAvail::DownloadHints* pHints); + FX_BOOL CheckPageCount(IPDF_DataAvail::DownloadHints* pHints); + bool IsFirstCheck(int iPage); + void ResetFirstCheck(int iPage); + FX_BOOL IsDataAvail(FX_FILESIZE offset, + FX_DWORD size, + IPDF_DataAvail::DownloadHints* pHints); + + CPDF_Parser m_parser; + CPDF_SyntaxParser m_syntaxParser; + CPDF_Object* m_pRoot; + FX_DWORD m_dwRootObjNum; + FX_DWORD m_dwInfoObjNum; + CPDF_Object* m_pLinearized; + CPDF_Object* m_pTrailer; + FX_BOOL m_bDocAvail; + FX_FILESIZE m_dwHeaderOffset; + FX_FILESIZE m_dwLastXRefOffset; + FX_FILESIZE m_dwXRefOffset; + FX_FILESIZE m_dwTrailerOffset; + FX_FILESIZE m_dwCurrentOffset; + PDF_DATAAVAIL_STATUS m_docStatus; + FX_FILESIZE m_dwFileLen; + CPDF_Document* m_pDocument; + std::set m_ObjectSet; + CFX_ArrayTemplate m_objs_array; + FX_FILESIZE m_Pos; + FX_FILESIZE m_bufferOffset; + FX_DWORD m_bufferSize; + CFX_ByteString m_WordBuf; + uint8_t m_bufferData[512]; + CFX_DWordArray m_XRefStreamList; + CFX_DWordArray m_PageObjList; + FX_DWORD m_PagesObjNum; + FX_BOOL m_bLinearized; + FX_DWORD m_dwFirstPageNo; + FX_BOOL m_bLinearedDataOK; + FX_BOOL m_bMainXRefLoadTried; + FX_BOOL m_bMainXRefLoadedOK; + FX_BOOL m_bPagesTreeLoad; + FX_BOOL m_bPagesLoad; + CPDF_Parser* m_pCurrentParser; + FX_FILESIZE m_dwCurrentXRefSteam; + FX_BOOL m_bAnnotsLoad; + FX_BOOL m_bHaveAcroForm; + FX_DWORD m_dwAcroFormObjNum; + FX_BOOL m_bAcroFormLoad; + CPDF_Object* m_pAcroForm; + CFX_ArrayTemplate m_arrayAcroforms; + CPDF_Dictionary* m_pPageDict; + CPDF_Object* m_pPageResource; + FX_BOOL m_bNeedDownLoadResource; + FX_BOOL m_bPageLoadedOK; + FX_BOOL m_bLinearizedFormParamLoad; + CFX_ArrayTemplate m_PagesArray; + FX_DWORD m_dwEncryptObjNum; + FX_FILESIZE m_dwPrevXRefOffset; + FX_BOOL m_bTotalLoadPageTree; + FX_BOOL m_bCurPageDictLoadOK; + PageNode m_pageNodes; + std::set m_pageMapCheckState; + std::set m_pagesLoadState; + std::unique_ptr m_pHintTables; + FX_BOOL m_bSupportHintTable; +}; + +#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_ diff --git a/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp b/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp new file mode 100644 index 0000000000..864cd59744 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp @@ -0,0 +1,271 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_dictionary.h" + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_boolean.h" +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "third_party/base/stl_util.h" + +CPDF_Dictionary::CPDF_Dictionary() {} + +CPDF_Dictionary::~CPDF_Dictionary() { + for (const auto& it : m_Map) + it.second->Release(); +} + +CPDF_Object::Type CPDF_Dictionary::GetType() const { + return DICTIONARY; +} + +CPDF_Dictionary* CPDF_Dictionary::GetDict() const { + // The method should be made non-const if we want to not be const. + // See bug #234. + return const_cast(this); +} + +bool CPDF_Dictionary::IsDictionary() const { + return true; +} + +CPDF_Dictionary* CPDF_Dictionary::AsDictionary() { + return this; +} + +const CPDF_Dictionary* CPDF_Dictionary::AsDictionary() const { + return this; +} + +CPDF_Object* CPDF_Dictionary::Clone(FX_BOOL bDirect) const { + CPDF_Dictionary* pCopy = new CPDF_Dictionary(); + for (const auto& it : *this) + pCopy->m_Map.insert(std::make_pair(it.first, it.second->Clone(bDirect))); + return pCopy; +} + +CPDF_Object* CPDF_Dictionary::GetElement(const CFX_ByteStringC& key) const { + auto it = m_Map.find(key); + if (it == m_Map.end()) + return nullptr; + return it->second; +} +CPDF_Object* CPDF_Dictionary::GetElementValue( + const CFX_ByteStringC& key) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetDirect() : nullptr; +} + +CFX_ByteString CPDF_Dictionary::GetStringBy(const CFX_ByteStringC& key) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetString() : CFX_ByteString(); +} + +CFX_ByteStringC CPDF_Dictionary::GetConstStringBy( + const CFX_ByteStringC& key) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetConstString() : CFX_ByteStringC(); +} + +CFX_WideString CPDF_Dictionary::GetUnicodeTextBy( + const CFX_ByteStringC& key) const { + CPDF_Object* p = GetElement(key); + if (CPDF_Reference* pRef = ToReference(p)) + p = pRef->GetDirect(); + return p ? p->GetUnicodeText() : CFX_WideString(); +} + +CFX_ByteString CPDF_Dictionary::GetStringBy(const CFX_ByteStringC& key, + const CFX_ByteStringC& def) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetString() : CFX_ByteString(def); +} + +CFX_ByteStringC CPDF_Dictionary::GetConstStringBy( + const CFX_ByteStringC& key, + const CFX_ByteStringC& def) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetConstString() : CFX_ByteStringC(def); +} + +int CPDF_Dictionary::GetIntegerBy(const CFX_ByteStringC& key) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetInteger() : 0; +} + +int CPDF_Dictionary::GetIntegerBy(const CFX_ByteStringC& key, int def) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetInteger() : def; +} + +FX_FLOAT CPDF_Dictionary::GetNumberBy(const CFX_ByteStringC& key) const { + CPDF_Object* p = GetElement(key); + return p ? p->GetNumber() : 0; +} + +FX_BOOL CPDF_Dictionary::GetBooleanBy(const CFX_ByteStringC& key, + FX_BOOL bDefault) const { + CPDF_Object* p = GetElement(key); + return ToBoolean(p) ? p->GetInteger() : bDefault; +} + +CPDF_Dictionary* CPDF_Dictionary::GetDictBy(const CFX_ByteStringC& key) const { + CPDF_Object* p = GetElementValue(key); + if (!p) + return nullptr; + if (CPDF_Dictionary* pDict = p->AsDictionary()) + return pDict; + if (CPDF_Stream* pStream = p->AsStream()) + return pStream->GetDict(); + return nullptr; +} + +CPDF_Array* CPDF_Dictionary::GetArrayBy(const CFX_ByteStringC& key) const { + return ToArray(GetElementValue(key)); +} + +CPDF_Stream* CPDF_Dictionary::GetStreamBy(const CFX_ByteStringC& key) const { + return ToStream(GetElementValue(key)); +} + +CFX_FloatRect CPDF_Dictionary::GetRectBy(const CFX_ByteStringC& key) const { + CFX_FloatRect rect; + CPDF_Array* pArray = GetArrayBy(key); + if (pArray) + rect = pArray->GetRect(); + return rect; +} + +CFX_Matrix CPDF_Dictionary::GetMatrixBy(const CFX_ByteStringC& key) const { + CFX_Matrix matrix; + CPDF_Array* pArray = GetArrayBy(key); + if (pArray) + matrix = pArray->GetMatrix(); + return matrix; +} + +FX_BOOL CPDF_Dictionary::KeyExist(const CFX_ByteStringC& key) const { + return pdfium::ContainsKey(m_Map, key); +} + +bool CPDF_Dictionary::IsSignatureDict() const { + CPDF_Object* pType = GetElementValue("Type"); + if (!pType) + pType = GetElementValue("FT"); + return pType && pType->GetString() == "Sig"; +} + +void CPDF_Dictionary::SetAt(const CFX_ByteStringC& key, CPDF_Object* pObj) { + ASSERT(IsDictionary()); + // Avoid 2 constructions of CFX_ByteString. + CFX_ByteString key_bytestring = key; + auto it = m_Map.find(key_bytestring); + if (it == m_Map.end()) { + if (pObj) + m_Map.insert(std::make_pair(key_bytestring, pObj)); + return; + } + + if (it->second == pObj) + return; + it->second->Release(); + + if (pObj) + it->second = pObj; + else + m_Map.erase(it); +} + +void CPDF_Dictionary::RemoveAt(const CFX_ByteStringC& key) { + auto it = m_Map.find(key); + if (it == m_Map.end()) + return; + + it->second->Release(); + m_Map.erase(it); +} + +void CPDF_Dictionary::ReplaceKey(const CFX_ByteStringC& oldkey, + const CFX_ByteStringC& newkey) { + auto old_it = m_Map.find(oldkey); + if (old_it == m_Map.end()) + return; + + // Avoid 2 constructions of CFX_ByteString. + CFX_ByteString newkey_bytestring = newkey; + auto new_it = m_Map.find(newkey_bytestring); + if (new_it == old_it) + return; + + if (new_it != m_Map.end()) { + new_it->second->Release(); + new_it->second = old_it->second; + } else { + m_Map.insert(std::make_pair(newkey_bytestring, old_it->second)); + } + m_Map.erase(old_it); +} + +void CPDF_Dictionary::SetAtInteger(const CFX_ByteStringC& key, int i) { + SetAt(key, new CPDF_Number(i)); +} + +void CPDF_Dictionary::SetAtName(const CFX_ByteStringC& key, + const CFX_ByteString& name) { + SetAt(key, new CPDF_Name(name)); +} + +void CPDF_Dictionary::SetAtString(const CFX_ByteStringC& key, + const CFX_ByteString& str) { + SetAt(key, new CPDF_String(str, FALSE)); +} + +void CPDF_Dictionary::SetAtReference(const CFX_ByteStringC& key, + CPDF_IndirectObjectHolder* pDoc, + FX_DWORD objnum) { + SetAt(key, new CPDF_Reference(pDoc, objnum)); +} + +void CPDF_Dictionary::AddReference(const CFX_ByteStringC& key, + CPDF_IndirectObjectHolder* pDoc, + FX_DWORD objnum) { + SetAt(key, new CPDF_Reference(pDoc, objnum)); +} + +void CPDF_Dictionary::SetAtNumber(const CFX_ByteStringC& key, FX_FLOAT f) { + CPDF_Number* pNumber = new CPDF_Number(f); + SetAt(key, pNumber); +} + +void CPDF_Dictionary::SetAtBoolean(const CFX_ByteStringC& key, FX_BOOL bValue) { + SetAt(key, new CPDF_Boolean(bValue)); +} + +void CPDF_Dictionary::SetAtRect(const CFX_ByteStringC& key, + const CFX_FloatRect& rect) { + CPDF_Array* pArray = new CPDF_Array; + pArray->AddNumber(rect.left); + pArray->AddNumber(rect.bottom); + pArray->AddNumber(rect.right); + pArray->AddNumber(rect.top); + SetAt(key, pArray); +} + +void CPDF_Dictionary::SetAtMatrix(const CFX_ByteStringC& key, + const CFX_Matrix& matrix) { + CPDF_Array* pArray = new CPDF_Array; + pArray->AddNumber(matrix.a); + pArray->AddNumber(matrix.b); + pArray->AddNumber(matrix.c); + pArray->AddNumber(matrix.d); + pArray->AddNumber(matrix.e); + pArray->AddNumber(matrix.f); + SetAt(key, pArray); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_document.cpp b/core/fpdfapi/fpdf_parser/cpdf_document.cpp new file mode 100644 index 0000000000..c6bdcddfbe --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_document.cpp @@ -0,0 +1,354 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_document.h" + +#include + +#include "core/fpdfapi/fpdf_render/render_int.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fxge/fx_font.h" +#include "third_party/base/stl_util.h" + +namespace { + +int CountPages(CPDF_Dictionary* pPages, + std::set* visited_pages) { + int count = pPages->GetIntegerBy("Count"); + if (count > 0 && count < FPDF_PAGE_MAX_NUM) { + return count; + } + CPDF_Array* pKidList = pPages->GetArrayBy("Kids"); + if (!pKidList) { + return 0; + } + count = 0; + for (FX_DWORD i = 0; i < pKidList->GetCount(); i++) { + CPDF_Dictionary* pKid = pKidList->GetDictAt(i); + if (!pKid || pdfium::ContainsKey(*visited_pages, pKid)) { + continue; + } + if (pKid->KeyExist("Kids")) { + // Use |visited_pages| to help detect circular references of pages. + pdfium::ScopedSetInsertion local_add(visited_pages, + pKid); + count += CountPages(pKid, visited_pages); + } else { + // This page is a leaf node. + count++; + } + } + pPages->SetAtInteger("Count", count); + return count; +} + +} // namespace + +CPDF_Document::CPDF_Document(CPDF_Parser* pParser) + : CPDF_IndirectObjectHolder(pParser) { + ASSERT(pParser); + m_pRootDict = NULL; + m_pInfoDict = NULL; + m_bLinearized = FALSE; + m_dwFirstPageNo = 0; + m_dwFirstPageObjNum = 0; + m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this); + m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this); +} +CPDF_DocPageData* CPDF_Document::GetValidatePageData() { + if (m_pDocPage) { + return m_pDocPage; + } + m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this); + return m_pDocPage; +} +CPDF_DocRenderData* CPDF_Document::GetValidateRenderData() { + if (m_pDocRender) { + return m_pDocRender; + } + m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this); + return m_pDocRender; +} +void CPDF_Document::LoadDoc() { + m_LastObjNum = m_pParser->GetLastObjNum(); + CPDF_Object* pRootObj = GetIndirectObject(m_pParser->GetRootObjNum()); + if (!pRootObj) { + return; + } + m_pRootDict = pRootObj->GetDict(); + if (!m_pRootDict) { + return; + } + CPDF_Object* pInfoObj = GetIndirectObject(m_pParser->GetInfoObjNum()); + if (pInfoObj) { + m_pInfoDict = pInfoObj->GetDict(); + } + CPDF_Array* pIDArray = m_pParser->GetIDArray(); + if (pIDArray) { + m_ID1 = pIDArray->GetStringAt(0); + m_ID2 = pIDArray->GetStringAt(1); + } + m_PageList.SetSize(RetrievePageCount()); +} +void CPDF_Document::LoadAsynDoc(CPDF_Dictionary* pLinearized) { + m_bLinearized = TRUE; + m_LastObjNum = m_pParser->GetLastObjNum(); + CPDF_Object* pIndirectObj = GetIndirectObject(m_pParser->GetRootObjNum()); + m_pRootDict = pIndirectObj ? pIndirectObj->GetDict() : nullptr; + if (!m_pRootDict) { + return; + } + pIndirectObj = GetIndirectObject(m_pParser->GetInfoObjNum()); + m_pInfoDict = pIndirectObj ? pIndirectObj->GetDict() : nullptr; + CPDF_Array* pIDArray = m_pParser->GetIDArray(); + if (pIDArray) { + m_ID1 = pIDArray->GetStringAt(0); + m_ID2 = pIDArray->GetStringAt(1); + } + FX_DWORD dwPageCount = 0; + CPDF_Object* pCount = pLinearized->GetElement("N"); + if (ToNumber(pCount)) + dwPageCount = pCount->GetInteger(); + + m_PageList.SetSize(dwPageCount); + CPDF_Object* pNo = pLinearized->GetElement("P"); + if (ToNumber(pNo)) + m_dwFirstPageNo = pNo->GetInteger(); + + CPDF_Object* pObjNum = pLinearized->GetElement("O"); + if (ToNumber(pObjNum)) + m_dwFirstPageObjNum = pObjNum->GetInteger(); +} +void CPDF_Document::LoadPages() { + m_PageList.SetSize(RetrievePageCount()); +} +CPDF_Document::~CPDF_Document() { + if (m_pDocPage) { + CPDF_ModuleMgr::Get()->GetPageModule()->ReleaseDoc(this); + CPDF_ModuleMgr::Get()->GetPageModule()->ClearStockFont(this); + } + if (m_pDocRender) { + CPDF_ModuleMgr::Get()->GetRenderModule()->DestroyDocData(m_pDocRender); + } +} +#define FX_MAX_PAGE_LEVEL 1024 +CPDF_Dictionary* CPDF_Document::_FindPDFPage(CPDF_Dictionary* pPages, + int iPage, + int nPagesToGo, + int level) { + CPDF_Array* pKidList = pPages->GetArrayBy("Kids"); + if (!pKidList) { + if (nPagesToGo == 0) { + return pPages; + } + return NULL; + } + if (level >= FX_MAX_PAGE_LEVEL) { + return NULL; + } + int nKids = pKidList->GetCount(); + for (int i = 0; i < nKids; i++) { + CPDF_Dictionary* pKid = pKidList->GetDictAt(i); + if (!pKid) { + nPagesToGo--; + continue; + } + if (pKid == pPages) { + continue; + } + if (!pKid->KeyExist("Kids")) { + if (nPagesToGo == 0) { + return pKid; + } + m_PageList.SetAt(iPage - nPagesToGo, pKid->GetObjNum()); + nPagesToGo--; + } else { + int nPages = pKid->GetIntegerBy("Count"); + if (nPagesToGo < nPages) { + return _FindPDFPage(pKid, iPage, nPagesToGo, level + 1); + } + nPagesToGo -= nPages; + } + } + return NULL; +} + +CPDF_Dictionary* CPDF_Document::GetPage(int iPage) { + if (iPage < 0 || iPage >= m_PageList.GetSize()) + return nullptr; + + if (m_bLinearized && (iPage == (int)m_dwFirstPageNo)) { + if (CPDF_Dictionary* pDict = + ToDictionary(GetIndirectObject(m_dwFirstPageObjNum))) { + return pDict; + } + } + + int objnum = m_PageList.GetAt(iPage); + if (objnum) { + if (CPDF_Dictionary* pDict = ToDictionary(GetIndirectObject(objnum))) + return pDict; + } + + CPDF_Dictionary* pRoot = GetRoot(); + if (!pRoot) + return nullptr; + + CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); + if (!pPages) + return nullptr; + + CPDF_Dictionary* pPage = _FindPDFPage(pPages, iPage, iPage, 0); + if (!pPage) + return nullptr; + + m_PageList.SetAt(iPage, pPage->GetObjNum()); + return pPage; +} + +int CPDF_Document::_FindPageIndex(CPDF_Dictionary* pNode, + FX_DWORD& skip_count, + FX_DWORD objnum, + int& index, + int level) { + if (pNode->KeyExist("Kids")) { + CPDF_Array* pKidList = pNode->GetArrayBy("Kids"); + if (!pKidList) { + return -1; + } + if (level >= FX_MAX_PAGE_LEVEL) { + return -1; + } + FX_DWORD count = pNode->GetIntegerBy("Count"); + if (count <= skip_count) { + skip_count -= count; + index += count; + return -1; + } + if (count && count == pKidList->GetCount()) { + for (FX_DWORD i = 0; i < count; i++) { + if (CPDF_Reference* pKid = ToReference(pKidList->GetElement(i))) { + if (pKid->GetRefObjNum() == objnum) { + m_PageList.SetAt(index + i, objnum); + return index + i; + } + } + } + } + for (FX_DWORD i = 0; i < pKidList->GetCount(); i++) { + CPDF_Dictionary* pKid = pKidList->GetDictAt(i); + if (!pKid) { + continue; + } + if (pKid == pNode) { + continue; + } + int found_index = + _FindPageIndex(pKid, skip_count, objnum, index, level + 1); + if (found_index >= 0) { + return found_index; + } + } + } else { + if (objnum == pNode->GetObjNum()) { + return index; + } + if (skip_count) { + skip_count--; + } + index++; + } + return -1; +} +int CPDF_Document::GetPageIndex(FX_DWORD objnum) { + FX_DWORD nPages = m_PageList.GetSize(); + FX_DWORD skip_count = 0; + FX_BOOL bSkipped = FALSE; + for (FX_DWORD i = 0; i < nPages; i++) { + FX_DWORD objnum1 = m_PageList.GetAt(i); + if (objnum1 == objnum) { + return i; + } + if (!bSkipped && objnum1 == 0) { + skip_count = i; + bSkipped = TRUE; + } + } + CPDF_Dictionary* pRoot = GetRoot(); + if (!pRoot) { + return -1; + } + CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); + if (!pPages) { + return -1; + } + int index = 0; + return _FindPageIndex(pPages, skip_count, objnum, index); +} +int CPDF_Document::GetPageCount() const { + return m_PageList.GetSize(); +} + +int CPDF_Document::RetrievePageCount() const { + CPDF_Dictionary* pRoot = GetRoot(); + if (!pRoot) { + return 0; + } + CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); + if (!pPages) { + return 0; + } + if (!pPages->KeyExist("Kids")) { + return 1; + } + std::set visited_pages; + visited_pages.insert(pPages); + return CountPages(pPages, &visited_pages); +} + +FX_DWORD CPDF_Document::GetUserPermissions(FX_BOOL bCheckRevision) const { + if (!m_pParser) { + return (FX_DWORD)-1; + } + return m_pParser->GetPermissions(bCheckRevision); +} + +FX_BOOL CPDF_Document::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) const { + auto it = m_IndirectObjs.find(objnum); + if (it != m_IndirectObjs.end()) { + CPDF_Stream* pStream = it->second->AsStream(); + bForm = pStream && pStream->GetDict()->GetStringBy("Subtype") == "Form"; + return TRUE; + } + if (!m_pParser) { + bForm = FALSE; + return TRUE; + } + return m_pParser->IsFormStream(objnum, bForm); +} + +void CPDF_Document::ClearPageData() { + if (m_pDocPage) + CPDF_ModuleMgr::Get()->GetPageModule()->ClearDoc(this); +} + +void CPDF_Document::ClearRenderData() { + if (m_pDocRender) + CPDF_ModuleMgr::Get()->GetRenderModule()->ClearDocData(m_pDocRender); +} + +void CPDF_Document::ClearRenderFont() { + if (!m_pDocRender) + return; + + CFX_FontCache* pCache = m_pDocRender->GetFontCache(); + if (pCache) + pCache->FreeCache(FALSE); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp new file mode 100644 index 0000000000..012b152498 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp @@ -0,0 +1,469 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_parser/cpdf_hint_tables.h" + +#include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fxcrt/fx_safe_types.h" + +namespace { + +bool CanReadFromBitStream(const CFX_BitStream* hStream, + const FX_SAFE_DWORD& num_bits) { + return num_bits.IsValid() && + hStream->BitsRemaining() >= num_bits.ValueOrDie(); +} + +} // namespace + +CPDF_HintTables::~CPDF_HintTables() { + m_dwDeltaNObjsArray.RemoveAll(); + m_dwNSharedObjsArray.RemoveAll(); + m_dwSharedObjNumArray.RemoveAll(); + m_dwIdentifierArray.RemoveAll(); +} + +FX_DWORD CPDF_HintTables::GetItemLength( + int index, + const std::vector& szArray) { + if (index < 0 || szArray.size() < 2 || + static_cast(index) > szArray.size() - 2 || + szArray[index] > szArray[index + 1]) { + return 0; + } + return szArray[index + 1] - szArray[index]; +} + +FX_BOOL CPDF_HintTables::ReadPageHintTable(CFX_BitStream* hStream) { + if (!hStream || hStream->IsEOF()) + return FALSE; + + int nStreamOffset = ReadPrimaryHintStreamOffset(); + int nStreamLen = ReadPrimaryHintStreamLength(); + if (nStreamOffset < 0 || nStreamLen < 1) + return FALSE; + + const FX_DWORD kHeaderSize = 288; + if (hStream->BitsRemaining() < kHeaderSize) + return FALSE; + + // Item 1: The least number of objects in a page. + FX_DWORD dwObjLeastNum = hStream->GetBits(32); + + // Item 2: The location of the first page's page object. + FX_DWORD dwFirstObjLoc = hStream->GetBits(32); + if (dwFirstObjLoc > nStreamOffset) { + FX_SAFE_DWORD safeLoc = pdfium::base::checked_cast(nStreamLen); + safeLoc += dwFirstObjLoc; + if (!safeLoc.IsValid()) + return FALSE; + m_szFirstPageObjOffset = + pdfium::base::checked_cast(safeLoc.ValueOrDie()); + } else { + m_szFirstPageObjOffset = + pdfium::base::checked_cast(dwFirstObjLoc); + } + + // Item 3: The number of bits needed to represent the difference + // between the greatest and least number of objects in a page. + FX_DWORD dwDeltaObjectsBits = hStream->GetBits(16); + + // Item 4: The least length of a page in bytes. + FX_DWORD dwPageLeastLen = hStream->GetBits(32); + + // Item 5: The number of bits needed to represent the difference + // between the greatest and least length of a page, in bytes. + FX_DWORD dwDeltaPageLenBits = hStream->GetBits(16); + + // Skip Item 6, 7, 8, 9 total 96 bits. + hStream->SkipBits(96); + + // Item 10: The number of bits needed to represent the greatest + // number of shared object references. + FX_DWORD dwSharedObjBits = hStream->GetBits(16); + + // Item 11: The number of bits needed to represent the numerically + // greatest shared object identifier used by the pages. + FX_DWORD dwSharedIdBits = hStream->GetBits(16); + + // Item 12: The number of bits needed to represent the numerator of + // the fractional position for each shared object reference. For each + // shared object referenced from a page, there is an indication of + // where in the page's content stream the object is first referenced. + FX_DWORD dwSharedNumeratorBits = hStream->GetBits(16); + + // Item 13: Skip Item 13 which has 16 bits. + hStream->SkipBits(16); + + CPDF_Object* pPageNum = m_pLinearizedDict->GetElementValue("N"); + int nPages = pPageNum ? pPageNum->GetInteger() : 0; + if (nPages < 1) + return FALSE; + + FX_SAFE_DWORD required_bits = dwDeltaObjectsBits; + required_bits *= pdfium::base::checked_cast(nPages); + if (!CanReadFromBitStream(hStream, required_bits)) + return FALSE; + + for (int i = 0; i < nPages; ++i) { + FX_SAFE_DWORD safeDeltaObj = hStream->GetBits(dwDeltaObjectsBits); + safeDeltaObj += dwObjLeastNum; + if (!safeDeltaObj.IsValid()) + return FALSE; + m_dwDeltaNObjsArray.Add(safeDeltaObj.ValueOrDie()); + } + hStream->ByteAlign(); + + required_bits = dwDeltaPageLenBits; + required_bits *= pdfium::base::checked_cast(nPages); + if (!CanReadFromBitStream(hStream, required_bits)) + return FALSE; + + CFX_DWordArray dwPageLenArray; + for (int i = 0; i < nPages; ++i) { + FX_SAFE_DWORD safePageLen = hStream->GetBits(dwDeltaPageLenBits); + safePageLen += dwPageLeastLen; + if (!safePageLen.IsValid()) + return FALSE; + dwPageLenArray.Add(safePageLen.ValueOrDie()); + } + + CPDF_Object* pOffsetE = m_pLinearizedDict->GetElementValue("E"); + int nOffsetE = pOffsetE ? pOffsetE->GetInteger() : -1; + if (nOffsetE < 0) + return FALSE; + + CPDF_Object* pFirstPageNum = m_pLinearizedDict->GetElementValue("P"); + int nFirstPageNum = pFirstPageNum ? pFirstPageNum->GetInteger() : 0; + for (int i = 0; i < nPages; ++i) { + if (i == nFirstPageNum) { + m_szPageOffsetArray.push_back(m_szFirstPageObjOffset); + } else if (i == nFirstPageNum + 1) { + if (i == 1) { + m_szPageOffsetArray.push_back(nOffsetE); + } else { + m_szPageOffsetArray.push_back(m_szPageOffsetArray[i - 2] + + dwPageLenArray[i - 2]); + } + } else { + if (i == 0) { + m_szPageOffsetArray.push_back(nOffsetE); + } else { + m_szPageOffsetArray.push_back(m_szPageOffsetArray[i - 1] + + dwPageLenArray[i - 1]); + } + } + } + + if (nPages > 0) { + m_szPageOffsetArray.push_back(m_szPageOffsetArray[nPages - 1] + + dwPageLenArray[nPages - 1]); + } + hStream->ByteAlign(); + + // Number of shared objects. + required_bits = dwSharedObjBits; + required_bits *= pdfium::base::checked_cast(nPages); + if (!CanReadFromBitStream(hStream, required_bits)) + return FALSE; + + for (int i = 0; i < nPages; i++) + m_dwNSharedObjsArray.Add(hStream->GetBits(dwSharedObjBits)); + hStream->ByteAlign(); + + // Array of identifiers, size = nshared_objects. + for (int i = 0; i < nPages; i++) { + required_bits = dwSharedIdBits; + required_bits *= m_dwNSharedObjsArray[i]; + if (!CanReadFromBitStream(hStream, required_bits)) + return FALSE; + + for (int j = 0; j < m_dwNSharedObjsArray[i]; j++) + m_dwIdentifierArray.Add(hStream->GetBits(dwSharedIdBits)); + } + hStream->ByteAlign(); + + for (int i = 0; i < nPages; i++) { + FX_SAFE_DWORD safeSize = m_dwNSharedObjsArray[i]; + safeSize *= dwSharedNumeratorBits; + if (!CanReadFromBitStream(hStream, safeSize)) + return FALSE; + + hStream->SkipBits(safeSize.ValueOrDie()); + } + hStream->ByteAlign(); + + FX_SAFE_DWORD safeTotalPageLen = pdfium::base::checked_cast(nPages); + safeTotalPageLen *= dwDeltaPageLenBits; + if (!CanReadFromBitStream(hStream, safeTotalPageLen)) + return FALSE; + + hStream->SkipBits(safeTotalPageLen.ValueOrDie()); + hStream->ByteAlign(); + return TRUE; +} + +FX_BOOL CPDF_HintTables::ReadSharedObjHintTable(CFX_BitStream* hStream, + FX_DWORD offset) { + if (!hStream || hStream->IsEOF()) + return FALSE; + + int nStreamOffset = ReadPrimaryHintStreamOffset(); + int nStreamLen = ReadPrimaryHintStreamLength(); + if (nStreamOffset < 0 || nStreamLen < 1) + return FALSE; + + FX_SAFE_DWORD bit_offset = offset; + bit_offset *= 8; + if (!bit_offset.IsValid() || hStream->GetPos() > bit_offset.ValueOrDie()) + return FALSE; + hStream->SkipBits(bit_offset.ValueOrDie() - hStream->GetPos()); + + const FX_DWORD kHeaderSize = 192; + if (hStream->BitsRemaining() < kHeaderSize) + return FALSE; + + // Item 1: The object number of the first object in the shared objects + // section. + FX_DWORD dwFirstSharedObjNum = hStream->GetBits(32); + + // Item 2: The location of the first object in the shared objects section. + FX_DWORD dwFirstSharedObjLoc = hStream->GetBits(32); + if (dwFirstSharedObjLoc > nStreamOffset) + dwFirstSharedObjLoc += nStreamLen; + + // Item 3: The number of shared object entries for the first page. + m_nFirstPageSharedObjs = hStream->GetBits(32); + + // Item 4: The number of shared object entries for the shared objects + // section, including the number of shared object entries for the first page. + FX_DWORD dwSharedObjTotal = hStream->GetBits(32); + + // Item 5: The number of bits needed to represent the greatest number of + // objects in a shared object group. Skipped. + hStream->SkipBits(16); + + // Item 6: The least length of a shared object group in bytes. + FX_DWORD dwGroupLeastLen = hStream->GetBits(32); + + // Item 7: The number of bits needed to represent the difference between the + // greatest and least length of a shared object group, in bytes. + FX_DWORD dwDeltaGroupLen = hStream->GetBits(16); + CPDF_Object* pFirstPageObj = m_pLinearizedDict->GetElementValue("O"); + int nFirstPageObjNum = pFirstPageObj ? pFirstPageObj->GetInteger() : -1; + if (nFirstPageObjNum < 0) + return FALSE; + + FX_DWORD dwPrevObjLen = 0; + FX_DWORD dwCurObjLen = 0; + FX_SAFE_DWORD required_bits = dwSharedObjTotal; + required_bits *= dwDeltaGroupLen; + if (!CanReadFromBitStream(hStream, required_bits)) + return FALSE; + + for (FX_DWORD i = 0; i < dwSharedObjTotal; ++i) { + dwPrevObjLen = dwCurObjLen; + FX_SAFE_DWORD safeObjLen = hStream->GetBits(dwDeltaGroupLen); + safeObjLen += dwGroupLeastLen; + if (!safeObjLen.IsValid()) + return FALSE; + + dwCurObjLen = safeObjLen.ValueOrDie(); + if (i < m_nFirstPageSharedObjs) { + m_dwSharedObjNumArray.Add(nFirstPageObjNum + i); + if (i == 0) + m_szSharedObjOffsetArray.push_back(m_szFirstPageObjOffset); + } else { + FX_SAFE_DWORD safeObjNum = dwFirstSharedObjNum; + safeObjNum += i - m_nFirstPageSharedObjs; + if (!safeObjNum.IsValid()) + return FALSE; + + m_dwSharedObjNumArray.Add(safeObjNum.ValueOrDie()); + if (i == m_nFirstPageSharedObjs) { + m_szSharedObjOffsetArray.push_back( + pdfium::base::checked_cast(dwFirstSharedObjLoc)); + } + } + + if (i != 0 && i != m_nFirstPageSharedObjs) { + FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast(dwPrevObjLen); + safeLoc += m_szSharedObjOffsetArray[i - 1]; + if (!safeLoc.IsValid()) + return FALSE; + + m_szSharedObjOffsetArray.push_back(safeLoc.ValueOrDie()); + } + } + + if (dwSharedObjTotal > 0) { + FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast(dwCurObjLen); + safeLoc += m_szSharedObjOffsetArray[dwSharedObjTotal - 1]; + if (!safeLoc.IsValid()) + return FALSE; + + m_szSharedObjOffsetArray.push_back(safeLoc.ValueOrDie()); + } + + hStream->ByteAlign(); + if (hStream->BitsRemaining() < dwSharedObjTotal) + return FALSE; + + hStream->SkipBits(dwSharedObjTotal); + hStream->ByteAlign(); + return TRUE; +} + +FX_BOOL CPDF_HintTables::GetPagePos(int index, + FX_FILESIZE& szPageStartPos, + FX_FILESIZE& szPageLength, + FX_DWORD& dwObjNum) { + if (!m_pLinearizedDict) + return FALSE; + + szPageStartPos = m_szPageOffsetArray[index]; + szPageLength = GetItemLength(index, m_szPageOffsetArray); + + CPDF_Object* pFirstPageNum = m_pLinearizedDict->GetElementValue("P"); + int nFirstPageNum = pFirstPageNum ? pFirstPageNum->GetInteger() : 0; + + CPDF_Object* pFirstPageObjNum = m_pLinearizedDict->GetElementValue("O"); + if (!pFirstPageObjNum) + return FALSE; + + int nFirstPageObjNum = pFirstPageObjNum->GetInteger(); + if (index == nFirstPageNum) { + dwObjNum = nFirstPageObjNum; + return TRUE; + } + + // The object number of remaining pages starts from 1. + dwObjNum = 1; + for (int i = 0; i < index; ++i) { + if (i == nFirstPageNum) + continue; + dwObjNum += m_dwDeltaNObjsArray[i]; + } + return TRUE; +} + +IPDF_DataAvail::DocAvailStatus CPDF_HintTables::CheckPage( + int index, + IPDF_DataAvail::DownloadHints* pHints) { + if (!m_pLinearizedDict || !pHints) + return IPDF_DataAvail::DataError; + + CPDF_Object* pFirstAvailPage = m_pLinearizedDict->GetElementValue("P"); + int nFirstAvailPage = pFirstAvailPage ? pFirstAvailPage->GetInteger() : 0; + if (index == nFirstAvailPage) + return IPDF_DataAvail::DataAvailable; + + FX_DWORD dwLength = GetItemLength(index, m_szPageOffsetArray); + // If two pages have the same offset, it should be treated as an error. + if (!dwLength) + return IPDF_DataAvail::DataError; + + if (!m_pDataAvail->IsDataAvail(m_szPageOffsetArray[index], dwLength, pHints)) + return IPDF_DataAvail::DataNotAvailable; + + // Download data of shared objects in the page. + FX_DWORD offset = 0; + for (int i = 0; i < index; ++i) + offset += m_dwNSharedObjsArray[i]; + + CPDF_Object* pFirstPageObj = m_pLinearizedDict->GetElementValue("O"); + int nFirstPageObjNum = pFirstPageObj ? pFirstPageObj->GetInteger() : -1; + if (nFirstPageObjNum < 0) + return IPDF_DataAvail::DataError; + + FX_DWORD dwIndex = 0; + FX_DWORD dwObjNum = 0; + for (int j = 0; j < m_dwNSharedObjsArray[index]; ++j) { + dwIndex = m_dwIdentifierArray[offset + j]; + if (dwIndex >= m_dwSharedObjNumArray.GetSize()) + return IPDF_DataAvail::DataNotAvailable; + + dwObjNum = m_dwSharedObjNumArray[dwIndex]; + if (dwObjNum >= nFirstPageObjNum && + dwObjNum < nFirstPageObjNum + m_nFirstPageSharedObjs) { + continue; + } + + dwLength = GetItemLength(dwIndex, m_szSharedObjOffsetArray); + // If two objects have the same offset, it should be treated as an error. + if (!dwLength) + return IPDF_DataAvail::DataError; + + if (!m_pDataAvail->IsDataAvail(m_szSharedObjOffsetArray[dwIndex], dwLength, + pHints)) { + return IPDF_DataAvail::DataNotAvailable; + } + } + return IPDF_DataAvail::DataAvailable; +} + +FX_BOOL CPDF_HintTables::LoadHintStream(CPDF_Stream* pHintStream) { + if (!pHintStream || !m_pLinearizedDict) + return FALSE; + + CPDF_Dictionary* pDict = pHintStream->GetDict(); + CPDF_Object* pOffset = pDict ? pDict->GetElement("S") : nullptr; + if (!pOffset || !pOffset->IsNumber()) + return FALSE; + + int shared_hint_table_offset = pOffset->GetInteger(); + CPDF_StreamAcc acc; + acc.LoadAllData(pHintStream); + + FX_DWORD size = acc.GetSize(); + // The header section of page offset hint table is 36 bytes. + // The header section of shared object hint table is 24 bytes. + // Hint table has at least 60 bytes. + const FX_DWORD MIN_STREAM_LEN = 60; + if (size < MIN_STREAM_LEN || shared_hint_table_offset <= 0 || + size < shared_hint_table_offset) { + return FALSE; + } + + CFX_BitStream bs; + bs.Init(acc.GetData(), size); + return ReadPageHintTable(&bs) && + ReadSharedObjHintTable(&bs, pdfium::base::checked_cast( + shared_hint_table_offset)); +} + +int CPDF_HintTables::ReadPrimaryHintStreamOffset() const { + if (!m_pLinearizedDict) + return -1; + + CPDF_Array* pRange = m_pLinearizedDict->GetArrayBy("H"); + if (!pRange) + return -1; + + CPDF_Object* pStreamOffset = pRange->GetElementValue(0); + if (!pStreamOffset) + return -1; + + return pStreamOffset->GetInteger(); +} + +int CPDF_HintTables::ReadPrimaryHintStreamLength() const { + if (!m_pLinearizedDict) + return -1; + + CPDF_Array* pRange = m_pLinearizedDict->GetArrayBy("H"); + if (!pRange) + return -1; + + CPDF_Object* pStreamLen = pRange->GetElementValue(1); + if (!pStreamLen) + return -1; + + return pStreamLen->GetInteger(); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_hint_tables.h b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.h new file mode 100644 index 0000000000..a9a89b48bf --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.h @@ -0,0 +1,62 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_ +#define CORE_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_ + +#include + +#include "core/include/fpdfapi/ipdf_data_avail.h" +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_stream.h" + +class CFX_BitStream; +class CPDF_DataAvail; +class CPDF_Dictionary; +class CPDF_Stream; + +class CPDF_HintTables { + public: + CPDF_HintTables(CPDF_DataAvail* pDataAvail, CPDF_Dictionary* pLinearized) + : m_pLinearizedDict(pLinearized), + m_pDataAvail(pDataAvail), + m_nFirstPageSharedObjs(0), + m_szFirstPageObjOffset(0) {} + ~CPDF_HintTables(); + + FX_BOOL GetPagePos(int index, + FX_FILESIZE& szPageStartPos, + FX_FILESIZE& szPageLength, + FX_DWORD& dwObjNum); + + IPDF_DataAvail::DocAvailStatus CheckPage( + int index, + IPDF_DataAvail::DownloadHints* pHints); + + FX_BOOL LoadHintStream(CPDF_Stream* pHintStream); + + protected: + FX_BOOL ReadPageHintTable(CFX_BitStream* hStream); + FX_BOOL ReadSharedObjHintTable(CFX_BitStream* hStream, FX_DWORD offset); + FX_DWORD GetItemLength(int index, const std::vector& szArray); + + private: + int ReadPrimaryHintStreamOffset() const; + int ReadPrimaryHintStreamLength() const; + + CPDF_Dictionary* m_pLinearizedDict; + CPDF_DataAvail* m_pDataAvail; + FX_DWORD m_nFirstPageSharedObjs; + FX_FILESIZE m_szFirstPageObjOffset; + CFX_DWordArray m_dwDeltaNObjsArray; + CFX_DWordArray m_dwNSharedObjsArray; + CFX_DWordArray m_dwSharedObjNumArray; + CFX_DWordArray m_dwIdentifierArray; + std::vector m_szPageOffsetArray; + std::vector m_szSharedObjOffsetArray; +}; + +#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_ diff --git a/core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp b/core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp new file mode 100644 index 0000000000..b1606f9857 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp @@ -0,0 +1,80 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" +#include "core/include/fpdfapi/cpdf_object.h" +#include "core/include/fpdfapi/cpdf_parser.h" + +CPDF_IndirectObjectHolder::CPDF_IndirectObjectHolder(CPDF_Parser* pParser) + : m_pParser(pParser), m_LastObjNum(0) { + if (pParser) + m_LastObjNum = m_pParser->GetLastObjNum(); +} + +CPDF_IndirectObjectHolder::~CPDF_IndirectObjectHolder() { + for (const auto& pair : m_IndirectObjs) + pair.second->Destroy(); +} + +CPDF_Object* CPDF_IndirectObjectHolder::GetIndirectObject(FX_DWORD objnum) { + if (objnum == 0) + return nullptr; + + auto it = m_IndirectObjs.find(objnum); + if (it != m_IndirectObjs.end()) + return it->second->GetObjNum() != -1 ? it->second : nullptr; + + if (!m_pParser) + return nullptr; + + CPDF_Object* pObj = m_pParser->ParseIndirectObject(this, objnum); + if (!pObj) + return nullptr; + + pObj->m_ObjNum = objnum; + m_LastObjNum = std::max(m_LastObjNum, objnum); + if (m_IndirectObjs[objnum]) + m_IndirectObjs[objnum]->Destroy(); + + m_IndirectObjs[objnum] = pObj; + return pObj; +} + +FX_DWORD CPDF_IndirectObjectHolder::AddIndirectObject(CPDF_Object* pObj) { + if (pObj->m_ObjNum) + return pObj->m_ObjNum; + + m_LastObjNum++; + m_IndirectObjs[m_LastObjNum] = pObj; + pObj->m_ObjNum = m_LastObjNum; + return m_LastObjNum; +} + +void CPDF_IndirectObjectHolder::ReleaseIndirectObject(FX_DWORD objnum) { + auto it = m_IndirectObjs.find(objnum); + if (it == m_IndirectObjs.end() || it->second->GetObjNum() == -1) + return; + it->second->Destroy(); + m_IndirectObjs.erase(it); +} + +FX_BOOL CPDF_IndirectObjectHolder::InsertIndirectObject(FX_DWORD objnum, + CPDF_Object* pObj) { + if (!objnum || !pObj) + return FALSE; + auto it = m_IndirectObjs.find(objnum); + if (it != m_IndirectObjs.end()) { + if (pObj->GetGenNum() <= it->second->GetGenNum()) { + pObj->Destroy(); + return FALSE; + } + it->second->Destroy(); + } + pObj->m_ObjNum = objnum; + m_IndirectObjs[objnum] = pObj; + m_LastObjNum = std::max(m_LastObjNum, objnum); + return TRUE; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_name.cpp b/core/fpdfapi/fpdf_parser/cpdf_name.cpp new file mode 100644 index 0000000000..03d523db19 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_name.cpp @@ -0,0 +1,53 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_name.h" + +#include "core/include/fpdfapi/fpdf_parser_decode.h" + +CPDF_Name::CPDF_Name(const CFX_ByteString& str) : m_Name(str) {} + +CPDF_Name::CPDF_Name(const CFX_ByteStringC& str) : m_Name(str) {} + +CPDF_Name::CPDF_Name(const FX_CHAR* str) : m_Name(str) {} + +CPDF_Name::~CPDF_Name() {} + +CPDF_Object::Type CPDF_Name::GetType() const { + return NAME; +} + +CPDF_Object* CPDF_Name::Clone(FX_BOOL bDirect) const { + return new CPDF_Name(m_Name); +} + +CFX_ByteString CPDF_Name::GetString() const { + return m_Name; +} + +CFX_ByteStringC CPDF_Name::GetConstString() const { + return CFX_ByteStringC(m_Name); +} + +void CPDF_Name::SetString(const CFX_ByteString& str) { + m_Name = str; +} + +bool CPDF_Name::IsName() const { + return true; +} + +CPDF_Name* CPDF_Name::AsName() { + return this; +} + +const CPDF_Name* CPDF_Name::AsName() const { + return this; +} + +CFX_WideString CPDF_Name::GetUnicodeText() const { + return PDF_DecodeText(m_Name); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_null.cpp b/core/fpdfapi/fpdf_parser/cpdf_null.cpp new file mode 100644 index 0000000000..c18449d08f --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_null.cpp @@ -0,0 +1,17 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_null.h" + +CPDF_Null::CPDF_Null() {} + +CPDF_Object::Type CPDF_Null::GetType() const { + return NULLOBJ; +} + +CPDF_Object* CPDF_Null::Clone(FX_BOOL bDirect) const { + return new CPDF_Null; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_number.cpp b/core/fpdfapi/fpdf_parser/cpdf_number.cpp new file mode 100644 index 0000000000..ddc7aa11a2 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_number.cpp @@ -0,0 +1,56 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_number.h" + +CPDF_Number::CPDF_Number() : m_bInteger(TRUE), m_Integer(0) {} + +CPDF_Number::CPDF_Number(int value) : m_bInteger(TRUE), m_Integer(value) {} + +CPDF_Number::CPDF_Number(FX_FLOAT value) : m_bInteger(FALSE), m_Float(value) {} + +CPDF_Number::CPDF_Number(const CFX_ByteStringC& str) { + FX_atonum(str, m_bInteger, &m_Integer); +} + +CPDF_Number::~CPDF_Number() {} + +CPDF_Object::Type CPDF_Number::GetType() const { + return NUMBER; +} + +CPDF_Object* CPDF_Number::Clone(FX_BOOL bDirect) const { + return m_bInteger ? new CPDF_Number(m_Integer) : new CPDF_Number(m_Float); +} + +FX_FLOAT CPDF_Number::GetNumber() const { + return m_bInteger ? static_cast(m_Integer) : m_Float; +} + +int CPDF_Number::GetInteger() const { + return m_bInteger ? m_Integer : static_cast(m_Float); +} + +bool CPDF_Number::IsNumber() const { + return true; +} + +CPDF_Number* CPDF_Number::AsNumber() { + return this; +} + +const CPDF_Number* CPDF_Number::AsNumber() const { + return this; +} + +void CPDF_Number::SetString(const CFX_ByteString& str) { + FX_atonum(str, m_bInteger, &m_Integer); +} + +CFX_ByteString CPDF_Number::GetString() const { + return m_bInteger ? CFX_ByteString::FormatInteger(m_Integer, FXFORMAT_SIGNED) + : CFX_ByteString::FormatFloat(m_Float); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_object.cpp b/core/fpdfapi/fpdf_parser/cpdf_object.cpp new file mode 100644 index 0000000000..208bca8e6c --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_object.cpp @@ -0,0 +1,158 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_object.h" + +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fxcrt/fx_string.h" +#include "third_party/base/stl_util.h" + +CPDF_Object::~CPDF_Object() {} + +CPDF_Object* CPDF_Object::GetDirect() const { + return const_cast(this); +} + +void CPDF_Object::Release() { + if (m_ObjNum) + return; + + Destroy(); +} + +CFX_ByteString CPDF_Object::GetString() const { + return CFX_ByteString(); +} + +CFX_ByteStringC CPDF_Object::GetConstString() const { + return CFX_ByteStringC(); +} + +CFX_WideString CPDF_Object::GetUnicodeText() const { + return CFX_WideString(); +} + +FX_FLOAT CPDF_Object::GetNumber() const { + return 0; +} + +int CPDF_Object::GetInteger() const { + return 0; +} + +CPDF_Dictionary* CPDF_Object::GetDict() const { + return nullptr; +} + +CPDF_Array* CPDF_Object::GetArray() const { + return nullptr; +} + +void CPDF_Object::SetString(const CFX_ByteString& str) { + ASSERT(FALSE); +} + +bool CPDF_Object::IsArray() const { + return false; +} + +bool CPDF_Object::IsBoolean() const { + return false; +} + +bool CPDF_Object::IsDictionary() const { + return false; +} + +bool CPDF_Object::IsName() const { + return false; +} + +bool CPDF_Object::IsNumber() const { + return false; +} + +bool CPDF_Object::IsReference() const { + return false; +} + +bool CPDF_Object::IsStream() const { + return false; +} + +bool CPDF_Object::IsString() const { + return false; +} + +CPDF_Array* CPDF_Object::AsArray() { + return nullptr; +} + +const CPDF_Array* CPDF_Object::AsArray() const { + return nullptr; +} + +CPDF_Boolean* CPDF_Object::AsBoolean() { + return nullptr; +} + +const CPDF_Boolean* CPDF_Object::AsBoolean() const { + return nullptr; +} + +CPDF_Dictionary* CPDF_Object::AsDictionary() { + return nullptr; +} + +const CPDF_Dictionary* CPDF_Object::AsDictionary() const { + return nullptr; +} + +CPDF_Name* CPDF_Object::AsName() { + return nullptr; +} + +const CPDF_Name* CPDF_Object::AsName() const { + return nullptr; +} + +CPDF_Number* CPDF_Object::AsNumber() { + return nullptr; +} + +const CPDF_Number* CPDF_Object::AsNumber() const { + return nullptr; +} + +CPDF_Reference* CPDF_Object::AsReference() { + return nullptr; +} + +const CPDF_Reference* CPDF_Object::AsReference() const { + return nullptr; +} + +CPDF_Stream* CPDF_Object::AsStream() { + return nullptr; +} + +const CPDF_Stream* CPDF_Object::AsStream() const { + return nullptr; +} + +CPDF_String* CPDF_Object::AsString() { + return nullptr; +} + +const CPDF_String* CPDF_Object::AsString() const { + return nullptr; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp new file mode 100644 index 0000000000..971bdaf20e --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp @@ -0,0 +1,776 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_boolean.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_null.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fpdfapi/cpdf_string.h" + +#include +#include +#include + +#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" +#include "core/include/fxcrt/fx_basic.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +using ScopedArray = std::unique_ptr>; + +void TestArrayAccessors(const CPDF_Array* arr, + size_t index, + const char* str_val, + const char* const_str_val, + int int_val, + float float_val, + CPDF_Array* arr_val, + CPDF_Dictionary* dict_val, + CPDF_Stream* stream_val) { + EXPECT_STREQ(str_val, arr->GetStringAt(index).c_str()); + EXPECT_STREQ(const_str_val, arr->GetConstStringAt(index).GetCStr()); + EXPECT_EQ(int_val, arr->GetIntegerAt(index)); + EXPECT_EQ(float_val, arr->GetNumberAt(index)); + EXPECT_EQ(float_val, arr->GetFloatAt(index)); + EXPECT_EQ(arr_val, arr->GetArrayAt(index)); + EXPECT_EQ(dict_val, arr->GetDictAt(index)); + EXPECT_EQ(stream_val, arr->GetStreamAt(index)); +} + +} // namespace + +class PDFObjectsTest : public testing::Test { + public: + void SetUp() override { + // Initialize different kinds of objects. + // Boolean objects. + CPDF_Boolean* boolean_false_obj = new CPDF_Boolean(false); + CPDF_Boolean* boolean_true_obj = new CPDF_Boolean(true); + // Number objects. + CPDF_Number* number_int_obj = new CPDF_Number(1245); + CPDF_Number* number_float_obj = new CPDF_Number(9.00345f); + // String objects. + CPDF_String* str_reg_obj = new CPDF_String(L"A simple test"); + CPDF_String* str_spec_obj = new CPDF_String(L"\t\n"); + // Name object. + CPDF_Name* name_obj = new CPDF_Name("space"); + // Array object. + m_ArrayObj = new CPDF_Array; + m_ArrayObj->InsertAt(0, new CPDF_Number(8902)); + m_ArrayObj->InsertAt(1, new CPDF_Name("address")); + // Dictionary object. + m_DictObj = new CPDF_Dictionary; + m_DictObj->SetAt("bool", new CPDF_Boolean(false)); + m_DictObj->SetAt("num", new CPDF_Number(0.23f)); + // Stream object. + const char content[] = "abcdefghijklmnopqrstuvwxyz"; + size_t buf_len = FX_ArraySize(content); + uint8_t* buf = reinterpret_cast(malloc(buf_len)); + memcpy(buf, content, buf_len); + m_StreamDictObj = new CPDF_Dictionary; + m_StreamDictObj->SetAt("key1", new CPDF_String(L" test dict")); + m_StreamDictObj->SetAt("key2", new CPDF_Number(-1)); + CPDF_Stream* stream_obj = new CPDF_Stream(buf, buf_len, m_StreamDictObj); + // Null Object. + CPDF_Null* null_obj = new CPDF_Null; + // All direct objects. + CPDF_Object* objs[] = {boolean_false_obj, boolean_true_obj, number_int_obj, + number_float_obj, str_reg_obj, str_spec_obj, + name_obj, m_ArrayObj, m_DictObj, + stream_obj, null_obj}; + m_DirectObjTypes = { + CPDF_Object::BOOLEAN, CPDF_Object::BOOLEAN, CPDF_Object::NUMBER, + CPDF_Object::NUMBER, CPDF_Object::STRING, CPDF_Object::STRING, + CPDF_Object::NAME, CPDF_Object::ARRAY, CPDF_Object::DICTIONARY, + CPDF_Object::STREAM, CPDF_Object::NULLOBJ}; + for (size_t i = 0; i < FX_ArraySize(objs); ++i) + m_DirectObjs.emplace_back(objs[i]); + + // Indirect references to indirect objects. + m_ObjHolder.reset(new CPDF_IndirectObjectHolder(nullptr)); + m_IndirectObjs = {boolean_true_obj, number_int_obj, str_spec_obj, name_obj, + m_ArrayObj, m_DictObj, stream_obj}; + for (size_t i = 0; i < m_IndirectObjs.size(); ++i) { + m_ObjHolder->AddIndirectObject(m_IndirectObjs[i]); + m_RefObjs.emplace_back(new CPDF_Reference( + m_ObjHolder.get(), m_IndirectObjs[i]->GetObjNum())); + } + } + + bool Equal(CPDF_Object* obj1, CPDF_Object* obj2) { + if (obj1 == obj2) + return true; + if (!obj1 || !obj2 || obj1->GetType() != obj2->GetType()) + return false; + switch (obj1->GetType()) { + case CPDF_Object::BOOLEAN: + return obj1->GetInteger() == obj2->GetInteger(); + case CPDF_Object::NUMBER: + return obj1->AsNumber()->IsInteger() == obj2->AsNumber()->IsInteger() && + obj1->GetInteger() == obj2->GetInteger(); + case CPDF_Object::STRING: + case CPDF_Object::NAME: + return obj1->GetString() == obj2->GetString(); + case CPDF_Object::ARRAY: { + const CPDF_Array* array1 = obj1->AsArray(); + const CPDF_Array* array2 = obj2->AsArray(); + if (array1->GetCount() != array2->GetCount()) + return false; + for (size_t i = 0; i < array1->GetCount(); ++i) { + if (!Equal(array1->GetElement(i), array2->GetElement(i))) + return false; + } + return true; + } + case CPDF_Object::DICTIONARY: { + const CPDF_Dictionary* dict1 = obj1->AsDictionary(); + const CPDF_Dictionary* dict2 = obj2->AsDictionary(); + if (dict1->GetCount() != dict2->GetCount()) + return false; + for (CPDF_Dictionary::const_iterator it = dict1->begin(); + it != dict1->end(); ++it) { + if (!Equal(it->second, dict2->GetElement(it->first))) + return false; + } + return true; + } + case CPDF_Object::NULLOBJ: + return true; + case CPDF_Object::STREAM: { + const CPDF_Stream* stream1 = obj1->AsStream(); + const CPDF_Stream* stream2 = obj2->AsStream(); + if (!stream1->GetDict() && !stream2->GetDict()) + return true; + // Compare dictionaries. + if (!Equal(stream1->GetDict(), stream2->GetDict())) + return false; + // Compare sizes. + if (stream1->GetRawSize() != stream2->GetRawSize()) + return false; + // Compare contents. + // Since this function is used for testing Clone(), only memory based + // streams need to be handled. + if (!stream1->IsMemoryBased() || !stream2->IsMemoryBased()) + return false; + return FXSYS_memcmp(stream1->GetRawData(), stream2->GetRawData(), + stream1->GetRawSize()) == 0; + } + case CPDF_Object::REFERENCE: + return obj1->AsReference()->GetRefObjNum() == + obj2->AsReference()->GetRefObjNum(); + } + return false; + } + + protected: + using ScopedObj = std::unique_ptr>; + + // m_ObjHolder needs to be declared first and destructed last since it also + // refers to some objects in m_DirectObjs. + std::unique_ptr m_ObjHolder; + std::vector m_DirectObjs; + std::vector m_DirectObjTypes; + std::vector m_RefObjs; + CPDF_Dictionary* m_DictObj; + CPDF_Dictionary* m_StreamDictObj; + CPDF_Array* m_ArrayObj; + std::vector m_IndirectObjs; +}; + +TEST_F(PDFObjectsTest, GetString) { + const char* direct_obj_results[] = { + "false", "true", "1245", "9.00345", "A simple test", "\t\n", "space", + "", "", "", ""}; + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_STREQ(direct_obj_results[i], m_DirectObjs[i]->GetString().c_str()); + + // Check indirect references. + const char* indirect_obj_results[] = {"true", "1245", "\t\n", "space", + "", "", ""}; + for (size_t i = 0; i < m_RefObjs.size(); ++i) { + EXPECT_STREQ(indirect_obj_results[i], m_RefObjs[i]->GetString().c_str()); + } +} + +TEST_F(PDFObjectsTest, GetConstString) { + const char* direct_obj_results[] = { + nullptr, nullptr, nullptr, nullptr, "A simple test", "\t\n", + "space", nullptr, nullptr, nullptr, nullptr}; + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) { + if (!direct_obj_results[i]) { + EXPECT_EQ(direct_obj_results[i], + m_DirectObjs[i]->GetConstString().GetCStr()); + } else { + EXPECT_STREQ(direct_obj_results[i], + m_DirectObjs[i]->GetConstString().GetCStr()); + } + } + // Check indirect references. + const char* indirect_obj_results[] = {nullptr, nullptr, "\t\n", "space", + nullptr, nullptr, nullptr}; + for (size_t i = 0; i < m_RefObjs.size(); ++i) { + if (!indirect_obj_results[i]) { + EXPECT_EQ(nullptr, m_RefObjs[i]->GetConstString().GetCStr()); + } else { + EXPECT_STREQ(indirect_obj_results[i], + m_RefObjs[i]->GetConstString().GetCStr()); + } + } +} + +TEST_F(PDFObjectsTest, GetUnicodeText) { + const wchar_t* direct_obj_results[] = { + L"", L"", L"", L"", L"A simple test", + L"\t\n", L"space", L"", L"", L"abcdefghijklmnopqrstuvwxyz", + L""}; + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_STREQ(direct_obj_results[i], + m_DirectObjs[i]->GetUnicodeText().c_str()); + + // Check indirect references. + for (const auto& it : m_RefObjs) + EXPECT_STREQ(L"", it->GetUnicodeText().c_str()); +} + +TEST_F(PDFObjectsTest, GetNumber) { + const FX_FLOAT direct_obj_results[] = {0, 0, 1245, 9.00345f, 0, 0, + 0, 0, 0, 0, 0}; + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetNumber()); + + // Check indirect references. + const FX_FLOAT indirect_obj_results[] = {0, 1245, 0, 0, 0, 0, 0}; + for (size_t i = 0; i < m_RefObjs.size(); ++i) + EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetNumber()); +} + +TEST_F(PDFObjectsTest, GetInteger) { + const int direct_obj_results[] = {0, 1, 1245, 9, 0, 0, 0, 0, 0, 0, 0}; + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetInteger()); + + // Check indirect references. + const int indirect_obj_results[] = {1, 1245, 0, 0, 0, 0, 0}; + for (size_t i = 0; i < m_RefObjs.size(); ++i) + EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetInteger()); +} + +TEST_F(PDFObjectsTest, GetDict) { + const CPDF_Dictionary* direct_obj_results[] = { + nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, + nullptr, nullptr, m_DictObj, m_StreamDictObj, nullptr}; + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetDict()); + + // Check indirect references. + const CPDF_Dictionary* indirect_obj_results[] = { + nullptr, nullptr, nullptr, nullptr, nullptr, m_DictObj, m_StreamDictObj}; + for (size_t i = 0; i < m_RefObjs.size(); ++i) + EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetDict()); +} + +TEST_F(PDFObjectsTest, GetArray) { + const CPDF_Array* direct_obj_results[] = { + nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, + nullptr, m_ArrayObj, nullptr, nullptr, nullptr}; + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetArray()); + + // Check indirect references. + for (const auto& it : m_RefObjs) + EXPECT_EQ(nullptr, it->GetArray()); +} + +TEST_F(PDFObjectsTest, Clone) { + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) { + ScopedObj obj(m_DirectObjs[i]->Clone()); + EXPECT_TRUE(Equal(m_DirectObjs[i].get(), obj.get())); + } + + // Check indirect references. + for (const auto& it : m_RefObjs) { + ScopedObj obj(it->Clone()); + EXPECT_TRUE(Equal(it.get(), obj.get())); + } +} + +TEST_F(PDFObjectsTest, GetType) { + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_EQ(m_DirectObjTypes[i], m_DirectObjs[i]->GetType()); + + // Check indirect references. + for (const auto& it : m_RefObjs) + EXPECT_EQ(CPDF_Object::REFERENCE, it->GetType()); +} + +TEST_F(PDFObjectsTest, GetDirect) { + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->GetDirect()); + + // Check indirect references. + for (size_t i = 0; i < m_RefObjs.size(); ++i) + EXPECT_EQ(m_IndirectObjs[i], m_RefObjs[i]->GetDirect()); +} + +TEST_F(PDFObjectsTest, SetString) { + // Check for direct objects. + const char* const set_values[] = {"true", "fake", "3.125f", "097", + "changed", "", "NewName"}; + const char* expected[] = {"true", "false", "3.125", "97", + "changed", "", "NewName"}; + for (size_t i = 0; i < FX_ArraySize(set_values); ++i) { + m_DirectObjs[i]->SetString(set_values[i]); + EXPECT_STREQ(expected[i], m_DirectObjs[i]->GetString().c_str()); + } +} + +TEST_F(PDFObjectsTest, IsTypeAndAsType) { + // Check for direct objects. + for (size_t i = 0; i < m_DirectObjs.size(); ++i) { + if (m_DirectObjTypes[i] == CPDF_Object::ARRAY) { + EXPECT_TRUE(m_DirectObjs[i]->IsArray()); + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsArray()); + } else { + EXPECT_FALSE(m_DirectObjs[i]->IsArray()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsArray()); + } + + if (m_DirectObjTypes[i] == CPDF_Object::BOOLEAN) { + EXPECT_TRUE(m_DirectObjs[i]->IsBoolean()); + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsBoolean()); + } else { + EXPECT_FALSE(m_DirectObjs[i]->IsBoolean()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsBoolean()); + } + + if (m_DirectObjTypes[i] == CPDF_Object::NAME) { + EXPECT_TRUE(m_DirectObjs[i]->IsName()); + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsName()); + } else { + EXPECT_FALSE(m_DirectObjs[i]->IsName()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsName()); + } + + if (m_DirectObjTypes[i] == CPDF_Object::NUMBER) { + EXPECT_TRUE(m_DirectObjs[i]->IsNumber()); + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsNumber()); + } else { + EXPECT_FALSE(m_DirectObjs[i]->IsNumber()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsNumber()); + } + + if (m_DirectObjTypes[i] == CPDF_Object::STRING) { + EXPECT_TRUE(m_DirectObjs[i]->IsString()); + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsString()); + } else { + EXPECT_FALSE(m_DirectObjs[i]->IsString()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsString()); + } + + if (m_DirectObjTypes[i] == CPDF_Object::DICTIONARY) { + EXPECT_TRUE(m_DirectObjs[i]->IsDictionary()); + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsDictionary()); + } else { + EXPECT_FALSE(m_DirectObjs[i]->IsDictionary()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsDictionary()); + } + + if (m_DirectObjTypes[i] == CPDF_Object::STREAM) { + EXPECT_TRUE(m_DirectObjs[i]->IsStream()); + EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsStream()); + } else { + EXPECT_FALSE(m_DirectObjs[i]->IsStream()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsStream()); + } + + EXPECT_FALSE(m_DirectObjs[i]->IsReference()); + EXPECT_EQ(nullptr, m_DirectObjs[i]->AsReference()); + } + // Check indirect references. + for (size_t i = 0; i < m_RefObjs.size(); ++i) { + EXPECT_TRUE(m_RefObjs[i]->IsReference()); + EXPECT_EQ(m_RefObjs[i].get(), m_RefObjs[i]->AsReference()); + } +} + +TEST(PDFArrayTest, GetMatrix) { + float elems[][6] = {{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, + {1, 2, 3, 4, 5, 6}, + {2.3f, 4.05f, 3, -2, -3, 0.0f}, + {0.05f, 0.1f, 0.56f, 0.67f, 1.34f, 99.9f}}; + for (size_t i = 0; i < FX_ArraySize(elems); ++i) { + ScopedArray arr(new CPDF_Array); + CFX_Matrix matrix(elems[i][0], elems[i][1], elems[i][2], elems[i][3], + elems[i][4], elems[i][5]); + for (size_t j = 0; j < 6; ++j) + arr->AddNumber(elems[i][j]); + CFX_Matrix arr_matrix = arr->GetMatrix(); + EXPECT_EQ(matrix.GetA(), arr_matrix.GetA()); + EXPECT_EQ(matrix.GetB(), arr_matrix.GetB()); + EXPECT_EQ(matrix.GetC(), arr_matrix.GetC()); + EXPECT_EQ(matrix.GetD(), arr_matrix.GetD()); + EXPECT_EQ(matrix.GetE(), arr_matrix.GetE()); + EXPECT_EQ(matrix.GetF(), arr_matrix.GetF()); + } +} + +TEST(PDFArrayTest, GetRect) { + float elems[][4] = {{0.0f, 0.0f, 0.0f, 0.0f}, + {1, 2, 5, 6}, + {2.3f, 4.05f, -3, 0.0f}, + {0.05f, 0.1f, 1.34f, 99.9f}}; + for (size_t i = 0; i < FX_ArraySize(elems); ++i) { + ScopedArray arr(new CPDF_Array); + CFX_FloatRect rect(elems[i]); + for (size_t j = 0; j < 4; ++j) + arr->AddNumber(elems[i][j]); + CFX_FloatRect arr_rect = arr->GetRect(); + EXPECT_EQ(rect.left, arr_rect.left); + EXPECT_EQ(rect.right, arr_rect.right); + EXPECT_EQ(rect.bottom, arr_rect.bottom); + EXPECT_EQ(rect.top, arr_rect.top); + } +} + +TEST(PDFArrayTest, GetTypeAt) { + { + // Boolean array. + bool vals[] = {true, false, false, true, true}; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) + arr->InsertAt(i, new CPDF_Boolean(vals[i])); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + TestArrayAccessors(arr.get(), i, // Array and index. + vals[i] ? "true" : "false", // String value. + nullptr, // Const string value. + vals[i] ? 1 : 0, // Integer value. + 0, // Float value. + nullptr, // Array value. + nullptr, // Dictionary value. + nullptr); // Stream value. + } + } + { + // Integer array. + int vals[] = {10, 0, -345, 2089345456, -1000000000, 567, 93658767}; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) + arr->InsertAt(i, new CPDF_Number(vals[i])); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + char buf[33]; + TestArrayAccessors(arr.get(), i, // Array and index. + FXSYS_itoa(vals[i], buf, 10), // String value. + nullptr, // Const string value. + vals[i], // Integer value. + vals[i], // Float value. + nullptr, // Array value. + nullptr, // Dictionary value. + nullptr); // Stream value. + } + } + { + // Float array. + float vals[] = {0.0f, 0, 10, 10.0f, 0.0345f, + 897.34f, -2.5f, -1.0f, -345.0f, -0.0f}; + const char* expected_str[] = {"0", "0", "10", "10", "0.0345", + "897.34", "-2.5", "-1", "-345", "0"}; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + arr->InsertAt(i, new CPDF_Number(vals[i])); + } + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + TestArrayAccessors(arr.get(), i, // Array and index. + expected_str[i], // String value. + nullptr, // Const string value. + vals[i], // Integer value. + vals[i], // Float value. + nullptr, // Array value. + nullptr, // Dictionary value. + nullptr); // Stream value. + } + } + { + // String and name array + const char* const vals[] = {"this", "adsde$%^", "\r\t", "\"012", + ".", "EYREW", "It is a joke :)"}; + ScopedArray string_array(new CPDF_Array); + ScopedArray name_array(new CPDF_Array); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + string_array->InsertAt(i, new CPDF_String(vals[i], false)); + name_array->InsertAt(i, new CPDF_Name(vals[i])); + } + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + TestArrayAccessors(string_array.get(), i, // Array and index. + vals[i], // String value. + vals[i], // Const string value. + 0, // Integer value. + 0, // Float value. + nullptr, // Array value. + nullptr, // Dictionary value. + nullptr); // Stream value. + TestArrayAccessors(name_array.get(), i, // Array and index. + vals[i], // String value. + vals[i], // Const string value. + 0, // Integer value. + 0, // Float value. + nullptr, // Array value. + nullptr, // Dictionary value. + nullptr); // Stream value. + } + } + { + // Null element array. + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < 3; ++i) + arr->InsertAt(i, new CPDF_Null); + for (size_t i = 0; i < 3; ++i) { + TestArrayAccessors(arr.get(), i, // Array and index. + "", // String value. + nullptr, // Const string value. + 0, // Integer value. + 0, // Float value. + nullptr, // Array value. + nullptr, // Dictionary value. + nullptr); // Stream value. + } + } + { + // Array of array. + CPDF_Array* vals[3]; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < 3; ++i) { + vals[i] = new CPDF_Array; + for (size_t j = 0; j < 3; ++j) { + int value = j + 100; + vals[i]->InsertAt(i, new CPDF_Number(value)); + } + arr->InsertAt(i, vals[i]); + } + for (size_t i = 0; i < 3; ++i) { + TestArrayAccessors(arr.get(), i, // Array and index. + "", // String value. + nullptr, // Const string value. + 0, // Integer value. + 0, // Float value. + vals[i], // Array value. + nullptr, // Dictionary value. + nullptr); // Stream value. + } + } + { + // Dictionary array. + CPDF_Dictionary* vals[3]; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < 3; ++i) { + vals[i] = new CPDF_Dictionary; + for (size_t j = 0; j < 3; ++j) { + std::string key("key"); + char buf[33]; + key.append(FXSYS_itoa(j, buf, 10)); + int value = j + 200; + vals[i]->SetAt(CFX_ByteStringC(key.c_str()), new CPDF_Number(value)); + } + arr->InsertAt(i, vals[i]); + } + for (size_t i = 0; i < 3; ++i) { + TestArrayAccessors(arr.get(), i, // Array and index. + "", // String value. + nullptr, // Const string value. + 0, // Integer value. + 0, // Float value. + nullptr, // Array value. + vals[i], // Dictionary value. + nullptr); // Stream value. + } + } + { + // Stream array. + CPDF_Dictionary* vals[3]; + CPDF_Stream* stream_vals[3]; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < 3; ++i) { + vals[i] = new CPDF_Dictionary; + for (size_t j = 0; j < 3; ++j) { + std::string key("key"); + char buf[33]; + key.append(FXSYS_itoa(j, buf, 10)); + int value = j + 200; + vals[i]->SetAt(CFX_ByteStringC(key.c_str()), new CPDF_Number(value)); + } + uint8_t content[] = "content: this is a stream"; + size_t data_size = FX_ArraySize(content); + uint8_t* data = reinterpret_cast(malloc(data_size)); + memcpy(data, content, data_size); + stream_vals[i] = new CPDF_Stream(data, data_size, vals[i]); + arr->InsertAt(i, stream_vals[i]); + } + for (size_t i = 0; i < 3; ++i) { + TestArrayAccessors(arr.get(), i, // Array and index. + "", // String value. + nullptr, // Const string value. + 0, // Integer value. + 0, // Float value. + nullptr, // Array value. + vals[i], // Dictionary value. + stream_vals[i]); // Stream value. + } + } + { + // Mixed array. + ScopedArray arr(new CPDF_Array); + // Array arr will take ownership of all the objects inserted. + arr->InsertAt(0, new CPDF_Boolean(true)); + arr->InsertAt(1, new CPDF_Boolean(false)); + arr->InsertAt(2, new CPDF_Number(0)); + arr->InsertAt(3, new CPDF_Number(-1234)); + arr->InsertAt(4, new CPDF_Number(2345.0f)); + arr->InsertAt(5, new CPDF_Number(0.05f)); + arr->InsertAt(6, new CPDF_String("", false)); + arr->InsertAt(7, new CPDF_String("It is a test!", false)); + arr->InsertAt(8, new CPDF_Name("NAME")); + arr->InsertAt(9, new CPDF_Name("test")); + arr->InsertAt(10, new CPDF_Null()); + CPDF_Array* arr_val = new CPDF_Array; + arr_val->AddNumber(1); + arr_val->AddNumber(2); + arr->InsertAt(11, arr_val); + CPDF_Dictionary* dict_val = new CPDF_Dictionary; + dict_val->SetAt("key1", new CPDF_String("Linda", false)); + dict_val->SetAt("key2", new CPDF_String("Zoe", false)); + arr->InsertAt(12, dict_val); + CPDF_Dictionary* stream_dict = new CPDF_Dictionary; + stream_dict->SetAt("key1", new CPDF_String("John", false)); + stream_dict->SetAt("key2", new CPDF_String("King", false)); + uint8_t data[] = "A stream for test"; + // The data buffer will be owned by stream object, so it needs to be + // dynamically allocated. + size_t buf_size = sizeof(data); + uint8_t* buf = reinterpret_cast(malloc(buf_size)); + memcpy(buf, data, buf_size); + CPDF_Stream* stream_val = new CPDF_Stream(buf, buf_size, stream_dict); + arr->InsertAt(13, stream_val); + const char* const expected_str[] = { + "true", "false", "0", "-1234", "2345", "0.05", "", + "It is a test!", "NAME", "test", "", "", "", ""}; + const char* const expected_cstr[] = { + nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, + "It is a test!", "NAME", "test", nullptr, nullptr, nullptr, nullptr}; + const int expected_int[] = {1, 0, 0, -1234, 2345, 0, 0, + 0, 0, 0, 0, 0, 0, 0}; + const float expected_float[] = {0, 0, 0, -1234, 2345, 0.05f, 0, + 0, 0, 0, 0, 0, 0, 0}; + for (size_t i = 0; i < arr->GetCount(); ++i) { + EXPECT_STREQ(expected_str[i], arr->GetStringAt(i).c_str()); + EXPECT_STREQ(expected_cstr[i], arr->GetConstStringAt(i).GetCStr()); + EXPECT_EQ(expected_int[i], arr->GetIntegerAt(i)); + EXPECT_EQ(expected_float[i], arr->GetNumberAt(i)); + EXPECT_EQ(expected_float[i], arr->GetFloatAt(i)); + if (i == 11) + EXPECT_EQ(arr_val, arr->GetArrayAt(i)); + else + EXPECT_EQ(nullptr, arr->GetArrayAt(i)); + if (i == 13) { + EXPECT_EQ(stream_dict, arr->GetDictAt(i)); + EXPECT_EQ(stream_val, arr->GetStreamAt(i)); + } else { + EXPECT_EQ(nullptr, arr->GetStreamAt(i)); + if (i == 12) + EXPECT_EQ(dict_val, arr->GetDictAt(i)); + else + EXPECT_EQ(nullptr, arr->GetDictAt(i)); + } + } + } +} + +TEST(PDFArrayTest, AddNumber) { + float vals[] = {1.0f, -1.0f, 0, 0.456734f, + 12345.54321f, 0.5f, 1000, 0.000045f}; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) + arr->AddNumber(vals[i]); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + EXPECT_EQ(CPDF_Object::NUMBER, arr->GetElement(i)->GetType()); + EXPECT_EQ(vals[i], arr->GetElement(i)->GetNumber()); + } +} + +TEST(PDFArrayTest, AddInteger) { + int vals[] = {0, 1, 934435456, 876, 10000, -1, -24354656, -100}; + ScopedArray arr(new CPDF_Array); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) + arr->AddInteger(vals[i]); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + EXPECT_EQ(CPDF_Object::NUMBER, arr->GetElement(i)->GetType()); + EXPECT_EQ(vals[i], arr->GetElement(i)->GetNumber()); + } +} + +TEST(PDFArrayTest, AddStringAndName) { + const char* vals[] = {"", "a", "ehjhRIOYTTFdfcdnv", "122323", + "$#%^&**", " ", "This is a test.\r\n"}; + ScopedArray string_array(new CPDF_Array); + ScopedArray name_array(new CPDF_Array); + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + string_array->AddString(vals[i]); + name_array->AddName(vals[i]); + } + for (size_t i = 0; i < FX_ArraySize(vals); ++i) { + EXPECT_EQ(CPDF_Object::STRING, string_array->GetElement(i)->GetType()); + EXPECT_STREQ(vals[i], string_array->GetElement(i)->GetString().c_str()); + EXPECT_EQ(CPDF_Object::NAME, name_array->GetElement(i)->GetType()); + EXPECT_STREQ(vals[i], name_array->GetElement(i)->GetString().c_str()); + } +} + +TEST(PDFArrayTest, AddReferenceAndGetElement) { + std::unique_ptr holder( + new CPDF_IndirectObjectHolder(nullptr)); + CPDF_Boolean* boolean_obj = new CPDF_Boolean(true); + CPDF_Number* int_obj = new CPDF_Number(-1234); + CPDF_Number* float_obj = new CPDF_Number(2345.089f); + CPDF_String* str_obj = new CPDF_String("Adsfdsf 343434 %&&*\n", false); + CPDF_Name* name_obj = new CPDF_Name("Title:"); + CPDF_Null* null_obj = new CPDF_Null(); + CPDF_Object* indirect_objs[] = {boolean_obj, int_obj, float_obj, + str_obj, name_obj, null_obj}; + unsigned int obj_nums[] = {2, 4, 7, 2345, 799887, 1}; + ScopedArray arr(new CPDF_Array); + ScopedArray arr1(new CPDF_Array); + // Create two arrays of references by different AddReference() APIs. + for (size_t i = 0; i < FX_ArraySize(indirect_objs); ++i) { + // All the indirect objects inserted will be owned by holder. + holder->InsertIndirectObject(obj_nums[i], indirect_objs[i]); + arr->AddReference(holder.get(), obj_nums[i]); + arr1->AddReference(holder.get(), indirect_objs[i]); + } + // Check indirect objects. + for (size_t i = 0; i < FX_ArraySize(obj_nums); ++i) + EXPECT_EQ(indirect_objs[i], holder->GetIndirectObject(obj_nums[i])); + // Check arrays. + EXPECT_EQ(arr->GetCount(), arr1->GetCount()); + for (size_t i = 0; i < arr->GetCount(); ++i) { + EXPECT_EQ(CPDF_Object::REFERENCE, arr->GetElement(i)->GetType()); + EXPECT_EQ(indirect_objs[i], arr->GetElement(i)->GetDirect()); + EXPECT_EQ(indirect_objs[i], arr->GetElementValue(i)); + EXPECT_EQ(CPDF_Object::REFERENCE, arr1->GetElement(i)->GetType()); + EXPECT_EQ(indirect_objs[i], arr1->GetElement(i)->GetDirect()); + EXPECT_EQ(indirect_objs[i], arr1->GetElementValue(i)); + } +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp new file mode 100644 index 0000000000..a39dbc031b --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp @@ -0,0 +1,1652 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_parser.h" + +#include + +#include "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h" +#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fpdfapi/ipdf_crypto_handler.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "third_party/base/stl_util.h" + +namespace { + +// A limit on the size of the xref table. Theoretical limits are higher, but +// this may be large enough in practice. +const int32_t kMaxXRefSize = 1048576; + +// A limit on the maximum object number in the xref table. Theoretical limits +// are higher, but this may be large enough in practice. +const FX_DWORD kMaxObjectNumber = 1048576; + +FX_DWORD GetVarInt(const uint8_t* p, int32_t n) { + FX_DWORD result = 0; + for (int32_t i = 0; i < n; ++i) + result = result * 256 + p[i]; + return result; +} + +int32_t GetStreamNCount(CPDF_StreamAcc* pObjStream) { + return pObjStream->GetDict()->GetIntegerBy("N"); +} + +int32_t GetStreamFirst(CPDF_StreamAcc* pObjStream) { + return pObjStream->GetDict()->GetIntegerBy("First"); +} + +} // namespace + +CPDF_Parser::CPDF_Parser() + : m_pDocument(nullptr), + m_bOwnFileRead(true), + m_FileVersion(0), + m_pTrailer(nullptr), + m_pEncryptDict(nullptr), + m_bVersionUpdated(false), + m_pLinearized(nullptr), + m_dwFirstPageNo(0), + m_dwXrefStartObjNum(0) { + m_pSyntax.reset(new CPDF_SyntaxParser); +} + +CPDF_Parser::~CPDF_Parser() { + CloseParser(); +} + +FX_DWORD CPDF_Parser::GetLastObjNum() const { + return m_ObjectInfo.empty() ? 0 : m_ObjectInfo.rbegin()->first; +} + +bool CPDF_Parser::IsValidObjectNumber(FX_DWORD objnum) const { + return !m_ObjectInfo.empty() && objnum <= m_ObjectInfo.rbegin()->first; +} + +FX_FILESIZE CPDF_Parser::GetObjectPositionOrZero(FX_DWORD objnum) const { + auto it = m_ObjectInfo.find(objnum); + return it != m_ObjectInfo.end() ? it->second.pos : 0; +} + +uint8_t CPDF_Parser::GetObjectType(FX_DWORD objnum) const { + ASSERT(IsValidObjectNumber(objnum)); + auto it = m_ObjectInfo.find(objnum); + return it != m_ObjectInfo.end() ? it->second.type : 0; +} + +uint16_t CPDF_Parser::GetObjectGenNum(FX_DWORD objnum) const { + ASSERT(IsValidObjectNumber(objnum)); + auto it = m_ObjectInfo.find(objnum); + return it != m_ObjectInfo.end() ? it->second.gennum : 0; +} + +bool CPDF_Parser::IsObjectFreeOrNull(FX_DWORD objnum) const { + uint8_t type = GetObjectType(objnum); + return type == 0 || type == 255; +} + +void CPDF_Parser::SetEncryptDictionary(CPDF_Dictionary* pDict) { + m_pEncryptDict = pDict; +} + +IPDF_CryptoHandler* CPDF_Parser::GetCryptoHandler() { + return m_pSyntax->m_pCryptoHandler.get(); +} + +IFX_FileRead* CPDF_Parser::GetFileAccess() const { + return m_pSyntax->m_pFileAccess; +} + +void CPDF_Parser::ShrinkObjectMap(FX_DWORD objnum) { + if (objnum == 0) { + m_ObjectInfo.clear(); + return; + } + + auto it = m_ObjectInfo.lower_bound(objnum); + while (it != m_ObjectInfo.end()) { + auto saved_it = it++; + m_ObjectInfo.erase(saved_it); + } + + if (!pdfium::ContainsKey(m_ObjectInfo, objnum - 1)) + m_ObjectInfo[objnum - 1].pos = 0; +} + +void CPDF_Parser::CloseParser() { + m_bVersionUpdated = false; + delete m_pDocument; + m_pDocument = nullptr; + + if (m_pTrailer) { + m_pTrailer->Release(); + m_pTrailer = nullptr; + } + ReleaseEncryptHandler(); + SetEncryptDictionary(nullptr); + + if (m_bOwnFileRead && m_pSyntax->m_pFileAccess) { + m_pSyntax->m_pFileAccess->Release(); + m_pSyntax->m_pFileAccess = nullptr; + } + + m_ObjectStreamMap.clear(); + m_ObjCache.clear(); + m_SortedOffset.clear(); + m_ObjectInfo.clear(); + + int32_t iLen = m_Trailers.GetSize(); + for (int32_t i = 0; i < iLen; ++i) { + if (CPDF_Dictionary* trailer = m_Trailers.GetAt(i)) + trailer->Release(); + } + m_Trailers.RemoveAll(); + + if (m_pLinearized) { + m_pLinearized->Release(); + m_pLinearized = nullptr; + } +} + +CPDF_Parser::Error CPDF_Parser::StartParse(IFX_FileRead* pFileAccess) { + CloseParser(); + + m_bXRefStream = FALSE; + m_LastXRefOffset = 0; + m_bOwnFileRead = true; + + int32_t offset = GetHeaderOffset(pFileAccess); + if (offset == -1) { + if (pFileAccess) + pFileAccess->Release(); + return FORMAT_ERROR; + } + m_pSyntax->InitParser(pFileAccess, offset); + + uint8_t ch; + if (!m_pSyntax->GetCharAt(5, ch)) + return FORMAT_ERROR; + if (std::isdigit(ch)) + m_FileVersion = FXSYS_toDecimalDigit(static_cast(ch)) * 10; + + if (!m_pSyntax->GetCharAt(7, ch)) + return FORMAT_ERROR; + if (std::isdigit(ch)) + m_FileVersion += FXSYS_toDecimalDigit(static_cast(ch)); + + if (m_pSyntax->m_FileLen < m_pSyntax->m_HeaderOffset + 9) + return FORMAT_ERROR; + + m_pSyntax->RestorePos(m_pSyntax->m_FileLen - m_pSyntax->m_HeaderOffset - 9); + m_pDocument = new CPDF_Document(this); + + FX_BOOL bXRefRebuilt = FALSE; + if (m_pSyntax->SearchWord("startxref", TRUE, FALSE, 4096)) { + m_SortedOffset.insert(m_pSyntax->SavePos()); + m_pSyntax->GetKeyword(); + + bool bNumber; + CFX_ByteString xrefpos_str = m_pSyntax->GetNextWord(&bNumber); + if (!bNumber) + return FORMAT_ERROR; + + m_LastXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str); + if (!LoadAllCrossRefV4(m_LastXRefOffset) && + !LoadAllCrossRefV5(m_LastXRefOffset)) { + if (!RebuildCrossRef()) + return FORMAT_ERROR; + + bXRefRebuilt = TRUE; + m_LastXRefOffset = 0; + } + } else { + if (!RebuildCrossRef()) + return FORMAT_ERROR; + + bXRefRebuilt = TRUE; + } + Error eRet = SetEncryptHandler(); + if (eRet != SUCCESS) + return eRet; + + m_pDocument->LoadDoc(); + if (!m_pDocument->GetRoot() || m_pDocument->GetPageCount() == 0) { + if (bXRefRebuilt) + return FORMAT_ERROR; + + ReleaseEncryptHandler(); + if (!RebuildCrossRef()) + return FORMAT_ERROR; + + eRet = SetEncryptHandler(); + if (eRet != SUCCESS) + return eRet; + + m_pDocument->LoadDoc(); + if (!m_pDocument->GetRoot()) + return FORMAT_ERROR; + } + if (GetRootObjNum() == 0) { + ReleaseEncryptHandler(); + if (!RebuildCrossRef() || GetRootObjNum() == 0) + return FORMAT_ERROR; + + eRet = SetEncryptHandler(); + if (eRet != SUCCESS) + return eRet; + } + if (m_pSecurityHandler && !m_pSecurityHandler->IsMetadataEncrypted()) { + CPDF_Reference* pMetadata = + ToReference(m_pDocument->GetRoot()->GetElement("Metadata")); + if (pMetadata) + m_pSyntax->m_MetadataObjnum = pMetadata->GetRefObjNum(); + } + return SUCCESS; +} +CPDF_Parser::Error CPDF_Parser::SetEncryptHandler() { + ReleaseEncryptHandler(); + SetEncryptDictionary(nullptr); + + if (!m_pTrailer) + return FORMAT_ERROR; + + CPDF_Object* pEncryptObj = m_pTrailer->GetElement("Encrypt"); + if (pEncryptObj) { + if (CPDF_Dictionary* pEncryptDict = pEncryptObj->AsDictionary()) { + SetEncryptDictionary(pEncryptDict); + } else if (CPDF_Reference* pRef = pEncryptObj->AsReference()) { + pEncryptObj = m_pDocument->GetIndirectObject(pRef->GetRefObjNum()); + if (pEncryptObj) + SetEncryptDictionary(pEncryptObj->GetDict()); + } + } + + if (m_pEncryptDict) { + CFX_ByteString filter = m_pEncryptDict->GetStringBy("Filter"); + std::unique_ptr pSecurityHandler; + Error err = HANDLER_ERROR; + if (filter == "Standard") { + pSecurityHandler.reset(new CPDF_StandardSecurityHandler); + err = PASSWORD_ERROR; + } + if (!pSecurityHandler) + return HANDLER_ERROR; + + if (!pSecurityHandler->OnInit(this, m_pEncryptDict)) + return err; + + m_pSecurityHandler = std::move(pSecurityHandler); + std::unique_ptr pCryptoHandler( + m_pSecurityHandler->CreateCryptoHandler()); + if (!pCryptoHandler->Init(m_pEncryptDict, m_pSecurityHandler.get())) + return HANDLER_ERROR; + m_pSyntax->SetEncrypt(std::move(pCryptoHandler)); + } + return SUCCESS; +} + +void CPDF_Parser::ReleaseEncryptHandler() { + m_pSyntax->m_pCryptoHandler.reset(); + m_pSecurityHandler.reset(); +} + +FX_FILESIZE CPDF_Parser::GetObjectOffset(FX_DWORD objnum) const { + if (!IsValidObjectNumber(objnum)) + return 0; + + if (GetObjectType(objnum) == 1) + return GetObjectPositionOrZero(objnum); + + if (GetObjectType(objnum) == 2) { + FX_FILESIZE pos = GetObjectPositionOrZero(objnum); + return GetObjectPositionOrZero(pos); + } + return 0; +} + +FX_BOOL CPDF_Parser::LoadAllCrossRefV4(FX_FILESIZE xrefpos) { + if (!LoadCrossRefV4(xrefpos, 0, TRUE)) + return FALSE; + + m_pTrailer = LoadTrailerV4(); + if (!m_pTrailer) + return FALSE; + + int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); + if (xrefsize > 0 && xrefsize <= kMaxXRefSize) + ShrinkObjectMap(xrefsize); + + std::vector CrossRefList; + std::vector XRefStreamList; + std::set seen_xrefpos; + + CrossRefList.push_back(xrefpos); + XRefStreamList.push_back(GetDirectInteger(m_pTrailer, "XRefStm")); + seen_xrefpos.insert(xrefpos); + + // When |m_pTrailer| doesn't have Prev entry or Prev entry value is not + // numerical, GetDirectInteger() returns 0. Loading will end. + xrefpos = GetDirectInteger(m_pTrailer, "Prev"); + while (xrefpos) { + // Check for circular references. + if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) + return FALSE; + + seen_xrefpos.insert(xrefpos); + + // SLOW ... + CrossRefList.insert(CrossRefList.begin(), xrefpos); + LoadCrossRefV4(xrefpos, 0, TRUE); + + std::unique_ptr> pDict( + LoadTrailerV4()); + if (!pDict) + return FALSE; + + xrefpos = GetDirectInteger(pDict.get(), "Prev"); + + // SLOW ... + XRefStreamList.insert(XRefStreamList.begin(), + pDict->GetIntegerBy("XRefStm")); + m_Trailers.Add(pDict.release()); + } + + for (size_t i = 0; i < CrossRefList.size(); ++i) { + if (!LoadCrossRefV4(CrossRefList[i], XRefStreamList[i], FALSE)) + return FALSE; + } + return TRUE; +} + +FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV4(FX_FILESIZE xrefpos, + FX_DWORD dwObjCount) { + if (!LoadLinearizedCrossRefV4(xrefpos, dwObjCount)) + return FALSE; + + m_pTrailer = LoadTrailerV4(); + if (!m_pTrailer) + return FALSE; + + int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); + if (xrefsize == 0) + return FALSE; + + std::vector CrossRefList; + std::vector XRefStreamList; + std::set seen_xrefpos; + + CrossRefList.push_back(xrefpos); + XRefStreamList.push_back(GetDirectInteger(m_pTrailer, "XRefStm")); + seen_xrefpos.insert(xrefpos); + + xrefpos = GetDirectInteger(m_pTrailer, "Prev"); + while (xrefpos) { + // Check for circular references. + if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) + return FALSE; + + seen_xrefpos.insert(xrefpos); + + // SLOW ... + CrossRefList.insert(CrossRefList.begin(), xrefpos); + LoadCrossRefV4(xrefpos, 0, TRUE); + + std::unique_ptr> pDict( + LoadTrailerV4()); + if (!pDict) + return FALSE; + + xrefpos = GetDirectInteger(pDict.get(), "Prev"); + + // SLOW ... + XRefStreamList.insert(XRefStreamList.begin(), + pDict->GetIntegerBy("XRefStm")); + m_Trailers.Add(pDict.release()); + } + + for (size_t i = 1; i < CrossRefList.size(); ++i) { + if (!LoadCrossRefV4(CrossRefList[i], XRefStreamList[i], FALSE)) + return FALSE; + } + return TRUE; +} + +FX_BOOL CPDF_Parser::LoadLinearizedCrossRefV4(FX_FILESIZE pos, + FX_DWORD dwObjCount) { + FX_FILESIZE dwStartPos = pos - m_pSyntax->m_HeaderOffset; + + m_pSyntax->RestorePos(dwStartPos); + m_SortedOffset.insert(pos); + + FX_DWORD start_objnum = 0; + FX_DWORD count = dwObjCount; + FX_FILESIZE SavedPos = m_pSyntax->SavePos(); + + const int32_t recordsize = 20; + std::vector buf(1024 * recordsize + 1); + buf[1024 * recordsize] = '\0'; + + int32_t nBlocks = count / 1024 + 1; + for (int32_t block = 0; block < nBlocks; block++) { + int32_t block_size = block == nBlocks - 1 ? count % 1024 : 1024; + FX_DWORD dwReadSize = block_size * recordsize; + if ((FX_FILESIZE)(dwStartPos + dwReadSize) > m_pSyntax->m_FileLen) + return FALSE; + + if (!m_pSyntax->ReadBlock(reinterpret_cast(buf.data()), + dwReadSize)) { + return FALSE; + } + + for (int32_t i = 0; i < block_size; i++) { + FX_DWORD objnum = start_objnum + block * 1024 + i; + char* pEntry = &buf[i * recordsize]; + if (pEntry[17] == 'f') { + m_ObjectInfo[objnum].pos = 0; + m_ObjectInfo[objnum].type = 0; + } else { + int32_t offset = FXSYS_atoi(pEntry); + if (offset == 0) { + for (int32_t c = 0; c < 10; c++) { + if (!std::isdigit(pEntry[c])) + return FALSE; + } + } + + m_ObjectInfo[objnum].pos = offset; + int32_t version = FXSYS_atoi(pEntry + 11); + if (version >= 1) + m_bVersionUpdated = true; + + m_ObjectInfo[objnum].gennum = version; + if (m_ObjectInfo[objnum].pos < m_pSyntax->m_FileLen) + m_SortedOffset.insert(m_ObjectInfo[objnum].pos); + + m_ObjectInfo[objnum].type = 1; + } + } + } + m_pSyntax->RestorePos(SavedPos + count * recordsize); + return TRUE; +} + +bool CPDF_Parser::LoadCrossRefV4(FX_FILESIZE pos, + FX_FILESIZE streampos, + FX_BOOL bSkip) { + m_pSyntax->RestorePos(pos); + if (m_pSyntax->GetKeyword() != "xref") + return false; + + m_SortedOffset.insert(pos); + if (streampos) + m_SortedOffset.insert(streampos); + + while (1) { + FX_FILESIZE SavedPos = m_pSyntax->SavePos(); + bool bIsNumber; + CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); + if (word.IsEmpty()) + return false; + + if (!bIsNumber) { + m_pSyntax->RestorePos(SavedPos); + break; + } + + FX_DWORD start_objnum = FXSYS_atoui(word); + if (start_objnum >= kMaxObjectNumber) + return false; + + FX_DWORD count = m_pSyntax->GetDirectNum(); + m_pSyntax->ToNextWord(); + SavedPos = m_pSyntax->SavePos(); + const int32_t recordsize = 20; + + m_dwXrefStartObjNum = start_objnum; + if (!bSkip) { + std::vector buf(1024 * recordsize + 1); + buf[1024 * recordsize] = '\0'; + + int32_t nBlocks = count / 1024 + 1; + for (int32_t block = 0; block < nBlocks; block++) { + int32_t block_size = block == nBlocks - 1 ? count % 1024 : 1024; + m_pSyntax->ReadBlock(reinterpret_cast(buf.data()), + block_size * recordsize); + + for (int32_t i = 0; i < block_size; i++) { + FX_DWORD objnum = start_objnum + block * 1024 + i; + char* pEntry = &buf[i * recordsize]; + if (pEntry[17] == 'f') { + m_ObjectInfo[objnum].pos = 0; + m_ObjectInfo[objnum].type = 0; + } else { + FX_FILESIZE offset = (FX_FILESIZE)FXSYS_atoi64(pEntry); + if (offset == 0) { + for (int32_t c = 0; c < 10; c++) { + if (!std::isdigit(pEntry[c])) + return false; + } + } + + m_ObjectInfo[objnum].pos = offset; + int32_t version = FXSYS_atoi(pEntry + 11); + if (version >= 1) + m_bVersionUpdated = true; + + m_ObjectInfo[objnum].gennum = version; + if (m_ObjectInfo[objnum].pos < m_pSyntax->m_FileLen) + m_SortedOffset.insert(m_ObjectInfo[objnum].pos); + + m_ObjectInfo[objnum].type = 1; + } + } + } + } + m_pSyntax->RestorePos(SavedPos + count * recordsize); + } + return !streampos || LoadCrossRefV5(&streampos, FALSE); +} + +FX_BOOL CPDF_Parser::LoadAllCrossRefV5(FX_FILESIZE xrefpos) { + if (!LoadCrossRefV5(&xrefpos, TRUE)) + return FALSE; + + std::set seen_xrefpos; + while (xrefpos) { + seen_xrefpos.insert(xrefpos); + if (!LoadCrossRefV5(&xrefpos, FALSE)) + return FALSE; + + // Check for circular references. + if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) + return FALSE; + } + m_ObjectStreamMap.clear(); + m_bXRefStream = TRUE; + return TRUE; +} + +FX_BOOL CPDF_Parser::RebuildCrossRef() { + m_ObjectInfo.clear(); + m_SortedOffset.clear(); + if (m_pTrailer) { + m_pTrailer->Release(); + m_pTrailer = nullptr; + } + + ParserState state = ParserState::kDefault; + + int32_t inside_index = 0; + FX_DWORD objnum = 0; + FX_DWORD gennum = 0; + int32_t depth = 0; + + const FX_DWORD kBufferSize = 4096; + std::vector buffer(kBufferSize); + + FX_FILESIZE pos = m_pSyntax->m_HeaderOffset; + FX_FILESIZE start_pos = 0; + FX_FILESIZE start_pos1 = 0; + FX_FILESIZE last_obj = -1; + FX_FILESIZE last_xref = -1; + FX_FILESIZE last_trailer = -1; + + while (pos < m_pSyntax->m_FileLen) { + const FX_FILESIZE saved_pos = pos; + bool bOverFlow = false; + FX_DWORD size = + std::min((FX_DWORD)(m_pSyntax->m_FileLen - pos), kBufferSize); + if (!m_pSyntax->m_pFileAccess->ReadBlock(buffer.data(), pos, size)) + break; + + for (FX_DWORD i = 0; i < size; i++) { + uint8_t byte = buffer[i]; + switch (state) { + case ParserState::kDefault: + if (PDFCharIsWhitespace(byte)) { + state = ParserState::kWhitespace; + } else if (std::isdigit(byte)) { + --i; + state = ParserState::kWhitespace; + } else if (byte == '%') { + inside_index = 0; + state = ParserState::kComment; + } else if (byte == '(') { + state = ParserState::kString; + depth = 1; + } else if (byte == '<') { + inside_index = 1; + state = ParserState::kHexString; + } else if (byte == '\\') { + state = ParserState::kEscapedString; + } else if (byte == 't') { + state = ParserState::kTrailer; + inside_index = 1; + } + break; + + case ParserState::kWhitespace: + if (std::isdigit(byte)) { + start_pos = pos + i; + state = ParserState::kObjNum; + objnum = FXSYS_toDecimalDigit(static_cast(byte)); + } else if (byte == 't') { + state = ParserState::kTrailer; + inside_index = 1; + } else if (byte == 'x') { + state = ParserState::kXref; + inside_index = 1; + } else if (!PDFCharIsWhitespace(byte)) { + --i; + state = ParserState::kDefault; + } + break; + + case ParserState::kObjNum: + if (std::isdigit(byte)) { + objnum = + objnum * 10 + FXSYS_toDecimalDigit(static_cast(byte)); + } else if (PDFCharIsWhitespace(byte)) { + state = ParserState::kPostObjNum; + } else { + --i; + state = ParserState::kEndObj; + inside_index = 0; + } + break; + + case ParserState::kPostObjNum: + if (std::isdigit(byte)) { + start_pos1 = pos + i; + state = ParserState::kGenNum; + gennum = FXSYS_toDecimalDigit(static_cast(byte)); + } else if (byte == 't') { + state = ParserState::kTrailer; + inside_index = 1; + } else if (!PDFCharIsWhitespace(byte)) { + --i; + state = ParserState::kDefault; + } + break; + + case ParserState::kGenNum: + if (std::isdigit(byte)) { + gennum = + gennum * 10 + FXSYS_toDecimalDigit(static_cast(byte)); + } else if (PDFCharIsWhitespace(byte)) { + state = ParserState::kPostGenNum; + } else { + --i; + state = ParserState::kDefault; + } + break; + + case ParserState::kPostGenNum: + if (byte == 'o') { + state = ParserState::kBeginObj; + inside_index = 1; + } else if (std::isdigit(byte)) { + objnum = gennum; + gennum = FXSYS_toDecimalDigit(static_cast(byte)); + start_pos = start_pos1; + start_pos1 = pos + i; + state = ParserState::kGenNum; + } else if (byte == 't') { + state = ParserState::kTrailer; + inside_index = 1; + } else if (!PDFCharIsWhitespace(byte)) { + --i; + state = ParserState::kDefault; + } + break; + + case ParserState::kBeginObj: + switch (inside_index) { + case 1: + if (byte != 'b') { + --i; + state = ParserState::kDefault; + } else { + inside_index++; + } + break; + case 2: + if (byte != 'j') { + --i; + state = ParserState::kDefault; + } else { + inside_index++; + } + break; + case 3: + if (PDFCharIsWhitespace(byte) || PDFCharIsDelimiter(byte)) { + FX_FILESIZE obj_pos = start_pos - m_pSyntax->m_HeaderOffset; + m_SortedOffset.insert(obj_pos); + last_obj = start_pos; + FX_FILESIZE obj_end = 0; + CPDF_Object* pObject = ParseIndirectObjectAtByStrict( + m_pDocument, obj_pos, objnum, &obj_end); + if (CPDF_Stream* pStream = ToStream(pObject)) { + if (CPDF_Dictionary* pDict = pStream->GetDict()) { + if ((pDict->KeyExist("Type")) && + (pDict->GetStringBy("Type") == "XRef" && + pDict->KeyExist("Size"))) { + CPDF_Object* pRoot = pDict->GetElement("Root"); + if (pRoot && pRoot->GetDict() && + pRoot->GetDict()->GetElement("Pages")) { + if (m_pTrailer) + m_pTrailer->Release(); + m_pTrailer = ToDictionary(pDict->Clone()); + } + } + } + } + + FX_FILESIZE offset = 0; + m_pSyntax->RestorePos(obj_pos); + offset = m_pSyntax->FindTag("obj", 0); + if (offset == -1) + offset = 0; + else + offset += 3; + + FX_FILESIZE nLen = obj_end - obj_pos - offset; + if ((FX_DWORD)nLen > size - i) { + pos = obj_end + m_pSyntax->m_HeaderOffset; + bOverFlow = true; + } else { + i += (FX_DWORD)nLen; + } + + if (!m_ObjectInfo.empty() && IsValidObjectNumber(objnum) && + m_ObjectInfo[objnum].pos) { + if (pObject) { + FX_DWORD oldgen = GetObjectGenNum(objnum); + m_ObjectInfo[objnum].pos = obj_pos; + m_ObjectInfo[objnum].gennum = gennum; + if (oldgen != gennum) + m_bVersionUpdated = true; + } + } else { + m_ObjectInfo[objnum].pos = obj_pos; + m_ObjectInfo[objnum].type = 1; + m_ObjectInfo[objnum].gennum = gennum; + } + + if (pObject) + pObject->Release(); + } + --i; + state = ParserState::kDefault; + break; + } + break; + + case ParserState::kTrailer: + if (inside_index == 7) { + if (PDFCharIsWhitespace(byte) || PDFCharIsDelimiter(byte)) { + last_trailer = pos + i - 7; + m_pSyntax->RestorePos(pos + i - m_pSyntax->m_HeaderOffset); + + CPDF_Object* pObj = m_pSyntax->GetObject(m_pDocument, 0, 0, true); + if (pObj) { + if (!pObj->IsDictionary() && !pObj->AsStream()) { + pObj->Release(); + } else { + CPDF_Stream* pStream = pObj->AsStream(); + if (CPDF_Dictionary* pTrailer = + pStream ? pStream->GetDict() : pObj->AsDictionary()) { + if (m_pTrailer) { + CPDF_Object* pRoot = pTrailer->GetElement("Root"); + CPDF_Reference* pRef = ToReference(pRoot); + if (!pRoot || + (pRef && IsValidObjectNumber(pRef->GetRefObjNum()) && + m_ObjectInfo[pRef->GetRefObjNum()].pos != 0)) { + auto it = pTrailer->begin(); + while (it != pTrailer->end()) { + const CFX_ByteString& key = it->first; + CPDF_Object* pElement = it->second; + ++it; + FX_DWORD dwObjNum = + pElement ? pElement->GetObjNum() : 0; + if (dwObjNum) { + m_pTrailer->SetAtReference(key, m_pDocument, + dwObjNum); + } else { + m_pTrailer->SetAt(key, pElement->Clone()); + } + } + } + pObj->Release(); + } else { + if (pObj->IsStream()) { + m_pTrailer = ToDictionary(pTrailer->Clone()); + pObj->Release(); + } else { + m_pTrailer = pTrailer; + } + + FX_FILESIZE dwSavePos = m_pSyntax->SavePos(); + CFX_ByteString strWord = m_pSyntax->GetKeyword(); + if (!strWord.Compare("startxref")) { + bool bNumber; + CFX_ByteString bsOffset = + m_pSyntax->GetNextWord(&bNumber); + if (bNumber) + m_LastXRefOffset = FXSYS_atoi(bsOffset); + } + m_pSyntax->RestorePos(dwSavePos); + } + } else { + pObj->Release(); + } + } + } + } + --i; + state = ParserState::kDefault; + } else if (byte == "trailer"[inside_index]) { + inside_index++; + } else { + --i; + state = ParserState::kDefault; + } + break; + + case ParserState::kXref: + if (inside_index == 4) { + last_xref = pos + i - 4; + state = ParserState::kWhitespace; + } else if (byte == "xref"[inside_index]) { + inside_index++; + } else { + --i; + state = ParserState::kDefault; + } + break; + + case ParserState::kComment: + if (PDFCharIsLineEnding(byte)) + state = ParserState::kDefault; + break; + + case ParserState::kString: + if (byte == ')') { + if (depth > 0) + depth--; + } else if (byte == '(') { + depth++; + } + + if (!depth) + state = ParserState::kDefault; + break; + + case ParserState::kHexString: + if (byte == '>' || (byte == '<' && inside_index == 1)) + state = ParserState::kDefault; + inside_index = 0; + break; + + case ParserState::kEscapedString: + if (PDFCharIsDelimiter(byte) || PDFCharIsWhitespace(byte)) { + --i; + state = ParserState::kDefault; + } + break; + + case ParserState::kEndObj: + if (PDFCharIsWhitespace(byte)) { + state = ParserState::kDefault; + } else if (byte == '%' || byte == '(' || byte == '<' || + byte == '\\') { + state = ParserState::kDefault; + --i; + } else if (inside_index == 6) { + state = ParserState::kDefault; + --i; + } else if (byte == "endobj"[inside_index]) { + inside_index++; + } + break; + } + + if (bOverFlow) { + size = 0; + break; + } + } + pos += size; + + // If the position has not changed at all in a loop iteration, then break + // out to prevent infinite looping. + if (pos == saved_pos) + break; + } + + if (last_xref != -1 && last_xref > last_obj) + last_trailer = last_xref; + else if (last_trailer == -1 || last_xref < last_obj) + last_trailer = m_pSyntax->m_FileLen; + + m_SortedOffset.insert(last_trailer - m_pSyntax->m_HeaderOffset); + return m_pTrailer && !m_ObjectInfo.empty(); +} + +FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE* pos, FX_BOOL bMainXRef) { + CPDF_Object* pObject = ParseIndirectObjectAt(m_pDocument, *pos, 0); + if (!pObject) + return FALSE; + + if (m_pDocument) { + FX_BOOL bInserted = FALSE; + CPDF_Dictionary* pDict = m_pDocument->GetRoot(); + if (!pDict || pDict->GetObjNum() != pObject->m_ObjNum) { + bInserted = m_pDocument->InsertIndirectObject(pObject->m_ObjNum, pObject); + } else { + if (pObject->IsStream()) + pObject->Release(); + } + + if (!bInserted) + return FALSE; + } + + CPDF_Stream* pStream = pObject->AsStream(); + if (!pStream) + return FALSE; + + *pos = pStream->GetDict()->GetIntegerBy("Prev"); + int32_t size = pStream->GetDict()->GetIntegerBy("Size"); + if (size < 0) { + pStream->Release(); + return FALSE; + } + + if (bMainXRef) { + m_pTrailer = ToDictionary(pStream->GetDict()->Clone()); + ShrinkObjectMap(size); + for (auto& it : m_ObjectInfo) + it.second.type = 0; + } else { + m_Trailers.Add(ToDictionary(pStream->GetDict()->Clone())); + } + + std::vector> arrIndex; + CPDF_Array* pArray = pStream->GetDict()->GetArrayBy("Index"); + if (pArray) { + FX_DWORD nPairSize = pArray->GetCount() / 2; + for (FX_DWORD i = 0; i < nPairSize; i++) { + CPDF_Object* pStartNumObj = pArray->GetElement(i * 2); + CPDF_Object* pCountObj = pArray->GetElement(i * 2 + 1); + + if (ToNumber(pStartNumObj) && ToNumber(pCountObj)) { + int nStartNum = pStartNumObj->GetInteger(); + int nCount = pCountObj->GetInteger(); + if (nStartNum >= 0 && nCount > 0) + arrIndex.push_back(std::make_pair(nStartNum, nCount)); + } + } + } + + if (arrIndex.size() == 0) + arrIndex.push_back(std::make_pair(0, size)); + + pArray = pStream->GetDict()->GetArrayBy("W"); + if (!pArray) { + pStream->Release(); + return FALSE; + } + + CFX_DWordArray WidthArray; + FX_SAFE_DWORD dwAccWidth = 0; + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + WidthArray.Add(pArray->GetIntegerAt(i)); + dwAccWidth += WidthArray[i]; + } + + if (!dwAccWidth.IsValid() || WidthArray.GetSize() < 3) { + pStream->Release(); + return FALSE; + } + + FX_DWORD totalWidth = dwAccWidth.ValueOrDie(); + CPDF_StreamAcc acc; + acc.LoadAllData(pStream); + + const uint8_t* pData = acc.GetData(); + FX_DWORD dwTotalSize = acc.GetSize(); + FX_DWORD segindex = 0; + for (FX_DWORD i = 0; i < arrIndex.size(); i++) { + int32_t startnum = arrIndex[i].first; + if (startnum < 0) + continue; + + m_dwXrefStartObjNum = + pdfium::base::checked_cast(startnum); + FX_DWORD count = + pdfium::base::checked_cast(arrIndex[i].second); + FX_SAFE_DWORD dwCaculatedSize = segindex; + dwCaculatedSize += count; + dwCaculatedSize *= totalWidth; + if (!dwCaculatedSize.IsValid() || + dwCaculatedSize.ValueOrDie() > dwTotalSize) { + continue; + } + + const uint8_t* segstart = pData + segindex * totalWidth; + FX_SAFE_DWORD dwMaxObjNum = startnum; + dwMaxObjNum += count; + FX_DWORD dwV5Size = m_ObjectInfo.empty() ? 0 : GetLastObjNum() + 1; + if (!dwMaxObjNum.IsValid() || dwMaxObjNum.ValueOrDie() > dwV5Size) + continue; + + for (FX_DWORD j = 0; j < count; j++) { + int32_t type = 1; + const uint8_t* entrystart = segstart + j * totalWidth; + if (WidthArray[0]) + type = GetVarInt(entrystart, WidthArray[0]); + + if (GetObjectType(startnum + j) == 255) { + FX_FILESIZE offset = + GetVarInt(entrystart + WidthArray[0], WidthArray[1]); + m_ObjectInfo[startnum + j].pos = offset; + m_SortedOffset.insert(offset); + continue; + } + + if (GetObjectType(startnum + j)) + continue; + + m_ObjectInfo[startnum + j].type = type; + if (type == 0) { + m_ObjectInfo[startnum + j].pos = 0; + } else { + FX_FILESIZE offset = + GetVarInt(entrystart + WidthArray[0], WidthArray[1]); + m_ObjectInfo[startnum + j].pos = offset; + if (type == 1) { + m_SortedOffset.insert(offset); + } else { + if (offset < 0 || !IsValidObjectNumber(offset)) { + pStream->Release(); + return FALSE; + } + m_ObjectInfo[offset].type = 255; + } + } + } + segindex += count; + } + pStream->Release(); + return TRUE; +} + +CPDF_Array* CPDF_Parser::GetIDArray() { + CPDF_Object* pID = m_pTrailer ? m_pTrailer->GetElement("ID") : nullptr; + if (!pID) + return nullptr; + + if (CPDF_Reference* pRef = pID->AsReference()) { + pID = ParseIndirectObject(nullptr, pRef->GetRefObjNum()); + m_pTrailer->SetAt("ID", pID); + } + return ToArray(pID); +} + +FX_DWORD CPDF_Parser::GetRootObjNum() { + CPDF_Reference* pRef = + ToReference(m_pTrailer ? m_pTrailer->GetElement("Root") : nullptr); + return pRef ? pRef->GetRefObjNum() : 0; +} + +FX_DWORD CPDF_Parser::GetInfoObjNum() { + CPDF_Reference* pRef = + ToReference(m_pTrailer ? m_pTrailer->GetElement("Info") : nullptr); + return pRef ? pRef->GetRefObjNum() : 0; +} + +FX_BOOL CPDF_Parser::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) { + bForm = FALSE; + if (!IsValidObjectNumber(objnum)) + return TRUE; + + if (GetObjectType(objnum) == 0) + return TRUE; + + if (GetObjectType(objnum) == 2) + return TRUE; + + FX_FILESIZE pos = m_ObjectInfo[objnum].pos; + auto it = m_SortedOffset.find(pos); + if (it == m_SortedOffset.end()) + return TRUE; + + if (++it == m_SortedOffset.end()) + return FALSE; + + FX_FILESIZE size = *it - pos; + FX_FILESIZE SavedPos = m_pSyntax->SavePos(); + m_pSyntax->RestorePos(pos); + + const char kFormStream[] = "/Form\0stream"; + const CFX_ByteStringC kFormStreamStr(kFormStream, sizeof(kFormStream) - 1); + bForm = m_pSyntax->SearchMultiWord(kFormStreamStr, TRUE, size) == 0; + m_pSyntax->RestorePos(SavedPos); + return TRUE; +} + +CPDF_Object* CPDF_Parser::ParseIndirectObject( + CPDF_IndirectObjectHolder* pObjList, + FX_DWORD objnum) { + if (!IsValidObjectNumber(objnum)) + return nullptr; + + // Prevent circular parsing the same object. + if (pdfium::ContainsKey(m_ParsingObjNums, objnum)) + return nullptr; + + pdfium::ScopedSetInsertion local_insert(&m_ParsingObjNums, objnum); + if (GetObjectType(objnum) == 1 || GetObjectType(objnum) == 255) { + FX_FILESIZE pos = m_ObjectInfo[objnum].pos; + if (pos <= 0) + return nullptr; + return ParseIndirectObjectAt(pObjList, pos, objnum); + } + if (GetObjectType(objnum) != 2) + return nullptr; + + CPDF_StreamAcc* pObjStream = GetObjectStream(m_ObjectInfo[objnum].pos); + if (!pObjStream) + return nullptr; + + ScopedFileStream file(FX_CreateMemoryStream( + (uint8_t*)pObjStream->GetData(), (size_t)pObjStream->GetSize(), FALSE)); + CPDF_SyntaxParser syntax; + syntax.InitParser(file.get(), 0); + const int32_t offset = GetStreamFirst(pObjStream); + + // Read object numbers from |pObjStream| into a cache. + if (!pdfium::ContainsKey(m_ObjCache, pObjStream)) { + for (int32_t i = GetStreamNCount(pObjStream); i > 0; --i) { + FX_DWORD thisnum = syntax.GetDirectNum(); + FX_DWORD thisoff = syntax.GetDirectNum(); + m_ObjCache[pObjStream][thisnum] = thisoff; + } + } + + const auto it = m_ObjCache[pObjStream].find(objnum); + if (it == m_ObjCache[pObjStream].end()) + return nullptr; + + syntax.RestorePos(offset + it->second); + return syntax.GetObject(pObjList, 0, 0, true); +} + +CPDF_StreamAcc* CPDF_Parser::GetObjectStream(FX_DWORD objnum) { + auto it = m_ObjectStreamMap.find(objnum); + if (it != m_ObjectStreamMap.end()) + return it->second.get(); + + if (!m_pDocument) + return nullptr; + + const CPDF_Stream* pStream = ToStream(m_pDocument->GetIndirectObject(objnum)); + if (!pStream) + return nullptr; + + CPDF_StreamAcc* pStreamAcc = new CPDF_StreamAcc; + pStreamAcc->LoadAllData(pStream); + m_ObjectStreamMap[objnum].reset(pStreamAcc); + return pStreamAcc; +} + +FX_FILESIZE CPDF_Parser::GetObjectSize(FX_DWORD objnum) const { + if (!IsValidObjectNumber(objnum)) + return 0; + + if (GetObjectType(objnum) == 2) + objnum = GetObjectPositionOrZero(objnum); + + if (GetObjectType(objnum) != 1 && GetObjectType(objnum) != 255) + return 0; + + FX_FILESIZE offset = GetObjectPositionOrZero(objnum); + if (offset == 0) + return 0; + + auto it = m_SortedOffset.find(offset); + if (it == m_SortedOffset.end() || ++it == m_SortedOffset.end()) + return 0; + + return *it - offset; +} + +void CPDF_Parser::GetIndirectBinary(FX_DWORD objnum, + uint8_t*& pBuffer, + FX_DWORD& size) { + pBuffer = nullptr; + size = 0; + if (!IsValidObjectNumber(objnum)) + return; + + if (GetObjectType(objnum) == 2) { + CPDF_StreamAcc* pObjStream = GetObjectStream(m_ObjectInfo[objnum].pos); + if (!pObjStream) + return; + + int32_t offset = GetStreamFirst(pObjStream); + const uint8_t* pData = pObjStream->GetData(); + FX_DWORD totalsize = pObjStream->GetSize(); + ScopedFileStream file( + FX_CreateMemoryStream((uint8_t*)pData, (size_t)totalsize, FALSE)); + + CPDF_SyntaxParser syntax; + syntax.InitParser(file.get(), 0); + for (int i = GetStreamNCount(pObjStream); i > 0; --i) { + FX_DWORD thisnum = syntax.GetDirectNum(); + FX_DWORD thisoff = syntax.GetDirectNum(); + if (thisnum != objnum) + continue; + + if (i == 1) { + size = totalsize - (thisoff + offset); + } else { + syntax.GetDirectNum(); // Skip nextnum. + FX_DWORD nextoff = syntax.GetDirectNum(); + size = nextoff - thisoff; + } + + pBuffer = FX_Alloc(uint8_t, size); + FXSYS_memcpy(pBuffer, pData + thisoff + offset, size); + return; + } + return; + } + + if (GetObjectType(objnum) != 1) + return; + + FX_FILESIZE pos = m_ObjectInfo[objnum].pos; + if (pos == 0) + return; + + FX_FILESIZE SavedPos = m_pSyntax->SavePos(); + m_pSyntax->RestorePos(pos); + + bool bIsNumber; + CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) { + m_pSyntax->RestorePos(SavedPos); + return; + } + + FX_DWORD parser_objnum = FXSYS_atoui(word); + if (parser_objnum && parser_objnum != objnum) { + m_pSyntax->RestorePos(SavedPos); + return; + } + + word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) { + m_pSyntax->RestorePos(SavedPos); + return; + } + + if (m_pSyntax->GetKeyword() != "obj") { + m_pSyntax->RestorePos(SavedPos); + return; + } + + auto it = m_SortedOffset.find(pos); + if (it == m_SortedOffset.end() || ++it == m_SortedOffset.end()) { + m_pSyntax->RestorePos(SavedPos); + return; + } + + FX_FILESIZE nextoff = *it; + FX_BOOL bNextOffValid = FALSE; + if (nextoff != pos) { + m_pSyntax->RestorePos(nextoff); + word = m_pSyntax->GetNextWord(&bIsNumber); + if (word == "xref") { + bNextOffValid = TRUE; + } else if (bIsNumber) { + word = m_pSyntax->GetNextWord(&bIsNumber); + if (bIsNumber && m_pSyntax->GetKeyword() == "obj") { + bNextOffValid = TRUE; + } + } + } + + if (!bNextOffValid) { + m_pSyntax->RestorePos(pos); + while (1) { + if (m_pSyntax->GetKeyword() == "endobj") + break; + + if (m_pSyntax->SavePos() == m_pSyntax->m_FileLen) + break; + } + nextoff = m_pSyntax->SavePos(); + } + + size = (FX_DWORD)(nextoff - pos); + pBuffer = FX_Alloc(uint8_t, size); + m_pSyntax->RestorePos(pos); + m_pSyntax->ReadBlock(pBuffer, size); + m_pSyntax->RestorePos(SavedPos); +} + +CPDF_Object* CPDF_Parser::ParseIndirectObjectAt( + CPDF_IndirectObjectHolder* pObjList, + FX_FILESIZE pos, + FX_DWORD objnum) { + FX_FILESIZE SavedPos = m_pSyntax->SavePos(); + m_pSyntax->RestorePos(pos); + bool bIsNumber; + CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + FX_FILESIZE objOffset = m_pSyntax->SavePos(); + objOffset -= word.GetLength(); + FX_DWORD parser_objnum = FXSYS_atoui(word); + if (objnum && parser_objnum != objnum) { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + FX_DWORD parser_gennum = FXSYS_atoui(word); + if (m_pSyntax->GetKeyword() != "obj") { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + CPDF_Object* pObj = + m_pSyntax->GetObject(pObjList, objnum, parser_gennum, true); + m_pSyntax->SavePos(); + + CFX_ByteString bsWord = m_pSyntax->GetKeyword(); + if (bsWord == "endobj") + m_pSyntax->SavePos(); + + m_pSyntax->RestorePos(SavedPos); + if (pObj) { + if (!objnum) + pObj->m_ObjNum = parser_objnum; + pObj->m_GenNum = parser_gennum; + } + return pObj; +} + +CPDF_Object* CPDF_Parser::ParseIndirectObjectAtByStrict( + CPDF_IndirectObjectHolder* pObjList, + FX_FILESIZE pos, + FX_DWORD objnum, + FX_FILESIZE* pResultPos) { + FX_FILESIZE SavedPos = m_pSyntax->SavePos(); + m_pSyntax->RestorePos(pos); + + bool bIsNumber; + CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + FX_DWORD parser_objnum = FXSYS_atoui(word); + if (objnum && parser_objnum != objnum) { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + FX_DWORD gennum = FXSYS_atoui(word); + if (m_pSyntax->GetKeyword() != "obj") { + m_pSyntax->RestorePos(SavedPos); + return nullptr; + } + + CPDF_Object* pObj = m_pSyntax->GetObjectByStrict(pObjList, objnum, gennum); + if (pResultPos) + *pResultPos = m_pSyntax->m_Pos; + + m_pSyntax->RestorePos(SavedPos); + return pObj; +} + +CPDF_Dictionary* CPDF_Parser::LoadTrailerV4() { + if (m_pSyntax->GetKeyword() != "trailer") + return nullptr; + + std::unique_ptr> pObj( + m_pSyntax->GetObject(m_pDocument, 0, 0, true)); + if (!ToDictionary(pObj.get())) + return nullptr; + return pObj.release()->AsDictionary(); +} + +FX_DWORD CPDF_Parser::GetPermissions(FX_BOOL bCheckRevision) { + if (!m_pSecurityHandler) + return (FX_DWORD)-1; + + FX_DWORD dwPermission = m_pSecurityHandler->GetPermissions(); + if (m_pEncryptDict && m_pEncryptDict->GetStringBy("Filter") == "Standard") { + dwPermission &= 0xFFFFFFFC; + dwPermission |= 0xFFFFF0C0; + if (bCheckRevision && m_pEncryptDict->GetIntegerBy("R") == 2) + dwPermission &= 0xFFFFF0FF; + } + return dwPermission; +} + +FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess, + FX_DWORD offset) { + m_pSyntax->InitParser(pFileAccess, offset); + m_pSyntax->RestorePos(m_pSyntax->m_HeaderOffset + 9); + + FX_FILESIZE SavedPos = m_pSyntax->SavePos(); + bool bIsNumber; + CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) + return FALSE; + + FX_DWORD objnum = FXSYS_atoui(word); + word = m_pSyntax->GetNextWord(&bIsNumber); + if (!bIsNumber) + return FALSE; + + FX_DWORD gennum = FXSYS_atoui(word); + if (m_pSyntax->GetKeyword() != "obj") { + m_pSyntax->RestorePos(SavedPos); + return FALSE; + } + + m_pLinearized = m_pSyntax->GetObject(nullptr, objnum, gennum, true); + if (!m_pLinearized) + return FALSE; + + CPDF_Dictionary* pDict = m_pLinearized->GetDict(); + if (pDict && pDict->GetElement("Linearized")) { + m_pSyntax->GetNextWord(nullptr); + + CPDF_Object* pLen = pDict->GetElement("L"); + if (!pLen) { + m_pLinearized->Release(); + m_pLinearized = nullptr; + return FALSE; + } + + if (pLen->GetInteger() != (int)pFileAccess->GetSize()) + return FALSE; + + if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P"))) + m_dwFirstPageNo = pNo->GetInteger(); + + if (CPDF_Number* pTable = ToNumber(pDict->GetElement("T"))) + m_LastXRefOffset = pTable->GetInteger(); + + return TRUE; + } + m_pLinearized->Release(); + m_pLinearized = nullptr; + return FALSE; +} + +CPDF_Parser::Error CPDF_Parser::StartAsyncParse(IFX_FileRead* pFileAccess) { + CloseParser(); + m_bXRefStream = FALSE; + m_LastXRefOffset = 0; + m_bOwnFileRead = true; + + int32_t offset = GetHeaderOffset(pFileAccess); + if (offset == -1) + return FORMAT_ERROR; + + if (!IsLinearizedFile(pFileAccess, offset)) { + m_pSyntax->m_pFileAccess = nullptr; + return StartParse(pFileAccess); + } + + m_pDocument = new CPDF_Document(this); + FX_FILESIZE dwFirstXRefOffset = m_pSyntax->SavePos(); + + FX_BOOL bXRefRebuilt = FALSE; + FX_BOOL bLoadV4 = FALSE; + if (!(bLoadV4 = LoadCrossRefV4(dwFirstXRefOffset, 0, FALSE)) && + !LoadCrossRefV5(&dwFirstXRefOffset, TRUE)) { + if (!RebuildCrossRef()) + return FORMAT_ERROR; + + bXRefRebuilt = TRUE; + m_LastXRefOffset = 0; + } + + if (bLoadV4) { + m_pTrailer = LoadTrailerV4(); + if (!m_pTrailer) + return SUCCESS; + + int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); + if (xrefsize > 0) + ShrinkObjectMap(xrefsize); + } + + Error eRet = SetEncryptHandler(); + if (eRet != SUCCESS) + return eRet; + + m_pDocument->LoadAsynDoc(m_pLinearized->GetDict()); + if (!m_pDocument->GetRoot() || m_pDocument->GetPageCount() == 0) { + if (bXRefRebuilt) + return FORMAT_ERROR; + + ReleaseEncryptHandler(); + if (!RebuildCrossRef()) + return FORMAT_ERROR; + + eRet = SetEncryptHandler(); + if (eRet != SUCCESS) + return eRet; + + m_pDocument->LoadAsynDoc(m_pLinearized->GetDict()); + if (!m_pDocument->GetRoot()) + return FORMAT_ERROR; + } + + if (GetRootObjNum() == 0) { + ReleaseEncryptHandler(); + if (!RebuildCrossRef() || GetRootObjNum() == 0) + return FORMAT_ERROR; + + eRet = SetEncryptHandler(); + if (eRet != SUCCESS) + return eRet; + } + + if (m_pSecurityHandler && m_pSecurityHandler->IsMetadataEncrypted()) { + if (CPDF_Reference* pMetadata = + ToReference(m_pDocument->GetRoot()->GetElement("Metadata"))) + m_pSyntax->m_MetadataObjnum = pMetadata->GetRefObjNum(); + } + return SUCCESS; +} + +FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV5(FX_FILESIZE xrefpos) { + if (!LoadCrossRefV5(&xrefpos, FALSE)) + return FALSE; + + std::set seen_xrefpos; + while (xrefpos) { + seen_xrefpos.insert(xrefpos); + if (!LoadCrossRefV5(&xrefpos, FALSE)) + return FALSE; + + // Check for circular references. + if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) + return FALSE; + } + m_ObjectStreamMap.clear(); + m_bXRefStream = TRUE; + return TRUE; +} + +CPDF_Parser::Error CPDF_Parser::LoadLinearizedMainXRefTable() { + FX_DWORD dwSaveMetadataObjnum = m_pSyntax->m_MetadataObjnum; + m_pSyntax->m_MetadataObjnum = 0; + if (m_pTrailer) { + m_pTrailer->Release(); + m_pTrailer = nullptr; + } + + m_pSyntax->RestorePos(m_LastXRefOffset - m_pSyntax->m_HeaderOffset); + uint8_t ch = 0; + FX_DWORD dwCount = 0; + m_pSyntax->GetNextChar(ch); + while (PDFCharIsWhitespace(ch)) { + ++dwCount; + if (m_pSyntax->m_FileLen >= + (FX_FILESIZE)(m_pSyntax->SavePos() + m_pSyntax->m_HeaderOffset)) { + break; + } + m_pSyntax->GetNextChar(ch); + } + m_LastXRefOffset += dwCount; + m_ObjectStreamMap.clear(); + m_ObjCache.clear(); + + if (!LoadLinearizedAllCrossRefV4(m_LastXRefOffset, m_dwXrefStartObjNum) && + !LoadLinearizedAllCrossRefV5(m_LastXRefOffset)) { + m_LastXRefOffset = 0; + m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum; + return FORMAT_ERROR; + } + + m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum; + return SUCCESS; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp new file mode 100644 index 0000000000..f427ec5d81 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp @@ -0,0 +1,40 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/embedder_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +class CPDFParserEmbeddertest : public EmbedderTest {}; + +TEST_F(CPDFParserEmbeddertest, LoadError_454695) { + // Test a dictionary with hex string instead of correct content. + // Verify that the defective pdf shouldn't be opened correctly. + EXPECT_FALSE(OpenDocument("bug_454695.pdf")); +} + +TEST_F(CPDFParserEmbeddertest, Bug_481363) { + // Test colorspace object with malformed dictionary. + EXPECT_TRUE(OpenDocument("bug_481363.pdf")); + FPDF_PAGE page = LoadPage(0); + EXPECT_NE(nullptr, page); + UnloadPage(page); +} + +TEST_F(CPDFParserEmbeddertest, Bug_544880) { + // Test self referencing /Pages object. + EXPECT_TRUE(OpenDocument("bug_544880.pdf")); + // Shouldn't crash. We don't check the return value here because we get the + // the count from the "/Count 1" in the testcase (at the time of writing) + // rather than the actual count (0). + (void)GetPageCount(); +} + +TEST_F(CPDFParserEmbeddertest, Feature_Linearized_Loading) { + EXPECT_TRUE(OpenDocument("feature_linearized_loading.pdf", true)); +} + +TEST_F(CPDFParserEmbeddertest, Bug_325) { + EXPECT_FALSE(OpenDocument("bug_325_a.pdf")); + EXPECT_FALSE(OpenDocument("bug_325_b.pdf")); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp new file mode 100644 index 0000000000..2d1dcd4b5c --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp @@ -0,0 +1,202 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include +#include + +#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_stream.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/utils/path_service.h" + +// Provide a way to read test data from a buffer instead of a file. +class CFX_TestBufferRead : public IFX_FileRead { + public: + CFX_TestBufferRead(const unsigned char* buffer_in, size_t buf_size) + : buffer_(buffer_in), total_size_(buf_size) {} + + // IFX_Stream + void Release() override { delete this; } + + // IFX_FileRead + FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { + if (offset < 0 || offset + size > total_size_) { + return FALSE; + } + + memcpy(buffer, buffer_ + offset, size); + return TRUE; + } + FX_FILESIZE GetSize() override { return (FX_FILESIZE)total_size_; }; + + protected: + const unsigned char* buffer_; + size_t total_size_; +}; + +// A wrapper class to help test member functions of CPDF_Parser. +class CPDF_TestParser : public CPDF_Parser { + public: + CPDF_TestParser() {} + ~CPDF_TestParser() {} + + // Setup reading from a file and initial states. + bool InitTestFromFile(const FX_CHAR* path) { + IFX_FileRead* pFileAccess = FX_CreateFileRead(path); + if (!pFileAccess) + return false; + + // For the test file, the header is set at the beginning. + m_pSyntax->InitParser(pFileAccess, 0); + return true; + } + + // Setup reading from a buffer and initial states. + bool InitTestFromBuffer(const unsigned char* buffer, size_t len) { + CFX_TestBufferRead* buffer_reader = new CFX_TestBufferRead(buffer, len); + + // For the test file, the header is set at the beginning. + m_pSyntax->InitParser(buffer_reader, 0); + return true; + } + + private: + // Add test cases here as private friend so that protected members in + // CPDF_Parser can be accessed by test cases. + // Need to access RebuildCrossRef. + FRIEND_TEST(cpdf_parser, RebuildCrossRefCorrectly); + FRIEND_TEST(cpdf_parser, RebuildCrossRefFailed); + // Need to access LoadCrossRefV4. + FRIEND_TEST(cpdf_parser, LoadCrossRefV4); +}; + +TEST(cpdf_parser, RebuildCrossRefCorrectly) { + CPDF_TestParser parser; + std::string test_file; + ASSERT_TRUE(PathService::GetTestFilePath("parser_rebuildxref_correct.pdf", + &test_file)); + ASSERT_TRUE(parser.InitTestFromFile(test_file.c_str())) << test_file; + + ASSERT_TRUE(parser.RebuildCrossRef()); + const FX_FILESIZE offsets[] = {0, 15, 61, 154, 296, 374, 450}; + const FX_WORD versions[] = {0, 0, 2, 4, 6, 8, 0}; + for (size_t i = 0; i < FX_ArraySize(offsets); ++i) + EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); + for (size_t i = 0; i < FX_ArraySize(versions); ++i) + EXPECT_EQ(versions[i], parser.m_ObjectInfo[i].gennum); +} + +TEST(cpdf_parser, RebuildCrossRefFailed) { + CPDF_TestParser parser; + std::string test_file; + ASSERT_TRUE(PathService::GetTestFilePath( + "parser_rebuildxref_error_notrailer.pdf", &test_file)); + ASSERT_TRUE(parser.InitTestFromFile(test_file.c_str())) << test_file; + + ASSERT_FALSE(parser.RebuildCrossRef()); +} + +TEST(cpdf_parser, LoadCrossRefV4) { + { + const unsigned char xref_table[] = + "xref \n" + "0 6 \n" + "0000000003 65535 f \n" + "0000000017 00000 n \n" + "0000000081 00000 n \n" + "0000000000 00007 f \n" + "0000000331 00000 n \n" + "0000000409 00000 n \n" + "trail"; // Needed to end cross ref table reading. + CPDF_TestParser parser; + ASSERT_TRUE( + parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); + + ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); + const FX_FILESIZE offsets[] = {0, 17, 81, 0, 331, 409}; + const uint8_t types[] = {0, 1, 1, 0, 1, 1}; + for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { + EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); + EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); + } + } + { + const unsigned char xref_table[] = + "xref \n" + "0 1 \n" + "0000000000 65535 f \n" + "3 1 \n" + "0000025325 00000 n \n" + "8 2 \n" + "0000025518 00002 n \n" + "0000025635 00000 n \n" + "12 1 \n" + "0000025777 00000 n \n" + "trail"; // Needed to end cross ref table reading. + CPDF_TestParser parser; + ASSERT_TRUE( + parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); + + ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); + const FX_FILESIZE offsets[] = {0, 0, 0, 25325, 0, 0, 0, + 0, 25518, 25635, 0, 0, 25777}; + const uint8_t types[] = {0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1}; + for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { + EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); + EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); + } + } + { + const unsigned char xref_table[] = + "xref \n" + "0 1 \n" + "0000000000 65535 f \n" + "3 1 \n" + "0000025325 00000 n \n" + "8 2 \n" + "0000000000 65535 f \n" + "0000025635 00000 n \n" + "12 1 \n" + "0000025777 00000 n \n" + "trail"; // Needed to end cross ref table reading. + CPDF_TestParser parser; + ASSERT_TRUE( + parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); + + ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); + const FX_FILESIZE offsets[] = {0, 0, 0, 25325, 0, 0, 0, + 0, 0, 25635, 0, 0, 25777}; + const uint8_t types[] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1}; + for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { + EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); + EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); + } + } + { + const unsigned char xref_table[] = + "xref \n" + "0 7 \n" + "0000000002 65535 f \n" + "0000000023 00000 n \n" + "0000000003 65535 f \n" + "0000000004 65535 f \n" + "0000000000 65535 f \n" + "0000000045 00000 n \n" + "0000000179 00000 n \n" + "trail"; // Needed to end cross ref table reading. + CPDF_TestParser parser; + ASSERT_TRUE( + parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); + + ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); + const FX_FILESIZE offsets[] = {0, 23, 0, 0, 0, 45, 179}; + const uint8_t types[] = {0, 1, 0, 0, 0, 1, 1}; + for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { + EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); + EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); + } + } +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_reference.cpp b/core/fpdfapi/fpdf_parser/cpdf_reference.cpp new file mode 100644 index 0000000000..4aede7d07a --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_reference.cpp @@ -0,0 +1,72 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_reference.h" + +#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" + +CPDF_Reference::CPDF_Reference(CPDF_IndirectObjectHolder* pDoc, int objnum) + : m_pObjList(pDoc), m_RefObjNum(objnum) {} + +CPDF_Reference::~CPDF_Reference() {} + +CPDF_Object::Type CPDF_Reference::GetType() const { + return REFERENCE; +} + +CFX_ByteString CPDF_Reference::GetString() const { + CPDF_Object* obj = SafeGetDirect(); + return obj ? obj->GetString() : CFX_ByteString(); +} + +CFX_ByteStringC CPDF_Reference::GetConstString() const { + CPDF_Object* obj = SafeGetDirect(); + return obj ? obj->GetConstString() : CFX_ByteStringC(); +} + +FX_FLOAT CPDF_Reference::GetNumber() const { + CPDF_Object* obj = SafeGetDirect(); + return obj ? obj->GetNumber() : 0; +} + +int CPDF_Reference::GetInteger() const { + CPDF_Object* obj = SafeGetDirect(); + return obj ? obj->GetInteger() : 0; +} + +CPDF_Dictionary* CPDF_Reference::GetDict() const { + CPDF_Object* obj = SafeGetDirect(); + return obj ? obj->GetDict() : nullptr; +} + +bool CPDF_Reference::IsReference() const { + return true; +} + +CPDF_Reference* CPDF_Reference::AsReference() { + return this; +} + +const CPDF_Reference* CPDF_Reference::AsReference() const { + return this; +} + +CPDF_Object* CPDF_Reference::Clone(FX_BOOL bDirect) const { + if (bDirect) { + auto* pDirect = GetDirect(); + return pDirect ? pDirect->Clone(TRUE) : nullptr; + } + return new CPDF_Reference(m_pObjList, m_RefObjNum); +} + +void CPDF_Reference::SetRef(CPDF_IndirectObjectHolder* pDoc, FX_DWORD objnum) { + m_pObjList = pDoc; + m_RefObjNum = objnum; +} + +CPDF_Object* CPDF_Reference::GetDirect() const { + return m_pObjList ? m_pObjList->GetIndirectObject(m_RefObjNum) : nullptr; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp new file mode 100644 index 0000000000..90d4e0b5ab --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp @@ -0,0 +1,170 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_simple_parser.h" + +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" + +CPDF_SimpleParser::CPDF_SimpleParser(const uint8_t* pData, FX_DWORD dwSize) + : m_pData(pData), m_dwSize(dwSize), m_dwCurPos(0) {} + +CPDF_SimpleParser::CPDF_SimpleParser(const CFX_ByteStringC& str) + : m_pData(str.GetPtr()), m_dwSize(str.GetLength()), m_dwCurPos(0) {} + +void CPDF_SimpleParser::ParseWord(const uint8_t*& pStart, FX_DWORD& dwSize) { + pStart = nullptr; + dwSize = 0; + uint8_t ch; + while (1) { + if (m_dwSize <= m_dwCurPos) + return; + ch = m_pData[m_dwCurPos++]; + while (PDFCharIsWhitespace(ch)) { + if (m_dwSize <= m_dwCurPos) + return; + ch = m_pData[m_dwCurPos++]; + } + + if (ch != '%') + break; + + while (1) { + if (m_dwSize <= m_dwCurPos) + return; + ch = m_pData[m_dwCurPos++]; + if (PDFCharIsLineEnding(ch)) + break; + } + } + + FX_DWORD start_pos = m_dwCurPos - 1; + pStart = m_pData + start_pos; + if (PDFCharIsDelimiter(ch)) { + if (ch == '/') { + while (1) { + if (m_dwSize <= m_dwCurPos) + return; + ch = m_pData[m_dwCurPos++]; + if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { + m_dwCurPos--; + dwSize = m_dwCurPos - start_pos; + return; + } + } + } else { + dwSize = 1; + if (ch == '<') { + if (m_dwSize <= m_dwCurPos) + return; + ch = m_pData[m_dwCurPos++]; + if (ch == '<') + dwSize = 2; + else + m_dwCurPos--; + } else if (ch == '>') { + if (m_dwSize <= m_dwCurPos) + return; + ch = m_pData[m_dwCurPos++]; + if (ch == '>') + dwSize = 2; + else + m_dwCurPos--; + } + } + return; + } + + dwSize = 1; + while (1) { + if (m_dwSize <= m_dwCurPos) + return; + ch = m_pData[m_dwCurPos++]; + + if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { + m_dwCurPos--; + break; + } + dwSize++; + } +} + +CFX_ByteStringC CPDF_SimpleParser::GetWord() { + const uint8_t* pStart; + FX_DWORD dwSize; + ParseWord(pStart, dwSize); + if (dwSize == 1 && pStart[0] == '<') { + while (m_dwCurPos < m_dwSize && m_pData[m_dwCurPos] != '>') { + m_dwCurPos++; + } + if (m_dwCurPos < m_dwSize) { + m_dwCurPos++; + } + return CFX_ByteStringC(pStart, + (FX_STRSIZE)(m_dwCurPos - (pStart - m_pData))); + } + if (dwSize == 1 && pStart[0] == '(') { + int level = 1; + while (m_dwCurPos < m_dwSize) { + if (m_pData[m_dwCurPos] == ')') { + level--; + if (level == 0) { + break; + } + } + if (m_pData[m_dwCurPos] == '\\') { + if (m_dwSize <= m_dwCurPos) { + break; + } + m_dwCurPos++; + } else if (m_pData[m_dwCurPos] == '(') { + level++; + } + if (m_dwSize <= m_dwCurPos) { + break; + } + m_dwCurPos++; + } + if (m_dwCurPos < m_dwSize) { + m_dwCurPos++; + } + return CFX_ByteStringC(pStart, + (FX_STRSIZE)(m_dwCurPos - (pStart - m_pData))); + } + return CFX_ByteStringC(pStart, dwSize); +} + +bool CPDF_SimpleParser::FindTagParamFromStart(const CFX_ByteStringC& token, + int nParams) { + nParams++; + FX_DWORD* pBuf = FX_Alloc(FX_DWORD, nParams); + int buf_index = 0; + int buf_count = 0; + m_dwCurPos = 0; + while (1) { + pBuf[buf_index++] = m_dwCurPos; + if (buf_index == nParams) { + buf_index = 0; + } + buf_count++; + if (buf_count > nParams) { + buf_count = nParams; + } + CFX_ByteStringC word = GetWord(); + if (word.IsEmpty()) { + FX_Free(pBuf); + return false; + } + if (word == token) { + if (buf_count < nParams) { + continue; + } + m_dwCurPos = pBuf[buf_index]; + FX_Free(pBuf); + return true; + } + } + return false; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp new file mode 100644 index 0000000000..a9acff4155 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp @@ -0,0 +1,96 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fpdfapi/cpdf_simple_parser.h" + +#include + +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" +#include "core/include/fxcrt/fx_basic.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/test_support.h" + +TEST(SimpleParserTest, GetWord) { + pdfium::StrFuncTestData test_data[] = { + // Empty src string. + STR_IN_OUT_CASE("", ""), + // Content with whitespaces only. + STR_IN_OUT_CASE(" \t \0 \n", ""), + // Content with comments only. + STR_IN_OUT_CASE("%this is a test case\r\n%2nd line", ""), + // Mixed whitespaces and comments. + STR_IN_OUT_CASE(" \t \0%try()%haha\n %another line \aa", ""), + // Name. + STR_IN_OUT_CASE(" /Tester ", "/Tester"), + // String. + STR_IN_OUT_CASE("\t(nice day)!\n ", "(nice day)"), + // String with nested braces. + STR_IN_OUT_CASE("\t(It is a (long) day)!\n ", "(It is a (long) day)"), + // String with escaped chars. + STR_IN_OUT_CASE("\t(It is a \\(long\\) day!)hi\n ", + "(It is a \\(long\\) day!)"), + // Hex string. + STR_IN_OUT_CASE(" \n<4545acdfedertt>abc ", "<4545acdfedertt>"), + STR_IN_OUT_CASE(" \n<4545aertt>abc ", "<4545a"), + // Dictionary. + STR_IN_OUT_CASE("<>", "<<"), + STR_IN_OUT_CASE("\t\t<< /abc>>", "<<"), + // Handling ending delimiters. + STR_IN_OUT_CASE("> little bear", ">"), + STR_IN_OUT_CASE(") another bear", ")"), STR_IN_OUT_CASE(">> end ", ">>"), + // No ending delimiters. + STR_IN_OUT_CASE("(sdfgfgbcv", "(sdfgfgbcv"), + // Regular cases. + STR_IN_OUT_CASE("apple pear", "apple"), + STR_IN_OUT_CASE(" pi=3.1415 ", "pi=3.1415"), + STR_IN_OUT_CASE(" p t x c ", "p"), STR_IN_OUT_CASE(" pt\0xc ", "pt"), + STR_IN_OUT_CASE(" $^&&*\t\0sdff ", "$^&&*"), + STR_IN_OUT_CASE("\n\r+3.5656 -11.0", "+3.5656"), + }; + for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { + const pdfium::StrFuncTestData& data = test_data[i]; + CPDF_SimpleParser parser(data.input, data.input_size); + CFX_ByteStringC word = parser.GetWord(); + EXPECT_EQ(std::string(reinterpret_cast(data.expected), + data.expected_size), + std::string(word.GetCStr(), word.GetLength())) + << " for case " << i; + } +} + +TEST(SimpleParserTest, FindTagParamFromStart) { + struct FindTagTestStruct { + const unsigned char* input; + unsigned int input_size; + const char* token; + int num_params; + bool result; + unsigned int result_pos; + } test_data[] = { + // Empty strings. + STR_IN_TEST_CASE("", "Tj", 1, false, 0), + STR_IN_TEST_CASE("", "", 1, false, 0), + // Empty token. + STR_IN_TEST_CASE(" T j", "", 1, false, 5), + // No parameter. + STR_IN_TEST_CASE("Tj", "Tj", 1, false, 2), + STR_IN_TEST_CASE("(Tj", "Tj", 1, false, 3), + // Partial token match. + STR_IN_TEST_CASE("\r12\t34 56 78Tj", "Tj", 1, false, 15), + // Regular cases with various parameters. + STR_IN_TEST_CASE("\r\0abd Tj", "Tj", 1, true, 0), + STR_IN_TEST_CASE("12 4 Tj 3 46 Tj", "Tj", 1, true, 2), + STR_IN_TEST_CASE("er^ 2 (34) (5667) Tj", "Tj", 2, true, 5), + STR_IN_TEST_CASE("<344> (232)\t343.4\n12 45 Tj", "Tj", 3, true, 11), + STR_IN_TEST_CASE("1 2 3 4 5 6 7 8 cm", "cm", 6, true, 3), + }; + for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { + const FindTagTestStruct& data = test_data[i]; + CPDF_SimpleParser parser(data.input, data.input_size); + EXPECT_EQ(data.result, + parser.FindTagParamFromStart(data.token, data.num_params)) + << " for case " << i; + EXPECT_EQ(data.result_pos, parser.GetCurPos()) << " for case " << i; + } +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp new file mode 100644 index 0000000000..b73238997c --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp @@ -0,0 +1,342 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h" + +#include + +#include "core/include/fdrm/fx_crypt.h" +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fpdfapi/cpdf_simple_parser.h" +#include "core/include/fpdfapi/ipdf_security_handler.h" + +IPDF_CryptoHandler::~IPDF_CryptoHandler() {} + +void IPDF_CryptoHandler::Decrypt(FX_DWORD objnum, + FX_DWORD gennum, + CFX_ByteString& str) { + CFX_BinaryBuf dest_buf; + void* context = DecryptStart(objnum, gennum); + DecryptStream(context, (const uint8_t*)str, str.GetLength(), dest_buf); + DecryptFinish(context, dest_buf); + str = dest_buf; +} + +void CPDF_StandardCryptoHandler::CryptBlock(FX_BOOL bEncrypt, + FX_DWORD objnum, + FX_DWORD gennum, + const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t* dest_buf, + FX_DWORD& dest_size) { + if (m_Cipher == FXCIPHER_NONE) { + FXSYS_memcpy(dest_buf, src_buf, src_size); + return; + } + uint8_t realkey[16]; + int realkeylen = 16; + if (m_Cipher != FXCIPHER_AES || m_KeyLen != 32) { + uint8_t key1[32]; + FXSYS_memcpy(key1, m_EncryptKey, m_KeyLen); + key1[m_KeyLen + 0] = (uint8_t)objnum; + key1[m_KeyLen + 1] = (uint8_t)(objnum >> 8); + key1[m_KeyLen + 2] = (uint8_t)(objnum >> 16); + key1[m_KeyLen + 3] = (uint8_t)gennum; + key1[m_KeyLen + 4] = (uint8_t)(gennum >> 8); + FXSYS_memcpy(key1 + m_KeyLen, &objnum, 3); + FXSYS_memcpy(key1 + m_KeyLen + 3, &gennum, 2); + if (m_Cipher == FXCIPHER_AES) { + FXSYS_memcpy(key1 + m_KeyLen + 5, "sAlT", 4); + } + CRYPT_MD5Generate( + key1, m_Cipher == FXCIPHER_AES ? m_KeyLen + 9 : m_KeyLen + 5, realkey); + realkeylen = m_KeyLen + 5; + if (realkeylen > 16) { + realkeylen = 16; + } + } + if (m_Cipher == FXCIPHER_AES) { + CRYPT_AESSetKey(m_pAESContext, 16, m_KeyLen == 32 ? m_EncryptKey : realkey, + m_KeyLen, bEncrypt); + if (bEncrypt) { + uint8_t iv[16]; + for (int i = 0; i < 16; i++) { + iv[i] = (uint8_t)rand(); + } + CRYPT_AESSetIV(m_pAESContext, iv); + FXSYS_memcpy(dest_buf, iv, 16); + int nblocks = src_size / 16; + CRYPT_AESEncrypt(m_pAESContext, dest_buf + 16, src_buf, nblocks * 16); + uint8_t padding[16]; + FXSYS_memcpy(padding, src_buf + nblocks * 16, src_size % 16); + FXSYS_memset(padding + src_size % 16, 16 - src_size % 16, + 16 - src_size % 16); + CRYPT_AESEncrypt(m_pAESContext, dest_buf + nblocks * 16 + 16, padding, + 16); + dest_size = 32 + nblocks * 16; + } else { + CRYPT_AESSetIV(m_pAESContext, src_buf); + CRYPT_AESDecrypt(m_pAESContext, dest_buf, src_buf + 16, src_size - 16); + dest_size = src_size - 16; + dest_size -= dest_buf[dest_size - 1]; + } + } else { + ASSERT(dest_size == src_size); + if (dest_buf != src_buf) { + FXSYS_memcpy(dest_buf, src_buf, src_size); + } + CRYPT_ArcFourCryptBlock(dest_buf, dest_size, realkey, realkeylen); + } +} + +struct AESCryptContext { + uint8_t m_Context[2048]; + FX_BOOL m_bIV; + uint8_t m_Block[16]; + FX_DWORD m_BlockOffset; +}; + +void* CPDF_StandardCryptoHandler::CryptStart(FX_DWORD objnum, + FX_DWORD gennum, + FX_BOOL bEncrypt) { + if (m_Cipher == FXCIPHER_NONE) { + return this; + } + if (m_Cipher == FXCIPHER_AES && m_KeyLen == 32) { + AESCryptContext* pContext = FX_Alloc(AESCryptContext, 1); + pContext->m_bIV = TRUE; + pContext->m_BlockOffset = 0; + CRYPT_AESSetKey(pContext->m_Context, 16, m_EncryptKey, 32, bEncrypt); + if (bEncrypt) { + for (int i = 0; i < 16; i++) { + pContext->m_Block[i] = (uint8_t)rand(); + } + CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block); + } + return pContext; + } + uint8_t key1[48]; + FXSYS_memcpy(key1, m_EncryptKey, m_KeyLen); + FXSYS_memcpy(key1 + m_KeyLen, &objnum, 3); + FXSYS_memcpy(key1 + m_KeyLen + 3, &gennum, 2); + if (m_Cipher == FXCIPHER_AES) { + FXSYS_memcpy(key1 + m_KeyLen + 5, "sAlT", 4); + } + uint8_t realkey[16]; + CRYPT_MD5Generate( + key1, m_Cipher == FXCIPHER_AES ? m_KeyLen + 9 : m_KeyLen + 5, realkey); + int realkeylen = m_KeyLen + 5; + if (realkeylen > 16) { + realkeylen = 16; + } + if (m_Cipher == FXCIPHER_AES) { + AESCryptContext* pContext = FX_Alloc(AESCryptContext, 1); + pContext->m_bIV = TRUE; + pContext->m_BlockOffset = 0; + CRYPT_AESSetKey(pContext->m_Context, 16, realkey, 16, bEncrypt); + if (bEncrypt) { + for (int i = 0; i < 16; i++) { + pContext->m_Block[i] = (uint8_t)rand(); + } + CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block); + } + return pContext; + } + void* pContext = FX_Alloc(uint8_t, 1040); + CRYPT_ArcFourSetup(pContext, realkey, realkeylen); + return pContext; +} +FX_BOOL CPDF_StandardCryptoHandler::CryptStream(void* context, + const uint8_t* src_buf, + FX_DWORD src_size, + CFX_BinaryBuf& dest_buf, + FX_BOOL bEncrypt) { + if (!context) { + return FALSE; + } + if (m_Cipher == FXCIPHER_NONE) { + dest_buf.AppendBlock(src_buf, src_size); + return TRUE; + } + if (m_Cipher == FXCIPHER_RC4) { + int old_size = dest_buf.GetSize(); + dest_buf.AppendBlock(src_buf, src_size); + CRYPT_ArcFourCrypt(context, dest_buf.GetBuffer() + old_size, src_size); + return TRUE; + } + AESCryptContext* pContext = (AESCryptContext*)context; + if (pContext->m_bIV && bEncrypt) { + dest_buf.AppendBlock(pContext->m_Block, 16); + pContext->m_bIV = FALSE; + } + FX_DWORD src_off = 0; + FX_DWORD src_left = src_size; + while (1) { + FX_DWORD copy_size = 16 - pContext->m_BlockOffset; + if (copy_size > src_left) { + copy_size = src_left; + } + FXSYS_memcpy(pContext->m_Block + pContext->m_BlockOffset, src_buf + src_off, + copy_size); + src_off += copy_size; + src_left -= copy_size; + pContext->m_BlockOffset += copy_size; + if (pContext->m_BlockOffset == 16) { + if (!bEncrypt && pContext->m_bIV) { + CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block); + pContext->m_bIV = FALSE; + pContext->m_BlockOffset = 0; + } else if (src_off < src_size) { + uint8_t block_buf[16]; + if (bEncrypt) { + CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, + 16); + } else { + CRYPT_AESDecrypt(pContext->m_Context, block_buf, pContext->m_Block, + 16); + } + dest_buf.AppendBlock(block_buf, 16); + pContext->m_BlockOffset = 0; + } + } + if (!src_left) { + break; + } + } + return TRUE; +} +FX_BOOL CPDF_StandardCryptoHandler::CryptFinish(void* context, + CFX_BinaryBuf& dest_buf, + FX_BOOL bEncrypt) { + if (!context) { + return FALSE; + } + if (m_Cipher == FXCIPHER_NONE) { + return TRUE; + } + if (m_Cipher == FXCIPHER_RC4) { + FX_Free(context); + return TRUE; + } + AESCryptContext* pContext = (AESCryptContext*)context; + if (bEncrypt) { + uint8_t block_buf[16]; + if (pContext->m_BlockOffset == 16) { + CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, 16); + dest_buf.AppendBlock(block_buf, 16); + pContext->m_BlockOffset = 0; + } + FXSYS_memset(pContext->m_Block + pContext->m_BlockOffset, + (uint8_t)(16 - pContext->m_BlockOffset), + 16 - pContext->m_BlockOffset); + CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, 16); + dest_buf.AppendBlock(block_buf, 16); + } else if (pContext->m_BlockOffset == 16) { + uint8_t block_buf[16]; + CRYPT_AESDecrypt(pContext->m_Context, block_buf, pContext->m_Block, 16); + if (block_buf[15] <= 16) { + dest_buf.AppendBlock(block_buf, 16 - block_buf[15]); + } + } + FX_Free(pContext); + return TRUE; +} +void* CPDF_StandardCryptoHandler::DecryptStart(FX_DWORD objnum, + FX_DWORD gennum) { + return CryptStart(objnum, gennum, FALSE); +} +FX_DWORD CPDF_StandardCryptoHandler::DecryptGetSize(FX_DWORD src_size) { + return m_Cipher == FXCIPHER_AES ? src_size - 16 : src_size; +} + +FX_BOOL CPDF_StandardCryptoHandler::Init( + CPDF_Dictionary* pEncryptDict, + IPDF_SecurityHandler* pSecurityHandler) { + const uint8_t* key; + if (!pSecurityHandler->GetCryptInfo(m_Cipher, key, m_KeyLen)) { + return FALSE; + } + if (m_KeyLen > 32 || m_KeyLen < 0) { + return FALSE; + } + if (m_Cipher != FXCIPHER_NONE) { + FXSYS_memcpy(m_EncryptKey, key, m_KeyLen); + } + if (m_Cipher == FXCIPHER_AES) { + m_pAESContext = FX_Alloc(uint8_t, 2048); + } + return TRUE; +} + +FX_BOOL CPDF_StandardCryptoHandler::Init(int cipher, + const uint8_t* key, + int keylen) { + if (cipher == FXCIPHER_AES) { + switch (keylen) { + case 16: + case 24: + case 32: + break; + default: + return FALSE; + } + } else if (cipher == FXCIPHER_AES2) { + if (keylen != 32) { + return FALSE; + } + } else if (cipher == FXCIPHER_RC4) { + if (keylen < 5 || keylen > 16) { + return FALSE; + } + } else { + if (keylen > 32) { + keylen = 32; + } + } + m_Cipher = cipher; + m_KeyLen = keylen; + FXSYS_memcpy(m_EncryptKey, key, keylen); + if (m_Cipher == FXCIPHER_AES) { + m_pAESContext = FX_Alloc(uint8_t, 2048); + } + return TRUE; +} +FX_BOOL CPDF_StandardCryptoHandler::DecryptStream(void* context, + const uint8_t* src_buf, + FX_DWORD src_size, + CFX_BinaryBuf& dest_buf) { + return CryptStream(context, src_buf, src_size, dest_buf, FALSE); +} +FX_BOOL CPDF_StandardCryptoHandler::DecryptFinish(void* context, + CFX_BinaryBuf& dest_buf) { + return CryptFinish(context, dest_buf, FALSE); +} +FX_DWORD CPDF_StandardCryptoHandler::EncryptGetSize(FX_DWORD objnum, + FX_DWORD version, + const uint8_t* src_buf, + FX_DWORD src_size) { + if (m_Cipher == FXCIPHER_AES) { + return src_size + 32; + } + return src_size; +} +FX_BOOL CPDF_StandardCryptoHandler::EncryptContent(FX_DWORD objnum, + FX_DWORD gennum, + const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t* dest_buf, + FX_DWORD& dest_size) { + CryptBlock(TRUE, objnum, gennum, src_buf, src_size, dest_buf, dest_size); + return TRUE; +} +CPDF_StandardCryptoHandler::CPDF_StandardCryptoHandler() { + m_pAESContext = NULL; + m_Cipher = FXCIPHER_NONE; + m_KeyLen = 0; +} +CPDF_StandardCryptoHandler::~CPDF_StandardCryptoHandler() { + FX_Free(m_pAESContext); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h new file mode 100644 index 0000000000..28b7503f6e --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h @@ -0,0 +1,64 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_ +#define CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_ + +#include "core/include/fpdfapi/ipdf_crypto_handler.h" + +class CPDF_StandardCryptoHandler : public IPDF_CryptoHandler { + public: + CPDF_StandardCryptoHandler(); + ~CPDF_StandardCryptoHandler() override; + + // IPDF_CryptoHandler + FX_BOOL Init(CPDF_Dictionary* pEncryptDict, + IPDF_SecurityHandler* pSecurityHandler) override; + FX_DWORD DecryptGetSize(FX_DWORD src_size) override; + void* DecryptStart(FX_DWORD objnum, FX_DWORD gennum) override; + FX_BOOL DecryptStream(void* context, + const uint8_t* src_buf, + FX_DWORD src_size, + CFX_BinaryBuf& dest_buf) override; + FX_BOOL DecryptFinish(void* context, CFX_BinaryBuf& dest_buf) override; + FX_DWORD EncryptGetSize(FX_DWORD objnum, + FX_DWORD version, + const uint8_t* src_buf, + FX_DWORD src_size) override; + FX_BOOL EncryptContent(FX_DWORD objnum, + FX_DWORD version, + const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t* dest_buf, + FX_DWORD& dest_size) override; + + FX_BOOL Init(int cipher, const uint8_t* key, int keylen); + + protected: + virtual void CryptBlock(FX_BOOL bEncrypt, + FX_DWORD objnum, + FX_DWORD gennum, + const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t* dest_buf, + FX_DWORD& dest_size); + virtual void* CryptStart(FX_DWORD objnum, FX_DWORD gennum, FX_BOOL bEncrypt); + virtual FX_BOOL CryptStream(void* context, + const uint8_t* src_buf, + FX_DWORD src_size, + CFX_BinaryBuf& dest_buf, + FX_BOOL bEncrypt); + virtual FX_BOOL CryptFinish(void* context, + CFX_BinaryBuf& dest_buf, + FX_BOOL bEncrypt); + + uint8_t m_EncryptKey[32]; + int m_KeyLen; + int m_Cipher; + uint8_t* m_pAESContext; +}; + +#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_ diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp new file mode 100644 index 0000000000..e5eb4c8469 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp @@ -0,0 +1,714 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h" + +#include + +#include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h" +#include "core/include/fdrm/fx_crypt.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_object.h" +#include "core/include/fpdfapi/cpdf_parser.h" + +namespace { + +const uint8_t defpasscode[32] = { + 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, + 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, + 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a}; + +void CalcEncryptKey(CPDF_Dictionary* pEncrypt, + const uint8_t* password, + FX_DWORD pass_size, + uint8_t* key, + int keylen, + FX_BOOL bIgnoreMeta, + CPDF_Array* pIdArray) { + int revision = pEncrypt->GetIntegerBy("R"); + uint8_t passcode[32]; + for (FX_DWORD i = 0; i < 32; i++) { + passcode[i] = i < pass_size ? password[i] : defpasscode[i - pass_size]; + } + uint8_t md5[100]; + CRYPT_MD5Start(md5); + CRYPT_MD5Update(md5, passcode, 32); + CFX_ByteString okey = pEncrypt->GetStringBy("O"); + CRYPT_MD5Update(md5, (uint8_t*)okey.c_str(), okey.GetLength()); + FX_DWORD perm = pEncrypt->GetIntegerBy("P"); + CRYPT_MD5Update(md5, (uint8_t*)&perm, 4); + if (pIdArray) { + CFX_ByteString id = pIdArray->GetStringAt(0); + CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength()); + } + if (!bIgnoreMeta && revision >= 3 && + !pEncrypt->GetIntegerBy("EncryptMetadata", 1)) { + FX_DWORD tag = (FX_DWORD)-1; + CRYPT_MD5Update(md5, (uint8_t*)&tag, 4); + } + uint8_t digest[16]; + CRYPT_MD5Finish(md5, digest); + FX_DWORD copy_len = keylen; + if (copy_len > sizeof(digest)) { + copy_len = sizeof(digest); + } + if (revision >= 3) { + for (int i = 0; i < 50; i++) { + CRYPT_MD5Generate(digest, copy_len, digest); + } + } + FXSYS_memset(key, 0, keylen); + FXSYS_memcpy(key, digest, copy_len); +} + +} // namespace + +IPDF_SecurityHandler::~IPDF_SecurityHandler() {} + +CPDF_StandardSecurityHandler::CPDF_StandardSecurityHandler() { + m_Version = 0; + m_Revision = 0; + m_pParser = NULL; + m_pEncryptDict = NULL; + m_Permissions = 0; + m_Cipher = FXCIPHER_NONE; + m_KeyLen = 0; +} + +CPDF_StandardSecurityHandler::~CPDF_StandardSecurityHandler() {} + +IPDF_CryptoHandler* CPDF_StandardSecurityHandler::CreateCryptoHandler() { + return new CPDF_StandardCryptoHandler; +} + +FX_BOOL CPDF_StandardSecurityHandler::OnInit(CPDF_Parser* pParser, + CPDF_Dictionary* pEncryptDict) { + m_pParser = pParser; + if (!LoadDict(pEncryptDict)) { + return FALSE; + } + if (m_Cipher == FXCIPHER_NONE) { + return TRUE; + } + return CheckSecurity(m_KeyLen); +} +FX_BOOL CPDF_StandardSecurityHandler::CheckSecurity(int32_t key_len) { + CFX_ByteString password = m_pParser->GetPassword(); + if (CheckPassword(password, password.GetLength(), TRUE, m_EncryptKey, + key_len)) { + if (password.IsEmpty()) { + if (!CheckPassword(password, password.GetLength(), FALSE, m_EncryptKey, + key_len)) { + return FALSE; + } + } + return TRUE; + } + return CheckPassword(password, password.GetLength(), FALSE, m_EncryptKey, + key_len); +} +FX_DWORD CPDF_StandardSecurityHandler::GetPermissions() { + return m_Permissions; +} +static FX_BOOL _LoadCryptInfo(CPDF_Dictionary* pEncryptDict, + const CFX_ByteStringC& name, + int& cipher, + int& keylen) { + int Version = pEncryptDict->GetIntegerBy("V"); + cipher = FXCIPHER_RC4; + keylen = 0; + if (Version >= 4) { + CPDF_Dictionary* pCryptFilters = pEncryptDict->GetDictBy("CF"); + if (!pCryptFilters) { + return FALSE; + } + if (name == "Identity") { + cipher = FXCIPHER_NONE; + } else { + CPDF_Dictionary* pDefFilter = pCryptFilters->GetDictBy(name); + if (!pDefFilter) { + return FALSE; + } + int nKeyBits = 0; + if (Version == 4) { + nKeyBits = pDefFilter->GetIntegerBy("Length", 0); + if (nKeyBits == 0) { + nKeyBits = pEncryptDict->GetIntegerBy("Length", 128); + } + } else { + nKeyBits = pEncryptDict->GetIntegerBy("Length", 256); + } + if (nKeyBits < 40) { + nKeyBits *= 8; + } + keylen = nKeyBits / 8; + CFX_ByteString cipher_name = pDefFilter->GetStringBy("CFM"); + if (cipher_name == "AESV2" || cipher_name == "AESV3") { + cipher = FXCIPHER_AES; + } + } + } else { + keylen = Version > 1 ? pEncryptDict->GetIntegerBy("Length", 40) / 8 : 5; + } + if (keylen > 32 || keylen < 0) { + return FALSE; + } + return TRUE; +} + +FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict) { + m_pEncryptDict = pEncryptDict; + m_Version = pEncryptDict->GetIntegerBy("V"); + m_Revision = pEncryptDict->GetIntegerBy("R"); + m_Permissions = pEncryptDict->GetIntegerBy("P", -1); + if (m_Version < 4) { + return _LoadCryptInfo(pEncryptDict, CFX_ByteString(), m_Cipher, m_KeyLen); + } + CFX_ByteString stmf_name = pEncryptDict->GetStringBy("StmF"); + CFX_ByteString strf_name = pEncryptDict->GetStringBy("StrF"); + if (stmf_name != strf_name) { + return FALSE; + } + if (!_LoadCryptInfo(pEncryptDict, strf_name, m_Cipher, m_KeyLen)) { + return FALSE; + } + return TRUE; +} + +FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict, + FX_DWORD type, + int& cipher, + int& key_len) { + m_pEncryptDict = pEncryptDict; + m_Version = pEncryptDict->GetIntegerBy("V"); + m_Revision = pEncryptDict->GetIntegerBy("R"); + m_Permissions = pEncryptDict->GetIntegerBy("P", -1); + CFX_ByteString strf_name, stmf_name; + if (m_Version >= 4) { + stmf_name = pEncryptDict->GetStringBy("StmF"); + strf_name = pEncryptDict->GetStringBy("StrF"); + if (stmf_name != strf_name) { + return FALSE; + } + } + if (!_LoadCryptInfo(pEncryptDict, strf_name, cipher, key_len)) { + return FALSE; + } + m_Cipher = cipher; + m_KeyLen = key_len; + return TRUE; +} + +FX_BOOL CPDF_StandardSecurityHandler::GetCryptInfo(int& cipher, + const uint8_t*& buffer, + int& keylen) { + cipher = m_Cipher; + buffer = m_EncryptKey; + keylen = m_KeyLen; + return TRUE; +} +#define FX_GET_32WORD(n, b, i) \ + { \ + (n) = (FX_DWORD)( \ + ((uint64_t)(b)[(i)] << 24) | ((uint64_t)(b)[(i) + 1] << 16) | \ + ((uint64_t)(b)[(i) + 2] << 8) | ((uint64_t)(b)[(i) + 3])); \ + } +int BigOrder64BitsMod3(uint8_t* data) { + uint64_t ret = 0; + for (int i = 0; i < 4; ++i) { + FX_DWORD value; + FX_GET_32WORD(value, data, 4 * i); + ret <<= 32; + ret |= value; + ret %= 3; + } + return (int)ret; +} +void Revision6_Hash(const uint8_t* password, + FX_DWORD size, + const uint8_t* salt, + const uint8_t* vector, + uint8_t* hash) { + int iBlockSize = 32; + uint8_t sha[128]; + CRYPT_SHA256Start(sha); + CRYPT_SHA256Update(sha, password, size); + CRYPT_SHA256Update(sha, salt, 8); + if (vector) { + CRYPT_SHA256Update(sha, vector, 48); + } + uint8_t digest[32]; + CRYPT_SHA256Finish(sha, digest); + CFX_ByteTextBuf buf; + uint8_t* input = digest; + uint8_t* key = input; + uint8_t* iv = input + 16; + uint8_t* E = buf.GetBuffer(); + int iBufLen = buf.GetLength(); + CFX_ByteTextBuf interDigest; + int i = 0; + uint8_t* aes = FX_Alloc(uint8_t, 2048); + while (i < 64 || i < E[iBufLen - 1] + 32) { + int iRoundSize = size + iBlockSize; + if (vector) { + iRoundSize += 48; + } + iBufLen = iRoundSize * 64; + buf.EstimateSize(iBufLen); + E = buf.GetBuffer(); + CFX_ByteTextBuf content; + for (int j = 0; j < 64; ++j) { + content.AppendBlock(password, size); + content.AppendBlock(input, iBlockSize); + if (vector) { + content.AppendBlock(vector, 48); + } + } + CRYPT_AESSetKey(aes, 16, key, 16, TRUE); + CRYPT_AESSetIV(aes, iv); + CRYPT_AESEncrypt(aes, E, content.GetBuffer(), iBufLen); + int iHash = 0; + switch (BigOrder64BitsMod3(E)) { + case 0: + iHash = 0; + iBlockSize = 32; + break; + case 1: + iHash = 1; + iBlockSize = 48; + break; + default: + iHash = 2; + iBlockSize = 64; + break; + } + interDigest.EstimateSize(iBlockSize); + input = interDigest.GetBuffer(); + if (iHash == 0) { + CRYPT_SHA256Generate(E, iBufLen, input); + } else if (iHash == 1) { + CRYPT_SHA384Generate(E, iBufLen, input); + } else if (iHash == 2) { + CRYPT_SHA512Generate(E, iBufLen, input); + } + key = input; + iv = input + 16; + ++i; + } + FX_Free(aes); + if (hash) { + FXSYS_memcpy(hash, input, 32); + } +} +FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword( + const uint8_t* password, + FX_DWORD size, + FX_BOOL bOwner, + uint8_t* key) { + CFX_ByteString okey = + m_pEncryptDict ? m_pEncryptDict->GetStringBy("O") : CFX_ByteString(); + if (okey.GetLength() < 48) { + return FALSE; + } + CFX_ByteString ukey = + m_pEncryptDict ? m_pEncryptDict->GetStringBy("U") : CFX_ByteString(); + if (ukey.GetLength() < 48) { + return FALSE; + } + const uint8_t* pkey = bOwner ? (const uint8_t*)okey : (const uint8_t*)ukey; + uint8_t sha[128]; + uint8_t digest[32]; + if (m_Revision >= 6) { + Revision6_Hash(password, size, (const uint8_t*)pkey + 32, + (bOwner ? (const uint8_t*)ukey : NULL), digest); + } else { + CRYPT_SHA256Start(sha); + CRYPT_SHA256Update(sha, password, size); + CRYPT_SHA256Update(sha, pkey + 32, 8); + if (bOwner) { + CRYPT_SHA256Update(sha, ukey, 48); + } + CRYPT_SHA256Finish(sha, digest); + } + if (FXSYS_memcmp(digest, pkey, 32) != 0) { + return FALSE; + } + if (!key) { + return TRUE; + } + if (m_Revision >= 6) { + Revision6_Hash(password, size, (const uint8_t*)pkey + 40, + (bOwner ? (const uint8_t*)ukey : NULL), digest); + } else { + CRYPT_SHA256Start(sha); + CRYPT_SHA256Update(sha, password, size); + CRYPT_SHA256Update(sha, pkey + 40, 8); + if (bOwner) { + CRYPT_SHA256Update(sha, ukey, 48); + } + CRYPT_SHA256Finish(sha, digest); + } + CFX_ByteString ekey = m_pEncryptDict + ? m_pEncryptDict->GetStringBy(bOwner ? "OE" : "UE") + : CFX_ByteString(); + if (ekey.GetLength() < 32) { + return FALSE; + } + uint8_t* aes = FX_Alloc(uint8_t, 2048); + CRYPT_AESSetKey(aes, 16, digest, 32, FALSE); + uint8_t iv[16]; + FXSYS_memset(iv, 0, 16); + CRYPT_AESSetIV(aes, iv); + CRYPT_AESDecrypt(aes, key, ekey, 32); + CRYPT_AESSetKey(aes, 16, key, 32, FALSE); + CRYPT_AESSetIV(aes, iv); + CFX_ByteString perms = m_pEncryptDict->GetStringBy("Perms"); + if (perms.IsEmpty()) { + return FALSE; + } + uint8_t perms_buf[16]; + FXSYS_memset(perms_buf, 0, sizeof(perms_buf)); + FX_DWORD copy_len = sizeof(perms_buf); + if (copy_len > (FX_DWORD)perms.GetLength()) { + copy_len = perms.GetLength(); + } + FXSYS_memcpy(perms_buf, (const uint8_t*)perms, copy_len); + uint8_t buf[16]; + CRYPT_AESDecrypt(aes, buf, perms_buf, 16); + FX_Free(aes); + if (buf[9] != 'a' || buf[10] != 'd' || buf[11] != 'b') { + return FALSE; + } + if (FXDWORD_GET_LSBFIRST(buf) != m_Permissions) { + return FALSE; + } + if ((buf[8] == 'T' && !IsMetadataEncrypted()) || + (buf[8] == 'F' && IsMetadataEncrypted())) { + return FALSE; + } + return TRUE; +} + +int CPDF_StandardSecurityHandler::CheckPassword(const uint8_t* password, + FX_DWORD size, + FX_BOOL bOwner, + uint8_t* key, + int32_t key_len) { + if (m_Revision >= 5) { + return AES256_CheckPassword(password, size, bOwner, key); + } + uint8_t keybuf[32]; + if (!key) { + key = keybuf; + } + if (bOwner) { + return CheckOwnerPassword(password, size, key, key_len); + } + return CheckUserPassword(password, size, FALSE, key, key_len) || + CheckUserPassword(password, size, TRUE, key, key_len); +} +FX_BOOL CPDF_StandardSecurityHandler::CheckUserPassword( + const uint8_t* password, + FX_DWORD pass_size, + FX_BOOL bIgnoreEncryptMeta, + uint8_t* key, + int32_t key_len) { + CalcEncryptKey(m_pEncryptDict, password, pass_size, key, key_len, + bIgnoreEncryptMeta, m_pParser->GetIDArray()); + CFX_ByteString ukey = + m_pEncryptDict ? m_pEncryptDict->GetStringBy("U") : CFX_ByteString(); + if (ukey.GetLength() < 16) { + return FALSE; + } + uint8_t ukeybuf[32]; + if (m_Revision == 2) { + FXSYS_memcpy(ukeybuf, defpasscode, 32); + CRYPT_ArcFourCryptBlock(ukeybuf, 32, key, key_len); + } else { + uint8_t test[32], tmpkey[32]; + FX_DWORD copy_len = sizeof(test); + if (copy_len > (FX_DWORD)ukey.GetLength()) { + copy_len = ukey.GetLength(); + } + FXSYS_memset(test, 0, sizeof(test)); + FXSYS_memset(tmpkey, 0, sizeof(tmpkey)); + FXSYS_memcpy(test, ukey.c_str(), copy_len); + for (int i = 19; i >= 0; i--) { + for (int j = 0; j < key_len; j++) { + tmpkey[j] = key[j] ^ i; + } + CRYPT_ArcFourCryptBlock(test, 32, tmpkey, key_len); + } + uint8_t md5[100]; + CRYPT_MD5Start(md5); + CRYPT_MD5Update(md5, defpasscode, 32); + CPDF_Array* pIdArray = m_pParser->GetIDArray(); + if (pIdArray) { + CFX_ByteString id = pIdArray->GetStringAt(0); + CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength()); + } + CRYPT_MD5Finish(md5, ukeybuf); + return FXSYS_memcmp(test, ukeybuf, 16) == 0; + } + if (FXSYS_memcmp((void*)ukey.c_str(), ukeybuf, 16) == 0) { + return TRUE; + } + return FALSE; +} +CFX_ByteString CPDF_StandardSecurityHandler::GetUserPassword( + const uint8_t* owner_pass, + FX_DWORD pass_size, + int32_t key_len) { + CFX_ByteString okey = m_pEncryptDict->GetStringBy("O"); + uint8_t passcode[32]; + FX_DWORD i; + for (i = 0; i < 32; i++) { + passcode[i] = i < pass_size ? owner_pass[i] : defpasscode[i - pass_size]; + } + uint8_t digest[16]; + CRYPT_MD5Generate(passcode, 32, digest); + if (m_Revision >= 3) { + for (int i = 0; i < 50; i++) { + CRYPT_MD5Generate(digest, 16, digest); + } + } + uint8_t enckey[32]; + FXSYS_memset(enckey, 0, sizeof(enckey)); + FX_DWORD copy_len = key_len; + if (copy_len > sizeof(digest)) { + copy_len = sizeof(digest); + } + FXSYS_memcpy(enckey, digest, copy_len); + int okeylen = okey.GetLength(); + if (okeylen > 32) { + okeylen = 32; + } + uint8_t okeybuf[64]; + FXSYS_memset(okeybuf, 0, sizeof(okeybuf)); + FXSYS_memcpy(okeybuf, okey.c_str(), okeylen); + if (m_Revision == 2) { + CRYPT_ArcFourCryptBlock(okeybuf, okeylen, enckey, key_len); + } else { + for (int i = 19; i >= 0; i--) { + uint8_t tempkey[32]; + FXSYS_memset(tempkey, 0, sizeof(tempkey)); + for (int j = 0; j < m_KeyLen; j++) { + tempkey[j] = enckey[j] ^ i; + } + CRYPT_ArcFourCryptBlock(okeybuf, okeylen, tempkey, key_len); + } + } + int len = 32; + while (len && defpasscode[len - 1] == okeybuf[len - 1]) { + len--; + } + return CFX_ByteString(okeybuf, len); +} +FX_BOOL CPDF_StandardSecurityHandler::CheckOwnerPassword( + const uint8_t* password, + FX_DWORD pass_size, + uint8_t* key, + int32_t key_len) { + CFX_ByteString user_pass = GetUserPassword(password, pass_size, key_len); + if (CheckUserPassword(user_pass, user_pass.GetLength(), FALSE, key, + key_len)) { + return TRUE; + } + return CheckUserPassword(user_pass, user_pass.GetLength(), TRUE, key, + key_len); +} +FX_BOOL CPDF_StandardSecurityHandler::IsMetadataEncrypted() { + return m_pEncryptDict->GetBooleanBy("EncryptMetadata", TRUE); +} + +void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict, + CPDF_Array* pIdArray, + const uint8_t* user_pass, + FX_DWORD user_size, + const uint8_t* owner_pass, + FX_DWORD owner_size, + FX_BOOL bDefault, + FX_DWORD type) { + int cipher = 0, key_len = 0; + if (!LoadDict(pEncryptDict, type, cipher, key_len)) { + return; + } + if (bDefault && (!owner_pass || owner_size == 0)) { + owner_pass = user_pass; + owner_size = user_size; + } + if (m_Revision >= 5) { + int t = (int)time(NULL); + uint8_t sha[128]; + CRYPT_SHA256Start(sha); + CRYPT_SHA256Update(sha, (uint8_t*)&t, sizeof t); + CRYPT_SHA256Update(sha, m_EncryptKey, 32); + CRYPT_SHA256Update(sha, (uint8_t*)"there", 5); + CRYPT_SHA256Finish(sha, m_EncryptKey); + AES256_SetPassword(pEncryptDict, user_pass, user_size, FALSE, m_EncryptKey); + if (bDefault) { + AES256_SetPassword(pEncryptDict, owner_pass, owner_size, TRUE, + m_EncryptKey); + AES256_SetPerms(pEncryptDict, m_Permissions, + pEncryptDict->GetBooleanBy("EncryptMetadata", TRUE), + m_EncryptKey); + } + return; + } + if (bDefault) { + uint8_t passcode[32]; + FX_DWORD i; + for (i = 0; i < 32; i++) { + passcode[i] = + i < owner_size ? owner_pass[i] : defpasscode[i - owner_size]; + } + uint8_t digest[16]; + CRYPT_MD5Generate(passcode, 32, digest); + if (m_Revision >= 3) { + for (int i = 0; i < 50; i++) { + CRYPT_MD5Generate(digest, 16, digest); + } + } + uint8_t enckey[32]; + FXSYS_memcpy(enckey, digest, key_len); + for (i = 0; i < 32; i++) { + passcode[i] = i < user_size ? user_pass[i] : defpasscode[i - user_size]; + } + CRYPT_ArcFourCryptBlock(passcode, 32, enckey, key_len); + uint8_t tempkey[32]; + if (m_Revision >= 3) { + for (i = 1; i <= 19; i++) { + for (int j = 0; j < key_len; j++) { + tempkey[j] = enckey[j] ^ (uint8_t)i; + } + CRYPT_ArcFourCryptBlock(passcode, 32, tempkey, key_len); + } + } + pEncryptDict->SetAtString("O", CFX_ByteString(passcode, 32)); + } + CalcEncryptKey(m_pEncryptDict, (uint8_t*)user_pass, user_size, m_EncryptKey, + key_len, FALSE, pIdArray); + if (m_Revision < 3) { + uint8_t tempbuf[32]; + FXSYS_memcpy(tempbuf, defpasscode, 32); + CRYPT_ArcFourCryptBlock(tempbuf, 32, m_EncryptKey, key_len); + pEncryptDict->SetAtString("U", CFX_ByteString(tempbuf, 32)); + } else { + uint8_t md5[100]; + CRYPT_MD5Start(md5); + CRYPT_MD5Update(md5, defpasscode, 32); + if (pIdArray) { + CFX_ByteString id = pIdArray->GetStringAt(0); + CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength()); + } + uint8_t digest[32]; + CRYPT_MD5Finish(md5, digest); + CRYPT_ArcFourCryptBlock(digest, 16, m_EncryptKey, key_len); + uint8_t tempkey[32]; + for (int i = 1; i <= 19; i++) { + for (int j = 0; j < key_len; j++) { + tempkey[j] = m_EncryptKey[j] ^ (uint8_t)i; + } + CRYPT_ArcFourCryptBlock(digest, 16, tempkey, key_len); + } + CRYPT_MD5Generate(digest, 16, digest + 16); + pEncryptDict->SetAtString("U", CFX_ByteString(digest, 32)); + } +} +void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict, + CPDF_Array* pIdArray, + const uint8_t* user_pass, + FX_DWORD user_size, + const uint8_t* owner_pass, + FX_DWORD owner_size, + FX_DWORD type) { + OnCreate(pEncryptDict, pIdArray, user_pass, user_size, owner_pass, owner_size, + TRUE, type); +} +void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict, + CPDF_Array* pIdArray, + const uint8_t* user_pass, + FX_DWORD user_size, + FX_DWORD type) { + OnCreate(pEncryptDict, pIdArray, user_pass, user_size, NULL, 0, FALSE, type); +} +void CPDF_StandardSecurityHandler::AES256_SetPassword( + CPDF_Dictionary* pEncryptDict, + const uint8_t* password, + FX_DWORD size, + FX_BOOL bOwner, + const uint8_t* key) { + uint8_t sha[128]; + CRYPT_SHA1Start(sha); + CRYPT_SHA1Update(sha, key, 32); + CRYPT_SHA1Update(sha, (uint8_t*)"hello", 5); + uint8_t digest[20]; + CRYPT_SHA1Finish(sha, digest); + CFX_ByteString ukey = pEncryptDict->GetStringBy("U"); + uint8_t digest1[48]; + if (m_Revision >= 6) { + Revision6_Hash(password, size, digest, + (bOwner ? (const uint8_t*)ukey : NULL), digest1); + } else { + CRYPT_SHA256Start(sha); + CRYPT_SHA256Update(sha, password, size); + CRYPT_SHA256Update(sha, digest, 8); + if (bOwner) { + CRYPT_SHA256Update(sha, ukey, ukey.GetLength()); + } + CRYPT_SHA256Finish(sha, digest1); + } + FXSYS_memcpy(digest1 + 32, digest, 16); + pEncryptDict->SetAtString(bOwner ? "O" : "U", CFX_ByteString(digest1, 48)); + if (m_Revision >= 6) { + Revision6_Hash(password, size, digest + 8, + (bOwner ? (const uint8_t*)ukey : NULL), digest1); + } else { + CRYPT_SHA256Start(sha); + CRYPT_SHA256Update(sha, password, size); + CRYPT_SHA256Update(sha, digest + 8, 8); + if (bOwner) { + CRYPT_SHA256Update(sha, ukey, ukey.GetLength()); + } + CRYPT_SHA256Finish(sha, digest1); + } + uint8_t* aes = FX_Alloc(uint8_t, 2048); + CRYPT_AESSetKey(aes, 16, digest1, 32, TRUE); + uint8_t iv[16]; + FXSYS_memset(iv, 0, 16); + CRYPT_AESSetIV(aes, iv); + CRYPT_AESEncrypt(aes, digest1, key, 32); + FX_Free(aes); + pEncryptDict->SetAtString(bOwner ? "OE" : "UE", CFX_ByteString(digest1, 32)); +} +void CPDF_StandardSecurityHandler::AES256_SetPerms( + CPDF_Dictionary* pEncryptDict, + FX_DWORD permissions, + FX_BOOL bEncryptMetadata, + const uint8_t* key) { + uint8_t buf[16]; + buf[0] = (uint8_t)permissions; + buf[1] = (uint8_t)(permissions >> 8); + buf[2] = (uint8_t)(permissions >> 16); + buf[3] = (uint8_t)(permissions >> 24); + buf[4] = 0xff; + buf[5] = 0xff; + buf[6] = 0xff; + buf[7] = 0xff; + buf[8] = bEncryptMetadata ? 'T' : 'F'; + buf[9] = 'a'; + buf[10] = 'd'; + buf[11] = 'b'; + uint8_t* aes = FX_Alloc(uint8_t, 2048); + CRYPT_AESSetKey(aes, 16, key, 32, TRUE); + uint8_t iv[16], buf1[16]; + FXSYS_memset(iv, 0, 16); + CRYPT_AESSetIV(aes, iv); + CRYPT_AESEncrypt(aes, buf1, buf, 16); + FX_Free(aes); + pEncryptDict->SetAtString("Perms", CFX_ByteString(buf1, 16)); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h new file mode 100644 index 0000000000..3341ec391c --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h @@ -0,0 +1,105 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_ +#define CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_ + +#include "core/include/fpdfapi/ipdf_security_handler.h" +#include "core/include/fxcrt/fx_string.h" +#include "core/include/fxcrt/fx_system.h" + +class CPDF_Array; + +#define PDF_ENCRYPT_CONTENT 0 + +class CPDF_StandardSecurityHandler : public IPDF_SecurityHandler { + public: + CPDF_StandardSecurityHandler(); + ~CPDF_StandardSecurityHandler() override; + + // IPDF_SecurityHandler: + FX_BOOL OnInit(CPDF_Parser* pParser, CPDF_Dictionary* pEncryptDict) override; + FX_DWORD GetPermissions() override; + FX_BOOL GetCryptInfo(int& cipher, + const uint8_t*& buffer, + int& keylen) override; + FX_BOOL IsMetadataEncrypted() override; + IPDF_CryptoHandler* CreateCryptoHandler() override; + + void OnCreate(CPDF_Dictionary* pEncryptDict, + CPDF_Array* pIdArray, + const uint8_t* user_pass, + FX_DWORD user_size, + const uint8_t* owner_pass, + FX_DWORD owner_size, + FX_DWORD type = PDF_ENCRYPT_CONTENT); + + void OnCreate(CPDF_Dictionary* pEncryptDict, + CPDF_Array* pIdArray, + const uint8_t* user_pass, + FX_DWORD user_size, + FX_DWORD type = PDF_ENCRYPT_CONTENT); + + CFX_ByteString GetUserPassword(const uint8_t* owner_pass, + FX_DWORD pass_size, + int32_t key_len); + int CheckPassword(const uint8_t* password, + FX_DWORD pass_size, + FX_BOOL bOwner, + uint8_t* key, + int key_len); + + private: + FX_BOOL LoadDict(CPDF_Dictionary* pEncryptDict); + FX_BOOL LoadDict(CPDF_Dictionary* pEncryptDict, + FX_DWORD type, + int& cipher, + int& key_len); + + FX_BOOL CheckUserPassword(const uint8_t* password, + FX_DWORD pass_size, + FX_BOOL bIgnoreEncryptMeta, + uint8_t* key, + int32_t key_len); + + FX_BOOL CheckOwnerPassword(const uint8_t* password, + FX_DWORD pass_size, + uint8_t* key, + int32_t key_len); + FX_BOOL AES256_CheckPassword(const uint8_t* password, + FX_DWORD size, + FX_BOOL bOwner, + uint8_t* key); + void AES256_SetPassword(CPDF_Dictionary* pEncryptDict, + const uint8_t* password, + FX_DWORD size, + FX_BOOL bOwner, + const uint8_t* key); + void AES256_SetPerms(CPDF_Dictionary* pEncryptDict, + FX_DWORD permission, + FX_BOOL bEncryptMetadata, + const uint8_t* key); + void OnCreate(CPDF_Dictionary* pEncryptDict, + CPDF_Array* pIdArray, + const uint8_t* user_pass, + FX_DWORD user_size, + const uint8_t* owner_pass, + FX_DWORD owner_size, + FX_BOOL bDefault, + FX_DWORD type); + FX_BOOL CheckSecurity(int32_t key_len); + + int m_Version; + int m_Revision; + CPDF_Parser* m_pParser; + CPDF_Dictionary* m_pEncryptDict; + FX_DWORD m_Permissions; + int m_Cipher; + uint8_t m_EncryptKey[32]; + int m_KeyLen; +}; + +#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_ diff --git a/core/fpdfapi/fpdf_parser/cpdf_stream.cpp b/core/fpdfapi/fpdf_parser/cpdf_stream.cpp new file mode 100644 index 0000000000..45c946ab5f --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_stream.cpp @@ -0,0 +1,232 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_stream.h" + +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" + +CPDF_Stream::CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict) + : m_pDict(pDict), + m_dwSize(size), + m_GenNum(kMemoryBasedGenNum), + m_pDataBuf(pData) {} + +CPDF_Stream::~CPDF_Stream() { + if (IsMemoryBased()) + FX_Free(m_pDataBuf); + + if (m_pDict) + m_pDict->Release(); +} + +CPDF_Object::Type CPDF_Stream::GetType() const { + return STREAM; +} + +CPDF_Dictionary* CPDF_Stream::GetDict() const { + return m_pDict; +} + +bool CPDF_Stream::IsStream() const { + return true; +} + +CPDF_Stream* CPDF_Stream::AsStream() { + return this; +} + +const CPDF_Stream* CPDF_Stream::AsStream() const { + return this; +} + +void CPDF_Stream::InitStreamInternal(CPDF_Dictionary* pDict) { + if (pDict) { + if (m_pDict) + m_pDict->Release(); + m_pDict = pDict; + } + if (IsMemoryBased()) + FX_Free(m_pDataBuf); + + m_GenNum = 0; + m_pFile = nullptr; +} + +void CPDF_Stream::InitStream(uint8_t* pData, + FX_DWORD size, + CPDF_Dictionary* pDict) { + InitStreamInternal(pDict); + m_GenNum = kMemoryBasedGenNum; + m_pDataBuf = FX_Alloc(uint8_t, size); + if (pData) + FXSYS_memcpy(m_pDataBuf, pData, size); + + m_dwSize = size; + if (m_pDict) + m_pDict->SetAtInteger("Length", size); +} + +CPDF_Object* CPDF_Stream::Clone(FX_BOOL bDirect) const { + CPDF_StreamAcc acc; + acc.LoadAllData(this, TRUE); + FX_DWORD streamSize = acc.GetSize(); + CPDF_Dictionary* pDict = GetDict(); + if (pDict) + pDict = ToDictionary(pDict->Clone(bDirect)); + + return new CPDF_Stream(acc.DetachData(), streamSize, pDict); +} + +void CPDF_Stream::SetData(const uint8_t* pData, + FX_DWORD size, + FX_BOOL bCompressed, + FX_BOOL bKeepBuf) { + if (IsMemoryBased()) + FX_Free(m_pDataBuf); + m_GenNum = kMemoryBasedGenNum; + + if (bKeepBuf) { + m_pDataBuf = const_cast(pData); + } else { + m_pDataBuf = FX_Alloc(uint8_t, size); + if (pData) { + FXSYS_memcpy(m_pDataBuf, pData, size); + } + } + m_dwSize = size; + if (!m_pDict) + m_pDict = new CPDF_Dictionary; + m_pDict->SetAtInteger("Length", size); + if (!bCompressed) { + m_pDict->RemoveAt("Filter"); + m_pDict->RemoveAt("DecodeParms"); + } +} + +FX_BOOL CPDF_Stream::ReadRawData(FX_FILESIZE offset, + uint8_t* buf, + FX_DWORD size) const { + if (!IsMemoryBased() && m_pFile) + return m_pFile->ReadBlock(buf, offset, size); + + if (m_pDataBuf) + FXSYS_memcpy(buf, m_pDataBuf + offset, size); + + return TRUE; +} + +void CPDF_Stream::InitStreamFromFile(IFX_FileRead* pFile, + CPDF_Dictionary* pDict) { + InitStreamInternal(pDict); + m_pFile = pFile; + m_dwSize = (FX_DWORD)pFile->GetSize(); + if (m_pDict) + m_pDict->SetAtInteger("Length", m_dwSize); +} + +CFX_WideString CPDF_Stream::GetUnicodeText() const { + CPDF_StreamAcc stream; + stream.LoadAllData(this, FALSE); + return PDF_DecodeText(stream.GetData(), stream.GetSize()); +} + +CPDF_StreamAcc::CPDF_StreamAcc() + : m_pData(nullptr), + m_dwSize(0), + m_bNewBuf(FALSE), + m_pImageParam(nullptr), + m_pStream(nullptr), + m_pSrcData(nullptr) {} + +void CPDF_StreamAcc::LoadAllData(const CPDF_Stream* pStream, + FX_BOOL bRawAccess, + FX_DWORD estimated_size, + FX_BOOL bImageAcc) { + if (!pStream) + return; + + m_pStream = pStream; + if (pStream->IsMemoryBased() && + (!pStream->GetDict()->KeyExist("Filter") || bRawAccess)) { + m_dwSize = pStream->GetRawSize(); + m_pData = pStream->GetRawData(); + return; + } + uint8_t* pSrcData; + FX_DWORD dwSrcSize = pStream->GetRawSize(); + if (dwSrcSize == 0) + return; + + if (!pStream->IsMemoryBased()) { + pSrcData = m_pSrcData = FX_Alloc(uint8_t, dwSrcSize); + if (!pStream->ReadRawData(0, pSrcData, dwSrcSize)) + return; + } else { + pSrcData = pStream->GetRawData(); + } + uint8_t* pDecryptedData = pSrcData; + FX_DWORD dwDecryptedSize = dwSrcSize; + if (!pStream->GetDict()->KeyExist("Filter") || bRawAccess) { + m_pData = pDecryptedData; + m_dwSize = dwDecryptedSize; + } else { + FX_BOOL bRet = PDF_DataDecode( + pDecryptedData, dwDecryptedSize, m_pStream->GetDict(), m_pData, + m_dwSize, m_ImageDecoder, m_pImageParam, estimated_size, bImageAcc); + if (!bRet) { + m_pData = pDecryptedData; + m_dwSize = dwDecryptedSize; + } + } + if (pSrcData != pStream->GetRawData() && pSrcData != m_pData) { + FX_Free(pSrcData); + } + if (pDecryptedData != pSrcData && pDecryptedData != m_pData) { + FX_Free(pDecryptedData); + } + m_pSrcData = nullptr; + m_bNewBuf = m_pData != pStream->GetRawData(); +} + +CPDF_StreamAcc::~CPDF_StreamAcc() { + if (m_bNewBuf) { + FX_Free(m_pData); + } + FX_Free(m_pSrcData); +} + +const uint8_t* CPDF_StreamAcc::GetData() const { + if (m_bNewBuf) { + return m_pData; + } + if (!m_pStream) { + return nullptr; + } + return m_pStream->GetRawData(); +} + +FX_DWORD CPDF_StreamAcc::GetSize() const { + if (m_bNewBuf) { + return m_dwSize; + } + if (!m_pStream) { + return 0; + } + return m_pStream->GetRawSize(); +} + +uint8_t* CPDF_StreamAcc::DetachData() { + if (m_bNewBuf) { + uint8_t* p = m_pData; + m_pData = nullptr; + m_dwSize = 0; + return p; + } + uint8_t* p = FX_Alloc(uint8_t, m_dwSize); + FXSYS_memcpy(p, m_pData, m_dwSize); + return p; +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_string.cpp b/core/fpdfapi/fpdf_parser/cpdf_string.cpp new file mode 100644 index 0000000000..1d0bf0b829 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_string.cpp @@ -0,0 +1,56 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_string.h" + +#include "core/include/fpdfapi/fpdf_parser_decode.h" + +CPDF_String::CPDF_String() : m_bHex(FALSE) {} + +CPDF_String::CPDF_String(const CFX_ByteString& str, FX_BOOL bHex) + : m_String(str), m_bHex(bHex) {} + +CPDF_String::CPDF_String(const CFX_WideString& str) : m_bHex(FALSE) { + m_String = PDF_EncodeText(str); +} + +CPDF_String::~CPDF_String() {} + +CPDF_Object::Type CPDF_String::GetType() const { + return STRING; +} + +CPDF_Object* CPDF_String::Clone(FX_BOOL bDirect) const { + return new CPDF_String(m_String, m_bHex); +} + +CFX_ByteString CPDF_String::GetString() const { + return m_String; +} + +CFX_ByteStringC CPDF_String::GetConstString() const { + return CFX_ByteStringC(m_String); +} + +void CPDF_String::SetString(const CFX_ByteString& str) { + m_String = str; +} + +bool CPDF_String::IsString() const { + return true; +} + +CPDF_String* CPDF_String::AsString() { + return this; +} + +const CPDF_String* CPDF_String::AsString() const { + return this; +} + +CFX_WideString CPDF_String::GetUnicodeText() const { + return PDF_DecodeText(m_String); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp new file mode 100644 index 0000000000..62be48818b --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp @@ -0,0 +1,990 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" + +#include + +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_boolean.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_null.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fpdfapi/ipdf_crypto_handler.h" +#include "core/include/fxcrt/fx_ext.h" +#include "third_party/base/numerics/safe_math.h" + +namespace { + +struct SearchTagRecord { + const char* m_pTag; + FX_DWORD m_Len; + FX_DWORD m_Offset; +}; + +} // namespace + +// static +int CPDF_SyntaxParser::s_CurrentRecursionDepth = 0; + +CPDF_SyntaxParser::CPDF_SyntaxParser() + : m_MetadataObjnum(0), + m_pFileAccess(nullptr), + m_pFileBuf(nullptr), + m_BufSize(CPDF_ModuleMgr::kFileBufSize) {} + +CPDF_SyntaxParser::~CPDF_SyntaxParser() { + FX_Free(m_pFileBuf); +} + +FX_BOOL CPDF_SyntaxParser::GetCharAt(FX_FILESIZE pos, uint8_t& ch) { + CFX_AutoRestorer save_pos(&m_Pos); + m_Pos = pos; + return GetNextChar(ch); +} + +FX_BOOL CPDF_SyntaxParser::GetNextChar(uint8_t& ch) { + FX_FILESIZE pos = m_Pos + m_HeaderOffset; + if (pos >= m_FileLen) + return FALSE; + + if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) { + FX_FILESIZE read_pos = pos; + FX_DWORD read_size = m_BufSize; + if ((FX_FILESIZE)read_size > m_FileLen) + read_size = (FX_DWORD)m_FileLen; + + if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) { + if (m_FileLen < (FX_FILESIZE)read_size) { + read_pos = 0; + read_size = (FX_DWORD)m_FileLen; + } else { + read_pos = m_FileLen - read_size; + } + } + + if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size)) + return FALSE; + + m_BufOffset = read_pos; + } + ch = m_pFileBuf[pos - m_BufOffset]; + m_Pos++; + return TRUE; +} + +FX_BOOL CPDF_SyntaxParser::GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch) { + pos += m_HeaderOffset; + if (pos >= m_FileLen) + return FALSE; + + if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) { + FX_FILESIZE read_pos; + if (pos < (FX_FILESIZE)m_BufSize) + read_pos = 0; + else + read_pos = pos - m_BufSize + 1; + + FX_DWORD read_size = m_BufSize; + if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) { + if (m_FileLen < (FX_FILESIZE)read_size) { + read_pos = 0; + read_size = (FX_DWORD)m_FileLen; + } else { + read_pos = m_FileLen - read_size; + } + } + + if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size)) + return FALSE; + + m_BufOffset = read_pos; + } + ch = m_pFileBuf[pos - m_BufOffset]; + return TRUE; +} + +FX_BOOL CPDF_SyntaxParser::ReadBlock(uint8_t* pBuf, FX_DWORD size) { + if (!m_pFileAccess->ReadBlock(pBuf, m_Pos + m_HeaderOffset, size)) + return FALSE; + m_Pos += size; + return TRUE; +} + +void CPDF_SyntaxParser::GetNextWordInternal(bool* bIsNumber) { + m_WordSize = 0; + if (bIsNumber) + *bIsNumber = true; + + uint8_t ch; + if (!GetNextChar(ch)) + return; + + while (1) { + while (PDFCharIsWhitespace(ch)) { + if (!GetNextChar(ch)) + return; + } + + if (ch != '%') + break; + + while (1) { + if (!GetNextChar(ch)) + return; + if (PDFCharIsLineEnding(ch)) + break; + } + } + + if (PDFCharIsDelimiter(ch)) { + if (bIsNumber) + *bIsNumber = false; + + m_WordBuffer[m_WordSize++] = ch; + if (ch == '/') { + while (1) { + if (!GetNextChar(ch)) + return; + + if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { + m_Pos--; + return; + } + + if (m_WordSize < sizeof(m_WordBuffer) - 1) + m_WordBuffer[m_WordSize++] = ch; + } + } else if (ch == '<') { + if (!GetNextChar(ch)) + return; + + if (ch == '<') + m_WordBuffer[m_WordSize++] = ch; + else + m_Pos--; + } else if (ch == '>') { + if (!GetNextChar(ch)) + return; + + if (ch == '>') + m_WordBuffer[m_WordSize++] = ch; + else + m_Pos--; + } + return; + } + + while (1) { + if (m_WordSize < sizeof(m_WordBuffer) - 1) + m_WordBuffer[m_WordSize++] = ch; + + if (!PDFCharIsNumeric(ch)) { + if (bIsNumber) + *bIsNumber = false; + } + + if (!GetNextChar(ch)) + return; + + if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { + m_Pos--; + break; + } + } +} + +CFX_ByteString CPDF_SyntaxParser::ReadString() { + uint8_t ch; + if (!GetNextChar(ch)) + return CFX_ByteString(); + + CFX_ByteTextBuf buf; + int32_t parlevel = 0; + int32_t status = 0; + int32_t iEscCode = 0; + while (1) { + switch (status) { + case 0: + if (ch == ')') { + if (parlevel == 0) { + return buf.GetByteString(); + } + parlevel--; + buf.AppendChar(')'); + } else if (ch == '(') { + parlevel++; + buf.AppendChar('('); + } else if (ch == '\\') { + status = 1; + } else { + buf.AppendChar(ch); + } + break; + case 1: + if (ch >= '0' && ch <= '7') { + iEscCode = FXSYS_toDecimalDigit(static_cast(ch)); + status = 2; + break; + } + + if (ch == 'n') { + buf.AppendChar('\n'); + } else if (ch == 'r') { + buf.AppendChar('\r'); + } else if (ch == 't') { + buf.AppendChar('\t'); + } else if (ch == 'b') { + buf.AppendChar('\b'); + } else if (ch == 'f') { + buf.AppendChar('\f'); + } else if (ch == '\r') { + status = 4; + break; + } else if (ch != '\n') { + buf.AppendChar(ch); + } + status = 0; + break; + case 2: + if (ch >= '0' && ch <= '7') { + iEscCode = + iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); + status = 3; + } else { + buf.AppendChar(iEscCode); + status = 0; + continue; + } + break; + case 3: + if (ch >= '0' && ch <= '7') { + iEscCode = + iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); + buf.AppendChar(iEscCode); + status = 0; + } else { + buf.AppendChar(iEscCode); + status = 0; + continue; + } + break; + case 4: + status = 0; + if (ch != '\n') + continue; + break; + } + + if (!GetNextChar(ch)) + break; + } + + GetNextChar(ch); + return buf.GetByteString(); +} + +CFX_ByteString CPDF_SyntaxParser::ReadHexString() { + uint8_t ch; + if (!GetNextChar(ch)) + return CFX_ByteString(); + + CFX_ByteTextBuf buf; + bool bFirst = true; + uint8_t code = 0; + while (1) { + if (ch == '>') + break; + + if (std::isxdigit(ch)) { + int val = FXSYS_toHexDigit(ch); + if (bFirst) { + code = val * 16; + } else { + code += val; + buf.AppendByte(code); + } + bFirst = !bFirst; + } + + if (!GetNextChar(ch)) + break; + } + if (!bFirst) + buf.AppendByte(code); + + return buf.GetByteString(); +} + +void CPDF_SyntaxParser::ToNextLine() { + uint8_t ch; + while (GetNextChar(ch)) { + if (ch == '\n') + break; + + if (ch == '\r') { + GetNextChar(ch); + if (ch != '\n') + --m_Pos; + break; + } + } +} + +void CPDF_SyntaxParser::ToNextWord() { + uint8_t ch; + if (!GetNextChar(ch)) + return; + + while (1) { + while (PDFCharIsWhitespace(ch)) { + if (!GetNextChar(ch)) + return; + } + + if (ch != '%') + break; + + while (1) { + if (!GetNextChar(ch)) + return; + if (PDFCharIsLineEnding(ch)) + break; + } + } + m_Pos--; +} + +CFX_ByteString CPDF_SyntaxParser::GetNextWord(bool* bIsNumber) { + GetNextWordInternal(bIsNumber); + return CFX_ByteString((const FX_CHAR*)m_WordBuffer, m_WordSize); +} + +CFX_ByteString CPDF_SyntaxParser::GetKeyword() { + return GetNextWord(nullptr); +} + +CPDF_Object* CPDF_SyntaxParser::GetObject(CPDF_IndirectObjectHolder* pObjList, + FX_DWORD objnum, + FX_DWORD gennum, + FX_BOOL bDecrypt) { + CFX_AutoRestorer restorer(&s_CurrentRecursionDepth); + if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) + return nullptr; + + FX_FILESIZE SavedPos = m_Pos; + bool bIsNumber; + CFX_ByteString word = GetNextWord(&bIsNumber); + if (word.GetLength() == 0) + return nullptr; + + if (bIsNumber) { + FX_FILESIZE SavedPos = m_Pos; + CFX_ByteString nextword = GetNextWord(&bIsNumber); + if (bIsNumber) { + CFX_ByteString nextword2 = GetNextWord(nullptr); + if (nextword2 == "R") { + FX_DWORD objnum = FXSYS_atoui(word); + return new CPDF_Reference(pObjList, objnum); + } + } + m_Pos = SavedPos; + return new CPDF_Number(word); + } + + if (word == "true" || word == "false") + return new CPDF_Boolean(word == "true"); + + if (word == "null") + return new CPDF_Null; + + if (word == "(") { + CFX_ByteString str = ReadString(); + if (m_pCryptoHandler && bDecrypt) + m_pCryptoHandler->Decrypt(objnum, gennum, str); + return new CPDF_String(str, FALSE); + } + + if (word == "<") { + CFX_ByteString str = ReadHexString(); + if (m_pCryptoHandler && bDecrypt) + m_pCryptoHandler->Decrypt(objnum, gennum, str); + + return new CPDF_String(str, TRUE); + } + + if (word == "[") { + CPDF_Array* pArray = new CPDF_Array; + while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true)) + pArray->Add(pObj); + + return pArray; + } + + if (word[0] == '/') { + return new CPDF_Name( + PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); + } + + if (word == "<<") { + int32_t nKeys = 0; + FX_FILESIZE dwSignValuePos = 0; + + std::unique_ptr> pDict( + new CPDF_Dictionary); + while (1) { + CFX_ByteString key = GetNextWord(nullptr); + if (key.IsEmpty()) + return nullptr; + + FX_FILESIZE SavedPos = m_Pos - key.GetLength(); + if (key == ">>") + break; + + if (key == "endobj") { + m_Pos = SavedPos; + break; + } + + if (key[0] != '/') + continue; + + ++nKeys; + key = PDF_NameDecode(key); + if (key.IsEmpty()) + continue; + + if (key == "/Contents") + dwSignValuePos = m_Pos; + + CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true); + if (!pObj) + continue; + + CFX_ByteStringC keyNoSlash(key.c_str() + 1, key.GetLength() - 1); + pDict->SetAt(keyNoSlash, pObj); + } + + // Only when this is a signature dictionary and has contents, we reset the + // contents to the un-decrypted form. + if (pDict->IsSignatureDict() && dwSignValuePos) { + CFX_AutoRestorer save_pos(&m_Pos); + m_Pos = dwSignValuePos; + pDict->SetAt("Contents", GetObject(pObjList, objnum, gennum, false)); + } + + FX_FILESIZE SavedPos = m_Pos; + CFX_ByteString nextword = GetNextWord(nullptr); + if (nextword != "stream") { + m_Pos = SavedPos; + return pDict.release(); + } + return ReadStream(pDict.release(), objnum, gennum); + } + + if (word == ">>") + m_Pos = SavedPos; + + return nullptr; +} + +CPDF_Object* CPDF_SyntaxParser::GetObjectByStrict( + CPDF_IndirectObjectHolder* pObjList, + FX_DWORD objnum, + FX_DWORD gennum) { + CFX_AutoRestorer restorer(&s_CurrentRecursionDepth); + if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) + return nullptr; + + FX_FILESIZE SavedPos = m_Pos; + bool bIsNumber; + CFX_ByteString word = GetNextWord(&bIsNumber); + if (word.GetLength() == 0) + return nullptr; + + if (bIsNumber) { + FX_FILESIZE SavedPos = m_Pos; + CFX_ByteString nextword = GetNextWord(&bIsNumber); + if (bIsNumber) { + CFX_ByteString nextword2 = GetNextWord(nullptr); + if (nextword2 == "R") + return new CPDF_Reference(pObjList, FXSYS_atoui(word)); + } + m_Pos = SavedPos; + return new CPDF_Number(word); + } + + if (word == "true" || word == "false") + return new CPDF_Boolean(word == "true"); + + if (word == "null") + return new CPDF_Null; + + if (word == "(") { + CFX_ByteString str = ReadString(); + if (m_pCryptoHandler) + m_pCryptoHandler->Decrypt(objnum, gennum, str); + return new CPDF_String(str, FALSE); + } + + if (word == "<") { + CFX_ByteString str = ReadHexString(); + if (m_pCryptoHandler) + m_pCryptoHandler->Decrypt(objnum, gennum, str); + return new CPDF_String(str, TRUE); + } + + if (word == "[") { + std::unique_ptr> pArray( + new CPDF_Array); + while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true)) + pArray->Add(pObj); + + return m_WordBuffer[0] == ']' ? pArray.release() : nullptr; + } + + if (word[0] == '/') { + return new CPDF_Name( + PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); + } + + if (word == "<<") { + std::unique_ptr> pDict( + new CPDF_Dictionary); + while (1) { + FX_FILESIZE SavedPos = m_Pos; + CFX_ByteString key = GetNextWord(nullptr); + if (key.IsEmpty()) + return nullptr; + + if (key == ">>") + break; + + if (key == "endobj") { + m_Pos = SavedPos; + break; + } + + if (key[0] != '/') + continue; + + key = PDF_NameDecode(key); + std::unique_ptr> obj( + GetObject(pObjList, objnum, gennum, true)); + if (!obj) { + uint8_t ch; + while (GetNextChar(ch) && ch != 0x0A && ch != 0x0D) { + continue; + } + return nullptr; + } + + if (key.GetLength() > 1) { + pDict->SetAt(CFX_ByteStringC(key.c_str() + 1, key.GetLength() - 1), + obj.release()); + } + } + + FX_FILESIZE SavedPos = m_Pos; + CFX_ByteString nextword = GetNextWord(nullptr); + if (nextword != "stream") { + m_Pos = SavedPos; + return pDict.release(); + } + + return ReadStream(pDict.release(), objnum, gennum); + } + + if (word == ">>") + m_Pos = SavedPos; + + return nullptr; +} + +unsigned int CPDF_SyntaxParser::ReadEOLMarkers(FX_FILESIZE pos) { + unsigned char byte1 = 0; + unsigned char byte2 = 0; + + GetCharAt(pos, byte1); + GetCharAt(pos + 1, byte2); + + if (byte1 == '\r' && byte2 == '\n') + return 2; + + if (byte1 == '\r' || byte1 == '\n') + return 1; + + return 0; +} + +CPDF_Stream* CPDF_SyntaxParser::ReadStream(CPDF_Dictionary* pDict, + FX_DWORD objnum, + FX_DWORD gennum) { + CPDF_Object* pLenObj = pDict->GetElement("Length"); + FX_FILESIZE len = -1; + CPDF_Reference* pLenObjRef = ToReference(pLenObj); + + bool differingObjNum = !pLenObjRef || (pLenObjRef->GetObjList() && + pLenObjRef->GetRefObjNum() != objnum); + if (pLenObj && differingObjNum) + len = pLenObj->GetInteger(); + + // Locate the start of stream. + ToNextLine(); + FX_FILESIZE streamStartPos = m_Pos; + + const CFX_ByteStringC kEndStreamStr("endstream"); + const CFX_ByteStringC kEndObjStr("endobj"); + + IPDF_CryptoHandler* pCryptoHandler = + objnum == (FX_DWORD)m_MetadataObjnum ? nullptr : m_pCryptoHandler.get(); + if (!pCryptoHandler) { + FX_BOOL bSearchForKeyword = TRUE; + if (len >= 0) { + pdfium::base::CheckedNumeric pos = m_Pos; + pos += len; + if (pos.IsValid() && pos.ValueOrDie() < m_FileLen) + m_Pos = pos.ValueOrDie(); + + m_Pos += ReadEOLMarkers(m_Pos); + FXSYS_memset(m_WordBuffer, 0, kEndStreamStr.GetLength() + 1); + GetNextWordInternal(nullptr); + // Earlier version of PDF specification doesn't require EOL marker before + // 'endstream' keyword. If keyword 'endstream' follows the bytes in + // specified length, it signals the end of stream. + if (FXSYS_memcmp(m_WordBuffer, kEndStreamStr.GetPtr(), + kEndStreamStr.GetLength()) == 0) { + bSearchForKeyword = FALSE; + } + } + + if (bSearchForKeyword) { + // If len is not available, len needs to be calculated + // by searching the keywords "endstream" or "endobj". + m_Pos = streamStartPos; + FX_FILESIZE endStreamOffset = 0; + while (endStreamOffset >= 0) { + endStreamOffset = FindTag(kEndStreamStr, 0); + + // Can't find "endstream". + if (endStreamOffset < 0) + break; + + // Stop searching when "endstream" is found. + if (IsWholeWord(m_Pos - kEndStreamStr.GetLength(), m_FileLen, + kEndStreamStr, TRUE)) { + endStreamOffset = m_Pos - streamStartPos - kEndStreamStr.GetLength(); + break; + } + } + + m_Pos = streamStartPos; + FX_FILESIZE endObjOffset = 0; + while (endObjOffset >= 0) { + endObjOffset = FindTag(kEndObjStr, 0); + + // Can't find "endobj". + if (endObjOffset < 0) + break; + + // Stop searching when "endobj" is found. + if (IsWholeWord(m_Pos - kEndObjStr.GetLength(), m_FileLen, kEndObjStr, + TRUE)) { + endObjOffset = m_Pos - streamStartPos - kEndObjStr.GetLength(); + break; + } + } + + // Can't find "endstream" or "endobj". + if (endStreamOffset < 0 && endObjOffset < 0) { + pDict->Release(); + return nullptr; + } + + if (endStreamOffset < 0 && endObjOffset >= 0) { + // Correct the position of end stream. + endStreamOffset = endObjOffset; + } else if (endStreamOffset >= 0 && endObjOffset < 0) { + // Correct the position of end obj. + endObjOffset = endStreamOffset; + } else if (endStreamOffset > endObjOffset) { + endStreamOffset = endObjOffset; + } + + len = endStreamOffset; + int numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 2); + if (numMarkers == 2) { + len -= 2; + } else { + numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 1); + if (numMarkers == 1) { + len -= 1; + } + } + + if (len < 0) { + pDict->Release(); + return nullptr; + } + pDict->SetAtInteger("Length", len); + } + m_Pos = streamStartPos; + } + + if (len < 0) { + pDict->Release(); + return nullptr; + } + + uint8_t* pData = nullptr; + if (len > 0) { + pData = FX_Alloc(uint8_t, len); + ReadBlock(pData, len); + if (pCryptoHandler) { + CFX_BinaryBuf dest_buf; + dest_buf.EstimateSize(pCryptoHandler->DecryptGetSize(len)); + + void* context = pCryptoHandler->DecryptStart(objnum, gennum); + pCryptoHandler->DecryptStream(context, pData, len, dest_buf); + pCryptoHandler->DecryptFinish(context, dest_buf); + + FX_Free(pData); + pData = dest_buf.GetBuffer(); + len = dest_buf.GetSize(); + dest_buf.DetachBuffer(); + } + } + + CPDF_Stream* pStream = new CPDF_Stream(pData, len, pDict); + streamStartPos = m_Pos; + FXSYS_memset(m_WordBuffer, 0, kEndObjStr.GetLength() + 1); + + GetNextWordInternal(nullptr); + + int numMarkers = ReadEOLMarkers(m_Pos); + if (m_WordSize == static_cast(kEndObjStr.GetLength()) && + numMarkers != 0 && + FXSYS_memcmp(m_WordBuffer, kEndObjStr.GetPtr(), kEndObjStr.GetLength()) == + 0) { + m_Pos = streamStartPos; + } + return pStream; +} + +void CPDF_SyntaxParser::InitParser(IFX_FileRead* pFileAccess, + FX_DWORD HeaderOffset) { + FX_Free(m_pFileBuf); + + m_pFileBuf = FX_Alloc(uint8_t, m_BufSize); + m_HeaderOffset = HeaderOffset; + m_FileLen = pFileAccess->GetSize(); + m_Pos = 0; + m_pFileAccess = pFileAccess; + m_BufOffset = 0; + pFileAccess->ReadBlock( + m_pFileBuf, 0, + (size_t)((FX_FILESIZE)m_BufSize > m_FileLen ? m_FileLen : m_BufSize)); +} + +uint32_t CPDF_SyntaxParser::GetDirectNum() { + bool bIsNumber; + GetNextWordInternal(&bIsNumber); + if (!bIsNumber) + return 0; + + m_WordBuffer[m_WordSize] = 0; + return FXSYS_atoui(reinterpret_cast(m_WordBuffer)); +} + +bool CPDF_SyntaxParser::IsWholeWord(FX_FILESIZE startpos, + FX_FILESIZE limit, + const CFX_ByteStringC& tag, + FX_BOOL checkKeyword) { + const FX_DWORD taglen = tag.GetLength(); + + bool bCheckLeft = !PDFCharIsDelimiter(tag[0]) && !PDFCharIsWhitespace(tag[0]); + bool bCheckRight = !PDFCharIsDelimiter(tag[taglen - 1]) && + !PDFCharIsWhitespace(tag[taglen - 1]); + + uint8_t ch; + if (bCheckRight && startpos + (int32_t)taglen <= limit && + GetCharAt(startpos + (int32_t)taglen, ch)) { + if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) || + (checkKeyword && PDFCharIsDelimiter(ch))) { + return false; + } + } + + if (bCheckLeft && startpos > 0 && GetCharAt(startpos - 1, ch)) { + if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) || + (checkKeyword && PDFCharIsDelimiter(ch))) { + return false; + } + } + return true; +} + +// TODO(dsinclair): Split into a SearchWordForward and SearchWordBackwards +// and drop the bool. +FX_BOOL CPDF_SyntaxParser::SearchWord(const CFX_ByteStringC& tag, + FX_BOOL bWholeWord, + FX_BOOL bForward, + FX_FILESIZE limit) { + int32_t taglen = tag.GetLength(); + if (taglen == 0) + return FALSE; + + FX_FILESIZE pos = m_Pos; + int32_t offset = 0; + if (!bForward) + offset = taglen - 1; + + const uint8_t* tag_data = tag.GetPtr(); + uint8_t byte; + while (1) { + if (bForward) { + if (limit && pos >= m_Pos + limit) + return FALSE; + + if (!GetCharAt(pos, byte)) + return FALSE; + + } else { + if (limit && pos <= m_Pos - limit) + return FALSE; + + if (!GetCharAtBackward(pos, byte)) + return FALSE; + } + + if (byte == tag_data[offset]) { + if (bForward) { + offset++; + if (offset < taglen) { + pos++; + continue; + } + } else { + offset--; + if (offset >= 0) { + pos--; + continue; + } + } + + FX_FILESIZE startpos = bForward ? pos - taglen + 1 : pos; + if (!bWholeWord || IsWholeWord(startpos, limit, tag, FALSE)) { + m_Pos = startpos; + return TRUE; + } + } + + if (bForward) { + offset = byte == tag_data[0] ? 1 : 0; + pos++; + } else { + offset = byte == tag_data[taglen - 1] ? taglen - 2 : taglen - 1; + pos--; + } + + if (pos < 0) + return FALSE; + } + + return FALSE; +} + +int32_t CPDF_SyntaxParser::SearchMultiWord(const CFX_ByteStringC& tags, + FX_BOOL bWholeWord, + FX_FILESIZE limit) { + int32_t ntags = 1; + for (int i = 0; i < tags.GetLength(); ++i) { + if (tags[i] == 0) + ++ntags; + } + + std::vector patterns(ntags); + FX_DWORD start = 0; + FX_DWORD itag = 0; + FX_DWORD max_len = 0; + for (int i = 0; i <= tags.GetLength(); ++i) { + if (tags[i] == 0) { + FX_DWORD len = i - start; + max_len = std::max(len, max_len); + patterns[itag].m_pTag = tags.GetCStr() + start; + patterns[itag].m_Len = len; + patterns[itag].m_Offset = 0; + start = i + 1; + ++itag; + } + } + + const FX_FILESIZE pos_limit = m_Pos + limit; + for (FX_FILESIZE pos = m_Pos; !limit || pos < pos_limit; ++pos) { + uint8_t byte; + if (!GetCharAt(pos, byte)) + break; + + for (int i = 0; i < ntags; ++i) { + SearchTagRecord& pat = patterns[i]; + if (pat.m_pTag[pat.m_Offset] != byte) { + pat.m_Offset = (pat.m_pTag[0] == byte) ? 1 : 0; + continue; + } + + ++pat.m_Offset; + if (pat.m_Offset != pat.m_Len) + continue; + + if (!bWholeWord || + IsWholeWord(pos - pat.m_Len, limit, + CFX_ByteStringC(pat.m_pTag, pat.m_Len), FALSE)) { + return i; + } + + pat.m_Offset = (pat.m_pTag[0] == byte) ? 1 : 0; + } + } + return -1; +} + +FX_FILESIZE CPDF_SyntaxParser::FindTag(const CFX_ByteStringC& tag, + FX_FILESIZE limit) { + int32_t taglen = tag.GetLength(); + int32_t match = 0; + limit += m_Pos; + FX_FILESIZE startpos = m_Pos; + + while (1) { + uint8_t ch; + if (!GetNextChar(ch)) + return -1; + + if (ch == tag[match]) { + match++; + if (match == taglen) + return m_Pos - startpos - taglen; + } else { + match = ch == tag[0] ? 1 : 0; + } + + if (limit && m_Pos == limit) + return -1; + } + return -1; +} + +void CPDF_SyntaxParser::SetEncrypt( + std::unique_ptr pCryptoHandler) { + m_pCryptoHandler = std::move(pCryptoHandler); +} diff --git a/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h new file mode 100644 index 0000000000..842b35f8f2 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h @@ -0,0 +1,96 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_ +#define CORE_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_ + +#include + +#include "core/include/fxcrt/fx_basic.h" + +class CPDF_Dictionary; +class CPDF_IndirectObjectHolder; +class CPDF_Object; +class CPDF_Stream; +class IFX_FileRead; +class IPDF_CryptoHandler; + +class CPDF_SyntaxParser { + public: + CPDF_SyntaxParser(); + ~CPDF_SyntaxParser(); + + void InitParser(IFX_FileRead* pFileAccess, FX_DWORD HeaderOffset); + + FX_FILESIZE SavePos() const { return m_Pos; } + void RestorePos(FX_FILESIZE pos) { m_Pos = pos; } + + CPDF_Object* GetObject(CPDF_IndirectObjectHolder* pObjList, + FX_DWORD objnum, + FX_DWORD gennum, + FX_BOOL bDecrypt); + CPDF_Object* GetObjectByStrict(CPDF_IndirectObjectHolder* pObjList, + FX_DWORD objnum, + FX_DWORD gennum); + CFX_ByteString GetKeyword(); + + void ToNextLine(); + void ToNextWord(); + + FX_BOOL SearchWord(const CFX_ByteStringC& word, + FX_BOOL bWholeWord, + FX_BOOL bForward, + FX_FILESIZE limit); + int SearchMultiWord(const CFX_ByteStringC& words, + FX_BOOL bWholeWord, + FX_FILESIZE limit); + FX_FILESIZE FindTag(const CFX_ByteStringC& tag, FX_FILESIZE limit); + + void SetEncrypt(std::unique_ptr pCryptoHandler); + + FX_BOOL ReadBlock(uint8_t* pBuf, FX_DWORD size); + FX_BOOL GetCharAt(FX_FILESIZE pos, uint8_t& ch); + CFX_ByteString GetNextWord(bool* bIsNumber); + + private: + friend class CPDF_Parser; + friend class CPDF_DataAvail; + friend class cpdf_syntax_parser_ReadHexString_Test; + + static const int kParserMaxRecursionDepth = 64; + static int s_CurrentRecursionDepth; + + uint32_t GetDirectNum(); + + FX_BOOL GetNextChar(uint8_t& ch); + FX_BOOL GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch); + void GetNextWordInternal(bool* bIsNumber); + bool IsWholeWord(FX_FILESIZE startpos, + FX_FILESIZE limit, + const CFX_ByteStringC& tag, + FX_BOOL checkKeyword); + + CFX_ByteString ReadString(); + CFX_ByteString ReadHexString(); + unsigned int ReadEOLMarkers(FX_FILESIZE pos); + CPDF_Stream* ReadStream(CPDF_Dictionary* pDict, + FX_DWORD objnum, + FX_DWORD gennum); + + FX_FILESIZE m_Pos; + int m_MetadataObjnum; + IFX_FileRead* m_pFileAccess; + FX_DWORD m_HeaderOffset; + FX_FILESIZE m_FileLen; + uint8_t* m_pFileBuf; + FX_DWORD m_BufSize; + FX_FILESIZE m_BufOffset; + std::unique_ptr m_pCryptoHandler; + uint8_t m_WordBuffer[257]; + FX_DWORD m_WordSize; +}; + +#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_ diff --git a/core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp new file mode 100644 index 0000000000..f501c01715 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp @@ -0,0 +1,171 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include +#include + +#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_stream.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/utils/path_service.h" + +TEST(cpdf_syntax_parser, ReadHexString) { + { + // Empty string. + uint8_t data[] = ""; + ScopedFileStream stream(FX_CreateMemoryStream(data, 0, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("", parser.ReadHexString()); + EXPECT_EQ(0, parser.SavePos()); + } + + { + // Blank string. + uint8_t data[] = " "; + ScopedFileStream stream(FX_CreateMemoryStream(data, 2, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("", parser.ReadHexString()); + EXPECT_EQ(2, parser.SavePos()); + } + + { + // Skips unknown characters. + uint8_t data[] = "z12b"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\x12\xb0", parser.ReadHexString()); + EXPECT_EQ(4, parser.SavePos()); + } + + { + // Skips unknown characters. + uint8_t data[] = "*<&*#$^&@1"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 10, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\x10", parser.ReadHexString()); + EXPECT_EQ(10, parser.SavePos()); + } + + { + // Skips unknown characters. + uint8_t data[] = "\x80zab"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\xab", parser.ReadHexString()); + EXPECT_EQ(4, parser.SavePos()); + } + + { + // Skips unknown characters. + uint8_t data[] = "\xffzab"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\xab", parser.ReadHexString()); + EXPECT_EQ(4, parser.SavePos()); + } + + { + // Regular conversion. + uint8_t data[] = "1A2b>abcd"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 9, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); + EXPECT_EQ(5, parser.SavePos()); + } + + { + // Position out of bounds. + uint8_t data[] = "12ab>"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 5, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + parser.RestorePos(5); + EXPECT_EQ("", parser.ReadHexString()); + + parser.RestorePos(6); + EXPECT_EQ("", parser.ReadHexString()); + + parser.RestorePos(-1); + EXPECT_EQ("", parser.ReadHexString()); + + parser.RestorePos(std::numeric_limits::max()); + EXPECT_EQ("", parser.ReadHexString()); + + // Check string still parses when set to 0. + parser.RestorePos(0); + EXPECT_EQ("\x12\xab", parser.ReadHexString()); + } + + { + // Missing ending >. + uint8_t data[] = "1A2b"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); + EXPECT_EQ(4, parser.SavePos()); + } + + { + // Missing ending >. + uint8_t data[] = "12abz"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 5, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\x12\xab", parser.ReadHexString()); + EXPECT_EQ(5, parser.SavePos()); + } + + { + // Uneven number of bytes. + uint8_t data[] = "1A2>asdf"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 8, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\x1a\x20", parser.ReadHexString()); + EXPECT_EQ(4, parser.SavePos()); + } + + { + // Uneven number of bytes. + uint8_t data[] = "1A2zasdf"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 8, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("\x1a\x2a\xdf", parser.ReadHexString()); + EXPECT_EQ(8, parser.SavePos()); + } + + { + // Just ending character. + uint8_t data[] = ">"; + ScopedFileStream stream(FX_CreateMemoryStream(data, 1, FALSE)); + + CPDF_SyntaxParser parser; + parser.InitParser(stream.get(), 0); + EXPECT_EQ("", parser.ReadHexString()); + EXPECT_EQ(1, parser.SavePos()); + } +} diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp new file mode 100644 index 0000000000..eeb365d0e6 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp @@ -0,0 +1,592 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/fpdf_parser_decode.h" + +#include +#include + +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcrt/fx_ext.h" +#include "third_party/base/stl_util.h" + +#define _STREAM_MAX_SIZE_ 20 * 1024 * 1024 + +const FX_WORD PDFDocEncoding[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, + 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, + 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x02d8, 0x02c7, 0x02c6, + 0x02d9, 0x02dd, 0x02db, 0x02da, 0x02dc, 0x0020, 0x0021, 0x0022, 0x0023, + 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, + 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, + 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, + 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, + 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, + 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, + 0x007e, 0x0000, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x0192, + 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, + 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x0141, 0x0152, 0x0160, 0x0178, + 0x017d, 0x0131, 0x0142, 0x0153, 0x0161, 0x017e, 0x0000, 0x20ac, 0x00a1, + 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, + 0x00ab, 0x00ac, 0x0000, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, + 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, + 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, + 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, + 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, + 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, + 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, + 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, + 0x00fc, 0x00fd, 0x00fe, 0x00ff}; + +FX_DWORD A85Decode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + dest_size = 0; + dest_buf = nullptr; + if (src_size == 0) + return 0; + + // Count legal characters and zeros. + FX_DWORD zcount = 0; + FX_DWORD pos = 0; + while (pos < src_size) { + uint8_t ch = src_buf[pos]; + if (ch == 'z') { + zcount++; + } else if ((ch < '!' || ch > 'u') && !PDFCharIsLineEnding(ch) && + ch != ' ' && ch != '\t') { + break; + } + pos++; + } + // No content to decode. + if (pos == 0) + return 0; + + // Count the space needed to contain non-zero characters. The encoding ratio + // of Ascii85 is 4:5. + FX_DWORD space_for_non_zeroes = (pos - zcount) / 5 * 4 + 4; + if (zcount > (UINT_MAX - space_for_non_zeroes) / 4) { + return (FX_DWORD)-1; + } + dest_buf = FX_Alloc(uint8_t, zcount * 4 + space_for_non_zeroes); + size_t state = 0; + uint32_t res = 0; + pos = dest_size = 0; + while (pos < src_size) { + uint8_t ch = src_buf[pos++]; + if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t') + continue; + + if (ch == 'z') { + FXSYS_memset(dest_buf + dest_size, 0, 4); + state = 0; + res = 0; + dest_size += 4; + } else if (ch >= '!' && ch <= 'u') { + res = res * 85 + ch - 33; + state++; + if (state == 5) { + for (size_t i = 0; i < 4; i++) { + dest_buf[dest_size++] = (uint8_t)(res >> (3 - i) * 8); + } + state = 0; + res = 0; + } + } else { + // The end or illegal character. + break; + } + } + // Handle partial group. + if (state) { + for (size_t i = state; i < 5; i++) + res = res * 85 + 84; + for (size_t i = 0; i < state - 1; i++) + dest_buf[dest_size++] = (uint8_t)(res >> (3 - i) * 8); + } + if (pos < src_size && src_buf[pos] == '>') + pos++; + return pos; +} + +FX_DWORD HexDecode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + dest_size = 0; + if (src_size == 0) { + dest_buf = nullptr; + return 0; + } + + FX_DWORD i = 0; + // Find the end of data. + while (i < src_size && src_buf[i] != '>') + i++; + + dest_buf = FX_Alloc(uint8_t, i / 2 + 1); + bool bFirst = true; + for (i = 0; i < src_size; i++) { + uint8_t ch = src_buf[i]; + if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t') + continue; + + if (ch == '>') { + ++i; + break; + } + if (!std::isxdigit(ch)) + continue; + + int digit = FXSYS_toHexDigit(ch); + if (bFirst) + dest_buf[dest_size] = digit * 16; + else + dest_buf[dest_size++] += digit; + + bFirst = !bFirst; + } + if (!bFirst) + dest_size++; + return i; +} + +FX_DWORD RunLengthDecode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + FX_DWORD i = 0; + FX_DWORD old; + dest_size = 0; + while (i < src_size) { + if (src_buf[i] < 128) { + old = dest_size; + dest_size += src_buf[i] + 1; + if (dest_size < old) { + return (FX_DWORD)-1; + } + i += src_buf[i] + 2; + } else if (src_buf[i] > 128) { + old = dest_size; + dest_size += 257 - src_buf[i]; + if (dest_size < old) { + return (FX_DWORD)-1; + } + i += 2; + } else { + break; + } + } + if (dest_size >= _STREAM_MAX_SIZE_) { + return -1; + } + dest_buf = FX_Alloc(uint8_t, dest_size); + i = 0; + int dest_count = 0; + while (i < src_size) { + if (src_buf[i] < 128) { + FX_DWORD copy_len = src_buf[i] + 1; + FX_DWORD buf_left = src_size - i - 1; + if (buf_left < copy_len) { + FX_DWORD delta = copy_len - buf_left; + copy_len = buf_left; + FXSYS_memset(dest_buf + dest_count + copy_len, '\0', delta); + } + FXSYS_memcpy(dest_buf + dest_count, src_buf + i + 1, copy_len); + dest_count += src_buf[i] + 1; + i += src_buf[i] + 2; + } else if (src_buf[i] > 128) { + int fill = 0; + if (i < src_size - 1) { + fill = src_buf[i + 1]; + } + FXSYS_memset(dest_buf + dest_count, fill, 257 - src_buf[i]); + dest_count += 257 - src_buf[i]; + i += 2; + } else { + break; + } + } + FX_DWORD ret = i + 1; + if (ret > src_size) { + ret = src_size; + } + return ret; +} + +ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + const CPDF_Dictionary* pParams) { + int K = 0; + FX_BOOL EndOfLine = FALSE; + FX_BOOL ByteAlign = FALSE; + FX_BOOL BlackIs1 = FALSE; + int Columns = 1728; + int Rows = 0; + if (pParams) { + K = pParams->GetIntegerBy("K"); + EndOfLine = pParams->GetIntegerBy("EndOfLine"); + ByteAlign = pParams->GetIntegerBy("EncodedByteAlign"); + BlackIs1 = pParams->GetIntegerBy("BlackIs1"); + Columns = pParams->GetIntegerBy("Columns", 1728); + Rows = pParams->GetIntegerBy("Rows"); + if (Rows > USHRT_MAX) { + Rows = 0; + } + if (Columns <= 0 || Rows < 0 || Columns > USHRT_MAX || Rows > USHRT_MAX) { + return nullptr; + } + } + return CPDF_ModuleMgr::Get()->GetFaxModule()->CreateDecoder( + src_buf, src_size, width, height, K, EndOfLine, ByteAlign, BlackIs1, + Columns, Rows); +} + +static FX_BOOL CheckFlateDecodeParams(int Colors, + int BitsPerComponent, + int Columns) { + if (Columns < 0) { + return FALSE; + } + int check = Columns; + if (Colors < 0 || (check > 0 && Colors > INT_MAX / check)) { + return FALSE; + } + check *= Colors; + if (BitsPerComponent < 0 || + (check > 0 && BitsPerComponent > INT_MAX / check)) { + return FALSE; + } + check *= BitsPerComponent; + if (check > INT_MAX - 7) { + return FALSE; + } + return TRUE; +} + +ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc, + const CPDF_Dictionary* pParams) { + int predictor = 0; + int Colors = 0, BitsPerComponent = 0, Columns = 0; + if (pParams) { + predictor = pParams->GetIntegerBy("Predictor"); + Colors = pParams->GetIntegerBy("Colors", 1); + BitsPerComponent = pParams->GetIntegerBy("BitsPerComponent", 8); + Columns = pParams->GetIntegerBy("Columns", 1); + if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) { + return nullptr; + } + } + return CPDF_ModuleMgr::Get()->GetFlateModule()->CreateDecoder( + src_buf, src_size, width, height, nComps, bpc, predictor, Colors, + BitsPerComponent, Columns); +} + +FX_DWORD FPDFAPI_FlateOrLZWDecode(FX_BOOL bLZW, + const uint8_t* src_buf, + FX_DWORD src_size, + CPDF_Dictionary* pParams, + FX_DWORD estimated_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + int predictor = 0; + FX_BOOL bEarlyChange = TRUE; + int Colors = 0, BitsPerComponent = 0, Columns = 0; + if (pParams) { + predictor = pParams->GetIntegerBy("Predictor"); + bEarlyChange = pParams->GetIntegerBy("EarlyChange", 1); + Colors = pParams->GetIntegerBy("Colors", 1); + BitsPerComponent = pParams->GetIntegerBy("BitsPerComponent", 8); + Columns = pParams->GetIntegerBy("Columns", 1); + if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) { + return (FX_DWORD)-1; + } + } + return CPDF_ModuleMgr::Get()->GetFlateModule()->FlateOrLZWDecode( + bLZW, src_buf, src_size, bEarlyChange, predictor, Colors, + BitsPerComponent, Columns, estimated_size, dest_buf, dest_size); +} + +FX_BOOL PDF_DataDecode(const uint8_t* src_buf, + FX_DWORD src_size, + const CPDF_Dictionary* pDict, + uint8_t*& dest_buf, + FX_DWORD& dest_size, + CFX_ByteString& ImageEncoding, + CPDF_Dictionary*& pImageParms, + FX_DWORD last_estimated_size, + FX_BOOL bImageAcc) { + CPDF_Object* pDecoder = pDict ? pDict->GetElementValue("Filter") : nullptr; + if (!pDecoder || (!pDecoder->IsArray() && !pDecoder->IsName())) + return FALSE; + + CPDF_Object* pParams = + pDict ? pDict->GetElementValue("DecodeParms") : nullptr; + std::vector DecoderList; + CFX_ArrayTemplate ParamList; + if (CPDF_Array* pDecoders = pDecoder->AsArray()) { + CPDF_Array* pParamsArray = ToArray(pParams); + if (!pParamsArray) + pParams = nullptr; + + for (FX_DWORD i = 0; i < pDecoders->GetCount(); i++) { + DecoderList.push_back(pDecoders->GetConstStringAt(i)); + ParamList.Add(pParams ? pParamsArray->GetDictAt(i) : nullptr); + } + } else { + DecoderList.push_back(pDecoder->GetConstString()); + ParamList.Add(pParams ? pParams->GetDict() : nullptr); + } + uint8_t* last_buf = (uint8_t*)src_buf; + FX_DWORD last_size = src_size; + int nSize = pdfium::CollectionSize(DecoderList); + for (int i = 0; i < nSize; i++) { + int estimated_size = i == nSize - 1 ? last_estimated_size : 0; + CFX_ByteString decoder = DecoderList[i]; + // Use ToDictionary here because we can push nullptr into the ParamList. + CPDF_Dictionary* pParam = ToDictionary(ParamList[i]); + uint8_t* new_buf = nullptr; + FX_DWORD new_size = (FX_DWORD)-1; + int offset = -1; + if (decoder == "FlateDecode" || decoder == "Fl") { + if (bImageAcc && i == nSize - 1) { + ImageEncoding = "FlateDecode"; + dest_buf = (uint8_t*)last_buf; + dest_size = last_size; + pImageParms = pParam; + return TRUE; + } + offset = FPDFAPI_FlateOrLZWDecode(FALSE, last_buf, last_size, pParam, + estimated_size, new_buf, new_size); + } else if (decoder == "LZWDecode" || decoder == "LZW") { + offset = FPDFAPI_FlateOrLZWDecode(TRUE, last_buf, last_size, pParam, + estimated_size, new_buf, new_size); + } else if (decoder == "ASCII85Decode" || decoder == "A85") { + offset = A85Decode(last_buf, last_size, new_buf, new_size); + } else if (decoder == "ASCIIHexDecode" || decoder == "AHx") { + offset = HexDecode(last_buf, last_size, new_buf, new_size); + } else if (decoder == "RunLengthDecode" || decoder == "RL") { + if (bImageAcc && i == nSize - 1) { + ImageEncoding = "RunLengthDecode"; + dest_buf = (uint8_t*)last_buf; + dest_size = last_size; + pImageParms = pParam; + return TRUE; + } + offset = RunLengthDecode(last_buf, last_size, new_buf, new_size); + } else if (decoder == "Crypt") { + continue; + } else { + // If we get here, assume it's an image decoder. + if (decoder == "DCT") { + decoder = "DCTDecode"; + } else if (decoder == "CCF") { + decoder = "CCITTFaxDecode"; + } + ImageEncoding = decoder; + pImageParms = pParam; + dest_buf = (uint8_t*)last_buf; + dest_size = last_size; + if (CPDF_Array* pDecoders = pDecoder->AsArray()) + pDecoders->RemoveAt(i + 1, pDecoders->GetCount() - i - 1); + return TRUE; + } + if (last_buf != src_buf) { + FX_Free(last_buf); + } + if (offset == -1) { + FX_Free(new_buf); + return FALSE; + } + last_buf = new_buf; + last_size = new_size; + } + ImageEncoding = ""; + pImageParms = nullptr; + dest_buf = last_buf; + dest_size = last_size; + return TRUE; +} + +CFX_WideString PDF_DecodeText(const uint8_t* src_data, FX_DWORD src_len) { + CFX_WideString result; + if (src_len >= 2 && ((src_data[0] == 0xfe && src_data[1] == 0xff) || + (src_data[0] == 0xff && src_data[1] == 0xfe))) { + bool bBE = src_data[0] == 0xfe; + FX_DWORD max_chars = (src_len - 2) / 2; + if (!max_chars) { + return result; + } + if (src_data[0] == 0xff) { + bBE = !src_data[2]; + } + FX_WCHAR* dest_buf = result.GetBuffer(max_chars); + const uint8_t* uni_str = src_data + 2; + int dest_pos = 0; + for (FX_DWORD i = 0; i < max_chars * 2; i += 2) { + FX_WORD unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) + : (uni_str[i + 1] << 8 | uni_str[i]); + if (unicode == 0x1b) { + i += 2; + while (i < max_chars * 2) { + FX_WORD unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) + : (uni_str[i + 1] << 8 | uni_str[i]); + i += 2; + if (unicode == 0x1b) { + break; + } + } + } else { + dest_buf[dest_pos++] = unicode; + } + } + result.ReleaseBuffer(dest_pos); + } else { + FX_WCHAR* dest_buf = result.GetBuffer(src_len); + for (FX_DWORD i = 0; i < src_len; i++) + dest_buf[i] = PDFDocEncoding[src_data[i]]; + result.ReleaseBuffer(src_len); + } + return result; +} + +CFX_WideString PDF_DecodeText(const CFX_ByteString& bstr) { + return PDF_DecodeText((const uint8_t*)bstr.c_str(), bstr.GetLength()); +} + +CFX_ByteString PDF_EncodeText(const FX_WCHAR* pString, int len) { + if (len == -1) { + len = FXSYS_wcslen(pString); + } + CFX_ByteString result; + FX_CHAR* dest_buf1 = result.GetBuffer(len); + int i; + for (i = 0; i < len; i++) { + int code; + for (code = 0; code < 256; code++) + if (PDFDocEncoding[code] == pString[i]) { + break; + } + if (code == 256) { + break; + } + dest_buf1[i] = code; + } + result.ReleaseBuffer(i); + if (i == len) { + return result; + } + + if (len > INT_MAX / 2 - 1) { + result.ReleaseBuffer(0); + return result; + } + + int encLen = len * 2 + 2; + + uint8_t* dest_buf2 = (uint8_t*)result.GetBuffer(encLen); + dest_buf2[0] = 0xfe; + dest_buf2[1] = 0xff; + dest_buf2 += 2; + for (int i = 0; i < len; i++) { + *dest_buf2++ = pString[i] >> 8; + *dest_buf2++ = (uint8_t)pString[i]; + } + result.ReleaseBuffer(encLen); + return result; +} + +CFX_ByteString PDF_EncodeText(const CFX_WideString& str) { + return PDF_EncodeText(str.c_str(), str.GetLength()); +} + +CFX_ByteString PDF_EncodeString(const CFX_ByteString& src, FX_BOOL bHex) { + CFX_ByteTextBuf result; + int srclen = src.GetLength(); + if (bHex) { + result.AppendChar('<'); + for (int i = 0; i < srclen; i++) { + result.AppendChar("0123456789ABCDEF"[src[i] / 16]); + result.AppendChar("0123456789ABCDEF"[src[i] % 16]); + } + result.AppendChar('>'); + return result.GetByteString(); + } + result.AppendChar('('); + for (int i = 0; i < srclen; i++) { + uint8_t ch = src[i]; + if (ch == ')' || ch == '\\' || ch == '(') { + result.AppendChar('\\'); + } else if (ch == 0x0a) { + result << "\\n"; + continue; + } else if (ch == 0x0d) { + result << "\\r"; + continue; + } + result.AppendChar(ch); + } + result.AppendChar(')'); + return result.GetByteString(); +} + +void FlateEncode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); + if (pEncoders) { + pEncoders->GetFlateModule()->Encode(src_buf, src_size, dest_buf, dest_size); + } +} + +void FlateEncode(const uint8_t* src_buf, + FX_DWORD src_size, + int predictor, + int Colors, + int BitsPerComponent, + int Columns, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); + if (pEncoders) { + pEncoders->GetFlateModule()->Encode(src_buf, src_size, predictor, Colors, + BitsPerComponent, Columns, dest_buf, + dest_size); + } +} + +FX_DWORD FlateDecode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); + if (pEncoders) { + return pEncoders->GetFlateModule()->FlateOrLZWDecode( + FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); + } + return 0; +} diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp new file mode 100644 index 0000000000..2412f4310c --- /dev/null +++ b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp @@ -0,0 +1,117 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fpdfapi/fpdf_parser_decode.h" + +#include +#include + +#include "core/include/fxcrt/fx_basic.h" +#include "testing/embedder_test.h" +#include "testing/fx_string_testhelpers.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/test_support.h" + +class FPDFParserDecodeEmbeddertest : public EmbedderTest {}; + +// NOTE: python's zlib.compress() and zlib.decompress() may be useful for +// external validation of the FlateEncode/FlateDecode test cases. + +TEST_F(FPDFParserDecodeEmbeddertest, FlateEncode) { + pdfium::StrFuncTestData flate_encode_cases[] = { + STR_IN_OUT_CASE("", "\x78\x9c\x03\x00\x00\x00\x00\x01"), + STR_IN_OUT_CASE(" ", "\x78\x9c\x53\x00\x00\x00\x21\x00\x21"), + STR_IN_OUT_CASE("123", "\x78\x9c\x33\x34\x32\x06\x00\01\x2d\x00\x97"), + STR_IN_OUT_CASE("\x00\xff", "\x78\x9c\x63\xf8\x0f\x00\x01\x01\x01\x00"), + STR_IN_OUT_CASE( + "1 0 0 -1 29 763 cm\n0 0 555 735 re\nW n\nq\n0 0 555 734.394 re\n" + "W n\nq\n0.8009 0 0 0.8009 0 0 cm\n1 1 1 RG 1 1 1 rg\n/G0 gs\n" + "0 0 693 917 re\nf\nQ\nQ\n", + "\x78\x9c\x33\x54\x30\x00\x42\x5d\x43\x05\x23\x4b\x05\x73\x33\x63" + "\x85\xe4\x5c\x2e\x90\x80\xa9\xa9\xa9\x82\xb9\xb1\xa9\x42\x51\x2a" + "\x57\xb8\x42\x1e\x57\x21\x92\xa0\x89\x9e\xb1\xa5\x09\x92\x84\x9e" + "\x85\x81\x81\x25\xd8\x14\x24\x26\xd0\x18\x43\x05\x10\x0c\x72\x57" + "\x80\x30\x8a\xd2\xb9\xf4\xdd\x0d\x14\xd2\x8b\xc1\x46\x99\x59\x1a" + "\x2b\x58\x1a\x9a\x83\x8c\x49\xe3\x0a\x04\x42\x00\x37\x4c\x1b\x42"), + }; + + for (size_t i = 0; i < FX_ArraySize(flate_encode_cases); ++i) { + const pdfium::StrFuncTestData& data = flate_encode_cases[i]; + unsigned char* result; + unsigned int result_size; + FlateEncode(data.input, data.input_size, result, result_size); + ASSERT_TRUE(result); + EXPECT_EQ(std::string((const char*)data.expected, data.expected_size), + std::string((const char*)result, result_size)) + << " for case " << i; + FX_Free(result); + } +} + +TEST_F(FPDFParserDecodeEmbeddertest, FlateDecode) { + pdfium::DecodeTestData flate_decode_cases[] = { + STR_IN_OUT_CASE("", "", 0), + STR_IN_OUT_CASE("preposterous nonsense", "", 2), + STR_IN_OUT_CASE("\x78\x9c\x03\x00\x00\x00\x00\x01", "", 8), + STR_IN_OUT_CASE("\x78\x9c\x53\x00\x00\x00\x21\x00\x21", " ", 9), + STR_IN_OUT_CASE("\x78\x9c\x33\x34\x32\x06\x00\01\x2d\x00\x97", "123", 11), + STR_IN_OUT_CASE("\x78\x9c\x63\xf8\x0f\x00\x01\x01\x01\x00", "\x00\xff", + 10), + STR_IN_OUT_CASE( + "\x78\x9c\x33\x54\x30\x00\x42\x5d\x43\x05\x23\x4b\x05\x73\x33\x63" + "\x85\xe4\x5c\x2e\x90\x80\xa9\xa9\xa9\x82\xb9\xb1\xa9\x42\x51\x2a" + "\x57\xb8\x42\x1e\x57\x21\x92\xa0\x89\x9e\xb1\xa5\x09\x92\x84\x9e" + "\x85\x81\x81\x25\xd8\x14\x24\x26\xd0\x18\x43\x05\x10\x0c\x72\x57" + "\x80\x30\x8a\xd2\xb9\xf4\xdd\x0d\x14\xd2\x8b\xc1\x46\x99\x59\x1a" + "\x2b\x58\x1a\x9a\x83\x8c\x49\xe3\x0a\x04\x42\x00\x37\x4c\x1b\x42", + "1 0 0 -1 29 763 cm\n0 0 555 735 re\nW n\nq\n0 0 555 734.394 re\n" + "W n\nq\n0.8009 0 0 0.8009 0 0 cm\n1 1 1 RG 1 1 1 rg\n/G0 gs\n" + "0 0 693 917 re\nf\nQ\nQ\n", + 96), + }; + + for (size_t i = 0; i < FX_ArraySize(flate_decode_cases); ++i) { + const pdfium::DecodeTestData& data = flate_decode_cases[i]; + unsigned char* result; + unsigned int result_size; + EXPECT_EQ(data.processed_size, + FlateDecode(data.input, data.input_size, result, result_size)) + << " for case " << i; + ASSERT_TRUE(result); + EXPECT_EQ(std::string((const char*)data.expected, data.expected_size), + std::string((const char*)result, result_size)) + << " for case " << i; + FX_Free(result); + } +} + +TEST_F(FPDFParserDecodeEmbeddertest, Bug_552046) { + // Tests specifying multiple image filters for a stream. Should not cause a + // crash when rendered. + EXPECT_TRUE(OpenDocument("bug_552046.pdf")); + FPDF_PAGE page = LoadPage(0); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} + +TEST_F(FPDFParserDecodeEmbeddertest, Bug_555784) { + // Tests bad input to the run length decoder that caused a heap overflow. + // Should not cause a crash when rendered. + EXPECT_TRUE(OpenDocument("bug_555784.pdf")); + FPDF_PAGE page = LoadPage(0); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} + +TEST_F(FPDFParserDecodeEmbeddertest, Bug_455199) { + // Tests object numbers with a value > 01000000. + // Should open successfully. + EXPECT_TRUE(OpenDocument("bug_455199.pdf")); + FPDF_PAGE page = LoadPage(0); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp new file mode 100644 index 0000000000..e00759da7a --- /dev/null +++ b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp @@ -0,0 +1,78 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fpdfapi/fpdf_parser_decode.h" + +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/test_support.h" + +TEST(fpdf_parser_decode, A85Decode) { + pdfium::DecodeTestData test_data[] = { + // Empty src string. + STR_IN_OUT_CASE("", "", 0), + // Empty content in src string. + STR_IN_OUT_CASE("~>", "", 0), + // Regular conversion. + STR_IN_OUT_CASE("FCfN8~>", "test", 7), + // End at the ending mark. + STR_IN_OUT_CASE("FCfN8~>FCfN8", "test", 7), + // Skip whitespaces. + STR_IN_OUT_CASE("\t F C\r\n \tf N 8 ~>", "test", 17), + // No ending mark. + STR_IN_OUT_CASE("@3B0)DJj_BF*)>@Gp#-s", "a funny story :)", 20), + // Non-multiple length. + STR_IN_OUT_CASE("12A", "2k", 3), + // Stop at unknown characters. + STR_IN_OUT_CASE("FCfN8FCfN8vw", "testtest", 11), + }; + for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { + pdfium::DecodeTestData* ptr = &test_data[i]; + uint8_t* result = nullptr; + FX_DWORD result_size; + EXPECT_EQ(ptr->processed_size, + A85Decode(ptr->input, ptr->input_size, result, result_size)) + << "for case " << i; + ASSERT_EQ(ptr->expected_size, result_size); + for (size_t j = 0; j < result_size; ++j) { + EXPECT_EQ(ptr->expected[j], result[j]) << "for case " << i << " char " + << j; + } + FX_Free(result); + } +} + +TEST(fpdf_parser_decode, HexDecode) { + pdfium::DecodeTestData test_data[] = { + // Empty src string. + STR_IN_OUT_CASE("", "", 0), + // Empty content in src string. + STR_IN_OUT_CASE(">", "", 1), + // Only whitespaces in src string. + STR_IN_OUT_CASE("\t \r\n>", "", 7), + // Regular conversion. + STR_IN_OUT_CASE("12Ac>zzz", "\x12\xac", 5), + // Skip whitespaces. + STR_IN_OUT_CASE("12 Ac\t02\r\nBF>zzz>", "\x12\xac\x02\xbf", 13), + // Non-multiple length. + STR_IN_OUT_CASE("12A>zzz", "\x12\xa0", 4), + // Skips unknown characters. + STR_IN_OUT_CASE("12tk \tAc>zzz", "\x12\xac", 10), + // No ending mark. + STR_IN_OUT_CASE("12AcED3c3456", "\x12\xac\xed\x3c\x34\x56", 12), + }; + for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { + pdfium::DecodeTestData* ptr = &test_data[i]; + uint8_t* result = nullptr; + FX_DWORD result_size; + EXPECT_EQ(ptr->processed_size, + HexDecode(ptr->input, ptr->input_size, result, result_size)) + << "for case " << i; + ASSERT_EQ(ptr->expected_size, result_size); + for (size_t j = 0; j < result_size; ++j) { + EXPECT_EQ(ptr->expected[j], result[j]) << "for case " << i << " char " + << j; + } + FX_Free(result); + } +} diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp new file mode 100644 index 0000000000..1f0ab5f876 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp @@ -0,0 +1,228 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h" + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfapi/fpdf_parser_decode.h" +#include "core/include/fxcrt/fx_ext.h" + +// Indexed by 8-bit character code, contains either: +// 'W' - for whitespace: NUL, TAB, CR, LF, FF, SPACE, 0x80, 0xff +// 'N' - for numeric: 0123456789+-. +// 'D' - for delimiter: %()/<>[]{} +// 'R' - otherwise. +const char PDF_CharType[256] = { + // NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO + // SI + 'W', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'W', 'W', 'R', 'W', 'W', 'R', + 'R', + + // DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS + // US + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', + + // SP ! " # $ % & ´ ( ) * + , - . + // / + 'W', 'R', 'R', 'R', 'R', 'D', 'R', 'R', 'D', 'D', 'R', 'N', 'R', 'N', 'N', + 'D', + + // 0 1 2 3 4 5 6 7 8 9 : ; < = > ? + 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'R', 'R', 'D', 'R', 'D', + 'R', + + // @ A B C D E F G H I J K L M N O + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', + + // P Q R S T U V W X Y Z [ \ ] ^ _ + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'D', 'R', 'D', 'R', + 'R', + + // ` a b c d e f g h i j k l m n o + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', + + // p q r s t u v w x y z { | } ~ + // DEL + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'D', 'R', 'D', 'R', + 'R', + + 'W', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', + 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'W'}; + +int32_t GetHeaderOffset(IFX_FileRead* pFile) { + // TODO(dsinclair): This is a complicated way of saying %PDF, simplify? + const FX_DWORD tag = FXDWORD_FROM_LSBFIRST(0x46445025); + + const size_t kBufSize = 4; + uint8_t buf[kBufSize]; + int32_t offset = 0; + while (offset <= 1024) { + if (!pFile->ReadBlock(buf, offset, kBufSize)) + return -1; + + if (*(FX_DWORD*)buf == tag) + return offset; + + ++offset; + } + return -1; +} + +int32_t GetDirectInteger(CPDF_Dictionary* pDict, const CFX_ByteStringC& key) { + CPDF_Number* pObj = ToNumber(pDict->GetElement(key)); + return pObj ? pObj->GetInteger() : 0; +} + +CFX_ByteString PDF_NameDecode(const CFX_ByteStringC& bstr) { + int size = bstr.GetLength(); + const FX_CHAR* pSrc = bstr.GetCStr(); + if (!FXSYS_memchr(pSrc, '#', size)) { + return bstr; + } + CFX_ByteString result; + FX_CHAR* pDestStart = result.GetBuffer(size); + FX_CHAR* pDest = pDestStart; + for (int i = 0; i < size; i++) { + if (pSrc[i] == '#' && i < size - 2) { + *pDest++ = + FXSYS_toHexDigit(pSrc[i + 1]) * 16 + FXSYS_toHexDigit(pSrc[i + 2]); + i += 2; + } else { + *pDest++ = pSrc[i]; + } + } + result.ReleaseBuffer((FX_STRSIZE)(pDest - pDestStart)); + return result; +} + +CFX_ByteString PDF_NameDecode(const CFX_ByteString& orig) { + if (!FXSYS_memchr(orig.c_str(), '#', orig.GetLength())) { + return orig; + } + return PDF_NameDecode(CFX_ByteStringC(orig)); +} + +CFX_ByteString PDF_NameEncode(const CFX_ByteString& orig) { + uint8_t* src_buf = (uint8_t*)orig.c_str(); + int src_len = orig.GetLength(); + int dest_len = 0; + int i; + for (i = 0; i < src_len; i++) { + uint8_t ch = src_buf[i]; + if (ch >= 0x80 || PDFCharIsWhitespace(ch) || ch == '#' || + PDFCharIsDelimiter(ch)) { + dest_len += 3; + } else { + dest_len++; + } + } + if (dest_len == src_len) + return orig; + + CFX_ByteString res; + FX_CHAR* dest_buf = res.GetBuffer(dest_len); + dest_len = 0; + for (i = 0; i < src_len; i++) { + uint8_t ch = src_buf[i]; + if (ch >= 0x80 || PDFCharIsWhitespace(ch) || ch == '#' || + PDFCharIsDelimiter(ch)) { + dest_buf[dest_len++] = '#'; + dest_buf[dest_len++] = "0123456789ABCDEF"[ch / 16]; + dest_buf[dest_len++] = "0123456789ABCDEF"[ch % 16]; + } else { + dest_buf[dest_len++] = ch; + } + } + dest_buf[dest_len] = 0; + res.ReleaseBuffer(); + return res; +} + +CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& buf, const CPDF_Object* pObj) { + if (!pObj) { + buf << " null"; + return buf; + } + switch (pObj->GetType()) { + case CPDF_Object::NULLOBJ: + buf << " null"; + break; + case CPDF_Object::BOOLEAN: + case CPDF_Object::NUMBER: + buf << " " << pObj->GetString(); + break; + case CPDF_Object::STRING: + buf << PDF_EncodeString(pObj->GetString(), pObj->AsString()->IsHex()); + break; + case CPDF_Object::NAME: { + CFX_ByteString str = pObj->GetString(); + buf << "/" << PDF_NameEncode(str); + break; + } + case CPDF_Object::REFERENCE: { + buf << " " << pObj->AsReference()->GetRefObjNum() << " 0 R "; + break; + } + case CPDF_Object::ARRAY: { + const CPDF_Array* p = pObj->AsArray(); + buf << "["; + for (FX_DWORD i = 0; i < p->GetCount(); i++) { + CPDF_Object* pElement = p->GetElement(i); + if (pElement->GetObjNum()) { + buf << " " << pElement->GetObjNum() << " 0 R"; + } else { + buf << pElement; + } + } + buf << "]"; + break; + } + case CPDF_Object::DICTIONARY: { + const CPDF_Dictionary* p = pObj->AsDictionary(); + buf << "<<"; + for (const auto& it : *p) { + const CFX_ByteString& key = it.first; + CPDF_Object* pValue = it.second; + buf << "/" << PDF_NameEncode(key); + if (pValue && pValue->GetObjNum()) { + buf << " " << pValue->GetObjNum() << " 0 R "; + } else { + buf << pValue; + } + } + buf << ">>"; + break; + } + case CPDF_Object::STREAM: { + const CPDF_Stream* p = pObj->AsStream(); + buf << p->GetDict() << "stream\r\n"; + CPDF_StreamAcc acc; + acc.LoadAllData(p, TRUE); + buf.AppendBlock(acc.GetData(), acc.GetSize()); + buf << "\r\nendstream"; + break; + } + default: + ASSERT(FALSE); + break; + } + return buf; +} diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_utility.h b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.h new file mode 100644 index 0000000000..d0410eec98 --- /dev/null +++ b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.h @@ -0,0 +1,39 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_ +#define CORE_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_ + +#include "core/include/fxcrt/fx_string.h" +#include "core/include/fxcrt/fx_system.h" + +class IFX_FileRead; +class CPDF_Dictionary; + +// Use the accessors below instead of directly accessing PDF_CharType. +extern const char PDF_CharType[256]; + +inline bool PDFCharIsWhitespace(uint8_t c) { + return PDF_CharType[c] == 'W'; +} +inline bool PDFCharIsNumeric(uint8_t c) { + return PDF_CharType[c] == 'N'; +} +inline bool PDFCharIsDelimiter(uint8_t c) { + return PDF_CharType[c] == 'D'; +} +inline bool PDFCharIsOther(uint8_t c) { + return PDF_CharType[c] == 'R'; +} + +inline bool PDFCharIsLineEnding(uint8_t c) { + return c == '\r' || c == '\n'; +} + +int32_t GetHeaderOffset(IFX_FileRead* pFile); +int32_t GetDirectInteger(CPDF_Dictionary* pDict, const CFX_ByteStringC& key); + +#endif // CORE_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_ diff --git a/core/fpdfapi/fpdf_render/fpdf_render.cpp b/core/fpdfapi/fpdf_render/fpdf_render.cpp new file mode 100644 index 0000000000..2b82ed4cc6 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp @@ -0,0 +1,1337 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_render/render_int.h" + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "core/include/fxge/fx_ge.h" + +CPDF_DocRenderData::CPDF_DocRenderData(CPDF_Document* pPDFDoc) + : m_pPDFDoc(pPDFDoc), m_pFontCache(new CFX_FontCache) {} + +CPDF_DocRenderData::~CPDF_DocRenderData() { + Clear(TRUE); +} + +void CPDF_DocRenderData::Clear(FX_BOOL bRelease) { + for (auto it = m_Type3FaceMap.begin(); it != m_Type3FaceMap.end();) { + auto curr_it = it++; + CPDF_CountedObject* cache = curr_it->second; + if (bRelease || cache->use_count() < 2) { + delete cache->get(); + delete cache; + m_Type3FaceMap.erase(curr_it); + } + } + + for (auto it = m_TransferFuncMap.begin(); it != m_TransferFuncMap.end();) { + auto curr_it = it++; + CPDF_CountedObject* value = curr_it->second; + if (bRelease || value->use_count() < 2) { + delete value->get(); + delete value; + m_TransferFuncMap.erase(curr_it); + } + } + + if (m_pFontCache) { + if (bRelease) { + delete m_pFontCache; + m_pFontCache = NULL; + } else { + m_pFontCache->FreeCache(FALSE); + } + } +} + +CPDF_Type3Cache* CPDF_DocRenderData::GetCachedType3(CPDF_Type3Font* pFont) { + CPDF_CountedObject* pCache; + auto it = m_Type3FaceMap.find(pFont); + if (it == m_Type3FaceMap.end()) { + CPDF_Type3Cache* pType3 = new CPDF_Type3Cache(pFont); + pCache = new CPDF_CountedObject(pType3); + m_Type3FaceMap[pFont] = pCache; + } else { + pCache = it->second; + } + return pCache->AddRef(); +} + +void CPDF_DocRenderData::ReleaseCachedType3(CPDF_Type3Font* pFont) { + auto it = m_Type3FaceMap.find(pFont); + if (it != m_Type3FaceMap.end()) + it->second->RemoveRef(); +} + +class CPDF_RenderModule : public IPDF_RenderModule { + public: + CPDF_RenderModule() {} + + private: + ~CPDF_RenderModule() override {} + + CPDF_DocRenderData* CreateDocData(CPDF_Document* pDoc) override; + void DestroyDocData(CPDF_DocRenderData* p) override; + void ClearDocData(CPDF_DocRenderData* p) override; + + CPDF_DocRenderData* GetRenderData() override { return &m_RenderData; } + + CPDF_PageRenderCache* CreatePageCache(CPDF_Page* pPage) override { + return new CPDF_PageRenderCache(pPage); + } + + void DestroyPageCache(CPDF_PageRenderCache* pCache) override; + + CPDF_DocRenderData m_RenderData; +}; + +CPDF_DocRenderData* CPDF_RenderModule::CreateDocData(CPDF_Document* pDoc) { + return new CPDF_DocRenderData(pDoc); +} +void CPDF_RenderModule::DestroyDocData(CPDF_DocRenderData* pDocData) { + delete pDocData; +} +void CPDF_RenderModule::ClearDocData(CPDF_DocRenderData* p) { + if (p) { + p->Clear(FALSE); + } +} +void CPDF_RenderModule::DestroyPageCache(CPDF_PageRenderCache* pCache) { + delete pCache; +} + +void CPDF_ModuleMgr::InitRenderModule() { + m_pRenderModule.reset(new CPDF_RenderModule); +} + +CPDF_RenderOptions::CPDF_RenderOptions() + : m_ColorMode(RENDER_COLOR_NORMAL), + m_Flags(RENDER_CLEARTYPE), + m_Interpolation(0), + m_AddFlags(0), + m_pOCContext(NULL), + m_dwLimitCacheSize(1024 * 1024 * 100), + m_HalftoneLimit(-1) {} +FX_ARGB CPDF_RenderOptions::TranslateColor(FX_ARGB argb) const { + if (m_ColorMode == RENDER_COLOR_NORMAL) { + return argb; + } + if (m_ColorMode == RENDER_COLOR_ALPHA) { + return argb; + } + int a, r, g, b; + ArgbDecode(argb, a, r, g, b); + int gray = FXRGB2GRAY(r, g, b); + if (m_ColorMode == RENDER_COLOR_TWOCOLOR) { + int color = (r - gray) * (r - gray) + (g - gray) * (g - gray) + + (b - gray) * (b - gray); + if (gray < 35 && color < 20) { + return ArgbEncode(a, m_ForeColor); + } + if (gray > 221 && color < 20) { + return ArgbEncode(a, m_BackColor); + } + return argb; + } + int fr = FXSYS_GetRValue(m_ForeColor); + int fg = FXSYS_GetGValue(m_ForeColor); + int fb = FXSYS_GetBValue(m_ForeColor); + int br = FXSYS_GetRValue(m_BackColor); + int bg = FXSYS_GetGValue(m_BackColor); + int bb = FXSYS_GetBValue(m_BackColor); + r = (br - fr) * gray / 255 + fr; + g = (bg - fg) * gray / 255 + fg; + b = (bb - fb) * gray / 255 + fb; + return ArgbEncode(a, r, g, b); +} + +// static +int CPDF_RenderStatus::s_CurrentRecursionDepth = 0; + +CPDF_RenderStatus::CPDF_RenderStatus() + : m_pFormResource(nullptr), + m_pPageResource(nullptr), + m_pContext(nullptr), + m_bStopped(FALSE), + m_pDevice(nullptr), + m_pCurObj(nullptr), + m_pStopObj(nullptr), + m_HalftoneLimit(0), + m_bPrint(FALSE), + m_Transparency(0), + m_DitherBits(0), + m_bDropObjects(FALSE), + m_bStdCS(FALSE), + m_GroupFamily(0), + m_bLoadMask(FALSE), + m_pType3Char(nullptr), + m_T3FillColor(0), + m_curBlend(FXDIB_BLEND_NORMAL) {} + +CPDF_RenderStatus::~CPDF_RenderStatus() {} + +FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + const CFX_Matrix* pDeviceMatrix, + const CPDF_PageObject* pStopObj, + const CPDF_RenderStatus* pParentState, + const CPDF_GraphicStates* pInitialStates, + const CPDF_RenderOptions* pOptions, + int transparency, + FX_BOOL bDropObjects, + CPDF_Dictionary* pFormResource, + FX_BOOL bStdCS, + CPDF_Type3Char* pType3Char, + FX_ARGB fill_color, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask) { + m_pContext = pContext; + m_pDevice = pDevice; + m_DitherBits = pDevice->GetDeviceCaps(FXDC_DITHER_BITS); + m_bPrint = m_pDevice->GetDeviceClass() != FXDC_DISPLAY; + if (pDeviceMatrix) { + m_DeviceMatrix = *pDeviceMatrix; + } + m_pStopObj = pStopObj; + if (pOptions) { + m_Options = *pOptions; + } + m_bDropObjects = bDropObjects; + m_bStdCS = bStdCS; + m_T3FillColor = fill_color; + m_pType3Char = pType3Char; + m_GroupFamily = GroupFamily; + m_bLoadMask = bLoadMask; + m_pFormResource = pFormResource; + m_pPageResource = m_pContext->GetPageResources(); + if (pInitialStates && !m_pType3Char) { + m_InitialStates.CopyStates(*pInitialStates); + if (pParentState) { + CPDF_ColorStateData* pColorData = + (CPDF_ColorStateData*)(const CPDF_ColorStateData*) + m_InitialStates.m_ColorState; + CPDF_ColorStateData* pParentData = + (CPDF_ColorStateData*)(const CPDF_ColorStateData*) + pParentState->m_InitialStates.m_ColorState; + if (!pColorData || pColorData->m_FillColor.IsNull()) { + CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); + pData->m_FillRGB = pParentData->m_FillRGB; + pData->m_FillColor.Copy(&pParentData->m_FillColor); + } + if (!pColorData || pColorData->m_StrokeColor.IsNull()) { + CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); + pData->m_StrokeRGB = pParentData->m_FillRGB; + pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor); + } + } + } else { + m_InitialStates.DefaultStates(); + } + m_pObjectRenderer.reset(); + m_Transparency = transparency; + return TRUE; +} +void CPDF_RenderStatus::RenderObjectList( + const CPDF_PageObjectHolder* pObjectHolder, + const CFX_Matrix* pObj2Device) { + CFX_FloatRect clip_rect(m_pDevice->GetClipBox()); + CFX_Matrix device2object; + device2object.SetReverse(*pObj2Device); + device2object.TransformRect(clip_rect); + + for (const auto& pCurObj : *pObjectHolder->GetPageObjectList()) { + if (pCurObj.get() == m_pStopObj) { + m_bStopped = TRUE; + return; + } + if (!pCurObj) + continue; + + if (pCurObj->m_Left > clip_rect.right || + pCurObj->m_Right < clip_rect.left || + pCurObj->m_Bottom > clip_rect.top || + pCurObj->m_Top < clip_rect.bottom) { + continue; + } + RenderSingleObject(pCurObj.get(), pObj2Device); + if (m_bStopped) + return; + } +} +void CPDF_RenderStatus::RenderSingleObject(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device) { + CFX_AutoRestorer restorer(&s_CurrentRecursionDepth); + if (++s_CurrentRecursionDepth > kRenderMaxRecursionDepth) { + return; + } + m_pCurObj = pObj; + if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull()) { + if (!m_Options.m_pOCContext->CheckObjectVisible(pObj)) { + return; + } + } + ProcessClipPath(pObj->m_ClipPath, pObj2Device); + if (ProcessTransparency(pObj, pObj2Device)) { + return; + } + ProcessObjectNoClip(pObj, pObj2Device); +} + +FX_BOOL CPDF_RenderStatus::ContinueSingleObject(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device, + IFX_Pause* pPause) { + if (m_pObjectRenderer) { + if (m_pObjectRenderer->Continue(pPause)) + return TRUE; + + if (!m_pObjectRenderer->m_Result) + DrawObjWithBackground(pObj, pObj2Device); + m_pObjectRenderer.reset(); + return FALSE; + } + + m_pCurObj = pObj; + if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull() && + !m_Options.m_pOCContext->CheckObjectVisible(pObj)) { + return FALSE; + } + + ProcessClipPath(pObj->m_ClipPath, pObj2Device); + if (ProcessTransparency(pObj, pObj2Device)) + return FALSE; + + if (pObj->IsImage()) { + m_pObjectRenderer.reset(IPDF_ObjectRenderer::Create()); + if (!m_pObjectRenderer->Start(this, pObj, pObj2Device, FALSE)) { + if (!m_pObjectRenderer->m_Result) + DrawObjWithBackground(pObj, pObj2Device); + m_pObjectRenderer.reset(); + return FALSE; + } + return ContinueSingleObject(pObj, pObj2Device, pPause); + } + + ProcessObjectNoClip(pObj, pObj2Device); + return FALSE; +} + +IPDF_ObjectRenderer* IPDF_ObjectRenderer::Create() { + return new CPDF_ImageRenderer; +} + +FX_BOOL CPDF_RenderStatus::GetObjectClippedRect(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bLogical, + FX_RECT& rect) const { + rect = pObj->GetBBox(pObj2Device); + FX_RECT rtClip = m_pDevice->GetClipBox(); + if (!bLogical) { + CFX_Matrix dCTM = m_pDevice->GetCTM(); + FX_FLOAT a = FXSYS_fabs(dCTM.a); + FX_FLOAT d = FXSYS_fabs(dCTM.d); + if (a != 1.0f || d != 1.0f) { + rect.right = rect.left + (int32_t)FXSYS_ceil((FX_FLOAT)rect.Width() * a); + rect.bottom = rect.top + (int32_t)FXSYS_ceil((FX_FLOAT)rect.Height() * d); + rtClip.right = + rtClip.left + (int32_t)FXSYS_ceil((FX_FLOAT)rtClip.Width() * a); + rtClip.bottom = + rtClip.top + (int32_t)FXSYS_ceil((FX_FLOAT)rtClip.Height() * d); + } + } + rect.Intersect(rtClip); + return rect.IsEmpty(); +} +void CPDF_RenderStatus::DitherObjectArea(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device) { + CFX_DIBitmap* pBitmap = m_pDevice->GetBitmap(); + if (!pBitmap) { + return; + } + FX_RECT rect; + if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) { + return; + } + if (m_DitherBits == 2) { + static FX_ARGB pal[4] = {0, 85, 170, 255}; + pBitmap->DitherFS(pal, 4, &rect); + } else if (m_DitherBits == 3) { + static FX_ARGB pal[8] = {0, 36, 73, 109, 146, 182, 219, 255}; + pBitmap->DitherFS(pal, 8, &rect); + } else if (m_DitherBits == 4) { + static FX_ARGB pal[16] = {0, 17, 34, 51, 68, 85, 102, 119, + 136, 153, 170, 187, 204, 221, 238, 255}; + pBitmap->DitherFS(pal, 16, &rect); + } +} +void CPDF_RenderStatus::ProcessObjectNoClip(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device) { + FX_BOOL bRet = FALSE; + switch (pObj->GetType()) { + case CPDF_PageObject::TEXT: + bRet = ProcessText(pObj->AsText(), pObj2Device, NULL); + break; + case CPDF_PageObject::PATH: + bRet = ProcessPath(pObj->AsPath(), pObj2Device); + break; + case CPDF_PageObject::IMAGE: + bRet = ProcessImage(pObj->AsImage(), pObj2Device); + break; + case CPDF_PageObject::SHADING: + bRet = ProcessShading(pObj->AsShading(), pObj2Device); + break; + case CPDF_PageObject::FORM: + bRet = ProcessForm(pObj->AsForm(), pObj2Device); + break; + } + if (!bRet) { + DrawObjWithBackground(pObj, pObj2Device); + } +} +FX_BOOL CPDF_RenderStatus::DrawObjWithBlend(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device) { + FX_BOOL bRet = FALSE; + switch (pObj->GetType()) { + case CPDF_PageObject::PATH: + bRet = ProcessPath(pObj->AsPath(), pObj2Device); + break; + case CPDF_PageObject::IMAGE: + bRet = ProcessImage(pObj->AsImage(), pObj2Device); + break; + case CPDF_PageObject::FORM: + bRet = ProcessForm(pObj->AsForm(), pObj2Device); + break; + default: + break; + } + return bRet; +} +void CPDF_RenderStatus::GetScaledMatrix(CFX_Matrix& matrix) const { + CFX_Matrix dCTM = m_pDevice->GetCTM(); + matrix.a *= FXSYS_fabs(dCTM.a); + matrix.d *= FXSYS_fabs(dCTM.d); +} +void CPDF_RenderStatus::DrawObjWithBackground(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device) { + FX_RECT rect; + if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) { + return; + } + int res = 300; + if (pObj->IsImage() && + m_pDevice->GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINTER) { + res = 0; + } + CPDF_ScaledRenderBuffer buffer; + if (!buffer.Initialize(m_pContext, m_pDevice, rect, pObj, &m_Options, res)) { + return; + } + CFX_Matrix matrix = *pObj2Device; + matrix.Concat(*buffer.GetMatrix()); + GetScaledMatrix(matrix); + CPDF_Dictionary* pFormResource = NULL; + if (pObj->IsForm()) { + const CPDF_FormObject* pFormObj = pObj->AsForm(); + if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) { + pFormResource = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources"); + } + } + CPDF_RenderStatus status; + status.Initialize(m_pContext, buffer.GetDevice(), buffer.GetMatrix(), NULL, + NULL, NULL, &m_Options, m_Transparency, m_bDropObjects, + pFormResource); + status.RenderSingleObject(pObj, &matrix); + buffer.OutputToDevice(); +} +FX_BOOL CPDF_RenderStatus::ProcessForm(const CPDF_FormObject* pFormObj, + const CFX_Matrix* pObj2Device) { + CPDF_Dictionary* pOC = pFormObj->m_pForm->m_pFormDict->GetDictBy("OC"); + if (pOC && m_Options.m_pOCContext && + !m_Options.m_pOCContext->CheckOCGVisible(pOC)) { + return TRUE; + } + CFX_Matrix matrix = pFormObj->m_FormMatrix; + matrix.Concat(*pObj2Device); + CPDF_Dictionary* pResources = NULL; + if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) { + pResources = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources"); + } + CPDF_RenderStatus status; + status.Initialize(m_pContext, m_pDevice, NULL, m_pStopObj, this, pFormObj, + &m_Options, m_Transparency, m_bDropObjects, pResources, + FALSE); + status.m_curBlend = m_curBlend; + m_pDevice->SaveState(); + status.RenderObjectList(pFormObj->m_pForm, &matrix); + m_bStopped = status.m_bStopped; + m_pDevice->RestoreState(); + return TRUE; +} +FX_BOOL IsAvailableMatrix(const CFX_Matrix& matrix) { + if (matrix.a == 0 || matrix.d == 0) { + return matrix.b != 0 && matrix.c != 0; + } + if (matrix.b == 0 || matrix.c == 0) { + return matrix.a != 0 && matrix.d != 0; + } + return TRUE; +} +FX_BOOL CPDF_RenderStatus::ProcessPath(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device) { + int FillType = pPathObj->m_FillType; + FX_BOOL bStroke = pPathObj->m_bStroke; + ProcessPathPattern(pPathObj, pObj2Device, FillType, bStroke); + if (FillType == 0 && !bStroke) { + return TRUE; + } + FX_DWORD fill_argb = 0; + if (FillType) { + fill_argb = GetFillArgb(pPathObj); + } + FX_DWORD stroke_argb = 0; + if (bStroke) { + stroke_argb = GetStrokeArgb(pPathObj); + } + CFX_Matrix path_matrix = pPathObj->m_Matrix; + path_matrix.Concat(*pObj2Device); + if (!IsAvailableMatrix(path_matrix)) { + return TRUE; + } + if (FillType && (m_Options.m_Flags & RENDER_RECT_AA)) { + FillType |= FXFILL_RECT_AA; + } + if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) { + FillType |= FXFILL_FULLCOVER; + } + if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { + FillType |= FXFILL_NOPATHSMOOTH; + } + if (bStroke) { + FillType |= FX_FILL_STROKE; + } + const CPDF_GeneralStateData* pGeneralData = + ((CPDF_PageObject*)pPathObj)->m_GeneralState; + if (pGeneralData && pGeneralData->m_StrokeAdjust) { + FillType |= FX_STROKE_ADJUST; + } + if (m_pType3Char) { + FillType |= FX_FILL_TEXT_MODE; + } + CFX_GraphStateData graphState(*pPathObj->m_GraphState); + if (m_Options.m_Flags & RENDER_THINLINE) { + graphState.m_LineWidth = 0; + } + return m_pDevice->DrawPath(pPathObj->m_Path, &path_matrix, &graphState, + fill_argb, stroke_argb, FillType, 0, NULL, + m_curBlend); +} +CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { + ASSERT(pObj); + CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData(); + return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr; +} +FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, + FX_BOOL bType3) const { + CPDF_ColorStateData* pColorData = + (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; + if (m_pType3Char && !bType3 && + (!m_pType3Char->m_bColored || + (m_pType3Char->m_bColored && + (!pColorData || pColorData->m_FillColor.IsNull())))) { + return m_T3FillColor; + } + if (!pColorData || pColorData->m_FillColor.IsNull()) { + pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) + m_InitialStates.m_ColorState; + } + FX_COLORREF rgb = pColorData->m_FillRGB; + if (rgb == (FX_DWORD)-1) { + return 0; + } + const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; + int alpha; + if (pGeneralData) { + alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); + if (pGeneralData->m_pTR) { + if (!pGeneralData->m_pTransferFunc) { + ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = + GetTransferFunc(pGeneralData->m_pTR); + } + if (pGeneralData->m_pTransferFunc) { + rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); + } + } + } else { + alpha = 255; + } + return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); +} +FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { + CPDF_ColorStateData* pColorData = + (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; + if (m_pType3Char && (!m_pType3Char->m_bColored || + (m_pType3Char->m_bColored && + (!pColorData || pColorData->m_StrokeColor.IsNull())))) { + return m_T3FillColor; + } + if (!pColorData || pColorData->m_StrokeColor.IsNull()) { + pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) + m_InitialStates.m_ColorState; + } + FX_COLORREF rgb = pColorData->m_StrokeRGB; + if (rgb == (FX_DWORD)-1) { + return 0; + } + const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; + int alpha; + if (pGeneralData) { + alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); + if (pGeneralData->m_pTR) { + if (!pGeneralData->m_pTransferFunc) { + ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = + GetTransferFunc(pGeneralData->m_pTR); + } + if (pGeneralData->m_pTransferFunc) { + rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); + } + } + } else { + alpha = 255; + } + return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); +} +void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, + const CFX_Matrix* pObj2Device) { + if (ClipPath.IsNull()) { + if (!m_LastClipPath.IsNull()) { + m_pDevice->RestoreState(TRUE); + m_LastClipPath.SetNull(); + } + return; + } + if (m_LastClipPath == ClipPath) + return; + + m_LastClipPath = ClipPath; + m_pDevice->RestoreState(TRUE); + int nClipPath = ClipPath.GetPathCount(); + for (int i = 0; i < nClipPath; ++i) { + const CFX_PathData* pPathData = ClipPath.GetPath(i); + if (!pPathData) + continue; + + if (pPathData->GetPointCount() == 0) { + CFX_PathData EmptyPath; + EmptyPath.AppendRect(-1, -1, 0, 0); + int fill_mode = FXFILL_WINDING; + m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode); + } else { + int ClipType = ClipPath.GetClipType(i); + m_pDevice->SetClip_PathFill(pPathData, pObj2Device, ClipType); + } + } + int textcount = ClipPath.GetTextCount(); + if (textcount == 0) + return; + + if (m_pDevice->GetDeviceClass() == FXDC_DISPLAY && + !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) { + return; + } + + std::unique_ptr pTextClippingPath; + for (int i = 0; i < textcount; ++i) { + CPDF_TextObject* pText = ClipPath.GetText(i); + if (pText) { + if (!pTextClippingPath) + pTextClippingPath.reset(new CFX_PathData); + ProcessText(pText, pObj2Device, pTextClippingPath.get()); + continue; + } + + if (!pTextClippingPath) + continue; + + int fill_mode = FXFILL_WINDING; + if (m_Options.m_Flags & RENDER_NOTEXTSMOOTH) + fill_mode |= FXFILL_NOPATHSMOOTH; + m_pDevice->SetClip_PathFill(pTextClippingPath.get(), nullptr, fill_mode); + pTextClippingPath.reset(); + } +} + +void CPDF_RenderStatus::DrawClipPath(CPDF_ClipPath ClipPath, + const CFX_Matrix* pObj2Device) { + if (ClipPath.IsNull()) { + return; + } + int fill_mode = 0; + if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { + fill_mode |= FXFILL_NOPATHSMOOTH; + } + int nClipPath = ClipPath.GetPathCount(); + int i; + for (i = 0; i < nClipPath; i++) { + const CFX_PathData* pPathData = ClipPath.GetPath(i); + if (!pPathData) { + continue; + } + CFX_GraphStateData stroke_state; + if (m_Options.m_Flags & RENDER_THINLINE) { + stroke_state.m_LineWidth = 0; + } + m_pDevice->DrawPath(pPathData, pObj2Device, &stroke_state, 0, 0xffff0000, + fill_mode); + } +} +FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStroke) { + CFX_Matrix path_matrix = pPathObj->m_Matrix; + path_matrix.Concat(*pObj2Device); + if (bStroke) { + CFX_GraphStateData graphState(*pPathObj->m_GraphState); + if (m_Options.m_Flags & RENDER_THINLINE) { + graphState.m_LineWidth = 0; + } + return m_pDevice->SetClip_PathStroke(pPathObj->m_Path, &path_matrix, + &graphState); + } + int fill_mode = pPathObj->m_FillType; + if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { + fill_mode |= FXFILL_NOPATHSMOOTH; + } + return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode); +} +FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, + const CFX_Matrix* pObj2Device) { + const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; + int blend_type = + pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; + if (blend_type == FXDIB_BLEND_UNSUPPORTED) { + return TRUE; + } + CPDF_Dictionary* pSMaskDict = + pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : NULL; + if (pSMaskDict) { + if (pPageObj->IsImage() && + pPageObj->AsImage()->m_pImage->GetDict()->KeyExist("SMask")) { + pSMaskDict = NULL; + } + } + CPDF_Dictionary* pFormResource = NULL; + FX_FLOAT group_alpha = 1.0f; + int Transparency = m_Transparency; + FX_BOOL bGroupTransparent = FALSE; + if (pPageObj->IsForm()) { + const CPDF_FormObject* pFormObj = pPageObj->AsForm(); + const CPDF_GeneralStateData* pStateData = + pFormObj->m_GeneralState.GetObject(); + if (pStateData) { + group_alpha = pStateData->m_FillAlpha; + } + Transparency = pFormObj->m_pForm->m_Transparency; + bGroupTransparent = !!(Transparency & PDFTRANS_ISOLATED); + if (pFormObj->m_pForm->m_pFormDict) { + pFormResource = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources"); + } + } + FX_BOOL bTextClip = FALSE; + if (pPageObj->m_ClipPath.NotNull() && pPageObj->m_ClipPath.GetTextCount() && + m_pDevice->GetDeviceClass() == FXDC_DISPLAY && + !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) { + bTextClip = TRUE; + } + if ((m_Options.m_Flags & RENDER_OVERPRINT) && pPageObj->IsImage() && + pGeneralState && pGeneralState->m_FillOP && pGeneralState->m_StrokeOP) { + CPDF_Document* pDocument = NULL; + CPDF_Page* pPage = NULL; + if (m_pContext->GetPageCache()) { + pPage = m_pContext->GetPageCache()->GetPage(); + pDocument = pPage->m_pDocument; + } else { + pDocument = pPageObj->AsImage()->m_pImage->GetDocument(); + } + CPDF_Dictionary* pPageResources = pPage ? pPage->m_pPageResources : NULL; + CPDF_Object* pCSObj = + pPageObj->AsImage()->m_pImage->GetStream()->GetDict()->GetElementValue( + "ColorSpace"); + CPDF_ColorSpace* pColorSpace = + pDocument->LoadColorSpace(pCSObj, pPageResources); + if (pColorSpace) { + int format = pColorSpace->GetFamily(); + if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION || + format == PDFCS_DEVICEN) { + blend_type = FXDIB_BLEND_DARKEN; + } + pDocument->GetPageData()->ReleaseColorSpace(pCSObj); + } + } + if (!pSMaskDict && group_alpha == 1.0f && blend_type == FXDIB_BLEND_NORMAL && + !bTextClip && !bGroupTransparent) { + return FALSE; + } + FX_BOOL isolated = Transparency & PDFTRANS_ISOLATED; + if (m_bPrint) { + FX_BOOL bRet = FALSE; + int rendCaps = m_pDevice->GetRenderCaps(); + if (!((Transparency & PDFTRANS_ISOLATED) || pSMaskDict || bTextClip) && + (rendCaps & FXRC_BLEND_MODE)) { + int oldBlend = m_curBlend; + m_curBlend = blend_type; + bRet = DrawObjWithBlend(pPageObj, pObj2Device); + m_curBlend = oldBlend; + } + if (!bRet) { + DrawObjWithBackground(pPageObj, pObj2Device); + } + return TRUE; + } + FX_RECT rect = pPageObj->GetBBox(pObj2Device); + rect.Intersect(m_pDevice->GetClipBox()); + if (rect.IsEmpty()) { + return TRUE; + } + CFX_Matrix deviceCTM = m_pDevice->GetCTM(); + FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a); + FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d); + int width = FXSYS_round((FX_FLOAT)rect.Width() * scaleX); + int height = FXSYS_round((FX_FLOAT)rect.Height() * scaleY); + CFX_FxgeDevice bitmap_device; + std::unique_ptr oriDevice; + if (!isolated && (m_pDevice->GetRenderCaps() & FXRC_GET_BITS)) { + oriDevice.reset(new CFX_DIBitmap); + if (!m_pDevice->CreateCompatibleBitmap(oriDevice.get(), width, height)) + return TRUE; + + m_pDevice->GetDIBits(oriDevice.get(), rect.left, rect.top); + } + if (!bitmap_device.Create(width, height, FXDIB_Argb, 0, oriDevice.get())) + return TRUE; + + CFX_DIBitmap* bitmap = bitmap_device.GetBitmap(); + bitmap->Clear(0); + CFX_Matrix new_matrix = *pObj2Device; + new_matrix.TranslateI(-rect.left, -rect.top); + new_matrix.Scale(scaleX, scaleY); + std::unique_ptr pTextMask; + if (bTextClip) { + pTextMask.reset(new CFX_DIBitmap); + if (!pTextMask->Create(width, height, FXDIB_8bppMask)) + return TRUE; + + pTextMask->Clear(0); + CFX_FxgeDevice text_device; + text_device.Attach(pTextMask.get()); + for (FX_DWORD i = 0; i < pPageObj->m_ClipPath.GetTextCount(); i++) { + CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i); + if (!textobj) { + break; + } + CFX_Matrix text_matrix; + textobj->GetTextMatrix(&text_matrix); + CPDF_TextRenderer::DrawTextPath( + &text_device, textobj->m_nChars, textobj->m_pCharCodes, + textobj->m_pCharPos, textobj->m_TextState.GetFont(), + textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix, + textobj->m_GraphState, (FX_ARGB)-1, 0, NULL); + } + } + CPDF_RenderStatus bitmap_render; + bitmap_render.Initialize(m_pContext, &bitmap_device, NULL, m_pStopObj, NULL, + NULL, &m_Options, 0, m_bDropObjects, pFormResource, + TRUE); + bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix); + m_bStopped = bitmap_render.m_bStopped; + if (pSMaskDict) { + CFX_Matrix smask_matrix; + FXSYS_memcpy(&smask_matrix, pGeneralState->m_SMaskMatrix, + sizeof smask_matrix); + smask_matrix.Concat(*pObj2Device); + std::unique_ptr pSMaskSource( + LoadSMask(pSMaskDict, &rect, &smask_matrix)); + if (pSMaskSource) + bitmap->MultiplyAlpha(pSMaskSource.get()); + } + if (pTextMask) { + bitmap->MultiplyAlpha(pTextMask.get()); + pTextMask.reset(); + } + if (Transparency & PDFTRANS_GROUP && group_alpha != 1.0f) { + bitmap->MultiplyAlpha((int32_t)(group_alpha * 255)); + } + Transparency = m_Transparency; + if (pPageObj->IsForm()) { + Transparency |= PDFTRANS_GROUP; + } + CompositeDIBitmap(bitmap, rect.left, rect.top, 0, 255, blend_type, + Transparency); + return TRUE; +} + +CFX_DIBitmap* CPDF_RenderStatus::GetBackdrop(const CPDF_PageObject* pObj, + const FX_RECT& rect, + int& left, + int& top, + FX_BOOL bBackAlphaRequired) { + FX_RECT bbox = rect; + bbox.Intersect(m_pDevice->GetClipBox()); + left = bbox.left; + top = bbox.top; + CFX_Matrix deviceCTM = m_pDevice->GetCTM(); + FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a); + FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d); + int width = FXSYS_round(bbox.Width() * scaleX); + int height = FXSYS_round(bbox.Height() * scaleY); + std::unique_ptr pBackdrop(new CFX_DIBitmap); + if (bBackAlphaRequired && !m_bDropObjects) + pBackdrop->Create(width, height, FXDIB_Argb); + else + m_pDevice->CreateCompatibleBitmap(pBackdrop.get(), width, height); + + if (!pBackdrop->GetBuffer()) + return nullptr; + + FX_BOOL bNeedDraw; + if (pBackdrop->HasAlpha()) + bNeedDraw = !(m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT); + else + bNeedDraw = !(m_pDevice->GetRenderCaps() & FXRC_GET_BITS); + + if (!bNeedDraw) { + m_pDevice->GetDIBits(pBackdrop.get(), left, top); + return pBackdrop.release(); + } + + CFX_Matrix FinalMatrix = m_DeviceMatrix; + FinalMatrix.TranslateI(-left, -top); + FinalMatrix.Scale(scaleX, scaleY); + pBackdrop->Clear(pBackdrop->HasAlpha() ? 0 : 0xffffffff); + CFX_FxgeDevice device; + device.Attach(pBackdrop.get()); + m_pContext->Render(&device, pObj, &m_Options, &FinalMatrix); + return pBackdrop.release(); +} + +void CPDF_RenderContext::GetBackground(CFX_DIBitmap* pBuffer, + const CPDF_PageObject* pObj, + const CPDF_RenderOptions* pOptions, + CFX_Matrix* pFinalMatrix) { + CFX_FxgeDevice device; + device.Attach(pBuffer); + + FX_RECT rect(0, 0, device.GetWidth(), device.GetHeight()); + device.FillRect(&rect, 0xffffffff); + Render(&device, pObj, pOptions, pFinalMatrix); +} +CPDF_GraphicStates* CPDF_RenderStatus::CloneObjStates( + const CPDF_GraphicStates* pSrcStates, + FX_BOOL bStroke) { + if (!pSrcStates) { + return NULL; + } + CPDF_GraphicStates* pStates = new CPDF_GraphicStates; + pStates->CopyStates(*pSrcStates); + CPDF_Color* pObjColor = bStroke ? pSrcStates->m_ColorState.GetStrokeColor() + : pSrcStates->m_ColorState.GetFillColor(); + if (!pObjColor->IsNull()) { + CPDF_ColorStateData* pColorData = pStates->m_ColorState.GetModify(); + pColorData->m_FillRGB = + bStroke ? pSrcStates->m_ColorState.GetObject()->m_StrokeRGB + : pSrcStates->m_ColorState.GetObject()->m_FillRGB; + pColorData->m_StrokeRGB = pColorData->m_FillRGB; + } + return pStates; +} + +CPDF_RenderContext::CPDF_RenderContext(CPDF_Page* pPage) + : m_pDocument(pPage->m_pDocument), + m_pPageResources(pPage->m_pPageResources), + m_pPageCache(pPage->GetRenderCache()), + m_bFirstLayer(TRUE) {} + +CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc, + CPDF_PageRenderCache* pPageCache) + : m_pDocument(pDoc), + m_pPageResources(nullptr), + m_pPageCache(pPageCache), + m_bFirstLayer(TRUE) {} + +CPDF_RenderContext::~CPDF_RenderContext() {} + +void CPDF_RenderContext::AppendLayer(CPDF_PageObjectHolder* pObjectHolder, + const CFX_Matrix* pObject2Device) { + Layer* pLayer = m_Layers.AddSpace(); + pLayer->m_pObjectHolder = pObjectHolder; + if (pObject2Device) { + pLayer->m_Matrix = *pObject2Device; + } else { + pLayer->m_Matrix.SetIdentity(); + } +} +void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, + const CPDF_RenderOptions* pOptions, + const CFX_Matrix* pLastMatrix) { + Render(pDevice, NULL, pOptions, pLastMatrix); +} +void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, + const CPDF_PageObject* pStopObj, + const CPDF_RenderOptions* pOptions, + const CFX_Matrix* pLastMatrix) { + int count = m_Layers.GetSize(); + for (int j = 0; j < count; j++) { + pDevice->SaveState(); + Layer* pLayer = m_Layers.GetDataPtr(j); + if (pLastMatrix) { + CFX_Matrix FinalMatrix = pLayer->m_Matrix; + FinalMatrix.Concat(*pLastMatrix); + CPDF_RenderStatus status; + status.Initialize(this, pDevice, pLastMatrix, pStopObj, NULL, NULL, + pOptions, pLayer->m_pObjectHolder->m_Transparency, + FALSE, NULL); + status.RenderObjectList(pLayer->m_pObjectHolder, &FinalMatrix); + if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { + m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize); + } + if (status.m_bStopped) { + pDevice->RestoreState(); + break; + } + } else { + CPDF_RenderStatus status; + status.Initialize(this, pDevice, NULL, pStopObj, NULL, NULL, pOptions, + pLayer->m_pObjectHolder->m_Transparency, FALSE, NULL); + status.RenderObjectList(pLayer->m_pObjectHolder, &pLayer->m_Matrix); + if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { + m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize); + } + if (status.m_bStopped) { + pDevice->RestoreState(); + break; + } + } + pDevice->RestoreState(); + } +} + +CPDF_ProgressiveRenderer::CPDF_ProgressiveRenderer( + CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + const CPDF_RenderOptions* pOptions) + : m_Status(Ready), + m_pContext(pContext), + m_pDevice(pDevice), + m_pOptions(pOptions), + m_LayerIndex(0), + m_pCurrentLayer(nullptr) {} + +CPDF_ProgressiveRenderer::~CPDF_ProgressiveRenderer() { + if (m_pRenderStatus) + m_pDevice->RestoreState(); +} + +void CPDF_ProgressiveRenderer::Start(IFX_Pause* pPause) { + if (!m_pContext || !m_pDevice || m_Status != Ready) { + m_Status = Failed; + return; + } + m_Status = ToBeContinued; + Continue(pPause); +} + +void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) { + while (m_Status == ToBeContinued) { + if (!m_pCurrentLayer) { + if (m_LayerIndex >= m_pContext->CountLayers()) { + m_Status = Done; + return; + } + m_pCurrentLayer = m_pContext->GetLayer(m_LayerIndex); + m_LastObjectRendered = + m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end(); + m_pRenderStatus.reset(new CPDF_RenderStatus()); + m_pRenderStatus->Initialize( + m_pContext, m_pDevice, NULL, NULL, NULL, NULL, m_pOptions, + m_pCurrentLayer->m_pObjectHolder->m_Transparency, FALSE, NULL); + m_pDevice->SaveState(); + m_ClipRect = CFX_FloatRect(m_pDevice->GetClipBox()); + CFX_Matrix device2object; + device2object.SetReverse(m_pCurrentLayer->m_Matrix); + device2object.TransformRect(m_ClipRect); + } + CPDF_PageObjectList::iterator iter; + CPDF_PageObjectList::iterator iterEnd = + m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end(); + if (m_LastObjectRendered != iterEnd) { + iter = m_LastObjectRendered; + ++iter; + } else { + iter = m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->begin(); + } + int nObjsToGo = kStepLimit; + while (iter != iterEnd) { + CPDF_PageObject* pCurObj = iter->get(); + if (pCurObj && pCurObj->m_Left <= m_ClipRect.right && + pCurObj->m_Right >= m_ClipRect.left && + pCurObj->m_Bottom <= m_ClipRect.top && + pCurObj->m_Top >= m_ClipRect.bottom) { + if (m_pRenderStatus->ContinueSingleObject( + pCurObj, &m_pCurrentLayer->m_Matrix, pPause)) { + return; + } + if (pCurObj->IsImage() && + m_pRenderStatus->m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { + m_pContext->GetPageCache()->CacheOptimization( + m_pRenderStatus->m_Options.m_dwLimitCacheSize); + } + if (pCurObj->IsForm() || pCurObj->IsShading()) { + nObjsToGo = 0; + } else { + --nObjsToGo; + } + } + m_LastObjectRendered = iter; + if (nObjsToGo == 0) { + if (pPause && pPause->NeedToPauseNow()) + return; + nObjsToGo = kStepLimit; + } + ++iter; + } + if (m_pCurrentLayer->m_pObjectHolder->IsParsed()) { + m_pRenderStatus.reset(); + m_pDevice->RestoreState(); + m_pCurrentLayer = nullptr; + m_LayerIndex++; + if (pPause && pPause->NeedToPauseNow()) { + return; + } + } else { + m_pCurrentLayer->m_pObjectHolder->ContinueParse(pPause); + if (!m_pCurrentLayer->m_pObjectHolder->IsParsed()) + return; + } + } +} + +CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) { + if (!pObj) + return nullptr; + + auto it = m_TransferFuncMap.find(pObj); + if (it != m_TransferFuncMap.end()) { + CPDF_CountedObject* pTransferCounter = it->second; + return pTransferCounter->AddRef(); + } + + std::unique_ptr pFuncs[3]; + FX_BOOL bUniTransfer = TRUE; + FX_BOOL bIdentity = TRUE; + if (CPDF_Array* pArray = pObj->AsArray()) { + bUniTransfer = FALSE; + if (pArray->GetCount() < 3) + return nullptr; + + for (FX_DWORD i = 0; i < 3; ++i) { + pFuncs[2 - i].reset(CPDF_Function::Load(pArray->GetElementValue(i))); + if (!pFuncs[2 - i]) + return nullptr; + } + } else { + pFuncs[0].reset(CPDF_Function::Load(pObj)); + if (!pFuncs[0]) + return nullptr; + } + CPDF_TransferFunc* pTransfer = new CPDF_TransferFunc(m_pPDFDoc); + CPDF_CountedObject* pTransferCounter = + new CPDF_CountedObject(pTransfer); + m_TransferFuncMap[pObj] = pTransferCounter; + static const int kMaxOutputs = 16; + FX_FLOAT output[kMaxOutputs]; + FXSYS_memset(output, 0, sizeof(output)); + FX_FLOAT input; + int noutput; + for (int v = 0; v < 256; ++v) { + input = (FX_FLOAT)v / 255.0f; + if (bUniTransfer) { + if (pFuncs[0] && pFuncs[0]->CountOutputs() <= kMaxOutputs) + pFuncs[0]->Call(&input, 1, output, noutput); + int o = FXSYS_round(output[0] * 255); + if (o != v) + bIdentity = FALSE; + for (int i = 0; i < 3; ++i) { + pTransfer->m_Samples[i * 256 + v] = o; + } + } else { + for (int i = 0; i < 3; ++i) { + if (pFuncs[i] && pFuncs[i]->CountOutputs() <= kMaxOutputs) { + pFuncs[i]->Call(&input, 1, output, noutput); + int o = FXSYS_round(output[0] * 255); + if (o != v) + bIdentity = FALSE; + pTransfer->m_Samples[i * 256 + v] = o; + } else { + pTransfer->m_Samples[i * 256 + v] = v; + } + } + } + } + + pTransfer->m_bIdentity = bIdentity; + return pTransferCounter->AddRef(); +} + +void CPDF_DocRenderData::ReleaseTransferFunc(CPDF_Object* pObj) { + auto it = m_TransferFuncMap.find(pObj); + if (it != m_TransferFuncMap.end()) + it->second->RemoveRef(); +} + +CPDF_DeviceBuffer::CPDF_DeviceBuffer() + : m_pDevice(nullptr), m_pContext(nullptr), m_pObject(nullptr) {} + +CPDF_DeviceBuffer::~CPDF_DeviceBuffer() {} + +FX_BOOL CPDF_DeviceBuffer::Initialize(CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + FX_RECT* pRect, + const CPDF_PageObject* pObj, + int max_dpi) { + m_pDevice = pDevice; + m_pContext = pContext; + m_Rect = *pRect; + m_pObject = pObj; + m_Matrix.TranslateI(-pRect->left, -pRect->top); +#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ + int horz_size = pDevice->GetDeviceCaps(FXDC_HORZ_SIZE); + int vert_size = pDevice->GetDeviceCaps(FXDC_VERT_SIZE); + if (horz_size && vert_size && max_dpi) { + int dpih = + pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10); + int dpiv = + pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10); + if (dpih > max_dpi) { + m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f); + } + if (dpiv > max_dpi) { + m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv); + } + } +#endif + CFX_Matrix ctm = m_pDevice->GetCTM(); + FX_FLOAT fScaleX = FXSYS_fabs(ctm.a); + FX_FLOAT fScaleY = FXSYS_fabs(ctm.d); + m_Matrix.Concat(fScaleX, 0, 0, fScaleY, 0, 0); + CFX_FloatRect rect(*pRect); + m_Matrix.TransformRect(rect); + FX_RECT bitmap_rect = rect.GetOutterRect(); + m_pBitmap.reset(new CFX_DIBitmap); + m_pBitmap->Create(bitmap_rect.Width(), bitmap_rect.Height(), FXDIB_Argb); + return TRUE; +} +void CPDF_DeviceBuffer::OutputToDevice() { + if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) { + if (m_Matrix.a == 1.0f && m_Matrix.d == 1.0f) { + m_pDevice->SetDIBits(m_pBitmap.get(), m_Rect.left, m_Rect.top); + } else { + m_pDevice->StretchDIBits(m_pBitmap.get(), m_Rect.left, m_Rect.top, + m_Rect.Width(), m_Rect.Height()); + } + } else { + CFX_DIBitmap buffer; + m_pDevice->CreateCompatibleBitmap(&buffer, m_pBitmap->GetWidth(), + m_pBitmap->GetHeight()); + m_pContext->GetBackground(&buffer, m_pObject, NULL, &m_Matrix); + buffer.CompositeBitmap(0, 0, buffer.GetWidth(), buffer.GetHeight(), + m_pBitmap.get(), 0, 0); + m_pDevice->StretchDIBits(&buffer, m_Rect.left, m_Rect.top, m_Rect.Width(), + m_Rect.Height()); + } +} + +CPDF_ScaledRenderBuffer::CPDF_ScaledRenderBuffer() {} + +CPDF_ScaledRenderBuffer::~CPDF_ScaledRenderBuffer() {} + +#define _FPDFAPI_IMAGESIZE_LIMIT_ (30 * 1024 * 1024) +FX_BOOL CPDF_ScaledRenderBuffer::Initialize(CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + const FX_RECT& pRect, + const CPDF_PageObject* pObj, + const CPDF_RenderOptions* pOptions, + int max_dpi) { + m_pDevice = pDevice; + if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) { + return TRUE; + } + m_pContext = pContext; + m_Rect = pRect; + m_pObject = pObj; + m_Matrix.TranslateI(-pRect.left, -pRect.top); + int horz_size = pDevice->GetDeviceCaps(FXDC_HORZ_SIZE); + int vert_size = pDevice->GetDeviceCaps(FXDC_VERT_SIZE); + if (horz_size && vert_size && max_dpi) { + int dpih = + pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10); + int dpiv = + pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10); + if (dpih > max_dpi) { + m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f); + } + if (dpiv > max_dpi) { + m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv); + } + } + m_pBitmapDevice.reset(new CFX_FxgeDevice); + FXDIB_Format dibFormat = FXDIB_Rgb; + int32_t bpp = 24; + if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_ALPHA_OUTPUT) { + dibFormat = FXDIB_Argb; + bpp = 32; + } + while (1) { + CFX_FloatRect rect(pRect); + m_Matrix.TransformRect(rect); + FX_RECT bitmap_rect = rect.GetOutterRect(); + int32_t iWidth = bitmap_rect.Width(); + int32_t iHeight = bitmap_rect.Height(); + int32_t iPitch = (iWidth * bpp + 31) / 32 * 4; + if (iWidth * iHeight < 1) + return FALSE; + + if (iPitch * iHeight <= _FPDFAPI_IMAGESIZE_LIMIT_ && + m_pBitmapDevice->Create(iWidth, iHeight, dibFormat)) { + break; + } + m_Matrix.Scale(0.5f, 0.5f); + } + m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions, + &m_Matrix); + return TRUE; +} +void CPDF_ScaledRenderBuffer::OutputToDevice() { + if (m_pBitmapDevice) { + m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, + m_Rect.top, m_Rect.Width(), m_Rect.Height()); + } +} +FX_BOOL IPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) { + const CPDF_ContentMarkData* pData = pObj->m_ContentMark; + int nItems = pData->CountItems(); + for (int i = 0; i < nItems; i++) { + const CPDF_ContentMarkItem& item = pData->GetItem(i); + if (item.GetName() == "OC" && + item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict && + !CheckOCGVisible(item.GetParam())) { + return FALSE; + } + } + return TRUE; +} diff --git a/core/fpdfapi/fpdf_render/fpdf_render_cache.cpp b/core/fpdfapi/fpdf_render/fpdf_render_cache.cpp new file mode 100644 index 0000000000..f5ab7e0da5 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render_cache.cpp @@ -0,0 +1,334 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_render/render_int.h" + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "core/include/fxge/fx_ge.h" + +struct CACHEINFO { + FX_DWORD time; + CPDF_Stream* pStream; +}; + +extern "C" { +static int compare(const void* data1, const void* data2) { + return ((CACHEINFO*)data1)->time - ((CACHEINFO*)data2)->time; +} +} // extern "C" + +CPDF_PageRenderCache::~CPDF_PageRenderCache() { + for (const auto& it : m_ImageCache) + delete it.second; +} +void CPDF_PageRenderCache::CacheOptimization(int32_t dwLimitCacheSize) { + if (m_nCacheSize <= (FX_DWORD)dwLimitCacheSize) + return; + + size_t nCount = m_ImageCache.size(); + CACHEINFO* pCACHEINFO = FX_Alloc(CACHEINFO, nCount); + size_t i = 0; + for (const auto& it : m_ImageCache) { + pCACHEINFO[i].time = it.second->GetTimeCount(); + pCACHEINFO[i++].pStream = it.second->GetStream(); + } + FXSYS_qsort(pCACHEINFO, nCount, sizeof(CACHEINFO), compare); + FX_DWORD nTimeCount = m_nTimeCount; + + // Check if time value is about to roll over and reset all entries. + // The comparision is legal because FX_DWORD is an unsigned type. + if (nTimeCount + 1 < nTimeCount) { + for (i = 0; i < nCount; i++) + m_ImageCache[pCACHEINFO[i].pStream]->m_dwTimeCount = i; + m_nTimeCount = nCount; + } + + i = 0; + while (i + 15 < nCount) + ClearImageCacheEntry(pCACHEINFO[i++].pStream); + + while (i < nCount && m_nCacheSize > (FX_DWORD)dwLimitCacheSize) + ClearImageCacheEntry(pCACHEINFO[i++].pStream); + + FX_Free(pCACHEINFO); +} +void CPDF_PageRenderCache::ClearImageCacheEntry(CPDF_Stream* pStream) { + auto it = m_ImageCache.find(pStream); + if (it == m_ImageCache.end()) + return; + + m_nCacheSize -= it->second->EstimateSize(); + delete it->second; + m_ImageCache.erase(it); +} +FX_DWORD CPDF_PageRenderCache::EstimateSize() { + FX_DWORD dwSize = 0; + for (const auto& it : m_ImageCache) + dwSize += it.second->EstimateSize(); + + m_nCacheSize = dwSize; + return dwSize; +} +void CPDF_PageRenderCache::GetCachedBitmap(CPDF_Stream* pStream, + CFX_DIBSource*& pBitmap, + CFX_DIBSource*& pMask, + FX_DWORD& MatteColor, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask, + CPDF_RenderStatus* pRenderStatus, + int32_t downsampleWidth, + int32_t downsampleHeight) { + CPDF_ImageCacheEntry* pEntry; + const auto it = m_ImageCache.find(pStream); + FX_BOOL bFound = it != m_ImageCache.end(); + if (bFound) + pEntry = it->second; + else + pEntry = new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream); + + m_nTimeCount++; + FX_BOOL bAlreadyCached = pEntry->GetCachedBitmap( + pBitmap, pMask, MatteColor, m_pPage->m_pPageResources, bStdCS, + GroupFamily, bLoadMask, pRenderStatus, downsampleWidth, downsampleHeight); + + if (!bFound) + m_ImageCache[pStream] = pEntry; + + if (!bAlreadyCached) + m_nCacheSize += pEntry->EstimateSize(); +} +FX_BOOL CPDF_PageRenderCache::StartGetCachedBitmap( + CPDF_Stream* pStream, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask, + CPDF_RenderStatus* pRenderStatus, + int32_t downsampleWidth, + int32_t downsampleHeight) { + const auto it = m_ImageCache.find(pStream); + m_bCurFindCache = it != m_ImageCache.end(); + if (m_bCurFindCache) { + m_pCurImageCacheEntry = it->second; + } else { + m_pCurImageCacheEntry = + new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream); + } + int ret = m_pCurImageCacheEntry->StartGetCachedBitmap( + pRenderStatus->m_pFormResource, m_pPage->m_pPageResources, bStdCS, + GroupFamily, bLoadMask, pRenderStatus, downsampleWidth, downsampleHeight); + if (ret == 2) + return TRUE; + + m_nTimeCount++; + if (!m_bCurFindCache) + m_ImageCache[pStream] = m_pCurImageCacheEntry; + + if (!ret) + m_nCacheSize += m_pCurImageCacheEntry->EstimateSize(); + + return FALSE; +} +FX_BOOL CPDF_PageRenderCache::Continue(IFX_Pause* pPause) { + int ret = m_pCurImageCacheEntry->Continue(pPause); + if (ret == 2) + return TRUE; + m_nTimeCount++; + if (!m_bCurFindCache) + m_ImageCache[m_pCurImageCacheEntry->GetStream()] = m_pCurImageCacheEntry; + if (!ret) + m_nCacheSize += m_pCurImageCacheEntry->EstimateSize(); + return FALSE; +} +void CPDF_PageRenderCache::ResetBitmap(CPDF_Stream* pStream, + const CFX_DIBitmap* pBitmap) { + CPDF_ImageCacheEntry* pEntry; + const auto it = m_ImageCache.find(pStream); + if (it == m_ImageCache.end()) { + if (!pBitmap) + return; + pEntry = new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream); + m_ImageCache[pStream] = pEntry; + } else { + pEntry = it->second; + } + m_nCacheSize -= pEntry->EstimateSize(); + pEntry->Reset(pBitmap); + m_nCacheSize += pEntry->EstimateSize(); +} +CPDF_ImageCacheEntry::CPDF_ImageCacheEntry(CPDF_Document* pDoc, + CPDF_Stream* pStream) + : m_dwTimeCount(0), + m_pCurBitmap(NULL), + m_pCurMask(NULL), + m_MatteColor(0), + m_pRenderStatus(NULL), + m_pDocument(pDoc), + m_pStream(pStream), + m_pCachedBitmap(NULL), + m_pCachedMask(NULL), + m_dwCacheSize(0) {} +CPDF_ImageCacheEntry::~CPDF_ImageCacheEntry() { + delete m_pCachedBitmap; + delete m_pCachedMask; +} +void CPDF_ImageCacheEntry::Reset(const CFX_DIBitmap* pBitmap) { + delete m_pCachedBitmap; + m_pCachedBitmap = NULL; + if (pBitmap) { + m_pCachedBitmap = pBitmap->Clone(); + } + CalcSize(); +} +void CPDF_PageRenderCache::ClearImageData() { + for (const auto& it : m_ImageCache) + it.second->ClearImageData(); +} +void CPDF_ImageCacheEntry::ClearImageData() { + if (m_pCachedBitmap && !m_pCachedBitmap->GetBuffer()) { + ((CPDF_DIBSource*)m_pCachedBitmap)->ClearImageData(); + } +} +static FX_DWORD FPDF_ImageCache_EstimateImageSize(const CFX_DIBSource* pDIB) { + return pDIB && pDIB->GetBuffer() + ? (FX_DWORD)pDIB->GetHeight() * pDIB->GetPitch() + + (FX_DWORD)pDIB->GetPaletteSize() * 4 + : 0; +} +FX_BOOL CPDF_ImageCacheEntry::GetCachedBitmap(CFX_DIBSource*& pBitmap, + CFX_DIBSource*& pMask, + FX_DWORD& MatteColor, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask, + CPDF_RenderStatus* pRenderStatus, + int32_t downsampleWidth, + int32_t downsampleHeight) { + if (m_pCachedBitmap) { + pBitmap = m_pCachedBitmap; + pMask = m_pCachedMask; + MatteColor = m_MatteColor; + return TRUE; + } + if (!pRenderStatus) { + return FALSE; + } + CPDF_RenderContext* pContext = pRenderStatus->GetContext(); + CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache(); + m_dwTimeCount = pPageRenderCache->GetTimeCount(); + CPDF_DIBSource* pSrc = new CPDF_DIBSource; + CPDF_DIBSource* pMaskSrc = NULL; + if (!pSrc->Load(m_pDocument, m_pStream, &pMaskSrc, &MatteColor, + pRenderStatus->m_pFormResource, pPageResources, bStdCS, + GroupFamily, bLoadMask)) { + delete pSrc; + pBitmap = NULL; + return FALSE; + } + m_MatteColor = MatteColor; + if (pSrc->GetPitch() * pSrc->GetHeight() < FPDF_HUGE_IMAGE_SIZE) { + m_pCachedBitmap = pSrc->Clone(); + delete pSrc; + } else { + m_pCachedBitmap = pSrc; + } + if (pMaskSrc) { + m_pCachedMask = pMaskSrc->Clone(); + delete pMaskSrc; + } + + pBitmap = m_pCachedBitmap; + pMask = m_pCachedMask; + CalcSize(); + return FALSE; +} +CFX_DIBSource* CPDF_ImageCacheEntry::DetachBitmap() { + CFX_DIBSource* pDIBSource = m_pCurBitmap; + m_pCurBitmap = NULL; + return pDIBSource; +} +CFX_DIBSource* CPDF_ImageCacheEntry::DetachMask() { + CFX_DIBSource* pDIBSource = m_pCurMask; + m_pCurMask = NULL; + return pDIBSource; +} +int CPDF_ImageCacheEntry::StartGetCachedBitmap(CPDF_Dictionary* pFormResources, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask, + CPDF_RenderStatus* pRenderStatus, + int32_t downsampleWidth, + int32_t downsampleHeight) { + if (m_pCachedBitmap) { + m_pCurBitmap = m_pCachedBitmap; + m_pCurMask = m_pCachedMask; + return 1; + } + if (!pRenderStatus) { + return 0; + } + m_pRenderStatus = pRenderStatus; + m_pCurBitmap = new CPDF_DIBSource; + int ret = + ((CPDF_DIBSource*)m_pCurBitmap) + ->StartLoadDIBSource(m_pDocument, m_pStream, TRUE, pFormResources, + pPageResources, bStdCS, GroupFamily, bLoadMask); + if (ret == 2) { + return ret; + } + if (!ret) { + delete m_pCurBitmap; + m_pCurBitmap = NULL; + return 0; + } + ContinueGetCachedBitmap(); + return 0; +} +void CPDF_ImageCacheEntry::ContinueGetCachedBitmap() { + m_MatteColor = ((CPDF_DIBSource*)m_pCurBitmap)->GetMatteColor(); + m_pCurMask = ((CPDF_DIBSource*)m_pCurBitmap)->DetachMask(); + CPDF_RenderContext* pContext = m_pRenderStatus->GetContext(); + CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache(); + m_dwTimeCount = pPageRenderCache->GetTimeCount(); + if (m_pCurBitmap->GetPitch() * m_pCurBitmap->GetHeight() < + FPDF_HUGE_IMAGE_SIZE) { + m_pCachedBitmap = m_pCurBitmap->Clone(); + delete m_pCurBitmap; + m_pCurBitmap = NULL; + } else { + m_pCachedBitmap = m_pCurBitmap; + } + if (m_pCurMask) { + m_pCachedMask = m_pCurMask->Clone(); + delete m_pCurMask; + m_pCurMask = NULL; + } + m_pCurBitmap = m_pCachedBitmap; + m_pCurMask = m_pCachedMask; + CalcSize(); +} +int CPDF_ImageCacheEntry::Continue(IFX_Pause* pPause) { + int ret = ((CPDF_DIBSource*)m_pCurBitmap)->ContinueLoadDIBSource(pPause); + if (ret == 2) { + return ret; + } + if (!ret) { + delete m_pCurBitmap; + m_pCurBitmap = NULL; + return 0; + } + ContinueGetCachedBitmap(); + return 0; +} +void CPDF_ImageCacheEntry::CalcSize() { + m_dwCacheSize = FPDF_ImageCache_EstimateImageSize(m_pCachedBitmap) + + FPDF_ImageCache_EstimateImageSize(m_pCachedMask); +} diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp new file mode 100644 index 0000000000..6c235a0258 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp @@ -0,0 +1,998 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_render/render_int.h" + +#include +#include + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "core/include/fxge/fx_ge.h" + +FX_BOOL CPDF_RenderStatus::ProcessImage(const CPDF_ImageObject* pImageObj, + const CFX_Matrix* pObj2Device) { + CPDF_ImageRenderer render; + if (render.Start(this, pImageObj, pObj2Device, m_bStdCS, m_curBlend)) { + render.Continue(NULL); + } + return render.m_Result; +} +void CPDF_RenderStatus::CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, + int left, + int top, + FX_ARGB mask_argb, + int bitmap_alpha, + int blend_mode, + int Transparency) { + if (!pDIBitmap) { + return; + } + FX_BOOL bIsolated = Transparency & PDFTRANS_ISOLATED; + FX_BOOL bGroup = Transparency & PDFTRANS_GROUP; + if (blend_mode == FXDIB_BLEND_NORMAL) { + if (!pDIBitmap->IsAlphaMask()) { + if (bitmap_alpha < 255) { + pDIBitmap->MultiplyAlpha(bitmap_alpha); + } + if (m_pDevice->SetDIBits(pDIBitmap, left, top)) { + return; + } + } else { + FX_DWORD fill_argb = m_Options.TranslateColor(mask_argb); + if (bitmap_alpha < 255) { + ((uint8_t*)&fill_argb)[3] = + ((uint8_t*)&fill_argb)[3] * bitmap_alpha / 255; + } + if (m_pDevice->SetBitMask(pDIBitmap, left, top, fill_argb)) { + return; + } + } + } + FX_BOOL bBackAlphaRequired = blend_mode && bIsolated && !m_bDropObjects; + FX_BOOL bGetBackGround = + ((m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT)) || + (!(m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT) && + (m_pDevice->GetRenderCaps() & FXRC_GET_BITS) && !bBackAlphaRequired); + if (bGetBackGround) { + if (bIsolated || !bGroup) { + if (pDIBitmap->IsAlphaMask()) { + return; + } + m_pDevice->SetDIBits(pDIBitmap, left, top, blend_mode); + } else { + FX_RECT rect(left, top, left + pDIBitmap->GetWidth(), + top + pDIBitmap->GetHeight()); + rect.Intersect(m_pDevice->GetClipBox()); + CFX_DIBitmap* pClone = NULL; + FX_BOOL bClone = FALSE; + if (m_pDevice->GetBackDrop() && m_pDevice->GetBitmap()) { + bClone = TRUE; + pClone = m_pDevice->GetBackDrop()->Clone(&rect); + CFX_DIBitmap* pForeBitmap = m_pDevice->GetBitmap(); + pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(), + pForeBitmap, rect.left, rect.top); + left = left >= 0 ? 0 : left; + top = top >= 0 ? 0 : top; + if (!pDIBitmap->IsAlphaMask()) + pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(), + pDIBitmap, left, top, blend_mode); + else + pClone->CompositeMask(0, 0, pClone->GetWidth(), pClone->GetHeight(), + pDIBitmap, mask_argb, left, top, blend_mode); + } else { + pClone = pDIBitmap; + } + if (m_pDevice->GetBackDrop()) { + m_pDevice->SetDIBits(pClone, rect.left, rect.top); + } else { + if (pDIBitmap->IsAlphaMask()) { + return; + } + m_pDevice->SetDIBits(pDIBitmap, rect.left, rect.top, blend_mode); + } + if (bClone) { + delete pClone; + } + } + return; + } + int back_left, back_top; + FX_RECT rect(left, top, left + pDIBitmap->GetWidth(), + top + pDIBitmap->GetHeight()); + std::unique_ptr pBackdrop( + GetBackdrop(m_pCurObj, rect, back_left, back_top, + blend_mode > FXDIB_BLEND_NORMAL && bIsolated)); + if (!pBackdrop) + return; + + if (!pDIBitmap->IsAlphaMask()) { + pBackdrop->CompositeBitmap(left - back_left, top - back_top, + pDIBitmap->GetWidth(), pDIBitmap->GetHeight(), + pDIBitmap, 0, 0, blend_mode); + } else { + pBackdrop->CompositeMask(left - back_left, top - back_top, + pDIBitmap->GetWidth(), pDIBitmap->GetHeight(), + pDIBitmap, mask_argb, 0, 0, blend_mode); + } + + std::unique_ptr pBackdrop1(new CFX_DIBitmap); + pBackdrop1->Create(pBackdrop->GetWidth(), pBackdrop->GetHeight(), + FXDIB_Rgb32); + pBackdrop1->Clear((FX_DWORD)-1); + pBackdrop1->CompositeBitmap(0, 0, pBackdrop->GetWidth(), + pBackdrop->GetHeight(), pBackdrop.get(), 0, 0); + pBackdrop = std::move(pBackdrop1); + m_pDevice->SetDIBits(pBackdrop.get(), back_left, back_top); +} + +CPDF_TransferFunc::CPDF_TransferFunc(CPDF_Document* pDoc) : m_pPDFDoc(pDoc) {} + +FX_COLORREF CPDF_TransferFunc::TranslateColor(FX_COLORREF rgb) const { + return FXSYS_RGB(m_Samples[FXSYS_GetRValue(rgb)], + m_Samples[256 + FXSYS_GetGValue(rgb)], + m_Samples[512 + FXSYS_GetBValue(rgb)]); +} + +CFX_DIBSource* CPDF_TransferFunc::TranslateImage(const CFX_DIBSource* pSrc, + FX_BOOL bAutoDropSrc) { + CPDF_DIBTransferFunc* pDest = new CPDF_DIBTransferFunc(this); + pDest->LoadSrc(pSrc, bAutoDropSrc); + return pDest; +} + +CPDF_DIBTransferFunc::~CPDF_DIBTransferFunc() {} + +FXDIB_Format CPDF_DIBTransferFunc::GetDestFormat() { + if (m_pSrc->IsAlphaMask()) { + return FXDIB_8bppMask; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + return (m_pSrc->HasAlpha()) ? FXDIB_Argb : FXDIB_Rgb32; +#else + return (m_pSrc->HasAlpha()) ? FXDIB_Argb : FXDIB_Rgb; +#endif +} +CPDF_DIBTransferFunc::CPDF_DIBTransferFunc( + const CPDF_TransferFunc* pTransferFunc) { + m_RampR = pTransferFunc->m_Samples; + m_RampG = &pTransferFunc->m_Samples[256]; + m_RampB = &pTransferFunc->m_Samples[512]; +} +void CPDF_DIBTransferFunc::TranslateScanline(uint8_t* dest_buf, + const uint8_t* src_buf) const { + int i; + FX_BOOL bSkip = FALSE; + switch (m_pSrc->GetFormat()) { + case FXDIB_1bppRgb: { + int r0 = m_RampR[0], g0 = m_RampG[0], b0 = m_RampB[0]; + int r1 = m_RampR[255], g1 = m_RampG[255], b1 = m_RampB[255]; + for (i = 0; i < m_Width; i++) { + if (src_buf[i / 8] & (1 << (7 - i % 8))) { + *dest_buf++ = b1; + *dest_buf++ = g1; + *dest_buf++ = r1; + } else { + *dest_buf++ = b0; + *dest_buf++ = g0; + *dest_buf++ = r0; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + dest_buf++; +#endif + } + break; + } + case FXDIB_1bppMask: { + int m0 = m_RampR[0], m1 = m_RampR[255]; + for (i = 0; i < m_Width; i++) { + if (src_buf[i / 8] & (1 << (7 - i % 8))) { + *dest_buf++ = m1; + } else { + *dest_buf++ = m0; + } + } + break; + } + case FXDIB_8bppRgb: { + FX_ARGB* pPal = m_pSrc->GetPalette(); + for (i = 0; i < m_Width; i++) { + if (pPal) { + FX_ARGB src_argb = pPal[*src_buf]; + *dest_buf++ = m_RampB[FXARGB_R(src_argb)]; + *dest_buf++ = m_RampG[FXARGB_G(src_argb)]; + *dest_buf++ = m_RampR[FXARGB_B(src_argb)]; + } else { + FX_DWORD src_byte = *src_buf; + *dest_buf++ = m_RampB[src_byte]; + *dest_buf++ = m_RampG[src_byte]; + *dest_buf++ = m_RampR[src_byte]; + } + src_buf++; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + dest_buf++; +#endif + } + break; + } + case FXDIB_8bppMask: + for (i = 0; i < m_Width; i++) { + *dest_buf++ = m_RampR[*(src_buf++)]; + } + break; + case FXDIB_Rgb: + for (i = 0; i < m_Width; i++) { + *dest_buf++ = m_RampB[*(src_buf++)]; + *dest_buf++ = m_RampG[*(src_buf++)]; + *dest_buf++ = m_RampR[*(src_buf++)]; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + dest_buf++; +#endif + } + break; + case FXDIB_Rgb32: + bSkip = TRUE; + case FXDIB_Argb: + for (i = 0; i < m_Width; i++) { + *dest_buf++ = m_RampB[*(src_buf++)]; + *dest_buf++ = m_RampG[*(src_buf++)]; + *dest_buf++ = m_RampR[*(src_buf++)]; + if (!bSkip) { + *dest_buf++ = *src_buf; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + } else { + dest_buf++; +#endif + } + src_buf++; + } + break; + default: + break; + } +} +void CPDF_DIBTransferFunc::TranslateDownSamples(uint8_t* dest_buf, + const uint8_t* src_buf, + int pixels, + int Bpp) const { + if (Bpp == 8) { + for (int i = 0; i < pixels; i++) { + *dest_buf++ = m_RampR[*(src_buf++)]; + } + } else if (Bpp == 24) { + for (int i = 0; i < pixels; i++) { + *dest_buf++ = m_RampB[*(src_buf++)]; + *dest_buf++ = m_RampG[*(src_buf++)]; + *dest_buf++ = m_RampR[*(src_buf++)]; + } + } else { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (!m_pSrc->HasAlpha()) { + for (int i = 0; i < pixels; i++) { + *dest_buf++ = m_RampB[*(src_buf++)]; + *dest_buf++ = m_RampG[*(src_buf++)]; + *dest_buf++ = m_RampR[*(src_buf++)]; + dest_buf++; + src_buf++; + } + } else { +#endif + for (int i = 0; i < pixels; i++) { + *dest_buf++ = m_RampB[*(src_buf++)]; + *dest_buf++ = m_RampG[*(src_buf++)]; + *dest_buf++ = m_RampR[*(src_buf++)]; + *dest_buf++ = *(src_buf++); + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + } +#endif + } +} +CPDF_ImageRenderer::CPDF_ImageRenderer() { + m_pRenderStatus = NULL; + m_pImageObject = NULL; + m_Result = TRUE; + m_Status = 0; + m_pTransformer = NULL; + m_DeviceHandle = NULL; + m_LoadHandle = NULL; + m_pClone = NULL; + m_bStdCS = FALSE; + m_bPatternColor = FALSE; + m_BlendType = FXDIB_BLEND_NORMAL; + m_pPattern = NULL; + m_pObj2Device = NULL; +} +CPDF_ImageRenderer::~CPDF_ImageRenderer() { + delete m_pTransformer; + if (m_DeviceHandle) { + m_pRenderStatus->m_pDevice->CancelDIBits(m_DeviceHandle); + } + delete m_LoadHandle; + delete m_pClone; +} +FX_BOOL CPDF_ImageRenderer::StartLoadDIBSource() { + CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect(); + FX_RECT image_rect = image_rect_f.GetOutterRect(); + int dest_width = image_rect.Width(); + int dest_height = image_rect.Height(); + if (m_ImageMatrix.a < 0) { + dest_width = -dest_width; + } + if (m_ImageMatrix.d > 0) { + dest_height = -dest_height; + } + if (m_Loader.Start(m_pImageObject, + m_pRenderStatus->m_pContext->GetPageCache(), m_LoadHandle, + m_bStdCS, m_pRenderStatus->m_GroupFamily, + m_pRenderStatus->m_bLoadMask, m_pRenderStatus, dest_width, + dest_height)) { + if (m_LoadHandle) { + m_Status = 4; + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_ImageRenderer::StartRenderDIBSource() { + if (!m_Loader.m_pBitmap) { + return FALSE; + } + m_BitmapAlpha = 255; + const CPDF_GeneralStateData* pGeneralState = m_pImageObject->m_GeneralState; + if (pGeneralState) { + m_BitmapAlpha = FXSYS_round(pGeneralState->m_FillAlpha * 255); + } + m_pDIBSource = m_Loader.m_pBitmap; + if (m_pRenderStatus->m_Options.m_ColorMode == RENDER_COLOR_ALPHA && + !m_Loader.m_pMask) { + return StartBitmapAlpha(); + } + if (pGeneralState && pGeneralState->m_pTR) { + if (!pGeneralState->m_pTransferFunc) { + ((CPDF_GeneralStateData*)pGeneralState)->m_pTransferFunc = + m_pRenderStatus->GetTransferFunc(pGeneralState->m_pTR); + } + if (pGeneralState->m_pTransferFunc && + !pGeneralState->m_pTransferFunc->m_bIdentity) { + m_pDIBSource = m_Loader.m_pBitmap = + pGeneralState->m_pTransferFunc->TranslateImage(m_Loader.m_pBitmap, + !m_Loader.m_bCached); + if (m_Loader.m_bCached && m_Loader.m_pMask) { + m_Loader.m_pMask = m_Loader.m_pMask->Clone(); + } + m_Loader.m_bCached = FALSE; + } + } + m_FillArgb = 0; + m_bPatternColor = FALSE; + m_pPattern = NULL; + if (m_pDIBSource->IsAlphaMask()) { + CPDF_Color* pColor = m_pImageObject->m_ColorState.GetFillColor(); + if (pColor && pColor->IsPattern()) { + m_pPattern = pColor->GetPattern(); + if (m_pPattern) { + m_bPatternColor = TRUE; + } + } + m_FillArgb = m_pRenderStatus->GetFillArgb(m_pImageObject); + } else if (m_pRenderStatus->m_Options.m_ColorMode == RENDER_COLOR_GRAY) { + m_pClone = m_pDIBSource->Clone(); + m_pClone->ConvertColorScale(m_pRenderStatus->m_Options.m_BackColor, + m_pRenderStatus->m_Options.m_ForeColor); + m_pDIBSource = m_pClone; + } + m_Flags = 0; + if (m_pRenderStatus->m_Options.m_Flags & RENDER_FORCE_DOWNSAMPLE) { + m_Flags |= RENDER_FORCE_DOWNSAMPLE; + } else if (m_pRenderStatus->m_Options.m_Flags & RENDER_FORCE_HALFTONE) { + m_Flags |= RENDER_FORCE_HALFTONE; + } + if (m_pRenderStatus->m_pDevice->GetDeviceClass() != FXDC_DISPLAY) { + CPDF_Object* pFilters = + m_pImageObject->m_pImage->GetStream()->GetDict()->GetElementValue( + "Filter"); + if (pFilters) { + if (pFilters->IsName()) { + CFX_ByteStringC bsDecodeType = pFilters->GetConstString(); + if (bsDecodeType == "DCTDecode" || bsDecodeType == "JPXDecode") { + m_Flags |= FXRENDER_IMAGE_LOSSY; + } + } else if (CPDF_Array* pArray = pFilters->AsArray()) { + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + CFX_ByteStringC bsDecodeType = pArray->GetConstStringAt(i); + if (bsDecodeType == "DCTDecode" || bsDecodeType == "JPXDecode") { + m_Flags |= FXRENDER_IMAGE_LOSSY; + break; + } + } + } + } + } + if (m_pRenderStatus->m_Options.m_Flags & RENDER_NOIMAGESMOOTH) { + m_Flags |= FXDIB_NOSMOOTH; + } else if (m_pImageObject->m_pImage->IsInterpol()) { + m_Flags |= FXDIB_INTERPOL; + } + if (m_Loader.m_pMask) { + return DrawMaskedImage(); + } + if (m_bPatternColor) { + return DrawPatternImage(m_pObj2Device); + } + if (m_BitmapAlpha == 255 && pGeneralState && pGeneralState->m_FillOP && + pGeneralState->m_OPMode == 0 && + pGeneralState->m_BlendType == FXDIB_BLEND_NORMAL && + pGeneralState->m_StrokeAlpha == 1 && pGeneralState->m_FillAlpha == 1) { + CPDF_Document* pDocument = NULL; + CPDF_Page* pPage = NULL; + if (m_pRenderStatus->m_pContext->GetPageCache()) { + pPage = m_pRenderStatus->m_pContext->GetPageCache()->GetPage(); + pDocument = pPage->m_pDocument; + } else { + pDocument = m_pImageObject->m_pImage->GetDocument(); + } + CPDF_Dictionary* pPageResources = pPage ? pPage->m_pPageResources : NULL; + CPDF_Object* pCSObj = + m_pImageObject->m_pImage->GetStream()->GetDict()->GetElementValue( + "ColorSpace"); + CPDF_ColorSpace* pColorSpace = + pDocument->LoadColorSpace(pCSObj, pPageResources); + if (pColorSpace) { + int format = pColorSpace->GetFamily(); + if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION || + format == PDFCS_DEVICEN) { + m_BlendType = FXDIB_BLEND_DARKEN; + } + pDocument->GetPageData()->ReleaseColorSpace(pCSObj); + } + } + return StartDIBSource(); +} +FX_BOOL CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus, + const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStdCS, + int blendType) { + m_pRenderStatus = pStatus; + m_bStdCS = bStdCS; + m_pImageObject = pObj->AsImage(); + m_BlendType = blendType; + m_pObj2Device = pObj2Device; + CPDF_Dictionary* pOC = m_pImageObject->m_pImage->GetOC(); + if (pOC && m_pRenderStatus->m_Options.m_pOCContext && + !m_pRenderStatus->m_Options.m_pOCContext->CheckOCGVisible(pOC)) { + return FALSE; + } + m_ImageMatrix = m_pImageObject->m_Matrix; + m_ImageMatrix.Concat(*pObj2Device); + if (StartLoadDIBSource()) { + return TRUE; + } + return StartRenderDIBSource(); +} +FX_BOOL CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus, + const CFX_DIBSource* pDIBSource, + FX_ARGB bitmap_argb, + int bitmap_alpha, + const CFX_Matrix* pImage2Device, + FX_DWORD flags, + FX_BOOL bStdCS, + int blendType) { + m_pRenderStatus = pStatus; + m_pDIBSource = pDIBSource; + m_FillArgb = bitmap_argb; + m_BitmapAlpha = bitmap_alpha; + m_ImageMatrix = *pImage2Device; + m_Flags = flags; + m_bStdCS = bStdCS; + m_BlendType = blendType; + return StartDIBSource(); +} +FX_BOOL CPDF_ImageRenderer::DrawPatternImage(const CFX_Matrix* pObj2Device) { + if (m_pRenderStatus->m_bPrint && + !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { + m_Result = FALSE; + return FALSE; + } + FX_RECT rect = m_ImageMatrix.GetUnitRect().GetOutterRect(); + rect.Intersect(m_pRenderStatus->m_pDevice->GetClipBox()); + if (rect.IsEmpty()) { + return FALSE; + } + CFX_Matrix new_matrix = m_ImageMatrix; + new_matrix.TranslateI(-rect.left, -rect.top); + int width = rect.Width(); + int height = rect.Height(); + CFX_FxgeDevice bitmap_device1; + if (!bitmap_device1.Create(rect.Width(), rect.Height(), FXDIB_Rgb32)) { + return TRUE; + } + bitmap_device1.GetBitmap()->Clear(0xffffff); + { + CPDF_RenderStatus bitmap_render; + bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, NULL, + NULL, NULL, NULL, &m_pRenderStatus->m_Options, 0, + m_pRenderStatus->m_bDropObjects, NULL, TRUE); + CFX_Matrix patternDevice = *pObj2Device; + patternDevice.Translate((FX_FLOAT)-rect.left, (FX_FLOAT)-rect.top); + if (m_pPattern->m_PatternType == CPDF_Pattern::TILING) { + bitmap_render.DrawTilingPattern( + static_cast(m_pPattern), m_pImageObject, + &patternDevice, FALSE); + } else { + bitmap_render.DrawShadingPattern( + static_cast(m_pPattern), m_pImageObject, + &patternDevice, FALSE); + } + } + { + CFX_FxgeDevice bitmap_device2; + if (!bitmap_device2.Create(rect.Width(), rect.Height(), FXDIB_8bppRgb)) { + return TRUE; + } + bitmap_device2.GetBitmap()->Clear(0); + CPDF_RenderStatus bitmap_render; + bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, NULL, + NULL, NULL, NULL, NULL, 0, + m_pRenderStatus->m_bDropObjects, NULL, TRUE); + CPDF_ImageRenderer image_render; + if (image_render.Start(&bitmap_render, m_pDIBSource, 0xffffffff, 255, + &new_matrix, m_Flags, TRUE)) { + image_render.Continue(NULL); + } + if (m_Loader.m_MatteColor != 0xffffffff) { + int matte_r = FXARGB_R(m_Loader.m_MatteColor); + int matte_g = FXARGB_G(m_Loader.m_MatteColor); + int matte_b = FXARGB_B(m_Loader.m_MatteColor); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = + (uint8_t*)bitmap_device1.GetBitmap()->GetScanline(row); + const uint8_t* mask_scan = bitmap_device2.GetBitmap()->GetScanline(row); + for (int col = 0; col < width; col++) { + int alpha = *mask_scan++; + if (alpha) { + int orig = (*dest_scan - matte_b) * 255 / alpha + matte_b; + if (orig < 0) { + orig = 0; + } else if (orig > 255) { + orig = 255; + } + *dest_scan++ = orig; + orig = (*dest_scan - matte_g) * 255 / alpha + matte_g; + if (orig < 0) { + orig = 0; + } else if (orig > 255) { + orig = 255; + } + *dest_scan++ = orig; + orig = (*dest_scan - matte_r) * 255 / alpha + matte_r; + if (orig < 0) { + orig = 0; + } else if (orig > 255) { + orig = 255; + } + *dest_scan++ = orig; + dest_scan++; + } else { + dest_scan += 4; + } + } + } + } + bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask); + bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap()); + bitmap_device1.GetBitmap()->MultiplyAlpha(255); + } + m_pRenderStatus->m_pDevice->SetDIBits(bitmap_device1.GetBitmap(), rect.left, + rect.top, m_BlendType); + return FALSE; +} +FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() { + if (m_pRenderStatus->m_bPrint && + !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { + m_Result = FALSE; + return FALSE; + } + FX_RECT rect = m_ImageMatrix.GetUnitRect().GetOutterRect(); + rect.Intersect(m_pRenderStatus->m_pDevice->GetClipBox()); + if (rect.IsEmpty()) { + return FALSE; + } + CFX_Matrix new_matrix = m_ImageMatrix; + new_matrix.TranslateI(-rect.left, -rect.top); + int width = rect.Width(); + int height = rect.Height(); + CFX_FxgeDevice bitmap_device1; + if (!bitmap_device1.Create(width, height, FXDIB_Rgb32)) { + return TRUE; + } + bitmap_device1.GetBitmap()->Clear(0xffffff); + { + CPDF_RenderStatus bitmap_render; + bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, NULL, + NULL, NULL, NULL, NULL, 0, + m_pRenderStatus->m_bDropObjects, NULL, TRUE); + CPDF_ImageRenderer image_render; + if (image_render.Start(&bitmap_render, m_pDIBSource, 0, 255, &new_matrix, + m_Flags, TRUE)) { + image_render.Continue(NULL); + } + } + { + CFX_FxgeDevice bitmap_device2; + if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb)) { + return TRUE; + } + bitmap_device2.GetBitmap()->Clear(0); + CPDF_RenderStatus bitmap_render; + bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, NULL, + NULL, NULL, NULL, NULL, 0, + m_pRenderStatus->m_bDropObjects, NULL, TRUE); + CPDF_ImageRenderer image_render; + if (image_render.Start(&bitmap_render, m_Loader.m_pMask, 0xffffffff, 255, + &new_matrix, m_Flags, TRUE)) { + image_render.Continue(NULL); + } + if (m_Loader.m_MatteColor != 0xffffffff) { + int matte_r = FXARGB_R(m_Loader.m_MatteColor); + int matte_g = FXARGB_G(m_Loader.m_MatteColor); + int matte_b = FXARGB_B(m_Loader.m_MatteColor); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = + (uint8_t*)bitmap_device1.GetBitmap()->GetScanline(row); + const uint8_t* mask_scan = bitmap_device2.GetBitmap()->GetScanline(row); + for (int col = 0; col < width; col++) { + int alpha = *mask_scan++; + if (alpha) { + int orig = (*dest_scan - matte_b) * 255 / alpha + matte_b; + if (orig < 0) { + orig = 0; + } else if (orig > 255) { + orig = 255; + } + *dest_scan++ = orig; + orig = (*dest_scan - matte_g) * 255 / alpha + matte_g; + if (orig < 0) { + orig = 0; + } else if (orig > 255) { + orig = 255; + } + *dest_scan++ = orig; + orig = (*dest_scan - matte_r) * 255 / alpha + matte_r; + if (orig < 0) { + orig = 0; + } else if (orig > 255) { + orig = 255; + } + *dest_scan++ = orig; + dest_scan++; + } else { + dest_scan += 4; + } + } + } + } + bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask); + bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap()); + if (m_BitmapAlpha < 255) { + bitmap_device1.GetBitmap()->MultiplyAlpha(m_BitmapAlpha); + } + } + m_pRenderStatus->m_pDevice->SetDIBits(bitmap_device1.GetBitmap(), rect.left, + rect.top, m_BlendType); + return FALSE; +} +FX_BOOL CPDF_ImageRenderer::StartDIBSource() { + if (!(m_Flags & RENDER_FORCE_DOWNSAMPLE) && m_pDIBSource->GetBPP() > 1) { + int image_size = m_pDIBSource->GetBPP() / 8 * m_pDIBSource->GetWidth() * + m_pDIBSource->GetHeight(); + if (image_size > FPDF_HUGE_IMAGE_SIZE && + !(m_Flags & RENDER_FORCE_HALFTONE)) { + m_Flags |= RENDER_FORCE_DOWNSAMPLE; + } + } + if (m_pRenderStatus->m_pDevice->StartDIBits( + m_pDIBSource, m_BitmapAlpha, m_FillArgb, &m_ImageMatrix, m_Flags, + m_DeviceHandle, 0, NULL, m_BlendType)) { + if (m_DeviceHandle) { + m_Status = 3; + return TRUE; + } + return FALSE; + } + CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect(); + FX_RECT image_rect = image_rect_f.GetOutterRect(); + int dest_width = image_rect.Width(); + int dest_height = image_rect.Height(); + if ((FXSYS_fabs(m_ImageMatrix.b) >= 0.5f || m_ImageMatrix.a == 0) || + (FXSYS_fabs(m_ImageMatrix.c) >= 0.5f || m_ImageMatrix.d == 0)) { + if (m_pRenderStatus->m_bPrint && + !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { + m_Result = FALSE; + return FALSE; + } + FX_RECT clip_box = m_pRenderStatus->m_pDevice->GetClipBox(); + clip_box.Intersect(image_rect); + m_Status = 2; + m_pTransformer = new CFX_ImageTransformer; + m_pTransformer->Start(m_pDIBSource, &m_ImageMatrix, m_Flags, &clip_box); + return TRUE; + } + if (m_ImageMatrix.a < 0) { + dest_width = -dest_width; + } + if (m_ImageMatrix.d > 0) { + dest_height = -dest_height; + } + int dest_left, dest_top; + dest_left = dest_width > 0 ? image_rect.left : image_rect.right; + dest_top = dest_height > 0 ? image_rect.top : image_rect.bottom; + if (m_pDIBSource->IsOpaqueImage() && m_BitmapAlpha == 255) { + if (m_pRenderStatus->m_pDevice->StretchDIBits( + m_pDIBSource, dest_left, dest_top, dest_width, dest_height, m_Flags, + NULL, m_BlendType)) { + return FALSE; + } + } + if (m_pDIBSource->IsAlphaMask()) { + if (m_BitmapAlpha != 255) { + m_FillArgb = FXARGB_MUL_ALPHA(m_FillArgb, m_BitmapAlpha); + } + if (m_pRenderStatus->m_pDevice->StretchBitMask( + m_pDIBSource, dest_left, dest_top, dest_width, dest_height, + m_FillArgb, m_Flags)) { + return FALSE; + } + } + if (m_pRenderStatus->m_bPrint && + !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { + m_Result = FALSE; + return TRUE; + } + FX_RECT clip_box = m_pRenderStatus->m_pDevice->GetClipBox(); + FX_RECT dest_rect = clip_box; + dest_rect.Intersect(image_rect); + FX_RECT dest_clip( + dest_rect.left - image_rect.left, dest_rect.top - image_rect.top, + dest_rect.right - image_rect.left, dest_rect.bottom - image_rect.top); + std::unique_ptr pStretched( + m_pDIBSource->StretchTo(dest_width, dest_height, m_Flags, &dest_clip)); + if (pStretched) { + m_pRenderStatus->CompositeDIBitmap(pStretched.get(), dest_rect.left, + dest_rect.top, m_FillArgb, m_BitmapAlpha, + m_BlendType, FALSE); + } + return FALSE; +} +FX_BOOL CPDF_ImageRenderer::StartBitmapAlpha() { + if (m_pDIBSource->IsOpaqueImage()) { + CFX_PathData path; + path.AppendRect(0, 0, 1, 1); + path.Transform(&m_ImageMatrix); + FX_DWORD fill_color = + ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha); + m_pRenderStatus->m_pDevice->DrawPath(&path, NULL, NULL, fill_color, 0, + FXFILL_WINDING); + } else { + const CFX_DIBSource* pAlphaMask = m_pDIBSource->IsAlphaMask() + ? m_pDIBSource + : m_pDIBSource->GetAlphaMask(); + if (FXSYS_fabs(m_ImageMatrix.b) >= 0.5f || + FXSYS_fabs(m_ImageMatrix.c) >= 0.5f) { + int left, top; + std::unique_ptr pTransformed( + pAlphaMask->TransformTo(&m_ImageMatrix, left, top)); + if (!pTransformed) + return TRUE; + + m_pRenderStatus->m_pDevice->SetBitMask( + pTransformed.get(), left, top, + ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha)); + } else { + CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect(); + FX_RECT image_rect = image_rect_f.GetOutterRect(); + int dest_width = + m_ImageMatrix.a > 0 ? image_rect.Width() : -image_rect.Width(); + int dest_height = + m_ImageMatrix.d > 0 ? -image_rect.Height() : image_rect.Height(); + int left = dest_width > 0 ? image_rect.left : image_rect.right; + int top = dest_height > 0 ? image_rect.top : image_rect.bottom; + m_pRenderStatus->m_pDevice->StretchBitMask( + pAlphaMask, left, top, dest_width, dest_height, + ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha)); + } + if (m_pDIBSource != pAlphaMask) { + delete pAlphaMask; + } + } + return FALSE; +} +FX_BOOL CPDF_ImageRenderer::Continue(IFX_Pause* pPause) { + if (m_Status == 2) { + if (m_pTransformer->Continue(pPause)) { + return TRUE; + } + CFX_DIBitmap* pBitmap = m_pTransformer->m_Storer.Detach(); + if (!pBitmap) { + return FALSE; + } + if (pBitmap->IsAlphaMask()) { + if (m_BitmapAlpha != 255) { + m_FillArgb = FXARGB_MUL_ALPHA(m_FillArgb, m_BitmapAlpha); + } + m_Result = m_pRenderStatus->m_pDevice->SetBitMask( + pBitmap, m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop, + m_FillArgb); + } else { + if (m_BitmapAlpha != 255) { + pBitmap->MultiplyAlpha(m_BitmapAlpha); + } + m_Result = m_pRenderStatus->m_pDevice->SetDIBits( + pBitmap, m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop, + m_BlendType); + } + delete pBitmap; + return FALSE; + } + if (m_Status == 3) { + return m_pRenderStatus->m_pDevice->ContinueDIBits(m_DeviceHandle, pPause); + } + if (m_Status == 4) { + if (m_Loader.Continue(m_LoadHandle, pPause)) { + return TRUE; + } + if (StartRenderDIBSource()) { + return Continue(pPause); + } + } + return FALSE; +} +ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc, + const CPDF_Dictionary* pParams); +CFX_DIBitmap* CPDF_RenderStatus::LoadSMask(CPDF_Dictionary* pSMaskDict, + FX_RECT* pClipRect, + const CFX_Matrix* pMatrix) { + if (!pSMaskDict) { + return NULL; + } + int width = pClipRect->right - pClipRect->left; + int height = pClipRect->bottom - pClipRect->top; + FX_BOOL bLuminosity = FALSE; + bLuminosity = pSMaskDict->GetConstStringBy("S") != "Alpha"; + CPDF_Stream* pGroup = pSMaskDict->GetStreamBy("G"); + if (!pGroup) { + return NULL; + } + std::unique_ptr pFunc; + CPDF_Object* pFuncObj = pSMaskDict->GetElementValue("TR"); + if (pFuncObj && (pFuncObj->IsDictionary() || pFuncObj->IsStream())) + pFunc.reset(CPDF_Function::Load(pFuncObj)); + + CFX_Matrix matrix = *pMatrix; + matrix.TranslateI(-pClipRect->left, -pClipRect->top); + CPDF_Form form(m_pContext->GetDocument(), m_pContext->GetPageResources(), + pGroup); + form.ParseContent(NULL, NULL, NULL, NULL); + CFX_FxgeDevice bitmap_device; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (!bitmap_device.Create(width, height, + bLuminosity ? FXDIB_Rgb32 : FXDIB_8bppMask)) { + return NULL; + } +#else + if (!bitmap_device.Create(width, height, + bLuminosity ? FXDIB_Rgb : FXDIB_8bppMask)) { + return NULL; + } +#endif + CFX_DIBitmap& bitmap = *bitmap_device.GetBitmap(); + CPDF_Object* pCSObj = NULL; + CPDF_ColorSpace* pCS = NULL; + if (bLuminosity) { + CPDF_Array* pBC = pSMaskDict->GetArrayBy("BC"); + FX_ARGB back_color = 0xff000000; + if (pBC) { + CPDF_Dictionary* pDict = pGroup->GetDict(); + if (pDict && pDict->GetDictBy("Group")) + pCSObj = pDict->GetDictBy("Group")->GetElementValue("CS"); + else + pCSObj = NULL; + pCS = m_pContext->GetDocument()->LoadColorSpace(pCSObj); + if (pCS) { + FX_FLOAT R, G, B; + FX_DWORD comps = 8; + if (pCS->CountComponents() > comps) { + comps = pCS->CountComponents(); + } + CFX_FixedBufGrow float_array(comps); + FX_FLOAT* pFloats = float_array; + FX_SAFE_DWORD num_floats = comps; + num_floats *= sizeof(FX_FLOAT); + if (!num_floats.IsValid()) { + return NULL; + } + FXSYS_memset(pFloats, 0, num_floats.ValueOrDie()); + int count = pBC->GetCount() > 8 ? 8 : pBC->GetCount(); + for (int i = 0; i < count; i++) { + pFloats[i] = pBC->GetNumberAt(i); + } + pCS->GetRGB(pFloats, R, G, B); + back_color = 0xff000000 | ((int32_t)(R * 255) << 16) | + ((int32_t)(G * 255) << 8) | (int32_t)(B * 255); + m_pContext->GetDocument()->GetPageData()->ReleaseColorSpace(pCSObj); + } + } + bitmap.Clear(back_color); + } else { + bitmap.Clear(0); + } + CPDF_Dictionary* pFormResource = NULL; + if (form.m_pFormDict) { + pFormResource = form.m_pFormDict->GetDictBy("Resources"); + } + CPDF_RenderOptions options; + options.m_ColorMode = bLuminosity ? RENDER_COLOR_NORMAL : RENDER_COLOR_ALPHA; + CPDF_RenderStatus status; + status.Initialize(m_pContext, &bitmap_device, NULL, NULL, NULL, NULL, + &options, 0, m_bDropObjects, pFormResource, TRUE, NULL, 0, + pCS ? pCS->GetFamily() : 0, bLuminosity); + status.RenderObjectList(&form, &matrix); + std::unique_ptr pMask(new CFX_DIBitmap); + if (!pMask->Create(width, height, FXDIB_8bppMask)) + return nullptr; + + uint8_t* dest_buf = pMask->GetBuffer(); + int dest_pitch = pMask->GetPitch(); + uint8_t* src_buf = bitmap.GetBuffer(); + int src_pitch = bitmap.GetPitch(); + std::vector transfers(256); + if (pFunc) { + CFX_FixedBufGrow results(pFunc->CountOutputs()); + for (int i = 0; i < 256; i++) { + FX_FLOAT input = (FX_FLOAT)i / 255.0f; + int nresult; + pFunc->Call(&input, 1, results, nresult); + transfers[i] = FXSYS_round(results[0] * 255); + } + } else { + for (int i = 0; i < 256; i++) { + transfers[i] = i; + } + } + if (bLuminosity) { + int Bpp = bitmap.GetBPP() / 8; + for (int row = 0; row < height; row++) { + uint8_t* dest_pos = dest_buf + row * dest_pitch; + uint8_t* src_pos = src_buf + row * src_pitch; + for (int col = 0; col < width; col++) { + *dest_pos++ = transfers[FXRGB2GRAY(src_pos[2], src_pos[1], *src_pos)]; + src_pos += Bpp; + } + } + } else if (pFunc) { + int size = dest_pitch * height; + for (int i = 0; i < size; i++) { + dest_buf[i] = transfers[src_buf[i]]; + } + } else { + FXSYS_memcpy(dest_buf, src_buf, dest_pitch * height); + } + return pMask.release(); +} diff --git a/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp b/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp new file mode 100644 index 0000000000..f1a06c4fc7 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp @@ -0,0 +1,1654 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_render/render_int.h" + +#include +#include +#include + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "core/include/fxge/fx_ge.h" + +namespace { + +unsigned int GetBits8(const uint8_t* pData, uint64_t bitpos, size_t nbits) { + ASSERT(nbits == 1 || nbits == 2 || nbits == 4 || nbits == 8 || nbits == 16); + ASSERT((bitpos & (nbits - 1)) == 0); + unsigned int byte = pData[bitpos / 8]; + if (nbits == 8) { + return byte; + } else if (nbits == 16) { + return byte * 256 + pData[bitpos / 8 + 1]; + } + + return (byte >> (8 - nbits - (bitpos % 8))) & ((1 << nbits) - 1); +} + +FX_SAFE_DWORD CalculatePitch8(FX_DWORD bpc, FX_DWORD components, int width) { + FX_SAFE_DWORD pitch = bpc; + pitch *= components; + pitch *= width; + pitch += 7; + pitch /= 8; + return pitch; +} + +FX_SAFE_DWORD CalculatePitch32(int bpp, int width) { + FX_SAFE_DWORD pitch = bpp; + pitch *= width; + pitch += 31; + pitch /= 32; // quantized to number of 32-bit words. + pitch *= 4; // and then back to bytes, (not just /8 in one step). + return pitch; +} + +bool IsAllowedBPCValue(int bpc) { + return bpc == 1 || bpc == 2 || bpc == 4 || bpc == 8 || bpc == 16; +} + +template +T ClampValue(T value, T max_value) { + value = std::min(value, max_value); + value = std::max(0, value); + return value; +} + +// Wrapper class to use with std::unique_ptr for CJPX_Decoder. +class JpxBitMapContext { + public: + explicit JpxBitMapContext(ICodec_JpxModule* jpx_module) + : jpx_module_(jpx_module), decoder_(nullptr) {} + + ~JpxBitMapContext() { jpx_module_->DestroyDecoder(decoder_); } + + // Takes ownership of |decoder|. + void set_decoder(CJPX_Decoder* decoder) { decoder_ = decoder; } + + CJPX_Decoder* decoder() { return decoder_; } + + private: + ICodec_JpxModule* const jpx_module_; // Weak pointer. + CJPX_Decoder* decoder_; // Decoder, owned. + + // Disallow evil constructors + JpxBitMapContext(const JpxBitMapContext&); + void operator=(const JpxBitMapContext&); +}; + +const int kMaxImageDimension = 0x01FFFF; + +} // namespace + +CFX_DIBSource* CPDF_Image::LoadDIBSource(CFX_DIBSource** ppMask, + FX_DWORD* pMatteColor, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask) const { + std::unique_ptr source(new CPDF_DIBSource); + if (source->Load(m_pDocument, m_pStream, + reinterpret_cast(ppMask), pMatteColor, + nullptr, nullptr, bStdCS, GroupFamily, bLoadMask)) { + return source.release(); + } + return nullptr; +} + +CFX_DIBSource* CPDF_Image::DetachBitmap() { + CFX_DIBSource* pBitmap = m_pDIBSource; + m_pDIBSource = nullptr; + return pBitmap; +} + +CFX_DIBSource* CPDF_Image::DetachMask() { + CFX_DIBSource* pBitmap = m_pMask; + m_pMask = nullptr; + return pBitmap; +} + +FX_BOOL CPDF_Image::StartLoadDIBSource(CPDF_Dictionary* pFormResource, + CPDF_Dictionary* pPageResource, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask) { + std::unique_ptr source(new CPDF_DIBSource); + int ret = + source->StartLoadDIBSource(m_pDocument, m_pStream, TRUE, pFormResource, + pPageResource, bStdCS, GroupFamily, bLoadMask); + if (ret == 2) { + m_pDIBSource = source.release(); + return TRUE; + } + if (!ret) { + m_pDIBSource = nullptr; + return FALSE; + } + m_pMask = source->DetachMask(); + m_MatteColor = source->GetMatteColor(); + m_pDIBSource = source.release(); + return FALSE; +} + +FX_BOOL CPDF_Image::Continue(IFX_Pause* pPause) { + CPDF_DIBSource* pSource = static_cast(m_pDIBSource); + int ret = pSource->ContinueLoadDIBSource(pPause); + if (ret == 2) { + return TRUE; + } + if (!ret) { + delete m_pDIBSource; + m_pDIBSource = nullptr; + return FALSE; + } + m_pMask = pSource->DetachMask(); + m_MatteColor = pSource->GetMatteColor(); + return FALSE; +} + +CPDF_DIBSource::CPDF_DIBSource() + : m_pDocument(nullptr), + m_pStream(nullptr), + m_pDict(nullptr), + m_pColorSpace(nullptr), + m_Family(0), + m_bpc(0), + m_bpc_orig(0), + m_nComponents(0), + m_GroupFamily(0), + m_MatteColor(0), + m_bLoadMask(FALSE), + m_bDefaultDecode(TRUE), + m_bImageMask(FALSE), + m_bDoBpcCheck(TRUE), + m_bColorKey(FALSE), + m_bHasMask(FALSE), + m_bStdCS(FALSE), + m_pCompData(nullptr), + m_pLineBuf(nullptr), + m_pMaskedLine(nullptr), + m_pJbig2Context(nullptr), + m_pMask(nullptr), + m_pMaskStream(nullptr), + m_Status(0) {} + +CPDF_DIBSource::~CPDF_DIBSource() { + FX_Free(m_pMaskedLine); + FX_Free(m_pLineBuf); + m_pCachedBitmap.reset(); + FX_Free(m_pCompData); + CPDF_ColorSpace* pCS = m_pColorSpace; + if (pCS && m_pDocument) { + m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); + } + if (m_pJbig2Context) { + ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module(); + pJbig2Module->DestroyJbig2Context(m_pJbig2Context); + } +} + +CFX_DIBitmap* CPDF_DIBSource::GetBitmap() const { + return m_pCachedBitmap ? m_pCachedBitmap.get() : Clone(); +} + +void CPDF_DIBSource::ReleaseBitmap(CFX_DIBitmap* pBitmap) const { + if (pBitmap && pBitmap != m_pCachedBitmap.get()) { + delete pBitmap; + } +} + +FX_BOOL CPDF_DIBSource::Load(CPDF_Document* pDoc, + const CPDF_Stream* pStream, + CPDF_DIBSource** ppMask, + FX_DWORD* pMatteColor, + CPDF_Dictionary* pFormResources, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask) { + if (!pStream) { + return FALSE; + } + m_pDocument = pDoc; + m_pDict = pStream->GetDict(); + if (!m_pDict) { + return FALSE; + } + m_pStream = pStream; + m_Width = m_pDict->GetIntegerBy("Width"); + m_Height = m_pDict->GetIntegerBy("Height"); + if (m_Width <= 0 || m_Height <= 0 || m_Width > kMaxImageDimension || + m_Height > kMaxImageDimension) { + return FALSE; + } + m_GroupFamily = GroupFamily; + m_bLoadMask = bLoadMask; + if (!LoadColorInfo(m_pStream->GetObjNum() != 0 ? nullptr : pFormResources, + pPageResources)) { + return FALSE; + } + if (m_bDoBpcCheck && (m_bpc == 0 || m_nComponents == 0)) { + return FALSE; + } + FX_SAFE_DWORD src_size = + CalculatePitch8(m_bpc, m_nComponents, m_Width) * m_Height; + if (!src_size.IsValid()) { + return FALSE; + } + m_pStreamAcc.reset(new CPDF_StreamAcc); + m_pStreamAcc->LoadAllData(pStream, FALSE, src_size.ValueOrDie(), TRUE); + if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData()) { + return FALSE; + } + if (!CreateDecoder()) { + return FALSE; + } + if (m_bImageMask) { + m_bpp = 1; + m_bpc = 1; + m_nComponents = 1; + m_AlphaFlag = 1; + } else if (m_bpc * m_nComponents == 1) { + m_bpp = 1; + } else if (m_bpc * m_nComponents <= 8) { + m_bpp = 8; + } else { + m_bpp = 24; + } + FX_SAFE_DWORD pitch = CalculatePitch32(m_bpp, m_Width); + if (!pitch.IsValid()) { + return FALSE; + } + m_pLineBuf = FX_Alloc(uint8_t, pitch.ValueOrDie()); + if (m_pColorSpace && bStdCS) { + m_pColorSpace->EnableStdConversion(TRUE); + } + LoadPalette(); + if (m_bColorKey) { + m_bpp = 32; + m_AlphaFlag = 2; + pitch = CalculatePitch32(m_bpp, m_Width); + if (!pitch.IsValid()) { + return FALSE; + } + m_pMaskedLine = FX_Alloc(uint8_t, pitch.ValueOrDie()); + } + m_Pitch = pitch.ValueOrDie(); + if (ppMask) { + *ppMask = LoadMask(*pMatteColor); + } + if (m_pColorSpace && bStdCS) { + m_pColorSpace->EnableStdConversion(FALSE); + } + return TRUE; +} + +int CPDF_DIBSource::ContinueToLoadMask() { + if (m_bImageMask) { + m_bpp = 1; + m_bpc = 1; + m_nComponents = 1; + m_AlphaFlag = 1; + } else if (m_bpc * m_nComponents == 1) { + m_bpp = 1; + } else if (m_bpc * m_nComponents <= 8) { + m_bpp = 8; + } else { + m_bpp = 24; + } + if (!m_bpc || !m_nComponents) { + return 0; + } + FX_SAFE_DWORD pitch = CalculatePitch32(m_bpp, m_Width); + if (!pitch.IsValid()) { + return 0; + } + m_pLineBuf = FX_Alloc(uint8_t, pitch.ValueOrDie()); + if (m_pColorSpace && m_bStdCS) { + m_pColorSpace->EnableStdConversion(TRUE); + } + LoadPalette(); + if (m_bColorKey) { + m_bpp = 32; + m_AlphaFlag = 2; + pitch = CalculatePitch32(m_bpp, m_Width); + if (!pitch.IsValid()) { + return 0; + } + m_pMaskedLine = FX_Alloc(uint8_t, pitch.ValueOrDie()); + } + m_Pitch = pitch.ValueOrDie(); + return 1; +} + +int CPDF_DIBSource::StartLoadDIBSource(CPDF_Document* pDoc, + const CPDF_Stream* pStream, + FX_BOOL bHasMask, + CPDF_Dictionary* pFormResources, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask) { + if (!pStream) { + return 0; + } + m_pDocument = pDoc; + m_pDict = pStream->GetDict(); + m_pStream = pStream; + m_bStdCS = bStdCS; + m_bHasMask = bHasMask; + m_Width = m_pDict->GetIntegerBy("Width"); + m_Height = m_pDict->GetIntegerBy("Height"); + if (m_Width <= 0 || m_Height <= 0 || m_Width > kMaxImageDimension || + m_Height > kMaxImageDimension) { + return 0; + } + m_GroupFamily = GroupFamily; + m_bLoadMask = bLoadMask; + if (!LoadColorInfo(m_pStream->GetObjNum() != 0 ? nullptr : pFormResources, + pPageResources)) { + return 0; + } + if (m_bDoBpcCheck && (m_bpc == 0 || m_nComponents == 0)) { + return 0; + } + FX_SAFE_DWORD src_size = + CalculatePitch8(m_bpc, m_nComponents, m_Width) * m_Height; + if (!src_size.IsValid()) { + return 0; + } + m_pStreamAcc.reset(new CPDF_StreamAcc); + m_pStreamAcc->LoadAllData(pStream, FALSE, src_size.ValueOrDie(), TRUE); + if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData()) { + return 0; + } + int ret = CreateDecoder(); + if (!ret) + return ret; + + if (ret != 1) { + if (!ContinueToLoadMask()) { + return 0; + } + if (m_bHasMask) { + StratLoadMask(); + } + return ret; + } + if (!ContinueToLoadMask()) { + return 0; + } + if (m_bHasMask) { + ret = StratLoadMask(); + } + if (ret == 2) { + return ret; + } + if (m_pColorSpace && m_bStdCS) { + m_pColorSpace->EnableStdConversion(FALSE); + } + return ret; +} + +int CPDF_DIBSource::ContinueLoadDIBSource(IFX_Pause* pPause) { + FXCODEC_STATUS ret; + if (m_Status == 1) { + const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder(); + if (decoder == "JPXDecode") { + return 0; + } + ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module(); + if (!m_pJbig2Context) { + m_pJbig2Context = pJbig2Module->CreateJbig2Context(); + if (m_pStreamAcc->GetImageParam()) { + CPDF_Stream* pGlobals = + m_pStreamAcc->GetImageParam()->GetStreamBy("JBIG2Globals"); + if (pGlobals) { + m_pGlobalStream.reset(new CPDF_StreamAcc); + m_pGlobalStream->LoadAllData(pGlobals, FALSE); + } + } + ret = pJbig2Module->StartDecode( + m_pJbig2Context, m_pDocument, m_Width, m_Height, m_pStreamAcc.get(), + m_pGlobalStream.get(), m_pCachedBitmap->GetBuffer(), + m_pCachedBitmap->GetPitch(), pPause); + if (ret < 0) { + m_pCachedBitmap.reset(); + m_pGlobalStream.reset(); + pJbig2Module->DestroyJbig2Context(m_pJbig2Context); + m_pJbig2Context = nullptr; + return 0; + } + if (ret == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + return 2; + } + int ret1 = 1; + if (m_bHasMask) { + ret1 = ContinueLoadMaskDIB(pPause); + m_Status = 2; + } + if (ret1 == 2) { + return ret1; + } + if (m_pColorSpace && m_bStdCS) { + m_pColorSpace->EnableStdConversion(FALSE); + } + return ret1; + } + FXCODEC_STATUS ret = pJbig2Module->ContinueDecode(m_pJbig2Context, pPause); + if (ret < 0) { + m_pCachedBitmap.reset(); + m_pGlobalStream.reset(); + pJbig2Module->DestroyJbig2Context(m_pJbig2Context); + m_pJbig2Context = nullptr; + return 0; + } + if (ret == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + return 2; + } + int ret1 = 1; + if (m_bHasMask) { + ret1 = ContinueLoadMaskDIB(pPause); + m_Status = 2; + } + if (ret1 == 2) { + return ret1; + } + if (m_pColorSpace && m_bStdCS) { + m_pColorSpace->EnableStdConversion(FALSE); + } + return ret1; + } + if (m_Status == 2) { + return ContinueLoadMaskDIB(pPause); + } + return 0; +} + +bool CPDF_DIBSource::LoadColorInfo(const CPDF_Dictionary* pFormResources, + const CPDF_Dictionary* pPageResources) { + m_bpc_orig = m_pDict->GetIntegerBy("BitsPerComponent"); + if (m_pDict->GetIntegerBy("ImageMask")) + m_bImageMask = TRUE; + + if (m_bImageMask || !m_pDict->KeyExist("ColorSpace")) { + if (!m_bImageMask) { + CPDF_Object* pFilter = m_pDict->GetElementValue("Filter"); + if (pFilter) { + CFX_ByteString filter; + if (pFilter->IsName()) { + filter = pFilter->GetString(); + } else if (CPDF_Array* pArray = pFilter->AsArray()) { + filter = pArray->GetStringAt(pArray->GetCount() - 1); + } + + if (filter == "JPXDecode") { + m_bDoBpcCheck = FALSE; + return true; + } + } + } + m_bImageMask = TRUE; + m_bpc = m_nComponents = 1; + CPDF_Array* pDecode = m_pDict->GetArrayBy("Decode"); + m_bDefaultDecode = !pDecode || !pDecode->GetIntegerAt(0); + return true; + } + + CPDF_Object* pCSObj = m_pDict->GetElementValue("ColorSpace"); + if (!pCSObj) + return false; + + CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData(); + if (pFormResources) + m_pColorSpace = pDocPageData->GetColorSpace(pCSObj, pFormResources); + if (!m_pColorSpace) + m_pColorSpace = pDocPageData->GetColorSpace(pCSObj, pPageResources); + if (!m_pColorSpace) + return false; + + m_Family = m_pColorSpace->GetFamily(); + m_nComponents = m_pColorSpace->CountComponents(); + if (m_Family == PDFCS_ICCBASED && pCSObj->IsName()) { + CFX_ByteString cs = pCSObj->GetString(); + if (cs == "DeviceGray") { + m_nComponents = 1; + } else if (cs == "DeviceRGB") { + m_nComponents = 3; + } else if (cs == "DeviceCMYK") { + m_nComponents = 4; + } + } + ValidateDictParam(); + m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey); + return !!m_pCompData; +} + +DIB_COMP_DATA* CPDF_DIBSource::GetDecodeAndMaskArray(FX_BOOL& bDefaultDecode, + FX_BOOL& bColorKey) { + if (!m_pColorSpace) { + return nullptr; + } + DIB_COMP_DATA* pCompData = FX_Alloc(DIB_COMP_DATA, m_nComponents); + int max_data = (1 << m_bpc) - 1; + CPDF_Array* pDecode = m_pDict->GetArrayBy("Decode"); + if (pDecode) { + for (FX_DWORD i = 0; i < m_nComponents; i++) { + pCompData[i].m_DecodeMin = pDecode->GetNumberAt(i * 2); + FX_FLOAT max = pDecode->GetNumberAt(i * 2 + 1); + pCompData[i].m_DecodeStep = (max - pCompData[i].m_DecodeMin) / max_data; + FX_FLOAT def_value; + FX_FLOAT def_min; + FX_FLOAT def_max; + m_pColorSpace->GetDefaultValue(i, def_value, def_min, def_max); + if (m_Family == PDFCS_INDEXED) { + def_max = max_data; + } + if (def_min != pCompData[i].m_DecodeMin || def_max != max) { + bDefaultDecode = FALSE; + } + } + } else { + for (FX_DWORD i = 0; i < m_nComponents; i++) { + FX_FLOAT def_value; + m_pColorSpace->GetDefaultValue(i, def_value, pCompData[i].m_DecodeMin, + pCompData[i].m_DecodeStep); + if (m_Family == PDFCS_INDEXED) { + pCompData[i].m_DecodeStep = max_data; + } + pCompData[i].m_DecodeStep = + (pCompData[i].m_DecodeStep - pCompData[i].m_DecodeMin) / max_data; + } + } + if (!m_pDict->KeyExist("SMask")) { + CPDF_Object* pMask = m_pDict->GetElementValue("Mask"); + if (!pMask) { + return pCompData; + } + if (CPDF_Array* pArray = pMask->AsArray()) { + if (pArray->GetCount() >= m_nComponents * 2) { + for (FX_DWORD i = 0; i < m_nComponents; i++) { + int min_num = pArray->GetIntegerAt(i * 2); + int max_num = pArray->GetIntegerAt(i * 2 + 1); + pCompData[i].m_ColorKeyMin = std::max(min_num, 0); + pCompData[i].m_ColorKeyMax = std::min(max_num, max_data); + } + } + bColorKey = TRUE; + } + } + return pCompData; +} + +ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + const CPDF_Dictionary* pParams); + +ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc, + const CPDF_Dictionary* pParams); + +int CPDF_DIBSource::CreateDecoder() { + const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder(); + if (decoder.IsEmpty()) { + return 1; + } + if (m_bDoBpcCheck && m_bpc == 0) { + return 0; + } + const uint8_t* src_data = m_pStreamAcc->GetData(); + FX_DWORD src_size = m_pStreamAcc->GetSize(); + const CPDF_Dictionary* pParams = m_pStreamAcc->GetImageParam(); + if (decoder == "CCITTFaxDecode") { + m_pDecoder.reset(FPDFAPI_CreateFaxDecoder(src_data, src_size, m_Width, + m_Height, pParams)); + } else if (decoder == "DCTDecode") { + m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder( + src_data, src_size, m_Width, m_Height, m_nComponents, + pParams ? pParams->GetIntegerBy("ColorTransform", 1) : 1)); + if (!m_pDecoder) { + FX_BOOL bTransform = FALSE; + int comps; + int bpc; + ICodec_JpegModule* pJpegModule = CPDF_ModuleMgr::Get()->GetJpegModule(); + if (pJpegModule->LoadInfo(src_data, src_size, m_Width, m_Height, comps, + bpc, bTransform)) { + if (m_nComponents != static_cast(comps)) { + FX_Free(m_pCompData); + m_nComponents = static_cast(comps); + if (m_Family == PDFCS_LAB && m_nComponents != 3) { + m_pCompData = nullptr; + return 0; + } + m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey); + if (!m_pCompData) { + return 0; + } + } + m_bpc = bpc; + m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder( + src_data, src_size, m_Width, m_Height, m_nComponents, bTransform)); + } + } + } else if (decoder == "FlateDecode") { + m_pDecoder.reset(FPDFAPI_CreateFlateDecoder( + src_data, src_size, m_Width, m_Height, m_nComponents, m_bpc, pParams)); + } else if (decoder == "JPXDecode") { + LoadJpxBitmap(); + return m_pCachedBitmap ? 1 : 0; + } else if (decoder == "JBIG2Decode") { + m_pCachedBitmap.reset(new CFX_DIBitmap); + if (!m_pCachedBitmap->Create( + m_Width, m_Height, m_bImageMask ? FXDIB_1bppMask : FXDIB_1bppRgb)) { + m_pCachedBitmap.reset(); + return 0; + } + m_Status = 1; + return 2; + } else if (decoder == "RunLengthDecode") { + m_pDecoder.reset(CPDF_ModuleMgr::Get() + ->GetCodecModule() + ->GetBasicModule() + ->CreateRunLengthDecoder(src_data, src_size, m_Width, + m_Height, m_nComponents, + m_bpc)); + } + if (!m_pDecoder) + return 0; + + FX_SAFE_DWORD requested_pitch = + CalculatePitch8(m_bpc, m_nComponents, m_Width); + if (!requested_pitch.IsValid()) { + return 0; + } + FX_SAFE_DWORD provided_pitch = CalculatePitch8( + m_pDecoder->GetBPC(), m_pDecoder->CountComps(), m_pDecoder->GetWidth()); + if (!provided_pitch.IsValid()) { + return 0; + } + if (provided_pitch.ValueOrDie() < requested_pitch.ValueOrDie()) { + return 0; + } + return 1; +} + +void CPDF_DIBSource::LoadJpxBitmap() { + ICodec_JpxModule* pJpxModule = CPDF_ModuleMgr::Get()->GetJpxModule(); + if (!pJpxModule) + return; + + std::unique_ptr context(new JpxBitMapContext(pJpxModule)); + context->set_decoder(pJpxModule->CreateDecoder( + m_pStreamAcc->GetData(), m_pStreamAcc->GetSize(), m_pColorSpace)); + if (!context->decoder()) + return; + + FX_DWORD width = 0; + FX_DWORD height = 0; + FX_DWORD components = 0; + pJpxModule->GetImageInfo(context->decoder(), &width, &height, &components); + if (static_cast(width) < m_Width || static_cast(height) < m_Height) + return; + + FX_BOOL bSwapRGB = FALSE; + if (m_pColorSpace) { + if (components != m_pColorSpace->CountComponents()) + return; + + if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB)) { + bSwapRGB = TRUE; + m_pColorSpace = nullptr; + } + } else { + if (components == 3) { + bSwapRGB = TRUE; + } else if (components == 4) { + m_pColorSpace = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); + } + m_nComponents = components; + } + + FXDIB_Format format; + if (components == 1) { + format = FXDIB_8bppRgb; + } else if (components <= 3) { + format = FXDIB_Rgb; + } else if (components == 4) { + format = FXDIB_Rgb32; + } else { + width = (width * components + 2) / 3; + format = FXDIB_Rgb; + } + + m_pCachedBitmap.reset(new CFX_DIBitmap); + if (!m_pCachedBitmap->Create(width, height, format)) { + m_pCachedBitmap.reset(); + return; + } + m_pCachedBitmap->Clear(0xFFFFFFFF); + std::vector output_offsets(components); + for (FX_DWORD i = 0; i < components; ++i) + output_offsets[i] = i; + if (bSwapRGB) { + output_offsets[0] = 2; + output_offsets[2] = 0; + } + if (!pJpxModule->Decode(context->decoder(), m_pCachedBitmap->GetBuffer(), + m_pCachedBitmap->GetPitch(), output_offsets)) { + m_pCachedBitmap.reset(); + return; + } + if (m_pColorSpace && m_pColorSpace->GetFamily() == PDFCS_INDEXED && + m_bpc < 8) { + int scale = 8 - m_bpc; + for (FX_DWORD row = 0; row < height; ++row) { + uint8_t* scanline = + const_cast(m_pCachedBitmap->GetScanline(row)); + for (FX_DWORD col = 0; col < width; ++col) { + *scanline = (*scanline) >> scale; + ++scanline; + } + } + } + m_bpc = 8; +} + +CPDF_DIBSource* CPDF_DIBSource::LoadMask(FX_DWORD& MatteColor) { + MatteColor = 0xFFFFFFFF; + CPDF_Stream* pSoftMask = m_pDict->GetStreamBy("SMask"); + if (pSoftMask) { + CPDF_Array* pMatte = pSoftMask->GetDict()->GetArrayBy("Matte"); + if (pMatte && m_pColorSpace && + m_pColorSpace->CountComponents() <= m_nComponents) { + std::vector colors(m_nComponents); + for (FX_DWORD i = 0; i < m_nComponents; i++) { + colors[i] = pMatte->GetFloatAt(i); + } + FX_FLOAT R, G, B; + m_pColorSpace->GetRGB(colors.data(), R, G, B); + MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), + FXSYS_round(B * 255)); + } + return LoadMaskDIB(pSoftMask); + } + + if (CPDF_Stream* pStream = ToStream(m_pDict->GetElementValue("Mask"))) + return LoadMaskDIB(pStream); + + return nullptr; +} + +int CPDF_DIBSource::StratLoadMask() { + m_MatteColor = 0XFFFFFFFF; + m_pMaskStream = m_pDict->GetStreamBy("SMask"); + if (m_pMaskStream) { + CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArrayBy("Matte"); + if (pMatte && m_pColorSpace && + m_pColorSpace->CountComponents() <= m_nComponents) { + FX_FLOAT R, G, B; + std::vector colors(m_nComponents); + for (FX_DWORD i = 0; i < m_nComponents; i++) { + colors[i] = pMatte->GetFloatAt(i); + } + m_pColorSpace->GetRGB(colors.data(), R, G, B); + m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), + FXSYS_round(B * 255)); + } + return StartLoadMaskDIB(); + } + + m_pMaskStream = ToStream(m_pDict->GetElementValue("Mask")); + return m_pMaskStream ? StartLoadMaskDIB() : 1; +} + +int CPDF_DIBSource::ContinueLoadMaskDIB(IFX_Pause* pPause) { + if (!m_pMask) { + return 1; + } + int ret = m_pMask->ContinueLoadDIBSource(pPause); + if (ret == 2) { + return ret; + } + if (m_pColorSpace && m_bStdCS) { + m_pColorSpace->EnableStdConversion(FALSE); + } + if (!ret) { + delete m_pMask; + m_pMask = nullptr; + return ret; + } + return 1; +} + +CPDF_DIBSource* CPDF_DIBSource::DetachMask() { + CPDF_DIBSource* pDIBSource = m_pMask; + m_pMask = nullptr; + return pDIBSource; +} + +CPDF_DIBSource* CPDF_DIBSource::LoadMaskDIB(CPDF_Stream* pMask) { + CPDF_DIBSource* pMaskSource = new CPDF_DIBSource; + if (!pMaskSource->Load(m_pDocument, pMask, nullptr, nullptr, nullptr, nullptr, + TRUE)) { + delete pMaskSource; + return nullptr; + } + return pMaskSource; +} + +int CPDF_DIBSource::StartLoadMaskDIB() { + m_pMask = new CPDF_DIBSource; + int ret = m_pMask->StartLoadDIBSource(m_pDocument, m_pMaskStream, FALSE, + nullptr, nullptr, TRUE); + if (ret == 2) { + if (m_Status == 0) + m_Status = 2; + return 2; + } + if (!ret) { + delete m_pMask; + m_pMask = nullptr; + return 1; + } + return 1; +} + +void CPDF_DIBSource::LoadPalette() { + if (m_bpc == 0) { + return; + } + if (m_bpc * m_nComponents > 8) { + return; + } + if (!m_pColorSpace) { + return; + } + if (m_bpc * m_nComponents == 1) { + if (m_bDefaultDecode && + (m_Family == PDFCS_DEVICEGRAY || m_Family == PDFCS_DEVICERGB)) { + return; + } + if (m_pColorSpace->CountComponents() > 3) { + return; + } + FX_FLOAT color_values[3]; + color_values[0] = m_pCompData[0].m_DecodeMin; + color_values[1] = color_values[2] = color_values[0]; + FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; + m_pColorSpace->GetRGB(color_values, R, G, B); + FX_ARGB argb0 = ArgbEncode(255, FXSYS_round(R * 255), FXSYS_round(G * 255), + FXSYS_round(B * 255)); + color_values[0] += m_pCompData[0].m_DecodeStep; + color_values[1] += m_pCompData[0].m_DecodeStep; + color_values[2] += m_pCompData[0].m_DecodeStep; + m_pColorSpace->GetRGB(color_values, R, G, B); + FX_ARGB argb1 = ArgbEncode(255, FXSYS_round(R * 255), FXSYS_round(G * 255), + FXSYS_round(B * 255)); + if (argb0 != 0xFF000000 || argb1 != 0xFFFFFFFF) { + SetPaletteArgb(0, argb0); + SetPaletteArgb(1, argb1); + } + return; + } + if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY) && + m_bpc == 8 && m_bDefaultDecode) { + } else { + int palette_count = 1 << (m_bpc * m_nComponents); + CFX_FixedBufGrow color_values(m_nComponents); + FX_FLOAT* color_value = color_values; + for (int i = 0; i < palette_count; i++) { + int color_data = i; + for (FX_DWORD j = 0; j < m_nComponents; j++) { + int encoded_component = color_data % (1 << m_bpc); + color_data /= 1 << m_bpc; + color_value[j] = m_pCompData[j].m_DecodeMin + + m_pCompData[j].m_DecodeStep * encoded_component; + } + FX_FLOAT R = 0, G = 0, B = 0; + if (m_nComponents == 1 && m_Family == PDFCS_ICCBASED && + m_pColorSpace->CountComponents() > 1) { + int nComponents = m_pColorSpace->CountComponents(); + std::vector temp_buf(nComponents); + for (int i = 0; i < nComponents; i++) { + temp_buf[i] = *color_value; + } + m_pColorSpace->GetRGB(temp_buf.data(), R, G, B); + } else { + m_pColorSpace->GetRGB(color_value, R, G, B); + } + SetPaletteArgb(i, ArgbEncode(255, FXSYS_round(R * 255), + FXSYS_round(G * 255), FXSYS_round(B * 255))); + } + } +} + +void CPDF_DIBSource::ValidateDictParam() { + m_bpc = m_bpc_orig; + CPDF_Object* pFilter = m_pDict->GetElementValue("Filter"); + if (pFilter) { + if (pFilter->IsName()) { + CFX_ByteString filter = pFilter->GetString(); + if (filter == "CCITTFaxDecode" || filter == "JBIG2Decode") { + m_bpc = 1; + m_nComponents = 1; + } else if (filter == "RunLengthDecode") { + if (m_bpc != 1) { + m_bpc = 8; + } + } else if (filter == "DCTDecode") { + m_bpc = 8; + } + } else if (CPDF_Array* pArray = pFilter->AsArray()) { + CFX_ByteString filter = pArray->GetStringAt(pArray->GetCount() - 1); + if (filter == "CCITTFaxDecode" || filter == "JBIG2Decode") { + m_bpc = 1; + m_nComponents = 1; + } else if (filter == "DCTDecode") { + // Previously, filter == "RunLengthDecode" was checked in the "if" + // statement as well, but too many documents don't conform to it. + m_bpc = 8; + } + } + } + + if (!IsAllowedBPCValue(m_bpc)) + m_bpc = 0; +} + +void CPDF_DIBSource::TranslateScanline24bpp(uint8_t* dest_scan, + const uint8_t* src_scan) const { + if (m_bpc == 0) { + return; + } + unsigned int max_data = (1 << m_bpc) - 1; + if (m_bDefaultDecode) { + if (m_Family == PDFCS_DEVICERGB || m_Family == PDFCS_CALRGB) { + const uint8_t* src_pos = src_scan; + switch (m_bpc) { + case 16: + for (int col = 0; col < m_Width; col++) { + *dest_scan++ = src_pos[4]; + *dest_scan++ = src_pos[2]; + *dest_scan++ = *src_pos; + src_pos += 6; + } + break; + case 8: + for (int column = 0; column < m_Width; column++) { + *dest_scan++ = src_pos[2]; + *dest_scan++ = src_pos[1]; + *dest_scan++ = *src_pos; + src_pos += 3; + } + break; + default: + uint64_t src_bit_pos = 0; + size_t dest_byte_pos = 0; + for (int column = 0; column < m_Width; column++) { + unsigned int R = GetBits8(src_scan, src_bit_pos, m_bpc); + src_bit_pos += m_bpc; + unsigned int G = GetBits8(src_scan, src_bit_pos, m_bpc); + src_bit_pos += m_bpc; + unsigned int B = GetBits8(src_scan, src_bit_pos, m_bpc); + src_bit_pos += m_bpc; + R = std::min(R, max_data); + G = std::min(G, max_data); + B = std::min(B, max_data); + dest_scan[dest_byte_pos] = B * 255 / max_data; + dest_scan[dest_byte_pos + 1] = G * 255 / max_data; + dest_scan[dest_byte_pos + 2] = R * 255 / max_data; + dest_byte_pos += 3; + } + break; + } + return; + } + if (m_bpc == 8) { + if (m_nComponents == m_pColorSpace->CountComponents()) + m_pColorSpace->TranslateImageLine(dest_scan, src_scan, m_Width, m_Width, + m_Height, TransMask()); + return; + } + } + CFX_FixedBufGrow color_values1(m_nComponents); + FX_FLOAT* color_values = color_values1; + FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; + if (m_bpc == 8) { + uint64_t src_byte_pos = 0; + size_t dest_byte_pos = 0; + for (int column = 0; column < m_Width; column++) { + for (FX_DWORD color = 0; color < m_nComponents; color++) { + uint8_t data = src_scan[src_byte_pos++]; + color_values[color] = m_pCompData[color].m_DecodeMin + + m_pCompData[color].m_DecodeStep * data; + } + if (TransMask()) { + FX_FLOAT k = 1.0f - color_values[3]; + R = (1.0f - color_values[0]) * k; + G = (1.0f - color_values[1]) * k; + B = (1.0f - color_values[2]) * k; + } else { + m_pColorSpace->GetRGB(color_values, R, G, B); + } + R = ClampValue(R, 1.0f); + G = ClampValue(G, 1.0f); + B = ClampValue(B, 1.0f); + dest_scan[dest_byte_pos] = static_cast(B * 255); + dest_scan[dest_byte_pos + 1] = static_cast(G * 255); + dest_scan[dest_byte_pos + 2] = static_cast(R * 255); + dest_byte_pos += 3; + } + } else { + uint64_t src_bit_pos = 0; + size_t dest_byte_pos = 0; + for (int column = 0; column < m_Width; column++) { + for (FX_DWORD color = 0; color < m_nComponents; color++) { + unsigned int data = GetBits8(src_scan, src_bit_pos, m_bpc); + color_values[color] = m_pCompData[color].m_DecodeMin + + m_pCompData[color].m_DecodeStep * data; + src_bit_pos += m_bpc; + } + if (TransMask()) { + FX_FLOAT k = 1.0f - color_values[3]; + R = (1.0f - color_values[0]) * k; + G = (1.0f - color_values[1]) * k; + B = (1.0f - color_values[2]) * k; + } else { + m_pColorSpace->GetRGB(color_values, R, G, B); + } + R = ClampValue(R, 1.0f); + G = ClampValue(G, 1.0f); + B = ClampValue(B, 1.0f); + dest_scan[dest_byte_pos] = static_cast(B * 255); + dest_scan[dest_byte_pos + 1] = static_cast(G * 255); + dest_scan[dest_byte_pos + 2] = static_cast(R * 255); + dest_byte_pos += 3; + } + } +} + +uint8_t* CPDF_DIBSource::GetBuffer() const { + return m_pCachedBitmap ? m_pCachedBitmap->GetBuffer() : nullptr; +} + +const uint8_t* CPDF_DIBSource::GetScanline(int line) const { + if (m_bpc == 0) { + return nullptr; + } + FX_SAFE_DWORD src_pitch = CalculatePitch8(m_bpc, m_nComponents, m_Width); + if (!src_pitch.IsValid()) + return nullptr; + FX_DWORD src_pitch_value = src_pitch.ValueOrDie(); + const uint8_t* pSrcLine = nullptr; + if (m_pCachedBitmap && src_pitch_value <= m_pCachedBitmap->GetPitch()) { + if (line >= m_pCachedBitmap->GetHeight()) { + line = m_pCachedBitmap->GetHeight() - 1; + } + pSrcLine = m_pCachedBitmap->GetScanline(line); + } else if (m_pDecoder) { + pSrcLine = m_pDecoder->GetScanline(line); + } else { + if (m_pStreamAcc->GetSize() >= (line + 1) * src_pitch_value) { + pSrcLine = m_pStreamAcc->GetData() + line * src_pitch_value; + } + } + if (!pSrcLine) { + uint8_t* pLineBuf = m_pMaskedLine ? m_pMaskedLine : m_pLineBuf; + FXSYS_memset(pLineBuf, 0xFF, m_Pitch); + return pLineBuf; + } + if (m_bpc * m_nComponents == 1) { + if (m_bImageMask && m_bDefaultDecode) { + for (FX_DWORD i = 0; i < src_pitch_value; i++) { + m_pLineBuf[i] = ~pSrcLine[i]; + } + } else if (m_bColorKey) { + FX_DWORD reset_argb, set_argb; + reset_argb = m_pPalette ? m_pPalette[0] : 0xFF000000; + set_argb = m_pPalette ? m_pPalette[1] : 0xFFFFFFFF; + if (m_pCompData[0].m_ColorKeyMin == 0) { + reset_argb = 0; + } + if (m_pCompData[0].m_ColorKeyMax == 1) { + set_argb = 0; + } + set_argb = FXARGB_TODIB(set_argb); + reset_argb = FXARGB_TODIB(reset_argb); + FX_DWORD* dest_scan = reinterpret_cast(m_pMaskedLine); + for (int col = 0; col < m_Width; col++) { + if (pSrcLine[col / 8] & (1 << (7 - col % 8))) { + *dest_scan = set_argb; + } else { + *dest_scan = reset_argb; + } + dest_scan++; + } + return m_pMaskedLine; + } else { + FXSYS_memcpy(m_pLineBuf, pSrcLine, src_pitch_value); + } + return m_pLineBuf; + } + if (m_bpc * m_nComponents <= 8) { + if (m_bpc == 8) { + FXSYS_memcpy(m_pLineBuf, pSrcLine, src_pitch_value); + } else { + uint64_t src_bit_pos = 0; + for (int col = 0; col < m_Width; col++) { + unsigned int color_index = 0; + for (FX_DWORD color = 0; color < m_nComponents; color++) { + unsigned int data = GetBits8(pSrcLine, src_bit_pos, m_bpc); + color_index |= data << (color * m_bpc); + src_bit_pos += m_bpc; + } + m_pLineBuf[col] = color_index; + } + } + if (m_bColorKey) { + uint8_t* pDestPixel = m_pMaskedLine; + const uint8_t* pSrcPixel = m_pLineBuf; + for (int col = 0; col < m_Width; col++) { + uint8_t index = *pSrcPixel++; + if (m_pPalette) { + *pDestPixel++ = FXARGB_B(m_pPalette[index]); + *pDestPixel++ = FXARGB_G(m_pPalette[index]); + *pDestPixel++ = FXARGB_R(m_pPalette[index]); + } else { + *pDestPixel++ = index; + *pDestPixel++ = index; + *pDestPixel++ = index; + } + *pDestPixel = (index < m_pCompData[0].m_ColorKeyMin || + index > m_pCompData[0].m_ColorKeyMax) + ? 0xFF + : 0; + pDestPixel++; + } + return m_pMaskedLine; + } + return m_pLineBuf; + } + if (m_bColorKey) { + if (m_nComponents == 3 && m_bpc == 8) { + uint8_t* alpha_channel = m_pMaskedLine + 3; + for (int col = 0; col < m_Width; col++) { + const uint8_t* pPixel = pSrcLine + col * 3; + alpha_channel[col * 4] = (pPixel[0] < m_pCompData[0].m_ColorKeyMin || + pPixel[0] > m_pCompData[0].m_ColorKeyMax || + pPixel[1] < m_pCompData[1].m_ColorKeyMin || + pPixel[1] > m_pCompData[1].m_ColorKeyMax || + pPixel[2] < m_pCompData[2].m_ColorKeyMin || + pPixel[2] > m_pCompData[2].m_ColorKeyMax) + ? 0xFF + : 0; + } + } else { + FXSYS_memset(m_pMaskedLine, 0xFF, m_Pitch); + } + } + if (m_pColorSpace) { + TranslateScanline24bpp(m_pLineBuf, pSrcLine); + pSrcLine = m_pLineBuf; + } + if (m_bColorKey) { + const uint8_t* pSrcPixel = pSrcLine; + uint8_t* pDestPixel = m_pMaskedLine; + for (int col = 0; col < m_Width; col++) { + *pDestPixel++ = *pSrcPixel++; + *pDestPixel++ = *pSrcPixel++; + *pDestPixel++ = *pSrcPixel++; + pDestPixel++; + } + return m_pMaskedLine; + } + return pSrcLine; +} + +FX_BOOL CPDF_DIBSource::SkipToScanline(int line, IFX_Pause* pPause) const { + return m_pDecoder && m_pDecoder->SkipToScanline(line, pPause); +} + +void CPDF_DIBSource::DownSampleScanline(int line, + uint8_t* dest_scan, + int dest_bpp, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const { + if (line < 0 || !dest_scan || dest_bpp <= 0 || dest_width <= 0 || + clip_left < 0 || clip_width <= 0) { + return; + } + + FX_DWORD src_width = m_Width; + FX_SAFE_DWORD pitch = CalculatePitch8(m_bpc, m_nComponents, m_Width); + if (!pitch.IsValid()) + return; + + const uint8_t* pSrcLine = nullptr; + if (m_pCachedBitmap) { + pSrcLine = m_pCachedBitmap->GetScanline(line); + } else if (m_pDecoder) { + pSrcLine = m_pDecoder->GetScanline(line); + } else { + FX_DWORD src_pitch = pitch.ValueOrDie(); + pitch *= (line + 1); + if (!pitch.IsValid()) { + return; + } + + if (m_pStreamAcc->GetSize() >= pitch.ValueOrDie()) { + pSrcLine = m_pStreamAcc->GetData() + line * src_pitch; + } + } + int orig_Bpp = m_bpc * m_nComponents / 8; + int dest_Bpp = dest_bpp / 8; + if (!pSrcLine) { + FXSYS_memset(dest_scan, 0xFF, dest_Bpp * clip_width); + return; + } + + FX_SAFE_INT32 max_src_x = clip_left; + max_src_x += clip_width - 1; + max_src_x *= src_width; + max_src_x /= dest_width; + if (!max_src_x.IsValid()) + return; + + if (m_bpc * m_nComponents == 1) { + DownSampleScanline1Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan, + dest_width, bFlipX, clip_left, clip_width); + } else if (m_bpc * m_nComponents <= 8) { + DownSampleScanline8Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan, + dest_width, bFlipX, clip_left, clip_width); + } else { + DownSampleScanline32Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan, + dest_width, bFlipX, clip_left, clip_width); + } +} + +void CPDF_DIBSource::DownSampleScanline1Bit(int orig_Bpp, + int dest_Bpp, + FX_DWORD src_width, + const uint8_t* pSrcLine, + uint8_t* dest_scan, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const { + FX_DWORD set_argb = (FX_DWORD)-1; + FX_DWORD reset_argb = 0; + if (m_bImageMask) { + if (m_bDefaultDecode) { + set_argb = 0; + reset_argb = (FX_DWORD)-1; + } + } else if (m_bColorKey) { + reset_argb = m_pPalette ? m_pPalette[0] : 0xFF000000; + set_argb = m_pPalette ? m_pPalette[1] : 0xFFFFFFFF; + if (m_pCompData[0].m_ColorKeyMin == 0) { + reset_argb = 0; + } + if (m_pCompData[0].m_ColorKeyMax == 1) { + set_argb = 0; + } + set_argb = FXARGB_TODIB(set_argb); + reset_argb = FXARGB_TODIB(reset_argb); + FX_DWORD* dest_scan_dword = reinterpret_cast(dest_scan); + for (int i = 0; i < clip_width; i++) { + FX_DWORD src_x = (clip_left + i) * src_width / dest_width; + if (bFlipX) { + src_x = src_width - src_x - 1; + } + src_x %= src_width; + if (pSrcLine[src_x / 8] & (1 << (7 - src_x % 8))) { + dest_scan_dword[i] = set_argb; + } else { + dest_scan_dword[i] = reset_argb; + } + } + return; + } else { + if (dest_Bpp == 1) { + } else if (m_pPalette) { + reset_argb = m_pPalette[0]; + set_argb = m_pPalette[1]; + } + } + for (int i = 0; i < clip_width; i++) { + FX_DWORD src_x = (clip_left + i) * src_width / dest_width; + if (bFlipX) { + src_x = src_width - src_x - 1; + } + src_x %= src_width; + int dest_pos = i * dest_Bpp; + if (pSrcLine[src_x / 8] & (1 << (7 - src_x % 8))) { + if (dest_Bpp == 1) { + dest_scan[dest_pos] = static_cast(set_argb); + } else if (dest_Bpp == 3) { + dest_scan[dest_pos] = FXARGB_B(set_argb); + dest_scan[dest_pos + 1] = FXARGB_G(set_argb); + dest_scan[dest_pos + 2] = FXARGB_R(set_argb); + } else { + *reinterpret_cast(dest_scan + dest_pos) = set_argb; + } + } else { + if (dest_Bpp == 1) { + dest_scan[dest_pos] = static_cast(reset_argb); + } else if (dest_Bpp == 3) { + dest_scan[dest_pos] = FXARGB_B(reset_argb); + dest_scan[dest_pos + 1] = FXARGB_G(reset_argb); + dest_scan[dest_pos + 2] = FXARGB_R(reset_argb); + } else { + *reinterpret_cast(dest_scan + dest_pos) = reset_argb; + } + } + } +} + +void CPDF_DIBSource::DownSampleScanline8Bit(int orig_Bpp, + int dest_Bpp, + FX_DWORD src_width, + const uint8_t* pSrcLine, + uint8_t* dest_scan, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const { + if (m_bpc < 8) { + uint64_t src_bit_pos = 0; + for (FX_DWORD col = 0; col < src_width; col++) { + unsigned int color_index = 0; + for (FX_DWORD color = 0; color < m_nComponents; color++) { + unsigned int data = GetBits8(pSrcLine, src_bit_pos, m_bpc); + color_index |= data << (color * m_bpc); + src_bit_pos += m_bpc; + } + m_pLineBuf[col] = color_index; + } + pSrcLine = m_pLineBuf; + } + if (m_bColorKey) { + for (int i = 0; i < clip_width; i++) { + FX_DWORD src_x = (clip_left + i) * src_width / dest_width; + if (bFlipX) { + src_x = src_width - src_x - 1; + } + src_x %= src_width; + uint8_t* pDestPixel = dest_scan + i * 4; + uint8_t index = pSrcLine[src_x]; + if (m_pPalette) { + *pDestPixel++ = FXARGB_B(m_pPalette[index]); + *pDestPixel++ = FXARGB_G(m_pPalette[index]); + *pDestPixel++ = FXARGB_R(m_pPalette[index]); + } else { + *pDestPixel++ = index; + *pDestPixel++ = index; + *pDestPixel++ = index; + } + *pDestPixel = (index < m_pCompData[0].m_ColorKeyMin || + index > m_pCompData[0].m_ColorKeyMax) + ? 0xFF + : 0; + } + return; + } + for (int i = 0; i < clip_width; i++) { + FX_DWORD src_x = (clip_left + i) * src_width / dest_width; + if (bFlipX) { + src_x = src_width - src_x - 1; + } + src_x %= src_width; + uint8_t index = pSrcLine[src_x]; + if (dest_Bpp == 1) { + dest_scan[i] = index; + } else { + int dest_pos = i * dest_Bpp; + FX_ARGB argb = m_pPalette[index]; + dest_scan[dest_pos] = FXARGB_B(argb); + dest_scan[dest_pos + 1] = FXARGB_G(argb); + dest_scan[dest_pos + 2] = FXARGB_R(argb); + } + } +} + +void CPDF_DIBSource::DownSampleScanline32Bit(int orig_Bpp, + int dest_Bpp, + FX_DWORD src_width, + const uint8_t* pSrcLine, + uint8_t* dest_scan, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const { + // last_src_x used to store the last seen src_x position which should be + // in [0, src_width). Set the initial value to be an invalid src_x value. + FX_DWORD last_src_x = src_width; + FX_ARGB last_argb = FXARGB_MAKE(0xFF, 0xFF, 0xFF, 0xFF); + FX_FLOAT unit_To8Bpc = 255.0f / ((1 << m_bpc) - 1); + for (int i = 0; i < clip_width; i++) { + int dest_x = clip_left + i; + FX_DWORD src_x = (bFlipX ? (dest_width - dest_x - 1) : dest_x) * + (int64_t)src_width / dest_width; + src_x %= src_width; + + uint8_t* pDestPixel = dest_scan + i * dest_Bpp; + FX_ARGB argb; + if (src_x == last_src_x) { + argb = last_argb; + } else { + CFX_FixedBufGrow extracted_components(m_nComponents); + const uint8_t* pSrcPixel = nullptr; + if (m_bpc % 8 != 0) { + // No need to check for 32-bit overflow, as |src_x| is bounded by + // |src_width| and DownSampleScanline() already checked for overflow + // with the pitch calculation. + size_t num_bits = src_x * m_bpc * m_nComponents; + uint64_t src_bit_pos = num_bits % 8; + pSrcPixel = pSrcLine + num_bits / 8; + for (FX_DWORD j = 0; j < m_nComponents; ++j) { + extracted_components[j] = static_cast( + GetBits8(pSrcPixel, src_bit_pos, m_bpc) * unit_To8Bpc); + src_bit_pos += m_bpc; + } + pSrcPixel = extracted_components; + } else { + pSrcPixel = pSrcLine + src_x * orig_Bpp; + if (m_bpc == 16) { + for (FX_DWORD j = 0; j < m_nComponents; ++j) + extracted_components[j] = pSrcPixel[j * 2]; + pSrcPixel = extracted_components; + } + } + + if (m_pColorSpace) { + uint8_t color[4]; + const FX_BOOL bTransMask = TransMask(); + if (m_bDefaultDecode) { + m_pColorSpace->TranslateImageLine(color, pSrcPixel, 1, 0, 0, + bTransMask); + } else { + for (FX_DWORD j = 0; j < m_nComponents; ++j) { + FX_FLOAT component_value = + static_cast(extracted_components[j]); + int color_value = static_cast( + (m_pCompData[j].m_DecodeMin + + m_pCompData[j].m_DecodeStep * component_value) * + 255.0f + + 0.5f); + extracted_components[j] = + color_value > 255 ? 255 : (color_value < 0 ? 0 : color_value); + } + m_pColorSpace->TranslateImageLine(color, extracted_components, 1, 0, + 0, bTransMask); + } + argb = FXARGB_MAKE(0xFF, color[2], color[1], color[0]); + } else { + argb = FXARGB_MAKE(0xFF, pSrcPixel[2], pSrcPixel[1], pSrcPixel[0]); + } + if (m_bColorKey) { + int alpha = 0xFF; + if (m_nComponents == 3 && m_bpc == 8) { + alpha = (pSrcPixel[0] < m_pCompData[0].m_ColorKeyMin || + pSrcPixel[0] > m_pCompData[0].m_ColorKeyMax || + pSrcPixel[1] < m_pCompData[1].m_ColorKeyMin || + pSrcPixel[1] > m_pCompData[1].m_ColorKeyMax || + pSrcPixel[2] < m_pCompData[2].m_ColorKeyMin || + pSrcPixel[2] > m_pCompData[2].m_ColorKeyMax) + ? 0xFF + : 0; + } + argb &= 0xFFFFFF; + argb |= alpha << 24; + } + last_src_x = src_x; + last_argb = argb; + } + if (dest_Bpp == 4) { + *reinterpret_cast(pDestPixel) = FXARGB_TODIB(argb); + } else { + *pDestPixel++ = FXARGB_B(argb); + *pDestPixel++ = FXARGB_G(argb); + *pDestPixel = FXARGB_R(argb); + } + } +} + +FX_BOOL CPDF_DIBSource::TransMask() const { + return m_bLoadMask && m_GroupFamily == PDFCS_DEVICECMYK && + m_Family == PDFCS_DEVICECMYK; +} + +void CPDF_DIBSource::SetDownSampleSize(int dest_width, int dest_height) { + if (m_pDecoder) { + m_pDecoder->DownScale(dest_width, dest_height); + m_Width = m_pDecoder->GetWidth(); + m_Height = m_pDecoder->GetHeight(); + } +} + +void CPDF_DIBSource::ClearImageData() { + if (m_pDecoder) { + m_pDecoder->ClearImageData(); + } +} + +CPDF_ImageLoaderHandle::CPDF_ImageLoaderHandle() { + m_pImageLoader = nullptr; + m_pCache = nullptr; + m_pImage = nullptr; +} + +CPDF_ImageLoaderHandle::~CPDF_ImageLoaderHandle() {} + +FX_BOOL CPDF_ImageLoaderHandle::Start(CPDF_ImageLoader* pImageLoader, + const CPDF_ImageObject* pImage, + CPDF_PageRenderCache* pCache, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask, + CPDF_RenderStatus* pRenderStatus, + int32_t nDownsampleWidth, + int32_t nDownsampleHeight) { + m_pImageLoader = pImageLoader; + m_pCache = pCache; + m_pImage = const_cast(pImage); + m_nDownsampleWidth = nDownsampleWidth; + m_nDownsampleHeight = nDownsampleHeight; + FX_BOOL ret; + if (pCache) { + ret = pCache->StartGetCachedBitmap(pImage->m_pImage->GetStream(), bStdCS, + GroupFamily, bLoadMask, pRenderStatus, + m_nDownsampleWidth, m_nDownsampleHeight); + if (!ret) { + m_pImageLoader->m_bCached = TRUE; + m_pImageLoader->m_pBitmap = + pCache->GetCurImageCacheEntry()->DetachBitmap(); + m_pImageLoader->m_pMask = pCache->GetCurImageCacheEntry()->DetachMask(); + m_pImageLoader->m_MatteColor = + pCache->GetCurImageCacheEntry()->m_MatteColor; + } + } else { + ret = pImage->m_pImage->StartLoadDIBSource(pRenderStatus->m_pFormResource, + pRenderStatus->m_pPageResource, + bStdCS, GroupFamily, bLoadMask); + if (!ret) { + m_pImageLoader->m_bCached = FALSE; + m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap(); + m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask(); + m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor; + } + } + return ret; +} + +FX_BOOL CPDF_ImageLoaderHandle::Continue(IFX_Pause* pPause) { + FX_BOOL ret; + if (m_pCache) { + ret = m_pCache->Continue(pPause); + if (!ret) { + m_pImageLoader->m_bCached = TRUE; + m_pImageLoader->m_pBitmap = + m_pCache->GetCurImageCacheEntry()->DetachBitmap(); + m_pImageLoader->m_pMask = m_pCache->GetCurImageCacheEntry()->DetachMask(); + m_pImageLoader->m_MatteColor = + m_pCache->GetCurImageCacheEntry()->m_MatteColor; + } + } else { + ret = m_pImage->m_pImage->Continue(pPause); + if (!ret) { + m_pImageLoader->m_bCached = FALSE; + m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap(); + m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask(); + m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor; + } + } + return ret; +} + +FX_BOOL CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage, + CPDF_PageRenderCache* pCache, + CPDF_ImageLoaderHandle*& LoadHandle, + FX_BOOL bStdCS, + FX_DWORD GroupFamily, + FX_BOOL bLoadMask, + CPDF_RenderStatus* pRenderStatus, + int32_t nDownsampleWidth, + int32_t nDownsampleHeight) { + m_nDownsampleWidth = nDownsampleWidth; + m_nDownsampleHeight = nDownsampleHeight; + LoadHandle = new CPDF_ImageLoaderHandle; + return LoadHandle->Start(this, pImage, pCache, bStdCS, GroupFamily, bLoadMask, + pRenderStatus, m_nDownsampleWidth, + m_nDownsampleHeight); +} + +FX_BOOL CPDF_ImageLoader::Continue(CPDF_ImageLoaderHandle* LoadHandle, + IFX_Pause* pPause) { + return LoadHandle->Continue(pPause); +} + +CPDF_ImageLoader::~CPDF_ImageLoader() { + if (!m_bCached) { + delete m_pBitmap; + delete m_pMask; + } +} diff --git a/core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp b/core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp new file mode 100644 index 0000000000..427abb8e37 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp @@ -0,0 +1,29 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/embedder_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +class FPDFRenderLoadImageEmbeddertest : public EmbedderTest {}; + +TEST_F(FPDFRenderLoadImageEmbeddertest, Bug_554151) { + // Test scanline downsampling with a BitsPerComponent of 4. + // Should not crash. + EXPECT_TRUE(OpenDocument("bug_554151.pdf")); + FPDF_PAGE page = LoadPage(0); + EXPECT_NE(nullptr, page); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} + +TEST_F(FPDFRenderLoadImageEmbeddertest, Bug_557223) { + // Should not crash + EXPECT_TRUE(OpenDocument("bug_557223.pdf")); + FPDF_PAGE page = LoadPage(0); + EXPECT_NE(nullptr, page); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} diff --git a/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp b/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp new file mode 100644 index 0000000000..5ad8db1646 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp @@ -0,0 +1,1207 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_render/render_int.h" + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "core/include/fxge/fx_ge.h" + +#define SHADING_STEPS 256 +static void DrawAxialShading(CFX_DIBitmap* pBitmap, + CFX_Matrix* pObject2Bitmap, + CPDF_Dictionary* pDict, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS, + int alpha) { + ASSERT(pBitmap->GetFormat() == FXDIB_Argb); + CPDF_Array* pCoords = pDict->GetArrayBy("Coords"); + if (!pCoords) { + return; + } + FX_FLOAT start_x = pCoords->GetNumberAt(0); + FX_FLOAT start_y = pCoords->GetNumberAt(1); + FX_FLOAT end_x = pCoords->GetNumberAt(2); + FX_FLOAT end_y = pCoords->GetNumberAt(3); + FX_FLOAT t_min = 0, t_max = 1.0f; + CPDF_Array* pArray = pDict->GetArrayBy("Domain"); + if (pArray) { + t_min = pArray->GetNumberAt(0); + t_max = pArray->GetNumberAt(1); + } + FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE; + pArray = pDict->GetArrayBy("Extend"); + if (pArray) { + bStartExtend = pArray->GetIntegerAt(0); + bEndExtend = pArray->GetIntegerAt(1); + } + int width = pBitmap->GetWidth(); + int height = pBitmap->GetHeight(); + FX_FLOAT x_span = end_x - start_x; + FX_FLOAT y_span = end_y - start_y; + FX_FLOAT axis_len_square = (x_span * x_span) + (y_span * y_span); + CFX_Matrix matrix; + matrix.SetReverse(*pObject2Bitmap); + int total_results = 0; + for (int j = 0; j < nFuncs; j++) { + if (pFuncs[j]) { + total_results += pFuncs[j]->CountOutputs(); + } + } + if (pCS->CountComponents() > total_results) { + total_results = pCS->CountComponents(); + } + CFX_FixedBufGrow result_array(total_results); + FX_FLOAT* pResults = result_array; + FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT)); + FX_DWORD rgb_array[SHADING_STEPS]; + for (int i = 0; i < SHADING_STEPS; i++) { + FX_FLOAT input = (t_max - t_min) * i / SHADING_STEPS + t_min; + int offset = 0; + for (int j = 0; j < nFuncs; j++) { + if (pFuncs[j]) { + int nresults = 0; + if (pFuncs[j]->Call(&input, 1, pResults + offset, nresults)) { + offset += nresults; + } + } + } + FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; + pCS->GetRGB(pResults, R, G, B); + rgb_array[i] = + FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255), + FXSYS_round(G * 255), FXSYS_round(B * 255))); + } + int pitch = pBitmap->GetPitch(); + for (int row = 0; row < height; row++) { + FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); + for (int column = 0; column < width; column++) { + FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; + matrix.Transform(x, y); + FX_FLOAT scale = (((x - start_x) * x_span) + ((y - start_y) * y_span)) / + axis_len_square; + int index = (int32_t)(scale * (SHADING_STEPS - 1)); + if (index < 0) { + if (!bStartExtend) { + continue; + } + index = 0; + } else if (index >= SHADING_STEPS) { + if (!bEndExtend) { + continue; + } + index = SHADING_STEPS - 1; + } + dib_buf[column] = rgb_array[index]; + } + } +} +static void DrawRadialShading(CFX_DIBitmap* pBitmap, + CFX_Matrix* pObject2Bitmap, + CPDF_Dictionary* pDict, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS, + int alpha) { + ASSERT(pBitmap->GetFormat() == FXDIB_Argb); + CPDF_Array* pCoords = pDict->GetArrayBy("Coords"); + if (!pCoords) { + return; + } + FX_FLOAT start_x = pCoords->GetNumberAt(0); + FX_FLOAT start_y = pCoords->GetNumberAt(1); + FX_FLOAT start_r = pCoords->GetNumberAt(2); + FX_FLOAT end_x = pCoords->GetNumberAt(3); + FX_FLOAT end_y = pCoords->GetNumberAt(4); + FX_FLOAT end_r = pCoords->GetNumberAt(5); + CFX_Matrix matrix; + matrix.SetReverse(*pObject2Bitmap); + FX_FLOAT t_min = 0, t_max = 1.0f; + CPDF_Array* pArray = pDict->GetArrayBy("Domain"); + if (pArray) { + t_min = pArray->GetNumberAt(0); + t_max = pArray->GetNumberAt(1); + } + FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE; + pArray = pDict->GetArrayBy("Extend"); + if (pArray) { + bStartExtend = pArray->GetIntegerAt(0); + bEndExtend = pArray->GetIntegerAt(1); + } + int total_results = 0; + for (int j = 0; j < nFuncs; j++) { + if (pFuncs[j]) { + total_results += pFuncs[j]->CountOutputs(); + } + } + if (pCS->CountComponents() > total_results) { + total_results = pCS->CountComponents(); + } + CFX_FixedBufGrow result_array(total_results); + FX_FLOAT* pResults = result_array; + FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT)); + FX_DWORD rgb_array[SHADING_STEPS]; + for (int i = 0; i < SHADING_STEPS; i++) { + FX_FLOAT input = (t_max - t_min) * i / SHADING_STEPS + t_min; + int offset = 0; + for (int j = 0; j < nFuncs; j++) { + if (pFuncs[j]) { + int nresults; + if (pFuncs[j]->Call(&input, 1, pResults + offset, nresults)) { + offset += nresults; + } + } + } + FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; + pCS->GetRGB(pResults, R, G, B); + rgb_array[i] = + FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255), + FXSYS_round(G * 255), FXSYS_round(B * 255))); + } + FX_FLOAT a = ((start_x - end_x) * (start_x - end_x)) + + ((start_y - end_y) * (start_y - end_y)) - + ((start_r - end_r) * (start_r - end_r)); + int width = pBitmap->GetWidth(); + int height = pBitmap->GetHeight(); + int pitch = pBitmap->GetPitch(); + FX_BOOL bDecreasing = FALSE; + if (start_r > end_r) { + int length = (int)FXSYS_sqrt((((start_x - end_x) * (start_x - end_x)) + + ((start_y - end_y) * (start_y - end_y)))); + if (length < start_r - end_r) { + bDecreasing = TRUE; + } + } + for (int row = 0; row < height; row++) { + FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); + for (int column = 0; column < width; column++) { + FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; + matrix.Transform(x, y); + FX_FLOAT b = -2 * (((x - start_x) * (end_x - start_x)) + + ((y - start_y) * (end_y - start_y)) + + (start_r * (end_r - start_r))); + FX_FLOAT c = ((x - start_x) * (x - start_x)) + + ((y - start_y) * (y - start_y)) - (start_r * start_r); + FX_FLOAT s; + if (a == 0) { + s = -c / b; + } else { + FX_FLOAT b2_4ac = (b * b) - 4 * (a * c); + if (b2_4ac < 0) { + continue; + } + FX_FLOAT root = FXSYS_sqrt(b2_4ac); + FX_FLOAT s1, s2; + if (a > 0) { + s1 = (-b - root) / (2 * a); + s2 = (-b + root) / (2 * a); + } else { + s2 = (-b - root) / (2 * a); + s1 = (-b + root) / (2 * a); + } + if (bDecreasing) { + if (s1 >= 0 || bStartExtend) { + s = s1; + } else { + s = s2; + } + } else { + if (s2 <= 1.0f || bEndExtend) { + s = s2; + } else { + s = s1; + } + } + if ((start_r + s * (end_r - start_r)) < 0) { + continue; + } + } + int index = (int32_t)(s * (SHADING_STEPS - 1)); + if (index < 0) { + if (!bStartExtend) { + continue; + } + index = 0; + } + if (index >= SHADING_STEPS) { + if (!bEndExtend) { + continue; + } + index = SHADING_STEPS - 1; + } + dib_buf[column] = rgb_array[index]; + } + } +} +static void DrawFuncShading(CFX_DIBitmap* pBitmap, + CFX_Matrix* pObject2Bitmap, + CPDF_Dictionary* pDict, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS, + int alpha) { + ASSERT(pBitmap->GetFormat() == FXDIB_Argb); + CPDF_Array* pDomain = pDict->GetArrayBy("Domain"); + FX_FLOAT xmin = 0, ymin = 0, xmax = 1.0f, ymax = 1.0f; + if (pDomain) { + xmin = pDomain->GetNumberAt(0); + xmax = pDomain->GetNumberAt(1); + ymin = pDomain->GetNumberAt(2); + ymax = pDomain->GetNumberAt(3); + } + CFX_Matrix mtDomain2Target = pDict->GetMatrixBy("Matrix"); + CFX_Matrix matrix, reverse_matrix; + matrix.SetReverse(*pObject2Bitmap); + reverse_matrix.SetReverse(mtDomain2Target); + matrix.Concat(reverse_matrix); + int width = pBitmap->GetWidth(); + int height = pBitmap->GetHeight(); + int pitch = pBitmap->GetPitch(); + int total_results = 0; + for (int j = 0; j < nFuncs; j++) { + if (pFuncs[j]) { + total_results += pFuncs[j]->CountOutputs(); + } + } + if (pCS->CountComponents() > total_results) { + total_results = pCS->CountComponents(); + } + CFX_FixedBufGrow result_array(total_results); + FX_FLOAT* pResults = result_array; + FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT)); + for (int row = 0; row < height; row++) { + FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); + for (int column = 0; column < width; column++) { + FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; + matrix.Transform(x, y); + if (x < xmin || x > xmax || y < ymin || y > ymax) { + continue; + } + FX_FLOAT input[2]; + int offset = 0; + input[0] = x; + input[1] = y; + for (int j = 0; j < nFuncs; j++) { + if (pFuncs[j]) { + int nresults; + if (pFuncs[j]->Call(input, 2, pResults + offset, nresults)) { + offset += nresults; + } + } + } + FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; + pCS->GetRGB(pResults, R, G, B); + dib_buf[column] = FXARGB_TODIB(FXARGB_MAKE( + alpha, (int32_t)(R * 255), (int32_t)(G * 255), (int32_t)(B * 255))); + } + } +} +FX_BOOL _GetScanlineIntersect(int y, + FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_FLOAT& x) { + if (y1 == y2) { + return FALSE; + } + if (y1 < y2) { + if (y < y1 || y > y2) { + return FALSE; + } + } else { + if (y < y2 || y > y1) { + return FALSE; + } + } + x = x1 + ((x2 - x1) * (y - y1) / (y2 - y1)); + return TRUE; +} +static void DrawGouraud(CFX_DIBitmap* pBitmap, + int alpha, + CPDF_MeshVertex triangle[3]) { + FX_FLOAT min_y = triangle[0].y, max_y = triangle[0].y; + for (int i = 1; i < 3; i++) { + if (min_y > triangle[i].y) { + min_y = triangle[i].y; + } + if (max_y < triangle[i].y) { + max_y = triangle[i].y; + } + } + if (min_y == max_y) { + return; + } + int min_yi = (int)FXSYS_floor(min_y), max_yi = (int)FXSYS_ceil(max_y); + if (min_yi < 0) { + min_yi = 0; + } + if (max_yi >= pBitmap->GetHeight()) { + max_yi = pBitmap->GetHeight() - 1; + } + for (int y = min_yi; y <= max_yi; y++) { + int nIntersects = 0; + FX_FLOAT inter_x[3], r[3], g[3], b[3]; + for (int i = 0; i < 3; i++) { + CPDF_MeshVertex& vertex1 = triangle[i]; + CPDF_MeshVertex& vertex2 = triangle[(i + 1) % 3]; + FX_BOOL bIntersect = _GetScanlineIntersect( + y, vertex1.x, vertex1.y, vertex2.x, vertex2.y, inter_x[nIntersects]); + if (!bIntersect) { + continue; + } + + FX_FLOAT y_dist = (y - vertex1.y) / (vertex2.y - vertex1.y); + r[nIntersects] = vertex1.r + ((vertex2.r - vertex1.r) * y_dist); + g[nIntersects] = vertex1.g + ((vertex2.g - vertex1.g) * y_dist); + b[nIntersects] = vertex1.b + ((vertex2.b - vertex1.b) * y_dist); + nIntersects++; + } + if (nIntersects != 2) { + continue; + } + int min_x, max_x, start_index, end_index; + if (inter_x[0] < inter_x[1]) { + min_x = (int)FXSYS_floor(inter_x[0]); + max_x = (int)FXSYS_ceil(inter_x[1]); + start_index = 0; + end_index = 1; + } else { + min_x = (int)FXSYS_floor(inter_x[1]); + max_x = (int)FXSYS_ceil(inter_x[0]); + start_index = 1; + end_index = 0; + } + int start_x = min_x, end_x = max_x; + if (start_x < 0) { + start_x = 0; + } + if (end_x > pBitmap->GetWidth()) { + end_x = pBitmap->GetWidth(); + } + uint8_t* dib_buf = + pBitmap->GetBuffer() + y * pBitmap->GetPitch() + start_x * 4; + FX_FLOAT r_unit = (r[end_index] - r[start_index]) / (max_x - min_x); + FX_FLOAT g_unit = (g[end_index] - g[start_index]) / (max_x - min_x); + FX_FLOAT b_unit = (b[end_index] - b[start_index]) / (max_x - min_x); + FX_FLOAT R = r[start_index] + (start_x - min_x) * r_unit; + FX_FLOAT G = g[start_index] + (start_x - min_x) * g_unit; + FX_FLOAT B = b[start_index] + (start_x - min_x) * b_unit; + for (int x = start_x; x < end_x; x++) { + R += r_unit; + G += g_unit; + B += b_unit; + FXARGB_SETDIB(dib_buf, + FXARGB_MAKE(alpha, (int32_t)(R * 255), (int32_t)(G * 255), + (int32_t)(B * 255))); + dib_buf += 4; + } + } +} +static void DrawFreeGouraudShading(CFX_DIBitmap* pBitmap, + CFX_Matrix* pObject2Bitmap, + CPDF_Stream* pShadingStream, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS, + int alpha) { + ASSERT(pBitmap->GetFormat() == FXDIB_Argb); + + CPDF_MeshStream stream; + if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS)) + return; + + CPDF_MeshVertex triangle[3]; + FXSYS_memset(triangle, 0, sizeof(triangle)); + + while (!stream.m_BitStream.IsEOF()) { + CPDF_MeshVertex vertex; + FX_DWORD flag = stream.GetVertex(vertex, pObject2Bitmap); + if (flag == 0) { + triangle[0] = vertex; + for (int j = 1; j < 3; j++) { + stream.GetVertex(triangle[j], pObject2Bitmap); + } + } else { + if (flag == 1) { + triangle[0] = triangle[1]; + } + triangle[1] = triangle[2]; + triangle[2] = vertex; + } + DrawGouraud(pBitmap, alpha, triangle); + } +} +static void DrawLatticeGouraudShading(CFX_DIBitmap* pBitmap, + CFX_Matrix* pObject2Bitmap, + CPDF_Stream* pShadingStream, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS, + int alpha) { + ASSERT(pBitmap->GetFormat() == FXDIB_Argb); + + int row_verts = pShadingStream->GetDict()->GetIntegerBy("VerticesPerRow"); + if (row_verts < 2) + return; + + CPDF_MeshStream stream; + if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS)) + return; + + CPDF_MeshVertex* vertex = FX_Alloc2D(CPDF_MeshVertex, row_verts, 2); + if (!stream.GetVertexRow(vertex, row_verts, pObject2Bitmap)) { + FX_Free(vertex); + return; + } + int last_index = 0; + while (1) { + CPDF_MeshVertex* last_row = vertex + last_index * row_verts; + CPDF_MeshVertex* this_row = vertex + (1 - last_index) * row_verts; + if (!stream.GetVertexRow(this_row, row_verts, pObject2Bitmap)) { + FX_Free(vertex); + return; + } + CPDF_MeshVertex triangle[3]; + for (int i = 1; i < row_verts; i++) { + triangle[0] = last_row[i]; + triangle[1] = this_row[i - 1]; + triangle[2] = last_row[i - 1]; + DrawGouraud(pBitmap, alpha, triangle); + triangle[2] = this_row[i]; + DrawGouraud(pBitmap, alpha, triangle); + } + last_index = 1 - last_index; + } + FX_Free(vertex); +} +struct Coon_BezierCoeff { + float a, b, c, d; + void FromPoints(float p0, float p1, float p2, float p3) { + a = -p0 + 3 * p1 - 3 * p2 + p3; + b = 3 * p0 - 6 * p1 + 3 * p2; + c = -3 * p0 + 3 * p1; + d = p0; + } + Coon_BezierCoeff first_half() { + Coon_BezierCoeff result; + result.a = a / 8; + result.b = b / 4; + result.c = c / 2; + result.d = d; + return result; + } + Coon_BezierCoeff second_half() { + Coon_BezierCoeff result; + result.a = a / 8; + result.b = 3 * a / 8 + b / 4; + result.c = 3 * a / 8 + b / 2 + c / 2; + result.d = a / 8 + b / 4 + c / 2 + d; + return result; + } + void GetPoints(float p[4]) { + p[0] = d; + p[1] = c / 3 + p[0]; + p[2] = b / 3 - p[0] + 2 * p[1]; + p[3] = a + p[0] - 3 * p[1] + 3 * p[2]; + } + void GetPointsReverse(float p[4]) { + p[3] = d; + p[2] = c / 3 + p[3]; + p[1] = b / 3 - p[3] + 2 * p[2]; + p[0] = a + p[3] - 3 * p[2] + 3 * p[1]; + } + void BezierInterpol(Coon_BezierCoeff& C1, + Coon_BezierCoeff& C2, + Coon_BezierCoeff& D1, + Coon_BezierCoeff& D2) { + a = (D1.a + D2.a) / 2; + b = (D1.b + D2.b) / 2; + c = (D1.c + D2.c) / 2 - (C1.a / 8 + C1.b / 4 + C1.c / 2) + + (C2.a / 8 + C2.b / 4) + (-C1.d + D2.d) / 2 - (C2.a + C2.b) / 2; + d = C1.a / 8 + C1.b / 4 + C1.c / 2 + C1.d; + } + float Distance() { + float dis = a + b + c; + return dis < 0 ? -dis : dis; + } +}; +struct Coon_Bezier { + Coon_BezierCoeff x, y; + void FromPoints(float x0, + float y0, + float x1, + float y1, + float x2, + float y2, + float x3, + float y3) { + x.FromPoints(x0, x1, x2, x3); + y.FromPoints(y0, y1, y2, y3); + } + Coon_Bezier first_half() { + Coon_Bezier result; + result.x = x.first_half(); + result.y = y.first_half(); + return result; + } + Coon_Bezier second_half() { + Coon_Bezier result; + result.x = x.second_half(); + result.y = y.second_half(); + return result; + } + void BezierInterpol(Coon_Bezier& C1, + Coon_Bezier& C2, + Coon_Bezier& D1, + Coon_Bezier& D2) { + x.BezierInterpol(C1.x, C2.x, D1.x, D2.x); + y.BezierInterpol(C1.y, C2.y, D1.y, D2.y); + } + void GetPoints(FX_PATHPOINT* pPoints) { + float p[4]; + int i; + x.GetPoints(p); + for (i = 0; i < 4; i++) { + pPoints[i].m_PointX = p[i]; + } + y.GetPoints(p); + for (i = 0; i < 4; i++) { + pPoints[i].m_PointY = p[i]; + } + } + void GetPointsReverse(FX_PATHPOINT* pPoints) { + float p[4]; + int i; + x.GetPointsReverse(p); + for (i = 0; i < 4; i++) { + pPoints[i].m_PointX = p[i]; + } + y.GetPointsReverse(p); + for (i = 0; i < 4; i++) { + pPoints[i].m_PointY = p[i]; + } + } + float Distance() { return x.Distance() + y.Distance(); } +}; +static int _BiInterpol(int c0, + int c1, + int c2, + int c3, + int x, + int y, + int x_scale, + int y_scale) { + int x1 = c0 + (c3 - c0) * x / x_scale; + int x2 = c1 + (c2 - c1) * x / x_scale; + return x1 + (x2 - x1) * y / y_scale; +} +struct Coon_Color { + Coon_Color() { FXSYS_memset(comp, 0, sizeof(int) * 3); } + int comp[3]; + void BiInterpol(Coon_Color colors[4], + int x, + int y, + int x_scale, + int y_scale) { + for (int i = 0; i < 3; i++) + comp[i] = + _BiInterpol(colors[0].comp[i], colors[1].comp[i], colors[2].comp[i], + colors[3].comp[i], x, y, x_scale, y_scale); + } + int Distance(Coon_Color& o) { + int max, diff; + max = FXSYS_abs(comp[0] - o.comp[0]); + diff = FXSYS_abs(comp[1] - o.comp[1]); + if (max < diff) { + max = diff; + } + diff = FXSYS_abs(comp[2] - o.comp[2]); + if (max < diff) { + max = diff; + } + return max; + } +}; +struct CPDF_PatchDrawer { + Coon_Color patch_colors[4]; + int max_delta; + CFX_PathData path; + CFX_RenderDevice* pDevice; + int fill_mode; + int alpha; + void Draw(int x_scale, + int y_scale, + int left, + int bottom, + Coon_Bezier C1, + Coon_Bezier C2, + Coon_Bezier D1, + Coon_Bezier D2) { + FX_BOOL bSmall = C1.Distance() < 2 && C2.Distance() < 2 && + D1.Distance() < 2 && D2.Distance() < 2; + Coon_Color div_colors[4]; + int d_bottom, d_left, d_top, d_right; + div_colors[0].BiInterpol(patch_colors, left, bottom, x_scale, y_scale); + if (!bSmall) { + div_colors[1].BiInterpol(patch_colors, left, bottom + 1, x_scale, + y_scale); + div_colors[2].BiInterpol(patch_colors, left + 1, bottom + 1, x_scale, + y_scale); + div_colors[3].BiInterpol(patch_colors, left + 1, bottom, x_scale, + y_scale); + d_bottom = div_colors[3].Distance(div_colors[0]); + d_left = div_colors[1].Distance(div_colors[0]); + d_top = div_colors[1].Distance(div_colors[2]); + d_right = div_colors[2].Distance(div_colors[3]); + } +#define COONCOLOR_THRESHOLD 4 + if (bSmall || + (d_bottom < COONCOLOR_THRESHOLD && d_left < COONCOLOR_THRESHOLD && + d_top < COONCOLOR_THRESHOLD && d_right < COONCOLOR_THRESHOLD)) { + FX_PATHPOINT* pPoints = path.GetPoints(); + C1.GetPoints(pPoints); + D2.GetPoints(pPoints + 3); + C2.GetPointsReverse(pPoints + 6); + D1.GetPointsReverse(pPoints + 9); + int fillFlags = FXFILL_WINDING | FXFILL_FULLCOVER; + if (fill_mode & RENDER_NOPATHSMOOTH) { + fillFlags |= FXFILL_NOPATHSMOOTH; + } + pDevice->DrawPath( + &path, NULL, NULL, + FXARGB_MAKE(alpha, div_colors[0].comp[0], div_colors[0].comp[1], + div_colors[0].comp[2]), + 0, fillFlags); + } else { + if (d_bottom < COONCOLOR_THRESHOLD && d_top < COONCOLOR_THRESHOLD) { + Coon_Bezier m1; + m1.BezierInterpol(D1, D2, C1, C2); + y_scale *= 2; + bottom *= 2; + Draw(x_scale, y_scale, left, bottom, C1, m1, D1.first_half(), + D2.first_half()); + Draw(x_scale, y_scale, left, bottom + 1, m1, C2, D1.second_half(), + D2.second_half()); + } else if (d_left < COONCOLOR_THRESHOLD && + d_right < COONCOLOR_THRESHOLD) { + Coon_Bezier m2; + m2.BezierInterpol(C1, C2, D1, D2); + x_scale *= 2; + left *= 2; + Draw(x_scale, y_scale, left, bottom, C1.first_half(), C2.first_half(), + D1, m2); + Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(), + C2.second_half(), m2, D2); + } else { + Coon_Bezier m1, m2; + m1.BezierInterpol(D1, D2, C1, C2); + m2.BezierInterpol(C1, C2, D1, D2); + Coon_Bezier m1f = m1.first_half(); + Coon_Bezier m1s = m1.second_half(); + Coon_Bezier m2f = m2.first_half(); + Coon_Bezier m2s = m2.second_half(); + x_scale *= 2; + y_scale *= 2; + left *= 2; + bottom *= 2; + Draw(x_scale, y_scale, left, bottom, C1.first_half(), m1f, + D1.first_half(), m2f); + Draw(x_scale, y_scale, left, bottom + 1, m1f, C2.first_half(), + D1.second_half(), m2s); + Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(), m1s, m2f, + D2.first_half()); + Draw(x_scale, y_scale, left + 1, bottom + 1, m1s, C2.second_half(), m2s, + D2.second_half()); + } + } + } +}; + +bool _CheckCoonTensorPara(const CPDF_MeshStream& stream) { + bool bCoorBits = (stream.m_nCoordBits == 1 || stream.m_nCoordBits == 2 || + stream.m_nCoordBits == 4 || stream.m_nCoordBits == 8 || + stream.m_nCoordBits == 12 || stream.m_nCoordBits == 16 || + stream.m_nCoordBits == 24 || stream.m_nCoordBits == 32); + + bool bCompBits = (stream.m_nCompBits == 1 || stream.m_nCompBits == 2 || + stream.m_nCompBits == 4 || stream.m_nCompBits == 8 || + stream.m_nCompBits == 12 || stream.m_nCompBits == 16); + + bool bFlagBits = (stream.m_nFlagBits == 2 || stream.m_nFlagBits == 4 || + stream.m_nFlagBits == 8); + + return bCoorBits && bCompBits && bFlagBits; +} + +static void DrawCoonPatchMeshes(FX_BOOL bTensor, + CFX_DIBitmap* pBitmap, + CFX_Matrix* pObject2Bitmap, + CPDF_Stream* pShadingStream, + CPDF_Function** pFuncs, + int nFuncs, + CPDF_ColorSpace* pCS, + int fill_mode, + int alpha) { + ASSERT(pBitmap->GetFormat() == FXDIB_Argb); + + CFX_FxgeDevice device; + device.Attach(pBitmap); + CPDF_MeshStream stream; + if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS)) + return; + if (!_CheckCoonTensorPara(stream)) + return; + + CPDF_PatchDrawer patch; + patch.alpha = alpha; + patch.pDevice = &device; + patch.fill_mode = fill_mode; + patch.path.SetPointCount(13); + FX_PATHPOINT* pPoints = patch.path.GetPoints(); + pPoints[0].m_Flag = FXPT_MOVETO; + for (int i = 1; i < 13; i++) { + pPoints[i].m_Flag = FXPT_BEZIERTO; + } + CFX_PointF coords[16]; + int point_count = bTensor ? 16 : 12; + while (!stream.m_BitStream.IsEOF()) { + FX_DWORD flag = stream.GetFlag(); + int iStartPoint = 0, iStartColor = 0, i = 0; + if (flag) { + iStartPoint = 4; + iStartColor = 2; + CFX_PointF tempCoords[4]; + for (i = 0; i < 4; i++) { + tempCoords[i] = coords[(flag * 3 + i) % 12]; + } + FXSYS_memcpy(coords, tempCoords, sizeof(tempCoords)); + Coon_Color tempColors[2]; + tempColors[0] = patch.patch_colors[flag]; + tempColors[1] = patch.patch_colors[(flag + 1) % 4]; + FXSYS_memcpy(patch.patch_colors, tempColors, sizeof(Coon_Color) * 2); + } + for (i = iStartPoint; i < point_count; i++) { + stream.GetCoords(coords[i].x, coords[i].y); + pObject2Bitmap->Transform(coords[i].x, coords[i].y); + } + for (i = iStartColor; i < 4; i++) { + FX_FLOAT r = 0.0f, g = 0.0f, b = 0.0f; + stream.GetColor(r, g, b); + patch.patch_colors[i].comp[0] = (int32_t)(r * 255); + patch.patch_colors[i].comp[1] = (int32_t)(g * 255); + patch.patch_colors[i].comp[2] = (int32_t)(b * 255); + } + CFX_FloatRect bbox = CFX_FloatRect::GetBBox(coords, point_count); + if (bbox.right <= 0 || bbox.left >= (FX_FLOAT)pBitmap->GetWidth() || + bbox.top <= 0 || bbox.bottom >= (FX_FLOAT)pBitmap->GetHeight()) { + continue; + } + Coon_Bezier C1, C2, D1, D2; + C1.FromPoints(coords[0].x, coords[0].y, coords[11].x, coords[11].y, + coords[10].x, coords[10].y, coords[9].x, coords[9].y); + C2.FromPoints(coords[3].x, coords[3].y, coords[4].x, coords[4].y, + coords[5].x, coords[5].y, coords[6].x, coords[6].y); + D1.FromPoints(coords[0].x, coords[0].y, coords[1].x, coords[1].y, + coords[2].x, coords[2].y, coords[3].x, coords[3].y); + D2.FromPoints(coords[9].x, coords[9].y, coords[8].x, coords[8].y, + coords[7].x, coords[7].y, coords[6].x, coords[6].y); + patch.Draw(1, 1, 0, 0, C1, C2, D1, D2); + } +} +void CPDF_RenderStatus::DrawShading(CPDF_ShadingPattern* pPattern, + CFX_Matrix* pMatrix, + FX_RECT& clip_rect, + int alpha, + FX_BOOL bAlphaMode) { + CPDF_Function** pFuncs = pPattern->m_pFunctions; + int nFuncs = pPattern->m_nFuncs; + CPDF_Dictionary* pDict = pPattern->m_pShadingObj->GetDict(); + CPDF_ColorSpace* pColorSpace = pPattern->m_pCS; + if (!pColorSpace) { + return; + } + FX_ARGB background = 0; + if (!pPattern->m_bShadingObj && + pPattern->m_pShadingObj->GetDict()->KeyExist("Background")) { + CPDF_Array* pBackColor = + pPattern->m_pShadingObj->GetDict()->GetArrayBy("Background"); + if (pBackColor && + pBackColor->GetCount() >= pColorSpace->CountComponents()) { + CFX_FixedBufGrow comps(pColorSpace->CountComponents()); + for (int i = 0; i < pColorSpace->CountComponents(); i++) { + comps[i] = pBackColor->GetNumberAt(i); + } + FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; + pColorSpace->GetRGB(comps, R, G, B); + background = ArgbEncode(255, (int32_t)(R * 255), (int32_t)(G * 255), + (int32_t)(B * 255)); + } + } + if (pDict->KeyExist("BBox")) { + CFX_FloatRect rect = pDict->GetRectBy("BBox"); + rect.Transform(pMatrix); + clip_rect.Intersect(rect.GetOutterRect()); + } + CPDF_DeviceBuffer buffer; + buffer.Initialize(m_pContext, m_pDevice, &clip_rect, m_pCurObj, 150); + CFX_Matrix FinalMatrix = *pMatrix; + FinalMatrix.Concat(*buffer.GetMatrix()); + CFX_DIBitmap* pBitmap = buffer.GetBitmap(); + if (!pBitmap->GetBuffer()) { + return; + } + pBitmap->Clear(background); + int fill_mode = m_Options.m_Flags; + switch (pPattern->m_ShadingType) { + case kInvalidShading: + case kMaxShading: + return; + case kFunctionBasedShading: + DrawFuncShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs, pColorSpace, + alpha); + break; + case kAxialShading: + DrawAxialShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs, + pColorSpace, alpha); + break; + case kRadialShading: + DrawRadialShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs, + pColorSpace, alpha); + break; + case kFreeFormGouraudTriangleMeshShading: { + DrawFreeGouraudShading(pBitmap, &FinalMatrix, + ToStream(pPattern->m_pShadingObj), pFuncs, nFuncs, + pColorSpace, alpha); + } break; + case kLatticeFormGouraudTriangleMeshShading: { + DrawLatticeGouraudShading(pBitmap, &FinalMatrix, + ToStream(pPattern->m_pShadingObj), pFuncs, + nFuncs, pColorSpace, alpha); + } break; + case kCoonsPatchMeshShading: + case kTensorProductPatchMeshShading: { + DrawCoonPatchMeshes( + pPattern->m_ShadingType == kTensorProductPatchMeshShading, pBitmap, + &FinalMatrix, ToStream(pPattern->m_pShadingObj), pFuncs, nFuncs, + pColorSpace, fill_mode, alpha); + } break; + } + if (bAlphaMode) { + pBitmap->LoadChannel(FXDIB_Red, pBitmap, FXDIB_Alpha); + } + if (m_Options.m_ColorMode == RENDER_COLOR_GRAY) { + pBitmap->ConvertColorScale(m_Options.m_ForeColor, m_Options.m_BackColor); + } + buffer.OutputToDevice(); +} +void CPDF_RenderStatus::DrawShadingPattern(CPDF_ShadingPattern* pattern, + const CPDF_PageObject* pPageObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStroke) { + if (!pattern->Load()) { + return; + } + m_pDevice->SaveState(); + if (pPageObj->IsPath()) { + if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) { + m_pDevice->RestoreState(); + return; + } + } else if (pPageObj->IsImage()) { + m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device)); + } else { + return; + } + FX_RECT rect; + if (GetObjectClippedRect(pPageObj, pObj2Device, FALSE, rect)) { + m_pDevice->RestoreState(); + return; + } + CFX_Matrix matrix = pattern->m_Pattern2Form; + matrix.Concat(*pObj2Device); + GetScaledMatrix(matrix); + int alpha = pPageObj->m_GeneralState.GetAlpha(bStroke); + DrawShading(pattern, &matrix, rect, alpha, + m_Options.m_ColorMode == RENDER_COLOR_ALPHA); + m_pDevice->RestoreState(); +} +FX_BOOL CPDF_RenderStatus::ProcessShading(const CPDF_ShadingObject* pShadingObj, + const CFX_Matrix* pObj2Device) { + FX_RECT rect = pShadingObj->GetBBox(pObj2Device); + FX_RECT clip_box = m_pDevice->GetClipBox(); + rect.Intersect(clip_box); + if (rect.IsEmpty()) { + return TRUE; + } + CFX_Matrix matrix = pShadingObj->m_Matrix; + matrix.Concat(*pObj2Device); + DrawShading(pShadingObj->m_pShading, &matrix, rect, + pShadingObj->m_GeneralState.GetAlpha(FALSE), + m_Options.m_ColorMode == RENDER_COLOR_ALPHA); + return TRUE; +} +static CFX_DIBitmap* DrawPatternBitmap(CPDF_Document* pDoc, + CPDF_PageRenderCache* pCache, + CPDF_TilingPattern* pPattern, + const CFX_Matrix* pObject2Device, + int width, + int height, + int flags) { + CFX_DIBitmap* pBitmap = new CFX_DIBitmap; + if (!pBitmap->Create(width, height, + pPattern->m_bColored ? FXDIB_Argb : FXDIB_8bppMask)) { + delete pBitmap; + return NULL; + } + CFX_FxgeDevice bitmap_device; + bitmap_device.Attach(pBitmap); + pBitmap->Clear(0); + CFX_FloatRect cell_bbox = pPattern->m_BBox; + pPattern->m_Pattern2Form.TransformRect(cell_bbox); + pObject2Device->TransformRect(cell_bbox); + CFX_FloatRect bitmap_rect(0.0f, 0.0f, (FX_FLOAT)width, (FX_FLOAT)height); + CFX_Matrix mtAdjust; + mtAdjust.MatchRect(bitmap_rect, cell_bbox); + CFX_Matrix mtPattern2Bitmap = *pObject2Device; + mtPattern2Bitmap.Concat(mtAdjust); + CPDF_RenderOptions options; + if (!pPattern->m_bColored) { + options.m_ColorMode = RENDER_COLOR_ALPHA; + } + flags |= RENDER_FORCE_HALFTONE; + options.m_Flags = flags; + CPDF_RenderContext context(pDoc, pCache); + context.AppendLayer(pPattern->m_pForm, &mtPattern2Bitmap); + context.Render(&bitmap_device, &options, nullptr); + return pBitmap; +} +void CPDF_RenderStatus::DrawTilingPattern(CPDF_TilingPattern* pPattern, + const CPDF_PageObject* pPageObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStroke) { + if (!pPattern->Load()) { + return; + } + m_pDevice->SaveState(); + if (pPageObj->IsPath()) { + if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) { + m_pDevice->RestoreState(); + return; + } + } else if (pPageObj->IsImage()) { + m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device)); + } else { + return; + } + FX_RECT clip_box = m_pDevice->GetClipBox(); + if (clip_box.IsEmpty()) { + m_pDevice->RestoreState(); + return; + } + CFX_Matrix dCTM = m_pDevice->GetCTM(); + FX_FLOAT sa = FXSYS_fabs(dCTM.a); + FX_FLOAT sd = FXSYS_fabs(dCTM.d); + clip_box.right = clip_box.left + (int32_t)FXSYS_ceil(clip_box.Width() * sa); + clip_box.bottom = clip_box.top + (int32_t)FXSYS_ceil(clip_box.Height() * sd); + CFX_Matrix mtPattern2Device = pPattern->m_Pattern2Form; + mtPattern2Device.Concat(*pObj2Device); + GetScaledMatrix(mtPattern2Device); + FX_BOOL bAligned = FALSE; + if (pPattern->m_BBox.left == 0 && pPattern->m_BBox.bottom == 0 && + pPattern->m_BBox.right == pPattern->m_XStep && + pPattern->m_BBox.top == pPattern->m_YStep && + (mtPattern2Device.IsScaled() || mtPattern2Device.Is90Rotated())) { + bAligned = TRUE; + } + CFX_FloatRect cell_bbox = pPattern->m_BBox; + mtPattern2Device.TransformRect(cell_bbox); + int width = (int)FXSYS_ceil(cell_bbox.Width()); + int height = (int)FXSYS_ceil(cell_bbox.Height()); + if (width == 0) { + width = 1; + } + if (height == 0) { + height = 1; + } + int min_col, max_col, min_row, max_row; + CFX_Matrix mtDevice2Pattern; + mtDevice2Pattern.SetReverse(mtPattern2Device); + CFX_FloatRect clip_box_p(clip_box); + clip_box_p.Transform(&mtDevice2Pattern); + + min_col = (int)FXSYS_ceil((clip_box_p.left - pPattern->m_BBox.right) / + pPattern->m_XStep); + max_col = (int)FXSYS_floor((clip_box_p.right - pPattern->m_BBox.left) / + pPattern->m_XStep); + min_row = (int)FXSYS_ceil((clip_box_p.bottom - pPattern->m_BBox.top) / + pPattern->m_YStep); + max_row = (int)FXSYS_floor((clip_box_p.top - pPattern->m_BBox.bottom) / + pPattern->m_YStep); + + if (width > clip_box.Width() || height > clip_box.Height() || + width * height > clip_box.Width() * clip_box.Height()) { + CPDF_GraphicStates* pStates = NULL; + if (!pPattern->m_bColored) { + pStates = CloneObjStates(pPageObj, bStroke); + } + CPDF_Dictionary* pFormResource = NULL; + if (pPattern->m_pForm->m_pFormDict) { + pFormResource = pPattern->m_pForm->m_pFormDict->GetDictBy("Resources"); + } + for (int col = min_col; col <= max_col; col++) + for (int row = min_row; row <= max_row; row++) { + FX_FLOAT orig_x, orig_y; + orig_x = col * pPattern->m_XStep; + orig_y = row * pPattern->m_YStep; + mtPattern2Device.Transform(orig_x, orig_y); + CFX_Matrix matrix = *pObj2Device; + matrix.Translate(orig_x - mtPattern2Device.e, + orig_y - mtPattern2Device.f); + m_pDevice->SaveState(); + CPDF_RenderStatus status; + status.Initialize(m_pContext, m_pDevice, NULL, NULL, this, pStates, + &m_Options, pPattern->m_pForm->m_Transparency, + m_bDropObjects, pFormResource); + status.RenderObjectList(pPattern->m_pForm, &matrix); + m_pDevice->RestoreState(); + } + m_pDevice->RestoreState(); + delete pStates; + return; + } + if (bAligned) { + int orig_x = FXSYS_round(mtPattern2Device.e); + int orig_y = FXSYS_round(mtPattern2Device.f); + min_col = (clip_box.left - orig_x) / width; + if (clip_box.left < orig_x) { + min_col--; + } + max_col = (clip_box.right - orig_x) / width; + if (clip_box.right <= orig_x) { + max_col--; + } + min_row = (clip_box.top - orig_y) / height; + if (clip_box.top < orig_y) { + min_row--; + } + max_row = (clip_box.bottom - orig_y) / height; + if (clip_box.bottom <= orig_y) { + max_row--; + } + } + FX_FLOAT left_offset = cell_bbox.left - mtPattern2Device.e; + FX_FLOAT top_offset = cell_bbox.bottom - mtPattern2Device.f; + CFX_DIBitmap* pPatternBitmap = NULL; + if (width * height < 16) { + CFX_DIBitmap* pEnlargedBitmap = + DrawPatternBitmap(m_pContext->GetDocument(), m_pContext->GetPageCache(), + pPattern, pObj2Device, 8, 8, m_Options.m_Flags); + pPatternBitmap = pEnlargedBitmap->StretchTo(width, height); + delete pEnlargedBitmap; + } else { + pPatternBitmap = DrawPatternBitmap( + m_pContext->GetDocument(), m_pContext->GetPageCache(), pPattern, + pObj2Device, width, height, m_Options.m_Flags); + } + if (!pPatternBitmap) { + m_pDevice->RestoreState(); + return; + } + if (m_Options.m_ColorMode == RENDER_COLOR_GRAY) { + pPatternBitmap->ConvertColorScale(m_Options.m_ForeColor, + m_Options.m_BackColor); + } + FX_ARGB fill_argb = GetFillArgb(pPageObj); + int clip_width = clip_box.right - clip_box.left; + int clip_height = clip_box.bottom - clip_box.top; + CFX_DIBitmap screen; + if (!screen.Create(clip_width, clip_height, FXDIB_Argb)) { + return; + } + screen.Clear(0); + FX_DWORD* src_buf = (FX_DWORD*)pPatternBitmap->GetBuffer(); + for (int col = min_col; col <= max_col; col++) { + for (int row = min_row; row <= max_row; row++) { + int start_x, start_y; + if (bAligned) { + start_x = FXSYS_round(mtPattern2Device.e) + col * width - clip_box.left; + start_y = FXSYS_round(mtPattern2Device.f) + row * height - clip_box.top; + } else { + FX_FLOAT orig_x = col * pPattern->m_XStep; + FX_FLOAT orig_y = row * pPattern->m_YStep; + mtPattern2Device.Transform(orig_x, orig_y); + start_x = FXSYS_round(orig_x + left_offset) - clip_box.left; + start_y = FXSYS_round(orig_y + top_offset) - clip_box.top; + } + if (width == 1 && height == 1) { + if (start_x < 0 || start_x >= clip_box.Width() || start_y < 0 || + start_y >= clip_box.Height()) { + continue; + } + FX_DWORD* dest_buf = + (FX_DWORD*)(screen.GetBuffer() + screen.GetPitch() * start_y + + start_x * 4); + if (pPattern->m_bColored) { + *dest_buf = *src_buf; + } else { + *dest_buf = (*(uint8_t*)src_buf << 24) | (fill_argb & 0xffffff); + } + } else { + if (pPattern->m_bColored) { + screen.CompositeBitmap(start_x, start_y, width, height, + pPatternBitmap, 0, 0); + } else { + screen.CompositeMask(start_x, start_y, width, height, pPatternBitmap, + fill_argb, 0, 0); + } + } + } + } + CompositeDIBitmap(&screen, clip_box.left, clip_box.top, 0, 255, + FXDIB_BLEND_NORMAL, FALSE); + m_pDevice->RestoreState(); + delete pPatternBitmap; +} +void CPDF_RenderStatus::DrawPathWithPattern(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device, + CPDF_Color* pColor, + FX_BOOL bStroke) { + CPDF_Pattern* pattern = pColor->GetPattern(); + if (!pattern) { + return; + } + if (pattern->m_PatternType == CPDF_Pattern::TILING) { + DrawTilingPattern(static_cast(pattern), pPathObj, + pObj2Device, bStroke); + } else { + DrawShadingPattern(static_cast(pattern), pPathObj, + pObj2Device, bStroke); + } +} +void CPDF_RenderStatus::ProcessPathPattern(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device, + int& filltype, + FX_BOOL& bStroke) { + if (filltype) { + CPDF_Color& FillColor = *pPathObj->m_ColorState.GetFillColor(); + if (FillColor.m_pCS && FillColor.m_pCS->GetFamily() == PDFCS_PATTERN) { + DrawPathWithPattern(pPathObj, pObj2Device, &FillColor, FALSE); + filltype = 0; + } + } + if (bStroke) { + CPDF_Color& StrokeColor = *pPathObj->m_ColorState.GetStrokeColor(); + if (StrokeColor.m_pCS && StrokeColor.m_pCS->GetFamily() == PDFCS_PATTERN) { + DrawPathWithPattern(pPathObj, pObj2Device, &StrokeColor, TRUE); + bStroke = FALSE; + } + } +} diff --git a/core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp b/core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp new file mode 100644 index 0000000000..176c923372 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp @@ -0,0 +1,17 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/embedder_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +class FPDFRenderPatternEmbeddertest : public EmbedderTest {}; + +TEST_F(FPDFRenderPatternEmbeddertest, LoadError_547706) { + // Test shading where object is a dictionary instead of a stream. + EXPECT_TRUE(OpenDocument("bug_547706.pdf")); + FPDF_PAGE page = LoadPage(0); + FPDF_BITMAP bitmap = RenderPage(page); + FPDFBitmap_Destroy(bitmap); + UnloadPage(page); +} diff --git a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp new file mode 100644 index 0000000000..24b77ed368 --- /dev/null +++ b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp @@ -0,0 +1,787 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfapi/fpdf_render/render_int.h" + +#include "core/fpdfapi/fpdf_page/pageint.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_render.h" +#include "core/include/fxge/fx_ge.h" + +CPDF_Type3Cache::~CPDF_Type3Cache() { + for (const auto& pair : m_SizeMap) { + delete pair.second; + } + m_SizeMap.clear(); +} +CFX_GlyphBitmap* CPDF_Type3Cache::LoadGlyph(FX_DWORD charcode, + const CFX_Matrix* pMatrix, + FX_FLOAT retinaScaleX, + FX_FLOAT retinaScaleY) { + _CPDF_UniqueKeyGen keygen; + keygen.Generate( + 4, FXSYS_round(pMatrix->a * 10000), FXSYS_round(pMatrix->b * 10000), + FXSYS_round(pMatrix->c * 10000), FXSYS_round(pMatrix->d * 10000)); + CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen); + CPDF_Type3Glyphs* pSizeCache; + auto it = m_SizeMap.find(FaceGlyphsKey); + if (it == m_SizeMap.end()) { + pSizeCache = new CPDF_Type3Glyphs; + m_SizeMap[FaceGlyphsKey] = pSizeCache; + } else { + pSizeCache = it->second; + } + auto it2 = pSizeCache->m_GlyphMap.find(charcode); + if (it2 != pSizeCache->m_GlyphMap.end()) + return it2->second; + + CFX_GlyphBitmap* pGlyphBitmap = + RenderGlyph(pSizeCache, charcode, pMatrix, retinaScaleX, retinaScaleY); + pSizeCache->m_GlyphMap[charcode] = pGlyphBitmap; + return pGlyphBitmap; +} +CPDF_Type3Glyphs::~CPDF_Type3Glyphs() { + for (const auto& pair : m_GlyphMap) + delete pair.second; +} +static int _AdjustBlue(FX_FLOAT pos, int& count, int blues[]) { + FX_FLOAT min_distance = 1000000.0f * 1.0f; + int closest_pos = -1; + for (int i = 0; i < count; i++) { + FX_FLOAT distance = (FX_FLOAT)FXSYS_fabs(pos - (FX_FLOAT)blues[i]); + if (distance < 1.0f * 80.0f / 100.0f && distance < min_distance) { + min_distance = distance; + closest_pos = i; + } + } + if (closest_pos >= 0) { + return blues[closest_pos]; + } + int new_pos = FXSYS_round(pos); + if (count == TYPE3_MAX_BLUES) { + return new_pos; + } + blues[count++] = new_pos; + return new_pos; +} +void CPDF_Type3Glyphs::AdjustBlue(FX_FLOAT top, + FX_FLOAT bottom, + int& top_line, + int& bottom_line) { + top_line = _AdjustBlue(top, m_TopBlueCount, m_TopBlue); + bottom_line = _AdjustBlue(bottom, m_BottomBlueCount, m_BottomBlue); +} + +static FX_BOOL _IsScanLine1bpp(uint8_t* pBuf, int width) { + int size = width / 8; + for (int i = 0; i < size; i++) { + if (pBuf[i]) + return TRUE; + } + return (width % 8) && (pBuf[width / 8] & (0xff << (8 - width % 8))); +} + +static FX_BOOL _IsScanLine8bpp(uint8_t* pBuf, int width) { + for (int i = 0; i < width; i++) { + if (pBuf[i] > 0x40) + return TRUE; + } + return FALSE; +} + +static int _DetectFirstLastScan(const CFX_DIBitmap* pBitmap, FX_BOOL bFirst) { + int height = pBitmap->GetHeight(), pitch = pBitmap->GetPitch(), + width = pBitmap->GetWidth(); + int bpp = pBitmap->GetBPP(); + if (bpp > 8) { + width *= bpp / 8; + } + uint8_t* pBuf = pBitmap->GetBuffer(); + int line = bFirst ? 0 : height - 1; + int line_step = bFirst ? 1 : -1; + int line_end = bFirst ? height : -1; + while (line != line_end) { + if (bpp == 1) { + if (_IsScanLine1bpp(pBuf + line * pitch, width)) { + return line; + } + } else { + if (_IsScanLine8bpp(pBuf + line * pitch, width)) { + return line; + } + } + line += line_step; + } + return -1; +} +CFX_GlyphBitmap* CPDF_Type3Cache::RenderGlyph(CPDF_Type3Glyphs* pSize, + FX_DWORD charcode, + const CFX_Matrix* pMatrix, + FX_FLOAT retinaScaleX, + FX_FLOAT retinaScaleY) { + const CPDF_Type3Char* pChar = m_pFont->LoadChar(charcode); + if (!pChar || !pChar->m_pBitmap) + return nullptr; + + CFX_DIBitmap* pBitmap = pChar->m_pBitmap; + CFX_Matrix image_matrix, text_matrix; + image_matrix = pChar->m_ImageMatrix; + text_matrix.Set(pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d, 0, 0); + image_matrix.Concat(text_matrix); + CFX_DIBitmap* pResBitmap = NULL; + int left, top; + if (FXSYS_fabs(image_matrix.b) < FXSYS_fabs(image_matrix.a) / 100 && + FXSYS_fabs(image_matrix.c) < FXSYS_fabs(image_matrix.d) / 100) { + int top_line, bottom_line; + top_line = _DetectFirstLastScan(pBitmap, TRUE); + bottom_line = _DetectFirstLastScan(pBitmap, FALSE); + if (top_line == 0 && bottom_line == pBitmap->GetHeight() - 1) { + FX_FLOAT top_y = image_matrix.d + image_matrix.f; + FX_FLOAT bottom_y = image_matrix.f; + FX_BOOL bFlipped = top_y > bottom_y; + if (bFlipped) { + FX_FLOAT temp = top_y; + top_y = bottom_y; + bottom_y = temp; + } + pSize->AdjustBlue(top_y, bottom_y, top_line, bottom_line); + pResBitmap = pBitmap->StretchTo( + (int)(FXSYS_round(image_matrix.a) * retinaScaleX), + (int)((bFlipped ? top_line - bottom_line : bottom_line - top_line) * + retinaScaleY)); + top = top_line; + if (image_matrix.a < 0) { + image_matrix.Scale(retinaScaleX, retinaScaleY); + left = FXSYS_round(image_matrix.e + image_matrix.a); + } else { + left = FXSYS_round(image_matrix.e); + } + } else { + } + } + if (!pResBitmap) { + image_matrix.Scale(retinaScaleX, retinaScaleY); + pResBitmap = pBitmap->TransformTo(&image_matrix, left, top); + } + if (!pResBitmap) { + return NULL; + } + CFX_GlyphBitmap* pGlyph = new CFX_GlyphBitmap; + pGlyph->m_Left = left; + pGlyph->m_Top = -top; + pGlyph->m_Bitmap.TakeOver(pResBitmap); + delete pResBitmap; + return pGlyph; +} +void _CPDF_UniqueKeyGen::Generate(int count, ...) { + va_list argList; + va_start(argList, count); + for (int i = 0; i < count; i++) { + int p = va_arg(argList, int); + ((FX_DWORD*)m_Key)[i] = p; + } + va_end(argList); + m_KeyLen = count * sizeof(FX_DWORD); +} +FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj, + const CFX_Matrix* pObj2Device, + CFX_PathData* pClippingPath) { + if (textobj->m_nChars == 0) { + return TRUE; + } + int text_render_mode = textobj->m_TextState.GetObject()->m_TextMode; + if (text_render_mode == 3) { + return TRUE; + } + CPDF_Font* pFont = textobj->m_TextState.GetFont(); + if (pFont->IsType3Font()) { + return ProcessType3Text(textobj, pObj2Device); + } + FX_BOOL bFill = FALSE, bStroke = FALSE, bClip = FALSE; + if (pClippingPath) { + bClip = TRUE; + } else { + switch (text_render_mode) { + case 0: + case 4: + bFill = TRUE; + break; + case 1: + case 5: + if (!pFont->GetFace() && + !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) { + bFill = TRUE; + } else { + bStroke = TRUE; + } + break; + case 2: + case 6: + if (!pFont->GetFace() && + !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) { + bFill = TRUE; + } else { + bFill = bStroke = TRUE; + } + break; + case 3: + case 7: + return TRUE; + default: + bFill = TRUE; + } + } + FX_ARGB stroke_argb = 0, fill_argb = 0; + FX_BOOL bPattern = FALSE; + if (bStroke) { + if (textobj->m_ColorState.GetStrokeColor()->IsPattern()) { + bPattern = TRUE; + } else { + stroke_argb = GetStrokeArgb(textobj); + } + } + if (bFill) { + if (textobj->m_ColorState.GetFillColor()->IsPattern()) { + bPattern = TRUE; + } else { + fill_argb = GetFillArgb(textobj); + } + } + CFX_Matrix text_matrix; + textobj->GetTextMatrix(&text_matrix); + if (IsAvailableMatrix(text_matrix) == FALSE) { + return TRUE; + } + FX_FLOAT font_size = textobj->m_TextState.GetFontSize(); + if (bPattern) { + DrawTextPathWithPattern(textobj, pObj2Device, pFont, font_size, + &text_matrix, bFill, bStroke); + return TRUE; + } + if (bClip || bStroke) { + const CFX_Matrix* pDeviceMatrix = pObj2Device; + CFX_Matrix device_matrix; + if (bStroke) { + const FX_FLOAT* pCTM = textobj->m_TextState.GetObject()->m_CTM; + if (pCTM[0] != 1.0f || pCTM[3] != 1.0f) { + CFX_Matrix ctm(pCTM[0], pCTM[1], pCTM[2], pCTM[3], 0, 0); + text_matrix.ConcatInverse(ctm); + device_matrix.Copy(ctm); + device_matrix.Concat(*pObj2Device); + pDeviceMatrix = &device_matrix; + } + } + int flag = 0; + if (bStroke && bFill) { + flag |= FX_FILL_STROKE; + flag |= FX_STROKE_TEXT_MODE; + } + const CPDF_GeneralStateData* pGeneralData = + ((CPDF_PageObject*)textobj)->m_GeneralState; + if (pGeneralData && pGeneralData->m_StrokeAdjust) { + flag |= FX_STROKE_ADJUST; + } + if (m_Options.m_Flags & RENDER_NOTEXTSMOOTH) { + flag |= FXFILL_NOPATHSMOOTH; + } + return CPDF_TextRenderer::DrawTextPath( + m_pDevice, textobj->m_nChars, textobj->m_pCharCodes, + textobj->m_pCharPos, pFont, font_size, &text_matrix, pDeviceMatrix, + textobj->m_GraphState, fill_argb, stroke_argb, pClippingPath, flag); + } + text_matrix.Concat(*pObj2Device); + return CPDF_TextRenderer::DrawNormalText( + m_pDevice, textobj->m_nChars, textobj->m_pCharCodes, textobj->m_pCharPos, + pFont, font_size, &text_matrix, fill_argb, &m_Options); +} +CPDF_Type3Cache* CPDF_RenderStatus::GetCachedType3(CPDF_Type3Font* pFont) { + if (!pFont->m_pDocument) { + return NULL; + } + pFont->m_pDocument->GetPageData()->GetFont(pFont->GetFontDict(), FALSE); + return pFont->m_pDocument->GetRenderData()->GetCachedType3(pFont); +} +static void ReleaseCachedType3(CPDF_Type3Font* pFont) { + if (!pFont->m_pDocument) { + return; + } + pFont->m_pDocument->GetRenderData()->ReleaseCachedType3(pFont); + pFont->m_pDocument->GetPageData()->ReleaseFont(pFont->GetFontDict()); +} +FX_BOOL CPDF_Type3Char::LoadBitmap(CPDF_RenderContext* pContext) { + if (m_pBitmap || !m_pForm) { + return TRUE; + } + if (m_pForm->GetPageObjectList()->size() == 1 && !m_bColored) { + auto& pPageObj = m_pForm->GetPageObjectList()->front(); + if (pPageObj->IsImage()) { + m_ImageMatrix = pPageObj->AsImage()->m_Matrix; + const CFX_DIBSource* pSource = + pPageObj->AsImage()->m_pImage->LoadDIBSource(); + if (pSource) { + m_pBitmap = pSource->Clone(); + delete pSource; + } + delete m_pForm; + m_pForm = NULL; + return TRUE; + } + } + return FALSE; +} +class CPDF_RefType3Cache { + public: + CPDF_RefType3Cache(CPDF_Type3Font* pType3Font) { + m_dwCount = 0; + m_pType3Font = pType3Font; + } + ~CPDF_RefType3Cache() { + while (m_dwCount--) { + ReleaseCachedType3(m_pType3Font); + } + } + FX_DWORD m_dwCount; + CPDF_Type3Font* m_pType3Font; +}; +FX_BOOL CPDF_RenderStatus::ProcessType3Text(const CPDF_TextObject* textobj, + const CFX_Matrix* pObj2Device) { + CPDF_Type3Font* pType3Font = textobj->m_TextState.GetFont()->AsType3Font(); + for (int j = 0; j < m_Type3FontCache.GetSize(); j++) { + if (m_Type3FontCache.GetAt(j) == pType3Font) + return TRUE; + } + CFX_Matrix dCTM = m_pDevice->GetCTM(); + FX_FLOAT sa = FXSYS_fabs(dCTM.a); + FX_FLOAT sd = FXSYS_fabs(dCTM.d); + CFX_Matrix text_matrix; + textobj->GetTextMatrix(&text_matrix); + CFX_Matrix char_matrix = pType3Font->GetFontMatrix(); + FX_FLOAT font_size = textobj->m_TextState.GetFontSize(); + char_matrix.Scale(font_size, font_size); + FX_ARGB fill_argb = GetFillArgb(textobj, TRUE); + int fill_alpha = FXARGB_A(fill_argb); + int device_class = m_pDevice->GetDeviceClass(); + FXTEXT_GLYPHPOS* pGlyphAndPos = NULL; + if (device_class == FXDC_DISPLAY) { + pGlyphAndPos = FX_Alloc(FXTEXT_GLYPHPOS, textobj->m_nChars); + } else if (fill_alpha < 255) { + return FALSE; + } + CPDF_RefType3Cache refTypeCache(pType3Font); + FX_DWORD* pChars = textobj->m_pCharCodes; + if (textobj->m_nChars == 1) { + pChars = (FX_DWORD*)(&textobj->m_pCharCodes); + } + for (int iChar = 0; iChar < textobj->m_nChars; iChar++) { + FX_DWORD charcode = pChars[iChar]; + if (charcode == (FX_DWORD)-1) { + continue; + } + CPDF_Type3Char* pType3Char = pType3Font->LoadChar(charcode); + if (!pType3Char) { + continue; + } + CFX_Matrix matrix = char_matrix; + matrix.e += iChar ? textobj->m_pCharPos[iChar - 1] : 0; + matrix.Concat(text_matrix); + matrix.Concat(*pObj2Device); + if (!pType3Char->LoadBitmap(m_pContext)) { + if (pGlyphAndPos) { + for (int i = 0; i < iChar; i++) { + FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[i]; + if (!glyph.m_pGlyph) { + continue; + } + m_pDevice->SetBitMask(&glyph.m_pGlyph->m_Bitmap, + glyph.m_OriginX + glyph.m_pGlyph->m_Left, + glyph.m_OriginY - glyph.m_pGlyph->m_Top, + fill_argb); + } + FX_Free(pGlyphAndPos); + pGlyphAndPos = NULL; + } + CPDF_GraphicStates* pStates = CloneObjStates(textobj, FALSE); + CPDF_RenderOptions Options = m_Options; + Options.m_Flags |= RENDER_FORCE_HALFTONE | RENDER_RECT_AA; + Options.m_Flags &= ~RENDER_FORCE_DOWNSAMPLE; + CPDF_Dictionary* pFormResource = NULL; + if (pType3Char->m_pForm && pType3Char->m_pForm->m_pFormDict) { + pFormResource = + pType3Char->m_pForm->m_pFormDict->GetDictBy("Resources"); + } + if (fill_alpha == 255) { + CPDF_RenderStatus status; + status.Initialize(m_pContext, m_pDevice, NULL, NULL, this, pStates, + &Options, pType3Char->m_pForm->m_Transparency, + m_bDropObjects, pFormResource, FALSE, pType3Char, + fill_argb); + status.m_Type3FontCache.Append(m_Type3FontCache); + status.m_Type3FontCache.Add(pType3Font); + m_pDevice->SaveState(); + status.RenderObjectList(pType3Char->m_pForm, &matrix); + m_pDevice->RestoreState(); + } else { + CFX_FloatRect rect_f = pType3Char->m_pForm->CalcBoundingBox(); + rect_f.Transform(&matrix); + FX_RECT rect = rect_f.GetOutterRect(); + CFX_FxgeDevice bitmap_device; + if (!bitmap_device.Create((int)(rect.Width() * sa), + (int)(rect.Height() * sd), FXDIB_Argb)) { + return TRUE; + } + bitmap_device.GetBitmap()->Clear(0); + CPDF_RenderStatus status; + status.Initialize(m_pContext, &bitmap_device, NULL, NULL, this, pStates, + &Options, pType3Char->m_pForm->m_Transparency, + m_bDropObjects, pFormResource, FALSE, pType3Char, + fill_argb); + status.m_Type3FontCache.Append(m_Type3FontCache); + status.m_Type3FontCache.Add(pType3Font); + matrix.TranslateI(-rect.left, -rect.top); + matrix.Scale(sa, sd); + status.RenderObjectList(pType3Char->m_pForm, &matrix); + m_pDevice->SetDIBits(bitmap_device.GetBitmap(), rect.left, rect.top); + } + delete pStates; + } else if (pType3Char->m_pBitmap) { + if (device_class == FXDC_DISPLAY) { + CPDF_Type3Cache* pCache = GetCachedType3(pType3Font); + refTypeCache.m_dwCount++; + CFX_GlyphBitmap* pBitmap = pCache->LoadGlyph(charcode, &matrix, sa, sd); + if (!pBitmap) { + continue; + } + int origin_x = FXSYS_round(matrix.e); + int origin_y = FXSYS_round(matrix.f); + if (pGlyphAndPos) { + pGlyphAndPos[iChar].m_pGlyph = pBitmap; + pGlyphAndPos[iChar].m_OriginX = origin_x; + pGlyphAndPos[iChar].m_OriginY = origin_y; + } else { + m_pDevice->SetBitMask(&pBitmap->m_Bitmap, origin_x + pBitmap->m_Left, + origin_y - pBitmap->m_Top, fill_argb); + } + } else { + CFX_Matrix image_matrix = pType3Char->m_ImageMatrix; + image_matrix.Concat(matrix); + CPDF_ImageRenderer renderer; + if (renderer.Start(this, pType3Char->m_pBitmap, fill_argb, 255, + &image_matrix, 0, FALSE)) { + renderer.Continue(NULL); + } + if (!renderer.m_Result) { + return FALSE; + } + } + } + } + if (pGlyphAndPos) { + FX_RECT rect = + FXGE_GetGlyphsBBox(pGlyphAndPos, textobj->m_nChars, 0, sa, sd); + CFX_DIBitmap bitmap; + if (!bitmap.Create((int)(rect.Width() * sa), (int)(rect.Height() * sd), + FXDIB_8bppMask)) { + FX_Free(pGlyphAndPos); + return TRUE; + } + bitmap.Clear(0); + for (int iChar = 0; iChar < textobj->m_nChars; iChar++) { + FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; + if (!glyph.m_pGlyph) { + continue; + } + bitmap.TransferBitmap( + (int)((glyph.m_OriginX + glyph.m_pGlyph->m_Left - rect.left) * sa), + (int)((glyph.m_OriginY - glyph.m_pGlyph->m_Top - rect.top) * sd), + glyph.m_pGlyph->m_Bitmap.GetWidth(), + glyph.m_pGlyph->m_Bitmap.GetHeight(), &glyph.m_pGlyph->m_Bitmap, 0, + 0); + } + m_pDevice->SetBitMask(&bitmap, rect.left, rect.top, fill_argb); + FX_Free(pGlyphAndPos); + } + return TRUE; +} +class CPDF_CharPosList { + public: + CPDF_CharPosList(); + ~CPDF_CharPosList(); + void Load(int nChars, + FX_DWORD* pCharCodes, + FX_FLOAT* pCharPos, + CPDF_Font* pFont, + FX_FLOAT font_size); + FXTEXT_CHARPOS* m_pCharPos; + FX_DWORD m_nChars; +}; + +CPDF_CharPosList::CPDF_CharPosList() { + m_pCharPos = NULL; +} +CPDF_CharPosList::~CPDF_CharPosList() { + FX_Free(m_pCharPos); +} +void CPDF_CharPosList::Load(int nChars, + FX_DWORD* pCharCodes, + FX_FLOAT* pCharPos, + CPDF_Font* pFont, + FX_FLOAT FontSize) { + m_pCharPos = FX_Alloc(FXTEXT_CHARPOS, nChars); + m_nChars = 0; + CPDF_CIDFont* pCIDFont = pFont->AsCIDFont(); + FX_BOOL bVertWriting = pCIDFont && pCIDFont->IsVertWriting(); + for (int iChar = 0; iChar < nChars; iChar++) { + FX_DWORD CharCode = + nChars == 1 ? (FX_DWORD)(uintptr_t)pCharCodes : pCharCodes[iChar]; + if (CharCode == (FX_DWORD)-1) { + continue; + } + FX_BOOL bVert = FALSE; + FXTEXT_CHARPOS& charpos = m_pCharPos[m_nChars++]; + if (pCIDFont) { + charpos.m_bFontStyle = pCIDFont->IsFontStyleFromCharCode(CharCode); + } + charpos.m_GlyphIndex = pFont->GlyphFromCharCode(CharCode, &bVert); +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + charpos.m_ExtGID = pFont->GlyphFromCharCodeExt(CharCode); +#endif + if (!pFont->IsEmbedded() && !pFont->IsCIDFont()) { + charpos.m_FontCharWidth = pFont->GetCharWidthF(CharCode); + } else { + charpos.m_FontCharWidth = 0; + } + charpos.m_OriginX = iChar ? pCharPos[iChar - 1] : 0; + charpos.m_OriginY = 0; + charpos.m_bGlyphAdjust = FALSE; + if (!pCIDFont) { + continue; + } + FX_WORD CID = pCIDFont->CIDFromCharCode(CharCode); + if (bVertWriting) { + charpos.m_OriginY = charpos.m_OriginX; + charpos.m_OriginX = 0; + short vx, vy; + pCIDFont->GetVertOrigin(CID, vx, vy); + charpos.m_OriginX -= FontSize * vx / 1000; + charpos.m_OriginY -= FontSize * vy / 1000; + } + const uint8_t* pTransform = pCIDFont->GetCIDTransform(CID); + if (pTransform && !bVert) { + charpos.m_AdjustMatrix[0] = pCIDFont->CIDTransformToFloat(pTransform[0]); + charpos.m_AdjustMatrix[2] = pCIDFont->CIDTransformToFloat(pTransform[2]); + charpos.m_AdjustMatrix[1] = pCIDFont->CIDTransformToFloat(pTransform[1]); + charpos.m_AdjustMatrix[3] = pCIDFont->CIDTransformToFloat(pTransform[3]); + charpos.m_OriginX += + pCIDFont->CIDTransformToFloat(pTransform[4]) * FontSize; + charpos.m_OriginY += + pCIDFont->CIDTransformToFloat(pTransform[5]) * FontSize; + charpos.m_bGlyphAdjust = TRUE; + } + } +} +FX_BOOL CPDF_TextRenderer::DrawTextPath(CFX_RenderDevice* pDevice, + int nChars, + FX_DWORD* pCharCodes, + FX_FLOAT* pCharPos, + CPDF_Font* pFont, + FX_FLOAT font_size, + const CFX_Matrix* pText2User, + const CFX_Matrix* pUser2Device, + const CFX_GraphStateData* pGraphState, + FX_ARGB fill_argb, + FX_ARGB stroke_argb, + CFX_PathData* pClippingPath, + int nFlag) { + CFX_FontCache* pCache = + pFont->m_pDocument ? pFont->m_pDocument->GetRenderData()->GetFontCache() + : NULL; + CPDF_CharPosList CharPosList; + CharPosList.Load(nChars, pCharCodes, pCharPos, pFont, font_size); + return pDevice->DrawTextPath(CharPosList.m_nChars, CharPosList.m_pCharPos, + &pFont->m_Font, pCache, font_size, pText2User, + pUser2Device, pGraphState, fill_argb, + stroke_argb, pClippingPath, nFlag); +} +void CPDF_TextRenderer::DrawTextString(CFX_RenderDevice* pDevice, + int left, + int top, + CPDF_Font* pFont, + int height, + const CFX_ByteString& str, + FX_ARGB argb) { + FX_RECT font_bbox; + pFont->GetFontBBox(font_bbox); + FX_FLOAT font_size = + (FX_FLOAT)height * 1000.0f / (FX_FLOAT)(font_bbox.top - font_bbox.bottom); + FX_FLOAT origin_x = (FX_FLOAT)left; + FX_FLOAT origin_y = + (FX_FLOAT)top + font_size * (FX_FLOAT)font_bbox.top / 1000.0f; + CFX_Matrix matrix(1.0f, 0, 0, -1.0f, 0, 0); + DrawTextString(pDevice, origin_x, origin_y, pFont, font_size, &matrix, str, + argb); +} +void CPDF_TextRenderer::DrawTextString(CFX_RenderDevice* pDevice, + FX_FLOAT origin_x, + FX_FLOAT origin_y, + CPDF_Font* pFont, + FX_FLOAT font_size, + const CFX_Matrix* pMatrix, + const CFX_ByteString& str, + FX_ARGB fill_argb, + FX_ARGB stroke_argb, + const CFX_GraphStateData* pGraphState, + const CPDF_RenderOptions* pOptions) { + int nChars = pFont->CountChar(str, str.GetLength()); + if (nChars == 0) { + return; + } + FX_DWORD charcode; + int offset = 0; + FX_DWORD* pCharCodes; + FX_FLOAT* pCharPos; + if (nChars == 1) { + charcode = pFont->GetNextChar(str, str.GetLength(), offset); + pCharCodes = (FX_DWORD*)(uintptr_t)charcode; + pCharPos = NULL; + } else { + pCharCodes = FX_Alloc(FX_DWORD, nChars); + pCharPos = FX_Alloc(FX_FLOAT, nChars - 1); + FX_FLOAT cur_pos = 0; + for (int i = 0; i < nChars; i++) { + pCharCodes[i] = pFont->GetNextChar(str, str.GetLength(), offset); + if (i) { + pCharPos[i - 1] = cur_pos; + } + cur_pos += pFont->GetCharWidthF(pCharCodes[i]) * font_size / 1000; + } + } + CFX_Matrix matrix; + if (pMatrix) + matrix = *pMatrix; + + matrix.e = origin_x; + matrix.f = origin_y; + + if (!pFont->IsType3Font()) { + if (stroke_argb == 0) { + DrawNormalText(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, + &matrix, fill_argb, pOptions); + } else { + DrawTextPath(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, + &matrix, NULL, pGraphState, fill_argb, stroke_argb, NULL); + } + } + + if (nChars > 1) { + FX_Free(pCharCodes); + FX_Free(pCharPos); + } +} +FX_BOOL CPDF_TextRenderer::DrawNormalText(CFX_RenderDevice* pDevice, + int nChars, + FX_DWORD* pCharCodes, + FX_FLOAT* pCharPos, + CPDF_Font* pFont, + FX_FLOAT font_size, + const CFX_Matrix* pText2Device, + FX_ARGB fill_argb, + const CPDF_RenderOptions* pOptions) { + CFX_FontCache* pCache = + pFont->m_pDocument ? pFont->m_pDocument->GetRenderData()->GetFontCache() + : NULL; + CPDF_CharPosList CharPosList; + CharPosList.Load(nChars, pCharCodes, pCharPos, pFont, font_size); + int FXGE_flags = 0; + if (pOptions) { + FX_DWORD dwFlags = pOptions->m_Flags; + if (dwFlags & RENDER_CLEARTYPE) { + FXGE_flags |= FXTEXT_CLEARTYPE; + if (dwFlags & RENDER_BGR_STRIPE) { + FXGE_flags |= FXTEXT_BGR_STRIPE; + } + } + if (dwFlags & RENDER_NOTEXTSMOOTH) { + FXGE_flags |= FXTEXT_NOSMOOTH; + } + if (dwFlags & RENDER_PRINTGRAPHICTEXT) { + FXGE_flags |= FXTEXT_PRINTGRAPHICTEXT; + } + if (dwFlags & RENDER_NO_NATIVETEXT) { + FXGE_flags |= FXTEXT_NO_NATIVETEXT; + } + if (dwFlags & RENDER_PRINTIMAGETEXT) { + FXGE_flags |= FXTEXT_PRINTIMAGETEXT; + } + } else { + FXGE_flags = FXTEXT_CLEARTYPE; + } + if (pFont->IsCIDFont()) { + FXGE_flags |= FXFONT_CIDFONT; + } + return pDevice->DrawNormalText(CharPosList.m_nChars, CharPosList.m_pCharPos, + &pFont->m_Font, pCache, font_size, + pText2Device, fill_argb, FXGE_flags); +} +void CPDF_RenderStatus::DrawTextPathWithPattern(const CPDF_TextObject* textobj, + const CFX_Matrix* pObj2Device, + CPDF_Font* pFont, + FX_FLOAT font_size, + const CFX_Matrix* pTextMatrix, + FX_BOOL bFill, + FX_BOOL bStroke) { + if (!bStroke) { + CPDF_PathObject path; + CPDF_TextObject* pCopy = textobj->Clone(); + path.m_bStroke = FALSE; + path.m_FillType = FXFILL_WINDING; + path.m_ClipPath.AppendTexts(&pCopy, 1); + path.m_ColorState = textobj->m_ColorState; + path.m_Path.New()->AppendRect(textobj->m_Left, textobj->m_Bottom, + textobj->m_Right, textobj->m_Top); + path.m_Left = textobj->m_Left; + path.m_Bottom = textobj->m_Bottom; + path.m_Right = textobj->m_Right; + path.m_Top = textobj->m_Top; + RenderSingleObject(&path, pObj2Device); + return; + } + CFX_FontCache* pCache; + if (pFont->m_pDocument) { + pCache = pFont->m_pDocument->GetRenderData()->GetFontCache(); + } else { + pCache = CFX_GEModule::Get()->GetFontCache(); + } + CFX_FaceCache* pFaceCache = pCache->GetCachedFace(&pFont->m_Font); + FX_FONTCACHE_DEFINE(pCache, &pFont->m_Font); + CPDF_CharPosList CharPosList; + CharPosList.Load(textobj->m_nChars, textobj->m_pCharCodes, + textobj->m_pCharPos, pFont, font_size); + for (FX_DWORD i = 0; i < CharPosList.m_nChars; i++) { + FXTEXT_CHARPOS& charpos = CharPosList.m_pCharPos[i]; + const CFX_PathData* pPath = pFaceCache->LoadGlyphPath( + &pFont->m_Font, charpos.m_GlyphIndex, charpos.m_FontCharWidth); + if (!pPath) { + continue; + } + CPDF_PathObject path; + path.m_GraphState = textobj->m_GraphState; + path.m_ColorState = textobj->m_ColorState; + CFX_Matrix matrix; + if (charpos.m_bGlyphAdjust) + matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], + charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); + matrix.Concat(font_size, 0, 0, font_size, charpos.m_OriginX, + charpos.m_OriginY); + path.m_Path.New()->Append(pPath, &matrix); + path.m_Matrix = *pTextMatrix; + path.m_bStroke = bStroke; + path.m_FillType = bFill ? FXFILL_WINDING : 0; + path.CalcBoundingBox(); + ProcessPath(&path, pObj2Device); + } +} diff --git a/core/fpdfapi/fpdf_render/render_int.h b/core/fpdfapi/fpdf_render/render_int.h new file mode 100644 index 0000000000..c15612466c --- /dev/null +++ b/core/fpdfapi/fpdf_render/render_int.h @@ -0,0 +1,619 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ +#define CORE_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ + +#include +#include + +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_render.h" + +class CFX_GlyphBitmap; +class CFX_ImageTransformer; +class CPDF_ImageCacheEntry; +class CPDF_ImageLoaderHandle; +class ICodec_ScanlineDecoder; + +#define TYPE3_MAX_BLUES 16 + +class CPDF_Type3Glyphs { + public: + CPDF_Type3Glyphs() : m_TopBlueCount(0), m_BottomBlueCount(0) {} + ~CPDF_Type3Glyphs(); + void AdjustBlue(FX_FLOAT top, + FX_FLOAT bottom, + int& top_line, + int& bottom_line); + + std::map m_GlyphMap; + int m_TopBlue[TYPE3_MAX_BLUES]; + int m_BottomBlue[TYPE3_MAX_BLUES]; + int m_TopBlueCount; + int m_BottomBlueCount; +}; +class CPDF_Type3Cache { + public: + explicit CPDF_Type3Cache(CPDF_Type3Font* pFont) : m_pFont(pFont) {} + ~CPDF_Type3Cache(); + + CFX_GlyphBitmap* LoadGlyph(FX_DWORD charcode, + const CFX_Matrix* pMatrix, + FX_FLOAT retinaScaleX = 1.0f, + FX_FLOAT retinaScaleY = 1.0f); + + protected: + CFX_GlyphBitmap* RenderGlyph(CPDF_Type3Glyphs* pSize, + FX_DWORD charcode, + const CFX_Matrix* pMatrix, + FX_FLOAT retinaScaleX = 1.0f, + FX_FLOAT retinaScaleY = 1.0f); + CPDF_Type3Font* const m_pFont; + std::map m_SizeMap; +}; + +class CPDF_TransferFunc { + public: + explicit CPDF_TransferFunc(CPDF_Document* pDoc); + + FX_COLORREF TranslateColor(FX_COLORREF src) const; + CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc, + FX_BOOL bAutoDropSrc); + + CPDF_Document* const m_pPDFDoc; + FX_BOOL m_bIdentity; + uint8_t m_Samples[256 * 3]; +}; + +class CPDF_DocRenderData { + public: + CPDF_DocRenderData(CPDF_Document* pPDFDoc = NULL); + ~CPDF_DocRenderData(); + CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); + CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj); + CFX_FontCache* GetFontCache() { return m_pFontCache; } + void Clear(FX_BOOL bRelease = FALSE); + void ReleaseCachedType3(CPDF_Type3Font* pFont); + void ReleaseTransferFunc(CPDF_Object* pObj); + + private: + using CPDF_Type3CacheMap = + std::map*>; + using CPDF_TransferFuncMap = + std::map*>; + + CPDF_Document* m_pPDFDoc; + CFX_FontCache* m_pFontCache; + CPDF_Type3CacheMap m_Type3FaceMap; + CPDF_TransferFuncMap m_TransferFuncMap; +}; + +class IPDF_ObjectRenderer { + public: + static IPDF_ObjectRenderer* Create(); + virtual ~IPDF_ObjectRenderer() {} + virtual FX_BOOL Start(CPDF_RenderStatus* pRenderStatus, + const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStdCS, + int blendType = FXDIB_BLEND_NORMAL) = 0; + virtual FX_BOOL Continue(IFX_Pause* pPause) = 0; + FX_BOOL m_Result; +}; + +class CPDF_RenderStatus { + public: + CPDF_RenderStatus(); + ~CPDF_RenderStatus(); + FX_BOOL Initialize(class CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + const CFX_Matrix* pDeviceMatrix, + const CPDF_PageObject* pStopObj, + const CPDF_RenderStatus* pParentStatus, + const CPDF_GraphicStates* pInitialStates, + const CPDF_RenderOptions* pOptions, + int transparency, + FX_BOOL bDropObjects, + CPDF_Dictionary* pFormResource = NULL, + FX_BOOL bStdCS = FALSE, + CPDF_Type3Char* pType3Char = NULL, + FX_ARGB fill_color = 0, + FX_DWORD GroupFamily = 0, + FX_BOOL bLoadMask = FALSE); + void RenderObjectList(const CPDF_PageObjectHolder* pObjectHolder, + const CFX_Matrix* pObj2Device); + void RenderSingleObject(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device); + FX_BOOL ContinueSingleObject(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device, + IFX_Pause* pPause); + CPDF_RenderContext* GetContext() { return m_pContext; } + + CPDF_RenderOptions m_Options; + CPDF_Dictionary* m_pFormResource; + CPDF_Dictionary* m_pPageResource; + CFX_ArrayTemplate m_Type3FontCache; + + protected: + friend class CPDF_ImageRenderer; + friend class CPDF_RenderContext; + void ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); + void DrawClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); + FX_BOOL ProcessTransparency(const CPDF_PageObject* PageObj, + const CFX_Matrix* pObj2Device); + void ProcessObjectNoClip(const CPDF_PageObject* PageObj, + const CFX_Matrix* pObj2Device); + void DrawObjWithBackground(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device); + FX_BOOL DrawObjWithBlend(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device); + FX_BOOL ProcessPath(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device); + void ProcessPathPattern(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device, + int& filltype, + FX_BOOL& bStroke); + void DrawPathWithPattern(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device, + CPDF_Color* pColor, + FX_BOOL bStroke); + void DrawTilingPattern(CPDF_TilingPattern* pPattern, + const CPDF_PageObject* pPageObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStroke); + void DrawShadingPattern(CPDF_ShadingPattern* pPattern, + const CPDF_PageObject* pPageObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStroke); + FX_BOOL SelectClipPath(const CPDF_PathObject* pPathObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStroke); + FX_BOOL ProcessImage(const CPDF_ImageObject* pImageObj, + const CFX_Matrix* pObj2Device); + FX_BOOL OutputBitmapAlpha(CPDF_ImageObject* pImageObj, + const CFX_Matrix* pImage2Device); + FX_BOOL OutputImage(CPDF_ImageObject* pImageObj, + const CFX_Matrix* pImage2Device); + FX_BOOL OutputDIBSource(const CFX_DIBSource* pOutputBitmap, + FX_ARGB fill_argb, + int bitmap_alpha, + const CFX_Matrix* pImage2Device, + CPDF_ImageCacheEntry* pImageCache, + FX_DWORD flags); + void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, + int left, + int top, + FX_ARGB mask_argb, + int bitmap_alpha, + int blend_mode, + int bIsolated); + FX_BOOL ProcessShading(const CPDF_ShadingObject* pShadingObj, + const CFX_Matrix* pObj2Device); + void DrawShading(CPDF_ShadingPattern* pPattern, + CFX_Matrix* pMatrix, + FX_RECT& clip_rect, + int alpha, + FX_BOOL bAlphaMode); + FX_BOOL ProcessType3Text(const CPDF_TextObject* textobj, + const CFX_Matrix* pObj2Device); + FX_BOOL ProcessText(const CPDF_TextObject* textobj, + const CFX_Matrix* pObj2Device, + CFX_PathData* pClippingPath); + void DrawTextPathWithPattern(const CPDF_TextObject* textobj, + const CFX_Matrix* pObj2Device, + CPDF_Font* pFont, + FX_FLOAT font_size, + const CFX_Matrix* pTextMatrix, + FX_BOOL bFill, + FX_BOOL bStroke); + FX_BOOL ProcessForm(const CPDF_FormObject* pFormObj, + const CFX_Matrix* pObj2Device); + CFX_DIBitmap* GetBackdrop(const CPDF_PageObject* pObj, + const FX_RECT& rect, + int& left, + int& top, + FX_BOOL bBackAlphaRequired); + CFX_DIBitmap* LoadSMask(CPDF_Dictionary* pSMaskDict, + FX_RECT* pClipRect, + const CFX_Matrix* pMatrix); + void Init(CPDF_RenderContext* pParent); + static class CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); + static CPDF_GraphicStates* CloneObjStates(const CPDF_GraphicStates* pPathObj, + FX_BOOL bStroke); + CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObject) const; + FX_ARGB GetFillArgb(const CPDF_PageObject* pObj, + FX_BOOL bType3 = FALSE) const; + FX_ARGB GetStrokeArgb(const CPDF_PageObject* pObj) const; + CPDF_RenderContext* m_pContext; + FX_BOOL m_bStopped; + void DitherObjectArea(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device); + FX_BOOL GetObjectClippedRect(const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bLogical, + FX_RECT& rect) const; + void GetScaledMatrix(CFX_Matrix& matrix) const; + + protected: + static const int kRenderMaxRecursionDepth = 64; + static int s_CurrentRecursionDepth; + + CFX_RenderDevice* m_pDevice; + CFX_Matrix m_DeviceMatrix; + CPDF_ClipPath m_LastClipPath; + const CPDF_PageObject* m_pCurObj; + const CPDF_PageObject* m_pStopObj; + CPDF_GraphicStates m_InitialStates; + int m_HalftoneLimit; + std::unique_ptr m_pObjectRenderer; + FX_BOOL m_bPrint; + int m_Transparency; + int m_DitherBits; + FX_BOOL m_bDropObjects; + FX_BOOL m_bStdCS; + FX_DWORD m_GroupFamily; + FX_BOOL m_bLoadMask; + CPDF_Type3Char* m_pType3Char; + FX_ARGB m_T3FillColor; + int m_curBlend; +}; +class CPDF_ImageLoader { + public: + CPDF_ImageLoader() + : m_pBitmap(nullptr), + m_pMask(nullptr), + m_MatteColor(0), + m_bCached(FALSE), + m_nDownsampleWidth(0), + m_nDownsampleHeight(0) {} + ~CPDF_ImageLoader(); + + FX_BOOL Start(const CPDF_ImageObject* pImage, + CPDF_PageRenderCache* pCache, + CPDF_ImageLoaderHandle*& LoadHandle, + FX_BOOL bStdCS = FALSE, + FX_DWORD GroupFamily = 0, + FX_BOOL bLoadMask = FALSE, + CPDF_RenderStatus* pRenderStatus = NULL, + int32_t nDownsampleWidth = 0, + int32_t nDownsampleHeight = 0); + FX_BOOL Continue(CPDF_ImageLoaderHandle* LoadHandle, IFX_Pause* pPause); + + CFX_DIBSource* m_pBitmap; + CFX_DIBSource* m_pMask; + FX_DWORD m_MatteColor; + FX_BOOL m_bCached; + + protected: + int32_t m_nDownsampleWidth; + int32_t m_nDownsampleHeight; +}; +class CPDF_ImageLoaderHandle { + public: + CPDF_ImageLoaderHandle(); + ~CPDF_ImageLoaderHandle(); + + FX_BOOL Start(CPDF_ImageLoader* pImageLoader, + const CPDF_ImageObject* pImage, + CPDF_PageRenderCache* pCache, + FX_BOOL bStdCS = FALSE, + FX_DWORD GroupFamily = 0, + FX_BOOL bLoadMask = FALSE, + CPDF_RenderStatus* pRenderStatus = NULL, + int32_t nDownsampleWidth = 0, + int32_t nDownsampleHeight = 0); + FX_BOOL Continue(IFX_Pause* pPause); + + protected: + CPDF_ImageLoader* m_pImageLoader; + CPDF_PageRenderCache* m_pCache; + CPDF_ImageObject* m_pImage; + int32_t m_nDownsampleWidth; + int32_t m_nDownsampleHeight; +}; + +class CPDF_ImageRenderer : public IPDF_ObjectRenderer { + public: + CPDF_ImageRenderer(); + ~CPDF_ImageRenderer() override; + + // IPDF_ObjectRenderer + FX_BOOL Start(CPDF_RenderStatus* pStatus, + const CPDF_PageObject* pObj, + const CFX_Matrix* pObj2Device, + FX_BOOL bStdCS, + int blendType = FXDIB_BLEND_NORMAL) override; + FX_BOOL Continue(IFX_Pause* pPause) override; + + FX_BOOL Start(CPDF_RenderStatus* pStatus, + const CFX_DIBSource* pDIBSource, + FX_ARGB bitmap_argb, + int bitmap_alpha, + const CFX_Matrix* pImage2Device, + FX_DWORD flags, + FX_BOOL bStdCS, + int blendType = FXDIB_BLEND_NORMAL); + + protected: + CPDF_RenderStatus* m_pRenderStatus; + const CPDF_ImageObject* m_pImageObject; + int m_Status; + const CFX_Matrix* m_pObj2Device; + CFX_Matrix m_ImageMatrix; + CPDF_ImageLoader m_Loader; + const CFX_DIBSource* m_pDIBSource; + CFX_DIBitmap* m_pClone; + int m_BitmapAlpha; + FX_BOOL m_bPatternColor; + CPDF_Pattern* m_pPattern; + FX_ARGB m_FillArgb; + FX_DWORD m_Flags; + CFX_ImageTransformer* m_pTransformer; + void* m_DeviceHandle; + CPDF_ImageLoaderHandle* m_LoadHandle; + FX_BOOL m_bStdCS; + int m_BlendType; + FX_BOOL StartBitmapAlpha(); + FX_BOOL StartDIBSource(); + FX_BOOL StartRenderDIBSource(); + FX_BOOL StartLoadDIBSource(); + FX_BOOL DrawMaskedImage(); + FX_BOOL DrawPatternImage(const CFX_Matrix* pObj2Device); +}; + +class CPDF_ScaledRenderBuffer { + public: + CPDF_ScaledRenderBuffer(); + ~CPDF_ScaledRenderBuffer(); + + FX_BOOL Initialize(CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + const FX_RECT& pRect, + const CPDF_PageObject* pObj, + const CPDF_RenderOptions* pOptions = NULL, + int max_dpi = 0); + CFX_RenderDevice* GetDevice() { + return m_pBitmapDevice ? m_pBitmapDevice.get() : m_pDevice; + } + CFX_Matrix* GetMatrix() { return &m_Matrix; } + void OutputToDevice(); + + private: + CFX_RenderDevice* m_pDevice; + CPDF_RenderContext* m_pContext; + FX_RECT m_Rect; + const CPDF_PageObject* m_pObject; + std::unique_ptr m_pBitmapDevice; + CFX_Matrix m_Matrix; +}; + +class CPDF_DeviceBuffer { + public: + CPDF_DeviceBuffer(); + ~CPDF_DeviceBuffer(); + FX_BOOL Initialize(CPDF_RenderContext* pContext, + CFX_RenderDevice* pDevice, + FX_RECT* pRect, + const CPDF_PageObject* pObj, + int max_dpi = 0); + void OutputToDevice(); + CFX_DIBitmap* GetBitmap() const { return m_pBitmap.get(); } + const CFX_Matrix* GetMatrix() const { return &m_Matrix; } + + private: + CFX_RenderDevice* m_pDevice; + CPDF_RenderContext* m_pContext; + FX_RECT m_Rect; + const CPDF_PageObject* m_pObject; + std::unique_ptr m_pBitmap; + CFX_Matrix m_Matrix; +}; + +class CPDF_ImageCacheEntry { + public: + CPDF_ImageCacheEntry(CPDF_Document* pDoc, CPDF_Stream* pStream); + ~CPDF_ImageCacheEntry(); + void ClearImageData(); + void Reset(const CFX_DIBitmap* pBitmap); + FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap, + CFX_DIBSource*& pMask, + FX_DWORD& MatteColor, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS = FALSE, + FX_DWORD GroupFamily = 0, + FX_BOOL bLoadMask = FALSE, + CPDF_RenderStatus* pRenderStatus = NULL, + int32_t downsampleWidth = 0, + int32_t downsampleHeight = 0); + FX_DWORD EstimateSize() const { return m_dwCacheSize; } + FX_DWORD GetTimeCount() const { return m_dwTimeCount; } + CPDF_Stream* GetStream() const { return m_pStream; } + void SetTimeCount(FX_DWORD dwTimeCount) { m_dwTimeCount = dwTimeCount; } + int m_dwTimeCount; + + public: + int StartGetCachedBitmap(CPDF_Dictionary* pFormResources, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS = FALSE, + FX_DWORD GroupFamily = 0, + FX_BOOL bLoadMask = FALSE, + CPDF_RenderStatus* pRenderStatus = NULL, + int32_t downsampleWidth = 0, + int32_t downsampleHeight = 0); + int Continue(IFX_Pause* pPause); + CFX_DIBSource* DetachBitmap(); + CFX_DIBSource* DetachMask(); + CFX_DIBSource* m_pCurBitmap; + CFX_DIBSource* m_pCurMask; + FX_DWORD m_MatteColor; + CPDF_RenderStatus* m_pRenderStatus; + + protected: + void ContinueGetCachedBitmap(); + + CPDF_Document* m_pDocument; + CPDF_Stream* m_pStream; + CFX_DIBSource* m_pCachedBitmap; + CFX_DIBSource* m_pCachedMask; + FX_DWORD m_dwCacheSize; + void CalcSize(); +}; +typedef struct { + FX_FLOAT m_DecodeMin; + FX_FLOAT m_DecodeStep; + int m_ColorKeyMin; + int m_ColorKeyMax; +} DIB_COMP_DATA; + +class CPDF_DIBSource : public CFX_DIBSource { + public: + CPDF_DIBSource(); + ~CPDF_DIBSource() override; + + FX_BOOL Load(CPDF_Document* pDoc, + const CPDF_Stream* pStream, + CPDF_DIBSource** ppMask, + FX_DWORD* pMatteColor, + CPDF_Dictionary* pFormResources, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS = FALSE, + FX_DWORD GroupFamily = 0, + FX_BOOL bLoadMask = FALSE); + + // CFX_DIBSource + FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) const override; + uint8_t* GetBuffer() const override; + const uint8_t* GetScanline(int line) const override; + void DownSampleScanline(int line, + uint8_t* dest_scan, + int dest_bpp, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const override; + void SetDownSampleSize(int dest_width, int dest_height) override; + + CFX_DIBitmap* GetBitmap() const; + void ReleaseBitmap(CFX_DIBitmap* pBitmap) const; + void ClearImageData(); + FX_DWORD GetMatteColor() const { return m_MatteColor; } + + int StartLoadDIBSource(CPDF_Document* pDoc, + const CPDF_Stream* pStream, + FX_BOOL bHasMask, + CPDF_Dictionary* pFormResources, + CPDF_Dictionary* pPageResources, + FX_BOOL bStdCS = FALSE, + FX_DWORD GroupFamily = 0, + FX_BOOL bLoadMask = FALSE); + int ContinueLoadDIBSource(IFX_Pause* pPause); + int StratLoadMask(); + int StartLoadMaskDIB(); + int ContinueLoadMaskDIB(IFX_Pause* pPause); + int ContinueToLoadMask(); + CPDF_DIBSource* DetachMask(); + + private: + bool LoadColorInfo(const CPDF_Dictionary* pFormResources, + const CPDF_Dictionary* pPageResources); + DIB_COMP_DATA* GetDecodeAndMaskArray(FX_BOOL& bDefaultDecode, + FX_BOOL& bColorKey); + CPDF_DIBSource* LoadMask(FX_DWORD& MatteColor); + CPDF_DIBSource* LoadMaskDIB(CPDF_Stream* pMask); + void LoadJpxBitmap(); + void LoadPalette(); + int CreateDecoder(); + void TranslateScanline24bpp(uint8_t* dest_scan, + const uint8_t* src_scan) const; + void ValidateDictParam(); + void DownSampleScanline1Bit(int orig_Bpp, + int dest_Bpp, + FX_DWORD src_width, + const uint8_t* pSrcLine, + uint8_t* dest_scan, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const; + void DownSampleScanline8Bit(int orig_Bpp, + int dest_Bpp, + FX_DWORD src_width, + const uint8_t* pSrcLine, + uint8_t* dest_scan, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const; + void DownSampleScanline32Bit(int orig_Bpp, + int dest_Bpp, + FX_DWORD src_width, + const uint8_t* pSrcLine, + uint8_t* dest_scan, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const; + FX_BOOL TransMask() const; + + CPDF_Document* m_pDocument; + const CPDF_Stream* m_pStream; + std::unique_ptr m_pStreamAcc; + const CPDF_Dictionary* m_pDict; + CPDF_ColorSpace* m_pColorSpace; + FX_DWORD m_Family; + FX_DWORD m_bpc; + FX_DWORD m_bpc_orig; + FX_DWORD m_nComponents; + FX_DWORD m_GroupFamily; + FX_DWORD m_MatteColor; + FX_BOOL m_bLoadMask; + FX_BOOL m_bDefaultDecode; + FX_BOOL m_bImageMask; + FX_BOOL m_bDoBpcCheck; + FX_BOOL m_bColorKey; + FX_BOOL m_bHasMask; + FX_BOOL m_bStdCS; + DIB_COMP_DATA* m_pCompData; + uint8_t* m_pLineBuf; + uint8_t* m_pMaskedLine; + std::unique_ptr m_pCachedBitmap; + std::unique_ptr m_pDecoder; + void* m_pJbig2Context; + CPDF_DIBSource* m_pMask; + std::unique_ptr m_pGlobalStream; + CPDF_Stream* m_pMaskStream; + int m_Status; +}; + +#define FPDF_HUGE_IMAGE_SIZE 60000000 +class CPDF_DIBTransferFunc : public CFX_FilteredDIB { + public: + CPDF_DIBTransferFunc(const CPDF_TransferFunc* pTransferFunc); + ~CPDF_DIBTransferFunc() override; + + // CFX_FilteredDIB + FXDIB_Format GetDestFormat() override; + FX_ARGB* GetDestPalette() override { return NULL; } + void TranslateScanline(uint8_t* dest_buf, + const uint8_t* src_buf) const override; + void TranslateDownSamples(uint8_t* dest_buf, + const uint8_t* src_buf, + int pixels, + int Bpp) const override; + + const uint8_t* m_RampR; + const uint8_t* m_RampG; + const uint8_t* m_RampB; +}; + +struct _CPDF_UniqueKeyGen { + void Generate(int count, ...); + FX_CHAR m_Key[128]; + int m_KeyLen; +}; + +#endif // CORE_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ diff --git a/core/fpdfdoc/doc_action.cpp b/core/fpdfdoc/doc_action.cpp new file mode 100644 index 0000000000..0af219e47e --- /dev/null +++ b/core/fpdfdoc/doc_action.cpp @@ -0,0 +1,295 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +CPDF_Dest CPDF_Action::GetDest(CPDF_Document* pDoc) const { + if (!m_pDict) { + return CPDF_Dest(); + } + CFX_ByteString type = m_pDict->GetStringBy("S"); + if (type != "GoTo" && type != "GoToR") { + return CPDF_Dest(); + } + CPDF_Object* pDest = m_pDict->GetElementValue("D"); + if (!pDest) { + return CPDF_Dest(); + } + if (pDest->IsString() || pDest->IsName()) { + CPDF_NameTree name_tree(pDoc, "Dests"); + CFX_ByteStringC name = pDest->GetString(); + return CPDF_Dest(name_tree.LookupNamedDest(pDoc, name)); + } + if (CPDF_Array* pArray = pDest->AsArray()) + return CPDF_Dest(pArray); + return CPDF_Dest(); +} +const FX_CHAR* g_sATypes[] = { + "Unknown", "GoTo", "GoToR", "GoToE", "Launch", + "Thread", "URI", "Sound", "Movie", "Hide", + "Named", "SubmitForm", "ResetForm", "ImportData", "JavaScript", + "SetOCGState", "Rendition", "Trans", "GoTo3DView", ""}; +CPDF_Action::ActionType CPDF_Action::GetType() const { + ActionType eType = Unknown; + if (m_pDict) { + CFX_ByteString csType = m_pDict->GetStringBy("S"); + if (!csType.IsEmpty()) { + int i = 0; + while (g_sATypes[i][0] != '\0') { + if (csType == g_sATypes[i]) { + return (ActionType)i; + } + i++; + } + } + } + return eType; +} +CFX_WideString CPDF_Action::GetFilePath() const { + CFX_ByteString type = m_pDict->GetStringBy("S"); + if (type != "GoToR" && type != "Launch" && type != "SubmitForm" && + type != "ImportData") { + return CFX_WideString(); + } + CPDF_Object* pFile = m_pDict->GetElementValue("F"); + CFX_WideString path; + if (!pFile) { + if (type == "Launch") { + CPDF_Dictionary* pWinDict = m_pDict->GetDictBy("Win"); + if (pWinDict) { + return CFX_WideString::FromLocal(pWinDict->GetStringBy("F")); + } + } + return path; + } + CPDF_FileSpec filespec(pFile); + filespec.GetFileName(&path); + return path; +} +CFX_ByteString CPDF_Action::GetURI(CPDF_Document* pDoc) const { + CFX_ByteString csURI; + if (!m_pDict) { + return csURI; + } + if (m_pDict->GetStringBy("S") != "URI") { + return csURI; + } + csURI = m_pDict->GetStringBy("URI"); + CPDF_Dictionary* pRoot = pDoc->GetRoot(); + CPDF_Dictionary* pURI = pRoot->GetDictBy("URI"); + if (pURI) { + if (csURI.Find(":", 0) < 1) { + csURI = pURI->GetStringBy("Base") + csURI; + } + } + return csURI; +} +FX_DWORD CPDF_ActionFields::GetFieldsCount() const { + if (!m_pAction) { + return 0; + } + CPDF_Dictionary* pDict = m_pAction->GetDict(); + if (!pDict) { + return 0; + } + CFX_ByteString csType = pDict->GetStringBy("S"); + CPDF_Object* pFields = NULL; + if (csType == "Hide") { + pFields = pDict->GetElementValue("T"); + } else { + pFields = pDict->GetArrayBy("Fields"); + } + if (!pFields) + return 0; + if (pFields->IsDictionary()) + return 1; + if (pFields->IsString()) + return 1; + if (CPDF_Array* pArray = pFields->AsArray()) + return pArray->GetCount(); + return 0; +} + +std::vector CPDF_ActionFields::GetAllFields() const { + std::vector fields; + if (!m_pAction) + return fields; + + CPDF_Dictionary* pDict = m_pAction->GetDict(); + if (!pDict) + return fields; + + CFX_ByteString csType = pDict->GetStringBy("S"); + CPDF_Object* pFields; + if (csType == "Hide") + pFields = pDict->GetElementValue("T"); + else + pFields = pDict->GetArrayBy("Fields"); + if (!pFields) + return fields; + + if (pFields->IsDictionary() || pFields->IsString()) { + fields.push_back(pFields); + } else if (CPDF_Array* pArray = pFields->AsArray()) { + FX_DWORD iCount = pArray->GetCount(); + for (FX_DWORD i = 0; i < iCount; ++i) { + CPDF_Object* pObj = pArray->GetElementValue(i); + if (pObj) { + fields.push_back(pObj); + } + } + } + return fields; +} + +CPDF_Object* CPDF_ActionFields::GetField(FX_DWORD iIndex) const { + if (!m_pAction) { + return NULL; + } + CPDF_Dictionary* pDict = m_pAction->GetDict(); + if (!pDict) { + return NULL; + } + CFX_ByteString csType = pDict->GetStringBy("S"); + CPDF_Object* pFields = NULL; + if (csType == "Hide") { + pFields = pDict->GetElementValue("T"); + } else { + pFields = pDict->GetArrayBy("Fields"); + } + if (!pFields) { + return NULL; + } + CPDF_Object* pFindObj = NULL; + if (pFields->IsDictionary() || pFields->IsString()) { + if (iIndex == 0) + pFindObj = pFields; + } else if (CPDF_Array* pArray = pFields->AsArray()) { + pFindObj = pArray->GetElementValue(iIndex); + } + return pFindObj; +} + +CFX_WideString CPDF_Action::GetJavaScript() const { + CFX_WideString csJS; + if (!m_pDict) { + return csJS; + } + CPDF_Object* pJS = m_pDict->GetElementValue("JS"); + return pJS ? pJS->GetUnicodeText() : csJS; +} +CPDF_Dictionary* CPDF_Action::GetAnnot() const { + if (!m_pDict) { + return nullptr; + } + CFX_ByteString csType = m_pDict->GetStringBy("S"); + if (csType == "Rendition") { + return m_pDict->GetDictBy("AN"); + } + if (csType == "Movie") { + return m_pDict->GetDictBy("Annotation"); + } + return nullptr; +} +int32_t CPDF_Action::GetOperationType() const { + if (!m_pDict) { + return 0; + } + CFX_ByteString csType = m_pDict->GetStringBy("S"); + if (csType == "Rendition") { + return m_pDict->GetIntegerBy("OP"); + } + if (csType == "Movie") { + CFX_ByteString csOP = m_pDict->GetStringBy("Operation"); + if (csOP == "Play") { + return 0; + } + if (csOP == "Stop") { + return 1; + } + if (csOP == "Pause") { + return 2; + } + if (csOP == "Resume") { + return 3; + } + } + return 0; +} +FX_DWORD CPDF_Action::GetSubActionsCount() const { + if (!m_pDict || !m_pDict->KeyExist("Next")) + return 0; + + CPDF_Object* pNext = m_pDict->GetElementValue("Next"); + if (!pNext) + return 0; + if (pNext->IsDictionary()) + return 1; + if (CPDF_Array* pArray = pNext->AsArray()) + return pArray->GetCount(); + return 0; +} +CPDF_Action CPDF_Action::GetSubAction(FX_DWORD iIndex) const { + if (!m_pDict || !m_pDict->KeyExist("Next")) { + return CPDF_Action(); + } + CPDF_Object* pNext = m_pDict->GetElementValue("Next"); + if (CPDF_Dictionary* pDict = ToDictionary(pNext)) { + if (iIndex == 0) + return CPDF_Action(pDict); + } else if (CPDF_Array* pArray = ToArray(pNext)) { + return CPDF_Action(pArray->GetDictAt(iIndex)); + } + return CPDF_Action(); +} +const FX_CHAR* g_sAATypes[] = {"E", "X", "D", "U", "Fo", "Bl", "PO", "PC", + "PV", "PI", "O", "C", "K", "F", "V", "C", + "WC", "WS", "DS", "WP", "DP", ""}; +FX_BOOL CPDF_AAction::ActionExist(AActionType eType) const { + return m_pDict && m_pDict->KeyExist(g_sAATypes[(int)eType]); +} +CPDF_Action CPDF_AAction::GetAction(AActionType eType) const { + if (!m_pDict) { + return CPDF_Action(); + } + return CPDF_Action(m_pDict->GetDictBy(g_sAATypes[(int)eType])); +} + +CPDF_DocJSActions::CPDF_DocJSActions(CPDF_Document* pDoc) : m_pDocument(pDoc) {} + +int CPDF_DocJSActions::CountJSActions() const { + ASSERT(m_pDocument); + CPDF_NameTree name_tree(m_pDocument, "JavaScript"); + return name_tree.GetCount(); +} +CPDF_Action CPDF_DocJSActions::GetJSAction(int index, + CFX_ByteString& csName) const { + ASSERT(m_pDocument); + CPDF_NameTree name_tree(m_pDocument, "JavaScript"); + CPDF_Object* pAction = name_tree.LookupValue(index, csName); + if (!ToDictionary(pAction)) { + return CPDF_Action(); + } + return CPDF_Action(pAction->GetDict()); +} +CPDF_Action CPDF_DocJSActions::GetJSAction(const CFX_ByteString& csName) const { + ASSERT(m_pDocument); + CPDF_NameTree name_tree(m_pDocument, "JavaScript"); + CPDF_Object* pAction = name_tree.LookupValue(csName); + if (!ToDictionary(pAction)) { + return CPDF_Action(); + } + return CPDF_Action(pAction->GetDict()); +} +int CPDF_DocJSActions::FindJSAction(const CFX_ByteString& csName) const { + ASSERT(m_pDocument); + CPDF_NameTree name_tree(m_pDocument, "JavaScript"); + return name_tree.GetIndex(csName); +} diff --git a/core/fpdfdoc/doc_annot.cpp b/core/fpdfdoc/doc_annot.cpp new file mode 100644 index 0000000000..b17347cce3 --- /dev/null +++ b/core/fpdfdoc/doc_annot.cpp @@ -0,0 +1,350 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +CPDF_AnnotList::CPDF_AnnotList(CPDF_Page* pPage) + : m_pDocument(pPage->m_pDocument) { + if (!pPage->m_pFormDict) + return; + + CPDF_Array* pAnnots = pPage->m_pFormDict->GetArrayBy("Annots"); + if (!pAnnots) + return; + + CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + CPDF_Dictionary* pAcroForm = pRoot->GetDictBy("AcroForm"); + FX_BOOL bRegenerateAP = + pAcroForm && pAcroForm->GetBooleanBy("NeedAppearances"); + for (FX_DWORD i = 0; i < pAnnots->GetCount(); ++i) { + CPDF_Dictionary* pDict = ToDictionary(pAnnots->GetElementValue(i)); + if (!pDict) + continue; + + FX_DWORD dwObjNum = pDict->GetObjNum(); + if (dwObjNum == 0) { + dwObjNum = m_pDocument->AddIndirectObject(pDict); + CPDF_Reference* pAction = new CPDF_Reference(m_pDocument, dwObjNum); + pAnnots->InsertAt(i, pAction); + pAnnots->RemoveAt(i + 1); + pDict = pAnnots->GetDictAt(i); + } + m_AnnotList.push_back(new CPDF_Annot(pDict, this)); + if (bRegenerateAP && pDict->GetConstStringBy("Subtype") == "Widget" && + CPDF_InterForm::UpdatingAPEnabled()) { + FPDF_GenerateAP(m_pDocument, pDict); + } + } +} + +CPDF_AnnotList::~CPDF_AnnotList() { + for (CPDF_Annot* annot : m_AnnotList) + delete annot; +} + +void CPDF_AnnotList::DisplayPass(CPDF_Page* pPage, + CFX_RenderDevice* pDevice, + CPDF_RenderContext* pContext, + FX_BOOL bPrinting, + CFX_Matrix* pMatrix, + FX_BOOL bWidgetPass, + CPDF_RenderOptions* pOptions, + FX_RECT* clip_rect) { + for (CPDF_Annot* pAnnot : m_AnnotList) { + bool bWidget = pAnnot->GetSubType() == "Widget"; + if ((bWidgetPass && !bWidget) || (!bWidgetPass && bWidget)) + continue; + + FX_DWORD annot_flags = pAnnot->GetFlags(); + if (annot_flags & ANNOTFLAG_HIDDEN) + continue; + + if (bPrinting && (annot_flags & ANNOTFLAG_PRINT) == 0) + continue; + + if (!bPrinting && (annot_flags & ANNOTFLAG_NOVIEW)) + continue; + + if (pOptions) { + IPDF_OCContext* pOCContext = pOptions->m_pOCContext; + CPDF_Dictionary* pAnnotDict = pAnnot->GetAnnotDict(); + if (pOCContext && pAnnotDict && + !pOCContext->CheckOCGVisible(pAnnotDict->GetDictBy("OC"))) { + continue; + } + } + CFX_FloatRect annot_rect_f; + pAnnot->GetRect(annot_rect_f); + CFX_Matrix matrix = *pMatrix; + if (clip_rect) { + annot_rect_f.Transform(&matrix); + FX_RECT annot_rect = annot_rect_f.GetOutterRect(); + annot_rect.Intersect(*clip_rect); + if (annot_rect.IsEmpty()) { + continue; + } + } + if (pContext) { + pAnnot->DrawInContext(pPage, pContext, &matrix, CPDF_Annot::Normal); + } else if (!pAnnot->DrawAppearance(pPage, pDevice, &matrix, + CPDF_Annot::Normal, pOptions)) { + pAnnot->DrawBorder(pDevice, &matrix, pOptions); + } + } +} + +void CPDF_AnnotList::DisplayAnnots(CPDF_Page* pPage, + CFX_RenderDevice* pDevice, + CPDF_RenderContext* pContext, + FX_BOOL bPrinting, + CFX_Matrix* pUser2Device, + FX_DWORD dwAnnotFlags, + CPDF_RenderOptions* pOptions, + FX_RECT* pClipRect) { + if (dwAnnotFlags & 0x01) { + DisplayPass(pPage, pDevice, pContext, bPrinting, pUser2Device, FALSE, + pOptions, pClipRect); + } + if (dwAnnotFlags & 0x02) { + DisplayPass(pPage, pDevice, pContext, bPrinting, pUser2Device, TRUE, + pOptions, pClipRect); + } +} + +CPDF_Annot::CPDF_Annot(CPDF_Dictionary* pDict, CPDF_AnnotList* pList) + : m_pAnnotDict(pDict), + m_pList(pList), + m_sSubtype(m_pAnnotDict->GetConstStringBy("Subtype")) {} +CPDF_Annot::~CPDF_Annot() { + ClearCachedAP(); +} +void CPDF_Annot::ClearCachedAP() { + for (const auto& pair : m_APMap) { + delete pair.second; + } + m_APMap.clear(); +} +CFX_ByteString CPDF_Annot::GetSubType() const { + return m_sSubtype; +} + +void CPDF_Annot::GetRect(CFX_FloatRect& rect) const { + if (!m_pAnnotDict) { + return; + } + rect = m_pAnnotDict->GetRectBy("Rect"); + rect.Normalize(); +} + +FX_DWORD CPDF_Annot::GetFlags() const { + return m_pAnnotDict->GetIntegerBy("F"); +} + +CPDF_Stream* FPDFDOC_GetAnnotAP(CPDF_Dictionary* pAnnotDict, + CPDF_Annot::AppearanceMode mode) { + CPDF_Dictionary* pAP = pAnnotDict->GetDictBy("AP"); + if (!pAP) { + return NULL; + } + const FX_CHAR* ap_entry = "N"; + if (mode == CPDF_Annot::Down) + ap_entry = "D"; + else if (mode == CPDF_Annot::Rollover) + ap_entry = "R"; + if (!pAP->KeyExist(ap_entry)) + ap_entry = "N"; + + CPDF_Object* psub = pAP->GetElementValue(ap_entry); + if (!psub) + return nullptr; + if (CPDF_Stream* pStream = psub->AsStream()) + return pStream; + + if (CPDF_Dictionary* pDict = psub->AsDictionary()) { + CFX_ByteString as = pAnnotDict->GetStringBy("AS"); + if (as.IsEmpty()) { + CFX_ByteString value = pAnnotDict->GetStringBy("V"); + if (value.IsEmpty()) { + CPDF_Dictionary* pDict = pAnnotDict->GetDictBy("Parent"); + value = pDict ? pDict->GetStringBy("V") : CFX_ByteString(); + } + if (value.IsEmpty() || !pDict->KeyExist(value)) + as = "Off"; + else + as = value; + } + return pDict->GetStreamBy(as); + } + return nullptr; +} + +CPDF_Form* CPDF_Annot::GetAPForm(const CPDF_Page* pPage, AppearanceMode mode) { + CPDF_Stream* pStream = FPDFDOC_GetAnnotAP(m_pAnnotDict, mode); + if (!pStream) + return nullptr; + + auto it = m_APMap.find(pStream); + if (it != m_APMap.end()) + return it->second; + + CPDF_Form* pNewForm = + new CPDF_Form(m_pList->GetDocument(), pPage->m_pResources, pStream); + pNewForm->ParseContent(nullptr, nullptr, nullptr, nullptr); + m_APMap[pStream] = pNewForm; + return pNewForm; +} + +static CPDF_Form* FPDFDOC_Annot_GetMatrix(const CPDF_Page* pPage, + CPDF_Annot* pAnnot, + CPDF_Annot::AppearanceMode mode, + const CFX_Matrix* pUser2Device, + CFX_Matrix& matrix) { + CPDF_Form* pForm = pAnnot->GetAPForm(pPage, mode); + if (!pForm) { + return NULL; + } + CFX_FloatRect form_bbox = pForm->m_pFormDict->GetRectBy("BBox"); + CFX_Matrix form_matrix = pForm->m_pFormDict->GetMatrixBy("Matrix"); + form_matrix.TransformRect(form_bbox); + CFX_FloatRect arect; + pAnnot->GetRect(arect); + matrix.MatchRect(arect, form_bbox); + matrix.Concat(*pUser2Device); + return pForm; +} +FX_BOOL CPDF_Annot::DrawAppearance(CPDF_Page* pPage, + CFX_RenderDevice* pDevice, + const CFX_Matrix* pUser2Device, + AppearanceMode mode, + const CPDF_RenderOptions* pOptions) { + CFX_Matrix matrix; + CPDF_Form* pForm = + FPDFDOC_Annot_GetMatrix(pPage, this, mode, pUser2Device, matrix); + if (!pForm) { + return FALSE; + } + CPDF_RenderContext context(pPage); + context.AppendLayer(pForm, &matrix); + context.Render(pDevice, pOptions, nullptr); + return TRUE; +} +FX_BOOL CPDF_Annot::DrawInContext(const CPDF_Page* pPage, + CPDF_RenderContext* pContext, + const CFX_Matrix* pUser2Device, + AppearanceMode mode) { + CFX_Matrix matrix; + CPDF_Form* pForm = + FPDFDOC_Annot_GetMatrix(pPage, this, mode, pUser2Device, matrix); + if (!pForm) { + return FALSE; + } + pContext->AppendLayer(pForm, &matrix); + return TRUE; +} +void CPDF_Annot::DrawBorder(CFX_RenderDevice* pDevice, + const CFX_Matrix* pUser2Device, + const CPDF_RenderOptions* pOptions) { + if (GetSubType() == "Popup") { + return; + } + FX_DWORD annot_flags = GetFlags(); + if (annot_flags & ANNOTFLAG_HIDDEN) { + return; + } + bool bPrinting = pDevice->GetDeviceClass() == FXDC_PRINTER || + (pOptions && (pOptions->m_Flags & RENDER_PRINTPREVIEW)); + if (bPrinting && (annot_flags & ANNOTFLAG_PRINT) == 0) { + return; + } + if (!bPrinting && (annot_flags & ANNOTFLAG_NOVIEW)) { + return; + } + CPDF_Dictionary* pBS = m_pAnnotDict->GetDictBy("BS"); + char style_char; + FX_FLOAT width; + CPDF_Array* pDashArray = NULL; + if (!pBS) { + CPDF_Array* pBorderArray = m_pAnnotDict->GetArrayBy("Border"); + style_char = 'S'; + if (pBorderArray) { + width = pBorderArray->GetNumberAt(2); + if (pBorderArray->GetCount() == 4) { + pDashArray = pBorderArray->GetArrayAt(3); + if (!pDashArray) { + return; + } + int nLen = pDashArray->GetCount(); + int i = 0; + for (; i < nLen; ++i) { + CPDF_Object* pObj = pDashArray->GetElementValue(i); + if (pObj && pObj->GetInteger()) { + break; + } + } + if (i == nLen) { + return; + } + style_char = 'D'; + } + } else { + width = 1; + } + } else { + CFX_ByteString style = pBS->GetStringBy("S"); + pDashArray = pBS->GetArrayBy("D"); + style_char = style[1]; + width = pBS->GetNumberBy("W"); + } + if (width <= 0) { + return; + } + CPDF_Array* pColor = m_pAnnotDict->GetArrayBy("C"); + FX_DWORD argb = 0xff000000; + if (pColor) { + int R = (int32_t)(pColor->GetNumberAt(0) * 255); + int G = (int32_t)(pColor->GetNumberAt(1) * 255); + int B = (int32_t)(pColor->GetNumberAt(2) * 255); + argb = ArgbEncode(0xff, R, G, B); + } + CFX_GraphStateData graph_state; + graph_state.m_LineWidth = width; + if (style_char == 'D') { + if (pDashArray) { + FX_DWORD dash_count = pDashArray->GetCount(); + if (dash_count % 2) { + dash_count++; + } + graph_state.m_DashArray = FX_Alloc(FX_FLOAT, dash_count); + graph_state.m_DashCount = dash_count; + FX_DWORD i; + for (i = 0; i < pDashArray->GetCount(); ++i) { + graph_state.m_DashArray[i] = pDashArray->GetNumberAt(i); + } + if (i < dash_count) { + graph_state.m_DashArray[i] = graph_state.m_DashArray[i - 1]; + } + } else { + graph_state.m_DashArray = FX_Alloc(FX_FLOAT, 2); + graph_state.m_DashCount = 2; + graph_state.m_DashArray[0] = graph_state.m_DashArray[1] = 3 * 1.0f; + } + } + CFX_FloatRect rect; + GetRect(rect); + CFX_PathData path; + width /= 2; + path.AppendRect(rect.left + width, rect.bottom + width, rect.right - width, + rect.top - width); + int fill_type = 0; + if (pOptions && (pOptions->m_Flags & RENDER_NOPATHSMOOTH)) { + fill_type |= FXFILL_NOPATHSMOOTH; + } + pDevice->DrawPath(&path, pUser2Device, &graph_state, argb, argb, fill_type); +} diff --git a/core/fpdfdoc/doc_ap.cpp b/core/fpdfdoc/doc_ap.cpp new file mode 100644 index 0000000000..d2400123d2 --- /dev/null +++ b/core/fpdfdoc/doc_ap.cpp @@ -0,0 +1,936 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfdoc/doc_utils.h" +#include "core/fpdfdoc/pdf_vt.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_simple_parser.h" +#include "core/include/fpdfdoc/fpdf_ap.h" +#include "core/include/fpdfdoc/fpdf_doc.h" +#include "core/include/fpdfdoc/fpdf_vt.h" + +#define PBS_SOLID 0 +#define PBS_DASH 1 +#define PBS_BEVELED 2 +#define PBS_INSET 3 +#define PBS_UNDERLINED 4 + +FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict) { + if (!pAnnotDict || pAnnotDict->GetConstStringBy("Subtype") != "Widget") { + return FALSE; + } + CFX_ByteString field_type = FPDF_GetFieldAttr(pAnnotDict, "FT")->GetString(); + FX_DWORD flags = FPDF_GetFieldAttr(pAnnotDict, "Ff") + ? FPDF_GetFieldAttr(pAnnotDict, "Ff")->GetInteger() + : 0; + if (field_type == "Tx") { + return CPVT_GenerateAP::GenerateTextFieldAP(pDoc, pAnnotDict); + } + if (field_type == "Ch") { + return (flags & (1 << 17)) + ? CPVT_GenerateAP::GenerateComboBoxAP(pDoc, pAnnotDict) + : CPVT_GenerateAP::GenerateListBoxAP(pDoc, pAnnotDict); + } + if (field_type == "Btn") { + if (!(flags & (1 << 16))) { + if (!pAnnotDict->KeyExist("AS")) { + if (CPDF_Dictionary* pParentDict = pAnnotDict->GetDictBy("Parent")) { + if (pParentDict->KeyExist("AS")) { + pAnnotDict->SetAtString("AS", pParentDict->GetStringBy("AS")); + } + } + } + } + } + return FALSE; +} + +class CPVT_FontMap : public IPVT_FontMap { + public: + CPVT_FontMap(CPDF_Document* pDoc, + CPDF_Dictionary* pResDict, + CPDF_Font* pDefFont, + const CFX_ByteString& sDefFontAlias); + ~CPVT_FontMap() override; + + // IPVT_FontMap + CPDF_Font* GetPDFFont(int32_t nFontIndex) override; + CFX_ByteString GetPDFFontAlias(int32_t nFontIndex) override; + + static void GetAnnotSysPDFFont(CPDF_Document* pDoc, + CPDF_Dictionary* pResDict, + CPDF_Font*& pSysFont, + CFX_ByteString& sSysFontAlias); + + private: + CPDF_Document* m_pDocument; + CPDF_Dictionary* m_pResDict; + CPDF_Font* m_pDefFont; + CFX_ByteString m_sDefFontAlias; + CPDF_Font* m_pSysFont; + CFX_ByteString m_sSysFontAlias; +}; + +CPVT_FontMap::CPVT_FontMap(CPDF_Document* pDoc, + CPDF_Dictionary* pResDict, + CPDF_Font* pDefFont, + const CFX_ByteString& sDefFontAlias) + : m_pDocument(pDoc), + m_pResDict(pResDict), + m_pDefFont(pDefFont), + m_sDefFontAlias(sDefFontAlias), + m_pSysFont(NULL), + m_sSysFontAlias() {} +CPVT_FontMap::~CPVT_FontMap() {} +void CPVT_FontMap::GetAnnotSysPDFFont(CPDF_Document* pDoc, + CPDF_Dictionary* pResDict, + CPDF_Font*& pSysFont, + CFX_ByteString& sSysFontAlias) { + if (pDoc && pResDict) { + CFX_ByteString sFontAlias; + CPDF_Dictionary* pFormDict = pDoc->GetRoot()->GetDictBy("AcroForm"); + if (CPDF_Font* pPDFFont = + AddNativeInterFormFont(pFormDict, pDoc, sSysFontAlias)) { + if (CPDF_Dictionary* pFontList = pResDict->GetDictBy("Font")) { + if (!pFontList->KeyExist(sSysFontAlias)) { + pFontList->SetAtReference(sSysFontAlias, pDoc, + pPDFFont->GetFontDict()); + } + } + pSysFont = pPDFFont; + } + } +} +CPDF_Font* CPVT_FontMap::GetPDFFont(int32_t nFontIndex) { + switch (nFontIndex) { + case 0: + return m_pDefFont; + case 1: + if (!m_pSysFont) { + GetAnnotSysPDFFont(m_pDocument, m_pResDict, m_pSysFont, + m_sSysFontAlias); + } + return m_pSysFont; + } + return NULL; +} +CFX_ByteString CPVT_FontMap::GetPDFFontAlias(int32_t nFontIndex) { + switch (nFontIndex) { + case 0: + return m_sDefFontAlias; + case 1: + if (!m_pSysFont) { + GetAnnotSysPDFFont(m_pDocument, m_pResDict, m_pSysFont, + m_sSysFontAlias); + } + return m_sSysFontAlias; + } + return ""; +} +CPVT_Provider::CPVT_Provider(IPVT_FontMap* pFontMap) : m_pFontMap(pFontMap) { + ASSERT(m_pFontMap); +} +CPVT_Provider::~CPVT_Provider() {} +int32_t CPVT_Provider::GetCharWidth(int32_t nFontIndex, + FX_WORD word, + int32_t nWordStyle) { + if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) { + FX_DWORD charcode = pPDFFont->CharCodeFromUnicode(word); + if (charcode != CPDF_Font::kInvalidCharCode) { + return pPDFFont->GetCharWidthF(charcode); + } + } + return 0; +} +int32_t CPVT_Provider::GetTypeAscent(int32_t nFontIndex) { + if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) { + return pPDFFont->GetTypeAscent(); + } + return 0; +} +int32_t CPVT_Provider::GetTypeDescent(int32_t nFontIndex) { + if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) { + return pPDFFont->GetTypeDescent(); + } + return 0; +} +int32_t CPVT_Provider::GetWordFontIndex(FX_WORD word, + int32_t charset, + int32_t nFontIndex) { + if (CPDF_Font* pDefFont = m_pFontMap->GetPDFFont(0)) { + if (pDefFont->CharCodeFromUnicode(word) != CPDF_Font::kInvalidCharCode) { + return 0; + } + } + if (CPDF_Font* pSysFont = m_pFontMap->GetPDFFont(1)) { + if (pSysFont->CharCodeFromUnicode(word) != CPDF_Font::kInvalidCharCode) { + return 1; + } + } + return -1; +} +FX_BOOL CPVT_Provider::IsLatinWord(FX_WORD word) { + if ((word >= 0x61 && word <= 0x7A) || (word >= 0x41 && word <= 0x5A) || + word == 0x2D || word == 0x27) { + return TRUE; + } + return FALSE; +} +int32_t CPVT_Provider::GetDefaultFontIndex() { + return 0; +} + +static CFX_ByteString GetPDFWordString(IPVT_FontMap* pFontMap, + int32_t nFontIndex, + FX_WORD Word, + FX_WORD SubWord) { + CFX_ByteString sWord; + if (SubWord > 0) { + sWord.Format("%c", SubWord); + return sWord; + } + + if (!pFontMap) + return sWord; + + if (CPDF_Font* pPDFFont = pFontMap->GetPDFFont(nFontIndex)) { + if (pPDFFont->GetBaseFont().Compare("Symbol") == 0 || + pPDFFont->GetBaseFont().Compare("ZapfDingbats") == 0) { + sWord.Format("%c", Word); + } else { + FX_DWORD dwCharCode = pPDFFont->CharCodeFromUnicode(Word); + if (dwCharCode != CPDF_Font::kInvalidCharCode) { + pPDFFont->AppendChar(sWord, dwCharCode); + } + } + } + return sWord; +} + +static CFX_ByteString GetWordRenderString(const CFX_ByteString& strWords) { + if (strWords.GetLength() > 0) { + return PDF_EncodeString(strWords) + " Tj\n"; + } + return ""; +} +static CFX_ByteString GetFontSetString(IPVT_FontMap* pFontMap, + int32_t nFontIndex, + FX_FLOAT fFontSize) { + CFX_ByteTextBuf sRet; + if (pFontMap) { + CFX_ByteString sFontAlias = pFontMap->GetPDFFontAlias(nFontIndex); + if (sFontAlias.GetLength() > 0 && fFontSize > 0) { + sRet << "/" << sFontAlias << " " << fFontSize << " Tf\n"; + } + } + return sRet.GetByteString(); +} +static CPVT_Color ParseColor(const CFX_ByteString& str) { + CPDF_SimpleParser syntax(str); + if (syntax.FindTagParamFromStart("g", 1)) { + return CPVT_Color(CPVT_Color::kGray, FX_atof(syntax.GetWord())); + } + if (syntax.FindTagParamFromStart("rg", 3)) { + FX_FLOAT f1 = FX_atof(syntax.GetWord()); + FX_FLOAT f2 = FX_atof(syntax.GetWord()); + FX_FLOAT f3 = FX_atof(syntax.GetWord()); + return CPVT_Color(CPVT_Color::kRGB, f1, f2, f3); + } + if (syntax.FindTagParamFromStart("k", 4)) { + FX_FLOAT f1 = FX_atof(syntax.GetWord()); + FX_FLOAT f2 = FX_atof(syntax.GetWord()); + FX_FLOAT f3 = FX_atof(syntax.GetWord()); + FX_FLOAT f4 = FX_atof(syntax.GetWord()); + return CPVT_Color(CPVT_Color::kCMYK, f1, f2, f3, f4); + } + return CPVT_Color(CPVT_Color::kTransparent); +} +static CPVT_Color ParseColor(const CPDF_Array& array) { + CPVT_Color rt; + switch (array.GetCount()) { + case 1: + rt = CPVT_Color(CPVT_Color::kGray, array.GetFloatAt(0)); + break; + case 3: + rt = CPVT_Color(CPVT_Color::kRGB, array.GetFloatAt(0), + array.GetFloatAt(1), array.GetFloatAt(2)); + break; + case 4: + rt = CPVT_Color(CPVT_Color::kCMYK, array.GetFloatAt(0), + array.GetFloatAt(1), array.GetFloatAt(2), + array.GetFloatAt(3)); + break; + } + return rt; +} +static FX_BOOL GenerateWidgetAP(CPDF_Document* pDoc, + CPDF_Dictionary* pAnnotDict, + const int32_t& nWidgetType) { + CPDF_Dictionary* pFormDict = NULL; + if (CPDF_Dictionary* pRootDict = pDoc->GetRoot()) { + pFormDict = pRootDict->GetDictBy("AcroForm"); + } + if (!pFormDict) { + return FALSE; + } + CFX_ByteString DA; + if (CPDF_Object* pDAObj = FPDF_GetFieldAttr(pAnnotDict, "DA")) { + DA = pDAObj->GetString(); + } + if (DA.IsEmpty()) { + DA = pFormDict->GetStringBy("DA"); + } + if (DA.IsEmpty()) { + return FALSE; + } + CPDF_SimpleParser syntax(DA); + syntax.FindTagParamFromStart("Tf", 2); + CFX_ByteString sFontName = syntax.GetWord(); + sFontName = PDF_NameDecode(sFontName); + if (sFontName.IsEmpty()) { + return FALSE; + } + FX_FLOAT fFontSize = FX_atof(syntax.GetWord()); + CPVT_Color crText = ParseColor(DA); + FX_BOOL bUseFormRes = FALSE; + CPDF_Dictionary* pFontDict = NULL; + CPDF_Dictionary* pDRDict = pAnnotDict->GetDictBy("DR"); + if (!pDRDict) { + pDRDict = pFormDict->GetDictBy("DR"); + bUseFormRes = TRUE; + } + CPDF_Dictionary* pDRFontDict = NULL; + if (pDRDict && (pDRFontDict = pDRDict->GetDictBy("Font"))) { + pFontDict = pDRFontDict->GetDictBy(sFontName.Mid(1)); + if (!pFontDict && !bUseFormRes) { + pDRDict = pFormDict->GetDictBy("DR"); + pDRFontDict = pDRDict->GetDictBy("Font"); + if (pDRFontDict) { + pFontDict = pDRFontDict->GetDictBy(sFontName.Mid(1)); + } + } + } + if (!pDRFontDict) { + return FALSE; + } + if (!pFontDict) { + pFontDict = new CPDF_Dictionary; + pFontDict->SetAtName("Type", "Font"); + pFontDict->SetAtName("Subtype", "Type1"); + pFontDict->SetAtName("BaseFont", "Helvetica"); + pFontDict->SetAtName("Encoding", "WinAnsiEncoding"); + pDoc->AddIndirectObject(pFontDict); + pDRFontDict->SetAtReference(sFontName.Mid(1), pDoc, pFontDict); + } + CPDF_Font* pDefFont = pDoc->LoadFont(pFontDict); + if (!pDefFont) { + return FALSE; + } + CFX_FloatRect rcAnnot = pAnnotDict->GetRectBy("Rect"); + int32_t nRotate = 0; + if (CPDF_Dictionary* pMKDict = pAnnotDict->GetDictBy("MK")) { + nRotate = pMKDict->GetIntegerBy("R"); + } + CFX_FloatRect rcBBox; + CFX_Matrix matrix; + switch (nRotate % 360) { + case 0: + rcBBox = CFX_FloatRect(0, 0, rcAnnot.right - rcAnnot.left, + rcAnnot.top - rcAnnot.bottom); + break; + case 90: + matrix = CFX_Matrix(0, 1, -1, 0, rcAnnot.right - rcAnnot.left, 0); + rcBBox = CFX_FloatRect(0, 0, rcAnnot.top - rcAnnot.bottom, + rcAnnot.right - rcAnnot.left); + break; + case 180: + matrix = CFX_Matrix(-1, 0, 0, -1, rcAnnot.right - rcAnnot.left, + rcAnnot.top - rcAnnot.bottom); + rcBBox = CFX_FloatRect(0, 0, rcAnnot.right - rcAnnot.left, + rcAnnot.top - rcAnnot.bottom); + break; + case 270: + matrix = CFX_Matrix(0, -1, 1, 0, 0, rcAnnot.top - rcAnnot.bottom); + rcBBox = CFX_FloatRect(0, 0, rcAnnot.top - rcAnnot.bottom, + rcAnnot.right - rcAnnot.left); + break; + } + int32_t nBorderStyle = PBS_SOLID; + FX_FLOAT fBorderWidth = 1; + CPVT_Dash dsBorder(3, 0, 0); + CPVT_Color crLeftTop, crRightBottom; + if (CPDF_Dictionary* pBSDict = pAnnotDict->GetDictBy("BS")) { + if (pBSDict->KeyExist("W")) { + fBorderWidth = pBSDict->GetNumberBy("W"); + } + if (CPDF_Array* pArray = pBSDict->GetArrayBy("D")) { + dsBorder = CPVT_Dash(pArray->GetIntegerAt(0), pArray->GetIntegerAt(1), + pArray->GetIntegerAt(2)); + } + switch (pBSDict->GetStringBy("S").GetAt(0)) { + case 'S': + nBorderStyle = PBS_SOLID; + break; + case 'D': + nBorderStyle = PBS_DASH; + break; + case 'B': + nBorderStyle = PBS_BEVELED; + fBorderWidth *= 2; + crLeftTop = CPVT_Color(CPVT_Color::kGray, 1); + crRightBottom = CPVT_Color(CPVT_Color::kGray, 0.5); + break; + case 'I': + nBorderStyle = PBS_INSET; + fBorderWidth *= 2; + crLeftTop = CPVT_Color(CPVT_Color::kGray, 0.5); + crRightBottom = CPVT_Color(CPVT_Color::kGray, 0.75); + break; + case 'U': + nBorderStyle = PBS_UNDERLINED; + break; + } + } + CPVT_Color crBorder, crBG; + if (CPDF_Dictionary* pMKDict = pAnnotDict->GetDictBy("MK")) { + if (CPDF_Array* pArray = pMKDict->GetArrayBy("BC")) { + crBorder = ParseColor(*pArray); + } + if (CPDF_Array* pArray = pMKDict->GetArrayBy("BG")) { + crBG = ParseColor(*pArray); + } + } + CFX_ByteTextBuf sAppStream; + CFX_ByteString sBG = CPVT_GenerateAP::GenerateColorAP(crBG, TRUE); + if (sBG.GetLength() > 0) { + sAppStream << "q\n" << sBG << rcBBox.left << " " << rcBBox.bottom << " " + << rcBBox.Width() << " " << rcBBox.Height() << " re f\n" + << "Q\n"; + } + CFX_ByteString sBorderStream = CPVT_GenerateAP::GenerateBorderAP( + rcBBox, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, + dsBorder); + if (sBorderStream.GetLength() > 0) { + sAppStream << "q\n" << sBorderStream << "Q\n"; + } + CFX_FloatRect rcBody = + CFX_FloatRect(rcBBox.left + fBorderWidth, rcBBox.bottom + fBorderWidth, + rcBBox.right - fBorderWidth, rcBBox.top - fBorderWidth); + rcBody.Normalize(); + CPDF_Dictionary* pAPDict = pAnnotDict->GetDictBy("AP"); + if (!pAPDict) { + pAPDict = new CPDF_Dictionary; + pAnnotDict->SetAt("AP", pAPDict); + } + CPDF_Stream* pNormalStream = pAPDict->GetStreamBy("N"); + if (!pNormalStream) { + pNormalStream = new CPDF_Stream(nullptr, 0, nullptr); + int32_t objnum = pDoc->AddIndirectObject(pNormalStream); + pAnnotDict->GetDictBy("AP")->SetAtReference("N", pDoc, objnum); + } + CPDF_Dictionary* pStreamDict = pNormalStream->GetDict(); + if (pStreamDict) { + pStreamDict->SetAtMatrix("Matrix", matrix); + pStreamDict->SetAtRect("BBox", rcBBox); + CPDF_Dictionary* pStreamResList = pStreamDict->GetDictBy("Resources"); + if (pStreamResList) { + CPDF_Dictionary* pStreamResFontList = pStreamResList->GetDictBy("Font"); + if (!pStreamResFontList) { + pStreamResFontList = new CPDF_Dictionary; + pStreamResList->SetAt("Font", pStreamResFontList); + } + if (!pStreamResFontList->KeyExist(sFontName)) { + pStreamResFontList->SetAtReference(sFontName, pDoc, pFontDict); + } + } else { + pStreamDict->SetAt("Resources", pFormDict->GetDictBy("DR")->Clone()); + pStreamResList = pStreamDict->GetDictBy("Resources"); + } + } + switch (nWidgetType) { + case 0: { + CFX_WideString swValue = + FPDF_GetFieldAttr(pAnnotDict, "V") + ? FPDF_GetFieldAttr(pAnnotDict, "V")->GetUnicodeText() + : CFX_WideString(); + int32_t nAlign = FPDF_GetFieldAttr(pAnnotDict, "Q") + ? FPDF_GetFieldAttr(pAnnotDict, "Q")->GetInteger() + : 0; + FX_DWORD dwFlags = FPDF_GetFieldAttr(pAnnotDict, "Ff") + ? FPDF_GetFieldAttr(pAnnotDict, "Ff")->GetInteger() + : 0; + FX_DWORD dwMaxLen = + FPDF_GetFieldAttr(pAnnotDict, "MaxLen") + ? FPDF_GetFieldAttr(pAnnotDict, "MaxLen")->GetInteger() + : 0; + CPVT_FontMap map(pDoc, + pStreamDict ? pStreamDict->GetDictBy("Resources") : NULL, + pDefFont, sFontName.Right(sFontName.GetLength() - 1)); + CPVT_Provider prd(&map); + CPDF_VariableText vt; + vt.SetProvider(&prd); + vt.SetPlateRect(rcBody); + vt.SetAlignment(nAlign); + if (IsFloatZero(fFontSize)) { + vt.SetAutoFontSize(TRUE); + } else { + vt.SetFontSize(fFontSize); + } + FX_BOOL bMultiLine = (dwFlags >> 12) & 1; + if (bMultiLine) { + vt.SetMultiLine(TRUE); + vt.SetAutoReturn(TRUE); + } + FX_WORD subWord = 0; + if ((dwFlags >> 13) & 1) { + subWord = '*'; + vt.SetPasswordChar(subWord); + } + FX_BOOL bCharArray = (dwFlags >> 24) & 1; + if (bCharArray) { + vt.SetCharArray(dwMaxLen); + } else { + vt.SetLimitChar(dwMaxLen); + } + vt.Initialize(); + vt.SetText(swValue.c_str()); + vt.RearrangeAll(); + CFX_FloatRect rcContent = vt.GetContentRect(); + CFX_FloatPoint ptOffset(0.0f, 0.0f); + if (!bMultiLine) { + ptOffset = + CFX_FloatPoint(0.0f, (rcContent.Height() - rcBody.Height()) / 2.0f); + } + CFX_ByteString sBody = CPVT_GenerateAP::GenerateEditAP( + &map, vt.GetIterator(), ptOffset, !bCharArray, subWord); + if (sBody.GetLength() > 0) { + sAppStream << "/Tx BMC\n" + << "q\n"; + if (rcContent.Width() > rcBody.Width() || + rcContent.Height() > rcBody.Height()) { + sAppStream << rcBody.left << " " << rcBody.bottom << " " + << rcBody.Width() << " " << rcBody.Height() + << " re\nW\nn\n"; + } + sAppStream << "BT\n" << CPVT_GenerateAP::GenerateColorAP(crText, TRUE) + << sBody << "ET\n" + << "Q\nEMC\n"; + } + } break; + case 1: { + CFX_WideString swValue = + FPDF_GetFieldAttr(pAnnotDict, "V") + ? FPDF_GetFieldAttr(pAnnotDict, "V")->GetUnicodeText() + : CFX_WideString(); + CPVT_FontMap map(pDoc, + pStreamDict ? pStreamDict->GetDictBy("Resources") : NULL, + pDefFont, sFontName.Right(sFontName.GetLength() - 1)); + CPVT_Provider prd(&map); + CPDF_VariableText vt; + vt.SetProvider(&prd); + CFX_FloatRect rcButton = rcBody; + rcButton.left = rcButton.right - 13; + rcButton.Normalize(); + CFX_FloatRect rcEdit = rcBody; + rcEdit.right = rcButton.left; + rcEdit.Normalize(); + vt.SetPlateRect(rcEdit); + if (IsFloatZero(fFontSize)) { + vt.SetAutoFontSize(TRUE); + } else { + vt.SetFontSize(fFontSize); + } + vt.Initialize(); + vt.SetText(swValue.c_str()); + vt.RearrangeAll(); + CFX_FloatRect rcContent = vt.GetContentRect(); + CFX_FloatPoint ptOffset = + CFX_FloatPoint(0.0f, (rcContent.Height() - rcEdit.Height()) / 2.0f); + CFX_ByteString sEdit = CPVT_GenerateAP::GenerateEditAP( + &map, vt.GetIterator(), ptOffset, TRUE, 0); + if (sEdit.GetLength() > 0) { + sAppStream << "/Tx BMC\n" + << "q\n"; + sAppStream << rcEdit.left << " " << rcEdit.bottom << " " + << rcEdit.Width() << " " << rcEdit.Height() << " re\nW\nn\n"; + sAppStream << "BT\n" << CPVT_GenerateAP::GenerateColorAP(crText, TRUE) + << sEdit << "ET\n" + << "Q\nEMC\n"; + } + CFX_ByteString sButton = CPVT_GenerateAP::GenerateColorAP( + CPVT_Color(CPVT_Color::kRGB, 220.0f / 255.0f, 220.0f / 255.0f, + 220.0f / 255.0f), + TRUE); + if (sButton.GetLength() > 0 && !rcButton.IsEmpty()) { + sAppStream << "q\n" << sButton; + sAppStream << rcButton.left << " " << rcButton.bottom << " " + << rcButton.Width() << " " << rcButton.Height() << " re f\n"; + sAppStream << "Q\n"; + CFX_ByteString sButtonBorder = CPVT_GenerateAP::GenerateBorderAP( + rcButton, 2, CPVT_Color(CPVT_Color::kGray, 0), + CPVT_Color(CPVT_Color::kGray, 1), + CPVT_Color(CPVT_Color::kGray, 0.5), PBS_BEVELED, + CPVT_Dash(3, 0, 0)); + if (sButtonBorder.GetLength() > 0) { + sAppStream << "q\n" << sButtonBorder << "Q\n"; + } + CFX_FloatPoint ptCenter = + CFX_FloatPoint((rcButton.left + rcButton.right) / 2, + (rcButton.top + rcButton.bottom) / 2); + if (IsFloatBigger(rcButton.Width(), 6) && + IsFloatBigger(rcButton.Height(), 6)) { + sAppStream << "q\n" + << " 0 g\n"; + sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " m\n"; + sAppStream << ptCenter.x + 3 << " " << ptCenter.y + 1.5f << " l\n"; + sAppStream << ptCenter.x << " " << ptCenter.y - 1.5f << " l\n"; + sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " l f\n"; + sAppStream << sButton << "Q\n"; + } + } + } break; + case 2: { + CPVT_FontMap map(pDoc, + pStreamDict ? pStreamDict->GetDictBy("Resources") : NULL, + pDefFont, sFontName.Right(sFontName.GetLength() - 1)); + CPVT_Provider prd(&map); + CPDF_Array* pOpts = FPDF_GetFieldAttr(pAnnotDict, "Opt") + ? FPDF_GetFieldAttr(pAnnotDict, "Opt")->GetArray() + : NULL; + CPDF_Array* pSels = FPDF_GetFieldAttr(pAnnotDict, "I") + ? FPDF_GetFieldAttr(pAnnotDict, "I")->GetArray() + : NULL; + int32_t nTop = FPDF_GetFieldAttr(pAnnotDict, "TI") + ? FPDF_GetFieldAttr(pAnnotDict, "TI")->GetInteger() + : 0; + CFX_ByteTextBuf sBody; + if (pOpts) { + FX_FLOAT fy = rcBody.top; + for (int32_t i = nTop, sz = pOpts->GetCount(); i < sz; i++) { + if (IsFloatSmaller(fy, rcBody.bottom)) { + break; + } + if (CPDF_Object* pOpt = pOpts->GetElementValue(i)) { + CFX_WideString swItem; + if (pOpt->IsString()) + swItem = pOpt->GetUnicodeText(); + else if (CPDF_Array* pArray = pOpt->AsArray()) + swItem = pArray->GetElementValue(1)->GetUnicodeText(); + + FX_BOOL bSelected = FALSE; + if (pSels) { + for (FX_DWORD s = 0, ssz = pSels->GetCount(); s < ssz; s++) { + if (i == pSels->GetIntegerAt(s)) { + bSelected = TRUE; + break; + } + } + } + CPDF_VariableText vt; + vt.SetProvider(&prd); + vt.SetPlateRect( + CFX_FloatRect(rcBody.left, 0.0f, rcBody.right, 0.0f)); + if (IsFloatZero(fFontSize)) { + vt.SetFontSize(12.0f); + } else { + vt.SetFontSize(fFontSize); + } + vt.Initialize(); + vt.SetText(swItem.c_str()); + vt.RearrangeAll(); + FX_FLOAT fItemHeight = vt.GetContentRect().Height(); + if (bSelected) { + CFX_FloatRect rcItem = CFX_FloatRect( + rcBody.left, fy - fItemHeight, rcBody.right, fy); + sBody << "q\n" << CPVT_GenerateAP::GenerateColorAP( + CPVT_Color(CPVT_Color::kRGB, 0, + 51.0f / 255.0f, 113.0f / 255.0f), + TRUE) + << rcItem.left << " " << rcItem.bottom << " " + << rcItem.Width() << " " << rcItem.Height() << " re f\n" + << "Q\n"; + sBody << "BT\n" << CPVT_GenerateAP::GenerateColorAP( + CPVT_Color(CPVT_Color::kGray, 1), TRUE) + << CPVT_GenerateAP::GenerateEditAP(&map, vt.GetIterator(), + CFX_FloatPoint(0.0f, fy), + TRUE, 0) + << "ET\n"; + } else { + sBody << "BT\n" << CPVT_GenerateAP::GenerateColorAP(crText, TRUE) + << CPVT_GenerateAP::GenerateEditAP(&map, vt.GetIterator(), + CFX_FloatPoint(0.0f, fy), + TRUE, 0) + << "ET\n"; + } + fy -= fItemHeight; + } + } + } + if (sBody.GetSize() > 0) { + sAppStream << "/Tx BMC\n" + << "q\n"; + sAppStream << rcBody.left << " " << rcBody.bottom << " " + << rcBody.Width() << " " << rcBody.Height() << " re\nW\nn\n"; + sAppStream << sBody.GetByteString() << "Q\nEMC\n"; + } + } break; + } + if (pNormalStream) { + pNormalStream->SetData((uint8_t*)sAppStream.GetBuffer(), + sAppStream.GetSize(), FALSE, FALSE); + pStreamDict = pNormalStream->GetDict(); + if (pStreamDict) { + pStreamDict->SetAtMatrix("Matrix", matrix); + pStreamDict->SetAtRect("BBox", rcBBox); + CPDF_Dictionary* pStreamResList = pStreamDict->GetDictBy("Resources"); + if (pStreamResList) { + CPDF_Dictionary* pStreamResFontList = pStreamResList->GetDictBy("Font"); + if (!pStreamResFontList) { + pStreamResFontList = new CPDF_Dictionary; + pStreamResList->SetAt("Font", pStreamResFontList); + } + if (!pStreamResFontList->KeyExist(sFontName)) { + pStreamResFontList->SetAtReference(sFontName, pDoc, pFontDict); + } + } else { + pStreamDict->SetAt("Resources", pFormDict->GetDictBy("DR")->Clone()); + pStreamResList = pStreamDict->GetDictBy("Resources"); + } + } + } + return TRUE; +} +FX_BOOL CPVT_GenerateAP::GenerateTextFieldAP(CPDF_Document* pDoc, + CPDF_Dictionary* pAnnotDict) { + return GenerateWidgetAP(pDoc, pAnnotDict, 0); +} +FX_BOOL CPVT_GenerateAP::GenerateComboBoxAP(CPDF_Document* pDoc, + CPDF_Dictionary* pAnnotDict) { + return GenerateWidgetAP(pDoc, pAnnotDict, 1); +} +FX_BOOL CPVT_GenerateAP::GenerateListBoxAP(CPDF_Document* pDoc, + CPDF_Dictionary* pAnnotDict) { + return GenerateWidgetAP(pDoc, pAnnotDict, 2); +} +CFX_ByteString CPVT_GenerateAP::GenerateEditAP( + IPVT_FontMap* pFontMap, + IPDF_VariableText_Iterator* pIterator, + const CFX_FloatPoint& ptOffset, + FX_BOOL bContinuous, + FX_WORD SubWord, + const CPVT_WordRange* pVisible) { + CFX_ByteTextBuf sEditStream, sLineStream, sWords; + CFX_FloatPoint ptOld(0.0f, 0.0f), ptNew(0.0f, 0.0f); + int32_t nCurFontIndex = -1; + if (pIterator) { + if (pVisible) { + pIterator->SetAt(pVisible->BeginPos); + } else { + pIterator->SetAt(0); + } + CPVT_WordPlace oldplace; + while (pIterator->NextWord()) { + CPVT_WordPlace place = pIterator->GetAt(); + if (pVisible && place.WordCmp(pVisible->EndPos) > 0) { + break; + } + if (bContinuous) { + if (place.LineCmp(oldplace) != 0) { + if (sWords.GetSize() > 0) { + sLineStream << GetWordRenderString(sWords.GetByteString()); + sEditStream << sLineStream; + sLineStream.Clear(); + sWords.Clear(); + } + CPVT_Word word; + if (pIterator->GetWord(word)) { + ptNew = CFX_FloatPoint(word.ptWord.x + ptOffset.x, + word.ptWord.y + ptOffset.y); + } else { + CPVT_Line line; + pIterator->GetLine(line); + ptNew = CFX_FloatPoint(line.ptLine.x + ptOffset.x, + line.ptLine.y + ptOffset.y); + } + if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) { + sLineStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y + << " Td\n"; + ptOld = ptNew; + } + } + CPVT_Word word; + if (pIterator->GetWord(word)) { + if (word.nFontIndex != nCurFontIndex) { + if (sWords.GetSize() > 0) { + sLineStream << GetWordRenderString(sWords.GetByteString()); + sWords.Clear(); + } + sLineStream << GetFontSetString(pFontMap, word.nFontIndex, + word.fFontSize); + nCurFontIndex = word.nFontIndex; + } + sWords << GetPDFWordString(pFontMap, nCurFontIndex, word.Word, + SubWord); + } + oldplace = place; + } else { + CPVT_Word word; + if (pIterator->GetWord(word)) { + ptNew = CFX_FloatPoint(word.ptWord.x + ptOffset.x, + word.ptWord.y + ptOffset.y); + if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) { + sEditStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y + << " Td\n"; + ptOld = ptNew; + } + if (word.nFontIndex != nCurFontIndex) { + sEditStream << GetFontSetString(pFontMap, word.nFontIndex, + word.fFontSize); + nCurFontIndex = word.nFontIndex; + } + sEditStream << GetWordRenderString( + GetPDFWordString(pFontMap, nCurFontIndex, word.Word, SubWord)); + } + } + } + if (sWords.GetSize() > 0) { + sLineStream << GetWordRenderString(sWords.GetByteString()); + sEditStream << sLineStream; + sWords.Clear(); + } + } + return sEditStream.GetByteString(); +} +CFX_ByteString CPVT_GenerateAP::GenerateBorderAP( + const CFX_FloatRect& rect, + FX_FLOAT fWidth, + const CPVT_Color& color, + const CPVT_Color& crLeftTop, + const CPVT_Color& crRightBottom, + int32_t nStyle, + const CPVT_Dash& dash) { + CFX_ByteTextBuf sAppStream; + CFX_ByteString sColor; + FX_FLOAT fLeft = rect.left; + FX_FLOAT fRight = rect.right; + FX_FLOAT fTop = rect.top; + FX_FLOAT fBottom = rect.bottom; + if (fWidth > 0.0f) { + FX_FLOAT fHalfWidth = fWidth / 2.0f; + switch (nStyle) { + default: + case PBS_SOLID: + sColor = GenerateColorAP(color, TRUE); + if (sColor.GetLength() > 0) { + sAppStream << sColor; + sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " + << fTop - fBottom << " re\n"; + sAppStream << fLeft + fWidth << " " << fBottom + fWidth << " " + << fRight - fLeft - fWidth * 2 << " " + << fTop - fBottom - fWidth * 2 << " re\n"; + sAppStream << "f*\n"; + } + break; + case PBS_DASH: + sColor = GenerateColorAP(color, FALSE); + if (sColor.GetLength() > 0) { + sAppStream << sColor; + sAppStream << fWidth << " w" + << " [" << dash.nDash << " " << dash.nGap << "] " + << dash.nPhase << " d\n"; + sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 + << " m\n"; + sAppStream << fLeft + fWidth / 2 << " " << fTop - fWidth / 2 + << " l\n"; + sAppStream << fRight - fWidth / 2 << " " << fTop - fWidth / 2 + << " l\n"; + sAppStream << fRight - fWidth / 2 << " " << fBottom + fWidth / 2 + << " l\n"; + sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 + << " l S\n"; + } + break; + case PBS_BEVELED: + case PBS_INSET: + sColor = GenerateColorAP(crLeftTop, TRUE); + if (sColor.GetLength() > 0) { + sAppStream << sColor; + sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth + << " m\n"; + sAppStream << fLeft + fHalfWidth << " " << fTop - fHalfWidth + << " l\n"; + sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth + << " l\n"; + sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 + << " l\n"; + sAppStream << fLeft + fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 + << " l\n"; + sAppStream << fLeft + fHalfWidth * 2 << " " + << fBottom + fHalfWidth * 2 << " l f\n"; + } + sColor = GenerateColorAP(crRightBottom, TRUE); + if (sColor.GetLength() > 0) { + sAppStream << sColor; + sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth + << " m\n"; + sAppStream << fRight - fHalfWidth << " " << fBottom + fHalfWidth + << " l\n"; + sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth + << " l\n"; + sAppStream << fLeft + fHalfWidth * 2 << " " + << fBottom + fHalfWidth * 2 << " l\n"; + sAppStream << fRight - fHalfWidth * 2 << " " + << fBottom + fHalfWidth * 2 << " l\n"; + sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 + << " l f\n"; + } + sColor = GenerateColorAP(color, TRUE); + if (sColor.GetLength() > 0) { + sAppStream << sColor; + sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " + << fTop - fBottom << " re\n"; + sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " " + << fRight - fLeft - fHalfWidth * 2 << " " + << fTop - fBottom - fHalfWidth * 2 << " re f*\n"; + } + break; + case PBS_UNDERLINED: + sColor = GenerateColorAP(color, FALSE); + if (sColor.GetLength() > 0) { + sAppStream << sColor; + sAppStream << fWidth << " w\n"; + sAppStream << fLeft << " " << fBottom + fWidth / 2 << " m\n"; + sAppStream << fRight << " " << fBottom + fWidth / 2 << " l S\n"; + } + break; + } + } + return sAppStream.GetByteString(); +} +CFX_ByteString CPVT_GenerateAP::GenerateColorAP(const CPVT_Color& color, + const FX_BOOL& bFillOrStroke) { + CFX_ByteTextBuf sColorStream; + switch (color.nColorType) { + case CPVT_Color::kRGB: + sColorStream << color.fColor1 << " " << color.fColor2 << " " + << color.fColor3 << " " << (bFillOrStroke ? "rg" : "RG") + << "\n"; + break; + case CPVT_Color::kGray: + sColorStream << color.fColor1 << " " << (bFillOrStroke ? "g" : "G") + << "\n"; + break; + case CPVT_Color::kCMYK: + sColorStream << color.fColor1 << " " << color.fColor2 << " " + << color.fColor3 << " " << color.fColor4 << " " + << (bFillOrStroke ? "k" : "K") << "\n"; + break; + case CPVT_Color::kTransparent: + break; + } + return sColorStream.GetByteString(); +} diff --git a/core/fpdfdoc/doc_basic.cpp b/core/fpdfdoc/doc_basic.cpp new file mode 100644 index 0000000000..b3a6511734 --- /dev/null +++ b/core/fpdfdoc/doc_basic.cpp @@ -0,0 +1,510 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfdoc/doc_utils.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +const int nMaxRecursion = 32; +int CPDF_Dest::GetPageIndex(CPDF_Document* pDoc) { + CPDF_Array* pArray = ToArray(m_pObj); + if (!pArray) + return 0; + + CPDF_Object* pPage = pArray->GetElementValue(0); + if (!pPage) + return 0; + if (pPage->IsNumber()) + return pPage->GetInteger(); + if (!pPage->IsDictionary()) + return 0; + return pDoc->GetPageIndex(pPage->GetObjNum()); +} +FX_DWORD CPDF_Dest::GetPageObjNum() { + CPDF_Array* pArray = ToArray(m_pObj); + if (!pArray) + return 0; + + CPDF_Object* pPage = pArray->GetElementValue(0); + if (!pPage) + return 0; + if (pPage->IsNumber()) + return pPage->GetInteger(); + if (pPage->IsDictionary()) + return pPage->GetObjNum(); + return 0; +} +const FX_CHAR* g_sZoomModes[] = {"XYZ", "Fit", "FitH", "FitV", "FitR", + "FitB", "FitBH", "FitBV", ""}; +int CPDF_Dest::GetZoomMode() { + CPDF_Array* pArray = ToArray(m_pObj); + if (!pArray) + return 0; + + CFX_ByteString mode; + CPDF_Object* pObj = pArray->GetElementValue(1); + mode = pObj ? pObj->GetString() : CFX_ByteString(); + int i = 0; + while (g_sZoomModes[i][0] != '\0') { + if (mode == g_sZoomModes[i]) { + return i + 1; + } + i++; + } + return 0; +} +FX_FLOAT CPDF_Dest::GetParam(int index) { + CPDF_Array* pArray = ToArray(m_pObj); + return pArray ? pArray->GetNumberAt(2 + index) : 0; +} +CFX_ByteString CPDF_Dest::GetRemoteName() { + return m_pObj ? m_pObj->GetString() : CFX_ByteString(); +} +CPDF_NameTree::CPDF_NameTree(CPDF_Document* pDoc, + const CFX_ByteStringC& category) { + if (pDoc->GetRoot() && pDoc->GetRoot()->GetDictBy("Names")) + m_pRoot = pDoc->GetRoot()->GetDictBy("Names")->GetDictBy(category); + else + m_pRoot = NULL; +} +static CPDF_Object* SearchNameNode(CPDF_Dictionary* pNode, + const CFX_ByteString& csName, + int& nIndex, + CPDF_Array** ppFind, + int nLevel = 0) { + if (nLevel > nMaxRecursion) { + return NULL; + } + CPDF_Array* pLimits = pNode->GetArrayBy("Limits"); + if (pLimits) { + CFX_ByteString csLeft = pLimits->GetStringAt(0); + CFX_ByteString csRight = pLimits->GetStringAt(1); + if (csLeft.Compare(csRight) > 0) { + CFX_ByteString csTmp = csRight; + csRight = csLeft; + csLeft = csTmp; + } + if (csName.Compare(csLeft) < 0 || csName.Compare(csRight) > 0) { + return NULL; + } + } + CPDF_Array* pNames = pNode->GetArrayBy("Names"); + if (pNames) { + FX_DWORD dwCount = pNames->GetCount() / 2; + for (FX_DWORD i = 0; i < dwCount; i++) { + CFX_ByteString csValue = pNames->GetStringAt(i * 2); + int32_t iCompare = csValue.Compare(csName); + if (iCompare <= 0) { + if (ppFind) { + *ppFind = pNames; + } + if (iCompare < 0) { + continue; + } + } else { + break; + } + nIndex += i; + return pNames->GetElementValue(i * 2 + 1); + } + nIndex += dwCount; + return NULL; + } + CPDF_Array* pKids = pNode->GetArrayBy("Kids"); + if (!pKids) { + return NULL; + } + for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { + CPDF_Dictionary* pKid = pKids->GetDictAt(i); + if (!pKid) { + continue; + } + CPDF_Object* pFound = + SearchNameNode(pKid, csName, nIndex, ppFind, nLevel + 1); + if (pFound) { + return pFound; + } + } + return NULL; +} +static CPDF_Object* SearchNameNode(CPDF_Dictionary* pNode, + int nIndex, + int& nCurIndex, + CFX_ByteString& csName, + CPDF_Array** ppFind, + int nLevel = 0) { + if (nLevel > nMaxRecursion) { + return NULL; + } + CPDF_Array* pNames = pNode->GetArrayBy("Names"); + if (pNames) { + int nCount = pNames->GetCount() / 2; + if (nIndex >= nCurIndex + nCount) { + nCurIndex += nCount; + return NULL; + } + if (ppFind) { + *ppFind = pNames; + } + csName = pNames->GetStringAt((nIndex - nCurIndex) * 2); + return pNames->GetElementValue((nIndex - nCurIndex) * 2 + 1); + } + CPDF_Array* pKids = pNode->GetArrayBy("Kids"); + if (!pKids) { + return NULL; + } + for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { + CPDF_Dictionary* pKid = pKids->GetDictAt(i); + if (!pKid) { + continue; + } + CPDF_Object* pFound = + SearchNameNode(pKid, nIndex, nCurIndex, csName, ppFind, nLevel + 1); + if (pFound) { + return pFound; + } + } + return NULL; +} +static int CountNames(CPDF_Dictionary* pNode, int nLevel = 0) { + if (nLevel > nMaxRecursion) { + return 0; + } + CPDF_Array* pNames = pNode->GetArrayBy("Names"); + if (pNames) { + return pNames->GetCount() / 2; + } + CPDF_Array* pKids = pNode->GetArrayBy("Kids"); + if (!pKids) { + return 0; + } + int nCount = 0; + for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { + CPDF_Dictionary* pKid = pKids->GetDictAt(i); + if (!pKid) { + continue; + } + nCount += CountNames(pKid, nLevel + 1); + } + return nCount; +} +int CPDF_NameTree::GetCount() const { + if (!m_pRoot) { + return 0; + } + return ::CountNames(m_pRoot); +} +int CPDF_NameTree::GetIndex(const CFX_ByteString& csName) const { + if (!m_pRoot) { + return -1; + } + int nIndex = 0; + if (!SearchNameNode(m_pRoot, csName, nIndex, NULL)) { + return -1; + } + return nIndex; +} +CPDF_Object* CPDF_NameTree::LookupValue(int nIndex, + CFX_ByteString& csName) const { + if (!m_pRoot) { + return NULL; + } + int nCurIndex = 0; + return SearchNameNode(m_pRoot, nIndex, nCurIndex, csName, NULL); +} +CPDF_Object* CPDF_NameTree::LookupValue(const CFX_ByteString& csName) const { + if (!m_pRoot) { + return NULL; + } + int nIndex = 0; + return SearchNameNode(m_pRoot, csName, nIndex, NULL); +} +CPDF_Array* CPDF_NameTree::LookupNamedDest(CPDF_Document* pDoc, + const CFX_ByteStringC& sName) { + CPDF_Object* pValue = LookupValue(sName); + if (!pValue) { + CPDF_Dictionary* pDests = pDoc->GetRoot()->GetDictBy("Dests"); + if (!pDests) + return nullptr; + pValue = pDests->GetElementValue(sName); + } + if (!pValue) + return nullptr; + if (CPDF_Array* pArray = pValue->AsArray()) + return pArray; + if (CPDF_Dictionary* pDict = pValue->AsDictionary()) + return pDict->GetArrayBy("D"); + return nullptr; +} + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +static CFX_WideString ChangeSlashToPlatform(const FX_WCHAR* str) { + CFX_WideString result; + while (*str) { + if (*str == '/') { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + result += ':'; +#else + result += '\\'; +#endif + } else { + result += *str; + } + str++; + } + return result; +} + +static CFX_WideString ChangeSlashToPDF(const FX_WCHAR* str) { + CFX_WideString result; + while (*str) { + if (*str == '\\' || *str == ':') { + result += '/'; + } else { + result += *str; + } + str++; + } + return result; +} +#endif // _FXM_PLATFORM_APPLE_ || _FXM_PLATFORM_WINDOWS_ + +CFX_WideString CPDF_FileSpec::DecodeFileName(const CFX_WideStringC& filepath) { + if (filepath.GetLength() <= 1) + return CFX_WideString(); + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (filepath.Left(sizeof("/Mac") - 1) == CFX_WideStringC(L"/Mac")) + return ChangeSlashToPlatform(filepath.GetPtr() + 1); + return ChangeSlashToPlatform(filepath.GetPtr()); +#elif _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + if (filepath.GetAt(0) != '/') + return ChangeSlashToPlatform(filepath.GetPtr()); + if (filepath.GetAt(1) == '/') + return ChangeSlashToPlatform(filepath.GetPtr() + 1); + if (filepath.GetAt(2) == '/') { + CFX_WideString result; + result += filepath.GetAt(1); + result += ':'; + result += ChangeSlashToPlatform(filepath.GetPtr() + 2); + return result; + } + CFX_WideString result; + result += '\\'; + result += ChangeSlashToPlatform(filepath.GetPtr()); + return result; +#else + return filepath; +#endif +} + +bool CPDF_FileSpec::GetFileName(CFX_WideString* csFileName) const { + if (CPDF_Dictionary* pDict = m_pObj->AsDictionary()) { + *csFileName = pDict->GetUnicodeTextBy("UF"); + if (csFileName->IsEmpty()) { + *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("F")); + } + if (pDict->GetStringBy("FS") == "URL") + return true; + if (csFileName->IsEmpty()) { + if (pDict->KeyExist("DOS")) { + *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("DOS")); + } else if (pDict->KeyExist("Mac")) { + *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("Mac")); + } else if (pDict->KeyExist("Unix")) { + *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("Unix")); + } else { + return false; + } + } + } else if (m_pObj->IsString()) { + *csFileName = CFX_WideString::FromLocal(m_pObj->GetString()); + } else { + return false; + } + *csFileName = DecodeFileName(*csFileName); + return true; +} + +CPDF_FileSpec::CPDF_FileSpec() { + m_pObj = new CPDF_Dictionary; + m_pObj->AsDictionary()->SetAtName("Type", "Filespec"); +} + +CFX_WideString CPDF_FileSpec::EncodeFileName(const CFX_WideStringC& filepath) { + if (filepath.GetLength() <= 1) { + return CFX_WideString(); + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + if (filepath.GetAt(1) == ':') { + CFX_WideString result; + result = '/'; + result += filepath.GetAt(0); + if (filepath.GetAt(2) != '\\') { + result += '/'; + } + result += ChangeSlashToPDF(filepath.GetPtr() + 2); + return result; + } + if (filepath.GetAt(0) == '\\' && filepath.GetAt(1) == '\\') { + return ChangeSlashToPDF(filepath.GetPtr() + 1); + } + if (filepath.GetAt(0) == '\\') { + CFX_WideString result; + result = '/'; + result += ChangeSlashToPDF(filepath.GetPtr()); + return result; + } + return ChangeSlashToPDF(filepath.GetPtr()); +#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (filepath.Left(sizeof("Mac") - 1) == FX_WSTRC(L"Mac")) { + CFX_WideString result; + result = '/'; + result += ChangeSlashToPDF(filepath.GetPtr()); + return result; + } + return ChangeSlashToPDF(filepath.GetPtr()); +#else + return filepath; +#endif +} + +void CPDF_FileSpec::SetFileName(const CFX_WideStringC& wsFileName) { + if (!m_pObj) + return; + + CFX_WideString wsStr = EncodeFileName(wsFileName); + if (m_pObj->IsString()) { + m_pObj->SetString(CFX_ByteString::FromUnicode(wsStr)); + } else if (CPDF_Dictionary* pDict = m_pObj->AsDictionary()) { + pDict->SetAtString("F", CFX_ByteString::FromUnicode(wsStr)); + pDict->SetAtString("UF", PDF_EncodeText(wsStr)); + } +} + +static CFX_WideString _MakeRoman(int num) { + const int arabic[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; + const CFX_WideString roman[] = {L"m", L"cm", L"d", L"cd", L"c", + L"xc", L"l", L"xl", L"x", L"ix", + L"v", L"iv", L"i"}; + const int nMaxNum = 1000000; + num %= nMaxNum; + int i = 0; + CFX_WideString wsRomanNumber; + while (num > 0) { + while (num >= arabic[i]) { + num = num - arabic[i]; + wsRomanNumber += roman[i]; + } + i = i + 1; + } + return wsRomanNumber; +} + +static CFX_WideString _MakeLetters(int num) { + if (num == 0) { + return CFX_WideString(); + } + CFX_WideString wsLetters; + const int nMaxCount = 1000; + const int nLetterCount = 26; + num -= 1; + int count = num / nLetterCount + 1; + count %= nMaxCount; + FX_WCHAR ch = L'a' + num % nLetterCount; + for (int i = 0; i < count; i++) { + wsLetters += ch; + } + return wsLetters; +} +static CFX_WideString _GetLabelNumPortion(int num, + const CFX_ByteString& bsStyle) { + CFX_WideString wsNumPortion; + if (bsStyle.IsEmpty()) { + return wsNumPortion; + } + if (bsStyle == "D") { + wsNumPortion.Format(L"%d", num); + } else if (bsStyle == "R") { + wsNumPortion = _MakeRoman(num); + wsNumPortion.MakeUpper(); + } else if (bsStyle == "r") { + wsNumPortion = _MakeRoman(num); + } else if (bsStyle == "A") { + wsNumPortion = _MakeLetters(num); + wsNumPortion.MakeUpper(); + } else if (bsStyle == "a") { + wsNumPortion = _MakeLetters(num); + } + return wsNumPortion; +} +CFX_WideString CPDF_PageLabel::GetLabel(int nPage) const { + CFX_WideString wsLabel; + if (!m_pDocument) { + return wsLabel; + } + CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); + if (!pPDFRoot) { + return wsLabel; + } + CPDF_Dictionary* pLabels = pPDFRoot->GetDictBy("PageLabels"); + CPDF_NumberTree numberTree(pLabels); + CPDF_Object* pValue = NULL; + int n = nPage; + while (n >= 0) { + pValue = numberTree.LookupValue(n); + if (pValue) { + break; + } + n--; + } + if (pValue) { + pValue = pValue->GetDirect(); + if (CPDF_Dictionary* pLabel = pValue->AsDictionary()) { + if (pLabel->KeyExist("P")) { + wsLabel += pLabel->GetUnicodeTextBy("P"); + } + CFX_ByteString bsNumberingStyle = pLabel->GetStringBy("S", NULL); + int nLabelNum = nPage - n + pLabel->GetIntegerBy("St", 1); + CFX_WideString wsNumPortion = + _GetLabelNumPortion(nLabelNum, bsNumberingStyle); + wsLabel += wsNumPortion; + return wsLabel; + } + } + wsLabel.Format(L"%d", nPage + 1); + return wsLabel; +} +int32_t CPDF_PageLabel::GetPageByLabel(const CFX_ByteStringC& bsLabel) const { + if (!m_pDocument) { + return -1; + } + CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); + if (!pPDFRoot) { + return -1; + } + int nPages = m_pDocument->GetPageCount(); + CFX_ByteString bsLbl; + CFX_ByteString bsOrig = bsLabel; + for (int i = 0; i < nPages; i++) { + bsLbl = PDF_EncodeText(GetLabel(i)); + if (!bsLbl.Compare(bsOrig)) { + return i; + } + } + bsLbl = bsOrig; + int nPage = FXSYS_atoi(bsLbl); + if (nPage > 0 && nPage <= nPages) { + return nPage; + } + return -1; +} +int32_t CPDF_PageLabel::GetPageByLabel(const CFX_WideStringC& wsLabel) const { + CFX_ByteString bsLabel = PDF_EncodeText(wsLabel.GetPtr()); + return GetPageByLabel(bsLabel); +} diff --git a/core/fpdfdoc/doc_basic_unittest.cpp b/core/fpdfdoc/doc_basic_unittest.cpp new file mode 100644 index 0000000000..659643851d --- /dev/null +++ b/core/fpdfdoc/doc_basic_unittest.cpp @@ -0,0 +1,169 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fpdfdoc/fpdf_doc.h" + +#include +#include + +#include "core/include/fpdfapi/cpdf_name.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/test_support.h" + +namespace { + +using ScopedObj = std::unique_ptr>; +using ScopedDict = + std::unique_ptr>; +} + +TEST(doc_basic_filespec, EncodeDecodeFileName) { + std::vector test_data = { + // Empty src string. + {L"", L""}, + // only file name. + {L"test.pdf", L"test.pdf"}, +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + // With drive identifier. + {L"r:\\pdfdocs\\spec.pdf", L"/r/pdfdocs/spec.pdf"}, + // Relative path. + {L"My Document\\test.pdf", L"My Document/test.pdf"}, + // Absolute path without drive identifier. + {L"\\pdfdocs\\spec.pdf", L"//pdfdocs/spec.pdf"}, + // Absolute path with double backslashes. + {L"\\\\pdfdocs\\spec.pdf", L"/pdfdocs/spec.pdf"}, +// Network resource name. It is not supported yet. +// {L"pclib/eng:\\pdfdocs\\spec.pdf", L"/pclib/eng/pdfdocs/spec.pdf"}, +#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + // Absolute path with colon separator. + {L"Mac HD:PDFDocs:spec.pdf", L"/Mac HD/PDFDocs/spec.pdf"}, + // Relative path with colon separator. + {L"PDFDocs:spec.pdf", L"PDFDocs/spec.pdf"}, +#else + // Relative path. + {L"./docs/test.pdf", L"./docs/test.pdf"}, + // Relative path with parent dir. + {L"../test_docs/test.pdf", L"../test_docs/test.pdf"}, + // Absolute path. + {L"/usr/local/home/test.pdf", L"/usr/local/home/test.pdf"}, +#endif + }; + for (const auto& data : test_data) { + CFX_WideString encoded_str = CPDF_FileSpec::EncodeFileName(data.input); + EXPECT_TRUE(encoded_str.Equal(data.expected)); + // DecodeFileName is the reverse procedure of EncodeFileName. + CFX_WideString decoded_str = CPDF_FileSpec::DecodeFileName(data.expected); + EXPECT_TRUE(decoded_str.Equal(data.input)); + } +} + +TEST(doc_basic_filespec, GetFileName) { + { + // String object. + pdfium::NullTermWstrFuncTestData test_data = { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + L"/C/docs/test.pdf", + L"C:\\docs\\test.pdf" +#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + L"/Mac HD/docs/test.pdf", + L"Mac HD:docs:test.pdf" +#else + L"/docs/test.pdf", + L"/docs/test.pdf" +#endif + }; + ScopedObj str_obj(new CPDF_String(test_data.input)); + CPDF_FileSpec file_spec(str_obj.get()); + CFX_WideString file_name; + EXPECT_TRUE(file_spec.GetFileName(&file_name)); + EXPECT_TRUE(file_name.Equal(test_data.expected)); + } + { + // Dictionary object. + pdfium::NullTermWstrFuncTestData test_data[5] = { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + {L"/C/docs/test.pdf", L"C:\\docs\\test.pdf"}, + {L"/D/docs/test.pdf", L"D:\\docs\\test.pdf"}, + {L"/E/docs/test.pdf", L"E:\\docs\\test.pdf"}, + {L"/F/docs/test.pdf", L"F:\\docs\\test.pdf"}, + {L"/G/docs/test.pdf", L"G:\\docs\\test.pdf"}, +#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + {L"/Mac HD/docs1/test.pdf", L"Mac HD:docs1:test.pdf"}, + {L"/Mac HD/docs2/test.pdf", L"Mac HD:docs2:test.pdf"}, + {L"/Mac HD/docs3/test.pdf", L"Mac HD:docs3:test.pdf"}, + {L"/Mac HD/docs4/test.pdf", L"Mac HD:docs4:test.pdf"}, + {L"/Mac HD/docs5/test.pdf", L"Mac HD:docs5:test.pdf"}, +#else + {L"/docs/a/test.pdf", L"/docs/a/test.pdf"}, + {L"/docs/b/test.pdf", L"/docs/b/test.pdf"}, + {L"/docs/c/test.pdf", L"/docs/c/test.pdf"}, + {L"/docs/d/test.pdf", L"/docs/d/test.pdf"}, + {L"/docs/e/test.pdf", L"/docs/e/test.pdf"}, +#endif + }; + // Keyword fields in reverse order of precedence to retrieve the file name. + const char* const keywords[5] = {"Unix", "Mac", "DOS", "F", "UF"}; + ScopedDict dict_obj(new CPDF_Dictionary); + CPDF_FileSpec file_spec(dict_obj.get()); + CFX_WideString file_name; + for (int i = 0; i < 5; ++i) { + dict_obj->SetAt(keywords[i], new CPDF_String(test_data[i].input)); + EXPECT_TRUE(file_spec.GetFileName(&file_name)); + EXPECT_TRUE(file_name.Equal(test_data[i].expected)); + } + + // With all the former fields and 'FS' field suggests 'URL' type. + dict_obj->SetAtString("FS", "URL"); + EXPECT_TRUE(file_spec.GetFileName(&file_name)); + // Url string is not decoded. + EXPECT_TRUE(file_name.Equal(test_data[4].input)); + } + { + // Invalid object. + ScopedObj name_obj(new CPDF_Name("test.pdf")); + CPDF_FileSpec file_spec(name_obj.get()); + CFX_WideString file_name; + EXPECT_FALSE(file_spec.GetFileName(&file_name)); + } +} + +TEST(doc_basic_filespec, SetFileName) { + pdfium::NullTermWstrFuncTestData test_data = { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + L"C:\\docs\\test.pdf", + L"/C/docs/test.pdf" +#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + L"Mac HD:docs:test.pdf", + L"/Mac HD/docs/test.pdf" +#else + L"/docs/test.pdf", + L"/docs/test.pdf" +#endif + }; + // String object. + ScopedObj str_obj(new CPDF_String(L"babababa")); + CPDF_FileSpec file_spec1(str_obj.get()); + file_spec1.SetFileName(test_data.input); + // Check internal object value. + CFX_ByteString str = CFX_ByteString::FromUnicode(test_data.expected); + EXPECT_TRUE(str == str_obj->GetString()); + // Check we can get the file name back. + CFX_WideString file_name; + EXPECT_TRUE(file_spec1.GetFileName(&file_name)); + EXPECT_TRUE(file_name.Equal(test_data.input)); + + // Dictionary object. + ScopedDict dict_obj(new CPDF_Dictionary); + CPDF_FileSpec file_spec2(dict_obj.get()); + file_spec2.SetFileName(test_data.input); + // Check internal object value. + file_name = dict_obj->GetUnicodeTextBy("F"); + EXPECT_TRUE(file_name.Equal(test_data.expected)); + file_name = dict_obj->GetUnicodeTextBy("UF"); + EXPECT_TRUE(file_name.Equal(test_data.expected)); + // Check we can get the file name back. + EXPECT_TRUE(file_spec2.GetFileName(&file_name)); + EXPECT_TRUE(file_name.Equal(test_data.input)); +} diff --git a/core/fpdfdoc/doc_bookmark.cpp b/core/fpdfdoc/doc_bookmark.cpp new file mode 100644 index 0000000000..c338e5d48c --- /dev/null +++ b/core/fpdfdoc/doc_bookmark.cpp @@ -0,0 +1,95 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +CPDF_Bookmark CPDF_BookmarkTree::GetFirstChild( + const CPDF_Bookmark& parent) const { + if (!parent.GetDict()) { + CPDF_Dictionary* pRoot = m_pDocument->GetRoot()->GetDictBy("Outlines"); + if (!pRoot) + return CPDF_Bookmark(); + return CPDF_Bookmark(pRoot->GetDictBy("First")); + } + return CPDF_Bookmark(parent.GetDict()->GetDictBy("First")); +} + +CPDF_Bookmark CPDF_BookmarkTree::GetNextSibling( + const CPDF_Bookmark& bookmark) const { + if (!bookmark.GetDict()) + return CPDF_Bookmark(); + + CPDF_Dictionary* pNext = bookmark.GetDict()->GetDictBy("Next"); + return pNext == bookmark.GetDict() ? CPDF_Bookmark() : CPDF_Bookmark(pNext); +} + +FX_DWORD CPDF_Bookmark::GetColorRef() const { + if (!m_pDict) { + return 0; + } + CPDF_Array* pColor = m_pDict->GetArrayBy("C"); + if (!pColor) { + return FXSYS_RGB(0, 0, 0); + } + int r = FXSYS_round(pColor->GetNumberAt(0) * 255); + int g = FXSYS_round(pColor->GetNumberAt(1) * 255); + int b = FXSYS_round(pColor->GetNumberAt(2) * 255); + return FXSYS_RGB(r, g, b); +} +FX_DWORD CPDF_Bookmark::GetFontStyle() const { + if (!m_pDict) { + return 0; + } + return m_pDict->GetIntegerBy("F"); +} +CFX_WideString CPDF_Bookmark::GetTitle() const { + if (!m_pDict) { + return CFX_WideString(); + } + CPDF_String* pString = ToString(m_pDict->GetElementValue("Title")); + if (!pString) + return CFX_WideString(); + + CFX_WideString title = pString->GetUnicodeText(); + int len = title.GetLength(); + if (!len) { + return CFX_WideString(); + } + std::unique_ptr buf(new FX_WCHAR[len]); + for (int i = 0; i < len; i++) { + FX_WCHAR w = title[i]; + buf[i] = w > 0x20 ? w : 0x20; + } + return CFX_WideString(buf.get(), len); +} +CPDF_Dest CPDF_Bookmark::GetDest(CPDF_Document* pDocument) const { + if (!m_pDict) + return CPDF_Dest(); + + CPDF_Object* pDest = m_pDict->GetElementValue("Dest"); + if (!pDest) + return CPDF_Dest(); + if (pDest->IsString() || pDest->IsName()) { + CPDF_NameTree name_tree(pDocument, "Dests"); + CFX_ByteStringC name = pDest->GetString(); + return CPDF_Dest(name_tree.LookupNamedDest(pDocument, name)); + } + if (CPDF_Array* pArray = pDest->AsArray()) + return CPDF_Dest(pArray); + return CPDF_Dest(); +} +CPDF_Action CPDF_Bookmark::GetAction() const { + if (!m_pDict) { + return CPDF_Action(); + } + return CPDF_Action(m_pDict->GetDictBy("A")); +} diff --git a/core/fpdfdoc/doc_form.cpp b/core/fpdfdoc/doc_form.cpp new file mode 100644 index 0000000000..c205588335 --- /dev/null +++ b/core/fpdfdoc/doc_form.cpp @@ -0,0 +1,1207 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fpdfdoc/doc_utils.h" +#include "core/include/fpdfapi/cfdf_document.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfdoc/fpdf_doc.h" +#include "third_party/base/stl_util.h" + +namespace { + +const int nMaxRecursion = 32; + +const struct SupportFieldEncoding { + const FX_CHAR* m_name; + FX_WORD m_codePage; +} g_fieldEncoding[] = { + {"BigFive", 950}, + {"GBK", 936}, + {"Shift-JIS", 932}, + {"UHC", 949}, +}; + +CFX_WideString FPDFDOC_FDF_GetFieldValue(const CPDF_Dictionary& pFieldDict, + const CFX_ByteString& bsEncoding) { + const CFX_ByteString csBValue = pFieldDict.GetStringBy("V"); + for (const auto& encoding : g_fieldEncoding) { + if (bsEncoding == encoding.m_name) + return CFX_WideString::FromCodePage(csBValue, encoding.m_codePage); + } + CFX_ByteString csTemp = csBValue.Left(2); + if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") + return PDF_DecodeText(csBValue); + return CFX_WideString::FromLocal(csBValue); +} + +} // namespace + +class CFieldNameExtractor { + public: + explicit CFieldNameExtractor(const CFX_WideString& full_name) { + m_pStart = full_name.c_str(); + m_pEnd = m_pStart + full_name.GetLength(); + m_pCur = m_pStart; + } + void GetNext(const FX_WCHAR*& pSubName, FX_STRSIZE& size) { + pSubName = m_pCur; + while (m_pCur < m_pEnd && m_pCur[0] != L'.') { + m_pCur++; + } + size = (FX_STRSIZE)(m_pCur - pSubName); + if (m_pCur < m_pEnd && m_pCur[0] == L'.') { + m_pCur++; + } + } + + protected: + const FX_WCHAR* m_pStart; + const FX_WCHAR* m_pEnd; + const FX_WCHAR* m_pCur; +}; +class CFieldTree { + public: + struct _Node { + _Node* parent; + CFX_ArrayTemplate<_Node*> children; + CFX_WideString short_name; + CPDF_FormField* field_ptr; + int CountFields(int nLevel = 0) { + if (nLevel > nMaxRecursion) { + return 0; + } + if (field_ptr) { + return 1; + } + int count = 0; + for (int i = 0; i < children.GetSize(); i++) { + count += children.GetAt(i)->CountFields(nLevel + 1); + } + return count; + } + CPDF_FormField* GetField(int* fields_to_go) { + if (field_ptr) { + if (*fields_to_go == 0) { + return field_ptr; + } + --*fields_to_go; + return NULL; + } + for (int i = 0; i < children.GetSize(); i++) { + if (CPDF_FormField* pField = children.GetAt(i)->GetField(fields_to_go)) + return pField; + } + return NULL; + } + CPDF_FormField* GetField(int index) { + int fields_to_go = index; + return GetField(&fields_to_go); + } + }; + CFieldTree(); + ~CFieldTree(); + void SetField(const CFX_WideString& full_name, CPDF_FormField* field_ptr); + CPDF_FormField* GetField(const CFX_WideString& full_name); + CPDF_FormField* RemoveField(const CFX_WideString& full_name); + void RemoveAll(); + _Node* FindNode(const CFX_WideString& full_name); + _Node* AddChild(_Node* pParent, + const CFX_WideString& short_name, + CPDF_FormField* field_ptr); + void RemoveNode(_Node* pNode, int nLevel = 0); + _Node* _Lookup(_Node* pParent, const CFX_WideString& short_name); + _Node m_Root; +}; +CFieldTree::CFieldTree() { + m_Root.parent = NULL; + m_Root.field_ptr = NULL; +} +CFieldTree::~CFieldTree() { + RemoveAll(); +} +CFieldTree::_Node* CFieldTree::AddChild(_Node* pParent, + const CFX_WideString& short_name, + CPDF_FormField* field_ptr) { + if (!pParent) { + return NULL; + } + _Node* pNode = new _Node; + pNode->parent = pParent; + pNode->short_name = short_name; + pNode->field_ptr = field_ptr; + pParent->children.Add(pNode); + return pNode; +} +void CFieldTree::RemoveNode(_Node* pNode, int nLevel) { + if (!pNode) { + return; + } + if (nLevel <= nMaxRecursion) { + for (int i = 0; i < pNode->children.GetSize(); i++) { + RemoveNode(pNode->children[i], nLevel + 1); + } + } + delete pNode; +} +CFieldTree::_Node* CFieldTree::_Lookup(_Node* pParent, + const CFX_WideString& short_name) { + if (!pParent) { + return NULL; + } + for (int i = 0; i < pParent->children.GetSize(); i++) { + _Node* pNode = pParent->children[i]; + if (pNode->short_name.GetLength() == short_name.GetLength() && + FXSYS_memcmp(pNode->short_name.c_str(), short_name.c_str(), + short_name.GetLength() * sizeof(FX_WCHAR)) == 0) { + return pNode; + } + } + return NULL; +} +void CFieldTree::RemoveAll() { + for (int i = 0; i < m_Root.children.GetSize(); i++) { + RemoveNode(m_Root.children[i]); + } +} +void CFieldTree::SetField(const CFX_WideString& full_name, + CPDF_FormField* field_ptr) { + if (full_name == L"") { + return; + } + CFieldNameExtractor name_extractor(full_name); + const FX_WCHAR* pName; + FX_STRSIZE nLength; + name_extractor.GetNext(pName, nLength); + _Node *pNode = &m_Root, *pLast = NULL; + while (nLength > 0) { + pLast = pNode; + CFX_WideString name = CFX_WideString(pName, nLength); + pNode = _Lookup(pLast, name); + if (!pNode) { + pNode = AddChild(pLast, name, NULL); + } + name_extractor.GetNext(pName, nLength); + } + if (pNode != &m_Root) { + pNode->field_ptr = field_ptr; + } +} +CPDF_FormField* CFieldTree::GetField(const CFX_WideString& full_name) { + if (full_name == L"") { + return NULL; + } + CFieldNameExtractor name_extractor(full_name); + const FX_WCHAR* pName; + FX_STRSIZE nLength; + name_extractor.GetNext(pName, nLength); + _Node *pNode = &m_Root, *pLast = NULL; + while (nLength > 0 && pNode) { + pLast = pNode; + CFX_WideString name = CFX_WideString(pName, nLength); + pNode = _Lookup(pLast, name); + name_extractor.GetNext(pName, nLength); + } + return pNode ? pNode->field_ptr : NULL; +} +CPDF_FormField* CFieldTree::RemoveField(const CFX_WideString& full_name) { + if (full_name == L"") { + return NULL; + } + CFieldNameExtractor name_extractor(full_name); + const FX_WCHAR* pName; + FX_STRSIZE nLength; + name_extractor.GetNext(pName, nLength); + _Node *pNode = &m_Root, *pLast = NULL; + while (nLength > 0 && pNode) { + pLast = pNode; + CFX_WideString name = CFX_WideString(pName, nLength); + pNode = _Lookup(pLast, name); + name_extractor.GetNext(pName, nLength); + } + if (pNode && pNode != &m_Root) { + for (int i = 0; i < pLast->children.GetSize(); i++) { + if (pNode == pLast->children[i]) { + pLast->children.RemoveAt(i); + break; + } + } + CPDF_FormField* pField = pNode->field_ptr; + RemoveNode(pNode); + return pField; + } + return NULL; +} +CFieldTree::_Node* CFieldTree::FindNode(const CFX_WideString& full_name) { + if (full_name == L"") { + return NULL; + } + CFieldNameExtractor name_extractor(full_name); + const FX_WCHAR* pName; + FX_STRSIZE nLength; + name_extractor.GetNext(pName, nLength); + _Node *pNode = &m_Root, *pLast = NULL; + while (nLength > 0 && pNode) { + pLast = pNode; + CFX_WideString name = CFX_WideString(pName, nLength); + pNode = _Lookup(pLast, name); + name_extractor.GetNext(pName, nLength); + } + return pNode; +} +CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bGenerateAP) + : CFX_PrivateData(), + m_pDocument(pDocument), + m_bGenerateAP(bGenerateAP), + m_pFormDict(nullptr), + m_pFieldTree(new CFieldTree), + m_pFormNotify(nullptr), + m_bUpdated(FALSE) { + CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); + if (!pRoot) + return; + + m_pFormDict = pRoot->GetDictBy("AcroForm"); + if (!m_pFormDict) + return; + + CPDF_Array* pFields = m_pFormDict->GetArrayBy("Fields"); + if (!pFields) + return; + + int count = pFields->GetCount(); + for (int i = 0; i < count; i++) { + LoadField(pFields->GetDictAt(i)); + } +} + +CPDF_InterForm::~CPDF_InterForm() { + for (auto it : m_ControlMap) + delete it.second; + + int nCount = m_pFieldTree->m_Root.CountFields(); + for (int i = 0; i < nCount; ++i) { + delete m_pFieldTree->m_Root.GetField(i); + } +} + +FX_BOOL CPDF_InterForm::m_bUpdateAP = TRUE; +FX_BOOL CPDF_InterForm::UpdatingAPEnabled() { + return m_bUpdateAP; +} +void CPDF_InterForm::EnableUpdateAP(FX_BOOL bUpdateAP) { + m_bUpdateAP = bUpdateAP; +} +CFX_ByteString CPDF_InterForm::GenerateNewResourceName( + const CPDF_Dictionary* pResDict, + const FX_CHAR* csType, + int iMinLen, + const FX_CHAR* csPrefix) { + CFX_ByteString csStr = csPrefix; + CFX_ByteString csBType = csType; + if (csStr.IsEmpty()) { + if (csBType == "ExtGState") { + csStr = "GS"; + } else if (csBType == "ColorSpace") { + csStr = "CS"; + } else if (csBType == "Font") { + csStr = "ZiTi"; + } else { + csStr = "Res"; + } + } + CFX_ByteString csTmp = csStr; + int iCount = csStr.GetLength(); + int m = 0; + if (iMinLen > 0) { + csTmp = ""; + while (m < iMinLen && m < iCount) { + csTmp += csStr[m++]; + } + while (m < iMinLen) { + csTmp += '0' + m % 10; + m++; + } + } else { + m = iCount; + } + if (!pResDict) { + return csTmp; + } + CPDF_Dictionary* pDict = pResDict->GetDictBy(csType); + if (!pDict) { + return csTmp; + } + int num = 0; + CFX_ByteString bsNum; + while (TRUE) { + if (!pDict->KeyExist(csTmp + bsNum)) { + return csTmp + bsNum; + } + if (m < iCount) { + csTmp += csStr[m++]; + } else { + bsNum.Format("%d", num++); + } + m++; + } + return csTmp; +} +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +typedef struct PDF_FONTDATA_ { + FX_BOOL bFind; + LOGFONTA lf; +} PDF_FONTDATA, FAR* LPDF_FONTDATA; +static int CALLBACK EnumFontFamExProc(ENUMLOGFONTEXA* lpelfe, + NEWTEXTMETRICEX* lpntme, + DWORD FontType, + LPARAM lParam) { + if (FontType != 0x004 || strchr(lpelfe->elfLogFont.lfFaceName, '@')) { + return 1; + } + LPDF_FONTDATA pData = (LPDF_FONTDATA)lParam; + memcpy(&pData->lf, &lpelfe->elfLogFont, sizeof(LOGFONTA)); + pData->bFind = TRUE; + return 0; +} +static FX_BOOL RetrieveSpecificFont(LOGFONTA& lf) { + PDF_FONTDATA fd; + memset(&fd, 0, sizeof(PDF_FONTDATA)); + HDC hDC = ::GetDC(NULL); + EnumFontFamiliesExA(hDC, &lf, (FONTENUMPROCA)EnumFontFamExProc, (LPARAM)&fd, + 0); + ::ReleaseDC(NULL, hDC); + if (fd.bFind) { + memcpy(&lf, &fd.lf, sizeof(LOGFONTA)); + } + return fd.bFind; +} +static FX_BOOL RetrieveSpecificFont(uint8_t charSet, + uint8_t pitchAndFamily, + LPCSTR pcsFontName, + LOGFONTA& lf) { + memset(&lf, 0, sizeof(LOGFONTA)); + lf.lfCharSet = charSet; + lf.lfPitchAndFamily = pitchAndFamily; + if (pcsFontName) { + // TODO(dsinclair): Should this be strncpy? + strcpy(lf.lfFaceName, pcsFontName); + } + return RetrieveSpecificFont(lf); +} +#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + +CPDF_Font* CPDF_InterForm::AddStandardFont(CPDF_Document* pDocument, + CFX_ByteString csFontName) { + if (!pDocument || csFontName.IsEmpty()) + return nullptr; + + if (csFontName == "ZapfDingbats") + return pDocument->AddStandardFont(csFontName.c_str(), nullptr); + + CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI); + return pDocument->AddStandardFont(csFontName.c_str(), &encoding); +} + +CFX_ByteString CPDF_InterForm::GetNativeFont(uint8_t charSet, void* pLogFont) { + CFX_ByteString csFontName; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + LOGFONTA lf; + FX_BOOL bRet; + if (charSet == ANSI_CHARSET) { + csFontName = "Helvetica"; + return csFontName; + } + bRet = FALSE; + if (charSet == SHIFTJIS_CHARSET) { + bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, + "MS Mincho", lf); + } else if (charSet == GB2312_CHARSET) { + bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "SimSun", + lf); + } else if (charSet == CHINESEBIG5_CHARSET) { + bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "MingLiU", + lf); + } + if (!bRet) { + bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, + "Arial Unicode MS", lf); + } + if (!bRet) { + bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, + "Microsoft Sans Serif", lf); + } + if (!bRet) { + bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, NULL, lf); + } + if (bRet) { + if (pLogFont) { + memcpy(pLogFont, &lf, sizeof(LOGFONTA)); + } + csFontName = lf.lfFaceName; + return csFontName; + } +#endif + return csFontName; +} +CFX_ByteString CPDF_InterForm::GetNativeFont(void* pLogFont) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + uint8_t charSet = GetNativeCharSet(); + return GetNativeFont(charSet, pLogFont); +#else + return CFX_ByteString(); +#endif +} +uint8_t CPDF_InterForm::GetNativeCharSet() { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + uint8_t charSet = ANSI_CHARSET; + UINT iCodePage = ::GetACP(); + switch (iCodePage) { + case 932: + charSet = SHIFTJIS_CHARSET; + break; + case 936: + charSet = GB2312_CHARSET; + break; + case 950: + charSet = CHINESEBIG5_CHARSET; + break; + case 1252: + charSet = ANSI_CHARSET; + break; + case 874: + charSet = THAI_CHARSET; + break; + case 949: + charSet = HANGUL_CHARSET; + break; + case 1200: + charSet = ANSI_CHARSET; + break; + case 1250: + charSet = EASTEUROPE_CHARSET; + break; + case 1251: + charSet = RUSSIAN_CHARSET; + break; + case 1253: + charSet = GREEK_CHARSET; + break; + case 1254: + charSet = TURKISH_CHARSET; + break; + case 1255: + charSet = HEBREW_CHARSET; + break; + case 1256: + charSet = ARABIC_CHARSET; + break; + case 1257: + charSet = BALTIC_CHARSET; + break; + case 1258: + charSet = VIETNAMESE_CHARSET; + break; + case 1361: + charSet = JOHAB_CHARSET; + break; + } + return charSet; +#else + return 0; +#endif +} + +CPDF_Font* CPDF_InterForm::AddNativeFont(uint8_t charSet, + CPDF_Document* pDocument) { + if (!pDocument) + return nullptr; + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + LOGFONTA lf; + CFX_ByteString csFontName = GetNativeFont(charSet, &lf); + if (!csFontName.IsEmpty()) { + if (csFontName == "Helvetica") + return AddStandardFont(pDocument, csFontName); + return pDocument->AddWindowsFont(&lf, FALSE, TRUE); + } +#endif + return nullptr; +} + +CPDF_Font* CPDF_InterForm::AddNativeFont(CPDF_Document* pDocument) { + return pDocument ? AddNativeFont(GetNativeCharSet(), pDocument) : nullptr; +} + +FX_BOOL CPDF_InterForm::ValidateFieldName( + CFX_WideString& csNewFieldName, + int iType, + const CPDF_FormField* pExcludedField, + const CPDF_FormControl* pExcludedControl) { + if (csNewFieldName.IsEmpty()) { + return FALSE; + } + int iPos = 0; + int iLength = csNewFieldName.GetLength(); + CFX_WideString csSub; + while (TRUE) { + while (iPos < iLength && + (csNewFieldName[iPos] == L'.' || csNewFieldName[iPos] == L' ')) { + iPos++; + } + if (iPos < iLength && !csSub.IsEmpty()) { + csSub += L'.'; + } + while (iPos < iLength && csNewFieldName[iPos] != L'.') { + csSub += csNewFieldName[iPos++]; + } + for (int i = csSub.GetLength() - 1; i > -1; i--) { + if (csSub[i] == L' ' || csSub[i] == L'.') { + csSub.SetAt(i, L'\0'); + } else { + break; + } + } + FX_DWORD dwCount = m_pFieldTree->m_Root.CountFields(); + for (FX_DWORD m = 0; m < dwCount; m++) { + CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(m); + if (!pField) { + continue; + } + if (pField == pExcludedField) { + if (pExcludedControl) { + if (pField->CountControls() < 2) { + continue; + } + } else { + continue; + } + } + CFX_WideString csFullName = pField->GetFullName(); + int iRet = CompareFieldName(csSub, csFullName); + if (iRet == 1) { + if (pField->GetFieldType() != iType) { + return FALSE; + } + } else if (iRet == 2 && csSub == csNewFieldName) { + if (csFullName[iPos] == L'.') { + return FALSE; + } + } else if (iRet == 3 && csSub == csNewFieldName) { + if (csNewFieldName[csFullName.GetLength()] == L'.') { + return FALSE; + } + } + } + if (iPos >= iLength) { + break; + } + } + if (csSub.IsEmpty()) { + return FALSE; + } + csNewFieldName = csSub; + return TRUE; +} +FX_BOOL CPDF_InterForm::ValidateFieldName(CFX_WideString& csNewFieldName, + int iType) { + return ValidateFieldName(csNewFieldName, iType, NULL, NULL); +} +FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormField* pField, + CFX_WideString& csNewFieldName) { + return pField && !csNewFieldName.IsEmpty() && + ValidateFieldName(csNewFieldName, + ((CPDF_FormField*)pField)->GetFieldType(), pField, + NULL); +} +FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormControl* pControl, + CFX_WideString& csNewFieldName) { + if (!pControl || csNewFieldName.IsEmpty()) { + return FALSE; + } + CPDF_FormField* pField = ((CPDF_FormControl*)pControl)->GetField(); + return ValidateFieldName(csNewFieldName, pField->GetFieldType(), pField, + pControl); +} +int CPDF_InterForm::CompareFieldName(const CFX_ByteString& name1, + const CFX_ByteString& name2) { + const FX_CHAR* ptr1 = name1; + const FX_CHAR* ptr2 = name2; + if (name1.GetLength() == name2.GetLength()) { + return name1 == name2 ? 1 : 0; + } + int i = 0; + while (ptr1[i] == ptr2[i]) { + i++; + } + if (i == name1.GetLength()) { + return 2; + } + if (i == name2.GetLength()) { + return 3; + } + return 0; +} +int CPDF_InterForm::CompareFieldName(const CFX_WideString& name1, + const CFX_WideString& name2) { + const FX_WCHAR* ptr1 = name1.c_str(); + const FX_WCHAR* ptr2 = name2.c_str(); + if (name1.GetLength() == name2.GetLength()) { + return name1 == name2 ? 1 : 0; + } + int i = 0; + while (ptr1[i] == ptr2[i]) { + i++; + } + if (i == name1.GetLength()) { + return 2; + } + if (i == name2.GetLength()) { + return 3; + } + return 0; +} +FX_DWORD CPDF_InterForm::CountFields(const CFX_WideString& csFieldName) { + if (csFieldName.IsEmpty()) { + return (FX_DWORD)m_pFieldTree->m_Root.CountFields(); + } + CFieldTree::_Node* pNode = m_pFieldTree->FindNode(csFieldName); + return pNode ? pNode->CountFields() : 0; +} +CPDF_FormField* CPDF_InterForm::GetField(FX_DWORD index, + const CFX_WideString& csFieldName) { + if (csFieldName == L"") { + return m_pFieldTree->m_Root.GetField(index); + } + CFieldTree::_Node* pNode = m_pFieldTree->FindNode(csFieldName); + return pNode ? pNode->GetField(index) : nullptr; +} + +CPDF_FormField* CPDF_InterForm::GetFieldByDict( + CPDF_Dictionary* pFieldDict) const { + if (!pFieldDict) { + return NULL; + } + CFX_WideString csWName = GetFullName(pFieldDict); + return m_pFieldTree->GetField(csWName); +} + +CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage, + FX_FLOAT pdf_x, + FX_FLOAT pdf_y, + int* z_order) const { + CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArrayBy("Annots"); + if (!pAnnotList) + return nullptr; + + for (FX_DWORD i = pAnnotList->GetCount(); i > 0; --i) { + FX_DWORD annot_index = i - 1; + CPDF_Dictionary* pAnnot = pAnnotList->GetDictAt(annot_index); + if (!pAnnot) + continue; + + const auto it = m_ControlMap.find(pAnnot); + if (it == m_ControlMap.end()) + continue; + + CPDF_FormControl* pControl = it->second; + CFX_FloatRect rect = pControl->GetRect(); + if (!rect.Contains(pdf_x, pdf_y)) + continue; + + if (z_order) + *z_order = annot_index; + return pControl; + } + return nullptr; +} + +CPDF_FormControl* CPDF_InterForm::GetControlByDict( + const CPDF_Dictionary* pWidgetDict) const { + const auto it = m_ControlMap.find(pWidgetDict); + return it != m_ControlMap.end() ? it->second : nullptr; +} + +FX_BOOL CPDF_InterForm::NeedConstructAP() { + return m_pFormDict && m_pFormDict->GetBooleanBy("NeedAppearances"); +} +void CPDF_InterForm::NeedConstructAP(FX_BOOL bNeedAP) { + if (!m_pFormDict) { + InitInterFormDict(m_pFormDict, m_pDocument); + } + m_pFormDict->SetAtBoolean("NeedAppearances", bNeedAP); + m_bGenerateAP = bNeedAP; +} +int CPDF_InterForm::CountFieldsInCalculationOrder() { + if (!m_pFormDict) { + return 0; + } + CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); + return pArray ? pArray->GetCount() : 0; +} +CPDF_FormField* CPDF_InterForm::GetFieldInCalculationOrder(int index) { + if (!m_pFormDict || index < 0) { + return NULL; + } + CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); + if (!pArray) { + return NULL; + } + if (CPDF_Dictionary* pElement = + ToDictionary(pArray->GetElementValue(index))) { + return GetFieldByDict(pElement); + } + return NULL; +} +int CPDF_InterForm::FindFieldInCalculationOrder(const CPDF_FormField* pField) { + if (!m_pFormDict || !pField) { + return -1; + } + CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); + if (!pArray) { + return -1; + } + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + CPDF_Object* pElement = pArray->GetElementValue(i); + if (pElement == pField->m_pDict) { + return i; + } + } + return -1; +} +FX_DWORD CPDF_InterForm::CountFormFonts() { + return CountInterFormFonts(m_pFormDict); +} +CPDF_Font* CPDF_InterForm::GetFormFont(FX_DWORD index, + CFX_ByteString& csNameTag) { + return GetInterFormFont(m_pFormDict, m_pDocument, index, csNameTag); +} +CPDF_Font* CPDF_InterForm::GetFormFont(CFX_ByteString csNameTag) { + return GetInterFormFont(m_pFormDict, m_pDocument, csNameTag); +} +CPDF_Font* CPDF_InterForm::GetFormFont(CFX_ByteString csFontName, + CFX_ByteString& csNameTag) { + return GetInterFormFont(m_pFormDict, m_pDocument, csFontName, csNameTag); +} +CPDF_Font* CPDF_InterForm::GetNativeFormFont(uint8_t charSet, + CFX_ByteString& csNameTag) { + return GetNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); +} +CPDF_Font* CPDF_InterForm::GetNativeFormFont(CFX_ByteString& csNameTag) { + return GetNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); +} +FX_BOOL CPDF_InterForm::FindFormFont(const CPDF_Font* pFont, + CFX_ByteString& csNameTag) { + return FindInterFormFont(m_pFormDict, pFont, csNameTag); +} +FX_BOOL CPDF_InterForm::FindFormFont(CFX_ByteString csFontName, + CPDF_Font*& pFont, + CFX_ByteString& csNameTag) { + return FindInterFormFont(m_pFormDict, m_pDocument, csFontName, pFont, + csNameTag); +} +void CPDF_InterForm::AddFormFont(const CPDF_Font* pFont, + CFX_ByteString& csNameTag) { + AddInterFormFont(m_pFormDict, m_pDocument, pFont, csNameTag); + m_bUpdated = TRUE; +} +CPDF_Font* CPDF_InterForm::AddNativeFormFont(uint8_t charSet, + CFX_ByteString& csNameTag) { + m_bUpdated = TRUE; + return AddNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); +} +CPDF_Font* CPDF_InterForm::AddNativeFormFont(CFX_ByteString& csNameTag) { + m_bUpdated = TRUE; + return AddNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); +} +void CPDF_InterForm::RemoveFormFont(const CPDF_Font* pFont) { + m_bUpdated = TRUE; + RemoveInterFormFont(m_pFormDict, pFont); +} +void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) { + m_bUpdated = TRUE; + RemoveInterFormFont(m_pFormDict, csNameTag); +} + +CPDF_DefaultAppearance CPDF_InterForm::GetDefaultAppearance() { + if (!m_pFormDict) + return CPDF_DefaultAppearance(); + return CPDF_DefaultAppearance(m_pFormDict->GetStringBy("DA")); +} + +CPDF_Font* CPDF_InterForm::GetDefaultFormFont() { + return GetDefaultInterFormFont(m_pFormDict, m_pDocument); +} +int CPDF_InterForm::GetFormAlignment() { + return m_pFormDict ? m_pFormDict->GetIntegerBy("Q", 0) : 0; +} + +bool CPDF_InterForm::ResetForm(const std::vector& fields, + bool bIncludeOrExclude, + bool bNotify) { + if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormReset(this) < 0) + return false; + + int nCount = m_pFieldTree->m_Root.CountFields(); + for (int i = 0; i < nCount; ++i) { + CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); + if (!pField) + continue; + + if (bIncludeOrExclude == pdfium::ContainsValue(fields, pField)) + pField->ResetField(bNotify); + } + if (bNotify && m_pFormNotify) + m_pFormNotify->AfterFormReset(this); + return true; +} + +bool CPDF_InterForm::ResetForm(bool bNotify) { + if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormReset(this) < 0) + return false; + + int nCount = m_pFieldTree->m_Root.CountFields(); + for (int i = 0; i < nCount; ++i) { + CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); + if (!pField) + continue; + + pField->ResetField(bNotify); + } + if (bNotify && m_pFormNotify) + m_pFormNotify->AfterFormReset(this); + return true; +} + +void CPDF_InterForm::LoadField(CPDF_Dictionary* pFieldDict, int nLevel) { + if (nLevel > nMaxRecursion) { + return; + } + if (!pFieldDict) { + return; + } + FX_DWORD dwParentObjNum = pFieldDict->GetObjNum(); + CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); + if (!pKids) { + AddTerminalField(pFieldDict); + return; + } + CPDF_Dictionary* pFirstKid = pKids->GetDictAt(0); + if (!pFirstKid) { + return; + } + if (pFirstKid->KeyExist("T") || pFirstKid->KeyExist("Kids")) { + for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { + CPDF_Dictionary* pChildDict = pKids->GetDictAt(i); + if (pChildDict) { + if (pChildDict->GetObjNum() != dwParentObjNum) { + LoadField(pChildDict, nLevel + 1); + } + } + } + } else { + AddTerminalField(pFieldDict); + } +} +FX_BOOL CPDF_InterForm::HasXFAForm() const { + return m_pFormDict && m_pFormDict->GetArrayBy("XFA"); +} +void CPDF_InterForm::FixPageFields(const CPDF_Page* pPage) { + CPDF_Dictionary* pPageDict = pPage->m_pFormDict; + if (!pPageDict) { + return; + } + CPDF_Array* pAnnots = pPageDict->GetArrayBy("Annots"); + if (!pAnnots) { + return; + } + int iAnnotCount = pAnnots->GetCount(); + for (int i = 0; i < iAnnotCount; i++) { + CPDF_Dictionary* pAnnot = pAnnots->GetDictAt(i); + if (pAnnot && pAnnot->GetStringBy("Subtype") == "Widget") { + LoadField(pAnnot); + } + } +} +CPDF_FormField* CPDF_InterForm::AddTerminalField(CPDF_Dictionary* pFieldDict) { + if (!pFieldDict->KeyExist("T")) { + return NULL; + } + CPDF_Dictionary* pDict = pFieldDict; + CFX_WideString csWName = GetFullName(pFieldDict); + if (csWName.IsEmpty()) { + return NULL; + } + CPDF_FormField* pField = NULL; + pField = m_pFieldTree->GetField(csWName); + if (!pField) { + CPDF_Dictionary* pParent = pFieldDict; + if (!pFieldDict->KeyExist("T") && + pFieldDict->GetStringBy("Subtype") == "Widget") { + pParent = pFieldDict->GetDictBy("Parent"); + if (!pParent) { + pParent = pFieldDict; + } + } + if (pParent && pParent != pFieldDict && !pParent->KeyExist("FT")) { + if (pFieldDict->KeyExist("FT")) { + CPDF_Object* pFTValue = pFieldDict->GetElementValue("FT"); + if (pFTValue) { + pParent->SetAt("FT", pFTValue->Clone()); + } + } + if (pFieldDict->KeyExist("Ff")) { + CPDF_Object* pFfValue = pFieldDict->GetElementValue("Ff"); + if (pFfValue) { + pParent->SetAt("Ff", pFfValue->Clone()); + } + } + } + pField = new CPDF_FormField(this, pParent); + CPDF_Object* pTObj = pDict->GetElement("T"); + if (ToReference(pTObj)) { + CPDF_Object* pClone = pTObj->Clone(TRUE); + if (pClone) + pDict->SetAt("T", pClone); + else + pDict->SetAtName("T", ""); + } + m_pFieldTree->SetField(csWName, pField); + } + CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); + if (!pKids) { + if (pFieldDict->GetStringBy("Subtype") == "Widget") { + AddControl(pField, pFieldDict); + } + } else { + for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { + CPDF_Dictionary* pKid = pKids->GetDictAt(i); + if (!pKid) { + continue; + } + if (pKid->GetStringBy("Subtype") != "Widget") { + continue; + } + AddControl(pField, pKid); + } + } + return pField; +} +CPDF_FormControl* CPDF_InterForm::AddControl(const CPDF_FormField* pField, + CPDF_Dictionary* pWidgetDict) { + const auto it = m_ControlMap.find(pWidgetDict); + if (it != m_ControlMap.end()) + return it->second; + + CPDF_FormControl* pControl = + new CPDF_FormControl((CPDF_FormField*)pField, pWidgetDict); + m_ControlMap[pWidgetDict] = pControl; + ((CPDF_FormField*)pField)->m_ControlList.Add(pControl); + return pControl; +} + +CPDF_FormField* CPDF_InterForm::CheckRequiredFields( + const std::vector* fields, + bool bIncludeOrExclude) const { + int nCount = m_pFieldTree->m_Root.CountFields(); + for (int i = 0; i < nCount; ++i) { + CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); + if (!pField) + continue; + + int32_t iType = pField->GetType(); + if (iType == CPDF_FormField::PushButton || + iType == CPDF_FormField::CheckBox || iType == CPDF_FormField::ListBox) { + continue; + } + FX_DWORD dwFlags = pField->GetFieldFlags(); + // TODO(thestig): Look up these magic numbers and add constants for them. + if (dwFlags & 0x04) + continue; + + bool bFind = true; + if (fields) + bFind = pdfium::ContainsValue(*fields, pField); + if (bIncludeOrExclude == bFind) { + CPDF_Dictionary* pFieldDict = pField->m_pDict; + if ((dwFlags & 0x02) != 0 && pFieldDict->GetStringBy("V").IsEmpty()) { + return pField; + } + } + } + return nullptr; +} + +CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, + bool bSimpleFileSpec) const { + std::vector fields; + int nCount = m_pFieldTree->m_Root.CountFields(); + for (int i = 0; i < nCount; ++i) + fields.push_back(m_pFieldTree->m_Root.GetField(i)); + return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec); +} + +CFDF_Document* CPDF_InterForm::ExportToFDF( + const CFX_WideStringC& pdf_path, + const std::vector& fields, + bool bIncludeOrExclude, + bool bSimpleFileSpec) const { + CFDF_Document* pDoc = CFDF_Document::CreateNewDoc(); + if (!pDoc) { + return NULL; + } + CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDictBy("FDF"); + if (!pdf_path.IsEmpty()) { + if (bSimpleFileSpec) { + CFX_WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path); + pMainDict->SetAtString("F", CFX_ByteString::FromUnicode(wsFilePath)); + pMainDict->SetAtString("UF", PDF_EncodeText(wsFilePath)); + } else { + CPDF_FileSpec filespec; + filespec.SetFileName(pdf_path); + pMainDict->SetAt("F", filespec.GetObj()); + } + } + CPDF_Array* pFields = new CPDF_Array; + pMainDict->SetAt("Fields", pFields); + int nCount = m_pFieldTree->m_Root.CountFields(); + for (int i = 0; i < nCount; i++) { + CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); + if (!pField || pField->GetType() == CPDF_FormField::PushButton) { + continue; + } + FX_DWORD dwFlags = pField->GetFieldFlags(); + if (dwFlags & 0x04) + continue; + + if (bIncludeOrExclude == pdfium::ContainsValue(fields, pField)) { + if ((dwFlags & 0x02) != 0 && pField->m_pDict->GetStringBy("V").IsEmpty()) + continue; + + CFX_WideString fullname = GetFullName(pField->GetFieldDict()); + CPDF_Dictionary* pFieldDict = new CPDF_Dictionary; + pFieldDict->SetAt("T", new CPDF_String(fullname)); + if (pField->GetType() == CPDF_FormField::CheckBox || + pField->GetType() == CPDF_FormField::RadioButton) { + CFX_WideString csExport = pField->GetCheckValue(FALSE); + CFX_ByteString csBExport = PDF_EncodeText(csExport); + CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt"); + if (pOpt) + pFieldDict->SetAtString("V", csBExport); + else + pFieldDict->SetAtName("V", csBExport); + } else { + CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V"); + if (pV) + pFieldDict->SetAt("V", pV->Clone(TRUE)); + } + pFields->Add(pFieldDict); + } + } + return pDoc; +} + +void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict, + const CFX_WideString& parent_name, + FX_BOOL bNotify, + int nLevel) { + CFX_WideString name; + if (!parent_name.IsEmpty()) { + name = parent_name + L"."; + } + name += pFieldDict->GetUnicodeTextBy("T"); + CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); + if (pKids) { + for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { + CPDF_Dictionary* pKid = pKids->GetDictAt(i); + if (!pKid) { + continue; + } + if (nLevel <= nMaxRecursion) { + FDF_ImportField(pKid, name, bNotify, nLevel + 1); + } + } + return; + } + if (!pFieldDict->KeyExist("V")) { + return; + } + CPDF_FormField* pField = m_pFieldTree->GetField(name); + if (!pField) { + return; + } + CFX_WideString csWValue = + FPDFDOC_FDF_GetFieldValue(*pFieldDict, m_bsEncoding); + int iType = pField->GetFieldType(); + if (bNotify && m_pFormNotify) { + int iRet = 0; + if (iType == FIELDTYPE_LISTBOX) { + iRet = m_pFormNotify->BeforeSelectionChange(pField, csWValue); + } else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) { + iRet = m_pFormNotify->BeforeValueChange(pField, csWValue); + } + if (iRet < 0) { + return; + } + } + pField->SetValue(csWValue); + CPDF_FormField::Type eType = pField->GetType(); + if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox) && + pFieldDict->KeyExist("Opt")) { + pField->m_pDict->SetAt("Opt", + pFieldDict->GetElementValue("Opt")->Clone(TRUE)); + } + if (bNotify && m_pFormNotify) { + if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) { + m_pFormNotify->AfterCheckedStatusChange(pField); + } else if (iType == FIELDTYPE_LISTBOX) { + m_pFormNotify->AfterSelectionChange(pField); + } else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) { + m_pFormNotify->AfterValueChange(pField); + } + } + if (CPDF_InterForm::m_bUpdateAP) { + pField->UpdateAP(NULL); + } +} +FX_BOOL CPDF_InterForm::ImportFromFDF(const CFDF_Document* pFDF, + FX_BOOL bNotify) { + if (!pFDF) { + return FALSE; + } + CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDictBy("FDF"); + if (!pMainDict) { + return FALSE; + } + CPDF_Array* pFields = pMainDict->GetArrayBy("Fields"); + if (!pFields) { + return FALSE; + } + m_bsEncoding = pMainDict->GetStringBy("Encoding"); + if (bNotify && m_pFormNotify) { + int iRet = m_pFormNotify->BeforeFormImportData(this); + if (iRet < 0) { + return FALSE; + } + } + for (FX_DWORD i = 0; i < pFields->GetCount(); i++) { + CPDF_Dictionary* pField = pFields->GetDictAt(i); + if (!pField) { + continue; + } + FDF_ImportField(pField, L"", bNotify); + } + if (bNotify && m_pFormNotify) { + m_pFormNotify->AfterFormImportData(this); + } + return TRUE; +} +void CPDF_InterForm::SetFormNotify(const CPDF_FormNotify* pNotify) { + m_pFormNotify = (CPDF_FormNotify*)pNotify; +} diff --git a/core/fpdfdoc/doc_formcontrol.cpp b/core/fpdfdoc/doc_formcontrol.cpp new file mode 100644 index 0000000000..15ff7b5e64 --- /dev/null +++ b/core/fpdfdoc/doc_formcontrol.cpp @@ -0,0 +1,432 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +CPDF_FormControl::CPDF_FormControl(CPDF_FormField* pField, + CPDF_Dictionary* pWidgetDict) { + m_pField = pField; + m_pWidgetDict = pWidgetDict; + m_pForm = m_pField->m_pForm; +} +CFX_FloatRect CPDF_FormControl::GetRect() const { + return m_pWidgetDict->GetRectBy("Rect"); +} +CFX_ByteString CPDF_FormControl::GetOnStateName() const { + ASSERT(GetType() == CPDF_FormField::CheckBox || + GetType() == CPDF_FormField::RadioButton); + CFX_ByteString csOn; + CPDF_Dictionary* pAP = m_pWidgetDict->GetDictBy("AP"); + if (!pAP) { + return csOn; + } + CPDF_Dictionary* pN = pAP->GetDictBy("N"); + if (!pN) { + return csOn; + } + for (const auto& it : *pN) { + if (it.first != "Off") { + return it.first; + } + } + return CFX_ByteString(); +} +void CPDF_FormControl::SetOnStateName(const CFX_ByteString& csOn) { + ASSERT(GetType() == CPDF_FormField::CheckBox || + GetType() == CPDF_FormField::RadioButton); + CFX_ByteString csValue = csOn; + if (csValue.IsEmpty()) { + csValue = "Yes"; + } + if (csValue == "Off") { + csValue = "Yes"; + } + CFX_ByteString csAS = m_pWidgetDict->GetStringBy("AS", "Off"); + if (csAS != "Off") { + m_pWidgetDict->SetAtName("AS", csValue); + } + CPDF_Dictionary* pAP = m_pWidgetDict->GetDictBy("AP"); + if (!pAP) { + return; + } + for (const auto& it : *pAP) { + CPDF_Object* pObj1 = it.second; + if (!pObj1) { + continue; + } + CPDF_Object* pObjDirect1 = pObj1->GetDirect(); + CPDF_Dictionary* pSubDict = pObjDirect1->AsDictionary(); + if (!pSubDict) + continue; + + auto subdict_it = pSubDict->begin(); + while (subdict_it != pSubDict->end()) { + const CFX_ByteString& csKey2 = subdict_it->first; + CPDF_Object* pObj2 = subdict_it->second; + ++subdict_it; + if (!pObj2) { + continue; + } + if (csKey2 != "Off") { + pSubDict->ReplaceKey(csKey2, csValue); + break; + } + } + } +} +CFX_ByteString CPDF_FormControl::GetCheckedAPState() { + ASSERT(GetType() == CPDF_FormField::CheckBox || + GetType() == CPDF_FormField::RadioButton); + CFX_ByteString csOn = GetOnStateName(); + if (GetType() == CPDF_FormField::RadioButton || + GetType() == CPDF_FormField::CheckBox) { + if (ToArray(FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"))) { + int iIndex = m_pField->GetControlIndex(this); + csOn.Format("%d", iIndex); + } + } + if (csOn.IsEmpty()) + csOn = "Yes"; + return csOn; +} +CFX_WideString CPDF_FormControl::GetExportValue() { + ASSERT(GetType() == CPDF_FormField::CheckBox || + GetType() == CPDF_FormField::RadioButton); + CFX_ByteString csOn = GetOnStateName(); + if (GetType() == CPDF_FormField::RadioButton || + GetType() == CPDF_FormField::CheckBox) { + if (CPDF_Array* pArray = + ToArray(FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"))) { + int iIndex = m_pField->GetControlIndex(this); + csOn = pArray->GetStringAt(iIndex); + } + } + if (csOn.IsEmpty()) { + csOn = "Yes"; + } + CFX_WideString csWOn = PDF_DecodeText(csOn); + return csWOn; +} + +bool CPDF_FormControl::IsChecked() const { + ASSERT(GetType() == CPDF_FormField::CheckBox || + GetType() == CPDF_FormField::RadioButton); + CFX_ByteString csOn = GetOnStateName(); + CFX_ByteString csAS = m_pWidgetDict->GetStringBy("AS"); + return csAS == csOn; +} + +bool CPDF_FormControl::IsDefaultChecked() const { + ASSERT(GetType() == CPDF_FormField::CheckBox || + GetType() == CPDF_FormField::RadioButton); + CPDF_Object* pDV = FPDF_GetFieldAttr(m_pField->m_pDict, "DV"); + if (!pDV) { + return FALSE; + } + CFX_ByteString csDV = pDV->GetString(); + CFX_ByteString csOn = GetOnStateName(); + return (csDV == csOn); +} + +void CPDF_FormControl::CheckControl(FX_BOOL bChecked) { + ASSERT(GetType() == CPDF_FormField::CheckBox || + GetType() == CPDF_FormField::RadioButton); + CFX_ByteString csOn = GetOnStateName(); + CFX_ByteString csOldAS = m_pWidgetDict->GetStringBy("AS", "Off"); + CFX_ByteString csAS = "Off"; + if (bChecked) { + csAS = csOn; + } + if (csOldAS == csAS) { + return; + } + m_pWidgetDict->SetAtName("AS", csAS); + m_pForm->m_bUpdated = TRUE; +} +CPDF_Stream* FPDFDOC_GetAnnotAP(CPDF_Dictionary* pAnnotDict, + CPDF_Annot::AppearanceMode mode); +void CPDF_FormControl::DrawControl(CFX_RenderDevice* pDevice, + CFX_Matrix* pMatrix, + CPDF_Page* pPage, + CPDF_Annot::AppearanceMode mode, + const CPDF_RenderOptions* pOptions) { + if (m_pWidgetDict->GetIntegerBy("F") & ANNOTFLAG_HIDDEN) { + return; + } + CPDF_Stream* pStream = FPDFDOC_GetAnnotAP(m_pWidgetDict, mode); + if (!pStream) { + return; + } + CFX_FloatRect form_bbox = pStream->GetDict()->GetRectBy("BBox"); + CFX_Matrix form_matrix = pStream->GetDict()->GetMatrixBy("Matrix"); + form_matrix.TransformRect(form_bbox); + CFX_FloatRect arect = m_pWidgetDict->GetRectBy("Rect"); + CFX_Matrix matrix; + matrix.MatchRect(arect, form_bbox); + matrix.Concat(*pMatrix); + CPDF_Form form(m_pField->m_pForm->m_pDocument, + m_pField->m_pForm->m_pFormDict->GetDictBy("DR"), pStream); + form.ParseContent(NULL, NULL, NULL, NULL); + CPDF_RenderContext context(pPage); + context.AppendLayer(&form, &matrix); + context.Render(pDevice, pOptions, nullptr); +} +static const FX_CHAR* const g_sHighlightingMode[] = { + // Must match order of HiglightingMode enum. + "N", "I", "O", "P", "T", nullptr}; +CPDF_FormControl::HighlightingMode CPDF_FormControl::GetHighlightingMode() { + if (!m_pWidgetDict) { + return Invert; + } + CFX_ByteString csH = m_pWidgetDict->GetStringBy("H", "I"); + for (int i = 0; g_sHighlightingMode[i]; ++i) { + if (csH.Equal(g_sHighlightingMode[i])) + return static_cast(i); + } + return Invert; +} + +CPDF_ApSettings CPDF_FormControl::GetMK() const { + return CPDF_ApSettings(m_pWidgetDict ? m_pWidgetDict->GetDictBy("MK") + : nullptr); +} + +bool CPDF_FormControl::HasMKEntry(CFX_ByteString csEntry) const { + return GetMK().HasMKEntry(csEntry); +} + +int CPDF_FormControl::GetRotation() { + return GetMK().GetRotation(); +} + +FX_ARGB CPDF_FormControl::GetColor(int& iColorType, CFX_ByteString csEntry) { + return GetMK().GetColor(iColorType, csEntry); +} + +FX_FLOAT CPDF_FormControl::GetOriginalColor(int index, CFX_ByteString csEntry) { + return GetMK().GetOriginalColor(index, csEntry); +} + +void CPDF_FormControl::GetOriginalColor(int& iColorType, + FX_FLOAT fc[4], + CFX_ByteString csEntry) { + GetMK().GetOriginalColor(iColorType, fc, csEntry); +} +CFX_WideString CPDF_FormControl::GetCaption(CFX_ByteString csEntry) { + return GetMK().GetCaption(csEntry); +} + +CPDF_Stream* CPDF_FormControl::GetIcon(CFX_ByteString csEntry) { + return GetMK().GetIcon(csEntry); +} + +CPDF_IconFit CPDF_FormControl::GetIconFit() { + return GetMK().GetIconFit(); +} + +int CPDF_FormControl::GetTextPosition() { + return GetMK().GetTextPosition(); +} + +CPDF_Action CPDF_FormControl::GetAction() { + if (!m_pWidgetDict) { + return CPDF_Action(); + } + if (m_pWidgetDict->KeyExist("A")) { + return CPDF_Action(m_pWidgetDict->GetDictBy("A")); + } + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "A"); + if (!pObj) { + return CPDF_Action(); + } + return CPDF_Action(pObj->GetDict()); +} + +CPDF_AAction CPDF_FormControl::GetAdditionalAction() { + if (!m_pWidgetDict) + return CPDF_AAction(); + + if (m_pWidgetDict->KeyExist("AA")) + return CPDF_AAction(m_pWidgetDict->GetDictBy("AA")); + return m_pField->GetAdditionalAction(); +} + +CPDF_DefaultAppearance CPDF_FormControl::GetDefaultAppearance() { + if (!m_pWidgetDict) + return CPDF_DefaultAppearance(); + + if (m_pWidgetDict->KeyExist("DA")) + return CPDF_DefaultAppearance(m_pWidgetDict->GetStringBy("DA")); + + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "DA"); + if (pObj) + return CPDF_DefaultAppearance(pObj->GetString()); + return m_pField->m_pForm->GetDefaultAppearance(); +} + +CPDF_Font* CPDF_FormControl::GetDefaultControlFont() { + CPDF_DefaultAppearance cDA = GetDefaultAppearance(); + CFX_ByteString csFontNameTag; + FX_FLOAT fFontSize; + cDA.GetFont(csFontNameTag, fFontSize); + if (csFontNameTag.IsEmpty()) + return nullptr; + + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pWidgetDict, "DR"); + if (CPDF_Dictionary* pDict = ToDictionary(pObj)) { + CPDF_Dictionary* pFonts = pDict->GetDictBy("Font"); + if (pFonts) { + CPDF_Dictionary* pElement = pFonts->GetDictBy(csFontNameTag); + if (pElement) { + CPDF_Font* pFont = m_pField->m_pForm->m_pDocument->LoadFont(pElement); + if (pFont) { + return pFont; + } + } + } + } + if (CPDF_Font* pFormFont = m_pField->m_pForm->GetFormFont(csFontNameTag)) + return pFormFont; + + CPDF_Dictionary* pPageDict = m_pWidgetDict->GetDictBy("P"); + pObj = FPDF_GetFieldAttr(pPageDict, "Resources"); + if (CPDF_Dictionary* pDict = ToDictionary(pObj)) { + CPDF_Dictionary* pFonts = pDict->GetDictBy("Font"); + if (pFonts) { + CPDF_Dictionary* pElement = pFonts->GetDictBy(csFontNameTag); + if (pElement) { + CPDF_Font* pFont = m_pField->m_pForm->m_pDocument->LoadFont(pElement); + if (pFont) { + return pFont; + } + } + } + } + return nullptr; +} + +int CPDF_FormControl::GetControlAlignment() { + if (!m_pWidgetDict) { + return 0; + } + if (m_pWidgetDict->KeyExist("Q")) { + return m_pWidgetDict->GetIntegerBy("Q", 0); + } + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "Q"); + if (pObj) + return pObj->GetInteger(); + return m_pField->m_pForm->GetFormAlignment(); +} + +CPDF_ApSettings::CPDF_ApSettings(CPDF_Dictionary* pDict) : m_pDict(pDict) {} + +bool CPDF_ApSettings::HasMKEntry(const CFX_ByteStringC& csEntry) const { + return m_pDict && m_pDict->KeyExist(csEntry); +} + +int CPDF_ApSettings::GetRotation() const { + return m_pDict ? m_pDict->GetIntegerBy("R") : 0; +} + +FX_ARGB CPDF_ApSettings::GetColor(int& iColorType, + const CFX_ByteStringC& csEntry) const { + iColorType = COLORTYPE_TRANSPARENT; + if (!m_pDict) + return 0; + + CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); + if (!pEntry) + return 0; + + FX_ARGB color = 0; + FX_DWORD dwCount = pEntry->GetCount(); + if (dwCount == 1) { + iColorType = COLORTYPE_GRAY; + FX_FLOAT g = pEntry->GetNumberAt(0) * 255; + color = ArgbEncode(255, (int)g, (int)g, (int)g); + } else if (dwCount == 3) { + iColorType = COLORTYPE_RGB; + FX_FLOAT r = pEntry->GetNumberAt(0) * 255; + FX_FLOAT g = pEntry->GetNumberAt(1) * 255; + FX_FLOAT b = pEntry->GetNumberAt(2) * 255; + color = ArgbEncode(255, (int)r, (int)g, (int)b); + } else if (dwCount == 4) { + iColorType = COLORTYPE_CMYK; + FX_FLOAT c = pEntry->GetNumberAt(0); + FX_FLOAT m = pEntry->GetNumberAt(1); + FX_FLOAT y = pEntry->GetNumberAt(2); + FX_FLOAT k = pEntry->GetNumberAt(3); + FX_FLOAT r = 1.0f - std::min(1.0f, c + k); + FX_FLOAT g = 1.0f - std::min(1.0f, m + k); + FX_FLOAT b = 1.0f - std::min(1.0f, y + k); + color = ArgbEncode(255, (int)(r * 255), (int)(g * 255), (int)(b * 255)); + } + return color; +} + +FX_FLOAT CPDF_ApSettings::GetOriginalColor( + int index, + const CFX_ByteStringC& csEntry) const { + if (!m_pDict) + return 0; + + CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); + return pEntry ? pEntry->GetNumberAt(index) : 0; +} + +void CPDF_ApSettings::GetOriginalColor(int& iColorType, + FX_FLOAT fc[4], + const CFX_ByteStringC& csEntry) const { + iColorType = COLORTYPE_TRANSPARENT; + for (int i = 0; i < 4; i++) { + fc[i] = 0; + } + if (!m_pDict) { + return; + } + CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); + if (!pEntry) { + return; + } + FX_DWORD dwCount = pEntry->GetCount(); + if (dwCount == 1) { + iColorType = COLORTYPE_GRAY; + fc[0] = pEntry->GetNumberAt(0); + } else if (dwCount == 3) { + iColorType = COLORTYPE_RGB; + fc[0] = pEntry->GetNumberAt(0); + fc[1] = pEntry->GetNumberAt(1); + fc[2] = pEntry->GetNumberAt(2); + } else if (dwCount == 4) { + iColorType = COLORTYPE_CMYK; + fc[0] = pEntry->GetNumberAt(0); + fc[1] = pEntry->GetNumberAt(1); + fc[2] = pEntry->GetNumberAt(2); + fc[3] = pEntry->GetNumberAt(3); + } +} + +CFX_WideString CPDF_ApSettings::GetCaption( + const CFX_ByteStringC& csEntry) const { + return m_pDict ? m_pDict->GetUnicodeTextBy(csEntry) : CFX_WideString(); +} + +CPDF_Stream* CPDF_ApSettings::GetIcon(const CFX_ByteStringC& csEntry) const { + return m_pDict ? m_pDict->GetStreamBy(csEntry) : nullptr; +} + +CPDF_IconFit CPDF_ApSettings::GetIconFit() const { + return CPDF_IconFit(m_pDict ? m_pDict->GetDictBy("IF") : nullptr); +} + +int CPDF_ApSettings::GetTextPosition() const { + return m_pDict ? m_pDict->GetIntegerBy("TP", TEXTPOS_CAPTION) + : TEXTPOS_CAPTION; +} diff --git a/core/fpdfdoc/doc_formfield.cpp b/core/fpdfdoc/doc_formfield.cpp new file mode 100644 index 0000000000..7ad8cacea9 --- /dev/null +++ b/core/fpdfdoc/doc_formfield.cpp @@ -0,0 +1,1097 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfdoc/doc_utils.h" +#include "core/include/fpdfapi/cfdf_document.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_number.h" +#include "core/include/fpdfapi/cpdf_simple_parser.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +FX_BOOL PDF_FormField_IsUnison(CPDF_FormField* pField) { + FX_BOOL bUnison = FALSE; + if (pField->GetType() == CPDF_FormField::CheckBox) { + bUnison = TRUE; + } else { + FX_DWORD dwFlags = pField->GetFieldFlags(); + bUnison = ((dwFlags & 0x2000000) != 0); + } + return bUnison; +} +CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict) { + m_pDict = pDict; + m_Type = Unknown; + m_pForm = pForm; + m_pFont = NULL; + m_FontSize = 0; + SyncFieldFlags(); +} +CPDF_FormField::~CPDF_FormField() {} +void CPDF_FormField::SyncFieldFlags() { + CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT") + ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString() + : CFX_ByteString(); + FX_DWORD flags = FPDF_GetFieldAttr(m_pDict, "Ff") + ? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger() + : 0; + m_Flags = 0; + if (flags & 1) { + m_Flags |= FORMFIELD_READONLY; + } + if (flags & 2) { + m_Flags |= FORMFIELD_REQUIRED; + } + if (flags & 4) { + m_Flags |= FORMFIELD_NOEXPORT; + } + if (type_name == "Btn") { + if (flags & 0x8000) { + m_Type = RadioButton; + if (flags & 0x4000) { + m_Flags |= FORMRADIO_NOTOGGLEOFF; + } + if (flags & 0x2000000) { + m_Flags |= FORMRADIO_UNISON; + } + } else if (flags & 0x10000) { + m_Type = PushButton; + } else { + m_Type = CheckBox; + } + } else if (type_name == "Tx") { + if (flags & 0x100000) { + m_Type = File; + } else if (flags & 0x2000000) { + m_Type = RichText; + } else { + m_Type = Text; + if (flags & 0x1000) { + m_Flags |= FORMTEXT_MULTILINE; + } + if (flags & 0x2000) { + m_Flags |= FORMTEXT_PASSWORD; + } + if (flags & 0x800000) { + m_Flags |= FORMTEXT_NOSCROLL; + } + if (flags & 0x100000) { + m_Flags |= FORMTEXT_COMB; + } + } + LoadDA(); + } else if (type_name == "Ch") { + if (flags & 0x20000) { + m_Type = ComboBox; + if (flags & 0x40000) { + m_Flags |= FORMCOMBO_EDIT; + } + } else { + m_Type = ListBox; + if (flags & 0x200000) { + m_Flags |= FORMLIST_MULTISELECT; + } + } + LoadDA(); + } else if (type_name == "Sig") { + m_Type = Sign; + } +} +CFX_WideString CPDF_FormField::GetFullName() { + return ::GetFullName(m_pDict); +} +FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) { + switch (m_Type) { + case CPDF_FormField::CheckBox: + case CPDF_FormField::RadioButton: { + int iCount = CountControls(); + if (iCount) { + // TODO(weili): Check whether anything special needs to be done for + // unison field. Otherwise, merge these branches. + if (PDF_FormField_IsUnison(this)) { + for (int i = 0; i < iCount; i++) { + CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); + } + } else { + for (int i = 0; i < iCount; i++) { + CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); + } + } + } + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); + } + } break; + case CPDF_FormField::ComboBox: { + CFX_WideString csValue; + ClearSelection(); + int iIndex = GetDefaultSelectedItem(); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + if (iRet < 0) { + return FALSE; + } + } + SetItemSelection(iIndex, TRUE); + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } break; + case CPDF_FormField::ListBox: { + CFX_WideString csValue; + ClearSelection(); + int iIndex = GetDefaultSelectedItem(); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + if (iRet < 0) { + return FALSE; + } + } + SetItemSelection(iIndex, TRUE); + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + } break; + case CPDF_FormField::Text: + case CPDF_FormField::RichText: + case CPDF_FormField::File: + default: { + CPDF_Object* pDV = FPDF_GetFieldAttr(m_pDict, "DV"); + CFX_WideString csDValue; + if (pDV) { + csDValue = pDV->GetUnicodeText(); + } + CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); + CFX_WideString csValue; + if (pV) { + csValue = pV->GetUnicodeText(); + } + CPDF_Object* pRV = FPDF_GetFieldAttr(m_pDict, "RV"); + if (!pRV && (csDValue == csValue)) { + return FALSE; + } + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csDValue); + if (iRet < 0) { + return FALSE; + } + } + if (pDV) { + CPDF_Object* pClone = pDV->Clone(); + if (!pClone) { + return FALSE; + } + m_pDict->SetAt("V", pClone); + if (pRV) { + CPDF_Object* pCloneR = pDV->Clone(); + m_pDict->SetAt("RV", pCloneR); + } + } else { + m_pDict->RemoveAt("V"); + m_pDict->RemoveAt("RV"); + } + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + m_pForm->m_bUpdated = TRUE; + } break; + } + return TRUE; +} +int CPDF_FormField::GetControlIndex(const CPDF_FormControl* pControl) { + if (!pControl) { + return -1; + } + for (int i = 0; i < m_ControlList.GetSize(); i++) { + if (m_ControlList.GetAt(i) == pControl) + return i; + } + return -1; +} +int CPDF_FormField::GetFieldType() { + switch (m_Type) { + case PushButton: + return FIELDTYPE_PUSHBUTTON; + case CheckBox: + return FIELDTYPE_CHECKBOX; + case RadioButton: + return FIELDTYPE_RADIOBUTTON; + case ComboBox: + return FIELDTYPE_COMBOBOX; + case ListBox: + return FIELDTYPE_LISTBOX; + case Text: + case RichText: + case File: + return FIELDTYPE_TEXTFIELD; + case Sign: + return FIELDTYPE_SIGNATURE; + default: + break; + } + return FIELDTYPE_UNKNOWN; +} + +CPDF_AAction CPDF_FormField::GetAdditionalAction() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "AA"); + return CPDF_AAction(pObj ? pObj->GetDict() : nullptr); +} + +CFX_WideString CPDF_FormField::GetAlternateName() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TU"); + if (!pObj) { + return L""; + } + return pObj->GetUnicodeText(); +} +CFX_WideString CPDF_FormField::GetMappingName() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TM"); + if (!pObj) { + return L""; + } + return pObj->GetUnicodeText(); +} +FX_DWORD CPDF_FormField::GetFieldFlags() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "Ff"); + if (!pObj) { + return 0; + } + return pObj->GetInteger(); +} +CFX_ByteString CPDF_FormField::GetDefaultStyle() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "DS"); + if (!pObj) { + return ""; + } + return pObj->GetString(); +} +CFX_WideString CPDF_FormField::GetRichTextString() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "RV"); + if (!pObj) { + return L""; + } + return pObj->GetUnicodeText(); +} +CFX_WideString CPDF_FormField::GetValue(FX_BOOL bDefault) { + if (GetType() == CheckBox || GetType() == RadioButton) { + return GetCheckValue(bDefault); + } + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, bDefault ? "DV" : "V"); + if (!pValue) { + if (!bDefault) { + if (m_Type == RichText) { + pValue = FPDF_GetFieldAttr(m_pDict, "V"); + } + if (!pValue && m_Type != Text) { + pValue = FPDF_GetFieldAttr(m_pDict, "DV"); + } + } + if (!pValue) { + return CFX_WideString(); + } + } + switch (pValue->GetType()) { + case CPDF_Object::STRING: + case CPDF_Object::STREAM: + return pValue->GetUnicodeText(); + case CPDF_Object::ARRAY: + pValue = pValue->AsArray()->GetElementValue(0); + if (pValue) + return pValue->GetUnicodeText(); + break; + default: + break; + } + return CFX_WideString(); +} +CFX_WideString CPDF_FormField::GetValue() { + return GetValue(FALSE); +} +CFX_WideString CPDF_FormField::GetDefaultValue() { + return GetValue(TRUE); +} +FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify) { + switch (m_Type) { + case CheckBox: + case RadioButton: { + SetCheckValue(value, bDefault, bNotify); + return TRUE; + } + case File: + case RichText: + case Text: + case ComboBox: { + CFX_WideString csValue = value; + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + if (iRet < 0) { + return FALSE; + } + } + int iIndex = FindOptionValue(csValue); + if (iIndex < 0) { + CFX_ByteString bsEncodeText = PDF_EncodeText(csValue); + m_pDict->SetAtString(bDefault ? "DV" : "V", bsEncodeText); + if (m_Type == RichText && !bDefault) { + m_pDict->SetAtString("RV", bsEncodeText); + } + m_pDict->RemoveAt("I"); + } else { + m_pDict->SetAtString(bDefault ? "DV" : "V", PDF_EncodeText(csValue)); + if (bDefault) { + } else { + ClearSelection(); + SetItemSelection(iIndex, TRUE); + } + } + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + m_pForm->m_bUpdated = TRUE; + } break; + case ListBox: { + int iIndex = FindOptionValue(value); + if (iIndex < 0) { + return FALSE; + } + if (bDefault && iIndex == GetDefaultSelectedItem()) { + return FALSE; + } + if (bNotify && m_pForm->m_pFormNotify) { + CFX_WideString csValue = value; + int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + if (iRet < 0) { + return FALSE; + } + } + if (bDefault) { + } else { + ClearSelection(); + SetItemSelection(iIndex, TRUE); + } + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + m_pForm->m_bUpdated = TRUE; + break; + } + default: + break; + } + if (CPDF_InterForm::m_bUpdateAP) { + UpdateAP(NULL); + } + return TRUE; +} +FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bNotify) { + return SetValue(value, FALSE, bNotify); +} +int CPDF_FormField::GetMaxLen() { + if (CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "MaxLen")) + return pObj->GetInteger(); + + for (int i = 0; i < m_ControlList.GetSize(); i++) { + CPDF_FormControl* pControl = m_ControlList.GetAt(i); + if (!pControl) + continue; + + CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict; + if (pWidgetDict->KeyExist("MaxLen")) + return pWidgetDict->GetIntegerBy("MaxLen"); + } + return 0; +} +int CPDF_FormField::CountSelectedItems() { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (!pValue) { + pValue = FPDF_GetFieldAttr(m_pDict, "I"); + if (!pValue) + return 0; + } + + if (pValue->IsString() || pValue->IsNumber()) + return pValue->GetString().IsEmpty() ? 0 : 1; + if (CPDF_Array* pArray = pValue->AsArray()) + return pArray->GetCount(); + return 0; +} +int CPDF_FormField::GetSelectedIndex(int index) { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (!pValue) { + pValue = FPDF_GetFieldAttr(m_pDict, "I"); + if (!pValue) + return -1; + } + if (pValue->IsNumber()) + return pValue->GetInteger(); + + CFX_WideString sel_value; + if (pValue->IsString()) { + if (index != 0) + return -1; + sel_value = pValue->GetUnicodeText(); + } else { + CPDF_Array* pArray = pValue->AsArray(); + if (!pArray || index < 0) + return -1; + + CPDF_Object* elementValue = pArray->GetElementValue(index); + sel_value = + elementValue ? elementValue->GetUnicodeText() : CFX_WideString(); + } + if (index < CountSelectedOptions()) { + int iOptIndex = GetSelectedOptionIndex(index); + CFX_WideString csOpt = GetOptionValue(iOptIndex); + if (csOpt == sel_value) { + return iOptIndex; + } + } + int nOpts = CountOptions(); + for (int i = 0; i < nOpts; i++) { + if (sel_value == GetOptionValue(i)) { + return i; + } + } + return -1; +} +FX_BOOL CPDF_FormField::ClearSelection(FX_BOOL bNotify) { + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = 0; + CFX_WideString csValue; + int iIndex = GetSelectedIndex(0); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + } + if (iRet < 0) { + return FALSE; + } + } + m_pDict->RemoveAt("V"); + m_pDict->RemoveAt("I"); + if (bNotify && m_pForm->m_pFormNotify) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + if (CPDF_InterForm::m_bUpdateAP) { + UpdateAP(NULL); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +FX_BOOL CPDF_FormField::IsItemSelected(int index) { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + if (index < 0 || index >= CountOptions()) { + return FALSE; + } + if (IsOptionSelected(index)) { + return TRUE; + } + CFX_WideString opt_value = GetOptionValue(index); + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (!pValue) { + pValue = FPDF_GetFieldAttr(m_pDict, "I"); + if (!pValue) { + return FALSE; + } + } + + if (pValue->IsString()) + return pValue->GetUnicodeText() == opt_value; + + if (pValue->IsNumber()) { + if (pValue->GetString().IsEmpty()) + return FALSE; + return (pValue->GetInteger() == index); + } + + CPDF_Array* pArray = pValue->AsArray(); + if (!pArray) + return FALSE; + + int iPos = -1; + for (int j = 0; j < CountSelectedOptions(); j++) { + if (GetSelectedOptionIndex(j) == index) { + iPos = j; + break; + } + } + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) + if (pArray->GetElementValue(i)->GetUnicodeText() == opt_value && + (int)i == iPos) { + return TRUE; + } + return FALSE; +} +FX_BOOL CPDF_FormField::SetItemSelection(int index, + FX_BOOL bSelected, + FX_BOOL bNotify) { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + if (index < 0 || index >= CountOptions()) { + return FALSE; + } + CFX_WideString opt_value = GetOptionValue(index); + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = 0; + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, opt_value); + } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, opt_value); + } + if (iRet < 0) { + return FALSE; + } + } + if (!bSelected) { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (pValue) { + if (m_Type == ListBox) { + SelectOption(index, FALSE); + if (pValue->IsString()) { + if (pValue->GetUnicodeText() == opt_value) { + m_pDict->RemoveAt("V"); + } + } else if (pValue->IsArray()) { + CPDF_Array* pArray = new CPDF_Array; + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + if (i != index) { + if (IsItemSelected(i)) { + opt_value = GetOptionValue(i); + pArray->AddString(PDF_EncodeText(opt_value)); + } + } + } + if (pArray->GetCount() < 1) { + pArray->Release(); + } else { + m_pDict->SetAt("V", pArray); + } + } + } else if (m_Type == ComboBox) { + m_pDict->RemoveAt("V"); + m_pDict->RemoveAt("I"); + } + } + } else { + if (m_Type == ListBox) { + SelectOption(index, TRUE); + if (!(m_Flags & FORMLIST_MULTISELECT)) { + m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); + } else { + CPDF_Array* pArray = new CPDF_Array; + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + FX_BOOL bSelected; + if (i != index) { + bSelected = IsItemSelected(i); + } else { + bSelected = TRUE; + } + if (bSelected) { + opt_value = GetOptionValue(i); + pArray->AddString(PDF_EncodeText(opt_value)); + } + } + m_pDict->SetAt("V", pArray); + } + } else if (m_Type == ComboBox) { + m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); + CPDF_Array* pI = new CPDF_Array; + pI->AddInteger(index); + m_pDict->SetAt("I", pI); + } + } + if (bNotify && m_pForm->m_pFormNotify) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + if (CPDF_InterForm::m_bUpdateAP) { + UpdateAP(NULL); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +FX_BOOL CPDF_FormField::IsItemDefaultSelected(int index) { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + if (index < 0 || index >= CountOptions()) { + return FALSE; + } + int iDVIndex = GetDefaultSelectedItem(); + if (iDVIndex < 0) { + return FALSE; + } + return (iDVIndex == index); +} +int CPDF_FormField::GetDefaultSelectedItem() { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "DV"); + if (!pValue) { + return -1; + } + CFX_WideString csDV = pValue->GetUnicodeText(); + if (csDV.IsEmpty()) { + return -1; + } + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + if (csDV == GetOptionValue(i)) { + return i; + } + } + return -1; +} +void CPDF_FormField::UpdateAP(CPDF_FormControl* pControl) { + if (m_Type == PushButton) { + return; + } + if (m_Type == RadioButton || m_Type == CheckBox) { + return; + } + if (!m_pForm->m_bGenerateAP) { + return; + } + for (int i = 0; i < CountControls(); i++) { + CPDF_FormControl* pControl = GetControl(i); + FPDF_GenerateAP(m_pForm->m_pDocument, pControl->m_pWidgetDict); + } +} +int CPDF_FormField::CountOptions() { + CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "Opt")); + return pArray ? pArray->GetCount() : 0; +} +CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) { + CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "Opt")); + if (!pArray) + return CFX_WideString(); + + CPDF_Object* pOption = pArray->GetElementValue(index); + if (!pOption) + return CFX_WideString(); + if (CPDF_Array* pOptionArray = pOption->AsArray()) + pOption = pOptionArray->GetElementValue(sub_index); + + CPDF_String* pString = ToString(pOption); + return pString ? pString->GetUnicodeText() : CFX_WideString(); +} +CFX_WideString CPDF_FormField::GetOptionLabel(int index) { + return GetOptionText(index, 1); +} +CFX_WideString CPDF_FormField::GetOptionValue(int index) { + return GetOptionText(index, 0); +} +int CPDF_FormField::FindOption(CFX_WideString csOptLabel) { + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + CFX_WideString csValue = GetOptionValue(i); + if (csValue == csOptLabel) { + return i; + } + } + return -1; +} +int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue, + int iStartIndex) { + if (iStartIndex < 0) { + iStartIndex = 0; + } + int iCount = CountOptions(); + for (; iStartIndex < iCount; iStartIndex++) { + CFX_WideString csValue = GetOptionValue(iStartIndex); + if (csValue == csOptValue) { + return iStartIndex; + } + } + return -1; +} +#ifdef PDF_ENABLE_XFA +int CPDF_FormField::InsertOption(CFX_WideString csOptLabel, + int index, + FX_BOOL bNotify) { + if (csOptLabel.IsEmpty()) + return -1; + + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = 0; + if (GetType() == ListBox) + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csOptLabel); + if (GetType() == ComboBox) + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csOptLabel); + if (iRet < 0) + return -1; + } + + CFX_ByteString csStr = PDF_EncodeText(csOptLabel, csOptLabel.GetLength()); + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); + CPDF_Array* pOpt = ToArray(pValue); + if (!pOpt) { + pOpt = new CPDF_Array; + m_pDict->SetAt("Opt", pOpt); + } + + int iCount = (int)pOpt->GetCount(); + if (index < 0 || index >= iCount) { + pOpt->AddString(csStr); + index = iCount; + } else { + CPDF_String* pString = new CPDF_String(csStr, FALSE); + pOpt->InsertAt(index, pString); + } + + if (bNotify && m_pForm->m_pFormNotify) { + if (GetType() == ListBox) + m_pForm->m_pFormNotify->AfterSelectionChange(this); + if (GetType() == ComboBox) + m_pForm->m_pFormNotify->AfterValueChange(this); + } + m_pForm->m_bUpdated = TRUE; + return index; +} +FX_BOOL CPDF_FormField::ClearOptions(FX_BOOL bNotify) { + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = 0; + CFX_WideString csValue; + int iIndex = GetSelectedIndex(0); + if (iIndex >= 0) + csValue = GetOptionLabel(iIndex); + if (GetType() == ListBox) + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + if (GetType() == ComboBox) + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + if (iRet < 0) + return FALSE; + } + + m_pDict->RemoveAt("Opt"); + m_pDict->RemoveAt("V"); + m_pDict->RemoveAt("DV"); + m_pDict->RemoveAt("I"); + m_pDict->RemoveAt("TI"); + + if (bNotify && m_pForm->m_pFormNotify) { + if (GetType() == ListBox) + m_pForm->m_pFormNotify->AfterSelectionChange(this); + if (GetType() == ComboBox) + m_pForm->m_pFormNotify->AfterValueChange(this); + } + + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +#endif // PDF_ENABLE_XFA +FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, + bool bChecked, + bool bNotify) { + ASSERT(GetType() == CheckBox || GetType() == RadioButton); + CPDF_FormControl* pControl = GetControl(iControlIndex); + if (!pControl) { + return FALSE; + } + if (!bChecked && pControl->IsChecked() == bChecked) { + return FALSE; + } + CFX_WideString csWExport = pControl->GetExportValue(); + CFX_ByteString csBExport = PDF_EncodeText(csWExport); + int iCount = CountControls(); + FX_BOOL bUnison = PDF_FormField_IsUnison(this); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pCtrl = GetControl(i); + if (bUnison) { + CFX_WideString csEValue = pCtrl->GetExportValue(); + if (csEValue == csWExport) { + if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { + pCtrl->CheckControl(bChecked); + } else if (bChecked) { + pCtrl->CheckControl(FALSE); + } + } else if (bChecked) { + pCtrl->CheckControl(FALSE); + } + } else { + if (i == iControlIndex) { + pCtrl->CheckControl(bChecked); + } else if (bChecked) { + pCtrl->CheckControl(FALSE); + } + } + } + CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pDict, "Opt"); + if (!ToArray(pOpt)) { + if (bChecked) { + m_pDict->SetAtName("V", csBExport); + } else { + CFX_ByteString csV; + CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); + if (pV) { + csV = pV->GetString(); + } + if (csV == csBExport) { + m_pDict->SetAtName("V", "Off"); + } + } + } else if (bChecked) { + CFX_ByteString csIndex; + csIndex.Format("%d", iControlIndex); + m_pDict->SetAtName("V", csIndex); + } + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) { + ASSERT(GetType() == CheckBox || GetType() == RadioButton); + CFX_WideString csExport = L"Off"; + FX_BOOL bChecked; + int iCount = CountControls(); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pControl = GetControl(i); + if (bDefault) { + bChecked = pControl->IsDefaultChecked(); + } else { + bChecked = pControl->IsChecked(); + } + if (bChecked) { + csExport = pControl->GetExportValue(); + break; + } + } + return csExport; +} +FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify) { + ASSERT(GetType() == CheckBox || GetType() == RadioButton); + int iCount = CountControls(); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pControl = GetControl(i); + CFX_WideString csExport = pControl->GetExportValue(); + if (csExport == value) { + if (bDefault) { + } else { + CheckControl(GetControlIndex(pControl), TRUE); + } + break; + } else { + if (bDefault) { + } else { + CheckControl(GetControlIndex(pControl), FALSE); + } + } + } + if (bNotify && m_pForm->m_pFormNotify) { + m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +int CPDF_FormField::GetTopVisibleIndex() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); + if (!pObj) { + return 0; + } + return pObj->GetInteger(); +} +int CPDF_FormField::CountSelectedOptions() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); + if (!pObj) { + return 0; + } + CPDF_Array* pArray = pObj->GetArray(); + if (!pArray) { + return 0; + } + return (int)pArray->GetCount(); +} +int CPDF_FormField::GetSelectedOptionIndex(int index) { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); + if (!pObj) { + return -1; + } + CPDF_Array* pArray = pObj->GetArray(); + if (!pArray) { + return -1; + } + int iCount = (int)pArray->GetCount(); + if (iCount > 0 && index < iCount) { + return pArray->GetIntegerAt(index); + } + return -1; +} +FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); + if (!pObj) { + return FALSE; + } + CPDF_Array* pArray = pObj->GetArray(); + if (!pArray) { + return FALSE; + } + int iCount = (int)pArray->GetCount(); + for (int i = 0; i < iCount; i++) { + if (pArray->GetIntegerAt(i) == iOptIndex) { + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, + FX_BOOL bSelected, + FX_BOOL bNotify) { + CPDF_Array* pArray = m_pDict->GetArrayBy("I"); + if (!pArray) { + if (!bSelected) { + return TRUE; + } + pArray = new CPDF_Array; + m_pDict->SetAt("I", pArray); + } + FX_BOOL bReturn = FALSE; + for (int i = 0; i < (int)pArray->GetCount(); i++) { + int iFind = pArray->GetIntegerAt(i); + if (iFind == iOptIndex) { + if (bSelected) { + return TRUE; + } + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = 0; + CFX_WideString csValue = GetOptionLabel(iOptIndex); + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + } + if (iRet < 0) { + return FALSE; + } + } + pArray->RemoveAt(i); + bReturn = TRUE; + break; + } else if (iFind > iOptIndex) { + if (!bSelected) { + continue; + } + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = 0; + CFX_WideString csValue = GetOptionLabel(iOptIndex); + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + } + if (iRet < 0) { + return FALSE; + } + } + CPDF_Number* pNum = new CPDF_Number(iOptIndex); + pArray->InsertAt(i, pNum); + bReturn = TRUE; + break; + } + } + if (!bReturn) { + if (bSelected) { + pArray->AddInteger(iOptIndex); + } + if (pArray->GetCount() == 0) { + m_pDict->RemoveAt("I"); + } + } + if (bNotify && m_pForm->m_pFormNotify) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +FX_BOOL CPDF_FormField::ClearSelectedOptions(FX_BOOL bNotify) { + if (bNotify && m_pForm->m_pFormNotify) { + int iRet = 0; + CFX_WideString csValue; + int iIndex = GetSelectedIndex(0); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + } + if (iRet < 0) { + return FALSE; + } + } + m_pDict->RemoveAt("I"); + if (bNotify && m_pForm->m_pFormNotify) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +void CPDF_FormField::LoadDA() { + CFX_ByteString DA; + if (CPDF_Object* pObj_t = FPDF_GetFieldAttr(m_pDict, "DA")) { + DA = pObj_t->GetString(); + } + if (DA.IsEmpty() && m_pForm->m_pFormDict) { + DA = m_pForm->m_pFormDict->GetStringBy("DA"); + } + if (DA.IsEmpty()) { + return; + } + CPDF_SimpleParser syntax(DA); + syntax.FindTagParamFromStart("Tf", 2); + CFX_ByteString font_name = syntax.GetWord(); + CPDF_Dictionary* pFontDict = NULL; + if (m_pForm->m_pFormDict && m_pForm->m_pFormDict->GetDictBy("DR") && + m_pForm->m_pFormDict->GetDictBy("DR")->GetDictBy("Font")) + pFontDict = m_pForm->m_pFormDict->GetDictBy("DR") + ->GetDictBy("Font") + ->GetDictBy(font_name); + + if (!pFontDict) { + return; + } + m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); + m_FontSize = FX_atof(syntax.GetWord()); +} diff --git a/core/fpdfdoc/doc_link.cpp b/core/fpdfdoc/doc_link.cpp new file mode 100644 index 0000000000..8aedb40034 --- /dev/null +++ b/core/fpdfdoc/doc_link.cpp @@ -0,0 +1,92 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfdoc/fpdf_doc.h" + +#include + +#include "core/include/fpdfapi/cpdf_array.h" + +CPDF_LinkList::CPDF_LinkList() {} + +CPDF_LinkList::~CPDF_LinkList() {} + +const std::vector* CPDF_LinkList::GetPageLinks( + CPDF_Page* pPage) { + FX_DWORD objnum = pPage->m_pFormDict->GetObjNum(); + if (objnum == 0) + return nullptr; + + auto it = m_PageMap.find(objnum); + if (it != m_PageMap.end()) + return &it->second; + + // std::map::operator[] forces the creation of a map entry. + std::vector& page_link_list = m_PageMap[objnum]; + LoadPageLinks(pPage, &page_link_list); + return &page_link_list; +} + +CPDF_Link CPDF_LinkList::GetLinkAtPoint(CPDF_Page* pPage, + FX_FLOAT pdf_x, + FX_FLOAT pdf_y, + int* z_order) { + const std::vector* pPageLinkList = GetPageLinks(pPage); + if (!pPageLinkList) + return CPDF_Link(); + + for (size_t i = pPageLinkList->size(); i > 0; --i) { + size_t annot_index = i - 1; + CPDF_Dictionary* pAnnot = (*pPageLinkList)[annot_index]; + if (!pAnnot) + continue; + + CPDF_Link link(pAnnot); + CFX_FloatRect rect = link.GetRect(); + if (!rect.Contains(pdf_x, pdf_y)) + continue; + + if (z_order) + *z_order = annot_index; + return link; + } + return CPDF_Link(); +} + +void CPDF_LinkList::LoadPageLinks(CPDF_Page* pPage, + std::vector* pList) { + CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArrayBy("Annots"); + if (!pAnnotList) + return; + + for (FX_DWORD i = 0; i < pAnnotList->GetCount(); ++i) { + CPDF_Dictionary* pAnnot = pAnnotList->GetDictAt(i); + bool add_link = (pAnnot && pAnnot->GetStringBy("Subtype") == "Link"); + // Add non-links as nullptrs to preserve z-order. + pList->push_back(add_link ? pAnnot : nullptr); + } +} + +CFX_FloatRect CPDF_Link::GetRect() { + return m_pDict->GetRectBy("Rect"); +} +CPDF_Dest CPDF_Link::GetDest(CPDF_Document* pDoc) { + CPDF_Object* pDest = m_pDict->GetElementValue("Dest"); + if (!pDest) + return CPDF_Dest(); + + if (pDest->IsString() || pDest->IsName()) { + CPDF_NameTree name_tree(pDoc, "Dests"); + CFX_ByteStringC name = pDest->GetString(); + return CPDF_Dest(name_tree.LookupNamedDest(pDoc, name)); + } + if (CPDF_Array* pArray = pDest->AsArray()) + return CPDF_Dest(pArray); + return CPDF_Dest(); +} +CPDF_Action CPDF_Link::GetAction() { + return CPDF_Action(m_pDict->GetDictBy("A")); +} diff --git a/core/fpdfdoc/doc_metadata.cpp b/core/fpdfdoc/doc_metadata.cpp new file mode 100644 index 0000000000..78364c4cbf --- /dev/null +++ b/core/fpdfdoc/doc_metadata.cpp @@ -0,0 +1,29 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfdoc/fpdf_doc.h" +#include "core/include/fxcrt/fx_xml.h" + +CPDF_Metadata::CPDF_Metadata(CPDF_Document* pDoc) { + CPDF_Dictionary* pRoot = pDoc->GetRoot(); + if (!pRoot) + return; + + CPDF_Stream* pStream = pRoot->GetStreamBy("Metadata"); + if (!pStream) + return; + + CPDF_StreamAcc acc; + acc.LoadAllData(pStream, FALSE); + m_pXmlElement.reset(CXML_Element::Parse(acc.GetData(), acc.GetSize())); +} + +CPDF_Metadata::~CPDF_Metadata() {} + +const CXML_Element* CPDF_Metadata::GetRoot() const { + return m_pXmlElement.get(); +} diff --git a/core/fpdfdoc/doc_ocg.cpp b/core/fpdfdoc/doc_ocg.cpp new file mode 100644 index 0000000000..3af745580c --- /dev/null +++ b/core/fpdfdoc/doc_ocg.cpp @@ -0,0 +1,284 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +static int32_t FPDFDOC_OCG_FindGroup(const CPDF_Object* pObject, + const CPDF_Dictionary* pGroupDict) { + if (!pObject || !pGroupDict) + return -1; + + if (const CPDF_Array* pArray = pObject->AsArray()) { + FX_DWORD dwCount = pArray->GetCount(); + for (FX_DWORD i = 0; i < dwCount; i++) { + if (pArray->GetDictAt(i) == pGroupDict) + return i; + } + return -1; + } + return pObject->GetDict() == pGroupDict ? 0 : -1; +} +static FX_BOOL FPDFDOC_OCG_HasIntent(const CPDF_Dictionary* pDict, + const CFX_ByteStringC& csElement, + const CFX_ByteStringC& csDef = "") { + CPDF_Object* pIntent = pDict->GetElementValue("Intent"); + if (!pIntent) { + return csElement == csDef; + } + CFX_ByteString bsIntent; + if (CPDF_Array* pArray = pIntent->AsArray()) { + FX_DWORD dwCount = pArray->GetCount(); + for (FX_DWORD i = 0; i < dwCount; i++) { + bsIntent = pArray->GetStringAt(i); + if (bsIntent == "All" || bsIntent == csElement) + return TRUE; + } + return FALSE; + } + bsIntent = pIntent->GetString(); + return bsIntent == "All" || bsIntent == csElement; +} +static CPDF_Dictionary* FPDFDOC_OCG_GetConfig(CPDF_Document* pDoc, + const CPDF_Dictionary* pOCGDict, + const CFX_ByteStringC& bsState) { + FXSYS_assert(pDoc && pOCGDict); + CPDF_Dictionary* pOCProperties = pDoc->GetRoot()->GetDictBy("OCProperties"); + if (!pOCProperties) { + return NULL; + } + CPDF_Array* pOCGs = pOCProperties->GetArrayBy("OCGs"); + if (!pOCGs) { + return NULL; + } + if (FPDFDOC_OCG_FindGroup(pOCGs, pOCGDict) < 0) { + return NULL; + } + CPDF_Dictionary* pConfig = pOCProperties->GetDictBy("D"); + CPDF_Array* pConfigs = pOCProperties->GetArrayBy("Configs"); + if (pConfigs) { + CPDF_Dictionary* pFind; + int32_t iCount = pConfigs->GetCount(); + for (int32_t i = 0; i < iCount; i++) { + pFind = pConfigs->GetDictAt(i); + if (!pFind) { + continue; + } + if (!FPDFDOC_OCG_HasIntent(pFind, "View", "View")) { + continue; + } + pConfig = pFind; + break; + } + } + return pConfig; +} +static CFX_ByteString FPDFDOC_OCG_GetUsageTypeString( + CPDF_OCContext::UsageType eType) { + CFX_ByteString csState = "View"; + if (eType == CPDF_OCContext::Design) { + csState = "Design"; + } else if (eType == CPDF_OCContext::Print) { + csState = "Print"; + } else if (eType == CPDF_OCContext::Export) { + csState = "Export"; + } + return csState; +} +CPDF_OCContext::CPDF_OCContext(CPDF_Document* pDoc, UsageType eUsageType) { + FXSYS_assert(pDoc); + m_pDocument = pDoc; + m_eUsageType = eUsageType; +} +CPDF_OCContext::~CPDF_OCContext() { + m_OCGStates.clear(); +} +FX_BOOL CPDF_OCContext::LoadOCGStateFromConfig(const CFX_ByteStringC& csConfig, + const CPDF_Dictionary* pOCGDict, + FX_BOOL& bValidConfig) const { + CPDF_Dictionary* pConfig = + FPDFDOC_OCG_GetConfig(m_pDocument, pOCGDict, csConfig); + if (!pConfig) { + return TRUE; + } + bValidConfig = TRUE; + FX_BOOL bState = pConfig->GetStringBy("BaseState", "ON") != "OFF"; + CPDF_Array* pArray = pConfig->GetArrayBy("ON"); + if (pArray) { + if (FPDFDOC_OCG_FindGroup(pArray, pOCGDict) >= 0) { + bState = TRUE; + } + } + pArray = pConfig->GetArrayBy("OFF"); + if (pArray) { + if (FPDFDOC_OCG_FindGroup(pArray, pOCGDict) >= 0) { + bState = FALSE; + } + } + pArray = pConfig->GetArrayBy("AS"); + if (pArray) { + CFX_ByteString csFind = csConfig + "State"; + int32_t iCount = pArray->GetCount(); + for (int32_t i = 0; i < iCount; i++) { + CPDF_Dictionary* pUsage = pArray->GetDictAt(i); + if (!pUsage) { + continue; + } + if (pUsage->GetStringBy("Event", "View") != csConfig) { + continue; + } + CPDF_Array* pOCGs = pUsage->GetArrayBy("OCGs"); + if (!pOCGs) { + continue; + } + if (FPDFDOC_OCG_FindGroup(pOCGs, pOCGDict) < 0) { + continue; + } + CPDF_Dictionary* pState = pUsage->GetDictBy(csConfig); + if (!pState) { + continue; + } + bState = pState->GetStringBy(csFind) != "OFF"; + } + } + return bState; +} +FX_BOOL CPDF_OCContext::LoadOCGState(const CPDF_Dictionary* pOCGDict) const { + if (!FPDFDOC_OCG_HasIntent(pOCGDict, "View", "View")) { + return TRUE; + } + CFX_ByteString csState = FPDFDOC_OCG_GetUsageTypeString(m_eUsageType); + CPDF_Dictionary* pUsage = pOCGDict->GetDictBy("Usage"); + if (pUsage) { + CPDF_Dictionary* pState = pUsage->GetDictBy(csState); + if (pState) { + CFX_ByteString csFind = csState + "State"; + if (pState->KeyExist(csFind)) { + return pState->GetStringBy(csFind) != "OFF"; + } + } + if (csState != "View") { + pState = pUsage->GetDictBy("View"); + if (pState && pState->KeyExist("ViewState")) { + return pState->GetStringBy("ViewState") != "OFF"; + } + } + } + FX_BOOL bDefValid = FALSE; + return LoadOCGStateFromConfig(csState, pOCGDict, bDefValid); +} + +FX_BOOL CPDF_OCContext::GetOCGVisible(const CPDF_Dictionary* pOCGDict) { + if (!pOCGDict) + return FALSE; + + const auto it = m_OCGStates.find(pOCGDict); + if (it != m_OCGStates.end()) + return it->second; + + FX_BOOL bState = LoadOCGState(pOCGDict); + m_OCGStates[pOCGDict] = bState; + return bState; +} + +FX_BOOL CPDF_OCContext::GetOCGVE(CPDF_Array* pExpression, + FX_BOOL bFromConfig, + int nLevel) { + if (nLevel > 32) { + return FALSE; + } + if (!pExpression) { + return FALSE; + } + int32_t iCount = pExpression->GetCount(); + CPDF_Object* pOCGObj; + CFX_ByteString csOperator = pExpression->GetStringAt(0); + if (csOperator == "Not") { + pOCGObj = pExpression->GetElementValue(1); + if (!pOCGObj) + return FALSE; + if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) + return !(bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict)); + if (CPDF_Array* pArray = pOCGObj->AsArray()) + return !GetOCGVE(pArray, bFromConfig, nLevel + 1); + return FALSE; + } + if (csOperator == "Or" || csOperator == "And") { + FX_BOOL bValue = FALSE; + for (int32_t i = 1; i < iCount; i++) { + pOCGObj = pExpression->GetElementValue(1); + if (!pOCGObj) { + continue; + } + FX_BOOL bItem = FALSE; + if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) + bItem = bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict); + else if (CPDF_Array* pArray = pOCGObj->AsArray()) + bItem = GetOCGVE(pArray, bFromConfig, nLevel + 1); + + if (i == 1) { + bValue = bItem; + } else { + if (csOperator == "Or") { + bValue = bValue || bItem; + } else { + bValue = bValue && bItem; + } + } + } + return bValue; + } + return FALSE; +} +FX_BOOL CPDF_OCContext::LoadOCMDState(const CPDF_Dictionary* pOCMDDict, + FX_BOOL bFromConfig) { + CPDF_Array* pVE = pOCMDDict->GetArrayBy("VE"); + if (pVE) { + return GetOCGVE(pVE, bFromConfig); + } + CFX_ByteString csP = pOCMDDict->GetStringBy("P", "AnyOn"); + CPDF_Object* pOCGObj = pOCMDDict->GetElementValue("OCGs"); + if (!pOCGObj) + return TRUE; + if (const CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) + return bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict); + + CPDF_Array* pArray = pOCGObj->AsArray(); + if (!pArray) + return TRUE; + + FX_BOOL bState = FALSE; + if (csP == "AllOn" || csP == "AllOff") { + bState = TRUE; + } + int32_t iCount = pArray->GetCount(); + for (int32_t i = 0; i < iCount; i++) { + FX_BOOL bItem = TRUE; + CPDF_Dictionary* pItemDict = pArray->GetDictAt(i); + if (pItemDict) + bItem = bFromConfig ? LoadOCGState(pItemDict) : GetOCGVisible(pItemDict); + + if ((csP == "AnyOn" && bItem) || (csP == "AnyOff" && !bItem)) + return TRUE; + if ((csP == "AllOn" && !bItem) || (csP == "AllOff" && bItem)) + return FALSE; + } + return bState; +} +FX_BOOL CPDF_OCContext::CheckOCGVisible(const CPDF_Dictionary* pOCGDict) { + if (!pOCGDict) { + return TRUE; + } + CFX_ByteString csType = pOCGDict->GetStringBy("Type", "OCG"); + if (csType == "OCG") { + return GetOCGVisible(pOCGDict); + } + return LoadOCMDState(pOCGDict, FALSE); +} +void CPDF_OCContext::ResetOCContext() { + m_OCGStates.clear(); +} diff --git a/core/fpdfdoc/doc_tagged.cpp b/core/fpdfdoc/doc_tagged.cpp new file mode 100644 index 0000000000..015f4db878 --- /dev/null +++ b/core/fpdfdoc/doc_tagged.cpp @@ -0,0 +1,440 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fpdfdoc/doc_utils.h" +#include "core/fpdfdoc/tagged_int.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_reference.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfdoc/fpdf_tagged.h" + +const int nMaxRecursion = 32; +static FX_BOOL IsTagged(const CPDF_Document* pDoc) { + CPDF_Dictionary* pCatalog = pDoc->GetRoot(); + CPDF_Dictionary* pMarkInfo = pCatalog->GetDictBy("MarkInfo"); + return pMarkInfo && pMarkInfo->GetIntegerBy("Marked"); +} +CPDF_StructTree* CPDF_StructTree::LoadPage(const CPDF_Document* pDoc, + const CPDF_Dictionary* pPageDict) { + if (!IsTagged(pDoc)) { + return NULL; + } + CPDF_StructTreeImpl* pTree = new CPDF_StructTreeImpl(pDoc); + pTree->LoadPageTree(pPageDict); + return pTree; +} +CPDF_StructTree* CPDF_StructTree::LoadDoc(const CPDF_Document* pDoc) { + if (!IsTagged(pDoc)) { + return NULL; + } + CPDF_StructTreeImpl* pTree = new CPDF_StructTreeImpl(pDoc); + pTree->LoadDocTree(); + return pTree; +} +CPDF_StructTreeImpl::CPDF_StructTreeImpl(const CPDF_Document* pDoc) { + CPDF_Dictionary* pCatalog = pDoc->GetRoot(); + m_pTreeRoot = pCatalog->GetDictBy("StructTreeRoot"); + if (!m_pTreeRoot) { + return; + } + m_pRoleMap = m_pTreeRoot->GetDictBy("RoleMap"); +} +CPDF_StructTreeImpl::~CPDF_StructTreeImpl() { + for (int i = 0; i < m_Kids.GetSize(); i++) + if (m_Kids[i]) { + m_Kids[i]->Release(); + } +} +void CPDF_StructTreeImpl::LoadDocTree() { + m_pPage = nullptr; + if (!m_pTreeRoot) + return; + + CPDF_Object* pKids = m_pTreeRoot->GetElementValue("K"); + if (!pKids) + return; + if (CPDF_Dictionary* pDict = pKids->AsDictionary()) { + CPDF_StructElementImpl* pStructElementImpl = + new CPDF_StructElementImpl(this, nullptr, pDict); + m_Kids.Add(pStructElementImpl); + return; + } + CPDF_Array* pArray = pKids->AsArray(); + if (!pArray) + return; + + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + CPDF_Dictionary* pKid = pArray->GetDictAt(i); + CPDF_StructElementImpl* pStructElementImpl = + new CPDF_StructElementImpl(this, nullptr, pKid); + m_Kids.Add(pStructElementImpl); + } +} +void CPDF_StructTreeImpl::LoadPageTree(const CPDF_Dictionary* pPageDict) { + m_pPage = pPageDict; + if (!m_pTreeRoot) + return; + + CPDF_Object* pKids = m_pTreeRoot->GetElementValue("K"); + if (!pKids) + return; + + FX_DWORD dwKids = 0; + if (pKids->IsDictionary()) + dwKids = 1; + else if (CPDF_Array* pArray = pKids->AsArray()) + dwKids = pArray->GetCount(); + else + return; + + FX_DWORD i; + m_Kids.SetSize(dwKids); + for (i = 0; i < dwKids; i++) { + m_Kids[i] = NULL; + } + std::map element_map; + CPDF_Dictionary* pParentTree = m_pTreeRoot->GetDictBy("ParentTree"); + if (!pParentTree) { + return; + } + CPDF_NumberTree parent_tree(pParentTree); + int parents_id = pPageDict->GetIntegerBy("StructParents", -1); + if (parents_id >= 0) { + CPDF_Array* pParentArray = ToArray(parent_tree.LookupValue(parents_id)); + if (!pParentArray) + return; + + for (i = 0; i < pParentArray->GetCount(); i++) { + CPDF_Dictionary* pParent = pParentArray->GetDictAt(i); + if (!pParent) { + continue; + } + AddPageNode(pParent, element_map); + } + } +} +CPDF_StructElementImpl* CPDF_StructTreeImpl::AddPageNode( + CPDF_Dictionary* pDict, + std::map& map, + int nLevel) { + if (nLevel > nMaxRecursion) + return NULL; + + auto it = map.find(pDict); + if (it != map.end()) + return it->second; + + CPDF_StructElementImpl* pElement = + new CPDF_StructElementImpl(this, NULL, pDict); + map[pDict] = pElement; + CPDF_Dictionary* pParent = pDict->GetDictBy("P"); + if (!pParent || pParent->GetStringBy("Type") == "StructTreeRoot") { + if (!AddTopLevelNode(pDict, pElement)) { + pElement->Release(); + map.erase(pDict); + } + } else { + CPDF_StructElementImpl* pParentElement = + AddPageNode(pParent, map, nLevel + 1); + FX_BOOL bSave = FALSE; + for (int i = 0; i < pParentElement->m_Kids.GetSize(); i++) { + if (pParentElement->m_Kids[i].m_Type != CPDF_StructKid::Element) { + continue; + } + if (pParentElement->m_Kids[i].m_Element.m_pDict != pDict) { + continue; + } + pParentElement->m_Kids[i].m_Element.m_pElement = pElement->Retain(); + bSave = TRUE; + } + if (!bSave) { + pElement->Release(); + map.erase(pDict); + } + } + return pElement; +} +FX_BOOL CPDF_StructTreeImpl::AddTopLevelNode(CPDF_Dictionary* pDict, + CPDF_StructElementImpl* pElement) { + CPDF_Object* pObj = m_pTreeRoot->GetElementValue("K"); + if (!pObj) { + return FALSE; + } + if (pObj->IsDictionary()) { + if (pObj->GetObjNum() == pDict->GetObjNum()) { + if (m_Kids[0]) { + m_Kids[0]->Release(); + } + m_Kids[0] = pElement->Retain(); + } else { + return FALSE; + } + } + if (CPDF_Array* pTopKids = pObj->AsArray()) { + FX_DWORD i; + FX_BOOL bSave = FALSE; + for (i = 0; i < pTopKids->GetCount(); i++) { + CPDF_Reference* pKidRef = ToReference(pTopKids->GetElement(i)); + if (!pKidRef) + continue; + if (pKidRef->GetRefObjNum() != pDict->GetObjNum()) + continue; + + if (m_Kids[i]) + m_Kids[i]->Release(); + m_Kids[i] = pElement->Retain(); + bSave = TRUE; + } + if (!bSave) + return FALSE; + } + return TRUE; +} +CPDF_StructElementImpl::CPDF_StructElementImpl(CPDF_StructTreeImpl* pTree, + CPDF_StructElementImpl* pParent, + CPDF_Dictionary* pDict) + : m_RefCount(0) { + m_pTree = pTree; + m_pDict = pDict; + m_Type = pDict->GetStringBy("S"); + if (pTree->m_pRoleMap) { + CFX_ByteString mapped = pTree->m_pRoleMap->GetStringBy(m_Type); + if (!mapped.IsEmpty()) { + m_Type = mapped; + } + } + m_pParent = pParent; + LoadKids(pDict); +} +CPDF_StructElementImpl::~CPDF_StructElementImpl() { + for (int i = 0; i < m_Kids.GetSize(); i++) { + if (m_Kids[i].m_Type == CPDF_StructKid::Element && + m_Kids[i].m_Element.m_pElement) { + ((CPDF_StructElementImpl*)m_Kids[i].m_Element.m_pElement)->Release(); + } + } +} +CPDF_StructElementImpl* CPDF_StructElementImpl::Retain() { + m_RefCount++; + return this; +} +void CPDF_StructElementImpl::Release() { + if (--m_RefCount < 1) { + delete this; + } +} +void CPDF_StructElementImpl::LoadKids(CPDF_Dictionary* pDict) { + CPDF_Object* pObj = pDict->GetElement("Pg"); + FX_DWORD PageObjNum = 0; + if (CPDF_Reference* pRef = ToReference(pObj)) + PageObjNum = pRef->GetRefObjNum(); + + CPDF_Object* pKids = pDict->GetElementValue("K"); + if (!pKids) + return; + + if (CPDF_Array* pArray = pKids->AsArray()) { + m_Kids.SetSize(pArray->GetCount()); + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + CPDF_Object* pKid = pArray->GetElementValue(i); + LoadKid(PageObjNum, pKid, &m_Kids[i]); + } + } else { + m_Kids.SetSize(1); + LoadKid(PageObjNum, pKids, &m_Kids[0]); + } +} +void CPDF_StructElementImpl::LoadKid(FX_DWORD PageObjNum, + CPDF_Object* pKidObj, + CPDF_StructKid* pKid) { + pKid->m_Type = CPDF_StructKid::Invalid; + if (!pKidObj) + return; + + if (pKidObj->IsNumber()) { + if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) { + return; + } + pKid->m_Type = CPDF_StructKid::PageContent; + pKid->m_PageContent.m_ContentId = pKidObj->GetInteger(); + pKid->m_PageContent.m_PageObjNum = PageObjNum; + return; + } + + CPDF_Dictionary* pKidDict = pKidObj->AsDictionary(); + if (!pKidDict) + return; + + if (CPDF_Reference* pRef = ToReference(pKidDict->GetElement("Pg"))) + PageObjNum = pRef->GetRefObjNum(); + + CFX_ByteString type = pKidDict->GetStringBy("Type"); + if (type == "MCR") { + if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) { + return; + } + pKid->m_Type = CPDF_StructKid::StreamContent; + if (CPDF_Reference* pRef = ToReference(pKidDict->GetElement("Stm"))) { + pKid->m_StreamContent.m_RefObjNum = pRef->GetRefObjNum(); + } else { + pKid->m_StreamContent.m_RefObjNum = 0; + } + pKid->m_StreamContent.m_PageObjNum = PageObjNum; + pKid->m_StreamContent.m_ContentId = pKidDict->GetIntegerBy("MCID"); + } else if (type == "OBJR") { + if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) { + return; + } + pKid->m_Type = CPDF_StructKid::Object; + if (CPDF_Reference* pObj = ToReference(pKidDict->GetElement("Obj"))) { + pKid->m_Object.m_RefObjNum = pObj->GetRefObjNum(); + } else { + pKid->m_Object.m_RefObjNum = 0; + } + pKid->m_Object.m_PageObjNum = PageObjNum; + } else { + pKid->m_Type = CPDF_StructKid::Element; + pKid->m_Element.m_pDict = pKidDict; + if (!m_pTree->m_pPage) { + pKid->m_Element.m_pElement = + new CPDF_StructElementImpl(m_pTree, this, pKidDict); + } else { + pKid->m_Element.m_pElement = NULL; + } + } +} +static CPDF_Dictionary* FindAttrDict(CPDF_Object* pAttrs, + const CFX_ByteStringC& owner, + FX_FLOAT nLevel = 0.0F) { + if (nLevel > nMaxRecursion) + return nullptr; + if (!pAttrs) + return nullptr; + + CPDF_Dictionary* pDict = nullptr; + if (pAttrs->IsDictionary()) { + pDict = pAttrs->AsDictionary(); + } else if (CPDF_Stream* pStream = pAttrs->AsStream()) { + pDict = pStream->GetDict(); + } else if (CPDF_Array* pArray = pAttrs->AsArray()) { + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + CPDF_Object* pElement = pArray->GetElementValue(i); + pDict = FindAttrDict(pElement, owner, nLevel + 1); + if (pDict) + return pDict; + } + } + if (pDict && pDict->GetStringBy("O") == owner) + return pDict; + return nullptr; +} +CPDF_Object* CPDF_StructElementImpl::GetAttr(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_BOOL bInheritable, + FX_FLOAT fLevel) { + if (fLevel > nMaxRecursion) { + return NULL; + } + if (bInheritable) { + CPDF_Object* pAttr = GetAttr(owner, name, FALSE); + if (pAttr) { + return pAttr; + } + if (!m_pParent) { + return NULL; + } + return m_pParent->GetAttr(owner, name, TRUE, fLevel + 1); + } + CPDF_Object* pA = m_pDict->GetElementValue("A"); + if (pA) { + CPDF_Dictionary* pAttrDict = FindAttrDict(pA, owner); + if (pAttrDict) { + CPDF_Object* pAttr = pAttrDict->GetElementValue(name); + if (pAttr) { + return pAttr; + } + } + } + CPDF_Object* pC = m_pDict->GetElementValue("C"); + if (!pC) + return nullptr; + + CPDF_Dictionary* pClassMap = m_pTree->m_pTreeRoot->GetDictBy("ClassMap"); + if (!pClassMap) + return nullptr; + + if (CPDF_Array* pArray = pC->AsArray()) { + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { + CFX_ByteString class_name = pArray->GetStringAt(i); + CPDF_Dictionary* pClassDict = pClassMap->GetDictBy(class_name); + if (pClassDict && pClassDict->GetStringBy("O") == owner) + return pClassDict->GetElementValue(name); + } + return nullptr; + } + CFX_ByteString class_name = pC->GetString(); + CPDF_Dictionary* pClassDict = pClassMap->GetDictBy(class_name); + if (pClassDict && pClassDict->GetStringBy("O") == owner) + return pClassDict->GetElementValue(name); + return nullptr; +} +CPDF_Object* CPDF_StructElementImpl::GetAttr(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_BOOL bInheritable, + int subindex) { + CPDF_Object* pAttr = GetAttr(owner, name, bInheritable); + CPDF_Array* pArray = ToArray(pAttr); + if (!pArray || subindex == -1) + return pAttr; + + if (subindex >= static_cast(pArray->GetCount())) + return pAttr; + return pArray->GetElementValue(subindex); +} +CFX_ByteString CPDF_StructElementImpl::GetName( + const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + const CFX_ByteStringC& default_value, + FX_BOOL bInheritable, + int subindex) { + CPDF_Object* pAttr = GetAttr(owner, name, bInheritable, subindex); + if (ToName(pAttr)) + return pAttr->GetString(); + return default_value; +} + +FX_ARGB CPDF_StructElementImpl::GetColor(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_ARGB default_value, + FX_BOOL bInheritable, + int subindex) { + CPDF_Array* pArray = ToArray(GetAttr(owner, name, bInheritable, subindex)); + if (!pArray) + return default_value; + return 0xff000000 | ((int)(pArray->GetNumberAt(0) * 255) << 16) | + ((int)(pArray->GetNumberAt(1) * 255) << 8) | + (int)(pArray->GetNumberAt(2) * 255); +} +FX_FLOAT CPDF_StructElementImpl::GetNumber(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_FLOAT default_value, + FX_BOOL bInheritable, + int subindex) { + CPDF_Object* pAttr = GetAttr(owner, name, bInheritable, subindex); + return ToNumber(pAttr) ? pAttr->GetNumber() : default_value; +} +int CPDF_StructElementImpl::GetInteger(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + int default_value, + FX_BOOL bInheritable, + int subindex) { + CPDF_Object* pAttr = GetAttr(owner, name, bInheritable, subindex); + return ToNumber(pAttr) ? pAttr->GetInteger() : default_value; +} diff --git a/core/fpdfdoc/doc_utils.cpp b/core/fpdfdoc/doc_utils.cpp new file mode 100644 index 0000000000..5160c1115c --- /dev/null +++ b/core/fpdfdoc/doc_utils.cpp @@ -0,0 +1,753 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include +#include + +#include "core/fpdfdoc/doc_utils.h" +#include "core/include/fpdfapi/cpdf_array.h" +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfapi/cpdf_simple_parser.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +namespace { + +const int FPDFDOC_UTILS_MAXRECURSION = 32; + +CPDF_Object* SearchNumberNode(const CPDF_Dictionary* pNode, int num) { + CPDF_Array* pLimits = pNode->GetArrayBy("Limits"); + if (pLimits && + (num < pLimits->GetIntegerAt(0) || num > pLimits->GetIntegerAt(1))) { + return NULL; + } + CPDF_Array* pNumbers = pNode->GetArrayBy("Nums"); + if (pNumbers) { + FX_DWORD dwCount = pNumbers->GetCount() / 2; + for (FX_DWORD i = 0; i < dwCount; i++) { + int index = pNumbers->GetIntegerAt(i * 2); + if (num == index) { + return pNumbers->GetElementValue(i * 2 + 1); + } + if (index > num) { + break; + } + } + return NULL; + } + CPDF_Array* pKids = pNode->GetArrayBy("Kids"); + if (!pKids) { + return NULL; + } + for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { + CPDF_Dictionary* pKid = pKids->GetDictAt(i); + if (!pKid) { + continue; + } + CPDF_Object* pFound = SearchNumberNode(pKid, num); + if (pFound) { + return pFound; + } + } + return NULL; +} + +} // namespace + +CPDF_Object* CPDF_NumberTree::LookupValue(int num) const { + return SearchNumberNode(m_pRoot, num); +} + +CFX_WideString GetFullName(CPDF_Dictionary* pFieldDict) { + CFX_WideString full_name; + CPDF_Dictionary* pLevel = pFieldDict; + while (pLevel) { + CFX_WideString short_name = pLevel->GetUnicodeTextBy("T"); + if (short_name != L"") { + if (full_name == L"") { + full_name = short_name; + } else { + full_name = short_name + L"." + full_name; + } + } + pLevel = pLevel->GetDictBy("Parent"); + } + return full_name; +} +FX_BOOL CPDF_DefaultAppearance::HasFont() { + if (m_csDA.IsEmpty()) { + return FALSE; + } + CPDF_SimpleParser syntax(m_csDA); + return syntax.FindTagParamFromStart("Tf", 2); +} +CFX_ByteString CPDF_DefaultAppearance::GetFontString() { + CFX_ByteString csFont; + if (m_csDA.IsEmpty()) { + return csFont; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart("Tf", 2)) { + csFont += (CFX_ByteString)syntax.GetWord(); + csFont += " "; + csFont += (CFX_ByteString)syntax.GetWord(); + csFont += " "; + csFont += (CFX_ByteString)syntax.GetWord(); + } + return csFont; +} +void CPDF_DefaultAppearance::GetFont(CFX_ByteString& csFontNameTag, + FX_FLOAT& fFontSize) { + csFontNameTag = ""; + fFontSize = 0; + if (m_csDA.IsEmpty()) { + return; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart("Tf", 2)) { + csFontNameTag = (CFX_ByteString)syntax.GetWord(); + csFontNameTag.Delete(0, 1); + fFontSize = FX_atof((CFX_ByteString)syntax.GetWord()); + } + csFontNameTag = PDF_NameDecode(csFontNameTag); +} +FX_BOOL CPDF_DefaultAppearance::HasColor(FX_BOOL bStrokingOperation) { + if (m_csDA.IsEmpty()) { + return FALSE; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { + return TRUE; + } + if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { + return TRUE; + } + return syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4); +} +CFX_ByteString CPDF_DefaultAppearance::GetColorString( + FX_BOOL bStrokingOperation) { + CFX_ByteString csColor; + if (m_csDA.IsEmpty()) { + return csColor; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + return csColor; + } + if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + return csColor; + } + if (syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4)) { + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + csColor += " "; + csColor += (CFX_ByteString)syntax.GetWord(); + } + return csColor; +} +void CPDF_DefaultAppearance::GetColor(int& iColorType, + FX_FLOAT fc[4], + FX_BOOL bStrokingOperation) { + iColorType = COLORTYPE_TRANSPARENT; + for (int c = 0; c < 4; c++) { + fc[c] = 0; + } + if (m_csDA.IsEmpty()) { + return; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { + iColorType = COLORTYPE_GRAY; + fc[0] = FX_atof((CFX_ByteString)syntax.GetWord()); + return; + } + if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { + iColorType = COLORTYPE_RGB; + fc[0] = FX_atof((CFX_ByteString)syntax.GetWord()); + fc[1] = FX_atof((CFX_ByteString)syntax.GetWord()); + fc[2] = FX_atof((CFX_ByteString)syntax.GetWord()); + return; + } + if (syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4)) { + iColorType = COLORTYPE_CMYK; + fc[0] = FX_atof((CFX_ByteString)syntax.GetWord()); + fc[1] = FX_atof((CFX_ByteString)syntax.GetWord()); + fc[2] = FX_atof((CFX_ByteString)syntax.GetWord()); + fc[3] = FX_atof((CFX_ByteString)syntax.GetWord()); + } +} +void CPDF_DefaultAppearance::GetColor(FX_ARGB& color, + int& iColorType, + FX_BOOL bStrokingOperation) { + color = 0; + iColorType = COLORTYPE_TRANSPARENT; + if (m_csDA.IsEmpty()) { + return; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { + iColorType = COLORTYPE_GRAY; + FX_FLOAT g = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; + color = ArgbEncode(255, (int)g, (int)g, (int)g); + return; + } + if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { + iColorType = COLORTYPE_RGB; + FX_FLOAT r = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; + FX_FLOAT g = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; + FX_FLOAT b = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; + color = ArgbEncode(255, (int)r, (int)g, (int)b); + return; + } + if (syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4)) { + iColorType = COLORTYPE_CMYK; + FX_FLOAT c = FX_atof((CFX_ByteString)syntax.GetWord()); + FX_FLOAT m = FX_atof((CFX_ByteString)syntax.GetWord()); + FX_FLOAT y = FX_atof((CFX_ByteString)syntax.GetWord()); + FX_FLOAT k = FX_atof((CFX_ByteString)syntax.GetWord()); + FX_FLOAT r = 1.0f - std::min(1.0f, c + k); + FX_FLOAT g = 1.0f - std::min(1.0f, m + k); + FX_FLOAT b = 1.0f - std::min(1.0f, y + k); + color = ArgbEncode(255, (int)(r * 255 + 0.5f), (int)(g * 255 + 0.5f), + (int)(b * 255 + 0.5f)); + } +} +FX_BOOL CPDF_DefaultAppearance::HasTextMatrix() { + if (m_csDA.IsEmpty()) { + return FALSE; + } + CPDF_SimpleParser syntax(m_csDA); + return syntax.FindTagParamFromStart("Tm", 6); +} +CFX_ByteString CPDF_DefaultAppearance::GetTextMatrixString() { + CFX_ByteString csTM; + if (m_csDA.IsEmpty()) { + return csTM; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart("Tm", 6)) { + for (int i = 0; i < 6; i++) { + csTM += (CFX_ByteString)syntax.GetWord(); + csTM += " "; + } + csTM += (CFX_ByteString)syntax.GetWord(); + } + return csTM; +} +CFX_Matrix CPDF_DefaultAppearance::GetTextMatrix() { + CFX_Matrix tm; + if (m_csDA.IsEmpty()) { + return tm; + } + CPDF_SimpleParser syntax(m_csDA); + if (syntax.FindTagParamFromStart("Tm", 6)) { + FX_FLOAT f[6]; + for (int i = 0; i < 6; i++) { + f[i] = FX_atof((CFX_ByteString)syntax.GetWord()); + } + tm.Set(f[0], f[1], f[2], f[3], f[4], f[5]); + } + return tm; +} +void InitInterFormDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument) { + if (!pDocument) { + return; + } + if (!pFormDict) { + pFormDict = new CPDF_Dictionary; + FX_DWORD dwObjNum = pDocument->AddIndirectObject(pFormDict); + CPDF_Dictionary* pRoot = pDocument->GetRoot(); + pRoot->SetAtReference("AcroForm", pDocument, dwObjNum); + } + CFX_ByteString csDA; + if (!pFormDict->KeyExist("DR")) { + CPDF_Font* pFont = NULL; + CFX_ByteString csBaseName, csDefault; + uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); + pFont = CPDF_InterForm::AddStandardFont(pDocument, "Helvetica"); + if (pFont) { + AddInterFormFont(pFormDict, pDocument, pFont, csBaseName); + csDefault = csBaseName; + } + if (charSet != 0) { + CFX_ByteString csFontName = CPDF_InterForm::GetNativeFont(charSet, NULL); + if (!pFont || csFontName != "Helvetica") { + pFont = CPDF_InterForm::AddNativeFont(pDocument); + if (pFont) { + csBaseName = ""; + AddInterFormFont(pFormDict, pDocument, pFont, csBaseName); + csDefault = csBaseName; + } + } + } + if (pFont) { + csDA = "/" + PDF_NameEncode(csDefault) + " 0 Tf"; + } + } + if (!csDA.IsEmpty()) { + csDA += " "; + } + csDA += "0 g"; + if (!pFormDict->KeyExist("DA")) { + pFormDict->SetAtString("DA", csDA); + } +} +FX_DWORD CountInterFormFonts(CPDF_Dictionary* pFormDict) { + if (!pFormDict) { + return 0; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return 0; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return 0; + } + FX_DWORD dwCount = 0; + for (const auto& it : *pFonts) { + CPDF_Object* pObj = it.second; + if (!pObj) { + continue; + } + if (CPDF_Dictionary* pDirect = ToDictionary(pObj->GetDirect())) { + if (pDirect->GetStringBy("Type") == "Font") { + dwCount++; + } + } + } + return dwCount; +} +CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + FX_DWORD index, + CFX_ByteString& csNameTag) { + if (!pFormDict) { + return NULL; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return NULL; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return NULL; + } + FX_DWORD dwCount = 0; + for (const auto& it : *pFonts) { + const CFX_ByteString& csKey = it.first; + CPDF_Object* pObj = it.second; + if (!pObj) { + continue; + } + CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); + if (!pElement) + continue; + if (pElement->GetStringBy("Type") != "Font") + continue; + if (dwCount == index) { + csNameTag = csKey; + return pDocument->LoadFont(pElement); + } + dwCount++; + } + return NULL; +} +CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString csNameTag) { + CFX_ByteString csAlias = PDF_NameDecode(csNameTag); + if (!pFormDict || csAlias.IsEmpty()) { + return NULL; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return NULL; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return NULL; + } + CPDF_Dictionary* pElement = pFonts->GetDictBy(csAlias); + if (!pElement) { + return NULL; + } + if (pElement->GetStringBy("Type") == "Font") { + return pDocument->LoadFont(pElement); + } + return NULL; +} +CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString csFontName, + CFX_ByteString& csNameTag) { + if (!pFormDict || csFontName.IsEmpty()) { + return NULL; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return NULL; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return NULL; + } + for (const auto& it : *pFonts) { + const CFX_ByteString& csKey = it.first; + CPDF_Object* pObj = it.second; + if (!pObj) { + continue; + } + CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); + if (!pElement) + continue; + if (pElement->GetStringBy("Type") != "Font") + continue; + + CPDF_Font* pFind = pDocument->LoadFont(pElement); + if (!pFind) + continue; + + CFX_ByteString csBaseFont; + csBaseFont = pFind->GetBaseFont(); + csBaseFont.Remove(' '); + if (csBaseFont == csFontName) { + csNameTag = csKey; + return pFind; + } + } + return NULL; +} +CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + uint8_t charSet, + CFX_ByteString& csNameTag) { + if (!pFormDict) { + return NULL; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return NULL; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return NULL; + } + for (const auto& it : *pFonts) { + const CFX_ByteString& csKey = it.first; + CPDF_Object* pObj = it.second; + if (!pObj) { + continue; + } + CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); + if (!pElement) + continue; + if (pElement->GetStringBy("Type") != "Font") + continue; + CPDF_Font* pFind = pDocument->LoadFont(pElement); + if (!pFind) { + continue; + } + CFX_SubstFont* pSubst = (CFX_SubstFont*)pFind->GetSubstFont(); + if (!pSubst) { + continue; + } + if (pSubst->m_Charset == (int)charSet) { + csNameTag = csKey; + return pFind; + } + } + return NULL; +} +CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString& csNameTag) { + csNameTag = ""; + uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); + CFX_SubstFont* pSubst; + CPDF_Font* pFont = GetDefaultInterFormFont(pFormDict, pDocument); + if (pFont) { + pSubst = (CFX_SubstFont*)pFont->GetSubstFont(); + if (pSubst && pSubst->m_Charset == (int)charSet) { + FindInterFormFont(pFormDict, pFont, csNameTag); + return pFont; + } + } + return GetNativeInterFormFont(pFormDict, pDocument, charSet, csNameTag); +} +FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, + const CPDF_Font* pFont, + CFX_ByteString& csNameTag) { + if (!pFormDict || !pFont) { + return FALSE; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return FALSE; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return FALSE; + } + for (const auto& it : *pFonts) { + const CFX_ByteString& csKey = it.first; + CPDF_Object* pObj = it.second; + if (!pObj) { + continue; + } + CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); + if (!pElement) + continue; + if (pElement->GetStringBy("Type") != "Font") { + continue; + } + if (pFont->GetFontDict() == pElement) { + csNameTag = csKey; + return TRUE; + } + } + return FALSE; +} +FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString csFontName, + CPDF_Font*& pFont, + CFX_ByteString& csNameTag) { + if (!pFormDict) { + return FALSE; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return FALSE; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return FALSE; + } + if (csFontName.GetLength() > 0) { + csFontName.Remove(' '); + } + for (const auto& it : *pFonts) { + const CFX_ByteString& csKey = it.first; + CPDF_Object* pObj = it.second; + if (!pObj) { + continue; + } + CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); + if (!pElement) + continue; + if (pElement->GetStringBy("Type") != "Font") { + continue; + } + pFont = pDocument->LoadFont(pElement); + if (!pFont) { + continue; + } + CFX_ByteString csBaseFont; + csBaseFont = pFont->GetBaseFont(); + csBaseFont.Remove(' '); + if (csBaseFont == csFontName) { + csNameTag = csKey; + return TRUE; + } + } + return FALSE; +} +void AddInterFormFont(CPDF_Dictionary*& pFormDict, + CPDF_Document* pDocument, + const CPDF_Font* pFont, + CFX_ByteString& csNameTag) { + if (!pFont) { + return; + } + if (!pFormDict) { + InitInterFormDict(pFormDict, pDocument); + } + CFX_ByteString csTag; + if (FindInterFormFont(pFormDict, pFont, csTag)) { + csNameTag = csTag; + return; + } + if (!pFormDict) { + InitInterFormDict(pFormDict, pDocument); + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + pDR = new CPDF_Dictionary; + pFormDict->SetAt("DR", pDR); + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + pFonts = new CPDF_Dictionary; + pDR->SetAt("Font", pFonts); + } + if (csNameTag.IsEmpty()) { + csNameTag = pFont->GetBaseFont(); + } + csNameTag.Remove(' '); + csNameTag = + CPDF_InterForm::GenerateNewResourceName(pDR, "Font", 4, csNameTag); + pFonts->SetAtReference(csNameTag, pDocument, pFont->GetFontDict()); +} +CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, + CPDF_Document* pDocument, + uint8_t charSet, + CFX_ByteString& csNameTag) { + if (!pFormDict) { + InitInterFormDict(pFormDict, pDocument); + } + CFX_ByteString csTemp; + CPDF_Font* pFont = + GetNativeInterFormFont(pFormDict, pDocument, charSet, csTemp); + if (pFont) { + csNameTag = csTemp; + return pFont; + } + CFX_ByteString csFontName = CPDF_InterForm::GetNativeFont(charSet); + if (!csFontName.IsEmpty()) { + if (FindInterFormFont(pFormDict, pDocument, csFontName, pFont, csNameTag)) { + return pFont; + } + } + pFont = CPDF_InterForm::AddNativeFont(charSet, pDocument); + if (pFont) { + AddInterFormFont(pFormDict, pDocument, pFont, csNameTag); + } + return pFont; +} +CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, + CPDF_Document* pDocument, + CFX_ByteString& csNameTag) { + uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); + return AddNativeInterFormFont(pFormDict, pDocument, charSet, csNameTag); +} +void RemoveInterFormFont(CPDF_Dictionary* pFormDict, const CPDF_Font* pFont) { + if (!pFormDict || !pFont) { + return; + } + CFX_ByteString csTag; + if (!FindInterFormFont(pFormDict, pFont, csTag)) { + return; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + pFonts->RemoveAt(csTag); +} +void RemoveInterFormFont(CPDF_Dictionary* pFormDict, CFX_ByteString csNameTag) { + if (!pFormDict || csNameTag.IsEmpty()) { + return; + } + CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); + if (!pDR) { + return; + } + CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); + if (!pFonts) { + return; + } + pFonts->RemoveAt(csNameTag); +} + +CPDF_Font* GetDefaultInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument) { + if (!pFormDict) { + return NULL; + } + CPDF_DefaultAppearance cDA(pFormDict->GetStringBy("DA")); + CFX_ByteString csFontNameTag; + FX_FLOAT fFontSize; + cDA.GetFont(csFontNameTag, fFontSize); + return GetInterFormFont(pFormDict, pDocument, csFontNameTag); +} + +CPDF_IconFit::ScaleMethod CPDF_IconFit::GetScaleMethod() { + if (!m_pDict) { + return Always; + } + CFX_ByteString csSW = m_pDict->GetStringBy("SW", "A"); + if (csSW == "B") { + return Bigger; + } + if (csSW == "S") { + return Smaller; + } + if (csSW == "N") { + return Never; + } + return Always; +} +FX_BOOL CPDF_IconFit::IsProportionalScale() { + if (!m_pDict) { + return TRUE; + } + return m_pDict->GetStringBy("S", "P") != "A"; +} +void CPDF_IconFit::GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom) { + fLeft = fBottom = 0.5; + if (!m_pDict) { + return; + } + CPDF_Array* pA = m_pDict->GetArrayBy("A"); + if (pA) { + FX_DWORD dwCount = pA->GetCount(); + if (dwCount > 0) { + fLeft = pA->GetNumberAt(0); + } + if (dwCount > 1) { + fBottom = pA->GetNumberAt(1); + } + } +} +FX_BOOL CPDF_IconFit::GetFittingBounds() { + if (!m_pDict) { + return FALSE; + } + return m_pDict->GetBooleanBy("FB"); +} + +std::vector SaveCheckedFieldStatus(CPDF_FormField* pField) { + std::vector result; + int iCount = pField->CountControls(); + for (int i = 0; i < iCount; ++i) { + if (CPDF_FormControl* pControl = pField->GetControl(i)) + result.push_back(pControl->IsChecked()); + } + return result; +} + +CPDF_Object* FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict, + const FX_CHAR* name, + int nLevel) { + if (nLevel > FPDFDOC_UTILS_MAXRECURSION) { + return NULL; + } + if (!pFieldDict) { + return NULL; + } + CPDF_Object* pAttr = pFieldDict->GetElementValue(name); + if (pAttr) { + return pAttr; + } + CPDF_Dictionary* pParent = pFieldDict->GetDictBy("Parent"); + if (!pParent) { + return NULL; + } + return FPDF_GetFieldAttr(pParent, name, nLevel + 1); +} diff --git a/core/fpdfdoc/doc_utils.h b/core/fpdfdoc/doc_utils.h new file mode 100644 index 0000000000..ed687943da --- /dev/null +++ b/core/fpdfdoc/doc_utils.h @@ -0,0 +1,80 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFDOC_DOC_UTILS_H_ +#define CORE_FPDFDOC_DOC_UTILS_H_ + +#include + +#include "core/include/fpdfapi/cpdf_parser.h" +#include "core/include/fpdfapi/fpdf_resource.h" + +class CPDF_Dictionary; +class CPDF_FormField; + +class CPDF_NumberTree { + public: + CPDF_NumberTree(CPDF_Dictionary* pRoot) : m_pRoot(pRoot) {} + CPDF_Object* LookupValue(int num) const; + + protected: + CPDF_Dictionary* const m_pRoot; +}; + +CFX_WideString GetFullName(CPDF_Dictionary* pFieldDict); +void InitInterFormDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument); +FX_DWORD CountInterFormFonts(CPDF_Dictionary* pFormDict); +CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + FX_DWORD index, + CFX_ByteString& csNameTag); +CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString csNameTag); +CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString csFontName, + CFX_ByteString& csNameTag); +CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + uint8_t charSet, + CFX_ByteString& csNameTag); +CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString& csNameTag); +FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, + const CPDF_Font* pFont, + CFX_ByteString& csNameTag); +FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument, + CFX_ByteString csFontName, + CPDF_Font*& pFont, + CFX_ByteString& csNameTag); +void AddInterFormFont(CPDF_Dictionary*& pFormDict, + CPDF_Document* pDocument, + const CPDF_Font* pFont, + CFX_ByteString& csNameTag); +CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, + CPDF_Document* pDocument, + uint8_t charSet, + CFX_ByteString& csNameTag); +CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, + CPDF_Document* pDocument, + CFX_ByteString& csNameTag); +void RemoveInterFormFont(CPDF_Dictionary* pFormDict, const CPDF_Font* pFont); +void RemoveInterFormFont(CPDF_Dictionary* pFormDict, CFX_ByteString csNameTag); +CPDF_Font* GetDefaultInterFormFont(CPDF_Dictionary* pFormDict, + CPDF_Document* pDocument); +void SetDefaultInterFormFont(CPDF_Dictionary*& pFormDict, + CPDF_Document* pDocument, + const CPDF_Font* pFont); +std::vector SaveCheckedFieldStatus(CPDF_FormField* pField); +FX_BOOL NeedPDFEncodeForFieldFullName(const CFX_WideString& csFieldName); +FX_BOOL NeedPDFEncodeForFieldTree(CPDF_Dictionary* pFieldDict, int nLevel = 0); +void EncodeFieldName(const CFX_WideString& csName, CFX_ByteString& csT); +void UpdateEncodeFieldName(CPDF_Dictionary* pFieldDict, int nLevel = 0); + +#endif // CORE_FPDFDOC_DOC_UTILS_H_ diff --git a/core/fpdfdoc/doc_viewerPreferences.cpp b/core/fpdfdoc/doc_viewerPreferences.cpp new file mode 100644 index 0000000000..582f3a5a93 --- /dev/null +++ b/core/fpdfdoc/doc_viewerPreferences.cpp @@ -0,0 +1,54 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fpdfapi/cpdf_document.h" +#include "core/include/fpdfdoc/fpdf_doc.h" + +CPDF_ViewerPreferences::CPDF_ViewerPreferences(CPDF_Document* pDoc) + : m_pDoc(pDoc) {} +CPDF_ViewerPreferences::~CPDF_ViewerPreferences() {} +FX_BOOL CPDF_ViewerPreferences::IsDirectionR2L() const { + CPDF_Dictionary* pDict = m_pDoc->GetRoot(); + pDict = pDict->GetDictBy("ViewerPreferences"); + if (!pDict) { + return FALSE; + } + return "R2L" == pDict->GetStringBy("Direction"); +} +FX_BOOL CPDF_ViewerPreferences::PrintScaling() const { + CPDF_Dictionary* pDict = m_pDoc->GetRoot(); + pDict = pDict->GetDictBy("ViewerPreferences"); + if (!pDict) { + return TRUE; + } + return "None" != pDict->GetStringBy("PrintScaling"); +} +int32_t CPDF_ViewerPreferences::NumCopies() const { + CPDF_Dictionary* pDict = m_pDoc->GetRoot(); + pDict = pDict->GetDictBy("ViewerPreferences"); + if (!pDict) { + return 1; + } + return pDict->GetIntegerBy("NumCopies"); +} +CPDF_Array* CPDF_ViewerPreferences::PrintPageRange() const { + CPDF_Dictionary* pDict = m_pDoc->GetRoot(); + CPDF_Array* pRange = NULL; + pDict = pDict->GetDictBy("ViewerPreferences"); + if (!pDict) { + return pRange; + } + pRange = pDict->GetArrayBy("PrintPageRange"); + return pRange; +} +CFX_ByteString CPDF_ViewerPreferences::Duplex() const { + CPDF_Dictionary* pDict = m_pDoc->GetRoot(); + pDict = pDict->GetDictBy("ViewerPreferences"); + if (!pDict) { + return "None"; + } + return pDict->GetStringBy("Duplex"); +} diff --git a/core/fpdfdoc/doc_vt.cpp b/core/fpdfdoc/doc_vt.cpp new file mode 100644 index 0000000000..dddc57f2dd --- /dev/null +++ b/core/fpdfdoc/doc_vt.cpp @@ -0,0 +1,1825 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fpdfdoc/pdf_vt.h" +#include "core/include/fpdfdoc/fpdf_doc.h" +#include "core/include/fpdfdoc/fpdf_vt.h" + +const uint8_t gFontSizeSteps[] = {4, 6, 8, 9, 10, 12, 14, 18, 20, + 25, 30, 35, 40, 45, 50, 55, 60, 70, + 80, 90, 100, 110, 120, 130, 144}; +#define PVT_RETURN_LENGTH 1 +#define PVT_DEFAULT_FONTSIZE 18.0f +#define PVTWORD_SCRIPT_NORMAL 0 +#define PVTWORD_SCRIPT_SUPER 1 +#define PVTWORD_SCRIPT_SUB 2 +#define PVT_FONTSCALE 0.001f +#define PVT_PERCENT 0.01f +#define PVT_HALF 0.5f +CLine::CLine() {} +CLine::~CLine() {} +CPVT_WordPlace CLine::GetBeginWordPlace() const { + return CPVT_WordPlace(LinePlace.nSecIndex, LinePlace.nLineIndex, -1); +} +CPVT_WordPlace CLine::GetEndWordPlace() const { + return CPVT_WordPlace(LinePlace.nSecIndex, LinePlace.nLineIndex, + m_LineInfo.nEndWordIndex); +} +CPVT_WordPlace CLine::GetPrevWordPlace(const CPVT_WordPlace& place) const { + if (place.nWordIndex > m_LineInfo.nEndWordIndex) { + return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, + m_LineInfo.nEndWordIndex); + } + return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, + place.nWordIndex - 1); +} +CPVT_WordPlace CLine::GetNextWordPlace(const CPVT_WordPlace& place) const { + if (place.nWordIndex < m_LineInfo.nBeginWordIndex) { + return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, + m_LineInfo.nBeginWordIndex); + } + return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, + place.nWordIndex + 1); +} +CSection::CSection(CPDF_VariableText* pVT) : m_pVT(pVT) {} +CSection::~CSection() { + ResetAll(); +} +void CSection::ResetAll() { + ResetWordArray(); + ResetLineArray(); +} +void CSection::ResetLineArray() { + m_LineArray.RemoveAll(); +} +void CSection::ResetWordArray() { + for (int32_t i = 0, sz = m_WordArray.GetSize(); i < sz; i++) { + delete m_WordArray.GetAt(i); + } + m_WordArray.RemoveAll(); +} +void CSection::ResetLinePlace() { + for (int32_t i = 0, sz = m_LineArray.GetSize(); i < sz; i++) { + if (CLine* pLine = m_LineArray.GetAt(i)) { + pLine->LinePlace = CPVT_WordPlace(SecPlace.nSecIndex, i, -1); + } + } +} +CPVT_WordPlace CSection::AddWord(const CPVT_WordPlace& place, + const CPVT_WordInfo& wordinfo) { + CPVT_WordInfo* pWord = new CPVT_WordInfo(wordinfo); + int32_t nWordIndex = + std::max(std::min(place.nWordIndex, m_WordArray.GetSize()), 0); + if (nWordIndex == m_WordArray.GetSize()) { + m_WordArray.Add(pWord); + } else { + m_WordArray.InsertAt(nWordIndex, pWord); + } + return place; +} +CPVT_WordPlace CSection::AddLine(const CPVT_LineInfo& lineinfo) { + return CPVT_WordPlace(SecPlace.nSecIndex, m_LineArray.Add(lineinfo), -1); +} +CPVT_FloatRect CSection::Rearrange() { + if (m_pVT->m_nCharArray > 0) { + return CTypeset(this).CharArray(); + } + return CTypeset(this).Typeset(); +} +CPVT_Size CSection::GetSectionSize(FX_FLOAT fFontSize) { + return CTypeset(this).GetEditSize(fFontSize); +} +CPVT_WordPlace CSection::GetBeginWordPlace() const { + if (CLine* pLine = m_LineArray.GetAt(0)) { + return pLine->GetBeginWordPlace(); + } + return SecPlace; +} +CPVT_WordPlace CSection::GetEndWordPlace() const { + if (CLine* pLine = m_LineArray.GetAt(m_LineArray.GetSize() - 1)) { + return pLine->GetEndWordPlace(); + } + return SecPlace; +} +CPVT_WordPlace CSection::GetPrevWordPlace(const CPVT_WordPlace& place) const { + if (place.nLineIndex < 0) { + return GetBeginWordPlace(); + } + if (place.nLineIndex >= m_LineArray.GetSize()) { + return GetEndWordPlace(); + } + if (CLine* pLine = m_LineArray.GetAt(place.nLineIndex)) { + if (place.nWordIndex == pLine->m_LineInfo.nBeginWordIndex) { + return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, -1); + } + if (place.nWordIndex < pLine->m_LineInfo.nBeginWordIndex) { + if (CLine* pPrevLine = m_LineArray.GetAt(place.nLineIndex - 1)) { + return pPrevLine->GetEndWordPlace(); + } + } else { + return pLine->GetPrevWordPlace(place); + } + } + return place; +} +CPVT_WordPlace CSection::GetNextWordPlace(const CPVT_WordPlace& place) const { + if (place.nLineIndex < 0) { + return GetBeginWordPlace(); + } + if (place.nLineIndex >= m_LineArray.GetSize()) { + return GetEndWordPlace(); + } + if (CLine* pLine = m_LineArray.GetAt(place.nLineIndex)) { + if (place.nWordIndex >= pLine->m_LineInfo.nEndWordIndex) { + if (CLine* pNextLine = m_LineArray.GetAt(place.nLineIndex + 1)) { + return pNextLine->GetBeginWordPlace(); + } + } else { + return pLine->GetNextWordPlace(place); + } + } + return place; +} +void CSection::UpdateWordPlace(CPVT_WordPlace& place) const { + int32_t nLeft = 0; + int32_t nRight = m_LineArray.GetSize() - 1; + int32_t nMid = (nLeft + nRight) / 2; + while (nLeft <= nRight) { + if (CLine* pLine = m_LineArray.GetAt(nMid)) { + if (place.nWordIndex < pLine->m_LineInfo.nBeginWordIndex) { + nRight = nMid - 1; + nMid = (nLeft + nRight) / 2; + } else if (place.nWordIndex > pLine->m_LineInfo.nEndWordIndex) { + nLeft = nMid + 1; + nMid = (nLeft + nRight) / 2; + } else { + place.nLineIndex = nMid; + return; + } + } else { + break; + } + } +} +CPVT_WordPlace CSection::SearchWordPlace(const CFX_FloatPoint& point) const { + ASSERT(m_pVT); + CPVT_WordPlace place = GetBeginWordPlace(); + FX_BOOL bUp = TRUE; + FX_BOOL bDown = TRUE; + int32_t nLeft = 0; + int32_t nRight = m_LineArray.GetSize() - 1; + int32_t nMid = m_LineArray.GetSize() / 2; + FX_FLOAT fTop = 0; + FX_FLOAT fBottom = 0; + while (nLeft <= nRight) { + if (CLine* pLine = m_LineArray.GetAt(nMid)) { + fTop = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineAscent - + m_pVT->GetLineLeading(m_SecInfo); + fBottom = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineDescent; + if (IsFloatBigger(point.y, fTop)) { + bUp = FALSE; + } + if (IsFloatSmaller(point.y, fBottom)) { + bDown = FALSE; + } + if (IsFloatSmaller(point.y, fTop)) { + nRight = nMid - 1; + nMid = (nLeft + nRight) / 2; + continue; + } else if (IsFloatBigger(point.y, fBottom)) { + nLeft = nMid + 1; + nMid = (nLeft + nRight) / 2; + continue; + } else { + place = SearchWordPlace( + point.x, + CPVT_WordRange(pLine->GetNextWordPlace(pLine->GetBeginWordPlace()), + pLine->GetEndWordPlace())); + place.nLineIndex = nMid; + return place; + } + } + } + if (bUp) { + place = GetBeginWordPlace(); + } + if (bDown) { + place = GetEndWordPlace(); + } + return place; +} +CPVT_WordPlace CSection::SearchWordPlace( + FX_FLOAT fx, + const CPVT_WordPlace& lineplace) const { + if (CLine* pLine = m_LineArray.GetAt(lineplace.nLineIndex)) { + return SearchWordPlace( + fx - m_SecInfo.rcSection.left, + CPVT_WordRange(pLine->GetNextWordPlace(pLine->GetBeginWordPlace()), + pLine->GetEndWordPlace())); + } + return GetBeginWordPlace(); +} +CPVT_WordPlace CSection::SearchWordPlace(FX_FLOAT fx, + const CPVT_WordRange& range) const { + CPVT_WordPlace wordplace = range.BeginPos; + wordplace.nWordIndex = -1; + if (!m_pVT) { + return wordplace; + } + int32_t nLeft = range.BeginPos.nWordIndex; + int32_t nRight = range.EndPos.nWordIndex + 1; + int32_t nMid = (nLeft + nRight) / 2; + while (nLeft < nRight) { + if (nMid == nLeft) { + break; + } + if (nMid == nRight) { + nMid--; + break; + } + if (CPVT_WordInfo* pWord = m_WordArray.GetAt(nMid)) { + if (fx > pWord->fWordX + m_pVT->GetWordWidth(*pWord) * PVT_HALF) { + nLeft = nMid; + nMid = (nLeft + nRight) / 2; + continue; + } else { + nRight = nMid; + nMid = (nLeft + nRight) / 2; + continue; + } + } else { + break; + } + } + if (CPVT_WordInfo* pWord = m_WordArray.GetAt(nMid)) { + if (fx > pWord->fWordX + m_pVT->GetWordWidth(*pWord) * PVT_HALF) { + wordplace.nWordIndex = nMid; + } + } + return wordplace; +} +void CSection::ClearLeftWords(int32_t nWordIndex) { + for (int32_t i = nWordIndex; i >= 0; i--) { + delete m_WordArray.GetAt(i); + m_WordArray.RemoveAt(i); + } +} +void CSection::ClearRightWords(int32_t nWordIndex) { + for (int32_t i = m_WordArray.GetSize() - 1; i > nWordIndex; i--) { + delete m_WordArray.GetAt(i); + m_WordArray.RemoveAt(i); + } +} +void CSection::ClearMidWords(int32_t nBeginIndex, int32_t nEndIndex) { + for (int32_t i = nEndIndex; i > nBeginIndex; i--) { + delete m_WordArray.GetAt(i); + m_WordArray.RemoveAt(i); + } +} +void CSection::ClearWords(const CPVT_WordRange& PlaceRange) { + CPVT_WordPlace SecBeginPos = GetBeginWordPlace(); + CPVT_WordPlace SecEndPos = GetEndWordPlace(); + if (PlaceRange.BeginPos.WordCmp(SecBeginPos) >= 0) { + if (PlaceRange.EndPos.WordCmp(SecEndPos) <= 0) { + ClearMidWords(PlaceRange.BeginPos.nWordIndex, + PlaceRange.EndPos.nWordIndex); + } else { + ClearRightWords(PlaceRange.BeginPos.nWordIndex); + } + } else if (PlaceRange.EndPos.WordCmp(SecEndPos) <= 0) { + ClearLeftWords(PlaceRange.EndPos.nWordIndex); + } else { + ResetWordArray(); + } +} +void CSection::ClearWord(const CPVT_WordPlace& place) { + delete m_WordArray.GetAt(place.nWordIndex); + m_WordArray.RemoveAt(place.nWordIndex); +} +CTypeset::CTypeset(CSection* pSection) + : m_rcRet(0.0f, 0.0f, 0.0f, 0.0f), + m_pVT(pSection->m_pVT), + m_pSection(pSection) {} +CTypeset::~CTypeset() {} +CPVT_FloatRect CTypeset::CharArray() { + ASSERT(m_pSection); + FX_FLOAT fLineAscent = + m_pVT->GetFontAscent(m_pVT->GetDefaultFontIndex(), m_pVT->GetFontSize()); + FX_FLOAT fLineDescent = + m_pVT->GetFontDescent(m_pVT->GetDefaultFontIndex(), m_pVT->GetFontSize()); + m_rcRet.Default(); + FX_FLOAT x = 0.0f, y = 0.0f; + FX_FLOAT fNextWidth; + int32_t nStart = 0; + FX_FLOAT fNodeWidth = m_pVT->GetPlateWidth() / + (m_pVT->m_nCharArray <= 0 ? 1 : m_pVT->m_nCharArray); + if (CLine* pLine = m_pSection->m_LineArray.GetAt(0)) { + x = 0.0f; + y += m_pVT->GetLineLeading(m_pSection->m_SecInfo); + y += fLineAscent; + nStart = 0; + switch (m_pVT->GetAlignment(m_pSection->m_SecInfo)) { + case 0: + pLine->m_LineInfo.fLineX = fNodeWidth * PVT_HALF; + break; + case 1: + nStart = (m_pVT->m_nCharArray - m_pSection->m_WordArray.GetSize()) / 2; + pLine->m_LineInfo.fLineX = fNodeWidth * nStart - fNodeWidth * PVT_HALF; + break; + case 2: + nStart = m_pVT->m_nCharArray - m_pSection->m_WordArray.GetSize(); + pLine->m_LineInfo.fLineX = fNodeWidth * nStart - fNodeWidth * PVT_HALF; + break; + } + for (int32_t w = 0, sz = m_pSection->m_WordArray.GetSize(); w < sz; w++) { + if (w >= m_pVT->m_nCharArray) { + break; + } + fNextWidth = 0; + if (CPVT_WordInfo* pNextWord = + (CPVT_WordInfo*)m_pSection->m_WordArray.GetAt(w + 1)) { + pNextWord->fWordTail = 0; + fNextWidth = m_pVT->GetWordWidth(*pNextWord); + } + if (CPVT_WordInfo* pWord = + (CPVT_WordInfo*)m_pSection->m_WordArray.GetAt(w)) { + pWord->fWordTail = 0; + FX_FLOAT fWordWidth = m_pVT->GetWordWidth(*pWord); + FX_FLOAT fWordAscent = m_pVT->GetWordAscent(*pWord); + FX_FLOAT fWordDescent = m_pVT->GetWordDescent(*pWord); + x = (FX_FLOAT)(fNodeWidth * (w + nStart + 0.5) - fWordWidth * PVT_HALF); + pWord->fWordX = x; + pWord->fWordY = y; + if (w == 0) { + pLine->m_LineInfo.fLineX = x; + } + if (w != m_pSection->m_WordArray.GetSize() - 1) { + pWord->fWordTail = + (fNodeWidth - (fWordWidth + fNextWidth) * PVT_HALF > 0 + ? fNodeWidth - (fWordWidth + fNextWidth) * PVT_HALF + : 0); + } else { + pWord->fWordTail = 0; + } + x += fWordWidth; + fLineAscent = std::max(fLineAscent, fWordAscent); + fLineDescent = std::min(fLineDescent, fWordDescent); + } + } + pLine->m_LineInfo.nBeginWordIndex = 0; + pLine->m_LineInfo.nEndWordIndex = m_pSection->m_WordArray.GetSize() - 1; + pLine->m_LineInfo.fLineY = y; + pLine->m_LineInfo.fLineWidth = x - pLine->m_LineInfo.fLineX; + pLine->m_LineInfo.fLineAscent = fLineAscent; + pLine->m_LineInfo.fLineDescent = fLineDescent; + y += (-fLineDescent); + } + return m_rcRet = CPVT_FloatRect(0, 0, x, y); +} +CPVT_Size CTypeset::GetEditSize(FX_FLOAT fFontSize) { + ASSERT(m_pSection); + ASSERT(m_pVT); + SplitLines(FALSE, fFontSize); + return CPVT_Size(m_rcRet.Width(), m_rcRet.Height()); +} +CPVT_FloatRect CTypeset::Typeset() { + ASSERT(m_pVT); + m_pSection->m_LineArray.Empty(); + SplitLines(TRUE, 0.0f); + m_pSection->m_LineArray.Clear(); + OutputLines(); + return m_rcRet; +} +static int special_chars[128] = { + 0x0000, 0x000C, 0x0008, 0x000C, 0x0008, 0x0000, 0x0020, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0000, + 0x0010, 0x0000, 0x0000, 0x0028, 0x000C, 0x0008, 0x0000, 0x0000, 0x0028, + 0x0028, 0x0028, 0x0028, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, + 0x0002, 0x0002, 0x0002, 0x0002, 0x0008, 0x0008, 0x0000, 0x0000, 0x0000, + 0x0008, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x000C, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x000C, 0x0000, 0x0008, + 0x0000, 0x0000, +}; +static FX_BOOL IsLatin(FX_WORD word) { + if (word <= 0x007F) { + if (special_chars[word] & 0x0001) { + return TRUE; + } + } + if ((word >= 0x00C0 && word <= 0x00FF) || + (word >= 0x0100 && word <= 0x024F) || + (word >= 0x1E00 && word <= 0x1EFF) || + (word >= 0x2C60 && word <= 0x2C7F) || + (word >= 0xA720 && word <= 0xA7FF) || + (word >= 0xFF21 && word <= 0xFF3A) || + (word >= 0xFF41 && word <= 0xFF5A)) { + return TRUE; + } + return FALSE; +} +static FX_BOOL IsDigit(FX_DWORD word) { + return word >= 0x0030 && word <= 0x0039; +} +static FX_BOOL IsCJK(FX_DWORD word) { + if ((word >= 0x1100 && word <= 0x11FF) || + (word >= 0x2E80 && word <= 0x2FFF) || + (word >= 0x3040 && word <= 0x9FBF) || + (word >= 0xAC00 && word <= 0xD7AF) || + (word >= 0xF900 && word <= 0xFAFF) || + (word >= 0xFE30 && word <= 0xFE4F) || + (word >= 0x20000 && word <= 0x2A6DF) || + (word >= 0x2F800 && word <= 0x2FA1F)) { + return TRUE; + } + if (word >= 0x3000 && word <= 0x303F) { + if (word == 0x3005 || word == 0x3006 || word == 0x3021 || word == 0x3022 || + word == 0x3023 || word == 0x3024 || word == 0x3025 || word == 0x3026 || + word == 0x3027 || word == 0x3028 || word == 0x3029 || word == 0x3031 || + word == 0x3032 || word == 0x3033 || word == 0x3034 || word == 0x3035) { + return TRUE; + } + return FALSE; + } + if (word >= 0xFF66 && word <= 0xFF9D) { + return TRUE; + } + return FALSE; +} +static FX_BOOL IsPunctuation(FX_DWORD word) { + if (word <= 0x007F) { + if ((special_chars[word] >> 3) & 1) { + return TRUE; + } + } else if (word >= 0x0080 && word <= 0x00FF) { + if (word == 0x0082 || word == 0x0084 || word == 0x0085 || word == 0x0091 || + word == 0x0092 || word == 0x0093 || word <= 0x0094 || word == 0x0096 || + word == 0x00B4 || word == 0x00B8) { + return TRUE; + } + } else if (word >= 0x2000 && word <= 0x206F) { + if (word == 0x2010 || word == 0x2011 || word == 0x2012 || word == 0x2013 || + word == 0x2018 || word == 0x2019 || word == 0x201A || word == 0x201B || + word == 0x201C || word == 0x201D || word == 0x201E || word == 0x201F || + word == 0x2032 || word == 0x2033 || word == 0x2034 || word == 0x2035 || + word == 0x2036 || word == 0x2037 || word == 0x203C || word == 0x203D || + word == 0x203E || word == 0x2044) { + return TRUE; + } + } else if (word >= 0x3000 && word <= 0x303F) { + if (word == 0x3001 || word == 0x3002 || word == 0x3003 || word == 0x3005 || + word == 0x3009 || word == 0x300A || word == 0x300B || word == 0x300C || + word == 0x300D || word == 0x300F || word == 0x300E || word == 0x3010 || + word == 0x3011 || word == 0x3014 || word == 0x3015 || word == 0x3016 || + word == 0x3017 || word == 0x3018 || word == 0x3019 || word == 0x301A || + word == 0x301B || word == 0x301D || word == 0x301E || word == 0x301F) { + return TRUE; + } + } else if (word >= 0xFE50 && word <= 0xFE6F) { + if ((word >= 0xFE50 && word <= 0xFE5E) || word == 0xFE63) { + return TRUE; + } + } else if (word >= 0xFF00 && word <= 0xFFEF) { + if (word == 0xFF01 || word == 0xFF02 || word == 0xFF07 || word == 0xFF08 || + word == 0xFF09 || word == 0xFF0C || word == 0xFF0E || word == 0xFF0F || + word == 0xFF1A || word == 0xFF1B || word == 0xFF1F || word == 0xFF3B || + word == 0xFF3D || word == 0xFF40 || word == 0xFF5B || word == 0xFF5C || + word == 0xFF5D || word == 0xFF61 || word == 0xFF62 || word == 0xFF63 || + word == 0xFF64 || word == 0xFF65 || word == 0xFF9E || word == 0xFF9F) { + return TRUE; + } + } + return FALSE; +} +static FX_BOOL IsConnectiveSymbol(FX_DWORD word) { + if (word <= 0x007F) { + if ((special_chars[word] >> 5) & 1) { + return TRUE; + } + } + return FALSE; +} +static FX_BOOL IsOpenStylePunctuation(FX_DWORD word) { + if (word <= 0x007F) { + if ((special_chars[word] >> 2) & 1) { + return TRUE; + } + } else if (word == 0x300A || word == 0x300C || word == 0x300E || + word == 0x3010 || word == 0x3014 || word == 0x3016 || + word == 0x3018 || word == 0x301A || word == 0xFF08 || + word == 0xFF3B || word == 0xFF5B || word == 0xFF62) { + return TRUE; + } + return FALSE; +} +static FX_BOOL IsCurrencySymbol(FX_WORD word) { + if (word == 0x0024 || word == 0x0080 || word == 0x00A2 || word == 0x00A3 || + word == 0x00A4 || word == 0x00A5 || (word >= 0x20A0 && word <= 0x20CF) || + word == 0xFE69 || word == 0xFF04 || word == 0xFFE0 || word == 0xFFE1 || + word == 0xFFE5 || word == 0xFFE6) { + return TRUE; + } + return FALSE; +} +static FX_BOOL IsPrefixSymbol(FX_WORD word) { + if (IsCurrencySymbol(word)) { + return TRUE; + } + if (word == 0x2116) { + return TRUE; + } + return FALSE; +} +static FX_BOOL IsSpace(FX_WORD word) { + return word == 0x0020 || word == 0x3000; +} +static FX_BOOL NeedDivision(FX_WORD prevWord, FX_WORD curWord) { + if ((IsLatin(prevWord) || IsDigit(prevWord)) && + (IsLatin(curWord) || IsDigit(curWord))) { + return FALSE; + } + if (IsSpace(curWord) || IsPunctuation(curWord)) { + return FALSE; + } + if (IsConnectiveSymbol(prevWord) || IsConnectiveSymbol(curWord)) { + return FALSE; + } + if (IsSpace(prevWord) || IsPunctuation(prevWord)) { + return TRUE; + } + if (IsPrefixSymbol(prevWord)) { + return FALSE; + } + if (IsPrefixSymbol(curWord) || IsCJK(curWord)) { + return TRUE; + } + if (IsCJK(prevWord)) { + return TRUE; + } + return FALSE; +} +void CTypeset::SplitLines(FX_BOOL bTypeset, FX_FLOAT fFontSize) { + ASSERT(m_pVT); + ASSERT(m_pSection); + int32_t nLineHead = 0; + int32_t nLineTail = 0; + FX_FLOAT fMaxX = 0.0f, fMaxY = 0.0f; + FX_FLOAT fLineWidth = 0.0f, fBackupLineWidth = 0.0f; + FX_FLOAT fLineAscent = 0.0f, fBackupLineAscent = 0.0f; + FX_FLOAT fLineDescent = 0.0f, fBackupLineDescent = 0.0f; + int32_t nWordStartPos = 0; + FX_BOOL bFullWord = FALSE; + int32_t nLineFullWordIndex = 0; + int32_t nCharIndex = 0; + CPVT_LineInfo line; + FX_FLOAT fWordWidth = 0; + FX_FLOAT fTypesetWidth = std::max( + m_pVT->GetPlateWidth() - m_pVT->GetLineIndent(m_pSection->m_SecInfo), + 0.0f); + int32_t nTotalWords = m_pSection->m_WordArray.GetSize(); + FX_BOOL bOpened = FALSE; + if (nTotalWords > 0) { + int32_t i = 0; + while (i < nTotalWords) { + CPVT_WordInfo* pWord = m_pSection->m_WordArray.GetAt(i); + CPVT_WordInfo* pOldWord = pWord; + if (i > 0) { + pOldWord = m_pSection->m_WordArray.GetAt(i - 1); + } + if (pWord) { + if (bTypeset) { + fLineAscent = + std::max(fLineAscent, m_pVT->GetWordAscent(*pWord, TRUE)); + fLineDescent = + std::min(fLineDescent, m_pVT->GetWordDescent(*pWord, TRUE)); + fWordWidth = m_pVT->GetWordWidth(*pWord); + } else { + fLineAscent = + std::max(fLineAscent, m_pVT->GetWordAscent(*pWord, fFontSize)); + fLineDescent = + std::min(fLineDescent, m_pVT->GetWordDescent(*pWord, fFontSize)); + fWordWidth = m_pVT->GetWordWidth( + pWord->nFontIndex, pWord->Word, m_pVT->m_wSubWord, + m_pVT->m_fCharSpace, m_pVT->m_nHorzScale, fFontSize, + pWord->fWordTail, 0); + } + if (!bOpened) { + if (IsOpenStylePunctuation(pWord->Word)) { + bOpened = TRUE; + bFullWord = TRUE; + } else if (pOldWord) { + if (NeedDivision(pOldWord->Word, pWord->Word)) { + bFullWord = TRUE; + } + } + } else { + if (!IsSpace(pWord->Word) && !IsOpenStylePunctuation(pWord->Word)) { + bOpened = FALSE; + } + } + if (bFullWord) { + bFullWord = FALSE; + if (nCharIndex > 0) { + nLineFullWordIndex++; + } + nWordStartPos = i; + fBackupLineWidth = fLineWidth; + fBackupLineAscent = fLineAscent; + fBackupLineDescent = fLineDescent; + } + nCharIndex++; + } + if (m_pVT->m_bLimitWidth && fTypesetWidth > 0 && + fLineWidth + fWordWidth > fTypesetWidth) { + if (nLineFullWordIndex > 0) { + i = nWordStartPos; + fLineWidth = fBackupLineWidth; + fLineAscent = fBackupLineAscent; + fLineDescent = fBackupLineDescent; + } + if (nCharIndex == 1) { + fLineWidth = fWordWidth; + i++; + } + nLineTail = i - 1; + if (bTypeset) { + line.nBeginWordIndex = nLineHead; + line.nEndWordIndex = nLineTail; + line.nTotalWord = nLineTail - nLineHead + 1; + line.fLineWidth = fLineWidth; + line.fLineAscent = fLineAscent; + line.fLineDescent = fLineDescent; + m_pSection->AddLine(line); + } + fMaxY += (fLineAscent + m_pVT->GetLineLeading(m_pSection->m_SecInfo)); + fMaxY += (-fLineDescent); + fMaxX = std::max(fLineWidth, fMaxX); + nLineHead = i; + fLineWidth = 0.0f; + fLineAscent = 0.0f; + fLineDescent = 0.0f; + nCharIndex = 0; + nLineFullWordIndex = 0; + bFullWord = FALSE; + } else { + fLineWidth += fWordWidth; + i++; + } + } + if (nLineHead <= nTotalWords - 1) { + nLineTail = nTotalWords - 1; + if (bTypeset) { + line.nBeginWordIndex = nLineHead; + line.nEndWordIndex = nLineTail; + line.nTotalWord = nLineTail - nLineHead + 1; + line.fLineWidth = fLineWidth; + line.fLineAscent = fLineAscent; + line.fLineDescent = fLineDescent; + m_pSection->AddLine(line); + } + fMaxY += (fLineAscent + m_pVT->GetLineLeading(m_pSection->m_SecInfo)); + fMaxY += (-fLineDescent); + fMaxX = std::max(fLineWidth, fMaxX); + } + } else { + if (bTypeset) { + fLineAscent = m_pVT->GetLineAscent(m_pSection->m_SecInfo); + fLineDescent = m_pVT->GetLineDescent(m_pSection->m_SecInfo); + } else { + fLineAscent = + m_pVT->GetFontAscent(m_pVT->GetDefaultFontIndex(), fFontSize); + fLineDescent = + m_pVT->GetFontDescent(m_pVT->GetDefaultFontIndex(), fFontSize); + } + if (bTypeset) { + line.nBeginWordIndex = -1; + line.nEndWordIndex = -1; + line.nTotalWord = 0; + line.fLineWidth = 0; + line.fLineAscent = fLineAscent; + line.fLineDescent = fLineDescent; + m_pSection->AddLine(line); + } + fMaxY += (m_pVT->GetLineLeading(m_pSection->m_SecInfo) + fLineAscent + + (-fLineDescent)); + } + m_rcRet = CPVT_FloatRect(0, 0, fMaxX, fMaxY); +} +void CTypeset::OutputLines() { + ASSERT(m_pVT); + ASSERT(m_pSection); + FX_FLOAT fMinX = 0.0f, fMinY = 0.0f, fMaxX = 0.0f, fMaxY = 0.0f; + FX_FLOAT fPosX = 0.0f, fPosY = 0.0f; + FX_FLOAT fLineIndent = m_pVT->GetLineIndent(m_pSection->m_SecInfo); + FX_FLOAT fTypesetWidth = std::max(m_pVT->GetPlateWidth() - fLineIndent, 0.0f); + switch (m_pVT->GetAlignment(m_pSection->m_SecInfo)) { + default: + case 0: + fMinX = 0.0f; + break; + case 1: + fMinX = (fTypesetWidth - m_rcRet.Width()) * PVT_HALF; + break; + case 2: + fMinX = fTypesetWidth - m_rcRet.Width(); + break; + } + fMaxX = fMinX + m_rcRet.Width(); + fMinY = 0.0f; + fMaxY = m_rcRet.Height(); + int32_t nTotalLines = m_pSection->m_LineArray.GetSize(); + if (nTotalLines > 0) { + m_pSection->m_SecInfo.nTotalLine = nTotalLines; + for (int32_t l = 0; l < nTotalLines; l++) { + if (CLine* pLine = m_pSection->m_LineArray.GetAt(l)) { + switch (m_pVT->GetAlignment(m_pSection->m_SecInfo)) { + default: + case 0: + fPosX = 0; + break; + case 1: + fPosX = (fTypesetWidth - pLine->m_LineInfo.fLineWidth) * PVT_HALF; + break; + case 2: + fPosX = fTypesetWidth - pLine->m_LineInfo.fLineWidth; + break; + } + fPosX += fLineIndent; + fPosY += m_pVT->GetLineLeading(m_pSection->m_SecInfo); + fPosY += pLine->m_LineInfo.fLineAscent; + pLine->m_LineInfo.fLineX = fPosX - fMinX; + pLine->m_LineInfo.fLineY = fPosY - fMinY; + for (int32_t w = pLine->m_LineInfo.nBeginWordIndex; + w <= pLine->m_LineInfo.nEndWordIndex; w++) { + if (CPVT_WordInfo* pWord = m_pSection->m_WordArray.GetAt(w)) { + pWord->fWordX = fPosX - fMinX; + if (pWord->pWordProps) { + switch (pWord->pWordProps->nScriptType) { + default: + case PVTWORD_SCRIPT_NORMAL: + pWord->fWordY = fPosY - fMinY; + break; + case PVTWORD_SCRIPT_SUPER: + pWord->fWordY = fPosY - m_pVT->GetWordAscent(*pWord) - fMinY; + break; + case PVTWORD_SCRIPT_SUB: + pWord->fWordY = fPosY - m_pVT->GetWordDescent(*pWord) - fMinY; + break; + } + } else { + pWord->fWordY = fPosY - fMinY; + } + fPosX += m_pVT->GetWordWidth(*pWord); + } + } + fPosY += (-pLine->m_LineInfo.fLineDescent); + } + } + } + m_rcRet = CPVT_FloatRect(fMinX, fMinY, fMaxX, fMaxY); +} +CPDF_VariableText::CPDF_VariableText() + : m_nLimitChar(0), + m_nCharArray(0), + m_bMultiLine(FALSE), + m_bLimitWidth(FALSE), + m_bAutoFontSize(FALSE), + m_nAlignment(0), + m_fLineLeading(0.0f), + m_fCharSpace(0.0f), + m_nHorzScale(100), + m_wSubWord(0), + m_fFontSize(0.0f), + m_bInitial(FALSE), + m_bRichText(FALSE), + m_pVTProvider(NULL), + m_pVTIterator(NULL) {} +CPDF_VariableText::~CPDF_VariableText() { + delete m_pVTIterator; + m_pVTIterator = NULL; + ResetAll(); +} +void CPDF_VariableText::Initialize() { + if (!m_bInitial) { + CPVT_SectionInfo secinfo; + if (m_bRichText) { + secinfo.pSecProps = new CPVT_SecProps(0.0f, 0.0f, 0); + secinfo.pWordProps = new CPVT_WordProps(GetDefaultFontIndex(), + PVT_DEFAULT_FONTSIZE, 0, 0, 0); + } + CPVT_WordPlace place; + place.nSecIndex = 0; + AddSection(place, secinfo); + CPVT_LineInfo lineinfo; + lineinfo.fLineAscent = GetFontAscent(GetDefaultFontIndex(), GetFontSize()); + lineinfo.fLineDescent = + GetFontDescent(GetDefaultFontIndex(), GetFontSize()); + AddLine(place, lineinfo); + if (CSection* pSection = m_SectionArray.GetAt(0)) { + pSection->ResetLinePlace(); + } + m_bInitial = TRUE; + } +} +void CPDF_VariableText::ResetAll() { + m_bInitial = FALSE; + ResetSectionArray(); +} +CPVT_WordPlace CPDF_VariableText::InsertWord(const CPVT_WordPlace& place, + FX_WORD word, + int32_t charset, + const CPVT_WordProps* pWordProps) { + int32_t nTotlaWords = GetTotalWords(); + if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) { + return place; + } + if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) { + return place; + } + CPVT_WordPlace newplace = place; + newplace.nWordIndex++; + if (m_bRichText) { + CPVT_WordProps* pNewProps = + pWordProps ? new CPVT_WordProps(*pWordProps) : new CPVT_WordProps(); + pNewProps->nFontIndex = + GetWordFontIndex(word, charset, pWordProps->nFontIndex); + return AddWord(newplace, CPVT_WordInfo(word, charset, -1, pNewProps)); + } + int32_t nFontIndex = + GetSubWord() > 0 ? GetDefaultFontIndex() + : GetWordFontIndex(word, charset, GetDefaultFontIndex()); + return AddWord(newplace, CPVT_WordInfo(word, charset, nFontIndex, NULL)); +} +CPVT_WordPlace CPDF_VariableText::InsertSection( + const CPVT_WordPlace& place, + const CPVT_SecProps* pSecProps, + const CPVT_WordProps* pWordProps) { + int32_t nTotlaWords = GetTotalWords(); + if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) { + return place; + } + if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) { + return place; + } + if (!m_bMultiLine) { + return place; + } + CPVT_WordPlace wordplace = place; + UpdateWordPlace(wordplace); + CPVT_WordPlace newplace = place; + if (CSection* pSection = m_SectionArray.GetAt(wordplace.nSecIndex)) { + CPVT_WordPlace NewPlace(wordplace.nSecIndex + 1, 0, -1); + CPVT_SectionInfo secinfo; + if (m_bRichText) { + if (pSecProps) { + secinfo.pSecProps = new CPVT_SecProps(*pSecProps); + } + if (pWordProps) { + secinfo.pWordProps = new CPVT_WordProps(*pWordProps); + } + } + AddSection(NewPlace, secinfo); + newplace = NewPlace; + if (CSection* pNewSection = m_SectionArray.GetAt(NewPlace.nSecIndex)) { + for (int32_t w = wordplace.nWordIndex + 1, + sz = pSection->m_WordArray.GetSize(); + w < sz; w++) { + if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(w)) { + NewPlace.nWordIndex++; + pNewSection->AddWord(NewPlace, *pWord); + } + } + } + ClearSectionRightWords(wordplace); + } + return newplace; +} +CPVT_WordPlace CPDF_VariableText::InsertText(const CPVT_WordPlace& place, + const FX_WCHAR* text, + int32_t charset, + const CPVT_SecProps* pSecProps, + const CPVT_WordProps* pProps) { + CFX_WideString swText = text; + CPVT_WordPlace wp = place; + for (int32_t i = 0, sz = swText.GetLength(); i < sz; i++) { + CPVT_WordPlace oldwp = wp; + FX_WORD word = swText.GetAt(i); + switch (word) { + case 0x0D: + if (m_bMultiLine) { + if (swText.GetAt(i + 1) == 0x0A) { + i += 1; + } + wp = InsertSection(wp, pSecProps, pProps); + } + break; + case 0x0A: + if (m_bMultiLine) { + if (swText.GetAt(i + 1) == 0x0D) { + i += 1; + } + wp = InsertSection(wp, pSecProps, pProps); + } + break; + case 0x09: + word = 0x20; + default: + wp = InsertWord(wp, word, charset, pProps); + break; + } + if (wp == oldwp) { + break; + } + } + return wp; +} +CPVT_WordPlace CPDF_VariableText::DeleteWords( + const CPVT_WordRange& PlaceRange) { + FX_BOOL bLastSecPos = FALSE; + if (CSection* pSection = m_SectionArray.GetAt(PlaceRange.EndPos.nSecIndex)) { + bLastSecPos = (PlaceRange.EndPos == pSection->GetEndWordPlace()); + } + ClearWords(PlaceRange); + if (PlaceRange.BeginPos.nSecIndex != PlaceRange.EndPos.nSecIndex) { + ClearEmptySections(PlaceRange); + if (!bLastSecPos) { + LinkLatterSection(PlaceRange.BeginPos); + } + } + return PlaceRange.BeginPos; +} +CPVT_WordPlace CPDF_VariableText::DeleteWord(const CPVT_WordPlace& place) { + return ClearRightWord(AdjustLineHeader(place, TRUE)); +} +CPVT_WordPlace CPDF_VariableText::BackSpaceWord(const CPVT_WordPlace& place) { + return ClearLeftWord(AdjustLineHeader(place, TRUE)); +} +void CPDF_VariableText::SetText(const FX_WCHAR* text, + int32_t charset, + const CPVT_SecProps* pSecProps, + const CPVT_WordProps* pWordProps) { + DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); + CFX_WideString swText = text; + CPVT_WordPlace wp(0, 0, -1); + CPVT_SectionInfo secinfo; + if (m_bRichText) { + if (pSecProps) { + secinfo.pSecProps = new CPVT_SecProps(*pSecProps); + } + if (pWordProps) { + secinfo.pWordProps = new CPVT_WordProps(*pWordProps); + } + } + if (CSection* pSection = m_SectionArray.GetAt(0)) { + pSection->m_SecInfo = secinfo; + } + int32_t nCharCount = 0; + for (int32_t i = 0, sz = swText.GetLength(); i < sz; i++) { + if (m_nLimitChar > 0 && nCharCount >= m_nLimitChar) { + break; + } + if (m_nCharArray > 0 && nCharCount >= m_nCharArray) { + break; + } + FX_WORD word = swText.GetAt(i); + switch (word) { + case 0x0D: + if (m_bMultiLine) { + if (swText.GetAt(i + 1) == 0x0A) { + i += 1; + } + wp.nSecIndex++; + wp.nLineIndex = 0; + wp.nWordIndex = -1; + AddSection(wp, secinfo); + } + break; + case 0x0A: + if (m_bMultiLine) { + if (swText.GetAt(i + 1) == 0x0D) { + i += 1; + } + wp.nSecIndex++; + wp.nLineIndex = 0; + wp.nWordIndex = -1; + AddSection(wp, secinfo); + } + break; + case 0x09: + word = 0x20; + default: + wp = InsertWord(wp, word, charset, pWordProps); + break; + } + nCharCount++; + } +} +void CPDF_VariableText::UpdateWordPlace(CPVT_WordPlace& place) const { + if (place.nSecIndex < 0) { + place = GetBeginWordPlace(); + } + if (place.nSecIndex >= m_SectionArray.GetSize()) { + place = GetEndWordPlace(); + } + place = AdjustLineHeader(place, TRUE); + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + pSection->UpdateWordPlace(place); + } +} +int32_t CPDF_VariableText::WordPlaceToWordIndex( + const CPVT_WordPlace& place) const { + CPVT_WordPlace newplace = place; + UpdateWordPlace(newplace); + int32_t nIndex = 0; + int32_t i = 0; + int32_t sz = 0; + for (i = 0, sz = m_SectionArray.GetSize(); i < sz && i < newplace.nSecIndex; + i++) { + if (CSection* pSection = m_SectionArray.GetAt(i)) { + nIndex += pSection->m_WordArray.GetSize(); + if (i != m_SectionArray.GetSize() - 1) { + nIndex += PVT_RETURN_LENGTH; + } + } + } + if (i >= 0 && i < m_SectionArray.GetSize()) { + nIndex += newplace.nWordIndex + PVT_RETURN_LENGTH; + } + return nIndex; +} +CPVT_WordPlace CPDF_VariableText::WordIndexToWordPlace(int32_t index) const { + CPVT_WordPlace place = GetBeginWordPlace(); + int32_t nOldIndex = 0, nIndex = 0; + FX_BOOL bFind = FALSE; + for (int32_t i = 0, sz = m_SectionArray.GetSize(); i < sz; i++) { + if (CSection* pSection = m_SectionArray.GetAt(i)) { + nIndex += pSection->m_WordArray.GetSize(); + if (nIndex == index) { + place = pSection->GetEndWordPlace(); + bFind = TRUE; + break; + } else if (nIndex > index) { + place.nSecIndex = i; + place.nWordIndex = index - nOldIndex - 1; + pSection->UpdateWordPlace(place); + bFind = TRUE; + break; + } + if (i != m_SectionArray.GetSize() - 1) { + nIndex += PVT_RETURN_LENGTH; + } + nOldIndex = nIndex; + } + } + if (!bFind) { + place = GetEndWordPlace(); + } + return place; +} +CPVT_WordPlace CPDF_VariableText::GetBeginWordPlace() const { + return m_bInitial ? CPVT_WordPlace(0, 0, -1) : CPVT_WordPlace(); +} +CPVT_WordPlace CPDF_VariableText::GetEndWordPlace() const { + if (CSection* pSection = m_SectionArray.GetAt(m_SectionArray.GetSize() - 1)) { + return pSection->GetEndWordPlace(); + } + return CPVT_WordPlace(); +} +CPVT_WordPlace CPDF_VariableText::GetPrevWordPlace( + const CPVT_WordPlace& place) const { + if (place.nSecIndex < 0) { + return GetBeginWordPlace(); + } + if (place.nSecIndex >= m_SectionArray.GetSize()) { + return GetEndWordPlace(); + } + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + if (place.WordCmp(pSection->GetBeginWordPlace()) <= 0) { + if (CSection* pPrevSection = m_SectionArray.GetAt(place.nSecIndex - 1)) { + return pPrevSection->GetEndWordPlace(); + } + return GetBeginWordPlace(); + } + return pSection->GetPrevWordPlace(place); + } + return place; +} +CPVT_WordPlace CPDF_VariableText::GetNextWordPlace( + const CPVT_WordPlace& place) const { + if (place.nSecIndex < 0) { + return GetBeginWordPlace(); + } + if (place.nSecIndex >= m_SectionArray.GetSize()) { + return GetEndWordPlace(); + } + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + if (place.WordCmp(pSection->GetEndWordPlace()) >= 0) { + if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { + return pNextSection->GetBeginWordPlace(); + } + return GetEndWordPlace(); + } + return pSection->GetNextWordPlace(place); + } + return place; +} +CPVT_WordPlace CPDF_VariableText::SearchWordPlace( + const CFX_FloatPoint& point) const { + CFX_FloatPoint pt = OutToIn(point); + CPVT_WordPlace place = GetBeginWordPlace(); + int32_t nLeft = 0; + int32_t nRight = m_SectionArray.GetSize() - 1; + int32_t nMid = m_SectionArray.GetSize() / 2; + FX_BOOL bUp = TRUE; + FX_BOOL bDown = TRUE; + while (nLeft <= nRight) { + if (CSection* pSection = m_SectionArray.GetAt(nMid)) { + if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.top)) { + bUp = FALSE; + } + if (IsFloatBigger(pSection->m_SecInfo.rcSection.bottom, pt.y)) { + bDown = FALSE; + } + if (IsFloatSmaller(pt.y, pSection->m_SecInfo.rcSection.top)) { + nRight = nMid - 1; + nMid = (nLeft + nRight) / 2; + continue; + } else if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.bottom)) { + nLeft = nMid + 1; + nMid = (nLeft + nRight) / 2; + continue; + } else { + place = pSection->SearchWordPlace( + CFX_FloatPoint(pt.x - pSection->m_SecInfo.rcSection.left, + pt.y - pSection->m_SecInfo.rcSection.top)); + place.nSecIndex = nMid; + return place; + } + } else { + break; + } + } + if (bUp) { + place = GetBeginWordPlace(); + } + if (bDown) { + place = GetEndWordPlace(); + } + return place; +} +CPVT_WordPlace CPDF_VariableText::GetUpWordPlace( + const CPVT_WordPlace& place, + const CFX_FloatPoint& point) const { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + CPVT_WordPlace temp = place; + CFX_FloatPoint pt = OutToIn(point); + if (temp.nLineIndex-- > 0) { + return pSection->SearchWordPlace( + pt.x - pSection->m_SecInfo.rcSection.left, temp); + } + if (temp.nSecIndex-- > 0) { + if (CSection* pLastSection = m_SectionArray.GetAt(temp.nSecIndex)) { + temp.nLineIndex = pLastSection->m_LineArray.GetSize() - 1; + return pLastSection->SearchWordPlace( + pt.x - pLastSection->m_SecInfo.rcSection.left, temp); + } + } + } + return place; +} +CPVT_WordPlace CPDF_VariableText::GetDownWordPlace( + const CPVT_WordPlace& place, + const CFX_FloatPoint& point) const { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + CPVT_WordPlace temp = place; + CFX_FloatPoint pt = OutToIn(point); + if (temp.nLineIndex++ < pSection->m_LineArray.GetSize() - 1) { + return pSection->SearchWordPlace( + pt.x - pSection->m_SecInfo.rcSection.left, temp); + } + if (temp.nSecIndex++ < m_SectionArray.GetSize() - 1) { + if (CSection* pNextSection = m_SectionArray.GetAt(temp.nSecIndex)) { + temp.nLineIndex = 0; + return pNextSection->SearchWordPlace( + pt.x - pSection->m_SecInfo.rcSection.left, temp); + } + } + } + return place; +} +CPVT_WordPlace CPDF_VariableText::GetLineBeginPlace( + const CPVT_WordPlace& place) const { + return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, -1); +} +CPVT_WordPlace CPDF_VariableText::GetLineEndPlace( + const CPVT_WordPlace& place) const { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + if (CLine* pLine = pSection->m_LineArray.GetAt(place.nLineIndex)) + return pLine->GetEndWordPlace(); + } + return place; +} +CPVT_WordPlace CPDF_VariableText::GetSectionBeginPlace( + const CPVT_WordPlace& place) const { + return CPVT_WordPlace(place.nSecIndex, 0, -1); +} +CPVT_WordPlace CPDF_VariableText::GetSectionEndPlace( + const CPVT_WordPlace& place) const { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + return pSection->GetEndWordPlace(); + } + return place; +} +int32_t CPDF_VariableText::GetTotalWords() const { + int32_t nTotal = 0; + for (int32_t i = 0, sz = m_SectionArray.GetSize(); i < sz; i++) + if (CSection* pSection = m_SectionArray.GetAt(i)) { + nTotal += (pSection->m_WordArray.GetSize() + PVT_RETURN_LENGTH); + } + return nTotal - PVT_RETURN_LENGTH; +} +void CPDF_VariableText::ResetSectionArray() { + for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { + delete m_SectionArray.GetAt(s); + } + m_SectionArray.RemoveAll(); +} +CPVT_WordPlace CPDF_VariableText::AddSection(const CPVT_WordPlace& place, + const CPVT_SectionInfo& secinfo) { + if (IsValid() && !m_bMultiLine) { + return place; + } + int32_t nSecIndex = + std::max(std::min(place.nSecIndex, m_SectionArray.GetSize()), 0); + CSection* pSection = new CSection(this); + pSection->m_SecInfo = secinfo; + pSection->SecPlace.nSecIndex = nSecIndex; + if (nSecIndex == m_SectionArray.GetSize()) { + m_SectionArray.Add(pSection); + } else { + m_SectionArray.InsertAt(nSecIndex, pSection); + } + return place; +} +CPVT_WordPlace CPDF_VariableText::AddLine(const CPVT_WordPlace& place, + const CPVT_LineInfo& lineinfo) { + if (m_SectionArray.IsEmpty()) { + return place; + } + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + return pSection->AddLine(lineinfo); + } + return place; +} +CPVT_WordPlace CPDF_VariableText::AddWord(const CPVT_WordPlace& place, + const CPVT_WordInfo& wordinfo) { + if (m_SectionArray.GetSize() <= 0) { + return place; + } + CPVT_WordPlace newplace = place; + newplace.nSecIndex = + std::max(std::min(newplace.nSecIndex, m_SectionArray.GetSize() - 1), 0); + if (CSection* pSection = m_SectionArray.GetAt(newplace.nSecIndex)) { + return pSection->AddWord(newplace, wordinfo); + } + return place; +} +FX_BOOL CPDF_VariableText::GetWordInfo(const CPVT_WordPlace& place, + CPVT_WordInfo& wordinfo) { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(place.nWordIndex)) { + wordinfo = *pWord; + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText::SetWordInfo(const CPVT_WordPlace& place, + const CPVT_WordInfo& wordinfo) { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(place.nWordIndex)) { + *pWord = wordinfo; + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText::GetLineInfo(const CPVT_WordPlace& place, + CPVT_LineInfo& lineinfo) { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + if (CLine* pLine = pSection->m_LineArray.GetAt(place.nLineIndex)) { + lineinfo = pLine->m_LineInfo; + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText::GetSectionInfo(const CPVT_WordPlace& place, + CPVT_SectionInfo& secinfo) { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + secinfo = pSection->m_SecInfo; + return TRUE; + } + return FALSE; +} +CFX_FloatRect CPDF_VariableText::GetContentRect() const { + return InToOut(CPVT_FloatRect(CPDF_EditContainer::GetContentRect())); +} +FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo& WordInfo, + FX_BOOL bFactFontSize) { + return m_bRichText && WordInfo.pWordProps + ? (WordInfo.pWordProps->nScriptType == PVTWORD_SCRIPT_NORMAL || + bFactFontSize + ? WordInfo.pWordProps->fFontSize + : WordInfo.pWordProps->fFontSize * PVT_HALF) + : GetFontSize(); +} +int32_t CPDF_VariableText::GetWordFontIndex(const CPVT_WordInfo& WordInfo) { + return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nFontIndex + : WordInfo.nFontIndex; +} +FX_FLOAT CPDF_VariableText::GetWordWidth(int32_t nFontIndex, + FX_WORD Word, + FX_WORD SubWord, + FX_FLOAT fCharSpace, + int32_t nHorzScale, + FX_FLOAT fFontSize, + FX_FLOAT fWordTail, + int32_t nWordStyle) { + return (GetCharWidth(nFontIndex, Word, SubWord, nWordStyle) * fFontSize * + PVT_FONTSCALE + + fCharSpace) * + nHorzScale * PVT_PERCENT + + fWordTail; +} +FX_FLOAT CPDF_VariableText::GetWordWidth(const CPVT_WordInfo& WordInfo) { + return GetWordWidth( + GetWordFontIndex(WordInfo), WordInfo.Word, GetSubWord(), + GetCharSpace(WordInfo), GetHorzScale(WordInfo), GetWordFontSize(WordInfo), + WordInfo.fWordTail, + WordInfo.pWordProps ? WordInfo.pWordProps->nWordStyle : 0); +} +FX_FLOAT CPDF_VariableText::GetLineAscent(const CPVT_SectionInfo& SecInfo) { + return m_bRichText && SecInfo.pWordProps + ? GetFontAscent(SecInfo.pWordProps->nFontIndex, + SecInfo.pWordProps->fFontSize) + : GetFontAscent(GetDefaultFontIndex(), GetFontSize()); +} +FX_FLOAT CPDF_VariableText::GetLineDescent(const CPVT_SectionInfo& SecInfo) { + return m_bRichText && SecInfo.pWordProps + ? GetFontDescent(SecInfo.pWordProps->nFontIndex, + SecInfo.pWordProps->fFontSize) + : GetFontDescent(GetDefaultFontIndex(), GetFontSize()); +} +FX_FLOAT CPDF_VariableText::GetFontAscent(int32_t nFontIndex, + FX_FLOAT fFontSize) { + return (FX_FLOAT)GetTypeAscent(nFontIndex) * fFontSize * PVT_FONTSCALE; +} +FX_FLOAT CPDF_VariableText::GetFontDescent(int32_t nFontIndex, + FX_FLOAT fFontSize) { + return (FX_FLOAT)GetTypeDescent(nFontIndex) * fFontSize * PVT_FONTSCALE; +} +FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo& WordInfo, + FX_FLOAT fFontSize) { + return GetFontAscent(GetWordFontIndex(WordInfo), fFontSize); +} +FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo& WordInfo, + FX_FLOAT fFontSize) { + return GetFontDescent(GetWordFontIndex(WordInfo), fFontSize); +} +FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo& WordInfo, + FX_BOOL bFactFontSize) { + return GetFontAscent(GetWordFontIndex(WordInfo), + GetWordFontSize(WordInfo, bFactFontSize)); +} +FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo& WordInfo, + FX_BOOL bFactFontSize) { + return GetFontDescent(GetWordFontIndex(WordInfo), + GetWordFontSize(WordInfo, bFactFontSize)); +} +FX_FLOAT CPDF_VariableText::GetLineLeading(const CPVT_SectionInfo& SecInfo) { + return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineLeading + : m_fLineLeading; +} +FX_FLOAT CPDF_VariableText::GetLineIndent(const CPVT_SectionInfo& SecInfo) { + return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineIndent + : 0.0f; +} +int32_t CPDF_VariableText::GetAlignment(const CPVT_SectionInfo& SecInfo) { + return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->nAlignment + : m_nAlignment; +} +FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo& WordInfo) { + return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->fCharSpace + : m_fCharSpace; +} +int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo& WordInfo) { + return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nHorzScale + : m_nHorzScale; +} +void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace& place) { + CPVT_WordPlace wordplace = AdjustLineHeader(place, TRUE); + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + for (int32_t w = pSection->m_WordArray.GetSize() - 1; + w > wordplace.nWordIndex; w--) { + delete pSection->m_WordArray.GetAt(w); + pSection->m_WordArray.RemoveAt(w); + } + } +} +CPVT_WordPlace CPDF_VariableText::AdjustLineHeader(const CPVT_WordPlace& place, + FX_BOOL bPrevOrNext) const { + if (place.nWordIndex < 0 && place.nLineIndex > 0) { + return bPrevOrNext ? GetPrevWordPlace(place) : GetNextWordPlace(place); + } + return place; +} +FX_BOOL CPDF_VariableText::ClearEmptySection(const CPVT_WordPlace& place) { + if (place.nSecIndex == 0 && m_SectionArray.GetSize() == 1) { + return FALSE; + } + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + if (pSection->m_WordArray.GetSize() == 0) { + delete pSection; + m_SectionArray.RemoveAt(place.nSecIndex); + return TRUE; + } + } + return FALSE; +} +void CPDF_VariableText::ClearEmptySections(const CPVT_WordRange& PlaceRange) { + CPVT_WordPlace wordplace; + for (int32_t s = PlaceRange.EndPos.nSecIndex; + s > PlaceRange.BeginPos.nSecIndex; s--) { + wordplace.nSecIndex = s; + ClearEmptySection(wordplace); + } +} +void CPDF_VariableText::LinkLatterSection(const CPVT_WordPlace& place) { + CPVT_WordPlace oldplace = AdjustLineHeader(place, TRUE); + if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { + if (CSection* pSection = m_SectionArray.GetAt(oldplace.nSecIndex)) { + for (int32_t w = 0, sz = pNextSection->m_WordArray.GetSize(); w < sz; + w++) { + if (CPVT_WordInfo* pWord = pNextSection->m_WordArray.GetAt(w)) { + oldplace.nWordIndex++; + pSection->AddWord(oldplace, *pWord); + } + } + } + delete pNextSection; + m_SectionArray.RemoveAt(place.nSecIndex + 1); + } +} +void CPDF_VariableText::ClearWords(const CPVT_WordRange& PlaceRange) { + CPVT_WordRange NewRange; + NewRange.BeginPos = AdjustLineHeader(PlaceRange.BeginPos, TRUE); + NewRange.EndPos = AdjustLineHeader(PlaceRange.EndPos, TRUE); + for (int32_t s = NewRange.EndPos.nSecIndex; s >= NewRange.BeginPos.nSecIndex; + s--) { + if (CSection* pSection = m_SectionArray.GetAt(s)) { + pSection->ClearWords(NewRange); + } + } +} +CPVT_WordPlace CPDF_VariableText::ClearLeftWord(const CPVT_WordPlace& place) { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + CPVT_WordPlace leftplace = GetPrevWordPlace(place); + if (leftplace != place) { + if (leftplace.nSecIndex != place.nSecIndex) { + if (pSection->m_WordArray.GetSize() == 0) { + ClearEmptySection(place); + } else { + LinkLatterSection(leftplace); + } + } else { + pSection->ClearWord(place); + } + } + return leftplace; + } + return place; +} +CPVT_WordPlace CPDF_VariableText::ClearRightWord(const CPVT_WordPlace& place) { + if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { + CPVT_WordPlace rightplace = + AdjustLineHeader(GetNextWordPlace(place), FALSE); + if (rightplace != place) { + if (rightplace.nSecIndex != place.nSecIndex) { + LinkLatterSection(place); + } else { + pSection->ClearWord(rightplace); + } + } + } + return place; +} +void CPDF_VariableText::RearrangeAll() { + Rearrange(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); +} +void CPDF_VariableText::RearrangePart(const CPVT_WordRange& PlaceRange) { + Rearrange(PlaceRange); +} +CPVT_FloatRect CPDF_VariableText::Rearrange(const CPVT_WordRange& PlaceRange) { + CPVT_FloatRect rcRet; + if (IsValid()) { + if (m_bAutoFontSize) { + SetFontSize(GetAutoFontSize()); + rcRet = RearrangeSections( + CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); + } else { + rcRet = RearrangeSections(PlaceRange); + } + } + SetContentRect(rcRet); + return rcRet; +} +FX_FLOAT CPDF_VariableText::GetAutoFontSize() { + int32_t nTotal = sizeof(gFontSizeSteps) / sizeof(uint8_t); + if (IsMultiLine()) { + nTotal /= 4; + } + if (nTotal <= 0) { + return 0; + } + if (GetPlateWidth() <= 0) { + return 0; + } + int32_t nLeft = 0; + int32_t nRight = nTotal - 1; + int32_t nMid = nTotal / 2; + while (nLeft <= nRight) { + if (IsBigger(gFontSizeSteps[nMid])) { + nRight = nMid - 1; + nMid = (nLeft + nRight) / 2; + continue; + } else { + nLeft = nMid + 1; + nMid = (nLeft + nRight) / 2; + continue; + } + } + return (FX_FLOAT)gFontSizeSteps[nMid]; +} +FX_BOOL CPDF_VariableText::IsBigger(FX_FLOAT fFontSize) { + FX_BOOL bBigger = FALSE; + CPVT_Size szTotal; + for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { + if (CSection* pSection = m_SectionArray.GetAt(s)) { + CPVT_Size size = pSection->GetSectionSize(fFontSize); + szTotal.x = std::max(size.x, szTotal.x); + szTotal.y += size.y; + if (IsFloatBigger(szTotal.x, GetPlateWidth()) || + IsFloatBigger(szTotal.y, GetPlateHeight())) { + bBigger = TRUE; + break; + } + } + } + return bBigger; +} +CPVT_FloatRect CPDF_VariableText::RearrangeSections( + const CPVT_WordRange& PlaceRange) { + CPVT_WordPlace place; + FX_FLOAT fPosY = 0; + FX_FLOAT fOldHeight; + int32_t nSSecIndex = PlaceRange.BeginPos.nSecIndex; + int32_t nESecIndex = PlaceRange.EndPos.nSecIndex; + CPVT_FloatRect rcRet; + for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { + place.nSecIndex = s; + if (CSection* pSection = m_SectionArray.GetAt(s)) { + pSection->SecPlace = place; + CPVT_FloatRect rcSec = pSection->m_SecInfo.rcSection; + if (s >= nSSecIndex) { + if (s <= nESecIndex) { + rcSec = pSection->Rearrange(); + rcSec.top += fPosY; + rcSec.bottom += fPosY; + } else { + fOldHeight = pSection->m_SecInfo.rcSection.bottom - + pSection->m_SecInfo.rcSection.top; + rcSec.top = fPosY; + rcSec.bottom = fPosY + fOldHeight; + } + pSection->m_SecInfo.rcSection = rcSec; + pSection->ResetLinePlace(); + } + if (s == 0) { + rcRet = rcSec; + } else { + rcRet.left = std::min(rcSec.left, rcRet.left); + rcRet.top = std::min(rcSec.top, rcRet.top); + rcRet.right = std::max(rcSec.right, rcRet.right); + rcRet.bottom = std::max(rcSec.bottom, rcRet.bottom); + } + fPosY += rcSec.Height(); + } + } + return rcRet; +} +int32_t CPDF_VariableText::GetCharWidth(int32_t nFontIndex, + FX_WORD Word, + FX_WORD SubWord, + int32_t nWordStyle) { + if (!m_pVTProvider) { + return 0; + } + if (SubWord > 0) { + return m_pVTProvider->GetCharWidth(nFontIndex, SubWord, nWordStyle); + } + return m_pVTProvider->GetCharWidth(nFontIndex, Word, nWordStyle); +} +int32_t CPDF_VariableText::GetTypeAscent(int32_t nFontIndex) { + return m_pVTProvider ? m_pVTProvider->GetTypeAscent(nFontIndex) : 0; +} +int32_t CPDF_VariableText::GetTypeDescent(int32_t nFontIndex) { + return m_pVTProvider ? m_pVTProvider->GetTypeDescent(nFontIndex) : 0; +} +int32_t CPDF_VariableText::GetWordFontIndex(FX_WORD word, + int32_t charset, + int32_t nFontIndex) { + return m_pVTProvider + ? m_pVTProvider->GetWordFontIndex(word, charset, nFontIndex) + : -1; +} +int32_t CPDF_VariableText::GetDefaultFontIndex() { + return m_pVTProvider ? m_pVTProvider->GetDefaultFontIndex() : -1; +} +FX_BOOL CPDF_VariableText::IsLatinWord(FX_WORD word) { + return m_pVTProvider ? m_pVTProvider->IsLatinWord(word) : FALSE; +} +IPDF_VariableText_Iterator* CPDF_VariableText::GetIterator() { + if (!m_pVTIterator) { + m_pVTIterator = new CPDF_VariableText_Iterator(this); + } + return m_pVTIterator; +} +IPDF_VariableText_Provider* CPDF_VariableText::SetProvider( + IPDF_VariableText_Provider* pProvider) { + IPDF_VariableText_Provider* pOld = m_pVTProvider; + m_pVTProvider = pProvider; + return pOld; +} +CPDF_VariableText_Iterator::CPDF_VariableText_Iterator(CPDF_VariableText* pVT) + : m_CurPos(-1, -1, -1), m_pVT(pVT) {} +CPDF_VariableText_Iterator::~CPDF_VariableText_Iterator() {} +void CPDF_VariableText_Iterator::SetAt(int32_t nWordIndex) { + m_CurPos = m_pVT->WordIndexToWordPlace(nWordIndex); +} +void CPDF_VariableText_Iterator::SetAt(const CPVT_WordPlace& place) { + ASSERT(m_pVT); + m_CurPos = place; +} +FX_BOOL CPDF_VariableText_Iterator::NextWord() { + if (m_CurPos == m_pVT->GetEndWordPlace()) { + return FALSE; + } + m_CurPos = m_pVT->GetNextWordPlace(m_CurPos); + return TRUE; +} +FX_BOOL CPDF_VariableText_Iterator::PrevWord() { + if (m_CurPos == m_pVT->GetBeginWordPlace()) { + return FALSE; + } + m_CurPos = m_pVT->GetPrevWordPlace(m_CurPos); + return TRUE; +} +FX_BOOL CPDF_VariableText_Iterator::NextLine() { + if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { + if (m_CurPos.nLineIndex < pSection->m_LineArray.GetSize() - 1) { + m_CurPos = + CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex + 1, -1); + return TRUE; + } + if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { + m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::PrevLine() { + if (m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { + if (m_CurPos.nLineIndex > 0) { + m_CurPos = + CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex - 1, -1); + return TRUE; + } + if (m_CurPos.nSecIndex > 0) { + if (CSection* pLastSection = + m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex - 1)) { + m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, + pLastSection->m_LineArray.GetSize() - 1, -1); + return TRUE; + } + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::NextSection() { + if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { + m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); + return TRUE; + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::PrevSection() { + ASSERT(m_pVT); + if (m_CurPos.nSecIndex > 0) { + m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, 0, -1); + return TRUE; + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::GetWord(CPVT_Word& word) const { + word.WordPlace = m_CurPos; + if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { + if (pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { + if (CPVT_WordInfo* pWord = + pSection->m_WordArray.GetAt(m_CurPos.nWordIndex)) { + word.Word = pWord->Word; + word.nCharset = pWord->nCharset; + word.fWidth = m_pVT->GetWordWidth(*pWord); + word.ptWord = m_pVT->InToOut( + CFX_FloatPoint(pWord->fWordX + pSection->m_SecInfo.rcSection.left, + pWord->fWordY + pSection->m_SecInfo.rcSection.top)); + word.fAscent = m_pVT->GetWordAscent(*pWord); + word.fDescent = m_pVT->GetWordDescent(*pWord); + if (pWord->pWordProps) { + word.WordProps = *pWord->pWordProps; + } + word.nFontIndex = m_pVT->GetWordFontIndex(*pWord); + word.fFontSize = m_pVT->GetWordFontSize(*pWord); + return TRUE; + } + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::SetWord(const CPVT_Word& word) { + if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { + if (CPVT_WordInfo* pWord = + pSection->m_WordArray.GetAt(m_CurPos.nWordIndex)) { + if (pWord->pWordProps) { + *pWord->pWordProps = word.WordProps; + } + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::GetLine(CPVT_Line& line) const { + ASSERT(m_pVT); + line.lineplace = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex, -1); + if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { + if (CLine* pLine = pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { + line.ptLine = m_pVT->InToOut(CFX_FloatPoint( + pLine->m_LineInfo.fLineX + pSection->m_SecInfo.rcSection.left, + pLine->m_LineInfo.fLineY + pSection->m_SecInfo.rcSection.top)); + line.fLineWidth = pLine->m_LineInfo.fLineWidth; + line.fLineAscent = pLine->m_LineInfo.fLineAscent; + line.fLineDescent = pLine->m_LineInfo.fLineDescent; + line.lineEnd = pLine->GetEndWordPlace(); + return TRUE; + } + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::GetSection(CPVT_Section& section) const { + section.secplace = CPVT_WordPlace(m_CurPos.nSecIndex, 0, -1); + if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { + section.rcSection = m_pVT->InToOut(pSection->m_SecInfo.rcSection); + if (pSection->m_SecInfo.pSecProps) { + section.SecProps = *pSection->m_SecInfo.pSecProps; + } + if (pSection->m_SecInfo.pWordProps) { + section.WordProps = *pSection->m_SecInfo.pWordProps; + } + return TRUE; + } + return FALSE; +} +FX_BOOL CPDF_VariableText_Iterator::SetSection(const CPVT_Section& section) { + if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { + if (pSection->m_SecInfo.pSecProps) { + *pSection->m_SecInfo.pSecProps = section.SecProps; + } + if (pSection->m_SecInfo.pWordProps) { + *pSection->m_SecInfo.pWordProps = section.WordProps; + } + return TRUE; + } + return FALSE; +} diff --git a/core/fpdfdoc/doc_vtmodule.cpp b/core/fpdfdoc/doc_vtmodule.cpp new file mode 100644 index 0000000000..85e19ffd08 --- /dev/null +++ b/core/fpdfdoc/doc_vtmodule.cpp @@ -0,0 +1,16 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfdoc/pdf_vt.h" +#include "core/include/fpdfdoc/fpdf_doc.h" +#include "core/include/fpdfdoc/fpdf_vt.h" + +IPDF_VariableText* IPDF_VariableText::NewVariableText() { + return new CPDF_VariableText(); +} +void IPDF_VariableText::DelVariableText(IPDF_VariableText* pVT) { + delete (CPDF_VariableText*)pVT; +} diff --git a/core/fpdfdoc/pdf_vt.h b/core/fpdfdoc/pdf_vt.h new file mode 100644 index 0000000000..53c48af4ec --- /dev/null +++ b/core/fpdfdoc/pdf_vt.h @@ -0,0 +1,554 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFDOC_PDF_VT_H_ +#define CORE_FPDFDOC_PDF_VT_H_ + +#include "core/include/fpdfdoc/fpdf_vt.h" + +class CPDF_VariableText; +class CPDF_VariableText_Iterator; + +#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001) +#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb))) +#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb))) + +class CPVT_Size { + public: + CPVT_Size() : x(0.0f), y(0.0f) {} + CPVT_Size(FX_FLOAT other_x, FX_FLOAT other_y) { + x = other_x; + y = other_y; + } + FX_FLOAT x, y; +}; +class CPVT_FloatRect : public CFX_FloatRect { + public: + CPVT_FloatRect() { left = top = right = bottom = 0.0f; } + CPVT_FloatRect(FX_FLOAT other_left, + FX_FLOAT other_top, + FX_FLOAT other_right, + FX_FLOAT other_bottom) { + left = other_left; + top = other_top; + right = other_right; + bottom = other_bottom; + } + explicit CPVT_FloatRect(const CFX_FloatRect& rect) { + left = rect.left; + top = rect.top; + right = rect.right; + bottom = rect.bottom; + } + void Default() { left = top = right = bottom = 0.0f; } + FX_FLOAT Height() const { + if (top > bottom) + return top - bottom; + return bottom - top; + } +}; +struct CPVT_SectionInfo { + CPVT_SectionInfo() + : rcSection(), nTotalLine(0), pSecProps(NULL), pWordProps(NULL) {} + virtual ~CPVT_SectionInfo() { + delete pSecProps; + delete pWordProps; + } + CPVT_SectionInfo(const CPVT_SectionInfo& other) + : rcSection(), nTotalLine(0), pSecProps(NULL), pWordProps(NULL) { + operator=(other); + } + void operator=(const CPVT_SectionInfo& other) { + if (this == &other) { + return; + } + rcSection = other.rcSection; + nTotalLine = other.nTotalLine; + if (other.pSecProps) { + if (pSecProps) { + *pSecProps = *other.pSecProps; + } else { + pSecProps = new CPVT_SecProps(*other.pSecProps); + } + } + if (other.pWordProps) { + if (pWordProps) { + *pWordProps = *other.pWordProps; + } else { + pWordProps = new CPVT_WordProps(*other.pWordProps); + } + } + } + CPVT_FloatRect rcSection; + int32_t nTotalLine; + CPVT_SecProps* pSecProps; + CPVT_WordProps* pWordProps; +}; +struct CPVT_LineInfo { + CPVT_LineInfo() + : nTotalWord(0), + nBeginWordIndex(-1), + nEndWordIndex(-1), + fLineX(0.0f), + fLineY(0.0f), + fLineWidth(0.0f), + fLineAscent(0.0f), + fLineDescent(0.0f) {} + int32_t nTotalWord; + int32_t nBeginWordIndex; + int32_t nEndWordIndex; + FX_FLOAT fLineX; + FX_FLOAT fLineY; + FX_FLOAT fLineWidth; + FX_FLOAT fLineAscent; + FX_FLOAT fLineDescent; +}; +struct CPVT_WordInfo { + CPVT_WordInfo() + : Word(0), + nCharset(0), + fWordX(0.0f), + fWordY(0.0f), + fWordTail(0.0f), + nFontIndex(-1), + pWordProps(NULL) {} + CPVT_WordInfo(FX_WORD word, + int32_t charset, + int32_t fontIndex, + CPVT_WordProps* pProps) + : Word(word), + nCharset(charset), + fWordX(0.0f), + fWordY(0.0f), + fWordTail(0.0f), + nFontIndex(fontIndex), + pWordProps(pProps) {} + virtual ~CPVT_WordInfo() { delete pWordProps; } + CPVT_WordInfo(const CPVT_WordInfo& word) + : Word(0), + nCharset(0), + fWordX(0.0f), + fWordY(0.0f), + fWordTail(0.0f), + nFontIndex(-1), + pWordProps(NULL) { + operator=(word); + } + void operator=(const CPVT_WordInfo& word) { + if (this == &word) { + return; + } + Word = word.Word; + nCharset = word.nCharset; + nFontIndex = word.nFontIndex; + if (word.pWordProps) { + if (pWordProps) { + *pWordProps = *word.pWordProps; + } else { + pWordProps = new CPVT_WordProps(*word.pWordProps); + } + } + } + FX_WORD Word; + int32_t nCharset; + FX_FLOAT fWordX; + FX_FLOAT fWordY; + FX_FLOAT fWordTail; + int32_t nFontIndex; + CPVT_WordProps* pWordProps; +}; +struct CPVT_FloatRange { + CPVT_FloatRange() : fMin(0.0f), fMax(0.0f) {} + CPVT_FloatRange(FX_FLOAT min, FX_FLOAT max) : fMin(min), fMax(max) {} + FX_FLOAT Range() const { return fMax - fMin; } + FX_FLOAT fMin, fMax; +}; +template +class CPVT_ArrayTemplate : public CFX_ArrayTemplate { + public: + FX_BOOL IsEmpty() { return CFX_ArrayTemplate::GetSize() <= 0; } + TYPE GetAt(int nIndex) const { + if (nIndex >= 0 && nIndex < CFX_ArrayTemplate::GetSize()) { + return CFX_ArrayTemplate::GetAt(nIndex); + } + return NULL; + } + void RemoveAt(int nIndex) { + if (nIndex >= 0 && nIndex < CFX_ArrayTemplate::GetSize()) { + CFX_ArrayTemplate::RemoveAt(nIndex); + } + } +}; +class CLine { + public: + CLine(); + virtual ~CLine(); + CPVT_WordPlace GetBeginWordPlace() const; + CPVT_WordPlace GetEndWordPlace() const; + CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace& place) const; + CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace& place) const; + CPVT_WordPlace LinePlace; + CPVT_LineInfo m_LineInfo; +}; +class CLines { + public: + CLines() : m_nTotal(0) {} + virtual ~CLines() { RemoveAll(); } + int32_t GetSize() const { return m_Lines.GetSize(); } + CLine* GetAt(int32_t nIndex) const { return m_Lines.GetAt(nIndex); } + void Empty() { m_nTotal = 0; } + void RemoveAll() { + for (int32_t i = 0, sz = GetSize(); i < sz; i++) { + delete GetAt(i); + } + m_Lines.RemoveAll(); + m_nTotal = 0; + } + int32_t Add(const CPVT_LineInfo& lineinfo) { + if (m_nTotal >= GetSize()) { + CLine* pLine = new CLine; + pLine->m_LineInfo = lineinfo; + m_Lines.Add(pLine); + } else if (CLine* pLine = GetAt(m_nTotal)) { + pLine->m_LineInfo = lineinfo; + } + return m_nTotal++; + } + void Clear() { + for (int32_t i = GetSize() - 1; i >= m_nTotal; i--) { + delete GetAt(i); + m_Lines.RemoveAt(i); + } + } + + private: + CPVT_ArrayTemplate m_Lines; + int32_t m_nTotal; +}; +class CSection { + friend class CTypeset; + + public: + explicit CSection(CPDF_VariableText* pVT); + virtual ~CSection(); + void ResetAll(); + void ResetLineArray(); + void ResetWordArray(); + void ResetLinePlace(); + CPVT_WordPlace AddWord(const CPVT_WordPlace& place, + const CPVT_WordInfo& wordinfo); + CPVT_WordPlace AddLine(const CPVT_LineInfo& lineinfo); + void ClearWords(const CPVT_WordRange& PlaceRange); + void ClearWord(const CPVT_WordPlace& place); + CPVT_FloatRect Rearrange(); + CPVT_Size GetSectionSize(FX_FLOAT fFontSize); + CPVT_WordPlace GetBeginWordPlace() const; + CPVT_WordPlace GetEndWordPlace() const; + CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace& place) const; + CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace& place) const; + void UpdateWordPlace(CPVT_WordPlace& place) const; + CPVT_WordPlace SearchWordPlace(const CFX_FloatPoint& point) const; + CPVT_WordPlace SearchWordPlace(FX_FLOAT fx, + const CPVT_WordPlace& lineplace) const; + CPVT_WordPlace SearchWordPlace(FX_FLOAT fx, + const CPVT_WordRange& range) const; + + public: + CPVT_WordPlace SecPlace; + CPVT_SectionInfo m_SecInfo; + CLines m_LineArray; + CPVT_ArrayTemplate m_WordArray; + + private: + void ClearLeftWords(int32_t nWordIndex); + void ClearRightWords(int32_t nWordIndex); + void ClearMidWords(int32_t nBeginIndex, int32_t nEndIndex); + + CPDF_VariableText* m_pVT; +}; +class CTypeset { + public: + explicit CTypeset(CSection* pSection); + virtual ~CTypeset(); + CPVT_Size GetEditSize(FX_FLOAT fFontSize); + CPVT_FloatRect Typeset(); + CPVT_FloatRect CharArray(); + + private: + void SplitLines(FX_BOOL bTypeset, FX_FLOAT fFontSize); + void OutputLines(); + + CPVT_FloatRect m_rcRet; + CPDF_VariableText* m_pVT; + CSection* m_pSection; +}; +class CPDF_EditContainer { + public: + CPDF_EditContainer() : m_rcPlate(0, 0, 0, 0), m_rcContent(0, 0, 0, 0) {} + virtual ~CPDF_EditContainer() {} + virtual void SetPlateRect(const CFX_FloatRect& rect) { m_rcPlate = rect; } + virtual const CFX_FloatRect& GetPlateRect() const { return m_rcPlate; } + virtual void SetContentRect(const CPVT_FloatRect& rect) { + m_rcContent = rect; + } + virtual CFX_FloatRect GetContentRect() const { return m_rcContent; } + FX_FLOAT GetPlateWidth() const { return m_rcPlate.right - m_rcPlate.left; } + FX_FLOAT GetPlateHeight() const { return m_rcPlate.top - m_rcPlate.bottom; } + CPVT_Size GetPlateSize() const { + return CPVT_Size(GetPlateWidth(), GetPlateHeight()); + } + CFX_FloatPoint GetBTPoint() const { + return CFX_FloatPoint(m_rcPlate.left, m_rcPlate.top); + } + CFX_FloatPoint GetETPoint() const { + return CFX_FloatPoint(m_rcPlate.right, m_rcPlate.bottom); + } + inline CFX_FloatPoint InToOut(const CFX_FloatPoint& point) const { + return CFX_FloatPoint(point.x + GetBTPoint().x, GetBTPoint().y - point.y); + } + inline CFX_FloatPoint OutToIn(const CFX_FloatPoint& point) const { + return CFX_FloatPoint(point.x - GetBTPoint().x, GetBTPoint().y - point.y); + } + inline CFX_FloatRect InToOut(const CPVT_FloatRect& rect) const { + CFX_FloatPoint ptLeftTop = InToOut(CFX_FloatPoint(rect.left, rect.top)); + CFX_FloatPoint ptRightBottom = + InToOut(CFX_FloatPoint(rect.right, rect.bottom)); + return CFX_FloatRect(ptLeftTop.x, ptRightBottom.y, ptRightBottom.x, + ptLeftTop.y); + } + inline CPVT_FloatRect OutToIn(const CFX_FloatRect& rect) const { + CFX_FloatPoint ptLeftTop = OutToIn(CFX_FloatPoint(rect.left, rect.top)); + CFX_FloatPoint ptRightBottom = + OutToIn(CFX_FloatPoint(rect.right, rect.bottom)); + return CPVT_FloatRect(ptLeftTop.x, ptLeftTop.y, ptRightBottom.x, + ptRightBottom.y); + } + + private: + CFX_FloatRect m_rcPlate; + CPVT_FloatRect m_rcContent; +}; + +class CPDF_VariableText : public IPDF_VariableText, private CPDF_EditContainer { + friend class CTypeset; + friend class CSection; + friend class CPDF_VariableText_Iterator; + + public: + CPDF_VariableText(); + ~CPDF_VariableText() override; + + // IPDF_VariableText + IPDF_VariableText_Provider* SetProvider( + IPDF_VariableText_Provider* pProvider) override; + IPDF_VariableText_Iterator* GetIterator() override; + void SetPlateRect(const CFX_FloatRect& rect) override { + CPDF_EditContainer::SetPlateRect(rect); + } + void SetAlignment(int32_t nFormat = 0) override { m_nAlignment = nFormat; } + void SetPasswordChar(FX_WORD wSubWord = '*') override { + m_wSubWord = wSubWord; + } + void SetLimitChar(int32_t nLimitChar = 0) override { + m_nLimitChar = nLimitChar; + } + void SetCharSpace(FX_FLOAT fCharSpace = 0.0f) override { + m_fCharSpace = fCharSpace; + } + void SetHorzScale(int32_t nHorzScale = 100) override { + m_nHorzScale = nHorzScale; + } + void SetMultiLine(FX_BOOL bMultiLine = TRUE) override { + m_bMultiLine = bMultiLine; + } + void SetAutoReturn(FX_BOOL bAuto = TRUE) override { m_bLimitWidth = bAuto; } + void SetFontSize(FX_FLOAT fFontSize) override { m_fFontSize = fFontSize; } + void SetCharArray(int32_t nCharArray = 0) override { + m_nCharArray = nCharArray; + } + void SetAutoFontSize(FX_BOOL bAuto = TRUE) override { + m_bAutoFontSize = bAuto; + } + void SetRichText(FX_BOOL bRichText) override { m_bRichText = bRichText; } + void SetLineLeading(FX_FLOAT fLineLeading) override { + m_fLineLeading = fLineLeading; + } + void Initialize() override; + FX_BOOL IsValid() const override { return m_bInitial; } + FX_BOOL IsRichText() const override { return m_bRichText; } + void RearrangeAll() override; + void RearrangePart(const CPVT_WordRange& PlaceRange) override; + void ResetAll() override; + void SetText(const FX_WCHAR* text, + int32_t charset = 1, + const CPVT_SecProps* pSecProps = NULL, + const CPVT_WordProps* pWordProps = NULL) override; + CPVT_WordPlace InsertWord(const CPVT_WordPlace& place, + FX_WORD word, + int32_t charset = 1, + const CPVT_WordProps* pWordProps = NULL) override; + CPVT_WordPlace InsertSection( + const CPVT_WordPlace& place, + const CPVT_SecProps* pSecProps = NULL, + const CPVT_WordProps* pWordProps = NULL) override; + CPVT_WordPlace InsertText(const CPVT_WordPlace& place, + const FX_WCHAR* text, + int32_t charset = 1, + const CPVT_SecProps* pSecProps = NULL, + const CPVT_WordProps* pWordProps = NULL) override; + CPVT_WordPlace DeleteWords(const CPVT_WordRange& PlaceRange) override; + CPVT_WordPlace DeleteWord(const CPVT_WordPlace& place) override; + CPVT_WordPlace BackSpaceWord(const CPVT_WordPlace& place) override; + const CFX_FloatRect& GetPlateRect() const override { + return CPDF_EditContainer::GetPlateRect(); + } + CFX_FloatRect GetContentRect() const override; + int32_t GetTotalWords() const override; + FX_FLOAT GetFontSize() const override { return m_fFontSize; } + int32_t GetAlignment() const override { return m_nAlignment; } + FX_WORD GetPasswordChar() const override { return GetSubWord(); } + int32_t GetCharArray() const override { return m_nCharArray; } + int32_t GetLimitChar() const override { return m_nLimitChar; } + FX_BOOL IsMultiLine() const override { return m_bMultiLine; } + int32_t GetHorzScale() const override { return m_nHorzScale; } + FX_FLOAT GetCharSpace() const override { return m_fCharSpace; } + CPVT_WordPlace GetBeginWordPlace() const override; + CPVT_WordPlace GetEndWordPlace() const override; + CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace& place) const override; + CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace& place) const override; + CPVT_WordPlace SearchWordPlace(const CFX_FloatPoint& point) const override; + CPVT_WordPlace GetUpWordPlace(const CPVT_WordPlace& place, + const CFX_FloatPoint& point) const override; + CPVT_WordPlace GetDownWordPlace(const CPVT_WordPlace& place, + const CFX_FloatPoint& point) const override; + CPVT_WordPlace GetLineBeginPlace(const CPVT_WordPlace& place) const override; + CPVT_WordPlace GetLineEndPlace(const CPVT_WordPlace& place) const override; + CPVT_WordPlace GetSectionBeginPlace( + const CPVT_WordPlace& place) const override; + CPVT_WordPlace GetSectionEndPlace(const CPVT_WordPlace& place) const override; + void UpdateWordPlace(CPVT_WordPlace& place) const override; + CPVT_WordPlace AdjustLineHeader(const CPVT_WordPlace& place, + FX_BOOL bPrevOrNext) const override; + int32_t WordPlaceToWordIndex(const CPVT_WordPlace& place) const override; + CPVT_WordPlace WordIndexToWordPlace(int32_t index) const override; + + FX_WORD GetSubWord() const { return m_wSubWord; } + + private: + int32_t GetCharWidth(int32_t nFontIndex, + FX_WORD Word, + FX_WORD SubWord, + int32_t nWordStyle); + int32_t GetTypeAscent(int32_t nFontIndex); + int32_t GetTypeDescent(int32_t nFontIndex); + int32_t GetWordFontIndex(FX_WORD word, int32_t charset, int32_t nFontIndex); + int32_t GetDefaultFontIndex(); + FX_BOOL IsLatinWord(FX_WORD word); + + CPVT_WordPlace AddSection(const CPVT_WordPlace& place, + const CPVT_SectionInfo& secinfo); + CPVT_WordPlace AddLine(const CPVT_WordPlace& place, + const CPVT_LineInfo& lineinfo); + CPVT_WordPlace AddWord(const CPVT_WordPlace& place, + const CPVT_WordInfo& wordinfo); + FX_BOOL GetWordInfo(const CPVT_WordPlace& place, CPVT_WordInfo& wordinfo); + FX_BOOL SetWordInfo(const CPVT_WordPlace& place, + const CPVT_WordInfo& wordinfo); + FX_BOOL GetLineInfo(const CPVT_WordPlace& place, CPVT_LineInfo& lineinfo); + FX_BOOL GetSectionInfo(const CPVT_WordPlace& place, + CPVT_SectionInfo& secinfo); + FX_FLOAT GetWordFontSize(const CPVT_WordInfo& WordInfo, + FX_BOOL bFactFontSize = FALSE); + FX_FLOAT GetWordWidth(int32_t nFontIndex, + FX_WORD Word, + FX_WORD SubWord, + FX_FLOAT fCharSpace, + int32_t nHorzScale, + FX_FLOAT fFontSize, + FX_FLOAT fWordTail, + int32_t nWordStyle); + FX_FLOAT GetWordWidth(const CPVT_WordInfo& WordInfo); + FX_FLOAT GetWordAscent(const CPVT_WordInfo& WordInfo, FX_FLOAT fFontSize); + FX_FLOAT GetWordDescent(const CPVT_WordInfo& WordInfo, FX_FLOAT fFontSize); + FX_FLOAT GetWordAscent(const CPVT_WordInfo& WordInfo, + FX_BOOL bFactFontSize = FALSE); + FX_FLOAT GetWordDescent(const CPVT_WordInfo& WordInfo, + FX_BOOL bFactFontSize = FALSE); + FX_FLOAT GetLineAscent(const CPVT_SectionInfo& SecInfo); + FX_FLOAT GetLineDescent(const CPVT_SectionInfo& SecInfo); + FX_FLOAT GetFontAscent(int32_t nFontIndex, FX_FLOAT fFontSize); + FX_FLOAT GetFontDescent(int32_t nFontIndex, FX_FLOAT fFontSize); + int32_t GetWordFontIndex(const CPVT_WordInfo& WordInfo); + FX_FLOAT GetCharSpace(const CPVT_WordInfo& WordInfo); + int32_t GetHorzScale(const CPVT_WordInfo& WordInfo); + FX_FLOAT GetLineLeading(const CPVT_SectionInfo& SecInfo); + FX_FLOAT GetLineIndent(const CPVT_SectionInfo& SecInfo); + int32_t GetAlignment(const CPVT_SectionInfo& SecInfo); + + void ClearSectionRightWords(const CPVT_WordPlace& place); + + FX_BOOL ClearEmptySection(const CPVT_WordPlace& place); + void ClearEmptySections(const CPVT_WordRange& PlaceRange); + void LinkLatterSection(const CPVT_WordPlace& place); + void ClearWords(const CPVT_WordRange& PlaceRange); + CPVT_WordPlace ClearLeftWord(const CPVT_WordPlace& place); + CPVT_WordPlace ClearRightWord(const CPVT_WordPlace& place); + + private: + CPVT_FloatRect Rearrange(const CPVT_WordRange& PlaceRange); + FX_FLOAT GetAutoFontSize(); + FX_BOOL IsBigger(FX_FLOAT fFontSize); + CPVT_FloatRect RearrangeSections(const CPVT_WordRange& PlaceRange); + + void ResetSectionArray(); + + CPVT_ArrayTemplate m_SectionArray; + int32_t m_nLimitChar; + int32_t m_nCharArray; + FX_BOOL m_bMultiLine; + FX_BOOL m_bLimitWidth; + FX_BOOL m_bAutoFontSize; + int32_t m_nAlignment; + FX_FLOAT m_fLineLeading; + FX_FLOAT m_fCharSpace; + int32_t m_nHorzScale; + FX_WORD m_wSubWord; + FX_FLOAT m_fFontSize; + + private: + FX_BOOL m_bInitial; + FX_BOOL m_bRichText; + IPDF_VariableText_Provider* m_pVTProvider; + CPDF_VariableText_Iterator* m_pVTIterator; +}; + +class CPDF_VariableText_Iterator : public IPDF_VariableText_Iterator { + public: + explicit CPDF_VariableText_Iterator(CPDF_VariableText* pVT); + ~CPDF_VariableText_Iterator() override; + + // IPDF_VariableText_Iterator + FX_BOOL NextWord() override; + FX_BOOL PrevWord() override; + FX_BOOL NextLine() override; + FX_BOOL PrevLine() override; + FX_BOOL NextSection() override; + FX_BOOL PrevSection() override; + FX_BOOL SetWord(const CPVT_Word& word) override; + FX_BOOL GetWord(CPVT_Word& word) const override; + FX_BOOL GetLine(CPVT_Line& line) const override; + FX_BOOL GetSection(CPVT_Section& section) const override; + FX_BOOL SetSection(const CPVT_Section& section) override; + void SetAt(int32_t nWordIndex) override; + void SetAt(const CPVT_WordPlace& place) override; + const CPVT_WordPlace& GetAt() const override { return m_CurPos; } + + private: + CPVT_WordPlace m_CurPos; + CPDF_VariableText* m_pVT; +}; + +#endif // CORE_FPDFDOC_PDF_VT_H_ diff --git a/core/fpdfdoc/tagged_int.h b/core/fpdfdoc/tagged_int.h new file mode 100644 index 0000000000..e930f613b1 --- /dev/null +++ b/core/fpdfdoc/tagged_int.h @@ -0,0 +1,106 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFDOC_TAGGED_INT_H_ +#define CORE_FPDFDOC_TAGGED_INT_H_ + +#include + +#include "core/include/fpdfdoc/fpdf_tagged.h" + +class CPDF_StructElementImpl; + +class CPDF_StructTreeImpl : public CPDF_StructTree { + public: + explicit CPDF_StructTreeImpl(const CPDF_Document* pDoc); + ~CPDF_StructTreeImpl() override; + + // CPDF_StructTree + int CountTopElements() const override { return m_Kids.GetSize(); } + CPDF_StructElement* GetTopElement(int i) const override { + return (CPDF_StructElement*)m_Kids.GetAt(i); + } + + void LoadDocTree(); + void LoadPageTree(const CPDF_Dictionary* pPageDict); + CPDF_StructElementImpl* AddPageNode( + CPDF_Dictionary* pElement, + std::map& map, + int nLevel = 0); + FX_BOOL AddTopLevelNode(CPDF_Dictionary* pDict, + CPDF_StructElementImpl* pElement); + + protected: + const CPDF_Dictionary* m_pTreeRoot; + const CPDF_Dictionary* m_pRoleMap; + const CPDF_Dictionary* m_pPage; + CFX_ArrayTemplate m_Kids; + friend class CPDF_StructElementImpl; +}; + +class CPDF_StructElementImpl final : public CPDF_StructElement { + public: + CPDF_StructElementImpl(CPDF_StructTreeImpl* pTree, + CPDF_StructElementImpl* pParent, + CPDF_Dictionary* pDict); + + // CPDF_StructTreeImpl + CPDF_StructTree* GetTree() const override { return m_pTree; } + const CFX_ByteString& GetType() const override { return m_Type; } + CPDF_StructElement* GetParent() const override { return m_pParent; } + CPDF_Dictionary* GetDict() const override { return m_pDict; } + int CountKids() const override { return m_Kids.GetSize(); } + const CPDF_StructKid& GetKid(int index) const override { + return m_Kids.GetData()[index]; + } + CPDF_Object* GetAttr(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_BOOL bInheritable = FALSE, + FX_FLOAT fLevel = 0.0F) override; + CFX_ByteString GetName(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + const CFX_ByteStringC& default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) override; + FX_ARGB GetColor(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_ARGB default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) override; + FX_FLOAT GetNumber(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_FLOAT default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) override; + int GetInteger(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + int default_value, + FX_BOOL bInheritable = FALSE, + int subindex = -1) override; + + void LoadKids(CPDF_Dictionary* pDict); + void LoadKid(FX_DWORD PageObjNum, CPDF_Object* pObj, CPDF_StructKid* pKid); + CPDF_Object* GetAttr(const CFX_ByteStringC& owner, + const CFX_ByteStringC& name, + FX_BOOL bInheritable, + int subindex); + CPDF_StructElementImpl* Retain(); + void Release(); + + protected: + ~CPDF_StructElementImpl() override; + + CPDF_StructTreeImpl* m_pTree; + CFX_ByteString m_Type; + CPDF_StructElementImpl* m_pParent; + CPDF_Dictionary* m_pDict; + CFX_ArrayTemplate m_Kids; + int m_RefCount; + + friend class CPDF_StructTreeImpl; +}; + +#endif // CORE_FPDFDOC_TAGGED_INT_H_ diff --git a/core/fpdftext/fpdf_text_int.cpp b/core/fpdftext/fpdf_text_int.cpp new file mode 100644 index 0000000000..d16ccb8dde --- /dev/null +++ b/core/fpdftext/fpdf_text_int.cpp @@ -0,0 +1,2500 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdftext/text_int.h" + +#include +#include +#include +#include +#include +#include + +#include "core/include/fpdfapi/cpdf_dictionary.h" +#include "core/include/fpdfapi/cpdf_string.h" +#include "core/include/fpdfapi/fpdf_module.h" +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fpdftext/fpdf_text.h" +#include "core/include/fxcrt/fx_bidi.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_ucd.h" +#include "third_party/base/stl_util.h" + +namespace { + +FX_BOOL _IsIgnoreSpaceCharacter(FX_WCHAR curChar) { + if (curChar < 255) { + return FALSE; + } + if ((curChar >= 0x0600 && curChar <= 0x06FF) || + (curChar >= 0xFE70 && curChar <= 0xFEFF) || + (curChar >= 0xFB50 && curChar <= 0xFDFF) || + (curChar >= 0x0400 && curChar <= 0x04FF) || + (curChar >= 0x0500 && curChar <= 0x052F) || + (curChar >= 0xA640 && curChar <= 0xA69F) || + (curChar >= 0x2DE0 && curChar <= 0x2DFF) || curChar == 8467 || + (curChar >= 0x2000 && curChar <= 0x206F)) { + return FALSE; + } + return TRUE; +} + +FX_FLOAT _NormalizeThreshold(FX_FLOAT threshold) { + if (threshold < 300) { + return threshold / 2.0f; + } + if (threshold < 500) { + return threshold / 4.0f; + } + if (threshold < 700) { + return threshold / 5.0f; + } + return threshold / 6.0f; +} + +FX_FLOAT _CalculateBaseSpace(const CPDF_TextObject* pTextObj, + const CFX_Matrix& matrix) { + FX_FLOAT baseSpace = 0.0; + const int nItems = pTextObj->CountItems(); + if (pTextObj->m_TextState.GetObject()->m_CharSpace && nItems >= 3) { + FX_BOOL bAllChar = TRUE; + FX_FLOAT spacing = matrix.TransformDistance( + pTextObj->m_TextState.GetObject()->m_CharSpace); + baseSpace = spacing; + for (int i = 0; i < nItems; i++) { + CPDF_TextObjectItem item; + pTextObj->GetItemInfo(i, &item); + if (item.m_CharCode == (FX_DWORD)-1) { + FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH(); + FX_FLOAT kerning = -fontsize_h * item.m_OriginX / 1000; + baseSpace = std::min(baseSpace, kerning + spacing); + bAllChar = FALSE; + } + } + if (baseSpace < 0.0 || (nItems == 3 && !bAllChar)) { + baseSpace = 0.0; + } + } + return baseSpace; +} + +const FX_FLOAT kDefaultFontSize = 1.0f; + +} // namespace + +IPDF_TextPage* IPDF_TextPage::CreateTextPage(const CPDF_Page* pPage, + int flags) { + return new CPDF_TextPage(pPage, flags); +} + +IPDF_TextPageFind* IPDF_TextPageFind::CreatePageFind( + const IPDF_TextPage* pTextPage) { + return pTextPage ? new CPDF_TextPageFind(pTextPage) : nullptr; +} + +IPDF_LinkExtract* IPDF_LinkExtract::CreateLinkExtract() { + return new CPDF_LinkExtract(); +} + +#define TEXT_BLANK_CHAR L' ' +#define TEXT_LINEFEED_CHAR L'\n' +#define TEXT_RETURN_CHAR L'\r' +#define TEXT_EMPTY L"" +#define TEXT_BLANK L" " +#define TEXT_RETURN_LINEFEED L"\r\n" +#define TEXT_LINEFEED L"\n" +#define TEXT_CHARRATIO_GAPDELTA 0.070 + +CPDF_TextPage::CPDF_TextPage(const CPDF_Page* pPage, int flags) + : m_pPage(pPage), + m_parserflag(flags), + m_pPreTextObj(nullptr), + m_bIsParsed(false), + m_TextlineDir(-1), + m_CurlineRect(0, 0, 0, 0) { + m_TextBuf.EstimateSize(0, 10240); + pPage->GetDisplayMatrix(m_DisplayMatrix, 0, 0, (int)pPage->GetPageWidth(), + (int)pPage->GetPageHeight(), 0); +} + +bool CPDF_TextPage::IsControlChar(const PAGECHAR_INFO& charInfo) { + switch (charInfo.m_Unicode) { + case 0x2: + case 0x3: + case 0x93: + case 0x94: + case 0x96: + case 0x97: + case 0x98: + case 0xfffe: + return charInfo.m_Flag != FPDFTEXT_CHAR_HYPHEN; + default: + return false; + } +} + +void CPDF_TextPage::ParseTextPage() { + m_bIsParsed = false; + m_TextBuf.Clear(); + m_CharList.clear(); + m_pPreTextObj = NULL; + ProcessObject(); + + m_bIsParsed = true; + m_CharIndex.clear(); + int nCount = pdfium::CollectionSize(m_CharList); + if (nCount) { + m_CharIndex.push_back(0); + } + for (int i = 0; i < nCount; i++) { + int indexSize = pdfium::CollectionSize(m_CharIndex); + FX_BOOL bNormal = FALSE; + const PAGECHAR_INFO& charinfo = m_CharList[i]; + if (charinfo.m_Flag == FPDFTEXT_CHAR_GENERATED) { + bNormal = TRUE; + } else if (charinfo.m_Unicode == 0 || IsControlChar(charinfo)) { + bNormal = FALSE; + } else { + bNormal = TRUE; + } + if (bNormal) { + if (indexSize % 2) { + m_CharIndex.push_back(1); + } else { + if (indexSize <= 0) { + continue; + } + m_CharIndex[indexSize - 1] += 1; + } + } else { + if (indexSize % 2) { + if (indexSize <= 0) { + continue; + } + m_CharIndex[indexSize - 1] = i + 1; + } else { + m_CharIndex.push_back(i + 1); + } + } + } + int indexSize = pdfium::CollectionSize(m_CharIndex); + if (indexSize % 2) { + m_CharIndex.erase(m_CharIndex.begin() + indexSize - 1); + } +} + +int CPDF_TextPage::CountChars() const { + return pdfium::CollectionSize(m_CharList); +} + +int CPDF_TextPage::CharIndexFromTextIndex(int TextIndex) const { + int indexSize = pdfium::CollectionSize(m_CharIndex); + int count = 0; + for (int i = 0; i < indexSize; i += 2) { + count += m_CharIndex[i + 1]; + if (count > TextIndex) + return TextIndex - count + m_CharIndex[i + 1] + m_CharIndex[i]; + } + return -1; +} + +int CPDF_TextPage::TextIndexFromCharIndex(int CharIndex) const { + int indexSize = pdfium::CollectionSize(m_CharIndex); + int count = 0; + for (int i = 0; i < indexSize; i += 2) { + count += m_CharIndex[i + 1]; + if (m_CharIndex[i + 1] + m_CharIndex[i] > CharIndex) { + if (CharIndex - m_CharIndex[i] < 0) + return -1; + + return CharIndex - m_CharIndex[i] + count - m_CharIndex[i + 1]; + } + } + return -1; +} + +void CPDF_TextPage::GetRectArray(int start, + int nCount, + CFX_RectArray& rectArray) const { + if (start < 0 || nCount == 0) { + return; + } + if (!m_bIsParsed) { + return; + } + CPDF_TextObject* pCurObj = NULL; + CFX_FloatRect rect; + int curPos = start; + FX_BOOL flagNewRect = TRUE; + if (nCount + start > pdfium::CollectionSize(m_CharList) || + nCount == -1) { + nCount = pdfium::CollectionSize(m_CharList) - start; + } + while (nCount--) { + PAGECHAR_INFO info_curchar = m_CharList[curPos++]; + if (info_curchar.m_Flag == FPDFTEXT_CHAR_GENERATED) { + continue; + } + if (info_curchar.m_CharBox.Width() < 0.01 || + info_curchar.m_CharBox.Height() < 0.01) { + continue; + } + if (!pCurObj) { + pCurObj = info_curchar.m_pTextObj; + } + if (pCurObj != info_curchar.m_pTextObj) { + rectArray.Add(rect); + pCurObj = info_curchar.m_pTextObj; + flagNewRect = TRUE; + } + if (flagNewRect) { + FX_FLOAT orgX = info_curchar.m_OriginX, orgY = info_curchar.m_OriginY; + CFX_Matrix matrix, matrix_reverse; + info_curchar.m_pTextObj->GetTextMatrix(&matrix); + matrix.Concat(info_curchar.m_Matrix); + matrix_reverse.SetReverse(matrix); + matrix_reverse.Transform(orgX, orgY); + rect.left = info_curchar.m_CharBox.left; + rect.right = info_curchar.m_CharBox.right; + if (pCurObj->GetFont()->GetTypeDescent()) { + rect.bottom = orgY + + pCurObj->GetFont()->GetTypeDescent() * + pCurObj->GetFontSize() / 1000; + FX_FLOAT xPosTemp = orgX; + matrix.Transform(xPosTemp, rect.bottom); + } else { + rect.bottom = info_curchar.m_CharBox.bottom; + } + if (pCurObj->GetFont()->GetTypeAscent()) { + rect.top = + orgY + + pCurObj->GetFont()->GetTypeAscent() * pCurObj->GetFontSize() / 1000; + FX_FLOAT xPosTemp = + orgX + + GetCharWidth(info_curchar.m_CharCode, pCurObj->GetFont()) * + pCurObj->GetFontSize() / 1000; + matrix.Transform(xPosTemp, rect.top); + } else { + rect.top = info_curchar.m_CharBox.top; + } + flagNewRect = FALSE; + rect = info_curchar.m_CharBox; + rect.Normalize(); + } else { + info_curchar.m_CharBox.Normalize(); + if (rect.left > info_curchar.m_CharBox.left) { + rect.left = info_curchar.m_CharBox.left; + } + if (rect.right < info_curchar.m_CharBox.right) { + rect.right = info_curchar.m_CharBox.right; + } + if (rect.top < info_curchar.m_CharBox.top) { + rect.top = info_curchar.m_CharBox.top; + } + if (rect.bottom > info_curchar.m_CharBox.bottom) { + rect.bottom = info_curchar.m_CharBox.bottom; + } + } + } + rectArray.Add(rect); +} + +int CPDF_TextPage::GetIndexAtPos(CFX_FloatPoint point, + FX_FLOAT xTolerance, + FX_FLOAT yTolerance) const { + if (!m_bIsParsed) + return -3; + + int pos = 0; + int NearPos = -1; + double xdif = 5000; + double ydif = 5000; + while (pos < pdfium::CollectionSize(m_CharList)) { + PAGECHAR_INFO charinfo = m_CharList[pos]; + CFX_FloatRect charrect = charinfo.m_CharBox; + if (charrect.Contains(point.x, point.y)) { + break; + } + if (xTolerance > 0 || yTolerance > 0) { + CFX_FloatRect charRectExt; + charrect.Normalize(); + charRectExt.left = charrect.left - xTolerance / 2; + charRectExt.right = charrect.right + xTolerance / 2; + charRectExt.top = charrect.top + yTolerance / 2; + charRectExt.bottom = charrect.bottom - yTolerance / 2; + if (charRectExt.Contains(point.x, point.y)) { + double curXdif, curYdif; + curXdif = FXSYS_fabs(point.x - charrect.left) < + FXSYS_fabs(point.x - charrect.right) + ? FXSYS_fabs(point.x - charrect.left) + : FXSYS_fabs(point.x - charrect.right); + curYdif = FXSYS_fabs(point.y - charrect.bottom) < + FXSYS_fabs(point.y - charrect.top) + ? FXSYS_fabs(point.y - charrect.bottom) + : FXSYS_fabs(point.y - charrect.top); + if (curYdif + curXdif < xdif + ydif) { + ydif = curYdif; + xdif = curXdif; + NearPos = pos; + } + } + } + ++pos; + } + return pos < pdfium::CollectionSize(m_CharList) ? pos : NearPos; +} + +CFX_WideString CPDF_TextPage::GetTextByRect(const CFX_FloatRect& rect) const { + if (!m_bIsParsed) + return CFX_WideString(); + + FX_FLOAT posy = 0; + bool IsContainPreChar = false; + bool IsAddLineFeed = false; + CFX_WideString strText; + for (const auto& charinfo : m_CharList) { + if (IsRectIntersect(rect, charinfo.m_CharBox)) { + if (FXSYS_fabs(posy - charinfo.m_OriginY) > 0 && !IsContainPreChar && + IsAddLineFeed) { + posy = charinfo.m_OriginY; + if (strText.GetLength() > 0) { + strText += L"\r\n"; + } + } + IsContainPreChar = true; + IsAddLineFeed = false; + if (charinfo.m_Unicode) { + strText += charinfo.m_Unicode; + } + } else if (charinfo.m_Unicode == 32) { + if (IsContainPreChar && charinfo.m_Unicode) { + strText += charinfo.m_Unicode; + IsContainPreChar = false; + IsAddLineFeed = false; + } + } else { + IsContainPreChar = false; + IsAddLineFeed = true; + } + } + return strText; +} + +void CPDF_TextPage::GetRectsArrayByRect(const CFX_FloatRect& rect, + CFX_RectArray& resRectArray) const { + if (!m_bIsParsed) + return; + + CFX_FloatRect curRect; + bool flagNewRect = true; + CPDF_TextObject* pCurObj = nullptr; + for (auto info_curchar : m_CharList) { + if (info_curchar.m_Flag == FPDFTEXT_CHAR_GENERATED) { + continue; + } + if (!IsRectIntersect(rect, info_curchar.m_CharBox)) { + continue; + } + if (!pCurObj) { + pCurObj = info_curchar.m_pTextObj; + } + if (pCurObj != info_curchar.m_pTextObj) { + resRectArray.Add(curRect); + pCurObj = info_curchar.m_pTextObj; + flagNewRect = true; + } + if (flagNewRect) { + curRect = info_curchar.m_CharBox; + curRect.Normalize(); + flagNewRect = false; + } else { + info_curchar.m_CharBox.Normalize(); + curRect.left = std::min(curRect.left, info_curchar.m_CharBox.left); + curRect.bottom = std::min(curRect.bottom, info_curchar.m_CharBox.bottom); + curRect.right = std::max(curRect.right, info_curchar.m_CharBox.right); + curRect.top = std::max(curRect.top, info_curchar.m_CharBox.top); + } + } + resRectArray.Add(curRect); +} + +int CPDF_TextPage::GetIndexAtPos(FX_FLOAT x, + FX_FLOAT y, + FX_FLOAT xTolerance, + FX_FLOAT yTolerance) const { + CFX_FloatPoint point(x, y); + return GetIndexAtPos(point, xTolerance, yTolerance); +} + +void CPDF_TextPage::GetCharInfo(int index, FPDF_CHAR_INFO* info) const { + if (!m_bIsParsed) + return; + + if (index < 0 || index >= pdfium::CollectionSize(m_CharList)) + return; + + const PAGECHAR_INFO& charinfo = m_CharList[index]; + info->m_Charcode = charinfo.m_CharCode; + info->m_OriginX = charinfo.m_OriginX; + info->m_OriginY = charinfo.m_OriginY; + info->m_Unicode = charinfo.m_Unicode; + info->m_Flag = charinfo.m_Flag; + info->m_CharBox = charinfo.m_CharBox; + info->m_pTextObj = charinfo.m_pTextObj; + if (charinfo.m_pTextObj && charinfo.m_pTextObj->GetFont()) { + info->m_FontSize = charinfo.m_pTextObj->GetFontSize(); + } else { + info->m_FontSize = kDefaultFontSize; + } + info->m_Matrix.Copy(charinfo.m_Matrix); +} + +void CPDF_TextPage::CheckMarkedContentObject(int32_t& start, + int32_t& nCount) const { + PAGECHAR_INFO charinfo = m_CharList[start]; + PAGECHAR_INFO charinfo2 = m_CharList[start + nCount - 1]; + if (FPDFTEXT_CHAR_PIECE != charinfo.m_Flag && + FPDFTEXT_CHAR_PIECE != charinfo2.m_Flag) { + return; + } + if (FPDFTEXT_CHAR_PIECE == charinfo.m_Flag) { + PAGECHAR_INFO charinfo1 = charinfo; + int startIndex = start; + while (FPDFTEXT_CHAR_PIECE == charinfo1.m_Flag && + charinfo1.m_Index == charinfo.m_Index) { + startIndex--; + if (startIndex < 0) { + break; + } + charinfo1 = m_CharList[startIndex]; + } + startIndex++; + start = startIndex; + } + if (FPDFTEXT_CHAR_PIECE == charinfo2.m_Flag) { + PAGECHAR_INFO charinfo3 = charinfo2; + int endIndex = start + nCount - 1; + while (FPDFTEXT_CHAR_PIECE == charinfo3.m_Flag && + charinfo3.m_Index == charinfo2.m_Index) { + endIndex++; + if (endIndex >= pdfium::CollectionSize(m_CharList)) { + break; + } + charinfo3 = m_CharList[endIndex]; + } + endIndex--; + nCount = endIndex - start + 1; + } +} + +CFX_WideString CPDF_TextPage::GetPageText(int start, int nCount) const { + if (!m_bIsParsed || nCount == 0) + return L""; + + if (start < 0) + start = 0; + + if (nCount == -1) { + nCount = pdfium::CollectionSize(m_CharList) - start; + return m_TextBuf.GetWideString().Mid(start, + m_TextBuf.GetWideString().GetLength()); + } + if (nCount <= 0 || m_CharList.empty()) { + return L""; + } + if (nCount + start > pdfium::CollectionSize(m_CharList) - 1) { + nCount = pdfium::CollectionSize(m_CharList) - start; + } + if (nCount <= 0) { + return L""; + } + CheckMarkedContentObject(start, nCount); + int startindex = 0; + PAGECHAR_INFO charinfo = m_CharList[start]; + int startOffset = 0; + while (charinfo.m_Index == -1) { + startOffset++; + if (startOffset > nCount || + start + startOffset >= pdfium::CollectionSize(m_CharList)) { + return L""; + } + charinfo = m_CharList[start + startOffset]; + } + startindex = charinfo.m_Index; + charinfo = m_CharList[start + nCount - 1]; + int nCountOffset = 0; + while (charinfo.m_Index == -1) { + nCountOffset++; + if (nCountOffset >= nCount) { + return L""; + } + charinfo = m_CharList[start + nCount - nCountOffset - 1]; + } + nCount = start + nCount - nCountOffset - startindex; + if (nCount <= 0) { + return L""; + } + return m_TextBuf.GetWideString().Mid(startindex, nCount); +} + +int CPDF_TextPage::CountRects(int start, int nCount) { + if (!m_bIsParsed || start < 0) + return -1; + + if (nCount == -1 || + nCount + start > pdfium::CollectionSize(m_CharList)) { + nCount = pdfium::CollectionSize(m_CharList) - start; + } + m_SelRects.RemoveAll(); + GetRectArray(start, nCount, m_SelRects); + return m_SelRects.GetSize(); +} + +void CPDF_TextPage::GetRect(int rectIndex, + FX_FLOAT& left, + FX_FLOAT& top, + FX_FLOAT& right, + FX_FLOAT& bottom) const { + if (!m_bIsParsed) + return; + + if (rectIndex < 0 || rectIndex >= m_SelRects.GetSize()) + return; + + left = m_SelRects.GetAt(rectIndex).left; + top = m_SelRects.GetAt(rectIndex).top; + right = m_SelRects.GetAt(rectIndex).right; + bottom = m_SelRects.GetAt(rectIndex).bottom; +} + +FX_BOOL CPDF_TextPage::GetBaselineRotate(int start, int end, int& Rotate) { + if (end == start) { + return FALSE; + } + FPDF_CHAR_INFO info_start; + FPDF_CHAR_INFO info_end; + GetCharInfo(start, &info_start); + GetCharInfo(end, &info_end); + while (info_end.m_CharBox.Width() == 0 || info_end.m_CharBox.Height() == 0) { + if (--end <= start) + return FALSE; + + GetCharInfo(end, &info_end); + } + FX_FLOAT dx = (info_end.m_OriginX - info_start.m_OriginX); + FX_FLOAT dy = (info_end.m_OriginY - info_start.m_OriginY); + if (dx == 0) { + if (dy > 0) { + Rotate = 90; + } else if (dy < 0) { + Rotate = 270; + } else { + Rotate = 0; + } + } else { + float a = FXSYS_atan2(dy, dx); + Rotate = (int)(a * 180 / FX_PI + 0.5); + } + if (Rotate < 0) { + Rotate = -Rotate; + } else if (Rotate > 0) { + Rotate = 360 - Rotate; + } + return TRUE; +} + +FX_BOOL CPDF_TextPage::GetBaselineRotate(const CFX_FloatRect& rect, + int& Rotate) { + int start, end, count, + n = CountBoundedSegments(rect.left, rect.top, rect.right, rect.bottom, + TRUE); + if (n < 1) { + return FALSE; + } + if (n > 1) { + GetBoundedSegment(n - 1, start, count); + end = start + count - 1; + GetBoundedSegment(0, start, count); + } else { + GetBoundedSegment(0, start, count); + end = start + count - 1; + } + return GetBaselineRotate(start, end, Rotate); +} +FX_BOOL CPDF_TextPage::GetBaselineRotate(int rectIndex, int& Rotate) { + if (!m_bIsParsed) + return FALSE; + + if (rectIndex < 0 || rectIndex >= m_SelRects.GetSize()) + return FALSE; + + CFX_FloatRect rect = m_SelRects.GetAt(rectIndex); + return GetBaselineRotate(rect, Rotate); +} + +int CPDF_TextPage::CountBoundedSegments(FX_FLOAT left, + FX_FLOAT top, + FX_FLOAT right, + FX_FLOAT bottom, + FX_BOOL bContains) { + m_Segments.RemoveAll(); + if (!m_bIsParsed) + return -1; + + CFX_FloatRect rect(left, bottom, right, top); + rect.Normalize(); + + FPDF_SEGMENT segment; + segment.m_Start = 0; + segment.m_nCount = 0; + + int pos = 0; + int segmentStatus = 0; + FX_BOOL IsContainPreChar = FALSE; + for (const auto& charinfo : m_CharList) { + if (bContains && rect.Contains(charinfo.m_CharBox)) { + if (segmentStatus == 0 || segmentStatus == 2) { + segment.m_Start = pos; + segment.m_nCount = 1; + segmentStatus = 1; + } else if (segmentStatus == 1) { + segment.m_nCount++; + } + IsContainPreChar = TRUE; + } else if (!bContains && + (IsRectIntersect(rect, charinfo.m_CharBox) || + rect.Contains(charinfo.m_OriginX, charinfo.m_OriginY))) { + if (segmentStatus == 0 || segmentStatus == 2) { + segment.m_Start = pos; + segment.m_nCount = 1; + segmentStatus = 1; + } else if (segmentStatus == 1) { + segment.m_nCount++; + } + IsContainPreChar = TRUE; + } else if (charinfo.m_Unicode == 32) { + if (IsContainPreChar == TRUE) { + if (segmentStatus == 0 || segmentStatus == 2) { + segment.m_Start = pos; + segment.m_nCount = 1; + segmentStatus = 1; + } else if (segmentStatus == 1) { + segment.m_nCount++; + } + IsContainPreChar = FALSE; + } else { + if (segmentStatus == 1) { + segmentStatus = 2; + m_Segments.Add(segment); + segment.m_Start = 0; + segment.m_nCount = 0; + } + } + } else { + if (segmentStatus == 1) { + segmentStatus = 2; + m_Segments.Add(segment); + segment.m_Start = 0; + segment.m_nCount = 0; + } + IsContainPreChar = FALSE; + } + pos++; + } + if (segmentStatus == 1) { + segmentStatus = 2; + m_Segments.Add(segment); + segment.m_Start = 0; + segment.m_nCount = 0; + } + return m_Segments.GetSize(); +} + +void CPDF_TextPage::GetBoundedSegment(int index, int& start, int& count) const { + if (index < 0 || index >= m_Segments.GetSize()) { + return; + } + start = m_Segments.GetAt(index).m_Start; + count = m_Segments.GetAt(index).m_nCount; +} + +int CPDF_TextPage::GetWordBreak(int index, int direction) const { + if (!m_bIsParsed) + return -1; + + if (direction != FPDFTEXT_LEFT && direction != FPDFTEXT_RIGHT) + return -1; + + if (index < 0 || index >= pdfium::CollectionSize(m_CharList)) + return -1; + + const PAGECHAR_INFO& charinfo = m_CharList[index]; + if (charinfo.m_Index == -1 || charinfo.m_Flag == FPDFTEXT_CHAR_GENERATED) { + return index; + } + if (!IsLetter(charinfo.m_Unicode)) { + return index; + } + int breakPos = index; + if (direction == FPDFTEXT_LEFT) { + while (--breakPos > 0) { + if (!IsLetter(m_CharList[breakPos].m_Unicode)) + break; + } + } else if (direction == FPDFTEXT_RIGHT) { + while (++breakPos < pdfium::CollectionSize(m_CharList)) { + if (!IsLetter(m_CharList[breakPos].m_Unicode)) + break; + } + } + return breakPos; +} + +int32_t CPDF_TextPage::FindTextlineFlowDirection() { + const int32_t nPageWidth = static_cast(m_pPage->GetPageWidth()); + const int32_t nPageHeight = static_cast(m_pPage->GetPageHeight()); + std::vector nHorizontalMask(nPageWidth); + std::vector nVerticalMask(nPageHeight); + uint8_t* pDataH = nHorizontalMask.data(); + uint8_t* pDataV = nVerticalMask.data(); + int32_t index = 0; + FX_FLOAT fLineHeight = 0.0f; + if (m_pPage->GetPageObjectList()->empty()) + return -1; + + for (auto& pPageObj : *m_pPage->GetPageObjectList()) { + if (!pPageObj || !pPageObj->IsText()) + continue; + + int32_t minH = + (int32_t)pPageObj->m_Left < 0 ? 0 : (int32_t)pPageObj->m_Left; + int32_t maxH = (int32_t)pPageObj->m_Right > nPageWidth + ? nPageWidth + : (int32_t)pPageObj->m_Right; + int32_t minV = + (int32_t)pPageObj->m_Bottom < 0 ? 0 : (int32_t)pPageObj->m_Bottom; + int32_t maxV = (int32_t)pPageObj->m_Top > nPageHeight + ? nPageHeight + : (int32_t)pPageObj->m_Top; + if (minH >= maxH || minV >= maxV) + continue; + + FXSYS_memset(pDataH + minH, 1, maxH - minH); + FXSYS_memset(pDataV + minV, 1, maxV - minV); + if (fLineHeight <= 0.0f) + fLineHeight = pPageObj->m_Top - pPageObj->m_Bottom; + } + int32_t nStartH = 0; + int32_t nEndH = 0; + FX_FLOAT nSumH = 0.0f; + for (index = 0; index < nPageWidth; index++) { + if (1 == nHorizontalMask[index]) + break; + } + nStartH = index; + for (index = nPageWidth; index > 0; index--) { + if (1 == nHorizontalMask[index - 1]) + break; + } + nEndH = index; + for (index = nStartH; index < nEndH; index++) { + nSumH += nHorizontalMask[index]; + } + nSumH /= nEndH - nStartH; + int32_t nStartV = 0; + int32_t nEndV = 0; + FX_FLOAT nSumV = 0.0f; + for (index = 0; index < nPageHeight; index++) { + if (1 == nVerticalMask[index]) + break; + } + nStartV = index; + for (index = nPageHeight; index > 0; index--) { + if (1 == nVerticalMask[index - 1]) + break; + } + nEndV = index; + for (index = nStartV; index < nEndV; index++) { + nSumV += nVerticalMask[index]; + } + nSumV /= nEndV - nStartV; + if ((nEndV - nStartV) < (int32_t)(2 * fLineHeight)) { + return 0; + } + if ((nEndH - nStartH) < (int32_t)(2 * fLineHeight)) { + return 1; + } + if (nSumH > 0.8f) { + return 0; + } + if (nSumH - nSumV > 0.0f) { + return 0; + } + if (nSumV - nSumH > 0.0f) { + return 1; + } + return -1; +} + +void CPDF_TextPage::ProcessObject() { + if (m_pPage->GetPageObjectList()->empty()) + return; + + m_TextlineDir = FindTextlineFlowDirection(); + const CPDF_PageObjectList* pObjList = m_pPage->GetPageObjectList(); + for (auto it = pObjList->begin(); it != pObjList->end(); ++it) { + if (CPDF_PageObject* pObj = it->get()) { + if (pObj->IsText()) { + CFX_Matrix matrix; + ProcessTextObject(pObj->AsText(), matrix, pObjList, it); + } else if (pObj->IsForm()) { + CFX_Matrix formMatrix(1, 0, 0, 1, 0, 0); + ProcessFormObject(pObj->AsForm(), formMatrix); + } + } + } + for (int i = 0; i < m_LineObj.GetSize(); i++) + ProcessTextObject(m_LineObj.GetAt(i)); + + m_LineObj.RemoveAll(); + CloseTempLine(); +} + +void CPDF_TextPage::ProcessFormObject(CPDF_FormObject* pFormObj, + const CFX_Matrix& formMatrix) { + CPDF_PageObjectList* pObjectList = pFormObj->m_pForm->GetPageObjectList(); + if (pObjectList->empty()) + return; + + CFX_Matrix curFormMatrix; + curFormMatrix.Copy(pFormObj->m_FormMatrix); + curFormMatrix.Concat(formMatrix); + + for (auto it = pObjectList->begin(); it != pObjectList->end(); ++it) { + if (CPDF_PageObject* pPageObj = it->get()) { + if (pPageObj->IsText()) { + ProcessTextObject(pPageObj->AsText(), curFormMatrix, pObjectList, it); + } else if (pPageObj->IsForm()) { + ProcessFormObject(pPageObj->AsForm(), curFormMatrix); + } + } + } +} + +int CPDF_TextPage::GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const { + if (charCode == -1) + return 0; + + if (int w = pFont->GetCharWidthF(charCode)) + return w; + + CFX_ByteString str; + pFont->AppendChar(str, charCode); + if (int w = pFont->GetStringWidth(str, 1)) + return w; + + return pFont->GetCharBBox(charCode).Width(); +} + +void CPDF_TextPage::OnPiece(CFX_BidiChar* pBidi, CFX_WideString& str) { + CFX_BidiChar::Segment seg = pBidi->GetSegmentInfo(); + if (seg.direction == CFX_BidiChar::RIGHT) { + for (int i = seg.start + seg.count; i > seg.start; i--) { + m_TextBuf.AppendChar(str.GetAt(i - i)); + m_CharList.push_back(m_TempCharList[i - 1]); + } + } else { + for (int i = seg.start; i < seg.start + seg.count; i++) { + m_TextBuf.AppendChar(str.GetAt(i)); + m_CharList.push_back(m_TempCharList[i]); + } + } +} + +void CPDF_TextPage::AddCharInfoByLRDirection(FX_WCHAR wChar, + PAGECHAR_INFO info) { + if (!IsControlChar(info)) { + info.m_Index = m_TextBuf.GetLength(); + if (wChar >= 0xFB00 && wChar <= 0xFB06) { + FX_WCHAR* pDst = NULL; + FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); + if (nCount >= 1) { + pDst = FX_Alloc(FX_WCHAR, nCount); + FX_Unicode_GetNormalization(wChar, pDst); + for (int nIndex = 0; nIndex < nCount; nIndex++) { + PAGECHAR_INFO info2 = info; + info2.m_Unicode = pDst[nIndex]; + info2.m_Flag = FPDFTEXT_CHAR_PIECE; + m_TextBuf.AppendChar(info2.m_Unicode); + m_CharList.push_back(info2); + } + FX_Free(pDst); + return; + } + } + m_TextBuf.AppendChar(wChar); + } else { + info.m_Index = -1; + } + m_CharList.push_back(info); +} + +void CPDF_TextPage::AddCharInfoByRLDirection(FX_WCHAR wChar, + PAGECHAR_INFO info) { + if (!IsControlChar(info)) { + info.m_Index = m_TextBuf.GetLength(); + wChar = FX_GetMirrorChar(wChar, TRUE, FALSE); + FX_WCHAR* pDst = NULL; + FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); + if (nCount >= 1) { + pDst = FX_Alloc(FX_WCHAR, nCount); + FX_Unicode_GetNormalization(wChar, pDst); + for (int nIndex = 0; nIndex < nCount; nIndex++) { + PAGECHAR_INFO info2 = info; + info2.m_Unicode = pDst[nIndex]; + info2.m_Flag = FPDFTEXT_CHAR_PIECE; + m_TextBuf.AppendChar(info2.m_Unicode); + m_CharList.push_back(info2); + } + FX_Free(pDst); + return; + } + info.m_Unicode = wChar; + m_TextBuf.AppendChar(info.m_Unicode); + } else { + info.m_Index = -1; + } + m_CharList.push_back(info); +} + +void CPDF_TextPage::CloseTempLine() { + if (m_TempCharList.empty()) + return; + + CFX_WideString str = m_TempTextBuf.GetWideString(); + FX_BOOL bPrevSpace = FALSE; + for (int i = 0; i < str.GetLength(); i++) { + if (str.GetAt(i) != ' ') { + bPrevSpace = FALSE; + continue; + } + if (bPrevSpace) { + m_TempTextBuf.Delete(i, 1); + m_TempCharList.erase(m_TempCharList.begin() + i); + str.Delete(i); + i--; + } + bPrevSpace = TRUE; + } + CFX_BidiString bidi(str); + if (m_parserflag == FPDFTEXT_RLTB) + bidi.SetOverallDirectionRight(); + CFX_BidiChar::Direction eCurrentDirection = bidi.OverallDirection(); + for (const auto& segment : bidi) { + if (segment.direction == CFX_BidiChar::RIGHT || + (segment.direction == CFX_BidiChar::NEUTRAL && + eCurrentDirection == CFX_BidiChar::RIGHT)) { + eCurrentDirection = CFX_BidiChar::RIGHT; + for (int m = segment.start + segment.count; m > segment.start; --m) + AddCharInfoByRLDirection(bidi.CharAt(m - 1), m_TempCharList[m - 1]); + } else { + eCurrentDirection = CFX_BidiChar::LEFT; + for (int m = segment.start; m < segment.start + segment.count; m++) + AddCharInfoByLRDirection(bidi.CharAt(m), m_TempCharList[m]); + } + } + m_TempCharList.clear(); + m_TempTextBuf.Delete(0, m_TempTextBuf.GetLength()); +} + +void CPDF_TextPage::ProcessTextObject( + CPDF_TextObject* pTextObj, + const CFX_Matrix& formMatrix, + const CPDF_PageObjectList* pObjList, + CPDF_PageObjectList::const_iterator ObjPos) { + CFX_FloatRect re(pTextObj->m_Left, pTextObj->m_Bottom, pTextObj->m_Right, + pTextObj->m_Top); + if (FXSYS_fabs(pTextObj->m_Right - pTextObj->m_Left) < 0.01f) { + return; + } + int count = m_LineObj.GetSize(); + PDFTEXT_Obj Obj; + Obj.m_pTextObj = pTextObj; + Obj.m_formMatrix = formMatrix; + if (count == 0) { + m_LineObj.Add(Obj); + return; + } + if (IsSameAsPreTextObject(pTextObj, pObjList, ObjPos)) { + return; + } + PDFTEXT_Obj prev_Obj = m_LineObj.GetAt(count - 1); + CPDF_TextObjectItem item; + int nItem = prev_Obj.m_pTextObj->CountItems(); + prev_Obj.m_pTextObj->GetItemInfo(nItem - 1, &item); + FX_FLOAT prev_width = + GetCharWidth(item.m_CharCode, prev_Obj.m_pTextObj->GetFont()) * + prev_Obj.m_pTextObj->GetFontSize() / 1000; + CFX_Matrix prev_matrix; + prev_Obj.m_pTextObj->GetTextMatrix(&prev_matrix); + prev_width = FXSYS_fabs(prev_width); + prev_matrix.Concat(prev_Obj.m_formMatrix); + prev_width = prev_matrix.TransformDistance(prev_width); + pTextObj->GetItemInfo(0, &item); + FX_FLOAT this_width = GetCharWidth(item.m_CharCode, pTextObj->GetFont()) * + pTextObj->GetFontSize() / 1000; + this_width = FXSYS_fabs(this_width); + CFX_Matrix this_matrix; + pTextObj->GetTextMatrix(&this_matrix); + this_width = FXSYS_fabs(this_width); + this_matrix.Concat(formMatrix); + this_width = this_matrix.TransformDistance(this_width); + FX_FLOAT threshold = + prev_width > this_width ? prev_width / 4 : this_width / 4; + FX_FLOAT prev_x = prev_Obj.m_pTextObj->GetPosX(), + prev_y = prev_Obj.m_pTextObj->GetPosY(); + prev_Obj.m_formMatrix.Transform(prev_x, prev_y); + m_DisplayMatrix.Transform(prev_x, prev_y); + FX_FLOAT this_x = pTextObj->GetPosX(), this_y = pTextObj->GetPosY(); + formMatrix.Transform(this_x, this_y); + m_DisplayMatrix.Transform(this_x, this_y); + if (FXSYS_fabs(this_y - prev_y) > threshold * 2) { + for (int i = 0; i < count; i++) { + ProcessTextObject(m_LineObj.GetAt(i)); + } + m_LineObj.RemoveAll(); + m_LineObj.Add(Obj); + return; + } + int i = 0; + for (i = count - 1; i >= 0; i--) { + PDFTEXT_Obj prev_Obj = m_LineObj.GetAt(i); + CFX_Matrix prev_matrix; + prev_Obj.m_pTextObj->GetTextMatrix(&prev_matrix); + FX_FLOAT Prev_x = prev_Obj.m_pTextObj->GetPosX(), + Prev_y = prev_Obj.m_pTextObj->GetPosY(); + prev_Obj.m_formMatrix.Transform(Prev_x, Prev_y); + m_DisplayMatrix.Transform(Prev_x, Prev_y); + if (this_x >= Prev_x) { + if (i == count - 1) { + m_LineObj.Add(Obj); + } else { + m_LineObj.InsertAt(i + 1, Obj); + } + break; + } + } + if (i < 0) { + m_LineObj.InsertAt(0, Obj); + } +} + +int32_t CPDF_TextPage::PreMarkedContent(PDFTEXT_Obj Obj) { + CPDF_TextObject* pTextObj = Obj.m_pTextObj; + CPDF_ContentMarkData* pMarkData = + (CPDF_ContentMarkData*)pTextObj->m_ContentMark.GetObject(); + if (!pMarkData) + return FPDFTEXT_MC_PASS; + + int nContentMark = pMarkData->CountItems(); + if (nContentMark < 1) + return FPDFTEXT_MC_PASS; + CFX_WideString actText; + FX_BOOL bExist = FALSE; + CPDF_Dictionary* pDict = NULL; + int n = 0; + for (n = 0; n < nContentMark; n++) { + CPDF_ContentMarkItem& item = pMarkData->GetItem(n); + if (item.GetParamType() == CPDF_ContentMarkItem::ParamType::None) + continue; + pDict = item.GetParam(); + CPDF_String* temp = + ToString(pDict ? pDict->GetElement("ActualText") : nullptr); + if (temp) { + bExist = TRUE; + actText = temp->GetUnicodeText(); + } + } + if (!bExist) + return FPDFTEXT_MC_PASS; + + if (m_pPreTextObj) { + CPDF_ContentMarkData* pPreMarkData = + (CPDF_ContentMarkData*)m_pPreTextObj->m_ContentMark.GetObject(); + if (pPreMarkData && pPreMarkData->CountItems() == n && + pDict == pPreMarkData->GetItem(n - 1).GetParam()) { + return FPDFTEXT_MC_DONE; + } + } + FX_STRSIZE nItems = actText.GetLength(); + if (nItems < 1) + return FPDFTEXT_MC_PASS; + + CPDF_Font* pFont = pTextObj->GetFont(); + bExist = FALSE; + for (FX_STRSIZE i = 0; i < nItems; i++) { + if (pFont->CharCodeFromUnicode(actText.GetAt(i)) != -1) { + bExist = TRUE; + break; + } + } + if (!bExist) + return FPDFTEXT_MC_PASS; + + bExist = FALSE; + for (FX_STRSIZE i = 0; i < nItems; i++) { + FX_WCHAR wChar = actText.GetAt(i); + if ((wChar > 0x80 && wChar < 0xFFFD) || (wChar <= 0x80 && isprint(wChar))) { + bExist = TRUE; + break; + } + } + if (!bExist) + return FPDFTEXT_MC_DONE; + + return FPDFTEXT_MC_DELAY; +} + +void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) { + CPDF_TextObject* pTextObj = Obj.m_pTextObj; + CPDF_ContentMarkData* pMarkData = + (CPDF_ContentMarkData*)pTextObj->m_ContentMark.GetObject(); + if (!pMarkData) + return; + + int nContentMark = pMarkData->CountItems(); + if (nContentMark < 1) + return; + CFX_WideString actText; + CPDF_Dictionary* pDict = NULL; + for (int n = 0; n < nContentMark; n++) { + CPDF_ContentMarkItem& item = pMarkData->GetItem(n); + if (item.GetParamType() == CPDF_ContentMarkItem::ParamType::None) + continue; + pDict = item.GetParam(); + if (pDict) + actText = pDict->GetUnicodeTextBy("ActualText"); + } + FX_STRSIZE nItems = actText.GetLength(); + if (nItems < 1) + return; + + CPDF_Font* pFont = pTextObj->GetFont(); + CFX_Matrix formMatrix = Obj.m_formMatrix; + CFX_Matrix matrix; + pTextObj->GetTextMatrix(&matrix); + matrix.Concat(formMatrix); + FX_FLOAT fPosX = pTextObj->GetPosX(); + FX_FLOAT fPosY = pTextObj->GetPosY(); + int nCharInfoIndex = m_TextBuf.GetLength(); + CFX_FloatRect charBox; + charBox.top = pTextObj->m_Top; + charBox.left = pTextObj->m_Left; + charBox.right = pTextObj->m_Right; + charBox.bottom = pTextObj->m_Bottom; + for (FX_STRSIZE k = 0; k < nItems; k++) { + FX_WCHAR wChar = actText.GetAt(k); + if (wChar <= 0x80 && !isprint(wChar)) { + wChar = 0x20; + } + if (wChar >= 0xFFFD) { + continue; + } + PAGECHAR_INFO charinfo; + charinfo.m_OriginX = fPosX; + charinfo.m_OriginY = fPosY; + charinfo.m_Index = nCharInfoIndex; + charinfo.m_Unicode = wChar; + charinfo.m_CharCode = pFont->CharCodeFromUnicode(wChar); + charinfo.m_Flag = FPDFTEXT_CHAR_PIECE; + charinfo.m_pTextObj = pTextObj; + charinfo.m_CharBox.top = charBox.top; + charinfo.m_CharBox.left = charBox.left; + charinfo.m_CharBox.right = charBox.right; + charinfo.m_CharBox.bottom = charBox.bottom; + charinfo.m_Matrix.Copy(matrix); + m_TempTextBuf.AppendChar(wChar); + m_TempCharList.push_back(charinfo); + } +} + +void CPDF_TextPage::FindPreviousTextObject() { + if (m_TempCharList.empty() && m_CharList.empty()) + return; + + PAGECHAR_INFO preChar = + m_TempCharList.empty() ? m_CharList.back() : m_TempCharList.back(); + + if (preChar.m_pTextObj) + m_pPreTextObj = preChar.m_pTextObj; +} +void CPDF_TextPage::SwapTempTextBuf(int32_t iCharListStartAppend, + int32_t iBufStartAppend) { + int32_t i = iCharListStartAppend; + int32_t j = pdfium::CollectionSize(m_TempCharList) - 1; + for (; i < j; i++, j--) { + std::swap(m_TempCharList[i], m_TempCharList[j]); + std::swap(m_TempCharList[i].m_Index, m_TempCharList[j].m_Index); + } + FX_WCHAR* pTempBuffer = m_TempTextBuf.GetBuffer(); + i = iBufStartAppend; + j = m_TempTextBuf.GetLength() - 1; + for (; i < j; i++, j--) { + std::swap(pTempBuffer[i], pTempBuffer[j]); + } +} + +FX_BOOL CPDF_TextPage::IsRightToLeft(const CPDF_TextObject* pTextObj, + const CPDF_Font* pFont, + int nItems) const { + CFX_WideString str; + for (int32_t i = 0; i < nItems; i++) { + CPDF_TextObjectItem item; + pTextObj->GetItemInfo(i, &item); + if (item.m_CharCode == (FX_DWORD)-1) { + continue; + } + CFX_WideString wstrItem = pFont->UnicodeFromCharCode(item.m_CharCode); + FX_WCHAR wChar = wstrItem.GetAt(0); + if ((wstrItem.IsEmpty() || wChar == 0) && item.m_CharCode) { + wChar = (FX_WCHAR)item.m_CharCode; + } + if (wChar) + str += wChar; + } + return CFX_BidiString(str).OverallDirection() == CFX_BidiChar::RIGHT; +} + +void CPDF_TextPage::ProcessTextObject(PDFTEXT_Obj Obj) { + CPDF_TextObject* pTextObj = Obj.m_pTextObj; + if (FXSYS_fabs(pTextObj->m_Right - pTextObj->m_Left) < 0.01f) { + return; + } + CFX_Matrix formMatrix = Obj.m_formMatrix; + CPDF_Font* pFont = pTextObj->GetFont(); + CFX_Matrix matrix; + pTextObj->GetTextMatrix(&matrix); + matrix.Concat(formMatrix); + int32_t bPreMKC = PreMarkedContent(Obj); + if (FPDFTEXT_MC_DONE == bPreMKC) { + m_pPreTextObj = pTextObj; + m_perMatrix.Copy(formMatrix); + return; + } + int result = 0; + if (m_pPreTextObj) { + result = ProcessInsertObject(pTextObj, formMatrix); + if (2 == result) { + m_CurlineRect = + CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_Bottom, + Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top); + } else { + m_CurlineRect.Union( + CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_Bottom, + Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top)); + } + PAGECHAR_INFO generateChar; + if (result == 1) { + if (GenerateCharInfo(TEXT_BLANK_CHAR, generateChar)) { + if (!formMatrix.IsIdentity()) { + generateChar.m_Matrix.Copy(formMatrix); + } + m_TempTextBuf.AppendChar(TEXT_BLANK_CHAR); + m_TempCharList.push_back(generateChar); + } + } else if (result == 2) { + CloseTempLine(); + if (m_TextBuf.GetSize()) { + if (GenerateCharInfo(TEXT_RETURN_CHAR, generateChar)) { + m_TextBuf.AppendChar(TEXT_RETURN_CHAR); + if (!formMatrix.IsIdentity()) { + generateChar.m_Matrix.Copy(formMatrix); + } + m_CharList.push_back(generateChar); + } + if (GenerateCharInfo(TEXT_LINEFEED_CHAR, generateChar)) { + m_TextBuf.AppendChar(TEXT_LINEFEED_CHAR); + if (!formMatrix.IsIdentity()) { + generateChar.m_Matrix.Copy(formMatrix); + } + m_CharList.push_back(generateChar); + } + } + } else if (result == 3) { + int32_t nChars = pTextObj->CountChars(); + if (nChars == 1) { + CPDF_TextObjectItem item; + pTextObj->GetCharInfo(0, &item); + CFX_WideString wstrItem = + pTextObj->GetFont()->UnicodeFromCharCode(item.m_CharCode); + if (wstrItem.IsEmpty()) { + wstrItem += (FX_WCHAR)item.m_CharCode; + } + FX_WCHAR curChar = wstrItem.GetAt(0); + if (0x2D == curChar || 0xAD == curChar) { + return; + } + } + while (m_TempTextBuf.GetSize() > 0 && + m_TempTextBuf.GetWideString().GetAt(m_TempTextBuf.GetLength() - + 1) == 0x20) { + m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); + m_TempCharList.pop_back(); + } + PAGECHAR_INFO* charinfo = &m_TempCharList.back(); + m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); + charinfo->m_Unicode = 0x2; + charinfo->m_Flag = FPDFTEXT_CHAR_HYPHEN; + m_TempTextBuf.AppendChar(0xfffe); + } + } else { + m_CurlineRect = + CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_Bottom, + Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top); + } + if (FPDFTEXT_MC_DELAY == bPreMKC) { + ProcessMarkedContent(Obj); + m_pPreTextObj = pTextObj; + m_perMatrix.Copy(formMatrix); + return; + } + m_pPreTextObj = pTextObj; + m_perMatrix.Copy(formMatrix); + int nItems = pTextObj->CountItems(); + FX_FLOAT baseSpace = _CalculateBaseSpace(pTextObj, matrix); + + const FX_BOOL bR2L = IsRightToLeft(pTextObj, pFont, nItems); + const FX_BOOL bIsBidiAndMirrorInverse = + bR2L && (matrix.a * matrix.d - matrix.b * matrix.c) < 0; + int32_t iBufStartAppend = m_TempTextBuf.GetLength(); + int32_t iCharListStartAppend = + pdfium::CollectionSize(m_TempCharList); + + FX_FLOAT spacing = 0; + for (int i = 0; i < nItems; i++) { + CPDF_TextObjectItem item; + PAGECHAR_INFO charinfo; + charinfo.m_OriginX = 0; + charinfo.m_OriginY = 0; + pTextObj->GetItemInfo(i, &item); + if (item.m_CharCode == (FX_DWORD)-1) { + CFX_WideString str = m_TempTextBuf.GetWideString(); + if (str.IsEmpty()) { + str = m_TextBuf.GetWideString(); + } + if (str.IsEmpty() || str.GetAt(str.GetLength() - 1) == TEXT_BLANK_CHAR) { + continue; + } + FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH(); + spacing = -fontsize_h * item.m_OriginX / 1000; + continue; + } + FX_FLOAT charSpace = pTextObj->m_TextState.GetObject()->m_CharSpace; + if (charSpace > 0.001) { + spacing += matrix.TransformDistance(charSpace); + } else if (charSpace < -0.001) { + spacing -= matrix.TransformDistance(FXSYS_fabs(charSpace)); + } + spacing -= baseSpace; + if (spacing && i > 0) { + int last_width = 0; + FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH(); + FX_DWORD space_charcode = pFont->CharCodeFromUnicode(' '); + FX_FLOAT threshold = 0; + if (space_charcode != -1) { + threshold = fontsize_h * pFont->GetCharWidthF(space_charcode) / 1000; + } + if (threshold > fontsize_h / 3) { + threshold = 0; + } else { + threshold /= 2; + } + if (threshold == 0) { + threshold = fontsize_h; + int this_width = FXSYS_abs(GetCharWidth(item.m_CharCode, pFont)); + threshold = this_width > last_width ? (FX_FLOAT)this_width + : (FX_FLOAT)last_width; + threshold = _NormalizeThreshold(threshold); + threshold = fontsize_h * threshold / 1000; + } + if (threshold && (spacing && spacing >= threshold)) { + charinfo.m_Unicode = TEXT_BLANK_CHAR; + charinfo.m_Flag = FPDFTEXT_CHAR_GENERATED; + charinfo.m_pTextObj = pTextObj; + charinfo.m_Index = m_TextBuf.GetLength(); + m_TempTextBuf.AppendChar(TEXT_BLANK_CHAR); + charinfo.m_CharCode = -1; + charinfo.m_Matrix.Copy(formMatrix); + matrix.Transform(item.m_OriginX, item.m_OriginY, charinfo.m_OriginX, + charinfo.m_OriginY); + charinfo.m_CharBox = + CFX_FloatRect(charinfo.m_OriginX, charinfo.m_OriginY, + charinfo.m_OriginX, charinfo.m_OriginY); + m_TempCharList.push_back(charinfo); + } + if (item.m_CharCode == (FX_DWORD)-1) { + continue; + } + } + spacing = 0; + CFX_WideString wstrItem = pFont->UnicodeFromCharCode(item.m_CharCode); + FX_BOOL bNoUnicode = FALSE; + FX_WCHAR wChar = wstrItem.GetAt(0); + if ((wstrItem.IsEmpty() || wChar == 0) && item.m_CharCode) { + if (wstrItem.IsEmpty()) { + wstrItem += (FX_WCHAR)item.m_CharCode; + } else { + wstrItem.SetAt(0, (FX_WCHAR)item.m_CharCode); + } + bNoUnicode = TRUE; + } + charinfo.m_Index = -1; + charinfo.m_CharCode = item.m_CharCode; + if (bNoUnicode) { + charinfo.m_Flag = FPDFTEXT_CHAR_UNUNICODE; + } else { + charinfo.m_Flag = FPDFTEXT_CHAR_NORMAL; + } + charinfo.m_pTextObj = pTextObj; + charinfo.m_OriginX = 0, charinfo.m_OriginY = 0; + matrix.Transform(item.m_OriginX, item.m_OriginY, charinfo.m_OriginX, + charinfo.m_OriginY); + FX_RECT rect = + charinfo.m_pTextObj->GetFont()->GetCharBBox(charinfo.m_CharCode); + charinfo.m_CharBox.top = + rect.top * pTextObj->GetFontSize() / 1000 + item.m_OriginY; + charinfo.m_CharBox.left = + rect.left * pTextObj->GetFontSize() / 1000 + item.m_OriginX; + charinfo.m_CharBox.right = + rect.right * pTextObj->GetFontSize() / 1000 + item.m_OriginX; + charinfo.m_CharBox.bottom = + rect.bottom * pTextObj->GetFontSize() / 1000 + item.m_OriginY; + if (fabsf(charinfo.m_CharBox.top - charinfo.m_CharBox.bottom) < 0.01f) { + charinfo.m_CharBox.top = + charinfo.m_CharBox.bottom + pTextObj->GetFontSize(); + } + if (fabsf(charinfo.m_CharBox.right - charinfo.m_CharBox.left) < 0.01f) { + charinfo.m_CharBox.right = + charinfo.m_CharBox.left + pTextObj->GetCharWidth(charinfo.m_CharCode); + } + matrix.TransformRect(charinfo.m_CharBox); + charinfo.m_Matrix.Copy(matrix); + if (wstrItem.IsEmpty()) { + charinfo.m_Unicode = 0; + m_TempCharList.push_back(charinfo); + m_TempTextBuf.AppendChar(0xfffe); + continue; + } else { + int nTotal = wstrItem.GetLength(); + FX_BOOL bDel = FALSE; + const int count = + std::min(pdfium::CollectionSize(m_TempCharList), 7); + FX_FLOAT threshold = charinfo.m_Matrix.TransformXDistance( + (FX_FLOAT)TEXT_CHARRATIO_GAPDELTA * pTextObj->GetFontSize()); + for (int n = pdfium::CollectionSize(m_TempCharList); + n > pdfium::CollectionSize(m_TempCharList) - count; n--) { + const PAGECHAR_INFO& charinfo1 = m_TempCharList[n - 1]; + if (charinfo1.m_CharCode == charinfo.m_CharCode && + charinfo1.m_pTextObj->GetFont() == charinfo.m_pTextObj->GetFont() && + FXSYS_fabs(charinfo1.m_OriginX - charinfo.m_OriginX) < threshold && + FXSYS_fabs(charinfo1.m_OriginY - charinfo.m_OriginY) < threshold) { + bDel = TRUE; + break; + } + } + if (!bDel) { + for (int nIndex = 0; nIndex < nTotal; nIndex++) { + charinfo.m_Unicode = wstrItem.GetAt(nIndex); + if (charinfo.m_Unicode) { + charinfo.m_Index = m_TextBuf.GetLength(); + m_TempTextBuf.AppendChar(charinfo.m_Unicode); + } else { + m_TempTextBuf.AppendChar(0xfffe); + } + m_TempCharList.push_back(charinfo); + } + } else if (i == 0) { + CFX_WideString str = m_TempTextBuf.GetWideString(); + if (!str.IsEmpty() && + str.GetAt(str.GetLength() - 1) == TEXT_BLANK_CHAR) { + m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); + m_TempCharList.pop_back(); + } + } + } + } + if (bIsBidiAndMirrorInverse) { + SwapTempTextBuf(iCharListStartAppend, iBufStartAppend); + } +} + +int32_t CPDF_TextPage::GetTextObjectWritingMode( + const CPDF_TextObject* pTextObj) { + int32_t nChars = pTextObj->CountChars(); + if (nChars == 1) { + return m_TextlineDir; + } + CPDF_TextObjectItem first, last; + pTextObj->GetCharInfo(0, &first); + pTextObj->GetCharInfo(nChars - 1, &last); + CFX_Matrix textMatrix; + pTextObj->GetTextMatrix(&textMatrix); + textMatrix.TransformPoint(first.m_OriginX, first.m_OriginY); + textMatrix.TransformPoint(last.m_OriginX, last.m_OriginY); + FX_FLOAT dX = FXSYS_fabs(last.m_OriginX - first.m_OriginX); + FX_FLOAT dY = FXSYS_fabs(last.m_OriginY - first.m_OriginY); + if (dX <= 0.0001f && dY <= 0.0001f) { + return -1; + } + CFX_VectorF v(dX, dY); + v.Normalize(); + if (v.y <= 0.0872f) { + return v.x <= 0.0872f ? m_TextlineDir : 0; + } + if (v.x <= 0.0872f) { + return 1; + } + return m_TextlineDir; +} +FX_BOOL CPDF_TextPage::IsHyphen(FX_WCHAR curChar) { + CFX_WideString strCurText = m_TempTextBuf.GetWideString(); + if (strCurText.GetLength() == 0) { + strCurText = m_TextBuf.GetWideString(); + } + FX_STRSIZE nCount = strCurText.GetLength(); + int nIndex = nCount - 1; + FX_WCHAR wcTmp = strCurText.GetAt(nIndex); + while (wcTmp == 0x20 && nIndex <= nCount - 1 && nIndex >= 0) { + wcTmp = strCurText.GetAt(--nIndex); + } + if (0x2D == wcTmp || 0xAD == wcTmp) { + if (--nIndex > 0) { + FX_WCHAR preChar = strCurText.GetAt((nIndex)); + if (((preChar >= L'A' && preChar <= L'Z') || + (preChar >= L'a' && preChar <= L'z')) && + ((curChar >= L'A' && curChar <= L'Z') || + (curChar >= L'a' && curChar <= L'z'))) { + return TRUE; + } + } + const PAGECHAR_INFO* preInfo; + if (!m_TempCharList.empty()) { + preInfo = &m_TempCharList.back(); + } else if (!m_CharList.empty()) { + preInfo = &m_CharList.back(); + } else { + return FALSE; + } + if (FPDFTEXT_CHAR_PIECE == preInfo->m_Flag && + (0xAD == preInfo->m_Unicode || 0x2D == preInfo->m_Unicode)) { + return TRUE; + } + } + return FALSE; +} + +int CPDF_TextPage::ProcessInsertObject(const CPDF_TextObject* pObj, + const CFX_Matrix& formMatrix) { + FindPreviousTextObject(); + FX_BOOL bNewline = FALSE; + int WritingMode = GetTextObjectWritingMode(pObj); + if (WritingMode == -1) { + WritingMode = GetTextObjectWritingMode(m_pPreTextObj); + } + CFX_FloatRect this_rect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, + pObj->m_Top); + CFX_FloatRect prev_rect(m_pPreTextObj->m_Left, m_pPreTextObj->m_Bottom, + m_pPreTextObj->m_Right, m_pPreTextObj->m_Top); + CPDF_TextObjectItem PrevItem, item; + int nItem = m_pPreTextObj->CountItems(); + m_pPreTextObj->GetItemInfo(nItem - 1, &PrevItem); + pObj->GetItemInfo(0, &item); + CFX_WideString wstrItem = + pObj->GetFont()->UnicodeFromCharCode(item.m_CharCode); + if (wstrItem.IsEmpty()) { + wstrItem += (FX_WCHAR)item.m_CharCode; + } + FX_WCHAR curChar = wstrItem.GetAt(0); + if (WritingMode == 0) { + if (this_rect.Height() > 4.5 && prev_rect.Height() > 4.5) { + FX_FLOAT top = + this_rect.top < prev_rect.top ? this_rect.top : prev_rect.top; + FX_FLOAT bottom = this_rect.bottom > prev_rect.bottom ? this_rect.bottom + : prev_rect.bottom; + if (bottom >= top) { + if (IsHyphen(curChar)) { + return 3; + } + return 2; + } + } + } else if (WritingMode == 1) { + if (this_rect.Width() > pObj->GetFontSize() * 0.1f && + prev_rect.Width() > m_pPreTextObj->GetFontSize() * 0.1f) { + FX_FLOAT left = this_rect.left > m_CurlineRect.left ? this_rect.left + : m_CurlineRect.left; + FX_FLOAT right = this_rect.right < m_CurlineRect.right + ? this_rect.right + : m_CurlineRect.right; + if (right <= left) { + if (IsHyphen(curChar)) { + return 3; + } + return 2; + } + } + } + FX_FLOAT last_pos = PrevItem.m_OriginX; + int nLastWidth = GetCharWidth(PrevItem.m_CharCode, m_pPreTextObj->GetFont()); + FX_FLOAT last_width = nLastWidth * m_pPreTextObj->GetFontSize() / 1000; + last_width = FXSYS_fabs(last_width); + int nThisWidth = GetCharWidth(item.m_CharCode, pObj->GetFont()); + FX_FLOAT this_width = nThisWidth * pObj->GetFontSize() / 1000; + this_width = FXSYS_fabs(this_width); + FX_FLOAT threshold = + last_width > this_width ? last_width / 4 : this_width / 4; + CFX_Matrix prev_matrix, prev_reverse; + m_pPreTextObj->GetTextMatrix(&prev_matrix); + prev_matrix.Concat(m_perMatrix); + prev_reverse.SetReverse(prev_matrix); + FX_FLOAT x = pObj->GetPosX(); + FX_FLOAT y = pObj->GetPosY(); + formMatrix.Transform(x, y); + prev_reverse.Transform(x, y); + if (last_width < this_width) { + threshold = prev_reverse.TransformDistance(threshold); + } + CFX_FloatRect rect1(m_pPreTextObj->m_Left, pObj->m_Bottom, + m_pPreTextObj->m_Right, pObj->m_Top); + CFX_FloatRect rect2(m_pPreTextObj->m_Left, m_pPreTextObj->m_Bottom, + m_pPreTextObj->m_Right, m_pPreTextObj->m_Top); + CFX_FloatRect rect3 = rect1; + rect1.Intersect(rect2); + if (WritingMode == 0) { + if ((rect1.IsEmpty() && rect2.Height() > 5 && rect3.Height() > 5) || + ((y > threshold * 2 || y < threshold * -3) && + (FXSYS_fabs(y) < 1 ? FXSYS_fabs(x) < FXSYS_fabs(y) : TRUE))) { + bNewline = TRUE; + if (nItem > 1) { + CPDF_TextObjectItem tempItem; + m_pPreTextObj->GetItemInfo(0, &tempItem); + CFX_Matrix m; + m_pPreTextObj->GetTextMatrix(&m); + if (PrevItem.m_OriginX > tempItem.m_OriginX && + m_DisplayMatrix.a > 0.9 && m_DisplayMatrix.b < 0.1 && + m_DisplayMatrix.c < 0.1 && m_DisplayMatrix.d < -0.9 && m.b < 0.1 && + m.c < 0.1) { + CFX_FloatRect re(0, m_pPreTextObj->m_Bottom, 1000, + m_pPreTextObj->m_Top); + if (re.Contains(pObj->GetPosX(), pObj->GetPosY())) { + bNewline = FALSE; + } else { + CFX_FloatRect re(0, pObj->m_Bottom, 1000, pObj->m_Top); + if (re.Contains(m_pPreTextObj->GetPosX(), + m_pPreTextObj->GetPosY())) { + bNewline = FALSE; + } + } + } + } + } + } + if (bNewline) + return IsHyphen(curChar) ? 3 : 2; + + int32_t nChars = pObj->CountChars(); + if (nChars == 1 && (0x2D == curChar || 0xAD == curChar) && + IsHyphen(curChar)) { + return 3; + } + CFX_WideString PrevStr = + m_pPreTextObj->GetFont()->UnicodeFromCharCode(PrevItem.m_CharCode); + FX_WCHAR preChar = PrevStr.GetAt(PrevStr.GetLength() - 1); + CFX_Matrix matrix; + pObj->GetTextMatrix(&matrix); + matrix.Concat(formMatrix); + threshold = (FX_FLOAT)(nLastWidth > nThisWidth ? nLastWidth : nThisWidth); + threshold = threshold > 400 + ? (threshold < 700 + ? threshold / 4 + : (threshold > 800 ? threshold / 6 : threshold / 5)) + : (threshold / 2); + if (nLastWidth >= nThisWidth) { + threshold *= FXSYS_fabs(m_pPreTextObj->GetFontSize()); + } else { + threshold *= FXSYS_fabs(pObj->GetFontSize()); + threshold = matrix.TransformDistance(threshold); + threshold = prev_reverse.TransformDistance(threshold); + } + threshold /= 1000; + if ((threshold < 1.4881 && threshold > 1.4879) || + (threshold < 1.39001 && threshold > 1.38999)) { + threshold *= 1.5; + } + if (FXSYS_fabs(last_pos + last_width - x) > threshold && curChar != L' ' && + preChar != L' ') { + if (curChar != L' ' && preChar != L' ') { + if ((x - last_pos - last_width) > threshold || + (last_pos - x - last_width) > threshold) { + return 1; + } + if (x < 0 && (last_pos - x - last_width) > threshold) { + return 1; + } + if ((x - last_pos - last_width) > this_width || + (x - last_pos - this_width) > last_width) { + return 1; + } + } + } + return 0; +} + +FX_BOOL CPDF_TextPage::IsSameTextObject(CPDF_TextObject* pTextObj1, + CPDF_TextObject* pTextObj2) { + if (!pTextObj1 || !pTextObj2) { + return FALSE; + } + CFX_FloatRect rcPreObj(pTextObj2->m_Left, pTextObj2->m_Bottom, + pTextObj2->m_Right, pTextObj2->m_Top); + CFX_FloatRect rcCurObj(pTextObj1->m_Left, pTextObj1->m_Bottom, + pTextObj1->m_Right, pTextObj1->m_Top); + if (rcPreObj.IsEmpty() && rcCurObj.IsEmpty()) { + FX_FLOAT dbXdif = FXSYS_fabs(rcPreObj.left - rcCurObj.left); + size_t nCount = m_CharList.size(); + if (nCount >= 2) { + PAGECHAR_INFO perCharTemp = m_CharList[nCount - 2]; + FX_FLOAT dbSpace = perCharTemp.m_CharBox.Width(); + if (dbXdif > dbSpace) { + return FALSE; + } + } + } + if (!rcPreObj.IsEmpty() || !rcCurObj.IsEmpty()) { + rcPreObj.Intersect(rcCurObj); + if (rcPreObj.IsEmpty()) { + return FALSE; + } + if (FXSYS_fabs(rcPreObj.Width() - rcCurObj.Width()) > + rcCurObj.Width() / 2) { + return FALSE; + } + if (pTextObj2->GetFontSize() != pTextObj1->GetFontSize()) { + return FALSE; + } + } + int nPreCount = pTextObj2->CountItems(); + int nCurCount = pTextObj1->CountItems(); + if (nPreCount != nCurCount) { + return FALSE; + } + CPDF_TextObjectItem itemPer, itemCur; + for (int i = 0; i < nPreCount; i++) { + pTextObj2->GetItemInfo(i, &itemPer); + pTextObj1->GetItemInfo(i, &itemCur); + if (itemCur.m_CharCode != itemPer.m_CharCode) { + return FALSE; + } + } + if (FXSYS_fabs(pTextObj1->GetPosX() - pTextObj2->GetPosX()) > + GetCharWidth(itemPer.m_CharCode, pTextObj2->GetFont()) * + pTextObj2->GetFontSize() / 1000 * 0.9 || + FXSYS_fabs(pTextObj1->GetPosY() - pTextObj2->GetPosY()) > + std::max(std::max(rcPreObj.Height(), rcPreObj.Width()), + pTextObj2->GetFontSize()) / + 8) { + return FALSE; + } + return TRUE; +} +FX_BOOL CPDF_TextPage::IsSameAsPreTextObject( + CPDF_TextObject* pTextObj, + const CPDF_PageObjectList* pObjList, + CPDF_PageObjectList::const_iterator iter) { + int i = 0; + while (i < 5 && iter != pObjList->begin()) { + --iter; + CPDF_PageObject* pOtherObj = iter->get(); + if (pOtherObj == pTextObj || !pOtherObj->IsText()) + continue; + if (IsSameTextObject(pOtherObj->AsText(), pTextObj)) + return TRUE; + ++i; + } + return FALSE; +} + +FX_BOOL CPDF_TextPage::GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info) { + const PAGECHAR_INFO* preChar; + if (!m_TempCharList.empty()) { + preChar = &m_TempCharList.back(); + } else if (!m_CharList.empty()) { + preChar = &m_CharList.back(); + } else { + return FALSE; + } + info.m_Index = m_TextBuf.GetLength(); + info.m_Unicode = unicode; + info.m_pTextObj = NULL; + info.m_CharCode = -1; + info.m_Flag = FPDFTEXT_CHAR_GENERATED; + int preWidth = 0; + if (preChar->m_pTextObj && preChar->m_CharCode != (FX_DWORD)-1) + preWidth = + GetCharWidth(preChar->m_CharCode, preChar->m_pTextObj->GetFont()); + + FX_FLOAT fFontSize = preChar->m_pTextObj ? preChar->m_pTextObj->GetFontSize() + : preChar->m_CharBox.Height(); + if (!fFontSize) + fFontSize = kDefaultFontSize; + + info.m_OriginX = preChar->m_OriginX + preWidth * (fFontSize) / 1000; + info.m_OriginY = preChar->m_OriginY; + info.m_CharBox = CFX_FloatRect(info.m_OriginX, info.m_OriginY, info.m_OriginX, + info.m_OriginY); + return TRUE; +} + +FX_BOOL CPDF_TextPage::IsRectIntersect(const CFX_FloatRect& rect1, + const CFX_FloatRect& rect2) { + CFX_FloatRect rect = rect1; + rect.Intersect(rect2); + return !rect.IsEmpty(); +} + +FX_BOOL CPDF_TextPage::IsLetter(FX_WCHAR unicode) { + if (unicode < L'A') { + return FALSE; + } + if (unicode > L'Z' && unicode < L'a') { + return FALSE; + } + if (unicode > L'z') { + return FALSE; + } + return TRUE; +} + +CPDF_TextPageFind::CPDF_TextPageFind(const IPDF_TextPage* pTextPage) + : m_pTextPage(pTextPage), + m_flags(0), + m_findNextStart(-1), + m_findPreStart(-1), + m_bMatchCase(FALSE), + m_bMatchWholeWord(FALSE), + m_resStart(0), + m_resEnd(-1), + m_IsFind(FALSE) { + m_strText = m_pTextPage->GetPageText(); + int nCount = pTextPage->CountChars(); + if (nCount) { + m_CharIndex.push_back(0); + } + for (int i = 0; i < nCount; i++) { + FPDF_CHAR_INFO info; + pTextPage->GetCharInfo(i, &info); + int indexSize = pdfium::CollectionSize(m_CharIndex); + if (info.m_Flag == CHAR_NORMAL || info.m_Flag == CHAR_GENERATED) { + if (indexSize % 2) { + m_CharIndex.push_back(1); + } else { + if (indexSize <= 0) { + continue; + } + m_CharIndex[indexSize - 1] += 1; + } + } else { + if (indexSize % 2) { + if (indexSize <= 0) { + continue; + } + m_CharIndex[indexSize - 1] = i + 1; + } else { + m_CharIndex.push_back(i + 1); + } + } + } + int indexSize = pdfium::CollectionSize(m_CharIndex); + if (indexSize % 2) { + m_CharIndex.erase(m_CharIndex.begin() + indexSize - 1); + } +} + +int CPDF_TextPageFind::GetCharIndex(int index) const { + return m_pTextPage->CharIndexFromTextIndex(index); +} + +FX_BOOL CPDF_TextPageFind::FindFirst(const CFX_WideString& findwhat, + int flags, + int startPos) { + if (!m_pTextPage) { + return FALSE; + } + if (m_strText.IsEmpty() || m_bMatchCase != (flags & FPDFTEXT_MATCHCASE)) { + m_strText = m_pTextPage->GetPageText(); + } + CFX_WideString findwhatStr = findwhat; + m_findWhat = findwhatStr; + m_flags = flags; + m_bMatchCase = flags & FPDFTEXT_MATCHCASE; + if (m_strText.IsEmpty()) { + m_IsFind = FALSE; + return TRUE; + } + FX_STRSIZE len = findwhatStr.GetLength(); + if (!m_bMatchCase) { + findwhatStr.MakeLower(); + m_strText.MakeLower(); + } + m_bMatchWholeWord = flags & FPDFTEXT_MATCHWHOLEWORD; + m_findNextStart = startPos; + if (startPos == -1) { + m_findPreStart = m_strText.GetLength() - 1; + } else { + m_findPreStart = startPos; + } + m_csFindWhatArray.clear(); + int i = 0; + while (i < len) { + if (findwhatStr.GetAt(i) != ' ') { + break; + } + i++; + } + if (i < len) { + ExtractFindWhat(findwhatStr); + } else { + m_csFindWhatArray.push_back(findwhatStr); + } + if (m_csFindWhatArray.empty()) { + return FALSE; + } + m_IsFind = TRUE; + m_resStart = 0; + m_resEnd = -1; + return TRUE; +} + +FX_BOOL CPDF_TextPageFind::FindNext() { + if (!m_pTextPage) { + return FALSE; + } + m_resArray.RemoveAll(); + if (m_findNextStart == -1) { + return FALSE; + } + if (m_strText.IsEmpty()) { + m_IsFind = FALSE; + return m_IsFind; + } + int strLen = m_strText.GetLength(); + if (m_findNextStart > strLen - 1) { + m_IsFind = FALSE; + return m_IsFind; + } + int nCount = pdfium::CollectionSize(m_csFindWhatArray); + int nResultPos = 0; + int nStartPos = 0; + nStartPos = m_findNextStart; + FX_BOOL bSpaceStart = FALSE; + for (int iWord = 0; iWord < nCount; iWord++) { + CFX_WideString csWord = m_csFindWhatArray[iWord]; + if (csWord.IsEmpty()) { + if (iWord == nCount - 1) { + FX_WCHAR strInsert = m_strText.GetAt(nStartPos); + if (strInsert == TEXT_LINEFEED_CHAR || strInsert == TEXT_BLANK_CHAR || + strInsert == TEXT_RETURN_CHAR || strInsert == 160) { + nResultPos = nStartPos + 1; + break; + } + iWord = -1; + } else if (iWord == 0) { + bSpaceStart = TRUE; + } + continue; + } + int endIndex; + nResultPos = m_strText.Find(csWord.c_str(), nStartPos); + if (nResultPos == -1) { + m_IsFind = FALSE; + return m_IsFind; + } + endIndex = nResultPos + csWord.GetLength() - 1; + if (iWord == 0) { + m_resStart = nResultPos; + } + FX_BOOL bMatch = TRUE; + if (iWord != 0 && !bSpaceStart) { + int PreResEndPos = nStartPos; + int curChar = csWord.GetAt(0); + CFX_WideString lastWord = m_csFindWhatArray[iWord - 1]; + int lastChar = lastWord.GetAt(lastWord.GetLength() - 1); + if (nStartPos == nResultPos && + !(_IsIgnoreSpaceCharacter(lastChar) || + _IsIgnoreSpaceCharacter(curChar))) { + bMatch = FALSE; + } + for (int d = PreResEndPos; d < nResultPos; d++) { + FX_WCHAR strInsert = m_strText.GetAt(d); + if (strInsert != TEXT_LINEFEED_CHAR && strInsert != TEXT_BLANK_CHAR && + strInsert != TEXT_RETURN_CHAR && strInsert != 160) { + bMatch = FALSE; + break; + } + } + } else if (bSpaceStart) { + if (nResultPos > 0) { + FX_WCHAR strInsert = m_strText.GetAt(nResultPos - 1); + if (strInsert != TEXT_LINEFEED_CHAR && strInsert != TEXT_BLANK_CHAR && + strInsert != TEXT_RETURN_CHAR && strInsert != 160) { + bMatch = FALSE; + m_resStart = nResultPos; + } else { + m_resStart = nResultPos - 1; + } + } + } + if (m_bMatchWholeWord && bMatch) { + bMatch = IsMatchWholeWord(m_strText, nResultPos, endIndex); + } + nStartPos = endIndex + 1; + if (!bMatch) { + iWord = -1; + if (bSpaceStart) { + nStartPos = m_resStart + m_csFindWhatArray[1].GetLength(); + } else { + nStartPos = m_resStart + m_csFindWhatArray[0].GetLength(); + } + } + } + m_resEnd = nResultPos + m_csFindWhatArray.back().GetLength() - 1; + m_IsFind = TRUE; + int resStart = GetCharIndex(m_resStart); + int resEnd = GetCharIndex(m_resEnd); + m_pTextPage->GetRectArray(resStart, resEnd - resStart + 1, m_resArray); + if (m_flags & FPDFTEXT_CONSECUTIVE) { + m_findNextStart = m_resStart + 1; + m_findPreStart = m_resEnd - 1; + } else { + m_findNextStart = m_resEnd + 1; + m_findPreStart = m_resStart - 1; + } + return m_IsFind; +} + +FX_BOOL CPDF_TextPageFind::FindPrev() { + if (!m_pTextPage) { + return FALSE; + } + m_resArray.RemoveAll(); + if (m_strText.IsEmpty() || m_findPreStart < 0) { + m_IsFind = FALSE; + return m_IsFind; + } + CPDF_TextPageFind findEngine(m_pTextPage); + FX_BOOL ret = findEngine.FindFirst(m_findWhat, m_flags); + if (!ret) { + m_IsFind = FALSE; + return m_IsFind; + } + int order = -1, MatchedCount = 0; + while (ret) { + ret = findEngine.FindNext(); + if (ret) { + int order1 = findEngine.GetCurOrder(); + int MatchedCount1 = findEngine.GetMatchedCount(); + if (((order1 + MatchedCount1) - 1) > m_findPreStart) { + break; + } + order = order1; + MatchedCount = MatchedCount1; + } + } + if (order == -1) { + m_IsFind = FALSE; + return m_IsFind; + } + m_resStart = m_pTextPage->TextIndexFromCharIndex(order); + m_resEnd = m_pTextPage->TextIndexFromCharIndex(order + MatchedCount - 1); + m_IsFind = TRUE; + m_pTextPage->GetRectArray(order, MatchedCount, m_resArray); + if (m_flags & FPDFTEXT_CONSECUTIVE) { + m_findNextStart = m_resStart + 1; + m_findPreStart = m_resEnd - 1; + } else { + m_findNextStart = m_resEnd + 1; + m_findPreStart = m_resStart - 1; + } + return m_IsFind; +} + +void CPDF_TextPageFind::ExtractFindWhat(const CFX_WideString& findwhat) { + if (findwhat.IsEmpty()) { + return; + } + int index = 0; + while (1) { + CFX_WideString csWord = TEXT_EMPTY; + int ret = + ExtractSubString(csWord, findwhat.c_str(), index, TEXT_BLANK_CHAR); + if (csWord.IsEmpty()) { + if (ret) { + m_csFindWhatArray.push_back(L""); + index++; + continue; + } else { + break; + } + } + int pos = 0; + while (pos < csWord.GetLength()) { + CFX_WideString curStr = csWord.Mid(pos, 1); + FX_WCHAR curChar = csWord.GetAt(pos); + if (_IsIgnoreSpaceCharacter(curChar)) { + if (pos > 0 && curChar == 0x2019) { + pos++; + continue; + } + if (pos > 0) { + m_csFindWhatArray.push_back(csWord.Mid(0, pos)); + } + m_csFindWhatArray.push_back(curStr); + if (pos == csWord.GetLength() - 1) { + csWord.Empty(); + break; + } + csWord = csWord.Right(csWord.GetLength() - pos - 1); + pos = 0; + continue; + } + pos++; + } + if (!csWord.IsEmpty()) { + m_csFindWhatArray.push_back(csWord); + } + index++; + } +} + +FX_BOOL CPDF_TextPageFind::IsMatchWholeWord(const CFX_WideString& csPageText, + int startPos, + int endPos) { + FX_WCHAR char_left = 0; + FX_WCHAR char_right = 0; + int char_count = endPos - startPos + 1; + if (char_count < 1) { + return FALSE; + } + if (char_count == 1 && csPageText.GetAt(startPos) > 255) { + return TRUE; + } + if (startPos - 1 >= 0) { + char_left = csPageText.GetAt(startPos - 1); + } + if (startPos + char_count < csPageText.GetLength()) { + char_right = csPageText.GetAt(startPos + char_count); + } + if ((char_left > 'A' && char_left < 'a') || + (char_left > 'a' && char_left < 'z') || + (char_left > 0xfb00 && char_left < 0xfb06) || std::iswdigit(char_left) || + (char_right > 'A' && char_right < 'a') || + (char_right > 'a' && char_right < 'z') || + (char_right > 0xfb00 && char_right < 0xfb06) || + std::iswdigit(char_right)) { + return FALSE; + } + if (!(('A' > char_left || char_left > 'Z') && + ('a' > char_left || char_left > 'z') && + ('A' > char_right || char_right > 'Z') && + ('a' > char_right || char_right > 'z'))) { + return FALSE; + } + if (char_count > 0) { + if (csPageText.GetAt(startPos) >= L'0' && + csPageText.GetAt(startPos) <= L'9' && char_left >= L'0' && + char_left <= L'9') { + return FALSE; + } + if (csPageText.GetAt(endPos) >= L'0' && csPageText.GetAt(endPos) <= L'9' && + char_right >= L'0' && char_right <= L'9') { + return FALSE; + } + } + return TRUE; +} + +FX_BOOL CPDF_TextPageFind::ExtractSubString(CFX_WideString& rString, + const FX_WCHAR* lpszFullString, + int iSubString, + FX_WCHAR chSep) { + if (!lpszFullString) { + return FALSE; + } + while (iSubString--) { + lpszFullString = FXSYS_wcschr(lpszFullString, chSep); + if (!lpszFullString) { + rString.Empty(); + return FALSE; + } + lpszFullString++; + while (*lpszFullString == chSep) { + lpszFullString++; + } + } + const FX_WCHAR* lpchEnd = FXSYS_wcschr(lpszFullString, chSep); + int nLen = lpchEnd ? (int)(lpchEnd - lpszFullString) + : (int)FXSYS_wcslen(lpszFullString); + ASSERT(nLen >= 0); + FXSYS_memcpy(rString.GetBuffer(nLen), lpszFullString, + nLen * sizeof(FX_WCHAR)); + rString.ReleaseBuffer(); + return TRUE; +} + +CFX_WideString CPDF_TextPageFind::MakeReverse(const CFX_WideString& str) { + CFX_WideString str2; + str2.Empty(); + int nlen = str.GetLength(); + for (int i = nlen - 1; i >= 0; i--) { + str2 += str.GetAt(i); + } + return str2; +} + +void CPDF_TextPageFind::GetRectArray(CFX_RectArray& rects) const { + rects.Copy(m_resArray); +} + +int CPDF_TextPageFind::GetCurOrder() const { + return GetCharIndex(m_resStart); +} + +int CPDF_TextPageFind::GetMatchedCount() const { + int resStart = GetCharIndex(m_resStart); + int resEnd = GetCharIndex(m_resEnd); + return resEnd - resStart + 1; +} + +CPDF_LinkExtract::CPDF_LinkExtract() + : m_pTextPage(nullptr), m_bIsParsed(false) {} + +CPDF_LinkExtract::~CPDF_LinkExtract() { + DeleteLinkList(); +} + +FX_BOOL CPDF_LinkExtract::ExtractLinks(const IPDF_TextPage* pTextPage) { + if (!pTextPage || !pTextPage->IsParsed()) + return FALSE; + + m_pTextPage = (const CPDF_TextPage*)pTextPage; + m_strPageText = m_pTextPage->GetPageText(0, -1); + DeleteLinkList(); + if (m_strPageText.IsEmpty()) { + return FALSE; + } + ParseLink(); + m_bIsParsed = true; + return TRUE; +} + +void CPDF_LinkExtract::DeleteLinkList() { + while (m_LinkList.GetSize()) { + CPDF_LinkExt* linkinfo = NULL; + linkinfo = m_LinkList.GetAt(0); + m_LinkList.RemoveAt(0); + delete linkinfo; + } + m_LinkList.RemoveAll(); +} + +int CPDF_LinkExtract::CountLinks() const { + if (!m_bIsParsed) { + return -1; + } + return m_LinkList.GetSize(); +} + +void CPDF_LinkExtract::ParseLink() { + int start = 0, pos = 0; + int TotalChar = m_pTextPage->CountChars(); + while (pos < TotalChar) { + FPDF_CHAR_INFO pageChar; + m_pTextPage->GetCharInfo(pos, &pageChar); + if (pageChar.m_Flag == CHAR_GENERATED || pageChar.m_Unicode == 0x20 || + pos == TotalChar - 1) { + int nCount = pos - start; + if (pos == TotalChar - 1) { + nCount++; + } + CFX_WideString strBeCheck; + strBeCheck = m_pTextPage->GetPageText(start, nCount); + if (strBeCheck.GetLength() > 5) { + while (strBeCheck.GetLength() > 0) { + FX_WCHAR ch = strBeCheck.GetAt(strBeCheck.GetLength() - 1); + if (ch == L')' || ch == L',' || ch == L'>' || ch == L'.') { + strBeCheck = strBeCheck.Mid(0, strBeCheck.GetLength() - 1); + nCount--; + } else { + break; + } + } + if (nCount > 5 && + (CheckWebLink(strBeCheck) || CheckMailLink(strBeCheck))) { + AppendToLinkList(start, nCount, strBeCheck); + } + } + start = ++pos; + } else { + pos++; + } + } +} + +FX_BOOL CPDF_LinkExtract::CheckWebLink(CFX_WideString& strBeCheck) { + CFX_WideString str = strBeCheck; + str.MakeLower(); + if (str.Find(L"http://www.") != -1) { + strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"http://www.")); + return TRUE; + } + if (str.Find(L"http://") != -1) { + strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"http://")); + return TRUE; + } + if (str.Find(L"https://www.") != -1) { + strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"https://www.")); + return TRUE; + } + if (str.Find(L"https://") != -1) { + strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"https://")); + return TRUE; + } + if (str.Find(L"www.") != -1) { + strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"www.")); + strBeCheck = L"http://" + strBeCheck; + return TRUE; + } + return FALSE; +} + +bool CPDF_LinkExtract::CheckMailLink(CFX_WideString& str) { + int aPos = str.Find(L'@'); + // Invalid when no '@'. + if (aPos < 1) { + return FALSE; + } + + // Check the local part. + int pPos = aPos; // Used to track the position of '@' or '.'. + for (int i = aPos - 1; i >= 0; i--) { + FX_WCHAR ch = str.GetAt(i); + if (ch == L'_' || ch == L'-' || FXSYS_iswalnum(ch)) { + continue; + } + if (ch != L'.' || i == pPos - 1 || i == 0) { + if (i == aPos - 1) { + // There is '.' or invalid char before '@'. + return FALSE; + } + // End extracting for other invalid chars, '.' at the beginning, or + // consecutive '.'. + int removed_len = i == pPos - 1 ? i + 2 : i + 1; + str = str.Right(str.GetLength() - removed_len); + break; + } + // Found a valid '.'. + pPos = i; + } + + // Check the domain name part. + aPos = str.Find(L'@'); + if (aPos < 1) { + return FALSE; + } + str.TrimRight(L'.'); + // At least one '.' in domain name, but not at the beginning. + // TODO(weili): RFC5322 allows domain names to be a local name without '.'. + // Check whether we should remove this check. + int ePos = str.Find(L'.', aPos + 1); + if (ePos == -1 || ePos == aPos + 1) { + return FALSE; + } + // Validate all other chars in domain name. + int nLen = str.GetLength(); + pPos = 0; // Used to track the position of '.'. + for (int i = aPos + 1; i < nLen; i++) { + FX_WCHAR wch = str.GetAt(i); + if (wch == L'-' || FXSYS_iswalnum(wch)) { + continue; + } + if (wch != L'.' || i == pPos + 1) { + // Domain name should end before invalid char. + int host_end = i == pPos + 1 ? i - 2 : i - 1; + if (pPos > 0 && host_end - aPos >= 3) { + // Trim the ending invalid chars if there is at least one '.' and name. + str = str.Left(host_end + 1); + break; + } + return FALSE; + } + pPos = i; + } + + if (str.Find(L"mailto:") == -1) { + str = L"mailto:" + str; + } + return TRUE; +} + +void CPDF_LinkExtract::AppendToLinkList(int start, + int count, + const CFX_WideString& strUrl) { + CPDF_LinkExt* linkInfo = new CPDF_LinkExt; + linkInfo->m_strUrl = strUrl; + linkInfo->m_Start = start; + linkInfo->m_Count = count; + m_LinkList.Add(linkInfo); +} + +CFX_WideString CPDF_LinkExtract::GetURL(int index) const { + if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) { + return L""; + } + CPDF_LinkExt* link = NULL; + link = m_LinkList.GetAt(index); + if (!link) { + return L""; + } + return link->m_strUrl; +} +void CPDF_LinkExtract::GetBoundedSegment(int index, + int& start, + int& count) const { + if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) { + return; + } + CPDF_LinkExt* link = NULL; + link = m_LinkList.GetAt(index); + if (!link) { + return; + } + start = link->m_Start; + count = link->m_Count; +} + +void CPDF_LinkExtract::GetRects(int index, CFX_RectArray& rects) const { + if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) { + return; + } + CPDF_LinkExt* link = NULL; + link = m_LinkList.GetAt(index); + if (!link) { + return; + } + m_pTextPage->GetRectArray(link->m_Start, link->m_Count, rects); +} diff --git a/core/fpdftext/fpdf_text_int_unittest.cpp b/core/fpdftext/fpdf_text_int_unittest.cpp new file mode 100644 index 0000000000..d114ba75ce --- /dev/null +++ b/core/fpdftext/fpdf_text_int_unittest.cpp @@ -0,0 +1,56 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/gtest/include/gtest/gtest.h" + +#include "core/fpdftext/text_int.h" + +// Class to help test functions in CPDF_LinkExtract class. +class CPDF_TestLinkExtract : public CPDF_LinkExtract { + private: + // Add test cases as friends to access protected member functions. + // Access CheckMailLink. + FRIEND_TEST(fpdf_text_int, CheckMailLink); +}; + +TEST(fpdf_text_int, CheckMailLink) { + CPDF_TestLinkExtract extractor; + // Check cases that fail to extract valid mail link. + const wchar_t* invalid_strs[] = { + L"", + L"peter.pan" // '@' is required. + L"abc@server", // Domain name needs at least one '.'. + L"abc.@gmail.com", // '.' can not immediately precede '@'. + L"abc@xyz&q.org", // Domain name should not contain '&'. + L"abc@.xyz.org", // Domain name should not start with '.'. + L"fan@g..com" // Domain name should not have consecutive '.' + }; + for (int i = 0; i < FX_ArraySize(invalid_strs); ++i) { + CFX_WideString text_str(invalid_strs[i]); + EXPECT_FALSE(extractor.CheckMailLink(text_str)); + } + + // Check cases that can extract valid mail link. + // An array of {input_string, expected_extracted_email_address}. + const wchar_t* valid_strs[][2] = { + {L"peter@abc.d", L"peter@abc.d"}, + {L"red.teddy.b@abc.com", L"red.teddy.b@abc.com"}, + {L"abc_@gmail.com", L"abc_@gmail.com"}, // '_' is ok before '@'. + {L"dummy-hi@gmail.com", + L"dummy-hi@gmail.com"}, // '-' is ok in user name. + {L"a..df@gmail.com", L"df@gmail.com"}, // Stop at consecutive '.'. + {L".john@yahoo.com", L"john@yahoo.com"}, // Remove heading '.'. + {L"abc@xyz.org?/", L"abc@xyz.org"}, // Trim ending invalid chars. + {L"fan{abc@xyz.org", L"abc@xyz.org"}, // Trim beginning invalid chars. + {L"fan@g.com..", L"fan@g.com"}, // Trim the ending periods. + {L"CAP.cap@Gmail.Com", L"CAP.cap@Gmail.Com"}, // Keep the original case. + }; + for (int i = 0; i < FX_ArraySize(valid_strs); ++i) { + CFX_WideString text_str(valid_strs[i][0]); + CFX_WideString expected_str(L"mailto:"); + expected_str += valid_strs[i][1]; + EXPECT_TRUE(extractor.CheckMailLink(text_str)); + EXPECT_STREQ(text_str.c_str(), expected_str.c_str()); + } +} diff --git a/core/fpdftext/text_int.h b/core/fpdftext/text_int.h new file mode 100644 index 0000000000..bc110c719b --- /dev/null +++ b/core/fpdftext/text_int.h @@ -0,0 +1,244 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFTEXT_TEXT_INT_H_ +#define CORE_FPDFTEXT_TEXT_INT_H_ + +#include +#include + +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdftext/fpdf_text.h" +#include "core/include/fxcrt/fx_basic.h" + +class CFX_BidiChar; +class CPDF_FormObject; +class CPDF_LinkExtract; +class CPDF_TextPageFind; + +#define FPDFTEXT_CHAR_ERROR -1 +#define FPDFTEXT_CHAR_NORMAL 0 +#define FPDFTEXT_CHAR_GENERATED 1 +#define FPDFTEXT_CHAR_UNUNICODE 2 +#define FPDFTEXT_CHAR_HYPHEN 3 +#define FPDFTEXT_CHAR_PIECE 4 +#define FPDFTEXT_MC_PASS 0 +#define FPDFTEXT_MC_DONE 1 +#define FPDFTEXT_MC_DELAY 2 + +struct PAGECHAR_INFO { + int m_CharCode; + FX_WCHAR m_Unicode; + FX_FLOAT m_OriginX; + FX_FLOAT m_OriginY; + int32_t m_Flag; + CFX_FloatRect m_CharBox; + CPDF_TextObject* m_pTextObj; + CFX_Matrix m_Matrix; + int m_Index; +}; + +struct FPDF_SEGMENT { + int m_Start; + int m_nCount; +}; + +struct PDFTEXT_Obj { + CPDF_TextObject* m_pTextObj; + CFX_Matrix m_formMatrix; +}; + +class CPDF_TextPage : public IPDF_TextPage { + public: + CPDF_TextPage(const CPDF_Page* pPage, int flags); + ~CPDF_TextPage() override {} + + // IPDF_TextPage: + void ParseTextPage() override; + bool IsParsed() const override { return m_bIsParsed; } + int CharIndexFromTextIndex(int TextIndex) const override; + int TextIndexFromCharIndex(int CharIndex) const override; + int CountChars() const override; + void GetCharInfo(int index, FPDF_CHAR_INFO* info) const override; + void GetRectArray(int start, + int nCount, + CFX_RectArray& rectArray) const override; + int GetIndexAtPos(CFX_FloatPoint point, + FX_FLOAT xTolerance, + FX_FLOAT yTolerance) const override; + int GetIndexAtPos(FX_FLOAT x, + FX_FLOAT y, + FX_FLOAT xTolerance, + FX_FLOAT yTolerance) const override; + CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const override; + void GetRectsArrayByRect(const CFX_FloatRect& rect, + CFX_RectArray& resRectArray) const override; + CFX_WideString GetPageText(int start = 0, int nCount = -1) const override; + int CountRects(int start, int nCount) override; + void GetRect(int rectIndex, + FX_FLOAT& left, + FX_FLOAT& top, + FX_FLOAT& right, + FX_FLOAT& bottom) const override; + FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) override; + FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) override; + int CountBoundedSegments(FX_FLOAT left, + FX_FLOAT top, + FX_FLOAT right, + FX_FLOAT bottom, + FX_BOOL bContains = FALSE) override; + void GetBoundedSegment(int index, int& start, int& count) const override; + int GetWordBreak(int index, int direction) const override; + + static FX_BOOL IsRectIntersect(const CFX_FloatRect& rect1, + const CFX_FloatRect& rect2); + static FX_BOOL IsLetter(FX_WCHAR unicode); + + private: + FX_BOOL IsHyphen(FX_WCHAR curChar); + bool IsControlChar(const PAGECHAR_INFO& charInfo); + FX_BOOL GetBaselineRotate(int start, int end, int& Rotate); + void ProcessObject(); + void ProcessFormObject(CPDF_FormObject* pFormObj, + const CFX_Matrix& formMatrix); + void ProcessTextObject(PDFTEXT_Obj pObj); + void ProcessTextObject(CPDF_TextObject* pTextObj, + const CFX_Matrix& formMatrix, + const CPDF_PageObjectList* pObjList, + CPDF_PageObjectList::const_iterator ObjPos); + int ProcessInsertObject(const CPDF_TextObject* pObj, + const CFX_Matrix& formMatrix); + FX_BOOL GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info); + FX_BOOL IsSameAsPreTextObject(CPDF_TextObject* pTextObj, + const CPDF_PageObjectList* pObjList, + CPDF_PageObjectList::const_iterator ObjPos); + FX_BOOL IsSameTextObject(CPDF_TextObject* pTextObj1, + CPDF_TextObject* pTextObj2); + int GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const; + void CloseTempLine(); + void OnPiece(CFX_BidiChar* pBidi, CFX_WideString& str); + int32_t PreMarkedContent(PDFTEXT_Obj pObj); + void ProcessMarkedContent(PDFTEXT_Obj pObj); + void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const; + void FindPreviousTextObject(void); + void AddCharInfoByLRDirection(FX_WCHAR wChar, PAGECHAR_INFO info); + void AddCharInfoByRLDirection(FX_WCHAR wChar, PAGECHAR_INFO info); + int32_t GetTextObjectWritingMode(const CPDF_TextObject* pTextObj); + int32_t FindTextlineFlowDirection(); + + void SwapTempTextBuf(int32_t iCharListStartAppend, int32_t iBufStartAppend); + FX_BOOL IsRightToLeft(const CPDF_TextObject* pTextObj, + const CPDF_Font* pFont, + int nItems) const; + + const CPDF_Page* const m_pPage; + std::vector m_CharIndex; + std::deque m_CharList; + std::deque m_TempCharList; + CFX_WideTextBuf m_TextBuf; + CFX_WideTextBuf m_TempTextBuf; + const int m_parserflag; + CPDF_TextObject* m_pPreTextObj; + CFX_Matrix m_perMatrix; + bool m_bIsParsed; + CFX_Matrix m_DisplayMatrix; + CFX_ArrayTemplate m_Segments; + CFX_RectArray m_SelRects; + CFX_ArrayTemplate m_LineObj; + int32_t m_TextlineDir; + CFX_FloatRect m_CurlineRect; +}; + +class CPDF_TextPageFind : public IPDF_TextPageFind { + public: + explicit CPDF_TextPageFind(const IPDF_TextPage* pTextPage); + ~CPDF_TextPageFind() override {} + + // IPDF_TextPageFind + FX_BOOL FindFirst(const CFX_WideString& findwhat, + int flags, + int startPos = 0) override; + FX_BOOL FindNext() override; + FX_BOOL FindPrev() override; + void GetRectArray(CFX_RectArray& rects) const override; + int GetCurOrder() const override; + int GetMatchedCount() const override; + + protected: + void ExtractFindWhat(const CFX_WideString& findwhat); + FX_BOOL IsMatchWholeWord(const CFX_WideString& csPageText, + int startPos, + int endPos); + FX_BOOL ExtractSubString(CFX_WideString& rString, + const FX_WCHAR* lpszFullString, + int iSubString, + FX_WCHAR chSep); + CFX_WideString MakeReverse(const CFX_WideString& str); + int ReverseFind(const CFX_WideString& csPageText, + const CFX_WideString& csWord, + int nStartPos, + int& WordLength); + int GetCharIndex(int index) const; + + private: + std::vector m_CharIndex; + const IPDF_TextPage* m_pTextPage; + CFX_WideString m_strText; + CFX_WideString m_findWhat; + int m_flags; + std::vector m_csFindWhatArray; + int m_findNextStart; + int m_findPreStart; + FX_BOOL m_bMatchCase; + FX_BOOL m_bMatchWholeWord; + int m_resStart; + int m_resEnd; + CFX_RectArray m_resArray; + FX_BOOL m_IsFind; +}; + +class CPDF_LinkExt { + public: + CPDF_LinkExt() {} + int m_Start; + int m_Count; + CFX_WideString m_strUrl; + virtual ~CPDF_LinkExt() {} +}; + +typedef CFX_ArrayTemplate LINK_InfoArray; + +class CPDF_LinkExtract : public IPDF_LinkExtract { + public: + CPDF_LinkExtract(); + ~CPDF_LinkExtract() override; + + // IPDF_LinkExtract + FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) override; + int CountLinks() const override; + CFX_WideString GetURL(int index) const override; + void GetBoundedSegment(int index, int& start, int& count) const override; + void GetRects(int index, CFX_RectArray& rects) const override; + + FX_BOOL IsExtract() const { return m_bIsParsed; } + + protected: + void ParseLink(); + void DeleteLinkList(); + FX_BOOL CheckWebLink(CFX_WideString& strBeCheck); + bool CheckMailLink(CFX_WideString& str); + void AppendToLinkList(int start, int count, const CFX_WideString& strUrl); + + private: + LINK_InfoArray m_LinkList; + const CPDF_TextPage* m_pTextPage; + CFX_WideString m_strPageText; + bool m_bIsParsed; +}; + +FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst); + +#endif // CORE_FPDFTEXT_TEXT_INT_H_ diff --git a/core/fpdftext/unicodenormalization.cpp b/core/fpdftext/unicodenormalization.cpp new file mode 100644 index 0000000000..6ede1365c4 --- /dev/null +++ b/core/fpdftext/unicodenormalization.cpp @@ -0,0 +1,68 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdftext/unicodenormalizationdata.h" +#include "core/include/fxcrt/fx_string.h" + +const FX_WCHAR* const g_UnicodeData_Normalization_Maps[5] = { + nullptr, g_UnicodeData_Normalization_Map1, g_UnicodeData_Normalization_Map2, + g_UnicodeData_Normalization_Map3, g_UnicodeData_Normalization_Map4}; + +FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst) { + wch = wch & 0xFFFF; + FX_WCHAR wFind = g_UnicodeData_Normalization[wch]; + if (!wFind) { + if (pDst) { + *pDst = wch; + } + return 1; + } + if (wFind >= 0x8000) { + wch = wFind - 0x8000; + wFind = 1; + } else { + wch = wFind & 0x0FFF; + wFind >>= 12; + } + const FX_WCHAR* pMap = g_UnicodeData_Normalization_Maps[wFind]; + if (pMap == g_UnicodeData_Normalization_Map4) { + pMap = g_UnicodeData_Normalization_Map4 + wch; + wFind = (FX_WCHAR)(*pMap++); + } else { + pMap += wch; + } + if (pDst) { + FX_WCHAR n = wFind; + while (n--) { + *pDst++ = *pMap++; + } + } + return (FX_STRSIZE)wFind; +} +FX_STRSIZE FX_WideString_GetNormalization(const CFX_WideStringC& wsSrc, + FX_WCHAR* pDst) { + FX_STRSIZE nCount = 0; + for (FX_STRSIZE len = 0; len < wsSrc.GetLength(); len++) { + FX_WCHAR wch = wsSrc.GetAt(len); + if (pDst) { + nCount += FX_Unicode_GetNormalization(wch, pDst + nCount); + } else { + nCount += FX_Unicode_GetNormalization(wch, pDst); + } + } + return nCount; +} +FX_STRSIZE FX_WideString_GetNormalization(const CFX_WideStringC& wsSrc, + CFX_WideString& wsDst) { + FX_STRSIZE nLen = FX_WideString_GetNormalization(wsSrc, (FX_WCHAR*)NULL); + if (!nLen) { + return 0; + } + FX_WCHAR* pBuf = wsDst.GetBuffer(nLen); + FX_WideString_GetNormalization(wsSrc, pBuf); + wsDst.ReleaseBuffer(nLen); + return nLen; +} diff --git a/core/fpdftext/unicodenormalizationdata.cpp b/core/fpdftext/unicodenormalizationdata.cpp new file mode 100644 index 0000000000..e9f3fbf2e9 --- /dev/null +++ b/core/fpdftext/unicodenormalizationdata.cpp @@ -0,0 +1,8275 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdftext/unicodenormalizationdata.h" +#include "core/include/fxcrt/fx_system.h" + +const FX_WCHAR g_UnicodeData_Normalization[65536] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8001, 0x0000, 0x2000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2002, 0x8002, 0x0000, 0x2004, 0x0000, 0x0000, 0x8003, 0x8004, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8005, 0x0000, 0x8006, + 0x0000, 0x0000, 0x0000, 0x8007, 0x8008, 0x0000, 0x0000, 0x8009, 0x800A, + 0x800B, 0x800C, 0x0000, 0x0000, 0x800D, 0x800E, 0x800F, 0x0000, 0x3000, + 0x3003, 0x3006, 0x0000, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, + 0x0000, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, 0x801B, 0x801C, 0x801D, + 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x0000, + 0x8026, 0x8027, 0x8028, 0x8029, 0x802A, 0x802B, 0x0000, 0x0000, 0x802C, + 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x0000, 0x8032, 0x8033, 0x8034, + 0x8035, 0x8036, 0x8037, 0x8038, 0x8039, 0x803A, 0x0000, 0x803B, 0x803C, + 0x803D, 0x803E, 0x803F, 0x8040, 0x0000, 0x8041, 0x8042, 0x8043, 0x8044, + 0x8045, 0x8046, 0x0000, 0x8047, 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, + 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, + 0x8056, 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, + 0x805F, 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, + 0x8068, 0x8069, 0x806A, 0x806B, 0x806C, 0x806D, 0x806E, 0x806F, 0x8070, + 0x8071, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, 0x8078, 0x0000, + 0x2006, 0x2008, 0x8079, 0x807A, 0x807B, 0x807C, 0x807D, 0x807E, 0x807F, + 0x8080, 0x8081, 0x8082, 0x8083, 0x8084, 0x8085, 0x8086, 0x8087, 0x8088, + 0x8089, 0x808A, 0x808B, 0x808C, 0x808D, 0x808E, 0x0000, 0x0000, 0x808F, + 0x8090, 0x8091, 0x8092, 0x8093, 0x8094, 0x200A, 0x200C, 0x8095, 0x8096, + 0x8097, 0x8098, 0x8099, 0x809A, 0x809B, 0x809C, 0x809D, 0x809E, 0x809F, + 0x80A0, 0x80A1, 0x80A2, 0x80A3, 0x80A4, 0x80A5, 0x80A6, 0x80A7, 0x80A8, + 0x80A9, 0x80AA, 0x80AB, 0x80AC, 0x80AD, 0x80AE, 0x80AF, 0x80B0, 0x80B1, + 0x80B2, 0x80B3, 0x80B4, 0x80B5, 0x80B6, 0x80B7, 0x80B8, 0x80B9, 0x80BA, + 0x80BB, 0x80BC, 0x80BD, 0x80BE, 0x80BF, 0x80C0, 0x80C1, 0x80C2, 0x80C3, + 0x80C4, 0x0000, 0x0000, 0x0000, 0x80C5, 0x80C6, 0x80C7, 0x80C8, 0x80C9, + 0x80CA, 0x0000, 0x80CB, 0x0000, 0x80CC, 0x80CD, 0x80CE, 0x80CF, 0x0000, + 0x0000, 0x0000, 0x80D0, 0x80D1, 0x80D2, 0x80D3, 0x0000, 0x80D4, 0x80D5, + 0x80D6, 0x80D7, 0x80D8, 0x80D9, 0x0000, 0x0000, 0x80DA, 0x80DB, 0x0000, + 0x0000, 0x0000, 0x0000, 0x80DC, 0x80DD, 0x80DE, 0x80DF, 0x80E0, 0x80E1, + 0x80E2, 0x0000, 0x80E3, 0x80E4, 0x80E5, 0x80E6, 0x80E7, 0x0000, 0x80E8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x200E, 0x2010, 0x2012, 0x2014, 0x2016, 0x2018, 0x201A, + 0x201C, 0x201E, 0x80E9, 0x80EA, 0x80EB, 0x80EC, 0x80ED, 0x80EE, 0x80EF, + 0x80F0, 0x80F1, 0x80F2, 0x80F3, 0x80F4, 0x80F5, 0x80F6, 0x80F7, 0x80F8, + 0x80F9, 0x80FA, 0x80FB, 0x80FC, 0x80FD, 0x80FE, 0x80FF, 0x8100, 0x8101, + 0x8102, 0x8103, 0x8104, 0x8105, 0x8106, 0x8107, 0x8108, 0x8109, 0x810A, + 0x810B, 0x810C, 0x2020, 0x2022, 0x2024, 0x810D, 0x810E, 0x0000, 0x0000, + 0x810F, 0x8110, 0x8111, 0x8112, 0x8113, 0x8114, 0x8115, 0x8116, 0x8117, + 0x8118, 0x8119, 0x811A, 0x811B, 0x811C, 0x811D, 0x811E, 0x811F, 0x8120, + 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128, 0x8129, + 0x812A, 0x812B, 0x812C, 0x812D, 0x812E, 0x812F, 0x8130, 0x8131, 0x8132, + 0x0000, 0x0000, 0x8133, 0x8134, 0x8135, 0x8136, 0x0000, 0x0000, 0x8137, + 0x8138, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D, 0x813E, 0x813F, 0x8140, + 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149, + 0x814A, 0x2026, 0x2028, 0x814B, 0x814C, 0x814D, 0x814E, 0x814F, 0x8150, + 0x8151, 0x0000, 0x0000, 0x8152, 0x8153, 0x8154, 0x8155, 0x8156, 0x8157, + 0x8158, 0x8159, 0x815A, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x0000, + 0x8160, 0x8161, 0x8162, 0x8163, 0x8164, 0x8165, 0x8166, 0x0000, 0x8167, + 0x8168, 0x8169, 0x816A, 0x816B, 0x816C, 0x816D, 0x816E, 0x816F, 0x0000, + 0x0000, 0x8170, 0x8171, 0x0000, 0x8172, 0x0000, 0x8173, 0x8174, 0x8175, + 0x8176, 0x0000, 0x8177, 0x8178, 0x8179, 0x817A, 0x817B, 0x817C, 0x817D, + 0x202A, 0x0000, 0x0000, 0x817E, 0x817F, 0x8180, 0x8181, 0x8182, 0x8183, + 0x8184, 0x8185, 0x8186, 0x8187, 0x0000, 0x8188, 0x8189, 0x818A, 0x818B, + 0x818C, 0x818D, 0x0000, 0x818E, 0x818F, 0x8190, 0x8191, 0x8192, 0x8193, + 0x8194, 0x0000, 0x8195, 0x0000, 0x0000, 0x0000, 0x8196, 0x0000, 0x8197, + 0x8198, 0x8199, 0x819A, 0x819B, 0x819C, 0x819D, 0x819E, 0x0000, 0x0000, + 0x202C, 0x202E, 0x2030, 0x2032, 0x2034, 0x2036, 0x2038, 0x203A, 0x203C, + 0x0000, 0x0000, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A3, 0x81A4, 0x81A5, + 0x81A6, 0x81A7, 0x81A8, 0x81A9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81AA, 0x81AB, + 0x81AC, 0x81AD, 0x81AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x81AF, 0x81B0, 0x0000, 0x81B1, 0x81B2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x81B3, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, + 0x81B9, 0x81BA, 0x81BB, 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x0000, 0x0000, + 0x0000, 0x0000, 0x81C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x81C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x81C2, 0x81C3, 0x81C4, 0x81C5, 0x81C6, 0x81C7, 0x81C8, 0x0000, 0x81C9, + 0x0000, 0x81CA, 0x81CB, 0x81CC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, 0x81D2, 0x81D3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81D4, 0x81D5, + 0x81D6, 0x81D7, 0x81D8, 0x0000, 0x81D9, 0x81DA, 0x81DB, 0x81DC, 0x81DD, + 0x81DE, 0x81DF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x81E0, 0x81E1, 0x81E2, 0x0000, 0x81E3, 0x81E4, 0x0000, 0x0000, 0x0000, + 0x81E5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81E6, 0x81E7, + 0x0000, 0x81E8, 0x0000, 0x0000, 0x0000, 0x81E9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x81EA, 0x81EB, 0x81EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81ED, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x81EE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81EF, 0x81F0, 0x0000, + 0x81F1, 0x0000, 0x0000, 0x0000, 0x81F2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x81F3, 0x81F4, 0x81F5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x81F6, 0x81F7, 0x0000, 0x0000, 0x81F8, 0x81F9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81FA, + 0x81FB, 0x0000, 0x0000, 0x0000, 0x0000, 0x81FC, 0x81FD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x81FE, 0x81FF, 0x0000, 0x0000, 0x8200, 0x8201, 0x8202, 0x8203, + 0x8204, 0x8205, 0x8206, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B, 0x820C, + 0x820D, 0x820E, 0x820F, 0x8210, 0x8211, 0x8212, 0x8213, 0x8214, 0x8215, + 0x203E, 0x2040, 0x8216, 0x8217, 0x0000, 0x0000, 0x8218, 0x8219, 0x821A, + 0x821B, 0x0000, 0x0000, 0x821C, 0x821D, 0x821E, 0x821F, 0x2042, 0x2044, + 0x8220, 0x8221, 0x8222, 0x8223, 0x0000, 0x0000, 0x8224, 0x8225, 0x8226, + 0x8227, 0x0000, 0x8228, 0x8229, 0x822A, 0x822B, 0x822C, 0x822D, 0x822E, + 0x822F, 0x8230, 0x8231, 0x0000, 0x0000, 0x8232, 0x8233, 0x0000, 0x8234, + 0x8235, 0x8236, 0x8237, 0x2046, 0x2048, 0x8238, 0x8239, 0x0000, 0x0000, + 0x823A, 0x823B, 0x823C, 0x823D, 0x823E, 0x823F, 0x0000, 0x0000, 0x8240, + 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x0000, 0x0000, 0x8246, 0x8247, + 0x8248, 0x8249, 0x824A, 0x824B, 0x824C, 0x824D, 0x824E, 0x824F, 0x8250, + 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8258, 0x8259, + 0x825A, 0x825B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x825C, 0x825D, 0x825E, 0x825F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x204A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x204C, 0x204E, 0x2050, + 0x2052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2054, 0x0000, 0x2056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2058, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x205A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x205C, 0x0000, 0x0000, 0x205E, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2060, 0x2062, + 0x2064, 0x2066, 0x2068, 0x206A, 0x206C, 0x206E, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2070, 0x2072, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2074, 0x2076, 0x0000, 0x2078, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x207A, 0x0000, 0x0000, 0x207C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x207E, 0x2080, 0x2082, 0x0000, 0x0000, 0x2084, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2086, + 0x0000, 0x0000, 0x2088, 0x208A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x208C, 0x208E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2090, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2092, 0x2094, 0x2096, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2098, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x209A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x209C, 0x209E, 0x0000, 0x20A0, 0x20A2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20A4, 0x20A6, 0x20A8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20AA, 0x0000, 0x20AC, 0x20AE, 0x20B0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20B2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x20B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20B6, 0x20B8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8260, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x20BA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x20BC, 0x0000, 0x0000, 0x0000, 0x0000, 0x20BE, 0x0000, + 0x0000, 0x0000, 0x0000, 0x20C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x20C2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x20C4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x20C6, 0x0000, 0x20C8, 0x20CA, 0x20CC, + 0x20CE, 0x20D0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20D2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20D4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x20D6, 0x0000, 0x0000, 0x0000, 0x0000, 0x20D8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x20DA, 0x0000, 0x0000, 0x0000, 0x0000, 0x20DC, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x20DE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x20E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8261, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20E2, 0x0000, 0x20E4, + 0x0000, 0x20E6, 0x0000, 0x20E8, 0x0000, 0x20EA, 0x0000, 0x0000, 0x0000, + 0x20EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20EE, 0x0000, 0x20F0, 0x0000, + 0x0000, 0x20F2, 0x20F4, 0x0000, 0x20F6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8262, 0x8263, + 0x8264, 0x8265, 0x8266, 0x8267, 0x8268, 0x8269, 0x826A, 0x826B, 0x826C, + 0x826D, 0x826E, 0x826F, 0x8270, 0x0000, 0x8271, 0x8272, 0x8273, 0x8274, + 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827A, 0x827B, 0x827C, 0x827D, + 0x827E, 0x827F, 0x8280, 0x8281, 0x8282, 0x0000, 0x8283, 0x8284, 0x8285, + 0x8286, 0x8287, 0x8288, 0x8289, 0x828A, 0x828B, 0x828C, 0x828D, 0x828E, + 0x828F, 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, + 0x8298, 0x8299, 0x829A, 0x829B, 0x829C, 0x829D, 0x829E, 0x0000, 0x829F, + 0x82A0, 0x82A1, 0x82A2, 0x82A3, 0x82A4, 0x82A5, 0x82A6, 0x82A7, 0x82A8, + 0x82A9, 0x82AA, 0x82AB, 0x0000, 0x20F8, 0x82AC, 0x0000, 0x82AD, 0x82AE, + 0x82AF, 0x82B0, 0x82B1, 0x82B2, 0x82B3, 0x82B4, 0x82B5, 0x82B6, 0x82B7, + 0x82B8, 0x82B9, 0x82BA, 0x82BB, 0x82BC, 0x82BD, 0x82BE, 0x82BF, 0x82C0, + 0x82C1, 0x82C2, 0x82C3, 0x82C4, 0x82C5, 0x82C6, 0x0000, 0x82C7, 0x0000, + 0x0000, 0x82C8, 0x82C9, 0x82CA, 0x82CB, 0x82CC, 0x82CD, 0x82CE, 0x82CF, + 0x82D0, 0x82D1, 0x82D2, 0x82D3, 0x82D4, 0x82D5, 0x82D6, 0x82D7, 0x82D8, + 0x82D9, 0x82DA, 0x82DB, 0x82DC, 0x82DD, 0x82DE, 0x82DF, 0x82E0, 0x82E1, + 0x82E2, 0x82E3, 0x82E4, 0x82E5, 0x82E6, 0x82E7, 0x82E8, 0x82E9, 0x82EA, + 0x82EB, 0x82EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x82ED, 0x82EE, 0x82EF, 0x82F0, 0x82F1, 0x82F2, + 0x82F3, 0x82F4, 0x82F5, 0x82F6, 0x82F7, 0x82F8, 0x82F9, 0x82FA, 0x82FB, + 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, 0x8301, 0x8302, 0x8303, 0x8304, + 0x8305, 0x8306, 0x8307, 0x8308, 0x8309, 0x830A, 0x830B, 0x830C, 0x830D, + 0x830E, 0x830F, 0x8310, 0x8311, 0x8312, 0x8313, 0x8314, 0x8315, 0x8316, + 0x8317, 0x8318, 0x8319, 0x831A, 0x831B, 0x831C, 0x831D, 0x831E, 0x831F, + 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8327, 0x8328, + 0x8329, 0x832A, 0x832B, 0x832C, 0x832D, 0x832E, 0x832F, 0x8330, 0x8331, + 0x8332, 0x8333, 0x8334, 0x8335, 0x8336, 0x8337, 0x8338, 0x8339, 0x833A, + 0x833B, 0x833C, 0x833D, 0x833E, 0x833F, 0x8340, 0x8341, 0x8342, 0x8343, + 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834A, 0x834B, 0x834C, + 0x834D, 0x834E, 0x834F, 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, + 0x8356, 0x8357, 0x8358, 0x8359, 0x835A, 0x835B, 0x835C, 0x835D, 0x835E, + 0x835F, 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, + 0x8368, 0x8369, 0x836A, 0x836B, 0x836C, 0x836D, 0x836E, 0x836F, 0x8370, + 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, 0x8378, 0x8379, + 0x837A, 0x837B, 0x837C, 0x837D, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382, + 0x8383, 0x8384, 0x8385, 0x8386, 0x8387, 0x8388, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8389, 0x838A, 0x838B, 0x838C, 0x838D, 0x838E, 0x838F, 0x8390, + 0x8391, 0x8392, 0x8393, 0x8394, 0x8395, 0x8396, 0x8397, 0x8398, 0x8399, + 0x839A, 0x839B, 0x839C, 0x839D, 0x839E, 0x839F, 0x83A0, 0x83A1, 0x83A2, + 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83A8, 0x83A9, 0x83AA, 0x83AB, + 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B0, 0x83B1, 0x83B2, 0x83B3, 0x83B4, + 0x83B5, 0x83B6, 0x83B7, 0x83B8, 0x83B9, 0x83BA, 0x83BB, 0x83BC, 0x83BD, + 0x83BE, 0x83BF, 0x83C0, 0x83C1, 0x83C2, 0x83C3, 0x83C4, 0x83C5, 0x83C6, + 0x83C7, 0x83C8, 0x83C9, 0x83CA, 0x83CB, 0x83CC, 0x83CD, 0x83CE, 0x83CF, + 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D4, 0x83D5, 0x83D6, 0x83D7, 0x83D8, + 0x83D9, 0x83DA, 0x83DB, 0x83DC, 0x83DD, 0x83DE, 0x83DF, 0x83E0, 0x83E1, + 0x83E2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x83E3, 0x83E4, + 0x83E5, 0x83E6, 0x83E7, 0x83E8, 0x83E9, 0x83EA, 0x83EB, 0x83EC, 0x83ED, + 0x83EE, 0x83EF, 0x83F0, 0x83F1, 0x83F2, 0x83F3, 0x83F4, 0x83F5, 0x83F6, + 0x83F7, 0x83F8, 0x0000, 0x0000, 0x83F9, 0x83FA, 0x83FB, 0x83FC, 0x83FD, + 0x83FE, 0x0000, 0x0000, 0x83FF, 0x8400, 0x8401, 0x8402, 0x8403, 0x8404, + 0x8405, 0x8406, 0x8407, 0x8408, 0x8409, 0x840A, 0x840B, 0x840C, 0x840D, + 0x840E, 0x840F, 0x8410, 0x8411, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, + 0x8417, 0x8418, 0x8419, 0x841A, 0x841B, 0x841C, 0x841D, 0x841E, 0x841F, + 0x8420, 0x8421, 0x8422, 0x8423, 0x8424, 0x0000, 0x0000, 0x8425, 0x8426, + 0x8427, 0x8428, 0x8429, 0x842A, 0x0000, 0x0000, 0x842B, 0x842C, 0x842D, + 0x842E, 0x842F, 0x8430, 0x8431, 0x8432, 0x0000, 0x8433, 0x0000, 0x8434, + 0x0000, 0x8435, 0x0000, 0x8436, 0x8437, 0x8438, 0x8439, 0x843A, 0x843B, + 0x843C, 0x843D, 0x843E, 0x843F, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, + 0x8445, 0x8446, 0x8447, 0x8448, 0x8449, 0x844A, 0x844B, 0x844C, 0x844D, + 0x844E, 0x844F, 0x8450, 0x8451, 0x8452, 0x8453, 0x8454, 0x0000, 0x0000, + 0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845A, 0x845B, 0x845C, 0x845D, + 0x845E, 0x845F, 0x8460, 0x8461, 0x8462, 0x8463, 0x8464, 0x8465, 0x8466, + 0x8467, 0x8468, 0x8469, 0x846A, 0x846B, 0x846C, 0x846D, 0x846E, 0x846F, + 0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476, 0x8477, 0x8478, + 0x8479, 0x847A, 0x847B, 0x847C, 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, + 0x8482, 0x8483, 0x8484, 0x8485, 0x8486, 0x8487, 0x8488, 0x8489, 0x0000, + 0x848A, 0x848B, 0x848C, 0x848D, 0x848E, 0x848F, 0x8490, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8491, 0x8492, 0x8493, 0x0000, 0x8494, 0x8495, + 0x8496, 0x8497, 0x8498, 0x8499, 0x849A, 0x0000, 0x0000, 0x0000, 0x849B, + 0x849C, 0x849D, 0x849E, 0x0000, 0x0000, 0x849F, 0x84A0, 0x84A1, 0x84A2, + 0x84A3, 0x84A4, 0x0000, 0x0000, 0x0000, 0x0000, 0x84A5, 0x84A6, 0x84A7, + 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84AF, 0x84B0, + 0x84B1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84B2, 0x84B3, 0x84B4, + 0x0000, 0x84B5, 0x84B6, 0x84B7, 0x84B8, 0x84B9, 0x84BA, 0x84BB, 0x84BC, + 0x84BD, 0x0000, 0x84BE, 0x84BF, 0x84C0, 0x84C1, 0x84C2, 0x84C3, 0x84C4, + 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x84C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84CA, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x84CB, 0x20FA, 0x3009, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x84CC, 0x0000, 0x0000, 0x0000, 0x20FC, + 0x300C, 0x0000, 0x20FE, 0x300F, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, + 0x0000, 0x2102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2104, 0x2106, 0x2108, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84CD, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84CE, 0x84CF, 0x0000, + 0x0000, 0x84D0, 0x84D1, 0x84D2, 0x84D3, 0x84D4, 0x84D5, 0x84D6, 0x84D7, + 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DD, 0x84DE, 0x84DF, 0x84E0, + 0x84E1, 0x84E2, 0x84E3, 0x84E4, 0x84E5, 0x84E6, 0x84E7, 0x84E8, 0x84E9, + 0x84EA, 0x0000, 0x84EB, 0x84EC, 0x84ED, 0x84EE, 0x84EF, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x210A, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3012, 0x3015, 0x84F0, + 0x210C, 0x0000, 0x3018, 0x301B, 0x84F1, 0x0000, 0x210E, 0x84F2, 0x84F3, + 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0x84F9, 0x84FA, 0x84FB, 0x0000, + 0x84FC, 0x2110, 0x0000, 0x0000, 0x84FD, 0x84FE, 0x84FF, 0x8500, 0x8501, + 0x8502, 0x8503, 0x2112, 0x301E, 0x2114, 0x8504, 0x8505, 0x0000, 0x8506, + 0x8507, 0x8508, 0x0000, 0x8509, 0x850A, 0x850B, 0x850C, 0x850D, 0x850E, + 0x850F, 0x8510, 0x0000, 0x8511, 0x8512, 0x8513, 0x8514, 0x8515, 0x8516, + 0x8517, 0x0000, 0x3021, 0x8518, 0x8519, 0x851A, 0x851B, 0x851C, 0x0000, + 0x0000, 0x0000, 0x0000, 0x851D, 0x851E, 0x851F, 0x8520, 0x8521, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3024, 0x3027, 0x4005, 0x302A, + 0x302D, 0x3030, 0x3033, 0x3036, 0x3039, 0x303C, 0x303F, 0x3042, 0x3045, + 0x3048, 0x304B, 0x2116, 0x8522, 0x2118, 0x304E, 0x211A, 0x8523, 0x211C, + 0x3051, 0x400A, 0x211E, 0x8524, 0x2120, 0x3054, 0x8525, 0x8526, 0x8527, + 0x8528, 0x8529, 0x2122, 0x3057, 0x2124, 0x852A, 0x2126, 0x305A, 0x400F, + 0x2128, 0x852B, 0x212A, 0x305D, 0x852C, 0x852D, 0x852E, 0x852F, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3060, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212C, 0x212E, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2130, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2132, 0x2134, 0x2136, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8530, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8531, 0x0000, 0x0000, 0x8532, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2138, 0x0000, 0x213A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x213C, 0x3063, 0x0000, 0x213E, 0x3066, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2140, 0x0000, 0x0000, 0x2142, 0x0000, 0x0000, + 0x2144, 0x0000, 0x2146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2148, 0x0000, + 0x214A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x214C, 0x214E, 0x2150, 0x2152, 0x2154, 0x0000, 0x0000, + 0x2156, 0x2158, 0x0000, 0x0000, 0x215A, 0x215C, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x215E, 0x2160, 0x0000, 0x0000, 0x2162, 0x2164, + 0x0000, 0x0000, 0x2166, 0x2168, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x216A, 0x216C, 0x216E, 0x2170, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2172, 0x2174, 0x2176, 0x2178, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x217A, 0x217C, 0x217E, 0x2180, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8533, 0x8534, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3069, 0x306C, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x2182, + 0x2184, 0x2186, 0x2188, 0x218A, 0x218C, 0x218E, 0x2190, 0x3081, 0x3084, + 0x3087, 0x308A, 0x308D, 0x3090, 0x3093, 0x3096, 0x3099, 0x2192, 0x309C, + 0x309F, 0x2194, 0x2196, 0x2198, 0x219A, 0x219C, 0x30A2, 0x8535, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8536, 0x8537, 0x8538, + 0x8539, 0x853A, 0x853B, 0x853C, 0x853D, 0x853E, 0x219E, 0x21A0, 0x21A2, + 0x21A4, 0x21A6, 0x21A8, 0x21AA, 0x21AC, 0x21AE, 0x21B0, 0x21B2, 0x30A5, + 0x30A8, 0x30AB, 0x30AE, 0x30B1, 0x30B4, 0x30B7, 0x30BA, 0x30BD, 0x4014, + 0x4019, 0x401E, 0x4023, 0x4028, 0x402D, 0x4032, 0x4037, 0x403C, 0x4041, + 0x4046, 0x21B4, 0x21B6, 0x21B8, 0x21BA, 0x21BC, 0x21BE, 0x21C0, 0x21C2, + 0x21C4, 0x30C0, 0x30C3, 0x30C6, 0x30C9, 0x30CC, 0x30CF, 0x30D2, 0x30D5, + 0x30D8, 0x30DB, 0x30DE, 0x30E1, 0x30E4, 0x30E7, 0x30EA, 0x30ED, 0x30F0, + 0x30F3, 0x30F6, 0x30F9, 0x30FC, 0x30FF, 0x3102, 0x3105, 0x3108, 0x310B, + 0x310E, 0x3111, 0x3114, 0x3117, 0x311A, 0x311D, 0x3120, 0x3123, 0x3126, + 0x3129, 0x312C, 0x853F, 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, + 0x8546, 0x8547, 0x8548, 0x8549, 0x854A, 0x854B, 0x854C, 0x854D, 0x854E, + 0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, + 0x8558, 0x8559, 0x855A, 0x855B, 0x855C, 0x855D, 0x855E, 0x855F, 0x8560, + 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567, 0x8568, 0x8569, + 0x856A, 0x856B, 0x856C, 0x856D, 0x856E, 0x856F, 0x8570, 0x8571, 0x8572, + 0x8573, 0x21C6, 0x21C8, 0x21CA, 0x21CC, 0x21CE, 0x21D0, 0x21D2, 0x21D4, + 0x21D6, 0x21D8, 0x8574, 0x8575, 0x8576, 0x8577, 0x8578, 0x8579, 0x857A, + 0x857B, 0x857C, 0x21DA, 0x857D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x857E, 0x857F, 0x8580, 0x8581, 0x8582, + 0x8583, 0x8584, 0x8585, 0x8586, 0x21DC, 0x8587, 0x8588, 0x8589, 0x858A, + 0x858B, 0x858C, 0x858D, 0x858E, 0x858F, 0x21DE, 0x8590, 0x8591, 0x8592, + 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x21E0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x404B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x312F, 0x21E2, 0x3132, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x21E4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8599, 0x859A, 0x859B, 0x859C, 0x859D, 0x859E, 0x859F, + 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A4, 0x85A5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x85A6, 0x85A7, 0x85A8, 0x85A9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x85AA, 0x85AB, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x85AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x85AD, 0x85AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85AF, + 0x0000, 0x0000, 0x85B0, 0x0000, 0x85B1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85B2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x85B3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x85B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85B5, 0x85B6, 0x0000, + 0x0000, 0x0000, 0x85B7, 0x85B8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x85B9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85BA, + 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C1, 0x85C2, 0x85C3, + 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85C9, 0x85CA, 0x85CB, 0x85CC, + 0x85CD, 0x85CE, 0x85CF, 0x85D0, 0x85D1, 0x85D2, 0x85D3, 0x85D4, 0x85D5, + 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, 0x85DC, 0x85DD, 0x85DE, + 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E4, 0x85E5, 0x85E6, 0x85E7, + 0x85E8, 0x85E9, 0x85EA, 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, 0x85F0, + 0x85F1, 0x85F2, 0x85F3, 0x85F4, 0x85F5, 0x85F6, 0x85F7, 0x85F8, 0x85F9, + 0x85FA, 0x85FB, 0x85FC, 0x85FD, 0x85FE, 0x85FF, 0x8600, 0x8601, 0x8602, + 0x8603, 0x8604, 0x8605, 0x8606, 0x8607, 0x8608, 0x8609, 0x860A, 0x860B, + 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8611, 0x8612, 0x8613, 0x8614, + 0x8615, 0x8616, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, 0x861C, 0x861D, + 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, + 0x8627, 0x8628, 0x8629, 0x862A, 0x862B, 0x862C, 0x862D, 0x862E, 0x862F, + 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, 0x8638, + 0x8639, 0x863A, 0x863B, 0x863C, 0x863D, 0x863E, 0x863F, 0x8640, 0x8641, + 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864A, + 0x864B, 0x864C, 0x864D, 0x864E, 0x864F, 0x8650, 0x8651, 0x8652, 0x8653, + 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865A, 0x865B, 0x865C, + 0x865D, 0x865E, 0x865F, 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8665, + 0x8666, 0x8667, 0x8668, 0x8669, 0x866A, 0x866B, 0x866C, 0x866D, 0x866E, + 0x866F, 0x8670, 0x8671, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, + 0x8678, 0x8679, 0x867A, 0x867B, 0x867C, 0x867D, 0x867E, 0x867F, 0x8680, + 0x8681, 0x8682, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, 0x8689, + 0x868A, 0x868B, 0x868C, 0x868D, 0x868E, 0x868F, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8690, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8691, 0x0000, 0x8692, 0x8693, 0x8694, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x21E6, 0x0000, + 0x21E8, 0x0000, 0x21EA, 0x0000, 0x21EC, 0x0000, 0x21EE, 0x0000, 0x21F0, + 0x0000, 0x21F2, 0x0000, 0x21F4, 0x0000, 0x21F6, 0x0000, 0x21F8, 0x0000, + 0x21FA, 0x0000, 0x21FC, 0x0000, 0x0000, 0x21FE, 0x0000, 0x2200, 0x0000, + 0x2202, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2204, 0x2206, + 0x0000, 0x2208, 0x220A, 0x0000, 0x220C, 0x220E, 0x0000, 0x2210, 0x2212, + 0x0000, 0x2214, 0x2216, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2218, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x221A, 0x221C, 0x0000, 0x221E, + 0x2220, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2222, 0x0000, 0x2224, 0x0000, 0x2226, + 0x0000, 0x2228, 0x0000, 0x222A, 0x0000, 0x222C, 0x0000, 0x222E, 0x0000, + 0x2230, 0x0000, 0x2232, 0x0000, 0x2234, 0x0000, 0x2236, 0x0000, 0x2238, + 0x0000, 0x0000, 0x223A, 0x0000, 0x223C, 0x0000, 0x223E, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2240, 0x2242, 0x0000, 0x2244, 0x2246, + 0x0000, 0x2248, 0x224A, 0x0000, 0x224C, 0x224E, 0x0000, 0x2250, 0x2252, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2254, 0x0000, 0x0000, 0x2256, 0x2258, + 0x225A, 0x225C, 0x0000, 0x0000, 0x0000, 0x225E, 0x2260, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8695, 0x8696, 0x8697, 0x8698, 0x8699, 0x869A, 0x869B, + 0x869C, 0x869D, 0x869E, 0x869F, 0x86A0, 0x86A1, 0x86A2, 0x86A3, 0x86A4, + 0x86A5, 0x86A6, 0x86A7, 0x86A8, 0x86A9, 0x86AA, 0x86AB, 0x86AC, 0x86AD, + 0x86AE, 0x86AF, 0x86B0, 0x86B1, 0x86B2, 0x86B3, 0x86B4, 0x86B5, 0x86B6, + 0x86B7, 0x86B8, 0x86B9, 0x86BA, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, + 0x86C0, 0x86C1, 0x86C2, 0x86C3, 0x86C4, 0x86C5, 0x86C6, 0x86C7, 0x86C8, + 0x86C9, 0x86CA, 0x86CB, 0x86CC, 0x86CD, 0x86CE, 0x86CF, 0x86D0, 0x86D1, + 0x86D2, 0x86D3, 0x86D4, 0x86D5, 0x86D6, 0x86D7, 0x86D8, 0x86D9, 0x86DA, + 0x86DB, 0x86DC, 0x86DD, 0x86DE, 0x86DF, 0x86E0, 0x86E1, 0x86E2, 0x86E3, + 0x86E4, 0x86E5, 0x86E6, 0x86E7, 0x86E8, 0x86E9, 0x86EA, 0x86EB, 0x86EC, + 0x86ED, 0x86EE, 0x86EF, 0x86F0, 0x86F1, 0x86F2, 0x0000, 0x0000, 0x0000, + 0x86F3, 0x86F4, 0x86F5, 0x86F6, 0x86F7, 0x86F8, 0x86F9, 0x86FA, 0x86FB, + 0x86FC, 0x86FD, 0x86FE, 0x86FF, 0x8700, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3135, 0x3138, 0x313B, 0x313E, 0x3141, 0x3144, 0x3147, + 0x314A, 0x314D, 0x3150, 0x3153, 0x3156, 0x3159, 0x315C, 0x4050, 0x4055, + 0x405A, 0x405F, 0x4064, 0x4069, 0x406E, 0x4073, 0x4078, 0x407D, 0x4082, + 0x4087, 0x408C, 0x4091, 0x4096, 0x409B, 0x40A3, 0x0000, 0x315F, 0x3162, + 0x3165, 0x3168, 0x316B, 0x316E, 0x3171, 0x3174, 0x3177, 0x317A, 0x317D, + 0x3180, 0x3183, 0x3186, 0x3189, 0x318C, 0x318F, 0x3192, 0x3195, 0x3198, + 0x319B, 0x319E, 0x31A1, 0x31A4, 0x31A7, 0x31AA, 0x31AD, 0x31B0, 0x31B3, + 0x31B6, 0x31B9, 0x31BC, 0x31BF, 0x31C2, 0x31C5, 0x31C8, 0x8701, 0x8702, + 0x8703, 0x8704, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x31CB, 0x2262, 0x2264, 0x2266, 0x2268, 0x226A, 0x226C, 0x226E, + 0x2270, 0x2272, 0x2274, 0x2276, 0x2278, 0x227A, 0x227C, 0x227E, 0x8705, + 0x8706, 0x8707, 0x8708, 0x8709, 0x870A, 0x870B, 0x870C, 0x870D, 0x870E, + 0x870F, 0x8710, 0x8711, 0x8712, 0x2280, 0x2282, 0x2284, 0x2286, 0x2288, + 0x228A, 0x228C, 0x228E, 0x2290, 0x2292, 0x2294, 0x2296, 0x2298, 0x229A, + 0x40AA, 0x40B0, 0x229C, 0x0000, 0x8713, 0x8714, 0x8715, 0x8716, 0x8717, + 0x8718, 0x8719, 0x871A, 0x871B, 0x871C, 0x871D, 0x871E, 0x871F, 0x8720, + 0x8721, 0x8722, 0x8723, 0x8724, 0x8725, 0x8726, 0x8727, 0x8728, 0x8729, + 0x872A, 0x872B, 0x872C, 0x872D, 0x872E, 0x872F, 0x8730, 0x8731, 0x8732, + 0x8733, 0x8734, 0x8735, 0x8736, 0x8737, 0x8738, 0x8739, 0x873A, 0x873B, + 0x873C, 0x873D, 0x873E, 0x873F, 0x8740, 0x8741, 0x8742, 0x8743, 0x229E, + 0x22A0, 0x22A2, 0x22A4, 0x22A6, 0x22A8, 0x22AA, 0x22AC, 0x22AE, 0x22B0, + 0x22B2, 0x22B4, 0x22B6, 0x22B8, 0x22BA, 0x22BC, 0x22BE, 0x22C0, 0x22C2, + 0x22C4, 0x22C6, 0x22C8, 0x22CA, 0x22CC, 0x31CE, 0x31D1, 0x31D4, 0x22CE, + 0x31D7, 0x22D0, 0x31DA, 0x8744, 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, + 0x874A, 0x874B, 0x874C, 0x874D, 0x874E, 0x874F, 0x8750, 0x8751, 0x8752, + 0x8753, 0x8754, 0x8755, 0x8756, 0x8757, 0x8758, 0x8759, 0x875A, 0x875B, + 0x875C, 0x875D, 0x875E, 0x875F, 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, + 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D, + 0x876E, 0x876F, 0x8770, 0x8771, 0x8772, 0x0000, 0x40B5, 0x40BA, 0x40BF, + 0x31DD, 0x40C4, 0x31E0, 0x31E3, 0x40C9, 0x40CF, 0x31E6, 0x31E9, 0x31EC, + 0x40D4, 0x40D9, 0x31EF, 0x31F2, 0x22D2, 0x31F5, 0x40DE, 0x40E3, 0x22D4, + 0x40E8, 0x40EE, 0x40F5, 0x31F8, 0x40FB, 0x4101, 0x4107, 0x31FB, 0x31FE, + 0x3201, 0x410C, 0x4111, 0x4117, 0x3204, 0x3207, 0x320A, 0x22D6, 0x22D8, + 0x22DA, 0x22DC, 0x320D, 0x3210, 0x411C, 0x3213, 0x4122, 0x4127, 0x3216, + 0x22DE, 0x22E0, 0x412D, 0x4133, 0x4138, 0x3219, 0x413E, 0x22E2, 0x321C, + 0x321F, 0x3222, 0x3225, 0x3228, 0x4144, 0x322B, 0x22E4, 0x322E, 0x3231, + 0x3234, 0x4149, 0x3237, 0x323A, 0x323D, 0x414E, 0x4154, 0x22E6, 0x4159, + 0x22E8, 0x415F, 0x4164, 0x3240, 0x3243, 0x3246, 0x4169, 0x22EA, 0x3249, + 0x416E, 0x22EC, 0x4173, 0x324C, 0x22EE, 0x22F0, 0x22F2, 0x22F4, 0x22F6, + 0x22F8, 0x22FA, 0x22FC, 0x22FE, 0x2300, 0x324F, 0x3252, 0x3255, 0x3258, + 0x325B, 0x325E, 0x3261, 0x3264, 0x3267, 0x326A, 0x326D, 0x3270, 0x3273, + 0x3276, 0x3279, 0x327C, 0x2302, 0x2304, 0x327F, 0x2306, 0x2308, 0x230A, + 0x3282, 0x3285, 0x230C, 0x230E, 0x2310, 0x2312, 0x2314, 0x4179, 0x2316, + 0x2318, 0x231A, 0x231C, 0x231E, 0x2320, 0x2322, 0x2324, 0x3288, 0x417E, + 0x2326, 0x2328, 0x232A, 0x232C, 0x232E, 0x2330, 0x2332, 0x328B, 0x328E, + 0x3291, 0x3294, 0x2334, 0x2336, 0x2338, 0x233A, 0x233C, 0x233E, 0x2340, + 0x2342, 0x2344, 0x2346, 0x3297, 0x329A, 0x2348, 0x329D, 0x32A0, 0x32A3, + 0x234A, 0x32A6, 0x32A9, 0x4183, 0x234C, 0x32AC, 0x32AF, 0x32B2, 0x32B5, + 0x4188, 0x418E, 0x234E, 0x2350, 0x2352, 0x2354, 0x2356, 0x2358, 0x235A, + 0x235C, 0x235E, 0x2360, 0x2362, 0x2364, 0x2366, 0x2368, 0x236A, 0x236C, + 0x236E, 0x2370, 0x4195, 0x2372, 0x2374, 0x2376, 0x419A, 0x32B8, 0x2378, + 0x237A, 0x237C, 0x237E, 0x2380, 0x2382, 0x2384, 0x2386, 0x2388, 0x238A, + 0x32BB, 0x238C, 0x238E, 0x32BE, 0x32C1, 0x2390, 0x419F, 0x32C4, 0x2392, + 0x2394, 0x2396, 0x2398, 0x32C7, 0x32CA, 0x239A, 0x239C, 0x239E, 0x23A0, + 0x23A2, 0x23A4, 0x23A6, 0x23A8, 0x23AA, 0x32CD, 0x32D0, 0x32D3, 0x32D6, + 0x32D9, 0x32DC, 0x32DF, 0x32E2, 0x32E5, 0x32E8, 0x32EB, 0x32EE, 0x32F1, + 0x32F4, 0x32F7, 0x32FA, 0x32FD, 0x3300, 0x3303, 0x3306, 0x3309, 0x330C, + 0x330F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8773, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8774, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8775, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8776, 0x0000, 0x0000, + 0x0000, 0x8777, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8778, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8779, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x877A, 0x877B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x877C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x877D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x877E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x877F, 0x8780, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8781, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8782, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8783, 0x0000, 0x0000, 0x8784, 0x0000, 0x8785, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8786, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8787, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8788, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8789, 0x878A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x878B, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x878C, 0x0000, 0x0000, + 0x0000, 0x0000, 0x878D, 0x0000, 0x878E, 0x878F, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8790, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8791, 0x0000, + 0x8792, 0x0000, 0x0000, 0x0000, 0x8793, 0x8794, 0x8795, 0x0000, 0x8796, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8797, 0x0000, 0x0000, + 0x0000, 0x8798, 0x0000, 0x0000, 0x8799, 0x0000, 0x0000, 0x0000, 0x879A, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x879B, 0x0000, + 0x0000, 0x0000, 0x879C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x879D, 0x0000, 0x0000, 0x879E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x879F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x87A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87A1, 0x0000, 0x87A2, 0x0000, 0x87A3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87A4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87A5, 0x0000, + 0x0000, 0x0000, 0x87A6, 0x87A7, 0x0000, 0x0000, 0x87A8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x87A9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87AA, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87AB, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87AC, 0x0000, 0x0000, 0x87AD, 0x87AE, 0x87AF, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87B0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x87B1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87B2, 0x0000, 0x0000, 0x0000, 0x0000, 0x87B3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x87B4, 0x0000, 0x87B5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x87B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87B7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87B8, 0x87B9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87BA, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x87BB, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87BC, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87BD, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87BE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87BF, 0x0000, 0x0000, 0x87C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87C2, 0x0000, 0x87C3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87C4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x87C5, 0x87C6, 0x0000, 0x87C7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87C8, 0x0000, 0x0000, 0x0000, 0x87C9, 0x0000, 0x87CA, 0x87CB, 0x0000, + 0x87CC, 0x87CD, 0x0000, 0x0000, 0x0000, 0x87CE, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87CF, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87D0, 0x0000, 0x87D1, 0x0000, 0x87D2, 0x0000, 0x0000, 0x0000, + 0x87D3, 0x87D4, 0x0000, 0x0000, 0x0000, 0x87D5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x87D6, 0x0000, 0x87D7, 0x0000, 0x87D8, 0x0000, 0x0000, + 0x87D9, 0x0000, 0x0000, 0x87DA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87DB, + 0x0000, 0x87DC, 0x0000, 0x87DD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87DE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x87DF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x87E0, 0x0000, 0x87E1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87E2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87E3, 0x0000, 0x0000, 0x0000, 0x0000, 0x87E4, 0x0000, 0x87E5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87E6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87E7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x87E8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87E9, 0x0000, 0x0000, 0x87EA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87EB, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x87EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x87ED, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x87EE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x87F1, 0x87F2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F4, 0x0000, 0x87F5, + 0x0000, 0x87F6, 0x0000, 0x0000, 0x0000, 0x87F7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F8, 0x87F9, + 0x0000, 0x0000, 0x87FA, 0x0000, 0x0000, 0x0000, 0x87FB, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x87FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87FD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x87FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87FF, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8800, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8801, 0x0000, 0x8802, 0x8803, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8804, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8805, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8806, 0x8807, 0x8808, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8809, 0x0000, 0x0000, 0x880A, 0x0000, 0x0000, 0x0000, 0x0000, + 0x880B, 0x0000, 0x0000, 0x0000, 0x880C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x880D, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x880E, 0x0000, 0x0000, 0x880F, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8810, 0x8811, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8812, 0x0000, 0x0000, 0x8813, + 0x0000, 0x8814, 0x0000, 0x0000, 0x0000, 0x8815, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8816, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8817, 0x0000, 0x0000, 0x0000, 0x0000, 0x8818, 0x0000, + 0x0000, 0x0000, 0x8819, 0x0000, 0x0000, 0x0000, 0x0000, 0x881A, 0x0000, + 0x0000, 0x0000, 0x881B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x881C, 0x0000, 0x881D, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x881E, 0x881F, 0x8820, 0x0000, 0x8821, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8822, 0x8823, 0x8824, 0x0000, + 0x0000, 0x8825, 0x0000, 0x0000, 0x8826, 0x8827, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8828, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8829, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x882A, 0x0000, 0x0000, 0x0000, 0x882B, + 0x0000, 0x882C, 0x0000, 0x0000, 0x0000, 0x0000, 0x882D, 0x882E, 0x0000, + 0x0000, 0x882F, 0x0000, 0x8830, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8831, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8832, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8833, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8834, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8835, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8836, 0x0000, 0x8837, 0x0000, 0x0000, 0x8838, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8839, 0x883A, 0x0000, 0x0000, 0x0000, 0x883B, + 0x0000, 0x0000, 0x883C, 0x0000, 0x0000, 0x0000, 0x0000, 0x883D, 0x0000, + 0x0000, 0x883E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x883F, 0x0000, 0x8840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8841, 0x0000, 0x0000, 0x0000, 0x8842, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8843, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8844, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8845, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8846, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8847, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8849, 0x0000, 0x0000, 0x0000, + 0x0000, 0x884A, 0x884B, 0x884C, 0x0000, 0x0000, 0x0000, 0x884D, 0x884E, + 0x0000, 0x0000, 0x884F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8851, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8852, + 0x0000, 0x8853, 0x8854, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8855, 0x0000, 0x8856, 0x0000, 0x0000, 0x8857, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8858, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8859, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x885A, 0x0000, 0x885B, 0x885C, 0x0000, 0x0000, 0x0000, 0x885D, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x885E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x885F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8860, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8862, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8863, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8864, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8865, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8866, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8867, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8868, + 0x8869, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x886A, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x886B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x886C, + 0x0000, 0x0000, 0x0000, 0x886D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x886E, 0x0000, 0x0000, 0x886F, 0x8870, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8871, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8872, 0x0000, 0x0000, 0x8873, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8874, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8875, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8876, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8877, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8879, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x887A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x887B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x887C, 0x0000, 0x0000, 0x0000, + 0x887D, 0x887E, 0x0000, 0x887F, 0x0000, 0x8880, 0x8881, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8882, 0x8883, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8884, 0x8885, 0x0000, + 0x0000, 0x8886, 0x0000, 0x8887, 0x8888, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8889, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x888A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x888B, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x888C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x888D, 0x0000, + 0x888E, 0x0000, 0x0000, 0x888F, 0x8890, 0x0000, 0x0000, 0x0000, 0x8891, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8892, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8893, 0x0000, 0x8894, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8895, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8896, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8897, + 0x0000, 0x8898, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8899, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x889A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x889B, 0x0000, 0x0000, + 0x889C, 0x0000, 0x0000, 0x889D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x889E, 0x0000, + 0x0000, 0x889F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x88A0, 0x0000, 0x88A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x88A2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88A3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x88A4, 0x0000, 0x0000, 0x0000, 0x88A5, 0x0000, + 0x88A6, 0x0000, 0x88A7, 0x88A8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88A9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88AA, 0x0000, 0x88AB, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x88AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88AD, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88AE, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88AF, 0x0000, 0x0000, 0x88B0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88B1, + 0x0000, 0x0000, 0x88B2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88B3, 0x88B4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x88B5, 0x0000, 0x0000, 0x0000, 0x88B6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88B7, 0x88B8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x88B9, 0x0000, 0x0000, 0x0000, 0x0000, 0x88BA, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88BB, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x88BC, 0x88BD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x88BE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x88BF, 0x0000, 0x0000, 0x88C0, 0x0000, 0x88C1, 0x88C2, 0x88C3, 0x88C4, + 0x88C5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88C6, 0x0000, 0x0000, + 0x88C7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88C8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x88C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88CA, + 0x0000, 0x88CB, 0x0000, 0x88CC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x88CD, 0x0000, 0x0000, 0x0000, 0x88CE, 0x0000, 0x88CF, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88D0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88D1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x88D2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88D3, 0x0000, + 0x88D4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x88D5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x88D6, 0x0000, 0x0000, 0x0000, 0x88D7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88D8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88D9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88DA, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88DB, 0x88DC, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88DD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88DE, 0x88DF, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x88E1, 0x88E2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E4, + 0x0000, 0x0000, 0x88E5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x88E6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88E7, 0x0000, 0x88E8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E9, + 0x0000, 0x88EA, 0x0000, 0x0000, 0x0000, 0x0000, 0x88EB, 0x0000, 0x0000, + 0x0000, 0x88EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88ED, + 0x88EE, 0x0000, 0x0000, 0x88EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x88F0, + 0x0000, 0x0000, 0x88F1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88F2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88F3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x88F4, 0x88F5, 0x88F6, 0x0000, 0x0000, 0x0000, 0x88F7, 0x0000, + 0x0000, 0x0000, 0x88F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x88F9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x88FA, 0x0000, 0x0000, 0x88FB, 0x0000, 0x0000, 0x0000, 0x88FC, + 0x0000, 0x0000, 0x0000, 0x88FD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x88FE, 0x0000, 0x88FF, 0x0000, 0x0000, 0x8900, 0x8901, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8902, + 0x0000, 0x0000, 0x0000, 0x8903, 0x0000, 0x0000, 0x0000, 0x0000, 0x8904, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8905, 0x0000, 0x0000, 0x0000, 0x8906, 0x8907, 0x8908, 0x0000, 0x8909, + 0x0000, 0x890A, 0x0000, 0x890B, 0x0000, 0x890C, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x890D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x890E, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x890F, + 0x0000, 0x8910, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8911, + 0x0000, 0x8912, 0x0000, 0x0000, 0x0000, 0x8913, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8914, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8915, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8916, 0x0000, 0x0000, 0x8917, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8918, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8919, 0x891A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x891B, 0x0000, 0x891C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x891D, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x891E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x891F, 0x8920, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8921, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8922, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8923, + 0x8924, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8925, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8926, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8927, 0x0000, 0x0000, + 0x8928, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8929, 0x0000, + 0x0000, 0x0000, 0x892A, 0x0000, 0x0000, 0x892B, 0x0000, 0x0000, 0x0000, + 0x0000, 0x892C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x892D, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x892E, 0x0000, 0x0000, 0x892F, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8930, 0x0000, 0x0000, 0x0000, 0x8931, 0x0000, 0x8932, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8933, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8934, 0x8935, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8936, 0x0000, 0x0000, 0x8937, 0x8938, 0x0000, 0x8939, + 0x0000, 0x0000, 0x893A, 0x0000, 0x0000, 0x893B, 0x0000, 0x0000, 0x893C, + 0x893D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x893E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x893F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8940, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8941, 0x0000, 0x0000, + 0x8942, 0x8943, 0x8944, 0x8945, 0x0000, 0x8946, 0x0000, 0x0000, 0x8947, + 0x0000, 0x0000, 0x8948, 0x8949, 0x894A, 0x0000, 0x894B, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x894C, 0x0000, 0x894D, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x894E, 0x0000, 0x0000, 0x0000, + 0x0000, 0x894F, 0x0000, 0x8950, 0x0000, 0x0000, 0x8951, 0x0000, 0x8952, + 0x8953, 0x8954, 0x0000, 0x0000, 0x0000, 0x0000, 0x8955, 0x8956, 0x8957, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8958, 0x0000, 0x8959, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x895A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x895B, 0x895C, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x895D, + 0x0000, 0x0000, 0x895E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x895F, 0x8960, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8961, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8962, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8963, 0x0000, 0x0000, 0x0000, 0x0000, 0x8964, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8966, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8967, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8968, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8969, 0x896A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x896B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x896C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x896D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x896E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x896F, 0x0000, 0x8970, 0x8971, 0x0000, 0x8972, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8973, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8974, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8975, 0x0000, 0x0000, 0x0000, 0x8976, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8977, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8978, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8979, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x897A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x897B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x897C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x897D, 0x0000, 0x0000, + 0x0000, 0x897E, 0x0000, 0x0000, 0x0000, 0x0000, 0x897F, 0x0000, 0x8980, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8981, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8982, 0x8983, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8984, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8985, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8986, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8987, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8988, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8989, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x898A, 0x0000, 0x0000, 0x0000, 0x0000, 0x898B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x898C, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x898D, 0x0000, 0x0000, 0x0000, + 0x898E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x898F, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8990, 0x0000, 0x8991, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8992, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8993, 0x0000, 0x0000, 0x8994, 0x8995, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8996, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8997, 0x8998, 0x0000, 0x0000, 0x8999, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x899A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x899B, + 0x0000, 0x0000, 0x0000, 0x0000, 0x899C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x899D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x899E, 0x899F, 0x89A0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89A1, 0x0000, 0x0000, 0x89A2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89A3, 0x0000, 0x0000, + 0x89A4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x89A5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89A6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89A7, 0x0000, 0x89A8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89A9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89AA, 0x0000, 0x0000, 0x89AB, 0x0000, + 0x0000, 0x89AC, 0x89AD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89AE, 0x89AF, 0x0000, 0x0000, 0x0000, + 0x89B0, 0x0000, 0x0000, 0x0000, 0x0000, 0x89B1, 0x0000, 0x0000, 0x89B2, + 0x0000, 0x0000, 0x89B3, 0x0000, 0x0000, 0x0000, 0x0000, 0x89B4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89B5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89B6, 0x89B7, 0x0000, 0x89B8, 0x89B9, 0x89BA, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89BB, 0x0000, 0x89BC, 0x89BD, + 0x0000, 0x89BE, 0x89BF, 0x89C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x89C2, 0x0000, 0x89C3, + 0x89C4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x89C5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89C6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x89C7, 0x0000, 0x0000, 0x89C8, 0x0000, 0x0000, 0x0000, + 0x89C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89CA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89CB, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89CC, 0x0000, 0x89CD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x89CE, 0x0000, 0x0000, 0x0000, 0x0000, 0x89CF, 0x89D0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89D1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89D2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89D3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89D4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89D5, 0x0000, 0x0000, 0x89D6, + 0x89D7, 0x0000, 0x0000, 0x89D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x89D9, 0x0000, 0x89DA, 0x0000, 0x0000, 0x0000, 0x89DB, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89DC, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89DD, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89DE, + 0x0000, 0x0000, 0x0000, 0x89DF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E1, 0x89E2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89E4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x89E7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89E8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x89E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89EA, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89EB, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89EC, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89ED, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89EE, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89EF, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F0, + 0x0000, 0x0000, 0x89F1, 0x0000, 0x89F2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F3, 0x89F4, 0x0000, + 0x0000, 0x0000, 0x89F5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F6, 0x0000, 0x89F7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F8, 0x0000, 0x0000, + 0x0000, 0x89F9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89FA, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89FB, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89FD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89FF, 0x8A00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A01, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A02, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A03, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A04, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A05, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A06, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A07, 0x8A08, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A09, 0x0000, 0x8A0A, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A0B, 0x0000, 0x0000, 0x8A0C, 0x0000, 0x0000, 0x8A0D, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A0E, 0x0000, 0x0000, 0x8A0F, 0x0000, + 0x0000, 0x8A10, 0x8A11, 0x0000, 0x8A12, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A13, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A14, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A15, 0x8A16, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A17, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A18, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A19, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A1A, 0x0000, 0x8A1B, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A1C, 0x0000, 0x0000, 0x8A1D, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A1E, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A1F, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A20, 0x8A21, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A22, 0x8A23, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A24, 0x8A25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A28, 0x0000, 0x0000, 0x0000, 0x8A29, 0x0000, 0x8A2A, 0x0000, + 0x0000, 0x8A2B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A2C, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A2D, 0x0000, + 0x8A2E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A2F, 0x0000, 0x0000, 0x8A30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A31, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A32, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A33, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A34, 0x8A35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A36, 0x0000, 0x8A37, 0x0000, 0x8A38, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A39, 0x8A3A, 0x0000, 0x0000, 0x8A3B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A3C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A3D, 0x0000, 0x0000, 0x8A3E, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A3F, 0x0000, 0x8A40, 0x8A41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A42, 0x8A43, 0x8A44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A46, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A47, 0x8A48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A49, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A4B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4C, 0x8A4D, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4E, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A50, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A51, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A52, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A53, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A57, 0x0000, 0x0000, 0x8A58, 0x0000, 0x0000, 0x0000, 0x8A59, + 0x0000, 0x0000, 0x8A5A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A5B, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A5C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A5D, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A5E, 0x0000, 0x0000, 0x8A5F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A60, 0x8A61, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A62, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A63, 0x0000, 0x0000, 0x8A64, 0x0000, 0x0000, + 0x8A65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A66, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A67, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A69, 0x0000, 0x8A6A, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A6B, 0x0000, 0x0000, 0x8A6C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A6D, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A6E, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A6F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A70, 0x0000, 0x0000, 0x0000, 0x8A71, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A72, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A73, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A74, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A75, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A76, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A77, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A7A, 0x0000, 0x0000, 0x0000, 0x8A7B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A7C, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A7E, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A7F, 0x0000, 0x0000, 0x8A80, 0x8A81, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A82, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A83, 0x0000, 0x8A84, + 0x8A85, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A86, 0x0000, 0x8A87, 0x0000, + 0x0000, 0x8A88, 0x0000, 0x8A89, 0x8A8A, 0x0000, 0x8A8B, 0x8A8C, 0x8A8D, + 0x0000, 0x0000, 0x0000, 0x8A8E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8A8F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8A90, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A91, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A92, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A93, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A94, 0x8A95, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8A96, 0x8A97, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A98, + 0x0000, 0x0000, 0x8A99, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A9A, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8A9B, 0x0000, 0x8A9C, 0x0000, 0x0000, + 0x8A9D, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A9E, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8A9F, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8AA2, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AA4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8AA6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8AA7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA8, 0x8AA9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8AAA, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AAB, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AAC, + 0x8AAD, 0x0000, 0x0000, 0x0000, 0x8AAE, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AAF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8AB0, 0x0000, 0x0000, 0x8AB1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AB2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB6, 0x0000, 0x8AB7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB9, 0x0000, + 0x0000, 0x8ABA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ABB, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8ABC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ABD, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ABE, 0x0000, + 0x0000, 0x0000, 0x8ABF, 0x8AC0, 0x0000, 0x8AC1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8AC2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8AC3, 0x0000, 0x0000, 0x8AC4, 0x0000, 0x8AC5, 0x0000, 0x0000, 0x8AC6, + 0x0000, 0x8AC7, 0x0000, 0x0000, 0x8AC8, 0x8AC9, 0x8ACA, 0x0000, 0x8ACB, + 0x8ACC, 0x8ACD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8ACE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ACF, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8AD0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AD1, + 0x0000, 0x8AD2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AD3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AD4, + 0x0000, 0x8AD5, 0x0000, 0x0000, 0x8AD6, 0x0000, 0x8AD7, 0x8AD8, 0x0000, + 0x0000, 0x8AD9, 0x0000, 0x0000, 0x8ADA, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8ADB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ADC, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ADD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8ADE, 0x0000, 0x8ADF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AE2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AE3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8AE5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AE6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8AE8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AEA, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8AEB, 0x0000, 0x0000, 0x0000, 0x8AEC, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AED, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8AEE, 0x0000, 0x0000, 0x0000, 0x8AEF, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8AF0, 0x0000, 0x8AF1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF4, 0x0000, 0x0000, 0x0000, + 0x8AF5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8AF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8AF9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AFA, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8AFB, 0x0000, 0x0000, 0x0000, 0x8AFC, 0x8AFD, 0x8AFE, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8AFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B00, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8B01, 0x8B02, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8B03, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8B04, 0x0000, 0x0000, 0x0000, 0x8B05, 0x0000, 0x0000, + 0x0000, 0x8B06, 0x0000, 0x0000, 0x8B07, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B0A, 0x0000, + 0x0000, 0x8B0B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8B0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8B0D, 0x0000, 0x0000, 0x8B0E, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B0F, 0x8B10, 0x8B11, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B12, + 0x8B13, 0x8B14, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B15, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B16, 0x8B17, 0x0000, 0x0000, 0x0000, 0x8B18, 0x8B19, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8B1A, 0x8B1B, 0x0000, 0x0000, 0x0000, 0x8B1C, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B1D, 0x8B1E, 0x0000, 0x8B1F, 0x0000, 0x0000, 0x8B20, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B21, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8B22, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8B23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8B24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8B25, 0x0000, 0x0000, 0x0000, 0x8B26, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B27, 0x0000, 0x0000, 0x0000, 0x8B28, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B29, 0x0000, 0x8B2A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8B2B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B2C, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B2D, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B2E, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8B2F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B30, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8B31, 0x0000, 0x0000, 0x8B32, 0x0000, + 0x8B33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B34, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8B35, 0x0000, 0x8B36, 0x0000, 0x0000, 0x0000, 0x8B37, + 0x8B38, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B39, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B3A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B3B, 0x0000, 0x8B3C, 0x8B3D, 0x0000, 0x0000, 0x8B3E, 0x8B3F, 0x0000, + 0x0000, 0x0000, 0x8B40, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B41, 0x0000, + 0x0000, 0x8B42, 0x0000, 0x8B43, 0x0000, 0x0000, 0x0000, 0x8B44, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B45, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8B46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B47, 0x8B48, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B49, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B4A, + 0x8B4B, 0x0000, 0x8B4C, 0x0000, 0x8B4D, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8B4E, 0x0000, 0x8B4F, 0x0000, 0x8B50, 0x0000, + 0x8B51, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B56, 0x0000, 0x8B57, 0x0000, + 0x8B58, 0x0000, 0x0000, 0x8B59, 0x0000, 0x0000, 0x8B5A, 0x8B5B, 0x8B5C, + 0x0000, 0x8B5D, 0x0000, 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x0000, + 0x0000, 0x0000, 0x8B63, 0x0000, 0x0000, 0x0000, 0x8B64, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B65, 0x0000, 0x8B66, + 0x8B67, 0x8B68, 0x8B69, 0x0000, 0x8B6A, 0x0000, 0x0000, 0x0000, 0x8B6B, + 0x8B6C, 0x0000, 0x8B6D, 0x0000, 0x0000, 0x8B6E, 0x8B6F, 0x0000, 0x8B70, + 0x8B71, 0x8B72, 0x0000, 0x8B73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8B74, 0x0000, 0x8B75, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B77, 0x0000, 0x8B78, + 0x8B79, 0x0000, 0x0000, 0x8B7A, 0x8B7B, 0x0000, 0x0000, 0x0000, 0x8B7C, + 0x0000, 0x8B7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B7E, 0x8B7F, 0x8B80, 0x8B81, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8B82, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B83, + 0x0000, 0x8B84, 0x0000, 0x0000, 0x8B85, 0x0000, 0x8B86, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8B87, 0x0000, 0x0000, 0x0000, 0x8B88, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B89, + 0x0000, 0x8B8A, 0x0000, 0x8B8B, 0x0000, 0x8B8C, 0x8B8D, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B8E, 0x8B8F, 0x0000, + 0x0000, 0x8B90, 0x8B91, 0x8B92, 0x0000, 0x8B93, 0x0000, 0x0000, 0x0000, + 0x8B94, 0x8B95, 0x8B96, 0x8B97, 0x0000, 0x8B98, 0x8B99, 0x8B9A, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8B9B, 0x0000, 0x0000, 0x8B9C, 0x0000, 0x0000, + 0x8B9D, 0x8B9E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B9F, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8BA0, 0x8BA1, 0x8BA2, 0x8BA3, 0x0000, + 0x0000, 0x8BA4, 0x8BA5, 0x0000, 0x8BA6, 0x8BA7, 0x0000, 0x8BA8, 0x0000, + 0x0000, 0x8BA9, 0x0000, 0x8BAA, 0x8BAB, 0x0000, 0x0000, 0x8BAC, 0x0000, + 0x0000, 0x8BAD, 0x0000, 0x8BAE, 0x8BAF, 0x0000, 0x8BB0, 0x0000, 0x8BB1, + 0x0000, 0x0000, 0x8BB2, 0x0000, 0x8BB3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BB4, + 0x8BB5, 0x8BB6, 0x8BB7, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BB8, 0x8BB9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BBA, 0x0000, 0x0000, 0x0000, + 0x8BBB, 0x0000, 0x8BBC, 0x8BBD, 0x8BBE, 0x0000, 0x0000, 0x0000, 0x8BBF, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BC0, 0x0000, + 0x0000, 0x8BC1, 0x0000, 0x0000, 0x8BC2, 0x8BC3, 0x0000, 0x0000, 0x8BC4, + 0x8BC5, 0x8BC6, 0x0000, 0x8BC7, 0x0000, 0x0000, 0x0000, 0x8BC8, 0x8BC9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8BCA, 0x0000, 0x8BCB, 0x8BCC, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8BCD, 0x0000, 0x8BCE, 0x8BCF, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8BD0, 0x0000, 0x0000, 0x0000, 0x8BD1, 0x0000, 0x0000, 0x8BD2, 0x8BD3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BD4, 0x8BD5, 0x8BD6, + 0x0000, 0x8BD7, 0x0000, 0x8BD8, 0x8BD9, 0x0000, 0x0000, 0x8BDA, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8BDB, 0x0000, 0x0000, 0x8BDC, 0x8BDD, + 0x8BDE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8BDF, 0x0000, 0x8BE0, 0x0000, 0x8BE1, 0x0000, 0x0000, 0x8BE2, + 0x0000, 0x0000, 0x0000, 0x8BE3, 0x0000, 0x0000, 0x8BE4, 0x0000, 0x8BE5, + 0x0000, 0x0000, 0x0000, 0x8BE6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8BE7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BE8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BE9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8BEA, 0x0000, 0x8BEB, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8BEC, 0x8BED, 0x0000, 0x8BEE, 0x0000, 0x0000, 0x8BEF, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF0, 0x0000, + 0x0000, 0x8BF1, 0x8BF2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8BF5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8BF7, 0x0000, 0x0000, 0x0000, 0x8BF8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8BFA, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8BFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8BFC, 0x8BFD, 0x0000, 0x8BFE, 0x8BFF, 0x0000, 0x8C00, + 0x8C01, 0x8C02, 0x0000, 0x8C03, 0x0000, 0x0000, 0x0000, 0x8C04, 0x8C05, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C06, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C07, + 0x0000, 0x0000, 0x8C08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C0A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C0B, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C0D, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C0E, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C0F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C11, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C12, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C13, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C14, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C15, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C16, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C17, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C18, 0x8C19, 0x8C1A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C1B, 0x0000, 0x0000, + 0x0000, 0x8C1C, 0x0000, 0x8C1D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C1E, 0x0000, 0x8C1F, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C20, 0x8C21, 0x0000, 0x8C22, 0x0000, 0x0000, 0x8C23, 0x0000, + 0x0000, 0x8C24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C26, 0x8C27, 0x8C28, 0x8C29, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C2A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C2B, + 0x0000, 0x8C2C, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C2D, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C2E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C2F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C30, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C31, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C32, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C33, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C34, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C36, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C37, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C38, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C39, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3A, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3C, 0x0000, 0x0000, 0x8C3D, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3E, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3F, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C40, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C44, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C45, 0x0000, 0x0000, + 0x0000, 0x8C46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C48, 0x0000, 0x0000, 0x0000, + 0x8C49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C4A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C4B, 0x8C4C, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C4D, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C4E, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C4F, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C50, 0x0000, 0x8C51, 0x8C52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C54, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C55, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C56, 0x0000, + 0x0000, 0x0000, 0x8C57, 0x0000, 0x0000, 0x8C58, 0x0000, 0x0000, 0x8C59, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C5A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C5B, + 0x0000, 0x0000, 0x8C5C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C5D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C5E, 0x0000, 0x8C5F, 0x0000, 0x8C60, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C61, 0x0000, 0x0000, 0x8C62, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C63, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C64, 0x0000, 0x0000, 0x8C65, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C66, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C67, 0x0000, 0x0000, 0x0000, 0x8C68, + 0x8C69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C6A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C6B, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C6C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C6D, 0x0000, 0x0000, 0x8C6E, 0x8C6F, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C70, 0x0000, 0x0000, 0x0000, + 0x8C71, 0x0000, 0x8C72, 0x8C73, 0x0000, 0x0000, 0x8C74, 0x8C75, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8C76, 0x0000, 0x0000, 0x8C77, 0x0000, 0x0000, 0x0000, 0x8C78, + 0x0000, 0x0000, 0x0000, 0x8C79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C7A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C7C, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C7E, 0x8C7F, 0x0000, + 0x0000, 0x8C80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8C81, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C82, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C83, 0x8C84, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C85, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8C86, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C87, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C88, 0x0000, 0x8C89, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8C8A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C8B, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C8C, 0x0000, 0x0000, 0x0000, + 0x8C8D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C8E, 0x0000, + 0x0000, 0x0000, 0x8C8F, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C90, 0x0000, + 0x0000, 0x0000, 0x8C91, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C92, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C93, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8C94, 0x0000, 0x0000, 0x8C95, 0x0000, 0x0000, 0x8C96, + 0x0000, 0x0000, 0x0000, 0x8C97, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C98, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C99, 0x0000, 0x0000, 0x0000, + 0x8C9A, 0x8C9B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C9C, + 0x0000, 0x0000, 0x8C9D, 0x8C9E, 0x0000, 0x0000, 0x8C9F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA0, + 0x0000, 0x0000, 0x0000, 0x8CA1, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8CA5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8CA6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA8, 0x0000, 0x8CA9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8CAA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CAB, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CAC, + 0x8CAD, 0x0000, 0x0000, 0x0000, 0x8CAE, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CAF, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8CB1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB3, 0x8CB4, 0x0000, 0x8CB5, 0x0000, + 0x0000, 0x8CB6, 0x0000, 0x0000, 0x8CB7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8CB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8CBA, 0x0000, 0x0000, 0x8CBB, 0x0000, 0x0000, 0x0000, + 0x8CBC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CBD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8CBE, 0x0000, 0x0000, 0x8CBF, 0x0000, 0x8CC0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8CC1, 0x0000, 0x0000, 0x0000, 0x8CC2, 0x0000, + 0x0000, 0x0000, 0x8CC3, 0x0000, 0x0000, 0x8CC4, 0x0000, 0x8CC5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CC6, 0x0000, + 0x0000, 0x0000, 0x8CC7, 0x8CC8, 0x0000, 0x0000, 0x0000, 0x8CC9, 0x0000, + 0x8CCA, 0x0000, 0x0000, 0x8CCB, 0x0000, 0x0000, 0x8CCC, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8CCD, 0x0000, 0x0000, 0x8CCE, 0x0000, 0x0000, 0x8CCF, + 0x0000, 0x8CD0, 0x8CD1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8CD2, 0x0000, 0x8CD3, 0x0000, 0x8CD4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CD5, 0x8CD6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8CD7, 0x0000, 0x8CD8, 0x0000, 0x8CD9, 0x0000, 0x8CDA, + 0x0000, 0x8CDB, 0x0000, 0x0000, 0x8CDC, 0x0000, 0x8CDD, 0x8CDE, 0x8CDF, + 0x8CE0, 0x0000, 0x0000, 0x8CE1, 0x0000, 0x8CE2, 0x0000, 0x8CE3, 0x0000, + 0x0000, 0x0000, 0x8CE4, 0x0000, 0x8CE5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8CE6, 0x0000, 0x0000, 0x8CE7, 0x0000, 0x0000, 0x0000, 0x8CE8, 0x0000, + 0x0000, 0x8CE9, 0x0000, 0x8CEA, 0x0000, 0x0000, 0x0000, 0x8CEB, 0x0000, + 0x8CEC, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CED, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8CEE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8CEF, 0x0000, 0x8CF0, 0x0000, 0x8CF1, 0x0000, 0x8CF2, 0x8CF3, 0x0000, + 0x0000, 0x8CF4, 0x0000, 0x0000, 0x8CF5, 0x0000, 0x0000, 0x8CF6, 0x0000, + 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x0000, 0x0000, 0x8CFB, 0x0000, 0x0000, + 0x8CFC, 0x0000, 0x8CFD, 0x8CFE, 0x8CFF, 0x8D00, 0x0000, 0x8D01, 0x8D02, + 0x8D03, 0x8D04, 0x0000, 0x8D05, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8D06, 0x0000, 0x0000, 0x8D07, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D0C, + 0x8D0D, 0x0000, 0x0000, 0x0000, 0x8D0E, 0x8D0F, 0x0000, 0x0000, 0x8D10, + 0x0000, 0x0000, 0x8D11, 0x0000, 0x8D12, 0x0000, 0x0000, 0x0000, 0x8D13, + 0x0000, 0x8D14, 0x8D15, 0x0000, 0x8D16, 0x8D17, 0x8D18, 0x8D19, 0x0000, + 0x8D1A, 0x0000, 0x8D1B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D1C, + 0x0000, 0x8D1D, 0x0000, 0x0000, 0x0000, 0x8D1E, 0x0000, 0x0000, 0x8D1F, + 0x0000, 0x0000, 0x8D20, 0x0000, 0x0000, 0x8D21, 0x0000, 0x0000, 0x8D22, + 0x0000, 0x8D23, 0x0000, 0x0000, 0x8D24, 0x0000, 0x8D25, 0x0000, 0x8D26, + 0x0000, 0x8D27, 0x0000, 0x8D28, 0x0000, 0x8D29, 0x8D2A, 0x0000, 0x0000, + 0x0000, 0x8D2B, 0x8D2C, 0x0000, 0x0000, 0x0000, 0x8D2D, 0x8D2E, 0x8D2F, + 0x8D30, 0x0000, 0x0000, 0x8D31, 0x8D32, 0x0000, 0x8D33, 0x0000, 0x8D34, + 0x8D35, 0x0000, 0x0000, 0x0000, 0x8D36, 0x0000, 0x8D37, 0x8D38, 0x0000, + 0x0000, 0x8D39, 0x0000, 0x8D3A, 0x0000, 0x0000, 0x8D3B, 0x8D3C, 0x8D3D, + 0x0000, 0x8D3E, 0x0000, 0x8D3F, 0x0000, 0x8D40, 0x0000, 0x8D41, 0x8D42, + 0x8D43, 0x0000, 0x8D44, 0x8D45, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D46, + 0x0000, 0x0000, 0x0000, 0x8D47, 0x0000, 0x8D48, 0x0000, 0x0000, 0x0000, + 0x8D49, 0x0000, 0x8D4A, 0x8D4B, 0x0000, 0x8D4C, 0x0000, 0x8D4D, 0x0000, + 0x8D4E, 0x0000, 0x0000, 0x8D4F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8D50, 0x0000, 0x0000, 0x8D51, 0x8D52, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8D53, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8D54, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D55, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D56, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8D57, 0x8D58, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8D59, 0x0000, 0x8D5A, 0x8D5B, 0x8D5C, 0x0000, + 0x8D5D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D5E, 0x0000, 0x0000, + 0x0000, 0x8D5F, 0x8D60, 0x0000, 0x0000, 0x0000, 0x8D61, 0x0000, 0x0000, + 0x8D62, 0x8D63, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D64, 0x8D65, 0x0000, + 0x8D66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8D67, 0x8D68, 0x0000, 0x0000, 0x8D69, 0x0000, 0x0000, 0x0000, + 0x8D6A, 0x8D6B, 0x0000, 0x8D6C, 0x8D6D, 0x0000, 0x0000, 0x0000, 0x8D6E, + 0x0000, 0x8D6F, 0x0000, 0x8D70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8D71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D72, + 0x0000, 0x8D73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8D74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8D75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D76, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D77, 0x8D78, 0x0000, + 0x8D79, 0x8D7A, 0x8D7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D7C, 0x8D7D, + 0x8D7E, 0x8D7F, 0x8D80, 0x8D81, 0x0000, 0x0000, 0x8D82, 0x8D83, 0x0000, + 0x8D84, 0x8D85, 0x8D86, 0x0000, 0x8D87, 0x8D88, 0x8D89, 0x0000, 0x8D8A, + 0x8D8B, 0x8D8C, 0x8D8D, 0x0000, 0x8D8E, 0x8D8F, 0x8D90, 0x8D91, 0x8D92, + 0x8D93, 0x8D94, 0x0000, 0x8D95, 0x8D96, 0x0000, 0x8D97, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8D98, 0x8D99, 0x8D9A, 0x0000, 0x8D9B, + 0x0000, 0x0000, 0x0000, 0x8D9C, 0x8D9D, 0x0000, 0x8D9E, 0x0000, 0x8D9F, + 0x0000, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA3, 0x8DA4, 0x0000, 0x8DA5, 0x8DA6, + 0x0000, 0x0000, 0x8DA7, 0x0000, 0x8DA8, 0x8DA9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8DAA, 0x8DAB, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8DB1, 0x8DB2, 0x0000, 0x8DB3, 0x8DB4, 0x0000, 0x8DB5, 0x0000, + 0x0000, 0x8DB6, 0x0000, 0x8DB7, 0x8DB8, 0x0000, 0x0000, 0x8DB9, 0x8DBA, + 0x0000, 0x8DBB, 0x8DBC, 0x0000, 0x0000, 0x0000, 0x8DBD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DBE, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8DBF, 0x0000, 0x0000, 0x0000, 0x8DC0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8DC1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC8, 0x0000, + 0x0000, 0x8DC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DCA, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DCB, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8DCC, 0x8DCD, 0x8DCE, 0x0000, 0x8DCF, 0x0000, + 0x0000, 0x0000, 0x8DD0, 0x8DD1, 0x8DD2, 0x0000, 0x8DD3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8DD4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8DD5, 0x0000, 0x0000, 0x0000, 0x8DD6, 0x8DD7, 0x0000, 0x0000, 0x0000, + 0x8DD8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8DD9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DDA, 0x8DDB, 0x8DDC, 0x8DDD, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8DDE, 0x0000, 0x8DDF, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8DE0, 0x0000, 0x0000, 0x0000, 0x8DE1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8DE2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8DE3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DE4, 0x8DE5, 0x8DE6, + 0x8DE7, 0x8DE8, 0x0000, 0x8DE9, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DEA, + 0x0000, 0x8DEB, 0x0000, 0x8DEC, 0x8DED, 0x8DEE, 0x8DEF, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DF0, 0x0000, 0x8DF1, 0x8DF2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DF3, 0x8DF4, 0x8DF5, 0x8DF6, + 0x8DF7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DF8, 0x8DF9, 0x0000, + 0x0000, 0x8DFA, 0x8DFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DFC, 0x0000, + 0x0000, 0x0000, 0x8DFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DFE, 0x0000, + 0x0000, 0x8DFF, 0x0000, 0x0000, 0x8E00, 0x8E01, 0x8E02, 0x0000, 0x8E03, + 0x0000, 0x8E04, 0x8E05, 0x8E06, 0x0000, 0x0000, 0x8E07, 0x0000, 0x0000, + 0x0000, 0x8E08, 0x8E09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E0A, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8E0B, 0x0000, 0x8E0C, 0x8E0D, 0x0000, 0x8E0E, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8E0F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E10, 0x8E11, + 0x8E12, 0x0000, 0x0000, 0x8E13, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E14, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E15, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8E16, 0x8E17, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8E18, 0x8E19, 0x0000, 0x0000, 0x8E1A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8E1B, 0x8E1C, 0x0000, 0x0000, 0x0000, 0x8E1D, + 0x0000, 0x0000, 0x8E1E, 0x0000, 0x8E1F, 0x0000, 0x8E20, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E21, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E22, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8E23, 0x8E24, 0x0000, 0x8E25, 0x0000, 0x8E26, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8E27, 0x0000, 0x0000, 0x8E28, 0x0000, 0x0000, + 0x8E29, 0x0000, 0x0000, 0x8E2A, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E2B, + 0x8E2C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E2D, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8E2E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8E2F, 0x0000, 0x0000, 0x8E30, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8E31, 0x0000, 0x8E32, 0x0000, 0x8E33, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E34, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8E35, 0x0000, 0x0000, 0x8E36, 0x0000, + 0x8E37, 0x0000, 0x8E38, 0x0000, 0x8E39, 0x0000, 0x0000, 0x0000, 0x8E3A, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8E3B, 0x8E3C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8E3D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E3E, 0x0000, + 0x8E3F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8E40, 0x8E41, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8E42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E43, 0x8E44, + 0x0000, 0x8E45, 0x0000, 0x8E46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8E47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8E48, 0x8E49, 0x0000, 0x8E4A, 0x8E4B, 0x8E4C, 0x0000, 0x0000, 0x0000, + 0x8E4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E4E, 0x8E4F, 0x0000, + 0x0000, 0x8E50, 0x0000, 0x8E51, 0x0000, 0x0000, 0x8E52, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E53, 0x0000, 0x8E54, + 0x0000, 0x8E55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E56, + 0x8E57, 0x0000, 0x8E58, 0x8E59, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E5A, + 0x0000, 0x0000, 0x0000, 0x8E5B, 0x0000, 0x0000, 0x8E5C, 0x8E5D, 0x0000, + 0x0000, 0x8E5E, 0x8E5F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8E60, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E61, 0x0000, + 0x0000, 0x8E62, 0x8E63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8E64, 0x0000, 0x8E65, 0x0000, 0x0000, 0x8E66, 0x8E67, 0x0000, 0x0000, + 0x8E68, 0x8E69, 0x8E6A, 0x8E6B, 0x0000, 0x0000, 0x8E6C, 0x8E6D, 0x8E6E, + 0x8E6F, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E70, 0x0000, 0x0000, 0x8E71, + 0x8E72, 0x0000, 0x8E73, 0x0000, 0x8E74, 0x0000, 0x0000, 0x0000, 0x8E75, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E76, 0x0000, 0x0000, 0x8E77, + 0x8E78, 0x0000, 0x0000, 0x8E79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8E7A, 0x0000, 0x8E7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E7C, + 0x8E7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8E7E, 0x0000, 0x8E7F, 0x0000, 0x8E80, 0x8E81, 0x0000, 0x0000, 0x0000, + 0x8E82, 0x8E83, 0x0000, 0x0000, 0x8E84, 0x0000, 0x8E85, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E86, 0x0000, 0x0000, 0x0000, + 0x8E87, 0x0000, 0x8E88, 0x0000, 0x0000, 0x8E89, 0x0000, 0x8E8A, 0x0000, + 0x8E8B, 0x8E8C, 0x8E8D, 0x0000, 0x0000, 0x0000, 0x8E8E, 0x0000, 0x0000, + 0x8E8F, 0x0000, 0x8E90, 0x8E91, 0x0000, 0x8E92, 0x0000, 0x8E93, 0x8E94, + 0x8E95, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E96, 0x0000, + 0x0000, 0x0000, 0x8E97, 0x0000, 0x8E98, 0x0000, 0x8E99, 0x8E9A, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8E9B, 0x0000, 0x8E9C, 0x0000, 0x8E9D, 0x0000, + 0x8E9E, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E9F, 0x0000, 0x0000, 0x8EA0, + 0x0000, 0x0000, 0x8EA1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8EA2, 0x0000, 0x8EA3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8EA4, 0x8EA5, 0x8EA6, 0x0000, 0x8EA7, 0x8EA8, 0x8EA9, + 0x0000, 0x0000, 0x0000, 0x8EAA, 0x8EAB, 0x8EAC, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8EAD, 0x0000, 0x0000, 0x0000, 0x8EAE, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8EAF, 0x0000, 0x0000, 0x8EB0, 0x0000, + 0x8EB1, 0x0000, 0x8EB2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8EB3, 0x8EB4, 0x0000, 0x8EB5, 0x0000, 0x0000, 0x8EB6, 0x0000, 0x0000, + 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBA, 0x0000, 0x0000, 0x0000, 0x8EBB, 0x8EBC, + 0x8EBD, 0x8EBE, 0x0000, 0x0000, 0x0000, 0x8EBF, 0x0000, 0x8EC0, 0x8EC1, + 0x0000, 0x8EC2, 0x0000, 0x0000, 0x8EC3, 0x8EC4, 0x0000, 0x0000, 0x0000, + 0x8EC5, 0x0000, 0x0000, 0x8EC6, 0x0000, 0x8EC7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EC8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8EC9, 0x8ECA, 0x0000, 0x0000, 0x8ECB, 0x8ECC, 0x0000, 0x8ECD, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ECE, 0x0000, 0x0000, + 0x0000, 0x8ECF, 0x0000, 0x8ED0, 0x8ED1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8ED2, 0x0000, 0x0000, 0x0000, 0x8ED3, 0x8ED4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8ED5, 0x0000, 0x0000, 0x0000, 0x8ED6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8ED7, 0x8ED8, 0x0000, 0x0000, 0x0000, 0x8ED9, + 0x0000, 0x0000, 0x0000, 0x8EDA, 0x0000, 0x0000, 0x0000, 0x8EDB, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EDC, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EDD, 0x0000, + 0x8EDE, 0x0000, 0x8EDF, 0x0000, 0x0000, 0x8EE0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8EE1, 0x8EE2, 0x8EE3, 0x0000, 0x0000, 0x8EE4, 0x8EE5, + 0x0000, 0x8EE6, 0x8EE7, 0x0000, 0x8EE8, 0x0000, 0x8EE9, 0x0000, 0x8EEA, + 0x0000, 0x0000, 0x8EEB, 0x0000, 0x8EEC, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8EED, 0x0000, 0x0000, 0x0000, 0x8EEE, 0x8EEF, 0x0000, 0x0000, 0x0000, + 0x8EF0, 0x8EF1, 0x0000, 0x0000, 0x8EF2, 0x8EF3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8EF4, 0x8EF5, 0x0000, 0x0000, 0x0000, 0x8EF6, 0x8EF7, + 0x8EF8, 0x8EF9, 0x0000, 0x8EFA, 0x8EFB, 0x0000, 0x8EFC, 0x0000, 0x0000, + 0x0000, 0x8EFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8EFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EFF, 0x0000, 0x0000, 0x0000, + 0x8F00, 0x0000, 0x0000, 0x0000, 0x8F01, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8F02, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F03, 0x0000, 0x0000, 0x8F04, + 0x8F05, 0x0000, 0x0000, 0x0000, 0x8F06, 0x8F07, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8F08, 0x8F09, 0x0000, 0x0000, 0x8F0A, 0x0000, 0x0000, 0x8F0B, + 0x0000, 0x0000, 0x0000, 0x8F0C, 0x8F0D, 0x0000, 0x8F0E, 0x8F0F, 0x0000, + 0x8F10, 0x0000, 0x8F11, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F12, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8F13, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8F14, 0x0000, 0x8F15, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F16, 0x0000, + 0x0000, 0x0000, 0x8F17, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8F18, 0x0000, 0x8F19, 0x0000, 0x0000, 0x8F1A, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F1B, + 0x0000, 0x0000, 0x8F1C, 0x8F1D, 0x8F1E, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8F1F, 0x0000, 0x8F20, 0x0000, 0x0000, 0x8F21, 0x8F22, 0x8F23, 0x8F24, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F25, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F26, 0x0000, 0x8F27, 0x8F28, 0x0000, + 0x0000, 0x8F29, 0x0000, 0x8F2A, 0x8F2B, 0x0000, 0x8F2C, 0x8F2D, 0x0000, + 0x8F2E, 0x8F2F, 0x0000, 0x0000, 0x8F30, 0x8F31, 0x8F32, 0x0000, 0x0000, + 0x0000, 0x8F33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8F34, 0x0000, 0x8F35, 0x0000, 0x8F36, 0x0000, 0x0000, 0x8F37, + 0x8F38, 0x0000, 0x8F39, 0x8F3A, 0x8F3B, 0x0000, 0x0000, 0x0000, 0x8F3C, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F3D, 0x0000, 0x0000, 0x8F3E, 0x0000, + 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43, 0x0000, 0x0000, 0x0000, 0x8F44, + 0x0000, 0x0000, 0x8F45, 0x8F46, 0x8F47, 0x0000, 0x8F48, 0x8F49, 0x8F4A, + 0x0000, 0x0000, 0x0000, 0x8F4B, 0x0000, 0x8F4C, 0x8F4D, 0x8F4E, 0x8F4F, + 0x8F50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F51, 0x0000, 0x8F52, + 0x0000, 0x8F53, 0x8F54, 0x8F55, 0x0000, 0x8F56, 0x8F57, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F58, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8F59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F5A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8F5B, 0x0000, 0x0000, 0x8F5C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8F5D, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F5E, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F5F, + 0x8F60, 0x0000, 0x0000, 0x0000, 0x8F61, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8F62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F63, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8F64, 0x0000, 0x8F65, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8F66, 0x0000, 0x0000, 0x8F67, 0x0000, 0x0000, + 0x0000, 0x8F68, 0x0000, 0x0000, 0x8F69, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8F6A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F6B, 0x0000, 0x0000, 0x8F6C, 0x0000, + 0x8F6D, 0x8F6E, 0x0000, 0x8F6F, 0x0000, 0x0000, 0x0000, 0x8F70, 0x8F71, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F72, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F73, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F74, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F75, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F76, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F77, 0x0000, 0x8F78, 0x0000, 0x8F79, + 0x0000, 0x8F7A, 0x8F7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8F7C, 0x0000, 0x8F7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F7E, 0x0000, 0x8F7F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8F81, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F82, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F83, 0x0000, 0x8F84, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8F85, 0x0000, 0x8F86, 0x8F87, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F88, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8F89, 0x0000, 0x0000, 0x8F8A, 0x0000, 0x8F8B, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8F8C, 0x0000, 0x0000, 0x0000, 0x8F8D, 0x0000, 0x8F8E, 0x8F8F, 0x8F90, + 0x0000, 0x8F91, 0x8F92, 0x8F93, 0x8F94, 0x0000, 0x8F95, 0x0000, 0x8F96, + 0x0000, 0x8F97, 0x8F98, 0x8F99, 0x8F9A, 0x8F9B, 0x8F9C, 0x0000, 0x0000, + 0x0000, 0x8F9D, 0x8F9E, 0x0000, 0x0000, 0x0000, 0x8F9F, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8FA0, 0x0000, 0x0000, 0x8FA1, 0x0000, 0x8FA2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FA3, 0x0000, 0x0000, 0x8FA4, + 0x0000, 0x8FA5, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FA6, 0x8FA7, 0x8FA8, + 0x0000, 0x8FA9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8FAA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8FAB, 0x8FAC, 0x8FAD, 0x8FAE, 0x0000, 0x0000, 0x8FAF, 0x8FB0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8FB1, 0x8FB2, 0x0000, 0x8FB3, 0x0000, 0x0000, + 0x8FB4, 0x0000, 0x0000, 0x0000, 0x8FB5, 0x0000, 0x0000, 0x8FB6, 0x0000, + 0x8FB7, 0x0000, 0x0000, 0x0000, 0x8FB8, 0x8FB9, 0x0000, 0x0000, 0x8FBA, + 0x8FBB, 0x8FBC, 0x0000, 0x8FBD, 0x8FBE, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8FBF, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FC0, 0x8FC1, + 0x8FC2, 0x0000, 0x8FC3, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FC4, 0x0000, + 0x8FC5, 0x0000, 0x8FC6, 0x8FC7, 0x8FC8, 0x0000, 0x0000, 0x0000, 0x8FC9, + 0x0000, 0x0000, 0x0000, 0x8FCA, 0x0000, 0x8FCB, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FCC, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FCD, 0x8FCE, 0x0000, + 0x8FCF, 0x0000, 0x0000, 0x0000, 0x8FD0, 0x8FD1, 0x8FD2, 0x0000, 0x8FD3, + 0x0000, 0x8FD4, 0x0000, 0x0000, 0x8FD5, 0x0000, 0x8FD6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FD7, 0x8FD8, 0x8FD9, 0x8FDA, + 0x0000, 0x0000, 0x0000, 0x8FDB, 0x8FDC, 0x8FDD, 0x0000, 0x0000, 0x0000, + 0x8FDE, 0x8FDF, 0x0000, 0x8FE0, 0x0000, 0x8FE1, 0x0000, 0x0000, 0x8FE2, + 0x8FE3, 0x8FE4, 0x0000, 0x0000, 0x8FE5, 0x0000, 0x8FE6, 0x0000, 0x8FE7, + 0x8FE8, 0x8FE9, 0x0000, 0x8FEA, 0x0000, 0x0000, 0x8FEB, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8FEC, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8FED, 0x0000, 0x8FEE, 0x0000, 0x8FEF, + 0x8FF0, 0x0000, 0x0000, 0x0000, 0x8FF1, 0x0000, 0x8FF2, 0x0000, 0x8FF3, + 0x8FF4, 0x0000, 0x8FF5, 0x0000, 0x8FF6, 0x0000, 0x8FF7, 0x0000, 0x0000, + 0x8FF8, 0x8FF9, 0x0000, 0x8FFA, 0x8FFB, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FFD, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8FFE, 0x0000, 0x8FFF, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9000, 0x9001, 0x9002, 0x0000, 0x0000, 0x9003, 0x0000, 0x9004, + 0x9005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9007, 0x9008, 0x9009, 0x0000, 0x900A, 0x900B, 0x0000, 0x0000, + 0x900C, 0x900D, 0x0000, 0x900E, 0x0000, 0x900F, 0x0000, 0x9010, 0x0000, + 0x0000, 0x9011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9012, 0x0000, 0x0000, 0x9013, 0x9014, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9015, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9016, 0x0000, 0x9017, 0x9018, 0x0000, 0x0000, + 0x9019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x901A, + 0x901B, 0x901C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x901D, + 0x0000, 0x0000, 0x901E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x901F, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9020, 0x0000, 0x9021, 0x9022, 0x0000, 0x9023, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9024, 0x9025, 0x9026, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9027, 0x0000, 0x9028, 0x9029, 0x902A, 0x902B, + 0x902C, 0x902D, 0x0000, 0x0000, 0x0000, 0x0000, 0x902E, 0x0000, 0x902F, + 0x9030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9031, + 0x0000, 0x9032, 0x0000, 0x0000, 0x9033, 0x9034, 0x0000, 0x0000, 0x0000, + 0x9035, 0x0000, 0x0000, 0x9036, 0x0000, 0x9037, 0x9038, 0x9039, 0x0000, + 0x0000, 0x0000, 0x903A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x903B, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x903C, 0x0000, 0x0000, 0x903D, 0x0000, + 0x903E, 0x903F, 0x9040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9041, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9042, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9043, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9044, 0x0000, 0x0000, + 0x9045, 0x0000, 0x9046, 0x0000, 0x9047, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9048, 0x0000, 0x0000, 0x9049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x904A, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x904B, 0x0000, 0x904C, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x904D, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x904E, 0x0000, 0x0000, 0x0000, 0x0000, 0x904F, 0x0000, + 0x0000, 0x9050, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9051, 0x0000, 0x9052, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9053, 0x9054, 0x0000, 0x9055, + 0x9056, 0x9057, 0x9058, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9059, 0x0000, 0x0000, 0x0000, 0x905A, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x905B, 0x0000, 0x0000, 0x0000, 0x905C, 0x905D, + 0x0000, 0x905E, 0x905F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9060, 0x9061, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9062, 0x0000, 0x9063, 0x9064, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9065, 0x9066, 0x9067, 0x9068, 0x0000, + 0x0000, 0x0000, 0x9069, 0x0000, 0x906A, 0x0000, 0x0000, 0x0000, 0x906B, + 0x906C, 0x0000, 0x906D, 0x0000, 0x0000, 0x906E, 0x906F, 0x0000, 0x9070, + 0x9071, 0x0000, 0x0000, 0x0000, 0x0000, 0x9072, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9073, 0x0000, 0x9074, 0x0000, 0x0000, 0x9075, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9076, 0x9077, 0x0000, 0x0000, 0x0000, 0x9078, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9079, 0x907A, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x907B, 0x0000, 0x0000, 0x907C, 0x0000, + 0x0000, 0x0000, 0x907D, 0x0000, 0x907E, 0x0000, 0x0000, 0x907F, 0x9080, + 0x0000, 0x0000, 0x0000, 0x9081, 0x9082, 0x0000, 0x0000, 0x9083, 0x9084, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9085, 0x0000, 0x9086, 0x9087, 0x9088, + 0x0000, 0x0000, 0x9089, 0x0000, 0x0000, 0x0000, 0x908A, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x908B, 0x908C, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x908D, 0x0000, 0x908E, 0x0000, 0x908F, + 0x9090, 0x9091, 0x0000, 0x0000, 0x0000, 0x0000, 0x9092, 0x0000, 0x9093, + 0x9094, 0x0000, 0x0000, 0x9095, 0x0000, 0x0000, 0x0000, 0x9096, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9097, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9098, 0x9099, 0x0000, 0x909A, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x909B, 0x0000, + 0x909C, 0x0000, 0x909D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x909E, 0x909F, 0x90A0, 0x0000, 0x90A1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x90A2, 0x90A3, 0x0000, 0x90A4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90A5, 0x0000, + 0x0000, 0x90A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90A7, 0x0000, + 0x90A8, 0x90A9, 0x90AA, 0x0000, 0x0000, 0x0000, 0x90AB, 0x0000, 0x0000, + 0x90AC, 0x0000, 0x90AD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x90AE, 0x90AF, 0x0000, 0x0000, 0x0000, 0x90B0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x90B1, 0x0000, 0x0000, 0x0000, 0x90B2, 0x0000, + 0x0000, 0x90B3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90B4, 0x90B5, + 0x90B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x90B7, 0x90B8, 0x0000, 0x0000, 0x90B9, 0x90BA, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90BB, 0x0000, 0x90BC, 0x0000, + 0x0000, 0x90BD, 0x0000, 0x0000, 0x90BE, 0x0000, 0x0000, 0x0000, 0x0000, + 0x90BF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90C0, 0x0000, + 0x90C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90C2, 0x0000, 0x0000, 0x90C3, 0x0000, 0x90C4, 0x0000, 0x90C5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90C6, 0x0000, 0x0000, + 0x90C7, 0x90C8, 0x0000, 0x0000, 0x0000, 0x90C9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x90CA, 0x0000, 0x0000, 0x90CB, 0x0000, 0x90CC, 0x0000, + 0x0000, 0x0000, 0x0000, 0x90CD, 0x90CE, 0x90CF, 0x90D0, 0x0000, 0x0000, + 0x90D1, 0x0000, 0x90D2, 0x90D3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x90D4, 0x0000, 0x0000, 0x90D5, 0x90D6, 0x0000, 0x90D7, + 0x90D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x90D9, 0x90DA, 0x0000, 0x0000, 0x0000, 0x0000, 0x90DB, + 0x0000, 0x0000, 0x0000, 0x90DC, 0x0000, 0x0000, 0x90DD, 0x0000, 0x90DE, + 0x0000, 0x0000, 0x0000, 0x90DF, 0x90E0, 0x90E1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x90E2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90E3, 0x0000, 0x0000, 0x90E4, + 0x0000, 0x90E5, 0x90E6, 0x0000, 0x90E7, 0x90E8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x90E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x90EA, 0x0000, + 0x90EB, 0x90EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x90ED, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90EE, 0x0000, 0x0000, 0x0000, + 0x90EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x90F0, 0x90F1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90F2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90F3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90F4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90F5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x90F6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x90F7, 0x0000, 0x90F8, 0x90F9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x90FA, 0x0000, 0x90FB, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90FC, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x90FD, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90FE, + 0x90FF, 0x0000, 0x0000, 0x9100, 0x9101, 0x0000, 0x0000, 0x9102, 0x0000, + 0x9103, 0x9104, 0x0000, 0x0000, 0x0000, 0x9105, 0x0000, 0x0000, 0x9106, + 0x0000, 0x0000, 0x9107, 0x9108, 0x9109, 0x0000, 0x0000, 0x0000, 0x0000, + 0x910A, 0x0000, 0x0000, 0x0000, 0x910B, 0x0000, 0x910C, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x910D, 0x0000, 0x0000, 0x0000, 0x0000, 0x910E, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x910F, 0x9110, 0x0000, 0x9111, 0x0000, 0x0000, + 0x0000, 0x9112, 0x9113, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9114, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9115, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9116, 0x9117, 0x9118, + 0x9119, 0x911A, 0x911B, 0x911C, 0x911D, 0x911E, 0x911F, 0x9120, 0x9121, + 0x9122, 0x9123, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128, 0x9129, 0x912A, + 0x912B, 0x912C, 0x912D, 0x912E, 0x912F, 0x9130, 0x9131, 0x9132, 0x9133, + 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x9139, 0x913A, 0x913B, 0x913C, + 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, 0x9142, 0x9143, 0x9144, 0x9145, + 0x9146, 0x9147, 0x9148, 0x9149, 0x914A, 0x914B, 0x914C, 0x914D, 0x914E, + 0x914F, 0x9150, 0x9151, 0x9152, 0x9153, 0x9154, 0x9155, 0x9156, 0x9157, + 0x9158, 0x9159, 0x915A, 0x915B, 0x915C, 0x915D, 0x915E, 0x915F, 0x9160, + 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, + 0x916A, 0x916B, 0x916C, 0x916D, 0x916E, 0x916F, 0x9170, 0x9171, 0x9172, + 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917A, 0x917B, + 0x917C, 0x917D, 0x917E, 0x917F, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, + 0x9185, 0x9186, 0x9187, 0x9188, 0x9189, 0x918A, 0x918B, 0x918C, 0x918D, + 0x918E, 0x918F, 0x9190, 0x9191, 0x9192, 0x9193, 0x9194, 0x9195, 0x9196, + 0x9197, 0x9198, 0x9199, 0x919A, 0x919B, 0x919C, 0x919D, 0x919E, 0x919F, + 0x91A0, 0x91A1, 0x91A2, 0x91A3, 0x91A4, 0x91A5, 0x91A6, 0x91A7, 0x91A8, + 0x91A9, 0x91AA, 0x91AB, 0x91AC, 0x91AD, 0x91AE, 0x91AF, 0x91B0, 0x91B1, + 0x91B2, 0x91B3, 0x91B4, 0x91B5, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BA, + 0x91BB, 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3, + 0x91C4, 0x91C5, 0x91C6, 0x91C7, 0x91C8, 0x91C9, 0x91CA, 0x91CB, 0x91CC, + 0x91CD, 0x91CE, 0x91CF, 0x91D0, 0x91D1, 0x91D2, 0x91D3, 0x91D4, 0x91D5, + 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB, 0x91DC, 0x91DD, 0x91DE, + 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4, 0x91E5, 0x91E6, 0x91E7, + 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF, 0x91F0, + 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5, 0x91F6, 0x91F7, 0x91F8, 0x91F9, + 0x91FA, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF, 0x9200, 0x9201, 0x9202, + 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, 0x9208, 0x9209, 0x920A, 0x920B, + 0x920C, 0x920D, 0x920E, 0x920F, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, + 0x9215, 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, + 0x921E, 0x921F, 0x9220, 0x9221, 0x9222, 0x9223, 0x0000, 0x0000, 0x9224, + 0x0000, 0x9225, 0x0000, 0x0000, 0x9226, 0x9227, 0x9228, 0x9229, 0x922A, + 0x922B, 0x922C, 0x922D, 0x922E, 0x922F, 0x0000, 0x9230, 0x0000, 0x9231, + 0x0000, 0x0000, 0x9232, 0x9233, 0x0000, 0x0000, 0x0000, 0x9234, 0x9235, + 0x9236, 0x9237, 0x0000, 0x0000, 0x9238, 0x9239, 0x923A, 0x923B, 0x923C, + 0x923D, 0x923E, 0x923F, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, + 0x9246, 0x9247, 0x9248, 0x9249, 0x924A, 0x924B, 0x924C, 0x924D, 0x924E, + 0x924F, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, + 0x9258, 0x9259, 0x925A, 0x925B, 0x925C, 0x925D, 0x925E, 0x925F, 0x9260, + 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, + 0x926A, 0x926B, 0x926C, 0x926D, 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, + 0x9273, 0x0000, 0x9274, 0x0000, 0x0000, 0x9275, 0x9276, 0x9277, 0x9278, + 0x9279, 0x927A, 0x927B, 0x927C, 0x927D, 0x927E, 0x927F, 0x9280, 0x9281, + 0x9282, 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, + 0x928B, 0x928C, 0x928D, 0x928E, 0x928F, 0x9290, 0x9291, 0x9292, 0x9293, + 0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929A, 0x929B, 0x929C, + 0x929D, 0x929E, 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, 0x92A4, 0x92A5, + 0x92A6, 0x92A7, 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, 0x92AE, + 0x92AF, 0x92B0, 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B7, + 0x92B8, 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, 0x92BF, 0x92C0, + 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C8, 0x92C9, + 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, 0x92D0, 0x92D1, 0x92D2, + 0x92D3, 0x0000, 0x0000, 0x0000, 0x92D4, 0x92D5, 0x92D6, 0x0000, 0x0000, + 0x0000, 0x92D7, 0x92D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23AC, 0x23AE, 0x23B0, 0x3312, + 0x3315, 0x23B2, 0x23B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23B6, 0x23B8, 0x23BA, + 0x23BC, 0x23BE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23C0, 0x0000, + 0x23C2, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, 0x92E0, + 0x92E1, 0x92E2, 0x23C4, 0x23C6, 0x23C8, 0x23CA, 0x23CC, 0x23CE, 0x23D0, + 0x23D2, 0x23D4, 0x23D6, 0x23D8, 0x23DA, 0x23DC, 0x0000, 0x23DE, 0x23E0, + 0x23E2, 0x23E4, 0x23E6, 0x0000, 0x23E8, 0x0000, 0x23EA, 0x23EC, 0x0000, + 0x23EE, 0x23F0, 0x0000, 0x23F2, 0x23F4, 0x23F6, 0x23F8, 0x23FA, 0x23FC, + 0x23FE, 0x2400, 0x2402, 0x2404, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, + 0x92E8, 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0, + 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, 0x92F8, 0x92F9, + 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, 0x9300, 0x9301, 0x9302, + 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309, 0x930A, 0x930B, + 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, + 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, 0x931A, 0x931B, 0x931C, 0x931D, + 0x931E, 0x931F, 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, + 0x9327, 0x9328, 0x9329, 0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, + 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, + 0x9339, 0x933A, 0x933B, 0x933C, 0x933D, 0x933E, 0x933F, 0x9340, 0x9341, + 0x9342, 0x9343, 0x9344, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934A, 0x934B, 0x934C, 0x934D, + 0x934E, 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, + 0x9357, 0x9358, 0x9359, 0x935A, 0x935B, 0x2406, 0x2408, 0x240A, 0x240C, + 0x240E, 0x2410, 0x2412, 0x2414, 0x2416, 0x2418, 0x241A, 0x241C, 0x241E, + 0x2420, 0x2422, 0x2424, 0x2426, 0x2428, 0x935C, 0x935D, 0x935E, 0x935F, + 0x242A, 0x242C, 0x242E, 0x2430, 0x2432, 0x2434, 0x2436, 0x2438, 0x243A, + 0x243C, 0x243E, 0x2440, 0x2442, 0x2444, 0x2446, 0x2448, 0x244A, 0x244C, + 0x244E, 0x2450, 0x2452, 0x2454, 0x2456, 0x2458, 0x245A, 0x245C, 0x245E, + 0x2460, 0x2462, 0x2464, 0x2466, 0x2468, 0x246A, 0x246C, 0x246E, 0x2470, + 0x2472, 0x2474, 0x2476, 0x2478, 0x247A, 0x247C, 0x247E, 0x2480, 0x2482, + 0x2484, 0x2486, 0x2488, 0x248A, 0x248C, 0x248E, 0x2490, 0x2492, 0x2494, + 0x2496, 0x2498, 0x249A, 0x249C, 0x249E, 0x24A0, 0x24A2, 0x24A4, 0x24A6, + 0x24A8, 0x24AA, 0x24AC, 0x24AE, 0x24B0, 0x24B2, 0x24B4, 0x24B6, 0x24B8, + 0x24BA, 0x24BC, 0x24BE, 0x24C0, 0x24C2, 0x24C4, 0x24C6, 0x24C8, 0x24CA, + 0x24CC, 0x24CE, 0x24D0, 0x24D2, 0x24D4, 0x24D6, 0x24D8, 0x24DA, 0x24DC, + 0x24DE, 0x24E0, 0x24E2, 0x24E4, 0x24E6, 0x24E8, 0x24EA, 0x24EC, 0x24EE, + 0x24F0, 0x24F2, 0x24F4, 0x24F6, 0x24F8, 0x24FA, 0x24FC, 0x24FE, 0x2500, + 0x2502, 0x2504, 0x2506, 0x2508, 0x250A, 0x250C, 0x250E, 0x2510, 0x2512, + 0x2514, 0x2516, 0x2518, 0x251A, 0x251C, 0x251E, 0x2520, 0x2522, 0x2524, + 0x2526, 0x2528, 0x252A, 0x252C, 0x252E, 0x2530, 0x2532, 0x2534, 0x2536, + 0x2538, 0x253A, 0x253C, 0x253E, 0x2540, 0x2542, 0x2544, 0x2546, 0x2548, + 0x254A, 0x254C, 0x254E, 0x2550, 0x2552, 0x2554, 0x2556, 0x2558, 0x255A, + 0x255C, 0x255E, 0x2560, 0x2562, 0x2564, 0x2566, 0x2568, 0x256A, 0x256C, + 0x256E, 0x2570, 0x2572, 0x2574, 0x2576, 0x2578, 0x257A, 0x257C, 0x257E, + 0x2580, 0x2582, 0x2584, 0x2586, 0x2588, 0x258A, 0x258C, 0x258E, 0x2590, + 0x2592, 0x2594, 0x2596, 0x2598, 0x259A, 0x259C, 0x259E, 0x25A0, 0x25A2, + 0x25A4, 0x25A6, 0x25A8, 0x25AA, 0x25AC, 0x25AE, 0x25B0, 0x25B2, 0x25B4, + 0x25B6, 0x25B8, 0x25BA, 0x25BC, 0x25BE, 0x25C0, 0x25C2, 0x25C4, 0x25C6, + 0x25C8, 0x25CA, 0x25CC, 0x25CE, 0x25D0, 0x25D2, 0x25D4, 0x25D6, 0x25D8, + 0x25DA, 0x25DC, 0x25DE, 0x25E0, 0x25E2, 0x25E4, 0x25E6, 0x25E8, 0x25EA, + 0x25EC, 0x25EE, 0x25F0, 0x25F2, 0x25F4, 0x25F6, 0x25F8, 0x25FA, 0x25FC, + 0x25FE, 0x2600, 0x2602, 0x2604, 0x2606, 0x2608, 0x260A, 0x260C, 0x3318, + 0x331B, 0x331E, 0x260E, 0x2610, 0x2612, 0x2614, 0x2616, 0x2618, 0x261A, + 0x261C, 0x261E, 0x2620, 0x2622, 0x2624, 0x2626, 0x2628, 0x262A, 0x262C, + 0x262E, 0x2630, 0x2632, 0x2634, 0x2636, 0x2638, 0x263A, 0x263C, 0x263E, + 0x2640, 0x2642, 0x2644, 0x2646, 0x2648, 0x264A, 0x264C, 0x264E, 0x2650, + 0x2652, 0x2654, 0x2656, 0x2658, 0x265A, 0x265C, 0x265E, 0x2660, 0x2662, + 0x2664, 0x2666, 0x2668, 0x266A, 0x266C, 0x266E, 0x2670, 0x2672, 0x2674, + 0x2676, 0x2678, 0x267A, 0x267C, 0x267E, 0x2680, 0x2682, 0x2684, 0x2686, + 0x2688, 0x268A, 0x268C, 0x268E, 0x2690, 0x2692, 0x2694, 0x2696, 0x2698, + 0x269A, 0x269C, 0x269E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3321, 0x3324, 0x3327, 0x332A, 0x332D, 0x3330, + 0x3333, 0x3336, 0x3339, 0x333C, 0x333F, 0x3342, 0x3345, 0x3348, 0x334B, + 0x334E, 0x3351, 0x3354, 0x3357, 0x335A, 0x335D, 0x3360, 0x3363, 0x3366, + 0x3369, 0x336C, 0x336F, 0x3372, 0x3375, 0x3378, 0x337B, 0x337E, 0x3381, + 0x3384, 0x3387, 0x338A, 0x338D, 0x3390, 0x3393, 0x3396, 0x3399, 0x339C, + 0x339F, 0x33A2, 0x33A5, 0x33A8, 0x33AB, 0x33AE, 0x33B1, 0x33B4, 0x33B7, + 0x33BA, 0x33BD, 0x33C0, 0x33C3, 0x33C6, 0x33C9, 0x33CC, 0x33CF, 0x33D2, + 0x33D5, 0x33D8, 0x33DB, 0x33DE, 0x0000, 0x0000, 0x33E1, 0x33E4, 0x33E7, + 0x33EA, 0x33ED, 0x33F0, 0x33F3, 0x33F6, 0x33F9, 0x33FC, 0x33FF, 0x3402, + 0x3405, 0x3408, 0x340B, 0x340E, 0x3411, 0x3414, 0x3417, 0x341A, 0x341D, + 0x3420, 0x3423, 0x3426, 0x3429, 0x342C, 0x342F, 0x3432, 0x3435, 0x3438, + 0x343B, 0x343E, 0x3441, 0x3444, 0x3447, 0x344A, 0x344D, 0x3450, 0x3453, + 0x3456, 0x3459, 0x345C, 0x345F, 0x3462, 0x3465, 0x3468, 0x346B, 0x346E, + 0x3471, 0x3474, 0x3477, 0x347A, 0x347D, 0x3480, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3483, 0x3486, 0x41A4, 0x41A9, 0x41AE, 0x41B3, 0x41B8, 0x41BD, + 0x41C2, 0x3489, 0x41C7, 0x41DA, 0x41E3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9360, 0x9361, 0x9362, + 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x936A, 0x936B, 0x936C, 0x936D, 0x936E, 0x936F, 0x9370, + 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, + 0x937A, 0x937B, 0x937C, 0x937D, 0x937E, 0x0000, 0x0000, 0x937F, 0x9380, + 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, + 0x938A, 0x0000, 0x938B, 0x938C, 0x938D, 0x938E, 0x938F, 0x9390, 0x9391, + 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939A, + 0x939B, 0x939C, 0x939D, 0x0000, 0x939E, 0x939F, 0x93A0, 0x93A1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x93A2, 0x26A0, 0x93A3, 0x0000, 0x93A4, 0x0000, + 0x93A5, 0x26A2, 0x93A6, 0x26A4, 0x93A7, 0x26A6, 0x93A8, 0x26A8, 0x93A9, + 0x26AA, 0x93AA, 0x93AB, 0x93AC, 0x93AD, 0x93AE, 0x93AF, 0x93B0, 0x93B1, + 0x93B2, 0x93B3, 0x93B4, 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, + 0x93BB, 0x93BC, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3, + 0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CA, 0x93CB, 0x93CC, + 0x93CD, 0x93CE, 0x93CF, 0x93D0, 0x93D1, 0x93D2, 0x93D3, 0x93D4, 0x93D5, + 0x93D6, 0x93D7, 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0x93DC, 0x93DD, 0x93DE, + 0x93DF, 0x93E0, 0x93E1, 0x93E2, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0x93E7, + 0x93E8, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, 0x93EE, 0x93EF, 0x93F0, + 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6, 0x93F7, 0x93F8, 0x93F9, + 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402, + 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A, 0x940B, + 0x940C, 0x940D, 0x940E, 0x940F, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, + 0x9415, 0x9416, 0x9417, 0x9418, 0x9419, 0x941A, 0x941B, 0x941C, 0x941D, + 0x941E, 0x26AC, 0x26AE, 0x26B0, 0x26B2, 0x26B4, 0x26B6, 0x26B8, 0x26BA, + 0x0000, 0x0000, 0x0000, 0x0000, 0x941F, 0x9420, 0x9421, 0x9422, 0x9423, + 0x9424, 0x9425, 0x9426, 0x9427, 0x9428, 0x9429, 0x942A, 0x942B, 0x942C, + 0x942D, 0x942E, 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, + 0x9436, 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, 0x943D, 0x943E, + 0x943F, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, + 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F, 0x9450, + 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, + 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F, 0x9460, 0x9461, 0x9462, + 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946A, 0x946B, + 0x946C, 0x946D, 0x946E, 0x946F, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, + 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, + 0x947E, 0x947F, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, + 0x9487, 0x9488, 0x9489, 0x948A, 0x948B, 0x948C, 0x948D, 0x948E, 0x948F, + 0x9490, 0x9491, 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, 0x9498, + 0x9499, 0x949A, 0x949B, 0x949C, 0x949D, 0x949E, 0x949F, 0x94A0, 0x94A1, + 0x94A2, 0x94A3, 0x94A4, 0x94A5, 0x94A6, 0x94A7, 0x94A8, 0x94A9, 0x94AA, + 0x94AB, 0x94AC, 0x94AD, 0x94AE, 0x94AF, 0x94B0, 0x94B1, 0x94B2, 0x94B3, + 0x94B4, 0x94B5, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BB, 0x94BC, + 0x94BD, 0x94BE, 0x94BF, 0x94C0, 0x94C1, 0x94C2, 0x94C3, 0x94C4, 0x94C5, + 0x94C6, 0x94C7, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, + 0x94CF, 0x94D0, 0x94D1, 0x94D2, 0x94D3, 0x94D4, 0x94D5, 0x94D6, 0x94D7, + 0x94D8, 0x94D9, 0x94DA, 0x94DB, 0x94DC, 0x0000, 0x0000, 0x0000, 0x94DD, + 0x94DE, 0x94DF, 0x94E0, 0x94E1, 0x94E2, 0x0000, 0x0000, 0x94E3, 0x94E4, + 0x94E5, 0x94E6, 0x94E7, 0x94E8, 0x0000, 0x0000, 0x94E9, 0x94EA, 0x94EB, + 0x94EC, 0x94ED, 0x94EE, 0x0000, 0x0000, 0x94EF, 0x94F0, 0x94F1, 0x0000, + 0x0000, 0x0000, 0x94F2, 0x94F3, 0x94F4, 0x94F5, 0x94F6, 0x94F7, 0x94F8, + 0x0000, 0x94F9, 0x94FA, 0x94FB, 0x94FC, 0x94FD, 0x94FE, 0x94FF, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}; + +const FX_WCHAR g_UnicodeData_Normalization_Map1[5376] = { + 0x0066, 0x0053, 0x0053, 0x0059, 0x0020, 0x0308, 0x0061, 0x0052, 0x0304, + 0x0032, 0x0033, 0x0301, 0x03BC, 0x0327, 0x0031, 0x006F, 0x0041, 0x0041, + 0x0041, 0x0041, 0x0041, 0x0041, 0x0043, 0x0045, 0x0045, 0x0045, 0x0045, + 0x0049, 0x0049, 0x0049, 0x0049, 0x0044, 0x004E, 0x004F, 0x004F, 0x004F, + 0x004F, 0x004F, 0x004F, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x0061, + 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0063, 0x0065, 0x0065, 0x0065, + 0x0065, 0x0069, 0x0069, 0x0069, 0x0069, 0x006E, 0x006F, 0x006F, 0x006F, + 0x006F, 0x006F, 0x006F, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x0079, + 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063, 0x0043, + 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, + 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, + 0x0065, 0x0047, 0x0067, 0x0047, 0x0067, 0x0047, 0x0067, 0x0047, 0x0067, + 0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, + 0x0069, 0x0049, 0x0069, 0x0049, 0x004A, 0x006A, 0x004B, 0x006B, 0x004B, + 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, + 0x006C, 0x004E, 0x006E, 0x004E, 0x006E, 0x004E, 0x006E, 0x006E, 0x004F, + 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x0052, 0x0072, 0x0052, 0x0072, + 0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, + 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074, 0x0055, 0x0075, + 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, + 0x0075, 0x0057, 0x0077, 0x0059, 0x0079, 0x0059, 0x005A, 0x007A, 0x005A, + 0x007A, 0x005A, 0x007A, 0x0073, 0x0062, 0x0042, 0x0042, 0x0062, 0x0043, + 0x0063, 0x0044, 0x0044, 0x0044, 0x0064, 0x0045, 0x0045, 0x0046, 0x0066, + 0x0047, 0x0049, 0x004B, 0x006B, 0x006C, 0x004D, 0x004E, 0x006E, 0x004F, + 0x004F, 0x006F, 0x0050, 0x0070, 0x0283, 0x0074, 0x0054, 0x0074, 0x0054, + 0x0055, 0x0075, 0x0056, 0x0059, 0x0079, 0x005A, 0x007A, 0x01B7, 0x0041, + 0x0061, 0x0049, 0x0069, 0x004F, 0x006F, 0x0055, 0x0075, 0x00DC, 0x00FC, + 0x00DC, 0x00FC, 0x00DC, 0x00FC, 0x00DC, 0x00FC, 0x0065, 0x0041, 0x0061, + 0x0041, 0x0061, 0x00C6, 0x00E6, 0x0047, 0x0067, 0x0047, 0x0067, 0x004B, + 0x006B, 0x004F, 0x006F, 0x01EA, 0x01EB, 0x01B7, 0x0292, 0x006A, 0x0047, + 0x0067, 0x004E, 0x006E, 0x0041, 0x0061, 0x00C6, 0x00E6, 0x00D8, 0x00F8, + 0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065, 0x0049, + 0x0069, 0x0049, 0x0069, 0x004F, 0x006F, 0x004F, 0x006F, 0x0052, 0x0072, + 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075, 0x0053, 0x0073, 0x0054, + 0x0074, 0x0048, 0x0068, 0x004E, 0x0064, 0x005A, 0x007A, 0x0041, 0x0061, + 0x0045, 0x0065, 0x00D6, 0x00F6, 0x00D5, 0x00F5, 0x004F, 0x006F, 0x022E, + 0x022F, 0x0059, 0x0079, 0x006C, 0x006E, 0x0074, 0x006A, 0x0041, 0x0043, + 0x0063, 0x004C, 0x0054, 0x0053, 0x005A, 0x0042, 0x0055, 0x0056, 0x0045, + 0x0065, 0x004A, 0x006A, 0x0051, 0x0071, 0x0052, 0x0072, 0x0059, 0x0079, + 0x0061, 0x0251, 0x0062, 0x006F, 0x0063, 0x0064, 0x0064, 0x0065, 0x0259, + 0x0065, 0x0065, 0x0065, 0x0065, 0x006A, 0x0067, 0x0067, 0x0047, 0x0068, + 0x0068, 0x0069, 0x0049, 0x006C, 0x006C, 0x006C, 0x006D, 0x006D, 0x006D, + 0x006E, 0x006E, 0x006E, 0x006F, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, + 0x0072, 0x0072, 0x0052, 0x0052, 0x0073, 0x006A, 0x0283, 0x0283, 0x0074, + 0x0074, 0x0055, 0x0076, 0x0076, 0x0077, 0x0079, 0x0059, 0x007A, 0x007A, + 0x0292, 0x0043, 0x0042, 0x0065, 0x0047, 0x0048, 0x006A, 0x006B, 0x004C, + 0x0071, 0x0068, 0x0068, 0x0068, 0x0068, 0x006A, 0x0072, 0x0279, 0x027B, + 0x0281, 0x0077, 0x0079, 0x0263, 0x006C, 0x0073, 0x0078, 0x0295, 0x0300, + 0x0301, 0x0313, 0x0308, 0x0061, 0x0065, 0x0069, 0x006F, 0x0075, 0x0063, + 0x0064, 0x0068, 0x006D, 0x0072, 0x0074, 0x0076, 0x0078, 0x02B9, 0x003B, + 0x0020, 0x00A8, 0x0391, 0x00B7, 0x0395, 0x0397, 0x0399, 0x039F, 0x03A5, + 0x03A9, 0x03CA, 0x0399, 0x03A5, 0x03B1, 0x03B5, 0x03B7, 0x03B9, 0x03CB, + 0x03B9, 0x03C5, 0x03BF, 0x03C5, 0x03C9, 0x03B2, 0x03B8, 0x03A5, 0x03D2, + 0x03D2, 0x03C6, 0x03C0, 0x03BA, 0x03C1, 0x03C2, 0x0398, 0x03B5, 0x03A3, + 0x0415, 0x0415, 0x0413, 0x0406, 0x041A, 0x0418, 0x0423, 0x0418, 0x0438, + 0x0435, 0x0435, 0x0433, 0x0456, 0x043A, 0x0438, 0x0443, 0x0466, 0x0467, + 0x046A, 0x046B, 0x0474, 0x0475, 0x0460, 0x0461, 0x0419, 0x0439, 0x0420, + 0x0440, 0x0413, 0x0433, 0x0413, 0x0433, 0x0413, 0x0433, 0x0416, 0x0436, + 0x0417, 0x0437, 0x041A, 0x043A, 0x041A, 0x043A, 0x041A, 0x043A, 0x041A, + 0x043A, 0x041D, 0x043D, 0x041F, 0x043F, 0x0421, 0x0441, 0x0422, 0x0442, + 0x04AE, 0x04AF, 0x0425, 0x0445, 0x0427, 0x0447, 0x0427, 0x0447, 0x0416, + 0x0436, 0x04BC, 0x04BD, 0x0416, 0x0436, 0x041A, 0x043A, 0x041B, 0x043B, + 0x041D, 0x043D, 0x041D, 0x043D, 0x041C, 0x043C, 0x0410, 0x0430, 0x0410, + 0x0430, 0x0415, 0x0435, 0x04D8, 0x04D9, 0x0416, 0x0436, 0x0417, 0x0437, + 0x0418, 0x0438, 0x0418, 0x0438, 0x041E, 0x043E, 0x04E8, 0x04E9, 0x042D, + 0x044D, 0x0423, 0x0443, 0x0423, 0x0443, 0x0423, 0x0443, 0x0427, 0x0447, + 0x0413, 0x0433, 0x042B, 0x044B, 0x0413, 0x0433, 0x0425, 0x0445, 0x0425, + 0x0445, 0x0417, 0x0437, 0x041B, 0x043B, 0x0F0B, 0x10DC, 0x0041, 0x00C6, + 0x0042, 0x0042, 0x0044, 0x0045, 0x018E, 0x0047, 0x0048, 0x0049, 0x004A, + 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0222, 0x0050, 0x0052, 0x0054, + 0x0055, 0x0057, 0x0061, 0x0250, 0x0251, 0x1D02, 0x0062, 0x0064, 0x0065, + 0x0259, 0x025B, 0x025C, 0x0067, 0x006B, 0x006D, 0x014B, 0x006F, 0x0254, + 0x1D16, 0x1D17, 0x0070, 0x0074, 0x0075, 0x1D1D, 0x026F, 0x0076, 0x1D25, + 0x03B2, 0x03B3, 0x03B4, 0x03C6, 0x03C7, 0x0069, 0x0072, 0x0075, 0x0076, + 0x03B2, 0x03B3, 0x03C1, 0x03C6, 0x03C7, 0x0062, 0x0064, 0x0066, 0x006D, + 0x006E, 0x0070, 0x0072, 0x0072, 0x0073, 0x0074, 0x007A, 0x0067, 0x043D, + 0x004C, 0x0070, 0x0055, 0x028A, 0x0062, 0x0064, 0x0066, 0x0067, 0x006B, + 0x006C, 0x006D, 0x006E, 0x0070, 0x0072, 0x0073, 0x0283, 0x0076, 0x0078, + 0x007A, 0x0061, 0x0251, 0x0064, 0x0065, 0x0065, 0x0065, 0x0065, 0x0069, + 0x0283, 0x0252, 0x0063, 0x0255, 0x00F0, 0x025C, 0x0066, 0x025F, 0x0261, + 0x0265, 0x0268, 0x0269, 0x026A, 0x1D7B, 0x029D, 0x026D, 0x1D85, 0x029F, + 0x0271, 0x0270, 0x0272, 0x0273, 0x0274, 0x0275, 0x0278, 0x0282, 0x0283, + 0x01AB, 0x0289, 0x028A, 0x1D1C, 0x028B, 0x028C, 0x007A, 0x0290, 0x0291, + 0x0292, 0x03B8, 0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, + 0x0062, 0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064, + 0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, + 0x0065, 0x0045, 0x0065, 0x0228, 0x0229, 0x0046, 0x0066, 0x0047, 0x0067, + 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, + 0x0068, 0x0049, 0x0069, 0x00CF, 0x00EF, 0x004B, 0x006B, 0x004B, 0x006B, + 0x004B, 0x006B, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, + 0x006C, 0x004D, 0x006D, 0x004D, 0x006D, 0x004D, 0x006D, 0x004E, 0x006E, + 0x004E, 0x006E, 0x004E, 0x006E, 0x004E, 0x006E, 0x00D5, 0x00F5, 0x00D5, + 0x00F5, 0x014C, 0x014D, 0x014C, 0x014D, 0x0050, 0x0070, 0x0050, 0x0070, + 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0053, + 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, + 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074, 0x0055, + 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0168, 0x0169, 0x016A, 0x016B, + 0x0056, 0x0076, 0x0056, 0x0076, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, + 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, + 0x0059, 0x0079, 0x005A, 0x007A, 0x005A, 0x007A, 0x005A, 0x007A, 0x0068, + 0x0074, 0x0077, 0x0079, 0x0061, 0x017F, 0x0041, 0x0061, 0x0041, 0x0061, + 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, + 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, + 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, + 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, + 0x0049, 0x0069, 0x0049, 0x0069, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, + 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, + 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, + 0x006F, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, + 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0059, 0x0079, 0x0059, + 0x0079, 0x0059, 0x0079, 0x0059, 0x0079, 0x03B1, 0x03B1, 0x03B1, 0x03B1, + 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, + 0x0391, 0x0391, 0x0391, 0x03B5, 0x03B5, 0x03B5, 0x03B5, 0x03B5, 0x03B5, + 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x03B7, 0x03B7, 0x03B7, + 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x0397, 0x0397, 0x0397, 0x0397, + 0x0397, 0x0397, 0x0397, 0x0397, 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x03B9, + 0x03B9, 0x03B9, 0x03B9, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, + 0x0399, 0x0399, 0x03BF, 0x03BF, 0x03BF, 0x03BF, 0x03BF, 0x03BF, 0x039F, + 0x039F, 0x039F, 0x039F, 0x039F, 0x039F, 0x03C5, 0x03C5, 0x03C5, 0x03C5, + 0x03C5, 0x03C5, 0x03C5, 0x03C5, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03C9, + 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03A9, 0x03A9, + 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03B1, 0x03B1, 0x03B5, + 0x03B5, 0x03B7, 0x03B7, 0x03B9, 0x03B9, 0x03BF, 0x03BF, 0x03C5, 0x03C5, + 0x03C9, 0x03C9, 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x03B1, + 0x03B1, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, + 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x0397, + 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x03C9, 0x03C9, + 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03A9, 0x03A9, 0x03A9, + 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03B1, 0x03B1, 0x03B1, 0x03B1, + 0x03B1, 0x03B1, 0x03B1, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x03B7, + 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x0395, 0x0395, 0x0397, 0x0397, 0x0397, + 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x0399, 0x0399, 0x0399, + 0x0399, 0x03C5, 0x03C5, 0x03C5, 0x03C5, 0x03C1, 0x03C1, 0x03C5, 0x03C5, + 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03A1, 0x03C9, 0x03C9, 0x03C9, 0x03C9, + 0x03C9, 0x039F, 0x039F, 0x03A9, 0x03A9, 0x03A9, 0x00B4, 0x0314, 0x0020, + 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, + 0x0020, 0x2010, 0x0333, 0x002E, 0x0020, 0x0020, 0x0030, 0x0069, 0x0034, + 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x002B, 0x2212, 0x003D, 0x0028, + 0x0029, 0x006E, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, + 0x0037, 0x0038, 0x0039, 0x002B, 0x2212, 0x003D, 0x0028, 0x0029, 0x0061, + 0x0065, 0x006F, 0x0078, 0x0259, 0x0043, 0x0190, 0x0067, 0x0048, 0x0048, + 0x0048, 0x0068, 0x0068, 0x0049, 0x0049, 0x004C, 0x006C, 0x004E, 0x0050, + 0x0051, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0056, 0x005A, 0x03A9, + 0x01B1, 0x005A, 0x004B, 0x00C5, 0x0042, 0x0043, 0x0065, 0x0065, 0x0045, + 0x0046, 0x004D, 0x006F, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x0069, 0x03C0, + 0x03B3, 0x0393, 0x03A0, 0x2211, 0x0044, 0x0064, 0x0065, 0x0069, 0x006A, + 0x0049, 0x0056, 0x0058, 0x004C, 0x0043, 0x0044, 0x004D, 0x0069, 0x0076, + 0x0078, 0x006C, 0x0063, 0x0064, 0x006D, 0x2203, 0x2208, 0x220B, 0x3008, + 0x3009, 0x0062, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, + 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, + 0x005A, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, + 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, + 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, + 0x0039, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x004C, 0x006C, 0x004C, 0x0050, 0x0052, 0x0061, 0x0074, + 0x0048, 0x0068, 0x004B, 0x006B, 0x005A, 0x007A, 0x0076, 0x0057, 0x0058, + 0x0076, 0x006A, 0x0056, 0x2D61, 0x6BCD, 0x6C11, 0x864E, 0x897F, 0x89D2, + 0x957F, 0x9752, 0x98DF, 0x9AA8, 0x9B3C, 0x9EA6, 0x9EC4, 0x9F9F, 0x4E00, + 0x4E28, 0x4E36, 0x4E3F, 0x4E59, 0x4E85, 0x4E8C, 0x4EA0, 0x4EBA, 0x513F, + 0x5165, 0x516B, 0x5182, 0x5196, 0x51AB, 0x51E0, 0x51F5, 0x5200, 0x529B, + 0x52F9, 0x5315, 0x531A, 0x5338, 0x5341, 0x535C, 0x5369, 0x5382, 0x53B6, + 0x53C8, 0x53E3, 0x56D7, 0x571F, 0x58EB, 0x5902, 0x590A, 0x5915, 0x5927, + 0x5973, 0x5B50, 0x5B80, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C6E, 0x5C71, + 0x5DDB, 0x5DE5, 0x5DF1, 0x5DFE, 0x5E72, 0x5E7A, 0x5E7F, 0x5EF4, 0x5EFE, + 0x5F0B, 0x5F13, 0x5F50, 0x5F61, 0x5F73, 0x5FC3, 0x6208, 0x6236, 0x624B, + 0x652F, 0x6534, 0x6587, 0x6597, 0x65A4, 0x65B9, 0x65E0, 0x65E5, 0x66F0, + 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BB3, 0x6BCB, 0x6BD4, 0x6BDB, + 0x6C0F, 0x6C14, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x723F, 0x7247, + 0x7259, 0x725B, 0x72AC, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, + 0x7528, 0x7530, 0x758B, 0x7592, 0x7676, 0x767D, 0x76AE, 0x76BF, 0x76EE, + 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79B8, 0x79BE, 0x7A74, 0x7ACB, 0x7AF9, + 0x7C73, 0x7CF8, 0x7F36, 0x7F51, 0x7F8A, 0x7FBD, 0x8001, 0x800C, 0x8012, + 0x8033, 0x807F, 0x8089, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, + 0x821F, 0x826E, 0x8272, 0x8278, 0x864D, 0x866B, 0x8840, 0x884C, 0x8863, + 0x897E, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C78, 0x8C9D, + 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, 0x8FB0, 0x8FB5, 0x9091, + 0x9149, 0x91C6, 0x91CC, 0x91D1, 0x9577, 0x9580, 0x961C, 0x96B6, 0x96B9, + 0x96E8, 0x9751, 0x975E, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, + 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x99AC, 0x9AA8, 0x9AD8, 0x9ADF, + 0x9B25, 0x9B2F, 0x9B32, 0x9B3C, 0x9B5A, 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, + 0x9EBB, 0x9EC3, 0x9ECD, 0x9ED1, 0x9EF9, 0x9EFD, 0x9F0E, 0x9F13, 0x9F20, + 0x9F3B, 0x9F4A, 0x9F52, 0x9F8D, 0x9F9C, 0x9FA0, 0x0020, 0x3012, 0x5341, + 0x5344, 0x5345, 0x1100, 0x1101, 0x11AA, 0x1102, 0x11AC, 0x11AD, 0x1103, + 0x1104, 0x1105, 0x11B0, 0x11B1, 0x11B2, 0x11B3, 0x11B4, 0x11B5, 0x111A, + 0x1106, 0x1107, 0x1108, 0x1121, 0x1109, 0x110A, 0x110B, 0x110C, 0x110D, + 0x110E, 0x110F, 0x1110, 0x1111, 0x1112, 0x1161, 0x1162, 0x1163, 0x1164, + 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, 0x116A, 0x116B, 0x116C, 0x116D, + 0x116E, 0x116F, 0x1170, 0x1171, 0x1172, 0x1173, 0x1174, 0x1175, 0x1160, + 0x1114, 0x1115, 0x11C7, 0x11C8, 0x11CC, 0x11CE, 0x11D3, 0x11D7, 0x11D9, + 0x111C, 0x11DD, 0x11DF, 0x111D, 0x111E, 0x1120, 0x1122, 0x1123, 0x1127, + 0x1129, 0x112B, 0x112C, 0x112D, 0x112E, 0x112F, 0x1132, 0x1136, 0x1140, + 0x1147, 0x114C, 0x11F1, 0x11F2, 0x1157, 0x1158, 0x1159, 0x1184, 0x1185, + 0x1188, 0x1191, 0x1192, 0x1194, 0x119E, 0x11A1, 0x4E00, 0x4E8C, 0x4E09, + 0x56DB, 0x4E0A, 0x4E2D, 0x4E0B, 0x7532, 0x4E59, 0x4E19, 0x4E01, 0x5929, + 0x5730, 0x4EBA, 0x554F, 0x5E7C, 0x6587, 0x7B8F, 0x1100, 0x1102, 0x1103, + 0x1105, 0x1106, 0x1107, 0x1109, 0x110B, 0x110C, 0x110E, 0x110F, 0x1110, + 0x1111, 0x1112, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, + 0x516B, 0x4E5D, 0x5341, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, + 0x65E5, 0x682A, 0x6709, 0x793E, 0x540D, 0x7279, 0x8CA1, 0x795D, 0x52B4, + 0x79D8, 0x7537, 0x5973, 0x9069, 0x512A, 0x5370, 0x6CE8, 0x9805, 0x4F11, + 0x5199, 0x6B63, 0x4E0A, 0x4E2D, 0x4E0B, 0x5DE6, 0x53F3, 0x533B, 0x5B97, + 0x5B66, 0x76E3, 0x4F01, 0x8CC7, 0x5354, 0x591C, 0x30A2, 0x30A4, 0x30A6, + 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, + 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, + 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, + 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, + 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x4E22, + 0x5E76, 0x5E7A, 0x5E72, 0x4E71, 0x4E98, 0x4E9A, 0x4F2B, 0x5E03, 0x5360, + 0x6765, 0x4FA3, 0x4FE3, 0x7CFB, 0x4FA0, 0x4F25, 0x4FE9, 0x4ED3, 0x4E2A, + 0x4EEC, 0x4F26, 0x4F1F, 0x4FA7, 0x4FA6, 0x4F2A, 0x6770, 0x4F27, 0x4F1E, + 0x5907, 0x5BB6, 0x4F63, 0x506C, 0x4F20, 0x4F1B, 0x503A, 0x4F24, 0x503E, + 0x507B, 0x4EC5, 0x4F65, 0x4FA8, 0x4EC6, 0x4FA5, 0x507E, 0x96C7, 0x4EF7, + 0x4EEA, 0x4FAC, 0x4EBF, 0x4FED, 0x50A7, 0x4FE6, 0x4FAA, 0x5C3D, 0x507F, + 0x4F18, 0x50A8, 0x4FEA, 0x50A9, 0x50A5, 0x4FE8, 0x51F6, 0x5151, 0x513F, + 0x5156, 0x5185, 0x4E24, 0x518C, 0x80C4, 0x5199, 0x5E42, 0x51BB, 0x51DB, + 0x51EF, 0x522B, 0x5220, 0x522D, 0x5219, 0x5239, 0x521A, 0x5265, 0x5250, + 0x5240, 0x521B, 0x522C, 0x5212, 0x5267, 0x5218, 0x523D, 0x523F, 0x5251, + 0x5242, 0x52B2, 0x52A8, 0x52D6, 0x52A1, 0x80DC, 0x52B3, 0x52BF, 0x52A2, + 0x52CB, 0x52B1, 0x529D, 0x5300, 0x5326, 0x6C47, 0x532E, 0x533A, 0x534F, + 0x6064, 0x5374, 0x538D, 0x538C, 0x5389, 0x53A3, 0x53C2, 0x4E1B, 0x54A4, + 0x5434, 0x5450, 0x5415, 0x5458, 0x55B1, 0x5457, 0x5FF5, 0x95EE, 0x54D1, + 0x542F, 0x5524, 0x4E27, 0x4E54, 0x5355, 0x54DF, 0x545B, 0x556C, 0x551D, + 0x5417, 0x545C, 0x5522, 0x54D4, 0x53F9, 0x55BD, 0x5455, 0x5567, 0x5C1D, + 0x551B, 0x54D7, 0x5520, 0x5578, 0x53FD, 0x54D3, 0x5452, 0x5574, 0x6076, + 0x5618, 0x549D, 0x54D2, 0x54DD, 0x54D5, 0x55F3, 0x54D9, 0x55B7, 0x5428, + 0x549B, 0x5413, 0x54DC, 0x5C1D, 0x565C, 0x556E, 0x5456, 0x5499, 0x4EB8, + 0x55BE, 0x4E25, 0x5624, 0x556D, 0x55EB, 0x56A3, 0x5181, 0x5453, 0x5570, + 0x5631, 0x56F1, 0x56F5, 0x56FD, 0x56F4, 0x56ED, 0x5706, 0x56FE, 0x56E2, + 0x57AD, 0x6267, 0x575A, 0x57A9, 0x57DA, 0x5C27, 0x62A5, 0x573A, 0x5757, + 0x8314, 0x57B2, 0x57D8, 0x6D82, 0x51A2, 0x575E, 0x57D9, 0x5C18, 0x5811, + 0x57AB, 0x5760, 0x5815, 0x575F, 0x57A6, 0x575B, 0x538B, 0x5792, 0x5739, + 0x5786, 0x574F, 0x5785, 0x575C, 0x575D, 0x58EE, 0x58F6, 0x58F8, 0x5BFF, + 0x591F, 0x68A6, 0x4F19, 0x5939, 0x5942, 0x5965, 0x5941, 0x593A, 0x594B, + 0x59F9, 0x5986, 0x59D7, 0x5978, 0x5A31, 0x5A04, 0x5987, 0x5A05, 0x5A32, + 0x59AB, 0x5AAA, 0x5988, 0x59AA, 0x59A9, 0x5A34, 0x5A73, 0x5A06, 0x5A75, + 0x5A07, 0x5AF1, 0x5AD2, 0x5B37, 0x5AD4, 0x5A74, 0x5A76, 0x5A08, 0x5B59, + 0x5B66, 0x5B6A, 0x5BAB, 0x5BDD, 0x5B9E, 0x5B81, 0x5BA1, 0x5199, 0x5BBD, + 0x5BA0, 0x5B9D, 0x5C06, 0x4E13, 0x5BFB, 0x5BF9, 0x5BFC, 0x5C34, 0x5C4A, + 0x5C38, 0x5C49, 0x5C61, 0x5C42, 0x5C5F, 0x5C66, 0x5C5E, 0x5188, 0x5C98, + 0x5C9B, 0x5CE1, 0x5D03, 0x5C97, 0x4ED1, 0x5CE5, 0x5C9A, 0x5D5D, 0x5D2D, + 0x5C96, 0x5D5A, 0x5D02, 0x5CE4, 0x5CE3, 0x5CC4, 0x5D04, 0x5C99, 0x5D58, + 0x5CAD, 0x5C7F, 0x5CB3, 0x5CBF, 0x5CE6, 0x5DC5, 0x5DEF, 0x5E05, 0x5E08, + 0x5E10, 0x5E26, 0x5E27, 0x5E0F, 0x5E3C, 0x5E3B, 0x5E1C, 0x5E01, 0x5E2E, + 0x5E31, 0x5E72, 0x51E0, 0x5E93, 0x5395, 0x53A2, 0x53A6, 0x53A8, 0x53AE, + 0x5E99, 0x5382, 0x5E91, 0x5E9F, 0x5E7F, 0x5EEA, 0x5E90, 0x5385, 0x5F11, + 0x5F2A, 0x5F20, 0x5F3A, 0x5F39, 0x5F25, 0x5F2F, 0x5F66, 0x540E, 0x5F84, + 0x4ECE, 0x5F95, 0x590D, 0x5F81, 0x5F7B, 0x6052, 0x803B, 0x60A6, 0x6005, + 0x95F7, 0x6076, 0x607C, 0x607D, 0x607B, 0x7231, 0x60EC, 0x60AB, 0x6006, + 0x607A, 0x5FFE, 0x6001, 0x6120, 0x60E8, 0x60ED, 0x6078, 0x60EF, 0x6004, + 0x6002, 0x8651, 0x60AD, 0x5E86, 0x5FE7, 0x60EB, 0x601C, 0x51ED, 0x6126, + 0x616D, 0x60EE, 0x6124, 0x60AF, 0x6003, 0x5BAA, 0x5FC6, 0x6073, 0x5E94, + 0x603F, 0x61D4, 0x603C, 0x61D1, 0x6079, 0x60E9, 0x61D2, 0x6000, 0x60AC, + 0x5FCF, 0x60E7, 0x6151, 0x604B, 0x6206, 0x620B, 0x6217, 0x622C, 0x6218, + 0x620F, 0x6237, 0x629B, 0x631F, 0x820D, 0x626A, 0x5377, 0x626B, 0x62A1, + 0x6323, 0x6302, 0x91C7, 0x62E3, 0x626C, 0x6362, 0x6325, 0x635F, 0x6447, + 0x6363, 0x62A2, 0x63B4, 0x63BC, 0x6402, 0x631A, 0x62A0, 0x629F, 0x63BA, + 0x635E, 0x6491, 0x6320, 0x6322, 0x63B8, 0x62E8, 0x629A, 0x6251, 0x63FF, + 0x631E, 0x631D, 0x6361, 0x62E5, 0x63B3, 0x62E9, 0x51FB, 0x6321, 0x62C5, + 0x636E, 0x6324, 0x62DF, 0x6448, 0x62E7, 0x6401, 0x63B7, 0x6269, 0x64B7, + 0x6446, 0x64DE, 0x64B8, 0x6270, 0x6445, 0x64B5, 0x62E2, 0x62E6, 0x6484, + 0x6400, 0x64BA, 0x643A, 0x6444, 0x6512, 0x631B, 0x644A, 0x6405, 0x63FD, + 0x668B, 0x8D25, 0x53D9, 0x654C, 0x6570, 0x655B, 0x6BD9, 0x6593, 0x65A9, + 0x65AD, 0x4E8E, 0x5347, 0x65F6, 0x664B, 0x663C, 0x6655, 0x6656, 0x65F8, + 0x7545, 0x6682, 0x6635, 0x6654, 0x5386, 0x6619, 0x6653, 0x66A7, 0x65F7, + 0x663D, 0x6652, 0x4E66, 0x4F1A, 0x80E7, 0x4E1C, 0x6805, 0x6746, 0x6800, + 0x67A7, 0x6761, 0x67AD, 0x5F03, 0x67A8, 0x67A3, 0x680B, 0x6808, 0x6816, + 0x6860, 0x6768, 0x67AB, 0x6862, 0x4E1A, 0x6781, 0x6769, 0x8363, 0x6864, + 0x6784, 0x67AA, 0x6760, 0x68BF, 0x6920, 0x6901, 0x6868, 0x6869, 0x4E50, + 0x679E, 0x697C, 0x6807, 0x67A2, 0x6837, 0x6734, 0x6811, 0x6866, 0x6861, + 0x6865, 0x673A, 0x692D, 0x6A2A, 0x6AA9, 0x69DC, 0x67FD, 0x6863, 0x6867, + 0x69DA, 0x68C0, 0x6A2F, 0x68BC, 0x53F0, 0x69DF, 0x67E0, 0x69DB, 0x82D8, + 0x67DC, 0x6A79, 0x6988, 0x6809, 0x691F, 0x6A7C, 0x680E, 0x6A71, 0x69E0, + 0x680C, 0x67A5, 0x6A65, 0x6987, 0x680A, 0x6989, 0x68C2, 0x6A31, 0x680F, + 0x6743, 0x6924, 0x683E, 0x6984, 0x94A6, 0x6B27, 0x6B24, 0x6B22, 0x5C81, + 0x5386, 0x5F52, 0x6B81, 0x6B8B, 0x6B92, 0x6B87, 0x6B9A, 0x6B93, 0x6BA1, + 0x6B7C, 0x6740, 0x58F3, 0x6BC1, 0x6BB4, 0x6BF5, 0x6BE1, 0x6C07, 0x6C14, + 0x6C22, 0x6C29, 0x6C32, 0x51FC, 0x51B3, 0x51B1, 0x6CA1, 0x51B5, 0x6CC4, + 0x6C79, 0x6D43, 0x6CFE, 0x51C9, 0x51C4, 0x6CEA, 0x6E0C, 0x51C0, 0x6CA6, + 0x6E0A, 0x6D9E, 0x6D45, 0x6DA3, 0x51CF, 0x6CA8, 0x6DA1, 0x6D4B, 0x6D51, + 0x51D1, 0x6D48, 0x6D8C, 0x6D07, 0x6C64, 0x6CA9, 0x51C6, 0x6C9F, 0x6E29, + 0x6DA2, 0x6E7F, 0x6CA7, 0x706D, 0x6DA4, 0x8365, 0x6CAA, 0x6EDE, 0x6E17, + 0x6D52, 0x6D50, 0x6EDA, 0x6EE1, 0x6E14, 0x6E87, 0x6CA4, 0x6C49, 0x6D9F, + 0x6E0D, 0x6DA8, 0x6E10, 0x6D46, 0x988D, 0x6CFC, 0x6D01, 0x6F5C, 0x6DA6, + 0x6D54, 0x6E83, 0x6DA0, 0x6DA9, 0x6D47, 0x6D9D, 0x6C84, 0x6DA7, 0x6E11, + 0x6CFD, 0x6EEA, 0x6CF6, 0x6D4D, 0x6D4A, 0x6D53, 0x6E7F, 0x6CDE, 0x6D4E, + 0x6D9B, 0x6EE5, 0x6F4D, 0x6EE8, 0x6E85, 0x6CFA, 0x6EE4, 0x6EE2, 0x6E0E, + 0x6CFB, 0x6D4F, 0x6FD2, 0x6CF8, 0x6CA5, 0x6F47, 0x6F46, 0x6F74, 0x6CF7, + 0x6FD1, 0x6F4B, 0x6F9C, 0x6CA3, 0x6EE0, 0x6D12, 0x6EE9, 0x704F, 0x6E7E, + 0x6EE6, 0x6EDF, 0x707E, 0x4E3A, 0x4E4C, 0x70C3, 0x65E0, 0x70BC, 0x709C, + 0x70DF, 0x8315, 0x7115, 0x70E6, 0x7080, 0x8367, 0x709D, 0x70ED, 0x70BD, + 0x70E8, 0x706F, 0x7096, 0x70E7, 0x70EB, 0x7116, 0x8425, 0x707F, 0x70DB, + 0x70E9, 0x70EC, 0x7118, 0x70C1, 0x7089, 0x70C2, 0x4E89, 0x4E3A, 0x7237, + 0x5C14, 0x5899, 0x724D, 0x7275, 0x8366, 0x7266, 0x728A, 0x727A, 0x72B6, + 0x72ED, 0x72C8, 0x72F0, 0x72B9, 0x72F2, 0x72B8, 0x72F1, 0x72EE, 0x5956, + 0x72EC, 0x72EF, 0x7303, 0x72DE, 0x83B7, 0x730E, 0x72B7, 0x517D, 0x736D, + 0x732E, 0x7315, 0x7321, 0x73B0, 0x73D0, 0x73F2, 0x73AE, 0x739A, 0x7410, + 0x7476, 0x83B9, 0x739B, 0x7405, 0x73B1, 0x740F, 0x740E, 0x7391, 0x7477, + 0x73F0, 0x73AF, 0x7399, 0x73BA, 0x743C, 0x73D1, 0x748E, 0x74D2, 0x74EF, + 0x74EE, 0x4EA7, 0x4EA7, 0x4EA9, 0x6BD5, 0x753B, 0x7572, 0x5F02, 0x5F53, + 0x7574, 0x53E0, 0x75C9, 0x9178, 0x75F9, 0x75D6, 0x75AF, 0x75A1, 0x75EA, + 0x7617, 0x75AE, 0x759F, 0x75AD, 0x7618, 0x7597, 0x75E8, 0x75EB, 0x7605, + 0x75A0, 0x762A, 0x75D2, 0x7596, 0x75AC, 0x765E, 0x7663, 0x763F, 0x763E, + 0x75C8, 0x762B, 0x766B, 0x53D1, 0x7691, 0x75B1, 0x76B2, 0x76B1, 0x676F, + 0x76D7, 0x76CF, 0x5C3D, 0x76D1, 0x76D8, 0x5362, 0x8361, 0x7726, 0x4F17, + 0x56F0, 0x7741, 0x7750, 0x772F, 0x7792, 0x4E86, 0x7786, 0x7751, 0x772C, + 0x77A9, 0x77EB, 0x7845, 0x70AE, 0x7841, 0x7856, 0x7817, 0x781A, 0x7855, + 0x7800, 0x786E, 0x7801, 0x7859, 0x7816, 0x789C, 0x789B, 0x77F6, 0x7857, + 0x785A, 0x7840, 0x788D, 0x77FF, 0x783A, 0x783E, 0x77FE, 0x783B, 0x7984, + 0x7978, 0x796F, 0x794E, 0x5FA1, 0x7985, 0x793C, 0x7977, 0x79C3, 0x7C7C, + 0x7A0E, 0x79C6, 0x68F1, 0x79CD, 0x79F0, 0x7A23, 0x79EF, 0x9896, 0x79FE, + 0x7A51, 0x79FD, 0x7A33, 0x7A9D, 0x6D3C, 0x7A77, 0x7A91, 0x7A8E, 0x7AAD, + 0x7AA5, 0x7A9C, 0x7A8D, 0x7AA6, 0x7A83, 0x7ADE, 0x7B14, 0x7B0B, 0x7B15, + 0x7B3A, 0x7B5D, 0x8282, 0x8303, 0x7B51, 0x7BA7, 0x7B7C, 0x7B03, 0x7B5B, + 0x7B5A, 0x7BA6, 0x7BD3, 0x7BAA, 0x7B80, 0x7BD1, 0x7BAB, 0x6A90, 0x7B5C, + 0x7B7E, 0x5E18, 0x7BEE, 0x7B79, 0x7B93, 0x7BEF, 0x7BA8, 0x7C41, 0x7B3C, + 0x7B7E, 0x7B3E, 0x7BF1, 0x7BA9, 0x5401, 0x5986, 0x7CA4, 0x7CC1, 0x7CAA, + 0x7CAE, 0x7CF5, 0x7C9D, 0x7C74, 0x7C9C, 0x7EA0, 0x7EAA, 0x7EA3, 0x7EA6, + 0x7EA2, 0x7EA1, 0x7EA5, 0x7EA8, 0x7EAB, 0x7EB9, 0x7EB3, 0x7EBD, 0x7EBE, + 0x7EAF, 0x7EB0, 0x7EB1, 0x7EB8, 0x7EA7, 0x7EB7, 0x7EAD, 0x7EB4, 0x7EBA, + 0x624E, 0x624E, 0x7EC6, 0x7EC2, 0x7EC1, 0x7EC5, 0x7EBB, 0x7ECD, 0x7EC0, + 0x7ECB, 0x7ED0, 0x7ECC, 0x7EC8, 0x5F26, 0x7EC4, 0x7ECA, 0x7ED7, 0x7ED3, + 0x7EDD, 0x7EE6, 0x7ED4, 0x7EDE, 0x7EDC, 0x7EDA, 0x7ED9, 0x7ED2, 0x7ED6, + 0x7EDF, 0x4E1D, 0x7EDB, 0x7EE2, 0x7ED1, 0x7EE1, 0x7EE0, 0x7EE8, 0x7EE5, + 0x7ECF, 0x7EFC, 0x7F0D, 0x7EFF, 0x7EF8, 0x7EFB, 0x7EF6, 0x7EF4, 0x7EFE, + 0x7EB2, 0x7F51, 0x7F00, 0x7EB6, 0x7EFA, 0x7EEE, 0x7EFD, 0x7EF0, 0x7EEB, + 0x7EF5, 0x7EF2, 0x7F01, 0x7D27, 0x7EEF, 0x7EEA, 0x7F03, 0x7F04, 0x7F02, + 0x7EBF, 0x7F09, 0x7F0E, 0x7F14, 0x7F17, 0x7F18, 0x7F0C, 0x7F16, 0x7F13, + 0x7F05, 0x7EAC, 0x7F11, 0x7F08, 0x7EC3, 0x7F0F, 0x7F07, 0x81F4, 0x8426, + 0x7F19, 0x7F22, 0x7F12, 0x7EC9, 0x7F23, 0x7F1E, 0x7F1A, 0x7F1C, 0x7F1F, + 0x7F1B, 0x53BF, 0x7F1D, 0x7F29, 0x7EB5, 0x7F27, 0x7F26, 0x7D77, 0x7F15, + 0x7F25, 0x603B, 0x7EE9, 0x7EF7, 0x7F2B, 0x7F2A, 0x7F2F, 0x7EC7, 0x7F2E, + 0x7F2D, 0x7ED5, 0x7EE3, 0x7F0B, 0x7EF3, 0x7ED8, 0x7CFB, 0x8327, 0x7F33, + 0x7F32, 0x7F34, 0x7ECE, 0x7EE7, 0x7F24, 0x7F31, 0x7F2C, 0x7EA9, 0x7EED, + 0x7F20, 0x7F28, 0x7EA4, 0x7F35, 0x7F06, 0x94B5, 0x7F42, 0x7F5A, 0x9A82, + 0x7F62, 0x7F57, 0x7F74, 0x7F81, 0x8288, 0x7F9F, 0x7FA1, 0x4E49, 0x81BB, + 0x4E60, 0x7FC6, 0x7FDA, 0x7FD8, 0x7FD9, 0x8027, 0x5723, 0x95FB, 0x8054, + 0x806A, 0x58F0, 0x8038, 0x8069, 0x8042, 0x804C, 0x804D, 0x542C, 0x804B, + 0x8083, 0x80C1, 0x8109, 0x80EB, 0x8131, 0x80C0, 0x80BE, 0x80E8, 0x8136, + 0x8111, 0x80BF, 0x811A, 0x80A0, 0x817D, 0x8158, 0x80A4, 0x80F6, 0x817B, + 0x80C6, 0x810D, 0x8113, 0x8138, 0x8110, 0x8191, 0x814A, 0x80EA, 0x810F, + 0x8114, 0x81DC, 0x5367, 0x4E34, 0x53F0, 0x4E0E, 0x5174, 0x4E3E, 0x65E7, + 0x8231, 0x8223, 0x8230, 0x823B, 0x8270, 0x8273, 0x82C4, 0x520D, 0x82CE, + 0x5179, 0x8346, 0x8C46, 0x5E84, 0x830E, 0x835A, 0x82CB, 0x534E, 0x70DF, + 0x82CC, 0x83B1, 0x4E07, 0x83B4, 0x53F6, 0x836D, 0x7740, 0x82C7, 0x8364, + 0x641C, 0x83B3, 0x8385, 0x82CD, 0x836A, 0x76D6, 0x83B2, 0x82C1, 0x83BC, + 0x835C, 0x848C, 0x848B, 0x8471, 0x8311, 0x836B, 0x8368, 0x8487, 0x835E, + 0x836C, 0x83B8, 0x835B, 0x8489, 0x829C, 0x8427, 0x84E3, 0x835F, 0x84DF, + 0x8297, 0x59DC, 0x8537, 0x83B6, 0x8350, 0x8428, 0x8360, 0x501F, 0x84DD, + 0x8369, 0x827A, 0x836F, 0x85AE, 0x82C8, 0x853C, 0x853A, 0x841A, 0x8572, + 0x82A6, 0x82CF, 0x8574, 0x82F9, 0x8616, 0x85D3, 0x8539, 0x830F, 0x5170, + 0x84E0, 0x841D, 0x5904, 0x865A, 0x864F, 0x53F7, 0x4E8F, 0x866C, 0x86F1, + 0x8715, 0x86AC, 0x8680, 0x732C, 0x867E, 0x8671, 0x8717, 0x86F3, 0x8682, + 0x8424, 0x877C, 0x8780, 0x86F0, 0x8748, 0x87A8, 0x866E, 0x8749, 0x86F2, + 0x866B, 0x86CF, 0x8681, 0x8683, 0x8747, 0x867F, 0x874E, 0x86F4, 0x877E, + 0x869D, 0x8721, 0x86CE, 0x87CF, 0x86CA, 0x8695, 0x86EE, 0x4F17, 0x672F, + 0x536B, 0x51B2, 0x886E, 0x8885, 0x8865, 0x88C5, 0x91CC, 0x5236, 0x590D, + 0x88C8, 0x8886, 0x88E4, 0x88E2, 0x7F21, 0x891B, 0x4EB5, 0x88E5, 0x8884, + 0x88E3, 0x88C6, 0x8934, 0x889C, 0x886C, 0x88AD, 0x8955, 0x89C1, 0x89C4, + 0x89C5, 0x89C6, 0x89C7, 0x89CB, 0x89CD, 0x89CE, 0x4EB2, 0x89CA, 0x89CF, + 0x89D0, 0x89D1, 0x89C9, 0x89C8, 0x89CC, 0x89C2, 0x89DE, 0x89EF, 0x89E6, + 0x8BA2, 0x8BA3, 0x8BA1, 0x8BAF, 0x8BA7, 0x8BA8, 0x8BA6, 0x8BAD, 0x8BAA, + 0x8BAB, 0x8BAC, 0x8BB0, 0x8BB9, 0x8BB6, 0x8BBC, 0x8BC0, 0x8BB7, 0x8BBF, + 0x8BBE, 0x8BB8, 0x8BC9, 0x8BC3, 0x8BCA, 0x8BC1, 0x8BC2, 0x8BCB, 0x8BB5, + 0x8BC8, 0x8BD2, 0x8BCF, 0x8BC4, 0x8BCE, 0x8BC5, 0x8BCD, 0x548F, 0x8BE9, + 0x8BE2, 0x8BE3, 0x8BD5, 0x8BD7, 0x8BE7, 0x8BDF, 0x8BE1, 0x8BE0, 0x8BD8, + 0x8BDD, 0x8BE5, 0x8BE6, 0x8BDC, 0x8BD9, 0x8BD6, 0x8BD4, 0x8BDB, 0x8BD3, + 0x5938, 0x5FD7, 0x8BA4, 0x8BF3, 0x8BF6, 0x8BDE, 0x8BF1, 0x8BEE, 0x8BED, + 0x8BDA, 0x8BEB, 0x8BEC, 0x8BEF, 0x8BF0, 0x8BF5, 0x8BF2, 0x8BF4, 0x8C01, + 0x8BFE, 0x8C07, 0x8BFD, 0x8C0A, 0x8C03, 0x8C04, 0x8C06, 0x8C08, 0x8BFF, + 0x8BF7, 0x8BE4, 0x8BF9, 0x8BFC, 0x8C05, 0x8BBA, 0x8C02, 0x8C00, 0x8C0D, + 0x8C1E, 0x8C1D, 0x8C25, 0x8BE8, 0x8C14, 0x8C1B, 0x8C10, 0x8C0F, 0x8C15, + 0x8C18, 0x8BB3, 0x8C19, 0x8C0C, 0x8BBD, 0x8BF8, 0x8C1A, 0x8C16, 0x8BFA, + 0x8C0B, 0x8C12, 0x8C13, 0x8A8A, 0x8BCC, 0x8C0E, 0x8C1C, 0x8C27, 0x8C11, + 0x8C21, 0x8C24, 0x8C26, 0x8BB2, 0x8C22, 0x8C23, 0x8C1F, 0x8C2A, 0x8C2C, + 0x8BB4, 0x8C28, 0x8C29, 0x8BC1, 0x8C32, 0x8BA5, 0x8C2E, 0x8BC6, 0x8C2F, + 0x8C2D, 0x8C31, 0x8C35, 0x8BD1, 0x8BAE, 0x8C34, 0x62A4, 0x8BEA, 0x8A89, + 0x8C2B, 0x8BFB, 0x53D8, 0x8A5F, 0x96E0, 0x8C17, 0x8BA9, 0x8C30, 0x8C36, + 0x8D5E, 0x8C20, 0x8C33, 0x5C82, 0x7AD6, 0x4E30, 0x732A, 0x8C6E, 0x732B, + 0x8D1D, 0x8D1E, 0x8D1F, 0x8D22, 0x8D21, 0x8D2B, 0x8D27, 0x8D29, 0x8D2A, + 0x8D2F, 0x8D23, 0x8D2E, 0x8D33, 0x8D40, 0x8D30, 0x8D35, 0x8D2C, 0x4E70, + 0x8D37, 0x8D36, 0x8D39, 0x8D34, 0x8D3B, 0x8D38, 0x8D3A, 0x8D32, 0x8D42, + 0x8D41, 0x8D3F, 0x8D45, 0x8D44, 0x8D3E, 0x8D3C, 0x8D48, 0x8D4A, 0x5BBE, + 0x8D47, 0x8D52, 0x8D49, 0x8D50, 0x8D4F, 0x8D54, 0x8D53, 0x8D24, 0x5356, + 0x8D31, 0x8D4B, 0x8D55, 0x8D28, 0x8D26, 0x8D4C, 0x8D56, 0x8D57, 0x8D5A, + 0x8D59, 0x8D2D, 0x8D5B, 0x8D5C, 0x8D3D, 0x8D58, 0x8D5F, 0x8D60, 0x8D5E, + 0x8D61, 0x8D62, 0x8D46, 0x8D43, 0x8D51, 0x8D4E, 0x8D5D, 0x8D63, 0x8D6A, + 0x8D76, 0x8D75, 0x8D8B, 0x8DB1, 0x8FF9, 0x8DF5, 0x8E0A, 0x8DC4, 0x8DF8, + 0x8DD6, 0x8E52, 0x8DF7, 0x8DF6, 0x8DB8, 0x8E0C, 0x8DFB, 0x8DC3, 0x8E2F, + 0x8DDE, 0x8E2C, 0x8E70, 0x8DF9, 0x8E51, 0x8E7F, 0x8E9C, 0x8E8F, 0x8EAF, + 0x8F66, 0x8F67, 0x8F68, 0x519B, 0x8F69, 0x8F6B, 0x8F6D, 0x8F6F, 0x8F78, + 0x8F71, 0x8F74, 0x8F75, 0x8F7A, 0x8F72, 0x8F76, 0x8F7C, 0x8F83, 0x8F82, + 0x8F81, 0x8F80, 0x8F7D, 0x8F7E, 0x8F84, 0x8F85, 0x8F7B, 0x8F86, 0x8F8E, + 0x8F89, 0x8F8B, 0x8F8D, 0x8F8A, 0x8F87, 0x8F88, 0x8F6E, 0x8F91, 0x8F8F, + 0x8F93, 0x8F90, 0x8F97, 0x8206, 0x8F92, 0x6BC2, 0x8F96, 0x8F95, 0x8F98, + 0x8F6C, 0x8F99, 0x8F7F, 0x8F9A, 0x8F70, 0x8F94, 0x8F79, 0x8F73, 0x529E, + 0x8F9E, 0x8FAB, 0x8FA9, 0x519C, 0x8FD9, 0x8FDE, 0x5468, 0x8FDB, 0x6E38, + 0x8FD0, 0x8FC7, 0x8FBE, 0x8FDD, 0x9065, 0x900A, 0x9012, 0x8FDC, 0x9002, + 0x8FDF, 0x8FC1, 0x9009, 0x9057, 0x8FBD, 0x8FC8, 0x8FD8, 0x8FE9, 0x8FB9, + 0x903B, 0x9026, 0x90CF, 0x90AE, 0x90D3, 0x4E61, 0x90B9, 0x90AC, 0x90E7, + 0x9093, 0x90D1, 0x90BB, 0x90F8, 0x90BA, 0x90D0, 0x909D, 0x9142, 0x90E6, + 0x814C, 0x4E11, 0x915D, 0x533B, 0x9171, 0x9166, 0x917F, 0x8845, 0x917E, + 0x917D, 0x91CA, 0x9487, 0x948C, 0x948A, 0x9489, 0x948B, 0x9488, 0x9493, + 0x9490, 0x948F, 0x9492, 0x948E, 0x9497, 0x948D, 0x9495, 0x94AF, 0x94AB, + 0x9498, 0x94AD, 0x94A0, 0x949D, 0x94A4, 0x94A3, 0x949E, 0x94AE, 0x94A7, + 0x9499, 0x949B, 0x94AA, 0x94CC, 0x94C8, 0x94B6, 0x94C3, 0x94B4, 0x94B9, + 0x94CD, 0x94B0, 0x94B8, 0x94C0, 0x94BF, 0x94BE, 0x949C, 0x94CA, 0x94C9, + 0x94C7, 0x94CB, 0x94C2, 0x94B3, 0x94C6, 0x94C5, 0x94BA, 0x94A9, 0x94B2, + 0x94BC, 0x94BD, 0x94CF, 0x94F0, 0x94D2, 0x94EC, 0x94EA, 0x94F6, 0x94F3, + 0x94DC, 0x94DA, 0x94E3, 0x94E8, 0x94E2, 0x94ED, 0x94EB, 0x94E6, 0x8854, + 0x94D1, 0x94F7, 0x94F1, 0x94DF, 0x94F5, 0x94D5, 0x94EF, 0x94D0, 0x9510, + 0x9500, 0x9508, 0x9511, 0x9509, 0x94DD, 0x9512, 0x950C, 0x94A1, 0x94E4, + 0x94D7, 0x950B, 0x950A, 0x9513, 0x9504, 0x9503, 0x9514, 0x9507, 0x94D3, + 0x94FA, 0x94D6, 0x9506, 0x9502, 0x952F, 0x94A2, 0x951E, 0x5F55, 0x9516, + 0x9529, 0x94D4, 0x9525, 0x9515, 0x951F, 0x9524, 0x9531, 0x94EE, 0x951B, + 0x952C, 0x952D, 0x951C, 0x94B1, 0x9526, 0x951A, 0x9520, 0x9521, 0x9522, + 0x9519, 0x9530, 0x8868, 0x94FC, 0x9528, 0x9494, 0x9534, 0x94FE, 0x9505, + 0x9540, 0x9537, 0x94E1, 0x9496, 0x953B, 0x953D, 0x9538, 0x9532, 0x9539, + 0x953E, 0x952E, 0x9536, 0x9517, 0x953A, 0x9541, 0x9551, 0x9555, 0x9501, + 0x9549, 0x9548, 0x9543, 0x94A8, 0x84E5, 0x954F, 0x94E0, 0x94E9, 0x953C, + 0x9550, 0x9547, 0x9552, 0x954D, 0x9553, 0x955E, 0x955F, 0x94FE, 0x9546, + 0x9559, 0x9560, 0x955D, 0x94FF, 0x9535, 0x9557, 0x9558, 0x955B, 0x94F2, + 0x955C, 0x9556, 0x9542, 0x933E, 0x955A, 0x94E7, 0x956A, 0x9508, 0x94D9, + 0x9563, 0x9566, 0x9561, 0x949F, 0x956B, 0x950F, 0x9544, 0x954C, 0x9570, + 0x956F, 0x956D, 0x94C1, 0x956E, 0x94CE, 0x94DB, 0x9571, 0x94F8, 0x956C, + 0x9554, 0x9274, 0x9527, 0x9574, 0x94C4, 0x9573, 0x9567, 0x94A5, 0x9575, + 0x9576, 0x954A, 0x9569, 0x9523, 0x94BB, 0x92AE, 0x51FF, 0x957F, 0x95E8, + 0x95E9, 0x95EA, 0x95EB, 0x95EC, 0x95ED, 0x5F00, 0x95F6, 0x95F3, 0x95F0, + 0x95F2, 0x95F4, 0x95F5, 0x95F8, 0x9602, 0x9601, 0x9600, 0x95FA, 0x95FD, + 0x9603, 0x9606, 0x95FE, 0x9605, 0x960A, 0x9609, 0x960E, 0x960F, 0x960D, + 0x9608, 0x960C, 0x9612, 0x677F, 0x6697, 0x95F1, 0x9614, 0x9615, 0x9611, + 0x9617, 0x9618, 0x95FF, 0x9616, 0x9619, 0x95EF, 0x5173, 0x961A, 0x9613, + 0x9610, 0x8F9F, 0x961B, 0x95FC, 0x9649, 0x9655, 0x9635, 0x9634, 0x9648, + 0x9646, 0x9633, 0x9667, 0x961F, 0x9636, 0x9668, 0x9645, 0x968F, 0x9669, + 0x9690, 0x9647, 0x96B6, 0x53EA, 0x96BD, 0x867D, 0x53CC, 0x96CF, 0x6742, + 0x9E21, 0x79BB, 0x96BE, 0x4E91, 0x7535, 0x9721, 0x96FE, 0x9701, 0x96F3, + 0x972D, 0x53C7, 0x7075, 0x53C6, 0x9753, 0x9759, 0x817C, 0x9765, 0x9F17, + 0x5DE9, 0x979F, 0x7F30, 0x9791, 0x97AF, 0x97E6, 0x97E7, 0x97E9, 0x97EA, + 0x97EC, 0x97EB, 0x97F5, 0x54CD, 0x9875, 0x9876, 0x9877, 0x9879, 0x987A, + 0x9878, 0x987B, 0x987C, 0x9882, 0x9880, 0x9883, 0x9884, 0x987D, 0x9881, + 0x987F, 0x9887, 0x9886, 0x988C, 0x9889, 0x9890, 0x988F, 0x5934, 0x988A, + 0x988B, 0x9894, 0x9888, 0x9893, 0x9891, 0x9897, 0x9898, 0x989D, 0x989A, + 0x989C, 0x9899, 0x989B, 0x613F, 0x98A1, 0x98A0, 0x7C7B, 0x989F, 0x98A2, + 0x987E, 0x98A4, 0x98A5, 0x663E, 0x98A6, 0x9885, 0x989E, 0x98A7, 0x98CE, + 0x98D0, 0x98D1, 0x98D2, 0x53F0, 0x98D3, 0x98D4, 0x98CF, 0x98D6, 0x98D5, + 0x98D7, 0x98D8, 0x98D9, 0x98DE, 0x9965, 0x9964, 0x9966, 0x9968, 0x996A, + 0x996B, 0x996C, 0x996D, 0x996E, 0x9974, 0x9972, 0x9971, 0x9970, 0x9973, + 0x997A, 0x9978, 0x997C, 0x9977, 0x517B, 0x9975, 0x9979, 0x997D, 0x9981, + 0x997F, 0x997E, 0x4F59, 0x80B4, 0x9984, 0x9983, 0x996F, 0x9985, 0x9986, + 0x7CC7, 0x9967, 0x5582, 0x9989, 0x998E, 0x9969, 0x998F, 0x998A, 0x998C, + 0x998D, 0x9992, 0x9990, 0x9991, 0x9988, 0x9994, 0x9976, 0x98E8, 0x990D, + 0x998B, 0x9A6C, 0x9A6D, 0x51AF, 0x9A6E, 0x9A70, 0x9A6F, 0x9A73, 0x9A7B, + 0x9A7D, 0x9A79, 0x9A75, 0x9A7E, 0x9A80, 0x9A78, 0x9A76, 0x9A7C, 0x9A77, + 0x9A88, 0x9A87, 0x9A83, 0x9A86, 0x9A8E, 0x9A8F, 0x9A8B, 0x9A8D, 0x9A93, + 0x9A92, 0x9A91, 0x9A90, 0x9A9B, 0x9A97, 0x9A99, 0x9A9E, 0x9A98, 0x9A9D, + 0x817E, 0x9A7A, 0x9A9A, 0x9A9F, 0x9AA1, 0x84E6, 0x9A9C, 0x9A96, 0x9AA0, + 0x9AA2, 0x9A71, 0x9A85, 0x9A95, 0x9A81, 0x9A84, 0x9A8C, 0x60CA, 0x9A7F, + 0x9AA4, 0x9A74, 0x9AA7, 0x9AA5, 0x9AA6, 0x9A8A, 0x80AE, 0x9AC5, 0x810F, + 0x4F53, 0x9ACC, 0x9ACB, 0x53D1, 0x677E, 0x80E1, 0x9B13, 0x6597, 0x95F9, + 0x960B, 0x9604, 0x90C1, 0x9B49, 0x9B47, 0x9C7C, 0x9C80, 0x9C81, 0x9C82, + 0x9C7F, 0x9C85, 0x9C86, 0x9C8F, 0x9C87, 0x9C90, 0x9C8D, 0x9C8B, 0x9C8A, + 0x9C92, 0x9C95, 0x9C96, 0x9C94, 0x9C9B, 0x9C91, 0x9C9C, 0x9CA7, 0x9CA0, + 0x9CA9, 0x9CA4, 0x9CA8, 0x9CBB, 0x9CAF, 0x9CAD, 0x9C9E, 0x9CB7, 0x9CB4, + 0x9CB1, 0x9CB5, 0x9CB2, 0x9CB3, 0x9CB8, 0x9CAE, 0x9CB0, 0x9CB6, 0x9CAB, + 0x9CCA, 0x9C97, 0x9CBD, 0x9CC7, 0x9CC5, 0x9CC6, 0x9CC3, 0x9CD2, 0x9CD1, + 0x9CA5, 0x9CCF, 0x9CCE, 0x9CD0, 0x9CCD, 0x9CC1, 0x9CA2, 0x9CCC, 0x9CA6, + 0x9CA3, 0x9CB9, 0x9CD7, 0x9CD4, 0x9CC9, 0x9CD5, 0x9CD6, 0x9CDF, 0x9CDD, + 0x9CDC, 0x9CDE, 0x9C9F, 0x9CBC, 0x9C8E, 0x9C99, 0x9CE3, 0x9CE2, 0x9C9A, + 0x9CC4, 0x9C88, 0x9CA1, 0x9E1F, 0x51EB, 0x9E20, 0x9E24, 0x51E4, 0x9E23, + 0x9E22, 0x9E29, 0x9E28, 0x9E26, 0x9E30, 0x9E35, 0x9E33, 0x9E32, 0x9E2E, + 0x9E31, 0x9E2A, 0x9E2F, 0x9E2D, 0x9E38, 0x9E39, 0x9E3B, 0x9E3F, 0x9E3D, + 0x9E3A, 0x9E43, 0x9E46, 0x9E41, 0x9E48, 0x9E45, 0x9E44, 0x9E49, 0x9E4C, + 0x9E4F, 0x9E4E, 0x9E4A, 0x9E53, 0x9E2B, 0x9E51, 0x9E4B, 0x9E59, 0x9E55, + 0x9E57, 0x9E56, 0x9E4D, 0x9E5B, 0x9E5C, 0x83BA, 0x9E5F, 0x9E64, 0x9E60, + 0x9E61, 0x9E58, 0x9E63, 0x9E5A, 0x9E62, 0x9E5E, 0x9E67, 0x9E65, 0x9E25, + 0x9E37, 0x9E68, 0x9E36, 0x9E6A, 0x9E54, 0x9E69, 0x9E6B, 0x9E47, 0x9E6C, + 0x9E70, 0x9E6D, 0x9E6F, 0x9E2C, 0x9E74, 0x9E66, 0x9E73, 0x9E42, 0x9E3E, + 0x5364, 0x9E7E, 0x7877, 0x76D0, 0x4E3D, 0x9EA6, 0x9EB8, 0x9EB9, 0x9762, + 0x4E48, 0x9EC4, 0x9EC9, 0x70B9, 0x515A, 0x9709, 0x9EE1, 0x9EE9, 0x9EFE, + 0x9F0B, 0x9F0D, 0x9F39, 0x9F50, 0x658B, 0x8D4D, 0x9F51, 0x9F7F, 0x9F80, + 0x9F81, 0x9F85, 0x9F87, 0x9F83, 0x9F86, 0x9F84, 0x9F88, 0x9F8A, 0x9F89, + 0x9F8B, 0x9F8C, 0x9F99, 0x5390, 0x5E9E, 0x9F9A, 0x9F9B, 0x9F9F, 0xA76F, + 0x8C48, 0x66F4, 0x8ECA, 0x8CC8, 0x6ED1, 0x4E32, 0x53E5, 0x9F9C, 0x9F9C, + 0x5951, 0x91D1, 0x5587, 0x5948, 0x61F6, 0x7669, 0x7F85, 0x863F, 0x87BA, + 0x88F8, 0x908F, 0x6A02, 0x6D1B, 0x70D9, 0x73DE, 0x843D, 0x916A, 0x99F1, + 0x4E82, 0x5375, 0x6B04, 0x721B, 0x862D, 0x9E1E, 0x5D50, 0x6FEB, 0x85CD, + 0x8964, 0x62C9, 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x90CE, + 0x4F86, 0x51B7, 0x52DE, 0x64C4, 0x6AD3, 0x7210, 0x76E7, 0x8001, 0x8606, + 0x865C, 0x8DEF, 0x9732, 0x9B6F, 0x9DFA, 0x788C, 0x797F, 0x7DA0, 0x83C9, + 0x9304, 0x9E7F, 0x8AD6, 0x58DF, 0x5F04, 0x7C60, 0x807E, 0x7262, 0x78CA, + 0x8CC2, 0x96F7, 0x58D8, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, 0x7D2F, 0x7E37, + 0x964B, 0x52D2, 0x808B, 0x51DC, 0x51CC, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, + 0x8B80, 0x62CF, 0x6A02, 0x8AFE, 0x4E39, 0x5BE7, 0x6012, 0x7387, 0x7570, + 0x5317, 0x78FB, 0x4FBF, 0x5FA9, 0x4E0D, 0x6CCC, 0x6578, 0x7D22, 0x53C3, + 0x585E, 0x7701, 0x8449, 0x8AAA, 0x6BBA, 0x8FB0, 0x6C88, 0x62FE, 0x82E5, + 0x63A0, 0x7565, 0x4EAE, 0x5169, 0x51C9, 0x6881, 0x7CE7, 0x826F, 0x8AD2, + 0x91CF, 0x52F5, 0x5442, 0x5973, 0x5EEC, 0x65C5, 0x6FFE, 0x792A, 0x95AD, + 0x9A6A, 0x9E97, 0x9ECE, 0x529B, 0x66C6, 0x6B77, 0x8F62, 0x5E74, 0x6190, + 0x6200, 0x649A, 0x6F23, 0x7149, 0x7489, 0x79CA, 0x7DF4, 0x806F, 0x8F26, + 0x84EE, 0x9023, 0x934A, 0x5217, 0x52A3, 0x54BD, 0x70C8, 0x88C2, 0x8AAA, + 0x5EC9, 0x5FF5, 0x637B, 0x6BAE, 0x7C3E, 0x7375, 0x4EE4, 0x56F9, 0x5BE7, + 0x5DBA, 0x601C, 0x73B2, 0x7469, 0x7F9A, 0x8046, 0x9234, 0x96F6, 0x9748, + 0x9818, 0x4F8B, 0x79AE, 0x91B4, 0x96B8, 0x60E1, 0x4E86, 0x50DA, 0x5BEE, + 0x5C3F, 0x6599, 0x6A02, 0x71CE, 0x7642, 0x84FC, 0x907C, 0x9F8D, 0x6688, + 0x962E, 0x5289, 0x677B, 0x67F3, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B, + 0x7D10, 0x985E, 0x516D, 0x622E, 0x9678, 0x502B, 0x5D19, 0x6DEA, 0x8F2A, + 0x5F8B, 0x6144, 0x6817, 0x7387, 0x9686, 0x5229, 0x540F, 0x5C65, 0x6613, + 0x674E, 0x68A8, 0x6CE5, 0x7406, 0x75E2, 0x7F79, 0x88CF, 0x88E1, 0x91CC, + 0x96E2, 0x533F, 0x6EBA, 0x541D, 0x71D0, 0x7498, 0x85FA, 0x96A3, 0x9C57, + 0x9E9F, 0x6797, 0x6DCB, 0x81E8, 0x7ACB, 0x7B20, 0x7C92, 0x72C0, 0x7099, + 0x8B58, 0x4EC0, 0x8336, 0x523A, 0x5207, 0x5EA6, 0x62D3, 0x7CD6, 0x5B85, + 0x6D1E, 0x66B4, 0x8F3B, 0x884C, 0x964D, 0x898B, 0x5ED3, 0x5140, 0x55C0, + 0x585A, 0x6674, 0x51DE, 0x732A, 0x76CA, 0x793C, 0x795E, 0x7965, 0x798F, + 0x9756, 0x7CBE, 0x7FBD, 0x8612, 0x8AF8, 0x9038, 0x90FD, 0x98EF, 0x98FC, + 0x9928, 0x9DB4, 0x4FAE, 0x50E7, 0x514D, 0x52C9, 0x52E4, 0x5351, 0x559D, + 0x5606, 0x5668, 0x5840, 0x58A8, 0x5C64, 0x5C6E, 0x6094, 0x6168, 0x618E, + 0x61F2, 0x654F, 0x65E2, 0x6691, 0x6885, 0x6D77, 0x6E1A, 0x6F22, 0x716E, + 0x722B, 0x7422, 0x7891, 0x793E, 0x7949, 0x7948, 0x7950, 0x7956, 0x795D, + 0x798D, 0x798E, 0x7A40, 0x7A81, 0x7BC0, 0x7DF4, 0x7E09, 0x7E41, 0x7F72, + 0x8005, 0x81ED, 0x8279, 0x8279, 0x8457, 0x8910, 0x8996, 0x8B01, 0x8B39, + 0x8CD3, 0x8D08, 0x8FB6, 0x9038, 0x96E3, 0x97FF, 0x983B, 0x6075, 0x8218, + 0x4E26, 0x51B5, 0x5168, 0x4F80, 0x5145, 0x5180, 0x52C7, 0x52FA, 0x559D, + 0x5555, 0x5599, 0x55E2, 0x585A, 0x58B3, 0x5944, 0x5954, 0x5A62, 0x5B28, + 0x5ED2, 0x5ED9, 0x5F69, 0x5FAD, 0x60D8, 0x614E, 0x6108, 0x618E, 0x6160, + 0x61F2, 0x6234, 0x63C4, 0x641C, 0x6452, 0x6556, 0x6674, 0x6717, 0x671B, + 0x6756, 0x6B79, 0x6BBA, 0x6D41, 0x6EDB, 0x6ECB, 0x6F22, 0x701E, 0x716E, + 0x77A7, 0x7235, 0x72AF, 0x732A, 0x7471, 0x7506, 0x753B, 0x761D, 0x761F, + 0x76CA, 0x76DB, 0x76F4, 0x774A, 0x7740, 0x78CC, 0x7AB1, 0x7BC0, 0x7C7B, + 0x7D5B, 0x7DF4, 0x7F3E, 0x8005, 0x8352, 0x83EF, 0x8779, 0x8941, 0x8986, + 0x8996, 0x8ABF, 0x8AF8, 0x8ACB, 0x8B01, 0x8AFE, 0x8AED, 0x8B39, 0x8B8A, + 0x8D08, 0x8F38, 0x9072, 0x9199, 0x9276, 0x967C, 0x96E3, 0x9756, 0x97DB, + 0x97FF, 0x980B, 0x983B, 0x9B12, 0x9F9C, 0x3B9D, 0x4018, 0x4039, 0x9F43, + 0x9F8E, 0x05E2, 0x05D0, 0x05D3, 0x05D4, 0x05DB, 0x05DC, 0x05DD, 0x05E8, + 0x05EA, 0x002B, 0x0671, 0x0671, 0x067B, 0x067B, 0x067B, 0x067B, 0x067E, + 0x067E, 0x067E, 0x067E, 0x0680, 0x0680, 0x0680, 0x0680, 0x067A, 0x067A, + 0x067A, 0x067A, 0x067F, 0x067F, 0x067F, 0x067F, 0x0679, 0x0679, 0x0679, + 0x0679, 0x06A4, 0x06A4, 0x06A4, 0x06A4, 0x06A6, 0x06A6, 0x06A6, 0x06A6, + 0x0684, 0x0684, 0x0684, 0x0684, 0x0683, 0x0683, 0x0683, 0x0683, 0x0686, + 0x0686, 0x0686, 0x0686, 0x0687, 0x0687, 0x0687, 0x0687, 0x068D, 0x068D, + 0x068C, 0x068C, 0x068E, 0x068E, 0x0688, 0x0688, 0x0698, 0x0698, 0x0691, + 0x0691, 0x06A9, 0x06A9, 0x06A9, 0x06A9, 0x06AF, 0x06AF, 0x06AF, 0x06AF, + 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B1, 0x06B1, 0x06B1, 0x06B1, 0x06BA, + 0x06BA, 0x06BB, 0x06BB, 0x06BB, 0x06BB, 0x06C0, 0x06C0, 0x06C1, 0x06C1, + 0x06C1, 0x06C1, 0x06BE, 0x06BE, 0x06BE, 0x06BE, 0x06D2, 0x06D2, 0x06D3, + 0x06D3, 0x06AD, 0x06AD, 0x06AD, 0x06AD, 0x06C7, 0x06C7, 0x06C6, 0x06C6, + 0x06C8, 0x06C8, 0x0677, 0x06CB, 0x06CB, 0x06C5, 0x06C5, 0x06C9, 0x06C9, + 0x06D0, 0x06D0, 0x06D0, 0x06D0, 0x0649, 0x0649, 0x06CC, 0x06CC, 0x06CC, + 0x06CC, 0x002C, 0x3001, 0x3002, 0x003A, 0x003B, 0x0021, 0x003F, 0x3016, + 0x3017, 0x2026, 0x2025, 0x2014, 0x2013, 0x005F, 0x005F, 0x0028, 0x0029, + 0x007B, 0x007D, 0x3014, 0x3015, 0x3010, 0x3011, 0x300A, 0x300B, 0x3008, + 0x3009, 0x300C, 0x300D, 0x300E, 0x300F, 0x005B, 0x005D, 0x203E, 0x203E, + 0x203E, 0x203E, 0x005F, 0x005F, 0x005F, 0x002C, 0x3001, 0x002E, 0x003B, + 0x003A, 0x003F, 0x0021, 0x2014, 0x0028, 0x0029, 0x007B, 0x007D, 0x3014, + 0x3015, 0x0023, 0x0026, 0x002A, 0x002B, 0x002D, 0x003C, 0x003E, 0x003D, + 0x005C, 0x0024, 0x0025, 0x0040, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, + 0x0650, 0x0651, 0x0652, 0x0621, 0x0622, 0x0622, 0x0623, 0x0623, 0x0624, + 0x0624, 0x0625, 0x0625, 0x0626, 0x0626, 0x0626, 0x0626, 0x0627, 0x0627, + 0x0628, 0x0628, 0x0628, 0x0628, 0x0629, 0x0629, 0x062A, 0x062A, 0x062A, + 0x062A, 0x062B, 0x062B, 0x062B, 0x062B, 0x062C, 0x062C, 0x062C, 0x062C, + 0x062D, 0x062D, 0x062D, 0x062D, 0x062E, 0x062E, 0x062E, 0x062E, 0x062F, + 0x062F, 0x0630, 0x0630, 0x0631, 0x0631, 0x0632, 0x0632, 0x0633, 0x0633, + 0x0633, 0x0633, 0x0634, 0x0634, 0x0634, 0x0634, 0x0635, 0x0635, 0x0635, + 0x0635, 0x0636, 0x0636, 0x0636, 0x0636, 0x0637, 0x0637, 0x0637, 0x0637, + 0x0638, 0x0638, 0x0638, 0x0638, 0x0639, 0x0639, 0x0639, 0x0639, 0x063A, + 0x063A, 0x063A, 0x063A, 0x0641, 0x0641, 0x0641, 0x0641, 0x0642, 0x0642, + 0x0642, 0x0642, 0x0643, 0x0643, 0x0643, 0x0643, 0x0644, 0x0644, 0x0644, + 0x0644, 0x0645, 0x0645, 0x0645, 0x0645, 0x0646, 0x0646, 0x0646, 0x0646, + 0x0647, 0x0647, 0x0647, 0x0647, 0x0648, 0x0648, 0x0649, 0x0649, 0x064A, + 0x064A, 0x064A, 0x064A, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, + 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, + 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, + 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, + 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, + 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, + 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, + 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, + 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x2985, 0x2986, + 0x3002, 0x300C, 0x300D, 0x3001, 0x30FB, 0x30F2, 0x30A1, 0x30A3, 0x30A5, + 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, 0x30FC, 0x30A2, 0x30A4, + 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, + 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, + 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, + 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, + 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F3, 0x3099, 0x309A, + 0x3164, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, + 0x3139, 0x313A, 0x313B, 0x313C, 0x313D, 0x313E, 0x313F, 0x3140, 0x3141, + 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314A, + 0x314B, 0x314C, 0x314D, 0x314E, 0x314F, 0x3150, 0x3151, 0x3152, 0x3153, + 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315A, 0x315B, 0x315C, + 0x315D, 0x315E, 0x315F, 0x3160, 0x3161, 0x3162, 0x3163, 0x00A2, 0x00A3, + 0x00AC, 0x00AF, 0x00A6, 0x00A5, 0x20A9, 0x2502, 0x2190, 0x2191, 0x2192, + 0x2193, 0x25A0, 0x25CB}; + +const FX_WCHAR g_UnicodeData_Normalization_Map2[1724] = { + 0x004F, 0x0045, 0x0054, 0x004D, 0x006F, 0x0065, 0x0049, 0x004A, 0x0069, + 0x006A, 0x004F, 0x0045, 0x006F, 0x0065, 0x0044, 0x017D, 0x0044, 0x017E, + 0x0064, 0x017E, 0x004C, 0x004A, 0x004C, 0x006A, 0x006C, 0x006A, 0x004E, + 0x004A, 0x004E, 0x006A, 0x006E, 0x006A, 0x0044, 0x005A, 0x0044, 0x007A, + 0x0064, 0x007A, 0x0064, 0x0062, 0x0071, 0x0070, 0x004F, 0x0045, 0x0064, + 0x007A, 0x0064, 0x0292, 0x0064, 0x007A, 0x0074, 0x0073, 0x0074, 0x0283, + 0x0074, 0x0063, 0x0066, 0x014B, 0x006C, 0x0073, 0x006C, 0x007A, 0x041D, + 0x0413, 0x043D, 0x0433, 0x0422, 0x0426, 0x0442, 0x0446, 0x0410, 0x0415, + 0x0430, 0x0435, 0x0565, 0x0582, 0x0627, 0x0674, 0x0648, 0x0674, 0x06C7, + 0x0674, 0x064A, 0x0674, 0x06D5, 0x0654, 0x06C1, 0x0654, 0x06D2, 0x0654, + 0x0928, 0x093C, 0x0930, 0x093C, 0x0933, 0x093C, 0x0915, 0x093C, 0x0916, + 0x093C, 0x0917, 0x093C, 0x091C, 0x093C, 0x0921, 0x093C, 0x0922, 0x093C, + 0x092B, 0x093C, 0x092F, 0x093C, 0x09C7, 0x09BE, 0x09C7, 0x09D7, 0x09A1, + 0x09BC, 0x09A2, 0x09BC, 0x09AF, 0x09BC, 0x0A32, 0x0A3C, 0x0A38, 0x0A3C, + 0x0A16, 0x0A3C, 0x0A17, 0x0A3C, 0x0A1C, 0x0A3C, 0x0A2B, 0x0A3C, 0x0B47, + 0x0B56, 0x0B47, 0x0B3E, 0x0B47, 0x0B57, 0x0B21, 0x0B3C, 0x0B22, 0x0B3C, + 0x0B92, 0x0BD7, 0x0BC6, 0x0BBE, 0x0BC7, 0x0BBE, 0x0BC6, 0x0BD7, 0x0C46, + 0x0C56, 0x0CBF, 0x0CD5, 0x0CC6, 0x0CD5, 0x0CC6, 0x0CD6, 0x0CC6, 0x0CC2, + 0x0CCA, 0x0CD5, 0x0D46, 0x0D3E, 0x0D47, 0x0D3E, 0x0D46, 0x0D57, 0x0DD9, + 0x0DCA, 0x0DD9, 0x0DCF, 0x0DDC, 0x0DCA, 0x0DD9, 0x0DDF, 0x0E4D, 0x0E32, + 0x0ECD, 0x0EB2, 0x0EAB, 0x0E99, 0x0EAB, 0x0EA1, 0x0F42, 0x0FB7, 0x0F4C, + 0x0FB7, 0x0F51, 0x0FB7, 0x0F56, 0x0FB7, 0x0F5B, 0x0FB7, 0x0F40, 0x0FB5, + 0x0F71, 0x0F72, 0x0F71, 0x0F74, 0x0FB2, 0x0F80, 0x0FB2, 0x0F81, 0x0FB3, + 0x0F80, 0x0FB3, 0x0F81, 0x0F71, 0x0F80, 0x0F92, 0x0FB7, 0x0F9C, 0x0FB7, + 0x0FA1, 0x0FB7, 0x0FA6, 0x0FB7, 0x0FAB, 0x0FB7, 0x0F90, 0x0FB5, 0x1025, + 0x102E, 0x1B05, 0x1B35, 0x1B07, 0x1B35, 0x1B09, 0x1B35, 0x1B0B, 0x1B35, + 0x1B0D, 0x1B35, 0x1B11, 0x1B35, 0x1B3A, 0x1B35, 0x1B3C, 0x1B35, 0x1B3E, + 0x1B35, 0x1B3F, 0x1B35, 0x1B42, 0x1B35, 0x0074, 0x0068, 0x002E, 0x002E, + 0x2032, 0x2032, 0x2035, 0x2035, 0x0021, 0x0021, 0x0020, 0x0305, 0x003F, + 0x003F, 0x003F, 0x0021, 0x0021, 0x003F, 0x0052, 0x0073, 0x00B0, 0x0043, + 0x00B0, 0x0046, 0x004E, 0x006F, 0x0053, 0x004D, 0x0054, 0x004D, 0x0031, + 0x002F, 0x0049, 0x0049, 0x0049, 0x0056, 0x0056, 0x0049, 0x0049, 0x0058, + 0x0058, 0x0049, 0x0069, 0x0069, 0x0069, 0x0076, 0x0076, 0x0069, 0x0069, + 0x0078, 0x0078, 0x0069, 0x2190, 0x0338, 0x2192, 0x0338, 0x2194, 0x0338, + 0x21D0, 0x0338, 0x21D4, 0x0338, 0x21D2, 0x0338, 0x2223, 0x0338, 0x2225, + 0x0338, 0x222B, 0x222B, 0x222E, 0x222E, 0x223C, 0x0338, 0x2243, 0x0338, + 0x2245, 0x0338, 0x2248, 0x0338, 0x003D, 0x002F, 0x2261, 0x002F, 0x224D, + 0x002F, 0x003C, 0x002F, 0x003E, 0x002F, 0x2264, 0x002F, 0x2265, 0x002F, + 0x2272, 0x002F, 0x2273, 0x002F, 0x2276, 0x002F, 0x2277, 0x002F, 0x227A, + 0x002F, 0x227B, 0x002F, 0x2282, 0x002F, 0x2283, 0x002F, 0x2286, 0x002F, + 0x2287, 0x002F, 0x22A2, 0x002F, 0x22A8, 0x002F, 0x22A9, 0x002F, 0x22AB, + 0x002F, 0x227C, 0x002F, 0x227D, 0x002F, 0x2291, 0x002F, 0x2292, 0x002F, + 0x22B2, 0x002F, 0x22B3, 0x002F, 0x22B4, 0x002F, 0x22B5, 0x002F, 0x0042, + 0x0053, 0x0048, 0x0054, 0x004C, 0x0046, 0x0056, 0x0054, 0x0046, 0x0046, + 0x0043, 0x0052, 0x0053, 0x0053, 0x0053, 0x0049, 0x0045, 0x004D, 0x0046, + 0x0053, 0x0047, 0x0053, 0x0052, 0x0053, 0x0055, 0x0053, 0x0053, 0x0050, + 0x0031, 0x0030, 0x0031, 0x0031, 0x0031, 0x0032, 0x0031, 0x0033, 0x0031, + 0x0034, 0x0031, 0x0035, 0x0031, 0x0036, 0x0031, 0x0037, 0x0031, 0x0038, + 0x0031, 0x0039, 0x0032, 0x0030, 0x0031, 0x002E, 0x0032, 0x002E, 0x0033, + 0x002E, 0x0034, 0x002E, 0x0035, 0x002E, 0x0036, 0x002E, 0x0037, 0x002E, + 0x0038, 0x002E, 0x0039, 0x002E, 0x0031, 0x0031, 0x0031, 0x0032, 0x0031, + 0x0033, 0x0031, 0x0034, 0x0031, 0x0035, 0x0031, 0x0036, 0x0031, 0x0037, + 0x0031, 0x0038, 0x0031, 0x0039, 0x0032, 0x0030, 0x0031, 0x0030, 0x0031, + 0x0030, 0x0031, 0x0030, 0x0031, 0x0030, 0x003D, 0x003D, 0x2ADD, 0x002F, + 0x304B, 0x3099, 0x304D, 0x3099, 0x304F, 0x3099, 0x3051, 0x3099, 0x3053, + 0x3099, 0x3055, 0x3099, 0x3057, 0x3099, 0x3059, 0x3099, 0x305B, 0x3099, + 0x305D, 0x3099, 0x305F, 0x3099, 0x3061, 0x3099, 0x3064, 0x3099, 0x3066, + 0x3099, 0x3068, 0x3099, 0x306F, 0x3099, 0x306F, 0x309A, 0x3072, 0x3099, + 0x3072, 0x309A, 0x3075, 0x3099, 0x3075, 0x309A, 0x3078, 0x3099, 0x3078, + 0x309A, 0x307B, 0x3099, 0x307B, 0x309A, 0x3046, 0x3099, 0x0020, 0x3099, + 0x0020, 0x309A, 0x309D, 0x3099, 0x3088, 0x308A, 0x30AB, 0x3099, 0x30AD, + 0x3099, 0x30AF, 0x3099, 0x30B1, 0x3099, 0x30B3, 0x3099, 0x30B5, 0x3099, + 0x30B7, 0x3099, 0x30B9, 0x3099, 0x30BB, 0x3099, 0x30BD, 0x3099, 0x30BF, + 0x3099, 0x30C1, 0x3099, 0x30C4, 0x3099, 0x30C6, 0x3099, 0x30C8, 0x3099, + 0x30CF, 0x3099, 0x30CF, 0x309A, 0x30D2, 0x3099, 0x30D2, 0x309A, 0x30D5, + 0x3099, 0x30D5, 0x309A, 0x30D8, 0x3099, 0x30D8, 0x309A, 0x30DB, 0x3099, + 0x30DB, 0x309A, 0x30A6, 0x3099, 0x30EF, 0x3099, 0x30F0, 0x3099, 0x30F1, + 0x3099, 0x30F2, 0x3099, 0x30FD, 0x3099, 0x30B3, 0x30C8, 0x0032, 0x0031, + 0x0032, 0x0032, 0x0032, 0x0033, 0x0032, 0x0034, 0x0032, 0x0035, 0x0032, + 0x0036, 0x0032, 0x0037, 0x0032, 0x0038, 0x0032, 0x0039, 0x0033, 0x0030, + 0x0033, 0x0031, 0x0033, 0x0032, 0x0033, 0x0033, 0x0033, 0x0034, 0x0033, + 0x0035, 0x1100, 0x1161, 0x1102, 0x1161, 0x1103, 0x1161, 0x1105, 0x1161, + 0x1106, 0x1161, 0x1107, 0x1161, 0x1109, 0x1161, 0x110B, 0x1161, 0x110C, + 0x1161, 0x110E, 0x1161, 0x110F, 0x1161, 0x1110, 0x1161, 0x1111, 0x1161, + 0x1112, 0x1161, 0x110B, 0x116E, 0x0033, 0x0036, 0x0033, 0x0037, 0x0033, + 0x0038, 0x0033, 0x0039, 0x0034, 0x0030, 0x0034, 0x0031, 0x0034, 0x0032, + 0x0034, 0x0033, 0x0034, 0x0034, 0x0034, 0x0035, 0x0034, 0x0036, 0x0034, + 0x0037, 0x0034, 0x0038, 0x0034, 0x0039, 0x0035, 0x0030, 0x0031, 0x6708, + 0x0032, 0x6708, 0x0033, 0x6708, 0x0034, 0x6708, 0x0035, 0x6708, 0x0036, + 0x6708, 0x0037, 0x6708, 0x0038, 0x6708, 0x0039, 0x6708, 0x0048, 0x0067, + 0x0065, 0x0056, 0x30AE, 0x30AC, 0x30AD, 0x30ED, 0x30C7, 0x30B7, 0x30C9, + 0x30EB, 0x30C8, 0x30F3, 0x30CA, 0x30CE, 0x30D4, 0x30B3, 0x30D3, 0x30EB, + 0x30DA, 0x30BD, 0x30DB, 0x30F3, 0x30DF, 0x30EA, 0x30E1, 0x30AC, 0x30EA, + 0x30E9, 0x30EC, 0x30E0, 0x0030, 0x70B9, 0x0031, 0x70B9, 0x0032, 0x70B9, + 0x0033, 0x70B9, 0x0034, 0x70B9, 0x0035, 0x70B9, 0x0036, 0x70B9, 0x0037, + 0x70B9, 0x0038, 0x70B9, 0x0039, 0x70B9, 0x0064, 0x0061, 0x0041, 0x0055, + 0x006F, 0x0056, 0x0070, 0x0063, 0x0064, 0x006D, 0x0049, 0x0055, 0x5E73, + 0x6210, 0x662D, 0x548C, 0x5927, 0x6B63, 0x660E, 0x6CBB, 0x0070, 0x0041, + 0x006E, 0x0041, 0x03BC, 0x0041, 0x006D, 0x0041, 0x006B, 0x0041, 0x004B, + 0x0042, 0x004D, 0x0042, 0x0047, 0x0042, 0x0070, 0x0046, 0x006E, 0x0046, + 0x03BC, 0x0046, 0x03BC, 0x0067, 0x006D, 0x0067, 0x006B, 0x0067, 0x0048, + 0x007A, 0x03BC, 0x2113, 0x006D, 0x2113, 0x0064, 0x2113, 0x006B, 0x2113, + 0x0066, 0x006D, 0x006E, 0x006D, 0x03BC, 0x006D, 0x006D, 0x006D, 0x0063, + 0x006D, 0x006B, 0x006D, 0x006D, 0x00B2, 0x006D, 0x00B3, 0x0050, 0x0061, + 0x0070, 0x0073, 0x006E, 0x0073, 0x03BC, 0x0073, 0x006D, 0x0073, 0x0070, + 0x0056, 0x006E, 0x0056, 0x03BC, 0x0056, 0x006D, 0x0056, 0x006B, 0x0056, + 0x004D, 0x0056, 0x0070, 0x0057, 0x006E, 0x0057, 0x03BC, 0x0057, 0x006D, + 0x0057, 0x006B, 0x0057, 0x004D, 0x0057, 0x006B, 0x03A9, 0x004D, 0x03A9, + 0x0042, 0x0071, 0x0063, 0x0063, 0x0063, 0x0064, 0x0064, 0x0042, 0x0047, + 0x0079, 0x0068, 0x0061, 0x0048, 0x0050, 0x0069, 0x006E, 0x004B, 0x004B, + 0x004B, 0x004D, 0x006B, 0x0074, 0x006C, 0x006D, 0x006C, 0x006E, 0x006C, + 0x0078, 0x006D, 0x0062, 0x0050, 0x0048, 0x0050, 0x0052, 0x0073, 0x0072, + 0x0053, 0x0076, 0x0057, 0x0062, 0x0031, 0x65E5, 0x0032, 0x65E5, 0x0033, + 0x65E5, 0x0034, 0x65E5, 0x0035, 0x65E5, 0x0036, 0x65E5, 0x0037, 0x65E5, + 0x0038, 0x65E5, 0x0039, 0x65E5, 0x0066, 0x0066, 0x0066, 0x0069, 0x0066, + 0x006C, 0x017F, 0x0074, 0x0073, 0x0074, 0x0574, 0x0576, 0x0574, 0x0565, + 0x0574, 0x056B, 0x057E, 0x0576, 0x0574, 0x056D, 0x05D9, 0x05B4, 0x05F2, + 0x05B7, 0x05E9, 0x05C1, 0x05E9, 0x05C2, 0xFB49, 0x05C1, 0xFB49, 0x05C2, + 0x05D0, 0x05B7, 0x05D0, 0x05B8, 0x05D0, 0x05BC, 0x05D1, 0x05BC, 0x05D2, + 0x05BC, 0x05D3, 0x05BC, 0x05D4, 0x05BC, 0x05D5, 0x05BC, 0x05D6, 0x05BC, + 0x05D8, 0x05BC, 0x05D9, 0x05BC, 0x05DA, 0x05BC, 0x05DB, 0x05BC, 0x05DC, + 0x05BC, 0x05DE, 0x05BC, 0x05E0, 0x05BC, 0x05E1, 0x05BC, 0x05E3, 0x05BC, + 0x05E4, 0x05BC, 0x05E6, 0x05BC, 0x05E7, 0x05BC, 0x05E8, 0x05BC, 0x05E9, + 0x05BC, 0x05EA, 0x05BC, 0x05D5, 0x05B9, 0x05D1, 0x05BF, 0x05DB, 0x05BF, + 0x05E4, 0x05BF, 0x05D0, 0x05DC, 0x0626, 0x0627, 0x0626, 0x0627, 0x0626, + 0x06D5, 0x0626, 0x06D5, 0x0626, 0x0648, 0x0626, 0x0648, 0x0626, 0x06C7, + 0x0626, 0x06C7, 0x0626, 0x06C6, 0x0626, 0x06C6, 0x0626, 0x06C8, 0x0626, + 0x06C8, 0x0626, 0x06D0, 0x0626, 0x06D0, 0x0626, 0x06D0, 0x0626, 0x0649, + 0x0626, 0x0649, 0x0626, 0x0649, 0x0626, 0x062C, 0x0626, 0x062D, 0x0626, + 0x0645, 0x0626, 0x0649, 0x0626, 0x064A, 0x0628, 0x062C, 0x0628, 0x062D, + 0x0628, 0x062E, 0x0628, 0x0645, 0x0628, 0x0649, 0x0628, 0x064A, 0x062A, + 0x062C, 0x062A, 0x062D, 0x062A, 0x062E, 0x062A, 0x0645, 0x062A, 0x0649, + 0x062A, 0x064A, 0x062B, 0x062C, 0x062B, 0x0645, 0x062B, 0x0649, 0x062B, + 0x064A, 0x062C, 0x062D, 0x062C, 0x0645, 0x062D, 0x062C, 0x062D, 0x0645, + 0x062E, 0x062C, 0x062E, 0x062D, 0x062E, 0x0645, 0x0633, 0x062C, 0x0633, + 0x062D, 0x0633, 0x062E, 0x0633, 0x0645, 0x0635, 0x062D, 0x0635, 0x0645, + 0x0636, 0x062C, 0x0636, 0x062D, 0x0636, 0x062E, 0x0636, 0x0645, 0x0637, + 0x062D, 0x0637, 0x0645, 0x0638, 0x0645, 0x0639, 0x062C, 0x0639, 0x0645, + 0x063A, 0x062C, 0x063A, 0x0645, 0x0641, 0x062C, 0x0641, 0x062D, 0x0641, + 0x062E, 0x0641, 0x0645, 0x0641, 0x0649, 0x0641, 0x064A, 0x0642, 0x062D, + 0x0642, 0x0645, 0x0642, 0x0649, 0x0642, 0x064A, 0x0643, 0x0627, 0x0643, + 0x062C, 0x0643, 0x062D, 0x0643, 0x062E, 0x0643, 0x0644, 0x0643, 0x0645, + 0x0643, 0x0649, 0x0643, 0x064A, 0x0644, 0x062C, 0x0644, 0x062D, 0x0644, + 0x062E, 0x0644, 0x0645, 0x0644, 0x0649, 0x0644, 0x064A, 0x0645, 0x062C, + 0x0645, 0x062D, 0x0645, 0x062E, 0x0645, 0x0645, 0x0645, 0x0649, 0x0645, + 0x064A, 0x0646, 0x062C, 0x0646, 0x062D, 0x0646, 0x062E, 0x0646, 0x0645, + 0x0646, 0x0649, 0x0646, 0x064A, 0x0647, 0x062C, 0x0647, 0x0645, 0x0647, + 0x0649, 0x0647, 0x064A, 0x064A, 0x062C, 0x064A, 0x062D, 0x064A, 0x062E, + 0x064A, 0x0645, 0x064A, 0x0649, 0x064A, 0x064A, 0x0630, 0x0670, 0x0631, + 0x0670, 0x0649, 0x0670, 0x064C, 0x0651, 0x064D, 0x0651, 0x064E, 0x0651, + 0x064F, 0x0651, 0x0650, 0x0651, 0x0651, 0x0670, 0x0626, 0x0631, 0x0626, + 0x0632, 0x0626, 0x0645, 0x0626, 0x0646, 0x0626, 0x0649, 0x0626, 0x064A, + 0x0628, 0x0631, 0x0628, 0x0632, 0x0628, 0x0645, 0x0628, 0x0646, 0x0628, + 0x0649, 0x0628, 0x064A, 0x062A, 0x0631, 0x062A, 0x0632, 0x062A, 0x0645, + 0x062A, 0x0646, 0x062A, 0x0649, 0x062A, 0x064A, 0x062B, 0x0631, 0x062B, + 0x0632, 0x062B, 0x0645, 0x062B, 0x0646, 0x062B, 0x0649, 0x062B, 0x064A, + 0x0641, 0x0649, 0x0641, 0x064A, 0x0642, 0x0649, 0x0642, 0x064A, 0x0643, + 0x0627, 0x0643, 0x0644, 0x0643, 0x0645, 0x0643, 0x0649, 0x0643, 0x064A, + 0x0644, 0x0645, 0x0644, 0x0649, 0x0644, 0x064A, 0x0645, 0x0627, 0x0645, + 0x0645, 0x0646, 0x0631, 0x0646, 0x0632, 0x0646, 0x0645, 0x0646, 0x0646, + 0x0646, 0x0649, 0x0646, 0x064A, 0x0649, 0x0670, 0x064A, 0x0631, 0x064A, + 0x0632, 0x064A, 0x0645, 0x064A, 0x0646, 0x064A, 0x0649, 0x064A, 0x064A, + 0x0626, 0x062C, 0x0626, 0x062D, 0x0626, 0x062E, 0x0626, 0x0645, 0x0626, + 0x0647, 0x0628, 0x062C, 0x0628, 0x062D, 0x0628, 0x062E, 0x0628, 0x0645, + 0x0628, 0x0647, 0x062A, 0x062C, 0x062A, 0x062D, 0x062A, 0x062E, 0x062A, + 0x0645, 0x062A, 0x0647, 0x062B, 0x0645, 0x062C, 0x062D, 0x062C, 0x0645, + 0x062D, 0x062C, 0x062D, 0x0645, 0x062E, 0x062C, 0x062E, 0x0645, 0x0633, + 0x062C, 0x0633, 0x062D, 0x0633, 0x062E, 0x0633, 0x0645, 0x0635, 0x062D, + 0x0635, 0x062E, 0x0635, 0x0645, 0x0636, 0x062C, 0x0636, 0x062D, 0x0636, + 0x062E, 0x0636, 0x0645, 0x0637, 0x062D, 0x0638, 0x0645, 0x0639, 0x062C, + 0x0639, 0x0645, 0x063A, 0x062C, 0x063A, 0x0645, 0x0641, 0x062C, 0x0641, + 0x062D, 0x0641, 0x062E, 0x0641, 0x0645, 0x0642, 0x062D, 0x0642, 0x0645, + 0x0643, 0x062C, 0x0643, 0x062D, 0x0643, 0x062E, 0x0643, 0x0644, 0x0643, + 0x0645, 0x0644, 0x062C, 0x0644, 0x062D, 0x0644, 0x062E, 0x0644, 0x0645, + 0x0644, 0x0647, 0x0645, 0x062C, 0x0645, 0x062D, 0x0645, 0x062E, 0x0645, + 0x0645, 0x0646, 0x062C, 0x0646, 0x062D, 0x0646, 0x062E, 0x0646, 0x0645, + 0x0646, 0x0647, 0x0647, 0x062C, 0x0647, 0x0645, 0x0647, 0x0670, 0x064A, + 0x062C, 0x064A, 0x062D, 0x064A, 0x062E, 0x064A, 0x0645, 0x064A, 0x0647, + 0x0626, 0x0645, 0x0626, 0x0647, 0x0628, 0x0645, 0x0628, 0x0647, 0x062A, + 0x0645, 0x062A, 0x0647, 0x062B, 0x0645, 0x062B, 0x0647, 0x0633, 0x0645, + 0x0633, 0x0647, 0x0634, 0x0645, 0x0634, 0x0647, 0x0643, 0x0644, 0x0643, + 0x0645, 0x0644, 0x0645, 0x0646, 0x0645, 0x0646, 0x0647, 0x064A, 0x0645, + 0x064A, 0x0647, 0x0637, 0x0649, 0x0637, 0x064A, 0x0639, 0x0649, 0x0639, + 0x064A, 0x063A, 0x0649, 0x063A, 0x064A, 0x0633, 0x0649, 0x0633, 0x064A, + 0x0634, 0x0649, 0x0634, 0x064A, 0x062D, 0x0649, 0x062D, 0x064A, 0x062C, + 0x0649, 0x062C, 0x064A, 0x062E, 0x0649, 0x062E, 0x064A, 0x0635, 0x0649, + 0x0635, 0x064A, 0x0636, 0x0649, 0x0636, 0x064A, 0x0634, 0x062C, 0x0634, + 0x062D, 0x0634, 0x062E, 0x0634, 0x0645, 0x0634, 0x0631, 0x0633, 0x0631, + 0x0635, 0x0631, 0x0636, 0x0631, 0x0637, 0x0649, 0x0637, 0x064A, 0x0639, + 0x0649, 0x0639, 0x064A, 0x063A, 0x0649, 0x063A, 0x064A, 0x0633, 0x0649, + 0x0633, 0x064A, 0x0634, 0x0649, 0x0634, 0x064A, 0x062D, 0x0649, 0x062D, + 0x064A, 0x062C, 0x0649, 0x062C, 0x064A, 0x062E, 0x0649, 0x062E, 0x064A, + 0x0635, 0x0649, 0x0635, 0x064A, 0x0636, 0x0649, 0x0636, 0x064A, 0x0634, + 0x062C, 0x0634, 0x062D, 0x0634, 0x062E, 0x0634, 0x0645, 0x0634, 0x0631, + 0x0633, 0x0631, 0x0635, 0x0631, 0x0636, 0x0631, 0x0634, 0x062C, 0x0634, + 0x062D, 0x0634, 0x062E, 0x0634, 0x0645, 0x0633, 0x0647, 0x0634, 0x0647, + 0x0637, 0x0645, 0x0633, 0x062C, 0x0633, 0x062D, 0x0633, 0x062E, 0x0634, + 0x062C, 0x0634, 0x062D, 0x0634, 0x062E, 0x0637, 0x0645, 0x0638, 0x0645, + 0x0627, 0x064B, 0x0627, 0x064B, 0x0640, 0x064B, 0x0640, 0x064E, 0x0640, + 0x064F, 0x0640, 0x0650, 0x0640, 0x0651, 0x0640, 0x0652, 0x0644, 0x0622, + 0x0644, 0x0622, 0x0644, 0x0623, 0x0644, 0x0623, 0x0644, 0x0625, 0x0644, + 0x0625, 0x0644, 0x0627, 0x0644, 0x0627}; + +const FX_WCHAR g_UnicodeData_Normalization_Map3[1164] = { + 0x0031, 0x002F, 0x0034, 0x0031, 0x002F, 0x0032, 0x0033, 0x002F, 0x0034, + 0x002E, 0x002E, 0x002E, 0x2032, 0x2032, 0x2032, 0x2035, 0x2035, 0x2035, + 0x0061, 0x002F, 0x0063, 0x0061, 0x002F, 0x0073, 0x0063, 0x002F, 0x006F, + 0x0063, 0x002F, 0x0075, 0x0054, 0x0045, 0x004C, 0x0046, 0x0041, 0x0058, + 0x0031, 0x002F, 0x0037, 0x0031, 0x002F, 0x0039, 0x0031, 0x002F, 0x0033, + 0x0032, 0x002F, 0x0033, 0x0031, 0x002F, 0x0035, 0x0032, 0x002F, 0x0035, + 0x0033, 0x002F, 0x0035, 0x0034, 0x002F, 0x0035, 0x0031, 0x002F, 0x0036, + 0x0035, 0x002F, 0x0036, 0x0031, 0x002F, 0x0038, 0x0033, 0x002F, 0x0038, + 0x0035, 0x002F, 0x0038, 0x0037, 0x002F, 0x0038, 0x0049, 0x0049, 0x0049, + 0x0056, 0x0049, 0x0049, 0x0058, 0x0049, 0x0049, 0x0069, 0x0069, 0x0069, + 0x0076, 0x0069, 0x0069, 0x0078, 0x0069, 0x0069, 0x0030, 0x2044, 0x0033, + 0x222B, 0x222B, 0x222B, 0x222E, 0x222E, 0x222E, 0x004E, 0x0055, 0x004C, + 0x0053, 0x004F, 0x0048, 0x0053, 0x0054, 0x0058, 0x0045, 0x0054, 0x0058, + 0x0045, 0x004F, 0x0054, 0x0045, 0x004E, 0x0051, 0x0041, 0x0043, 0x004B, + 0x0042, 0x0045, 0x004C, 0x0044, 0x004C, 0x0045, 0x0044, 0x0043, 0x0031, + 0x0044, 0x0043, 0x0032, 0x0044, 0x0043, 0x0033, 0x0044, 0x0043, 0x0034, + 0x004E, 0x0041, 0x004B, 0x0053, 0x0059, 0x004E, 0x0045, 0x0054, 0x0042, + 0x0043, 0x0041, 0x004E, 0x0053, 0x0055, 0x0042, 0x0045, 0x0053, 0x0043, + 0x0044, 0x0045, 0x004C, 0x0028, 0x0031, 0x0029, 0x0028, 0x0032, 0x0029, + 0x0028, 0x0033, 0x0029, 0x0028, 0x0034, 0x0029, 0x0028, 0x0035, 0x0029, + 0x0028, 0x0036, 0x0029, 0x0028, 0x0037, 0x0029, 0x0028, 0x0038, 0x0029, + 0x0028, 0x0039, 0x0029, 0x0031, 0x0030, 0x002E, 0x0031, 0x0031, 0x002E, + 0x0031, 0x0032, 0x002E, 0x0031, 0x0033, 0x002E, 0x0031, 0x0034, 0x002E, + 0x0031, 0x0035, 0x002E, 0x0031, 0x0036, 0x002E, 0x0031, 0x0037, 0x002E, + 0x0031, 0x0038, 0x002E, 0x0031, 0x0039, 0x002E, 0x0032, 0x0030, 0x002E, + 0x0028, 0x0061, 0x0029, 0x0028, 0x0062, 0x0029, 0x0028, 0x0063, 0x0029, + 0x0028, 0x0064, 0x0029, 0x0028, 0x0065, 0x0029, 0x0028, 0x0066, 0x0029, + 0x0028, 0x0067, 0x0029, 0x0028, 0x0068, 0x0029, 0x0028, 0x0069, 0x0029, + 0x0028, 0x006A, 0x0029, 0x0028, 0x006B, 0x0029, 0x0028, 0x006C, 0x0029, + 0x0028, 0x006D, 0x0029, 0x0028, 0x006E, 0x0029, 0x0028, 0x006F, 0x0029, + 0x0028, 0x0070, 0x0029, 0x0028, 0x0071, 0x0029, 0x0028, 0x0072, 0x0029, + 0x0028, 0x0073, 0x0029, 0x0028, 0x0074, 0x0029, 0x0028, 0x0075, 0x0029, + 0x0028, 0x0076, 0x0029, 0x0028, 0x0077, 0x0029, 0x0028, 0x0078, 0x0029, + 0x0028, 0x0079, 0x0029, 0x0028, 0x007A, 0x0029, 0x003A, 0x003A, 0x003D, + 0x003D, 0x003D, 0x003D, 0x0028, 0x1100, 0x0029, 0x0028, 0x1102, 0x0029, + 0x0028, 0x1103, 0x0029, 0x0028, 0x1105, 0x0029, 0x0028, 0x1106, 0x0029, + 0x0028, 0x1107, 0x0029, 0x0028, 0x1109, 0x0029, 0x0028, 0x110B, 0x0029, + 0x0028, 0x110C, 0x0029, 0x0028, 0x110E, 0x0029, 0x0028, 0x110F, 0x0029, + 0x0028, 0x1110, 0x0029, 0x0028, 0x1111, 0x0029, 0x0028, 0x1112, 0x0029, + 0x0028, 0x4E00, 0x0029, 0x0028, 0x4E8C, 0x0029, 0x0028, 0x4E09, 0x0029, + 0x0028, 0x56DB, 0x0029, 0x0028, 0x4E94, 0x0029, 0x0028, 0x516D, 0x0029, + 0x0028, 0x4E03, 0x0029, 0x0028, 0x516B, 0x0029, 0x0028, 0x4E5D, 0x0029, + 0x0028, 0x5341, 0x0029, 0x0028, 0x6708, 0x0029, 0x0028, 0x706B, 0x0029, + 0x0028, 0x6C34, 0x0029, 0x0028, 0x6728, 0x0029, 0x0028, 0x91D1, 0x0029, + 0x0028, 0x571F, 0x0029, 0x0028, 0x65E5, 0x0029, 0x0028, 0x682A, 0x0029, + 0x0028, 0x6709, 0x0029, 0x0028, 0x793E, 0x0029, 0x0028, 0x540D, 0x0029, + 0x0028, 0x7279, 0x0029, 0x0028, 0x8CA1, 0x0029, 0x0028, 0x795D, 0x0029, + 0x0028, 0x52B4, 0x0029, 0x0028, 0x4EE3, 0x0029, 0x0028, 0x547C, 0x0029, + 0x0028, 0x5B66, 0x0029, 0x0028, 0x76E3, 0x0029, 0x0028, 0x4F01, 0x0029, + 0x0028, 0x8CC7, 0x0029, 0x0028, 0x5354, 0x0029, 0x0028, 0x796D, 0x0029, + 0x0028, 0x4F11, 0x0029, 0x0028, 0x81EA, 0x0029, 0x0028, 0x81F3, 0x0029, + 0x0050, 0x0054, 0x0045, 0x0031, 0x0030, 0x6708, 0x0031, 0x0031, 0x6708, + 0x0031, 0x0032, 0x6708, 0x0065, 0x0072, 0x0067, 0x004C, 0x0054, 0x0044, + 0x30A2, 0x30FC, 0x30EB, 0x30A4, 0x30F3, 0x30C1, 0x30A6, 0x30A9, 0x30F3, + 0x30AA, 0x30F3, 0x30B9, 0x30AA, 0x30FC, 0x30E0, 0x30AB, 0x30A4, 0x30EA, + 0x30AC, 0x30ED, 0x30F3, 0x30AC, 0x30F3, 0x30DE, 0x30AE, 0x30CB, 0x30FC, + 0x30B0, 0x30E9, 0x30E0, 0x30B1, 0x30FC, 0x30B9, 0x30B3, 0x30EB, 0x30CA, + 0x30B3, 0x30FC, 0x30DD, 0x30BB, 0x30F3, 0x30C1, 0x30BB, 0x30F3, 0x30C8, + 0x30C0, 0x30FC, 0x30B9, 0x30CE, 0x30C3, 0x30C8, 0x30CF, 0x30A4, 0x30C4, + 0x30D1, 0x30FC, 0x30C4, 0x30D4, 0x30AF, 0x30EB, 0x30D5, 0x30E9, 0x30F3, + 0x30DA, 0x30CB, 0x30D2, 0x30D8, 0x30EB, 0x30C4, 0x30DA, 0x30F3, 0x30B9, + 0x30DA, 0x30FC, 0x30B8, 0x30D9, 0x30FC, 0x30BF, 0x30DC, 0x30EB, 0x30C8, + 0x30DD, 0x30F3, 0x30C9, 0x30DB, 0x30FC, 0x30EB, 0x30DB, 0x30FC, 0x30F3, + 0x30DE, 0x30A4, 0x30EB, 0x30DE, 0x30C3, 0x30CF, 0x30DE, 0x30EB, 0x30AF, + 0x30E4, 0x30FC, 0x30C9, 0x30E4, 0x30FC, 0x30EB, 0x30E6, 0x30A2, 0x30F3, + 0x30EB, 0x30D4, 0x30FC, 0x30EF, 0x30C3, 0x30C8, 0x0031, 0x0030, 0x70B9, + 0x0031, 0x0031, 0x70B9, 0x0031, 0x0032, 0x70B9, 0x0031, 0x0033, 0x70B9, + 0x0031, 0x0034, 0x70B9, 0x0031, 0x0035, 0x70B9, 0x0031, 0x0036, 0x70B9, + 0x0031, 0x0037, 0x70B9, 0x0031, 0x0038, 0x70B9, 0x0031, 0x0039, 0x70B9, + 0x0032, 0x0030, 0x70B9, 0x0032, 0x0031, 0x70B9, 0x0032, 0x0032, 0x70B9, + 0x0032, 0x0033, 0x70B9, 0x0032, 0x0034, 0x70B9, 0x0068, 0x0050, 0x0061, + 0x0062, 0x0061, 0x0072, 0x0064, 0x006D, 0x00B2, 0x0064, 0x006D, 0x00B3, + 0x0063, 0x0061, 0x006C, 0x006B, 0x0048, 0x007A, 0x004D, 0x0048, 0x007A, + 0x0047, 0x0048, 0x007A, 0x0054, 0x0048, 0x007A, 0x006D, 0x006D, 0x00B2, + 0x0063, 0x006D, 0x00B2, 0x006B, 0x006D, 0x00B2, 0x006D, 0x006D, 0x00B3, + 0x0063, 0x006D, 0x00B3, 0x006B, 0x006D, 0x00B3, 0x006D, 0x2215, 0x0073, + 0x006B, 0x0050, 0x0061, 0x004D, 0x0050, 0x0061, 0x0047, 0x0050, 0x0061, + 0x0072, 0x0061, 0x0064, 0x0043, 0x006F, 0x002E, 0x006C, 0x006F, 0x0067, + 0x006D, 0x0069, 0x006C, 0x006D, 0x006F, 0x006C, 0x0050, 0x0050, 0x004D, + 0x0056, 0x2215, 0x006D, 0x0041, 0x2215, 0x006D, 0x0031, 0x0030, 0x65E5, + 0x0031, 0x0031, 0x65E5, 0x0031, 0x0032, 0x65E5, 0x0031, 0x0033, 0x65E5, + 0x0031, 0x0034, 0x65E5, 0x0031, 0x0035, 0x65E5, 0x0031, 0x0036, 0x65E5, + 0x0031, 0x0037, 0x65E5, 0x0031, 0x0038, 0x65E5, 0x0031, 0x0039, 0x65E5, + 0x0032, 0x0030, 0x65E5, 0x0032, 0x0031, 0x65E5, 0x0032, 0x0032, 0x65E5, + 0x0032, 0x0033, 0x65E5, 0x0032, 0x0034, 0x65E5, 0x0032, 0x0035, 0x65E5, + 0x0032, 0x0036, 0x65E5, 0x0032, 0x0037, 0x65E5, 0x0032, 0x0038, 0x65E5, + 0x0032, 0x0039, 0x65E5, 0x0033, 0x0030, 0x65E5, 0x0033, 0x0031, 0x65E5, + 0x0067, 0x0061, 0x006C, 0x0066, 0x0066, 0x0069, 0x0066, 0x0066, 0x006C, + 0x0640, 0x064E, 0x0651, 0x0640, 0x064F, 0x0651, 0x0640, 0x0650, 0x0651, + 0x062A, 0x062C, 0x0645, 0x062A, 0x062D, 0x062C, 0x062A, 0x062D, 0x062C, + 0x062A, 0x062D, 0x0645, 0x062A, 0x062E, 0x0645, 0x062A, 0x0645, 0x062C, + 0x062A, 0x0645, 0x062D, 0x062A, 0x0645, 0x062E, 0x062C, 0x0645, 0x062D, + 0x062C, 0x0645, 0x062D, 0x062D, 0x0645, 0x064A, 0x062D, 0x0645, 0x0649, + 0x0633, 0x062D, 0x062C, 0x0633, 0x062C, 0x062D, 0x0633, 0x062C, 0x0649, + 0x0633, 0x0645, 0x062D, 0x0633, 0x0645, 0x062D, 0x0633, 0x0645, 0x062C, + 0x0633, 0x0645, 0x0645, 0x0633, 0x0645, 0x0645, 0x0635, 0x062D, 0x062D, + 0x0635, 0x062D, 0x062D, 0x0635, 0x0645, 0x0645, 0x0634, 0x062D, 0x0645, + 0x0634, 0x062D, 0x0645, 0x0634, 0x062C, 0x064A, 0x0634, 0x0645, 0x062E, + 0x0634, 0x0645, 0x062E, 0x0634, 0x0645, 0x0645, 0x0634, 0x0645, 0x0645, + 0x0636, 0x062D, 0x0649, 0x0636, 0x062E, 0x0645, 0x0636, 0x062E, 0x0645, + 0x0637, 0x0645, 0x062D, 0x0637, 0x0645, 0x062D, 0x0637, 0x0645, 0x0645, + 0x0637, 0x0645, 0x064A, 0x0639, 0x062C, 0x0645, 0x0639, 0x0645, 0x0645, + 0x0639, 0x0645, 0x0645, 0x0639, 0x0645, 0x0649, 0x063A, 0x0645, 0x0645, + 0x063A, 0x0645, 0x064A, 0x063A, 0x0645, 0x0649, 0x0641, 0x062E, 0x0645, + 0x0641, 0x062E, 0x0645, 0x0642, 0x0645, 0x062D, 0x0642, 0x0645, 0x0645, + 0x0644, 0x062D, 0x0645, 0x0644, 0x062D, 0x064A, 0x0644, 0x062D, 0x0649, + 0x0644, 0x062C, 0x062C, 0x0644, 0x062C, 0x062C, 0x0644, 0x062E, 0x0645, + 0x0644, 0x062E, 0x0645, 0x0644, 0x0645, 0x062D, 0x0644, 0x0645, 0x062D, + 0x0645, 0x062D, 0x062C, 0x0645, 0x062D, 0x0645, 0x0645, 0x062D, 0x064A, + 0x0645, 0x062C, 0x062D, 0x0645, 0x062C, 0x0645, 0x0645, 0x062E, 0x062C, + 0x0645, 0x062E, 0x0645, 0x0645, 0x062C, 0x062E, 0x0647, 0x0645, 0x062C, + 0x0647, 0x0645, 0x0645, 0x0646, 0x062D, 0x0645, 0x0646, 0x062D, 0x0649, + 0x0646, 0x062C, 0x0645, 0x0646, 0x062C, 0x0645, 0x0646, 0x062C, 0x0649, + 0x0646, 0x0645, 0x064A, 0x0646, 0x0645, 0x0649, 0x064A, 0x0645, 0x0645, + 0x064A, 0x0645, 0x0645, 0x0628, 0x062E, 0x064A, 0x062A, 0x062C, 0x064A, + 0x062A, 0x062C, 0x0649, 0x062A, 0x062E, 0x064A, 0x062A, 0x062E, 0x0649, + 0x062A, 0x0645, 0x064A, 0x062A, 0x0645, 0x0649, 0x062C, 0x0645, 0x064A, + 0x062C, 0x062D, 0x0649, 0x062C, 0x0645, 0x0649, 0x0633, 0x062E, 0x0649, + 0x0635, 0x062D, 0x064A, 0x0634, 0x062D, 0x064A, 0x0636, 0x062D, 0x064A, + 0x0644, 0x062C, 0x064A, 0x0644, 0x0645, 0x064A, 0x064A, 0x062D, 0x064A, + 0x064A, 0x062C, 0x064A, 0x064A, 0x0645, 0x064A, 0x0645, 0x0645, 0x064A, + 0x0642, 0x0645, 0x064A, 0x0646, 0x062D, 0x064A, 0x0642, 0x0645, 0x062D, + 0x0644, 0x062D, 0x0645, 0x0639, 0x0645, 0x064A, 0x0643, 0x0645, 0x064A, + 0x0646, 0x062C, 0x062D, 0x0645, 0x062E, 0x064A, 0x0644, 0x062C, 0x0645, + 0x0643, 0x0645, 0x0645, 0x0644, 0x062C, 0x0645, 0x0646, 0x062C, 0x062D, + 0x062C, 0x062D, 0x064A, 0x062D, 0x062C, 0x064A, 0x0645, 0x062C, 0x064A, + 0x0641, 0x0645, 0x064A, 0x0628, 0x062D, 0x064A, 0x0643, 0x0645, 0x0645, + 0x0639, 0x062C, 0x0645, 0x0635, 0x0645, 0x0645, 0x0633, 0x062E, 0x064A, + 0x0646, 0x062C, 0x064A, 0x0635, 0x0644, 0x06D2, 0x0642, 0x0644, 0x06D2, + 0x0635, 0x0644, 0x0649}; + +const FX_WCHAR g_UnicodeData_Normalization_Map4[488] = { + 0x0004, 0x2032, 0x2032, 0x2032, 0x2032, 0x0004, 0x0031, 0x002F, 0x0031, + 0x0030, 0x0004, 0x0056, 0x0049, 0x0049, 0x0049, 0x0004, 0x0076, 0x0069, + 0x0069, 0x0069, 0x0004, 0x0028, 0x0031, 0x0030, 0x0029, 0x0004, 0x0028, + 0x0031, 0x0031, 0x0029, 0x0004, 0x0028, 0x0031, 0x0032, 0x0029, 0x0004, + 0x0028, 0x0031, 0x0033, 0x0029, 0x0004, 0x0028, 0x0031, 0x0034, 0x0029, + 0x0004, 0x0028, 0x0031, 0x0035, 0x0029, 0x0004, 0x0028, 0x0031, 0x0036, + 0x0029, 0x0004, 0x0028, 0x0031, 0x0037, 0x0029, 0x0004, 0x0028, 0x0031, + 0x0038, 0x0029, 0x0004, 0x0028, 0x0031, 0x0039, 0x0029, 0x0004, 0x0028, + 0x0032, 0x0030, 0x0029, 0x0004, 0x222B, 0x222B, 0x222B, 0x222B, 0x0004, + 0x0028, 0x1100, 0x1161, 0x0029, 0x0004, 0x0028, 0x1102, 0x1161, 0x0029, + 0x0004, 0x0028, 0x1103, 0x1161, 0x0029, 0x0004, 0x0028, 0x1105, 0x1161, + 0x0029, 0x0004, 0x0028, 0x1106, 0x1161, 0x0029, 0x0004, 0x0028, 0x1107, + 0x1161, 0x0029, 0x0004, 0x0028, 0x1109, 0x1161, 0x0029, 0x0004, 0x0028, + 0x110B, 0x1161, 0x0029, 0x0004, 0x0028, 0x110C, 0x1161, 0x0029, 0x0004, + 0x0028, 0x110E, 0x1161, 0x0029, 0x0004, 0x0028, 0x110F, 0x1161, 0x0029, + 0x0004, 0x0028, 0x1110, 0x1161, 0x0029, 0x0004, 0x0028, 0x1111, 0x1161, + 0x0029, 0x0004, 0x0028, 0x1112, 0x1161, 0x0029, 0x0004, 0x0028, 0x110C, + 0x116E, 0x0029, 0x0007, 0x0028, 0x110B, 0x1169, 0x110C, 0x1165, 0x11AB, + 0x0029, 0x0006, 0x0028, 0x110B, 0x1169, 0x1112, 0x116E, 0x0029, 0x0005, + 0x110E, 0x1161, 0x11B7, 0x1100, 0x1169, 0x0004, 0x110C, 0x116E, 0x110B, + 0x1174, 0x0004, 0x30A2, 0x30D1, 0x30FC, 0x30C8, 0x0004, 0x30A2, 0x30EB, + 0x30D5, 0x30A1, 0x0004, 0x30A2, 0x30F3, 0x30DA, 0x30A2, 0x0004, 0x30A4, + 0x30CB, 0x30F3, 0x30B0, 0x0005, 0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9, + 0x0004, 0x30A8, 0x30FC, 0x30AB, 0x30FC, 0x0004, 0x30AB, 0x30E9, 0x30C3, + 0x30C8, 0x0004, 0x30AB, 0x30ED, 0x30EA, 0x30FC, 0x0004, 0x30AD, 0x30E5, + 0x30EA, 0x30FC, 0x0004, 0x30AE, 0x30EB, 0x30C0, 0x30FC, 0x0005, 0x30AD, + 0x30ED, 0x30B0, 0x30E9, 0x30E0, 0x0006, 0x30AD, 0x30ED, 0x30E1, 0x30FC, + 0x30C8, 0x30EB, 0x0005, 0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8, 0x0005, + 0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3, 0x0005, 0x30AF, 0x30EB, 0x30BC, + 0x30A4, 0x30ED, 0x0004, 0x30AF, 0x30ED, 0x30FC, 0x30CD, 0x0004, 0x30B5, + 0x30A4, 0x30AF, 0x30EB, 0x0005, 0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0, + 0x0004, 0x30B7, 0x30EA, 0x30F3, 0x30B0, 0x0005, 0x30D1, 0x30FC, 0x30BB, + 0x30F3, 0x30C8, 0x0004, 0x30D0, 0x30FC, 0x30EC, 0x30EB, 0x0005, 0x30D4, + 0x30A2, 0x30B9, 0x30C8, 0x30EB, 0x0005, 0x30D5, 0x30A1, 0x30E9, 0x30C3, + 0x30C9, 0x0004, 0x30D5, 0x30A3, 0x30FC, 0x30C8, 0x0005, 0x30D6, 0x30C3, + 0x30B7, 0x30A7, 0x30EB, 0x0005, 0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB, + 0x0004, 0x30DD, 0x30A4, 0x30F3, 0x30C8, 0x0004, 0x30DE, 0x30A4, 0x30AF, + 0x30ED, 0x0005, 0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3, 0x0004, 0x30DF, + 0x30AF, 0x30ED, 0x30F3, 0x0005, 0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB, + 0x0004, 0x30E1, 0x30AC, 0x30C8, 0x30F3, 0x0004, 0x30E1, 0x30FC, 0x30C8, + 0x30EB, 0x0004, 0x30EA, 0x30C3, 0x30C8, 0x30EB, 0x0004, 0x30EB, 0x30FC, + 0x30D6, 0x30EB, 0x0005, 0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3, 0x0004, + 0x682A, 0x5F0F, 0x4F1A, 0x793E, 0x0004, 0x006B, 0x0063, 0x0061, 0x006C, + 0x0004, 0x006D, 0x2215, 0x0073, 0x00B2, 0x0005, 0x0072, 0x0061, 0x0064, + 0x2215, 0x0073, 0x0006, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00B2, + 0x0004, 0x0061, 0x002E, 0x006D, 0x002E, 0x0004, 0x0043, 0x2215, 0x006B, + 0x0067, 0x0004, 0x0070, 0x002E, 0x006D, 0x002E, 0x0004, 0x0627, 0x0644, + 0x0644, 0x0647, 0x0004, 0x0627, 0x0643, 0x0628, 0x0631, 0x0004, 0x0645, + 0x062D, 0x0645, 0x062F, 0x0004, 0x0635, 0x0644, 0x0639, 0x0645, 0x0004, + 0x0631, 0x0633, 0x0648, 0x0644, 0x0004, 0x0639, 0x0644, 0x064A, 0x0647, + 0x0004, 0x0648, 0x0633, 0x0644, 0x0645, 0x0012, 0x0635, 0x0644, 0x0649, + 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, + 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0x0008, 0x062C, 0x0644, + 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647, 0x0004, 0x0631, 0x06CC, + 0x0627, 0x0644}; diff --git a/core/fpdftext/unicodenormalizationdata.h b/core/fpdftext/unicodenormalizationdata.h new file mode 100644 index 0000000000..d586aa3781 --- /dev/null +++ b/core/fpdftext/unicodenormalizationdata.h @@ -0,0 +1,18 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FPDFTEXT_UNICODENORMALIZATIONDATA_H_ +#define CORE_FPDFTEXT_UNICODENORMALIZATIONDATA_H_ + +#include "core/include/fxcrt/fx_system.h" + +extern const FX_WCHAR g_UnicodeData_Normalization[]; +extern const FX_WCHAR g_UnicodeData_Normalization_Map1[]; +extern const FX_WCHAR g_UnicodeData_Normalization_Map2[]; +extern const FX_WCHAR g_UnicodeData_Normalization_Map3[]; +extern const FX_WCHAR g_UnicodeData_Normalization_Map4[]; + +#endif // CORE_FPDFTEXT_UNICODENORMALIZATIONDATA_H_ diff --git a/core/fxcodec/DEPS b/core/fxcodec/DEPS new file mode 100644 index 0000000000..a88b3294a9 --- /dev/null +++ b/core/fxcodec/DEPS @@ -0,0 +1,8 @@ +include_rules = [ + '+third_party/lcms2-2.6', + '+third_party/libjpeg/jpeglib.h', + # For non-standalone builds that may use libjpeg_turbo. + '+third_party/libjpeg_turbo/jpeglib.h', + '+third_party/libopenjpeg20', + '+third_party/zlib_v128', +] diff --git a/core/fxcodec/codec/DEPS b/core/fxcodec/codec/DEPS new file mode 100644 index 0000000000..495d288992 --- /dev/null +++ b/core/fxcodec/codec/DEPS @@ -0,0 +1,4 @@ +include_rules = [ + '+third_party/libpng16/png.h', + '+third_party/libtiff/tiffiop.h', +] diff --git a/core/fxcodec/codec/codec_int.h b/core/fxcodec/codec/codec_int.h new file mode 100644 index 0000000000..d2f44dd674 --- /dev/null +++ b/core/fxcodec/codec/codec_int.h @@ -0,0 +1,428 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_CODEC_CODEC_INT_H_ +#define CORE_FXCODEC_CODEC_CODEC_INT_H_ + +#include + +#include +#include +#include +#include + +#include "core/fxcodec/jbig2/JBig2_Context.h" +#include "core/include/fxcodec/fx_codec.h" +#include "third_party/libopenjpeg20/openjpeg.h" // For OPJ_SIZE_T. + +class CFX_IccProfileCache; +class CFX_IccTransformCache; +class CPDF_ColorSpace; + +class CCodec_BasicModule : public ICodec_BasicModule { + public: + // ICodec_BasicModule: + FX_BOOL RunLengthEncode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) override; + FX_BOOL A85Encode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) override; + ICodec_ScanlineDecoder* CreateRunLengthDecoder(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc) override; +}; + +class CCodec_ScanlineDecoder : public ICodec_ScanlineDecoder { + public: + CCodec_ScanlineDecoder(); + ~CCodec_ScanlineDecoder() override; + + // ICodec_ScanlineDecoder + FX_DWORD GetSrcOffset() override { return -1; } + void DownScale(int dest_width, int dest_height) override; + const uint8_t* GetScanline(int line) override; + FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) override; + int GetWidth() override { return m_OutputWidth; } + int GetHeight() override { return m_OutputHeight; } + int CountComps() override { return m_nComps; } + int GetBPC() override { return m_bpc; } + FX_BOOL IsColorTransformed() override { return m_bColorTransformed; } + void ClearImageData() override { m_pDataCache.reset(); } + + protected: + class ImageDataCache { + public: + ImageDataCache(int width, int height, FX_DWORD pitch); + ~ImageDataCache(); + + bool AllocateCache(); + void AppendLine(const uint8_t* line); + + int NumLines() const { return m_nCachedLines; } + const uint8_t* GetLine(int line) const; + bool IsSameDimensions(int width, int height) const { + return width == m_Width && height == m_Height; + } + + private: + bool IsValid() const { return m_Data.get() != nullptr; } + + const int m_Width; + const int m_Height; + const FX_DWORD m_Pitch; + int m_nCachedLines; + std::unique_ptr m_Data; + }; + + virtual FX_BOOL v_Rewind() = 0; + virtual uint8_t* v_GetNextLine() = 0; + virtual void v_DownScale(int dest_width, int dest_height) = 0; + + uint8_t* ReadNextLine(); + + int m_OrigWidth; + int m_OrigHeight; + int m_DownScale; + int m_OutputWidth; + int m_OutputHeight; + int m_nComps; + int m_bpc; + FX_DWORD m_Pitch; + FX_BOOL m_bColorTransformed; + int m_NextLine; + uint8_t* m_pLastScanline; + std::unique_ptr m_pDataCache; +}; + +class CCodec_FaxModule : public ICodec_FaxModule { + public: + // ICodec_FaxModule: + ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int K, + FX_BOOL EndOfLine, + FX_BOOL EncodedByteAlign, + FX_BOOL BlackIs1, + int Columns, + int Rows) override; + FX_BOOL Encode(const uint8_t* src_buf, + int width, + int height, + int pitch, + uint8_t*& dest_buf, + FX_DWORD& dest_size) override; +}; + +class CCodec_FlateModule : public ICodec_FlateModule { + public: + virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc, + int predictor, + int Colors, + int BitsPerComponent, + int Columns); + virtual FX_DWORD FlateOrLZWDecode(FX_BOOL bLZW, + const uint8_t* src_buf, + FX_DWORD src_size, + FX_BOOL bEarlyChange, + int predictor, + int Colors, + int BitsPerComponent, + int Columns, + FX_DWORD estimated_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size); + virtual FX_BOOL Encode(const uint8_t* src_buf, + FX_DWORD src_size, + int predictor, + int Colors, + int BitsPerComponent, + int Columns, + uint8_t*& dest_buf, + FX_DWORD& dest_size); + virtual FX_BOOL Encode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size); +}; + +class CCodec_JpegModule : public ICodec_JpegModule { + public: + CCodec_JpegModule() {} + ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + FX_BOOL ColorTransform) override; + FX_BOOL LoadInfo(const uint8_t* src_buf, + FX_DWORD src_size, + int& width, + int& height, + int& num_components, + int& bits_per_components, + FX_BOOL& color_transform, + uint8_t** icc_buf_ptr, + FX_DWORD* icc_length) override; + FX_BOOL Encode(const CFX_DIBSource* pSource, + uint8_t*& dest_buf, + FX_STRSIZE& dest_size, + int quality, + const uint8_t* icc_buf, + FX_DWORD icc_length) override; + void* Start() override; + void Finish(void* pContext) override; + void Input(void* pContext, + const uint8_t* src_buf, + FX_DWORD src_size) override; +#ifndef PDF_ENABLE_XFA + int ReadHeader(void* pContext, int* width, int* height, int* nComps) override; +#else // PDF_ENABLE_XFA + int ReadHeader(void* pContext, + int* width, + int* height, + int* nComps, + CFX_DIBAttribute* pAttribute) override; +#endif // PDF_ENABLE_XFA + int StartScanline(void* pContext, int down_scale) override; + FX_BOOL ReadScanline(void* pContext, uint8_t* dest_buf) override; + FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr) override; +}; + +#ifdef PDF_ENABLE_XFA +#define PNG_ERROR_SIZE 256 +class CCodec_PngModule : public ICodec_PngModule { + public: + CCodec_PngModule() { FXSYS_memset(m_szLastError, '\0', PNG_ERROR_SIZE); } + + virtual void* Start(void* pModule); + virtual void Finish(void* pContext); + virtual FX_BOOL Input(void* pContext, + const uint8_t* src_buf, + FX_DWORD src_size, + CFX_DIBAttribute* pAttribute); + + protected: + FX_CHAR m_szLastError[PNG_ERROR_SIZE]; +}; +class CCodec_GifModule : public ICodec_GifModule { + public: + CCodec_GifModule() { FXSYS_memset(m_szLastError, '\0', 256); } + virtual void* Start(void* pModule); + virtual void Finish(void* pContext); + virtual FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr); + virtual void Input(void* pContext, const uint8_t* src_buf, FX_DWORD src_size); + + virtual int32_t ReadHeader(void* pContext, + int* width, + int* height, + int* pal_num, + void** pal_pp, + int* bg_index, + CFX_DIBAttribute* pAttribute); + + virtual int32_t LoadFrameInfo(void* pContext, int* frame_num); + + virtual int32_t LoadFrame(void* pContext, + int frame_num, + CFX_DIBAttribute* pAttribute); + + protected: + FX_CHAR m_szLastError[256]; +}; +class CCodec_BmpModule : public ICodec_BmpModule { + public: + CCodec_BmpModule() { FXSYS_memset(m_szLastError, 0, sizeof(m_szLastError)); } + void* Start(void* pModule) override; + void Finish(void* pContext) override; + FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr) override; + void Input(void* pContext, + const uint8_t* src_buf, + FX_DWORD src_size) override; + int32_t ReadHeader(void* pContext, + int32_t* width, + int32_t* height, + FX_BOOL* tb_flag, + int32_t* components, + int32_t* pal_num, + FX_DWORD** pal_pp, + CFX_DIBAttribute* pAttribute) override; + int32_t LoadImage(void* pContext) override; + + protected: + FX_CHAR m_szLastError[256]; +}; +#endif // PDF_ENABLE_XFA + +class CCodec_IccModule : public ICodec_IccModule { + public: + ~CCodec_IccModule() override; + + // ICodec_IccModule: + IccCS GetProfileCS(const uint8_t* pProfileData, + unsigned int dwProfileSize) override; + IccCS GetProfileCS(IFX_FileRead* pFile) override; + void* CreateTransform(ICodec_IccModule::IccParam* pInputParam, + ICodec_IccModule::IccParam* pOutputParam, + ICodec_IccModule::IccParam* pProofParam = NULL, + FX_DWORD dwIntent = Icc_INTENT_PERCEPTUAL, + FX_DWORD dwFlag = Icc_FLAGS_DEFAULT, + FX_DWORD dwPrfIntent = Icc_INTENT_ABSOLUTE_COLORIMETRIC, + FX_DWORD dwPrfFlag = Icc_FLAGS_SOFTPROOFING) override; + void* CreateTransform_sRGB( + const uint8_t* pProfileData, + FX_DWORD dwProfileSize, + FX_DWORD& nComponents, + int32_t intent = 0, + FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT) override; + void* CreateTransform_CMYK( + const uint8_t* pSrcProfileData, + FX_DWORD dwSrcProfileSize, + FX_DWORD& nSrcComponents, + const uint8_t* pDstProfileData, + FX_DWORD dwDstProfileSize, + int32_t intent = 0, + FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT, + FX_DWORD dwDstFormat = Icc_FORMAT_DEFAULT) override; + void DestroyTransform(void* pTransform) override; + void Translate(void* pTransform, + FX_FLOAT* pSrcValues, + FX_FLOAT* pDestValues) override; + void TranslateScanline(void* pTransform, + uint8_t* pDest, + const uint8_t* pSrc, + int pixels) override; + void SetComponents(FX_DWORD nComponents) override { + m_nComponents = nComponents; + } + + protected: + enum Icc_CLASS { + Icc_CLASS_INPUT = 0, + Icc_CLASS_OUTPUT, + Icc_CLASS_PROOF, + Icc_CLASS_MAX + }; + void* CreateProfile(ICodec_IccModule::IccParam* pIccParam, + Icc_CLASS ic, + CFX_BinaryBuf* pTransformKey); + + FX_DWORD m_nComponents; + std::map m_MapTranform; + std::map m_MapProfile; +}; + +class CCodec_JpxModule : public ICodec_JpxModule { + public: + CCodec_JpxModule(); + ~CCodec_JpxModule() override; + + // ICodec_JpxModule: + CJPX_Decoder* CreateDecoder(const uint8_t* src_buf, + FX_DWORD src_size, + CPDF_ColorSpace* cs) override; + void GetImageInfo(CJPX_Decoder* pDecoder, + FX_DWORD* width, + FX_DWORD* height, + FX_DWORD* components) override; + bool Decode(CJPX_Decoder* pDecoder, + uint8_t* dest_data, + int pitch, + const std::vector& offsets) override; + void DestroyDecoder(CJPX_Decoder* pDecoder) override; +}; + +#ifdef PDF_ENABLE_XFA +class CCodec_TiffModule : public ICodec_TiffModule { + public: + // ICodec_TiffModule + void* CreateDecoder(IFX_FileRead* file_ptr) override; + void GetFrames(void* ctx, int32_t& frames) override; + FX_BOOL LoadFrameInfo(void* ctx, + int32_t frame, + FX_DWORD& width, + FX_DWORD& height, + FX_DWORD& comps, + FX_DWORD& bpc, + CFX_DIBAttribute* pAttribute) override; + FX_BOOL Decode(void* ctx, class CFX_DIBitmap* pDIBitmap) override; + void DestroyDecoder(void* ctx) override; + + protected: + ~CCodec_TiffModule() override {} +}; +#endif // PDF_ENABLE_XFA + +class CCodec_Jbig2Context { + public: + CCodec_Jbig2Context(); + ~CCodec_Jbig2Context() {} + + FX_DWORD m_width; + FX_DWORD m_height; + CPDF_StreamAcc* m_pGlobalStream; + CPDF_StreamAcc* m_pSrcStream; + uint8_t* m_dest_buf; + FX_DWORD m_dest_pitch; + IFX_Pause* m_pPause; + CJBig2_Context* m_pContext; + CJBig2_Image* m_dest_image; +}; +class CCodec_Jbig2Module : public ICodec_Jbig2Module { + public: + CCodec_Jbig2Module() {} + ~CCodec_Jbig2Module() override; + + // ICodec_Jbig2Module + void* CreateJbig2Context() override; + FXCODEC_STATUS StartDecode(void* pJbig2Context, + CFX_PrivateData* pPrivateData, + FX_DWORD width, + FX_DWORD height, + CPDF_StreamAcc* src_stream, + CPDF_StreamAcc* global_stream, + uint8_t* dest_buf, + FX_DWORD dest_pitch, + IFX_Pause* pPause) override; + FXCODEC_STATUS ContinueDecode(void* pJbig2Context, + IFX_Pause* pPause) override; + void DestroyJbig2Context(void* pJbig2Context) override; +}; + +struct DecodeData { + public: + DecodeData(unsigned char* src_data, OPJ_SIZE_T src_size) + : src_data(src_data), src_size(src_size), offset(0) {} + unsigned char* src_data; + OPJ_SIZE_T src_size; + OPJ_SIZE_T offset; +}; + +void sycc420_to_rgb(opj_image_t* img); + +/* Wrappers for C-style callbacks. */ +OPJ_SIZE_T opj_read_from_memory(void* p_buffer, + OPJ_SIZE_T nb_bytes, + void* p_user_data); +OPJ_SIZE_T opj_write_from_memory(void* p_buffer, + OPJ_SIZE_T nb_bytes, + void* p_user_data); +OPJ_OFF_T opj_skip_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data); +OPJ_BOOL opj_seek_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data); + +#endif // CORE_FXCODEC_CODEC_CODEC_INT_H_ diff --git a/core/fxcodec/codec/fx_codec.cpp b/core/fxcodec/codec/fx_codec.cpp new file mode 100644 index 0000000000..f1298f9fb3 --- /dev/null +++ b/core/fxcodec/codec/fx_codec.cpp @@ -0,0 +1,487 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcodec/fx_codec.h" + +#include +#include + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "third_party/base/logging.h" + +CCodec_ModuleMgr::CCodec_ModuleMgr() + : m_pBasicModule(new CCodec_BasicModule), + m_pFaxModule(new CCodec_FaxModule), + m_pJpegModule(new CCodec_JpegModule), + m_pJpxModule(new CCodec_JpxModule), + m_pJbig2Module(new CCodec_Jbig2Module), + m_pIccModule(new CCodec_IccModule), +#ifdef PDF_ENABLE_XFA + m_pPngModule(new CCodec_PngModule), + m_pGifModule(new CCodec_GifModule), + m_pBmpModule(new CCodec_BmpModule), + m_pTiffModule(new CCodec_TiffModule), +#endif // PDF_ENABLE_XFA + m_pFlateModule(new CCodec_FlateModule) { +} + +CCodec_ScanlineDecoder::ImageDataCache::ImageDataCache(int width, + int height, + FX_DWORD pitch) + : m_Width(width), m_Height(height), m_Pitch(pitch), m_nCachedLines(0) {} + +CCodec_ScanlineDecoder::ImageDataCache::~ImageDataCache() {} + +bool CCodec_ScanlineDecoder::ImageDataCache::AllocateCache() { + if (m_Pitch == 0 || m_Height < 0) + return false; + + FX_SAFE_SIZE_T size = m_Pitch; + size *= m_Height; + if (!size.IsValid()) + return false; + + m_Data.reset(FX_TryAlloc(uint8_t, size.ValueOrDie())); + return IsValid(); +} + +void CCodec_ScanlineDecoder::ImageDataCache::AppendLine(const uint8_t* line) { + // If the callers adds more lines than there is room, fail. + if (m_Pitch == 0 || m_nCachedLines >= m_Height) { + NOTREACHED(); + return; + } + + size_t offset = m_Pitch; + FXSYS_memcpy(m_Data.get() + offset * m_nCachedLines, line, m_Pitch); + ++m_nCachedLines; +} + +const uint8_t* CCodec_ScanlineDecoder::ImageDataCache::GetLine(int line) const { + if (m_Pitch == 0 || line < 0 || line >= m_nCachedLines) + return nullptr; + + size_t offset = m_Pitch; + return m_Data.get() + offset * line; +} + +CCodec_ScanlineDecoder::CCodec_ScanlineDecoder() + : m_NextLine(-1), m_pLastScanline(nullptr) {} + +CCodec_ScanlineDecoder::~CCodec_ScanlineDecoder() {} + +const uint8_t* CCodec_ScanlineDecoder::GetScanline(int line) { + if (m_pDataCache && line < m_pDataCache->NumLines()) + return m_pDataCache->GetLine(line); + + if (m_NextLine == line + 1) + return m_pLastScanline; + + if (m_NextLine < 0 || m_NextLine > line) { + if (!v_Rewind()) + return nullptr; + m_NextLine = 0; + } + while (m_NextLine < line) { + ReadNextLine(); + m_NextLine++; + } + m_pLastScanline = ReadNextLine(); + m_NextLine++; + return m_pLastScanline; +} + +FX_BOOL CCodec_ScanlineDecoder::SkipToScanline(int line, IFX_Pause* pPause) { + if (m_pDataCache && line < m_pDataCache->NumLines()) + return FALSE; + + if (m_NextLine == line || m_NextLine == line + 1) + return FALSE; + + if (m_NextLine < 0 || m_NextLine > line) { + v_Rewind(); + m_NextLine = 0; + } + m_pLastScanline = nullptr; + while (m_NextLine < line) { + m_pLastScanline = ReadNextLine(); + m_NextLine++; + if (pPause && pPause->NeedToPauseNow()) { + return TRUE; + } + } + return FALSE; +} + +uint8_t* CCodec_ScanlineDecoder::ReadNextLine() { + uint8_t* pLine = v_GetNextLine(); + if (!pLine) + return nullptr; + + if (m_pDataCache && m_NextLine == m_pDataCache->NumLines()) + m_pDataCache->AppendLine(pLine); + return pLine; +} + +void CCodec_ScanlineDecoder::DownScale(int dest_width, int dest_height) { + dest_width = std::abs(dest_width); + dest_height = std::abs(dest_height); + v_DownScale(dest_width, dest_height); + + if (m_pDataCache && + m_pDataCache->IsSameDimensions(m_OutputWidth, m_OutputHeight)) { + return; + } + + std::unique_ptr cache( + new ImageDataCache(m_OutputWidth, m_OutputHeight, m_Pitch)); + if (!cache->AllocateCache()) + return; + + m_pDataCache = std::move(cache); +} + +FX_BOOL CCodec_BasicModule::RunLengthEncode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + return FALSE; +} + +#define EXPONENT_DETECT(ptr) \ + for (;; ptr++) { \ + if (!std::isdigit(*ptr)) { \ + if (endptr) \ + *endptr = (char*)ptr; \ + break; \ + } else { \ + exp_ret *= 10; \ + exp_ret += FXSYS_toDecimalDigit(*ptr); \ + continue; \ + } \ + } + +extern "C" double FXstrtod(const char* nptr, char** endptr) { + double ret = 0.0; + const char* ptr = nptr; + const char* exp_ptr = NULL; + int e_number = 0, e_signal = 0, e_point = 0, is_negative = 0; + int exp_ret = 0, exp_sig = 1, fra_ret = 0, fra_count = 0, fra_base = 1; + if (!nptr) { + return 0.0; + } + for (;; ptr++) { + if (!e_number && !e_point && (*ptr == '\t' || *ptr == ' ')) + continue; + + if (std::isdigit(*ptr)) { + if (!e_number) + e_number = 1; + + if (!e_point) { + ret *= 10; + ret += FXSYS_toDecimalDigit(*ptr); + } else { + fra_count++; + fra_ret *= 10; + fra_ret += FXSYS_toDecimalDigit(*ptr); + } + continue; + } + if (!e_point && *ptr == '.') { + e_point = 1; + continue; + } + if (!e_number && !e_point && !e_signal) { + switch (*ptr) { + case '-': + is_negative = 1; + case '+': + e_signal = 1; + continue; + } + } + if (e_number && (*ptr == 'e' || *ptr == 'E')) { + exp_ptr = ptr++; + if (*ptr == '+' || *ptr == '-') { + exp_sig = (*ptr++ == '+') ? 1 : -1; + if (!std::isdigit(*ptr)) { + if (endptr) { + *endptr = (char*)exp_ptr; + } + break; + } + EXPONENT_DETECT(ptr); + } else if (std::isdigit(*ptr)) { + EXPONENT_DETECT(ptr); + } else { + if (endptr) { + *endptr = (char*)exp_ptr; + } + break; + } + break; + } + if (ptr != nptr && !e_number) { + if (endptr) { + *endptr = (char*)nptr; + } + break; + } + if (endptr) { + *endptr = (char*)ptr; + } + break; + } + while (fra_count--) { + fra_base *= 10; + } + ret += (double)fra_ret / (double)fra_base; + if (exp_sig == 1) { + while (exp_ret--) { + ret *= 10.0; + } + } else { + while (exp_ret--) { + ret /= 10.0; + } + } + return is_negative ? -ret : ret; +} +#undef EXPONENT_DETECT + +FX_BOOL CCodec_BasicModule::A85Encode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + return FALSE; +} + +#ifdef PDF_ENABLE_XFA +CFX_DIBAttribute::CFX_DIBAttribute() + : m_nXDPI(-1), + m_nYDPI(-1), + m_fAspectRatio(-1.0f), + m_wDPIUnit(0), + m_nGifLeft(0), + m_nGifTop(0), + m_pGifLocalPalette(nullptr), + m_nGifLocalPalNum(0), + m_nBmpCompressType(0) { + FXSYS_memset(m_strTime, 0, sizeof(m_strTime)); +} +CFX_DIBAttribute::~CFX_DIBAttribute() { + for (const auto& pair : m_Exif) + FX_Free(pair.second); +} +#endif // PDF_ENABLE_XFA + +class CCodec_RLScanlineDecoder : public CCodec_ScanlineDecoder { + public: + CCodec_RLScanlineDecoder(); + ~CCodec_RLScanlineDecoder() override; + + FX_BOOL Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc); + + // CCodec_ScanlineDecoder + void v_DownScale(int dest_width, int dest_height) override {} + FX_BOOL v_Rewind() override; + uint8_t* v_GetNextLine() override; + FX_DWORD GetSrcOffset() override { return m_SrcOffset; } + + protected: + FX_BOOL CheckDestSize(); + void GetNextOperator(); + void UpdateOperator(uint8_t used_bytes); + + uint8_t* m_pScanline; + const uint8_t* m_pSrcBuf; + FX_DWORD m_SrcSize; + FX_DWORD m_dwLineBytes; + FX_DWORD m_SrcOffset; + FX_BOOL m_bEOD; + uint8_t m_Operator; +}; +CCodec_RLScanlineDecoder::CCodec_RLScanlineDecoder() + : m_pScanline(NULL), + m_pSrcBuf(NULL), + m_SrcSize(0), + m_dwLineBytes(0), + m_SrcOffset(0), + m_bEOD(FALSE), + m_Operator(0) {} +CCodec_RLScanlineDecoder::~CCodec_RLScanlineDecoder() { + FX_Free(m_pScanline); +} +FX_BOOL CCodec_RLScanlineDecoder::CheckDestSize() { + FX_DWORD i = 0; + FX_DWORD old_size = 0; + FX_DWORD dest_size = 0; + while (i < m_SrcSize) { + if (m_pSrcBuf[i] < 128) { + old_size = dest_size; + dest_size += m_pSrcBuf[i] + 1; + if (dest_size < old_size) { + return FALSE; + } + i += m_pSrcBuf[i] + 2; + } else if (m_pSrcBuf[i] > 128) { + old_size = dest_size; + dest_size += 257 - m_pSrcBuf[i]; + if (dest_size < old_size) { + return FALSE; + } + i += 2; + } else { + break; + } + } + if (((FX_DWORD)m_OrigWidth * m_nComps * m_bpc * m_OrigHeight + 7) / 8 > + dest_size) { + return FALSE; + } + return TRUE; +} +FX_BOOL CCodec_RLScanlineDecoder::Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc) { + m_pSrcBuf = src_buf; + m_SrcSize = src_size; + m_OutputWidth = m_OrigWidth = width; + m_OutputHeight = m_OrigHeight = height; + m_nComps = nComps; + m_bpc = bpc; + m_bColorTransformed = FALSE; + m_DownScale = 1; + // Aligning the pitch to 4 bytes requires an integer overflow check. + FX_SAFE_DWORD pitch = width; + pitch *= nComps; + pitch *= bpc; + pitch += 31; + pitch /= 32; + pitch *= 4; + if (!pitch.IsValid()) { + return FALSE; + } + m_Pitch = pitch.ValueOrDie(); + // Overflow should already have been checked before this is called. + m_dwLineBytes = (static_cast(width) * nComps * bpc + 7) / 8; + m_pScanline = FX_Alloc(uint8_t, m_Pitch); + return CheckDestSize(); +} +FX_BOOL CCodec_RLScanlineDecoder::v_Rewind() { + FXSYS_memset(m_pScanline, 0, m_Pitch); + m_SrcOffset = 0; + m_bEOD = FALSE; + m_Operator = 0; + return TRUE; +} +uint8_t* CCodec_RLScanlineDecoder::v_GetNextLine() { + if (m_SrcOffset == 0) { + GetNextOperator(); + } else { + if (m_bEOD) { + return NULL; + } + } + FXSYS_memset(m_pScanline, 0, m_Pitch); + FX_DWORD col_pos = 0; + FX_BOOL eol = FALSE; + while (m_SrcOffset < m_SrcSize && !eol) { + if (m_Operator < 128) { + FX_DWORD copy_len = m_Operator + 1; + if (col_pos + copy_len >= m_dwLineBytes) { + copy_len = m_dwLineBytes - col_pos; + eol = TRUE; + } + if (copy_len >= m_SrcSize - m_SrcOffset) { + copy_len = m_SrcSize - m_SrcOffset; + m_bEOD = TRUE; + } + FXSYS_memcpy(m_pScanline + col_pos, m_pSrcBuf + m_SrcOffset, copy_len); + col_pos += copy_len; + UpdateOperator((uint8_t)copy_len); + } else if (m_Operator > 128) { + int fill = 0; + if (m_SrcOffset - 1 < m_SrcSize - 1) { + fill = m_pSrcBuf[m_SrcOffset]; + } + FX_DWORD duplicate_len = 257 - m_Operator; + if (col_pos + duplicate_len >= m_dwLineBytes) { + duplicate_len = m_dwLineBytes - col_pos; + eol = TRUE; + } + FXSYS_memset(m_pScanline + col_pos, fill, duplicate_len); + col_pos += duplicate_len; + UpdateOperator((uint8_t)duplicate_len); + } else { + m_bEOD = TRUE; + break; + } + } + return m_pScanline; +} +void CCodec_RLScanlineDecoder::GetNextOperator() { + if (m_SrcOffset >= m_SrcSize) { + m_Operator = 128; + return; + } + m_Operator = m_pSrcBuf[m_SrcOffset]; + m_SrcOffset++; +} +void CCodec_RLScanlineDecoder::UpdateOperator(uint8_t used_bytes) { + if (used_bytes == 0) { + return; + } + if (m_Operator < 128) { + FXSYS_assert((FX_DWORD)m_Operator + 1 >= used_bytes); + if (used_bytes == m_Operator + 1) { + m_SrcOffset += used_bytes; + GetNextOperator(); + return; + } + m_Operator -= used_bytes; + m_SrcOffset += used_bytes; + if (m_SrcOffset >= m_SrcSize) { + m_Operator = 128; + } + return; + } + uint8_t count = 257 - m_Operator; + FXSYS_assert((FX_DWORD)count >= used_bytes); + if (used_bytes == count) { + m_SrcOffset++; + GetNextOperator(); + return; + } + count -= used_bytes; + m_Operator = 257 - count; +} +ICodec_ScanlineDecoder* CCodec_BasicModule::CreateRunLengthDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc) { + CCodec_RLScanlineDecoder* pRLScanlineDecoder = new CCodec_RLScanlineDecoder; + if (!pRLScanlineDecoder->Create(src_buf, src_size, width, height, nComps, + bpc)) { + delete pRLScanlineDecoder; + return NULL; + } + return pRLScanlineDecoder; +} diff --git a/core/fxcodec/codec/fx_codec_bmp.cpp b/core/fxcodec/codec/fx_codec_bmp.cpp new file mode 100644 index 0000000000..d2299d6e56 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_bmp.cpp @@ -0,0 +1,125 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/codec/codec_int.h" +#include "core/fxcodec/lbmp/fx_bmp.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_dib.h" +struct FXBMP_Context { + bmp_decompress_struct_p bmp_ptr; + void* parent_ptr; + void* child_ptr; + + void* (*m_AllocFunc)(unsigned int); + void (*m_FreeFunc)(void*); +}; +extern "C" { +static void* bmp_alloc_func(unsigned int size) { + return FX_Alloc(char, size); +} +static void bmp_free_func(void* p) { + FX_Free(p); +} +}; +static void bmp_error_data(bmp_decompress_struct_p bmp_ptr, + const FX_CHAR* err_msg) { + FXSYS_strncpy((char*)bmp_ptr->err_ptr, err_msg, BMP_MAX_ERROR_SIZE - 1); + longjmp(bmp_ptr->jmpbuf, 1); +} +static void bmp_read_scanline(bmp_decompress_struct_p bmp_ptr, + int32_t row_num, + uint8_t* row_buf) { + FXBMP_Context* p = (FXBMP_Context*)bmp_ptr->context_ptr; + CCodec_BmpModule* pModule = (CCodec_BmpModule*)p->parent_ptr; + pModule->ReadScanlineCallback(p->child_ptr, row_num, row_buf); +} +static FX_BOOL bmp_get_data_position(bmp_decompress_struct_p bmp_ptr, + FX_DWORD rcd_pos) { + FXBMP_Context* p = (FXBMP_Context*)bmp_ptr->context_ptr; + CCodec_BmpModule* pModule = (CCodec_BmpModule*)p->parent_ptr; + return pModule->InputImagePositionBufCallback(p->child_ptr, rcd_pos); +} +void* CCodec_BmpModule::Start(void* pModule) { + FXBMP_Context* p = (FXBMP_Context*)FX_Alloc(uint8_t, sizeof(FXBMP_Context)); + if (p == NULL) { + return NULL; + } + FXSYS_memset(p, 0, sizeof(FXBMP_Context)); + if (p == NULL) { + return NULL; + } + p->m_AllocFunc = bmp_alloc_func; + p->m_FreeFunc = bmp_free_func; + p->bmp_ptr = NULL; + p->parent_ptr = (void*)this; + p->child_ptr = pModule; + p->bmp_ptr = bmp_create_decompress(); + if (p->bmp_ptr == NULL) { + FX_Free(p); + return NULL; + } + p->bmp_ptr->context_ptr = (void*)p; + p->bmp_ptr->err_ptr = m_szLastError; + p->bmp_ptr->bmp_error_fn = bmp_error_data; + p->bmp_ptr->bmp_get_row_fn = bmp_read_scanline; + p->bmp_ptr->bmp_get_data_position_fn = bmp_get_data_position; + return p; +} +void CCodec_BmpModule::Finish(void* pContext) { + FXBMP_Context* p = (FXBMP_Context*)pContext; + if (p) { + bmp_destroy_decompress(&p->bmp_ptr); + p->m_FreeFunc(p); + } +} +int32_t CCodec_BmpModule::ReadHeader(void* pContext, + int32_t* width, + int32_t* height, + FX_BOOL* tb_flag, + int32_t* components, + int32_t* pal_num, + FX_DWORD** pal_pp, + CFX_DIBAttribute* pAttribute) { + FXBMP_Context* p = (FXBMP_Context*)pContext; + if (setjmp(p->bmp_ptr->jmpbuf)) { + return 0; + } + int32_t ret = bmp_read_header(p->bmp_ptr); + if (ret != 1) { + return ret; + } + *width = p->bmp_ptr->width; + *height = p->bmp_ptr->height; + *tb_flag = p->bmp_ptr->imgTB_flag; + *components = p->bmp_ptr->components; + *pal_num = p->bmp_ptr->pal_num; + *pal_pp = p->bmp_ptr->pal_ptr; + if (pAttribute) { + pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_METER; + pAttribute->m_nXDPI = p->bmp_ptr->dpi_x; + pAttribute->m_nYDPI = p->bmp_ptr->dpi_y; + pAttribute->m_nBmpCompressType = p->bmp_ptr->compress_flag; + } + return 1; +} +int32_t CCodec_BmpModule::LoadImage(void* pContext) { + FXBMP_Context* p = (FXBMP_Context*)pContext; + if (setjmp(p->bmp_ptr->jmpbuf)) { + return 0; + } + return bmp_decode_image(p->bmp_ptr); +} +FX_DWORD CCodec_BmpModule::GetAvailInput(void* pContext, + uint8_t** avial_buf_ptr) { + FXBMP_Context* p = (FXBMP_Context*)pContext; + return bmp_get_avail_input(p->bmp_ptr, avial_buf_ptr); +} +void CCodec_BmpModule::Input(void* pContext, + const uint8_t* src_buf, + FX_DWORD src_size) { + FXBMP_Context* p = (FXBMP_Context*)pContext; + bmp_input_buffer(p->bmp_ptr, (uint8_t*)src_buf, src_size); +} diff --git a/core/fxcodec/codec/fx_codec_fax.cpp b/core/fxcodec/codec/fx_codec_fax.cpp new file mode 100644 index 0000000000..13ffcda174 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_fax.cpp @@ -0,0 +1,830 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fxcodec/fx_codec.h" + +namespace { + +const uint8_t OneLeadPos[256] = { + 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; +const uint8_t ZeroLeadPos[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, +}; + +int FindBit(const uint8_t* data_buf, int max_pos, int start_pos, int bit) { + if (start_pos >= max_pos) { + return max_pos; + } + const uint8_t* leading_pos = bit ? OneLeadPos : ZeroLeadPos; + if (start_pos % 8) { + uint8_t data = data_buf[start_pos / 8]; + if (bit) { + data &= 0xff >> (start_pos % 8); + } else { + data |= 0xff << (8 - start_pos % 8); + } + if (leading_pos[data] < 8) { + return start_pos / 8 * 8 + leading_pos[data]; + } + start_pos += 7; + } + uint8_t skip = bit ? 0x00 : 0xff; + int byte_pos = start_pos / 8; + int max_byte = (max_pos + 7) / 8; + while (byte_pos < max_byte) { + if (data_buf[byte_pos] != skip) { + break; + } + byte_pos++; + } + if (byte_pos == max_byte) { + return max_pos; + } + int pos = leading_pos[data_buf[byte_pos]] + byte_pos * 8; + if (pos > max_pos) { + pos = max_pos; + } + return pos; +} + +void FaxG4FindB1B2(const uint8_t* ref_buf, + int columns, + int a0, + bool a0color, + int& b1, + int& b2) { + uint8_t first_bit = + (a0 < 0) ? 1 : ((ref_buf[a0 / 8] & (1 << (7 - a0 % 8))) != 0); + b1 = FindBit(ref_buf, columns, a0 + 1, !first_bit); + if (b1 >= columns) { + b1 = b2 = columns; + return; + } + if (first_bit == !a0color) { + b1 = FindBit(ref_buf, columns, b1 + 1, first_bit); + first_bit = !first_bit; + } + if (b1 >= columns) { + b1 = b2 = columns; + return; + } + b2 = FindBit(ref_buf, columns, b1 + 1, first_bit); +} + +void FaxFillBits(uint8_t* dest_buf, int columns, int startpos, int endpos) { + if (startpos < 0) { + startpos = 0; + } + if (endpos < 0) { + endpos = 0; + } + if (endpos >= columns) { + endpos = columns; + } + if (startpos >= endpos) { + return; + } + int first_byte = startpos / 8; + int last_byte = (endpos - 1) / 8; + if (first_byte == last_byte) { + for (int i = startpos % 8; i <= (endpos - 1) % 8; i++) { + dest_buf[first_byte] -= 1 << (7 - i); + } + return; + } + int i; + for (i = startpos % 8; i < 8; i++) { + dest_buf[first_byte] -= 1 << (7 - i); + } + for (i = 0; i <= (endpos - 1) % 8; i++) { + dest_buf[last_byte] -= 1 << (7 - i); + } + if (last_byte > first_byte + 1) { + FXSYS_memset(dest_buf + first_byte + 1, 0, last_byte - first_byte - 1); + } +} + +#define NEXTBIT \ + src_buf[bitpos / 8] & (1 << (7 - bitpos % 8)); \ + bitpos++; +#define ADDBIT(code, bit) \ + code = code << 1; \ + if (bit) \ + code++; +#define GETBIT(bitpos) src_buf[bitpos / 8] & (1 << (7 - bitpos % 8)) + +const uint8_t FaxBlackRunIns[] = { + 0, 2, 0x02, 3, 0, 0x03, + 2, 0, 2, 0x02, 1, 0, + 0x03, 4, 0, 2, 0x02, 6, + 0, 0x03, 5, 0, 1, 0x03, + 7, 0, 2, 0x04, 9, 0, + 0x05, 8, 0, 3, 0x04, 10, + 0, 0x05, 11, 0, 0x07, 12, + 0, 2, 0x04, 13, 0, 0x07, + 14, 0, 1, 0x18, 15, 0, + 5, 0x08, 18, 0, 0x0f, 64, + 0, 0x17, 16, 0, 0x18, 17, + 0, 0x37, 0, 0, 10, 0x08, + 0x00, 0x07, 0x0c, 0x40, 0x07, 0x0d, + 0x80, 0x07, 0x17, 24, 0, 0x18, + 25, 0, 0x28, 23, 0, 0x37, + 22, 0, 0x67, 19, 0, 0x68, + 20, 0, 0x6c, 21, 0, 54, + 0x12, 1984 % 256, 1984 / 256, 0x13, 2048 % 256, 2048 / 256, + 0x14, 2112 % 256, 2112 / 256, 0x15, 2176 % 256, 2176 / 256, + 0x16, 2240 % 256, 2240 / 256, 0x17, 2304 % 256, 2304 / 256, + 0x1c, 2368 % 256, 2368 / 256, 0x1d, 2432 % 256, 2432 / 256, + 0x1e, 2496 % 256, 2496 / 256, 0x1f, 2560 % 256, 2560 / 256, + 0x24, 52, 0, 0x27, 55, 0, + 0x28, 56, 0, 0x2b, 59, 0, + 0x2c, 60, 0, 0x33, 320 % 256, 320 / 256, + 0x34, 384 % 256, 384 / 256, 0x35, 448 % 256, 448 / 256, + 0x37, 53, 0, 0x38, 54, 0, + 0x52, 50, 0, 0x53, 51, 0, + 0x54, 44, 0, 0x55, 45, 0, + 0x56, 46, 0, 0x57, 47, 0, + 0x58, 57, 0, 0x59, 58, 0, + 0x5a, 61, 0, 0x5b, 256 % 256, 256 / 256, + 0x64, 48, 0, 0x65, 49, 0, + 0x66, 62, 0, 0x67, 63, 0, + 0x68, 30, 0, 0x69, 31, 0, + 0x6a, 32, 0, 0x6b, 33, 0, + 0x6c, 40, 0, 0x6d, 41, 0, + 0xc8, 128, 0, 0xc9, 192, 0, + 0xca, 26, 0, 0xcb, 27, 0, + 0xcc, 28, 0, 0xcd, 29, 0, + 0xd2, 34, 0, 0xd3, 35, 0, + 0xd4, 36, 0, 0xd5, 37, 0, + 0xd6, 38, 0, 0xd7, 39, 0, + 0xda, 42, 0, 0xdb, 43, 0, + 20, 0x4a, 640 % 256, 640 / 256, 0x4b, 704 % 256, + 704 / 256, 0x4c, 768 % 256, 768 / 256, 0x4d, 832 % 256, + 832 / 256, 0x52, 1280 % 256, 1280 / 256, 0x53, 1344 % 256, + 1344 / 256, 0x54, 1408 % 256, 1408 / 256, 0x55, 1472 % 256, + 1472 / 256, 0x5a, 1536 % 256, 1536 / 256, 0x5b, 1600 % 256, + 1600 / 256, 0x64, 1664 % 256, 1664 / 256, 0x65, 1728 % 256, + 1728 / 256, 0x6c, 512 % 256, 512 / 256, 0x6d, 576 % 256, + 576 / 256, 0x72, 896 % 256, 896 / 256, 0x73, 960 % 256, + 960 / 256, 0x74, 1024 % 256, 1024 / 256, 0x75, 1088 % 256, + 1088 / 256, 0x76, 1152 % 256, 1152 / 256, 0x77, 1216 % 256, + 1216 / 256, 0xff}; + +const uint8_t FaxWhiteRunIns[] = { + 0, 0, 0, 6, 0x07, 2, + 0, 0x08, 3, 0, 0x0B, 4, + 0, 0x0C, 5, 0, 0x0E, 6, + 0, 0x0F, 7, 0, 6, 0x07, + 10, 0, 0x08, 11, 0, 0x12, + 128, 0, 0x13, 8, 0, 0x14, + 9, 0, 0x1b, 64, 0, 9, + 0x03, 13, 0, 0x07, 1, 0, + 0x08, 12, 0, 0x17, 192, 0, + 0x18, 1664 % 256, 1664 / 256, 0x2a, 16, 0, + 0x2B, 17, 0, 0x34, 14, 0, + 0x35, 15, 0, 12, 0x03, 22, + 0, 0x04, 23, 0, 0x08, 20, + 0, 0x0c, 19, 0, 0x13, 26, + 0, 0x17, 21, 0, 0x18, 28, + 0, 0x24, 27, 0, 0x27, 18, + 0, 0x28, 24, 0, 0x2B, 25, + 0, 0x37, 256 % 256, 256 / 256, 42, 0x02, + 29, 0, 0x03, 30, 0, 0x04, + 45, 0, 0x05, 46, 0, 0x0a, + 47, 0, 0x0b, 48, 0, 0x12, + 33, 0, 0x13, 34, 0, 0x14, + 35, 0, 0x15, 36, 0, 0x16, + 37, 0, 0x17, 38, 0, 0x1a, + 31, 0, 0x1b, 32, 0, 0x24, + 53, 0, 0x25, 54, 0, 0x28, + 39, 0, 0x29, 40, 0, 0x2a, + 41, 0, 0x2b, 42, 0, 0x2c, + 43, 0, 0x2d, 44, 0, 0x32, + 61, 0, 0x33, 62, 0, 0x34, + 63, 0, 0x35, 0, 0, 0x36, + 320 % 256, 320 / 256, 0x37, 384 % 256, 384 / 256, 0x4a, + 59, 0, 0x4b, 60, 0, 0x52, + 49, 0, 0x53, 50, 0, 0x54, + 51, 0, 0x55, 52, 0, 0x58, + 55, 0, 0x59, 56, 0, 0x5a, + 57, 0, 0x5b, 58, 0, 0x64, + 448 % 256, 448 / 256, 0x65, 512 % 256, 512 / 256, 0x67, + 640 % 256, 640 / 256, 0x68, 576 % 256, 576 / 256, 16, + 0x98, 1472 % 256, 1472 / 256, 0x99, 1536 % 256, 1536 / 256, + 0x9a, 1600 % 256, 1600 / 256, 0x9b, 1728 % 256, 1728 / 256, + 0xcc, 704 % 256, 704 / 256, 0xcd, 768 % 256, 768 / 256, + 0xd2, 832 % 256, 832 / 256, 0xd3, 896 % 256, 896 / 256, + 0xd4, 960 % 256, 960 / 256, 0xd5, 1024 % 256, 1024 / 256, + 0xd6, 1088 % 256, 1088 / 256, 0xd7, 1152 % 256, 1152 / 256, + 0xd8, 1216 % 256, 1216 / 256, 0xd9, 1280 % 256, 1280 / 256, + 0xda, 1344 % 256, 1344 / 256, 0xdb, 1408 % 256, 1408 / 256, + 0, 3, 0x08, 1792 % 256, 1792 / 256, 0x0c, + 1856 % 256, 1856 / 256, 0x0d, 1920 % 256, 1920 / 256, 10, + 0x12, 1984 % 256, 1984 / 256, 0x13, 2048 % 256, 2048 / 256, + 0x14, 2112 % 256, 2112 / 256, 0x15, 2176 % 256, 2176 / 256, + 0x16, 2240 % 256, 2240 / 256, 0x17, 2304 % 256, 2304 / 256, + 0x1c, 2368 % 256, 2368 / 256, 0x1d, 2432 % 256, 2432 / 256, + 0x1e, 2496 % 256, 2496 / 256, 0x1f, 2560 % 256, 2560 / 256, + 0xff, +}; + +int FaxGetRun(const uint8_t* ins_array, + const uint8_t* src_buf, + int& bitpos, + int bitsize) { + FX_DWORD code = 0; + int ins_off = 0; + while (1) { + uint8_t ins = ins_array[ins_off++]; + if (ins == 0xff) { + return -1; + } + if (bitpos >= bitsize) { + return -1; + } + code <<= 1; + if (src_buf[bitpos / 8] & (1 << (7 - bitpos % 8))) { + code++; + } + bitpos++; + int next_off = ins_off + ins * 3; + for (; ins_off < next_off; ins_off += 3) { + if (ins_array[ins_off] == code) { + return ins_array[ins_off + 1] + ins_array[ins_off + 2] * 256; + } + } + } +} + +FX_BOOL FaxG4GetRow(const uint8_t* src_buf, + int bitsize, + int& bitpos, + uint8_t* dest_buf, + const uint8_t* ref_buf, + int columns) { + int a0 = -1; + bool a0color = true; + while (1) { + if (bitpos >= bitsize) { + return FALSE; + } + int a1, a2, b1, b2; + FaxG4FindB1B2(ref_buf, columns, a0, a0color, b1, b2); + FX_BOOL bit = NEXTBIT; + int v_delta = 0; + if (bit) { + } else { + if (bitpos >= bitsize) { + return FALSE; + } + FX_BOOL bit1 = NEXTBIT; + if (bitpos >= bitsize) { + return FALSE; + } + FX_BOOL bit2 = NEXTBIT; + if (bit1 && bit2) { + v_delta = 1; + } else if (bit1) { + v_delta = -1; + } else if (bit2) { + int run_len1 = 0; + while (1) { + int run = FaxGetRun(a0color ? FaxWhiteRunIns : FaxBlackRunIns, + src_buf, bitpos, bitsize); + run_len1 += run; + if (run < 64) { + break; + } + } + if (a0 < 0) { + run_len1++; + } + a1 = a0 + run_len1; + if (!a0color) { + FaxFillBits(dest_buf, columns, a0, a1); + } + int run_len2 = 0; + while (1) { + int run = FaxGetRun(a0color ? FaxBlackRunIns : FaxWhiteRunIns, + src_buf, bitpos, bitsize); + run_len2 += run; + if (run < 64) { + break; + } + } + a2 = a1 + run_len2; + if (a0color) { + FaxFillBits(dest_buf, columns, a1, a2); + } + a0 = a2; + if (a0 < columns) { + continue; + } + return TRUE; + } else { + if (bitpos >= bitsize) { + return FALSE; + } + bit = NEXTBIT; + if (bit) { + if (!a0color) { + FaxFillBits(dest_buf, columns, a0, b2); + } + if (b2 >= columns) { + return TRUE; + } + a0 = b2; + continue; + } else { + if (bitpos >= bitsize) { + return FALSE; + } + FX_BOOL bit1 = NEXTBIT; + if (bitpos >= bitsize) { + return FALSE; + } + FX_BOOL bit2 = NEXTBIT; + if (bit1 && bit2) { + v_delta = 2; + } else if (bit1) { + v_delta = -2; + } else if (bit2) { + if (bitpos >= bitsize) { + return FALSE; + } + bit = NEXTBIT; + if (bit) { + v_delta = 3; + } else { + v_delta = -3; + } + } else { + if (bitpos >= bitsize) { + return FALSE; + } + bit = NEXTBIT; + if (bit) { + bitpos += 3; + continue; + } else { + bitpos += 5; + return TRUE; + } + } + } + } + } + a1 = b1 + v_delta; + if (!a0color) { + FaxFillBits(dest_buf, columns, a0, a1); + } + if (a1 >= columns) { + return TRUE; + } + a0 = a1; + a0color = !a0color; + } +} + +FX_BOOL FaxSkipEOL(const uint8_t* src_buf, int bitsize, int& bitpos) { + int startbit = bitpos; + while (bitpos < bitsize) { + int bit = NEXTBIT; + if (bit) { + if (bitpos - startbit <= 11) { + bitpos = startbit; + } + return TRUE; + } + } + return FALSE; +} + +FX_BOOL FaxGet1DLine(const uint8_t* src_buf, + int bitsize, + int& bitpos, + uint8_t* dest_buf, + int columns) { + bool color = true; + int startpos = 0; + while (1) { + if (bitpos >= bitsize) { + return FALSE; + } + int run_len = 0; + while (1) { + int run = FaxGetRun(color ? FaxWhiteRunIns : FaxBlackRunIns, src_buf, + bitpos, bitsize); + if (run < 0) { + while (bitpos < bitsize) { + int bit = NEXTBIT; + if (bit) { + return TRUE; + } + } + return FALSE; + } + run_len += run; + if (run < 64) { + break; + } + } + if (!color) { + FaxFillBits(dest_buf, columns, startpos, startpos + run_len); + } + startpos += run_len; + if (startpos >= columns) { + break; + } + color = !color; + } + return TRUE; +} + +const uint8_t BlackRunTerminator[128] = { + 0x37, 10, 0x02, 3, 0x03, 2, 0x02, 2, 0x03, 3, 0x03, 4, 0x02, 4, + 0x03, 5, 0x05, 6, 0x04, 6, 0x04, 7, 0x05, 7, 0x07, 7, 0x04, 8, + 0x07, 8, 0x18, 9, 0x17, 10, 0x18, 10, 0x08, 10, 0x67, 11, 0x68, 11, + 0x6c, 11, 0x37, 11, 0x28, 11, 0x17, 11, 0x18, 11, 0xca, 12, 0xcb, 12, + 0xcc, 12, 0xcd, 12, 0x68, 12, 0x69, 12, 0x6a, 12, 0x6b, 12, 0xd2, 12, + 0xd3, 12, 0xd4, 12, 0xd5, 12, 0xd6, 12, 0xd7, 12, 0x6c, 12, 0x6d, 12, + 0xda, 12, 0xdb, 12, 0x54, 12, 0x55, 12, 0x56, 12, 0x57, 12, 0x64, 12, + 0x65, 12, 0x52, 12, 0x53, 12, 0x24, 12, 0x37, 12, 0x38, 12, 0x27, 12, + 0x28, 12, 0x58, 12, 0x59, 12, 0x2b, 12, 0x2c, 12, 0x5a, 12, 0x66, 12, + 0x67, 12, +}; + +const uint8_t BlackRunMarkup[80] = { + 0x0f, 10, 0xc8, 12, 0xc9, 12, 0x5b, 12, 0x33, 12, 0x34, 12, 0x35, 12, + 0x6c, 13, 0x6d, 13, 0x4a, 13, 0x4b, 13, 0x4c, 13, 0x4d, 13, 0x72, 13, + 0x73, 13, 0x74, 13, 0x75, 13, 0x76, 13, 0x77, 13, 0x52, 13, 0x53, 13, + 0x54, 13, 0x55, 13, 0x5a, 13, 0x5b, 13, 0x64, 13, 0x65, 13, 0x08, 11, + 0x0c, 11, 0x0d, 11, 0x12, 12, 0x13, 12, 0x14, 12, 0x15, 12, 0x16, 12, + 0x17, 12, 0x1c, 12, 0x1d, 12, 0x1e, 12, 0x1f, 12, +}; + +const uint8_t WhiteRunTerminator[128] = { + 0x35, 8, 0x07, 6, 0x07, 4, 0x08, 4, 0x0B, 4, 0x0C, 4, 0x0E, 4, 0x0F, 4, + 0x13, 5, 0x14, 5, 0x07, 5, 0x08, 5, 0x08, 6, 0x03, 6, 0x34, 6, 0x35, 6, + 0x2a, 6, 0x2B, 6, 0x27, 7, 0x0c, 7, 0x08, 7, 0x17, 7, 0x03, 7, 0x04, 7, + 0x28, 7, 0x2B, 7, 0x13, 7, 0x24, 7, 0x18, 7, 0x02, 8, 0x03, 8, 0x1a, 8, + 0x1b, 8, 0x12, 8, 0x13, 8, 0x14, 8, 0x15, 8, 0x16, 8, 0x17, 8, 0x28, 8, + 0x29, 8, 0x2a, 8, 0x2b, 8, 0x2c, 8, 0x2d, 8, 0x04, 8, 0x05, 8, 0x0a, 8, + 0x0b, 8, 0x52, 8, 0x53, 8, 0x54, 8, 0x55, 8, 0x24, 8, 0x25, 8, 0x58, 8, + 0x59, 8, 0x5a, 8, 0x5b, 8, 0x4a, 8, 0x4b, 8, 0x32, 8, 0x33, 8, 0x34, 8, +}; + +const uint8_t WhiteRunMarkup[80] = { + 0x1b, 5, 0x12, 5, 0x17, 6, 0x37, 7, 0x36, 8, 0x37, 8, 0x64, 8, + 0x65, 8, 0x68, 8, 0x67, 8, 0xcc, 9, 0xcd, 9, 0xd2, 9, 0xd3, 9, + 0xd4, 9, 0xd5, 9, 0xd6, 9, 0xd7, 9, 0xd8, 9, 0xd9, 9, 0xda, 9, + 0xdb, 9, 0x98, 9, 0x99, 9, 0x9a, 9, 0x18, 6, 0x9b, 9, 0x08, 11, + 0x0c, 11, 0x0d, 11, 0x12, 12, 0x13, 12, 0x14, 12, 0x15, 12, 0x16, 12, + 0x17, 12, 0x1c, 12, 0x1d, 12, 0x1e, 12, 0x1f, 12, +}; + +void AddBitStream(uint8_t* dest_buf, int& dest_bitpos, int data, int bitlen) { + for (int i = bitlen - 1; i >= 0; i--) { + if (data & (1 << i)) { + dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); + } + dest_bitpos++; + } +} + +void FaxEncodeRun(uint8_t* dest_buf, int& dest_bitpos, int run, bool bWhite) { + while (run >= 2560) { + AddBitStream(dest_buf, dest_bitpos, 0x1f, 12); + run -= 2560; + } + if (run >= 64) { + int markup = run - run % 64; + const uint8_t* p = bWhite ? WhiteRunMarkup : BlackRunMarkup; + p += (markup / 64 - 1) * 2; + AddBitStream(dest_buf, dest_bitpos, *p, p[1]); + } + run %= 64; + const uint8_t* p = bWhite ? WhiteRunTerminator : BlackRunTerminator; + p += run * 2; + AddBitStream(dest_buf, dest_bitpos, *p, p[1]); +} + +void FaxEncode2DLine(uint8_t* dest_buf, + int& dest_bitpos, + const uint8_t* src_buf, + const uint8_t* ref_buf, + int cols) { + int a0 = -1; + bool a0color = true; + while (1) { + int a1 = FindBit(src_buf, cols, a0 + 1, !a0color); + int b1, b2; + FaxG4FindB1B2(ref_buf, cols, a0, a0color, b1, b2); + if (b2 < a1) { + dest_bitpos += 3; + dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); + dest_bitpos++; + a0 = b2; + } else if (a1 - b1 <= 3 && b1 - a1 <= 3) { + int delta = a1 - b1; + switch (delta) { + case 0: + dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); + break; + case 1: + case 2: + case 3: + dest_bitpos += delta == 1 ? 1 : delta + 2; + dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); + dest_bitpos++; + dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); + break; + case -1: + case -2: + case -3: + dest_bitpos += delta == -1 ? 1 : -delta + 2; + dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); + dest_bitpos++; + break; + } + dest_bitpos++; + a0 = a1; + a0color = !a0color; + } else { + int a2 = FindBit(src_buf, cols, a1 + 1, a0color); + dest_bitpos++; + dest_bitpos++; + dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); + dest_bitpos++; + if (a0 < 0) { + a0 = 0; + } + FaxEncodeRun(dest_buf, dest_bitpos, a1 - a0, a0color); + FaxEncodeRun(dest_buf, dest_bitpos, a2 - a1, !a0color); + a0 = a2; + } + if (a0 >= cols) { + return; + } + } +} + +} // namespace + +class CCodec_FaxDecoder : public CCodec_ScanlineDecoder { + public: + CCodec_FaxDecoder(); + ~CCodec_FaxDecoder() override; + + FX_BOOL Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int K, + FX_BOOL EndOfLine, + FX_BOOL EncodedByteAlign, + FX_BOOL BlackIs1, + int Columns, + int Rows); + + // CCodec_ScanlineDecoder + void v_DownScale(int dest_width, int dest_height) override {} + FX_BOOL v_Rewind() override; + uint8_t* v_GetNextLine() override; + FX_DWORD GetSrcOffset() override; + + int m_Encoding, m_bEndOfLine, m_bByteAlign, m_bBlack; + int bitpos; + const uint8_t* m_pSrcBuf; + FX_DWORD m_SrcSize; + uint8_t* m_pScanlineBuf; + uint8_t* m_pRefBuf; +}; + +CCodec_FaxDecoder::CCodec_FaxDecoder() { + m_pScanlineBuf = NULL; + m_pRefBuf = NULL; +} +CCodec_FaxDecoder::~CCodec_FaxDecoder() { + FX_Free(m_pScanlineBuf); + FX_Free(m_pRefBuf); +} +FX_BOOL CCodec_FaxDecoder::Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int K, + FX_BOOL EndOfLine, + FX_BOOL EncodedByteAlign, + FX_BOOL BlackIs1, + int Columns, + int Rows) { + m_Encoding = K; + m_bEndOfLine = EndOfLine; + m_bByteAlign = EncodedByteAlign; + m_bBlack = BlackIs1; + m_OrigWidth = Columns; + m_OrigHeight = Rows; + if (m_OrigWidth == 0) { + m_OrigWidth = width; + } + if (m_OrigHeight == 0) { + m_OrigHeight = height; + } + // Should not overflow. Checked by FPDFAPI_CreateFaxDecoder. + m_Pitch = (static_cast(m_OrigWidth) + 31) / 32 * 4; + m_OutputWidth = m_OrigWidth; + m_OutputHeight = m_OrigHeight; + m_pScanlineBuf = FX_Alloc(uint8_t, m_Pitch); + m_pRefBuf = FX_Alloc(uint8_t, m_Pitch); + m_pSrcBuf = src_buf; + m_SrcSize = src_size; + m_nComps = 1; + m_bpc = 1; + m_bColorTransformed = FALSE; + return TRUE; +} +FX_BOOL CCodec_FaxDecoder::v_Rewind() { + FXSYS_memset(m_pRefBuf, 0xff, m_Pitch); + bitpos = 0; + return TRUE; +} +uint8_t* CCodec_FaxDecoder::v_GetNextLine() { + int bitsize = m_SrcSize * 8; + FaxSkipEOL(m_pSrcBuf, bitsize, bitpos); + if (bitpos >= bitsize) { + return NULL; + } + FXSYS_memset(m_pScanlineBuf, 0xff, m_Pitch); + if (m_Encoding < 0) { + FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, + m_OrigWidth); + FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch); + } else if (m_Encoding == 0) { + FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidth); + } else { + FX_BOOL bNext1D = m_pSrcBuf[bitpos / 8] & (1 << (7 - bitpos % 8)); + bitpos++; + if (bNext1D) { + FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidth); + } else { + FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, + m_OrigWidth); + } + FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch); + } + if (m_bEndOfLine) { + FaxSkipEOL(m_pSrcBuf, bitsize, bitpos); + } + if (m_bByteAlign && bitpos < bitsize) { + int bitpos0 = bitpos; + int bitpos1 = (bitpos + 7) / 8 * 8; + while (m_bByteAlign && bitpos0 < bitpos1) { + int bit = m_pSrcBuf[bitpos0 / 8] & (1 << (7 - bitpos0 % 8)); + if (bit != 0) { + m_bByteAlign = FALSE; + } else { + bitpos0++; + } + } + if (m_bByteAlign) { + bitpos = bitpos1; + } + } + if (m_bBlack) { + for (FX_DWORD i = 0; i < m_Pitch; i++) { + m_pScanlineBuf[i] = ~m_pScanlineBuf[i]; + } + } + return m_pScanlineBuf; +} +FX_DWORD CCodec_FaxDecoder::GetSrcOffset() { + FX_DWORD ret = (bitpos + 7) / 8; + if (ret > m_SrcSize) { + ret = m_SrcSize; + } + return ret; +} + +void FaxG4Decode(const uint8_t* src_buf, + FX_DWORD src_size, + int* pbitpos, + uint8_t* dest_buf, + int width, + int height, + int pitch) { + if (pitch == 0) { + pitch = (width + 7) / 8; + } + uint8_t* ref_buf = FX_Alloc(uint8_t, pitch); + FXSYS_memset(ref_buf, 0xff, pitch); + int bitpos = *pbitpos; + for (int iRow = 0; iRow < height; iRow++) { + uint8_t* line_buf = dest_buf + iRow * pitch; + FXSYS_memset(line_buf, 0xff, pitch); + FaxG4GetRow(src_buf, src_size << 3, bitpos, line_buf, ref_buf, width); + FXSYS_memcpy(ref_buf, line_buf, pitch); + } + FX_Free(ref_buf); + *pbitpos = bitpos; +} + +class CCodec_FaxEncoder { + public: + CCodec_FaxEncoder(const uint8_t* src_buf, int width, int height, int pitch); + ~CCodec_FaxEncoder(); + void Encode(uint8_t*& dest_buf, FX_DWORD& dest_size); + void Encode2DLine(const uint8_t* scan_line); + CFX_BinaryBuf m_DestBuf; + uint8_t* m_pRefLine; + uint8_t* m_pLineBuf; + int m_Cols, m_Rows, m_Pitch; + const uint8_t* m_pSrcBuf; +}; +CCodec_FaxEncoder::CCodec_FaxEncoder(const uint8_t* src_buf, + int width, + int height, + int pitch) { + m_pSrcBuf = src_buf; + m_Cols = width; + m_Rows = height; + m_Pitch = pitch; + m_pRefLine = FX_Alloc(uint8_t, m_Pitch); + FXSYS_memset(m_pRefLine, 0xff, m_Pitch); + m_pLineBuf = FX_Alloc2D(uint8_t, m_Pitch, 8); + m_DestBuf.EstimateSize(0, 10240); +} +CCodec_FaxEncoder::~CCodec_FaxEncoder() { + FX_Free(m_pRefLine); + FX_Free(m_pLineBuf); +} +void CCodec_FaxEncoder::Encode(uint8_t*& dest_buf, FX_DWORD& dest_size) { + int dest_bitpos = 0; + uint8_t last_byte = 0; + for (int i = 0; i < m_Rows; i++) { + const uint8_t* scan_line = m_pSrcBuf + i * m_Pitch; + FXSYS_memset(m_pLineBuf, 0, m_Pitch * 8); + m_pLineBuf[0] = last_byte; + FaxEncode2DLine(m_pLineBuf, dest_bitpos, scan_line, m_pRefLine, m_Cols); + m_DestBuf.AppendBlock(m_pLineBuf, dest_bitpos / 8); + last_byte = m_pLineBuf[dest_bitpos / 8]; + dest_bitpos %= 8; + FXSYS_memcpy(m_pRefLine, scan_line, m_Pitch); + } + if (dest_bitpos) { + m_DestBuf.AppendByte(last_byte); + } + dest_size = m_DestBuf.GetSize(); + dest_buf = m_DestBuf.DetachBuffer(); +} +FX_BOOL CCodec_FaxModule::Encode(const uint8_t* src_buf, + int width, + int height, + int pitch, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + CCodec_FaxEncoder encoder(src_buf, width, height, pitch); + encoder.Encode(dest_buf, dest_size); + return TRUE; +} +ICodec_ScanlineDecoder* CCodec_FaxModule::CreateDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int K, + FX_BOOL EndOfLine, + FX_BOOL EncodedByteAlign, + FX_BOOL BlackIs1, + int Columns, + int Rows) { + CCodec_FaxDecoder* pDecoder = new CCodec_FaxDecoder; + pDecoder->Create(src_buf, src_size, width, height, K, EndOfLine, + EncodedByteAlign, BlackIs1, Columns, Rows); + return pDecoder; +} diff --git a/core/fxcodec/codec/fx_codec_flate.cpp b/core/fxcodec/codec/fx_codec_flate.cpp new file mode 100644 index 0000000000..49a4f34166 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_flate.cpp @@ -0,0 +1,1007 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/codec/codec_int.h" + +#include +#include + +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcodec/fx_codec_flate.h" +#include "third_party/zlib_v128/zlib.h" + +extern "C" { +static void* my_alloc_func(void* opaque, + unsigned int items, + unsigned int size) { + return FX_Alloc2D(uint8_t, items, size); +} +static void my_free_func(void* opaque, void* address) { + FX_Free(address); +} +static int FPDFAPI_FlateGetTotalOut(void* context) { + return ((z_stream*)context)->total_out; +} +static int FPDFAPI_FlateGetTotalIn(void* context) { + return ((z_stream*)context)->total_in; +} +static void FPDFAPI_FlateCompress(unsigned char* dest_buf, + unsigned long* dest_size, + const unsigned char* src_buf, + unsigned long src_size) { + compress(dest_buf, dest_size, src_buf, src_size); +} +void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int), + void (*free_func)(void*, void*)) { + z_stream* p = (z_stream*)alloc_func(0, 1, sizeof(z_stream)); + if (!p) { + return NULL; + } + FXSYS_memset(p, 0, sizeof(z_stream)); + p->zalloc = alloc_func; + p->zfree = free_func; + inflateInit(p); + return p; +} +void FPDFAPI_FlateInput(void* context, + const unsigned char* src_buf, + unsigned int src_size) { + ((z_stream*)context)->next_in = (unsigned char*)src_buf; + ((z_stream*)context)->avail_in = src_size; +} +int FPDFAPI_FlateOutput(void* context, + unsigned char* dest_buf, + unsigned int dest_size) { + ((z_stream*)context)->next_out = dest_buf; + ((z_stream*)context)->avail_out = dest_size; + unsigned int pre_pos = (unsigned int)FPDFAPI_FlateGetTotalOut(context); + int ret = inflate((z_stream*)context, Z_SYNC_FLUSH); + unsigned int post_pos = (unsigned int)FPDFAPI_FlateGetTotalOut(context); + unsigned int written = post_pos - pre_pos; + if (written < dest_size) { + FXSYS_memset(dest_buf + written, '\0', dest_size - written); + } + return ret; +} +int FPDFAPI_FlateGetAvailIn(void* context) { + return ((z_stream*)context)->avail_in; +} +int FPDFAPI_FlateGetAvailOut(void* context) { + return ((z_stream*)context)->avail_out; +} +void FPDFAPI_FlateEnd(void* context) { + inflateEnd((z_stream*)context); + ((z_stream*)context)->zfree(0, context); +} +} // extern "C" + +namespace { + +class CLZWDecoder { + public: + int Decode(uint8_t* output, + FX_DWORD& outlen, + const uint8_t* input, + FX_DWORD& size, + FX_BOOL bEarlyChange); + + private: + void AddCode(FX_DWORD prefix_code, uint8_t append_char); + void DecodeString(FX_DWORD code); + + FX_DWORD m_InPos; + FX_DWORD m_OutPos; + uint8_t* m_pOutput; + const uint8_t* m_pInput; + FX_BOOL m_Early; + FX_DWORD m_CodeArray[5021]; + FX_DWORD m_nCodes; + uint8_t m_DecodeStack[4000]; + FX_DWORD m_StackLen; + int m_CodeLen; +}; +void CLZWDecoder::AddCode(FX_DWORD prefix_code, uint8_t append_char) { + if (m_nCodes + m_Early == 4094) { + return; + } + m_CodeArray[m_nCodes++] = (prefix_code << 16) | append_char; + if (m_nCodes + m_Early == 512 - 258) { + m_CodeLen = 10; + } else if (m_nCodes + m_Early == 1024 - 258) { + m_CodeLen = 11; + } else if (m_nCodes + m_Early == 2048 - 258) { + m_CodeLen = 12; + } +} +void CLZWDecoder::DecodeString(FX_DWORD code) { + while (1) { + int index = code - 258; + if (index < 0 || index >= (int)m_nCodes) { + break; + } + FX_DWORD data = m_CodeArray[index]; + if (m_StackLen >= sizeof(m_DecodeStack)) { + return; + } + m_DecodeStack[m_StackLen++] = (uint8_t)data; + code = data >> 16; + } + if (m_StackLen >= sizeof(m_DecodeStack)) { + return; + } + m_DecodeStack[m_StackLen++] = (uint8_t)code; +} +int CLZWDecoder::Decode(uint8_t* dest_buf, + FX_DWORD& dest_size, + const uint8_t* src_buf, + FX_DWORD& src_size, + FX_BOOL bEarlyChange) { + m_CodeLen = 9; + m_InPos = 0; + m_OutPos = 0; + m_pInput = src_buf; + m_pOutput = dest_buf; + m_Early = bEarlyChange ? 1 : 0; + m_nCodes = 0; + FX_DWORD old_code = (FX_DWORD)-1; + uint8_t last_char; + while (1) { + if (m_InPos + m_CodeLen > src_size * 8) { + break; + } + int byte_pos = m_InPos / 8; + int bit_pos = m_InPos % 8, bit_left = m_CodeLen; + FX_DWORD code = 0; + if (bit_pos) { + bit_left -= 8 - bit_pos; + code = (m_pInput[byte_pos++] & ((1 << (8 - bit_pos)) - 1)) << bit_left; + } + if (bit_left < 8) { + code |= m_pInput[byte_pos] >> (8 - bit_left); + } else { + bit_left -= 8; + code |= m_pInput[byte_pos++] << bit_left; + if (bit_left) { + code |= m_pInput[byte_pos] >> (8 - bit_left); + } + } + m_InPos += m_CodeLen; + if (code < 256) { + if (m_OutPos == dest_size) { + return -5; + } + if (m_pOutput) { + m_pOutput[m_OutPos] = (uint8_t)code; + } + m_OutPos++; + last_char = (uint8_t)code; + if (old_code != (FX_DWORD)-1) { + AddCode(old_code, last_char); + } + old_code = code; + } else if (code == 256) { + m_CodeLen = 9; + m_nCodes = 0; + old_code = (FX_DWORD)-1; + } else if (code == 257) { + break; + } else { + if (old_code == (FX_DWORD)-1) { + return 2; + } + m_StackLen = 0; + if (code >= m_nCodes + 258) { + if (m_StackLen < sizeof(m_DecodeStack)) { + m_DecodeStack[m_StackLen++] = last_char; + } + DecodeString(old_code); + } else { + DecodeString(code); + } + if (m_OutPos + m_StackLen > dest_size) { + return -5; + } + if (m_pOutput) { + for (FX_DWORD i = 0; i < m_StackLen; i++) { + m_pOutput[m_OutPos + i] = m_DecodeStack[m_StackLen - i - 1]; + } + } + m_OutPos += m_StackLen; + last_char = m_DecodeStack[m_StackLen - 1]; + if (old_code < 256) { + AddCode(old_code, last_char); + } else if (old_code - 258 >= m_nCodes) { + dest_size = m_OutPos; + src_size = (m_InPos + 7) / 8; + return 0; + } else { + AddCode(old_code, last_char); + } + old_code = code; + } + } + dest_size = m_OutPos; + src_size = (m_InPos + 7) / 8; + return 0; +} + +uint8_t PaethPredictor(int a, int b, int c) { + int p = a + b - c; + int pa = FXSYS_abs(p - a); + int pb = FXSYS_abs(p - b); + int pc = FXSYS_abs(p - c); + if (pa <= pb && pa <= pc) { + return (uint8_t)a; + } + if (pb <= pc) { + return (uint8_t)b; + } + return (uint8_t)c; +} + +FX_BOOL PNG_PredictorEncode(uint8_t*& data_buf, + FX_DWORD& data_size, + int predictor, + int Colors, + int BitsPerComponent, + int Columns) { + const int BytesPerPixel = (Colors * BitsPerComponent + 7) / 8; + const int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; + if (row_size <= 0) + return FALSE; + const int row_count = (data_size + row_size - 1) / row_size; + const int last_row_size = data_size % row_size; + uint8_t* dest_buf = FX_Alloc2D(uint8_t, row_size + 1, row_count); + int byte_cnt = 0; + uint8_t* pSrcData = data_buf; + uint8_t* pDestData = dest_buf; + for (int row = 0; row < row_count; row++) { + if (predictor == 10) { + pDestData[0] = 0; + int move_size = row_size; + if (move_size * (row + 1) > (int)data_size) { + move_size = data_size - (move_size * row); + } + FXSYS_memmove(pDestData + 1, pSrcData, move_size); + pDestData += (move_size + 1); + pSrcData += move_size; + byte_cnt += move_size; + continue; + } + for (int byte = 0; byte < row_size && byte_cnt < (int)data_size; byte++) { + switch (predictor) { + case 11: { + pDestData[0] = 1; + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pSrcData[byte - BytesPerPixel]; + } + pDestData[byte + 1] = pSrcData[byte] - left; + } break; + case 12: { + pDestData[0] = 2; + uint8_t up = 0; + if (row) { + up = pSrcData[byte - row_size]; + } + pDestData[byte + 1] = pSrcData[byte] - up; + } break; + case 13: { + pDestData[0] = 3; + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pSrcData[byte - BytesPerPixel]; + } + uint8_t up = 0; + if (row) { + up = pSrcData[byte - row_size]; + } + pDestData[byte + 1] = pSrcData[byte] - (left + up) / 2; + } break; + case 14: { + pDestData[0] = 4; + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pSrcData[byte - BytesPerPixel]; + } + uint8_t up = 0; + if (row) { + up = pSrcData[byte - row_size]; + } + uint8_t upper_left = 0; + if (byte >= BytesPerPixel && row) { + upper_left = pSrcData[byte - row_size - BytesPerPixel]; + } + pDestData[byte + 1] = + pSrcData[byte] - PaethPredictor(left, up, upper_left); + } break; + default: { pDestData[byte + 1] = pSrcData[byte]; } break; + } + byte_cnt++; + } + pDestData += (row_size + 1); + pSrcData += row_size; + } + FX_Free(data_buf); + data_buf = dest_buf; + data_size = (row_size + 1) * row_count - + (last_row_size > 0 ? (row_size - last_row_size) : 0); + return TRUE; +} + +void PNG_PredictLine(uint8_t* pDestData, + const uint8_t* pSrcData, + const uint8_t* pLastLine, + int bpc, + int nColors, + int nPixels) { + int row_size = (nPixels * bpc * nColors + 7) / 8; + int BytesPerPixel = (bpc * nColors + 7) / 8; + uint8_t tag = pSrcData[0]; + if (tag == 0) { + FXSYS_memmove(pDestData, pSrcData + 1, row_size); + return; + } + for (int byte = 0; byte < row_size; byte++) { + uint8_t raw_byte = pSrcData[byte + 1]; + switch (tag) { + case 1: { + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pDestData[byte - BytesPerPixel]; + } + pDestData[byte] = raw_byte + left; + break; + } + case 2: { + uint8_t up = 0; + if (pLastLine) { + up = pLastLine[byte]; + } + pDestData[byte] = raw_byte + up; + break; + } + case 3: { + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pDestData[byte - BytesPerPixel]; + } + uint8_t up = 0; + if (pLastLine) { + up = pLastLine[byte]; + } + pDestData[byte] = raw_byte + (up + left) / 2; + break; + } + case 4: { + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pDestData[byte - BytesPerPixel]; + } + uint8_t up = 0; + if (pLastLine) { + up = pLastLine[byte]; + } + uint8_t upper_left = 0; + if (byte >= BytesPerPixel && pLastLine) { + upper_left = pLastLine[byte - BytesPerPixel]; + } + pDestData[byte] = raw_byte + PaethPredictor(left, up, upper_left); + break; + } + default: + pDestData[byte] = raw_byte; + break; + } + } +} + +FX_BOOL PNG_Predictor(uint8_t*& data_buf, + FX_DWORD& data_size, + int Colors, + int BitsPerComponent, + int Columns) { + const int BytesPerPixel = (Colors * BitsPerComponent + 7) / 8; + const int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; + if (row_size <= 0) + return FALSE; + const int row_count = (data_size + row_size) / (row_size + 1); + if (row_count <= 0) + return FALSE; + const int last_row_size = data_size % (row_size + 1); + uint8_t* dest_buf = FX_Alloc2D(uint8_t, row_size, row_count); + int byte_cnt = 0; + uint8_t* pSrcData = data_buf; + uint8_t* pDestData = dest_buf; + for (int row = 0; row < row_count; row++) { + uint8_t tag = pSrcData[0]; + byte_cnt++; + if (tag == 0) { + int move_size = row_size; + if ((row + 1) * (move_size + 1) > (int)data_size) { + move_size = last_row_size - 1; + } + FXSYS_memmove(pDestData, pSrcData + 1, move_size); + pSrcData += move_size + 1; + pDestData += move_size; + byte_cnt += move_size; + continue; + } + for (int byte = 0; byte < row_size && byte_cnt < (int)data_size; byte++) { + uint8_t raw_byte = pSrcData[byte + 1]; + switch (tag) { + case 1: { + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pDestData[byte - BytesPerPixel]; + } + pDestData[byte] = raw_byte + left; + break; + } + case 2: { + uint8_t up = 0; + if (row) { + up = pDestData[byte - row_size]; + } + pDestData[byte] = raw_byte + up; + break; + } + case 3: { + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pDestData[byte - BytesPerPixel]; + } + uint8_t up = 0; + if (row) { + up = pDestData[byte - row_size]; + } + pDestData[byte] = raw_byte + (up + left) / 2; + break; + } + case 4: { + uint8_t left = 0; + if (byte >= BytesPerPixel) { + left = pDestData[byte - BytesPerPixel]; + } + uint8_t up = 0; + if (row) { + up = pDestData[byte - row_size]; + } + uint8_t upper_left = 0; + if (byte >= BytesPerPixel && row) { + upper_left = pDestData[byte - row_size - BytesPerPixel]; + } + pDestData[byte] = raw_byte + PaethPredictor(left, up, upper_left); + break; + } + default: + pDestData[byte] = raw_byte; + break; + } + byte_cnt++; + } + pSrcData += row_size + 1; + pDestData += row_size; + } + FX_Free(data_buf); + data_buf = dest_buf; + data_size = row_size * row_count - + (last_row_size > 0 ? (row_size + 1 - last_row_size) : 0); + return TRUE; +} + +void TIFF_PredictorEncodeLine(uint8_t* dest_buf, + int row_size, + int BitsPerComponent, + int Colors, + int Columns) { + int BytesPerPixel = BitsPerComponent * Colors / 8; + if (BitsPerComponent < 8) { + uint8_t mask = 0x01; + if (BitsPerComponent == 2) { + mask = 0x03; + } else if (BitsPerComponent == 4) { + mask = 0x0F; + } + int row_bits = Colors * BitsPerComponent * Columns; + for (int i = row_bits - BitsPerComponent; i >= BitsPerComponent; + i -= BitsPerComponent) { + int col = i % 8; + int index = i / 8; + int col_pre = + (col == 0) ? (8 - BitsPerComponent) : (col - BitsPerComponent); + int index_pre = (col == 0) ? (index - 1) : index; + uint8_t cur = (dest_buf[index] >> (8 - col - BitsPerComponent)) & mask; + uint8_t left = + (dest_buf[index_pre] >> (8 - col_pre - BitsPerComponent)) & mask; + cur -= left; + cur &= mask; + cur <<= (8 - col - BitsPerComponent); + dest_buf[index] &= ~(mask << ((8 - col - BitsPerComponent))); + dest_buf[index] |= cur; + } + } else if (BitsPerComponent == 8) { + for (int i = row_size - 1; i >= BytesPerPixel; i--) { + dest_buf[i] -= dest_buf[i - BytesPerPixel]; + } + } else { + for (int i = row_size - BytesPerPixel; i >= BytesPerPixel; + i -= BytesPerPixel) { + FX_WORD pixel = (dest_buf[i] << 8) | dest_buf[i + 1]; + pixel -= + (dest_buf[i - BytesPerPixel] << 8) | dest_buf[i - BytesPerPixel + 1]; + dest_buf[i] = pixel >> 8; + dest_buf[i + 1] = (uint8_t)pixel; + } + } +} + +FX_BOOL TIFF_PredictorEncode(uint8_t*& data_buf, + FX_DWORD& data_size, + int Colors, + int BitsPerComponent, + int Columns) { + int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; + if (row_size == 0) + return FALSE; + const int row_count = (data_size + row_size - 1) / row_size; + const int last_row_size = data_size % row_size; + for (int row = 0; row < row_count; row++) { + uint8_t* scan_line = data_buf + row * row_size; + if ((row + 1) * row_size > (int)data_size) { + row_size = last_row_size; + } + TIFF_PredictorEncodeLine(scan_line, row_size, BitsPerComponent, Colors, + Columns); + } + return TRUE; +} + +void TIFF_PredictLine(uint8_t* dest_buf, + FX_DWORD row_size, + int BitsPerComponent, + int Colors, + int Columns) { + if (BitsPerComponent == 1) { + int row_bits = std::min(BitsPerComponent * Colors * Columns, + pdfium::base::checked_cast(row_size * 8)); + int index_pre = 0; + int col_pre = 0; + for (int i = 1; i < row_bits; i++) { + int col = i % 8; + int index = i / 8; + if (((dest_buf[index] >> (7 - col)) & 1) ^ + ((dest_buf[index_pre] >> (7 - col_pre)) & 1)) { + dest_buf[index] |= 1 << (7 - col); + } else { + dest_buf[index] &= ~(1 << (7 - col)); + } + index_pre = index; + col_pre = col; + } + return; + } + int BytesPerPixel = BitsPerComponent * Colors / 8; + if (BitsPerComponent == 16) { + for (FX_DWORD i = BytesPerPixel; i < row_size; i += 2) { + FX_WORD pixel = + (dest_buf[i - BytesPerPixel] << 8) | dest_buf[i - BytesPerPixel + 1]; + pixel += (dest_buf[i] << 8) | dest_buf[i + 1]; + dest_buf[i] = pixel >> 8; + dest_buf[i + 1] = (uint8_t)pixel; + } + } else { + for (FX_DWORD i = BytesPerPixel; i < row_size; i++) { + dest_buf[i] += dest_buf[i - BytesPerPixel]; + } + } +} + +FX_BOOL TIFF_Predictor(uint8_t*& data_buf, + FX_DWORD& data_size, + int Colors, + int BitsPerComponent, + int Columns) { + int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; + if (row_size == 0) + return FALSE; + const int row_count = (data_size + row_size - 1) / row_size; + const int last_row_size = data_size % row_size; + for (int row = 0; row < row_count; row++) { + uint8_t* scan_line = data_buf + row * row_size; + if ((row + 1) * row_size > (int)data_size) { + row_size = last_row_size; + } + TIFF_PredictLine(scan_line, row_size, BitsPerComponent, Colors, Columns); + } + return TRUE; +} + +void FlateUncompress(const uint8_t* src_buf, + FX_DWORD src_size, + FX_DWORD orig_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size, + FX_DWORD& offset) { + FX_DWORD guess_size = orig_size ? orig_size : src_size * 2; + const FX_DWORD kStepSize = 10240; + FX_DWORD alloc_step = orig_size ? kStepSize : std::min(src_size, kStepSize); + static const FX_DWORD kMaxInitialAllocSize = 10000000; + if (guess_size > kMaxInitialAllocSize) { + guess_size = kMaxInitialAllocSize; + alloc_step = kMaxInitialAllocSize; + } + FX_DWORD buf_size = guess_size; + FX_DWORD last_buf_size = buf_size; + + dest_buf = nullptr; + dest_size = 0; + void* context = FPDFAPI_FlateInit(my_alloc_func, my_free_func); + if (!context) + return; + + std::unique_ptr guess_buf( + FX_Alloc(uint8_t, guess_size + 1)); + guess_buf.get()[guess_size] = '\0'; + + FPDFAPI_FlateInput(context, src_buf, src_size); + + if (src_size < kStepSize) { + // This is the old implementation. + uint8_t* cur_buf = guess_buf.get(); + while (1) { + int32_t ret = FPDFAPI_FlateOutput(context, cur_buf, buf_size); + if (ret != Z_OK) + break; + int32_t avail_buf_size = FPDFAPI_FlateGetAvailOut(context); + if (avail_buf_size != 0) + break; + + FX_DWORD old_size = guess_size; + guess_size += alloc_step; + if (guess_size < old_size || guess_size + 1 < guess_size) { + FPDFAPI_FlateEnd(context); + return; + } + + { + uint8_t* new_buf = + FX_Realloc(uint8_t, guess_buf.release(), guess_size + 1); + guess_buf.reset(new_buf); + } + guess_buf.get()[guess_size] = '\0'; + cur_buf = guess_buf.get() + old_size; + buf_size = guess_size - old_size; + } + dest_size = FPDFAPI_FlateGetTotalOut(context); + offset = FPDFAPI_FlateGetTotalIn(context); + if (guess_size / 2 > dest_size) { + { + uint8_t* new_buf = + FX_Realloc(uint8_t, guess_buf.release(), dest_size + 1); + guess_buf.reset(new_buf); + } + guess_size = dest_size; + guess_buf.get()[guess_size] = '\0'; + } + dest_buf = guess_buf.release(); + } else { + CFX_ArrayTemplate result_tmp_bufs; + uint8_t* cur_buf = guess_buf.release(); + while (1) { + int32_t ret = FPDFAPI_FlateOutput(context, cur_buf, buf_size); + int32_t avail_buf_size = FPDFAPI_FlateGetAvailOut(context); + if (ret != Z_OK) { + last_buf_size = buf_size - avail_buf_size; + result_tmp_bufs.Add(cur_buf); + break; + } + if (avail_buf_size != 0) { + last_buf_size = buf_size - avail_buf_size; + result_tmp_bufs.Add(cur_buf); + break; + } + + result_tmp_bufs.Add(cur_buf); + cur_buf = FX_Alloc(uint8_t, buf_size + 1); + cur_buf[buf_size] = '\0'; + } + dest_size = FPDFAPI_FlateGetTotalOut(context); + offset = FPDFAPI_FlateGetTotalIn(context); + if (result_tmp_bufs.GetSize() == 1) { + dest_buf = result_tmp_bufs[0]; + } else { + uint8_t* result_buf = FX_Alloc(uint8_t, dest_size); + FX_DWORD result_pos = 0; + for (int32_t i = 0; i < result_tmp_bufs.GetSize(); i++) { + uint8_t* tmp_buf = result_tmp_bufs[i]; + FX_DWORD tmp_buf_size = buf_size; + if (i == result_tmp_bufs.GetSize() - 1) { + tmp_buf_size = last_buf_size; + } + FXSYS_memcpy(result_buf + result_pos, tmp_buf, tmp_buf_size); + result_pos += tmp_buf_size; + FX_Free(result_tmp_bufs[i]); + } + dest_buf = result_buf; + } + } + FPDFAPI_FlateEnd(context); +} + +} // namespace + +class CCodec_FlateScanlineDecoder : public CCodec_ScanlineDecoder { + public: + CCodec_FlateScanlineDecoder(); + ~CCodec_FlateScanlineDecoder() override; + + void Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc, + int predictor, + int Colors, + int BitsPerComponent, + int Columns); + void Destroy() { delete this; } + + // CCodec_ScanlineDecoder + void v_DownScale(int dest_width, int dest_height) override {} + FX_BOOL v_Rewind() override; + uint8_t* v_GetNextLine() override; + FX_DWORD GetSrcOffset() override; + + void* m_pFlate; + const uint8_t* m_SrcBuf; + FX_DWORD m_SrcSize; + uint8_t* m_pScanline; + uint8_t* m_pLastLine; + uint8_t* m_pPredictBuffer; + uint8_t* m_pPredictRaw; + int m_Predictor; + int m_Colors; + int m_BitsPerComponent; + int m_Columns; + FX_DWORD m_PredictPitch; + size_t m_LeftOver; +}; + +CCodec_FlateScanlineDecoder::CCodec_FlateScanlineDecoder() { + m_pFlate = NULL; + m_pScanline = NULL; + m_pLastLine = NULL; + m_pPredictBuffer = NULL; + m_pPredictRaw = NULL; + m_LeftOver = 0; +} +CCodec_FlateScanlineDecoder::~CCodec_FlateScanlineDecoder() { + FX_Free(m_pScanline); + FX_Free(m_pLastLine); + FX_Free(m_pPredictBuffer); + FX_Free(m_pPredictRaw); + if (m_pFlate) { + FPDFAPI_FlateEnd(m_pFlate); + } +} +void CCodec_FlateScanlineDecoder::Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc, + int predictor, + int Colors, + int BitsPerComponent, + int Columns) { + m_SrcBuf = src_buf; + m_SrcSize = src_size; + m_OutputWidth = m_OrigWidth = width; + m_OutputHeight = m_OrigHeight = height; + m_nComps = nComps; + m_bpc = bpc; + m_bColorTransformed = FALSE; + m_Pitch = (static_cast(width) * nComps * bpc + 7) / 8; + m_pScanline = FX_Alloc(uint8_t, m_Pitch); + m_Predictor = 0; + if (predictor) { + if (predictor >= 10) { + m_Predictor = 2; + } else if (predictor == 2) { + m_Predictor = 1; + } + if (m_Predictor) { + if (BitsPerComponent * Colors * Columns == 0) { + BitsPerComponent = m_bpc; + Colors = m_nComps; + Columns = m_OrigWidth; + } + m_Colors = Colors; + m_BitsPerComponent = BitsPerComponent; + m_Columns = Columns; + m_PredictPitch = + (static_cast(m_BitsPerComponent) * m_Colors * m_Columns + + 7) / + 8; + m_pLastLine = FX_Alloc(uint8_t, m_PredictPitch); + m_pPredictRaw = FX_Alloc(uint8_t, m_PredictPitch + 1); + m_pPredictBuffer = FX_Alloc(uint8_t, m_PredictPitch); + } + } +} +FX_BOOL CCodec_FlateScanlineDecoder::v_Rewind() { + if (m_pFlate) { + FPDFAPI_FlateEnd(m_pFlate); + } + m_pFlate = FPDFAPI_FlateInit(my_alloc_func, my_free_func); + if (!m_pFlate) { + return FALSE; + } + FPDFAPI_FlateInput(m_pFlate, m_SrcBuf, m_SrcSize); + m_LeftOver = 0; + return TRUE; +} +uint8_t* CCodec_FlateScanlineDecoder::v_GetNextLine() { + if (m_Predictor) { + if (m_Pitch == m_PredictPitch) { + if (m_Predictor == 2) { + FPDFAPI_FlateOutput(m_pFlate, m_pPredictRaw, m_PredictPitch + 1); + PNG_PredictLine(m_pScanline, m_pPredictRaw, m_pLastLine, + m_BitsPerComponent, m_Colors, m_Columns); + FXSYS_memcpy(m_pLastLine, m_pScanline, m_PredictPitch); + } else { + FPDFAPI_FlateOutput(m_pFlate, m_pScanline, m_Pitch); + TIFF_PredictLine(m_pScanline, m_PredictPitch, m_bpc, m_nComps, + m_OutputWidth); + } + } else { + size_t bytes_to_go = m_Pitch; + size_t read_leftover = + m_LeftOver > bytes_to_go ? bytes_to_go : m_LeftOver; + if (read_leftover) { + FXSYS_memcpy(m_pScanline, + m_pPredictBuffer + m_PredictPitch - m_LeftOver, + read_leftover); + m_LeftOver -= read_leftover; + bytes_to_go -= read_leftover; + } + while (bytes_to_go) { + if (m_Predictor == 2) { + FPDFAPI_FlateOutput(m_pFlate, m_pPredictRaw, m_PredictPitch + 1); + PNG_PredictLine(m_pPredictBuffer, m_pPredictRaw, m_pLastLine, + m_BitsPerComponent, m_Colors, m_Columns); + FXSYS_memcpy(m_pLastLine, m_pPredictBuffer, m_PredictPitch); + } else { + FPDFAPI_FlateOutput(m_pFlate, m_pPredictBuffer, m_PredictPitch); + TIFF_PredictLine(m_pPredictBuffer, m_PredictPitch, m_BitsPerComponent, + m_Colors, m_Columns); + } + size_t read_bytes = + m_PredictPitch > bytes_to_go ? bytes_to_go : m_PredictPitch; + FXSYS_memcpy(m_pScanline + m_Pitch - bytes_to_go, m_pPredictBuffer, + read_bytes); + m_LeftOver += m_PredictPitch - read_bytes; + bytes_to_go -= read_bytes; + } + } + } else { + FPDFAPI_FlateOutput(m_pFlate, m_pScanline, m_Pitch); + } + return m_pScanline; +} +FX_DWORD CCodec_FlateScanlineDecoder::GetSrcOffset() { + return FPDFAPI_FlateGetTotalIn(m_pFlate); +} + +ICodec_ScanlineDecoder* CCodec_FlateModule::CreateDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + int bpc, + int predictor, + int Colors, + int BitsPerComponent, + int Columns) { + CCodec_FlateScanlineDecoder* pDecoder = new CCodec_FlateScanlineDecoder; + pDecoder->Create(src_buf, src_size, width, height, nComps, bpc, predictor, + Colors, BitsPerComponent, Columns); + return pDecoder; +} +FX_DWORD CCodec_FlateModule::FlateOrLZWDecode(FX_BOOL bLZW, + const uint8_t* src_buf, + FX_DWORD src_size, + FX_BOOL bEarlyChange, + int predictor, + int Colors, + int BitsPerComponent, + int Columns, + FX_DWORD estimated_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + dest_buf = NULL; + FX_DWORD offset = 0; + int predictor_type = 0; + if (predictor) { + if (predictor >= 10) { + predictor_type = 2; + } else if (predictor == 2) { + predictor_type = 1; + } + } + if (bLZW) { + { + std::unique_ptr decoder(new CLZWDecoder); + dest_size = (FX_DWORD)-1; + offset = src_size; + int err = decoder->Decode(NULL, dest_size, src_buf, offset, bEarlyChange); + if (err || dest_size == 0 || dest_size + 1 < dest_size) { + return -1; + } + } + { + std::unique_ptr decoder(new CLZWDecoder); + dest_buf = FX_Alloc(uint8_t, dest_size + 1); + dest_buf[dest_size] = '\0'; + decoder->Decode(dest_buf, dest_size, src_buf, offset, bEarlyChange); + } + } else { + FlateUncompress(src_buf, src_size, estimated_size, dest_buf, dest_size, + offset); + } + if (predictor_type == 0) { + return offset; + } + FX_BOOL ret = TRUE; + if (predictor_type == 2) { + ret = PNG_Predictor(dest_buf, dest_size, Colors, BitsPerComponent, Columns); + } else if (predictor_type == 1) { + ret = + TIFF_Predictor(dest_buf, dest_size, Colors, BitsPerComponent, Columns); + } + return ret ? offset : -1; +} +FX_BOOL CCodec_FlateModule::Encode(const uint8_t* src_buf, + FX_DWORD src_size, + int predictor, + int Colors, + int BitsPerComponent, + int Columns, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + if (predictor != 2 && predictor < 10) { + return Encode(src_buf, src_size, dest_buf, dest_size); + } + uint8_t* pSrcBuf = NULL; + pSrcBuf = FX_Alloc(uint8_t, src_size); + FXSYS_memcpy(pSrcBuf, src_buf, src_size); + FX_BOOL ret = TRUE; + if (predictor == 2) { + ret = TIFF_PredictorEncode(pSrcBuf, src_size, Colors, BitsPerComponent, + Columns); + } else if (predictor >= 10) { + ret = PNG_PredictorEncode(pSrcBuf, src_size, predictor, Colors, + BitsPerComponent, Columns); + } + if (ret) + ret = Encode(pSrcBuf, src_size, dest_buf, dest_size); + FX_Free(pSrcBuf); + return ret; +} +FX_BOOL CCodec_FlateModule::Encode(const uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + dest_size = src_size + src_size / 1000 + 12; + dest_buf = FX_Alloc(uint8_t, dest_size); + unsigned long temp_size = dest_size; + FPDFAPI_FlateCompress(dest_buf, &temp_size, src_buf, src_size); + dest_size = (FX_DWORD)temp_size; + return TRUE; +} diff --git a/core/fxcodec/codec/fx_codec_gif.cpp b/core/fxcodec/codec/fx_codec_gif.cpp new file mode 100644 index 0000000000..60ca00f9fa --- /dev/null +++ b/core/fxcodec/codec/fx_codec_gif.cpp @@ -0,0 +1,187 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/codec/codec_int.h" +#include "core/fxcodec/lgif/fx_gif.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_dib.h" +struct FXGIF_Context { + gif_decompress_struct_p gif_ptr; + void* parent_ptr; + void* child_ptr; + + void* (*m_AllocFunc)(unsigned int); + void (*m_FreeFunc)(void*); +}; +extern "C" { +static void* gif_alloc_func(unsigned int size) { + return FX_Alloc(char, size); +} +static void gif_free_func(void* p) { + FX_Free(p); +} +}; +static void gif_error_data(gif_decompress_struct_p gif_ptr, + const FX_CHAR* err_msg) { + FXSYS_strncpy((char*)gif_ptr->err_ptr, err_msg, GIF_MAX_ERROR_SIZE - 1); + longjmp(gif_ptr->jmpbuf, 1); +} +static uint8_t* gif_ask_buf_for_pal(gif_decompress_struct_p gif_ptr, + int32_t pal_size) { + FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; + CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; + return pModule->AskLocalPaletteBufCallback( + p->child_ptr, gif_get_frame_num(gif_ptr), pal_size); +} +static void gif_record_current_position(gif_decompress_struct_p gif_ptr, + FX_DWORD* cur_pos_ptr) { + FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; + CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; + pModule->RecordCurrentPositionCallback(p->child_ptr, *cur_pos_ptr); +} +static void gif_read_scanline(gif_decompress_struct_p gif_ptr, + int32_t row_num, + uint8_t* row_buf) { + FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; + CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; + pModule->ReadScanlineCallback(p->child_ptr, row_num, row_buf); +} +static FX_BOOL gif_get_record_position(gif_decompress_struct_p gif_ptr, + FX_DWORD cur_pos, + int32_t left, + int32_t top, + int32_t width, + int32_t height, + int32_t pal_num, + void* pal_ptr, + int32_t delay_time, + FX_BOOL user_input, + int32_t trans_index, + int32_t disposal_method, + FX_BOOL interlace) { + FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; + CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; + return pModule->InputRecordPositionBufCallback( + p->child_ptr, cur_pos, FX_RECT(left, top, left + width, top + height), + pal_num, pal_ptr, delay_time, user_input, trans_index, disposal_method, + interlace); +} +void* CCodec_GifModule::Start(void* pModule) { + FXGIF_Context* p = (FXGIF_Context*)FX_Alloc(uint8_t, sizeof(FXGIF_Context)); + if (p == NULL) { + return NULL; + } + FXSYS_memset(p, 0, sizeof(FXGIF_Context)); + p->m_AllocFunc = gif_alloc_func; + p->m_FreeFunc = gif_free_func; + p->gif_ptr = NULL; + p->parent_ptr = (void*)this; + p->child_ptr = pModule; + p->gif_ptr = gif_create_decompress(); + if (p->gif_ptr == NULL) { + FX_Free(p); + return NULL; + } + p->gif_ptr->context_ptr = (void*)p; + p->gif_ptr->err_ptr = m_szLastError; + p->gif_ptr->gif_error_fn = gif_error_data; + p->gif_ptr->gif_ask_buf_for_pal_fn = gif_ask_buf_for_pal; + p->gif_ptr->gif_record_current_position_fn = gif_record_current_position; + p->gif_ptr->gif_get_row_fn = gif_read_scanline; + p->gif_ptr->gif_get_record_position_fn = gif_get_record_position; + return p; +} +void CCodec_GifModule::Finish(void* pContext) { + FXGIF_Context* p = (FXGIF_Context*)pContext; + if (p) { + gif_destroy_decompress(&p->gif_ptr); + p->m_FreeFunc(p); + } +} +int32_t CCodec_GifModule::ReadHeader(void* pContext, + int* width, + int* height, + int* pal_num, + void** pal_pp, + int* bg_index, + CFX_DIBAttribute* pAttribute) { + FXGIF_Context* p = (FXGIF_Context*)pContext; + if (setjmp(p->gif_ptr->jmpbuf)) { + return 0; + } + int32_t ret = gif_read_header(p->gif_ptr); + if (ret != 1) { + return ret; + } + if (pAttribute) { + } + *width = p->gif_ptr->width; + *height = p->gif_ptr->height; + *pal_num = p->gif_ptr->global_pal_num; + *pal_pp = p->gif_ptr->global_pal_ptr; + *bg_index = p->gif_ptr->bc_index; + return 1; +} +int32_t CCodec_GifModule::LoadFrameInfo(void* pContext, int* frame_num) { + FXGIF_Context* p = (FXGIF_Context*)pContext; + if (setjmp(p->gif_ptr->jmpbuf)) { + return 0; + } + int32_t ret = gif_get_frame(p->gif_ptr); + if (ret != 1) { + return ret; + } + *frame_num = gif_get_frame_num(p->gif_ptr); + return 1; +} +int32_t CCodec_GifModule::LoadFrame(void* pContext, + int frame_num, + CFX_DIBAttribute* pAttribute) { + FXGIF_Context* p = (FXGIF_Context*)pContext; + if (setjmp(p->gif_ptr->jmpbuf)) { + return 0; + } + int32_t ret = gif_load_frame(p->gif_ptr, frame_num); + if (ret == 1) { + if (pAttribute) { + pAttribute->m_nGifLeft = + p->gif_ptr->img_ptr_arr_ptr->GetAt(frame_num)->image_info_ptr->left; + pAttribute->m_nGifTop = + p->gif_ptr->img_ptr_arr_ptr->GetAt(frame_num)->image_info_ptr->top; + pAttribute->m_fAspectRatio = p->gif_ptr->pixel_aspect; + if (p->gif_ptr->cmt_data_ptr) { + const uint8_t* buf = + (const uint8_t*)p->gif_ptr->cmt_data_ptr->GetBuffer(0); + FX_DWORD len = p->gif_ptr->cmt_data_ptr->GetLength(); + if (len > 21) { + uint8_t size = *buf++; + if (size) { + pAttribute->m_strAuthor = CFX_ByteString(buf, size); + } else { + pAttribute->m_strAuthor.Empty(); + } + buf += size; + size = *buf++; + if (size == 20) { + FXSYS_memcpy(pAttribute->m_strTime, buf, size); + } + } + } + } + } + return ret; +} +FX_DWORD CCodec_GifModule::GetAvailInput(void* pContext, + uint8_t** avial_buf_ptr) { + FXGIF_Context* p = (FXGIF_Context*)pContext; + return gif_get_avail_input(p->gif_ptr, avial_buf_ptr); +} +void CCodec_GifModule::Input(void* pContext, + const uint8_t* src_buf, + FX_DWORD src_size) { + FXGIF_Context* p = (FXGIF_Context*)pContext; + gif_input_buffer(p->gif_ptr, (uint8_t*)src_buf, src_size); +} diff --git a/core/fxcodec/codec/fx_codec_icc.cpp b/core/fxcodec/codec/fx_codec_icc.cpp new file mode 100644 index 0000000000..fc8113e4e6 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_icc.cpp @@ -0,0 +1,1986 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "third_party/lcms2-2.6/include/lcms2.h" + +const FX_DWORD N_COMPONENT_LAB = 3; +const FX_DWORD N_COMPONENT_GRAY = 1; +const FX_DWORD N_COMPONENT_RGB = 3; +const FX_DWORD N_COMPONENT_CMYK = 4; +const FX_DWORD N_COMPONENT_DEFAULT = 3; + +FX_BOOL MD5ComputeID(const void* buf, FX_DWORD dwSize, uint8_t ID[16]) { + return cmsMD5computeIDExt(buf, dwSize, ID); +} +struct CLcmsCmm { + cmsHTRANSFORM m_hTransform; + int m_nSrcComponents; + int m_nDstComponents; + FX_BOOL m_bLab; +}; +extern "C" { +int ourHandler(int ErrorCode, const char* ErrorText) { + return TRUE; +} +}; +FX_BOOL CheckComponents(cmsColorSpaceSignature cs, + int nComponents, + FX_BOOL bDst) { + if (nComponents <= 0 || nComponents > 15) { + return FALSE; + } + switch (cs) { + case cmsSigLabData: + if (nComponents < 3) { + return FALSE; + } + break; + case cmsSigGrayData: + if (bDst && nComponents != 1) { + return FALSE; + } + if (!bDst && nComponents > 2) { + return FALSE; + } + break; + case cmsSigRgbData: + if (bDst && nComponents != 3) { + return FALSE; + } + break; + case cmsSigCmykData: + if (bDst && nComponents != 4) { + return FALSE; + } + break; + default: + if (nComponents != 3) { + return FALSE; + } + break; + } + return TRUE; +} + +FX_DWORD GetCSComponents(cmsColorSpaceSignature cs) { + FX_DWORD components; + switch (cs) { + case cmsSigLabData: + components = N_COMPONENT_LAB; + break; + case cmsSigGrayData: + components = N_COMPONENT_GRAY; + break; + case cmsSigRgbData: + components = N_COMPONENT_RGB; + break; + case cmsSigCmykData: + components = N_COMPONENT_CMYK; + break; + default: + components = N_COMPONENT_DEFAULT; + break; + } + return components; +} + +void* IccLib_CreateTransform(const unsigned char* pSrcProfileData, + FX_DWORD dwSrcProfileSize, + FX_DWORD& nSrcComponents, + const unsigned char* pDstProfileData, + FX_DWORD dwDstProfileSize, + int32_t nDstComponents, + int intent, + FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT, + FX_DWORD dwDstFormat = Icc_FORMAT_DEFAULT) { + cmsHPROFILE srcProfile = NULL; + cmsHPROFILE dstProfile = NULL; + cmsHTRANSFORM hTransform = NULL; + CLcmsCmm* pCmm = NULL; + nSrcComponents = 0; + srcProfile = cmsOpenProfileFromMem((void*)pSrcProfileData, dwSrcProfileSize); + if (!srcProfile) { + return NULL; + } + if (!pDstProfileData && dwDstProfileSize == 0 && nDstComponents == 3) { + dstProfile = cmsCreate_sRGBProfile(); + } else { + dstProfile = + cmsOpenProfileFromMem((void*)pDstProfileData, dwDstProfileSize); + } + if (!dstProfile) { + cmsCloseProfile(srcProfile); + return NULL; + } + int srcFormat; + FX_BOOL bLab = FALSE; + cmsColorSpaceSignature srcCS = cmsGetColorSpace(srcProfile); + nSrcComponents = GetCSComponents(srcCS); + if (srcCS == cmsSigLabData) { + srcFormat = + COLORSPACE_SH(PT_Lab) | CHANNELS_SH(nSrcComponents) | BYTES_SH(0); + bLab = TRUE; + } else { + srcFormat = + COLORSPACE_SH(PT_ANY) | CHANNELS_SH(nSrcComponents) | BYTES_SH(1); + if (srcCS == cmsSigRgbData && T_DOSWAP(dwSrcFormat)) { + srcFormat |= DOSWAP_SH(1); + } + } + cmsColorSpaceSignature dstCS = cmsGetColorSpace(dstProfile); + if (!CheckComponents(dstCS, nDstComponents, TRUE)) { + cmsCloseProfile(srcProfile); + cmsCloseProfile(dstProfile); + return NULL; + } + switch (dstCS) { + case cmsSigGrayData: + hTransform = cmsCreateTransform(srcProfile, srcFormat, dstProfile, + TYPE_GRAY_8, intent, 0); + break; + case cmsSigRgbData: + hTransform = cmsCreateTransform(srcProfile, srcFormat, dstProfile, + TYPE_BGR_8, intent, 0); + break; + case cmsSigCmykData: + hTransform = cmsCreateTransform( + srcProfile, srcFormat, dstProfile, + T_DOSWAP(dwDstFormat) ? TYPE_KYMC_8 : TYPE_CMYK_8, intent, 0); + break; + default: + break; + } + if (!hTransform) { + cmsCloseProfile(srcProfile); + cmsCloseProfile(dstProfile); + return NULL; + } + pCmm = new CLcmsCmm; + pCmm->m_nSrcComponents = nSrcComponents; + pCmm->m_nDstComponents = nDstComponents; + pCmm->m_hTransform = hTransform; + pCmm->m_bLab = bLab; + cmsCloseProfile(srcProfile); + cmsCloseProfile(dstProfile); + return pCmm; +} +void* IccLib_CreateTransform_sRGB(const unsigned char* pProfileData, + FX_DWORD dwProfileSize, + FX_DWORD& nComponents, + int32_t intent, + FX_DWORD dwSrcFormat) { + return IccLib_CreateTransform(pProfileData, dwProfileSize, nComponents, NULL, + 0, 3, intent, dwSrcFormat); +} +void IccLib_DestroyTransform(void* pTransform) { + if (!pTransform) { + return; + } + cmsDeleteTransform(((CLcmsCmm*)pTransform)->m_hTransform); + delete (CLcmsCmm*)pTransform; +} +void IccLib_Translate(void* pTransform, + FX_DWORD nSrcComponents, + FX_FLOAT* pSrcValues, + FX_FLOAT* pDestValues) { + if (!pTransform) { + return; + } + CLcmsCmm* p = (CLcmsCmm*)pTransform; + uint8_t output[4]; + if (p->m_bLab) { + CFX_FixedBufGrow inputs(nSrcComponents); + double* input = inputs; + for (FX_DWORD i = 0; i < nSrcComponents; i++) { + input[i] = pSrcValues[i]; + } + cmsDoTransform(p->m_hTransform, input, output, 1); + } else { + CFX_FixedBufGrow inputs(nSrcComponents); + uint8_t* input = inputs; + for (FX_DWORD i = 0; i < nSrcComponents; i++) { + if (pSrcValues[i] > 1.0f) { + input[i] = 255; + } else if (pSrcValues[i] < 0) { + input[i] = 0; + } else { + input[i] = (int)(pSrcValues[i] * 255.0f); + } + } + cmsDoTransform(p->m_hTransform, input, output, 1); + } + switch (p->m_nDstComponents) { + case 1: + pDestValues[0] = output[0] / 255.0f; + break; + case 3: + pDestValues[0] = output[2] / 255.0f; + pDestValues[1] = output[1] / 255.0f; + pDestValues[2] = output[0] / 255.0f; + break; + case 4: + pDestValues[0] = output[0] / 255.0f; + pDestValues[1] = output[1] / 255.0f; + pDestValues[2] = output[2] / 255.0f; + pDestValues[3] = output[3] / 255.0f; + break; + } +} +void IccLib_TranslateImage(void* pTransform, + unsigned char* pDest, + const unsigned char* pSrc, + int32_t pixels) { + cmsDoTransform(((CLcmsCmm*)pTransform)->m_hTransform, (void*)pSrc, pDest, + pixels); +} +void* CreateProfile_Gray(double gamma) { + cmsCIExyY* D50 = (cmsCIExyY*)cmsD50_xyY(); + if (!cmsWhitePointFromTemp(D50, 6504)) { + return NULL; + } + cmsToneCurve* curve = cmsBuildGamma(NULL, gamma); + if (!curve) { + return NULL; + } + void* profile = cmsCreateGrayProfile(D50, curve); + cmsFreeToneCurve(curve); + return profile; +} +ICodec_IccModule::IccCS GetProfileCSFromHandle(void* pProfile) { + if (!pProfile) { + return ICodec_IccModule::IccCS_Unknown; + } + switch (cmsGetColorSpace(pProfile)) { + case cmsSigXYZData: + return ICodec_IccModule::IccCS_XYZ; + case cmsSigLabData: + return ICodec_IccModule::IccCS_Lab; + case cmsSigLuvData: + return ICodec_IccModule::IccCS_Luv; + case cmsSigYCbCrData: + return ICodec_IccModule::IccCS_YCbCr; + case cmsSigYxyData: + return ICodec_IccModule::IccCS_Yxy; + case cmsSigRgbData: + return ICodec_IccModule::IccCS_Rgb; + case cmsSigGrayData: + return ICodec_IccModule::IccCS_Gray; + case cmsSigHsvData: + return ICodec_IccModule::IccCS_Hsv; + case cmsSigHlsData: + return ICodec_IccModule::IccCS_Hls; + case cmsSigCmykData: + return ICodec_IccModule::IccCS_Cmyk; + case cmsSigCmyData: + return ICodec_IccModule::IccCS_Cmy; + default: + return ICodec_IccModule::IccCS_Unknown; + } +} +ICodec_IccModule::IccCS CCodec_IccModule::GetProfileCS( + const uint8_t* pProfileData, + FX_DWORD dwProfileSize) { + ICodec_IccModule::IccCS cs; + cmsHPROFILE hProfile = + cmsOpenProfileFromMem((void*)pProfileData, dwProfileSize); + if (!hProfile) { + return IccCS_Unknown; + } + cs = GetProfileCSFromHandle(hProfile); + if (hProfile) { + cmsCloseProfile(hProfile); + } + return cs; +} +ICodec_IccModule::IccCS CCodec_IccModule::GetProfileCS(IFX_FileRead* pFile) { + if (!pFile) { + return IccCS_Unknown; + } + ICodec_IccModule::IccCS cs; + FX_DWORD dwSize = (FX_DWORD)pFile->GetSize(); + uint8_t* pBuf = FX_Alloc(uint8_t, dwSize); + pFile->ReadBlock(pBuf, 0, dwSize); + cs = GetProfileCS(pBuf, dwSize); + FX_Free(pBuf); + return cs; +} +FX_DWORD TransferProfileType(void* pProfile, FX_DWORD dwFormat) { + cmsColorSpaceSignature cs = cmsGetColorSpace(pProfile); + switch (cs) { + case cmsSigXYZData: + return TYPE_XYZ_16; + case cmsSigLabData: + return TYPE_Lab_DBL; + case cmsSigLuvData: + return TYPE_YUV_8; + case cmsSigYCbCrData: + return TYPE_YCbCr_8; + case cmsSigYxyData: + return TYPE_Yxy_16; + case cmsSigRgbData: + return T_DOSWAP(dwFormat) ? TYPE_RGB_8 : TYPE_BGR_8; + case cmsSigGrayData: + return TYPE_GRAY_8; + case cmsSigHsvData: + return TYPE_HSV_8; + case cmsSigHlsData: + return TYPE_HLS_8; + case cmsSigCmykData: + return T_DOSWAP(dwFormat) ? TYPE_KYMC_8 : TYPE_CMYK_8; + case cmsSigCmyData: + return TYPE_CMY_8; + case cmsSigMCH5Data: + return T_DOSWAP(dwFormat) ? TYPE_KYMC5_8 : TYPE_CMYK5_8; + case cmsSigMCH6Data: + return TYPE_CMYK6_8; + case cmsSigMCH7Data: + return T_DOSWAP(dwFormat) ? TYPE_KYMC7_8 : TYPE_CMYK7_8; + case cmsSigMCH8Data: + return T_DOSWAP(dwFormat) ? TYPE_KYMC8_8 : TYPE_CMYK8_8; + case cmsSigMCH9Data: + return T_DOSWAP(dwFormat) ? TYPE_KYMC9_8 : TYPE_CMYK9_8; + case cmsSigMCHAData: + return T_DOSWAP(dwFormat) ? TYPE_KYMC10_8 : TYPE_CMYK10_8; + case cmsSigMCHBData: + return T_DOSWAP(dwFormat) ? TYPE_KYMC11_8 : TYPE_CMYK11_8; + case cmsSigMCHCData: + return T_DOSWAP(dwFormat) ? TYPE_KYMC12_8 : TYPE_CMYK12_8; + default: + return 0; + } +} +class CFX_IccProfileCache { + public: + CFX_IccProfileCache(); + ~CFX_IccProfileCache(); + void* m_pProfile; + FX_DWORD m_dwRate; + + protected: + void Purge(); +}; +CFX_IccProfileCache::CFX_IccProfileCache() { + m_pProfile = NULL; + m_dwRate = 1; +} +CFX_IccProfileCache::~CFX_IccProfileCache() { + if (m_pProfile) { + cmsCloseProfile(m_pProfile); + } +} +void CFX_IccProfileCache::Purge() {} +class CFX_IccTransformCache { + public: + CFX_IccTransformCache(CLcmsCmm* pCmm = NULL); + ~CFX_IccTransformCache(); + void* m_pIccTransform; + FX_DWORD m_dwRate; + CLcmsCmm* m_pCmm; + + protected: + void Purge(); +}; +CFX_IccTransformCache::CFX_IccTransformCache(CLcmsCmm* pCmm) { + m_pIccTransform = NULL; + m_dwRate = 1; + m_pCmm = pCmm; +} +CFX_IccTransformCache::~CFX_IccTransformCache() { + if (m_pIccTransform) { + cmsDeleteTransform(m_pIccTransform); + } + FX_Free(m_pCmm); +} +void CFX_IccTransformCache::Purge() {} +class CFX_ByteStringKey : public CFX_BinaryBuf { + public: + CFX_ByteStringKey() : CFX_BinaryBuf() {} + CFX_ByteStringKey& operator<<(FX_DWORD i); +}; +CFX_ByteStringKey& CFX_ByteStringKey::operator<<(FX_DWORD i) { + AppendBlock(&i, sizeof(FX_DWORD)); + return *this; +} +void* CCodec_IccModule::CreateProfile(ICodec_IccModule::IccParam* pIccParam, + Icc_CLASS ic, + CFX_BinaryBuf* pTransformKey) { + CFX_IccProfileCache* pCache = NULL; + CFX_ByteStringKey key; + CFX_ByteString text; + key << pIccParam->ColorSpace << (pIccParam->dwProfileType | ic << 8); + uint8_t ID[16]; + switch (pIccParam->dwProfileType) { + case Icc_PARAMTYPE_NONE: + return NULL; + case Icc_PARAMTYPE_BUFFER: + MD5ComputeID(pIccParam->pProfileData, pIccParam->dwProfileSize, ID); + break; + case Icc_PARAMTYPE_PARAM: + FXSYS_memset(ID, 0, 16); + switch (pIccParam->ColorSpace) { + case IccCS_Gray: + text.Format("%lf", pIccParam->Gamma); + break; + default: + break; + } + MD5ComputeID(text.GetBuffer(0), text.GetLength(), ID); + break; + default: + break; + } + key.AppendBlock(ID, 16); + CFX_ByteString ProfileKey(key.GetBuffer(), key.GetSize()); + ASSERT(pTransformKey); + pTransformKey->AppendBlock(ProfileKey.GetBuffer(0), ProfileKey.GetLength()); + auto it = m_MapProfile.find(ProfileKey); + if (it == m_MapProfile.end()) { + pCache = new CFX_IccProfileCache; + switch (pIccParam->dwProfileType) { + case Icc_PARAMTYPE_BUFFER: + pCache->m_pProfile = cmsOpenProfileFromMem(pIccParam->pProfileData, + pIccParam->dwProfileSize); + break; + case Icc_PARAMTYPE_PARAM: + switch (pIccParam->ColorSpace) { + case IccCS_Rgb: + pCache->m_pProfile = cmsCreate_sRGBProfile(); + break; + case IccCS_Gray: + pCache->m_pProfile = CreateProfile_Gray(pIccParam->Gamma); + break; + default: + break; + } + break; + default: + break; + } + m_MapProfile[ProfileKey] = pCache; + } else { + pCache = it->second; + pCache->m_dwRate++; + } + return pCache->m_pProfile; +} +void* CCodec_IccModule::CreateTransform( + ICodec_IccModule::IccParam* pInputParam, + ICodec_IccModule::IccParam* pOutputParam, + ICodec_IccModule::IccParam* pProofParam, + FX_DWORD dwIntent, + FX_DWORD dwFlag, + FX_DWORD dwPrfIntent, + FX_DWORD dwPrfFlag) { + CLcmsCmm* pCmm = NULL; + ASSERT(pInputParam && pOutputParam); + CFX_ByteStringKey key; + void* pInputProfile = CreateProfile(pInputParam, Icc_CLASS_INPUT, &key); + if (!pInputProfile) { + return NULL; + } + void* pOutputProfile = CreateProfile(pOutputParam, Icc_CLASS_OUTPUT, &key); + if (!pOutputProfile) { + return NULL; + } + FX_DWORD dwInputProfileType = + TransferProfileType(pInputProfile, pInputParam->dwFormat); + FX_DWORD dwOutputProfileType = + TransferProfileType(pOutputProfile, pOutputParam->dwFormat); + if (dwInputProfileType == 0 || dwOutputProfileType == 0) { + return NULL; + } + void* pProofProfile = NULL; + if (pProofParam) { + pProofProfile = CreateProfile(pProofParam, Icc_CLASS_PROOF, &key); + } + key << dwInputProfileType << dwOutputProfileType << dwIntent << dwFlag + << (pProofProfile != NULL) << dwPrfIntent << dwPrfFlag; + CFX_ByteStringC TransformKey(key.GetBuffer(), key.GetSize()); + CFX_IccTransformCache* pTransformCache; + auto it = m_MapTranform.find(TransformKey); + if (it == m_MapTranform.end()) { + pCmm = FX_Alloc(CLcmsCmm, 1); + pCmm->m_nSrcComponents = T_CHANNELS(dwInputProfileType); + pCmm->m_nDstComponents = T_CHANNELS(dwOutputProfileType); + pCmm->m_bLab = T_COLORSPACE(pInputParam->dwFormat) == PT_Lab; + pTransformCache = new CFX_IccTransformCache(pCmm); + if (pProofProfile) { + pTransformCache->m_pIccTransform = cmsCreateProofingTransform( + pInputProfile, dwInputProfileType, pOutputProfile, + dwOutputProfileType, pProofProfile, dwIntent, dwPrfIntent, dwPrfFlag); + } else { + pTransformCache->m_pIccTransform = + cmsCreateTransform(pInputProfile, dwInputProfileType, pOutputProfile, + dwOutputProfileType, dwIntent, dwFlag); + } + pCmm->m_hTransform = pTransformCache->m_pIccTransform; + m_MapTranform[TransformKey] = pTransformCache; + } else { + pTransformCache = it->second; + pTransformCache->m_dwRate++; + } + return pTransformCache->m_pCmm; +} +CCodec_IccModule::~CCodec_IccModule() { + for (const auto& pair : m_MapProfile) { + delete pair.second; + } + m_MapProfile.clear(); + for (const auto& pair : m_MapTranform) { + delete pair.second; + } + m_MapTranform.clear(); +} +void* CCodec_IccModule::CreateTransform_sRGB(const uint8_t* pProfileData, + FX_DWORD dwProfileSize, + FX_DWORD& nComponents, + int32_t intent, + FX_DWORD dwSrcFormat) { + return IccLib_CreateTransform_sRGB(pProfileData, dwProfileSize, nComponents, + intent, dwSrcFormat); +} + +void* CCodec_IccModule::CreateTransform_CMYK(const uint8_t* pSrcProfileData, + FX_DWORD dwSrcProfileSize, + FX_DWORD& nSrcComponents, + const uint8_t* pDstProfileData, + FX_DWORD dwDstProfileSize, + int32_t intent, + FX_DWORD dwSrcFormat, + FX_DWORD dwDstFormat) { + return IccLib_CreateTransform( + pSrcProfileData, dwSrcProfileSize, nSrcComponents, pDstProfileData, + dwDstProfileSize, 4, intent, dwSrcFormat, dwDstFormat); +} + +void CCodec_IccModule::DestroyTransform(void* pTransform) { + IccLib_DestroyTransform(pTransform); +} +void CCodec_IccModule::Translate(void* pTransform, + FX_FLOAT* pSrcValues, + FX_FLOAT* pDestValues) { + IccLib_Translate(pTransform, m_nComponents, pSrcValues, pDestValues); +} +void CCodec_IccModule::TranslateScanline(void* pTransform, + uint8_t* pDest, + const uint8_t* pSrc, + int32_t pixels) { + IccLib_TranslateImage(pTransform, pDest, pSrc, pixels); +} +const uint8_t g_CMYKSamples[81 * 81 * 3] = { + 255, 255, 255, 225, 226, 228, 199, 200, 202, 173, 174, 178, 147, 149, 152, + 123, 125, 128, 99, 99, 102, 69, 70, 71, 34, 30, 31, 255, 253, 229, + 226, 224, 203, 200, 199, 182, 173, 173, 158, 149, 148, 135, 125, 124, 113, + 99, 99, 90, 70, 69, 63, 33, 29, 24, 255, 251, 204, 228, 223, 182, + 201, 198, 163, 174, 172, 142, 150, 147, 122, 125, 123, 101, 99, 98, 80, + 70, 68, 54, 32, 28, 16, 255, 249, 179, 230, 222, 160, 203, 197, 144, + 174, 170, 124, 150, 145, 105, 125, 122, 88, 99, 97, 69, 70, 68, 46, + 31, 28, 6, 255, 247, 154, 229, 220, 138, 203, 195, 122, 176, 169, 107, + 150, 145, 91, 125, 121, 74, 100, 96, 57, 70, 67, 35, 29, 26, 0, + 255, 246, 128, 231, 217, 114, 205, 194, 101, 176, 167, 88, 150, 144, 75, + 125, 120, 60, 100, 96, 44, 70, 66, 24, 28, 26, 0, 255, 244, 96, + 231, 217, 87, 203, 192, 78, 175, 167, 66, 150, 143, 56, 125, 119, 43, + 100, 95, 29, 69, 66, 7, 26, 26, 0, 255, 243, 51, 232, 215, 51, + 204, 191, 43, 176, 165, 38, 150, 142, 28, 125, 118, 17, 99, 94, 0, + 68, 65, 0, 24, 25, 0, 255, 241, 0, 231, 215, 0, 203, 190, 0, + 176, 164, 0, 150, 141, 0, 126, 117, 0, 99, 93, 0, 68, 65, 0, + 24, 25, 0, 252, 228, 238, 222, 201, 211, 197, 180, 190, 171, 156, 166, + 147, 133, 143, 123, 111, 119, 99, 88, 94, 71, 61, 66, 34, 22, 26, + 254, 226, 213, 224, 201, 191, 199, 179, 171, 172, 155, 148, 147, 133, 128, + 123, 110, 106, 98, 87, 83, 70, 59, 57, 33, 21, 18, 254, 224, 191, + 224, 199, 172, 200, 177, 153, 173, 154, 133, 147, 132, 115, 123, 109, 94, + 98, 86, 74, 70, 59, 49, 32, 21, 9, 255, 222, 168, 227, 198, 150, + 200, 175, 135, 173, 153, 118, 148, 130, 99, 123, 109, 82, 98, 86, 64, + 69, 58, 40, 31, 19, 0, 255, 221, 145, 227, 196, 129, 201, 174, 115, + 173, 151, 99, 148, 129, 85, 124, 108, 69, 98, 85, 52, 69, 58, 30, + 30, 19, 0, 255, 219, 121, 227, 195, 109, 201, 174, 97, 174, 150, 83, + 148, 129, 70, 124, 107, 55, 98, 84, 40, 69, 58, 19, 28, 18, 0, + 255, 218, 92, 229, 194, 82, 202, 173, 75, 174, 150, 63, 149, 128, 51, + 124, 106, 39, 98, 84, 24, 68, 57, 3, 26, 18, 0, 255, 217, 54, + 228, 193, 52, 201, 172, 46, 174, 148, 36, 148, 127, 27, 123, 105, 14, + 98, 83, 0, 68, 56, 0, 25, 18, 0, 255, 216, 0, 229, 192, 2, + 202, 171, 4, 173, 148, 0, 148, 126, 0, 124, 105, 0, 98, 83, 0, + 68, 56, 0, 24, 17, 0, 249, 204, 223, 219, 181, 199, 195, 160, 178, + 170, 140, 156, 146, 119, 134, 123, 99, 112, 98, 77, 88, 70, 52, 61, + 34, 11, 20, 250, 201, 200, 221, 180, 178, 197, 159, 161, 171, 139, 139, + 147, 119, 120, 123, 98, 99, 98, 77, 78, 69, 51, 52, 34, 11, 10, + 252, 201, 180, 223, 179, 162, 197, 159, 144, 170, 138, 125, 146, 117, 107, + 122, 97, 89, 98, 76, 69, 69, 50, 44, 32, 11, 2, 252, 199, 158, + 222, 177, 143, 199, 158, 127, 171, 137, 110, 147, 117, 93, 122, 96, 76, + 97, 75, 58, 69, 50, 36, 32, 10, 0, 253, 198, 137, 223, 177, 123, + 198, 156, 110, 171, 136, 95, 146, 116, 80, 122, 96, 65, 97, 75, 47, + 69, 50, 25, 30, 10, 0, 254, 197, 115, 225, 175, 104, 198, 156, 92, + 172, 135, 79, 147, 115, 66, 123, 95, 52, 98, 74, 37, 69, 49, 15, + 29, 10, 0, 254, 196, 89, 224, 175, 80, 199, 154, 70, 172, 134, 59, + 146, 114, 48, 122, 95, 36, 97, 74, 21, 68, 49, 0, 27, 9, 0, + 255, 195, 57, 225, 173, 52, 198, 154, 44, 172, 133, 36, 147, 113, 26, + 123, 94, 14, 98, 74, 0, 68, 49, 0, 26, 10, 0, 254, 194, 15, + 225, 172, 12, 198, 153, 7, 172, 132, 3, 146, 113, 0, 123, 93, 0, + 98, 73, 0, 68, 49, 0, 26, 9, 0, 246, 178, 209, 218, 159, 186, + 194, 140, 166, 168, 122, 145, 144, 104, 125, 121, 85, 103, 97, 65, 81, + 69, 41, 55, 34, 0, 12, 248, 176, 186, 219, 157, 166, 195, 139, 149, + 168, 121, 130, 144, 103, 111, 121, 85, 91, 97, 65, 71, 69, 41, 46, + 34, 0, 4, 249, 175, 168, 220, 156, 150, 196, 139, 135, 169, 121, 116, + 144, 103, 100, 122, 84, 83, 98, 65, 63, 70, 41, 39, 33, 0, 0, + 249, 175, 148, 220, 155, 133, 196, 138, 119, 169, 120, 103, 145, 101, 87, + 121, 83, 71, 97, 65, 54, 69, 41, 31, 32, 0, 0, 249, 173, 128, + 222, 154, 115, 195, 137, 102, 170, 119, 88, 145, 101, 74, 122, 83, 59, + 97, 64, 43, 68, 40, 20, 30, 0, 0, 250, 172, 108, 221, 154, 98, + 195, 136, 86, 170, 118, 73, 145, 100, 61, 122, 82, 48, 97, 63, 32, + 69, 40, 11, 28, 0, 0, 250, 171, 85, 221, 153, 76, 196, 136, 67, + 170, 117, 56, 145, 99, 44, 121, 82, 33, 97, 63, 17, 68, 40, 0, + 28, 0, 0, 251, 171, 58, 222, 152, 50, 197, 135, 43, 169, 117, 34, + 146, 99, 25, 121, 81, 10, 96, 63, 0, 68, 40, 0, 27, 0, 0, + 250, 170, 26, 222, 151, 19, 196, 134, 13, 169, 116, 4, 145, 99, 0, + 122, 81, 0, 97, 63, 0, 67, 40, 0, 26, 0, 0, 244, 153, 194, + 215, 136, 173, 192, 121, 155, 167, 104, 135, 143, 89, 115, 121, 72, 96, + 97, 54, 75, 70, 31, 49, 34, 0, 6, 245, 153, 173, 216, 136, 155, + 192, 120, 138, 167, 104, 121, 144, 88, 103, 121, 71, 85, 97, 54, 66, + 69, 31, 42, 34, 0, 0, 246, 152, 157, 217, 135, 140, 193, 120, 126, + 167, 103, 109, 143, 88, 92, 121, 72, 76, 97, 54, 58, 69, 31, 35, + 33, 0, 0, 245, 150, 139, 218, 134, 125, 193, 119, 111, 167, 103, 96, + 144, 87, 80, 121, 71, 66, 96, 53, 49, 68, 31, 26, 32, 0, 0, + 246, 151, 122, 218, 133, 108, 194, 118, 96, 168, 102, 81, 144, 86, 69, + 120, 71, 55, 95, 53, 39, 68, 30, 17, 31, 0, 0, 248, 150, 103, + 218, 133, 91, 193, 118, 81, 168, 102, 69, 143, 86, 56, 120, 70, 43, + 96, 53, 28, 68, 31, 6, 29, 0, 0, 247, 149, 81, 218, 132, 72, + 194, 117, 62, 168, 101, 52, 144, 86, 42, 121, 70, 29, 96, 52, 13, + 68, 30, 0, 28, 0, 0, 247, 148, 55, 219, 131, 50, 194, 117, 43, + 167, 101, 32, 144, 85, 22, 120, 69, 8, 96, 52, 0, 67, 30, 0, + 27, 0, 0, 247, 147, 29, 218, 131, 24, 194, 116, 20, 168, 100, 11, + 144, 85, 0, 120, 69, 0, 96, 52, 0, 67, 30, 0, 26, 0, 0, + 242, 130, 179, 214, 114, 160, 190, 101, 143, 166, 87, 125, 143, 72, 107, + 120, 58, 88, 96, 42, 68, 69, 17, 44, 35, 0, 0, 243, 129, 161, + 215, 114, 143, 191, 101, 128, 166, 87, 113, 143, 73, 96, 120, 58, 79, + 96, 41, 60, 69, 18, 37, 33, 0, 0, 243, 129, 146, 216, 114, 130, + 192, 101, 117, 166, 87, 101, 143, 72, 86, 121, 58, 69, 96, 42, 52, + 69, 18, 29, 31, 0, 0, 243, 128, 130, 216, 114, 115, 191, 101, 102, + 165, 86, 88, 142, 72, 75, 120, 58, 60, 95, 42, 43, 68, 19, 21, + 30, 0, 0, 244, 127, 112, 217, 113, 101, 192, 99, 89, 166, 85, 75, + 142, 72, 63, 119, 57, 50, 96, 41, 35, 68, 19, 13, 30, 0, 0, + 244, 127, 96, 216, 112, 86, 191, 99, 75, 166, 86, 64, 143, 72, 52, + 120, 57, 40, 95, 41, 24, 67, 20, 1, 29, 0, 0, 245, 126, 77, + 216, 113, 68, 191, 100, 59, 166, 85, 49, 142, 71, 38, 119, 57, 26, + 95, 41, 10, 67, 20, 0, 28, 0, 0, 244, 126, 55, 216, 112, 48, + 191, 99, 40, 166, 85, 31, 143, 71, 20, 119, 57, 6, 95, 42, 0, + 67, 20, 0, 28, 0, 0, 245, 126, 33, 217, 112, 26, 192, 99, 22, + 166, 84, 11, 142, 70, 0, 119, 57, 0, 95, 41, 0, 66, 20, 0, + 27, 0, 0, 241, 102, 167, 213, 90, 149, 189, 79, 133, 165, 66, 115, + 141, 54, 98, 119, 41, 81, 96, 25, 63, 69, 0, 38, 30, 0, 0, + 241, 102, 149, 213, 90, 133, 189, 79, 119, 165, 66, 103, 142, 55, 88, + 119, 41, 71, 96, 25, 53, 69, 0, 31, 28, 0, 0, 241, 102, 135, + 214, 90, 121, 190, 79, 108, 165, 66, 92, 141, 55, 78, 119, 42, 63, + 96, 26, 46, 69, 0, 24, 28, 0, 0, 241, 101, 120, 214, 90, 107, + 189, 79, 95, 165, 67, 83, 141, 54, 68, 118, 41, 54, 95, 27, 39, + 68, 0, 16, 27, 0, 0, 241, 102, 106, 213, 90, 93, 189, 78, 82, + 164, 67, 70, 141, 55, 58, 118, 42, 45, 94, 27, 29, 67, 2, 6, + 27, 0, 0, 242, 101, 90, 214, 89, 79, 190, 79, 69, 166, 67, 59, + 141, 55, 47, 118, 41, 35, 95, 27, 19, 67, 3, 0, 26, 0, 0, + 242, 102, 72, 213, 89, 63, 191, 79, 56, 164, 67, 45, 141, 55, 34, + 118, 42, 22, 94, 28, 6, 67, 3, 0, 26, 0, 0, 242, 100, 51, + 214, 89, 45, 190, 78, 38, 164, 67, 30, 141, 55, 18, 118, 42, 3, + 95, 28, 0, 66, 4, 0, 26, 0, 0, 243, 100, 33, 214, 90, 27, + 190, 78, 22, 165, 67, 13, 141, 55, 0, 118, 43, 0, 94, 29, 0, + 66, 5, 0, 26, 0, 0, 237, 69, 153, 211, 58, 135, 187, 51, 121, + 163, 41, 105, 141, 28, 90, 118, 15, 73, 96, 0, 56, 68, 0, 33, + 25, 0, 0, 239, 67, 137, 212, 60, 123, 189, 50, 110, 163, 41, 94, + 141, 29, 79, 118, 17, 65, 95, 0, 48, 69, 0, 26, 25, 0, 0, + 240, 69, 124, 211, 60, 111, 188, 50, 98, 163, 42, 85, 141, 31, 72, + 118, 18, 57, 94, 0, 41, 68, 0, 19, 25, 0, 0, 240, 70, 112, + 212, 61, 99, 188, 52, 87, 163, 41, 74, 140, 31, 62, 118, 20, 48, + 94, 2, 32, 68, 0, 11, 24, 0, 0, 239, 70, 98, 212, 62, 86, + 188, 53, 77, 164, 42, 64, 140, 32, 52, 118, 20, 40, 94, 3, 24, + 67, 0, 3, 23, 0, 0, 239, 71, 85, 212, 61, 74, 187, 53, 65, + 163, 44, 54, 140, 34, 43, 118, 22, 30, 95, 3, 14, 67, 0, 0, + 23, 0, 0, 239, 70, 67, 212, 62, 59, 188, 53, 51, 163, 45, 42, + 141, 34, 31, 117, 22, 17, 94, 5, 2, 66, 0, 0, 23, 0, 0, + 239, 71, 50, 213, 62, 43, 188, 54, 37, 164, 45, 28, 139, 34, 16, + 117, 22, 2, 94, 7, 0, 65, 0, 0, 23, 0, 0, 240, 71, 34, + 212, 63, 29, 189, 54, 24, 163, 46, 15, 139, 36, 2, 117, 25, 0, + 94, 8, 0, 66, 0, 0, 23, 0, 0, 237, 0, 140, 209, 0, 124, + 186, 0, 112, 162, 0, 97, 141, 0, 82, 118, 0, 67, 95, 0, 49, + 68, 0, 27, 20, 0, 0, 237, 0, 126, 210, 0, 113, 187, 0, 99, + 163, 0, 86, 139, 0, 72, 118, 0, 58, 95, 0, 42, 67, 0, 20, + 20, 0, 0, 237, 1, 114, 209, 1, 102, 187, 0, 90, 163, 0, 78, + 139, 0, 64, 118, 0, 50, 95, 0, 35, 67, 0, 13, 20, 0, 0, + 236, 16, 102, 209, 7, 91, 186, 0, 80, 162, 0, 68, 139, 0, 56, + 117, 0, 43, 94, 0, 27, 67, 0, 6, 20, 0, 0, 238, 15, 89, + 209, 13, 79, 186, 6, 69, 162, 0, 58, 139, 0, 47, 117, 0, 34, + 93, 0, 20, 66, 0, 2, 20, 0, 0, 237, 20, 78, 210, 12, 68, + 187, 4, 59, 163, 0, 49, 139, 0, 38, 116, 0, 26, 94, 0, 11, + 66, 0, 0, 20, 0, 0, 237, 25, 64, 210, 18, 56, 186, 11, 48, + 162, 4, 39, 138, 0, 27, 117, 0, 14, 93, 0, 0, 66, 0, 0, + 20, 0, 0, 238, 25, 48, 210, 22, 43, 186, 15, 35, 162, 8, 26, + 140, 0, 14, 117, 0, 0, 93, 0, 0, 65, 0, 0, 20, 0, 0, + 238, 28, 35, 210, 21, 30, 187, 15, 24, 162, 8, 16, 139, 1, 2, + 117, 0, 0, 93, 0, 0, 65, 0, 0, 22, 0, 0, 219, 242, 252, + 195, 214, 225, 172, 191, 201, 148, 165, 175, 127, 142, 150, 106, 119, 126, + 84, 95, 101, 58, 66, 72, 24, 27, 32, 222, 239, 226, 196, 213, 202, + 173, 189, 180, 150, 165, 158, 129, 141, 135, 107, 118, 113, 85, 94, 90, + 58, 66, 63, 21, 26, 24, 223, 237, 203, 198, 211, 182, 175, 188, 163, + 152, 164, 141, 129, 140, 121, 107, 117, 101, 85, 93, 80, 58, 64, 54, + 21, 26, 18, 226, 236, 179, 201, 210, 160, 177, 187, 143, 153, 162, 125, + 130, 139, 106, 108, 116, 89, 85, 92, 69, 58, 64, 45, 20, 25, 8, + 227, 234, 153, 201, 208, 139, 178, 185, 124, 154, 161, 107, 131, 138, 91, + 108, 115, 75, 85, 91, 58, 58, 63, 35, 17, 25, 0, 229, 233, 130, + 203, 207, 116, 178, 184, 104, 154, 160, 90, 131, 137, 76, 109, 114, 62, + 85, 90, 46, 58, 63, 25, 16, 24, 0, 230, 231, 100, 202, 205, 90, + 179, 183, 80, 154, 159, 69, 131, 136, 57, 109, 113, 46, 86, 90, 32, + 58, 63, 10, 14, 24, 0, 230, 230, 65, 204, 204, 58, 180, 182, 52, + 155, 157, 44, 132, 135, 35, 110, 113, 24, 86, 89, 9, 57, 62, 0, + 11, 24, 0, 232, 230, 19, 204, 204, 19, 180, 181, 17, 155, 157, 10, + 131, 134, 2, 109, 112, 0, 85, 89, 0, 57, 62, 0, 10, 23, 0, + 218, 216, 236, 194, 192, 211, 172, 171, 188, 149, 149, 164, 128, 127, 141, + 106, 106, 119, 84, 84, 94, 59, 57, 66, 25, 18, 26, 221, 214, 211, + 196, 191, 190, 174, 170, 170, 150, 148, 148, 128, 126, 127, 107, 105, 106, + 85, 83, 84, 59, 56, 58, 23, 17, 18, 222, 213, 190, 197, 189, 170, + 175, 169, 153, 151, 147, 133, 129, 126, 113, 108, 105, 94, 85, 82, 74, + 59, 56, 49, 22, 17, 11, 224, 211, 168, 199, 188, 151, 175, 168, 135, + 152, 146, 117, 129, 124, 99, 107, 103, 82, 84, 82, 64, 59, 55, 41, + 21, 17, 1, 224, 210, 145, 199, 187, 130, 176, 166, 117, 152, 145, 101, + 129, 123, 86, 107, 103, 70, 85, 81, 53, 58, 55, 31, 19, 17, 0, + 227, 208, 123, 200, 186, 110, 177, 165, 98, 153, 143, 84, 130, 122, 70, + 108, 102, 57, 85, 80, 41, 58, 54, 20, 18, 16, 0, 227, 208, 97, + 202, 185, 86, 177, 164, 77, 153, 142, 65, 130, 122, 54, 108, 101, 42, + 85, 80, 27, 58, 54, 7, 16, 16, 0, 228, 206, 66, 202, 184, 58, + 178, 163, 50, 154, 141, 42, 131, 121, 33, 109, 101, 21, 86, 79, 5, + 58, 54, 0, 13, 16, 0, 228, 206, 29, 202, 183, 25, 178, 163, 20, + 154, 141, 15, 131, 121, 5, 108, 100, 0, 85, 79, 0, 58, 53, 0, + 13, 16, 0, 217, 193, 221, 193, 172, 198, 172, 153, 178, 149, 133, 154, + 128, 114, 132, 107, 94, 111, 85, 74, 89, 59, 49, 61, 25, 8, 22, + 219, 191, 198, 195, 171, 178, 173, 153, 159, 149, 132, 139, 128, 113, 119, + 107, 94, 100, 85, 73, 79, 59, 48, 52, 25, 7, 14, 221, 191, 180, + 196, 170, 160, 174, 152, 144, 150, 132, 125, 129, 113, 107, 107, 93, 89, + 85, 73, 69, 59, 48, 45, 23, 7, 4, 222, 189, 159, 197, 169, 142, + 174, 151, 127, 151, 131, 110, 129, 112, 94, 108, 93, 78, 85, 72, 60, + 58, 47, 37, 22, 7, 0, 223, 188, 138, 197, 168, 123, 175, 150, 109, + 151, 130, 95, 130, 111, 81, 108, 92, 65, 85, 72, 49, 59, 47, 27, + 21, 7, 0, 224, 187, 118, 198, 167, 105, 176, 149, 93, 152, 129, 79, + 130, 110, 68, 108, 91, 54, 85, 71, 38, 59, 47, 17, 18, 7, 0, + 224, 187, 93, 199, 166, 83, 176, 148, 73, 152, 128, 62, 129, 109, 51, + 108, 90, 39, 85, 71, 25, 58, 46, 3, 16, 8, 0, 226, 186, 64, + 200, 165, 57, 177, 147, 50, 153, 127, 40, 130, 108, 31, 108, 90, 19, + 85, 70, 3, 58, 46, 0, 16, 8, 0, 227, 185, 35, 200, 165, 30, + 176, 146, 25, 152, 127, 18, 130, 108, 7, 108, 89, 0, 85, 70, 0, + 57, 46, 0, 14, 8, 0, 216, 169, 205, 192, 150, 184, 171, 134, 164, + 149, 116, 144, 128, 99, 124, 107, 81, 103, 85, 63, 81, 60, 39, 55, + 26, 0, 15, 217, 168, 186, 193, 150, 165, 172, 134, 149, 150, 116, 130, + 128, 99, 111, 107, 81, 92, 85, 62, 72, 59, 39, 47, 25, 0, 6, + 219, 168, 168, 194, 149, 150, 173, 133, 135, 150, 116, 117, 128, 98, 99, + 107, 80, 82, 86, 62, 63, 59, 38, 39, 24, 0, 0, 219, 166, 148, + 195, 149, 133, 173, 133, 119, 150, 115, 103, 128, 98, 88, 107, 80, 72, + 85, 61, 54, 59, 38, 32, 23, 0, 0, 220, 166, 129, 196, 148, 116, + 174, 132, 103, 151, 114, 89, 129, 97, 75, 107, 79, 60, 85, 61, 44, + 59, 38, 22, 21, 0, 0, 222, 164, 110, 197, 147, 99, 175, 131, 87, + 151, 113, 75, 129, 96, 63, 107, 79, 49, 85, 61, 33, 58, 38, 12, + 19, 0, 0, 222, 164, 88, 197, 146, 79, 174, 130, 69, 151, 113, 58, + 129, 95, 47, 107, 78, 35, 85, 60, 20, 58, 38, 0, 18, 0, 0, + 223, 164, 63, 198, 145, 55, 175, 129, 48, 151, 112, 39, 129, 95, 29, + 107, 78, 16, 85, 60, 1, 58, 38, 0, 17, 0, 0, 223, 163, 36, + 198, 145, 32, 174, 129, 26, 151, 111, 17, 129, 95, 7, 107, 78, 0, + 84, 60, 0, 57, 37, 0, 15, 0, 0, 215, 147, 192, 191, 130, 172, + 170, 116, 153, 148, 100, 133, 127, 85, 115, 107, 69, 96, 85, 51, 75, + 60, 28, 50, 25, 0, 8, 217, 146, 173, 192, 130, 154, 171, 115, 138, + 149, 100, 121, 128, 84, 103, 107, 68, 85, 85, 51, 66, 60, 28, 42, + 25, 0, 0, 217, 145, 157, 193, 129, 140, 173, 115, 125, 149, 100, 109, + 128, 84, 92, 107, 68, 76, 85, 51, 58, 59, 28, 35, 23, 0, 0, + 218, 145, 140, 193, 129, 125, 172, 114, 110, 149, 99, 96, 128, 83, 81, + 107, 67, 65, 84, 51, 49, 59, 29, 27, 22, 0, 0, 219, 144, 121, + 194, 128, 108, 172, 113, 96, 149, 98, 83, 128, 83, 69, 107, 68, 55, + 85, 50, 40, 59, 28, 18, 20, 0, 0, 220, 143, 104, 195, 128, 93, + 173, 114, 82, 150, 98, 69, 127, 82, 58, 107, 67, 45, 85, 50, 30, + 59, 28, 7, 19, 0, 0, 220, 143, 84, 195, 127, 74, 173, 113, 65, + 149, 97, 55, 128, 82, 44, 106, 67, 32, 84, 50, 16, 58, 28, 0, + 18, 0, 0, 221, 142, 62, 196, 126, 53, 173, 112, 46, 150, 97, 37, + 128, 82, 26, 107, 66, 14, 84, 50, 0, 58, 28, 0, 16, 0, 0, + 222, 142, 38, 196, 126, 34, 174, 112, 27, 150, 96, 17, 128, 82, 6, + 106, 66, 0, 84, 50, 0, 57, 29, 0, 16, 0, 0, 214, 123, 179, + 191, 110, 159, 169, 98, 143, 147, 84, 124, 126, 70, 106, 107, 55, 88, + 85, 39, 69, 60, 15, 45, 23, 0, 2, 216, 123, 161, 192, 110, 144, + 170, 98, 129, 148, 84, 112, 127, 70, 95, 107, 55, 79, 85, 39, 61, + 60, 15, 37, 20, 0, 0, 217, 122, 145, 192, 110, 130, 170, 97, 116, + 149, 84, 101, 127, 70, 85, 106, 55, 70, 85, 39, 53, 59, 16, 30, + 19, 0, 0, 217, 123, 131, 192, 109, 116, 171, 96, 103, 149, 83, 89, + 127, 70, 75, 106, 55, 60, 85, 40, 45, 59, 16, 23, 17, 0, 0, + 217, 122, 114, 193, 109, 101, 172, 96, 91, 149, 82, 77, 128, 69, 64, + 106, 55, 50, 84, 39, 35, 59, 17, 14, 17, 0, 0, 218, 122, 98, + 194, 108, 87, 171, 96, 77, 149, 82, 65, 127, 69, 52, 106, 55, 40, + 84, 40, 25, 59, 18, 3, 15, 0, 0, 219, 122, 80, 193, 108, 70, + 172, 95, 61, 149, 82, 51, 127, 69, 40, 106, 55, 28, 84, 39, 12, + 58, 17, 0, 13, 0, 0, 219, 121, 59, 194, 108, 52, 172, 96, 44, + 149, 82, 35, 127, 68, 24, 106, 55, 11, 84, 40, 0, 57, 18, 0, + 13, 0, 0, 219, 121, 40, 193, 108, 33, 172, 95, 26, 149, 81, 19, + 128, 68, 6, 106, 54, 0, 84, 39, 0, 57, 18, 0, 13, 0, 0, + 213, 99, 165, 189, 87, 148, 169, 76, 132, 147, 64, 115, 126, 52, 98, + 106, 39, 81, 85, 23, 63, 60, 0, 39, 16, 0, 0, 214, 98, 149, + 191, 87, 133, 170, 76, 119, 148, 65, 103, 127, 53, 88, 106, 39, 72, + 85, 24, 55, 60, 0, 32, 15, 0, 0, 215, 99, 136, 191, 87, 121, + 170, 77, 108, 148, 65, 93, 126, 53, 79, 106, 40, 64, 85, 24, 47, + 59, 0, 25, 14, 0, 0, 215, 99, 121, 192, 87, 108, 170, 77, 96, + 148, 65, 82, 126, 53, 69, 106, 40, 55, 85, 25, 39, 59, 0, 18, + 13, 0, 0, 216, 99, 106, 191, 87, 95, 170, 76, 83, 148, 65, 71, + 126, 53, 58, 106, 41, 45, 85, 26, 30, 59, 0, 8, 11, 0, 0, + 216, 98, 91, 192, 88, 82, 170, 77, 71, 148, 65, 60, 127, 53, 48, + 105, 41, 36, 83, 26, 21, 58, 1, 2, 11, 0, 0, 217, 99, 75, + 192, 87, 66, 170, 76, 57, 148, 65, 47, 126, 53, 36, 105, 41, 24, + 83, 26, 8, 57, 2, 0, 9, 0, 0, 217, 98, 57, 192, 87, 49, + 171, 77, 41, 147, 65, 32, 126, 53, 21, 105, 41, 8, 84, 27, 0, + 57, 3, 0, 9, 0, 0, 217, 98, 40, 193, 87, 34, 171, 76, 27, + 148, 65, 19, 126, 53, 6, 105, 41, 0, 83, 27, 0, 57, 4, 0, + 9, 0, 0, 211, 67, 152, 189, 58, 136, 168, 50, 122, 147, 39, 105, + 127, 28, 89, 106, 14, 74, 85, 0, 56, 59, 0, 33, 9, 0, 0, + 213, 68, 138, 190, 59, 123, 169, 51, 109, 148, 40, 95, 126, 30, 80, + 106, 16, 65, 85, 0, 48, 59, 0, 27, 9, 0, 0, 214, 69, 125, + 190, 59, 111, 168, 51, 99, 148, 41, 86, 126, 31, 72, 106, 18, 58, + 85, 0, 41, 59, 0, 20, 7, 0, 0, 215, 70, 112, 190, 61, 100, + 169, 52, 88, 147, 42, 76, 126, 32, 63, 106, 19, 49, 84, 1, 34, + 58, 0, 13, 7, 0, 0, 214, 70, 99, 190, 62, 88, 169, 53, 77, + 147, 43, 65, 125, 32, 53, 106, 20, 40, 84, 3, 26, 58, 0, 4, + 7, 0, 0, 214, 71, 86, 190, 61, 75, 169, 53, 65, 146, 43, 54, + 126, 33, 44, 105, 21, 31, 83, 4, 17, 57, 0, 0, 7, 0, 0, + 215, 71, 71, 191, 62, 62, 169, 53, 53, 147, 44, 44, 126, 34, 33, + 105, 22, 20, 83, 5, 4, 57, 0, 0, 7, 0, 0, 215, 71, 54, + 191, 62, 47, 169, 54, 39, 147, 44, 30, 126, 35, 20, 105, 23, 6, + 83, 6, 0, 56, 0, 0, 5, 0, 0, 215, 71, 41, 191, 63, 34, + 170, 54, 27, 147, 45, 17, 126, 35, 6, 105, 23, 0, 83, 8, 0, + 56, 0, 0, 5, 0, 0, 210, 13, 140, 189, 1, 125, 167, 0, 110, + 146, 0, 96, 126, 0, 81, 106, 0, 67, 85, 0, 51, 59, 0, 28, + 4, 0, 0, 212, 18, 126, 190, 7, 113, 168, 0, 100, 146, 0, 86, + 126, 0, 73, 106, 0, 59, 84, 0, 43, 59, 0, 22, 4, 0, 0, + 212, 21, 115, 190, 13, 103, 168, 3, 91, 146, 0, 78, 125, 0, 65, + 105, 0, 52, 84, 0, 36, 58, 0, 16, 4, 0, 0, 213, 24, 103, + 189, 19, 91, 168, 9, 82, 146, 0, 69, 125, 0, 57, 105, 0, 44, + 84, 0, 29, 58, 0, 7, 4, 0, 0, 213, 27, 92, 188, 21, 81, + 168, 14, 71, 146, 1, 59, 125, 0, 48, 105, 0, 36, 84, 0, 21, + 58, 0, 4, 4, 0, 0, 213, 30, 80, 189, 22, 69, 168, 17, 61, + 146, 5, 50, 125, 0, 39, 104, 0, 27, 83, 0, 12, 57, 0, 0, + 4, 0, 0, 214, 30, 67, 189, 25, 57, 168, 20, 50, 146, 9, 40, + 125, 0, 29, 104, 0, 17, 83, 0, 2, 56, 0, 0, 4, 0, 0, + 214, 32, 53, 189, 27, 44, 169, 20, 38, 146, 13, 28, 124, 2, 17, + 104, 0, 4, 83, 0, 0, 56, 0, 0, 4, 0, 0, 214, 33, 41, + 190, 27, 33, 168, 23, 27, 146, 13, 18, 125, 3, 5, 105, 0, 0, + 83, 0, 0, 56, 0, 0, 4, 0, 0, 185, 229, 250, 164, 204, 223, + 146, 182, 199, 127, 158, 174, 108, 136, 149, 89, 113, 125, 70, 90, 100, + 46, 62, 71, 10, 25, 33, 189, 227, 225, 168, 202, 201, 148, 181, 179, + 129, 157, 156, 109, 135, 134, 90, 113, 113, 70, 89, 90, 46, 62, 62, + 8, 24, 25, 192, 226, 202, 170, 202, 182, 151, 179, 162, 130, 156, 141, + 110, 133, 121, 91, 112, 101, 71, 89, 80, 46, 61, 54, 7, 24, 19, + 194, 224, 179, 173, 200, 160, 153, 178, 144, 132, 155, 125, 112, 133, 107, + 92, 111, 89, 71, 88, 69, 46, 61, 45, 6, 23, 10, 196, 223, 155, + 174, 198, 139, 154, 176, 124, 132, 153, 107, 113, 131, 91, 92, 110, 75, + 72, 87, 58, 47, 60, 37, 4, 23, 0, 198, 221, 131, 175, 197, 117, + 155, 175, 105, 133, 152, 91, 113, 130, 76, 92, 109, 63, 72, 86, 47, + 46, 60, 26, 3, 23, 0, 200, 220, 104, 176, 196, 94, 156, 175, 84, + 134, 151, 72, 113, 129, 59, 93, 108, 47, 72, 85, 33, 46, 59, 13, + 0, 23, 0, 201, 219, 73, 179, 195, 65, 157, 173, 57, 135, 150, 48, + 114, 129, 39, 94, 108, 28, 72, 85, 15, 47, 59, 0, 0, 22, 0, + 203, 219, 42, 178, 195, 37, 157, 173, 32, 135, 150, 26, 114, 128, 16, + 94, 107, 6, 73, 85, 0, 46, 58, 0, 0, 22, 0, 186, 205, 233, + 165, 183, 209, 148, 163, 187, 128, 142, 163, 109, 121, 140, 91, 101, 118, + 71, 80, 94, 48, 54, 66, 12, 15, 27, 189, 204, 211, 169, 182, 189, + 151, 163, 169, 131, 141, 147, 111, 121, 126, 92, 101, 105, 72, 79, 84, + 48, 54, 58, 11, 15, 19, 192, 202, 190, 171, 181, 170, 152, 161, 152, + 131, 141, 133, 112, 120, 113, 93, 100, 94, 72, 79, 74, 48, 53, 50, + 10, 15, 11, 195, 201, 169, 172, 179, 151, 153, 160, 135, 132, 139, 117, + 113, 119, 100, 93, 99, 82, 72, 78, 64, 48, 53, 41, 9, 14, 3, + 195, 200, 146, 174, 179, 131, 154, 159, 117, 133, 138, 101, 113, 118, 86, + 93, 98, 70, 73, 77, 53, 48, 52, 32, 8, 15, 0, 198, 199, 125, + 175, 177, 111, 155, 158, 100, 133, 137, 85, 113, 117, 71, 93, 97, 57, + 72, 77, 42, 47, 52, 22, 5, 14, 0, 199, 198, 101, 176, 177, 89, + 155, 157, 79, 134, 136, 68, 113, 116, 56, 94, 97, 44, 73, 76, 30, + 47, 52, 10, 2, 15, 0, 200, 197, 72, 178, 176, 63, 157, 156, 56, + 135, 136, 46, 114, 116, 37, 94, 96, 26, 73, 76, 11, 47, 51, 0, + 0, 14, 0, 201, 197, 45, 177, 175, 38, 156, 155, 31, 135, 135, 25, + 114, 115, 17, 94, 96, 5, 73, 75, 0, 46, 51, 0, 0, 14, 0, + 187, 183, 218, 167, 165, 197, 149, 147, 176, 129, 127, 153, 111, 109, 132, + 92, 90, 111, 73, 70, 89, 49, 46, 62, 15, 4, 22, 190, 183, 197, + 170, 164, 177, 151, 146, 159, 130, 127, 139, 112, 109, 119, 93, 90, 99, + 72, 70, 78, 49, 45, 53, 14, 4, 15, 192, 182, 179, 171, 163, 161, + 153, 145, 144, 132, 126, 125, 113, 108, 107, 93, 89, 88, 73, 70, 69, + 49, 45, 45, 13, 5, 6, 195, 181, 159, 172, 162, 142, 152, 145, 127, + 132, 125, 111, 113, 107, 94, 93, 88, 77, 73, 69, 59, 48, 45, 37, + 11, 5, 0, 195, 180, 139, 173, 161, 124, 153, 143, 110, 133, 125, 96, + 113, 106, 81, 94, 88, 66, 73, 68, 49, 49, 44, 28, 9, 6, 0, + 196, 179, 118, 174, 160, 106, 154, 142, 94, 133, 124, 81, 113, 105, 68, + 94, 87, 54, 73, 68, 39, 48, 44, 18, 5, 5, 0, 197, 178, 96, + 176, 159, 86, 155, 141, 75, 134, 123, 64, 114, 105, 53, 94, 87, 40, + 73, 68, 26, 48, 44, 5, 2, 6, 0, 199, 178, 70, 176, 158, 62, + 156, 141, 54, 134, 122, 44, 114, 104, 35, 94, 86, 23, 73, 67, 8, + 47, 44, 0, 2, 6, 0, 199, 177, 45, 178, 158, 40, 156, 140, 32, + 135, 122, 26, 114, 104, 16, 94, 86, 4, 73, 67, 0, 47, 44, 0, + 0, 7, 0, 188, 161, 204, 168, 144, 183, 149, 129, 164, 130, 112, 144, + 112, 95, 123, 93, 78, 103, 74, 60, 81, 50, 36, 56, 16, 0, 16, + 190, 160, 185, 170, 144, 165, 151, 128, 148, 132, 111, 130, 112, 95, 110, + 93, 78, 92, 74, 59, 72, 50, 36, 48, 16, 0, 8, 192, 160, 167, + 171, 143, 150, 153, 128, 134, 132, 111, 117, 112, 94, 100, 94, 77, 82, + 74, 59, 63, 50, 36, 40, 14, 0, 0, 193, 159, 149, 172, 143, 134, + 153, 127, 119, 133, 110, 103, 113, 94, 87, 93, 77, 72, 73, 59, 54, + 50, 36, 32, 12, 0, 0, 195, 159, 131, 173, 142, 117, 153, 127, 104, + 132, 110, 90, 113, 93, 76, 93, 76, 61, 74, 59, 45, 49, 36, 23, + 9, 0, 0, 196, 158, 113, 174, 141, 101, 155, 126, 89, 133, 109, 76, + 113, 93, 64, 94, 76, 51, 74, 58, 35, 49, 36, 14, 6, 0, 0, + 197, 157, 92, 174, 141, 80, 154, 125, 71, 134, 108, 60, 114, 92, 50, + 94, 75, 37, 73, 58, 22, 48, 36, 1, 5, 0, 0, 197, 157, 68, + 175, 140, 59, 155, 124, 51, 134, 108, 41, 113, 91, 32, 94, 75, 21, + 73, 57, 5, 48, 35, 0, 5, 0, 0, 198, 156, 46, 176, 140, 40, + 155, 124, 32, 134, 107, 24, 114, 91, 14, 94, 75, 2, 73, 57, 0, + 48, 36, 0, 3, 0, 0, 189, 140, 191, 168, 126, 172, 150, 112, 154, + 131, 97, 134, 112, 82, 115, 94, 66, 96, 74, 49, 75, 51, 25, 50, + 12, 0, 10, 191, 139, 173, 170, 125, 154, 152, 111, 138, 132, 96, 121, + 113, 81, 103, 94, 66, 85, 74, 48, 66, 50, 26, 42, 12, 0, 1, + 192, 139, 157, 171, 125, 140, 152, 111, 125, 132, 96, 109, 113, 81, 92, + 94, 65, 76, 74, 48, 58, 50, 26, 35, 9, 0, 0, 193, 139, 140, + 172, 124, 125, 153, 110, 112, 133, 95, 96, 113, 80, 82, 94, 65, 66, + 74, 49, 50, 50, 26, 28, 7, 0, 0, 194, 138, 123, 172, 123, 109, + 153, 110, 97, 133, 95, 84, 113, 80, 70, 94, 65, 56, 74, 48, 40, + 50, 26, 20, 6, 0, 0, 194, 138, 105, 173, 123, 94, 153, 109, 83, + 133, 94, 70, 112, 79, 59, 94, 64, 46, 74, 48, 31, 50, 26, 9, + 4, 0, 0, 196, 138, 87, 174, 122, 77, 153, 109, 67, 133, 93, 56, + 113, 79, 46, 94, 64, 34, 73, 48, 18, 49, 27, 0, 4, 0, 0, + 196, 137, 65, 174, 122, 57, 154, 108, 49, 133, 93, 39, 113, 79, 29, + 94, 64, 18, 74, 48, 3, 49, 27, 0, 2, 0, 0, 197, 137, 47, + 175, 122, 40, 155, 108, 32, 133, 93, 23, 114, 79, 14, 94, 64, 1, + 73, 48, 0, 48, 27, 0, 2, 0, 0, 189, 119, 177, 168, 106, 159, + 150, 94, 142, 131, 81, 124, 113, 67, 107, 94, 53, 89, 74, 37, 69, + 51, 11, 45, 6, 0, 3, 191, 119, 161, 170, 106, 144, 152, 94, 129, + 132, 81, 112, 113, 67, 96, 94, 53, 79, 74, 37, 61, 51, 13, 38, + 6, 0, 0, 192, 119, 146, 170, 106, 131, 152, 94, 117, 132, 80, 101, + 112, 67, 85, 94, 53, 70, 74, 37, 53, 50, 14, 31, 4, 0, 0, + 192, 119, 131, 171, 106, 117, 153, 94, 105, 132, 80, 89, 113, 67, 75, + 94, 54, 61, 74, 38, 45, 51, 14, 23, 3, 0, 0, 193, 118, 114, + 171, 106, 102, 153, 93, 90, 132, 80, 78, 113, 67, 65, 94, 53, 52, + 74, 37, 36, 50, 15, 16, 1, 0, 0, 194, 118, 99, 172, 105, 89, + 153, 93, 78, 132, 80, 66, 113, 67, 54, 94, 53, 42, 74, 38, 27, + 50, 16, 5, 1, 0, 0, 194, 118, 82, 173, 105, 72, 153, 93, 63, + 132, 79, 53, 113, 67, 42, 94, 53, 30, 74, 38, 15, 49, 16, 0, + 0, 0, 0, 195, 117, 63, 173, 105, 55, 154, 93, 47, 133, 79, 37, + 113, 66, 27, 94, 53, 15, 73, 38, 0, 48, 16, 0, 0, 0, 0, + 195, 117, 46, 173, 104, 39, 154, 92, 32, 133, 79, 22, 113, 66, 13, + 94, 53, 0, 73, 38, 0, 48, 17, 0, 0, 0, 0, 189, 96, 166, + 168, 85, 147, 150, 74, 132, 131, 62, 115, 113, 51, 99, 94, 38, 82, + 74, 21, 63, 51, 0, 40, 1, 0, 0, 190, 96, 150, 170, 85, 133, + 152, 75, 119, 132, 63, 104, 113, 51, 88, 94, 38, 72, 75, 22, 55, + 51, 0, 33, 1, 0, 0, 192, 96, 137, 170, 85, 121, 152, 74, 108, + 132, 64, 94, 113, 52, 79, 94, 39, 64, 74, 23, 48, 50, 0, 26, + 0, 0, 0, 192, 96, 122, 171, 86, 109, 152, 75, 96, 132, 63, 83, + 113, 52, 69, 94, 39, 56, 74, 24, 41, 50, 0, 19, 0, 0, 0, + 193, 96, 107, 171, 85, 96, 152, 75, 84, 132, 64, 72, 113, 52, 60, + 94, 39, 47, 74, 24, 32, 50, 1, 10, 0, 0, 0, 193, 96, 93, + 172, 85, 82, 152, 75, 72, 133, 63, 61, 113, 51, 49, 94, 39, 37, + 73, 25, 23, 49, 2, 2, 0, 0, 0, 194, 96, 78, 172, 85, 68, + 152, 75, 59, 132, 63, 49, 113, 52, 39, 94, 40, 26, 73, 25, 11, + 48, 3, 0, 0, 0, 0, 194, 96, 60, 173, 85, 52, 153, 75, 44, + 132, 64, 35, 112, 52, 25, 94, 40, 12, 73, 26, 0, 48, 4, 0, + 0, 0, 0, 195, 96, 46, 173, 85, 38, 154, 74, 31, 133, 63, 22, + 113, 52, 11, 93, 40, 0, 73, 26, 0, 47, 5, 0, 0, 0, 0, + 188, 67, 153, 168, 58, 137, 151, 49, 122, 131, 39, 106, 113, 28, 90, + 94, 13, 75, 75, 0, 57, 51, 0, 35, 0, 0, 0, 190, 68, 138, + 170, 59, 123, 152, 50, 110, 132, 41, 96, 113, 29, 80, 94, 16, 66, + 75, 0, 49, 50, 0, 27, 0, 0, 0, 191, 69, 126, 170, 59, 112, + 151, 52, 100, 132, 42, 86, 113, 30, 73, 95, 17, 58, 75, 0, 42, + 50, 0, 21, 0, 0, 0, 192, 70, 113, 170, 61, 100, 151, 52, 89, + 132, 42, 77, 113, 31, 64, 94, 19, 50, 74, 1, 35, 50, 0, 14, + 0, 0, 0, 192, 70, 100, 170, 62, 89, 151, 53, 77, 131, 43, 66, + 112, 32, 54, 94, 20, 42, 74, 2, 27, 49, 0, 5, 0, 0, 0, + 192, 71, 87, 171, 61, 77, 152, 53, 67, 131, 44, 57, 112, 33, 45, + 94, 21, 33, 74, 4, 19, 49, 0, 1, 0, 0, 0, 193, 71, 74, + 171, 62, 64, 152, 53, 55, 132, 44, 45, 113, 34, 34, 94, 22, 23, + 73, 5, 7, 48, 0, 0, 0, 0, 0, 193, 70, 58, 172, 62, 50, + 152, 54, 42, 132, 44, 32, 112, 35, 22, 93, 23, 10, 73, 6, 0, + 47, 0, 0, 0, 0, 0, 193, 70, 45, 172, 62, 38, 153, 54, 31, + 132, 44, 21, 112, 35, 9, 94, 23, 0, 73, 7, 0, 47, 0, 0, + 0, 0, 0, 189, 26, 141, 169, 15, 126, 150, 2, 112, 131, 0, 97, + 113, 0, 82, 94, 0, 67, 75, 0, 51, 50, 0, 29, 0, 0, 0, + 190, 28, 128, 170, 18, 114, 151, 8, 101, 132, 0, 88, 113, 0, 74, + 94, 0, 60, 75, 0, 44, 50, 0, 23, 0, 0, 0, 191, 30, 117, + 170, 23, 104, 152, 11, 92, 132, 1, 79, 113, 0, 67, 95, 0, 53, + 75, 0, 37, 50, 0, 17, 0, 0, 0, 191, 33, 105, 170, 26, 93, + 151, 18, 83, 132, 6, 70, 112, 0, 58, 94, 0, 45, 75, 0, 30, + 49, 0, 8, 0, 0, 0, 191, 34, 93, 170, 27, 82, 151, 20, 72, + 131, 8, 61, 112, 0, 49, 94, 0, 38, 74, 0, 23, 49, 0, 4, + 0, 0, 0, 191, 36, 82, 170, 29, 71, 151, 22, 63, 131, 11, 52, + 112, 0, 41, 93, 0, 29, 74, 0, 14, 48, 0, 1, 0, 0, 0, + 191, 38, 69, 170, 31, 60, 151, 24, 51, 131, 14, 41, 112, 1, 31, + 93, 0, 19, 73, 0, 3, 48, 0, 0, 0, 0, 0, 192, 37, 56, + 171, 31, 47, 152, 25, 40, 131, 17, 30, 112, 4, 19, 93, 0, 7, + 73, 0, 0, 47, 0, 0, 0, 0, 0, 192, 38, 45, 171, 33, 36, + 152, 26, 30, 131, 18, 21, 111, 7, 9, 93, 0, 0, 73, 0, 0, + 47, 0, 0, 0, 0, 0, 149, 218, 248, 133, 194, 222, 119, 173, 198, + 102, 151, 173, 86, 130, 148, 70, 108, 125, 53, 85, 100, 32, 59, 71, + 0, 22, 33, 154, 216, 223, 137, 193, 200, 122, 172, 178, 106, 150, 156, + 89, 128, 133, 73, 107, 112, 54, 85, 89, 31, 59, 63, 0, 22, 26, + 159, 215, 202, 141, 192, 181, 126, 171, 161, 108, 149, 141, 90, 128, 121, + 74, 107, 100, 55, 85, 80, 32, 58, 55, 0, 22, 19, 161, 213, 179, + 144, 190, 160, 126, 170, 143, 109, 148, 125, 92, 127, 107, 74, 106, 89, + 56, 84, 69, 32, 58, 46, 0, 21, 11, 163, 211, 156, 144, 189, 139, + 129, 168, 125, 110, 147, 108, 93, 126, 92, 75, 105, 76, 57, 83, 58, + 33, 58, 37, 0, 21, 1, 167, 211, 133, 147, 188, 120, 130, 167, 105, + 110, 145, 92, 93, 125, 78, 76, 104, 64, 58, 83, 48, 33, 57, 27, + 0, 21, 0, 169, 210, 108, 149, 187, 96, 131, 166, 86, 112, 144, 74, + 94, 124, 62, 77, 103, 49, 58, 82, 35, 33, 57, 15, 0, 21, 0, + 170, 209, 80, 151, 186, 71, 133, 165, 62, 114, 143, 52, 95, 123, 42, + 77, 103, 32, 58, 81, 18, 33, 56, 0, 0, 21, 0, 173, 208, 55, + 152, 186, 49, 134, 165, 41, 114, 143, 34, 95, 122, 25, 77, 102, 14, + 58, 81, 0, 33, 56, 0, 0, 21, 0, 154, 195, 232, 137, 174, 207, + 122, 156, 185, 105, 136, 163, 89, 116, 140, 73, 97, 117, 56, 76, 94, + 35, 51, 66, 0, 13, 28, 158, 194, 209, 141, 174, 187, 125, 155, 167, + 109, 135, 146, 91, 116, 125, 75, 96, 105, 57, 75, 83, 35, 50, 57, + 0, 12, 21, 161, 193, 189, 144, 173, 169, 128, 154, 151, 110, 134, 132, + 93, 115, 113, 77, 95, 94, 58, 75, 74, 35, 50, 50, 0, 12, 13, + 164, 192, 168, 145, 171, 151, 129, 153, 134, 111, 133, 117, 94, 114, 100, + 76, 95, 82, 58, 75, 64, 36, 50, 42, 0, 12, 5, 165, 191, 147, + 147, 170, 131, 130, 152, 117, 113, 132, 102, 95, 113, 86, 77, 94, 71, + 58, 74, 54, 35, 50, 33, 0, 13, 0, 167, 189, 126, 148, 169, 113, + 132, 151, 100, 113, 131, 86, 96, 112, 73, 77, 93, 59, 59, 73, 43, + 35, 49, 23, 0, 12, 0, 170, 189, 104, 150, 168, 91, 133, 150, 81, + 114, 130, 69, 96, 111, 57, 78, 92, 46, 59, 73, 31, 35, 49, 11, + 0, 13, 0, 171, 188, 78, 152, 168, 68, 134, 149, 60, 115, 130, 50, + 96, 111, 41, 78, 92, 29, 60, 73, 15, 35, 49, 0, 0, 12, 0, + 173, 187, 55, 153, 167, 47, 134, 149, 39, 115, 129, 33, 97, 110, 24, + 79, 92, 13, 60, 72, 0, 35, 48, 0, 0, 12, 0, 157, 175, 217, + 139, 157, 196, 125, 141, 175, 109, 122, 153, 92, 104, 132, 76, 86, 110, + 59, 67, 88, 37, 43, 61, 1, 1, 23, 161, 174, 196, 144, 156, 176, + 127, 140, 158, 110, 121, 137, 94, 104, 118, 77, 85, 98, 59, 67, 78, + 37, 43, 53, 0, 2, 16, 163, 174, 178, 146, 156, 160, 130, 139, 143, + 112, 121, 124, 95, 103, 106, 78, 85, 88, 60, 66, 69, 37, 42, 46, + 0, 2, 7, 166, 173, 159, 147, 154, 142, 130, 138, 127, 113, 120, 111, + 96, 103, 95, 78, 84, 77, 60, 66, 59, 37, 43, 37, 0, 2, 0, + 166, 172, 139, 148, 154, 125, 131, 137, 112, 113, 120, 96, 96, 102, 81, + 78, 84, 66, 60, 65, 50, 37, 42, 29, 0, 3, 0, 167, 171, 120, + 149, 153, 107, 133, 137, 95, 114, 118, 81, 97, 101, 69, 79, 84, 56, + 60, 65, 40, 37, 42, 19, 0, 3, 0, 170, 170, 99, 151, 152, 87, + 134, 136, 77, 115, 118, 66, 97, 101, 55, 79, 83, 42, 61, 65, 28, + 37, 42, 7, 0, 3, 0, 172, 170, 75, 152, 151, 65, 134, 135, 57, + 115, 117, 48, 97, 100, 38, 79, 83, 27, 61, 64, 12, 36, 42, 0, + 0, 3, 0, 172, 169, 55, 154, 151, 46, 135, 134, 40, 116, 116, 32, + 97, 99, 21, 80, 82, 10, 61, 64, 0, 36, 41, 0, 0, 3, 0, + 160, 154, 203, 143, 139, 182, 127, 124, 164, 111, 107, 143, 95, 91, 122, + 78, 75, 103, 60, 57, 81, 39, 33, 56, 1, 0, 18, 163, 154, 184, + 146, 138, 165, 130, 123, 148, 113, 107, 129, 96, 90, 110, 79, 74, 92, + 61, 56, 72, 39, 34, 48, 2, 0, 9, 165, 154, 167, 147, 137, 149, + 131, 122, 134, 114, 106, 117, 96, 90, 100, 79, 74, 82, 61, 56, 64, + 39, 33, 40, 2, 0, 1, 166, 153, 150, 149, 137, 133, 132, 122, 119, + 114, 106, 104, 97, 90, 88, 79, 74, 72, 61, 56, 55, 39, 34, 33, + 0, 0, 0, 168, 152, 132, 149, 136, 117, 132, 121, 104, 114, 105, 90, + 97, 89, 76, 79, 73, 62, 61, 56, 46, 38, 34, 25, 0, 0, 0, + 169, 151, 114, 150, 135, 101, 133, 121, 90, 114, 104, 77, 97, 89, 65, + 80, 73, 51, 61, 56, 36, 38, 34, 16, 0, 0, 0, 170, 150, 94, + 151, 135, 83, 134, 120, 73, 115, 104, 62, 98, 88, 51, 80, 72, 39, + 61, 56, 24, 38, 34, 3, 0, 0, 0, 172, 150, 72, 153, 134, 63, + 135, 119, 55, 115, 103, 45, 98, 88, 36, 80, 72, 24, 61, 55, 9, + 38, 34, 0, 0, 0, 0, 172, 150, 54, 153, 134, 47, 135, 119, 38, + 116, 103, 30, 98, 87, 21, 80, 72, 8, 62, 55, 0, 37, 34, 0, + 0, 0, 0, 162, 134, 190, 145, 120, 171, 129, 108, 153, 113, 93, 134, + 97, 78, 115, 80, 63, 96, 62, 46, 75, 41, 23, 51, 0, 0, 11, + 165, 134, 173, 147, 120, 154, 131, 107, 138, 114, 92, 120, 97, 78, 103, + 80, 63, 85, 62, 46, 66, 40, 23, 43, 0, 0, 2, 166, 134, 157, + 148, 120, 140, 132, 106, 125, 114, 92, 109, 97, 77, 93, 81, 63, 77, + 62, 46, 58, 40, 24, 36, 0, 0, 0, 168, 133, 140, 149, 119, 125, + 132, 106, 112, 115, 92, 97, 98, 77, 82, 81, 62, 67, 62, 46, 50, + 40, 24, 29, 0, 0, 0, 168, 133, 123, 150, 119, 110, 133, 106, 97, + 115, 91, 84, 98, 77, 70, 81, 62, 57, 62, 46, 41, 40, 24, 20, + 0, 0, 0, 169, 132, 107, 150, 118, 94, 133, 105, 84, 115, 91, 72, + 98, 76, 60, 80, 62, 47, 62, 46, 32, 39, 25, 11, 0, 0, 0, + 171, 132, 89, 152, 118, 79, 135, 105, 69, 115, 90, 58, 98, 76, 47, + 80, 62, 36, 62, 46, 21, 39, 25, 0, 0, 0, 0, 171, 132, 69, + 153, 117, 60, 135, 104, 52, 116, 90, 42, 98, 76, 33, 81, 61, 21, + 62, 46, 6, 38, 25, 0, 0, 0, 0, 172, 132, 54, 153, 118, 45, + 135, 104, 38, 116, 90, 28, 98, 76, 18, 81, 61, 6, 62, 46, 0, + 38, 25, 0, 0, 0, 0, 164, 115, 177, 146, 103, 159, 130, 91, 143, + 114, 78, 125, 97, 65, 107, 81, 51, 89, 63, 34, 69, 41, 9, 46, + 0, 0, 4, 166, 115, 161, 148, 103, 144, 132, 91, 129, 115, 78, 112, + 98, 65, 96, 81, 51, 79, 63, 35, 61, 41, 11, 38, 0, 0, 0, + 167, 115, 146, 150, 102, 131, 132, 91, 117, 115, 78, 101, 98, 65, 86, + 81, 51, 71, 63, 35, 54, 41, 12, 32, 0, 0, 0, 168, 114, 132, + 150, 103, 118, 133, 91, 105, 116, 78, 91, 98, 64, 76, 82, 51, 61, + 63, 36, 46, 41, 13, 24, 0, 0, 0, 169, 114, 116, 150, 102, 103, + 134, 90, 91, 116, 78, 79, 98, 65, 66, 81, 51, 53, 63, 36, 37, + 40, 14, 17, 0, 0, 0, 169, 114, 101, 151, 101, 89, 134, 90, 79, + 116, 77, 67, 98, 64, 56, 81, 51, 44, 63, 36, 29, 40, 15, 7, + 0, 0, 0, 170, 114, 85, 152, 101, 75, 135, 90, 65, 116, 77, 54, + 98, 64, 44, 81, 51, 32, 63, 36, 17, 39, 15, 0, 0, 0, 0, + 172, 113, 66, 152, 101, 58, 135, 89, 49, 116, 77, 40, 99, 64, 30, + 81, 51, 18, 62, 36, 3, 38, 16, 0, 0, 0, 0, 171, 113, 51, + 153, 101, 44, 136, 89, 36, 116, 77, 28, 99, 64, 18, 81, 51, 5, + 62, 36, 0, 38, 16, 0, 0, 0, 0, 165, 94, 166, 147, 82, 147, + 132, 72, 132, 115, 61, 115, 98, 49, 99, 82, 36, 82, 64, 19, 64, + 42, 0, 41, 0, 0, 0, 167, 93, 150, 150, 83, 134, 133, 73, 120, + 116, 62, 104, 99, 49, 88, 82, 36, 72, 64, 20, 55, 41, 0, 33, + 0, 0, 0, 169, 93, 137, 150, 83, 122, 134, 73, 109, 116, 61, 94, + 99, 50, 80, 82, 37, 65, 64, 21, 49, 41, 0, 27, 0, 0, 0, + 169, 94, 123, 150, 83, 110, 133, 73, 97, 116, 61, 83, 99, 50, 70, + 82, 38, 57, 63, 23, 42, 41, 0, 20, 0, 0, 0, 169, 94, 109, + 150, 84, 97, 134, 73, 85, 116, 62, 73, 99, 51, 61, 81, 38, 48, + 63, 23, 33, 41, 1, 11, 0, 0, 0, 170, 94, 96, 150, 83, 84, + 134, 73, 74, 116, 61, 62, 99, 50, 51, 82, 38, 39, 64, 23, 24, + 40, 3, 4, 0, 0, 0, 171, 93, 79, 152, 82, 70, 135, 73, 61, + 116, 62, 51, 98, 51, 40, 81, 38, 28, 63, 24, 14, 39, 4, 0, + 0, 0, 0, 171, 94, 64, 152, 83, 55, 135, 73, 47, 116, 62, 37, + 98, 50, 27, 81, 38, 15, 63, 24, 1, 39, 4, 0, 0, 0, 0, + 172, 93, 51, 153, 82, 42, 135, 73, 35, 117, 62, 26, 99, 51, 16, + 81, 39, 3, 63, 25, 0, 38, 5, 0, 0, 0, 0, 166, 68, 153, + 148, 59, 137, 133, 49, 121, 115, 39, 106, 99, 28, 91, 82, 13, 75, + 65, 0, 58, 42, 0, 36, 0, 0, 0, 168, 68, 139, 150, 59, 124, + 134, 50, 110, 116, 40, 96, 99, 30, 81, 82, 16, 66, 64, 0, 50, + 41, 0, 29, 0, 0, 0, 169, 69, 126, 150, 59, 113, 134, 51, 101, + 117, 42, 87, 100, 30, 73, 82, 17, 59, 65, 0, 43, 41, 0, 23, + 0, 0, 0, 169, 70, 115, 150, 61, 102, 134, 52, 89, 116, 42, 77, + 99, 32, 65, 82, 19, 52, 64, 0, 36, 41, 0, 15, 0, 0, 0, + 169, 70, 101, 150, 61, 90, 134, 52, 79, 116, 43, 68, 99, 32, 55, + 82, 21, 43, 64, 2, 28, 41, 0, 6, 0, 0, 0, 170, 70, 89, + 151, 62, 79, 134, 53, 69, 116, 44, 58, 99, 33, 46, 81, 21, 34, + 64, 3, 20, 41, 0, 2, 0, 0, 0, 170, 71, 76, 152, 62, 66, + 134, 53, 57, 116, 43, 46, 99, 33, 36, 82, 22, 24, 64, 5, 10, + 40, 0, 0, 0, 0, 0, 171, 70, 61, 152, 62, 52, 135, 53, 44, + 116, 44, 35, 99, 34, 24, 82, 22, 12, 63, 6, 0, 39, 0, 0, + 0, 0, 0, 171, 71, 49, 153, 62, 41, 135, 54, 33, 117, 45, 25, + 98, 34, 13, 81, 23, 0, 63, 7, 0, 39, 0, 0, 0, 0, 0, + 167, 33, 142, 149, 24, 127, 134, 10, 113, 116, 0, 97, 100, 0, 83, + 83, 0, 68, 65, 0, 52, 40, 0, 30, 0, 0, 0, 169, 33, 129, + 150, 26, 115, 134, 17, 102, 116, 3, 89, 100, 0, 75, 83, 0, 60, + 65, 0, 45, 40, 0, 24, 0, 0, 0, 169, 36, 118, 151, 27, 104, + 134, 19, 93, 116, 7, 80, 100, 0, 67, 83, 0, 54, 65, 0, 38, + 41, 0, 17, 0, 0, 0, 169, 39, 107, 150, 30, 94, 134, 22, 84, + 116, 11, 71, 99, 0, 59, 83, 0, 46, 64, 0, 31, 40, 0, 9, + 0, 0, 0, 169, 39, 95, 151, 31, 83, 134, 24, 73, 116, 15, 62, + 100, 1, 51, 83, 0, 38, 64, 0, 24, 40, 0, 5, 0, 0, 0, + 169, 41, 83, 151, 33, 73, 134, 26, 64, 117, 17, 54, 99, 4, 42, + 82, 0, 30, 64, 0, 16, 40, 0, 1, 0, 0, 0, 170, 42, 71, + 152, 34, 62, 134, 28, 53, 117, 19, 44, 99, 6, 33, 82, 0, 21, + 63, 0, 4, 39, 0, 0, 0, 0, 0, 171, 42, 59, 152, 35, 50, + 134, 29, 42, 117, 21, 32, 99, 9, 22, 82, 0, 9, 63, 0, 0, + 38, 0, 0, 0, 0, 0, 172, 42, 48, 152, 36, 40, 135, 29, 32, + 117, 21, 23, 99, 10, 12, 82, 0, 0, 63, 0, 0, 38, 0, 0, + 0, 0, 0, 107, 207, 246, 96, 185, 220, 86, 165, 196, 73, 144, 171, + 60, 123, 147, 46, 103, 125, 32, 82, 100, 9, 56, 71, 0, 20, 33, + 115, 206, 221, 104, 184, 198, 92, 164, 178, 78, 143, 154, 64, 123, 133, + 51, 102, 111, 34, 81, 89, 10, 56, 63, 0, 20, 27, 122, 204, 200, + 108, 183, 180, 95, 163, 161, 82, 142, 140, 68, 122, 120, 54, 102, 101, + 36, 81, 79, 11, 56, 55, 0, 20, 20, 125, 203, 179, 111, 181, 160, + 97, 162, 143, 85, 141, 124, 70, 121, 107, 55, 101, 89, 38, 80, 69, + 14, 55, 46, 0, 19, 10, 128, 202, 156, 113, 180, 140, 102, 161, 125, + 87, 140, 108, 71, 120, 92, 56, 100, 76, 39, 79, 59, 14, 55, 38, + 0, 20, 3, 132, 200, 135, 117, 179, 121, 103, 159, 106, 88, 139, 93, + 73, 119, 79, 57, 100, 65, 41, 79, 49, 15, 54, 28, 0, 19, 0, + 134, 200, 111, 119, 178, 98, 105, 158, 87, 89, 138, 76, 74, 118, 64, + 58, 99, 51, 41, 78, 37, 16, 54, 17, 0, 19, 0, 137, 199, 85, + 122, 177, 75, 108, 158, 66, 91, 137, 56, 75, 118, 46, 59, 98, 35, + 42, 78, 22, 16, 54, 3, 0, 19, 0, 140, 198, 62, 125, 177, 55, + 109, 158, 47, 92, 137, 40, 76, 117, 32, 59, 98, 21, 42, 78, 6, + 16, 54, 0, 0, 18, 0, 118, 186, 231, 106, 167, 206, 93, 149, 184, + 81, 130, 161, 67, 111, 139, 54, 92, 117, 39, 72, 93, 17, 48, 66, + 0, 10, 29, 123, 185, 207, 110, 166, 186, 98, 148, 167, 85, 129, 145, + 71, 111, 125, 56, 92, 104, 40, 72, 83, 18, 48, 57, 0, 10, 22, + 128, 184, 188, 113, 165, 168, 102, 147, 151, 88, 128, 131, 73, 110, 113, + 58, 91, 94, 42, 71, 74, 19, 48, 50, 0, 9, 15, 131, 183, 168, + 116, 164, 151, 104, 146, 134, 89, 127, 117, 73, 109, 100, 58, 90, 83, + 42, 71, 65, 20, 48, 42, 0, 9, 5, 134, 182, 148, 120, 163, 131, + 105, 145, 118, 90, 126, 102, 75, 108, 86, 59, 90, 72, 43, 71, 55, + 19, 47, 34, 0, 9, 0, 136, 181, 128, 122, 162, 115, 107, 144, 102, + 92, 125, 87, 76, 107, 74, 61, 89, 60, 44, 70, 45, 20, 47, 24, + 0, 8, 0, 139, 180, 106, 124, 161, 95, 109, 144, 83, 93, 124, 71, + 77, 107, 60, 61, 89, 47, 44, 70, 33, 20, 47, 13, 0, 8, 0, + 142, 179, 82, 125, 160, 72, 111, 143, 63, 94, 124, 54, 77, 106, 44, + 61, 88, 32, 44, 69, 18, 20, 46, 0, 0, 8, 0, 143, 179, 62, + 127, 160, 54, 111, 142, 47, 94, 124, 39, 78, 106, 29, 62, 88, 18, + 45, 69, 3, 20, 46, 0, 0, 8, 0, 124, 167, 216, 112, 150, 194, + 99, 134, 174, 87, 117, 153, 73, 100, 131, 58, 82, 110, 43, 64, 88, + 23, 40, 61, 0, 0, 24, 129, 166, 195, 116, 150, 175, 103, 134, 158, + 89, 116, 137, 75, 99, 118, 60, 82, 98, 44, 63, 78, 23, 40, 53, + 0, 0, 17, 132, 166, 177, 119, 149, 160, 106, 133, 143, 90, 115, 124, + 76, 99, 107, 61, 81, 88, 45, 63, 69, 24, 40, 46, 0, 0, 9, + 136, 166, 159, 121, 148, 143, 107, 132, 126, 92, 115, 111, 77, 98, 94, + 62, 81, 78, 46, 63, 60, 23, 40, 38, 0, 0, 0, 138, 164, 140, + 122, 147, 125, 108, 131, 111, 93, 114, 97, 79, 98, 82, 63, 80, 67, + 46, 62, 50, 24, 40, 29, 0, 0, 0, 139, 163, 122, 124, 146, 109, + 110, 131, 96, 94, 114, 83, 79, 97, 70, 63, 81, 57, 46, 62, 41, + 24, 40, 21, 0, 0, 0, 141, 163, 101, 126, 145, 90, 111, 130, 79, + 95, 113, 68, 79, 96, 56, 63, 80, 44, 47, 62, 30, 23, 40, 10, + 0, 0, 0, 144, 162, 79, 127, 145, 70, 112, 129, 60, 95, 112, 51, + 79, 96, 41, 64, 79, 30, 47, 61, 15, 23, 40, 0, 0, 0, 0, + 145, 162, 60, 129, 145, 52, 113, 129, 46, 96, 112, 37, 79, 95, 27, + 64, 79, 16, 47, 61, 1, 23, 39, 0, 0, 0, 0, 131, 147, 202, + 117, 133, 181, 105, 119, 162, 91, 103, 142, 77, 87, 122, 62, 71, 102, + 47, 54, 81, 26, 31, 56, 0, 0, 18, 135, 147, 183, 120, 132, 164, + 107, 118, 147, 93, 102, 128, 78, 87, 110, 63, 71, 92, 47, 54, 72, + 26, 31, 48, 0, 0, 10, 138, 147, 166, 123, 131, 149, 108, 118, 133, + 94, 102, 116, 79, 86, 100, 64, 71, 82, 48, 54, 64, 27, 31, 41, + 0, 0, 2, 139, 146, 149, 124, 131, 134, 111, 117, 119, 94, 101, 103, + 79, 86, 88, 64, 70, 72, 48, 53, 55, 27, 31, 33, 0, 0, 0, + 141, 146, 132, 125, 131, 117, 111, 117, 104, 95, 101, 91, 80, 86, 77, + 65, 70, 62, 48, 53, 46, 26, 31, 25, 0, 0, 0, 143, 145, 115, + 126, 130, 101, 112, 116, 90, 96, 100, 78, 80, 85, 65, 65, 70, 52, + 49, 53, 37, 27, 32, 17, 0, 0, 0, 144, 144, 96, 128, 129, 85, + 112, 115, 75, 97, 100, 64, 81, 85, 52, 65, 69, 40, 49, 53, 26, + 26, 31, 5, 0, 0, 0, 146, 144, 76, 129, 129, 67, 114, 115, 58, + 97, 99, 48, 82, 84, 38, 66, 69, 27, 49, 53, 12, 26, 32, 0, + 0, 0, 0, 146, 144, 59, 130, 128, 51, 114, 114, 43, 98, 99, 35, + 82, 84, 25, 66, 69, 13, 49, 53, 0, 26, 32, 0, 0, 0, 0, + 135, 129, 189, 122, 115, 170, 107, 103, 152, 94, 89, 133, 79, 74, 114, + 64, 60, 95, 49, 43, 75, 29, 20, 51, 0, 0, 12, 138, 129, 171, + 124, 115, 153, 110, 103, 138, 95, 89, 120, 81, 74, 103, 66, 60, 86, + 50, 44, 67, 28, 21, 43, 0, 0, 3, 140, 129, 156, 125, 115, 140, + 111, 103, 125, 96, 89, 109, 81, 74, 93, 67, 60, 76, 50, 44, 59, + 29, 22, 36, 0, 0, 0, 142, 128, 140, 127, 115, 125, 112, 102, 112, + 97, 88, 97, 82, 74, 83, 67, 60, 67, 50, 44, 51, 29, 22, 29, + 0, 0, 0, 142, 128, 124, 127, 114, 111, 113, 102, 98, 98, 88, 85, + 82, 74, 71, 66, 60, 58, 50, 44, 42, 29, 22, 21, 0, 0, 0, + 144, 127, 108, 128, 114, 96, 113, 101, 85, 98, 87, 73, 82, 74, 61, + 67, 60, 48, 50, 44, 33, 28, 23, 12, 0, 0, 0, 145, 127, 91, + 129, 114, 81, 115, 101, 71, 98, 87, 60, 82, 73, 48, 67, 59, 37, + 50, 44, 22, 29, 23, 1, 0, 0, 0, 147, 127, 73, 130, 113, 63, + 115, 101, 55, 98, 87, 45, 83, 73, 35, 67, 59, 24, 50, 44, 10, + 28, 24, 0, 0, 0, 0, 147, 127, 58, 131, 113, 49, 115, 100, 42, + 99, 86, 33, 83, 73, 23, 67, 59, 10, 50, 44, 0, 27, 24, 0, + 0, 0, 0, 138, 110, 177, 124, 99, 159, 110, 88, 142, 96, 75, 125, + 82, 62, 107, 66, 48, 89, 51, 33, 70, 30, 8, 46, 0, 0, 5, + 142, 111, 160, 127, 99, 144, 113, 88, 130, 98, 75, 112, 82, 62, 96, + 68, 49, 80, 51, 33, 61, 30, 10, 39, 0, 0, 0, 143, 111, 146, + 128, 99, 131, 114, 88, 118, 98, 75, 101, 83, 62, 86, 68, 49, 71, + 52, 33, 54, 30, 11, 32, 0, 0, 0, 144, 111, 132, 128, 99, 118, + 113, 88, 106, 99, 75, 91, 83, 62, 77, 68, 49, 62, 52, 34, 46, + 30, 12, 25, 0, 0, 0, 144, 111, 117, 129, 98, 104, 114, 87, 92, + 99, 75, 80, 83, 62, 67, 68, 49, 53, 51, 34, 38, 30, 13, 18, + 0, 0, 0, 145, 111, 103, 130, 98, 91, 114, 87, 80, 99, 75, 68, + 83, 63, 57, 68, 50, 45, 51, 34, 30, 30, 14, 8, 0, 0, 0, + 146, 110, 87, 131, 98, 76, 115, 87, 67, 99, 75, 56, 83, 62, 45, + 68, 49, 33, 52, 35, 19, 30, 15, 2, 0, 0, 0, 148, 110, 70, + 131, 98, 60, 116, 86, 52, 99, 74, 43, 84, 62, 33, 69, 49, 21, + 52, 35, 6, 29, 15, 0, 0, 0, 0, 148, 110, 56, 132, 97, 48, + 117, 87, 40, 100, 75, 31, 84, 62, 22, 68, 49, 9, 51, 35, 0, + 28, 15, 0, 0, 0, 0, 142, 91, 166, 126, 80, 148, 113, 71, 132, + 98, 59, 115, 83, 47, 99, 69, 34, 82, 53, 17, 64, 32, 0, 41, + 0, 0, 0, 143, 91, 150, 128, 81, 135, 114, 71, 120, 99, 60, 104, + 85, 48, 89, 69, 35, 73, 53, 19, 56, 32, 0, 34, 0, 0, 0, + 145, 91, 137, 129, 81, 122, 115, 71, 109, 100, 60, 94, 85, 48, 81, + 69, 35, 65, 53, 19, 49, 32, 0, 28, 0, 0, 0, 146, 92, 124, + 130, 81, 110, 115, 71, 98, 100, 60, 84, 85, 49, 71, 69, 36, 57, + 53, 21, 42, 32, 0, 21, 0, 0, 0, 147, 91, 110, 130, 81, 97, + 115, 71, 86, 100, 60, 74, 84, 49, 62, 69, 36, 48, 53, 22, 34, + 32, 0, 13, 0, 0, 0, 147, 92, 97, 130, 81, 85, 116, 72, 76, + 100, 60, 63, 85, 49, 52, 69, 37, 40, 53, 22, 26, 31, 1, 5, + 0, 0, 0, 148, 92, 82, 131, 81, 71, 116, 71, 62, 100, 60, 53, + 84, 49, 42, 69, 37, 30, 52, 23, 16, 31, 2, 0, 0, 0, 0, + 148, 91, 67, 132, 81, 57, 117, 71, 49, 100, 60, 39, 84, 49, 30, + 69, 37, 18, 52, 23, 2, 30, 2, 0, 0, 0, 0, 149, 91, 54, + 132, 81, 46, 118, 71, 39, 101, 60, 29, 85, 49, 19, 69, 37, 6, + 52, 23, 0, 29, 3, 0, 0, 0, 0, 143, 68, 153, 128, 59, 137, + 115, 49, 122, 99, 39, 107, 85, 28, 91, 70, 13, 75, 54, 0, 58, + 32, 0, 36, 0, 0, 0, 146, 68, 140, 131, 59, 125, 116, 51, 111, + 100, 40, 97, 85, 29, 82, 70, 15, 67, 54, 0, 50, 32, 0, 29, + 0, 0, 0, 147, 68, 127, 131, 59, 114, 117, 51, 102, 101, 41, 88, + 86, 30, 74, 70, 17, 60, 54, 0, 44, 32, 0, 23, 0, 0, 0, + 147, 70, 115, 131, 60, 103, 116, 52, 91, 100, 42, 78, 85, 32, 65, + 70, 19, 53, 54, 1, 38, 32, 0, 17, 0, 0, 0, 147, 70, 103, + 131, 61, 91, 117, 53, 81, 101, 43, 69, 86, 32, 57, 70, 20, 44, + 54, 2, 30, 32, 0, 7, 0, 0, 0, 148, 70, 91, 132, 61, 80, + 117, 52, 70, 101, 43, 59, 85, 33, 48, 70, 21, 36, 53, 4, 22, + 32, 0, 3, 0, 0, 0, 148, 70, 78, 132, 62, 68, 117, 53, 58, + 101, 43, 48, 85, 34, 38, 70, 22, 26, 53, 6, 12, 31, 0, 0, + 0, 0, 0, 149, 71, 64, 132, 62, 54, 118, 54, 46, 101, 44, 37, + 85, 34, 27, 69, 23, 15, 53, 7, 1, 30, 0, 0, 0, 0, 0, + 150, 70, 53, 134, 61, 44, 118, 54, 36, 101, 44, 28, 85, 35, 17, + 69, 23, 4, 52, 8, 0, 30, 0, 0, 0, 0, 0, 145, 38, 143, + 130, 29, 128, 117, 18, 114, 101, 3, 98, 87, 0, 84, 72, 0, 69, + 54, 0, 53, 30, 0, 31, 0, 0, 0, 147, 38, 130, 132, 30, 116, + 117, 22, 103, 101, 8, 89, 87, 0, 76, 72, 0, 62, 54, 0, 46, + 30, 0, 24, 0, 0, 0, 148, 40, 119, 132, 31, 105, 117, 23, 94, + 101, 13, 81, 87, 0, 68, 71, 0, 55, 54, 0, 39, 30, 0, 18, + 0, 0, 0, 148, 42, 108, 132, 34, 96, 117, 25, 85, 102, 15, 73, + 86, 2, 60, 71, 0, 47, 54, 0, 33, 30, 0, 11, 0, 0, 0, + 148, 43, 96, 133, 35, 85, 117, 28, 75, 102, 18, 64, 87, 5, 52, + 71, 0, 40, 54, 0, 25, 30, 0, 5, 0, 0, 0, 149, 44, 85, + 132, 36, 75, 118, 29, 66, 101, 20, 55, 86, 8, 44, 70, 0, 32, + 53, 0, 18, 29, 0, 2, 0, 0, 0, 149, 45, 74, 133, 37, 64, + 118, 31, 55, 102, 21, 45, 85, 10, 34, 70, 0, 22, 53, 0, 6, + 28, 0, 0, 0, 0, 0, 150, 46, 61, 133, 39, 52, 118, 31, 44, + 102, 23, 34, 85, 12, 24, 70, 0, 12, 52, 0, 0, 28, 0, 0, + 0, 0, 0, 150, 46, 51, 133, 40, 42, 119, 32, 35, 102, 24, 25, + 85, 13, 14, 70, 0, 1, 52, 0, 0, 27, 0, 0, 0, 0, 0, + 53, 198, 244, 49, 177, 218, 41, 158, 195, 32, 138, 171, 22, 118, 147, + 11, 98, 124, 0, 78, 100, 0, 54, 71, 0, 18, 34, 69, 196, 220, + 64, 175, 196, 54, 157, 176, 45, 137, 154, 32, 117, 133, 19, 98, 111, + 0, 78, 89, 0, 53, 63, 0, 17, 27, 80, 195, 198, 69, 175, 179, + 60, 156, 159, 50, 136, 139, 38, 116, 120, 25, 98, 101, 4, 77, 80, + 0, 53, 55, 0, 17, 21, 84, 193, 177, 75, 173, 159, 64, 155, 142, + 55, 135, 124, 41, 116, 107, 27, 97, 89, 9, 76, 70, 0, 53, 47, + 0, 17, 11, 89, 193, 157, 79, 172, 140, 70, 154, 125, 57, 134, 109, + 44, 115, 92, 32, 96, 76, 13, 76, 59, 0, 52, 39, 0, 16, 4, + 94, 191, 135, 85, 171, 121, 72, 152, 108, 60, 133, 94, 47, 114, 80, + 32, 95, 65, 15, 76, 49, 0, 52, 29, 0, 16, 0, 98, 190, 113, + 87, 170, 100, 76, 152, 89, 62, 132, 77, 49, 113, 65, 35, 95, 52, + 18, 75, 37, 0, 52, 18, 0, 15, 0, 103, 190, 89, 90, 169, 80, + 78, 151, 70, 64, 132, 60, 51, 113, 49, 37, 94, 38, 20, 75, 25, + 0, 52, 5, 0, 15, 0, 106, 189, 69, 93, 169, 61, 80, 151, 53, + 66, 131, 45, 52, 113, 36, 37, 94, 25, 19, 74, 11, 0, 51, 0, + 0, 15, 0, 76, 178, 229, 68, 159, 205, 61, 142, 183, 50, 124, 160, + 40, 106, 138, 28, 88, 116, 12, 69, 93, 0, 45, 66, 0, 5, 29, + 86, 177, 207, 78, 158, 184, 67, 142, 166, 56, 123, 145, 45, 106, 125, + 31, 88, 105, 16, 69, 83, 0, 45, 58, 0, 6, 22, 93, 176, 187, + 81, 158, 168, 71, 141, 150, 61, 123, 131, 47, 105, 113, 35, 87, 94, + 20, 68, 74, 0, 45, 51, 0, 5, 16, 98, 175, 168, 84, 157, 150, + 75, 140, 134, 63, 122, 117, 50, 104, 100, 37, 87, 83, 21, 68, 65, + 0, 45, 42, 0, 4, 7, 100, 174, 149, 89, 155, 132, 76, 139, 117, + 65, 121, 102, 53, 104, 87, 39, 86, 72, 23, 67, 55, 0, 45, 34, + 0, 3, 0, 103, 173, 130, 92, 155, 115, 80, 138, 102, 68, 120, 88, + 53, 103, 75, 40, 86, 61, 24, 67, 45, 0, 45, 25, 0, 3, 0, + 107, 172, 108, 95, 154, 96, 82, 137, 85, 70, 119, 73, 55, 102, 61, + 42, 85, 49, 25, 67, 34, 0, 45, 14, 0, 3, 0, 110, 172, 86, + 97, 153, 76, 85, 137, 67, 70, 119, 57, 56, 102, 46, 42, 84, 35, + 26, 66, 21, 0, 44, 1, 0, 3, 0, 112, 171, 67, 98, 153, 59, + 86, 137, 52, 71, 119, 44, 58, 102, 34, 44, 85, 22, 27, 66, 7, + 0, 44, 0, 0, 3, 0, 90, 160, 215, 81, 144, 193, 70, 129, 173, + 61, 112, 151, 49, 95, 131, 37, 79, 109, 22, 61, 87, 0, 38, 61, + 0, 0, 25, 96, 160, 194, 86, 143, 174, 75, 128, 157, 65, 112, 137, + 53, 95, 117, 40, 78, 98, 25, 60, 78, 0, 38, 53, 0, 0, 17, + 100, 159, 177, 89, 143, 159, 79, 128, 143, 67, 111, 124, 55, 95, 107, + 42, 78, 89, 27, 60, 70, 2, 38, 46, 0, 0, 9, 104, 158, 159, + 92, 142, 143, 81, 127, 127, 69, 110, 110, 56, 94, 94, 43, 78, 78, + 28, 60, 60, 2, 38, 38, 0, 0, 1, 107, 157, 140, 94, 141, 125, + 82, 126, 112, 71, 110, 97, 59, 94, 82, 45, 77, 67, 29, 59, 51, + 4, 37, 30, 0, 0, 0, 110, 156, 122, 97, 140, 109, 85, 125, 97, + 72, 109, 83, 58, 93, 71, 45, 77, 57, 29, 60, 42, 5, 38, 22, + 0, 0, 0, 111, 156, 103, 99, 139, 91, 87, 125, 81, 73, 108, 69, + 60, 92, 58, 46, 77, 45, 30, 59, 31, 5, 38, 12, 0, 0, 0, + 115, 156, 82, 101, 140, 73, 88, 124, 63, 74, 108, 53, 60, 92, 44, + 46, 76, 32, 31, 59, 18, 6, 37, 0, 0, 0, 0, 116, 155, 65, + 102, 139, 58, 89, 124, 49, 75, 108, 41, 61, 92, 32, 48, 76, 21, + 31, 59, 6, 5, 37, 0, 0, 0, 0, 100, 141, 201, 88, 127, 181, + 79, 114, 162, 69, 99, 142, 57, 83, 122, 44, 68, 102, 30, 51, 81, + 7, 28, 56, 0, 0, 19, 105, 141, 182, 94, 127, 163, 83, 114, 146, + 71, 98, 128, 59, 83, 110, 46, 68, 91, 31, 51, 72, 10, 28, 48, + 0, 0, 11, 108, 141, 166, 96, 127, 149, 85, 113, 133, 73, 98, 116, + 60, 83, 99, 46, 68, 82, 32, 51, 64, 11, 29, 41, 0, 0, 2, + 111, 141, 149, 98, 126, 134, 88, 112, 119, 74, 97, 103, 61, 83, 88, + 48, 67, 72, 33, 51, 56, 11, 29, 34, 0, 0, 0, 112, 140, 132, + 100, 125, 118, 89, 112, 105, 75, 97, 91, 62, 82, 77, 49, 68, 62, + 33, 51, 47, 12, 29, 26, 0, 0, 0, 115, 140, 116, 102, 125, 103, + 90, 111, 91, 76, 96, 78, 62, 82, 65, 49, 67, 52, 34, 51, 38, + 13, 29, 18, 0, 0, 0, 117, 139, 97, 103, 124, 87, 91, 111, 77, + 78, 96, 65, 63, 81, 54, 49, 67, 41, 34, 51, 27, 12, 29, 7, + 0, 0, 0, 119, 138, 78, 105, 124, 69, 92, 110, 60, 78, 95, 50, + 65, 81, 40, 50, 67, 29, 34, 51, 15, 13, 30, 0, 0, 0, 0, + 120, 138, 64, 106, 124, 54, 93, 110, 47, 78, 95, 38, 65, 81, 29, + 50, 66, 17, 34, 50, 2, 13, 29, 0, 0, 0, 0, 107, 124, 189, + 96, 111, 169, 85, 99, 152, 73, 85, 132, 61, 71, 114, 48, 57, 95, + 34, 41, 75, 14, 18, 51, 0, 0, 13, 111, 124, 171, 100, 111, 153, + 88, 99, 137, 75, 85, 120, 63, 72, 103, 50, 58, 85, 36, 41, 66, + 15, 19, 43, 0, 0, 4, 113, 124, 156, 101, 111, 139, 90, 99, 125, + 77, 85, 109, 64, 71, 93, 51, 57, 77, 36, 42, 59, 17, 20, 37, + 0, 0, 0, 115, 124, 140, 103, 111, 125, 90, 99, 112, 78, 85, 97, + 64, 71, 82, 52, 57, 67, 36, 42, 50, 16, 20, 30, 0, 0, 0, + 117, 123, 125, 104, 110, 111, 92, 98, 99, 79, 85, 86, 65, 71, 72, + 51, 58, 59, 37, 42, 43, 17, 21, 22, 0, 0, 0, 118, 123, 110, + 105, 110, 97, 93, 98, 86, 78, 84, 74, 66, 71, 62, 52, 57, 49, + 37, 42, 34, 17, 22, 14, 0, 0, 0, 120, 123, 93, 106, 109, 82, + 94, 97, 72, 80, 84, 61, 66, 71, 50, 52, 57, 38, 37, 42, 24, + 17, 22, 2, 0, 0, 0, 121, 122, 75, 108, 109, 66, 95, 97, 58, + 80, 84, 48, 66, 71, 37, 52, 57, 26, 37, 42, 12, 16, 22, 0, + 0, 0, 0, 122, 123, 62, 108, 109, 52, 95, 97, 45, 81, 84, 36, + 67, 70, 26, 52, 57, 14, 37, 42, 0, 15, 22, 0, 0, 0, 0, + 113, 107, 177, 102, 96, 159, 89, 85, 141, 78, 72, 124, 65, 60, 107, + 52, 46, 89, 37, 30, 70, 18, 5, 46, 0, 0, 6, 116, 107, 160, + 104, 96, 144, 92, 85, 129, 80, 72, 112, 67, 60, 96, 53, 47, 80, + 38, 31, 62, 19, 7, 39, 0, 0, 0, 118, 107, 147, 105, 96, 131, + 93, 85, 118, 80, 72, 101, 67, 60, 87, 54, 47, 71, 39, 31, 54, + 19, 8, 32, 0, 0, 0, 119, 107, 132, 106, 96, 118, 94, 85, 106, + 81, 73, 91, 67, 60, 77, 54, 47, 63, 39, 32, 47, 20, 9, 25, + 0, 0, 0, 119, 107, 118, 106, 95, 105, 94, 85, 93, 81, 72, 80, + 68, 60, 68, 54, 47, 54, 39, 32, 39, 20, 11, 18, 0, 0, 0, + 121, 107, 104, 107, 96, 92, 95, 84, 80, 81, 72, 69, 68, 61, 58, + 54, 48, 46, 39, 33, 31, 20, 12, 9, 0, 0, 0, 123, 107, 88, + 108, 95, 77, 96, 84, 68, 82, 72, 57, 68, 60, 46, 54, 47, 35, + 39, 33, 20, 19, 13, 2, 0, 0, 0, 123, 106, 72, 110, 95, 63, + 96, 84, 54, 82, 72, 45, 69, 60, 35, 55, 48, 23, 39, 33, 9, + 18, 14, 0, 0, 0, 0, 125, 106, 60, 110, 94, 50, 98, 84, 42, + 83, 72, 34, 69, 60, 25, 55, 48, 12, 39, 33, 0, 17, 13, 0, + 0, 0, 0, 118, 89, 165, 105, 79, 148, 93, 69, 132, 81, 57, 115, + 68, 45, 99, 55, 32, 82, 41, 15, 64, 21, 0, 41, 0, 0, 0, + 120, 89, 150, 107, 79, 135, 96, 69, 121, 82, 58, 105, 70, 46, 89, + 56, 34, 73, 41, 17, 56, 21, 0, 34, 0, 0, 0, 121, 89, 137, + 108, 79, 123, 96, 69, 109, 82, 58, 95, 70, 47, 81, 56, 34, 66, + 41, 18, 49, 21, 0, 28, 0, 0, 0, 122, 90, 124, 109, 79, 110, + 96, 69, 99, 83, 58, 85, 70, 47, 72, 56, 35, 58, 41, 19, 42, + 21, 0, 22, 0, 0, 0, 123, 90, 111, 110, 79, 98, 97, 69, 87, + 83, 59, 75, 70, 47, 63, 56, 35, 50, 41, 20, 35, 21, 0, 14, + 0, 0, 0, 123, 90, 98, 110, 79, 87, 97, 70, 76, 84, 58, 64, + 70, 48, 53, 56, 36, 41, 40, 21, 26, 21, 0, 5, 0, 0, 0, + 125, 89, 84, 111, 79, 73, 97, 69, 64, 84, 59, 54, 70, 48, 43, + 56, 36, 31, 40, 22, 17, 20, 1, 1, 0, 0, 0, 125, 89, 69, + 112, 79, 60, 98, 70, 51, 84, 59, 42, 70, 48, 32, 56, 36, 20, + 41, 22, 5, 19, 2, 0, 0, 0, 0, 126, 89, 57, 112, 79, 49, + 99, 70, 41, 84, 59, 32, 70, 48, 22, 56, 36, 10, 40, 22, 0, + 18, 2, 0, 0, 0, 0, 121, 67, 154, 108, 58, 138, 97, 50, 124, + 84, 39, 107, 71, 28, 92, 58, 12, 76, 43, 0, 59, 20, 0, 37, + 0, 0, 0, 124, 68, 140, 111, 59, 126, 98, 50, 112, 84, 40, 98, + 71, 29, 83, 58, 15, 67, 42, 0, 51, 20, 0, 30, 0, 0, 0, + 124, 68, 129, 111, 59, 114, 99, 51, 102, 86, 41, 88, 71, 30, 75, + 58, 17, 60, 42, 0, 45, 20, 0, 24, 0, 0, 0, 125, 70, 116, + 111, 60, 103, 99, 51, 92, 85, 41, 79, 71, 31, 66, 58, 19, 53, + 42, 3, 38, 20, 0, 17, 0, 0, 0, 125, 70, 104, 111, 61, 93, + 99, 52, 81, 85, 43, 69, 72, 32, 58, 58, 20, 45, 42, 4, 31, + 20, 0, 8, 0, 0, 0, 126, 70, 92, 111, 61, 81, 99, 52, 71, + 85, 42, 60, 71, 33, 49, 57, 21, 37, 42, 6, 23, 20, 0, 3, + 0, 0, 0, 126, 70, 79, 112, 61, 70, 99, 53, 60, 85, 43, 50, + 71, 33, 39, 57, 22, 28, 41, 7, 13, 19, 0, 0, 0, 0, 0, + 127, 71, 66, 113, 62, 56, 100, 53, 48, 86, 44, 39, 71, 34, 29, + 57, 23, 18, 41, 8, 2, 18, 0, 0, 0, 0, 0, 128, 70, 55, + 114, 62, 46, 100, 54, 39, 86, 44, 30, 71, 34, 20, 57, 23, 7, + 41, 9, 0, 18, 0, 0, 0, 0, 0, 124, 41, 145, 111, 32, 128, + 99, 23, 114, 86, 10, 100, 73, 0, 85, 60, 0, 71, 43, 0, 54, + 17, 0, 32, 0, 0, 0, 126, 42, 131, 113, 33, 117, 100, 25, 104, + 86, 14, 90, 73, 0, 77, 60, 0, 63, 44, 0, 47, 18, 0, 25, + 0, 0, 0, 127, 43, 120, 113, 34, 106, 101, 26, 95, 86, 17, 82, + 73, 2, 69, 59, 0, 56, 43, 0, 41, 18, 0, 19, 0, 0, 0, + 127, 45, 109, 113, 37, 97, 101, 28, 85, 86, 19, 74, 73, 5, 61, + 59, 0, 48, 43, 0, 34, 19, 0, 11, 0, 0, 0, 127, 46, 98, + 114, 38, 86, 100, 30, 76, 87, 21, 65, 73, 9, 54, 59, 0, 41, + 43, 0, 26, 18, 0, 5, 0, 0, 0, 127, 47, 87, 113, 39, 76, + 101, 31, 67, 86, 22, 56, 72, 11, 45, 59, 0, 33, 43, 0, 19, + 18, 0, 2, 0, 0, 0, 128, 48, 75, 114, 39, 65, 101, 33, 56, + 86, 23, 46, 72, 12, 36, 58, 0, 24, 42, 0, 9, 17, 0, 0, + 0, 0, 0, 129, 48, 63, 114, 41, 54, 102, 33, 46, 87, 24, 36, + 72, 14, 26, 58, 1, 14, 42, 0, 2, 16, 0, 0, 0, 0, 0, + 128, 48, 53, 114, 41, 44, 102, 34, 37, 87, 25, 27, 72, 15, 17, + 58, 1, 3, 41, 0, 0, 15, 0, 0, 0, 0, 0, 0, 189, 242, + 0, 169, 217, 0, 151, 194, 0, 132, 170, 0, 113, 147, 0, 94, 123, + 0, 74, 99, 0, 51, 71, 0, 15, 34, 1, 187, 219, 1, 167, 195, + 0, 150, 175, 0, 131, 153, 0, 113, 132, 0, 94, 111, 0, 74, 89, + 0, 50, 63, 0, 13, 28, 1, 186, 198, 1, 167, 178, 0, 149, 158, + 0, 130, 139, 0, 111, 119, 0, 93, 100, 0, 74, 80, 0, 50, 55, + 0, 13, 22, 1, 185, 176, 1, 165, 159, 1, 148, 142, 0, 129, 123, + 0, 111, 106, 0, 93, 89, 0, 73, 70, 0, 50, 47, 0, 13, 13, + 1, 184, 157, 1, 164, 141, 1, 147, 125, 0, 128, 110, 0, 110, 93, + 0, 92, 77, 0, 73, 60, 0, 50, 39, 0, 12, 5, 25, 182, 137, + 25, 163, 122, 17, 146, 109, 0, 128, 96, 0, 110, 81, 0, 92, 66, + 0, 73, 51, 0, 50, 30, 0, 10, 0, 42, 181, 114, 35, 163, 102, + 30, 145, 91, 14, 127, 80, 0, 109, 67, 0, 91, 53, 0, 72, 39, + 0, 50, 19, 0, 10, 0, 52, 181, 92, 43, 162, 83, 32, 145, 73, + 19, 126, 63, 0, 108, 52, 0, 90, 40, 0, 72, 27, 0, 50, 7, + 0, 10, 0, 57, 181, 74, 48, 162, 66, 37, 144, 57, 24, 126, 49, + 7, 108, 40, 0, 90, 29, 0, 72, 15, 0, 49, 0, 0, 10, 0, + 1, 170, 227, 1, 152, 203, 0, 136, 182, 0, 119, 159, 0, 101, 137, + 0, 84, 115, 0, 65, 92, 0, 43, 66, 0, 1, 29, 1, 169, 206, + 1, 151, 184, 1, 136, 165, 0, 118, 144, 0, 102, 125, 0, 84, 105, + 0, 65, 83, 0, 43, 58, 0, 0, 22, 29, 168, 186, 21, 151, 167, + 14, 135, 150, 4, 118, 131, 0, 101, 112, 0, 83, 94, 0, 65, 75, + 0, 43, 51, 0, 0, 16, 41, 167, 167, 33, 150, 150, 31, 134, 134, + 19, 117, 117, 4, 100, 100, 0, 83, 83, 0, 65, 65, 0, 42, 43, + 0, 0, 8, 48, 167, 149, 41, 149, 133, 33, 133, 118, 25, 116, 103, + 13, 99, 88, 0, 83, 73, 0, 65, 56, 0, 42, 35, 0, 0, 0, + 58, 165, 130, 49, 148, 115, 42, 132, 103, 31, 115, 89, 18, 99, 75, + 0, 82, 61, 0, 64, 46, 0, 42, 26, 0, 0, 0, 62, 164, 110, + 55, 147, 97, 45, 132, 87, 35, 115, 75, 22, 98, 63, 5, 82, 50, + 0, 64, 36, 0, 42, 16, 0, 0, 0, 69, 164, 89, 60, 147, 78, + 50, 131, 70, 37, 114, 59, 26, 98, 49, 10, 81, 37, 0, 64, 24, + 0, 42, 4, 0, 0, 0, 71, 164, 71, 63, 147, 63, 53, 131, 55, + 40, 114, 47, 28, 98, 38, 13, 81, 26, 0, 64, 12, 0, 42, 0, + 0, 0, 0, 28, 153, 214, 24, 138, 193, 23, 123, 171, 16, 107, 150, + 0, 91, 130, 0, 75, 109, 0, 58, 87, 0, 35, 61, 0, 0, 25, + 48, 153, 194, 41, 138, 174, 34, 123, 156, 27, 107, 136, 16, 91, 117, + 1, 75, 98, 0, 57, 78, 0, 35, 53, 0, 0, 17, 55, 153, 177, + 47, 137, 158, 42, 122, 142, 33, 107, 124, 22, 91, 106, 6, 75, 88, + 0, 57, 70, 0, 35, 46, 0, 0, 9, 61, 152, 158, 53, 136, 143, + 45, 122, 127, 36, 106, 111, 24, 90, 94, 10, 74, 78, 0, 57, 61, + 0, 35, 39, 0, 0, 2, 67, 151, 141, 59, 135, 126, 49, 121, 112, + 39, 105, 98, 29, 90, 83, 14, 74, 68, 0, 57, 52, 0, 35, 31, + 0, 0, 0, 71, 150, 123, 62, 135, 110, 54, 120, 98, 42, 105, 84, + 31, 89, 71, 16, 74, 58, 0, 57, 43, 0, 35, 22, 0, 0, 0, + 74, 150, 105, 64, 134, 92, 55, 120, 83, 45, 104, 71, 34, 89, 59, + 20, 73, 47, 0, 57, 32, 0, 35, 13, 0, 0, 0, 78, 149, 84, + 69, 134, 75, 59, 120, 66, 47, 103, 56, 34, 88, 46, 22, 73, 34, + 1, 57, 20, 0, 35, 1, 0, 0, 0, 80, 149, 69, 70, 133, 61, + 60, 119, 53, 49, 103, 44, 36, 88, 35, 23, 73, 24, 2, 56, 10, + 0, 35, 0, 0, 0, 0, 58, 136, 200, 50, 122, 180, 45, 109, 162, + 38, 94, 141, 27, 80, 121, 15, 65, 102, 0, 48, 81, 0, 26, 56, + 0, 0, 19, 66, 136, 182, 59, 122, 163, 52, 109, 146, 42, 94, 128, + 32, 80, 109, 20, 65, 91, 2, 48, 72, 0, 26, 49, 0, 0, 11, + 70, 136, 165, 62, 122, 149, 55, 108, 133, 46, 94, 116, 35, 80, 99, + 21, 65, 82, 4, 49, 64, 0, 26, 41, 0, 0, 3, 76, 135, 149, + 66, 121, 133, 58, 108, 119, 48, 94, 103, 36, 79, 88, 23, 65, 73, + 7, 49, 56, 0, 27, 34, 0, 0, 0, 78, 135, 133, 69, 120, 118, + 60, 107, 106, 50, 93, 92, 39, 79, 77, 26, 65, 63, 8, 49, 47, + 0, 27, 26, 0, 0, 0, 82, 134, 117, 71, 120, 104, 62, 107, 92, + 51, 93, 79, 39, 78, 66, 27, 64, 53, 10, 48, 39, 0, 27, 18, + 0, 0, 0, 84, 134, 99, 73, 119, 87, 64, 106, 77, 53, 92, 66, + 42, 78, 55, 28, 64, 42, 11, 48, 29, 0, 28, 9, 0, 0, 0, + 87, 133, 81, 76, 119, 72, 66, 106, 62, 55, 92, 52, 43, 78, 42, + 29, 64, 31, 12, 48, 17, 0, 28, 0, 0, 0, 0, 88, 134, 67, + 77, 119, 58, 68, 106, 51, 56, 92, 42, 44, 78, 32, 30, 64, 20, + 12, 48, 6, 0, 28, 0, 0, 0, 0, 73, 120, 189, 64, 107, 168, + 57, 96, 151, 47, 82, 133, 38, 69, 114, 26, 55, 95, 11, 39, 75, + 0, 16, 51, 0, 0, 14, 78, 120, 171, 69, 107, 153, 62, 95, 137, + 51, 82, 119, 40, 69, 102, 29, 55, 85, 15, 39, 66, 0, 17, 44, + 0, 0, 4, 81, 120, 156, 71, 107, 140, 64, 95, 125, 53, 82, 109, + 42, 69, 93, 31, 55, 77, 16, 39, 59, 0, 18, 37, 0, 0, 0, + 85, 120, 141, 74, 107, 126, 65, 95, 112, 54, 82, 97, 43, 69, 82, + 32, 55, 67, 17, 39, 51, 0, 19, 30, 0, 0, 0, 86, 119, 126, + 76, 106, 112, 66, 95, 100, 56, 81, 85, 45, 69, 72, 33, 55, 59, + 18, 40, 43, 0, 19, 22, 0, 0, 0, 89, 119, 110, 78, 106, 98, + 69, 94, 87, 56, 81, 75, 46, 68, 62, 33, 55, 49, 18, 40, 35, + 0, 20, 15, 0, 0, 0, 89, 119, 95, 80, 106, 83, 70, 94, 73, + 58, 81, 63, 46, 68, 51, 34, 55, 39, 19, 40, 25, 0, 20, 4, + 0, 0, 0, 92, 118, 78, 82, 106, 68, 70, 93, 59, 59, 81, 49, + 47, 68, 39, 34, 55, 28, 19, 40, 14, 0, 20, 0, 0, 0, 0, + 93, 118, 65, 82, 105, 55, 72, 93, 48, 60, 81, 39, 47, 68, 29, + 34, 55, 18, 20, 40, 2, 0, 20, 0, 0, 0, 0, 83, 104, 177, + 74, 93, 159, 65, 82, 142, 56, 70, 124, 45, 57, 106, 33, 44, 89, + 20, 28, 70, 1, 4, 46, 0, 0, 8, 86, 104, 161, 78, 93, 145, + 68, 82, 128, 58, 70, 112, 48, 58, 96, 35, 45, 80, 21, 29, 62, + 1, 6, 40, 0, 0, 0, 89, 104, 147, 79, 93, 131, 69, 82, 118, + 59, 70, 102, 47, 58, 87, 36, 45, 72, 23, 29, 55, 3, 7, 33, + 0, 0, 0, 90, 104, 132, 80, 93, 119, 71, 82, 106, 60, 70, 91, + 48, 58, 77, 37, 45, 62, 23, 30, 47, 4, 7, 26, 0, 0, 0, + 92, 104, 118, 82, 93, 105, 72, 82, 93, 61, 69, 80, 50, 58, 68, + 37, 45, 55, 23, 30, 39, 4, 8, 18, 0, 0, 0, 94, 104, 105, + 82, 92, 93, 72, 82, 82, 61, 70, 70, 50, 58, 58, 38, 46, 46, + 23, 31, 31, 6, 10, 11, 0, 0, 0, 95, 104, 90, 84, 92, 79, + 74, 82, 70, 62, 70, 58, 50, 58, 48, 37, 46, 36, 23, 31, 22, + 4, 11, 3, 0, 0, 0, 96, 103, 74, 85, 92, 65, 75, 81, 56, + 63, 70, 47, 50, 58, 37, 38, 46, 25, 24, 31, 11, 3, 11, 0, + 0, 0, 0, 97, 103, 62, 86, 92, 53, 76, 81, 45, 63, 69, 36, + 51, 58, 27, 38, 46, 15, 23, 31, 0, 3, 11, 0, 0, 0, 0, + 90, 87, 165, 81, 77, 148, 72, 67, 132, 62, 55, 116, 50, 44, 99, + 39, 31, 82, 25, 14, 64, 1, 0, 42, 0, 0, 1, 93, 87, 150, + 83, 77, 135, 74, 67, 121, 63, 56, 105, 52, 45, 90, 40, 32, 74, + 25, 16, 57, 3, 0, 35, 0, 0, 0, 95, 87, 138, 85, 77, 123, + 75, 67, 109, 63, 57, 95, 53, 45, 81, 41, 33, 66, 26, 17, 50, + 4, 0, 28, 0, 0, 0, 95, 88, 124, 85, 77, 111, 75, 67, 99, + 63, 57, 86, 53, 45, 72, 41, 33, 58, 26, 18, 43, 5, 1, 22, + 0, 0, 0, 97, 88, 112, 87, 77, 100, 76, 68, 88, 64, 57, 76, + 53, 46, 63, 41, 34, 50, 26, 19, 35, 5, 2, 14, 0, 0, 0, + 99, 87, 99, 87, 78, 88, 76, 68, 77, 65, 57, 65, 53, 46, 54, + 41, 35, 42, 27, 20, 27, 6, 2, 5, 0, 0, 0, 100, 87, 85, + 88, 77, 75, 77, 68, 65, 65, 57, 54, 53, 46, 44, 41, 35, 32, + 27, 21, 19, 5, 3, 2, 0, 0, 0, 100, 88, 71, 89, 77, 61, + 78, 68, 53, 66, 57, 44, 53, 47, 33, 41, 35, 22, 27, 21, 7, + 5, 3, 0, 0, 0, 0, 101, 87, 60, 90, 77, 52, 79, 68, 44, + 66, 58, 34, 53, 47, 25, 41, 35, 13, 26, 22, 0, 5, 3, 0, + 0, 0, 0, 97, 67, 155, 86, 58, 138, 77, 50, 125, 66, 39, 108, + 55, 28, 92, 43, 12, 76, 29, 0, 59, 2, 0, 37, 0, 0, 0, + 99, 67, 141, 88, 59, 127, 78, 50, 113, 68, 40, 98, 56, 29, 83, + 44, 15, 68, 29, 0, 52, 3, 0, 30, 0, 0, 0, 100, 68, 129, + 89, 59, 115, 80, 51, 103, 68, 41, 89, 56, 30, 75, 44, 16, 61, + 30, 0, 45, 4, 0, 24, 0, 0, 0, 100, 69, 118, 90, 60, 104, + 80, 51, 92, 67, 41, 79, 56, 31, 66, 44, 18, 53, 29, 2, 38, + 4, 0, 18, 0, 0, 0, 101, 69, 104, 90, 61, 93, 79, 51, 82, + 67, 42, 70, 56, 32, 59, 44, 20, 46, 29, 4, 31, 6, 0, 9, + 0, 0, 0, 102, 69, 93, 90, 61, 83, 80, 52, 72, 68, 42, 61, + 56, 33, 50, 43, 20, 38, 29, 5, 23, 7, 0, 4, 0, 0, 0, + 102, 70, 80, 91, 61, 71, 80, 52, 61, 68, 43, 51, 56, 32, 40, + 44, 21, 29, 30, 6, 14, 7, 0, 0, 0, 0, 0, 103, 70, 68, + 92, 61, 58, 81, 53, 50, 69, 43, 41, 56, 34, 31, 43, 22, 19, + 29, 7, 3, 7, 0, 0, 0, 0, 0, 104, 70, 57, 92, 61, 48, + 82, 53, 40, 69, 43, 32, 56, 34, 22, 43, 23, 10, 29, 8, 0, + 6, 0, 0, 0, 0, 0, 101, 45, 145, 91, 35, 129, 80, 26, 116, + 69, 15, 101, 59, 0, 86, 46, 0, 71, 31, 0, 55, 0, 0, 33, + 0, 0, 0, 104, 44, 132, 92, 36, 118, 82, 28, 105, 71, 17, 91, + 58, 3, 77, 46, 0, 63, 31, 0, 48, 2, 0, 26, 0, 0, 0, + 104, 46, 121, 93, 37, 107, 82, 30, 96, 70, 20, 83, 58, 6, 70, + 46, 0, 57, 32, 0, 41, 4, 0, 20, 0, 0, 0, 104, 48, 110, + 93, 40, 98, 82, 31, 87, 70, 22, 74, 59, 9, 62, 45, 0, 49, + 31, 0, 35, 6, 0, 13, 0, 0, 0, 104, 48, 99, 92, 41, 88, + 82, 32, 77, 70, 23, 65, 58, 11, 54, 46, 0, 42, 32, 0, 27, + 7, 0, 5, 0, 0, 0, 105, 50, 88, 93, 41, 77, 82, 34, 68, + 71, 24, 57, 58, 13, 46, 45, 1, 35, 31, 0, 21, 7, 0, 2, + 0, 0, 0, 105, 50, 76, 94, 41, 66, 83, 34, 57, 71, 25, 47, + 58, 15, 37, 45, 2, 25, 32, 0, 11, 7, 0, 0, 0, 0, 0, + 106, 50, 64, 94, 42, 55, 83, 35, 47, 71, 26, 38, 58, 16, 27, + 45, 4, 17, 31, 0, 4, 7, 0, 0, 0, 0, 0, 106, 51, 54, + 95, 42, 45, 83, 35, 38, 71, 27, 30, 58, 16, 19, 45, 5, 7, + 30, 0, 0, 6, 0, 0, 0, 0, 0, 0, 181, 240, 0, 162, 216, + 0, 144, 193, 0, 126, 168, 0, 109, 146, 0, 91, 123, 0, 71, 98, + 0, 48, 71, 0, 9, 34, 0, 179, 218, 0, 161, 195, 0, 144, 174, + 0, 126, 153, 0, 108, 132, 0, 90, 110, 0, 71, 88, 0, 48, 63, + 0, 8, 29, 0, 178, 197, 0, 159, 177, 0, 143, 159, 0, 125, 139, + 0, 107, 119, 0, 90, 99, 0, 71, 79, 0, 48, 55, 0, 8, 22, + 0, 177, 177, 0, 158, 158, 0, 142, 141, 0, 124, 123, 0, 107, 106, + 0, 89, 88, 0, 71, 70, 0, 48, 47, 0, 8, 14, 0, 176, 157, + 0, 158, 141, 0, 141, 126, 0, 123, 109, 0, 106, 93, 0, 89, 78, + 0, 70, 60, 0, 47, 39, 0, 7, 5, 0, 175, 138, 0, 157, 123, + 0, 141, 110, 0, 123, 96, 0, 105, 81, 0, 88, 67, 0, 70, 51, + 0, 48, 30, 0, 6, 0, 0, 173, 115, 0, 155, 104, 0, 140, 92, + 0, 122, 80, 0, 105, 67, 0, 88, 55, 0, 69, 40, 0, 47, 20, + 0, 6, 0, 0, 173, 94, 0, 155, 85, 0, 139, 75, 0, 121, 64, + 0, 104, 53, 0, 88, 42, 0, 70, 28, 0, 47, 9, 0, 6, 0, + 0, 173, 76, 0, 155, 70, 0, 138, 61, 0, 122, 53, 0, 104, 44, + 0, 87, 32, 0, 69, 18, 0, 47, 0, 0, 6, 0, 0, 164, 226, + 0, 147, 203, 0, 131, 181, 0, 114, 158, 0, 97, 136, 0, 80, 115, + 0, 63, 92, 0, 40, 65, 0, 0, 30, 0, 162, 205, 0, 145, 184, + 0, 130, 164, 0, 114, 143, 0, 97, 124, 0, 81, 104, 0, 63, 83, + 0, 40, 58, 0, 0, 23, 0, 162, 187, 0, 145, 167, 0, 130, 150, + 0, 113, 131, 0, 96, 112, 0, 80, 93, 0, 62, 74, 0, 40, 50, + 0, 0, 16, 0, 160, 167, 0, 144, 150, 0, 129, 134, 0, 112, 116, + 0, 96, 100, 0, 80, 82, 0, 62, 65, 0, 40, 43, 0, 0, 7, + 0, 160, 148, 0, 143, 133, 0, 128, 118, 0, 111, 103, 0, 96, 88, + 0, 80, 73, 0, 62, 56, 0, 40, 35, 0, 0, 0, 0, 158, 130, + 0, 142, 117, 0, 127, 104, 0, 111, 89, 0, 95, 76, 0, 79, 62, + 0, 62, 46, 0, 40, 26, 0, 0, 0, 0, 158, 111, 0, 141, 99, + 0, 127, 88, 0, 111, 76, 0, 95, 63, 0, 79, 51, 0, 62, 37, + 0, 40, 18, 0, 0, 0, 0, 158, 91, 0, 141, 81, 0, 126, 72, + 0, 110, 62, 0, 94, 50, 0, 79, 39, 0, 62, 25, 0, 40, 5, + 0, 0, 0, 0, 157, 74, 0, 141, 66, 0, 126, 59, 0, 110, 49, + 0, 94, 40, 0, 78, 29, 0, 61, 15, 0, 40, 0, 0, 0, 0, + 0, 148, 214, 0, 133, 192, 0, 119, 171, 0, 103, 150, 0, 87, 129, + 0, 72, 108, 0, 55, 86, 0, 32, 61, 0, 0, 25, 0, 147, 193, + 0, 132, 173, 0, 118, 155, 0, 103, 136, 0, 87, 116, 0, 72, 98, + 0, 55, 78, 0, 32, 53, 0, 0, 17, 0, 147, 176, 0, 132, 158, + 0, 118, 142, 0, 102, 124, 0, 87, 106, 0, 72, 88, 0, 55, 69, + 0, 33, 46, 0, 0, 9, 0, 146, 159, 0, 131, 142, 0, 117, 127, + 0, 102, 111, 0, 87, 95, 0, 71, 79, 0, 55, 61, 0, 33, 39, + 0, 0, 2, 0, 145, 140, 0, 130, 126, 0, 117, 112, 0, 101, 98, + 0, 86, 83, 0, 71, 68, 0, 55, 52, 0, 33, 31, 0, 0, 0, + 0, 144, 124, 0, 130, 111, 0, 116, 99, 0, 101, 84, 0, 86, 72, + 0, 71, 59, 0, 55, 43, 0, 33, 23, 0, 0, 0, 0, 144, 106, + 0, 129, 94, 0, 115, 83, 0, 101, 72, 0, 85, 60, 0, 71, 48, + 0, 55, 34, 0, 33, 14, 0, 0, 0, 3, 143, 86, 0, 129, 77, + 0, 115, 68, 0, 100, 58, 0, 85, 48, 0, 70, 36, 0, 54, 22, + 0, 33, 3, 0, 0, 0, 18, 143, 72, 13, 128, 63, 0, 115, 57, + 0, 100, 47, 0, 85, 37, 0, 70, 26, 0, 54, 13, 0, 33, 0, + 0, 0, 0, 0, 132, 200, 0, 118, 179, 0, 105, 161, 0, 91, 140, + 0, 76, 121, 0, 62, 101, 0, 46, 81, 0, 24, 56, 0, 0, 19, + 0, 131, 182, 0, 118, 163, 0, 105, 146, 0, 91, 128, 0, 77, 110, + 0, 62, 91, 0, 46, 72, 0, 25, 48, 0, 0, 11, 0, 131, 165, + 0, 117, 149, 0, 104, 133, 0, 91, 116, 0, 77, 99, 0, 62, 82, + 0, 46, 64, 0, 25, 41, 0, 0, 4, 0, 131, 149, 0, 116, 134, + 0, 104, 119, 0, 91, 104, 0, 77, 89, 0, 62, 73, 0, 46, 56, + 0, 25, 34, 0, 0, 0, 10, 130, 133, 2, 116, 119, 0, 104, 106, + 0, 90, 91, 0, 76, 78, 0, 62, 64, 0, 46, 48, 0, 26, 27, + 0, 0, 0, 23, 130, 118, 20, 116, 104, 13, 103, 93, 3, 89, 79, + 0, 76, 67, 0, 62, 54, 0, 46, 39, 0, 26, 19, 0, 0, 0, + 33, 129, 101, 27, 115, 89, 19, 103, 79, 9, 89, 67, 0, 75, 56, + 0, 61, 43, 0, 46, 29, 0, 26, 10, 0, 0, 0, 41, 128, 83, + 35, 115, 73, 27, 102, 64, 15, 89, 55, 0, 76, 45, 0, 62, 33, + 0, 46, 18, 0, 26, 0, 0, 0, 0, 43, 129, 69, 38, 115, 61, + 30, 102, 54, 17, 89, 45, 2, 75, 34, 0, 61, 23, 0, 46, 9, + 0, 26, 0, 0, 0, 0, 1, 116, 188, 1, 104, 168, 0, 92, 151, + 0, 79, 132, 0, 66, 113, 0, 52, 94, 0, 36, 75, 0, 14, 52, + 0, 0, 14, 17, 116, 171, 16, 104, 153, 14, 92, 137, 8, 79, 119, + 0, 67, 102, 0, 53, 85, 0, 37, 67, 0, 16, 44, 0, 0, 4, + 31, 116, 155, 27, 104, 140, 21, 92, 125, 13, 79, 109, 3, 66, 93, + 0, 53, 77, 0, 37, 59, 0, 16, 38, 0, 0, 0, 37, 115, 141, + 30, 103, 126, 26, 92, 112, 16, 79, 98, 5, 66, 83, 0, 53, 67, + 0, 38, 51, 0, 17, 31, 0, 0, 0, 41, 115, 126, 37, 103, 112, + 31, 92, 100, 22, 79, 86, 10, 66, 72, 0, 53, 59, 0, 38, 44, + 0, 17, 23, 0, 0, 0, 48, 115, 111, 41, 102, 99, 34, 91, 88, + 24, 78, 76, 14, 66, 63, 0, 53, 50, 0, 38, 36, 0, 18, 15, + 0, 0, 0, 51, 115, 95, 46, 102, 85, 37, 91, 74, 26, 78, 63, + 16, 66, 52, 0, 53, 40, 0, 38, 26, 0, 18, 5, 0, 0, 0, + 55, 114, 80, 47, 102, 69, 40, 90, 60, 30, 78, 51, 19, 66, 41, + 3, 53, 29, 0, 38, 15, 0, 17, 0, 0, 0, 0, 56, 114, 66, + 50, 102, 58, 40, 91, 50, 32, 78, 41, 18, 66, 32, 4, 53, 21, + 0, 38, 5, 0, 17, 0, 0, 0, 0, 39, 102, 178, 37, 90, 159, + 30, 79, 142, 21, 68, 124, 14, 55, 106, 0, 42, 89, 0, 26, 70, + 0, 4, 46, 0, 0, 8, 48, 102, 161, 42, 90, 145, 35, 79, 128, + 26, 68, 112, 19, 55, 96, 3, 43, 79, 0, 27, 62, 0, 6, 40, + 0, 0, 0, 50, 102, 147, 44, 90, 132, 37, 79, 118, 30, 68, 102, + 20, 56, 87, 7, 43, 72, 0, 28, 55, 0, 6, 34, 0, 0, 0, + 53, 101, 133, 47, 90, 118, 41, 79, 106, 32, 68, 91, 21, 56, 78, + 9, 43, 63, 0, 28, 47, 0, 6, 26, 0, 0, 0, 57, 101, 119, + 50, 89, 106, 42, 79, 94, 34, 67, 81, 24, 56, 68, 9, 44, 55, + 0, 29, 40, 0, 6, 19, 0, 0, 0, 60, 100, 105, 50, 90, 94, + 45, 80, 83, 36, 68, 71, 24, 56, 59, 11, 44, 46, 0, 29, 32, + 0, 7, 12, 0, 0, 0, 63, 101, 91, 55, 90, 80, 46, 79, 70, + 37, 68, 59, 26, 56, 49, 12, 44, 37, 1, 29, 23, 0, 7, 3, + 0, 0, 0, 64, 101, 75, 56, 89, 67, 48, 79, 57, 37, 68, 48, + 27, 56, 37, 15, 44, 26, 0, 29, 12, 0, 7, 0, 0, 0, 0, + 66, 101, 64, 58, 89, 55, 49, 79, 47, 39, 68, 38, 27, 56, 29, + 14, 44, 18, 1, 30, 2, 0, 7, 0, 0, 0, 0, 57, 86, 165, + 51, 75, 148, 45, 65, 133, 38, 54, 116, 28, 43, 100, 16, 29, 83, + 0, 13, 64, 0, 0, 42, 0, 0, 3, 60, 86, 151, 55, 75, 135, + 47, 66, 121, 39, 55, 105, 30, 44, 90, 18, 31, 74, 3, 16, 57, + 0, 1, 35, 0, 0, 0, 62, 86, 139, 56, 75, 123, 49, 66, 110, + 40, 55, 95, 30, 44, 81, 19, 31, 66, 4, 17, 51, 0, 1, 29, + 0, 0, 0, 65, 86, 125, 56, 76, 112, 49, 66, 99, 39, 55, 86, + 31, 44, 72, 19, 32, 59, 5, 18, 44, 0, 1, 23, 0, 0, 0, + 67, 86, 113, 58, 75, 100, 51, 66, 88, 41, 56, 77, 31, 45, 64, + 20, 32, 51, 6, 18, 35, 0, 1, 14, 0, 0, 0, 69, 86, 99, + 61, 76, 88, 52, 66, 78, 43, 56, 66, 32, 45, 55, 20, 33, 42, + 7, 19, 27, 0, 1, 6, 0, 0, 0, 69, 86, 86, 61, 76, 75, + 53, 67, 66, 43, 56, 55, 33, 45, 45, 21, 34, 34, 8, 20, 20, + 0, 2, 2, 0, 0, 0, 71, 86, 72, 63, 75, 62, 54, 66, 55, + 45, 56, 45, 33, 45, 35, 22, 34, 23, 7, 20, 8, 0, 2, 0, + 0, 0, 0, 71, 86, 62, 64, 75, 53, 55, 66, 46, 45, 56, 36, + 33, 46, 27, 22, 34, 15, 8, 20, 0, 0, 2, 0, 0, 0, 0, + 69, 67, 156, 61, 58, 140, 53, 50, 125, 45, 39, 108, 35, 28, 93, + 25, 12, 77, 12, 0, 59, 0, 0, 37, 0, 0, 0, 71, 68, 142, + 63, 59, 126, 56, 50, 114, 47, 40, 98, 37, 28, 84, 26, 15, 68, + 12, 0, 53, 0, 0, 30, 0, 0, 0, 72, 68, 130, 63, 59, 116, + 56, 50, 104, 47, 40, 90, 38, 30, 75, 27, 16, 61, 13, 0, 46, + 0, 0, 24, 0, 0, 0, 73, 69, 118, 65, 59, 105, 57, 51, 92, + 47, 41, 80, 37, 30, 67, 26, 18, 53, 14, 1, 39, 0, 0, 18, + 0, 0, 0, 74, 69, 106, 65, 60, 93, 57, 51, 82, 48, 41, 70, + 38, 31, 59, 26, 19, 46, 13, 2, 32, 0, 0, 10, 0, 0, 0, + 76, 69, 95, 66, 61, 84, 58, 52, 73, 48, 42, 61, 37, 32, 50, + 26, 20, 38, 14, 4, 24, 0, 0, 4, 0, 0, 0, 76, 69, 81, + 68, 60, 72, 58, 52, 62, 48, 42, 51, 38, 32, 41, 27, 21, 30, + 14, 4, 16, 0, 0, 1, 0, 0, 0, 76, 69, 68, 68, 61, 60, + 60, 52, 51, 49, 43, 41, 38, 33, 32, 27, 21, 20, 14, 5, 5, + 0, 0, 0, 0, 0, 0, 78, 70, 59, 69, 61, 50, 60, 52, 42, + 49, 43, 34, 39, 33, 24, 27, 22, 13, 14, 7, 1, 0, 0, 0, + 0, 0, 0, 75, 46, 146, 68, 38, 131, 60, 30, 117, 50, 19, 102, + 41, 4, 87, 29, 0, 72, 13, 0, 55, 0, 0, 33, 0, 0, 0, + 78, 47, 132, 70, 39, 119, 61, 30, 105, 53, 20, 92, 42, 5, 78, + 30, 0, 64, 13, 0, 49, 0, 0, 27, 0, 0, 0, 79, 48, 122, + 70, 40, 108, 62, 32, 96, 52, 22, 84, 42, 9, 71, 30, 0, 58, + 14, 0, 42, 0, 0, 20, 0, 0, 0, 79, 50, 111, 70, 42, 99, + 62, 33, 88, 52, 23, 74, 41, 11, 63, 29, 0, 50, 14, 0, 36, + 0, 0, 14, 0, 0, 0, 80, 50, 99, 70, 42, 89, 61, 34, 78, + 52, 25, 67, 41, 14, 55, 30, 0, 42, 15, 0, 28, 0, 0, 6, + 0, 0, 0, 81, 51, 89, 71, 43, 78, 62, 35, 69, 52, 25, 58, + 42, 15, 47, 30, 3, 36, 15, 0, 22, 0, 0, 3, 0, 0, 0, + 81, 51, 77, 71, 44, 68, 63, 36, 59, 53, 26, 49, 41, 16, 38, + 31, 4, 27, 16, 0, 12, 0, 0, 0, 0, 0, 0, 81, 52, 65, + 72, 43, 56, 63, 36, 48, 53, 27, 39, 41, 17, 29, 30, 4, 18, + 14, 0, 3, 0, 0, 0, 0, 0, 0, 81, 52, 55, 73, 44, 47, + 64, 36, 39, 53, 28, 32, 42, 18, 21, 31, 6, 9, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 174, 239, 0, 156, 214, 0, 139, 192, + 0, 121, 168, 0, 105, 145, 0, 87, 123, 0, 68, 98, 0, 46, 70, + 0, 3, 35, 0, 172, 217, 0, 155, 194, 0, 139, 173, 0, 121, 152, + 0, 104, 130, 0, 87, 110, 0, 69, 88, 0, 46, 63, 0, 4, 28, + 0, 171, 197, 0, 153, 175, 0, 138, 158, 0, 121, 139, 0, 103, 118, + 0, 86, 100, 0, 68, 79, 0, 46, 55, 0, 4, 22, 0, 170, 177, + 0, 152, 158, 0, 136, 141, 0, 119, 124, 0, 103, 106, 0, 86, 88, + 0, 68, 70, 0, 45, 47, 0, 3, 14, 0, 169, 157, 0, 152, 141, + 0, 136, 126, 0, 119, 109, 0, 102, 94, 0, 86, 78, 0, 68, 60, + 0, 46, 39, 0, 3, 5, 0, 167, 138, 0, 150, 124, 0, 135, 111, + 0, 118, 97, 0, 102, 82, 0, 85, 68, 0, 68, 52, 0, 46, 31, + 0, 3, 0, 0, 167, 118, 0, 150, 104, 0, 135, 94, 0, 118, 81, + 0, 101, 69, 0, 84, 56, 0, 67, 41, 0, 45, 21, 0, 3, 0, + 0, 166, 97, 0, 149, 87, 0, 134, 77, 0, 117, 67, 0, 101, 56, + 0, 85, 44, 0, 67, 30, 0, 45, 10, 0, 3, 0, 0, 165, 79, + 0, 149, 73, 0, 133, 64, 0, 117, 56, 0, 101, 46, 0, 85, 34, + 0, 68, 21, 0, 46, 1, 0, 3, 0, 0, 158, 225, 0, 141, 201, + 0, 126, 180, 0, 109, 158, 0, 94, 136, 0, 78, 114, 0, 60, 91, + 0, 38, 66, 0, 0, 30, 0, 156, 203, 0, 140, 183, 0, 125, 164, + 0, 109, 143, 0, 94, 124, 0, 78, 104, 0, 61, 83, 0, 38, 57, + 0, 0, 23, 0, 156, 186, 0, 140, 166, 0, 125, 150, 0, 109, 130, + 0, 93, 111, 0, 77, 93, 0, 60, 74, 0, 38, 50, 0, 0, 17, + 0, 155, 167, 0, 138, 149, 0, 124, 134, 0, 109, 117, 0, 93, 100, + 0, 76, 83, 0, 60, 65, 0, 38, 43, 0, 0, 9, 0, 153, 147, + 0, 138, 134, 0, 124, 120, 0, 107, 103, 0, 92, 88, 0, 77, 73, + 0, 60, 56, 0, 38, 35, 0, 0, 0, 0, 153, 131, 0, 137, 118, + 0, 122, 105, 0, 107, 90, 0, 91, 76, 0, 76, 63, 0, 60, 47, + 0, 39, 28, 0, 0, 0, 0, 153, 111, 0, 136, 100, 0, 123, 90, + 0, 107, 77, 0, 92, 65, 0, 76, 52, 0, 60, 37, 0, 38, 18, + 0, 0, 0, 0, 152, 93, 0, 136, 82, 0, 122, 74, 0, 106, 63, + 0, 91, 52, 0, 76, 40, 0, 59, 26, 0, 38, 6, 0, 0, 0, + 0, 151, 78, 0, 136, 69, 0, 121, 61, 0, 106, 52, 0, 91, 43, + 0, 76, 32, 0, 59, 17, 0, 38, 0, 0, 0, 0, 0, 143, 213, + 0, 128, 191, 0, 115, 171, 0, 100, 149, 0, 84, 128, 0, 69, 108, + 0, 52, 86, 0, 30, 61, 0, 0, 25, 0, 142, 193, 0, 127, 173, + 0, 114, 154, 0, 99, 134, 0, 84, 116, 0, 69, 98, 0, 52, 77, + 0, 31, 53, 0, 0, 18, 0, 141, 176, 0, 127, 158, 0, 114, 141, + 0, 98, 122, 0, 84, 105, 0, 69, 88, 0, 53, 69, 0, 31, 46, + 0, 0, 9, 0, 141, 159, 0, 126, 142, 0, 113, 127, 0, 98, 110, + 0, 83, 95, 0, 69, 78, 0, 53, 60, 0, 32, 39, 0, 0, 2, + 0, 140, 140, 0, 126, 126, 0, 112, 112, 0, 98, 98, 0, 83, 83, + 0, 68, 69, 0, 52, 52, 0, 31, 31, 0, 0, 0, 0, 140, 124, + 0, 125, 112, 0, 112, 100, 0, 97, 86, 0, 83, 72, 0, 68, 59, + 0, 52, 44, 0, 31, 23, 0, 0, 0, 0, 139, 106, 0, 125, 96, + 0, 111, 85, 0, 97, 72, 0, 83, 62, 0, 68, 49, 0, 52, 35, + 0, 31, 15, 0, 0, 0, 0, 138, 88, 0, 124, 79, 0, 111, 70, + 0, 96, 59, 0, 82, 48, 0, 68, 38, 0, 52, 24, 0, 31, 4, + 0, 0, 0, 0, 139, 76, 0, 124, 66, 0, 111, 58, 0, 96, 50, + 0, 82, 40, 0, 68, 29, 0, 52, 15, 0, 31, 0, 0, 0, 0, + 0, 129, 200, 0, 114, 179, 0, 102, 160, 0, 87, 139, 0, 74, 120, + 0, 60, 101, 0, 44, 81, 0, 22, 56, 0, 0, 19, 0, 127, 181, + 0, 114, 163, 0, 102, 146, 0, 88, 127, 0, 74, 109, 0, 60, 91, + 0, 44, 72, 0, 23, 48, 0, 0, 11, 0, 127, 166, 0, 113, 148, + 0, 101, 133, 0, 87, 115, 0, 74, 99, 0, 60, 82, 0, 44, 64, + 0, 23, 42, 0, 0, 4, 0, 127, 150, 0, 113, 134, 0, 101, 119, + 0, 87, 104, 0, 74, 89, 0, 60, 73, 0, 44, 56, 0, 23, 35, + 0, 0, 0, 0, 125, 134, 0, 112, 118, 0, 100, 106, 0, 87, 92, + 0, 73, 78, 0, 60, 64, 0, 44, 48, 0, 23, 27, 0, 0, 0, + 0, 125, 118, 0, 112, 105, 0, 100, 94, 0, 86, 80, 0, 73, 68, + 0, 60, 54, 0, 44, 39, 0, 23, 20, 0, 0, 0, 0, 125, 101, + 0, 111, 90, 0, 99, 80, 0, 86, 69, 0, 73, 58, 0, 59, 45, + 0, 44, 30, 0, 23, 11, 0, 0, 0, 0, 124, 85, 0, 111, 75, + 0, 99, 66, 0, 86, 56, 0, 73, 45, 0, 59, 34, 0, 44, 20, + 0, 23, 1, 0, 0, 0, 0, 125, 72, 0, 111, 62, 0, 99, 56, + 0, 86, 46, 0, 73, 36, 0, 60, 26, 0, 44, 12, 0, 23, 0, + 0, 0, 0, 0, 114, 188, 0, 101, 167, 0, 89, 150, 0, 77, 131, + 0, 64, 113, 0, 50, 95, 0, 34, 75, 0, 12, 52, 0, 0, 14, + 0, 113, 170, 0, 101, 153, 0, 89, 137, 0, 77, 120, 0, 64, 102, + 0, 50, 85, 0, 35, 67, 0, 12, 44, 0, 0, 4, 0, 113, 156, + 0, 100, 139, 0, 89, 125, 0, 77, 109, 0, 64, 92, 0, 51, 77, + 0, 35, 60, 0, 12, 38, 0, 0, 0, 0, 112, 141, 0, 100, 126, + 0, 89, 113, 0, 77, 98, 0, 64, 83, 0, 51, 68, 0, 35, 51, + 0, 12, 30, 0, 0, 0, 0, 112, 127, 0, 100, 112, 0, 89, 100, + 0, 76, 87, 0, 64, 74, 0, 51, 59, 0, 35, 44, 0, 13, 24, + 0, 0, 0, 0, 112, 111, 0, 100, 100, 0, 88, 88, 0, 76, 76, + 0, 64, 64, 0, 51, 52, 0, 36, 37, 0, 13, 17, 0, 0, 0, + 0, 111, 96, 0, 99, 85, 0, 88, 76, 0, 76, 64, 0, 64, 53, + 0, 51, 41, 0, 36, 27, 0, 13, 6, 0, 0, 0, 0, 111, 81, + 0, 99, 71, 0, 88, 62, 0, 76, 52, 0, 64, 43, 0, 51, 31, + 0, 36, 17, 0, 13, 0, 0, 0, 0, 0, 111, 69, 0, 99, 60, + 0, 88, 52, 0, 75, 43, 0, 63, 34, 0, 51, 21, 0, 36, 7, + 0, 13, 0, 0, 0, 0, 0, 99, 177, 0, 88, 158, 0, 77, 141, + 0, 66, 123, 0, 53, 106, 0, 40, 89, 0, 25, 71, 0, 5, 47, + 0, 0, 8, 0, 99, 160, 0, 88, 144, 0, 77, 129, 0, 66, 112, + 0, 54, 97, 0, 41, 80, 0, 26, 62, 0, 5, 40, 0, 0, 0, + 0, 99, 147, 0, 87, 132, 0, 78, 117, 0, 66, 102, 0, 54, 87, + 0, 42, 72, 0, 26, 55, 0, 5, 34, 0, 0, 0, 0, 99, 134, + 0, 88, 119, 0, 77, 107, 0, 66, 92, 0, 54, 78, 0, 42, 64, + 0, 27, 48, 0, 5, 27, 0, 0, 0, 0, 99, 120, 0, 87, 107, + 0, 78, 94, 0, 66, 81, 0, 54, 68, 0, 42, 55, 0, 27, 40, + 0, 6, 20, 0, 0, 0, 0, 98, 105, 0, 87, 94, 0, 77, 84, + 0, 65, 71, 0, 55, 59, 0, 42, 47, 0, 28, 33, 0, 6, 12, + 0, 0, 0, 0, 98, 93, 0, 87, 81, 0, 77, 72, 0, 66, 61, + 0, 54, 49, 0, 42, 37, 0, 28, 24, 0, 6, 4, 0, 0, 0, + 0, 98, 77, 0, 87, 68, 0, 77, 59, 0, 65, 49, 0, 54, 39, + 0, 42, 27, 0, 29, 14, 0, 6, 0, 0, 0, 0, 1, 98, 65, + 7, 87, 56, 0, 77, 49, 0, 66, 41, 0, 54, 30, 0, 42, 19, + 0, 29, 3, 0, 6, 0, 0, 0, 0, 0, 84, 166, 0, 74, 149, + 0, 64, 134, 0, 53, 117, 0, 41, 100, 0, 28, 83, 0, 11, 64, + 0, 0, 42, 0, 0, 3, 0, 84, 151, 0, 74, 135, 0, 64, 121, + 0, 53, 105, 0, 42, 90, 0, 30, 75, 0, 14, 58, 0, 0, 36, + 0, 0, 0, 0, 84, 138, 0, 74, 124, 1, 64, 110, 0, 54, 95, + 0, 43, 81, 0, 30, 67, 0, 15, 51, 0, 1, 29, 0, 0, 0, + 14, 84, 126, 12, 74, 112, 2, 65, 99, 0, 54, 85, 0, 44, 73, + 0, 31, 59, 0, 16, 44, 0, 1, 23, 0, 0, 0, 16, 84, 113, + 13, 74, 100, 6, 65, 89, 0, 54, 77, 0, 44, 65, 0, 31, 51, + 0, 17, 36, 0, 1, 16, 0, 0, 0, 24, 84, 100, 18, 74, 88, + 13, 65, 78, 2, 55, 68, 0, 44, 55, 0, 32, 43, 0, 18, 28, + 0, 1, 6, 0, 0, 0, 26, 84, 87, 24, 74, 76, 17, 65, 67, + 7, 54, 57, 0, 44, 46, 0, 32, 35, 0, 19, 21, 0, 2, 3, + 0, 0, 0, 30, 84, 74, 28, 74, 64, 20, 65, 55, 12, 55, 46, + 0, 44, 35, 0, 32, 24, 0, 18, 9, 0, 1, 0, 0, 0, 0, + 32, 84, 63, 28, 74, 54, 21, 65, 47, 13, 54, 38, 0, 44, 28, + 0, 32, 16, 0, 18, 1, 0, 1, 0, 0, 0, 0, 30, 67, 155, + 20, 58, 139, 20, 49, 126, 12, 39, 110, 0, 27, 94, 0, 13, 77, + 0, 0, 60, 0, 0, 37, 0, 0, 0, 35, 67, 142, 30, 58, 126, + 23, 50, 114, 16, 40, 99, 7, 29, 85, 0, 15, 69, 0, 0, 52, + 0, 0, 30, 0, 0, 0, 35, 68, 131, 30, 59, 116, 27, 50, 104, + 18, 40, 90, 9, 29, 76, 0, 17, 62, 0, 2, 46, 0, 0, 24, + 0, 0, 0, 37, 69, 119, 33, 59, 106, 27, 51, 94, 21, 41, 80, + 9, 30, 67, 0, 18, 54, 0, 3, 39, 0, 0, 18, 0, 0, 0, + 40, 69, 107, 36, 59, 94, 28, 51, 84, 18, 41, 72, 10, 31, 60, + 0, 19, 47, 0, 4, 32, 0, 0, 10, 0, 0, 0, 42, 69, 95, + 36, 59, 84, 29, 51, 74, 19, 41, 63, 10, 31, 52, 0, 20, 39, + 0, 4, 25, 0, 0, 4, 0, 0, 0, 43, 69, 83, 38, 60, 73, + 32, 51, 62, 23, 42, 53, 11, 31, 42, 0, 20, 31, 0, 5, 17, + 0, 0, 1, 0, 0, 0, 45, 69, 70, 39, 60, 60, 33, 51, 52, + 24, 42, 43, 13, 32, 33, 0, 21, 21, 0, 5, 6, 0, 0, 0, + 0, 0, 0, 47, 69, 59, 41, 60, 51, 34, 51, 43, 24, 42, 35, + 12, 33, 26, 1, 22, 14, 0, 5, 1, 0, 0, 0, 0, 0, 0, + 46, 48, 146, 42, 40, 131, 36, 32, 118, 27, 22, 103, 17, 6, 88, + 5, 0, 73, 0, 0, 55, 0, 0, 33, 0, 0, 0, 48, 48, 133, + 44, 40, 119, 37, 32, 107, 28, 22, 93, 20, 8, 79, 7, 0, 65, + 0, 0, 49, 0, 0, 27, 0, 0, 0, 48, 50, 123, 44, 41, 109, + 37, 33, 97, 30, 23, 83, 21, 11, 71, 8, 0, 58, 0, 0, 42, + 0, 0, 21, 0, 0, 0, 49, 51, 111, 45, 42, 99, 38, 34, 87, + 29, 25, 75, 20, 13, 63, 8, 0, 51, 0, 0, 36, 0, 0, 14, + 0, 0, 0, 52, 52, 100, 44, 43, 89, 38, 35, 79, 29, 26, 68, + 19, 15, 56, 10, 1, 43, 0, 0, 28, 0, 0, 6, 0, 0, 0, + 52, 52, 90, 47, 44, 79, 39, 36, 70, 30, 27, 59, 20, 16, 47, + 9, 2, 36, 0, 0, 22, 0, 0, 2, 0, 0, 0, 52, 53, 78, + 46, 44, 68, 39, 37, 60, 32, 27, 49, 22, 17, 39, 10, 3, 28, + 0, 0, 12, 0, 0, 0, 0, 0, 0, 53, 53, 66, 47, 44, 57, + 40, 36, 48, 32, 27, 39, 22, 18, 30, 9, 4, 18, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 54, 53, 57, 48, 45, 49, 41, 37, 41, + 33, 28, 32, 22, 19, 23, 11, 6, 10, 1, 0, 0, 0, 0, 0, + 0, 0, 0, +}; +void AdobeCMYK_to_sRGB1(uint8_t c, + uint8_t m, + uint8_t y, + uint8_t k, + uint8_t& R, + uint8_t& G, + uint8_t& B) { + int fix_c = c << 8; + int fix_m = m << 8; + int fix_y = y << 8; + int fix_k = k << 8; + int c_index = (fix_c + 4096) >> 13; + int m_index = (fix_m + 4096) >> 13; + int y_index = (fix_y + 4096) >> 13; + int k_index = (fix_k + 4096) >> 13; + int pos = (c_index * 9 * 9 * 9 + m_index * 9 * 9 + y_index * 9 + k_index) * 3; + int fix_r = g_CMYKSamples[pos] << 8; + int fix_g = g_CMYKSamples[pos + 1] << 8; + int fix_b = g_CMYKSamples[pos + 2] << 8; + int c1_index = fix_c >> 13; + if (c1_index == c_index) { + c1_index = c1_index == 8 ? c1_index - 1 : c1_index + 1; + } + int m1_index = fix_m >> 13; + if (m1_index == m_index) { + m1_index = m1_index == 8 ? m1_index - 1 : m1_index + 1; + } + int y1_index = fix_y >> 13; + if (y1_index == y_index) { + y1_index = y1_index == 8 ? y1_index - 1 : y1_index + 1; + } + int k1_index = fix_k >> 13; + if (k1_index == k_index) { + k1_index = k1_index == 8 ? k1_index - 1 : k1_index + 1; + } + int c1_pos = pos + (c1_index - c_index) * 9 * 9 * 9 * 3; + int m1_pos = pos + (m1_index - m_index) * 9 * 9 * 3; + int y1_pos = pos + (y1_index - y_index) * 9 * 3; + int k1_pos = pos + (k1_index - k_index) * 3; + int c_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[c1_pos]; + int c_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[c1_pos + 1]; + int c_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[c1_pos + 2]; + int m_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[m1_pos]; + int m_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[m1_pos + 1]; + int m_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[m1_pos + 2]; + int y_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[y1_pos]; + int y_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[y1_pos + 1]; + int y_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[y1_pos + 2]; + int k_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[k1_pos]; + int k_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[k1_pos + 1]; + int k_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[k1_pos + 2]; + int c_rate = (fix_c - (c_index << 13)) * (c_index - c1_index); + fix_r += c_r_delta * c_rate / 32; + fix_g += c_g_delta * c_rate / 32; + fix_b += c_b_delta * c_rate / 32; + int m_rate = (fix_m - (m_index << 13)) * (m_index - m1_index); + fix_r += m_r_delta * m_rate / 32; + fix_g += m_g_delta * m_rate / 32; + fix_b += m_b_delta * m_rate / 32; + int y_rate = (fix_y - (y_index << 13)) * (y_index - y1_index); + fix_r += y_r_delta * y_rate / 32; + fix_g += y_g_delta * y_rate / 32; + fix_b += y_b_delta * y_rate / 32; + int k_rate = (fix_k - (k_index << 13)) * (k_index - k1_index); + fix_r += k_r_delta * k_rate / 32; + fix_g += k_g_delta * k_rate / 32; + fix_b += k_b_delta * k_rate / 32; + if (fix_r < 0) { + fix_r = 0; + } + if (fix_g < 0) { + fix_g = 0; + } + if (fix_b < 0) { + fix_b = 0; + } + R = fix_r >> 8; + G = fix_g >> 8; + B = fix_b >> 8; +} +void AdobeCMYK_to_sRGB(FX_FLOAT c, + FX_FLOAT m, + FX_FLOAT y, + FX_FLOAT k, + FX_FLOAT& R, + FX_FLOAT& G, + FX_FLOAT& B) { + uint8_t c1 = FXSYS_round(c * 255); + uint8_t m1 = FXSYS_round(m * 255); + uint8_t y1 = FXSYS_round(y * 255); + uint8_t k1 = FXSYS_round(k * 255); + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(c1, m1, y1, k1, r, g, b); + R = 1.0f * r / 255; + G = 1.0f * g / 255; + B = 1.0f * b / 255; +} diff --git a/core/fxcodec/codec/fx_codec_jbig.cpp b/core/fxcodec/codec/fx_codec_jbig.cpp new file mode 100644 index 0000000000..557d246ca4 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_jbig.cpp @@ -0,0 +1,126 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fxcodec/fx_codec.h" + +// Holds per-document JBig2 related data. +class JBig2DocumentContext : public CFX_DestructObject { + public: + std::list* GetSymbolDictCache() { + return &m_SymbolDictCache; + } + + ~JBig2DocumentContext() override { + for (auto it : m_SymbolDictCache) { + delete it.second; + } + } + + private: + std::list m_SymbolDictCache; +}; + +JBig2DocumentContext* GetJBig2DocumentContext(CCodec_Jbig2Module* pModule, + CFX_PrivateData* pPrivateData) { + void* pModulePrivateData = pPrivateData->GetPrivateData(pModule); + if (pModulePrivateData) { + CFX_DestructObject* pDestructObject = + reinterpret_cast(pModulePrivateData); + return static_cast(pDestructObject); + } + JBig2DocumentContext* pJBig2DocumentContext = new JBig2DocumentContext(); + pPrivateData->SetPrivateObj(pModule, pJBig2DocumentContext); + return pJBig2DocumentContext; +} + +CCodec_Jbig2Context::CCodec_Jbig2Context() { + FXSYS_memset(this, 0, sizeof(CCodec_Jbig2Context)); +} + +CCodec_Jbig2Module::~CCodec_Jbig2Module() {} + +void* CCodec_Jbig2Module::CreateJbig2Context() { + return new CCodec_Jbig2Context(); +} +void CCodec_Jbig2Module::DestroyJbig2Context(void* pJbig2Content) { + if (pJbig2Content) { + CJBig2_Context::DestroyContext( + ((CCodec_Jbig2Context*)pJbig2Content)->m_pContext); + delete (CCodec_Jbig2Context*)pJbig2Content; + } + pJbig2Content = NULL; +} +FXCODEC_STATUS CCodec_Jbig2Module::StartDecode(void* pJbig2Context, + CFX_PrivateData* pPrivateData, + FX_DWORD width, + FX_DWORD height, + CPDF_StreamAcc* src_stream, + CPDF_StreamAcc* global_stream, + uint8_t* dest_buf, + FX_DWORD dest_pitch, + IFX_Pause* pPause) { + if (!pJbig2Context) { + return FXCODEC_STATUS_ERR_PARAMS; + } + JBig2DocumentContext* pJBig2DocumentContext = + GetJBig2DocumentContext(this, pPrivateData); + CCodec_Jbig2Context* m_pJbig2Context = (CCodec_Jbig2Context*)pJbig2Context; + m_pJbig2Context->m_width = width; + m_pJbig2Context->m_height = height; + m_pJbig2Context->m_pSrcStream = src_stream; + m_pJbig2Context->m_pGlobalStream = global_stream; + m_pJbig2Context->m_dest_buf = dest_buf; + m_pJbig2Context->m_dest_pitch = dest_pitch; + m_pJbig2Context->m_pPause = pPause; + FXSYS_memset(dest_buf, 0, height * dest_pitch); + m_pJbig2Context->m_pContext = CJBig2_Context::CreateContext( + global_stream, src_stream, pJBig2DocumentContext->GetSymbolDictCache(), + pPause); + if (!m_pJbig2Context->m_pContext) { + return FXCODEC_STATUS_ERROR; + } + int ret = m_pJbig2Context->m_pContext->getFirstPage(dest_buf, width, height, + dest_pitch, pPause); + if (m_pJbig2Context->m_pContext->GetProcessingStatus() == + FXCODEC_STATUS_DECODE_FINISH) { + CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); + m_pJbig2Context->m_pContext = NULL; + if (ret != JBIG2_SUCCESS) { + return FXCODEC_STATUS_ERROR; + } + int dword_size = height * dest_pitch / 4; + FX_DWORD* dword_buf = (FX_DWORD*)dest_buf; + for (int i = 0; i < dword_size; i++) { + dword_buf[i] = ~dword_buf[i]; + } + return FXCODEC_STATUS_DECODE_FINISH; + } + return m_pJbig2Context->m_pContext->GetProcessingStatus(); +} +FXCODEC_STATUS CCodec_Jbig2Module::ContinueDecode(void* pJbig2Context, + IFX_Pause* pPause) { + CCodec_Jbig2Context* m_pJbig2Context = (CCodec_Jbig2Context*)pJbig2Context; + int ret = m_pJbig2Context->m_pContext->Continue(pPause); + if (m_pJbig2Context->m_pContext->GetProcessingStatus() != + FXCODEC_STATUS_DECODE_FINISH) { + return m_pJbig2Context->m_pContext->GetProcessingStatus(); + } + CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); + m_pJbig2Context->m_pContext = NULL; + if (ret != JBIG2_SUCCESS) { + return FXCODEC_STATUS_ERROR; + } + int dword_size = + m_pJbig2Context->m_height * m_pJbig2Context->m_dest_pitch / 4; + FX_DWORD* dword_buf = (FX_DWORD*)m_pJbig2Context->m_dest_buf; + for (int i = 0; i < dword_size; i++) { + dword_buf[i] = ~dword_buf[i]; + } + return FXCODEC_STATUS_DECODE_FINISH; +} diff --git a/core/fxcodec/codec/fx_codec_jpeg.cpp b/core/fxcodec/codec/fx_codec_jpeg.cpp new file mode 100644 index 0000000000..efbeb790e3 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_jpeg.cpp @@ -0,0 +1,692 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "core/include/fxge/fx_dib.h" + +extern "C" { +#undef FAR +#if defined(USE_SYSTEM_LIBJPEG) +#include +#elif defined(USE_LIBJPEG_TURBO) +#include "third_party/libjpeg_turbo/jpeglib.h" +#else +#include "third_party/libjpeg/jpeglib.h" +#endif +} + +extern "C" { +static void _JpegScanSOI(const uint8_t*& src_buf, FX_DWORD& src_size) { + if (src_size == 0) { + return; + } + FX_DWORD offset = 0; + while (offset < src_size - 1) { + if (src_buf[offset] == 0xff && src_buf[offset + 1] == 0xd8) { + src_buf += offset; + src_size -= offset; + return; + } + offset++; + } +} +}; +extern "C" { +static void _src_do_nothing(struct jpeg_decompress_struct* cinfo) {} +}; +extern "C" { +static void _error_fatal(j_common_ptr cinfo) { + longjmp(*(jmp_buf*)cinfo->client_data, -1); +} +}; +extern "C" { +static void _src_skip_data(struct jpeg_decompress_struct* cinfo, long num) { + if (num > (long)cinfo->src->bytes_in_buffer) { + _error_fatal((j_common_ptr)cinfo); + } + cinfo->src->next_input_byte += num; + cinfo->src->bytes_in_buffer -= num; +} +}; +extern "C" { +static boolean _src_fill_buffer(j_decompress_ptr cinfo) { + return 0; +} +}; +extern "C" { +static boolean _src_resync(j_decompress_ptr cinfo, int desired) { + return 0; +} +}; +extern "C" { +static void _error_do_nothing(j_common_ptr cinfo) {} +}; +extern "C" { +static void _error_do_nothing1(j_common_ptr cinfo, int) {} +}; +extern "C" { +static void _error_do_nothing2(j_common_ptr cinfo, char*) {} +}; +#define JPEG_MARKER_EXIF (JPEG_APP0 + 1) +#define JPEG_MARKER_ICC (JPEG_APP0 + 2) +#define JPEG_MARKER_AUTHORTIME (JPEG_APP0 + 3) +#define JPEG_MARKER_MAXSIZE 0xFFFF +#define JPEG_OVERHEAD_LEN 14 +static FX_BOOL _JpegEmbedIccProfile(j_compress_ptr cinfo, + const uint8_t* icc_buf_ptr, + FX_DWORD icc_length) { + if (!icc_buf_ptr || icc_length == 0) { + return FALSE; + } + FX_DWORD icc_segment_size = (JPEG_MARKER_MAXSIZE - 2 - JPEG_OVERHEAD_LEN); + FX_DWORD icc_segment_num = (icc_length / icc_segment_size) + 1; + if (icc_segment_num > 255) { + return FALSE; + } + FX_DWORD icc_data_length = + JPEG_OVERHEAD_LEN + (icc_segment_num > 1 ? icc_segment_size : icc_length); + uint8_t* icc_data = FX_Alloc(uint8_t, icc_data_length); + FXSYS_memcpy(icc_data, "\x49\x43\x43\x5f\x50\x52\x4f\x46\x49\x4c\x45\x00", + 12); + icc_data[13] = (uint8_t)icc_segment_num; + for (uint8_t i = 0; i < (icc_segment_num - 1); i++) { + icc_data[12] = i + 1; + FXSYS_memcpy(icc_data + JPEG_OVERHEAD_LEN, + icc_buf_ptr + i * icc_segment_size, icc_segment_size); + jpeg_write_marker(cinfo, JPEG_MARKER_ICC, icc_data, icc_data_length); + } + icc_data[12] = (uint8_t)icc_segment_num; + FX_DWORD icc_size = (icc_segment_num - 1) * icc_segment_size; + FXSYS_memcpy(icc_data + JPEG_OVERHEAD_LEN, icc_buf_ptr + icc_size, + icc_length - icc_size); + jpeg_write_marker(cinfo, JPEG_MARKER_ICC, icc_data, + JPEG_OVERHEAD_LEN + icc_length - icc_size); + FX_Free(icc_data); + return TRUE; +} +extern "C" { +static void _dest_do_nothing(j_compress_ptr cinfo) {} +}; +extern "C" { +static boolean _dest_empty(j_compress_ptr cinfo) { + return FALSE; +} +}; +#define JPEG_BLOCK_SIZE 1048576 +static void _JpegEncode(const CFX_DIBSource* pSource, + uint8_t*& dest_buf, + FX_STRSIZE& dest_size, + int quality, + const uint8_t* icc_buf, + FX_DWORD icc_length) { + struct jpeg_error_mgr jerr; + jerr.error_exit = _error_do_nothing; + jerr.emit_message = _error_do_nothing1; + jerr.output_message = _error_do_nothing; + jerr.format_message = _error_do_nothing2; + jerr.reset_error_mgr = _error_do_nothing; + + struct jpeg_compress_struct cinfo; + memset(&cinfo, 0, sizeof(cinfo)); + cinfo.err = &jerr; + jpeg_create_compress(&cinfo); + int Bpp = pSource->GetBPP() / 8; + FX_DWORD nComponents = Bpp >= 3 ? (pSource->IsCmykImage() ? 4 : 3) : 1; + FX_DWORD pitch = pSource->GetPitch(); + FX_DWORD width = pdfium::base::checked_cast(pSource->GetWidth()); + FX_DWORD height = pdfium::base::checked_cast(pSource->GetHeight()); + FX_SAFE_DWORD safe_buf_len = width; + safe_buf_len *= height; + safe_buf_len *= nComponents; + safe_buf_len += 1024; + if (icc_length) { + safe_buf_len += 255 * 18; + safe_buf_len += icc_length; + } + FX_DWORD dest_buf_length = 0; + if (!safe_buf_len.IsValid()) { + dest_buf = nullptr; + } else { + dest_buf_length = safe_buf_len.ValueOrDie(); + dest_buf = FX_TryAlloc(uint8_t, dest_buf_length); + const int MIN_TRY_BUF_LEN = 1024; + while (!dest_buf && dest_buf_length > MIN_TRY_BUF_LEN) { + dest_buf_length >>= 1; + dest_buf = FX_TryAlloc(uint8_t, dest_buf_length); + } + } + if (!dest_buf) { + FX_OutOfMemoryTerminate(); + } + struct jpeg_destination_mgr dest; + dest.init_destination = _dest_do_nothing; + dest.term_destination = _dest_do_nothing; + dest.empty_output_buffer = _dest_empty; + dest.next_output_byte = dest_buf; + dest.free_in_buffer = dest_buf_length; + cinfo.dest = &dest; + cinfo.image_width = width; + cinfo.image_height = height; + cinfo.input_components = nComponents; + if (nComponents == 1) { + cinfo.in_color_space = JCS_GRAYSCALE; + } else if (nComponents == 3) { + cinfo.in_color_space = JCS_RGB; + } else { + cinfo.in_color_space = JCS_CMYK; + } + uint8_t* line_buf = NULL; + if (nComponents > 1) { + line_buf = FX_Alloc2D(uint8_t, width, nComponents); + } + jpeg_set_defaults(&cinfo); + if (quality != 75) { + jpeg_set_quality(&cinfo, quality, TRUE); + } + jpeg_start_compress(&cinfo, TRUE); + _JpegEmbedIccProfile(&cinfo, icc_buf, icc_length); + JSAMPROW row_pointer[1]; + JDIMENSION row; + while (cinfo.next_scanline < cinfo.image_height) { + const uint8_t* src_scan = pSource->GetScanline(cinfo.next_scanline); + if (nComponents > 1) { + uint8_t* dest_scan = line_buf; + if (nComponents == 3) { + for (FX_DWORD i = 0; i < width; i++) { + dest_scan[0] = src_scan[2]; + dest_scan[1] = src_scan[1]; + dest_scan[2] = src_scan[0]; + dest_scan += 3; + src_scan += Bpp; + } + } else { + for (FX_DWORD i = 0; i < pitch; i++) { + *dest_scan++ = ~*src_scan++; + } + } + row_pointer[0] = line_buf; + } else { + row_pointer[0] = (uint8_t*)src_scan; + } + row = cinfo.next_scanline; + jpeg_write_scanlines(&cinfo, row_pointer, 1); + if (cinfo.next_scanline == row) { + dest_buf = + FX_Realloc(uint8_t, dest_buf, dest_buf_length + JPEG_BLOCK_SIZE); + dest.next_output_byte = dest_buf + dest_buf_length - dest.free_in_buffer; + dest_buf_length += JPEG_BLOCK_SIZE; + dest.free_in_buffer += JPEG_BLOCK_SIZE; + } + } + jpeg_finish_compress(&cinfo); + jpeg_destroy_compress(&cinfo); + FX_Free(line_buf); + dest_size = dest_buf_length - (FX_STRSIZE)dest.free_in_buffer; +} + +#ifdef PDF_ENABLE_XFA +static void _JpegLoadAttribute(struct jpeg_decompress_struct* pInfo, + CFX_DIBAttribute* pAttribute) { + if (pInfo == NULL || pAttribute == NULL) { + return; + } + if (pAttribute) { + pAttribute->m_nXDPI = pInfo->X_density; + pAttribute->m_nYDPI = pInfo->Y_density; + pAttribute->m_wDPIUnit = pInfo->density_unit; + } +} +#endif // PDF_ENABLE_XFA + +static FX_BOOL _JpegLoadInfo(const uint8_t* src_buf, + FX_DWORD src_size, + int& width, + int& height, + int& num_components, + int& bits_per_components, + FX_BOOL& color_transform, + uint8_t** icc_buf_ptr, + FX_DWORD* icc_length) { + _JpegScanSOI(src_buf, src_size); + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr jerr; + jerr.error_exit = _error_fatal; + jerr.emit_message = _error_do_nothing1; + jerr.output_message = _error_do_nothing; + jerr.format_message = _error_do_nothing2; + jerr.reset_error_mgr = _error_do_nothing; + jerr.trace_level = 0; + cinfo.err = &jerr; + jmp_buf mark; + cinfo.client_data = &mark; + if (setjmp(mark) == -1) { + return FALSE; + } + jpeg_create_decompress(&cinfo); + struct jpeg_source_mgr src; + src.init_source = _src_do_nothing; + src.term_source = _src_do_nothing; + src.skip_input_data = _src_skip_data; + src.fill_input_buffer = _src_fill_buffer; + src.resync_to_restart = _src_resync; + src.bytes_in_buffer = src_size; + src.next_input_byte = src_buf; + cinfo.src = &src; + if (setjmp(mark) == -1) { + jpeg_destroy_decompress(&cinfo); + return FALSE; + } + if (icc_buf_ptr && icc_length) { + jpeg_save_markers(&cinfo, JPEG_MARKER_ICC, JPEG_MARKER_MAXSIZE); + } + int ret = jpeg_read_header(&cinfo, TRUE); + if (ret != JPEG_HEADER_OK) { + jpeg_destroy_decompress(&cinfo); + return FALSE; + } + width = cinfo.image_width; + height = cinfo.image_height; + num_components = cinfo.num_components; + color_transform = + cinfo.jpeg_color_space == JCS_YCbCr || cinfo.jpeg_color_space == JCS_YCCK; + bits_per_components = cinfo.data_precision; + if (icc_buf_ptr) { + *icc_buf_ptr = NULL; + } + if (icc_length) { + *icc_length = 0; + } + jpeg_destroy_decompress(&cinfo); + return TRUE; +} + +class CCodec_JpegDecoder : public CCodec_ScanlineDecoder { + public: + CCodec_JpegDecoder(); + ~CCodec_JpegDecoder() override; + + FX_BOOL Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + FX_BOOL ColorTransform); + void Destroy() { delete this; } + + // CCodec_ScanlineDecoder + void v_DownScale(int dest_width, int dest_height) override; + FX_BOOL v_Rewind() override; + uint8_t* v_GetNextLine() override; + FX_DWORD GetSrcOffset() override; + + FX_BOOL InitDecode(); + + jmp_buf m_JmpBuf; + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr jerr; + struct jpeg_source_mgr src; + const uint8_t* m_SrcBuf; + FX_DWORD m_SrcSize; + uint8_t* m_pScanlineBuf; + + FX_BOOL m_bInited; + FX_BOOL m_bStarted; + FX_BOOL m_bJpegTransform; + + protected: + FX_DWORD m_nDefaultScaleDenom; +}; + +CCodec_JpegDecoder::CCodec_JpegDecoder() { + m_pScanlineBuf = NULL; + m_DownScale = 1; + m_bStarted = FALSE; + m_bInited = FALSE; + FXSYS_memset(&cinfo, 0, sizeof(cinfo)); + FXSYS_memset(&jerr, 0, sizeof(jerr)); + FXSYS_memset(&src, 0, sizeof(src)); + m_nDefaultScaleDenom = 1; +} +CCodec_JpegDecoder::~CCodec_JpegDecoder() { + FX_Free(m_pScanlineBuf); + if (m_bInited) { + jpeg_destroy_decompress(&cinfo); + } +} +FX_BOOL CCodec_JpegDecoder::InitDecode() { + cinfo.err = &jerr; + cinfo.client_data = &m_JmpBuf; + if (setjmp(m_JmpBuf) == -1) { + return FALSE; + } + jpeg_create_decompress(&cinfo); + m_bInited = TRUE; + cinfo.src = &src; + src.bytes_in_buffer = m_SrcSize; + src.next_input_byte = m_SrcBuf; + if (setjmp(m_JmpBuf) == -1) { + jpeg_destroy_decompress(&cinfo); + m_bInited = FALSE; + return FALSE; + } + cinfo.image_width = m_OrigWidth; + cinfo.image_height = m_OrigHeight; + int ret = jpeg_read_header(&cinfo, TRUE); + if (ret != JPEG_HEADER_OK) { + return FALSE; + } + if (cinfo.saw_Adobe_marker) { + m_bJpegTransform = TRUE; + } + if (cinfo.num_components == 3 && !m_bJpegTransform) { + cinfo.out_color_space = cinfo.jpeg_color_space; + } + m_OrigWidth = cinfo.image_width; + m_OrigHeight = cinfo.image_height; + m_OutputWidth = m_OrigWidth; + m_OutputHeight = m_OrigHeight; + m_nDefaultScaleDenom = cinfo.scale_denom; + return TRUE; +} +FX_BOOL CCodec_JpegDecoder::Create(const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + FX_BOOL ColorTransform) { + _JpegScanSOI(src_buf, src_size); + m_SrcBuf = src_buf; + m_SrcSize = src_size; + jerr.error_exit = _error_fatal; + jerr.emit_message = _error_do_nothing1; + jerr.output_message = _error_do_nothing; + jerr.format_message = _error_do_nothing2; + jerr.reset_error_mgr = _error_do_nothing; + src.init_source = _src_do_nothing; + src.term_source = _src_do_nothing; + src.skip_input_data = _src_skip_data; + src.fill_input_buffer = _src_fill_buffer; + src.resync_to_restart = _src_resync; + m_bJpegTransform = ColorTransform; + if (src_size > 1 && + FXSYS_memcmp(src_buf + src_size - 2, "\xFF\xD9", 2) != 0) { + ((uint8_t*)src_buf)[src_size - 2] = 0xFF; + ((uint8_t*)src_buf)[src_size - 1] = 0xD9; + } + m_OutputWidth = m_OrigWidth = width; + m_OutputHeight = m_OrigHeight = height; + if (!InitDecode()) { + return FALSE; + } + if (cinfo.num_components < nComps) { + return FALSE; + } + if ((int)cinfo.image_width < width) { + return FALSE; + } + m_Pitch = + (static_cast(cinfo.image_width) * cinfo.num_components + 3) / + 4 * 4; + m_pScanlineBuf = FX_Alloc(uint8_t, m_Pitch); + m_nComps = cinfo.num_components; + m_bpc = 8; + m_bColorTransformed = FALSE; + m_bStarted = FALSE; + return TRUE; +} +extern "C" { +int32_t FX_GetDownsampleRatio(int32_t originWidth, + int32_t originHeight, + int32_t downsampleWidth, + int32_t downsampleHeight) { + int iratio_w = originWidth / downsampleWidth; + int iratio_h = originHeight / downsampleHeight; + int ratio = (iratio_w > iratio_h) ? iratio_h : iratio_w; + if (ratio >= 8) { + return 8; + } + if (ratio >= 4) { + return 4; + } + if (ratio >= 2) { + return 2; + } + return 1; +} +} +void CCodec_JpegDecoder::v_DownScale(int dest_width, int dest_height) { + int old_scale = m_DownScale; + m_DownScale = + FX_GetDownsampleRatio(m_OrigWidth, m_OrigHeight, dest_width, dest_height); + m_OutputWidth = (m_OrigWidth + m_DownScale - 1) / m_DownScale; + m_OutputHeight = (m_OrigHeight + m_DownScale - 1) / m_DownScale; + m_Pitch = (static_cast(m_OutputWidth) * m_nComps + 3) / 4 * 4; + if (old_scale != m_DownScale) { + m_NextLine = -1; + } +} +FX_BOOL CCodec_JpegDecoder::v_Rewind() { + if (m_bStarted) { + jpeg_destroy_decompress(&cinfo); + if (!InitDecode()) { + return FALSE; + } + } + if (setjmp(m_JmpBuf) == -1) { + return FALSE; + } + cinfo.scale_denom = m_nDefaultScaleDenom * m_DownScale; + m_OutputWidth = (m_OrigWidth + m_DownScale - 1) / m_DownScale; + m_OutputHeight = (m_OrigHeight + m_DownScale - 1) / m_DownScale; + if (!jpeg_start_decompress(&cinfo)) { + jpeg_destroy_decompress(&cinfo); + return FALSE; + } + if ((int)cinfo.output_width > m_OrigWidth) { + FXSYS_assert(FALSE); + return FALSE; + } + m_bStarted = TRUE; + return TRUE; +} +uint8_t* CCodec_JpegDecoder::v_GetNextLine() { + if (setjmp(m_JmpBuf) == -1) + return nullptr; + + int nlines = jpeg_read_scanlines(&cinfo, &m_pScanlineBuf, 1); + if (nlines < 1) { + return nullptr; + } + return m_pScanlineBuf; +} +FX_DWORD CCodec_JpegDecoder::GetSrcOffset() { + return (FX_DWORD)(m_SrcSize - src.bytes_in_buffer); +} +ICodec_ScanlineDecoder* CCodec_JpegModule::CreateDecoder( + const uint8_t* src_buf, + FX_DWORD src_size, + int width, + int height, + int nComps, + FX_BOOL ColorTransform) { + if (!src_buf || src_size == 0) { + return NULL; + } + CCodec_JpegDecoder* pDecoder = new CCodec_JpegDecoder; + if (!pDecoder->Create(src_buf, src_size, width, height, nComps, + ColorTransform)) { + delete pDecoder; + return NULL; + } + return pDecoder; +} +FX_BOOL CCodec_JpegModule::LoadInfo(const uint8_t* src_buf, + FX_DWORD src_size, + int& width, + int& height, + int& num_components, + int& bits_per_components, + FX_BOOL& color_transform, + uint8_t** icc_buf_ptr, + FX_DWORD* icc_length) { + return _JpegLoadInfo(src_buf, src_size, width, height, num_components, + bits_per_components, color_transform, icc_buf_ptr, + icc_length); +} +FX_BOOL CCodec_JpegModule::Encode(const CFX_DIBSource* pSource, + uint8_t*& dest_buf, + FX_STRSIZE& dest_size, + int quality, + const uint8_t* icc_buf, + FX_DWORD icc_length) { + if (pSource->GetBPP() < 8 || pSource->GetPalette()) + return FALSE; + + _JpegEncode(pSource, dest_buf, dest_size, quality, icc_buf, icc_length); + return TRUE; +} +struct FXJPEG_Context { + jmp_buf m_JumpMark; + jpeg_decompress_struct m_Info; + jpeg_error_mgr m_ErrMgr; + jpeg_source_mgr m_SrcMgr; + unsigned int m_SkipSize; + void* (*m_AllocFunc)(unsigned int); + void (*m_FreeFunc)(void*); +}; +extern "C" { +static void _error_fatal1(j_common_ptr cinfo) { + longjmp(((FXJPEG_Context*)cinfo->client_data)->m_JumpMark, -1); +} +}; +extern "C" { +static void _src_skip_data1(struct jpeg_decompress_struct* cinfo, long num) { + if (cinfo->src->bytes_in_buffer < (size_t)num) { + ((FXJPEG_Context*)cinfo->client_data)->m_SkipSize = + (unsigned int)(num - cinfo->src->bytes_in_buffer); + cinfo->src->bytes_in_buffer = 0; + } else { + cinfo->src->next_input_byte += num; + cinfo->src->bytes_in_buffer -= num; + } +} +}; +static void* jpeg_alloc_func(unsigned int size) { + return FX_Alloc(char, size); +} +static void jpeg_free_func(void* p) { + FX_Free(p); +} +void* CCodec_JpegModule::Start() { + FXJPEG_Context* p = FX_Alloc(FXJPEG_Context, 1); + p->m_AllocFunc = jpeg_alloc_func; + p->m_FreeFunc = jpeg_free_func; + p->m_ErrMgr.error_exit = _error_fatal1; + p->m_ErrMgr.emit_message = _error_do_nothing1; + p->m_ErrMgr.output_message = _error_do_nothing; + p->m_ErrMgr.format_message = _error_do_nothing2; + p->m_ErrMgr.reset_error_mgr = _error_do_nothing; + p->m_SrcMgr.init_source = _src_do_nothing; + p->m_SrcMgr.term_source = _src_do_nothing; + p->m_SrcMgr.skip_input_data = _src_skip_data1; + p->m_SrcMgr.fill_input_buffer = _src_fill_buffer; + p->m_SrcMgr.resync_to_restart = _src_resync; + p->m_Info.client_data = p; + p->m_Info.err = &p->m_ErrMgr; + if (setjmp(p->m_JumpMark) == -1) { + return 0; + } + jpeg_create_decompress(&p->m_Info); + p->m_Info.src = &p->m_SrcMgr; + p->m_SkipSize = 0; + return p; +} +void CCodec_JpegModule::Finish(void* pContext) { + FXJPEG_Context* p = (FXJPEG_Context*)pContext; + jpeg_destroy_decompress(&p->m_Info); + p->m_FreeFunc(p); +} +void CCodec_JpegModule::Input(void* pContext, + const unsigned char* src_buf, + FX_DWORD src_size) { + FXJPEG_Context* p = (FXJPEG_Context*)pContext; + if (p->m_SkipSize) { + if (p->m_SkipSize > src_size) { + p->m_SrcMgr.bytes_in_buffer = 0; + p->m_SkipSize -= src_size; + return; + } + src_size -= p->m_SkipSize; + src_buf += p->m_SkipSize; + p->m_SkipSize = 0; + } + p->m_SrcMgr.next_input_byte = src_buf; + p->m_SrcMgr.bytes_in_buffer = src_size; +} + +#ifdef PDF_ENABLE_XFA +int CCodec_JpegModule::ReadHeader(void* pContext, + int* width, + int* height, + int* nComps, + CFX_DIBAttribute* pAttribute) { +#else // PDF_ENABLE_XFA +int CCodec_JpegModule::ReadHeader(void* pContext, + int* width, + int* height, + int* nComps) { +#endif // PDF_ENABLE_XFA + FXJPEG_Context* p = (FXJPEG_Context*)pContext; + if (setjmp(p->m_JumpMark) == -1) { + return 1; + } + int ret = jpeg_read_header(&p->m_Info, true); + if (ret == JPEG_SUSPENDED) { + return 2; + } + if (ret != JPEG_HEADER_OK) { + return 1; + } + *width = p->m_Info.image_width; + *height = p->m_Info.image_height; + *nComps = p->m_Info.num_components; +#ifdef PDF_ENABLE_XFA + _JpegLoadAttribute(&p->m_Info, pAttribute); +#endif + return 0; +} +int CCodec_JpegModule::StartScanline(void* pContext, int down_scale) { + FXJPEG_Context* p = (FXJPEG_Context*)pContext; + if (setjmp(p->m_JumpMark) == -1) { + return 0; + } + p->m_Info.scale_denom = down_scale; + return jpeg_start_decompress(&p->m_Info); +} +FX_BOOL CCodec_JpegModule::ReadScanline(void* pContext, + unsigned char* dest_buf) { + FXJPEG_Context* p = (FXJPEG_Context*)pContext; + if (setjmp(p->m_JumpMark) == -1) { + return FALSE; + } + int nlines = jpeg_read_scanlines(&p->m_Info, &dest_buf, 1); + return nlines == 1; +} +FX_DWORD CCodec_JpegModule::GetAvailInput(void* pContext, + uint8_t** avail_buf_ptr) { + if (avail_buf_ptr) { + *avail_buf_ptr = NULL; + if (((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer > 0) { + *avail_buf_ptr = + (uint8_t*)((FXJPEG_Context*)pContext)->m_SrcMgr.next_input_byte; + } + } + return (FX_DWORD)((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer; +} diff --git a/core/fxcodec/codec/fx_codec_jpx_opj.cpp b/core/fxcodec/codec/fx_codec_jpx_opj.cpp new file mode 100644 index 0000000000..486cb929b8 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_jpx_opj.cpp @@ -0,0 +1,887 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include +#include +#include + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fpdfapi/fpdf_resource.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "third_party/lcms2-2.6/include/lcms2.h" +#include "third_party/libopenjpeg20/openjpeg.h" + +static void fx_error_callback(const char* msg, void* client_data) { + (void)client_data; +} +static void fx_warning_callback(const char* msg, void* client_data) { + (void)client_data; +} +static void fx_info_callback(const char* msg, void* client_data) { + (void)client_data; +} +OPJ_SIZE_T opj_read_from_memory(void* p_buffer, + OPJ_SIZE_T nb_bytes, + void* p_user_data) { + DecodeData* srcData = static_cast(p_user_data); + if (!srcData || !srcData->src_data || srcData->src_size == 0) { + return -1; + } + // Reads at EOF return an error code. + if (srcData->offset >= srcData->src_size) { + return -1; + } + OPJ_SIZE_T bufferLength = srcData->src_size - srcData->offset; + OPJ_SIZE_T readlength = nb_bytes < bufferLength ? nb_bytes : bufferLength; + memcpy(p_buffer, &srcData->src_data[srcData->offset], readlength); + srcData->offset += readlength; + return readlength; +} +OPJ_SIZE_T opj_write_from_memory(void* p_buffer, + OPJ_SIZE_T nb_bytes, + void* p_user_data) { + DecodeData* srcData = static_cast(p_user_data); + if (!srcData || !srcData->src_data || srcData->src_size == 0) { + return -1; + } + // Writes at EOF return an error code. + if (srcData->offset >= srcData->src_size) { + return -1; + } + OPJ_SIZE_T bufferLength = srcData->src_size - srcData->offset; + OPJ_SIZE_T writeLength = nb_bytes < bufferLength ? nb_bytes : bufferLength; + memcpy(&srcData->src_data[srcData->offset], p_buffer, writeLength); + srcData->offset += writeLength; + return writeLength; +} +OPJ_OFF_T opj_skip_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data) { + DecodeData* srcData = static_cast(p_user_data); + if (!srcData || !srcData->src_data || srcData->src_size == 0) { + return -1; + } + // Offsets are signed and may indicate a negative skip. Do not support this + // because of the strange return convention where either bytes skipped or + // -1 is returned. Following that convention, a successful relative seek of + // -1 bytes would be required to to give the same result as the error case. + if (nb_bytes < 0) { + return -1; + } + // FIXME: use std::make_unsigned::type once c++11 lib is OK'd. + uint64_t unsignedNbBytes = static_cast(nb_bytes); + // Additionally, the offset may take us beyond the range of a size_t (e.g. + // 32-bit platforms). If so, just clamp at EOF. + if (unsignedNbBytes > + std::numeric_limits::max() - srcData->offset) { + srcData->offset = srcData->src_size; + } else { + OPJ_SIZE_T checkedNbBytes = static_cast(unsignedNbBytes); + // Otherwise, mimic fseek() semantics to always succeed, even past EOF, + // clamping at EOF. We can get away with this since we don't actually + // provide negative relative skips from beyond EOF back to inside the + // data, which would be the only reason to need to know exactly how far + // beyond EOF we are. + srcData->offset = + std::min(srcData->offset + checkedNbBytes, srcData->src_size); + } + return nb_bytes; +} +OPJ_BOOL opj_seek_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data) { + DecodeData* srcData = static_cast(p_user_data); + if (!srcData || !srcData->src_data || srcData->src_size == 0) { + return OPJ_FALSE; + } + // Offsets are signed and may indicate a negative position, which would + // be before the start of the file. Do not support this. + if (nb_bytes < 0) { + return OPJ_FALSE; + } + // FIXME: use std::make_unsigned::type once c++11 lib is OK'd. + uint64_t unsignedNbBytes = static_cast(nb_bytes); + // Additionally, the offset may take us beyond the range of a size_t (e.g. + // 32-bit platforms). If so, just clamp at EOF. + if (unsignedNbBytes > std::numeric_limits::max()) { + srcData->offset = srcData->src_size; + } else { + OPJ_SIZE_T checkedNbBytes = static_cast(nb_bytes); + // Otherwise, mimic fseek() semantics to always succeed, even past EOF, + // again clamping at EOF. + srcData->offset = std::min(checkedNbBytes, srcData->src_size); + } + return OPJ_TRUE; +} +opj_stream_t* fx_opj_stream_create_memory_stream(DecodeData* data, + OPJ_SIZE_T p_size, + OPJ_BOOL p_is_read_stream) { + opj_stream_t* l_stream = 00; + if (!data || !data->src_data || data->src_size <= 0) { + return NULL; + } + l_stream = opj_stream_create(p_size, p_is_read_stream); + if (!l_stream) { + return NULL; + } + opj_stream_set_user_data(l_stream, data, NULL); + opj_stream_set_user_data_length(l_stream, data->src_size); + opj_stream_set_read_function(l_stream, opj_read_from_memory); + opj_stream_set_write_function(l_stream, opj_write_from_memory); + opj_stream_set_skip_function(l_stream, opj_skip_from_memory); + opj_stream_set_seek_function(l_stream, opj_seek_from_memory); + return l_stream; +} +static void sycc_to_rgb(int offset, + int upb, + int y, + int cb, + int cr, + int* out_r, + int* out_g, + int* out_b) { + int r, g, b; + cb -= offset; + cr -= offset; + r = y + (int)(1.402 * (float)cr); + if (r < 0) { + r = 0; + } else if (r > upb) { + r = upb; + } + *out_r = r; + g = y - (int)(0.344 * (float)cb + 0.714 * (float)cr); + if (g < 0) { + g = 0; + } else if (g > upb) { + g = upb; + } + *out_g = g; + b = y + (int)(1.772 * (float)cb); + if (b < 0) { + b = 0; + } else if (b > upb) { + b = upb; + } + *out_b = b; +} +static void sycc444_to_rgb(opj_image_t* img) { + int prec = img->comps[0].prec; + int offset = 1 << (prec - 1); + int upb = (1 << prec) - 1; + OPJ_UINT32 maxw = + std::min(std::min(img->comps[0].w, img->comps[1].w), img->comps[2].w); + OPJ_UINT32 maxh = + std::min(std::min(img->comps[0].h, img->comps[1].h), img->comps[2].h); + FX_SAFE_SIZE_T max_size = maxw; + max_size *= maxh; + if (!max_size.IsValid()) + return; + + const int* y = img->comps[0].data; + const int* cb = img->comps[1].data; + const int* cr = img->comps[2].data; + int *d0, *d1, *d2, *r, *g, *b; + d0 = r = FX_Alloc(int, max_size.ValueOrDie()); + d1 = g = FX_Alloc(int, max_size.ValueOrDie()); + d2 = b = FX_Alloc(int, max_size.ValueOrDie()); + for (size_t i = 0; i < max_size.ValueOrDie(); ++i) { + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++cb; + ++cr; + ++r; + ++g; + ++b; + } + FX_Free(img->comps[0].data); + img->comps[0].data = d0; + FX_Free(img->comps[1].data); + img->comps[1].data = d1; + FX_Free(img->comps[2].data); + img->comps[2].data = d2; +} +static void sycc422_to_rgb(opj_image_t* img) { + int prec = img->comps[0].prec; + int offset = 1 << (prec - 1); + int upb = (1 << prec) - 1; + OPJ_UINT32 maxw = + std::min(std::min(img->comps[0].w, img->comps[1].w), img->comps[2].w); + OPJ_UINT32 maxh = + std::min(std::min(img->comps[0].h, img->comps[1].h), img->comps[2].h); + FX_SAFE_SIZE_T max_size = maxw; + max_size *= maxh; + if (!max_size.IsValid()) + return; + + const int* y = img->comps[0].data; + const int* cb = img->comps[1].data; + const int* cr = img->comps[2].data; + int *d0, *d1, *d2, *r, *g, *b; + d0 = r = FX_Alloc(int, max_size.ValueOrDie()); + d1 = g = FX_Alloc(int, max_size.ValueOrDie()); + d2 = b = FX_Alloc(int, max_size.ValueOrDie()); + for (uint32_t i = 0; i < maxh; ++i) { + OPJ_UINT32 j; + for (j = 0; j < (maxw & ~static_cast(1)); j += 2) { + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + ++cb; + ++cr; + } + if (j < maxw) { + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + ++cb; + ++cr; + } + } + FX_Free(img->comps[0].data); + img->comps[0].data = d0; + FX_Free(img->comps[1].data); + img->comps[1].data = d1; + FX_Free(img->comps[2].data); + img->comps[2].data = d2; + img->comps[1].w = maxw; + img->comps[1].h = maxh; + img->comps[2].w = maxw; + img->comps[2].h = maxh; + img->comps[1].dx = img->comps[0].dx; + img->comps[2].dx = img->comps[0].dx; + img->comps[1].dy = img->comps[0].dy; + img->comps[2].dy = img->comps[0].dy; +} +static bool sycc420_size_is_valid(OPJ_UINT32 y, OPJ_UINT32 cbcr) { + if (!y || !cbcr) + return false; + + return (cbcr == y / 2) || ((y & 1) && (cbcr == y / 2 + 1)); +} +static bool sycc420_must_extend_cbcr(OPJ_UINT32 y, OPJ_UINT32 cbcr) { + return (y & 1) && (cbcr == y / 2); +} +void sycc420_to_rgb(opj_image_t* img) { + OPJ_UINT32 prec = img->comps[0].prec; + if (!prec) + return; + OPJ_UINT32 offset = 1 << (prec - 1); + OPJ_UINT32 upb = (1 << prec) - 1; + OPJ_UINT32 yw = img->comps[0].w; + OPJ_UINT32 yh = img->comps[0].h; + OPJ_UINT32 cbw = img->comps[1].w; + OPJ_UINT32 cbh = img->comps[1].h; + OPJ_UINT32 crw = img->comps[2].w; + OPJ_UINT32 crh = img->comps[2].h; + if (cbw != crw || cbh != crh) + return; + if (!sycc420_size_is_valid(yw, cbw) || !sycc420_size_is_valid(yh, cbh)) + return; + bool extw = sycc420_must_extend_cbcr(yw, cbw); + bool exth = sycc420_must_extend_cbcr(yh, cbh); + FX_SAFE_DWORD safeSize = yw; + safeSize *= yh; + if (!safeSize.IsValid()) + return; + int* r = FX_Alloc(int, safeSize.ValueOrDie()); + int* g = FX_Alloc(int, safeSize.ValueOrDie()); + int* b = FX_Alloc(int, safeSize.ValueOrDie()); + int* d0 = r; + int* d1 = g; + int* d2 = b; + const int* y = img->comps[0].data; + const int* cb = img->comps[1].data; + const int* cr = img->comps[2].data; + const int* ny = nullptr; + int* nr = nullptr; + int* ng = nullptr; + int* nb = nullptr; + OPJ_UINT32 i = 0; + OPJ_UINT32 j = 0; + for (i = 0; i < (yh & ~(OPJ_UINT32)1); i += 2) { + ny = y + yw; + nr = r + yw; + ng = g + yw; + nb = b + yw; + for (j = 0; j < (yw & ~(OPJ_UINT32)1); j += 2) { + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); + ++ny; + ++nr; + ++ng; + ++nb; + sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); + ++ny; + ++nr; + ++ng; + ++nb; + ++cb; + ++cr; + } + if (j < yw) { + if (extw) { + --cb; + --cr; + } + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); + ++ny; + ++nr; + ++ng; + ++nb; + ++cb; + ++cr; + } + y += yw; + r += yw; + g += yw; + b += yw; + } + if (i < yh) { + if (exth) { + cb -= cbw; + cr -= crw; + } + for (j = 0; j < (yw & ~(OPJ_UINT32)1); j += 2) { + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + ++y; + ++r; + ++g; + ++b; + ++cb; + ++cr; + } + if (j < yw) { + if (extw) { + --cb; + --cr; + } + sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); + } + } + + FX_Free(img->comps[0].data); + img->comps[0].data = d0; + FX_Free(img->comps[1].data); + img->comps[1].data = d1; + FX_Free(img->comps[2].data); + img->comps[2].data = d2; + img->comps[1].w = yw; + img->comps[1].h = yh; + img->comps[2].w = yw; + img->comps[2].h = yh; + img->comps[1].w = yw; + img->comps[1].h = yh; + img->comps[2].w = yw; + img->comps[2].h = yh; + img->comps[1].dx = img->comps[0].dx; + img->comps[2].dx = img->comps[0].dx; + img->comps[1].dy = img->comps[0].dy; + img->comps[2].dy = img->comps[0].dy; +} +void color_sycc_to_rgb(opj_image_t* img) { + if (img->numcomps < 3) { + img->color_space = OPJ_CLRSPC_GRAY; + return; + } + if ((img->comps[0].dx == 1) && (img->comps[1].dx == 2) && + (img->comps[2].dx == 2) && (img->comps[0].dy == 1) && + (img->comps[1].dy == 2) && (img->comps[2].dy == 2)) { + sycc420_to_rgb(img); + } else if ((img->comps[0].dx == 1) && (img->comps[1].dx == 2) && + (img->comps[2].dx == 2) && (img->comps[0].dy == 1) && + (img->comps[1].dy == 1) && (img->comps[2].dy == 1)) { + sycc422_to_rgb(img); + } else if ((img->comps[0].dx == 1) && (img->comps[1].dx == 1) && + (img->comps[2].dx == 1) && (img->comps[0].dy == 1) && + (img->comps[1].dy == 1) && (img->comps[2].dy == 1)) { + sycc444_to_rgb(img); + } else { + return; + } + img->color_space = OPJ_CLRSPC_SRGB; +} +void color_apply_icc_profile(opj_image_t* image) { + cmsHPROFILE out_prof; + cmsUInt32Number in_type; + cmsUInt32Number out_type; + int* r; + int* g; + int* b; + int max; + cmsHPROFILE in_prof = + cmsOpenProfileFromMem(image->icc_profile_buf, image->icc_profile_len); + if (!in_prof) { + return; + } + cmsColorSpaceSignature out_space = cmsGetColorSpace(in_prof); + cmsUInt32Number intent = cmsGetHeaderRenderingIntent(in_prof); + int max_w = (int)image->comps[0].w; + int max_h = (int)image->comps[0].h; + int prec = (int)image->comps[0].prec; + OPJ_COLOR_SPACE oldspace = image->color_space; + if (out_space == cmsSigRgbData) { + if (prec <= 8) { + in_type = TYPE_RGB_8; + out_type = TYPE_RGB_8; + } else { + in_type = TYPE_RGB_16; + out_type = TYPE_RGB_16; + } + out_prof = cmsCreate_sRGBProfile(); + image->color_space = OPJ_CLRSPC_SRGB; + } else if (out_space == cmsSigGrayData) { + if (prec <= 8) { + in_type = TYPE_GRAY_8; + out_type = TYPE_RGB_8; + } else { + in_type = TYPE_GRAY_16; + out_type = TYPE_RGB_16; + } + out_prof = cmsCreate_sRGBProfile(); + image->color_space = OPJ_CLRSPC_SRGB; + } else if (out_space == cmsSigYCbCrData) { + in_type = TYPE_YCbCr_16; + out_type = TYPE_RGB_16; + out_prof = cmsCreate_sRGBProfile(); + image->color_space = OPJ_CLRSPC_SRGB; + } else { + return; + } + cmsHTRANSFORM transform = + cmsCreateTransform(in_prof, in_type, out_prof, out_type, intent, 0); + cmsCloseProfile(in_prof); + cmsCloseProfile(out_prof); + if (!transform) { + image->color_space = oldspace; + return; + } + if (image->numcomps > 2) { + if (prec <= 8) { + unsigned char *inbuf, *outbuf, *in, *out; + max = max_w * max_h; + cmsUInt32Number nr_samples = max * 3 * sizeof(unsigned char); + in = inbuf = FX_Alloc(unsigned char, nr_samples); + out = outbuf = FX_Alloc(unsigned char, nr_samples); + r = image->comps[0].data; + g = image->comps[1].data; + b = image->comps[2].data; + for (int i = 0; i < max; ++i) { + *in++ = (unsigned char)*r++; + *in++ = (unsigned char)*g++; + *in++ = (unsigned char)*b++; + } + cmsDoTransform(transform, inbuf, outbuf, (cmsUInt32Number)max); + r = image->comps[0].data; + g = image->comps[1].data; + b = image->comps[2].data; + for (int i = 0; i < max; ++i) { + *r++ = (int)*out++; + *g++ = (int)*out++; + *b++ = (int)*out++; + } + FX_Free(inbuf); + FX_Free(outbuf); + } else { + unsigned short *inbuf, *outbuf, *in, *out; + max = max_w * max_h; + cmsUInt32Number nr_samples = max * 3 * sizeof(unsigned short); + in = inbuf = FX_Alloc(unsigned short, nr_samples); + out = outbuf = FX_Alloc(unsigned short, nr_samples); + r = image->comps[0].data; + g = image->comps[1].data; + b = image->comps[2].data; + for (int i = 0; i < max; ++i) { + *in++ = (unsigned short)*r++; + *in++ = (unsigned short)*g++; + *in++ = (unsigned short)*b++; + } + cmsDoTransform(transform, inbuf, outbuf, (cmsUInt32Number)max); + r = image->comps[0].data; + g = image->comps[1].data; + b = image->comps[2].data; + for (int i = 0; i < max; ++i) { + *r++ = (int)*out++; + *g++ = (int)*out++; + *b++ = (int)*out++; + } + FX_Free(inbuf); + FX_Free(outbuf); + } + } else { + unsigned char *in, *inbuf, *out, *outbuf; + max = max_w * max_h; + cmsUInt32Number nr_samples = + (cmsUInt32Number)max * 3 * sizeof(unsigned char); + in = inbuf = FX_Alloc(unsigned char, nr_samples); + out = outbuf = FX_Alloc(unsigned char, nr_samples); + image->comps = (opj_image_comp_t*)realloc( + image->comps, (image->numcomps + 2) * sizeof(opj_image_comp_t)); + if (image->numcomps == 2) { + image->comps[3] = image->comps[1]; + } + image->comps[1] = image->comps[0]; + image->comps[2] = image->comps[0]; + image->comps[1].data = FX_Alloc(int, (size_t)max); + FXSYS_memset(image->comps[1].data, 0, sizeof(int) * (size_t)max); + image->comps[2].data = FX_Alloc(int, (size_t)max); + FXSYS_memset(image->comps[2].data, 0, sizeof(int) * (size_t)max); + image->numcomps += 2; + r = image->comps[0].data; + for (int i = 0; i < max; ++i) { + *in++ = (unsigned char)*r++; + } + cmsDoTransform(transform, inbuf, outbuf, (cmsUInt32Number)max); + r = image->comps[0].data; + g = image->comps[1].data; + b = image->comps[2].data; + for (int i = 0; i < max; ++i) { + *r++ = (int)*out++; + *g++ = (int)*out++; + *b++ = (int)*out++; + } + FX_Free(inbuf); + FX_Free(outbuf); + } + cmsDeleteTransform(transform); +} +void color_apply_conversion(opj_image_t* image) { + int* row; + int enumcs, numcomps; + numcomps = image->numcomps; + if (numcomps < 3) { + return; + } + row = (int*)image->icc_profile_buf; + enumcs = row[0]; + if (enumcs == 14) { + int *L, *a, *b, *red, *green, *blue, *src0, *src1, *src2; + double rl, ol, ra, oa, rb, ob, prec0, prec1, prec2; + double minL, maxL, mina, maxa, minb, maxb; + unsigned int default_type; + unsigned int i, max; + cmsHPROFILE in, out; + cmsHTRANSFORM transform; + cmsUInt16Number RGB[3]; + cmsCIELab Lab; + in = cmsCreateLab4Profile(NULL); + out = cmsCreate_sRGBProfile(); + transform = cmsCreateTransform(in, TYPE_Lab_DBL, out, TYPE_RGB_16, + INTENT_PERCEPTUAL, 0); + cmsCloseProfile(in); + cmsCloseProfile(out); + if (!transform) { + return; + } + prec0 = (double)image->comps[0].prec; + prec1 = (double)image->comps[1].prec; + prec2 = (double)image->comps[2].prec; + default_type = row[1]; + if (default_type == 0x44454600) { + rl = 100; + ra = 170; + rb = 200; + ol = 0; + oa = pow(2, prec1 - 1); + ob = pow(2, prec2 - 2) + pow(2, prec2 - 3); + } else { + rl = row[2]; + ra = row[4]; + rb = row[6]; + ol = row[3]; + oa = row[5]; + ob = row[7]; + } + L = src0 = image->comps[0].data; + a = src1 = image->comps[1].data; + b = src2 = image->comps[2].data; + max = image->comps[0].w * image->comps[0].h; + red = FX_Alloc(int, max); + image->comps[0].data = red; + green = FX_Alloc(int, max); + image->comps[1].data = green; + blue = FX_Alloc(int, max); + image->comps[2].data = blue; + minL = -(rl * ol) / (pow(2, prec0) - 1); + maxL = minL + rl; + mina = -(ra * oa) / (pow(2, prec1) - 1); + maxa = mina + ra; + minb = -(rb * ob) / (pow(2, prec2) - 1); + maxb = minb + rb; + for (i = 0; i < max; ++i) { + Lab.L = minL + (double)(*L) * (maxL - minL) / (pow(2, prec0) - 1); + ++L; + Lab.a = mina + (double)(*a) * (maxa - mina) / (pow(2, prec1) - 1); + ++a; + Lab.b = minb + (double)(*b) * (maxb - minb) / (pow(2, prec2) - 1); + ++b; + cmsDoTransform(transform, &Lab, RGB, 1); + *red++ = RGB[0]; + *green++ = RGB[1]; + *blue++ = RGB[2]; + } + cmsDeleteTransform(transform); + FX_Free(src0); + FX_Free(src1); + FX_Free(src2); + image->color_space = OPJ_CLRSPC_SRGB; + image->comps[0].prec = 16; + image->comps[1].prec = 16; + image->comps[2].prec = 16; + return; + } +} +class CJPX_Decoder { + public: + explicit CJPX_Decoder(CPDF_ColorSpace* cs); + ~CJPX_Decoder(); + FX_BOOL Init(const unsigned char* src_data, FX_DWORD src_size); + void GetInfo(FX_DWORD* width, FX_DWORD* height, FX_DWORD* components); + bool Decode(uint8_t* dest_buf, + int pitch, + const std::vector& offsets); + + private: + const uint8_t* m_SrcData; + FX_DWORD m_SrcSize; + opj_image_t* image; + opj_codec_t* l_codec; + opj_stream_t* l_stream; + const CPDF_ColorSpace* const m_ColorSpace; +}; + +CJPX_Decoder::CJPX_Decoder(CPDF_ColorSpace* cs) + : image(nullptr), l_codec(nullptr), l_stream(nullptr), m_ColorSpace(cs) {} + +CJPX_Decoder::~CJPX_Decoder() { + if (l_codec) { + opj_destroy_codec(l_codec); + } + if (l_stream) { + opj_stream_destroy(l_stream); + } + if (image) { + opj_image_destroy(image); + } +} + +FX_BOOL CJPX_Decoder::Init(const unsigned char* src_data, FX_DWORD src_size) { + static const unsigned char szJP2Header[] = { + 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a}; + if (!src_data || src_size < sizeof(szJP2Header)) + return FALSE; + + image = NULL; + m_SrcData = src_data; + m_SrcSize = src_size; + DecodeData srcData(const_cast(src_data), src_size); + l_stream = fx_opj_stream_create_memory_stream(&srcData, + OPJ_J2K_STREAM_CHUNK_SIZE, 1); + if (!l_stream) { + return FALSE; + } + opj_dparameters_t parameters; + opj_set_default_decoder_parameters(¶meters); + parameters.decod_format = 0; + parameters.cod_format = 3; + if (FXSYS_memcmp(m_SrcData, szJP2Header, sizeof(szJP2Header)) == 0) { + l_codec = opj_create_decompress(OPJ_CODEC_JP2); + parameters.decod_format = 1; + } else { + l_codec = opj_create_decompress(OPJ_CODEC_J2K); + } + if (!l_codec) { + return FALSE; + } + if (m_ColorSpace && m_ColorSpace->GetFamily() == PDFCS_INDEXED) + parameters.flags |= OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG; + opj_set_info_handler(l_codec, fx_info_callback, 00); + opj_set_warning_handler(l_codec, fx_warning_callback, 00); + opj_set_error_handler(l_codec, fx_error_callback, 00); + if (!opj_setup_decoder(l_codec, ¶meters)) { + return FALSE; + } + if (!opj_read_header(l_stream, l_codec, &image)) { + image = NULL; + return FALSE; + } + image->pdfium_use_colorspace = !!m_ColorSpace; + + if (!parameters.nb_tile_to_decode) { + if (!opj_set_decode_area(l_codec, image, parameters.DA_x0, parameters.DA_y0, + parameters.DA_x1, parameters.DA_y1)) { + opj_image_destroy(image); + image = NULL; + return FALSE; + } + if (!(opj_decode(l_codec, l_stream, image) && + opj_end_decompress(l_codec, l_stream))) { + opj_image_destroy(image); + image = NULL; + return FALSE; + } + } else { + if (!opj_get_decoded_tile(l_codec, l_stream, image, + parameters.tile_index)) { + return FALSE; + } + } + opj_stream_destroy(l_stream); + l_stream = NULL; + if (image->color_space != OPJ_CLRSPC_SYCC && image->numcomps == 3 && + image->comps[0].dx == image->comps[0].dy && image->comps[1].dx != 1) { + image->color_space = OPJ_CLRSPC_SYCC; + } else if (image->numcomps <= 2) { + image->color_space = OPJ_CLRSPC_GRAY; + } + if (image->color_space == OPJ_CLRSPC_SYCC) { + color_sycc_to_rgb(image); + } + if (image->icc_profile_buf) { + FX_Free(image->icc_profile_buf); + image->icc_profile_buf = NULL; + image->icc_profile_len = 0; + } + if (!image) { + return FALSE; + } + return TRUE; +} + +void CJPX_Decoder::GetInfo(FX_DWORD* width, + FX_DWORD* height, + FX_DWORD* components) { + *width = (FX_DWORD)image->x1; + *height = (FX_DWORD)image->y1; + *components = (FX_DWORD)image->numcomps; +} + +bool CJPX_Decoder::Decode(uint8_t* dest_buf, + int pitch, + const std::vector& offsets) { + if (image->comps[0].w != image->x1 || image->comps[0].h != image->y1) + return false; + + if (pitch<(int)(image->comps[0].w * 8 * image->numcomps + 31)>> 5 << 2) + return false; + + FXSYS_memset(dest_buf, 0xff, image->y1 * pitch); + std::vector channel_bufs(image->numcomps); + std::vector adjust_comps(image->numcomps); + for (uint32_t i = 0; i < image->numcomps; i++) { + channel_bufs[i] = dest_buf + offsets[i]; + adjust_comps[i] = image->comps[i].prec - 8; + if (i > 0) { + if (image->comps[i].dx != image->comps[i - 1].dx || + image->comps[i].dy != image->comps[i - 1].dy || + image->comps[i].prec != image->comps[i - 1].prec) { + return false; + } + } + } + int width = image->comps[0].w; + int height = image->comps[0].h; + for (uint32_t channel = 0; channel < image->numcomps; ++channel) { + uint8_t* pChannel = channel_bufs[channel]; + if (adjust_comps[channel] < 0) { + for (int row = 0; row < height; ++row) { + uint8_t* pScanline = pChannel + row * pitch; + for (int col = 0; col < width; ++col) { + uint8_t* pPixel = pScanline + col * image->numcomps; + int src = image->comps[channel].data[row * width + col]; + src += image->comps[channel].sgnd + ? 1 << (image->comps[channel].prec - 1) + : 0; + if (adjust_comps[channel] > 0) { + *pPixel = 0; + } else { + *pPixel = (uint8_t)(src << -adjust_comps[channel]); + } + } + } + } else { + for (int row = 0; row < height; ++row) { + uint8_t* pScanline = pChannel + row * pitch; + for (int col = 0; col < width; ++col) { + uint8_t* pPixel = pScanline + col * image->numcomps; + if (!image->comps[channel].data) { + continue; + } + int src = image->comps[channel].data[row * width + col]; + src += image->comps[channel].sgnd + ? 1 << (image->comps[channel].prec - 1) + : 0; + if (adjust_comps[channel] - 1 < 0) { + *pPixel = (uint8_t)((src >> adjust_comps[channel])); + } else { + int tmpPixel = (src >> adjust_comps[channel]) + + ((src >> (adjust_comps[channel] - 1)) % 2); + if (tmpPixel > 255) { + tmpPixel = 255; + } else if (tmpPixel < 0) { + tmpPixel = 0; + } + *pPixel = (uint8_t)tmpPixel; + } + } + } + } + } + return true; +} + +CCodec_JpxModule::CCodec_JpxModule() {} +CCodec_JpxModule::~CCodec_JpxModule() {} + +CJPX_Decoder* CCodec_JpxModule::CreateDecoder(const uint8_t* src_buf, + FX_DWORD src_size, + CPDF_ColorSpace* cs) { + std::unique_ptr decoder(new CJPX_Decoder(cs)); + return decoder->Init(src_buf, src_size) ? decoder.release() : nullptr; +} + +void CCodec_JpxModule::GetImageInfo(CJPX_Decoder* pDecoder, + FX_DWORD* width, + FX_DWORD* height, + FX_DWORD* components) { + pDecoder->GetInfo(width, height, components); +} + +bool CCodec_JpxModule::Decode(CJPX_Decoder* pDecoder, + uint8_t* dest_data, + int pitch, + const std::vector& offsets) { + return pDecoder->Decode(dest_data, pitch, offsets); +} + +void CCodec_JpxModule::DestroyDecoder(CJPX_Decoder* pDecoder) { + delete pDecoder; +} diff --git a/core/fxcodec/codec/fx_codec_jpx_unittest.cpp b/core/fxcodec/codec/fx_codec_jpx_unittest.cpp new file mode 100644 index 0000000000..d58b152a78 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_jpx_unittest.cpp @@ -0,0 +1,532 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include + +#include + +#include "core/fxcodec/codec/codec_int.h" +#include "testing/fx_string_testhelpers.h" +#include "testing/gtest/include/gtest/gtest.h" + +static const OPJ_OFF_T kSkipError = static_cast(-1); +static const OPJ_SIZE_T kReadError = static_cast(-1); +static const OPJ_SIZE_T kWriteError = static_cast(-1); + +static unsigned char stream_data[] = { + 0x00, 0x01, 0x02, 0x03, + 0x84, 0x85, 0x86, 0x87, // Include some hi-bytes, too. +}; + +TEST(fxcodec, DecodeDataNullDecodeData) { + unsigned char buffer[16]; + DecodeData* ptr = nullptr; + + // Error codes, not segvs, should callers pass us a NULL pointer. + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, sizeof(buffer), ptr)); + EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, sizeof(buffer), ptr)); + EXPECT_EQ(kSkipError, opj_skip_from_memory(1, ptr)); + EXPECT_FALSE(opj_seek_from_memory(1, ptr)); +} + +TEST(fxcodec, DecodeDataNullStream) { + DecodeData dd(nullptr, 0); + unsigned char buffer[16]; + + // Reads of size 0 do nothing but return an error code. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 0, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + + // Reads of nonzero size do nothing but return an error code. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, sizeof(buffer), &dd)); + EXPECT_EQ(0xbd, buffer[0]); + + // writes of size 0 do nothing but return an error code. + EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, 0, &dd)); + + // writes of nonzero size do nothing but return an error code. + EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, sizeof(buffer), &dd)); + + // Skips of size 0 always return an error code. + EXPECT_EQ(kSkipError, opj_skip_from_memory(0, &dd)); + + // Skips of nonzero size always return an error code. + EXPECT_EQ(kSkipError, opj_skip_from_memory(1, &dd)); + + // Seeks to 0 offset return in error. + EXPECT_FALSE(opj_seek_from_memory(0, &dd)); + + // Seeks to non-zero offsets return in error. + EXPECT_FALSE(opj_seek_from_memory(1, &dd)); +} + +TEST(fxcodec, DecodeDataZeroSize) { + DecodeData dd(stream_data, 0); + unsigned char buffer[16]; + + // Reads of size 0 do nothing but return an error code. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 0, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + + // Reads of nonzero size do nothing but return an error code. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, sizeof(buffer), &dd)); + EXPECT_EQ(0xbd, buffer[0]); + + // writes of size 0 do nothing but return an error code. + EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, 0, &dd)); + + // writes of nonzero size do nothing but return an error code. + EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, sizeof(buffer), &dd)); + + // Skips of size 0 always return an error code. + EXPECT_EQ(kSkipError, opj_skip_from_memory(0, &dd)); + + // Skips of nonzero size always return an error code. + EXPECT_EQ(kSkipError, opj_skip_from_memory(1, &dd)); + + // Seeks to 0 offset return in error. + EXPECT_FALSE(opj_seek_from_memory(0, &dd)); + + // Seeks to non-zero offsets return in error. + EXPECT_FALSE(opj_seek_from_memory(1, &dd)); +} + +TEST(fxcodec, DecodeDataReadInBounds) { + unsigned char buffer[16]; + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Exact sized read in a single call. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(8u, opj_read_from_memory(buffer, sizeof(buffer), &dd)); + EXPECT_EQ(0x00, buffer[0]); + EXPECT_EQ(0x01, buffer[1]); + EXPECT_EQ(0x02, buffer[2]); + EXPECT_EQ(0x03, buffer[3]); + EXPECT_EQ(0x84, buffer[4]); + EXPECT_EQ(0x85, buffer[5]); + EXPECT_EQ(0x86, buffer[6]); + EXPECT_EQ(0x87, buffer[7]); + EXPECT_EQ(0xbd, buffer[8]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Simple read. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(2u, opj_read_from_memory(buffer, 2, &dd)); + EXPECT_EQ(0x00, buffer[0]); + EXPECT_EQ(0x01, buffer[1]); + EXPECT_EQ(0xbd, buffer[2]); + + // Read of size 0 doesn't affect things. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(0u, opj_read_from_memory(buffer, 0, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + + // Read exactly up to end of data. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(6u, opj_read_from_memory(buffer, 6, &dd)); + EXPECT_EQ(0x02, buffer[0]); + EXPECT_EQ(0x03, buffer[1]); + EXPECT_EQ(0x84, buffer[2]); + EXPECT_EQ(0x85, buffer[3]); + EXPECT_EQ(0x86, buffer[4]); + EXPECT_EQ(0x87, buffer[5]); + EXPECT_EQ(0xbd, buffer[6]); + + // Read of size 0 at EOF is still an error. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 0, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + } +} + +TEST(fxcodec, DecodeDataReadBeyondBounds) { + unsigned char buffer[16]; + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Read beyond bounds in a single step. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(8u, opj_read_from_memory(buffer, sizeof(buffer) + 1, &dd)); + EXPECT_EQ(0x00, buffer[0]); + EXPECT_EQ(0x01, buffer[1]); + EXPECT_EQ(0x02, buffer[2]); + EXPECT_EQ(0x03, buffer[3]); + EXPECT_EQ(0x84, buffer[4]); + EXPECT_EQ(0x85, buffer[5]); + EXPECT_EQ(0x86, buffer[6]); + EXPECT_EQ(0x87, buffer[7]); + EXPECT_EQ(0xbd, buffer[8]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Read well beyond bounds in a single step. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(8u, opj_read_from_memory( + buffer, std::numeric_limits::max(), &dd)); + EXPECT_EQ(0x00, buffer[0]); + EXPECT_EQ(0x01, buffer[1]); + EXPECT_EQ(0x02, buffer[2]); + EXPECT_EQ(0x03, buffer[3]); + EXPECT_EQ(0x84, buffer[4]); + EXPECT_EQ(0x85, buffer[5]); + EXPECT_EQ(0x86, buffer[6]); + EXPECT_EQ(0x87, buffer[7]); + EXPECT_EQ(0xbd, buffer[8]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Read of size 6 gets first 6 bytes. + // rest of buffer intact. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(6u, opj_read_from_memory(buffer, 6, &dd)); + EXPECT_EQ(0x00, buffer[0]); + EXPECT_EQ(0x01, buffer[1]); + EXPECT_EQ(0x02, buffer[2]); + EXPECT_EQ(0x03, buffer[3]); + EXPECT_EQ(0x84, buffer[4]); + EXPECT_EQ(0x85, buffer[5]); + EXPECT_EQ(0xbd, buffer[6]); + + // Read of size 6 gets remaining two bytes. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(2u, opj_read_from_memory(buffer, 6, &dd)); + EXPECT_EQ(0x86, buffer[0]); + EXPECT_EQ(0x87, buffer[1]); + EXPECT_EQ(0xbd, buffer[2]); + + // Read of 6 more gets nothing and leaves rest of buffer intact. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 6, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + } +} + +TEST(fxcodec, DecodeDataWriteInBounds) { + unsigned char stream[16]; + static unsigned char buffer_data[] = { + 0x00, 0x01, 0x02, 0x03, 0x80, 0x80, 0x81, 0x82, 0x83, 0x84, + }; + { + // Pretend the stream can only hold 4 bytes. + DecodeData dd(stream, 4); + + memset(stream, 0xbd, sizeof(stream)); + EXPECT_EQ(4u, opj_write_from_memory(buffer_data, 4, &dd)); + EXPECT_EQ(0x00, stream[0]); + EXPECT_EQ(0x01, stream[1]); + EXPECT_EQ(0x02, stream[2]); + EXPECT_EQ(0x03, stream[3]); + EXPECT_EQ(0xbd, stream[4]); + } + { + // Pretend the stream can only hold 4 bytes. + DecodeData dd(stream, 4); + + memset(stream, 0xbd, sizeof(stream)); + EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 2, &dd)); + EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 2, &dd)); + EXPECT_EQ(0x00, stream[0]); + EXPECT_EQ(0x01, stream[1]); + EXPECT_EQ(0x00, stream[2]); + EXPECT_EQ(0x01, stream[3]); + EXPECT_EQ(0xbd, stream[4]); + } +} + +TEST(fxcodec, DecodeDataWriteBeyondBounds) { + unsigned char stream[16]; + static unsigned char buffer_data[] = { + 0x10, 0x11, 0x12, 0x13, 0x94, 0x95, 0x96, 0x97, + }; + { + // Pretend the stream can only hold 4 bytes. + DecodeData dd(stream, 4); + + // Write ending past EOF transfers up til EOF. + memset(stream, 0xbd, sizeof(stream)); + EXPECT_EQ(4u, opj_write_from_memory(buffer_data, 5, &dd)); + EXPECT_EQ(0x10, stream[0]); + EXPECT_EQ(0x11, stream[1]); + EXPECT_EQ(0x12, stream[2]); + EXPECT_EQ(0x13, stream[3]); + EXPECT_EQ(0xbd, stream[4]); + + // Subsequent writes fail. + memset(stream, 0xbd, sizeof(stream)); + EXPECT_EQ(kWriteError, opj_write_from_memory(buffer_data, 5, &dd)); + EXPECT_EQ(0xbd, stream[0]); + } + { + // Pretend the stream can only hold 4 bytes. + DecodeData dd(stream, 4); + + // Write ending past EOF (two steps) transfers up til EOF. + memset(stream, 0xbd, sizeof(stream)); + EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 2, &dd)); + EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 4, &dd)); + EXPECT_EQ(0x10, stream[0]); + EXPECT_EQ(0x11, stream[1]); + EXPECT_EQ(0x10, stream[2]); + EXPECT_EQ(0x11, stream[3]); + EXPECT_EQ(0xbd, stream[4]); + + // Subsequent writes fail. + memset(stream, 0xbd, sizeof(stream)); + EXPECT_EQ(kWriteError, opj_write_from_memory(buffer_data, 5, &dd)); + EXPECT_EQ(0xbd, stream[0]); + } +} + +// Note: Some care needs to be taken here because the skip/seek functions +// take OPJ_OFF_T's as arguments, which are typically a signed type. +TEST(fxcodec, DecodeDataSkip) { + unsigned char buffer[16]; + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Skiping within buffer is allowed. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(1, opj_skip_from_memory(1, &dd)); + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x01, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Skiping 0 bytes changes nothing. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(0, opj_skip_from_memory(0, &dd)); + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x02, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Skiping to EOS-1 is possible. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x87, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Next read fails. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Skiping directly to EOS is allowed. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(8, opj_skip_from_memory(8, &dd)); + + // Next read fails. + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Skipping beyond end of stream is allowed and returns full distance. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(9, opj_skip_from_memory(9, &dd)); + + // Next read fails. + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Skipping way beyond EOS is allowd, doesn't wrap, and returns + // full distance. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); + EXPECT_EQ(std::numeric_limits::max(), + opj_skip_from_memory(std::numeric_limits::max(), &dd)); + + // Next read fails. If it succeeds, it may mean we wrapped. + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Negative skip within buffer not is allowed, position unchanged. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); + EXPECT_EQ(kSkipError, opj_skip_from_memory(-2, &dd)); + + // Next read succeeds as if nothing has happenned. + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x84, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Negative skip before buffer is not allowed, position unchanged. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(kSkipError, opj_skip_from_memory(-4, &dd)); + + // Next read succeeds as if nothing has happenned. + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x85, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Negative skip way before buffer is not allowed, doesn't wrap + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); + EXPECT_EQ(kSkipError, + opj_skip_from_memory(std::numeric_limits::min(), &dd)); + + // Next read succeeds. If it fails, it may mean we wrapped. + EXPECT_EQ(1, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x84, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + } + { + DecodeData dd(stream_data, sizeof(stream_data)); + + // Negative skip after EOS isn't alowed, still EOS. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_EQ(8, opj_skip_from_memory(8, &dd)); + EXPECT_EQ(kSkipError, opj_skip_from_memory(-4, &dd)); + + // Next read fails. + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + } +} + +TEST(fxcodec, DecodeDataSeek) { + unsigned char buffer[16]; + DecodeData dd(stream_data, sizeof(stream_data)); + + // Seeking within buffer is allowed and read succeeds + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_TRUE(opj_seek_from_memory(1, &dd)); + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x01, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Seeking before start returns error leaving position unchanged. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_FALSE(opj_seek_from_memory(-1, &dd)); + EXPECT_EQ(1, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x02, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Seeking way before start returns error leaving position unchanged. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_FALSE( + opj_seek_from_memory(std::numeric_limits::min(), &dd)); + EXPECT_EQ(1, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x03, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Seeking exactly to EOS is allowed but read fails. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_TRUE(opj_seek_from_memory(8, &dd)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + + // Seeking back to zero offset is allowed and read succeeds. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_TRUE(opj_seek_from_memory(0, &dd)); + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x00, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Seeking beyond end of stream is allowed but read fails. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_TRUE(opj_seek_from_memory(16, &dd)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); + + // Seeking within buffer after seek past EOF restores good state. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_TRUE(opj_seek_from_memory(4, &dd)); + EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0x84, buffer[0]); + EXPECT_EQ(0xbd, buffer[1]); + + // Seeking way beyond EOS is allowed, doesn't wrap, and read fails. + memset(buffer, 0xbd, sizeof(buffer)); + EXPECT_TRUE(opj_seek_from_memory(std::numeric_limits::max(), &dd)); + EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); + EXPECT_EQ(0xbd, buffer[0]); +} + +TEST(fxcodec, YUV420ToRGB) { + opj_image_comp_t u; + memset(&u, 0, sizeof(u)); + u.dx = 1; + u.dy = 1; + u.w = 16; + u.h = 16; + u.prec = 8; + u.bpp = 8; + opj_image_comp_t v; + memset(&v, 0, sizeof(v)); + v.dx = 1; + v.dy = 1; + v.w = 16; + v.h = 16; + v.prec = 8; + v.bpp = 8; + opj_image_comp_t y; + memset(&y, 0, sizeof(y)); + y.dx = 1; + y.dy = 1; + y.prec = 8; + y.bpp = 8; + opj_image_t img; + memset(&img, 0, sizeof(img)); + img.numcomps = 3; + img.color_space = OPJ_CLRSPC_SYCC; + img.comps = FX_Alloc(opj_image_comp_t, 3); + const struct { + OPJ_UINT32 w; + bool expected; + } cases[] = {{0, false}, {1, false}, {30, false}, {31, true}, + {32, true}, {33, true}, {34, false}, {UINT_MAX, false}}; + for (int i = 0; i < sizeof(cases) / sizeof(cases[0]); ++i) { + y.w = cases[i].w; + y.h = y.w; + img.x1 = y.w; + img.y1 = y.h; + y.data = FX_Alloc(OPJ_INT32, y.w * y.h); + memset(y.data, 1, y.w * y.h * sizeof(OPJ_INT32)); + u.data = FX_Alloc(OPJ_INT32, u.w * u.h); + memset(u.data, 0, u.w * u.h * sizeof(OPJ_INT32)); + v.data = FX_Alloc(OPJ_INT32, v.w * v.h); + memset(v.data, 0, v.w * v.h * sizeof(OPJ_INT32)); + img.comps[0] = y; + img.comps[1] = u; + img.comps[2] = v; + sycc420_to_rgb(&img); + if (cases[i].expected) { + EXPECT_EQ(img.comps[0].w, img.comps[1].w); + EXPECT_EQ(img.comps[0].h, img.comps[1].h); + EXPECT_EQ(img.comps[0].w, img.comps[2].w); + EXPECT_EQ(img.comps[0].h, img.comps[2].h); + } else { + EXPECT_NE(img.comps[0].w, img.comps[1].w); + EXPECT_NE(img.comps[0].h, img.comps[1].h); + EXPECT_NE(img.comps[0].w, img.comps[2].w); + EXPECT_NE(img.comps[0].h, img.comps[2].h); + } + FX_Free(img.comps[0].data); + FX_Free(img.comps[1].data); + FX_Free(img.comps[2].data); + } + FX_Free(img.comps); +} diff --git a/core/fxcodec/codec/fx_codec_png.cpp b/core/fxcodec/codec/fx_codec_png.cpp new file mode 100644 index 0000000000..a3882ba8fb --- /dev/null +++ b/core/fxcodec/codec/fx_codec_png.cpp @@ -0,0 +1,254 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_dib.h" + +extern "C" { +#undef FAR +#include "third_party/libpng16/png.h" +} + +static void _png_error_data(png_structp png_ptr, png_const_charp error_msg) { + if (png_get_error_ptr(png_ptr)) { + FXSYS_strncpy((char*)png_get_error_ptr(png_ptr), error_msg, + PNG_ERROR_SIZE - 1); + } + longjmp(png_jmpbuf(png_ptr), 1); +} +static void _png_warning_data(png_structp png_ptr, png_const_charp error_msg) {} +static void _png_load_bmp_attribute(png_structp png_ptr, + png_infop info_ptr, + CFX_DIBAttribute* pAttribute) { + if (pAttribute) { +#if defined(PNG_pHYs_SUPPORTED) + pAttribute->m_nXDPI = png_get_x_pixels_per_meter(png_ptr, info_ptr); + pAttribute->m_nYDPI = png_get_y_pixels_per_meter(png_ptr, info_ptr); + png_uint_32 res_x, res_y; + int unit_type; + png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y, &unit_type); + switch (unit_type) { + case PNG_RESOLUTION_METER: + pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_METER; + break; + default: + pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_NONE; + } +#endif +#if defined(PNG_iCCP_SUPPORTED) + png_charp icc_name; + png_bytep icc_profile; + png_uint_32 icc_proflen; + int compress_type; + png_get_iCCP(png_ptr, info_ptr, &icc_name, &compress_type, &icc_profile, + &icc_proflen); +#endif + int bTime = 0; +#if defined(PNG_tIME_SUPPORTED) + png_timep t = NULL; + png_get_tIME(png_ptr, info_ptr, &t); + if (t) { + FXSYS_memset(pAttribute->m_strTime, 0, sizeof(pAttribute->m_strTime)); + FXSYS_snprintf((FX_CHAR*)pAttribute->m_strTime, + sizeof(pAttribute->m_strTime), "%4d:%2d:%2d %2d:%2d:%2d", + t->year, t->month, t->day, t->hour, t->minute, t->second); + pAttribute->m_strTime[sizeof(pAttribute->m_strTime) - 1] = 0; + bTime = 1; + } +#endif +#if defined(PNG_TEXT_SUPPORTED) + int i; + FX_STRSIZE len; + const FX_CHAR* buf; + int num_text; + png_textp text = NULL; + png_get_text(png_ptr, info_ptr, &text, &num_text); + for (i = 0; i < num_text; i++) { + len = FXSYS_strlen(text[i].key); + buf = "Time"; + if (!FXSYS_memcmp(buf, text[i].key, std::min(len, FXSYS_strlen(buf)))) { + if (!bTime) { + FXSYS_memset(pAttribute->m_strTime, 0, sizeof(pAttribute->m_strTime)); + FXSYS_memcpy( + pAttribute->m_strTime, text[i].text, + std::min(sizeof(pAttribute->m_strTime) - 1, text[i].text_length)); + } + } else { + buf = "Author"; + if (!FXSYS_memcmp(buf, text[i].key, std::min(len, FXSYS_strlen(buf)))) { + pAttribute->m_strAuthor.Empty(); + pAttribute->m_strAuthor.Load((uint8_t*)text[i].text, + (FX_STRSIZE)text[i].text_length); + } + } + } +#endif + } +} +struct FXPNG_Context { + png_structp png_ptr; + png_infop info_ptr; + void* parent_ptr; + void* child_ptr; + + void* (*m_AllocFunc)(unsigned int); + void (*m_FreeFunc)(void*); +}; +extern "C" { +static void* _png_alloc_func(unsigned int size) { + return FX_Alloc(char, size); +} +static void _png_free_func(void* p) { + FX_Free(p); +} +}; +static void _png_get_header_func(png_structp png_ptr, png_infop info_ptr) { + FXPNG_Context* p = (FXPNG_Context*)png_get_progressive_ptr(png_ptr); + if (p == NULL) { + return; + } + CCodec_PngModule* pModule = (CCodec_PngModule*)p->parent_ptr; + if (pModule == NULL) { + return; + } + png_uint_32 width = 0, height = 0; + int bpc = 0, color_type = 0, color_type1 = 0, pass = 0; + double gamma = 1.0; + png_get_IHDR(png_ptr, info_ptr, &width, &height, &bpc, &color_type, NULL, + NULL, NULL); + color_type1 = color_type; + if (bpc > 8) { + png_set_strip_16(png_ptr); + } else if (bpc < 8) { + png_set_expand_gray_1_2_4_to_8(png_ptr); + } + bpc = 8; + if (color_type == PNG_COLOR_TYPE_PALETTE) { + png_set_palette_to_rgb(png_ptr); + } + pass = png_set_interlace_handling(png_ptr); + if (!pModule->ReadHeaderCallback(p->child_ptr, width, height, bpc, pass, + &color_type, &gamma)) { + png_error(p->png_ptr, "Read Header Callback Error"); + } + int intent; + if (png_get_sRGB(png_ptr, info_ptr, &intent)) { + png_set_gamma(png_ptr, gamma, 0.45455); + } else { + double image_gamma; + if (png_get_gAMA(png_ptr, info_ptr, &image_gamma)) { + png_set_gamma(png_ptr, gamma, image_gamma); + } else { + png_set_gamma(png_ptr, gamma, 0.45455); + } + } + switch (color_type) { + case PNG_COLOR_TYPE_GRAY: + case PNG_COLOR_TYPE_GRAY_ALPHA: { + if (color_type1 & PNG_COLOR_MASK_COLOR) { + png_set_rgb_to_gray(png_ptr, 1, 0.299, 0.587); + } + } break; + case PNG_COLOR_TYPE_PALETTE: + if (color_type1 != PNG_COLOR_TYPE_PALETTE) { + png_error(p->png_ptr, "Not Support Output Palette Now"); + } + case PNG_COLOR_TYPE_RGB: + case PNG_COLOR_TYPE_RGB_ALPHA: + if (!(color_type1 & PNG_COLOR_MASK_COLOR)) { + png_set_gray_to_rgb(png_ptr); + } + png_set_bgr(png_ptr); + break; + } + if (!(color_type & PNG_COLOR_MASK_ALPHA)) { + png_set_strip_alpha(png_ptr); + } + if (color_type & PNG_COLOR_MASK_ALPHA && + !(color_type1 & PNG_COLOR_MASK_ALPHA)) { + png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); + } + png_read_update_info(png_ptr, info_ptr); +} +static void _png_get_end_func(png_structp png_ptr, png_infop info_ptr) {} +static void _png_get_row_func(png_structp png_ptr, + png_bytep new_row, + png_uint_32 row_num, + int pass) { + FXPNG_Context* p = (FXPNG_Context*)png_get_progressive_ptr(png_ptr); + if (p == NULL) { + return; + } + CCodec_PngModule* pModule = (CCodec_PngModule*)p->parent_ptr; + uint8_t* src_buf = NULL; + if (!pModule->AskScanlineBufCallback(p->child_ptr, row_num, src_buf)) { + png_error(png_ptr, "Ask Scanline buffer Callback Error"); + } + if (src_buf) { + png_progressive_combine_row(png_ptr, src_buf, new_row); + } + pModule->FillScanlineBufCompletedCallback(p->child_ptr, pass, row_num); +} +void* CCodec_PngModule::Start(void* pModule) { + FXPNG_Context* p = (FXPNG_Context*)FX_Alloc(uint8_t, sizeof(FXPNG_Context)); + if (p == NULL) { + return NULL; + } + p->m_AllocFunc = _png_alloc_func; + p->m_FreeFunc = _png_free_func; + p->png_ptr = NULL; + p->info_ptr = NULL; + p->parent_ptr = (void*)this; + p->child_ptr = pModule; + p->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (p->png_ptr == NULL) { + FX_Free(p); + return NULL; + } + p->info_ptr = png_create_info_struct(p->png_ptr); + if (p->info_ptr == NULL) { + png_destroy_read_struct(&(p->png_ptr), (png_infopp)NULL, (png_infopp)NULL); + FX_Free(p); + return NULL; + } + if (setjmp(png_jmpbuf(p->png_ptr))) { + if (p) { + png_destroy_read_struct(&(p->png_ptr), &(p->info_ptr), (png_infopp)NULL); + FX_Free(p); + } + return NULL; + } + png_set_progressive_read_fn(p->png_ptr, p, _png_get_header_func, + _png_get_row_func, _png_get_end_func); + png_set_error_fn(p->png_ptr, m_szLastError, (png_error_ptr)_png_error_data, + (png_error_ptr)_png_warning_data); + return p; +} +void CCodec_PngModule::Finish(void* pContext) { + FXPNG_Context* p = (FXPNG_Context*)pContext; + if (p) { + png_destroy_read_struct(&(p->png_ptr), &(p->info_ptr), (png_infopp)NULL); + p->m_FreeFunc(p); + } +} +FX_BOOL CCodec_PngModule::Input(void* pContext, + const uint8_t* src_buf, + FX_DWORD src_size, + CFX_DIBAttribute* pAttribute) { + FXPNG_Context* p = (FXPNG_Context*)pContext; + if (setjmp(png_jmpbuf(p->png_ptr))) { + if (pAttribute && + 0 == FXSYS_strcmp(m_szLastError, "Read Header Callback Error")) { + _png_load_bmp_attribute(p->png_ptr, p->info_ptr, pAttribute); + } + return FALSE; + } + png_process_data(p->png_ptr, p->info_ptr, (uint8_t*)src_buf, src_size); + return TRUE; +} diff --git a/core/fxcodec/codec/fx_codec_progress.cpp b/core/fxcodec/codec/fx_codec_progress.cpp new file mode 100644 index 0000000000..b22d20339b --- /dev/null +++ b/core/fxcodec/codec/fx_codec_progress.cpp @@ -0,0 +1,2301 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/codec/fx_codec_progress.h" + +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_dib.h" + +void CFXCODEC_WeightTable::Calc(int dest_len, + int dest_min, + int dest_max, + int src_len, + int src_min, + int src_max, + FX_BOOL bInterpol) { + if (m_pWeightTables) { + FX_Free(m_pWeightTables); + } + double scale, base; + scale = (FX_FLOAT)src_len / (FX_FLOAT)dest_len; + if (dest_len < 0) { + base = (FX_FLOAT)(src_len); + } else { + base = 0.0f; + } + m_ItemSize = + (int)(sizeof(int) * 2 + + sizeof(int) * (FXSYS_ceil(FXSYS_fabs((FX_FLOAT)scale)) + 1)); + m_DestMin = dest_min; + m_pWeightTables = FX_Alloc(uint8_t, (dest_max - dest_min) * m_ItemSize + 4); + if (m_pWeightTables == NULL) { + return; + } + if (FXSYS_fabs((FX_FLOAT)scale) < 1.0f) { + for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { + PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); + double src_pos = dest_pixel * scale + scale / 2 + base; + if (bInterpol) { + pixel_weights.m_SrcStart = + (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); + pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); + if (pixel_weights.m_SrcStart < src_min) { + pixel_weights.m_SrcStart = src_min; + } + if (pixel_weights.m_SrcEnd >= src_max) { + pixel_weights.m_SrcEnd = src_max - 1; + } + if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { + pixel_weights.m_Weights[0] = 65536; + } else { + pixel_weights.m_Weights[1] = FXSYS_round( + (FX_FLOAT)(src_pos - pixel_weights.m_SrcStart - 1.0f / 2) * + 65536); + pixel_weights.m_Weights[0] = 65536 - pixel_weights.m_Weights[1]; + } + } else { + pixel_weights.m_SrcStart = pixel_weights.m_SrcEnd = + (int)FXSYS_floor((FX_FLOAT)src_pos); + pixel_weights.m_Weights[0] = 65536; + } + } + return; + } + for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { + PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); + double src_start = dest_pixel * scale + base; + double src_end = src_start + scale; + int start_i, end_i; + if (src_start < src_end) { + start_i = (int)FXSYS_floor((FX_FLOAT)src_start); + end_i = (int)FXSYS_ceil((FX_FLOAT)src_end); + } else { + start_i = (int)FXSYS_floor((FX_FLOAT)src_end); + end_i = (int)FXSYS_ceil((FX_FLOAT)src_start); + } + if (start_i < src_min) { + start_i = src_min; + } + if (end_i >= src_max) { + end_i = src_max - 1; + } + if (start_i > end_i) { + pixel_weights.m_SrcStart = start_i; + pixel_weights.m_SrcEnd = start_i; + continue; + } + pixel_weights.m_SrcStart = start_i; + pixel_weights.m_SrcEnd = end_i; + for (int j = start_i; j <= end_i; j++) { + double dest_start = ((FX_FLOAT)j - base) / scale; + double dest_end = ((FX_FLOAT)(j + 1) - base) / scale; + if (dest_start > dest_end) { + double temp = dest_start; + dest_start = dest_end; + dest_end = temp; + } + double area_start = dest_start > (FX_FLOAT)(dest_pixel) + ? dest_start + : (FX_FLOAT)(dest_pixel); + double area_end = dest_end > (FX_FLOAT)(dest_pixel + 1) + ? (FX_FLOAT)(dest_pixel + 1) + : dest_end; + double weight = area_start >= area_end ? 0.0f : area_end - area_start; + if (weight == 0 && j == end_i) { + pixel_weights.m_SrcEnd--; + break; + } + pixel_weights.m_Weights[j - start_i] = + FXSYS_round((FX_FLOAT)(weight * 65536)); + } + } +} +void CFXCODEC_HorzTable::Calc(int dest_len, int src_len, FX_BOOL bInterpol) { + if (m_pWeightTables) { + FX_Free(m_pWeightTables); + } + double scale = (double)dest_len / (double)src_len; + m_ItemSize = sizeof(int) * 4; + int size = dest_len * m_ItemSize + 4; + m_pWeightTables = FX_Alloc(uint8_t, size); + if (m_pWeightTables == NULL) { + return; + } + FXSYS_memset(m_pWeightTables, 0, size); + if (scale > 1) { + int pre_des_col = 0; + for (int src_col = 0; src_col < src_len; src_col++) { + double des_col_f = src_col * scale; + int des_col = FXSYS_round((FX_FLOAT)des_col_f); + PixelWeight* pWeight = + (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize); + pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; + pWeight->m_Weights[0] = 65536; + pWeight->m_Weights[1] = 0; + if (src_col == src_len - 1 && des_col < dest_len - 1) { + for (int des_col_index = pre_des_col + 1; des_col_index < dest_len; + des_col_index++) { + pWeight = + (PixelWeight*)(m_pWeightTables + des_col_index * m_ItemSize); + pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; + pWeight->m_Weights[0] = 65536; + pWeight->m_Weights[1] = 0; + } + return; + } + int des_col_len = des_col - pre_des_col; + for (int des_col_index = pre_des_col + 1; des_col_index < des_col; + des_col_index++) { + pWeight = (PixelWeight*)(m_pWeightTables + des_col_index * m_ItemSize); + pWeight->m_SrcStart = src_col - 1; + pWeight->m_SrcEnd = src_col; + pWeight->m_Weights[0] = + bInterpol ? FXSYS_round((FX_FLOAT)( + ((FX_FLOAT)des_col - (FX_FLOAT)des_col_index) / + (FX_FLOAT)des_col_len * 65536)) + : 65536; + pWeight->m_Weights[1] = 65536 - pWeight->m_Weights[0]; + } + pre_des_col = des_col; + } + return; + } + for (int des_col = 0; des_col < dest_len; des_col++) { + double src_col_f = des_col / scale; + int src_col = FXSYS_round((FX_FLOAT)src_col_f); + PixelWeight* pWeight = + (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize); + pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; + pWeight->m_Weights[0] = 65536; + pWeight->m_Weights[1] = 0; + } +} +void CFXCODEC_VertTable::Calc(int dest_len, int src_len) { + if (m_pWeightTables) { + FX_Free(m_pWeightTables); + } + double scale = (double)dest_len / (double)src_len; + m_ItemSize = sizeof(int) * 4; + int size = dest_len * m_ItemSize + 4; + m_pWeightTables = FX_Alloc(uint8_t, size); + if (m_pWeightTables == NULL) { + return; + } + FXSYS_memset(m_pWeightTables, 0, size); + if (scale > 1) { + double step = 0.0; + int src_row = 0; + while (step < (double)dest_len) { + int start_step = (int)step; + step = scale * (++src_row); + int end_step = (int)step; + if (end_step >= dest_len) { + end_step = dest_len; + for (int des_row = start_step; des_row < end_step; des_row++) { + PixelWeight* pWeight = + (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); + pWeight->m_SrcStart = start_step; + pWeight->m_SrcEnd = start_step; + pWeight->m_Weights[0] = 65536; + pWeight->m_Weights[1] = 0; + } + return; + } + int length = end_step - start_step; + { + PixelWeight* pWeight = + (PixelWeight*)(m_pWeightTables + start_step * m_ItemSize); + pWeight->m_SrcStart = start_step; + pWeight->m_SrcEnd = start_step; + pWeight->m_Weights[0] = 65536; + pWeight->m_Weights[1] = 0; + } + for (int des_row = start_step + 1; des_row < end_step; des_row++) { + PixelWeight* pWeight = + (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); + pWeight->m_SrcStart = start_step; + pWeight->m_SrcEnd = end_step; + pWeight->m_Weights[0] = FXSYS_round((FX_FLOAT)(end_step - des_row) / + (FX_FLOAT)length * 65536); + pWeight->m_Weights[1] = 65536 - pWeight->m_Weights[0]; + } + } + } else { + for (int des_row = 0; des_row < dest_len; des_row++) { + PixelWeight* pWeight = + (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); + pWeight->m_SrcStart = des_row; + pWeight->m_SrcEnd = des_row; + pWeight->m_Weights[0] = 65536; + pWeight->m_Weights[1] = 0; + } + } +} +CCodec_ProgressiveDecoder::CCodec_ProgressiveDecoder( + CCodec_ModuleMgr* pCodecMgr) { + m_pFile = NULL; + m_pJpegContext = NULL; + m_pPngContext = NULL; + m_pGifContext = NULL; + m_pBmpContext = NULL; + m_pTiffContext = NULL; + m_pCodecMgr = NULL; + m_pSrcBuf = NULL; + m_pDecodeBuf = NULL; + m_pDeviceBitmap = NULL; + m_pSrcPalette = NULL; + m_pCodecMgr = pCodecMgr; + m_offSet = 0; + m_SrcSize = 0; + m_ScanlineSize = 0; + m_SrcWidth = m_SrcHeight = 0; + m_SrcComponents = 0; + m_SrcBPC = 0; + m_SrcPassNumber = 0; + m_clipBox = FX_RECT(0, 0, 0, 0); + m_imagType = FXCODEC_IMAGE_UNKNOWN; + m_status = FXCODEC_STATUS_DECODE_FINISH; + m_TransMethod = -1; + m_SrcRow = 0; + m_SrcFormat = FXCodec_Invalid; + m_bInterpol = TRUE; + m_FrameNumber = 0; + m_FrameCur = 0; + m_SrcPaletteNumber = 0; + m_GifPltNumber = 0; + m_GifBgIndex = 0; + m_pGifPalette = NULL; + m_GifTransIndex = -1; + m_GifFrameRect = FX_RECT(0, 0, 0, 0); + m_BmpIsTopBottom = FALSE; +} +CCodec_ProgressiveDecoder::~CCodec_ProgressiveDecoder() { + m_pFile = NULL; + if (m_pJpegContext) { + m_pCodecMgr->GetJpegModule()->Finish(m_pJpegContext); + } + if (m_pPngContext) { + m_pCodecMgr->GetPngModule()->Finish(m_pPngContext); + } + if (m_pGifContext) { + m_pCodecMgr->GetGifModule()->Finish(m_pGifContext); + } + if (m_pBmpContext) { + m_pCodecMgr->GetBmpModule()->Finish(m_pBmpContext); + } + if (m_pTiffContext) { + m_pCodecMgr->GetTiffModule()->DestroyDecoder(m_pTiffContext); + } + FX_Free(m_pSrcBuf); + FX_Free(m_pDecodeBuf); + FX_Free(m_pSrcPalette); +} +FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData( + ICodec_JpegModule* pJpegModule, + FXCODEC_STATUS& err_status) { + FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); + if (dwSize <= m_offSet) { + return FALSE; + } + dwSize = dwSize - m_offSet; + FX_DWORD dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL); + if (dwAvail == m_SrcSize) { + if (dwSize > FXCODEC_BLOCK_SIZE) { + dwSize = FXCODEC_BLOCK_SIZE; + } + m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / + FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; + m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); + if (!m_pSrcBuf) { + err_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + } else { + FX_DWORD dwConsume = m_SrcSize - dwAvail; + if (dwAvail) { + FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); + } + if (dwSize > dwConsume) { + dwSize = dwConsume; + } + } + if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { + err_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += dwSize; + pJpegModule->Input(m_pJpegContext, m_pSrcBuf, dwSize + dwAvail); + return TRUE; +} +FX_BOOL CCodec_ProgressiveDecoder::PngReadHeaderFunc(void* pModule, + int width, + int height, + int bpc, + int pass, + int* color_type, + double* gamma) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + if (pCodec->m_pDeviceBitmap == NULL) { + pCodec->m_SrcWidth = width; + pCodec->m_SrcHeight = height; + pCodec->m_SrcBPC = bpc; + pCodec->m_SrcPassNumber = pass; + pCodec->m_SrcComponents = + *color_type == 0 ? 1 : *color_type == 2 + ? 3 + : *color_type == 3 + ? 4 + : *color_type == 4 + ? 2 + : *color_type == 6 ? 4 : 0; + pCodec->m_clipBox = FX_RECT(0, 0, width, height); + return FALSE; + } + FXDIB_Format format = pCodec->m_pDeviceBitmap->GetFormat(); + switch (format) { + case FXDIB_1bppMask: + case FXDIB_1bppRgb: + ASSERT(FALSE); + return FALSE; + case FXDIB_8bppMask: + case FXDIB_8bppRgb: + *color_type = 0; + break; + case FXDIB_Rgb: + *color_type = 2; + break; + case FXDIB_Rgb32: + case FXDIB_Argb: + *color_type = 6; + break; + default: + ASSERT(FALSE); + return FALSE; + } + *gamma = FXCODEC_PNG_GAMMA; + return TRUE; +} +FX_BOOL CCodec_ProgressiveDecoder::PngAskScanlineBufFunc(void* pModule, + int line, + uint8_t*& src_buf) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; + if (!pDIBitmap) { + ASSERT(false); + return FALSE; + } + if (line >= pCodec->m_clipBox.top && line < pCodec->m_clipBox.bottom) { + double scale_y = + (double)pCodec->m_sizeY / (double)pCodec->m_clipBox.Height(); + int32_t row = + (int32_t)((line - pCodec->m_clipBox.top) * scale_y) + pCodec->m_startY; + uint8_t* src_scan = (uint8_t*)pDIBitmap->GetScanline(row); + uint8_t* des_scan = pCodec->m_pDecodeBuf; + src_buf = pCodec->m_pDecodeBuf; + int32_t src_Bpp = pDIBitmap->GetBPP() >> 3; + int32_t des_Bpp = (pCodec->m_SrcFormat & 0xff) >> 3; + int32_t src_left = pCodec->m_startX; + int32_t des_left = pCodec->m_clipBox.left; + src_scan += src_left * src_Bpp; + des_scan += des_left * des_Bpp; + for (int32_t src_col = 0; src_col < pCodec->m_sizeX; src_col++) { + PixelWeight* pPixelWeights = + pCodec->m_WeightHorzOO.GetPixelWeight(src_col); + if (pPixelWeights->m_SrcStart != pPixelWeights->m_SrcEnd) { + continue; + } + switch (pDIBitmap->GetFormat()) { + case FXDIB_1bppMask: + case FXDIB_1bppRgb: + ASSERT(FALSE); + return FALSE; + case FXDIB_8bppMask: + case FXDIB_8bppRgb: { + if (pDIBitmap->GetPalette()) { + return FALSE; + } + FX_DWORD des_g = 0; + des_g += pPixelWeights->m_Weights[0] * src_scan[src_col]; + des_scan[pPixelWeights->m_SrcStart] = (uint8_t)(des_g >> 16); + } break; + case FXDIB_Rgb: + case FXDIB_Rgb32: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + const uint8_t* p = src_scan + src_col * src_Bpp; + des_b += pPixelWeights->m_Weights[0] * (*p++); + des_g += pPixelWeights->m_Weights[0] * (*p++); + des_r += pPixelWeights->m_Weights[0] * (*p); + uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp]; + *pDes++ = (uint8_t)((des_b) >> 16); + *pDes++ = (uint8_t)((des_g) >> 16); + *pDes = (uint8_t)((des_r) >> 16); + } break; + case FXDIB_Argb: { + FX_DWORD des_r = 0, des_g = 0, des_b = 0; + const uint8_t* p = src_scan + src_col * src_Bpp; + des_b += pPixelWeights->m_Weights[0] * (*p++); + des_g += pPixelWeights->m_Weights[0] * (*p++); + des_r += pPixelWeights->m_Weights[0] * (*p++); + uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp]; + *pDes++ = (uint8_t)((des_b) >> 16); + *pDes++ = (uint8_t)((des_g) >> 16); + *pDes++ = (uint8_t)((des_r) >> 16); + *pDes = *p; + } break; + default: + return FALSE; + } + } + } + return TRUE; +} +void CCodec_ProgressiveDecoder::PngOneOneMapResampleHorz( + CFX_DIBitmap* pDeviceBitmap, + int32_t des_line, + uint8_t* src_scan, + FXCodec_Format src_format) { + uint8_t* des_scan = (uint8_t*)pDeviceBitmap->GetScanline(des_line); + int32_t src_Bpp = (m_SrcFormat & 0xff) >> 3; + int32_t des_Bpp = pDeviceBitmap->GetBPP() >> 3; + int32_t src_left = m_clipBox.left; + int32_t des_left = m_startX; + src_scan += src_left * src_Bpp; + des_scan += des_left * des_Bpp; + for (int32_t des_col = 0; des_col < m_sizeX; des_col++) { + PixelWeight* pPixelWeights = m_WeightHorzOO.GetPixelWeight(des_col); + switch (pDeviceBitmap->GetFormat()) { + case FXDIB_1bppMask: + case FXDIB_1bppRgb: + ASSERT(FALSE); + return; + case FXDIB_8bppMask: + case FXDIB_8bppRgb: { + if (pDeviceBitmap->GetPalette()) { + return; + } + FX_DWORD des_g = 0; + des_g += + pPixelWeights->m_Weights[0] * src_scan[pPixelWeights->m_SrcStart]; + des_g += + pPixelWeights->m_Weights[1] * src_scan[pPixelWeights->m_SrcEnd]; + *des_scan++ = (uint8_t)(des_g >> 16); + } break; + case FXDIB_Rgb: + case FXDIB_Rgb32: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + const uint8_t* p = src_scan; + p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; + des_b += pPixelWeights->m_Weights[0] * (*p++); + des_g += pPixelWeights->m_Weights[0] * (*p++); + des_r += pPixelWeights->m_Weights[0] * (*p); + p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; + des_b += pPixelWeights->m_Weights[1] * (*p++); + des_g += pPixelWeights->m_Weights[1] * (*p++); + des_r += pPixelWeights->m_Weights[1] * (*p); + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + des_scan += des_Bpp - 3; + } break; + case FXDIB_Argb: { + FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; + const uint8_t* p = src_scan; + p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; + des_b += pPixelWeights->m_Weights[0] * (*p++); + des_g += pPixelWeights->m_Weights[0] * (*p++); + des_r += pPixelWeights->m_Weights[0] * (*p++); + des_a += pPixelWeights->m_Weights[0] * (*p); + p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; + des_b += pPixelWeights->m_Weights[1] * (*p++); + des_g += pPixelWeights->m_Weights[1] * (*p++); + des_r += pPixelWeights->m_Weights[1] * (*p++); + des_a += pPixelWeights->m_Weights[1] * (*p); + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + *des_scan++ = (uint8_t)((des_a) >> 16); + } break; + default: + return; + } + } +} +void CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc(void* pModule, + int pass, + int line) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; + ASSERT(pDIBitmap); + int src_top = pCodec->m_clipBox.top; + int src_bottom = pCodec->m_clipBox.bottom; + int des_top = pCodec->m_startY; + int src_hei = pCodec->m_clipBox.Height(); + int des_hei = pCodec->m_sizeY; + if (line >= src_top && line < src_bottom) { + double scale_y = (double)des_hei / (double)src_hei; + int src_row = line - src_top; + int des_row = (int)(src_row * scale_y) + des_top; + if (des_row >= des_top + des_hei) { + return; + } + pCodec->PngOneOneMapResampleHorz(pDIBitmap, des_row, pCodec->m_pDecodeBuf, + pCodec->m_SrcFormat); + if (pCodec->m_SrcPassNumber == 1 && scale_y > 1.0) { + pCodec->ResampleVert(pDIBitmap, scale_y, des_row); + return; + } + if (pass == 6 && scale_y > 1.0) { + pCodec->ResampleVert(pDIBitmap, scale_y, des_row); + } + } +} +FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(ICodec_GifModule* pGifModule, + FXCODEC_STATUS& err_status) { + FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); + if (dwSize <= m_offSet) { + return FALSE; + } + dwSize = dwSize - m_offSet; + FX_DWORD dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL); + if (dwAvail == m_SrcSize) { + if (dwSize > FXCODEC_BLOCK_SIZE) { + dwSize = FXCODEC_BLOCK_SIZE; + } + m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / + FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; + m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); + if (!m_pSrcBuf) { + err_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + } else { + FX_DWORD dwConsume = m_SrcSize - dwAvail; + if (dwAvail) { + FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); + } + if (dwSize > dwConsume) { + dwSize = dwConsume; + } + } + if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { + err_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += dwSize; + pGifModule->Input(m_pGifContext, m_pSrcBuf, dwSize + dwAvail); + return TRUE; +} +void CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback( + void* pModule, + FX_DWORD& cur_pos) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + FX_DWORD remain_size = + pCodec->m_pCodecMgr->GetGifModule()->GetAvailInput(pCodec->m_pGifContext); + cur_pos = pCodec->m_offSet - remain_size; +} +uint8_t* CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback( + void* pModule, + int32_t frame_num, + int32_t pal_size) { + return FX_Alloc(uint8_t, pal_size); +} +FX_BOOL CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback( + void* pModule, + FX_DWORD rcd_pos, + const FX_RECT& img_rc, + int32_t pal_num, + void* pal_ptr, + int32_t delay_time, + FX_BOOL user_input, + int32_t trans_index, + int32_t disposal_method, + FX_BOOL interlace) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + pCodec->m_offSet = rcd_pos; + FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; + if (!pCodec->GifReadMoreData(pCodec->m_pCodecMgr->GetGifModule(), + error_status)) { + return FALSE; + } + uint8_t* pPalette = NULL; + if (pal_num != 0 && pal_ptr) { + pPalette = (uint8_t*)pal_ptr; + } else { + pal_num = pCodec->m_GifPltNumber; + pPalette = pCodec->m_pGifPalette; + } + if (pCodec->m_pSrcPalette == NULL) { + pCodec->m_pSrcPalette = FX_Alloc(FX_ARGB, pal_num); + } else if (pal_num > pCodec->m_SrcPaletteNumber) { + pCodec->m_pSrcPalette = FX_Realloc(FX_ARGB, pCodec->m_pSrcPalette, pal_num); + } + if (pCodec->m_pSrcPalette == NULL) { + return FALSE; + } + pCodec->m_SrcPaletteNumber = pal_num; + for (int i = 0; i < pal_num; i++) { + FX_DWORD j = i * 3; + pCodec->m_pSrcPalette[i] = + ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]); + } + pCodec->m_GifTransIndex = trans_index; + pCodec->m_GifFrameRect = img_rc; + pCodec->m_SrcPassNumber = interlace ? 4 : 1; + int32_t pal_index = pCodec->m_GifBgIndex; + CFX_DIBitmap* pDevice = pCodec->m_pDeviceBitmap; + if (trans_index >= pal_num) { + trans_index = -1; + } + if (trans_index != -1) { + pCodec->m_pSrcPalette[trans_index] &= 0x00ffffff; + if (pDevice->HasAlpha()) { + pal_index = trans_index; + } + } + int startX = pCodec->m_startX; + int startY = pCodec->m_startY; + int sizeX = pCodec->m_sizeX; + int sizeY = pCodec->m_sizeY; + int Bpp = pDevice->GetBPP() / 8; + FX_ARGB argb = pCodec->m_pSrcPalette[pal_index]; + for (int row = 0; row < sizeY; row++) { + uint8_t* pScanline = + (uint8_t*)pDevice->GetScanline(row + startY) + startX * Bpp; + switch (pCodec->m_TransMethod) { + case 3: { + uint8_t gray = + FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb)); + FXSYS_memset(pScanline, gray, sizeX); + break; + } + case 8: { + for (int col = 0; col < sizeX; col++) { + *pScanline++ = FXARGB_B(argb); + *pScanline++ = FXARGB_G(argb); + *pScanline++ = FXARGB_R(argb); + pScanline += Bpp - 3; + } + break; + } + case 12: { + for (int col = 0; col < sizeX; col++) { + FXARGB_SETDIB(pScanline, argb); + pScanline += 4; + } + break; + } + } + } + return TRUE; +} +void CCodec_ProgressiveDecoder::GifReadScanlineCallback(void* pModule, + int32_t row_num, + uint8_t* row_buf) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; + ASSERT(pDIBitmap); + int32_t img_width = pCodec->m_GifFrameRect.Width(); + if (!pDIBitmap->HasAlpha()) { + uint8_t* byte_ptr = row_buf; + for (int i = 0; i < img_width; i++) { + if (*byte_ptr == pCodec->m_GifTransIndex) { + *byte_ptr = pCodec->m_GifBgIndex; + } + byte_ptr++; + } + } + int32_t pal_index = pCodec->m_GifBgIndex; + if (pCodec->m_GifTransIndex != -1 && pCodec->m_pDeviceBitmap->HasAlpha()) { + pal_index = pCodec->m_GifTransIndex; + } + FXSYS_memset(pCodec->m_pDecodeBuf, pal_index, pCodec->m_SrcWidth); + bool bLastPass = (row_num % 2) == 1; + int32_t line = row_num + pCodec->m_GifFrameRect.top; + int32_t left = pCodec->m_GifFrameRect.left; + FXSYS_memcpy(pCodec->m_pDecodeBuf + left, row_buf, img_width); + int src_top = pCodec->m_clipBox.top; + int src_bottom = pCodec->m_clipBox.bottom; + int des_top = pCodec->m_startY; + int src_hei = pCodec->m_clipBox.Height(); + int des_hei = pCodec->m_sizeY; + if (line >= src_top && line < src_bottom) { + double scale_y = (double)des_hei / (double)src_hei; + int src_row = line - src_top; + int des_row = (int)(src_row * scale_y) + des_top; + if (des_row >= des_top + des_hei) { + return; + } + pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf, + pCodec->m_SrcFormat); + if (scale_y > 1.0 && + (!pCodec->m_bInterpol || pCodec->m_SrcPassNumber == 1)) { + pCodec->ResampleVert(pDIBitmap, scale_y, des_row); + return; + } + if (scale_y > 1.0) { + int des_bottom = des_top + pCodec->m_sizeY; + int des_Bpp = pDIBitmap->GetBPP() >> 3; + FX_DWORD des_ScanOffet = pCodec->m_startX * des_Bpp; + if (des_row + (int)scale_y >= des_bottom - 1) { + uint8_t* scan_src = + (uint8_t*)pDIBitmap->GetScanline(des_row) + des_ScanOffet; + int cur_row = des_row; + while (++cur_row < des_bottom) { + uint8_t* scan_des = + (uint8_t*)pDIBitmap->GetScanline(cur_row) + des_ScanOffet; + FX_DWORD size = pCodec->m_sizeX * des_Bpp; + FXSYS_memcpy(scan_des, scan_src, size); + } + } + if (bLastPass) { + pCodec->GifDoubleLineResampleVert(pDIBitmap, scale_y, des_row); + } + } + } +} +void CCodec_ProgressiveDecoder::GifDoubleLineResampleVert( + CFX_DIBitmap* pDeviceBitmap, + double scale_y, + int des_row) { + int des_Bpp = pDeviceBitmap->GetBPP() >> 3; + FX_DWORD des_ScanOffet = m_startX * des_Bpp; + int des_top = m_startY; + int des_row_1 = des_row - int(2 * scale_y); + if (des_row_1 < des_top) { + des_row_1 = des_top; + } + for (; des_row_1 < des_row; des_row_1++) { + uint8_t* scan_des = + (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; + PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); + const uint8_t* scan_src1 = + pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + + des_ScanOffet; + const uint8_t* scan_src2 = + pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + des_ScanOffet; + for (int des_col = 0; des_col < m_sizeX; des_col++) { + switch (pDeviceBitmap->GetFormat()) { + case FXDIB_Invalid: + case FXDIB_1bppMask: + case FXDIB_1bppRgb: + return; + case FXDIB_8bppMask: + case FXDIB_8bppRgb: { + if (pDeviceBitmap->GetPalette()) { + return; + } + int des_g = 0; + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + *scan_des++ = (uint8_t)(des_g >> 16); + } break; + case FXDIB_Rgb: + case FXDIB_Rgb32: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + des_b += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_r += pWeight->m_Weights[0] * (*scan_src1++); + scan_src1 += des_Bpp - 3; + des_b += pWeight->m_Weights[1] * (*scan_src2++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + des_r += pWeight->m_Weights[1] * (*scan_src2++); + scan_src2 += des_Bpp - 3; + *scan_des++ = (uint8_t)((des_b) >> 16); + *scan_des++ = (uint8_t)((des_g) >> 16); + *scan_des++ = (uint8_t)((des_r) >> 16); + scan_des += des_Bpp - 3; + } break; + case FXDIB_Argb: { + FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; + des_b += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_r += pWeight->m_Weights[0] * (*scan_src1++); + des_a += pWeight->m_Weights[0] * (*scan_src1++); + des_b += pWeight->m_Weights[1] * (*scan_src2++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + des_r += pWeight->m_Weights[1] * (*scan_src2++); + des_a += pWeight->m_Weights[1] * (*scan_src2++); + *scan_des++ = (uint8_t)((des_b) >> 16); + *scan_des++ = (uint8_t)((des_g) >> 16); + *scan_des++ = (uint8_t)((des_r) >> 16); + *scan_des++ = (uint8_t)((des_a) >> 16); + } break; + default: + return; + } + } + } + int des_bottom = des_top + m_sizeY - 1; + if (des_row + (int)(2 * scale_y) >= des_bottom && + des_row + (int)scale_y < des_bottom) { + GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y); + } +} +FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule, + FXCODEC_STATUS& err_status) { + FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); + if (dwSize <= m_offSet) { + return FALSE; + } + dwSize = dwSize - m_offSet; + FX_DWORD dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL); + if (dwAvail == m_SrcSize) { + if (dwSize > FXCODEC_BLOCK_SIZE) { + dwSize = FXCODEC_BLOCK_SIZE; + } + m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / + FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; + m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); + if (!m_pSrcBuf) { + err_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + } else { + FX_DWORD dwConsume = m_SrcSize - dwAvail; + if (dwAvail) { + FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); + } + if (dwSize > dwConsume) { + dwSize = dwConsume; + } + } + if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { + err_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += dwSize; + pBmpModule->Input(m_pBmpContext, m_pSrcBuf, dwSize + dwAvail); + return TRUE; +} +FX_BOOL CCodec_ProgressiveDecoder::BmpInputImagePositionBufCallback( + void* pModule, + FX_DWORD rcd_pos) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + pCodec->m_offSet = rcd_pos; + FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; + if (!pCodec->BmpReadMoreData(pCodec->m_pCodecMgr->GetBmpModule(), + error_status)) { + return FALSE; + } + return TRUE; +} +void CCodec_ProgressiveDecoder::BmpReadScanlineCallback(void* pModule, + int32_t row_num, + uint8_t* row_buf) { + CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; + CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; + ASSERT(pDIBitmap); + FXSYS_memcpy(pCodec->m_pDecodeBuf, row_buf, pCodec->m_ScanlineSize); + int src_top = pCodec->m_clipBox.top; + int src_bottom = pCodec->m_clipBox.bottom; + int des_top = pCodec->m_startY; + int src_hei = pCodec->m_clipBox.Height(); + int des_hei = pCodec->m_sizeY; + if (row_num >= src_top && row_num < src_bottom) { + double scale_y = (double)des_hei / (double)src_hei; + int src_row = row_num - src_top; + int des_row = (int)(src_row * scale_y) + des_top; + if (des_row >= des_top + des_hei) { + return; + } + pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf, + pCodec->m_SrcFormat); + if (scale_y > 1.0) { + if (pCodec->m_BmpIsTopBottom || !pCodec->m_bInterpol) { + pCodec->ResampleVert(pDIBitmap, scale_y, des_row); + return; + } else { + pCodec->ResampleVertBT(pDIBitmap, scale_y, des_row); + } + } + } +} +void CCodec_ProgressiveDecoder::ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, + double scale_y, + int des_row) { + int des_Bpp = pDeviceBitmap->GetBPP() >> 3; + FX_DWORD des_ScanOffet = m_startX * des_Bpp; + int des_top = m_startY; + int des_bottom = m_startY + m_sizeY; + int des_row_1 = des_row + int(scale_y); + if (des_row_1 >= des_bottom - 1) { + uint8_t* scan_src = + (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; + while (++des_row < des_bottom) { + uint8_t* scan_des = + (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; + FX_DWORD size = m_sizeX * des_Bpp; + FXSYS_memcpy(scan_des, scan_src, size); + } + return; + } + for (; des_row_1 > des_row; des_row_1--) { + uint8_t* scan_des = + (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; + PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); + const uint8_t* scan_src1 = + pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + + des_ScanOffet; + const uint8_t* scan_src2 = + pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + des_ScanOffet; + for (int des_col = 0; des_col < m_sizeX; des_col++) { + switch (pDeviceBitmap->GetFormat()) { + case FXDIB_Invalid: + case FXDIB_1bppMask: + case FXDIB_1bppRgb: + return; + case FXDIB_8bppMask: + case FXDIB_8bppRgb: { + if (pDeviceBitmap->GetPalette()) { + return; + } + int des_g = 0; + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + *scan_des++ = (uint8_t)(des_g >> 16); + } break; + case FXDIB_Rgb: + case FXDIB_Rgb32: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + des_b += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_r += pWeight->m_Weights[0] * (*scan_src1++); + scan_src1 += des_Bpp - 3; + des_b += pWeight->m_Weights[1] * (*scan_src2++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + des_r += pWeight->m_Weights[1] * (*scan_src2++); + scan_src2 += des_Bpp - 3; + *scan_des++ = (uint8_t)((des_b) >> 16); + *scan_des++ = (uint8_t)((des_g) >> 16); + *scan_des++ = (uint8_t)((des_r) >> 16); + scan_des += des_Bpp - 3; + } break; + case FXDIB_Argb: { + FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; + des_b += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_r += pWeight->m_Weights[0] * (*scan_src1++); + des_a += pWeight->m_Weights[0] * (*scan_src1++); + des_b += pWeight->m_Weights[1] * (*scan_src2++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + des_r += pWeight->m_Weights[1] * (*scan_src2++); + des_a += pWeight->m_Weights[1] * (*scan_src2++); + *scan_des++ = (uint8_t)((des_b) >> 16); + *scan_des++ = (uint8_t)((des_g) >> 16); + *scan_des++ = (uint8_t)((des_r) >> 16); + *scan_des++ = (uint8_t)((des_a) >> 16); + } break; + default: + return; + } + } + } +} +FX_BOOL CCodec_ProgressiveDecoder::DetectImageType( + FXCODEC_IMAGE_TYPE imageType, + CFX_DIBAttribute* pAttribute) { + m_offSet = 0; + FX_DWORD size = (FX_DWORD)m_pFile->GetSize(); + if (size > FXCODEC_BLOCK_SIZE) { + size = FXCODEC_BLOCK_SIZE; + } + FX_Free(m_pSrcBuf); + m_pSrcBuf = FX_Alloc(uint8_t, size); + FXSYS_memset(m_pSrcBuf, 0, size); + m_SrcSize = size; + switch (imageType) { + case FXCODEC_IMAGE_BMP: { + ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); + if (pBmpModule == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + pBmpModule->InputImagePositionBufCallback = + BmpInputImagePositionBufCallback; + pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback; + m_pBmpContext = pBmpModule->Start((void*)this); + if (m_pBmpContext == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); + if (!bResult) { + m_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += size; + pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size); + FX_DWORD* pPalette = NULL; + int32_t readResult = pBmpModule->ReadHeader( + m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, + &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); + while (readResult == 2) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; + if (!BmpReadMoreData(pBmpModule, error_status)) { + m_status = error_status; + return FALSE; + } + readResult = pBmpModule->ReadHeader( + m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, + &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); + } + if (readResult == 1) { + m_SrcBPC = 8; + m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); + FX_Free(m_pSrcPalette); + if (m_SrcPaletteNumber) { + m_pSrcPalette = FX_Alloc(FX_ARGB, m_SrcPaletteNumber); + FXSYS_memcpy(m_pSrcPalette, pPalette, + m_SrcPaletteNumber * sizeof(FX_DWORD)); + } else { + m_pSrcPalette = nullptr; + } + return TRUE; + } + if (m_pBmpContext) { + pBmpModule->Finish(m_pBmpContext); + m_pBmpContext = NULL; + } + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } break; + case FXCODEC_IMAGE_JPG: { + ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); + if (pJpegModule == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + m_pJpegContext = pJpegModule->Start(); + if (m_pJpegContext == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); + if (!bResult) { + m_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += size; + pJpegModule->Input(m_pJpegContext, m_pSrcBuf, size); + int32_t readResult = + pJpegModule->ReadHeader(m_pJpegContext, &m_SrcWidth, &m_SrcHeight, + &m_SrcComponents, pAttribute); + while (readResult == 2) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; + if (!JpegReadMoreData(pJpegModule, error_status)) { + m_status = error_status; + return FALSE; + } + readResult = + pJpegModule->ReadHeader(m_pJpegContext, &m_SrcWidth, &m_SrcHeight, + &m_SrcComponents, pAttribute); + } + if (!readResult) { + m_SrcBPC = 8; + m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); + return TRUE; + } + if (m_pJpegContext) { + pJpegModule->Finish(m_pJpegContext); + m_pJpegContext = NULL; + } + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } break; + case FXCODEC_IMAGE_PNG: { + ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); + if (pPngModule == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + pPngModule->ReadHeaderCallback = + CCodec_ProgressiveDecoder::PngReadHeaderFunc; + pPngModule->AskScanlineBufCallback = + CCodec_ProgressiveDecoder::PngAskScanlineBufFunc; + pPngModule->FillScanlineBufCompletedCallback = + CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc; + m_pPngContext = pPngModule->Start((void*)this); + if (m_pPngContext == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); + if (!bResult) { + m_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += size; + bResult = pPngModule->Input(m_pPngContext, m_pSrcBuf, size, pAttribute); + while (bResult) { + FX_DWORD remain_size = (FX_DWORD)m_pFile->GetSize() - m_offSet; + FX_DWORD input_size = + remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; + if (input_size == 0) { + if (m_pPngContext) { + pPngModule->Finish(m_pPngContext); + } + m_pPngContext = NULL; + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } + if (m_pSrcBuf && input_size > m_SrcSize) { + FX_Free(m_pSrcBuf); + m_pSrcBuf = FX_Alloc(uint8_t, input_size); + FXSYS_memset(m_pSrcBuf, 0, input_size); + m_SrcSize = input_size; + } + bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); + if (!bResult) { + m_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += input_size; + bResult = + pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, pAttribute); + } + ASSERT(!bResult); + if (m_pPngContext) { + pPngModule->Finish(m_pPngContext); + m_pPngContext = NULL; + } + if (m_SrcPassNumber == 0) { + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } + } break; + case FXCODEC_IMAGE_GIF: { + ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); + if (pGifModule == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + pGifModule->RecordCurrentPositionCallback = + CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback; + pGifModule->AskLocalPaletteBufCallback = + CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback; + pGifModule->InputRecordPositionBufCallback = + CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback; + pGifModule->ReadScanlineCallback = + CCodec_ProgressiveDecoder::GifReadScanlineCallback; + m_pGifContext = pGifModule->Start((void*)this); + if (m_pGifContext == NULL) { + m_status = FXCODEC_STATUS_ERR_MEMORY; + return FALSE; + } + FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); + if (!bResult) { + m_status = FXCODEC_STATUS_ERR_READ; + return FALSE; + } + m_offSet += size; + pGifModule->Input(m_pGifContext, m_pSrcBuf, size); + m_SrcComponents = 1; + int32_t readResult = pGifModule->ReadHeader( + m_pGifContext, &m_SrcWidth, &m_SrcHeight, &m_GifPltNumber, + (void**)&m_pGifPalette, &m_GifBgIndex, nullptr); + while (readResult == 2) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; + if (!GifReadMoreData(pGifModule, error_status)) { + m_status = error_status; + return FALSE; + } + readResult = pGifModule->ReadHeader( + m_pGifContext, &m_SrcWidth, &m_SrcHeight, &m_GifPltNumber, + (void**)&m_pGifPalette, &m_GifBgIndex, nullptr); + } + if (readResult == 1) { + m_SrcBPC = 8; + m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); + return TRUE; + } + if (m_pGifContext) { + pGifModule->Finish(m_pGifContext); + m_pGifContext = NULL; + } + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } break; + case FXCODEC_IMAGE_TIF: { + ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); + if (pTiffModule == NULL) { + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } + m_pTiffContext = pTiffModule->CreateDecoder(m_pFile); + if (m_pTiffContext == NULL) { + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } + int32_t frames = 0; + pTiffModule->GetFrames(m_pTiffContext, frames); + FX_DWORD bpc; + FX_BOOL ret = pTiffModule->LoadFrameInfo( + m_pTiffContext, 0, (FX_DWORD&)m_SrcWidth, (FX_DWORD&)m_SrcHeight, + (FX_DWORD&)m_SrcComponents, bpc, pAttribute); + m_SrcComponents = 4; + m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); + if (!ret) { + pTiffModule->DestroyDecoder(m_pTiffContext); + (m_pTiffContext = NULL); + (m_status = FXCODEC_STATUS_ERR_FORMAT); + return FALSE; + } + } break; + default: + m_status = FXCODEC_STATUS_ERR_FORMAT; + return FALSE; + } + return TRUE; +} +FXCODEC_STATUS CCodec_ProgressiveDecoder::LoadImageInfo( + IFX_FileRead* pFile, + FXCODEC_IMAGE_TYPE imageType, + CFX_DIBAttribute* pAttribute) { + switch (m_status) { + case FXCODEC_STATUS_FRAME_READY: + case FXCODEC_STATUS_FRAME_TOBECONTINUE: + case FXCODEC_STATUS_DECODE_READY: + case FXCODEC_STATUS_DECODE_TOBECONTINUE: + return FXCODEC_STATUS_ERROR; + default: + break; + } + if (pFile == NULL) { + m_status = FXCODEC_STATUS_ERR_PARAMS; + m_pFile = NULL; + return m_status; + } + m_pFile = pFile; + m_offSet = 0; + m_SrcWidth = m_SrcHeight = 0; + m_SrcComponents = m_SrcBPC = 0; + m_clipBox = FX_RECT(0, 0, 0, 0); + m_startX = m_startY = 0; + m_sizeX = m_sizeY = 0; + m_SrcPassNumber = 0; + if (imageType != FXCODEC_IMAGE_UNKNOWN && + DetectImageType(imageType, pAttribute)) { + m_imagType = imageType; + m_status = FXCODEC_STATUS_FRAME_READY; + return m_status; + } + for (int type = FXCODEC_IMAGE_BMP; type < FXCODEC_IMAGE_MAX; type++) { + if (DetectImageType((FXCODEC_IMAGE_TYPE)type, pAttribute)) { + m_imagType = (FXCODEC_IMAGE_TYPE)type; + m_status = FXCODEC_STATUS_FRAME_READY; + return m_status; + } + } + m_status = FXCODEC_STATUS_ERR_FORMAT; + m_pFile = NULL; + return m_status; +} +void CCodec_ProgressiveDecoder::SetClipBox(FX_RECT* clip) { + if (m_status != FXCODEC_STATUS_FRAME_READY) { + return; + } + if (clip->IsEmpty()) { + m_clipBox = FX_RECT(0, 0, 0, 0); + return; + } + if (clip->left < 0) { + clip->left = 0; + } + if (clip->right > m_SrcWidth) { + clip->right = m_SrcWidth; + } + if (clip->top < 0) { + clip->top = 0; + } + if (clip->bottom > m_SrcHeight) { + clip->bottom = m_SrcHeight; + } + if (clip->IsEmpty()) { + m_clipBox = FX_RECT(0, 0, 0, 0); + return; + } + m_clipBox = *clip; +} +void CCodec_ProgressiveDecoder::GetDownScale(int& down_scale) { + down_scale = 1; + int ratio_w = m_clipBox.Width() / m_sizeX; + int ratio_h = m_clipBox.Height() / m_sizeY; + int ratio = (ratio_w > ratio_h) ? ratio_h : ratio_w; + if (ratio >= 8) { + down_scale = 8; + } else if (ratio >= 4) { + down_scale = 4; + } else if (ratio >= 2) { + down_scale = 2; + } + m_clipBox.left /= down_scale; + m_clipBox.right /= down_scale; + m_clipBox.top /= down_scale; + m_clipBox.bottom /= down_scale; + if (m_clipBox.right == m_clipBox.left) { + m_clipBox.right = m_clipBox.left + 1; + } + if (m_clipBox.bottom == m_clipBox.top) { + m_clipBox.bottom = m_clipBox.top + 1; + } +} +void CCodec_ProgressiveDecoder::GetTransMethod(FXDIB_Format des_format, + FXCodec_Format src_format) { + switch (des_format) { + case FXDIB_1bppMask: + case FXDIB_1bppRgb: { + switch (src_format) { + case FXCodec_1bppGray: + m_TransMethod = 0; + break; + default: + m_TransMethod = -1; + } + } break; + case FXDIB_8bppMask: + case FXDIB_8bppRgb: { + switch (src_format) { + case FXCodec_1bppGray: + m_TransMethod = 1; + break; + case FXCodec_8bppGray: + m_TransMethod = 2; + break; + case FXCodec_1bppRgb: + case FXCodec_8bppRgb: + m_TransMethod = 3; + break; + case FXCodec_Rgb: + case FXCodec_Rgb32: + case FXCodec_Argb: + m_TransMethod = 4; + break; + case FXCodec_Cmyk: + m_TransMethod = 5; + break; + default: + m_TransMethod = -1; + } + } break; + case FXDIB_Rgb: { + switch (src_format) { + case FXCodec_1bppGray: + m_TransMethod = 6; + break; + case FXCodec_8bppGray: + m_TransMethod = 7; + break; + case FXCodec_1bppRgb: + case FXCodec_8bppRgb: + m_TransMethod = 8; + break; + case FXCodec_Rgb: + case FXCodec_Rgb32: + case FXCodec_Argb: + m_TransMethod = 9; + break; + case FXCodec_Cmyk: + m_TransMethod = 10; + break; + default: + m_TransMethod = -1; + } + } break; + case FXDIB_Rgb32: + case FXDIB_Argb: { + switch (src_format) { + case FXCodec_1bppGray: + m_TransMethod = 6; + break; + case FXCodec_8bppGray: + m_TransMethod = 7; + break; + case FXCodec_1bppRgb: + case FXCodec_8bppRgb: + if (des_format == FXDIB_Argb) { + m_TransMethod = 12; + } else { + m_TransMethod = 8; + } + break; + case FXCodec_Rgb: + case FXCodec_Rgb32: + m_TransMethod = 9; + break; + case FXCodec_Cmyk: + m_TransMethod = 10; + break; + case FXCodec_Argb: + m_TransMethod = 11; + break; + default: + m_TransMethod = -1; + } + } break; + default: + m_TransMethod = -1; + } +} +void _RGB2BGR(uint8_t* buffer, int width = 1) { + if (buffer && width > 0) { + uint8_t temp; + int i = 0; + int j = 0; + for (; i < width; i++, j += 3) { + temp = buffer[j]; + buffer[j] = buffer[j + 2]; + buffer[j + 2] = temp; + } + } +} +void CCodec_ProgressiveDecoder::ReSampleScanline(CFX_DIBitmap* pDeviceBitmap, + int des_line, + uint8_t* src_scan, + FXCodec_Format src_format) { + int src_left = m_clipBox.left; + int des_left = m_startX; + uint8_t* des_scan = + pDeviceBitmap->GetBuffer() + des_line * pDeviceBitmap->GetPitch(); + int src_bpp = src_format & 0xff; + int des_bpp = pDeviceBitmap->GetBPP(); + int src_Bpp = src_bpp >> 3; + int des_Bpp = des_bpp >> 3; + src_scan += src_left * src_Bpp; + des_scan += des_left * des_Bpp; + for (int des_col = 0; des_col < m_sizeX; des_col++) { + PixelWeight* pPixelWeights = m_WeightHorz.GetPixelWeight(des_col); + switch (m_TransMethod) { + case -1: + return; + case 0: + return; + case 1: + return; + case 2: { + FX_DWORD des_g = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + des_g += pixel_weight * src_scan[j]; + } + *des_scan++ = (uint8_t)(des_g >> 16); + } break; + case 3: { + int des_r = 0, des_g = 0, des_b = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + unsigned long argb = m_pSrcPalette[src_scan[j]]; + des_r += pixel_weight * (uint8_t)(argb >> 16); + des_g += pixel_weight * (uint8_t)(argb >> 8); + des_b += pixel_weight * (uint8_t)argb; + } + *des_scan++ = + (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); + } break; + case 4: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = src_scan + j * src_Bpp; + des_b += pixel_weight * (*src_pixel++); + des_g += pixel_weight * (*src_pixel++); + des_r += pixel_weight * (*src_pixel); + } + *des_scan++ = + (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); + } break; + case 5: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = src_scan + j * src_Bpp; + uint8_t src_b = 0, src_g = 0, src_r = 0; + AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1], + 255 - src_pixel[2], 255 - src_pixel[3], src_r, + src_g, src_b); + des_b += pixel_weight * src_b; + des_g += pixel_weight * src_g; + des_r += pixel_weight * src_r; + } + *des_scan++ = + (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); + } break; + case 6: + return; + case 7: { + FX_DWORD des_g = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + des_g += pixel_weight * src_scan[j]; + } + FXSYS_memset(des_scan, (uint8_t)(des_g >> 16), 3); + des_scan += des_Bpp; + } break; + case 8: { + int des_r = 0, des_g = 0, des_b = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + unsigned long argb = m_pSrcPalette[src_scan[j]]; + des_r += pixel_weight * (uint8_t)(argb >> 16); + des_g += pixel_weight * (uint8_t)(argb >> 8); + des_b += pixel_weight * (uint8_t)argb; + } + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + des_scan += des_Bpp - 3; + } break; + case 12: { + if (m_pBmpContext) { + int des_r = 0, des_g = 0, des_b = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + unsigned long argb = m_pSrcPalette[src_scan[j]]; + des_r += pixel_weight * (uint8_t)(argb >> 16); + des_g += pixel_weight * (uint8_t)(argb >> 8); + des_b += pixel_weight * (uint8_t)argb; + } + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + *des_scan++ = 0xFF; + } else { + int des_a = 0, des_r = 0, des_g = 0, des_b = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + unsigned long argb = m_pSrcPalette[src_scan[j]]; + des_a += pixel_weight * (uint8_t)(argb >> 24); + des_r += pixel_weight * (uint8_t)(argb >> 16); + des_g += pixel_weight * (uint8_t)(argb >> 8); + des_b += pixel_weight * (uint8_t)argb; + } + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + *des_scan++ = (uint8_t)((des_a) >> 16); + } + } break; + case 9: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = src_scan + j * src_Bpp; + des_b += pixel_weight * (*src_pixel++); + des_g += pixel_weight * (*src_pixel++); + des_r += pixel_weight * (*src_pixel); + } + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + des_scan += des_Bpp - 3; + } break; + case 10: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = src_scan + j * src_Bpp; + uint8_t src_b = 0, src_g = 0, src_r = 0; + AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1], + 255 - src_pixel[2], 255 - src_pixel[3], src_r, + src_g, src_b); + des_b += pixel_weight * src_b; + des_g += pixel_weight * src_g; + des_r += pixel_weight * src_r; + } + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + des_scan += des_Bpp - 3; + } break; + case 11: { + FX_DWORD des_alpha = 0, des_r = 0, des_g = 0, des_b = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = src_scan + j * src_Bpp; + pixel_weight = pixel_weight * src_pixel[3] / 255; + des_b += pixel_weight * (*src_pixel++); + des_g += pixel_weight * (*src_pixel++); + des_r += pixel_weight * (*src_pixel); + des_alpha += pixel_weight; + } + *des_scan++ = (uint8_t)((des_b) >> 16); + *des_scan++ = (uint8_t)((des_g) >> 16); + *des_scan++ = (uint8_t)((des_r) >> 16); + *des_scan++ = (uint8_t)((des_alpha * 255) >> 16); + } break; + default: + return; + } + } +} +void CCodec_ProgressiveDecoder::ResampleVert(CFX_DIBitmap* pDeviceBitmap, + double scale_y, + int des_row) { + int des_Bpp = pDeviceBitmap->GetBPP() >> 3; + FX_DWORD des_ScanOffet = m_startX * des_Bpp; + if (m_bInterpol) { + int des_top = m_startY; + int des_row_1 = des_row - int(scale_y); + if (des_row_1 < des_top) { + int des_bottom = des_top + m_sizeY; + if (des_row + (int)scale_y >= des_bottom - 1) { + uint8_t* scan_src = + (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; + while (++des_row < des_bottom) { + uint8_t* scan_des = + (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; + FX_DWORD size = m_sizeX * des_Bpp; + FXSYS_memcpy(scan_des, scan_src, size); + } + } + return; + } + for (; des_row_1 < des_row; des_row_1++) { + uint8_t* scan_des = + (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; + PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); + const uint8_t* scan_src1 = + pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + + des_ScanOffet; + const uint8_t* scan_src2 = + pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + + des_ScanOffet; + for (int des_col = 0; des_col < m_sizeX; des_col++) { + switch (pDeviceBitmap->GetFormat()) { + case FXDIB_Invalid: + case FXDIB_1bppMask: + case FXDIB_1bppRgb: + return; + case FXDIB_8bppMask: + case FXDIB_8bppRgb: { + if (pDeviceBitmap->GetPalette()) { + return; + } + int des_g = 0; + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + *scan_des++ = (uint8_t)(des_g >> 16); + } break; + case FXDIB_Rgb: + case FXDIB_Rgb32: { + FX_DWORD des_b = 0, des_g = 0, des_r = 0; + des_b += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_r += pWeight->m_Weights[0] * (*scan_src1++); + scan_src1 += des_Bpp - 3; + des_b += pWeight->m_Weights[1] * (*scan_src2++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + des_r += pWeight->m_Weights[1] * (*scan_src2++); + scan_src2 += des_Bpp - 3; + *scan_des++ = (uint8_t)((des_b) >> 16); + *scan_des++ = (uint8_t)((des_g) >> 16); + *scan_des++ = (uint8_t)((des_r) >> 16); + scan_des += des_Bpp - 3; + } break; + case FXDIB_Argb: { + FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; + des_b += pWeight->m_Weights[0] * (*scan_src1++); + des_g += pWeight->m_Weights[0] * (*scan_src1++); + des_r += pWeight->m_Weights[0] * (*scan_src1++); + des_a += pWeight->m_Weights[0] * (*scan_src1++); + des_b += pWeight->m_Weights[1] * (*scan_src2++); + des_g += pWeight->m_Weights[1] * (*scan_src2++); + des_r += pWeight->m_Weights[1] * (*scan_src2++); + des_a += pWeight->m_Weights[1] * (*scan_src2++); + *scan_des++ = (uint8_t)((des_b) >> 16); + *scan_des++ = (uint8_t)((des_g) >> 16); + *scan_des++ = (uint8_t)((des_r) >> 16); + *scan_des++ = (uint8_t)((des_a) >> 16); + } break; + default: + return; + } + } + } + int des_bottom = des_top + m_sizeY; + if (des_row + (int)scale_y >= des_bottom - 1) { + uint8_t* scan_src = + (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; + while (++des_row < des_bottom) { + uint8_t* scan_des = + (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; + FX_DWORD size = m_sizeX * des_Bpp; + FXSYS_memcpy(scan_des, scan_src, size); + } + } + return; + } + int multiple = (int)FXSYS_ceil((FX_FLOAT)scale_y - 1); + if (multiple > 0) { + uint8_t* scan_src = + (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; + for (int i = 1; i <= multiple; i++) { + if (des_row + i >= m_startY + m_sizeY) { + return; + } + uint8_t* scan_des = + (uint8_t*)pDeviceBitmap->GetScanline(des_row + i) + des_ScanOffet; + FX_DWORD size = m_sizeX * des_Bpp; + FXSYS_memcpy(scan_des, scan_src, size); + } + } +} +void CCodec_ProgressiveDecoder::Resample(CFX_DIBitmap* pDeviceBitmap, + int32_t src_line, + uint8_t* src_scan, + FXCodec_Format src_format) { + int src_top = m_clipBox.top; + int des_top = m_startY; + int src_hei = m_clipBox.Height(); + int des_hei = m_sizeY; + if (src_line >= src_top) { + double scale_y = (double)des_hei / (double)src_hei; + int src_row = src_line - src_top; + int des_row = (int)(src_row * scale_y) + des_top; + if (des_row >= des_top + des_hei) { + return; + } + ReSampleScanline(pDeviceBitmap, des_row, m_pDecodeBuf, src_format); + if (scale_y > 1.0) { + ResampleVert(pDeviceBitmap, scale_y, des_row); + } + } +} +FXCODEC_STATUS CCodec_ProgressiveDecoder::GetFrames(int32_t& frames, + IFX_Pause* pPause) { + if (!(m_status == FXCODEC_STATUS_FRAME_READY || + m_status == FXCODEC_STATUS_FRAME_TOBECONTINUE)) { + return FXCODEC_STATUS_ERROR; + } + switch (m_imagType) { + case FXCODEC_IMAGE_BMP: + case FXCODEC_IMAGE_JPG: + case FXCODEC_IMAGE_PNG: + case FXCODEC_IMAGE_TIF: + frames = m_FrameNumber = 1; + return m_status = FXCODEC_STATUS_DECODE_READY; + case FXCODEC_IMAGE_GIF: { + ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); + while (TRUE) { + int32_t readResult = + pGifModule->LoadFrameInfo(m_pGifContext, &m_FrameNumber); + while (readResult == 2) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_READ; + if (!GifReadMoreData(pGifModule, error_status)) { + return error_status; + } + if (pPause && pPause->NeedToPauseNow()) { + return m_status = FXCODEC_STATUS_FRAME_TOBECONTINUE; + } + readResult = pGifModule->LoadFrameInfo(m_pGifContext, &m_FrameNumber); + } + if (readResult == 1) { + frames = m_FrameNumber; + return m_status = FXCODEC_STATUS_DECODE_READY; + } + if (m_pGifContext) { + pGifModule->Finish(m_pGifContext); + m_pGifContext = NULL; + } + return m_status = FXCODEC_STATUS_ERROR; + } + } break; + default: + break; + } + return FXCODEC_STATUS_ERROR; +} +FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap, + int start_x, + int start_y, + int size_x, + int size_y, + int32_t frames, + FX_BOOL bInterpol) { + if (m_status != FXCODEC_STATUS_DECODE_READY) { + return FXCODEC_STATUS_ERROR; + } + if (pDIBitmap == NULL || pDIBitmap->GetBPP() < 8 || frames < 0 || + frames >= m_FrameNumber) { + return FXCODEC_STATUS_ERR_PARAMS; + } + m_pDeviceBitmap = pDIBitmap; + if (m_clipBox.IsEmpty()) { + return FXCODEC_STATUS_ERR_PARAMS; + } + if (size_x <= 0 || size_x > 65535 || size_y <= 0 || size_y > 65535) { + return FXCODEC_STATUS_ERR_PARAMS; + } + FX_RECT device_rc = + FX_RECT(start_x, start_y, start_x + size_x, start_y + size_y); + int32_t out_range_x = device_rc.right - pDIBitmap->GetWidth(); + int32_t out_range_y = device_rc.bottom - pDIBitmap->GetHeight(); + device_rc.Intersect( + FX_RECT(0, 0, pDIBitmap->GetWidth(), pDIBitmap->GetHeight())); + if (device_rc.IsEmpty()) { + return FXCODEC_STATUS_ERR_PARAMS; + } + m_startX = device_rc.left; + m_startY = device_rc.top; + m_sizeX = device_rc.Width(); + m_sizeY = device_rc.Height(); + m_bInterpol = bInterpol; + m_FrameCur = 0; + if (start_x < 0 || out_range_x > 0) { + FX_FLOAT scaleX = (FX_FLOAT)m_clipBox.Width() / (FX_FLOAT)size_x; + if (start_x < 0) { + m_clipBox.left -= (int32_t)FXSYS_ceil((FX_FLOAT)start_x * scaleX); + } + if (out_range_x > 0) { + m_clipBox.right -= (int32_t)FXSYS_floor((FX_FLOAT)out_range_x * scaleX); + } + } + if (start_y < 0 || out_range_y > 0) { + FX_FLOAT scaleY = (FX_FLOAT)m_clipBox.Height() / (FX_FLOAT)size_y; + if (start_y < 0) { + m_clipBox.top -= (int32_t)FXSYS_ceil((FX_FLOAT)start_y * scaleY); + } + if (out_range_y > 0) { + m_clipBox.bottom -= (int32_t)FXSYS_floor((FX_FLOAT)out_range_y * scaleY); + } + } + if (m_clipBox.IsEmpty()) { + return FXCODEC_STATUS_ERR_PARAMS; + } + switch (m_imagType) { + case FXCODEC_IMAGE_JPG: { + ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); + int down_scale = 1; + GetDownScale(down_scale); + FX_BOOL bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); + while (!bStart) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; + if (!JpegReadMoreData(pJpegModule, error_status)) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = error_status; + } + bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); + } + int scanline_size = (m_SrcWidth + down_scale - 1) / down_scale; + scanline_size = (scanline_size * m_SrcComponents + 3) / 4 * 4; + FX_Free(m_pDecodeBuf); + m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); + FXSYS_memset(m_pDecodeBuf, 0, scanline_size); + m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, + m_clipBox.Width(), m_bInterpol); + m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); + switch (m_SrcComponents) { + case 1: + m_SrcFormat = FXCodec_8bppGray; + break; + case 3: + m_SrcFormat = FXCodec_Rgb; + break; + case 4: + m_SrcFormat = FXCodec_Cmyk; + break; + } + GetTransMethod(pDIBitmap->GetFormat(), m_SrcFormat); + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } break; + case FXCODEC_IMAGE_PNG: { + ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); + if (pPngModule == NULL) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + if (m_pPngContext) { + pPngModule->Finish(m_pPngContext); + m_pPngContext = NULL; + } + m_pPngContext = pPngModule->Start((void*)this); + if (m_pPngContext == NULL) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + m_offSet = 0; + switch (m_pDeviceBitmap->GetFormat()) { + case FXDIB_8bppMask: + case FXDIB_8bppRgb: + m_SrcComponents = 1; + m_SrcFormat = FXCodec_8bppGray; + break; + case FXDIB_Rgb: + m_SrcComponents = 3; + m_SrcFormat = FXCodec_Rgb; + break; + case FXDIB_Rgb32: + case FXDIB_Argb: + m_SrcComponents = 4; + m_SrcFormat = FXCodec_Argb; + break; + default: { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_PARAMS; + } + } + GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); + int scanline_size = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; + FX_Free(m_pDecodeBuf); + m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); + FXSYS_memset(m_pDecodeBuf, 0, scanline_size); + m_WeightHorzOO.Calc(m_sizeX, m_clipBox.Width(), m_bInterpol); + m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } break; + case FXCODEC_IMAGE_GIF: { + ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); + if (pGifModule == NULL) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + m_SrcFormat = FXCodec_8bppRgb; + GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); + int scanline_size = (m_SrcWidth + 3) / 4 * 4; + FX_Free(m_pDecodeBuf); + m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); + FXSYS_memset(m_pDecodeBuf, 0, scanline_size); + m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, + m_clipBox.Width(), m_bInterpol); + m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); + m_FrameCur = frames; + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } break; + case FXCODEC_IMAGE_BMP: { + ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); + if (pBmpModule == NULL) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + switch (m_SrcComponents) { + case 1: + m_SrcFormat = FXCodec_8bppRgb; + break; + case 3: + m_SrcFormat = FXCodec_Rgb; + break; + case 4: + m_SrcFormat = FXCodec_Rgb32; + break; + } + GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); + m_ScanlineSize = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; + FX_Free(m_pDecodeBuf); + m_pDecodeBuf = FX_Alloc(uint8_t, m_ScanlineSize); + FXSYS_memset(m_pDecodeBuf, 0, m_ScanlineSize); + m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, + m_clipBox.Width(), m_bInterpol); + m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } break; + case FXCODEC_IMAGE_TIF: + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + default: + break; + } + return FXCODEC_STATUS_ERROR; +} +FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) { + if (m_status != FXCODEC_STATUS_DECODE_TOBECONTINUE) { + return FXCODEC_STATUS_ERROR; + } + switch (m_imagType) { + case FXCODEC_IMAGE_JPG: { + ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); + while (TRUE) { + FX_BOOL readRes = + pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); + while (!readRes) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; + if (!JpegReadMoreData(pJpegModule, error_status)) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = error_status; + } + readRes = pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); + } + if (m_SrcFormat == FXCodec_Rgb) { + int src_Bpp = (m_SrcFormat & 0xff) >> 3; + _RGB2BGR(m_pDecodeBuf + m_clipBox.left * src_Bpp, m_clipBox.Width()); + } + if (m_SrcRow >= m_clipBox.bottom) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_DECODE_FINISH; + } + Resample(m_pDeviceBitmap, m_SrcRow, m_pDecodeBuf, m_SrcFormat); + m_SrcRow++; + if (pPause && pPause->NeedToPauseNow()) { + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + } break; + case FXCODEC_IMAGE_PNG: { + ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); + while (TRUE) { + FX_DWORD remain_size = (FX_DWORD)m_pFile->GetSize() - m_offSet; + FX_DWORD input_size = + remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; + if (input_size == 0) { + if (m_pPngContext) { + pPngModule->Finish(m_pPngContext); + } + m_pPngContext = NULL; + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_DECODE_FINISH; + } + if (m_pSrcBuf && input_size > m_SrcSize) { + FX_Free(m_pSrcBuf); + m_pSrcBuf = FX_Alloc(uint8_t, input_size); + FXSYS_memset(m_pSrcBuf, 0, input_size); + m_SrcSize = input_size; + } + FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); + if (!bResult) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_READ; + } + m_offSet += input_size; + bResult = + pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, nullptr); + if (!bResult) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERROR; + } + if (pPause && pPause->NeedToPauseNow()) { + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + } break; + case FXCODEC_IMAGE_GIF: { + ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); + while (TRUE) { + int32_t readRes = + pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); + while (readRes == 2) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; + if (!GifReadMoreData(pGifModule, error_status)) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = error_status; + } + if (pPause && pPause->NeedToPauseNow()) { + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + readRes = pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); + } + if (readRes == 1) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_DECODE_FINISH; + } + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERROR; + } + } break; + case FXCODEC_IMAGE_BMP: { + ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); + while (TRUE) { + int32_t readRes = pBmpModule->LoadImage(m_pBmpContext); + while (readRes == 2) { + FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; + if (!BmpReadMoreData(pBmpModule, error_status)) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = error_status; + } + if (pPause && pPause->NeedToPauseNow()) { + return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + readRes = pBmpModule->LoadImage(m_pBmpContext); + } + if (readRes == 1) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_DECODE_FINISH; + } + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERROR; + } + } break; + case FXCODEC_IMAGE_TIF: { + ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); + FX_BOOL ret = FALSE; + if (m_pDeviceBitmap->GetBPP() == 32 && + m_pDeviceBitmap->GetWidth() == m_SrcWidth && m_SrcWidth == m_sizeX && + m_pDeviceBitmap->GetHeight() == m_SrcHeight && + m_SrcHeight == m_sizeY && m_startX == 0 && m_startY == 0 && + m_clipBox.left == 0 && m_clipBox.top == 0 && + m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) { + ret = pTiffModule->Decode(m_pTiffContext, m_pDeviceBitmap); + m_pDeviceBitmap = NULL; + m_pFile = NULL; + if (!ret) { + return m_status = FXCODEC_STATUS_ERROR; + } + return m_status = FXCODEC_STATUS_DECODE_FINISH; + } else { + CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; + pDIBitmap->Create(m_SrcWidth, m_SrcHeight, FXDIB_Argb); + if (pDIBitmap->GetBuffer() == NULL) { + delete pDIBitmap; + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + ret = pTiffModule->Decode(m_pTiffContext, pDIBitmap); + if (!ret) { + delete pDIBitmap; + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERROR; + } + CFX_DIBitmap* pClipBitmap = + (m_clipBox.left == 0 && m_clipBox.top == 0 && + m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) + ? pDIBitmap + : pDIBitmap->Clone(&m_clipBox); + if (pDIBitmap != pClipBitmap) { + delete pDIBitmap; + } + if (pClipBitmap == NULL) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + CFX_DIBitmap* pFormatBitmap = NULL; + switch (m_pDeviceBitmap->GetFormat()) { + case FXDIB_8bppRgb: + pFormatBitmap = new CFX_DIBitmap; + pFormatBitmap->Create(pClipBitmap->GetWidth(), + pClipBitmap->GetHeight(), FXDIB_8bppRgb); + break; + case FXDIB_8bppMask: + pFormatBitmap = new CFX_DIBitmap; + pFormatBitmap->Create(pClipBitmap->GetWidth(), + pClipBitmap->GetHeight(), FXDIB_8bppMask); + break; + case FXDIB_Rgb: + pFormatBitmap = new CFX_DIBitmap; + pFormatBitmap->Create(pClipBitmap->GetWidth(), + pClipBitmap->GetHeight(), FXDIB_Rgb); + break; + case FXDIB_Rgb32: + pFormatBitmap = new CFX_DIBitmap; + pFormatBitmap->Create(pClipBitmap->GetWidth(), + pClipBitmap->GetHeight(), FXDIB_Rgb32); + break; + case FXDIB_Argb: + pFormatBitmap = pClipBitmap; + break; + default: + break; + } + switch (m_pDeviceBitmap->GetFormat()) { + case FXDIB_8bppRgb: + case FXDIB_8bppMask: { + for (int32_t row = 0; row < pClipBitmap->GetHeight(); row++) { + uint8_t* src_line = (uint8_t*)pClipBitmap->GetScanline(row); + uint8_t* des_line = (uint8_t*)pFormatBitmap->GetScanline(row); + for (int32_t col = 0; col < pClipBitmap->GetWidth(); col++) { + uint8_t _a = 255 - src_line[3]; + uint8_t b = (src_line[0] * src_line[3] + 0xFF * _a) / 255; + uint8_t g = (src_line[1] * src_line[3] + 0xFF * _a) / 255; + uint8_t r = (src_line[2] * src_line[3] + 0xFF * _a) / 255; + *des_line++ = FXRGB2GRAY(r, g, b); + src_line += 4; + } + } + } break; + case FXDIB_Rgb: + case FXDIB_Rgb32: { + int32_t desBpp = + (m_pDeviceBitmap->GetFormat() == FXDIB_Rgb) ? 3 : 4; + for (int32_t row = 0; row < pClipBitmap->GetHeight(); row++) { + uint8_t* src_line = (uint8_t*)pClipBitmap->GetScanline(row); + uint8_t* des_line = (uint8_t*)pFormatBitmap->GetScanline(row); + for (int32_t col = 0; col < pClipBitmap->GetWidth(); col++) { + uint8_t _a = 255 - src_line[3]; + uint8_t b = (src_line[0] * src_line[3] + 0xFF * _a) / 255; + uint8_t g = (src_line[1] * src_line[3] + 0xFF * _a) / 255; + uint8_t r = (src_line[2] * src_line[3] + 0xFF * _a) / 255; + *des_line++ = b; + *des_line++ = g; + *des_line++ = r; + des_line += desBpp - 3; + src_line += 4; + } + } + } break; + default: + break; + } + if (pClipBitmap != pFormatBitmap) { + delete pClipBitmap; + } + if (pFormatBitmap == NULL) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + CFX_DIBitmap* pStrechBitmap = pFormatBitmap->StretchTo( + m_sizeX, m_sizeY, m_bInterpol ? FXDIB_INTERPOL : FXDIB_DOWNSAMPLE); + delete pFormatBitmap; + pFormatBitmap = NULL; + if (pStrechBitmap == NULL) { + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_ERR_MEMORY; + } + m_pDeviceBitmap->TransferBitmap(m_startX, m_startY, m_sizeX, m_sizeY, + pStrechBitmap, 0, 0); + delete pStrechBitmap; + pStrechBitmap = NULL; + m_pDeviceBitmap = NULL; + m_pFile = NULL; + return m_status = FXCODEC_STATUS_DECODE_FINISH; + } + } break; + default: + break; + } + return FXCODEC_STATUS_ERROR; +} +ICodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() { + return new CCodec_ProgressiveDecoder(this); +} diff --git a/core/fxcodec/codec/fx_codec_progress.h b/core/fxcodec/codec/fx_codec_progress.h new file mode 100644 index 0000000000..c9ee389e02 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_progress.h @@ -0,0 +1,221 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_ +#define CORE_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_ + +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxcrt/fx_memory.h" +#include "core/include/fxcrt/fx_system.h" +#include "core/include/fxge/fx_dib.h" + +#define FXCODEC_BLOCK_SIZE 4096 +#define FXCODEC_PNG_GAMMA 2.2 + +#if _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_ +#undef FXCODEC_PNG_GAMMA +#define FXCODEC_PNG_GAMMA 1.7 +#endif + +struct PixelWeight { + int m_SrcStart; + int m_SrcEnd; + int m_Weights[1]; +}; + +class CFXCODEC_WeightTable { + public: + CFXCODEC_WeightTable() { m_pWeightTables = NULL; } + ~CFXCODEC_WeightTable() { FX_Free(m_pWeightTables); } + + void Calc(int dest_len, + int dest_min, + int dest_max, + int src_len, + int src_min, + int src_max, + FX_BOOL bInterpol); + PixelWeight* GetPixelWeight(int pixel) { + return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize); + } + + int m_DestMin, m_ItemSize; + uint8_t* m_pWeightTables; +}; +class CFXCODEC_HorzTable { + public: + CFXCODEC_HorzTable() { m_pWeightTables = NULL; } + ~CFXCODEC_HorzTable() { FX_Free(m_pWeightTables); } + + void Calc(int dest_len, int src_len, FX_BOOL bInterpol); + PixelWeight* GetPixelWeight(int pixel) { + return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize); + } + + int m_ItemSize; + uint8_t* m_pWeightTables; +}; +class CFXCODEC_VertTable { + public: + CFXCODEC_VertTable() { m_pWeightTables = NULL; } + ~CFXCODEC_VertTable() { FX_Free(m_pWeightTables); } + void Calc(int dest_len, int src_len); + PixelWeight* GetPixelWeight(int pixel) { + return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize); + } + int m_ItemSize; + uint8_t* m_pWeightTables; +}; +enum FXCodec_Format { + FXCodec_Invalid = 0, + FXCodec_1bppGray = 0x101, + FXCodec_1bppRgb = 0x001, + FXCodec_8bppGray = 0x108, + FXCodec_8bppRgb = 0x008, + FXCodec_Rgb = 0x018, + FXCodec_Rgb32 = 0x020, + FXCodec_Argb = 0x220, + FXCodec_Cmyk = 0x120 +}; +class CCodec_ProgressiveDecoder : public ICodec_ProgressiveDecoder { + public: + CCodec_ProgressiveDecoder(CCodec_ModuleMgr* pCodecMgr); + ~CCodec_ProgressiveDecoder() override; + + FXCODEC_STATUS LoadImageInfo(IFX_FileRead* pFile, + FXCODEC_IMAGE_TYPE imageType, + CFX_DIBAttribute* pAttribute) override; + + FXCODEC_IMAGE_TYPE GetType() const override { return m_imagType; } + int32_t GetWidth() const override { return m_SrcWidth; } + int32_t GetHeight() const override { return m_SrcHeight; } + int32_t GetNumComponents() const override { return m_SrcComponents; } + int32_t GetBPC() const override { return m_SrcBPC; } + void SetClipBox(FX_RECT* clip) override; + + FXCODEC_STATUS GetFrames(int32_t& frames, IFX_Pause* pPause) override; + FXCODEC_STATUS StartDecode(CFX_DIBitmap* pDIBitmap, + int start_x, + int start_y, + int size_x, + int size_y, + int32_t frames, + FX_BOOL bInterpol) override; + + FXCODEC_STATUS ContinueDecode(IFX_Pause* pPause) override; + + protected: + static FX_BOOL PngReadHeaderFunc(void* pModule, + int width, + int height, + int bpc, + int pass, + int* color_type, + double* gamma); + static FX_BOOL PngAskScanlineBufFunc(void* pModule, + int line, + uint8_t*& src_buf); + static void PngFillScanlineBufCompletedFunc(void* pModule, + int pass, + int line); + static void GifRecordCurrentPositionCallback(void* pModule, + FX_DWORD& cur_pos); + static uint8_t* GifAskLocalPaletteBufCallback(void* pModule, + int32_t frame_num, + int32_t pal_size); + static FX_BOOL GifInputRecordPositionBufCallback(void* pModule, + FX_DWORD rcd_pos, + const FX_RECT& img_rc, + int32_t pal_num, + void* pal_ptr, + int32_t delay_time, + FX_BOOL user_input, + int32_t trans_index, + int32_t disposal_method, + FX_BOOL interlace); + static void GifReadScanlineCallback(void* pModule, + int32_t row_num, + uint8_t* row_buf); + static FX_BOOL BmpInputImagePositionBufCallback(void* pModule, + FX_DWORD rcd_pos); + static void BmpReadScanlineCallback(void* pModule, + int32_t row_num, + uint8_t* row_buf); + + FX_BOOL DetectImageType(FXCODEC_IMAGE_TYPE imageType, + CFX_DIBAttribute* pAttribute); + void GetDownScale(int& down_scale); + void GetTransMethod(FXDIB_Format des_format, FXCodec_Format src_format); + void ReSampleScanline(CFX_DIBitmap* pDeviceBitmap, + int32_t des_line, + uint8_t* src_scan, + FXCodec_Format src_format); + void Resample(CFX_DIBitmap* pDeviceBitmap, + int32_t src_line, + uint8_t* src_scan, + FXCodec_Format src_format); + void ResampleVert(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row); + FX_BOOL JpegReadMoreData(ICodec_JpegModule* pJpegModule, + FXCODEC_STATUS& err_status); + void PngOneOneMapResampleHorz(CFX_DIBitmap* pDeviceBitmap, + int32_t des_line, + uint8_t* src_scan, + FXCodec_Format src_format); + FX_BOOL GifReadMoreData(ICodec_GifModule* pGifModule, + FXCODEC_STATUS& err_status); + void GifDoubleLineResampleVert(CFX_DIBitmap* pDeviceBitmap, + double scale_y, + int des_row); + FX_BOOL BmpReadMoreData(ICodec_BmpModule* pBmpModule, + FXCODEC_STATUS& err_status); + void ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row); + + public: + IFX_FileRead* m_pFile; + CCodec_ModuleMgr* m_pCodecMgr; + void* m_pJpegContext; + void* m_pPngContext; + void* m_pGifContext; + void* m_pBmpContext; + void* m_pTiffContext; + FXCODEC_IMAGE_TYPE m_imagType; + FX_DWORD m_offSet; + uint8_t* m_pSrcBuf; + FX_DWORD m_SrcSize; + uint8_t* m_pDecodeBuf; + int m_ScanlineSize; + CFX_DIBitmap* m_pDeviceBitmap; + FX_BOOL m_bInterpol; + CFXCODEC_WeightTable m_WeightHorz; + CFXCODEC_VertTable m_WeightVert; + CFXCODEC_HorzTable m_WeightHorzOO; + int m_SrcWidth; + int m_SrcHeight; + int m_SrcComponents; + int m_SrcBPC; + FX_RECT m_clipBox; + int m_startX; + int m_startY; + int m_sizeX; + int m_sizeY; + int m_TransMethod; + FX_ARGB* m_pSrcPalette; + int m_SrcPaletteNumber; + int m_SrcRow; + FXCodec_Format m_SrcFormat; + int m_SrcPassNumber; + int m_FrameNumber; + int m_FrameCur; + int m_GifBgIndex; + uint8_t* m_pGifPalette; + int32_t m_GifPltNumber; + int m_GifTransIndex; + FX_RECT m_GifFrameRect; + FX_BOOL m_BmpIsTopBottom; + FXCODEC_STATUS m_status; +}; + +#endif // CORE_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_ diff --git a/core/fxcodec/codec/fx_codec_tiff.cpp b/core/fxcodec/codec/fx_codec_tiff.cpp new file mode 100644 index 0000000000..2af92f2f12 --- /dev/null +++ b/core/fxcodec/codec/fx_codec_tiff.cpp @@ -0,0 +1,544 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/codec/codec_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_dib.h" + +extern "C" { +#include "third_party/libtiff/tiffiop.h" +} + +void* IccLib_CreateTransform_sRGB(const unsigned char* pProfileData, + unsigned int dwProfileSize, + int nComponents, + int intent, + FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT); +void IccLib_TranslateImage(void* pTransform, + unsigned char* pDest, + const unsigned char* pSrc, + int pixels); +void IccLib_DestroyTransform(void* pTransform); +class CCodec_TiffContext { + public: + CCodec_TiffContext(); + ~CCodec_TiffContext(); + + FX_BOOL InitDecoder(IFX_FileRead* file_ptr); + void GetFrames(int32_t& frames); + FX_BOOL LoadFrameInfo(int32_t frame, + FX_DWORD& width, + FX_DWORD& height, + FX_DWORD& comps, + FX_DWORD& bpc, + CFX_DIBAttribute* pAttribute); + FX_BOOL Decode(CFX_DIBitmap* pDIBitmap); + + union { + IFX_FileRead* in; + IFX_FileStream* out; + } io; + + FX_DWORD offset; + + TIFF* tif_ctx; + void* icc_ctx; + int32_t frame_num; + int32_t frame_cur; + FX_BOOL isDecoder; + + private: + FX_BOOL isSupport(CFX_DIBitmap* pDIBitmap); + void SetPalette(CFX_DIBitmap* pDIBitmap, uint16_t bps); + FX_BOOL Decode1bppRGB(CFX_DIBitmap* pDIBitmap, + int32_t height, + int32_t width, + uint16_t bps, + uint16_t spp); + FX_BOOL Decode8bppRGB(CFX_DIBitmap* pDIBitmap, + int32_t height, + int32_t width, + uint16_t bps, + uint16_t spp); + FX_BOOL Decode24bppRGB(CFX_DIBitmap* pDIBitmap, + int32_t height, + int32_t width, + uint16_t bps, + uint16_t spp); +}; +CCodec_TiffContext::CCodec_TiffContext() { + offset = 0; + frame_num = 0; + frame_cur = 0; + io.in = NULL; + tif_ctx = NULL; + icc_ctx = NULL; + isDecoder = TRUE; +} +CCodec_TiffContext::~CCodec_TiffContext() { + if (icc_ctx) { + IccLib_DestroyTransform(icc_ctx); + icc_ctx = NULL; + } + if (tif_ctx) { + TIFFClose(tif_ctx); + } +} +static tsize_t _tiff_read(thandle_t context, tdata_t buf, tsize_t length) { + CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; + FX_BOOL ret = FALSE; + if (pTiffContext->isDecoder) { + ret = pTiffContext->io.in->ReadBlock(buf, pTiffContext->offset, length); + } else { + ret = pTiffContext->io.out->ReadBlock(buf, pTiffContext->offset, length); + } + if (!ret) { + return 0; + } + pTiffContext->offset += (FX_DWORD)length; + return length; +} +static tsize_t _tiff_write(thandle_t context, tdata_t buf, tsize_t length) { + CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; + ASSERT(!pTiffContext->isDecoder); + if (!pTiffContext->io.out->WriteBlock(buf, pTiffContext->offset, length)) { + return 0; + } + pTiffContext->offset += (FX_DWORD)length; + return length; +} +static toff_t _tiff_seek(thandle_t context, toff_t offset, int whence) { + CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; + switch (whence) { + case 0: + pTiffContext->offset = (FX_DWORD)offset; + break; + case 1: + pTiffContext->offset += (FX_DWORD)offset; + break; + case 2: + if (pTiffContext->isDecoder) { + if (pTiffContext->io.in->GetSize() < (FX_FILESIZE)offset) { + return -1; + } + pTiffContext->offset = + (FX_DWORD)(pTiffContext->io.in->GetSize() - offset); + } else { + if (pTiffContext->io.out->GetSize() < (FX_FILESIZE)offset) { + return -1; + } + pTiffContext->offset = + (FX_DWORD)(pTiffContext->io.out->GetSize() - offset); + } + break; + default: + return -1; + } + ASSERT(pTiffContext->isDecoder ? (pTiffContext->offset <= + (FX_DWORD)pTiffContext->io.in->GetSize()) + : TRUE); + return pTiffContext->offset; +} +static int _tiff_close(thandle_t context) { + return 0; +} +static toff_t _tiff_get_size(thandle_t context) { + CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; + return pTiffContext->isDecoder ? (toff_t)pTiffContext->io.in->GetSize() + : (toff_t)pTiffContext->io.out->GetSize(); +} +static int _tiff_map(thandle_t context, tdata_t*, toff_t*) { + return 0; +} +static void _tiff_unmap(thandle_t context, tdata_t, toff_t) {} +TIFF* _tiff_open(void* context, const char* mode) { + TIFF* tif = TIFFClientOpen("Tiff Image", mode, (thandle_t)context, _tiff_read, + _tiff_write, _tiff_seek, _tiff_close, + _tiff_get_size, _tiff_map, _tiff_unmap); + if (tif) { + tif->tif_fd = (int)(intptr_t)context; + } + return tif; +} +void* _TIFFmalloc(tmsize_t size) { + return FXMEM_DefaultAlloc(size, 0); +} +void _TIFFfree(void* ptr) { + FXMEM_DefaultFree(ptr, 0); +} +void* _TIFFrealloc(void* ptr, tmsize_t size) { + return FXMEM_DefaultRealloc(ptr, size, 0); +} +void _TIFFmemset(void* ptr, int val, tmsize_t size) { + FXSYS_memset(ptr, val, (size_t)size); +} +void _TIFFmemcpy(void* des, const void* src, tmsize_t size) { + FXSYS_memcpy(des, src, (size_t)size); +} +int _TIFFmemcmp(const void* ptr1, const void* ptr2, tmsize_t size) { + return FXSYS_memcmp(ptr1, ptr2, (size_t)size); +} + +TIFFErrorHandler _TIFFwarningHandler = nullptr; +TIFFErrorHandler _TIFFerrorHandler = nullptr; + +int TIFFCmyk2Rgb(thandle_t context, + uint8 c, + uint8 m, + uint8 y, + uint8 k, + uint8* r, + uint8* g, + uint8* b) { + if (context == NULL) { + return 0; + } + CCodec_TiffContext* p = (CCodec_TiffContext*)context; + if (p->icc_ctx) { + unsigned char cmyk[4], bgr[3]; + cmyk[0] = c, cmyk[1] = m, cmyk[2] = y, cmyk[3] = k; + IccLib_TranslateImage(p->icc_ctx, bgr, cmyk, 1); + *r = bgr[2], *g = bgr[1], *b = bgr[0]; + } else { + AdobeCMYK_to_sRGB1(c, m, y, k, *r, *g, *b); + } + return 1; +} +FX_BOOL CCodec_TiffContext::InitDecoder(IFX_FileRead* file_ptr) { + io.in = file_ptr; + tif_ctx = _tiff_open(this, "r"); + if (tif_ctx == NULL) { + return FALSE; + } + return TRUE; +} +void CCodec_TiffContext::GetFrames(int32_t& frames) { + frames = frame_num = TIFFNumberOfDirectories(tif_ctx); +} +#define TIFF_EXIF_GETINFO(key, T, tag) \ + { \ + T val = (T)0; \ + TIFFGetField(tif_ctx, tag, &val); \ + if (val) { \ + (key) = FX_Alloc(uint8_t, sizeof(T)); \ + if ((key)) { \ + T* ptr = (T*)(key); \ + *ptr = val; \ + pExif->m_TagVal.SetAt(tag, (key)); \ + } \ + } \ + } \ + (key) = NULL; +#define TIFF_EXIF_GETSTRINGINFO(key, tag) \ + { \ + FX_DWORD size = 0; \ + uint8_t* buf = NULL; \ + TIFFGetField(tif_ctx, tag, &size, &buf); \ + if (size && buf) { \ + (key) = FX_Alloc(uint8_t, size); \ + if ((key)) { \ + FXSYS_memcpy((key), buf, size); \ + pExif->m_TagVal.SetAt(tag, (key)); \ + } \ + } \ + } \ + (key) = NULL; + +namespace { + +template +FX_BOOL Tiff_Exif_GetInfo(TIFF* tif_ctx, ttag_t tag, CFX_DIBAttribute* pAttr) { + T val = 0; + TIFFGetField(tif_ctx, tag, &val); + if (!val) + return FALSE; + T* ptr = FX_Alloc(T, 1); + *ptr = val; + pAttr->m_Exif[tag] = (void*)ptr; + return TRUE; +} +void Tiff_Exif_GetStringInfo(TIFF* tif_ctx, + ttag_t tag, + CFX_DIBAttribute* pAttr) { + FX_CHAR* buf = nullptr; + TIFFGetField(tif_ctx, tag, &buf); + if (!buf) + return; + FX_STRSIZE size = FXSYS_strlen(buf); + uint8_t* ptr = FX_Alloc(uint8_t, size + 1); + FXSYS_memcpy(ptr, buf, size); + ptr[size] = 0; + pAttr->m_Exif[tag] = ptr; +} + +} // namespace + +FX_BOOL CCodec_TiffContext::LoadFrameInfo(int32_t frame, + FX_DWORD& width, + FX_DWORD& height, + FX_DWORD& comps, + FX_DWORD& bpc, + CFX_DIBAttribute* pAttribute) { + if (!TIFFSetDirectory(tif_ctx, (uint16)frame)) { + return FALSE; + } + FX_WORD tif_cs; + FX_DWORD tif_icc_size = 0; + uint8_t* tif_icc_buf = NULL; + FX_WORD tif_bpc = 0; + FX_WORD tif_cps; + FX_DWORD tif_rps; + width = height = comps = 0; + TIFFGetField(tif_ctx, TIFFTAG_IMAGEWIDTH, &width); + TIFFGetField(tif_ctx, TIFFTAG_IMAGELENGTH, &height); + TIFFGetField(tif_ctx, TIFFTAG_SAMPLESPERPIXEL, &comps); + TIFFGetField(tif_ctx, TIFFTAG_BITSPERSAMPLE, &tif_bpc); + TIFFGetField(tif_ctx, TIFFTAG_PHOTOMETRIC, &tif_cs); + TIFFGetField(tif_ctx, TIFFTAG_COMPRESSION, &tif_cps); + TIFFGetField(tif_ctx, TIFFTAG_ROWSPERSTRIP, &tif_rps); + TIFFGetField(tif_ctx, TIFFTAG_ICCPROFILE, &tif_icc_size, &tif_icc_buf); + if (pAttribute) { + pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_INCH; + if (TIFFGetField(tif_ctx, TIFFTAG_RESOLUTIONUNIT, + &pAttribute->m_wDPIUnit)) { + pAttribute->m_wDPIUnit -= 1; + } + Tiff_Exif_GetInfo(tif_ctx, TIFFTAG_ORIENTATION, pAttribute); + if (Tiff_Exif_GetInfo(tif_ctx, TIFFTAG_XRESOLUTION, pAttribute)) { + void* val = pAttribute->m_Exif[TIFFTAG_XRESOLUTION]; + FX_FLOAT fDpi = val ? *reinterpret_cast(val) : 0; + pAttribute->m_nXDPI = (int32_t)(fDpi + 0.5f); + } + if (Tiff_Exif_GetInfo(tif_ctx, TIFFTAG_YRESOLUTION, pAttribute)) { + void* val = pAttribute->m_Exif[TIFFTAG_YRESOLUTION]; + FX_FLOAT fDpi = val ? *reinterpret_cast(val) : 0; + pAttribute->m_nYDPI = (int32_t)(fDpi + 0.5f); + } + Tiff_Exif_GetStringInfo(tif_ctx, TIFFTAG_IMAGEDESCRIPTION, pAttribute); + Tiff_Exif_GetStringInfo(tif_ctx, TIFFTAG_MAKE, pAttribute); + Tiff_Exif_GetStringInfo(tif_ctx, TIFFTAG_MODEL, pAttribute); + } + bpc = tif_bpc; + if (tif_rps > height) { + TIFFSetField(tif_ctx, TIFFTAG_ROWSPERSTRIP, tif_rps = height); + } + return TRUE; +} +void _TiffBGRA2RGBA(uint8_t* pBuf, int32_t pixel, int32_t spp) { + for (int32_t n = 0; n < pixel; n++) { + uint8_t tmp = pBuf[0]; + pBuf[0] = pBuf[2]; + pBuf[2] = tmp; + pBuf += spp; + } +} +FX_BOOL CCodec_TiffContext::isSupport(CFX_DIBitmap* pDIBitmap) { + if (TIFFIsTiled(tif_ctx)) { + return FALSE; + } + uint16_t photometric; + if (!TIFFGetField(tif_ctx, TIFFTAG_PHOTOMETRIC, &photometric)) { + return FALSE; + } + switch (pDIBitmap->GetBPP()) { + case 1: + case 8: + if (photometric != PHOTOMETRIC_PALETTE) { + return FALSE; + } + break; + case 24: + if (photometric != PHOTOMETRIC_RGB) { + return FALSE; + } + break; + default: + return FALSE; + } + uint16_t planarconfig; + if (!TIFFGetFieldDefaulted(tif_ctx, TIFFTAG_PLANARCONFIG, &planarconfig)) { + return FALSE; + } + if (planarconfig == PLANARCONFIG_SEPARATE) { + return FALSE; + } + return TRUE; +} +void CCodec_TiffContext::SetPalette(CFX_DIBitmap* pDIBitmap, uint16_t bps) { + uint16_t *red_orig, *green_orig, *blue_orig; + TIFFGetField(tif_ctx, TIFFTAG_COLORMAP, &red_orig, &green_orig, &blue_orig); + for (int32_t i = (1L << bps) - 1; i >= 0; i--) { +#define CVT(x) ((uint16_t)((x) >> 8)) + red_orig[i] = CVT(red_orig[i]); + green_orig[i] = CVT(green_orig[i]); + blue_orig[i] = CVT(blue_orig[i]); +#undef CVT + } + int32_t len = 1 << bps; + for (int32_t index = 0; index < len; index++) { + FX_DWORD r = red_orig[index] & 0xFF; + FX_DWORD g = green_orig[index] & 0xFF; + FX_DWORD b = blue_orig[index] & 0xFF; + FX_DWORD color = (uint32_t)b | ((uint32_t)g << 8) | ((uint32_t)r << 16) | + (((uint32)0xffL) << 24); + pDIBitmap->SetPaletteEntry(index, color); + } +} +FX_BOOL CCodec_TiffContext::Decode1bppRGB(CFX_DIBitmap* pDIBitmap, + int32_t height, + int32_t width, + uint16_t bps, + uint16_t spp) { + if (pDIBitmap->GetBPP() != 1 || spp != 1 || bps != 1 || + !isSupport(pDIBitmap)) { + return FALSE; + } + SetPalette(pDIBitmap, bps); + int32_t size = (int32_t)TIFFScanlineSize(tif_ctx); + uint8_t* buf = (uint8_t*)_TIFFmalloc(size); + if (buf == NULL) { + TIFFError(TIFFFileName(tif_ctx), "No space for scanline buffer"); + return FALSE; + } + uint8_t* bitMapbuffer = (uint8_t*)pDIBitmap->GetBuffer(); + FX_DWORD pitch = pDIBitmap->GetPitch(); + for (int32_t row = 0; row < height; row++) { + TIFFReadScanline(tif_ctx, buf, row, 0); + for (int32_t j = 0; j < size; j++) { + bitMapbuffer[row * pitch + j] = buf[j]; + } + } + _TIFFfree(buf); + return TRUE; +} +FX_BOOL CCodec_TiffContext::Decode8bppRGB(CFX_DIBitmap* pDIBitmap, + int32_t height, + int32_t width, + uint16_t bps, + uint16_t spp) { + if (pDIBitmap->GetBPP() != 8 || spp != 1 || (bps != 4 && bps != 8) || + !isSupport(pDIBitmap)) { + return FALSE; + } + SetPalette(pDIBitmap, bps); + int32_t size = (int32_t)TIFFScanlineSize(tif_ctx); + uint8_t* buf = (uint8_t*)_TIFFmalloc(size); + if (buf == NULL) { + TIFFError(TIFFFileName(tif_ctx), "No space for scanline buffer"); + return FALSE; + } + uint8_t* bitMapbuffer = (uint8_t*)pDIBitmap->GetBuffer(); + FX_DWORD pitch = pDIBitmap->GetPitch(); + for (int32_t row = 0; row < height; row++) { + TIFFReadScanline(tif_ctx, buf, row, 0); + for (int32_t j = 0; j < size; j++) { + switch (bps) { + case 4: + bitMapbuffer[row * pitch + 2 * j + 0] = (buf[j] & 0xF0) >> 4; + bitMapbuffer[row * pitch + 2 * j + 1] = (buf[j] & 0x0F) >> 0; + break; + case 8: + bitMapbuffer[row * pitch + j] = buf[j]; + break; + } + } + } + _TIFFfree(buf); + return TRUE; +} +FX_BOOL CCodec_TiffContext::Decode24bppRGB(CFX_DIBitmap* pDIBitmap, + int32_t height, + int32_t width, + uint16_t bps, + uint16_t spp) { + if (pDIBitmap->GetBPP() != 24 || !isSupport(pDIBitmap)) { + return FALSE; + } + int32_t size = (int32_t)TIFFScanlineSize(tif_ctx); + uint8_t* buf = (uint8_t*)_TIFFmalloc(size); + if (buf == NULL) { + TIFFError(TIFFFileName(tif_ctx), "No space for scanline buffer"); + return FALSE; + } + uint8_t* bitMapbuffer = (uint8_t*)pDIBitmap->GetBuffer(); + FX_DWORD pitch = pDIBitmap->GetPitch(); + for (int32_t row = 0; row < height; row++) { + TIFFReadScanline(tif_ctx, buf, row, 0); + for (int32_t j = 0; j < size - 2; j += 3) { + bitMapbuffer[row * pitch + j + 0] = buf[j + 2]; + bitMapbuffer[row * pitch + j + 1] = buf[j + 1]; + bitMapbuffer[row * pitch + j + 2] = buf[j + 0]; + } + } + _TIFFfree(buf); + return TRUE; +} +FX_BOOL CCodec_TiffContext::Decode(CFX_DIBitmap* pDIBitmap) { + FX_DWORD img_wid = pDIBitmap->GetWidth(); + FX_DWORD img_hei = pDIBitmap->GetHeight(); + FX_DWORD width = 0; + FX_DWORD height = 0; + TIFFGetField(tif_ctx, TIFFTAG_IMAGEWIDTH, &width); + TIFFGetField(tif_ctx, TIFFTAG_IMAGELENGTH, &height); + if (img_wid != width || img_hei != height) { + return FALSE; + } + if (pDIBitmap->GetBPP() == 32) { + FX_WORD rotation = ORIENTATION_TOPLEFT; + TIFFGetField(tif_ctx, TIFFTAG_ORIENTATION, &rotation); + if (TIFFReadRGBAImageOriented(tif_ctx, img_wid, img_hei, + (uint32*)pDIBitmap->GetBuffer(), rotation, + 1)) { + for (FX_DWORD row = 0; row < img_hei; row++) { + uint8_t* row_buf = (uint8_t*)pDIBitmap->GetScanline(row); + _TiffBGRA2RGBA(row_buf, img_wid, 4); + } + return TRUE; + } + } + uint16_t spp, bps; + TIFFGetField(tif_ctx, TIFFTAG_SAMPLESPERPIXEL, &spp); + TIFFGetField(tif_ctx, TIFFTAG_BITSPERSAMPLE, &bps); + FX_DWORD bpp = bps * spp; + if (bpp == 1) { + return Decode1bppRGB(pDIBitmap, height, width, bps, spp); + } else if (bpp <= 8) { + return Decode8bppRGB(pDIBitmap, height, width, bps, spp); + } else if (bpp <= 24) { + return Decode24bppRGB(pDIBitmap, height, width, bps, spp); + } + return FALSE; +} +void* CCodec_TiffModule::CreateDecoder(IFX_FileRead* file_ptr) { + CCodec_TiffContext* pDecoder = new CCodec_TiffContext; + if (!pDecoder->InitDecoder(file_ptr)) { + delete pDecoder; + return NULL; + } + return pDecoder; +} +void CCodec_TiffModule::GetFrames(void* ctx, int32_t& frames) { + CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; + pDecoder->GetFrames(frames); +} +FX_BOOL CCodec_TiffModule::LoadFrameInfo(void* ctx, + int32_t frame, + FX_DWORD& width, + FX_DWORD& height, + FX_DWORD& comps, + FX_DWORD& bpc, + CFX_DIBAttribute* pAttribute) { + CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; + return pDecoder->LoadFrameInfo(frame, width, height, comps, bpc, pAttribute); +} +FX_BOOL CCodec_TiffModule::Decode(void* ctx, class CFX_DIBitmap* pDIBitmap) { + CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; + return pDecoder->Decode(pDIBitmap); +} +void CCodec_TiffModule::DestroyDecoder(void* ctx) { + CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; + delete pDecoder; +} diff --git a/core/fxcodec/jbig2/JBig2_ArithDecoder.cpp b/core/fxcodec/jbig2/JBig2_ArithDecoder.cpp new file mode 100644 index 0000000000..1673110c7e --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_ArithDecoder.cpp @@ -0,0 +1,120 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" + +#include "core/fxcodec/jbig2/JBig2_BitStream.h" +#include "core/include/fxcrt/fx_basic.h" + +namespace { + +struct JBig2ArithQe { + unsigned int Qe; + unsigned int NMPS; + unsigned int NLPS; + unsigned int nSwitch; +}; + +const JBig2ArithQe kQeTable[] = { + // Stupid hack to keep clang-format from reformatting this badly. + {0x5601, 1, 1, 1}, {0x3401, 2, 6, 0}, {0x1801, 3, 9, 0}, + {0x0AC1, 4, 12, 0}, {0x0521, 5, 29, 0}, {0x0221, 38, 33, 0}, + {0x5601, 7, 6, 1}, {0x5401, 8, 14, 0}, {0x4801, 9, 14, 0}, + {0x3801, 10, 14, 0}, {0x3001, 11, 17, 0}, {0x2401, 12, 18, 0}, + {0x1C01, 13, 20, 0}, {0x1601, 29, 21, 0}, {0x5601, 15, 14, 1}, + {0x5401, 16, 14, 0}, {0x5101, 17, 15, 0}, {0x4801, 18, 16, 0}, + {0x3801, 19, 17, 0}, {0x3401, 20, 18, 0}, {0x3001, 21, 19, 0}, + {0x2801, 22, 19, 0}, {0x2401, 23, 20, 0}, {0x2201, 24, 21, 0}, + {0x1C01, 25, 22, 0}, {0x1801, 26, 23, 0}, {0x1601, 27, 24, 0}, + {0x1401, 28, 25, 0}, {0x1201, 29, 26, 0}, {0x1101, 30, 27, 0}, + {0x0AC1, 31, 28, 0}, {0x09C1, 32, 29, 0}, {0x08A1, 33, 30, 0}, + {0x0521, 34, 31, 0}, {0x0441, 35, 32, 0}, {0x02A1, 36, 33, 0}, + {0x0221, 37, 34, 0}, {0x0141, 38, 35, 0}, {0x0111, 39, 36, 0}, + {0x0085, 40, 37, 0}, {0x0049, 41, 38, 0}, {0x0025, 42, 39, 0}, + {0x0015, 43, 40, 0}, {0x0009, 44, 41, 0}, {0x0005, 45, 42, 0}, + {0x0001, 45, 43, 0}, {0x5601, 46, 46, 0}}; + +const unsigned int kDefaultAValue = 0x8000; + +int DecodeNMPS(JBig2ArithCtx* pCX, const JBig2ArithQe& qe) { + pCX->I = qe.NMPS; + return pCX->MPS; +} + +int DecodeNLPS(JBig2ArithCtx* pCX, const JBig2ArithQe& qe) { + // TODO(thestig): |D|, |MPS| and friends probably should be booleans. + int D = 1 - pCX->MPS; + if (qe.nSwitch == 1) + pCX->MPS = 1 - pCX->MPS; + pCX->I = qe.NLPS; + return D; +} + +} // namespace + +CJBig2_ArithDecoder::CJBig2_ArithDecoder(CJBig2_BitStream* pStream) + : m_pStream(pStream) { + m_B = m_pStream->getCurByte_arith(); + m_C = (m_B ^ 0xff) << 16; + BYTEIN(); + m_C = m_C << 7; + m_CT = m_CT - 7; + m_A = kDefaultAValue; +} + +CJBig2_ArithDecoder::~CJBig2_ArithDecoder() {} + +int CJBig2_ArithDecoder::DECODE(JBig2ArithCtx* pCX) { + if (!pCX || pCX->I >= FX_ArraySize(kQeTable)) + return 0; + + const JBig2ArithQe& qe = kQeTable[pCX->I]; + m_A -= qe.Qe; + if ((m_C >> 16) < m_A) { + if (m_A & kDefaultAValue) + return pCX->MPS; + + const int D = m_A < qe.Qe ? DecodeNLPS(pCX, qe) : DecodeNMPS(pCX, qe); + ReadValueA(); + return D; + } + + m_C -= m_A << 16; + const int D = m_A < qe.Qe ? DecodeNMPS(pCX, qe) : DecodeNLPS(pCX, qe); + m_A = qe.Qe; + ReadValueA(); + return D; +} + +void CJBig2_ArithDecoder::BYTEIN() { + unsigned char B1; + if (m_B == 0xff) { + B1 = m_pStream->getNextByte_arith(); + if (B1 > 0x8f) { + m_CT = 8; + } else { + m_pStream->incByteIdx(); + m_B = B1; + m_C = m_C + 0xfe00 - (m_B << 9); + m_CT = 7; + } + } else { + m_pStream->incByteIdx(); + m_B = m_pStream->getCurByte_arith(); + m_C = m_C + 0xff00 - (m_B << 8); + m_CT = 8; + } +} + +void CJBig2_ArithDecoder::ReadValueA() { + do { + if (m_CT == 0) + BYTEIN(); + m_A <<= 1; + m_C <<= 1; + --m_CT; + } while ((m_A & kDefaultAValue) == 0); +} diff --git a/core/fxcodec/jbig2/JBig2_ArithDecoder.h b/core/fxcodec/jbig2/JBig2_ArithDecoder.h new file mode 100644 index 0000000000..a8ab5dd730 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_ArithDecoder.h @@ -0,0 +1,38 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_ + +class CJBig2_BitStream; + +struct JBig2ArithCtx { + JBig2ArithCtx() : MPS(0), I(0) {} + + unsigned int MPS; + unsigned int I; +}; + +class CJBig2_ArithDecoder { + public: + explicit CJBig2_ArithDecoder(CJBig2_BitStream* pStream); + + ~CJBig2_ArithDecoder(); + + int DECODE(JBig2ArithCtx* pCX); + + private: + void BYTEIN(); + void ReadValueA(); + + unsigned char m_B; + unsigned int m_C; + unsigned int m_A; + unsigned int m_CT; + CJBig2_BitStream* const m_pStream; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_ diff --git a/core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp b/core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp new file mode 100644 index 0000000000..63594672c7 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp @@ -0,0 +1,92 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_ArithIntDecoder.h" + +#include + +#include "core/include/fxcrt/fx_basic.h" + +namespace { + +int ShiftOr(int val, int bitwise_or_val) { + return (val << 1) | bitwise_or_val; +} + +const struct ArithIntDecodeData { + int nNeedBits; + int nValue; +} g_ArithIntDecodeData[] = { + {2, 0}, {4, 4}, {6, 20}, {8, 84}, {12, 340}, {32, 4436}, +}; + +size_t RecursiveDecode(CJBig2_ArithDecoder* decoder, + std::vector* context, + int* prev, + size_t depth) { + static const size_t kDepthEnd = FX_ArraySize(g_ArithIntDecodeData) - 1; + if (depth == kDepthEnd) + return kDepthEnd; + + JBig2ArithCtx* pCX = &(*context)[*prev]; + int D = decoder->DECODE(pCX); + *prev = ShiftOr(*prev, D); + if (!D) + return depth; + return RecursiveDecode(decoder, context, prev, depth + 1); +} + +} // namespace + +CJBig2_ArithIntDecoder::CJBig2_ArithIntDecoder() { + m_IAx.resize(512); +} + +CJBig2_ArithIntDecoder::~CJBig2_ArithIntDecoder() {} + +bool CJBig2_ArithIntDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, + int* nResult) { + int PREV = 1; + const int S = pArithDecoder->DECODE(&m_IAx[PREV]); + PREV = ShiftOr(PREV, S); + + const size_t nDecodeDataIndex = + RecursiveDecode(pArithDecoder, &m_IAx, &PREV, 0); + + int nTemp = 0; + for (int i = 0; i < g_ArithIntDecodeData[nDecodeDataIndex].nNeedBits; ++i) { + int D = pArithDecoder->DECODE(&m_IAx[PREV]); + PREV = ShiftOr(PREV, D); + if (PREV >= 256) + PREV = (PREV & 511) | 256; + nTemp = ShiftOr(nTemp, D); + } + int nValue = g_ArithIntDecodeData[nDecodeDataIndex].nValue; + nValue += nTemp; + if (S == 1 && nValue > 0) + nValue = -nValue; + + *nResult = nValue; + return S != 1 || nValue != 0; +} + +CJBig2_ArithIaidDecoder::CJBig2_ArithIaidDecoder(unsigned char SBSYMCODELENA) + : SBSYMCODELEN(SBSYMCODELENA) { + m_IAID.resize(1 << SBSYMCODELEN); +} + +CJBig2_ArithIaidDecoder::~CJBig2_ArithIaidDecoder() {} + +void CJBig2_ArithIaidDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, + FX_DWORD* nResult) { + int PREV = 1; + for (unsigned char i = 0; i < SBSYMCODELEN; ++i) { + JBig2ArithCtx* pCX = &m_IAID[PREV]; + int D = pArithDecoder->DECODE(pCX); + PREV = ShiftOr(PREV, D); + } + *nResult = PREV - (1 << SBSYMCODELEN); +} diff --git a/core/fxcodec/jbig2/JBig2_ArithIntDecoder.h b/core/fxcodec/jbig2/JBig2_ArithIntDecoder.h new file mode 100644 index 0000000000..9a04504ca7 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_ArithIntDecoder.h @@ -0,0 +1,41 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_ARITHINTDECODER_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_ARITHINTDECODER_H_ + +#include + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_ArithIntDecoder { + public: + CJBig2_ArithIntDecoder(); + ~CJBig2_ArithIntDecoder(); + + // Returns true on success, and false when an OOB condition occurs. Many + // callers can tolerate OOB and do not check the return value. + bool decode(CJBig2_ArithDecoder* pArithDecoder, int* nResult); + + private: + std::vector m_IAx; +}; + +class CJBig2_ArithIaidDecoder { + public: + explicit CJBig2_ArithIaidDecoder(unsigned char SBSYMCODELENA); + ~CJBig2_ArithIaidDecoder(); + + void decode(CJBig2_ArithDecoder* pArithDecoder, FX_DWORD* nResult); + + private: + std::vector m_IAID; + + const unsigned char SBSYMCODELEN; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_ARITHINTDECODER_H_ diff --git a/core/fxcodec/jbig2/JBig2_BitStream.cpp b/core/fxcodec/jbig2/JBig2_BitStream.cpp new file mode 100644 index 0000000000..87451c2d72 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_BitStream.cpp @@ -0,0 +1,188 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_BitStream.h" + +#include + +#include "core/include/fpdfapi/cpdf_stream.h" + +CJBig2_BitStream::CJBig2_BitStream(CPDF_StreamAcc* pSrcStream) + : m_pBuf(pSrcStream->GetData()), + m_dwLength(pSrcStream->GetSize()), + m_dwByteIdx(0), + m_dwBitIdx(0), + m_dwObjNum(pSrcStream->GetStream() ? pSrcStream->GetStream()->GetObjNum() + : 0) { + if (m_dwLength > 256 * 1024 * 1024) { + m_dwLength = 0; + m_pBuf = nullptr; + } +} + +CJBig2_BitStream::~CJBig2_BitStream() {} + +int32_t CJBig2_BitStream::readNBits(FX_DWORD dwBits, FX_DWORD* dwResult) { + FX_DWORD dwBitPos = getBitPos(); + if (dwBitPos > LengthInBits()) + return -1; + + *dwResult = 0; + if (dwBitPos + dwBits <= LengthInBits()) + dwBitPos = dwBits; + else + dwBitPos = LengthInBits() - dwBitPos; + + for (; dwBitPos > 0; --dwBitPos) { + *dwResult = + (*dwResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01); + AdvanceBit(); + } + return 0; +} + +int32_t CJBig2_BitStream::readNBits(FX_DWORD dwBits, int32_t* nResult) { + FX_DWORD dwBitPos = getBitPos(); + if (dwBitPos > LengthInBits()) + return -1; + + *nResult = 0; + if (dwBitPos + dwBits <= LengthInBits()) + dwBitPos = dwBits; + else + dwBitPos = LengthInBits() - dwBitPos; + + for (; dwBitPos > 0; --dwBitPos) { + *nResult = + (*nResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01); + AdvanceBit(); + } + return 0; +} + +int32_t CJBig2_BitStream::read1Bit(FX_DWORD* dwResult) { + if (!IsInBound()) + return -1; + + *dwResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01; + AdvanceBit(); + return 0; +} + +int32_t CJBig2_BitStream::read1Bit(FX_BOOL* bResult) { + if (!IsInBound()) + return -1; + + *bResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01; + AdvanceBit(); + return 0; +} + +int32_t CJBig2_BitStream::read1Byte(uint8_t* cResult) { + if (!IsInBound()) + return -1; + + *cResult = m_pBuf[m_dwByteIdx]; + ++m_dwByteIdx; + return 0; +} + +int32_t CJBig2_BitStream::readInteger(FX_DWORD* dwResult) { + if (m_dwByteIdx + 3 >= m_dwLength) + return -1; + + *dwResult = (m_pBuf[m_dwByteIdx] << 24) | (m_pBuf[m_dwByteIdx + 1] << 16) | + (m_pBuf[m_dwByteIdx + 2] << 8) | m_pBuf[m_dwByteIdx + 3]; + m_dwByteIdx += 4; + return 0; +} + +int32_t CJBig2_BitStream::readShortInteger(FX_WORD* dwResult) { + if (m_dwByteIdx + 1 >= m_dwLength) + return -1; + + *dwResult = (m_pBuf[m_dwByteIdx] << 8) | m_pBuf[m_dwByteIdx + 1]; + m_dwByteIdx += 2; + return 0; +} + +void CJBig2_BitStream::alignByte() { + if (m_dwBitIdx != 0) { + ++m_dwByteIdx; + m_dwBitIdx = 0; + } +} + +uint8_t CJBig2_BitStream::getCurByte() const { + return IsInBound() ? m_pBuf[m_dwByteIdx] : 0; +} + +void CJBig2_BitStream::incByteIdx() { + if (IsInBound()) + ++m_dwByteIdx; +} + +uint8_t CJBig2_BitStream::getCurByte_arith() const { + return IsInBound() ? m_pBuf[m_dwByteIdx] : 0xFF; +} + +uint8_t CJBig2_BitStream::getNextByte_arith() const { + return m_dwByteIdx + 1 < m_dwLength ? m_pBuf[m_dwByteIdx + 1] : 0xFF; +} + +FX_DWORD CJBig2_BitStream::getOffset() const { + return m_dwByteIdx; +} + +void CJBig2_BitStream::setOffset(FX_DWORD dwOffset) { + m_dwByteIdx = std::min(dwOffset, m_dwLength); +} + +FX_DWORD CJBig2_BitStream::getBitPos() const { + return (m_dwByteIdx << 3) + m_dwBitIdx; +} + +void CJBig2_BitStream::setBitPos(FX_DWORD dwBitPos) { + m_dwByteIdx = dwBitPos >> 3; + m_dwBitIdx = dwBitPos & 7; +} + +const uint8_t* CJBig2_BitStream::getBuf() const { + return m_pBuf; +} + +const uint8_t* CJBig2_BitStream::getPointer() const { + return m_pBuf + m_dwByteIdx; +} + +void CJBig2_BitStream::offset(FX_DWORD dwOffset) { + m_dwByteIdx += dwOffset; +} + +FX_DWORD CJBig2_BitStream::getByteLeft() const { + return m_dwLength - m_dwByteIdx; +} + +void CJBig2_BitStream::AdvanceBit() { + if (m_dwBitIdx == 7) { + ++m_dwByteIdx; + m_dwBitIdx = 0; + } else { + ++m_dwBitIdx; + } +} + +bool CJBig2_BitStream::IsInBound() const { + return m_dwByteIdx < m_dwLength; +} + +FX_DWORD CJBig2_BitStream::LengthInBits() const { + return m_dwLength << 3; +} + +FX_DWORD CJBig2_BitStream::getObjNum() const { + return m_dwObjNum; +} diff --git a/core/fxcodec/jbig2/JBig2_BitStream.h b/core/fxcodec/jbig2/JBig2_BitStream.h new file mode 100644 index 0000000000..c24fedfba1 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_BitStream.h @@ -0,0 +1,58 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_ + +#include "core/include/fxcrt/fx_basic.h" + +class CPDF_StreamAcc; + +class CJBig2_BitStream { + public: + explicit CJBig2_BitStream(CPDF_StreamAcc* pSrcStream); + ~CJBig2_BitStream(); + + // TODO(thestig): readFoo() should return bool. + int32_t readNBits(FX_DWORD nBits, FX_DWORD* dwResult); + int32_t readNBits(FX_DWORD nBits, int32_t* nResult); + int32_t read1Bit(FX_DWORD* dwResult); + int32_t read1Bit(FX_BOOL* bResult); + int32_t read1Byte(uint8_t* cResult); + int32_t readInteger(FX_DWORD* dwResult); + int32_t readShortInteger(FX_WORD* wResult); + void alignByte(); + uint8_t getCurByte() const; + void incByteIdx(); + uint8_t getCurByte_arith() const; + uint8_t getNextByte_arith() const; + FX_DWORD getOffset() const; + void setOffset(FX_DWORD dwOffset); + FX_DWORD getBitPos() const; + void setBitPos(FX_DWORD dwBitPos); + const uint8_t* getBuf() const; + FX_DWORD getLength() const { return m_dwLength; } + const uint8_t* getPointer() const; + void offset(FX_DWORD dwOffset); + FX_DWORD getByteLeft() const; + FX_DWORD getObjNum() const; + + private: + void AdvanceBit(); + bool IsInBound() const; + FX_DWORD LengthInBits() const; + + const uint8_t* m_pBuf; + FX_DWORD m_dwLength; + FX_DWORD m_dwByteIdx; + FX_DWORD m_dwBitIdx; + const FX_DWORD m_dwObjNum; + + CJBig2_BitStream(const CJBig2_BitStream&) = delete; + void operator=(const CJBig2_BitStream&) = delete; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_ diff --git a/core/fxcodec/jbig2/JBig2_Context.cpp b/core/fxcodec/jbig2/JBig2_Context.cpp new file mode 100644 index 0000000000..0a17fff328 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Context.cpp @@ -0,0 +1,1439 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_Context.h" + +#include +#include +#include +#include + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" +#include "core/fxcodec/jbig2/JBig2_BitStream.h" +#include "core/fxcodec/jbig2/JBig2_GrdProc.h" +#include "core/fxcodec/jbig2/JBig2_GrrdProc.h" +#include "core/fxcodec/jbig2/JBig2_HtrdProc.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h" +#include "core/fxcodec/jbig2/JBig2_PddProc.h" +#include "core/fxcodec/jbig2/JBig2_SddProc.h" +#include "core/fxcodec/jbig2/JBig2_TrdProc.h" +#include "core/include/fpdfapi/cpdf_stream.h" +#include "third_party/base/stl_util.h" + +namespace { + +size_t GetHuffContextSize(uint8_t val) { + return val == 0 ? 65536 : val == 1 ? 8192 : 1024; +} + +size_t GetRefAggContextSize(FX_BOOL val) { + return val ? 1024 : 8192; +} + +} // namespace + +// Implement a very small least recently used (LRU) cache. It is very +// common for a JBIG2 dictionary to span multiple pages in a PDF file, +// and we do not want to decode the same dictionary over and over +// again. We key off of the memory location of the dictionary. The +// list keeps track of the freshness of entries, with freshest ones +// at the front. Even a tiny cache size like 2 makes a dramatic +// difference for typical JBIG2 documents. +static const int kSymbolDictCacheMaxSize = 2; + +CJBig2_Context* CJBig2_Context::CreateContext( + CPDF_StreamAcc* pGlobalStream, + CPDF_StreamAcc* pSrcStream, + std::list* pSymbolDictCache, + IFX_Pause* pPause) { + return new CJBig2_Context(pGlobalStream, pSrcStream, pSymbolDictCache, pPause, + false); +} + +void CJBig2_Context::DestroyContext(CJBig2_Context* pContext) { + delete pContext; +} + +CJBig2_Context::CJBig2_Context(CPDF_StreamAcc* pGlobalStream, + CPDF_StreamAcc* pSrcStream, + std::list* pSymbolDictCache, + IFX_Pause* pPause, + bool bIsGlobal) + : m_nSegmentDecoded(0), + m_bInPage(false), + m_bBufSpecified(false), + m_PauseStep(10), + m_pPause(pPause), + m_ProcessingStatus(FXCODEC_STATUS_FRAME_READY), + m_gbContext(NULL), + m_dwOffset(0), + m_pSymbolDictCache(pSymbolDictCache), + m_bIsGlobal(bIsGlobal) { + if (pGlobalStream && (pGlobalStream->GetSize() > 0)) { + m_pGlobalContext = new CJBig2_Context(nullptr, pGlobalStream, + pSymbolDictCache, pPause, true); + } else { + m_pGlobalContext = nullptr; + } + + m_pStream.reset(new CJBig2_BitStream(pSrcStream)); +} + +CJBig2_Context::~CJBig2_Context() { + FX_Free(m_gbContext); + m_gbContext = NULL; + delete m_pGlobalContext; + m_pGlobalContext = NULL; +} + +int32_t CJBig2_Context::decode_SquentialOrgnazation(IFX_Pause* pPause) { + int32_t nRet; + if (m_pStream->getByteLeft() <= 0) + return JBIG2_END_OF_FILE; + + while (m_pStream->getByteLeft() >= JBIG2_MIN_SEGMENT_SIZE) { + if (!m_pSegment) { + m_pSegment.reset(new CJBig2_Segment); + nRet = parseSegmentHeader(m_pSegment.get()); + if (nRet != JBIG2_SUCCESS) { + m_pSegment.reset(); + return nRet; + } + m_dwOffset = m_pStream->getOffset(); + } + nRet = parseSegmentData(m_pSegment.get(), pPause); + if (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + m_PauseStep = 2; + return JBIG2_SUCCESS; + } + if (nRet == JBIG2_END_OF_PAGE || nRet == JBIG2_END_OF_FILE) { + m_pSegment.reset(); + return JBIG2_SUCCESS; + } + if (nRet != JBIG2_SUCCESS) { + m_pSegment.reset(); + return nRet; + } + if (m_pSegment->m_dwData_length != 0xffffffff) { + m_dwOffset += m_pSegment->m_dwData_length; + m_pStream->setOffset(m_dwOffset); + } else { + m_pStream->offset(4); + } + m_SegmentList.push_back(m_pSegment.release()); + if (m_pStream->getByteLeft() > 0 && m_pPage && pPause && + pPause->NeedToPauseNow()) { + m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + m_PauseStep = 2; + return JBIG2_SUCCESS; + } + } + return JBIG2_SUCCESS; +} +int32_t CJBig2_Context::decode_EmbedOrgnazation(IFX_Pause* pPause) { + return decode_SquentialOrgnazation(pPause); +} +int32_t CJBig2_Context::decode_RandomOrgnazation_FirstPage(IFX_Pause* pPause) { + int32_t nRet; + while (m_pStream->getByteLeft() > JBIG2_MIN_SEGMENT_SIZE) { + std::unique_ptr pSegment(new CJBig2_Segment); + nRet = parseSegmentHeader(pSegment.get()); + if (nRet != JBIG2_SUCCESS) { + return nRet; + } else if (pSegment->m_cFlags.s.type == 51) { + break; + } + m_SegmentList.push_back(pSegment.release()); + if (pPause && m_pPause && pPause->NeedToPauseNow()) { + m_PauseStep = 3; + m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return JBIG2_SUCCESS; + } + } + m_nSegmentDecoded = 0; + return decode_RandomOrgnazation(pPause); +} +int32_t CJBig2_Context::decode_RandomOrgnazation(IFX_Pause* pPause) { + for (; m_nSegmentDecoded < m_SegmentList.size(); ++m_nSegmentDecoded) { + int32_t nRet = + parseSegmentData(m_SegmentList.get(m_nSegmentDecoded), pPause); + if (nRet == JBIG2_END_OF_PAGE || nRet == JBIG2_END_OF_FILE) + return JBIG2_SUCCESS; + + if (nRet != JBIG2_SUCCESS) + return nRet; + + if (m_pPage && pPause && pPause->NeedToPauseNow()) { + m_PauseStep = 4; + m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return JBIG2_SUCCESS; + } + } + return JBIG2_SUCCESS; +} +int32_t CJBig2_Context::getFirstPage(uint8_t* pBuf, + int32_t width, + int32_t height, + int32_t stride, + IFX_Pause* pPause) { + int32_t nRet = 0; + if (m_pGlobalContext) { + nRet = m_pGlobalContext->decode_EmbedOrgnazation(pPause); + if (nRet != JBIG2_SUCCESS) { + m_ProcessingStatus = FXCODEC_STATUS_ERROR; + return nRet; + } + } + m_PauseStep = 0; + m_pPage.reset(new CJBig2_Image(width, height, stride, pBuf)); + m_bBufSpecified = true; + if (pPause && pPause->NeedToPauseNow()) { + m_PauseStep = 1; + m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return nRet; + } + return Continue(pPause); +} +int32_t CJBig2_Context::Continue(IFX_Pause* pPause) { + m_ProcessingStatus = FXCODEC_STATUS_DECODE_READY; + int32_t nRet; + if (m_PauseStep <= 1) { + nRet = decode_EmbedOrgnazation(pPause); + } else if (m_PauseStep == 2) { + nRet = decode_SquentialOrgnazation(pPause); + } else if (m_PauseStep == 3) { + nRet = decode_RandomOrgnazation_FirstPage(pPause); + } else if (m_PauseStep == 4) { + nRet = decode_RandomOrgnazation(pPause); + } else if (m_PauseStep == 5) { + m_ProcessingStatus = FXCODEC_STATUS_DECODE_FINISH; + return JBIG2_SUCCESS; + } + if (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + return nRet; + } + m_PauseStep = 5; + if (!m_bBufSpecified && nRet == JBIG2_SUCCESS) { + m_ProcessingStatus = FXCODEC_STATUS_DECODE_FINISH; + return JBIG2_SUCCESS; + } + if (nRet == JBIG2_SUCCESS) { + m_ProcessingStatus = FXCODEC_STATUS_DECODE_FINISH; + } else { + m_ProcessingStatus = FXCODEC_STATUS_ERROR; + } + return nRet; +} + +CJBig2_Segment* CJBig2_Context::findSegmentByNumber(FX_DWORD dwNumber) { + if (m_pGlobalContext) { + CJBig2_Segment* pSeg = m_pGlobalContext->findSegmentByNumber(dwNumber); + if (pSeg) { + return pSeg; + } + } + for (size_t i = 0; i < m_SegmentList.size(); ++i) { + CJBig2_Segment* pSeg = m_SegmentList.get(i); + if (pSeg->m_dwNumber == dwNumber) { + return pSeg; + } + } + return nullptr; +} +CJBig2_Segment* CJBig2_Context::findReferredSegmentByTypeAndIndex( + CJBig2_Segment* pSegment, + uint8_t cType, + int32_t nIndex) { + int32_t count = 0; + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + CJBig2_Segment* pSeg = + findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); + if (pSeg && pSeg->m_cFlags.s.type == cType) { + if (count == nIndex) + return pSeg; + ++count; + } + } + return NULL; +} +int32_t CJBig2_Context::parseSegmentHeader(CJBig2_Segment* pSegment) { + if (m_pStream->readInteger(&pSegment->m_dwNumber) != 0 || + m_pStream->read1Byte(&pSegment->m_cFlags.c) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + + FX_DWORD dwTemp; + uint8_t cTemp = m_pStream->getCurByte(); + if ((cTemp >> 5) == 7) { + if (m_pStream->readInteger( + (FX_DWORD*)&pSegment->m_nReferred_to_segment_count) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + pSegment->m_nReferred_to_segment_count &= 0x1fffffff; + if (pSegment->m_nReferred_to_segment_count > + JBIG2_MAX_REFERRED_SEGMENT_COUNT) { + return JBIG2_ERROR_LIMIT; + } + dwTemp = 5 + 4 + (pSegment->m_nReferred_to_segment_count + 1) / 8; + } else { + if (m_pStream->read1Byte(&cTemp) != 0) + return JBIG2_ERROR_TOO_SHORT; + + pSegment->m_nReferred_to_segment_count = cTemp >> 5; + dwTemp = 5 + 1; + } + uint8_t cSSize = + pSegment->m_dwNumber > 65536 ? 4 : pSegment->m_dwNumber > 256 ? 2 : 1; + uint8_t cPSize = pSegment->m_cFlags.s.page_association_size ? 4 : 1; + if (pSegment->m_nReferred_to_segment_count) { + pSegment->m_pReferred_to_segment_numbers = + FX_Alloc(FX_DWORD, pSegment->m_nReferred_to_segment_count); + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + switch (cSSize) { + case 1: + if (m_pStream->read1Byte(&cTemp) != 0) + return JBIG2_ERROR_TOO_SHORT; + + pSegment->m_pReferred_to_segment_numbers[i] = cTemp; + break; + case 2: + FX_WORD wTemp; + if (m_pStream->readShortInteger(&wTemp) != 0) + return JBIG2_ERROR_TOO_SHORT; + + pSegment->m_pReferred_to_segment_numbers[i] = wTemp; + break; + case 4: + if (m_pStream->readInteger(&dwTemp) != 0) + return JBIG2_ERROR_TOO_SHORT; + + pSegment->m_pReferred_to_segment_numbers[i] = dwTemp; + break; + } + if (pSegment->m_pReferred_to_segment_numbers[i] >= pSegment->m_dwNumber) + return JBIG2_ERROR_TOO_SHORT; + } + } + if (cPSize == 1) { + if (m_pStream->read1Byte(&cTemp) != 0) + return JBIG2_ERROR_TOO_SHORT; + pSegment->m_dwPage_association = cTemp; + } else { + if (m_pStream->readInteger(&pSegment->m_dwPage_association) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + } + if (m_pStream->readInteger(&pSegment->m_dwData_length) != 0) + return JBIG2_ERROR_TOO_SHORT; + + pSegment->m_dwObjNum = m_pStream->getObjNum(); + pSegment->m_dwDataOffset = m_pStream->getOffset(); + pSegment->m_State = JBIG2_SEGMENT_DATA_UNPARSED; + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseSegmentData(CJBig2_Segment* pSegment, + IFX_Pause* pPause) { + int32_t ret = ProcessingParseSegmentData(pSegment, pPause); + while (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE && + m_pStream->getByteLeft() > 0) { + ret = ProcessingParseSegmentData(pSegment, pPause); + } + return ret; +} + +int32_t CJBig2_Context::ProcessingParseSegmentData(CJBig2_Segment* pSegment, + IFX_Pause* pPause) { + switch (pSegment->m_cFlags.s.type) { + case 0: + return parseSymbolDict(pSegment, pPause); + case 4: + case 6: + case 7: + if (!m_bInPage) + return JBIG2_ERROR_FATAL; + return parseTextRegion(pSegment); + case 16: + return parsePatternDict(pSegment, pPause); + case 20: + case 22: + case 23: + if (!m_bInPage) + return JBIG2_ERROR_FATAL; + return parseHalftoneRegion(pSegment, pPause); + case 36: + case 38: + case 39: + if (!m_bInPage) + return JBIG2_ERROR_FATAL; + return parseGenericRegion(pSegment, pPause); + case 40: + case 42: + case 43: + if (!m_bInPage) + return JBIG2_ERROR_FATAL; + return parseGenericRefinementRegion(pSegment); + case 48: { + FX_WORD wTemp; + std::unique_ptr pPageInfo(new JBig2PageInfo); + if (m_pStream->readInteger(&pPageInfo->m_dwWidth) != 0 || + m_pStream->readInteger(&pPageInfo->m_dwHeight) != 0 || + m_pStream->readInteger(&pPageInfo->m_dwResolutionX) != 0 || + m_pStream->readInteger(&pPageInfo->m_dwResolutionY) != 0 || + m_pStream->read1Byte(&pPageInfo->m_cFlags) != 0 || + m_pStream->readShortInteger(&wTemp) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + pPageInfo->m_bIsStriped = !!(wTemp & 0x8000); + pPageInfo->m_wMaxStripeSize = wTemp & 0x7fff; + bool bMaxHeight = (pPageInfo->m_dwHeight == 0xffffffff); + if (bMaxHeight && pPageInfo->m_bIsStriped != TRUE) + pPageInfo->m_bIsStriped = TRUE; + + if (!m_bBufSpecified) { + FX_DWORD height = + bMaxHeight ? pPageInfo->m_wMaxStripeSize : pPageInfo->m_dwHeight; + m_pPage.reset(new CJBig2_Image(pPageInfo->m_dwWidth, height)); + } + + if (!m_pPage->m_pData) { + m_ProcessingStatus = FXCODEC_STATUS_ERROR; + return JBIG2_ERROR_TOO_SHORT; + } + + m_pPage->fill((pPageInfo->m_cFlags & 4) ? 1 : 0); + m_PageInfoList.push_back(pPageInfo.release()); + m_bInPage = true; + } break; + case 49: + m_bInPage = false; + return JBIG2_END_OF_PAGE; + break; + case 50: + m_pStream->offset(pSegment->m_dwData_length); + break; + case 51: + return JBIG2_END_OF_FILE; + case 52: + m_pStream->offset(pSegment->m_dwData_length); + break; + case 53: + return parseTable(pSegment); + case 62: + m_pStream->offset(pSegment->m_dwData_length); + break; + default: + break; + } + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseSymbolDict(CJBig2_Segment* pSegment, + IFX_Pause* pPause) { + FX_WORD wFlags; + if (m_pStream->readShortInteger(&wFlags) != 0) + return JBIG2_ERROR_TOO_SHORT; + + std::unique_ptr pSymbolDictDecoder(new CJBig2_SDDProc); + pSymbolDictDecoder->SDHUFF = wFlags & 0x0001; + pSymbolDictDecoder->SDREFAGG = (wFlags >> 1) & 0x0001; + pSymbolDictDecoder->SDTEMPLATE = (wFlags >> 10) & 0x0003; + pSymbolDictDecoder->SDRTEMPLATE = (wFlags >> 12) & 0x0003; + uint8_t cSDHUFFDH = (wFlags >> 2) & 0x0003; + uint8_t cSDHUFFDW = (wFlags >> 4) & 0x0003; + uint8_t cSDHUFFBMSIZE = (wFlags >> 6) & 0x0001; + uint8_t cSDHUFFAGGINST = (wFlags >> 7) & 0x0001; + if (pSymbolDictDecoder->SDHUFF == 0) { + const FX_DWORD dwTemp = (pSymbolDictDecoder->SDTEMPLATE == 0) ? 8 : 2; + for (FX_DWORD i = 0; i < dwTemp; ++i) { + if (m_pStream->read1Byte((uint8_t*)&pSymbolDictDecoder->SDAT[i]) != 0) + return JBIG2_ERROR_TOO_SHORT; + } + } + if (pSymbolDictDecoder->SDREFAGG == 1 && + pSymbolDictDecoder->SDRTEMPLATE == 0) { + for (int32_t i = 0; i < 4; ++i) { + if (m_pStream->read1Byte((uint8_t*)&pSymbolDictDecoder->SDRAT[i]) != 0) + return JBIG2_ERROR_TOO_SHORT; + } + } + if (m_pStream->readInteger(&pSymbolDictDecoder->SDNUMEXSYMS) != 0 || + m_pStream->readInteger(&pSymbolDictDecoder->SDNUMNEWSYMS) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + if (pSymbolDictDecoder->SDNUMEXSYMS > JBIG2_MAX_EXPORT_SYSMBOLS || + pSymbolDictDecoder->SDNUMNEWSYMS > JBIG2_MAX_NEW_SYSMBOLS) { + return JBIG2_ERROR_LIMIT; + } + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + if (!findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i])) + return JBIG2_ERROR_FATAL; + } + CJBig2_Segment* pLRSeg = nullptr; + pSymbolDictDecoder->SDNUMINSYMS = 0; + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + CJBig2_Segment* pSeg = + findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); + if (pSeg->m_cFlags.s.type == 0) { + pSymbolDictDecoder->SDNUMINSYMS += pSeg->m_Result.sd->NumImages(); + pLRSeg = pSeg; + } + } + + std::unique_ptr SDINSYMS; + if (pSymbolDictDecoder->SDNUMINSYMS != 0) { + SDINSYMS.reset(FX_Alloc(CJBig2_Image*, pSymbolDictDecoder->SDNUMINSYMS)); + FX_DWORD dwTemp = 0; + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + CJBig2_Segment* pSeg = + findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); + if (pSeg->m_cFlags.s.type == 0) { + const CJBig2_SymbolDict& dict = *pSeg->m_Result.sd; + for (size_t j = 0; j < dict.NumImages(); ++j) + SDINSYMS.get()[dwTemp + j] = dict.GetImage(j); + dwTemp += dict.NumImages(); + } + } + } + pSymbolDictDecoder->SDINSYMS = SDINSYMS.get(); + + std::unique_ptr Table_B1; + std::unique_ptr Table_B2; + std::unique_ptr Table_B3; + std::unique_ptr Table_B4; + std::unique_ptr Table_B5; + if (pSymbolDictDecoder->SDHUFF == 1) { + if (cSDHUFFDH == 2 || cSDHUFFDW == 2) + return JBIG2_ERROR_FATAL; + + int32_t nIndex = 0; + if (cSDHUFFDH == 0) { + Table_B4.reset(new CJBig2_HuffmanTable(HuffmanTable_B4, + FX_ArraySize(HuffmanTable_B4), + HuffmanTable_HTOOB_B4)); + pSymbolDictDecoder->SDHUFFDH = Table_B4.get(); + } else if (cSDHUFFDH == 1) { + Table_B5.reset(new CJBig2_HuffmanTable(HuffmanTable_B5, + FX_ArraySize(HuffmanTable_B5), + HuffmanTable_HTOOB_B5)); + pSymbolDictDecoder->SDHUFFDH = Table_B5.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pSymbolDictDecoder->SDHUFFDH = pSeg->m_Result.ht; + } + if (cSDHUFFDW == 0) { + Table_B2.reset(new CJBig2_HuffmanTable(HuffmanTable_B2, + FX_ArraySize(HuffmanTable_B2), + HuffmanTable_HTOOB_B2)); + pSymbolDictDecoder->SDHUFFDW = Table_B2.get(); + } else if (cSDHUFFDW == 1) { + Table_B3.reset(new CJBig2_HuffmanTable(HuffmanTable_B3, + FX_ArraySize(HuffmanTable_B3), + HuffmanTable_HTOOB_B3)); + pSymbolDictDecoder->SDHUFFDW = Table_B3.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pSymbolDictDecoder->SDHUFFDW = pSeg->m_Result.ht; + } + if (cSDHUFFBMSIZE == 0) { + Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, + FX_ArraySize(HuffmanTable_B1), + HuffmanTable_HTOOB_B1)); + pSymbolDictDecoder->SDHUFFBMSIZE = Table_B1.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pSymbolDictDecoder->SDHUFFBMSIZE = pSeg->m_Result.ht; + } + if (pSymbolDictDecoder->SDREFAGG == 1) { + if (cSDHUFFAGGINST == 0) { + if (!Table_B1) { + Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, + FX_ArraySize(HuffmanTable_B1), + HuffmanTable_HTOOB_B1)); + } + pSymbolDictDecoder->SDHUFFAGGINST = Table_B1.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pSymbolDictDecoder->SDHUFFAGGINST = pSeg->m_Result.ht; + } + } + } + + const bool bUseGbContext = (pSymbolDictDecoder->SDHUFF == 0); + const bool bUseGrContext = (pSymbolDictDecoder->SDREFAGG == 1); + const size_t gbContextSize = + GetHuffContextSize(pSymbolDictDecoder->SDTEMPLATE); + const size_t grContextSize = + GetRefAggContextSize(pSymbolDictDecoder->SDRTEMPLATE); + std::vector gbContext; + std::vector grContext; + if ((wFlags & 0x0100) && pLRSeg) { + if (bUseGbContext) { + gbContext = pLRSeg->m_Result.sd->GbContext(); + if (gbContext.size() != gbContextSize) + return JBIG2_ERROR_FATAL; + } + if (bUseGrContext) { + grContext = pLRSeg->m_Result.sd->GrContext(); + if (grContext.size() != grContextSize) + return JBIG2_ERROR_FATAL; + } + } else { + if (bUseGbContext) + gbContext.resize(gbContextSize); + if (bUseGrContext) + grContext.resize(grContextSize); + } + + CJBig2_CacheKey key = + CJBig2_CacheKey(pSegment->m_dwObjNum, pSegment->m_dwDataOffset); + FX_BOOL cache_hit = false; + pSegment->m_nResultType = JBIG2_SYMBOL_DICT_POINTER; + if (m_bIsGlobal && key.first != 0) { + for (auto it = m_pSymbolDictCache->begin(); it != m_pSymbolDictCache->end(); + ++it) { + if (it->first == key) { + std::unique_ptr copy(it->second->DeepCopy()); + pSegment->m_Result.sd = copy.release(); + m_pSymbolDictCache->push_front(*it); + m_pSymbolDictCache->erase(it); + cache_hit = true; + break; + } + } + } + if (!cache_hit) { + if (bUseGbContext) { + std::unique_ptr pArithDecoder( + new CJBig2_ArithDecoder(m_pStream.get())); + pSegment->m_Result.sd = pSymbolDictDecoder->decode_Arith( + pArithDecoder.get(), &gbContext, &grContext); + if (!pSegment->m_Result.sd) + return JBIG2_ERROR_FATAL; + + m_pStream->alignByte(); + m_pStream->offset(2); + } else { + pSegment->m_Result.sd = pSymbolDictDecoder->decode_Huffman( + m_pStream.get(), &gbContext, &grContext, pPause); + if (!pSegment->m_Result.sd) + return JBIG2_ERROR_FATAL; + m_pStream->alignByte(); + } + if (m_bIsGlobal && kSymbolDictCacheMaxSize > 0) { + std::unique_ptr value = + pSegment->m_Result.sd->DeepCopy(); + int size = pdfium::CollectionSize(*m_pSymbolDictCache); + while (size >= kSymbolDictCacheMaxSize) { + delete m_pSymbolDictCache->back().second; + m_pSymbolDictCache->pop_back(); + --size; + } + m_pSymbolDictCache->push_front(CJBig2_CachePair(key, value.release())); + } + } + if (wFlags & 0x0200) { + if (bUseGbContext) + pSegment->m_Result.sd->SetGbContext(gbContext); + if (bUseGrContext) + pSegment->m_Result.sd->SetGrContext(grContext); + } + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseTextRegion(CJBig2_Segment* pSegment) { + FX_WORD wFlags; + JBig2RegionInfo ri; + if (parseRegionInfo(&ri) != JBIG2_SUCCESS || + m_pStream->readShortInteger(&wFlags) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + + std::unique_ptr pTRD(new CJBig2_TRDProc); + pTRD->SBW = ri.width; + pTRD->SBH = ri.height; + pTRD->SBHUFF = wFlags & 0x0001; + pTRD->SBREFINE = (wFlags >> 1) & 0x0001; + FX_DWORD dwTemp = (wFlags >> 2) & 0x0003; + pTRD->SBSTRIPS = 1 << dwTemp; + pTRD->REFCORNER = (JBig2Corner)((wFlags >> 4) & 0x0003); + pTRD->TRANSPOSED = (wFlags >> 6) & 0x0001; + pTRD->SBCOMBOP = (JBig2ComposeOp)((wFlags >> 7) & 0x0003); + pTRD->SBDEFPIXEL = (wFlags >> 9) & 0x0001; + pTRD->SBDSOFFSET = (wFlags >> 10) & 0x001f; + if (pTRD->SBDSOFFSET >= 0x0010) { + pTRD->SBDSOFFSET = pTRD->SBDSOFFSET - 0x0020; + } + pTRD->SBRTEMPLATE = (wFlags >> 15) & 0x0001; + + uint8_t cSBHUFFFS; + uint8_t cSBHUFFDS; + uint8_t cSBHUFFDT; + uint8_t cSBHUFFRDW; + uint8_t cSBHUFFRDH; + uint8_t cSBHUFFRDX; + uint8_t cSBHUFFRDY; + uint8_t cSBHUFFRSIZE; + if (pTRD->SBHUFF == 1) { + if (m_pStream->readShortInteger(&wFlags) != 0) + return JBIG2_ERROR_TOO_SHORT; + + cSBHUFFFS = wFlags & 0x0003; + cSBHUFFDS = (wFlags >> 2) & 0x0003; + cSBHUFFDT = (wFlags >> 4) & 0x0003; + cSBHUFFRDW = (wFlags >> 6) & 0x0003; + cSBHUFFRDH = (wFlags >> 8) & 0x0003; + cSBHUFFRDX = (wFlags >> 10) & 0x0003; + cSBHUFFRDY = (wFlags >> 12) & 0x0003; + cSBHUFFRSIZE = (wFlags >> 14) & 0x0001; + } + if (pTRD->SBREFINE == 1 && pTRD->SBRTEMPLATE == 0) { + for (int32_t i = 0; i < 4; ++i) { + if (m_pStream->read1Byte((uint8_t*)&pTRD->SBRAT[i]) != 0) + return JBIG2_ERROR_TOO_SHORT; + } + } + if (m_pStream->readInteger(&pTRD->SBNUMINSTANCES) != 0) + return JBIG2_ERROR_TOO_SHORT; + + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + if (!findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i])) + return JBIG2_ERROR_FATAL; + } + + pTRD->SBNUMSYMS = 0; + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + CJBig2_Segment* pSeg = + findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); + if (pSeg->m_cFlags.s.type == 0) { + pTRD->SBNUMSYMS += pSeg->m_Result.sd->NumImages(); + } + } + + std::unique_ptr SBSYMS; + if (pTRD->SBNUMSYMS > 0) { + SBSYMS.reset(FX_Alloc(CJBig2_Image*, pTRD->SBNUMSYMS)); + dwTemp = 0; + for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + CJBig2_Segment* pSeg = + findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); + if (pSeg->m_cFlags.s.type == 0) { + const CJBig2_SymbolDict& dict = *pSeg->m_Result.sd; + for (size_t j = 0; j < dict.NumImages(); ++j) + SBSYMS.get()[dwTemp + j] = dict.GetImage(j); + dwTemp += dict.NumImages(); + } + } + pTRD->SBSYMS = SBSYMS.get(); + } else { + pTRD->SBSYMS = NULL; + } + + std::unique_ptr SBSYMCODES; + if (pTRD->SBHUFF == 1) { + SBSYMCODES.reset( + decodeSymbolIDHuffmanTable(m_pStream.get(), pTRD->SBNUMSYMS)); + if (!SBSYMCODES) + return JBIG2_ERROR_FATAL; + + m_pStream->alignByte(); + pTRD->SBSYMCODES = SBSYMCODES.get(); + } else { + dwTemp = 0; + while ((FX_DWORD)(1 << dwTemp) < pTRD->SBNUMSYMS) { + ++dwTemp; + } + pTRD->SBSYMCODELEN = (uint8_t)dwTemp; + } + + std::unique_ptr Table_B1; + std::unique_ptr Table_B6; + std::unique_ptr Table_B7; + std::unique_ptr Table_B8; + std::unique_ptr Table_B9; + std::unique_ptr Table_B10; + std::unique_ptr Table_B11; + std::unique_ptr Table_B12; + std::unique_ptr Table_B13; + std::unique_ptr Table_B14; + std::unique_ptr Table_B15; + if (pTRD->SBHUFF == 1) { + if (cSBHUFFFS == 2 || cSBHUFFRDW == 2 || cSBHUFFRDH == 2 || + cSBHUFFRDX == 2 || cSBHUFFRDY == 2) { + return JBIG2_ERROR_FATAL; + } + int32_t nIndex = 0; + if (cSBHUFFFS == 0) { + Table_B6.reset(new CJBig2_HuffmanTable(HuffmanTable_B6, + FX_ArraySize(HuffmanTable_B6), + HuffmanTable_HTOOB_B6)); + pTRD->SBHUFFFS = Table_B6.get(); + } else if (cSBHUFFFS == 1) { + Table_B7.reset(new CJBig2_HuffmanTable(HuffmanTable_B7, + FX_ArraySize(HuffmanTable_B7), + HuffmanTable_HTOOB_B7)); + pTRD->SBHUFFFS = Table_B7.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFFS = pSeg->m_Result.ht; + } + if (cSBHUFFDS == 0) { + Table_B8.reset(new CJBig2_HuffmanTable(HuffmanTable_B8, + FX_ArraySize(HuffmanTable_B8), + HuffmanTable_HTOOB_B8)); + pTRD->SBHUFFDS = Table_B8.get(); + } else if (cSBHUFFDS == 1) { + Table_B9.reset(new CJBig2_HuffmanTable(HuffmanTable_B9, + FX_ArraySize(HuffmanTable_B9), + HuffmanTable_HTOOB_B9)); + pTRD->SBHUFFDS = Table_B9.get(); + } else if (cSBHUFFDS == 2) { + Table_B10.reset(new CJBig2_HuffmanTable(HuffmanTable_B10, + FX_ArraySize(HuffmanTable_B10), + HuffmanTable_HTOOB_B10)); + pTRD->SBHUFFDS = Table_B10.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFDS = pSeg->m_Result.ht; + } + if (cSBHUFFDT == 0) { + Table_B11.reset(new CJBig2_HuffmanTable(HuffmanTable_B11, + FX_ArraySize(HuffmanTable_B11), + HuffmanTable_HTOOB_B11)); + pTRD->SBHUFFDT = Table_B11.get(); + } else if (cSBHUFFDT == 1) { + Table_B12.reset(new CJBig2_HuffmanTable(HuffmanTable_B12, + FX_ArraySize(HuffmanTable_B12), + HuffmanTable_HTOOB_B12)); + pTRD->SBHUFFDT = Table_B12.get(); + } else if (cSBHUFFDT == 2) { + Table_B13.reset(new CJBig2_HuffmanTable(HuffmanTable_B13, + FX_ArraySize(HuffmanTable_B13), + HuffmanTable_HTOOB_B13)); + pTRD->SBHUFFDT = Table_B13.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFDT = pSeg->m_Result.ht; + } + if (cSBHUFFRDW == 0) { + Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, + FX_ArraySize(HuffmanTable_B14), + HuffmanTable_HTOOB_B14)); + pTRD->SBHUFFRDW = Table_B14.get(); + } else if (cSBHUFFRDW == 1) { + Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + pTRD->SBHUFFRDW = Table_B15.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFRDW = pSeg->m_Result.ht; + } + if (cSBHUFFRDH == 0) { + if (!Table_B14) { + Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, + FX_ArraySize(HuffmanTable_B14), + HuffmanTable_HTOOB_B14)); + } + pTRD->SBHUFFRDH = Table_B14.get(); + } else if (cSBHUFFRDH == 1) { + if (!Table_B15) { + Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + } + pTRD->SBHUFFRDH = Table_B15.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFRDH = pSeg->m_Result.ht; + } + if (cSBHUFFRDX == 0) { + if (!Table_B14) { + Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, + FX_ArraySize(HuffmanTable_B14), + HuffmanTable_HTOOB_B14)); + } + pTRD->SBHUFFRDX = Table_B14.get(); + } else if (cSBHUFFRDX == 1) { + if (!Table_B15) { + Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + } + pTRD->SBHUFFRDX = Table_B15.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFRDX = pSeg->m_Result.ht; + } + if (cSBHUFFRDY == 0) { + if (!Table_B14) { + Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, + FX_ArraySize(HuffmanTable_B14), + HuffmanTable_HTOOB_B14)); + } + pTRD->SBHUFFRDY = Table_B14.get(); + } else if (cSBHUFFRDY == 1) { + if (!Table_B15) { + Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + } + pTRD->SBHUFFRDY = Table_B15.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFRDY = pSeg->m_Result.ht; + } + if (cSBHUFFRSIZE == 0) { + Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, + FX_ArraySize(HuffmanTable_B1), + HuffmanTable_HTOOB_B1)); + pTRD->SBHUFFRSIZE = Table_B1.get(); + } else { + CJBig2_Segment* pSeg = + findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); + if (!pSeg) + return JBIG2_ERROR_FATAL; + pTRD->SBHUFFRSIZE = pSeg->m_Result.ht; + } + } + std::unique_ptr grContext; + if (pTRD->SBREFINE == 1) { + const size_t size = GetRefAggContextSize(pTRD->SBRTEMPLATE); + grContext.reset(FX_Alloc(JBig2ArithCtx, size)); + JBIG2_memset(grContext.get(), 0, sizeof(JBig2ArithCtx) * size); + } + if (pTRD->SBHUFF == 0) { + std::unique_ptr pArithDecoder( + new CJBig2_ArithDecoder(m_pStream.get())); + pSegment->m_nResultType = JBIG2_IMAGE_POINTER; + pSegment->m_Result.im = + pTRD->decode_Arith(pArithDecoder.get(), grContext.get(), nullptr); + if (!pSegment->m_Result.im) + return JBIG2_ERROR_FATAL; + m_pStream->alignByte(); + m_pStream->offset(2); + } else { + pSegment->m_nResultType = JBIG2_IMAGE_POINTER; + pSegment->m_Result.im = + pTRD->decode_Huffman(m_pStream.get(), grContext.get()); + if (!pSegment->m_Result.im) + return JBIG2_ERROR_FATAL; + m_pStream->alignByte(); + } + if (pSegment->m_cFlags.s.type != 4) { + if (!m_bBufSpecified) { + JBig2PageInfo* pPageInfo = m_PageInfoList.back(); + if ((pPageInfo->m_bIsStriped == 1) && + (ri.y + ri.height > m_pPage->m_nHeight)) { + m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); + } + } + m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, + (JBig2ComposeOp)(ri.flags & 0x03)); + delete pSegment->m_Result.im; + pSegment->m_Result.im = NULL; + } + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parsePatternDict(CJBig2_Segment* pSegment, + IFX_Pause* pPause) { + uint8_t cFlags; + std::unique_ptr pPDD(new CJBig2_PDDProc); + if (m_pStream->read1Byte(&cFlags) != 0 || + m_pStream->read1Byte(&pPDD->HDPW) != 0 || + m_pStream->read1Byte(&pPDD->HDPH) != 0 || + m_pStream->readInteger(&pPDD->GRAYMAX) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + if (pPDD->GRAYMAX > JBIG2_MAX_PATTERN_INDEX) + return JBIG2_ERROR_LIMIT; + + pPDD->HDMMR = cFlags & 0x01; + pPDD->HDTEMPLATE = (cFlags >> 1) & 0x03; + pSegment->m_nResultType = JBIG2_PATTERN_DICT_POINTER; + if (pPDD->HDMMR == 0) { + const size_t size = GetHuffContextSize(pPDD->HDTEMPLATE); + std::unique_ptr gbContext( + FX_Alloc(JBig2ArithCtx, size)); + JBIG2_memset(gbContext.get(), 0, sizeof(JBig2ArithCtx) * size); + std::unique_ptr pArithDecoder( + new CJBig2_ArithDecoder(m_pStream.get())); + pSegment->m_Result.pd = + pPDD->decode_Arith(pArithDecoder.get(), gbContext.get(), pPause); + if (!pSegment->m_Result.pd) + return JBIG2_ERROR_FATAL; + + m_pStream->alignByte(); + m_pStream->offset(2); + } else { + pSegment->m_Result.pd = pPDD->decode_MMR(m_pStream.get(), pPause); + if (!pSegment->m_Result.pd) + return JBIG2_ERROR_FATAL; + m_pStream->alignByte(); + } + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseHalftoneRegion(CJBig2_Segment* pSegment, + IFX_Pause* pPause) { + uint8_t cFlags; + JBig2RegionInfo ri; + std::unique_ptr pHRD(new CJBig2_HTRDProc); + if (parseRegionInfo(&ri) != JBIG2_SUCCESS || + m_pStream->read1Byte(&cFlags) != 0 || + m_pStream->readInteger(&pHRD->HGW) != 0 || + m_pStream->readInteger(&pHRD->HGH) != 0 || + m_pStream->readInteger((FX_DWORD*)&pHRD->HGX) != 0 || + m_pStream->readInteger((FX_DWORD*)&pHRD->HGY) != 0 || + m_pStream->readShortInteger(&pHRD->HRX) != 0 || + m_pStream->readShortInteger(&pHRD->HRY) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + + if (pHRD->HGW == 0 || pHRD->HGH == 0) + return JBIG2_ERROR_FATAL; + + pHRD->HBW = ri.width; + pHRD->HBH = ri.height; + pHRD->HMMR = cFlags & 0x01; + pHRD->HTEMPLATE = (cFlags >> 1) & 0x03; + pHRD->HENABLESKIP = (cFlags >> 3) & 0x01; + pHRD->HCOMBOP = (JBig2ComposeOp)((cFlags >> 4) & 0x07); + pHRD->HDEFPIXEL = (cFlags >> 7) & 0x01; + if (pSegment->m_nReferred_to_segment_count != 1) + return JBIG2_ERROR_FATAL; + + CJBig2_Segment* pSeg = + findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[0]); + if (!pSeg || (pSeg->m_cFlags.s.type != 16)) + return JBIG2_ERROR_FATAL; + + CJBig2_PatternDict* pPatternDict = pSeg->m_Result.pd; + if (!pPatternDict || (pPatternDict->NUMPATS == 0)) + return JBIG2_ERROR_FATAL; + + pHRD->HNUMPATS = pPatternDict->NUMPATS; + pHRD->HPATS = pPatternDict->HDPATS; + pHRD->HPW = pPatternDict->HDPATS[0]->m_nWidth; + pHRD->HPH = pPatternDict->HDPATS[0]->m_nHeight; + pSegment->m_nResultType = JBIG2_IMAGE_POINTER; + if (pHRD->HMMR == 0) { + const size_t size = GetHuffContextSize(pHRD->HTEMPLATE); + std::unique_ptr gbContext( + FX_Alloc(JBig2ArithCtx, size)); + JBIG2_memset(gbContext.get(), 0, sizeof(JBig2ArithCtx) * size); + std::unique_ptr pArithDecoder( + new CJBig2_ArithDecoder(m_pStream.get())); + pSegment->m_Result.im = + pHRD->decode_Arith(pArithDecoder.get(), gbContext.get(), pPause); + if (!pSegment->m_Result.im) + return JBIG2_ERROR_FATAL; + + m_pStream->alignByte(); + m_pStream->offset(2); + } else { + pSegment->m_Result.im = pHRD->decode_MMR(m_pStream.get(), pPause); + if (!pSegment->m_Result.im) + return JBIG2_ERROR_FATAL; + m_pStream->alignByte(); + } + if (pSegment->m_cFlags.s.type != 20) { + if (!m_bBufSpecified) { + JBig2PageInfo* pPageInfo = m_PageInfoList.back(); + if (pPageInfo->m_bIsStriped == 1 && + ri.y + ri.height > m_pPage->m_nHeight) { + m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); + } + } + m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, + (JBig2ComposeOp)(ri.flags & 0x03)); + delete pSegment->m_Result.im; + pSegment->m_Result.im = NULL; + } + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseGenericRegion(CJBig2_Segment* pSegment, + IFX_Pause* pPause) { + if (!m_pGRD) { + std::unique_ptr pGRD(new CJBig2_GRDProc); + uint8_t cFlags; + if (parseRegionInfo(&m_ri) != JBIG2_SUCCESS || + m_pStream->read1Byte(&cFlags) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + if (m_ri.height < 0 || m_ri.width < 0) + return JBIG2_FAILED; + + pGRD->GBW = m_ri.width; + pGRD->GBH = m_ri.height; + pGRD->MMR = cFlags & 0x01; + pGRD->GBTEMPLATE = (cFlags >> 1) & 0x03; + pGRD->TPGDON = (cFlags >> 3) & 0x01; + if (pGRD->MMR == 0) { + if (pGRD->GBTEMPLATE == 0) { + for (int32_t i = 0; i < 8; ++i) { + if (m_pStream->read1Byte((uint8_t*)&pGRD->GBAT[i]) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + } + } else { + for (int32_t i = 0; i < 2; ++i) { + if (m_pStream->read1Byte((uint8_t*)&pGRD->GBAT[i]) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + } + } + } + pGRD->USESKIP = 0; + m_pGRD = std::move(pGRD); + } + pSegment->m_nResultType = JBIG2_IMAGE_POINTER; + if (m_pGRD->MMR == 0) { + if (!m_gbContext) { + const size_t size = GetHuffContextSize(m_pGRD->GBTEMPLATE); + m_gbContext = FX_Alloc(JBig2ArithCtx, size); + JBIG2_memset(m_gbContext, 0, sizeof(JBig2ArithCtx) * size); + } + if (!m_pArithDecoder) { + m_pArithDecoder.reset(new CJBig2_ArithDecoder(m_pStream.get())); + m_ProcessingStatus = m_pGRD->Start_decode_Arith( + &pSegment->m_Result.im, m_pArithDecoder.get(), m_gbContext, pPause); + } else { + m_ProcessingStatus = m_pGRD->Continue_decode(pPause); + } + if (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + if (pSegment->m_cFlags.s.type != 36) { + if (!m_bBufSpecified) { + JBig2PageInfo* pPageInfo = m_PageInfoList.back(); + if ((pPageInfo->m_bIsStriped == 1) && + (m_ri.y + m_ri.height > m_pPage->m_nHeight)) { + m_pPage->expand(m_ri.y + m_ri.height, + (pPageInfo->m_cFlags & 4) ? 1 : 0); + } + } + FX_RECT Rect = m_pGRD->GetReplaceRect(); + m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top, + pSegment->m_Result.im, + (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect); + } + return JBIG2_SUCCESS; + } else { + m_pArithDecoder.reset(); + FX_Free(m_gbContext); + m_gbContext = NULL; + if (!pSegment->m_Result.im) { + m_ProcessingStatus = FXCODEC_STATUS_ERROR; + m_pGRD.reset(); + return JBIG2_ERROR_FATAL; + } + m_pStream->alignByte(); + m_pStream->offset(2); + } + } else { + FXCODEC_STATUS status = m_pGRD->Start_decode_MMR(&pSegment->m_Result.im, + m_pStream.get(), pPause); + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + m_pGRD->Continue_decode(pPause); + } + if (!pSegment->m_Result.im) { + m_pGRD.reset(); + return JBIG2_ERROR_FATAL; + } + m_pStream->alignByte(); + } + if (pSegment->m_cFlags.s.type != 36) { + if (!m_bBufSpecified) { + JBig2PageInfo* pPageInfo = m_PageInfoList.back(); + if ((pPageInfo->m_bIsStriped == 1) && + (m_ri.y + m_ri.height > m_pPage->m_nHeight)) { + m_pPage->expand(m_ri.y + m_ri.height, + (pPageInfo->m_cFlags & 4) ? 1 : 0); + } + } + FX_RECT Rect = m_pGRD->GetReplaceRect(); + m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top, + pSegment->m_Result.im, + (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect); + delete pSegment->m_Result.im; + pSegment->m_Result.im = NULL; + } + m_pGRD.reset(); + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseGenericRefinementRegion(CJBig2_Segment* pSegment) { + JBig2RegionInfo ri; + uint8_t cFlags; + if (parseRegionInfo(&ri) != JBIG2_SUCCESS || + m_pStream->read1Byte(&cFlags) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + std::unique_ptr pGRRD(new CJBig2_GRRDProc); + pGRRD->GRW = ri.width; + pGRRD->GRH = ri.height; + pGRRD->GRTEMPLATE = cFlags & 0x01; + pGRRD->TPGRON = (cFlags >> 1) & 0x01; + if (pGRRD->GRTEMPLATE == 0) { + for (int32_t i = 0; i < 4; ++i) { + if (m_pStream->read1Byte((uint8_t*)&pGRRD->GRAT[i]) != 0) + return JBIG2_ERROR_TOO_SHORT; + } + } + CJBig2_Segment* pSeg = nullptr; + if (pSegment->m_nReferred_to_segment_count > 0) { + int32_t i; + for (i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { + pSeg = findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[0]); + if (!pSeg) + return JBIG2_ERROR_FATAL; + + if (pSeg->m_cFlags.s.type == 4 || pSeg->m_cFlags.s.type == 20 || + pSeg->m_cFlags.s.type == 36 || pSeg->m_cFlags.s.type == 40) { + break; + } + } + if (i >= pSegment->m_nReferred_to_segment_count) + return JBIG2_ERROR_FATAL; + + pGRRD->GRREFERENCE = pSeg->m_Result.im; + } else { + pGRRD->GRREFERENCE = m_pPage.get(); + } + pGRRD->GRREFERENCEDX = 0; + pGRRD->GRREFERENCEDY = 0; + const size_t size = GetRefAggContextSize(pGRRD->GRTEMPLATE); + std::unique_ptr grContext( + FX_Alloc(JBig2ArithCtx, size)); + JBIG2_memset(grContext.get(), 0, sizeof(JBig2ArithCtx) * size); + std::unique_ptr pArithDecoder( + new CJBig2_ArithDecoder(m_pStream.get())); + pSegment->m_nResultType = JBIG2_IMAGE_POINTER; + pSegment->m_Result.im = pGRRD->decode(pArithDecoder.get(), grContext.get()); + if (!pSegment->m_Result.im) + return JBIG2_ERROR_FATAL; + + m_pStream->alignByte(); + m_pStream->offset(2); + if (pSegment->m_cFlags.s.type != 40) { + if (!m_bBufSpecified) { + JBig2PageInfo* pPageInfo = m_PageInfoList.back(); + if ((pPageInfo->m_bIsStriped == 1) && + (ri.y + ri.height > m_pPage->m_nHeight)) { + m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); + } + } + m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, + (JBig2ComposeOp)(ri.flags & 0x03)); + delete pSegment->m_Result.im; + pSegment->m_Result.im = NULL; + } + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseTable(CJBig2_Segment* pSegment) { + pSegment->m_nResultType = JBIG2_HUFFMAN_TABLE_POINTER; + pSegment->m_Result.ht = nullptr; + std::unique_ptr pHuff( + new CJBig2_HuffmanTable(m_pStream.get())); + if (!pHuff->IsOK()) + return JBIG2_ERROR_FATAL; + + pSegment->m_Result.ht = pHuff.release(); + m_pStream->alignByte(); + return JBIG2_SUCCESS; +} + +int32_t CJBig2_Context::parseRegionInfo(JBig2RegionInfo* pRI) { + if (m_pStream->readInteger((FX_DWORD*)&pRI->width) != 0 || + m_pStream->readInteger((FX_DWORD*)&pRI->height) != 0 || + m_pStream->readInteger((FX_DWORD*)&pRI->x) != 0 || + m_pStream->readInteger((FX_DWORD*)&pRI->y) != 0 || + m_pStream->read1Byte(&pRI->flags) != 0) { + return JBIG2_ERROR_TOO_SHORT; + } + return JBIG2_SUCCESS; +} + +JBig2HuffmanCode* CJBig2_Context::decodeSymbolIDHuffmanTable( + CJBig2_BitStream* pStream, + FX_DWORD SBNUMSYMS) { + const size_t kRunCodesSize = 35; + int32_t runcodes[kRunCodesSize]; + int32_t runcodes_len[kRunCodesSize]; + for (int32_t i = 0; i < kRunCodesSize; ++i) { + if (pStream->readNBits(4, &runcodes_len[i]) != 0) + return nullptr; + } + huffman_assign_code(runcodes, runcodes_len, kRunCodesSize); + + std::unique_ptr SBSYMCODES( + FX_Alloc(JBig2HuffmanCode, SBNUMSYMS)); + int32_t run; + int32_t i = 0; + while (i < (int)SBNUMSYMS) { + int32_t j; + int32_t nVal = 0; + int32_t nBits = 0; + FX_DWORD nTemp; + while (true) { + if (pStream->read1Bit(&nTemp) != 0) + return nullptr; + + nVal = (nVal << 1) | nTemp; + ++nBits; + for (j = 0; j < kRunCodesSize; ++j) { + if (nBits == runcodes_len[j] && nVal == runcodes[j]) { + break; + } + } + if (j < kRunCodesSize) { + break; + } + } + int32_t runcode = j; + if (runcode < 32) { + SBSYMCODES.get()[i].codelen = runcode; + run = 0; + } else if (runcode == 32) { + if (pStream->readNBits(2, &nTemp) != 0) + return nullptr; + run = nTemp + 3; + } else if (runcode == 33) { + if (pStream->readNBits(3, &nTemp) != 0) + return nullptr; + run = nTemp + 3; + } else if (runcode == 34) { + if (pStream->readNBits(7, &nTemp) != 0) + return nullptr; + run = nTemp + 11; + } + if (run > 0) { + if (i + run > (int)SBNUMSYMS) + return nullptr; + for (j = 0; j < run; ++j) { + if (runcode == 32 && i > 0) { + SBSYMCODES.get()[i + j].codelen = SBSYMCODES.get()[i - 1].codelen; + } else { + SBSYMCODES.get()[i + j].codelen = 0; + } + } + i += run; + } else { + ++i; + } + } + huffman_assign_code(SBSYMCODES.get(), SBNUMSYMS); + return SBSYMCODES.release(); +} + +void CJBig2_Context::huffman_assign_code(int* CODES, int* PREFLEN, int NTEMP) { + // TODO(thestig) CJBig2_HuffmanTable::parseFromCodedBuffer() has similar code. + int CURLEN, LENMAX, CURCODE, CURTEMP, i; + int* LENCOUNT; + int* FIRSTCODE; + LENMAX = 0; + for (i = 0; i < NTEMP; ++i) { + if (PREFLEN[i] > LENMAX) { + LENMAX = PREFLEN[i]; + } + } + LENCOUNT = FX_Alloc(int, LENMAX + 1); + JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1)); + FIRSTCODE = FX_Alloc(int, LENMAX + 1); + for (i = 0; i < NTEMP; ++i) { + ++LENCOUNT[PREFLEN[i]]; + } + CURLEN = 1; + FIRSTCODE[0] = 0; + LENCOUNT[0] = 0; + while (CURLEN <= LENMAX) { + FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1; + CURCODE = FIRSTCODE[CURLEN]; + CURTEMP = 0; + while (CURTEMP < NTEMP) { + if (PREFLEN[CURTEMP] == CURLEN) { + CODES[CURTEMP] = CURCODE; + CURCODE = CURCODE + 1; + } + CURTEMP = CURTEMP + 1; + } + CURLEN = CURLEN + 1; + } + FX_Free(LENCOUNT); + FX_Free(FIRSTCODE); +} +void CJBig2_Context::huffman_assign_code(JBig2HuffmanCode* SBSYMCODES, + int NTEMP) { + int CURLEN, LENMAX, CURCODE, CURTEMP, i; + int* LENCOUNT; + int* FIRSTCODE; + LENMAX = 0; + for (i = 0; i < NTEMP; ++i) { + if (SBSYMCODES[i].codelen > LENMAX) { + LENMAX = SBSYMCODES[i].codelen; + } + } + LENCOUNT = FX_Alloc(int, (LENMAX + 1)); + JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1)); + FIRSTCODE = FX_Alloc(int, (LENMAX + 1)); + for (i = 0; i < NTEMP; ++i) { + ++LENCOUNT[SBSYMCODES[i].codelen]; + } + CURLEN = 1; + FIRSTCODE[0] = 0; + LENCOUNT[0] = 0; + while (CURLEN <= LENMAX) { + FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1; + CURCODE = FIRSTCODE[CURLEN]; + CURTEMP = 0; + while (CURTEMP < NTEMP) { + if (SBSYMCODES[CURTEMP].codelen == CURLEN) { + SBSYMCODES[CURTEMP].code = CURCODE; + CURCODE = CURCODE + 1; + } + CURTEMP = CURTEMP + 1; + } + CURLEN = CURLEN + 1; + } + FX_Free(LENCOUNT); + FX_Free(FIRSTCODE); +} diff --git a/core/fxcodec/jbig2/JBig2_Context.h b/core/fxcodec/jbig2/JBig2_Context.h new file mode 100644 index 0000000000..f09b8fc1ab --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Context.h @@ -0,0 +1,134 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_CONTEXT_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_CONTEXT_H_ + +#include +#include +#include + +#include "core/fxcodec/jbig2/JBig2_List.h" +#include "core/fxcodec/jbig2/JBig2_Page.h" +#include "core/fxcodec/jbig2/JBig2_Segment.h" +#include "core/include/fpdfapi/cpdf_object.h" +#include "core/include/fxcodec/fx_codec_def.h" + +class CJBig2_ArithDecoder; +class CJBig2_GRDProc; +class CPDF_StreamAcc; +class IFX_Pause; + +// Cache is keyed by the ObjNum of a stream and an index within the stream. +using CJBig2_CacheKey = std::pair; +// NB: CJBig2_SymbolDict* is owned. +using CJBig2_CachePair = std::pair; + +#define JBIG2_SUCCESS 0 +#define JBIG2_FAILED -1 +#define JBIG2_ERROR_TOO_SHORT -2 +#define JBIG2_ERROR_FATAL -3 +#define JBIG2_END_OF_PAGE 2 +#define JBIG2_END_OF_FILE 3 +#define JBIG2_ERROR_FILE_FORMAT -4 +#define JBIG2_ERROR_STREAM_TYPE -5 +#define JBIG2_ERROR_LIMIT -6 +#define JBIG2_MIN_SEGMENT_SIZE 11 + +class CJBig2_Context { + public: + static CJBig2_Context* CreateContext( + CPDF_StreamAcc* pGlobalStream, + CPDF_StreamAcc* pSrcStream, + std::list* pSymbolDictCache, + IFX_Pause* pPause = NULL); + + static void DestroyContext(CJBig2_Context* pContext); + + int32_t getFirstPage(uint8_t* pBuf, + int32_t width, + int32_t height, + int32_t stride, + IFX_Pause* pPause); + + int32_t Continue(IFX_Pause* pPause); + FXCODEC_STATUS GetProcessingStatus() { return m_ProcessingStatus; } + + private: + CJBig2_Context(CPDF_StreamAcc* pGlobalStream, + CPDF_StreamAcc* pSrcStream, + std::list* pSymbolDictCache, + IFX_Pause* pPause, + bool bIsGlobal); + + ~CJBig2_Context(); + + int32_t decode_SquentialOrgnazation(IFX_Pause* pPause); + + int32_t decode_EmbedOrgnazation(IFX_Pause* pPause); + + int32_t decode_RandomOrgnazation_FirstPage(IFX_Pause* pPause); + + int32_t decode_RandomOrgnazation(IFX_Pause* pPause); + + CJBig2_Segment* findSegmentByNumber(FX_DWORD dwNumber); + + CJBig2_Segment* findReferredSegmentByTypeAndIndex(CJBig2_Segment* pSegment, + uint8_t cType, + int32_t nIndex); + + int32_t parseSegmentHeader(CJBig2_Segment* pSegment); + + int32_t parseSegmentData(CJBig2_Segment* pSegment, IFX_Pause* pPause); + int32_t ProcessingParseSegmentData(CJBig2_Segment* pSegment, + IFX_Pause* pPause); + + int32_t parseSymbolDict(CJBig2_Segment* pSegment, IFX_Pause* pPause); + + int32_t parseTextRegion(CJBig2_Segment* pSegment); + + int32_t parsePatternDict(CJBig2_Segment* pSegment, IFX_Pause* pPause); + + int32_t parseHalftoneRegion(CJBig2_Segment* pSegment, IFX_Pause* pPause); + + int32_t parseGenericRegion(CJBig2_Segment* pSegment, IFX_Pause* pPause); + + int32_t parseGenericRefinementRegion(CJBig2_Segment* pSegment); + + int32_t parseTable(CJBig2_Segment* pSegment); + + int32_t parseRegionInfo(JBig2RegionInfo* pRI); + + JBig2HuffmanCode* decodeSymbolIDHuffmanTable(CJBig2_BitStream* pStream, + FX_DWORD SBNUMSYMS); + + void huffman_assign_code(int* CODES, int* PREFLEN, int NTEMP); + + void huffman_assign_code(JBig2HuffmanCode* SBSYMCODES, int NTEMP); + + private: + CJBig2_Context* m_pGlobalContext; + std::unique_ptr m_pStream; + CJBig2_List m_SegmentList; + CJBig2_List m_PageInfoList; + std::unique_ptr m_pPage; + size_t m_nSegmentDecoded; + bool m_bInPage; + bool m_bBufSpecified; + int32_t m_PauseStep; + IFX_Pause* m_pPause; + FXCODEC_STATUS m_ProcessingStatus; + std::unique_ptr m_pArithDecoder; + std::unique_ptr m_pGRD; + JBig2ArithCtx* m_gbContext; + std::unique_ptr m_pSegment; + FX_DWORD m_dwOffset; + JBig2RegionInfo m_ri; + std::list* const m_pSymbolDictCache; + bool m_bIsGlobal; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_CONTEXT_H_ diff --git a/core/fxcodec/jbig2/JBig2_Define.h b/core/fxcodec/jbig2/JBig2_Define.h new file mode 100644 index 0000000000..5149c19ef2 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Define.h @@ -0,0 +1,36 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_DEFINE_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_DEFINE_H_ + +#include "core/include/fxcrt/fx_system.h" + +#define JBIG2_memset FXSYS_memset +#define JBIG2_memcmp FXSYS_memcmp +#define JBIG2_memcpy FXSYS_memcpy +#define JBIG2_OOB 1 + +struct JBig2RegionInfo { + int32_t width; + int32_t height; + int32_t x; + int32_t y; + uint8_t flags; +}; + +struct JBig2HuffmanCode { + int32_t codelen; + int32_t code; +}; + +#define JBIG2_MAX_REFERRED_SEGMENT_COUNT 64 +#define JBIG2_MAX_EXPORT_SYSMBOLS 65535 +#define JBIG2_MAX_NEW_SYSMBOLS 65535 +#define JBIG2_MAX_PATTERN_INDEX 65535 +#define JBIG2_MAX_IMAGE_SIZE 65535 + +#endif // CORE_FXCODEC_JBIG2_JBIG2_DEFINE_H_ diff --git a/core/fxcodec/jbig2/JBig2_GrdProc.cpp b/core/fxcodec/jbig2/JBig2_GrdProc.cpp new file mode 100644 index 0000000000..a3fc33c2be --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_GrdProc.cpp @@ -0,0 +1,1259 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_GrdProc.h" + +#include + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" +#include "core/fxcodec/jbig2/JBig2_BitStream.h" +#include "core/fxcodec/jbig2/JBig2_Image.h" +#include "core/include/fxcodec/fx_codec.h" + +CJBig2_GRDProc::CJBig2_GRDProc() + : m_loopIndex(0), + m_pLine(nullptr), + m_pPause(nullptr), + m_DecodeType(0), + LTP(0) { + m_ReplaceRect.left = 0; + m_ReplaceRect.bottom = 0; + m_ReplaceRect.top = 0; + m_ReplaceRect.right = 0; +} + +bool CJBig2_GRDProc::UseTemplate0Opt3() const { + return (GBAT[0] == 3) && (GBAT[1] == -1) && (GBAT[2] == -3) && + (GBAT[3] == -1) && (GBAT[4] == 2) && (GBAT[5] == -2) && + (GBAT[6] == -2) && (GBAT[7] == -2); +} + +bool CJBig2_GRDProc::UseTemplate1Opt3() const { + return (GBAT[0] == 3) && (GBAT[1] == -1); +} + +bool CJBig2_GRDProc::UseTemplate23Opt3() const { + return (GBAT[0] == 2) && (GBAT[1] == -1); +} + +CJBig2_Image* CJBig2_GRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + if (GBW == 0 || GBH == 0) + return new CJBig2_Image(GBW, GBH); + + if (GBTEMPLATE == 0) { + if (UseTemplate0Opt3()) + return decode_Arith_Template0_opt3(pArithDecoder, gbContext); + return decode_Arith_Template0_unopt(pArithDecoder, gbContext); + } else if (GBTEMPLATE == 1) { + if (UseTemplate1Opt3()) + return decode_Arith_Template1_opt3(pArithDecoder, gbContext); + return decode_Arith_Template1_unopt(pArithDecoder, gbContext); + } else if (GBTEMPLATE == 2) { + if (UseTemplate23Opt3()) + return decode_Arith_Template2_opt3(pArithDecoder, gbContext); + return decode_Arith_Template2_unopt(pArithDecoder, gbContext); + } else { + if (UseTemplate23Opt3()) + return decode_Arith_Template3_opt3(pArithDecoder, gbContext); + return decode_Arith_Template3_unopt(pArithDecoder, gbContext); + } +} +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_opt3( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + uint8_t *pLine, *pLine1, *pLine2, cVal; + int32_t nStride, nStride2, k; + int32_t nLineBytes, nBitsLeft, cc; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + if (!GBREG->m_pData) + return nullptr; + + pLine = GBREG->m_pData; + nStride = GBREG->m_nStride; + nStride2 = nStride << 1; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + FX_DWORD height = GBH & 0x7fffffff; + for (FX_DWORD h = 0; h < height; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + if (h > 1) { + pLine1 = pLine - nStride2; + pLine2 = pLine - nStride; + line1 = (*pLine1++) << 6; + line2 = *pLine2++; + CONTEXT = ((line1 & 0xf800) | (line2 & 0x07f0)); + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | ((*pLine1++) << 6); + line2 = (line2 << 8) | (*pLine2++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | + ((line1 >> k) & 0x0800) | ((line2 >> k) & 0x0010)); + } + pLine[cc] = cVal; + } + line1 <<= 8; + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = + (((CONTEXT & 0x7bf7) << 1) | bVal | + ((line1 >> (7 - k)) & 0x0800) | ((line2 >> (7 - k)) & 0x0010)); + } + pLine[nLineBytes] = cVal; + } else { + pLine2 = pLine - nStride; + line2 = (h & 1) ? (*pLine2++) : 0; + CONTEXT = (line2 & 0x07f0); + for (cc = 0; cc < nLineBytes; cc++) { + if (h & 1) { + line2 = (line2 << 8) | (*pLine2++); + } + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = + (((CONTEXT & 0x7bf7) << 1) | bVal | ((line2 >> k) & 0x0010)); + } + pLine[cc] = cVal; + } + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | + (((line2 >> (7 - k))) & 0x0010)); + } + pLine[nLineBytes] = cVal; + } + } + pLine += nStride; + } + return GBREG.release(); +} + +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_unopt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + GBREG->fill(0); + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + line1 = GBREG->getPixel(1, h - 2); + line1 |= GBREG->getPixel(0, h - 2) << 1; + line2 = GBREG->getPixel(2, h - 1); + line2 |= GBREG->getPixel(1, h - 1) << 1; + line2 |= GBREG->getPixel(0, h - 1) << 2; + line3 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, h)) { + bVal = 0; + } else { + CONTEXT = line3; + CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 4; + CONTEXT |= line2 << 5; + CONTEXT |= GBREG->getPixel(w + GBAT[2], h + GBAT[3]) << 10; + CONTEXT |= GBREG->getPixel(w + GBAT[4], h + GBAT[5]) << 11; + CONTEXT |= line1 << 12; + CONTEXT |= GBREG->getPixel(w + GBAT[6], h + GBAT[7]) << 15; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + GBREG->setPixel(w, h, bVal); + } + line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; + line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; + line3 = ((line3 << 1) | bVal) & 0x0f; + } + } + } + return GBREG.release(); +} + +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_opt3( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + uint8_t *pLine, *pLine1, *pLine2, cVal; + int32_t nStride, nStride2, k; + int32_t nLineBytes, nBitsLeft, cc; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + if (!GBREG->m_pData) + return nullptr; + + pLine = GBREG->m_pData; + nStride = GBREG->m_nStride; + nStride2 = nStride << 1; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + if (h > 1) { + pLine1 = pLine - nStride2; + pLine2 = pLine - nStride; + line1 = (*pLine1++) << 4; + line2 = *pLine2++; + CONTEXT = (line1 & 0x1e00) | ((line2 >> 1) & 0x01f8); + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | ((*pLine1++) << 4); + line2 = (line2 << 8) | (*pLine2++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | + ((line1 >> k) & 0x0200) | ((line2 >> (k + 1)) & 0x0008); + } + pLine[cc] = cVal; + } + line1 <<= 8; + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | + ((line1 >> (7 - k)) & 0x0200) | + ((line2 >> (8 - k)) & 0x0008); + } + pLine[nLineBytes] = cVal; + } else { + pLine2 = pLine - nStride; + line2 = (h & 1) ? (*pLine2++) : 0; + CONTEXT = (line2 >> 1) & 0x01f8; + for (cc = 0; cc < nLineBytes; cc++) { + if (h & 1) { + line2 = (line2 << 8) | (*pLine2++); + } + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | + ((line2 >> (k + 1)) & 0x0008); + } + pLine[cc] = cVal; + } + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = + ((CONTEXT & 0x0efb) << 1) | bVal | ((line2 >> (8 - k)) & 0x0008); + } + pLine[nLineBytes] = cVal; + } + } + pLine += nStride; + } + return GBREG.release(); +} + +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_unopt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + GBREG->fill(0); + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + line1 = GBREG->getPixel(2, h - 2); + line1 |= GBREG->getPixel(1, h - 2) << 1; + line1 |= GBREG->getPixel(0, h - 2) << 2; + line2 = GBREG->getPixel(2, h - 1); + line2 |= GBREG->getPixel(1, h - 1) << 1; + line2 |= GBREG->getPixel(0, h - 1) << 2; + line3 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, h)) { + bVal = 0; + } else { + CONTEXT = line3; + CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 3; + CONTEXT |= line2 << 4; + CONTEXT |= line1 << 9; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + GBREG->setPixel(w, h, bVal); + } + line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x0f; + line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; + line3 = ((line3 << 1) | bVal) & 0x07; + } + } + } + return GBREG.release(); +} +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_opt3( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + uint8_t *pLine, *pLine1, *pLine2, cVal; + int32_t nStride, nStride2, k; + int32_t nLineBytes, nBitsLeft, cc; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + if (!GBREG->m_pData) + return nullptr; + + pLine = GBREG->m_pData; + nStride = GBREG->m_nStride; + nStride2 = nStride << 1; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + if (h > 1) { + pLine1 = pLine - nStride2; + pLine2 = pLine - nStride; + line1 = (*pLine1++) << 1; + line2 = *pLine2++; + CONTEXT = (line1 & 0x0380) | ((line2 >> 3) & 0x007c); + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | ((*pLine1++) << 1); + line2 = (line2 << 8) | (*pLine2++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + ((line1 >> k) & 0x0080) | ((line2 >> (k + 3)) & 0x0004); + } + pLine[cc] = cVal; + } + line1 <<= 8; + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + ((line1 >> (7 - k)) & 0x0080) | + ((line2 >> (10 - k)) & 0x0004); + } + pLine[nLineBytes] = cVal; + } else { + pLine2 = pLine - nStride; + line2 = (h & 1) ? (*pLine2++) : 0; + CONTEXT = (line2 >> 3) & 0x007c; + for (cc = 0; cc < nLineBytes; cc++) { + if (h & 1) { + line2 = (line2 << 8) | (*pLine2++); + } + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + ((line2 >> (k + 3)) & 0x0004); + } + pLine[cc] = cVal; + } + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + (((line2 >> (10 - k))) & 0x0004); + } + pLine[nLineBytes] = cVal; + } + } + pLine += nStride; + } + return GBREG.release(); +} + +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_unopt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + GBREG->fill(0); + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + line1 = GBREG->getPixel(1, h - 2); + line1 |= GBREG->getPixel(0, h - 2) << 1; + line2 = GBREG->getPixel(1, h - 1); + line2 |= GBREG->getPixel(0, h - 1) << 1; + line3 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, h)) { + bVal = 0; + } else { + CONTEXT = line3; + CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 2; + CONTEXT |= line2 << 3; + CONTEXT |= line1 << 7; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + GBREG->setPixel(w, h, bVal); + } + line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; + line2 = ((line2 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x0f; + line3 = ((line3 << 1) | bVal) & 0x03; + } + } + } + return GBREG.release(); +} + +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_opt3( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1; + uint8_t *pLine, *pLine1, cVal; + int32_t nStride, k; + int32_t nLineBytes, nBitsLeft, cc; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + if (!GBREG->m_pData) + return nullptr; + + pLine = GBREG->m_pData; + nStride = GBREG->m_nStride; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + if (h > 0) { + pLine1 = pLine - nStride; + line1 = *pLine1++; + CONTEXT = (line1 >> 1) & 0x03f0; + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | (*pLine1++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal | + ((line1 >> (k + 1)) & 0x0010); + } + pLine[cc] = cVal; + } + line1 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = + ((CONTEXT & 0x01f7) << 1) | bVal | ((line1 >> (8 - k)) & 0x0010); + } + pLine[nLineBytes] = cVal; + } else { + CONTEXT = 0; + for (cc = 0; cc < nLineBytes; cc++) { + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; + } + pLine[cc] = cVal; + } + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; + } + pLine[nLineBytes] = cVal; + } + } + pLine += nStride; + } + return GBREG.release(); +} + +CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_unopt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + LTP = 0; + std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); + GBREG->fill(0); + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + GBREG->copyLine(h, h - 1); + } else { + line1 = GBREG->getPixel(1, h - 1); + line1 |= GBREG->getPixel(0, h - 1) << 1; + line2 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, h)) { + bVal = 0; + } else { + CONTEXT = line2; + CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 4; + CONTEXT |= line1 << 5; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + GBREG->setPixel(w, h, bVal); + } + line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x1f; + line2 = ((line2 << 1) | bVal) & 0x0f; + } + } + } + return GBREG.release(); +} + +FXCODEC_STATUS CJBig2_GRDProc::Start_decode_Arith( + CJBig2_Image** pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + if (GBW == 0 || GBH == 0) { + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_READY; + m_pPause = pPause; + if (!*pImage) + *pImage = new CJBig2_Image(GBW, GBH); + if (!(*pImage)->m_pData) { + delete *pImage; + *pImage = nullptr; + m_ProssiveStatus = FXCODEC_STATUS_ERROR; + return FXCODEC_STATUS_ERROR; + } + m_DecodeType = 1; + m_pImage = pImage; + (*m_pImage)->fill(0); + m_pArithDecoder = pArithDecoder; + m_gbContext = gbContext; + LTP = 0; + m_pLine = nullptr; + m_loopIndex = 0; + return decode_Arith(pPause); +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith(IFX_Pause* pPause) { + int iline = m_loopIndex; + CJBig2_Image* pImage = *m_pImage; + if (GBTEMPLATE == 0) { + if (UseTemplate0Opt3()) { + m_ProssiveStatus = decode_Arith_Template0_opt3(pImage, m_pArithDecoder, + m_gbContext, pPause); + } else { + m_ProssiveStatus = decode_Arith_Template0_unopt(pImage, m_pArithDecoder, + m_gbContext, pPause); + } + } else if (GBTEMPLATE == 1) { + if (UseTemplate1Opt3()) { + m_ProssiveStatus = decode_Arith_Template1_opt3(pImage, m_pArithDecoder, + m_gbContext, pPause); + } else { + m_ProssiveStatus = decode_Arith_Template1_unopt(pImage, m_pArithDecoder, + m_gbContext, pPause); + } + } else if (GBTEMPLATE == 2) { + if (UseTemplate23Opt3()) { + m_ProssiveStatus = decode_Arith_Template2_opt3(pImage, m_pArithDecoder, + m_gbContext, pPause); + } else { + m_ProssiveStatus = decode_Arith_Template2_unopt(pImage, m_pArithDecoder, + m_gbContext, pPause); + } + } else { + if (UseTemplate23Opt3()) { + m_ProssiveStatus = decode_Arith_Template3_opt3(pImage, m_pArithDecoder, + m_gbContext, pPause); + } else { + m_ProssiveStatus = decode_Arith_Template3_unopt(pImage, m_pArithDecoder, + m_gbContext, pPause); + } + } + m_ReplaceRect.left = 0; + m_ReplaceRect.right = pImage->m_nWidth; + m_ReplaceRect.top = iline; + m_ReplaceRect.bottom = m_loopIndex; + if (m_ProssiveStatus == FXCODEC_STATUS_DECODE_FINISH) { + m_loopIndex = 0; + } + return m_ProssiveStatus; +} + +FXCODEC_STATUS CJBig2_GRDProc::Start_decode_MMR(CJBig2_Image** pImage, + CJBig2_BitStream* pStream, + IFX_Pause* pPause) { + int bitpos, i; + *pImage = new CJBig2_Image(GBW, GBH); + if (!(*pImage)->m_pData) { + delete (*pImage); + (*pImage) = nullptr; + m_ProssiveStatus = FXCODEC_STATUS_ERROR; + return m_ProssiveStatus; + } + bitpos = (int)pStream->getBitPos(); + FaxG4Decode(pStream->getBuf(), pStream->getLength(), &bitpos, + (*pImage)->m_pData, GBW, GBH, (*pImage)->m_nStride); + pStream->setBitPos(bitpos); + for (i = 0; (FX_DWORD)i < (*pImage)->m_nStride * GBH; i++) { + (*pImage)->m_pData[i] = ~(*pImage)->m_pData[i]; + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return m_ProssiveStatus; +} + +FXCODEC_STATUS CJBig2_GRDProc::Continue_decode(IFX_Pause* pPause) { + if (m_ProssiveStatus != FXCODEC_STATUS_DECODE_TOBECONTINUE) + return m_ProssiveStatus; + + if (m_DecodeType != 1) { + m_ProssiveStatus = FXCODEC_STATUS_ERROR; + return m_ProssiveStatus; + } + + return decode_Arith(pPause); +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_opt3( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + uint8_t *pLine1, *pLine2, cVal; + int32_t nStride, nStride2, k; + int32_t nLineBytes, nBitsLeft, cc; + if (!m_pLine) { + m_pLine = pImage->m_pData; + } + nStride = pImage->m_nStride; + nStride2 = nStride << 1; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + FX_DWORD height = GBH & 0x7fffffff; + for (; m_loopIndex < height; m_loopIndex++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(m_loopIndex, m_loopIndex - 1); + } else { + if (m_loopIndex > 1) { + pLine1 = m_pLine - nStride2; + pLine2 = m_pLine - nStride; + line1 = (*pLine1++) << 6; + line2 = *pLine2++; + CONTEXT = ((line1 & 0xf800) | (line2 & 0x07f0)); + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | ((*pLine1++) << 6); + line2 = (line2 << 8) | (*pLine2++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | + ((line1 >> k) & 0x0800) | ((line2 >> k) & 0x0010)); + } + m_pLine[cc] = cVal; + } + line1 <<= 8; + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = + (((CONTEXT & 0x7bf7) << 1) | bVal | + ((line1 >> (7 - k)) & 0x0800) | ((line2 >> (7 - k)) & 0x0010)); + } + m_pLine[nLineBytes] = cVal; + } else { + pLine2 = m_pLine - nStride; + line2 = (m_loopIndex & 1) ? (*pLine2++) : 0; + CONTEXT = (line2 & 0x07f0); + for (cc = 0; cc < nLineBytes; cc++) { + if (m_loopIndex & 1) { + line2 = (line2 << 8) | (*pLine2++); + } + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = + (((CONTEXT & 0x7bf7) << 1) | bVal | ((line2 >> k) & 0x0010)); + } + m_pLine[cc] = cVal; + } + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | + ((line2 >> (7 - k)) & 0x0010)); + } + m_pLine[nLineBytes] = cVal; + } + } + m_pLine += nStride; + if (pPause && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3; + for (; m_loopIndex < GBH; m_loopIndex++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(m_loopIndex, m_loopIndex - 1); + } else { + line1 = pImage->getPixel(1, m_loopIndex - 2); + line1 |= pImage->getPixel(0, m_loopIndex - 2) << 1; + line2 = pImage->getPixel(2, m_loopIndex - 1); + line2 |= pImage->getPixel(1, m_loopIndex - 1) << 1; + line2 |= pImage->getPixel(0, m_loopIndex - 1) << 2; + line3 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, m_loopIndex)) { + bVal = 0; + } else { + CONTEXT = line3; + CONTEXT |= pImage->getPixel(w + GBAT[0], m_loopIndex + GBAT[1]) << 4; + CONTEXT |= line2 << 5; + CONTEXT |= pImage->getPixel(w + GBAT[2], m_loopIndex + GBAT[3]) << 10; + CONTEXT |= pImage->getPixel(w + GBAT[4], m_loopIndex + GBAT[5]) << 11; + CONTEXT |= line1 << 12; + CONTEXT |= pImage->getPixel(w + GBAT[6], m_loopIndex + GBAT[7]) << 15; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + pImage->setPixel(w, m_loopIndex, bVal); + } + line1 = + ((line1 << 1) | pImage->getPixel(w + 2, m_loopIndex - 2)) & 0x07; + line2 = + ((line2 << 1) | pImage->getPixel(w + 3, m_loopIndex - 1)) & 0x1f; + line3 = ((line3 << 1) | bVal) & 0x0f; + } + } + if (pPause && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_opt3( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + uint8_t *pLine1, *pLine2, cVal; + int32_t nStride, nStride2, k; + int32_t nLineBytes, nBitsLeft, cc; + if (!m_pLine) { + m_pLine = pImage->m_pData; + } + nStride = pImage->m_nStride; + nStride2 = nStride << 1; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + for (; m_loopIndex < GBH; m_loopIndex++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(m_loopIndex, m_loopIndex - 1); + } else { + if (m_loopIndex > 1) { + pLine1 = m_pLine - nStride2; + pLine2 = m_pLine - nStride; + line1 = (*pLine1++) << 4; + line2 = *pLine2++; + CONTEXT = (line1 & 0x1e00) | ((line2 >> 1) & 0x01f8); + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | ((*pLine1++) << 4); + line2 = (line2 << 8) | (*pLine2++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | + ((line1 >> k) & 0x0200) | ((line2 >> (k + 1)) & 0x0008); + } + m_pLine[cc] = cVal; + } + line1 <<= 8; + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | + ((line1 >> (7 - k)) & 0x0200) | + ((line2 >> (8 - k)) & 0x0008); + } + m_pLine[nLineBytes] = cVal; + } else { + pLine2 = m_pLine - nStride; + line2 = (m_loopIndex & 1) ? (*pLine2++) : 0; + CONTEXT = (line2 >> 1) & 0x01f8; + for (cc = 0; cc < nLineBytes; cc++) { + if (m_loopIndex & 1) { + line2 = (line2 << 8) | (*pLine2++); + } + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | + ((line2 >> (k + 1)) & 0x0008); + } + m_pLine[cc] = cVal; + } + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = + ((CONTEXT & 0x0efb) << 1) | bVal | ((line2 >> (8 - k)) & 0x0008); + } + m_pLine[nLineBytes] = cVal; + } + } + m_pLine += nStride; + if (pPause && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3; + for (FX_DWORD h = 0; h < GBH; h++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(h, h - 1); + } else { + line1 = pImage->getPixel(2, h - 2); + line1 |= pImage->getPixel(1, h - 2) << 1; + line1 |= pImage->getPixel(0, h - 2) << 2; + line2 = pImage->getPixel(2, h - 1); + line2 |= pImage->getPixel(1, h - 1) << 1; + line2 |= pImage->getPixel(0, h - 1) << 2; + line3 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, h)) { + bVal = 0; + } else { + CONTEXT = line3; + CONTEXT |= pImage->getPixel(w + GBAT[0], h + GBAT[1]) << 3; + CONTEXT |= line2 << 4; + CONTEXT |= line1 << 9; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + pImage->setPixel(w, h, bVal); + } + line1 = ((line1 << 1) | pImage->getPixel(w + 3, h - 2)) & 0x0f; + line2 = ((line2 << 1) | pImage->getPixel(w + 3, h - 1)) & 0x1f; + line3 = ((line3 << 1) | bVal) & 0x07; + } + } + if (pPause && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_opt3( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + uint8_t *pLine1, *pLine2, cVal; + int32_t nStride, nStride2, k; + int32_t nLineBytes, nBitsLeft, cc; + if (!m_pLine) { + m_pLine = pImage->m_pData; + } + nStride = pImage->m_nStride; + nStride2 = nStride << 1; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + for (; m_loopIndex < GBH; m_loopIndex++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(m_loopIndex, m_loopIndex - 1); + } else { + if (m_loopIndex > 1) { + pLine1 = m_pLine - nStride2; + pLine2 = m_pLine - nStride; + line1 = (*pLine1++) << 1; + line2 = *pLine2++; + CONTEXT = (line1 & 0x0380) | ((line2 >> 3) & 0x007c); + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | ((*pLine1++) << 1); + line2 = (line2 << 8) | (*pLine2++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + ((line1 >> k) & 0x0080) | ((line2 >> (k + 3)) & 0x0004); + } + m_pLine[cc] = cVal; + } + line1 <<= 8; + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + ((line1 >> (7 - k)) & 0x0080) | + ((line2 >> (10 - k)) & 0x0004); + } + m_pLine[nLineBytes] = cVal; + } else { + pLine2 = m_pLine - nStride; + line2 = (m_loopIndex & 1) ? (*pLine2++) : 0; + CONTEXT = (line2 >> 3) & 0x007c; + for (cc = 0; cc < nLineBytes; cc++) { + if (m_loopIndex & 1) { + line2 = (line2 << 8) | (*pLine2++); + } + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + ((line2 >> (k + 3)) & 0x0004); + } + m_pLine[cc] = cVal; + } + line2 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | + (((line2 >> (10 - k))) & 0x0004); + } + m_pLine[nLineBytes] = cVal; + } + } + m_pLine += nStride; + if (pPause && m_loopIndex % 50 == 0 && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3; + for (; m_loopIndex < GBH; m_loopIndex++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(m_loopIndex, m_loopIndex - 1); + } else { + line1 = pImage->getPixel(1, m_loopIndex - 2); + line1 |= pImage->getPixel(0, m_loopIndex - 2) << 1; + line2 = pImage->getPixel(1, m_loopIndex - 1); + line2 |= pImage->getPixel(0, m_loopIndex - 1) << 1; + line3 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, m_loopIndex)) { + bVal = 0; + } else { + CONTEXT = line3; + CONTEXT |= pImage->getPixel(w + GBAT[0], m_loopIndex + GBAT[1]) << 2; + CONTEXT |= line2 << 3; + CONTEXT |= line1 << 7; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + pImage->setPixel(w, m_loopIndex, bVal); + } + line1 = + ((line1 << 1) | pImage->getPixel(w + 2, m_loopIndex - 2)) & 0x07; + line2 = + ((line2 << 1) | pImage->getPixel(w + 2, m_loopIndex - 1)) & 0x0f; + line3 = ((line3 << 1) | bVal) & 0x03; + } + } + if (pPause && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_opt3( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1; + uint8_t *pLine1, cVal; + int32_t nStride, k; + int32_t nLineBytes, nBitsLeft, cc; + if (!m_pLine) { + m_pLine = pImage->m_pData; + } + nStride = pImage->m_nStride; + nLineBytes = ((GBW + 7) >> 3) - 1; + nBitsLeft = GBW - (nLineBytes << 3); + for (; m_loopIndex < GBH; m_loopIndex++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(m_loopIndex, m_loopIndex - 1); + } else { + if (m_loopIndex > 0) { + pLine1 = m_pLine - nStride; + line1 = *pLine1++; + CONTEXT = (line1 >> 1) & 0x03f0; + for (cc = 0; cc < nLineBytes; cc++) { + line1 = (line1 << 8) | (*pLine1++); + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal | + ((line1 >> (k + 1)) & 0x0010); + } + m_pLine[cc] = cVal; + } + line1 <<= 8; + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = + ((CONTEXT & 0x01f7) << 1) | bVal | ((line1 >> (8 - k)) & 0x0010); + } + m_pLine[nLineBytes] = cVal; + } else { + CONTEXT = 0; + for (cc = 0; cc < nLineBytes; cc++) { + cVal = 0; + for (k = 7; k >= 0; k--) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << k; + CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; + } + m_pLine[cc] = cVal; + } + cVal = 0; + for (k = 0; k < nBitsLeft; k++) { + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; + } + m_pLine[nLineBytes] = cVal; + } + } + m_pLine += nStride; + if (pPause && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} + +FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_BOOL SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2; + for (; m_loopIndex < GBH; m_loopIndex++) { + if (TPGDON) { + SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); + LTP = LTP ^ SLTP; + } + if (LTP == 1) { + pImage->copyLine(m_loopIndex, m_loopIndex - 1); + } else { + line1 = pImage->getPixel(1, m_loopIndex - 1); + line1 |= pImage->getPixel(0, m_loopIndex - 1) << 1; + line2 = 0; + for (FX_DWORD w = 0; w < GBW; w++) { + if (USESKIP && SKIP->getPixel(w, m_loopIndex)) { + bVal = 0; + } else { + CONTEXT = line2; + CONTEXT |= pImage->getPixel(w + GBAT[0], m_loopIndex + GBAT[1]) << 4; + CONTEXT |= line1 << 5; + bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); + } + if (bVal) { + pImage->setPixel(w, m_loopIndex, bVal); + } + line1 = + ((line1 << 1) | pImage->getPixel(w + 2, m_loopIndex - 1)) & 0x1f; + line2 = ((line2 << 1) | bVal) & 0x0f; + } + } + if (pPause && pPause->NeedToPauseNow()) { + m_loopIndex++; + m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; + return FXCODEC_STATUS_DECODE_TOBECONTINUE; + } + } + m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; + return FXCODEC_STATUS_DECODE_FINISH; +} diff --git a/core/fxcodec/jbig2/JBig2_GrdProc.h b/core/fxcodec/jbig2/JBig2_GrdProc.h new file mode 100644 index 0000000000..2a181b1822 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_GrdProc.h @@ -0,0 +1,124 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_GRDPROC_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_GRDPROC_H_ + +#include "core/include/fxcodec/fx_codec_def.h" +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_ArithDecoder; +class CJBig2_BitStream; +class CJBig2_Image; +class IFX_Pause; +struct JBig2ArithCtx; + +class CJBig2_GRDProc { + public: + CJBig2_GRDProc(); + + CJBig2_Image* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + FXCODEC_STATUS Start_decode_Arith(CJBig2_Image** pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS Start_decode_MMR(CJBig2_Image** pImage, + CJBig2_BitStream* pStream, + IFX_Pause* pPause); + FXCODEC_STATUS Continue_decode(IFX_Pause* pPause); + FX_RECT GetReplaceRect() const { return m_ReplaceRect; } + + FX_BOOL MMR; + FX_DWORD GBW; + FX_DWORD GBH; + uint8_t GBTEMPLATE; + FX_BOOL TPGDON; + FX_BOOL USESKIP; + CJBig2_Image* SKIP; + int8_t GBAT[8]; + + private: + bool UseTemplate0Opt3() const; + bool UseTemplate1Opt3() const; + bool UseTemplate23Opt3() const; + + FXCODEC_STATUS decode_Arith(IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template0_opt3(CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template0_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template1_opt3(CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template1_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template2_opt3(CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template2_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template3_opt3(CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + FXCODEC_STATUS decode_Arith_Template3_unopt( + CJBig2_Image* pImage, + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + CJBig2_Image* decode_Arith_Template0_opt3(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + CJBig2_Image* decode_Arith_Template0_unopt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + CJBig2_Image* decode_Arith_Template1_opt3(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + CJBig2_Image* decode_Arith_Template1_unopt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + CJBig2_Image* decode_Arith_Template2_opt3(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + CJBig2_Image* decode_Arith_Template2_unopt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + CJBig2_Image* decode_Arith_Template3_opt3(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + CJBig2_Image* decode_Arith_Template3_unopt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext); + + FX_DWORD m_loopIndex; + uint8_t* m_pLine; + IFX_Pause* m_pPause; + FXCODEC_STATUS m_ProssiveStatus; + CJBig2_Image** m_pImage; + CJBig2_ArithDecoder* m_pArithDecoder; + JBig2ArithCtx* m_gbContext; + FX_WORD m_DecodeType; + FX_BOOL LTP; + FX_RECT m_ReplaceRect; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_GRDPROC_H_ diff --git a/core/fxcodec/jbig2/JBig2_GrrdProc.cpp b/core/fxcodec/jbig2/JBig2_GrrdProc.cpp new file mode 100644 index 0000000000..c6ff3dd647 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_GrrdProc.cpp @@ -0,0 +1,516 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_GrrdProc.h" + +#include + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" +#include "core/fxcodec/jbig2/JBig2_BitStream.h" +#include "core/fxcodec/jbig2/JBig2_Image.h" + +CJBig2_Image* CJBig2_GRRDProc::decode(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext) { + if (GRW == 0 || GRH == 0) + return new CJBig2_Image(GRW, GRH); + + if (GRTEMPLATE == 0) { + if ((GRAT[0] == -1) && (GRAT[1] == -1) && (GRAT[2] == -1) && + (GRAT[3] == -1) && (GRREFERENCEDX == 0) && + (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) { + return decode_Template0_opt(pArithDecoder, grContext); + } + return decode_Template0_unopt(pArithDecoder, grContext); + } + + if ((GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) + return decode_Template1_opt(pArithDecoder, grContext); + return decode_Template1_unopt(pArithDecoder, grContext); +} + +CJBig2_Image* CJBig2_GRRDProc::decode_Template0_unopt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3, line4, line5; + LTP = 0; + std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); + GRREG->fill(0); + for (FX_DWORD h = 0; h < GRH; h++) { + if (TPGRON) { + SLTP = pArithDecoder->DECODE(&grContext[0x0010]); + LTP = LTP ^ SLTP; + } + if (LTP == 0) { + line1 = GRREG->getPixel(1, h - 1); + line1 |= GRREG->getPixel(0, h - 1) << 1; + line2 = 0; + line3 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY - 1); + line3 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1) + << 1; + line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) + << 2; + line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); + line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) + << 1; + line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY + 1) + << 2; + for (FX_DWORD w = 0; w < GRW; w++) { + CONTEXT = line5; + CONTEXT |= line4 << 3; + CONTEXT |= line3 << 6; + CONTEXT |= GRREFERENCE->getPixel(w - GRREFERENCEDX + GRAT[2], + h - GRREFERENCEDY + GRAT[3]) + << 8; + CONTEXT |= line2 << 9; + CONTEXT |= line1 << 10; + CONTEXT |= GRREG->getPixel(w + GRAT[0], h + GRAT[1]) << 12; + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + GRREG->setPixel(w, h, bVal); + line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x03; + line2 = ((line2 << 1) | bVal) & 0x01; + line3 = ((line3 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, + h - GRREFERENCEDY - 1)) & + 0x03; + line4 = + ((line4 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & + 0x07; + line5 = ((line5 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, + h - GRREFERENCEDY + 1)) & + 0x07; + } + } else { + line1 = GRREG->getPixel(1, h - 1); + line1 |= GRREG->getPixel(0, h - 1) << 1; + line2 = 0; + line3 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY - 1); + line3 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1) + << 1; + line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) + << 2; + line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); + line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) + << 1; + line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY + 1) + << 2; + for (FX_DWORD w = 0; w < GRW; w++) { + bVal = GRREFERENCE->getPixel(w, h); + if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w - 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w - 1, h)) && + (bVal == GRREFERENCE->getPixel(w + 1, h)) && + (bVal == GRREFERENCE->getPixel(w - 1, h + 1)) && + (bVal == GRREFERENCE->getPixel(w, h + 1)) && + (bVal == GRREFERENCE->getPixel(w + 1, h + 1)))) { + CONTEXT = line5; + CONTEXT |= line4 << 3; + CONTEXT |= line3 << 6; + CONTEXT |= GRREFERENCE->getPixel(w - GRREFERENCEDX + GRAT[2], + h - GRREFERENCEDY + GRAT[3]) + << 8; + CONTEXT |= line2 << 9; + CONTEXT |= line1 << 10; + CONTEXT |= GRREG->getPixel(w + GRAT[0], h + GRAT[1]) << 12; + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + } + GRREG->setPixel(w, h, bVal); + line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x03; + line2 = ((line2 << 1) | bVal) & 0x01; + line3 = ((line3 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, + h - GRREFERENCEDY - 1)) & + 0x03; + line4 = + ((line4 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & + 0x07; + line5 = ((line5 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, + h - GRREFERENCEDY + 1)) & + 0x07; + } + } + } + return GRREG.release(); +} + +CJBig2_Image* CJBig2_GRRDProc::decode_Template0_opt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext) { + if (!GRREFERENCE->m_pData) + return nullptr; + + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line1_r, line2_r, line3_r; + uint8_t *pLine, *pLineR, cVal; + intptr_t nStride, nStrideR, nOffset; + int32_t k, nBits; + int32_t GRWR, GRHR; + int32_t GRW, GRH; + GRW = (int32_t)CJBig2_GRRDProc::GRW; + GRH = (int32_t)CJBig2_GRRDProc::GRH; + LTP = 0; + std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); + if (!GRREG->m_pData) + return nullptr; + + pLine = GRREG->m_pData; + pLineR = GRREFERENCE->m_pData; + nStride = GRREG->m_nStride; + nStrideR = GRREFERENCE->m_nStride; + GRWR = (int32_t)GRREFERENCE->m_nWidth; + GRHR = (int32_t)GRREFERENCE->m_nHeight; + if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { + GRREFERENCEDY = 0; + } + nOffset = -GRREFERENCEDY * nStrideR; + for (int32_t h = 0; h < GRH; h++) { + if (TPGRON) { + SLTP = pArithDecoder->DECODE(&grContext[0x0010]); + LTP = LTP ^ SLTP; + } + line1 = (h > 0) ? pLine[-nStride] << 4 : 0; + int32_t reference_h = h - GRREFERENCEDY; + FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); + FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); + FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); + line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; + line2_r = line2_r_ok ? pLineR[nOffset] : 0; + line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; + if (LTP == 0) { + CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) | + ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); + for (int32_t w = 0; w < GRW; w += 8) { + nBits = GRW - w > 8 ? 8 : GRW - w; + if (h > 0) + line1 = (line1 << 8) | + (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 : 0); + if (h > GRHR + GRREFERENCEDY + 1) { + line1_r = 0; + line2_r = 0; + line3_r = 0; + } else { + if (line1_r_ok) + line1_r = + (line1_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); + if (line2_r_ok) + line2_r = (line2_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); + if (line3_r_ok) { + line3_r = + (line3_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); + } else { + line3_r = 0; + } + } + cVal = 0; + for (k = 0; k < nBits; k++) { + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x0cdb) << 1) | (bVal << 9) | + ((line1 >> (7 - k)) & 0x0400) | + ((line1_r >> (7 - k)) & 0x0040) | + ((line2_r >> (10 - k)) & 0x0008) | + ((line3_r >> (13 - k)) & 0x0001); + } + pLine[w >> 3] = cVal; + } + } else { + CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) | + ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); + for (int32_t w = 0; w < GRW; w += 8) { + nBits = GRW - w > 8 ? 8 : GRW - w; + if (h > 0) + line1 = (line1 << 8) | + (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 : 0); + if (line1_r_ok) + line1_r = + (line1_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); + if (line2_r_ok) + line2_r = (line2_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); + if (line3_r_ok) { + line3_r = + (line3_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); + } else { + line3_r = 0; + } + cVal = 0; + for (k = 0; k < nBits; k++) { + bVal = GRREFERENCE->getPixel(w + k, h); + if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w + k - 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + k, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + k + 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + k - 1, h)) && + (bVal == GRREFERENCE->getPixel(w + k + 1, h)) && + (bVal == GRREFERENCE->getPixel(w + k - 1, h + 1)) && + (bVal == GRREFERENCE->getPixel(w + k, h + 1)) && + (bVal == GRREFERENCE->getPixel(w + k + 1, h + 1)))) { + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + } + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x0cdb) << 1) | (bVal << 9) | + ((line1 >> (7 - k)) & 0x0400) | + ((line1_r >> (7 - k)) & 0x0040) | + ((line2_r >> (10 - k)) & 0x0008) | + ((line3_r >> (13 - k)) & 0x0001); + } + pLine[w >> 3] = cVal; + } + } + pLine += nStride; + if (h < GRHR + GRREFERENCEDY) { + pLineR += nStrideR; + } + } + return GRREG.release(); +} + +CJBig2_Image* CJBig2_GRRDProc::decode_Template1_unopt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext) { + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line2, line3, line4, line5; + LTP = 0; + std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); + GRREG->fill(0); + for (FX_DWORD h = 0; h < GRH; h++) { + if (TPGRON) { + SLTP = pArithDecoder->DECODE(&grContext[0x0008]); + LTP = LTP ^ SLTP; + } + if (LTP == 0) { + line1 = GRREG->getPixel(1, h - 1); + line1 |= GRREG->getPixel(0, h - 1) << 1; + line1 |= GRREG->getPixel(-1, h - 1) << 2; + line2 = 0; + line3 = GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1); + line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) + << 2; + line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); + line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) + << 1; + for (FX_DWORD w = 0; w < GRW; w++) { + CONTEXT = line5; + CONTEXT |= line4 << 2; + CONTEXT |= line3 << 5; + CONTEXT |= line2 << 6; + CONTEXT |= line1 << 7; + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + GRREG->setPixel(w, h, bVal); + line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x07; + line2 = ((line2 << 1) | bVal) & 0x01; + line3 = ((line3 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 1, + h - GRREFERENCEDY - 1)) & + 0x01; + line4 = + ((line4 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & + 0x07; + line5 = ((line5 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, + h - GRREFERENCEDY + 1)) & + 0x03; + } + } else { + line1 = GRREG->getPixel(1, h - 1); + line1 |= GRREG->getPixel(0, h - 1) << 1; + line1 |= GRREG->getPixel(-1, h - 1) << 2; + line2 = 0; + line3 = GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1); + line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; + line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) + << 2; + line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); + line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) + << 1; + for (FX_DWORD w = 0; w < GRW; w++) { + bVal = GRREFERENCE->getPixel(w, h); + if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w - 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w - 1, h)) && + (bVal == GRREFERENCE->getPixel(w + 1, h)) && + (bVal == GRREFERENCE->getPixel(w - 1, h + 1)) && + (bVal == GRREFERENCE->getPixel(w, h + 1)) && + (bVal == GRREFERENCE->getPixel(w + 1, h + 1)))) { + CONTEXT = line5; + CONTEXT |= line4 << 2; + CONTEXT |= line3 << 5; + CONTEXT |= line2 << 6; + CONTEXT |= line1 << 7; + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + } + GRREG->setPixel(w, h, bVal); + line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x07; + line2 = ((line2 << 1) | bVal) & 0x01; + line3 = ((line3 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 1, + h - GRREFERENCEDY - 1)) & + 0x01; + line4 = + ((line4 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & + 0x07; + line5 = ((line5 << 1) | + GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, + h - GRREFERENCEDY + 1)) & + 0x03; + } + } + } + return GRREG.release(); +} + +CJBig2_Image* CJBig2_GRRDProc::decode_Template1_opt( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext) { + if (!GRREFERENCE->m_pData) + return nullptr; + + FX_BOOL LTP, SLTP, bVal; + FX_DWORD CONTEXT; + FX_DWORD line1, line1_r, line2_r, line3_r; + uint8_t *pLine, *pLineR, cVal; + intptr_t nStride, nStrideR, nOffset; + int32_t k, nBits; + int32_t GRWR, GRHR; + int32_t GRW, GRH; + GRW = (int32_t)CJBig2_GRRDProc::GRW; + GRH = (int32_t)CJBig2_GRRDProc::GRH; + LTP = 0; + std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); + if (!GRREG->m_pData) + return nullptr; + + pLine = GRREG->m_pData; + pLineR = GRREFERENCE->m_pData; + nStride = GRREG->m_nStride; + nStrideR = GRREFERENCE->m_nStride; + GRWR = (int32_t)GRREFERENCE->m_nWidth; + GRHR = (int32_t)GRREFERENCE->m_nHeight; + if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { + GRREFERENCEDY = 0; + } + nOffset = -GRREFERENCEDY * nStrideR; + for (int32_t h = 0; h < GRH; h++) { + if (TPGRON) { + SLTP = pArithDecoder->DECODE(&grContext[0x0008]); + LTP = LTP ^ SLTP; + } + line1 = (h > 0) ? pLine[-nStride] << 1 : 0; + int32_t reference_h = h - GRREFERENCEDY; + FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); + FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); + FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); + line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; + line2_r = line2_r_ok ? pLineR[nOffset] : 0; + line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; + if (LTP == 0) { + CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) | + ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); + for (int32_t w = 0; w < GRW; w += 8) { + nBits = GRW - w > 8 ? 8 : GRW - w; + if (h > 0) + line1 = (line1 << 8) | + (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 : 0); + if (line1_r_ok) + line1_r = + (line1_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); + if (line2_r_ok) + line2_r = (line2_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); + if (line3_r_ok) { + line3_r = + (line3_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); + } else { + line3_r = 0; + } + cVal = 0; + for (k = 0; k < nBits; k++) { + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x018d) << 1) | (bVal << 6) | + ((line1 >> (7 - k)) & 0x0080) | + ((line1_r >> (9 - k)) & 0x0020) | + ((line2_r >> (11 - k)) & 0x0004) | + ((line3_r >> (13 - k)) & 0x0001); + } + pLine[w >> 3] = cVal; + } + } else { + CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) | + ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); + for (int32_t w = 0; w < GRW; w += 8) { + nBits = GRW - w > 8 ? 8 : GRW - w; + if (h > 0) + line1 = (line1 << 8) | + (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 : 0); + if (line1_r_ok) + line1_r = + (line1_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); + if (line2_r_ok) + line2_r = (line2_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); + if (line3_r_ok) { + line3_r = + (line3_r << 8) | + (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); + } else { + line3_r = 0; + } + cVal = 0; + for (k = 0; k < nBits; k++) { + bVal = GRREFERENCE->getPixel(w + k, h); + if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w + k - 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + k, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + k + 1, h - 1)) && + (bVal == GRREFERENCE->getPixel(w + k - 1, h)) && + (bVal == GRREFERENCE->getPixel(w + k + 1, h)) && + (bVal == GRREFERENCE->getPixel(w + k - 1, h + 1)) && + (bVal == GRREFERENCE->getPixel(w + k, h + 1)) && + (bVal == GRREFERENCE->getPixel(w + k + 1, h + 1)))) { + bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); + } + cVal |= bVal << (7 - k); + CONTEXT = ((CONTEXT & 0x018d) << 1) | (bVal << 6) | + ((line1 >> (7 - k)) & 0x0080) | + ((line1_r >> (9 - k)) & 0x0020) | + ((line2_r >> (11 - k)) & 0x0004) | + ((line3_r >> (13 - k)) & 0x0001); + } + pLine[w >> 3] = cVal; + } + } + pLine += nStride; + if (h < GRHR + GRREFERENCEDY) { + pLineR += nStrideR; + } + } + return GRREG.release(); +} diff --git a/core/fxcodec/jbig2/JBig2_GrrdProc.h b/core/fxcodec/jbig2/JBig2_GrrdProc.h new file mode 100644 index 0000000000..36cfdcae3c --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_GrrdProc.h @@ -0,0 +1,43 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_GRRDPROC_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_GRRDPROC_H_ + +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_ArithDecoder; +class CJBig2_Image; +struct JBig2ArithCtx; + +class CJBig2_GRRDProc { + public: + CJBig2_Image* decode(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext); + + CJBig2_Image* decode_Template0_unopt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext); + + CJBig2_Image* decode_Template0_opt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext); + + CJBig2_Image* decode_Template1_unopt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext); + + CJBig2_Image* decode_Template1_opt(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext); + + FX_DWORD GRW; + FX_DWORD GRH; + FX_BOOL GRTEMPLATE; + CJBig2_Image* GRREFERENCE; + int32_t GRREFERENCEDX; + int32_t GRREFERENCEDY; + FX_BOOL TPGRON; + int8_t GRAT[4]; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_GRRDPROC_H_ diff --git a/core/fxcodec/jbig2/JBig2_GsidProc.cpp b/core/fxcodec/jbig2/JBig2_GsidProc.cpp new file mode 100644 index 0000000000..92532d7238 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_GsidProc.cpp @@ -0,0 +1,123 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_GsidProc.h" + +#include + +#include "core/fxcodec/jbig2/JBig2_BitStream.h" +#include "core/fxcodec/jbig2/JBig2_GrdProc.h" +#include "core/fxcodec/jbig2/JBig2_Image.h" +#include "core/fxcodec/jbig2/JBig2_List.h" +#include "core/include/fxcrt/fx_basic.h" + +FX_DWORD* CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + std::unique_ptr pGRD(new CJBig2_GRDProc()); + pGRD->MMR = GSMMR; + pGRD->GBW = GSW; + pGRD->GBH = GSH; + pGRD->GBTEMPLATE = GSTEMPLATE; + pGRD->TPGDON = 0; + pGRD->USESKIP = GSUSESKIP; + pGRD->SKIP = GSKIP; + if (GSTEMPLATE <= 1) { + pGRD->GBAT[0] = 3; + } else { + pGRD->GBAT[0] = 2; + } + pGRD->GBAT[1] = -1; + if (pGRD->GBTEMPLATE == 0) { + pGRD->GBAT[2] = -3; + pGRD->GBAT[3] = -1; + pGRD->GBAT[4] = 2; + pGRD->GBAT[5] = -2; + pGRD->GBAT[6] = -2; + pGRD->GBAT[7] = -2; + } + + CJBig2_List GSPLANES(GSBPP); + for (int32_t i = GSBPP - 1; i >= 0; --i) { + CJBig2_Image* pImage = nullptr; + FXCODEC_STATUS status = + pGRD->Start_decode_Arith(&pImage, pArithDecoder, gbContext, nullptr); + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) + pGRD->Continue_decode(pPause); + + if (!pImage) + return nullptr; + + GSPLANES.set(i, pImage); + + if (i < GSBPP - 1) + pImage->composeFrom(0, 0, GSPLANES.get(i + 1), JBIG2_COMPOSE_XOR); + } + std::unique_ptr GSVALS( + FX_Alloc2D(FX_DWORD, GSW, GSH)); + JBIG2_memset(GSVALS.get(), 0, sizeof(FX_DWORD) * GSW * GSH); + for (FX_DWORD y = 0; y < GSH; ++y) { + for (FX_DWORD x = 0; x < GSW; ++x) { + for (int32_t i = 0; i < GSBPP; ++i) { + GSVALS.get()[y * GSW + x] |= GSPLANES.get(i)->getPixel(x, y) << i; + } + } + } + return GSVALS.release(); +} + +FX_DWORD* CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream* pStream, + IFX_Pause* pPause) { + std::unique_ptr pGRD(new CJBig2_GRDProc()); + pGRD->MMR = GSMMR; + pGRD->GBW = GSW; + pGRD->GBH = GSH; + + std::unique_ptr GSPLANES(FX_Alloc(CJBig2_Image*, GSBPP)); + JBIG2_memset(GSPLANES.get(), 0, sizeof(CJBig2_Image*) * GSBPP); + FXCODEC_STATUS status = + pGRD->Start_decode_MMR(&GSPLANES.get()[GSBPP - 1], pStream, nullptr); + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + pGRD->Continue_decode(pPause); + } + if (!GSPLANES.get()[GSBPP - 1]) + return nullptr; + + pStream->alignByte(); + pStream->offset(3); + int32_t J = GSBPP - 2; + while (J >= 0) { + FXCODEC_STATUS status = + pGRD->Start_decode_MMR(&GSPLANES.get()[J], pStream, nullptr); + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + pGRD->Continue_decode(pPause); + } + if (!GSPLANES.get()[J]) { + for (int32_t K = GSBPP - 1; K > J; --K) { + delete GSPLANES.get()[K]; + return nullptr; + } + } + pStream->alignByte(); + pStream->offset(3); + GSPLANES.get()[J]->composeFrom(0, 0, GSPLANES.get()[J + 1], + JBIG2_COMPOSE_XOR); + J = J - 1; + } + std::unique_ptr GSVALS(FX_Alloc2D(FX_DWORD, GSW, GSH)); + JBIG2_memset(GSVALS.get(), 0, sizeof(FX_DWORD) * GSW * GSH); + for (FX_DWORD y = 0; y < GSH; ++y) { + for (FX_DWORD x = 0; x < GSW; ++x) { + for (J = 0; J < GSBPP; ++J) { + GSVALS.get()[y * GSW + x] |= GSPLANES.get()[J]->getPixel(x, y) << J; + } + } + } + for (J = 0; J < GSBPP; ++J) { + delete GSPLANES.get()[J]; + } + return GSVALS.release(); +} diff --git a/core/fxcodec/jbig2/JBig2_GsidProc.h b/core/fxcodec/jbig2/JBig2_GsidProc.h new file mode 100644 index 0000000000..50c24eaa60 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_GsidProc.h @@ -0,0 +1,36 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_GSIDPROC_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_GSIDPROC_H_ + +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_ArithDecoder; +class CJBig2_BitStream; +class CJBig2_Image; +class IFX_Pause; +struct JBig2ArithCtx; + +class CJBig2_GSIDProc { + public: + FX_DWORD* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + + FX_DWORD* decode_MMR(CJBig2_BitStream* pStream, IFX_Pause* pPause); + + public: + FX_BOOL GSMMR; + FX_BOOL GSUSESKIP; + uint8_t GSBPP; + FX_DWORD GSW; + FX_DWORD GSH; + uint8_t GSTEMPLATE; + CJBig2_Image* GSKIP; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_GSIDPROC_H_ diff --git a/core/fxcodec/jbig2/JBig2_HtrdProc.cpp b/core/fxcodec/jbig2/JBig2_HtrdProc.cpp new file mode 100644 index 0000000000..daee067d74 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_HtrdProc.cpp @@ -0,0 +1,104 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_HtrdProc.h" + +#include + +#include "core/fxcodec/jbig2/JBig2_GsidProc.h" +#include "core/include/fxcrt/fx_basic.h" + +CJBig2_Image* CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_DWORD ng, mg; + int32_t x, y; + FX_DWORD HBPP; + FX_DWORD* GI; + std::unique_ptr HSKIP; + std::unique_ptr HTREG(new CJBig2_Image(HBW, HBH)); + HTREG->fill(HDEFPIXEL); + if (HENABLESKIP == 1) { + HSKIP.reset(new CJBig2_Image(HGW, HGH)); + for (mg = 0; mg < HGH; mg++) { + for (ng = 0; ng < HGW; ng++) { + x = (HGX + mg * HRY + ng * HRX) >> 8; + y = (HGY + mg * HRX - ng * HRY) >> 8; + if ((x + HPW <= 0) | (x >= (int32_t)HBW) | (y + HPH <= 0) | + (y >= (int32_t)HPH)) { + HSKIP->setPixel(ng, mg, 1); + } else { + HSKIP->setPixel(ng, mg, 0); + } + } + } + } + HBPP = 1; + while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { + HBPP++; + } + std::unique_ptr pGID(new CJBig2_GSIDProc()); + pGID->GSMMR = HMMR; + pGID->GSW = HGW; + pGID->GSH = HGH; + pGID->GSBPP = (uint8_t)HBPP; + pGID->GSUSESKIP = HENABLESKIP; + pGID->GSKIP = HSKIP.get(); + pGID->GSTEMPLATE = HTEMPLATE; + GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause); + if (!GI) + return nullptr; + + for (mg = 0; mg < HGH; mg++) { + for (ng = 0; ng < HGW; ng++) { + x = (HGX + mg * HRY + ng * HRX) >> 8; + y = (HGY + mg * HRX - ng * HRY) >> 8; + FX_DWORD pat_index = GI[mg * HGW + ng]; + if (pat_index >= HNUMPATS) { + pat_index = HNUMPATS - 1; + } + HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); + } + } + FX_Free(GI); + return HTREG.release(); +} + +CJBig2_Image* CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream* pStream, + IFX_Pause* pPause) { + FX_DWORD ng, mg; + int32_t x, y; + FX_DWORD* GI; + std::unique_ptr HTREG(new CJBig2_Image(HBW, HBH)); + HTREG->fill(HDEFPIXEL); + FX_DWORD HBPP = 1; + while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { + HBPP++; + } + std::unique_ptr pGID(new CJBig2_GSIDProc()); + pGID->GSMMR = HMMR; + pGID->GSW = HGW; + pGID->GSH = HGH; + pGID->GSBPP = (uint8_t)HBPP; + pGID->GSUSESKIP = 0; + GI = pGID->decode_MMR(pStream, pPause); + if (!GI) + return nullptr; + + for (mg = 0; mg < HGH; mg++) { + for (ng = 0; ng < HGW; ng++) { + x = (HGX + mg * HRY + ng * HRX) >> 8; + y = (HGY + mg * HRX - ng * HRY) >> 8; + FX_DWORD pat_index = GI[mg * HGW + ng]; + if (pat_index >= HNUMPATS) { + pat_index = HNUMPATS - 1; + } + HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); + } + } + FX_Free(GI); + return HTREG.release(); +} diff --git a/core/fxcodec/jbig2/JBig2_HtrdProc.h b/core/fxcodec/jbig2/JBig2_HtrdProc.h new file mode 100644 index 0000000000..583145b5ca --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_HtrdProc.h @@ -0,0 +1,46 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_HTRDPROC_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_HTRDPROC_H_ + +#include "core/fxcodec/jbig2/JBig2_Image.h" +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_ArithDecoder; +class CJBig2_BitStream; +class IFX_Pause; +struct JBig2ArithCtx; + +class CJBig2_HTRDProc { + public: + CJBig2_Image* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + + CJBig2_Image* decode_MMR(CJBig2_BitStream* pStream, IFX_Pause* pPause); + + public: + FX_DWORD HBW; + FX_DWORD HBH; + FX_BOOL HMMR; + uint8_t HTEMPLATE; + FX_DWORD HNUMPATS; + CJBig2_Image** HPATS; + FX_BOOL HDEFPIXEL; + JBig2ComposeOp HCOMBOP; + FX_BOOL HENABLESKIP; + FX_DWORD HGW; + FX_DWORD HGH; + int32_t HGX; + int32_t HGY; + FX_WORD HRX; + FX_WORD HRY; + uint8_t HPW; + uint8_t HPH; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_HTRDPROC_H_ diff --git a/core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp b/core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp new file mode 100644 index 0000000000..afcc17a55e --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp @@ -0,0 +1,45 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_HuffmanDecoder.h" + +#include "core/fxcodec/jbig2/JBig2_Define.h" + +CJBig2_HuffmanDecoder::CJBig2_HuffmanDecoder(CJBig2_BitStream* pStream) + : m_pStream(pStream) {} + +CJBig2_HuffmanDecoder::~CJBig2_HuffmanDecoder() {} + +int CJBig2_HuffmanDecoder::decodeAValue(CJBig2_HuffmanTable* pTable, + int* nResult) { + int nVal = 0; + int nBits = 0; + while (1) { + FX_DWORD nTmp; + if (m_pStream->read1Bit(&nTmp) == -1) + break; + + nVal = (nVal << 1) | nTmp; + ++nBits; + for (FX_DWORD i = 0; i < pTable->Size(); ++i) { + if (pTable->GetPREFLEN()[i] == nBits && pTable->GetCODES()[i] == nVal) { + if (pTable->IsHTOOB() && i == pTable->Size() - 1) + return JBIG2_OOB; + + if (m_pStream->readNBits(pTable->GetRANGELEN()[i], &nTmp) == -1) + return -1; + + FX_DWORD offset = pTable->IsHTOOB() ? 3 : 2; + if (i == pTable->Size() - offset) + *nResult = pTable->GetRANGELOW()[i] - nTmp; + else + *nResult = pTable->GetRANGELOW()[i] + nTmp; + return 0; + } + } + } + return -1; +} diff --git a/core/fxcodec/jbig2/JBig2_HuffmanDecoder.h b/core/fxcodec/jbig2/JBig2_HuffmanDecoder.h new file mode 100644 index 0000000000..c72346ac18 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_HuffmanDecoder.h @@ -0,0 +1,24 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_HUFFMANDECODER_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_HUFFMANDECODER_H_ + +#include "core/fxcodec/jbig2/JBig2_BitStream.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanTable.h" +class CJBig2_HuffmanDecoder { + public: + explicit CJBig2_HuffmanDecoder(CJBig2_BitStream* pStream); + + ~CJBig2_HuffmanDecoder(); + + int decodeAValue(CJBig2_HuffmanTable* pTable, int* nResult); + + private: + CJBig2_BitStream* const m_pStream; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_HUFFMANDECODER_H_ diff --git a/core/fxcodec/jbig2/JBig2_HuffmanTable.cpp b/core/fxcodec/jbig2/JBig2_HuffmanTable.cpp new file mode 100644 index 0000000000..f4a838eb24 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_HuffmanTable.cpp @@ -0,0 +1,136 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_HuffmanTable.h" + +#include +#include + +#include "core/fxcodec/jbig2/JBig2_BitStream.h" +#include "core/fxcodec/jbig2/JBig2_Define.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h" +#include "core/include/fxcrt/fx_memory.h" + +CJBig2_HuffmanTable::CJBig2_HuffmanTable(const JBig2TableLine* pTable, + FX_DWORD nLines, + bool bHTOOB) + : m_bOK(true), HTOOB(bHTOOB), NTEMP(nLines) { + ParseFromStandardTable(pTable); +} + +CJBig2_HuffmanTable::CJBig2_HuffmanTable(CJBig2_BitStream* pStream) + : HTOOB(false), NTEMP(0) { + m_bOK = ParseFromCodedBuffer(pStream); +} + +CJBig2_HuffmanTable::~CJBig2_HuffmanTable() {} + +void CJBig2_HuffmanTable::ParseFromStandardTable(const JBig2TableLine* pTable) { + PREFLEN.resize(NTEMP); + RANGELEN.resize(NTEMP); + RANGELOW.resize(NTEMP); + for (FX_DWORD i = 0; i < NTEMP; ++i) { + PREFLEN[i] = pTable[i].PREFLEN; + RANGELEN[i] = pTable[i].RANDELEN; + RANGELOW[i] = pTable[i].RANGELOW; + } + InitCodes(); +} + +bool CJBig2_HuffmanTable::ParseFromCodedBuffer(CJBig2_BitStream* pStream) { + unsigned char cTemp; + if (pStream->read1Byte(&cTemp) == -1) + return false; + + HTOOB = !!(cTemp & 0x01); + unsigned char HTPS = ((cTemp >> 1) & 0x07) + 1; + unsigned char HTRS = ((cTemp >> 4) & 0x07) + 1; + FX_DWORD HTLOW; + FX_DWORD HTHIGH; + if (pStream->readInteger(&HTLOW) == -1 || + pStream->readInteger(&HTHIGH) == -1) { + return false; + } + + const int low = static_cast(HTLOW); + const int high = static_cast(HTHIGH); + if (low > high) + return false; + + ExtendBuffers(false); + int cur_low = low; + do { + if ((pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) || + (pStream->readNBits(HTRS, &RANGELEN[NTEMP]) == -1)) { + return false; + } + RANGELOW[NTEMP] = cur_low; + cur_low += (1 << RANGELEN[NTEMP]); + ExtendBuffers(true); + } while (cur_low < high); + + if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) + return false; + + RANGELEN[NTEMP] = 32; + RANGELOW[NTEMP] = low - 1; + ExtendBuffers(true); + + if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) + return false; + + RANGELEN[NTEMP] = 32; + RANGELOW[NTEMP] = high; + ExtendBuffers(true); + + if (HTOOB) { + if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) + return false; + + ++NTEMP; + } + + InitCodes(); + return true; +} + +void CJBig2_HuffmanTable::InitCodes() { + int lenmax = 0; + for (FX_DWORD i = 0; i < NTEMP; ++i) + lenmax = std::max(PREFLEN[i], lenmax); + + CODES.resize(NTEMP); + std::vector LENCOUNT(lenmax + 1); + std::vector FIRSTCODE(lenmax + 1); + for (int len : PREFLEN) + ++LENCOUNT[len]; + + FIRSTCODE[0] = 0; + LENCOUNT[0] = 0; + for (int i = 1; i <= lenmax; ++i) { + FIRSTCODE[i] = (FIRSTCODE[i - 1] + LENCOUNT[i - 1]) << 1; + int CURCODE = FIRSTCODE[i]; + for (FX_DWORD j = 0; j < NTEMP; ++j) { + if (PREFLEN[j] == i) + CODES[j] = CURCODE++; + } + } +} + +void CJBig2_HuffmanTable::ExtendBuffers(bool increment) { + if (increment) + ++NTEMP; + + size_t size = PREFLEN.size(); + if (NTEMP < size) + return; + + size += 16; + ASSERT(NTEMP < size); + PREFLEN.resize(size); + RANGELEN.resize(size); + RANGELOW.resize(size); +} diff --git a/core/fxcodec/jbig2/JBig2_HuffmanTable.h b/core/fxcodec/jbig2/JBig2_HuffmanTable.h new file mode 100644 index 0000000000..892c19e9d6 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_HuffmanTable.h @@ -0,0 +1,50 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_H_ + +#include + +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_BitStream; +struct JBig2TableLine; + +class CJBig2_HuffmanTable { + public: + CJBig2_HuffmanTable(const JBig2TableLine* pTable, + FX_DWORD nLines, + bool bHTOOB); + + explicit CJBig2_HuffmanTable(CJBig2_BitStream* pStream); + + ~CJBig2_HuffmanTable(); + + bool IsHTOOB() const { return HTOOB; } + FX_DWORD Size() const { return NTEMP; } + const std::vector& GetCODES() const { return CODES; } + const std::vector& GetPREFLEN() const { return PREFLEN; } + const std::vector& GetRANGELEN() const { return RANGELEN; } + const std::vector& GetRANGELOW() const { return RANGELOW; } + bool IsOK() const { return m_bOK; } + + private: + void ParseFromStandardTable(const JBig2TableLine* pTable); + bool ParseFromCodedBuffer(CJBig2_BitStream* pStream); + void InitCodes(); + void ExtendBuffers(bool increment); + + bool m_bOK; + bool HTOOB; + FX_DWORD NTEMP; + std::vector CODES; + std::vector PREFLEN; + std::vector RANGELEN; + std::vector RANGELOW; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_H_ diff --git a/core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h b/core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h new file mode 100644 index 0000000000..0b768654f5 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h @@ -0,0 +1,98 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_STANDARD_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_STANDARD_H_ + +#include "core/include/fxcrt/fx_system.h" + +struct JBig2TableLine { + int PREFLEN; + int RANDELEN; + int RANGELOW; +}; + +const bool HuffmanTable_HTOOB_B1 = false; +const JBig2TableLine HuffmanTable_B1[] = {{1, 4, 0}, + {2, 8, 16}, + {3, 16, 272}, + {0, 32, -1}, + {3, 32, 65808}}; +const bool HuffmanTable_HTOOB_B2 = true; +const JBig2TableLine HuffmanTable_B2[] = {{1, 0, 0}, {2, 0, 1}, {3, 0, 2}, + {4, 3, 3}, {5, 6, 11}, {0, 32, -1}, + {6, 32, 75}, {6, 0, 0}}; +const bool HuffmanTable_HTOOB_B3 = true; +const JBig2TableLine HuffmanTable_B3[] = { + {8, 8, -256}, {1, 0, 0}, {2, 0, 1}, {3, 0, 2}, {4, 3, 3}, + {5, 6, 11}, {8, 32, -257}, {7, 32, 75}, {6, 0, 0}}; +const bool HuffmanTable_HTOOB_B4 = false; +const JBig2TableLine HuffmanTable_B4[] = { + {1, 0, 1}, {2, 0, 2}, {3, 0, 3}, {4, 3, 4}, + {5, 6, 12}, {0, 32, -1}, {5, 32, 76}, +}; +const bool HuffmanTable_HTOOB_B5 = false; +const JBig2TableLine HuffmanTable_B5[] = {{7, 8, -255}, {1, 0, 1}, {2, 0, 2}, + {3, 0, 3}, {4, 3, 4}, {5, 6, 12}, + {7, 32, -256}, {6, 32, 76}}; +const bool HuffmanTable_HTOOB_B6 = false; +const JBig2TableLine HuffmanTable_B6[] = { + {5, 10, -2048}, {4, 9, -1024}, {4, 8, -512}, {4, 7, -256}, {5, 6, -128}, + {5, 5, -64}, {4, 5, -32}, {2, 7, 0}, {3, 7, 128}, {3, 8, 256}, + {4, 9, 512}, {4, 10, 1024}, {6, 32, -2049}, {6, 32, 2048}}; +const bool HuffmanTable_HTOOB_B7 = false; +const JBig2TableLine HuffmanTable_B7[] = { + {4, 9, -1024}, {3, 8, -512}, {4, 7, -256}, {5, 6, -128}, {5, 5, -64}, + {4, 5, -32}, {4, 5, 0}, {5, 5, 32}, {5, 6, 64}, {4, 7, 128}, + {3, 8, 256}, {3, 9, 512}, {3, 10, 1024}, {5, 32, -1025}, {5, 32, 2048}, +}; +const bool HuffmanTable_HTOOB_B8 = true; +const JBig2TableLine HuffmanTable_B8[] = { + {8, 3, -15}, {9, 1, -7}, {8, 1, -5}, {9, 0, -3}, {7, 0, -2}, + {4, 0, -1}, {2, 1, 0}, {5, 0, 2}, {6, 0, 3}, {3, 4, 4}, + {6, 1, 20}, {4, 4, 22}, {4, 5, 38}, {5, 6, 70}, {5, 7, 134}, + {6, 7, 262}, {7, 8, 390}, {6, 10, 646}, {9, 32, -16}, {9, 32, 1670}, + {2, 0, 0}}; +const bool HuffmanTable_HTOOB_B9 = true; +const JBig2TableLine HuffmanTable_B9[] = { + {8, 4, -31}, {9, 2, -15}, {8, 2, -11}, {9, 1, -7}, {7, 1, -5}, + {4, 1, -3}, {3, 1, -1}, {3, 1, 1}, {5, 1, 3}, {6, 1, 5}, + {3, 5, 7}, {6, 2, 39}, {4, 5, 43}, {4, 6, 75}, {5, 7, 139}, + {5, 8, 267}, {6, 8, 523}, {7, 9, 779}, {6, 11, 1291}, {9, 32, -32}, + {9, 32, 3339}, {2, 0, 0}}; +const bool HuffmanTable_HTOOB_B10 = true; +const JBig2TableLine HuffmanTable_B10[] = { + {7, 4, -21}, {8, 0, -5}, {7, 0, -4}, {5, 0, -3}, {2, 2, -2}, + {5, 0, 2}, {6, 0, 3}, {7, 0, 4}, {8, 0, 5}, {2, 6, 6}, + {5, 5, 70}, {6, 5, 102}, {6, 6, 134}, {6, 7, 198}, {6, 8, 326}, + {6, 9, 582}, {6, 10, 1094}, {7, 11, 2118}, {8, 32, -22}, {8, 32, 4166}, + {2, 0, 0}}; +const bool HuffmanTable_HTOOB_B11 = false; +const JBig2TableLine HuffmanTable_B11[] = { + {1, 0, 1}, {2, 1, 2}, {4, 0, 4}, {4, 1, 5}, {5, 1, 7}, + {5, 2, 9}, {6, 2, 13}, {7, 2, 17}, {7, 3, 21}, {7, 4, 29}, + {7, 5, 45}, {7, 6, 77}, {0, 32, 0}, {7, 32, 141}}; +const bool HuffmanTable_HTOOB_B12 = false; +const JBig2TableLine HuffmanTable_B12[] = { + {1, 0, 1}, {2, 0, 2}, {3, 1, 3}, {5, 0, 5}, {5, 1, 6}, + {6, 1, 8}, {7, 0, 10}, {7, 1, 11}, {7, 2, 13}, {7, 3, 17}, + {7, 4, 25}, {8, 5, 41}, {0, 32, 0}, {8, 32, 73}}; +const bool HuffmanTable_HTOOB_B13 = false; +const JBig2TableLine HuffmanTable_B13[] = { + {1, 0, 1}, {3, 0, 2}, {4, 0, 3}, {5, 0, 4}, {4, 1, 5}, + {3, 3, 7}, {6, 1, 15}, {6, 2, 17}, {6, 3, 21}, {6, 4, 29}, + {6, 5, 45}, {7, 6, 77}, {0, 32, 0}, {7, 32, 141}}; +const bool HuffmanTable_HTOOB_B14 = false; +const JBig2TableLine HuffmanTable_B14[] = {{3, 0, -2}, {3, 0, -1}, {1, 0, 0}, + {3, 0, 1}, {3, 0, 2}, {0, 32, -3}, + {0, 32, 3}}; +const bool HuffmanTable_HTOOB_B15 = false; +const JBig2TableLine HuffmanTable_B15[] = { + {7, 4, -24}, {6, 2, -8}, {5, 1, -4}, {4, 0, -2}, {3, 0, -1}, + {1, 0, 0}, {3, 0, 1}, {4, 0, 2}, {5, 1, 3}, {6, 2, 5}, + {7, 4, 9}, {7, 32, -25}, {7, 32, 25}}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_STANDARD_H_ diff --git a/core/fxcodec/jbig2/JBig2_Image.cpp b/core/fxcodec/jbig2/JBig2_Image.cpp new file mode 100644 index 0000000000..311c38270e --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Image.cpp @@ -0,0 +1,1099 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fxcodec/jbig2/JBig2_Image.h" +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxcrt/fx_safe_types.h" + +CJBig2_Image::CJBig2_Image(int32_t w, int32_t h) { + m_nWidth = w; + m_nHeight = h; + if (m_nWidth <= 0 || m_nHeight <= 0 || m_nWidth > INT_MAX - 31) { + m_pData = NULL; + m_bNeedFree = FALSE; + return; + } + m_nStride = ((w + 31) >> 5) << 2; + if (m_nStride * m_nHeight > 0 && 104857600 / (int)m_nStride > m_nHeight) { + m_pData = FX_Alloc2D(uint8_t, m_nStride, m_nHeight); + } else { + m_pData = NULL; + } + m_bNeedFree = TRUE; +} +CJBig2_Image::CJBig2_Image(int32_t w, + int32_t h, + int32_t stride, + uint8_t* pBuf) { + m_nWidth = w; + m_nHeight = h; + m_nStride = stride; + m_pData = pBuf; + m_bNeedFree = FALSE; +} +CJBig2_Image::CJBig2_Image(const CJBig2_Image& im) { + m_nWidth = im.m_nWidth; + m_nHeight = im.m_nHeight; + m_nStride = im.m_nStride; + if (im.m_pData) { + m_pData = FX_Alloc2D(uint8_t, m_nStride, m_nHeight); + JBIG2_memcpy(m_pData, im.m_pData, m_nStride * m_nHeight); + } else { + m_pData = NULL; + } + m_bNeedFree = TRUE; +} +CJBig2_Image::~CJBig2_Image() { + if (m_bNeedFree) { + FX_Free(m_pData); + } +} +FX_BOOL CJBig2_Image::getPixel(int32_t x, int32_t y) { + if (!m_pData) { + return 0; + } + int32_t m, n; + if (x < 0 || x >= m_nWidth) { + return 0; + } + if (y < 0 || y >= m_nHeight) { + return 0; + } + m = y * m_nStride + (x >> 3); + n = x & 7; + return ((m_pData[m] >> (7 - n)) & 1); +} + +int32_t CJBig2_Image::setPixel(int32_t x, int32_t y, FX_BOOL v) { + if (!m_pData) { + return 0; + } + int32_t m, n; + if (x < 0 || x >= m_nWidth) { + return 0; + } + if (y < 0 || y >= m_nHeight) { + return 0; + } + m = y * m_nStride + (x >> 3); + n = x & 7; + if (v) { + m_pData[m] |= 1 << (7 - n); + } else { + m_pData[m] &= ~(1 << (7 - n)); + } + return 1; +} +void CJBig2_Image::copyLine(int32_t hTo, int32_t hFrom) { + if (!m_pData) { + return; + } + if (hFrom < 0 || hFrom >= m_nHeight) { + JBIG2_memset(m_pData + hTo * m_nStride, 0, m_nStride); + } else { + JBIG2_memcpy(m_pData + hTo * m_nStride, m_pData + hFrom * m_nStride, + m_nStride); + } +} +void CJBig2_Image::fill(FX_BOOL v) { + if (!m_pData) { + return; + } + JBIG2_memset(m_pData, v ? 0xff : 0, m_nStride * m_nHeight); +} +FX_BOOL CJBig2_Image::composeTo(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op) { + if (!m_pData) { + return FALSE; + } + return composeTo_opt2(pDst, x, y, op); +} +FX_BOOL CJBig2_Image::composeTo(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op, + const FX_RECT* pSrcRect) { + if (!m_pData) { + return FALSE; + } + if (NULL == pSrcRect || *pSrcRect == FX_RECT(0, 0, m_nWidth, m_nHeight)) { + return composeTo_opt2(pDst, x, y, op); + } + return composeTo_opt2(pDst, x, y, op, pSrcRect); +} + +FX_BOOL CJBig2_Image::composeFrom(int32_t x, + int32_t y, + CJBig2_Image* pSrc, + JBig2ComposeOp op) { + if (!m_pData) { + return FALSE; + } + return pSrc->composeTo(this, x, y, op); +} +FX_BOOL CJBig2_Image::composeFrom(int32_t x, + int32_t y, + CJBig2_Image* pSrc, + JBig2ComposeOp op, + const FX_RECT* pSrcRect) { + if (!m_pData) { + return FALSE; + } + return pSrc->composeTo(this, x, y, op, pSrcRect); +} +#define JBIG2_GETDWORD(buf) \ + ((FX_DWORD)(((buf)[0] << 24) | ((buf)[1] << 16) | ((buf)[2] << 8) | (buf)[3])) +CJBig2_Image* CJBig2_Image::subImage(int32_t x, + int32_t y, + int32_t w, + int32_t h) { + int32_t m, n, j; + uint8_t *pLineSrc, *pLineDst; + FX_DWORD wTmp; + uint8_t *pSrc, *pSrcEnd, *pDst, *pDstEnd; + if (w == 0 || h == 0) { + return NULL; + } + CJBig2_Image* pImage = new CJBig2_Image(w, h); + if (!m_pData) { + pImage->fill(0); + return pImage; + } + if (!pImage->m_pData) { + return pImage; + } + pLineSrc = m_pData + m_nStride * y; + pLineDst = pImage->m_pData; + m = (x >> 5) << 2; + n = x & 31; + if (n == 0) { + for (j = 0; j < h; j++) { + pSrc = pLineSrc + m; + pSrcEnd = pLineSrc + m_nStride; + pDst = pLineDst; + pDstEnd = pLineDst + pImage->m_nStride; + for (; pDst < pDstEnd; pSrc += 4, pDst += 4) { + *((FX_DWORD*)pDst) = *((FX_DWORD*)pSrc); + } + pLineSrc += m_nStride; + pLineDst += pImage->m_nStride; + } + } else { + for (j = 0; j < h; j++) { + pSrc = pLineSrc + m; + pSrcEnd = pLineSrc + m_nStride; + pDst = pLineDst; + pDstEnd = pLineDst + pImage->m_nStride; + for (; pDst < pDstEnd; pSrc += 4, pDst += 4) { + if (pSrc + 4 < pSrcEnd) { + wTmp = (JBIG2_GETDWORD(pSrc) << n) | + (JBIG2_GETDWORD(pSrc + 4) >> (32 - n)); + } else { + wTmp = JBIG2_GETDWORD(pSrc) << n; + } + pDst[0] = (uint8_t)(wTmp >> 24); + pDst[1] = (uint8_t)(wTmp >> 16); + pDst[2] = (uint8_t)(wTmp >> 8); + pDst[3] = (uint8_t)wTmp; + } + pLineSrc += m_nStride; + pLineDst += pImage->m_nStride; + } + } + return pImage; +} +void CJBig2_Image::expand(int32_t h, FX_BOOL v) { + if (!m_pData || h <= m_nHeight) { + return; + } + FX_DWORD dwH = pdfium::base::checked_cast(h); + FX_DWORD dwStride = pdfium::base::checked_cast(m_nStride); + FX_DWORD dwHeight = pdfium::base::checked_cast(m_nHeight); + FX_SAFE_DWORD safeMemSize = dwH; + safeMemSize *= dwStride; + if (!safeMemSize.IsValid()) { + return; + } + // The guaranteed reallocated memory is to be < 4GB (unsigned int). + m_pData = FX_Realloc(uint8_t, m_pData, safeMemSize.ValueOrDie()); + + // The result of dwHeight * dwStride doesn't overflow after the + // checking of safeMemSize. + // The same as the result of (dwH - dwHeight) * dwStride) because + // dwH - dwHeight is always less than dwH(h) which is checked in + // the calculation of dwH * dwStride. + JBIG2_memset(m_pData + dwHeight * dwStride, v ? 0xff : 0, + (dwH - dwHeight) * dwStride); + m_nHeight = h; +} +FX_BOOL CJBig2_Image::composeTo_opt2(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op) { + int32_t xs0 = 0, ys0 = 0, xs1 = 0, ys1 = 0, xd0 = 0, yd0 = 0, xd1 = 0, + yd1 = 0, xx = 0, yy = 0, w = 0, h = 0, middleDwords = 0, lineLeft = 0; + + FX_DWORD s1 = 0, d1 = 0, d2 = 0, shift = 0, shift1 = 0, shift2 = 0, tmp = 0, + tmp1 = 0, tmp2 = 0, maskL = 0, maskR = 0, maskM = 0; + + uint8_t *lineSrc = NULL, *lineDst = NULL, *sp = NULL, *dp = NULL; + + if (!m_pData) { + return FALSE; + } + if (x < -1048576 || x > 1048576 || y < -1048576 || y > 1048576) { + return FALSE; + } + if (y < 0) { + ys0 = -y; + } + if (y + m_nHeight > pDst->m_nHeight) { + ys1 = pDst->m_nHeight - y; + } else { + ys1 = m_nHeight; + } + if (x < 0) { + xs0 = -x; + } + if (x + m_nWidth > pDst->m_nWidth) { + xs1 = pDst->m_nWidth - x; + } else { + xs1 = m_nWidth; + } + if ((ys0 >= ys1) || (xs0 >= xs1)) { + return 0; + } + w = xs1 - xs0; + h = ys1 - ys0; + if (y >= 0) { + yd0 = y; + } + if (x >= 0) { + xd0 = x; + } + xd1 = xd0 + w; + yd1 = yd0 + h; + d1 = xd0 & 31; + d2 = xd1 & 31; + s1 = xs0 & 31; + maskL = 0xffffffff >> d1; + maskR = 0xffffffff << ((32 - (xd1 & 31)) % 32); + maskM = maskL & maskR; + lineSrc = m_pData + ys0 * m_nStride + ((xs0 >> 5) << 2); + lineLeft = m_nStride - ((xs0 >> 5) << 2); + lineDst = pDst->m_pData + yd0 * pDst->m_nStride + ((xd0 >> 5) << 2); + if ((xd0 & ~31) == ((xd1 - 1) & ~31)) { + if ((xs0 & ~31) == ((xs1 - 1) & ~31)) { + if (s1 > d1) { + shift = s1 - d1; + for (yy = yd0; yy < yd1; yy++) { + tmp1 = JBIG2_GETDWORD(lineSrc) << shift; + tmp2 = JBIG2_GETDWORD(lineDst); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskM) | (tmp1 & maskM); + break; + } + lineDst[0] = (uint8_t)(tmp >> 24); + lineDst[1] = (uint8_t)(tmp >> 16); + lineDst[2] = (uint8_t)(tmp >> 8); + lineDst[3] = (uint8_t)tmp; + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } else { + shift = d1 - s1; + for (yy = yd0; yy < yd1; yy++) { + tmp1 = JBIG2_GETDWORD(lineSrc) >> shift; + tmp2 = JBIG2_GETDWORD(lineDst); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskM) | (tmp1 & maskM); + break; + } + lineDst[0] = (uint8_t)(tmp >> 24); + lineDst[1] = (uint8_t)(tmp >> 16); + lineDst[2] = (uint8_t)(tmp >> 8); + lineDst[3] = (uint8_t)tmp; + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } + } else { + shift1 = s1 - d1; + shift2 = 32 - shift1; + for (yy = yd0; yy < yd1; yy++) { + tmp1 = (JBIG2_GETDWORD(lineSrc) << shift1) | + (JBIG2_GETDWORD(lineSrc + 4) >> shift2); + tmp2 = JBIG2_GETDWORD(lineDst); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskM) | (tmp1 & maskM); + break; + } + lineDst[0] = (uint8_t)(tmp >> 24); + lineDst[1] = (uint8_t)(tmp >> 16); + lineDst[2] = (uint8_t)(tmp >> 8); + lineDst[3] = (uint8_t)tmp; + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } + } else { + if (s1 > d1) { + shift1 = s1 - d1; + shift2 = 32 - shift1; + middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); + for (yy = yd0; yy < yd1; yy++) { + sp = lineSrc; + dp = lineDst; + if (d1 != 0) { + tmp1 = (JBIG2_GETDWORD(sp) << shift1) | + (JBIG2_GETDWORD(sp + 4) >> shift2); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskL) | (tmp1 & maskL); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + for (xx = 0; xx < middleDwords; xx++) { + tmp1 = (JBIG2_GETDWORD(sp) << shift1) | + (JBIG2_GETDWORD(sp + 4) >> shift2); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = tmp1 | tmp2; + break; + case JBIG2_COMPOSE_AND: + tmp = tmp1 & tmp2; + break; + case JBIG2_COMPOSE_XOR: + tmp = tmp1 ^ tmp2; + break; + case JBIG2_COMPOSE_XNOR: + tmp = ~(tmp1 ^ tmp2); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = tmp1; + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + if (d2 != 0) { + tmp1 = + (JBIG2_GETDWORD(sp) << shift1) | + (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> + shift2); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskR) | (tmp1 & maskR); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + } + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } else if (s1 == d1) { + middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); + for (yy = yd0; yy < yd1; yy++) { + sp = lineSrc; + dp = lineDst; + if (d1 != 0) { + tmp1 = JBIG2_GETDWORD(sp); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskL) | (tmp1 & maskL); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + for (xx = 0; xx < middleDwords; xx++) { + tmp1 = JBIG2_GETDWORD(sp); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = tmp1 | tmp2; + break; + case JBIG2_COMPOSE_AND: + tmp = tmp1 & tmp2; + break; + case JBIG2_COMPOSE_XOR: + tmp = tmp1 ^ tmp2; + break; + case JBIG2_COMPOSE_XNOR: + tmp = ~(tmp1 ^ tmp2); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = tmp1; + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + if (d2 != 0) { + tmp1 = JBIG2_GETDWORD(sp); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskR) | (tmp1 & maskR); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + } + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } else { + shift1 = d1 - s1; + shift2 = 32 - shift1; + middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); + for (yy = yd0; yy < yd1; yy++) { + sp = lineSrc; + dp = lineDst; + if (d1 != 0) { + tmp1 = JBIG2_GETDWORD(sp) >> shift1; + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskL) | (tmp1 & maskL); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + dp += 4; + } + for (xx = 0; xx < middleDwords; xx++) { + tmp1 = (JBIG2_GETDWORD(sp) << shift2) | + ((JBIG2_GETDWORD(sp + 4)) >> shift1); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = tmp1 | tmp2; + break; + case JBIG2_COMPOSE_AND: + tmp = tmp1 & tmp2; + break; + case JBIG2_COMPOSE_XOR: + tmp = tmp1 ^ tmp2; + break; + case JBIG2_COMPOSE_XNOR: + tmp = ~(tmp1 ^ tmp2); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = tmp1; + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + if (d2 != 0) { + tmp1 = + (JBIG2_GETDWORD(sp) << shift2) | + (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> + shift1); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskR) | (tmp1 & maskR); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + } + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } + } + return 1; +} +FX_BOOL CJBig2_Image::composeTo_opt2(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op, + const FX_RECT* pSrcRect) { + int32_t xs0, ys0, xs1, ys1, xd0, yd0, xd1, yd1, xx, yy, w, h, middleDwords, + lineLeft; + FX_DWORD s1, d1, d2, shift, shift1, shift2, tmp, tmp1, tmp2, maskL, maskR, + maskM; + uint8_t *lineSrc, *lineDst, *sp, *dp; + int32_t sw, sh; + if (!m_pData) { + return FALSE; + } + if (x < -1048576 || x > 1048576 || y < -1048576 || y > 1048576) { + return FALSE; + } + sw = pSrcRect->Width(); + sh = pSrcRect->Height(); + if (y < 0) { + ys0 = -y; + } else { + ys0 = 0; + } + if (y + sh > pDst->m_nHeight) { + ys1 = pDst->m_nHeight - y; + } else { + ys1 = sh; + } + if (x < 0) { + xs0 = -x; + } else { + xs0 = 0; + } + if (x + sw > pDst->m_nWidth) { + xs1 = pDst->m_nWidth - x; + } else { + xs1 = sw; + } + if ((ys0 >= ys1) || (xs0 >= xs1)) { + return 0; + } + w = xs1 - xs0; + h = ys1 - ys0; + if (y < 0) { + yd0 = 0; + } else { + yd0 = y; + } + if (x < 0) { + xd0 = 0; + } else { + xd0 = x; + } + xd1 = xd0 + w; + yd1 = yd0 + h; + d1 = xd0 & 31; + d2 = xd1 & 31; + s1 = xs0 & 31; + maskL = 0xffffffff >> d1; + maskR = 0xffffffff << ((32 - (xd1 & 31)) % 32); + maskM = maskL & maskR; + lineSrc = m_pData + (pSrcRect->top + ys0) * m_nStride + + (((xs0 + pSrcRect->left) >> 5) << 2); + lineLeft = m_nStride - ((xs0 >> 5) << 2); + lineDst = pDst->m_pData + yd0 * pDst->m_nStride + ((xd0 >> 5) << 2); + if ((xd0 & ~31) == ((xd1 - 1) & ~31)) { + if ((xs0 & ~31) == ((xs1 - 1) & ~31)) { + if (s1 > d1) { + shift = s1 - d1; + for (yy = yd0; yy < yd1; yy++) { + tmp1 = JBIG2_GETDWORD(lineSrc) << shift; + tmp2 = JBIG2_GETDWORD(lineDst); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskM) | (tmp1 & maskM); + break; + } + lineDst[0] = (uint8_t)(tmp >> 24); + lineDst[1] = (uint8_t)(tmp >> 16); + lineDst[2] = (uint8_t)(tmp >> 8); + lineDst[3] = (uint8_t)tmp; + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } else { + shift = d1 - s1; + for (yy = yd0; yy < yd1; yy++) { + tmp1 = JBIG2_GETDWORD(lineSrc) >> shift; + tmp2 = JBIG2_GETDWORD(lineDst); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskM) | (tmp1 & maskM); + break; + } + lineDst[0] = (uint8_t)(tmp >> 24); + lineDst[1] = (uint8_t)(tmp >> 16); + lineDst[2] = (uint8_t)(tmp >> 8); + lineDst[3] = (uint8_t)tmp; + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } + } else { + shift1 = s1 - d1; + shift2 = 32 - shift1; + for (yy = yd0; yy < yd1; yy++) { + tmp1 = (JBIG2_GETDWORD(lineSrc) << shift1) | + (JBIG2_GETDWORD(lineSrc + 4) >> shift2); + tmp2 = JBIG2_GETDWORD(lineDst); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskM) | (tmp1 & maskM); + break; + } + lineDst[0] = (uint8_t)(tmp >> 24); + lineDst[1] = (uint8_t)(tmp >> 16); + lineDst[2] = (uint8_t)(tmp >> 8); + lineDst[3] = (uint8_t)tmp; + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } + } else { + if (s1 > d1) { + shift1 = s1 - d1; + shift2 = 32 - shift1; + middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); + for (yy = yd0; yy < yd1; yy++) { + sp = lineSrc; + dp = lineDst; + if (d1 != 0) { + tmp1 = (JBIG2_GETDWORD(sp) << shift1) | + (JBIG2_GETDWORD(sp + 4) >> shift2); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskL) | (tmp1 & maskL); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + for (xx = 0; xx < middleDwords; xx++) { + tmp1 = (JBIG2_GETDWORD(sp) << shift1) | + (JBIG2_GETDWORD(sp + 4) >> shift2); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = tmp1 | tmp2; + break; + case JBIG2_COMPOSE_AND: + tmp = tmp1 & tmp2; + break; + case JBIG2_COMPOSE_XOR: + tmp = tmp1 ^ tmp2; + break; + case JBIG2_COMPOSE_XNOR: + tmp = ~(tmp1 ^ tmp2); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = tmp1; + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + if (d2 != 0) { + tmp1 = + (JBIG2_GETDWORD(sp) << shift1) | + (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> + shift2); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskR) | (tmp1 & maskR); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + } + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } else if (s1 == d1) { + middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); + for (yy = yd0; yy < yd1; yy++) { + sp = lineSrc; + dp = lineDst; + if (d1 != 0) { + tmp1 = JBIG2_GETDWORD(sp); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskL) | (tmp1 & maskL); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + for (xx = 0; xx < middleDwords; xx++) { + tmp1 = JBIG2_GETDWORD(sp); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = tmp1 | tmp2; + break; + case JBIG2_COMPOSE_AND: + tmp = tmp1 & tmp2; + break; + case JBIG2_COMPOSE_XOR: + tmp = tmp1 ^ tmp2; + break; + case JBIG2_COMPOSE_XNOR: + tmp = ~(tmp1 ^ tmp2); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = tmp1; + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + if (d2 != 0) { + tmp1 = JBIG2_GETDWORD(sp); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskR) | (tmp1 & maskR); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + } + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } else { + shift1 = d1 - s1; + shift2 = 32 - shift1; + middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); + for (yy = yd0; yy < yd1; yy++) { + sp = lineSrc; + dp = lineDst; + if (d1 != 0) { + tmp1 = JBIG2_GETDWORD(sp) >> shift1; + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskL) | (tmp1 & maskL); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + dp += 4; + } + for (xx = 0; xx < middleDwords; xx++) { + tmp1 = (JBIG2_GETDWORD(sp) << shift2) | + ((JBIG2_GETDWORD(sp + 4)) >> shift1); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = tmp1 | tmp2; + break; + case JBIG2_COMPOSE_AND: + tmp = tmp1 & tmp2; + break; + case JBIG2_COMPOSE_XOR: + tmp = tmp1 ^ tmp2; + break; + case JBIG2_COMPOSE_XNOR: + tmp = ~(tmp1 ^ tmp2); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = tmp1; + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + sp += 4; + dp += 4; + } + if (d2 != 0) { + tmp1 = + (JBIG2_GETDWORD(sp) << shift2) | + (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> + shift1); + tmp2 = JBIG2_GETDWORD(dp); + switch (op) { + case JBIG2_COMPOSE_OR: + tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); + break; + case JBIG2_COMPOSE_AND: + tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); + break; + case JBIG2_COMPOSE_XOR: + tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); + break; + case JBIG2_COMPOSE_XNOR: + tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); + break; + case JBIG2_COMPOSE_REPLACE: + tmp = (tmp2 & ~maskR) | (tmp1 & maskR); + break; + } + dp[0] = (uint8_t)(tmp >> 24); + dp[1] = (uint8_t)(tmp >> 16); + dp[2] = (uint8_t)(tmp >> 8); + dp[3] = (uint8_t)tmp; + } + lineSrc += m_nStride; + lineDst += pDst->m_nStride; + } + } + } + return 1; +} diff --git a/core/fxcodec/jbig2/JBig2_Image.h b/core/fxcodec/jbig2/JBig2_Image.h new file mode 100644 index 0000000000..a18a95d596 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Image.h @@ -0,0 +1,85 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_IMAGE_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_IMAGE_H_ + +#include "core/fxcodec/jbig2/JBig2_Define.h" + +enum JBig2ComposeOp { + JBIG2_COMPOSE_OR = 0, + JBIG2_COMPOSE_AND = 1, + JBIG2_COMPOSE_XOR = 2, + JBIG2_COMPOSE_XNOR = 3, + JBIG2_COMPOSE_REPLACE = 4 +}; + +struct FX_RECT; +class CJBig2_Image { + public: + CJBig2_Image(int32_t w, int32_t h); + + CJBig2_Image(int32_t w, int32_t h, int32_t stride, uint8_t* pBuf); + + CJBig2_Image(const CJBig2_Image& im); + + ~CJBig2_Image(); + + FX_BOOL getPixel(int32_t x, int32_t y); + + int32_t setPixel(int32_t x, int32_t y, FX_BOOL v); + + void copyLine(int32_t hTo, int32_t hFrom); + + void fill(FX_BOOL v); + + FX_BOOL composeTo(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op); + FX_BOOL composeTo(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op, + const FX_RECT* pSrcRect); + + FX_BOOL composeTo_opt2(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op); + FX_BOOL composeTo_opt2(CJBig2_Image* pDst, + int32_t x, + int32_t y, + JBig2ComposeOp op, + const FX_RECT* pSrcRect); + + FX_BOOL composeFrom(int32_t x, + int32_t y, + CJBig2_Image* pSrc, + JBig2ComposeOp op); + FX_BOOL composeFrom(int32_t x, + int32_t y, + CJBig2_Image* pSrc, + JBig2ComposeOp op, + const FX_RECT* pSrcRect); + + CJBig2_Image* subImage(int32_t x, int32_t y, int32_t w, int32_t h); + + void expand(int32_t h, FX_BOOL v); + + public: + int32_t m_nWidth; + + int32_t m_nHeight; + + int32_t m_nStride; + + uint8_t* m_pData; + + FX_BOOL m_bNeedFree; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_IMAGE_H_ diff --git a/core/fxcodec/jbig2/JBig2_List.h b/core/fxcodec/jbig2/JBig2_List.h new file mode 100644 index 0000000000..b021ac3375 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_List.h @@ -0,0 +1,54 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_LIST_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_LIST_H_ + +#include + +#include + +// A poor man's ScopedVector for pointers of TYPE. +// Owns all the pointers contained within and deletes them on destruction. +template +class CJBig2_List { + public: + CJBig2_List() {} + explicit CJBig2_List(size_t count) { resize(count); } + + ~CJBig2_List() { clear(); } + + TYPE* get(size_t index) const { return m_vector[index]; } + TYPE* back() const { return m_vector.back(); } + size_t size() const { return m_vector.size(); } + + // Deletes all the pointers contained within. + void clear() { + for (size_t i = 0; i < m_vector.size(); ++i) + delete m_vector[i]; + m_vector.clear(); + } + + // Takes ownership of |pItem|. + void push_back(TYPE* pItem) { m_vector.push_back(pItem); } + + // Takes ownership of |pItem|. + void set(size_t index, TYPE* pItem) { + delete m_vector[index]; + m_vector[index] = pItem; + } + + void resize(size_t count) { + for (size_t i = count; i < size(); ++i) + delete m_vector[i]; + m_vector.resize(count); + } + + private: + std::vector m_vector; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_LIST_H_ diff --git a/core/fxcodec/jbig2/JBig2_Page.h b/core/fxcodec/jbig2/JBig2_Page.h new file mode 100644 index 0000000000..b3e09d8ae0 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Page.h @@ -0,0 +1,22 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_PAGE_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_PAGE_H_ + +#include "core/include/fxcrt/fx_system.h" + +struct JBig2PageInfo { + FX_DWORD m_dwWidth; + FX_DWORD m_dwHeight; + FX_DWORD m_dwResolutionX; + FX_DWORD m_dwResolutionY; + uint8_t m_cFlags; + FX_BOOL m_bIsStriped; + FX_WORD m_wMaxStripeSize; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_PAGE_H_ diff --git a/core/fxcodec/jbig2/JBig2_PatternDict.cpp b/core/fxcodec/jbig2/JBig2_PatternDict.cpp new file mode 100644 index 0000000000..58157ef13a --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_PatternDict.cpp @@ -0,0 +1,23 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_PatternDict.h" + +#include "core/include/fxcrt/fx_memory.h" + +CJBig2_PatternDict::CJBig2_PatternDict() { + NUMPATS = 0; + HDPATS = NULL; +} + +CJBig2_PatternDict::~CJBig2_PatternDict() { + if (HDPATS) { + for (FX_DWORD i = 0; i < NUMPATS; i++) { + delete HDPATS[i]; + } + FX_Free(HDPATS); + } +} diff --git a/core/fxcodec/jbig2/JBig2_PatternDict.h b/core/fxcodec/jbig2/JBig2_PatternDict.h new file mode 100644 index 0000000000..3196fcaaf3 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_PatternDict.h @@ -0,0 +1,23 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_PATTERNDICT_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_PATTERNDICT_H_ + +#include "core/fxcodec/jbig2/JBig2_Define.h" +#include "core/fxcodec/jbig2/JBig2_Image.h" + +class CJBig2_PatternDict { + public: + CJBig2_PatternDict(); + + ~CJBig2_PatternDict(); + + FX_DWORD NUMPATS; + CJBig2_Image** HDPATS; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_PATTERNDICT_H_ diff --git a/core/fxcodec/jbig2/JBig2_PddProc.cpp b/core/fxcodec/jbig2/JBig2_PddProc.cpp new file mode 100644 index 0000000000..5b67aadb57 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_PddProc.cpp @@ -0,0 +1,87 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_PddProc.h" + +#include + +#include "core/fxcodec/jbig2/JBig2_GrdProc.h" +#include "core/fxcodec/jbig2/JBig2_Image.h" +#include "core/fxcodec/jbig2/JBig2_PatternDict.h" + +CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith( + CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause) { + FX_DWORD GRAY; + CJBig2_Image* BHDC = nullptr; + std::unique_ptr pDict(new CJBig2_PatternDict()); + pDict->NUMPATS = GRAYMAX + 1; + pDict->HDPATS = FX_Alloc(CJBig2_Image*, pDict->NUMPATS); + JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); + + std::unique_ptr pGRD(new CJBig2_GRDProc()); + pGRD->MMR = HDMMR; + pGRD->GBW = (GRAYMAX + 1) * HDPW; + pGRD->GBH = HDPH; + pGRD->GBTEMPLATE = HDTEMPLATE; + pGRD->TPGDON = 0; + pGRD->USESKIP = 0; + pGRD->GBAT[0] = -(int32_t)HDPW; + pGRD->GBAT[1] = 0; + if (pGRD->GBTEMPLATE == 0) { + pGRD->GBAT[2] = -3; + pGRD->GBAT[3] = -1; + pGRD->GBAT[4] = 2; + pGRD->GBAT[5] = -2; + pGRD->GBAT[6] = -2; + pGRD->GBAT[7] = -2; + } + FXCODEC_STATUS status = + pGRD->Start_decode_Arith(&BHDC, pArithDecoder, gbContext, nullptr); + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + pGRD->Continue_decode(pPause); + } + if (!BHDC) + return nullptr; + + GRAY = 0; + while (GRAY <= GRAYMAX) { + pDict->HDPATS[GRAY] = BHDC->subImage(HDPW * GRAY, 0, HDPW, HDPH); + GRAY = GRAY + 1; + } + delete BHDC; + return pDict.release(); +} + +CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream, + IFX_Pause* pPause) { + FX_DWORD GRAY; + CJBig2_Image* BHDC = nullptr; + std::unique_ptr pDict(new CJBig2_PatternDict()); + pDict->NUMPATS = GRAYMAX + 1; + pDict->HDPATS = FX_Alloc(CJBig2_Image*, pDict->NUMPATS); + JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); + + std::unique_ptr pGRD(new CJBig2_GRDProc()); + pGRD->MMR = HDMMR; + pGRD->GBW = (GRAYMAX + 1) * HDPW; + pGRD->GBH = HDPH; + FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream, nullptr); + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + pGRD->Continue_decode(pPause); + } + if (!BHDC) + return nullptr; + + GRAY = 0; + while (GRAY <= GRAYMAX) { + pDict->HDPATS[GRAY] = BHDC->subImage(HDPW * GRAY, 0, HDPW, HDPH); + GRAY = GRAY + 1; + } + delete BHDC; + return pDict.release(); +} diff --git a/core/fxcodec/jbig2/JBig2_PddProc.h b/core/fxcodec/jbig2/JBig2_PddProc.h new file mode 100644 index 0000000000..25f941235f --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_PddProc.h @@ -0,0 +1,34 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_PDDPROC_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_PDDPROC_H_ + +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_ArithDecoder; +class CJBig2_BitStream; +class CJBig2_PatternDict; +class IFX_Pause; +struct JBig2ArithCtx; + +class CJBig2_PDDProc { + public: + CJBig2_PatternDict* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* gbContext, + IFX_Pause* pPause); + + CJBig2_PatternDict* decode_MMR(CJBig2_BitStream* pStream, IFX_Pause* pPause); + + public: + FX_BOOL HDMMR; + uint8_t HDPW; + uint8_t HDPH; + FX_DWORD GRAYMAX; + uint8_t HDTEMPLATE; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_PDDPROC_H_ diff --git a/core/fxcodec/jbig2/JBig2_SddProc.cpp b/core/fxcodec/jbig2/JBig2_SddProc.cpp new file mode 100644 index 0000000000..80079b93a5 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_SddProc.cpp @@ -0,0 +1,624 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_SddProc.h" + +#include +#include + +#include "core/fxcodec/jbig2/JBig2_ArithIntDecoder.h" +#include "core/fxcodec/jbig2/JBig2_GrdProc.h" +#include "core/fxcodec/jbig2/JBig2_GrrdProc.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanDecoder.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanTable.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h" +#include "core/fxcodec/jbig2/JBig2_SymbolDict.h" +#include "core/fxcodec/jbig2/JBig2_TrdProc.h" +#include "core/include/fxcrt/fx_basic.h" + +CJBig2_SymbolDict* CJBig2_SDDProc::decode_Arith( + CJBig2_ArithDecoder* pArithDecoder, + std::vector* gbContext, + std::vector* grContext) { + CJBig2_Image** SDNEWSYMS; + FX_DWORD HCHEIGHT, NSYMSDECODED; + int32_t HCDH; + FX_DWORD SYMWIDTH, TOTWIDTH; + int32_t DW; + CJBig2_Image* BS; + FX_DWORD I, J, REFAGGNINST; + FX_BOOL* EXFLAGS; + FX_DWORD EXINDEX; + FX_BOOL CUREXFLAG; + FX_DWORD EXRUNLENGTH; + FX_DWORD nTmp; + FX_DWORD SBNUMSYMS; + uint8_t SBSYMCODELEN; + int32_t RDXI, RDYI; + CJBig2_Image** SBSYMS; + std::unique_ptr IAID; + std::unique_ptr pDict; + std::unique_ptr IADH(new CJBig2_ArithIntDecoder); + std::unique_ptr IADW(new CJBig2_ArithIntDecoder); + std::unique_ptr IAAI(new CJBig2_ArithIntDecoder); + std::unique_ptr IARDX(new CJBig2_ArithIntDecoder); + std::unique_ptr IARDY(new CJBig2_ArithIntDecoder); + std::unique_ptr IAEX(new CJBig2_ArithIntDecoder); + std::unique_ptr IADT(new CJBig2_ArithIntDecoder); + std::unique_ptr IAFS(new CJBig2_ArithIntDecoder); + std::unique_ptr IADS(new CJBig2_ArithIntDecoder); + std::unique_ptr IAIT(new CJBig2_ArithIntDecoder); + std::unique_ptr IARI(new CJBig2_ArithIntDecoder); + std::unique_ptr IARDW(new CJBig2_ArithIntDecoder); + std::unique_ptr IARDH(new CJBig2_ArithIntDecoder); + nTmp = 0; + while ((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) { + nTmp++; + } + IAID.reset(new CJBig2_ArithIaidDecoder((uint8_t)nTmp)); + SDNEWSYMS = FX_Alloc(CJBig2_Image*, SDNUMNEWSYMS); + FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); + + HCHEIGHT = 0; + NSYMSDECODED = 0; + while (NSYMSDECODED < SDNUMNEWSYMS) { + BS = nullptr; + IADH->decode(pArithDecoder, &HCDH); + HCHEIGHT = HCHEIGHT + HCDH; + if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) { + goto failed; + } + SYMWIDTH = 0; + TOTWIDTH = 0; + for (;;) { + if (!IADW->decode(pArithDecoder, &DW)) + break; + + if (NSYMSDECODED >= SDNUMNEWSYMS) + goto failed; + + SYMWIDTH = SYMWIDTH + DW; + if ((int)SYMWIDTH < 0 || (int)SYMWIDTH > JBIG2_MAX_IMAGE_SIZE) + goto failed; + + if (HCHEIGHT == 0 || SYMWIDTH == 0) { + TOTWIDTH = TOTWIDTH + SYMWIDTH; + SDNEWSYMS[NSYMSDECODED] = nullptr; + NSYMSDECODED = NSYMSDECODED + 1; + continue; + } + TOTWIDTH = TOTWIDTH + SYMWIDTH; + if (SDREFAGG == 0) { + std::unique_ptr pGRD(new CJBig2_GRDProc()); + pGRD->MMR = 0; + pGRD->GBW = SYMWIDTH; + pGRD->GBH = HCHEIGHT; + pGRD->GBTEMPLATE = SDTEMPLATE; + pGRD->TPGDON = 0; + pGRD->USESKIP = 0; + pGRD->GBAT[0] = SDAT[0]; + pGRD->GBAT[1] = SDAT[1]; + pGRD->GBAT[2] = SDAT[2]; + pGRD->GBAT[3] = SDAT[3]; + pGRD->GBAT[4] = SDAT[4]; + pGRD->GBAT[5] = SDAT[5]; + pGRD->GBAT[6] = SDAT[6]; + pGRD->GBAT[7] = SDAT[7]; + BS = pGRD->decode_Arith(pArithDecoder, gbContext->data()); + if (!BS) { + goto failed; + } + } else { + IAAI->decode(pArithDecoder, (int*)&REFAGGNINST); + if (REFAGGNINST > 1) { + std::unique_ptr pDecoder(new CJBig2_TRDProc()); + pDecoder->SBHUFF = SDHUFF; + pDecoder->SBREFINE = 1; + pDecoder->SBW = SYMWIDTH; + pDecoder->SBH = HCHEIGHT; + pDecoder->SBNUMINSTANCES = REFAGGNINST; + pDecoder->SBSTRIPS = 1; + pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; + SBNUMSYMS = pDecoder->SBNUMSYMS; + nTmp = 0; + while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { + nTmp++; + } + SBSYMCODELEN = (uint8_t)nTmp; + pDecoder->SBSYMCODELEN = SBSYMCODELEN; + SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); + JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); + JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, + NSYMSDECODED * sizeof(CJBig2_Image*)); + pDecoder->SBSYMS = SBSYMS; + pDecoder->SBDEFPIXEL = 0; + pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; + pDecoder->TRANSPOSED = 0; + pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; + pDecoder->SBDSOFFSET = 0; + std::unique_ptr SBHUFFFS(new CJBig2_HuffmanTable( + HuffmanTable_B6, FX_ArraySize(HuffmanTable_B6), + HuffmanTable_HTOOB_B6)); + std::unique_ptr SBHUFFDS(new CJBig2_HuffmanTable( + HuffmanTable_B8, FX_ArraySize(HuffmanTable_B8), + HuffmanTable_HTOOB_B8)); + std::unique_ptr SBHUFFDT(new CJBig2_HuffmanTable( + HuffmanTable_B11, FX_ArraySize(HuffmanTable_B11), + HuffmanTable_HTOOB_B11)); + std::unique_ptr SBHUFFRDW( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRDH( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRDX( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRDY( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRSIZE( + new CJBig2_HuffmanTable(HuffmanTable_B1, + FX_ArraySize(HuffmanTable_B1), + HuffmanTable_HTOOB_B1)); + pDecoder->SBHUFFFS = SBHUFFFS.get(); + pDecoder->SBHUFFDS = SBHUFFDS.get(); + pDecoder->SBHUFFDT = SBHUFFDT.get(); + pDecoder->SBHUFFRDW = SBHUFFRDW.get(); + pDecoder->SBHUFFRDH = SBHUFFRDH.get(); + pDecoder->SBHUFFRDX = SBHUFFRDX.get(); + pDecoder->SBHUFFRDY = SBHUFFRDY.get(); + pDecoder->SBHUFFRSIZE = SBHUFFRSIZE.get(); + pDecoder->SBRTEMPLATE = SDRTEMPLATE; + pDecoder->SBRAT[0] = SDRAT[0]; + pDecoder->SBRAT[1] = SDRAT[1]; + pDecoder->SBRAT[2] = SDRAT[2]; + pDecoder->SBRAT[3] = SDRAT[3]; + JBig2IntDecoderState ids; + ids.IADT = IADT.get(); + ids.IAFS = IAFS.get(); + ids.IADS = IADS.get(); + ids.IAIT = IAIT.get(); + ids.IARI = IARI.get(); + ids.IARDW = IARDW.get(); + ids.IARDH = IARDH.get(); + ids.IARDX = IARDX.get(); + ids.IARDY = IARDY.get(); + ids.IAID = IAID.get(); + BS = pDecoder->decode_Arith(pArithDecoder, grContext->data(), &ids); + if (!BS) { + FX_Free(SBSYMS); + goto failed; + } + FX_Free(SBSYMS); + } else if (REFAGGNINST == 1) { + SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; + FX_DWORD IDI; + IAID->decode(pArithDecoder, &IDI); + IARDX->decode(pArithDecoder, &RDXI); + IARDY->decode(pArithDecoder, &RDYI); + if (IDI >= SBNUMSYMS) { + goto failed; + } + SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); + JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); + JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, + NSYMSDECODED * sizeof(CJBig2_Image*)); + if (!SBSYMS[IDI]) { + FX_Free(SBSYMS); + goto failed; + } + std::unique_ptr pGRRD(new CJBig2_GRRDProc()); + pGRRD->GRW = SYMWIDTH; + pGRRD->GRH = HCHEIGHT; + pGRRD->GRTEMPLATE = SDRTEMPLATE; + pGRRD->GRREFERENCE = SBSYMS[IDI]; + pGRRD->GRREFERENCEDX = RDXI; + pGRRD->GRREFERENCEDY = RDYI; + pGRRD->TPGRON = 0; + pGRRD->GRAT[0] = SDRAT[0]; + pGRRD->GRAT[1] = SDRAT[1]; + pGRRD->GRAT[2] = SDRAT[2]; + pGRRD->GRAT[3] = SDRAT[3]; + BS = pGRRD->decode(pArithDecoder, grContext->data()); + if (!BS) { + FX_Free(SBSYMS); + goto failed; + } + FX_Free(SBSYMS); + } + } + SDNEWSYMS[NSYMSDECODED] = BS; + BS = nullptr; + NSYMSDECODED = NSYMSDECODED + 1; + } + } + EXINDEX = 0; + CUREXFLAG = 0; + EXFLAGS = FX_Alloc(FX_BOOL, SDNUMINSYMS + SDNUMNEWSYMS); + while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { + IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH); + if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { + FX_Free(EXFLAGS); + goto failed; + } + if (EXRUNLENGTH != 0) { + for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { + EXFLAGS[I] = CUREXFLAG; + } + } + EXINDEX = EXINDEX + EXRUNLENGTH; + CUREXFLAG = !CUREXFLAG; + } + pDict.reset(new CJBig2_SymbolDict); + I = J = 0; + for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { + if (EXFLAGS[I] && J < SDNUMEXSYMS) { + if (I < SDNUMINSYMS) { + pDict->AddImage(SDINSYMS[I] ? new CJBig2_Image(*SDINSYMS[I]) : nullptr); + } else { + pDict->AddImage(SDNEWSYMS[I - SDNUMINSYMS]); + } + ++J; + } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { + delete SDNEWSYMS[I - SDNUMINSYMS]; + } + } + FX_Free(EXFLAGS); + FX_Free(SDNEWSYMS); + return pDict.release(); +failed: + for (I = 0; I < NSYMSDECODED; I++) { + if (SDNEWSYMS[I]) { + delete SDNEWSYMS[I]; + SDNEWSYMS[I] = nullptr; + } + } + FX_Free(SDNEWSYMS); + return nullptr; +} + +CJBig2_SymbolDict* CJBig2_SDDProc::decode_Huffman( + CJBig2_BitStream* pStream, + std::vector* gbContext, + std::vector* grContext, + IFX_Pause* pPause) { + CJBig2_Image** SDNEWSYMS; + FX_DWORD* SDNEWSYMWIDTHS; + FX_DWORD HCHEIGHT, NSYMSDECODED; + int32_t HCDH; + FX_DWORD SYMWIDTH, TOTWIDTH, HCFIRSTSYM; + int32_t DW; + CJBig2_Image *BS, *BHC; + FX_DWORD I, J, REFAGGNINST; + FX_BOOL* EXFLAGS; + FX_DWORD EXINDEX; + FX_BOOL CUREXFLAG; + FX_DWORD EXRUNLENGTH; + int32_t nVal, nBits; + FX_DWORD nTmp; + FX_DWORD SBNUMSYMS; + uint8_t SBSYMCODELEN; + JBig2HuffmanCode* SBSYMCODES; + FX_DWORD IDI; + int32_t RDXI, RDYI; + FX_DWORD BMSIZE; + FX_DWORD stride; + CJBig2_Image** SBSYMS; + std::unique_ptr pHuffmanDecoder( + new CJBig2_HuffmanDecoder(pStream)); + SDNEWSYMS = FX_Alloc(CJBig2_Image*, SDNUMNEWSYMS); + FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); + SDNEWSYMWIDTHS = nullptr; + BHC = nullptr; + if (SDREFAGG == 0) { + SDNEWSYMWIDTHS = FX_Alloc(FX_DWORD, SDNUMNEWSYMS); + FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD)); + } + std::unique_ptr pDict(new CJBig2_SymbolDict()); + std::unique_ptr pTable; + + HCHEIGHT = 0; + NSYMSDECODED = 0; + BS = nullptr; + while (NSYMSDECODED < SDNUMNEWSYMS) { + if (pHuffmanDecoder->decodeAValue(SDHUFFDH, &HCDH) != 0) { + goto failed; + } + HCHEIGHT = HCHEIGHT + HCDH; + if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) { + goto failed; + } + SYMWIDTH = 0; + TOTWIDTH = 0; + HCFIRSTSYM = NSYMSDECODED; + for (;;) { + nVal = pHuffmanDecoder->decodeAValue(SDHUFFDW, &DW); + if (nVal == JBIG2_OOB) { + break; + } else if (nVal != 0) { + goto failed; + } else { + if (NSYMSDECODED >= SDNUMNEWSYMS) { + goto failed; + } + SYMWIDTH = SYMWIDTH + DW; + if ((int)SYMWIDTH < 0 || (int)SYMWIDTH > JBIG2_MAX_IMAGE_SIZE) { + goto failed; + } else if (HCHEIGHT == 0 || SYMWIDTH == 0) { + TOTWIDTH = TOTWIDTH + SYMWIDTH; + SDNEWSYMS[NSYMSDECODED] = nullptr; + NSYMSDECODED = NSYMSDECODED + 1; + continue; + } + TOTWIDTH = TOTWIDTH + SYMWIDTH; + } + if (SDREFAGG == 1) { + if (pHuffmanDecoder->decodeAValue(SDHUFFAGGINST, (int*)&REFAGGNINST) != + 0) { + goto failed; + } + BS = nullptr; + if (REFAGGNINST > 1) { + std::unique_ptr pDecoder(new CJBig2_TRDProc()); + pDecoder->SBHUFF = SDHUFF; + pDecoder->SBREFINE = 1; + pDecoder->SBW = SYMWIDTH; + pDecoder->SBH = HCHEIGHT; + pDecoder->SBNUMINSTANCES = REFAGGNINST; + pDecoder->SBSTRIPS = 1; + pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; + SBNUMSYMS = pDecoder->SBNUMSYMS; + SBSYMCODES = FX_Alloc(JBig2HuffmanCode, SBNUMSYMS); + nTmp = 1; + while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { + nTmp++; + } + for (I = 0; I < SBNUMSYMS; I++) { + SBSYMCODES[I].codelen = nTmp; + SBSYMCODES[I].code = I; + } + pDecoder->SBSYMCODES = SBSYMCODES; + SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); + JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); + JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, + NSYMSDECODED * sizeof(CJBig2_Image*)); + pDecoder->SBSYMS = SBSYMS; + pDecoder->SBDEFPIXEL = 0; + pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; + pDecoder->TRANSPOSED = 0; + pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; + pDecoder->SBDSOFFSET = 0; + std::unique_ptr SBHUFFFS(new CJBig2_HuffmanTable( + HuffmanTable_B6, FX_ArraySize(HuffmanTable_B6), + HuffmanTable_HTOOB_B6)); + std::unique_ptr SBHUFFDS(new CJBig2_HuffmanTable( + HuffmanTable_B8, FX_ArraySize(HuffmanTable_B8), + HuffmanTable_HTOOB_B8)); + std::unique_ptr SBHUFFDT(new CJBig2_HuffmanTable( + HuffmanTable_B11, FX_ArraySize(HuffmanTable_B11), + HuffmanTable_HTOOB_B11)); + std::unique_ptr SBHUFFRDW( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRDH( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRDX( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRDY( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRSIZE( + new CJBig2_HuffmanTable(HuffmanTable_B1, + FX_ArraySize(HuffmanTable_B1), + HuffmanTable_HTOOB_B1)); + pDecoder->SBHUFFFS = SBHUFFFS.get(); + pDecoder->SBHUFFDS = SBHUFFDS.get(); + pDecoder->SBHUFFDT = SBHUFFDT.get(); + pDecoder->SBHUFFRDW = SBHUFFRDW.get(); + pDecoder->SBHUFFRDH = SBHUFFRDH.get(); + pDecoder->SBHUFFRDX = SBHUFFRDX.get(); + pDecoder->SBHUFFRDY = SBHUFFRDY.get(); + pDecoder->SBHUFFRSIZE = SBHUFFRSIZE.get(); + pDecoder->SBRTEMPLATE = SDRTEMPLATE; + pDecoder->SBRAT[0] = SDRAT[0]; + pDecoder->SBRAT[1] = SDRAT[1]; + pDecoder->SBRAT[2] = SDRAT[2]; + pDecoder->SBRAT[3] = SDRAT[3]; + BS = pDecoder->decode_Huffman(pStream, grContext->data()); + if (!BS) { + FX_Free(SBSYMCODES); + FX_Free(SBSYMS); + goto failed; + } + FX_Free(SBSYMCODES); + FX_Free(SBSYMS); + } else if (REFAGGNINST == 1) { + SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS; + nTmp = 1; + while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { + nTmp++; + } + SBSYMCODELEN = (uint8_t)nTmp; + SBSYMCODES = FX_Alloc(JBig2HuffmanCode, SBNUMSYMS); + for (I = 0; I < SBNUMSYMS; I++) { + SBSYMCODES[I].codelen = SBSYMCODELEN; + SBSYMCODES[I].code = I; + } + nVal = 0; + nBits = 0; + for (;;) { + if (pStream->read1Bit(&nTmp) != 0) { + FX_Free(SBSYMCODES); + goto failed; + } + nVal = (nVal << 1) | nTmp; + for (IDI = 0; IDI < SBNUMSYMS; IDI++) { + if ((nVal == SBSYMCODES[IDI].code) && + (nBits == SBSYMCODES[IDI].codelen)) { + break; + } + } + if (IDI < SBNUMSYMS) { + break; + } + } + FX_Free(SBSYMCODES); + std::unique_ptr SBHUFFRDX( + new CJBig2_HuffmanTable(HuffmanTable_B15, + FX_ArraySize(HuffmanTable_B15), + HuffmanTable_HTOOB_B15)); + std::unique_ptr SBHUFFRSIZE( + new CJBig2_HuffmanTable(HuffmanTable_B1, + FX_ArraySize(HuffmanTable_B1), + HuffmanTable_HTOOB_B1)); + if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX.get(), &RDXI) != 0) || + (pHuffmanDecoder->decodeAValue(SBHUFFRDX.get(), &RDYI) != 0) || + (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE.get(), &nVal) != 0)) { + goto failed; + } + pStream->alignByte(); + nTmp = pStream->getOffset(); + SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); + JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); + JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, + NSYMSDECODED * sizeof(CJBig2_Image*)); + std::unique_ptr pGRRD(new CJBig2_GRRDProc()); + pGRRD->GRW = SYMWIDTH; + pGRRD->GRH = HCHEIGHT; + pGRRD->GRTEMPLATE = SDRTEMPLATE; + pGRRD->GRREFERENCE = SBSYMS[IDI]; + pGRRD->GRREFERENCEDX = RDXI; + pGRRD->GRREFERENCEDY = RDYI; + pGRRD->TPGRON = 0; + pGRRD->GRAT[0] = SDRAT[0]; + pGRRD->GRAT[1] = SDRAT[1]; + pGRRD->GRAT[2] = SDRAT[2]; + pGRRD->GRAT[3] = SDRAT[3]; + std::unique_ptr pArithDecoder( + new CJBig2_ArithDecoder(pStream)); + BS = pGRRD->decode(pArithDecoder.get(), grContext->data()); + if (!BS) { + FX_Free(SBSYMS); + goto failed; + } + pStream->alignByte(); + pStream->offset(2); + if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { + delete BS; + FX_Free(SBSYMS); + goto failed; + } + FX_Free(SBSYMS); + } + SDNEWSYMS[NSYMSDECODED] = BS; + } + if (SDREFAGG == 0) { + SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH; + } + NSYMSDECODED = NSYMSDECODED + 1; + } + if (SDREFAGG == 0) { + if (pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (int32_t*)&BMSIZE) != 0) { + goto failed; + } + pStream->alignByte(); + if (BMSIZE == 0) { + stride = (TOTWIDTH + 7) >> 3; + if (pStream->getByteLeft() >= stride * HCHEIGHT) { + BHC = new CJBig2_Image(TOTWIDTH, HCHEIGHT); + for (I = 0; I < HCHEIGHT; I++) { + JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride, + pStream->getPointer(), stride); + pStream->offset(stride); + } + } else { + goto failed; + } + } else { + std::unique_ptr pGRD(new CJBig2_GRDProc()); + pGRD->MMR = 1; + pGRD->GBW = TOTWIDTH; + pGRD->GBH = HCHEIGHT; + FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHC, pStream, nullptr); + while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { + pGRD->Continue_decode(pPause); + } + pStream->alignByte(); + } + nTmp = 0; + if (!BHC) { + continue; + } + for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) { + SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT); + nTmp += SDNEWSYMWIDTHS[I]; + } + delete BHC; + BHC = nullptr; + } + } + EXINDEX = 0; + CUREXFLAG = 0; + pTable.reset(new CJBig2_HuffmanTable( + HuffmanTable_B1, FX_ArraySize(HuffmanTable_B1), HuffmanTable_HTOOB_B1)); + EXFLAGS = FX_Alloc(FX_BOOL, SDNUMINSYMS + SDNUMNEWSYMS); + while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { + if (pHuffmanDecoder->decodeAValue(pTable.get(), (int*)&EXRUNLENGTH) != 0) { + FX_Free(EXFLAGS); + goto failed; + } + if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { + FX_Free(EXFLAGS); + goto failed; + } + if (EXRUNLENGTH != 0) { + for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { + EXFLAGS[I] = CUREXFLAG; + } + } + EXINDEX = EXINDEX + EXRUNLENGTH; + CUREXFLAG = !CUREXFLAG; + } + I = J = 0; + for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { + if (EXFLAGS[I] && J < SDNUMEXSYMS) { + if (I < SDNUMINSYMS) { + pDict->AddImage(SDINSYMS[I] ? new CJBig2_Image(*SDINSYMS[I]) : nullptr); + } else { + pDict->AddImage(SDNEWSYMS[I - SDNUMINSYMS]); + } + ++J; + } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { + delete SDNEWSYMS[I - SDNUMINSYMS]; + } + } + FX_Free(EXFLAGS); + FX_Free(SDNEWSYMS); + if (SDREFAGG == 0) { + FX_Free(SDNEWSYMWIDTHS); + } + return pDict.release(); +failed: + for (I = 0; I < NSYMSDECODED; I++) { + delete SDNEWSYMS[I]; + } + FX_Free(SDNEWSYMS); + if (SDREFAGG == 0) { + FX_Free(SDNEWSYMWIDTHS); + } + return nullptr; +} diff --git a/core/fxcodec/jbig2/JBig2_SddProc.h b/core/fxcodec/jbig2/JBig2_SddProc.h new file mode 100644 index 0000000000..fa1211b4b4 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_SddProc.h @@ -0,0 +1,49 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_SDDPROC_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_SDDPROC_H_ + +#include + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_BitStream; +class CJBig2_HuffmanTable; +class CJBig2_Image; +class CJBig2_SymbolDict; +class IFX_Pause; + +class CJBig2_SDDProc { + public: + CJBig2_SymbolDict* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + std::vector* gbContext, + std::vector* grContext); + + CJBig2_SymbolDict* decode_Huffman(CJBig2_BitStream* pStream, + std::vector* gbContext, + std::vector* grContext, + IFX_Pause* pPause); + + public: + FX_BOOL SDHUFF; + FX_BOOL SDREFAGG; + FX_DWORD SDNUMINSYMS; + CJBig2_Image** SDINSYMS; + FX_DWORD SDNUMNEWSYMS; + FX_DWORD SDNUMEXSYMS; + CJBig2_HuffmanTable* SDHUFFDH; + CJBig2_HuffmanTable* SDHUFFDW; + CJBig2_HuffmanTable* SDHUFFBMSIZE; + CJBig2_HuffmanTable* SDHUFFAGGINST; + uint8_t SDTEMPLATE; + int8_t SDAT[8]; + FX_BOOL SDRTEMPLATE; + int8_t SDRAT[4]; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_SDDPROC_H_ diff --git a/core/fxcodec/jbig2/JBig2_Segment.cpp b/core/fxcodec/jbig2/JBig2_Segment.cpp new file mode 100644 index 0000000000..a6bac36141 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Segment.cpp @@ -0,0 +1,44 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_Segment.h" + +#include "core/include/fxcrt/fx_memory.h" + +CJBig2_Segment::CJBig2_Segment() { + m_dwNumber = 0; + m_cFlags.c = 0; + m_nReferred_to_segment_count = 0; + m_pReferred_to_segment_numbers = NULL; + m_dwPage_association = 0; + m_dwData_length = 0; + m_dwHeader_Length = 0; + m_dwObjNum = 0; + m_dwDataOffset = 0; + m_State = JBIG2_SEGMENT_HEADER_UNPARSED; + m_nResultType = JBIG2_VOID_POINTER; + m_Result.vd = NULL; +} +CJBig2_Segment::~CJBig2_Segment() { + FX_Free(m_pReferred_to_segment_numbers); + + switch (m_nResultType) { + case JBIG2_IMAGE_POINTER: + delete m_Result.im; + break; + case JBIG2_SYMBOL_DICT_POINTER: + delete m_Result.sd; + break; + case JBIG2_PATTERN_DICT_POINTER: + delete m_Result.pd; + break; + case JBIG2_HUFFMAN_TABLE_POINTER: + delete m_Result.ht; + break; + default: + FX_Free(m_Result.vd); + } +} diff --git a/core/fxcodec/jbig2/JBig2_Segment.h b/core/fxcodec/jbig2/JBig2_Segment.h new file mode 100644 index 0000000000..61550ada09 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_Segment.h @@ -0,0 +1,66 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_SEGMENT_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_SEGMENT_H_ + +#include "core/fxcodec/jbig2/JBig2_Define.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanTable.h" +#include "core/fxcodec/jbig2/JBig2_PatternDict.h" +#include "core/fxcodec/jbig2/JBig2_SymbolDict.h" + +#define JBIG2_GET_INT32(buf) \ + (((buf)[0] << 24) | ((buf)[1] << 16) | ((buf)[2] << 8) | (buf)[3]) +#define JBIG2_GET_INT16(buf) (((buf)[0] << 8) | (buf)[1]) +typedef enum { + JBIG2_SEGMENT_HEADER_UNPARSED, + JBIG2_SEGMENT_DATA_UNPARSED, + JBIG2_SEGMENT_PARSE_COMPLETE, + JBIG2_SEGMENT_PAUSED, + JBIG2_SEGMENT_ERROR +} JBig2_SegmentState; +typedef enum { + JBIG2_VOID_POINTER = 0, + JBIG2_IMAGE_POINTER, + JBIG2_SYMBOL_DICT_POINTER, + JBIG2_PATTERN_DICT_POINTER, + JBIG2_HUFFMAN_TABLE_POINTER +} JBig2_ResultType; +class CJBig2_Segment { + public: + CJBig2_Segment(); + + ~CJBig2_Segment(); + + FX_DWORD m_dwNumber; + union { + struct { + uint8_t type : 6; + uint8_t page_association_size : 1; + uint8_t deferred_non_retain : 1; + } s; + uint8_t c; + } m_cFlags; + int32_t m_nReferred_to_segment_count; + FX_DWORD* m_pReferred_to_segment_numbers; + FX_DWORD m_dwPage_association; + FX_DWORD m_dwData_length; + + FX_DWORD m_dwHeader_Length; + FX_DWORD m_dwObjNum; + FX_DWORD m_dwDataOffset; + JBig2_SegmentState m_State; + JBig2_ResultType m_nResultType; + union { + CJBig2_SymbolDict* sd; + CJBig2_PatternDict* pd; + CJBig2_Image* im; + CJBig2_HuffmanTable* ht; + void* vd; + } m_Result; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_SEGMENT_H_ diff --git a/core/fxcodec/jbig2/JBig2_SymbolDict.cpp b/core/fxcodec/jbig2/JBig2_SymbolDict.cpp new file mode 100644 index 0000000000..9fe3d54a0c --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_SymbolDict.cpp @@ -0,0 +1,26 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_SymbolDict.h" + +#include "core/fxcodec/jbig2/JBig2_Image.h" +#include "core/include/fxcrt/fx_memory.h" + +CJBig2_SymbolDict::CJBig2_SymbolDict() {} + +CJBig2_SymbolDict::~CJBig2_SymbolDict() {} + +std::unique_ptr CJBig2_SymbolDict::DeepCopy() const { + const CJBig2_SymbolDict* src = this; + std::unique_ptr dst(new CJBig2_SymbolDict); + for (size_t i = 0; i < src->m_SDEXSYMS.size(); ++i) { + CJBig2_Image* image = src->m_SDEXSYMS.get(i); + dst->m_SDEXSYMS.push_back(image ? new CJBig2_Image(*image) : nullptr); + } + dst->m_gbContext = src->m_gbContext; + dst->m_grContext = src->m_grContext; + return dst; +} diff --git a/core/fxcodec/jbig2/JBig2_SymbolDict.h b/core/fxcodec/jbig2/JBig2_SymbolDict.h new file mode 100644 index 0000000000..64ab881596 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_SymbolDict.h @@ -0,0 +1,48 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ + +#include +#include + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" +#include "core/fxcodec/jbig2/JBig2_List.h" +#include "core/include/fxcrt/fx_basic.h" + +class CJBig2_Image; + +class CJBig2_SymbolDict { + public: + CJBig2_SymbolDict(); + ~CJBig2_SymbolDict(); + + std::unique_ptr DeepCopy() const; + + // Takes ownership of |image|. + void AddImage(CJBig2_Image* image) { m_SDEXSYMS.push_back(image); } + + size_t NumImages() const { return m_SDEXSYMS.size(); } + CJBig2_Image* GetImage(size_t index) const { return m_SDEXSYMS.get(index); } + + const std::vector& GbContext() const { return m_gbContext; } + const std::vector& GrContext() const { return m_grContext; } + + void SetGbContext(const std::vector& gbContext) { + m_gbContext = gbContext; + } + void SetGrContext(const std::vector& grContext) { + m_grContext = grContext; + } + + private: + std::vector m_gbContext; + std::vector m_grContext; + CJBig2_List m_SDEXSYMS; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ diff --git a/core/fxcodec/jbig2/JBig2_TrdProc.cpp b/core/fxcodec/jbig2/JBig2_TrdProc.cpp new file mode 100644 index 0000000000..401249e3f2 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_TrdProc.cpp @@ -0,0 +1,407 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/jbig2/JBig2_TrdProc.h" + +#include + +#include "core/fxcodec/jbig2/JBig2_ArithDecoder.h" +#include "core/fxcodec/jbig2/JBig2_ArithIntDecoder.h" +#include "core/fxcodec/jbig2/JBig2_GrrdProc.h" +#include "core/fxcodec/jbig2/JBig2_HuffmanDecoder.h" + +CJBig2_Image* CJBig2_TRDProc::decode_Huffman(CJBig2_BitStream* pStream, + JBig2ArithCtx* grContext) { + int32_t STRIPT, FIRSTS; + FX_DWORD NINSTANCES; + int32_t DT, DFS, CURS; + int32_t SI, TI; + CJBig2_Image* IBI; + FX_DWORD WI, HI; + int32_t IDS; + FX_BOOL RI; + int32_t RDWI, RDHI, RDXI, RDYI; + CJBig2_Image* IBOI; + FX_DWORD WOI, HOI; + FX_BOOL bFirst; + FX_DWORD nTmp; + int32_t nVal, nBits; + std::unique_ptr pHuffmanDecoder( + new CJBig2_HuffmanDecoder(pStream)); + std::unique_ptr SBREG(new CJBig2_Image(SBW, SBH)); + SBREG->fill(SBDEFPIXEL); + if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) + return nullptr; + + STRIPT *= SBSTRIPS; + STRIPT = -STRIPT; + FIRSTS = 0; + NINSTANCES = 0; + while (NINSTANCES < SBNUMINSTANCES) { + if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &DT) != 0) + return nullptr; + + DT *= SBSTRIPS; + STRIPT = STRIPT + DT; + bFirst = TRUE; + for (;;) { + if (bFirst) { + if (pHuffmanDecoder->decodeAValue(SBHUFFFS, &DFS) != 0) + return nullptr; + + FIRSTS = FIRSTS + DFS; + CURS = FIRSTS; + bFirst = FALSE; + } else { + nVal = pHuffmanDecoder->decodeAValue(SBHUFFDS, &IDS); + if (nVal == JBIG2_OOB) { + break; + } else if (nVal != 0) { + return nullptr; + } else { + CURS = CURS + IDS + SBDSOFFSET; + } + } + uint8_t CURT = 0; + if (SBSTRIPS != 1) { + nTmp = 1; + while ((FX_DWORD)(1 << nTmp) < SBSTRIPS) { + nTmp++; + } + if (pStream->readNBits(nTmp, &nVal) != 0) + return nullptr; + + CURT = nVal; + } + TI = STRIPT + CURT; + nVal = 0; + nBits = 0; + FX_DWORD IDI; + for (;;) { + if (pStream->read1Bit(&nTmp) != 0) + return nullptr; + + nVal = (nVal << 1) | nTmp; + nBits++; + for (IDI = 0; IDI < SBNUMSYMS; IDI++) { + if ((nBits == SBSYMCODES[IDI].codelen) && + (nVal == SBSYMCODES[IDI].code)) { + break; + } + } + if (IDI < SBNUMSYMS) { + break; + } + } + if (SBREFINE == 0) { + RI = 0; + } else { + if (pStream->read1Bit(&RI) != 0) { + return nullptr; + } + } + if (RI == 0) { + IBI = SBSYMS[IDI]; + } else { + if ((pHuffmanDecoder->decodeAValue(SBHUFFRDW, &RDWI) != 0) || + (pHuffmanDecoder->decodeAValue(SBHUFFRDH, &RDHI) != 0) || + (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) || + (pHuffmanDecoder->decodeAValue(SBHUFFRDY, &RDYI) != 0) || + (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) { + return nullptr; + } + pStream->alignByte(); + nTmp = pStream->getOffset(); + IBOI = SBSYMS[IDI]; + if (!IBOI) + return nullptr; + + WOI = IBOI->m_nWidth; + HOI = IBOI->m_nHeight; + if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) + return nullptr; + + std::unique_ptr pGRRD(new CJBig2_GRRDProc()); + pGRRD->GRW = WOI + RDWI; + pGRRD->GRH = HOI + RDHI; + pGRRD->GRTEMPLATE = SBRTEMPLATE; + pGRRD->GRREFERENCE = IBOI; + pGRRD->GRREFERENCEDX = (RDWI >> 2) + RDXI; + pGRRD->GRREFERENCEDY = (RDHI >> 2) + RDYI; + pGRRD->TPGRON = 0; + pGRRD->GRAT[0] = SBRAT[0]; + pGRRD->GRAT[1] = SBRAT[1]; + pGRRD->GRAT[2] = SBRAT[2]; + pGRRD->GRAT[3] = SBRAT[3]; + + { + std::unique_ptr pArithDecoder( + new CJBig2_ArithDecoder(pStream)); + IBI = pGRRD->decode(pArithDecoder.get(), grContext); + if (!IBI) + return nullptr; + } + + pStream->alignByte(); + pStream->offset(2); + if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { + delete IBI; + return nullptr; + } + } + if (!IBI) { + continue; + } + WI = IBI->m_nWidth; + HI = IBI->m_nHeight; + if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPRIGHT) || + (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { + CURS = CURS + WI - 1; + } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_BOTTOMLEFT) || + (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { + CURS = CURS + HI - 1; + } + SI = CURS; + if (TRANSPOSED == 0) { + switch (REFCORNER) { + case JBIG2_CORNER_TOPLEFT: + SBREG->composeFrom(SI, TI, IBI, SBCOMBOP); + break; + case JBIG2_CORNER_TOPRIGHT: + SBREG->composeFrom(SI - WI + 1, TI, IBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMLEFT: + SBREG->composeFrom(SI, TI - HI + 1, IBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMRIGHT: + SBREG->composeFrom(SI - WI + 1, TI - HI + 1, IBI, SBCOMBOP); + break; + } + } else { + switch (REFCORNER) { + case JBIG2_CORNER_TOPLEFT: + SBREG->composeFrom(TI, SI, IBI, SBCOMBOP); + break; + case JBIG2_CORNER_TOPRIGHT: + SBREG->composeFrom(TI - WI + 1, SI, IBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMLEFT: + SBREG->composeFrom(TI, SI - HI + 1, IBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMRIGHT: + SBREG->composeFrom(TI - WI + 1, SI - HI + 1, IBI, SBCOMBOP); + break; + } + } + if (RI != 0) { + delete IBI; + } + if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || + (REFCORNER == JBIG2_CORNER_BOTTOMLEFT))) { + CURS = CURS + WI - 1; + } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || + (REFCORNER == JBIG2_CORNER_TOPRIGHT))) { + CURS = CURS + HI - 1; + } + NINSTANCES = NINSTANCES + 1; + } + } + return SBREG.release(); +} + +CJBig2_Image* CJBig2_TRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext, + JBig2IntDecoderState* pIDS) { + std::unique_ptr IADT; + std::unique_ptr IAFS; + std::unique_ptr IADS; + std::unique_ptr IAIT; + std::unique_ptr IARI; + std::unique_ptr IARDW; + std::unique_ptr IARDH; + std::unique_ptr IARDX; + std::unique_ptr IARDY; + std::unique_ptr IAID; + CJBig2_ArithIntDecoder* pIADT; + CJBig2_ArithIntDecoder* pIAFS; + CJBig2_ArithIntDecoder* pIADS; + CJBig2_ArithIntDecoder* pIAIT; + CJBig2_ArithIntDecoder* pIARI; + CJBig2_ArithIntDecoder* pIARDW; + CJBig2_ArithIntDecoder* pIARDH; + CJBig2_ArithIntDecoder* pIARDX; + CJBig2_ArithIntDecoder* pIARDY; + CJBig2_ArithIaidDecoder* pIAID; + if (pIDS) { + pIADT = pIDS->IADT; + pIAFS = pIDS->IAFS; + pIADS = pIDS->IADS; + pIAIT = pIDS->IAIT; + pIARI = pIDS->IARI; + pIARDW = pIDS->IARDW; + pIARDH = pIDS->IARDH; + pIARDX = pIDS->IARDX; + pIARDY = pIDS->IARDY; + pIAID = pIDS->IAID; + } else { + IADT.reset(new CJBig2_ArithIntDecoder()); + IAFS.reset(new CJBig2_ArithIntDecoder()); + IADS.reset(new CJBig2_ArithIntDecoder()); + IAIT.reset(new CJBig2_ArithIntDecoder()); + IARI.reset(new CJBig2_ArithIntDecoder()); + IARDW.reset(new CJBig2_ArithIntDecoder()); + IARDH.reset(new CJBig2_ArithIntDecoder()); + IARDX.reset(new CJBig2_ArithIntDecoder()); + IARDY.reset(new CJBig2_ArithIntDecoder()); + IAID.reset(new CJBig2_ArithIaidDecoder(SBSYMCODELEN)); + pIADT = IADT.get(); + pIAFS = IAFS.get(); + pIADS = IADS.get(); + pIAIT = IAIT.get(); + pIARI = IARI.get(); + pIARDW = IARDW.get(); + pIARDH = IARDH.get(); + pIARDX = IARDX.get(); + pIARDY = IARDY.get(); + pIAID = IAID.get(); + } + std::unique_ptr SBREG(new CJBig2_Image(SBW, SBH)); + SBREG->fill(SBDEFPIXEL); + int32_t STRIPT; + pIADT->decode(pArithDecoder, &STRIPT); + STRIPT *= SBSTRIPS; + STRIPT = -STRIPT; + int32_t FIRSTS = 0; + FX_DWORD NINSTANCES = 0; + while (NINSTANCES < SBNUMINSTANCES) { + int32_t CURS; + int32_t DT; + pIADT->decode(pArithDecoder, &DT); + DT *= SBSTRIPS; + STRIPT += DT; + bool bFirst = true; + for (;;) { + if (bFirst) { + int32_t DFS; + pIAFS->decode(pArithDecoder, &DFS); + FIRSTS += DFS; + CURS = FIRSTS; + bFirst = false; + } else { + int32_t IDS; + if (!pIADS->decode(pArithDecoder, &IDS)) + break; + CURS += IDS + SBDSOFFSET; + } + if (NINSTANCES >= SBNUMINSTANCES) { + break; + } + int CURT = 0; + if (SBSTRIPS != 1) + pIAIT->decode(pArithDecoder, &CURT); + + int32_t TI = STRIPT + CURT; + FX_DWORD IDI; + pIAID->decode(pArithDecoder, &IDI); + if (IDI >= SBNUMSYMS) + return nullptr; + + int RI; + if (SBREFINE == 0) + RI = 0; + else + pIARI->decode(pArithDecoder, &RI); + + std::unique_ptr IBI; + CJBig2_Image* pIBI; + if (RI == 0) { + pIBI = SBSYMS[IDI]; + } else { + int32_t RDWI; + int32_t RDHI; + int32_t RDXI; + int32_t RDYI; + pIARDW->decode(pArithDecoder, &RDWI); + pIARDH->decode(pArithDecoder, &RDHI); + pIARDX->decode(pArithDecoder, &RDXI); + pIARDY->decode(pArithDecoder, &RDYI); + CJBig2_Image* IBOI = SBSYMS[IDI]; + FX_DWORD WOI = IBOI->m_nWidth; + FX_DWORD HOI = IBOI->m_nHeight; + if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) { + return nullptr; + } + std::unique_ptr pGRRD(new CJBig2_GRRDProc()); + pGRRD->GRW = WOI + RDWI; + pGRRD->GRH = HOI + RDHI; + pGRRD->GRTEMPLATE = SBRTEMPLATE; + pGRRD->GRREFERENCE = IBOI; + pGRRD->GRREFERENCEDX = (RDWI >> 1) + RDXI; + pGRRD->GRREFERENCEDY = (RDHI >> 1) + RDYI; + pGRRD->TPGRON = 0; + pGRRD->GRAT[0] = SBRAT[0]; + pGRRD->GRAT[1] = SBRAT[1]; + pGRRD->GRAT[2] = SBRAT[2]; + pGRRD->GRAT[3] = SBRAT[3]; + IBI.reset(pGRRD->decode(pArithDecoder, grContext)); + pIBI = IBI.get(); + } + if (!pIBI) + return nullptr; + + FX_DWORD WI = pIBI->m_nWidth; + FX_DWORD HI = pIBI->m_nHeight; + if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPRIGHT) || + (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { + CURS += WI - 1; + } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_BOTTOMLEFT) || + (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { + CURS += HI - 1; + } + int32_t SI = CURS; + if (TRANSPOSED == 0) { + switch (REFCORNER) { + case JBIG2_CORNER_TOPLEFT: + SBREG->composeFrom(SI, TI, pIBI, SBCOMBOP); + break; + case JBIG2_CORNER_TOPRIGHT: + SBREG->composeFrom(SI - WI + 1, TI, pIBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMLEFT: + SBREG->composeFrom(SI, TI - HI + 1, pIBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMRIGHT: + SBREG->composeFrom(SI - WI + 1, TI - HI + 1, pIBI, SBCOMBOP); + break; + } + } else { + switch (REFCORNER) { + case JBIG2_CORNER_TOPLEFT: + SBREG->composeFrom(TI, SI, pIBI, SBCOMBOP); + break; + case JBIG2_CORNER_TOPRIGHT: + SBREG->composeFrom(TI - WI + 1, SI, pIBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMLEFT: + SBREG->composeFrom(TI, SI - HI + 1, pIBI, SBCOMBOP); + break; + case JBIG2_CORNER_BOTTOMRIGHT: + SBREG->composeFrom(TI - WI + 1, SI - HI + 1, pIBI, SBCOMBOP); + break; + } + } + if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || + (REFCORNER == JBIG2_CORNER_BOTTOMLEFT))) { + CURS += WI - 1; + } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || + (REFCORNER == JBIG2_CORNER_TOPRIGHT))) { + CURS += HI - 1; + } + ++NINSTANCES; + } + } + return SBREG.release(); +} diff --git a/core/fxcodec/jbig2/JBig2_TrdProc.h b/core/fxcodec/jbig2/JBig2_TrdProc.h new file mode 100644 index 0000000000..090e564726 --- /dev/null +++ b/core/fxcodec/jbig2/JBig2_TrdProc.h @@ -0,0 +1,82 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_JBIG2_JBIG2_TRDPROC_H_ +#define CORE_FXCODEC_JBIG2_JBIG2_TRDPROC_H_ + +#include "core/fxcodec/jbig2/JBig2_Image.h" +#include "core/include/fxcrt/fx_system.h" + +class CJBig2_ArithDecoder; +class CJBig2_ArithIaidDecoder; +class CJBig2_ArithIntDecoder; +class CJBig2_BitStream; +class CJBig2_HuffmanTable; +struct JBig2ArithCtx; +struct JBig2HuffmanCode; + +struct JBig2IntDecoderState { + CJBig2_ArithIntDecoder* IADT; + CJBig2_ArithIntDecoder* IAFS; + CJBig2_ArithIntDecoder* IADS; + CJBig2_ArithIntDecoder* IAIT; + CJBig2_ArithIntDecoder* IARI; + CJBig2_ArithIntDecoder* IARDW; + CJBig2_ArithIntDecoder* IARDH; + CJBig2_ArithIntDecoder* IARDX; + CJBig2_ArithIntDecoder* IARDY; + CJBig2_ArithIaidDecoder* IAID; +}; + +enum JBig2Corner { + JBIG2_CORNER_BOTTOMLEFT = 0, + JBIG2_CORNER_TOPLEFT = 1, + JBIG2_CORNER_BOTTOMRIGHT = 2, + JBIG2_CORNER_TOPRIGHT = 3 +}; + +class CJBig2_TRDProc { + public: + CJBig2_Image* decode_Huffman(CJBig2_BitStream* pStream, + JBig2ArithCtx* grContext); + + CJBig2_Image* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, + JBig2ArithCtx* grContext, + JBig2IntDecoderState* pIDS); + + public: + FX_BOOL SBHUFF; + FX_BOOL SBREFINE; + FX_DWORD SBW; + FX_DWORD SBH; + FX_DWORD SBNUMINSTANCES; + FX_DWORD SBSTRIPS; + FX_DWORD SBNUMSYMS; + + JBig2HuffmanCode* SBSYMCODES; + uint8_t SBSYMCODELEN; + + CJBig2_Image** SBSYMS; + FX_BOOL SBDEFPIXEL; + + JBig2ComposeOp SBCOMBOP; + FX_BOOL TRANSPOSED; + + JBig2Corner REFCORNER; + int8_t SBDSOFFSET; + CJBig2_HuffmanTable* SBHUFFFS; + CJBig2_HuffmanTable* SBHUFFDS; + CJBig2_HuffmanTable* SBHUFFDT; + CJBig2_HuffmanTable* SBHUFFRDW; + CJBig2_HuffmanTable* SBHUFFRDH; + CJBig2_HuffmanTable* SBHUFFRDX; + CJBig2_HuffmanTable* SBHUFFRDY; + CJBig2_HuffmanTable* SBHUFFRSIZE; + FX_BOOL SBRTEMPLATE; + int8_t SBRAT[4]; +}; + +#endif // CORE_FXCODEC_JBIG2_JBIG2_TRDPROC_H_ diff --git a/core/fxcodec/lbmp/fx_bmp.cpp b/core/fxcodec/lbmp/fx_bmp.cpp new file mode 100644 index 0000000000..15384d56ff --- /dev/null +++ b/core/fxcodec/lbmp/fx_bmp.cpp @@ -0,0 +1,948 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/lbmp/fx_bmp.h" + +#include + +namespace { + +const size_t kBmpCoreHeaderSize = 12; +const size_t kBmpInfoHeaderSize = 40; + +// TODO(thestig): Replace with FXDWORD_GET_LSBFIRST? +FX_DWORD GetDWord_LSBFirst(uint8_t* p) { + return p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24); +} + +void SetDWord_LSBFirst(uint8_t* p, FX_DWORD v) { + p[0] = (uint8_t)v; + p[1] = (uint8_t)(v >> 8); + p[2] = (uint8_t)(v >> 16); + p[3] = (uint8_t)(v >> 24); +} +} // namespace + +FX_WORD GetWord_LSBFirst(uint8_t* p) { + return p[0] | (p[1] << 8); +} +void SetWord_LSBFirst(uint8_t* p, FX_WORD v) { + p[0] = (uint8_t)v; + p[1] = (uint8_t)(v >> 8); +} +void bmp_error(bmp_decompress_struct_p bmp_ptr, const FX_CHAR* err_msg) { + if (bmp_ptr && bmp_ptr->bmp_error_fn) { + bmp_ptr->bmp_error_fn(bmp_ptr, err_msg); + } +} +bmp_decompress_struct_p bmp_create_decompress() { + bmp_decompress_struct_p bmp_ptr = FX_Alloc(bmp_decompress_struct, 1); + if (bmp_ptr == NULL) { + return NULL; + } + FXSYS_memset(bmp_ptr, 0, sizeof(bmp_decompress_struct)); + bmp_ptr->decode_status = BMP_D_STATUS_HEADER; + bmp_ptr->bmp_header_ptr = FX_Alloc(BmpFileHeader, 1); + return bmp_ptr; +} +void bmp_destroy_decompress(bmp_decompress_struct_pp bmp_ptr_ptr) { + if (bmp_ptr_ptr == NULL || *bmp_ptr_ptr == NULL) { + return; + } + bmp_decompress_struct_p bmp_ptr = *bmp_ptr_ptr; + *bmp_ptr_ptr = NULL; + if (bmp_ptr->out_row_buffer) { + FX_Free(bmp_ptr->out_row_buffer); + } + FX_Free(bmp_ptr->pal_ptr); + FX_Free(bmp_ptr->bmp_header_ptr); + FX_Free(bmp_ptr); +} +int32_t bmp_read_header(bmp_decompress_struct_p bmp_ptr) { + if (bmp_ptr == NULL) { + return 0; + } + FX_DWORD skip_size_org = bmp_ptr->skip_size; + if (bmp_ptr->decode_status == BMP_D_STATUS_HEADER) { + ASSERT(sizeof(BmpFileHeader) == 14); + BmpFileHeader* bmp_header_ptr = NULL; + if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_header_ptr, 14) == NULL) { + return 2; + } + bmp_ptr->bmp_header_ptr->bfType = + GetWord_LSBFirst((uint8_t*)&bmp_header_ptr->bfType); + bmp_ptr->bmp_header_ptr->bfOffBits = + GetDWord_LSBFirst((uint8_t*)&bmp_header_ptr->bfOffBits); + bmp_ptr->data_size = GetDWord_LSBFirst((uint8_t*)&bmp_header_ptr->bfSize); + if (bmp_ptr->bmp_header_ptr->bfType != BMP_SIGNATURE) { + bmp_error(bmp_ptr, "Not A Bmp Image"); + return 0; + } + if (bmp_ptr->avail_in < sizeof(FX_DWORD)) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + bmp_ptr->img_ifh_size = + GetDWord_LSBFirst(bmp_ptr->next_in + bmp_ptr->skip_size); + bmp_ptr->pal_type = 0; + static_assert(sizeof(BmpCoreHeader) == kBmpCoreHeaderSize, + "BmpCoreHeader has wrong size"); + static_assert(sizeof(BmpInfoHeader) == kBmpInfoHeaderSize, + "BmpInfoHeader has wrong size"); + switch (bmp_ptr->img_ifh_size) { + case kBmpCoreHeaderSize: { + bmp_ptr->pal_type = 1; + BmpCoreHeaderPtr bmp_core_header_ptr = NULL; + if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_core_header_ptr, + bmp_ptr->img_ifh_size) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + bmp_ptr->width = + GetWord_LSBFirst((uint8_t*)&bmp_core_header_ptr->bcWidth); + bmp_ptr->height = + GetWord_LSBFirst((uint8_t*)&bmp_core_header_ptr->bcHeight); + bmp_ptr->bitCounts = + GetWord_LSBFirst((uint8_t*)&bmp_core_header_ptr->bcBitCount); + bmp_ptr->compress_flag = BMP_RGB; + bmp_ptr->imgTB_flag = FALSE; + } break; + case kBmpInfoHeaderSize: { + BmpInfoHeaderPtr bmp_info_header_ptr = NULL; + if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_info_header_ptr, + bmp_ptr->img_ifh_size) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + bmp_ptr->width = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biWidth); + bmp_ptr->height = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biHeight); + bmp_ptr->bitCounts = + GetWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biBitCount); + bmp_ptr->compress_flag = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biCompression); + bmp_ptr->color_used = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biClrUsed); + bmp_ptr->dpi_x = (int32_t)GetDWord_LSBFirst( + (uint8_t*)&bmp_info_header_ptr->biXPelsPerMeter); + bmp_ptr->dpi_y = (int32_t)GetDWord_LSBFirst( + (uint8_t*)&bmp_info_header_ptr->biYPelsPerMeter); + if (bmp_ptr->height < 0) { + bmp_ptr->height = -bmp_ptr->height; + bmp_ptr->imgTB_flag = TRUE; + } + } break; + default: { + if (bmp_ptr->img_ifh_size > + std::min(kBmpInfoHeaderSize, sizeof(BmpInfoHeader))) { + BmpInfoHeaderPtr bmp_info_header_ptr = NULL; + if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_info_header_ptr, + bmp_ptr->img_ifh_size) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + FX_WORD biPlanes; + bmp_ptr->width = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biWidth); + bmp_ptr->height = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biHeight); + bmp_ptr->bitCounts = + GetWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biBitCount); + bmp_ptr->compress_flag = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biCompression); + bmp_ptr->color_used = + GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biClrUsed); + biPlanes = GetWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biPlanes); + bmp_ptr->dpi_x = GetDWord_LSBFirst( + (uint8_t*)&bmp_info_header_ptr->biXPelsPerMeter); + bmp_ptr->dpi_y = GetDWord_LSBFirst( + (uint8_t*)&bmp_info_header_ptr->biYPelsPerMeter); + if (bmp_ptr->height < 0) { + bmp_ptr->height = -bmp_ptr->height; + bmp_ptr->imgTB_flag = TRUE; + } + if (bmp_ptr->compress_flag == BMP_RGB && biPlanes == 1 && + bmp_ptr->color_used == 0) { + break; + } + } + bmp_error(bmp_ptr, "Unsupported Bmp File"); + return 0; + } + } + ASSERT(bmp_ptr->width > 0); + ASSERT(bmp_ptr->compress_flag <= BMP_BITFIELDS); + switch (bmp_ptr->bitCounts) { + case 1: + case 4: + case 8: + case 16: + case 24: { + if (bmp_ptr->color_used > ((FX_DWORD)1) << bmp_ptr->bitCounts) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + } + case 32: { + if (bmp_ptr->width <= 0 || bmp_ptr->compress_flag > BMP_BITFIELDS) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + } break; + default: + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + bmp_ptr->src_row_bytes = BMP_WIDTHBYTES(bmp_ptr->width, bmp_ptr->bitCounts); + switch (bmp_ptr->bitCounts) { + case 1: + case 4: + case 8: + bmp_ptr->out_row_bytes = BMP_WIDTHBYTES(bmp_ptr->width, 8); + bmp_ptr->components = 1; + break; + case 16: + case 24: + bmp_ptr->out_row_bytes = BMP_WIDTHBYTES(bmp_ptr->width, 24); + bmp_ptr->components = 3; + break; + case 32: + bmp_ptr->out_row_bytes = bmp_ptr->src_row_bytes; + bmp_ptr->components = 4; + break; + } + FX_Free(bmp_ptr->out_row_buffer); + bmp_ptr->out_row_buffer = FX_Alloc(uint8_t, bmp_ptr->out_row_bytes); + FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_PAL); + } + if (bmp_ptr->decode_status == BMP_D_STATUS_PAL) { + skip_size_org = bmp_ptr->skip_size; + if (bmp_ptr->compress_flag == BMP_BITFIELDS) { + if (bmp_ptr->bitCounts != 16 && bmp_ptr->bitCounts != 32) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + FX_DWORD* mask; + if (bmp_read_data(bmp_ptr, (uint8_t**)&mask, 3 * sizeof(FX_DWORD)) == + NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + bmp_ptr->mask_red = GetDWord_LSBFirst((uint8_t*)&mask[0]); + bmp_ptr->mask_green = GetDWord_LSBFirst((uint8_t*)&mask[1]); + bmp_ptr->mask_blue = GetDWord_LSBFirst((uint8_t*)&mask[2]); + if (bmp_ptr->mask_red & bmp_ptr->mask_green || + bmp_ptr->mask_red & bmp_ptr->mask_blue || + bmp_ptr->mask_green & bmp_ptr->mask_blue) { + bmp_error(bmp_ptr, "The Bitfield Bmp File Is Corrupt"); + return 0; + } + if (bmp_ptr->bmp_header_ptr->bfOffBits < 26 + bmp_ptr->img_ifh_size) { + bmp_ptr->bmp_header_ptr->bfOffBits = 26 + bmp_ptr->img_ifh_size; + } + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA_PRE); + return 1; + } else if (bmp_ptr->bitCounts == 16) { + bmp_ptr->mask_red = 0x7C00; + bmp_ptr->mask_green = 0x03E0; + bmp_ptr->mask_blue = 0x001F; + } + bmp_ptr->pal_num = 0; + if (bmp_ptr->bitCounts < 16) { + bmp_ptr->pal_num = 1 << bmp_ptr->bitCounts; + if (bmp_ptr->color_used != 0) { + bmp_ptr->pal_num = bmp_ptr->color_used; + } + uint8_t* src_pal_ptr = NULL; + FX_DWORD src_pal_size = bmp_ptr->pal_num * (bmp_ptr->pal_type ? 3 : 4); + if (bmp_read_data(bmp_ptr, (uint8_t**)&src_pal_ptr, src_pal_size) == + NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + FX_Free(bmp_ptr->pal_ptr); + bmp_ptr->pal_ptr = FX_Alloc(FX_DWORD, bmp_ptr->pal_num); + int32_t src_pal_index = 0; + if (bmp_ptr->pal_type == BMP_PAL_OLD) { + while (src_pal_index < bmp_ptr->pal_num) { + bmp_ptr->pal_ptr[src_pal_index++] = BMP_PAL_ENCODE( + 0x00, src_pal_ptr[2], src_pal_ptr[1], src_pal_ptr[0]); + src_pal_ptr += 3; + } + } else { + while (src_pal_index < bmp_ptr->pal_num) { + bmp_ptr->pal_ptr[src_pal_index++] = BMP_PAL_ENCODE( + src_pal_ptr[3], src_pal_ptr[2], src_pal_ptr[1], src_pal_ptr[0]); + src_pal_ptr += 4; + } + } + } + if (bmp_ptr->bmp_header_ptr->bfOffBits < + 14 + bmp_ptr->img_ifh_size + + bmp_ptr->pal_num * (bmp_ptr->pal_type ? 3 : 4)) { + bmp_ptr->bmp_header_ptr->bfOffBits = + 14 + bmp_ptr->img_ifh_size + + bmp_ptr->pal_num * (bmp_ptr->pal_type ? 3 : 4); + } + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA_PRE); + } + return 1; +} +int32_t bmp_decode_image(bmp_decompress_struct_p bmp_ptr) { + if (bmp_ptr->decode_status == BMP_D_STATUS_DATA_PRE) { + bmp_ptr->avail_in = 0; + if (!bmp_ptr->bmp_get_data_position_fn( + bmp_ptr, bmp_ptr->bmp_header_ptr->bfOffBits)) { + bmp_ptr->decode_status = BMP_D_STATUS_TAIL; + bmp_error(bmp_ptr, "The Bmp File Is Corrupt, Unexpected Stream Offset"); + return 0; + } + bmp_ptr->row_num = 0; + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); + } + if (bmp_ptr->decode_status == BMP_D_STATUS_DATA) { + switch (bmp_ptr->compress_flag) { + case BMP_RGB: + case BMP_BITFIELDS: + return bmp_decode_rgb(bmp_ptr); + case BMP_RLE8: + return bmp_decode_rle8(bmp_ptr); + case BMP_RLE4: + return bmp_decode_rle4(bmp_ptr); + } + } + bmp_error(bmp_ptr, "Any Uncontrol Error"); + return 0; +} +int32_t bmp_decode_rgb(bmp_decompress_struct_p bmp_ptr) { + uint8_t* row_buf = bmp_ptr->out_row_buffer; + uint8_t* des_buf = NULL; + while (bmp_ptr->row_num < bmp_ptr->height) { + if (bmp_read_data(bmp_ptr, &des_buf, bmp_ptr->src_row_bytes) == NULL) { + return 2; + } + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); + switch (bmp_ptr->bitCounts) { + case 1: { + for (int32_t col = 0; col < bmp_ptr->width; col++) { + *row_buf++ = des_buf[col >> 3] & (0x80 >> (col % 8)) ? 0x01 : 0x00; + } + } break; + case 4: { + for (int32_t col = 0; col < bmp_ptr->width; col++) { + *row_buf++ = (col & 0x01) ? (des_buf[col >> 1] & 0x0F) + : ((des_buf[col >> 1] & 0xF0) >> 4); + } + } break; + case 16: { + FX_WORD* buf = (FX_WORD*)des_buf; + uint8_t blue_bits = 0; + uint8_t green_bits = 0; + uint8_t red_bits = 0; + for (int32_t i = 0; i < 16; i++) { + if ((bmp_ptr->mask_blue >> i) & 0x01) { + blue_bits++; + } + if ((bmp_ptr->mask_green >> i) & 0x01) { + green_bits++; + } + if ((bmp_ptr->mask_red >> i) & 0x01) { + red_bits++; + } + } + green_bits += blue_bits; + red_bits += green_bits; + blue_bits = 8 - blue_bits; + green_bits -= 8; + red_bits -= 8; + for (int32_t col = 0; col < bmp_ptr->width; col++) { + *buf = GetWord_LSBFirst((uint8_t*)buf); + *row_buf++ = (uint8_t)((*buf & bmp_ptr->mask_blue) << blue_bits); + *row_buf++ = (uint8_t)((*buf & bmp_ptr->mask_green) >> green_bits); + *row_buf++ = (uint8_t)((*buf++ & bmp_ptr->mask_red) >> red_bits); + } + } break; + case 8: + case 24: + case 32: + FXSYS_memcpy(bmp_ptr->out_row_buffer, des_buf, bmp_ptr->src_row_bytes); + break; + } + row_buf = bmp_ptr->out_row_buffer; + bmp_ptr->bmp_get_row_fn(bmp_ptr, + bmp_ptr->imgTB_flag + ? bmp_ptr->row_num++ + : (bmp_ptr->height - 1 - bmp_ptr->row_num++), + bmp_ptr->out_row_buffer); + } + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); + return 1; +} +int32_t bmp_decode_rle8(bmp_decompress_struct_p bmp_ptr) { + uint8_t* first_byte_ptr = NULL; + uint8_t* second_byte_ptr = NULL; + bmp_ptr->col_num = 0; + while (TRUE) { + FX_DWORD skip_size_org = bmp_ptr->skip_size; + if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { + return 2; + } + switch (*first_byte_ptr) { + case RLE_MARKER: { + if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + switch (*first_byte_ptr) { + case RLE_EOL: { + if (bmp_ptr->row_num >= bmp_ptr->height) { + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + bmp_ptr->bmp_get_row_fn( + bmp_ptr, bmp_ptr->imgTB_flag + ? bmp_ptr->row_num++ + : (bmp_ptr->height - 1 - bmp_ptr->row_num++), + bmp_ptr->out_row_buffer); + bmp_ptr->col_num = 0; + FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); + continue; + } + case RLE_EOI: { + if (bmp_ptr->row_num < bmp_ptr->height) { + bmp_ptr->bmp_get_row_fn( + bmp_ptr, bmp_ptr->imgTB_flag + ? bmp_ptr->row_num++ + : (bmp_ptr->height - 1 - bmp_ptr->row_num++), + bmp_ptr->out_row_buffer); + } + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); + return 1; + } + case RLE_DELTA: { + uint8_t* delta_ptr; + if (bmp_read_data(bmp_ptr, &delta_ptr, 2) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + bmp_ptr->col_num += (int32_t)delta_ptr[0]; + int32_t bmp_row_num_next = bmp_ptr->row_num + (int32_t)delta_ptr[1]; + if (bmp_ptr->col_num >= bmp_ptr->out_row_bytes || + bmp_row_num_next >= bmp_ptr->height) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt Or Not Supported"); + return 0; + } + while (bmp_ptr->row_num < bmp_row_num_next) { + FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); + bmp_ptr->bmp_get_row_fn( + bmp_ptr, bmp_ptr->imgTB_flag + ? bmp_ptr->row_num++ + : (bmp_ptr->height - 1 - bmp_ptr->row_num++), + bmp_ptr->out_row_buffer); + } + } break; + default: { + if ((int32_t)(*first_byte_ptr) > + bmp_ptr->src_row_bytes - bmp_ptr->col_num) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + if (bmp_read_data(bmp_ptr, &second_byte_ptr, + *first_byte_ptr & 1 ? *first_byte_ptr + 1 + : *first_byte_ptr) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + FXSYS_memcpy(bmp_ptr->out_row_buffer + bmp_ptr->col_num, + second_byte_ptr, *first_byte_ptr); + bmp_ptr->col_num += (int32_t)(*first_byte_ptr); + } + } + } break; + default: { + if (bmp_read_data(bmp_ptr, &second_byte_ptr, 1) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + if ((int32_t)(*first_byte_ptr) > + bmp_ptr->src_row_bytes - bmp_ptr->col_num) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + FXSYS_memset(bmp_ptr->out_row_buffer + bmp_ptr->col_num, + *second_byte_ptr, *first_byte_ptr); + bmp_ptr->col_num += (int32_t)(*first_byte_ptr); + } + } + } + bmp_error(bmp_ptr, "Any Uncontrol Error"); + return 0; +} +int32_t bmp_decode_rle4(bmp_decompress_struct_p bmp_ptr) { + uint8_t* first_byte_ptr = NULL; + uint8_t* second_byte_ptr = NULL; + bmp_ptr->col_num = 0; + while (TRUE) { + FX_DWORD skip_size_org = bmp_ptr->skip_size; + if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { + return 2; + } + switch (*first_byte_ptr) { + case RLE_MARKER: { + if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + switch (*first_byte_ptr) { + case RLE_EOL: { + if (bmp_ptr->row_num >= bmp_ptr->height) { + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + bmp_ptr->bmp_get_row_fn( + bmp_ptr, bmp_ptr->imgTB_flag + ? bmp_ptr->row_num++ + : (bmp_ptr->height - 1 - bmp_ptr->row_num++), + bmp_ptr->out_row_buffer); + bmp_ptr->col_num = 0; + FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); + continue; + } + case RLE_EOI: { + if (bmp_ptr->row_num < bmp_ptr->height) { + bmp_ptr->bmp_get_row_fn( + bmp_ptr, bmp_ptr->imgTB_flag + ? bmp_ptr->row_num++ + : (bmp_ptr->height - 1 - bmp_ptr->row_num++), + bmp_ptr->out_row_buffer); + } + bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); + return 1; + } + case RLE_DELTA: { + uint8_t* delta_ptr; + if (bmp_read_data(bmp_ptr, &delta_ptr, 2) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + bmp_ptr->col_num += (int32_t)delta_ptr[0]; + int32_t bmp_row_num_next = bmp_ptr->row_num + (int32_t)delta_ptr[1]; + if (bmp_ptr->col_num >= bmp_ptr->out_row_bytes || + bmp_row_num_next >= bmp_ptr->height) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt Or Not Supported"); + return 0; + } + while (bmp_ptr->row_num < bmp_row_num_next) { + FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); + bmp_ptr->bmp_get_row_fn( + bmp_ptr, bmp_ptr->imgTB_flag + ? bmp_ptr->row_num++ + : (bmp_ptr->height - 1 - bmp_ptr->row_num++), + bmp_ptr->out_row_buffer); + } + } break; + default: { + uint8_t size = (uint8_t)(((FX_WORD)(*first_byte_ptr) + 1) >> 1); + if ((int32_t)*first_byte_ptr >= + bmp_ptr->out_row_bytes - bmp_ptr->col_num) { + if (size + (bmp_ptr->col_num >> 1) > bmp_ptr->src_row_bytes) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + *first_byte_ptr = bmp_ptr->out_row_bytes - bmp_ptr->col_num - 1; + } + if (bmp_read_data(bmp_ptr, &second_byte_ptr, + size & 1 ? size + 1 : size) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + for (uint8_t i = 0; i < *first_byte_ptr; i++) { + if (i & 0x01) { + *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = + (*second_byte_ptr++ & 0x0F); + } else { + *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = + ((*second_byte_ptr & 0xF0) >> 4); + } + } + } + } + } break; + default: { + if (bmp_read_data(bmp_ptr, &second_byte_ptr, 1) == NULL) { + bmp_ptr->skip_size = skip_size_org; + return 2; + } + if ((int32_t)*first_byte_ptr > + bmp_ptr->out_row_bytes - bmp_ptr->col_num) { + uint8_t size = (uint8_t)(((FX_WORD)(*first_byte_ptr) + 1) >> 1); + if (size + (bmp_ptr->col_num >> 1) > bmp_ptr->src_row_bytes) { + bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); + return 0; + } + *first_byte_ptr = bmp_ptr->out_row_bytes - bmp_ptr->col_num - 1; + } + for (uint8_t i = 0; i < *first_byte_ptr; i++) { + if (i & 0x01) { + *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = + (*second_byte_ptr & 0x0F); + } else { + *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = + ((*second_byte_ptr & 0xF0) >> 4); + } + } + } + } + } + bmp_error(bmp_ptr, "Any Uncontrol Error"); + return 0; +} +uint8_t* bmp_read_data(bmp_decompress_struct_p bmp_ptr, + uint8_t** des_buf_pp, + FX_DWORD data_size) { + if (bmp_ptr == NULL || bmp_ptr->avail_in < bmp_ptr->skip_size + data_size) { + return NULL; + } + *des_buf_pp = bmp_ptr->next_in + bmp_ptr->skip_size; + bmp_ptr->skip_size += data_size; + return *des_buf_pp; +} +void bmp_save_decoding_status(bmp_decompress_struct_p bmp_ptr, int32_t status) { + bmp_ptr->decode_status = status; + bmp_ptr->next_in += bmp_ptr->skip_size; + bmp_ptr->avail_in -= bmp_ptr->skip_size; + bmp_ptr->skip_size = 0; +} +void bmp_input_buffer(bmp_decompress_struct_p bmp_ptr, + uint8_t* src_buf, + FX_DWORD src_size) { + bmp_ptr->next_in = src_buf; + bmp_ptr->avail_in = src_size; + bmp_ptr->skip_size = 0; +} +FX_DWORD bmp_get_avail_input(bmp_decompress_struct_p bmp_ptr, + uint8_t** avial_buf_ptr) { + if (avial_buf_ptr) { + *avial_buf_ptr = NULL; + if (bmp_ptr->avail_in > 0) { + *avial_buf_ptr = bmp_ptr->next_in; + } + } + return bmp_ptr->avail_in; +} +bmp_compress_struct_p bmp_create_compress() { + bmp_compress_struct_p bmp_ptr; + bmp_ptr = FX_Alloc(bmp_compress_struct, 1); + if (bmp_ptr) { + FXSYS_memset(bmp_ptr, 0, sizeof(bmp_compress_struct)); + } + return bmp_ptr; +} +void bmp_destroy_compress(bmp_compress_struct_p bmp_ptr) { + if (bmp_ptr) { + if (bmp_ptr->src_free && bmp_ptr->src_buf) { + FX_Free(bmp_ptr->src_buf); + } + FX_Free(bmp_ptr); + } +} +static void WriteFileHeader(BmpFileHeaderPtr head_ptr, uint8_t* dst_buf) { + FX_DWORD offset; + offset = 0; + SetWord_LSBFirst(&dst_buf[offset], head_ptr->bfType); + offset += 2; + SetDWord_LSBFirst(&dst_buf[offset], head_ptr->bfSize); + offset += 4; + SetWord_LSBFirst(&dst_buf[offset], head_ptr->bfReserved1); + offset += 2; + SetWord_LSBFirst(&dst_buf[offset], head_ptr->bfReserved2); + offset += 2; + SetDWord_LSBFirst(&dst_buf[offset], head_ptr->bfOffBits); + offset += 4; +} +static void WriteInfoHeader(BmpInfoHeaderPtr info_head_ptr, uint8_t* dst_buf) { + FX_DWORD offset; + offset = sizeof(BmpFileHeader); + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biSize); + offset += 4; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biWidth); + offset += 4; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biHeight); + offset += 4; + SetWord_LSBFirst(&dst_buf[offset], info_head_ptr->biPlanes); + offset += 2; + SetWord_LSBFirst(&dst_buf[offset], info_head_ptr->biBitCount); + offset += 2; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biCompression); + offset += 4; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biSizeImage); + offset += 4; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biXPelsPerMeter); + offset += 4; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biYPelsPerMeter); + offset += 4; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biClrUsed); + offset += 4; + SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biClrImportant); + offset += 4; +} +static void bmp_encode_bitfields(bmp_compress_struct_p bmp_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_size) { + if (bmp_ptr->info_header.biBitCount != 16 && + bmp_ptr->info_header.biBitCount != 32) { + return; + } + FX_DWORD size, dst_pos, i; + size = bmp_ptr->src_pitch * bmp_ptr->src_row * + bmp_ptr->info_header.biBitCount / 16; + dst_pos = bmp_ptr->file_header.bfOffBits; + dst_size += size; + dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); + if (dst_buf == NULL) { + return; + } + FXSYS_memset(&dst_buf[dst_pos], 0, size); + FX_DWORD mask_red; + FX_DWORD mask_green; + FX_DWORD mask_blue; + mask_red = 0x7C00; + mask_green = 0x03E0; + mask_blue = 0x001F; + if (bmp_ptr->info_header.biCompression == BMP_BITFIELDS) { + if (bmp_ptr->bit_type == BMP_BIT_565) { + mask_red = 0xF800; + mask_green = 0x07E0; + mask_blue = 0x001F; + } + if (bmp_ptr->info_header.biBitCount == 32) { + mask_red = 0xFF0000; + mask_green = 0x00FF00; + mask_blue = 0x0000FF; + } + SetDWord_LSBFirst(&dst_buf[dst_pos], mask_red); + dst_pos += 4; + SetDWord_LSBFirst(&dst_buf[dst_pos], mask_green); + dst_pos += 4; + SetDWord_LSBFirst(&dst_buf[dst_pos], mask_blue); + dst_pos += 4; + bmp_ptr->file_header.bfOffBits = dst_pos; + } + uint8_t blue_bits = 0; + uint8_t green_bits = 0; + uint8_t red_bits = 0; + for (i = 0; i < bmp_ptr->info_header.biBitCount; i++) { + if ((mask_blue >> i) & 0x01) { + blue_bits++; + } + if ((mask_green >> i) & 0x01) { + green_bits++; + } + if ((mask_red >> i) & 0x01) { + red_bits++; + } + } + green_bits += blue_bits; + red_bits += green_bits; + blue_bits = 8 - blue_bits; + green_bits -= 8; + red_bits -= 8; + i = 0; + for (int32_t row_num = bmp_ptr->src_row - 1; row_num > -1; row_num--, i = 0) { + while (i < bmp_ptr->src_width * bmp_ptr->src_bpp / 8) { + uint8_t b = bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch + i++]; + uint8_t g = bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch + i++]; + uint8_t r = bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch + i++]; + if (bmp_ptr->src_bpp == 32) { + i++; + } + FX_DWORD pix_val = 0; + pix_val |= (b >> blue_bits) & mask_blue; + pix_val |= (g << green_bits) & mask_green; + pix_val |= (r << red_bits) & mask_red; + if (bmp_ptr->info_header.biBitCount == 16) { + SetWord_LSBFirst(&dst_buf[dst_pos], pix_val); + dst_pos += 2; + } else { + SetDWord_LSBFirst(&dst_buf[dst_pos], pix_val); + dst_pos += 4; + } + } + } + dst_size = dst_pos; +} + +static void bmp_encode_rgb(bmp_compress_struct_p bmp_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_size) { + if (bmp_ptr->info_header.biBitCount == 16) { + bmp_encode_bitfields(bmp_ptr, dst_buf, dst_size); + return; + } + FX_DWORD size, dst_pos; + FX_DWORD dst_pitch = + (bmp_ptr->src_width * bmp_ptr->info_header.biBitCount + 31) / 32 * 4; + size = dst_pitch * bmp_ptr->src_row; + dst_pos = bmp_ptr->file_header.bfOffBits; + dst_size += size; + dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); + if (dst_buf == NULL) { + return; + } + FXSYS_memset(&dst_buf[dst_pos], 0, size); + for (int32_t row_num = bmp_ptr->src_row - 1; row_num > -1; row_num--) { + FXSYS_memcpy(&dst_buf[dst_pos], + &bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch], + bmp_ptr->src_pitch); + dst_pos += dst_pitch; + } + dst_size = dst_pos; +} +static uint8_t bmp_rle8_search(const uint8_t* buf, int32_t len) { + uint8_t num; + num = 1; + while (num < len) { + if (buf[num - 1] != buf[num] || num == 0xFF) { + break; + } + num++; + } + return num; +} +static void bmp_encode_rle8(bmp_compress_struct_p bmp_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_size) { + FX_DWORD size, dst_pos, index; + uint8_t rle[2] = {0}; + size = bmp_ptr->src_pitch * bmp_ptr->src_row * 2; + dst_pos = bmp_ptr->file_header.bfOffBits; + dst_size += size; + dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); + if (dst_buf == NULL) { + return; + } + FXSYS_memset(&dst_buf[dst_pos], 0, size); + for (int32_t row_num = bmp_ptr->src_row - 1, i = 0; row_num > -1;) { + index = row_num * bmp_ptr->src_pitch; + rle[0] = bmp_rle8_search(&bmp_ptr->src_buf[index + i], size - index - i); + rle[1] = bmp_ptr->src_buf[index + i]; + if (i + rle[0] >= (int32_t)bmp_ptr->src_pitch) { + rle[0] = uint8_t(bmp_ptr->src_pitch - i); + if (rle[0]) { + dst_buf[dst_pos++] = rle[0]; + dst_buf[dst_pos++] = rle[1]; + } + dst_buf[dst_pos++] = RLE_MARKER; + dst_buf[dst_pos++] = RLE_EOL; + i = 0; + row_num--; + } else { + i += rle[0]; + dst_buf[dst_pos++] = rle[0]; + dst_buf[dst_pos++] = rle[1]; + } + } + dst_buf[dst_pos++] = RLE_MARKER; + dst_buf[dst_pos++] = RLE_EOI; + dst_size = dst_pos; +} +static uint8_t bmp_rle4_search(const uint8_t* buf, int32_t len) { + uint8_t num; + num = 2; + while (num < len) { + if (buf[num - 2] != buf[num] || num == 0xFF) { + break; + } + num++; + } + return num; +} +static void bmp_encode_rle4(bmp_compress_struct_p bmp_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_size) { + FX_DWORD size, dst_pos, index; + uint8_t rle[2] = {0}; + size = bmp_ptr->src_pitch * bmp_ptr->src_row; + dst_pos = bmp_ptr->file_header.bfOffBits; + dst_size += size; + dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); + if (dst_buf == NULL) { + return; + } + FXSYS_memset(&dst_buf[dst_pos], 0, size); + for (int32_t row_num = bmp_ptr->src_row - 1, i = 0; row_num > -1; + rle[1] = 0) { + index = row_num * bmp_ptr->src_pitch; + rle[0] = bmp_rle4_search(&bmp_ptr->src_buf[index + i], size - index - i); + rle[1] |= (bmp_ptr->src_buf[index + i] & 0x0f) << 4; + rle[1] |= bmp_ptr->src_buf[index + i + 1] & 0x0f; + if (i + rle[0] >= (int32_t)bmp_ptr->src_pitch) { + rle[0] = uint8_t(bmp_ptr->src_pitch - i); + if (rle[0]) { + dst_buf[dst_pos++] = rle[0]; + dst_buf[dst_pos++] = rle[1]; + } + dst_buf[dst_pos++] = RLE_MARKER; + dst_buf[dst_pos++] = RLE_EOL; + i = 0; + row_num--; + } else { + i += rle[0]; + dst_buf[dst_pos++] = rle[0]; + dst_buf[dst_pos++] = rle[1]; + } + } + dst_buf[dst_pos++] = RLE_MARKER; + dst_buf[dst_pos++] = RLE_EOI; + dst_size = dst_pos; +} +FX_BOOL bmp_encode_image(bmp_compress_struct_p bmp_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_size) { + FX_DWORD head_size = sizeof(BmpFileHeader) + sizeof(BmpInfoHeader); + FX_DWORD pal_size = sizeof(FX_DWORD) * bmp_ptr->pal_num; + if (bmp_ptr->info_header.biClrUsed > 0 && + bmp_ptr->info_header.biClrUsed < bmp_ptr->pal_num) { + pal_size = sizeof(FX_DWORD) * bmp_ptr->info_header.biClrUsed; + } + dst_size = head_size + sizeof(FX_DWORD) * bmp_ptr->pal_num; + dst_buf = FX_TryAlloc(uint8_t, dst_size); + if (dst_buf == NULL) { + return FALSE; + } + FXSYS_memset(dst_buf, 0, dst_size); + bmp_ptr->file_header.bfOffBits = head_size; + if (bmp_ptr->pal_ptr && pal_size) { + FXSYS_memcpy(&dst_buf[head_size], bmp_ptr->pal_ptr, pal_size); + bmp_ptr->file_header.bfOffBits += pal_size; + } + WriteInfoHeader(&bmp_ptr->info_header, dst_buf); + switch (bmp_ptr->info_header.biCompression) { + case BMP_RGB: + bmp_encode_rgb(bmp_ptr, dst_buf, dst_size); + break; + case BMP_BITFIELDS: + bmp_encode_bitfields(bmp_ptr, dst_buf, dst_size); + break; + case BMP_RLE8: + bmp_encode_rle8(bmp_ptr, dst_buf, dst_size); + break; + case BMP_RLE4: + bmp_encode_rle4(bmp_ptr, dst_buf, dst_size); + break; + default: + break; + } + bmp_ptr->file_header.bfSize = dst_size; + WriteFileHeader(&bmp_ptr->file_header, dst_buf); + return TRUE; +} diff --git a/core/fxcodec/lbmp/fx_bmp.h b/core/fxcodec/lbmp/fx_bmp.h new file mode 100644 index 0000000000..2ef0c0a8b0 --- /dev/null +++ b/core/fxcodec/lbmp/fx_bmp.h @@ -0,0 +1,155 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_LBMP_FX_BMP_H_ +#define CORE_FXCODEC_LBMP_FX_BMP_H_ + +#include + +#include "core/include/fxcrt/fx_basic.h" + +#define BMP_WIDTHBYTES(width, bitCount) ((width * bitCount) + 31) / 32 * 4 +#define BMP_PAL_ENCODE(a, r, g, b) \ + (((FX_DWORD)(a) << 24) | ((r) << 16) | ((g) << 8) | (b)) +#define BMP_D_STATUS_HEADER 0x01 +#define BMP_D_STATUS_PAL 0x02 +#define BMP_D_STATUS_DATA_PRE 0x03 +#define BMP_D_STATUS_DATA 0x04 +#define BMP_D_STATUS_TAIL 0x00 +#define BMP_SIGNATURE 0x4D42 +#define BMP_PAL_NEW 0 +#define BMP_PAL_OLD 1 +#define RLE_MARKER 0 +#define RLE_EOL 0 +#define RLE_EOI 1 +#define RLE_DELTA 2 +#define BMP_RGB 0L +#define BMP_RLE8 1L +#define BMP_RLE4 2L +#define BMP_BITFIELDS 3L +#define BMP_BIT_555 0 +#define BMP_BIT_565 1 +#define BMP_MAX_ERROR_SIZE 256 +#pragma pack(1) +typedef struct tagBmpFileHeader { + FX_WORD bfType; + FX_DWORD bfSize; + FX_WORD bfReserved1; + FX_WORD bfReserved2; + FX_DWORD bfOffBits; +} BmpFileHeader, *BmpFileHeaderPtr; +typedef struct tagBmpCoreHeader { + FX_DWORD bcSize; + FX_WORD bcWidth; + FX_WORD bcHeight; + FX_WORD bcPlanes; + FX_WORD bcBitCount; +} BmpCoreHeader, *BmpCoreHeaderPtr; +typedef struct tagBmpInfoHeader { + FX_DWORD biSize; + int32_t biWidth; + int32_t biHeight; + FX_WORD biPlanes; + FX_WORD biBitCount; + FX_DWORD biCompression; + FX_DWORD biSizeImage; + int32_t biXPelsPerMeter; + int32_t biYPelsPerMeter; + FX_DWORD biClrUsed; + FX_DWORD biClrImportant; +} BmpInfoHeader, *BmpInfoHeaderPtr; +#pragma pack() + +typedef struct tag_bmp_decompress_struct bmp_decompress_struct; +typedef bmp_decompress_struct* bmp_decompress_struct_p; +typedef bmp_decompress_struct_p* bmp_decompress_struct_pp; +struct tag_bmp_decompress_struct { + jmp_buf jmpbuf; + FX_CHAR* err_ptr; + void (*bmp_error_fn)(bmp_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); + + void* context_ptr; + + BmpFileHeaderPtr bmp_header_ptr; + BmpInfoHeaderPtr bmp_infoheader_ptr; + int32_t width; + int32_t height; + FX_DWORD compress_flag; + int32_t components; + int32_t src_row_bytes; + int32_t out_row_bytes; + uint8_t* out_row_buffer; + FX_WORD bitCounts; + FX_DWORD color_used; + FX_BOOL imgTB_flag; + int32_t pal_num; + int32_t pal_type; + FX_DWORD* pal_ptr; + FX_DWORD data_size; + FX_DWORD img_data_offset; + FX_DWORD img_ifh_size; + int32_t row_num; + int32_t col_num; + int32_t dpi_x; + int32_t dpi_y; + FX_DWORD mask_red; + FX_DWORD mask_green; + FX_DWORD mask_blue; + + FX_BOOL (*bmp_get_data_position_fn)(bmp_decompress_struct_p bmp_ptr, + FX_DWORD cur_pos); + void (*bmp_get_row_fn)(bmp_decompress_struct_p bmp_ptr, + int32_t row_num, + uint8_t* row_buf); + uint8_t* next_in; + FX_DWORD avail_in; + FX_DWORD skip_size; + int32_t decode_status; +}; +void bmp_error(bmp_decompress_struct_p bmp_ptr, const FX_CHAR* err_msg); +bmp_decompress_struct_p bmp_create_decompress(); +void bmp_destroy_decompress(bmp_decompress_struct_pp bmp_ptr_ptr); +int32_t bmp_read_header(bmp_decompress_struct_p bmp_ptr); +int32_t bmp_decode_image(bmp_decompress_struct_p bmp_ptr); +int32_t bmp_decode_rgb(bmp_decompress_struct_p bmp_ptr); +int32_t bmp_decode_rle8(bmp_decompress_struct_p bmp_ptr); +int32_t bmp_decode_rle4(bmp_decompress_struct_p bmp_ptr); +uint8_t* bmp_read_data(bmp_decompress_struct_p bmp_ptr, + uint8_t** des_buf_pp, + FX_DWORD data_size); +void bmp_save_decoding_status(bmp_decompress_struct_p bmp_ptr, int32_t status); +void bmp_input_buffer(bmp_decompress_struct_p bmp_ptr, + uint8_t* src_buf, + FX_DWORD src_size); +FX_DWORD bmp_get_avail_input(bmp_decompress_struct_p bmp_ptr, + uint8_t** avial_buf_ptr); +typedef struct tag_bmp_compress_struct bmp_compress_struct; +typedef bmp_compress_struct* bmp_compress_struct_p; +typedef bmp_compress_struct_p* bmp_compress_struct_pp; +struct tag_bmp_compress_struct { + BmpFileHeader file_header; + BmpInfoHeader info_header; + uint8_t* src_buf; + FX_DWORD src_pitch; + FX_DWORD src_row; + uint8_t src_bpp; + FX_DWORD src_width; + FX_BOOL src_free; + FX_DWORD* pal_ptr; + FX_WORD pal_num; + uint8_t bit_type; +}; + +bmp_compress_struct_p bmp_create_compress(); +void bmp_destroy_compress(bmp_compress_struct_p bmp_ptr); +FX_BOOL bmp_encode_image(bmp_compress_struct_p bmp_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_size); + +FX_WORD GetWord_LSBFirst(uint8_t* p); +void SetWord_LSBFirst(uint8_t* p, FX_WORD v); + +#endif // CORE_FXCODEC_LBMP_FX_BMP_H_ diff --git a/core/fxcodec/lgif/fx_gif.cpp b/core/fxcodec/lgif/fx_gif.cpp new file mode 100644 index 0000000000..af447dc84b --- /dev/null +++ b/core/fxcodec/lgif/fx_gif.cpp @@ -0,0 +1,1229 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcodec/lgif/fx_gif.h" + +#include "core/fxcodec/lbmp/fx_bmp.h" + +void CGifLZWDecoder::Input(uint8_t* src_buf, FX_DWORD src_size) { + next_in = src_buf; + avail_in = src_size; +} +FX_DWORD CGifLZWDecoder::GetAvailInput() { + return avail_in; +} +void CGifLZWDecoder::InitTable(uint8_t code_len) { + code_size = code_len; + code_clear = 1 << code_size; + code_end = code_clear + 1; + bits_left = 0; + code_store = 0; + next_in = NULL; + avail_in = 0; + stack_size = 0; + code_first = 0; + ClearTable(); +} +void CGifLZWDecoder::ClearTable() { + code_size_cur = code_size + 1; + code_next = code_end + 1; + code_old = (FX_WORD)-1; + FXSYS_memset(code_table, 0, sizeof(tag_Table) * GIF_MAX_LZW_CODE); + FXSYS_memset(stack, 0, GIF_MAX_LZW_CODE); + for (FX_WORD i = 0; i < code_clear; i++) { + code_table[i].suffix = (uint8_t)i; + } +} +void CGifLZWDecoder::DecodeString(FX_WORD code) { + stack_size = 0; + while (TRUE) { + ASSERT(code <= code_next); + if (code < code_clear || code > code_next) { + break; + } + stack[GIF_MAX_LZW_CODE - 1 - stack_size++] = code_table[code].suffix; + code = code_table[code].prefix; + } + stack[GIF_MAX_LZW_CODE - 1 - stack_size++] = (uint8_t)code; + code_first = (uint8_t)code; +} +void CGifLZWDecoder::AddCode(FX_WORD prefix_code, uint8_t append_char) { + if (code_next == GIF_MAX_LZW_CODE) { + return; + } + code_table[code_next].prefix = prefix_code; + code_table[code_next].suffix = append_char; + if (++code_next < GIF_MAX_LZW_CODE) { + if (code_next >> code_size_cur) { + code_size_cur++; + } + } +} +int32_t CGifLZWDecoder::Decode(uint8_t* des_buf, FX_DWORD& des_size) { + if (des_size == 0) { + return 3; + } + FX_DWORD i = 0; + if (stack_size != 0) { + if (des_size < stack_size) { + FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], des_size); + stack_size -= (FX_WORD)des_size; + return 3; + } + FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], stack_size); + des_buf += stack_size; + i += stack_size; + stack_size = 0; + } + FX_WORD code = 0; + while (i <= des_size && (avail_in > 0 || bits_left >= code_size_cur)) { + if (code_size_cur > 12) { + if (err_msg_ptr) { + FXSYS_strncpy(err_msg_ptr, "Code Length Out Of Range", + GIF_MAX_ERROR_SIZE - 1); + } + return 0; + } + if (avail_in > 0) { + code_store |= (*next_in++) << bits_left; + avail_in--; + bits_left += 8; + } + while (bits_left >= code_size_cur) { + code = (FX_WORD)code_store & ((1 << code_size_cur) - 1); + code_store >>= code_size_cur; + bits_left -= code_size_cur; + if (code == code_clear) { + ClearTable(); + continue; + } else if (code == code_end) { + des_size = i; + return 1; + } else { + if (code_old != (FX_WORD)-1) { + if (code_next < GIF_MAX_LZW_CODE) { + if (code == code_next) { + AddCode(code_old, code_first); + DecodeString(code); + } else if (code > code_next) { + if (err_msg_ptr) { + FXSYS_strncpy(err_msg_ptr, "Decode Error, Out Of Range", + GIF_MAX_ERROR_SIZE - 1); + } + return 0; + } else { + DecodeString(code); + uint8_t append_char = stack[GIF_MAX_LZW_CODE - stack_size]; + AddCode(code_old, append_char); + } + } + } else { + DecodeString(code); + } + code_old = code; + if (i + stack_size > des_size) { + FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], + des_size - i); + stack_size -= (FX_WORD)(des_size - i); + return 3; + } + FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], + stack_size); + des_buf += stack_size; + i += stack_size; + stack_size = 0; + } + } + } + if (avail_in == 0) { + des_size = i; + return 2; + } + return 0; +} +static FX_BOOL gif_grow_buf(uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD size) { + if (dst_len < size) { + FX_DWORD len_org = dst_len; + while (dst_buf && dst_len < size) { + dst_len <<= 1; + dst_buf = FX_Realloc(uint8_t, dst_buf, dst_len); + } + if (dst_buf == NULL) { + dst_len = size; + dst_buf = FX_Realloc(uint8_t, dst_buf, dst_len); + if (dst_buf == NULL) { + return FALSE; + } + } + FXSYS_memset(dst_buf + len_org, 0, dst_len - len_org); + return dst_buf != NULL; + } + return TRUE; +} +static inline void gif_cut_index(uint8_t& val, + FX_DWORD index, + uint8_t index_bit, + uint8_t index_bit_use, + uint8_t bit_use) { + FX_DWORD cut = ((1 << (index_bit - index_bit_use)) - 1) << index_bit_use; + val |= ((index & cut) >> index_bit_use) << bit_use; +} +static inline uint8_t gif_cut_buf(const uint8_t* buf, + FX_DWORD& offset, + uint8_t bit_cut, + uint8_t& bit_offset, + FX_DWORD& bit_num) { + if (bit_cut != 8) { + FX_WORD index = 0; + index |= ((1 << bit_cut) - 1) << (7 - bit_offset); + uint8_t ret = ((index & buf[offset]) >> (7 - bit_offset)); + bit_offset += bit_cut; + if (bit_offset >= 8) { + if (bit_offset > 8) { + ret |= ((index & (buf[offset + 1] << 8)) >> 8); + } + bit_offset -= 8; + offset++; + } + bit_num += bit_cut; + return ret; + } + bit_num += bit_cut; + return buf[offset++]; +} +CGifLZWEncoder::CGifLZWEncoder() { + FXSYS_memset(this, 0, sizeof(CGifLZWEncoder)); +} +CGifLZWEncoder::~CGifLZWEncoder() {} +void CGifLZWEncoder::ClearTable() { + index_bit_cur = code_size + 1; + index_num = code_end + 1; + table_cur = code_end + 1; + for (FX_WORD i = 0; i < GIF_MAX_LZW_CODE; i++) { + code_table[i].prefix = 0; + code_table[i].suffix = 0; + } +} +void CGifLZWEncoder::Start(uint8_t code_len, + const uint8_t* src_buf, + uint8_t*& dst_buf, + FX_DWORD& offset) { + code_size = code_len + 1; + src_bit_cut = code_size; + if (code_len == 0) { + src_bit_cut = 1; + code_size = 2; + } + code_clear = 1 << code_size; + code_end = code_clear + 1; + dst_buf[offset++] = code_size; + bit_offset = 0; + ClearTable(); + src_offset = 0; + src_bit_offset = 0; + src_bit_num = 0; + code_table[index_num].prefix = gif_cut_buf(src_buf, src_offset, src_bit_cut, + src_bit_offset, src_bit_num); + code_table[index_num].suffix = gif_cut_buf(src_buf, src_offset, src_bit_cut, + src_bit_offset, src_bit_num); +} +void CGifLZWEncoder::WriteBlock(uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD& offset) { + if (!gif_grow_buf(dst_buf, dst_len, offset + GIF_DATA_BLOCK + 1)) { + longjmp(jmp, 1); + } + dst_buf[offset++] = index_buf_len; + FXSYS_memcpy(&dst_buf[offset], index_buf, index_buf_len); + offset += index_buf_len; + FXSYS_memset(index_buf, 0, GIF_DATA_BLOCK); + index_buf_len = 0; +} +void CGifLZWEncoder::EncodeString(FX_DWORD index, + uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD& offset) { + uint8_t index_bit_use; + index_bit_use = 0; + if (index_buf_len == GIF_DATA_BLOCK) { + WriteBlock(dst_buf, dst_len, offset); + } + gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, + bit_offset); + if (index_bit_cur <= (8 - bit_offset)) { + bit_offset += index_bit_cur; + } else if (index_bit_cur <= (16 - bit_offset)) { + index_bit_use += (8 - bit_offset); + bit_offset = 0; + index_buf_len++; + if (index_buf_len == GIF_DATA_BLOCK) { + WriteBlock(dst_buf, dst_len, offset); + } + gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, + bit_offset); + bit_offset = index_bit_cur - index_bit_use; + } else { + index_bit_use += (8 - bit_offset); + bit_offset = 0; + index_buf_len++; + if (index_buf_len == GIF_DATA_BLOCK) { + WriteBlock(dst_buf, dst_len, offset); + } + gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, + bit_offset); + index_bit_use += 8; + bit_offset = 0; + index_buf_len++; + if (index_buf_len == GIF_DATA_BLOCK) { + WriteBlock(dst_buf, dst_len, offset); + } + gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, + bit_offset); + bit_offset = index_bit_cur - index_bit_use; + } + if (bit_offset == 8) { + bit_offset = 0; + index_buf_len++; + if (index_buf_len == GIF_DATA_BLOCK) { + WriteBlock(dst_buf, dst_len, offset); + } + } + if (index == code_end) { + index_buf_len++; + WriteBlock(dst_buf, dst_len, offset); + } + if (index_num++ >> index_bit_cur) { + index_bit_cur++; + } +} +FX_BOOL CGifLZWEncoder::Encode(const uint8_t* src_buf, + FX_DWORD src_len, + uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD& offset) { + uint8_t suffix; + if (setjmp(jmp)) { + return FALSE; + } + while (src_bit_num < src_len) { + if (!LookUpInTable(src_buf, src_offset, src_bit_offset)) { + EncodeString(code_table[index_num].prefix, dst_buf, dst_len, offset); + if (index_num == GIF_MAX_LZW_CODE) { + suffix = code_table[index_num - 1].suffix; + EncodeString(code_clear, dst_buf, dst_len, offset); + ClearTable(); + code_table[index_num].prefix = suffix; + code_table[index_num].suffix = gif_cut_buf( + src_buf, src_offset, src_bit_cut, src_bit_offset, src_bit_num); + } else { + code_table[index_num].prefix = code_table[index_num - 1].suffix; + code_table[index_num].suffix = gif_cut_buf( + src_buf, src_offset, src_bit_cut, src_bit_offset, src_bit_num); + } + } + } + src_offset = 0; + src_bit_offset = 0; + src_bit_num = 0; + return TRUE; +} +FX_BOOL CGifLZWEncoder::LookUpInTable(const uint8_t* buf, + FX_DWORD& offset, + uint8_t& bit_offset) { + for (FX_WORD i = table_cur; i < index_num; i++) { + if (code_table[i].prefix == code_table[index_num].prefix && + code_table[i].suffix == code_table[index_num].suffix) { + code_table[index_num].prefix = i; + code_table[index_num].suffix = + gif_cut_buf(buf, offset, src_bit_cut, bit_offset, src_bit_num); + table_cur = i; + return TRUE; + } + } + table_cur = code_end + 1; + return FALSE; +} +void CGifLZWEncoder::Finish(uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD& offset) { + EncodeString(code_table[index_num].prefix, dst_buf, dst_len, offset); + EncodeString(code_end, dst_buf, dst_len, offset); + bit_offset = 0; + ClearTable(); +} +gif_decompress_struct_p gif_create_decompress() { + gif_decompress_struct_p gif_ptr = + (gif_decompress_struct*)FX_Alloc(uint8_t, sizeof(gif_decompress_struct)); + if (gif_ptr == NULL) { + return NULL; + } + FXSYS_memset(gif_ptr, 0, sizeof(gif_decompress_struct)); + gif_ptr->decode_status = GIF_D_STATUS_SIG; + gif_ptr->img_ptr_arr_ptr = new CFX_ArrayTemplate; + gif_ptr->cmt_data_ptr = new CFX_ByteString; + gif_ptr->pt_ptr_arr_ptr = new CFX_ArrayTemplate; + return gif_ptr; +} +void gif_destroy_decompress(gif_decompress_struct_pp gif_ptr_ptr) { + if (gif_ptr_ptr == NULL || *gif_ptr_ptr == NULL) { + return; + } + gif_decompress_struct_p gif_ptr = *gif_ptr_ptr; + *gif_ptr_ptr = NULL; + FX_Free(gif_ptr->global_pal_ptr); + delete gif_ptr->img_decoder_ptr; + if (gif_ptr->img_ptr_arr_ptr) { + int32_t size_img_arr = gif_ptr->img_ptr_arr_ptr->GetSize(); + for (int32_t i = 0; i < size_img_arr; i++) { + GifImage* p = gif_ptr->img_ptr_arr_ptr->GetAt(i); + FX_Free(p->image_info_ptr); + FX_Free(p->image_gce_ptr); + FX_Free(p->image_row_buf); + if (p->local_pal_ptr && p->local_pal_ptr != gif_ptr->global_pal_ptr) { + FX_Free(p->local_pal_ptr); + } + FX_Free(p); + } + gif_ptr->img_ptr_arr_ptr->RemoveAll(); + delete gif_ptr->img_ptr_arr_ptr; + } + delete gif_ptr->cmt_data_ptr; + FX_Free(gif_ptr->gce_ptr); + if (gif_ptr->pt_ptr_arr_ptr) { + int32_t size_pt_arr = gif_ptr->pt_ptr_arr_ptr->GetSize(); + for (int32_t i = 0; i < size_pt_arr; i++) { + GifPlainText* p = gif_ptr->pt_ptr_arr_ptr->GetAt(i); + FX_Free(p->gce_ptr); + FX_Free(p->pte_ptr); + delete p->string_ptr; + } + gif_ptr->pt_ptr_arr_ptr->RemoveAll(); + delete gif_ptr->pt_ptr_arr_ptr; + } + FX_Free(gif_ptr); +} +gif_compress_struct_p gif_create_compress() { + gif_compress_struct_p gif_ptr = + (gif_compress_struct*)FX_Alloc(uint8_t, sizeof(gif_compress_struct)); + if (gif_ptr == NULL) { + return NULL; + } + FXSYS_memset(gif_ptr, 0, sizeof(gif_compress_struct)); + gif_ptr->img_encoder_ptr = new CGifLZWEncoder; + gif_ptr->header_ptr = (GifHeader*)FX_Alloc(uint8_t, sizeof(GifHeader)); + if (gif_ptr->header_ptr == NULL) { + delete (gif_ptr->img_encoder_ptr); + FX_Free(gif_ptr); + return NULL; + } + FXSYS_memcpy(gif_ptr->header_ptr->signature, GIF_SIGNATURE, 3); + FXSYS_memcpy(gif_ptr->header_ptr->version, "89a", 3); + gif_ptr->lsd_ptr = (GifLSD*)FX_Alloc(uint8_t, sizeof(GifLSD)); + if (gif_ptr->lsd_ptr == NULL) { + FX_Free(gif_ptr->header_ptr); + delete (gif_ptr->img_encoder_ptr); + FX_Free(gif_ptr); + return NULL; + } + FXSYS_memset(gif_ptr->lsd_ptr, 0, sizeof(GifLSD)); + gif_ptr->image_info_ptr = + (GifImageInfo*)FX_Alloc(uint8_t, sizeof(GifImageInfo)); + if (gif_ptr->image_info_ptr == NULL) { + FX_Free(gif_ptr->lsd_ptr); + FX_Free(gif_ptr->header_ptr); + delete (gif_ptr->img_encoder_ptr); + FX_Free(gif_ptr); + return NULL; + } + FXSYS_memset(gif_ptr->image_info_ptr, 0, sizeof(GifImageInfo)); + gif_ptr->gce_ptr = (GifGCE*)FX_Alloc(uint8_t, sizeof(GifGCE)); + if (gif_ptr->gce_ptr == NULL) { + FX_Free(gif_ptr->image_info_ptr); + FX_Free(gif_ptr->lsd_ptr); + FX_Free(gif_ptr->header_ptr); + delete (gif_ptr->img_encoder_ptr); + FX_Free(gif_ptr); + return NULL; + } + gif_ptr->pte_ptr = (GifPTE*)FX_Alloc(uint8_t, sizeof(GifPTE)); + if (gif_ptr->pte_ptr == NULL) { + FX_Free(gif_ptr->gce_ptr); + FX_Free(gif_ptr->image_info_ptr); + FX_Free(gif_ptr->lsd_ptr); + FX_Free(gif_ptr->header_ptr); + delete (gif_ptr->img_encoder_ptr); + FX_Free(gif_ptr); + return NULL; + } + FXSYS_memset(gif_ptr->pte_ptr, 0, sizeof(GifPTE)); + gif_ptr->pte_ptr->block_size = 12; + return gif_ptr; +} +void gif_destroy_compress(gif_compress_struct_pp gif_ptr_ptr) { + if (gif_ptr_ptr == NULL || *gif_ptr_ptr == NULL) { + return; + } + gif_compress_struct_p gif_ptr = *gif_ptr_ptr; + *gif_ptr_ptr = NULL; + FX_Free(gif_ptr->header_ptr); + FX_Free(gif_ptr->lsd_ptr); + FX_Free(gif_ptr->global_pal); + FX_Free(gif_ptr->image_info_ptr); + FX_Free(gif_ptr->local_pal); + delete gif_ptr->img_encoder_ptr; + FX_Free(gif_ptr->gce_ptr); + FX_Free(gif_ptr->cmt_data_ptr); + FX_Free(gif_ptr->pte_ptr); + FX_Free(gif_ptr); +} +void gif_error(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg) { + if (gif_ptr && gif_ptr->gif_error_fn) { + gif_ptr->gif_error_fn(gif_ptr, err_msg); + } +} +void gif_warn(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg) {} +int32_t gif_read_header(gif_decompress_struct_p gif_ptr) { + if (gif_ptr == NULL) { + return 0; + } + FX_DWORD skip_size_org = gif_ptr->skip_size; + ASSERT(sizeof(GifHeader) == 6); + GifHeader* gif_header_ptr = NULL; + if (gif_read_data(gif_ptr, (uint8_t**)&gif_header_ptr, 6) == NULL) { + return 2; + } + if (FXSYS_strncmp(gif_header_ptr->signature, GIF_SIGNATURE, 3) != 0 || + gif_header_ptr->version[0] != '8' || gif_header_ptr->version[2] != 'a') { + gif_error(gif_ptr, "Not A Gif Image"); + return 0; + } + ASSERT(sizeof(GifLSD) == 7); + GifLSD* gif_lsd_ptr = NULL; + if (gif_read_data(gif_ptr, (uint8_t**)&gif_lsd_ptr, 7) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + if (((GifGF*)&gif_lsd_ptr->global_flag)->global_pal) { + gif_ptr->global_pal_num = 2 + << ((GifGF*)&gif_lsd_ptr->global_flag)->pal_bits; + ASSERT(sizeof(GifPalette) == 3); + int32_t global_pal_size = gif_ptr->global_pal_num * 3; + uint8_t* global_pal_ptr = NULL; + if (gif_read_data(gif_ptr, &global_pal_ptr, global_pal_size) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + gif_ptr->global_sort_flag = ((GifGF*)&gif_lsd_ptr->global_flag)->sort_flag; + gif_ptr->global_color_resolution = + ((GifGF*)&gif_lsd_ptr->global_flag)->color_resolution; + FX_Free(gif_ptr->global_pal_ptr); + gif_ptr->global_pal_ptr = (GifPalette*)FX_Alloc(uint8_t, global_pal_size); + FXSYS_memcpy(gif_ptr->global_pal_ptr, global_pal_ptr, global_pal_size); + } + gif_ptr->width = (int)GetWord_LSBFirst((uint8_t*)&gif_lsd_ptr->width); + gif_ptr->height = (int)GetWord_LSBFirst((uint8_t*)&gif_lsd_ptr->height); + gif_ptr->bc_index = gif_lsd_ptr->bc_index; + gif_ptr->pixel_aspect = gif_lsd_ptr->pixel_aspect; + return 1; +} +int32_t gif_get_frame(gif_decompress_struct_p gif_ptr) { + if (gif_ptr == NULL) { + return 0; + } + int32_t ret = 1; + while (TRUE) { + switch (gif_ptr->decode_status) { + case GIF_D_STATUS_TAIL: + return 1; + case GIF_D_STATUS_SIG: { + uint8_t* sig_ptr = NULL; + if (gif_read_data(gif_ptr, &sig_ptr, 1) == NULL) { + return 2; + } + switch (*sig_ptr) { + case GIF_SIG_EXTENSION: + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT); + continue; + case GIF_SIG_IMAGE: + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_INFO); + continue; + case GIF_SIG_TRAILER: + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); + return 1; + default: + if (gif_ptr->avail_in) { + gif_warn(gif_ptr, "The Gif File has non_standard Tag!"); + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_SIG); + continue; + } + gif_warn(gif_ptr, "The Gif File Doesn't have Trailer Tag!"); + return 1; + } + } + case GIF_D_STATUS_EXT: { + uint8_t* ext_ptr = NULL; + if (gif_read_data(gif_ptr, &ext_ptr, 1) == NULL) { + return 2; + } + switch (*ext_ptr) { + case GIF_BLOCK_CE: + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT_CE); + continue; + case GIF_BLOCK_GCE: + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT_GCE); + continue; + case GIF_BLOCK_PTE: + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT_PTE); + continue; + default: { + int32_t status = GIF_D_STATUS_EXT_UNE; + if (*ext_ptr == GIF_BLOCK_PTE) { + status = GIF_D_STATUS_EXT_PTE; + } + gif_save_decoding_status(gif_ptr, status); + continue; + } + } + } + case GIF_D_STATUS_IMG_INFO: { + ret = gif_decode_image_info(gif_ptr); + if (ret != 1) { + return ret; + } + continue; + } + case GIF_D_STATUS_IMG_DATA: { + uint8_t* data_size_ptr = NULL; + uint8_t* data_ptr = NULL; + FX_DWORD skip_size_org = gif_ptr->skip_size; + if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + return 2; + } + while (*data_size_ptr != GIF_BLOCK_TERMINAL) { + if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); + skip_size_org = gif_ptr->skip_size; + if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + return 2; + } + } + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_SIG); + continue; + } + default: { + ret = gif_decode_extension(gif_ptr); + if (ret != 1) { + return ret; + } + continue; + } + } + } + return 1; +} +void gif_takeover_gce_ptr(gif_decompress_struct_p gif_ptr, + GifGCE** gce_ptr_ptr) { + *gce_ptr_ptr = NULL; + if (gif_ptr->gce_ptr && gce_ptr_ptr) { + *gce_ptr_ptr = gif_ptr->gce_ptr; + gif_ptr->gce_ptr = NULL; + } +} +int32_t gif_decode_extension(gif_decompress_struct_p gif_ptr) { + uint8_t* data_size_ptr = NULL; + uint8_t* data_ptr = NULL; + FX_DWORD skip_size_org = gif_ptr->skip_size; + switch (gif_ptr->decode_status) { + case GIF_D_STATUS_EXT_CE: { + if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + gif_ptr->cmt_data_ptr->Empty(); + while (*data_size_ptr != GIF_BLOCK_TERMINAL) { + uint8_t data_size = *data_size_ptr; + if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL || + gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + *(gif_ptr->cmt_data_ptr) += + CFX_ByteString((const FX_CHAR*)data_ptr, data_size); + } + } break; + case GIF_D_STATUS_EXT_PTE: { + ASSERT(sizeof(GifPTE) == 13); + GifPTE* gif_pte_ptr = NULL; + if (gif_read_data(gif_ptr, (uint8_t**)&gif_pte_ptr, 13) == NULL) { + return 2; + } + GifPlainText* gif_pt_ptr = FX_Alloc(GifPlainText, 1); + FXSYS_memset(gif_pt_ptr, 0, sizeof(GifPlainText)); + gif_takeover_gce_ptr(gif_ptr, &gif_pt_ptr->gce_ptr); + gif_pt_ptr->pte_ptr = (GifPTE*)FX_Alloc(uint8_t, sizeof(GifPTE)); + gif_pt_ptr->string_ptr = new CFX_ByteString; + gif_pt_ptr->pte_ptr->block_size = gif_pte_ptr->block_size; + gif_pt_ptr->pte_ptr->grid_left = + GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_left); + gif_pt_ptr->pte_ptr->grid_top = + GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_top); + gif_pt_ptr->pte_ptr->grid_width = + GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_width); + gif_pt_ptr->pte_ptr->grid_height = + GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_height); + gif_pt_ptr->pte_ptr->char_width = gif_pte_ptr->char_width; + gif_pt_ptr->pte_ptr->char_height = gif_pte_ptr->char_height; + gif_pt_ptr->pte_ptr->fc_index = gif_pte_ptr->fc_index; + gif_pt_ptr->pte_ptr->bc_index = gif_pte_ptr->bc_index; + if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + gif_ptr->skip_size = skip_size_org; + if (gif_pt_ptr) { + FX_Free(gif_pt_ptr->gce_ptr); + FX_Free(gif_pt_ptr->pte_ptr); + delete gif_pt_ptr->string_ptr; + FX_Free(gif_pt_ptr); + } + return 2; + } + while (*data_size_ptr != GIF_BLOCK_TERMINAL) { + uint8_t data_size = *data_size_ptr; + if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL || + gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + gif_ptr->skip_size = skip_size_org; + if (gif_pt_ptr) { + FX_Free(gif_pt_ptr->gce_ptr); + FX_Free(gif_pt_ptr->pte_ptr); + delete gif_pt_ptr->string_ptr; + FX_Free(gif_pt_ptr); + } + return 2; + } + *(gif_pt_ptr->string_ptr) += + CFX_ByteString((const FX_CHAR*)data_ptr, data_size); + } + gif_ptr->pt_ptr_arr_ptr->Add(gif_pt_ptr); + } break; + case GIF_D_STATUS_EXT_GCE: { + ASSERT(sizeof(GifGCE) == 5); + GifGCE* gif_gce_ptr = NULL; + if (gif_read_data(gif_ptr, (uint8_t**)&gif_gce_ptr, 6) == NULL) { + return 2; + } + if (gif_ptr->gce_ptr == NULL) { + gif_ptr->gce_ptr = (GifGCE*)FX_Alloc(uint8_t, sizeof(GifGCE)); + } + gif_ptr->gce_ptr->block_size = gif_gce_ptr->block_size; + gif_ptr->gce_ptr->gce_flag = gif_gce_ptr->gce_flag; + gif_ptr->gce_ptr->delay_time = + GetWord_LSBFirst((uint8_t*)&gif_gce_ptr->delay_time); + gif_ptr->gce_ptr->trans_index = gif_gce_ptr->trans_index; + } break; + default: { + if (gif_ptr->decode_status == GIF_D_STATUS_EXT_PTE) { + FX_Free(gif_ptr->gce_ptr); + gif_ptr->gce_ptr = NULL; + } + if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + return 2; + } + while (*data_size_ptr != GIF_BLOCK_TERMINAL) { + if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL || + gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + } + } + } + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_SIG); + return 1; +} +int32_t gif_decode_image_info(gif_decompress_struct_p gif_ptr) { + if (gif_ptr->width == 0 || gif_ptr->height == 0) { + gif_error(gif_ptr, "No Image Header Info"); + return 0; + } + FX_DWORD skip_size_org = gif_ptr->skip_size; + ASSERT(sizeof(GifImageInfo) == 9); + GifImageInfo* gif_img_info_ptr = NULL; + if (gif_read_data(gif_ptr, (uint8_t**)&gif_img_info_ptr, 9) == NULL) { + return 2; + } + GifImage* gif_image_ptr = (GifImage*)FX_Alloc(uint8_t, sizeof(GifImage)); + FXSYS_memset(gif_image_ptr, 0, sizeof(GifImage)); + gif_image_ptr->image_info_ptr = + (GifImageInfo*)FX_Alloc(uint8_t, sizeof(GifImageInfo)); + gif_image_ptr->image_info_ptr->left = + GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->left); + gif_image_ptr->image_info_ptr->top = + GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->top); + gif_image_ptr->image_info_ptr->width = + GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->width); + gif_image_ptr->image_info_ptr->height = + GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->height); + gif_image_ptr->image_info_ptr->local_flag = gif_img_info_ptr->local_flag; + if (gif_image_ptr->image_info_ptr->left + + gif_image_ptr->image_info_ptr->width > + gif_ptr->width || + gif_image_ptr->image_info_ptr->top + + gif_image_ptr->image_info_ptr->height > + gif_ptr->height) { + FX_Free(gif_image_ptr->image_info_ptr); + FX_Free(gif_image_ptr->image_row_buf); + FX_Free(gif_image_ptr); + gif_error(gif_ptr, "Image Data Out Of LSD, The File May Be Corrupt"); + return 0; + } + GifLF* gif_img_info_lf_ptr = (GifLF*)&gif_img_info_ptr->local_flag; + if (gif_img_info_lf_ptr->local_pal) { + ASSERT(sizeof(GifPalette) == 3); + int32_t loc_pal_size = (2 << gif_img_info_lf_ptr->pal_bits) * 3; + uint8_t* loc_pal_ptr = NULL; + if (gif_read_data(gif_ptr, &loc_pal_ptr, loc_pal_size) == NULL) { + gif_ptr->skip_size = skip_size_org; + FX_Free(gif_image_ptr->image_info_ptr); + FX_Free(gif_image_ptr->image_row_buf); + FX_Free(gif_image_ptr); + return 2; + } + gif_image_ptr->local_pal_ptr = + (GifPalette*)gif_ptr->gif_ask_buf_for_pal_fn(gif_ptr, loc_pal_size); + if (gif_image_ptr->local_pal_ptr) { + FXSYS_memcpy((uint8_t*)gif_image_ptr->local_pal_ptr, loc_pal_ptr, + loc_pal_size); + } + } + uint8_t* code_size_ptr = NULL; + if (gif_read_data(gif_ptr, &code_size_ptr, 1) == NULL) { + gif_ptr->skip_size = skip_size_org; + FX_Free(gif_image_ptr->image_info_ptr); + FX_Free(gif_image_ptr->local_pal_ptr); + FX_Free(gif_image_ptr->image_row_buf); + FX_Free(gif_image_ptr); + return 2; + } + gif_image_ptr->image_code_size = *code_size_ptr; + gif_ptr->gif_record_current_position_fn(gif_ptr, + &gif_image_ptr->image_data_pos); + gif_image_ptr->image_data_pos += gif_ptr->skip_size; + gif_takeover_gce_ptr(gif_ptr, &gif_image_ptr->image_gce_ptr); + gif_ptr->img_ptr_arr_ptr->Add(gif_image_ptr); + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); + return 1; +} +int32_t gif_load_frame(gif_decompress_struct_p gif_ptr, int32_t frame_num) { + if (gif_ptr == NULL || frame_num < 0 || + frame_num >= gif_ptr->img_ptr_arr_ptr->GetSize()) { + return 0; + } + uint8_t* data_size_ptr = NULL; + uint8_t* data_ptr = NULL; + FX_DWORD skip_size_org = gif_ptr->skip_size; + GifImage* gif_image_ptr = gif_ptr->img_ptr_arr_ptr->GetAt(frame_num); + FX_DWORD gif_img_row_bytes = gif_image_ptr->image_info_ptr->width; + if (gif_ptr->decode_status == GIF_D_STATUS_TAIL) { + if (gif_image_ptr->image_row_buf) { + FX_Free(gif_image_ptr->image_row_buf); + gif_image_ptr->image_row_buf = NULL; + } + gif_image_ptr->image_row_buf = FX_Alloc(uint8_t, gif_img_row_bytes); + GifGCE* gif_img_gce_ptr = gif_image_ptr->image_gce_ptr; + int32_t loc_pal_num = + ((GifLF*)&gif_image_ptr->image_info_ptr->local_flag)->local_pal + ? (2 << ((GifLF*)&gif_image_ptr->image_info_ptr->local_flag) + ->pal_bits) + : 0; + gif_ptr->avail_in = 0; + if (gif_img_gce_ptr == NULL) { + FX_BOOL bRes = gif_ptr->gif_get_record_position_fn( + gif_ptr, gif_image_ptr->image_data_pos, + gif_image_ptr->image_info_ptr->left, + gif_image_ptr->image_info_ptr->top, + gif_image_ptr->image_info_ptr->width, + gif_image_ptr->image_info_ptr->height, loc_pal_num, + gif_image_ptr->local_pal_ptr, 0, 0, -1, 0, + (FX_BOOL)((GifLF*)&gif_image_ptr->image_info_ptr->local_flag) + ->interlace); + if (!bRes) { + FX_Free(gif_image_ptr->image_row_buf); + gif_image_ptr->image_row_buf = NULL; + gif_error(gif_ptr, "Error Read Record Position Data"); + return 0; + } + } else { + FX_BOOL bRes = gif_ptr->gif_get_record_position_fn( + gif_ptr, gif_image_ptr->image_data_pos, + gif_image_ptr->image_info_ptr->left, + gif_image_ptr->image_info_ptr->top, + gif_image_ptr->image_info_ptr->width, + gif_image_ptr->image_info_ptr->height, loc_pal_num, + gif_image_ptr->local_pal_ptr, + (int32_t)gif_image_ptr->image_gce_ptr->delay_time, + (FX_BOOL)((GifCEF*)&gif_image_ptr->image_gce_ptr->gce_flag) + ->user_input, + ((GifCEF*)&gif_image_ptr->image_gce_ptr->gce_flag)->transparency + ? (int32_t)gif_image_ptr->image_gce_ptr->trans_index + : -1, + (int32_t)((GifCEF*)&gif_image_ptr->image_gce_ptr->gce_flag) + ->disposal_method, + (FX_BOOL)((GifLF*)&gif_image_ptr->image_info_ptr->local_flag) + ->interlace); + if (!bRes) { + FX_Free(gif_image_ptr->image_row_buf); + gif_image_ptr->image_row_buf = NULL; + gif_error(gif_ptr, "Error Read Record Position Data"); + return 0; + } + } + if (gif_ptr->img_decoder_ptr == NULL) { + gif_ptr->img_decoder_ptr = new CGifLZWDecoder(gif_ptr->err_ptr); + } + gif_ptr->img_decoder_ptr->InitTable(gif_image_ptr->image_code_size); + gif_ptr->img_row_offset = 0; + gif_ptr->img_row_avail_size = 0; + gif_ptr->img_pass_num = 0; + gif_image_ptr->image_row_num = 0; + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); + } + CGifLZWDecoder* img_decoder_ptr = gif_ptr->img_decoder_ptr; + if (gif_ptr->decode_status == GIF_D_STATUS_IMG_DATA) { + if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + return 2; + } + if (*data_size_ptr != GIF_BLOCK_TERMINAL) { + if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + img_decoder_ptr->Input(data_ptr, *data_size_ptr); + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); + gif_ptr->img_row_offset += gif_ptr->img_row_avail_size; + gif_ptr->img_row_avail_size = gif_img_row_bytes - gif_ptr->img_row_offset; + int32_t ret = img_decoder_ptr->Decode( + gif_image_ptr->image_row_buf + gif_ptr->img_row_offset, + gif_ptr->img_row_avail_size); + if (ret == 0) { + FX_Free(gif_image_ptr->image_row_buf); + gif_image_ptr->image_row_buf = NULL; + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); + gif_error(gif_ptr, "Decode Image Data Error"); + return 0; + } + while (ret != 0) { + if (ret == 1) { + gif_ptr->gif_get_row_fn(gif_ptr, gif_image_ptr->image_row_num, + gif_image_ptr->image_row_buf); + FX_Free(gif_image_ptr->image_row_buf); + gif_image_ptr->image_row_buf = NULL; + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); + return 1; + } + if (ret == 2) { + ASSERT(img_decoder_ptr->GetAvailInput() == 0); + skip_size_org = gif_ptr->skip_size; + if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { + return 2; + } + if (*data_size_ptr != GIF_BLOCK_TERMINAL) { + if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL) { + gif_ptr->skip_size = skip_size_org; + return 2; + } + img_decoder_ptr->Input(data_ptr, *data_size_ptr); + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); + gif_ptr->img_row_offset += gif_ptr->img_row_avail_size; + gif_ptr->img_row_avail_size = + gif_img_row_bytes - gif_ptr->img_row_offset; + ret = img_decoder_ptr->Decode( + gif_image_ptr->image_row_buf + gif_ptr->img_row_offset, + gif_ptr->img_row_avail_size); + } + } + if (ret == 3) { + if (((GifLF*)&gif_image_ptr->image_info_ptr->local_flag)->interlace) { + gif_ptr->gif_get_row_fn(gif_ptr, gif_image_ptr->image_row_num, + gif_image_ptr->image_row_buf); + gif_image_ptr->image_row_num += + s_gif_interlace_step[gif_ptr->img_pass_num]; + if (gif_image_ptr->image_row_num >= + (int32_t)gif_image_ptr->image_info_ptr->height) { + gif_ptr->img_pass_num++; + gif_image_ptr->image_row_num = + s_gif_interlace_step[gif_ptr->img_pass_num] / 2; + } + } else { + gif_ptr->gif_get_row_fn(gif_ptr, gif_image_ptr->image_row_num++, + gif_image_ptr->image_row_buf); + } + gif_ptr->img_row_offset = 0; + gif_ptr->img_row_avail_size = gif_img_row_bytes; + ret = img_decoder_ptr->Decode( + gif_image_ptr->image_row_buf + gif_ptr->img_row_offset, + gif_ptr->img_row_avail_size); + } + if (ret == 0) { + FX_Free(gif_image_ptr->image_row_buf); + gif_image_ptr->image_row_buf = NULL; + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); + gif_error(gif_ptr, "Decode Image Data Error"); + return 0; + } + } + } + gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); + } + gif_error(gif_ptr, "Decode Image Data Error"); + return 0; +} +void gif_save_decoding_status(gif_decompress_struct_p gif_ptr, int32_t status) { + gif_ptr->decode_status = status; + gif_ptr->next_in += gif_ptr->skip_size; + gif_ptr->avail_in -= gif_ptr->skip_size; + gif_ptr->skip_size = 0; +} +uint8_t* gif_read_data(gif_decompress_struct_p gif_ptr, + uint8_t** des_buf_pp, + FX_DWORD data_size) { + if (gif_ptr == NULL || gif_ptr->avail_in < gif_ptr->skip_size + data_size) { + return NULL; + } + *des_buf_pp = gif_ptr->next_in + gif_ptr->skip_size; + gif_ptr->skip_size += data_size; + return *des_buf_pp; +} +void gif_input_buffer(gif_decompress_struct_p gif_ptr, + uint8_t* src_buf, + FX_DWORD src_size) { + gif_ptr->next_in = src_buf; + gif_ptr->avail_in = src_size; + gif_ptr->skip_size = 0; +} +FX_DWORD gif_get_avail_input(gif_decompress_struct_p gif_ptr, + uint8_t** avial_buf_ptr) { + if (avial_buf_ptr) { + *avial_buf_ptr = NULL; + if (gif_ptr->avail_in > 0) { + *avial_buf_ptr = gif_ptr->next_in; + } + } + return gif_ptr->avail_in; +} +int32_t gif_get_frame_num(gif_decompress_struct_p gif_ptr) { + return gif_ptr->img_ptr_arr_ptr->GetSize(); +} +static FX_BOOL gif_write_header(gif_compress_struct_p gif_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_len) { + if (gif_ptr->cur_offset) { + return TRUE; + } + dst_len = sizeof(GifHeader) + sizeof(GifLSD) + sizeof(GifGF); + dst_buf = FX_TryAlloc(uint8_t, dst_len); + if (dst_buf == NULL) { + return FALSE; + } + FXSYS_memset(dst_buf, 0, dst_len); + FXSYS_memcpy(dst_buf, gif_ptr->header_ptr, sizeof(GifHeader)); + gif_ptr->cur_offset += sizeof(GifHeader); + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->lsd_ptr->width); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->lsd_ptr->height); + gif_ptr->cur_offset += 2; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->lsd_ptr->global_flag; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->lsd_ptr->bc_index; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->lsd_ptr->pixel_aspect; + if (gif_ptr->global_pal) { + FX_WORD size = sizeof(GifPalette) * gif_ptr->gpal_num; + if (!gif_grow_buf(dst_buf, dst_len, gif_ptr->cur_offset + size)) { + return FALSE; + } + FXSYS_memcpy(&dst_buf[gif_ptr->cur_offset], gif_ptr->global_pal, size); + gif_ptr->cur_offset += size; + } + return TRUE; +} +void interlace_buf(const uint8_t* buf, FX_DWORD pitch, FX_DWORD height) { + CFX_ArrayTemplate pass[4]; + int i, j; + FX_DWORD row; + row = 0; + uint8_t* temp; + while (row < height) { + if (row % 8 == 0) { + j = 0; + } else if (row % 4 == 0) { + j = 1; + } else if (row % 2 == 0) { + j = 2; + } else { + j = 3; + } + temp = FX_Alloc(uint8_t, pitch); + if (temp == NULL) { + return; + } + FXSYS_memcpy(temp, &buf[pitch * row], pitch); + pass[j].Add(temp); + row++; + } + for (i = 0, row = 0; i < 4; i++) { + for (j = 0; j < pass[i].GetSize(); j++, row++) { + FXSYS_memcpy((uint8_t*)&buf[pitch * row], pass[i].GetAt(j), pitch); + FX_Free(pass[i].GetAt(j)); + } + } +} +static void gif_write_block_data(const uint8_t* src_buf, + FX_DWORD src_len, + uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD& dst_offset) { + FX_DWORD src_offset = 0; + while (src_len > GIF_DATA_BLOCK) { + dst_buf[dst_offset++] = GIF_DATA_BLOCK; + FXSYS_memcpy(&dst_buf[dst_offset], &src_buf[src_offset], GIF_DATA_BLOCK); + dst_offset += GIF_DATA_BLOCK; + src_offset += GIF_DATA_BLOCK; + src_len -= GIF_DATA_BLOCK; + } + dst_buf[dst_offset++] = (uint8_t)src_len; + FXSYS_memcpy(&dst_buf[dst_offset], &src_buf[src_offset], src_len); + dst_offset += src_len; +} +static FX_BOOL gif_write_data(gif_compress_struct_p gif_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_len) { + if (!gif_grow_buf(dst_buf, dst_len, gif_ptr->cur_offset + GIF_DATA_BLOCK)) { + return FALSE; + } + if (FXSYS_memcmp(gif_ptr->header_ptr->version, "89a", 3) == 0) { + dst_buf[gif_ptr->cur_offset++] = GIF_SIG_EXTENSION; + dst_buf[gif_ptr->cur_offset++] = GIF_BLOCK_GCE; + gif_ptr->gce_ptr->block_size = 4; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->gce_ptr->block_size; + gif_ptr->gce_ptr->gce_flag = 0; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->gce_ptr->gce_flag; + gif_ptr->gce_ptr->delay_time = 10; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->gce_ptr->delay_time); + gif_ptr->cur_offset += 2; + gif_ptr->gce_ptr->trans_index = 0; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->gce_ptr->trans_index; + dst_buf[gif_ptr->cur_offset++] = 0; + } + dst_buf[gif_ptr->cur_offset++] = GIF_SIG_IMAGE; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->image_info_ptr->left); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->image_info_ptr->top); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->image_info_ptr->width); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->image_info_ptr->height); + gif_ptr->cur_offset += 2; + GifLF& lf = (GifLF&)gif_ptr->image_info_ptr->local_flag; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->image_info_ptr->local_flag; + if (gif_ptr->local_pal) { + FX_DWORD pal_size = sizeof(GifPalette) * gif_ptr->lpal_num; + if (!gif_grow_buf(dst_buf, dst_len, pal_size + gif_ptr->cur_offset)) { + return FALSE; + } + FXSYS_memcpy(&dst_buf[gif_ptr->cur_offset], gif_ptr->local_pal, pal_size); + gif_ptr->cur_offset += pal_size; + } + if (lf.interlace) { + interlace_buf(gif_ptr->src_buf, gif_ptr->src_pitch, + gif_ptr->image_info_ptr->height); + } + uint8_t code_bit = lf.pal_bits; + if (lf.local_pal == 0) { + GifGF& gf = (GifGF&)gif_ptr->lsd_ptr->global_flag; + code_bit = gf.pal_bits; + } + gif_ptr->img_encoder_ptr->Start(code_bit, gif_ptr->src_buf, dst_buf, + gif_ptr->cur_offset); + FX_DWORD i; + for (i = 0; i < gif_ptr->src_row; i++) { + if (!gif_ptr->img_encoder_ptr->Encode( + &gif_ptr->src_buf[i * gif_ptr->src_pitch], + gif_ptr->src_width * (code_bit + 1), dst_buf, dst_len, + gif_ptr->cur_offset)) { + return FALSE; + } + } + gif_ptr->img_encoder_ptr->Finish(dst_buf, dst_len, gif_ptr->cur_offset); + dst_buf[gif_ptr->cur_offset++] = 0; + if (FXSYS_memcmp(gif_ptr->header_ptr->version, "89a", 3) == 0 && + gif_ptr->cmt_data_ptr) { + dst_buf[gif_ptr->cur_offset++] = GIF_SIG_EXTENSION; + dst_buf[gif_ptr->cur_offset++] = GIF_BLOCK_CE; + gif_write_block_data(gif_ptr->cmt_data_ptr, gif_ptr->cmt_data_len, dst_buf, + dst_len, gif_ptr->cur_offset); + dst_buf[gif_ptr->cur_offset++] = 0; + } + if (FXSYS_memcmp(gif_ptr->header_ptr->version, "89a", 3) == 0 && + gif_ptr->pte_data_ptr) { + dst_buf[gif_ptr->cur_offset++] = GIF_SIG_EXTENSION; + dst_buf[gif_ptr->cur_offset++] = GIF_BLOCK_PTE; + dst_buf[gif_ptr->cur_offset++] = gif_ptr->pte_ptr->block_size; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->pte_ptr->grid_left); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->pte_ptr->grid_top); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->pte_ptr->grid_width); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->pte_ptr->grid_height); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->pte_ptr->char_width); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, + gif_ptr->pte_ptr->char_height); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->pte_ptr->fc_index); + gif_ptr->cur_offset += 2; + SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->pte_ptr->bc_index); + gif_ptr->cur_offset += 2; + gif_write_block_data(gif_ptr->pte_data_ptr, gif_ptr->pte_data_len, dst_buf, + dst_len, gif_ptr->cur_offset); + gif_ptr->cur_offset += gif_ptr->pte_data_len; + dst_buf[gif_ptr->cur_offset++] = 0; + } + dst_buf[gif_ptr->cur_offset++] = GIF_SIG_TRAILER; + return TRUE; +} +FX_BOOL gif_encode(gif_compress_struct_p gif_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_len) { + if (!gif_write_header(gif_ptr, dst_buf, dst_len)) { + return FALSE; + } + FX_DWORD cur_offset = gif_ptr->cur_offset; + FX_BOOL res = TRUE; + if (gif_ptr->frames) { + gif_ptr->cur_offset--; + } + if (!gif_write_data(gif_ptr, dst_buf, dst_len)) { + gif_ptr->cur_offset = cur_offset; + res = FALSE; + } + dst_len = gif_ptr->cur_offset; + dst_buf[dst_len - 1] = GIF_SIG_TRAILER; + if (res) { + gif_ptr->frames++; + } + return res; +} diff --git a/core/fxcodec/lgif/fx_gif.h b/core/fxcodec/lgif/fx_gif.h new file mode 100644 index 0000000000..c44fb7a7cb --- /dev/null +++ b/core/fxcodec/lgif/fx_gif.h @@ -0,0 +1,296 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCODEC_LGIF_FX_GIF_H_ +#define CORE_FXCODEC_LGIF_FX_GIF_H_ + +#include + +#include "core/include/fxcrt/fx_basic.h" + +#define GIF_SIGNATURE "GIF" +#define GIF_SIG_EXTENSION 0x21 +#define GIF_SIG_IMAGE 0x2C +#define GIF_SIG_TRAILER 0x3B +#define GIF_BLOCK_GCE 0xF9 +#define GIF_BLOCK_PTE 0x01 +#define GIF_BLOCK_CE 0xFE +#define GIF_BLOCK_AE 0xFF +#define GIF_BLOCK_TERMINAL 0x00 +#define GIF_MAX_LZW_CODE 4096 +#define GIF_DATA_BLOCK 255 +#define GIF_MAX_ERROR_SIZE 256 +#define GIF_D_STATUS_SIG 0x01 +#define GIF_D_STATUS_TAIL 0x02 +#define GIF_D_STATUS_EXT 0x03 +#define GIF_D_STATUS_EXT_AE 0x04 +#define GIF_D_STATUS_EXT_CE 0x05 +#define GIF_D_STATUS_EXT_GCE 0x06 +#define GIF_D_STATUS_EXT_PTE 0x07 +#define GIF_D_STATUS_EXT_UNE 0x08 +#define GIF_D_STATUS_IMG_INFO 0x09 +#define GIF_D_STATUS_IMG_DATA 0x0A +#pragma pack(1) +typedef struct tagGifGF { + uint8_t pal_bits : 3; + uint8_t sort_flag : 1; + uint8_t color_resolution : 3; + uint8_t global_pal : 1; +} GifGF; +typedef struct tagGifLF { + uint8_t pal_bits : 3; + uint8_t reserved : 2; + uint8_t sort_flag : 1; + uint8_t interlace : 1; + uint8_t local_pal : 1; +} GifLF; +typedef struct tagGifHeader { + char signature[3]; + char version[3]; +} GifHeader; +typedef struct tagGifLSD { + FX_WORD width; + FX_WORD height; + uint8_t global_flag; + uint8_t bc_index; + uint8_t pixel_aspect; +} GifLSD; +typedef struct tagGifImageInfo { + FX_WORD left; + FX_WORD top; + FX_WORD width; + FX_WORD height; + + uint8_t local_flag; +} GifImageInfo; +typedef struct tagGifCEF { + uint8_t transparency : 1; + uint8_t user_input : 1; + uint8_t disposal_method : 3; + uint8_t reserved : 3; +} GifCEF; +typedef struct tagGifGCE { + uint8_t block_size; + uint8_t gce_flag; + FX_WORD delay_time; + uint8_t trans_index; +} GifGCE; +typedef struct tagGifPTE { + uint8_t block_size; + FX_WORD grid_left; + FX_WORD grid_top; + FX_WORD grid_width; + FX_WORD grid_height; + + uint8_t char_width; + uint8_t char_height; + + uint8_t fc_index; + uint8_t bc_index; +} GifPTE; +typedef struct tagGifAE { + uint8_t block_size; + uint8_t app_identify[8]; + uint8_t app_authentication[3]; +} GifAE; +typedef struct tagGifPalette { uint8_t r, g, b; } GifPalette; +#pragma pack() +typedef struct tagGifImage { + GifGCE* image_gce_ptr; + GifPalette* local_pal_ptr; + GifImageInfo* image_info_ptr; + uint8_t image_code_size; + FX_DWORD image_data_pos; + uint8_t* image_row_buf; + int32_t image_row_num; +} GifImage; +typedef struct tagGifPlainText { + GifGCE* gce_ptr; + GifPTE* pte_ptr; + CFX_ByteString* string_ptr; +} GifPlainText; +class CGifLZWDecoder { + public: + struct tag_Table { + FX_WORD prefix; + uint8_t suffix; + }; + CGifLZWDecoder(FX_CHAR* error_ptr = NULL) { err_msg_ptr = error_ptr; } + void InitTable(uint8_t code_len); + + int32_t Decode(uint8_t* des_buf, FX_DWORD& des_size); + + void Input(uint8_t* src_buf, FX_DWORD src_size); + FX_DWORD GetAvailInput(); + + private: + void ClearTable(); + void AddCode(FX_WORD prefix_code, uint8_t append_char); + void DecodeString(FX_WORD code); + uint8_t code_size; + uint8_t code_size_cur; + FX_WORD code_clear; + FX_WORD code_end; + FX_WORD code_next; + uint8_t code_first; + uint8_t stack[GIF_MAX_LZW_CODE]; + FX_WORD stack_size; + tag_Table code_table[GIF_MAX_LZW_CODE]; + FX_WORD code_old; + + uint8_t* next_in; + FX_DWORD avail_in; + + uint8_t bits_left; + FX_DWORD code_store; + + FX_CHAR* err_msg_ptr; +}; +class CGifLZWEncoder { + public: + struct tag_Table { + FX_WORD prefix; + uint8_t suffix; + }; + CGifLZWEncoder(); + ~CGifLZWEncoder(); + void Start(uint8_t code_len, + const uint8_t* src_buf, + uint8_t*& dst_buf, + FX_DWORD& offset); + FX_BOOL Encode(const uint8_t* src_buf, + FX_DWORD src_len, + uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD& offset); + void Finish(uint8_t*& dst_buf, FX_DWORD& dst_len, FX_DWORD& offset); + + private: + void ClearTable(); + FX_BOOL LookUpInTable(const uint8_t* buf, + FX_DWORD& offset, + uint8_t& bit_offset); + void EncodeString(FX_DWORD index, + uint8_t*& dst_buf, + FX_DWORD& dst_len, + FX_DWORD& offset); + void WriteBlock(uint8_t*& dst_buf, FX_DWORD& dst_len, FX_DWORD& offset); + jmp_buf jmp; + FX_DWORD src_offset; + uint8_t src_bit_offset; + uint8_t src_bit_cut; + FX_DWORD src_bit_num; + uint8_t code_size; + FX_WORD code_clear; + FX_WORD code_end; + FX_WORD index_num; + uint8_t bit_offset; + uint8_t index_bit_cur; + uint8_t index_buf[GIF_DATA_BLOCK]; + uint8_t index_buf_len; + tag_Table code_table[GIF_MAX_LZW_CODE]; + FX_WORD table_cur; +}; +typedef struct tag_gif_decompress_struct gif_decompress_struct; +typedef gif_decompress_struct* gif_decompress_struct_p; +typedef gif_decompress_struct_p* gif_decompress_struct_pp; +static const int32_t s_gif_interlace_step[4] = {8, 8, 4, 2}; +struct tag_gif_decompress_struct { + jmp_buf jmpbuf; + FX_CHAR* err_ptr; + void (*gif_error_fn)(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); + void* context_ptr; + int width; + int height; + GifPalette* global_pal_ptr; + int32_t global_pal_num; + uint8_t global_sort_flag; + uint8_t global_color_resolution; + + uint8_t bc_index; + uint8_t pixel_aspect; + CGifLZWDecoder* img_decoder_ptr; + FX_DWORD img_row_offset; + FX_DWORD img_row_avail_size; + uint8_t img_pass_num; + CFX_ArrayTemplate* img_ptr_arr_ptr; + uint8_t* (*gif_ask_buf_for_pal_fn)(gif_decompress_struct_p gif_ptr, + int32_t pal_size); + uint8_t* next_in; + FX_DWORD avail_in; + int32_t decode_status; + FX_DWORD skip_size; + void (*gif_record_current_position_fn)(gif_decompress_struct_p gif_ptr, + FX_DWORD* cur_pos_ptr); + void (*gif_get_row_fn)(gif_decompress_struct_p gif_ptr, + int32_t row_num, + uint8_t* row_buf); + FX_BOOL (*gif_get_record_position_fn)(gif_decompress_struct_p gif_ptr, + FX_DWORD cur_pos, + int32_t left, int32_t top, int32_t width, int32_t height, + int32_t pal_num, void* pal_ptr, + int32_t delay_time, FX_BOOL user_input, + int32_t trans_index, int32_t disposal_method, FX_BOOL interlace); + CFX_ByteString* cmt_data_ptr; + GifGCE* gce_ptr; + CFX_ArrayTemplate* pt_ptr_arr_ptr; +}; +typedef struct tag_gif_compress_struct gif_compress_struct; +typedef gif_compress_struct* gif_compress_struct_p; +typedef gif_compress_struct_p* gif_compress_struct_pp; +struct tag_gif_compress_struct { + const uint8_t* src_buf; + FX_DWORD src_pitch; + FX_DWORD src_width; + FX_DWORD src_row; + FX_DWORD cur_offset; + FX_DWORD frames; + GifHeader* header_ptr; + GifLSD* lsd_ptr; + GifPalette* global_pal; + FX_WORD gpal_num; + GifPalette* local_pal; + FX_WORD lpal_num; + GifImageInfo* image_info_ptr; + CGifLZWEncoder* img_encoder_ptr; + + uint8_t* cmt_data_ptr; + FX_DWORD cmt_data_len; + GifGCE* gce_ptr; + GifPTE* pte_ptr; + const uint8_t* pte_data_ptr; + FX_DWORD pte_data_len; +}; + +void gif_error(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); +void gif_warn(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); +gif_decompress_struct_p gif_create_decompress(); +void gif_destroy_decompress(gif_decompress_struct_pp gif_ptr_ptr); +gif_compress_struct_p gif_create_compress(); +void gif_destroy_compress(gif_compress_struct_pp gif_ptr_ptr); +int32_t gif_read_header(gif_decompress_struct_p gif_ptr); +int32_t gif_get_frame(gif_decompress_struct_p gif_ptr); +int32_t gif_get_frame_num(gif_decompress_struct_p gif_ptr); +int32_t gif_decode_extension(gif_decompress_struct_p gif_ptr); +int32_t gif_decode_image_info(gif_decompress_struct_p gif_ptr); +void gif_takeover_gce_ptr(gif_decompress_struct_p gif_ptr, + GifGCE** gce_ptr_ptr); +int32_t gif_load_frame(gif_decompress_struct_p gif_ptr, int32_t frame_num); +uint8_t* gif_read_data(gif_decompress_struct_p gif_ptr, + uint8_t** des_buf_pp, + FX_DWORD data_size); +void gif_save_decoding_status(gif_decompress_struct_p gif_ptr, int32_t status); +void gif_input_buffer(gif_decompress_struct_p gif_ptr, + uint8_t* src_buf, + FX_DWORD src_size); +FX_DWORD gif_get_avail_input(gif_decompress_struct_p gif_ptr, + uint8_t** avial_buf_ptr); +void interlace_buf(const uint8_t* buf, FX_DWORD width, FX_DWORD height); +FX_BOOL gif_encode(gif_compress_struct_p gif_ptr, + uint8_t*& dst_buf, + FX_DWORD& dst_len); + +#endif // CORE_FXCODEC_LGIF_FX_GIF_H_ diff --git a/core/fxcrt/extension.h b/core/fxcrt/extension.h new file mode 100644 index 0000000000..dbbc889fd0 --- /dev/null +++ b/core/fxcrt/extension.h @@ -0,0 +1,334 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_EXTENSION_H_ +#define CORE_FXCRT_EXTENSION_H_ + +#include + +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_safe_types.h" + +class IFXCRT_FileAccess { + public: + virtual ~IFXCRT_FileAccess() {} + virtual FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) = 0; + virtual FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) = 0; + virtual void Close() = 0; + virtual void Release() = 0; + virtual FX_FILESIZE GetSize() const = 0; + virtual FX_FILESIZE GetPosition() const = 0; + virtual FX_FILESIZE SetPosition(FX_FILESIZE pos) = 0; + virtual size_t Read(void* pBuffer, size_t szBuffer) = 0; + virtual size_t Write(const void* pBuffer, size_t szBuffer) = 0; + virtual size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) = 0; + virtual size_t WritePos(const void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) = 0; + virtual FX_BOOL Flush() = 0; + virtual FX_BOOL Truncate(FX_FILESIZE szFile) = 0; +}; +IFXCRT_FileAccess* FXCRT_FileAccess_Create(); + +#ifdef PDF_ENABLE_XFA +class CFX_CRTFileAccess : public IFX_FileAccess { + public: + CFX_CRTFileAccess() : m_RefCount(0) {} + + // IFX_FileAccess + void Release() override { + if (--m_RefCount == 0) + delete this; + } + + IFX_FileAccess* Retain() override { + m_RefCount++; + return (IFX_FileAccess*)this; + } + + void GetPath(CFX_WideString& wsPath) override { wsPath = m_path; } + + IFX_FileStream* CreateFileStream(FX_DWORD dwModes) override { + return FX_CreateFileStream(m_path, dwModes); + } + + FX_BOOL Init(const CFX_WideStringC& wsPath) { + m_path = wsPath; + m_RefCount = 1; + return TRUE; + } + + protected: + CFX_WideString m_path; + FX_DWORD m_RefCount; +}; +#endif // PDF_ENABLE_XFA + +class CFX_CRTFileStream final : public IFX_FileStream { + public: + explicit CFX_CRTFileStream(IFXCRT_FileAccess* pFA); + ~CFX_CRTFileStream() override; + + // IFX_FileStream: + IFX_FileStream* Retain() override; + void Release() override; + FX_FILESIZE GetSize() override; + FX_BOOL IsEOF() override; + FX_FILESIZE GetPosition() override; + FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; + size_t ReadBlock(void* buffer, size_t size) override; + FX_BOOL WriteBlock(const void* buffer, + FX_FILESIZE offset, + size_t size) override; + FX_BOOL Flush() override; + + protected: + IFXCRT_FileAccess* m_pFile; + FX_DWORD m_dwCount; +}; + +#define FX_MEMSTREAM_BlockSize (64 * 1024) +#define FX_MEMSTREAM_Consecutive 0x01 +#define FX_MEMSTREAM_TakeOver 0x02 +class CFX_MemoryStream final : public IFX_MemoryStream { + public: + explicit CFX_MemoryStream(FX_BOOL bConsecutive) + : m_dwCount(1), + m_nTotalSize(0), + m_nCurSize(0), + m_nCurPos(0), + m_nGrowSize(FX_MEMSTREAM_BlockSize) { + m_dwFlags = + FX_MEMSTREAM_TakeOver | (bConsecutive ? FX_MEMSTREAM_Consecutive : 0); + } + CFX_MemoryStream(uint8_t* pBuffer, size_t nSize, FX_BOOL bTakeOver) + : m_dwCount(1), + m_nTotalSize(nSize), + m_nCurSize(nSize), + m_nCurPos(0), + m_nGrowSize(FX_MEMSTREAM_BlockSize) { + m_Blocks.Add(pBuffer); + m_dwFlags = + FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); + } + ~CFX_MemoryStream() override { + if (m_dwFlags & FX_MEMSTREAM_TakeOver) { + for (int32_t i = 0; i < m_Blocks.GetSize(); i++) { + FX_Free(m_Blocks[i]); + } + } + m_Blocks.RemoveAll(); + } + + // IFX_MemoryStream: + IFX_FileStream* Retain() override { + m_dwCount++; + return this; + } + void Release() override { + FX_DWORD nCount = --m_dwCount; + if (nCount) { + return; + } + delete this; + } + FX_FILESIZE GetSize() override { return (FX_FILESIZE)m_nCurSize; } + FX_BOOL IsEOF() override { return m_nCurPos >= (size_t)GetSize(); } + FX_FILESIZE GetPosition() override { return (FX_FILESIZE)m_nCurPos; } + FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { + if (!buffer || !size) { + return FALSE; + } + + FX_SAFE_SIZE_T newPos = size; + newPos += offset; + if (!newPos.IsValid() || newPos.ValueOrDefault(0) == 0 || + newPos.ValueOrDie() > m_nCurSize) { + return FALSE; + } + + m_nCurPos = newPos.ValueOrDie(); + if (m_dwFlags & FX_MEMSTREAM_Consecutive) { + FXSYS_memcpy(buffer, m_Blocks[0] + (size_t)offset, size); + return TRUE; + } + size_t nStartBlock = (size_t)offset / m_nGrowSize; + offset -= (FX_FILESIZE)(nStartBlock * m_nGrowSize); + while (size) { + size_t nRead = m_nGrowSize - (size_t)offset; + if (nRead > size) { + nRead = size; + } + FXSYS_memcpy(buffer, m_Blocks[(int)nStartBlock] + (size_t)offset, nRead); + buffer = ((uint8_t*)buffer) + nRead; + size -= nRead; + nStartBlock++; + offset = 0; + } + return TRUE; + } + size_t ReadBlock(void* buffer, size_t size) override { + if (m_nCurPos >= m_nCurSize) { + return 0; + } + size_t nRead = std::min(size, m_nCurSize - m_nCurPos); + if (!ReadBlock(buffer, (int32_t)m_nCurPos, nRead)) { + return 0; + } + return nRead; + } + FX_BOOL WriteBlock(const void* buffer, + FX_FILESIZE offset, + size_t size) override { + if (!buffer || !size) { + return FALSE; + } + if (m_dwFlags & FX_MEMSTREAM_Consecutive) { + FX_SAFE_SIZE_T newPos = size; + newPos += offset; + if (!newPos.IsValid()) + return FALSE; + + m_nCurPos = newPos.ValueOrDie(); + if (m_nCurPos > m_nTotalSize) { + m_nTotalSize = + (m_nCurPos + m_nGrowSize - 1) / m_nGrowSize * m_nGrowSize; + if (m_Blocks.GetSize() < 1) { + uint8_t* block = FX_Alloc(uint8_t, m_nTotalSize); + m_Blocks.Add(block); + } else { + m_Blocks[0] = FX_Realloc(uint8_t, m_Blocks[0], m_nTotalSize); + } + if (!m_Blocks[0]) { + m_Blocks.RemoveAll(); + return FALSE; + } + } + FXSYS_memcpy(m_Blocks[0] + (size_t)offset, buffer, size); + if (m_nCurSize < m_nCurPos) { + m_nCurSize = m_nCurPos; + } + return TRUE; + } + + FX_SAFE_SIZE_T newPos = size; + newPos += offset; + if (!newPos.IsValid()) { + return FALSE; + } + + if (!ExpandBlocks(newPos.ValueOrDie())) { + return FALSE; + } + m_nCurPos = newPos.ValueOrDie(); + size_t nStartBlock = (size_t)offset / m_nGrowSize; + offset -= (FX_FILESIZE)(nStartBlock * m_nGrowSize); + while (size) { + size_t nWrite = m_nGrowSize - (size_t)offset; + if (nWrite > size) { + nWrite = size; + } + FXSYS_memcpy(m_Blocks[(int)nStartBlock] + (size_t)offset, buffer, nWrite); + buffer = ((uint8_t*)buffer) + nWrite; + size -= nWrite; + nStartBlock++; + offset = 0; + } + return TRUE; + } + FX_BOOL Flush() override { return TRUE; } + FX_BOOL IsConsecutive() const override { + return m_dwFlags & FX_MEMSTREAM_Consecutive; + } + void EstimateSize(size_t nInitSize, size_t nGrowSize) override { + if (m_dwFlags & FX_MEMSTREAM_Consecutive) { + if (m_Blocks.GetSize() < 1) { + uint8_t* pBlock = + FX_Alloc(uint8_t, std::max(nInitSize, static_cast(4096))); + m_Blocks.Add(pBlock); + } + m_nGrowSize = std::max(nGrowSize, static_cast(4096)); + } else if (m_Blocks.GetSize() < 1) { + m_nGrowSize = std::max(nGrowSize, static_cast(4096)); + } + } + uint8_t* GetBuffer() const override { + return m_Blocks.GetSize() ? m_Blocks[0] : nullptr; + } + void AttachBuffer(uint8_t* pBuffer, + size_t nSize, + FX_BOOL bTakeOver = FALSE) override { + if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) { + return; + } + m_Blocks.RemoveAll(); + m_Blocks.Add(pBuffer); + m_nTotalSize = m_nCurSize = nSize; + m_nCurPos = 0; + m_dwFlags = + FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); + } + void DetachBuffer() override { + if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) { + return; + } + m_Blocks.RemoveAll(); + m_nTotalSize = m_nCurSize = m_nCurPos = 0; + m_dwFlags = FX_MEMSTREAM_TakeOver; + } + + protected: + CFX_ArrayTemplate m_Blocks; + FX_DWORD m_dwCount; + size_t m_nTotalSize; + size_t m_nCurSize; + size_t m_nCurPos; + size_t m_nGrowSize; + FX_DWORD m_dwFlags; + FX_BOOL ExpandBlocks(size_t size) { + if (m_nCurSize < size) { + m_nCurSize = size; + } + if (size <= m_nTotalSize) { + return TRUE; + } + int32_t iCount = m_Blocks.GetSize(); + size = (size - m_nTotalSize + m_nGrowSize - 1) / m_nGrowSize; + m_Blocks.SetSize(m_Blocks.GetSize() + (int32_t)size); + while (size--) { + uint8_t* pBlock = FX_Alloc(uint8_t, m_nGrowSize); + m_Blocks.SetAt(iCount++, pBlock); + m_nTotalSize += m_nGrowSize; + } + return TRUE; + } +}; + +#ifdef __cplusplus +extern "C" { +#endif +#define MT_N 848 +#define MT_M 456 +#define MT_Matrix_A 0x9908b0df +#define MT_Upper_Mask 0x80000000 +#define MT_Lower_Mask 0x7fffffff +struct FX_MTRANDOMCONTEXT { + FX_MTRANDOMCONTEXT() { + mti = MT_N + 1; + bHaveSeed = FALSE; + } + FX_DWORD mti; + FX_BOOL bHaveSeed; + FX_DWORD mt[MT_N]; +}; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +FX_BOOL FX_GenerateCryptoRandom(FX_DWORD* pBuffer, int32_t iCount); +#endif +#ifdef __cplusplus +} +#endif + +#endif // CORE_FXCRT_EXTENSION_H_ diff --git a/core/fxcrt/fx_arabic.cpp b/core/fxcrt/fx_arabic.cpp new file mode 100644 index 0000000000..dfc3d802e5 --- /dev/null +++ b/core/fxcrt/fx_arabic.cpp @@ -0,0 +1,970 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/fx_arabic.h" +#include "core/include/fxcrt/fx_ucd.h" + +namespace { + +const FX_ARBFORMTABLE g_FX_ArabicFormTables[] = { + {0xFE81, 0xFE82, 0xFE81, 0xFE82}, {0xFE83, 0xFE84, 0xFE83, 0xFE84}, + {0xFE85, 0xFE86, 0xFE85, 0xFE86}, {0xFE87, 0xFE88, 0xFE87, 0xFE88}, + {0xFE89, 0xFE8A, 0xFE8B, 0xFE8C}, {0xFE8D, 0xFE8E, 0xFE8D, 0xFE8E}, + {0xFE8F, 0xFE90, 0xFE91, 0xFE92}, {0xFE93, 0xFE94, 0xFE93, 0xFE94}, + {0xFE95, 0xFE96, 0xFE97, 0xFE98}, {0xFE99, 0xFE9A, 0xFE9B, 0xFE9C}, + {0xFE9D, 0xFE9E, 0xFE9F, 0xFEA0}, {0xFEA1, 0xFEA2, 0xFEA3, 0xFEA4}, + {0xFEA5, 0xFEA6, 0xFEA7, 0xFEA8}, {0xFEA9, 0xFEAA, 0xFEA9, 0xFEAA}, + {0xFEAB, 0xFEAC, 0xFEAB, 0xFEAC}, {0xFEAD, 0xFEAE, 0xFEAD, 0xFEAE}, + {0xFEAF, 0xFEB0, 0xFEAF, 0xFEB0}, {0xFEB1, 0xFEB2, 0xFEB3, 0xFEB4}, + {0xFEB5, 0xFEB6, 0xFEB7, 0xFEB8}, {0xFEB9, 0xFEBA, 0xFEBB, 0xFEBC}, + {0xFEBD, 0xFEBE, 0xFEBF, 0xFEC0}, {0xFEC1, 0xFEC2, 0xFEC3, 0xFEC4}, + {0xFEC5, 0xFEC6, 0xFEC7, 0xFEC8}, {0xFEC9, 0xFECA, 0xFECB, 0xFECC}, + {0xFECD, 0xFECE, 0xFECF, 0xFED0}, {0x063B, 0x063B, 0x063B, 0x063B}, + {0x063C, 0x063C, 0x063C, 0x063C}, {0x063D, 0x063D, 0x063D, 0x063D}, + {0x063E, 0x063E, 0x063E, 0x063E}, {0x063F, 0x063F, 0x063F, 0x063F}, + {0x0640, 0x0640, 0x0640, 0x0640}, {0xFED1, 0xFED2, 0xFED3, 0xFED4}, + {0xFED5, 0xFED6, 0xFED7, 0xFED8}, {0xFED9, 0xFEDA, 0xFEDB, 0xFEDC}, + {0xFEDD, 0xFEDE, 0xFEDF, 0xFEE0}, {0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4}, + {0xFEE5, 0xFEE6, 0xFEE7, 0xFEE8}, {0xFEE9, 0xFEEA, 0xFEEB, 0xFEEC}, + {0xFEED, 0xFEEE, 0xFEED, 0xFEEE}, {0xFEEF, 0xFEF0, 0xFBFE, 0xFBFF}, + {0xFEF1, 0xFEF2, 0xFEF3, 0xFEF4}, {0x064B, 0x064B, 0x064B, 0x064B}, + {0x064C, 0x064C, 0x064C, 0x064C}, {0x064D, 0x064D, 0x064D, 0x064D}, + {0x064E, 0x064E, 0x064E, 0x064E}, {0x064F, 0x064F, 0x064F, 0x064F}, + {0x0650, 0x0650, 0x0650, 0x0650}, {0x0651, 0x0651, 0x0651, 0x0651}, + {0x0652, 0x0652, 0x0652, 0x0652}, {0x0653, 0x0653, 0x0653, 0x0653}, + {0x0654, 0x0654, 0x0654, 0x0654}, {0x0655, 0x0655, 0x0655, 0x0655}, + {0x0656, 0x0656, 0x0656, 0x0656}, {0x0657, 0x0657, 0x0657, 0x0657}, + {0x0658, 0x0658, 0x0658, 0x0658}, {0x0659, 0x0659, 0x0659, 0x0659}, + {0x065A, 0x065A, 0x065A, 0x065A}, {0x065B, 0x065B, 0x065B, 0x065B}, + {0x065C, 0x065C, 0x065C, 0x065C}, {0x065D, 0x065D, 0x065D, 0x065D}, + {0x065E, 0x065E, 0x065E, 0x065E}, {0x065F, 0x065F, 0x065F, 0x065F}, + {0x0660, 0x0660, 0x0660, 0x0660}, {0x0661, 0x0661, 0x0661, 0x0661}, + {0x0662, 0x0662, 0x0662, 0x0662}, {0x0663, 0x0663, 0x0663, 0x0663}, + {0x0664, 0x0664, 0x0664, 0x0664}, {0x0665, 0x0665, 0x0665, 0x0665}, + {0x0666, 0x0666, 0x0666, 0x0666}, {0x0667, 0x0667, 0x0667, 0x0667}, + {0x0668, 0x0668, 0x0668, 0x0668}, {0x0669, 0x0669, 0x0669, 0x0669}, + {0x066A, 0x066A, 0x066A, 0x066A}, {0x066B, 0x066B, 0x066B, 0x066B}, + {0x066C, 0x066C, 0x066C, 0x066C}, {0x066D, 0x066D, 0x066D, 0x066D}, + {0x066E, 0x066E, 0x066E, 0x066E}, {0x066F, 0x066F, 0x066F, 0x066F}, + {0x0670, 0x0670, 0x0670, 0x0670}, {0xFB50, 0xFB51, 0xFB50, 0xFB51}, + {0x0672, 0x0672, 0x0672, 0x0672}, {0x0673, 0x0673, 0x0673, 0x0673}, + {0x0674, 0x0674, 0x0674, 0x0674}, {0x0675, 0x0675, 0x0675, 0x0675}, + {0x0676, 0x0676, 0x0676, 0x0676}, {0x0677, 0x0677, 0x0677, 0x0677}, + {0x0678, 0x0678, 0x0678, 0x0678}, {0xFB66, 0xFB67, 0xFB68, 0xFB69}, + {0xFB5E, 0xFB5F, 0xFB60, 0xFB61}, {0xFB52, 0xFB53, 0xFB54, 0xFB55}, + {0x067C, 0x067C, 0x067C, 0x067C}, {0x067D, 0x067D, 0x067D, 0x067D}, + {0xFB56, 0xFB57, 0xFB58, 0xFB59}, {0xFB62, 0xFB63, 0xFB64, 0xFB65}, + {0xFB5A, 0xFB5B, 0xFB5C, 0xFB5D}, {0x0681, 0x0681, 0x0681, 0x0681}, + {0x0682, 0x0682, 0x0682, 0x0682}, {0xFB76, 0xFB77, 0xFB78, 0xFB79}, + {0xFB72, 0xFB73, 0xFB74, 0xFB75}, {0x0685, 0x0685, 0x0685, 0x0685}, + {0xFB7A, 0xFB7B, 0xFB7C, 0xFB7D}, {0xFB7E, 0xFB7F, 0xFB80, 0xFB81}, + {0xFB88, 0xFB89, 0xFB88, 0xFB89}, {0x0689, 0x0689, 0x0689, 0x0689}, + {0x068A, 0x068A, 0x068A, 0x068A}, {0x068B, 0x068B, 0x068B, 0x068B}, + {0xFB84, 0xFB85, 0xFB84, 0xFB85}, {0xFB82, 0xFB83, 0xFB82, 0xFB83}, + {0xFB86, 0xFB87, 0xFB86, 0xFB87}, {0x068F, 0x068F, 0x068F, 0x068F}, + {0x0690, 0x0690, 0x0690, 0x0690}, {0xFB8C, 0xFB8D, 0xFB8C, 0xFB8D}, + {0x0692, 0x0692, 0x0692, 0x0692}, {0x0693, 0x0693, 0x0693, 0x0693}, + {0x0694, 0x0694, 0x0694, 0x0694}, {0x0695, 0x0695, 0x0695, 0x0695}, + {0x0696, 0x0696, 0x0696, 0x0696}, {0x0697, 0x0697, 0x0697, 0x0697}, + {0xFB8A, 0xFB8B, 0xFB8A, 0xFB8B}, {0x0699, 0x0699, 0x0699, 0x0699}, + {0x069A, 0x069A, 0x069A, 0x069A}, {0x069B, 0x069B, 0x069B, 0x069B}, + {0x069C, 0x069C, 0x069C, 0x069C}, {0x069D, 0x069D, 0x069D, 0x069D}, + {0x069E, 0x069E, 0x069E, 0x069E}, {0x069F, 0x069F, 0x069F, 0x069F}, + {0x06A0, 0x06A0, 0x06A0, 0x06A0}, {0x06A1, 0x06A1, 0x06A1, 0x06A1}, + {0x06A2, 0x06A2, 0x06A2, 0x06A2}, {0x06A3, 0x06A3, 0x06A3, 0x06A3}, + {0xFB6A, 0xFB6B, 0xFB6C, 0xFB6D}, {0x06A5, 0x06A5, 0x06A5, 0x06A5}, + {0xFB6E, 0xFB6F, 0xFB70, 0xFB71}, {0x06A7, 0x06A7, 0x06A7, 0x06A7}, + {0x06A8, 0x06A8, 0x06A8, 0x06A8}, {0xFB8E, 0xFB8F, 0xFB90, 0xFB91}, + {0x06AA, 0x06AA, 0x06AA, 0x06AA}, {0x06AB, 0x06AB, 0x06AB, 0x06AB}, + {0x06AC, 0x06AC, 0x06AC, 0x06AC}, {0xFBD3, 0xFBD4, 0xFBD5, 0xFBD6}, + {0x06AE, 0x06AE, 0x06AE, 0x06AE}, {0xFB92, 0xFB93, 0xFB94, 0xFB95}, + {0x06B0, 0x06B0, 0x06B0, 0x06B0}, {0xFB9A, 0xFB9B, 0xFB9C, 0xFB9D}, + {0x06B2, 0x06B2, 0x06B2, 0x06B2}, {0xFB96, 0xFB97, 0xFB98, 0xFB99}, + {0x06B4, 0x06B4, 0x06B4, 0x06B4}, {0x06B5, 0x06B5, 0x06B5, 0x06B5}, + {0x06B6, 0x06B6, 0x06B6, 0x06B6}, {0x06B7, 0x06B7, 0x06B7, 0x06B7}, + {0x06B8, 0x06B8, 0x06B8, 0x06B8}, {0x06B9, 0x06B9, 0x06B9, 0x06B9}, + {0xFB9E, 0xFB9F, 0xFBE8, 0xFBE9}, {0xFBA0, 0xFBA1, 0xFBA2, 0xFBA3}, + {0x06BC, 0x06BC, 0x06BC, 0x06BC}, {0x06BD, 0x06BD, 0x06BD, 0x06BD}, + {0xFBAA, 0xFBAB, 0xFBAC, 0xFBAD}, {0x06BF, 0x06BF, 0x06BF, 0x06BF}, + {0xFBA4, 0xFBA5, 0xFBA4, 0xFBA5}, {0xFBA6, 0xFBA7, 0xFBA8, 0xFBA9}, + {0x06C2, 0x06C2, 0x06C2, 0x06C2}, {0x06C3, 0x06C3, 0x06C3, 0x06C3}, + {0x06C4, 0x06C4, 0x06C4, 0x06C4}, {0xFBE0, 0xFBE1, 0xFBE0, 0xFBE1}, + {0xFBD9, 0xFBDA, 0xFBD9, 0xFBDA}, {0xFBD7, 0xFBD8, 0xFBD7, 0xFBD8}, + {0xFBDB, 0xFBDC, 0xFBDB, 0xFBDC}, {0xFBE2, 0xFBE3, 0xFBE2, 0xFBE3}, + {0x06CA, 0x06CA, 0x06CA, 0x06CA}, {0xFBDE, 0xFBDF, 0xFBDE, 0xFBDF}, + {0xFBFC, 0xFBFD, 0xFBFE, 0xFBFF}, {0x06CD, 0x06CD, 0x06CD, 0x06CD}, + {0x06CE, 0x06CE, 0x06CE, 0x06CE}, {0x06CF, 0x06CF, 0x06CF, 0x06CF}, + {0xFBE4, 0xFBE5, 0xFBE6, 0xFBE7}, {0x06D1, 0x06D1, 0x06D1, 0x06D1}, + {0xFBAE, 0xFBAF, 0xFBAE, 0xFBAF}, {0xFBB0, 0xFBB1, 0xFBB0, 0xFBB1}, + {0x06D4, 0x06D4, 0x06D4, 0x06D4}, {0x06D5, 0x06D5, 0x06D5, 0x06D5}, +}; + +const FX_ARAALEF gs_FX_AlefTable[] = { + {0x0622, 0xFEF5}, + {0x0623, 0xFEF7}, + {0x0625, 0xFEF9}, + {0x0627, 0xFEFB}, +}; + +const FX_ARASHADDA gs_FX_ShaddaTable[] = { + {0x064C, 0xFC5E}, {0x064D, 0xFC5F}, {0x064E, 0xFC60}, + {0x064F, 0xFC61}, {0x0650, 0xFC62}, +}; + +} // namespace + +const FX_ARBFORMTABLE* FX_GetArabicFormTable(FX_WCHAR unicode) { + if (unicode < 0x622 || unicode > 0x6d5) { + return NULL; + } + return g_FX_ArabicFormTables + unicode - 0x622; +} +FX_WCHAR FX_GetArabicFromAlefTable(FX_WCHAR alef) { + static const int32_t s_iAlefCount = + sizeof(gs_FX_AlefTable) / sizeof(FX_ARAALEF); + for (int32_t iStart = 0; iStart < s_iAlefCount; iStart++) { + const FX_ARAALEF& v = gs_FX_AlefTable[iStart]; + if (v.wAlef == alef) { + return v.wIsolated; + } + } + return alef; +} +FX_WCHAR FX_GetArabicFromShaddaTable(FX_WCHAR shadda) { + static const int32_t s_iShaddaCount = + sizeof(gs_FX_ShaddaTable) / sizeof(FX_ARASHADDA); + for (int32_t iStart = 0; iStart < s_iShaddaCount; iStart++) { + const FX_ARASHADDA& v = gs_FX_ShaddaTable[iStart]; + if (v.wShadda == shadda) { + return v.wIsolated; + } + } + return shadda; +} + +IFX_ArabicChar* IFX_ArabicChar::Create() { + return new CFX_ArabicChar; +} +FX_BOOL CFX_ArabicChar::IsArabicChar(FX_WCHAR wch) const { + FX_DWORD dwRet = + kTextLayoutCodeProperties[(FX_WORD)wch] & FX_CHARTYPEBITSMASK; + return dwRet >= FX_CHARTYPE_ArabicAlef; +} +FX_BOOL CFX_ArabicChar::IsArabicFormChar(FX_WCHAR wch) const { + return (kTextLayoutCodeProperties[(FX_WORD)wch] & FX_CHARTYPEBITSMASK) == + FX_CHARTYPE_ArabicForm; +} +FX_WCHAR CFX_ArabicChar::GetFormChar(FX_WCHAR wch, + FX_WCHAR prev, + FX_WCHAR next) const { + CFX_Char c(wch, kTextLayoutCodeProperties[(FX_WORD)wch]); + CFX_Char p(prev, kTextLayoutCodeProperties[(FX_WORD)prev]); + CFX_Char n(next, kTextLayoutCodeProperties[(FX_WORD)next]); + return GetFormChar(&c, &p, &n); +} +FX_WCHAR CFX_ArabicChar::GetFormChar(const CFX_Char* cur, + const CFX_Char* prev, + const CFX_Char* next) const { + FX_CHARTYPE eCur; + FX_WCHAR wCur; + const FX_ARBFORMTABLE* ft = ParseChar(cur, wCur, eCur); + if (eCur < FX_CHARTYPE_ArabicAlef || eCur >= FX_CHARTYPE_ArabicNormal) { + return wCur; + } + FX_CHARTYPE ePrev; + FX_WCHAR wPrev; + ParseChar(prev, wPrev, ePrev); + if (wPrev == 0x0644 && eCur == FX_CHARTYPE_ArabicAlef) { + return 0xFEFF; + } + FX_CHARTYPE eNext; + FX_WCHAR wNext; + ParseChar(next, wNext, eNext); + bool bAlef = (eNext == FX_CHARTYPE_ArabicAlef && wCur == 0x644); + if (ePrev < FX_CHARTYPE_ArabicAlef) { + if (bAlef) { + return FX_GetArabicFromAlefTable(wNext); + } else { + return (eNext < FX_CHARTYPE_ArabicAlef) ? ft->wIsolated : ft->wInitial; + } + } else { + if (bAlef) { + wCur = FX_GetArabicFromAlefTable(wNext); + return (ePrev != FX_CHARTYPE_ArabicDistortion) ? wCur : ++wCur; + } else if (ePrev == FX_CHARTYPE_ArabicAlef || + ePrev == FX_CHARTYPE_ArabicSpecial) { + return (eNext < FX_CHARTYPE_ArabicAlef) ? ft->wIsolated : ft->wInitial; + } else { + return (eNext < FX_CHARTYPE_ArabicAlef) ? ft->wFinal : ft->wMedial; + } + } +} +const FX_ARBFORMTABLE* CFX_ArabicChar::ParseChar(const CFX_Char* pTC, + FX_WCHAR& wChar, + FX_CHARTYPE& eType) const { + if (pTC == NULL) { + eType = FX_CHARTYPE_Unknown; + wChar = 0xFEFF; + return NULL; + } + eType = (FX_CHARTYPE)pTC->GetCharType(); + wChar = (FX_WCHAR)pTC->m_wCharCode; + const FX_ARBFORMTABLE* pFT = FX_GetArabicFormTable(wChar); + if (pFT == NULL || eType >= FX_CHARTYPE_ArabicNormal) { + eType = FX_CHARTYPE_Unknown; + } + return pFT; +} +void FX_BidiReverseString(CFX_WideString& wsText, + int32_t iStart, + int32_t iCount) { + FXSYS_assert(iStart > -1 && iStart < wsText.GetLength()); + FXSYS_assert(iCount >= 0 && iStart + iCount <= wsText.GetLength()); + FX_WCHAR wch; + FX_WCHAR* pStart = (FX_WCHAR*)(const FX_WCHAR*)wsText; + pStart += iStart; + FX_WCHAR* pEnd = pStart + iCount - 1; + while (pStart < pEnd) { + wch = *pStart; + *pStart++ = *pEnd; + *pEnd-- = wch; + } +} +void FX_BidiSetDeferredRun(CFX_Int32Array& values, + int32_t iStart, + int32_t iCount, + int32_t iValue) { + FXSYS_assert(iStart > -1 && iStart <= values.GetSize()); + FXSYS_assert(iStart - iCount > -1); + for (int32_t i = iStart - 1; i >= iStart - iCount; i--) { + values.SetAt(i, iValue); + } +} +const int32_t gc_FX_BidiNTypes[] = { + FX_BIDICLASS_N, FX_BIDICLASS_L, FX_BIDICLASS_R, FX_BIDICLASS_AN, + FX_BIDICLASS_EN, FX_BIDICLASS_AL, FX_BIDICLASS_NSM, FX_BIDICLASS_CS, + FX_BIDICLASS_ES, FX_BIDICLASS_ET, FX_BIDICLASS_BN, FX_BIDICLASS_BN, + FX_BIDICLASS_N, FX_BIDICLASS_B, FX_BIDICLASS_RLO, FX_BIDICLASS_RLE, + FX_BIDICLASS_LRO, FX_BIDICLASS_LRE, FX_BIDICLASS_PDF, FX_BIDICLASS_ON, +}; +void FX_BidiClassify(const CFX_WideString& wsText, + CFX_Int32Array& classes, + FX_BOOL bWS) { + FXSYS_assert(wsText.GetLength() == classes.GetSize()); + int32_t iCount = wsText.GetLength(); + const FX_WCHAR* pwsStart = (const FX_WCHAR*)wsText; + FX_WCHAR wch; + int32_t iCls; + if (bWS) { + for (int32_t i = 0; i < iCount; i++) { + wch = *pwsStart++; + iCls = + ((kTextLayoutCodeProperties[(FX_WORD)wch] & FX_BIDICLASSBITSMASK) >> + FX_BIDICLASSBITS); + classes.SetAt(i, iCls); + } + } else { + for (int32_t i = 0; i < iCount; i++) { + wch = *pwsStart++; + iCls = + ((kTextLayoutCodeProperties[(FX_WORD)wch] & FX_BIDICLASSBITSMASK) >> + FX_BIDICLASSBITS); + classes.SetAt(i, gc_FX_BidiNTypes[iCls]); + } + } +} +int32_t FX_BidiResolveExplicit(int32_t iBaseLevel, + int32_t iDirection, + CFX_Int32Array& classes, + CFX_Int32Array& levels, + int32_t iStart, + int32_t iCount, + int32_t iNest) { + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL && iNest >= 0); + FXSYS_assert(classes.GetSize() == levels.GetSize()); + FXSYS_assert(iStart >= 0 && iStart < classes.GetSize()); + FXSYS_assert(iCount >= 0 && iStart + iCount <= classes.GetSize()); + if (iCount < 1) { + return 0; + } + + int32_t iSize = classes.GetSize(); + int32_t i = iStart, iCur, iCls; + for (; i < iSize && iCount > 0; i++, iCount--) { + iCur = iCls = classes.GetAt(i); + + if (iDirection != FX_BIDICLASS_N) { + iCls = iDirection; + } + if (iCur != FX_BIDICLASS_BN) { + classes.SetAt(i, iCls); + } + levels.SetAt(i, iBaseLevel); + } + return i - iStart; +} +const int32_t gc_FX_BidiWeakStates[][10] = { + {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWSxa, + FX_BWSao, FX_BWSao, FX_BWSao}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSxr, + FX_BWSro, FX_BWSro, FX_BWSrt}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSxl, + FX_BWSlo, FX_BWSlo, FX_BWSlt}, + {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWSao, + FX_BWSao, FX_BWSao, FX_BWSao}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSro, + FX_BWSro, FX_BWSro, FX_BWSrt}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlo, + FX_BWSlo, FX_BWSlo, FX_BWSlt}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSrt, + FX_BWSro, FX_BWSro, FX_BWSrt}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlt, + FX_BWSlo, FX_BWSlo, FX_BWSlt}, + {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWScn, + FX_BWSac, FX_BWSao, FX_BWSao}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSra, + FX_BWSrc, FX_BWSro, FX_BWSrt}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSre, + FX_BWSrs, FX_BWSrs, FX_BWSret}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSla, + FX_BWSlc, FX_BWSlo, FX_BWSlt}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSle, + FX_BWSls, FX_BWSls, FX_BWSlet}, + {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWSao, + FX_BWSao, FX_BWSao, FX_BWSao}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSro, + FX_BWSro, FX_BWSro, FX_BWSrt}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSro, + FX_BWSro, FX_BWSro, FX_BWSrt}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlo, + FX_BWSlo, FX_BWSlo, FX_BWSlt}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlo, + FX_BWSlo, FX_BWSlo, FX_BWSlt}, + {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSret, + FX_BWSro, FX_BWSro, FX_BWSret}, + {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlet, + FX_BWSlo, FX_BWSlo, FX_BWSlet}, +}; +const int32_t gc_FX_BidiWeakActions[][10] = { + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxA, FX_BWAxxR, + FX_BWAxxR, FX_BWAxxN, FX_BWAxxN, FX_BWAxxN}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, + FX_BWAxxR, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, + FX_BWAxxL, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxA, FX_BWAxxR, + FX_BWAxxN, FX_BWAxxN, FX_BWAxxN, FX_BWAxxN}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, + FX_BWAxxN, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, + FX_BWAxxN, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, + {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAExE, FX_BWANxR, + FX_BWAxIx, FX_BWANxN, FX_BWANxN, FX_BWAxIx}, + {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWALxL, FX_BWANxR, + FX_BWAxIx, FX_BWANxN, FX_BWANxN, FX_BWAxIx}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxA, FX_BWAxxR, + FX_BWAxxA, FX_BWAxIx, FX_BWAxxN, FX_BWAxxN}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, + FX_BWAxxA, FX_BWAxIx, FX_BWAxxN, FX_BWAxIx}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, + FX_BWAxxE, FX_BWAxIx, FX_BWAxIx, FX_BWAxxE}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, + FX_BWAxxA, FX_BWAxIx, FX_BWAxxN, FX_BWAxIx}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, + FX_BWAxxL, FX_BWAxIx, FX_BWAxIx, FX_BWAxxL}, + {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAAxx, FX_BWAAxA, FX_BWANxR, + FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANxN}, + {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAAxx, FX_BWANxE, FX_BWANxR, + FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, + {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAExE, FX_BWANxR, + FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, + {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAAxx, FX_BWANxL, FX_BWANxR, + FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, + {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWALxL, FX_BWANxR, + FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, + FX_BWAxxE, FX_BWAxxN, FX_BWAxxN, FX_BWAxxE}, + {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, + FX_BWAxxL, FX_BWAxxN, FX_BWAxxN, FX_BWAxxL}, +}; +void FX_BidiResolveWeak(int32_t iBaseLevel, + CFX_Int32Array& classes, + CFX_Int32Array& levels) { + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + FXSYS_assert(classes.GetSize() == levels.GetSize()); + int32_t iSize = classes.GetSize(); + if (iSize < 1) { + return; + } + iSize--; + int32_t iLevelCur = iBaseLevel; + int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BWSxr : FX_BWSxl; + int32_t i = 0, iCount = 0, iClsCur, iClsRun, iClsNew, iAction; + for (; i <= iSize; i++) { + iClsCur = classes.GetAt(i); + + FXSYS_assert(iClsCur <= FX_BIDICLASS_BN); + iAction = gc_FX_BidiWeakActions[iState][iClsCur]; + iClsRun = FX_BidiGetDeferredType(iAction); + if (iClsRun != FX_BIDIWEAKACTION_XX && iCount > 0) { + FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); + iCount = 0; + } + iClsNew = FX_BidiGetResolvedType(iAction); + if (iClsNew != FX_BIDIWEAKACTION_XX) { + classes.SetAt(i, iClsNew); + } + if (FX_BIDIWEAKACTION_IX & iAction) { + iCount++; + } + iState = gc_FX_BidiWeakStates[iState][iClsCur]; + } + iClsCur = FX_BidiDirection(iLevelCur); + iClsRun = FX_BidiGetDeferredType(gc_FX_BidiWeakActions[iState][iClsCur]); + if (iClsRun != FX_BIDIWEAKACTION_XX && iCount > 0) { + FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); + } +} +const int32_t gc_FX_BidiNeutralStates[][5] = { + {FX_BNSrn, FX_BNSl, FX_BNSr, FX_BNSr, FX_BNSr}, + {FX_BNSln, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, + {FX_BNSrn, FX_BNSl, FX_BNSr, FX_BNSr, FX_BNSr}, + {FX_BNSln, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, + {FX_BNSna, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, + {FX_BNSna, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, +}; +const int32_t gc_FX_BidiNeutralActions[][5] = { + {FX_BNAIn, 0, 0, 0, 0}, + {FX_BNAIn, 0, 0, 0, FX_BCL}, + {FX_BNAIn, FX_BNAEn, FX_BNARn, FX_BNARn, FX_BNARn}, + {FX_BNAIn, FX_BNALn, FX_BNAEn, FX_BNAEn, FX_BNALnL}, + {FX_BNAIn, 0, 0, 0, FX_BCL}, + {FX_BNAIn, FX_BNAEn, FX_BNARn, FX_BNARn, FX_BNAEn}, +}; +int32_t FX_BidiGetDeferredNeutrals(int32_t iAction, int32_t iLevel) { + iAction = (iAction >> 4) & 0xF; + if (iAction == (FX_BIDINEUTRALACTION_En >> 4)) { + return FX_BidiDirection(iLevel); + } else { + return iAction; + } +} +int32_t FX_BidiGetResolvedNeutrals(int32_t iAction) { + iAction = (iAction & 0xF); + if (iAction == FX_BIDINEUTRALACTION_In) { + return 0; + } else { + return iAction; + } +} +void FX_BidiResolveNeutrals(int32_t iBaseLevel, + CFX_Int32Array& classes, + const CFX_Int32Array& levels) { + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + FXSYS_assert(classes.GetSize() == levels.GetSize()); + int32_t iSize = classes.GetSize(); + if (iSize < 1) { + return; + } + iSize--; + int32_t iLevel = iBaseLevel; + int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BNSr : FX_BNSl; + int32_t i = 0, iCount = 0, iClsCur, iClsRun, iClsNew, iAction; + for (; i <= iSize; i++) { + iClsCur = classes.GetAt(i); + if (iClsCur == FX_BIDICLASS_BN) { + if (iCount) { + iCount++; + } + continue; + } + FXSYS_assert(iClsCur < FX_BIDICLASS_AL); + iAction = gc_FX_BidiNeutralActions[iState][iClsCur]; + iClsRun = FX_BidiGetDeferredNeutrals(iAction, iLevel); + if (iClsRun != FX_BIDICLASS_N && iCount > 0) { + FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); + iCount = 0; + } + iClsNew = FX_BidiGetResolvedNeutrals(iAction); + if (iClsNew != FX_BIDICLASS_N) { + classes.SetAt(i, iClsNew); + } + if (FX_BIDINEUTRALACTION_In & iAction) { + iCount++; + } + iState = gc_FX_BidiNeutralStates[iState][iClsCur]; + iLevel = levels.GetAt(i); + } + iClsCur = FX_BidiDirection(iLevel); + iClsRun = FX_BidiGetDeferredNeutrals( + gc_FX_BidiNeutralActions[iState][iClsCur], iLevel); + if (iClsRun != FX_BIDICLASS_N && iCount > 0) { + FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); + } +} +const int32_t gc_FX_BidiAddLevel[][4] = { + {0, 1, 2, 2}, + {1, 0, 1, 1}, +}; +void FX_BidiResolveImplicit(const CFX_Int32Array& classes, + CFX_Int32Array& levels) { + FXSYS_assert(classes.GetSize() == levels.GetSize()); + int32_t iSize = classes.GetSize(); + if (iSize < 1) { + return; + } + iSize--; + int32_t iCls, iLevel; + for (int32_t i = 0; i <= iSize; i++) { + iCls = classes.GetAt(i); + if (iCls == FX_BIDICLASS_BN) { + continue; + } + FXSYS_assert(iCls > FX_BIDICLASS_ON && iCls < FX_BIDICLASS_AL); + iLevel = levels.GetAt(i); + iLevel += gc_FX_BidiAddLevel[FX_IsOdd(iLevel)][iCls - 1]; + levels.SetAt(i, iLevel); + } +} +void FX_BidiResolveWhitespace(int32_t iBaseLevel, + const CFX_Int32Array& classes, + CFX_Int32Array& levels) { + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + FXSYS_assert(classes.GetSize() == levels.GetSize()); + int32_t iSize = classes.GetSize(); + if (iSize < 1) { + return; + } + iSize--; + int32_t iLevel = iBaseLevel; + int32_t i = 0, iCount = 0; + for (; i <= iSize; i++) { + switch (classes.GetAt(i)) { + case FX_BIDICLASS_WS: + iCount++; + break; + case FX_BIDICLASS_RLE: + case FX_BIDICLASS_LRE: + case FX_BIDICLASS_LRO: + case FX_BIDICLASS_RLO: + case FX_BIDICLASS_PDF: + case FX_BIDICLASS_BN: + levels.SetAt(i, iLevel); + iCount++; + break; + case FX_BIDICLASS_S: + case FX_BIDICLASS_B: + if (iCount > 0) { + FX_BidiSetDeferredRun(levels, i, iCount, iBaseLevel); + } + levels.SetAt(i, iBaseLevel); + iCount = 0; + break; + default: + iCount = 0; + break; + } + iLevel = levels.GetAt(i); + } + if (iCount > 0) { + FX_BidiSetDeferredRun(levels, i, iCount, iBaseLevel); + } +} +int32_t FX_BidiReorderLevel(int32_t iBaseLevel, + CFX_WideString& wsText, + const CFX_Int32Array& levels, + int32_t iStart, + FX_BOOL bReverse) { + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + FXSYS_assert(wsText.GetLength() == levels.GetSize()); + FXSYS_assert(iStart >= 0 && iStart < wsText.GetLength()); + int32_t iSize = wsText.GetLength(); + if (iSize < 1) { + return 0; + } + bReverse = bReverse || FX_IsOdd(iBaseLevel); + int32_t i = iStart, iLevel; + for (; i < iSize; i++) { + if ((iLevel = levels.GetAt(i)) == iBaseLevel) { + continue; + } + if (iLevel < iBaseLevel) { + break; + } + i += FX_BidiReorderLevel(iBaseLevel + 1, wsText, levels, i, bReverse) - 1; + } + int32_t iCount = i - iStart; + if (bReverse && iCount > 1) { + FX_BidiReverseString(wsText, iStart, iCount); + } + return iCount; +} +void FX_BidiReorder(int32_t iBaseLevel, + CFX_WideString& wsText, + const CFX_Int32Array& levels) { + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + FXSYS_assert(wsText.GetLength() == levels.GetSize()); + int32_t iSize = wsText.GetLength(); + if (iSize < 1) { + return; + } + int32_t i = 0; + while (i < iSize) { + i += FX_BidiReorderLevel(iBaseLevel, wsText, levels, i, FALSE); + } +} +void FX_BidiLine(CFX_WideString& wsText, int32_t iBaseLevel) { + int32_t iLength = wsText.GetLength(); + if (iLength < 2) { + return; + } + CFX_Int32Array classes, levels; + classes.SetAtGrow(iLength - 1, 0); + levels.SetAtGrow(iLength - 1, 0); + FX_BidiClassify(wsText, classes, FALSE); + FX_BidiResolveExplicit(iBaseLevel, FX_BIDICLASS_N, classes, levels, 0, + iLength, 0); + FX_BidiResolveWeak(iBaseLevel, classes, levels); + FX_BidiResolveNeutrals(iBaseLevel, classes, levels); + FX_BidiResolveImplicit(classes, levels); + FX_BidiClassify(wsText, classes, TRUE); + FX_BidiResolveWhitespace(iBaseLevel, classes, levels); + FX_BidiReorder(iBaseLevel, wsText, levels); + classes.RemoveAll(); + levels.RemoveAll(); +} +template +class CFX_BidiLineTemplate { + public: + void FX_BidiReverseString(CFX_ArrayTemplate& chars, + int32_t iStart, + int32_t iCount) { + FXSYS_assert(iStart > -1 && iStart < chars.GetSize()); + FXSYS_assert(iCount >= 0 && iStart + iCount <= chars.GetSize()); + baseType *pStart, *pEnd; + int32_t iEnd = iStart + iCount - 1, iTemp; + while (iStart < iEnd) { + pStart = chars.GetDataPtr(iStart++); + pEnd = chars.GetDataPtr(iEnd--); + iTemp = pStart->m_iBidiPos; + pStart->m_iBidiPos = pEnd->m_iBidiPos; + pEnd->m_iBidiPos = iTemp; + } + } + void FX_BidiSetDeferredRun(CFX_ArrayTemplate& chars, + FX_BOOL bClass, + int32_t iStart, + int32_t iCount, + int32_t iValue) { + FXSYS_assert(iStart > -1 && iStart <= chars.GetSize()); + FXSYS_assert(iStart - iCount > -1); + baseType* pTC; + int32_t iLast = iStart - iCount; + if (bClass) { + for (int32_t i = iStart - 1; i >= iLast; i--) { + pTC = chars.GetDataPtr(i); + pTC->m_iBidiClass = (int16_t)iValue; + } + } else { + for (int32_t i = iStart - 1; i >= iLast; i--) { + pTC = chars.GetDataPtr(i); + pTC->m_iBidiLevel = (int16_t)iValue; + } + } + } + void FX_BidiClassify(CFX_ArrayTemplate& chars, + int32_t iCount, + FX_BOOL bWS) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + baseType* pTC; + if (bWS) { + for (int32_t i = 0; i < iCount; i++) { + pTC = chars.GetDataPtr(i); + pTC->m_iBidiClass = + (int16_t)(pTC->m_dwCharProps & FX_BIDICLASSBITSMASK) >> + FX_BIDICLASSBITS; + } + } else { + for (int32_t i = 0; i < iCount; i++) { + pTC = chars.GetDataPtr(i); + pTC->m_iBidiClass = (int16_t) + gc_FX_BidiNTypes[(pTC->m_dwCharProps & FX_BIDICLASSBITSMASK) >> + FX_BIDICLASSBITS]; + } + } + } + void FX_BidiResolveExplicit(CFX_ArrayTemplate& chars, + int32_t iCount, + int32_t iBaseLevel) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + if (iCount < 1) { + return; + } + baseType* pTC; + for (int32_t i = 0; i < iCount; i++) { + pTC = chars.GetDataPtr(i); + pTC->m_iBidiLevel = (int16_t)iBaseLevel; + } + } + void FX_BidiResolveWeak(CFX_ArrayTemplate& chars, + int32_t iCount, + int32_t iBaseLevel) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + iCount--; + if (iCount < 1) { + return; + } + baseType *pTC, *pTCNext; + int32_t iLevelCur = iBaseLevel; + int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BWSxr : FX_BWSxl; + int32_t i = 0, iNum = 0, iClsCur, iClsRun, iClsNew, iAction; + for (; i <= iCount; i++) { + pTC = chars.GetDataPtr(i); + iClsCur = pTC->m_iBidiClass; + if (iClsCur == FX_BIDICLASS_BN) { + pTC->m_iBidiLevel = (int16_t)iLevelCur; + if (i == iCount && iLevelCur != iBaseLevel) { + iClsCur = FX_BidiDirection(iLevelCur); + pTC->m_iBidiClass = (int16_t)iClsCur; + } else if (i < iCount) { + pTCNext = chars.GetDataPtr(i + 1); + int32_t iLevelNext, iLevelNew; + iClsNew = pTCNext->m_iBidiClass; + iLevelNext = pTCNext->m_iBidiLevel; + if (iClsNew != FX_BIDICLASS_BN && iLevelCur != iLevelNext) { + iLevelNew = iLevelNext; + if (iLevelCur > iLevelNew) { + iLevelNew = iLevelCur; + } + pTC->m_iBidiLevel = (int16_t)iLevelNew; + iClsCur = FX_BidiDirection(iLevelNew); + pTC->m_iBidiClass = (int16_t)iClsCur; + iLevelCur = iLevelNext; + } else { + if (iNum > 0) { + iNum++; + } + continue; + } + } else { + if (iNum > 0) { + iNum++; + } + continue; + } + } + FXSYS_assert(iClsCur <= FX_BIDICLASS_BN); + iAction = gc_FX_BidiWeakActions[iState][iClsCur]; + iClsRun = FX_BidiGetDeferredType(iAction); + if (iClsRun != FX_BIDIWEAKACTION_XX && iNum > 0) { + FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); + iNum = 0; + } + iClsNew = FX_BidiGetResolvedType(iAction); + if (iClsNew != FX_BIDIWEAKACTION_XX) { + pTC->m_iBidiClass = (int16_t)iClsNew; + } + if (FX_BIDIWEAKACTION_IX & iAction) { + iNum++; + } + iState = gc_FX_BidiWeakStates[iState][iClsCur]; + } + if (iNum > 0) { + iClsCur = FX_BidiDirection(iBaseLevel); + iClsRun = FX_BidiGetDeferredType(gc_FX_BidiWeakActions[iState][iClsCur]); + if (iClsRun != FX_BIDIWEAKACTION_XX) { + FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); + } + } + } + void FX_BidiResolveNeutrals(CFX_ArrayTemplate& chars, + int32_t iCount, + int32_t iBaseLevel) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + iCount--; + if (iCount < 1) { + return; + } + baseType* pTC; + int32_t iLevel = iBaseLevel; + int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BNSr : FX_BNSl; + int32_t i = 0, iNum = 0, iClsCur, iClsRun, iClsNew, iAction; + for (; i <= iCount; i++) { + pTC = chars.GetDataPtr(i); + iClsCur = pTC->m_iBidiClass; + if (iClsCur == FX_BIDICLASS_BN) { + if (iNum) { + iNum++; + } + continue; + } + FXSYS_assert(iClsCur < FX_BIDICLASS_AL); + iAction = gc_FX_BidiNeutralActions[iState][iClsCur]; + iClsRun = FX_BidiGetDeferredNeutrals(iAction, iLevel); + if (iClsRun != FX_BIDICLASS_N && iNum > 0) { + FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); + iNum = 0; + } + iClsNew = FX_BidiGetResolvedNeutrals(iAction); + if (iClsNew != FX_BIDICLASS_N) { + pTC->m_iBidiClass = (int16_t)iClsNew; + } + if (FX_BIDINEUTRALACTION_In & iAction) { + iNum++; + } + iState = gc_FX_BidiNeutralStates[iState][iClsCur]; + iLevel = pTC->m_iBidiLevel; + } + if (iNum > 0) { + iClsCur = FX_BidiDirection(iLevel); + iClsRun = FX_BidiGetDeferredNeutrals( + gc_FX_BidiNeutralActions[iState][iClsCur], iLevel); + if (iClsRun != FX_BIDICLASS_N) { + FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); + } + } + } + void FX_BidiResolveImplicit(CFX_ArrayTemplate& chars, + int32_t iCount) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + baseType* pTC; + int32_t iCls, iLevel; + for (int32_t i = 0; i < iCount; i++) { + pTC = chars.GetDataPtr(i); + iCls = pTC->m_iBidiClass; + if (iCls == FX_BIDICLASS_BN) { + continue; + } + FXSYS_assert(iCls > FX_BIDICLASS_ON && iCls < FX_BIDICLASS_AL); + iLevel = pTC->m_iBidiLevel; + iLevel += gc_FX_BidiAddLevel[FX_IsOdd(iLevel)][iCls - 1]; + pTC->m_iBidiLevel = (int16_t)iLevel; + } + } + void FX_BidiResolveWhitespace(CFX_ArrayTemplate& chars, + int32_t iCount, + int32_t iBaseLevel) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + if (iCount < 1) { + return; + } + iCount--; + int32_t iLevel = iBaseLevel; + int32_t i = 0, iNum = 0; + baseType* pTC; + for (; i <= iCount; i++) { + pTC = chars.GetDataPtr(i); + switch (pTC->m_iBidiClass) { + case FX_BIDICLASS_WS: + iNum++; + break; + case FX_BIDICLASS_RLE: + case FX_BIDICLASS_LRE: + case FX_BIDICLASS_LRO: + case FX_BIDICLASS_RLO: + case FX_BIDICLASS_PDF: + case FX_BIDICLASS_BN: + pTC->m_iBidiLevel = (int16_t)iLevel; + iNum++; + break; + case FX_BIDICLASS_S: + case FX_BIDICLASS_B: + if (iNum > 0) { + FX_BidiSetDeferredRun(chars, FALSE, i, iNum, iBaseLevel); + } + pTC->m_iBidiLevel = (int16_t)iBaseLevel; + iNum = 0; + break; + default: + iNum = 0; + break; + } + iLevel = pTC->m_iBidiLevel; + } + if (iNum > 0) { + FX_BidiSetDeferredRun(chars, FALSE, i, iNum, iBaseLevel); + } + } + int32_t FX_BidiReorderLevel(CFX_ArrayTemplate& chars, + int32_t iCount, + int32_t iBaseLevel, + int32_t iStart, + FX_BOOL bReverse) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + FXSYS_assert(iStart >= 0 && iStart < iCount); + if (iCount < 1) { + return 0; + } + baseType* pTC; + bReverse = bReverse || FX_IsOdd(iBaseLevel); + int32_t i = iStart, iLevel; + for (; i < iCount; i++) { + pTC = chars.GetDataPtr(i); + if ((iLevel = pTC->m_iBidiLevel) == iBaseLevel) { + continue; + } + if (iLevel < iBaseLevel) { + break; + } + i += FX_BidiReorderLevel(chars, iCount, iBaseLevel + 1, i, bReverse) - 1; + } + int32_t iNum = i - iStart; + if (bReverse && iNum > 1) { + FX_BidiReverseString(chars, iStart, iNum); + } + return iNum; + } + void FX_BidiReorder(CFX_ArrayTemplate& chars, + int32_t iCount, + int32_t iBaseLevel) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); + int32_t i = 0; + while (i < iCount) { + i += FX_BidiReorderLevel(chars, iCount, iBaseLevel, i, FALSE); + } + } + void FX_BidiPosition(CFX_ArrayTemplate& chars, int32_t iCount) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + baseType* pTC; + int32_t i = 0; + while (i < iCount) { + pTC = chars.GetDataPtr(i); + pTC = chars.GetDataPtr(pTC->m_iBidiPos); + pTC->m_iBidiOrder = i++; + } + } + + void FX_BidiLine(CFX_ArrayTemplate& chars, + int32_t iCount, + int32_t iBaseLevel) { + FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); + if (iCount < 2) { + return; + } + FX_BidiClassify(chars, iCount, FALSE); + FX_BidiResolveExplicit(chars, iCount, iBaseLevel); + FX_BidiResolveWeak(chars, iCount, iBaseLevel); + FX_BidiResolveNeutrals(chars, iCount, iBaseLevel); + FX_BidiResolveImplicit(chars, iCount); + FX_BidiClassify(chars, iCount, TRUE); + FX_BidiResolveWhitespace(chars, iCount, iBaseLevel); + FX_BidiReorder(chars, iCount, iBaseLevel); + FX_BidiPosition(chars, iCount); + } +}; +void FX_BidiLine(CFX_TxtCharArray& chars, int32_t iCount, int32_t iBaseLevel) { + CFX_BidiLineTemplate blt; + blt.FX_BidiLine(chars, iCount, iBaseLevel); +} +void FX_BidiLine(CFX_RTFCharArray& chars, int32_t iCount, int32_t iBaseLevel) { + CFX_BidiLineTemplate blt; + blt.FX_BidiLine(chars, iCount, iBaseLevel); +} diff --git a/core/fxcrt/fx_arabic.h b/core/fxcrt/fx_arabic.h new file mode 100644 index 0000000000..f785e21a91 --- /dev/null +++ b/core/fxcrt/fx_arabic.h @@ -0,0 +1,211 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_FX_ARABIC_H_ +#define CORE_FXCRT_FX_ARABIC_H_ + +#include "core/include/fxcrt/fx_arb.h" + +class CFX_ArabicChar : public IFX_ArabicChar { + public: + virtual void Release() { delete this; } + virtual FX_BOOL IsArabicChar(FX_WCHAR wch) const; + virtual FX_BOOL IsArabicFormChar(FX_WCHAR wch) const; + + virtual FX_WCHAR GetFormChar(FX_WCHAR wch, + FX_WCHAR prev = 0, + FX_WCHAR next = 0) const; + virtual FX_WCHAR GetFormChar(const CFX_Char* cur, + const CFX_Char* prev, + const CFX_Char* next) const; + + protected: + const FX_ARBFORMTABLE* ParseChar(const CFX_Char* pTC, + FX_WCHAR& wChar, + FX_CHARTYPE& eType) const; +}; +void FX_BidiReverseString(CFX_WideString& wsText, + int32_t iStart, + int32_t iCount); +void FX_BidiSetDeferredRun(CFX_Int32Array& values, + int32_t iStart, + int32_t iCount, + int32_t iValue); +#define FX_BCON FX_BIDICLASS_ON +#define FX_BCL FX_BIDICLASS_L +#define FX_BCR FX_BIDICLASS_R +#define FX_BCAN FX_BIDICLASS_AN +#define FX_BCEN FX_BIDICLASS_EN +#define FX_BCAL FX_BIDICLASS_AL +#define FX_BCNSM FX_BIDICLASS_NSM +#define FX_BCCS FX_BIDICLASS_CS +#define FX_BCES FX_BIDICLASS_ES +#define FX_BCET FX_BIDICLASS_ET +#define FX_BCBN FX_BIDICLASS_BN +#define FX_BCS FX_BIDICLASS_S +#define FX_BCWS FX_BIDICLASS_WS +#define FX_BCB FX_BIDICLASS_B +#define FX_BCRLO FX_BIDICLASS_RLO +#define FX_BCRLE FX_BIDICLASS_RLE +#define FX_BCLRO FX_BIDICLASS_LRO +#define FX_BCLRE FX_BIDICLASS_LRE +#define FX_BCPDF FX_BIDICLASS_PDF +#define FX_BCN FX_BIDICLASS_N +void FX_BidiClassify(const CFX_WideString& wsText, + CFX_Int32Array& classes, + FX_BOOL bWS = FALSE); +#define FX_BIDIMAXLEVEL 61 +#define FX_BidiGreaterEven(a) (FX_IsOdd(a) ? ((a) + 1) : ((a) + 2)) +#define FX_BidiGreaterOdd(a) (FX_IsOdd(a) ? ((a) + 2) : ((a) + 1)) +int32_t FX_BidiResolveExplicit(int32_t iBaseLevel, + int32_t iDirection, + CFX_Int32Array& classes, + CFX_Int32Array& levels, + int32_t iStart, + int32_t iCount, + int32_t iNest = 0); +#define FX_BidiDirection(a) (FX_IsOdd(a) ? FX_BIDICLASS_R : FX_BIDICLASS_L) +enum FX_BIDIWEAKSTATE { + FX_BIDIWEAKSTATE_xa = 0, + FX_BIDIWEAKSTATE_xr, + FX_BIDIWEAKSTATE_xl, + FX_BIDIWEAKSTATE_ao, + FX_BIDIWEAKSTATE_ro, + FX_BIDIWEAKSTATE_lo, + FX_BIDIWEAKSTATE_rt, + FX_BIDIWEAKSTATE_lt, + FX_BIDIWEAKSTATE_cn, + FX_BIDIWEAKSTATE_ra, + FX_BIDIWEAKSTATE_re, + FX_BIDIWEAKSTATE_la, + FX_BIDIWEAKSTATE_le, + FX_BIDIWEAKSTATE_ac, + FX_BIDIWEAKSTATE_rc, + FX_BIDIWEAKSTATE_rs, + FX_BIDIWEAKSTATE_lc, + FX_BIDIWEAKSTATE_ls, + FX_BIDIWEAKSTATE_ret, + FX_BIDIWEAKSTATE_let, +}; +#define FX_BWSxa FX_BIDIWEAKSTATE_xa +#define FX_BWSxr FX_BIDIWEAKSTATE_xr +#define FX_BWSxl FX_BIDIWEAKSTATE_xl +#define FX_BWSao FX_BIDIWEAKSTATE_ao +#define FX_BWSro FX_BIDIWEAKSTATE_ro +#define FX_BWSlo FX_BIDIWEAKSTATE_lo +#define FX_BWSrt FX_BIDIWEAKSTATE_rt +#define FX_BWSlt FX_BIDIWEAKSTATE_lt +#define FX_BWScn FX_BIDIWEAKSTATE_cn +#define FX_BWSra FX_BIDIWEAKSTATE_ra +#define FX_BWSre FX_BIDIWEAKSTATE_re +#define FX_BWSla FX_BIDIWEAKSTATE_la +#define FX_BWSle FX_BIDIWEAKSTATE_le +#define FX_BWSac FX_BIDIWEAKSTATE_ac +#define FX_BWSrc FX_BIDIWEAKSTATE_rc +#define FX_BWSrs FX_BIDIWEAKSTATE_rs +#define FX_BWSlc FX_BIDIWEAKSTATE_lc +#define FX_BWSls FX_BIDIWEAKSTATE_ls +#define FX_BWSret FX_BIDIWEAKSTATE_ret +#define FX_BWSlet FX_BIDIWEAKSTATE_let +enum FX_BIDIWEAKACTION { + FX_BIDIWEAKACTION_IX = 0x100, + FX_BIDIWEAKACTION_XX = 0x0F, + FX_BIDIWEAKACTION_xxx = (0x0F << 4) + 0x0F, + FX_BIDIWEAKACTION_xIx = 0x100 + FX_BIDIWEAKACTION_xxx, + FX_BIDIWEAKACTION_xxN = (0x0F << 4) + FX_BIDICLASS_ON, + FX_BIDIWEAKACTION_xxE = (0x0F << 4) + FX_BIDICLASS_EN, + FX_BIDIWEAKACTION_xxA = (0x0F << 4) + FX_BIDICLASS_AN, + FX_BIDIWEAKACTION_xxR = (0x0F << 4) + FX_BIDICLASS_R, + FX_BIDIWEAKACTION_xxL = (0x0F << 4) + FX_BIDICLASS_L, + FX_BIDIWEAKACTION_Nxx = (FX_BIDICLASS_ON << 4) + 0x0F, + FX_BIDIWEAKACTION_Axx = (FX_BIDICLASS_AN << 4) + 0x0F, + FX_BIDIWEAKACTION_ExE = (FX_BIDICLASS_EN << 4) + FX_BIDICLASS_EN, + FX_BIDIWEAKACTION_NIx = (FX_BIDICLASS_ON << 4) + 0x0F + 0x100, + FX_BIDIWEAKACTION_NxN = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_ON, + FX_BIDIWEAKACTION_NxR = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_R, + FX_BIDIWEAKACTION_NxE = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_EN, + FX_BIDIWEAKACTION_AxA = (FX_BIDICLASS_AN << 4) + FX_BIDICLASS_AN, + FX_BIDIWEAKACTION_NxL = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_L, + FX_BIDIWEAKACTION_LxL = (FX_BIDICLASS_L << 4) + FX_BIDICLASS_L, + FX_BIDIWEAKACTION_xIL = (0x0F << 4) + FX_BIDICLASS_L + 0x100, + FX_BIDIWEAKACTION_AxR = (FX_BIDICLASS_AN << 4) + FX_BIDICLASS_R, + FX_BIDIWEAKACTION_Lxx = (FX_BIDICLASS_L << 4) + 0x0F, +}; +#define FX_BWAIX FX_BIDIWEAKACTION_IX +#define FX_BWAXX FX_BIDIWEAKACTION_XX +#define FX_BWAxxx FX_BIDIWEAKACTION_xxx +#define FX_BWAxIx FX_BIDIWEAKACTION_xIx +#define FX_BWAxxN FX_BIDIWEAKACTION_xxN +#define FX_BWAxxE FX_BIDIWEAKACTION_xxE +#define FX_BWAxxA FX_BIDIWEAKACTION_xxA +#define FX_BWAxxR FX_BIDIWEAKACTION_xxR +#define FX_BWAxxL FX_BIDIWEAKACTION_xxL +#define FX_BWANxx FX_BIDIWEAKACTION_Nxx +#define FX_BWAAxx FX_BIDIWEAKACTION_Axx +#define FX_BWAExE FX_BIDIWEAKACTION_ExE +#define FX_BWANIx FX_BIDIWEAKACTION_NIx +#define FX_BWANxN FX_BIDIWEAKACTION_NxN +#define FX_BWANxR FX_BIDIWEAKACTION_NxR +#define FX_BWANxE FX_BIDIWEAKACTION_NxE +#define FX_BWAAxA FX_BIDIWEAKACTION_AxA +#define FX_BWANxL FX_BIDIWEAKACTION_NxL +#define FX_BWALxL FX_BIDIWEAKACTION_LxL +#define FX_BWAxIL FX_BIDIWEAKACTION_xIL +#define FX_BWAAxR FX_BIDIWEAKACTION_AxR +#define FX_BWALxx FX_BIDIWEAKACTION_Lxx +#define FX_BidiGetDeferredType(a) (((a) >> 4) & 0x0F) +#define FX_BidiGetResolvedType(a) ((a)&0x0F) +void FX_BidiResolveWeak(int32_t iBaseLevel, + CFX_Int32Array& classes, + CFX_Int32Array& levels); +enum FX_BIDINEUTRALSTATE { + FX_BIDINEUTRALSTATE_r = 0, + FX_BIDINEUTRALSTATE_l, + FX_BIDINEUTRALSTATE_rn, + FX_BIDINEUTRALSTATE_ln, + FX_BIDINEUTRALSTATE_a, + FX_BIDINEUTRALSTATE_na, +}; +#define FX_BNSr FX_BIDINEUTRALSTATE_r +#define FX_BNSl FX_BIDINEUTRALSTATE_l +#define FX_BNSrn FX_BIDINEUTRALSTATE_rn +#define FX_BNSln FX_BIDINEUTRALSTATE_ln +#define FX_BNSa FX_BIDINEUTRALSTATE_a +#define FX_BNSna FX_BIDINEUTRALSTATE_na +enum FX_BIDINEUTRALACTION { + FX_BIDINEUTRALACTION_nL = FX_BIDICLASS_L, + FX_BIDINEUTRALACTION_En = (FX_BIDICLASS_AN << 4), + FX_BIDINEUTRALACTION_Rn = (FX_BIDICLASS_R << 4), + FX_BIDINEUTRALACTION_Ln = (FX_BIDICLASS_L << 4), + FX_BIDINEUTRALACTION_In = FX_BIDIWEAKACTION_IX, + FX_BIDINEUTRALACTION_LnL = (FX_BIDICLASS_L << 4) + FX_BIDICLASS_L, +}; +#define FX_BNAnL FX_BIDINEUTRALACTION_nL +#define FX_BNAEn FX_BIDINEUTRALACTION_En +#define FX_BNARn FX_BIDINEUTRALACTION_Rn +#define FX_BNALn FX_BIDINEUTRALACTION_Ln +#define FX_BNAIn FX_BIDINEUTRALACTION_In +#define FX_BNALnL FX_BIDINEUTRALACTION_LnL +int32_t FX_BidiGetDeferredNeutrals(int32_t iAction, int32_t iLevel); +int32_t FX_BidiGetResolvedNeutrals(int32_t iAction); +void FX_BidiResolveNeutrals(int32_t iBaseLevel, + CFX_Int32Array& classes, + const CFX_Int32Array& levels); +void FX_BidiResolveImplicit(const CFX_Int32Array& classes, + CFX_Int32Array& levels); +void FX_BidiResolveWhitespace(int32_t iBaseLevel, + const CFX_Int32Array& classes, + CFX_Int32Array& levels); +int32_t FX_BidiReorderLevel(int32_t iBaseLevel, + CFX_WideString& wsText, + const CFX_Int32Array& levels, + int32_t iStart, + FX_BOOL bReverse = FALSE); +void FX_BidiReorder(int32_t iBaseLevel, + CFX_WideString& wsText, + const CFX_Int32Array& levels); + +#endif // CORE_FXCRT_FX_ARABIC_H_ diff --git a/core/fxcrt/fx_basic_array.cpp b/core/fxcrt/fx_basic_array.cpp new file mode 100644 index 0000000000..18e2bd26d2 --- /dev/null +++ b/core/fxcrt/fx_basic_array.cpp @@ -0,0 +1,342 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_basic.h" +#include "third_party/base/numerics/safe_math.h" + +CFX_BasicArray::CFX_BasicArray(int unit_size) + : m_pData(NULL), m_nSize(0), m_nMaxSize(0) { + if (unit_size < 0 || unit_size > (1 << 28)) { + m_nUnitSize = 4; + } else { + m_nUnitSize = unit_size; + } +} +CFX_BasicArray::~CFX_BasicArray() { + FX_Free(m_pData); +} +FX_BOOL CFX_BasicArray::SetSize(int nNewSize) { + if (nNewSize <= 0) { + FX_Free(m_pData); + m_pData = NULL; + m_nSize = m_nMaxSize = 0; + return 0 == nNewSize; + } + + if (!m_pData) { + pdfium::base::CheckedNumeric totalSize = nNewSize; + totalSize *= m_nUnitSize; + if (!totalSize.IsValid()) { + m_nSize = m_nMaxSize = 0; + return FALSE; + } + m_pData = FX_Alloc(uint8_t, totalSize.ValueOrDie()); + m_nSize = m_nMaxSize = nNewSize; + } else if (nNewSize <= m_nMaxSize) { + if (nNewSize > m_nSize) { + FXSYS_memset(m_pData + m_nSize * m_nUnitSize, 0, + (nNewSize - m_nSize) * m_nUnitSize); + } + m_nSize = nNewSize; + } else { + int nNewMax = nNewSize < m_nMaxSize ? m_nMaxSize : nNewSize; + pdfium::base::CheckedNumeric totalSize = nNewMax; + totalSize *= m_nUnitSize; + if (!totalSize.IsValid() || nNewMax < m_nSize) { + return FALSE; + } + uint8_t* pNewData = FX_Realloc(uint8_t, m_pData, totalSize.ValueOrDie()); + if (!pNewData) { + return FALSE; + } + FXSYS_memset(pNewData + m_nSize * m_nUnitSize, 0, + (nNewMax - m_nSize) * m_nUnitSize); + m_pData = pNewData; + m_nSize = nNewSize; + m_nMaxSize = nNewMax; + } + return TRUE; +} +FX_BOOL CFX_BasicArray::Append(const CFX_BasicArray& src) { + int nOldSize = m_nSize; + pdfium::base::CheckedNumeric newSize = m_nSize; + newSize += src.m_nSize; + if (m_nUnitSize != src.m_nUnitSize || !newSize.IsValid() || + !SetSize(newSize.ValueOrDie())) { + return FALSE; + } + + FXSYS_memcpy(m_pData + nOldSize * m_nUnitSize, src.m_pData, + src.m_nSize * m_nUnitSize); + return TRUE; +} +FX_BOOL CFX_BasicArray::Copy(const CFX_BasicArray& src) { + if (!SetSize(src.m_nSize)) { + return FALSE; + } + FXSYS_memcpy(m_pData, src.m_pData, src.m_nSize * m_nUnitSize); + return TRUE; +} +uint8_t* CFX_BasicArray::InsertSpaceAt(int nIndex, int nCount) { + if (nIndex < 0 || nCount <= 0) { + return NULL; + } + if (nIndex >= m_nSize) { + if (!SetSize(nIndex + nCount)) { + return NULL; + } + } else { + int nOldSize = m_nSize; + if (!SetSize(m_nSize + nCount)) { + return NULL; + } + FXSYS_memmove(m_pData + (nIndex + nCount) * m_nUnitSize, + m_pData + nIndex * m_nUnitSize, + (nOldSize - nIndex) * m_nUnitSize); + FXSYS_memset(m_pData + nIndex * m_nUnitSize, 0, nCount * m_nUnitSize); + } + return m_pData + nIndex * m_nUnitSize; +} +FX_BOOL CFX_BasicArray::RemoveAt(int nIndex, int nCount) { + if (nIndex < 0 || nCount <= 0 || m_nSize < nIndex + nCount) { + return FALSE; + } + int nMoveCount = m_nSize - (nIndex + nCount); + if (nMoveCount) { + FXSYS_memmove(m_pData + nIndex * m_nUnitSize, + m_pData + (nIndex + nCount) * m_nUnitSize, + nMoveCount * m_nUnitSize); + } + m_nSize -= nCount; + return TRUE; +} +FX_BOOL CFX_BasicArray::InsertAt(int nStartIndex, + const CFX_BasicArray* pNewArray) { + if (!pNewArray) { + return FALSE; + } + if (pNewArray->m_nSize == 0) { + return TRUE; + } + if (!InsertSpaceAt(nStartIndex, pNewArray->m_nSize)) { + return FALSE; + } + FXSYS_memcpy(m_pData + nStartIndex * m_nUnitSize, pNewArray->m_pData, + pNewArray->m_nSize * m_nUnitSize); + return TRUE; +} +const void* CFX_BasicArray::GetDataPtr(int index) const { + if (index < 0 || index >= m_nSize || !m_pData) { + return NULL; + } + return m_pData + index * m_nUnitSize; +} +#ifdef PDF_ENABLE_XFA +CFX_BaseSegmentedArray::CFX_BaseSegmentedArray(int unit_size, + int segment_units, + int index_size) + : m_UnitSize(unit_size), + m_SegmentSize(segment_units), + m_IndexSize(index_size), + m_IndexDepth(0), + m_DataSize(0), + m_pIndex(NULL) {} +void CFX_BaseSegmentedArray::SetUnitSize(int unit_size, + int segment_units, + int index_size) { + ASSERT(m_DataSize == 0); + m_UnitSize = unit_size; + m_SegmentSize = segment_units; + m_IndexSize = index_size; +} +CFX_BaseSegmentedArray::~CFX_BaseSegmentedArray() { + RemoveAll(); +} +static void _ClearIndex(int level, int size, void** pIndex) { + if (level == 0) { + FX_Free(pIndex); + return; + } + for (int i = 0; i < size; ++i) { + if (pIndex[i]) + _ClearIndex(level - 1, size, (void**)pIndex[i]); + } + FX_Free(pIndex); +} +void CFX_BaseSegmentedArray::RemoveAll() { + if (!m_pIndex) { + return; + } + _ClearIndex(m_IndexDepth, m_IndexSize, (void**)m_pIndex); + m_pIndex = NULL; + m_IndexDepth = 0; + m_DataSize = 0; +} +void* CFX_BaseSegmentedArray::Add() { + if (m_DataSize % m_SegmentSize) { + return GetAt(m_DataSize++); + } + void* pSegment = FX_Alloc2D(uint8_t, m_UnitSize, m_SegmentSize); + if (!m_pIndex) { + m_pIndex = pSegment; + m_DataSize++; + return pSegment; + } + if (m_IndexDepth == 0) { + void** pIndex = FX_Alloc(void*, m_IndexSize); + pIndex[0] = m_pIndex; + pIndex[1] = pSegment; + m_pIndex = pIndex; + m_DataSize++; + m_IndexDepth++; + return pSegment; + } + int seg_index = m_DataSize / m_SegmentSize; + if (seg_index % m_IndexSize) { + void** pIndex = GetIndex(seg_index); + pIndex[seg_index % m_IndexSize] = pSegment; + m_DataSize++; + return pSegment; + } + int tree_size = 1; + int i; + for (i = 0; i < m_IndexDepth; i++) { + tree_size *= m_IndexSize; + } + if (m_DataSize == tree_size * m_SegmentSize) { + void** pIndex = FX_Alloc(void*, m_IndexSize); + pIndex[0] = m_pIndex; + m_pIndex = pIndex; + m_IndexDepth++; + } else { + tree_size /= m_IndexSize; + } + void** pSpot = (void**)m_pIndex; + for (i = 1; i < m_IndexDepth; i++) { + if (!pSpot[seg_index / tree_size]) { + pSpot[seg_index / tree_size] = FX_Alloc(void*, m_IndexSize); + } + pSpot = (void**)pSpot[seg_index / tree_size]; + seg_index = seg_index % tree_size; + tree_size /= m_IndexSize; + } + if (i < m_IndexDepth) { + FX_Free(pSegment); + RemoveAll(); + return NULL; + } + pSpot[seg_index % m_IndexSize] = pSegment; + m_DataSize++; + return pSegment; +} +void** CFX_BaseSegmentedArray::GetIndex(int seg_index) const { + ASSERT(m_IndexDepth != 0); + if (m_IndexDepth == 1) { + return (void**)m_pIndex; + } + if (m_IndexDepth == 2) { + return (void**)((void**)m_pIndex)[seg_index / m_IndexSize]; + } + int tree_size = 1; + int i; + for (i = 1; i < m_IndexDepth; i++) { + tree_size *= m_IndexSize; + } + void** pSpot = (void**)m_pIndex; + for (i = 1; i < m_IndexDepth; i++) { + pSpot = (void**)pSpot[seg_index / tree_size]; + seg_index = seg_index % tree_size; + tree_size /= m_IndexSize; + } + return pSpot; +} +void* CFX_BaseSegmentedArray::IterateSegment(const uint8_t* pSegment, + int count, + FX_BOOL (*callback)(void* param, + void* pData), + void* param) const { + for (int i = 0; i < count; i++) { + if (!callback(param, (void*)(pSegment + i * m_UnitSize))) { + return (void*)(pSegment + i * m_UnitSize); + } + } + return NULL; +} +void* CFX_BaseSegmentedArray::IterateIndex(int level, + int& start, + void** pIndex, + FX_BOOL (*callback)(void* param, + void* pData), + void* param) const { + if (level == 0) { + int count = m_DataSize - start; + if (count > m_SegmentSize) { + count = m_SegmentSize; + } + start += count; + return IterateSegment((const uint8_t*)pIndex, count, callback, param); + } + for (int i = 0; i < m_IndexSize; i++) { + if (!pIndex[i]) { + continue; + } + void* p = + IterateIndex(level - 1, start, (void**)pIndex[i], callback, param); + if (p) { + return p; + } + } + return NULL; +} +void* CFX_BaseSegmentedArray::Iterate(FX_BOOL (*callback)(void* param, + void* pData), + void* param) const { + if (!m_pIndex) { + return NULL; + } + int start = 0; + return IterateIndex(m_IndexDepth, start, (void**)m_pIndex, callback, param); +} +void* CFX_BaseSegmentedArray::GetAt(int index) const { + if (index < 0 || index >= m_DataSize) { + return NULL; + } + if (m_IndexDepth == 0) { + return (uint8_t*)m_pIndex + m_UnitSize * index; + } + int seg_index = index / m_SegmentSize; + return (uint8_t*)GetIndex(seg_index)[seg_index % m_IndexSize] + + (index % m_SegmentSize) * m_UnitSize; +} +void CFX_BaseSegmentedArray::Delete(int index, int count) { + if (index < 0 || count < 1 || index + count > m_DataSize) { + return; + } + int i; + for (i = index; i < m_DataSize - count; i++) { + uint8_t* pSrc = (uint8_t*)GetAt(i + count); + uint8_t* pDest = (uint8_t*)GetAt(i); + for (int j = 0; j < m_UnitSize; j++) { + pDest[j] = pSrc[j]; + } + } + int new_segs = (m_DataSize - count + m_SegmentSize - 1) / m_SegmentSize; + int old_segs = (m_DataSize + m_SegmentSize - 1) / m_SegmentSize; + if (new_segs < old_segs) { + if (m_IndexDepth) { + for (i = new_segs; i < old_segs; i++) { + void** pIndex = GetIndex(i); + FX_Free(pIndex[i % m_IndexSize]); + pIndex[i % m_IndexSize] = NULL; + } + } else { + FX_Free(m_pIndex); + m_pIndex = NULL; + } + } + m_DataSize -= count; +} +#endif // PDF_ENABLE_XFA diff --git a/core/fxcrt/fx_basic_bstring.cpp b/core/fxcrt/fx_basic_bstring.cpp new file mode 100644 index 0000000000..5d38d57757 --- /dev/null +++ b/core/fxcrt/fx_basic_bstring.cpp @@ -0,0 +1,1088 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include + +#include "core/include/fxcrt/fx_basic.h" +#include "third_party/base/numerics/safe_math.h" + +static int _Buffer_itoa(char* buf, int i, FX_DWORD flags) { + if (i == 0) { + buf[0] = '0'; + return 1; + } + char buf1[32]; + int buf_pos = 31; + FX_DWORD u = i; + if ((flags & FXFORMAT_SIGNED) && i < 0) { + u = -i; + } + int base = 10; + const FX_CHAR* str = "0123456789abcdef"; + if (flags & FXFORMAT_HEX) { + base = 16; + if (flags & FXFORMAT_CAPITAL) { + str = "0123456789ABCDEF"; + } + } + while (u != 0) { + buf1[buf_pos--] = str[u % base]; + u = u / base; + } + if ((flags & FXFORMAT_SIGNED) && i < 0) { + buf1[buf_pos--] = '-'; + } + int len = 31 - buf_pos; + for (int ii = 0; ii < len; ii++) { + buf[ii] = buf1[ii + buf_pos + 1]; + } + return len; +} +CFX_ByteString CFX_ByteString::FormatInteger(int i, FX_DWORD flags) { + char buf[32]; + return CFX_ByteStringC(buf, _Buffer_itoa(buf, i, flags)); +} + +// static +CFX_ByteString::StringData* CFX_ByteString::StringData::Create(int nLen) { + // |nLen| is currently declared as in |int|. TODO(palmer): It should be + // a |size_t|, or at least unsigned. + if (nLen == 0 || nLen < 0) { + return NULL; + } + + // Fixed portion of header plus a NUL char not included in m_nAllocLength. + // sizeof(FX_CHAR) is always 1, used for consistency with CFX_Widestring. + int overhead = offsetof(StringData, m_String) + sizeof(FX_CHAR); + pdfium::base::CheckedNumeric nSize = nLen; + nSize += overhead; + + // Now round to an 8-byte boundary. We'd expect that this is the minimum + // granularity of any of the underlying allocators, so there may be cases + // where we can save a re-alloc when adding a few characters to a string + // by using this otherwise wasted space. + nSize += 7; + int totalSize = nSize.ValueOrDie() & ~7; + int usableSize = totalSize - overhead; + FXSYS_assert(usableSize >= nLen); + + void* pData = FX_Alloc(uint8_t, totalSize); + return new (pData) StringData(nLen, usableSize); +} +CFX_ByteString::~CFX_ByteString() { + if (m_pData) { + m_pData->Release(); + } +} +CFX_ByteString::CFX_ByteString(const FX_CHAR* lpsz, FX_STRSIZE nLen) { + if (nLen < 0) { + nLen = lpsz ? FXSYS_strlen(lpsz) : 0; + } + if (nLen) { + m_pData = StringData::Create(nLen); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, lpsz, nLen); + } + } else { + m_pData = NULL; + } +} +CFX_ByteString::CFX_ByteString(const uint8_t* lpsz, FX_STRSIZE nLen) { + if (nLen > 0) { + m_pData = StringData::Create(nLen); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, lpsz, nLen); + } + } else { + m_pData = NULL; + } +} +CFX_ByteString::CFX_ByteString(char ch) { + m_pData = StringData::Create(1); + if (m_pData) { + m_pData->m_String[0] = ch; + } +} +CFX_ByteString::CFX_ByteString(const CFX_ByteString& stringSrc) { + if (!stringSrc.m_pData) { + m_pData = NULL; + return; + } + if (stringSrc.m_pData->m_nRefs >= 0) { + m_pData = stringSrc.m_pData; + m_pData->Retain(); + } else { + m_pData = NULL; + *this = stringSrc; + } +} +CFX_ByteString::CFX_ByteString(const CFX_ByteStringC& stringSrc) { + if (stringSrc.IsEmpty()) { + m_pData = NULL; + return; + } + m_pData = NULL; + *this = stringSrc; +} +CFX_ByteString::CFX_ByteString(const CFX_ByteStringC& str1, + const CFX_ByteStringC& str2) { + m_pData = NULL; + int nNewLen = str1.GetLength() + str2.GetLength(); + if (nNewLen == 0) { + return; + } + m_pData = StringData::Create(nNewLen); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, str1.GetCStr(), str1.GetLength()); + FXSYS_memcpy(m_pData->m_String + str1.GetLength(), str2.GetCStr(), + str2.GetLength()); + } +} +const CFX_ByteString& CFX_ByteString::operator=(const FX_CHAR* lpsz) { + if (!lpsz || lpsz[0] == 0) { + Empty(); + } else { + AssignCopy(FXSYS_strlen(lpsz), lpsz); + } + return *this; +} +const CFX_ByteString& CFX_ByteString::operator=(const CFX_ByteStringC& str) { + if (str.IsEmpty()) { + Empty(); + } else { + AssignCopy(str.GetLength(), str.GetCStr()); + } + return *this; +} +const CFX_ByteString& CFX_ByteString::operator=( + const CFX_ByteString& stringSrc) { + if (m_pData == stringSrc.m_pData) { + return *this; + } + if (stringSrc.IsEmpty()) { + Empty(); + } else if ((m_pData && m_pData->m_nRefs < 0) || + (stringSrc.m_pData && stringSrc.m_pData->m_nRefs < 0)) { + AssignCopy(stringSrc.m_pData->m_nDataLength, stringSrc.m_pData->m_String); + } else { + Empty(); + m_pData = stringSrc.m_pData; + if (m_pData) { + m_pData->Retain(); + } + } + return *this; +} +const CFX_ByteString& CFX_ByteString::operator=(const CFX_BinaryBuf& buf) { + Load(buf.GetBuffer(), buf.GetSize()); + return *this; +} +void CFX_ByteString::Load(const uint8_t* buf, FX_STRSIZE len) { + Empty(); + if (len) { + m_pData = StringData::Create(len); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, buf, len); + } + } else { + m_pData = NULL; + } +} +const CFX_ByteString& CFX_ByteString::operator+=(const FX_CHAR* lpsz) { + if (lpsz) { + ConcatInPlace(FXSYS_strlen(lpsz), lpsz); + } + return *this; +} +const CFX_ByteString& CFX_ByteString::operator+=(char ch) { + ConcatInPlace(1, &ch); + return *this; +} +const CFX_ByteString& CFX_ByteString::operator+=(const CFX_ByteString& str) { + if (!str.m_pData) { + return *this; + } + ConcatInPlace(str.m_pData->m_nDataLength, str.m_pData->m_String); + return *this; +} +const CFX_ByteString& CFX_ByteString::operator+=(const CFX_ByteStringC& str) { + if (str.IsEmpty()) { + return *this; + } + ConcatInPlace(str.GetLength(), str.GetCStr()); + return *this; +} +bool CFX_ByteString::Equal(const char* ptr) const { + if (!m_pData) { + return !ptr || ptr[0] == '\0'; + } + if (!ptr) { + return m_pData->m_nDataLength == 0; + } + return FXSYS_strlen(ptr) == m_pData->m_nDataLength && + FXSYS_memcmp(ptr, m_pData->m_String, m_pData->m_nDataLength) == 0; +} +bool CFX_ByteString::Equal(const CFX_ByteStringC& str) const { + if (!m_pData) { + return str.IsEmpty(); + } + return m_pData->m_nDataLength == str.GetLength() && + FXSYS_memcmp(m_pData->m_String, str.GetCStr(), str.GetLength()) == 0; +} +bool CFX_ByteString::Equal(const CFX_ByteString& other) const { + if (IsEmpty()) { + return other.IsEmpty(); + } + if (other.IsEmpty()) { + return false; + } + return other.m_pData->m_nDataLength == m_pData->m_nDataLength && + FXSYS_memcmp(other.m_pData->m_String, m_pData->m_String, + m_pData->m_nDataLength) == 0; +} +void CFX_ByteString::Empty() { + if (m_pData) { + m_pData->Release(); + m_pData = NULL; + } +} +bool CFX_ByteString::EqualNoCase(const CFX_ByteStringC& str) const { + if (!m_pData) { + return str.IsEmpty(); + } + FX_STRSIZE len = str.GetLength(); + if (m_pData->m_nDataLength != len) { + return false; + } + const uint8_t* pThis = (const uint8_t*)m_pData->m_String; + const uint8_t* pThat = str.GetPtr(); + for (FX_STRSIZE i = 0; i < len; i++) { + if ((*pThis) != (*pThat)) { + uint8_t bThis = *pThis; + if (bThis >= 'A' && bThis <= 'Z') { + bThis += 'a' - 'A'; + } + uint8_t bThat = *pThat; + if (bThat >= 'A' && bThat <= 'Z') { + bThat += 'a' - 'A'; + } + if (bThis != bThat) { + return false; + } + } + pThis++; + pThat++; + } + return true; +} +void CFX_ByteString::AssignCopy(FX_STRSIZE nSrcLen, + const FX_CHAR* lpszSrcData) { + AllocBeforeWrite(nSrcLen); + FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen); + m_pData->m_nDataLength = nSrcLen; + m_pData->m_String[nSrcLen] = 0; +} +void CFX_ByteString::CopyBeforeWrite() { + if (!m_pData || m_pData->m_nRefs <= 1) { + return; + } + StringData* pData = m_pData; + m_pData->Release(); + FX_STRSIZE nDataLength = pData->m_nDataLength; + m_pData = StringData::Create(nDataLength); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, pData->m_String, nDataLength + 1); + } +} +void CFX_ByteString::AllocBeforeWrite(FX_STRSIZE nLen) { + if (m_pData && m_pData->m_nRefs <= 1 && m_pData->m_nAllocLength >= nLen) { + return; + } + Empty(); + m_pData = StringData::Create(nLen); +} +void CFX_ByteString::ReleaseBuffer(FX_STRSIZE nNewLength) { + if (!m_pData) { + return; + } + CopyBeforeWrite(); + if (nNewLength == -1) { + nNewLength = FXSYS_strlen((const FX_CHAR*)m_pData->m_String); + } + if (nNewLength == 0) { + Empty(); + return; + } + FXSYS_assert(nNewLength <= m_pData->m_nAllocLength); + m_pData->m_nDataLength = nNewLength; + m_pData->m_String[nNewLength] = 0; +} +void CFX_ByteString::Reserve(FX_STRSIZE len) { + GetBuffer(len); + ReleaseBuffer(GetLength()); +} +FX_CHAR* CFX_ByteString::GetBuffer(FX_STRSIZE nMinBufLength) { + if (!m_pData && nMinBufLength == 0) { + return NULL; + } + if (m_pData && m_pData->m_nRefs <= 1 && + m_pData->m_nAllocLength >= nMinBufLength) { + return m_pData->m_String; + } + if (!m_pData) { + m_pData = StringData::Create(nMinBufLength); + if (!m_pData) { + return NULL; + } + m_pData->m_nDataLength = 0; + m_pData->m_String[0] = 0; + return m_pData->m_String; + } + StringData* pOldData = m_pData; + FX_STRSIZE nOldLen = pOldData->m_nDataLength; + if (nMinBufLength < nOldLen) { + nMinBufLength = nOldLen; + } + m_pData = StringData::Create(nMinBufLength); + if (!m_pData) { + return NULL; + } + FXSYS_memcpy(m_pData->m_String, pOldData->m_String, (nOldLen + 1)); + m_pData->m_nDataLength = nOldLen; + pOldData->Release(); + return m_pData->m_String; +} +FX_STRSIZE CFX_ByteString::Delete(FX_STRSIZE nIndex, FX_STRSIZE nCount) { + if (!m_pData) { + return 0; + } + if (nIndex < 0) { + nIndex = 0; + } + FX_STRSIZE nOldLength = m_pData->m_nDataLength; + if (nCount > 0 && nIndex < nOldLength) { + FX_STRSIZE mLength = nIndex + nCount; + if (mLength >= nOldLength) { + m_pData->m_nDataLength = nIndex; + return m_pData->m_nDataLength; + } + CopyBeforeWrite(); + int nBytesToCopy = nOldLength - mLength + 1; + FXSYS_memmove(m_pData->m_String + nIndex, m_pData->m_String + mLength, + nBytesToCopy); + m_pData->m_nDataLength = nOldLength - nCount; + } + return m_pData->m_nDataLength; +} +void CFX_ByteString::ConcatInPlace(FX_STRSIZE nSrcLen, + const FX_CHAR* lpszSrcData) { + if (nSrcLen == 0 || !lpszSrcData) { + return; + } + if (!m_pData) { + m_pData = StringData::Create(nSrcLen); + if (!m_pData) { + return; + } + FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen); + return; + } + if (m_pData->m_nRefs > 1 || + m_pData->m_nDataLength + nSrcLen > m_pData->m_nAllocLength) { + ConcatCopy(m_pData->m_nDataLength, m_pData->m_String, nSrcLen, lpszSrcData); + } else { + FXSYS_memcpy(m_pData->m_String + m_pData->m_nDataLength, lpszSrcData, + nSrcLen); + m_pData->m_nDataLength += nSrcLen; + m_pData->m_String[m_pData->m_nDataLength] = 0; + } +} +void CFX_ByteString::ConcatCopy(FX_STRSIZE nSrc1Len, + const FX_CHAR* lpszSrc1Data, + FX_STRSIZE nSrc2Len, + const FX_CHAR* lpszSrc2Data) { + int nNewLen = nSrc1Len + nSrc2Len; + if (nNewLen <= 0) { + return; + } + // Don't release until done copying, might be one of the arguments. + StringData* pOldData = m_pData; + m_pData = StringData::Create(nNewLen); + if (m_pData) { + memcpy(m_pData->m_String, lpszSrc1Data, nSrc1Len); + memcpy(m_pData->m_String + nSrc1Len, lpszSrc2Data, nSrc2Len); + } + pOldData->Release(); +} +CFX_ByteString CFX_ByteString::Mid(FX_STRSIZE nFirst) const { + if (!m_pData) { + return CFX_ByteString(); + } + return Mid(nFirst, m_pData->m_nDataLength - nFirst); +} +CFX_ByteString CFX_ByteString::Mid(FX_STRSIZE nFirst, FX_STRSIZE nCount) const { + if (nFirst < 0) { + nFirst = 0; + } + if (nCount < 0) { + nCount = 0; + } + if (nFirst + nCount > m_pData->m_nDataLength) { + nCount = m_pData->m_nDataLength - nFirst; + } + if (nFirst > m_pData->m_nDataLength) { + nCount = 0; + } + if (nFirst == 0 && nFirst + nCount == m_pData->m_nDataLength) { + return *this; + } + CFX_ByteString dest; + AllocCopy(dest, nCount, nFirst); + return dest; +} +void CFX_ByteString::AllocCopy(CFX_ByteString& dest, + FX_STRSIZE nCopyLen, + FX_STRSIZE nCopyIndex) const { + // |FX_STRSIZE| is currently typedef'd as in |int|. TODO(palmer): It + // should be a |size_t|, or at least unsigned. + if (nCopyLen == 0 || nCopyLen < 0) { + return; + } + ASSERT(!dest.m_pData); + dest.m_pData = StringData::Create(nCopyLen); + if (dest.m_pData) { + FXSYS_memcpy(dest.m_pData->m_String, m_pData->m_String + nCopyIndex, + nCopyLen); + } +} +#define FORCE_ANSI 0x10000 +#define FORCE_UNICODE 0x20000 +#define FORCE_INT64 0x40000 +void CFX_ByteString::FormatV(const FX_CHAR* lpszFormat, va_list argList) { + va_list argListSave; +#if defined(__ARMCC_VERSION) || \ + (!defined(_MSC_VER) && (_FX_CPU_ == _FX_X64_ || _FX_CPU_ == _FX_IA64_ || \ + _FX_CPU_ == _FX_ARM64_)) || \ + defined(__native_client__) + va_copy(argListSave, argList); +#else + argListSave = argList; +#endif + int nMaxLen = 0; + for (const FX_CHAR* lpsz = lpszFormat; *lpsz != 0; lpsz++) { + if (*lpsz != '%' || *(lpsz = lpsz + 1) == '%') { + nMaxLen += FXSYS_strlen(lpsz); + continue; + } + int nItemLen = 0; + int nWidth = 0; + for (; *lpsz != 0; lpsz++) { + if (*lpsz == '#') { + nMaxLen += 2; + } else if (*lpsz == '*') { + nWidth = va_arg(argList, int); + } else if (*lpsz != '-' && *lpsz != '+' && *lpsz != '0' && *lpsz != ' ') { + break; + } + } + if (nWidth == 0) { + nWidth = FXSYS_atoi(lpsz); + while (std::isdigit(*lpsz)) + lpsz++; + } + if (nWidth < 0 || nWidth > 128 * 1024) { + lpszFormat = "Bad width"; + nMaxLen = 10; + break; + } + int nPrecision = 0; + if (*lpsz == '.') { + lpsz++; + if (*lpsz == '*') { + nPrecision = va_arg(argList, int); + lpsz++; + } else { + nPrecision = FXSYS_atoi(lpsz); + while (std::isdigit(*lpsz)) + lpsz++; + } + } + if (nPrecision < 0 || nPrecision > 128 * 1024) { + lpszFormat = "Bad precision"; + nMaxLen = 14; + break; + } + int nModifier = 0; + if (FXSYS_strncmp(lpsz, "I64", 3) == 0) { + lpsz += 3; + nModifier = FORCE_INT64; + } else { + switch (*lpsz) { + case 'h': + nModifier = FORCE_ANSI; + lpsz++; + break; + case 'l': + nModifier = FORCE_UNICODE; + lpsz++; + break; + case 'F': + case 'N': + case 'L': + lpsz++; + break; + } + } + switch (*lpsz | nModifier) { + case 'c': + case 'C': + nItemLen = 2; + va_arg(argList, int); + break; + case 'c' | FORCE_ANSI: + case 'C' | FORCE_ANSI: + nItemLen = 2; + va_arg(argList, int); + break; + case 'c' | FORCE_UNICODE: + case 'C' | FORCE_UNICODE: + nItemLen = 2; + va_arg(argList, int); + break; + case 's': { + const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_strlen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + case 'S': { + FX_WCHAR* pstrNextArg = va_arg(argList, FX_WCHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_wcslen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + case 's' | FORCE_ANSI: + case 'S' | FORCE_ANSI: { + const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_strlen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + case 's' | FORCE_UNICODE: + case 'S' | FORCE_UNICODE: { + FX_WCHAR* pstrNextArg = va_arg(argList, FX_WCHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_wcslen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + } + if (nItemLen != 0) { + if (nPrecision != 0 && nItemLen > nPrecision) { + nItemLen = nPrecision; + } + if (nItemLen < nWidth) { + nItemLen = nWidth; + } + } else { + switch (*lpsz) { + case 'd': + case 'i': + case 'u': + case 'x': + case 'X': + case 'o': + if (nModifier & FORCE_INT64) { + va_arg(argList, int64_t); + } else { + va_arg(argList, int); + } + nItemLen = 32; + if (nItemLen < nWidth + nPrecision) { + nItemLen = nWidth + nPrecision; + } + break; + case 'a': + case 'A': + case 'e': + case 'E': + case 'g': + case 'G': + va_arg(argList, double); + nItemLen = 128; + if (nItemLen < nWidth + nPrecision) { + nItemLen = nWidth + nPrecision; + } + break; + case 'f': + if (nWidth + nPrecision > 100) { + nItemLen = nPrecision + nWidth + 128; + } else { + char pszTemp[256]; + double f = va_arg(argList, double); + memset(pszTemp, 0, sizeof(pszTemp)); + FXSYS_snprintf(pszTemp, sizeof(pszTemp) - 1, "%*.*f", nWidth, + nPrecision + 6, f); + nItemLen = FXSYS_strlen(pszTemp); + } + break; + case 'p': + va_arg(argList, void*); + nItemLen = 32; + if (nItemLen < nWidth + nPrecision) { + nItemLen = nWidth + nPrecision; + } + break; + case 'n': + va_arg(argList, int*); + break; + } + } + nMaxLen += nItemLen; + } + nMaxLen += 32; // Fudge factor. + GetBuffer(nMaxLen); + if (m_pData) { + memset(m_pData->m_String, 0, nMaxLen); + FXSYS_vsnprintf(m_pData->m_String, nMaxLen - 1, lpszFormat, argListSave); + ReleaseBuffer(); + } + va_end(argListSave); +} +void CFX_ByteString::Format(const FX_CHAR* lpszFormat, ...) { + va_list argList; + va_start(argList, lpszFormat); + FormatV(lpszFormat, argList); + va_end(argList); +} +FX_STRSIZE CFX_ByteString::Insert(FX_STRSIZE nIndex, FX_CHAR ch) { + CopyBeforeWrite(); + if (nIndex < 0) { + nIndex = 0; + } + FX_STRSIZE nNewLength = m_pData ? m_pData->m_nDataLength : 0; + if (nIndex > nNewLength) { + nIndex = nNewLength; + } + nNewLength++; + if (!m_pData || m_pData->m_nAllocLength < nNewLength) { + StringData* pOldData = m_pData; + const FX_CHAR* pstr = m_pData->m_String; + m_pData = StringData::Create(nNewLength); + if (!m_pData) { + return 0; + } + if (pOldData) { + FXSYS_memmove(m_pData->m_String, pstr, (pOldData->m_nDataLength + 1)); + pOldData->Release(); + } else { + m_pData->m_String[0] = 0; + } + } + FXSYS_memmove(m_pData->m_String + nIndex + 1, m_pData->m_String + nIndex, + (nNewLength - nIndex)); + m_pData->m_String[nIndex] = ch; + m_pData->m_nDataLength = nNewLength; + return nNewLength; +} +CFX_ByteString CFX_ByteString::Right(FX_STRSIZE nCount) const { + if (!m_pData) { + return CFX_ByteString(); + } + if (nCount < 0) { + nCount = 0; + } + if (nCount >= m_pData->m_nDataLength) { + return *this; + } + CFX_ByteString dest; + AllocCopy(dest, nCount, m_pData->m_nDataLength - nCount); + return dest; +} +CFX_ByteString CFX_ByteString::Left(FX_STRSIZE nCount) const { + if (!m_pData) { + return CFX_ByteString(); + } + if (nCount < 0) { + nCount = 0; + } + if (nCount >= m_pData->m_nDataLength) { + return *this; + } + CFX_ByteString dest; + AllocCopy(dest, nCount, 0); + return dest; +} +FX_STRSIZE CFX_ByteString::Find(FX_CHAR ch, FX_STRSIZE nStart) const { + if (!m_pData) { + return -1; + } + FX_STRSIZE nLength = m_pData->m_nDataLength; + if (nStart >= nLength) { + return -1; + } + const FX_CHAR* lpsz = FXSYS_strchr(m_pData->m_String + nStart, ch); + return lpsz ? (int)(lpsz - m_pData->m_String) : -1; +} +FX_STRSIZE CFX_ByteString::ReverseFind(FX_CHAR ch) const { + if (!m_pData) { + return -1; + } + FX_STRSIZE nLength = m_pData->m_nDataLength; + while (nLength) { + if (m_pData->m_String[nLength - 1] == ch) { + return nLength - 1; + } + nLength--; + } + return -1; +} +const FX_CHAR* FX_strstr(const FX_CHAR* str1, + int len1, + const FX_CHAR* str2, + int len2) { + if (len2 > len1 || len2 == 0) { + return NULL; + } + const FX_CHAR* end_ptr = str1 + len1 - len2; + while (str1 <= end_ptr) { + int i = 0; + while (1) { + if (str1[i] != str2[i]) { + break; + } + i++; + if (i == len2) { + return str1; + } + } + str1++; + } + return NULL; +} +FX_STRSIZE CFX_ByteString::Find(const CFX_ByteStringC& lpszSub, + FX_STRSIZE nStart) const { + if (!m_pData) { + return -1; + } + FX_STRSIZE nLength = m_pData->m_nDataLength; + if (nStart > nLength) { + return -1; + } + const FX_CHAR* lpsz = + FX_strstr(m_pData->m_String + nStart, m_pData->m_nDataLength - nStart, + lpszSub.GetCStr(), lpszSub.GetLength()); + return lpsz ? (int)(lpsz - m_pData->m_String) : -1; +} +void CFX_ByteString::MakeLower() { + if (!m_pData) { + return; + } + CopyBeforeWrite(); + if (GetLength() < 1) { + return; + } + FXSYS_strlwr(m_pData->m_String); +} +void CFX_ByteString::MakeUpper() { + if (!m_pData) { + return; + } + CopyBeforeWrite(); + if (GetLength() < 1) { + return; + } + FXSYS_strupr(m_pData->m_String); +} +FX_STRSIZE CFX_ByteString::Remove(FX_CHAR chRemove) { + if (!m_pData) { + return 0; + } + CopyBeforeWrite(); + if (GetLength() < 1) { + return 0; + } + FX_CHAR* pstrSource = m_pData->m_String; + FX_CHAR* pstrDest = m_pData->m_String; + FX_CHAR* pstrEnd = m_pData->m_String + m_pData->m_nDataLength; + while (pstrSource < pstrEnd) { + if (*pstrSource != chRemove) { + *pstrDest = *pstrSource; + pstrDest++; + } + pstrSource++; + } + *pstrDest = 0; + FX_STRSIZE nCount = (FX_STRSIZE)(pstrSource - pstrDest); + m_pData->m_nDataLength -= nCount; + return nCount; +} +FX_STRSIZE CFX_ByteString::Replace(const CFX_ByteStringC& lpszOld, + const CFX_ByteStringC& lpszNew) { + if (!m_pData) { + return 0; + } + if (lpszOld.IsEmpty()) { + return 0; + } + FX_STRSIZE nSourceLen = lpszOld.GetLength(); + FX_STRSIZE nReplacementLen = lpszNew.GetLength(); + FX_STRSIZE nCount = 0; + const FX_CHAR* pStart = m_pData->m_String; + FX_CHAR* pEnd = m_pData->m_String + m_pData->m_nDataLength; + while (1) { + const FX_CHAR* pTarget = FX_strstr(pStart, (FX_STRSIZE)(pEnd - pStart), + lpszOld.GetCStr(), nSourceLen); + if (!pTarget) { + break; + } + nCount++; + pStart = pTarget + nSourceLen; + } + if (nCount == 0) { + return 0; + } + FX_STRSIZE nNewLength = + m_pData->m_nDataLength + (nReplacementLen - nSourceLen) * nCount; + if (nNewLength == 0) { + Empty(); + return nCount; + } + StringData* pNewData = StringData::Create(nNewLength); + if (!pNewData) { + return 0; + } + pStart = m_pData->m_String; + FX_CHAR* pDest = pNewData->m_String; + for (FX_STRSIZE i = 0; i < nCount; i++) { + const FX_CHAR* pTarget = FX_strstr(pStart, (FX_STRSIZE)(pEnd - pStart), + lpszOld.GetCStr(), nSourceLen); + FXSYS_memcpy(pDest, pStart, pTarget - pStart); + pDest += pTarget - pStart; + FXSYS_memcpy(pDest, lpszNew.GetCStr(), lpszNew.GetLength()); + pDest += lpszNew.GetLength(); + pStart = pTarget + nSourceLen; + } + FXSYS_memcpy(pDest, pStart, pEnd - pStart); + m_pData->Release(); + m_pData = pNewData; + return nCount; +} +void CFX_ByteString::SetAt(FX_STRSIZE nIndex, FX_CHAR ch) { + if (!m_pData) { + return; + } + FXSYS_assert(nIndex >= 0); + FXSYS_assert(nIndex < m_pData->m_nDataLength); + CopyBeforeWrite(); + m_pData->m_String[nIndex] = ch; +} +CFX_WideString CFX_ByteString::UTF8Decode() const { + CFX_UTF8Decoder decoder; + for (FX_STRSIZE i = 0; i < GetLength(); i++) { + decoder.Input((uint8_t)m_pData->m_String[i]); + } + return decoder.GetResult(); +} + +// static +CFX_ByteString CFX_ByteString::FromUnicode(const FX_WCHAR* str, + FX_STRSIZE len) { + FX_STRSIZE str_len = len >= 0 ? len : FXSYS_wcslen(str); + return FromUnicode(CFX_WideString(str, str_len)); +} + +// static +CFX_ByteString CFX_ByteString::FromUnicode(const CFX_WideString& str) { + return CFX_CharMap::GetByteString(0, str); +} + +int CFX_ByteString::Compare(const CFX_ByteStringC& str) const { + if (!m_pData) { + return str.IsEmpty() ? 0 : -1; + } + int this_len = m_pData->m_nDataLength; + int that_len = str.GetLength(); + int min_len = this_len < that_len ? this_len : that_len; + for (int i = 0; i < min_len; i++) { + if ((uint8_t)m_pData->m_String[i] < str.GetAt(i)) { + return -1; + } + if ((uint8_t)m_pData->m_String[i] > str.GetAt(i)) { + return 1; + } + } + if (this_len < that_len) { + return -1; + } + if (this_len > that_len) { + return 1; + } + return 0; +} +void CFX_ByteString::TrimRight(const CFX_ByteStringC& lpszTargets) { + if (!m_pData || lpszTargets.IsEmpty()) { + return; + } + CopyBeforeWrite(); + FX_STRSIZE pos = GetLength(); + if (pos < 1) { + return; + } + while (pos) { + FX_STRSIZE i = 0; + while (i < lpszTargets.GetLength() && + lpszTargets[i] != m_pData->m_String[pos - 1]) { + i++; + } + if (i == lpszTargets.GetLength()) { + break; + } + pos--; + } + if (pos < m_pData->m_nDataLength) { + m_pData->m_String[pos] = 0; + m_pData->m_nDataLength = pos; + } +} +void CFX_ByteString::TrimRight(FX_CHAR chTarget) { + TrimRight(CFX_ByteStringC(chTarget)); +} +void CFX_ByteString::TrimRight() { + TrimRight("\x09\x0a\x0b\x0c\x0d\x20"); +} +void CFX_ByteString::TrimLeft(const CFX_ByteStringC& lpszTargets) { + if (!m_pData) { + return; + } + if (lpszTargets.IsEmpty()) { + return; + } + CopyBeforeWrite(); + FX_STRSIZE len = GetLength(); + if (len < 1) { + return; + } + FX_STRSIZE pos = 0; + while (pos < len) { + FX_STRSIZE i = 0; + while (i < lpszTargets.GetLength() && + lpszTargets[i] != m_pData->m_String[pos]) { + i++; + } + if (i == lpszTargets.GetLength()) { + break; + } + pos++; + } + if (pos) { + FX_STRSIZE nDataLength = len - pos; + FXSYS_memmove(m_pData->m_String, m_pData->m_String + pos, + (nDataLength + 1) * sizeof(FX_CHAR)); + m_pData->m_nDataLength = nDataLength; + } +} +void CFX_ByteString::TrimLeft(FX_CHAR chTarget) { + TrimLeft(CFX_ByteStringC(chTarget)); +} +void CFX_ByteString::TrimLeft() { + TrimLeft("\x09\x0a\x0b\x0c\x0d\x20"); +} +FX_DWORD CFX_ByteString::GetID(FX_STRSIZE start_pos) const { + return CFX_ByteStringC(*this).GetID(start_pos); +} +FX_DWORD CFX_ByteStringC::GetID(FX_STRSIZE start_pos) const { + if (m_Length == 0) { + return 0; + } + if (start_pos < 0 || start_pos >= m_Length) { + return 0; + } + FX_DWORD strid = 0; + if (start_pos + 4 > m_Length) { + for (FX_STRSIZE i = 0; i < m_Length - start_pos; i++) { + strid = strid * 256 + m_Ptr[start_pos + i]; + } + strid = strid << ((4 - m_Length + start_pos) * 8); + } else { + for (int i = 0; i < 4; i++) { + strid = strid * 256 + m_Ptr[start_pos + i]; + } + } + return strid; +} +FX_STRSIZE FX_ftoa(FX_FLOAT d, FX_CHAR* buf) { + buf[0] = '0'; + buf[1] = '\0'; + if (d == 0.0f) { + return 1; + } + FX_BOOL bNegative = FALSE; + if (d < 0) { + bNegative = TRUE; + d = -d; + } + int scale = 1; + int scaled = FXSYS_round(d); + while (scaled < 100000) { + if (scale == 1000000) { + break; + } + scale *= 10; + scaled = FXSYS_round(d * scale); + } + if (scaled == 0) { + return 1; + } + char buf2[32]; + int buf_size = 0; + if (bNegative) { + buf[buf_size++] = '-'; + } + int i = scaled / scale; + FXSYS_itoa(i, buf2, 10); + FX_STRSIZE len = FXSYS_strlen(buf2); + FXSYS_memcpy(buf + buf_size, buf2, len); + buf_size += len; + int fraction = scaled % scale; + if (fraction == 0) { + return buf_size; + } + buf[buf_size++] = '.'; + scale /= 10; + while (fraction) { + buf[buf_size++] = '0' + fraction / scale; + fraction %= scale; + scale /= 10; + } + return buf_size; +} +CFX_ByteString CFX_ByteString::FormatFloat(FX_FLOAT d, int precision) { + FX_CHAR buf[32]; + FX_STRSIZE len = FX_ftoa(d, buf); + return CFX_ByteString(buf, len); +} diff --git a/core/fxcrt/fx_basic_bstring_unittest.cpp b/core/fxcrt/fx_basic_bstring_unittest.cpp new file mode 100644 index 0000000000..337775d9af --- /dev/null +++ b/core/fxcrt/fx_basic_bstring_unittest.cpp @@ -0,0 +1,689 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fxcrt/fx_string.h" +#include "testing/fx_string_testhelpers.h" +#include "testing/gtest/include/gtest/gtest.h" + +TEST(fxcrt, ByteStringOperatorSubscript) { + // CFX_ByteString includes the NUL terminator for non-empty strings. + CFX_ByteString abc("abc"); + EXPECT_EQ('a', abc[0]); + EXPECT_EQ('b', abc[1]); + EXPECT_EQ('c', abc[2]); + EXPECT_EQ(0, abc[3]); +} + +TEST(fxcrt, ByteStringOperatorLT) { + CFX_ByteString empty; + CFX_ByteString a("a"); + CFX_ByteString abc("abc"); + CFX_ByteString def("def"); + + EXPECT_FALSE(empty < empty); + EXPECT_FALSE(a < a); + EXPECT_FALSE(abc < abc); + EXPECT_FALSE(def < def); + + EXPECT_TRUE(empty < a); + EXPECT_FALSE(a < empty); + + EXPECT_TRUE(empty < abc); + EXPECT_FALSE(abc < empty); + + EXPECT_TRUE(empty < def); + EXPECT_FALSE(def < empty); + + EXPECT_TRUE(a < abc); + EXPECT_FALSE(abc < a); + + EXPECT_TRUE(a < def); + EXPECT_FALSE(def < a); + + EXPECT_TRUE(abc < def); + EXPECT_FALSE(def < abc); +} + +TEST(fxcrt, ByteStringOperatorEQ) { + CFX_ByteString null_string; + EXPECT_TRUE(null_string == null_string); + + CFX_ByteString empty_string(""); + EXPECT_TRUE(empty_string == empty_string); + EXPECT_TRUE(empty_string == null_string); + EXPECT_TRUE(null_string == empty_string); + + CFX_ByteString deleted_string("hello"); + deleted_string.Delete(0, 5); + EXPECT_TRUE(deleted_string == deleted_string); + EXPECT_TRUE(deleted_string == null_string); + EXPECT_TRUE(deleted_string == empty_string); + EXPECT_TRUE(null_string == deleted_string); + EXPECT_TRUE(empty_string == deleted_string); + + CFX_ByteString byte_string("hello"); + EXPECT_TRUE(byte_string == byte_string); + EXPECT_FALSE(byte_string == null_string); + EXPECT_FALSE(byte_string == empty_string); + EXPECT_FALSE(byte_string == deleted_string); + EXPECT_FALSE(null_string == byte_string); + EXPECT_FALSE(empty_string == byte_string); + EXPECT_FALSE(deleted_string == byte_string); + + CFX_ByteString byte_string_same1("hello"); + EXPECT_TRUE(byte_string == byte_string_same1); + EXPECT_TRUE(byte_string_same1 == byte_string); + + CFX_ByteString byte_string_same2(byte_string); + EXPECT_TRUE(byte_string == byte_string_same2); + EXPECT_TRUE(byte_string_same2 == byte_string); + + CFX_ByteString byte_string1("he"); + CFX_ByteString byte_string2("hellp"); + CFX_ByteString byte_string3("hellod"); + EXPECT_FALSE(byte_string == byte_string1); + EXPECT_FALSE(byte_string == byte_string2); + EXPECT_FALSE(byte_string == byte_string3); + EXPECT_FALSE(byte_string1 == byte_string); + EXPECT_FALSE(byte_string2 == byte_string); + EXPECT_FALSE(byte_string3 == byte_string); + + CFX_ByteStringC null_string_c; + CFX_ByteStringC empty_string_c(""); + EXPECT_TRUE(null_string == null_string_c); + EXPECT_TRUE(null_string == empty_string_c); + EXPECT_TRUE(empty_string == null_string_c); + EXPECT_TRUE(empty_string == empty_string_c); + EXPECT_TRUE(deleted_string == null_string_c); + EXPECT_TRUE(deleted_string == empty_string_c); + EXPECT_TRUE(null_string_c == null_string); + EXPECT_TRUE(empty_string_c == null_string); + EXPECT_TRUE(null_string_c == empty_string); + EXPECT_TRUE(empty_string_c == empty_string); + EXPECT_TRUE(null_string_c == deleted_string); + EXPECT_TRUE(empty_string_c == deleted_string); + + CFX_ByteStringC byte_string_c_same1("hello"); + EXPECT_TRUE(byte_string == byte_string_c_same1); + EXPECT_TRUE(byte_string_c_same1 == byte_string); + + CFX_ByteStringC byte_string_c1("he"); + CFX_ByteStringC byte_string_c2("hellp"); + CFX_ByteStringC byte_string_c3("hellod"); + EXPECT_FALSE(byte_string == byte_string_c1); + EXPECT_FALSE(byte_string == byte_string_c2); + EXPECT_FALSE(byte_string == byte_string_c3); + EXPECT_FALSE(byte_string_c1 == byte_string); + EXPECT_FALSE(byte_string_c2 == byte_string); + EXPECT_FALSE(byte_string_c3 == byte_string); + + const char* c_null_string = nullptr; + const char* c_empty_string = ""; + EXPECT_TRUE(null_string == c_null_string); + EXPECT_TRUE(null_string == c_empty_string); + EXPECT_TRUE(empty_string == c_null_string); + EXPECT_TRUE(empty_string == c_empty_string); + EXPECT_TRUE(deleted_string == c_null_string); + EXPECT_TRUE(deleted_string == c_empty_string); + EXPECT_TRUE(c_null_string == null_string); + EXPECT_TRUE(c_empty_string == null_string); + EXPECT_TRUE(c_null_string == empty_string); + EXPECT_TRUE(c_empty_string == empty_string); + EXPECT_TRUE(c_null_string == deleted_string); + EXPECT_TRUE(c_empty_string == deleted_string); + + const char* c_string_same1 = "hello"; + EXPECT_TRUE(byte_string == c_string_same1); + EXPECT_TRUE(c_string_same1 == byte_string); + + const char* c_string1 = "he"; + const char* c_string2 = "hellp"; + const char* c_string3 = "hellod"; + EXPECT_FALSE(byte_string == c_string1); + EXPECT_FALSE(byte_string == c_string2); + EXPECT_FALSE(byte_string == c_string3); + EXPECT_FALSE(c_string1 == byte_string); + EXPECT_FALSE(c_string2 == byte_string); + EXPECT_FALSE(c_string3 == byte_string); +} + +TEST(fxcrt, ByteStringOperatorNE) { + CFX_ByteString null_string; + EXPECT_FALSE(null_string != null_string); + + CFX_ByteString empty_string(""); + EXPECT_FALSE(empty_string != empty_string); + EXPECT_FALSE(empty_string != null_string); + EXPECT_FALSE(null_string != empty_string); + + CFX_ByteString deleted_string("hello"); + deleted_string.Delete(0, 5); + EXPECT_FALSE(deleted_string != deleted_string); + EXPECT_FALSE(deleted_string != null_string); + EXPECT_FALSE(deleted_string != empty_string); + EXPECT_FALSE(deleted_string != deleted_string); + EXPECT_FALSE(null_string != deleted_string); + EXPECT_FALSE(empty_string != deleted_string); + EXPECT_FALSE(deleted_string != deleted_string); + + CFX_ByteString byte_string("hello"); + EXPECT_FALSE(byte_string != byte_string); + EXPECT_TRUE(byte_string != null_string); + EXPECT_TRUE(byte_string != empty_string); + EXPECT_TRUE(byte_string != deleted_string); + EXPECT_TRUE(null_string != byte_string); + EXPECT_TRUE(empty_string != byte_string); + EXPECT_TRUE(deleted_string != byte_string); + + CFX_ByteString byte_string_same1("hello"); + EXPECT_FALSE(byte_string != byte_string_same1); + EXPECT_FALSE(byte_string_same1 != byte_string); + + CFX_ByteString byte_string_same2(byte_string); + EXPECT_FALSE(byte_string != byte_string_same2); + EXPECT_FALSE(byte_string_same2 != byte_string); + + CFX_ByteString byte_string1("he"); + CFX_ByteString byte_string2("hellp"); + CFX_ByteString byte_string3("hellod"); + EXPECT_TRUE(byte_string != byte_string1); + EXPECT_TRUE(byte_string != byte_string2); + EXPECT_TRUE(byte_string != byte_string3); + EXPECT_TRUE(byte_string1 != byte_string); + EXPECT_TRUE(byte_string2 != byte_string); + EXPECT_TRUE(byte_string3 != byte_string); + + CFX_ByteStringC null_string_c; + CFX_ByteStringC empty_string_c(""); + EXPECT_FALSE(null_string != null_string_c); + EXPECT_FALSE(null_string != empty_string_c); + EXPECT_FALSE(empty_string != null_string_c); + EXPECT_FALSE(empty_string != empty_string_c); + EXPECT_FALSE(null_string_c != null_string); + EXPECT_FALSE(empty_string_c != null_string); + EXPECT_FALSE(null_string_c != empty_string); + EXPECT_FALSE(empty_string_c != empty_string); + + CFX_ByteStringC byte_string_c_same1("hello"); + EXPECT_FALSE(byte_string != byte_string_c_same1); + EXPECT_FALSE(byte_string_c_same1 != byte_string); + + CFX_ByteStringC byte_string_c1("he"); + CFX_ByteStringC byte_string_c2("hellp"); + CFX_ByteStringC byte_string_c3("hellod"); + EXPECT_TRUE(byte_string != byte_string_c1); + EXPECT_TRUE(byte_string != byte_string_c2); + EXPECT_TRUE(byte_string != byte_string_c3); + EXPECT_TRUE(byte_string_c1 != byte_string); + EXPECT_TRUE(byte_string_c2 != byte_string); + EXPECT_TRUE(byte_string_c3 != byte_string); + + const char* c_null_string = nullptr; + const char* c_empty_string = ""; + EXPECT_FALSE(null_string != c_null_string); + EXPECT_FALSE(null_string != c_empty_string); + EXPECT_FALSE(empty_string != c_null_string); + EXPECT_FALSE(empty_string != c_empty_string); + EXPECT_FALSE(deleted_string != c_null_string); + EXPECT_FALSE(deleted_string != c_empty_string); + EXPECT_FALSE(c_null_string != null_string); + EXPECT_FALSE(c_empty_string != null_string); + EXPECT_FALSE(c_null_string != empty_string); + EXPECT_FALSE(c_empty_string != empty_string); + EXPECT_FALSE(c_null_string != deleted_string); + EXPECT_FALSE(c_empty_string != deleted_string); + + const char* c_string_same1 = "hello"; + EXPECT_FALSE(byte_string != c_string_same1); + EXPECT_FALSE(c_string_same1 != byte_string); + + const char* c_string1 = "he"; + const char* c_string2 = "hellp"; + const char* c_string3 = "hellod"; + EXPECT_TRUE(byte_string != c_string1); + EXPECT_TRUE(byte_string != c_string2); + EXPECT_TRUE(byte_string != c_string3); + EXPECT_TRUE(c_string1 != byte_string); + EXPECT_TRUE(c_string2 != byte_string); + EXPECT_TRUE(c_string3 != byte_string); +} + +TEST(fxcrt, ByteStringCNull) { + CFX_ByteStringC null_string; + EXPECT_EQ(null_string.GetPtr(), nullptr); + EXPECT_EQ(null_string.GetLength(), 0); + EXPECT_TRUE(null_string.IsEmpty()); + + CFX_ByteStringC another_null_string; + EXPECT_EQ(null_string, another_null_string); + + CFX_ByteStringC copied_null_string(null_string); + EXPECT_EQ(copied_null_string.GetPtr(), nullptr); + EXPECT_EQ(copied_null_string.GetLength(), 0); + EXPECT_TRUE(copied_null_string.IsEmpty()); + EXPECT_EQ(null_string, copied_null_string); + + CFX_ByteStringC empty_string(""); // Pointer to NUL, not NULL pointer. + EXPECT_NE(empty_string.GetPtr(), nullptr); + EXPECT_EQ(empty_string.GetLength(), 0); + EXPECT_TRUE(empty_string.IsEmpty()); + EXPECT_EQ(null_string, empty_string); + + CFX_ByteStringC assigned_null_string("initially not NULL"); + assigned_null_string = null_string; + EXPECT_EQ(assigned_null_string.GetPtr(), nullptr); + EXPECT_EQ(assigned_null_string.GetLength(), 0); + EXPECT_TRUE(assigned_null_string.IsEmpty()); + EXPECT_EQ(null_string, assigned_null_string); + + CFX_ByteStringC assigned_nullptr_string("initially not NULL"); + assigned_nullptr_string = (const FX_CHAR*)nullptr; + EXPECT_EQ(assigned_nullptr_string.GetPtr(), nullptr); + EXPECT_EQ(assigned_nullptr_string.GetLength(), 0); + EXPECT_TRUE(assigned_nullptr_string.IsEmpty()); + EXPECT_EQ(null_string, assigned_nullptr_string); + + CFX_ByteStringC non_null_string("a"); + EXPECT_NE(null_string, non_null_string); +} + +TEST(fxcrt, ByteStringConcatInPlace) { + CFX_ByteString fred; + fred.ConcatInPlace(4, "FRED"); + EXPECT_EQ("FRED", fred); + + fred.ConcatInPlace(2, "DY"); + EXPECT_EQ("FREDDY", fred); + + fred.Delete(3, 3); + EXPECT_EQ("FRE", fred); + + fred.ConcatInPlace(1, "D"); + EXPECT_EQ("FRED", fred); + + CFX_ByteString copy = fred; + fred.ConcatInPlace(2, "DY"); + EXPECT_EQ("FREDDY", fred); + EXPECT_EQ("FRED", copy); + + // Test invalid arguments. + copy = fred; + fred.ConcatInPlace(-6, "freddy"); + CFX_ByteString not_aliased("xxxxxx"); + EXPECT_EQ("FREDDY", fred); + EXPECT_EQ("xxxxxx", not_aliased); +} + +TEST(fxcrt, ByteStringCNotNull) { + CFX_ByteStringC string3("abc"); + CFX_ByteStringC string6("abcdef"); + CFX_ByteStringC alternate_string3("abcdef", 3); + CFX_ByteStringC embedded_nul_string7("abc\0def", 7); + CFX_ByteStringC illegal_string7("abcdef", 7); + + EXPECT_EQ(3, string3.GetLength()); + EXPECT_EQ(6, string6.GetLength()); + EXPECT_EQ(3, alternate_string3.GetLength()); + EXPECT_EQ(7, embedded_nul_string7.GetLength()); + EXPECT_EQ(7, illegal_string7.GetLength()); + + EXPECT_NE(string3, string6); + EXPECT_EQ(string3, alternate_string3); + EXPECT_NE(string3, embedded_nul_string7); + EXPECT_NE(string3, illegal_string7); + EXPECT_NE(string6, alternate_string3); + EXPECT_NE(string6, embedded_nul_string7); + EXPECT_NE(string6, illegal_string7); + EXPECT_NE(alternate_string3, embedded_nul_string7); + EXPECT_NE(alternate_string3, illegal_string7); + EXPECT_NE(embedded_nul_string7, illegal_string7); + + CFX_ByteStringC copied_string3(string3); + CFX_ByteStringC copied_alternate_string3(alternate_string3); + CFX_ByteStringC copied_embedded_nul_string7(embedded_nul_string7); + + EXPECT_EQ(string3, copied_string3); + EXPECT_EQ(alternate_string3, copied_alternate_string3); + EXPECT_EQ(embedded_nul_string7, copied_embedded_nul_string7); + + CFX_ByteStringC assigned_string3("intially something else"); + CFX_ByteStringC assigned_alternate_string3("initally something else"); + CFX_ByteStringC assigned_ptr_string3("initially something else"); + CFX_ByteStringC assigned_embedded_nul_string7("initially something else"); + + assigned_string3 = string3; + assigned_alternate_string3 = alternate_string3; + assigned_ptr_string3 = "abc"; + assigned_embedded_nul_string7 = embedded_nul_string7; + EXPECT_EQ(string3, assigned_string3); + EXPECT_EQ(alternate_string3, assigned_alternate_string3); + EXPECT_EQ(alternate_string3, assigned_ptr_string3); + EXPECT_EQ(embedded_nul_string7, assigned_embedded_nul_string7); +} + +TEST(fxcrt, ByteStringCFromChar) { + CFX_ByteStringC null_string; + CFX_ByteStringC lower_a_string("a"); + + // Must have lvalues that outlive the corresponding ByteStringC. + char nul = '\0'; + char lower_a = 'a'; + CFX_ByteStringC nul_string_from_char(nul); + CFX_ByteStringC lower_a_string_from_char(lower_a); + + // Pointer to nul, not NULL ptr, hence length 1 ... + EXPECT_EQ(1, nul_string_from_char.GetLength()); + EXPECT_NE(null_string, nul_string_from_char); + + EXPECT_EQ(1, lower_a_string_from_char.GetLength()); + EXPECT_EQ(lower_a_string, lower_a_string_from_char); + EXPECT_NE(nul_string_from_char, lower_a_string_from_char); + + CFX_ByteStringC longer_string("ab"); + EXPECT_NE(longer_string, lower_a_string_from_char); +} + +TEST(fxcrt, ByteStringCGetID) { + CFX_ByteStringC null_string; + EXPECT_EQ(0u, null_string.GetID()); + EXPECT_EQ(0u, null_string.GetID(1)); + EXPECT_EQ(0u, null_string.GetID(-1)); + EXPECT_EQ(0u, null_string.GetID(-1000000)); + + CFX_ByteStringC empty_string(""); + EXPECT_EQ(0u, empty_string.GetID()); + EXPECT_EQ(0u, empty_string.GetID(1)); + EXPECT_EQ(0u, empty_string.GetID(-1)); + EXPECT_EQ(0u, empty_string.GetID(-1000000)); + + CFX_ByteStringC short_string("ab"); + EXPECT_EQ(FXBSTR_ID('a', 'b', 0, 0), short_string.GetID()); + EXPECT_EQ(FXBSTR_ID('b', 0, 0, 0), short_string.GetID(1)); + EXPECT_EQ(0u, short_string.GetID(2)); + EXPECT_EQ(0u, short_string.GetID(-1)); + EXPECT_EQ(0u, short_string.GetID(-1000000)); + + CFX_ByteStringC longer_string("abcdef"); + EXPECT_EQ(FXBSTR_ID('a', 'b', 'c', 'd'), longer_string.GetID()); + EXPECT_EQ(FXBSTR_ID('b', 'c', 'd', 'e'), longer_string.GetID(1)); + EXPECT_EQ(FXBSTR_ID('c', 'd', 'e', 'f'), longer_string.GetID(2)); + EXPECT_EQ(FXBSTR_ID('d', 'e', 'f', 0), longer_string.GetID(3)); + EXPECT_EQ(FXBSTR_ID('e', 'f', 0, 0), longer_string.GetID(4)); + EXPECT_EQ(FXBSTR_ID('f', 0, 0, 0), longer_string.GetID(5)); + EXPECT_EQ(0u, longer_string.GetID(6)); + EXPECT_EQ(0u, longer_string.GetID(-1)); + EXPECT_EQ(0u, longer_string.GetID(-1000000)); +} + +TEST(fxcrt, ByteStringCMid) { + CFX_ByteStringC null_string; + EXPECT_EQ(null_string, null_string.Mid(0, 1)); + EXPECT_EQ(null_string, null_string.Mid(1, 1)); + + CFX_ByteStringC empty_string(""); + EXPECT_EQ(empty_string, empty_string.Mid(0, 1)); + EXPECT_EQ(empty_string, empty_string.Mid(1, 1)); + + CFX_ByteStringC single_character("a"); + EXPECT_EQ(empty_string, single_character.Mid(0, 0)); + EXPECT_EQ(single_character, single_character.Mid(0, 1)); + EXPECT_EQ(empty_string, single_character.Mid(1, 0)); + EXPECT_EQ(empty_string, single_character.Mid(1, 1)); + + CFX_ByteStringC longer_string("abcdef"); + EXPECT_EQ(longer_string, longer_string.Mid(0, 6)); + EXPECT_EQ(longer_string, longer_string.Mid(0, 187)); + EXPECT_EQ(longer_string, longer_string.Mid(-42, 6)); + EXPECT_EQ(longer_string, longer_string.Mid(-42, 187)); + + CFX_ByteStringC leading_substring("ab"); + EXPECT_EQ(leading_substring, longer_string.Mid(0, 2)); + EXPECT_EQ(leading_substring, longer_string.Mid(-1, 2)); + + CFX_ByteStringC middle_substring("bcde"); + EXPECT_EQ(middle_substring, longer_string.Mid(1, 4)); + + CFX_ByteStringC trailing_substring("ef"); + EXPECT_EQ(trailing_substring, longer_string.Mid(4, 2)); + EXPECT_EQ(trailing_substring, longer_string.Mid(4, 3)); +} + +TEST(fxcrt, ByteStringCGetAt) { + CFX_ByteString short_string("a"); + CFX_ByteString longer_string("abc"); + CFX_ByteString embedded_nul_string("ab\0c", 4); + + EXPECT_EQ('a', short_string.GetAt(0)); + EXPECT_EQ('c', longer_string.GetAt(2)); + EXPECT_EQ('b', embedded_nul_string.GetAt(1)); + EXPECT_EQ('\0', embedded_nul_string.GetAt(2)); + EXPECT_EQ('c', embedded_nul_string.GetAt(3)); +} + +TEST(fxcrt, ByteStringCOperatorSubscript) { + // CFX_ByteStringC includes the NUL terminator for non-empty strings. + CFX_ByteStringC abc("abc"); + EXPECT_EQ('a', abc[0]); + EXPECT_EQ('b', abc[1]); + EXPECT_EQ('c', abc[2]); + EXPECT_EQ(0, abc[3]); +} + +TEST(fxcrt, ByteStringCOperatorLT) { + CFX_ByteStringC empty; + CFX_ByteStringC a("a"); + CFX_ByteStringC abc("abc"); + CFX_ByteStringC def("def"); + + EXPECT_FALSE(empty < empty); + EXPECT_FALSE(a < a); + EXPECT_FALSE(abc < abc); + EXPECT_FALSE(def < def); + + EXPECT_TRUE(empty < a); + EXPECT_FALSE(a < empty); + + EXPECT_TRUE(empty < abc); + EXPECT_FALSE(abc < empty); + + EXPECT_TRUE(empty < def); + EXPECT_FALSE(def < empty); + + EXPECT_TRUE(a < abc); + EXPECT_FALSE(abc < a); + + EXPECT_TRUE(a < def); + EXPECT_FALSE(def < a); + + EXPECT_TRUE(abc < def); + EXPECT_FALSE(def < abc); +} + +TEST(fxcrt, ByteStringCOperatorEQ) { + CFX_ByteStringC byte_string_c("hello"); + EXPECT_TRUE(byte_string_c == byte_string_c); + + CFX_ByteStringC byte_string_c_same1("hello"); + EXPECT_TRUE(byte_string_c == byte_string_c_same1); + EXPECT_TRUE(byte_string_c_same1 == byte_string_c); + + CFX_ByteStringC byte_string_c_same2(byte_string_c); + EXPECT_TRUE(byte_string_c == byte_string_c_same2); + EXPECT_TRUE(byte_string_c_same2 == byte_string_c); + + CFX_ByteStringC byte_string_c1("he"); + CFX_ByteStringC byte_string_c2("hellp"); + CFX_ByteStringC byte_string_c3("hellod"); + EXPECT_FALSE(byte_string_c == byte_string_c1); + EXPECT_FALSE(byte_string_c == byte_string_c2); + EXPECT_FALSE(byte_string_c == byte_string_c3); + EXPECT_FALSE(byte_string_c1 == byte_string_c); + EXPECT_FALSE(byte_string_c2 == byte_string_c); + EXPECT_FALSE(byte_string_c3 == byte_string_c); + + CFX_ByteString byte_string_same1("hello"); + EXPECT_TRUE(byte_string_c == byte_string_same1); + EXPECT_TRUE(byte_string_same1 == byte_string_c); + + CFX_ByteString byte_string1("he"); + CFX_ByteString byte_string2("hellp"); + CFX_ByteString byte_string3("hellod"); + EXPECT_FALSE(byte_string_c == byte_string1); + EXPECT_FALSE(byte_string_c == byte_string2); + EXPECT_FALSE(byte_string_c == byte_string3); + EXPECT_FALSE(byte_string1 == byte_string_c); + EXPECT_FALSE(byte_string2 == byte_string_c); + EXPECT_FALSE(byte_string3 == byte_string_c); + + const char* c_string_same1 = "hello"; + EXPECT_TRUE(byte_string_c == c_string_same1); + EXPECT_TRUE(c_string_same1 == byte_string_c); + + const char* c_string1 = "he"; + const char* c_string2 = "hellp"; + const char* c_string3 = "hellod"; + EXPECT_FALSE(byte_string_c == c_string1); + EXPECT_FALSE(byte_string_c == c_string2); + EXPECT_FALSE(byte_string_c == c_string3); + + EXPECT_FALSE(c_string1 == byte_string_c); + EXPECT_FALSE(c_string2 == byte_string_c); + EXPECT_FALSE(c_string3 == byte_string_c); +} + +TEST(fxcrt, ByteStringCOperatorNE) { + CFX_ByteStringC byte_string_c("hello"); + EXPECT_FALSE(byte_string_c != byte_string_c); + + CFX_ByteStringC byte_string_c_same1("hello"); + EXPECT_FALSE(byte_string_c != byte_string_c_same1); + EXPECT_FALSE(byte_string_c_same1 != byte_string_c); + + CFX_ByteStringC byte_string_c_same2(byte_string_c); + EXPECT_FALSE(byte_string_c != byte_string_c_same2); + EXPECT_FALSE(byte_string_c_same2 != byte_string_c); + + CFX_ByteStringC byte_string_c1("he"); + CFX_ByteStringC byte_string_c2("hellp"); + CFX_ByteStringC byte_string_c3("hellod"); + EXPECT_TRUE(byte_string_c != byte_string_c1); + EXPECT_TRUE(byte_string_c != byte_string_c2); + EXPECT_TRUE(byte_string_c != byte_string_c3); + EXPECT_TRUE(byte_string_c1 != byte_string_c); + EXPECT_TRUE(byte_string_c2 != byte_string_c); + EXPECT_TRUE(byte_string_c3 != byte_string_c); + + CFX_ByteString byte_string_same1("hello"); + EXPECT_FALSE(byte_string_c != byte_string_same1); + EXPECT_FALSE(byte_string_same1 != byte_string_c); + + CFX_ByteString byte_string1("he"); + CFX_ByteString byte_string2("hellp"); + CFX_ByteString byte_string3("hellod"); + EXPECT_TRUE(byte_string_c != byte_string1); + EXPECT_TRUE(byte_string_c != byte_string2); + EXPECT_TRUE(byte_string_c != byte_string3); + EXPECT_TRUE(byte_string1 != byte_string_c); + EXPECT_TRUE(byte_string2 != byte_string_c); + EXPECT_TRUE(byte_string3 != byte_string_c); + + const char* c_string_same1 = "hello"; + EXPECT_FALSE(byte_string_c != c_string_same1); + EXPECT_FALSE(c_string_same1 != byte_string_c); + + const char* c_string1 = "he"; + const char* c_string2 = "hellp"; + const char* c_string3 = "hellod"; + EXPECT_TRUE(byte_string_c != c_string1); + EXPECT_TRUE(byte_string_c != c_string2); + EXPECT_TRUE(byte_string_c != c_string3); + + EXPECT_TRUE(c_string1 != byte_string_c); + EXPECT_TRUE(c_string2 != byte_string_c); + EXPECT_TRUE(c_string3 != byte_string_c); +} + +TEST(fxcrt, ByteStringFormatWidth) { + { + CFX_ByteString str; + str.Format("%5d", 1); + EXPECT_EQ(" 1", str); + } + + { + CFX_ByteString str; + str.Format("%d", 1); + EXPECT_EQ("1", str); + } + + { + CFX_ByteString str; + str.Format("%*d", 5, 1); + EXPECT_EQ(" 1", str); + } + + { + CFX_ByteString str; + str.Format("%-1d", 1); + EXPECT_EQ("1", str); + } + + { + CFX_ByteString str; + str.Format("%0d", 1); + EXPECT_EQ("1", str); + } + + { + CFX_ByteString str; + str.Format("%1048576d", 1); + EXPECT_EQ("Bad width", str); + } +} + +TEST(fxcrt, ByteStringFormatPrecision) { + { + CFX_ByteString str; + str.Format("%.2f", 1.12345); + EXPECT_EQ("1.12", str); + } + + { + CFX_ByteString str; + str.Format("%.*f", 3, 1.12345); + EXPECT_EQ("1.123", str); + } + + { + CFX_ByteString str; + str.Format("%f", 1.12345); + EXPECT_EQ("1.123450", str); + } + + { + CFX_ByteString str; + str.Format("%-1f", 1.12345); + EXPECT_EQ("1.123450", str); + } + + { + CFX_ByteString str; + str.Format("%0f", 1.12345); + EXPECT_EQ("1.123450", str); + } + + { + CFX_ByteString str; + str.Format("%.1048576f", 1.2); + EXPECT_EQ("Bad precision", str); + } +} + +TEST(fxcrt, EmptyByteString) { + CFX_ByteString empty_str; + EXPECT_TRUE(empty_str.IsEmpty()); + EXPECT_EQ(0, empty_str.GetLength()); + const FX_CHAR* cstr = empty_str.c_str(); + EXPECT_EQ(0, FXSYS_strlen(cstr)); +} diff --git a/core/fxcrt/fx_basic_buffer.cpp b/core/fxcrt/fx_basic_buffer.cpp new file mode 100644 index 0000000000..a3039f4188 --- /dev/null +++ b/core/fxcrt/fx_basic_buffer.cpp @@ -0,0 +1,428 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include +#include + +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_safe_types.h" +#include "third_party/base/numerics/safe_conversions.h" + +CFX_BinaryBuf::CFX_BinaryBuf() + : m_AllocStep(0), m_AllocSize(0), m_DataSize(0) {} + +CFX_BinaryBuf::CFX_BinaryBuf(FX_STRSIZE size) + : m_AllocStep(0), m_AllocSize(size), m_DataSize(size) { + m_pBuffer.reset(FX_Alloc(uint8_t, size)); +} + +CFX_BinaryBuf::~CFX_BinaryBuf() {} + +void CFX_BinaryBuf::Delete(int start_index, int count) { + if (!m_pBuffer || start_index < 0 || count < 0 || count > m_DataSize || + start_index > m_DataSize - count) { + return; + } + FXSYS_memmove(m_pBuffer.get() + start_index, + m_pBuffer.get() + start_index + count, + m_DataSize - start_index - count); + m_DataSize -= count; +} + +void CFX_BinaryBuf::Clear() { + m_DataSize = 0; +} + +uint8_t* CFX_BinaryBuf::DetachBuffer() { + m_DataSize = 0; + m_AllocSize = 0; + return m_pBuffer.release(); +} + +void CFX_BinaryBuf::AttachData(uint8_t* buffer, FX_STRSIZE size) { + m_pBuffer.reset(buffer); + m_DataSize = size; + m_AllocSize = size; +} + +void CFX_BinaryBuf::EstimateSize(FX_STRSIZE size, FX_STRSIZE step) { + m_AllocStep = step; + if (m_AllocSize < size) + ExpandBuf(size - m_DataSize); +} + +void CFX_BinaryBuf::ExpandBuf(FX_STRSIZE add_size) { + FX_SAFE_STRSIZE new_size = m_DataSize; + new_size += add_size; + if (m_AllocSize >= new_size.ValueOrDie()) + return; + + int alloc_step = std::max(128, m_AllocStep ? m_AllocStep : m_AllocSize / 4); + new_size += alloc_step - 1; // Quantize, don't combine these lines. + new_size /= alloc_step; + new_size *= alloc_step; + m_AllocSize = new_size.ValueOrDie(); + m_pBuffer.reset(m_pBuffer + ? FX_Realloc(uint8_t, m_pBuffer.release(), m_AllocSize) + : FX_Alloc(uint8_t, m_AllocSize)); +} + +void CFX_BinaryBuf::AppendBlock(const void* pBuf, FX_STRSIZE size) { + if (size <= 0) + return; + + ExpandBuf(size); + if (pBuf) { + FXSYS_memcpy(m_pBuffer.get() + m_DataSize, pBuf, size); + } else { + FXSYS_memset(m_pBuffer.get() + m_DataSize, 0, size); + } + m_DataSize += size; +} + +void CFX_BinaryBuf::InsertBlock(FX_STRSIZE pos, + const void* pBuf, + FX_STRSIZE size) { + if (size <= 0) + return; + + ExpandBuf(size); + FXSYS_memmove(m_pBuffer.get() + pos + size, m_pBuffer.get() + pos, + m_DataSize - pos); + if (pBuf) { + FXSYS_memcpy(m_pBuffer.get() + pos, pBuf, size); + } else { + FXSYS_memset(m_pBuffer.get() + pos, 0, size); + } + m_DataSize += size; +} + +CFX_ByteStringC CFX_ByteTextBuf::GetByteString() const { + return CFX_ByteStringC(m_pBuffer.get(), m_DataSize); +} + +CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(const CFX_ByteStringC& lpsz) { + AppendBlock(lpsz.GetPtr(), lpsz.GetLength()); + return *this; +} + +CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(int i) { + char buf[32]; + FXSYS_itoa(i, buf, 10); + AppendBlock(buf, FXSYS_strlen(buf)); + return *this; +} + +CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(FX_DWORD i) { + char buf[32]; + FXSYS_itoa(i, buf, 10); + AppendBlock(buf, FXSYS_strlen(buf)); + return *this; +} + +CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(double f) { + char buf[32]; + FX_STRSIZE len = FX_ftoa((FX_FLOAT)f, buf); + AppendBlock(buf, len); + return *this; +} + +CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(const CFX_ByteTextBuf& buf) { + AppendBlock(buf.m_pBuffer.get(), buf.m_DataSize); + return *this; +} + +void CFX_WideTextBuf::AppendChar(FX_WCHAR ch) { + ExpandBuf(sizeof(FX_WCHAR)); + *(FX_WCHAR*)(m_pBuffer.get() + m_DataSize) = ch; + m_DataSize += sizeof(FX_WCHAR); +} + +CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const CFX_WideStringC& str) { + AppendBlock(str.GetPtr(), str.GetLength() * sizeof(FX_WCHAR)); + return *this; +} + +CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const CFX_WideString& str) { + AppendBlock(str.c_str(), str.GetLength() * sizeof(FX_WCHAR)); + return *this; +} + +CFX_WideTextBuf& CFX_WideTextBuf::operator<<(int i) { + char buf[32]; + FXSYS_itoa(i, buf, 10); + FX_STRSIZE len = FXSYS_strlen(buf); + ExpandBuf(len * sizeof(FX_WCHAR)); + FX_WCHAR* str = (FX_WCHAR*)(m_pBuffer.get() + m_DataSize); + for (FX_STRSIZE j = 0; j < len; j++) { + *str++ = buf[j]; + } + m_DataSize += len * sizeof(FX_WCHAR); + return *this; +} + +CFX_WideTextBuf& CFX_WideTextBuf::operator<<(double f) { + char buf[32]; + FX_STRSIZE len = FX_ftoa((FX_FLOAT)f, buf); + ExpandBuf(len * sizeof(FX_WCHAR)); + FX_WCHAR* str = (FX_WCHAR*)(m_pBuffer.get() + m_DataSize); + for (FX_STRSIZE i = 0; i < len; i++) { + *str++ = buf[i]; + } + m_DataSize += len * sizeof(FX_WCHAR); + return *this; +} + +CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const FX_WCHAR* lpsz) { + AppendBlock(lpsz, FXSYS_wcslen(lpsz) * sizeof(FX_WCHAR)); + return *this; +} + +CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const CFX_WideTextBuf& buf) { + AppendBlock(buf.m_pBuffer.get(), buf.m_DataSize); + return *this; +} + +CFX_WideStringC CFX_WideTextBuf::GetWideString() const { + return CFX_WideStringC((const FX_WCHAR*)m_pBuffer.get(), + m_DataSize / sizeof(FX_WCHAR)); +} + +#ifdef PDF_ENABLE_XFA +CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(uint8_t i) { + if (m_pStream) { + m_pStream->WriteBlock(&i, 1); + } else { + m_SavingBuf.AppendByte(i); + } + return *this; +} +CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(int i) { + if (m_pStream) { + m_pStream->WriteBlock(&i, sizeof(int)); + } else { + m_SavingBuf.AppendBlock(&i, sizeof(int)); + } + return *this; +} +CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(FX_DWORD i) { + if (m_pStream) { + m_pStream->WriteBlock(&i, sizeof(FX_DWORD)); + } else { + m_SavingBuf.AppendBlock(&i, sizeof(FX_DWORD)); + } + return *this; +} +CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(FX_FLOAT f) { + if (m_pStream) { + m_pStream->WriteBlock(&f, sizeof(FX_FLOAT)); + } else { + m_SavingBuf.AppendBlock(&f, sizeof(FX_FLOAT)); + } + return *this; +} +CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(const CFX_ByteStringC& bstr) { + int len = bstr.GetLength(); + if (m_pStream) { + m_pStream->WriteBlock(&len, sizeof(int)); + m_pStream->WriteBlock(bstr.GetPtr(), len); + } else { + m_SavingBuf.AppendBlock(&len, sizeof(int)); + m_SavingBuf.AppendBlock(bstr.GetPtr(), len); + } + return *this; +} +CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(const FX_WCHAR* wstr) { + FX_STRSIZE len = FXSYS_wcslen(wstr); + if (m_pStream) { + m_pStream->WriteBlock(&len, sizeof(int)); + m_pStream->WriteBlock(wstr, len); + } else { + m_SavingBuf.AppendBlock(&len, sizeof(int)); + m_SavingBuf.AppendBlock(wstr, len); + } + return *this; +} +CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(const CFX_WideString& wstr) { + CFX_ByteString encoded = wstr.UTF16LE_Encode(); + return operator<<(encoded); +} +void CFX_ArchiveSaver::Write(const void* pData, FX_STRSIZE dwSize) { + if (m_pStream) { + m_pStream->WriteBlock(pData, dwSize); + } else { + m_SavingBuf.AppendBlock(pData, dwSize); + } +} +CFX_ArchiveLoader::CFX_ArchiveLoader(const uint8_t* pData, FX_DWORD dwSize) { + m_pLoadingBuf = pData; + m_LoadingPos = 0; + m_LoadingSize = dwSize; +} +FX_BOOL CFX_ArchiveLoader::IsEOF() { + return m_LoadingPos >= m_LoadingSize; +} +CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(uint8_t& i) { + if (m_LoadingPos >= m_LoadingSize) { + return *this; + } + i = m_pLoadingBuf[m_LoadingPos++]; + return *this; +} +CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(int& i) { + Read(&i, sizeof(int)); + return *this; +} +CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(FX_DWORD& i) { + Read(&i, sizeof(FX_DWORD)); + return *this; +} +CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(FX_FLOAT& i) { + Read(&i, sizeof(FX_FLOAT)); + return *this; +} +CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(CFX_ByteString& str) { + if (m_LoadingPos + 4 > m_LoadingSize) { + return *this; + } + int len; + operator>>(len); + str.Empty(); + if (len <= 0 || m_LoadingPos + len > m_LoadingSize) { + return *this; + } + FX_CHAR* buffer = str.GetBuffer(len); + FXSYS_memcpy(buffer, m_pLoadingBuf + m_LoadingPos, len); + str.ReleaseBuffer(len); + m_LoadingPos += len; + return *this; +} +CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(CFX_WideString& str) { + CFX_ByteString encoded; + operator>>(encoded); + str = CFX_WideString::FromUTF16LE( + reinterpret_cast(encoded.c_str()), + encoded.GetLength() / sizeof(unsigned short)); + return *this; +} +FX_BOOL CFX_ArchiveLoader::Read(void* pBuf, FX_DWORD dwSize) { + if (m_LoadingPos + dwSize > m_LoadingSize) { + return FALSE; + } + FXSYS_memcpy(pBuf, m_pLoadingBuf + m_LoadingPos, dwSize); + m_LoadingPos += dwSize; + return TRUE; +} +#endif // PDF_ENABLE_XFA + +void CFX_BitStream::Init(const uint8_t* pData, FX_DWORD dwSize) { + m_pData = pData; + m_BitSize = dwSize * 8; + m_BitPos = 0; +} +void CFX_BitStream::ByteAlign() { + int mod = m_BitPos % 8; + if (mod == 0) { + return; + } + m_BitPos += 8 - mod; +} +FX_DWORD CFX_BitStream::GetBits(FX_DWORD nBits) { + if (nBits > m_BitSize || m_BitPos + nBits > m_BitSize) { + return 0; + } + if (nBits == 1) { + int bit = (m_pData[m_BitPos / 8] & (1 << (7 - m_BitPos % 8))) ? 1 : 0; + m_BitPos++; + return bit; + } + FX_DWORD byte_pos = m_BitPos / 8; + FX_DWORD bit_pos = m_BitPos % 8, bit_left = nBits; + FX_DWORD result = 0; + if (bit_pos) { + if (8 - bit_pos >= bit_left) { + result = + (m_pData[byte_pos] & (0xff >> bit_pos)) >> (8 - bit_pos - bit_left); + m_BitPos += bit_left; + return result; + } + bit_left -= 8 - bit_pos; + result = (m_pData[byte_pos++] & ((1 << (8 - bit_pos)) - 1)) << bit_left; + } + while (bit_left >= 8) { + bit_left -= 8; + result |= m_pData[byte_pos++] << bit_left; + } + if (bit_left) { + result |= m_pData[byte_pos] >> (8 - bit_left); + } + m_BitPos += nBits; + return result; +} + +CFX_FileBufferArchive::CFX_FileBufferArchive() + : m_Length(0), m_pFile(nullptr) {} + +CFX_FileBufferArchive::~CFX_FileBufferArchive() {} + +void CFX_FileBufferArchive::Clear() { + m_Length = 0; + m_pBuffer.reset(); + m_pFile = nullptr; +} + +bool CFX_FileBufferArchive::Flush() { + size_t nRemaining = m_Length; + m_Length = 0; + if (!m_pFile) + return false; + if (!m_pBuffer || !nRemaining) + return true; + return m_pFile->WriteBlock(m_pBuffer.get(), nRemaining) > 0; +} + +int32_t CFX_FileBufferArchive::AppendBlock(const void* pBuf, size_t size) { + if (!pBuf || size < 1) { + return 0; + } + if (!m_pBuffer) { + m_pBuffer.reset(FX_Alloc(uint8_t, kBufSize)); + } + const uint8_t* buffer = reinterpret_cast(pBuf); + size_t temp_size = size; + while (temp_size) { + size_t buf_size = std::min(kBufSize - m_Length, temp_size); + FXSYS_memcpy(m_pBuffer.get() + m_Length, buffer, buf_size); + m_Length += buf_size; + if (m_Length == kBufSize) { + if (!Flush()) { + return -1; + } + } + temp_size -= buf_size; + buffer += buf_size; + } + return pdfium::base::checked_cast(size); +} + +int32_t CFX_FileBufferArchive::AppendByte(uint8_t byte) { + return AppendBlock(&byte, 1); +} + +int32_t CFX_FileBufferArchive::AppendDWord(FX_DWORD i) { + char buf[32]; + FXSYS_itoa(i, buf, 10); + return AppendBlock(buf, (size_t)FXSYS_strlen(buf)); +} + +int32_t CFX_FileBufferArchive::AppendString(const CFX_ByteStringC& lpsz) { + return AppendBlock(lpsz.GetPtr(), lpsz.GetLength()); +} + +void CFX_FileBufferArchive::AttachFile(IFX_StreamWrite* pFile) { + FXSYS_assert(pFile); + m_pFile = pFile; +} diff --git a/core/fxcrt/fx_basic_coords.cpp b/core/fxcrt/fx_basic_coords.cpp new file mode 100644 index 0000000000..4f723ef919 --- /dev/null +++ b/core/fxcrt/fx_basic_coords.cpp @@ -0,0 +1,517 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxcrt/fx_ext.h" + +void FX_RECT::Normalize() { + if (left > right) { + int temp = left; + left = right; + right = temp; + } + if (top > bottom) { + int temp = top; + top = bottom; + bottom = temp; + } +} +void FX_RECT::Intersect(const FX_RECT& src) { + FX_RECT src_n = src; + src_n.Normalize(); + Normalize(); + left = left > src_n.left ? left : src_n.left; + top = top > src_n.top ? top : src_n.top; + right = right < src_n.right ? right : src_n.right; + bottom = bottom < src_n.bottom ? bottom : src_n.bottom; + if (left > right || top > bottom) { + left = top = right = bottom = 0; + } +} +void FX_RECT::Union(const FX_RECT& other_rect) { + Normalize(); + FX_RECT other = other_rect; + other.Normalize(); + left = left < other.left ? left : other.left; + right = right > other.right ? right : other.right; + bottom = bottom > other.bottom ? bottom : other.bottom; + top = top < other.top ? top : other.top; +} +FX_BOOL GetIntersection(FX_FLOAT low1, + FX_FLOAT high1, + FX_FLOAT low2, + FX_FLOAT high2, + FX_FLOAT& interlow, + FX_FLOAT& interhigh) { + if (low1 >= high2 || low2 >= high1) { + return FALSE; + } + interlow = low1 > low2 ? low1 : low2; + interhigh = high1 > high2 ? high2 : high1; + return TRUE; +} +extern "C" int FXSYS_round(FX_FLOAT d) { + if (d < (FX_FLOAT)INT_MIN) { + return INT_MIN; + } + if (d > (FX_FLOAT)INT_MAX) { + return INT_MAX; + } + + return (int)round(d); +} +CFX_FloatRect::CFX_FloatRect(const FX_RECT& rect) { + left = (FX_FLOAT)(rect.left); + right = (FX_FLOAT)(rect.right); + bottom = (FX_FLOAT)(rect.top); + top = (FX_FLOAT)(rect.bottom); +} +void CFX_FloatRect::Normalize() { + FX_FLOAT temp; + if (left > right) { + temp = left; + left = right; + right = temp; + } + if (bottom > top) { + temp = top; + top = bottom; + bottom = temp; + } +} +void CFX_FloatRect::Intersect(const CFX_FloatRect& other_rect) { + Normalize(); + CFX_FloatRect other = other_rect; + other.Normalize(); + left = left > other.left ? left : other.left; + right = right < other.right ? right : other.right; + bottom = bottom > other.bottom ? bottom : other.bottom; + top = top < other.top ? top : other.top; + if (left > right || bottom > top) { + left = right = bottom = top = 0; + } +} +void CFX_FloatRect::Union(const CFX_FloatRect& other_rect) { + Normalize(); + CFX_FloatRect other = other_rect; + other.Normalize(); + left = left < other.left ? left : other.left; + right = right > other.right ? right : other.right; + bottom = bottom < other.bottom ? bottom : other.bottom; + top = top > other.top ? top : other.top; +} +void CFX_FloatRect::Transform(const CFX_Matrix* pMatrix) { + pMatrix->TransformRect(left, right, top, bottom); +} +int CFX_FloatRect::Substract4(CFX_FloatRect& s, CFX_FloatRect* pRects) { + Normalize(); + s.Normalize(); + int nRects = 0; + CFX_FloatRect rects[4]; + if (left < s.left) { + rects[nRects].left = left; + rects[nRects].right = s.left; + rects[nRects].bottom = bottom; + rects[nRects].top = top; + nRects++; + } + if (s.left < right && s.top < top) { + rects[nRects].left = s.left; + rects[nRects].right = right; + rects[nRects].bottom = s.top; + rects[nRects].top = top; + nRects++; + } + if (s.top > bottom && s.right < right) { + rects[nRects].left = s.right; + rects[nRects].right = right; + rects[nRects].bottom = bottom; + rects[nRects].top = s.top; + nRects++; + } + if (s.bottom > bottom) { + rects[nRects].left = s.left; + rects[nRects].right = s.right; + rects[nRects].bottom = bottom; + rects[nRects].top = s.bottom; + nRects++; + } + if (nRects == 0) { + return 0; + } + for (int i = 0; i < nRects; i++) { + pRects[i] = rects[i]; + pRects[i].Intersect(*this); + } + return nRects; +} +FX_RECT CFX_FloatRect::GetOutterRect() const { + CFX_FloatRect rect1 = *this; + FX_RECT rect; + rect.left = (int)FXSYS_floor(rect1.left); + rect.right = (int)FXSYS_ceil(rect1.right); + rect.top = (int)FXSYS_floor(rect1.bottom); + rect.bottom = (int)FXSYS_ceil(rect1.top); + rect.Normalize(); + return rect; +} +FX_RECT CFX_FloatRect::GetInnerRect() const { + CFX_FloatRect rect1 = *this; + FX_RECT rect; + rect.left = (int)FXSYS_ceil(rect1.left); + rect.right = (int)FXSYS_floor(rect1.right); + rect.top = (int)FXSYS_ceil(rect1.bottom); + rect.bottom = (int)FXSYS_floor(rect1.top); + rect.Normalize(); + return rect; +} +static void _MatchFloatRange(FX_FLOAT f1, FX_FLOAT f2, int& i1, int& i2) { + int length = (int)FXSYS_ceil(f2 - f1); + int i1_1 = (int)FXSYS_floor(f1); + int i1_2 = (int)FXSYS_ceil(f1); + FX_FLOAT error1 = f1 - i1_1 + (FX_FLOAT)FXSYS_fabs(f2 - i1_1 - length); + FX_FLOAT error2 = i1_2 - f1 + (FX_FLOAT)FXSYS_fabs(f2 - i1_2 - length); + i1 = (error1 > error2) ? i1_2 : i1_1; + i2 = i1 + length; +} +FX_RECT CFX_FloatRect::GetClosestRect() const { + CFX_FloatRect rect1 = *this; + FX_RECT rect; + _MatchFloatRange(rect1.left, rect1.right, rect.left, rect.right); + _MatchFloatRange(rect1.bottom, rect1.top, rect.top, rect.bottom); + rect.Normalize(); + return rect; +} + +bool CFX_FloatRect::Contains(const CFX_FloatRect& other_rect) const { + CFX_FloatRect n1(*this); + CFX_FloatRect n2(other_rect); + n1.Normalize(); + n2.Normalize(); + return n2.left >= n1.left && n2.right <= n1.right && n2.bottom >= n1.bottom && + n2.top <= n1.top; +} + +bool CFX_FloatRect::Contains(FX_FLOAT x, FX_FLOAT y) const { + CFX_FloatRect n1(*this); + n1.Normalize(); + return x <= n1.right && x >= n1.left && y <= n1.top && y >= n1.bottom; +} + +void CFX_FloatRect::UpdateRect(FX_FLOAT x, FX_FLOAT y) { + if (left > x) { + left = x; + } + if (right < x) { + right = x; + } + if (bottom > y) { + bottom = y; + } + if (top < y) { + top = y; + } +} +CFX_FloatRect CFX_FloatRect::GetBBox(const CFX_PointF* pPoints, int nPoints) { + if (nPoints == 0) { + return CFX_FloatRect(); + } + FX_FLOAT min_x = pPoints->x, max_x = pPoints->x, min_y = pPoints->y, + max_y = pPoints->y; + for (int i = 1; i < nPoints; i++) { + if (min_x > pPoints[i].x) { + min_x = pPoints[i].x; + } + if (max_x < pPoints[i].x) { + max_x = pPoints[i].x; + } + if (min_y > pPoints[i].y) { + min_y = pPoints[i].y; + } + if (max_y < pPoints[i].y) { + max_y = pPoints[i].y; + } + } + return CFX_FloatRect(min_x, min_y, max_x, max_y); +} +void CFX_Matrix::Set(FX_FLOAT other_a, + FX_FLOAT other_b, + FX_FLOAT other_c, + FX_FLOAT other_d, + FX_FLOAT other_e, + FX_FLOAT other_f) { + a = other_a; + b = other_b; + c = other_c; + d = other_d; + e = other_e; + f = other_f; +} +void CFX_Matrix::Set(const FX_FLOAT n[6]) { + a = n[0]; + b = n[1]; + c = n[2]; + d = n[3]; + e = n[4]; + f = n[5]; +} +void CFX_Matrix::SetReverse(const CFX_Matrix& m) { + FX_FLOAT i = m.a * m.d - m.b * m.c; + if (FXSYS_fabs(i) == 0) { + return; + } + FX_FLOAT j = -i; + a = m.d / i; + b = m.b / j; + c = m.c / j; + d = m.a / i; + e = (m.c * m.f - m.d * m.e) / i; + f = (m.a * m.f - m.b * m.e) / j; +} +static void FXCRT_Matrix_Concat(CFX_Matrix& m, + const CFX_Matrix& m1, + const CFX_Matrix& m2) { + FX_FLOAT aa = m1.a * m2.a + m1.b * m2.c; + FX_FLOAT bb = m1.a * m2.b + m1.b * m2.d; + FX_FLOAT cc = m1.c * m2.a + m1.d * m2.c; + FX_FLOAT dd = m1.c * m2.b + m1.d * m2.d; + FX_FLOAT ee = m1.e * m2.a + m1.f * m2.c + m2.e; + FX_FLOAT ff = m1.e * m2.b + m1.f * m2.d + m2.f; + m.a = aa, m.b = bb, m.c = cc, m.d = dd, m.e = ee, m.f = ff; +} +void CFX_Matrix::Concat(FX_FLOAT a, + FX_FLOAT b, + FX_FLOAT c, + FX_FLOAT d, + FX_FLOAT e, + FX_FLOAT f, + FX_BOOL bPrepended) { + CFX_Matrix m; + m.Set(a, b, c, d, e, f); + Concat(m, bPrepended); +} +void CFX_Matrix::Concat(const CFX_Matrix& m, FX_BOOL bPrepended) { + if (bPrepended) { + FXCRT_Matrix_Concat(*this, m, *this); + } else { + FXCRT_Matrix_Concat(*this, *this, m); + } +} +void CFX_Matrix::ConcatInverse(const CFX_Matrix& src, FX_BOOL bPrepended) { + CFX_Matrix m; + m.SetReverse(src); + Concat(m, bPrepended); +} +FX_BOOL CFX_Matrix::IsInvertible() const { + return FXSYS_fabs(a * d - b * c) >= 0.0001f; +} +FX_BOOL CFX_Matrix::Is90Rotated() const { + return FXSYS_fabs(a * 1000) < FXSYS_fabs(b) && + FXSYS_fabs(d * 1000) < FXSYS_fabs(c); +} +FX_BOOL CFX_Matrix::IsScaled() const { + return FXSYS_fabs(b * 1000) < FXSYS_fabs(a) && + FXSYS_fabs(c * 1000) < FXSYS_fabs(d); +} +void CFX_Matrix::Translate(FX_FLOAT x, FX_FLOAT y, FX_BOOL bPrepended) { + if (bPrepended) { + e += x * a + y * c; + f += y * d + x * b; + } else { + e += x, f += y; + } +} +void CFX_Matrix::Scale(FX_FLOAT sx, FX_FLOAT sy, FX_BOOL bPrepended) { + a *= sx, d *= sy; + if (bPrepended) { + b *= sx; + c *= sy; + } else { + b *= sy; + c *= sx; + e *= sx; + f *= sy; + } +} +void CFX_Matrix::Rotate(FX_FLOAT fRadian, FX_BOOL bPrepended) { + FX_FLOAT cosValue = FXSYS_cos(fRadian); + FX_FLOAT sinValue = FXSYS_sin(fRadian); + CFX_Matrix m; + m.Set(cosValue, sinValue, -sinValue, cosValue, 0, 0); + if (bPrepended) { + FXCRT_Matrix_Concat(*this, m, *this); + } else { + FXCRT_Matrix_Concat(*this, *this, m); + } +} +void CFX_Matrix::RotateAt(FX_FLOAT fRadian, + FX_FLOAT dx, + FX_FLOAT dy, + FX_BOOL bPrepended) { + Translate(dx, dy, bPrepended); + Rotate(fRadian, bPrepended); + Translate(-dx, -dy, bPrepended); +} +void CFX_Matrix::Shear(FX_FLOAT fAlphaRadian, + FX_FLOAT fBetaRadian, + FX_BOOL bPrepended) { + CFX_Matrix m; + m.Set(1, FXSYS_tan(fAlphaRadian), FXSYS_tan(fBetaRadian), 1, 0, 0); + if (bPrepended) { + FXCRT_Matrix_Concat(*this, m, *this); + } else { + FXCRT_Matrix_Concat(*this, *this, m); + } +} +void CFX_Matrix::MatchRect(const CFX_FloatRect& dest, + const CFX_FloatRect& src) { + FX_FLOAT fDiff = src.left - src.right; + a = FXSYS_fabs(fDiff) < 0.001f ? 1 : (dest.left - dest.right) / fDiff; + fDiff = src.bottom - src.top; + d = FXSYS_fabs(fDiff) < 0.001f ? 1 : (dest.bottom - dest.top) / fDiff; + e = dest.left - src.left * a; + f = dest.bottom - src.bottom * d; + b = 0; + c = 0; +} +FX_FLOAT CFX_Matrix::GetXUnit() const { + if (b == 0) { + return (a > 0 ? a : -a); + } + if (a == 0) { + return (b > 0 ? b : -b); + } + return FXSYS_sqrt(a * a + b * b); +} +FX_FLOAT CFX_Matrix::GetYUnit() const { + if (c == 0) { + return (d > 0 ? d : -d); + } + if (d == 0) { + return (c > 0 ? c : -c); + } + return FXSYS_sqrt(c * c + d * d); +} +void CFX_Matrix::GetUnitRect(CFX_RectF& rect) const { + rect.left = rect.top = 0; + rect.width = rect.height = 1; + TransformRect(rect); +} +CFX_FloatRect CFX_Matrix::GetUnitRect() const { + CFX_FloatRect rect(0, 0, 1, 1); + rect.Transform((const CFX_Matrix*)this); + return rect; +} +FX_FLOAT CFX_Matrix::GetUnitArea() const { + FX_FLOAT A = FXSYS_sqrt(a * a + b * b); + FX_FLOAT B = FXSYS_sqrt(c * c + d * d); + FX_FLOAT ac = a + c, bd = b + d; + FX_FLOAT C = FXSYS_sqrt(ac * ac + bd * bd); + FX_FLOAT P = (A + B + C) / 2; + return FXSYS_sqrt(P * (P - A) * (P - B) * (P - C)) * 2; +} +FX_FLOAT CFX_Matrix::TransformXDistance(FX_FLOAT dx) const { + FX_FLOAT fx = a * dx, fy = b * dx; + return FXSYS_sqrt(fx * fx + fy * fy); +} +int32_t CFX_Matrix::TransformXDistance(int32_t dx) const { + FX_FLOAT fx = a * dx, fy = b * dx; + return FXSYS_round(FXSYS_sqrt(fx * fx + fy * fy)); +} +FX_FLOAT CFX_Matrix::TransformYDistance(FX_FLOAT dy) const { + FX_FLOAT fx = c * dy, fy = d * dy; + return FXSYS_sqrt(fx * fx + fy * fy); +} +int32_t CFX_Matrix::TransformYDistance(int32_t dy) const { + FX_FLOAT fx = c * dy, fy = d * dy; + return FXSYS_round(FXSYS_sqrt(fx * fx + fy * fy)); +} +FX_FLOAT CFX_Matrix::TransformDistance(FX_FLOAT dx, FX_FLOAT dy) const { + FX_FLOAT fx = a * dx + c * dy, fy = b * dx + d * dy; + return FXSYS_sqrt(fx * fx + fy * fy); +} +int32_t CFX_Matrix::TransformDistance(int32_t dx, int32_t dy) const { + FX_FLOAT fx = a * dx + c * dy, fy = b * dx + d * dy; + return FXSYS_round(FXSYS_sqrt(fx * fx + fy * fy)); +} +FX_FLOAT CFX_Matrix::TransformDistance(FX_FLOAT distance) const { + return distance * (GetXUnit() + GetYUnit()) / 2; +} +void CFX_Matrix::TransformVector(CFX_VectorF& v) const { + FX_FLOAT fx = a * v.x + c * v.y; + FX_FLOAT fy = b * v.x + d * v.y; + v.x = fx, v.y = fy; +} +void CFX_Matrix::TransformVector(CFX_Vector& v) const { + FX_FLOAT fx = a * v.x + c * v.y; + FX_FLOAT fy = b * v.x + d * v.y; + v.x = FXSYS_round(fx); + v.y = FXSYS_round(fy); +} +void CFX_Matrix::TransformPoint(FX_FLOAT& x, FX_FLOAT& y) const { + FX_FLOAT fx = a * x + c * y + e; + FX_FLOAT fy = b * x + d * y + f; + x = fx, y = fy; +} +void CFX_Matrix::TransformPoint(int32_t& x, int32_t& y) const { + FX_FLOAT fx = a * x + c * y + e; + FX_FLOAT fy = b * x + d * y + f; + x = FXSYS_round(fx); + y = FXSYS_round(fy); +} +void CFX_Matrix::TransformRect(CFX_RectF& rect) const { + FX_FLOAT right = rect.right(), bottom = rect.bottom(); + TransformRect(rect.left, right, bottom, rect.top); + rect.width = right - rect.left; + rect.height = bottom - rect.top; +} +void CFX_Matrix::TransformRect(CFX_Rect& rect) const { + FX_FLOAT left = (FX_FLOAT)rect.left; + FX_FLOAT top = (FX_FLOAT)rect.bottom(); + FX_FLOAT right = (FX_FLOAT)rect.right(); + FX_FLOAT bottom = (FX_FLOAT)rect.top; + TransformRect(left, right, top, bottom); + rect.left = FXSYS_round(left); + rect.top = FXSYS_round(bottom); + rect.width = FXSYS_round(right - left); + rect.height = FXSYS_round(top - bottom); +} +void CFX_Matrix::TransformRect(FX_FLOAT& left, + FX_FLOAT& right, + FX_FLOAT& top, + FX_FLOAT& bottom) const { + FX_FLOAT x[4], y[4]; + x[0] = left; + y[0] = top; + x[1] = left; + y[1] = bottom; + x[2] = right; + y[2] = top; + x[3] = right; + y[3] = bottom; + int i; + for (i = 0; i < 4; i++) { + Transform(x[i], y[i], x[i], y[i]); + } + right = left = x[0]; + top = bottom = y[0]; + for (i = 1; i < 4; i++) { + if (right < x[i]) { + right = x[i]; + } + if (left > x[i]) { + left = x[i]; + } + if (top < y[i]) { + top = y[i]; + } + if (bottom > y[i]) { + bottom = y[i]; + } + } +} diff --git a/core/fxcrt/fx_basic_gcc.cpp b/core/fxcrt/fx_basic_gcc.cpp new file mode 100644 index 0000000000..2c9c54c8b6 --- /dev/null +++ b/core/fxcrt/fx_basic_gcc.cpp @@ -0,0 +1,242 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include +#include +#include + +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_string.h" + +template +IntType FXSYS_StrToInt(const CharType* str) { + if (!str) + return 0; + + bool neg = std::numeric_limits::is_signed && *str == '-'; + if (neg) + str++; + + IntType num = 0; + while (*str && FXSYS_isDecimalDigit(*str)) { + IntType val = FXSYS_toDecimalDigit(*str); + if (num > (std::numeric_limits::max() - val) / 10) + break; + + num = num * 10 + val; + str++; + } + return neg ? -num : num; +} + +template +STR_T FXSYS_IntToStr(T value, STR_T str, int radix) { + if (radix < 2 || radix > 16) { + str[0] = 0; + return str; + } + if (value == 0) { + str[0] = '0'; + str[1] = 0; + return str; + } + int i = 0; + UT uvalue; + if (value < 0) { + str[i++] = '-'; + // Standard trick to avoid undefined behaviour when negating INT_MIN. + uvalue = static_cast(-(value + 1)) + 1; + } else { + uvalue = value; + } + int digits = 1; + T order = uvalue / radix; + while (order > 0) { + digits++; + order = order / radix; + } + for (int d = digits - 1; d > -1; d--) { + str[d + i] = "0123456789abcdef"[uvalue % radix]; + uvalue /= radix; + } + str[digits + i] = 0; + return str; +} + +#ifdef __cplusplus +extern "C" { +#endif +int32_t FXSYS_atoi(const FX_CHAR* str) { + return FXSYS_StrToInt(str); +} +uint32_t FXSYS_atoui(const FX_CHAR* str) { + return FXSYS_StrToInt(str); +} +int32_t FXSYS_wtoi(const FX_WCHAR* str) { + return FXSYS_StrToInt(str); +} +int64_t FXSYS_atoi64(const FX_CHAR* str) { + return FXSYS_StrToInt(str); +} +int64_t FXSYS_wtoi64(const FX_WCHAR* str) { + return FXSYS_StrToInt(str); +} +const FX_CHAR* FXSYS_i64toa(int64_t value, FX_CHAR* str, int radix) { + return FXSYS_IntToStr(value, str, radix); +} +#ifdef __cplusplus +} +#endif +#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ +#ifdef __cplusplus +extern "C" { +#endif +int FXSYS_GetACP() { + return 0; +} +FX_DWORD FXSYS_GetFullPathName(const FX_CHAR* filename, + FX_DWORD buflen, + FX_CHAR* buf, + FX_CHAR** filepart) { + int srclen = FXSYS_strlen(filename); + if (!buf || (int)buflen < srclen + 1) { + return srclen + 1; + } + FXSYS_strcpy(buf, filename); + return srclen; +} +FX_DWORD FXSYS_GetModuleFileName(void* hModule, char* buf, FX_DWORD bufsize) { + return (FX_DWORD)-1; +} +#ifdef __cplusplus +} +#endif +#endif +#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ +#ifdef __cplusplus +extern "C" { +#endif +FXSYS_FILE* FXSYS_wfopen(const FX_WCHAR* filename, const FX_WCHAR* mode) { + return FXSYS_fopen(CFX_ByteString::FromUnicode(filename), + CFX_ByteString::FromUnicode(mode)); +} +char* FXSYS_strlwr(char* str) { + if (!str) { + return NULL; + } + char* s = str; + while (*str) { + *str = FXSYS_tolower(*str); + str++; + } + return s; +} +char* FXSYS_strupr(char* str) { + if (!str) { + return NULL; + } + char* s = str; + while (*str) { + *str = FXSYS_toupper(*str); + str++; + } + return s; +} +FX_WCHAR* FXSYS_wcslwr(FX_WCHAR* str) { + if (!str) { + return NULL; + } + FX_WCHAR* s = str; + while (*str) { + *str = FXSYS_tolower(*str); + str++; + } + return s; +} +FX_WCHAR* FXSYS_wcsupr(FX_WCHAR* str) { + if (!str) { + return NULL; + } + FX_WCHAR* s = str; + while (*str) { + *str = FXSYS_toupper(*str); + str++; + } + return s; +} +int FXSYS_stricmp(const char* dst, const char* src) { + int f, l; + do { + if (((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z')) { + f -= ('A' - 'a'); + } + if (((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z')) { + l -= ('A' - 'a'); + } + } while (f && (f == l)); + return (f - l); +} +int FXSYS_wcsicmp(const FX_WCHAR* dst, const FX_WCHAR* src) { + FX_WCHAR f, l; + do { + if (((f = (FX_WCHAR)(*(dst++))) >= 'A') && (f <= 'Z')) { + f -= ('A' - 'a'); + } + if (((l = (FX_WCHAR)(*(src++))) >= 'A') && (l <= 'Z')) { + l -= ('A' - 'a'); + } + } while (f && (f == l)); + return (f - l); +} +char* FXSYS_itoa(int value, char* str, int radix) { + return FXSYS_IntToStr(value, str, radix); +} +#ifdef __cplusplus +} +#endif +#endif +#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ +#ifdef __cplusplus +extern "C" { +#endif +int FXSYS_WideCharToMultiByte(FX_DWORD codepage, + FX_DWORD dwFlags, + const FX_WCHAR* wstr, + int wlen, + FX_CHAR* buf, + int buflen, + const FX_CHAR* default_str, + int* pUseDefault) { + int len = 0; + for (int i = 0; i < wlen; i++) { + if (wstr[i] < 0x100) { + if (buf && len < buflen) { + buf[len] = (FX_CHAR)wstr[i]; + } + len++; + } + } + return len; +} +int FXSYS_MultiByteToWideChar(FX_DWORD codepage, + FX_DWORD dwFlags, + const FX_CHAR* bstr, + int blen, + FX_WCHAR* buf, + int buflen) { + int wlen = 0; + for (int i = 0; i < blen; i++) { + if (buf && wlen < buflen) { + buf[wlen] = bstr[i]; + } + wlen++; + } + return wlen; +} +#ifdef __cplusplus +} +#endif +#endif diff --git a/core/fxcrt/fx_basic_gcc_unittest.cpp b/core/fxcrt/fx_basic_gcc_unittest.cpp new file mode 100644 index 0000000000..eb1e0669ae --- /dev/null +++ b/core/fxcrt/fx_basic_gcc_unittest.cpp @@ -0,0 +1,88 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fxcrt/fx_system.h" +#include "testing/gtest/include/gtest/gtest.h" + +TEST(fxcrt, FXSYS_atoi) { + EXPECT_EQ(0, FXSYS_atoi("")); + EXPECT_EQ(0, FXSYS_atoi("0")); + EXPECT_EQ(-1, FXSYS_atoi("-1")); + EXPECT_EQ(2345, FXSYS_atoi("2345")); + EXPECT_EQ(2147483647, FXSYS_atoi("2147483647")); + EXPECT_EQ(-2147483647, FXSYS_atoi("-2147483647")); + EXPECT_EQ(9, FXSYS_atoi("9x9")); + + // TODO(dsinclair): These are all wacky ..... + EXPECT_EQ(2147483623, FXSYS_atoi("2147483623423412348")); + EXPECT_EQ(214748364, FXSYS_atoi("2147483648")); + // The digit is parsed as a positive value, so we end up not being able to + // handle the largest possible negative value. + EXPECT_EQ(-214748364, FXSYS_atoi("-2147483648")); +} + +TEST(fxcrt, FXSYS_atoi64) { + EXPECT_EQ(0, FXSYS_atoi64("")); + EXPECT_EQ(0, FXSYS_atoi64("0")); + EXPECT_EQ(-1, FXSYS_atoi64("-1")); + EXPECT_EQ(2345, FXSYS_atoi64("2345")); + EXPECT_EQ(9223372036854775807LL, FXSYS_atoi64("9223372036854775807")); + EXPECT_EQ(-9223372036854775807LL, FXSYS_atoi64("-9223372036854775807")); + EXPECT_EQ(9, FXSYS_atoi64("9x9")); + + // TODO(dsinclair): These are all wacky ..... + EXPECT_EQ(9223372036854712341LL, FXSYS_atoi64("922337203685471234123475807")); + EXPECT_EQ(922337203685477580LL, FXSYS_atoi64("9223372036854775808")); + // The digit is parsed as a positive value, so we end up not being able to + // handle the largest possible negative value. + EXPECT_EQ(-922337203685477580LL, FXSYS_atoi64("-9223372036854775808")); +} + +TEST(fxcrt, FXSYS_wtoi) { + EXPECT_EQ(0, FXSYS_wtoi(L"")); + EXPECT_EQ(0, FXSYS_wtoi(L"0")); + EXPECT_EQ(-1, FXSYS_wtoi(L"-1")); + EXPECT_EQ(2345, FXSYS_wtoi(L"2345")); + EXPECT_EQ(2147483647, FXSYS_wtoi(L"2147483647")); + EXPECT_EQ(-2147483647, FXSYS_wtoi(L"-2147483647")); + EXPECT_EQ(9, FXSYS_wtoi64(L"9x9")); + + // TODO(dsinclair): These are all wacky ..... + EXPECT_EQ(2147483623, FXSYS_wtoi(L"2147483623423412348")); + EXPECT_EQ(214748364, FXSYS_wtoi(L"2147483648")); + // The digit is parsed as a positive value, so we end up not being able to + // handle the largest possible negative value. + EXPECT_EQ(-214748364, FXSYS_wtoi(L"-2147483648")); +} + +TEST(fxcrt, FXSYS_wtoi64) { + EXPECT_EQ(0, FXSYS_wtoi64(L"")); + EXPECT_EQ(0, FXSYS_wtoi64(L"0")); + EXPECT_EQ(-1, FXSYS_wtoi64(L"-1")); + EXPECT_EQ(2345, FXSYS_wtoi64(L"2345")); + EXPECT_EQ(9223372036854775807LL, FXSYS_wtoi64(L"9223372036854775807")); + EXPECT_EQ(-9223372036854775807LL, FXSYS_wtoi64(L"-9223372036854775807")); + EXPECT_EQ(9, FXSYS_wtoi64(L"9x9")); + + // TODO(dsinclair): These are all wacky ..... + EXPECT_EQ(9223372036854712341LL, + FXSYS_wtoi64(L"922337203685471234123475807")); + EXPECT_EQ(922337203685477580LL, FXSYS_wtoi64(L"9223372036854775808")); + // The digit is parsed as a positive value, so we end up not being able to + // handle the largest possible negative value. + EXPECT_EQ(-922337203685477580LL, FXSYS_wtoi64(L"-9223372036854775808")); +} + +TEST(fxcrt, FXSYS_atoui) { + EXPECT_EQ(0, FXSYS_atoui("")); + EXPECT_EQ(0, FXSYS_atoui("0")); + EXPECT_EQ(0, FXSYS_atoui("-1")); + EXPECT_EQ(2345, FXSYS_atoui("2345")); + EXPECT_EQ(4294967295, FXSYS_atoui("4294967295")); + EXPECT_EQ(9, FXSYS_atoui("9x9")); + + // TODO(dsinclair): These are all wacky ..... + EXPECT_EQ(2147483623, FXSYS_atoi("2147483623423412348")); + EXPECT_EQ(429496729, FXSYS_atoi("4294967296")); +} diff --git a/core/fxcrt/fx_basic_list.cpp b/core/fxcrt/fx_basic_list.cpp new file mode 100644 index 0000000000..e893773aad --- /dev/null +++ b/core/fxcrt/fx_basic_list.cpp @@ -0,0 +1,125 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/plex.h" +#include "core/include/fxcrt/fx_basic.h" + +CFX_PtrList::CFX_PtrList(int nBlockSize) + : m_pNodeHead(NULL), + m_pNodeTail(NULL), + m_nCount(0), + m_pNodeFree(NULL), + m_pBlocks(NULL), + m_nBlockSize(nBlockSize) {} +FX_POSITION CFX_PtrList::AddTail(void* newElement) { + CNode* pNewNode = NewNode(m_pNodeTail, NULL); + pNewNode->data = newElement; + if (m_pNodeTail) { + m_pNodeTail->pNext = pNewNode; + } else { + m_pNodeHead = pNewNode; + } + m_pNodeTail = pNewNode; + return (FX_POSITION)pNewNode; +} +FX_POSITION CFX_PtrList::AddHead(void* newElement) { + CNode* pNewNode = NewNode(NULL, m_pNodeHead); + pNewNode->data = newElement; + if (m_pNodeHead) { + m_pNodeHead->pPrev = pNewNode; + } else { + m_pNodeTail = pNewNode; + } + m_pNodeHead = pNewNode; + return (FX_POSITION)pNewNode; +} +FX_POSITION CFX_PtrList::InsertAfter(FX_POSITION position, void* newElement) { + if (!position) { + return AddTail(newElement); + } + CNode* pOldNode = (CNode*)position; + CNode* pNewNode = NewNode(pOldNode, pOldNode->pNext); + pNewNode->data = newElement; + if (pOldNode->pNext) { + pOldNode->pNext->pPrev = pNewNode; + } else { + m_pNodeTail = pNewNode; + } + pOldNode->pNext = pNewNode; + return (FX_POSITION)pNewNode; +} +void CFX_PtrList::RemoveAt(FX_POSITION position) { + CNode* pOldNode = (CNode*)position; + if (pOldNode == m_pNodeHead) { + m_pNodeHead = pOldNode->pNext; + } else { + pOldNode->pPrev->pNext = pOldNode->pNext; + } + if (pOldNode == m_pNodeTail) { + m_pNodeTail = pOldNode->pPrev; + } else { + pOldNode->pNext->pPrev = pOldNode->pPrev; + } + FreeNode(pOldNode); +} +void CFX_PtrList::FreeNode(CFX_PtrList::CNode* pNode) { + pNode->pNext = m_pNodeFree; + m_pNodeFree = pNode; + m_nCount--; + if (m_nCount == 0) { + RemoveAll(); + } +} +void CFX_PtrList::RemoveAll() { + m_nCount = 0; + m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL; + m_pBlocks->FreeDataChain(); + m_pBlocks = NULL; +} +CFX_PtrList::CNode* CFX_PtrList::NewNode(CFX_PtrList::CNode* pPrev, + CFX_PtrList::CNode* pNext) { + if (!m_pNodeFree) { + CFX_Plex* pNewBlock = + CFX_Plex::Create(m_pBlocks, m_nBlockSize, sizeof(CNode)); + CNode* pNode = (CNode*)pNewBlock->data(); + pNode += m_nBlockSize - 1; + for (int i = m_nBlockSize - 1; i >= 0; i--, pNode--) { + pNode->pNext = m_pNodeFree; + m_pNodeFree = pNode; + } + } + CFX_PtrList::CNode* pNode = m_pNodeFree; + m_pNodeFree = m_pNodeFree->pNext; + pNode->pPrev = pPrev; + pNode->pNext = pNext; + m_nCount++; + ASSERT(m_nCount > 0); + pNode->data = 0; + return pNode; +} +CFX_PtrList::~CFX_PtrList() { + RemoveAll(); + ASSERT(m_nCount == 0); +} +FX_POSITION CFX_PtrList::FindIndex(int nIndex) const { + if (nIndex >= m_nCount || nIndex < 0) { + return NULL; + } + CNode* pNode = m_pNodeHead; + while (nIndex--) { + pNode = pNode->pNext; + } + return (FX_POSITION)pNode; +} +FX_POSITION CFX_PtrList::Find(void* searchValue, FX_POSITION startAfter) const { + CNode* pNode = (CNode*)startAfter; + pNode = pNode ? pNode->pNext : m_pNodeHead; + for (; pNode; pNode = pNode->pNext) { + if (pNode->data == searchValue) + return (FX_POSITION)pNode; + } + return NULL; +} diff --git a/core/fxcrt/fx_basic_maps.cpp b/core/fxcrt/fx_basic_maps.cpp new file mode 100644 index 0000000000..eb4f2868f5 --- /dev/null +++ b/core/fxcrt/fx_basic_maps.cpp @@ -0,0 +1,159 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/plex.h" +#include "core/include/fxcrt/fx_basic.h" + +CFX_MapPtrToPtr::CFX_MapPtrToPtr(int nBlockSize) + : m_pHashTable(NULL), + m_nHashTableSize(17), + m_nCount(0), + m_pFreeList(NULL), + m_pBlocks(NULL), + m_nBlockSize(nBlockSize) { + ASSERT(m_nBlockSize > 0); +} +void CFX_MapPtrToPtr::RemoveAll() { + FX_Free(m_pHashTable); + m_pHashTable = NULL; + m_nCount = 0; + m_pFreeList = NULL; + m_pBlocks->FreeDataChain(); + m_pBlocks = NULL; +} +CFX_MapPtrToPtr::~CFX_MapPtrToPtr() { + RemoveAll(); + ASSERT(m_nCount == 0); +} +FX_DWORD CFX_MapPtrToPtr::HashKey(void* key) const { + return ((FX_DWORD)(uintptr_t)key) >> 4; +} +void CFX_MapPtrToPtr::GetNextAssoc(FX_POSITION& rNextPosition, + void*& rKey, + void*& rValue) const { + ASSERT(m_pHashTable); + CAssoc* pAssocRet = (CAssoc*)rNextPosition; + ASSERT(pAssocRet); + if (pAssocRet == (CAssoc*)-1) { + for (FX_DWORD nBucket = 0; nBucket < m_nHashTableSize; nBucket++) { + if ((pAssocRet = m_pHashTable[nBucket])) + break; + } + ASSERT(pAssocRet); + } + CAssoc* pAssocNext; + if ((pAssocNext = pAssocRet->pNext) == NULL) { + for (FX_DWORD nBucket = (HashKey(pAssocRet->key) % m_nHashTableSize) + 1; + nBucket < m_nHashTableSize; nBucket++) { + if ((pAssocNext = m_pHashTable[nBucket])) { + break; + } + } + } + rNextPosition = (FX_POSITION)pAssocNext; + rKey = pAssocRet->key; + rValue = pAssocRet->value; +} +FX_BOOL CFX_MapPtrToPtr::Lookup(void* key, void*& rValue) const { + FX_DWORD nHash; + CAssoc* pAssoc = GetAssocAt(key, nHash); + if (!pAssoc) { + return FALSE; + } + rValue = pAssoc->value; + return TRUE; +} +void* CFX_MapPtrToPtr::GetValueAt(void* key) const { + FX_DWORD nHash; + CAssoc* pAssoc = GetAssocAt(key, nHash); + if (!pAssoc) { + return NULL; + } + return pAssoc->value; +} +void*& CFX_MapPtrToPtr::operator[](void* key) { + FX_DWORD nHash; + CAssoc* pAssoc; + if ((pAssoc = GetAssocAt(key, nHash)) == NULL) { + if (!m_pHashTable) { + InitHashTable(m_nHashTableSize); + } + pAssoc = NewAssoc(); + pAssoc->key = key; + pAssoc->pNext = m_pHashTable[nHash]; + m_pHashTable[nHash] = pAssoc; + } + return pAssoc->value; +} +CFX_MapPtrToPtr::CAssoc* CFX_MapPtrToPtr::GetAssocAt(void* key, + FX_DWORD& nHash) const { + nHash = HashKey(key) % m_nHashTableSize; + if (!m_pHashTable) { + return NULL; + } + CAssoc* pAssoc; + for (pAssoc = m_pHashTable[nHash]; pAssoc; pAssoc = pAssoc->pNext) { + if (pAssoc->key == key) + return pAssoc; + } + return NULL; +} +CFX_MapPtrToPtr::CAssoc* CFX_MapPtrToPtr::NewAssoc() { + if (!m_pFreeList) { + CFX_Plex* newBlock = CFX_Plex::Create(m_pBlocks, m_nBlockSize, + sizeof(CFX_MapPtrToPtr::CAssoc)); + CFX_MapPtrToPtr::CAssoc* pAssoc = + (CFX_MapPtrToPtr::CAssoc*)newBlock->data(); + pAssoc += m_nBlockSize - 1; + for (int i = m_nBlockSize - 1; i >= 0; i--, pAssoc--) { + pAssoc->pNext = m_pFreeList; + m_pFreeList = pAssoc; + } + } + CFX_MapPtrToPtr::CAssoc* pAssoc = m_pFreeList; + m_pFreeList = m_pFreeList->pNext; + m_nCount++; + ASSERT(m_nCount > 0); + pAssoc->key = 0; + pAssoc->value = 0; + return pAssoc; +} +void CFX_MapPtrToPtr::InitHashTable(FX_DWORD nHashSize, FX_BOOL bAllocNow) { + ASSERT(m_nCount == 0); + ASSERT(nHashSize > 0); + FX_Free(m_pHashTable); + m_pHashTable = NULL; + if (bAllocNow) { + m_pHashTable = FX_Alloc(CAssoc*, nHashSize); + } + m_nHashTableSize = nHashSize; +} +FX_BOOL CFX_MapPtrToPtr::RemoveKey(void* key) { + if (!m_pHashTable) { + return FALSE; + } + CAssoc** ppAssocPrev; + ppAssocPrev = &m_pHashTable[HashKey(key) % m_nHashTableSize]; + CAssoc* pAssoc; + for (pAssoc = *ppAssocPrev; pAssoc; pAssoc = pAssoc->pNext) { + if (pAssoc->key == key) { + *ppAssocPrev = pAssoc->pNext; + FreeAssoc(pAssoc); + return TRUE; + } + ppAssocPrev = &pAssoc->pNext; + } + return FALSE; +} +void CFX_MapPtrToPtr::FreeAssoc(CFX_MapPtrToPtr::CAssoc* pAssoc) { + pAssoc->pNext = m_pFreeList; + m_pFreeList = pAssoc; + m_nCount--; + ASSERT(m_nCount >= 0); + if (m_nCount == 0) { + RemoveAll(); + } +} diff --git a/core/fxcrt/fx_basic_memmgr.cpp b/core/fxcrt/fx_basic_memmgr.cpp new file mode 100644 index 0000000000..a0af6aef6d --- /dev/null +++ b/core/fxcrt/fx_basic_memmgr.cpp @@ -0,0 +1,25 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include // For abort(). + +#include "core/include/fxcrt/fx_memory.h" + +void* FXMEM_DefaultAlloc(size_t byte_size, int flags) { + return (void*)malloc(byte_size); +} +void* FXMEM_DefaultRealloc(void* pointer, size_t new_size, int flags) { + return realloc(pointer, new_size); +} +void FXMEM_DefaultFree(void* pointer, int flags) { + free(pointer); +} + +NEVER_INLINE void FX_OutOfMemoryTerminate() { + // Termimate cleanly if we can, else crash at a specific address (0xbd). + abort(); + reinterpret_cast(0xbd)(); +} diff --git a/core/fxcrt/fx_basic_memmgr_unittest.cpp b/core/fxcrt/fx_basic_memmgr_unittest.cpp new file mode 100644 index 0000000000..9821ca9057 --- /dev/null +++ b/core/fxcrt/fx_basic_memmgr_unittest.cpp @@ -0,0 +1,70 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include + +#include "core/include/fxcrt/fx_memory.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +const size_t kMaxByteAlloc = std::numeric_limits::max(); +const size_t kMaxIntAlloc = kMaxByteAlloc / sizeof(int); +const size_t kOverflowIntAlloc = kMaxIntAlloc + 100; +const size_t kWidth = 640; +const size_t kOverflowIntAlloc2D = kMaxIntAlloc / kWidth + 10; + +} // namespace + +// TODO(tsepez): re-enable OOM tests if we can find a way to +// prevent it from hosing the bots. +TEST(fxcrt, DISABLED_FX_AllocOOM) { + EXPECT_DEATH_IF_SUPPORTED((void)FX_Alloc(int, kMaxIntAlloc), ""); + + int* ptr = FX_Alloc(int, 1); + EXPECT_TRUE(ptr); + EXPECT_DEATH_IF_SUPPORTED((void)FX_Realloc(int, ptr, kMaxIntAlloc), ""); + FX_Free(ptr); +} + +TEST(fxcrt, FX_AllocOverflow) { + EXPECT_DEATH_IF_SUPPORTED((void)FX_Alloc(int, kOverflowIntAlloc), ""); + + int* ptr = FX_Alloc(int, 1); + EXPECT_TRUE(ptr); + EXPECT_DEATH_IF_SUPPORTED((void)FX_Realloc(int, ptr, kOverflowIntAlloc), ""); + FX_Free(ptr); +} + +TEST(fxcrt, FX_AllocOverflow2D) { + EXPECT_DEATH_IF_SUPPORTED((void)FX_Alloc2D(int, kWidth, kOverflowIntAlloc2D), + ""); +} + +TEST(fxcrt, DISABLED_FX_TryAllocOOM) { + EXPECT_FALSE(FX_TryAlloc(int, kMaxIntAlloc)); + + int* ptr = FX_Alloc(int, 1); + EXPECT_TRUE(ptr); + EXPECT_FALSE(FX_TryRealloc(int, ptr, kMaxIntAlloc)); + FX_Free(ptr); +} + +TEST(fxcrt, FX_TryAllocOverflow) { + EXPECT_FALSE(FX_TryAlloc(int, kOverflowIntAlloc)); + + int* ptr = FX_Alloc(int, 1); + EXPECT_TRUE(ptr); + EXPECT_FALSE(FX_TryRealloc(int, ptr, kOverflowIntAlloc)); + FX_Free(ptr); +} + +TEST(fxcrt, DISABLED_FXMEM_DefaultOOM) { + EXPECT_FALSE(FXMEM_DefaultAlloc(kMaxByteAlloc, 0)); + + void* ptr = FXMEM_DefaultAlloc(1, 0); + EXPECT_TRUE(ptr); + EXPECT_FALSE(FXMEM_DefaultRealloc(ptr, kMaxByteAlloc, 0)); + FXMEM_DefaultFree(ptr, 0); +} diff --git a/core/fxcrt/fx_basic_plex.cpp b/core/fxcrt/fx_basic_plex.cpp new file mode 100644 index 0000000000..1cddbc32a0 --- /dev/null +++ b/core/fxcrt/fx_basic_plex.cpp @@ -0,0 +1,26 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/plex.h" +#include "core/include/fxcrt/fx_memory.h" + +CFX_Plex* CFX_Plex::Create(CFX_Plex*& pHead, + FX_DWORD nMax, + FX_DWORD cbElement) { + CFX_Plex* p = + (CFX_Plex*)FX_Alloc(uint8_t, sizeof(CFX_Plex) + nMax * cbElement); + p->pNext = pHead; + pHead = p; + return p; +} +void CFX_Plex::FreeDataChain() { + CFX_Plex* p = this; + while (p) { + CFX_Plex* old = p; + p = p->pNext; + FX_Free(old); + } +} diff --git a/core/fxcrt/fx_basic_utf.cpp b/core/fxcrt/fx_basic_utf.cpp new file mode 100644 index 0000000000..3625feb130 --- /dev/null +++ b/core/fxcrt/fx_basic_utf.cpp @@ -0,0 +1,86 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_basic.h" + +void CFX_UTF8Decoder::Clear() { + m_Buffer.Clear(); + m_PendingBytes = 0; +} +void CFX_UTF8Decoder::AppendChar(FX_DWORD ch) { + m_Buffer.AppendChar((FX_WCHAR)ch); +} +void CFX_UTF8Decoder::Input(uint8_t byte) { + if (byte < 0x80) { + m_PendingBytes = 0; + m_Buffer.AppendChar(byte); + } else if (byte < 0xc0) { + if (m_PendingBytes == 0) { + return; + } + m_PendingBytes--; + m_PendingChar |= (byte & 0x3f) << (m_PendingBytes * 6); + if (m_PendingBytes == 0) { + AppendChar(m_PendingChar); + } + } else if (byte < 0xe0) { + m_PendingBytes = 1; + m_PendingChar = (byte & 0x1f) << 6; + } else if (byte < 0xf0) { + m_PendingBytes = 2; + m_PendingChar = (byte & 0x0f) << 12; + } else if (byte < 0xf8) { + m_PendingBytes = 3; + m_PendingChar = (byte & 0x07) << 18; + } else if (byte < 0xfc) { + m_PendingBytes = 4; + m_PendingChar = (byte & 0x03) << 24; + } else if (byte < 0xfe) { + m_PendingBytes = 5; + m_PendingChar = (byte & 0x01) << 30; + } +} +void CFX_UTF8Encoder::Input(FX_WCHAR unicode) { + if ((FX_DWORD)unicode < 0x80) { + m_Buffer.AppendChar(unicode); + } else { + if ((FX_DWORD)unicode >= 0x80000000) { + return; + } + int nbytes = 0; + if ((FX_DWORD)unicode < 0x800) { + nbytes = 2; + } else if ((FX_DWORD)unicode < 0x10000) { + nbytes = 3; + } else if ((FX_DWORD)unicode < 0x200000) { + nbytes = 4; + } else if ((FX_DWORD)unicode < 0x4000000) { + nbytes = 5; + } else { + nbytes = 6; + } + static uint8_t prefix[] = {0xc0, 0xe0, 0xf0, 0xf8, 0xfc}; + int order = 1 << ((nbytes - 1) * 6); + int code = unicode; + m_Buffer.AppendChar(prefix[nbytes - 2] | (code / order)); + for (int i = 0; i < nbytes - 1; i++) { + code = code % order; + order >>= 6; + m_Buffer.AppendChar(0x80 | (code / order)); + } + } +} +CFX_ByteString FX_UTF8Encode(const FX_WCHAR* pwsStr, FX_STRSIZE len) { + FXSYS_assert(pwsStr); + if (len < 0) { + len = FXSYS_wcslen(pwsStr); + } + CFX_UTF8Encoder encoder; + while (len-- > 0) { + encoder.Input(*pwsStr++); + } + return encoder.GetResult(); +} diff --git a/core/fxcrt/fx_basic_util.cpp b/core/fxcrt/fx_basic_util.cpp new file mode 100644 index 0000000000..2422212d59 --- /dev/null +++ b/core/fxcrt/fx_basic_util.cpp @@ -0,0 +1,367 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_ext.h" + +#include + +#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ +#include +#include +#else +#include +#endif + +CFX_PrivateData::CFX_PrivateData() {} + +CFX_PrivateData::~CFX_PrivateData() { + ClearAll(); +} +void FX_PRIVATEDATA::FreeData() { + if (!m_pData) { + return; + } + if (m_bSelfDestruct) { + delete (CFX_DestructObject*)m_pData; + } else if (m_pCallback) { + m_pCallback(m_pData); + } +} +void CFX_PrivateData::AddData(void* pModuleId, + void* pData, + PD_CALLBACK_FREEDATA callback, + FX_BOOL bSelfDestruct) { + if (!pModuleId) { + return; + } + FX_PRIVATEDATA* pList = m_DataList.GetData(); + int count = m_DataList.GetSize(); + for (int i = 0; i < count; i++) { + if (pList[i].m_pModuleId == pModuleId) { + pList[i].FreeData(); + pList[i].m_pData = pData; + pList[i].m_pCallback = callback; + return; + } + } + FX_PRIVATEDATA data = {pModuleId, pData, callback, bSelfDestruct}; + m_DataList.Add(data); +} +void CFX_PrivateData::SetPrivateData(void* pModuleId, + void* pData, + PD_CALLBACK_FREEDATA callback) { + AddData(pModuleId, pData, callback, FALSE); +} +void CFX_PrivateData::SetPrivateObj(void* pModuleId, CFX_DestructObject* pObj) { + AddData(pModuleId, pObj, NULL, TRUE); +} +FX_BOOL CFX_PrivateData::RemovePrivateData(void* pModuleId) { + if (!pModuleId) { + return FALSE; + } + FX_PRIVATEDATA* pList = m_DataList.GetData(); + int count = m_DataList.GetSize(); + for (int i = 0; i < count; i++) { + if (pList[i].m_pModuleId == pModuleId) { + m_DataList.RemoveAt(i); + return TRUE; + } + } + return FALSE; +} +void* CFX_PrivateData::GetPrivateData(void* pModuleId) { + if (!pModuleId) { + return NULL; + } + FX_PRIVATEDATA* pList = m_DataList.GetData(); + int count = m_DataList.GetSize(); + for (int i = 0; i < count; i++) { + if (pList[i].m_pModuleId == pModuleId) { + return pList[i].m_pData; + } + } + return NULL; +} +void CFX_PrivateData::ClearAll() { + FX_PRIVATEDATA* pList = m_DataList.GetData(); + int count = m_DataList.GetSize(); + for (int i = 0; i < count; i++) { + pList[i].FreeData(); + } + m_DataList.RemoveAll(); +} +void FX_atonum(const CFX_ByteStringC& strc, FX_BOOL& bInteger, void* pData) { + if (!FXSYS_memchr(strc.GetPtr(), '.', strc.GetLength())) { + bInteger = TRUE; + int cc = 0, integer = 0; + const FX_CHAR* str = strc.GetCStr(); + int len = strc.GetLength(); + FX_BOOL bNegative = FALSE; + if (str[0] == '+') { + cc++; + } else if (str[0] == '-') { + bNegative = TRUE; + cc++; + } + while (cc < len && std::isdigit(str[cc])) { + // TODO(dsinclair): This is not the right way to handle overflow. + integer = integer * 10 + FXSYS_toDecimalDigit(str[cc]); + if (integer < 0) + break; + cc++; + } + if (bNegative) { + integer = -integer; + } + *(int*)pData = integer; + } else { + bInteger = FALSE; + *(FX_FLOAT*)pData = FX_atof(strc); + } +} +FX_FLOAT FX_atof(const CFX_ByteStringC& strc) { + if (strc.GetLength() == 0) { + return 0.0; + } + int cc = 0; + FX_BOOL bNegative = FALSE; + const FX_CHAR* str = strc.GetCStr(); + int len = strc.GetLength(); + if (str[0] == '+') { + cc++; + } else if (str[0] == '-') { + bNegative = TRUE; + cc++; + } + while (cc < len) { + if (str[cc] != '+' && str[cc] != '-') { + break; + } + cc++; + } + FX_FLOAT value = 0; + while (cc < len) { + if (str[cc] == '.') { + break; + } + value = value * 10 + FXSYS_toDecimalDigit(str[cc]); + cc++; + } + static const FX_FLOAT fraction_scales[] = { + 0.1f, 0.01f, 0.001f, 0.0001f, + 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, + 0.000000001f, 0.0000000001f, 0.00000000001f}; + int scale = 0; + if (cc < len && str[cc] == '.') { + cc++; + while (cc < len) { + value += fraction_scales[scale] * FXSYS_toDecimalDigit(str[cc]); + scale++; + if (scale == sizeof fraction_scales / sizeof(FX_FLOAT)) { + break; + } + cc++; + } + } + return bNegative ? -value : value; +} + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ && _MSC_VER < 1900 +void FXSYS_snprintf(char* str, + size_t size, + _Printf_format_string_ const char* fmt, + ...) { + va_list ap; + va_start(ap, fmt); + FXSYS_vsnprintf(str, size, fmt, ap); + va_end(ap); +} +void FXSYS_vsnprintf(char* str, size_t size, const char* fmt, va_list ap) { + (void)_vsnprintf(str, size, fmt, ap); + if (size) { + str[size - 1] = 0; + } +} +#endif // _FXM_PLATFORM_WINDOWS_ && _MSC_VER < 1900 + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +class CFindFileData { + public: + virtual ~CFindFileData() {} + HANDLE m_Handle; + FX_BOOL m_bEnd; +}; +class CFindFileDataA : public CFindFileData { + public: + virtual ~CFindFileDataA() {} + WIN32_FIND_DATAA m_FindData; +}; +class CFindFileDataW : public CFindFileData { + public: + virtual ~CFindFileDataW() {} + WIN32_FIND_DATAW m_FindData; +}; +#endif +void* FX_OpenFolder(const FX_CHAR* path) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +#ifndef _WIN32_WCE + CFindFileDataA* pData = new CFindFileDataA; + pData->m_Handle = + FindFirstFileExA(CFX_ByteString(path) + "/*.*", FindExInfoStandard, + &pData->m_FindData, FindExSearchNameMatch, NULL, 0); +#else + CFindFileDataW* pData = new CFindFileDataW; + pData->m_Handle = FindFirstFileW(CFX_WideString::FromLocal(path) + L"/*.*", + &pData->m_FindData); +#endif + if (pData->m_Handle == INVALID_HANDLE_VALUE) { + delete pData; + return NULL; + } + pData->m_bEnd = FALSE; + return pData; +#else + DIR* dir = opendir(path); + return dir; +#endif +} +void* FX_OpenFolder(const FX_WCHAR* path) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + CFindFileDataW* pData = new CFindFileDataW; + pData->m_Handle = FindFirstFileExW((CFX_WideString(path) + L"/*.*").c_str(), + FindExInfoStandard, &pData->m_FindData, + FindExSearchNameMatch, NULL, 0); + if (pData->m_Handle == INVALID_HANDLE_VALUE) { + delete pData; + return NULL; + } + pData->m_bEnd = FALSE; + return pData; +#else + DIR* dir = opendir(CFX_ByteString::FromUnicode(path)); + return dir; +#endif +} +FX_BOOL FX_GetNextFile(void* handle, + CFX_ByteString& filename, + FX_BOOL& bFolder) { + if (!handle) { + return FALSE; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +#ifndef _WIN32_WCE + CFindFileDataA* pData = (CFindFileDataA*)handle; + if (pData->m_bEnd) { + return FALSE; + } + filename = pData->m_FindData.cFileName; + bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; + if (!FindNextFileA(pData->m_Handle, &pData->m_FindData)) { + pData->m_bEnd = TRUE; + } + return TRUE; +#else + CFindFileDataW* pData = (CFindFileDataW*)handle; + if (pData->m_bEnd) { + return FALSE; + } + filename = CFX_ByteString::FromUnicode(pData->m_FindData.cFileName); + bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; + if (!FindNextFileW(pData->m_Handle, &pData->m_FindData)) { + pData->m_bEnd = TRUE; + } + return TRUE; +#endif +#elif defined(__native_client__) + abort(); + return FALSE; +#else + struct dirent* de = readdir((DIR*)handle); + if (!de) { + return FALSE; + } + filename = de->d_name; + bFolder = de->d_type == DT_DIR; + return TRUE; +#endif +} +FX_BOOL FX_GetNextFile(void* handle, + CFX_WideString& filename, + FX_BOOL& bFolder) { + if (!handle) { + return FALSE; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + CFindFileDataW* pData = (CFindFileDataW*)handle; + if (pData->m_bEnd) { + return FALSE; + } + filename = pData->m_FindData.cFileName; + bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; + if (!FindNextFileW(pData->m_Handle, &pData->m_FindData)) { + pData->m_bEnd = TRUE; + } + return TRUE; +#elif defined(__native_client__) + abort(); + return FALSE; +#else + struct dirent* de = readdir((DIR*)handle); + if (!de) { + return FALSE; + } + filename = CFX_WideString::FromLocal(de->d_name); + bFolder = de->d_type == DT_DIR; + return TRUE; +#endif +} +void FX_CloseFolder(void* handle) { + if (!handle) { + return; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + CFindFileData* pData = (CFindFileData*)handle; + FindClose(pData->m_Handle); + delete pData; +#else + closedir((DIR*)handle); +#endif +} +FX_WCHAR FX_GetFolderSeparator() { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + return '\\'; +#else + return '/'; +#endif +} + +CFX_Matrix_3by3 CFX_Matrix_3by3::Inverse() { + FX_FLOAT det = + a * (e * i - f * h) - b * (i * d - f * g) + c * (d * h - e * g); + if (FXSYS_fabs(det) < 0.0000001) + return CFX_Matrix_3by3(); + + return CFX_Matrix_3by3( + (e * i - f * h) / det, -(b * i - c * h) / det, (b * f - c * e) / det, + -(d * i - f * g) / det, (a * i - c * g) / det, -(a * f - c * d) / det, + (d * h - e * g) / det, -(a * h - b * g) / det, (a * e - b * d) / det); +} + +CFX_Matrix_3by3 CFX_Matrix_3by3::Multiply(const CFX_Matrix_3by3& m) { + return CFX_Matrix_3by3( + a * m.a + b * m.d + c * m.g, a * m.b + b * m.e + c * m.h, + a * m.c + b * m.f + c * m.i, d * m.a + e * m.d + f * m.g, + d * m.b + e * m.e + f * m.h, d * m.c + e * m.f + f * m.i, + g * m.a + h * m.d + i * m.g, g * m.b + h * m.e + i * m.h, + g * m.c + h * m.f + i * m.i); +} + +CFX_Vector_3by1 CFX_Matrix_3by3::TransformVector(const CFX_Vector_3by1& v) { + return CFX_Vector_3by1(a * v.a + b * v.b + c * v.c, + d * v.a + e * v.b + f * v.c, + g * v.a + h * v.b + i * v.c); +} diff --git a/core/fxcrt/fx_basic_wstring.cpp b/core/fxcrt/fx_basic_wstring.cpp new file mode 100644 index 0000000000..95b761bd09 --- /dev/null +++ b/core/fxcrt/fx_basic_wstring.cpp @@ -0,0 +1,1050 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include +#include + +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_ext.h" +#include "third_party/base/numerics/safe_math.h" + +namespace { + +#ifndef NDEBUG +bool IsValidCodePage(FX_WORD codepage) { + switch (codepage) { + case 0: + case 932: + case 936: + case 949: + case 950: + return true; + + default: + return false; + } +} +#endif + +} // namespace + +// static +CFX_WideString::StringData* CFX_WideString::StringData::Create(int nLen) { + // TODO(palmer): |nLen| should really be declared as |size_t|, or + // at least unsigned. + if (nLen == 0 || nLen < 0) { + return NULL; + } + + // Fixed portion of header plus a NUL wide char not in m_nAllocLength. + int overhead = offsetof(StringData, m_String) + sizeof(FX_WCHAR); + pdfium::base::CheckedNumeric iSize = nLen; + iSize *= sizeof(FX_WCHAR); + iSize += overhead; + + // Now round to an 8-byte boundary. We'd expect that this is the minimum + // granularity of any of the underlying allocators, so there may be cases + // where we can save a re-alloc when adding a few characters to a string + // by using this otherwise wasted space. + iSize += 7; + int totalSize = iSize.ValueOrDie() & ~7; + int usableLen = (totalSize - overhead) / sizeof(FX_WCHAR); + FXSYS_assert(usableLen >= nLen); + + void* pData = FX_Alloc(uint8_t, totalSize); + return new (pData) StringData(nLen, usableLen); +} +CFX_WideString::~CFX_WideString() { + if (m_pData) { + m_pData->Release(); + } +} +CFX_WideString::CFX_WideString(const CFX_WideString& stringSrc) { + if (!stringSrc.m_pData) { + m_pData = NULL; + return; + } + if (stringSrc.m_pData->m_nRefs >= 0) { + m_pData = stringSrc.m_pData; + m_pData->Retain(); + } else { + m_pData = NULL; + *this = stringSrc; + } +} +CFX_WideString::CFX_WideString(const FX_WCHAR* lpsz, FX_STRSIZE nLen) { + if (nLen < 0) { + nLen = lpsz ? FXSYS_wcslen(lpsz) : 0; + } + if (nLen) { + m_pData = StringData::Create(nLen); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, lpsz, nLen * sizeof(FX_WCHAR)); + } + } else { + m_pData = NULL; + } +} +CFX_WideString::CFX_WideString(FX_WCHAR ch) { + m_pData = StringData::Create(1); + if (m_pData) { + m_pData->m_String[0] = ch; + } +} +CFX_WideString::CFX_WideString(const CFX_WideStringC& str) { + if (str.IsEmpty()) { + m_pData = NULL; + return; + } + m_pData = StringData::Create(str.GetLength()); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, str.GetPtr(), + str.GetLength() * sizeof(FX_WCHAR)); + } +} +CFX_WideString::CFX_WideString(const CFX_WideStringC& str1, + const CFX_WideStringC& str2) { + m_pData = NULL; + int nNewLen = str1.GetLength() + str2.GetLength(); + if (nNewLen == 0) { + return; + } + m_pData = StringData::Create(nNewLen); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, str1.GetPtr(), + str1.GetLength() * sizeof(FX_WCHAR)); + FXSYS_memcpy(m_pData->m_String + str1.GetLength(), str2.GetPtr(), + str2.GetLength() * sizeof(FX_WCHAR)); + } +} +void CFX_WideString::ReleaseBuffer(FX_STRSIZE nNewLength) { + if (!m_pData) { + return; + } + CopyBeforeWrite(); + if (nNewLength == -1) { + nNewLength = m_pData ? FXSYS_wcslen(m_pData->m_String) : 0; + } + if (nNewLength == 0) { + Empty(); + return; + } + FXSYS_assert(nNewLength <= m_pData->m_nAllocLength); + m_pData->m_nDataLength = nNewLength; + m_pData->m_String[nNewLength] = 0; +} +const CFX_WideString& CFX_WideString::operator=(const FX_WCHAR* lpsz) { + if (!lpsz || lpsz[0] == 0) { + Empty(); + } else { + AssignCopy(FXSYS_wcslen(lpsz), lpsz); + } + return *this; +} +const CFX_WideString& CFX_WideString::operator=( + const CFX_WideStringC& stringSrc) { + if (stringSrc.IsEmpty()) { + Empty(); + } else { + AssignCopy(stringSrc.GetLength(), stringSrc.GetPtr()); + } + return *this; +} +const CFX_WideString& CFX_WideString::operator=( + const CFX_WideString& stringSrc) { + if (m_pData == stringSrc.m_pData) { + return *this; + } + if (stringSrc.IsEmpty()) { + Empty(); + } else if ((m_pData && m_pData->m_nRefs < 0) || + (stringSrc.m_pData && stringSrc.m_pData->m_nRefs < 0)) { + AssignCopy(stringSrc.m_pData->m_nDataLength, stringSrc.m_pData->m_String); + } else { + Empty(); + m_pData = stringSrc.m_pData; + if (m_pData) { + m_pData->Retain(); + } + } + return *this; +} +const CFX_WideString& CFX_WideString::operator+=(FX_WCHAR ch) { + ConcatInPlace(1, &ch); + return *this; +} +const CFX_WideString& CFX_WideString::operator+=(const FX_WCHAR* lpsz) { + if (lpsz) { + ConcatInPlace(FXSYS_wcslen(lpsz), lpsz); + } + return *this; +} +const CFX_WideString& CFX_WideString::operator+=(const CFX_WideString& str) { + if (!str.m_pData) { + return *this; + } + ConcatInPlace(str.m_pData->m_nDataLength, str.m_pData->m_String); + return *this; +} +const CFX_WideString& CFX_WideString::operator+=(const CFX_WideStringC& str) { + if (str.IsEmpty()) { + return *this; + } + ConcatInPlace(str.GetLength(), str.GetPtr()); + return *this; +} +bool CFX_WideString::Equal(const wchar_t* ptr) const { + if (!m_pData) { + return !ptr || ptr[0] == L'\0'; + } + if (!ptr) { + return m_pData->m_nDataLength == 0; + } + return wcslen(ptr) == static_cast(m_pData->m_nDataLength) && + wmemcmp(ptr, m_pData->m_String, m_pData->m_nDataLength) == 0; +} +bool CFX_WideString::Equal(const CFX_WideStringC& str) const { + if (!m_pData) { + return str.IsEmpty(); + } + return str.GetLength() == m_pData->m_nDataLength && + wmemcmp(str.GetPtr(), m_pData->m_String, m_pData->m_nDataLength) == 0; +} +bool CFX_WideString::Equal(const CFX_WideString& other) const { + if (IsEmpty()) { + return other.IsEmpty(); + } + if (other.IsEmpty()) { + return false; + } + return other.m_pData->m_nDataLength == m_pData->m_nDataLength && + wmemcmp(other.m_pData->m_String, m_pData->m_String, + m_pData->m_nDataLength) == 0; +} +void CFX_WideString::Empty() { + if (m_pData) { + m_pData->Release(); + m_pData = NULL; + } +} +void CFX_WideString::ConcatInPlace(FX_STRSIZE nSrcLen, + const FX_WCHAR* lpszSrcData) { + if (nSrcLen == 0 || !lpszSrcData) { + return; + } + if (!m_pData) { + m_pData = StringData::Create(nSrcLen); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen * sizeof(FX_WCHAR)); + } + return; + } + if (m_pData->m_nRefs > 1 || + m_pData->m_nDataLength + nSrcLen > m_pData->m_nAllocLength) { + ConcatCopy(m_pData->m_nDataLength, m_pData->m_String, nSrcLen, lpszSrcData); + } else { + FXSYS_memcpy(m_pData->m_String + m_pData->m_nDataLength, lpszSrcData, + nSrcLen * sizeof(FX_WCHAR)); + m_pData->m_nDataLength += nSrcLen; + m_pData->m_String[m_pData->m_nDataLength] = 0; + } +} +void CFX_WideString::ConcatCopy(FX_STRSIZE nSrc1Len, + const FX_WCHAR* lpszSrc1Data, + FX_STRSIZE nSrc2Len, + const FX_WCHAR* lpszSrc2Data) { + FX_STRSIZE nNewLen = nSrc1Len + nSrc2Len; + if (nNewLen <= 0) { + return; + } + // Don't release until done copying, might be one of the arguments. + StringData* pOldData = m_pData; + m_pData = StringData::Create(nNewLen); + if (m_pData) { + wmemcpy(m_pData->m_String, lpszSrc1Data, nSrc1Len); + wmemcpy(m_pData->m_String + nSrc1Len, lpszSrc2Data, nSrc2Len); + } + pOldData->Release(); +} +void CFX_WideString::CopyBeforeWrite() { + if (!m_pData || m_pData->m_nRefs <= 1) { + return; + } + StringData* pData = m_pData; + m_pData->Release(); + FX_STRSIZE nDataLength = pData->m_nDataLength; + m_pData = StringData::Create(nDataLength); + if (m_pData) { + FXSYS_memcpy(m_pData->m_String, pData->m_String, + (nDataLength + 1) * sizeof(FX_WCHAR)); + } +} +void CFX_WideString::AllocBeforeWrite(FX_STRSIZE nLen) { + if (m_pData && m_pData->m_nRefs <= 1 && m_pData->m_nAllocLength >= nLen) { + return; + } + Empty(); + m_pData = StringData::Create(nLen); +} +void CFX_WideString::AssignCopy(FX_STRSIZE nSrcLen, + const FX_WCHAR* lpszSrcData) { + AllocBeforeWrite(nSrcLen); + FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen * sizeof(FX_WCHAR)); + m_pData->m_nDataLength = nSrcLen; + m_pData->m_String[nSrcLen] = 0; +} +int CFX_WideString::Compare(const FX_WCHAR* lpsz) const { + if (m_pData) + return FXSYS_wcscmp(m_pData->m_String, lpsz); + return (!lpsz || lpsz[0] == 0) ? 0 : -1; +} +CFX_ByteString CFX_WideString::UTF8Encode() const { + return FX_UTF8Encode(*this); +} +CFX_ByteString CFX_WideString::UTF16LE_Encode() const { + if (!m_pData) { + return CFX_ByteString("\0\0", 2); + } + int len = m_pData->m_nDataLength; + CFX_ByteString result; + FX_CHAR* buffer = result.GetBuffer(len * 2 + 2); + for (int i = 0; i < len; i++) { + buffer[i * 2] = m_pData->m_String[i] & 0xff; + buffer[i * 2 + 1] = m_pData->m_String[i] >> 8; + } + buffer[len * 2] = 0; + buffer[len * 2 + 1] = 0; + result.ReleaseBuffer(len * 2 + 2); + return result; +} + +void CFX_WideString::Reserve(FX_STRSIZE len) { + GetBuffer(len); + ReleaseBuffer(GetLength()); +} +FX_WCHAR* CFX_WideString::GetBuffer(FX_STRSIZE nMinBufLength) { + if (!m_pData && nMinBufLength == 0) { + return NULL; + } + if (m_pData && m_pData->m_nRefs <= 1 && + m_pData->m_nAllocLength >= nMinBufLength) { + return m_pData->m_String; + } + if (!m_pData) { + m_pData = StringData::Create(nMinBufLength); + if (!m_pData) { + return NULL; + } + m_pData->m_nDataLength = 0; + m_pData->m_String[0] = 0; + return m_pData->m_String; + } + StringData* pOldData = m_pData; + FX_STRSIZE nOldLen = pOldData->m_nDataLength; + if (nMinBufLength < nOldLen) { + nMinBufLength = nOldLen; + } + m_pData = StringData::Create(nMinBufLength); + if (!m_pData) { + return NULL; + } + FXSYS_memcpy(m_pData->m_String, pOldData->m_String, + (nOldLen + 1) * sizeof(FX_WCHAR)); + m_pData->m_nDataLength = nOldLen; + pOldData->Release(); + return m_pData->m_String; +} + +// static +CFX_WideString CFX_WideString::FromLocal(const CFX_ByteString& str) { + return FromCodePage(str, 0); +} + +// static +CFX_WideString CFX_WideString::FromCodePage(const CFX_ByteString& str, + FX_WORD codepage) { + return CFX_CharMap::GetWideString(codepage, str); +} + +// static +CFX_WideString CFX_WideString::FromUTF8(const char* str, FX_STRSIZE len) { + if (!str || 0 == len) { + return CFX_WideString(); + } + + CFX_UTF8Decoder decoder; + for (FX_STRSIZE i = 0; i < len; i++) { + decoder.Input(str[i]); + } + return decoder.GetResult(); +} + +// static +CFX_WideString CFX_WideString::FromUTF16LE(const unsigned short* wstr, + FX_STRSIZE wlen) { + if (!wstr || 0 == wlen) { + return CFX_WideString(); + } + + CFX_WideString result; + FX_WCHAR* buf = result.GetBuffer(wlen); + for (int i = 0; i < wlen; i++) { + buf[i] = wstr[i]; + } + result.ReleaseBuffer(wlen); + return result; +} + +FX_STRSIZE CFX_WideString::WStringLength(const unsigned short* str) { + FX_STRSIZE len = 0; + if (str) + while (str[len]) + len++; + return len; +} + +void CFX_WideString::AllocCopy(CFX_WideString& dest, + FX_STRSIZE nCopyLen, + FX_STRSIZE nCopyIndex) const { + // |FX_STRSIZE| is currently typedef'd as in |int|. TODO(palmer): It + // should be a |size_t|, or at least unsigned. + if (nCopyLen == 0 || nCopyLen < 0) { + return; + } + pdfium::base::CheckedNumeric iSize = + static_cast(sizeof(FX_WCHAR)); + iSize *= nCopyLen; + ASSERT(!dest.m_pData); + dest.m_pData = StringData::Create(nCopyLen); + if (dest.m_pData) { + FXSYS_memcpy(dest.m_pData->m_String, m_pData->m_String + nCopyIndex, + iSize.ValueOrDie()); + } +} +CFX_WideString CFX_WideString::Left(FX_STRSIZE nCount) const { + if (!m_pData) { + return CFX_WideString(); + } + if (nCount < 0) { + nCount = 0; + } + if (nCount >= m_pData->m_nDataLength) { + return *this; + } + CFX_WideString dest; + AllocCopy(dest, nCount, 0); + return dest; +} +CFX_WideString CFX_WideString::Mid(FX_STRSIZE nFirst) const { + return Mid(nFirst, m_pData->m_nDataLength - nFirst); +} +CFX_WideString CFX_WideString::Mid(FX_STRSIZE nFirst, FX_STRSIZE nCount) const { + if (!m_pData) { + return CFX_WideString(); + } + if (nFirst < 0) { + nFirst = 0; + } + if (nCount < 0) { + nCount = 0; + } + if (nFirst + nCount > m_pData->m_nDataLength) { + nCount = m_pData->m_nDataLength - nFirst; + } + if (nFirst > m_pData->m_nDataLength) { + nCount = 0; + } + if (nFirst == 0 && nFirst + nCount == m_pData->m_nDataLength) { + return *this; + } + CFX_WideString dest; + AllocCopy(dest, nCount, nFirst); + return dest; +} +CFX_WideString CFX_WideString::Right(FX_STRSIZE nCount) const { + if (!m_pData) { + return CFX_WideString(); + } + if (nCount < 0) { + nCount = 0; + } + if (nCount >= m_pData->m_nDataLength) { + return *this; + } + CFX_WideString dest; + AllocCopy(dest, nCount, m_pData->m_nDataLength - nCount); + return dest; +} +int CFX_WideString::CompareNoCase(const FX_WCHAR* lpsz) const { + if (!m_pData) { + return (!lpsz || lpsz[0] == 0) ? 0 : -1; + } + return FXSYS_wcsicmp(m_pData->m_String, lpsz); +} +int CFX_WideString::Compare(const CFX_WideString& str) const { + if (!m_pData) { + if (!str.m_pData) { + return 0; + } + return -1; + } + if (!str.m_pData) { + return 1; + } + int this_len = m_pData->m_nDataLength; + int that_len = str.m_pData->m_nDataLength; + int min_len = this_len < that_len ? this_len : that_len; + for (int i = 0; i < min_len; i++) { + if (m_pData->m_String[i] < str.m_pData->m_String[i]) { + return -1; + } + if (m_pData->m_String[i] > str.m_pData->m_String[i]) { + return 1; + } + } + if (this_len < that_len) { + return -1; + } + if (this_len > that_len) { + return 1; + } + return 0; +} +void CFX_WideString::SetAt(FX_STRSIZE nIndex, FX_WCHAR ch) { + if (!m_pData) { + return; + } + ASSERT(nIndex >= 0); + ASSERT(nIndex < m_pData->m_nDataLength); + CopyBeforeWrite(); + m_pData->m_String[nIndex] = ch; +} +void CFX_WideString::MakeLower() { + if (!m_pData) { + return; + } + CopyBeforeWrite(); + if (GetLength() < 1) { + return; + } + FXSYS_wcslwr(m_pData->m_String); +} +void CFX_WideString::MakeUpper() { + if (!m_pData) { + return; + } + CopyBeforeWrite(); + if (GetLength() < 1) { + return; + } + FXSYS_wcsupr(m_pData->m_String); +} +FX_STRSIZE CFX_WideString::Find(const FX_WCHAR* lpszSub, + FX_STRSIZE nStart) const { + FX_STRSIZE nLength = GetLength(); + if (nLength < 1 || nStart > nLength) { + return -1; + } + const FX_WCHAR* lpsz = FXSYS_wcsstr(m_pData->m_String + nStart, lpszSub); + return lpsz ? (int)(lpsz - m_pData->m_String) : -1; +} +FX_STRSIZE CFX_WideString::Find(FX_WCHAR ch, FX_STRSIZE nStart) const { + if (!m_pData) { + return -1; + } + FX_STRSIZE nLength = m_pData->m_nDataLength; + if (nStart >= nLength) { + return -1; + } + const FX_WCHAR* lpsz = FXSYS_wcschr(m_pData->m_String + nStart, ch); + return (lpsz) ? (int)(lpsz - m_pData->m_String) : -1; +} +void CFX_WideString::TrimRight(const FX_WCHAR* lpszTargetList) { + FXSYS_assert(lpszTargetList); + if (!m_pData || *lpszTargetList == 0) { + return; + } + CopyBeforeWrite(); + FX_STRSIZE len = GetLength(); + if (len < 1) { + return; + } + FX_STRSIZE pos = len; + while (pos) { + if (!FXSYS_wcschr(lpszTargetList, m_pData->m_String[pos - 1])) { + break; + } + pos--; + } + if (pos < len) { + m_pData->m_String[pos] = 0; + m_pData->m_nDataLength = pos; + } +} +void CFX_WideString::TrimRight(FX_WCHAR chTarget) { + FX_WCHAR str[2] = {chTarget, 0}; + TrimRight(str); +} +void CFX_WideString::TrimRight() { + TrimRight(L"\x09\x0a\x0b\x0c\x0d\x20"); +} +void CFX_WideString::TrimLeft(const FX_WCHAR* lpszTargets) { + FXSYS_assert(lpszTargets); + if (!m_pData || *lpszTargets == 0) { + return; + } + CopyBeforeWrite(); + if (GetLength() < 1) { + return; + } + const FX_WCHAR* lpsz = m_pData->m_String; + while (*lpsz != 0) { + if (!FXSYS_wcschr(lpszTargets, *lpsz)) { + break; + } + lpsz++; + } + if (lpsz != m_pData->m_String) { + int nDataLength = + m_pData->m_nDataLength - (FX_STRSIZE)(lpsz - m_pData->m_String); + FXSYS_memmove(m_pData->m_String, lpsz, + (nDataLength + 1) * sizeof(FX_WCHAR)); + m_pData->m_nDataLength = nDataLength; + } +} +void CFX_WideString::TrimLeft(FX_WCHAR chTarget) { + FX_WCHAR str[2] = {chTarget, 0}; + TrimLeft(str); +} +void CFX_WideString::TrimLeft() { + TrimLeft(L"\x09\x0a\x0b\x0c\x0d\x20"); +} +FX_STRSIZE CFX_WideString::Replace(const FX_WCHAR* lpszOld, + const FX_WCHAR* lpszNew) { + if (GetLength() < 1) { + return 0; + } + if (!lpszOld) { + return 0; + } + FX_STRSIZE nSourceLen = FXSYS_wcslen(lpszOld); + if (nSourceLen == 0) { + return 0; + } + FX_STRSIZE nReplacementLen = lpszNew ? FXSYS_wcslen(lpszNew) : 0; + FX_STRSIZE nCount = 0; + FX_WCHAR* lpszStart = m_pData->m_String; + FX_WCHAR* lpszEnd = m_pData->m_String + m_pData->m_nDataLength; + FX_WCHAR* lpszTarget; + { + while ((lpszTarget = (FX_WCHAR*)FXSYS_wcsstr(lpszStart, lpszOld)) && + lpszStart < lpszEnd) { + nCount++; + lpszStart = lpszTarget + nSourceLen; + } + } + if (nCount > 0) { + CopyBeforeWrite(); + FX_STRSIZE nOldLength = m_pData->m_nDataLength; + FX_STRSIZE nNewLength = + nOldLength + (nReplacementLen - nSourceLen) * nCount; + if (m_pData->m_nAllocLength < nNewLength || m_pData->m_nRefs > 1) { + StringData* pOldData = m_pData; + const FX_WCHAR* pstr = m_pData->m_String; + m_pData = StringData::Create(nNewLength); + if (!m_pData) { + return 0; + } + FXSYS_memcpy(m_pData->m_String, pstr, + pOldData->m_nDataLength * sizeof(FX_WCHAR)); + pOldData->Release(); + } + lpszStart = m_pData->m_String; + lpszEnd = m_pData->m_String + std::max(m_pData->m_nDataLength, nNewLength); + { + while ((lpszTarget = (FX_WCHAR*)FXSYS_wcsstr(lpszStart, lpszOld)) != + NULL && + lpszStart < lpszEnd) { + FX_STRSIZE nBalance = + nOldLength - + (FX_STRSIZE)(lpszTarget - m_pData->m_String + nSourceLen); + FXSYS_memmove(lpszTarget + nReplacementLen, lpszTarget + nSourceLen, + nBalance * sizeof(FX_WCHAR)); + FXSYS_memcpy(lpszTarget, lpszNew, nReplacementLen * sizeof(FX_WCHAR)); + lpszStart = lpszTarget + nReplacementLen; + lpszStart[nBalance] = 0; + nOldLength += (nReplacementLen - nSourceLen); + } + } + ASSERT(m_pData->m_String[nNewLength] == 0); + m_pData->m_nDataLength = nNewLength; + } + return nCount; +} +FX_STRSIZE CFX_WideString::Insert(FX_STRSIZE nIndex, FX_WCHAR ch) { + CopyBeforeWrite(); + if (nIndex < 0) { + nIndex = 0; + } + FX_STRSIZE nNewLength = GetLength(); + if (nIndex > nNewLength) { + nIndex = nNewLength; + } + nNewLength++; + if (!m_pData || m_pData->m_nAllocLength < nNewLength) { + StringData* pOldData = m_pData; + const FX_WCHAR* pstr = m_pData->m_String; + m_pData = StringData::Create(nNewLength); + if (!m_pData) { + return 0; + } + if (pOldData) { + FXSYS_memmove(m_pData->m_String, pstr, + (pOldData->m_nDataLength + 1) * sizeof(FX_WCHAR)); + pOldData->Release(); + } else { + m_pData->m_String[0] = 0; + } + } + FXSYS_memmove(m_pData->m_String + nIndex + 1, m_pData->m_String + nIndex, + (nNewLength - nIndex) * sizeof(FX_WCHAR)); + m_pData->m_String[nIndex] = ch; + m_pData->m_nDataLength = nNewLength; + return nNewLength; +} +FX_STRSIZE CFX_WideString::Delete(FX_STRSIZE nIndex, FX_STRSIZE nCount) { + if (GetLength() < 1) { + return 0; + } + if (nIndex < 0) { + nIndex = 0; + } + FX_STRSIZE nOldLength = m_pData->m_nDataLength; + if (nCount > 0 && nIndex < nOldLength) { + CopyBeforeWrite(); + int nBytesToCopy = nOldLength - (nIndex + nCount) + 1; + FXSYS_memmove(m_pData->m_String + nIndex, + m_pData->m_String + nIndex + nCount, + nBytesToCopy * sizeof(FX_WCHAR)); + m_pData->m_nDataLength = nOldLength - nCount; + } + return m_pData->m_nDataLength; +} +FX_STRSIZE CFX_WideString::Remove(FX_WCHAR chRemove) { + if (!m_pData) { + return 0; + } + CopyBeforeWrite(); + if (GetLength() < 1) { + return 0; + } + FX_WCHAR* pstrSource = m_pData->m_String; + FX_WCHAR* pstrDest = m_pData->m_String; + FX_WCHAR* pstrEnd = m_pData->m_String + m_pData->m_nDataLength; + while (pstrSource < pstrEnd) { + if (*pstrSource != chRemove) { + *pstrDest = *pstrSource; + pstrDest++; + } + pstrSource++; + } + *pstrDest = 0; + FX_STRSIZE nCount = (FX_STRSIZE)(pstrSource - pstrDest); + m_pData->m_nDataLength -= nCount; + return nCount; +} +#define FORCE_ANSI 0x10000 +#define FORCE_UNICODE 0x20000 +#define FORCE_INT64 0x40000 +void CFX_WideString::FormatV(const FX_WCHAR* lpszFormat, va_list argList) { + va_list argListSave; +#if defined(__ARMCC_VERSION) || \ + (!defined(_MSC_VER) && (_FX_CPU_ == _FX_X64_ || _FX_CPU_ == _FX_IA64_ || \ + _FX_CPU_ == _FX_ARM64_)) || \ + defined(__native_client__) + va_copy(argListSave, argList); +#else + argListSave = argList; +#endif + int nMaxLen = 0; + for (const FX_WCHAR* lpsz = lpszFormat; *lpsz != 0; lpsz++) { + if (*lpsz != '%' || *(lpsz = lpsz + 1) == '%') { + nMaxLen += FXSYS_wcslen(lpsz); + continue; + } + int nItemLen = 0; + int nWidth = 0; + for (; *lpsz != 0; lpsz++) { + if (*lpsz == '#') { + nMaxLen += 2; + } else if (*lpsz == '*') { + nWidth = va_arg(argList, int); + } else if (*lpsz != '-' && *lpsz != '+' && *lpsz != '0' && *lpsz != ' ') { + break; + } + } + if (nWidth == 0) { + nWidth = FXSYS_wtoi(lpsz); + while (std::iswdigit(*lpsz)) + ++lpsz; + } + if (nWidth < 0 || nWidth > 128 * 1024) { + lpszFormat = L"Bad width"; + nMaxLen = 10; + break; + } + int nPrecision = 0; + if (*lpsz == '.') { + lpsz++; + if (*lpsz == '*') { + nPrecision = va_arg(argList, int); + lpsz++; + } else { + nPrecision = FXSYS_wtoi(lpsz); + while (std::iswdigit(*lpsz)) + ++lpsz; + } + } + if (nPrecision < 0 || nPrecision > 128 * 1024) { + lpszFormat = L"Bad precision"; + nMaxLen = 14; + break; + } + int nModifier = 0; + if (*lpsz == L'I' && *(lpsz + 1) == L'6' && *(lpsz + 2) == L'4') { + lpsz += 3; + nModifier = FORCE_INT64; + } else { + switch (*lpsz) { + case 'h': + nModifier = FORCE_ANSI; + lpsz++; + break; + case 'l': + nModifier = FORCE_UNICODE; + lpsz++; + break; + case 'F': + case 'N': + case 'L': + lpsz++; + break; + } + } + switch (*lpsz | nModifier) { + case 'c': + case 'C': + nItemLen = 2; + va_arg(argList, int); + break; + case 'c' | FORCE_ANSI: + case 'C' | FORCE_ANSI: + nItemLen = 2; + va_arg(argList, int); + break; + case 'c' | FORCE_UNICODE: + case 'C' | FORCE_UNICODE: + nItemLen = 2; + va_arg(argList, int); + break; + case 's': { + const FX_WCHAR* pstrNextArg = va_arg(argList, const FX_WCHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_wcslen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + case 'S': { + const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_strlen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + case 's' | FORCE_ANSI: + case 'S' | FORCE_ANSI: { + const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_strlen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + case 's' | FORCE_UNICODE: + case 'S' | FORCE_UNICODE: { + FX_WCHAR* pstrNextArg = va_arg(argList, FX_WCHAR*); + if (pstrNextArg) { + nItemLen = FXSYS_wcslen(pstrNextArg); + if (nItemLen < 1) { + nItemLen = 1; + } + } else { + nItemLen = 6; + } + } break; + } + if (nItemLen != 0) { + if (nPrecision != 0 && nItemLen > nPrecision) { + nItemLen = nPrecision; + } + if (nItemLen < nWidth) { + nItemLen = nWidth; + } + } else { + switch (*lpsz) { + case 'd': + case 'i': + case 'u': + case 'x': + case 'X': + case 'o': + if (nModifier & FORCE_INT64) { + va_arg(argList, int64_t); + } else { + va_arg(argList, int); + } + nItemLen = 32; + if (nItemLen < nWidth + nPrecision) { + nItemLen = nWidth + nPrecision; + } + break; + case 'a': + case 'A': + case 'e': + case 'E': + case 'g': + case 'G': + va_arg(argList, double); + nItemLen = 128; + if (nItemLen < nWidth + nPrecision) { + nItemLen = nWidth + nPrecision; + } + break; + case 'f': + if (nWidth + nPrecision > 100) { + nItemLen = nPrecision + nWidth + 128; + } else { + double f; + char pszTemp[256]; + f = va_arg(argList, double); + FXSYS_snprintf(pszTemp, sizeof(pszTemp), "%*.*f", nWidth, + nPrecision + 6, f); + nItemLen = FXSYS_strlen(pszTemp); + } + break; + case 'p': + va_arg(argList, void*); + nItemLen = 32; + if (nItemLen < nWidth + nPrecision) { + nItemLen = nWidth + nPrecision; + } + break; + case 'n': + va_arg(argList, int*); + break; + } + } + nMaxLen += nItemLen; + } + GetBuffer(nMaxLen); + if (m_pData) { + FXSYS_vswprintf((wchar_t*)m_pData->m_String, nMaxLen + 1, + (const wchar_t*)lpszFormat, argListSave); + ReleaseBuffer(); + } + va_end(argListSave); +} +void CFX_WideString::Format(const FX_WCHAR* lpszFormat, ...) { + va_list argList; + va_start(argList, lpszFormat); + FormatV(lpszFormat, argList); + va_end(argList); +} +FX_FLOAT FX_wtof(const FX_WCHAR* str, int len) { + if (len == 0) { + return 0.0; + } + int cc = 0; + FX_BOOL bNegative = FALSE; + if (str[0] == '+') { + cc++; + } else if (str[0] == '-') { + bNegative = TRUE; + cc++; + } + int integer = 0; + while (cc < len) { + if (str[cc] == '.') { + break; + } + integer = integer * 10 + FXSYS_toDecimalDigit(str[cc]); + cc++; + } + FX_FLOAT fraction = 0; + if (str[cc] == '.') { + cc++; + FX_FLOAT scale = 0.1f; + while (cc < len) { + fraction += scale * FXSYS_toDecimalDigit(str[cc]); + scale *= 0.1f; + cc++; + } + } + fraction += (FX_FLOAT)integer; + return bNegative ? -fraction : fraction; +} +int CFX_WideString::GetInteger() const { + return m_pData ? FXSYS_wtoi(m_pData->m_String) : 0; +} +FX_FLOAT CFX_WideString::GetFloat() const { + return m_pData ? FX_wtof(m_pData->m_String, m_pData->m_nDataLength) : 0.0f; +} + +// static +CFX_ByteString CFX_CharMap::GetByteString(FX_WORD codepage, + const CFX_WideString& wstr) { + FXSYS_assert(IsValidCodePage(codepage)); + int src_len = wstr.GetLength(); + int dest_len = FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, + nullptr, 0, nullptr, nullptr); + CFX_ByteString bstr; + if (dest_len) { + FX_CHAR* dest_buf = bstr.GetBuffer(dest_len); + FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, dest_buf, + dest_len, nullptr, nullptr); + bstr.ReleaseBuffer(dest_len); + } + return bstr; +} + +// static +CFX_WideString CFX_CharMap::GetWideString(FX_WORD codepage, + const CFX_ByteString& bstr) { + FXSYS_assert(IsValidCodePage(codepage)); + int src_len = bstr.GetLength(); + int dest_len = + FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, nullptr, 0); + CFX_WideString wstr; + if (dest_len) { + FX_WCHAR* dest_buf = wstr.GetBuffer(dest_len); + FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, dest_buf, dest_len); + wstr.ReleaseBuffer(dest_len); + } + return wstr; +} diff --git a/core/fxcrt/fx_basic_wstring_unittest.cpp b/core/fxcrt/fx_basic_wstring_unittest.cpp new file mode 100644 index 0000000000..64d694c436 --- /dev/null +++ b/core/fxcrt/fx_basic_wstring_unittest.cpp @@ -0,0 +1,524 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fxcrt/fx_basic.h" +#include "testing/fx_string_testhelpers.h" +#include "testing/gtest/include/gtest/gtest.h" + +TEST(fxcrt, WideStringOperatorSubscript) { + // CFX_WideString includes the NUL terminator for non-empty strings. + CFX_WideString abc(L"abc"); + EXPECT_EQ(L'a', abc[0]); + EXPECT_EQ(L'b', abc[1]); + EXPECT_EQ(L'c', abc[2]); + EXPECT_EQ(L'\0', abc[3]); +} + +TEST(fxcrt, WideStringOperatorLT) { + CFX_WideString empty; + CFX_WideString a(L"a"); + CFX_WideString abc(L"\x0110qq"); // Comes before despite endianness. + CFX_WideString def(L"\x1001qq"); // Comes after despite endianness. + + EXPECT_FALSE(empty < empty); + EXPECT_FALSE(a < a); + EXPECT_FALSE(abc < abc); + EXPECT_FALSE(def < def); + + EXPECT_TRUE(empty < a); + EXPECT_FALSE(a < empty); + + EXPECT_TRUE(empty < abc); + EXPECT_FALSE(abc < empty); + + EXPECT_TRUE(empty < def); + EXPECT_FALSE(def < empty); + + EXPECT_TRUE(a < abc); + EXPECT_FALSE(abc < a); + + EXPECT_TRUE(a < def); + EXPECT_FALSE(def < a); + + EXPECT_TRUE(abc < def); + EXPECT_FALSE(def < abc); +} + +TEST(fxcrt, WideStringOperatorEQ) { + CFX_WideString null_string; + EXPECT_TRUE(null_string == null_string); + + CFX_WideString empty_string(L""); + EXPECT_TRUE(empty_string == empty_string); + EXPECT_TRUE(empty_string == null_string); + EXPECT_TRUE(null_string == empty_string); + + CFX_WideString deleted_string(L"hello"); + deleted_string.Delete(0, 5); + EXPECT_TRUE(deleted_string == deleted_string); + EXPECT_TRUE(deleted_string == null_string); + EXPECT_TRUE(deleted_string == empty_string); + EXPECT_TRUE(null_string == deleted_string); + EXPECT_TRUE(null_string == empty_string); + + CFX_WideString wide_string(L"hello"); + EXPECT_TRUE(wide_string == wide_string); + EXPECT_FALSE(wide_string == null_string); + EXPECT_FALSE(wide_string == empty_string); + EXPECT_FALSE(wide_string == deleted_string); + EXPECT_FALSE(null_string == wide_string); + EXPECT_FALSE(empty_string == wide_string); + EXPECT_FALSE(deleted_string == wide_string); + + CFX_WideString wide_string_same1(L"hello"); + EXPECT_TRUE(wide_string == wide_string_same1); + EXPECT_TRUE(wide_string_same1 == wide_string); + + CFX_WideString wide_string_same2(wide_string); + EXPECT_TRUE(wide_string == wide_string_same2); + EXPECT_TRUE(wide_string_same2 == wide_string); + + CFX_WideString wide_string1(L"he"); + CFX_WideString wide_string2(L"hellp"); + CFX_WideString wide_string3(L"hellod"); + EXPECT_FALSE(wide_string == wide_string1); + EXPECT_FALSE(wide_string == wide_string2); + EXPECT_FALSE(wide_string == wide_string3); + EXPECT_FALSE(wide_string1 == wide_string); + EXPECT_FALSE(wide_string2 == wide_string); + EXPECT_FALSE(wide_string3 == wide_string); + + CFX_WideStringC null_string_c; + CFX_WideStringC empty_string_c(L""); + EXPECT_TRUE(null_string == null_string_c); + EXPECT_TRUE(null_string == empty_string_c); + EXPECT_TRUE(empty_string == null_string_c); + EXPECT_TRUE(empty_string == empty_string_c); + EXPECT_TRUE(deleted_string == null_string_c); + EXPECT_TRUE(deleted_string == empty_string_c); + EXPECT_TRUE(null_string_c == null_string); + EXPECT_TRUE(empty_string_c == null_string); + EXPECT_TRUE(null_string_c == empty_string); + EXPECT_TRUE(empty_string_c == empty_string); + EXPECT_TRUE(null_string_c == deleted_string); + EXPECT_TRUE(empty_string_c == deleted_string); + + CFX_WideStringC wide_string_c_same1(L"hello"); + EXPECT_TRUE(wide_string == wide_string_c_same1); + EXPECT_TRUE(wide_string_c_same1 == wide_string); + + CFX_WideStringC wide_string_c1(L"he"); + CFX_WideStringC wide_string_c2(L"hellp"); + CFX_WideStringC wide_string_c3(L"hellod"); + EXPECT_FALSE(wide_string == wide_string_c1); + EXPECT_FALSE(wide_string == wide_string_c2); + EXPECT_FALSE(wide_string == wide_string_c3); + EXPECT_FALSE(wide_string_c1 == wide_string); + EXPECT_FALSE(wide_string_c2 == wide_string); + EXPECT_FALSE(wide_string_c3 == wide_string); + + const wchar_t* c_null_string = nullptr; + const wchar_t* c_empty_string = L""; + EXPECT_TRUE(null_string == c_null_string); + EXPECT_TRUE(null_string == c_empty_string); + EXPECT_TRUE(empty_string == c_null_string); + EXPECT_TRUE(empty_string == c_empty_string); + EXPECT_TRUE(deleted_string == c_null_string); + EXPECT_TRUE(deleted_string == c_empty_string); + EXPECT_TRUE(c_null_string == null_string); + EXPECT_TRUE(c_empty_string == null_string); + EXPECT_TRUE(c_null_string == empty_string); + EXPECT_TRUE(c_empty_string == empty_string); + EXPECT_TRUE(c_null_string == deleted_string); + EXPECT_TRUE(c_empty_string == deleted_string); + + const wchar_t* c_string_same1 = L"hello"; + EXPECT_TRUE(wide_string == c_string_same1); + EXPECT_TRUE(c_string_same1 == wide_string); + + const wchar_t* c_string1 = L"he"; + const wchar_t* c_string2 = L"hellp"; + const wchar_t* c_string3 = L"hellod"; + EXPECT_FALSE(wide_string == c_string1); + EXPECT_FALSE(wide_string == c_string2); + EXPECT_FALSE(wide_string == c_string3); + EXPECT_FALSE(c_string1 == wide_string); + EXPECT_FALSE(c_string2 == wide_string); + EXPECT_FALSE(c_string3 == wide_string); +} + +TEST(fxcrt, WideStringOperatorNE) { + CFX_WideString null_string; + EXPECT_FALSE(null_string != null_string); + + CFX_WideString empty_string(L""); + EXPECT_FALSE(empty_string != empty_string); + EXPECT_FALSE(empty_string != null_string); + EXPECT_FALSE(null_string != empty_string); + + CFX_WideString deleted_string(L"hello"); + deleted_string.Delete(0, 5); + EXPECT_FALSE(deleted_string != deleted_string); + EXPECT_FALSE(deleted_string != null_string); + EXPECT_FALSE(deleted_string != empty_string); + EXPECT_FALSE(null_string != deleted_string); + EXPECT_FALSE(null_string != empty_string); + + CFX_WideString wide_string(L"hello"); + EXPECT_FALSE(wide_string != wide_string); + EXPECT_TRUE(wide_string != null_string); + EXPECT_TRUE(wide_string != empty_string); + EXPECT_TRUE(wide_string != deleted_string); + EXPECT_TRUE(null_string != wide_string); + EXPECT_TRUE(empty_string != wide_string); + EXPECT_TRUE(deleted_string != wide_string); + + CFX_WideString wide_string_same1(L"hello"); + EXPECT_FALSE(wide_string != wide_string_same1); + EXPECT_FALSE(wide_string_same1 != wide_string); + + CFX_WideString wide_string_same2(wide_string); + EXPECT_FALSE(wide_string != wide_string_same2); + EXPECT_FALSE(wide_string_same2 != wide_string); + + CFX_WideString wide_string1(L"he"); + CFX_WideString wide_string2(L"hellp"); + CFX_WideString wide_string3(L"hellod"); + EXPECT_TRUE(wide_string != wide_string1); + EXPECT_TRUE(wide_string != wide_string2); + EXPECT_TRUE(wide_string != wide_string3); + EXPECT_TRUE(wide_string1 != wide_string); + EXPECT_TRUE(wide_string2 != wide_string); + EXPECT_TRUE(wide_string3 != wide_string); + + CFX_WideStringC null_string_c; + CFX_WideStringC empty_string_c(L""); + EXPECT_FALSE(null_string != null_string_c); + EXPECT_FALSE(null_string != empty_string_c); + EXPECT_FALSE(empty_string != null_string_c); + EXPECT_FALSE(empty_string != empty_string_c); + EXPECT_FALSE(deleted_string != null_string_c); + EXPECT_FALSE(deleted_string != empty_string_c); + EXPECT_FALSE(null_string_c != null_string); + EXPECT_FALSE(empty_string_c != null_string); + EXPECT_FALSE(null_string_c != empty_string); + EXPECT_FALSE(empty_string_c != empty_string); + + CFX_WideStringC wide_string_c_same1(L"hello"); + EXPECT_FALSE(wide_string != wide_string_c_same1); + EXPECT_FALSE(wide_string_c_same1 != wide_string); + + CFX_WideStringC wide_string_c1(L"he"); + CFX_WideStringC wide_string_c2(L"hellp"); + CFX_WideStringC wide_string_c3(L"hellod"); + EXPECT_TRUE(wide_string != wide_string_c1); + EXPECT_TRUE(wide_string != wide_string_c2); + EXPECT_TRUE(wide_string != wide_string_c3); + EXPECT_TRUE(wide_string_c1 != wide_string); + EXPECT_TRUE(wide_string_c2 != wide_string); + EXPECT_TRUE(wide_string_c3 != wide_string); + + const wchar_t* c_null_string = nullptr; + const wchar_t* c_empty_string = L""; + EXPECT_FALSE(null_string != c_null_string); + EXPECT_FALSE(null_string != c_empty_string); + EXPECT_FALSE(empty_string != c_null_string); + EXPECT_FALSE(empty_string != c_empty_string); + EXPECT_FALSE(deleted_string != c_null_string); + EXPECT_FALSE(deleted_string != c_empty_string); + EXPECT_FALSE(c_null_string != null_string); + EXPECT_FALSE(c_empty_string != null_string); + EXPECT_FALSE(c_null_string != empty_string); + EXPECT_FALSE(c_empty_string != empty_string); + EXPECT_FALSE(c_null_string != deleted_string); + EXPECT_FALSE(c_empty_string != deleted_string); + + const wchar_t* c_string_same1 = L"hello"; + EXPECT_FALSE(wide_string != c_string_same1); + EXPECT_FALSE(c_string_same1 != wide_string); + + const wchar_t* c_string1 = L"he"; + const wchar_t* c_string2 = L"hellp"; + const wchar_t* c_string3 = L"hellod"; + EXPECT_TRUE(wide_string != c_string1); + EXPECT_TRUE(wide_string != c_string2); + EXPECT_TRUE(wide_string != c_string3); + EXPECT_TRUE(c_string1 != wide_string); + EXPECT_TRUE(c_string2 != wide_string); + EXPECT_TRUE(c_string3 != wide_string); +} + +TEST(fxcrt, WideStringConcatInPlace) { + CFX_WideString fred; + fred.ConcatInPlace(4, L"FRED"); + EXPECT_EQ(L"FRED", fred); + + fred.ConcatInPlace(2, L"DY"); + EXPECT_EQ(L"FREDDY", fred); + + fred.Delete(3, 3); + EXPECT_EQ(L"FRE", fred); + + fred.ConcatInPlace(1, L"D"); + EXPECT_EQ(L"FRED", fred); + + CFX_WideString copy = fred; + fred.ConcatInPlace(2, L"DY"); + EXPECT_EQ(L"FREDDY", fred); + EXPECT_EQ(L"FRED", copy); + + // Test invalid arguments. + copy = fred; + fred.ConcatInPlace(-6, L"freddy"); + CFX_WideString not_aliased(L"xxxxxx"); + EXPECT_EQ(L"FREDDY", fred); + EXPECT_EQ(L"xxxxxx", not_aliased); +} + +TEST(fxcrt, WideStringUTF16LE_Encode) { + struct UTF16LEEncodeCase { + CFX_WideString ws; + CFX_ByteString bs; + } utf16le_encode_cases[] = { + {L"", CFX_ByteString("\0\0", 2)}, + {L"abc", CFX_ByteString("a\0b\0c\0\0\0", 8)}, + {L"abcdef", CFX_ByteString("a\0b\0c\0d\0e\0f\0\0\0", 14)}, + {L"abc\0def", CFX_ByteString("a\0b\0c\0\0\0", 8)}, + {L"\xaabb\xccdd", CFX_ByteString("\xbb\xaa\xdd\xcc\0\0", 6)}, + {L"\x3132\x6162", CFX_ByteString("\x32\x31\x62\x61\0\0", 6)}, + }; + + for (size_t i = 0; i < FX_ArraySize(utf16le_encode_cases); ++i) { + EXPECT_EQ(utf16le_encode_cases[i].bs, + utf16le_encode_cases[i].ws.UTF16LE_Encode()) + << " for case number " << i; + } +} + +TEST(fxcrt, WideStringCOperatorSubscript) { + // CFX_WideStringC includes the NUL terminator for non-empty strings. + CFX_WideStringC abc(L"abc"); + EXPECT_EQ(L'a', abc[0]); + EXPECT_EQ(L'b', abc[1]); + EXPECT_EQ(L'c', abc[2]); + EXPECT_EQ(L'\0', abc[3]); +} + +TEST(fxcrt, WideStringCOperatorLT) { + CFX_WideStringC empty; + CFX_WideStringC a(L"a"); + CFX_WideStringC abc(L"\x0110qq"); // Comes before despite endianness. + CFX_WideStringC def(L"\x1001qq"); // Comes after despite endianness. + + EXPECT_FALSE(empty < empty); + EXPECT_FALSE(a < a); + EXPECT_FALSE(abc < abc); + EXPECT_FALSE(def < def); + + EXPECT_TRUE(empty < a); + EXPECT_FALSE(a < empty); + + EXPECT_TRUE(empty < abc); + EXPECT_FALSE(abc < empty); + + EXPECT_TRUE(empty < def); + EXPECT_FALSE(def < empty); + + EXPECT_TRUE(a < abc); + EXPECT_FALSE(abc < a); + + EXPECT_TRUE(a < def); + EXPECT_FALSE(def < a); + + EXPECT_TRUE(abc < def); + EXPECT_FALSE(def < abc); +} + +TEST(fxcrt, WideStringCOperatorEQ) { + CFX_WideStringC wide_string_c(L"hello"); + EXPECT_TRUE(wide_string_c == wide_string_c); + + CFX_WideStringC wide_string_c_same1(L"hello"); + EXPECT_TRUE(wide_string_c == wide_string_c_same1); + EXPECT_TRUE(wide_string_c_same1 == wide_string_c); + + CFX_WideStringC wide_string_c_same2(wide_string_c); + EXPECT_TRUE(wide_string_c == wide_string_c_same2); + EXPECT_TRUE(wide_string_c_same2 == wide_string_c); + + CFX_WideStringC wide_string_c1(L"he"); + CFX_WideStringC wide_string_c2(L"hellp"); + CFX_WideStringC wide_string_c3(L"hellod"); + EXPECT_FALSE(wide_string_c == wide_string_c1); + EXPECT_FALSE(wide_string_c == wide_string_c2); + EXPECT_FALSE(wide_string_c == wide_string_c3); + EXPECT_FALSE(wide_string_c1 == wide_string_c); + EXPECT_FALSE(wide_string_c2 == wide_string_c); + EXPECT_FALSE(wide_string_c3 == wide_string_c); + + CFX_WideString wide_string_same1(L"hello"); + EXPECT_TRUE(wide_string_c == wide_string_same1); + EXPECT_TRUE(wide_string_same1 == wide_string_c); + + CFX_WideString wide_string1(L"he"); + CFX_WideString wide_string2(L"hellp"); + CFX_WideString wide_string3(L"hellod"); + EXPECT_FALSE(wide_string_c == wide_string1); + EXPECT_FALSE(wide_string_c == wide_string2); + EXPECT_FALSE(wide_string_c == wide_string3); + EXPECT_FALSE(wide_string1 == wide_string_c); + EXPECT_FALSE(wide_string2 == wide_string_c); + EXPECT_FALSE(wide_string3 == wide_string_c); + + const wchar_t* c_string_same1 = L"hello"; + EXPECT_TRUE(wide_string_c == c_string_same1); + EXPECT_TRUE(c_string_same1 == wide_string_c); + + const wchar_t* c_string1 = L"he"; + const wchar_t* c_string2 = L"hellp"; + const wchar_t* c_string3 = L"hellod"; + EXPECT_FALSE(wide_string_c == c_string1); + EXPECT_FALSE(wide_string_c == c_string2); + EXPECT_FALSE(wide_string_c == c_string3); + + EXPECT_FALSE(c_string1 == wide_string_c); + EXPECT_FALSE(c_string2 == wide_string_c); + EXPECT_FALSE(c_string3 == wide_string_c); +} + +TEST(fxcrt, WideStringCOperatorNE) { + CFX_WideStringC wide_string_c(L"hello"); + EXPECT_FALSE(wide_string_c != wide_string_c); + + CFX_WideStringC wide_string_c_same1(L"hello"); + EXPECT_FALSE(wide_string_c != wide_string_c_same1); + EXPECT_FALSE(wide_string_c_same1 != wide_string_c); + + CFX_WideStringC wide_string_c_same2(wide_string_c); + EXPECT_FALSE(wide_string_c != wide_string_c_same2); + EXPECT_FALSE(wide_string_c_same2 != wide_string_c); + + CFX_WideStringC wide_string_c1(L"he"); + CFX_WideStringC wide_string_c2(L"hellp"); + CFX_WideStringC wide_string_c3(L"hellod"); + EXPECT_TRUE(wide_string_c != wide_string_c1); + EXPECT_TRUE(wide_string_c != wide_string_c2); + EXPECT_TRUE(wide_string_c != wide_string_c3); + EXPECT_TRUE(wide_string_c1 != wide_string_c); + EXPECT_TRUE(wide_string_c2 != wide_string_c); + EXPECT_TRUE(wide_string_c3 != wide_string_c); + + CFX_WideString wide_string_same1(L"hello"); + EXPECT_FALSE(wide_string_c != wide_string_same1); + EXPECT_FALSE(wide_string_same1 != wide_string_c); + + CFX_WideString wide_string1(L"he"); + CFX_WideString wide_string2(L"hellp"); + CFX_WideString wide_string3(L"hellod"); + EXPECT_TRUE(wide_string_c != wide_string1); + EXPECT_TRUE(wide_string_c != wide_string2); + EXPECT_TRUE(wide_string_c != wide_string3); + EXPECT_TRUE(wide_string1 != wide_string_c); + EXPECT_TRUE(wide_string2 != wide_string_c); + EXPECT_TRUE(wide_string3 != wide_string_c); + + const wchar_t* c_string_same1 = L"hello"; + EXPECT_FALSE(wide_string_c != c_string_same1); + EXPECT_FALSE(c_string_same1 != wide_string_c); + + const wchar_t* c_string1 = L"he"; + const wchar_t* c_string2 = L"hellp"; + const wchar_t* c_string3 = L"hellod"; + EXPECT_TRUE(wide_string_c != c_string1); + EXPECT_TRUE(wide_string_c != c_string2); + EXPECT_TRUE(wide_string_c != c_string3); + + EXPECT_TRUE(c_string1 != wide_string_c); + EXPECT_TRUE(c_string2 != wide_string_c); + EXPECT_TRUE(c_string3 != wide_string_c); +} + +TEST(fxcrt, WideStringFormatWidth) { + { + CFX_WideString str; + str.Format(L"%5d", 1); + EXPECT_EQ(L" 1", str); + } + + { + CFX_WideString str; + str.Format(L"%d", 1); + EXPECT_EQ(L"1", str); + } + + { + CFX_WideString str; + str.Format(L"%*d", 5, 1); + EXPECT_EQ(L" 1", str); + } + + { + CFX_WideString str; + str.Format(L"%-1d", 1); + EXPECT_EQ(L"1", str); + } + + { + CFX_WideString str; + str.Format(L"%0d", 1); + EXPECT_EQ(L"1", str); + } + + { + CFX_WideString str; + str.Format(L"%1048576d", 1); + EXPECT_EQ(L"Bad width", str); + } +} + +TEST(fxcrt, WideStringFormatPrecision) { + { + CFX_WideString str; + str.Format(L"%.2f", 1.12345); + EXPECT_EQ(L"1.12", str); + } + + { + CFX_WideString str; + str.Format(L"%.*f", 3, 1.12345); + EXPECT_EQ(L"1.123", str); + } + + { + CFX_WideString str; + str.Format(L"%f", 1.12345); + EXPECT_EQ(L"1.123450", str); + } + + { + CFX_WideString str; + str.Format(L"%-1f", 1.12345); + EXPECT_EQ(L"1.123450", str); + } + + { + CFX_WideString str; + str.Format(L"%0f", 1.12345); + EXPECT_EQ(L"1.123450", str); + } + + { + CFX_WideString str; + str.Format(L"%.1048576f", 1.2); + EXPECT_EQ(L"Bad precision", str); + } +} + +TEST(fxcrt, EmptyWideString) { + CFX_WideString empty_str; + EXPECT_TRUE(empty_str.IsEmpty()); + EXPECT_EQ(0, empty_str.GetLength()); + const FX_WCHAR* cstr = empty_str.c_str(); + EXPECT_EQ(0, FXSYS_wcslen(cstr)); +} diff --git a/core/fxcrt/fx_bidi.cpp b/core/fxcrt/fx_bidi.cpp new file mode 100644 index 0000000000..a7a3ecb295 --- /dev/null +++ b/core/fxcrt/fx_bidi.cpp @@ -0,0 +1,81 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_bidi.h" +#include "core/include/fxcrt/fx_ucd.h" + +#include + +CFX_BidiChar::CFX_BidiChar() + : m_CurrentSegment({0, 0, NEUTRAL}), m_LastSegment({0, 0, NEUTRAL}) {} + +bool CFX_BidiChar::AppendChar(FX_WCHAR wch) { + FX_DWORD dwProps = FX_GetUnicodeProperties(wch); + int32_t iBidiCls = (dwProps & FX_BIDICLASSBITSMASK) >> FX_BIDICLASSBITS; + Direction direction = NEUTRAL; + switch (iBidiCls) { + case FX_BIDICLASS_L: + case FX_BIDICLASS_AN: + case FX_BIDICLASS_EN: + direction = LEFT; + break; + case FX_BIDICLASS_R: + case FX_BIDICLASS_AL: + direction = RIGHT; + break; + } + + bool bChangeDirection = (direction != m_CurrentSegment.direction); + if (bChangeDirection) + StartNewSegment(direction); + + m_CurrentSegment.count++; + return bChangeDirection; +} + +bool CFX_BidiChar::EndChar() { + StartNewSegment(NEUTRAL); + return m_LastSegment.count > 0; +} + +void CFX_BidiChar::StartNewSegment(CFX_BidiChar::Direction direction) { + m_LastSegment = m_CurrentSegment; + m_CurrentSegment.start += m_CurrentSegment.count; + m_CurrentSegment.count = 0; + m_CurrentSegment.direction = direction; +} + +CFX_BidiString::CFX_BidiString(const CFX_WideString& str) + : m_Str(str), + m_pBidiChar(new CFX_BidiChar), + m_eOverallDirection(CFX_BidiChar::LEFT) { + for (int i = 0; i < m_Str.GetLength(); ++i) { + if (m_pBidiChar->AppendChar(m_Str.GetAt(i))) + m_Order.push_back(m_pBidiChar->GetSegmentInfo()); + } + if (m_pBidiChar->EndChar()) + m_Order.push_back(m_pBidiChar->GetSegmentInfo()); + + size_t nR2L = std::count_if(m_Order.begin(), m_Order.end(), + [](const CFX_BidiChar::Segment& seg) { + return seg.direction == CFX_BidiChar::RIGHT; + }); + + size_t nL2R = std::count_if(m_Order.begin(), m_Order.end(), + [](const CFX_BidiChar::Segment& seg) { + return seg.direction == CFX_BidiChar::LEFT; + }); + + if (nR2L > 0 && nR2L >= nL2R) + SetOverallDirectionRight(); +} + +void CFX_BidiString::SetOverallDirectionRight() { + if (m_eOverallDirection != CFX_BidiChar::RIGHT) { + std::reverse(m_Order.begin(), m_Order.end()); + m_eOverallDirection = CFX_BidiChar::RIGHT; + } +} diff --git a/core/fxcrt/fx_bidi_unittest.cpp b/core/fxcrt/fx_bidi_unittest.cpp new file mode 100644 index 0000000000..a3c148702b --- /dev/null +++ b/core/fxcrt/fx_bidi_unittest.cpp @@ -0,0 +1,365 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fxcrt/fx_bidi.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +const FX_WCHAR kNeutralChar = 32; +const FX_WCHAR kLeftChar = 65; +const FX_WCHAR kRightChar = 1424; + +} // namespace + +TEST(fxcrt, BidiCharEmpty) { + CFX_BidiChar bidi; + CFX_BidiChar::Segment info; + + info = bidi.GetSegmentInfo(); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, info.direction); + EXPECT_EQ(0, info.start); + EXPECT_EQ(0, info.count); + EXPECT_FALSE(bidi.EndChar()); +} + +TEST(fxcrt, BidiCharLeft) { + CFX_BidiChar bidi; + CFX_BidiChar::Segment info; + + EXPECT_TRUE(bidi.AppendChar(kLeftChar)); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(0, info.start); + EXPECT_EQ(0, info.count); + + EXPECT_FALSE(bidi.AppendChar(kLeftChar)); + EXPECT_FALSE(bidi.AppendChar(kLeftChar)); + + info = bidi.GetSegmentInfo(); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, info.direction); + EXPECT_EQ(0, info.start); + EXPECT_EQ(0, info.count); + + EXPECT_TRUE(bidi.EndChar()); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(CFX_BidiChar::LEFT, info.direction); + EXPECT_EQ(0, info.start); + EXPECT_EQ(3, info.count); + + EXPECT_FALSE(bidi.EndChar()); +} + +TEST(fxcrt, BidiCharLeftNeutralRight) { + CFX_BidiChar bidi; + CFX_BidiChar::Segment info; + + EXPECT_TRUE(bidi.AppendChar(kLeftChar)); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(0, info.start); + EXPECT_EQ(0, info.count); + + EXPECT_FALSE(bidi.AppendChar(kLeftChar)); + EXPECT_FALSE(bidi.AppendChar(kLeftChar)); + EXPECT_TRUE(bidi.AppendChar(kNeutralChar)); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(0, info.start); + EXPECT_EQ(3, info.count); + + EXPECT_FALSE(bidi.AppendChar(kNeutralChar)); + EXPECT_FALSE(bidi.AppendChar(kNeutralChar)); + EXPECT_FALSE(bidi.AppendChar(kNeutralChar)); + EXPECT_TRUE(bidi.AppendChar(kRightChar)); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, info.direction); + EXPECT_EQ(3, info.start); + EXPECT_EQ(4, info.count); + + EXPECT_TRUE(bidi.EndChar()); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(CFX_BidiChar::RIGHT, info.direction); + EXPECT_EQ(7, info.start); + EXPECT_EQ(1, info.count); + + EXPECT_FALSE(bidi.EndChar()); +} + +TEST(fxcrt, BidiCharLeftRightLeft) { + CFX_BidiChar bidi; + CFX_BidiChar::Segment info; + + EXPECT_TRUE(bidi.AppendChar(kLeftChar)); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(0, info.start); + EXPECT_EQ(0, info.count); + + EXPECT_FALSE(bidi.AppendChar(kLeftChar)); + EXPECT_FALSE(bidi.AppendChar(kLeftChar)); + EXPECT_TRUE(bidi.AppendChar(kRightChar)); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(0, info.start); + EXPECT_EQ(3, info.count); + + EXPECT_FALSE(bidi.AppendChar(kRightChar)); + EXPECT_FALSE(bidi.AppendChar(kRightChar)); + EXPECT_FALSE(bidi.AppendChar(kRightChar)); + EXPECT_TRUE(bidi.AppendChar(kLeftChar)); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(CFX_BidiChar::RIGHT, info.direction); + EXPECT_EQ(3, info.start); + EXPECT_EQ(4, info.count); + + EXPECT_TRUE(bidi.EndChar()); + info = bidi.GetSegmentInfo(); + EXPECT_EQ(CFX_BidiChar::LEFT, info.direction); + EXPECT_EQ(7, info.start); + EXPECT_EQ(1, info.count); + + EXPECT_FALSE(bidi.EndChar()); +} + +TEST(fxcrt, BidiStringEmpty) { + CFX_BidiString bidi(L""); + EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); + EXPECT_TRUE(bidi.begin() == bidi.end()); +} + +TEST(fxcrt, BidiStringAllNeutral) { + { + const FX_WCHAR str[] = {kNeutralChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); + + auto it = bidi.begin(); + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ++it; + EXPECT_TRUE(it == bidi.end()); + } + { + const FX_WCHAR str[] = {kNeutralChar, kNeutralChar, kNeutralChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); + + auto it = bidi.begin(); + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(3, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ++it; + EXPECT_TRUE(it == bidi.end()); + } +} + +TEST(fxcrt, BidiStringAllLeft) { + { + const FX_WCHAR str[] = {kLeftChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); + + auto it = bidi.begin(); + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(0, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(0, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_TRUE(it == bidi.end()); + } + { + const FX_WCHAR str[] = {kLeftChar, kLeftChar, kLeftChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); + + auto it = bidi.begin(); + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(0, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(0, it->start); + EXPECT_EQ(3, it->count); + EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_TRUE(it == bidi.end()); + } +} + +TEST(fxcrt, BidiStringAllRight) { + { + const FX_WCHAR str[] = {kRightChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::RIGHT, bidi.OverallDirection()); + + auto it = bidi.begin(); + EXPECT_EQ(0, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(0, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_TRUE(it == bidi.end()); + } + { + const FX_WCHAR str[] = {kRightChar, kRightChar, kRightChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::RIGHT, bidi.OverallDirection()); + + auto it = bidi.begin(); + EXPECT_EQ(0, it->start); + EXPECT_EQ(3, it->count); + EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(0, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_TRUE(it == bidi.end()); + } +} + +TEST(fxcrt, BidiStringLeftNeutralLeftRight) { + const FX_WCHAR str[] = {kLeftChar, kNeutralChar, kLeftChar, kRightChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); + + auto it = bidi.begin(); + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(0, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(0, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(1, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(2, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(3, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_TRUE(it == bidi.end()); +} + +TEST(fxcrt, BidiStringRightNeutralLeftRight) { + const FX_WCHAR str[] = {kRightChar, kNeutralChar, kLeftChar, kRightChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::RIGHT, bidi.OverallDirection()); + + auto it = bidi.begin(); + EXPECT_EQ(3, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(2, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(1, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_EQ(0, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(0, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + EXPECT_TRUE(it == bidi.end()); +} + +TEST(fxcrt, BidiStringReverse) { + const FX_WCHAR str[] = {kLeftChar, kNeutralChar, kRightChar, kLeftChar, 0}; + CFX_BidiString bidi(str); + EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); + bidi.SetOverallDirectionRight(); + + auto it = bidi.begin(); + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(3, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); + + ++it; + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(2, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); + ASSERT_FALSE(it == bidi.end()); + + ++it; + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(1, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + + ++it; + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(1, it->count); + EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); + + ++it; + ASSERT_FALSE(it == bidi.end()); + EXPECT_EQ(0, it->start); + EXPECT_EQ(0, it->count); + EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); + + ++it; + EXPECT_TRUE(it == bidi.end()); +} diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp new file mode 100644 index 0000000000..ef284a2357 --- /dev/null +++ b/core/fxcrt/fx_extension.cpp @@ -0,0 +1,388 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/extension.h" +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_ext.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +#include +#else +#include +#endif + +CFX_CRTFileStream::CFX_CRTFileStream(IFXCRT_FileAccess* pFA) + : m_pFile(pFA), m_dwCount(1) {} + +CFX_CRTFileStream::~CFX_CRTFileStream() { + if (m_pFile) { + m_pFile->Release(); + } +} + +IFX_FileStream* CFX_CRTFileStream::Retain() { + m_dwCount++; + return this; +} + +void CFX_CRTFileStream::Release() { + FX_DWORD nCount = --m_dwCount; + if (!nCount) { + delete this; + } +} + +FX_FILESIZE CFX_CRTFileStream::GetSize() { + return m_pFile->GetSize(); +} + +FX_BOOL CFX_CRTFileStream::IsEOF() { + return GetPosition() >= GetSize(); +} + +FX_FILESIZE CFX_CRTFileStream::GetPosition() { + return m_pFile->GetPosition(); +} + +FX_BOOL CFX_CRTFileStream::ReadBlock(void* buffer, + FX_FILESIZE offset, + size_t size) { + return (FX_BOOL)m_pFile->ReadPos(buffer, size, offset); +} + +size_t CFX_CRTFileStream::ReadBlock(void* buffer, size_t size) { + return m_pFile->Read(buffer, size); +} + +FX_BOOL CFX_CRTFileStream::WriteBlock(const void* buffer, + FX_FILESIZE offset, + size_t size) { + return (FX_BOOL)m_pFile->WritePos(buffer, size, offset); +} + +FX_BOOL CFX_CRTFileStream::Flush() { + return m_pFile->Flush(); +} + +#ifdef PDF_ENABLE_XFA +IFX_FileAccess* FX_CreateDefaultFileAccess(const CFX_WideStringC& wsPath) { + if (wsPath.GetLength() == 0) + return NULL; + + CFX_CRTFileAccess* pFA = NULL; + pFA = new CFX_CRTFileAccess; + if (NULL == pFA) + return NULL; + + pFA->Init(wsPath); + return pFA; +} +#endif // PDF_ENABLE_XFA + +IFX_FileStream* FX_CreateFileStream(const FX_CHAR* filename, FX_DWORD dwModes) { + IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create(); + if (!pFA) { + return NULL; + } + if (!pFA->Open(filename, dwModes)) { + pFA->Release(); + return NULL; + } + return new CFX_CRTFileStream(pFA); +} +IFX_FileStream* FX_CreateFileStream(const FX_WCHAR* filename, + FX_DWORD dwModes) { + IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create(); + if (!pFA) { + return NULL; + } + if (!pFA->Open(filename, dwModes)) { + pFA->Release(); + return NULL; + } + return new CFX_CRTFileStream(pFA); +} +IFX_FileRead* FX_CreateFileRead(const FX_CHAR* filename) { + return FX_CreateFileStream(filename, FX_FILEMODE_ReadOnly); +} +IFX_FileRead* FX_CreateFileRead(const FX_WCHAR* filename) { + return FX_CreateFileStream(filename, FX_FILEMODE_ReadOnly); +} +IFX_MemoryStream* FX_CreateMemoryStream(uint8_t* pBuffer, + size_t dwSize, + FX_BOOL bTakeOver) { + return new CFX_MemoryStream(pBuffer, dwSize, bTakeOver); +} +IFX_MemoryStream* FX_CreateMemoryStream(FX_BOOL bConsecutive) { + return new CFX_MemoryStream(bConsecutive); +} + +FX_FLOAT FXSYS_tan(FX_FLOAT a) { + return (FX_FLOAT)tan(a); +} +FX_FLOAT FXSYS_logb(FX_FLOAT b, FX_FLOAT x) { + return FXSYS_log(x) / FXSYS_log(b); +} +FX_FLOAT FXSYS_strtof(const FX_CHAR* pcsStr, + int32_t iLength, + int32_t* pUsedLen) { + FXSYS_assert(pcsStr); + if (iLength < 0) { + iLength = (int32_t)FXSYS_strlen(pcsStr); + } + CFX_WideString ws = + CFX_WideString::FromLocal(CFX_ByteString(pcsStr, iLength)); + return FXSYS_wcstof(ws.c_str(), iLength, pUsedLen); +} +FX_FLOAT FXSYS_wcstof(const FX_WCHAR* pwsStr, + int32_t iLength, + int32_t* pUsedLen) { + FXSYS_assert(pwsStr); + if (iLength < 0) { + iLength = (int32_t)FXSYS_wcslen(pwsStr); + } + if (iLength == 0) { + return 0.0f; + } + int32_t iUsedLen = 0; + FX_BOOL bNegtive = FALSE; + switch (pwsStr[iUsedLen]) { + case '-': + bNegtive = TRUE; + case '+': + iUsedLen++; + break; + } + FX_FLOAT fValue = 0.0f; + while (iUsedLen < iLength) { + FX_WCHAR wch = pwsStr[iUsedLen]; + if (wch >= L'0' && wch <= L'9') { + fValue = fValue * 10.0f + (wch - L'0'); + } else { + break; + } + iUsedLen++; + } + if (iUsedLen < iLength && pwsStr[iUsedLen] == L'.') { + FX_FLOAT fPrecise = 0.1f; + while (++iUsedLen < iLength) { + FX_WCHAR wch = pwsStr[iUsedLen]; + if (wch >= L'0' && wch <= L'9') { + fValue += (wch - L'0') * fPrecise; + fPrecise *= 0.1f; + } else { + break; + } + } + } + if (pUsedLen) { + *pUsedLen = iUsedLen; + } + return bNegtive ? -fValue : fValue; +} +FX_WCHAR* FXSYS_wcsncpy(FX_WCHAR* dstStr, + const FX_WCHAR* srcStr, + size_t count) { + FXSYS_assert(dstStr && srcStr && count > 0); + for (size_t i = 0; i < count; ++i) + if ((dstStr[i] = srcStr[i]) == L'\0') { + break; + } + return dstStr; +} +int32_t FXSYS_wcsnicmp(const FX_WCHAR* s1, const FX_WCHAR* s2, size_t count) { + FXSYS_assert(s1 && s2 && count > 0); + FX_WCHAR wch1 = 0, wch2 = 0; + while (count-- > 0) { + wch1 = (FX_WCHAR)FXSYS_tolower(*s1++); + wch2 = (FX_WCHAR)FXSYS_tolower(*s2++); + if (wch1 != wch2) { + break; + } + } + return wch1 - wch2; +} +int32_t FXSYS_strnicmp(const FX_CHAR* s1, const FX_CHAR* s2, size_t count) { + FXSYS_assert(s1 && s2 && count > 0); + FX_CHAR ch1 = 0, ch2 = 0; + while (count-- > 0) { + ch1 = (FX_CHAR)FXSYS_tolower(*s1++); + ch2 = (FX_CHAR)FXSYS_tolower(*s2++); + if (ch1 != ch2) { + break; + } + } + return ch1 - ch2; +} +FX_DWORD FX_HashCode_String_GetA(const FX_CHAR* pStr, + int32_t iLength, + FX_BOOL bIgnoreCase) { + FXSYS_assert(pStr); + if (iLength < 0) { + iLength = (int32_t)FXSYS_strlen(pStr); + } + const FX_CHAR* pStrEnd = pStr + iLength; + FX_DWORD dwHashCode = 0; + if (bIgnoreCase) { + while (pStr < pStrEnd) { + dwHashCode = 31 * dwHashCode + FXSYS_tolower(*pStr++); + } + } else { + while (pStr < pStrEnd) { + dwHashCode = 31 * dwHashCode + *pStr++; + } + } + return dwHashCode; +} +FX_DWORD FX_HashCode_String_GetW(const FX_WCHAR* pStr, + int32_t iLength, + FX_BOOL bIgnoreCase) { + FXSYS_assert(pStr); + if (iLength < 0) { + iLength = (int32_t)FXSYS_wcslen(pStr); + } + const FX_WCHAR* pStrEnd = pStr + iLength; + FX_DWORD dwHashCode = 0; + if (bIgnoreCase) { + while (pStr < pStrEnd) { + dwHashCode = 1313 * dwHashCode + FXSYS_tolower(*pStr++); + } + } else { + while (pStr < pStrEnd) { + dwHashCode = 1313 * dwHashCode + *pStr++; + } + } + return dwHashCode; +} + +void* FX_Random_MT_Start(FX_DWORD dwSeed) { + FX_MTRANDOMCONTEXT* pContext = FX_Alloc(FX_MTRANDOMCONTEXT, 1); + pContext->mt[0] = dwSeed; + FX_DWORD& i = pContext->mti; + FX_DWORD* pBuf = pContext->mt; + for (i = 1; i < MT_N; i++) { + pBuf[i] = (1812433253UL * (pBuf[i - 1] ^ (pBuf[i - 1] >> 30)) + i); + } + pContext->bHaveSeed = TRUE; + return pContext; +} +FX_DWORD FX_Random_MT_Generate(void* pContext) { + FXSYS_assert(pContext); + FX_MTRANDOMCONTEXT* pMTC = static_cast(pContext); + FX_DWORD v; + static FX_DWORD mag[2] = {0, MT_Matrix_A}; + FX_DWORD& mti = pMTC->mti; + FX_DWORD* pBuf = pMTC->mt; + if ((int)mti < 0 || mti >= MT_N) { + if (mti > MT_N && !pMTC->bHaveSeed) { + return 0; + } + FX_DWORD kk; + for (kk = 0; kk < MT_N - MT_M; kk++) { + v = (pBuf[kk] & MT_Upper_Mask) | (pBuf[kk + 1] & MT_Lower_Mask); + pBuf[kk] = pBuf[kk + MT_M] ^ (v >> 1) ^ mag[v & 1]; + } + for (; kk < MT_N - 1; kk++) { + v = (pBuf[kk] & MT_Upper_Mask) | (pBuf[kk + 1] & MT_Lower_Mask); + pBuf[kk] = pBuf[kk + (MT_M - MT_N)] ^ (v >> 1) ^ mag[v & 1]; + } + v = (pBuf[MT_N - 1] & MT_Upper_Mask) | (pBuf[0] & MT_Lower_Mask); + pBuf[MT_N - 1] = pBuf[MT_M - 1] ^ (v >> 1) ^ mag[v & 1]; + mti = 0; + } + v = pBuf[mti++]; + v ^= (v >> 11); + v ^= (v << 7) & 0x9d2c5680UL; + v ^= (v << 15) & 0xefc60000UL; + v ^= (v >> 18); + return v; +} +void FX_Random_MT_Close(void* pContext) { + FXSYS_assert(pContext); + FX_Free(pContext); +} +void FX_Random_GenerateMT(FX_DWORD* pBuffer, int32_t iCount) { + FX_DWORD dwSeed; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + if (!FX_GenerateCryptoRandom(&dwSeed, 1)) { + FX_Random_GenerateBase(&dwSeed, 1); + } +#else + FX_Random_GenerateBase(&dwSeed, 1); +#endif + void* pContext = FX_Random_MT_Start(dwSeed); + while (iCount-- > 0) { + *pBuffer++ = FX_Random_MT_Generate(pContext); + } + FX_Random_MT_Close(pContext); +} +void FX_Random_GenerateBase(FX_DWORD* pBuffer, int32_t iCount) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + SYSTEMTIME st1, st2; + ::GetSystemTime(&st1); + do { + ::GetSystemTime(&st2); + } while (FXSYS_memcmp(&st1, &st2, sizeof(SYSTEMTIME)) == 0); + FX_DWORD dwHash1 = + FX_HashCode_String_GetA((const FX_CHAR*)&st1, sizeof(st1), TRUE); + FX_DWORD dwHash2 = + FX_HashCode_String_GetA((const FX_CHAR*)&st2, sizeof(st2), TRUE); + ::srand((dwHash1 << 16) | (FX_DWORD)dwHash2); +#else + time_t tmLast = time(NULL); + time_t tmCur; + while ((tmCur = time(NULL)) == tmLast) { + continue; + } + + ::srand((tmCur << 16) | (tmLast & 0xFFFF)); +#endif + while (iCount-- > 0) { + *pBuffer++ = (FX_DWORD)((::rand() << 16) | (::rand() & 0xFFFF)); + } +} +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +FX_BOOL FX_GenerateCryptoRandom(FX_DWORD* pBuffer, int32_t iCount) { + HCRYPTPROV hCP = NULL; + if (!::CryptAcquireContext(&hCP, NULL, NULL, PROV_RSA_FULL, 0) || !hCP) { + return FALSE; + } + ::CryptGenRandom(hCP, iCount * sizeof(FX_DWORD), (uint8_t*)pBuffer); + ::CryptReleaseContext(hCP, 0); + return TRUE; +} +#endif +void FX_Random_GenerateCrypto(FX_DWORD* pBuffer, int32_t iCount) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + FX_GenerateCryptoRandom(pBuffer, iCount); +#else + FX_Random_GenerateBase(pBuffer, iCount); +#endif +} + +#ifdef PDF_ENABLE_XFA +void FX_GUID_CreateV4(FX_LPGUID pGUID) { + FX_Random_GenerateMT((FX_DWORD*)pGUID, 4); + uint8_t& b = ((uint8_t*)pGUID)[6]; + b = (b & 0x0F) | 0x40; +} +const FX_CHAR* gs_FX_pHexChars = "0123456789ABCDEF"; +void FX_GUID_ToString(FX_LPCGUID pGUID, + CFX_ByteString& bsStr, + FX_BOOL bSeparator) { + FX_CHAR* pBuf = bsStr.GetBuffer(40); + uint8_t b; + for (int32_t i = 0; i < 16; i++) { + b = ((const uint8_t*)pGUID)[i]; + *pBuf++ = gs_FX_pHexChars[b >> 4]; + *pBuf++ = gs_FX_pHexChars[b & 0x0F]; + if (bSeparator && (i == 3 || i == 5 || i == 7 || i == 9)) { + *pBuf++ = L'-'; + } + } + bsStr.ReleaseBuffer(bSeparator ? 36 : 32); +} +#endif // PDF_ENABLE_XFA diff --git a/core/fxcrt/fx_extension_unittest.cpp b/core/fxcrt/fx_extension_unittest.cpp new file mode 100644 index 0000000000..e2ae870f93 --- /dev/null +++ b/core/fxcrt/fx_extension_unittest.cpp @@ -0,0 +1,28 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/gtest/include/gtest/gtest.h" + +#include "core/include/fxcrt/fx_ext.h" + +TEST(fxcrt, FXSYS_toHexDigit) { + EXPECT_EQ(10, FXSYS_toHexDigit('a')); + EXPECT_EQ(10, FXSYS_toHexDigit('A')); + EXPECT_EQ(7, FXSYS_toHexDigit('7')); + EXPECT_EQ(0, FXSYS_toHexDigit('i')); +} + +TEST(fxcrt, FXSYS_toDecimalDigit) { + EXPECT_EQ(7, FXSYS_toDecimalDigit('7')); + EXPECT_EQ(0, FXSYS_toDecimalDigit('a')); + EXPECT_EQ(7, FXSYS_toDecimalDigit(L'7')); + EXPECT_EQ(0, FXSYS_toDecimalDigit(L'a')); +} + +TEST(fxcrt, FXSYS_isDecimalDigit) { + EXPECT_TRUE(FXSYS_isDecimalDigit('7')); + EXPECT_TRUE(FXSYS_isDecimalDigit(L'7')); + EXPECT_FALSE(FXSYS_isDecimalDigit('a')); + EXPECT_FALSE(FXSYS_isDecimalDigit(L'a')); +} diff --git a/core/fxcrt/fx_system_unittest.cpp b/core/fxcrt/fx_system_unittest.cpp new file mode 100644 index 0000000000..f877eb2aa5 --- /dev/null +++ b/core/fxcrt/fx_system_unittest.cpp @@ -0,0 +1,162 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include +#include + +#include "core/include/fxcrt/fx_system.h" +#include "testing/fx_string_testhelpers.h" +#include "testing/gtest/include/gtest/gtest.h" + +// Unit test covering cases where PDFium replaces well-known library +// functionality on any given platformn. + +#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ + +namespace { + +const FX_CHAR kSentinel = 0x7f; + +void Check32BitBase16Itoa(int32_t input, const char* expected_output) { + const size_t kBufLen = 11; // "-" + 8 digits + NUL + sentinel. + FX_CHAR buf[kBufLen]; + buf[kBufLen - 1] = kSentinel; + FXSYS_itoa(input, buf, 16); + EXPECT_EQ(std::string(expected_output), buf); + EXPECT_EQ(kSentinel, buf[kBufLen - 1]); +} + +void Check32BitBase10Itoa(int32_t input, const char* expected_output) { + const size_t kBufLen = 13; // "-" + 10 digits + NUL + sentinel. + FX_CHAR buf[kBufLen]; + buf[kBufLen - 1] = kSentinel; + FXSYS_itoa(input, buf, 10); + EXPECT_EQ(std::string(expected_output), buf); + EXPECT_EQ(kSentinel, buf[kBufLen - 1]); +} + +void Check32BitBase2Itoa(int32_t input, const char* expected_output) { + const size_t kBufLen = 35; // "-" + 32 digits + NUL + sentinel. + FX_CHAR buf[kBufLen]; + buf[kBufLen - 1] = kSentinel; + FXSYS_itoa(input, buf, 2); + EXPECT_EQ(std::string(expected_output), buf); + EXPECT_EQ(kSentinel, buf[kBufLen - 1]); +} + +void Check64BitBase16Itoa(int64_t input, const char* expected_output) { + const size_t kBufLen = 19; // "-" + 16 digits + NUL + sentinel. + FX_CHAR buf[kBufLen]; + buf[kBufLen - 1] = kSentinel; + FXSYS_i64toa(input, buf, 16); + EXPECT_EQ(std::string(expected_output), buf); + EXPECT_EQ(kSentinel, buf[kBufLen - 1]); +} + +void Check64BitBase10Itoa(int64_t input, const char* expected_output) { + const size_t kBufLen = 22; // "-" + 19 digits + NUL + sentinel. + FX_CHAR buf[kBufLen]; + buf[kBufLen - 1] = kSentinel; + FXSYS_i64toa(input, buf, 10); + EXPECT_EQ(std::string(expected_output), buf); + EXPECT_EQ(kSentinel, buf[kBufLen - 1]); +} + +void Check64BitBase2Itoa(int64_t input, const char* expected_output) { + const size_t kBufLen = 67; // "-" + 64 digits + NUL + sentinel. + FX_CHAR buf[kBufLen]; + buf[kBufLen - 1] = kSentinel; + FXSYS_i64toa(input, buf, 2); + EXPECT_EQ(std::string(expected_output), buf); + EXPECT_EQ(kSentinel, buf[kBufLen - 1]); +} + +} // namespace + +TEST(fxcrt, FXSYS_itoa_InvalidRadix) { + FX_CHAR buf[32]; + + FXSYS_itoa(42, buf, 17); // Ours stops at 16. + EXPECT_EQ(std::string(""), buf); + + FXSYS_itoa(42, buf, 1); + EXPECT_EQ(std::string(""), buf); + + FXSYS_itoa(42, buf, 0); + EXPECT_EQ(std::string(""), buf); + + FXSYS_itoa(42, buf, -1); + EXPECT_EQ(std::string(""), buf); +} + +TEST(fxcrt, FXSYS_itoa) { + Check32BitBase16Itoa(std::numeric_limits::min(), "-80000000"); + Check32BitBase10Itoa(std::numeric_limits::min(), "-2147483648"); + Check32BitBase2Itoa(std::numeric_limits::min(), + "-10000000000000000000000000000000"); + + Check32BitBase16Itoa(-1, "-1"); + Check32BitBase10Itoa(-1, "-1"); + Check32BitBase2Itoa(-1, "-1"); + + Check32BitBase16Itoa(0, "0"); + Check32BitBase10Itoa(0, "0"); + Check32BitBase2Itoa(0, "0"); + + Check32BitBase16Itoa(42, "2a"); + Check32BitBase10Itoa(42, "42"); + Check32BitBase2Itoa(42, "101010"); + + Check32BitBase16Itoa(std::numeric_limits::max(), "7fffffff"); + Check32BitBase10Itoa(std::numeric_limits::max(), "2147483647"); + Check32BitBase2Itoa(std::numeric_limits::max(), + "1111111111111111111111111111111"); +} + +TEST(fxcrt, FXSYS_i64toa_InvalidRadix) { + FX_CHAR buf[32]; + + FXSYS_i64toa(42, buf, 17); // Ours stops at 16. + EXPECT_EQ(std::string(""), buf); + + FXSYS_i64toa(42, buf, 1); + EXPECT_EQ(std::string(""), buf); + + FXSYS_i64toa(42, buf, 0); + EXPECT_EQ(std::string(""), buf); + + FXSYS_i64toa(42, buf, -1); + EXPECT_EQ(std::string(""), buf); +} + +TEST(fxcrt, FXSYS_i64toa) { + Check64BitBase16Itoa(std::numeric_limits::min(), + "-8000000000000000"); + Check64BitBase10Itoa(std::numeric_limits::min(), + "-9223372036854775808"); + Check64BitBase2Itoa( + std::numeric_limits::min(), + "-1000000000000000000000000000000000000000000000000000000000000000"); + + Check64BitBase16Itoa(-1, "-1"); + Check64BitBase10Itoa(-1, "-1"); + Check64BitBase2Itoa(-1, "-1"); + + Check64BitBase16Itoa(0, "0"); + Check64BitBase10Itoa(0, "0"); + Check64BitBase2Itoa(0, "0"); + + Check64BitBase16Itoa(42, "2a"); + Check64BitBase10Itoa(42, "42"); + Check64BitBase2Itoa(42, "101010"); + + Check64BitBase16Itoa(std::numeric_limits::max(), "7fffffffffffffff"); + Check64BitBase10Itoa(std::numeric_limits::max(), + "9223372036854775807"); + Check64BitBase2Itoa( + std::numeric_limits::max(), + "111111111111111111111111111111111111111111111111111111111111111"); +} + +#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ diff --git a/core/fxcrt/fx_ucddata.cpp b/core/fxcrt/fx_ucddata.cpp new file mode 100644 index 0000000000..c373d6e9d6 --- /dev/null +++ b/core/fxcrt/fx_ucddata.cpp @@ -0,0 +1,11013 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_basic.h" +#include "core/include/fxcrt/fx_ucd.h" + +const FX_DWORD kTextLayoutCodeProperties[] = { + 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, + 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe8ae5, 0xfffe9b5c, 0xfffe9ada, + 0xfffe9b1a, 0xfffe9b5b, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, + 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, + 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9b53, 0xfffe9b53, + 0xfffe9b53, 0xfffe9ad3, 0xfffe9323, 0xfffeb005, 0xfffeb002, 0xfffeb24b, + 0xfffeb248, 0xfffeb249, 0xfffeb00b, 0xfffeb002, 0x007eb000, 0x00feb001, + 0xfffeb00b, 0xfffeb208, 0xfffeb1c7, 0xfffeb20e, 0xfffeb1c7, 0xfffeb1c6, + 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, + 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffeb1c7, 0xfffeb007, + 0x017eb000, 0xfffeb00b, 0x01feb001, 0xfffeb005, 0xfffeb00b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0x027eb000, 0xfffeb008, 0x02feb001, 0xfffeb00b, 0xff80b00b, + 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0x037eb000, 0xfffeb00f, 0x03feb001, + 0xfffeb00b, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, + 0xfffeb293, 0xfffeb35d, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, + 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, + 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, + 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, + 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffe91c3, 0xfffeb000, + 0xfffeb249, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb00b, 0xfffeb022, + 0xfffeb022, 0xfffeb00b, 0xfffeb062, 0x047eb000, 0xfffeb00b, 0xfffeb28f, + 0xfffeb00b, 0xfffeb00b, 0xfffeb249, 0xfffeb248, 0xfffeb122, 0xfffeb122, + 0xfffeb010, 0xfffeb04b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb122, + 0xfffeb062, 0x04feb001, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb000, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb022, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb022, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb010, 0xfffeb022, + 0xfffeb022, 0xfffeb022, 0xfffeb010, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, + 0xfffeb062, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, + 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb010, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea183, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea183, 0xfffea183, 0xfffea183, 0xfffea183, + 0xfffea183, 0xfffea183, 0xfffea183, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb007, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb193, 0xfffeb193, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb047, 0xfffeb00f, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe80a4, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffeb08f, 0xfffea193, 0xfffeb08b, 0xfffea193, 0xfffea193, 0xfffeb08b, + 0xfffea193, 0xfffea193, 0xfffeb085, 0xfffea193, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffed0cb, 0xfffed0cb, 0xfffed0cb, 0xfffed0cb, 0xfffed164, 0xfffed164, + 0xfffed00b, 0xfffed00b, 0xfffed14b, 0xfffed249, 0xfffed249, 0xfffed149, + 0xfffed1c7, 0xfffed147, 0xfffed00b, 0xfffed00b, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffed145, 0xfffed164, 0xfffed164, + 0xfffed145, 0xfffed145, 0xfffed164, 0xfffed14b, 0xfffeb94b, 0xfffeb94b, + 0xfffec14b, 0xfffeb94b, 0xfffec94b, 0xfffeb94b, 0xfffec94b, 0xfffec14b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec14b, + 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffed14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec14b, 0xfffec94b, 0xfffec94b, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffed164, + 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, + 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed249, 0xfffed0ca, + 0xfffed0ca, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffea193, 0xfffec14b, + 0xfffec14b, 0xfffec14b, 0xfffea14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec14b, 0xfffec14b, + 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, + 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, + 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffed14b, 0xfffed14b, + 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, + 0xfffec14b, 0xfffec94b, 0xfffec94b, 0xfffec14b, 0xfffec14b, 0xfffec14b, + 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, + 0xfffec94b, 0xfffec14b, 0xfffec94b, 0xfffec14b, 0xfffec94b, 0xfffec94b, + 0xfffec14b, 0xfffec14b, 0xfffec945, 0xfffec14b, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffed0cb, + 0xfffed193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffed14b, 0xfffed14b, 0xfffea193, 0xfffea193, 0xfffed00b, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffec14b, 0xfffec14b, + 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, + 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed14b, 0xfffed14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffe8164, 0xfffeb28b, 0xfffeb14b, 0xfffea193, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffe8164, 0xfffe8164, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffec14b, 0xfffed14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffed14b, 0xfffec14b, + 0xfffec14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffec14b, + 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, + 0xfffeb14b, 0xfffeb14b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb14b, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, + 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, + 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffeb08a, 0xfffeb08a, + 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, + 0xfffeb08a, 0xfffeb08a, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb08b, 0xfffeb08b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb007, 0xfffeb005, 0xfffeb08b, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb08b, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb08b, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffeb08b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffe80a4, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, + 0xfffeb053, 0xfffe8024, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffeb04f, 0xfffeb04f, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffea193, 0xfffeb053, 0xfffeb053, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb053, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, + 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04b, 0xfffeb04b, 0xfffeb249, 0xfffeb249, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb049, 0xfffeb04b, 0xfffeb248, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, + 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffe8024, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffea193, + 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffea193, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffeb248, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb053, 0xfffeb053, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffea193, + 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb053, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, + 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb248, + 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffea053, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, + 0xfffea053, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb053, 0xfffeb053, + 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, + 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb049, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffe8024, 0xfffea193, 0xfffe8024, 0xfffeb053, 0xfffeb053, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb248, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04f, 0xfffeb04f, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, + 0xfffeb05e, 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffeb05e, + 0xfffeb05e, 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffeb05e, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffeb05e, + 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, + 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, + 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffe8024, 0xfffea19e, 0xfffea19e, 0xfffeb05e, + 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffe8024, 0xfffe8024, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, + 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb050, 0xfffeb050, 0xfffeb050, 0xfffeb050, 0xfffeb04b, + 0xfffeb050, 0xfffeb050, 0xfffeb043, 0xfffeb050, 0xfffeb050, 0xfffeb04f, + 0xfffeb043, 0xfffeb045, 0xfffeb045, 0xfffeb045, 0xfffeb045, 0xfffeb045, + 0xfffeb043, 0xfffeb04b, 0xfffeb045, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, 0xfffea193, + 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffea193, 0x057eb000, 0x05feb001, + 0x067eb000, 0x06feb001, 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb04f, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb04f, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffeb04f, 0xfffeb04f, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb050, 0xfffeb050, + 0xfffeb04f, 0xfffeb050, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, + 0xfffea19e, 0xfffeb05e, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, + 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, + 0xfffe3057, 0xfffe3057, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb04f, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb00f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb30f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0x077eb000, 0x07feb001, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, + 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb04f, 0xfffeb04f, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb04f, 0xfffeb04f, + 0xfffeb044, 0xfffeb05e, 0xfffeb04f, 0xfffeb04b, 0xfffeb04f, 0xfffeb248, + 0xfffeb05e, 0xfffea19e, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb00b, 0xfffeb00b, 0xfffeb005, 0xfffeb005, 0xfffeb00f, 0xfffeb00f, + 0xfffeb010, 0xfffeb00b, 0xfffeb005, 0xfffeb005, 0xfffeb00b, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb303, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, + 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb005, 0xfffeb005, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb01e, 0xfffeb01e, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffe8024, 0xfffea19e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, + 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, + 0xfffea19e, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb053, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, + 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, + 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, + 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, 0xfffeb053, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, + 0xfffeb04f, 0xfffeb04f, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, 0xfffeb04f, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb04b, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb010, + 0xfffeb00b, 0xfffe8024, 0xfffeb30f, 0xfffeb30f, 0xfffeb30f, 0xfffeb30f, + 0xfffeb30f, 0xfffeb30f, 0xfffeb30f, 0xfffeb303, 0xfffeb30f, 0xfffeb30f, + 0xfffeb30f, 0xfffeb292, 0xfffe9a93, 0xfffe9a93, 0xfffe9853, 0xfffe9893, + 0xfffeb00f, 0xfffeb003, 0xfffeb00f, 0xff82b00f, 0xff84b011, 0xfffeb022, + 0xfffeb022, 0xfffeb00b, 0x0806b000, 0x0888b002, 0xfffeb000, 0xfffeb002, + 0x090ab000, 0x098cb001, 0xfffeb000, 0xfffeb002, 0xfffeb022, 0xfffeb022, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00d, 0xfffeb00d, 0xfffeb00d, 0xfffeb00f, + 0xfffe9b1a, 0xfffe9b5a, 0xfffe9c53, 0xfffe9bd3, 0xfffe9c93, 0xfffe9c13, + 0xfffe9b93, 0xfffeb1c3, 0xfffeb249, 0xfffeb249, 0xfffeb249, 0xfffeb249, + 0xfffeb249, 0xfffeb009, 0xfffeb009, 0xfffeb009, 0xfffeb00b, 0x0a7eb000, + 0x0afeb001, 0xfffeb022, 0xfffeb004, 0xfffeb004, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb1c7, 0x0b7eb000, + 0x0bfeb001, 0xfffeb004, 0xfffeb004, 0xfffeb004, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00f, 0xfffeb00b, + 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00b, 0xfffeb00f, + 0xfffeb00f, 0xfffeb30f, 0xfffeb294, 0xfffeb28b, 0xfffeb28b, 0xfffeb28b, + 0xfffeb28b, 0xfffe82a4, 0xfffe82a4, 0xfffe82a4, 0xfffe82a4, 0xfffe82a4, + 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, + 0xfffeb10b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb122, 0xfffeb10b, + 0xfffeb10b, 0xfffeb10b, 0xfffeb10b, 0xfffeb10b, 0xfffeb20b, 0xfffeb20b, + 0xfffeb00b, 0x0c7eb000, 0x0cfeb001, 0xfffeb062, 0xfffeb10b, 0xfffeb122, + 0xfffeb122, 0xfffeb122, 0xfffeb122, 0xfffeb10b, 0xfffeb10b, 0xfffeb10b, + 0xfffeb10b, 0xfffeb10b, 0xfffeb20b, 0xfffeb20b, 0xfffeb00b, 0x0d7eb000, + 0x0dfeb001, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, + 0xfffeb248, 0xfffeb249, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, + 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, + 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb249, 0xfffeb248, + 0xfffeb248, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffea193, + 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb009, 0xfffeb00b, 0xfffeb022, + 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb009, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb062, 0xfffeb00b, 0xfffeb04b, 0xfffeb008, 0xfffeb00b, + 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb00b, + 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb062, 0xfffeb04b, 0xfffeb04b, 0xfffeb24b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb022, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, + 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, + 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb062, 0xfffeb062, + 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, + 0xfffeb062, 0xfffeb062, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb022, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, + 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb022, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, + 0xfffeb022, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, + 0x0e7eb022, 0x0efeb00b, 0x0f7eb00b, 0x0ffeb022, 0x107eb00b, 0x10feb00b, + 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb022, 0xfffeb208, 0xfffeb248, + 0xfffeb00b, 0x117eb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, + 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb022, + 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, + 0xfffeb022, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x11feb022, 0x127eb022, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x12feb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0x137eb022, 0x13feb00b, 0x147eb00b, 0x14feb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, + 0xfffeb00b, 0xfffeb00b, 0x157eb022, 0x15feb022, 0x167eb022, 0x16feb022, + 0x177eb00b, 0x17feb00b, 0x187eb022, 0x18feb022, 0xfffeb00b, 0xfffeb00b, + 0x197eb022, 0x19feb022, 0x1a7eb00b, 0x1afeb00b, 0x1b7eb00b, 0x1bfeb00b, + 0x1c7eb00b, 0x1cfeb00b, 0x1d7eb00b, 0x1dfeb00b, 0x1e7eb00b, 0x1efeb00b, + 0x1f7eb00b, 0x1ffeb00b, 0x207eb00b, 0x20feb00b, 0x217eb00b, 0x21feb00b, + 0x227eb00b, 0x22feb00b, 0x237eb022, 0x23feb022, 0x247eb00b, 0x24feb00b, + 0x257eb022, 0x25feb022, 0x267eb00b, 0x26feb00b, 0x277eb00b, 0x27feb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x287eb00b, 0x28feb00b, 0x297eb00b, + 0x29feb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, + 0x2a7eb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x2afeb00b, 0x2b7eb00b, + 0xfffeb00b, 0xfffeb022, 0x2bfeb00b, 0xfffeb00b, 0x2c7eb00b, 0x2cfeb00b, + 0xfffeb00b, 0x2d7eb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0x2dfeb00b, 0x2e7eb00b, 0x2efeb00b, 0x2f7eb00b, 0x2ffeb00b, 0x307eb00b, + 0x30feb00b, 0x317eb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0x31feb00b, 0x327eb00b, 0x32feb00b, 0x337eb00b, 0x33feb00b, + 0xfffeb00b, 0xfffeb00b, 0x347eb00b, 0x34feb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0x357eb00b, 0x35feb00b, 0x367eb00b, 0x36feb00b, + 0x377eb00b, 0x37feb00b, 0x387eb00b, 0x38feb00b, 0x397eb00b, 0x39feb00b, + 0x3a7eb00b, 0x3afeb00b, 0x3b7eb00b, 0x3bfeb00b, 0x3c7eb00b, 0x3cfeb00b, + 0x3d7eb00b, 0x3dfeb00b, 0x3e7eb00b, 0x3efeb00b, 0x3f7eb00b, 0x3ffeb00b, + 0x407eb00b, 0x40feb00b, 0xfffeb00b, 0xfffeb00b, 0x417eb00b, 0x41feb00b, + 0x427eb00b, 0x42feb00b, 0x437eb00b, 0xfffeb00b, 0x43feb00b, 0x447eb00b, + 0xfffeb00b, 0xfffeb00b, 0x44feb00b, 0x457eb00b, 0x45feb00b, 0x467eb00b, + 0x46feb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x477eb00b, 0x47feb00b, + 0x487eb00b, 0x48feb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0x497eb000, 0x49feb001, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3122, 0xfffe3122, + 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, + 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, + 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe3022, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe304b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe0024, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe0024, 0xfffe3022, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe0024, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe300b, + 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe3002, 0xfffe3002, 0xfffe3002, 0xfffe3002, 0xfffe0024, + 0xfffe0024, 0xfffe300b, 0xfffe3005, 0xfffe3005, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0x4a7e3000, 0x4afe3001, 0x4b7e3000, 0x4bfe3001, + 0x4c7e3000, 0x4cfe3001, 0x4d7e3000, 0x4dfe3001, 0x4e7e3000, 0x4efe3001, + 0x4f7e3000, 0x4ffe3001, 0x507e3000, 0x50fe3001, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x517e300b, 0x51fe300b, 0x527e3000, + 0x52fe3001, 0xfffe300b, 0x537e300b, 0x53fe300b, 0xfffe300b, 0xfffe0024, + 0xfffe300b, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x547e300b, 0x54fe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x557e300b, + 0x55fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x567e300b, 0x56fe300b, + 0x577e300b, 0x57fe300b, 0x587e3000, 0x58fe3001, 0x597e3000, 0x59fe3001, + 0x5a7e3000, 0x5afe3001, 0x5b7e3000, 0x5bfe3001, 0x5c7e3000, 0x5cfe3001, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x5d7e3000, 0x5dfe3001, 0x5e7e3000, 0x5efe3001, 0x5f7e3000, + 0x5ffe3001, 0x607e3000, 0x60fe3001, 0x617e3000, 0x61fe3001, 0x627e3000, + 0x62fe3001, 0x637e3000, 0x63fe3001, 0x647e3000, 0x64fe3001, 0x657e3000, + 0x65fe3001, 0x667e3000, 0x66fe3001, 0x677e3000, 0x67fe3001, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0x687e300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0x68fe300b, 0x697e300b, 0xfffe300b, 0xfffe300b, + 0x69fe300b, 0x6a7e300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x6afe300b, + 0x6b7e300b, 0x6bfe300b, 0x6c7e300b, 0xfffe300b, 0x6cfe300b, 0x6d7e300b, + 0xfffe300b, 0xfffe300b, 0x6dfe3000, 0x6e7e3001, 0x6efe3000, 0x6f7e3001, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x6ffe300b, 0xfffe300b, 0xfffe300b, 0x707e300b, 0x70fe300b, + 0xfffe300b, 0xfffe300b, 0x717e3000, 0x71fe3001, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x727e300b, 0x72fe300b, 0x737e300b, 0x73fe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x747e300b, 0x74fe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0x757e300b, 0x75fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x767e300b, 0x76fe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x777e300b, 0x77fe300b, 0xfffe300b, 0xfffe300b, 0x787e300b, + 0x78fe300b, 0x797e300b, 0x79fe300b, 0x7a7e300b, 0x7afe300b, 0x7b7e300b, + 0x7bfe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x7c7e300b, 0x7cfe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x7d7e300b, 0x7dfe300b, 0x7e7e300b, 0x7efe300b, 0x7f7e300b, + 0x7ffe300b, 0x807e300b, 0x80fe300b, 0x817e300b, 0x81fe300b, 0x827e300b, + 0x82fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x837e300b, + 0x83fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x847e300b, 0x84fe300b, + 0x857e300b, 0x85fe300b, 0x867e300b, 0x86fe300b, 0x877e300b, 0x87fe300b, + 0xfffe300b, 0x887e300b, 0x88fe300b, 0xfffe300b, 0xfffe300b, 0x897e300b, + 0x89fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x8a7e300b, 0x8afe300b, 0x8b7e300b, 0x8bfe300b, 0x8c7e300b, + 0x8cfe300b, 0x8d7e300b, 0x8dfe300b, 0x8e7e300b, 0x8efe300b, 0x8f7e300b, + 0x8ffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x907e300b, 0x90fe300b, 0x917e300b, 0x91fe300b, 0x927e300b, + 0x92fe300b, 0x937e300b, 0x93fe300b, 0x947e300b, 0x94fe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0x957e300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x95fe300b, + 0x967e300b, 0x96fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0x977e300b, 0x97fe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0x987e300b, 0x98fe300b, 0x997e300b, 0x99fe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, + 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb005, + 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00b, 0xfffeb005, 0xfffeb00f, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb001, 0xfffeb001, + 0x9a7eb000, 0x9afeb001, 0x9b7eb000, 0x9bfeb001, 0xfffeb002, 0xfffeb002, + 0xfffeb002, 0x9c7eb000, 0x9cfeb001, 0xfffeb002, 0x9d7eb000, 0x9dfeb001, + 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, + 0xfffeb00f, 0xfffeb00f, 0xfffeb00b, 0xfffeb00f, 0xfffeb000, 0xfffeb00f, + 0xfffeb00b, 0xfffeb00b, 0x9e7eb000, 0x9efeb001, 0xfffeb00b, 0xfffeb00b, + 0x9f7eb000, 0x9ffeb001, 0xa07eb000, 0xa0feb001, 0xa17eb000, 0xa1feb001, + 0xa27eb000, 0xa2feb001, 0xa37eb000, 0xa3feb001, 0xfffeb00f, 0xfffeb00f, + 0xfffeb00f, 0xfffeb00f, 0xfffeb005, 0xfffeb00b, 0xfffeb00f, 0xfffeb00f, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe330c, 0xffff3001, 0xffff3001, 0xfffe300c, 0xfffe300c, 0xfffe3044, + 0xfffe304c, 0xfffe304c, 0xa40eb000, 0xa490b001, 0xa512b000, 0xa594b001, + 0xa616b000, 0xa698b001, 0xa71ab000, 0xa79cb001, 0xa81eb000, 0xa8a0b001, + 0xfffe300c, 0xfffe300c, 0xa922b000, 0xa9a4b001, 0xaa7eb000, 0xaafeb001, + 0xab7eb000, 0xabfeb001, 0xac7eb000, 0xacfeb001, 0xfffe3004, 0xfffe3000, + 0xfffe3001, 0xfffe3001, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe2193, 0xfffe2193, 0xfffe2193, 0xfffe2193, 0xfffe2193, 0xfffe2193, + 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, + 0xfffe3044, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe3044, + 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, + 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xffff3044, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xffff3044, + 0xfffe304c, 0xffff3044, 0xfffe304c, 0xffff3044, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, + 0xfffe3044, 0xfffe0024, 0xfffe0024, 0xfffe2193, 0xfffe2193, 0xfffe3004, + 0xfffe3004, 0xfffe3044, 0xfffe3044, 0xfffe304c, 0xfffe3004, 0xfffe3044, + 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, + 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, + 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, + 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3004, + 0xfffeb044, 0xfffe3044, 0xfffe3044, 0xfffe304c, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffeb04c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0024, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe3044, 0xfffe3044, + 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, + 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, + 0xfffe3044, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, + 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0024, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe300c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0064, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0064, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304f, 0xfffe304f, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe300f, + 0xfffe3005, 0xfffe300f, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, + 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304b, 0xfffe304b, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffea193, 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffeb00b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffeb00b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, + 0xfffeb04b, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb00b, 0xfffeb00b, + 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb249, 0xfffeb24b, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb010, 0xfffeb010, 0xfffeb005, 0xfffeb005, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, + 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04f, 0xfffeb04f, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb057, 0xfffeb057, + 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, + 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, + 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, + 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, + 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb053, 0xfffeb053, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, + 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, + 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04f, + 0xfffeb04f, 0xfffeb04f, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, + 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, + 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, + 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, + 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, + 0xfffeb053, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffeb053, + 0xfffeb053, 0xfffeb04f, 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, + 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, + 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, + 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, + 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, + 0xfffe3059, 0xfffe3059, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe0024, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe0024, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, + 0xfffe301f, 0xfffe0024, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, + 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe0064, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe0024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, + 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffeb08b, 0xfffea193, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb20b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffeb08b, 0xfffe80a4, + 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, + 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed800, 0xfffed801, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed964, 0xfffed964, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, + 0xfffed964, 0xfffed964, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, + 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, + 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, + 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, + 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, + 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed949, 0xfffed80b, + 0xfffed964, 0xfffed964, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, + 0xfffe3007, 0xfffe3001, 0xfffe3001, 0xfffe3007, 0xfffe3007, 0xfffe3005, + 0xfffe3005, 0xfffe3000, 0xfffe3001, 0xfffe300d, 0xfffe0024, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffea193, 0xfffea193, + 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, + 0xfffe8024, 0xfffe8024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe3000, 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, + 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, + 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe300c, + 0xfffe300c, 0xfffe3000, 0xfffe3001, 0xfffe300c, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xffa6300c, 0xfffe31c1, 0xfffe300c, + 0xfffe31c1, 0xfffe0024, 0xfffe3004, 0xfffe31c4, 0xfffe3005, 0xfffe3005, + 0xfffe300c, 0xad7e3000, 0xadfe3001, 0xae7e3000, 0xaefe3001, 0xaf7e3000, + 0xaffe3001, 0xfffe324c, 0xfffe300c, 0xfffe300c, 0xfffe320c, 0xfffe320c, + 0xb07e300c, 0xb0fe300c, 0xfffe300c, 0xfffe0024, 0xfffe300c, 0xfffe3248, + 0xfffe3249, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed964, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, + 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed964, 0xfffed964, 0xfffe9a94, + 0xfffe0024, 0xffff3005, 0xfffe300c, 0xfffe324c, 0xfffe3248, 0xfffe3249, + 0xfffe300c, 0xfffe300c, 0xb1283000, 0xb1aa3001, 0xfffe300c, 0xfffe320c, + 0xffff31c1, 0xfffeb20c, 0xffff31c1, 0xfffe31cc, 0xfffe310c, 0xfffe310c, + 0xfffe310c, 0xfffe310c, 0xfffe310c, 0xfffe310c, 0xfffe310c, 0xfffe310c, + 0xfffe310c, 0xfffe310c, 0xffff31c4, 0xffff3004, 0xb27e300c, 0xfffe300c, + 0xb2fe300c, 0xffff3005, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xb37eb000, + 0xfffe300c, 0xb3feb001, 0xfffe300c, 0xfffeb00c, 0xfffe300c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, + 0xfffe304c, 0xb42c3000, 0xfffe300c, 0xb4ae3001, 0xfffeb00c, 0xb57e3000, + 0xb5fe3001, 0xfffeb001, 0xb67eb000, 0xb6feb001, 0xfffeb001, 0xfffe3004, + 0xfffe304b, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, + 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe3044, 0xfffe3044, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe0024, 0xfffe0024, 0xfffe304b, 0xfffe304b, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe0024, 0xfffe0024, + 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, + 0xfffe0024, 0xfffe0024, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe0024, + 0xfffe0024, 0xfffe0024, 0xfffe3249, 0xfffe3248, 0xfffe300c, 0xfffe300c, + 0xfffe300c, 0xfffe3248, 0xfffe3248, 0xfffe0024, 0xfffe300b, 0xfffe300b, + 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, + 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, + 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe3013, 0xfffe3013, 0xfffe3013, + 0xfffe3011, 0xfffe3022, 0xfffe1aa4, 0xfffe1aa4, +}; + +const size_t kTextLayoutCodePropertiesSize = + FX_ArraySize(kTextLayoutCodeProperties); + +const FX_WCHAR kFXTextLayoutVerticalMirror[] = { + 0xFE33, 0xFE32, 0xFE31, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xFE3F, + 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xFE3B, + 0xFE3C, 0xFE39, 0xFE3A, 0xFE34, 0xFE35, 0xFE36, 0xFE37, 0xFE38, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, +}; +const size_t kFXTextLayoutVerticalMirrorSize = + FX_ArraySize(kFXTextLayoutVerticalMirror); + +const FX_WCHAR kFXTextLayoutBidiMirror[] = { + 0x0029, 0x0028, 0x003E, 0x003C, 0x005D, 0x005B, 0x007D, 0x007B, 0x00BB, + 0x00AB, 0x0F3B, 0x0F3A, 0x0F3D, 0x0F3C, 0x169C, 0x169B, 0x2019, 0x2018, + 0x201D, 0x201C, 0x203A, 0x2039, 0x2046, 0x2045, 0x207E, 0x207D, 0x208E, + 0x208D, 0x220B, 0x220C, 0x220D, 0x2208, 0x2209, 0x220A, 0x29F5, 0x223D, + 0x223C, 0x22CD, 0x2253, 0x2252, 0x2255, 0x2254, 0x2265, 0x2264, 0x2267, + 0x2266, 0x2269, 0x2268, 0x226B, 0x226A, 0x226F, 0x226E, 0x2271, 0x2270, + 0x2273, 0x2272, 0x2275, 0x2274, 0x2277, 0x2276, 0x2279, 0x2278, 0x227B, + 0x227A, 0x227D, 0x227C, 0x227F, 0x227E, 0x2281, 0x2280, 0x2283, 0x2282, + 0x2285, 0x2284, 0x2287, 0x2286, 0x2289, 0x2288, 0x228B, 0x228A, 0x2290, + 0x228F, 0x2292, 0x2291, 0x29B8, 0x22A3, 0x22A2, 0x2ADE, 0x2AE4, 0x2AE3, + 0x2AE5, 0x22B1, 0x22B0, 0x22B3, 0x22B2, 0x22B5, 0x22B4, 0x22B7, 0x22B6, + 0x22CA, 0x22C9, 0x22CC, 0x22CB, 0x2243, 0x22D1, 0x22D0, 0x22D7, 0x22D6, + 0x22D9, 0x22D8, 0x22DB, 0x22DA, 0x22DD, 0x22DC, 0x22DF, 0x22DE, 0x22E1, + 0x22E0, 0x22E3, 0x22E2, 0x22E5, 0x22E4, 0x22E7, 0x22E6, 0x22E9, 0x22E8, + 0x22EB, 0x22EA, 0x22ED, 0x22EC, 0x22F1, 0x22F0, 0x22FA, 0x22FB, 0x22FC, + 0x22FD, 0x22FE, 0x22F2, 0x22F3, 0x22F4, 0x22F6, 0x22F7, 0x2309, 0x2308, + 0x230B, 0x230A, 0x232A, 0x2329, 0x2769, 0x2768, 0x276B, 0x276A, 0x276D, + 0x276C, 0x276F, 0x276E, 0x2771, 0x2770, 0x2773, 0x2772, 0x2775, 0x2774, + 0x27C4, 0x27C3, 0x27C6, 0x27C5, 0x27C9, 0x27C8, 0x27D6, 0x27D5, 0x27DE, + 0x27DD, 0x27E3, 0x27E2, 0x27E5, 0x27E4, 0x27E7, 0x27E6, 0x27E9, 0x27E8, + 0x27EB, 0x27EA, 0x27ED, 0x27EC, 0x27EF, 0x27EE, 0x2984, 0x2983, 0x2986, + 0x2985, 0x2988, 0x2987, 0x298A, 0x2989, 0x298C, 0x298B, 0x2990, 0x298F, + 0x298E, 0x298D, 0x2992, 0x2991, 0x2994, 0x2993, 0x2996, 0x2995, 0x2998, + 0x2997, 0x2298, 0x29C1, 0x29C0, 0x29C5, 0x29C4, 0x29D0, 0x29CF, 0x29D2, + 0x29D1, 0x29D5, 0x29D4, 0x29D9, 0x29D8, 0x29DB, 0x29DA, 0x2215, 0x29F9, + 0x29F8, 0x29FD, 0x29FC, 0x2A2C, 0x2A2B, 0x2A2E, 0x2A2D, 0x2A35, 0x2A34, + 0x2A3D, 0x2A3C, 0x2A65, 0x2A64, 0x2A7A, 0x2A79, 0x2A7E, 0x2A7D, 0x2A80, + 0x2A7F, 0x2A82, 0x2A81, 0x2A84, 0x2A83, 0x2A8C, 0x2A8B, 0x2A92, 0x2A91, + 0x2A94, 0x2A93, 0x2A96, 0x2A95, 0x2A98, 0x2A97, 0x2A9A, 0x2A99, 0x2A9C, + 0x2A9B, 0x2AA2, 0x2AA1, 0x2AA7, 0x2AA6, 0x2AA9, 0x2AA8, 0x2AAB, 0x2AAA, + 0x2AAD, 0x2AAC, 0x2AB0, 0x2AAF, 0x2AB4, 0x2AB3, 0x2ABC, 0x2ABB, 0x2ABE, + 0x2ABD, 0x2AC0, 0x2ABF, 0x2AC2, 0x2AC1, 0x2AC4, 0x2AC3, 0x2AC6, 0x2AC5, + 0x2ACE, 0x2ACD, 0x2AD0, 0x2ACF, 0x2AD2, 0x2AD1, 0x2AD4, 0x2AD3, 0x2AD6, + 0x2AD5, 0x22A6, 0x22A9, 0x22A8, 0x22AB, 0x2AED, 0x2AEC, 0x2AF8, 0x2AF7, + 0x2AFA, 0x2AF9, 0x2E03, 0x2E02, 0x2E05, 0x2E04, 0x2E0A, 0x2E09, 0x2E0D, + 0x2E0C, 0x2E1D, 0x2E1C, 0x2E21, 0x2E20, 0x2E23, 0x2E22, 0x2E25, 0x2E24, + 0x2E27, 0x2E26, 0x2E29, 0x2E28, 0x3009, 0x3008, 0x300B, 0x300A, 0x300D, + 0x300C, 0x300F, 0x300E, 0x3011, 0x3010, 0x3015, 0x3014, 0x3017, 0x3016, + 0x3019, 0x3018, 0x301B, 0x301A, 0xFE5A, 0xFE59, 0xFE5C, 0xFE5B, 0xFE5E, + 0xFE5D, 0xFE65, 0xFE64, 0xFF09, 0xFF08, 0xFF1E, 0xFF1C, 0xFF3D, 0xFF3B, + 0xFF5D, 0xFF5B, 0xFF60, 0xFF5F, 0xFF63, 0xFF62, 0xFFFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, + 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, +}; + +const size_t kFXTextLayoutBidiMirrorSize = + FX_ArraySize(kFXTextLayoutBidiMirror); diff --git a/core/fxcrt/fx_unicode.cpp b/core/fxcrt/fx_unicode.cpp new file mode 100644 index 0000000000..140bab0b27 --- /dev/null +++ b/core/fxcrt/fx_unicode.cpp @@ -0,0 +1,67 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_ucd.h" + +FX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch) { + size_t idx = static_cast(wch); + if (idx < kTextLayoutCodePropertiesSize) + return kTextLayoutCodeProperties[(FX_WORD)wch]; + return 0; +} + +#ifdef PDF_ENABLE_XFA +FX_BOOL FX_IsCtrlCode(FX_WCHAR ch) { + FX_DWORD dwRet = (FX_GetUnicodeProperties(ch) & FX_CHARTYPEBITSMASK); + return dwRet == FX_CHARTYPE_Tab || dwRet == FX_CHARTYPE_Control; +} +#endif // PDF_ENABLE_XFA + +FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical) { + FX_DWORD dwProps = FX_GetUnicodeProperties(wch); + FX_DWORD dwTemp = (dwProps & 0xFF800000); + if (bRTL && dwTemp < 0xFF800000) { + size_t idx = dwTemp >> 23; + if (idx < kFXTextLayoutBidiMirrorSize) { + wch = kFXTextLayoutBidiMirror[idx]; + dwProps = FX_GetUnicodeProperties(wch); + } + } + if (bVertical) { + dwTemp = (dwProps & 0x007E0000); + if (dwTemp < 0x007E0000) { + size_t idx = dwTemp >> 17; + if (idx < kFXTextLayoutVerticalMirrorSize) + wch = kFXTextLayoutVerticalMirror[idx]; + } + } + return wch; +} + +#ifdef PDF_ENABLE_XFA +FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, + FX_DWORD dwProps, + FX_BOOL bRTL, + FX_BOOL bVertical) { + FX_DWORD dwTemp = (dwProps & 0xFF800000); + if (bRTL && dwTemp < 0xFF800000) { + size_t idx = dwTemp >> 23; + if (idx < kFXTextLayoutBidiMirrorSize) { + wch = kFXTextLayoutBidiMirror[idx]; + dwProps = FX_GetUnicodeProperties(wch); + } + } + if (bVertical) { + dwTemp = (dwProps & 0x007E0000); + if (dwTemp < 0x007E0000) { + size_t idx = dwTemp >> 17; + if (idx < kFXTextLayoutVerticalMirrorSize) + wch = kFXTextLayoutVerticalMirror[idx]; + } + } + return wch; +} +#endif // PDF_ENABLE_XFA diff --git a/core/fxcrt/fx_xml_composer.cpp b/core/fxcrt/fx_xml_composer.cpp new file mode 100644 index 0000000000..93aee899dd --- /dev/null +++ b/core/fxcrt/fx_xml_composer.cpp @@ -0,0 +1,43 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/xml_int.h" + +#include "core/include/fxcrt/fx_xml.h" + +void FX_XML_SplitQualifiedName(const CFX_ByteStringC& bsFullName, + CFX_ByteStringC& bsSpace, + CFX_ByteStringC& bsName) { + if (bsFullName.IsEmpty()) { + return; + } + int32_t iStart = 0; + for (; iStart < bsFullName.GetLength(); iStart++) { + if (bsFullName.GetAt(iStart) == ':') { + break; + } + } + if (iStart >= bsFullName.GetLength()) { + bsName = bsFullName; + } else { + bsSpace = CFX_ByteStringC(bsFullName.GetCStr(), iStart); + iStart++; + bsName = CFX_ByteStringC(bsFullName.GetCStr() + iStart, + bsFullName.GetLength() - iStart); + } +} +void CXML_Element::SetTag(const CFX_ByteStringC& qSpace, + const CFX_ByteStringC& tagname) { + m_QSpaceName = qSpace; + m_TagName = tagname; +} +void CXML_Element::SetTag(const CFX_ByteStringC& qTagName) { + ASSERT(!qTagName.IsEmpty()); + CFX_ByteStringC bsSpace, bsName; + FX_XML_SplitQualifiedName(qTagName, bsSpace, bsName); + m_QSpaceName = bsSpace; + m_TagName = bsName; +} diff --git a/core/fxcrt/fx_xml_parser.cpp b/core/fxcrt/fx_xml_parser.cpp new file mode 100644 index 0000000000..d5326d3882 --- /dev/null +++ b/core/fxcrt/fx_xml_parser.cpp @@ -0,0 +1,795 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/xml_int.h" + +#include + +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxcrt/fx_xml.h" +#include "third_party/base/stl_util.h" + +CXML_Parser::~CXML_Parser() { + if (m_bOwnedStream) { + m_pDataAcc->Release(); + } +} +FX_BOOL CXML_Parser::Init(uint8_t* pBuffer, size_t size) { + m_pDataAcc = new CXML_DataBufAcc(pBuffer, size); + return Init(TRUE); +} +FX_BOOL CXML_Parser::Init(IFX_FileRead* pFileRead) { + m_pDataAcc = new CXML_DataStmAcc(pFileRead); + return Init(TRUE); +} +FX_BOOL CXML_Parser::Init(IFX_BufferRead* pBuffer) { + if (!pBuffer) { + return FALSE; + } + m_pDataAcc = pBuffer; + return Init(FALSE); +} +FX_BOOL CXML_Parser::Init(FX_BOOL bOwndedStream) { + m_bOwnedStream = bOwndedStream; + m_nOffset = 0; + return ReadNextBlock(); +} +FX_BOOL CXML_Parser::ReadNextBlock() { + if (!m_pDataAcc->ReadNextBlock()) { + return FALSE; + } + m_pBuffer = m_pDataAcc->GetBlockBuffer(); + m_dwBufferSize = m_pDataAcc->GetBlockSize(); + m_nBufferOffset = m_pDataAcc->GetBlockOffset(); + m_dwIndex = 0; + return m_dwBufferSize > 0; +} +FX_BOOL CXML_Parser::IsEOF() { + if (!m_pDataAcc->IsEOF()) { + return FALSE; + } + return m_dwIndex >= m_dwBufferSize; +} +#define FXCRTM_XML_CHARTYPE_Normal 0x00 +#define FXCRTM_XML_CHARTYPE_SpaceChar 0x01 +#define FXCRTM_XML_CHARTYPE_Letter 0x02 +#define FXCRTM_XML_CHARTYPE_Digital 0x04 +#define FXCRTM_XML_CHARTYPE_NameIntro 0x08 +#define FXCRTM_XML_CHARTYPE_NameChar 0x10 +#define FXCRTM_XML_CHARTYPE_HexDigital 0x20 +#define FXCRTM_XML_CHARTYPE_HexLowerLetter 0x40 +#define FXCRTM_XML_CHARTYPE_HexUpperLetter 0x60 +#define FXCRTM_XML_CHARTYPE_HexChar 0x60 +uint8_t g_FXCRT_XML_ByteTypes[256] = { + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, + 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, + 0x1A, 0x1A, 0x01, 0x01, +}; +FX_BOOL g_FXCRT_XML_IsWhiteSpace(uint8_t ch) { + return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_SpaceChar) != 0; +} +FX_BOOL g_FXCRT_XML_IsLetter(uint8_t ch) { + return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Letter) != 0; +} +FX_BOOL g_FXCRT_XML_IsDigital(uint8_t ch) { + return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Digital) != 0; +} +FX_BOOL g_FXCRT_XML_IsNameIntro(uint8_t ch) { + return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameIntro) != 0; +} +FX_BOOL g_FXCRT_XML_IsNameChar(uint8_t ch) { + return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameChar) != 0; +} +FX_BOOL g_FXCRT_XML_IsHexChar(uint8_t ch) { + return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_HexChar) != 0; +} +void CXML_Parser::SkipWhiteSpaces() { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (IsEOF()) { + return; + } + do { + while (m_dwIndex < m_dwBufferSize && + g_FXCRT_XML_IsWhiteSpace(m_pBuffer[m_dwIndex])) { + m_dwIndex++; + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); +} +void CXML_Parser::GetName(CFX_ByteString& space, CFX_ByteString& name) { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (IsEOF()) { + return; + } + CFX_ByteTextBuf buf; + uint8_t ch; + do { + while (m_dwIndex < m_dwBufferSize) { + ch = m_pBuffer[m_dwIndex]; + if (ch == ':') { + space = buf.GetByteString(); + buf.Clear(); + } else if (g_FXCRT_XML_IsNameChar(ch)) { + buf.AppendChar(ch); + } else { + break; + } + m_dwIndex++; + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); + name = buf.GetByteString(); +} +void CXML_Parser::SkipLiterals(const CFX_ByteStringC& str) { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (IsEOF()) { + return; + } + int32_t i = 0, iLen = str.GetLength(); + do { + while (m_dwIndex < m_dwBufferSize) { + if (str.GetAt(i) != m_pBuffer[m_dwIndex++]) { + i = 0; + } else { + i++; + if (i == iLen) { + break; + } + } + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (i == iLen) { + return; + } + if (m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); + while (!m_pDataAcc->IsEOF()) { + ReadNextBlock(); + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwBufferSize; + } + m_dwIndex = m_dwBufferSize; +} +FX_DWORD CXML_Parser::GetCharRef() { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (IsEOF()) { + return 0; + } + uint8_t ch; + int32_t iState = 0; + CFX_ByteTextBuf buf; + FX_DWORD code = 0; + do { + while (m_dwIndex < m_dwBufferSize) { + ch = m_pBuffer[m_dwIndex]; + switch (iState) { + case 0: + if (ch == '#') { + m_dwIndex++; + iState = 2; + break; + } + iState = 1; + case 1: + m_dwIndex++; + if (ch == ';') { + CFX_ByteStringC ref = buf.GetByteString(); + if (ref == "gt") { + code = '>'; + } else if (ref == "lt") { + code = '<'; + } else if (ref == "amp") { + code = '&'; + } else if (ref == "apos") { + code = '\''; + } else if (ref == "quot") { + code = '"'; + } + iState = 10; + break; + } + buf.AppendByte(ch); + break; + case 2: + if (ch == 'x') { + m_dwIndex++; + iState = 4; + break; + } + iState = 3; + case 3: + m_dwIndex++; + if (ch == ';') { + iState = 10; + break; + } + if (g_FXCRT_XML_IsDigital(ch)) + code = code * 10 + FXSYS_toDecimalDigit(static_cast(ch)); + break; + case 4: + m_dwIndex++; + if (ch == ';') { + iState = 10; + break; + } + uint8_t nHex = + g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_HexChar; + if (nHex) { + if (nHex == FXCRTM_XML_CHARTYPE_HexDigital) { + code = + (code << 4) + FXSYS_toDecimalDigit(static_cast(ch)); + } else if (nHex == FXCRTM_XML_CHARTYPE_HexLowerLetter) { + code = (code << 4) + ch - 87; + } else { + code = (code << 4) + ch - 55; + } + } + break; + } + if (iState == 10) { + break; + } + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); + return code; +} +void CXML_Parser::GetAttrValue(CFX_WideString& value) { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (IsEOF()) { + return; + } + CFX_UTF8Decoder decoder; + uint8_t mark = 0, ch = 0; + do { + while (m_dwIndex < m_dwBufferSize) { + ch = m_pBuffer[m_dwIndex]; + if (mark == 0) { + if (ch != '\'' && ch != '"') { + return; + } + mark = ch; + m_dwIndex++; + ch = 0; + continue; + } + m_dwIndex++; + if (ch == mark) { + break; + } + if (ch == '&') { + decoder.AppendChar(GetCharRef()); + if (IsEOF()) { + value = decoder.GetResult(); + return; + } + } else { + decoder.Input(ch); + } + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (ch == mark || m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); + value = decoder.GetResult(); +} +void CXML_Parser::GetTagName(CFX_ByteString& space, + CFX_ByteString& name, + FX_BOOL& bEndTag, + FX_BOOL bStartTag) { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (IsEOF()) { + return; + } + bEndTag = FALSE; + uint8_t ch; + int32_t iState = bStartTag ? 1 : 0; + do { + while (m_dwIndex < m_dwBufferSize) { + ch = m_pBuffer[m_dwIndex]; + switch (iState) { + case 0: + m_dwIndex++; + if (ch != '<') { + break; + } + iState = 1; + break; + case 1: + if (ch == '?') { + m_dwIndex++; + SkipLiterals("?>"); + iState = 0; + break; + } else if (ch == '!') { + m_dwIndex++; + SkipLiterals("-->"); + iState = 0; + break; + } + if (ch == '/') { + m_dwIndex++; + GetName(space, name); + bEndTag = TRUE; + } else { + GetName(space, name); + bEndTag = FALSE; + } + return; + } + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); +} +CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, + FX_BOOL bStartTag) { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (IsEOF()) { + return nullptr; + } + CFX_ByteString tag_name, tag_space; + FX_BOOL bEndTag; + GetTagName(tag_space, tag_name, bEndTag, bStartTag); + if (tag_name.IsEmpty() || bEndTag) { + return nullptr; + } + CXML_Element* pElement = new CXML_Element; + pElement->m_pParent = pParent; + pElement->SetTag(tag_space, tag_name); + do { + CFX_ByteString attr_space, attr_name; + while (m_dwIndex < m_dwBufferSize) { + SkipWhiteSpaces(); + if (IsEOF()) { + break; + } + if (!g_FXCRT_XML_IsNameIntro(m_pBuffer[m_dwIndex])) { + break; + } + GetName(attr_space, attr_name); + SkipWhiteSpaces(); + if (IsEOF()) { + break; + } + if (m_pBuffer[m_dwIndex] != '=') { + break; + } + m_dwIndex++; + SkipWhiteSpaces(); + if (IsEOF()) { + break; + } + CFX_WideString attr_value; + GetAttrValue(attr_value); + pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value); + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); + SkipWhiteSpaces(); + if (IsEOF()) { + return pElement; + } + uint8_t ch = m_pBuffer[m_dwIndex++]; + if (ch == '/') { + m_dwIndex++; + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + return pElement; + } + if (ch != '>') { + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + delete pElement; + return nullptr; + } + SkipWhiteSpaces(); + if (IsEOF()) { + return pElement; + } + CFX_UTF8Decoder decoder; + CFX_WideTextBuf content; + FX_BOOL bCDATA = FALSE; + int32_t iState = 0; + do { + while (m_dwIndex < m_dwBufferSize) { + ch = m_pBuffer[m_dwIndex++]; + switch (iState) { + case 0: + if (ch == '<') { + iState = 1; + } else if (ch == '&') { + decoder.ClearStatus(); + decoder.AppendChar(GetCharRef()); + } else { + decoder.Input(ch); + } + break; + case 1: + if (ch == '!') { + iState = 2; + } else if (ch == '?') { + SkipLiterals("?>"); + SkipWhiteSpaces(); + iState = 0; + } else if (ch == '/') { + CFX_ByteString space, name; + GetName(space, name); + SkipWhiteSpaces(); + m_dwIndex++; + iState = 10; + } else { + content << decoder.GetResult(); + CFX_WideString dataStr = content.GetWideString(); + if (!bCDATA && !m_bSaveSpaceChars) { + dataStr.TrimRight(L" \t\r\n"); + } + InsertContentSegment(bCDATA, dataStr, pElement); + content.Clear(); + decoder.Clear(); + bCDATA = FALSE; + iState = 0; + m_dwIndex--; + CXML_Element* pSubElement = ParseElement(pElement, TRUE); + if (!pSubElement) { + break; + } + pSubElement->m_pParent = pElement; + pElement->m_Children.push_back( + {CXML_Element::Element, pSubElement}); + SkipWhiteSpaces(); + } + break; + case 2: + if (ch == '[') { + SkipLiterals("]]>"); + } else if (ch == '-') { + m_dwIndex++; + SkipLiterals("-->"); + } else { + SkipLiterals(">"); + } + decoder.Clear(); + SkipWhiteSpaces(); + iState = 0; + break; + } + if (iState == 10) { + break; + } + } + m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; + if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) { + break; + } + } while (ReadNextBlock()); + content << decoder.GetResult(); + CFX_WideString dataStr = content.GetWideString(); + if (!m_bSaveSpaceChars) { + dataStr.TrimRight(L" \t\r\n"); + } + InsertContentSegment(bCDATA, dataStr, pElement); + content.Clear(); + decoder.Clear(); + bCDATA = FALSE; + return pElement; +} +void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, + const CFX_WideStringC& content, + CXML_Element* pElement) { + if (content.IsEmpty()) { + return; + } + CXML_Content* pContent = new CXML_Content; + pContent->Set(bCDATA, content); + pElement->m_Children.push_back({CXML_Element::Content, pContent}); +} +static CXML_Element* XML_ContinueParse(CXML_Parser& parser, + FX_BOOL bSaveSpaceChars, + FX_FILESIZE* pParsedSize) { + parser.m_bSaveSpaceChars = bSaveSpaceChars; + CXML_Element* pElement = parser.ParseElement(nullptr, FALSE); + if (pParsedSize) { + *pParsedSize = parser.m_nOffset; + } + return pElement; +} +CXML_Element* CXML_Element::Parse(const void* pBuffer, + size_t size, + FX_BOOL bSaveSpaceChars, + FX_FILESIZE* pParsedSize) { + CXML_Parser parser; + if (!parser.Init((uint8_t*)pBuffer, size)) { + return nullptr; + } + return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); +} +CXML_Element* CXML_Element::Parse(IFX_FileRead* pFile, + FX_BOOL bSaveSpaceChars, + FX_FILESIZE* pParsedSize) { + CXML_Parser parser; + if (!parser.Init(pFile)) { + return nullptr; + } + return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); +} +CXML_Element* CXML_Element::Parse(IFX_BufferRead* pBuffer, + FX_BOOL bSaveSpaceChars, + FX_FILESIZE* pParsedSize) { + CXML_Parser parser; + if (!parser.Init(pBuffer)) { + return nullptr; + } + return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); +} +CXML_Element::CXML_Element() : m_QSpaceName(), m_TagName(), m_AttrMap() {} +CXML_Element::CXML_Element(const CFX_ByteStringC& qSpace, + const CFX_ByteStringC& tagName) + : m_QSpaceName(), m_TagName(), m_AttrMap() { + m_QSpaceName = qSpace; + m_TagName = tagName; +} +CXML_Element::CXML_Element(const CFX_ByteStringC& qTagName) + : m_pParent(nullptr), m_QSpaceName(), m_TagName(), m_AttrMap() { + SetTag(qTagName); +} +CXML_Element::~CXML_Element() { + Empty(); +} +void CXML_Element::Empty() { + RemoveChildren(); +} +void CXML_Element::RemoveChildren() { + for (const ChildRecord& record : m_Children) { + if (record.type == Content) { + delete static_cast(record.child); + } else if (record.type == Element) { + CXML_Element* child = static_cast(record.child); + child->RemoveChildren(); + delete child; + } + } + m_Children.clear(); +} +CFX_ByteString CXML_Element::GetTagName(FX_BOOL bQualified) const { + if (!bQualified || m_QSpaceName.IsEmpty()) { + return m_TagName; + } + CFX_ByteString bsTag = m_QSpaceName; + bsTag += ":"; + bsTag += m_TagName; + return bsTag; +} +CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const { + if (bQualified) { + return m_QSpaceName; + } + return GetNamespaceURI(m_QSpaceName); +} +CFX_ByteString CXML_Element::GetNamespaceURI( + const CFX_ByteStringC& qName) const { + const CFX_WideString* pwsSpace; + const CXML_Element* pElement = this; + do { + if (qName.IsEmpty()) { + pwsSpace = pElement->m_AttrMap.Lookup("", "xmlns"); + } else { + pwsSpace = pElement->m_AttrMap.Lookup("xmlns", qName); + } + if (pwsSpace) { + break; + } + pElement = pElement->GetParent(); + } while (pElement); + return pwsSpace ? FX_UTF8Encode(*pwsSpace) : CFX_ByteString(); +} +void CXML_Element::GetAttrByIndex(int index, + CFX_ByteString& space, + CFX_ByteString& name, + CFX_WideString& value) const { + if (index < 0 || index >= m_AttrMap.GetSize()) { + return; + } + CXML_AttrItem& item = m_AttrMap.GetAt(index); + space = item.m_QSpaceName; + name = item.m_AttrName; + value = item.m_Value; +} +FX_BOOL CXML_Element::HasAttr(const CFX_ByteStringC& name) const { + CFX_ByteStringC bsSpace, bsName; + FX_XML_SplitQualifiedName(name, bsSpace, bsName); + return !!m_AttrMap.Lookup(bsSpace, bsName); +} +FX_BOOL CXML_Element::GetAttrValue(const CFX_ByteStringC& name, + CFX_WideString& attribute) const { + CFX_ByteStringC bsSpace, bsName; + FX_XML_SplitQualifiedName(name, bsSpace, bsName); + return GetAttrValue(bsSpace, bsName, attribute); +} +FX_BOOL CXML_Element::GetAttrValue(const CFX_ByteStringC& space, + const CFX_ByteStringC& name, + CFX_WideString& attribute) const { + const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); + if (pValue) { + attribute = *pValue; + return TRUE; + } + return FALSE; +} +FX_BOOL CXML_Element::GetAttrInteger(const CFX_ByteStringC& name, + int& attribute) const { + CFX_ByteStringC bsSpace, bsName; + FX_XML_SplitQualifiedName(name, bsSpace, bsName); + const CFX_WideString* pwsValue = m_AttrMap.Lookup(bsSpace, bsName); + if (pwsValue) { + attribute = pwsValue->GetInteger(); + return TRUE; + } + return FALSE; +} +FX_BOOL CXML_Element::GetAttrInteger(const CFX_ByteStringC& space, + const CFX_ByteStringC& name, + int& attribute) const { + const CFX_WideString* pwsValue = m_AttrMap.Lookup(space, name); + if (pwsValue) { + attribute = pwsValue->GetInteger(); + return TRUE; + } + return FALSE; +} +FX_BOOL CXML_Element::GetAttrFloat(const CFX_ByteStringC& name, + FX_FLOAT& attribute) const { + CFX_ByteStringC bsSpace, bsName; + FX_XML_SplitQualifiedName(name, bsSpace, bsName); + return GetAttrFloat(bsSpace, bsName, attribute); +} +FX_BOOL CXML_Element::GetAttrFloat(const CFX_ByteStringC& space, + const CFX_ByteStringC& name, + FX_FLOAT& attribute) const { + const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); + if (pValue) { + attribute = pValue->GetFloat(); + return TRUE; + } + return FALSE; +} +CXML_Element::ChildType CXML_Element::GetChildType(FX_DWORD index) const { + return index < m_Children.size() ? m_Children[index].type : Invalid; +} +CFX_WideString CXML_Element::GetContent(FX_DWORD index) const { + if (index < m_Children.size() && m_Children[index].type == Content) { + CXML_Content* pContent = + static_cast(m_Children[index].child); + if (pContent) + return pContent->m_Content; + } + return CFX_WideString(); +} +CXML_Element* CXML_Element::GetElement(FX_DWORD index) const { + if (index < m_Children.size() && m_Children[index].type == Element) { + return static_cast(m_Children[index].child); + } + return nullptr; +} +FX_DWORD CXML_Element::CountElements(const CFX_ByteStringC& space, + const CFX_ByteStringC& tag) const { + int count = 0; + for (const ChildRecord& record : m_Children) { + if (record.type != Element) + continue; + + CXML_Element* pKid = static_cast(record.child); + if ((space.IsEmpty() || pKid->m_QSpaceName == space) && + pKid->m_TagName == tag) { + count++; + } + } + return count; +} +CXML_Element* CXML_Element::GetElement(const CFX_ByteStringC& space, + const CFX_ByteStringC& tag, + int index) const { + if (index < 0) + return nullptr; + + for (const ChildRecord& record : m_Children) { + if (record.type != Element) + continue; + + CXML_Element* pKid = static_cast(record.child); + if ((space.IsEmpty() || pKid->m_QSpaceName == space) && + pKid->m_TagName == tag) { + if (index-- == 0) + return pKid; + } + } + return nullptr; +} +FX_DWORD CXML_Element::FindElement(CXML_Element* pChild) const { + int index = 0; + for (const ChildRecord& record : m_Children) { + if (record.type == Element && + static_cast(record.child) == pChild) { + return index; + } + ++index; + } + return (FX_DWORD)-1; +} + +bool CXML_AttrItem::Matches(const CFX_ByteStringC& space, + const CFX_ByteStringC& name) const { + return (space.IsEmpty() || m_QSpaceName == space) && m_AttrName == name; +} + +const CFX_WideString* CXML_AttrMap::Lookup(const CFX_ByteStringC& space, + const CFX_ByteStringC& name) const { + if (!m_pMap) + return nullptr; + + for (const auto& item : *m_pMap) { + if (item.Matches(space, name)) + return &item.m_Value; + } + return nullptr; +} + +void CXML_AttrMap::SetAt(const CFX_ByteStringC& space, + const CFX_ByteStringC& name, + const CFX_WideStringC& value) { + if (!m_pMap) + m_pMap.reset(new std::vector); + + for (CXML_AttrItem& item : *m_pMap) { + if (item.Matches(space, name)) { + item.m_Value = value; + return; + } + } + + m_pMap->push_back({space, name, value}); +} + +int CXML_AttrMap::GetSize() const { + return m_pMap ? pdfium::CollectionSize(*m_pMap) : 0; +} + +CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { + return (*m_pMap)[index]; +} diff --git a/core/fxcrt/fxcrt_platforms.cpp b/core/fxcrt/fxcrt_platforms.cpp new file mode 100644 index 0000000000..b4f6ffa109 --- /dev/null +++ b/core/fxcrt/fxcrt_platforms.cpp @@ -0,0 +1,132 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/fxcrt_platforms.h" + +#include "core/include/fxcrt/fx_basic.h" + +#if (_FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ && \ + _FXM_PLATFORM_ != _FXM_PLATFORM_LINUX_ && \ + _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ && \ + _FXM_PLATFORM_ != _FXM_PLATFORM_ANDROID_) +IFXCRT_FileAccess* FXCRT_FileAccess_Create() { + return new CFXCRT_FileAccess_CRT; +} +void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_ByteString& bsMode) { + if (dwModes & FX_FILEMODE_ReadOnly) { + bsMode = "rb"; + } else if (dwModes & FX_FILEMODE_Truncate) { + bsMode = "w+b"; + } else { + bsMode = "a+b"; + } +} +void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString& wsMode) { + if (dwModes & FX_FILEMODE_ReadOnly) { + wsMode = FX_WSTRC(L"rb"); + } else if (dwModes & FX_FILEMODE_Truncate) { + wsMode = FX_WSTRC(L"w+b"); + } else { + wsMode = FX_WSTRC(L"a+b"); + } +} +CFXCRT_FileAccess_CRT::CFXCRT_FileAccess_CRT() : m_hFile(NULL) {} +CFXCRT_FileAccess_CRT::~CFXCRT_FileAccess_CRT() { + Close(); +} +FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_ByteStringC& fileName, + FX_DWORD dwMode) { + if (m_hFile) { + return FALSE; + } + CFX_ByteString strMode; + FXCRT_GetFileModeString(dwMode, strMode); + m_hFile = FXSYS_fopen(fileName.GetCStr(), strMode.c_str()); + return m_hFile != NULL; +} +FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_WideStringC& fileName, + FX_DWORD dwMode) { + if (m_hFile) { + return FALSE; + } + CFX_WideString strMode; + FXCRT_GetFileModeString(dwMode, strMode); + m_hFile = FXSYS_wfopen(fileName.GetPtr(), strMode.c_str()); + return m_hFile != NULL; +} +void CFXCRT_FileAccess_CRT::Close() { + if (!m_hFile) { + return; + } + FXSYS_fclose(m_hFile); + m_hFile = NULL; +} +void CFXCRT_FileAccess_CRT::Release() { + delete this; +} +FX_FILESIZE CFXCRT_FileAccess_CRT::GetSize() const { + if (!m_hFile) { + return 0; + } + FX_FILESIZE pos = (FX_FILESIZE)FXSYS_ftell(m_hFile); + FXSYS_fseek(m_hFile, 0, FXSYS_SEEK_END); + FX_FILESIZE size = (FX_FILESIZE)FXSYS_ftell(m_hFile); + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); + return size; +} +FX_FILESIZE CFXCRT_FileAccess_CRT::GetPosition() const { + if (!m_hFile) { + return (FX_FILESIZE)-1; + } + return (FX_FILESIZE)FXSYS_ftell(m_hFile); +} +FX_FILESIZE CFXCRT_FileAccess_CRT::SetPosition(FX_FILESIZE pos) { + if (!m_hFile) { + return (FX_FILESIZE)-1; + } + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); + return (FX_FILESIZE)FXSYS_ftell(m_hFile); +} +size_t CFXCRT_FileAccess_CRT::Read(void* pBuffer, size_t szBuffer) { + if (!m_hFile) { + return 0; + } + return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile); +} +size_t CFXCRT_FileAccess_CRT::Write(const void* pBuffer, size_t szBuffer) { + if (!m_hFile) { + return 0; + } + return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile); +} +size_t CFXCRT_FileAccess_CRT::ReadPos(void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) { + if (!m_hFile) { + return (FX_FILESIZE)-1; + } + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); + return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile); +} +size_t CFXCRT_FileAccess_CRT::WritePos(const void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) { + if (!m_hFile) { + return (FX_FILESIZE)-1; + } + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); + return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile); +} +FX_BOOL CFXCRT_FileAccess_CRT::Flush() { + if (!m_hFile) { + return FALSE; + } + return !FXSYS_fflush(m_hFile); +} +FX_BOOL CFXCRT_FileAccess_CRT::Truncate(FX_FILESIZE szFile) { + return FALSE; +} +#endif diff --git a/core/fxcrt/fxcrt_platforms.h b/core/fxcrt/fxcrt_platforms.h new file mode 100644 index 0000000000..6bbebcba13 --- /dev/null +++ b/core/fxcrt/fxcrt_platforms.h @@ -0,0 +1,42 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_FXCRT_PLATFORMS_H_ +#define CORE_FXCRT_FXCRT_PLATFORMS_H_ + +#include "core/fxcrt/extension.h" + +#if _FX_OS_ == _FX_ANDROID_ +void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_ByteString& bsMode); +void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString& wsMode); +class CFXCRT_FileAccess_CRT : public IFXCRT_FileAccess { + public: + CFXCRT_FileAccess_CRT(); + ~CFXCRT_FileAccess_CRT() override; + + // IFXCRT_FileAccess + FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) override; + FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) override; + void Close() override; + void Release() override; + FX_FILESIZE GetSize() const override; + FX_FILESIZE GetPosition() const override; + FX_FILESIZE SetPosition(FX_FILESIZE pos) override; + size_t Read(void* pBuffer, size_t szBuffer) override; + size_t Write(const void* pBuffer, size_t szBuffer) override; + size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) override; + size_t WritePos(const void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) override; + FX_BOOL Flush() override; + FX_BOOL Truncate(FX_FILESIZE szFile) override; + + protected: + FXSYS_FILE* m_hFile; +}; +#endif + +#endif // CORE_FXCRT_FXCRT_PLATFORMS_H_ diff --git a/core/fxcrt/fxcrt_posix.cpp b/core/fxcrt/fxcrt_posix.cpp new file mode 100644 index 0000000000..161506dd74 --- /dev/null +++ b/core/fxcrt/fxcrt_posix.cpp @@ -0,0 +1,130 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/fxcrt_posix.h" + +#include "core/include/fxcrt/fx_basic.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ +IFXCRT_FileAccess* FXCRT_FileAccess_Create() { + return new CFXCRT_FileAccess_Posix; +} +void FXCRT_Posix_GetFileMode(FX_DWORD dwModes, + int32_t& nFlags, + int32_t& nMasks) { + nFlags = O_BINARY | O_LARGEFILE; + if (dwModes & FX_FILEMODE_ReadOnly) { + nFlags |= O_RDONLY; + nMasks = 0; + } else { + nFlags |= O_RDWR | O_CREAT; + if (dwModes & FX_FILEMODE_Truncate) { + nFlags |= O_TRUNC; + } + nMasks = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; + } +} +CFXCRT_FileAccess_Posix::CFXCRT_FileAccess_Posix() : m_nFD(-1) {} +CFXCRT_FileAccess_Posix::~CFXCRT_FileAccess_Posix() { + Close(); +} +FX_BOOL CFXCRT_FileAccess_Posix::Open(const CFX_ByteStringC& fileName, + FX_DWORD dwMode) { + if (m_nFD > -1) { + return FALSE; + } + int32_t nFlags, nMasks; + FXCRT_Posix_GetFileMode(dwMode, nFlags, nMasks); + m_nFD = open(fileName.GetCStr(), nFlags, nMasks); + return m_nFD > -1; +} +FX_BOOL CFXCRT_FileAccess_Posix::Open(const CFX_WideStringC& fileName, + FX_DWORD dwMode) { + return Open(FX_UTF8Encode(fileName), dwMode); +} +void CFXCRT_FileAccess_Posix::Close() { + if (m_nFD < 0) { + return; + } + close(m_nFD); + m_nFD = -1; +} +void CFXCRT_FileAccess_Posix::Release() { + delete this; +} +FX_FILESIZE CFXCRT_FileAccess_Posix::GetSize() const { + if (m_nFD < 0) { + return 0; + } + struct stat s; + FXSYS_memset(&s, 0, sizeof(s)); + fstat(m_nFD, &s); + return s.st_size; +} +FX_FILESIZE CFXCRT_FileAccess_Posix::GetPosition() const { + if (m_nFD < 0) { + return (FX_FILESIZE)-1; + } + return lseek(m_nFD, 0, SEEK_CUR); +} +FX_FILESIZE CFXCRT_FileAccess_Posix::SetPosition(FX_FILESIZE pos) { + if (m_nFD < 0) { + return (FX_FILESIZE)-1; + } + return lseek(m_nFD, pos, SEEK_SET); +} +size_t CFXCRT_FileAccess_Posix::Read(void* pBuffer, size_t szBuffer) { + if (m_nFD < 0) { + return 0; + } + return read(m_nFD, pBuffer, szBuffer); +} +size_t CFXCRT_FileAccess_Posix::Write(const void* pBuffer, size_t szBuffer) { + if (m_nFD < 0) { + return 0; + } + return write(m_nFD, pBuffer, szBuffer); +} +size_t CFXCRT_FileAccess_Posix::ReadPos(void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) { + if (m_nFD < 0) { + return 0; + } + if (pos >= GetSize()) { + return 0; + } + if (SetPosition(pos) == (FX_FILESIZE)-1) { + return 0; + } + return Read(pBuffer, szBuffer); +} +size_t CFXCRT_FileAccess_Posix::WritePos(const void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) { + if (m_nFD < 0) { + return 0; + } + if (SetPosition(pos) == (FX_FILESIZE)-1) { + return 0; + } + return Write(pBuffer, szBuffer); +} +FX_BOOL CFXCRT_FileAccess_Posix::Flush() { + if (m_nFD < 0) { + return FALSE; + } + return fsync(m_nFD) > -1; +} +FX_BOOL CFXCRT_FileAccess_Posix::Truncate(FX_FILESIZE szFile) { + if (m_nFD < 0) { + return FALSE; + } + return !ftruncate(m_nFD, szFile); +} +#endif diff --git a/core/fxcrt/fxcrt_posix.h b/core/fxcrt/fxcrt_posix.h new file mode 100644 index 0000000000..cf5f634874 --- /dev/null +++ b/core/fxcrt/fxcrt_posix.h @@ -0,0 +1,42 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_FXCRT_POSIX_H_ +#define CORE_FXCRT_FXCRT_POSIX_H_ + +#include "core/fxcrt/extension.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ +class CFXCRT_FileAccess_Posix : public IFXCRT_FileAccess { + public: + CFXCRT_FileAccess_Posix(); + ~CFXCRT_FileAccess_Posix() override; + + // IFXCRT_FileAccess + FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) override; + FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) override; + void Close() override; + void Release() override; + FX_FILESIZE GetSize() const override; + FX_FILESIZE GetPosition() const override; + FX_FILESIZE SetPosition(FX_FILESIZE pos) override; + size_t Read(void* pBuffer, size_t szBuffer) override; + size_t Write(const void* pBuffer, size_t szBuffer) override; + size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) override; + size_t WritePos(const void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) override; + FX_BOOL Flush() override; + FX_BOOL Truncate(FX_FILESIZE szFile) override; + + protected: + int32_t m_nFD; +}; +#endif + +#endif // CORE_FXCRT_FXCRT_POSIX_H_ diff --git a/core/fxcrt/fxcrt_stream.cpp b/core/fxcrt/fxcrt_stream.cpp new file mode 100644 index 0000000000..2f50153e9e --- /dev/null +++ b/core/fxcrt/fxcrt_stream.cpp @@ -0,0 +1,27 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_stream.h" + +FX_BOOL IFX_FileWrite::WriteBlock(const void* pData, size_t size) { + return WriteBlock(pData, GetSize(), size); +} + +FX_BOOL IFX_FileRead::IsEOF() { + return FALSE; +} + +FX_FILESIZE IFX_FileRead::GetPosition() { + return 0; +} + +size_t IFX_FileRead::ReadBlock(void* buffer, size_t size) { + return 0; +} + +FX_BOOL IFX_FileStream::WriteBlock(const void* buffer, size_t size) { + return WriteBlock(buffer, GetSize(), size); +} diff --git a/core/fxcrt/fxcrt_windows.cpp b/core/fxcrt/fxcrt_windows.cpp new file mode 100644 index 0000000000..528a3b78ac --- /dev/null +++ b/core/fxcrt/fxcrt_windows.cpp @@ -0,0 +1,172 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxcrt/fxcrt_windows.h" + +#include "core/include/fxcrt/fx_string.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +IFXCRT_FileAccess* FXCRT_FileAccess_Create() { + return new CFXCRT_FileAccess_Win64; +} +void FXCRT_Windows_GetFileMode(FX_DWORD dwMode, + FX_DWORD& dwAccess, + FX_DWORD& dwShare, + FX_DWORD& dwCreation) { + dwAccess = GENERIC_READ; + dwShare = FILE_SHARE_READ | FILE_SHARE_WRITE; + if (!(dwMode & FX_FILEMODE_ReadOnly)) { + dwAccess |= GENERIC_WRITE; + dwCreation = (dwMode & FX_FILEMODE_Truncate) ? CREATE_ALWAYS : OPEN_ALWAYS; + } else { + dwCreation = OPEN_EXISTING; + } +} +#ifdef __cplusplus +extern "C" { +#endif +WINBASEAPI BOOL WINAPI GetFileSizeEx(HANDLE hFile, PLARGE_INTEGER lpFileSize); +WINBASEAPI BOOL WINAPI SetFilePointerEx(HANDLE hFile, + LARGE_INTEGER liDistanceToMove, + PLARGE_INTEGER lpNewFilePointer, + DWORD dwMoveMethod); +#ifdef __cplusplus +} +#endif +CFXCRT_FileAccess_Win64::CFXCRT_FileAccess_Win64() : m_hFile(NULL) {} +CFXCRT_FileAccess_Win64::~CFXCRT_FileAccess_Win64() { + Close(); +} +FX_BOOL CFXCRT_FileAccess_Win64::Open(const CFX_ByteStringC& fileName, + FX_DWORD dwMode) { + if (m_hFile) { + return FALSE; + } + FX_DWORD dwAccess, dwShare, dwCreation; + FXCRT_Windows_GetFileMode(dwMode, dwAccess, dwShare, dwCreation); + m_hFile = ::CreateFileA(fileName.GetCStr(), dwAccess, dwShare, NULL, + dwCreation, FILE_ATTRIBUTE_NORMAL, NULL); + if (m_hFile == INVALID_HANDLE_VALUE) { + m_hFile = NULL; + } + return m_hFile != NULL; +} +FX_BOOL CFXCRT_FileAccess_Win64::Open(const CFX_WideStringC& fileName, + FX_DWORD dwMode) { + if (m_hFile) { + return FALSE; + } + FX_DWORD dwAccess, dwShare, dwCreation; + FXCRT_Windows_GetFileMode(dwMode, dwAccess, dwShare, dwCreation); + m_hFile = ::CreateFileW((LPCWSTR)fileName.GetPtr(), dwAccess, dwShare, NULL, + dwCreation, FILE_ATTRIBUTE_NORMAL, NULL); + if (m_hFile == INVALID_HANDLE_VALUE) { + m_hFile = NULL; + } + return m_hFile != NULL; +} +void CFXCRT_FileAccess_Win64::Close() { + if (!m_hFile) { + return; + } + ::CloseHandle(m_hFile); + m_hFile = NULL; +} +void CFXCRT_FileAccess_Win64::Release() { + delete this; +} +FX_FILESIZE CFXCRT_FileAccess_Win64::GetSize() const { + if (!m_hFile) { + return 0; + } + LARGE_INTEGER size = {}; + if (!::GetFileSizeEx(m_hFile, &size)) { + return 0; + } + return (FX_FILESIZE)size.QuadPart; +} +FX_FILESIZE CFXCRT_FileAccess_Win64::GetPosition() const { + if (!m_hFile) { + return (FX_FILESIZE)-1; + } + LARGE_INTEGER dist = {}; + LARGE_INTEGER newPos = {}; + if (!::SetFilePointerEx(m_hFile, dist, &newPos, FILE_CURRENT)) { + return (FX_FILESIZE)-1; + } + return (FX_FILESIZE)newPos.QuadPart; +} +FX_FILESIZE CFXCRT_FileAccess_Win64::SetPosition(FX_FILESIZE pos) { + if (!m_hFile) { + return (FX_FILESIZE)-1; + } + LARGE_INTEGER dist; + dist.QuadPart = pos; + LARGE_INTEGER newPos = {}; + if (!::SetFilePointerEx(m_hFile, dist, &newPos, FILE_BEGIN)) { + return (FX_FILESIZE)-1; + } + return (FX_FILESIZE)newPos.QuadPart; +} +size_t CFXCRT_FileAccess_Win64::Read(void* pBuffer, size_t szBuffer) { + if (!m_hFile) { + return 0; + } + size_t szRead = 0; + if (!::ReadFile(m_hFile, pBuffer, (DWORD)szBuffer, (LPDWORD)&szRead, NULL)) { + return 0; + } + return szRead; +} +size_t CFXCRT_FileAccess_Win64::Write(const void* pBuffer, size_t szBuffer) { + if (!m_hFile) { + return 0; + } + size_t szWrite = 0; + if (!::WriteFile(m_hFile, pBuffer, (DWORD)szBuffer, (LPDWORD)&szWrite, + NULL)) { + return 0; + } + return szWrite; +} +size_t CFXCRT_FileAccess_Win64::ReadPos(void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) { + if (!m_hFile) { + return 0; + } + if (pos >= GetSize()) { + return 0; + } + if (SetPosition(pos) == (FX_FILESIZE)-1) { + return 0; + } + return Read(pBuffer, szBuffer); +} +size_t CFXCRT_FileAccess_Win64::WritePos(const void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) { + if (!m_hFile) { + return 0; + } + if (SetPosition(pos) == (FX_FILESIZE)-1) { + return 0; + } + return Write(pBuffer, szBuffer); +} +FX_BOOL CFXCRT_FileAccess_Win64::Flush() { + if (!m_hFile) { + return FALSE; + } + return ::FlushFileBuffers(m_hFile); +} +FX_BOOL CFXCRT_FileAccess_Win64::Truncate(FX_FILESIZE szFile) { + if (SetPosition(szFile) == (FX_FILESIZE)-1) { + return FALSE; + } + return ::SetEndOfFile(m_hFile); +} +#endif diff --git a/core/fxcrt/fxcrt_windows.h b/core/fxcrt/fxcrt_windows.h new file mode 100644 index 0000000000..04a1a55b16 --- /dev/null +++ b/core/fxcrt/fxcrt_windows.h @@ -0,0 +1,40 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_FXCRT_WINDOWS_H_ +#define CORE_FXCRT_FXCRT_WINDOWS_H_ + +#include "core/fxcrt/extension.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ +class CFXCRT_FileAccess_Win64 : public IFXCRT_FileAccess { + public: + CFXCRT_FileAccess_Win64(); + ~CFXCRT_FileAccess_Win64() override; + + // IFXCRT_FileAccess + FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) override; + FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) override; + void Close() override; + void Release() override; + FX_FILESIZE GetSize() const override; + FX_FILESIZE GetPosition() const override; + FX_FILESIZE SetPosition(FX_FILESIZE pos) override; + size_t Read(void* pBuffer, size_t szBuffer) override; + size_t Write(const void* pBuffer, size_t szBuffer) override; + size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) override; + size_t WritePos(const void* pBuffer, + size_t szBuffer, + FX_FILESIZE pos) override; + FX_BOOL Flush() override; + FX_BOOL Truncate(FX_FILESIZE szFile) override; + + protected: + void* m_hFile; +}; +#endif + +#endif // CORE_FXCRT_FXCRT_WINDOWS_H_ diff --git a/core/fxcrt/plex.h b/core/fxcrt/plex.h new file mode 100644 index 0000000000..25fca64d72 --- /dev/null +++ b/core/fxcrt/plex.h @@ -0,0 +1,19 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_PLEX_H_ +#define CORE_FXCRT_PLEX_H_ + +#include "core/include/fxcrt/fx_system.h" + +struct CFX_Plex { + CFX_Plex* pNext; + void* data() { return this + 1; } + static CFX_Plex* Create(CFX_Plex*& head, FX_DWORD nMax, FX_DWORD cbElement); + void FreeDataChain(); +}; + +#endif // CORE_FXCRT_PLEX_H_ diff --git a/core/fxcrt/xml_int.h b/core/fxcrt/xml_int.h new file mode 100644 index 0000000000..18dbf9b955 --- /dev/null +++ b/core/fxcrt/xml_int.h @@ -0,0 +1,130 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXCRT_XML_INT_H_ +#define CORE_FXCRT_XML_INT_H_ + +#include + +#include "core/include/fxcrt/fx_stream.h" + +class CFX_UTF8Decoder; +class CXML_Element; + +class CXML_DataBufAcc : public IFX_BufferRead { + public: + CXML_DataBufAcc(const uint8_t* pBuffer, size_t size) + : m_pBuffer(pBuffer), m_dwSize(size), m_dwCurPos(0) {} + ~CXML_DataBufAcc() override {} + + // IFX_BufferRead + void Release() override { delete this; } + FX_BOOL IsEOF() override { return m_dwCurPos >= m_dwSize; } + FX_FILESIZE GetPosition() override { return (FX_FILESIZE)m_dwCurPos; } + size_t ReadBlock(void* buffer, size_t size) override { return 0; } + FX_BOOL ReadNextBlock(FX_BOOL bRestart = FALSE) override { + if (bRestart) { + m_dwCurPos = 0; + } + if (m_dwCurPos < m_dwSize) { + m_dwCurPos = m_dwSize; + return TRUE; + } + return FALSE; + } + const uint8_t* GetBlockBuffer() override { return m_pBuffer; } + size_t GetBlockSize() override { return m_dwSize; } + FX_FILESIZE GetBlockOffset() override { return 0; } + + protected: + const uint8_t* m_pBuffer; + size_t m_dwSize; + size_t m_dwCurPos; +}; + +class CXML_DataStmAcc : public IFX_BufferRead { + public: + explicit CXML_DataStmAcc(IFX_FileRead* pFileRead) + : m_pFileRead(pFileRead), m_pBuffer(NULL), m_nStart(0), m_dwSize(0) { + FXSYS_assert(m_pFileRead); + } + ~CXML_DataStmAcc() override { FX_Free(m_pBuffer); } + + void Release() override { delete this; } + FX_BOOL IsEOF() override { + return m_nStart + (FX_FILESIZE)m_dwSize >= m_pFileRead->GetSize(); + } + FX_FILESIZE GetPosition() override { + return m_nStart + (FX_FILESIZE)m_dwSize; + } + size_t ReadBlock(void* buffer, size_t size) override { return 0; } + FX_BOOL ReadNextBlock(FX_BOOL bRestart = FALSE) override { + if (bRestart) { + m_nStart = 0; + } + FX_FILESIZE nLength = m_pFileRead->GetSize(); + m_nStart += (FX_FILESIZE)m_dwSize; + if (m_nStart >= nLength) { + return FALSE; + } + static const FX_FILESIZE FX_XMLDATASTREAM_BufferSize = 32 * 1024; + m_dwSize = static_cast( + std::min(FX_XMLDATASTREAM_BufferSize, nLength - m_nStart)); + if (!m_pBuffer) { + m_pBuffer = FX_Alloc(uint8_t, m_dwSize); + } + return m_pFileRead->ReadBlock(m_pBuffer, m_nStart, m_dwSize); + } + const uint8_t* GetBlockBuffer() override { return (const uint8_t*)m_pBuffer; } + size_t GetBlockSize() override { return m_dwSize; } + FX_FILESIZE GetBlockOffset() override { return m_nStart; } + + protected: + IFX_FileRead* m_pFileRead; + uint8_t* m_pBuffer; + FX_FILESIZE m_nStart; + size_t m_dwSize; +}; + +class CXML_Parser { + public: + ~CXML_Parser(); + IFX_BufferRead* m_pDataAcc; + FX_BOOL m_bOwnedStream; + FX_FILESIZE m_nOffset; + FX_BOOL m_bSaveSpaceChars; + const uint8_t* m_pBuffer; + size_t m_dwBufferSize; + FX_FILESIZE m_nBufferOffset; + size_t m_dwIndex; + FX_BOOL Init(uint8_t* pBuffer, size_t size); + FX_BOOL Init(IFX_FileRead* pFileRead); + FX_BOOL Init(IFX_BufferRead* pBuffer); + FX_BOOL Init(FX_BOOL bOwndedStream); + FX_BOOL ReadNextBlock(); + FX_BOOL IsEOF(); + FX_BOOL HaveAvailData(); + void SkipWhiteSpaces(); + void GetName(CFX_ByteString& space, CFX_ByteString& name); + void GetAttrValue(CFX_WideString& value); + FX_DWORD GetCharRef(); + void GetTagName(CFX_ByteString& space, + CFX_ByteString& name, + FX_BOOL& bEndTag, + FX_BOOL bStartTag = FALSE); + void SkipLiterals(const CFX_ByteStringC& str); + CXML_Element* ParseElement(CXML_Element* pParent, FX_BOOL bStartTag = FALSE); + void InsertContentSegment(FX_BOOL bCDATA, + const CFX_WideStringC& content, + CXML_Element* pElement); + void InsertCDATASegment(CFX_UTF8Decoder& decoder, CXML_Element* pElement); +}; + +void FX_XML_SplitQualifiedName(const CFX_ByteStringC& bsFullName, + CFX_ByteStringC& bsSpace, + CFX_ByteStringC& bsName); + +#endif // CORE_FXCRT_XML_INT_H_ diff --git a/core/fxge/agg/DEPS b/core/fxge/agg/DEPS new file mode 100644 index 0000000000..25d9e110e6 --- /dev/null +++ b/core/fxge/agg/DEPS @@ -0,0 +1,3 @@ +include_rules = [ + '+third_party/agg23', +] diff --git a/core/fxge/agg/fx_agg_driver.cpp b/core/fxge/agg/fx_agg_driver.cpp new file mode 100644 index 0000000000..cd72865421 --- /dev/null +++ b/core/fxge/agg/fx_agg_driver.cpp @@ -0,0 +1,1839 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/agg/fx_agg_driver.h" + +#include + +#include "core/fxge/dib/dib_int.h" +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_ge.h" +#include "third_party/agg23/agg_conv_dash.h" +#include "third_party/agg23/agg_conv_stroke.h" +#include "third_party/agg23/agg_curves.h" +#include "third_party/agg23/agg_path_storage.h" +#include "third_party/agg23/agg_pixfmt_gray.h" +#include "third_party/agg23/agg_rasterizer_scanline_aa.h" +#include "third_party/agg23/agg_renderer_scanline.h" +#include "third_party/agg23/agg_scanline_u.h" + +namespace { + +void HardClip(FX_FLOAT& x, FX_FLOAT& y) { + x = std::max(std::min(x, 50000.0f), -50000.0f); + y = std::max(std::min(y, 50000.0f), -50000.0f); +} + +} // namespace + +void CAgg_PathData::BuildPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device) { + int nPoints = pPathData->GetPointCount(); + FX_PATHPOINT* pPoints = pPathData->GetPoints(); + for (int i = 0; i < nPoints; i++) { + FX_FLOAT x = pPoints[i].m_PointX, y = pPoints[i].m_PointY; + if (pObject2Device) { + pObject2Device->Transform(x, y); + } + HardClip(x, y); + int point_type = pPoints[i].m_Flag & FXPT_TYPE; + if (point_type == FXPT_MOVETO) { + m_PathData.move_to(x, y); + } else if (point_type == FXPT_LINETO) { + if (pPoints[i - 1].m_Flag == FXPT_MOVETO && + (i == nPoints - 1 || pPoints[i + 1].m_Flag == FXPT_MOVETO) && + pPoints[i].m_PointX == pPoints[i - 1].m_PointX && + pPoints[i].m_PointY == pPoints[i - 1].m_PointY) { + x += 1; + } + m_PathData.line_to(x, y); + } else if (point_type == FXPT_BEZIERTO) { + FX_FLOAT x0 = pPoints[i - 1].m_PointX, y0 = pPoints[i - 1].m_PointY; + FX_FLOAT x2 = pPoints[i + 1].m_PointX, y2 = pPoints[i + 1].m_PointY; + FX_FLOAT x3 = pPoints[i + 2].m_PointX, y3 = pPoints[i + 2].m_PointY; + if (pObject2Device) { + pObject2Device->Transform(x0, y0); + pObject2Device->Transform(x2, y2); + pObject2Device->Transform(x3, y3); + } + agg::curve4 curve(x0, y0, x, y, x2, y2, x3, y3); + i += 2; + m_PathData.add_path_curve(curve); + } + if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE) { + m_PathData.end_poly(); + } + } +} +namespace agg { + +template +class renderer_scanline_aa_offset { + public: + typedef BaseRenderer base_ren_type; + typedef typename base_ren_type::color_type color_type; + renderer_scanline_aa_offset(base_ren_type& ren, unsigned left, unsigned top) + : m_ren(&ren), m_left(left), m_top(top) {} + void color(const color_type& c) { m_color = c; } + const color_type& color() const { return m_color; } + void prepare(unsigned) {} + template + void render(const Scanline& sl) { + int y = sl.y(); + unsigned num_spans = sl.num_spans(); + typename Scanline::const_iterator span = sl.begin(); + for (;;) { + int x = span->x; + if (span->len > 0) { + m_ren->blend_solid_hspan(x - m_left, y - m_top, (unsigned)span->len, + m_color, span->covers); + } else { + m_ren->blend_hline(x - m_left, y - m_top, (unsigned)(x - span->len - 1), + m_color, *(span->covers)); + } + if (--num_spans == 0) { + break; + } + ++span; + } + } + + private: + base_ren_type* m_ren; + color_type m_color; + unsigned m_left, m_top; +}; + +} // namespace agg + +static void RasterizeStroke(agg::rasterizer_scanline_aa& rasterizer, + agg::path_storage& path_data, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_FLOAT scale = 1.0f, + FX_BOOL bStrokeAdjust = FALSE, + FX_BOOL bTextMode = FALSE) { + agg::line_cap_e cap; + switch (pGraphState->m_LineCap) { + case CFX_GraphStateData::LineCapRound: + cap = agg::round_cap; + break; + case CFX_GraphStateData::LineCapSquare: + cap = agg::square_cap; + break; + default: + cap = agg::butt_cap; + break; + } + agg::line_join_e join; + switch (pGraphState->m_LineJoin) { + case CFX_GraphStateData::LineJoinRound: + join = agg::round_join; + break; + case CFX_GraphStateData::LineJoinBevel: + join = agg::bevel_join; + break; + default: + join = agg::miter_join_revert; + break; + } + FX_FLOAT width = pGraphState->m_LineWidth * scale; + FX_FLOAT unit = 1.f; + if (pObject2Device) { + unit = + 1.0f / ((pObject2Device->GetXUnit() + pObject2Device->GetYUnit()) / 2); + } + if (width < unit) { + width = unit; + } + if (pGraphState->m_DashArray) { + typedef agg::conv_dash dash_converter; + dash_converter dash(path_data); + for (int i = 0; i < (pGraphState->m_DashCount + 1) / 2; i++) { + FX_FLOAT on = pGraphState->m_DashArray[i * 2]; + if (on <= 0.000001f) { + on = 1.0f / 10; + } + FX_FLOAT off = i * 2 + 1 == pGraphState->m_DashCount + ? on + : pGraphState->m_DashArray[i * 2 + 1]; + if (off < 0) { + off = 0; + } + dash.add_dash(on * scale, off * scale); + } + dash.dash_start(pGraphState->m_DashPhase * scale); + typedef agg::conv_stroke dash_stroke; + dash_stroke stroke(dash); + stroke.line_join(join); + stroke.line_cap(cap); + stroke.miter_limit(pGraphState->m_MiterLimit); + stroke.width(width); + rasterizer.add_path_transformed(stroke, pObject2Device); + } else { + agg::conv_stroke stroke(path_data); + stroke.line_join(join); + stroke.line_cap(cap); + stroke.miter_limit(pGraphState->m_MiterLimit); + stroke.width(width); + rasterizer.add_path_transformed(stroke, pObject2Device); + } +} + +IFX_RenderDeviceDriver* IFX_RenderDeviceDriver::CreateFxgeDriver( + CFX_DIBitmap* pBitmap, + FX_BOOL bRgbByteOrder, + CFX_DIBitmap* pOriDevice, + FX_BOOL bGroupKnockout) { + return new CFX_AggDeviceDriver(pBitmap, 0, bRgbByteOrder, pOriDevice, + bGroupKnockout); +} + +CFX_AggDeviceDriver::CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap, + int dither_bits, + FX_BOOL bRgbByteOrder, + CFX_DIBitmap* pOriDevice, + FX_BOOL bGroupKnockout) { + m_pBitmap = pBitmap; + m_DitherBits = dither_bits; + m_pClipRgn = NULL; + m_pPlatformBitmap = NULL; + m_pPlatformGraphics = NULL; + m_pDwRenderTartget = NULL; + m_bRgbByteOrder = bRgbByteOrder; + m_pOriDevice = pOriDevice; + m_bGroupKnockout = bGroupKnockout; + m_FillFlags = 0; + InitPlatform(); +} + +CFX_AggDeviceDriver::~CFX_AggDeviceDriver() { + delete m_pClipRgn; + for (int i = 0; i < m_StateStack.GetSize(); i++) + delete m_StateStack[i]; + DestroyPlatform(); +} + +uint8_t* CFX_AggDeviceDriver::GetBuffer() const { + return m_pBitmap->GetBuffer(); +} + +#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ +void CFX_AggDeviceDriver::InitPlatform() {} + +void CFX_AggDeviceDriver::DestroyPlatform() {} + +FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + return FALSE; +} // _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ +#endif + +int CFX_AggDeviceDriver::GetDeviceCaps(int caps_id) { + switch (caps_id) { + case FXDC_DEVICE_CLASS: + return FXDC_DISPLAY; + case FXDC_PIXEL_WIDTH: + return m_pBitmap->GetWidth(); + case FXDC_PIXEL_HEIGHT: + return m_pBitmap->GetHeight(); + case FXDC_BITS_PIXEL: + return m_pBitmap->GetBPP(); + case FXDC_HORZ_SIZE: + case FXDC_VERT_SIZE: + return 0; + case FXDC_RENDER_CAPS: { + int flags = FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE | + FXRC_BLEND_MODE | FXRC_SOFT_CLIP; + if (m_pBitmap->HasAlpha()) { + flags |= FXRC_ALPHA_OUTPUT; + } else if (m_pBitmap->IsAlphaMask()) { + if (m_pBitmap->GetBPP() == 1) { + flags |= FXRC_BITMASK_OUTPUT; + } else { + flags |= FXRC_BYTEMASK_OUTPUT; + } + } + if (m_pBitmap->IsCmykImage()) { + flags |= FXRC_CMYK_OUTPUT; + } + return flags; + } + case FXDC_DITHER_BITS: + return m_DitherBits; + } + return 0; +} + +void CFX_AggDeviceDriver::SaveState() { + CFX_ClipRgn* pClip = NULL; + if (m_pClipRgn) { + pClip = new CFX_ClipRgn(*m_pClipRgn); + } + m_StateStack.Add(pClip); +} + +void CFX_AggDeviceDriver::RestoreState(FX_BOOL bKeepSaved) { + if (m_StateStack.GetSize() == 0) { + delete m_pClipRgn; + m_pClipRgn = NULL; + return; + } + CFX_ClipRgn* pSavedClip = m_StateStack[m_StateStack.GetSize() - 1]; + delete m_pClipRgn; + m_pClipRgn = NULL; + if (bKeepSaved) { + if (pSavedClip) { + m_pClipRgn = new CFX_ClipRgn(*pSavedClip); + } + } else { + m_StateStack.RemoveAt(m_StateStack.GetSize() - 1); + m_pClipRgn = pSavedClip; + } +} + +void CFX_AggDeviceDriver::SetClipMask(agg::rasterizer_scanline_aa& rasterizer) { + FX_RECT path_rect(rasterizer.min_x(), rasterizer.min_y(), + rasterizer.max_x() + 1, rasterizer.max_y() + 1); + path_rect.Intersect(m_pClipRgn->GetBox()); + CFX_DIBitmapRef mask; + CFX_DIBitmap* pThisLayer = mask.New(); + if (!pThisLayer) { + return; + } + pThisLayer->Create(path_rect.Width(), path_rect.Height(), FXDIB_8bppMask); + pThisLayer->Clear(0); + agg::rendering_buffer raw_buf(pThisLayer->GetBuffer(), pThisLayer->GetWidth(), + pThisLayer->GetHeight(), + pThisLayer->GetPitch()); + agg::pixfmt_gray8 pixel_buf(raw_buf); + agg::renderer_base base_buf(pixel_buf); + agg::renderer_scanline_aa_offset > + final_render(base_buf, path_rect.left, path_rect.top); + final_render.color(agg::gray8(255)); + agg::scanline_u8 scanline; + agg::render_scanlines(rasterizer, scanline, final_render, + (m_FillFlags & FXFILL_NOPATHSMOOTH) != 0); + m_pClipRgn->IntersectMaskF(path_rect.left, path_rect.top, mask); +} + +FX_BOOL CFX_AggDeviceDriver::SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) { + m_FillFlags = fill_mode; + if (!m_pClipRgn) { + m_pClipRgn = new CFX_ClipRgn(GetDeviceCaps(FXDC_PIXEL_WIDTH), + GetDeviceCaps(FXDC_PIXEL_HEIGHT)); + } + if (pPathData->GetPointCount() == 5 || pPathData->GetPointCount() == 4) { + CFX_FloatRect rectf; + if (pPathData->IsRect(pObject2Device, &rectf)) { + rectf.Intersect( + CFX_FloatRect(0, 0, (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_WIDTH), + (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_HEIGHT))); + FX_RECT rect = rectf.GetOutterRect(); + m_pClipRgn->IntersectRect(rect); + return TRUE; + } + } + CAgg_PathData path_data; + path_data.BuildPath(pPathData, pObject2Device); + path_data.m_PathData.end_poly(); + agg::rasterizer_scanline_aa rasterizer; + rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), + (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); + rasterizer.add_path(path_data.m_PathData); + rasterizer.filling_rule((fill_mode & 3) == FXFILL_WINDING + ? agg::fill_non_zero + : agg::fill_even_odd); + SetClipMask(rasterizer); + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::SetClip_PathStroke( + const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) { + if (!m_pClipRgn) { + m_pClipRgn = new CFX_ClipRgn(GetDeviceCaps(FXDC_PIXEL_WIDTH), + GetDeviceCaps(FXDC_PIXEL_HEIGHT)); + } + CAgg_PathData path_data; + path_data.BuildPath(pPathData, NULL); + agg::rasterizer_scanline_aa rasterizer; + rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), + (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); + RasterizeStroke(rasterizer, path_data.m_PathData, pObject2Device, + pGraphState); + rasterizer.filling_rule(agg::fill_non_zero); + SetClipMask(rasterizer); + return TRUE; +} + +class CFX_Renderer { + private: + int m_Alpha, m_Red, m_Green, m_Blue, m_Gray; + FX_DWORD m_Color; + FX_BOOL m_bFullCover; + FX_BOOL m_bRgbByteOrder; + CFX_DIBitmap* m_pOriDevice; + FX_RECT m_ClipBox; + const CFX_DIBitmap* m_pClipMask; + CFX_DIBitmap* m_pDevice; + const CFX_ClipRgn* m_pClipRgn; + void (CFX_Renderer::*composite_span)(uint8_t*, + int, + int, + int, + uint8_t*, + int, + int, + uint8_t*, + uint8_t*); + + public: + void prepare(unsigned) {} + + void CompositeSpan(uint8_t* dest_scan, + uint8_t* ori_scan, + int Bpp, + FX_BOOL bDestAlpha, + int span_left, + int span_len, + uint8_t* cover_scan, + int clip_left, + int clip_right, + uint8_t* clip_scan) { + ASSERT(!m_pDevice->IsCmykImage()); + int col_start = span_left < clip_left ? clip_left - span_left : 0; + int col_end = (span_left + span_len) < clip_right + ? span_len + : (clip_right - span_left); + if (Bpp) { + dest_scan += col_start * Bpp; + ori_scan += col_start * Bpp; + } else { + dest_scan += col_start / 8; + ori_scan += col_start / 8; + } + if (m_bRgbByteOrder) { + if (Bpp == 4 && bDestAlpha) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + uint8_t dest_alpha = + ori_scan[3] + src_alpha - ori_scan[3] * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (m_bFullCover) { + *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_ratio); + *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, alpha_ratio); + *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, alpha_ratio); + dest_scan++; + ori_scan++; + } else { + int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_ratio); + int g = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, alpha_ratio); + int b = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, alpha_ratio); + ori_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, r, cover_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, g, cover_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, b, cover_scan[col]); + dest_scan += 2; + } + } + return; + } + if (Bpp == 3 || Bpp == 4) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, src_alpha); + int g = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, src_alpha); + int b = FXDIB_ALPHA_MERGE(*ori_scan, m_Blue, src_alpha); + ori_scan += Bpp - 2; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, r, cover_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, g, cover_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, b, cover_scan[col]); + dest_scan += Bpp - 2; + } + } + return; + } + if (Bpp == 4 && bDestAlpha) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + int src_alpha_covered = src_alpha * cover_scan[col] / 255; + if (src_alpha_covered == 0) { + dest_scan += 4; + continue; + } + if (cover_scan[col] == 255) { + dest_scan[3] = src_alpha_covered; + *dest_scan++ = m_Blue; + *dest_scan++ = m_Green; + *dest_scan = m_Red; + dest_scan += 2; + continue; + } else { + if (dest_scan[3] == 0) { + dest_scan[3] = src_alpha_covered; + *dest_scan++ = m_Blue; + *dest_scan++ = m_Green; + *dest_scan = m_Red; + dest_scan += 2; + continue; + } + uint8_t cover = cover_scan[col]; + dest_scan[3] = FXDIB_ALPHA_MERGE(dest_scan[3], src_alpha, cover); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, cover); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, cover); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, cover); + dest_scan += 2; + } + } + return; + } + if (Bpp == 3 || Bpp == 4) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + if (m_bFullCover) { + *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, src_alpha); + *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, src_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan, m_Red, src_alpha); + dest_scan += Bpp - 2; + ori_scan += Bpp - 2; + continue; + } + int b = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, src_alpha); + int g = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, src_alpha); + int r = FXDIB_ALPHA_MERGE(*ori_scan, m_Red, src_alpha); + ori_scan += Bpp - 2; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, b, cover_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, g, cover_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, r, cover_scan[col]); + dest_scan += Bpp - 2; + continue; + } + return; + } + if (Bpp == 1) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + if (m_bFullCover) { + *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha); + } else { + int gray = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, cover_scan[col]); + dest_scan++; + } + } + } else { + int index = 0; + if (m_pDevice->GetPalette()) { + for (int i = 0; i < 2; i++) { + if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { + index = i; + } + } + } else { + index = ((uint8_t)m_Color == 0xff) ? 1 : 0; + } + uint8_t* dest_scan1 = dest_scan; + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + if (src_alpha) { + if (!index) { + *dest_scan1 &= ~(1 << (7 - (col + span_left) % 8)); + } else { + *dest_scan1 |= 1 << (7 - (col + span_left) % 8); + } + } + dest_scan1 = dest_scan + (span_left % 8 + col - col_start + 1) / 8; + } + } + } + + void CompositeSpan1bpp(uint8_t* dest_scan, + int Bpp, + int span_left, + int span_len, + uint8_t* cover_scan, + int clip_left, + int clip_right, + uint8_t* clip_scan, + uint8_t* dest_extra_alpha_scan) { + ASSERT(!m_bRgbByteOrder); + ASSERT(!m_pDevice->IsCmykImage()); + int col_start = span_left < clip_left ? clip_left - span_left : 0; + int col_end = (span_left + span_len) < clip_right + ? span_len + : (clip_right - span_left); + dest_scan += col_start / 8; + int index = 0; + if (m_pDevice->GetPalette()) { + for (int i = 0; i < 2; i++) { + if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { + index = i; + } + } + } else { + index = ((uint8_t)m_Color == 0xff) ? 1 : 0; + } + uint8_t* dest_scan1 = dest_scan; + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + if (src_alpha) { + if (!index) { + *dest_scan1 &= ~(1 << (7 - (col + span_left) % 8)); + } else { + *dest_scan1 |= 1 << (7 - (col + span_left) % 8); + } + } + dest_scan1 = dest_scan + (span_left % 8 + col - col_start + 1) / 8; + } + } + + void CompositeSpanGray(uint8_t* dest_scan, + int Bpp, + int span_left, + int span_len, + uint8_t* cover_scan, + int clip_left, + int clip_right, + uint8_t* clip_scan, + uint8_t* dest_extra_alpha_scan) { + ASSERT(!m_bRgbByteOrder); + int col_start = span_left < clip_left ? clip_left - span_left : 0; + int col_end = (span_left + span_len) < clip_right + ? span_len + : (clip_right - span_left); + dest_scan += col_start; + if (dest_extra_alpha_scan) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (m_bFullCover) { + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + } else { + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + } + if (src_alpha) { + if (src_alpha == 255) { + *dest_scan = m_Gray; + *dest_extra_alpha_scan = m_Alpha; + } else { + uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - + (*dest_extra_alpha_scan) * src_alpha / 255; + *dest_extra_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha_ratio); + dest_scan++; + continue; + } + } + dest_extra_alpha_scan++; + dest_scan++; + } + } else { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + if (src_alpha) { + if (src_alpha == 255) { + *dest_scan = m_Gray; + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, src_alpha); + } + } + dest_scan++; + } + } + } + + void CompositeSpanARGB(uint8_t* dest_scan, + int Bpp, + int span_left, + int span_len, + uint8_t* cover_scan, + int clip_left, + int clip_right, + uint8_t* clip_scan, + uint8_t* dest_extra_alpha_scan) { + int col_start = span_left < clip_left ? clip_left - span_left : 0; + int col_end = (span_left + span_len) < clip_right + ? span_len + : (clip_right - span_left); + dest_scan += col_start * Bpp; + if (m_bRgbByteOrder) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (m_bFullCover) { + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + } else { + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + } + if (src_alpha) { + if (src_alpha == 255) { + *(FX_DWORD*)dest_scan = m_Color; + } else { + uint8_t dest_alpha = + dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); + dest_scan += 2; + continue; + } + } + dest_scan += 4; + } + return; + } + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (m_bFullCover) { + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + } else { + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + } + if (src_alpha) { + if (src_alpha == 255) { + *(FX_DWORD*)dest_scan = m_Color; + } else { + if (dest_scan[3] == 0) { + dest_scan[3] = src_alpha; + *dest_scan++ = m_Blue; + *dest_scan++ = m_Green; + *dest_scan = m_Red; + dest_scan += 2; + continue; + } + uint8_t dest_alpha = + dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); + dest_scan += 2; + continue; + } + } + dest_scan += Bpp; + } + } + + void CompositeSpanRGB(uint8_t* dest_scan, + int Bpp, + int span_left, + int span_len, + uint8_t* cover_scan, + int clip_left, + int clip_right, + uint8_t* clip_scan, + uint8_t* dest_extra_alpha_scan) { + int col_start = span_left < clip_left ? clip_left - span_left : 0; + int col_end = (span_left + span_len) < clip_right + ? span_len + : (clip_right - span_left); + dest_scan += col_start * Bpp; + if (m_bRgbByteOrder) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + if (src_alpha) { + if (src_alpha == 255) { + if (Bpp == 4) { + *(FX_DWORD*)dest_scan = m_Color; + } else if (Bpp == 3) { + *dest_scan++ = m_Red; + *dest_scan++ = m_Green; + *dest_scan++ = m_Blue; + continue; + } + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); + dest_scan += Bpp - 2; + continue; + } + } + dest_scan += Bpp; + } + return; + } + if (Bpp == 3 && dest_extra_alpha_scan) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (m_bFullCover) { + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + } else { + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + } + if (src_alpha) { + if (src_alpha == 255) { + *dest_scan++ = (uint8_t)m_Blue; + *dest_scan++ = (uint8_t)m_Green; + *dest_scan++ = (uint8_t)m_Red; + *dest_extra_alpha_scan++ = (uint8_t)m_Alpha; + continue; + } else { + uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - + (*dest_extra_alpha_scan) * src_alpha / 255; + *dest_extra_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); + dest_scan++; + continue; + } + } + dest_extra_alpha_scan++; + dest_scan += Bpp; + } + } else { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (m_bFullCover) { + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + } else { + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + } + if (src_alpha) { + if (src_alpha == 255) { + if (Bpp == 4) { + *(FX_DWORD*)dest_scan = m_Color; + } else if (Bpp == 3) { + *dest_scan++ = m_Blue; + *dest_scan++ = m_Green; + *dest_scan++ = m_Red; + continue; + } + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); + dest_scan += Bpp - 2; + continue; + } + } + dest_scan += Bpp; + } + } + } + + void CompositeSpanCMYK(uint8_t* dest_scan, + int Bpp, + int span_left, + int span_len, + uint8_t* cover_scan, + int clip_left, + int clip_right, + uint8_t* clip_scan, + uint8_t* dest_extra_alpha_scan) { + ASSERT(!m_bRgbByteOrder); + int col_start = span_left < clip_left ? clip_left - span_left : 0; + int col_end = (span_left + span_len) < clip_right + ? span_len + : (clip_right - span_left); + dest_scan += col_start * 4; + if (dest_extra_alpha_scan) { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (m_bFullCover) { + if (clip_scan) { + src_alpha = m_Alpha * clip_scan[col] / 255; + } else { + src_alpha = m_Alpha; + } + } else { + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + } + if (src_alpha) { + if (src_alpha == 255) { + *(FX_CMYK*)dest_scan = m_Color; + *dest_extra_alpha_scan = (uint8_t)m_Alpha; + } else { + uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - + (*dest_extra_alpha_scan) * src_alpha / 255; + *dest_extra_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha_ratio); + dest_scan++; + continue; + } + } + dest_extra_alpha_scan++; + dest_scan += 4; + } + } else { + for (int col = col_start; col < col_end; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; + } else { + src_alpha = m_Alpha * cover_scan[col] / 255; + } + if (src_alpha) { + if (src_alpha == 255) { + *(FX_CMYK*)dest_scan = m_Color; + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, src_alpha); + dest_scan++; + continue; + } + } + dest_scan += 4; + } + } + } + + template + void render(const Scanline& sl) { + if (!m_pOriDevice && !composite_span) { + return; + } + int y = sl.y(); + if (y < m_ClipBox.top || y >= m_ClipBox.bottom) { + return; + } + uint8_t* dest_scan = m_pDevice->GetBuffer() + m_pDevice->GetPitch() * y; + uint8_t* dest_scan_extra_alpha = NULL; + CFX_DIBitmap* pAlphaMask = m_pDevice->m_pAlphaMask; + if (pAlphaMask) { + dest_scan_extra_alpha = + pAlphaMask->GetBuffer() + pAlphaMask->GetPitch() * y; + } + uint8_t* ori_scan = NULL; + if (m_pOriDevice) { + ori_scan = m_pOriDevice->GetBuffer() + m_pOriDevice->GetPitch() * y; + } + int Bpp = m_pDevice->GetBPP() / 8; + FX_BOOL bDestAlpha = m_pDevice->HasAlpha() || m_pDevice->IsAlphaMask(); + unsigned num_spans = sl.num_spans(); + typename Scanline::const_iterator span = sl.begin(); + while (1) { + int x = span->x; + ASSERT(span->len > 0); + uint8_t* dest_pos = NULL; + uint8_t* dest_extra_alpha_pos = NULL; + uint8_t* ori_pos = NULL; + if (Bpp) { + ori_pos = ori_scan ? ori_scan + x * Bpp : NULL; + dest_pos = dest_scan + x * Bpp; + dest_extra_alpha_pos = + dest_scan_extra_alpha ? dest_scan_extra_alpha + x : NULL; + } else { + dest_pos = dest_scan + x / 8; + ori_pos = ori_scan ? ori_scan + x / 8 : NULL; + } + uint8_t* clip_pos = NULL; + if (m_pClipMask) { + clip_pos = m_pClipMask->GetBuffer() + + (y - m_ClipBox.top) * m_pClipMask->GetPitch() + x - + m_ClipBox.left; + } + if (ori_pos) { + CompositeSpan(dest_pos, ori_pos, Bpp, bDestAlpha, x, span->len, + span->covers, m_ClipBox.left, m_ClipBox.right, clip_pos); + } else { + (this->*composite_span)(dest_pos, Bpp, x, span->len, span->covers, + m_ClipBox.left, m_ClipBox.right, clip_pos, + dest_extra_alpha_pos); + } + if (--num_spans == 0) { + break; + } + ++span; + } + } + + FX_BOOL Init(CFX_DIBitmap* pDevice, + CFX_DIBitmap* pOriDevice, + const CFX_ClipRgn* pClipRgn, + FX_DWORD color, + FX_BOOL bFullCover, + FX_BOOL bRgbByteOrder, + int alpha_flag = 0, + void* pIccTransform = NULL) { + m_pDevice = pDevice; + m_pClipRgn = pClipRgn; + composite_span = NULL; + m_bRgbByteOrder = bRgbByteOrder; + m_pOriDevice = pOriDevice; + if (m_pClipRgn) { + m_ClipBox = m_pClipRgn->GetBox(); + } else { + m_ClipBox.left = m_ClipBox.top = 0; + m_ClipBox.right = m_pDevice->GetWidth(); + m_ClipBox.bottom = m_pDevice->GetHeight(); + } + m_pClipMask = NULL; + if (m_pClipRgn && m_pClipRgn->GetType() == CFX_ClipRgn::MaskF) { + m_pClipMask = m_pClipRgn->GetMask(); + } + m_bFullCover = bFullCover; + FX_BOOL bObjectCMYK = FXGETFLAG_COLORTYPE(alpha_flag); + FX_BOOL bDeviceCMYK = pDevice->IsCmykImage(); + m_Alpha = bObjectCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); + ICodec_IccModule* pIccModule = NULL; + if (!CFX_GEModule::Get()->GetCodecModule() || + !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + pIccTransform = NULL; + } else { + pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + } + if (m_pDevice->GetBPP() == 8) { + ASSERT(!m_bRgbByteOrder); + composite_span = &CFX_Renderer::CompositeSpanGray; + if (m_pDevice->IsAlphaMask()) { + m_Gray = 255; + } else { + if (pIccTransform) { + uint8_t gray; + color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); + pIccModule->TranslateScanline(pIccTransform, &gray, + (const uint8_t*)&color, 1); + m_Gray = gray; + } else { + if (bObjectCMYK) { + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), + FXSYS_GetYValue(color), FXSYS_GetKValue(color), + r, g, b); + m_Gray = FXRGB2GRAY(r, g, b); + } else { + m_Gray = + FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FXARGB_B(color)); + } + } + } + return TRUE; + } + if (bDeviceCMYK) { + ASSERT(!m_bRgbByteOrder); + composite_span = &CFX_Renderer::CompositeSpanCMYK; + if (bObjectCMYK) { + m_Color = FXCMYK_TODIB(color); + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&m_Color, + (const uint8_t*)&m_Color, 1); + } + } else { + if (!pIccTransform) { + return FALSE; + } + color = FXARGB_TODIB(color); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&m_Color, + (const uint8_t*)&color, 1); + } + m_Red = ((uint8_t*)&m_Color)[0]; + m_Green = ((uint8_t*)&m_Color)[1]; + m_Blue = ((uint8_t*)&m_Color)[2]; + m_Gray = ((uint8_t*)&m_Color)[3]; + } else { + composite_span = (pDevice->GetFormat() == FXDIB_Argb) + ? &CFX_Renderer::CompositeSpanARGB + : &CFX_Renderer::CompositeSpanRGB; + if (pIccTransform) { + color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&m_Color, + (const uint8_t*)&color, 1); + ((uint8_t*)&m_Color)[3] = m_Alpha; + m_Red = ((uint8_t*)&m_Color)[2]; + m_Green = ((uint8_t*)&m_Color)[1]; + m_Blue = ((uint8_t*)&m_Color)[0]; + if (m_bRgbByteOrder) { + m_Color = FXARGB_TODIB(m_Color); + m_Color = FXARGB_TOBGRORDERDIB(m_Color); + } + } else { + if (bObjectCMYK) { + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), + FXSYS_GetYValue(color), FXSYS_GetKValue(color), r, + g, b); + m_Color = FXARGB_MAKE(m_Alpha, r, g, b); + if (m_bRgbByteOrder) { + m_Color = FXARGB_TOBGRORDERDIB(m_Color); + } else { + m_Color = FXARGB_TODIB(m_Color); + } + m_Red = r; + m_Green = g; + m_Blue = b; + } else { + if (m_bRgbByteOrder) { + m_Color = FXARGB_TOBGRORDERDIB(color); + } else { + m_Color = FXARGB_TODIB(color); + } + ArgbDecode(color, m_Alpha, m_Red, m_Green, m_Blue); + } + } + } + if (m_pDevice->GetBPP() == 1) { + composite_span = &CFX_Renderer::CompositeSpan1bpp; + } + return TRUE; + } +}; + +FX_BOOL CFX_AggDeviceDriver::RenderRasterizer( + agg::rasterizer_scanline_aa& rasterizer, + FX_DWORD color, + FX_BOOL bFullCover, + FX_BOOL bGroupKnockout, + int alpha_flag, + void* pIccTransform) { + CFX_DIBitmap* pt = bGroupKnockout ? m_pOriDevice : NULL; + CFX_Renderer render; + if (!render.Init(m_pBitmap, pt, m_pClipRgn, color, bFullCover, + m_bRgbByteOrder, alpha_flag, pIccTransform)) { + return FALSE; + } + agg::scanline_u8 scanline; + agg::render_scanlines(rasterizer, scanline, render, + (m_FillFlags & FXFILL_NOPATHSMOOTH) != 0); + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + if (!GetBuffer()) { + return TRUE; + } + m_FillFlags = fill_mode; + if ((fill_mode & 3) && fill_color) { + CAgg_PathData path_data; + path_data.BuildPath(pPathData, pObject2Device); + agg::rasterizer_scanline_aa rasterizer; + rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), + (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); + rasterizer.add_path(path_data.m_PathData); + rasterizer.filling_rule((fill_mode & 3) == FXFILL_WINDING + ? agg::fill_non_zero + : agg::fill_even_odd); + if (!RenderRasterizer(rasterizer, fill_color, fill_mode & FXFILL_FULLCOVER, + FALSE, alpha_flag, pIccTransform)) { + return FALSE; + } + } + int stroke_alpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? FXGETFLAG_ALPHA_STROKE(alpha_flag) + : FXARGB_A(stroke_color); + if (pGraphState && stroke_alpha) { + if (fill_mode & FX_ZEROAREA_FILL) { + CAgg_PathData path_data; + path_data.BuildPath(pPathData, pObject2Device); + agg::rasterizer_scanline_aa rasterizer; + rasterizer.clip_box(0.0f, 0.0f, + (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), + (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); + RasterizeStroke(rasterizer, path_data.m_PathData, NULL, pGraphState, 1, + FALSE, fill_mode & FX_STROKE_TEXT_MODE); + int fill_flag = FXGETFLAG_COLORTYPE(alpha_flag) << 8 | + FXGETFLAG_ALPHA_STROKE(alpha_flag); + if (!RenderRasterizer(rasterizer, stroke_color, + fill_mode & FXFILL_FULLCOVER, m_bGroupKnockout, + fill_flag, pIccTransform)) { + return FALSE; + } + return TRUE; + } + CFX_Matrix matrix1, matrix2; + if (pObject2Device) { + matrix1.a = std::max(FXSYS_fabs(pObject2Device->a), + FXSYS_fabs(pObject2Device->b)); + matrix1.d = matrix1.a; + matrix2.Set(pObject2Device->a / matrix1.a, pObject2Device->b / matrix1.a, + pObject2Device->c / matrix1.d, pObject2Device->d / matrix1.d, + 0, 0); + CFX_Matrix mtRervese; + mtRervese.SetReverse(matrix2); + matrix1 = *pObject2Device; + matrix1.Concat(mtRervese); + } + CAgg_PathData path_data; + path_data.BuildPath(pPathData, &matrix1); + agg::rasterizer_scanline_aa rasterizer; + rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), + (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); + RasterizeStroke(rasterizer, path_data.m_PathData, &matrix2, pGraphState, + matrix1.a, FALSE, fill_mode & FX_STROKE_TEXT_MODE); + int fill_flag = FXGETFLAG_COLORTYPE(alpha_flag) << 8 | + FXGETFLAG_ALPHA_STROKE(alpha_flag); + if (!RenderRasterizer(rasterizer, stroke_color, + fill_mode & FXFILL_FULLCOVER, m_bGroupKnockout, + fill_flag, pIccTransform)) { + return FALSE; + } + } + return TRUE; +} + +void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb) { + if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) { + return; + } + uint8_t* pos = (uint8_t*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + + x * pBitmap->GetBPP() / 8; + if (pBitmap->GetFormat() == FXDIB_Argb) { + FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb)); + } else { + int alpha = FXARGB_A(argb); + pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; + pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255; + pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255; + } +} + +void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap, + int left, + int top, + int width, + int height, + FX_ARGB argb) { + int src_alpha = FXARGB_A(argb); + if (src_alpha == 0) { + return; + } + FX_RECT rect(left, top, left + width, top + height); + rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); + width = rect.Width(); + int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb); + int Bpp = pBitmap->GetBPP() / 8; + FX_BOOL bAlpha = pBitmap->HasAlpha(); + int dib_argb = FXARGB_TOBGRORDERDIB(argb); + uint8_t* pBuffer = pBitmap->GetBuffer(); + if (src_alpha == 255) { + for (int row = rect.top; row < rect.bottom; row++) { + uint8_t* dest_scan = + pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; + if (Bpp == 4) { + FX_DWORD* scan = (FX_DWORD*)dest_scan; + for (int col = 0; col < width; col++) { + *scan++ = dib_argb; + } + } else { + for (int col = 0; col < width; col++) { + *dest_scan++ = src_r; + *dest_scan++ = src_g; + *dest_scan++ = src_b; + } + } + } + return; + } + src_r = FX_GAMMA(src_r); + src_g = FX_GAMMA(src_g); + src_b = FX_GAMMA(src_b); + for (int row = rect.top; row < rect.bottom; row++) { + uint8_t* dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; + if (bAlpha) { + for (int col = 0; col < width; col++) { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETRGBORDERDIB(dest_scan, + FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); + dest_scan += 4; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan += 2; + } + } else { + for (int col = 0; col < width; col++) { + *dest_scan = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(*dest_scan), src_r, src_alpha)); + dest_scan++; + *dest_scan = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(*dest_scan), src_g, src_alpha)); + dest_scan++; + *dest_scan = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(*dest_scan), src_b, src_alpha)); + dest_scan++; + if (Bpp == 4) { + dest_scan++; + } + } + } + } +} + +void RgbByteOrderTransferBitmap(CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top) { + if (!pBitmap) { + return; + } + pBitmap->GetOverlapRect(dest_left, dest_top, width, height, + pSrcBitmap->GetWidth(), pSrcBitmap->GetHeight(), + src_left, src_top, NULL); + if (width == 0 || height == 0) { + return; + } + int Bpp = pBitmap->GetBPP() / 8; + FXDIB_Format dest_format = pBitmap->GetFormat(); + FXDIB_Format src_format = pSrcBitmap->GetFormat(); + int pitch = pBitmap->GetPitch(); + uint8_t* buffer = pBitmap->GetBuffer(); + if (dest_format == src_format) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = buffer + (dest_top + row) * pitch + dest_left * Bpp; + uint8_t* src_scan = + (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; + if (Bpp == 4) { + for (int col = 0; col < width; col++) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_scan[3], src_scan[0], + src_scan[1], src_scan[2])); + dest_scan += 4; + src_scan += 4; + } + } else { + for (int col = 0; col < width; col++) { + *dest_scan++ = src_scan[2]; + *dest_scan++ = src_scan[1]; + *dest_scan++ = src_scan[0]; + src_scan += 3; + } + } + } + return; + } + uint8_t* dest_buf = buffer + dest_top * pitch + dest_left * Bpp; + if (dest_format == FXDIB_Rgb) { + if (src_format == FXDIB_Rgb32) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * pitch; + uint8_t* src_scan = + (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 4; + for (int col = 0; col < width; col++) { + *dest_scan++ = src_scan[2]; + *dest_scan++ = src_scan[1]; + *dest_scan++ = src_scan[0]; + src_scan += 4; + } + } + } else { + ASSERT(FALSE); + } + } else if (dest_format == FXDIB_Argb || dest_format == FXDIB_Rgb32) { + if (src_format == FXDIB_Rgb) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = (uint8_t*)(dest_buf + row * pitch); + uint8_t* src_scan = + (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 3; + if (src_format == FXDIB_Argb) { + for (int col = 0; col < width; col++) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, FX_GAMMA(src_scan[0]), + FX_GAMMA(src_scan[1]), + FX_GAMMA(src_scan[2]))); + dest_scan += 4; + src_scan += 3; + } + } else { + for (int col = 0; col < width; col++) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], + src_scan[2])); + dest_scan += 4; + src_scan += 3; + } + } + } + } else if (src_format == FXDIB_Rgb32) { + ASSERT(dest_format == FXDIB_Argb); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * pitch; + uint8_t* src_scan = + (uint8_t*)(pSrcBitmap->GetScanline(src_top + row) + src_left * 4); + for (int col = 0; col < width; col++) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], + src_scan[2])); + src_scan += 4; + dest_scan += 4; + } + } + } + } else { + ASSERT(FALSE); + } +} + +FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, uint8_t alpha) { + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), + FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, g, b); + return ArgbEncode(alpha, r, g, b); +} + +FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, + int x, + int y, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag); + int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + color = bObjCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&color, + (uint8_t*)&color, 1); + color = bObjCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); + if (!pDevice->IsCmykImage()) { + color = (color & 0xffffff) | (alpha << 24); + } + } else { + if (pDevice->IsCmykImage()) { + if (!bObjCMYK) { + return FALSE; + } + } else { + if (bObjCMYK) { + color = _DefaultCMYK2ARGB(color, alpha); + } + } + } + pDevice->SetPixel(x, y, color); + if (pDevice->m_pAlphaMask) { + pDevice->m_pAlphaMask->SetPixel(x, y, alpha << 24); + } + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + if (!m_pBitmap->GetBuffer()) { + return TRUE; + } + if (!CFX_GEModule::Get()->GetCodecModule() || + !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + pIccTransform = NULL; + } + if (!m_pClipRgn) { + if (m_bRgbByteOrder) { + RgbByteOrderSetPixel(m_pBitmap, x, y, color); + } else { + return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); + } + } else if (m_pClipRgn->GetBox().Contains(x, y)) { + if (m_pClipRgn->GetType() == CFX_ClipRgn::RectI) { + if (m_bRgbByteOrder) { + RgbByteOrderSetPixel(m_pBitmap, x, y, color); + } else { + return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); + } + } else if (m_pClipRgn->GetType() == CFX_ClipRgn::MaskF) { + const CFX_DIBitmap* pMask = m_pClipRgn->GetMask(); + FX_BOOL bCMYK = FXGETFLAG_COLORTYPE(alpha_flag); + int new_alpha = + bCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); + new_alpha = new_alpha * pMask->GetScanline(y)[x] / 255; + if (m_bRgbByteOrder) { + RgbByteOrderSetPixel(m_pBitmap, x, y, + (color & 0xffffff) | (new_alpha << 24)); + return TRUE; + } + if (bCMYK) { + FXSETFLAG_ALPHA_FILL(alpha_flag, new_alpha); + } else { + color = (color & 0xffffff) | (new_alpha << 24); + } + return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); + } + } + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + if (!m_pBitmap->GetBuffer()) { + return TRUE; + } + FX_RECT clip_rect; + GetClipBox(&clip_rect); + FX_RECT draw_rect = clip_rect; + if (pRect) { + draw_rect.Intersect(*pRect); + } + if (draw_rect.IsEmpty()) { + return TRUE; + } + if (!m_pClipRgn || m_pClipRgn->GetType() == CFX_ClipRgn::RectI) { + if (m_bRgbByteOrder) { + RgbByteOrderCompositeRect(m_pBitmap, draw_rect.left, draw_rect.top, + draw_rect.Width(), draw_rect.Height(), + fill_color); + } else { + m_pBitmap->CompositeRect(draw_rect.left, draw_rect.top, draw_rect.Width(), + draw_rect.Height(), fill_color, alpha_flag, + pIccTransform); + } + return TRUE; + } + m_pBitmap->CompositeMask( + draw_rect.left, draw_rect.top, draw_rect.Width(), draw_rect.Height(), + (const CFX_DIBitmap*)m_pClipRgn->GetMask(), fill_color, + draw_rect.left - clip_rect.left, draw_rect.top - clip_rect.top, + FXDIB_BLEND_NORMAL, NULL, m_bRgbByteOrder, alpha_flag, pIccTransform); + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::GetClipBox(FX_RECT* pRect) { + if (!m_pClipRgn) { + pRect->left = pRect->top = 0; + pRect->right = GetDeviceCaps(FXDC_PIXEL_WIDTH); + pRect->bottom = GetDeviceCaps(FXDC_PIXEL_HEIGHT); + return TRUE; + } + *pRect = m_pClipRgn->GetBox(); + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform, + FX_BOOL bDEdge) { + if (!m_pBitmap->GetBuffer()) { + return TRUE; + } + if (bDEdge) { + if (m_bRgbByteOrder) { + RgbByteOrderTransferBitmap(pBitmap, 0, 0, pBitmap->GetWidth(), + pBitmap->GetHeight(), m_pBitmap, left, top); + } else { + return pBitmap->TransferBitmap(0, 0, pBitmap->GetWidth(), + pBitmap->GetHeight(), m_pBitmap, left, top, + pIccTransform); + } + return TRUE; + } + FX_RECT rect(left, top, left + pBitmap->GetWidth(), + top + pBitmap->GetHeight()); + CFX_DIBitmap* pBack = NULL; + if (m_pOriDevice) { + pBack = m_pOriDevice->Clone(&rect); + if (!pBack) { + return TRUE; + } + pBack->CompositeBitmap(0, 0, pBack->GetWidth(), pBack->GetHeight(), + m_pBitmap, 0, 0); + } else { + pBack = m_pBitmap->Clone(&rect); + } + if (!pBack) { + return TRUE; + } + FX_BOOL bRet = TRUE; + left = left >= 0 ? 0 : left; + top = top >= 0 ? 0 : top; + if (m_bRgbByteOrder) { + RgbByteOrderTransferBitmap(pBitmap, 0, 0, rect.Width(), rect.Height(), + pBack, left, top); + } else { + bRet = pBitmap->TransferBitmap(0, 0, rect.Width(), rect.Height(), pBack, + left, top, pIccTransform); + } + delete pBack; + return bRet; +} + +FX_BOOL CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD argb, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform) { + if (!m_pBitmap->GetBuffer()) { + return TRUE; + } + if (pBitmap->IsAlphaMask()) + return m_pBitmap->CompositeMask( + left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, argb, + pSrcRect->left, pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, + alpha_flag, pIccTransform); + return m_pBitmap->CompositeBitmap( + left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, pSrcRect->left, + pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, pIccTransform); +} + +FX_BOOL CFX_AggDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource, + FX_DWORD argb, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (!m_pBitmap->GetBuffer()) { + return TRUE; + } + if (dest_width == pSource->GetWidth() && + dest_height == pSource->GetHeight()) { + FX_RECT rect(0, 0, dest_width, dest_height); + return SetDIBits(pSource, argb, &rect, dest_left, dest_top, blend_type, + alpha_flag, pIccTransform); + } + FX_RECT dest_rect(dest_left, dest_top, dest_left + dest_width, + dest_top + dest_height); + dest_rect.Normalize(); + FX_RECT dest_clip = dest_rect; + dest_clip.Intersect(*pClipRect); + CFX_BitmapComposer composer; + composer.Compose(m_pBitmap, m_pClipRgn, 255, argb, dest_clip, FALSE, FALSE, + FALSE, m_bRgbByteOrder, alpha_flag, pIccTransform, + blend_type); + dest_clip.Offset(-dest_rect.left, -dest_rect.top); + CFX_ImageStretcher stretcher; + if (stretcher.Start(&composer, pSource, dest_width, dest_height, dest_clip, + flags)) { + stretcher.Continue(NULL); + } + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::StartDIBits(const CFX_DIBSource* pSource, + int bitmap_alpha, + FX_DWORD argb, + const CFX_Matrix* pMatrix, + FX_DWORD render_flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (!m_pBitmap->GetBuffer()) { + return TRUE; + } + CFX_ImageRenderer* pRenderer = new CFX_ImageRenderer; + pRenderer->Start(m_pBitmap, m_pClipRgn, pSource, bitmap_alpha, argb, pMatrix, + render_flags, m_bRgbByteOrder, alpha_flag, pIccTransform); + handle = pRenderer; + return TRUE; +} + +FX_BOOL CFX_AggDeviceDriver::ContinueDIBits(void* pHandle, IFX_Pause* pPause) { + if (!m_pBitmap->GetBuffer()) { + return TRUE; + } + return ((CFX_ImageRenderer*)pHandle)->Continue(pPause); +} + +void CFX_AggDeviceDriver::CancelDIBits(void* pHandle) { + if (!m_pBitmap->GetBuffer()) { + return; + } + delete (CFX_ImageRenderer*)pHandle; +} + +CFX_FxgeDevice::CFX_FxgeDevice() { + m_bOwnedBitmap = FALSE; +} + +bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap, + int dither_bits, + bool bRgbByteOrder, + CFX_DIBitmap* pOriDevice, + bool bGroupKnockout) { + if (!pBitmap) { + return false; + } + SetBitmap(pBitmap); + IFX_RenderDeviceDriver* pDriver = new CFX_AggDeviceDriver( + pBitmap, dither_bits, bRgbByteOrder, pOriDevice, bGroupKnockout); + SetDeviceDriver(pDriver); + return true; +} + +bool CFX_FxgeDevice::Create(int width, + int height, + FXDIB_Format format, + int dither_bits, + CFX_DIBitmap* pOriDevice) { + m_bOwnedBitmap = true; + CFX_DIBitmap* pBitmap = new CFX_DIBitmap; + if (!pBitmap->Create(width, height, format)) { + delete pBitmap; + return false; + } + SetBitmap(pBitmap); + IFX_RenderDeviceDriver* pDriver = + new CFX_AggDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); + SetDeviceDriver(pDriver); + return true; +} + +CFX_FxgeDevice::~CFX_FxgeDevice() { + if (m_bOwnedBitmap) { + delete GetBitmap(); + } +} diff --git a/core/fxge/agg/fx_agg_driver.h b/core/fxge/agg/fx_agg_driver.h new file mode 100644 index 0000000000..3631016fea --- /dev/null +++ b/core/fxge/agg/fx_agg_driver.h @@ -0,0 +1,152 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_AGG_FX_AGG_DRIVER_H_ +#define CORE_FXGE_AGG_FX_AGG_DRIVER_H_ + +#include "core/include/fxge/fx_ge.h" +#include "third_party/agg23/agg_clip_liang_barsky.h" +#include "third_party/agg23/agg_path_storage.h" +#include "third_party/agg23/agg_rasterizer_scanline_aa.h" + +class CFX_Matrix; +class CFX_PathData; + +class CAgg_PathData { + public: + CAgg_PathData() {} + ~CAgg_PathData() {} + void BuildPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device); + + agg::path_storage m_PathData; +}; + +class CFX_AggDeviceDriver : public IFX_RenderDeviceDriver { + public: + CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap, + int dither_bits, + FX_BOOL bRgbByteOrder, + CFX_DIBitmap* pOriDevice, + FX_BOOL bGroupKnockout); + ~CFX_AggDeviceDriver() override; + + void InitPlatform(); + void DestroyPlatform(); + + // IFX_RenderDeviceDriver + int GetDeviceCaps(int caps_id) override; + void SaveState() override; + void RestoreState(FX_BOOL bKeepSaved) override; + FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) override; + FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) override; + FX_BOOL DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) override; + FX_BOOL FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL DrawCosmeticLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_DWORD color, + int alpha_flag, + void* pIccTransform, + int blend_type) override { + return FALSE; + } + FX_BOOL GetClipBox(FX_RECT* pRect) override; + FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform = NULL, + FX_BOOL bDEdge = FALSE) override; + CFX_DIBitmap* GetBackDrop() override { return m_pOriDevice; } + FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform) override; + FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) override; + void CancelDIBits(void* handle) override; + FX_BOOL DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) override; + int GetDriverType() override { return 1; } + + FX_BOOL RenderRasterizer(agg::rasterizer_scanline_aa& rasterizer, + FX_DWORD color, + FX_BOOL bFullCover, + FX_BOOL bGroupKnockout, + int alpha_flag, + void* pIccTransform); + + void SetClipMask(agg::rasterizer_scanline_aa& rasterizer); + + virtual uint8_t* GetBuffer() const; + + private: + CFX_DIBitmap* m_pBitmap; + CFX_ClipRgn* m_pClipRgn; + CFX_ArrayTemplate m_StateStack; + void* m_pPlatformGraphics; + void* m_pPlatformBitmap; + void* m_pDwRenderTartget; + int m_FillFlags; + int m_DitherBits; + FX_BOOL m_bRgbByteOrder; + CFX_DIBitmap* m_pOriDevice; + FX_BOOL m_bGroupKnockout; +}; + +#endif // CORE_FXGE_AGG_FX_AGG_DRIVER_H_ diff --git a/core/fxge/android/fpf_skiafont.cpp b/core/fxge/android/fpf_skiafont.cpp new file mode 100644 index 0000000000..b94ec055bf --- /dev/null +++ b/core/fxge/android/fpf_skiafont.cpp @@ -0,0 +1,217 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#include + +#include "core/fxge/android/fpf_skiafont.h" +#include "core/fxge/android/fpf_skiafontmgr.h" +#include "core/include/fxge/fx_freetype.h" + +#define FPF_EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em) + +CFPF_SkiaFont::CFPF_SkiaFont() + : m_pFontMgr(NULL), + m_pFontDes(NULL), + m_Face(NULL), + m_dwStyle(0), + m_uCharset(0), + m_dwRefCount(0) {} +CFPF_SkiaFont::~CFPF_SkiaFont() { + if (m_Face) { + FXFT_Done_Face(m_Face); + } +} +void CFPF_SkiaFont::Release() { + if (--m_dwRefCount == 0) { + delete this; + } +} +IFPF_Font* CFPF_SkiaFont::Retain() { + m_dwRefCount++; + return (IFPF_Font*)this; +} +FPF_HFONT CFPF_SkiaFont::GetHandle() { + return NULL; +} +CFX_ByteString CFPF_SkiaFont::GetFamilyName() { + if (!m_Face) { + return CFX_ByteString(); + } + return CFX_ByteString(FXFT_Get_Face_Family_Name(m_Face)); +} +CFX_WideString CFPF_SkiaFont::GetPsName() { + if (!m_Face) { + return CFX_WideString(); + } + return CFX_WideString::FromLocal(FXFT_Get_Postscript_Name(m_Face)); +} +int32_t CFPF_SkiaFont::GetGlyphIndex(FX_WCHAR wUnicode) { + if (!m_Face) { + return wUnicode; + } + if (FXFT_Select_Charmap(m_Face, FXFT_ENCODING_UNICODE)) { + return 0; + } + return FXFT_Get_Char_Index(m_Face, wUnicode); +} +int32_t CFPF_SkiaFont::GetGlyphWidth(int32_t iGlyphIndex) { + if (!m_Face) { + return 0; + } + if (FXFT_Load_Glyph( + m_Face, iGlyphIndex, + FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { + return 0; + } + return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Glyph_HoriAdvance(m_Face)); +} +int32_t CFPF_SkiaFont::GetAscent() const { + if (!m_Face) { + return 0; + } + return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_Ascender(m_Face)); +} +int32_t CFPF_SkiaFont::GetDescent() const { + if (!m_Face) { + return 0; + } + return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_Descender(m_Face)); +} +FX_BOOL CFPF_SkiaFont::GetGlyphBBox(int32_t iGlyphIndex, FX_RECT& rtBBox) { + if (!m_Face) { + return FALSE; + } + if (FXFT_Is_Face_Tricky(m_Face)) { + if (FXFT_Set_Char_Size(m_Face, 0, 1000 * 64, 72, 72)) { + return FALSE; + } + if (FXFT_Load_Glyph(m_Face, iGlyphIndex, + FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { + FXFT_Set_Pixel_Sizes(m_Face, 0, 64); + return FALSE; + } + FXFT_Glyph glyph; + if (FXFT_Get_Glyph(m_Face->glyph, &glyph)) { + FXFT_Set_Pixel_Sizes(m_Face, 0, 64); + return FALSE; + } + FXFT_BBox cbox; + FXFT_Glyph_Get_CBox(glyph, FXFT_GLYPH_BBOX_PIXELS, &cbox); + int32_t x_ppem = m_Face->size->metrics.x_ppem; + int32_t y_ppem = m_Face->size->metrics.y_ppem; + rtBBox.left = FPF_EM_ADJUST(x_ppem, cbox.xMin); + rtBBox.right = FPF_EM_ADJUST(x_ppem, cbox.xMax); + rtBBox.top = FPF_EM_ADJUST(y_ppem, cbox.yMax); + rtBBox.bottom = FPF_EM_ADJUST(y_ppem, cbox.yMin); + rtBBox.top = std::min(rtBBox.top, GetAscent()); + rtBBox.bottom = std::max(rtBBox.bottom, GetDescent()); + FXFT_Done_Glyph(glyph); + return FXFT_Set_Pixel_Sizes(m_Face, 0, 64) == 0; + } + if (FXFT_Load_Glyph( + m_Face, iGlyphIndex, + FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { + return FALSE; + } + rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Glyph_HoriBearingX(m_Face)); + rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Glyph_HoriBearingY(m_Face)); + rtBBox.right = FPF_EM_ADJUST( + FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Glyph_HoriBearingX(m_Face) + FXFT_Get_Glyph_Width(m_Face)); + rtBBox.top = FPF_EM_ADJUST( + FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Glyph_HoriBearingY(m_Face) - FXFT_Get_Glyph_Height(m_Face)); + return TRUE; +} +FX_BOOL CFPF_SkiaFont::GetBBox(FX_RECT& rtBBox) { + if (!m_Face) { + return FALSE; + } + rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_xMin(m_Face)); + rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_yMin(m_Face)); + rtBBox.right = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_xMax(m_Face)); + rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_yMax(m_Face)); + return TRUE; +} +int32_t CFPF_SkiaFont::GetHeight() const { + if (!m_Face) { + return 0; + } + return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_Height(m_Face)); +} +int32_t CFPF_SkiaFont::GetItalicAngle() const { + if (!m_Face) { + return 0; + } + TT_Postscript* ttInfo = + (TT_Postscript*)FT_Get_Sfnt_Table(m_Face, ft_sfnt_post); + if (ttInfo) { + return ttInfo->italicAngle; + } + return 0; +} +FX_DWORD CFPF_SkiaFont::GetFontData(FX_DWORD dwTable, + uint8_t* pBuffer, + FX_DWORD dwSize) { + if (!m_Face) { + return 0; + } + FT_ULong ulSize = pdfium::base::checked_cast(dwSize); + if (FXFT_Load_Sfnt_Table(m_Face, dwTable, 0, pBuffer, &ulSize)) { + return 0; + } + return pdfium::base::checked_cast(ulSize); +} +FX_BOOL CFPF_SkiaFont::InitFont(CFPF_SkiaFontMgr* pFontMgr, + CFPF_SkiaFontDescriptor* pFontDes, + const CFX_ByteStringC& bsFamily, + FX_DWORD dwStyle, + uint8_t uCharset) { + if (!pFontMgr || !pFontDes) { + return FALSE; + } + switch (pFontDes->GetType()) { + case FPF_SKIAFONTTYPE_Path: { + CFPF_SkiaPathFont* pFont = (CFPF_SkiaPathFont*)pFontDes; + m_Face = pFontMgr->GetFontFace(pFont->m_pPath, pFont->m_iFaceIndex); + } break; + case FPF_SKIAFONTTYPE_File: { + CFPF_SkiaFileFont* pFont = (CFPF_SkiaFileFont*)pFontDes; + m_Face = pFontMgr->GetFontFace(pFont->m_pFile, pFont->m_iFaceIndex); + } break; + case FPF_SKIAFONTTYPE_Buffer: { + CFPF_SkiaBufferFont* pFont = (CFPF_SkiaBufferFont*)pFontDes; + m_Face = pFontMgr->GetFontFace((const uint8_t*)pFont->m_pBuffer, + pFont->m_szBuffer, pFont->m_iFaceIndex); + } break; + default: + return FALSE; + } + if (!m_Face) { + return FALSE; + } + m_dwStyle = dwStyle; + m_uCharset = uCharset; + m_pFontMgr = pFontMgr; + m_pFontDes = pFontDes; + m_dwRefCount = 1; + return TRUE; +} +#endif diff --git a/core/fxge/android/fpf_skiafont.h b/core/fxge/android/fpf_skiafont.h new file mode 100644 index 0000000000..f1ccedb56d --- /dev/null +++ b/core/fxge/android/fpf_skiafont.h @@ -0,0 +1,60 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_ANDROID_FPF_SKIAFONT_H_ +#define CORE_FXGE_ANDROID_FPF_SKIAFONT_H_ + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#include "core/include/fxge/fpf.h" +#include "core/include/fxge/fx_font.h" + +class CFPF_SkiaFontDescriptor; +class CFPF_SkiaFontMgr; +class CFPF_SkiaFont : public IFPF_Font { + public: + CFPF_SkiaFont(); + ~CFPF_SkiaFont() override; + + // IFPF_Font + void Release() override; + IFPF_Font* Retain() override; + FPF_HFONT GetHandle() override; + CFX_ByteString GetFamilyName() override; + CFX_WideString GetPsName() override; + FX_DWORD GetFontStyle() const override { return m_dwStyle; } + uint8_t GetCharset() const override { return m_uCharset; } + int32_t GetGlyphIndex(FX_WCHAR wUnicode) override; + int32_t GetGlyphWidth(int32_t iGlyphIndex) override; + int32_t GetAscent() const override; + int32_t GetDescent() const override; + FX_BOOL GetGlyphBBox(int32_t iGlyphIndex, FX_RECT& rtBBox) override; + FX_BOOL GetBBox(FX_RECT& rtBBox) override; + int32_t GetHeight() const override; + int32_t GetItalicAngle() const override; + FX_DWORD GetFontData(FX_DWORD dwTable, + uint8_t* pBuffer, + FX_DWORD dwSize) override; + + FX_BOOL InitFont(CFPF_SkiaFontMgr* pFontMgr, + CFPF_SkiaFontDescriptor* pFontDes, + const CFX_ByteStringC& bsFamily, + FX_DWORD dwStyle, + uint8_t uCharset); + + protected: + CFPF_SkiaFontMgr* m_pFontMgr; + CFPF_SkiaFontDescriptor* m_pFontDes; + FXFT_Face m_Face; + FX_DWORD m_dwStyle; + uint8_t m_uCharset; + FX_DWORD m_dwRefCount; +}; +#endif + +#endif // CORE_FXGE_ANDROID_FPF_SKIAFONT_H_ diff --git a/core/fxge/android/fpf_skiafontmgr.cpp b/core/fxge/android/fpf_skiafontmgr.cpp new file mode 100644 index 0000000000..e9249ba76f --- /dev/null +++ b/core/fxge/android/fpf_skiafontmgr.cpp @@ -0,0 +1,524 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#define FPF_SKIAMATCHWEIGHT_NAME1 62 +#define FPF_SKIAMATCHWEIGHT_NAME2 60 +#define FPF_SKIAMATCHWEIGHT_1 16 +#define FPF_SKIAMATCHWEIGHT_2 8 + +#include "core/fxge/android/fpf_skiafont.h" +#include "core/fxge/android/fpf_skiafontmgr.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxge/fx_freetype.h" + +#ifdef __cplusplus +extern "C" { +#endif +static unsigned long FPF_SkiaStream_Read(FXFT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count) { + IFX_FileRead* pFileRead = (IFX_FileRead*)stream->descriptor.pointer; + if (!pFileRead) { + return 0; + } + if (count > 0) { + if (pFileRead->ReadBlock(buffer, (FX_FILESIZE)offset, (size_t)count) != + count) { + return 0; + } + } + return count; +} +static void FPF_SkiaStream_Close(FXFT_Stream stream) {} +#ifdef __cplusplus +}; +#endif +struct FPF_SKIAFONTMAP { + FX_DWORD dwFamily; + FX_DWORD dwSubSt; +}; +static const FPF_SKIAFONTMAP g_SkiaFontmap[] = { + {0x58c5083, 0xc8d2e345}, {0x5dfade2, 0xe1633081}, + {0x684317d, 0xe1633081}, {0x14ee2d13, 0xc8d2e345}, + {0x3918fe2d, 0xbbeeec72}, {0x3b98b31c, 0xe1633081}, + {0x3d49f40e, 0xe1633081}, {0x432c41c5, 0xe1633081}, + {0x491b6ad0, 0xe1633081}, {0x5612cab1, 0x59b9f8f1}, + {0x779ce19d, 0xc8d2e345}, {0x7cc9510b, 0x59b9f8f1}, + {0x83746053, 0xbbeeec72}, {0xaaa60c03, 0xbbeeec72}, + {0xbf85ff26, 0xe1633081}, {0xc04fe601, 0xbbeeec72}, + {0xca3812d5, 0x59b9f8f1}, {0xca383e15, 0x59b9f8f1}, + {0xcad5eaf6, 0x59b9f8f1}, {0xcb7a04c8, 0xc8d2e345}, + {0xfb4ce0de, 0xe1633081}, +}; +FX_DWORD FPF_SkiaGetSubstFont(FX_DWORD dwHash) { + int32_t iStart = 0; + int32_t iEnd = sizeof(g_SkiaFontmap) / sizeof(FPF_SKIAFONTMAP); + while (iStart <= iEnd) { + int32_t iMid = (iStart + iEnd) / 2; + const FPF_SKIAFONTMAP* pItem = &g_SkiaFontmap[iMid]; + if (dwHash < pItem->dwFamily) { + iEnd = iMid - 1; + } else if (dwHash > pItem->dwFamily) { + iStart = iMid + 1; + } else { + return pItem->dwSubSt; + } + } + return 0; +} +static const FPF_SKIAFONTMAP g_SkiaSansFontMap[] = { + {0x58c5083, 0xd5b8d10f}, {0x14ee2d13, 0xd5b8d10f}, + {0x779ce19d, 0xd5b8d10f}, {0xcb7a04c8, 0xd5b8d10f}, + {0xfb4ce0de, 0xd5b8d10f}, +}; +FX_DWORD FPF_SkiaGetSansFont(FX_DWORD dwHash) { + int32_t iStart = 0; + int32_t iEnd = sizeof(g_SkiaSansFontMap) / sizeof(FPF_SKIAFONTMAP); + while (iStart <= iEnd) { + int32_t iMid = (iStart + iEnd) / 2; + const FPF_SKIAFONTMAP* pItem = &g_SkiaSansFontMap[iMid]; + if (dwHash < pItem->dwFamily) { + iEnd = iMid - 1; + } else if (dwHash > pItem->dwFamily) { + iStart = iMid + 1; + } else { + return pItem->dwSubSt; + } + } + return 0; +} +static uint32_t FPF_GetHashCode_StringA(const FX_CHAR* pStr, + int32_t iLength, + FX_BOOL bIgnoreCase = FALSE) { + if (!pStr) { + return 0; + } + if (iLength < 0) { + iLength = FXSYS_strlen(pStr); + } + const FX_CHAR* pStrEnd = pStr + iLength; + uint32_t uHashCode = 0; + if (bIgnoreCase) { + while (pStr < pStrEnd) { + uHashCode = 31 * uHashCode + FXSYS_tolower(*pStr++); + } + } else { + while (pStr < pStrEnd) { + uHashCode = 31 * uHashCode + *pStr++; + } + } + return uHashCode; +} +enum FPF_SKIACHARSET { + FPF_SKIACHARSET_Ansi = 1 << 0, + FPF_SKIACHARSET_Default = 1 << 1, + FPF_SKIACHARSET_Symbol = 1 << 2, + FPF_SKIACHARSET_ShiftJIS = 1 << 3, + FPF_SKIACHARSET_Korean = 1 << 4, + FPF_SKIACHARSET_Johab = 1 << 5, + FPF_SKIACHARSET_GB2312 = 1 << 6, + FPF_SKIACHARSET_BIG5 = 1 << 7, + FPF_SKIACHARSET_Greek = 1 << 8, + FPF_SKIACHARSET_Turkish = 1 << 9, + FPF_SKIACHARSET_Vietnamese = 1 << 10, + FPF_SKIACHARSET_Hebrew = 1 << 11, + FPF_SKIACHARSET_Arabic = 1 << 12, + FPF_SKIACHARSET_Baltic = 1 << 13, + FPF_SKIACHARSET_Cyrillic = 1 << 14, + FPF_SKIACHARSET_Thai = 1 << 15, + FPF_SKIACHARSET_EeasternEuropean = 1 << 16, + FPF_SKIACHARSET_PC = 1 << 17, + FPF_SKIACHARSET_OEM = 1 << 18, +}; +static FX_DWORD FPF_SkiaGetCharset(uint8_t uCharset) { + switch (uCharset) { + case FXFONT_ANSI_CHARSET: + return FPF_SKIACHARSET_Ansi; + case FXFONT_DEFAULT_CHARSET: + return FPF_SKIACHARSET_Default; + case FXFONT_SYMBOL_CHARSET: + return FPF_SKIACHARSET_Symbol; + case FXFONT_SHIFTJIS_CHARSET: + return FPF_SKIACHARSET_ShiftJIS; + case FXFONT_HANGEUL_CHARSET: + return FPF_SKIACHARSET_Korean; + case FXFONT_GB2312_CHARSET: + return FPF_SKIACHARSET_GB2312; + case FXFONT_CHINESEBIG5_CHARSET: + return FPF_SKIACHARSET_BIG5; + case FXFONT_GREEK_CHARSET: + return FPF_SKIACHARSET_Greek; + case FXFONT_TURKISH_CHARSET: + return FPF_SKIACHARSET_Turkish; + case FXFONT_HEBREW_CHARSET: + return FPF_SKIACHARSET_Hebrew; + case FXFONT_ARABIC_CHARSET: + return FPF_SKIACHARSET_Arabic; + case FXFONT_BALTIC_CHARSET: + return FPF_SKIACHARSET_Baltic; + case FXFONT_RUSSIAN_CHARSET: + return FPF_SKIACHARSET_Cyrillic; + case FXFONT_THAI_CHARSET: + return FPF_SKIACHARSET_Thai; + case FXFONT_EASTEUROPE_CHARSET: + return FPF_SKIACHARSET_EeasternEuropean; + } + return FPF_SKIACHARSET_Default; +} +static FX_DWORD FPF_SKIANormalizeFontName(const CFX_ByteStringC& bsfamily) { + FX_DWORD dwHash = 0; + int32_t iLength = bsfamily.GetLength(); + const FX_CHAR* pBuffer = bsfamily.GetCStr(); + for (int32_t i = 0; i < iLength; i++) { + FX_CHAR ch = pBuffer[i]; + if (ch == ' ' || ch == '-' || ch == ',') { + continue; + } + dwHash = 31 * dwHash + FXSYS_tolower(ch); + } + return dwHash; +} +static FX_DWORD FPF_SKIAGetFamilyHash(const CFX_ByteStringC& bsFamily, + FX_DWORD dwStyle, + uint8_t uCharset) { + CFX_ByteString bsFont(bsFamily); + if (dwStyle & FXFONT_BOLD) { + bsFont += "Bold"; + } + if (dwStyle & FXFONT_ITALIC) { + bsFont += "Italic"; + } + if (dwStyle & FXFONT_SERIF) { + bsFont += "Serif"; + } + bsFont += uCharset; + return FPF_GetHashCode_StringA(bsFont.c_str(), bsFont.GetLength(), TRUE); +} +static FX_BOOL FPF_SkiaIsCJK(uint8_t uCharset) { + return (uCharset == FXFONT_GB2312_CHARSET) || + (uCharset == FXFONT_CHINESEBIG5_CHARSET) || + (uCharset == FXFONT_HANGEUL_CHARSET) || + (uCharset == FXFONT_SHIFTJIS_CHARSET); +} +static FX_BOOL FPF_SkiaMaybeSymbol(const CFX_ByteStringC& bsFacename) { + CFX_ByteString bsName = bsFacename; + bsName.MakeLower(); + return bsName.Find("symbol") > -1; +} +static FX_BOOL FPF_SkiaMaybeArabic(const CFX_ByteStringC& bsFacename) { + CFX_ByteString bsName = bsFacename; + bsName.MakeLower(); + return bsName.Find("arabic") > -1; +} +CFPF_SkiaFontMgr::CFPF_SkiaFontMgr() : m_bLoaded(FALSE), m_FTLibrary(NULL) {} +CFPF_SkiaFontMgr::~CFPF_SkiaFontMgr() { + for (const auto& pair : m_FamilyFonts) { + if (pair.second) + pair.second->Release(); + } + m_FamilyFonts.clear(); + for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) { + delete *it; + } + m_FontFaces.clear(); + if (m_FTLibrary) { + FXFT_Done_FreeType(m_FTLibrary); + } +} +FX_BOOL CFPF_SkiaFontMgr::InitFTLibrary() { + if (!m_FTLibrary) { + FXFT_Init_FreeType(&m_FTLibrary); + } + return m_FTLibrary != NULL; +} +void CFPF_SkiaFontMgr::LoadSystemFonts() { + if (m_bLoaded) { + return; + } + ScanPath("/system/fonts"); + OutputSystemFonts(); + m_bLoaded = TRUE; +} +void CFPF_SkiaFontMgr::LoadPrivateFont(IFX_FileRead* pFontFile) {} +void CFPF_SkiaFontMgr::LoadPrivateFont(const CFX_ByteStringC& bsFileName) {} +void CFPF_SkiaFontMgr::LoadPrivateFont(void* pBuffer, size_t szBuffer) {} +IFPF_Font* CFPF_SkiaFontMgr::CreateFont(const CFX_ByteStringC& bsFamilyname, + uint8_t uCharset, + FX_DWORD dwStyle, + FX_DWORD dwMatch) { + FX_DWORD dwHash = FPF_SKIAGetFamilyHash(bsFamilyname, dwStyle, uCharset); + auto it = m_FamilyFonts.find(dwHash); + if (it != m_FamilyFonts.end() && it->second) + return it->second->Retain(); + + FX_DWORD dwFaceName = FPF_SKIANormalizeFontName(bsFamilyname); + FX_DWORD dwSubst = FPF_SkiaGetSubstFont(dwFaceName); + FX_DWORD dwSubstSans = FPF_SkiaGetSansFont(dwFaceName); + FX_BOOL bMaybeSymbol = FPF_SkiaMaybeSymbol(bsFamilyname); + if (uCharset != FXFONT_ARABIC_CHARSET && FPF_SkiaMaybeArabic(bsFamilyname)) { + uCharset = FXFONT_ARABIC_CHARSET; + } else if (uCharset == FXFONT_ANSI_CHARSET && + (dwMatch & FPF_MATCHFONT_REPLACEANSI)) { + uCharset = FXFONT_DEFAULT_CHARSET; + } + int32_t nExpectVal = FPF_SKIAMATCHWEIGHT_NAME1 + FPF_SKIAMATCHWEIGHT_1 * 3 + + FPF_SKIAMATCHWEIGHT_2 * 2; + int32_t nItem = -1; + int32_t nMax = -1; + int32_t nGlyphNum = 0; + for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) { + CFPF_SkiaPathFont* pFontDes = static_cast(*it); + if (!(pFontDes->m_dwCharsets & FPF_SkiaGetCharset(uCharset))) { + continue; + } + int32_t nFind = 0; + FX_DWORD dwSysFontName = FPF_SKIANormalizeFontName(pFontDes->m_pFamily); + if (dwFaceName == dwSysFontName) { + nFind += FPF_SKIAMATCHWEIGHT_NAME1; + } + bool bMatchedName = (nFind == FPF_SKIAMATCHWEIGHT_NAME1); + if ((dwStyle & FXFONT_BOLD) == (pFontDes->m_dwStyle & FXFONT_BOLD)) { + nFind += FPF_SKIAMATCHWEIGHT_1; + } + if ((dwStyle & FXFONT_ITALIC) == (pFontDes->m_dwStyle & FXFONT_ITALIC)) { + nFind += FPF_SKIAMATCHWEIGHT_1; + } + if ((dwStyle & FXFONT_FIXED_PITCH) == + (pFontDes->m_dwStyle & FXFONT_FIXED_PITCH)) { + nFind += FPF_SKIAMATCHWEIGHT_2; + } + if ((dwStyle & FXFONT_SERIF) == (pFontDes->m_dwStyle & FXFONT_SERIF)) { + nFind += FPF_SKIAMATCHWEIGHT_1; + } + if ((dwStyle & FXFONT_SCRIPT) == (pFontDes->m_dwStyle & FXFONT_SCRIPT)) { + nFind += FPF_SKIAMATCHWEIGHT_2; + } + if (dwSubst == dwSysFontName || dwSubstSans == dwSysFontName) { + nFind += FPF_SKIAMATCHWEIGHT_NAME2; + bMatchedName = true; + } + if (uCharset == FXFONT_DEFAULT_CHARSET || bMaybeSymbol) { + if (nFind > nMax && bMatchedName) { + nMax = nFind; + nItem = it - m_FontFaces.rbegin(); + } + } else if (FPF_SkiaIsCJK(uCharset)) { + if (bMatchedName || pFontDes->m_iGlyphNum > nGlyphNum) { + nItem = it - m_FontFaces.rbegin(); + nGlyphNum = pFontDes->m_iGlyphNum; + } + } else if (nFind > nMax) { + nMax = nFind; + nItem = it - m_FontFaces.rbegin(); + } + if (nExpectVal <= nFind) { + nItem = it - m_FontFaces.rbegin(); + break; + } + } + if (nItem > -1) { + CFPF_SkiaFontDescriptor* pFontDes = m_FontFaces[nItem]; + CFPF_SkiaFont* pFont = new CFPF_SkiaFont; + if (pFont->InitFont(this, pFontDes, bsFamilyname, dwStyle, uCharset)) { + m_FamilyFonts[dwHash] = pFont; + return pFont->Retain(); + } + pFont->Release(); + } + return NULL; +} +FXFT_Face CFPF_SkiaFontMgr::GetFontFace(IFX_FileRead* pFileRead, + int32_t iFaceIndex) { + if (!pFileRead) { + return NULL; + } + if (pFileRead->GetSize() == 0) { + return NULL; + } + if (iFaceIndex < 0) { + return NULL; + } + FXFT_StreamRec streamRec; + FXSYS_memset(&streamRec, 0, sizeof(FXFT_StreamRec)); + streamRec.size = pFileRead->GetSize(); + streamRec.descriptor.pointer = pFileRead; + streamRec.read = FPF_SkiaStream_Read; + streamRec.close = FPF_SkiaStream_Close; + FXFT_Open_Args args; + args.flags = FT_OPEN_STREAM; + args.stream = &streamRec; + FXFT_Face face; + if (FXFT_Open_Face(m_FTLibrary, &args, iFaceIndex, &face)) { + return NULL; + } + FXFT_Set_Pixel_Sizes(face, 0, 64); + return face; +} +FXFT_Face CFPF_SkiaFontMgr::GetFontFace(const CFX_ByteStringC& bsFile, + int32_t iFaceIndex) { + if (bsFile.IsEmpty()) { + return NULL; + } + if (iFaceIndex < 0) { + return NULL; + } + FXFT_Open_Args args; + args.flags = FT_OPEN_PATHNAME; + args.pathname = (FT_String*)bsFile.GetCStr(); + FXFT_Face face; + if (FXFT_Open_Face(m_FTLibrary, &args, iFaceIndex, &face)) { + return FALSE; + } + FXFT_Set_Pixel_Sizes(face, 0, 64); + return face; +} +FXFT_Face CFPF_SkiaFontMgr::GetFontFace(const uint8_t* pBuffer, + size_t szBuffer, + int32_t iFaceIndex) { + if (!pBuffer || szBuffer < 1) { + return NULL; + } + if (iFaceIndex < 0) { + return NULL; + } + FXFT_Open_Args args; + args.flags = FT_OPEN_MEMORY; + args.memory_base = pBuffer; + args.memory_size = szBuffer; + FXFT_Face face; + if (FXFT_Open_Face(m_FTLibrary, &args, iFaceIndex, &face)) { + return FALSE; + } + FXFT_Set_Pixel_Sizes(face, 0, 64); + return face; +} +void CFPF_SkiaFontMgr::ScanPath(const CFX_ByteStringC& path) { + void* handle = FX_OpenFolder(path.GetCStr()); + if (!handle) { + return; + } + CFX_ByteString filename; + FX_BOOL bFolder = FALSE; + while (FX_GetNextFile(handle, filename, bFolder)) { + if (bFolder) { + if (filename == "." || filename == "..") { + continue; + } + } else { + CFX_ByteString ext = filename.Right(4); + ext.MakeLower(); + if (ext != ".ttf" && ext != ".ttc" && ext != ".otf") { + continue; + } + } + CFX_ByteString fullpath = path; + fullpath += "/"; + fullpath += filename; + if (bFolder) { + ScanPath(fullpath); + } else { + ScanFile(fullpath); + } + } + FX_CloseFolder(handle); +} +void CFPF_SkiaFontMgr::ScanFile(const CFX_ByteStringC& file) { + FXFT_Face face = GetFontFace(file); + if (face) { + CFPF_SkiaPathFont* pFontDesc = new CFPF_SkiaPathFont; + pFontDesc->SetPath(file.GetCStr()); + ReportFace(face, pFontDesc); + m_FontFaces.push_back(pFontDesc); + FXFT_Done_Face(face); + } +} +static const FX_DWORD g_FPFSkiaFontCharsets[] = { + FPF_SKIACHARSET_Ansi, + FPF_SKIACHARSET_EeasternEuropean, + FPF_SKIACHARSET_Cyrillic, + FPF_SKIACHARSET_Greek, + FPF_SKIACHARSET_Turkish, + FPF_SKIACHARSET_Hebrew, + FPF_SKIACHARSET_Arabic, + FPF_SKIACHARSET_Baltic, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + FPF_SKIACHARSET_Thai, + FPF_SKIACHARSET_ShiftJIS, + FPF_SKIACHARSET_GB2312, + FPF_SKIACHARSET_Korean, + FPF_SKIACHARSET_BIG5, + FPF_SKIACHARSET_Johab, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + FPF_SKIACHARSET_OEM, + FPF_SKIACHARSET_Symbol, +}; +static FX_DWORD FPF_SkiaGetFaceCharset(TT_OS2* pOS2) { + FX_DWORD dwCharset = 0; + if (pOS2) { + for (int32_t i = 0; i < 32; i++) { + if (pOS2->ulCodePageRange1 & (1 << i)) { + dwCharset |= g_FPFSkiaFontCharsets[i]; + } + } + } + dwCharset |= FPF_SKIACHARSET_Default; + return dwCharset; +} +void CFPF_SkiaFontMgr::ReportFace(FXFT_Face face, + CFPF_SkiaFontDescriptor* pFontDesc) { + if (!face || !pFontDesc) { + return; + } + pFontDesc->SetFamily(FXFT_Get_Face_Family_Name(face)); + if (FXFT_Is_Face_Bold(face)) { + pFontDesc->m_dwStyle |= FXFONT_BOLD; + } + if (FXFT_Is_Face_Italic(face)) { + pFontDesc->m_dwStyle |= FXFONT_ITALIC; + } + if (FT_IS_FIXED_WIDTH(face)) { + pFontDesc->m_dwStyle |= FXFONT_FIXED_PITCH; + } + TT_OS2* pOS2 = (TT_OS2*)FT_Get_Sfnt_Table(face, ft_sfnt_os2); + if (pOS2) { + if (pOS2->ulCodePageRange1 & (1 << 31)) { + pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; + } + if (pOS2->panose[0] == 2) { + uint8_t uSerif = pOS2->panose[1]; + if ((uSerif > 1 && uSerif < 10) || uSerif > 13) { + pFontDesc->m_dwStyle |= FXFONT_SERIF; + } + } + } + if (pOS2 && (pOS2->ulCodePageRange1 & (1 << 31))) { + pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; + } + pFontDesc->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2); + pFontDesc->m_iFaceIndex = face->face_index; + pFontDesc->m_iGlyphNum = face->num_glyphs; +} +void CFPF_SkiaFontMgr::OutputSystemFonts() {} +#endif diff --git a/core/fxge/android/fpf_skiafontmgr.h b/core/fxge/android/fpf_skiafontmgr.h new file mode 100644 index 0000000000..9f5cafbed5 --- /dev/null +++ b/core/fxge/android/fpf_skiafontmgr.h @@ -0,0 +1,127 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_ANDROID_FPF_SKIAFONTMGR_H_ +#define CORE_FXGE_ANDROID_FPF_SKIAFONTMGR_H_ + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#include +#include + +#include "core/include/fxge/fpf.h" +#include "core/include/fxge/fx_font.h" + +#define FPF_SKIAFONTTYPE_Unknown 0 +#define FPF_SKIAFONTTYPE_Path 1 +#define FPF_SKIAFONTTYPE_File 2 +#define FPF_SKIAFONTTYPE_Buffer 3 + +class CFPF_SkiaFont; + +class CFPF_SkiaFontDescriptor { + public: + CFPF_SkiaFontDescriptor() + : m_pFamily(NULL), + m_dwStyle(0), + m_iFaceIndex(0), + m_dwCharsets(0), + m_iGlyphNum(0) {} + virtual ~CFPF_SkiaFontDescriptor() { FX_Free(m_pFamily); } + + virtual int32_t GetType() const { return FPF_SKIAFONTTYPE_Unknown; } + + void SetFamily(const FX_CHAR* pFamily) { + FX_Free(m_pFamily); + int32_t iSize = FXSYS_strlen(pFamily); + m_pFamily = FX_Alloc(FX_CHAR, iSize + 1); + FXSYS_memcpy(m_pFamily, pFamily, iSize * sizeof(FX_CHAR)); + m_pFamily[iSize] = 0; + } + FX_CHAR* m_pFamily; + FX_DWORD m_dwStyle; + int32_t m_iFaceIndex; + FX_DWORD m_dwCharsets; + int32_t m_iGlyphNum; +}; + +class CFPF_SkiaPathFont : public CFPF_SkiaFontDescriptor { + public: + CFPF_SkiaPathFont() : m_pPath(NULL) {} + ~CFPF_SkiaPathFont() override { FX_Free(m_pPath); } + + // CFPF_SkiaFontDescriptor + int32_t GetType() const override { return FPF_SKIAFONTTYPE_Path; } + + void SetPath(const FX_CHAR* pPath) { + FX_Free(m_pPath); + int32_t iSize = FXSYS_strlen(pPath); + m_pPath = FX_Alloc(FX_CHAR, iSize + 1); + FXSYS_memcpy(m_pPath, pPath, iSize * sizeof(FX_CHAR)); + m_pPath[iSize] = 0; + } + FX_CHAR* m_pPath; +}; + +class CFPF_SkiaFileFont : public CFPF_SkiaFontDescriptor { + public: + CFPF_SkiaFileFont() : m_pFile(NULL) {} + + // CFPF_SkiaFontDescriptor + int32_t GetType() const override { return FPF_SKIAFONTTYPE_File; } + IFX_FileRead* m_pFile; +}; + +class CFPF_SkiaBufferFont : public CFPF_SkiaFontDescriptor { + public: + CFPF_SkiaBufferFont() : m_pBuffer(NULL), m_szBuffer(0) {} + + // CFPF_SkiaFontDescriptor + int32_t GetType() const override { return FPF_SKIAFONTTYPE_Buffer; } + + void* m_pBuffer; + size_t m_szBuffer; +}; + +class CFPF_SkiaFontMgr : public IFPF_FontMgr { + public: + CFPF_SkiaFontMgr(); + ~CFPF_SkiaFontMgr() override; + + // IFPF_FontMgr + void LoadSystemFonts() override; + void LoadPrivateFont(IFX_FileRead* pFontFile) override; + void LoadPrivateFont(const CFX_ByteStringC& bsFileName) override; + void LoadPrivateFont(void* pBuffer, size_t szBuffer) override; + IFPF_Font* CreateFont(const CFX_ByteStringC& bsFamilyname, + uint8_t uCharset, + FX_DWORD dwStyle, + FX_DWORD dwMatch = 0) override; + + FX_BOOL InitFTLibrary(); + FXFT_Face GetFontFace(IFX_FileRead* pFileRead, int32_t iFaceIndex = 0); + FXFT_Face GetFontFace(const CFX_ByteStringC& bsFile, int32_t iFaceIndex = 0); + FXFT_Face GetFontFace(const uint8_t* pBuffer, + size_t szBuffer, + int32_t iFaceIndex = 0); + + protected: + void ScanPath(const CFX_ByteStringC& path); + void ScanFile(const CFX_ByteStringC& file); + void ReportFace(FXFT_Face face, CFPF_SkiaFontDescriptor* pFontDesc); + void OutputSystemFonts(); + + FX_BOOL m_bLoaded; + FXFT_Library m_FTLibrary; + std::vector m_FontFaces; + std::map m_FamilyFonts; +}; + +#endif + +#endif // CORE_FXGE_ANDROID_FPF_SKIAFONTMGR_H_ diff --git a/core/fxge/android/fpf_skiamodule.cpp b/core/fxge/android/fpf_skiamodule.cpp new file mode 100644 index 0000000000..91f00c78e8 --- /dev/null +++ b/core/fxge/android/fpf_skiamodule.cpp @@ -0,0 +1,38 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#include "core/fxge/android/fpf_skiafontmgr.h" +#include "core/fxge/android/fpf_skiamodule.h" + +static IFPF_DeviceModule* gs_pPFModule = NULL; +IFPF_DeviceModule* FPF_GetDeviceModule() { + if (!gs_pPFModule) { + gs_pPFModule = new CFPF_SkiaDeviceModule; + } + return gs_pPFModule; +} +CFPF_SkiaDeviceModule::~CFPF_SkiaDeviceModule() { + delete m_pFontMgr; +} +void CFPF_SkiaDeviceModule::Destroy() { + delete (CFPF_SkiaDeviceModule*)gs_pPFModule; + gs_pPFModule = NULL; +} +IFPF_FontMgr* CFPF_SkiaDeviceModule::GetFontMgr() { + if (!m_pFontMgr) { + m_pFontMgr = new CFPF_SkiaFontMgr; + if (!m_pFontMgr->InitFTLibrary()) { + delete m_pFontMgr; + return NULL; + } + } + return (IFPF_FontMgr*)m_pFontMgr; +} +#endif diff --git a/core/fxge/android/fpf_skiamodule.h b/core/fxge/android/fpf_skiamodule.h new file mode 100644 index 0000000000..a95c974b5d --- /dev/null +++ b/core/fxge/android/fpf_skiamodule.h @@ -0,0 +1,30 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_ANDROID_FPF_SKIAMODULE_H_ +#define CORE_FXGE_ANDROID_FPF_SKIAMODULE_H_ + +#if _FX_OS_ == _FX_ANDROID_ + +#include "core/include/fxge/fpf.h" + +class CFPF_SkiaFontMgr; + +class CFPF_SkiaDeviceModule : public IFPF_DeviceModule { + public: + CFPF_SkiaDeviceModule() : m_pFontMgr(nullptr) {} + ~CFPF_SkiaDeviceModule() override; + + // IFPF_DeviceModule + void Destroy() override; + IFPF_FontMgr* GetFontMgr() override; + + protected: + CFPF_SkiaFontMgr* m_pFontMgr; +}; +#endif + +#endif // CORE_FXGE_ANDROID_FPF_SKIAMODULE_H_ diff --git a/core/fxge/android/fx_android_font.cpp b/core/fxge/android/fx_android_font.cpp new file mode 100644 index 0000000000..58d20faa7b --- /dev/null +++ b/core/fxge/android/fx_android_font.cpp @@ -0,0 +1,89 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#include "core/fxge/android/fx_android_font.h" +#include "core/include/fxge/fpf.h" + +CFX_AndroidFontInfo::CFX_AndroidFontInfo() : m_pFontMgr(NULL) {} +FX_BOOL CFX_AndroidFontInfo::Init(IFPF_FontMgr* pFontMgr) { + if (!pFontMgr) { + return FALSE; + } + pFontMgr->LoadSystemFonts(); + m_pFontMgr = pFontMgr; + return TRUE; +} +FX_BOOL CFX_AndroidFontInfo::EnumFontList(CFX_FontMapper* pMapper) { + return FALSE; +} +void* CFX_AndroidFontInfo::MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* face, + int& iExact) { + if (!m_pFontMgr) { + return NULL; + } + FX_DWORD dwStyle = 0; + if (weight >= 700) { + dwStyle |= FXFONT_BOLD; + } + if (bItalic) { + dwStyle |= FXFONT_ITALIC; + } + if (pitch_family & FXFONT_FF_FIXEDPITCH) { + dwStyle |= FXFONT_FIXED_PITCH; + } + if (pitch_family & FXFONT_FF_SCRIPT) { + dwStyle |= FXFONT_SCRIPT; + } + if (pitch_family & FXFONT_FF_ROMAN) { + dwStyle |= FXFONT_SERIF; + } + return m_pFontMgr->CreateFont(face, charset, dwStyle, + FPF_MATCHFONT_REPLACEANSI); +} +void* CFX_AndroidFontInfo::GetFont(const FX_CHAR* face) { + return NULL; +} +FX_DWORD CFX_AndroidFontInfo::GetFontData(void* hFont, + FX_DWORD table, + uint8_t* buffer, + FX_DWORD size) { + if (!hFont) { + return 0; + } + return ((IFPF_Font*)hFont)->GetFontData(table, buffer, size); +} +FX_BOOL CFX_AndroidFontInfo::GetFaceName(void* hFont, CFX_ByteString& name) { + if (!hFont) { + return FALSE; + } + name = ((IFPF_Font*)hFont)->GetFamilyName(); + return TRUE; +} +FX_BOOL CFX_AndroidFontInfo::GetFontCharset(void* hFont, int& charset) { + if (!hFont) { + return FALSE; + } + charset = ((IFPF_Font*)hFont)->GetCharset(); + return FALSE; +} +void CFX_AndroidFontInfo::DeleteFont(void* hFont) { + if (!hFont) { + return; + } + ((IFPF_Font*)hFont)->Release(); +} +void* CFX_AndroidFontInfo::RetainFont(void* hFont) { + return NULL; +} +#endif diff --git a/core/fxge/android/fx_android_font.h b/core/fxge/android/fx_android_font.h new file mode 100644 index 0000000000..ef8062dda8 --- /dev/null +++ b/core/fxge/android/fx_android_font.h @@ -0,0 +1,49 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_ANDROID_FX_ANDROID_FONT_H_ +#define CORE_FXGE_ANDROID_FX_ANDROID_FONT_H_ + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#include "core/include/fxge/fx_font.h" + +class IFPF_FontMgr; + +class CFX_AndroidFontInfo : public IFX_SystemFontInfo { + public: + CFX_AndroidFontInfo(); + virtual void Release() { delete this; } + + virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper); + + virtual void* MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* face, + int& bExact); + + virtual void* GetFont(const FX_CHAR* face); + virtual FX_DWORD GetFontData(void* hFont, + FX_DWORD table, + uint8_t* buffer, + FX_DWORD size); + virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name); + virtual FX_BOOL GetFontCharset(void* hFont, int& charset); + + virtual void DeleteFont(void* hFont); + virtual void* RetainFont(void* hFont); + FX_BOOL Init(IFPF_FontMgr* pFontMgr); + + protected: + IFPF_FontMgr* m_pFontMgr; +}; +#endif + +#endif // CORE_FXGE_ANDROID_FX_ANDROID_FONT_H_ diff --git a/core/fxge/android/fx_android_imp.cpp b/core/fxge/android/fx_android_imp.cpp new file mode 100644 index 0000000000..6d04e4ffc2 --- /dev/null +++ b/core/fxge/android/fx_android_imp.cpp @@ -0,0 +1,34 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_system.h" + +#if _FX_OS_ == _FX_ANDROID_ + +#include "core/fxge/android/fx_android_font.h" +#include "core/include/fxge/fpf.h" +#include "core/include/fxge/fx_ge.h" + +void CFX_GEModule::InitPlatform() { + IFPF_DeviceModule* pDeviceModule = FPF_GetDeviceModule(); + if (!pDeviceModule) { + return; + } + IFPF_FontMgr* pFontMgr = pDeviceModule->GetFontMgr(); + if (pFontMgr) { + CFX_AndroidFontInfo* pFontInfo = new CFX_AndroidFontInfo; + pFontInfo->Init(pFontMgr); + m_pFontMgr->SetSystemFontInfo(pFontInfo); + } + m_pPlatformData = pDeviceModule; +} +void CFX_GEModule::DestroyPlatform() { + if (m_pPlatformData) { + ((IFPF_DeviceModule*)m_pPlatformData)->Destroy(); + } +} + +#endif diff --git a/core/fxge/apple/apple_int.h b/core/fxge/apple/apple_int.h new file mode 100644 index 0000000000..6fc665e8c3 --- /dev/null +++ b/core/fxge/apple/apple_int.h @@ -0,0 +1,271 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_APPLE_APPLE_INT_H_ +#define CORE_FXGE_APPLE_APPLE_INT_H_ + +#include "core/include/fxcrt/fx_system.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + +#include "core/include/fxge/fx_ge.h" + +#if _FX_OS_ == _FX_MACOSX_ +#include +#endif + +typedef enum eFXIOSFONTCHARSET { + eFXFontCharsetDEFAULT = 0, + eFXFontCharsetANSI = 1, + eFXFontCharsetSYMBOL = 1 << 1, + eFXFontCharsetSHIFTJIS = 1 << 2, + eFXFontCharsetHANGEUL = 1 << 3, + eFXFontCharsetGB2312 = 1 << 4, + eFXFontCharsetCHINESEBIG5 = 1 << 5, + eFXFontCharsetTHAI = 1 << 6, + eFXFontCharsetEASTEUROPE = 1 << 7, + eFXFontCharsetRUSSIAN = 1 << 8, + eFXFontCharsetGREEK = 1 << 9, + eFXFontCharsetTURKISH = 1 << 10, + eFXFontCharsetHEBREW = 1 << 11, + eFXFontCharsetARABIC = 1 << 12, + eFXFontCharsetBALTIC = 1 << 13, +} FX_IOSCHARSET; +FX_IOSCHARSET FX_GetiOSCharset(int charset); +typedef enum eFXIOSFONTFLAG { + eFXFontFlagBold = 1, + eFXFontFlagItalic = 1 << 1, + eFXFontFlagFixedPitch = 1 << 2, + eFXFontFlagSerif = 1 << 3, + eFXFontFlagScript = 1 << 4, +} FX_IOSFONTFLAG; +typedef struct IOS_FONTDATA_ { + FX_DWORD nHashCode; + const char* psName; + FX_DWORD charsets; + FX_DWORD styles; +} IOS_FONTDATA; +class CQuartz2D { + public: + void* createGraphics(CFX_DIBitmap* bitmap); + void destroyGraphics(void* graphics); + + void* CreateFont(const uint8_t* pFontData, FX_DWORD dwFontSize); + void DestroyFont(void* pFont); + void setGraphicsTextMatrix(void* graphics, CFX_Matrix* matrix); + FX_BOOL drawGraphicsString(void* graphics, + void* font, + FX_FLOAT fontSize, + FX_WORD* glyphIndices, + CGPoint* glyphPositions, + int32_t chars, + FX_ARGB argb, + CFX_Matrix* matrix = NULL); + void saveGraphicsState(void* graphics); + void restoreGraphicsState(void* graphics); +}; +class CApplePlatform { + public: + CApplePlatform() {} + ~CApplePlatform() {} + + CQuartz2D _quartz2d; +}; + +class CFX_QuartzDeviceDriver : public IFX_RenderDeviceDriver { + public: + CFX_QuartzDeviceDriver(CGContextRef context, int32_t deviceClass); + ~CFX_QuartzDeviceDriver() override; + + // IFX_RenderDeviceDriver + int GetDeviceCaps(int caps_id) override; + CFX_Matrix GetCTM() const override; + FX_BOOL IsPSPrintDriver() override { return FALSE; } + FX_BOOL StartRendering() override { return TRUE; } + void EndRendering() override {} + void SaveState() override; + void RestoreState(FX_BOOL bKeepSaved) override; + FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) override; + FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) override; + FX_BOOL DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL) override; + FX_BOOL SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL) override { + return FALSE; + } + FX_BOOL FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL) override; + FX_BOOL DrawCosmeticLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL) override; + FX_BOOL GetClipBox(FX_RECT* pRect) override; + FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform = NULL, + FX_BOOL bDEdge = FALSE) override; + CFX_DIBitmap* GetBackDrop() override { return NULL; } + FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const FX_RECT* pSrcRect, + int dest_left, + int dest_top, + int blend_type, + int alpha_flag = 0, + void* pIccTransform = NULL) override; + FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL) override; + FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD flags, + void*& handle, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL) override { + return FALSE; + } + FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) override { + return FALSE; + } + void CancelDIBits(void* handle) override {} + FX_BOOL DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL) override; + void* GetPlatformSurface() override { return NULL; } + void ClearDriver() override; + + protected: + void setStrokeInfo(const CFX_GraphStateData* graphState, + FX_ARGB argb, + FX_FLOAT lineWidth); + void setFillInfo(FX_ARGB argb); + void setPathToContext(const CFX_PathData* pathData); + FX_FLOAT getLineWidth(const CFX_GraphStateData* graphState, + CGAffineTransform ctm); + FX_BOOL CG_DrawGlypRun(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pGlyphMatrix, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD argb, + int alpha_flag, + void* pIccTransform); + void CG_SetImageTransform(int dest_left, + int dest_top, + int dest_width, + int dest_height, + CGRect* rect = NULL); + + protected: + CGContextRef _context; + CGAffineTransform _foxitDevice2User; + CGAffineTransform _user2FoxitDevice; + int32_t m_saveCount; + + int32_t _width; + int32_t _height; + int32_t _bitsPerPixel; + int32_t _deviceClass; + int32_t _renderCaps; + int32_t _horzSize; + int32_t _vertSize; +}; + +class CFX_FontProvider final : public IFX_FileRead { + public: + // IFX_FileRead + void Release() override { delete this; } + FX_FILESIZE GetSize() override { return (FX_FILESIZE)_totalSize; } + FX_BOOL IsEOF() override { return _offSet == _totalSize; } + FX_FILESIZE GetPosition() override { return (FX_FILESIZE)_offSet; } + FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; + size_t ReadBlock(void* buffer, size_t size) override; + + public: + CFX_FontProvider(CGFontRef cgFont); + ~CFX_FontProvider() override; + void InitTableOffset(); + unsigned long Read(unsigned long offset, + unsigned char* buffer, + unsigned long count); + + protected: + uint32_t CalcTableCheckSum(const uint32_t* table, + uint32_t numberOfBytesInTable); + uint32_t CalcTableDataRefCheckSum(CFDataRef dataRef); + + private: + CGFontRef m_cgFont; + UInt32 m_iTableSize; + size_t _offSet; + typedef struct FontHeader { + int32_t fVersion; + uint16_t fNumTables; + uint16_t fSearchRange; + uint16_t fEntrySelector; + uint16_t fRangeShift; + } FontHeader; + typedef struct TableEntry { + uint32_t fTag; + uint32_t fCheckSum; + uint32_t fOffset; + uint32_t fLength; + } TableEntry; + FontHeader _fontHeader; + unsigned char* _tableEntries; + size_t* _tableOffsets; + int _tableCount; + int _totalSize; +}; + +uint32_t FX_GetHashCode(const FX_CHAR* pStr); +FX_DWORD FX_IOSGetMatchFamilyNameHashcode(const FX_CHAR* pFontName); +uint32_t FX_IOSGetFamilyNamesCount(); +const FX_CHAR* FX_IOSGetFamilyName(uint32_t uIndex); +#endif + +#endif // CORE_FXGE_APPLE_APPLE_INT_H_ diff --git a/core/fxge/apple/fx_apple_platform.cpp b/core/fxge/apple/fx_apple_platform.cpp new file mode 100644 index 0000000000..098e9261ae --- /dev/null +++ b/core/fxge/apple/fx_apple_platform.cpp @@ -0,0 +1,173 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_system.h" +#include "core/include/fxge/fx_ge.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + +#include "core/fxge/agg/fx_agg_driver.h" +#include "core/fxge/apple/apple_int.h" +#include "core/fxge/dib/dib_int.h" +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge_apple.h" + +void CFX_AggDeviceDriver::InitPlatform() { + CQuartz2D& quartz2d = + ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; + m_pPlatformGraphics = quartz2d.createGraphics(m_pBitmap); +} +void CFX_AggDeviceDriver::DestroyPlatform() { + CQuartz2D& quartz2d = + ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; + if (m_pPlatformGraphics) { + quartz2d.destroyGraphics(m_pPlatformGraphics); + m_pPlatformGraphics = NULL; + } +} +void CFX_FaceCache::InitPlatform() {} +void CFX_FaceCache::DestroyPlatform() {} +CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph_Nativetext( + CFX_Font* pFont, + FX_DWORD glyph_index, + const CFX_Matrix* pMatrix, + int dest_width, + int anti_alias) { + return NULL; +} +static FX_BOOL _CGDrawGlyphRun(CGContextRef pContext, + int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD argb, + int alpha_flag, + void* pIccTransform) { + if (nChars == 0) { + return TRUE; + } + CFX_Matrix new_matrix; + FX_BOOL bNegSize = font_size < 0; + if (bNegSize) { + font_size = -font_size; + } + FX_FLOAT ori_x = pCharPos[0].m_OriginX, ori_y = pCharPos[0].m_OriginY; + new_matrix.Transform(ori_x, ori_y); + if (pObject2Device) { + new_matrix.Concat(*pObject2Device); + } + CQuartz2D& quartz2d = + ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; + if (!pFont->GetPlatformFont()) { + if (pFont->GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) { + return FALSE; + } + pFont->SetPlatformFont( + quartz2d.CreateFont(pFont->GetFontData(), pFont->GetSize())); + if (!pFont->GetPlatformFont()) { + return FALSE; + } + } + CFX_FixedBufGrow glyph_indices(nChars); + CFX_FixedBufGrow glyph_positions(nChars); + for (int i = 0; i < nChars; i++) { + glyph_indices[i] = pCharPos[i].m_ExtGID; + if (bNegSize) { + glyph_positions[i].x = -pCharPos[i].m_OriginX; + } else { + glyph_positions[i].x = pCharPos[i].m_OriginX; + } + glyph_positions[i].y = pCharPos[i].m_OriginY; + } + if (bNegSize) { + new_matrix.a = -new_matrix.a; + } else { + new_matrix.b = -new_matrix.b; + new_matrix.d = -new_matrix.d; + } + quartz2d.setGraphicsTextMatrix(pContext, &new_matrix); + return quartz2d.drawGraphicsString(pContext, pFont->GetPlatformFont(), + font_size, glyph_indices, glyph_positions, + nChars, argb, NULL); +} +static void _DoNothing(void* info, const void* data, size_t size) {} +FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD argb, + int alpha_flag, + void* pIccTransform) { + if (!pFont) { + return FALSE; + } + FX_BOOL bBold = pFont->IsBold(); + if (!bBold && pFont->GetSubstFont() && + pFont->GetSubstFont()->m_Weight >= 500 && + pFont->GetSubstFont()->m_Weight <= 600) { + return FALSE; + } + for (int i = 0; i < nChars; i++) { + if (pCharPos[i].m_bGlyphAdjust) { + return FALSE; + } + } + CGContextRef ctx = CGContextRef(m_pPlatformGraphics); + if (NULL == ctx) { + return FALSE; + } + CGContextSaveGState(ctx); + CGContextSetTextDrawingMode(ctx, kCGTextFillClip); + CGRect rect_cg; + CGImageRef pImageCG = NULL; + if (m_pClipRgn) { + rect_cg = + CGRectMake(m_pClipRgn->GetBox().left, m_pClipRgn->GetBox().top, + m_pClipRgn->GetBox().Width(), m_pClipRgn->GetBox().Height()); + const CFX_DIBitmap* pClipMask = m_pClipRgn->GetMask(); + if (pClipMask) { + CGDataProviderRef pClipMaskDataProvider = CGDataProviderCreateWithData( + NULL, pClipMask->GetBuffer(), + pClipMask->GetPitch() * pClipMask->GetHeight(), _DoNothing); + CGFloat decode_f[2] = {255.f, 0.f}; + pImageCG = CGImageMaskCreate( + pClipMask->GetWidth(), pClipMask->GetHeight(), 8, 8, + pClipMask->GetPitch(), pClipMaskDataProvider, decode_f, FALSE); + CGDataProviderRelease(pClipMaskDataProvider); + } + } else { + rect_cg = CGRectMake(0, 0, m_pBitmap->GetWidth(), m_pBitmap->GetHeight()); + } + rect_cg = CGContextConvertRectToDeviceSpace(ctx, rect_cg); + if (pImageCG) { + CGContextClipToMask(ctx, rect_cg, pImageCG); + } else { + CGContextClipToRect(ctx, rect_cg); + } + FX_BOOL ret = + _CGDrawGlyphRun(ctx, nChars, pCharPos, pFont, pCache, pObject2Device, + font_size, argb, alpha_flag, pIccTransform); + if (pImageCG) { + CGImageRelease(pImageCG); + } + CGContextRestoreGState(ctx); + return ret; +} +void CFX_Font::ReleasePlatformResource() { + if (m_pPlatformFont) { + CQuartz2D& quartz2d = + ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; + quartz2d.DestroyFont(m_pPlatformFont); + m_pPlatformFont = NULL; + } +} + +#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ diff --git a/core/fxge/apple/fx_mac_imp.cpp b/core/fxge/apple/fx_mac_imp.cpp new file mode 100644 index 0000000000..db9f802d64 --- /dev/null +++ b/core/fxge/apple/fx_mac_imp.cpp @@ -0,0 +1,113 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/apple/apple_int.h" +#include "core/include/fxge/fx_ge.h" + +#if _FX_OS_ == _FX_MACOSX_ +static const struct { + const FX_CHAR* m_pName; + const FX_CHAR* m_pSubstName; +} Base14Substs[] = { + {"Courier", "Courier New"}, + {"Courier-Bold", "Courier New Bold"}, + {"Courier-BoldOblique", "Courier New Bold Italic"}, + {"Courier-Oblique", "Courier New Italic"}, + {"Helvetica", "Arial"}, + {"Helvetica-Bold", "Arial Bold"}, + {"Helvetica-BoldOblique", "Arial Bold Italic"}, + {"Helvetica-Oblique", "Arial Italic"}, + {"Times-Roman", "Times New Roman"}, + {"Times-Bold", "Times New Roman Bold"}, + {"Times-BoldItalic", "Times New Roman Bold Italic"}, + {"Times-Italic", "Times New Roman Italic"}, +}; +class CFX_MacFontInfo : public CFX_FolderFontInfo { + public: + virtual void* MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* family, + int& iExact); +}; +#define JAPAN_GOTHIC "Hiragino Kaku Gothic Pro W6" +#define JAPAN_MINCHO "Hiragino Mincho Pro W6" +static void GetJapanesePreference(CFX_ByteString& face, + int weight, + int picth_family) { + if (face.Find("Gothic") >= 0) { + face = JAPAN_GOTHIC; + return; + } + if (!(picth_family & FXFONT_FF_ROMAN) && weight > 400) { + face = JAPAN_GOTHIC; + } else { + face = JAPAN_MINCHO; + } +} +void* CFX_MacFontInfo::MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* cstr_face, + int& iExact) { + CFX_ByteString face = cstr_face; + int iBaseFont; + for (iBaseFont = 0; iBaseFont < 12; iBaseFont++) + if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) { + face = Base14Substs[iBaseFont].m_pSubstName; + iExact = TRUE; + break; + } + if (iBaseFont < 12) { + return GetFont(face); + } + auto it = m_FontList.find(face); + if (it != m_FontList.end()) + return it->second; + + if (charset == FXFONT_ANSI_CHARSET && (pitch_family & FXFONT_FF_FIXEDPITCH)) { + return GetFont("Courier New"); + } + if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_SYMBOL_CHARSET) { + return NULL; + } + switch (charset) { + case FXFONT_SHIFTJIS_CHARSET: + GetJapanesePreference(face, weight, pitch_family); + break; + case FXFONT_GB2312_CHARSET: + face = "STSong"; + break; + case FXFONT_HANGEUL_CHARSET: + face = "AppleMyungjo"; + break; + case FXFONT_CHINESEBIG5_CHARSET: + face = "LiSong Pro Light"; + } + it = m_FontList.find(face); + if (it != m_FontList.end()) + return it->second; + + return NULL; +} +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { + CFX_MacFontInfo* pInfo = new CFX_MacFontInfo; + pInfo->AddPath("~/Library/Fonts"); + pInfo->AddPath("/Library/Fonts"); + pInfo->AddPath("/System/Library/Fonts"); + return pInfo; +} +void CFX_GEModule::InitPlatform() { + m_pPlatformData = new CApplePlatform; + m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); +} +void CFX_GEModule::DestroyPlatform() { + delete (CApplePlatform*)m_pPlatformData; + m_pPlatformData = NULL; +} +#endif diff --git a/core/fxge/apple/fx_quartz_device.cpp b/core/fxge/apple/fx_quartz_device.cpp new file mode 100644 index 0000000000..c39ee5e795 --- /dev/null +++ b/core/fxge/apple/fx_quartz_device.cpp @@ -0,0 +1,1048 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/agg/fx_agg_driver.h" +#include "core/fxge/dib/dib_int.h" +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxcrt/fx_ext.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ +#include "core/fxge/apple/apple_int.h" +#include "core/include/fxge/fx_ge_apple.h" +#ifndef CGFLOAT_IS_DOUBLE +#error Expected CGFLOAT_IS_DOUBLE to be defined by CoreGraphics headers +#endif + +void* CQuartz2D::createGraphics(CFX_DIBitmap* pBitmap) { + if (!pBitmap) { + return NULL; + } + CGBitmapInfo bmpInfo = kCGBitmapByteOrder32Little; + switch (pBitmap->GetFormat()) { + case FXDIB_Rgb32: + bmpInfo |= kCGImageAlphaNoneSkipFirst; + break; + case FXDIB_Argb: + default: + return NULL; + } + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate( + pBitmap->GetBuffer(), pBitmap->GetWidth(), pBitmap->GetHeight(), 8, + pBitmap->GetPitch(), colorSpace, bmpInfo); + CGColorSpaceRelease(colorSpace); + return context; +} +void CQuartz2D::destroyGraphics(void* graphics) { + if (graphics) { + CGContextRelease((CGContextRef)graphics); + } +} +void* CQuartz2D::CreateFont(const uint8_t* pFontData, FX_DWORD dwFontSize) { + CGDataProviderRef pDataProvider = + CGDataProviderCreateWithData(NULL, pFontData, (size_t)dwFontSize, NULL); + if (NULL == pDataProvider) { + return NULL; + } + CGFontRef pCGFont = CGFontCreateWithDataProvider(pDataProvider); + CGDataProviderRelease(pDataProvider); + return pCGFont; +} +void CQuartz2D::DestroyFont(void* pFont) { + CGFontRelease((CGFontRef)pFont); +} +void CQuartz2D::setGraphicsTextMatrix(void* graphics, CFX_Matrix* matrix) { + if (!graphics || !matrix) { + return; + } + CGContextRef context = (CGContextRef)graphics; + CGFloat ty = CGBitmapContextGetHeight(context) - matrix->f; + CGContextSetTextMatrix( + context, CGAffineTransformMake(matrix->a, matrix->b, matrix->c, matrix->d, + matrix->e, ty)); +} +FX_BOOL CQuartz2D::drawGraphicsString(void* graphics, + void* font, + FX_FLOAT fontSize, + FX_WORD* glyphIndices, + CGPoint* glyphPositions, + int32_t charsCount, + FX_ARGB argb, + CFX_Matrix* matrix) { + if (!graphics) { + return FALSE; + } + CGContextRef context = (CGContextRef)graphics; + CGContextSetFont(context, (CGFontRef)font); + CGContextSetFontSize(context, fontSize); + if (matrix) { + CGAffineTransform m = CGContextGetTextMatrix(context); + m = CGAffineTransformConcat( + m, CGAffineTransformMake(matrix->a, matrix->b, matrix->c, matrix->d, + matrix->e, matrix->f)); + CGContextSetTextMatrix(context, m); + } + int32_t a, r, g, b; + ArgbDecode(argb, a, r, g, b); + CGContextSetRGBFillColor(context, r / 255.f, g / 255.f, b / 255.f, a / 255.f); + CGContextSaveGState(context); +#if CGFLOAT_IS_DOUBLE + CGPoint* glyphPositionsCG = new CGPoint[charsCount]; + for (int index = 0; index < charsCount; ++index) { + glyphPositionsCG[index].x = glyphPositions[index].x; + glyphPositionsCG[index].y = glyphPositions[index].y; + } +#else + CGPoint* glyphPositionsCG = (CGPoint*)glyphPositions; +#endif + CGContextShowGlyphsAtPositions(context, (CGGlyph*)glyphIndices, + glyphPositionsCG, charsCount); +#if CGFLOAT_IS_DOUBLE + delete[] glyphPositionsCG; +#endif + CGContextRestoreGState(context); + return TRUE; +} +void CQuartz2D::saveGraphicsState(void* graphics) { + if (graphics) { + CGContextSaveGState((CGContextRef)graphics); + } +} +void CQuartz2D::restoreGraphicsState(void* graphics) { + if (graphics) { + CGContextRestoreGState((CGContextRef)graphics); + } +} +static CGContextRef createContextWithBitmap(CFX_DIBitmap* pBitmap) { + if (!pBitmap || pBitmap->IsCmykImage() || pBitmap->GetBPP() < 32) { + return NULL; + } + CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little; + if (pBitmap->HasAlpha()) { + bitmapInfo |= kCGImageAlphaPremultipliedFirst; + } else { + bitmapInfo |= kCGImageAlphaNoneSkipFirst; + } + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextRef context = CGBitmapContextCreate( + pBitmap->GetBuffer(), pBitmap->GetWidth(), pBitmap->GetHeight(), 8, + pBitmap->GetPitch(), colorSpace, bitmapInfo); + CGColorSpaceRelease(colorSpace); + return context; +} +CFX_QuartzDeviceDriver::CFX_QuartzDeviceDriver(CGContextRef context, + int32_t deviceClass) { + m_saveCount = 0; + _context = context; + _deviceClass = deviceClass; + CGContextRetain(_context); + CGRect r = CGContextGetClipBoundingBox(context); + _width = FXSYS_round(r.size.width); + _height = FXSYS_round(r.size.height); + _renderCaps = FXRC_SOFT_CLIP | FXRC_BLEND_MODE | FXRC_ALPHA_PATH | + FXRC_ALPHA_IMAGE | FXRC_BIT_MASK | FXRC_ALPHA_MASK; + if (_deviceClass != FXDC_DISPLAY) { + } else { + CGImageRef image = CGBitmapContextCreateImage(_context); + if (image) { + _renderCaps |= FXRC_GET_BITS; + _width = CGImageGetWidth(image); + _height = CGImageGetHeight(image); + CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(image); + if (kCGImageAlphaPremultipliedFirst == alphaInfo || + kCGImageAlphaPremultipliedLast == alphaInfo || + kCGImageAlphaOnly == alphaInfo) { + _renderCaps |= FXRC_ALPHA_OUTPUT; + } + } + CGImageRelease(image); + } + CGAffineTransform ctm = CGContextGetCTM(_context); + CGContextSaveGState(_context); + m_saveCount++; + if (ctm.d >= 0) { + CGFloat offset_x, offset_y; + offset_x = ctm.tx; + offset_y = ctm.ty; + CGContextTranslateCTM(_context, -offset_x, -offset_y); + CGContextConcatCTM(_context, CGAffineTransformMake(1, 0, 0, -1, offset_x, + _height + offset_y)); + } + _foxitDevice2User = CGAffineTransformIdentity; + _user2FoxitDevice = CGAffineTransformInvert(_foxitDevice2User); +} +CFX_QuartzDeviceDriver::~CFX_QuartzDeviceDriver() { + CGContextRestoreGState(_context); + m_saveCount--; + for (int i = 0; i < m_saveCount; ++i) { + CGContextRestoreGState(_context); + } + if (_context) { + CGContextRelease(_context); + } +} +int CFX_QuartzDeviceDriver::GetDeviceCaps(int capsID) { + switch (capsID) { + case FXDC_DEVICE_CLASS: { + return _deviceClass; + } + case FXDC_PIXEL_WIDTH: { + return _width; + } + case FXDC_PIXEL_HEIGHT: { + return _height; + } + case FXDC_BITS_PIXEL: { + return 32; + } + case FXDC_RENDER_CAPS: { + return _renderCaps; + } + default: { return 0; } + } +} +CFX_Matrix CFX_QuartzDeviceDriver::GetCTM() const { + CGAffineTransform ctm = CGContextGetCTM(_context); + return CFX_Matrix(ctm.a, ctm.b, ctm.c, ctm.d, ctm.tx, ctm.ty); +} +void CFX_QuartzDeviceDriver::SaveState() { + CGContextSaveGState(_context); + m_saveCount++; +} +void CFX_QuartzDeviceDriver::RestoreState(FX_BOOL isKeepSaved) { + CGContextRestoreGState(_context); + if (isKeepSaved) { + CGContextSaveGState(_context); + } else { + m_saveCount--; + } +} +FX_BOOL CFX_QuartzDeviceDriver::SetClip_PathFill(const CFX_PathData* pathData, + const CFX_Matrix* matrix, + int fillMode) { + SaveState(); + CGAffineTransform m = CGAffineTransformIdentity; + if (matrix) { + m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(), + matrix->GetD(), matrix->GetE(), matrix->GetF()); + } + m = CGAffineTransformConcat(m, _foxitDevice2User); + CGContextConcatCTM(_context, m); + setPathToContext(pathData); + RestoreState(FALSE); + if ((fillMode & 3) == FXFILL_WINDING) { + CGContextClip(_context); + } else { + CGContextEOClip(_context); + } + return TRUE; +} +FX_FLOAT CFX_QuartzDeviceDriver::getLineWidth( + const CFX_GraphStateData* graphState, + CGAffineTransform ctm) { + FX_FLOAT lineWidth = graphState->m_LineWidth; + if (graphState->m_LineWidth <= 0.f) { + CGSize size; + size.width = 1; + size.height = 1; + CGSize temp = CGSizeApplyAffineTransform(size, ctm); + CGFloat x = 1 / temp.width; + CGFloat y = 1 / temp.height; + lineWidth = x > y ? x : y; + } + return lineWidth; +} +FX_BOOL CFX_QuartzDeviceDriver::SetClip_PathStroke( + const CFX_PathData* pathData, + const CFX_Matrix* matrix, + const CFX_GraphStateData* graphState) { + SaveState(); + CGAffineTransform m = CGAffineTransformIdentity; + if (matrix) { + m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(), + matrix->GetD(), matrix->GetE(), matrix->GetF()); + } + m = CGAffineTransformConcat(m, _foxitDevice2User); + CGContextConcatCTM(_context, m); + FX_FLOAT lineWidth = getLineWidth(graphState, m); + setStrokeInfo(graphState, 0xFF000000, lineWidth); + setPathToContext(pathData); + CGContextReplacePathWithStrokedPath(_context); + RestoreState(FALSE); + CGContextClip(_context); + return TRUE; +} +static CGBlendMode GetCGBlendMode(int blend_type) { + CGBlendMode mode = kCGBlendModeNormal; + switch (blend_type) { + case FXDIB_BLEND_NORMAL: + mode = kCGBlendModeNormal; + break; + case FXDIB_BLEND_MULTIPLY: + mode = kCGBlendModeMultiply; + break; + case FXDIB_BLEND_SCREEN: + mode = kCGBlendModeScreen; + break; + case FXDIB_BLEND_OVERLAY: + mode = kCGBlendModeOverlay; + break; + case FXDIB_BLEND_DARKEN: + mode = kCGBlendModeDarken; + break; + case FXDIB_BLEND_LIGHTEN: + mode = kCGBlendModeLighten; + break; + case FXDIB_BLEND_COLORDODGE: + mode = kCGBlendModeColorDodge; + break; + case FXDIB_BLEND_COLORBURN: + mode = kCGBlendModeColorBurn; + break; + case FXDIB_BLEND_HARDLIGHT: + mode = kCGBlendModeHardLight; + break; + case FXDIB_BLEND_SOFTLIGHT: + mode = kCGBlendModeSoftLight; + break; + case FXDIB_BLEND_DIFFERENCE: + mode = kCGBlendModeDifference; + break; + case FXDIB_BLEND_EXCLUSION: + mode = kCGBlendModeExclusion; + break; + case FXDIB_BLEND_HUE: + mode = kCGBlendModeHue; + break; + case FXDIB_BLEND_SATURATION: + mode = kCGBlendModeSaturation; + break; + case FXDIB_BLEND_COLOR: + mode = kCGBlendModeColor; + break; + case FXDIB_BLEND_LUMINOSITY: + mode = kCGBlendModeLuminosity; + break; + default: + mode = kCGBlendModeNormal; + break; + } + return mode; +} +FX_BOOL CFX_QuartzDeviceDriver::DrawPath(const CFX_PathData* pathData, + const CFX_Matrix* matrix, + const CFX_GraphStateData* graphState, + FX_DWORD fillArgb, + FX_DWORD strokeArgb, + int fillMode, + int alpha_flag, + void* pIccTransform, + int blend_type) { + SaveState(); + CGBlendMode mode = GetCGBlendMode(blend_type); + if (mode != kCGBlendModeNormal) { + CGContextSetBlendMode(_context, mode); + } + CGAffineTransform m = CGAffineTransformIdentity; + if (matrix) { + m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(), + matrix->GetD(), matrix->GetE(), matrix->GetF()); + } + m = CGAffineTransformConcat(m, _foxitDevice2User); + CGContextConcatCTM(_context, m); + int pathMode = 0; + if (graphState && strokeArgb) { + CGContextSetMiterLimit(_context, graphState->m_MiterLimit); + FX_FLOAT lineWidth = getLineWidth(graphState, m); + setStrokeInfo(graphState, strokeArgb, lineWidth); + pathMode |= 4; + } + if (fillMode && fillArgb) { + setFillInfo(fillArgb); + if ((fillMode & 3) == FXFILL_WINDING) { + pathMode |= 1; + } else if ((fillMode & 3) == FXFILL_ALTERNATE) { + pathMode |= 2; + } + } + setPathToContext(pathData); + if (fillMode & FXFILL_FULLCOVER) { + CGContextSetShouldAntialias(_context, false); + } + if (pathMode == 4) { + CGContextStrokePath(_context); + } else if (pathMode == 1) { + CGContextFillPath(_context); + } else if (pathMode == 2) { + CGContextEOFillPath(_context); + } else if (pathMode == 5) { + CGContextDrawPath(_context, kCGPathFillStroke); + } else if (pathMode == 6) { + CGContextDrawPath(_context, kCGPathEOFillStroke); + } + RestoreState(FALSE); + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::FillRect(const FX_RECT* rect, + FX_ARGB fillArgb, + int alphaFlag, + void* iccTransform, + int blend_type) { + CGBlendMode mode = GetCGBlendMode(blend_type); + if (mode != kCGBlendModeNormal) { + CGContextSetBlendMode(_context, mode); + } + CGRect rect_fx = + CGRectMake(rect->left, rect->top, rect->Width(), rect->Height()); + CGRect rect_usr = CGRectApplyAffineTransform(rect_fx, _foxitDevice2User); + int32_t a, r, g, b; + ArgbDecode(fillArgb, a, r, g, b); + CGContextSetRGBFillColor(_context, r / 255.f, g / 255.f, b / 255.f, + a / 255.f); + CGContextFillRect(_context, rect_usr); + if (mode != kCGBlendModeNormal) { + CGContextSetBlendMode(_context, kCGBlendModeNormal); + } + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_DWORD argb, + int alphaFlag, + void* iccTransform, + int blend_type) { + CGBlendMode mode = GetCGBlendMode(blend_type); + if (mode != kCGBlendModeNormal) { + CGContextSetBlendMode(_context, mode); + } + CGPoint pt = + CGPointApplyAffineTransform(CGPointMake(x1, y1), _foxitDevice2User); + x1 = pt.x; + y1 = pt.y; + pt = CGPointApplyAffineTransform(CGPointMake(x2, y2), _foxitDevice2User); + x2 = pt.x; + y2 = pt.y; + int32_t a, r, g, b; + ArgbDecode(argb, a, r, g, b); + CGContextSetRGBStrokeColor(_context, r / 255.f, g / 255.f, b / 255.f, + a / 255.f); + CGContextMoveToPoint(_context, x1, y1); + CGContextAddLineToPoint(_context, x2, y2); + CGContextStrokePath(_context); + if (mode != kCGBlendModeNormal) { + CGContextSetBlendMode(_context, kCGBlendModeNormal); + } + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::GetClipBox(FX_RECT* rect) { + CGRect r = CGContextGetClipBoundingBox(_context); + r = CGRectApplyAffineTransform(r, _user2FoxitDevice); + rect->left = FXSYS_floor(r.origin.x); + rect->top = FXSYS_floor(r.origin.y); + rect->right = FXSYS_ceil(r.origin.x + r.size.width); + rect->bottom = FXSYS_ceil(r.origin.y + r.size.height); + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::GetDIBits(CFX_DIBitmap* bitmap, + int32_t left, + int32_t top, + void* pIccTransform, + FX_BOOL bDEdge) { + if (FXDC_PRINTER == _deviceClass) { + return FALSE; + } + if (bitmap->GetBPP() < 32) { + return FALSE; + } + if (!(_renderCaps | FXRC_GET_BITS)) { + return FALSE; + } + CGPoint pt = CGPointMake(left, top); + pt = CGPointApplyAffineTransform(pt, _foxitDevice2User); + CGAffineTransform ctm = CGContextGetCTM(_context); + pt.x *= FXSYS_fabs(ctm.a); + pt.y *= FXSYS_fabs(ctm.d); + CGImageRef image = CGBitmapContextCreateImage(_context); + if (NULL == image) { + return FALSE; + } + CGFloat width = (CGFloat)bitmap->GetWidth(); + CGFloat height = (CGFloat)bitmap->GetHeight(); + if (width + pt.x > _width) { + width -= (width + pt.x - _width); + } + if (height + pt.y > _height) { + height -= (height + pt.y - _height); + } + CGImageRef subImage = CGImageCreateWithImageInRect( + image, CGRectMake(pt.x, pt.y, width, height)); + CGContextRef context = createContextWithBitmap(bitmap); + CGRect rect = CGContextGetClipBoundingBox(context); + CGContextClearRect(context, rect); + CGContextDrawImage(context, rect, subImage); + CGContextRelease(context); + CGImageRelease(subImage); + CGImageRelease(image); + if (bitmap->HasAlpha()) { + for (int row = 0; row < bitmap->GetHeight(); row++) { + uint8_t* pScanline = (uint8_t*)bitmap->GetScanline(row); + for (int col = 0; col < bitmap->GetWidth(); col++) { + if (pScanline[3] > 0) { + pScanline[0] = (pScanline[0] * 255.f / pScanline[3] + .5f); + pScanline[1] = (pScanline[1] * 255.f / pScanline[3] + .5f); + pScanline[2] = (pScanline[2] * 255.f / pScanline[3] + .5f); + } + pScanline += 4; + } + } + } + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, + FX_ARGB argb, + const FX_RECT* srcRect, + int dest_left, + int dest_top, + int blendType, + int alphaFlag, + void* iccTransform) { + SaveState(); + CGFloat src_left, src_top, src_width, src_height; + if (srcRect) { + src_left = srcRect->left; + src_top = srcRect->top; + src_width = srcRect->Width(); + src_height = srcRect->Height(); + } else { + src_left = src_top = 0; + src_width = pBitmap->GetWidth(); + src_height = pBitmap->GetHeight(); + } + CGAffineTransform ctm = CGContextGetCTM(_context); + CGFloat scale_x = FXSYS_fabs(ctm.a); + CGFloat scale_y = FXSYS_fabs(ctm.d); + src_left /= scale_x; + src_top /= scale_y; + src_width /= scale_x; + src_height /= scale_y; + CGRect rect_fx = CGRectMake(dest_left, dest_top, src_width, src_height); + CGRect rect_usr = CGRectApplyAffineTransform(rect_fx, _foxitDevice2User); + CGContextBeginPath(_context); + CGContextAddRect(_context, rect_usr); + CGContextClip(_context); + rect_usr.size = + CGSizeMake(pBitmap->GetWidth() / scale_x, pBitmap->GetHeight() / scale_y); + rect_usr = CGRectOffset(rect_usr, -src_left, -src_top); + CG_SetImageTransform(dest_left, dest_top, src_width, src_height, &rect_usr); + CFX_DIBitmap* pBitmap1 = NULL; + if (pBitmap->IsAlphaMask()) { + if (pBitmap->GetBuffer()) { + pBitmap1 = (CFX_DIBitmap*)pBitmap; + } else { + pBitmap1 = pBitmap->Clone(); + } + if (NULL == pBitmap1) { + RestoreState(FALSE); + return FALSE; + } + CGDataProviderRef pBitmapProvider = CGDataProviderCreateWithData( + NULL, pBitmap1->GetBuffer(), + pBitmap1->GetPitch() * pBitmap1->GetHeight(), NULL); + CGColorSpaceRef pColorSpace = CGColorSpaceCreateDeviceGray(); + CGBitmapInfo bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault; + CGImageRef pImage = CGImageCreate( + pBitmap1->GetWidth(), pBitmap1->GetHeight(), pBitmap1->GetBPP(), + pBitmap1->GetBPP(), pBitmap1->GetPitch(), pColorSpace, bitmapInfo, + pBitmapProvider, NULL, true, kCGRenderingIntentDefault); + CGContextClipToMask(_context, rect_usr, pImage); + CGContextSetRGBFillColor(_context, FXARGB_R(argb) / 255.f, + FXARGB_G(argb) / 255.f, FXARGB_B(argb) / 255.f, + FXARGB_A(argb) / 255.f); + CGContextFillRect(_context, rect_usr); + CGImageRelease(pImage); + CGColorSpaceRelease(pColorSpace); + CGDataProviderRelease(pBitmapProvider); + if (pBitmap1 != pBitmap) { + delete pBitmap1; + } + RestoreState(FALSE); + return TRUE; + } + if (pBitmap->GetBPP() < 32) { + pBitmap1 = pBitmap->CloneConvert(FXDIB_Rgb32); + } else { + if (pBitmap->GetBuffer()) { + pBitmap1 = (CFX_DIBitmap*)pBitmap; + } else { + pBitmap1 = pBitmap->Clone(); + } + } + if (NULL == pBitmap1) { + RestoreState(FALSE); + return FALSE; + } + if (pBitmap1->HasAlpha()) { + if (pBitmap1 == pBitmap) { + pBitmap1 = pBitmap->Clone(); + if (!pBitmap1) { + RestoreState(FALSE); + return FALSE; + } + } + for (int row = 0; row < pBitmap1->GetHeight(); row++) { + uint8_t* pScanline = (uint8_t*)pBitmap1->GetScanline(row); + for (int col = 0; col < pBitmap1->GetWidth(); col++) { + pScanline[0] = (uint8_t)(pScanline[0] * pScanline[3] / 255.f + .5f); + pScanline[1] = (uint8_t)(pScanline[1] * pScanline[3] / 255.f + .5f); + pScanline[2] = (uint8_t)(pScanline[2] * pScanline[3] / 255.f + .5f); + pScanline += 4; + } + } + } + CGContextRef ctx = createContextWithBitmap(pBitmap1); + CGImageRef image = CGBitmapContextCreateImage(ctx); + int blend_mode = blendType; + if (FXDIB_BLEND_HARDLIGHT == blendType) { + blend_mode = kCGBlendModeSoftLight; + } else if (FXDIB_BLEND_SOFTLIGHT == blendType) { + blend_mode = kCGBlendModeHardLight; + } else if (blendType >= FXDIB_BLEND_NONSEPARABLE && + blendType <= FXDIB_BLEND_LUMINOSITY) { + blend_mode = blendType - 9; + } else if (blendType > FXDIB_BLEND_LUMINOSITY || blendType < 0) { + blend_mode = kCGBlendModeNormal; + } + CGContextSetBlendMode(_context, (CGBlendMode)blend_mode); + CGContextDrawImage(_context, rect_usr, image); + CGImageRelease(image); + CGContextRelease(ctx); + if (pBitmap1 != pBitmap) { + delete pBitmap1; + } + RestoreState(FALSE); + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap, + FX_ARGB argb, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* clipRect, + FX_DWORD flags, + int alphaFlag, + void* iccTransform, + int blend_type) { + SaveState(); + if (clipRect) { + CGContextBeginPath(_context); + CGRect rect_clip = CGRectMake(clipRect->left, clipRect->top, + clipRect->Width(), clipRect->Height()); + rect_clip = CGRectApplyAffineTransform(rect_clip, _foxitDevice2User); + CGContextAddRect(_context, rect_clip); + CGContextClip(_context); + } + CGRect rect = CGRectMake(dest_left, dest_top, dest_width, dest_height); + rect = CGRectApplyAffineTransform(rect, _foxitDevice2User); + if (FXDIB_BICUBIC_INTERPOL == flags) { + CGContextSetInterpolationQuality(_context, kCGInterpolationHigh); + } else if (FXDIB_DOWNSAMPLE == flags) { + CGContextSetInterpolationQuality(_context, kCGInterpolationNone); + } else { + CGContextSetInterpolationQuality(_context, kCGInterpolationMedium); + } + CG_SetImageTransform(dest_left, dest_top, dest_width, dest_height); + CFX_DIBitmap* pBitmap1 = NULL; + if (pBitmap->IsAlphaMask()) { + if (pBitmap->GetBuffer()) { + pBitmap1 = (CFX_DIBitmap*)pBitmap; + } else { + pBitmap1 = pBitmap->Clone(); + } + if (NULL == pBitmap1) { + RestoreState(FALSE); + return FALSE; + } + CGDataProviderRef pBitmapProvider = CGDataProviderCreateWithData( + NULL, pBitmap1->GetBuffer(), + pBitmap1->GetPitch() * pBitmap1->GetHeight(), NULL); + CGColorSpaceRef pColorSpace = CGColorSpaceCreateDeviceGray(); + CGBitmapInfo bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault; + CGImageRef pImage = CGImageCreate( + pBitmap1->GetWidth(), pBitmap1->GetHeight(), pBitmap1->GetBPP(), + pBitmap1->GetBPP(), pBitmap1->GetPitch(), pColorSpace, bitmapInfo, + pBitmapProvider, NULL, true, kCGRenderingIntentDefault); + CGContextClipToMask(_context, rect, pImage); + CGContextSetRGBFillColor(_context, FXARGB_R(argb) / 255.f, + FXARGB_G(argb) / 255.f, FXARGB_B(argb) / 255.f, + FXARGB_A(argb) / 255.f); + CGContextFillRect(_context, rect); + CGImageRelease(pImage); + CGColorSpaceRelease(pColorSpace); + CGDataProviderRelease(pBitmapProvider); + if (pBitmap1 != pBitmap) { + delete pBitmap1; + } + RestoreState(FALSE); + return TRUE; + } + if (pBitmap->GetBPP() < 32) { + pBitmap1 = pBitmap->CloneConvert(FXDIB_Rgb32); + } else { + if (pBitmap->GetBuffer()) { + pBitmap1 = (CFX_DIBitmap*)pBitmap; + } else { + pBitmap1 = pBitmap->Clone(); + } + } + if (NULL == pBitmap1) { + RestoreState(FALSE); + return FALSE; + } + if (pBitmap1->HasAlpha()) { + if (pBitmap1 == pBitmap) { + pBitmap1 = pBitmap->Clone(); + if (!pBitmap1) { + RestoreState(FALSE); + return FALSE; + } + } + for (int row = 0; row < pBitmap1->GetHeight(); row++) { + uint8_t* pScanline = (uint8_t*)pBitmap1->GetScanline(row); + for (int col = 0; col < pBitmap1->GetWidth(); col++) { + pScanline[0] = (uint8_t)(pScanline[0] * pScanline[3] / 255.f + .5f); + pScanline[1] = (uint8_t)(pScanline[1] * pScanline[3] / 255.f + .5f); + pScanline[2] = (uint8_t)(pScanline[2] * pScanline[3] / 255.f + .5f); + pScanline += 4; + } + } + } + CGContextRef ctx = createContextWithBitmap(pBitmap1); + CGImageRef image = CGBitmapContextCreateImage(ctx); + CGContextDrawImage(_context, rect, image); + CGImageRelease(image); + CGContextRelease(ctx); + if (pBitmap1 != pBitmap) { + delete pBitmap1; + } + RestoreState(FALSE); + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::CG_DrawGlypRun(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pGlyphMatrix, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD argb, + int alpha_flag, + void* pIccTransform) { + if (nChars == 0) { + return TRUE; + } + CQuartz2D& quartz2d = + ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; + if (!pFont->GetPlatformFont()) { + if (pFont->GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) { + return FALSE; + } + pFont->SetPlatformFont( + quartz2d.CreateFont(pFont->GetFontData(), pFont->GetSize())); + if (!pFont->GetPlatformFont()) { + return FALSE; + } + } + CFX_FixedBufGrow glyph_indices(nChars); + CFX_FixedBufGrow glyph_positions(nChars); + for (int i = 0; i < nChars; i++) { + glyph_indices[i] = pCharPos[i].m_ExtGID; + glyph_positions[i].x = pCharPos[i].m_OriginX; + glyph_positions[i].y = pCharPos[i].m_OriginY; + } + CFX_Matrix text_matrix; + if (pObject2Device) { + text_matrix.Concat(*pObject2Device); + } + CGAffineTransform matrix_cg = + CGAffineTransformMake(text_matrix.a, text_matrix.b, text_matrix.c, + text_matrix.d, text_matrix.e, text_matrix.f); + matrix_cg = CGAffineTransformConcat(matrix_cg, _foxitDevice2User); + CGContextSetTextMatrix(_context, matrix_cg); + CGContextSetFont(_context, (CGFontRef)pFont->GetPlatformFont()); + CGContextSetFontSize(_context, FXSYS_fabs(font_size)); + int32_t a, r, g, b; + ArgbDecode(argb, a, r, g, b); + CGContextSetRGBFillColor(_context, r / 255.f, g / 255.f, b / 255.f, + a / 255.f); + SaveState(); + if (pGlyphMatrix) { + CGPoint origin = CGPointMake(glyph_positions[0].x, glyph_positions[0].y); + origin = CGPointApplyAffineTransform(origin, matrix_cg); + CGContextTranslateCTM(_context, origin.x, origin.y); + CGAffineTransform glyph_matrix = CGAffineTransformMake( + pGlyphMatrix->a, pGlyphMatrix->b, pGlyphMatrix->c, pGlyphMatrix->d, + pGlyphMatrix->e, pGlyphMatrix->f); + if (_foxitDevice2User.d < 0) { + glyph_matrix = CGAffineTransformInvert(glyph_matrix); + } + CGContextConcatCTM(_context, glyph_matrix); + CGContextTranslateCTM(_context, -origin.x, -origin.y); + } + CGContextShowGlyphsAtPositions(_context, (CGGlyph*)glyph_indices, + glyph_positions, nChars); + RestoreState(FALSE); + return TRUE; +} +FX_BOOL CFX_QuartzDeviceDriver::DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + if (NULL == pFont || NULL == _context) { + return FALSE; + } + FX_BOOL bBold = pFont->IsBold(); + if (!bBold && pFont->GetSubstFont() && + pFont->GetSubstFont()->m_Weight >= 500 && + pFont->GetSubstFont()->m_Weight <= 600) { + return FALSE; + } + SaveState(); + CGContextSetTextDrawingMode(_context, kCGTextFillClip); + FX_BOOL ret = FALSE; + int32_t i = 0; + while (i < nChars) { + if (pCharPos[i].m_bGlyphAdjust || font_size < 0) { + if (i > 0) { + ret = CG_DrawGlypRun(i, pCharPos, pFont, pCache, NULL, pObject2Device, + font_size, color, alpha_flag, pIccTransform); + if (!ret) { + RestoreState(FALSE); + return ret; + } + } + const FXTEXT_CHARPOS* char_pos = pCharPos + i; + CFX_Matrix glphy_matrix; + if (font_size < 0) { + glphy_matrix.Concat(-1, 0, 0, -1, 0, 0); + } + if (char_pos->m_bGlyphAdjust) { + glphy_matrix.Concat( + char_pos->m_AdjustMatrix[0], char_pos->m_AdjustMatrix[1], + char_pos->m_AdjustMatrix[2], char_pos->m_AdjustMatrix[3], 0, 0); + } + ret = CG_DrawGlypRun(1, char_pos, pFont, pCache, &glphy_matrix, + pObject2Device, font_size, color, alpha_flag, + pIccTransform); + if (!ret) { + RestoreState(FALSE); + return ret; + } + i++; + pCharPos += i; + nChars -= i; + i = 0; + } else { + i++; + } + } + if (i > 0) { + ret = CG_DrawGlypRun(i, pCharPos, pFont, pCache, NULL, pObject2Device, + font_size, color, alpha_flag, pIccTransform); + } + RestoreState(FALSE); + return ret; +} +void CFX_QuartzDeviceDriver::setStrokeInfo(const CFX_GraphStateData* graphState, + FX_ARGB argb, + FX_FLOAT lineWidth) { + if (NULL == graphState) { + return; + } + CGContextSetLineWidth(_context, lineWidth); + CGLineCap cap; + switch (graphState->m_LineCap) { + case CFX_GraphStateData::LineCapRound: { + cap = kCGLineCapRound; + break; + } + case CFX_GraphStateData::LineCapSquare: { + cap = kCGLineCapSquare; + break; + } + case CFX_GraphStateData::LineCapButt: + default: { cap = kCGLineCapButt; } + } + CGContextSetLineCap(_context, cap); + CGLineJoin join; + switch (graphState->m_LineJoin) { + case CFX_GraphStateData::LineJoinRound: { + join = kCGLineJoinRound; + break; + } + case CFX_GraphStateData::LineJoinBevel: { + join = kCGLineJoinBevel; + break; + } + case CFX_GraphStateData::LineJoinMiter: + default: { join = kCGLineJoinMiter; } + } + CGContextSetLineJoin(_context, join); + if (graphState->m_DashCount) { +#if CGFLOAT_IS_DOUBLE + CGFloat* dashArray = new CGFloat[graphState->m_DashCount]; + for (int index = 0; index < graphState->m_DashCount; ++index) { + dashArray[index] = graphState->m_DashArray[index]; + } +#else + CGFloat* dashArray = (CGFloat*)graphState->m_DashArray; +#endif + CGContextSetLineDash(_context, graphState->m_DashPhase, dashArray, + graphState->m_DashCount); +#if CGFLOAT_IS_DOUBLE + delete[] dashArray; +#endif + } + int32_t a, r, g, b; + ArgbDecode(argb, a, r, g, b); + CGContextSetRGBStrokeColor(_context, r / 255.f, g / 255.f, b / 255.f, + a / 255.f); +} +void CFX_QuartzDeviceDriver::setFillInfo(FX_ARGB argb) { + int32_t a, r, g, b; + ArgbDecode(argb, a, r, g, b); + CGContextSetRGBFillColor(_context, r / 255.f, g / 255.f, b / 255.f, + a / 255.f); +} +void CFX_QuartzDeviceDriver::setPathToContext(const CFX_PathData* pathData) { + int32_t count = pathData->GetPointCount(); + FX_PATHPOINT* points = pathData->GetPoints(); + CGContextBeginPath(_context); + for (int32_t i = 0; i < count; i++) { + switch (points[i].m_Flag & FXPT_TYPE) { + case FXPT_MOVETO: + CGContextMoveToPoint(_context, points[i].m_PointX, points[i].m_PointY); + break; + case FXPT_LINETO: + CGContextAddLineToPoint(_context, points[i].m_PointX, + points[i].m_PointY); + break; + case FXPT_BEZIERTO: { + CGContextAddCurveToPoint(_context, points[i].m_PointX, + points[i].m_PointY, points[i + 1].m_PointX, + points[i + 1].m_PointY, points[i + 2].m_PointX, + points[i + 2].m_PointY); + i += 2; + } + } + if (points[i].m_Flag & FXPT_CLOSEFIGURE) { + CGContextClosePath(_context); + } + } +} +void CFX_QuartzDeviceDriver::CG_SetImageTransform(int dest_left, + int dest_top, + int dest_width, + int dest_height, + CGRect* rect) { + int flip_y = _foxitDevice2User.d * dest_height < 0 ? 1 : -1; + int flip_x = _foxitDevice2User.a * dest_width > 0 ? 1 : -1; + if (flip_y < 0 || flip_x < 0) { + if (dest_height < 0) { + dest_height = -dest_height; + dest_top -= dest_height; + } + CGRect rt = CGRectApplyAffineTransform( + CGRectMake(dest_left, dest_top, dest_width, dest_height), + _foxitDevice2User); + CGFloat offset_x = (rt.origin.x) + rt.size.width / 2.f, + offset_y = (rt.origin.y) + rt.size.height / 2.f; + CGAffineTransform transform = CGAffineTransformIdentity; + transform = CGAffineTransformConcat( + transform, CGAffineTransformMake(1, 0, 0, 1, -offset_x, -offset_y)); + transform = CGAffineTransformConcat( + transform, CGAffineTransformMake(flip_x, 0, 0, flip_y, 0, 0)); + transform = CGAffineTransformConcat( + transform, CGAffineTransformMake(1, 0, 0, 1, offset_x, offset_y)); + CGContextConcatCTM(_context, transform); + if (rect) { + *rect = CGRectApplyAffineTransform(*rect, transform); + } + } +} +void CFX_QuartzDeviceDriver::ClearDriver() { + if (NULL == _context) { + return; + } + for (int i = 0; i < m_saveCount; ++i) { + CGContextRestoreGState(_context); + } + m_saveCount = 0; + if (_context) { + CGContextRelease(_context); + } +} +CFX_QuartzDevice::CFX_QuartzDevice() { + m_bOwnedBitmap = FALSE; + m_pContext = NULL; +} +CFX_QuartzDevice::~CFX_QuartzDevice() { + if (m_pContext) { + CGContextRelease(m_pContext); + } + if (m_bOwnedBitmap) { + delete GetBitmap(); + } +} +CGContextRef CFX_QuartzDevice::GetContext() { + return m_pContext; +} +FX_BOOL CFX_QuartzDevice::Attach(CGContextRef context, int32_t nDeviceClass) { + if (m_pContext) { + CGContextRelease(m_pContext); + } + m_pContext = context; + CGContextRetain(m_pContext); + IFX_RenderDeviceDriver* pDriver = + new CFX_QuartzDeviceDriver(m_pContext, nDeviceClass); + SetDeviceDriver(pDriver); + return TRUE; +} +FX_BOOL CFX_QuartzDevice::Attach(CFX_DIBitmap* pBitmap) { + SetBitmap(pBitmap); + m_pContext = createContextWithBitmap(pBitmap); + if (NULL == m_pContext) { + return FALSE; + } + IFX_RenderDeviceDriver* pDriver = + new CFX_QuartzDeviceDriver(m_pContext, FXDC_DISPLAY); + SetDeviceDriver(pDriver); + return TRUE; +} +FX_BOOL CFX_QuartzDevice::Create(int32_t width, + int32_t height, + FXDIB_Format format) { + if ((uint8_t)format < 32) { + return FALSE; + } + CFX_DIBitmap* pBitmap = new CFX_DIBitmap; + if (!pBitmap->Create(width, height, format)) { + delete pBitmap; + return FALSE; + } + m_bOwnedBitmap = TRUE; + return Attach(pBitmap); +} +#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ diff --git a/core/fxge/dib/dib_int.h b/core/fxge/dib/dib_int.h new file mode 100644 index 0000000000..85888fed50 --- /dev/null +++ b/core/fxge/dib/dib_int.h @@ -0,0 +1,107 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_DIB_DIB_INT_H_ +#define CORE_FXGE_DIB_DIB_INT_H_ + +#include + +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxge/fx_dib.h" + +class IFX_ScanlineComposer; + +extern const int16_t SDP_Table[513]; + +class CPDF_FixedMatrix { + public: + CPDF_FixedMatrix(const CFX_Matrix& src, int bits) { + base = 1 << bits; + a = FXSYS_round(src.a * base); + b = FXSYS_round(src.b * base); + c = FXSYS_round(src.c * base); + d = FXSYS_round(src.d * base); + e = FXSYS_round(src.e * base); + f = FXSYS_round(src.f * base); + } + inline void Transform(int x, int y, int& x1, int& y1) { + x1 = (a * x + c * y + e + base / 2) / base; + y1 = (b * x + d * y + f + base / 2) / base; + } + int a, b, c, d, e, f; + int base; +}; +#define FPDF_HUGE_IMAGE_SIZE 60000000 +struct PixelWeight { + int m_SrcStart; + int m_SrcEnd; + int m_Weights[1]; +}; +class CWeightTable { + public: + CWeightTable() { m_pWeightTables = NULL; } + ~CWeightTable() { + FX_Free(m_pWeightTables); + m_pWeightTables = NULL; + } + void Calc(int dest_len, + int dest_min, + int dest_max, + int src_len, + int src_min, + int src_max, + int flags); + PixelWeight* GetPixelWeight(int pixel) { + return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize); + } + int m_DestMin, m_ItemSize; + uint8_t* m_pWeightTables; +}; +class CStretchEngine { + public: + CStretchEngine(IFX_ScanlineComposer* pDestBitmap, + FXDIB_Format dest_format, + int dest_width, + int dest_height, + const FX_RECT& clip_rect, + const CFX_DIBSource* pSrcBitmap, + int flags); + ~CStretchEngine(); + FX_BOOL Continue(IFX_Pause* pPause); + + public: + FXDIB_Format m_DestFormat; + int m_DestBpp, m_SrcBpp, m_bHasAlpha; + IFX_ScanlineComposer* m_pDestBitmap; + int m_DestWidth, m_DestHeight; + FX_RECT m_DestClip; + uint8_t* m_pDestScanline; + uint8_t* m_pDestMaskScanline; + FX_RECT m_SrcClip; + const CFX_DIBSource* m_pSource; + FX_DWORD* m_pSrcPalette; + int m_SrcWidth, m_SrcHeight; + int m_SrcPitch, m_InterPitch; + int m_ExtraMaskPitch; + unsigned char* m_pInterBuf; + unsigned char* m_pExtraAlphaBuf; + int m_TransMethod; + int m_Flags; + CWeightTable m_WeightTable; + int m_CurRow; + FX_BOOL StartStretchHorz(); + FX_BOOL ContinueStretchHorz(IFX_Pause* pPause); + void StretchVert(); + int m_State; +}; + +FX_RECT FXDIB_SwapClipBox(FX_RECT& clip, + int width, + int height, + FX_BOOL bFlipX, + FX_BOOL bFlipY); + +#endif // CORE_FXGE_DIB_DIB_INT_H_ diff --git a/core/fxge/dib/fx_dib_composite.cpp b/core/fxge/dib/fx_dib_composite.cpp new file mode 100644 index 0000000000..0bf67ccb71 --- /dev/null +++ b/core/fxge/dib/fx_dib_composite.cpp @@ -0,0 +1,5210 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/dib/dib_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_ge.h" + +const uint8_t _color_sqrt[256] = { + 0x00, 0x03, 0x07, 0x0B, 0x0F, 0x12, 0x16, 0x19, 0x1D, 0x20, 0x23, 0x26, + 0x29, 0x2C, 0x2F, 0x32, 0x35, 0x37, 0x3A, 0x3C, 0x3F, 0x41, 0x43, 0x46, + 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x57, 0x59, 0x5B, 0x5C, + 0x5E, 0x60, 0x61, 0x63, 0x64, 0x65, 0x67, 0x68, 0x69, 0x6B, 0x6C, 0x6D, + 0x6E, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, + 0x7B, 0x7C, 0x7D, 0x7E, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x91, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, + 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA4, 0xA5, + 0xA6, 0xA7, 0xA7, 0xA8, 0xA9, 0xAA, 0xAA, 0xAB, 0xAC, 0xAD, 0xAD, 0xAE, + 0xAF, 0xB0, 0xB0, 0xB1, 0xB2, 0xB3, 0xB3, 0xB4, 0xB5, 0xB5, 0xB6, 0xB7, + 0xB7, 0xB8, 0xB9, 0xBA, 0xBA, 0xBB, 0xBC, 0xBC, 0xBD, 0xBE, 0xBE, 0xBF, + 0xC0, 0xC0, 0xC1, 0xC2, 0xC2, 0xC3, 0xC4, 0xC4, 0xC5, 0xC6, 0xC6, 0xC7, + 0xC7, 0xC8, 0xC9, 0xC9, 0xCA, 0xCB, 0xCB, 0xCC, 0xCC, 0xCD, 0xCE, 0xCE, + 0xCF, 0xD0, 0xD0, 0xD1, 0xD1, 0xD2, 0xD3, 0xD3, 0xD4, 0xD4, 0xD5, 0xD6, + 0xD6, 0xD7, 0xD7, 0xD8, 0xD9, 0xD9, 0xDA, 0xDA, 0xDB, 0xDC, 0xDC, 0xDD, + 0xDD, 0xDE, 0xDE, 0xDF, 0xE0, 0xE0, 0xE1, 0xE1, 0xE2, 0xE2, 0xE3, 0xE4, + 0xE4, 0xE5, 0xE5, 0xE6, 0xE6, 0xE7, 0xE7, 0xE8, 0xE9, 0xE9, 0xEA, 0xEA, + 0xEB, 0xEB, 0xEC, 0xEC, 0xED, 0xED, 0xEE, 0xEE, 0xEF, 0xF0, 0xF0, 0xF1, + 0xF1, 0xF2, 0xF2, 0xF3, 0xF3, 0xF4, 0xF4, 0xF5, 0xF5, 0xF6, 0xF6, 0xF7, + 0xF7, 0xF8, 0xF8, 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC, 0xFD, + 0xFD, 0xFE, 0xFE, 0xFF}; +int _BLEND(int blend_mode, int back_color, int src_color) { + switch (blend_mode) { + case FXDIB_BLEND_NORMAL: + return src_color; + case FXDIB_BLEND_MULTIPLY: + return src_color * back_color / 255; + case FXDIB_BLEND_SCREEN: + return src_color + back_color - src_color * back_color / 255; + case FXDIB_BLEND_OVERLAY: + return _BLEND(FXDIB_BLEND_HARDLIGHT, src_color, back_color); + case FXDIB_BLEND_DARKEN: + return src_color < back_color ? src_color : back_color; + case FXDIB_BLEND_LIGHTEN: + return src_color > back_color ? src_color : back_color; + case FXDIB_BLEND_COLORDODGE: { + if (src_color == 255) { + return src_color; + } + int result = back_color * 255 / (255 - src_color); + if (result > 255) { + return 255; + } + return result; + } + case FXDIB_BLEND_COLORBURN: { + if (src_color == 0) { + return src_color; + } + int result = (255 - back_color) * 255 / src_color; + if (result > 255) { + result = 255; + } + return 255 - result; + } + case FXDIB_BLEND_HARDLIGHT: + if (src_color < 128) { + return (src_color * back_color * 2) / 255; + } + return _BLEND(FXDIB_BLEND_SCREEN, back_color, 2 * src_color - 255); + case FXDIB_BLEND_SOFTLIGHT: { + if (src_color < 128) { + return back_color - + (255 - 2 * src_color) * back_color * (255 - back_color) / 255 / + 255; + } + return back_color + + (2 * src_color - 255) * (_color_sqrt[back_color] - back_color) / + 255; + } + case FXDIB_BLEND_DIFFERENCE: + return back_color < src_color ? src_color - back_color + : back_color - src_color; + case FXDIB_BLEND_EXCLUSION: + return back_color + src_color - 2 * back_color * src_color / 255; + } + return src_color; +} +struct _RGB { + int red; + int green; + int blue; +}; +static inline int _Lum(_RGB color) { + return (color.red * 30 + color.green * 59 + color.blue * 11) / 100; +} +static _RGB _ClipColor(_RGB color) { + int l = _Lum(color); + int n = color.red; + if (color.green < n) { + n = color.green; + } + if (color.blue < n) { + n = color.blue; + } + int x = color.red; + if (color.green > x) { + x = color.green; + } + if (color.blue > x) { + x = color.blue; + } + if (n < 0) { + color.red = l + ((color.red - l) * l / (l - n)); + color.green = l + ((color.green - l) * l / (l - n)); + color.blue = l + ((color.blue - l) * l / (l - n)); + } + if (x > 255) { + color.red = l + ((color.red - l) * (255 - l) / (x - l)); + color.green = l + ((color.green - l) * (255 - l) / (x - l)); + color.blue = l + ((color.blue - l) * (255 - l) / (x - l)); + } + return color; +} +static _RGB _SetLum(_RGB color, int l) { + int d = l - _Lum(color); + color.red += d; + color.green += d; + color.blue += d; + return _ClipColor(color); +} +static int _Sat(_RGB color) { + int n = color.red; + if (color.green < n) { + n = color.green; + } + if (color.blue < n) { + n = color.blue; + } + int x = color.red; + if (color.green > x) { + x = color.green; + } + if (color.blue > x) { + x = color.blue; + } + return x - n; +} +static _RGB _SetSat(_RGB color, int s) { + int* max = &color.red; + int* mid = &color.red; + int* min = &color.red; + if (color.green > *max) { + max = &color.green; + } + if (color.blue > *max) { + max = &color.blue; + } + if (color.green < *min) { + min = &color.green; + } + if (color.blue < *min) { + min = &color.blue; + } + if (*max == *min) { + color.red = 0; + color.green = 0; + color.blue = 0; + return color; + } + if (max == &color.red) { + if (min == &color.green) { + mid = &color.blue; + } else { + mid = &color.green; + } + } else if (max == &color.green) { + if (min == &color.red) { + mid = &color.blue; + } else { + mid = &color.red; + } + } else { + if (min == &color.green) { + mid = &color.red; + } else { + mid = &color.green; + } + } + if (*max > *min) { + *mid = (*mid - *min) * s / (*max - *min); + *max = s; + *min = 0; + } + return color; +} +void _RGB_Blend(int blend_mode, + const uint8_t* src_scan, + uint8_t* dest_scan, + int results[3]) { + _RGB src, back, result; + src.red = src_scan[2]; + src.green = src_scan[1]; + src.blue = src_scan[0]; + back.red = dest_scan[2]; + back.green = dest_scan[1]; + back.blue = dest_scan[0]; + switch (blend_mode) { + case FXDIB_BLEND_HUE: + result = _SetLum(_SetSat(src, _Sat(back)), _Lum(back)); + break; + case FXDIB_BLEND_SATURATION: + result = _SetLum(_SetSat(back, _Sat(src)), _Lum(back)); + break; + case FXDIB_BLEND_COLOR: + result = _SetLum(src, _Lum(back)); + break; + case FXDIB_BLEND_LUMINOSITY: + result = _SetLum(back, _Lum(src)); + break; + } + results[0] = result.blue; + results[1] = result.green; + results[2] = result.red; +} +inline void _CompositeRow_Argb2Mask(uint8_t* dest_scan, + const uint8_t* src_scan, + int pixel_count, + const uint8_t* clip_scan) { + src_scan += 3; + for (int col = 0; col < pixel_count; col++) { + int src_alpha = *src_scan; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + uint8_t back_alpha = *dest_scan; + if (!back_alpha) { + *dest_scan = src_alpha; + } else if (src_alpha) { + *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; + } + dest_scan++; + src_scan += 4; + } +} +void _CompositeRow_Rgba2Mask(uint8_t* dest_scan, + const uint8_t* src_alpha_scan, + int pixel_count, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha = *src_alpha_scan++; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + uint8_t back_alpha = *dest_scan; + if (!back_alpha) { + *dest_scan = src_alpha; + } else if (src_alpha) { + *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; + } + dest_scan++; + } +} +void _CompositeRow_Rgb2Mask(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + const uint8_t* clip_scan) { + if (clip_scan) { + for (int i = 0; i < width; i++) { + *dest_scan = FXDIB_ALPHA_UNION(*dest_scan, *clip_scan); + dest_scan++; + clip_scan++; + } + } else { + FXSYS_memset(dest_scan, 0xff, width); + } +} +void _CompositeRow_Argb2Graya(uint8_t* dest_scan, + const uint8_t* src_scan, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan, + uint8_t* dst_alpha_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = nullptr; + if (pIccTransform) + pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + if (src_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = *dst_alpha_scan; + if (back_alpha == 0) { + int src_alpha = *src_alpha_scan++; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, + 1); + } else { + *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + *dst_alpha_scan = src_alpha; + } + dest_scan++; + dst_alpha_scan++; + src_scan += 3; + continue; + } + uint8_t src_alpha = *src_alpha_scan++; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha == 0) { + dest_scan++; + dst_alpha_scan++; + src_scan += 3; + continue; + } + *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); + int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); + uint8_t gray; + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + } else { + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + dst_alpha_scan++; + src_scan += 3; + } + } else { + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = *dst_alpha_scan; + if (back_alpha == 0) { + int src_alpha = src_scan[3]; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, + 1); + } else { + *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + *dst_alpha_scan = src_alpha; + } + dest_scan++; + dst_alpha_scan++; + src_scan += 4; + continue; + } + uint8_t src_alpha = src_scan[3]; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha == 0) { + dest_scan++; + dst_alpha_scan++; + src_scan += 4; + continue; + } + *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); + int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); + uint8_t gray; + if (pIccTransform) + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + else + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + dst_alpha_scan++; + src_scan += 4; + } + } + return; + } + if (src_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = *dst_alpha_scan; + if (back_alpha == 0) { + int src_alpha = *src_alpha_scan++; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, + 1); + } else { + *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + *dst_alpha_scan = src_alpha; + } + dest_scan++; + dst_alpha_scan++; + src_scan += 3; + continue; + } + uint8_t src_alpha = *src_alpha_scan++; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha == 0) { + dest_scan++; + dst_alpha_scan++; + src_scan += 3; + continue; + } + *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); + int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); + uint8_t gray; + if (pIccTransform) + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + else + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + dst_alpha_scan++; + src_scan += 3; + } + } else { + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = *dst_alpha_scan; + if (back_alpha == 0) { + int src_alpha = src_scan[3]; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, + 1); + } else { + *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + *dst_alpha_scan = src_alpha; + } + dest_scan++; + dst_alpha_scan++; + src_scan += 4; + continue; + } + uint8_t src_alpha = src_scan[3]; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha == 0) { + dest_scan++; + dst_alpha_scan++; + src_scan += 4; + continue; + } + *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); + int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); + uint8_t gray; + if (pIccTransform) + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + else + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + dst_alpha_scan++; + src_scan += 4; + } + } +} + +inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan, + const uint8_t* src_scan, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = NULL; + uint8_t gray; + if (pIccTransform) + pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + if (src_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha = *src_alpha_scan++; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + else + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); + } + dest_scan++; + src_scan += 3; + } + } else { + for (int col = 0; col < pixel_count; col++) { + int src_alpha = src_scan[3]; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + else + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); + } + dest_scan++; + src_scan += 4; + } + } + return; + } + if (src_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha = *src_alpha_scan++; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + else + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); + } + dest_scan++; + src_scan += 3; + } + } else { + for (int col = 0; col < pixel_count; col++) { + int src_alpha = src_scan[3]; + if (clip_scan) + src_alpha = clip_scan[col] * src_alpha / 255; + + if (src_alpha) { + if (pIccTransform) + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + else + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); + } + dest_scan++; + src_scan += 4; + } + } +} + +inline void _CompositeRow_Rgb2Gray(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_Bpp, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = NULL; + uint8_t gray; + if (pIccTransform) { + pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + } + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + for (int col = 0; col < pixel_count; col++) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + } else { + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); + } else { + *dest_scan = gray; + } + dest_scan++; + src_scan += src_Bpp; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + } else { + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); + } else { + *dest_scan = gray; + } + dest_scan++; + src_scan += src_Bpp; + } +} +void _CompositeRow_Rgb2Graya(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_Bpp, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = NULL; + if (pIccTransform) { + pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + } + if (blend_type) { + int blended_color; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + for (int col = 0; col < pixel_count; col++) { + int back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); + } else { + *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + dest_scan++; + dest_alpha_scan++; + src_scan += src_Bpp; + continue; + } + int src_alpha = 255; + if (clip_scan) { + src_alpha = clip_scan[col]; + } + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + src_scan += src_Bpp; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + uint8_t gray; + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + } else { + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + src_scan += src_Bpp; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + int src_alpha = 255; + if (clip_scan) { + src_alpha = clip_scan[col]; + } + if (src_alpha == 255) { + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); + } else { + *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + dest_scan++; + *dest_alpha_scan++ = 255; + src_scan += src_Bpp; + continue; + } + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + src_scan += src_Bpp; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + uint8_t gray; + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); + } else { + gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); + } + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + src_scan += src_Bpp; + } +} +void _CompositeRow_Argb2Argb(uint8_t* dest_scan, + const uint8_t* src_scan, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan, + const uint8_t* src_alpha_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + if (!dest_alpha_scan) { + if (!src_alpha_scan) { + uint8_t back_alpha = 0; + for (int col = 0; col < pixel_count; col++) { + back_alpha = dest_scan[3]; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * src_scan[3] / 255; + FXARGB_SETDIB(dest_scan, (FXARGB_GETDIB(src_scan) & 0xffffff) | + (src_alpha << 24)); + } else { + FXARGB_COPY(dest_scan, src_scan); + } + dest_scan += 4; + src_scan += 4; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * src_scan[3] / 255; + } else { + src_alpha = src_scan[3]; + } + if (src_alpha == 0) { + dest_scan += 4; + src_scan += 4; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + if (blend_type) { + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, *src_scan); + blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); + } + dest_scan++; + src_scan++; + } + dest_scan++; + src_scan++; + } + } else { + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; + FXARGB_SETDIB(dest_scan, FXARGB_MAKE((src_alpha << 24), src_scan[2], + src_scan[1], *src_scan)); + } else { + FXARGB_SETDIB(dest_scan, + FXARGB_MAKE((*src_alpha_scan << 24), src_scan[2], + src_scan[1], *src_scan)); + } + dest_scan += 4; + src_scan += 3; + src_alpha_scan++; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; + } else { + src_alpha = *src_alpha_scan++; + } + if (src_alpha == 0) { + dest_scan += 4; + src_scan += 3; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + if (blend_type) { + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, *src_scan); + blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); + } + dest_scan++; + src_scan++; + } + dest_scan++; + } + } + } else { + if (src_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; + *dest_alpha_scan = src_alpha; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + } else { + *dest_alpha_scan = *src_alpha_scan; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + } + dest_alpha_scan++; + src_alpha_scan++; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; + } else { + src_alpha = *src_alpha_scan++; + } + if (src_alpha == 0) { + dest_scan += 3; + src_scan += 3; + dest_alpha_scan++; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + if (blend_type) { + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, *src_scan); + blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); + } + dest_scan++; + src_scan++; + } + } + } else { + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * src_scan[3] / 255; + *dest_alpha_scan = src_alpha; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + } else { + *dest_alpha_scan = src_scan[3]; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + } + dest_alpha_scan++; + src_scan++; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * src_scan[3] / 255; + } else { + src_alpha = src_scan[3]; + } + if (src_alpha == 0) { + dest_scan += 3; + src_scan += 4; + dest_alpha_scan++; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + if (blend_type) { + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, *src_scan); + blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); + } + dest_scan++; + src_scan++; + } + src_scan++; + } + } + } +} +void _CompositeRow_Rgb2Argb_Blend_NoClip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int src_Bpp, + uint8_t* dest_alpha_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int src_gap = src_Bpp - 3; + if (dest_alpha_scan) { + for (int col = 0; col < width; col++) { + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_alpha_scan++ = 0xff; + src_scan += src_gap; + continue; + } + *dest_alpha_scan++ = 0xff; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int src_color = *src_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, src_color); + *dest_scan = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); + dest_scan++; + src_scan++; + } + src_scan += src_gap; + } + } else { + for (int col = 0; col < width; col++) { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + if (src_Bpp == 4) { + FXARGB_SETDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); + } else { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[2], src_scan[1], + src_scan[0])); + } + dest_scan += 4; + src_scan += src_Bpp; + continue; + } + dest_scan[3] = 0xff; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int src_color = *src_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, src_color); + *dest_scan = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); + dest_scan++; + src_scan++; + } + dest_scan++; + src_scan += src_gap; + } + } +} +inline void _CompositeRow_Rgb2Argb_Blend_Clip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int src_Bpp, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int src_gap = src_Bpp - 3; + if (dest_alpha_scan) { + for (int col = 0; col < width; col++) { + int src_alpha = *clip_scan++; + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + src_scan += src_gap; + dest_alpha_scan++; + continue; + } + if (src_alpha == 0) { + dest_scan += 3; + dest_alpha_scan++; + src_scan += src_Bpp; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int src_color = *src_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, src_color); + blended = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + src_scan++; + } + src_scan += src_gap; + } + } else { + for (int col = 0; col < width; col++) { + int src_alpha = *clip_scan++; + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + src_scan += src_gap; + dest_scan++; + continue; + } + if (src_alpha == 0) { + dest_scan += 4; + src_scan += src_Bpp; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int src_color = *src_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, src_color); + blended = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + src_scan++; + } + dest_scan++; + src_scan += src_gap; + } + } +} +inline void _CompositeRow_Rgb2Argb_NoBlend_Clip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int src_Bpp, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + int src_gap = src_Bpp - 3; + if (dest_alpha_scan) { + for (int col = 0; col < width; col++) { + int src_alpha = clip_scan[col]; + if (src_alpha == 255) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_alpha_scan++ = 255; + src_scan += src_gap; + continue; + } + if (src_alpha == 0) { + dest_scan += 3; + dest_alpha_scan++; + src_scan += src_Bpp; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + for (int color = 0; color < 3; color++) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); + dest_scan++; + src_scan++; + } + src_scan += src_gap; + } + } else { + for (int col = 0; col < width; col++) { + int src_alpha = clip_scan[col]; + if (src_alpha == 255) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = 255; + src_scan += src_gap; + continue; + } + if (src_alpha == 0) { + dest_scan += 4; + src_scan += src_Bpp; + continue; + } + int back_alpha = dest_scan[3]; + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + for (int color = 0; color < 3; color++) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); + dest_scan++; + src_scan++; + } + dest_scan++; + src_scan += src_gap; + } + } +} +inline void _CompositeRow_Rgb2Argb_NoBlend_NoClip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int src_Bpp, + uint8_t* dest_alpha_scan) { + if (dest_alpha_scan) { + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_alpha_scan++ = 0xff; + src_scan += src_gap; + } + } else { + for (int col = 0; col < width; col++) { + if (src_Bpp == 4) { + FXARGB_SETDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); + } else { + FXARGB_SETDIB(dest_scan, + FXARGB_MAKE(0xff, src_scan[2], src_scan[1], src_scan[0])); + } + dest_scan += 4; + src_scan += src_Bpp; + } + } +} +inline void _CompositeRow_Argb2Rgb_Blend(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int dest_gap = dest_Bpp - 3; + if (src_alpha_scan) { + for (int col = 0; col < width; col++) { + uint8_t src_alpha; + if (clip_scan) { + src_alpha = (*src_alpha_scan++) * (*clip_scan++) / 255; + } else { + src_alpha = *src_alpha_scan++; + } + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += 3; + continue; + } + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int back_color = *dest_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, *src_scan); + *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); + dest_scan++; + src_scan++; + } + dest_scan += dest_gap; + } + } else { + for (int col = 0; col < width; col++) { + uint8_t src_alpha; + if (clip_scan) { + src_alpha = src_scan[3] * (*clip_scan++) / 255; + } else { + src_alpha = src_scan[3]; + } + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += 4; + continue; + } + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int back_color = *dest_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, *src_scan); + *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); + dest_scan++; + src_scan++; + } + dest_scan += dest_gap; + src_scan++; + } + } +} +inline void _CompositeRow_Argb2Rgb_NoBlend(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan) { + int dest_gap = dest_Bpp - 3; + if (src_alpha_scan) { + for (int col = 0; col < width; col++) { + uint8_t src_alpha; + if (clip_scan) { + src_alpha = (*src_alpha_scan++) * (*clip_scan++) / 255; + } else { + src_alpha = *src_alpha_scan++; + } + if (src_alpha == 255) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + dest_scan += dest_gap; + continue; + } + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += 3; + continue; + } + for (int color = 0; color < 3; color++) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); + dest_scan++; + src_scan++; + } + dest_scan += dest_gap; + } + } else { + for (int col = 0; col < width; col++) { + uint8_t src_alpha; + if (clip_scan) { + src_alpha = src_scan[3] * (*clip_scan++) / 255; + } else { + src_alpha = src_scan[3]; + } + if (src_alpha == 255) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + dest_scan += dest_gap; + src_scan++; + continue; + } + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += 4; + continue; + } + for (int color = 0; color < 3; color++) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); + dest_scan++; + src_scan++; + } + dest_scan += dest_gap; + src_scan++; + } + } +} +inline void _CompositeRow_Rgb2Rgb_Blend_NoClip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + int src_Bpp) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int dest_gap = dest_Bpp - 3; + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int back_color = *dest_scan; + int src_color = *src_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, src_color); + *dest_scan = blended; + dest_scan++; + src_scan++; + } + dest_scan += dest_gap; + src_scan += src_gap; + } +} +inline void _CompositeRow_Rgb2Rgb_Blend_Clip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + int src_Bpp, + const uint8_t* clip_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int dest_gap = dest_Bpp - 3; + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + uint8_t src_alpha = *clip_scan++; + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += src_Bpp; + continue; + } + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int src_color = *src_scan; + int back_color = *dest_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, src_color); + *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); + dest_scan++; + src_scan++; + } + dest_scan += dest_gap; + src_scan += src_gap; + } +} +inline void _CompositeRow_Rgb2Rgb_NoBlend_NoClip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + int src_Bpp) { + if (dest_Bpp == src_Bpp) { + FXSYS_memcpy(dest_scan, src_scan, width * dest_Bpp); + return; + } + for (int col = 0; col < width; col++) { + dest_scan[0] = src_scan[0]; + dest_scan[1] = src_scan[1]; + dest_scan[2] = src_scan[2]; + dest_scan += dest_Bpp; + src_scan += src_Bpp; + } +} +inline void _CompositeRow_Rgb2Rgb_NoBlend_Clip(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + int src_Bpp, + const uint8_t* clip_scan) { + for (int col = 0; col < width; col++) { + int src_alpha = clip_scan[col]; + if (src_alpha == 255) { + dest_scan[0] = src_scan[0]; + dest_scan[1] = src_scan[1]; + dest_scan[2] = src_scan[2]; + } else if (src_alpha) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); + dest_scan++; + src_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); + dest_scan++; + src_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); + dest_scan += dest_Bpp - 2; + src_scan += src_Bpp - 2; + continue; + } + dest_scan += dest_Bpp; + src_scan += src_Bpp; + } +} +void _CompositeRow_Argb2Argb_Transform(uint8_t* dest_scan, + const uint8_t* src_scan, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan, + const uint8_t* src_alpha_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + uint8_t* dp = src_cache_scan; + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_alpha_scan) { + if (dest_alpha_scan) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, pixel_count); + } else { + for (int col = 0; col < pixel_count; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + dp[3] = *src_alpha_scan++; + src_scan += 3; + dp += 4; + } + src_alpha_scan = NULL; + } + } else { + if (dest_alpha_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + for (int col = 0; col < pixel_count; col++) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + 1); + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * src_scan[3] / 255; + *dest_alpha_scan = src_alpha; + *dest_scan++ = *src_cache_scan++; + *dest_scan++ = *src_cache_scan++; + *dest_scan++ = *src_cache_scan++; + } else { + *dest_alpha_scan = src_scan[3]; + *dest_scan++ = *src_cache_scan++; + *dest_scan++ = *src_cache_scan++; + *dest_scan++ = *src_cache_scan++; + } + dest_alpha_scan++; + src_scan += 4; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * src_scan[3] / 255; + } else { + src_alpha = src_scan[3]; + } + src_scan += 4; + if (src_alpha == 0) { + dest_scan += 3; + src_cache_scan += 3; + dest_alpha_scan++; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_cache_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + if (blend_type) { + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, *dest_scan, *src_cache_scan); + blended = FXDIB_ALPHA_MERGE(*src_cache_scan, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + } else { + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, *src_cache_scan, alpha_ratio); + } + dest_scan++; + src_cache_scan++; + } + } + return; + } + for (int col = 0; col < pixel_count; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + dp[3] = src_scan[3]; + src_scan += 4; + dp += 4; + } + } + _CompositeRow_Argb2Argb(dest_scan, src_cache_scan, pixel_count, blend_type, + clip_scan, dest_alpha_scan, src_alpha_scan); +} +void _CompositeRow_Rgb2Argb_Blend_NoClip_Transform(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int src_Bpp, + uint8_t* dest_alpha_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Argb_Blend_NoClip(dest_scan, src_cache_scan, width, + blend_type, 3, dest_alpha_scan); +} +inline void _CompositeRow_Rgb2Argb_Blend_Clip_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int src_Bpp, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Argb_Blend_Clip(dest_scan, src_cache_scan, width, + blend_type, 3, clip_scan, dest_alpha_scan); +} +inline void _CompositeRow_Rgb2Argb_NoBlend_Clip_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int src_Bpp, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Argb_NoBlend_Clip(dest_scan, src_cache_scan, width, 3, + clip_scan, dest_alpha_scan); +} +inline void _CompositeRow_Rgb2Argb_NoBlend_NoClip_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int src_Bpp, + uint8_t* dest_alpha_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Argb_NoBlend_NoClip(dest_scan, src_cache_scan, width, 3, + dest_alpha_scan); +} +inline void _CompositeRow_Argb2Rgb_Blend_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_alpha_scan) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int dest_gap = dest_Bpp - 3; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, 1); + uint8_t src_alpha; + if (clip_scan) { + src_alpha = src_scan[3] * (*clip_scan++) / 255; + } else { + src_alpha = src_scan[3]; + } + src_scan += 4; + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_cache_scan += 3; + continue; + } + if (bNonseparableBlend) { + _RGB_Blend(blend_type, src_cache_scan, dest_scan, blended_colors); + } + for (int color = 0; color < 3; color++) { + int back_color = *dest_scan; + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, *src_cache_scan); + *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); + dest_scan++; + src_cache_scan++; + } + dest_scan += dest_gap; + } + return; + } + _CompositeRow_Argb2Rgb_Blend(dest_scan, src_cache_scan, width, blend_type, + dest_Bpp, clip_scan, src_alpha_scan); +} +inline void _CompositeRow_Argb2Rgb_NoBlend_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_alpha_scan) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + int dest_gap = dest_Bpp - 3; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, 1); + uint8_t src_alpha; + if (clip_scan) { + src_alpha = src_scan[3] * (*clip_scan++) / 255; + } else { + src_alpha = src_scan[3]; + } + src_scan += 4; + if (src_alpha == 255) { + *dest_scan++ = *src_cache_scan++; + *dest_scan++ = *src_cache_scan++; + *dest_scan++ = *src_cache_scan++; + dest_scan += dest_gap; + continue; + } + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_cache_scan += 3; + continue; + } + for (int color = 0; color < 3; color++) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_cache_scan, src_alpha); + dest_scan++; + src_cache_scan++; + } + dest_scan += dest_gap; + } + return; + } + _CompositeRow_Argb2Rgb_NoBlend(dest_scan, src_cache_scan, width, dest_Bpp, + clip_scan, src_alpha_scan); +} +inline void _CompositeRow_Rgb2Rgb_Blend_NoClip_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + int src_Bpp, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Rgb_Blend_NoClip(dest_scan, src_cache_scan, width, + blend_type, dest_Bpp, 3); +} +inline void _CompositeRow_Rgb2Rgb_Blend_Clip_Transform(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + int src_Bpp, + const uint8_t* clip_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Rgb_Blend_Clip(dest_scan, src_cache_scan, width, blend_type, + dest_Bpp, 3, clip_scan); +} +inline void _CompositeRow_Rgb2Rgb_NoBlend_NoClip_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + int src_Bpp, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Rgb_NoBlend_NoClip(dest_scan, src_cache_scan, width, + dest_Bpp, 3); +} +inline void _CompositeRow_Rgb2Rgb_NoBlend_Clip_Transform( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + int src_Bpp, + const uint8_t* clip_scan, + uint8_t* src_cache_scan, + void* pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (src_Bpp == 3) { + pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, + width); + } else { + uint8_t* dp = src_cache_scan; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); + src_scan += 4; + dp += 3; + } + } + _CompositeRow_Rgb2Rgb_NoBlend_Clip(dest_scan, src_cache_scan, width, dest_Bpp, + 3, clip_scan); +} +inline void _CompositeRow_8bppPal2Gray(uint8_t* dest_scan, + const uint8_t* src_scan, + const uint8_t* pPalette, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan) { + if (src_alpha_scan) { + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + int src_alpha = *src_alpha_scan++; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + if (src_alpha) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); + } else { + *dest_scan = gray; + } + dest_scan++; + src_scan++; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + int src_alpha = *src_alpha_scan++; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + if (src_alpha) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); + } else { + *dest_scan = gray; + } + dest_scan++; + src_scan++; + } + } else { + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); + } else { + *dest_scan = gray; + } + dest_scan++; + src_scan++; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); + } else { + *dest_scan = gray; + } + dest_scan++; + src_scan++; + } + } +} +inline void _CompositeRow_8bppPal2Graya(uint8_t* dest_scan, + const uint8_t* src_scan, + const uint8_t* pPalette, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan, + const uint8_t* src_alpha_scan) { + if (src_alpha_scan) { + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + src_scan++; + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + int src_alpha = *src_alpha_scan++; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + if (src_alpha) { + *dest_scan = gray; + *dest_alpha_scan = src_alpha; + } + dest_scan++; + dest_alpha_scan++; + continue; + } + uint8_t src_alpha = *src_alpha_scan++; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + *dest_alpha_scan = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + int alpha_ratio = src_alpha * 255 / (*dest_alpha_scan); + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_alpha_scan++; + dest_scan++; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + src_scan++; + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + int src_alpha = *src_alpha_scan++; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + if (src_alpha) { + *dest_scan = gray; + *dest_alpha_scan = src_alpha; + } + dest_scan++; + dest_alpha_scan++; + continue; + } + uint8_t src_alpha = *src_alpha_scan++; + if (clip_scan) { + src_alpha = clip_scan[col] * src_alpha / 255; + } + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + *dest_alpha_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; + int alpha_ratio = src_alpha * 255 / (*dest_alpha_scan); + dest_alpha_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + } + } else { + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + src_scan++; + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = gray; + *dest_alpha_scan++ = 255; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = pPalette[*src_scan]; + src_scan++; + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = gray; + *dest_alpha_scan++ = 255; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + } + } +} +inline void _CompositeRow_1bppPal2Gray(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + const uint8_t* pPalette, + int pixel_count, + int blend_type, + const uint8_t* clip_scan) { + int reset_gray = pPalette[0]; + int set_gray = pPalette[1]; + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = + (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) + ? set_gray + : reset_gray; + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); + } else { + *dest_scan = gray; + } + dest_scan++; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = + (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) + ? set_gray + : reset_gray; + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); + } else { + *dest_scan = gray; + } + dest_scan++; + } +} +inline void _CompositeRow_1bppPal2Graya(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + const uint8_t* pPalette, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + int reset_gray = pPalette[0]; + int set_gray = pPalette[1]; + if (blend_type) { + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int blended_color; + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = + (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) + ? set_gray + : reset_gray; + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = gray; + *dest_alpha_scan++ = 255; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + blended_color = + blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; + } + gray = bNonseparableBlend ? blended_color + : _BLEND(blend_type, *dest_scan, gray); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + uint8_t gray = + (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) + ? set_gray + : reset_gray; + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = gray; + *dest_alpha_scan++ = 255; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); + dest_scan++; + } +} +inline void _CompositeRow_8bppRgb2Rgb_NoBlend(uint8_t* dest_scan, + const uint8_t* src_scan, + FX_DWORD* pPalette, + int pixel_count, + int DestBpp, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan) { + if (src_alpha_scan) { + int dest_gap = DestBpp - 3; + FX_ARGB argb = 0; + for (int col = 0; col < pixel_count; col++) { + argb = pPalette[*src_scan]; + int src_r = FXARGB_R(argb); + int src_g = FXARGB_G(argb); + int src_b = FXARGB_B(argb); + src_scan++; + uint8_t src_alpha = 0; + if (clip_scan) { + src_alpha = (*src_alpha_scan++) * (*clip_scan++) / 255; + } else { + src_alpha = *src_alpha_scan++; + } + if (src_alpha == 255) { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + dest_scan += dest_gap; + continue; + } + if (src_alpha == 0) { + dest_scan += DestBpp; + continue; + } + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, src_alpha); + dest_scan++; + dest_scan += dest_gap; + } + } else { + FX_ARGB argb = 0; + for (int col = 0; col < pixel_count; col++) { + argb = pPalette[*src_scan]; + int src_r = FXARGB_R(argb); + int src_g = FXARGB_G(argb); + int src_b = FXARGB_B(argb); + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, clip_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, clip_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, clip_scan[col]); + dest_scan++; + } else { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + } + if (DestBpp == 4) { + dest_scan++; + } + src_scan++; + } + } +} +inline void _CompositeRow_1bppRgb2Rgb_NoBlend(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + FX_DWORD* pPalette, + int pixel_count, + int DestBpp, + const uint8_t* clip_scan) { + int reset_r, reset_g, reset_b; + int set_r, set_g, set_b; + reset_r = FXARGB_R(pPalette[0]); + reset_g = FXARGB_G(pPalette[0]); + reset_b = FXARGB_B(pPalette[0]); + set_r = FXARGB_R(pPalette[1]); + set_g = FXARGB_G(pPalette[1]); + set_b = FXARGB_B(pPalette[1]); + for (int col = 0; col < pixel_count; col++) { + int src_r, src_g, src_b; + if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { + src_r = set_r; + src_g = set_g; + src_b = set_b; + } else { + src_r = reset_r; + src_g = reset_g; + src_b = reset_b; + } + if (clip_scan && clip_scan[col] < 255) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, clip_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, clip_scan[col]); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, clip_scan[col]); + dest_scan++; + } else { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + } + if (DestBpp == 4) { + dest_scan++; + } + } +} +inline void _CompositeRow_8bppRgb2Argb_NoBlend(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + FX_DWORD* pPalette, + const uint8_t* clip_scan, + const uint8_t* src_alpha_scan) { + if (src_alpha_scan) { + for (int col = 0; col < width; col++) { + FX_ARGB argb = pPalette[*src_scan]; + src_scan++; + int src_r = FXARGB_R(argb); + int src_g = FXARGB_G(argb); + int src_b = FXARGB_B(argb); + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); + } else { + FXARGB_SETDIB(dest_scan, + FXARGB_MAKE(*src_alpha_scan, src_r, src_g, src_b)); + } + dest_scan += 4; + src_alpha_scan++; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; + } else { + src_alpha = *src_alpha_scan++; + } + if (src_alpha == 0) { + dest_scan += 4; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + dest_scan++; + } + } else { + for (int col = 0; col < width; col++) { + FX_ARGB argb = pPalette[*src_scan]; + int src_r = FXARGB_R(argb); + int src_g = FXARGB_G(argb); + int src_b = FXARGB_B(argb); + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + *dest_scan++ = 255; + src_scan++; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan += 4; + src_scan++; + continue; + } + int back_alpha = dest_scan[3]; + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + dest_scan++; + src_scan++; + } + } +} + +void _CompositeRow_8bppRgb2Rgba_NoBlend(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + FX_DWORD* pPalette, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan, + const uint8_t* src_alpha_scan) { + if (src_alpha_scan) { + for (int col = 0; col < width; col++) { + FX_ARGB argb = pPalette[*src_scan]; + src_scan++; + int src_r = FXARGB_R(argb); + int src_g = FXARGB_G(argb); + int src_b = FXARGB_B(argb); + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; + *dest_alpha_scan++ = src_alpha; + } else { + *dest_alpha_scan++ = *src_alpha_scan; + } + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + src_alpha_scan++; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; + } else { + src_alpha = *src_alpha_scan++; + } + if (src_alpha == 0) { + dest_scan += 3; + dest_alpha_scan++; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + } + } else { + for (int col = 0; col < width; col++) { + FX_ARGB argb = pPalette[*src_scan]; + int src_r = FXARGB_R(argb); + int src_g = FXARGB_G(argb); + int src_b = FXARGB_B(argb); + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + *dest_alpha_scan++ = 255; + src_scan++; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan += 3; + dest_alpha_scan++; + src_scan++; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + src_scan++; + } + } +} + +inline void _CompositeRow_1bppRgb2Argb_NoBlend(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + int width, + FX_DWORD* pPalette, + const uint8_t* clip_scan) { + int reset_r, reset_g, reset_b; + int set_r, set_g, set_b; + reset_r = FXARGB_R(pPalette[0]); + reset_g = FXARGB_G(pPalette[0]); + reset_b = FXARGB_B(pPalette[0]); + set_r = FXARGB_R(pPalette[1]); + set_g = FXARGB_G(pPalette[1]); + set_b = FXARGB_B(pPalette[1]); + for (int col = 0; col < width; col++) { + int src_r, src_g, src_b; + if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { + src_r = set_r; + src_g = set_g; + src_b = set_b; + } else { + src_r = reset_r; + src_g = reset_g; + src_b = reset_b; + } + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + *dest_scan++ = 255; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan += 4; + continue; + } + int back_alpha = dest_scan[3]; + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + dest_scan++; + } +} +void _CompositeRow_1bppRgb2Rgba_NoBlend(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + int width, + FX_DWORD* pPalette, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + int reset_r, reset_g, reset_b; + int set_r, set_g, set_b; + reset_r = FXARGB_R(pPalette[0]); + reset_g = FXARGB_G(pPalette[0]); + reset_b = FXARGB_B(pPalette[0]); + set_r = FXARGB_R(pPalette[1]); + set_g = FXARGB_G(pPalette[1]); + set_b = FXARGB_B(pPalette[1]); + for (int col = 0; col < width; col++) { + int src_r, src_g, src_b; + if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { + src_r = set_r; + src_g = set_g; + src_b = set_b; + } else { + src_r = reset_r; + src_g = reset_g; + src_b = reset_b; + } + if (!clip_scan || clip_scan[col] == 255) { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + *dest_alpha_scan++ = 255; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan += 3; + dest_alpha_scan++; + continue; + } + int back_alpha = *dest_alpha_scan; + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + } +} +void _CompositeRow_ByteMask2Argb(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int pixel_count, + int blend_type, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); + dest_scan += 4; + continue; + } + if (src_alpha == 0) { + dest_scan += 4; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); + } else if (blend_type) { + int blended = _BLEND(blend_type, *dest_scan, src_b); + blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_g); + blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_r); + blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + } + dest_scan += 2; + } +} +void _CompositeRow_ByteMask2Rgba(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + *dest_alpha_scan++ = src_alpha; + continue; + } + if (src_alpha == 0) { + dest_scan += 3; + dest_alpha_scan++; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); + dest_scan++; + } else if (blend_type) { + int blended = _BLEND(blend_type, *dest_scan, src_b); + blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_g); + blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_r); + blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + } + } +} +void _CompositeRow_ByteMask2Rgb(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int pixel_count, + int blend_type, + int Bpp, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + if (src_alpha == 0) { + dest_scan += Bpp; + continue; + } + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], src_alpha); + } else if (blend_type) { + int blended = _BLEND(blend_type, *dest_scan, src_b); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_g); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_r); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, src_alpha); + } + dest_scan += Bpp - 2; + } +} +void _CompositeRow_ByteMask2Mask(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int pixel_count, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + uint8_t back_alpha = *dest_scan; + if (!back_alpha) { + *dest_scan = src_alpha; + } else if (src_alpha) { + *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; + } + dest_scan++; + } +} +void _CompositeRow_ByteMask2Gray(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_gray, + int pixel_count, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + if (src_alpha) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, src_alpha); + } + dest_scan++; + } +} +void _CompositeRow_ByteMask2Graya(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_gray, + int pixel_count, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + *dest_scan++ = src_gray; + *dest_alpha_scan++ = src_alpha; + continue; + } + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, alpha_ratio); + dest_scan++; + } +} +void _CompositeRow_BitMask2Argb(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int src_left, + int pixel_count, + int blend_type, + const uint8_t* clip_scan) { + if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { + FX_ARGB argb = FXARGB_MAKE(0xff, src_r, src_g, src_b); + for (int col = 0; col < pixel_count; col++) { + if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { + FXARGB_SETDIB(dest_scan, argb); + } + dest_scan += 4; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan += 4; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); + dest_scan += 4; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); + } else if (blend_type) { + int blended = _BLEND(blend_type, *dest_scan, src_b); + blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_g); + blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_r); + blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + } + dest_scan += 2; + } +} +void _CompositeRow_BitMask2Rgba(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int src_left, + int pixel_count, + int blend_type, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { + for (int col = 0; col < pixel_count; col++) { + if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { + dest_scan[0] = src_b; + dest_scan[1] = src_g; + dest_scan[2] = src_r; + *dest_alpha_scan = mask_alpha; + } + dest_scan += 3; + dest_alpha_scan++; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan += 3; + dest_alpha_scan++; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + *dest_scan++ = src_b; + *dest_scan++ = src_g; + *dest_scan++ = src_r; + *dest_alpha_scan++ = mask_alpha; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); + dest_scan++; + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); + dest_scan++; + } else if (blend_type) { + int blended = _BLEND(blend_type, *dest_scan, src_b); + blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_g); + blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_r); + blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); + dest_scan++; + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); + dest_scan++; + } + } +} +void _CompositeRow_BitMask2Rgb(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int src_left, + int pixel_count, + int blend_type, + int Bpp, + const uint8_t* clip_scan) { + if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { + for (int col = 0; col < pixel_count; col++) { + if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { + dest_scan[2] = src_r; + dest_scan[1] = src_g; + dest_scan[0] = src_b; + } + dest_scan += Bpp; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan += Bpp; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + if (src_alpha == 0) { + dest_scan += Bpp; + continue; + } + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], src_alpha); + } else if (blend_type) { + int blended = _BLEND(blend_type, *dest_scan, src_b); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_g); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); + dest_scan++; + blended = _BLEND(blend_type, *dest_scan, src_r); + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); + } else { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, src_alpha); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, src_alpha); + } + dest_scan += Bpp - 2; + } +} +void _CompositeRow_BitMask2Mask(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_left, + int pixel_count, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan++; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + uint8_t back_alpha = *dest_scan; + if (!back_alpha) { + *dest_scan = src_alpha; + } else if (src_alpha) { + *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; + } + dest_scan++; + } +} +void _CompositeRow_BitMask2Gray(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_gray, + int src_left, + int pixel_count, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan++; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + if (src_alpha) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, src_alpha); + } + dest_scan++; + } +} +void _CompositeRow_BitMask2Graya(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_gray, + int src_left, + int pixel_count, + const uint8_t* clip_scan, + uint8_t* dest_alpha_scan) { + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan++; + dest_alpha_scan++; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + uint8_t back_alpha = *dest_alpha_scan; + if (back_alpha == 0) { + *dest_scan++ = src_gray; + *dest_alpha_scan++ = src_alpha; + continue; + } + if (src_alpha == 0) { + dest_scan++; + dest_alpha_scan++; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_alpha_scan++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, alpha_ratio); + dest_scan++; + } +} +void _CompositeRow_Argb2Argb_RgbByteOrder(uint8_t* dest_scan, + const uint8_t* src_scan, + int pixel_count, + int blend_type, + const uint8_t* clip_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + for (int col = 0; col < pixel_count; col++) { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + if (clip_scan) { + int src_alpha = clip_scan[col] * src_scan[3] / 255; + dest_scan[3] = src_alpha; + dest_scan[0] = src_scan[2]; + dest_scan[1] = src_scan[1]; + dest_scan[2] = src_scan[0]; + } else { + FXARGB_RGBORDERCOPY(dest_scan, src_scan); + } + dest_scan += 4; + src_scan += 4; + continue; + } + uint8_t src_alpha; + if (clip_scan) { + src_alpha = clip_scan[col] * src_scan[3] / 255; + } else { + src_alpha = src_scan[3]; + } + if (src_alpha == 0) { + dest_scan += 4; + src_scan += 4; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + uint8_t dest_scan_o[3]; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + } + for (int color = 0; color < 3; color++) { + int index = 2 - color; + if (blend_type) { + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, dest_scan[index], *src_scan); + blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); + dest_scan[index] = + FXDIB_ALPHA_MERGE(dest_scan[index], blended, alpha_ratio); + } else { + dest_scan[index] = + FXDIB_ALPHA_MERGE(dest_scan[index], *src_scan, alpha_ratio); + } + src_scan++; + } + dest_scan += 4; + src_scan++; + } +} +void _CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int src_Bpp) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + if (src_Bpp == 4) { + FXARGB_SETRGBORDERDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); + } else { + FXARGB_SETRGBORDERDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[2], + src_scan[1], src_scan[0])); + } + dest_scan += 4; + src_scan += src_Bpp; + continue; + } + dest_scan[3] = 0xff; + if (bNonseparableBlend) { + uint8_t dest_scan_o[3]; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + } + for (int color = 0; color < 3; color++) { + int index = 2 - color; + int src_color = FX_GAMMA(*src_scan); + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, dest_scan[index], src_color); + dest_scan[index] = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); + src_scan++; + } + dest_scan += 4; + src_scan += src_gap; + } +} +inline void _CompositeRow_Argb2Rgb_Blend_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + const uint8_t* clip_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + for (int col = 0; col < width; col++) { + uint8_t src_alpha; + if (clip_scan) { + src_alpha = src_scan[3] * (*clip_scan++) / 255; + } else { + src_alpha = src_scan[3]; + } + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += 4; + continue; + } + if (bNonseparableBlend) { + uint8_t dest_scan_o[3]; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + } + for (int color = 0; color < 3; color++) { + int index = 2 - color; + int back_color = FX_GAMMA(dest_scan[index]); + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, *src_scan); + dest_scan[index] = + FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); + src_scan++; + } + dest_scan += dest_Bpp; + src_scan++; + } +} +inline void _CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int src_Bpp) { + for (int col = 0; col < width; col++) { + if (src_Bpp == 4) { + FXARGB_SETRGBORDERDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); + } else { + FXARGB_SETRGBORDERDIB( + dest_scan, FXARGB_MAKE(0xff, src_scan[2], src_scan[1], src_scan[0])); + } + dest_scan += 4; + src_scan += src_Bpp; + } +} +inline void _CompositeRow_Rgb2Rgb_Blend_NoClip_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + int src_Bpp) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + if (bNonseparableBlend) { + uint8_t dest_scan_o[3]; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + } + for (int color = 0; color < 3; color++) { + int index = 2 - color; + int back_color = FX_GAMMA(dest_scan[index]); + int src_color = FX_GAMMA(*src_scan); + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, src_color); + dest_scan[index] = FX_GAMMA_INVERSE(blended); + src_scan++; + } + dest_scan += dest_Bpp; + src_scan += src_gap; + } +} +inline void _CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + const uint8_t* clip_scan) { + for (int col = 0; col < width; col++) { + uint8_t src_alpha; + if (clip_scan) { + src_alpha = src_scan[3] * (*clip_scan++) / 255; + } else { + src_alpha = src_scan[3]; + } + if (src_alpha == 255) { + dest_scan[2] = FX_GAMMA_INVERSE(*src_scan++); + dest_scan[1] = FX_GAMMA_INVERSE(*src_scan++); + dest_scan[0] = FX_GAMMA_INVERSE(*src_scan++); + dest_scan += dest_Bpp; + src_scan++; + continue; + } + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += 4; + continue; + } + for (int color = 0; color < 3; color++) { + int index = 2 - color; + dest_scan[index] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[index]), *src_scan, src_alpha)); + src_scan++; + } + dest_scan += dest_Bpp; + src_scan++; + } +} +inline void _CompositeRow_Rgb2Rgb_NoBlend_NoClip_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + int src_Bpp) { + for (int col = 0; col < width; col++) { + dest_scan[2] = src_scan[0]; + dest_scan[1] = src_scan[1]; + dest_scan[0] = src_scan[2]; + dest_scan += dest_Bpp; + src_scan += src_Bpp; + } +} +inline void _CompositeRow_Rgb2Argb_Blend_Clip_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int src_Bpp, + const uint8_t* clip_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + int src_alpha = *clip_scan++; + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + dest_scan[2] = FX_GAMMA(*src_scan++); + dest_scan[1] = FX_GAMMA(*src_scan++); + dest_scan[0] = FX_GAMMA(*src_scan++); + src_scan += src_gap; + dest_scan += 4; + continue; + } + if (src_alpha == 0) { + dest_scan += 4; + src_scan += src_Bpp; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (bNonseparableBlend) { + uint8_t dest_scan_o[3]; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + } + for (int color = 0; color < 3; color++) { + int index = 2 - color; + int src_color = FX_GAMMA(*src_scan); + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, dest_scan[index], src_color); + blended = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); + dest_scan[index] = + FXDIB_ALPHA_MERGE(dest_scan[index], blended, alpha_ratio); + src_scan++; + } + dest_scan += 4; + src_scan += src_gap; + } +} +inline void _CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int blend_type, + int dest_Bpp, + int src_Bpp, + const uint8_t* clip_scan) { + int blended_colors[3]; + FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + uint8_t src_alpha = *clip_scan++; + if (src_alpha == 0) { + dest_scan += dest_Bpp; + src_scan += src_Bpp; + continue; + } + if (bNonseparableBlend) { + uint8_t dest_scan_o[3]; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + } + for (int color = 0; color < 3; color++) { + int index = 2 - color; + int src_color = FX_GAMMA(*src_scan); + int back_color = FX_GAMMA(dest_scan[index]); + int blended = bNonseparableBlend + ? blended_colors[color] + : _BLEND(blend_type, back_color, src_color); + dest_scan[index] = + FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); + src_scan++; + } + dest_scan += dest_Bpp; + src_scan += src_gap; + } +} +inline void _CompositeRow_Rgb2Argb_NoBlend_Clip_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int src_Bpp, + const uint8_t* clip_scan) { + int src_gap = src_Bpp - 3; + for (int col = 0; col < width; col++) { + int src_alpha = clip_scan[col]; + if (src_alpha == 255) { + dest_scan[2] = FX_GAMMA(*src_scan++); + dest_scan[1] = FX_GAMMA(*src_scan++); + dest_scan[0] = FX_GAMMA(*src_scan++); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += src_gap; + continue; + } + if (src_alpha == 0) { + dest_scan += 4; + src_scan += src_Bpp; + continue; + } + int back_alpha = dest_scan[3]; + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + for (int color = 0; color < 3; color++) { + int index = 2 - color; + dest_scan[index] = + FXDIB_ALPHA_MERGE(dest_scan[index], FX_GAMMA(*src_scan), alpha_ratio); + src_scan++; + } + dest_scan += 4; + src_scan += src_gap; + } +} +inline void _CompositeRow_Rgb2Rgb_NoBlend_Clip_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + int dest_Bpp, + int src_Bpp, + const uint8_t* clip_scan) { + for (int col = 0; col < width; col++) { + int src_alpha = clip_scan[col]; + if (src_alpha == 255) { + dest_scan[2] = src_scan[0]; + dest_scan[1] = src_scan[1]; + dest_scan[0] = src_scan[2]; + } else if (src_alpha) { + dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[2]), FX_GAMMA(*src_scan), src_alpha)); + src_scan++; + dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[1]), FX_GAMMA(*src_scan), src_alpha)); + src_scan++; + dest_scan[0] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[0]), FX_GAMMA(*src_scan), src_alpha)); + dest_scan += dest_Bpp; + src_scan += src_Bpp - 2; + continue; + } + dest_scan += dest_Bpp; + src_scan += src_Bpp; + } +} +inline void _CompositeRow_8bppRgb2Rgb_NoBlend_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + FX_ARGB* pPalette, + int pixel_count, + int DestBpp, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + FX_ARGB argb = pPalette ? pPalette[*src_scan] : (*src_scan) * 0x010101; + int src_r = FXARGB_R(argb); + int src_g = FXARGB_G(argb); + int src_b = FXARGB_B(argb); + if (clip_scan && clip_scan[col] < 255) { + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, clip_scan[col]); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, clip_scan[col]); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, clip_scan[col]); + } else { + dest_scan[2] = src_b; + dest_scan[1] = src_g; + dest_scan[0] = src_r; + } + dest_scan += DestBpp; + src_scan++; + } +} +inline void _CompositeRow_1bppRgb2Rgb_NoBlend_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + FX_ARGB* pPalette, + int pixel_count, + int DestBpp, + const uint8_t* clip_scan) { + int reset_r, reset_g, reset_b; + int set_r, set_g, set_b; + if (pPalette) { + reset_r = FXARGB_R(pPalette[0]); + reset_g = FXARGB_G(pPalette[0]); + reset_b = FXARGB_B(pPalette[0]); + set_r = FXARGB_R(pPalette[1]); + set_g = FXARGB_G(pPalette[1]); + set_b = FXARGB_B(pPalette[1]); + } else { + reset_r = reset_g = reset_b = 0; + set_r = set_g = set_b = 255; + } + for (int col = 0; col < pixel_count; col++) { + int src_r, src_g, src_b; + if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { + src_r = set_r; + src_g = set_g; + src_b = set_b; + } else { + src_r = reset_r; + src_g = reset_g; + src_b = reset_b; + } + if (clip_scan && clip_scan[col] < 255) { + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, clip_scan[col]); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, clip_scan[col]); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, clip_scan[col]); + } else { + dest_scan[2] = src_b; + dest_scan[1] = src_g; + dest_scan[0] = src_r; + } + dest_scan += DestBpp; + } +} +inline void _CompositeRow_8bppRgb2Argb_NoBlend_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + FX_ARGB* pPalette, + const uint8_t* clip_scan) { + for (int col = 0; col < width; col++) { + int src_r, src_g, src_b; + if (pPalette) { + FX_ARGB argb = pPalette[*src_scan]; + src_r = FXARGB_R(argb); + src_g = FXARGB_G(argb); + src_b = FXARGB_B(argb); + } else { + src_r = src_g = src_b = *src_scan; + } + if (!clip_scan || clip_scan[col] == 255) { + dest_scan[2] = FX_GAMMA(src_b); + dest_scan[1] = FX_GAMMA(src_g); + dest_scan[0] = FX_GAMMA(src_r); + dest_scan[3] = 255; + src_scan++; + dest_scan += 4; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan += 4; + src_scan++; + continue; + } + int back_alpha = dest_scan[3]; + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + dest_scan[2] = + FXDIB_ALPHA_MERGE(dest_scan[2], FX_GAMMA(src_b), alpha_ratio); + dest_scan[1] = + FXDIB_ALPHA_MERGE(dest_scan[1], FX_GAMMA(src_g), alpha_ratio); + dest_scan[0] = + FXDIB_ALPHA_MERGE(dest_scan[0], FX_GAMMA(src_r), alpha_ratio); + dest_scan += 4; + src_scan++; + } +} +inline void _CompositeRow_1bppRgb2Argb_NoBlend_RgbByteOrder( + uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + int width, + FX_ARGB* pPalette, + const uint8_t* clip_scan) { + int reset_r, reset_g, reset_b; + int set_r, set_g, set_b; + if (pPalette) { + reset_r = FXARGB_R(pPalette[0]); + reset_g = FXARGB_G(pPalette[0]); + reset_b = FXARGB_B(pPalette[0]); + set_r = FXARGB_R(pPalette[1]); + set_g = FXARGB_G(pPalette[1]); + set_b = FXARGB_B(pPalette[1]); + } else { + reset_r = reset_g = reset_b = 0; + set_r = set_g = set_b = 255; + } + for (int col = 0; col < width; col++) { + int src_r, src_g, src_b; + if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { + src_r = set_r; + src_g = set_g; + src_b = set_b; + } else { + src_r = reset_r; + src_g = reset_g; + src_b = reset_b; + } + if (!clip_scan || clip_scan[col] == 255) { + dest_scan[2] = FX_GAMMA(src_b); + dest_scan[1] = FX_GAMMA(src_g); + dest_scan[0] = FX_GAMMA(src_r); + dest_scan[3] = 255; + dest_scan += 4; + continue; + } + int src_alpha = clip_scan[col]; + if (src_alpha == 0) { + dest_scan += 4; + continue; + } + int back_alpha = dest_scan[3]; + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + dest_scan[2] = + FXDIB_ALPHA_MERGE(dest_scan[2], FX_GAMMA(src_b), alpha_ratio); + dest_scan[1] = + FXDIB_ALPHA_MERGE(dest_scan[1], FX_GAMMA(src_g), alpha_ratio); + dest_scan[0] = + FXDIB_ALPHA_MERGE(dest_scan[0], FX_GAMMA(src_r), alpha_ratio); + dest_scan += 4; + } +} +void _CompositeRow_ByteMask2Argb_RgbByteOrder(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int pixel_count, + int blend_type, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETRGBORDERDIB(dest_scan, + FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); + dest_scan += 4; + continue; + } + if (src_alpha == 0) { + dest_scan += 4; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + uint8_t dest_scan_o[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + dest_scan[2] = + FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], alpha_ratio); + dest_scan[1] = + FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], alpha_ratio); + dest_scan[0] = + FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], alpha_ratio); + } else if (blend_type) { + int blended = _BLEND(blend_type, dest_scan[2], src_b); + blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], blended, alpha_ratio); + blended = _BLEND(blend_type, dest_scan[1], src_g); + blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], blended, alpha_ratio); + blended = _BLEND(blend_type, dest_scan[0], src_r); + blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, alpha_ratio); + } else { + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, alpha_ratio); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, alpha_ratio); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, alpha_ratio); + } + dest_scan += 4; + } +} +void _CompositeRow_ByteMask2Rgb_RgbByteOrder(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int pixel_count, + int blend_type, + int Bpp, + const uint8_t* clip_scan) { + for (int col = 0; col < pixel_count; col++) { + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; + } else { + src_alpha = mask_alpha * src_scan[col] / 255; + } + if (src_alpha == 0) { + dest_scan += Bpp; + continue; + } + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + uint8_t dest_scan_o[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + dest_scan[2] = + FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], src_alpha); + dest_scan[1] = + FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], src_alpha); + dest_scan[0] = + FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], src_alpha); + } else if (blend_type) { + int blended = _BLEND(blend_type, dest_scan[2], src_b); + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], blended, src_alpha); + blended = _BLEND(blend_type, dest_scan[1], src_g); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], blended, src_alpha); + blended = _BLEND(blend_type, dest_scan[0], src_r); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, src_alpha); + } else { + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, src_alpha); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, src_alpha); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, src_alpha); + } + dest_scan += Bpp; + } +} +void _CompositeRow_BitMask2Argb_RgbByteOrder(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int src_left, + int pixel_count, + int blend_type, + const uint8_t* clip_scan) { + if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { + FX_ARGB argb = FXARGB_MAKE(0xff, src_r, src_g, src_b); + for (int col = 0; col < pixel_count; col++) { + if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { + FXARGB_SETRGBORDERDIB(dest_scan, argb); + } + dest_scan += 4; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan += 4; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETRGBORDERDIB(dest_scan, + FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); + dest_scan += 4; + continue; + } + uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + uint8_t dest_scan_o[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + dest_scan[2] = + FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], alpha_ratio); + dest_scan[1] = + FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], alpha_ratio); + dest_scan[0] = + FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], alpha_ratio); + } else if (blend_type) { + int blended = _BLEND(blend_type, dest_scan[2], src_b); + blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], blended, alpha_ratio); + blended = _BLEND(blend_type, dest_scan[1], src_g); + blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], blended, alpha_ratio); + blended = _BLEND(blend_type, dest_scan[0], src_r); + blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, alpha_ratio); + } else { + dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, alpha_ratio); + dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, alpha_ratio); + dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, alpha_ratio); + } + dest_scan += 4; + } +} +void _CompositeRow_BitMask2Rgb_RgbByteOrder(uint8_t* dest_scan, + const uint8_t* src_scan, + int mask_alpha, + int src_r, + int src_g, + int src_b, + int src_left, + int pixel_count, + int blend_type, + int Bpp, + const uint8_t* clip_scan) { + if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { + for (int col = 0; col < pixel_count; col++) { + if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { + dest_scan[2] = src_b; + dest_scan[1] = src_g; + dest_scan[0] = src_r; + } + dest_scan += Bpp; + } + return; + } + for (int col = 0; col < pixel_count; col++) { + if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { + dest_scan += Bpp; + continue; + } + int src_alpha; + if (clip_scan) { + src_alpha = mask_alpha * clip_scan[col] / 255; + } else { + src_alpha = mask_alpha; + } + if (src_alpha == 0) { + dest_scan += Bpp; + continue; + } + if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { + int blended_colors[3]; + uint8_t src_scan[3]; + uint8_t dest_scan_o[3]; + src_scan[0] = src_b; + src_scan[1] = src_g; + src_scan[2] = src_r; + dest_scan_o[0] = dest_scan[2]; + dest_scan_o[1] = dest_scan[1]; + dest_scan_o[2] = dest_scan[0]; + _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); + dest_scan[2] = + FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], src_alpha); + dest_scan[1] = + FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], src_alpha); + dest_scan[0] = + FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], src_alpha); + } else if (blend_type) { + int back_color = FX_GAMMA(dest_scan[2]); + int blended = _BLEND(blend_type, back_color, src_b); + dest_scan[2] = + FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); + back_color = FX_GAMMA(dest_scan[1]); + blended = _BLEND(blend_type, back_color, src_g); + dest_scan[1] = + FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); + back_color = FX_GAMMA(dest_scan[0]); + blended = _BLEND(blend_type, back_color, src_r); + dest_scan[0] = + FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); + } else { + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), src_b, src_alpha)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), src_g, src_alpha)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), src_r, src_alpha)); + } + dest_scan += Bpp; + } +} +inline FX_BOOL _ScanlineCompositor_InitSourceMask(FXDIB_Format dest_format, + int alpha_flag, + FX_DWORD mask_color, + int& mask_alpha, + int& mask_red, + int& mask_green, + int& mask_blue, + int& mask_black, + void* icc_module, + void* pIccTransform) { + ICodec_IccModule* pIccModule = (ICodec_IccModule*)icc_module; + if (alpha_flag >> 8) { + mask_alpha = alpha_flag & 0xff; + mask_red = FXSYS_GetCValue(mask_color); + mask_green = FXSYS_GetMValue(mask_color); + mask_blue = FXSYS_GetYValue(mask_color); + mask_black = FXSYS_GetKValue(mask_color); + } else { + mask_alpha = FXARGB_A(mask_color); + mask_red = FXARGB_R(mask_color); + mask_green = FXARGB_G(mask_color); + mask_blue = FXARGB_B(mask_color); + } + if (dest_format == FXDIB_8bppMask) { + return TRUE; + } + if ((dest_format & 0xff) == 8) { + if (pIccTransform) { + mask_color = (alpha_flag >> 8) ? FXCMYK_TODIB(mask_color) + : FXARGB_TODIB(mask_color); + uint8_t* gray_p = (uint8_t*)&mask_color; + pIccModule->TranslateScanline(pIccTransform, gray_p, gray_p, 1); + mask_red = dest_format & 0x0400 ? FX_CCOLOR(gray_p[0]) : gray_p[0]; + } else { + if (alpha_flag >> 8) { + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(mask_red, mask_green, mask_blue, mask_black, r, g, + b); + mask_red = FXRGB2GRAY(r, g, b); + } else { + mask_red = FXRGB2GRAY(mask_red, mask_green, mask_blue); + } + if (dest_format & 0x0400) { + mask_red = FX_CCOLOR(mask_red); + } + } + } else { + uint8_t* mask_color_p = (uint8_t*)&mask_color; + mask_color = + (alpha_flag >> 8) ? FXCMYK_TODIB(mask_color) : FXARGB_TODIB(mask_color); + if (pIccTransform) { + pIccModule->TranslateScanline(pIccTransform, mask_color_p, mask_color_p, + 1); + mask_red = mask_color_p[2]; + mask_green = mask_color_p[1]; + mask_blue = mask_color_p[0]; + } else if (alpha_flag >> 8) { + AdobeCMYK_to_sRGB1(mask_color_p[0], mask_color_p[1], mask_color_p[2], + mask_color_p[3], mask_color_p[2], mask_color_p[1], + mask_color_p[0]); + mask_red = mask_color_p[2]; + mask_green = mask_color_p[1]; + mask_blue = mask_color_p[0]; + } + } + return TRUE; +} +inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, + FXDIB_Format dest_format, + FX_DWORD*& pDestPalette, + FX_DWORD* pSrcPalette, + void* icc_module, + void* pIccTransform) { + ICodec_IccModule* pIccModule = (ICodec_IccModule*)icc_module; + FX_BOOL isSrcCmyk = !!(src_format & 0x0400); + FX_BOOL isDstCmyk = !!(dest_format & 0x0400); + pDestPalette = NULL; + if (pIccTransform) { + if (pSrcPalette) { + if ((dest_format & 0xff) == 8) { + int pal_count = 1 << (src_format & 0xff); + uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); + pDestPalette = (FX_DWORD*)gray_pal; + for (int i = 0; i < pal_count; i++) { + FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) + : FXARGB_TODIB(pSrcPalette[i]); + pIccModule->TranslateScanline(pIccTransform, gray_pal, + (const uint8_t*)&color, 1); + gray_pal++; + } + } else { + int palsize = 1 << (src_format & 0xff); + pDestPalette = FX_Alloc(FX_DWORD, palsize); + for (int i = 0; i < palsize; i++) { + FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) + : FXARGB_TODIB(pSrcPalette[i]); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&color, + (const uint8_t*)&color, 1); + pDestPalette[i] = + isDstCmyk ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); + } + } + } else { + int pal_count = 1 << (src_format & 0xff); + uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); + if (pal_count == 2) { + gray_pal[0] = 0; + gray_pal[1] = 255; + } else { + for (int i = 0; i < pal_count; i++) { + gray_pal[i] = i; + } + } + if ((dest_format & 0xff) == 8) { + pIccModule->TranslateScanline(pIccTransform, gray_pal, gray_pal, + pal_count); + pDestPalette = (FX_DWORD*)gray_pal; + } else { + pDestPalette = FX_Alloc(FX_DWORD, pal_count); + for (int i = 0; i < pal_count; i++) { + pIccModule->TranslateScanline( + pIccTransform, (uint8_t*)&pDestPalette[i], &gray_pal[i], 1); + pDestPalette[i] = isDstCmyk ? FXCMYK_TODIB(pDestPalette[i]) + : FXARGB_TODIB(pDestPalette[i]); + } + FX_Free(gray_pal); + } + } + } else { + if (pSrcPalette) { + if ((dest_format & 0xff) == 8) { + int pal_count = 1 << (src_format & 0xff); + uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); + pDestPalette = (FX_DWORD*)gray_pal; + if (isSrcCmyk) { + for (int i = 0; i < pal_count; i++) { + FX_CMYK cmyk = pSrcPalette[i]; + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), + FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, + g, b); + *gray_pal++ = FXRGB2GRAY(r, g, b); + } + } else { + for (int i = 0; i < pal_count; i++) { + FX_ARGB argb = pSrcPalette[i]; + *gray_pal++ = + FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb)); + } + } + } else { + int palsize = 1 << (src_format & 0xff); + pDestPalette = FX_Alloc(FX_DWORD, palsize); + if (isDstCmyk == isSrcCmyk) { + FXSYS_memcpy(pDestPalette, pSrcPalette, palsize * sizeof(FX_DWORD)); + } else { + for (int i = 0; i < palsize; i++) { + FX_CMYK cmyk = pSrcPalette[i]; + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), + FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, + g, b); + pDestPalette[i] = FXARGB_MAKE(0xff, r, g, b); + } + } + } + } else { + if ((dest_format & 0xff) == 8) { + int pal_count = 1 << (src_format & 0xff); + uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); + if (pal_count == 2) { + gray_pal[0] = 0; + gray_pal[1] = 255; + } else { + for (int i = 0; i < pal_count; i++) { + gray_pal[i] = i; + } + } + pDestPalette = (FX_DWORD*)gray_pal; + } else { + int palsize = 1 << (src_format & 0xff); + pDestPalette = FX_Alloc(FX_DWORD, palsize); + if (palsize == 2) { + pDestPalette[0] = isSrcCmyk ? 255 : 0xff000000; + pDestPalette[1] = isSrcCmyk ? 0 : 0xffffffff; + } else { + for (int i = 0; i < palsize; i++) { + pDestPalette[i] = isSrcCmyk ? FX_CCOLOR(i) : (i * 0x10101); + } + } + if (isSrcCmyk != isDstCmyk) { + for (int i = 0; i < palsize; i++) { + FX_CMYK cmyk = pDestPalette[i]; + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), + FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, + g, b); + pDestPalette[i] = FXARGB_MAKE(0xff, r, g, b); + } + } + } + } + } +} +CFX_ScanlineCompositor::CFX_ScanlineCompositor() { + m_pSrcPalette = NULL; + m_pCacheScanline = NULL; + m_CacheSize = 0; + m_bRgbByteOrder = FALSE; + m_BlendType = FXDIB_BLEND_NORMAL; +} +CFX_ScanlineCompositor::~CFX_ScanlineCompositor() { + FX_Free(m_pSrcPalette); + FX_Free(m_pCacheScanline); +} +FX_BOOL CFX_ScanlineCompositor::Init(FXDIB_Format dest_format, + FXDIB_Format src_format, + int32_t width, + FX_DWORD* pSrcPalette, + FX_DWORD mask_color, + int blend_type, + FX_BOOL bClip, + FX_BOOL bRgbByteOrder, + int alpha_flag, + void* pIccTransform) { + m_SrcFormat = src_format; + m_DestFormat = dest_format; + m_BlendType = blend_type; + m_bRgbByteOrder = bRgbByteOrder; + ICodec_IccModule* pIccModule = NULL; + if (CFX_GEModule::Get()->GetCodecModule()) { + pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + } + if (!pIccModule) { + pIccTransform = NULL; + } + m_pIccTransform = pIccTransform; + if ((dest_format & 0xff) == 1) { + return FALSE; + } + if (m_SrcFormat == FXDIB_1bppMask || m_SrcFormat == FXDIB_8bppMask) { + return _ScanlineCompositor_InitSourceMask( + dest_format, alpha_flag, mask_color, m_MaskAlpha, m_MaskRed, + m_MaskGreen, m_MaskBlue, m_MaskBlack, pIccModule, pIccTransform); + } + if (!pIccTransform && (~src_format & 0x0400) && (dest_format & 0x0400)) { + return FALSE; + } + if ((m_SrcFormat & 0xff) <= 8) { + if (dest_format == FXDIB_8bppMask) { + return TRUE; + } + _ScanlineCompositor_InitSourcePalette(src_format, dest_format, + m_pSrcPalette, pSrcPalette, + pIccModule, pIccTransform); + m_Transparency = + (dest_format == FXDIB_Argb ? 1 : 0) + (dest_format & 0x0200 ? 2 : 0) + + (dest_format & 0x0400 ? 4 : 0) + ((src_format & 0xff) == 1 ? 8 : 0); + return TRUE; + } + m_Transparency = (src_format & 0x0200 ? 0 : 1) + + (dest_format & 0x0200 ? 0 : 2) + + (blend_type == FXDIB_BLEND_NORMAL ? 4 : 0) + + (bClip ? 8 : 0) + (src_format & 0x0400 ? 16 : 0) + + (dest_format & 0x0400 ? 32 : 0) + (pIccTransform ? 64 : 0); + return TRUE; +} +void CFX_ScanlineCompositor::CompositeRgbBitmapLine( + uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + const uint8_t* clip_scan, + const uint8_t* src_extra_alpha, + uint8_t* dst_extra_alpha) { + int src_Bpp = (m_SrcFormat & 0xff) >> 3; + int dest_Bpp = (m_DestFormat & 0xff) >> 3; + if (m_bRgbByteOrder) { + switch (m_Transparency) { + case 0: + case 4: + case 8: + case 12: + _CompositeRow_Argb2Argb_RgbByteOrder(dest_scan, src_scan, width, + m_BlendType, clip_scan); + break; + case 1: + _CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder( + dest_scan, src_scan, width, m_BlendType, src_Bpp); + break; + case 2: + case 10: + _CompositeRow_Argb2Rgb_Blend_RgbByteOrder( + dest_scan, src_scan, width, m_BlendType, dest_Bpp, clip_scan); + break; + case 3: + _CompositeRow_Rgb2Rgb_Blend_NoClip_RgbByteOrder( + dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp); + break; + case 5: + _CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(dest_scan, src_scan, + width, src_Bpp); + break; + case 6: + case 14: + _CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(dest_scan, src_scan, width, + dest_Bpp, clip_scan); + break; + case 7: + _CompositeRow_Rgb2Rgb_NoBlend_NoClip_RgbByteOrder( + dest_scan, src_scan, width, dest_Bpp, src_Bpp); + break; + case 9: + _CompositeRow_Rgb2Argb_Blend_Clip_RgbByteOrder( + dest_scan, src_scan, width, m_BlendType, src_Bpp, clip_scan); + break; + case 11: + _CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder( + dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp, + clip_scan); + break; + case 13: + _CompositeRow_Rgb2Argb_NoBlend_Clip_RgbByteOrder( + dest_scan, src_scan, width, src_Bpp, clip_scan); + break; + case 15: + _CompositeRow_Rgb2Rgb_NoBlend_Clip_RgbByteOrder( + dest_scan, src_scan, width, dest_Bpp, src_Bpp, clip_scan); + break; + } + return; + } + if (m_DestFormat == FXDIB_8bppMask) { + if (m_SrcFormat & 0x0200) { + if (m_SrcFormat == FXDIB_Argb) { + _CompositeRow_Argb2Mask(dest_scan, src_scan, width, clip_scan); + } else { + _CompositeRow_Rgba2Mask(dest_scan, src_extra_alpha, width, clip_scan); + } + } else { + _CompositeRow_Rgb2Mask(dest_scan, src_scan, width, clip_scan); + } + } else if ((m_DestFormat & 0xff) == 8) { + if (m_DestFormat & 0x0400) { + for (int i = 0; i < width; i++) { + *dest_scan = ~*dest_scan; + dest_scan++; + } + } + if (m_SrcFormat & 0x0200) { + if (m_DestFormat & 0x0200) { + _CompositeRow_Argb2Graya(dest_scan, src_scan, width, m_BlendType, + clip_scan, src_extra_alpha, dst_extra_alpha, + m_pIccTransform); + } else { + _CompositeRow_Argb2Gray(dest_scan, src_scan, width, m_BlendType, + clip_scan, src_extra_alpha, m_pIccTransform); + } + } else { + if (m_DestFormat & 0x0200) { + _CompositeRow_Rgb2Graya(dest_scan, src_scan, src_Bpp, width, + m_BlendType, clip_scan, dst_extra_alpha, + m_pIccTransform); + } else { + _CompositeRow_Rgb2Gray(dest_scan, src_scan, src_Bpp, width, m_BlendType, + clip_scan, m_pIccTransform); + } + } + if (m_DestFormat & 0x0400) { + for (int i = 0; i < width; i++) { + *dest_scan = ~*dest_scan; + dest_scan++; + } + } + } else { + int dest_Size = width * dest_Bpp + 4; + if (dest_Size > m_CacheSize) { + m_pCacheScanline = FX_Realloc(uint8_t, m_pCacheScanline, dest_Size); + if (!m_pCacheScanline) { + return; + } + m_CacheSize = dest_Size; + } + switch (m_Transparency) { + case 0: + case 4: + case 8: + case 4 + 8: { + _CompositeRow_Argb2Argb(dest_scan, src_scan, width, m_BlendType, + clip_scan, dst_extra_alpha, src_extra_alpha); + } break; + case 64: + case 4 + 64: + case 8 + 64: + case 4 + 8 + 64: { + _CompositeRow_Argb2Argb_Transform( + dest_scan, src_scan, width, m_BlendType, clip_scan, dst_extra_alpha, + src_extra_alpha, m_pCacheScanline, m_pIccTransform); + } break; + case 1: + _CompositeRow_Rgb2Argb_Blend_NoClip( + dest_scan, src_scan, width, m_BlendType, src_Bpp, dst_extra_alpha); + break; + case 1 + 64: + _CompositeRow_Rgb2Argb_Blend_NoClip_Transform( + dest_scan, src_scan, width, m_BlendType, src_Bpp, dst_extra_alpha, + m_pCacheScanline, m_pIccTransform); + break; + case 1 + 8: + _CompositeRow_Rgb2Argb_Blend_Clip(dest_scan, src_scan, width, + m_BlendType, src_Bpp, clip_scan, + dst_extra_alpha); + break; + case 1 + 8 + 64: + _CompositeRow_Rgb2Argb_Blend_Clip_Transform( + dest_scan, src_scan, width, m_BlendType, src_Bpp, clip_scan, + dst_extra_alpha, m_pCacheScanline, m_pIccTransform); + break; + case 1 + 4: + _CompositeRow_Rgb2Argb_NoBlend_NoClip(dest_scan, src_scan, width, + src_Bpp, dst_extra_alpha); + break; + case 1 + 4 + 64: + _CompositeRow_Rgb2Argb_NoBlend_NoClip_Transform( + dest_scan, src_scan, width, src_Bpp, dst_extra_alpha, + m_pCacheScanline, m_pIccTransform); + break; + case 1 + 4 + 8: + _CompositeRow_Rgb2Argb_NoBlend_Clip(dest_scan, src_scan, width, src_Bpp, + clip_scan, dst_extra_alpha); + break; + case 1 + 4 + 8 + 64: + _CompositeRow_Rgb2Argb_NoBlend_Clip_Transform( + dest_scan, src_scan, width, src_Bpp, clip_scan, dst_extra_alpha, + m_pCacheScanline, m_pIccTransform); + break; + case 2: + case 2 + 8: + _CompositeRow_Argb2Rgb_Blend(dest_scan, src_scan, width, m_BlendType, + dest_Bpp, clip_scan, src_extra_alpha); + break; + case 2 + 64: + case 2 + 8 + 64: + _CompositeRow_Argb2Rgb_Blend_Transform( + dest_scan, src_scan, width, m_BlendType, dest_Bpp, clip_scan, + src_extra_alpha, m_pCacheScanline, m_pIccTransform); + break; + case 2 + 4: + case 2 + 4 + 8: + _CompositeRow_Argb2Rgb_NoBlend(dest_scan, src_scan, width, dest_Bpp, + clip_scan, src_extra_alpha); + break; + case 2 + 4 + 64: + case 2 + 4 + 8 + 64: + _CompositeRow_Argb2Rgb_NoBlend_Transform( + dest_scan, src_scan, width, dest_Bpp, clip_scan, src_extra_alpha, + m_pCacheScanline, m_pIccTransform); + break; + case 1 + 2: + _CompositeRow_Rgb2Rgb_Blend_NoClip(dest_scan, src_scan, width, + m_BlendType, dest_Bpp, src_Bpp); + break; + case 1 + 2 + 64: + _CompositeRow_Rgb2Rgb_Blend_NoClip_Transform( + dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp, + m_pCacheScanline, m_pIccTransform); + break; + case 1 + 2 + 8: + _CompositeRow_Rgb2Rgb_Blend_Clip(dest_scan, src_scan, width, + m_BlendType, dest_Bpp, src_Bpp, + clip_scan); + break; + case 1 + 2 + 8 + 64: + _CompositeRow_Rgb2Rgb_Blend_Clip_Transform( + dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp, + clip_scan, m_pCacheScanline, m_pIccTransform); + break; + case 1 + 2 + 4: + _CompositeRow_Rgb2Rgb_NoBlend_NoClip(dest_scan, src_scan, width, + dest_Bpp, src_Bpp); + break; + case 1 + 2 + 4 + 64: + _CompositeRow_Rgb2Rgb_NoBlend_NoClip_Transform( + dest_scan, src_scan, width, dest_Bpp, src_Bpp, m_pCacheScanline, + m_pIccTransform); + break; + case 1 + 2 + 4 + 8: + _CompositeRow_Rgb2Rgb_NoBlend_Clip(dest_scan, src_scan, width, dest_Bpp, + src_Bpp, clip_scan); + break; + case 1 + 2 + 4 + 8 + 64: + _CompositeRow_Rgb2Rgb_NoBlend_Clip_Transform( + dest_scan, src_scan, width, dest_Bpp, src_Bpp, clip_scan, + m_pCacheScanline, m_pIccTransform); + break; + } + } +} +void CFX_ScanlineCompositor::CompositePalBitmapLine( + uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + int width, + const uint8_t* clip_scan, + const uint8_t* src_extra_alpha, + uint8_t* dst_extra_alpha) { + if (m_bRgbByteOrder) { + if (m_SrcFormat == FXDIB_1bppRgb) { + if (m_DestFormat == FXDIB_8bppRgb) { + return; + } + if (m_DestFormat == FXDIB_Argb) { + _CompositeRow_1bppRgb2Argb_NoBlend_RgbByteOrder( + dest_scan, src_scan, src_left, width, m_pSrcPalette, clip_scan); + } else { + _CompositeRow_1bppRgb2Rgb_NoBlend_RgbByteOrder( + dest_scan, src_scan, src_left, m_pSrcPalette, width, + (m_DestFormat & 0xff) >> 3, clip_scan); + } + } else { + if (m_DestFormat == FXDIB_8bppRgb) { + return; + } + if (m_DestFormat == FXDIB_Argb) { + _CompositeRow_8bppRgb2Argb_NoBlend_RgbByteOrder( + dest_scan, src_scan, width, m_pSrcPalette, clip_scan); + } else { + _CompositeRow_8bppRgb2Rgb_NoBlend_RgbByteOrder( + dest_scan, src_scan, m_pSrcPalette, width, + (m_DestFormat & 0xff) >> 3, clip_scan); + } + } + return; + } + if (m_DestFormat == FXDIB_8bppMask) { + _CompositeRow_Rgb2Mask(dest_scan, src_scan, width, clip_scan); + return; + } + if ((m_DestFormat & 0xff) == 8) { + if (m_Transparency & 8) { + if (m_DestFormat & 0x0200) { + _CompositeRow_1bppPal2Graya(dest_scan, src_scan, src_left, + (const uint8_t*)m_pSrcPalette, width, + m_BlendType, clip_scan, dst_extra_alpha); + } else { + _CompositeRow_1bppPal2Gray(dest_scan, src_scan, src_left, + (const uint8_t*)m_pSrcPalette, width, + m_BlendType, clip_scan); + } + } else { + if (m_DestFormat & 0x0200) + _CompositeRow_8bppPal2Graya( + dest_scan, src_scan, (const uint8_t*)m_pSrcPalette, width, + m_BlendType, clip_scan, dst_extra_alpha, src_extra_alpha); + else + _CompositeRow_8bppPal2Gray(dest_scan, src_scan, + (const uint8_t*)m_pSrcPalette, width, + m_BlendType, clip_scan, src_extra_alpha); + } + } else { + switch (m_Transparency) { + case 1 + 2: + _CompositeRow_8bppRgb2Argb_NoBlend(dest_scan, src_scan, width, + m_pSrcPalette, clip_scan, + src_extra_alpha); + break; + case 1 + 2 + 8: + _CompositeRow_1bppRgb2Argb_NoBlend(dest_scan, src_scan, src_left, width, + m_pSrcPalette, clip_scan); + break; + case 0: + _CompositeRow_8bppRgb2Rgb_NoBlend(dest_scan, src_scan, m_pSrcPalette, + width, (m_DestFormat & 0xff) >> 3, + clip_scan, src_extra_alpha); + break; + case 0 + 8: + _CompositeRow_1bppRgb2Rgb_NoBlend( + dest_scan, src_scan, src_left, m_pSrcPalette, width, + (m_DestFormat & 0xff) >> 3, clip_scan); + break; + case 0 + 2: + _CompositeRow_8bppRgb2Rgb_NoBlend(dest_scan, src_scan, m_pSrcPalette, + width, (m_DestFormat & 0xff) >> 3, + clip_scan, src_extra_alpha); + break; + case 0 + 2 + 8: + _CompositeRow_1bppRgb2Rgba_NoBlend(dest_scan, src_scan, src_left, width, + m_pSrcPalette, clip_scan, + dst_extra_alpha); + break; + break; + } + } +} +void CFX_ScanlineCompositor::CompositeByteMaskLine(uint8_t* dest_scan, + const uint8_t* src_scan, + int width, + const uint8_t* clip_scan, + uint8_t* dst_extra_alpha) { + if (m_DestFormat == FXDIB_8bppMask) { + _CompositeRow_ByteMask2Mask(dest_scan, src_scan, m_MaskAlpha, width, + clip_scan); + } else if ((m_DestFormat & 0xff) == 8) { + if (m_DestFormat & 0x0200) { + _CompositeRow_ByteMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + width, clip_scan, dst_extra_alpha); + } else { + _CompositeRow_ByteMask2Gray(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + width, clip_scan); + } + } else if (m_bRgbByteOrder) { + if (m_DestFormat == FXDIB_Argb) { + _CompositeRow_ByteMask2Argb_RgbByteOrder( + dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, + width, m_BlendType, clip_scan); + } else { + _CompositeRow_ByteMask2Rgb_RgbByteOrder( + dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, + width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan); + } + return; + } else if (m_DestFormat == FXDIB_Argb) { + _CompositeRow_ByteMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + m_MaskGreen, m_MaskBlue, width, m_BlendType, + clip_scan); + } else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32) { + _CompositeRow_ByteMask2Rgb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + m_MaskGreen, m_MaskBlue, width, m_BlendType, + (m_DestFormat & 0xff) >> 3, clip_scan); + } else if (m_DestFormat == FXDIB_Rgba) { + _CompositeRow_ByteMask2Rgba(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + m_MaskGreen, m_MaskBlue, width, m_BlendType, + clip_scan, dst_extra_alpha); + } +} +void CFX_ScanlineCompositor::CompositeBitMaskLine(uint8_t* dest_scan, + const uint8_t* src_scan, + int src_left, + int width, + const uint8_t* clip_scan, + uint8_t* dst_extra_alpha) { + if (m_DestFormat == FXDIB_8bppMask) { + _CompositeRow_BitMask2Mask(dest_scan, src_scan, m_MaskAlpha, src_left, + width, clip_scan); + } else if ((m_DestFormat & 0xff) == 8) { + if (m_DestFormat & 0x0200) { + _CompositeRow_BitMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + src_left, width, clip_scan, dst_extra_alpha); + } else { + _CompositeRow_BitMask2Gray(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + src_left, width, clip_scan); + } + } else if (m_bRgbByteOrder) { + if (m_DestFormat == FXDIB_Argb) { + _CompositeRow_BitMask2Argb_RgbByteOrder( + dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, + src_left, width, m_BlendType, clip_scan); + } else { + _CompositeRow_BitMask2Rgb_RgbByteOrder( + dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, + src_left, width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan); + } + return; + } else if (m_DestFormat == FXDIB_Argb) { + _CompositeRow_BitMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, + m_MaskGreen, m_MaskBlue, src_left, width, + m_BlendType, clip_scan); + } else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32) { + _CompositeRow_BitMask2Rgb( + dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, + src_left, width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan); + } +} + +FX_BOOL CFX_DIBitmap::CompositeBitmap(int dest_left, + int dest_top, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + int blend_type, + const CFX_ClipRgn* pClipRgn, + FX_BOOL bRgbByteOrder, + void* pIccTransform) { + if (!m_pBuffer) { + return FALSE; + } + ASSERT(!pSrcBitmap->IsAlphaMask()); + ASSERT(m_bpp >= 8); + if (pSrcBitmap->IsAlphaMask() || m_bpp < 8) { + return FALSE; + } + GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetWidth(), + pSrcBitmap->GetHeight(), src_left, src_top, pClipRgn); + if (width == 0 || height == 0) { + return TRUE; + } + const CFX_DIBitmap* pClipMask = NULL; + FX_RECT clip_box; + if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { + ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); + pClipMask = pClipRgn->GetMask(); + clip_box = pClipRgn->GetBox(); + } + CFX_ScanlineCompositor compositor; + if (!compositor.Init(GetFormat(), pSrcBitmap->GetFormat(), width, + pSrcBitmap->GetPalette(), 0, blend_type, + pClipMask != NULL, bRgbByteOrder, 0, pIccTransform)) { + return FALSE; + } + int dest_Bpp = m_bpp / 8; + int src_Bpp = pSrcBitmap->GetBPP() / 8; + FX_BOOL bRgb = src_Bpp > 1 && !pSrcBitmap->IsCmykImage(); + CFX_DIBitmap* pSrcAlphaMask = pSrcBitmap->m_pAlphaMask; + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = + m_pBuffer + (dest_top + row) * m_Pitch + dest_left * dest_Bpp; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * src_Bpp; + const uint8_t* src_scan_extra_alpha = + pSrcAlphaMask ? pSrcAlphaMask->GetScanline(src_top + row) + src_left + : NULL; + uint8_t* dst_scan_extra_alpha = + m_pAlphaMask + ? (uint8_t*)m_pAlphaMask->GetScanline(dest_top + row) + dest_left + : NULL; + const uint8_t* clip_scan = NULL; + if (pClipMask) { + clip_scan = pClipMask->m_pBuffer + + (dest_top + row - clip_box.top) * pClipMask->m_Pitch + + (dest_left - clip_box.left); + } + if (bRgb) { + compositor.CompositeRgbBitmapLine(dest_scan, src_scan, width, clip_scan, + src_scan_extra_alpha, + dst_scan_extra_alpha); + } else { + compositor.CompositePalBitmapLine(dest_scan, src_scan, src_left, width, + clip_scan, src_scan_extra_alpha, + dst_scan_extra_alpha); + } + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::CompositeMask(int dest_left, + int dest_top, + int width, + int height, + const CFX_DIBSource* pMask, + FX_DWORD color, + int src_left, + int src_top, + int blend_type, + const CFX_ClipRgn* pClipRgn, + FX_BOOL bRgbByteOrder, + int alpha_flag, + void* pIccTransform) { + if (!m_pBuffer) { + return FALSE; + } + ASSERT(pMask->IsAlphaMask()); + ASSERT(m_bpp >= 8); + if (!pMask->IsAlphaMask() || m_bpp < 8) { + return FALSE; + } + GetOverlapRect(dest_left, dest_top, width, height, pMask->GetWidth(), + pMask->GetHeight(), src_left, src_top, pClipRgn); + if (width == 0 || height == 0) { + return TRUE; + } + int src_alpha = + (uint8_t)(alpha_flag >> 8) ? (alpha_flag & 0xff) : FXARGB_A(color); + if (src_alpha == 0) { + return TRUE; + } + const CFX_DIBitmap* pClipMask = NULL; + FX_RECT clip_box; + if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { + ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); + pClipMask = pClipRgn->GetMask(); + clip_box = pClipRgn->GetBox(); + } + int src_bpp = pMask->GetBPP(); + int Bpp = GetBPP() / 8; + CFX_ScanlineCompositor compositor; + if (!compositor.Init(GetFormat(), pMask->GetFormat(), width, NULL, color, + blend_type, pClipMask != NULL, bRgbByteOrder, alpha_flag, + pIccTransform)) { + return FALSE; + } + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = + m_pBuffer + (dest_top + row) * m_Pitch + dest_left * Bpp; + const uint8_t* src_scan = pMask->GetScanline(src_top + row); + uint8_t* dst_scan_extra_alpha = + m_pAlphaMask + ? (uint8_t*)m_pAlphaMask->GetScanline(dest_top + row) + dest_left + : NULL; + const uint8_t* clip_scan = NULL; + if (pClipMask) { + clip_scan = pClipMask->m_pBuffer + + (dest_top + row - clip_box.top) * pClipMask->m_Pitch + + (dest_left - clip_box.left); + } + if (src_bpp == 1) { + compositor.CompositeBitMaskLine(dest_scan, src_scan, src_left, width, + clip_scan, dst_scan_extra_alpha); + } else { + compositor.CompositeByteMaskLine(dest_scan, src_scan + src_left, width, + clip_scan, dst_scan_extra_alpha); + } + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::CompositeRect(int left, + int top, + int width, + int height, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + if (!m_pBuffer) { + return FALSE; + } + int src_alpha = (alpha_flag >> 8) ? (alpha_flag & 0xff) : FXARGB_A(color); + if (src_alpha == 0) { + return TRUE; + } + FX_RECT rect(left, top, left + width, top + height); + rect.Intersect(0, 0, m_Width, m_Height); + if (rect.IsEmpty()) { + return TRUE; + } + width = rect.Width(); + FX_DWORD dst_color; + if (alpha_flag >> 8) { + dst_color = FXCMYK_TODIB(color); + } else { + dst_color = FXARGB_TODIB(color); + } + uint8_t* color_p = (uint8_t*)&dst_color; + if (m_bpp == 8) { + uint8_t gray = 255; + if (!IsAlphaMask()) { + if (pIccTransform && CFX_GEModule::Get()->GetCodecModule() && + CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, &gray, color_p, 1); + } else { + if (alpha_flag >> 8) { + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(color_p[0], color_p[1], color_p[2], color_p[3], r, + g, b); + gray = FXRGB2GRAY(r, g, b); + } else { + gray = (uint8_t)FXRGB2GRAY((int)color_p[2], color_p[1], color_p[0]); + } + } + if (IsCmykImage()) { + gray = ~gray; + } + } + for (int row = rect.top; row < rect.bottom; row++) { + uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left; + if (src_alpha == 255) { + FXSYS_memset(dest_scan, gray, width); + } else { + for (int col = 0; col < width; col++) { + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); + dest_scan++; + } + } + } + return TRUE; + } + if (m_bpp == 1) { + ASSERT(!IsCmykImage() && (uint8_t)(alpha_flag >> 8) == 0); + int left_shift = rect.left % 8; + int right_shift = rect.right % 8; + int width = rect.right / 8 - rect.left / 8; + int index = 0; + if (m_pPalette) { + for (int i = 0; i < 2; i++) { + if (m_pPalette[i] == color) { + index = i; + } + } + } else { + index = ((uint8_t)color == 0xff) ? 1 : 0; + } + for (int row = rect.top; row < rect.bottom; row++) { + uint8_t* dest_scan_top = (uint8_t*)GetScanline(row) + rect.left / 8; + uint8_t* dest_scan_top_r = (uint8_t*)GetScanline(row) + rect.right / 8; + uint8_t left_flag = *dest_scan_top & (255 << (8 - left_shift)); + uint8_t right_flag = *dest_scan_top_r & (255 >> right_shift); + if (width) { + FXSYS_memset(dest_scan_top + 1, index ? 255 : 0, width - 1); + if (!index) { + *dest_scan_top &= left_flag; + *dest_scan_top_r &= right_flag; + } else { + *dest_scan_top |= ~left_flag; + *dest_scan_top_r |= ~right_flag; + } + } else { + if (!index) { + *dest_scan_top &= left_flag | right_flag; + } else { + *dest_scan_top |= ~(left_flag | right_flag); + } + } + } + return TRUE; + } + ASSERT(m_bpp >= 24); + if (m_bpp < 24) { + return FALSE; + } + if (pIccTransform && CFX_GEModule::Get()->GetCodecModule()) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, color_p, color_p, 1); + } else { + if (alpha_flag >> 8 && !IsCmykImage()) { + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), + FXSYS_GetYValue(color), FXSYS_GetKValue(color), + color_p[2], color_p[1], color_p[0]); + } else if (!(alpha_flag >> 8) && IsCmykImage()) { + return FALSE; + } + } + if (!IsCmykImage()) { + color_p[3] = (uint8_t)src_alpha; + } + int Bpp = m_bpp / 8; + FX_BOOL bAlpha = HasAlpha(); + bool bArgb = GetFormat() == FXDIB_Argb; + if (src_alpha == 255) { + for (int row = rect.top; row < rect.bottom; row++) { + uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left * Bpp; + uint8_t* dest_scan_alpha = + m_pAlphaMask ? (uint8_t*)m_pAlphaMask->GetScanline(row) + rect.left + : NULL; + if (dest_scan_alpha) { + FXSYS_memset(dest_scan_alpha, 0xff, width); + } + if (Bpp == 4) { + FX_DWORD* scan = (FX_DWORD*)dest_scan; + for (int col = 0; col < width; col++) { + *scan++ = dst_color; + } + } else { + for (int col = 0; col < width; col++) { + *dest_scan++ = color_p[0]; + *dest_scan++ = color_p[1]; + *dest_scan++ = color_p[2]; + } + } + } + return TRUE; + } + for (int row = rect.top; row < rect.bottom; row++) { + uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left * Bpp; + if (bAlpha) { + if (bArgb) { + for (int col = 0; col < width; col++) { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, color_p[2], + color_p[1], color_p[0])); + dest_scan += 4; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + int alpha_ratio = src_alpha * 255 / dest_alpha; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[0], alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[1], alpha_ratio); + dest_scan++; + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[2], alpha_ratio); + dest_scan++; + *dest_scan++ = dest_alpha; + } + } else { + uint8_t* dest_scan_alpha = + (uint8_t*)m_pAlphaMask->GetScanline(row) + rect.left; + for (int col = 0; col < width; col++) { + uint8_t back_alpha = *dest_scan_alpha; + if (back_alpha == 0) { + *dest_scan_alpha++ = src_alpha; + FXSYS_memcpy(dest_scan, color_p, Bpp); + dest_scan += Bpp; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha - back_alpha * src_alpha / 255; + *dest_scan_alpha++ = dest_alpha; + int alpha_ratio = src_alpha * 255 / dest_alpha; + for (int comps = 0; comps < Bpp; comps++) { + *dest_scan = + FXDIB_ALPHA_MERGE(*dest_scan, color_p[comps], alpha_ratio); + dest_scan++; + } + } + } + } else { + for (int col = 0; col < width; col++) { + for (int comps = 0; comps < Bpp; comps++) { + if (comps == 3) { + *dest_scan++ = 255; + continue; + } + *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[comps], src_alpha); + dest_scan++; + } + } + } + } + return TRUE; +} +CFX_BitmapComposer::CFX_BitmapComposer() { + m_pScanlineV = NULL; + m_pScanlineAlphaV = NULL; + m_pClipScanV = NULL; + m_pAddClipScan = NULL; + m_bRgbByteOrder = FALSE; + m_BlendType = FXDIB_BLEND_NORMAL; +} +CFX_BitmapComposer::~CFX_BitmapComposer() { + FX_Free(m_pScanlineV); + FX_Free(m_pScanlineAlphaV); + FX_Free(m_pClipScanV); + FX_Free(m_pAddClipScan); +} +void CFX_BitmapComposer::Compose(CFX_DIBitmap* pDest, + const CFX_ClipRgn* pClipRgn, + int bitmap_alpha, + FX_DWORD mask_color, + FX_RECT& dest_rect, + FX_BOOL bVertical, + FX_BOOL bFlipX, + FX_BOOL bFlipY, + FX_BOOL bRgbByteOrder, + int alpha_flag, + void* pIccTransform, + int blend_type) { + m_pBitmap = pDest; + m_pClipRgn = pClipRgn; + m_DestLeft = dest_rect.left; + m_DestTop = dest_rect.top; + m_DestWidth = dest_rect.Width(); + m_DestHeight = dest_rect.Height(); + m_BitmapAlpha = bitmap_alpha; + m_MaskColor = mask_color; + m_pClipMask = NULL; + if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { + m_pClipMask = pClipRgn->GetMask(); + } + m_bVertical = bVertical; + m_bFlipX = bFlipX; + m_bFlipY = bFlipY; + m_AlphaFlag = alpha_flag; + m_pIccTransform = pIccTransform; + m_bRgbByteOrder = bRgbByteOrder; + m_BlendType = blend_type; +} +FX_BOOL CFX_BitmapComposer::SetInfo(int width, + int height, + FXDIB_Format src_format, + FX_DWORD* pSrcPalette) { + m_SrcFormat = src_format; + if (!m_Compositor.Init(m_pBitmap->GetFormat(), src_format, width, pSrcPalette, + m_MaskColor, FXDIB_BLEND_NORMAL, + m_pClipMask != NULL || (m_BitmapAlpha < 255), + m_bRgbByteOrder, m_AlphaFlag, m_pIccTransform)) { + return FALSE; + } + if (m_bVertical) { + m_pScanlineV = FX_Alloc(uint8_t, m_pBitmap->GetBPP() / 8 * width + 4); + m_pClipScanV = FX_Alloc(uint8_t, m_pBitmap->GetHeight()); + if (m_pBitmap->m_pAlphaMask) { + m_pScanlineAlphaV = FX_Alloc(uint8_t, width + 4); + } + } + if (m_BitmapAlpha < 255) { + m_pAddClipScan = FX_Alloc( + uint8_t, m_bVertical ? m_pBitmap->GetHeight() : m_pBitmap->GetWidth()); + } + return TRUE; +} +void CFX_BitmapComposer::DoCompose(uint8_t* dest_scan, + const uint8_t* src_scan, + int dest_width, + const uint8_t* clip_scan, + const uint8_t* src_extra_alpha, + uint8_t* dst_extra_alpha) { + if (m_BitmapAlpha < 255) { + if (clip_scan) { + for (int i = 0; i < dest_width; i++) { + m_pAddClipScan[i] = clip_scan[i] * m_BitmapAlpha / 255; + } + } else { + FXSYS_memset(m_pAddClipScan, m_BitmapAlpha, dest_width); + } + clip_scan = m_pAddClipScan; + } + if (m_SrcFormat == FXDIB_8bppMask) { + m_Compositor.CompositeByteMaskLine(dest_scan, src_scan, dest_width, + clip_scan, dst_extra_alpha); + } else if ((m_SrcFormat & 0xff) == 8) { + m_Compositor.CompositePalBitmapLine(dest_scan, src_scan, 0, dest_width, + clip_scan, src_extra_alpha, + dst_extra_alpha); + } else { + m_Compositor.CompositeRgbBitmapLine(dest_scan, src_scan, dest_width, + clip_scan, src_extra_alpha, + dst_extra_alpha); + } +} +void CFX_BitmapComposer::ComposeScanline(int line, + const uint8_t* scanline, + const uint8_t* scan_extra_alpha) { + if (m_bVertical) { + ComposeScanlineV(line, scanline, scan_extra_alpha); + return; + } + const uint8_t* clip_scan = NULL; + if (m_pClipMask) + clip_scan = m_pClipMask->GetBuffer() + + (m_DestTop + line - m_pClipRgn->GetBox().top) * + m_pClipMask->GetPitch() + + (m_DestLeft - m_pClipRgn->GetBox().left); + uint8_t* dest_scan = (uint8_t*)m_pBitmap->GetScanline(line + m_DestTop) + + m_DestLeft * m_pBitmap->GetBPP() / 8; + uint8_t* dest_alpha_scan = + m_pBitmap->m_pAlphaMask + ? (uint8_t*)m_pBitmap->m_pAlphaMask->GetScanline(line + m_DestTop) + + m_DestLeft + : NULL; + DoCompose(dest_scan, scanline, m_DestWidth, clip_scan, scan_extra_alpha, + dest_alpha_scan); +} +void CFX_BitmapComposer::ComposeScanlineV(int line, + const uint8_t* scanline, + const uint8_t* scan_extra_alpha) { + int i; + int Bpp = m_pBitmap->GetBPP() / 8; + int dest_pitch = m_pBitmap->GetPitch(); + int dest_alpha_pitch = + m_pBitmap->m_pAlphaMask ? m_pBitmap->m_pAlphaMask->GetPitch() : 0; + int dest_x = m_DestLeft + (m_bFlipX ? (m_DestWidth - line - 1) : line); + uint8_t* dest_buf = + m_pBitmap->GetBuffer() + dest_x * Bpp + m_DestTop * dest_pitch; + uint8_t* dest_alpha_buf = m_pBitmap->m_pAlphaMask + ? m_pBitmap->m_pAlphaMask->GetBuffer() + + dest_x + m_DestTop * dest_alpha_pitch + : NULL; + if (m_bFlipY) { + dest_buf += dest_pitch * (m_DestHeight - 1); + dest_alpha_buf += dest_alpha_pitch * (m_DestHeight - 1); + } + int y_step = dest_pitch; + int y_alpha_step = dest_alpha_pitch; + if (m_bFlipY) { + y_step = -y_step; + y_alpha_step = -y_alpha_step; + } + uint8_t* src_scan = m_pScanlineV; + uint8_t* dest_scan = dest_buf; + for (i = 0; i < m_DestHeight; i++) { + for (int j = 0; j < Bpp; j++) { + *src_scan++ = dest_scan[j]; + } + dest_scan += y_step; + } + uint8_t* src_alpha_scan = m_pScanlineAlphaV; + uint8_t* dest_alpha_scan = dest_alpha_buf; + if (dest_alpha_scan) { + for (i = 0; i < m_DestHeight; i++) { + *src_alpha_scan++ = *dest_alpha_scan; + dest_alpha_scan += y_alpha_step; + } + } + uint8_t* clip_scan = NULL; + if (m_pClipMask) { + clip_scan = m_pClipScanV; + int clip_pitch = m_pClipMask->GetPitch(); + const uint8_t* src_clip = + m_pClipMask->GetBuffer() + + (m_DestTop - m_pClipRgn->GetBox().top) * clip_pitch + + (dest_x - m_pClipRgn->GetBox().left); + if (m_bFlipY) { + src_clip += clip_pitch * (m_DestHeight - 1); + clip_pitch = -clip_pitch; + } + for (i = 0; i < m_DestHeight; i++) { + clip_scan[i] = *src_clip; + src_clip += clip_pitch; + } + } + DoCompose(m_pScanlineV, scanline, m_DestHeight, clip_scan, scan_extra_alpha, + m_pScanlineAlphaV); + src_scan = m_pScanlineV; + dest_scan = dest_buf; + for (i = 0; i < m_DestHeight; i++) { + for (int j = 0; j < Bpp; j++) { + dest_scan[j] = *src_scan++; + } + dest_scan += y_step; + } + src_alpha_scan = m_pScanlineAlphaV; + dest_alpha_scan = dest_alpha_buf; + if (dest_alpha_scan) { + for (i = 0; i < m_DestHeight; i++) { + *dest_alpha_scan = *src_alpha_scan++; + dest_alpha_scan += y_alpha_step; + } + } +} diff --git a/core/fxge/dib/fx_dib_convert.cpp b/core/fxge/dib/fx_dib_convert.cpp new file mode 100644 index 0000000000..a1c18ae121 --- /dev/null +++ b/core/fxge/dib/fx_dib_convert.cpp @@ -0,0 +1,1227 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_dib.h" +#include "core/include/fxge/fx_ge.h" + +const FX_DWORD g_dwWinPalette[256] = { + 0xff000000, 0xff800000, 0xff008000, 0xff808000, 0xff000080, 0xff800080, + 0xff008080, 0xff808080, 0xffC0DCC0, 0xffA6CAF0, 0xff2A3FAA, 0xff2A3FFF, + 0xff2A5F00, 0xff2A5F55, 0xff2A5FAA, 0xff2A5FFF, 0xff2A7F00, 0xff2A7F55, + 0xff2A7FAA, 0xff2A7FFF, 0xff2A9F00, 0xff2A9F55, 0xff2A9FAA, 0xff2A9FFF, + 0xff2ABF00, 0xff2ABF55, 0xff2ABFAA, 0xff2ABFFF, 0xff2ADF00, 0xff2ADF55, + 0xff2ADFAA, 0xff2ADFFF, 0xff2AFF00, 0xff2AFF55, 0xff2AFFAA, 0xff2AFFFF, + 0xff550000, 0xff550055, 0xff5500AA, 0xff5500FF, 0xff551F00, 0xff551F55, + 0xff551FAA, 0xff551FFF, 0xff553F00, 0xff553F55, 0xff553FAA, 0xff553FFF, + 0xff555F00, 0xff555F55, 0xff555FAA, 0xff555FFF, 0xff557F00, 0xff557F55, + 0xff557FAA, 0xff557FFF, 0xff559F00, 0xff559F55, 0xff559FAA, 0xff559FFF, + 0xff55BF00, 0xff55BF55, 0xff55BFAA, 0xff55BFFF, 0xff55DF00, 0xff55DF55, + 0xff55DFAA, 0xff55DFFF, 0xff55FF00, 0xff55FF55, 0xff55FFAA, 0xff55FFFF, + 0xff7F0000, 0xff7F0055, 0xff7F00AA, 0xff7F00FF, 0xff7F1F00, 0xff7F1F55, + 0xff7F1FAA, 0xff7F1FFF, 0xff7F3F00, 0xff7F3F55, 0xff7F3FAA, 0xff7F3FFF, + 0xff7F5F00, 0xff7F5F55, 0xff7F5FAA, 0xff7F5FFF, 0xff7F7F00, 0xff7F7F55, + 0xff7F7FAA, 0xff7F7FFF, 0xff7F9F00, 0xff7F9F55, 0xff7F9FAA, 0xff7F9FFF, + 0xff7FBF00, 0xff7FBF55, 0xff7FBFAA, 0xff7FBFFF, 0xff7FDF00, 0xff7FDF55, + 0xff7FDFAA, 0xff7FDFFF, 0xff00FF7F, 0xff7FFF55, 0xff7FFFAA, 0xff7FFFFF, + 0xffAA0000, 0xffAA0055, 0xffAA00AA, 0xffAA00FF, 0xffAA1F00, 0xffAA1F55, + 0xffAA1FAA, 0xffAA1FFF, 0xffAA3F00, 0xffAA3F55, 0xffAA3FAA, 0xffAA3FFF, + 0xffAA5F00, 0xffAA5F55, 0xffAA5FAA, 0xffAA5FFF, 0xffAA7F00, 0xffAA7F55, + 0xffAA7FAA, 0xffAA7FFF, 0xffAA9F00, 0xffAA9F55, 0xffAA9FAA, 0xffAA9FFF, + 0xffAABF00, 0xffAABF55, 0xffAABFAA, 0xffAABFFF, 0xffAADF00, 0xffAADF55, + 0xffAADFAA, 0xffAADFFF, 0xffAAFF00, 0xffAAFF55, 0xffAAFFAA, 0xffAAFFFF, + 0xffD40000, 0xffD40055, 0xffD400AA, 0xffD400FF, 0xffD41F00, 0xffD41F55, + 0xffD41FAA, 0xffD41FFF, 0xffD43F00, 0xffD43F55, 0xffD43FAA, 0xffD43FFF, + 0xffD45F00, 0xffD45F55, 0xffD45FAA, 0xffD45FFF, 0xffD47F00, 0xffD47F55, + 0xffD47FAA, 0xffD4F7FF, 0xffD49F00, 0xffD49F55, 0xffD49FAA, 0xffD49FFF, + 0xffD4BF00, 0xffD4BF55, 0xffD4BFAA, 0xffD4BFFF, 0xffD4DF00, 0xffD4DF55, + 0xffD4DFAA, 0xffD4DFFF, 0xffD4FF00, 0xffD4FF55, 0xffD4FFAA, 0xffD4FFFF, + 0xffFF0055, 0xffFF00AA, 0xffFF1F00, 0xffFF1F55, 0xffFF1FAA, 0xffFF1FFF, + 0xffFF3F00, 0xffFF3F55, 0xffFF3FAA, 0xffFF3FFF, 0xffFF5F00, 0xffFF5F55, + 0xffFF5FAA, 0xffFF5FFF, 0xffFF7F00, 0xffFF7F55, 0xffFF7FAA, 0xffFF7FFF, + 0xffFF9F00, 0xffFF9F55, 0xffFF9FAA, 0xffFF9FFF, 0xffFFBF00, 0xffFFBF55, + 0xffFFBFAA, 0xffFFBFFF, 0xffFFDF00, 0xffFFDF55, 0xffFFDFAA, 0xffFFDFFF, + 0xffFFFF55, 0xffFFFFAA, 0xffCCCCFF, 0xffFFCCFF, 0xff33FFFF, 0xff66FFFF, + 0xff99FFFF, 0xffCCFFFF, 0xff007F00, 0xff007F55, 0xff007FAA, 0xff007FFF, + 0xff009F00, 0xff009F55, 0xff009FAA, 0xff009FFF, 0xff00BF00, 0xff00BF55, + 0xff00BFAA, 0xff00BFFF, 0xff00DF00, 0xff00DF55, 0xff00DFAA, 0xff00DFFF, + 0xff00FF55, 0xff00FFAA, 0xff2A0000, 0xff2A0055, 0xff2A00AA, 0xff2A00FF, + 0xff2A1F00, 0xff2A1F55, 0xff2A1FAA, 0xff2A1FFF, 0xff2A3F00, 0xff2A3F55, + 0xffFFFBF0, 0xffA0A0A4, 0xff808080, 0xffFF0000, 0xff00FF00, 0xffFF0000, + 0xff0000FF, 0xffFF00FF, 0xff00FFFF, 0xffFFFFFF}; +const FX_DWORD g_dwMacPalette[256] = { + 0xffFFFFFF, 0xffFFFFCC, 0xffFFFF99, 0xffFFFF66, 0xffFFFF33, 0xffFFFF00, + 0xffFFCCFF, 0xffFFCCCC, 0xffFFCC99, 0xffFFCC66, 0xffFFCC33, 0xffFFCC00, + 0xffFF99FF, 0xffFF99CC, 0xffFF9999, 0xffFF9966, 0xffFF9933, 0xffFF9900, + 0xffFF66FF, 0xffFF66CC, 0xffFF6699, 0xffFF6666, 0xffFF6633, 0xffFF6600, + 0xffFF33FF, 0xffFF33CC, 0xffFF3399, 0xffFF3366, 0xffFF3333, 0xffFF3300, + 0xffFF00FF, 0xffFF00CC, 0xffFF0099, 0xffFF0066, 0xffFF0033, 0xffFF0000, + 0xffCCFFFF, 0xffCCFFCC, 0xffCCFF99, 0xffCCFF66, 0xffCCFF33, 0xffCCFF00, + 0xffCCCCFF, 0xffCCCCCC, 0xffCCCC99, 0xffCCCC66, 0xffCCCC33, 0xffCCCC00, + 0xffCC99FF, 0xffCC99CC, 0xffCC9999, 0xffCC9966, 0xffCC9933, 0xffCC9900, + 0xffCC66FF, 0xffCC66CC, 0xffCC6699, 0xffCC6666, 0xffCC6633, 0xffCC6600, + 0xffCC33FF, 0xffCC33CC, 0xffCC3399, 0xffCC3366, 0xffCC3333, 0xffCC3300, + 0xffCC00FF, 0xffCC00CC, 0xffCC0099, 0xffCC0066, 0xffCC0033, 0xffCC0000, + 0xff99FFFF, 0xff99FFCC, 0xff99FF99, 0xff99FF66, 0xff99FF33, 0xff99FF00, + 0xff99CCFF, 0xff99CCCC, 0xff99CC99, 0xff99CC66, 0xff99CC33, 0xff99CC00, + 0xff9999FF, 0xff9999CC, 0xff999999, 0xff999966, 0xff999933, 0xff999900, + 0xff9966FF, 0xff9966CC, 0xff996699, 0xff996666, 0xff996633, 0xff996600, + 0xff9933FF, 0xff9933CC, 0xff993399, 0xff993366, 0xff993333, 0xff993300, + 0xff9900FF, 0xff9900CC, 0xff990099, 0xff990066, 0xff990033, 0xff990000, + 0xff66FFFF, 0xff66FFCC, 0xff66FF99, 0xff66FF66, 0xff66FF33, 0xff66FF00, + 0xff66CCFF, 0xff66CCCC, 0xff66CC99, 0xff66CC66, 0xff66CC33, 0xff66CC00, + 0xff6699FF, 0xff6699CC, 0xff669999, 0xff669966, 0xff669933, 0xff669900, + 0xff6666FF, 0xff6666CC, 0xff666699, 0xff666666, 0xff666633, 0xff666600, + 0xff6633FF, 0xff6633CC, 0xff663399, 0xff663366, 0xff663333, 0xff663300, + 0xff6600FF, 0xff6600CC, 0xff660099, 0xff660066, 0xff660033, 0xff660000, + 0xff33FFFF, 0xff33FFCC, 0xff33FF99, 0xff33FF66, 0xff33FF33, 0xff33FF00, + 0xff33CCFF, 0xff33CCCC, 0xff33CC99, 0xff33CC66, 0xff33CC33, 0xff33CC00, + 0xff3399FF, 0xff3399CC, 0xff339999, 0xff339966, 0xff339933, 0xff339900, + 0xff3366FF, 0xff3366CC, 0xff336699, 0xff336666, 0xff336633, 0xff336600, + 0xff3333FF, 0xff3333CC, 0xff333399, 0xff333366, 0xff333333, 0xff333300, + 0xff3300FF, 0xff3300CC, 0xff330099, 0xff330066, 0xff330033, 0xff330000, + 0xff00FFFF, 0xff00FFCC, 0xff00FF99, 0xff00FF66, 0xff00FF33, 0xff00FF00, + 0xff00CCFF, 0xff00CCCC, 0xff00CC99, 0xff00CC66, 0xff00CC33, 0xff00CC00, + 0xff0099FF, 0xff0099CC, 0xff009999, 0xff009966, 0xff009933, 0xff009900, + 0xff0066FF, 0xff0066CC, 0xff006699, 0xff006666, 0xff006633, 0xff006600, + 0xff0033FF, 0xff0033CC, 0xff003399, 0xff003366, 0xff003333, 0xff003300, + 0xff0000FF, 0xff0000CC, 0xff000099, 0xff000066, 0xff000033, 0xffEE0000, + 0xffDD0000, 0xffBB0000, 0xffAA0000, 0xff880000, 0xff770000, 0xff550000, + 0xff440000, 0xff220000, 0xff110000, 0xff00EE00, 0xff00DD00, 0xff00BB00, + 0xff00AA00, 0xff008800, 0xff007700, 0xff005500, 0xff004400, 0xff002200, + 0xff001100, 0xff0000EE, 0xff0000DD, 0xff0000BB, 0xff0000AA, 0xff000088, + 0xff000077, 0xff000055, 0xff000044, 0xff000022, 0xff000011, 0xffEEEEEE, + 0xffDDDDDD, 0xffBBBBBB, 0xffAAAAAA, 0xff888888, 0xff777777, 0xff555555, + 0xff444444, 0xff222222, 0xff111111, 0xff000000}; +class CFX_Palette { + public: + CFX_Palette(); + ~CFX_Palette(); + + public: + FX_BOOL BuildPalette(const CFX_DIBSource* pBitmap, int dwPaletteType); + FX_DWORD* GetPalette() const { return m_pPalette; } + + FX_DWORD* GetColorLut() const { return m_cLut; } + FX_DWORD* GetAmountLut() const { return m_aLut; } + int32_t Getlut() const { return m_lut; } + + protected: + FX_DWORD* m_pPalette; + FX_DWORD* m_cLut; + FX_DWORD* m_aLut; + int m_lut; +}; +int _Partition(FX_DWORD* alut, FX_DWORD* clut, int l, int r) { + FX_DWORD p_a = alut[l]; + FX_DWORD p_c = clut[l]; + while (l < r) { + while (l < r && alut[r] >= p_a) { + r--; + } + if (l < r) { + alut[l] = alut[r]; + clut[l++] = clut[r]; + } + while (l < r && alut[l] <= p_a) { + l++; + } + if (l < r) { + alut[r] = alut[l]; + clut[r--] = clut[l]; + } + } + alut[l] = p_a; + clut[l] = p_c; + return l; +} +void _Qsort(FX_DWORD* alut, FX_DWORD* clut, int l, int r) { + if (l < r) { + int pI = _Partition(alut, clut, l, r); + _Qsort(alut, clut, l, pI - 1); + _Qsort(alut, clut, pI + 1, r); + } +} +void _ColorDecode(FX_DWORD pal_v, uint8_t& r, uint8_t& g, uint8_t& b) { + r = (uint8_t)((pal_v & 0xf00) >> 4); + g = (uint8_t)(pal_v & 0x0f0); + b = (uint8_t)((pal_v & 0x00f) << 4); +} +void _Obtain_Pal(FX_DWORD* aLut, + FX_DWORD* cLut, + FX_DWORD* dest_pal, + int pal_type, + FX_DWORD* win_mac_pal, + FX_DWORD lut) { + int row, col; + FX_DWORD lut_1 = lut - 1; + if (pal_type == FXDIB_PALETTE_LOC) { + for (row = 0; row < 256; row++) { + int lut_offset = lut_1 - row; + if (lut_offset < 0) { + lut_offset += 256; + } + FX_DWORD color = cLut[lut_offset]; + uint8_t r, g, b; + _ColorDecode(color, r, g, b); + dest_pal[row] = ((FX_DWORD)r << 16) | ((FX_DWORD)g << 8) | b | 0xff000000; + aLut[lut_offset] = row; + } + } else { + for (row = 0; row < 256; row++) { + int lut_offset = lut_1 - row; + if (lut_offset < 0) { + lut_offset += 256; + } + uint8_t r, g, b; + _ColorDecode(cLut[lut_offset], r, g, b); + int error, min_error = 1000000; + int c_index = 0; + for (col = 0; col < 256; col++) { + FX_DWORD p_color = win_mac_pal[col]; + int d_r = r - (uint8_t)(p_color >> 16); + int d_g = g - (uint8_t)(p_color >> 8); + int d_b = b - (uint8_t)p_color; + error = d_r * d_r + d_g * d_g + d_b * d_b; + if (error < min_error) { + min_error = error; + c_index = col; + } + } + dest_pal[row] = win_mac_pal[c_index]; + aLut[lut_offset] = row; + } + } +} +CFX_Palette::CFX_Palette() { + m_pPalette = NULL; + m_cLut = NULL; + m_aLut = NULL; + m_lut = 0; +} +CFX_Palette::~CFX_Palette() { + FX_Free(m_pPalette); + FX_Free(m_cLut); + FX_Free(m_aLut); + m_lut = 0; +} +FX_BOOL CFX_Palette::BuildPalette(const CFX_DIBSource* pBitmap, int pal_type) { + if (!pBitmap) { + return FALSE; + } + FX_Free(m_pPalette); + m_pPalette = FX_Alloc(FX_DWORD, 256); + int bpp = pBitmap->GetBPP() / 8; + int width = pBitmap->GetWidth(); + int height = pBitmap->GetHeight(); + FX_Free(m_cLut); + m_cLut = NULL; + FX_Free(m_aLut); + m_aLut = NULL; + m_cLut = FX_Alloc(FX_DWORD, 4096); + m_aLut = FX_Alloc(FX_DWORD, 4096); + int row, col; + m_lut = 0; + for (row = 0; row < height; row++) { + uint8_t* scan_line = (uint8_t*)pBitmap->GetScanline(row); + for (col = 0; col < width; col++) { + uint8_t* src_port = scan_line + col * bpp; + FX_DWORD b = src_port[0] & 0xf0; + FX_DWORD g = src_port[1] & 0xf0; + FX_DWORD r = src_port[2] & 0xf0; + FX_DWORD index = (r << 4) + g + (b >> 4); + m_aLut[index]++; + } + } + for (row = 0; row < 4096; row++) { + if (m_aLut[row] != 0) { + m_aLut[m_lut] = m_aLut[row]; + m_cLut[m_lut] = row; + m_lut++; + } + } + _Qsort(m_aLut, m_cLut, 0, m_lut - 1); + FX_DWORD* win_mac_pal = NULL; + if (pal_type == FXDIB_PALETTE_WIN) { + win_mac_pal = (FX_DWORD*)g_dwWinPalette; + } else if (pal_type == FXDIB_PALETTE_MAC) { + win_mac_pal = (FX_DWORD*)g_dwMacPalette; + } + _Obtain_Pal(m_aLut, m_cLut, m_pPalette, pal_type, win_mac_pal, m_lut); + return TRUE; +} +FX_BOOL ConvertBuffer_1bppMask2Gray(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top) { + uint8_t set_gray, reset_gray; + set_gray = 0xff; + reset_gray = 0x00; + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + FXSYS_memset(dest_scan, reset_gray, width); + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); + for (int col = src_left; col < src_left + width; col++) { + if (src_scan[col / 8] & (1 << (7 - col % 8))) { + *dest_scan = set_gray; + } + dest_scan++; + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_8bppMask2Gray(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; + FXSYS_memcpy(dest_scan, src_scan, width); + } + return TRUE; +} +FX_BOOL ConvertBuffer_1bppPlt2Gray(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + FX_DWORD* src_plt = pSrcBitmap->GetPalette(); + uint8_t gray[2]; + if (pIccTransform) { + FX_DWORD plt[2]; + if (pSrcBitmap->IsCmykImage()) { + plt[0] = FXCMYK_TODIB(src_plt[0]); + plt[1] = FXCMYK_TODIB(src_plt[1]); + } else { + uint8_t* bgr_ptr = (uint8_t*)plt; + bgr_ptr[0] = FXARGB_B(src_plt[0]); + bgr_ptr[1] = FXARGB_G(src_plt[0]); + bgr_ptr[2] = FXARGB_R(src_plt[0]); + bgr_ptr[3] = FXARGB_B(src_plt[1]); + bgr_ptr[4] = FXARGB_G(src_plt[1]); + bgr_ptr[5] = FXARGB_R(src_plt[1]); + } + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, gray, (const uint8_t*)plt, 2); + } else { + uint8_t reset_r, reset_g, reset_b, set_r, set_g, set_b; + if (pSrcBitmap->IsCmykImage()) { + AdobeCMYK_to_sRGB1( + FXSYS_GetCValue(src_plt[0]), FXSYS_GetMValue(src_plt[0]), + FXSYS_GetYValue(src_plt[0]), FXSYS_GetKValue(src_plt[0]), reset_r, + reset_g, reset_b); + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(src_plt[1]), + FXSYS_GetMValue(src_plt[1]), + FXSYS_GetYValue(src_plt[1]), + FXSYS_GetKValue(src_plt[1]), set_r, set_g, set_b); + } else { + reset_r = FXARGB_R(src_plt[0]); + reset_g = FXARGB_G(src_plt[0]); + reset_b = FXARGB_B(src_plt[0]); + set_r = FXARGB_R(src_plt[1]); + set_g = FXARGB_G(src_plt[1]); + set_b = FXARGB_B(src_plt[1]); + } + gray[0] = FXRGB2GRAY(reset_r, reset_g, reset_b); + gray[1] = FXRGB2GRAY(set_r, set_g, set_b); + } + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + FXSYS_memset(dest_scan, gray[0], width); + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); + for (int col = src_left; col < src_left + width; col++) { + if (src_scan[col / 8] & (1 << (7 - col % 8))) { + *dest_scan = gray[1]; + } + dest_scan++; + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_8bppPlt2Gray(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + FX_DWORD* src_plt = pSrcBitmap->GetPalette(); + uint8_t gray[256]; + if (pIccTransform) { + FX_DWORD plt[256]; + if (pSrcBitmap->IsCmykImage()) { + for (int i = 0; i < 256; i++) { + plt[i] = FXCMYK_TODIB(src_plt[i]); + } + } else { + uint8_t* bgr_ptr = (uint8_t*)plt; + for (int i = 0; i < 256; i++) { + *bgr_ptr++ = FXARGB_B(src_plt[i]); + *bgr_ptr++ = FXARGB_G(src_plt[i]); + *bgr_ptr++ = FXARGB_R(src_plt[i]); + } + } + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, gray, (const uint8_t*)plt, + 256); + } else { + if (pSrcBitmap->IsCmykImage()) { + uint8_t r, g, b; + for (int i = 0; i < 256; i++) { + AdobeCMYK_to_sRGB1( + FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), + FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), r, g, b); + gray[i] = FXRGB2GRAY(r, g, b); + } + } else { + for (int i = 0; i < 256; i++) { + gray[i] = FXRGB2GRAY(FXARGB_R(src_plt[i]), FXARGB_G(src_plt[i]), + FXARGB_B(src_plt[i])); + } + } + } + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; + for (int col = 0; col < width; col++) { + *dest_scan++ = gray[*src_scan++]; + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_RgbOrCmyk2Gray(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + int Bpp = pSrcBitmap->GetBPP() / 8; + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + if (Bpp == 3 || pSrcBitmap->IsCmykImage()) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, + width); + } + } else { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * 4; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); + dest_scan++; + src_scan += 4; + } + } + } + } else { + if (pSrcBitmap->IsCmykImage()) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * 4; + for (int col = 0; col < width; col++) { + uint8_t r, g, b; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue((FX_DWORD)src_scan[0]), + FXSYS_GetMValue((FX_DWORD)src_scan[1]), + FXSYS_GetYValue((FX_DWORD)src_scan[2]), + FXSYS_GetKValue((FX_DWORD)src_scan[3]), r, g, b); + *dest_scan++ = FXRGB2GRAY(r, g, b); + src_scan += 4; + } + } + } else { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; + for (int col = 0; col < width; col++) { + *dest_scan++ = FXRGB2GRAY(src_scan[2], src_scan[1], src_scan[0]); + src_scan += Bpp; + } + } + } + } + return TRUE; +} +inline void ConvertBuffer_IndexCopy(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top) { + if (pSrcBitmap->GetBPP() == 1) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + FXSYS_memset(dest_scan, 0, width); + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); + for (int col = src_left; col < src_left + width; col++) { + if (src_scan[col / 8] & (1 << (7 - col % 8))) { + *dest_scan = 1; + } + dest_scan++; + } + } + } else { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left; + FXSYS_memcpy(dest_scan, src_scan, width); + } + } +} +FX_BOOL ConvertBuffer_Plt2PltRgb8(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + FX_DWORD* dst_plt, + void* pIccTransform) { + ConvertBuffer_IndexCopy(dest_buf, dest_pitch, width, height, pSrcBitmap, + src_left, src_top); + FX_DWORD* src_plt = pSrcBitmap->GetPalette(); + int plt_size = pSrcBitmap->GetPaletteSize(); + if (pIccTransform) { + FX_DWORD plt[256]; + uint8_t* bgr_ptr = (uint8_t*)plt; + if (pSrcBitmap->IsCmykImage()) { + for (int i = 0; i < plt_size; i++) { + plt[i] = FXCMYK_TODIB(src_plt[i]); + } + } else { + for (int i = 0; i < plt_size; i++) { + *bgr_ptr++ = FXARGB_B(src_plt[i]); + *bgr_ptr++ = FXARGB_G(src_plt[i]); + *bgr_ptr++ = FXARGB_R(src_plt[i]); + } + bgr_ptr = (uint8_t*)plt; + } + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)plt, + (const uint8_t*)plt, plt_size); + for (int i = 0; i < plt_size; i++) { + dst_plt[i] = FXARGB_MAKE(0xff, bgr_ptr[2], bgr_ptr[1], bgr_ptr[0]); + bgr_ptr += 3; + } + } else { + if (pSrcBitmap->IsCmykImage()) { + for (int i = 0; i < plt_size; i++) { + uint8_t r, g, b; + AdobeCMYK_to_sRGB1( + FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), + FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), r, g, b); + dst_plt[i] = FXARGB_MAKE(0xff, r, g, b); + } + } else { + FXSYS_memcpy(dst_plt, src_plt, plt_size * 4); + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_Rgb2PltRgb8_NoTransform(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + FX_DWORD* dst_plt) { + int bpp = pSrcBitmap->GetBPP() / 8; + int row, col; + CFX_Palette palette; + palette.BuildPalette(pSrcBitmap, FXDIB_PALETTE_LOC); + FX_DWORD* cLut = palette.GetColorLut(); + FX_DWORD* aLut = palette.GetAmountLut(); + if (!cLut || !aLut) { + return FALSE; + } + int lut = palette.Getlut(); + FX_DWORD* pPalette = palette.GetPalette(); + if (lut > 256) { + int err, min_err; + int lut_256 = lut - 256; + for (row = 0; row < lut_256; row++) { + min_err = 1000000; + uint8_t r, g, b; + _ColorDecode(cLut[row], r, g, b); + int clrindex = 0; + for (int col = 0; col < 256; col++) { + FX_DWORD p_color = *(pPalette + col); + int d_r = r - (uint8_t)(p_color >> 16); + int d_g = g - (uint8_t)(p_color >> 8); + int d_b = b - (uint8_t)(p_color); + err = d_r * d_r + d_g * d_g + d_b * d_b; + if (err < min_err) { + min_err = err; + clrindex = col; + } + } + aLut[row] = clrindex; + } + } + int32_t lut_1 = lut - 1; + for (row = 0; row < height; row++) { + uint8_t* src_scan = + (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left; + uint8_t* dest_scan = dest_buf + row * dest_pitch; + for (col = 0; col < width; col++) { + uint8_t* src_port = src_scan + col * bpp; + int r = src_port[2] & 0xf0; + int g = src_port[1] & 0xf0; + int b = src_port[0] & 0xf0; + FX_DWORD clrindex = (r << 4) + g + (b >> 4); + for (int i = lut_1; i >= 0; i--) + if (clrindex == cLut[i]) { + *(dest_scan + col) = (uint8_t)(aLut[i]); + break; + } + } + } + FXSYS_memcpy(dst_plt, pPalette, sizeof(FX_DWORD) * 256); + return TRUE; +} +FX_BOOL ConvertBuffer_Rgb2PltRgb8(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + FX_DWORD* dst_plt, + void* pIccTransform) { + FX_BOOL ret = ConvertBuffer_Rgb2PltRgb8_NoTransform( + dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top, + dst_plt); + if (ret && pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + for (int i = 0; i < 256; i++) { + FX_ARGB* plt = dst_plt + i; + FX_ARGB plt_entry = FXARGB_TODIB(*plt); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&plt_entry, + (const uint8_t*)&plt_entry, 1); + *plt = FXARGB_TODIB(plt_entry); + } + } + return ret; +} +FX_BOOL ConvertBuffer_1bppMask2Rgb(FXDIB_Format dst_format, + uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top) { + int comps = (dst_format & 0xff) / 8; + uint8_t set_gray, reset_gray; + set_gray = 0xff; + reset_gray = 0x00; + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); + for (int col = src_left; col < src_left + width; col++) { + if (src_scan[col / 8] & (1 << (7 - col % 8))) { + dest_scan[0] = set_gray; + dest_scan[1] = set_gray; + dest_scan[2] = set_gray; + } else { + dest_scan[0] = reset_gray; + dest_scan[1] = reset_gray; + dest_scan[2] = reset_gray; + } + dest_scan += comps; + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_8bppMask2Rgb(FXDIB_Format dst_format, + uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top) { + int comps = (dst_format & 0xff) / 8; + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; + uint8_t src_pixel; + for (int col = 0; col < width; col++) { + src_pixel = *src_scan++; + *dest_scan++ = src_pixel; + *dest_scan++ = src_pixel; + *dest_scan = src_pixel; + dest_scan += comps - 2; + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_1bppPlt2Rgb(FXDIB_Format dst_format, + uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + int comps = (dst_format & 0xff) / 8; + FX_DWORD* src_plt = pSrcBitmap->GetPalette(); + FX_DWORD plt[2]; + uint8_t* bgr_ptr = (uint8_t*)plt; + if (pSrcBitmap->IsCmykImage()) { + plt[0] = FXCMYK_TODIB(src_plt[0]); + plt[1] = FXCMYK_TODIB(src_plt[1]); + } else { + bgr_ptr[0] = FXARGB_B(src_plt[0]); + bgr_ptr[1] = FXARGB_G(src_plt[0]); + bgr_ptr[2] = FXARGB_R(src_plt[0]); + bgr_ptr[3] = FXARGB_B(src_plt[1]); + bgr_ptr[4] = FXARGB_G(src_plt[1]); + bgr_ptr[5] = FXARGB_R(src_plt[1]); + } + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)plt, + (const uint8_t*)plt, 2); + } else { + if (pSrcBitmap->IsCmykImage()) { + AdobeCMYK_to_sRGB1( + FXSYS_GetCValue(src_plt[0]), FXSYS_GetMValue(src_plt[0]), + FXSYS_GetYValue(src_plt[0]), FXSYS_GetKValue(src_plt[0]), bgr_ptr[2], + bgr_ptr[1], bgr_ptr[0]); + AdobeCMYK_to_sRGB1( + FXSYS_GetCValue(src_plt[1]), FXSYS_GetMValue(src_plt[1]), + FXSYS_GetYValue(src_plt[1]), FXSYS_GetKValue(src_plt[1]), bgr_ptr[5], + bgr_ptr[4], bgr_ptr[3]); + } + } + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); + for (int col = src_left; col < src_left + width; col++) { + if (src_scan[col / 8] & (1 << (7 - col % 8))) { + *dest_scan++ = bgr_ptr[3]; + *dest_scan++ = bgr_ptr[4]; + *dest_scan = bgr_ptr[5]; + } else { + *dest_scan++ = bgr_ptr[0]; + *dest_scan++ = bgr_ptr[1]; + *dest_scan = bgr_ptr[2]; + } + dest_scan += comps - 2; + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_8bppPlt2Rgb(FXDIB_Format dst_format, + uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + int comps = (dst_format & 0xff) / 8; + FX_DWORD* src_plt = pSrcBitmap->GetPalette(); + FX_DWORD plt[256]; + uint8_t* bgr_ptr = (uint8_t*)plt; + if (!pSrcBitmap->IsCmykImage()) { + for (int i = 0; i < 256; i++) { + *bgr_ptr++ = FXARGB_B(src_plt[i]); + *bgr_ptr++ = FXARGB_G(src_plt[i]); + *bgr_ptr++ = FXARGB_R(src_plt[i]); + } + bgr_ptr = (uint8_t*)plt; + } + if (pIccTransform) { + if (pSrcBitmap->IsCmykImage()) { + for (int i = 0; i < 256; i++) { + plt[i] = FXCMYK_TODIB(src_plt[i]); + } + } + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, (uint8_t*)plt, + (const uint8_t*)plt, 256); + } else { + if (pSrcBitmap->IsCmykImage()) { + for (int i = 0; i < 256; i++) { + AdobeCMYK_to_sRGB1( + FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), + FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), + bgr_ptr[2], bgr_ptr[1], bgr_ptr[0]); + bgr_ptr += 3; + } + bgr_ptr = (uint8_t*)plt; + } + } + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; + for (int col = 0; col < width; col++) { + uint8_t* src_pixel = bgr_ptr + 3 * (*src_scan++); + *dest_scan++ = *src_pixel++; + *dest_scan++ = *src_pixel++; + *dest_scan = *src_pixel++; + dest_scan += comps - 2; + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_24bppRgb2Rgb24(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * 3; + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, width); + } + } else { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * 3; + FXSYS_memcpy(dest_scan, src_scan, width * 3); + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_32bppRgb2Rgb24(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * 4; + for (int col = 0; col < width; col++) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + src_scan++; + } + } + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + pIccModule->TranslateScanline(pIccTransform, dest_scan, dest_scan, width); + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_Rgb2Rgb32(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + int comps = pSrcBitmap->GetBPP() / 8; + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * comps; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); + dest_scan += 4; + src_scan += comps; + } + } + } else { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * comps; + for (int col = 0; col < width; col++) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + dest_scan++; + src_scan += comps - 3; + } + } + } + return TRUE; +} +FX_BOOL ConvertBuffer_32bppCmyk2Rgb32(uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * 4; + for (int col = 0; col < width; col++) { + pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); + dest_scan += 4; + src_scan += 4; + } + } + } else { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = dest_buf + row * dest_pitch; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * 4; + for (int col = 0; col < width; col++) { + AdobeCMYK_to_sRGB1(src_scan[0], src_scan[1], src_scan[2], src_scan[3], + dest_scan[2], dest_scan[1], dest_scan[0]); + dest_scan += 4; + src_scan += 4; + } + } + } + return TRUE; +} +FX_BOOL ConvertBuffer(FXDIB_Format dest_format, + uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + FX_DWORD*& d_pal, + void* pIccTransform) { + FXDIB_Format src_format = pSrcBitmap->GetFormat(); + if (!CFX_GEModule::Get()->GetCodecModule() || + !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + pIccTransform = NULL; + } + switch (dest_format) { + case FXDIB_Invalid: + case FXDIB_1bppCmyk: + case FXDIB_1bppMask: + case FXDIB_1bppRgb: + ASSERT(FALSE); + return FALSE; + case FXDIB_8bppMask: { + if ((src_format & 0xff) == 1) { + if (pSrcBitmap->GetPalette()) { + return ConvertBuffer_1bppPlt2Gray(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, + pIccTransform); + } + return ConvertBuffer_1bppMask2Gray(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top); + } + if ((src_format & 0xff) == 8) { + if (pSrcBitmap->GetPalette()) { + return ConvertBuffer_8bppPlt2Gray(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, + pIccTransform); + } + return ConvertBuffer_8bppMask2Gray(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top); + } + if ((src_format & 0xff) >= 24) { + return ConvertBuffer_RgbOrCmyk2Gray(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, + pIccTransform); + } + return FALSE; + } + case FXDIB_8bppRgb: + case FXDIB_8bppRgba: { + if ((src_format & 0xff) == 8 && !pSrcBitmap->GetPalette()) { + return ConvertBuffer(FXDIB_8bppMask, dest_buf, dest_pitch, width, + height, pSrcBitmap, src_left, src_top, d_pal, + pIccTransform); + } + d_pal = FX_Alloc(FX_DWORD, 256); + if (((src_format & 0xff) == 1 || (src_format & 0xff) == 8) && + pSrcBitmap->GetPalette()) { + return ConvertBuffer_Plt2PltRgb8(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, d_pal, + pIccTransform); + } + if ((src_format & 0xff) >= 24) { + return ConvertBuffer_Rgb2PltRgb8(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, d_pal, + pIccTransform); + } + return FALSE; + } + case FXDIB_Rgb: + case FXDIB_Rgba: { + if ((src_format & 0xff) == 1) { + if (pSrcBitmap->GetPalette()) { + return ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top, pIccTransform); + } + return ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top); + } + if ((src_format & 0xff) == 8) { + if (pSrcBitmap->GetPalette()) { + return ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top, pIccTransform); + } + return ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top); + } + if ((src_format & 0xff) == 24) { + return ConvertBuffer_24bppRgb2Rgb24(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, + pIccTransform); + } + if ((src_format & 0xff) == 32) { + return ConvertBuffer_32bppRgb2Rgb24(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, + pIccTransform); + } + return FALSE; + } + case FXDIB_Argb: + case FXDIB_Rgb32: { + if ((src_format & 0xff) == 1) { + if (pSrcBitmap->GetPalette()) { + return ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top, pIccTransform); + } + return ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top); + } + if ((src_format & 0xff) == 8) { + if (pSrcBitmap->GetPalette()) { + return ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top, pIccTransform); + } + return ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, + width, height, pSrcBitmap, src_left, + src_top); + } + if ((src_format & 0xff) >= 24) { + if (src_format & 0x0400) { + return ConvertBuffer_32bppCmyk2Rgb32(dest_buf, dest_pitch, width, + height, pSrcBitmap, src_left, + src_top, pIccTransform); + } + return ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, + pSrcBitmap, src_left, src_top, + pIccTransform); + } + return FALSE; + } + default: + return FALSE; + } + return FALSE; +} +CFX_DIBitmap* CFX_DIBSource::CloneConvert(FXDIB_Format dest_format, + const FX_RECT* pClip, + void* pIccTransform) const { + if (dest_format == GetFormat() && !pIccTransform) { + return Clone(pClip); + } + if (pClip) { + CFX_DIBitmap* pClone = Clone(pClip); + if (!pClone) { + return NULL; + } + if (!pClone->ConvertFormat(dest_format, pIccTransform)) { + delete pClone; + return NULL; + } + return pClone; + } + CFX_DIBitmap* pClone = new CFX_DIBitmap; + if (!pClone->Create(m_Width, m_Height, dest_format)) { + delete pClone; + return NULL; + } + FX_BOOL ret = TRUE; + CFX_DIBitmap* pSrcAlpha = NULL; + if (HasAlpha()) { + pSrcAlpha = (GetFormat() == FXDIB_Argb) ? GetAlphaMask() : m_pAlphaMask; + if (!pSrcAlpha) { + delete pClone; + return NULL; + } + } + if (dest_format & 0x0200) { + if (dest_format == FXDIB_Argb) { + ret = pSrcAlpha ? pClone->LoadChannel(FXDIB_Alpha, pSrcAlpha, FXDIB_Alpha) + : pClone->LoadChannel(FXDIB_Alpha, 0xff); + } else { + ret = pClone->CopyAlphaMask(pSrcAlpha); + } + } + if (pSrcAlpha && pSrcAlpha != m_pAlphaMask) { + delete pSrcAlpha; + pSrcAlpha = NULL; + } + if (!ret) { + delete pClone; + return NULL; + } + FX_DWORD* pal_8bpp = NULL; + ret = ConvertBuffer(dest_format, pClone->GetBuffer(), pClone->GetPitch(), + m_Width, m_Height, this, 0, 0, pal_8bpp, pIccTransform); + if (!ret) { + FX_Free(pal_8bpp); + delete pClone; + return NULL; + } + if (pal_8bpp) { + pClone->CopyPalette(pal_8bpp); + FX_Free(pal_8bpp); + pal_8bpp = NULL; + } + return pClone; +} +FX_BOOL CFX_DIBitmap::ConvertFormat(FXDIB_Format dest_format, + void* pIccTransform) { + FXDIB_Format src_format = GetFormat(); + if (dest_format == src_format && !pIccTransform) { + return TRUE; + } + if (dest_format == FXDIB_8bppMask && src_format == FXDIB_8bppRgb && + !m_pPalette) { + m_AlphaFlag = 1; + return TRUE; + } + if (dest_format == FXDIB_Argb && src_format == FXDIB_Rgb32 && + !pIccTransform) { + m_AlphaFlag = 2; + for (int row = 0; row < m_Height; row++) { + uint8_t* scanline = m_pBuffer + row * m_Pitch + 3; + for (int col = 0; col < m_Width; col++) { + *scanline = 0xff; + scanline += 4; + } + } + return TRUE; + } + int dest_bpp = dest_format & 0xff; + int dest_pitch = (dest_bpp * m_Width + 31) / 32 * 4; + uint8_t* dest_buf = FX_TryAlloc(uint8_t, dest_pitch * m_Height + 4); + if (!dest_buf) { + return FALSE; + } + CFX_DIBitmap* pAlphaMask = NULL; + if (dest_format == FXDIB_Argb) { + FXSYS_memset(dest_buf, 0xff, dest_pitch * m_Height + 4); + if (m_pAlphaMask) { + for (int row = 0; row < m_Height; row++) { + uint8_t* pDstScanline = dest_buf + row * dest_pitch + 3; + const uint8_t* pSrcScanline = m_pAlphaMask->GetScanline(row); + for (int col = 0; col < m_Width; col++) { + *pDstScanline = *pSrcScanline++; + pDstScanline += 4; + } + } + } + } else if (dest_format & 0x0200) { + if (src_format == FXDIB_Argb) { + pAlphaMask = GetAlphaMask(); + if (!pAlphaMask) { + FX_Free(dest_buf); + return FALSE; + } + } else { + if (!m_pAlphaMask) { + if (!BuildAlphaMask()) { + FX_Free(dest_buf); + return FALSE; + } + pAlphaMask = m_pAlphaMask; + m_pAlphaMask = NULL; + } else { + pAlphaMask = m_pAlphaMask; + } + } + } + FX_BOOL ret = FALSE; + FX_DWORD* pal_8bpp = NULL; + ret = ConvertBuffer(dest_format, dest_buf, dest_pitch, m_Width, m_Height, + this, 0, 0, pal_8bpp, pIccTransform); + if (!ret) { + FX_Free(pal_8bpp); + if (pAlphaMask != m_pAlphaMask) { + delete pAlphaMask; + } + FX_Free(dest_buf); + return FALSE; + } + if (m_pAlphaMask && pAlphaMask != m_pAlphaMask) { + delete m_pAlphaMask; + } + m_pAlphaMask = pAlphaMask; + FX_Free(m_pPalette); + m_pPalette = pal_8bpp; + if (!m_bExtBuf) { + FX_Free(m_pBuffer); + } + m_bExtBuf = FALSE; + m_pBuffer = dest_buf; + m_bpp = (uint8_t)dest_format; + m_AlphaFlag = (uint8_t)(dest_format >> 8); + m_Pitch = dest_pitch; + return TRUE; +} diff --git a/core/fxge/dib/fx_dib_engine.cpp b/core/fxge/dib/fx_dib_engine.cpp new file mode 100644 index 0000000000..10e5e67bbc --- /dev/null +++ b/core/fxge/dib/fx_dib_engine.cpp @@ -0,0 +1,917 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include + +#include "core/fxge/dib/dib_int.h" +#include "core/include/fxge/fx_dib.h" +#include "core/include/fxge/fx_ge.h" + +void CWeightTable::Calc(int dest_len, + int dest_min, + int dest_max, + int src_len, + int src_min, + int src_max, + int flags) { + FX_Free(m_pWeightTables); + m_pWeightTables = NULL; + double scale, base; + scale = (FX_FLOAT)src_len / (FX_FLOAT)dest_len; + if (dest_len < 0) { + base = (FX_FLOAT)(src_len); + } else { + base = 0; + } + int ext_size = flags & FXDIB_BICUBIC_INTERPOL ? 3 : 1; + m_ItemSize = + sizeof(int) * 2 + + (int)(sizeof(int) * (FXSYS_ceil(FXSYS_fabs((FX_FLOAT)scale)) + ext_size)); + m_DestMin = dest_min; + if ((dest_max - dest_min) > (int)((1U << 30) - 4) / m_ItemSize) { + return; + } + m_pWeightTables = + FX_TryAlloc(uint8_t, (dest_max - dest_min) * m_ItemSize + 4); + if (!m_pWeightTables) { + return; + } + if ((flags & FXDIB_NOSMOOTH) != 0 || FXSYS_fabs((FX_FLOAT)scale) < 1.0f) { + for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { + PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); + double src_pos = dest_pixel * scale + scale / 2 + base; + if (flags & FXDIB_INTERPOL) { + pixel_weights.m_SrcStart = + (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); + pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); + if (pixel_weights.m_SrcStart < src_min) { + pixel_weights.m_SrcStart = src_min; + } + if (pixel_weights.m_SrcEnd >= src_max) { + pixel_weights.m_SrcEnd = src_max - 1; + } + if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { + pixel_weights.m_Weights[0] = 65536; + } else { + pixel_weights.m_Weights[1] = FXSYS_round( + (FX_FLOAT)(src_pos - pixel_weights.m_SrcStart - 1.0f / 2) * + 65536); + pixel_weights.m_Weights[0] = 65536 - pixel_weights.m_Weights[1]; + } + } else if (flags & FXDIB_BICUBIC_INTERPOL) { + pixel_weights.m_SrcStart = + (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); + pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); + int start = pixel_weights.m_SrcStart - 1; + int end = pixel_weights.m_SrcEnd + 1; + if (start < src_min) { + start = src_min; + } + if (end >= src_max) { + end = src_max - 1; + } + if (pixel_weights.m_SrcStart < src_min) { + src_pos += src_min - pixel_weights.m_SrcStart; + pixel_weights.m_SrcStart = src_min; + } + if (pixel_weights.m_SrcEnd >= src_max) { + pixel_weights.m_SrcEnd = src_max - 1; + } + int weight; + weight = FXSYS_round( + (FX_FLOAT)(src_pos - pixel_weights.m_SrcStart - 1.0f / 2) * 256); + if (start == end) { + pixel_weights.m_Weights[0] = + (SDP_Table[256 + weight] + SDP_Table[weight] + + SDP_Table[256 - weight] + SDP_Table[512 - weight]) + << 8; + } else if ((start == pixel_weights.m_SrcStart && + (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd || + end == pixel_weights.m_SrcEnd) && + start < end) || + (start < pixel_weights.m_SrcStart && + pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd && + end == pixel_weights.m_SrcEnd)) { + if (start < pixel_weights.m_SrcStart) { + pixel_weights.m_Weights[0] = SDP_Table[256 + weight] << 8; + pixel_weights.m_Weights[1] = + (SDP_Table[weight] + SDP_Table[256 - weight] + + SDP_Table[512 - weight]) + << 8; + } else { + if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { + pixel_weights.m_Weights[0] = + (SDP_Table[256 + weight] + SDP_Table[weight] + + SDP_Table[256 - weight]) + << 8; + pixel_weights.m_Weights[1] = SDP_Table[512 - weight] << 8; + } else { + pixel_weights.m_Weights[0] = + (SDP_Table[256 + weight] + SDP_Table[weight]) << 8; + pixel_weights.m_Weights[1] = + (SDP_Table[256 - weight] + SDP_Table[512 - weight]) << 8; + } + } + if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { + pixel_weights.m_SrcEnd = end; + } + if (start < pixel_weights.m_SrcStart) { + pixel_weights.m_SrcStart = start; + } + } else if (start == pixel_weights.m_SrcStart && + start < pixel_weights.m_SrcEnd && + pixel_weights.m_SrcEnd < end) { + pixel_weights.m_Weights[0] = + (SDP_Table[256 + weight] + SDP_Table[weight]) << 8; + pixel_weights.m_Weights[1] = SDP_Table[256 - weight] << 8; + pixel_weights.m_Weights[2] = SDP_Table[512 - weight] << 8; + pixel_weights.m_SrcEnd = end; + } else if (start < pixel_weights.m_SrcStart && + pixel_weights.m_SrcStart < pixel_weights.m_SrcEnd && + pixel_weights.m_SrcEnd == end) { + pixel_weights.m_Weights[0] = SDP_Table[256 + weight] << 8; + pixel_weights.m_Weights[1] = SDP_Table[weight] << 8; + pixel_weights.m_Weights[2] = + (SDP_Table[256 - weight] + SDP_Table[512 - weight]) << 8; + pixel_weights.m_SrcStart = start; + } else { + pixel_weights.m_Weights[0] = SDP_Table[256 + weight] << 8; + pixel_weights.m_Weights[1] = SDP_Table[weight] << 8; + pixel_weights.m_Weights[2] = SDP_Table[256 - weight] << 8; + pixel_weights.m_Weights[3] = SDP_Table[512 - weight] << 8; + pixel_weights.m_SrcStart = start; + pixel_weights.m_SrcEnd = end; + } + } else { + pixel_weights.m_SrcStart = pixel_weights.m_SrcEnd = + (int)FXSYS_floor((FX_FLOAT)src_pos); + if (pixel_weights.m_SrcStart < src_min) { + pixel_weights.m_SrcStart = src_min; + } + if (pixel_weights.m_SrcEnd >= src_max) { + pixel_weights.m_SrcEnd = src_max - 1; + } + pixel_weights.m_Weights[0] = 65536; + } + } + return; + } + for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { + PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); + double src_start = dest_pixel * scale + base; + double src_end = src_start + scale; + int start_i, end_i; + if (src_start < src_end) { + start_i = (int)FXSYS_floor((FX_FLOAT)src_start); + end_i = (int)FXSYS_ceil((FX_FLOAT)src_end); + } else { + start_i = (int)FXSYS_floor((FX_FLOAT)src_end); + end_i = (int)FXSYS_ceil((FX_FLOAT)src_start); + } + if (start_i < src_min) { + start_i = src_min; + } + if (end_i >= src_max) { + end_i = src_max - 1; + } + if (start_i > end_i) { + if (start_i >= src_max) { + start_i = src_max - 1; + } + pixel_weights.m_SrcStart = start_i; + pixel_weights.m_SrcEnd = start_i; + continue; + } + pixel_weights.m_SrcStart = start_i; + pixel_weights.m_SrcEnd = end_i; + for (int j = start_i; j <= end_i; j++) { + double dest_start = ((FX_FLOAT)j - base) / scale; + double dest_end = ((FX_FLOAT)(j + 1) - base) / scale; + if (dest_start > dest_end) { + double temp = dest_start; + dest_start = dest_end; + dest_end = temp; + } + double area_start = dest_start > (FX_FLOAT)(dest_pixel) + ? dest_start + : (FX_FLOAT)(dest_pixel); + double area_end = dest_end > (FX_FLOAT)(dest_pixel + 1) + ? (FX_FLOAT)(dest_pixel + 1) + : dest_end; + double weight = area_start >= area_end ? 0.0f : area_end - area_start; + if (weight == 0 && j == end_i) { + pixel_weights.m_SrcEnd--; + break; + } + pixel_weights.m_Weights[j - start_i] = + FXSYS_round((FX_FLOAT)(weight * 65536)); + } + } +} +CStretchEngine::CStretchEngine(IFX_ScanlineComposer* pDestBitmap, + FXDIB_Format dest_format, + int dest_width, + int dest_height, + const FX_RECT& clip_rect, + const CFX_DIBSource* pSrcBitmap, + int flags) { + m_State = 0; + m_DestFormat = dest_format; + m_DestBpp = dest_format & 0xff; + m_SrcBpp = pSrcBitmap->GetFormat() & 0xff; + m_bHasAlpha = pSrcBitmap->GetFormat() & 0x200; + m_pSrcPalette = pSrcBitmap->GetPalette(); + m_pDestBitmap = pDestBitmap; + m_DestWidth = dest_width; + m_DestHeight = dest_height; + m_pInterBuf = NULL; + m_pExtraAlphaBuf = NULL; + m_pDestMaskScanline = NULL; + m_DestClip = clip_rect; + FX_DWORD size = clip_rect.Width(); + if (size && m_DestBpp > (int)(INT_MAX / size)) { + return; + } + size *= m_DestBpp; + if (size > INT_MAX - 31) { + return; + } + size += 31; + size = size / 32 * 4; + m_pDestScanline = FX_TryAlloc(uint8_t, size); + if (!m_pDestScanline) { + return; + } + if (dest_format == FXDIB_Rgb32) { + FXSYS_memset(m_pDestScanline, 255, size); + } + m_InterPitch = (m_DestClip.Width() * m_DestBpp + 31) / 32 * 4; + m_ExtraMaskPitch = (m_DestClip.Width() * 8 + 31) / 32 * 4; + m_pInterBuf = NULL; + m_pSource = pSrcBitmap; + m_SrcWidth = pSrcBitmap->GetWidth(); + m_SrcHeight = pSrcBitmap->GetHeight(); + m_SrcPitch = (m_SrcWidth * m_SrcBpp + 31) / 32 * 4; + if ((flags & FXDIB_NOSMOOTH) == 0) { + FX_BOOL bInterpol = + flags & FXDIB_INTERPOL || flags & FXDIB_BICUBIC_INTERPOL; + if (!bInterpol && FXSYS_abs(dest_width) != 0 && + FXSYS_abs(dest_height) < + m_SrcWidth * m_SrcHeight * 8 / FXSYS_abs(dest_width)) { + flags = FXDIB_INTERPOL; + } + m_Flags = flags; + } else { + m_Flags = FXDIB_NOSMOOTH; + if (flags & FXDIB_DOWNSAMPLE) { + m_Flags |= FXDIB_DOWNSAMPLE; + } + } + double scale_x = (FX_FLOAT)m_SrcWidth / (FX_FLOAT)m_DestWidth; + double scale_y = (FX_FLOAT)m_SrcHeight / (FX_FLOAT)m_DestHeight; + double base_x = m_DestWidth > 0 ? 0.0f : (FX_FLOAT)(m_DestWidth); + double base_y = m_DestHeight > 0 ? 0.0f : (FX_FLOAT)(m_DestHeight); + double src_left = scale_x * ((FX_FLOAT)(clip_rect.left) + base_x); + double src_right = scale_x * ((FX_FLOAT)(clip_rect.right) + base_x); + double src_top = scale_y * ((FX_FLOAT)(clip_rect.top) + base_y); + double src_bottom = scale_y * ((FX_FLOAT)(clip_rect.bottom) + base_y); + if (src_left > src_right) { + double temp = src_left; + src_left = src_right; + src_right = temp; + } + if (src_top > src_bottom) { + double temp = src_top; + src_top = src_bottom; + src_bottom = temp; + } + m_SrcClip.left = (int)FXSYS_floor((FX_FLOAT)src_left); + m_SrcClip.right = (int)FXSYS_ceil((FX_FLOAT)src_right); + m_SrcClip.top = (int)FXSYS_floor((FX_FLOAT)src_top); + m_SrcClip.bottom = (int)FXSYS_ceil((FX_FLOAT)src_bottom); + FX_RECT src_rect(0, 0, m_SrcWidth, m_SrcHeight); + m_SrcClip.Intersect(src_rect); + if (m_SrcBpp == 1) { + if (m_DestBpp == 8) { + m_TransMethod = 1; + } else { + m_TransMethod = 2; + } + } else if (m_SrcBpp == 8) { + if (m_DestBpp == 8) { + if (!m_bHasAlpha) { + m_TransMethod = 3; + } else { + m_TransMethod = 4; + } + } else { + if (!m_bHasAlpha) { + m_TransMethod = 5; + } else { + m_TransMethod = 6; + } + } + } else { + if (!m_bHasAlpha) { + m_TransMethod = 7; + } else { + m_TransMethod = 8; + } + } +} +FX_BOOL CStretchEngine::Continue(IFX_Pause* pPause) { + while (m_State == 1) { + if (ContinueStretchHorz(pPause)) { + return TRUE; + } + m_State = 2; + StretchVert(); + } + return FALSE; +} +CStretchEngine::~CStretchEngine() { + FX_Free(m_pDestScanline); + FX_Free(m_pInterBuf); + FX_Free(m_pExtraAlphaBuf); + FX_Free(m_pDestMaskScanline); +} +FX_BOOL CStretchEngine::StartStretchHorz() { + if (m_DestWidth == 0 || !m_pDestScanline || + m_SrcClip.Height() > (int)((1U << 29) / m_InterPitch) || + m_SrcClip.Height() == 0) { + return FALSE; + } + m_pInterBuf = FX_TryAlloc(unsigned char, m_SrcClip.Height() * m_InterPitch); + if (!m_pInterBuf) { + return FALSE; + } + if (m_pSource && m_bHasAlpha && m_pSource->m_pAlphaMask) { + m_pExtraAlphaBuf = + FX_Alloc2D(unsigned char, m_SrcClip.Height(), m_ExtraMaskPitch); + FX_DWORD size = (m_DestClip.Width() * 8 + 31) / 32 * 4; + m_pDestMaskScanline = FX_TryAlloc(unsigned char, size); + if (!m_pDestMaskScanline) { + return FALSE; + } + } + m_WeightTable.Calc(m_DestWidth, m_DestClip.left, m_DestClip.right, m_SrcWidth, + m_SrcClip.left, m_SrcClip.right, m_Flags); + if (!m_WeightTable.m_pWeightTables) { + return FALSE; + } + m_CurRow = m_SrcClip.top; + m_State = 1; + return TRUE; +} +#define FX_STRECH_PAUSE_ROWS 10 +FX_BOOL CStretchEngine::ContinueStretchHorz(IFX_Pause* pPause) { + if (!m_DestWidth) { + return 0; + } + if (m_pSource->SkipToScanline(m_CurRow, pPause)) { + return TRUE; + } + int Bpp = m_DestBpp / 8; + int rows_to_go = FX_STRECH_PAUSE_ROWS; + for (; m_CurRow < m_SrcClip.bottom; m_CurRow++) { + if (rows_to_go == 0) { + if (pPause && pPause->NeedToPauseNow()) { + return TRUE; + } + rows_to_go = FX_STRECH_PAUSE_ROWS; + } + const uint8_t* src_scan = m_pSource->GetScanline(m_CurRow); + uint8_t* dest_scan = + m_pInterBuf + (m_CurRow - m_SrcClip.top) * m_InterPitch; + const uint8_t* src_scan_mask = NULL; + uint8_t* dest_scan_mask = NULL; + if (m_pExtraAlphaBuf) { + src_scan_mask = m_pSource->m_pAlphaMask->GetScanline(m_CurRow); + dest_scan_mask = + m_pExtraAlphaBuf + (m_CurRow - m_SrcClip.top) * m_ExtraMaskPitch; + } + switch (m_TransMethod) { + case 1: + case 2: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); + int dest_a = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + if (src_scan[j / 8] & (1 << (7 - j % 8))) { + dest_a += pixel_weight * 255; + } + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; + } + *dest_scan++ = (uint8_t)(dest_a >> 16); + } + break; + } + case 3: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); + int dest_a = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + dest_a += pixel_weight * src_scan[j]; + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; + } + *dest_scan++ = (uint8_t)(dest_a >> 16); + } + break; + } + case 4: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); + int dest_a = 0, dest_r = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + pixel_weight = pixel_weight * src_scan_mask[j] / 255; + dest_r += pixel_weight * src_scan[j]; + dest_a += pixel_weight; + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_r = dest_r < 0 ? 0 : dest_r > 16711680 ? 16711680 : dest_r; + dest_a = dest_a < 0 ? 0 : dest_a > 65536 ? 65536 : dest_a; + } + *dest_scan++ = (uint8_t)(dest_r >> 16); + *dest_scan_mask++ = (uint8_t)((dest_a * 255) >> 16); + } + break; + } + case 5: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); + int dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + unsigned long argb_cmyk = m_pSrcPalette[src_scan[j]]; + if (m_DestFormat == FXDIB_Rgb) { + dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 16); + dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 8); + dest_b_c += pixel_weight * (uint8_t)argb_cmyk; + } else { + dest_b_c += pixel_weight * (uint8_t)(argb_cmyk >> 24); + dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 16); + dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 8); + } + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_r_y = + dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; + dest_g_m = + dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; + dest_b_c = + dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; + } + *dest_scan++ = (uint8_t)(dest_b_c >> 16); + *dest_scan++ = (uint8_t)(dest_g_m >> 16); + *dest_scan++ = (uint8_t)(dest_r_y >> 16); + } + break; + } + case 6: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); + int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + pixel_weight = pixel_weight * src_scan_mask[j] / 255; + unsigned long argb_cmyk = m_pSrcPalette[src_scan[j]]; + if (m_DestFormat == FXDIB_Rgba) { + dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 16); + dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 8); + dest_b_c += pixel_weight * (uint8_t)argb_cmyk; + } else { + dest_b_c += pixel_weight * (uint8_t)(argb_cmyk >> 24); + dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 16); + dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 8); + } + dest_a += pixel_weight; + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_b_c = + dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; + dest_g_m = + dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; + dest_r_y = + dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; + dest_a = dest_a < 0 ? 0 : dest_a > 65536 ? 65536 : dest_a; + } + *dest_scan++ = (uint8_t)(dest_b_c >> 16); + *dest_scan++ = (uint8_t)(dest_g_m >> 16); + *dest_scan++ = (uint8_t)(dest_r_y >> 16); + *dest_scan_mask++ = (uint8_t)((dest_a * 255) >> 16); + } + break; + } + case 7: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); + int dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = src_scan + j * Bpp; + dest_b_c += pixel_weight * (*src_pixel++); + dest_g_m += pixel_weight * (*src_pixel++); + dest_r_y += pixel_weight * (*src_pixel); + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_b_c = + dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; + dest_g_m = + dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; + dest_r_y = + dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; + } + *dest_scan++ = (uint8_t)((dest_b_c) >> 16); + *dest_scan++ = (uint8_t)((dest_g_m) >> 16); + *dest_scan++ = (uint8_t)((dest_r_y) >> 16); + dest_scan += Bpp - 3; + } + break; + } + case 8: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); + int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = src_scan + j * Bpp; + if (m_DestFormat == FXDIB_Argb) { + pixel_weight = pixel_weight * src_pixel[3] / 255; + } else { + pixel_weight = pixel_weight * src_scan_mask[j] / 255; + } + dest_b_c += pixel_weight * (*src_pixel++); + dest_g_m += pixel_weight * (*src_pixel++); + dest_r_y += pixel_weight * (*src_pixel); + dest_a += pixel_weight; + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_r_y = + dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; + dest_g_m = + dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; + dest_b_c = + dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; + dest_a = dest_a < 0 ? 0 : dest_a > 65536 ? 65536 : dest_a; + } + *dest_scan++ = (uint8_t)((dest_b_c) >> 16); + *dest_scan++ = (uint8_t)((dest_g_m) >> 16); + *dest_scan++ = (uint8_t)((dest_r_y) >> 16); + if (m_DestFormat == FXDIB_Argb) { + *dest_scan = (uint8_t)((dest_a * 255) >> 16); + } + if (dest_scan_mask) { + *dest_scan_mask++ = (uint8_t)((dest_a * 255) >> 16); + } + dest_scan += Bpp - 3; + } + break; + } + } + rows_to_go--; + } + return FALSE; +} +void CStretchEngine::StretchVert() { + if (m_DestHeight == 0) { + return; + } + CWeightTable table; + table.Calc(m_DestHeight, m_DestClip.top, m_DestClip.bottom, m_SrcHeight, + m_SrcClip.top, m_SrcClip.bottom, m_Flags); + if (!table.m_pWeightTables) { + return; + } + int DestBpp = m_DestBpp / 8; + for (int row = m_DestClip.top; row < m_DestClip.bottom; row++) { + unsigned char* dest_scan = m_pDestScanline; + unsigned char* dest_sacn_mask = m_pDestMaskScanline; + PixelWeight* pPixelWeights = table.GetPixelWeight(row); + switch (m_TransMethod) { + case 1: + case 2: + case 3: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + unsigned char* src_scan = + m_pInterBuf + (col - m_DestClip.left) * DestBpp; + int dest_a = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + dest_a += + pixel_weight * src_scan[(j - m_SrcClip.top) * m_InterPitch]; + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; + } + *dest_scan = (uint8_t)(dest_a >> 16); + dest_scan += DestBpp; + } + break; + } + case 4: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + unsigned char* src_scan = + m_pInterBuf + (col - m_DestClip.left) * DestBpp; + unsigned char* src_scan_mask = + m_pExtraAlphaBuf + (col - m_DestClip.left); + int dest_a = 0, dest_k = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + dest_k += + pixel_weight * src_scan[(j - m_SrcClip.top) * m_InterPitch]; + dest_a += pixel_weight * + src_scan_mask[(j - m_SrcClip.top) * m_ExtraMaskPitch]; + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_k = dest_k < 0 ? 0 : dest_k > 16711680 ? 16711680 : dest_k; + dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; + } + *dest_scan = (uint8_t)(dest_k >> 16); + dest_scan += DestBpp; + *dest_sacn_mask++ = (uint8_t)(dest_a >> 16); + } + break; + } + case 5: + case 7: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + unsigned char* src_scan = + m_pInterBuf + (col - m_DestClip.left) * DestBpp; + int dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = + src_scan + (j - m_SrcClip.top) * m_InterPitch; + dest_b_c += pixel_weight * (*src_pixel++); + dest_g_m += pixel_weight * (*src_pixel++); + dest_r_y += pixel_weight * (*src_pixel); + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_r_y = + dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; + dest_g_m = + dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; + dest_b_c = + dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; + } + dest_scan[0] = (uint8_t)((dest_b_c) >> 16); + dest_scan[1] = (uint8_t)((dest_g_m) >> 16); + dest_scan[2] = (uint8_t)((dest_r_y) >> 16); + dest_scan += DestBpp; + } + break; + } + case 6: + case 8: { + for (int col = m_DestClip.left; col < m_DestClip.right; col++) { + unsigned char* src_scan = + m_pInterBuf + (col - m_DestClip.left) * DestBpp; + unsigned char* src_scan_mask = NULL; + if (m_DestFormat != FXDIB_Argb) { + src_scan_mask = m_pExtraAlphaBuf + (col - m_DestClip.left); + } + int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; + for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; + j++) { + int pixel_weight = + pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; + const uint8_t* src_pixel = + src_scan + (j - m_SrcClip.top) * m_InterPitch; + int mask_v = 255; + if (src_scan_mask) { + mask_v = src_scan_mask[(j - m_SrcClip.top) * m_ExtraMaskPitch]; + } + dest_b_c += pixel_weight * (*src_pixel++); + dest_g_m += pixel_weight * (*src_pixel++); + dest_r_y += pixel_weight * (*src_pixel); + if (m_DestFormat == FXDIB_Argb) { + dest_a += pixel_weight * (*(src_pixel + 1)); + } else { + dest_a += pixel_weight * mask_v; + } + } + if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + dest_r_y = + dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; + dest_g_m = + dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; + dest_b_c = + dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; + dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; + } + if (dest_a) { + int r = ((FX_DWORD)dest_r_y) * 255 / dest_a; + int g = ((FX_DWORD)dest_g_m) * 255 / dest_a; + int b = ((FX_DWORD)dest_b_c) * 255 / dest_a; + dest_scan[0] = b > 255 ? 255 : b < 0 ? 0 : b; + dest_scan[1] = g > 255 ? 255 : g < 0 ? 0 : g; + dest_scan[2] = r > 255 ? 255 : r < 0 ? 0 : r; + } + if (m_DestFormat == FXDIB_Argb) { + dest_scan[3] = (uint8_t)((dest_a) >> 16); + } else { + *dest_sacn_mask = (uint8_t)((dest_a) >> 16); + } + dest_scan += DestBpp; + if (dest_sacn_mask) { + dest_sacn_mask++; + } + } + break; + } + } + m_pDestBitmap->ComposeScanline(row - m_DestClip.top, m_pDestScanline, + m_pDestMaskScanline); + } +} +CFX_ImageStretcher::CFX_ImageStretcher() { + m_pScanline = NULL; + m_pStretchEngine = NULL; + m_pMaskScanline = NULL; +} +CFX_ImageStretcher::~CFX_ImageStretcher() { + FX_Free(m_pScanline); + delete m_pStretchEngine; + FX_Free(m_pMaskScanline); +} +FXDIB_Format _GetStretchedFormat(const CFX_DIBSource* pSrc) { + FXDIB_Format format = pSrc->GetFormat(); + if (format == FXDIB_1bppMask) { + format = FXDIB_8bppMask; + } else if (format == FXDIB_1bppRgb) { + format = FXDIB_8bppRgb; + } else if (format == FXDIB_8bppRgb) { + if (pSrc->GetPalette()) { + format = FXDIB_Rgb; + } + } + return format; +} +FX_BOOL CFX_ImageStretcher::Start(IFX_ScanlineComposer* pDest, + const CFX_DIBSource* pSource, + int dest_width, + int dest_height, + const FX_RECT& rect, + FX_DWORD flags) { + m_DestFormat = _GetStretchedFormat(pSource); + m_DestBPP = m_DestFormat & 0xff; + m_pDest = pDest; + m_pSource = pSource; + m_DestWidth = dest_width; + m_DestHeight = dest_height; + m_ClipRect = rect; + m_Flags = flags; + if (pSource->GetFormat() == FXDIB_1bppRgb && pSource->GetPalette()) { + FX_ARGB pal[256]; + int a0, r0, g0, b0, a1, r1, g1, b1; + ArgbDecode(pSource->GetPaletteEntry(0), a0, r0, g0, b0); + ArgbDecode(pSource->GetPaletteEntry(1), a1, r1, g1, b1); + for (int i = 0; i < 256; i++) { + int a = a0 + (a1 - a0) * i / 255; + int r = r0 + (r1 - r0) * i / 255; + int g = g0 + (g1 - g0) * i / 255; + int b = b0 + (b1 - b0) * i / 255; + pal[i] = ArgbEncode(a, r, g, b); + } + if (!pDest->SetInfo(rect.Width(), rect.Height(), m_DestFormat, pal)) { + return FALSE; + } + } else if (pSource->GetFormat() == FXDIB_1bppCmyk && pSource->GetPalette()) { + FX_CMYK pal[256]; + int c0, m0, y0, k0, c1, m1, y1, k1; + CmykDecode(pSource->GetPaletteEntry(0), c0, m0, y0, k0); + CmykDecode(pSource->GetPaletteEntry(1), c1, m1, y1, k1); + for (int i = 0; i < 256; i++) { + int c = c0 + (c1 - c0) * i / 255; + int m = m0 + (m1 - m0) * i / 255; + int y = y0 + (y1 - y0) * i / 255; + int k = k0 + (k1 - k0) * i / 255; + pal[i] = CmykEncode(c, m, y, k); + } + if (!pDest->SetInfo(rect.Width(), rect.Height(), m_DestFormat, pal)) { + return FALSE; + } + } else if (!pDest->SetInfo(rect.Width(), rect.Height(), m_DestFormat, NULL)) { + return FALSE; + } + if (flags & FXDIB_DOWNSAMPLE) { + return StartQuickStretch(); + } + return StartStretch(); +} +FX_BOOL CFX_ImageStretcher::Continue(IFX_Pause* pPause) { + if (m_Flags & FXDIB_DOWNSAMPLE) { + return ContinueQuickStretch(pPause); + } + return ContinueStretch(pPause); +} +#define MAX_PROGRESSIVE_STRETCH_PIXELS 1000000 +FX_BOOL CFX_ImageStretcher::StartStretch() { + m_pStretchEngine = + new CStretchEngine(m_pDest, m_DestFormat, m_DestWidth, m_DestHeight, + m_ClipRect, m_pSource, m_Flags); + m_pStretchEngine->StartStretchHorz(); + if (m_pSource->GetWidth() * m_pSource->GetHeight() < + MAX_PROGRESSIVE_STRETCH_PIXELS) { + m_pStretchEngine->Continue(NULL); + return FALSE; + } + return TRUE; +} +FX_BOOL CFX_ImageStretcher::ContinueStretch(IFX_Pause* pPause) { + return m_pStretchEngine && m_pStretchEngine->Continue(pPause); +} +FX_BOOL CFX_ImageStretcher::StartQuickStretch() { + m_bFlipX = FALSE; + m_bFlipY = FALSE; + if (m_DestWidth < 0) { + m_bFlipX = TRUE; + m_DestWidth = -m_DestWidth; + } + if (m_DestHeight < 0) { + m_bFlipY = TRUE; + m_DestHeight = -m_DestHeight; + } + m_LineIndex = 0; + FX_DWORD size = m_ClipRect.Width(); + if (size && m_DestBPP > (int)(INT_MAX / size)) { + return FALSE; + } + size *= m_DestBPP; + m_pScanline = FX_Alloc(uint8_t, (size / 8 + 3) / 4 * 4); + if (m_pSource->m_pAlphaMask) { + m_pMaskScanline = FX_Alloc(uint8_t, (m_ClipRect.Width() + 3) / 4 * 4); + } + if (m_pSource->GetWidth() * m_pSource->GetHeight() < + MAX_PROGRESSIVE_STRETCH_PIXELS) { + ContinueQuickStretch(NULL); + return FALSE; + } + return TRUE; +} +FX_BOOL CFX_ImageStretcher::ContinueQuickStretch(IFX_Pause* pPause) { + if (!m_pScanline) { + return FALSE; + } + int result_width = m_ClipRect.Width(), result_height = m_ClipRect.Height(); + int src_height = m_pSource->GetHeight(); + for (; m_LineIndex < result_height; m_LineIndex++) { + int dest_y, src_y; + if (m_bFlipY) { + dest_y = result_height - m_LineIndex - 1; + src_y = (m_DestHeight - (dest_y + m_ClipRect.top) - 1) * src_height / + m_DestHeight; + } else { + dest_y = m_LineIndex; + src_y = (dest_y + m_ClipRect.top) * src_height / m_DestHeight; + } + if (src_y >= src_height) { + src_y = src_height - 1; + } + if (src_y < 0) { + src_y = 0; + } + if (m_pSource->SkipToScanline(src_y, pPause)) { + return TRUE; + } + m_pSource->DownSampleScanline(src_y, m_pScanline, m_DestBPP, m_DestWidth, + m_bFlipX, m_ClipRect.left, result_width); + if (m_pMaskScanline) { + m_pSource->m_pAlphaMask->DownSampleScanline( + src_y, m_pMaskScanline, 1, m_DestWidth, m_bFlipX, m_ClipRect.left, + result_width); + } + m_pDest->ComposeScanline(dest_y, m_pScanline, m_pMaskScanline); + } + return FALSE; +} diff --git a/core/fxge/dib/fx_dib_main.cpp b/core/fxge/dib/fx_dib_main.cpp new file mode 100644 index 0000000000..8ce20568df --- /dev/null +++ b/core/fxge/dib/fx_dib_main.cpp @@ -0,0 +1,1745 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_dib.h" + +#include + +#include "core/fxge/dib/dib_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_ge.h" + +FX_BOOL ConvertBuffer(FXDIB_Format dest_format, + uint8_t* dest_buf, + int dest_pitch, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + FX_DWORD*& pal, + void* pIccTransform); +void CmykDecode(FX_DWORD cmyk, int& c, int& m, int& y, int& k) { + c = FXSYS_GetCValue(cmyk); + m = FXSYS_GetMValue(cmyk); + y = FXSYS_GetYValue(cmyk); + k = FXSYS_GetKValue(cmyk); +} +void ArgbDecode(FX_DWORD argb, int& a, int& r, int& g, int& b) { + a = FXARGB_A(argb); + r = FXARGB_R(argb); + g = FXARGB_G(argb); + b = FXARGB_B(argb); +} +void ArgbDecode(FX_DWORD argb, int& a, FX_COLORREF& rgb) { + a = FXARGB_A(argb); + rgb = FXSYS_RGB(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb)); +} +FX_DWORD ArgbEncode(int a, FX_COLORREF rgb) { + return FXARGB_MAKE(a, FXSYS_GetRValue(rgb), FXSYS_GetGValue(rgb), + FXSYS_GetBValue(rgb)); +} + +CFX_DIBSource::CFX_DIBSource() { + m_bpp = 0; + m_AlphaFlag = 0; + m_Width = m_Height = 0; + m_Pitch = 0; + m_pPalette = NULL; + m_pAlphaMask = NULL; +} + +CFX_DIBSource::~CFX_DIBSource() { + FX_Free(m_pPalette); + delete m_pAlphaMask; +} + +uint8_t* CFX_DIBSource::GetBuffer() const { + return NULL; +} + +FX_BOOL CFX_DIBSource::SkipToScanline(int line, IFX_Pause* pPause) const { + return FALSE; +} + +CFX_DIBitmap::CFX_DIBitmap() { + m_bExtBuf = FALSE; + m_pBuffer = NULL; + m_pPalette = NULL; +} + +#define _MAX_OOM_LIMIT_ 12000000 +FX_BOOL CFX_DIBitmap::Create(int width, + int height, + FXDIB_Format format, + uint8_t* pBuffer, + int pitch) { + m_pBuffer = NULL; + m_bpp = (uint8_t)format; + m_AlphaFlag = (uint8_t)(format >> 8); + m_Width = m_Height = m_Pitch = 0; + if (width <= 0 || height <= 0 || pitch < 0) { + return FALSE; + } + if ((INT_MAX - 31) / width < (format & 0xff)) { + return FALSE; + } + if (!pitch) { + pitch = (width * (format & 0xff) + 31) / 32 * 4; + } + if ((1 << 30) / pitch < height) { + return FALSE; + } + if (pBuffer) { + m_pBuffer = pBuffer; + m_bExtBuf = TRUE; + } else { + int size = pitch * height + 4; + int oomlimit = _MAX_OOM_LIMIT_; + if (oomlimit >= 0 && size >= oomlimit) { + m_pBuffer = FX_TryAlloc(uint8_t, size); + if (!m_pBuffer) { + return FALSE; + } + } else { + m_pBuffer = FX_Alloc(uint8_t, size); + } + } + m_Width = width; + m_Height = height; + m_Pitch = pitch; + if (HasAlpha() && format != FXDIB_Argb) { + FX_BOOL ret = TRUE; + ret = BuildAlphaMask(); + if (!ret) { + if (!m_bExtBuf) { + FX_Free(m_pBuffer); + m_pBuffer = NULL; + m_Width = m_Height = m_Pitch = 0; + return FALSE; + } + } + } + return TRUE; +} + +FX_BOOL CFX_DIBitmap::Copy(const CFX_DIBSource* pSrc) { + if (m_pBuffer) { + return FALSE; + } + if (!Create(pSrc->GetWidth(), pSrc->GetHeight(), pSrc->GetFormat())) { + return FALSE; + } + CopyPalette(pSrc->GetPalette()); + CopyAlphaMask(pSrc->m_pAlphaMask); + for (int row = 0; row < pSrc->GetHeight(); row++) { + FXSYS_memcpy(m_pBuffer + row * m_Pitch, pSrc->GetScanline(row), m_Pitch); + } + return TRUE; +} + +CFX_DIBitmap::~CFX_DIBitmap() { + if (!m_bExtBuf) + FX_Free(m_pBuffer); + + m_pBuffer = nullptr; +} + +uint8_t* CFX_DIBitmap::GetBuffer() const { + return m_pBuffer; +} + +const uint8_t* CFX_DIBitmap::GetScanline(int line) const { + return m_pBuffer ? m_pBuffer + line * m_Pitch : nullptr; +} + +void CFX_DIBitmap::TakeOver(CFX_DIBitmap* pSrcBitmap) { + if (!m_bExtBuf) + FX_Free(m_pBuffer); + + FX_Free(m_pPalette); + delete m_pAlphaMask; + m_pBuffer = pSrcBitmap->m_pBuffer; + m_pPalette = pSrcBitmap->m_pPalette; + m_pAlphaMask = pSrcBitmap->m_pAlphaMask; + pSrcBitmap->m_pBuffer = nullptr; + pSrcBitmap->m_pPalette = nullptr; + pSrcBitmap->m_pAlphaMask = nullptr; + m_bpp = pSrcBitmap->m_bpp; + m_bExtBuf = pSrcBitmap->m_bExtBuf; + m_AlphaFlag = pSrcBitmap->m_AlphaFlag; + m_Width = pSrcBitmap->m_Width; + m_Height = pSrcBitmap->m_Height; + m_Pitch = pSrcBitmap->m_Pitch; +} + +CFX_DIBitmap* CFX_DIBSource::Clone(const FX_RECT* pClip) const { + FX_RECT rect(0, 0, m_Width, m_Height); + if (pClip) { + rect.Intersect(*pClip); + if (rect.IsEmpty()) { + return NULL; + } + } + CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap; + if (!pNewBitmap->Create(rect.Width(), rect.Height(), GetFormat())) { + delete pNewBitmap; + return NULL; + } + pNewBitmap->CopyPalette(m_pPalette); + pNewBitmap->CopyAlphaMask(m_pAlphaMask, pClip); + if (GetBPP() == 1 && rect.left % 8 != 0) { + int left_shift = rect.left % 32; + int right_shift = 32 - left_shift; + int dword_count = pNewBitmap->m_Pitch / 4; + for (int row = rect.top; row < rect.bottom; row++) { + FX_DWORD* src_scan = (FX_DWORD*)GetScanline(row) + rect.left / 32; + FX_DWORD* dest_scan = (FX_DWORD*)pNewBitmap->GetScanline(row - rect.top); + for (int i = 0; i < dword_count; i++) { + dest_scan[i] = + (src_scan[i] << left_shift) | (src_scan[i + 1] >> right_shift); + } + } + } else { + int copy_len = (pNewBitmap->GetWidth() * pNewBitmap->GetBPP() + 7) / 8; + if (m_Pitch < (FX_DWORD)copy_len) { + copy_len = m_Pitch; + } + for (int row = rect.top; row < rect.bottom; row++) { + const uint8_t* src_scan = GetScanline(row) + rect.left * m_bpp / 8; + uint8_t* dest_scan = (uint8_t*)pNewBitmap->GetScanline(row - rect.top); + FXSYS_memcpy(dest_scan, src_scan, copy_len); + } + } + return pNewBitmap; +} +void CFX_DIBSource::BuildPalette() { + if (m_pPalette) { + return; + } + if (GetBPP() == 1) { + m_pPalette = FX_Alloc(FX_DWORD, 2); + if (IsCmykImage()) { + m_pPalette[0] = 0xff; + m_pPalette[1] = 0; + } else { + m_pPalette[0] = 0xff000000; + m_pPalette[1] = 0xffffffff; + } + } else if (GetBPP() == 8) { + m_pPalette = FX_Alloc(FX_DWORD, 256); + if (IsCmykImage()) { + for (int i = 0; i < 256; i++) { + m_pPalette[i] = 0xff - i; + } + } else { + for (int i = 0; i < 256; i++) { + m_pPalette[i] = 0xff000000 | (i * 0x10101); + } + } + } +} +FX_BOOL CFX_DIBSource::BuildAlphaMask() { + if (m_pAlphaMask) { + return TRUE; + } + m_pAlphaMask = new CFX_DIBitmap; + if (!m_pAlphaMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { + delete m_pAlphaMask; + m_pAlphaMask = NULL; + return FALSE; + } + FXSYS_memset(m_pAlphaMask->GetBuffer(), 0xff, + m_pAlphaMask->GetHeight() * m_pAlphaMask->GetPitch()); + return TRUE; +} +FX_DWORD CFX_DIBSource::GetPaletteEntry(int index) const { + ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); + if (m_pPalette) { + return m_pPalette[index]; + } + if (IsCmykImage()) { + if (GetBPP() == 1) { + return index ? 0 : 0xff; + } + return 0xff - index; + } + if (GetBPP() == 1) { + return index ? 0xffffffff : 0xff000000; + } + return index * 0x10101 | 0xff000000; +} +void CFX_DIBSource::SetPaletteEntry(int index, FX_DWORD color) { + ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); + if (!m_pPalette) { + BuildPalette(); + } + m_pPalette[index] = color; +} +int CFX_DIBSource::FindPalette(FX_DWORD color) const { + ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); + if (!m_pPalette) { + if (IsCmykImage()) { + if (GetBPP() == 1) { + return ((uint8_t)color == 0xff) ? 0 : 1; + } + return 0xff - (uint8_t)color; + } + if (GetBPP() == 1) { + return ((uint8_t)color == 0xff) ? 1 : 0; + } + return (uint8_t)color; + } + int palsize = (1 << GetBPP()); + for (int i = 0; i < palsize; i++) + if (m_pPalette[i] == color) { + return i; + } + return -1; +} +void CFX_DIBitmap::Clear(FX_DWORD color) { + if (!m_pBuffer) { + return; + } + switch (GetFormat()) { + case FXDIB_1bppMask: + FXSYS_memset(m_pBuffer, (color & 0xff000000) ? 0xff : 0, + m_Pitch * m_Height); + break; + case FXDIB_1bppRgb: { + int index = FindPalette(color); + FXSYS_memset(m_pBuffer, index ? 0xff : 0, m_Pitch * m_Height); + break; + } + case FXDIB_8bppMask: + FXSYS_memset(m_pBuffer, color >> 24, m_Pitch * m_Height); + break; + case FXDIB_8bppRgb: { + int index = FindPalette(color); + FXSYS_memset(m_pBuffer, index, m_Pitch * m_Height); + break; + } + case FXDIB_Rgb: + case FXDIB_Rgba: { + int a, r, g, b; + ArgbDecode(color, a, r, g, b); + if (r == g && g == b) { + FXSYS_memset(m_pBuffer, r, m_Pitch * m_Height); + } else { + int byte_pos = 0; + for (int col = 0; col < m_Width; col++) { + m_pBuffer[byte_pos++] = b; + m_pBuffer[byte_pos++] = g; + m_pBuffer[byte_pos++] = r; + } + for (int row = 1; row < m_Height; row++) { + FXSYS_memcpy(m_pBuffer + row * m_Pitch, m_pBuffer, m_Pitch); + } + } + break; + } + case FXDIB_Rgb32: + case FXDIB_Argb: { + color = IsCmykImage() ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); + for (int i = 0; i < m_Width; i++) { + ((FX_DWORD*)m_pBuffer)[i] = color; + } + for (int row = 1; row < m_Height; row++) { + FXSYS_memcpy(m_pBuffer + row * m_Pitch, m_pBuffer, m_Pitch); + } + break; + } + default: + break; + } +} +void CFX_DIBSource::GetOverlapRect(int& dest_left, + int& dest_top, + int& width, + int& height, + int src_width, + int src_height, + int& src_left, + int& src_top, + const CFX_ClipRgn* pClipRgn) { + if (width == 0 || height == 0) { + return; + } + ASSERT(width > 0 && height > 0); + if (dest_left > m_Width || dest_top > m_Height) { + width = 0; + height = 0; + return; + } + int x_offset = dest_left - src_left; + int y_offset = dest_top - src_top; + FX_RECT src_rect(src_left, src_top, src_left + width, src_top + height); + FX_RECT src_bound(0, 0, src_width, src_height); + src_rect.Intersect(src_bound); + FX_RECT dest_rect(src_rect.left + x_offset, src_rect.top + y_offset, + src_rect.right + x_offset, src_rect.bottom + y_offset); + FX_RECT dest_bound(0, 0, m_Width, m_Height); + dest_rect.Intersect(dest_bound); + if (pClipRgn) { + dest_rect.Intersect(pClipRgn->GetBox()); + } + dest_left = dest_rect.left; + dest_top = dest_rect.top; + src_left = dest_left - x_offset; + src_top = dest_top - y_offset; + width = dest_rect.right - dest_rect.left; + height = dest_rect.bottom - dest_rect.top; +} +FX_BOOL CFX_DIBitmap::TransferBitmap(int dest_left, + int dest_top, + int width, + int height, + const CFX_DIBSource* pSrcBitmap, + int src_left, + int src_top, + void* pIccTransform) { + if (!m_pBuffer) { + return FALSE; + } + GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetWidth(), + pSrcBitmap->GetHeight(), src_left, src_top, NULL); + if (width == 0 || height == 0) { + return TRUE; + } + FXDIB_Format dest_format = GetFormat(); + FXDIB_Format src_format = pSrcBitmap->GetFormat(); + if (dest_format == src_format && !pIccTransform) { + if (GetBPP() == 1) { + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = m_pBuffer + (dest_top + row) * m_Pitch; + const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); + for (int col = 0; col < width; col++) { + if (src_scan[(src_left + col) / 8] & + (1 << (7 - (src_left + col) % 8))) { + dest_scan[(dest_left + col) / 8] |= 1 + << (7 - (dest_left + col) % 8); + } else { + dest_scan[(dest_left + col) / 8] &= + ~(1 << (7 - (dest_left + col) % 8)); + } + } + } + } else { + int Bpp = GetBPP() / 8; + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = + m_pBuffer + (dest_top + row) * m_Pitch + dest_left * Bpp; + const uint8_t* src_scan = + pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; + FXSYS_memcpy(dest_scan, src_scan, width * Bpp); + } + } + } else { + if (m_pPalette) { + return FALSE; + } + if (m_bpp == 8) { + dest_format = FXDIB_8bppMask; + } + uint8_t* dest_buf = + m_pBuffer + dest_top * m_Pitch + dest_left * GetBPP() / 8; + FX_DWORD* d_plt = NULL; + if (!ConvertBuffer(dest_format, dest_buf, m_Pitch, width, height, + pSrcBitmap, src_left, src_top, d_plt, pIccTransform)) { + return FALSE; + } + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::TransferMask(int dest_left, + int dest_top, + int width, + int height, + const CFX_DIBSource* pMask, + FX_DWORD color, + int src_left, + int src_top, + int alpha_flag, + void* pIccTransform) { + if (!m_pBuffer) { + return FALSE; + } + ASSERT(HasAlpha() && (m_bpp >= 24)); + ASSERT(pMask->IsAlphaMask()); + if (!HasAlpha() || !pMask->IsAlphaMask() || m_bpp < 24) { + return FALSE; + } + GetOverlapRect(dest_left, dest_top, width, height, pMask->GetWidth(), + pMask->GetHeight(), src_left, src_top, NULL); + if (width == 0 || height == 0) { + return TRUE; + } + int src_bpp = pMask->GetBPP(); + int alpha; + FX_DWORD dst_color; + if (alpha_flag >> 8) { + alpha = alpha_flag & 0xff; + dst_color = FXCMYK_TODIB(color); + } else { + alpha = FXARGB_A(color); + dst_color = FXARGB_TODIB(color); + } + uint8_t* color_p = (uint8_t*)&dst_color; + if (pIccTransform && CFX_GEModule::Get()->GetCodecModule() && + CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + pIccModule->TranslateScanline(pIccTransform, color_p, color_p, 1); + } else { + if (alpha_flag >> 8 && !IsCmykImage()) { + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), + FXSYS_GetYValue(color), FXSYS_GetKValue(color), + color_p[2], color_p[1], color_p[0]); + } else if (!(alpha_flag >> 8) && IsCmykImage()) { + return FALSE; + } + } + if (!IsCmykImage()) { + color_p[3] = (uint8_t)alpha; + } + if (GetFormat() == FXDIB_Argb) { + for (int row = 0; row < height; row++) { + FX_DWORD* dest_pos = + (FX_DWORD*)(m_pBuffer + (dest_top + row) * m_Pitch + dest_left * 4); + const uint8_t* src_scan = pMask->GetScanline(src_top + row); + if (src_bpp == 1) { + for (int col = 0; col < width; col++) { + int src_bitpos = src_left + col; + if (src_scan[src_bitpos / 8] & (1 << (7 - src_bitpos % 8))) { + *dest_pos = dst_color; + } else { + *dest_pos = 0; + } + dest_pos++; + } + } else { + src_scan += src_left; + dst_color = FXARGB_TODIB(dst_color); + dst_color &= 0xffffff; + for (int col = 0; col < width; col++) { + FXARGB_SETDIB(dest_pos++, + dst_color | ((alpha * (*src_scan++) / 255) << 24)); + } + } + } + } else { + int comps = m_bpp / 8; + for (int row = 0; row < height; row++) { + uint8_t* dest_color_pos = + m_pBuffer + (dest_top + row) * m_Pitch + dest_left * comps; + uint8_t* dest_alpha_pos = + (uint8_t*)m_pAlphaMask->GetScanline(dest_top + row) + dest_left; + const uint8_t* src_scan = pMask->GetScanline(src_top + row); + if (src_bpp == 1) { + for (int col = 0; col < width; col++) { + int src_bitpos = src_left + col; + if (src_scan[src_bitpos / 8] & (1 << (7 - src_bitpos % 8))) { + FXSYS_memcpy(dest_color_pos, color_p, comps); + *dest_alpha_pos = 0xff; + } else { + FXSYS_memset(dest_color_pos, 0, comps); + *dest_alpha_pos = 0; + } + dest_color_pos += comps; + dest_alpha_pos++; + } + } else { + src_scan += src_left; + for (int col = 0; col < width; col++) { + FXSYS_memcpy(dest_color_pos, color_p, comps); + dest_color_pos += comps; + *dest_alpha_pos++ = (alpha * (*src_scan++) / 255); + } + } + } + } + return TRUE; +} +void CFX_DIBSource::CopyPalette(const FX_DWORD* pSrc, FX_DWORD size) { + if (!pSrc || GetBPP() > 8) { + FX_Free(m_pPalette); + m_pPalette = NULL; + } else { + FX_DWORD pal_size = 1 << GetBPP(); + if (!m_pPalette) { + m_pPalette = FX_Alloc(FX_DWORD, pal_size); + } + if (pal_size > size) { + pal_size = size; + } + FXSYS_memcpy(m_pPalette, pSrc, pal_size * sizeof(FX_DWORD)); + } +} +void CFX_DIBSource::GetPalette(FX_DWORD* pal, int alpha) const { + ASSERT(GetBPP() <= 8 && !IsCmykImage()); + if (GetBPP() == 1) { + pal[0] = + ((m_pPalette ? m_pPalette[0] : 0xff000000) & 0xffffff) | (alpha << 24); + pal[1] = + ((m_pPalette ? m_pPalette[1] : 0xffffffff) & 0xffffff) | (alpha << 24); + return; + } + if (m_pPalette) { + for (int i = 0; i < 256; i++) { + pal[i] = (m_pPalette[i] & 0x00ffffff) | (alpha << 24); + } + } else { + for (int i = 0; i < 256; i++) { + pal[i] = (i * 0x10101) | (alpha << 24); + } + } +} +CFX_DIBitmap* CFX_DIBSource::GetAlphaMask(const FX_RECT* pClip) const { + ASSERT(GetFormat() == FXDIB_Argb); + FX_RECT rect(0, 0, m_Width, m_Height); + if (pClip) { + rect.Intersect(*pClip); + if (rect.IsEmpty()) { + return NULL; + } + } + CFX_DIBitmap* pMask = new CFX_DIBitmap; + if (!pMask->Create(rect.Width(), rect.Height(), FXDIB_8bppMask)) { + delete pMask; + return NULL; + } + for (int row = rect.top; row < rect.bottom; row++) { + const uint8_t* src_scan = GetScanline(row) + rect.left * 4 + 3; + uint8_t* dest_scan = (uint8_t*)pMask->GetScanline(row - rect.top); + for (int col = rect.left; col < rect.right; col++) { + *dest_scan++ = *src_scan; + src_scan += 4; + } + } + return pMask; +} +FX_BOOL CFX_DIBSource::CopyAlphaMask(const CFX_DIBSource* pAlphaMask, + const FX_RECT* pClip) { + if (!HasAlpha() || GetFormat() == FXDIB_Argb) { + return FALSE; + } + if (pAlphaMask) { + FX_RECT rect(0, 0, pAlphaMask->m_Width, pAlphaMask->m_Height); + if (pClip) { + rect.Intersect(*pClip); + if (rect.IsEmpty() || rect.Width() != m_Width || + rect.Height() != m_Height) { + return FALSE; + } + } else { + if (pAlphaMask->m_Width != m_Width || pAlphaMask->m_Height != m_Height) { + return FALSE; + } + } + for (int row = 0; row < m_Height; row++) + FXSYS_memcpy((void*)m_pAlphaMask->GetScanline(row), + pAlphaMask->GetScanline(row + rect.top) + rect.left, + m_pAlphaMask->m_Pitch); + } else { + m_pAlphaMask->Clear(0xff000000); + } + return TRUE; +} +const int g_ChannelOffset[] = {0, 2, 1, 0, 0, 1, 2, 3, 3}; +FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, + const CFX_DIBSource* pSrcBitmap, + FXDIB_Channel srcChannel) { + if (!m_pBuffer) { + return FALSE; + } + CFX_DIBSource* pSrcClone = (CFX_DIBSource*)pSrcBitmap; + CFX_DIBitmap* pDst = this; + int destOffset, srcOffset; + if (srcChannel == FXDIB_Alpha) { + if (!pSrcBitmap->HasAlpha() && !pSrcBitmap->IsAlphaMask()) { + return FALSE; + } + if (pSrcBitmap->GetBPP() == 1) { + pSrcClone = pSrcBitmap->CloneConvert(FXDIB_8bppMask); + if (!pSrcClone) { + return FALSE; + } + } + if (pSrcBitmap->GetFormat() == FXDIB_Argb) { + srcOffset = 3; + } else { + srcOffset = 0; + } + } else { + if (pSrcBitmap->IsAlphaMask()) { + return FALSE; + } + if (pSrcBitmap->GetBPP() < 24) { + if (pSrcBitmap->IsCmykImage()) { + pSrcClone = pSrcBitmap->CloneConvert( + (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x20)); + } else { + pSrcClone = pSrcBitmap->CloneConvert( + (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x18)); + } + if (!pSrcClone) { + return FALSE; + } + } + srcOffset = g_ChannelOffset[srcChannel]; + } + if (destChannel == FXDIB_Alpha) { + if (IsAlphaMask()) { + if (!ConvertFormat(FXDIB_8bppMask)) { + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } + destOffset = 0; + } else { + destOffset = 0; + if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } + if (GetFormat() == FXDIB_Argb) { + destOffset = 3; + } + } + } else { + if (IsAlphaMask()) { + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } + if (GetBPP() < 24) { + if (HasAlpha()) { + if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb32)) { +#else + } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb)) { +#endif + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } + } + destOffset = g_ChannelOffset[destChannel]; + } + if (srcChannel == FXDIB_Alpha && pSrcClone->m_pAlphaMask) { + CFX_DIBitmap* pAlphaMask = pSrcClone->m_pAlphaMask; + if (pSrcClone->GetWidth() != m_Width || + pSrcClone->GetHeight() != m_Height) { + if (pAlphaMask) { + pAlphaMask = pAlphaMask->StretchTo(m_Width, m_Height); + if (!pAlphaMask) { + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } + } + } + if (pSrcClone != pSrcBitmap) { + pSrcClone->m_pAlphaMask = NULL; + delete pSrcClone; + } + pSrcClone = pAlphaMask; + srcOffset = 0; + } else if (pSrcClone->GetWidth() != m_Width || + pSrcClone->GetHeight() != m_Height) { + CFX_DIBitmap* pSrcMatched = pSrcClone->StretchTo(m_Width, m_Height); + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + if (!pSrcMatched) { + return FALSE; + } + pSrcClone = pSrcMatched; + } + if (destChannel == FXDIB_Alpha && m_pAlphaMask) { + pDst = m_pAlphaMask; + destOffset = 0; + } + int srcBytes = pSrcClone->GetBPP() / 8; + int destBytes = pDst->GetBPP() / 8; + for (int row = 0; row < m_Height; row++) { + uint8_t* dest_pos = (uint8_t*)pDst->GetScanline(row) + destOffset; + const uint8_t* src_pos = pSrcClone->GetScanline(row) + srcOffset; + for (int col = 0; col < m_Width; col++) { + *dest_pos = *src_pos; + dest_pos += destBytes; + src_pos += srcBytes; + } + } + if (pSrcClone != pSrcBitmap && pSrcClone != pSrcBitmap->m_pAlphaMask) { + delete pSrcClone; + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, int value) { + if (!m_pBuffer) { + return FALSE; + } + int destOffset; + if (destChannel == FXDIB_Alpha) { + if (IsAlphaMask()) { + if (!ConvertFormat(FXDIB_8bppMask)) { + return FALSE; + } + destOffset = 0; + } else { + destOffset = 0; + if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { + return FALSE; + } + if (GetFormat() == FXDIB_Argb) { + destOffset = 3; + } + } + } else { + if (IsAlphaMask()) { + return FALSE; + } + if (GetBPP() < 24) { + if (HasAlpha()) { + if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { + return FALSE; + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb)) { +#else + } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb32)) { +#endif + return FALSE; + } + } + destOffset = g_ChannelOffset[destChannel]; + } + int Bpp = GetBPP() / 8; + if (Bpp == 1) { + FXSYS_memset(m_pBuffer, value, m_Height * m_Pitch); + return TRUE; + } + if (destChannel == FXDIB_Alpha && m_pAlphaMask) { + FXSYS_memset(m_pAlphaMask->GetBuffer(), value, + m_pAlphaMask->GetHeight() * m_pAlphaMask->GetPitch()); + return TRUE; + } + for (int row = 0; row < m_Height; row++) { + uint8_t* scan_line = m_pBuffer + row * m_Pitch + destOffset; + for (int col = 0; col < m_Width; col++) { + *scan_line = value; + scan_line += Bpp; + } + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::MultiplyAlpha(const CFX_DIBSource* pSrcBitmap) { + if (!m_pBuffer) { + return FALSE; + } + ASSERT(pSrcBitmap->IsAlphaMask()); + if (!pSrcBitmap->IsAlphaMask()) { + return FALSE; + } + if (!IsAlphaMask() && !HasAlpha()) { + return LoadChannel(FXDIB_Alpha, pSrcBitmap, FXDIB_Alpha); + } + CFX_DIBitmap* pSrcClone = (CFX_DIBitmap*)pSrcBitmap; + if (pSrcBitmap->GetWidth() != m_Width || + pSrcBitmap->GetHeight() != m_Height) { + pSrcClone = pSrcBitmap->StretchTo(m_Width, m_Height); + if (!pSrcClone) { + return FALSE; + } + } + if (IsAlphaMask()) { + if (!ConvertFormat(FXDIB_8bppMask)) { + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } + for (int row = 0; row < m_Height; row++) { + uint8_t* dest_scan = m_pBuffer + m_Pitch * row; + uint8_t* src_scan = pSrcClone->m_pBuffer + pSrcClone->m_Pitch * row; + if (pSrcClone->GetBPP() == 1) { + for (int col = 0; col < m_Width; col++) { + if (!((1 << (7 - col % 8)) & src_scan[col / 8])) { + dest_scan[col] = 0; + } + } + } else { + for (int col = 0; col < m_Width; col++) { + *dest_scan = (*dest_scan) * src_scan[col] / 255; + dest_scan++; + } + } + } + } else { + if (GetFormat() == FXDIB_Argb) { + if (pSrcClone->GetBPP() == 1) { + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return FALSE; + } + for (int row = 0; row < m_Height; row++) { + uint8_t* dest_scan = m_pBuffer + m_Pitch * row + 3; + uint8_t* src_scan = pSrcClone->m_pBuffer + pSrcClone->m_Pitch * row; + for (int col = 0; col < m_Width; col++) { + *dest_scan = (*dest_scan) * src_scan[col] / 255; + dest_scan += 4; + } + } + } else { + m_pAlphaMask->MultiplyAlpha(pSrcClone); + } + } + if (pSrcClone != pSrcBitmap) { + delete pSrcClone; + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::GetGrayData(void* pIccTransform) { + if (!m_pBuffer) { + return FALSE; + } + switch (GetFormat()) { + case FXDIB_1bppRgb: { + if (!m_pPalette) { + return FALSE; + } + uint8_t gray[2]; + for (int i = 0; i < 2; i++) { + int r = (uint8_t)(m_pPalette[i] >> 16); + int g = (uint8_t)(m_pPalette[i] >> 8); + int b = (uint8_t)m_pPalette[i]; + gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); + } + CFX_DIBitmap* pMask = new CFX_DIBitmap; + if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { + delete pMask; + return FALSE; + } + FXSYS_memset(pMask->GetBuffer(), gray[0], pMask->GetPitch() * m_Height); + for (int row = 0; row < m_Height; row++) { + uint8_t* src_pos = m_pBuffer + row * m_Pitch; + uint8_t* dest_pos = (uint8_t*)pMask->GetScanline(row); + for (int col = 0; col < m_Width; col++) { + if (src_pos[col / 8] & (1 << (7 - col % 8))) { + *dest_pos = gray[1]; + } + dest_pos++; + } + } + TakeOver(pMask); + delete pMask; + break; + } + case FXDIB_8bppRgb: { + if (!m_pPalette) { + return FALSE; + } + uint8_t gray[256]; + for (int i = 0; i < 256; i++) { + int r = (uint8_t)(m_pPalette[i] >> 16); + int g = (uint8_t)(m_pPalette[i] >> 8); + int b = (uint8_t)m_pPalette[i]; + gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); + } + CFX_DIBitmap* pMask = new CFX_DIBitmap; + if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { + delete pMask; + return FALSE; + } + for (int row = 0; row < m_Height; row++) { + uint8_t* dest_pos = pMask->GetBuffer() + row * pMask->GetPitch(); + uint8_t* src_pos = m_pBuffer + row * m_Pitch; + for (int col = 0; col < m_Width; col++) { + *dest_pos++ = gray[*src_pos++]; + } + } + TakeOver(pMask); + delete pMask; + break; + } + case FXDIB_Rgb: { + CFX_DIBitmap* pMask = new CFX_DIBitmap; + if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { + delete pMask; + return FALSE; + } + for (int row = 0; row < m_Height; row++) { + uint8_t* src_pos = m_pBuffer + row * m_Pitch; + uint8_t* dest_pos = pMask->GetBuffer() + row * pMask->GetPitch(); + for (int col = 0; col < m_Width; col++) { + *dest_pos++ = FXRGB2GRAY(src_pos[2], src_pos[1], *src_pos); + src_pos += 3; + } + } + TakeOver(pMask); + delete pMask; + break; + } + case FXDIB_Rgb32: { + CFX_DIBitmap* pMask = new CFX_DIBitmap; + if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { + delete pMask; + return FALSE; + } + for (int row = 0; row < m_Height; row++) { + uint8_t* src_pos = m_pBuffer + row * m_Pitch; + uint8_t* dest_pos = pMask->GetBuffer() + row * pMask->GetPitch(); + for (int col = 0; col < m_Width; col++) { + *dest_pos++ = FXRGB2GRAY(src_pos[2], src_pos[1], *src_pos); + src_pos += 4; + } + } + TakeOver(pMask); + delete pMask; + break; + } + default: + return FALSE; + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::MultiplyAlpha(int alpha) { + if (!m_pBuffer) { + return FALSE; + } + switch (GetFormat()) { + case FXDIB_1bppMask: + if (!ConvertFormat(FXDIB_8bppMask)) { + return FALSE; + } + MultiplyAlpha(alpha); + break; + case FXDIB_8bppMask: { + for (int row = 0; row < m_Height; row++) { + uint8_t* scan_line = m_pBuffer + row * m_Pitch; + for (int col = 0; col < m_Width; col++) { + scan_line[col] = scan_line[col] * alpha / 255; + } + } + break; + } + case FXDIB_Argb: { + for (int row = 0; row < m_Height; row++) { + uint8_t* scan_line = m_pBuffer + row * m_Pitch + 3; + for (int col = 0; col < m_Width; col++) { + *scan_line = (*scan_line) * alpha / 255; + scan_line += 4; + } + } + break; + } + default: + if (HasAlpha()) { + m_pAlphaMask->MultiplyAlpha(alpha); + } else if (IsCmykImage()) { + if (!ConvertFormat((FXDIB_Format)(GetFormat() | 0x0200))) { + return FALSE; + } + m_pAlphaMask->MultiplyAlpha(alpha); + } else { + if (!ConvertFormat(FXDIB_Argb)) { + return FALSE; + } + MultiplyAlpha(alpha); + } + break; + } + return TRUE; +} +FX_DWORD CFX_DIBitmap::GetPixel(int x, int y) const { + if (!m_pBuffer) { + return 0; + } + uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; + switch (GetFormat()) { + case FXDIB_1bppMask: { + if ((*pos) & (1 << (7 - x % 8))) { + return 0xff000000; + } + return 0; + } + case FXDIB_1bppRgb: { + if ((*pos) & (1 << (7 - x % 8))) { + return m_pPalette ? m_pPalette[1] : 0xffffffff; + } + return m_pPalette ? m_pPalette[0] : 0xff000000; + } + case FXDIB_8bppMask: + return (*pos) << 24; + case FXDIB_8bppRgb: + return m_pPalette ? m_pPalette[*pos] : (0xff000000 | ((*pos) * 0x10101)); + case FXDIB_Rgb: + case FXDIB_Rgba: + case FXDIB_Rgb32: + return FXARGB_GETDIB(pos) | 0xff000000; + case FXDIB_Argb: + return FXARGB_GETDIB(pos); + default: + break; + } + return 0; +} +void CFX_DIBitmap::SetPixel(int x, int y, FX_DWORD color) { + if (!m_pBuffer) { + return; + } + if (x < 0 || x >= m_Width || y < 0 || y >= m_Height) { + return; + } + uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; + switch (GetFormat()) { + case FXDIB_1bppMask: + if (color >> 24) { + *pos |= 1 << (7 - x % 8); + } else { + *pos &= ~(1 << (7 - x % 8)); + } + break; + case FXDIB_1bppRgb: + if (m_pPalette) { + if (color == m_pPalette[1]) { + *pos |= 1 << (7 - x % 8); + } else { + *pos &= ~(1 << (7 - x % 8)); + } + } else { + if (color == 0xffffffff) { + *pos |= 1 << (7 - x % 8); + } else { + *pos &= ~(1 << (7 - x % 8)); + } + } + break; + case FXDIB_8bppMask: + *pos = (uint8_t)(color >> 24); + break; + case FXDIB_8bppRgb: { + if (m_pPalette) { + for (int i = 0; i < 256; i++) { + if (m_pPalette[i] == color) { + *pos = (uint8_t)i; + return; + } + } + *pos = 0; + } else { + *pos = FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FXARGB_B(color)); + } + break; + } + case FXDIB_Rgb: + case FXDIB_Rgb32: { + int alpha = FXARGB_A(color); + pos[0] = (FXARGB_B(color) * alpha + pos[0] * (255 - alpha)) / 255; + pos[1] = (FXARGB_G(color) * alpha + pos[1] * (255 - alpha)) / 255; + pos[2] = (FXARGB_R(color) * alpha + pos[2] * (255 - alpha)) / 255; + break; + } + case FXDIB_Rgba: { + pos[0] = FXARGB_B(color); + pos[1] = FXARGB_G(color); + pos[2] = FXARGB_R(color); + break; + } + case FXDIB_Argb: + FXARGB_SETDIB(pos, color); + break; + default: + break; + } +} +void CFX_DIBitmap::DownSampleScanline(int line, + uint8_t* dest_scan, + int dest_bpp, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const { + if (!m_pBuffer) { + return; + } + int src_Bpp = m_bpp / 8; + uint8_t* scanline = m_pBuffer + line * m_Pitch; + if (src_Bpp == 0) { + for (int i = 0; i < clip_width; i++) { + FX_DWORD dest_x = clip_left + i; + FX_DWORD src_x = dest_x * m_Width / dest_width; + if (bFlipX) { + src_x = m_Width - src_x - 1; + } + src_x %= m_Width; + dest_scan[i] = (scanline[src_x / 8] & (1 << (7 - src_x % 8))) ? 255 : 0; + } + } else if (src_Bpp == 1) { + for (int i = 0; i < clip_width; i++) { + FX_DWORD dest_x = clip_left + i; + FX_DWORD src_x = dest_x * m_Width / dest_width; + if (bFlipX) { + src_x = m_Width - src_x - 1; + } + src_x %= m_Width; + int dest_pos = i; + if (m_pPalette) { + if (!IsCmykImage()) { + dest_pos *= 3; + FX_ARGB argb = m_pPalette[scanline[src_x]]; + dest_scan[dest_pos] = FXARGB_B(argb); + dest_scan[dest_pos + 1] = FXARGB_G(argb); + dest_scan[dest_pos + 2] = FXARGB_R(argb); + } else { + dest_pos *= 4; + FX_CMYK cmyk = m_pPalette[scanline[src_x]]; + dest_scan[dest_pos] = FXSYS_GetCValue(cmyk); + dest_scan[dest_pos + 1] = FXSYS_GetMValue(cmyk); + dest_scan[dest_pos + 2] = FXSYS_GetYValue(cmyk); + dest_scan[dest_pos + 3] = FXSYS_GetKValue(cmyk); + } + } else { + dest_scan[dest_pos] = scanline[src_x]; + } + } + } else { + for (int i = 0; i < clip_width; i++) { + FX_DWORD dest_x = clip_left + i; + FX_DWORD src_x = + bFlipX ? (m_Width - dest_x * m_Width / dest_width - 1) * src_Bpp + : (dest_x * m_Width / dest_width) * src_Bpp; + src_x %= m_Width * src_Bpp; + int dest_pos = i * src_Bpp; + for (int b = 0; b < src_Bpp; b++) { + dest_scan[dest_pos + b] = scanline[src_x + b]; + } + } + } +} +FX_BOOL CFX_DIBitmap::ConvertColorScale(FX_DWORD forecolor, + FX_DWORD backcolor) { + ASSERT(!IsAlphaMask()); + if (!m_pBuffer || IsAlphaMask()) { + return FALSE; + } + int fc, fm, fy, fk, bc, bm, by, bk; + int fr, fg, fb, br, bg, bb; + FX_BOOL isCmykImage = IsCmykImage(); + if (isCmykImage) { + fc = FXSYS_GetCValue(forecolor); + fm = FXSYS_GetMValue(forecolor); + fy = FXSYS_GetYValue(forecolor); + fk = FXSYS_GetKValue(forecolor); + bc = FXSYS_GetCValue(backcolor); + bm = FXSYS_GetMValue(backcolor); + by = FXSYS_GetYValue(backcolor); + bk = FXSYS_GetKValue(backcolor); + } else { + fr = FXSYS_GetRValue(forecolor); + fg = FXSYS_GetGValue(forecolor); + fb = FXSYS_GetBValue(forecolor); + br = FXSYS_GetRValue(backcolor); + bg = FXSYS_GetGValue(backcolor); + bb = FXSYS_GetBValue(backcolor); + } + if (m_bpp <= 8) { + if (isCmykImage) { + if (forecolor == 0xff && backcolor == 0 && !m_pPalette) { + return TRUE; + } + } else if (forecolor == 0 && backcolor == 0xffffff && !m_pPalette) { + return TRUE; + } + if (!m_pPalette) { + BuildPalette(); + } + int size = 1 << m_bpp; + if (isCmykImage) { + for (int i = 0; i < size; i++) { + uint8_t b, g, r; + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(m_pPalette[i]), + FXSYS_GetMValue(m_pPalette[i]), + FXSYS_GetYValue(m_pPalette[i]), + FXSYS_GetKValue(m_pPalette[i]), r, g, b); + int gray = 255 - FXRGB2GRAY(r, g, b); + m_pPalette[i] = CmykEncode( + bc + (fc - bc) * gray / 255, bm + (fm - bm) * gray / 255, + by + (fy - by) * gray / 255, bk + (fk - bk) * gray / 255); + } + } else { + for (int i = 0; i < size; i++) { + int gray = FXRGB2GRAY(FXARGB_R(m_pPalette[i]), FXARGB_G(m_pPalette[i]), + FXARGB_B(m_pPalette[i])); + m_pPalette[i] = FXARGB_MAKE(0xff, br + (fr - br) * gray / 255, + bg + (fg - bg) * gray / 255, + bb + (fb - bb) * gray / 255); + } + } + return TRUE; + } + if (isCmykImage) { + if (forecolor == 0xff && backcolor == 0x00) { + for (int row = 0; row < m_Height; row++) { + uint8_t* scanline = m_pBuffer + row * m_Pitch; + for (int col = 0; col < m_Width; col++) { + uint8_t b, g, r; + AdobeCMYK_to_sRGB1(scanline[0], scanline[1], scanline[2], scanline[3], + r, g, b); + *scanline++ = 0; + *scanline++ = 0; + *scanline++ = 0; + *scanline++ = 255 - FXRGB2GRAY(r, g, b); + } + } + return TRUE; + } + } else if (forecolor == 0 && backcolor == 0xffffff) { + for (int row = 0; row < m_Height; row++) { + uint8_t* scanline = m_pBuffer + row * m_Pitch; + int gap = m_bpp / 8 - 2; + for (int col = 0; col < m_Width; col++) { + int gray = FXRGB2GRAY(scanline[2], scanline[1], scanline[0]); + *scanline++ = gray; + *scanline++ = gray; + *scanline = gray; + scanline += gap; + } + } + return TRUE; + } + if (isCmykImage) { + for (int row = 0; row < m_Height; row++) { + uint8_t* scanline = m_pBuffer + row * m_Pitch; + for (int col = 0; col < m_Width; col++) { + uint8_t b, g, r; + AdobeCMYK_to_sRGB1(scanline[0], scanline[1], scanline[2], scanline[3], + r, g, b); + int gray = 255 - FXRGB2GRAY(r, g, b); + *scanline++ = bc + (fc - bc) * gray / 255; + *scanline++ = bm + (fm - bm) * gray / 255; + *scanline++ = by + (fy - by) * gray / 255; + *scanline++ = bk + (fk - bk) * gray / 255; + } + } + } else { + for (int row = 0; row < m_Height; row++) { + uint8_t* scanline = m_pBuffer + row * m_Pitch; + int gap = m_bpp / 8 - 2; + for (int col = 0; col < m_Width; col++) { + int gray = FXRGB2GRAY(scanline[2], scanline[1], scanline[0]); + *scanline++ = bb + (fb - bb) * gray / 255; + *scanline++ = bg + (fg - bg) * gray / 255; + *scanline = br + (fr - br) * gray / 255; + scanline += gap; + } + } + } + return TRUE; +} +FX_BOOL CFX_DIBitmap::DitherFS(const FX_DWORD* pPalette, + int pal_size, + const FX_RECT* pRect) { + if (!m_pBuffer) { + return FALSE; + } + if (m_bpp != 8 && m_pPalette && m_AlphaFlag != 0) { + return FALSE; + } + if (m_Width < 4 && m_Height < 4) { + return FALSE; + } + FX_RECT rect(0, 0, m_Width, m_Height); + if (pRect) { + rect.Intersect(*pRect); + } + uint8_t translate[256]; + for (int i = 0; i < 256; i++) { + int err2 = 65536; + for (int j = 0; j < pal_size; j++) { + uint8_t entry = (uint8_t)pPalette[j]; + int err = (int)entry - i; + if (err * err < err2) { + err2 = err * err; + translate[i] = entry; + } + } + } + for (int row = rect.top; row < rect.bottom; row++) { + uint8_t* scan = m_pBuffer + row * m_Pitch; + uint8_t* next_scan = m_pBuffer + (row + 1) * m_Pitch; + for (int col = rect.left; col < rect.right; col++) { + int src_pixel = scan[col]; + int dest_pixel = translate[src_pixel]; + scan[col] = (uint8_t)dest_pixel; + int error = -dest_pixel + src_pixel; + if (col < rect.right - 1) { + int src = scan[col + 1]; + src += error * 7 / 16; + if (src > 255) { + scan[col + 1] = 255; + } else if (src < 0) { + scan[col + 1] = 0; + } else { + scan[col + 1] = src; + } + } + if (col < rect.right - 1 && row < rect.bottom - 1) { + int src = next_scan[col + 1]; + src += error * 1 / 16; + if (src > 255) { + next_scan[col + 1] = 255; + } else if (src < 0) { + next_scan[col + 1] = 0; + } else { + next_scan[col + 1] = src; + } + } + if (row < rect.bottom - 1) { + int src = next_scan[col]; + src += error * 5 / 16; + if (src > 255) { + next_scan[col] = 255; + } else if (src < 0) { + next_scan[col] = 0; + } else { + next_scan[col] = src; + } + } + if (col > rect.left && row < rect.bottom - 1) { + int src = next_scan[col - 1]; + src += error * 3 / 16; + if (src > 255) { + next_scan[col - 1] = 255; + } else if (src < 0) { + next_scan[col - 1] = 0; + } else { + next_scan[col - 1] = src; + } + } + } + } + return TRUE; +} +CFX_DIBitmap* CFX_DIBSource::FlipImage(FX_BOOL bXFlip, FX_BOOL bYFlip) const { + CFX_DIBitmap* pFlipped = new CFX_DIBitmap; + if (!pFlipped->Create(m_Width, m_Height, GetFormat())) { + delete pFlipped; + return NULL; + } + pFlipped->CopyPalette(m_pPalette); + uint8_t* pDestBuffer = pFlipped->GetBuffer(); + int Bpp = m_bpp / 8; + for (int row = 0; row < m_Height; row++) { + const uint8_t* src_scan = GetScanline(row); + uint8_t* dest_scan = + pDestBuffer + m_Pitch * (bYFlip ? (m_Height - row - 1) : row); + if (!bXFlip) { + FXSYS_memcpy(dest_scan, src_scan, m_Pitch); + continue; + } + if (m_bpp == 1) { + FXSYS_memset(dest_scan, 0, m_Pitch); + for (int col = 0; col < m_Width; col++) + if (src_scan[col / 8] & (1 << (7 - col % 8))) { + int dest_col = m_Width - col - 1; + dest_scan[dest_col / 8] |= (1 << (7 - dest_col % 8)); + } + } else { + dest_scan += (m_Width - 1) * Bpp; + if (Bpp == 1) { + for (int col = 0; col < m_Width; col++) { + *dest_scan = *src_scan; + dest_scan--; + src_scan++; + } + } else if (Bpp == 3) { + for (int col = 0; col < m_Width; col++) { + dest_scan[0] = src_scan[0]; + dest_scan[1] = src_scan[1]; + dest_scan[2] = src_scan[2]; + dest_scan -= 3; + src_scan += 3; + } + } else { + ASSERT(Bpp == 4); + for (int col = 0; col < m_Width; col++) { + *(FX_DWORD*)dest_scan = *(FX_DWORD*)src_scan; + dest_scan -= 4; + src_scan += 4; + } + } + } + } + if (m_pAlphaMask) { + pDestBuffer = pFlipped->m_pAlphaMask->GetBuffer(); + FX_DWORD dest_pitch = pFlipped->m_pAlphaMask->GetPitch(); + for (int row = 0; row < m_Height; row++) { + const uint8_t* src_scan = m_pAlphaMask->GetScanline(row); + uint8_t* dest_scan = + pDestBuffer + dest_pitch * (bYFlip ? (m_Height - row - 1) : row); + if (!bXFlip) { + FXSYS_memcpy(dest_scan, src_scan, dest_pitch); + continue; + } + dest_scan += (m_Width - 1); + for (int col = 0; col < m_Width; col++) { + *dest_scan = *src_scan; + dest_scan--; + src_scan++; + } + } + } + return pFlipped; +} +CFX_DIBExtractor::CFX_DIBExtractor(const CFX_DIBSource* pSrc) { + m_pBitmap = NULL; + if (pSrc->GetBuffer()) { + m_pBitmap = new CFX_DIBitmap; + if (!m_pBitmap->Create(pSrc->GetWidth(), pSrc->GetHeight(), + pSrc->GetFormat(), pSrc->GetBuffer())) { + delete m_pBitmap; + m_pBitmap = NULL; + return; + } + m_pBitmap->CopyPalette(pSrc->GetPalette()); + m_pBitmap->CopyAlphaMask(pSrc->m_pAlphaMask); + } else { + m_pBitmap = pSrc->Clone(); + } +} +CFX_DIBExtractor::~CFX_DIBExtractor() { + delete m_pBitmap; +} +CFX_FilteredDIB::CFX_FilteredDIB() { + m_pScanline = NULL; + m_pSrc = NULL; +} +CFX_FilteredDIB::~CFX_FilteredDIB() { + if (m_bAutoDropSrc) { + delete m_pSrc; + } + FX_Free(m_pScanline); +} +void CFX_FilteredDIB::LoadSrc(const CFX_DIBSource* pSrc, FX_BOOL bAutoDropSrc) { + m_pSrc = pSrc; + m_bAutoDropSrc = bAutoDropSrc; + m_Width = pSrc->GetWidth(); + m_Height = pSrc->GetHeight(); + FXDIB_Format format = GetDestFormat(); + m_bpp = (uint8_t)format; + m_AlphaFlag = (uint8_t)(format >> 8); + m_Pitch = (m_Width * (format & 0xff) + 31) / 32 * 4; + m_pPalette = GetDestPalette(); + m_pScanline = FX_Alloc(uint8_t, m_Pitch); +} +const uint8_t* CFX_FilteredDIB::GetScanline(int line) const { + TranslateScanline(m_pScanline, m_pSrc->GetScanline(line)); + return m_pScanline; +} +void CFX_FilteredDIB::DownSampleScanline(int line, + uint8_t* dest_scan, + int dest_bpp, + int dest_width, + FX_BOOL bFlipX, + int clip_left, + int clip_width) const { + m_pSrc->DownSampleScanline(line, dest_scan, dest_bpp, dest_width, bFlipX, + clip_left, clip_width); + TranslateDownSamples(dest_scan, dest_scan, clip_width, dest_bpp); +} +CFX_ImageRenderer::CFX_ImageRenderer() { + m_Status = 0; + m_pTransformer = NULL; + m_bRgbByteOrder = FALSE; + m_BlendType = FXDIB_BLEND_NORMAL; +} +CFX_ImageRenderer::~CFX_ImageRenderer() { + delete m_pTransformer; +} +FX_BOOL CFX_ImageRenderer::Start(CFX_DIBitmap* pDevice, + const CFX_ClipRgn* pClipRgn, + const CFX_DIBSource* pSource, + int bitmap_alpha, + FX_DWORD mask_color, + const CFX_Matrix* pMatrix, + FX_DWORD dib_flags, + FX_BOOL bRgbByteOrder, + int alpha_flag, + void* pIccTransform, + int blend_type) { + m_Matrix = *pMatrix; + CFX_FloatRect image_rect_f = m_Matrix.GetUnitRect(); + FX_RECT image_rect = image_rect_f.GetOutterRect(); + m_ClipBox = pClipRgn ? pClipRgn->GetBox() : FX_RECT(0, 0, pDevice->GetWidth(), + pDevice->GetHeight()); + m_ClipBox.Intersect(image_rect); + if (m_ClipBox.IsEmpty()) { + return FALSE; + } + m_pDevice = pDevice; + m_pClipRgn = pClipRgn; + m_MaskColor = mask_color; + m_BitmapAlpha = bitmap_alpha; + m_Matrix = *pMatrix; + m_Flags = dib_flags; + m_AlphaFlag = alpha_flag; + m_pIccTransform = pIccTransform; + m_bRgbByteOrder = bRgbByteOrder; + m_BlendType = blend_type; + FX_BOOL ret = TRUE; + if ((FXSYS_fabs(m_Matrix.b) >= 0.5f || m_Matrix.a == 0) || + (FXSYS_fabs(m_Matrix.c) >= 0.5f || m_Matrix.d == 0)) { + if (FXSYS_fabs(m_Matrix.a) < FXSYS_fabs(m_Matrix.b) / 20 && + FXSYS_fabs(m_Matrix.d) < FXSYS_fabs(m_Matrix.c) / 20 && + FXSYS_fabs(m_Matrix.a) < 0.5f && FXSYS_fabs(m_Matrix.d) < 0.5f) { + int dest_width = image_rect.Width(); + int dest_height = image_rect.Height(); + FX_RECT bitmap_clip = m_ClipBox; + bitmap_clip.Offset(-image_rect.left, -image_rect.top); + bitmap_clip = FXDIB_SwapClipBox(bitmap_clip, dest_width, dest_height, + m_Matrix.c > 0, m_Matrix.b < 0); + m_Composer.Compose(pDevice, pClipRgn, bitmap_alpha, mask_color, m_ClipBox, + TRUE, m_Matrix.c > 0, m_Matrix.b < 0, m_bRgbByteOrder, + alpha_flag, pIccTransform, m_BlendType); + if (!m_Stretcher.Start(&m_Composer, pSource, dest_height, dest_width, + bitmap_clip, dib_flags)) { + return FALSE; + } + m_Status = 1; + return TRUE; + } + m_Status = 2; + m_pTransformer = new CFX_ImageTransformer; + m_pTransformer->Start(pSource, &m_Matrix, dib_flags, &m_ClipBox); + return TRUE; + } + int dest_width = image_rect.Width(); + if (m_Matrix.a < 0) { + dest_width = -dest_width; + } + int dest_height = image_rect.Height(); + if (m_Matrix.d > 0) { + dest_height = -dest_height; + } + if (dest_width == 0 || dest_height == 0) { + return FALSE; + } + FX_RECT bitmap_clip = m_ClipBox; + bitmap_clip.Offset(-image_rect.left, -image_rect.top); + m_Composer.Compose(pDevice, pClipRgn, bitmap_alpha, mask_color, m_ClipBox, + FALSE, FALSE, FALSE, m_bRgbByteOrder, alpha_flag, + pIccTransform, m_BlendType); + m_Status = 1; + ret = m_Stretcher.Start(&m_Composer, pSource, dest_width, dest_height, + bitmap_clip, dib_flags); + return ret; +} +FX_BOOL CFX_ImageRenderer::Continue(IFX_Pause* pPause) { + if (m_Status == 1) { + return m_Stretcher.Continue(pPause); + } + if (m_Status == 2) { + if (m_pTransformer->Continue(pPause)) { + return TRUE; + } + CFX_DIBitmap* pBitmap = m_pTransformer->m_Storer.Detach(); + if (!pBitmap) { + return FALSE; + } + if (!pBitmap->GetBuffer()) { + delete pBitmap; + return FALSE; + } + if (pBitmap->IsAlphaMask()) { + if (m_BitmapAlpha != 255) { + if (m_AlphaFlag >> 8) { + m_AlphaFlag = + (((uint8_t)((m_AlphaFlag & 0xff) * m_BitmapAlpha / 255)) | + ((m_AlphaFlag >> 8) << 8)); + } else { + m_MaskColor = FXARGB_MUL_ALPHA(m_MaskColor, m_BitmapAlpha); + } + } + m_pDevice->CompositeMask(m_pTransformer->m_ResultLeft, + m_pTransformer->m_ResultTop, pBitmap->GetWidth(), + pBitmap->GetHeight(), pBitmap, m_MaskColor, 0, 0, + m_BlendType, m_pClipRgn, m_bRgbByteOrder, + m_AlphaFlag, m_pIccTransform); + } else { + if (m_BitmapAlpha != 255) { + pBitmap->MultiplyAlpha(m_BitmapAlpha); + } + m_pDevice->CompositeBitmap( + m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop, + pBitmap->GetWidth(), pBitmap->GetHeight(), pBitmap, 0, 0, m_BlendType, + m_pClipRgn, m_bRgbByteOrder, m_pIccTransform); + } + delete pBitmap; + return FALSE; + } + return FALSE; +} +CFX_BitmapStorer::CFX_BitmapStorer() { + m_pBitmap = NULL; +} +CFX_BitmapStorer::~CFX_BitmapStorer() { + delete m_pBitmap; +} +CFX_DIBitmap* CFX_BitmapStorer::Detach() { + CFX_DIBitmap* pBitmap = m_pBitmap; + m_pBitmap = NULL; + return pBitmap; +} +void CFX_BitmapStorer::Replace(CFX_DIBitmap* pBitmap) { + delete m_pBitmap; + m_pBitmap = pBitmap; +} +void CFX_BitmapStorer::ComposeScanline(int line, + const uint8_t* scanline, + const uint8_t* scan_extra_alpha) { + uint8_t* dest_buf = (uint8_t*)m_pBitmap->GetScanline(line); + uint8_t* dest_alpha_buf = + m_pBitmap->m_pAlphaMask + ? (uint8_t*)m_pBitmap->m_pAlphaMask->GetScanline(line) + : NULL; + if (dest_buf) { + FXSYS_memcpy(dest_buf, scanline, m_pBitmap->GetPitch()); + } + if (dest_alpha_buf) { + FXSYS_memcpy(dest_alpha_buf, scan_extra_alpha, + m_pBitmap->m_pAlphaMask->GetPitch()); + } +} +FX_BOOL CFX_BitmapStorer::SetInfo(int width, + int height, + FXDIB_Format src_format, + FX_DWORD* pSrcPalette) { + m_pBitmap = new CFX_DIBitmap; + if (!m_pBitmap->Create(width, height, src_format)) { + delete m_pBitmap; + m_pBitmap = NULL; + return FALSE; + } + if (pSrcPalette) { + m_pBitmap->CopyPalette(pSrcPalette); + } + return TRUE; +} diff --git a/core/fxge/dib/fx_dib_transform.cpp b/core/fxge/dib/fx_dib_transform.cpp new file mode 100644 index 0000000000..dc6fb93c75 --- /dev/null +++ b/core/fxge/dib/fx_dib_transform.cpp @@ -0,0 +1,948 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/dib/dib_int.h" + +#include "core/include/fxge/fx_dib.h" + +namespace { + +uint8_t bilinear_interpol(const uint8_t* buf, + int row_offset_l, + int row_offset_r, + int src_col_l, + int src_col_r, + int res_x, + int res_y, + int bpp, + int c_offset) { + int i_resx = 255 - res_x; + int col_bpp_l = src_col_l * bpp; + int col_bpp_r = src_col_r * bpp; + const uint8_t* buf_u = buf + row_offset_l + c_offset; + const uint8_t* buf_d = buf + row_offset_r + c_offset; + const uint8_t* src_pos0 = buf_u + col_bpp_l; + const uint8_t* src_pos1 = buf_u + col_bpp_r; + const uint8_t* src_pos2 = buf_d + col_bpp_l; + const uint8_t* src_pos3 = buf_d + col_bpp_r; + uint8_t r_pos_0 = (*src_pos0 * i_resx + *src_pos1 * res_x) >> 8; + uint8_t r_pos_1 = (*src_pos2 * i_resx + *src_pos3 * res_x) >> 8; + return (r_pos_0 * (255 - res_y) + r_pos_1 * res_y) >> 8; +} + +uint8_t bicubic_interpol(const uint8_t* buf, + int pitch, + int pos_pixel[], + int u_w[], + int v_w[], + int res_x, + int res_y, + int bpp, + int c_offset) { + int s_result = 0; + for (int i = 0; i < 4; i++) { + int a_result = 0; + for (int j = 0; j < 4; j++) { + a_result += u_w[j] * (*(uint8_t*)(buf + pos_pixel[i + 4] * pitch + + pos_pixel[j] * bpp + c_offset)); + } + s_result += a_result * v_w[i]; + } + s_result >>= 16; + return (uint8_t)(s_result < 0 ? 0 : s_result > 255 ? 255 : s_result); +} + +void bicubic_get_pos_weight(int pos_pixel[], + int u_w[], + int v_w[], + int src_col_l, + int src_row_l, + int res_x, + int res_y, + int stretch_width, + int stretch_height) { + pos_pixel[0] = src_col_l - 1; + pos_pixel[1] = src_col_l; + pos_pixel[2] = src_col_l + 1; + pos_pixel[3] = src_col_l + 2; + pos_pixel[4] = src_row_l - 1; + pos_pixel[5] = src_row_l; + pos_pixel[6] = src_row_l + 1; + pos_pixel[7] = src_row_l + 2; + for (int i = 0; i < 4; i++) { + if (pos_pixel[i] < 0) { + pos_pixel[i] = 0; + } + if (pos_pixel[i] >= stretch_width) { + pos_pixel[i] = stretch_width - 1; + } + if (pos_pixel[i + 4] < 0) { + pos_pixel[i + 4] = 0; + } + if (pos_pixel[i + 4] >= stretch_height) { + pos_pixel[i + 4] = stretch_height - 1; + } + } + u_w[0] = SDP_Table[256 + res_x]; + u_w[1] = SDP_Table[res_x]; + u_w[2] = SDP_Table[256 - res_x]; + u_w[3] = SDP_Table[512 - res_x]; + v_w[0] = SDP_Table[256 + res_y]; + v_w[1] = SDP_Table[res_y]; + v_w[2] = SDP_Table[256 - res_y]; + v_w[3] = SDP_Table[512 - res_y]; +} + +FXDIB_Format GetTransformedFormat(const CFX_DIBSource* pDrc) { + FXDIB_Format format = pDrc->GetFormat(); + if (pDrc->IsAlphaMask()) { + format = FXDIB_8bppMask; + } else if (format >= 1025) { + format = FXDIB_Cmyka; + } else if (format <= 32 || format == FXDIB_Argb) { + format = FXDIB_Argb; + } else { + format = FXDIB_Rgba; + } + return format; +} + +} // namespace + +const int16_t SDP_Table[513] = { + 256, 256, 256, 256, 256, 256, 256, 256, 256, 255, 255, 255, 255, 255, 255, + 254, 254, 254, 254, 253, 253, 253, 252, 252, 252, 251, 251, 251, 250, 250, + 249, 249, 249, 248, 248, 247, 247, 246, 246, 245, 244, 244, 243, 243, 242, + 242, 241, 240, 240, 239, 238, 238, 237, 236, 236, 235, 234, 233, 233, 232, + 231, 230, 230, 229, 228, 227, 226, 226, 225, 224, 223, 222, 221, 220, 219, + 218, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, + 204, 203, 202, 201, 200, 199, 198, 196, 195, 194, 193, 192, 191, 190, 189, + 188, 186, 185, 184, 183, 182, 181, 179, 178, 177, 176, 175, 173, 172, 171, + 170, 169, 167, 166, 165, 164, 162, 161, 160, 159, 157, 156, 155, 154, 152, + 151, 150, 149, 147, 146, 145, 143, 142, 141, 140, 138, 137, 136, 134, 133, + 132, 130, 129, 128, 126, 125, 124, 122, 121, 120, 119, 117, 116, 115, 113, + 112, 111, 109, 108, 107, 105, 104, 103, 101, 100, 99, 97, 96, 95, 93, + 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 73, + 72, 71, 69, 68, 67, 66, 64, 63, 62, 60, 59, 58, 57, 55, 54, + 53, 52, 50, 49, 48, 47, 45, 44, 43, 42, 40, 39, 38, 37, 36, + 34, 33, 32, 31, 30, 28, 27, 26, 25, 24, 23, 21, 20, 19, 18, + 17, 16, 15, 14, 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, + 1, 0, 0, -1, -2, -3, -4, -5, -6, -7, -7, -8, -9, -10, -11, + -12, -12, -13, -14, -15, -15, -16, -17, -17, -18, -19, -19, -20, -21, -21, + -22, -22, -23, -24, -24, -25, -25, -26, -26, -27, -27, -27, -28, -28, -29, + -29, -30, -30, -30, -31, -31, -31, -32, -32, -32, -33, -33, -33, -33, -34, + -34, -34, -34, -35, -35, -35, -35, -35, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, + -37, -37, -37, -37, -37, -37, -37, -37, -36, -36, -36, -36, -36, -36, -36, + -36, -36, -35, -35, -35, -35, -35, -35, -34, -34, -34, -34, -34, -33, -33, + -33, -33, -33, -32, -32, -32, -32, -31, -31, -31, -31, -30, -30, -30, -30, + -29, -29, -29, -29, -28, -28, -28, -27, -27, -27, -27, -26, -26, -26, -25, + -25, -25, -24, -24, -24, -23, -23, -23, -22, -22, -22, -22, -21, -21, -21, + -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, + -15, -15, -15, -14, -14, -14, -13, -13, -13, -12, -12, -12, -11, -11, -11, + -10, -10, -10, -9, -9, -9, -9, -8, -8, -8, -7, -7, -7, -7, -6, + -6, -6, -6, -5, -5, -5, -5, -4, -4, -4, -4, -3, -3, -3, -3, + -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, +}; + +class CFX_BilinearMatrix : public CPDF_FixedMatrix { + public: + CFX_BilinearMatrix(const CFX_Matrix& src, int bits) + : CPDF_FixedMatrix(src, bits) {} + inline void Transform(int x, + int y, + int& x1, + int& y1, + int& res_x, + int& res_y) { + x1 = a * x + c * y + e + base / 2; + y1 = b * x + d * y + f + base / 2; + res_x = x1 % base; + res_y = y1 % base; + if (res_x < 0 && res_x > -base) { + res_x = base + res_x; + } + if (res_y < 0 && res_x > -base) { + res_y = base + res_y; + } + x1 /= base; + y1 /= base; + } +}; +CFX_DIBitmap* CFX_DIBSource::SwapXY(FX_BOOL bXFlip, + FX_BOOL bYFlip, + const FX_RECT* pDestClip) const { + FX_RECT dest_clip(0, 0, m_Height, m_Width); + if (pDestClip) { + dest_clip.Intersect(*pDestClip); + } + if (dest_clip.IsEmpty()) { + return NULL; + } + CFX_DIBitmap* pTransBitmap = new CFX_DIBitmap; + int result_height = dest_clip.Height(), result_width = dest_clip.Width(); + if (!pTransBitmap->Create(result_width, result_height, GetFormat())) { + delete pTransBitmap; + return NULL; + } + pTransBitmap->CopyPalette(m_pPalette); + int dest_pitch = pTransBitmap->GetPitch(); + uint8_t* dest_buf = pTransBitmap->GetBuffer(); + int row_start = bXFlip ? m_Height - dest_clip.right : dest_clip.left; + int row_end = bXFlip ? m_Height - dest_clip.left : dest_clip.right; + int col_start = bYFlip ? m_Width - dest_clip.bottom : dest_clip.top; + int col_end = bYFlip ? m_Width - dest_clip.top : dest_clip.bottom; + if (GetBPP() == 1) { + FXSYS_memset(dest_buf, 0xff, dest_pitch * result_height); + for (int row = row_start; row < row_end; row++) { + const uint8_t* src_scan = GetScanline(row); + int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - + dest_clip.left; + uint8_t* dest_scan = dest_buf; + if (bYFlip) { + dest_scan += (result_height - 1) * dest_pitch; + } + int dest_step = bYFlip ? -dest_pitch : dest_pitch; + for (int col = col_start; col < col_end; col++) { + if (!(src_scan[col / 8] & (1 << (7 - col % 8)))) { + dest_scan[dest_col / 8] &= ~(1 << (7 - dest_col % 8)); + } + dest_scan += dest_step; + } + } + } else { + int nBytes = GetBPP() / 8; + int dest_step = bYFlip ? -dest_pitch : dest_pitch; + if (nBytes == 3) { + dest_step -= 2; + } + for (int row = row_start; row < row_end; row++) { + int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - + dest_clip.left; + uint8_t* dest_scan = dest_buf + dest_col * nBytes; + if (bYFlip) { + dest_scan += (result_height - 1) * dest_pitch; + } + if (nBytes == 4) { + FX_DWORD* src_scan = (FX_DWORD*)GetScanline(row) + col_start; + for (int col = col_start; col < col_end; col++) { + *(FX_DWORD*)dest_scan = *src_scan++; + dest_scan += dest_step; + } + } else { + const uint8_t* src_scan = GetScanline(row) + col_start * nBytes; + if (nBytes == 1) { + for (int col = col_start; col < col_end; col++) { + *dest_scan = *src_scan++; + dest_scan += dest_step; + } + } else { + for (int col = col_start; col < col_end; col++) { + *dest_scan++ = *src_scan++; + *dest_scan++ = *src_scan++; + *dest_scan = *src_scan++; + dest_scan += dest_step; + } + } + } + } + } + if (m_pAlphaMask) { + dest_pitch = pTransBitmap->m_pAlphaMask->GetPitch(); + dest_buf = pTransBitmap->m_pAlphaMask->GetBuffer(); + int dest_step = bYFlip ? -dest_pitch : dest_pitch; + for (int row = row_start; row < row_end; row++) { + int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - + dest_clip.left; + uint8_t* dest_scan = dest_buf + dest_col; + if (bYFlip) { + dest_scan += (result_height - 1) * dest_pitch; + } + const uint8_t* src_scan = m_pAlphaMask->GetScanline(row) + col_start; + for (int col = col_start; col < col_end; col++) { + *dest_scan = *src_scan++; + dest_scan += dest_step; + } + } + } + return pTransBitmap; +} +#define FIX16_005 0.05f +FX_RECT FXDIB_SwapClipBox(FX_RECT& clip, + int width, + int height, + FX_BOOL bFlipX, + FX_BOOL bFlipY) { + FX_RECT rect; + if (bFlipY) { + rect.left = height - clip.top; + rect.right = height - clip.bottom; + } else { + rect.left = clip.top; + rect.right = clip.bottom; + } + if (bFlipX) { + rect.top = width - clip.left; + rect.bottom = width - clip.right; + } else { + rect.top = clip.left; + rect.bottom = clip.right; + } + rect.Normalize(); + return rect; +} +CFX_DIBitmap* CFX_DIBSource::TransformTo(const CFX_Matrix* pDestMatrix, + int& result_left, + int& result_top, + FX_DWORD flags, + const FX_RECT* pDestClip) const { + CFX_ImageTransformer transformer; + transformer.Start(this, pDestMatrix, flags, pDestClip); + transformer.Continue(NULL); + result_left = transformer.m_ResultLeft; + result_top = transformer.m_ResultTop; + CFX_DIBitmap* pTransformed = transformer.m_Storer.Detach(); + return pTransformed; +} +CFX_DIBitmap* CFX_DIBSource::StretchTo(int dest_width, + int dest_height, + FX_DWORD flags, + const FX_RECT* pClip) const { + FX_RECT clip_rect(0, 0, FXSYS_abs(dest_width), FXSYS_abs(dest_height)); + if (pClip) { + clip_rect.Intersect(*pClip); + } + if (clip_rect.IsEmpty()) { + return NULL; + } + if (dest_width == m_Width && dest_height == m_Height) { + return Clone(&clip_rect); + } + CFX_ImageStretcher stretcher; + CFX_BitmapStorer storer; + if (stretcher.Start(&storer, this, dest_width, dest_height, clip_rect, + flags)) { + stretcher.Continue(NULL); + } + return storer.Detach(); +} +CFX_ImageTransformer::CFX_ImageTransformer() { + m_Status = 0; + m_pMatrix = NULL; +} +CFX_ImageTransformer::~CFX_ImageTransformer() {} +FX_BOOL CFX_ImageTransformer::Start(const CFX_DIBSource* pSrc, + const CFX_Matrix* pDestMatrix, + int flags, + const FX_RECT* pDestClip) { + m_pMatrix = (CFX_Matrix*)pDestMatrix; + CFX_FloatRect unit_rect = pDestMatrix->GetUnitRect(); + FX_RECT result_rect = unit_rect.GetClosestRect(); + FX_RECT result_clip = result_rect; + if (pDestClip) { + result_clip.Intersect(*pDestClip); + } + if (result_clip.IsEmpty()) { + return FALSE; + } + m_ResultLeft = result_clip.left; + m_ResultTop = result_clip.top; + m_ResultWidth = result_clip.Width(); + m_ResultHeight = result_clip.Height(); + m_Flags = flags; + if (FXSYS_fabs(pDestMatrix->a) < FXSYS_fabs(pDestMatrix->b) / 20 && + FXSYS_fabs(pDestMatrix->d) < FXSYS_fabs(pDestMatrix->c) / 20 && + FXSYS_fabs(pDestMatrix->a) < 0.5f && FXSYS_fabs(pDestMatrix->d) < 0.5f) { + int dest_width = result_rect.Width(); + int dest_height = result_rect.Height(); + result_clip.Offset(-result_rect.left, -result_rect.top); + result_clip = FXDIB_SwapClipBox(result_clip, dest_width, dest_height, + pDestMatrix->c > 0, pDestMatrix->b < 0); + m_Stretcher.Start(&m_Storer, pSrc, dest_height, dest_width, result_clip, + flags); + m_Status = 1; + return TRUE; + } + if (FXSYS_fabs(pDestMatrix->b) < FIX16_005 && + FXSYS_fabs(pDestMatrix->c) < FIX16_005) { + int dest_width = pDestMatrix->a > 0 ? (int)FXSYS_ceil(pDestMatrix->a) + : (int)FXSYS_floor(pDestMatrix->a); + int dest_height = pDestMatrix->d > 0 ? (int)-FXSYS_ceil(pDestMatrix->d) + : (int)-FXSYS_floor(pDestMatrix->d); + result_clip.Offset(-result_rect.left, -result_rect.top); + m_Stretcher.Start(&m_Storer, pSrc, dest_width, dest_height, result_clip, + flags); + m_Status = 2; + return TRUE; + } + int stretch_width = + (int)FXSYS_ceil(FXSYS_sqrt2(pDestMatrix->a, pDestMatrix->b)); + int stretch_height = + (int)FXSYS_ceil(FXSYS_sqrt2(pDestMatrix->c, pDestMatrix->d)); + CFX_Matrix stretch2dest(1.0f, 0.0f, 0.0f, -1.0f, 0.0f, + (FX_FLOAT)(stretch_height)); + stretch2dest.Concat( + pDestMatrix->a / stretch_width, pDestMatrix->b / stretch_width, + pDestMatrix->c / stretch_height, pDestMatrix->d / stretch_height, + pDestMatrix->e, pDestMatrix->f); + m_dest2stretch.SetReverse(stretch2dest); + CFX_FloatRect clip_rect_f(result_clip); + clip_rect_f.Transform(&m_dest2stretch); + m_StretchClip = clip_rect_f.GetOutterRect(); + m_StretchClip.Intersect(0, 0, stretch_width, stretch_height); + m_Stretcher.Start(&m_Storer, pSrc, stretch_width, stretch_height, + m_StretchClip, flags); + m_Status = 3; + return TRUE; +} + +FX_BOOL CFX_ImageTransformer::Continue(IFX_Pause* pPause) { + if (m_Status == 1) { + if (m_Stretcher.Continue(pPause)) { + return TRUE; + } + if (m_Storer.GetBitmap()) { + m_Storer.Replace( + m_Storer.GetBitmap()->SwapXY(m_pMatrix->c > 0, m_pMatrix->b < 0)); + } + return FALSE; + } + if (m_Status == 2) { + return m_Stretcher.Continue(pPause); + } + if (m_Status != 3) { + return FALSE; + } + if (m_Stretcher.Continue(pPause)) { + return TRUE; + } + int stretch_width = m_StretchClip.Width(); + int stretch_height = m_StretchClip.Height(); + if (!m_Storer.GetBitmap()) { + return FALSE; + } + const uint8_t* stretch_buf = m_Storer.GetBitmap()->GetBuffer(); + const uint8_t* stretch_buf_mask = NULL; + if (m_Storer.GetBitmap()->m_pAlphaMask) { + stretch_buf_mask = m_Storer.GetBitmap()->m_pAlphaMask->GetBuffer(); + } + int stretch_pitch = m_Storer.GetBitmap()->GetPitch(); + CFX_DIBitmap* pTransformed = new CFX_DIBitmap; + FXDIB_Format transformF = GetTransformedFormat(m_Stretcher.m_pSource); + if (!pTransformed->Create(m_ResultWidth, m_ResultHeight, transformF)) { + delete pTransformed; + return FALSE; + } + pTransformed->Clear(0); + if (pTransformed->m_pAlphaMask) { + pTransformed->m_pAlphaMask->Clear(0); + } + CFX_Matrix result2stretch(1.0f, 0.0f, 0.0f, 1.0f, (FX_FLOAT)(m_ResultLeft), + (FX_FLOAT)(m_ResultTop)); + result2stretch.Concat(m_dest2stretch); + result2stretch.TranslateI(-m_StretchClip.left, -m_StretchClip.top); + if (!stretch_buf_mask && pTransformed->m_pAlphaMask) { + pTransformed->m_pAlphaMask->Clear(0xff000000); + } else if (pTransformed->m_pAlphaMask) { + int stretch_pitch_mask = m_Storer.GetBitmap()->m_pAlphaMask->GetPitch(); + if (!(m_Flags & FXDIB_DOWNSAMPLE) && !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos_mask = + (uint8_t*)pTransformed->m_pAlphaMask->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && + src_row_l <= stretch_height) { + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + int src_col_r = src_col_l + 1; + int src_row_r = src_row_l + 1; + if (src_col_r == stretch_width) { + src_col_r--; + } + if (src_row_r == stretch_height) { + src_row_r--; + } + int row_offset_l = src_row_l * stretch_pitch_mask; + int row_offset_r = src_row_r * stretch_pitch_mask; + *dest_pos_mask = + bilinear_interpol(stretch_buf_mask, row_offset_l, row_offset_r, + src_col_l, src_col_r, res_x, res_y, 1, 0); + } + dest_pos_mask++; + } + } + } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos_mask = + (uint8_t*)pTransformed->m_pAlphaMask->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && + src_row_l <= stretch_height) { + int pos_pixel[8]; + int u_w[4], v_w[4]; + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, + res_x, res_y, stretch_width, stretch_height); + *dest_pos_mask = + bicubic_interpol(stretch_buf_mask, stretch_pitch_mask, + pos_pixel, u_w, v_w, res_x, res_y, 1, 0); + } + dest_pos_mask++; + } + } + } else { + CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos_mask = + (uint8_t*)pTransformed->m_pAlphaMask->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col, src_row; + result2stretch_fix.Transform(col, row, src_col, src_row); + if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && + src_row <= stretch_height) { + if (src_col == stretch_width) { + src_col--; + } + if (src_row == stretch_height) { + src_row--; + } + *dest_pos_mask = + stretch_buf_mask[src_row * stretch_pitch_mask + src_col]; + } + dest_pos_mask++; + } + } + } + } + if (m_Storer.GetBitmap()->IsAlphaMask()) { + if (!(m_Flags & FXDIB_DOWNSAMPLE) && !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_scan = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && + src_row_l <= stretch_height) { + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + int src_col_r = src_col_l + 1; + int src_row_r = src_row_l + 1; + if (src_col_r == stretch_width) { + src_col_r--; + } + if (src_row_r == stretch_height) { + src_row_r--; + } + int row_offset_l = src_row_l * stretch_pitch; + int row_offset_r = src_row_r * stretch_pitch; + *dest_scan = + bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, + src_col_l, src_col_r, res_x, res_y, 1, 0); + } + dest_scan++; + } + } + } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_scan = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && + src_row_l <= stretch_height) { + int pos_pixel[8]; + int u_w[4], v_w[4]; + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, + res_x, res_y, stretch_width, stretch_height); + *dest_scan = bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, + u_w, v_w, res_x, res_y, 1, 0); + } + dest_scan++; + } + } + } else { + CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_scan = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col, src_row; + result2stretch_fix.Transform(col, row, src_col, src_row); + if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && + src_row <= stretch_height) { + if (src_col == stretch_width) { + src_col--; + } + if (src_row == stretch_height) { + src_row--; + } + const uint8_t* src_pixel = + stretch_buf + stretch_pitch * src_row + src_col; + *dest_scan = *src_pixel; + } + dest_scan++; + } + } + } + } else { + int Bpp = m_Storer.GetBitmap()->GetBPP() / 8; + int destBpp = pTransformed->GetBPP() / 8; + if (Bpp == 1) { + FX_DWORD argb[256]; + FX_ARGB* pPal = m_Storer.GetBitmap()->GetPalette(); + if (pPal) { + for (int i = 0; i < 256; i++) { + argb[i] = pPal[i]; + } + } else { + if (m_Storer.GetBitmap()->IsCmykImage()) { + for (int i = 0; i < 256; i++) { + argb[i] = 255 - i; + } + } else { + for (int i = 0; i < 256; i++) { + argb[i] = 0xff000000 | (i * 0x010101); + } + } + } + if (!(m_Flags & FXDIB_DOWNSAMPLE) && + !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && + src_row_l >= 0 && src_row_l <= stretch_height) { + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + int src_col_r = src_col_l + 1; + int src_row_r = src_row_l + 1; + if (src_col_r == stretch_width) { + src_col_r--; + } + if (src_row_r == stretch_height) { + src_row_r--; + } + int row_offset_l = src_row_l * stretch_pitch; + int row_offset_r = src_row_r * stretch_pitch; + FX_DWORD r_bgra_cmyk = argb[bilinear_interpol( + stretch_buf, row_offset_l, row_offset_r, src_col_l, src_col_r, + res_x, res_y, 1, 0)]; + if (transformF == FXDIB_Rgba) { + dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); + dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); + dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); + } else { + *(FX_DWORD*)dest_pos = r_bgra_cmyk; + } + } + dest_pos += destBpp; + } + } + } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && + src_row_l >= 0 && src_row_l <= stretch_height) { + int pos_pixel[8]; + int u_w[4], v_w[4]; + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, + res_x, res_y, stretch_width, + stretch_height); + FX_DWORD r_bgra_cmyk = + argb[bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, + u_w, v_w, res_x, res_y, 1, 0)]; + if (transformF == FXDIB_Rgba) { + dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); + dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); + dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); + } else { + *(FX_DWORD*)dest_pos = r_bgra_cmyk; + } + } + dest_pos += destBpp; + } + } + } else { + CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col, src_row; + result2stretch_fix.Transform(col, row, src_col, src_row); + if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && + src_row <= stretch_height) { + if (src_col == stretch_width) { + src_col--; + } + if (src_row == stretch_height) { + src_row--; + } + FX_DWORD r_bgra_cmyk = + argb[stretch_buf[src_row * stretch_pitch + src_col]]; + if (transformF == FXDIB_Rgba) { + dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); + dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); + dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); + } else { + *(FX_DWORD*)dest_pos = r_bgra_cmyk; + } + } + dest_pos += destBpp; + } + } + } + } else { + FX_BOOL bHasAlpha = m_Storer.GetBitmap()->HasAlpha(); + int destBpp = pTransformed->GetBPP() / 8; + if (!(m_Flags & FXDIB_DOWNSAMPLE) && + !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y, r_pos_k_r = 0; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && + src_row_l >= 0 && src_row_l <= stretch_height) { + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + int src_col_r = src_col_l + 1; + int src_row_r = src_row_l + 1; + if (src_col_r == stretch_width) { + src_col_r--; + } + if (src_row_r == stretch_height) { + src_row_r--; + } + int row_offset_l = src_row_l * stretch_pitch; + int row_offset_r = src_row_r * stretch_pitch; + uint8_t r_pos_red_y_r = + bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, + src_col_l, src_col_r, res_x, res_y, Bpp, 2); + uint8_t r_pos_green_m_r = + bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, + src_col_l, src_col_r, res_x, res_y, Bpp, 1); + uint8_t r_pos_blue_c_r = + bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, + src_col_l, src_col_r, res_x, res_y, Bpp, 0); + if (bHasAlpha) { + if (transformF != FXDIB_Argb) { + if (transformF == FXDIB_Rgba) { + dest_pos[0] = r_pos_blue_c_r; + dest_pos[1] = r_pos_green_m_r; + dest_pos[2] = r_pos_red_y_r; + } else { + r_pos_k_r = bilinear_interpol( + stretch_buf, row_offset_l, row_offset_r, src_col_l, + src_col_r, res_x, res_y, Bpp, 3); + *(FX_DWORD*)dest_pos = + FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, + r_pos_red_y_r, r_pos_k_r)); + } + } else { + uint8_t r_pos_a_r = bilinear_interpol( + stretch_buf, row_offset_l, row_offset_r, src_col_l, + src_col_r, res_x, res_y, Bpp, 3); + *(FX_DWORD*)dest_pos = FXARGB_TODIB( + FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, + r_pos_blue_c_r)); + } + } else { + r_pos_k_r = 0xff; + if (transformF == FXDIB_Cmyka) { + r_pos_k_r = bilinear_interpol( + stretch_buf, row_offset_l, row_offset_r, src_col_l, + src_col_r, res_x, res_y, Bpp, 3); + *(FX_DWORD*)dest_pos = + FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, + r_pos_red_y_r, r_pos_k_r)); + } else { + *(FX_DWORD*)dest_pos = FXARGB_TODIB( + FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, + r_pos_blue_c_r)); + } + } + } + dest_pos += destBpp; + } + } + } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { + CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col_l, src_row_l, res_x, res_y, r_pos_k_r = 0; + result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, + res_y); + if (src_col_l >= 0 && src_col_l <= stretch_width && + src_row_l >= 0 && src_row_l <= stretch_height) { + int pos_pixel[8]; + int u_w[4], v_w[4]; + if (src_col_l == stretch_width) { + src_col_l--; + } + if (src_row_l == stretch_height) { + src_row_l--; + } + bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, + res_x, res_y, stretch_width, + stretch_height); + uint8_t r_pos_red_y_r = + bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, u_w, + v_w, res_x, res_y, Bpp, 2); + uint8_t r_pos_green_m_r = + bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, u_w, + v_w, res_x, res_y, Bpp, 1); + uint8_t r_pos_blue_c_r = + bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, u_w, + v_w, res_x, res_y, Bpp, 0); + if (bHasAlpha) { + if (transformF != FXDIB_Argb) { + if (transformF == FXDIB_Rgba) { + dest_pos[0] = r_pos_blue_c_r; + dest_pos[1] = r_pos_green_m_r; + dest_pos[2] = r_pos_red_y_r; + } else { + r_pos_k_r = + bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, + u_w, v_w, res_x, res_y, Bpp, 3); + *(FX_DWORD*)dest_pos = + FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, + r_pos_red_y_r, r_pos_k_r)); + } + } else { + uint8_t r_pos_a_r = + bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, + u_w, v_w, res_x, res_y, Bpp, 3); + *(FX_DWORD*)dest_pos = FXARGB_TODIB( + FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, + r_pos_blue_c_r)); + } + } else { + r_pos_k_r = 0xff; + if (transformF == FXDIB_Cmyka) { + r_pos_k_r = + bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, + u_w, v_w, res_x, res_y, Bpp, 3); + *(FX_DWORD*)dest_pos = + FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, + r_pos_red_y_r, r_pos_k_r)); + } else { + *(FX_DWORD*)dest_pos = FXARGB_TODIB( + FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, + r_pos_blue_c_r)); + } + } + } + dest_pos += destBpp; + } + } + } else { + CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); + for (int row = 0; row < m_ResultHeight; row++) { + uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); + for (int col = 0; col < m_ResultWidth; col++) { + int src_col, src_row; + result2stretch_fix.Transform(col, row, src_col, src_row); + if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && + src_row <= stretch_height) { + if (src_col == stretch_width) { + src_col--; + } + if (src_row == stretch_height) { + src_row--; + } + const uint8_t* src_pos = + stretch_buf + src_row * stretch_pitch + src_col * Bpp; + if (bHasAlpha) { + if (transformF != FXDIB_Argb) { + if (transformF == FXDIB_Rgba) { + dest_pos[0] = src_pos[0]; + dest_pos[1] = src_pos[1]; + dest_pos[2] = src_pos[2]; + } else { + *(FX_DWORD*)dest_pos = FXCMYK_TODIB(CmykEncode( + src_pos[0], src_pos[1], src_pos[2], src_pos[3])); + } + } else { + *(FX_DWORD*)dest_pos = FXARGB_TODIB(FXARGB_MAKE( + src_pos[3], src_pos[2], src_pos[1], src_pos[0])); + } + } else { + if (transformF == FXDIB_Cmyka) { + *(FX_DWORD*)dest_pos = FXCMYK_TODIB(CmykEncode( + src_pos[0], src_pos[1], src_pos[2], src_pos[3])); + } else { + *(FX_DWORD*)dest_pos = FXARGB_TODIB( + FXARGB_MAKE(0xff, src_pos[2], src_pos[1], src_pos[0])); + } + } + } + dest_pos += destBpp; + } + } + } + } + } + m_Storer.Replace(pTransformed); + return FALSE; +} diff --git a/core/fxge/fontdata/chromefontdata/FoxitDingbats.cpp b/core/fxge/fontdata/chromefontdata/FoxitDingbats.cpp new file mode 100644 index 0000000000..75088cef5d --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitDingbats.cpp @@ -0,0 +1,2469 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitDingbatsFontData[29513] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x11, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x44, 0x69, 0x6e, 0x67, 0x62, 0x61, 0x74, 0x73, 0x4f, 0x54, + 0x46, 0x0, 0x1, 0x1, 0x1, 0x25, 0xf8, 0x10, 0x0, 0xf8, 0xe4, 0x1, + 0xf8, 0xe5, 0x2, 0xf8, 0xe5, 0x3, 0xf8, 0xe6, 0x4, 0x8a, 0xfb, 0x38, + 0xfa, 0x69, 0xf9, 0xce, 0x5, 0x1c, 0x4, 0xdc, 0xf, 0x1c, 0x4, 0xe3, + 0x11, 0xa7, 0x1c, 0x6e, 0x3f, 0x12, 0x0, 0xcc, 0x2, 0x0, 0x1, 0x0, + 0x3, 0x0, 0x6, 0x0, 0xa, 0x0, 0xe, 0x0, 0x12, 0x0, 0x16, 0x0, + 0x1a, 0x0, 0x1e, 0x0, 0x22, 0x0, 0x26, 0x0, 0x2a, 0x0, 0x2e, 0x0, + 0x31, 0x0, 0x35, 0x0, 0x39, 0x0, 0x3d, 0x0, 0x41, 0x0, 0x45, 0x0, + 0x49, 0x0, 0x4c, 0x0, 0x50, 0x0, 0x54, 0x0, 0x58, 0x0, 0x5c, 0x0, + 0x60, 0x0, 0x64, 0x0, 0x68, 0x0, 0x6c, 0x0, 0x70, 0x0, 0x74, 0x0, + 0x77, 0x0, 0x7b, 0x0, 0x7f, 0x0, 0x83, 0x0, 0x87, 0x0, 0x8b, 0x0, + 0x8f, 0x0, 0x93, 0x0, 0x97, 0x0, 0x9b, 0x0, 0x9f, 0x0, 0xa2, 0x0, + 0xa6, 0x0, 0xaa, 0x0, 0xae, 0x0, 0xb2, 0x0, 0xb6, 0x0, 0xba, 0x0, + 0xbe, 0x0, 0xc2, 0x0, 0xc6, 0x0, 0xca, 0x0, 0xcd, 0x0, 0xd1, 0x0, + 0xd5, 0x0, 0xd9, 0x0, 0xdd, 0x0, 0xe1, 0x0, 0xe5, 0x0, 0xe9, 0x0, + 0xed, 0x0, 0xf1, 0x0, 0xf5, 0x0, 0xf8, 0x0, 0xfc, 0x1, 0x0, 0x1, + 0x4, 0x1, 0x8, 0x1, 0xc, 0x1, 0x10, 0x1, 0x14, 0x1, 0x18, 0x1, + 0x1c, 0x1, 0x20, 0x1, 0x23, 0x1, 0x27, 0x1, 0x2b, 0x1, 0x2f, 0x1, + 0x33, 0x1, 0x37, 0x1, 0x3b, 0x1, 0x3f, 0x1, 0x43, 0x1, 0x47, 0x1, + 0x4b, 0x1, 0x4e, 0x1, 0x52, 0x1, 0x56, 0x1, 0x5a, 0x1, 0x5e, 0x1, + 0x62, 0x1, 0x66, 0x1, 0x6a, 0x1, 0x6e, 0x1, 0x72, 0x1, 0x76, 0x1, + 0x79, 0x1, 0x7d, 0x1, 0x81, 0x1, 0x85, 0x1, 0x89, 0x1, 0x8d, 0x1, + 0x91, 0x1, 0x95, 0x1, 0x99, 0x1, 0x9d, 0x1, 0xa1, 0x1, 0xa3, 0x1, + 0xa6, 0x1, 0xaa, 0x1, 0xae, 0x1, 0xb2, 0x1, 0xb6, 0x1, 0xba, 0x1, + 0xbe, 0x1, 0xc2, 0x1, 0xc5, 0x1, 0xc8, 0x1, 0xcb, 0x1, 0xce, 0x1, + 0xd1, 0x1, 0xd4, 0x1, 0xd7, 0x1, 0xda, 0x1, 0xdd, 0x1, 0xdf, 0x1, + 0xe2, 0x1, 0xe5, 0x1, 0xe8, 0x1, 0xeb, 0x1, 0xee, 0x1, 0xf1, 0x1, + 0xf4, 0x1, 0xf7, 0x1, 0xfa, 0x1, 0xfd, 0x1, 0xff, 0x2, 0x2, 0x2, + 0x5, 0x2, 0x8, 0x2, 0xb, 0x2, 0xe, 0x2, 0x11, 0x2, 0x14, 0x2, + 0x17, 0x2, 0x1a, 0x2, 0x1d, 0x2, 0x1f, 0x2, 0x22, 0x2, 0x25, 0x2, + 0x28, 0x2, 0x2b, 0x2, 0x2e, 0x2, 0x31, 0x2, 0x34, 0x2, 0x37, 0x2, + 0x3a, 0x2, 0x3d, 0x2, 0x3f, 0x2, 0x42, 0x2, 0x45, 0x2, 0x48, 0x2, + 0x4b, 0x2, 0x4e, 0x2, 0x51, 0x2, 0x54, 0x2, 0x57, 0x2, 0x5a, 0x2, + 0x5d, 0x2, 0x5f, 0x2, 0x62, 0x2, 0x65, 0x2, 0x68, 0x2, 0x6b, 0x2, + 0x6e, 0x2, 0x71, 0x2, 0x74, 0x2, 0x77, 0x2, 0x7a, 0x2, 0x7d, 0x2, + 0x7f, 0x2, 0x82, 0x2, 0x85, 0x2, 0x88, 0x2, 0x8b, 0x2, 0x8e, 0x2, + 0x91, 0x2, 0x94, 0x2, 0x97, 0x2, 0x9a, 0x2, 0x9c, 0x2, 0x9f, 0x2, + 0xa2, 0x2, 0xa5, 0x2, 0xa8, 0x2, 0xab, 0x2, 0xae, 0x2, 0xb1, 0x2, + 0xb4, 0x2, 0xb7, 0x2, 0xba, 0x2, 0xe4, 0x2, 0xf6, 0x2, 0xfc, 0x61, + 0x31, 0x61, 0x31, 0x30, 0x61, 0x31, 0x30, 0x30, 0x61, 0x31, 0x30, 0x31, + 0x61, 0x31, 0x30, 0x32, 0x61, 0x31, 0x30, 0x33, 0x61, 0x31, 0x30, 0x34, + 0x61, 0x31, 0x30, 0x35, 0x61, 0x31, 0x30, 0x36, 0x61, 0x31, 0x30, 0x37, + 0x61, 0x31, 0x30, 0x38, 0x61, 0x31, 0x30, 0x39, 0x61, 0x31, 0x31, 0x61, + 0x31, 0x31, 0x30, 0x61, 0x31, 0x31, 0x31, 0x61, 0x31, 0x31, 0x32, 0x61, + 0x31, 0x31, 0x37, 0x61, 0x31, 0x31, 0x38, 0x61, 0x31, 0x31, 0x39, 0x61, + 0x31, 0x32, 0x61, 0x31, 0x32, 0x30, 0x61, 0x31, 0x32, 0x31, 0x61, 0x31, + 0x32, 0x32, 0x61, 0x31, 0x32, 0x33, 0x61, 0x31, 0x32, 0x34, 0x61, 0x31, + 0x32, 0x35, 0x61, 0x31, 0x32, 0x36, 0x61, 0x31, 0x32, 0x37, 0x61, 0x31, + 0x32, 0x38, 0x61, 0x31, 0x32, 0x39, 0x61, 0x31, 0x33, 0x61, 0x31, 0x33, + 0x30, 0x61, 0x31, 0x33, 0x31, 0x61, 0x31, 0x33, 0x32, 0x61, 0x31, 0x33, + 0x33, 0x61, 0x31, 0x33, 0x34, 0x61, 0x31, 0x33, 0x35, 0x61, 0x31, 0x33, + 0x36, 0x61, 0x31, 0x33, 0x37, 0x61, 0x31, 0x33, 0x38, 0x61, 0x31, 0x33, + 0x39, 0x61, 0x31, 0x34, 0x61, 0x31, 0x34, 0x30, 0x61, 0x31, 0x34, 0x31, + 0x61, 0x31, 0x34, 0x32, 0x61, 0x31, 0x34, 0x33, 0x61, 0x31, 0x34, 0x34, + 0x61, 0x31, 0x34, 0x35, 0x61, 0x31, 0x34, 0x36, 0x61, 0x31, 0x34, 0x37, + 0x61, 0x31, 0x34, 0x38, 0x61, 0x31, 0x34, 0x39, 0x61, 0x31, 0x35, 0x61, + 0x31, 0x35, 0x30, 0x61, 0x31, 0x35, 0x31, 0x61, 0x31, 0x35, 0x32, 0x61, + 0x31, 0x35, 0x33, 0x61, 0x31, 0x35, 0x34, 0x61, 0x31, 0x35, 0x35, 0x61, + 0x31, 0x35, 0x36, 0x61, 0x31, 0x35, 0x37, 0x61, 0x31, 0x35, 0x38, 0x61, + 0x31, 0x35, 0x39, 0x61, 0x31, 0x36, 0x61, 0x31, 0x36, 0x30, 0x61, 0x31, + 0x36, 0x31, 0x61, 0x31, 0x36, 0x32, 0x61, 0x31, 0x36, 0x33, 0x61, 0x31, + 0x36, 0x34, 0x61, 0x31, 0x36, 0x35, 0x61, 0x31, 0x36, 0x36, 0x61, 0x31, + 0x36, 0x37, 0x61, 0x31, 0x36, 0x38, 0x61, 0x31, 0x36, 0x39, 0x61, 0x31, + 0x37, 0x61, 0x31, 0x37, 0x30, 0x61, 0x31, 0x37, 0x31, 0x61, 0x31, 0x37, + 0x32, 0x61, 0x31, 0x37, 0x33, 0x61, 0x31, 0x37, 0x34, 0x61, 0x31, 0x37, + 0x35, 0x61, 0x31, 0x37, 0x36, 0x61, 0x31, 0x37, 0x37, 0x61, 0x31, 0x37, + 0x38, 0x61, 0x31, 0x37, 0x39, 0x61, 0x31, 0x38, 0x61, 0x31, 0x38, 0x30, + 0x61, 0x31, 0x38, 0x31, 0x61, 0x31, 0x38, 0x32, 0x61, 0x31, 0x38, 0x33, + 0x61, 0x31, 0x38, 0x34, 0x61, 0x31, 0x38, 0x35, 0x61, 0x31, 0x38, 0x36, + 0x61, 0x31, 0x38, 0x37, 0x61, 0x31, 0x38, 0x38, 0x61, 0x31, 0x38, 0x39, + 0x61, 0x31, 0x39, 0x61, 0x31, 0x39, 0x30, 0x61, 0x31, 0x39, 0x31, 0x61, + 0x31, 0x39, 0x32, 0x61, 0x31, 0x39, 0x33, 0x61, 0x31, 0x39, 0x34, 0x61, + 0x31, 0x39, 0x35, 0x61, 0x31, 0x39, 0x36, 0x61, 0x31, 0x39, 0x37, 0x61, + 0x31, 0x39, 0x38, 0x61, 0x31, 0x39, 0x39, 0x61, 0x32, 0x61, 0x32, 0x30, + 0x61, 0x32, 0x30, 0x30, 0x61, 0x32, 0x30, 0x31, 0x61, 0x32, 0x30, 0x32, + 0x61, 0x32, 0x30, 0x33, 0x61, 0x32, 0x30, 0x34, 0x61, 0x32, 0x30, 0x35, + 0x61, 0x32, 0x30, 0x36, 0x61, 0x32, 0x31, 0x61, 0x32, 0x32, 0x61, 0x32, + 0x33, 0x61, 0x32, 0x34, 0x61, 0x32, 0x35, 0x61, 0x32, 0x36, 0x61, 0x32, + 0x37, 0x61, 0x32, 0x38, 0x61, 0x32, 0x39, 0x61, 0x33, 0x61, 0x33, 0x30, + 0x61, 0x33, 0x31, 0x61, 0x33, 0x32, 0x61, 0x33, 0x33, 0x61, 0x33, 0x34, + 0x61, 0x33, 0x35, 0x61, 0x33, 0x36, 0x61, 0x33, 0x37, 0x61, 0x33, 0x38, + 0x61, 0x33, 0x39, 0x61, 0x34, 0x61, 0x34, 0x30, 0x61, 0x34, 0x31, 0x61, + 0x34, 0x32, 0x61, 0x34, 0x33, 0x61, 0x34, 0x34, 0x61, 0x34, 0x35, 0x61, + 0x34, 0x36, 0x61, 0x34, 0x37, 0x61, 0x34, 0x38, 0x61, 0x34, 0x39, 0x61, + 0x35, 0x61, 0x35, 0x30, 0x61, 0x35, 0x31, 0x61, 0x35, 0x32, 0x61, 0x35, + 0x33, 0x61, 0x35, 0x34, 0x61, 0x35, 0x35, 0x61, 0x35, 0x36, 0x61, 0x35, + 0x37, 0x61, 0x35, 0x38, 0x61, 0x35, 0x39, 0x61, 0x36, 0x61, 0x36, 0x30, + 0x61, 0x36, 0x31, 0x61, 0x36, 0x32, 0x61, 0x36, 0x33, 0x61, 0x36, 0x34, + 0x61, 0x36, 0x35, 0x61, 0x36, 0x36, 0x61, 0x36, 0x37, 0x61, 0x36, 0x38, + 0x61, 0x36, 0x39, 0x61, 0x37, 0x61, 0x37, 0x30, 0x61, 0x37, 0x31, 0x61, + 0x37, 0x32, 0x61, 0x37, 0x33, 0x61, 0x37, 0x34, 0x61, 0x37, 0x35, 0x61, + 0x37, 0x36, 0x61, 0x37, 0x37, 0x61, 0x37, 0x38, 0x61, 0x37, 0x39, 0x61, + 0x38, 0x61, 0x38, 0x31, 0x61, 0x38, 0x32, 0x61, 0x38, 0x33, 0x61, 0x38, + 0x34, 0x61, 0x38, 0x35, 0x61, 0x38, 0x36, 0x61, 0x38, 0x37, 0x61, 0x38, + 0x38, 0x61, 0x38, 0x39, 0x61, 0x39, 0x61, 0x39, 0x30, 0x61, 0x39, 0x31, + 0x61, 0x39, 0x32, 0x61, 0x39, 0x33, 0x61, 0x39, 0x34, 0x61, 0x39, 0x35, + 0x61, 0x39, 0x36, 0x61, 0x39, 0x37, 0x61, 0x39, 0x38, 0x61, 0x39, 0x39, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, + 0x44, 0x69, 0x6e, 0x67, 0x62, 0x61, 0x74, 0x73, 0x20, 0x4f, 0x54, 0x46, + 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x0, 0x0, 0x1, 0x1, 0x87, 0xc8, + 0x0, 0x1, 0x0, 0x0, 0xcb, 0x2, 0x0, 0x1, 0x0, 0x4, 0x1, 0x3, + 0x1, 0x8d, 0x1, 0xfa, 0x2, 0x4a, 0x2, 0x95, 0x2, 0xe3, 0x3, 0x25, + 0x3, 0x71, 0x3, 0xc9, 0x4, 0xe0, 0x6, 0x2f, 0x6, 0x9f, 0x7, 0xcc, + 0x8, 0x9, 0x8, 0x4e, 0x8, 0xce, 0x9, 0x5d, 0xb, 0x1d, 0xc, 0xf8, + 0xe, 0x27, 0xe, 0x74, 0xe, 0xe7, 0xf, 0x55, 0xf, 0xa7, 0x10, 0x36, + 0x10, 0x90, 0x10, 0xde, 0x11, 0x71, 0x12, 0x22, 0x12, 0xaa, 0x14, 0x21, + 0x14, 0x5e, 0x14, 0xca, 0x15, 0x6f, 0x15, 0xce, 0x16, 0x5e, 0x16, 0xe9, + 0x17, 0x2d, 0x17, 0xa2, 0x18, 0x1c, 0x18, 0xaa, 0x1a, 0x1f, 0x1a, 0x45, + 0x1a, 0x95, 0x1a, 0xfe, 0x1b, 0x34, 0x1b, 0x91, 0x1c, 0xa, 0x1c, 0x3e, + 0x1c, 0xbf, 0x1d, 0x35, 0x1d, 0x97, 0x1d, 0xe3, 0x1e, 0x1, 0x1e, 0x56, + 0x1e, 0xbc, 0x1e, 0xfa, 0x1f, 0x45, 0x1f, 0xa3, 0x1f, 0xcd, 0x20, 0x42, + 0x20, 0xa9, 0x21, 0x14, 0x21, 0x57, 0x21, 0x87, 0x21, 0xb7, 0x21, 0xcc, + 0x22, 0x15, 0x22, 0x5f, 0x22, 0x8f, 0x23, 0x15, 0x23, 0x69, 0x23, 0x8f, + 0x23, 0xb6, 0x24, 0x5f, 0x24, 0xa1, 0x24, 0xf7, 0x25, 0x18, 0x25, 0x2b, + 0x25, 0x40, 0x25, 0x72, 0x25, 0xa2, 0x25, 0xc4, 0x25, 0xf4, 0x26, 0x38, + 0x26, 0xa7, 0x26, 0xfc, 0x27, 0x3c, 0x27, 0x82, 0x27, 0xc8, 0x28, 0x22, + 0x28, 0x67, 0x28, 0xca, 0x29, 0x3f, 0x29, 0xa5, 0x29, 0xcb, 0x2a, 0x28, + 0x2a, 0x4d, 0x2a, 0x81, 0x2a, 0xb0, 0x2a, 0xf3, 0x2b, 0x4e, 0x2b, 0xbc, + 0x2b, 0xec, 0x2c, 0x47, 0x2c, 0xb5, 0x2d, 0xc, 0x2d, 0xcd, 0x2e, 0x37, + 0x2e, 0x78, 0x2e, 0xbf, 0x2f, 0x84, 0x2f, 0xb8, 0x2f, 0xdf, 0x30, 0x10, + 0x30, 0x2d, 0x30, 0xaf, 0x31, 0x34, 0x31, 0xf2, 0x32, 0xcd, 0x33, 0x1a, + 0x33, 0x46, 0x33, 0x7e, 0x33, 0xb6, 0x36, 0x8, 0x36, 0xf2, 0x38, 0x52, + 0x39, 0x3f, 0x3b, 0x97, 0x3c, 0x1a, 0x3c, 0x82, 0x3c, 0xb1, 0x3d, 0x6, + 0x3d, 0x60, 0x3d, 0xb0, 0x3d, 0xdd, 0x40, 0x4b, 0x40, 0x76, 0x40, 0xb1, + 0x41, 0x1b, 0x41, 0x81, 0x41, 0xbf, 0x42, 0x1b, 0x42, 0xa2, 0x43, 0x2, + 0x45, 0xaf, 0x45, 0xe5, 0x47, 0xc, 0x47, 0xb8, 0x47, 0xfc, 0x48, 0x55, + 0x49, 0x91, 0x4a, 0xda, 0x4b, 0xee, 0x4c, 0xb1, 0x4e, 0x67, 0x4f, 0x36, + 0x51, 0x49, 0x51, 0x6f, 0x54, 0xde, 0x55, 0x5e, 0x58, 0xd9, 0x59, 0xc7, + 0x5a, 0xb9, 0x5b, 0xa5, 0x5c, 0xb1, 0x5d, 0xb9, 0x5e, 0x95, 0x60, 0xef, + 0x61, 0x45, 0x62, 0xd, 0x62, 0x38, 0x62, 0x8b, 0x62, 0x9a, 0x62, 0xcb, + 0x62, 0xf5, 0x63, 0x9, 0x63, 0x20, 0x63, 0x36, 0x63, 0x8e, 0x63, 0xf7, + 0x64, 0x17, 0x64, 0x24, 0x64, 0x32, 0x64, 0x42, 0x64, 0x72, 0x64, 0x8c, + 0x64, 0xaa, 0x64, 0xca, 0x65, 0x2, 0x65, 0x74, 0x65, 0xad, 0x65, 0xc5, + 0x65, 0xdb, 0x66, 0xb, 0x66, 0x3b, 0x66, 0x8f, 0x66, 0xe5, 0x67, 0x29, + 0x67, 0x6c, 0x67, 0xbf, 0x67, 0xc2, 0xfc, 0xc5, 0xe, 0xf7, 0x1b, 0xf7, + 0x18, 0x9f, 0x9d, 0xae, 0xbf, 0xb9, 0x88, 0xa6, 0x71, 0xa6, 0xf7, 0x6a, + 0xb3, 0x64, 0xb3, 0x12, 0xf8, 0xfa, 0xac, 0xa2, 0xb1, 0x65, 0xf7, 0x15, + 0xfb, 0x13, 0xf7, 0x12, 0x9f, 0xb5, 0x62, 0xb5, 0xbe, 0xbb, 0x5c, 0xbb, + 0x13, 0xe5, 0x34, 0xf9, 0x33, 0xf7, 0x95, 0x15, 0xbb, 0x89, 0x9c, 0x83, + 0xae, 0x6a, 0x8, 0x73, 0xa4, 0xac, 0x77, 0xaf, 0x1b, 0x13, 0xe5, 0x32, + 0xb9, 0xbd, 0xb1, 0xbc, 0x1f, 0x13, 0xcd, 0x34, 0xba, 0x63, 0xa3, 0x60, + 0x56, 0x52, 0x78, 0x87, 0x54, 0x1e, 0x64, 0x88, 0x5, 0x13, 0xe5, 0x34, + 0xfc, 0x64, 0xfb, 0x3e, 0x15, 0xf8, 0x42, 0x9f, 0xfb, 0x38, 0x6, 0xf7, + 0x3d, 0xf5, 0x8f, 0xc2, 0xb5, 0xb2, 0xb2, 0xaf, 0xbc, 0xa1, 0xb5, 0xab, + 0x19, 0x13, 0xe5, 0x2c, 0xa1, 0x9c, 0x9d, 0xa3, 0xa8, 0x1a, 0x13, 0xe3, + 0x34, 0xb6, 0x65, 0xa7, 0x62, 0x1e, 0x13, 0xe5, 0x94, 0x45, 0x67, 0x4f, + 0x4d, 0x85, 0x1f, 0x85, 0x50, 0x6f, 0x71, 0x60, 0x67, 0xfb, 0x76, 0xfb, + 0x50, 0x18, 0xfb, 0x31, 0x6, 0xfb, 0x60, 0xcb, 0x15, 0xf8, 0x45, 0x9d, + 0xf3, 0xe2, 0x5, 0x8c, 0x7, 0xfc, 0xb0, 0x2c, 0x5, 0xf9, 0x55, 0xf7, + 0x95, 0x15, 0x13, 0xe3, 0x34, 0xaa, 0xb0, 0xa7, 0xa8, 0x1e, 0x13, 0xe5, + 0x2c, 0xa4, 0x9f, 0x76, 0x72, 0x6c, 0x68, 0x71, 0x6e, 0x1f, 0x13, 0xe5, + 0x94, 0x73, 0x74, 0x9e, 0xa4, 0x1f, 0x13, 0xcd, 0x54, 0xe6, 0xfb, 0x80, + 0x15, 0xac, 0xac, 0x9f, 0xa9, 0x1e, 0x13, 0xe5, 0x32, 0xa6, 0xa3, 0x7a, + 0x6e, 0x6a, 0x6c, 0x7a, 0x6d, 0x1f, 0x13, 0xd5, 0x54, 0x71, 0x70, 0x98, + 0xa9, 0x1f, 0xfb, 0x6d, 0xaf, 0x15, 0x93, 0x90, 0x93, 0x94, 0x94, 0x94, + 0x84, 0x82, 0x83, 0x82, 0x84, 0x83, 0x82, 0x85, 0x91, 0x94, 0x1e, 0xe, + 0xfb, 0x27, 0x92, 0x76, 0xf7, 0x4b, 0xae, 0xf7, 0xb0, 0xaf, 0xf7, 0x49, + 0x54, 0xa, 0xf7, 0x3d, 0x15, 0xf7, 0x61, 0x6, 0xf5, 0xfb, 0x4b, 0xf5, + 0xf7, 0x4b, 0x5, 0xf7, 0x61, 0x6, 0x25, 0xf7, 0x45, 0xf1, 0xf7, 0x46, + 0x5, 0xfb, 0x61, 0x6, 0x21, 0xf7, 0x49, 0x21, 0xfb, 0x49, 0x5, 0xfb, + 0x61, 0x6, 0xf0, 0xfb, 0x46, 0x5, 0xf8, 0x23, 0xb2, 0x15, 0x4c, 0xf2, + 0x5, 0xf7, 0xe, 0x6, 0xfb, 0xc, 0xfb, 0xb0, 0x15, 0xc8, 0xf3, 0xc5, + 0x23, 0x5, 0xfc, 0x86, 0x16, 0xca, 0xf3, 0xc9, 0x23, 0x5, 0x4d, 0xf7, + 0x49, 0x15, 0x4f, 0xf2, 0x5, 0xf7, 0xd, 0x6, 0xb6, 0xfb, 0xb0, 0x15, + 0x39, 0xf7, 0x22, 0xdd, 0xf7, 0x22, 0x5, 0xf7, 0x3d, 0x6, 0xdd, 0xfb, + 0x22, 0x39, 0xfb, 0x22, 0x5, 0xfb, 0x29, 0xf7, 0xd4, 0x15, 0xcb, 0xf7, + 0x3, 0xca, 0xfb, 0x3, 0x5, 0xfb, 0xd, 0xfb, 0xf7, 0x15, 0xf7, 0x10, + 0x6, 0x49, 0xfb, 0x0, 0x5, 0xe, 0xfb, 0x3f, 0x73, 0xa, 0xf8, 0xee, + 0xfc, 0x24, 0xeb, 0xf7, 0x65, 0xea, 0x13, 0xb0, 0xdb, 0xf7, 0x78, 0x15, + 0xf7, 0xc, 0x68, 0xa, 0x1e, 0x13, 0xc0, 0x31, 0x54, 0x42, 0x44, 0x53, + 0xa4, 0x6a, 0x9f, 0x7f, 0x1f, 0x96, 0x85, 0x9a, 0x87, 0x9c, 0x90, 0x8, + 0x90, 0x9c, 0x95, 0x90, 0xa4, 0x1b, 0x13, 0xb0, 0xb1, 0xa3, 0x76, 0x61, + 0x59, 0x6a, 0x4a, 0xfb, 0x16, 0x6b, 0x1f, 0x8f, 0x76, 0x5, 0xf7, 0xc5, + 0x16, 0xf7, 0xb, 0x68, 0xa, 0x31, 0x54, 0x42, 0x44, 0x53, 0xa4, 0x6a, + 0xa0, 0x7f, 0x1e, 0x96, 0x85, 0x99, 0x87, 0x9c, 0x90, 0x8, 0x90, 0x9d, + 0x94, 0x90, 0xa5, 0x1b, 0xb0, 0xa4, 0x76, 0x61, 0x59, 0x69, 0x4a, 0xfb, + 0x16, 0x6b, 0x1f, 0x90, 0x76, 0x5, 0xe, 0x20, 0xfb, 0x38, 0xd6, 0xf9, + 0xaa, 0x77, 0xf7, 0x25, 0x77, 0x1, 0xf8, 0x8c, 0xa7, 0x3, 0xf7, 0x94, + 0x2f, 0x15, 0x65, 0x9d, 0xab, 0x69, 0xb6, 0x1b, 0xd5, 0xf7, 0x1, 0xbb, + 0xf7, 0x8d, 0x1f, 0xf8, 0xcc, 0x7, 0xb7, 0xf7, 0x11, 0x40, 0x7d, 0x86, + 0xfb, 0x3, 0x5, 0x72, 0x6, 0xfb, 0x41, 0xfb, 0x22, 0x33, 0xfb, 0x42, + 0xfb, 0x4d, 0xf7, 0x3a, 0x3d, 0xf7, 0x15, 0x91, 0x95, 0x8e, 0x99, 0xb0, + 0x1f, 0x5f, 0x7, 0xfb, 0x58, 0x34, 0x61, 0x32, 0x7b, 0x6b, 0x90, 0x91, + 0x7d, 0x1e, 0xe, 0xfb, 0xbb, 0x92, 0x76, 0xf9, 0x64, 0x77, 0x1, 0xf7, + 0xa4, 0xf7, 0xa4, 0x15, 0x9f, 0xd2, 0xaa, 0x96, 0xcc, 0xa8, 0x8, 0xd3, + 0xa9, 0xa7, 0xc5, 0xdc, 0x1a, 0xf7, 0x27, 0xfb, 0x1, 0x92, 0xfb, 0x5, + 0x25, 0xfb, 0x0, 0x78, 0xfb, 0x15, 0x37, 0xa4, 0x51, 0xd6, 0x6a, 0x1e, + 0xcd, 0x6e, 0xa9, 0x80, 0x9f, 0x44, 0x8, 0xfb, 0x10, 0xfb, 0x35, 0x15, + 0x47, 0xc4, 0x52, 0xcf, 0xd1, 0xc2, 0xc4, 0xcf, 0xd1, 0x54, 0xc2, 0x45, + 0x47, 0x52, 0x54, 0x45, 0x1e, 0xe, 0xfb, 0xbb, 0x3a, 0xa, 0xf7, 0xa3, + 0xf7, 0xa8, 0x15, 0xa4, 0xcd, 0xbe, 0xa8, 0xc8, 0xa5, 0x8, 0xcd, 0xa8, + 0xad, 0xd8, 0xd6, 0x1a, 0xd1, 0x62, 0xc4, 0x3f, 0x4a, 0x63, 0x55, 0x52, + 0x7c, 0x1e, 0xc4, 0x7f, 0x5f, 0xc1, 0x4c, 0x1b, 0x3a, 0x66, 0x4e, 0x42, + 0x45, 0xb4, 0x3d, 0xc7, 0x71, 0x1f, 0xc8, 0x70, 0xbe, 0x6f, 0xa3, 0x49, + 0x8, 0xfb, 0x12, 0xfb, 0x38, 0x15, 0x46, 0xc3, 0x52, 0xd1, 0xd1, 0xc3, + 0xc4, 0xd0, 0xd2, 0x53, 0xc2, 0x45, 0x46, 0x52, 0x54, 0x44, 0x1e, 0xe, + 0xd2, 0xc8, 0x76, 0xf8, 0xf7, 0x77, 0x1, 0xf8, 0x5b, 0xb3, 0x15, 0xb0, + 0xe2, 0xe3, 0xbe, 0xe0, 0xab, 0x8, 0xf7, 0x2d, 0xc3, 0xc4, 0xdc, 0xec, + 0x1a, 0xf7, 0xb, 0x39, 0xe3, 0xfb, 0xd, 0xfb, 0x3, 0x40, 0x2c, 0x25, + 0x6c, 0x1e, 0xf1, 0x6f, 0x3a, 0xea, 0xfb, 0x1, 0x1b, 0xfb, 0xd, 0x3a, + 0x32, 0xfb, 0xb, 0x2e, 0xc6, 0x35, 0xe2, 0x6c, 0x1f, 0xf7, 0x29, 0x54, + 0xe3, 0x59, 0xb0, 0x33, 0x8, 0xe, 0xd3, 0x61, 0x76, 0xcc, 0x76, 0xf8, + 0xb4, 0x77, 0xe6, 0x77, 0x1, 0xf8, 0xde, 0x96, 0x3, 0xf7, 0x23, 0xc0, + 0x15, 0xa0, 0x75, 0xf8, 0x3a, 0xf8, 0x39, 0x8c, 0x6f, 0xfc, 0x2c, 0xfc, + 0x2c, 0x96, 0x81, 0xf8, 0x2a, 0xf8, 0x2a, 0xaf, 0x7d, 0xfc, 0x35, 0xfc, + 0x35, 0xbb, 0x5a, 0xf8, 0x43, 0xf8, 0x43, 0xf2, 0xf7, 0x72, 0x80, 0x96, + 0xfb, 0x74, 0xfb, 0x10, 0x5, 0xb0, 0x5c, 0x15, 0x88, 0xab, 0xf7, 0x17, + 0xd8, 0x95, 0x82, 0x34, 0xfb, 0x1d, 0x80, 0xa0, 0x5, 0xe, 0xfb, 0x40, + 0x92, 0x76, 0xf7, 0xea, 0xaf, 0xf7, 0xe9, 0x54, 0xa, 0xf8, 0xea, 0x3, + 0xf7, 0x59, 0xf7, 0xe6, 0x15, 0x36, 0x7b, 0x3e, 0x44, 0x32, 0x1a, 0x2b, + 0xd8, 0x3b, 0xec, 0xb3, 0xaf, 0x96, 0xa3, 0xab, 0x1e, 0xda, 0xc6, 0x88, + 0xf7, 0x4, 0xd2, 0xcf, 0x8, 0xac, 0xae, 0xbc, 0xae, 0xbc, 0x1b, 0xaf, + 0x89, 0x5, 0xb3, 0x7, 0x67, 0x89, 0x63, 0x8e, 0x61, 0xa5, 0x69, 0xa4, + 0x19, 0x3a, 0xc6, 0x8c, 0xf7, 0x1, 0x4a, 0xcf, 0x8, 0xab, 0x6b, 0x60, + 0x9e, 0x5e, 0x1b, 0x28, 0x39, 0x40, 0x27, 0x33, 0xd8, 0x42, 0xe0, 0x7c, + 0x1f, 0xe, 0x3c, 0x81, 0xab, 0xee, 0xa4, 0x90, 0xde, 0xf7, 0x4a, 0x94, + 0x82, 0xf7, 0x4, 0xf7, 0x0, 0xa2, 0x12, 0x9d, 0xb9, 0xf7, 0x2b, 0xf7, + 0x10, 0x60, 0x9d, 0xf7, 0x16, 0xaf, 0x7e, 0xf7, 0x36, 0xd2, 0xb5, 0x13, + 0xef, 0x50, 0xf7, 0xce, 0xf7, 0x34, 0x15, 0x8d, 0x6, 0x84, 0x92, 0x94, + 0x89, 0x98, 0x1b, 0x9c, 0xe0, 0x95, 0xc6, 0xd7, 0x1f, 0xc2, 0xb6, 0xbe, + 0xc6, 0xd9, 0x1a, 0xb2, 0x72, 0xb7, 0x56, 0x60, 0x6b, 0x71, 0x6b, 0x71, + 0x1e, 0x87, 0x8d, 0x5, 0x9f, 0xaf, 0x99, 0xa5, 0xb5, 0x1a, 0xb8, 0x71, + 0xde, 0xfb, 0x9, 0xfb, 0x50, 0xfb, 0x17, 0xfb, 0x50, 0xfb, 0x44, 0xfb, + 0x2d, 0xe2, 0xfb, 0x2c, 0xf7, 0x6b, 0xf7, 0x71, 0xf7, 0x5d, 0xf7, 0x5e, + 0xf7, 0x70, 0xf7, 0xa, 0x48, 0xd7, 0x59, 0x7f, 0x7f, 0x84, 0x7e, 0x84, + 0x1e, 0x90, 0x88, 0x97, 0x87, 0x96, 0x84, 0x8, 0xb7, 0x6c, 0xad, 0x49, + 0x33, 0x1a, 0xfb, 0x5f, 0xfb, 0x27, 0xfb, 0x36, 0xfb, 0x62, 0xfb, 0x45, + 0x21, 0xf7, 0x1d, 0xf7, 0x3c, 0x1e, 0x13, 0xf6, 0xb0, 0xf7, 0x22, 0xe3, + 0xf7, 0x3b, 0xf7, 0x31, 0xf3, 0xaa, 0x38, 0x5b, 0x1e, 0x8c, 0x75, 0x87, + 0x72, 0x85, 0x7a, 0x8, 0x89, 0x6, 0xb0, 0x82, 0x76, 0xbd, 0x4a, 0x1b, + 0x40, 0x5b, 0x42, 0x45, 0x64, 0x95, 0x78, 0xa3, 0x6a, 0x1f, 0xb1, 0x57, + 0x97, 0x79, 0x88, 0x66, 0x8, 0x69, 0x88, 0x6d, 0x84, 0x84, 0x1b, 0x67, + 0x74, 0xb6, 0xa3, 0x8d, 0x1f, 0x8c, 0x96, 0x87, 0x8e, 0x83, 0x81, 0x8, + 0x81, 0x7f, 0x87, 0x7f, 0x7c, 0x1a, 0x69, 0xa4, 0x74, 0xaf, 0xb4, 0xa4, + 0x9b, 0xa2, 0x98, 0x1e, 0x13, 0xf7, 0x50, 0xa4, 0xf7, 0x23, 0x15, 0xc1, + 0xa9, 0xc1, 0xc6, 0x90, 0x1e, 0x96, 0x8c, 0x8b, 0x89, 0x90, 0x85, 0x8, + 0x13, 0xf7, 0x30, 0x98, 0x7c, 0x95, 0x74, 0x6f, 0x1a, 0x59, 0x67, 0x5b, + 0x59, 0x80, 0x1e, 0x7f, 0x88, 0x8a, 0x8c, 0x84, 0x93, 0x8, 0x7f, 0x99, + 0x81, 0xa0, 0xa7, 0x1a, 0xe, 0x3c, 0xcf, 0xf7, 0x37, 0xfb, 0x37, 0xf7, + 0x38, 0x4b, 0xca, 0xf7, 0xa, 0xf7, 0x44, 0xca, 0x77, 0x12, 0x96, 0xe0, + 0x74, 0xcf, 0xc7, 0xa0, 0x8b, 0xdf, 0x9e, 0xac, 0xf7, 0xed, 0xb3, 0x13, + 0x9b, 0xe0, 0xf7, 0xcb, 0xf7, 0xb5, 0x15, 0x85, 0x86, 0x75, 0x7c, 0x80, + 0x7b, 0x8, 0x7d, 0x78, 0x86, 0x77, 0x7b, 0x1a, 0x7b, 0x92, 0x65, 0xb3, + 0x67, 0x1e, 0x6a, 0xb0, 0xb5, 0x84, 0xa1, 0x1b, 0xba, 0xbf, 0xa6, 0xb1, + 0xaa, 0x1f, 0xbb, 0xc5, 0x9a, 0x94, 0xb8, 0x96, 0xad, 0x93, 0xa8, 0x9d, + 0x9d, 0x99, 0x8, 0x9a, 0x98, 0x93, 0xa0, 0x98, 0x1a, 0xa2, 0x7f, 0x9c, + 0x78, 0x7a, 0x81, 0x7c, 0x83, 0x87, 0x1e, 0x88, 0x84, 0x8e, 0x85, 0x8f, + 0x8a, 0x8, 0x93, 0x88, 0x95, 0x84, 0x7f, 0x1a, 0x79, 0x7d, 0x7e, 0x77, + 0x79, 0x6a, 0x8e, 0xf2, 0x64, 0x1e, 0x85, 0x9b, 0x85, 0x9b, 0x85, 0x99, + 0x8, 0xd5, 0x6d, 0x6d, 0xbe, 0x3b, 0x1b, 0x6f, 0x6a, 0x7e, 0x73, 0x75, + 0x1f, 0x77, 0x75, 0x7f, 0x6d, 0x6d, 0x1a, 0x6e, 0x9a, 0x6c, 0x8f, 0x85, + 0x1e, 0x8e, 0x85, 0x8b, 0x88, 0x87, 0x88, 0x85, 0x8a, 0x84, 0x8c, 0x85, + 0x8c, 0x7e, 0x8c, 0x6a, 0x95, 0x6b, 0xa1, 0x8, 0x9a, 0x82, 0x9c, 0x83, + 0x97, 0x1e, 0x83, 0x96, 0x85, 0x8f, 0x73, 0x85, 0x8, 0x78, 0x99, 0x7f, + 0x9d, 0xaa, 0x1a, 0xaa, 0x91, 0x99, 0x91, 0x9a, 0x1e, 0x90, 0x95, 0x8e, + 0x90, 0x82, 0x96, 0x8, 0x99, 0x81, 0x7e, 0x95, 0x82, 0x1b, 0x70, 0x77, + 0x59, 0x75, 0x82, 0x8f, 0x78, 0xab, 0x60, 0x1f, 0xa7, 0x67, 0xad, 0x6b, + 0xa9, 0x74, 0x8d, 0x73, 0x85, 0x68, 0x7a, 0x6d, 0x8, 0x74, 0x7e, 0x77, + 0x80, 0x78, 0x1b, 0x13, 0x3d, 0xe0, 0x72, 0x84, 0x9f, 0x99, 0x94, 0x8b, + 0x89, 0x89, 0x8e, 0x1f, 0x90, 0x84, 0x81, 0x91, 0x7e, 0x1b, 0x6f, 0x72, + 0x72, 0x6b, 0x68, 0xab, 0x71, 0xb0, 0xa0, 0xa0, 0x90, 0x9d, 0xa4, 0x1f, + 0xb7, 0xab, 0xab, 0xcb, 0x8a, 0xbe, 0x9d, 0x81, 0xbb, 0x77, 0x95, 0x88, + 0x98, 0x86, 0x87, 0x84, 0x8f, 0x87, 0x8, 0xbd, 0x8e, 0x15, 0x87, 0x96, + 0x8b, 0x8d, 0x91, 0x92, 0x8, 0x9e, 0x9b, 0x9f, 0x9d, 0xb4, 0x1b, 0xbc, + 0xaa, 0x61, 0x67, 0x97, 0x1f, 0x8e, 0x83, 0x8a, 0x88, 0x85, 0x87, 0x8, + 0x13, 0x5d, 0xe0, 0x7d, 0x7a, 0x6d, 0x81, 0x6b, 0x1b, 0x58, 0x6e, 0xb0, + 0xa2, 0x83, 0x1f, 0xe, 0xfb, 0x69, 0xa0, 0x76, 0xf9, 0x7a, 0x77, 0x1, + 0xf7, 0xba, 0xb1, 0x3, 0xf7, 0x6e, 0x16, 0xea, 0x6, 0xea, 0x96, 0x6, + 0x5f, 0xcc, 0x70, 0xf5, 0x86, 0xf7, 0x20, 0x8, 0x93, 0x6, 0x8f, 0x75, + 0x5, 0x4b, 0x97, 0xbd, 0x64, 0xbb, 0x1b, 0xbb, 0xcd, 0xa8, 0xe7, 0xb4, + 0x74, 0xae, 0x6f, 0xa7, 0x1f, 0x6d, 0xa9, 0x68, 0xa2, 0x79, 0xa0, 0x61, + 0xba, 0x57, 0xd8, 0x79, 0xf7, 0xc, 0x82, 0x8d, 0x18, 0x82, 0x89, 0x79, + 0xfb, 0xc, 0x57, 0x3e, 0x61, 0x5c, 0x19, 0x78, 0x76, 0x65, 0x72, 0x6d, + 0x6b, 0x8, 0x71, 0x6f, 0x76, 0x6b, 0x63, 0x1a, 0x2f, 0xcd, 0x6e, 0xbb, + 0xbb, 0xbd, 0xb2, 0xcb, 0x97, 0x1e, 0x8f, 0xa1, 0x5, 0x93, 0x6, 0x86, + 0xfb, 0x20, 0x70, 0x21, 0x5f, 0x4a, 0x8, 0xe, 0xf7, 0xd, 0xf7, 0x2e, + 0x76, 0xf7, 0xb7, 0xda, 0x43, 0xd3, 0xa9, 0x77, 0x12, 0x13, 0xd0, 0xf8, + 0x25, 0xf7, 0xd7, 0x15, 0xf7, 0x6e, 0x42, 0xb5, 0x91, 0xb0, 0xc1, 0x5, + 0xad, 0x7, 0x52, 0xd4, 0xb9, 0x8d, 0xb9, 0x8d, 0xb9, 0x8e, 0x19, 0x13, + 0xb0, 0xaf, 0x8d, 0xaf, 0x8e, 0xaf, 0x8d, 0x8, 0xa2, 0x8d, 0x9e, 0x95, + 0xa4, 0x1a, 0xa5, 0x76, 0x95, 0x73, 0x1e, 0xfc, 0x3, 0x8a, 0xd2, 0x3f, + 0x5, 0x8e, 0x88, 0x8d, 0x7b, 0x87, 0x1a, 0x83, 0x89, 0x81, 0x85, 0x85, + 0x1e, 0xc2, 0x6f, 0x89, 0x81, 0x3b, 0x93, 0x7b, 0x8d, 0x82, 0x8a, 0x7c, + 0x8e, 0x19, 0x74, 0x8f, 0x65, 0x98, 0x73, 0x91, 0x8, 0x74, 0x88, 0x81, + 0x79, 0x76, 0x1a, 0x87, 0x8b, 0x87, 0x8c, 0x87, 0x1e, 0x8e, 0x33, 0x15, + 0xf7, 0x22, 0x55, 0x9d, 0x8e, 0xaa, 0xc5, 0xfb, 0x5c, 0xce, 0x5, 0x81, + 0x86, 0x85, 0x82, 0x80, 0x1a, 0x7a, 0x99, 0x78, 0x96, 0x7e, 0x1e, 0xfb, + 0xf4, 0x67, 0x15, 0xf7, 0x22, 0x98, 0x9e, 0x82, 0xd6, 0x67, 0x9a, 0x87, + 0x19, 0x91, 0x89, 0xd6, 0x84, 0x96, 0x8a, 0x8, 0x7f, 0x97, 0x7c, 0x9d, + 0x9d, 0x1a, 0x98, 0x93, 0x95, 0x96, 0x91, 0x1e, 0x7f, 0x9b, 0x7f, 0x9f, + 0xa0, 0x1a, 0x92, 0x8d, 0x92, 0x8e, 0x91, 0x1e, 0x7d, 0x6f, 0x6c, 0x84, + 0x6c, 0x1b, 0x7b, 0x7c, 0x8d, 0x8e, 0x7c, 0x1f, 0x8e, 0x9b, 0x5, 0x88, + 0x9a, 0x9a, 0x8a, 0x9b, 0x1b, 0xb1, 0xad, 0x95, 0xa0, 0xaa, 0x1f, 0xab, + 0x9f, 0xa2, 0xab, 0x8f, 0x1e, 0xdb, 0x75, 0x34, 0xc8, 0x4e, 0x79, 0x87, + 0x9a, 0xc4, 0x9c, 0x95, 0xb5, 0x9b, 0x86, 0x81, 0x66, 0xe3, 0x4d, 0x5, + 0x89, 0x8d, 0x9a, 0x8a, 0x8f, 0x1b, 0x9d, 0x97, 0x8e, 0x9e, 0x1f, 0x90, + 0x8a, 0x90, 0x90, 0x1a, 0x20, 0xf7, 0x1, 0xfb, 0x33, 0x91, 0xfb, 0x17, + 0xfb, 0xf, 0xfb, 0x17, 0x8f, 0x5, 0x78, 0x6e, 0x82, 0x68, 0x68, 0x1a, + 0x62, 0x97, 0x63, 0xa0, 0x68, 0x1e, 0xf8, 0x4, 0x58, 0x15, 0xbd, 0x7c, + 0xa9, 0x9b, 0xa0, 0xa3, 0xfb, 0xe, 0xba, 0x5, 0x83, 0x88, 0x86, 0x84, + 0x82, 0x1a, 0x78, 0x9f, 0x75, 0x99, 0x7f, 0x1e, 0xe, 0xfb, 0x25, 0x92, + 0x76, 0xf9, 0x4d, 0x77, 0x1, 0xf7, 0xef, 0x7d, 0x15, 0xa8, 0xf3, 0xf2, + 0xf7, 0x25, 0xd8, 0xec, 0x8, 0xc2, 0xd0, 0xbb, 0xcb, 0xe8, 0x1a, 0xe0, + 0x49, 0xc9, 0x36, 0x3a, 0x4c, 0x3d, 0x3f, 0x7a, 0x1e, 0xda, 0x76, 0x52, + 0xd6, 0x33, 0x1b, 0x3a, 0x4a, 0x49, 0x39, 0x33, 0xc4, 0x42, 0xc0, 0x4a, + 0x1f, 0xe0, 0x23, 0xe8, 0xfb, 0x1d, 0xa3, 0x23, 0x8, 0xe, 0xfb, 0x88, + 0x94, 0x76, 0xf9, 0x86, 0x77, 0x1, 0xcb, 0xf8, 0x66, 0x3, 0xf7, 0xb4, + 0x81, 0x15, 0x94, 0x89, 0x94, 0x8d, 0xa5, 0xf7, 0x39, 0xf1, 0xf7, 0x22, + 0xe9, 0xc6, 0x19, 0x8d, 0x94, 0x89, 0x94, 0x2d, 0xc6, 0x25, 0xf7, 0x22, + 0x71, 0xf7, 0x39, 0x19, 0x82, 0x8d, 0x82, 0x89, 0x71, 0xfb, 0x39, 0x25, + 0xfb, 0x22, 0x2d, 0x50, 0x19, 0x89, 0x82, 0x8d, 0x82, 0xe9, 0x50, 0xf1, + 0xfb, 0x22, 0xa5, 0xfb, 0x39, 0x19, 0xe, 0x4c, 0xa0, 0x76, 0xf7, 0xd0, + 0xad, 0xf7, 0xf2, 0x77, 0x12, 0xf8, 0x5, 0xb1, 0x66, 0xaf, 0x13, 0xf0, + 0xf7, 0xb9, 0x16, 0xea, 0x6, 0xea, 0x96, 0x6, 0x5f, 0xcb, 0x71, 0xf3, + 0x85, 0xf7, 0x1d, 0x8, 0x9a, 0x6, 0x48, 0x93, 0xc4, 0x58, 0xd0, 0x1b, + 0xd6, 0xc7, 0xc7, 0xd6, 0xd6, 0x4f, 0xc7, 0x40, 0x46, 0x52, 0x58, 0x48, + 0x83, 0x1f, 0x13, 0xe8, 0x7b, 0x6, 0x94, 0x8b, 0x94, 0x94, 0x1a, 0xc1, + 0x7, 0xcd, 0x94, 0xbe, 0xc4, 0xcf, 0x1a, 0xd6, 0x4f, 0xc7, 0x40, 0x40, + 0x4f, 0x4f, 0x40, 0x47, 0xbe, 0x52, 0xcd, 0x82, 0x1e, 0x55, 0x7, 0x82, + 0x8b, 0x82, 0x82, 0x1a, 0x7b, 0x6, 0xce, 0x83, 0x52, 0xbe, 0x46, 0x1b, + 0x40, 0x4f, 0x4f, 0x40, 0x40, 0xc7, 0x4f, 0xd6, 0xd0, 0xc4, 0xbe, 0xce, + 0x93, 0x1f, 0x13, 0xf0, 0x9a, 0x6, 0x85, 0xfb, 0x1d, 0x71, 0x23, 0x5f, + 0x4b, 0x8, 0xe, 0xfb, 0x29, 0xf7, 0x33, 0x76, 0xb3, 0xf7, 0xe4, 0xfb, + 0x8f, 0xf7, 0x39, 0xf7, 0x11, 0x77, 0x12, 0xc1, 0xf8, 0xa, 0xfb, 0x37, + 0xf8, 0x1a, 0xfb, 0xcc, 0xf7, 0xcc, 0x13, 0xb2, 0xae, 0xf7, 0x1e, 0x15, + 0xf9, 0x0, 0xf8, 0x33, 0xfd, 0x0, 0x6, 0x13, 0xd8, 0xf8, 0x1d, 0xfb, + 0x6e, 0x15, 0xa2, 0x7, 0xf7, 0x64, 0xf7, 0x30, 0x5, 0xfb, 0xe4, 0x7, + 0xfc, 0xda, 0x76, 0x15, 0x13, 0xb4, 0xf7, 0x67, 0xf7, 0x34, 0x5, 0x68, + 0x99, 0xa9, 0x78, 0xb1, 0x1b, 0xaf, 0xa7, 0xa1, 0xab, 0x98, 0x1f, 0xf7, + 0x66, 0xfb, 0x34, 0x5, 0x13, 0xb8, 0x13, 0xb4, 0xfc, 0x5, 0xf7, 0x6e, + 0x15, 0x13, 0xb8, 0xfb, 0x67, 0xf7, 0x36, 0x5, 0xf8, 0xda, 0x6, 0xfb, + 0x69, 0xfb, 0x36, 0x5, 0x13, 0xb2, 0xad, 0x7e, 0x6d, 0x9e, 0x66, 0x1b, + 0x13, 0xd4, 0x6a, 0x69, 0x75, 0x6c, 0x80, 0x1f, 0x13, 0xd8, 0xfb, 0x67, + 0xfb, 0x59, 0x15, 0xf7, 0xe4, 0x7, 0xf7, 0x63, 0xfb, 0x30, 0x5, 0x74, + 0x7, 0xe, 0x5b, 0xf7, 0x23, 0x9f, 0xc3, 0x9f, 0x84, 0x99, 0x8a, 0x9f, + 0xa7, 0x9f, 0x95, 0x9f, 0x8f, 0x9f, 0xed, 0xa3, 0xf3, 0x77, 0x12, 0xf7, + 0x1f, 0x9f, 0x80, 0x9f, 0xf7, 0x5f, 0x99, 0xab, 0x9f, 0x96, 0xa9, 0xda, + 0x9f, 0x93, 0xa5, 0x13, 0xdf, 0xdf, 0x8d, 0xf8, 0x12, 0x15, 0xce, 0x72, + 0x5, 0x7b, 0x8c, 0x95, 0x79, 0xa1, 0x1b, 0x99, 0x95, 0x90, 0x91, 0x92, + 0x1f, 0x91, 0x8a, 0x5, 0x73, 0x9a, 0x7b, 0xa2, 0x96, 0x94, 0x8e, 0x90, + 0x94, 0x1e, 0x8c, 0x8a, 0x77, 0x7d, 0x7f, 0x7a, 0x85, 0x75, 0x19, 0x13, + 0xdf, 0xbf, 0x81, 0x7e, 0x80, 0x7b, 0x76, 0x1a, 0x67, 0xa6, 0x79, 0xa4, + 0xad, 0xb0, 0x9e, 0xa5, 0xab, 0x1e, 0xd8, 0xcb, 0xb0, 0x92, 0x5, 0x75, + 0x8e, 0x9a, 0x79, 0xa7, 0x1b, 0x13, 0xaf, 0xdf, 0xa0, 0x9d, 0x99, 0x98, + 0x98, 0x1f, 0xa9, 0xaa, 0x97, 0x8d, 0x5, 0x13, 0xdf, 0xbf, 0x76, 0x8f, + 0x9e, 0x7e, 0x9e, 0x1b, 0xa7, 0xa6, 0xaa, 0x9f, 0x9d, 0x1f, 0xaf, 0x91, + 0xdd, 0xc2, 0x5, 0x99, 0x7, 0xfb, 0x79, 0x84, 0x34, 0x90, 0x94, 0x9a, + 0x94, 0x99, 0x92, 0x9b, 0x19, 0xcf, 0xa6, 0xbc, 0xbc, 0x8a, 0x8f, 0x29, + 0x82, 0xab, 0xf5, 0x87, 0x8d, 0x3d, 0x60, 0x66, 0x48, 0x5d, 0x94, 0x59, + 0x74, 0x5, 0x88, 0x7, 0xcd, 0x69, 0x78, 0x74, 0x6e, 0x7c, 0x72, 0x7b, + 0x19, 0xfb, 0xa1, 0xbe, 0x53, 0x6b, 0x5, 0x86, 0x8b, 0x86, 0x86, 0x1a, + 0xf8, 0xd3, 0x31, 0x15, 0x93, 0x8c, 0x5, 0x7f, 0x8f, 0x85, 0x94, 0x93, + 0x90, 0x95, 0x97, 0x1e, 0xb3, 0x90, 0x5, 0x7b, 0x7c, 0x76, 0x76, 0x7b, + 0x1b, 0x7a, 0x84, 0x97, 0x9a, 0x8d, 0x1f, 0xfb, 0x54, 0x78, 0x15, 0x86, + 0xa5, 0xa9, 0xa2, 0xb2, 0xa7, 0xf7, 0x4, 0x85, 0x18, 0xf7, 0x4b, 0x91, + 0x5c, 0x6d, 0xfb, 0x9a, 0x67, 0x7e, 0x89, 0x77, 0x86, 0x7a, 0x87, 0x19, + 0xad, 0xf7, 0x40, 0x15, 0x61, 0xa1, 0x94, 0x8f, 0xb6, 0x83, 0x5, 0x93, + 0xfb, 0x52, 0x15, 0x96, 0x8c, 0x5, 0x7f, 0x89, 0x8f, 0x80, 0x96, 0x1b, + 0x97, 0x91, 0x96, 0x9b, 0x8a, 0x1f, 0xbb, 0x92, 0x72, 0x72, 0x5, 0x81, + 0x81, 0x7e, 0x80, 0x7c, 0x1b, 0x74, 0x86, 0x9d, 0x9b, 0x8d, 0x1f, 0xfb, + 0x8c, 0x6b, 0x15, 0x86, 0x92, 0x96, 0x87, 0x9d, 0x1b, 0xa1, 0x84, 0x94, + 0xa4, 0x6d, 0x81, 0x71, 0x95, 0x83, 0x8e, 0x19, 0x97, 0xa8, 0xa6, 0x97, + 0xa6, 0x9c, 0xeb, 0xc7, 0x18, 0x9d, 0x96, 0x9c, 0x97, 0x9a, 0x99, 0xa0, + 0xa0, 0x95, 0xa3, 0x9a, 0xa5, 0xab, 0xc3, 0x18, 0xae, 0x9e, 0x6f, 0x2f, + 0xd9, 0x92, 0x80, 0x80, 0x43, 0x6f, 0x80, 0x70, 0x7b, 0x73, 0x7b, 0x73, + 0x19, 0x63, 0x70, 0x66, 0x6d, 0x92, 0x6e, 0x3b, 0x49, 0x18, 0x78, 0x74, + 0x68, 0x76, 0x6a, 0x1b, 0x13, 0xaf, 0xdf, 0x7a, 0x7c, 0x98, 0xa0, 0x9e, + 0x96, 0x99, 0x95, 0x96, 0x1f, 0xc5, 0xd6, 0x15, 0xfb, 0x6a, 0xd7, 0xa7, + 0x9b, 0xf7, 0x93, 0x5b, 0x5, 0xfb, 0x31, 0x73, 0x15, 0xb5, 0x7c, 0x5, + 0x86, 0x84, 0x83, 0x88, 0x82, 0x1b, 0x7d, 0x85, 0x96, 0x97, 0x8d, 0x1f, + 0x45, 0xa3, 0x15, 0xaa, 0x80, 0x5, 0x87, 0x86, 0x86, 0x89, 0x83, 0x1b, + 0x81, 0x88, 0x93, 0x94, 0x1f, 0xe, 0x5a, 0xaf, 0x9f, 0xbd, 0xc5, 0xc0, + 0xf5, 0x29, 0xf7, 0x3, 0x61, 0xe7, 0x9d, 0xea, 0x9d, 0x9f, 0x93, 0xcd, + 0x84, 0xca, 0x12, 0xc9, 0xa3, 0x80, 0xb6, 0x76, 0xa0, 0xf8, 0xd1, 0x9f, + 0x13, 0xe6, 0xd8, 0xcc, 0xf8, 0xa1, 0x15, 0xaf, 0x97, 0xb8, 0xb6, 0xeb, + 0x1b, 0xc1, 0xcd, 0x7c, 0x7d, 0xcc, 0x1f, 0x13, 0xe7, 0x58, 0x7c, 0xce, + 0xce, 0x7c, 0xbc, 0x1b, 0xc8, 0xbe, 0xa4, 0xa1, 0xa9, 0x1f, 0x78, 0xd3, + 0x5, 0x71, 0x6d, 0x61, 0x70, 0x57, 0x1b, 0x54, 0x4f, 0x98, 0x99, 0x4e, + 0x1f, 0x13, 0xe6, 0xd8, 0x99, 0x4c, 0x4b, 0x9a, 0x4e, 0x1b, 0xfb, 0x7, + 0x5c, 0x50, 0x53, 0x82, 0x8f, 0x82, 0x8d, 0x82, 0x1f, 0xb6, 0xfb, 0x83, + 0x15, 0x85, 0x7b, 0x86, 0x80, 0x70, 0x1a, 0x2f, 0xf7, 0x3, 0x23, 0xf7, + 0x58, 0xf7, 0x3f, 0xf7, 0x1c, 0xde, 0xf7, 0x9, 0xa2, 0x86, 0x96, 0x85, + 0x9b, 0x1e, 0x8b, 0x96, 0xaa, 0xa2, 0x1a, 0xf7, 0x1, 0xfb, 0x18, 0xe3, + 0xfb, 0x44, 0x22, 0x3a, 0x6b, 0x66, 0x5c, 0x1e, 0x69, 0x95, 0x62, 0xa2, + 0x82, 0xad, 0x8, 0x13, 0xe7, 0x28, 0x85, 0x86, 0x86, 0x7f, 0x80, 0x1a, + 0x5e, 0x9e, 0x73, 0xa8, 0x7a, 0x1e, 0x13, 0xe7, 0x58, 0x7a, 0x71, 0x82, + 0x78, 0x67, 0x1a, 0x72, 0x8e, 0x7f, 0x93, 0x7a, 0x1e, 0x95, 0xc1, 0x15, + 0xed, 0xf7, 0x13, 0xda, 0xf7, 0x32, 0xf7, 0x32, 0xf7, 0x16, 0x3c, 0x29, + 0x2a, 0xfb, 0x16, 0x3c, 0xfb, 0x32, 0xfb, 0x32, 0xfb, 0x13, 0xda, 0xec, + 0x1e, 0x93, 0x48, 0x15, 0x97, 0x77, 0xa4, 0x71, 0x9e, 0x7e, 0x8, 0x79, + 0x87, 0x7f, 0x8a, 0x83, 0x1a, 0x6e, 0xd1, 0x4c, 0xa6, 0x94, 0x94, 0x92, + 0x96, 0x96, 0x1e, 0x83, 0xa7, 0xc5, 0x7e, 0xc2, 0x1b, 0xc0, 0xc1, 0x9d, + 0x97, 0x9f, 0x1f, 0x92, 0x85, 0x9e, 0x77, 0x99, 0x94, 0x9d, 0x96, 0x9c, + 0x99, 0x9a, 0x9f, 0x8, 0x99, 0x9e, 0x93, 0x9c, 0x98, 0x1a, 0x90, 0x85, + 0x91, 0x83, 0x90, 0x1e, 0x98, 0x95, 0x9c, 0x9f, 0x93, 0x99, 0x8, 0x90, + 0x83, 0x8e, 0x7d, 0x78, 0x1a, 0x2b, 0xfb, 0x13, 0x3b, 0xfb, 0x35, 0xfb, + 0x33, 0xfb, 0x11, 0xdc, 0xe8, 0x9e, 0x8f, 0x9b, 0x8f, 0x93, 0x1e, 0xf7, + 0x82, 0xf7, 0x1c, 0x15, 0x8e, 0x86, 0x94, 0x8a, 0x91, 0x8d, 0x96, 0x8d, + 0xa6, 0x8c, 0x9b, 0x87, 0x97, 0x88, 0x8f, 0x8e, 0x8f, 0x90, 0xbf, 0xcf, + 0x18, 0x90, 0x92, 0x85, 0x8d, 0x81, 0x8d, 0x55, 0x97, 0x66, 0x8f, 0x44, + 0x80, 0x82, 0x8a, 0x85, 0x85, 0x8e, 0x87, 0x8, 0xf7, 0x37, 0xfb, 0x5a, + 0x15, 0xdc, 0x54, 0x94, 0x85, 0x91, 0x8d, 0x92, 0x90, 0x19, 0xb1, 0xa5, + 0x9e, 0x9f, 0x98, 0xb7, 0x8, 0x91, 0x8d, 0x86, 0x90, 0x82, 0x1b, 0x13, + 0xd7, 0x58, 0xfb, 0x10, 0x90, 0x5, 0x81, 0x87, 0x87, 0x87, 0x1f, 0x8a, + 0x83, 0x82, 0x7d, 0x7e, 0x82, 0x82, 0x86, 0x8e, 0x87, 0x91, 0x87, 0x8, + 0xfb, 0x31, 0xc3, 0x15, 0x13, 0xcf, 0x58, 0x72, 0xad, 0x76, 0xb4, 0xb4, + 0xad, 0xa0, 0xa4, 0xa4, 0x69, 0xa0, 0x62, 0x62, 0x69, 0x76, 0x72, 0x1e, + 0x2f, 0xfb, 0xc, 0x15, 0x93, 0x87, 0x95, 0x8b, 0x8f, 0x8f, 0xd6, 0xc8, + 0x18, 0x91, 0x90, 0x87, 0x8f, 0x85, 0x8e, 0x82, 0x90, 0x7b, 0x98, 0x87, + 0x95, 0x88, 0x93, 0x85, 0x8c, 0x82, 0x8a, 0xfb, 0xc, 0x7f, 0x18, 0x7e, + 0x8a, 0xe0, 0x31, 0x8d, 0x85, 0x9a, 0x69, 0x46, 0xcb, 0xc1, 0x6d, 0x8, + 0xe, 0xef, 0xf7, 0x2c, 0x76, 0xd1, 0xa5, 0xf7, 0x3d, 0xa5, 0x78, 0xa4, + 0xbd, 0xa3, 0x90, 0xa4, 0x8f, 0x77, 0x12, 0x9f, 0xa4, 0x13, 0xed, 0xc2, + 0xf7, 0x57, 0x15, 0xf7, 0x1f, 0x98, 0xf1, 0x5c, 0xde, 0x84, 0xda, 0x74, + 0xad, 0x9b, 0x9e, 0xa4, 0xb6, 0x96, 0xab, 0xc5, 0xc8, 0x93, 0xb2, 0xc6, + 0x5, 0xb3, 0x7, 0x5d, 0xc0, 0xf7, 0x7, 0x8f, 0xf7, 0x5, 0x91, 0x5, + 0xa4, 0x8c, 0x9f, 0x9f, 0xa2, 0x1a, 0xa3, 0x74, 0x9e, 0x6a, 0x8c, 0x1e, + 0xfb, 0xf7, 0x91, 0x73, 0xa3, 0x5, 0x13, 0xeb, 0xfb, 0x46, 0x92, 0xfb, + 0xe, 0xfb, 0xa, 0xfb, 0x13, 0x90, 0x5, 0x75, 0x69, 0x82, 0x66, 0x65, + 0x1a, 0x8c, 0x62, 0x97, 0x61, 0xa1, 0x67, 0x8, 0xf7, 0xe5, 0xf7, 0x16, + 0x15, 0x87, 0xa1, 0x90, 0xa3, 0xa8, 0x90, 0xdb, 0x75, 0x18, 0xf7, 0x5, + 0x7f, 0x8d, 0x95, 0x57, 0xa6, 0x95, 0x95, 0x89, 0xa2, 0x86, 0x95, 0x19, + 0x56, 0xc5, 0xf7, 0xe5, 0x88, 0x5, 0xa2, 0x97, 0x81, 0x7e, 0x7f, 0x83, + 0x81, 0x75, 0x8a, 0x1f, 0x25, 0x86, 0xfb, 0x32, 0x84, 0xcb, 0x3b, 0x5, + 0x74, 0x7, 0x6e, 0x5f, 0x4f, 0x83, 0x5, 0xfb, 0x46, 0x74, 0x15, 0x78, + 0xa2, 0x78, 0xab, 0xa9, 0x9a, 0xf7, 0x45, 0x51, 0x18, 0x72, 0x5a, 0x6e, + 0x85, 0x5, 0xfc, 0x4c, 0xa3, 0x15, 0x7b, 0xa8, 0x83, 0xab, 0xaa, 0x1a, + 0xaa, 0x91, 0xa9, 0x98, 0xa3, 0x1e, 0xf7, 0x10, 0x85, 0xf7, 0xe, 0xf7, + 0xa, 0xf7, 0x35, 0x83, 0xdf, 0x32, 0x90, 0x83, 0x89, 0x7b, 0x87, 0x89, + 0x19, 0x7f, 0x81, 0x7d, 0x8b, 0x78, 0x8f, 0x37, 0xc5, 0x18, 0x95, 0xaf, + 0x7c, 0x8f, 0x82, 0x63, 0x55, 0x7c, 0x8f, 0x7c, 0x5, 0x13, 0xdd, 0xc4, + 0x9d, 0xdd, 0x50, 0x3f, 0xa0, 0x6d, 0x88, 0x77, 0x73, 0x8c, 0x6f, 0x19, + 0x60, 0x6e, 0x5e, 0x84, 0x57, 0x95, 0x89, 0x7c, 0x18, 0xb7, 0x83, 0xb7, + 0x8e, 0xb3, 0x9f, 0x81, 0x78, 0x92, 0x6f, 0xa0, 0x72, 0x72, 0x7b, 0x90, + 0x75, 0x98, 0x78, 0x46, 0x91, 0x18, 0x23, 0xba, 0x5, 0xf7, 0x59, 0x51, + 0x15, 0x7d, 0x99, 0x7a, 0xa7, 0xa4, 0x96, 0xf1, 0x63, 0x18, 0x7a, 0x77, + 0x78, 0x81, 0x5, 0xe, 0x7d, 0xae, 0xe5, 0xab, 0xf7, 0xe3, 0x9c, 0xf7, + 0x43, 0x4c, 0xa, 0xf7, 0xb2, 0xe7, 0xf7, 0xa3, 0xae, 0x17, 0xae, 0xf7, + 0xee, 0x37, 0xa, 0x13, 0x6c, 0x33, 0xa, 0x1f, 0xf7, 0x5e, 0x6b, 0xa, + 0xf7, 0x9c, 0xa9, 0x6, 0x57, 0x8f, 0x5, 0x65, 0x8e, 0x8d, 0x97, 0xa7, + 0x1a, 0xf8, 0x1d, 0x56, 0x7, 0x67, 0x5a, 0x64, 0x6f, 0x4d, 0x82, 0x8, + 0x7a, 0xc5, 0x7, 0xb5, 0x89, 0x89, 0x61, 0x1f, 0xfb, 0x8a, 0x7, 0x74, + 0x81, 0x79, 0x72, 0x89, 0x1e, 0x5a, 0x87, 0x5, 0xe, 0x7d, 0xae, 0x68, + 0xf7, 0x11, 0xf8, 0x70, 0xf7, 0xa, 0x68, 0x4c, 0xa, 0x68, 0xf7, 0x53, + 0xf7, 0xdc, 0xf7, 0x5c, 0xfb, 0x51, 0xf7, 0x51, 0x68, 0xae, 0x13, 0x98, + 0x80, 0x22, 0xa, 0x13, 0x66, 0x0, 0xf7, 0x30, 0x6b, 0xa, 0xa2, 0x7, + 0xd4, 0xbd, 0xc1, 0xc2, 0xb4, 0x1e, 0xc1, 0xb3, 0xcb, 0xbb, 0xd6, 0x1a, + 0xb3, 0x7c, 0xb8, 0x5c, 0x7b, 0x6a, 0x7b, 0x78, 0x1e, 0x7f, 0x91, 0x81, + 0x7f, 0x1a, 0x71, 0x76, 0x77, 0x71, 0x6c, 0x78, 0xa3, 0xa9, 0xa7, 0x99, + 0xa1, 0xa0, 0x9c, 0x1e, 0xa4, 0xaa, 0xb2, 0x91, 0xb1, 0x1b, 0xd8, 0xe2, + 0x68, 0x31, 0xfb, 0x2e, 0xfb, 0x6d, 0x9a, 0x58, 0xfb, 0xf, 0x1f, 0xf7, + 0x60, 0x6, 0xba, 0x8e, 0xb1, 0xc1, 0x96, 0x1f, 0x13, 0x65, 0x0, 0x99, + 0xfb, 0x49, 0x6, 0xe, 0x7d, 0xae, 0xf9, 0x1a, 0x77, 0x1, 0x22, 0xa, + 0xf7, 0x8f, 0x91, 0x15, 0x8c, 0xab, 0x8b, 0x9c, 0xc7, 0xae, 0x68, 0x4f, + 0x54, 0x66, 0x46, 0x4f, 0x78, 0x6d, 0x9d, 0xa3, 0x1e, 0x96, 0x91, 0x96, + 0x96, 0x1a, 0xa7, 0x79, 0xa1, 0x6c, 0x68, 0x77, 0x77, 0x68, 0x68, 0xa5, + 0x71, 0xa7, 0x7b, 0x1e, 0x7a, 0xaa, 0xb0, 0x84, 0xad, 0x1b, 0xe6, 0xf3, + 0xb9, 0xf4, 0xf7, 0x2, 0xfb, 0x19, 0x92, 0x88, 0x91, 0x1f, 0x89, 0x8f, + 0xf4, 0xb1, 0xcd, 0x1a, 0xdc, 0x3c, 0xa0, 0x48, 0x55, 0x2a, 0x79, 0x45, + 0x6f, 0x9f, 0x79, 0xa6, 0xa5, 0x9f, 0xa3, 0xa3, 0x92, 0x8a, 0x92, 0x87, + 0x91, 0x1e, 0xa2, 0xa8, 0x9d, 0x9d, 0xbb, 0xa0, 0x5d, 0x60, 0x50, 0x5b, + 0x6a, 0x54, 0x1e, 0x75, 0x6, 0xe, 0x7d, 0xae, 0xe5, 0xf7, 0x3d, 0x5a, + 0xbc, 0xf8, 0x1a, 0x4c, 0xa, 0xf7, 0xc2, 0xe4, 0xf7, 0x96, 0xae, 0x13, + 0xbe, 0x22, 0xa, 0xf7, 0x1, 0xfb, 0x7, 0x15, 0xf7, 0x55, 0x78, 0x6, + 0x48, 0x7b, 0x8b, 0x6e, 0x88, 0x1e, 0x77, 0x89, 0x5, 0x13, 0xde, 0x6e, + 0xf7, 0x71, 0xa8, 0x7, 0x79, 0x8e, 0x5, 0x54, 0x94, 0x91, 0x89, 0xc9, + 0x1a, 0x13, 0xbe, 0x9e, 0xee, 0xbc, 0x28, 0xf7, 0xc1, 0x33, 0x7, 0xfb, + 0x56, 0xfb, 0xd4, 0x5, 0xce, 0x9e, 0x15, 0xf7, 0x12, 0xf7, 0x63, 0x5, + 0xfb, 0x63, 0x7, 0xe, 0x7e, 0xae, 0xdd, 0xaf, 0xf7, 0x6c, 0xb5, 0xdf, + 0xe1, 0xf1, 0x4c, 0xa, 0xf7, 0x43, 0xb4, 0xf7, 0x33, 0xf7, 0x6, 0xf7, + 0x34, 0xae, 0x17, 0x23, 0xa, 0xae, 0x16, 0x40, 0xa, 0x41, 0xa, 0x1e, + 0x13, 0xf3, 0x80, 0x28, 0xa, 0xfb, 0x24, 0xfb, 0x48, 0x1f, 0x13, 0x77, + 0x0, 0xfb, 0x47, 0xfb, 0x25, 0xf7, 0x24, 0xf7, 0x48, 0x1f, 0xf7, 0x43, + 0x76, 0x15, 0xb4, 0x7a, 0x5, 0xa4, 0x9d, 0xa7, 0xa2, 0xab, 0x1b, 0xc3, + 0xa4, 0x56, 0x5a, 0x57, 0x6a, 0x4d, 0x50, 0x79, 0x6b, 0x93, 0xa2, 0x1f, + 0x98, 0x95, 0x94, 0x9b, 0x1a, 0xaa, 0x71, 0x9a, 0x6f, 0x6b, 0x79, 0x72, + 0x6d, 0x43, 0xef, 0x73, 0xc4, 0xe8, 0xef, 0xc4, 0xf1, 0xe3, 0x3b, 0xba, + 0x3b, 0x66, 0x5d, 0x81, 0x72, 0x6d, 0x1e, 0xf7, 0xd, 0x7, 0xe9, 0x88, + 0x5, 0xb1, 0xca, 0x86, 0xa4, 0xab, 0x1f, 0x9d, 0x99, 0x9c, 0xb7, 0x90, + 0xa3, 0x8, 0x7f, 0x65, 0x63, 0x88, 0x64, 0x1b, 0x51, 0x44, 0x92, 0x98, + 0x4d, 0x1f, 0xe, 0x7d, 0xae, 0xf9, 0x1d, 0xae, 0x1, 0x22, 0xa, 0xf7, + 0x75, 0x78, 0x15, 0xb7, 0xa8, 0xc5, 0xa9, 0xc0, 0x1b, 0xda, 0xc7, 0x56, + 0x39, 0x28, 0x38, 0x4c, 0x2c, 0xfb, 0x1d, 0x4e, 0xf7, 0x1, 0xf7, 0x11, + 0xf7, 0x11, 0xce, 0xf7, 0x11, 0xf7, 0x1c, 0xc1, 0xe6, 0x74, 0x47, 0x6e, + 0x7b, 0x71, 0x6c, 0x71, 0x77, 0x9e, 0xa5, 0x1f, 0x96, 0x90, 0x98, 0x95, + 0x1a, 0xa3, 0x65, 0x96, 0x78, 0x2c, 0x80, 0xfb, 0x9, 0x41, 0x1e, 0x91, + 0xfb, 0xe, 0x15, 0x55, 0xb1, 0x58, 0xc6, 0xc6, 0xa4, 0xc4, 0xbf, 0xba, + 0x76, 0xc7, 0x52, 0x4c, 0x63, 0x57, 0x50, 0x1e, 0xe, 0x7d, 0xae, 0xf8, + 0x6b, 0xe4, 0xe4, 0x4c, 0xa, 0xf7, 0x72, 0xf7, 0x4, 0xfb, 0x4, 0xf7, + 0xc, 0xf7, 0xc7, 0xae, 0x13, 0xf6, 0x22, 0xa, 0xf7, 0x27, 0xcd, 0x15, + 0x9f, 0x6, 0xb8, 0x9f, 0x8d, 0xae, 0xb2, 0x1b, 0xf7, 0x50, 0x6, 0x20, + 0xfb, 0x24, 0x5, 0x67, 0x5c, 0x58, 0x46, 0x4d, 0x1a, 0x65, 0xa1, 0x6f, + 0xb3, 0xae, 0xa2, 0xa2, 0xaf, 0x1e, 0x13, 0xfa, 0xa2, 0x83, 0xa2, 0xa2, + 0x1a, 0xce, 0xbb, 0xd0, 0xab, 0xc2, 0x1e, 0xe7, 0xf7, 0x32, 0x5, 0xfb, + 0xf6, 0x6, 0xe, 0x7d, 0xae, 0xde, 0xb1, 0xf8, 0x30, 0xad, 0xdd, 0x4c, + 0xa, 0xf7, 0x2e, 0xc5, 0x71, 0xd9, 0xf7, 0x1d, 0xbd, 0x60, 0xe3, 0xf7, + 0x2d, 0xae, 0x13, 0xfc, 0xc0, 0xf7, 0xd7, 0xf7, 0xfe, 0x15, 0x55, 0x6c, + 0x5e, 0x6a, 0x46, 0x1a, 0x2f, 0xde, 0x6a, 0xd9, 0xe3, 0xe8, 0xc0, 0xeb, + 0xd5, 0x5c, 0xaf, 0x4e, 0xa9, 0x1e, 0x13, 0xbb, 0x40, 0xb1, 0xa4, 0xa4, + 0xa4, 0xbd, 0x1a, 0xd1, 0x49, 0xa4, 0x51, 0x1e, 0x42, 0x47, 0x5d, 0x3c, + 0x5a, 0xa8, 0x6e, 0xb1, 0x74, 0x1f, 0xf0, 0xbb, 0x15, 0x5b, 0xa4, 0x61, + 0x9d, 0xb4, 0x1a, 0xae, 0xa8, 0xa4, 0xad, 0x1e, 0x13, 0x99, 0x40, 0xb4, + 0xac, 0x74, 0x60, 0x69, 0x79, 0x6f, 0x6e, 0x7b, 0x1f, 0x48, 0x48, 0x15, + 0x13, 0xdc, 0xc0, 0xa0, 0x7f, 0x9e, 0x81, 0x9a, 0x81, 0x8, 0xb8, 0x6f, + 0xa0, 0x76, 0x6a, 0x1a, 0x54, 0x62, 0x6b, 0x57, 0x53, 0x5c, 0xb6, 0xc2, + 0xb4, 0xb2, 0xb5, 0xaf, 0x9f, 0x1e, 0xfb, 0xd6, 0x8e, 0x37, 0xa, 0x13, + 0x8, 0x0, 0x33, 0xa, 0x1f, 0xe, 0x7d, 0xae, 0xde, 0xac, 0x6a, 0xf7, + 0x26, 0xb4, 0xba, 0x98, 0x77, 0xf7, 0x72, 0xae, 0xdd, 0x4c, 0xa, 0xf7, + 0x2d, 0xdc, 0x4c, 0xe8, 0xf7, 0x24, 0xf7, 0x1, 0x23, 0xf3, 0x25, 0xf1, + 0xf7, 0x18, 0xae, 0x13, 0xcf, 0x94, 0x2e, 0xa, 0xf7, 0x5b, 0xf7, 0x5a, + 0x25, 0xa, 0xfb, 0x5a, 0xfb, 0x5b, 0x2a, 0xa, 0xae, 0x16, 0x40, 0xa, + 0xf7, 0x25, 0xf7, 0x48, 0xf7, 0x47, 0x2f, 0xa, 0xfb, 0x47, 0xfb, 0x48, + 0x36, 0xa, 0x1e, 0xf8, 0x31, 0x90, 0x15, 0x13, 0xcf, 0x4c, 0x8d, 0x6, + 0x22, 0x8e, 0x7a, 0xfb, 0x1, 0x32, 0x1b, 0x77, 0x69, 0x95, 0xa3, 0x1f, + 0x94, 0x91, 0x96, 0x98, 0x1a, 0x13, 0xb7, 0x54, 0xa4, 0x78, 0xa0, 0x72, + 0x6d, 0x78, 0x72, 0x6e, 0x48, 0xe2, 0x72, 0xc1, 0xcd, 0xbd, 0x9b, 0xc4, + 0xb2, 0x1e, 0xae, 0xbf, 0x9a, 0xce, 0xc9, 0x1a, 0xf7, 0xa, 0x49, 0xf7, + 0x4, 0xfb, 0x16, 0x1e, 0x13, 0xd7, 0xa4, 0x2a, 0x44, 0x4f, 0x23, 0x39, + 0xbc, 0x58, 0xdb, 0x1f, 0x13, 0xcf, 0x94, 0xbf, 0xbc, 0x9c, 0xb6, 0xa9, + 0x1f, 0xfb, 0x47, 0xe6, 0x15, 0xc2, 0xa3, 0xc3, 0xca, 0x1e, 0x13, 0xd7, + 0xa4, 0xc1, 0xac, 0x57, 0x5a, 0x53, 0x70, 0x51, 0x4c, 0x50, 0x72, 0xc0, + 0xbe, 0x1f, 0xe, 0x7d, 0xae, 0xe4, 0xaf, 0xf7, 0xee, 0x9b, 0xb0, 0xad, + 0xe6, 0x4c, 0xa, 0xf7, 0x42, 0xdf, 0xba, 0xeb, 0xf2, 0xeb, 0xbc, 0xae, + 0x17, 0xf8, 0xb, 0xf7, 0xea, 0x15, 0x13, 0xff, 0xc0, 0x22, 0x9d, 0xfb, + 0x13, 0xf7, 0x15, 0xf7, 0x16, 0x9d, 0xf7, 0x10, 0xf7, 0x0, 0xe9, 0x7a, + 0xf7, 0x23, 0xfb, 0x11, 0xfb, 0x1b, 0x79, 0xfb, 0x16, 0x20, 0x1e, 0xeb, + 0x16, 0xb3, 0x8a, 0xf7, 0x37, 0xc0, 0xc1, 0x88, 0xfb, 0x38, 0x64, 0x66, + 0x8c, 0xfb, 0x33, 0x57, 0x55, 0x8d, 0xf7, 0x32, 0xb1, 0x1e, 0xfc, 0x48, + 0x8f, 0x21, 0xa, 0xf7, 0x8, 0x6b, 0xa, 0xf7, 0x5c, 0xad, 0x6, 0x80, + 0x8c, 0x5, 0x5a, 0x8f, 0x8d, 0x91, 0x9d, 0x1a, 0xf8, 0x2b, 0x54, 0x7, + 0x6f, 0x5b, 0x69, 0x75, 0x58, 0x88, 0x8, 0x7b, 0xa5, 0x7, 0x13, 0x2, + 0x0, 0xab, 0xa5, 0x8f, 0x64, 0x1f, 0xfb, 0xaf, 0x7, 0x76, 0x83, 0x86, + 0x78, 0x8a, 0x1e, 0x6c, 0x89, 0x5, 0xe, 0xfb, 0xb6, 0x58, 0xa3, 0xb8, + 0x76, 0xf7, 0x7c, 0x9a, 0x92, 0x9a, 0xf7, 0xa, 0x9a, 0xb6, 0xa3, 0xf7, + 0x57, 0xa4, 0x86, 0xa3, 0x12, 0xf7, 0x1e, 0xa4, 0xc2, 0x99, 0xae, 0x9a, + 0x8b, 0x9b, 0xa1, 0x9b, 0xa9, 0xa4, 0xac, 0xa4, 0x80, 0xa3, 0x13, 0xfd, + 0xfe, 0xea, 0x88, 0x15, 0x6a, 0xa4, 0xae, 0x7c, 0xaf, 0x1b, 0xab, 0xab, + 0x95, 0x9e, 0xa6, 0x1f, 0xbc, 0xf7, 0x1e, 0xb1, 0xb1, 0xb7, 0xd4, 0xbb, + 0xa6, 0x90, 0xb2, 0x75, 0xb6, 0x8f, 0xb3, 0x90, 0xc4, 0x6e, 0xaa, 0x6c, + 0x8f, 0x74, 0x7f, 0xa1, 0xf7, 0x5b, 0x5, 0xab, 0x8f, 0x76, 0x9d, 0x74, + 0x1b, 0x77, 0x76, 0x7f, 0x70, 0x84, 0x1f, 0x5b, 0xfb, 0x56, 0x71, 0xe6, + 0x79, 0xdb, 0x5, 0x13, 0xfe, 0xfd, 0xa4, 0x85, 0x82, 0x9d, 0x6d, 0x1b, + 0x6b, 0x87, 0x6a, 0x7a, 0x8c, 0x1f, 0x98, 0xfb, 0x8b, 0x74, 0x88, 0x72, + 0x74, 0x78, 0xfb, 0x21, 0xba, 0xfb, 0x7, 0x5, 0xf7, 0x68, 0xf7, 0x29, + 0x15, 0xba, 0xaa, 0x75, 0x7d, 0xa9, 0x9e, 0xa4, 0x95, 0x18, 0x94, 0x9a, + 0x9a, 0x6e, 0x88, 0x78, 0x81, 0x86, 0x65, 0x7e, 0x5b, 0x76, 0x86, 0xa5, + 0x19, 0xfb, 0x6b, 0xfb, 0x92, 0x15, 0xa9, 0xf6, 0x5a, 0xf7, 0x8, 0x9c, + 0xf7, 0x12, 0x99, 0x97, 0xf7, 0x1a, 0xa0, 0x98, 0x89, 0x93, 0x7d, 0x81, + 0x7d, 0x19, 0x79, 0x72, 0x61, 0x7b, 0x6e, 0x80, 0x60, 0xa2, 0x18, 0x85, + 0x7d, 0xb3, 0x77, 0xa2, 0x72, 0x94, 0x6c, 0x91, 0x61, 0x19, 0x99, 0x8e, + 0x85, 0xb3, 0x85, 0xa8, 0x77, 0xa5, 0x19, 0xaa, 0x96, 0xb3, 0x9b, 0x9e, + 0xa5, 0x8, 0x91, 0x93, 0x8d, 0x95, 0x93, 0x1a, 0x9a, 0x80, 0x98, 0x77, + 0x8c, 0x1e, 0x29, 0x7c, 0x7e, 0xf7, 0x92, 0x5, 0x9d, 0x8a, 0x91, 0x90, + 0x90, 0x1b, 0x97, 0x8f, 0x88, 0x77, 0x8f, 0x1f, 0x9d, 0x3b, 0xb1, 0xfb, + 0x19, 0x5, 0xa6, 0x6, 0xc6, 0xf7, 0x80, 0x5, 0x13, 0xfd, 0xfe, 0x98, + 0x8e, 0x94, 0x92, 0x94, 0x1b, 0x95, 0x94, 0x83, 0x7c, 0x89, 0x1f, 0x70, + 0xfb, 0x8a, 0xc5, 0xaa, 0x99, 0x89, 0x9b, 0x79, 0x86, 0x5d, 0x86, 0x61, + 0x7e, 0x76, 0xfb, 0x0, 0x5b, 0x85, 0x8c, 0x85, 0x8e, 0x89, 0x91, 0x19, + 0x85, 0x9d, 0xb5, 0xa2, 0x9c, 0x98, 0xb0, 0xcb, 0x18, 0x7f, 0x91, 0x56, + 0x5c, 0x9b, 0x7c, 0x5, 0x81, 0x84, 0x5c, 0x71, 0x72, 0x1a, 0x88, 0x8b, + 0x88, 0x8c, 0x88, 0x1e, 0x80, 0x8f, 0x99, 0x82, 0x98, 0x1b, 0xa1, 0x93, + 0x5, 0x76, 0x8c, 0x98, 0x82, 0x9d, 0x1b, 0x95, 0x97, 0x8d, 0x8f, 0x98, + 0x1f, 0x64, 0x49, 0x63, 0x65, 0x5c, 0xfb, 0x1e, 0x5, 0x7f, 0x78, 0x71, + 0x83, 0x72, 0x1b, 0x70, 0x71, 0x94, 0x9f, 0x7a, 0x1f, 0xe, 0x7d, 0xef, + 0xf8, 0x9c, 0xee, 0x1, 0xf7, 0xf4, 0xf0, 0x26, 0xa, 0xf7, 0x74, 0xfb, + 0x98, 0x15, 0xac, 0x7, 0xc1, 0x8e, 0xad, 0x8d, 0x91, 0xad, 0x8a, 0xa6, + 0x19, 0xf7, 0x98, 0x7, 0xb7, 0x8c, 0x8e, 0x5e, 0x1e, 0x4a, 0x9f, 0x6, + 0xd0, 0x95, 0xa4, 0xa8, 0xb2, 0xc2, 0x8, 0xd8, 0xfc, 0x39, 0x6, 0x4a, + 0x9b, 0x90, 0xc9, 0x86, 0x1e, 0x9f, 0x8a, 0x5, 0x6a, 0x7, 0xe, 0x7d, + 0xef, 0xf8, 0xa3, 0xe7, 0x12, 0xae, 0xf7, 0x43, 0xfb, 0x43, 0xf7, 0x58, + 0xf7, 0xe8, 0xf7, 0x4b, 0xfb, 0x3f, 0xf7, 0x3f, 0x13, 0xe8, 0x23, 0xa, + 0xf7, 0x43, 0xfb, 0x98, 0x15, 0x89, 0xf6, 0xc2, 0xc6, 0xc8, 0xb8, 0x8, + 0xc7, 0xb8, 0xd1, 0xc0, 0xde, 0x1a, 0xb7, 0x7c, 0xbd, 0x56, 0x7b, 0x65, + 0x79, 0x77, 0x1e, 0x7e, 0x92, 0x80, 0x7d, 0x1a, 0x6e, 0x73, 0x74, 0x6e, + 0x1e, 0x13, 0xd8, 0x69, 0x76, 0xa6, 0xac, 0xd9, 0xe3, 0xaa, 0xcc, 0xe2, + 0xef, 0x67, 0x25, 0x2f, 0x43, 0x63, 0x42, 0x68, 0x1f, 0x54, 0x72, 0x42, + 0x63, 0x74, 0x51, 0x8, 0xf7, 0x75, 0x6, 0x9b, 0x8a, 0x9c, 0x8b, 0x92, + 0x9c, 0xa4, 0xe0, 0x18, 0x13, 0xe4, 0x9d, 0xfb, 0x5c, 0x6, 0xe, 0x7d, + 0xe6, 0xf7, 0xa9, 0x77, 0xba, 0xde, 0x38, 0xf7, 0x55, 0xb2, 0xe7, 0x12, + 0xae, 0xf7, 0x3c, 0xfb, 0x3c, 0xf7, 0x53, 0xe7, 0xf7, 0x2e, 0xfb, 0x24, + 0xf7, 0xf, 0xf2, 0xf7, 0x5c, 0xfb, 0x37, 0xf7, 0x37, 0x13, 0xdc, 0xc0, + 0x23, 0xa, 0xf7, 0xaa, 0x94, 0x15, 0xa5, 0xa3, 0x7, 0xc9, 0xbf, 0xb4, + 0xcc, 0xbb, 0x74, 0xb2, 0x55, 0x69, 0x7a, 0x76, 0x82, 0x1f, 0x83, 0x90, + 0x8a, 0x78, 0x1a, 0x13, 0xea, 0xc0, 0x70, 0x74, 0x72, 0x70, 0x6c, 0x76, + 0xa0, 0xa9, 0xd8, 0xf6, 0xa0, 0xc6, 0xd5, 0xe3, 0x74, 0x31, 0x4a, 0x61, + 0x6d, 0x53, 0x7a, 0x1e, 0x88, 0x8a, 0x7e, 0x89, 0x87, 0x1a, 0x85, 0x93, + 0x8a, 0x8f, 0x99, 0xb5, 0x7e, 0x85, 0x97, 0x1e, 0x13, 0xdd, 0x20, 0xb8, + 0x76, 0xa5, 0x62, 0x5a, 0x1a, 0xfb, 0x5, 0xfb, 0x5, 0x55, 0x28, 0x65, + 0x64, 0x91, 0x9c, 0x69, 0x1e, 0x6a, 0x9c, 0x6b, 0xaa, 0xb4, 0x1a, 0xb1, + 0xa0, 0xa1, 0xb3, 0xac, 0xa0, 0x74, 0x6b, 0x1e, 0x7e, 0x84, 0x80, 0x7e, + 0x1a, 0x71, 0xac, 0x82, 0xa0, 0xcd, 0xb4, 0xcd, 0xc8, 0xcd, 0x65, 0xb2, + 0x48, 0x79, 0x79, 0x90, 0x87, 0x79, 0x1e, 0xe, 0x7d, 0xef, 0x8b, 0xd3, + 0xf8, 0x54, 0xee, 0x12, 0xae, 0xf8, 0xb3, 0xfb, 0x2, 0xf7, 0xb2, 0x13, + 0xf0, 0x29, 0xa, 0x1e, 0x13, 0xe8, 0x24, 0xa, 0x1f, 0x13, 0xf0, 0x27, + 0xa, 0x1f, 0xf7, 0xd, 0xfb, 0x13, 0x15, 0xac, 0x7, 0xf7, 0x6d, 0xf7, + 0xf6, 0x5, 0x13, 0xe8, 0xea, 0xfb, 0xe1, 0x6, 0x13, 0xf0, 0xf7, 0x2, + 0x55, 0x6, 0x13, 0xe8, 0xfb, 0x2, 0x4c, 0x6, 0x78, 0x93, 0x84, 0x9b, + 0x88, 0x1e, 0xbe, 0x82, 0x5, 0x6b, 0xfb, 0xa0, 0xab, 0x7, 0xd2, 0x94, + 0x5, 0xa0, 0x8e, 0x8e, 0xa0, 0x92, 0x1a, 0xc8, 0x7, 0xfb, 0x2b, 0xc1, + 0x15, 0xf7, 0x2b, 0xf7, 0x97, 0x6, 0xe, 0x7b, 0xe7, 0x31, 0xe7, 0xf7, + 0xab, 0x77, 0xce, 0xe8, 0xe9, 0xf7, 0x6, 0x12, 0xae, 0xf7, 0x2e, 0xfb, + 0x2e, 0xf7, 0x57, 0xd5, 0xf7, 0x26, 0xf7, 0x12, 0xf7, 0x46, 0x13, 0xbd, + 0x80, 0x3b, 0xa, 0x13, 0x7d, 0x80, 0x2c, 0xa, 0x13, 0xbb, 0x80, 0xf7, + 0x57, 0x74, 0x15, 0x8c, 0xf7, 0xb7, 0x5, 0x7d, 0xcc, 0xda, 0x82, 0xc8, + 0x1b, 0xb8, 0xb9, 0x8e, 0x99, 0xb6, 0x1f, 0x85, 0x72, 0x79, 0x58, 0x78, + 0x7d, 0x8, 0x6f, 0x66, 0x47, 0x90, 0x5f, 0x1b, 0x23, 0x8f, 0x5, 0xfb, + 0x1a, 0x7, 0xa7, 0xac, 0xbf, 0x96, 0xb4, 0x1b, 0xb4, 0xb4, 0x82, 0x72, + 0xac, 0x1f, 0xb0, 0x71, 0xa3, 0x61, 0x5d, 0x1a, 0x13, 0x7d, 0x80, 0xfb, + 0x7, 0xfb, 0x2, 0x4c, 0x23, 0x4d, 0xfb, 0x3, 0xa6, 0xdb, 0xac, 0x9f, + 0xa7, 0xaf, 0xaa, 0xa7, 0x7a, 0x69, 0x1e, 0x78, 0x81, 0x81, 0x7e, 0x1a, + 0x71, 0xae, 0x82, 0x9f, 0xcc, 0xaf, 0xd0, 0xc4, 0xc1, 0x70, 0xc6, 0x4d, + 0x67, 0x6d, 0x71, 0x70, 0x76, 0x1e, 0xe, 0x7d, 0xe7, 0xf7, 0xa9, 0x77, + 0xd3, 0xb9, 0x5d, 0xf7, 0x3f, 0xae, 0xe7, 0x12, 0xae, 0xf7, 0x29, 0xf7, + 0x7, 0xf7, 0x55, 0x6a, 0xf2, 0x8b, 0xf7, 0x54, 0xfb, 0x3a, 0xf7, 0x3a, + 0x13, 0xee, 0x40, 0x23, 0xa, 0xf7, 0x97, 0x76, 0x15, 0xbc, 0xaa, 0xc3, + 0xac, 0xc5, 0x1b, 0xe3, 0xc8, 0x49, 0x31, 0xfb, 0x3, 0x34, 0x4d, 0x22, + 0x49, 0x52, 0xa0, 0xc0, 0x63, 0x1f, 0x65, 0xbe, 0x80, 0xcc, 0xca, 0x1a, + 0xcb, 0x93, 0xcf, 0xad, 0xc2, 0x1e, 0xcf, 0xb5, 0xc4, 0xa6, 0xda, 0x1b, + 0x13, 0xed, 0x80, 0xc7, 0xed, 0x72, 0x40, 0x6b, 0x7a, 0x6f, 0x68, 0x6e, + 0x75, 0x9f, 0xa8, 0x1f, 0x98, 0x91, 0x99, 0x96, 0x1a, 0x13, 0xde, 0x40, + 0xa5, 0x63, 0x97, 0x76, 0x56, 0x7c, 0x6d, 0x5e, 0x78, 0x1e, 0x7c, 0x5a, + 0x8b, 0x45, 0x83, 0x50, 0x8, 0x90, 0x33, 0x15, 0x4e, 0xa6, 0x4f, 0xd1, + 0xcd, 0xa9, 0xcb, 0xc5, 0xbf, 0x72, 0xcc, 0x4e, 0x48, 0x63, 0x55, 0x4b, + 0x1e, 0xe, 0x7d, 0xe8, 0xf8, 0xa4, 0xed, 0x1, 0xae, 0xf7, 0x38, 0x26, + 0xa, 0xf7, 0x38, 0xd5, 0x15, 0x8c, 0xf7, 0x4f, 0x5, 0xf8, 0x1e, 0x6, + 0x25, 0xfb, 0x44, 0x5, 0x68, 0x4e, 0x56, 0x3f, 0x42, 0x71, 0x94, 0x6c, + 0x77, 0x1a, 0x64, 0x72, 0x71, 0x64, 0x5f, 0x73, 0xaa, 0xb5, 0xcf, 0xc2, + 0xd7, 0xb4, 0xbf, 0x1e, 0xf7, 0xa, 0xf7, 0x34, 0x5, 0xfb, 0x6b, 0x6, + 0x76, 0x80, 0x84, 0x71, 0x84, 0x1f, 0x79, 0x54, 0x5, 0xe, 0x7d, 0xe7, + 0xf8, 0xab, 0xe7, 0x12, 0xae, 0xf7, 0x3f, 0xd7, 0xf7, 0x61, 0xfb, 0x34, + 0xf7, 0x2c, 0xf4, 0xf7, 0x3e, 0x13, 0xec, 0x23, 0xa, 0xf7, 0xad, 0x9d, + 0x15, 0x60, 0xa5, 0x75, 0xab, 0xc2, 0x1a, 0xe1, 0xcd, 0xbd, 0xdb, 0xcb, + 0xd5, 0x6c, 0x3e, 0x53, 0x6f, 0x73, 0x61, 0x70, 0x1e, 0xce, 0x6a, 0xbf, + 0x63, 0x3a, 0x1a, 0x20, 0x29, 0x50, 0x2a, 0x35, 0x2a, 0xb0, 0xf1, 0xd7, + 0xbc, 0xb0, 0xc8, 0xad, 0x1e, 0xf7, 0x4, 0xbf, 0x15, 0xaa, 0x9e, 0x9f, + 0xaa, 0xb0, 0x1a, 0xbb, 0x66, 0xa5, 0x5e, 0x66, 0x6a, 0x66, 0x65, 0x5f, + 0xb7, 0x7f, 0xac, 0x7a, 0x1e, 0x58, 0x34, 0x15, 0x13, 0xf4, 0x61, 0x75, + 0x6e, 0x5d, 0x5b, 0x1a, 0x50, 0xb5, 0x5c, 0xc7, 0xc4, 0xb9, 0xaf, 0xc7, + 0xbc, 0x60, 0xa5, 0x66, 0xa0, 0x1e, 0xe, 0x7d, 0xe7, 0xb0, 0xf7, 0x3e, + 0x5e, 0xb8, 0xf7, 0xdc, 0xe7, 0x12, 0xae, 0xf7, 0x36, 0xfb, 0x36, 0xf7, + 0x51, 0xd1, 0xf7, 0x55, 0xf7, 0x6, 0xf7, 0x2d, 0x13, 0xbb, 0x23, 0xa, + 0xf8, 0x5e, 0x90, 0x15, 0x5e, 0x6a, 0x54, 0x76, 0x54, 0x1b, 0x30, 0x4d, + 0xd3, 0xe9, 0xf7, 0x0, 0xe4, 0xc1, 0xf3, 0xf7, 0x27, 0xcb, 0xfb, 0xf, + 0xfb, 0x1c, 0x47, 0x82, 0x4a, 0x65, 0x52, 0x1f, 0x49, 0x61, 0x51, 0x77, + 0x3f, 0x1b, 0x13, 0xb7, 0x4f, 0x2d, 0xa7, 0xd5, 0xab, 0xa0, 0xa7, 0xad, + 0xa6, 0xa0, 0x73, 0x70, 0x1f, 0x7d, 0x85, 0x7f, 0x81, 0x1a, 0x13, 0xdb, + 0x70, 0xab, 0x80, 0xa0, 0xee, 0x9f, 0xf7, 0x1b, 0xd7, 0x1e, 0xfb, 0x5b, + 0xf7, 0x13, 0x15, 0x52, 0xa7, 0x50, 0xcb, 0xd1, 0xaa, 0xcb, 0xc8, 0xc2, + 0x66, 0xc5, 0x4f, 0x45, 0x71, 0x4e, 0x4e, 0x1e, 0xe, 0x7d, 0xe7, 0x2f, + 0xef, 0xf8, 0x4c, 0xf7, 0x47, 0x28, 0xee, 0x2f, 0xe7, 0x12, 0xae, 0xf7, + 0x55, 0xe8, 0xc4, 0xf1, 0xf7, 0x5, 0xeb, 0xcc, 0x13, 0x67, 0x80, 0x23, + 0xa, 0xf7, 0x15, 0xfb, 0x98, 0x15, 0xb0, 0x7, 0xad, 0x8e, 0x5, 0xb0, + 0x8d, 0x84, 0xa1, 0xa9, 0x1a, 0xf7, 0xb5, 0x7, 0xb5, 0x72, 0x87, 0x67, + 0x1e, 0x6b, 0x9e, 0x6, 0x13, 0x57, 0x80, 0xc4, 0x8e, 0x9b, 0xa3, 0xaa, + 0xc0, 0x8, 0xdd, 0xfc, 0x3e, 0x6, 0x56, 0x88, 0x8e, 0xc2, 0x86, 0x1e, + 0x98, 0x89, 0x5, 0x66, 0x7, 0x83, 0xf7, 0x93, 0x15, 0x13, 0x8f, 0x80, + 0xf7, 0xa, 0x93, 0xf7, 0x2e, 0xf7, 0x2a, 0xf7, 0x1e, 0x9a, 0xfb, 0x3c, + 0x23, 0xfb, 0x0, 0x7e, 0xfb, 0x2f, 0xfb, 0x1f, 0xfb, 0x29, 0x81, 0xf7, + 0x22, 0xf7, 0xd, 0x1e, 0xf1, 0x16, 0x60, 0x89, 0xfb, 0x48, 0xc6, 0xc4, + 0x8a, 0xf7, 0x4b, 0xb3, 0x1e, 0xf7, 0x45, 0x80, 0x81, 0xc4, 0x67, 0x1b, + 0x54, 0x8a, 0xfb, 0x57, 0x64, 0x1f, 0xe, 0x9b, 0xae, 0x76, 0xc3, 0xa4, + 0x86, 0xa5, 0xab, 0x9a, 0x97, 0xa3, 0x96, 0x9d, 0xf7, 0x6, 0xf7, 0x3d, + 0x67, 0xa5, 0x79, 0xa8, 0x70, 0xf7, 0x32, 0x12, 0x9e, 0xa4, 0xf8, 0x3b, + 0x9a, 0xf7, 0x7b, 0x9b, 0xb3, 0xa4, 0x13, 0xbc, 0xbc, 0xcf, 0xb5, 0x15, + 0xf7, 0x1f, 0xc2, 0x5, 0x13, 0xdc, 0xbc, 0x80, 0xaa, 0xb3, 0x7b, 0xac, + 0x1b, 0xb5, 0xb5, 0x9d, 0xa2, 0xb4, 0x1f, 0xd0, 0x70, 0xc9, 0xad, 0xc4, + 0x97, 0xa6, 0x67, 0xae, 0x78, 0xb6, 0xa9, 0x19, 0x8c, 0x8e, 0x8e, 0x86, + 0xdc, 0x32, 0x94, 0x91, 0x68, 0xf7, 0x5, 0x73, 0xb5, 0x9a, 0x8e, 0x98, + 0x94, 0x90, 0x9c, 0x19, 0x86, 0xf7, 0x24, 0xfb, 0xc, 0xf7, 0x18, 0x54, + 0x9f, 0x61, 0x8e, 0x5, 0x13, 0xbc, 0x7c, 0x3a, 0xf7, 0x20, 0x5, 0x40, + 0x6, 0xda, 0xfb, 0x1b, 0x25, 0x91, 0x58, 0x7a, 0xfb, 0x87, 0xfb, 0x34, + 0x58, 0x80, 0x5, 0x73, 0x66, 0x83, 0x53, 0x5f, 0x1a, 0x5c, 0x9f, 0x4b, + 0xa8, 0x67, 0x1e, 0x13, 0xbe, 0x3c, 0xf8, 0xec, 0xf7, 0xc0, 0x15, 0x3d, + 0xf7, 0x1b, 0xa0, 0x8a, 0xba, 0x79, 0xf7, 0x2, 0xfb, 0xc, 0x8e, 0xfb, + 0x16, 0x86, 0x82, 0x83, 0x8a, 0x83, 0x8c, 0x19, 0x69, 0xc5, 0x5, 0x94, + 0x95, 0x8f, 0x98, 0x97, 0x1a, 0xa2, 0x78, 0x9f, 0x73, 0x8f, 0x1e, 0x59, + 0xfb, 0x4b, 0x15, 0x78, 0xd3, 0xb2, 0x93, 0xc3, 0x29, 0x86, 0x7a, 0x6b, + 0x79, 0x74, 0xaa, 0x7b, 0xa1, 0x19, 0xfb, 0x20, 0x8c, 0x15, 0x81, 0x93, + 0x87, 0x93, 0x92, 0x1a, 0x99, 0x96, 0x97, 0x9e, 0x94, 0x1e, 0x8b, 0xc7, + 0x91, 0xa9, 0x90, 0x1e, 0x9e, 0x44, 0x54, 0x7f, 0x5, 0xfc, 0x7a, 0x44, + 0x15, 0x75, 0xaf, 0x7d, 0xb0, 0xb7, 0x1a, 0xb8, 0x8e, 0xaf, 0x9e, 0xac, + 0x1e, 0xb9, 0x95, 0x5, 0x13, 0xbd, 0x3c, 0xf7, 0x87, 0xf7, 0x36, 0xb8, + 0x98, 0xf7, 0x5, 0x85, 0xd5, 0xfb, 0x14, 0x5a, 0x93, 0x39, 0xad, 0x92, + 0xac, 0x79, 0x8e, 0x7b, 0x44, 0xfb, 0x24, 0x7d, 0x8c, 0x7c, 0xf7, 0x6a, + 0x9f, 0xf7, 0x4c, 0x70, 0x5, 0x9e, 0x88, 0x95, 0x7b, 0x7b, 0x1a, 0x81, + 0x88, 0x81, 0x82, 0x84, 0x1e, 0x77, 0x42, 0x2a, 0x7d, 0x4f, 0x1b, 0x6d, + 0x98, 0x65, 0x59, 0x43, 0x69, 0x4a, 0x89, 0x3e, 0x9d, 0x19, 0x88, 0x7c, + 0xd7, 0x79, 0xca, 0x8d, 0xd1, 0xa8, 0x19, 0xa6, 0x63, 0x5, 0x13, 0xdc, + 0xbc, 0x79, 0x6a, 0x63, 0x78, 0x65, 0x1b, 0x6c, 0x5f, 0x9d, 0x95, 0x6e, + 0x1f, 0xf7, 0x7b, 0x99, 0x15, 0x6f, 0xb4, 0x8e, 0x8d, 0xa0, 0xa6, 0xbe, + 0x92, 0x5, 0x82, 0x83, 0x82, 0x81, 0x7b, 0x1a, 0x7b, 0x95, 0x7f, 0x98, + 0x82, 0x1e, 0xbf, 0x81, 0x64, 0x76, 0x5, 0xe, 0x7d, 0xae, 0xf8, 0x52, + 0xa0, 0xf7, 0x4a, 0x74, 0xa, 0xf7, 0xbe, 0xc9, 0xf7, 0xb5, 0xae, 0x3, + 0x22, 0xa, 0xf7, 0xbe, 0x6b, 0xa, 0xc9, 0xf8, 0x6a, 0x51, 0x6, 0x7e, + 0x4a, 0x71, 0x70, 0x4d, 0x8a, 0x8, 0x76, 0xec, 0x7, 0xe, 0x7d, 0xae, + 0xe5, 0xbe, 0xf8, 0xb, 0xbd, 0xde, 0x74, 0xa, 0xf7, 0x3f, 0xc7, 0xf7, + 0x47, 0xcc, 0xf7, 0x42, 0xae, 0x3, 0x22, 0xa, 0xf7, 0x46, 0x6b, 0xa, + 0xf7, 0xbe, 0xbe, 0xfb, 0x7e, 0x6, 0x9a, 0xae, 0xae, 0xa0, 0xa9, 0x9f, + 0x8, 0xd7, 0xbe, 0xd8, 0xbb, 0xf2, 0x1a, 0xe4, 0x44, 0xc5, 0x35, 0x38, + 0x4a, 0x4d, 0xfb, 0x1, 0x8c, 0x1e, 0xc7, 0x86, 0x5, 0xd5, 0xa3, 0xbf, + 0xc9, 0xc6, 0xad, 0x5e, 0x52, 0x3d, 0x50, 0x66, 0x51, 0x65, 0x1e, 0x54, + 0x68, 0x4e, 0x58, 0x45, 0x1a, 0xe, 0x7d, 0xae, 0xde, 0xbf, 0xf8, 0x15, + 0xba, 0xdd, 0x4c, 0xa, 0xf8, 0x25, 0xc9, 0x5b, 0xc8, 0xf7, 0x41, 0xae, + 0x13, 0xfb, 0x22, 0xa, 0xf7, 0x4b, 0x30, 0x15, 0xfb, 0x3, 0x8a, 0xcf, + 0x63, 0xd3, 0x1b, 0xdb, 0xd5, 0xc0, 0xdf, 0xc2, 0x71, 0xb9, 0x54, 0x99, + 0x1f, 0x8d, 0x7, 0x13, 0xfd, 0xba, 0x9d, 0xa0, 0xa8, 0xbe, 0x1a, 0xdb, + 0x47, 0xbf, 0x40, 0x40, 0x50, 0x5c, 0x3f, 0x8d, 0x1e, 0xc1, 0x85, 0x5, + 0xbc, 0x89, 0xa5, 0xac, 0xc0, 0x1b, 0xc1, 0xa7, 0x6b, 0x56, 0x53, 0x5e, + 0x71, 0x58, 0x1f, 0x72, 0x8c, 0x5, 0x63, 0x7, 0x13, 0xfb, 0xc8, 0x92, + 0xd5, 0x6f, 0x42, 0x1a, 0x52, 0x66, 0x6f, 0x53, 0x56, 0x64, 0xb7, 0xc2, + 0x92, 0x1e, 0xe, 0x7d, 0xae, 0xf7, 0x64, 0xc0, 0xf8, 0x18, 0x74, 0xa, + 0xf7, 0xe6, 0xc2, 0xf7, 0x94, 0xae, 0x3, 0x22, 0xa, 0xf7, 0x16, 0xfb, + 0x9, 0x15, 0xf7, 0x64, 0xfb, 0xa, 0xc2, 0xf7, 0xa, 0xda, 0xc0, 0x3c, + 0xf7, 0xc5, 0x6, 0x58, 0x8c, 0xfb, 0x68, 0xfb, 0xc6, 0x5, 0xc3, 0x16, + 0xf7, 0x2c, 0xf7, 0x75, 0x5, 0xfb, 0x75, 0x7, 0xe, 0x7d, 0xae, 0xde, + 0xbd, 0xf7, 0x70, 0xc2, 0xee, 0xc0, 0xe4, 0x4c, 0xa, 0xf7, 0x54, 0xbf, + 0x5e, 0xbe, 0xf7, 0x41, 0xca, 0xf7, 0x37, 0xae, 0x13, 0xfe, 0xc0, 0x22, + 0xa, 0xf7, 0x54, 0xfb, 0xe, 0x15, 0x42, 0x8f, 0xc5, 0x5c, 0xd3, 0x1b, + 0xf2, 0xc4, 0xd4, 0xec, 0xdc, 0x55, 0xd5, 0x35, 0x1f, 0x13, 0xfd, 0xc0, + 0x66, 0x63, 0x82, 0x69, 0x78, 0x1f, 0xf7, 0x22, 0xf7, 0x76, 0xc0, 0xfb, + 0xa9, 0xfb, 0xab, 0x7, 0x13, 0xfe, 0xc0, 0xb8, 0x6, 0xb9, 0x93, 0xa9, + 0xa5, 0xbd, 0x1b, 0xc9, 0xa8, 0x60, 0x54, 0x48, 0x77, 0x54, 0x3d, 0x5f, + 0x64, 0xb0, 0xb8, 0x8d, 0x1f, 0xe, 0x7d, 0xae, 0xde, 0xb9, 0xf7, 0x67, + 0xbf, 0xf7, 0x10, 0xbe, 0xdd, 0x4c, 0xa, 0xf7, 0x37, 0xc3, 0x53, 0xcd, + 0xf7, 0x45, 0xc3, 0xf7, 0x4f, 0xae, 0x13, 0xfe, 0xc0, 0x22, 0xa, 0xf7, + 0x6f, 0x8a, 0x15, 0xe6, 0x9f, 0xf0, 0xe1, 0xbc, 0x9b, 0x70, 0x61, 0x94, + 0x1e, 0xbd, 0x98, 0x5, 0xcf, 0x81, 0x5f, 0xb2, 0x46, 0x1b, 0x53, 0x53, + 0x65, 0x58, 0x73, 0x1f, 0x75, 0x5b, 0x86, 0x54, 0x57, 0x1a, 0x59, 0x8f, + 0x4c, 0xa1, 0x5e, 0x1e, 0x58, 0xa3, 0xbd, 0x6c, 0xc4, 0x1b, 0xe4, 0xc0, + 0xda, 0xde, 0xd9, 0x5a, 0xd0, 0x38, 0x73, 0x74, 0x86, 0x7f, 0x78, 0x1f, + 0x77, 0x80, 0x7c, 0x7a, 0x81, 0x74, 0x8, 0x13, 0xfd, 0xc0, 0x95, 0x3b, + 0x15, 0xbf, 0xac, 0xb7, 0xc2, 0xcb, 0xa4, 0x5d, 0x53, 0x56, 0x76, 0x53, + 0x4d, 0x4b, 0x6d, 0xc3, 0xc6, 0x1e, 0xe, 0x7d, 0xae, 0xf8, 0x8e, 0xc1, + 0xe4, 0x74, 0xa, 0xf7, 0x3b, 0xf7, 0xcc, 0xf7, 0x3e, 0xae, 0x3, 0x22, + 0xa, 0xf7, 0x72, 0x6b, 0xa, 0xce, 0x6, 0xa4, 0xf7, 0x2e, 0xd7, 0xf7, + 0x1f, 0xe4, 0xf7, 0x13, 0x8, 0xbd, 0xfb, 0xcc, 0x55, 0xf7, 0x89, 0x7, + 0x29, 0xfb, 0xb, 0x48, 0xfb, 0x23, 0x72, 0xfb, 0x2e, 0x8, 0xe, 0x7d, + 0xae, 0xe8, 0xbf, 0xf7, 0x37, 0xc1, 0xf7, 0x32, 0xba, 0xdd, 0x4c, 0xa, + 0xf7, 0x44, 0xc3, 0x64, 0xc3, 0xf7, 0x35, 0xbf, 0x5e, 0xc3, 0xf7, 0x44, + 0xae, 0x13, 0xfe, 0x60, 0xf7, 0xe3, 0xf7, 0xfb, 0x15, 0x55, 0x7c, 0x68, + 0x64, 0x50, 0x1a, 0x39, 0xc9, 0x59, 0xdc, 0xdc, 0xd4, 0xb6, 0xe1, 0xc4, + 0x6d, 0xb6, 0x54, 0x9b, 0x1e, 0x8d, 0x7, 0x13, 0xfd, 0xa0, 0xbc, 0x9a, + 0xa4, 0xae, 0xc0, 0x1a, 0xd5, 0x50, 0xbd, 0x43, 0x43, 0x49, 0x5b, 0x3e, + 0x5c, 0xa7, 0x63, 0xb7, 0x7c, 0x1e, 0x7b, 0xf2, 0x15, 0xba, 0xab, 0xa9, + 0xba, 0xbd, 0xab, 0x6f, 0x5a, 0x58, 0x6b, 0x6d, 0x58, 0x56, 0x72, 0xaa, + 0xbd, 0x1e, 0x13, 0xfe, 0x60, 0x7a, 0xfb, 0x74, 0x15, 0xbe, 0xad, 0xb1, + 0xc0, 0xc4, 0xb4, 0x74, 0x4f, 0x52, 0x69, 0x74, 0x51, 0x56, 0x63, 0xa0, + 0xc0, 0x1e, 0xfb, 0x9f, 0xf5, 0x21, 0xa, 0xe, 0x7d, 0xae, 0xde, 0xbd, + 0xf7, 0x13, 0xbf, 0xf7, 0x67, 0xb7, 0xdd, 0x4c, 0xa, 0xf7, 0x42, 0xc3, + 0x67, 0xbc, 0xf7, 0x39, 0xcd, 0x53, 0xc3, 0xf7, 0x43, 0xae, 0x13, 0xfd, + 0x60, 0x22, 0xa, 0xf7, 0x56, 0xfb, 0x20, 0x15, 0x4a, 0x93, 0xb6, 0x66, + 0xce, 0x1b, 0xc9, 0xc1, 0xb5, 0xc2, 0xa2, 0x1f, 0x9c, 0xb3, 0x91, 0xd1, + 0xb7, 0x1a, 0xf1, 0x71, 0xf7, 0x17, 0xfb, 0x14, 0x1e, 0x13, 0xfe, 0x60, + 0x32, 0x52, 0x41, 0x36, 0x3b, 0xba, 0x47, 0xe0, 0xbd, 0xb6, 0xa1, 0xb9, + 0x9e, 0x1f, 0x43, 0x83, 0xfb, 0xf, 0x29, 0x1e, 0x13, 0xfd, 0xa0, 0x67, + 0x70, 0xa7, 0xad, 0x85, 0x1f, 0xd7, 0xf7, 0x9, 0x15, 0x13, 0xfe, 0xa0, + 0x4e, 0x6f, 0xb3, 0xc3, 0xc8, 0xa0, 0xc1, 0xd1, 0xc4, 0xa9, 0x53, 0x58, + 0x52, 0x70, 0x5c, 0x4d, 0x1f, 0xe, 0x7d, 0xae, 0xdd, 0xb8, 0xf8, 0x1e, + 0xb8, 0xde, 0x74, 0xa, 0xf7, 0x3a, 0xc8, 0xbc, 0xc3, 0xf7, 0x44, 0xc3, + 0xe0, 0xae, 0x3, 0xf8, 0x26, 0x4d, 0xa, 0xc4, 0x93, 0xf7, 0x1f, 0xdd, + 0xe2, 0x8a, 0xfb, 0x1b, 0x4e, 0x53, 0x85, 0xfb, 0x22, 0x3b, 0x35, 0x87, + 0xf7, 0x1d, 0xc8, 0x1e, 0x53, 0x16, 0x34, 0xab, 0xfb, 0x30, 0xf7, 0x6, + 0xf7, 0x17, 0x96, 0xf7, 0x23, 0xef, 0xeb, 0x79, 0xf7, 0x25, 0xfb, 0x10, + 0xfb, 0x18, 0x7d, 0xfb, 0x21, 0x27, 0x1e, 0xfb, 0xcb, 0x16, 0x20, 0xa, + 0xf7, 0x3a, 0x6b, 0xa, 0xc8, 0xf8, 0x6a, 0x58, 0x6, 0x85, 0x56, 0x65, + 0x69, 0x5b, 0x8c, 0x8, 0x6d, 0xdd, 0x7, 0xe, 0xd3, 0xa0, 0x76, 0xf7, + 0x5a, 0x96, 0xf8, 0x51, 0x77, 0x1, 0xf3, 0xf9, 0x2c, 0x3, 0xf8, 0xaa, + 0xf2, 0x15, 0xf7, 0x73, 0x24, 0x96, 0x96, 0xfb, 0x10, 0xf7, 0x74, 0xfc, + 0x37, 0xf8, 0x37, 0x75, 0x75, 0xf8, 0x39, 0xfc, 0x39, 0x6f, 0x89, 0xfc, + 0x2c, 0xf8, 0x2c, 0x80, 0x81, 0xf8, 0x2b, 0xfc, 0x2b, 0x7d, 0x68, 0xfc, + 0x36, 0xf8, 0x35, 0x5b, 0x5a, 0x5, 0xf8, 0x5c, 0xfc, 0x17, 0x15, 0xa0, + 0x97, 0x9a, 0xb2, 0xac, 0x8e, 0xd8, 0xfb, 0x17, 0x82, 0x82, 0x5, 0xe, + 0x7d, 0x72, 0xa, 0x1, 0xf7, 0xf6, 0xe5, 0x26, 0xa, 0xf7, 0xd3, 0x6b, + 0xa, 0xf7, 0xf8, 0x2a, 0xae, 0x7, 0xd2, 0x8c, 0xa8, 0xa1, 0x97, 0xd1, + 0x8, 0xd6, 0xfc, 0x78, 0x6, 0xe, 0x7d, 0xf7, 0x11, 0xf8, 0x7e, 0xf3, + 0x12, 0xae, 0xf7, 0x54, 0xfb, 0x54, 0xf7, 0x5c, 0xdb, 0xf7, 0x2c, 0xe7, + 0xf7, 0x57, 0x13, 0xec, 0x23, 0xa, 0x13, 0xdc, 0xf7, 0x5c, 0x6b, 0xa, + 0x89, 0xec, 0xce, 0xbf, 0xc5, 0xb0, 0x8, 0xc2, 0xae, 0xc1, 0xaf, 0xd4, + 0x1a, 0xbd, 0x72, 0xb1, 0x54, 0x54, 0x79, 0x5e, 0x46, 0x8c, 0x1e, 0x13, + 0xec, 0x33, 0x93, 0x5, 0xf7, 0x8, 0xd5, 0xc9, 0xe3, 0xe6, 0xda, 0x4a, + 0x2c, 0x22, 0x37, 0x5c, 0x3d, 0x57, 0x1e, 0x74, 0x7c, 0x6a, 0x77, 0x80, + 0x71, 0x8, 0xf7, 0x7a, 0x4a, 0x6, 0xe, 0x7d, 0xf7, 0xa, 0xcd, 0xf7, + 0x36, 0xc3, 0xf7, 0x25, 0xd0, 0xf2, 0x1, 0xf7, 0xd4, 0xf7, 0x2b, 0xe3, + 0xf7, 0x57, 0x26, 0xa, 0xf7, 0x60, 0x40, 0x15, 0xdc, 0x8c, 0x5, 0x4e, + 0x8f, 0x61, 0xcf, 0x8c, 0x1e, 0xbf, 0x8c, 0xa6, 0xab, 0xbd, 0x1a, 0xc3, + 0x66, 0xa2, 0x58, 0x1e, 0x5c, 0x88, 0x5, 0xc9, 0x7, 0xb2, 0x88, 0x5, + 0xbd, 0xac, 0xa4, 0xbf, 0xb3, 0x79, 0xa7, 0x5f, 0x50, 0x7e, 0x6b, 0x59, + 0x8d, 0x1f, 0x39, 0x94, 0x5, 0xe8, 0x89, 0xce, 0xbc, 0xe3, 0x1b, 0xd7, + 0xd5, 0x56, 0x3a, 0x5c, 0x79, 0x68, 0x60, 0x75, 0x1f, 0xbc, 0x71, 0xa3, + 0x6e, 0x4f, 0x1a, 0x30, 0x3e, 0x55, 0x36, 0x3f, 0x39, 0xb4, 0xe1, 0x1e, + 0xe, 0x7d, 0xf7, 0x11, 0xf8, 0x80, 0xf1, 0x12, 0xf7, 0x4e, 0xf7, 0xb7, + 0xfb, 0x5e, 0xf7, 0xb, 0x13, 0xd0, 0x23, 0xa, 0x13, 0xe0, 0xf7, 0x2b, + 0xfb, 0x9, 0x15, 0xc7, 0x7, 0xf7, 0x5f, 0xf7, 0xce, 0x5, 0xe3, 0xfb, + 0xc7, 0xdf, 0x48, 0x37, 0xfb, 0xa, 0x6, 0x13, 0xd0, 0x38, 0xf7, 0xa, + 0x6, 0x13, 0xe0, 0x13, 0xd0, 0xfb, 0xb, 0xce, 0x15, 0xf7, 0xb, 0xf7, + 0x56, 0x6, 0xe, 0x7d, 0xf7, 0xa, 0xf7, 0xf1, 0xd6, 0xce, 0xf7, 0x2, + 0x1, 0xf8, 0xce, 0xf7, 0x4c, 0x26, 0xa, 0xf7, 0x69, 0xfb, 0x2, 0x15, + 0xda, 0x9d, 0x5, 0x61, 0x87, 0xa5, 0x66, 0xb9, 0x1b, 0xd0, 0x9b, 0xc8, + 0xc5, 0xbb, 0x74, 0xb4, 0x54, 0x5a, 0x77, 0x6e, 0x61, 0x84, 0x1f, 0x44, + 0xf7, 0xaf, 0xf7, 0xbf, 0x48, 0xfb, 0x70, 0x2d, 0x6, 0x97, 0xa4, 0xa2, + 0x92, 0xa7, 0x1b, 0xef, 0xc7, 0x44, 0x2a, 0x27, 0x42, 0x3a, 0x26, 0x3c, + 0x49, 0xbd, 0xdd, 0x88, 0x1f, 0xe, 0x7d, 0xf7, 0xa, 0xd1, 0xf7, 0x4e, + 0xce, 0xf5, 0xd0, 0xf2, 0x1, 0xae, 0xf7, 0x4c, 0xe5, 0xf7, 0x2e, 0x26, + 0xa, 0xf7, 0xa0, 0xb9, 0x15, 0xa4, 0xa9, 0xa7, 0x95, 0xb2, 0x1b, 0xe4, + 0xc4, 0x47, 0x34, 0x31, 0x4d, 0x3d, 0x2d, 0xfb, 0x20, 0x6c, 0xf7, 0x1a, + 0xf7, 0x5, 0xf7, 0x4, 0xb2, 0xf7, 0x1f, 0xf7, 0x1e, 0xd7, 0xbf, 0x61, + 0x40, 0x95, 0x1f, 0x3f, 0x76, 0x5, 0xb0, 0x81, 0x86, 0xab, 0x5a, 0x1b, + 0x45, 0x78, 0x36, 0x53, 0x89, 0x1f, 0x91, 0xfb, 0xc, 0x15, 0x58, 0xa5, + 0x5c, 0xc5, 0xc2, 0x9a, 0xb9, 0xb8, 0xbb, 0x79, 0xba, 0x51, 0x59, 0x6f, + 0x5f, 0x5f, 0x1e, 0xe, 0x7d, 0x72, 0xa, 0x1, 0xf7, 0x73, 0xf7, 0xe8, + 0x26, 0xa, 0xf7, 0x9a, 0x6b, 0xa, 0xa2, 0xf7, 0x2c, 0xc1, 0xf7, 0x21, + 0xed, 0xf7, 0xf, 0x8, 0xfb, 0x8d, 0xcf, 0xf7, 0xe8, 0x4d, 0x6, 0x32, + 0xfb, 0x17, 0x3d, 0xfb, 0x18, 0x73, 0xfb, 0x33, 0x8, 0xe, 0x7d, 0xf7, + 0xa, 0xd0, 0xf7, 0x2a, 0xda, 0xf7, 0x16, 0xd0, 0xf3, 0x12, 0xae, 0xf7, + 0x59, 0xde, 0xf7, 0x33, 0xfb, 0x24, 0xf7, 0x1c, 0xe6, 0xf7, 0x59, 0x13, + 0xfb, 0x23, 0xa, 0xf7, 0xab, 0xa0, 0x15, 0x64, 0x9c, 0x72, 0xb5, 0xb4, + 0x1a, 0xdf, 0xd4, 0xbd, 0xd9, 0xd7, 0xd0, 0x56, 0x3a, 0x5b, 0x76, 0x6a, + 0x5e, 0x78, 0x1e, 0xbe, 0x6f, 0xa5, 0x6d, 0x4d, 0x1a, 0x34, 0x3d, 0x53, + 0x38, 0x33, 0x3f, 0xbc, 0xe9, 0xc1, 0xaa, 0xbb, 0xbe, 0x9d, 0x1e, 0x9b, + 0xef, 0x15, 0x62, 0xa2, 0x73, 0xb7, 0xb9, 0xa2, 0xa1, 0xb6, 0xb5, 0x75, + 0xa2, 0x5e, 0x5b, 0x76, 0x75, 0x60, 0x1e, 0x13, 0xfd, 0x7c, 0xfb, 0x70, + 0x15, 0x5c, 0xaa, 0x70, 0xbc, 0xc0, 0xa5, 0xa4, 0xbc, 0xbb, 0x6f, 0xa7, + 0x5a, 0x56, 0x6e, 0x72, 0x58, 0x1e, 0xe, 0x7d, 0xf7, 0xa, 0xd1, 0xf6, + 0xcf, 0xf7, 0x4d, 0xce, 0xf3, 0x1, 0xae, 0xf7, 0x57, 0xdf, 0xf7, 0x32, + 0xe0, 0xf7, 0x59, 0x26, 0xa, 0xf7, 0x6a, 0xfb, 0x14, 0x15, 0xd7, 0x99, + 0x5, 0x6c, 0x90, 0x9b, 0x70, 0xaf, 0x1b, 0xd4, 0x99, 0xe0, 0xc2, 0x8e, + 0x1f, 0x73, 0x72, 0x67, 0x82, 0x68, 0x1b, 0x30, 0x54, 0xce, 0xe3, 0xe7, + 0xcc, 0xd4, 0xea, 0xf7, 0x18, 0xae, 0xfb, 0xe, 0xfb, 0x3, 0x58, 0x86, + 0x3b, 0x72, 0x5e, 0x1f, 0x52, 0x6c, 0x54, 0x6c, 0x4b, 0x1b, 0x45, 0x57, + 0xb7, 0xd1, 0x85, 0x1f, 0xcc, 0xf7, 0x68, 0x15, 0x5c, 0xa3, 0x69, 0xbe, + 0xc3, 0xa1, 0xb4, 0xbc, 0xbc, 0x71, 0xb9, 0x53, 0x4e, 0x81, 0x51, 0x5d, + 0x1e, 0xe, 0x7d, 0xf7, 0x9, 0xfb, 0x9, 0x72, 0xa, 0x23, 0xf3, 0x12, + 0xae, 0xf7, 0x4f, 0xf7, 0x53, 0xf7, 0x29, 0xdf, 0xf7, 0x0, 0x13, 0x6e, + 0xf7, 0x72, 0xf7, 0x3, 0x15, 0xf7, 0xf6, 0x39, 0xad, 0x7, 0xc1, 0x8a, + 0xad, 0xb0, 0x90, 0xc7, 0x8, 0xd9, 0xfc, 0x78, 0x6, 0xfb, 0xa8, 0xf7, + 0x7f, 0x15, 0x2c, 0xa, 0xf7, 0xbb, 0x97, 0x15, 0x13, 0x9e, 0xf7, 0x2, + 0x9d, 0xf7, 0x19, 0xf7, 0x21, 0xf7, 0x1a, 0xa2, 0xfb, 0x1d, 0x21, 0xfb, + 0x2, 0x7a, 0xfb, 0x25, 0xfb, 0x20, 0xfb, 0xe, 0x66, 0xf7, 0x33, 0xeb, + 0x1e, 0xde, 0x16, 0x59, 0x8e, 0xfb, 0x26, 0xd4, 0xce, 0x91, 0xf7, 0x2a, + 0xb9, 0xbf, 0x8c, 0xf7, 0x1c, 0x41, 0x46, 0x84, 0xfb, 0x1f, 0x5a, 0x1e, + 0xe, 0xe9, 0xf7, 0x89, 0xd0, 0x49, 0xf7, 0xb, 0x6c, 0xce, 0x7c, 0xaa, + 0x1, 0xa2, 0xf7, 0x8c, 0x15, 0xf8, 0xf5, 0x6, 0xf7, 0x7a, 0xe0, 0x5, + 0x9a, 0x7, 0xfb, 0x8a, 0xd2, 0x5, 0xfc, 0xe5, 0x6c, 0xf8, 0xe8, 0x6, + 0x78, 0x76, 0x5, 0xfc, 0xd5, 0x7c, 0xf8, 0xd3, 0x6, 0x9a, 0x68, 0x5, + 0xfc, 0xe2, 0x6, 0xf8, 0xe8, 0x77, 0x15, 0x92, 0xa2, 0x7a, 0xb2, 0xa0, + 0xa4, 0xf7, 0x27, 0x65, 0x5, 0x7e, 0x7, 0xe, 0xc2, 0xa3, 0x76, 0xf7, + 0xb9, 0xe2, 0xf7, 0xba, 0x77, 0x1, 0xc1, 0xf9, 0xb9, 0x3, 0xc1, 0xf7, + 0xb5, 0x15, 0xf7, 0xc4, 0x9a, 0x5, 0xfb, 0xc0, 0x7, 0x8d, 0x8a, 0xf8, + 0x87, 0xf7, 0xe4, 0x75, 0xa, 0xfc, 0x87, 0xf7, 0xe4, 0x89, 0x8a, 0x5, + 0xfb, 0xc0, 0x7, 0xfb, 0xc4, 0x9a, 0x5, 0xe, 0x8a, 0xf7, 0x41, 0x76, + 0xf7, 0x4b, 0xa2, 0xf7, 0x4a, 0x54, 0xa, 0xf7, 0xe3, 0x15, 0xf8, 0xbe, + 0x6, 0x61, 0x57, 0x65, 0x4d, 0x8e, 0x46, 0xca, 0xe2, 0xf7, 0x12, 0xd1, + 0xf1, 0xb0, 0x25, 0xb0, 0xfb, 0x10, 0xd1, 0x4a, 0xe2, 0x8a, 0x4c, 0xab, + 0x3e, 0xb9, 0x61, 0x8, 0xfc, 0xbe, 0x6, 0xe, 0x49, 0xa, 0xf7, 0xba, + 0xfb, 0x8c, 0x5, 0xfb, 0x4b, 0xfb, 0x44, 0x15, 0xf7, 0x78, 0xf7, 0x44, + 0x5, 0xf8, 0x39, 0x6, 0xe, 0xf7, 0x45, 0xf7, 0x41, 0x76, 0xf7, 0x4b, + 0xa2, 0xf7, 0x4a, 0x77, 0x1, 0xad, 0x4d, 0xa, 0xf2, 0x65, 0xed, 0x45, + 0xcc, 0x35, 0x8c, 0xca, 0x6b, 0xd6, 0x5d, 0xb8, 0x8, 0xf8, 0xce, 0x6, + 0x61, 0x57, 0x64, 0x4d, 0x8f, 0x46, 0xca, 0xe2, 0xf0, 0xd1, 0xf0, 0xb0, + 0x25, 0xaf, 0x29, 0xd2, 0x4a, 0xe2, 0x8a, 0x4c, 0xaa, 0x3d, 0xba, 0x62, + 0x8, 0xfc, 0xce, 0x6, 0xb5, 0xbd, 0xb1, 0xc9, 0x88, 0xd1, 0x4c, 0x33, + 0x26, 0x45, 0x25, 0x67, 0x8, 0xe, 0xfc, 0x11, 0x23, 0x76, 0xfa, 0x45, + 0x77, 0x1, 0xf7, 0x6d, 0xa2, 0x3, 0xae, 0xf7, 0x1e, 0x15, 0xe2, 0x4c, + 0xd1, 0x28, 0xb0, 0x26, 0xaf, 0xf1, 0xd2, 0xeb, 0xe1, 0xcc, 0x4d, 0x8c, + 0x3d, 0x6c, 0x61, 0x5c, 0x8, 0xf8, 0xce, 0x7, 0xbe, 0x61, 0xc9, 0x65, + 0xd0, 0x8e, 0x34, 0xca, 0x45, 0xf0, 0x67, 0xf1, 0x65, 0x24, 0x45, 0x29, + 0x35, 0x4a, 0xca, 0x8a, 0xd6, 0xab, 0xb7, 0xb9, 0x8, 0xfc, 0xce, 0x7, + 0x58, 0xb5, 0x4d, 0xb2, 0x46, 0x87, 0x8, 0xe, 0xe0, 0xcb, 0x76, 0xf7, + 0x97, 0xd5, 0xf7, 0x98, 0x77, 0x1, 0xc3, 0xf9, 0xcc, 0x3, 0xc3, 0xf7, + 0xbc, 0x15, 0xf8, 0x12, 0x98, 0x5, 0xfb, 0x9d, 0x7, 0x8c, 0x8a, 0xf8, + 0x4d, 0xf7, 0xbc, 0x75, 0xa, 0xfc, 0x4d, 0xf7, 0xbb, 0x8a, 0x8a, 0x5, + 0xfb, 0x9d, 0x7, 0xfc, 0x12, 0x98, 0x5, 0xe, 0xda, 0xf7, 0xdb, 0xa5, + 0x71, 0xa6, 0x7f, 0x94, 0x12, 0x9f, 0xfa, 0x3, 0x13, 0x90, 0xc3, 0xf7, + 0xd9, 0x15, 0xf9, 0x1c, 0x8f, 0x3c, 0x7a, 0xfb, 0x0, 0x57, 0x75, 0x58, + 0x19, 0x7d, 0x85, 0x8c, 0x82, 0x8f, 0x1b, 0x8d, 0x8f, 0x8e, 0x8e, 0x8d, + 0x1f, 0xca, 0xe0, 0xf7, 0x5a, 0xb4, 0xf3, 0x9a, 0x8, 0x8d, 0x8c, 0x8c, + 0x8d, 0x8c, 0x1f, 0x13, 0x30, 0x8e, 0x8d, 0x8e, 0x8e, 0x95, 0x1b, 0x92, + 0x8c, 0x94, 0x8e, 0x8e, 0x1a, 0x8c, 0x88, 0x8c, 0x88, 0x1e, 0xfb, 0x19, + 0x95, 0xfb, 0x2f, 0xb1, 0x46, 0xe6, 0x8, 0x8d, 0x89, 0x89, 0x8e, 0x8a, + 0x1b, 0x89, 0x8d, 0x81, 0x80, 0x8f, 0x1f, 0xa2, 0x53, 0xdd, 0x67, 0xd7, + 0x6d, 0x8, 0x13, 0x50, 0xfc, 0xf7, 0x8d, 0x5, 0x70, 0x66, 0x94, 0x8d, + 0x78, 0x1f, 0x88, 0x8c, 0x87, 0x89, 0x88, 0x1a, 0x88, 0x8e, 0x88, 0x90, + 0x86, 0x1e, 0x90, 0x86, 0x95, 0x7e, 0x9a, 0x84, 0x8, 0xe, 0xe3, 0xc0, + 0x76, 0xf7, 0x7c, 0xf7, 0x38, 0xf7, 0x7c, 0x77, 0x12, 0xae, 0xf9, 0xed, + 0x17, 0xf8, 0xda, 0xf7, 0x9c, 0x15, 0x4d, 0x4d, 0x5, 0x76, 0x74, 0x7d, + 0x74, 0x6a, 0x1a, 0x57, 0xb3, 0x64, 0xbe, 0xaf, 0xa4, 0xa3, 0xa4, 0xa0, + 0x1e, 0x13, 0x30, 0xf7, 0x7e, 0xf7, 0x9d, 0xfb, 0x81, 0xf7, 0xa1, 0x5, + 0xa3, 0x77, 0x72, 0xa0, 0x6a, 0x1b, 0x13, 0x50, 0x56, 0x64, 0x61, 0x56, + 0x6f, 0xa1, 0x70, 0x9e, 0x78, 0x1f, 0xc3, 0x4c, 0x5, 0xfc, 0x48, 0x6, + 0x51, 0x56, 0x7a, 0x4a, 0x47, 0xbf, 0x7d, 0xc6, 0x1f, 0xe, 0xe4, 0xf7, + 0x2a, 0x76, 0xf7, 0x5c, 0xac, 0xf7, 0x5c, 0x54, 0xa, 0xf9, 0xec, 0x3, + 0xae, 0xf7, 0xdd, 0x15, 0xf8, 0xff, 0xfb, 0x5c, 0x6, 0xf7, 0x81, 0xf7, + 0x6d, 0xfb, 0x81, 0xf7, 0x6c, 0x5, 0xfb, 0x5c, 0xfc, 0xff, 0x7, 0xe, + 0xe4, 0xf7, 0x29, 0x76, 0xf7, 0x34, 0xf7, 0x8, 0xf7, 0x33, 0x54, 0xa, + 0xf9, 0xee, 0x3, 0xae, 0xf7, 0xb4, 0x15, 0xf8, 0xff, 0xfb, 0x34, 0x6, + 0xf7, 0x83, 0xf7, 0x6e, 0xfb, 0x83, 0xf7, 0x6d, 0x5, 0xfb, 0x33, 0xfc, + 0xff, 0x7, 0xe, 0xf5, 0x43, 0x76, 0xf9, 0xd6, 0x77, 0x1, 0x34, 0xa, + 0xfc, 0x7d, 0xfc, 0xc3, 0x15, 0xb5, 0x64, 0xf7, 0xc, 0xd6, 0xf7, 0x25, + 0xaf, 0xf7, 0x1f, 0x99, 0x19, 0xbc, 0xf7, 0x58, 0xcb, 0xd9, 0xf7, 0x11, + 0xf7, 0x2e, 0x8, 0x8e, 0x94, 0x8d, 0x93, 0x94, 0x1a, 0xb6, 0x61, 0xb8, + 0x5d, 0x7b, 0x7b, 0x86, 0x7e, 0x7b, 0x1e, 0xfb, 0x19, 0xfb, 0x1e, 0x21, + 0x36, 0xfb, 0x32, 0xfb, 0x0, 0x6a, 0x31, 0x4d, 0xfb, 0x7, 0x4e, 0x41, + 0x8, 0xb1, 0x95, 0x15, 0xa3, 0xa9, 0xa7, 0xb3, 0x9b, 0xa8, 0xa7, 0xbd, + 0xa4, 0xbe, 0x9e, 0xbf, 0xe0, 0xc5, 0xde, 0xc8, 0xd8, 0xce, 0xbe, 0xb7, + 0xba, 0xba, 0xba, 0xbb, 0x8, 0x95, 0x95, 0x8f, 0x90, 0x9b, 0x1b, 0xa9, + 0xad, 0x6d, 0x6d, 0x81, 0x87, 0x85, 0x86, 0x84, 0x1f, 0x72, 0x6b, 0x70, + 0x6b, 0x73, 0x6a, 0x3d, 0x24, 0x61, 0x38, 0x6a, 0xfb, 0x11, 0xfb, 0x0, + 0x7f, 0xfb, 0xa, 0x6e, 0x26, 0x5b, 0x7b, 0x84, 0x78, 0x80, 0x81, 0x84, + 0x8a, 0x8c, 0x18, 0xf7, 0x21, 0xf7, 0x2a, 0x5, 0xa8, 0xab, 0xae, 0xa7, + 0x92, 0x84, 0x93, 0x83, 0x6e, 0x65, 0x68, 0x6d, 0x90, 0x1f, 0xfb, 0x1d, + 0xfb, 0x2c, 0x5, 0xe, 0x86, 0xf7, 0x44, 0x76, 0xf2, 0xf7, 0x44, 0xf2, + 0x54, 0xa, 0xa4, 0xcb, 0xba, 0xaf, 0xd9, 0x3, 0xf7, 0xca, 0xf7, 0x96, + 0x15, 0xf7, 0x99, 0x24, 0x6, 0xf7, 0x78, 0xf7, 0x53, 0xfb, 0x78, 0xf7, + 0x53, 0x5, 0x24, 0xfb, 0x99, 0x7, 0x24, 0xfb, 0x44, 0x15, 0xd9, 0xf7, + 0x44, 0x3d, 0x6, 0x38, 0xfb, 0x44, 0x15, 0xba, 0xf7, 0x44, 0x5c, 0x6, + 0x32, 0xfb, 0x44, 0x15, 0xa4, 0xf7, 0x44, 0x72, 0x6, 0xe, 0xad, 0xf7, + 0x6, 0x76, 0xf8, 0x8e, 0x54, 0xa, 0xa2, 0xd3, 0xab, 0xc6, 0xbe, 0xb1, + 0xd5, 0x3, 0xf8, 0x2c, 0xf7, 0x5b, 0x15, 0xf7, 0x3a, 0x21, 0x92, 0x6, + 0xb7, 0xf7, 0xb, 0xf4, 0xe3, 0xf7, 0x0, 0xb9, 0xfb, 0x2, 0xba, 0xfb, + 0x0, 0xe6, 0x64, 0xf7, 0x7, 0x8, 0x84, 0x21, 0xfb, 0x3a, 0x6, 0x29, + 0xfb, 0xba, 0x15, 0xd5, 0xf7, 0xba, 0x41, 0x6, 0x32, 0xfb, 0xba, 0x15, + 0xbe, 0xf7, 0xba, 0x58, 0x6, 0x30, 0xfb, 0xba, 0x15, 0xab, 0xf7, 0xba, + 0x6b, 0x6, 0x2c, 0xfb, 0xba, 0x15, 0xa2, 0xf7, 0xba, 0x74, 0x6, 0xe, + 0x80, 0xf7, 0x11, 0x76, 0xf8, 0x78, 0x54, 0xa, 0xf9, 0x88, 0x3, 0xae, + 0xf7, 0x5d, 0x15, 0xf8, 0x8b, 0x2a, 0x6, 0xf7, 0x91, 0xf7, 0x86, 0xfb, + 0x91, 0xf7, 0x86, 0x5, 0x2a, 0xfc, 0x8b, 0x7, 0xe, 0x49, 0xa, 0xf7, + 0xbc, 0xfb, 0x8c, 0x5, 0xb8, 0x16, 0xfb, 0x70, 0xf7, 0x44, 0xf9, 0x13, + 0xfb, 0x44, 0x5, 0xe, 0xd9, 0x3d, 0xa, 0xf9, 0xe3, 0x7a, 0xa, 0xf9, + 0xe3, 0xf7, 0xee, 0xfd, 0xe3, 0xf7, 0xee, 0xf7, 0x67, 0xfb, 0xee, 0x5, + 0xe, 0xe6, 0xf4, 0x76, 0xf7, 0xaf, 0xd8, 0xf7, 0x38, 0x54, 0xa, 0xb3, + 0x3, 0xf8, 0xb5, 0xdf, 0x15, 0x76, 0xa, 0x23, 0xfb, 0xcb, 0x7, 0x25, + 0x8a, 0x52, 0xa8, 0xf7, 0x1c, 0x1a, 0x63, 0xfb, 0x85, 0x6, 0x8c, 0x4e, + 0x8b, 0x6f, 0xb8, 0x5c, 0x8, 0x62, 0xb1, 0xb9, 0x87, 0xc0, 0x1b, 0xf7, + 0xdb, 0x6, 0xe, 0xe7, 0xf4, 0x76, 0xf7, 0x37, 0xf7, 0x97, 0xf1, 0x54, + 0xa, 0xb3, 0x3, 0xae, 0xdf, 0x15, 0xb3, 0x6, 0xf7, 0x1c, 0xc5, 0xa7, + 0xf1, 0x8a, 0x1e, 0xf7, 0xca, 0x24, 0x6, 0x76, 0xa, 0x25, 0xfb, 0xdb, + 0x7, 0x56, 0x5e, 0x86, 0x62, 0x64, 0x1f, 0x5f, 0x5d, 0x8a, 0x6e, 0x8a, + 0x4f, 0x8, 0xe, 0xfc, 0xc, 0x3d, 0x76, 0xfa, 0xe, 0x54, 0xa, 0xf8, + 0x1e, 0x3, 0xae, 0xc2, 0x15, 0xf7, 0x14, 0xfb, 0x2e, 0x6, 0xf7, 0x9e, + 0xf8, 0x51, 0xfb, 0x9e, 0xf8, 0x51, 0x5, 0xfb, 0x2e, 0xfb, 0x14, 0x7, + 0xe, 0xb7, 0xe7, 0x76, 0xf8, 0xbc, 0x77, 0x1, 0xf8, 0x42, 0x96, 0x3, + 0xae, 0xf7, 0x38, 0x15, 0xf8, 0x1f, 0x2e, 0x96, 0x6, 0xae, 0xd2, 0xf7, + 0x7e, 0xf7, 0x71, 0xf7, 0x1e, 0x77, 0x8, 0x94, 0x7, 0xfb, 0x3d, 0x9f, + 0xfb, 0x29, 0xf6, 0x32, 0xf7, 0x24, 0x8, 0x80, 0x2d, 0xfc, 0x1f, 0x6, + 0xe, 0x88, 0xb7, 0xa0, 0x76, 0x6c, 0xa, 0x76, 0xa0, 0x12, 0xae, 0xa5, + 0xf7, 0xe4, 0xa5, 0x13, 0xb7, 0xae, 0xf7, 0x5d, 0x15, 0xf7, 0xfe, 0x6, + 0x13, 0x4b, 0xfb, 0x31, 0xf7, 0x28, 0x7, 0xf7, 0x95, 0xf7, 0xc2, 0xfb, + 0x95, 0xf7, 0xc2, 0x5, 0xfb, 0x28, 0x6, 0x13, 0xb7, 0xfb, 0x31, 0xfb, + 0xfe, 0x7, 0xa5, 0xfb, 0x9d, 0x15, 0xf7, 0x84, 0xf7, 0xfe, 0xf7, 0x35, + 0x7, 0xf7, 0x8e, 0xfb, 0xad, 0xfb, 0x8e, 0x7d, 0xa, 0xf7, 0x1b, 0x50, + 0x76, 0xf8, 0x57, 0xf7, 0x47, 0x8b, 0xb3, 0x8b, 0xa0, 0xf7, 0x16, 0x77, + 0x1, 0xc6, 0xf9, 0xde, 0x3, 0x34, 0xa, 0xfc, 0x6f, 0xfc, 0xc1, 0x15, + 0x96, 0x83, 0xf7, 0x2b, 0xf7, 0x3b, 0x5, 0xa9, 0x86, 0xb1, 0xae, 0xa8, + 0x1b, 0x93, 0x92, 0x83, 0x84, 0x6f, 0x6b, 0x68, 0x6e, 0x1f, 0xfb, 0x30, + 0xfb, 0x3a, 0x93, 0x83, 0xf7, 0x6, 0xd2, 0xf7, 0x2b, 0xb0, 0xf7, 0x15, + 0x99, 0x19, 0xb8, 0xf7, 0x4a, 0xca, 0xdd, 0xf7, 0x9, 0xf7, 0x24, 0x8, + 0x89, 0x6, 0xbd, 0x91, 0x6f, 0xbd, 0x52, 0x1b, 0x83, 0x83, 0x89, 0x8a, + 0x83, 0x1f, 0x6b, 0x69, 0xfb, 0x1, 0xfb, 0x5, 0xfb, 0x10, 0x2e, 0xfb, + 0x15, 0x33, 0x19, 0x6f, 0x3e, 0x4c, 0xfb, 0xf, 0x50, 0x44, 0x8, 0xe, + 0xa7, 0x90, 0xf9, 0x4e, 0x1, 0xc5, 0xf9, 0x73, 0x3, 0xf3, 0xf7, 0xbe, + 0x15, 0xbc, 0xf7, 0x44, 0xf7, 0x8f, 0x64, 0x5, 0x8b, 0xc8, 0xf7, 0x51, + 0x88, 0x1a, 0x88, 0x8a, 0xf7, 0xa7, 0xfb, 0x86, 0x8b, 0x1a, 0x88, 0x7, + 0x8e, 0xfc, 0x28, 0xfb, 0x75, 0x8b, 0x1e, 0x8a, 0xb9, 0xf7, 0x48, 0x8b, + 0x1e, 0xfb, 0xd5, 0xfb, 0x16, 0x15, 0xf7, 0x92, 0xb4, 0x6b, 0xfb, 0x16, + 0x88, 0xfb, 0x0, 0xf8, 0x98, 0xf7, 0xad, 0x5, 0xf5, 0x7, 0xfb, 0xee, + 0xf7, 0xcb, 0x44, 0xfb, 0x6e, 0xfb, 0x91, 0xb2, 0x4d, 0xfb, 0x76, 0x5, + 0xe, 0xfb, 0x23, 0xcc, 0x76, 0xe4, 0xe4, 0xf7, 0xb8, 0xa8, 0xf4, 0x54, + 0xa, 0xa7, 0xf7, 0x78, 0xa5, 0x3, 0xf7, 0xd, 0xf7, 0x19, 0x15, 0xf7, + 0x3e, 0x71, 0x6, 0xd7, 0x4c, 0xf7, 0xba, 0xf7, 0xb0, 0xfc, 0x6, 0xf7, + 0xd4, 0x5, 0x22, 0xfb, 0x94, 0xfb, 0xe6, 0x7, 0xa7, 0x9c, 0x15, 0xf7, + 0xb8, 0xf7, 0x92, 0xd6, 0x7, 0xf7, 0x96, 0xfb, 0x72, 0xfb, 0x96, 0xfb, + 0x88, 0x5, 0xee, 0x7, 0xe, 0xae, 0xed, 0x76, 0xeb, 0xcf, 0xf7, 0x99, + 0xa5, 0xe6, 0x77, 0x1, 0xf8, 0xb6, 0xa3, 0x3, 0xf3, 0xf7, 0x41, 0x15, + 0xf8, 0x4e, 0x66, 0x6, 0xc9, 0x50, 0xf7, 0x7c, 0xf7, 0x8a, 0xfb, 0xba, + 0xf7, 0xbc, 0x5, 0x30, 0xfc, 0x91, 0x7, 0xd8, 0xfb, 0x31, 0x3c, 0xfb, + 0x16, 0x5, 0xa7, 0x16, 0xd9, 0xf7, 0x16, 0x4b, 0xf7, 0x17, 0x5, 0xf8, + 0x81, 0xc7, 0x6, 0xf7, 0x4e, 0xfb, 0x53, 0xfb, 0x4e, 0xfb, 0x4b, 0x5, + 0xc0, 0x7, 0xe, 0x3c, 0x9c, 0x76, 0xf9, 0x43, 0x77, 0x1, 0xb6, 0xf7, + 0x3c, 0x3, 0xb6, 0xf7, 0xe8, 0x15, 0xfb, 0x52, 0xf7, 0x2b, 0xfb, 0x2e, + 0xf7, 0x4e, 0xf7, 0x4e, 0xf7, 0x2b, 0xf7, 0x2e, 0xf7, 0x52, 0xf7, 0x52, + 0xfb, 0x2b, 0xf7, 0x2d, 0xfb, 0x4e, 0xfb, 0x4e, 0xfb, 0x2b, 0xfb, 0x2d, + 0xfb, 0x52, 0x1e, 0xf7, 0x3c, 0xfb, 0xb4, 0x15, 0xf8, 0xd4, 0x7, 0x8c, + 0x8c, 0xf8, 0x87, 0xfb, 0xb4, 0x80, 0xa, 0xfc, 0x87, 0xfb, 0xb4, 0x5, + 0xe, 0xf6, 0xf7, 0xb, 0x76, 0xf7, 0xd, 0xad, 0xd2, 0xab, 0xd2, 0xad, + 0xf7, 0xd, 0x77, 0x1, 0xf9, 0x3a, 0xac, 0x3, 0xb2, 0xf7, 0x6f, 0x15, + 0xf7, 0xed, 0x6, 0xec, 0xf4, 0x5, 0xf7, 0x59, 0xfb, 0x76, 0x6, 0xf7, + 0x7d, 0xf7, 0x86, 0xfb, 0x7d, 0xf7, 0x86, 0x5, 0xfb, 0x76, 0xfb, 0x59, + 0x7, 0x2a, 0xf4, 0x5, 0xfb, 0xed, 0x6, 0xf7, 0x6, 0xfb, 0xd, 0x5, + 0xf8, 0xc2, 0xfb, 0x3b, 0x15, 0xf7, 0xe2, 0x7, 0xf7, 0x32, 0xfb, 0x3b, + 0x5, 0xfd, 0x8b, 0x34, 0x15, 0xdf, 0xe2, 0x37, 0xe2, 0x5, 0xf7, 0x9f, + 0x6, 0xda, 0x34, 0x3c, 0x34, 0x5, 0xe, 0xa5, 0xf8, 0x87, 0xf7, 0xda, + 0x15, 0xf7, 0x2d, 0x6, 0x71, 0x69, 0x8b, 0x5c, 0xaa, 0x6a, 0xb3, 0xc7, + 0xce, 0xb4, 0xcd, 0xb2, 0x48, 0xa6, 0x49, 0xb3, 0x63, 0xc8, 0x69, 0x6e, + 0x8e, 0x54, 0xa5, 0x6d, 0x8, 0xfb, 0x2d, 0x6, 0xfc, 0x64, 0xfb, 0x33, + 0x15, 0xf7, 0xe8, 0x6, 0xf7, 0xb, 0xf7, 0xb, 0x5, 0xfb, 0xe6, 0x6, + 0xb3, 0x4, 0xf7, 0xe6, 0x6, 0x90, 0xfb, 0x11, 0xf7, 0x7, 0x8b, 0x1f, + 0xfb, 0xe7, 0x6, 0xe, 0xf7, 0x14, 0xf7, 0x25, 0x76, 0xf7, 0x61, 0xad, + 0xf7, 0x61, 0x77, 0x1, 0xf7, 0x4a, 0xf8, 0x73, 0x3, 0xae, 0xf7, 0x23, + 0x15, 0xf7, 0xe6, 0x6, 0x91, 0xc0, 0xa0, 0xd2, 0xb6, 0xaa, 0x8, 0xa9, + 0xb5, 0xd8, 0x8c, 0xbd, 0x1b, 0xe7, 0x6, 0x56, 0x53, 0x88, 0x31, 0x98, + 0x50, 0xd5, 0xe6, 0xe2, 0xe2, 0xf7, 0x2, 0xb7, 0xfb, 0x2, 0xb9, 0x30, + 0xdd, 0x45, 0xe9, 0x7e, 0x64, 0x90, 0xfb, 0x7, 0xbe, 0x58, 0x8, 0x2f, + 0x6, 0x4f, 0x4e, 0x8b, 0xb5, 0x5b, 0x1f, 0x65, 0xab, 0x70, 0xc8, 0x86, + 0xbe, 0x8, 0xfb, 0xe6, 0x6, 0x97, 0x30, 0xbb, 0x3d, 0xe2, 0x69, 0x35, + 0x6c, 0x56, 0x37, 0x83, 0x33, 0x8, 0xe, 0x83, 0xf7, 0xb, 0x76, 0xf7, + 0x64, 0xd3, 0x5b, 0xa1, 0xf7, 0x7c, 0x77, 0x12, 0xa3, 0xf9, 0xa3, 0x13, + 0xb8, 0xf9, 0x7e, 0xf7, 0xde, 0x15, 0x60, 0x71, 0xfb, 0x6, 0x45, 0x45, + 0x62, 0x8, 0x63, 0x74, 0x83, 0x7b, 0x75, 0x1a, 0x72, 0xa3, 0x82, 0x95, + 0x9e, 0x93, 0x94, 0xa7, 0xa5, 0x1e, 0xcd, 0xd1, 0xf4, 0xe9, 0xd9, 0xb6, + 0x8, 0x89, 0x7, 0x8d, 0x7, 0x3b, 0xb6, 0x23, 0xe6, 0x49, 0xd2, 0x8, + 0xa7, 0x71, 0x82, 0x94, 0x78, 0x1b, 0x81, 0x75, 0x82, 0x72, 0x75, 0x94, + 0x7b, 0xb3, 0x74, 0x1f, 0xd1, 0x63, 0xf7, 0x7, 0x44, 0xb4, 0x71, 0x8, + 0x13, 0xd8, 0xfb, 0xaf, 0xfb, 0xb5, 0xa5, 0x2f, 0x1b, 0x64, 0x78, 0x7d, + 0x74, 0x72, 0xa0, 0x81, 0xb1, 0x1f, 0x13, 0xb8, 0xea, 0xf7, 0xbc, 0xa3, + 0xf7, 0xa4, 0x1b, 0xe, 0xad, 0xdc, 0x76, 0xf7, 0x9f, 0xa3, 0xf7, 0xa5, + 0x77, 0x1, 0xf9, 0xab, 0xf7, 0xdb, 0x15, 0x5e, 0x71, 0xfb, 0x7, 0x55, + 0x35, 0x71, 0x8, 0x4d, 0x78, 0x8e, 0x58, 0x66, 0x1a, 0x62, 0xc1, 0x7e, + 0xb4, 0x9c, 0xa9, 0xa1, 0x9d, 0x98, 0x1e, 0xc9, 0xe0, 0xc6, 0xf7, 0x3, + 0xdd, 0xb7, 0x38, 0xb8, 0x42, 0xf7, 0xf, 0x4c, 0xe1, 0x8, 0x9c, 0x7f, + 0x6f, 0x98, 0x7a, 0x1b, 0x5c, 0x5f, 0x70, 0x62, 0x63, 0xa4, 0x61, 0xb6, + 0x7a, 0x1f, 0xde, 0x6c, 0xf7, 0xa, 0x5a, 0xb7, 0x71, 0x8, 0xfb, 0xbb, + 0xfb, 0x96, 0xe7, 0x2b, 0x1b, 0x54, 0x52, 0x41, 0x6d, 0x64, 0xc3, 0x4b, + 0xc4, 0x1f, 0xee, 0xf7, 0x9f, 0xe6, 0xf7, 0xaf, 0x1b, 0xe, 0xe3, 0xf7, + 0x5f, 0xf7, 0xa6, 0x1, 0xa9, 0xf9, 0xf8, 0x3, 0xa9, 0xf7, 0x5f, 0x15, + 0xf9, 0x19, 0x6, 0xf7, 0x73, 0xf7, 0x1c, 0x75, 0xa, 0xfb, 0x73, 0xf7, + 0x1c, 0x5, 0xfd, 0x19, 0x6, 0xf7, 0x18, 0xfb, 0x1c, 0x80, 0xa, 0xe, + 0x37, 0x93, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xad, 0xf9, 0x43, 0x3, 0xf8, + 0x66, 0xf8, 0xb6, 0x15, 0xfb, 0xf2, 0xfb, 0x7f, 0x7b, 0x74, 0x81, 0x1b, + 0x80, 0x82, 0xa7, 0x93, 0x88, 0x1f, 0xca, 0x71, 0x89, 0x9c, 0x77, 0x1b, + 0x71, 0x6d, 0x7a, 0x7c, 0x76, 0x1f, 0x7e, 0x82, 0x81, 0x83, 0x7a, 0x1a, + 0x59, 0xb2, 0x27, 0xa1, 0x5d, 0x1e, 0x92, 0x7d, 0x90, 0x7d, 0x95, 0x84, + 0x8, 0x86, 0x92, 0x9a, 0x8b, 0xab, 0x1b, 0x99, 0xa7, 0x8c, 0x90, 0x92, + 0x1f, 0x94, 0x91, 0xf7, 0xf3, 0xf8, 0xd0, 0xf7, 0xb, 0xf7, 0x5, 0xa1, + 0xa0, 0x18, 0x55, 0x33, 0x77, 0x63, 0x67, 0x1f, 0xe, 0xf7, 0x17, 0xd4, + 0xf8, 0xaa, 0x1, 0xa9, 0xf9, 0xf8, 0x3, 0xa9, 0xd4, 0x15, 0xf9, 0x19, + 0x6, 0xf7, 0x73, 0xf7, 0x9e, 0x75, 0xa, 0xfb, 0x73, 0xf7, 0x9e, 0x5, + 0xfd, 0x19, 0x6, 0xf7, 0x18, 0xfb, 0x9e, 0x80, 0xa, 0xe, 0xda, 0x91, + 0xf9, 0x30, 0x1, 0xe4, 0xf9, 0xa2, 0x3, 0xe4, 0x91, 0x15, 0xf9, 0xa2, + 0xf7, 0xe1, 0x75, 0xa, 0xfd, 0xa2, 0xf7, 0xe1, 0x5, 0x38, 0x7, 0xf8, + 0xe7, 0xfb, 0x8e, 0x80, 0xa, 0xfc, 0xe7, 0xfb, 0x8e, 0x5, 0x95, 0xf7, + 0x16, 0x15, 0xf7, 0xe1, 0xf7, 0xc, 0x75, 0xa, 0xfb, 0xe1, 0xf7, 0xc, + 0x5, 0xe, 0x30, 0xbb, 0x76, 0xf8, 0x87, 0x77, 0x1, 0xd4, 0xf8, 0xef, + 0x3, 0xf7, 0x12, 0xdd, 0x15, 0xf7, 0x63, 0xf7, 0x38, 0xf7, 0x2f, 0xfb, + 0x6e, 0x8c, 0x8a, 0xf7, 0x4f, 0xf8, 0x87, 0x5, 0x8a, 0x6, 0xfc, 0xa9, + 0x81, 0x8c, 0x8a, 0xf7, 0x2d, 0xfb, 0x6e, 0xfb, 0x73, 0xfb, 0x1f, 0x5, + 0xe, 0x88, 0xb7, 0x6c, 0xa, 0x12, 0xae, 0xf7, 0x4, 0xf7, 0x81, 0xf7, + 0xb, 0x13, 0x6c, 0xae, 0xf7, 0x5d, 0x15, 0xf7, 0xf1, 0x6, 0x13, 0x9c, + 0xfb, 0x31, 0xf7, 0x1a, 0x7, 0xf7, 0xb0, 0xf7, 0xc2, 0xfb, 0xb0, 0xf7, + 0xc2, 0x5, 0xfb, 0x1a, 0x6, 0x13, 0xac, 0xfb, 0x31, 0xfb, 0xf1, 0x7, + 0xf7, 0x4, 0xfb, 0x9d, 0x15, 0xf7, 0x84, 0xf7, 0xf8, 0xf7, 0x35, 0x7, + 0xf7, 0x9c, 0xfb, 0xad, 0xfb, 0x9c, 0x7d, 0xa, 0x47, 0xc5, 0x76, 0xf8, + 0x91, 0xea, 0x99, 0x77, 0x12, 0xf8, 0xee, 0xe0, 0x13, 0xb0, 0xf8, 0x7e, + 0xf8, 0x3d, 0x15, 0xf7, 0x4, 0xe7, 0x8f, 0x63, 0xb4, 0x6d, 0xb3, 0x80, + 0x19, 0x88, 0xe5, 0xaa, 0xcf, 0xa0, 0xc8, 0x8, 0x13, 0xd0, 0x45, 0x77, + 0x3b, 0x7c, 0x44, 0xa0, 0x8c, 0x66, 0xa7, 0x56, 0xad, 0x86, 0xfb, 0x4, + 0x2f, 0x18, 0xfc, 0x44, 0xfb, 0x63, 0x15, 0xf7, 0x3d, 0x7e, 0xf7, 0x97, + 0xf7, 0x6e, 0xfb, 0x3b, 0x99, 0x5, 0x36, 0xfc, 0x41, 0x15, 0xf7, 0x98, + 0xf7, 0x6e, 0x5, 0xcd, 0x92, 0xbf, 0x94, 0xbc, 0x1e, 0xfb, 0x98, 0xfb, + 0x6e, 0x5, 0xe, 0xbc, 0x8d, 0x76, 0xf7, 0xf1, 0xf7, 0x39, 0xf7, 0x6d, + 0x77, 0x12, 0xf9, 0x46, 0xec, 0x13, 0xb0, 0xad, 0xf7, 0xb8, 0x15, 0x5e, + 0xba, 0xc7, 0x6e, 0xcd, 0x1b, 0xa3, 0xa3, 0x8f, 0x94, 0xa2, 0x1f, 0x78, + 0x68, 0x83, 0x68, 0x64, 0x1a, 0x5a, 0x9d, 0x59, 0xa5, 0x61, 0x1e, 0xf7, + 0x97, 0xf7, 0x6d, 0x5, 0x13, 0xd0, 0x72, 0xb2, 0x7d, 0xba, 0xb9, 0x1a, + 0xd7, 0xc0, 0xb7, 0xbf, 0xb8, 0x1e, 0xd1, 0xc4, 0x8a, 0x3a, 0xbc, 0x49, + 0xbc, 0x66, 0x19, 0xf7, 0x28, 0x9b, 0xee, 0xbd, 0xec, 0x1e, 0xfb, 0x6, + 0x68, 0xfb, 0xd, 0x95, 0xfb, 0x8, 0xa0, 0xaa, 0x4f, 0xc4, 0x4e, 0xd9, + 0x82, 0x43, 0x51, 0x18, 0x68, 0x62, 0x57, 0x63, 0x53, 0x1b, 0x58, 0x4a, + 0xa8, 0xae, 0x65, 0x1f, 0xe, 0x30, 0xed, 0x76, 0xf8, 0x4d, 0x77, 0xd9, + 0x77, 0x1, 0xce, 0xf8, 0xf1, 0x3, 0xf7, 0x20, 0xde, 0x15, 0xf8, 0xa8, + 0x85, 0x75, 0xa, 0xfb, 0x54, 0xf8, 0x85, 0x80, 0xa, 0xfb, 0x2c, 0xfb, + 0x6e, 0xfb, 0x64, 0xf7, 0x36, 0x56, 0x40, 0xf7, 0x75, 0xfb, 0x1f, 0xfb, + 0x2c, 0xfb, 0x70, 0x5, 0xe, 0x47, 0xc5, 0x76, 0xa3, 0xdc, 0xf8, 0x95, + 0x77, 0x1, 0xf8, 0xe9, 0xe5, 0x3, 0xf8, 0x66, 0xf7, 0x82, 0x15, 0xf6, + 0x2b, 0x69, 0x86, 0x74, 0x5a, 0x8a, 0x66, 0x19, 0x93, 0xa4, 0xa7, 0x8d, + 0xa6, 0x1b, 0xbb, 0xbd, 0x80, 0x7e, 0xb6, 0x1f, 0x76, 0xc8, 0x6c, 0xcf, + 0x8e, 0xe5, 0x63, 0x80, 0x5d, 0x69, 0x87, 0x63, 0x20, 0xeb, 0x18, 0xfb, + 0x57, 0x62, 0x15, 0xf7, 0x3b, 0x99, 0xfb, 0x97, 0xf7, 0x6e, 0xfb, 0x3d, + 0x7e, 0x5, 0xf7, 0x54, 0xb6, 0x15, 0xf7, 0x98, 0xfb, 0x6e, 0x5, 0x8f, + 0x88, 0x77, 0xf7, 0x3e, 0x8b, 0x1a, 0xfb, 0x98, 0xf7, 0x6e, 0x5, 0xe, + 0xbc, 0x8d, 0x76, 0xa2, 0xf7, 0x7, 0xf8, 0xe5, 0x77, 0x1, 0xf9, 0x3f, + 0xf3, 0x3, 0xf7, 0xb9, 0xf7, 0x4c, 0x15, 0xae, 0xb1, 0xcc, 0xa8, 0xbe, + 0x1b, 0xc3, 0xbf, 0x63, 0x68, 0xb4, 0x1f, 0xcc, 0x55, 0x3d, 0x82, 0x57, + 0x48, 0x6e, 0x51, 0x19, 0x96, 0xc6, 0xc9, 0x93, 0xc7, 0x1b, 0xc5, 0xc3, + 0x85, 0x7a, 0xc3, 0x1f, 0x59, 0xec, 0x7b, 0xee, 0xf7, 0x28, 0x1a, 0x5f, + 0x70, 0x4e, 0x43, 0x8c, 0x3a, 0x4c, 0xc0, 0x18, 0x57, 0xb8, 0x56, 0xb7, + 0xd7, 0x1a, 0xb9, 0x99, 0xba, 0xa4, 0xb2, 0x1e, 0xfb, 0x97, 0xf7, 0x6d, + 0x5, 0x71, 0x61, 0x79, 0x59, 0x5a, 0x1a, 0x64, 0x93, 0x68, 0x9e, 0x68, + 0x1e, 0x94, 0x74, 0x73, 0x8f, 0x73, 0x1b, 0x49, 0x4f, 0x6e, 0x5e, 0x5c, + 0x1f, 0xe, 0xa7, 0xa4, 0x76, 0xf8, 0x89, 0x77, 0xf7, 0x6d, 0x77, 0x1, + 0xbb, 0xf9, 0x9b, 0x3, 0xf7, 0x18, 0xf7, 0x7d, 0x15, 0x63, 0xf7, 0x44, + 0xf7, 0xad, 0x69, 0x5, 0x8b, 0x5d, 0xf7, 0x48, 0x8a, 0x8b, 0xf8, 0x1d, + 0xfb, 0x75, 0x8e, 0x1a, 0x88, 0x7, 0x8b, 0xfb, 0xaa, 0xfb, 0x86, 0x8e, + 0x8a, 0x1e, 0x88, 0x5f, 0xf7, 0x51, 0x8b, 0x1e, 0xfb, 0xc2, 0x32, 0x15, + 0xf7, 0xa4, 0xb2, 0xc0, 0xfb, 0x6e, 0xf7, 0xf4, 0xf7, 0xcb, 0xba, 0xec, + 0xfc, 0x7a, 0xf7, 0xb6, 0x4d, 0xfb, 0x0, 0xaf, 0xfb, 0x16, 0xfb, 0x5d, + 0xb4, 0x4d, 0x2b, 0x5, 0xe, 0xf7, 0xe, 0xee, 0xb3, 0xf0, 0xf7, 0x50, + 0x44, 0x77, 0xf7, 0x55, 0xb3, 0x12, 0xf9, 0x96, 0xf7, 0xa, 0x8b, 0xbb, + 0x13, 0xdc, 0xf9, 0x39, 0xf7, 0xed, 0x15, 0xb7, 0x9e, 0xbc, 0xa0, 0xc1, + 0x93, 0xbd, 0x9f, 0x19, 0xac, 0x98, 0xa8, 0xa4, 0xb2, 0x1a, 0xbc, 0x5d, + 0xaa, 0x5d, 0x51, 0x68, 0x5e, 0x59, 0x78, 0x1e, 0x7a, 0x5d, 0x80, 0x7b, + 0x5f, 0x73, 0x8, 0xfd, 0x1e, 0xf7, 0x1d, 0x15, 0xf8, 0xf0, 0xfb, 0x85, + 0xc1, 0x75, 0xb1, 0x7a, 0xa3, 0x52, 0x19, 0x58, 0xa1, 0xb1, 0x64, 0xc5, + 0x1b, 0xb9, 0xb7, 0xaa, 0xbc, 0xb2, 0x6c, 0xa6, 0x69, 0x97, 0x1f, 0x57, + 0x9e, 0x54, 0x92, 0x59, 0xa1, 0x55, 0xa3, 0x18, 0x75, 0xc1, 0xfd, 0x8, + 0xf7, 0x31, 0x5, 0x93, 0xfc, 0x34, 0x15, 0xf8, 0xb7, 0xf7, 0x31, 0x5, + 0x8c, 0x7, 0xfb, 0x6, 0xb8, 0xfc, 0x47, 0xfb, 0x54, 0x5, 0xf9, 0x84, + 0xf7, 0xe8, 0x15, 0xab, 0xae, 0xa2, 0xa9, 0xa5, 0xa6, 0x7a, 0x6e, 0x6a, + 0x6a, 0x74, 0x6c, 0x70, 0x70, 0x9d, 0xa8, 0x1e, 0x8d, 0xfb, 0xaf, 0x15, + 0xa9, 0xa4, 0x9d, 0xa7, 0xa9, 0xaf, 0x78, 0x6a, 0x6e, 0x76, 0x77, 0x6e, + 0x6e, 0x63, 0x9f, 0xac, 0x1e, 0xfb, 0x50, 0xf7, 0x28, 0x15, 0x13, 0xbc, + 0x94, 0x93, 0x93, 0x94, 0x94, 0x93, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, + 0x82, 0x83, 0x93, 0x94, 0x1e, 0xe, 0x92, 0x3a, 0xa, 0xaf, 0xf9, 0x9b, + 0x3, 0xc2, 0xf3, 0x15, 0x87, 0x69, 0xa9, 0x74, 0xa2, 0x78, 0x8, 0x81, + 0x98, 0xb4, 0x6b, 0xb0, 0x1b, 0xa5, 0xea, 0xe3, 0xa2, 0xa4, 0x1f, 0xf8, + 0x4f, 0xf8, 0x5d, 0x5, 0xa1, 0xa1, 0x90, 0x8b, 0xa8, 0x1a, 0xcc, 0x7, + 0xa8, 0x8b, 0x91, 0x6b, 0x79, 0x83, 0x87, 0x81, 0x7e, 0x1e, 0xfb, 0x71, + 0xfb, 0x5f, 0x5, 0xfb, 0x71, 0xfb, 0x76, 0x83, 0x83, 0x83, 0x1b, 0x6b, + 0x87, 0xac, 0xa3, 0x87, 0x1f, 0x82, 0xc1, 0x5, 0x88, 0x9f, 0x84, 0xad, + 0x9f, 0x1a, 0xbe, 0x4d, 0x85, 0x69, 0x7f, 0x1e, 0x76, 0x84, 0x78, 0x72, + 0x7e, 0x7b, 0x8, 0x6a, 0x64, 0x8b, 0x92, 0x57, 0x1a, 0x5f, 0x8b, 0x6a, + 0x90, 0x60, 0x1e, 0xe, 0xfb, 0x23, 0xcc, 0x76, 0xf4, 0xa8, 0xf7, 0xb8, + 0xe4, 0xe4, 0x54, 0xa, 0xa7, 0xf7, 0x78, 0xa5, 0x3, 0xae, 0xf7, 0x29, + 0x15, 0xf7, 0x94, 0x22, 0x6, 0xf8, 0x6, 0xf7, 0xd9, 0xfb, 0xb9, 0xf7, + 0xab, 0x3e, 0x4c, 0x5, 0x71, 0xfb, 0x3e, 0x7, 0x35, 0x43, 0x5, 0xa7, + 0xfb, 0xc9, 0x15, 0xf7, 0xb8, 0xf7, 0x92, 0xee, 0x7, 0xf7, 0x96, 0xfb, + 0x88, 0xfb, 0x96, 0xfb, 0x72, 0x5, 0xd6, 0x7, 0xe, 0xae, 0xe9, 0x76, + 0xe6, 0xa5, 0xf7, 0x99, 0xcf, 0xeb, 0x77, 0x1, 0xf8, 0xb8, 0xa3, 0x3, + 0xb0, 0xf7, 0x38, 0x15, 0xf8, 0x93, 0x30, 0x6, 0xf7, 0xb8, 0xf7, 0xba, + 0xfb, 0x7c, 0xf7, 0x8c, 0x4f, 0x56, 0x5, 0x60, 0xfc, 0x50, 0x7, 0x46, + 0x47, 0xd0, 0xfb, 0x16, 0x5, 0x70, 0xfb, 0x17, 0x15, 0xc1, 0xf7, 0x17, + 0x47, 0xf7, 0x16, 0x5, 0xf8, 0x91, 0xc0, 0x6, 0xf7, 0x4e, 0xfb, 0x4b, + 0xfb, 0x4e, 0xfb, 0x53, 0x5, 0xc7, 0x7, 0xe, 0xf7, 0x1b, 0xec, 0xb3, + 0xf7, 0x6b, 0xa6, 0xeb, 0xae, 0xb1, 0x77, 0x12, 0xf9, 0x32, 0xb1, 0x65, + 0xf7, 0x15, 0x9f, 0xb5, 0xbf, 0xbb, 0x13, 0xf7, 0xf9, 0x36, 0xf8, 0xe, + 0x15, 0xb2, 0x88, 0x5, 0x87, 0xc2, 0xc4, 0x78, 0xc0, 0x1b, 0xb6, 0xb3, + 0xa3, 0xba, 0xbc, 0x59, 0xb1, 0x5d, 0x67, 0x6a, 0x77, 0x73, 0x72, 0x1f, + 0x68, 0x6a, 0x7a, 0x83, 0x5b, 0x89, 0x8, 0xfc, 0x61, 0xf4, 0x15, 0xf7, + 0x31, 0x6, 0xf7, 0x76, 0xfb, 0x50, 0xb6, 0x67, 0xa7, 0x71, 0x91, 0x50, + 0x19, 0x4d, 0x91, 0xaf, 0x4f, 0xd1, 0x1b, 0xb4, 0xb1, 0xa7, 0xb6, 0xa8, + 0x79, 0xa3, 0x75, 0x9c, 0x1f, 0x61, 0xab, 0x5a, 0xa1, 0x64, 0xaf, 0x61, + 0xb2, 0x18, 0x87, 0xc2, 0xfb, 0x3d, 0xf5, 0x5, 0xf7, 0x38, 0x9f, 0xfc, + 0x42, 0x6, 0xfb, 0x63, 0x2c, 0x15, 0xf8, 0xb0, 0x2c, 0x5, 0x8c, 0x7, + 0x23, 0xe2, 0xfc, 0x45, 0x9d, 0x5, 0xf9, 0xad, 0x6b, 0x15, 0xa9, 0xa6, + 0x98, 0xa5, 0xa9, 0xaa, 0x7a, 0x6a, 0x6e, 0x73, 0x7a, 0x70, 0x6d, 0x6a, + 0x9f, 0xac, 0x1e, 0xfb, 0x6e, 0x67, 0x15, 0x94, 0x92, 0x91, 0x94, 0x93, + 0x94, 0x84, 0x83, 0x82, 0x82, 0x84, 0x82, 0x82, 0x85, 0x93, 0x93, 0x1e, + 0x13, 0xfb, 0xf7, 0x13, 0xfb, 0x5c, 0x15, 0xa4, 0xa2, 0x9e, 0xa3, 0xa8, + 0xae, 0x71, 0x6c, 0x72, 0x77, 0x76, 0x72, 0x6e, 0x66, 0xa7, 0xaa, 0x1e, + 0xe, 0x3e, 0x8b, 0xa9, 0xf8, 0xab, 0xa7, 0x6f, 0xf7, 0x13, 0x12, 0xae, + 0xa8, 0xf8, 0xa9, 0xa7, 0x6f, 0xf7, 0x16, 0x13, 0xd8, 0xae, 0x16, 0xf8, + 0xe2, 0xf5, 0x6, 0x13, 0xb4, 0xf1, 0xf8, 0xde, 0xfc, 0xdb, 0x6, 0x13, + 0xd8, 0x28, 0xfb, 0x1, 0x7, 0xa8, 0xfc, 0xc7, 0x15, 0xf8, 0xab, 0xf8, + 0xa9, 0xfc, 0xab, 0x7, 0xe, 0x3b, 0x8b, 0xab, 0xf8, 0xad, 0xf7, 0xf, + 0x1, 0xae, 0xaa, 0xf8, 0xa8, 0xf7, 0x13, 0x7a, 0xa, 0xf8, 0xcd, 0x6, + 0xf7, 0xd, 0xf7, 0xb, 0x5, 0xf8, 0xd1, 0xfc, 0xc6, 0x7, 0xfb, 0x14, + 0xfb, 0x7, 0x5, 0xaa, 0xfc, 0xb5, 0x6d, 0xa, 0x66, 0xa, 0xaf, 0xf7, + 0xe9, 0x15, 0xe6, 0x54, 0xf7, 0x3f, 0xfb, 0x1f, 0xf7, 0x34, 0xfb, 0x5b, + 0x9a, 0x96, 0x18, 0x5f, 0xf7, 0xb, 0x33, 0xf7, 0x3d, 0x47, 0xe9, 0xca, + 0xdf, 0xe8, 0xf7, 0x65, 0xad, 0xde, 0x80, 0x98, 0x18, 0xfb, 0x38, 0xfb, + 0x56, 0xfb, 0x42, 0xfb, 0x27, 0x3d, 0x5b, 0x8, 0xe, 0xfc, 0x41, 0x38, + 0xa, 0xf7, 0x1b, 0x8b, 0x3, 0xf7, 0x1b, 0x16, 0xf7, 0x84, 0x6, 0x27, + 0xf7, 0xee, 0xef, 0xf7, 0xee, 0x5, 0xfb, 0x84, 0x6, 0x27, 0xfb, 0xee, + 0x5, 0xe, 0x3e, 0x8f, 0xf9, 0x3f, 0x1, 0xab, 0xf9, 0x4e, 0x3, 0xb1, + 0x93, 0x15, 0xa4, 0x90, 0xd6, 0xa0, 0x9d, 0x95, 0xa3, 0x97, 0xd4, 0xd0, + 0xed, 0xf5, 0x91, 0x91, 0x9d, 0x89, 0x90, 0x85, 0xce, 0x41, 0xda, 0x40, + 0xa3, 0x73, 0x8, 0x64, 0xb3, 0xab, 0x7e, 0xa3, 0x1b, 0x94, 0xcb, 0x95, + 0x91, 0x93, 0x1f, 0x8e, 0x97, 0x69, 0xa5, 0xfb, 0x42, 0xf7, 0x45, 0x40, + 0xe7, 0x19, 0xf7, 0x3c, 0xf7, 0x4c, 0xd8, 0xf7, 0x3, 0x9f, 0xb1, 0x84, + 0x99, 0x18, 0x5b, 0x85, 0x38, 0x7d, 0x87, 0x83, 0x63, 0x4e, 0x3f, 0x26, + 0x3c, 0x39, 0x59, 0xb3, 0xfb, 0x2f, 0xf7, 0x50, 0x6f, 0xc4, 0x8, 0x80, + 0x6, 0x7f, 0x82, 0x68, 0x5e, 0x81, 0x78, 0x84, 0x78, 0x8b, 0x83, 0xa0, + 0x65, 0x9d, 0x6c, 0xd9, 0x34, 0xee, 0xfb, 0x2, 0x90, 0x84, 0x8b, 0x80, + 0x86, 0x84, 0x67, 0x5e, 0xfb, 0x4d, 0xfb, 0x5c, 0x6d, 0x70, 0x8, 0xe, + 0x3d, 0xa5, 0x76, 0xf9, 0x21, 0x99, 0xa5, 0x77, 0x1, 0xa8, 0xf9, 0x53, + 0x3, 0xae, 0x94, 0x15, 0xa7, 0x8e, 0xea, 0x9a, 0xaf, 0xa2, 0x9f, 0x97, + 0xb2, 0xa6, 0xe0, 0xf6, 0x90, 0x92, 0x9c, 0x89, 0x94, 0x82, 0xba, 0x58, + 0xc1, 0x4e, 0xa4, 0x74, 0x8, 0x64, 0xb6, 0xa9, 0x7e, 0xa3, 0x1b, 0x97, + 0xf7, 0x8, 0x94, 0x90, 0x95, 0x1f, 0x8d, 0x9a, 0x66, 0xad, 0xfb, 0x32, + 0xf7, 0x4f, 0x49, 0xe5, 0x19, 0xe0, 0xe2, 0xf7, 0x31, 0xf7, 0x4d, 0x9b, + 0xb4, 0x82, 0x99, 0x18, 0x63, 0x88, 0xfb, 0x13, 0x7a, 0x87, 0x84, 0x6c, + 0x5a, 0x42, 0x2a, 0x55, 0x55, 0x46, 0xd0, 0x2e, 0xf7, 0x14, 0x6e, 0xc3, + 0x8, 0x7d, 0x6, 0x73, 0x80, 0x3b, 0x38, 0x83, 0x79, 0x84, 0x79, 0x8d, + 0x7a, 0xa0, 0x66, 0x9d, 0x6b, 0xc3, 0x47, 0xe6, 0x24, 0x90, 0x85, 0x89, + 0x7c, 0x86, 0x86, 0x67, 0x5d, 0xfb, 0x32, 0xfb, 0x50, 0x6d, 0x70, 0x8, + 0xe, 0xfb, 0xa0, 0x5c, 0x76, 0xf9, 0x6d, 0x77, 0x1, 0xf7, 0x50, 0xf7, + 0x98, 0x3, 0xf7, 0xb4, 0xf7, 0x96, 0x15, 0xfb, 0x34, 0xee, 0x9f, 0x67, + 0x98, 0x1b, 0x97, 0x9e, 0x98, 0x97, 0x8d, 0x1f, 0x89, 0x8f, 0x88, 0x91, + 0x8f, 0x1a, 0x91, 0x9b, 0x91, 0x8f, 0x8f, 0x1e, 0x93, 0x7, 0x92, 0x8e, + 0x8f, 0x8f, 0x8e, 0x92, 0xfb, 0x1, 0xf7, 0x79, 0x18, 0xe3, 0xf7, 0x13, + 0xe3, 0xf3, 0x96, 0x95, 0x8, 0x8f, 0x8f, 0x92, 0x91, 0x91, 0x1a, 0x92, + 0x7b, 0x96, 0x87, 0x95, 0x1e, 0x8d, 0x8a, 0x89, 0x91, 0x88, 0x1b, 0x88, + 0x85, 0x84, 0x88, 0x89, 0x1f, 0x80, 0x81, 0x5, 0x90, 0x85, 0x67, 0x86, + 0x85, 0x1b, 0xfb, 0x31, 0xfb, 0x41, 0x3f, 0xf7, 0x2a, 0x5, 0x93, 0x87, + 0x88, 0x95, 0x80, 0x1b, 0x80, 0x83, 0x7b, 0x81, 0x82, 0x89, 0x8, 0x8f, + 0x86, 0x87, 0x90, 0x84, 0x1b, 0x79, 0x7d, 0x82, 0x82, 0x84, 0x1a, 0x82, + 0x93, 0x7a, 0x8e, 0x83, 0x1e, 0xd7, 0xfb, 0x54, 0x49, 0x3c, 0x3d, 0x25, + 0x62, 0x43, 0x19, 0x6c, 0x56, 0x7a, 0x73, 0x7e, 0x1a, 0x88, 0x8e, 0x89, + 0x8d, 0x89, 0x1e, 0x92, 0x85, 0x87, 0x85, 0x89, 0x83, 0x8, 0x89, 0x85, + 0x8a, 0x87, 0x85, 0x1a, 0x80, 0x94, 0x80, 0x91, 0x82, 0x1e, 0x81, 0x91, + 0x8d, 0x81, 0x98, 0x1b, 0x99, 0xa5, 0x8e, 0x94, 0x97, 0x1f, 0xe, 0xfb, + 0x36, 0x93, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xf7, 0x5f, 0xf7, 0x64, 0x3, + 0xf3, 0x93, 0x15, 0x9e, 0x76, 0x5, 0x98, 0x6, 0x92, 0x94, 0xf7, 0x26, + 0xf7, 0x58, 0xb1, 0x5a, 0xa9, 0x53, 0xb7, 0x5e, 0x19, 0x8e, 0x8e, 0x89, + 0x8d, 0x9b, 0xa0, 0xad, 0x90, 0x1b, 0x8e, 0x93, 0x83, 0x8a, 0x8d, 0x1f, + 0x88, 0x8f, 0x91, 0x85, 0x90, 0x1b, 0x90, 0x93, 0x94, 0x8e, 0x8e, 0x1f, + 0x92, 0x91, 0x94, 0x8e, 0x87, 0x95, 0x8, 0x91, 0x89, 0x96, 0x99, 0x8d, + 0x1b, 0x93, 0x6, 0x94, 0x97, 0xa4, 0x91, 0x8e, 0x1f, 0x92, 0x97, 0x8b, + 0x8a, 0x8d, 0x98, 0xfb, 0x28, 0xf7, 0x4b, 0x18, 0xf7, 0x4b, 0xf7, 0x70, + 0xbb, 0x89, 0xb5, 0x1a, 0x7c, 0xae, 0x86, 0x92, 0x8b, 0x8c, 0x84, 0x89, + 0x19, 0x7f, 0x88, 0x87, 0xab, 0x90, 0x1a, 0x8e, 0x8d, 0x8d, 0x8d, 0x8d, + 0x1e, 0x96, 0x92, 0x59, 0x92, 0x89, 0x1b, 0x7f, 0xfb, 0x5b, 0xfb, 0x65, + 0x70, 0x74, 0x1f, 0xfb, 0xa, 0xf7, 0x45, 0x5, 0x92, 0x87, 0x83, 0x96, + 0x82, 0x1b, 0x7e, 0x7d, 0x80, 0x7e, 0x8c, 0x1f, 0x82, 0x88, 0x81, 0x80, + 0x88, 0x7d, 0x9d, 0x8c, 0x86, 0x1e, 0x7d, 0x7e, 0x7e, 0x7d, 0x82, 0x7a, + 0xa6, 0x2f, 0xb7, 0x35, 0xb8, 0x37, 0xfb, 0x3b, 0xfb, 0x5b, 0x18, 0x7e, + 0x9b, 0x7b, 0x81, 0x7e, 0x7f, 0x85, 0x84, 0x1a, 0x87, 0x93, 0x82, 0x8d, + 0x88, 0x1e, 0x92, 0x7f, 0x93, 0x7a, 0x98, 0x85, 0x8, 0x8e, 0x93, 0x92, + 0x90, 0x94, 0x1b, 0x8d, 0x8e, 0x89, 0x88, 0x1f, 0x87, 0x88, 0x85, 0x87, + 0x1a, 0xe, 0x3f, 0x86, 0xb0, 0xf7, 0x7a, 0xaf, 0xdc, 0xb0, 0xf7, 0x77, + 0xb0, 0x1, 0xbc, 0xb0, 0xf7, 0x6c, 0xae, 0xe3, 0xb0, 0xf7, 0x6b, 0xb0, + 0x3, 0xbc, 0xf7, 0x9a, 0x15, 0xf7, 0x91, 0xfb, 0x9f, 0xf7, 0x34, 0xf7, + 0x9f, 0xf7, 0x90, 0xf7, 0x2e, 0xfb, 0x91, 0x6, 0x8c, 0xf7, 0x9c, 0x5, + 0xfb, 0x35, 0xfb, 0x9c, 0xfb, 0x90, 0x6, 0xb0, 0xfb, 0xa, 0x15, 0xdc, + 0xf7, 0x90, 0xf7, 0x9c, 0xe2, 0xfb, 0x9c, 0xf7, 0x90, 0x3a, 0xfb, 0x90, + 0xfb, 0x9e, 0x33, 0xf7, 0x9e, 0x7, 0xe, 0x3c, 0xa0, 0x76, 0xf7, 0x7c, + 0xf7, 0x7a, 0xf7, 0x7a, 0x77, 0x1, 0xf7, 0x9b, 0xf7, 0x7c, 0x3, 0xae, + 0xf7, 0x7c, 0x15, 0xf7, 0x78, 0xfb, 0x7c, 0xf7, 0x7c, 0xf7, 0x7c, 0xf7, + 0x7b, 0xf7, 0x7a, 0xfb, 0x7b, 0xf7, 0x7a, 0xfb, 0x7c, 0xfb, 0x7a, 0xfb, + 0x78, 0x6, 0xe, 0x3b, 0xa0, 0x76, 0xf7, 0xb2, 0xf7, 0xc, 0xf7, 0xb2, + 0x77, 0x1, 0xf7, 0xd5, 0xf7, 0x9, 0x3, 0xae, 0xf7, 0xa8, 0x15, 0xf7, + 0xa8, 0xfb, 0xa8, 0xf7, 0x1d, 0xf7, 0xa8, 0xf7, 0xa9, 0xf7, 0x20, 0xfb, + 0xa9, 0xf7, 0xa8, 0xfb, 0x1d, 0xfb, 0xa8, 0xfb, 0xa8, 0x6, 0xf7, 0xa8, + 0xfb, 0x20, 0x15, 0xf7, 0x20, 0xf7, 0x1d, 0xfb, 0x20, 0x7, 0xe, 0x36, + 0xa0, 0x76, 0xf7, 0x7f, 0xf7, 0x6d, 0xf7, 0x84, 0x77, 0x1, 0xf7, 0x9e, + 0xf7, 0x70, 0x3, 0xae, 0xf7, 0x7f, 0x15, 0xf7, 0x7b, 0xfb, 0x7f, 0xf7, + 0x71, 0xf7, 0x7f, 0xf7, 0x7d, 0xf7, 0x6d, 0xfb, 0x7d, 0xf7, 0x84, 0xfb, + 0x71, 0xfb, 0x84, 0xfb, 0x7b, 0x6, 0xf7, 0x7b, 0xfb, 0x6d, 0x15, 0xf7, + 0x6d, 0xf7, 0x70, 0xfb, 0x6d, 0x7, 0xe, 0x56, 0x7b, 0x76, 0xf7, 0xb9, + 0xac, 0x6a, 0xad, 0xaf, 0xa9, 0xaf, 0xae, 0xf7, 0xb6, 0x77, 0x12, 0xf7, + 0xcb, 0xad, 0xa2, 0xa9, 0xb8, 0xaf, 0x69, 0xad, 0x13, 0xdf, 0x80, 0xf8, + 0xe, 0xf7, 0xc3, 0x15, 0x86, 0x53, 0x7b, 0x63, 0x7b, 0x69, 0x8, 0x7a, + 0x65, 0x7a, 0x6c, 0x64, 0x1a, 0x6c, 0x98, 0x78, 0xa5, 0x79, 0x1e, 0x98, + 0x83, 0x9d, 0x81, 0x91, 0x85, 0x8, 0x89, 0x8d, 0x8f, 0x83, 0x8f, 0x1b, + 0x8f, 0x8f, 0x93, 0x8d, 0x8d, 0x1f, 0x91, 0x91, 0x9d, 0x95, 0x98, 0x93, + 0x8, 0xa5, 0x9d, 0x98, 0x9e, 0xaa, 0x1a, 0xb7, 0x79, 0xab, 0x79, 0xb2, + 0x1e, 0x7c, 0xac, 0x7c, 0xb1, 0x86, 0xbf, 0x95, 0x90, 0x93, 0x93, 0x90, + 0x96, 0xbe, 0x86, 0xb1, 0x7d, 0xab, 0x7c, 0x8, 0x78, 0xb5, 0xab, 0x77, + 0xb5, 0x1b, 0xaa, 0x9e, 0x98, 0xa5, 0x9d, 0x1f, 0x93, 0x98, 0x95, 0x9d, + 0x91, 0x91, 0x8, 0x8d, 0x8d, 0x93, 0x8f, 0x8f, 0x1a, 0x8f, 0x83, 0x8f, + 0x89, 0x8d, 0x1e, 0x85, 0x91, 0x81, 0x9d, 0x83, 0x98, 0x8, 0xa5, 0x79, + 0x75, 0x99, 0x6c, 0x1b, 0x5a, 0x6a, 0x74, 0x77, 0x5d, 0x1f, 0x6e, 0x7e, + 0x69, 0x80, 0x5e, 0x87, 0x87, 0x94, 0x83, 0x93, 0x82, 0x8e, 0x8f, 0xbd, + 0x98, 0xb0, 0x99, 0xaa, 0x8, 0x9e, 0xb7, 0xa0, 0xac, 0xb7, 0x1a, 0xaa, + 0x7e, 0x9e, 0x71, 0x9d, 0x1e, 0x7e, 0x93, 0x79, 0x95, 0x85, 0x91, 0x8, + 0x8d, 0x89, 0x87, 0x93, 0x87, 0x1b, 0x87, 0x87, 0x83, 0x89, 0x89, 0x1f, + 0x85, 0x85, 0x79, 0x81, 0x7e, 0x83, 0x8, 0x71, 0x79, 0x7e, 0x78, 0x6c, + 0x1a, 0x5e, 0x9e, 0x6a, 0x9e, 0x62, 0x1e, 0x99, 0x6b, 0x9a, 0x66, 0x8f, + 0x58, 0x81, 0x87, 0x84, 0x84, 0x87, 0x82, 0x53, 0x90, 0x64, 0x9b, 0x69, + 0x9a, 0x8, 0x9d, 0x64, 0x6c, 0x9c, 0x63, 0x1b, 0x6c, 0x78, 0x7d, 0x71, + 0x79, 0x1f, 0x83, 0x7e, 0x81, 0x79, 0x85, 0x85, 0x8, 0x89, 0x89, 0x83, + 0x87, 0x87, 0x1a, 0x87, 0x93, 0x87, 0x8d, 0x89, 0x1e, 0x91, 0x85, 0x95, + 0x79, 0x93, 0x7e, 0x8, 0x71, 0x9d, 0x9f, 0x80, 0xa9, 0x1b, 0xb5, 0xab, + 0x9b, 0x9c, 0xb0, 0x1f, 0xad, 0x9a, 0xb1, 0x9c, 0xc2, 0x90, 0x8f, 0x81, + 0x93, 0x83, 0x95, 0x86, 0x8, 0x96, 0xf7, 0x7f, 0x15, 0x89, 0xa0, 0x7f, + 0x96, 0x80, 0x94, 0x8, 0x7f, 0x95, 0x80, 0x93, 0x9b, 0x1a, 0x9c, 0x94, + 0x96, 0x9b, 0x96, 0x1e, 0x92, 0x8f, 0x96, 0x92, 0x8f, 0x8f, 0x8, 0x8b, + 0x8f, 0x93, 0x8c, 0x1e, 0x8d, 0x89, 0x8f, 0x87, 0x8c, 0x8a, 0x8e, 0x87, + 0x96, 0x84, 0x91, 0x86, 0x8, 0x9b, 0x80, 0x92, 0x82, 0x7a, 0x1a, 0x77, + 0x7b, 0x83, 0x7d, 0x7d, 0x1e, 0x82, 0x82, 0x83, 0x81, 0x89, 0x7a, 0x8, + 0xf7, 0x59, 0xfb, 0x59, 0x15, 0x8a, 0x8f, 0x9e, 0x8e, 0x96, 0x94, 0x94, + 0x95, 0x19, 0x98, 0x97, 0x93, 0x98, 0x9c, 0x1b, 0x9c, 0x97, 0x83, 0x7b, + 0x96, 0x1f, 0x8e, 0x84, 0x93, 0x81, 0x8f, 0x87, 0x8c, 0x8a, 0x8f, 0x87, + 0x8d, 0x89, 0x8, 0x8a, 0x85, 0x88, 0x89, 0x8a, 0x1e, 0x87, 0x87, 0x85, + 0x7f, 0x86, 0x85, 0x8, 0x13, 0xbf, 0x40, 0x7b, 0x80, 0x83, 0x84, 0x79, + 0x1b, 0x79, 0x83, 0x99, 0x98, 0x80, 0x1f, 0x82, 0x96, 0x80, 0x95, 0x77, + 0x8d, 0x8, 0xfc, 0x1f, 0x87, 0x15, 0x79, 0x88, 0x81, 0x83, 0x82, 0x82, + 0x8, 0x7e, 0x7f, 0x83, 0x7d, 0x79, 0x1b, 0x78, 0x81, 0x93, 0x9b, 0x80, + 0x1f, 0x87, 0x92, 0x84, 0x96, 0x87, 0x8f, 0x8, 0x8b, 0x85, 0x8e, 0x8c, + 0x8d, 0x1e, 0x8a, 0x8d, 0x91, 0x8e, 0x8b, 0x1a, 0x8f, 0x90, 0x92, 0x95, + 0x8f, 0x92, 0x8, 0x13, 0xdf, 0x40, 0x9b, 0x96, 0x94, 0x92, 0x9c, 0x1b, + 0x9c, 0x93, 0x7e, 0x7f, 0x96, 0x1f, 0x95, 0x80, 0x97, 0x80, 0xa0, 0x88, + 0x8, 0xf7, 0x59, 0xfb, 0x59, 0x15, 0x8f, 0x8d, 0x8e, 0x79, 0x93, 0x80, + 0x94, 0x82, 0x19, 0x98, 0x7e, 0x9a, 0x82, 0x8a, 0x79, 0x8, 0x79, 0x83, + 0x81, 0x7b, 0x80, 0x1e, 0x84, 0x88, 0x80, 0x82, 0x88, 0x88, 0x8, 0x89, + 0x89, 0x88, 0x87, 0x8a, 0x1b, 0x8a, 0x86, 0x91, 0x8b, 0x1f, 0x86, 0x8f, + 0x82, 0x93, 0x83, 0x90, 0x8, 0x7c, 0x95, 0x83, 0x93, 0x9c, 0x1a, 0x9d, + 0x99, 0x93, 0x98, 0x97, 0x1e, 0x96, 0x94, 0x95, 0x97, 0x8e, 0x9e, 0x8, + 0xe, 0xf7, 0x21, 0xee, 0xb3, 0xef, 0xf7, 0x52, 0x42, 0x77, 0xf7, 0x58, + 0xb2, 0x12, 0xf9, 0x9b, 0xf7, 0xa, 0x8b, 0xbc, 0x13, 0xdc, 0xf9, 0x3c, + 0xf7, 0xef, 0x15, 0xb7, 0x9e, 0xbd, 0xa1, 0xc2, 0x90, 0xbd, 0xa0, 0x19, + 0xac, 0x99, 0xa9, 0xa5, 0xb2, 0x1a, 0xbc, 0x5c, 0xa8, 0x5e, 0x51, 0x67, + 0x5f, 0x59, 0x78, 0x1e, 0x79, 0x5d, 0x7f, 0x7a, 0x5f, 0x74, 0x8, 0xfd, + 0x1c, 0xf7, 0x20, 0x15, 0xf8, 0xf1, 0xfb, 0x8b, 0xc1, 0x75, 0xaf, 0x7a, + 0xa4, 0x52, 0x19, 0x58, 0xa1, 0xb0, 0x65, 0xc6, 0x1b, 0xb9, 0xb8, 0xaa, + 0xbc, 0xb1, 0x6a, 0xa6, 0x6a, 0x97, 0x1f, 0x57, 0x9d, 0x54, 0x93, 0x59, + 0xa1, 0x55, 0xa3, 0x18, 0x76, 0xc1, 0xfd, 0x8, 0xf7, 0x36, 0x5, 0x92, + 0xfc, 0x3a, 0x15, 0xf8, 0xb8, 0xf7, 0x33, 0x8a, 0x8c, 0xfb, 0x2, 0xb7, + 0xfc, 0x4b, 0xfb, 0x55, 0x5, 0xf9, 0x84, 0xf7, 0xeb, 0x15, 0xab, 0xae, + 0xa3, 0xa9, 0xa5, 0xa6, 0x7a, 0x6e, 0x69, 0x6c, 0x74, 0x6a, 0x71, 0x6f, + 0x9d, 0xa8, 0x1e, 0x8e, 0xfb, 0xb1, 0x15, 0xa9, 0xa4, 0x9d, 0xa7, 0xa9, + 0xae, 0x78, 0x6a, 0x6e, 0x77, 0x78, 0x6e, 0x6e, 0x63, 0x9d, 0xad, 0x1e, + 0xfc, 0xf2, 0xf7, 0xbc, 0x15, 0xf8, 0x5a, 0xfb, 0x10, 0x9d, 0x5b, 0xc1, + 0x74, 0x7a, 0x7f, 0x7a, 0x95, 0x79, 0x93, 0x79, 0x92, 0x19, 0xfc, 0x5d, + 0xf7, 0x49, 0x5, 0x90, 0xfb, 0xc2, 0x15, 0xf7, 0xb3, 0xf7, 0xe, 0xbd, + 0x75, 0xfb, 0xe4, 0x26, 0x5, 0xf8, 0x31, 0xf7, 0x31, 0x15, 0x82, 0x92, + 0x84, 0x94, 0x94, 0x92, 0x92, 0x94, 0x1e, 0x13, 0xbc, 0x94, 0x84, 0x92, + 0x82, 0x82, 0x84, 0x84, 0x82, 0x1e, 0xe, 0x9e, 0xc2, 0xea, 0xc2, 0x58, + 0xf7, 0xa, 0xec, 0xf7, 0x2, 0x5a, 0xc2, 0x54, 0xc3, 0xe9, 0xc2, 0x12, + 0xd6, 0xc2, 0x56, 0xc0, 0xeb, 0xc2, 0x58, 0xf7, 0x6, 0xea, 0xf7, 0x8, + 0x5a, 0xc3, 0x54, 0xc2, 0xe9, 0xc2, 0x13, 0xd3, 0x52, 0xf7, 0x7e, 0xf7, + 0x64, 0x15, 0x95, 0x7a, 0x78, 0x91, 0x77, 0x1b, 0x52, 0x5d, 0x5d, 0x52, + 0x52, 0xb9, 0x5e, 0xc4, 0xc4, 0xb9, 0xb9, 0xc4, 0x9f, 0x86, 0x9e, 0x80, + 0x9b, 0x1f, 0xd9, 0xd8, 0x94, 0x86, 0x94, 0x87, 0x95, 0x89, 0x19, 0x13, + 0xb2, 0xca, 0x98, 0x45, 0x5, 0x9d, 0x6, 0x98, 0xd1, 0x96, 0x8d, 0x95, + 0x8f, 0x94, 0x91, 0x19, 0xd9, 0x3d, 0x5, 0x80, 0x7a, 0x85, 0x78, 0x77, + 0x1a, 0x53, 0xb8, 0x5d, 0xc4, 0xc4, 0xb9, 0xb9, 0xc4, 0x1e, 0x13, 0xca, + 0xd2, 0xc3, 0x5d, 0xb9, 0x53, 0x78, 0x78, 0x85, 0x81, 0x7b, 0x1e, 0x3d, + 0xd9, 0x91, 0x94, 0x8e, 0x95, 0x8e, 0x95, 0x19, 0xcd, 0x97, 0x5, 0x9d, + 0x7, 0x4b, 0x97, 0x89, 0x96, 0x87, 0x96, 0x85, 0x95, 0x19, 0xd6, 0xd7, + 0x5, 0x81, 0x9c, 0x9e, 0x85, 0x9f, 0x1b, 0xc4, 0xb9, 0xb9, 0xc4, 0xc4, + 0x5d, 0xb8, 0x52, 0x1f, 0x13, 0xd2, 0xc6, 0x53, 0x5c, 0x5e, 0x52, 0x78, + 0x91, 0x78, 0x95, 0x7a, 0x1f, 0x3e, 0x40, 0x81, 0x92, 0x81, 0x90, 0x7f, + 0x8d, 0x19, 0x7f, 0xc9, 0x5, 0x79, 0x6, 0x7f, 0x4c, 0x80, 0x88, 0x81, + 0x87, 0x81, 0x85, 0x19, 0x41, 0xd6, 0x5, 0x95, 0x9b, 0x90, 0x9e, 0x9e, + 0x1a, 0xc4, 0x5d, 0xb9, 0x52, 0x52, 0x5e, 0x5e, 0x52, 0x1e, 0x13, 0xc6, + 0xa6, 0x52, 0xb8, 0x5d, 0xc4, 0x9e, 0x9f, 0x91, 0x95, 0x9b, 0x1e, 0xd6, + 0x3f, 0x85, 0x81, 0x87, 0x80, 0x89, 0x80, 0x19, 0x48, 0x7f, 0x5, 0x79, + 0x7, 0xd0, 0x7e, 0x8e, 0x81, 0x8e, 0x82, 0x91, 0x82, 0x19, 0xf7, 0x8f, + 0xf7, 0x9e, 0x15, 0xa6, 0x9f, 0x9f, 0xa6, 0xa6, 0x9f, 0x77, 0x70, 0x70, + 0x77, 0x77, 0x70, 0x70, 0x77, 0x9f, 0xa6, 0x1e, 0xfb, 0x6e, 0xfb, 0x68, + 0x15, 0x13, 0xb2, 0xb2, 0xa5, 0xa0, 0xa1, 0xa5, 0xa5, 0xa1, 0x75, 0x71, + 0x71, 0x75, 0x74, 0x71, 0x71, 0x76, 0xa3, 0xa4, 0x1e, 0xf7, 0x6d, 0xfb, + 0x6f, 0x15, 0x13, 0xca, 0xd2, 0xa5, 0xa1, 0xa1, 0xa5, 0xa5, 0xa0, 0x75, + 0x71, 0x71, 0x76, 0x76, 0x71, 0x71, 0x75, 0xa0, 0xa5, 0x1e, 0xfc, 0x43, + 0xf8, 0x43, 0x15, 0xa5, 0xa1, 0xa0, 0x69, 0xa, 0xa1, 0xa5, 0x1e, 0xfc, + 0x43, 0x4, 0xa5, 0xa1, 0xa1, 0x69, 0xa, 0xa0, 0xa5, 0x1e, 0xe, 0x9f, + 0xf7, 0x18, 0xfb, 0x4, 0x76, 0xf7, 0x77, 0xc8, 0x6c, 0xf7, 0x15, 0x69, + 0xd0, 0x48, 0xce, 0xea, 0xf7, 0x10, 0xfb, 0x10, 0xf7, 0x11, 0x12, 0xd5, + 0xf7, 0x13, 0xfb, 0x12, 0xf7, 0x12, 0xea, 0xcd, 0x49, 0xce, 0x6a, 0xf7, + 0x14, 0x6b, 0xcb, 0x4d, 0xc9, 0xea, 0xf7, 0x15, 0xfb, 0x15, 0xf7, 0x16, + 0x13, 0xa5, 0xa2, 0x80, 0xf7, 0xc4, 0xf7, 0xaa, 0x15, 0x9e, 0x72, 0x6d, + 0x95, 0x6c, 0x1b, 0x3c, 0x4a, 0x4b, 0x3c, 0x3c, 0xcc, 0x4a, 0xda, 0xda, + 0xcc, 0xc9, 0xdb, 0xaa, 0x80, 0xaa, 0x79, 0xa4, 0x1f, 0x13, 0x51, 0x55, + 0x0, 0x9f, 0x9a, 0xa1, 0x92, 0xa3, 0x1b, 0xa6, 0x9c, 0x83, 0x78, 0x9d, + 0x1f, 0x78, 0x72, 0x80, 0x6c, 0x6c, 0x1a, 0x3c, 0xce, 0x4b, 0xd9, 0xda, + 0xcb, 0xcb, 0xda, 0xda, 0x4a, 0xcc, 0x3c, 0x6d, 0x6d, 0x81, 0x79, 0x73, + 0x1e, 0x13, 0xaa, 0x48, 0x80, 0x76, 0x9e, 0x84, 0x99, 0xa8, 0x1a, 0xa4, + 0x94, 0x9d, 0x9d, 0x9d, 0x1e, 0x78, 0xa4, 0xaa, 0x80, 0xaa, 0x1b, 0xda, + 0xcb, 0xce, 0xd9, 0xda, 0x4b, 0xcb, 0x3c, 0x1f, 0x13, 0x91, 0x52, 0x80, + 0x3c, 0x4a, 0x49, 0x3c, 0x6d, 0x95, 0x6d, 0x9d, 0x73, 0x1f, 0x78, 0x79, + 0x7a, 0x85, 0x71, 0x1b, 0x73, 0x77, 0x91, 0x9e, 0x7a, 0x1f, 0x9d, 0xa4, + 0x96, 0xa9, 0xaa, 0x1a, 0xda, 0x4a, 0xcc, 0x3c, 0x3c, 0x4a, 0x4b, 0x3c, + 0x1e, 0x13, 0xa5, 0x48, 0x80, 0x3c, 0xcd, 0x4a, 0xda, 0xa9, 0xa9, 0x95, + 0x9d, 0xa3, 0x1e, 0x9d, 0x79, 0x93, 0x7b, 0x71, 0x1a, 0x6f, 0x85, 0x7c, + 0x77, 0x77, 0x1e, 0x13, 0xa5, 0x52, 0x80, 0xf7, 0x4e, 0xf7, 0x65, 0x42, + 0xa, 0xfb, 0xb5, 0xf7, 0xb4, 0x42, 0xa, 0xe, 0x5a, 0x8b, 0xf7, 0xc, + 0x6d, 0xf6, 0x22, 0xa7, 0xbf, 0x93, 0x83, 0x95, 0xb2, 0xe8, 0x30, 0xe9, + 0x66, 0xf7, 0xb, 0x39, 0xbd, 0x63, 0xa4, 0x72, 0xf7, 0x17, 0x2f, 0xac, + 0x6c, 0xe5, 0xa3, 0xa7, 0x6f, 0xf6, 0x31, 0x96, 0xc0, 0xa3, 0xe7, 0x77, + 0x12, 0xf7, 0x24, 0xab, 0x6e, 0xf4, 0x71, 0x95, 0xb4, 0xe8, 0x30, 0xf7, + 0x20, 0x38, 0xae, 0x68, 0xf7, 0xb, 0x35, 0xbd, 0x59, 0xf7, 0x26, 0xfb, + 0x18, 0xa4, 0x97, 0xe7, 0xa5, 0xf5, 0x2f, 0x98, 0xbe, 0xa9, 0x7e, 0xa, + 0xf8, 0x4d, 0xf8, 0x14, 0x79, 0xa, 0x93, 0x9c, 0x86, 0x90, 0x86, 0x92, + 0x78, 0x81, 0x7c, 0x7b, 0x7b, 0x7a, 0x83, 0x7a, 0x90, 0x86, 0x8, 0x9e, + 0xfb, 0x14, 0x78, 0xa, 0x83, 0x9c, 0x7b, 0x9c, 0x7c, 0x9b, 0x78, 0x94, + 0x86, 0x86, 0x86, 0x85, 0x93, 0x7a, 0x9b, 0x7b, 0x8, 0xfb, 0x28, 0xf7, + 0x28, 0x78, 0xa, 0x82, 0x9c, 0x7b, 0x9c, 0x7c, 0x9b, 0x78, 0x95, 0x86, + 0x84, 0x86, 0x86, 0x94, 0x7a, 0x9b, 0x7b, 0x8, 0xd2, 0xfb, 0x74, 0x15, + 0x13, 0x44, 0x54, 0xea, 0xb, 0x94, 0x7f, 0x78, 0x93, 0x7d, 0x1b, 0x6a, + 0x71, 0x74, 0x6c, 0x70, 0x9f, 0x71, 0xab, 0x1f, 0x13, 0x34, 0x54, 0xe8, + 0x83, 0x90, 0x91, 0x8c, 0x8c, 0x90, 0x1f, 0x8c, 0x8d, 0x8b, 0x8c, 0x1b, + 0x87, 0x85, 0x80, 0x80, 0x77, 0x1a, 0x13, 0x94, 0x54, 0xe8, 0x83, 0x6d, + 0xa6, 0x72, 0xab, 0xac, 0xa6, 0xa4, 0xa9, 0xa0, 0x83, 0x92, 0x87, 0x93, + 0x1e, 0x93, 0x89, 0x5, 0x89, 0x93, 0x92, 0x8b, 0x92, 0x1b, 0x13, 0x44, + 0x54, 0xe8, 0x23, 0xa7, 0x99, 0xa7, 0xa8, 0x1f, 0x13, 0x44, 0x54, 0xe8, + 0x83, 0xaa, 0x70, 0xa1, 0x6a, 0x1e, 0x13, 0x8a, 0x24, 0xec, 0x1c, 0x7d, + 0x74, 0x85, 0x82, 0x81, 0x1f, 0x8c, 0xb5, 0x89, 0xc7, 0xa1, 0xa1, 0xa4, + 0xa4, 0xc4, 0x8b, 0xb7, 0x87, 0x8, 0x81, 0x81, 0x84, 0x76, 0x7d, 0x1a, + 0x6a, 0xa3, 0x71, 0xaa, 0xa4, 0xa5, 0xa0, 0xa8, 0x91, 0x8a, 0x91, 0x8a, + 0x91, 0x1e, 0x8c, 0x8b, 0x8e, 0x8c, 0x1a, 0x13, 0x91, 0x4, 0xec, 0x1b, + 0x87, 0x93, 0x95, 0x7f, 0x9d, 0x1b, 0xaa, 0xa4, 0xa7, 0xab, 0xac, 0x72, + 0xa5, 0x6c, 0x77, 0x86, 0x83, 0x87, 0x83, 0x1f, 0x8c, 0x94, 0x5, 0x8c, + 0x90, 0x8b, 0x90, 0x90, 0x1a, 0x13, 0x94, 0x24, 0xec, 0x1c, 0xac, 0x73, + 0x99, 0x6a, 0x6d, 0x75, 0x72, 0x6a, 0x1e, 0x13, 0x94, 0x51, 0xec, 0x1b, + 0x7b, 0x90, 0x77, 0x94, 0x7f, 0x1e, 0x54, 0x8a, 0x5e, 0x8b, 0x74, 0xa2, + 0x71, 0xa5, 0x91, 0xc8, 0x8a, 0xb1, 0x8, 0x13, 0x94, 0x52, 0x6c, 0x1b, + 0x82, 0x95, 0xa0, 0x83, 0x98, 0x1b, 0xac, 0xa6, 0xa2, 0xaa, 0xa6, 0x76, + 0xa5, 0x6c, 0x1f, 0x13, 0x94, 0x54, 0xe9, 0x1b, 0x86, 0x86, 0x8a, 0x8a, + 0x85, 0x1f, 0x88, 0x8a, 0x8b, 0x8a, 0x1b, 0x8f, 0x92, 0x96, 0x96, 0x9e, + 0x1a, 0xa9, 0x71, 0xa4, 0x6a, 0x6b, 0x70, 0x72, 0x6d, 0x76, 0x92, 0x84, + 0x8f, 0x83, 0x1e, 0x83, 0x8d, 0x5, 0x8d, 0x84, 0x85, 0x8b, 0x86, 0x1b, + 0x7e, 0xa, 0x6d, 0x7d, 0x70, 0x6d, 0x6c, 0xa4, 0x75, 0xac, 0x9b, 0x9f, + 0x91, 0x94, 0x97, 0x1f, 0x8a, 0x69, 0x92, 0x4e, 0x6f, 0x6f, 0x7a, 0x7a, + 0x45, 0x85, 0x65, 0x8c, 0x8, 0x13, 0x91, 0x4, 0xd4, 0x1b, 0x94, 0x97, + 0x92, 0x9e, 0x99, 0x1a, 0xac, 0x74, 0xa5, 0x6d, 0x72, 0x70, 0x79, 0x6f, + 0x84, 0x8a, 0x84, 0x8d, 0x83, 0x1e, 0x8a, 0x8b, 0x8a, 0x88, 0x1a, 0x8f, + 0x83, 0x83, 0x97, 0x77, 0x1b, 0x6c, 0x72, 0x70, 0x6a, 0x6a, 0xa4, 0x71, + 0xaa, 0xa0, 0x91, 0x93, 0x8f, 0x91, 0x1f, 0x7e, 0xa, 0x8a, 0x82, 0x5, + 0x8a, 0x86, 0x8b, 0x87, 0x87, 0x1a, 0x69, 0xa2, 0x7c, 0xad, 0x1e, 0x13, + 0x92, 0x54, 0xd4, 0x1b, 0xaa, 0xa0, 0xa4, 0xac, 0x9b, 0x86, 0x9f, 0x82, + 0x97, 0x1f, 0xb3, 0x8e, 0xc4, 0x8d, 0xa5, 0x71, 0x8, 0xa4, 0x72, 0x88, + 0x49, 0x68, 0x1a, 0x30, 0xc3, 0x79, 0xa, 0x94, 0x9c, 0x86, 0x91, 0x86, + 0x90, 0x78, 0x82, 0x7c, 0x7b, 0x7b, 0x7a, 0x82, 0x7a, 0x90, 0x86, 0x8, + 0xf7, 0xa5, 0xf5, 0x50, 0xa, 0x1e, 0x13, 0x94, 0x8c, 0xe8, 0x4b, 0x51, + 0xa, 0xfb, 0x58, 0xf7, 0x56, 0x44, 0xa, 0xfb, 0x56, 0xfb, 0x58, 0x44, + 0xa, 0xf7, 0x59, 0xfb, 0x56, 0x44, 0xa, 0xe, 0x5d, 0x9b, 0x76, 0xf7, + 0xd1, 0xc3, 0xf7, 0xd1, 0x77, 0x1, 0xf8, 0x6, 0xbf, 0x3, 0xf7, 0x94, + 0xf7, 0x57, 0x15, 0xf7, 0x20, 0xfb, 0x5c, 0xf7, 0x20, 0xf7, 0x5c, 0xf7, + 0x6f, 0xf7, 0x25, 0xfb, 0x6f, 0xf7, 0x25, 0xfb, 0x20, 0xf7, 0x5c, 0xfb, + 0x20, 0xfb, 0x5c, 0xfb, 0x6f, 0xfb, 0x25, 0x5, 0xf8, 0x15, 0xad, 0x15, + 0xa3, 0xc2, 0xc8, 0xa4, 0x90, 0x8f, 0x88, 0x86, 0x72, 0x4f, 0x51, 0x73, + 0x87, 0x8a, 0x8d, 0x8f, 0x1e, 0x52, 0x85, 0x15, 0x73, 0x4f, 0xc5, 0xa4, + 0x90, 0x8f, 0x8e, 0x90, 0xa4, 0xc2, 0x4e, 0x73, 0x87, 0x8a, 0x89, 0x87, + 0x1f, 0xc4, 0x4d, 0x15, 0x8f, 0x8c, 0x8d, 0x8f, 0xa3, 0xc7, 0x51, 0x72, + 0x86, 0x87, 0x88, 0x86, 0x72, 0x54, 0xc8, 0xa3, 0x1e, 0xfb, 0x21, 0x3e, + 0x15, 0xa4, 0xc7, 0xc5, 0xa3, 0x8f, 0x8c, 0x89, 0x87, 0x73, 0x54, 0x4e, + 0x72, 0x86, 0x87, 0x8e, 0x90, 0x1e, 0xe, 0x5e, 0x78, 0xf9, 0x54, 0x1, + 0xb1, 0xf9, 0x62, 0x3, 0xf7, 0x99, 0xf7, 0x58, 0x15, 0xf7, 0x1c, 0xfb, + 0x6b, 0xf7, 0x27, 0xf7, 0x73, 0xf7, 0x68, 0xf7, 0x1c, 0xfb, 0x6e, 0xf7, + 0x22, 0xfb, 0x21, 0xf7, 0x5f, 0xfb, 0x1e, 0xfb, 0x5f, 0xfb, 0x71, 0xfb, + 0x22, 0x5, 0xf7, 0x7e, 0xfb, 0x1a, 0x15, 0x9e, 0xca, 0xfb, 0x36, 0xbc, + 0x92, 0x9d, 0x83, 0x9d, 0xf7, 0x33, 0xc7, 0x79, 0xc6, 0xc4, 0x78, 0xbc, + 0xf7, 0x37, 0xa1, 0x7e, 0xa0, 0x99, 0xbf, 0xfb, 0x33, 0xc8, 0x9a, 0x79, + 0x52, 0xf7, 0x35, 0x55, 0x84, 0x78, 0x95, 0x7a, 0xfb, 0x33, 0x55, 0x9e, + 0x4d, 0x4f, 0xa1, 0x4f, 0xfb, 0x37, 0x77, 0x93, 0x79, 0x82, 0x5c, 0xf7, + 0x32, 0x5, 0xe, 0x74, 0x3a, 0xa, 0xf7, 0xd6, 0xf7, 0x78, 0x3, 0xf7, + 0x45, 0x7d, 0x15, 0xf7, 0x7b, 0xf7, 0x3d, 0xf7, 0x7c, 0xfb, 0x3d, 0x31, + 0xf7, 0xa9, 0xf7, 0x7c, 0xf7, 0x41, 0x5, 0xfb, 0xb5, 0x6, 0x36, 0xf7, + 0xa1, 0x35, 0xfb, 0xa1, 0x5, 0xfb, 0xb3, 0x6, 0xf7, 0x7e, 0xfb, 0x41, + 0x5, 0xe, 0x7b, 0x92, 0x76, 0xf8, 0x4c, 0xa6, 0xf7, 0x90, 0x54, 0xa, + 0xf9, 0x84, 0x3, 0xf7, 0x46, 0x7d, 0x15, 0xf7, 0x7d, 0xf7, 0x2d, 0xf7, + 0x7d, 0xfb, 0x2d, 0x45, 0xf7, 0xa3, 0xf7, 0x69, 0xf7, 0x4f, 0xfb, 0xa8, + 0x9e, 0x27, 0xf7, 0x86, 0x27, 0xfb, 0x86, 0xfb, 0xa8, 0x78, 0xf7, 0x60, + 0xfb, 0x4f, 0x5, 0x63, 0xfb, 0x86, 0x15, 0xe6, 0xf7, 0x8e, 0xfb, 0x71, + 0xf7, 0x3b, 0xf7, 0xa1, 0x80, 0xd4, 0xf7, 0x90, 0xd4, 0xfb, 0x90, 0xf7, + 0xa1, 0x96, 0xfb, 0x78, 0xfb, 0x3b, 0xec, 0xfb, 0x8e, 0xfb, 0x67, 0xf7, + 0x44, 0x5, 0xe, 0x59, 0x92, 0x76, 0xf9, 0x45, 0xa9, 0x8b, 0x54, 0xa, + 0xb9, 0xf9, 0xd, 0xb3, 0x3, 0xae, 0xf7, 0xec, 0x15, 0xfb, 0x5b, 0xf7, + 0x37, 0xfb, 0x33, 0xf7, 0x59, 0xf7, 0x5b, 0xf7, 0x34, 0xf7, 0x36, 0xf7, + 0x5a, 0xf7, 0x5a, 0xfb, 0x34, 0xf7, 0x35, 0xfb, 0x5a, 0xfb, 0x5d, 0xfb, + 0x34, 0xfb, 0x35, 0xfb, 0x5c, 0x1e, 0xf7, 0x32, 0xfb, 0xa3, 0x15, 0xda, + 0xf7, 0x7e, 0xfb, 0x53, 0xf7, 0x24, 0x5, 0xf7, 0x84, 0x6, 0xd6, 0xf7, + 0x74, 0xd7, 0xfb, 0x74, 0x5, 0xf7, 0x86, 0x6, 0xfb, 0x59, 0xfb, 0x24, + 0xd4, 0xfb, 0x7e, 0xfb, 0x56, 0xf7, 0x25, 0x5, 0xe, 0x8d, 0x92, 0x76, + 0xf7, 0x53, 0xad, 0x8b, 0xf7, 0x4f, 0xf7, 0xc7, 0x77, 0x1, 0xf7, 0xb1, + 0xac, 0x8b, 0xf7, 0x50, 0x8b, 0xaf, 0x3, 0xf7, 0x49, 0x7d, 0x15, 0xf7, + 0x7e, 0xf7, 0x53, 0xf7, 0x84, 0xfb, 0x53, 0xfb, 0x5, 0xf7, 0xb0, 0xf7, + 0x9d, 0xf7, 0x26, 0xfb, 0xcc, 0x89, 0x36, 0xf7, 0xb7, 0x3b, 0xfb, 0xb7, + 0xfb, 0xbb, 0x8d, 0xf7, 0x8e, 0xfb, 0x26, 0x5, 0xac, 0xb3, 0x15, 0xbf, + 0xb6, 0xaf, 0xbf, 0xbd, 0xb6, 0x66, 0x58, 0x59, 0x63, 0x5a, 0x56, 0x58, + 0x5f, 0xb9, 0xc0, 0x1e, 0xe, 0x7b, 0xb2, 0x76, 0xf7, 0x7b, 0xf7, 0x4a, + 0x86, 0xb0, 0xf7, 0xa7, 0x77, 0x12, 0xf7, 0xd4, 0xf7, 0x4a, 0x13, 0xb8, + 0xf7, 0x45, 0x35, 0xa, 0xec, 0x15, 0x13, 0xd8, 0x59, 0xb4, 0x62, 0xbd, + 0xbd, 0xb4, 0xb4, 0xbd, 0xbd, 0x62, 0xb4, 0x59, 0x59, 0x62, 0x62, 0x59, + 0x1e, 0xe, 0xfb, 0xc, 0xc6, 0xa8, 0xf7, 0x5c, 0xc7, 0x9e, 0xe1, 0xb3, + 0xaf, 0x75, 0x77, 0xf7, 0x39, 0x77, 0x12, 0xf8, 0xae, 0xa2, 0xce, 0xa5, + 0x13, 0xef, 0xf8, 0xae, 0xf8, 0x6a, 0x15, 0x90, 0x8d, 0x97, 0x90, 0x8e, + 0x8f, 0x8f, 0x9a, 0x8b, 0xa1, 0x8a, 0x9c, 0x7b, 0x7b, 0x73, 0x82, 0x7e, + 0x88, 0x8, 0x8b, 0x9f, 0x71, 0x95, 0x80, 0x1e, 0xfc, 0xc, 0x97, 0x15, + 0x97, 0x96, 0xd0, 0xb5, 0xdb, 0xaf, 0xbb, 0xa1, 0xc7, 0xa2, 0xa6, 0x94, + 0x8, 0x9c, 0x91, 0x94, 0x8d, 0x90, 0x1a, 0x94, 0x52, 0x90, 0x7e, 0x7e, + 0x4d, 0x73, 0x68, 0x3b, 0x1e, 0x3b, 0x68, 0x34, 0x5f, 0x7f, 0x1a, 0x80, + 0xa4, 0x83, 0x99, 0x85, 0x1e, 0x99, 0x85, 0x92, 0x8d, 0x95, 0x94, 0x8, + 0xfb, 0xe, 0x4c, 0x15, 0x75, 0x95, 0xaf, 0x6d, 0xaf, 0x1b, 0xaf, 0xbd, + 0xaf, 0x96, 0x93, 0x1f, 0x91, 0x98, 0x95, 0xa2, 0x9e, 0x99, 0x9e, 0x98, + 0xb2, 0xa1, 0xab, 0x9b, 0xa2, 0x97, 0xb3, 0x9f, 0xb1, 0x8c, 0x9c, 0x8c, + 0xa1, 0x85, 0x9c, 0x78, 0xa2, 0x91, 0xb0, 0x9c, 0x8a, 0x95, 0x8, 0xa3, + 0x8a, 0x6f, 0xbd, 0x7e, 0x1b, 0x82, 0x26, 0x66, 0x6a, 0x42, 0x1f, 0x42, + 0x6a, 0x47, 0x5c, 0x83, 0x86, 0x8, 0x86, 0x83, 0x7b, 0x79, 0x81, 0x1b, + 0x81, 0x79, 0x94, 0x90, 0x7e, 0x1f, 0x83, 0x8e, 0x79, 0x97, 0x83, 0x95, + 0x7e, 0x7f, 0x81, 0x7d, 0x80, 0x5c, 0x8, 0xf7, 0xf, 0xfb, 0x29, 0x15, + 0x8b, 0xf7, 0x7c, 0xfb, 0x4d, 0x97, 0x81, 0x1e, 0x81, 0x97, 0x9a, 0x85, + 0x92, 0x1b, 0x92, 0x90, 0x8e, 0x92, 0x96, 0x1f, 0x96, 0x92, 0xf7, 0x2c, + 0xf4, 0x96, 0x94, 0x8, 0x96, 0x94, 0x8f, 0x9d, 0x98, 0x98, 0x8c, 0x94, + 0x9d, 0x1a, 0x9d, 0x86, 0x9b, 0x7a, 0xa3, 0x1e, 0x7a, 0xa3, 0x29, 0xf7, + 0x9, 0x80, 0x98, 0x83, 0x95, 0x7f, 0xa0, 0x7a, 0x94, 0x8, 0x13, 0xf7, + 0x83, 0x8f, 0x82, 0x8f, 0x7d, 0x8a, 0x77, 0x8a, 0x66, 0x7e, 0x6d, 0x7b, + 0x78, 0x81, 0x61, 0x77, 0x72, 0x78, 0x77, 0x7b, 0x84, 0x72, 0x88, 0x74, + 0x84, 0x54, 0x87, 0x79, 0x84, 0x83, 0x80, 0x7e, 0x73, 0x7d, 0x78, 0x87, + 0x8, 0xfb, 0x15, 0xf7, 0x11, 0x15, 0x8c, 0x7a, 0x8d, 0x6b, 0x90, 0x75, + 0x8, 0x77, 0x97, 0xb3, 0x77, 0xa9, 0x1b, 0xa9, 0xa8, 0x94, 0x9e, 0x9e, + 0x1f, 0x92, 0xa1, 0x8f, 0xa9, 0x8e, 0xa2, 0x8, 0x80, 0x81, 0x67, 0x6b, + 0x5d, 0x1b, 0x5d, 0x6c, 0xaf, 0x9a, 0x7e, 0x1f, 0xf8, 0x44, 0x8e, 0x15, + 0x76, 0xa2, 0xae, 0xa0, 0x9f, 0x74, 0x5, 0x87, 0x54, 0x15, 0x79, 0xa0, + 0xac, 0xa0, 0x9c, 0x76, 0x5, 0x88, 0x55, 0x15, 0x79, 0x9e, 0xaa, 0xa1, + 0x9d, 0x77, 0x5, 0x53, 0x4, 0x77, 0xa2, 0xa9, 0xa0, 0x9f, 0x77, 0x5, + 0xfb, 0x40, 0xb9, 0x15, 0x75, 0xa2, 0xaf, 0xa3, 0xa1, 0x73, 0x5, 0x86, + 0x51, 0x15, 0x77, 0xa0, 0xae, 0xa3, 0xa0, 0x75, 0x5, 0x86, 0x50, 0x15, + 0x78, 0x9f, 0xaf, 0xa4, 0x9d, 0x78, 0x5, 0x86, 0x50, 0x15, 0x76, 0xa3, + 0xad, 0xa4, 0xa0, 0x73, 0x5, 0xfb, 0x91, 0xf1, 0x15, 0x97, 0x93, 0xf7, + 0x17, 0xd9, 0x94, 0x90, 0x8, 0x90, 0x94, 0x94, 0x8f, 0x92, 0x1b, 0x92, + 0x8c, 0x88, 0x86, 0x86, 0x84, 0x88, 0x7e, 0x83, 0x1f, 0x6e, 0x7a, 0x22, + 0x4d, 0x81, 0x85, 0x8, 0x84, 0x80, 0x7e, 0x7e, 0x80, 0x1b, 0x85, 0x88, + 0x8b, 0x91, 0x93, 0x90, 0x8e, 0x9d, 0x97, 0x1f, 0xd7, 0x58, 0x15, 0x78, + 0xa2, 0xab, 0x9f, 0x9f, 0x74, 0x5, 0x8e, 0x51, 0x15, 0x76, 0xa2, 0xa8, + 0xa0, 0xa1, 0x74, 0x5, 0x8c, 0x53, 0x15, 0x79, 0xa0, 0xa8, 0x9e, 0x9d, + 0x78, 0x5, 0x8a, 0x54, 0x15, 0x77, 0xa2, 0xa9, 0xa1, 0xa1, 0x72, 0x5, + 0x42, 0x48, 0x15, 0x83, 0x95, 0x2f, 0xf4, 0x7c, 0x9c, 0x7c, 0x9c, 0x8c, + 0x94, 0x8f, 0x8e, 0x90, 0x8f, 0x9c, 0x7c, 0x93, 0x82, 0x95, 0x80, 0xe6, + 0x20, 0x92, 0x84, 0x8, 0x84, 0x92, 0x93, 0x87, 0x8f, 0x1b, 0x8f, 0x95, + 0x91, 0x90, 0x92, 0x1f, 0x92, 0x90, 0xf7, 0x6, 0xd8, 0x92, 0x90, 0x8, + 0x90, 0x92, 0x94, 0x92, 0x8f, 0x1b, 0x8f, 0x91, 0x88, 0x86, 0x86, 0x82, + 0x84, 0x82, 0x86, 0x1f, 0x82, 0x86, 0xfb, 0x16, 0x33, 0x84, 0x86, 0x84, + 0x86, 0x89, 0x89, 0x89, 0x85, 0x89, 0x85, 0x8c, 0x70, 0x8a, 0x82, 0x8, + 0x78, 0x88, 0x8b, 0x79, 0x86, 0x1b, 0x86, 0x88, 0x95, 0x9b, 0x93, 0x88, + 0x9e, 0x8a, 0x9d, 0x1f, 0x8a, 0x95, 0x86, 0x94, 0x83, 0x95, 0x8, 0xe, + 0x85, 0xb2, 0x76, 0xf8, 0x2, 0xb5, 0x8b, 0xb0, 0xf7, 0xa7, 0x77, 0x1, + 0xf7, 0x4a, 0x35, 0xa, 0x6e, 0x15, 0xe6, 0xd7, 0xe6, 0x3f, 0x5f, 0xf7, + 0x3, 0xf0, 0xca, 0xfb, 0xb, 0x83, 0x6e, 0xf7, 0x7, 0x6e, 0xfb, 0x7, + 0xfb, 0xb, 0x93, 0xf0, 0x4c, 0x5, 0xe, 0x74, 0xb2, 0x76, 0xf7, 0x75, + 0xa9, 0xf7, 0x19, 0xa5, 0x85, 0xb0, 0xf7, 0xa7, 0x77, 0x12, 0x13, 0xe8, + 0xf7, 0x42, 0x4f, 0xa, 0x5, 0x13, 0xd8, 0x32, 0xa, 0xfb, 0x10, 0x42, + 0x15, 0xf7, 0x10, 0xf2, 0xf7, 0x10, 0x24, 0x4f, 0xf7, 0x29, 0xf7, 0x1c, + 0xe1, 0xfb, 0x34, 0x81, 0x63, 0xf7, 0x30, 0x63, 0xfb, 0x30, 0xfb, 0x34, + 0x95, 0xf7, 0x1c, 0x35, 0x5, 0xe, 0x83, 0x92, 0x76, 0xf8, 0x3f, 0xa0, + 0xf7, 0xa3, 0x77, 0x1, 0xf8, 0x38, 0xd9, 0x3, 0xf7, 0x3f, 0x7d, 0x15, + 0xf7, 0x8d, 0xf7, 0x44, 0xf7, 0x95, 0xfb, 0x44, 0x25, 0xf7, 0xae, 0xf7, + 0x71, 0xf7, 0x3a, 0x5, 0xfb, 0xad, 0x6, 0x2c, 0xf7, 0xa3, 0x2a, 0xfb, + 0xa3, 0x5, 0xfb, 0xb4, 0x6, 0xf7, 0x7d, 0xfb, 0x3a, 0x5, 0xf7, 0x2c, + 0xba, 0x15, 0x38, 0xed, 0xde, 0xf7, 0x8d, 0x5, 0xfb, 0xef, 0x4, 0xd9, + 0xed, 0x5, 0xf7, 0x92, 0x6, 0xfc, 0x61, 0xfb, 0x1f, 0x15, 0xfb, 0x69, + 0xf7, 0x24, 0xf7, 0xea, 0x24, 0x5, 0x8b, 0x4, 0xf7, 0x19, 0x62, 0xf2, + 0xfb, 0x9f, 0x5, 0xfc, 0x61, 0x95, 0x15, 0xf7, 0x75, 0xf7, 0xbd, 0x5, + 0xfb, 0x16, 0x7, 0xe, 0xdf, 0x92, 0x76, 0xf8, 0x47, 0xa0, 0xf7, 0x9b, + 0x77, 0x1, 0xf7, 0xd3, 0xf7, 0xed, 0x3, 0xf7, 0x43, 0x92, 0x15, 0xf7, + 0xd, 0x76, 0xf7, 0x47, 0xf7, 0x17, 0xf7, 0x35, 0xfb, 0x12, 0xf7, 0xf, + 0x86, 0x2c, 0xf7, 0xa9, 0xf7, 0x74, 0xf7, 0x32, 0x4e, 0xa0, 0x5, 0xfb, + 0x73, 0x6, 0x37, 0xf7, 0x89, 0xfb, 0x4, 0x9d, 0x32, 0xfb, 0x9b, 0x5, + 0xfb, 0xb0, 0x6, 0xf7, 0x76, 0xfb, 0x41, 0x5, 0x55, 0xfb, 0x7c, 0x15, + 0xdb, 0xf7, 0x86, 0xfb, 0x53, 0xf7, 0x22, 0x5, 0xf7, 0x84, 0x6, 0xdc, + 0xf7, 0x8b, 0xdd, 0xfb, 0x8b, 0x5, 0xf7, 0x8c, 0x6, 0xfb, 0x5f, 0xfb, + 0x22, 0xda, 0xfb, 0x91, 0xfb, 0x62, 0xf7, 0x38, 0x5, 0xe, 0x2c, 0x9d, + 0x76, 0xf9, 0x4b, 0x77, 0x1, 0xbf, 0xf9, 0x14, 0x3, 0xd2, 0xf7, 0x3, + 0x15, 0xf7, 0x82, 0xf7, 0x9, 0xf7, 0x2d, 0xfb, 0x7b, 0xa0, 0x98, 0x68, + 0xf7, 0xa0, 0xf7, 0x88, 0xd6, 0x5, 0xa3, 0x7, 0xfb, 0x8c, 0xb3, 0xa2, + 0xf7, 0x9e, 0x70, 0x94, 0xfb, 0x1e, 0xfb, 0x86, 0xfb, 0x7f, 0xf7, 0x14, + 0x7c, 0x76, 0xf7, 0x38, 0xfb, 0x71, 0xfb, 0x36, 0xfb, 0x5d, 0x5, 0xe, + 0xfb, 0x8, 0x9a, 0x76, 0xf7, 0x99, 0xf7, 0x3f, 0xf7, 0x9b, 0x77, 0x1, + 0xf7, 0x85, 0x96, 0x8b, 0xf7, 0x3c, 0x3, 0xc4, 0xf7, 0x3, 0x15, 0xf7, + 0x91, 0xf7, 0x20, 0xf7, 0x2f, 0xfb, 0x95, 0x9e, 0x99, 0x4f, 0xf7, 0xac, + 0xf7, 0x9b, 0xc9, 0x5, 0xa7, 0x7, 0xfb, 0xa2, 0x9e, 0xb8, 0xf7, 0xab, + 0x6f, 0x98, 0xfb, 0x16, 0xfb, 0xa0, 0xfb, 0x8f, 0xf7, 0x2e, 0x7a, 0x76, + 0xf7, 0x61, 0xfb, 0x71, 0xfb, 0x5a, 0xfb, 0x5c, 0x5, 0xf7, 0x65, 0xf7, + 0x64, 0x15, 0xb9, 0xb0, 0xb2, 0xbb, 0xba, 0xaf, 0x64, 0x5d, 0x5c, 0x67, + 0x64, 0x5c, 0x5b, 0x66, 0xb2, 0xba, 0x1e, 0xe, 0x31, 0xa0, 0x76, 0xf9, + 0x30, 0x77, 0x1, 0xb3, 0xf9, 0x31, 0x3, 0xf7, 0x4, 0xf7, 0x10, 0x15, + 0xf7, 0x83, 0xf7, 0x45, 0xfb, 0x5, 0xfb, 0xa8, 0xb2, 0x8a, 0xa4, 0x85, + 0xb1, 0x79, 0x19, 0xb4, 0xf7, 0xb8, 0xf7, 0x9, 0xfb, 0xa5, 0xa7, 0xa5, + 0xa2, 0x9b, 0xb1, 0x95, 0x19, 0xfb, 0x48, 0xf7, 0x82, 0xf7, 0xa9, 0xfb, + 0x3, 0x88, 0xaa, 0x99, 0xb2, 0x99, 0xa8, 0x19, 0xfb, 0xb9, 0xb5, 0xf7, + 0xa6, 0xf7, 0x9, 0x74, 0xa3, 0x76, 0xb0, 0x82, 0xa6, 0x19, 0xfb, 0x82, + 0xfb, 0x45, 0xf7, 0x4, 0xf7, 0xa8, 0x6c, 0x8c, 0x62, 0x96, 0x6f, 0x98, + 0x19, 0x60, 0xfb, 0xb8, 0xfb, 0x8, 0xf7, 0xa5, 0x77, 0x79, 0x68, 0x76, + 0x6a, 0x7e, 0x19, 0x8c, 0x6, 0xf7, 0x45, 0xfb, 0x82, 0xfb, 0xa8, 0xf7, + 0x3, 0x5, 0x64, 0x80, 0x70, 0x7c, 0x6a, 0x1e, 0xf7, 0xb9, 0x60, 0xfb, + 0xa5, 0xfb, 0x8, 0xa4, 0x6f, 0x98, 0x74, 0x99, 0x66, 0x19, 0xe, 0x5a, + 0x9f, 0x76, 0xf8, 0x8f, 0x77, 0xae, 0x77, 0xf7, 0x46, 0x77, 0x12, 0xc2, + 0xf9, 0x3c, 0x13, 0xd8, 0xeb, 0xf7, 0x31, 0x15, 0xf7, 0x8b, 0xf7, 0x6, + 0x5c, 0xfb, 0xa1, 0x9d, 0x88, 0xe7, 0xf7, 0x93, 0xf7, 0x31, 0xfb, 0x73, + 0x99, 0x94, 0xfb, 0x7, 0xf7, 0x8b, 0xf7, 0xa2, 0x5c, 0x8e, 0x9b, 0xfb, + 0x93, 0xe9, 0xf7, 0x73, 0xf7, 0x30, 0x5, 0x13, 0xb8, 0x80, 0x9a, 0xfb, + 0x89, 0xfb, 0x6, 0xba, 0xf7, 0xa1, 0x79, 0x8e, 0x2d, 0xfb, 0x93, 0xfb, + 0x2f, 0xf7, 0x73, 0x7c, 0x82, 0xf7, 0x8, 0xfb, 0x8b, 0xfb, 0xa2, 0xba, + 0x88, 0x7b, 0xf7, 0x93, 0x2d, 0xfb, 0x73, 0xfb, 0x30, 0x5, 0xe, 0x5c, + 0x78, 0x60, 0xa, 0x8e, 0xbe, 0x7e, 0x67, 0xa, 0x95, 0x77, 0xb8, 0xcf, + 0x48, 0xcf, 0xd7, 0xa7, 0x8c, 0x77, 0x12, 0xb0, 0x60, 0xa, 0x95, 0xbe, + 0x77, 0x67, 0xa, 0xae, 0xcf, 0x48, 0xcf, 0xd7, 0xa7, 0x13, 0xec, 0x52, + 0xb4, 0x55, 0x40, 0xf7, 0x8a, 0xa1, 0x15, 0x73, 0xa6, 0x7f, 0xb9, 0xae, + 0x1a, 0xb8, 0x9d, 0xb5, 0xab, 0xab, 0x1e, 0x8d, 0x89, 0x5, 0x81, 0x7a, + 0x85, 0x76, 0x78, 0x1a, 0x61, 0xa3, 0x6c, 0xb4, 0x82, 0x1e, 0x49, 0x97, + 0xbf, 0x4e, 0xd2, 0x1b, 0xa5, 0xa3, 0x95, 0x9d, 0x9e, 0x1f, 0x79, 0x8c, + 0x79, 0x92, 0x7b, 0x93, 0x4f, 0xa9, 0x65, 0xc3, 0x8a, 0xcf, 0x8e, 0x8c, + 0x18, 0x64, 0x94, 0xaf, 0x64, 0xb6, 0x1b, 0x9b, 0x9b, 0x91, 0x93, 0x98, + 0x1f, 0x78, 0xa7, 0xad, 0x80, 0xad, 0x1b, 0xc9, 0xc0, 0xb2, 0xcc, 0x8e, + 0x1f, 0x73, 0x70, 0x5d, 0x7f, 0x68, 0x1b, 0x5e, 0x61, 0x9d, 0xab, 0x6b, + 0x7f, 0xa, 0x13, 0xd1, 0x52, 0xb9, 0x21, 0x40, 0x81, 0x9c, 0xa0, 0x85, + 0x9e, 0x1b, 0xb5, 0xaa, 0xa3, 0xb4, 0x94, 0x1f, 0xcd, 0x97, 0xc8, 0xbf, + 0xd2, 0x1a, 0xa5, 0x81, 0xa3, 0x79, 0x9e, 0x1e, 0x8a, 0x79, 0x84, 0x79, + 0x83, 0x7b, 0x6d, 0x4f, 0x53, 0x65, 0x47, 0x8a, 0x8a, 0x8e, 0x18, 0xb2, + 0x94, 0xb2, 0xaf, 0xb6, 0x1a, 0x9b, 0x85, 0x9b, 0x83, 0x98, 0x1e, 0x13, + 0xe5, 0x52, 0xb9, 0x54, 0xc0, 0x9e, 0xa7, 0x96, 0xad, 0xad, 0x1a, 0x13, + 0xe5, 0x52, 0xb9, 0x21, 0x40, 0xc9, 0x64, 0xc0, 0x4a, 0x8e, 0x1e, 0x13, + 0xe5, 0x52, 0xb9, 0x54, 0xc0, 0xa3, 0x70, 0x97, 0x5d, 0x68, 0x1a, 0x5e, + 0x79, 0x61, 0x6b, 0x6b, 0x1e, 0x89, 0x8d, 0x5, 0x13, 0xe4, 0x82, 0xb9, + 0x49, 0x40, 0x95, 0x9c, 0x91, 0xa0, 0x9e, 0x1a, 0xb5, 0x73, 0xaa, 0x62, + 0x94, 0x1e, 0x13, 0xe5, 0x46, 0x79, 0x49, 0x40, 0xcd, 0x7f, 0x57, 0xc8, + 0x44, 0x1b, 0x71, 0x73, 0x81, 0x79, 0x78, 0x1f, 0x9d, 0x8a, 0x9d, 0x84, + 0x9b, 0x83, 0xc7, 0x6d, 0xb1, 0x53, 0x8c, 0x47, 0x88, 0x8a, 0x18, 0xb2, + 0x82, 0x67, 0xb2, 0x60, 0x1b, 0x7b, 0x7b, 0x85, 0x83, 0x7e, 0x1f, 0x13, + 0xe5, 0x51, 0xb9, 0x55, 0x40, 0x9e, 0x6f, 0x69, 0x96, 0x69, 0x1b, 0x6e, + 0xa, 0x4d, 0x56, 0x64, 0x4a, 0x88, 0x1f, 0x13, 0xe5, 0x51, 0xb9, 0x55, + 0x40, 0xa3, 0xa6, 0xb9, 0x97, 0xae, 0x1b, 0xb8, 0xb5, 0x79, 0x6b, 0xab, + 0x1f, 0x89, 0x89, 0x5, 0x13, 0xe8, 0x22, 0xb9, 0x55, 0x40, 0x95, 0x7a, + 0x76, 0x91, 0x78, 0x1b, 0x61, 0x6c, 0x73, 0x62, 0x82, 0x1f, 0x49, 0x7f, + 0x4e, 0x57, 0x44, 0x1a, 0x71, 0x95, 0x73, 0x9d, 0x78, 0x1e, 0x8c, 0x9d, + 0x92, 0x9d, 0x93, 0x9b, 0xa9, 0xc7, 0xc3, 0xb1, 0xcf, 0x8c, 0x8c, 0x88, + 0x18, 0x64, 0x82, 0x64, 0x67, 0x60, 0x1a, 0x7b, 0x91, 0x7b, 0x93, 0x7e, + 0x1e, 0x78, 0x6f, 0x80, 0x69, 0x69, 0x1a, 0x4d, 0xb2, 0x56, 0xcc, 0x88, + 0x1e, 0xc6, 0xf7, 0x6, 0x15, 0x81, 0x9b, 0x87, 0x9e, 0x9e, 0x1a, 0x13, + 0xe3, 0x52, 0xb9, 0x55, 0x40, 0xb6, 0xa1, 0xbc, 0xb4, 0x9d, 0x1e, 0x8a, + 0x8d, 0x5, 0x8e, 0x7f, 0x7e, 0x8d, 0x7f, 0x1b, 0x65, 0x4c, 0x79, 0x6e, + 0x70, 0x1f, 0x6e, 0xa, 0xbd, 0x98, 0xc2, 0xb1, 0xbd, 0x1b, 0x96, 0x96, + 0x89, 0x87, 0x95, 0x1f, 0x8c, 0x8d, 0x73, 0xb6, 0x42, 0xb8, 0x59, 0x8a, + 0x19, 0x13, 0xe5, 0x4a, 0xb2, 0x15, 0x40, 0x95, 0x9b, 0x9e, 0x8f, 0x9e, + 0x1b, 0x13, 0xe5, 0x52, 0xb8, 0xd5, 0x40, 0xb6, 0xbc, 0x75, 0x62, 0x9d, + 0x1f, 0x8d, 0x8c, 0x5, 0x8e, 0x97, 0x8d, 0x98, 0x97, 0x1a, 0xb1, 0x79, + 0xca, 0x6e, 0xa6, 0x1e, 0x13, 0xe5, 0x52, 0xb9, 0x21, 0x40, 0xbd, 0x7e, + 0xb1, 0x54, 0x59, 0x1a, 0x80, 0x89, 0x80, 0x87, 0x81, 0x1e, 0x8d, 0x8a, + 0xb6, 0xa3, 0xb8, 0xd4, 0x8a, 0xbd, 0x19, 0x13, 0xc8, 0x82, 0xb9, 0x53, + 0x40, 0x95, 0x7b, 0x8f, 0x78, 0x78, 0x1a, 0x60, 0x75, 0x5a, 0x62, 0x79, + 0x1e, 0x8c, 0x89, 0x5, 0x88, 0x97, 0x98, 0x89, 0x97, 0x1b, 0xb1, 0xca, + 0x9d, 0xa8, 0xa6, 0x1f, 0x59, 0x7e, 0x54, 0x65, 0x59, 0x1b, 0x80, 0x80, + 0x8d, 0x8f, 0x81, 0x1f, 0x8a, 0x89, 0x5, 0x13, 0xe5, 0x52, 0xb9, 0x55, + 0x40, 0xa3, 0x60, 0xd4, 0x5e, 0xbd, 0x8c, 0x8, 0x13, 0xe5, 0x52, 0xb2, + 0x21, 0x40, 0x81, 0x7b, 0x78, 0x87, 0x78, 0x1b, 0x60, 0x5a, 0xa1, 0xb4, + 0x79, 0x1f, 0x89, 0x8a, 0x5, 0x88, 0x7f, 0x89, 0x7e, 0x7f, 0x1a, 0x65, + 0x9d, 0x4c, 0xa8, 0x70, 0x1e, 0x59, 0x98, 0x65, 0xc2, 0xbd, 0x1a, 0x96, + 0x8d, 0x96, 0x8f, 0x95, 0x1e, 0x89, 0x8c, 0x5, 0x13, 0xe5, 0x52, 0xb9, + 0x55, 0x40, 0x60, 0x73, 0x5e, 0x42, 0x8c, 0x59, 0x8, 0xd1, 0xf7, 0x39, + 0x15, 0xa4, 0x97, 0xa6, 0x86, 0x87, 0xa6, 0x98, 0xa4, 0x70, 0x8f, 0x78, + 0x9f, 0x7e, 0x73, 0x5, 0x6e, 0xa, 0x72, 0x7f, 0x9f, 0x77, 0x5, 0xe, + 0xfb, 0x24, 0x92, 0x76, 0xf9, 0x64, 0x77, 0x1, 0xb2, 0xf8, 0xfd, 0x3, + 0xb2, 0xf7, 0x3e, 0x15, 0xf7, 0x8d, 0xd7, 0xc6, 0xfb, 0x98, 0xc7, 0xf7, + 0x98, 0xf7, 0x8d, 0x3e, 0xfb, 0x5a, 0xf7, 0x44, 0xf7, 0x5f, 0xf7, 0x44, + 0xfb, 0x92, 0x3c, 0x51, 0xf7, 0x9c, 0x4e, 0xfb, 0x9c, 0xfb, 0x91, 0xda, + 0xf7, 0x5e, 0xfb, 0x44, 0x5, 0xe, 0x59, 0x4c, 0xa2, 0xf7, 0x6a, 0xa8, + 0xf8, 0x8a, 0x77, 0x1, 0xf7, 0x51, 0xcd, 0x15, 0x81, 0x7c, 0x87, 0x79, + 0x79, 0x1a, 0x5b, 0xa4, 0x6d, 0xbc, 0xa7, 0xa8, 0x95, 0x97, 0xa5, 0x1e, + 0xc0, 0xa4, 0xba, 0xb1, 0xb5, 0xb3, 0x8, 0xb4, 0xb6, 0xdb, 0xd2, 0xca, + 0x1b, 0xa2, 0x9e, 0x82, 0x79, 0x99, 0x1f, 0x8f, 0x9c, 0x9d, 0x8e, 0x5, + 0xa3, 0x7a, 0x72, 0x97, 0x6e, 0x1b, 0x4c, 0x46, 0x56, 0x61, 0x5f, 0x1f, + 0x5a, 0x58, 0xfb, 0x2, 0x28, 0x40, 0x1b, 0x6e, 0x6d, 0xa1, 0xaa, 0x97, + 0x8f, 0x97, 0x90, 0x96, 0x1f, 0x84, 0x92, 0x99, 0x7d, 0x95, 0x1b, 0x90, + 0x8e, 0x8d, 0x8f, 0x8e, 0x1f, 0xe8, 0xf7, 0x13, 0x5, 0x8f, 0x91, 0x8c, + 0x98, 0x92, 0x1a, 0x94, 0x89, 0x9f, 0x84, 0x91, 0x1e, 0x81, 0x94, 0x77, + 0x9b, 0x9a, 0x1a, 0xad, 0xc4, 0xe0, 0x9f, 0xa7, 0x1e, 0xa5, 0x9e, 0xb7, + 0xc8, 0xb1, 0xac, 0xa5, 0x71, 0x95, 0x1b, 0x90, 0x8f, 0x8f, 0x8f, 0x8e, + 0x1f, 0xe7, 0xf7, 0x13, 0x5, 0x8f, 0x90, 0x8b, 0x97, 0x91, 0x1a, 0x93, + 0x8b, 0x9d, 0x84, 0x91, 0x1e, 0xa0, 0x73, 0x54, 0x9b, 0x6c, 0x1b, 0x7c, + 0x7d, 0x88, 0x83, 0x7f, 0x1f, 0x4a, 0x60, 0x32, 0xfb, 0x5, 0x5c, 0x4a, + 0x59, 0x46, 0x41, 0xfb, 0x0, 0x72, 0x39, 0x8, 0x88, 0x80, 0x89, 0x7e, + 0x7f, 0x1a, 0x65, 0x9d, 0x67, 0xa2, 0x6e, 0x1e, 0xa8, 0xb3, 0x15, 0x72, + 0x9d, 0x74, 0xb1, 0xaa, 0x1a, 0xbb, 0xf7, 0x8, 0xf7, 0x3f, 0xaa, 0xb6, + 0x1e, 0xba, 0xcc, 0xd9, 0xf4, 0xcc, 0xb8, 0x8, 0x92, 0x95, 0x97, 0x8d, + 0x97, 0x1b, 0xa4, 0xad, 0x80, 0x7c, 0x9f, 0x1f, 0x8e, 0x88, 0x8f, 0x88, + 0x86, 0x1a, 0x83, 0x4d, 0x3a, 0x82, 0x7f, 0x1e, 0x88, 0x89, 0x87, 0x87, + 0x87, 0x84, 0x79, 0x9d, 0x79, 0x1b, 0x7b, 0x7e, 0x85, 0x82, 0x7e, 0x1f, + 0x54, 0x66, 0x37, 0xfb, 0x16, 0x6e, 0x4c, 0x8, 0x87, 0x82, 0x7d, 0x6e, + 0x81, 0x7e, 0xb0, 0x73, 0x83, 0x1a, 0x81, 0x4a, 0x37, 0x81, 0x7e, 0x1e, + 0x88, 0x89, 0x88, 0x89, 0x87, 0x1b, 0x87, 0x88, 0x8d, 0x8d, 0x88, 0x1f, + 0xe, 0x4c, 0x9a, 0x76, 0xf9, 0x55, 0x54, 0xa, 0xf9, 0x56, 0x3, 0xf7, + 0xad, 0xf7, 0x86, 0x15, 0x62, 0xfb, 0x7d, 0x5, 0x7e, 0x89, 0x8c, 0x89, + 0x8c, 0x1b, 0x91, 0x92, 0x95, 0x8f, 0x8e, 0x1f, 0xf7, 0x16, 0xf7, 0x4c, + 0xf7, 0x1b, 0xfb, 0x53, 0x5, 0x85, 0x90, 0x8c, 0x8a, 0x8d, 0x1b, 0x8f, + 0x8e, 0x8d, 0x93, 0x89, 0x1f, 0x5e, 0xf7, 0x82, 0xf7, 0x7b, 0x5f, 0x5, + 0x9d, 0x88, 0x8e, 0x8c, 0x8d, 0x1a, 0x90, 0x7f, 0x93, 0x89, 0x8c, 0x1e, + 0xfb, 0x53, 0xf7, 0x1b, 0xf7, 0x51, 0xf7, 0x17, 0x5, 0x94, 0x91, 0x92, + 0x93, 0x8f, 0x1a, 0x90, 0x7c, 0x8b, 0x81, 0x88, 0x1e, 0xfb, 0x77, 0x62, + 0xb4, 0xf7, 0x6e, 0x5, 0x9f, 0x8f, 0x8b, 0x8f, 0x89, 0x1b, 0x81, 0x82, + 0x7b, 0x8a, 0x8a, 0x1f, 0xfb, 0x12, 0xfb, 0x49, 0xfb, 0x16, 0xf7, 0x4c, + 0x5, 0x8d, 0x8a, 0x84, 0x97, 0x87, 0x1b, 0x81, 0x91, 0x7a, 0x87, 0x1f, + 0xb4, 0xfb, 0x71, 0xfb, 0x74, 0xb4, 0x5, 0x86, 0x8c, 0x7a, 0x90, 0x82, + 0x1a, 0x85, 0x97, 0x85, 0x8d, 0x89, 0x1e, 0xf7, 0x50, 0xfb, 0x1a, 0xfb, + 0x4f, 0xfb, 0x12, 0x5, 0x87, 0x88, 0x80, 0x84, 0x87, 0x1a, 0x84, 0x9c, + 0x8e, 0x8f, 0x8c, 0x1e, 0xe, 0x44, 0x99, 0x76, 0xf9, 0x56, 0x54, 0xa, + 0xf9, 0x4f, 0x3, 0xae, 0xf7, 0x58, 0x15, 0xf7, 0x6c, 0xa8, 0x70, 0xfb, + 0x7c, 0xf7, 0x32, 0xf7, 0x3d, 0xf7, 0x32, 0xfb, 0x3d, 0x72, 0xf7, 0x7c, + 0xf7, 0x6f, 0x6e, 0xfb, 0x3d, 0xf7, 0x31, 0xf7, 0x39, 0xf7, 0x31, 0xfb, + 0x6b, 0x6e, 0xa4, 0xf7, 0x6e, 0xfb, 0x32, 0xfb, 0x3d, 0xfb, 0x32, 0xf7, + 0x3d, 0xa6, 0xfb, 0x6e, 0xfb, 0x6c, 0xa8, 0xf7, 0x3c, 0xfb, 0x31, 0x5, + 0xe, 0x5c, 0x3a, 0xa, 0xdf, 0xf9, 0x7, 0x3, 0xdf, 0xf7, 0x35, 0x15, + 0xf7, 0x48, 0xbb, 0x5b, 0xfb, 0x41, 0xf7, 0x18, 0xf7, 0x16, 0xc7, 0xfb, + 0x48, 0xb5, 0xf7, 0x41, 0xf7, 0x14, 0xfb, 0xf, 0x5b, 0xf7, 0x3f, 0xf7, + 0x49, 0x63, 0xfb, 0x14, 0xf7, 0x18, 0xf7, 0x42, 0xb9, 0xfb, 0x41, 0xba, + 0xf7, 0x17, 0xf7, 0x10, 0xfb, 0x50, 0x62, 0xb9, 0xf7, 0x47, 0xfb, 0x12, + 0xfb, 0x14, 0x5b, 0xf7, 0x47, 0x5a, 0xfb, 0x43, 0xfb, 0x15, 0xf7, 0x12, + 0xb8, 0xfb, 0x49, 0xfb, 0x4a, 0xba, 0xf7, 0x19, 0xfb, 0x19, 0xfb, 0x4a, + 0x56, 0xf7, 0x44, 0x5c, 0x5, 0xe, 0x3b, 0x9c, 0x76, 0xa3, 0x76, 0xf7, + 0xa4, 0x7c, 0xa, 0xe6, 0x77, 0xa0, 0x77, 0xf7, 0x5f, 0x77, 0x12, 0xf7, + 0xcb, 0x7c, 0xa, 0x13, 0x6e, 0xd8, 0xf7, 0x7, 0xf7, 0xb, 0x15, 0x99, + 0x82, 0xa0, 0x76, 0x94, 0x7d, 0xf7, 0x49, 0xf7, 0x63, 0x18, 0x8c, 0x8a, + 0xfb, 0xe, 0xfb, 0x8b, 0x9c, 0x88, 0xa6, 0x81, 0x99, 0x80, 0x19, 0xe3, + 0xf7, 0x99, 0x5, 0x8d, 0x6, 0x13, 0xae, 0xd8, 0x79, 0xfb, 0xa7, 0x9c, + 0x8f, 0xa7, 0x8b, 0x9c, 0x87, 0x19, 0x79, 0xf7, 0xa7, 0x5, 0x8c, 0x6, + 0xe4, 0xfb, 0x99, 0x99, 0x96, 0xa5, 0x95, 0x9c, 0x8e, 0x19, 0xfb, 0xe, + 0xf7, 0x8b, 0x8d, 0x8c, 0xf7, 0x49, 0xfb, 0x63, 0x94, 0x99, 0xa0, 0xa0, + 0x99, 0x94, 0x19, 0xfb, 0x63, 0xf7, 0x49, 0x8c, 0x8c, 0xf7, 0x8b, 0xfb, + 0xe, 0x8e, 0x9c, 0x95, 0xa6, 0x96, 0x99, 0x19, 0xfb, 0x99, 0xe3, 0x75, + 0xa, 0xf7, 0xa7, 0x79, 0x87, 0x9c, 0x8b, 0xa7, 0x8f, 0x9c, 0x19, 0xfb, + 0xa7, 0x79, 0x5, 0x8c, 0x7, 0xf7, 0x99, 0xe4, 0x80, 0x99, 0x81, 0xa5, + 0x88, 0x9c, 0x19, 0xfb, 0x8b, 0xfb, 0xe, 0x8a, 0x8d, 0xf7, 0x63, 0xf7, + 0x49, 0x7d, 0x94, 0x76, 0xa0, 0x82, 0x99, 0x19, 0xfb, 0x49, 0xfb, 0x63, + 0x8a, 0x8c, 0xf7, 0xe, 0xf7, 0x8b, 0x7a, 0x8e, 0x70, 0x95, 0x7d, 0x96, + 0x19, 0x33, 0xfb, 0x99, 0x5, 0x89, 0x6, 0x9d, 0xf7, 0xa7, 0x7a, 0x87, + 0x6f, 0x8b, 0x7a, 0x8f, 0x19, 0x9d, 0xfb, 0xa7, 0x5, 0x8a, 0x6, 0x32, + 0xf7, 0x99, 0x5, 0x7d, 0x7e, 0x71, 0x81, 0x79, 0x1b, 0xf7, 0xe, 0xfb, + 0x8b, 0x89, 0x8a, 0xfb, 0x49, 0xf7, 0x63, 0x82, 0x7d, 0x76, 0x76, 0x7d, + 0x82, 0x19, 0xf7, 0x63, 0xfb, 0x49, 0x8a, 0x8a, 0x5, 0x13, 0x75, 0xe8, + 0xfb, 0x8b, 0xf7, 0xe, 0x88, 0x7a, 0x81, 0x70, 0x80, 0x7d, 0x19, 0xf7, + 0x99, 0x33, 0x80, 0xa, 0xfb, 0xa7, 0x9d, 0x8f, 0x7a, 0x8b, 0x6f, 0x87, + 0x7a, 0x19, 0xf7, 0xa7, 0x9d, 0x5, 0x8a, 0x7, 0xfb, 0x99, 0x32, 0x96, + 0x7d, 0x95, 0x71, 0x8e, 0x7a, 0x19, 0xf7, 0x8b, 0xf7, 0xe, 0x8c, 0x89, + 0x5, 0x8e, 0xb3, 0x15, 0xa9, 0xa4, 0xa4, 0xa9, 0xa9, 0xa4, 0x72, 0x6d, + 0x6d, 0x72, 0x72, 0x6d, 0x6d, 0x72, 0xa4, 0xa9, 0x1e, 0xe, 0xfb, 0x18, + 0xac, 0x76, 0xf7, 0xc8, 0xa0, 0x89, 0xa0, 0xf7, 0xc8, 0x77, 0x12, 0xf7, + 0xe1, 0xa0, 0x89, 0xa0, 0x13, 0xb8, 0xa4, 0xf7, 0x99, 0x15, 0x47, 0xf7, + 0x8, 0xaa, 0xaa, 0x99, 0x1e, 0xa3, 0x96, 0xa4, 0x99, 0xa4, 0x99, 0xa4, + 0x99, 0xa5, 0x99, 0xa0, 0x97, 0x8, 0x8d, 0x8f, 0x8e, 0x8c, 0x8d, 0x1b, + 0x8f, 0x8d, 0x89, 0x87, 0x89, 0x8a, 0x88, 0x89, 0x87, 0x1f, 0x7f, 0x74, + 0x7c, 0x71, 0x7c, 0x70, 0x8, 0x71, 0x5e, 0x6d, 0x5a, 0x57, 0x1a, 0x6e, + 0x93, 0x61, 0xad, 0xae, 0xa6, 0xbe, 0xa7, 0x92, 0x1e, 0x94, 0xac, 0x8d, + 0xb9, 0xb9, 0xa8, 0x8c, 0xa7, 0xa4, 0x1a, 0x93, 0x8e, 0x90, 0x8f, 0x8e, + 0x8f, 0x88, 0x86, 0x8e, 0x1e, 0x99, 0x75, 0x9a, 0x71, 0x9b, 0x70, 0xa2, + 0x65, 0xa3, 0x64, 0xa1, 0x75, 0xa4, 0x72, 0xc1, 0x6d, 0xa6, 0xa6, 0xa6, + 0xa6, 0x6d, 0xc1, 0x72, 0xa4, 0x73, 0xa3, 0x64, 0xa4, 0x63, 0xa2, 0x72, + 0x9a, 0x72, 0x9a, 0x76, 0x97, 0x8, 0x86, 0x8e, 0x88, 0x8f, 0x8e, 0x1a, + 0x8f, 0x90, 0x8e, 0x93, 0x1e, 0x8c, 0xa5, 0xa9, 0x8b, 0xaa, 0x1b, 0xb8, + 0x8c, 0xb7, 0x8d, 0xaa, 0x93, 0x8, 0xa9, 0x93, 0xbc, 0xa4, 0xaf, 0x1a, + 0x13, 0xd4, 0x99, 0x83, 0x95, 0x7f, 0x92, 0x1e, 0x67, 0xa1, 0x57, 0x7e, + 0x67, 0x7b, 0x73, 0x80, 0x70, 0x7d, 0x71, 0x7c, 0x72, 0x7d, 0x72, 0x7d, + 0x75, 0x7f, 0x8, 0x89, 0x87, 0x88, 0x8a, 0x89, 0x1b, 0x87, 0x89, 0x8d, + 0x8f, 0x8d, 0x8c, 0x8e, 0x8d, 0x8f, 0x1f, 0x97, 0xa2, 0x9a, 0xa5, 0x9a, + 0xa6, 0x9a, 0xa5, 0x99, 0xa6, 0x95, 0xa3, 0x8, 0xaa, 0x99, 0xa4, 0xf7, + 0x1, 0x4b, 0x1b, 0x66, 0x74, 0x5a, 0x6d, 0x82, 0x1f, 0x82, 0x6a, 0x89, + 0x5d, 0x5d, 0x6e, 0x8a, 0x6f, 0x72, 0x1a, 0x83, 0x88, 0x86, 0x87, 0x88, + 0x87, 0x8e, 0x90, 0x88, 0x1e, 0x7d, 0xa1, 0x7c, 0xa5, 0x7b, 0xa6, 0x74, + 0xb1, 0x73, 0xb2, 0x75, 0xa1, 0x72, 0xa4, 0x55, 0xa9, 0x70, 0x70, 0x70, + 0x70, 0xa9, 0x55, 0xa4, 0x72, 0xa3, 0x73, 0xb2, 0x72, 0xb3, 0x74, 0xa4, + 0x7c, 0xa4, 0x7c, 0xa0, 0x7f, 0x8, 0x90, 0x88, 0x8e, 0x87, 0x88, 0x1a, + 0x87, 0x86, 0x88, 0x83, 0x1e, 0x8a, 0x71, 0x6d, 0x8b, 0x6c, 0x1b, 0x5e, + 0x8a, 0x5f, 0x89, 0x6c, 0x83, 0x8, 0x13, 0xd8, 0x6c, 0x83, 0x5b, 0x71, + 0x68, 0x1a, 0xe, 0xfb, 0x17, 0xae, 0x76, 0xf7, 0x64, 0xf7, 0x8, 0x63, + 0xb3, 0x94, 0xf7, 0xa, 0xf7, 0x63, 0x77, 0x12, 0xf7, 0x80, 0xf7, 0xa, + 0x9d, 0xf7, 0xc, 0x13, 0xde, 0xa4, 0xf7, 0x9a, 0x15, 0x6b, 0xbe, 0x83, + 0xa3, 0x1e, 0x13, 0xbe, 0xda, 0xc2, 0xd7, 0xb6, 0x1b, 0x9d, 0x9a, 0x7d, + 0x79, 0x1f, 0x6e, 0x3f, 0x45, 0x3c, 0x1a, 0x73, 0x92, 0x59, 0xac, 0xad, + 0xa7, 0xbd, 0xa7, 0x93, 0x1e, 0x91, 0x9f, 0x8d, 0xa0, 0xa0, 0xa2, 0x88, + 0xa0, 0xa2, 0x1a, 0xa2, 0x8d, 0xa5, 0xaa, 0x97, 0x93, 0x86, 0x81, 0x92, + 0x1e, 0xa8, 0x61, 0x95, 0x61, 0xb3, 0x63, 0x8, 0x77, 0x9f, 0xac, 0x79, + 0xa7, 0x1b, 0xa1, 0x99, 0x97, 0xa2, 0xa7, 0x77, 0xad, 0x78, 0x9e, 0x1f, + 0x64, 0xb2, 0x62, 0x96, 0x5f, 0xa7, 0x8, 0x81, 0x92, 0x84, 0x94, 0x98, + 0x1a, 0xa4, 0xa1, 0x91, 0xa0, 0x1e, 0xa2, 0xa2, 0x89, 0xa2, 0x1b, 0xa2, + 0xa2, 0x8d, 0x91, 0xa1, 0x1f, 0xa7, 0x93, 0xbd, 0xa7, 0xad, 0x1a, 0xac, + 0x59, 0x94, 0x72, 0x1e, 0x3e, 0x44, 0x3c, 0x6c, 0x1b, 0x7a, 0x7d, 0x9a, + 0x9c, 0x1f, 0xa9, 0xd9, 0xd6, 0xd6, 0x1a, 0xa3, 0x82, 0xbd, 0x6b, 0x69, + 0x6d, 0x59, 0x6f, 0x84, 0x1e, 0x84, 0x71, 0x8a, 0x71, 0x70, 0x74, 0x8d, + 0x74, 0x75, 0x1a, 0x79, 0x81, 0x79, 0x77, 0x7e, 0x81, 0x94, 0x95, 0x84, + 0x1e, 0x85, 0x95, 0x85, 0x97, 0x86, 0x96, 0x7a, 0xac, 0x79, 0xac, 0x71, + 0xa5, 0x8, 0x9e, 0x78, 0x6b, 0x9e, 0x6f, 0x1b, 0x74, 0x7d, 0x7d, 0x74, + 0x6f, 0x9e, 0x6b, 0x9e, 0x78, 0x1f, 0xb0, 0x66, 0xb8, 0x7b, 0xb6, 0x71, + 0x8, 0x95, 0x85, 0x94, 0x81, 0x7e, 0x1a, 0x76, 0x74, 0x81, 0x79, 0x1e, + 0x72, 0x73, 0x8d, 0x72, 0x1b, 0x75, 0x74, 0x8a, 0x85, 0x76, 0x1f, 0x6f, + 0x83, 0x57, 0x6e, 0x69, 0x1a, 0xf7, 0xa5, 0xda, 0x15, 0xaa, 0xa4, 0xa4, + 0xaa, 0xaa, 0xa4, 0x72, 0x6c, 0x6c, 0x72, 0x72, 0x6c, 0x6c, 0x72, 0xa4, + 0xaa, 0x1e, 0xe, 0xfb, 0x31, 0x3f, 0xa, 0x12, 0xf7, 0x9d, 0xf7, 0x2f, + 0x2f, 0xa3, 0x13, 0xd0, 0xae, 0xf7, 0x49, 0x15, 0xc2, 0x52, 0xd6, 0x96, + 0xb2, 0xc4, 0x8, 0x13, 0xe0, 0xae, 0xbb, 0xb0, 0xc1, 0xbf, 0xa9, 0x8, + 0x56, 0x7b, 0x5d, 0x7b, 0x63, 0x1e, 0x73, 0x4d, 0x84, 0x76, 0x73, 0x1a, + 0x5b, 0xae, 0x6b, 0xb6, 0x7f, 0x1e, 0x13, 0xd0, 0xb7, 0x97, 0xac, 0xac, + 0xbe, 0x1a, 0x67, 0xf5, 0x7c, 0xae, 0x79, 0xbc, 0x8c, 0xbf, 0x19, 0xbe, + 0x6e, 0xaf, 0x57, 0xad, 0x5d, 0xa7, 0x4a, 0xec, 0x83, 0xbc, 0xc2, 0x8, + 0xd3, 0x6d, 0xb1, 0x48, 0x94, 0x1e, 0x20, 0x9a, 0x60, 0x98, 0x64, 0x9f, + 0xc0, 0xab, 0xc9, 0x92, 0xc7, 0x94, 0x8, 0xd5, 0x94, 0xb0, 0xb0, 0xe1, + 0x1a, 0x4a, 0xb4, 0x4b, 0x7b, 0x5e, 0x53, 0x3b, 0x2b, 0x6f, 0x72, 0x7e, + 0x86, 0x89, 0xcb, 0x98, 0xa8, 0xa3, 0xc4, 0x8, 0x94, 0xa0, 0xa2, 0xc4, + 0xa2, 0x1a, 0xb5, 0x63, 0xaa, 0x67, 0x97, 0x1e, 0x5f, 0x7f, 0x66, 0x6c, + 0x5a, 0x1a, 0x6c, 0x9d, 0x67, 0x96, 0x70, 0x1e, 0x9a, 0x68, 0xa1, 0x53, + 0x50, 0x1a, 0x5e, 0xa0, 0x67, 0xbe, 0x6f, 0xb3, 0x61, 0xc7, 0x50, 0xaf, + 0x38, 0x59, 0x8, 0xfb, 0xc, 0xd0, 0x84, 0xcc, 0x81, 0x1e, 0xbe, 0x84, + 0xbf, 0x81, 0xba, 0x70, 0x67, 0x75, 0x5e, 0x7f, 0x2a, 0x7d, 0x8, 0x45, + 0x82, 0x67, 0x79, 0x31, 0x1a, 0xe, 0xfb, 0x1e, 0x95, 0xc3, 0x87, 0xb4, + 0xef, 0xa7, 0x7c, 0xcc, 0x57, 0xdb, 0xa0, 0x96, 0x89, 0x96, 0x91, 0x77, + 0xaf, 0xda, 0x57, 0xcd, 0x7c, 0xa6, 0xa5, 0x77, 0xea, 0xb3, 0x87, 0xc3, + 0x12, 0x90, 0xcc, 0xb0, 0xab, 0xb2, 0xa4, 0xe6, 0xd1, 0x66, 0xb5, 0x65, + 0xb5, 0x68, 0xcf, 0xe8, 0xa2, 0xb1, 0xac, 0xb1, 0xcb, 0x13, 0xa4, 0x9b, + 0xa7, 0xf7, 0x8, 0x5b, 0xa, 0x62, 0x86, 0x99, 0xfb, 0x12, 0x58, 0xa, + 0x13, 0x64, 0x9b, 0x8f, 0x59, 0xa, 0xad, 0x81, 0xae, 0x7f, 0xab, 0x7f, + 0xa, 0x13, 0x8c, 0x37, 0x97, 0x43, 0xa, 0x71, 0xa, 0x19, 0x4e, 0xa, + 0x13, 0xa4, 0x9b, 0xc7, 0x57, 0xa, 0x69, 0x95, 0x68, 0x3c, 0xa, 0xf7, + 0xa9, 0xf7, 0xbf, 0x15, 0x8f, 0x96, 0x8d, 0x97, 0x97, 0x1a, 0x9e, 0x86, + 0x7b, 0xa, 0x97, 0x1a, 0x13, 0x8c, 0x37, 0xc7, 0xa5, 0xad, 0x9a, 0xa1, + 0xb0, 0xb5, 0x6c, 0x64, 0x68, 0x6a, 0x90, 0x75, 0x80, 0x1e, 0x75, 0x80, + 0x78, 0x74, 0x83, 0x74, 0x8, 0xcf, 0x30, 0x15, 0x92, 0x7, 0xb8, 0x94, + 0x9d, 0xa6, 0x98, 0xa1, 0x8, 0x9b, 0x95, 0x93, 0x99, 0x9b, 0x1b, 0xae, + 0xa2, 0x61, 0x6c, 0x72, 0x7a, 0x60, 0x6d, 0x79, 0x7e, 0xa2, 0x94, 0x7b, + 0x1f, 0x13, 0xa1, 0x9b, 0xc7, 0x95, 0x79, 0x76, 0x90, 0x77, 0x1b, 0x86, + 0x86, 0x8b, 0x8a, 0x86, 0x1f, 0x96, 0xe5, 0x15, 0x7b, 0x67, 0x76, 0x5f, + 0x62, 0x7e, 0x8, 0x13, 0x92, 0x9b, 0xa7, 0x8a, 0x88, 0x87, 0x8a, 0x87, + 0x1b, 0x55, 0xa, 0x47, 0xa, 0x13, 0x52, 0x5b, 0x97, 0x61, 0xa, 0xfb, + 0x78, 0xf7, 0x23, 0x15, 0xa2, 0x77, 0x6e, 0x99, 0x6d, 0x1b, 0x7e, 0x7f, + 0x8b, 0x8d, 0x81, 0x1f, 0x7e, 0x8e, 0x82, 0x94, 0xa2, 0x1a, 0xb6, 0xb3, + 0xac, 0xb4, 0x9e, 0xa4, 0x81, 0x74, 0x1e, 0x7d, 0x83, 0x7e, 0x7c, 0x1a, + 0x72, 0x94, 0x70, 0x9b, 0x78, 0x1e, 0xf7, 0x1d, 0xfb, 0x4b, 0x15, 0x91, + 0x8f, 0x5, 0x74, 0x9f, 0xa8, 0x7d, 0xa9, 0x1b, 0xa9, 0xa6, 0x8e, 0x63, + 0x60, 0x63, 0x6a, 0x62, 0x78, 0x72, 0x95, 0xa2, 0x1f, 0x99, 0x93, 0x98, + 0x9a, 0x1a, 0xa4, 0x82, 0xa6, 0x7b, 0x9e, 0x1e, 0xfb, 0x71, 0xf7, 0x26, + 0x15, 0x8d, 0x9a, 0x9b, 0x8d, 0x9a, 0x1b, 0x13, 0xa1, 0x9b, 0xa7, 0xa2, + 0xc8, 0x7d, 0x6e, 0x1f, 0x13, 0xa4, 0x9b, 0x97, 0x77, 0xa, 0x1e, 0x48, + 0xa, 0x9b, 0xaf, 0xa0, 0xb7, 0xb4, 0x98, 0x8, 0x8c, 0x8e, 0x8f, 0x8c, + 0x8f, 0x1b, 0x5d, 0xa, 0x97, 0xdf, 0x15, 0x66, 0x84, 0x79, 0x78, 0x7e, + 0x78, 0x8, 0x75, 0x7c, 0x84, 0x76, 0x77, 0x1b, 0x68, 0x74, 0xb6, 0xaa, + 0xa4, 0x9c, 0xb5, 0xa9, 0x98, 0x95, 0x7e, 0x7e, 0x9c, 0x1f, 0x80, 0x99, + 0x9e, 0x81, 0xaa, 0x1b, 0x91, 0x90, 0x8b, 0x8c, 0x91, 0x1f, 0xd0, 0x2f, + 0x15, 0x91, 0x88, 0x5, 0x13, 0xa4, 0x9b, 0x8f, 0x87, 0x7f, 0x89, 0x7e, + 0x7f, 0x1a, 0x75, 0x92, 0x7c, 0x92, 0x7e, 0x1e, 0x93, 0x7c, 0x94, 0x80, + 0x80, 0x1a, 0x71, 0x69, 0x7c, 0x75, 0x66, 0x61, 0xaa, 0xb2, 0xae, 0xac, + 0x85, 0xa1, 0x97, 0x1e, 0xa0, 0x96, 0x9f, 0xa2, 0x93, 0xa2, 0x8, 0xe, + 0x7e, 0xaa, 0x76, 0xf7, 0x6f, 0xbf, 0xbc, 0x96, 0x89, 0x96, 0xbc, 0xbf, + 0xbf, 0x77, 0xf7, 0x4f, 0x77, 0x12, 0xf8, 0x1a, 0xb5, 0x65, 0xb5, 0x83, + 0xf7, 0x31, 0xfb, 0x12, 0x95, 0x13, 0xef, 0x20, 0xf7, 0x47, 0x5b, 0xa, + 0x8a, 0x83, 0x8b, 0x83, 0x83, 0x1a, 0x65, 0x9a, 0x22, 0xbe, 0xb7, 0xc1, + 0xbe, 0xac, 0xa4, 0x1e, 0x53, 0xa, 0x8f, 0x9c, 0x8d, 0x9e, 0x63, 0xa, + 0xc2, 0x75, 0xb7, 0x1b, 0xb6, 0x95, 0xaa, 0xb0, 0xad, 0x81, 0xaf, 0x7f, + 0xaa, 0x7f, 0xa, 0x5c, 0xa, 0x77, 0x99, 0x77, 0x39, 0xa, 0x5, 0x13, + 0xee, 0x40, 0x71, 0xa, 0x8, 0xb3, 0x8f, 0x7f, 0xf7, 0x13, 0x62, 0xa, + 0x13, 0xde, 0xa0, 0x52, 0xa, 0x87, 0x7a, 0x89, 0x78, 0x64, 0xa, 0x54, + 0xa1, 0x5f, 0x1b, 0x60, 0x81, 0x6c, 0x66, 0x69, 0x95, 0x67, 0x97, 0x6c, + 0x4a, 0xa, 0x9f, 0x7d, 0x9f, 0x81, 0x8, 0x65, 0x7a, 0x3b, 0x45, 0xa, + 0xf7, 0xfe, 0xf7, 0xbb, 0x15, 0x7a, 0x65, 0x78, 0x63, 0x61, 0x7c, 0x8, + 0x8a, 0x87, 0x88, 0x8a, 0x87, 0x1b, 0x13, 0xef, 0x20, 0x55, 0xa, 0x13, + 0xee, 0x40, 0x47, 0xa, 0x13, 0xde, 0xa0, 0x61, 0xa, 0xfb, 0xc6, 0xf7, + 0x2, 0x15, 0x8d, 0x9a, 0x9b, 0x8d, 0x9a, 0x1b, 0x13, 0xef, 0x20, 0xa2, + 0xc8, 0x7d, 0x6e, 0x77, 0xa, 0x1f, 0x48, 0xa, 0x9c, 0xb1, 0x9e, 0xb3, + 0xb5, 0x9a, 0x8, 0x8c, 0x8f, 0x8e, 0x8c, 0x8f, 0x1b, 0x13, 0xee, 0xa0, + 0x5d, 0xa, 0xe, 0x73, 0x95, 0xb3, 0x97, 0xa9, 0xf7, 0xf, 0xaa, 0x7a, + 0x9c, 0xc1, 0xdb, 0x75, 0x77, 0xeb, 0x9c, 0x7a, 0xaa, 0xb1, 0x77, 0xf4, + 0xa9, 0x97, 0xb3, 0x12, 0xca, 0xb5, 0xc7, 0xa7, 0xb6, 0xa2, 0xbf, 0xb0, + 0x8f, 0x9c, 0x86, 0x9d, 0x7d, 0xdb, 0x7d, 0x9d, 0x86, 0x9c, 0x8f, 0xb0, + 0x66, 0xf7, 0x4b, 0x2d, 0xa2, 0xb6, 0xa7, 0xc7, 0xb5, 0x13, 0xda, 0xff, + 0x14, 0x80, 0xf7, 0x42, 0x5b, 0xa, 0x63, 0x86, 0x99, 0xfb, 0x13, 0x58, + 0xa, 0x59, 0xa, 0xae, 0x81, 0xad, 0x7f, 0xab, 0x7f, 0xa, 0x43, 0xa, + 0x5, 0x13, 0xd6, 0xff, 0x2b, 0x80, 0x71, 0xa, 0x8, 0x4e, 0xa, 0x57, + 0xa, 0x68, 0x95, 0x69, 0x3c, 0xa, 0xf7, 0xa8, 0xf7, 0xc1, 0x15, 0x8f, + 0x96, 0x8d, 0x96, 0x97, 0x1a, 0x9d, 0x87, 0x7b, 0xa, 0x96, 0x1a, 0xab, + 0xbd, 0xa5, 0xa7, 0xb1, 0x9e, 0x5e, 0x6a, 0x71, 0x81, 0x84, 0x73, 0x86, + 0x1e, 0x6b, 0x84, 0x6f, 0x6e, 0x80, 0x6d, 0x8, 0xd3, 0x2f, 0x15, 0x8a, + 0x92, 0xad, 0x90, 0xa5, 0xa1, 0x9a, 0xa9, 0x19, 0x92, 0x99, 0x90, 0x95, + 0x9b, 0x8e, 0x8, 0x8c, 0x8e, 0x8d, 0x8b, 0x8e, 0x1b, 0xab, 0xb8, 0x6c, + 0x69, 0x6e, 0x66, 0x5f, 0x6d, 0x7f, 0x82, 0x98, 0x97, 0x7c, 0x1f, 0x97, + 0x7d, 0x78, 0x96, 0x6a, 0x1b, 0x85, 0x85, 0x8a, 0x8a, 0x85, 0x1f, 0xfb, + 0x55, 0xd3, 0x15, 0x13, 0xe9, 0xff, 0x2b, 0x80, 0xa3, 0x78, 0x6c, 0x98, + 0x6c, 0x85, 0x86, 0x8b, 0x85, 0x1b, 0x6b, 0x83, 0xa7, 0xa6, 0xb0, 0x9b, + 0xaa, 0xb4, 0xa2, 0xb9, 0x7f, 0x6e, 0x1f, 0x7c, 0x83, 0x7c, 0x7b, 0x1a, + 0x73, 0x94, 0x71, 0x9b, 0x78, 0x1e, 0xfb, 0x13, 0xfb, 0x90, 0x15, 0xaa, + 0xca, 0xa8, 0xc1, 0xcf, 0xaa, 0x8a, 0x8d, 0x18, 0x43, 0x94, 0x5d, 0xb6, + 0x5b, 0xbd, 0x8, 0x8c, 0x9d, 0x9e, 0x8c, 0x9d, 0x1b, 0xbe, 0xb7, 0x82, + 0x6d, 0xb5, 0x1f, 0x8c, 0x8d, 0x5, 0x80, 0xa4, 0x87, 0xa7, 0xa7, 0x1a, + 0xb2, 0x95, 0xb0, 0x96, 0xb1, 0x1e, 0xad, 0x58, 0xaa, 0x5a, 0x4b, 0x1a, + 0x84, 0x8b, 0x84, 0x8a, 0x84, 0x1e, 0x8d, 0x6, 0xb7, 0xc5, 0xc8, 0x9e, + 0xce, 0x9b, 0x6c, 0x4c, 0x6e, 0x55, 0x47, 0x6c, 0x8c, 0x89, 0x18, 0xd3, + 0x82, 0xb9, 0x60, 0xbb, 0x59, 0x8, 0x8a, 0x79, 0x78, 0x8a, 0x79, 0x1b, + 0x58, 0x5f, 0x94, 0xa9, 0x61, 0x1f, 0x8a, 0x89, 0x5, 0x96, 0x72, 0x8f, + 0x6f, 0x6f, 0x1a, 0x13, 0xea, 0xfe, 0x9b, 0x80, 0x64, 0x81, 0x66, 0x80, + 0x65, 0x1e, 0x69, 0xbe, 0x6c, 0xbc, 0xcb, 0x1a, 0x92, 0x8b, 0x92, 0x8c, + 0x92, 0x1e, 0x89, 0x6, 0x5f, 0x51, 0x4e, 0x78, 0x48, 0x7b, 0x8, 0xf7, + 0xa3, 0xcf, 0x15, 0x90, 0x8f, 0x5, 0x73, 0x9e, 0xaa, 0x7e, 0xaa, 0x91, + 0x90, 0x8b, 0x91, 0x1b, 0xab, 0x93, 0x6f, 0x70, 0x66, 0x7b, 0x6c, 0x62, + 0x74, 0x5d, 0x97, 0xa8, 0x1f, 0x9a, 0x93, 0x9a, 0x9b, 0x1a, 0xa3, 0x82, + 0xa5, 0x7b, 0x9e, 0x1e, 0xfb, 0x4f, 0xd0, 0x15, 0x69, 0x86, 0x71, 0x75, + 0x7c, 0x6d, 0x84, 0x7d, 0x86, 0x81, 0x7b, 0x88, 0x8, 0x6a, 0x80, 0x57, + 0xb6, 0xab, 0x1a, 0xa8, 0xb0, 0xb7, 0xa9, 0x94, 0x92, 0x84, 0x82, 0x94, + 0x1e, 0x7d, 0x9a, 0xa0, 0x79, 0xb4, 0x1b, 0x91, 0x91, 0x8c, 0x8c, 0x91, + 0x1f, 0xd3, 0x2f, 0x15, 0x13, 0xda, 0xfe, 0xab, 0x80, 0x91, 0x88, 0x5, + 0x87, 0x80, 0x89, 0x80, 0x7f, 0x1a, 0x75, 0x92, 0x7b, 0x92, 0x7d, 0x1e, + 0x93, 0x7c, 0x93, 0x80, 0x82, 0x1a, 0x6b, 0x59, 0x71, 0x6f, 0x65, 0x78, + 0xb8, 0xac, 0xa5, 0x95, 0x92, 0xa3, 0x90, 0x1e, 0xab, 0x92, 0xa7, 0xa8, + 0x96, 0xa9, 0x8, 0x13, 0xda, 0xfe, 0x4b, 0x80, 0x8f, 0xf7, 0x0, 0x15, + 0x75, 0x9d, 0x79, 0xa1, 0xa1, 0x9d, 0x9d, 0xa1, 0xa1, 0x79, 0x9d, 0x75, + 0x75, 0x79, 0x79, 0x75, 0x1e, 0xe, 0xfb, 0xed, 0xa0, 0x76, 0xf8, 0x36, + 0xea, 0xf7, 0x47, 0x77, 0x1, 0xf7, 0x5c, 0xeb, 0x3, 0xf7, 0x5c, 0x16, + 0xeb, 0xf8, 0x36, 0xf7, 0x38, 0xea, 0xfb, 0x38, 0xf7, 0x47, 0x2b, 0xfb, + 0x47, 0xfb, 0x39, 0x2c, 0xf7, 0x39, 0x6, 0xe, 0x59, 0x83, 0x56, 0xa, + 0x8d, 0x77, 0xb4, 0x5e, 0xa, 0x12, 0xb9, 0x56, 0xa, 0xa2, 0x5e, 0xa, + 0x13, 0xb2, 0x9a, 0x96, 0x96, 0xa0, 0xb9, 0xf8, 0x19, 0x15, 0x57, 0xb2, + 0x70, 0xbb, 0xa3, 0xa3, 0x92, 0x90, 0xa2, 0x1e, 0x90, 0xa6, 0xa7, 0x8f, + 0xa6, 0x1b, 0x92, 0xa1, 0x8b, 0x81, 0x1f, 0x13, 0x74, 0x9a, 0x95, 0xa, + 0xa0, 0x84, 0x7a, 0x82, 0x85, 0x89, 0x1e, 0x74, 0x81, 0x73, 0x83, 0x72, + 0x84, 0x8, 0x56, 0x7d, 0x3f, 0x80, 0x43, 0x1a, 0x61, 0xaf, 0x69, 0xb5, + 0xbf, 0xa5, 0xbe, 0xb0, 0xa4, 0x1e, 0x98, 0x9f, 0x9a, 0x9d, 0x9b, 0x9d, + 0x8, 0x92, 0x91, 0x99, 0x9b, 0x95, 0x1b, 0x13, 0xb4, 0x9a, 0x96, 0x56, + 0x60, 0x8f, 0x8f, 0x88, 0x86, 0x85, 0x87, 0x81, 0x89, 0x85, 0x1f, 0x82, + 0x73, 0x80, 0x74, 0x7e, 0x75, 0x8, 0x78, 0x6a, 0x71, 0x6a, 0x63, 0x1a, + 0x61, 0xac, 0x6a, 0xb5, 0xbf, 0xa6, 0xb2, 0xbb, 0xa3, 0x84, 0xa3, 0x86, + 0xa2, 0x1e, 0x86, 0xa6, 0x87, 0xa7, 0xa6, 0x1a, 0x13, 0xb2, 0x9a, 0x96, + 0x56, 0x88, 0x92, 0x8b, 0xa1, 0x95, 0x1e, 0x13, 0xa8, 0x2a, 0x96, 0x56, + 0xa0, 0x92, 0x94, 0x7a, 0x85, 0x8d, 0x1f, 0x95, 0x74, 0x93, 0x73, 0x92, + 0x72, 0x8, 0x65, 0xa, 0x56, 0x99, 0x96, 0x3f, 0xd3, 0x1b, 0x70, 0xa, + 0xb5, 0xad, 0xaf, 0xb5, 0xbf, 0x58, 0xa5, 0x66, 0xa4, 0x1f, 0x77, 0x98, + 0x79, 0x9a, 0x79, 0x9b, 0x8, 0x13, 0xb2, 0x9a, 0x96, 0x56, 0x90, 0x86, + 0x90, 0x79, 0x9b, 0x93, 0x1a, 0x13, 0xb2, 0x99, 0x96, 0x56, 0xa0, 0x8f, + 0x8f, 0x90, 0x8f, 0x91, 0x95, 0x87, 0x89, 0x91, 0x1e, 0xa3, 0x82, 0xa2, + 0x80, 0xa1, 0x7e, 0x8, 0x78, 0xac, 0xac, 0x71, 0xb3, 0x1b, 0xb5, 0xac, + 0xac, 0xb5, 0xbf, 0x64, 0xa6, 0x5b, 0x1f, 0x70, 0xa, 0x73, 0x73, 0x84, + 0x86, 0x74, 0x1f, 0x86, 0x70, 0x6f, 0x87, 0x70, 0x1b, 0x13, 0xb2, 0x9a, + 0x36, 0x56, 0xa0, 0x84, 0x75, 0x8b, 0x95, 0x1f, 0x13, 0xb2, 0x9a, 0x96, + 0x60, 0xa0, 0x92, 0x9c, 0x94, 0x91, 0x8d, 0x1e, 0xa2, 0x95, 0xa3, 0x93, + 0xa4, 0x92, 0x8, 0xc0, 0x99, 0xd7, 0x96, 0xd3, 0x1a, 0x6f, 0xa, 0xb5, + 0x67, 0xad, 0x61, 0x57, 0x71, 0x58, 0x66, 0x72, 0x1e, 0x7e, 0x77, 0x7c, + 0x79, 0x7b, 0x79, 0x8, 0x13, 0xb2, 0x9a, 0x56, 0x56, 0xa0, 0x84, 0x85, + 0x7d, 0x7b, 0x81, 0x1b, 0x87, 0x87, 0x8e, 0x90, 0x91, 0x8f, 0x95, 0x8d, + 0x91, 0x1f, 0x94, 0xa3, 0x96, 0xa2, 0x98, 0xa1, 0x8, 0x9e, 0xac, 0xa5, + 0xac, 0xb3, 0x1a, 0xb5, 0x6a, 0xac, 0x61, 0x57, 0x70, 0x64, 0x5b, 0x1e, + 0x6f, 0xa, 0x73, 0x92, 0x73, 0x90, 0x74, 0x1e, 0x90, 0x70, 0x8f, 0x6f, + 0x70, 0x1a, 0x84, 0x8b, 0x75, 0x81, 0x1e, 0x13, 0xb3, 0x2, 0x8e, 0x96, + 0xa0, 0x84, 0x82, 0x9c, 0x91, 0x89, 0x1f, 0x81, 0xa2, 0x83, 0xa3, 0x84, + 0xa4, 0x8, 0xc0, 0x7d, 0x80, 0xd7, 0x43, 0x1b, 0x61, 0x69, 0x67, 0x61, + 0x57, 0xbe, 0x71, 0xb0, 0x72, 0x1f, 0x9f, 0x7e, 0x9d, 0x7c, 0x9d, 0x7b, + 0x8, 0x91, 0x85, 0x9c, 0x7c, 0x82, 0x1a, 0x86, 0x87, 0x88, 0x87, 0x85, + 0x81, 0x8f, 0x8d, 0x85, 0x1e, 0x73, 0x94, 0x74, 0x96, 0x75, 0x98, 0x8, + 0x9e, 0x6a, 0x6a, 0xa5, 0x63, 0x1b, 0x61, 0x6a, 0x6a, 0x61, 0x1f, 0xf8, + 0x2c, 0x8c, 0x15, 0xa3, 0xa0, 0xa2, 0xa0, 0x9e, 0xa4, 0x8, 0x13, 0xb2, + 0x99, 0x96, 0x56, 0xa0, 0xa4, 0x9e, 0xa4, 0xb2, 0xaf, 0x1b, 0x13, 0xb2, + 0x9a, 0x96, 0x56, 0x90, 0x9e, 0x9c, 0x7a, 0x78, 0x65, 0x51, 0x7a, 0x6e, + 0x81, 0x1f, 0x6c, 0x81, 0x6e, 0x7d, 0x6f, 0x7c, 0x8, 0x4f, 0xb0, 0x15, + 0x8d, 0xaa, 0x8c, 0xab, 0x87, 0xaa, 0x8, 0x89, 0x9b, 0x88, 0x9c, 0x9b, + 0x1a, 0x13, 0xb2, 0x9a, 0x36, 0x56, 0xa0, 0xa5, 0x94, 0xaf, 0xab, 0x1e, + 0x70, 0xa, 0xa4, 0x97, 0x7b, 0x73, 0x6d, 0x7e, 0x76, 0x7e, 0x71, 0x1f, + 0x7d, 0x6e, 0x7f, 0x6d, 0x82, 0x6c, 0x8, 0xc5, 0x2d, 0x15, 0x8d, 0x96, + 0xaa, 0x89, 0xab, 0x8a, 0xaa, 0x8f, 0x19, 0x8d, 0x9b, 0x9c, 0x8e, 0x9b, + 0x1b, 0x13, 0xb4, 0x9a, 0x96, 0x56, 0x88, 0xa5, 0xaf, 0x82, 0x6b, 0x72, + 0x7b, 0x7f, 0x73, 0x6d, 0x76, 0x98, 0x98, 0x71, 0x1f, 0x6e, 0x99, 0x6d, + 0x97, 0x6c, 0x94, 0x8, 0xfb, 0x12, 0xd9, 0x15, 0x76, 0xa3, 0x76, 0xa2, + 0x72, 0x9e, 0x8, 0x72, 0x9e, 0x64, 0xa4, 0xaf, 0x1a, 0x13, 0xb2, 0x9a, + 0x56, 0x56, 0xa0, 0x9e, 0x9c, 0x9c, 0x9e, 0xb1, 0x9c, 0x51, 0x6e, 0x95, + 0x1e, 0x95, 0x6c, 0x99, 0x6e, 0x9a, 0x6f, 0x8, 0x13, 0xb3, 0x2, 0x96, + 0x56, 0xa0, 0x89, 0x2a, 0x15, 0x8e, 0xa0, 0x5, 0x65, 0xa, 0x7f, 0x9d, + 0x9c, 0x98, 0x5, 0x13, 0xb2, 0x9a, 0x96, 0x60, 0xa0, 0x90, 0xa0, 0xa0, + 0x88, 0x9d, 0x97, 0x98, 0x7a, 0x5, 0x13, 0xa8, 0x2a, 0x96, 0x56, 0xa0, + 0xa0, 0x86, 0x5, 0x65, 0xa, 0x88, 0x76, 0x97, 0x79, 0x7a, 0x7e, 0x5, + 0x13, 0xb2, 0x9a, 0x95, 0xa, 0xa0, 0x86, 0x76, 0x76, 0x8e, 0x79, 0x7f, + 0x7e, 0x9c, 0x5, 0x13, 0xb3, 0x2, 0x96, 0x56, 0xa0, 0xca, 0x6b, 0x15, + 0x94, 0x92, 0xa0, 0x73, 0xa0, 0x74, 0xa4, 0x78, 0x19, 0x13, 0x72, 0x9a, + 0x96, 0x56, 0x60, 0xa4, 0x78, 0xb2, 0x72, 0x67, 0x1a, 0x78, 0x7a, 0x7a, + 0x78, 0x65, 0x7a, 0xc5, 0xa8, 0x81, 0x1e, 0x81, 0xaa, 0x7d, 0xa8, 0x7c, + 0xa7, 0x8, 0xfb, 0xb, 0xd5, 0x15, 0x65, 0xa, 0x8c, 0x7b, 0x7b, 0x8c, + 0x7b, 0x1b, 0x7c, 0x7b, 0x8a, 0x89, 0x7c, 0x1f, 0x89, 0x7b, 0x7a, 0x88, + 0x7b, 0x1b, 0x71, 0x67, 0x94, 0xab, 0x1f, 0x6f, 0xa, 0xa4, 0x9b, 0x97, + 0xa3, 0xa9, 0xa0, 0x7e, 0x7e, 0xa5, 0x1e, 0xa8, 0x7d, 0xa9, 0x7f, 0xaa, + 0x82, 0x8, 0xc5, 0x2d, 0x15, 0x96, 0x89, 0x89, 0x6c, 0x8a, 0x6b, 0x8f, + 0x6c, 0x19, 0x8d, 0x7b, 0x8e, 0x7a, 0x7b, 0x1a, 0x13, 0xb2, 0x9a, 0x8e, + 0x96, 0xa0, 0x71, 0x82, 0x67, 0x6b, 0x72, 0x7f, 0x9b, 0xa3, 0xa9, 0x98, + 0xa0, 0x98, 0xa5, 0x1e, 0x99, 0xa8, 0x97, 0xa9, 0x94, 0xaa, 0x8, 0x5a, + 0xae, 0x15, 0x92, 0x82, 0x73, 0x76, 0x74, 0x76, 0x78, 0x72, 0x19, 0x72, + 0x78, 0x72, 0x64, 0x67, 0x1b, 0x78, 0x7a, 0x9c, 0x9e, 0xb1, 0xc5, 0x9c, + 0xa8, 0x95, 0x1f, 0xaa, 0x95, 0xa8, 0x99, 0xa7, 0x9a, 0x8, 0xe, 0x59, + 0x94, 0x76, 0xa9, 0x76, 0xf7, 0x6d, 0x9e, 0xf7, 0x69, 0x9e, 0xf7, 0x7a, + 0x77, 0x12, 0xf7, 0xa3, 0x9b, 0xf7, 0x6b, 0x9c, 0x13, 0xbe, 0xf7, 0x2c, + 0xdf, 0x15, 0xf7, 0x55, 0xf7, 0x16, 0xb8, 0xfb, 0x76, 0x5, 0x13, 0x7e, + 0x9c, 0x94, 0x5, 0x87, 0xb9, 0xf7, 0x6e, 0x8b, 0x1f, 0xf7, 0x50, 0xfb, + 0x11, 0x98, 0x91, 0xfb, 0x17, 0xf7, 0x54, 0xf7, 0x75, 0xb9, 0x91, 0x98, + 0xfb, 0x7b, 0xb7, 0xf7, 0x11, 0xf7, 0x4f, 0x86, 0x9c, 0xfb, 0x56, 0xfb, + 0x16, 0x5d, 0xf7, 0x7a, 0x7e, 0x85, 0x5e, 0xfb, 0x75, 0xfb, 0x4e, 0xf7, + 0x10, 0x7c, 0x85, 0xf7, 0x17, 0xfb, 0x54, 0xfb, 0x71, 0x5f, 0x80, 0x7d, + 0xf7, 0x7c, 0x5e, 0xfb, 0x10, 0xfb, 0x4b, 0x5, 0xf7, 0x20, 0xf7, 0x80, + 0x15, 0xc6, 0xbc, 0xba, 0xc6, 0xc6, 0xbb, 0x5c, 0x50, 0x50, 0x5a, 0x5b, + 0x50, 0x50, 0x5b, 0xbb, 0xc6, 0x1e, 0xe, 0xfb, 0x18, 0x97, 0xc3, 0x92, + 0xd6, 0xae, 0xac, 0x6a, 0xe6, 0x77, 0x9f, 0x97, 0xc1, 0x64, 0x9f, 0x9a, + 0xc1, 0x68, 0x9f, 0xa6, 0x9f, 0x77, 0xe6, 0x6a, 0xac, 0x94, 0x77, 0xb0, + 0x77, 0xa8, 0xd6, 0x92, 0xc3, 0x12, 0xa0, 0xd1, 0x8d, 0xb4, 0xc8, 0xa1, + 0x85, 0xcd, 0x73, 0x9f, 0xa2, 0xb5, 0x65, 0xa5, 0x80, 0xaa, 0x99, 0xaa, + 0x74, 0xb5, 0x6d, 0xa5, 0xa2, 0xcd, 0x4d, 0x9f, 0xaf, 0xa1, 0xc8, 0xb4, + 0x8d, 0xd1, 0x13, 0xec, 0xd7, 0xec, 0x33, 0xf8, 0x8, 0xf8, 0x30, 0x15, + 0x8e, 0x8f, 0x92, 0x8d, 0x8c, 0x1f, 0x95, 0x9c, 0x98, 0x9a, 0x9a, 0x98, + 0x98, 0x97, 0x9a, 0x94, 0x9b, 0x92, 0x8, 0x8d, 0x8c, 0x90, 0x8e, 0x8e, + 0x1a, 0x13, 0xea, 0xcb, 0xea, 0x53, 0x8e, 0x85, 0x8b, 0x89, 0x63, 0x56, + 0x67, 0x60, 0x89, 0x8b, 0x80, 0x8f, 0x1e, 0xc0, 0x58, 0x15, 0x87, 0x95, + 0x8b, 0x8d, 0x9f, 0x9e, 0x87, 0x85, 0x9e, 0x1e, 0x9c, 0x85, 0x9a, 0x83, + 0x99, 0x81, 0x8, 0x89, 0x8d, 0x8e, 0x8a, 0x8e, 0x1b, 0x8d, 0x8c, 0x8b, + 0x8d, 0x8e, 0x89, 0x8f, 0x89, 0x8d, 0x1f, 0xa5, 0x7a, 0x68, 0x9f, 0x6c, + 0x1b, 0x83, 0x6b, 0x85, 0x81, 0x1f, 0xfb, 0x13, 0xa9, 0x15, 0x8d, 0x8b, + 0x8c, 0x8d, 0x1f, 0x13, 0xec, 0xd7, 0xec, 0x93, 0x8e, 0x89, 0x8f, 0x89, + 0x8e, 0x1e, 0x81, 0x9c, 0x85, 0x9f, 0x87, 0x9e, 0x8, 0x89, 0x96, 0x8a, + 0x96, 0x97, 0x92, 0x8c, 0x91, 0x92, 0x1a, 0x8d, 0x8b, 0x90, 0x88, 0x80, + 0x84, 0x5e, 0x82, 0x70, 0x95, 0x6e, 0xa3, 0x7c, 0x1e, 0x89, 0x8e, 0x90, + 0x88, 0x8e, 0x1b, 0x13, 0xec, 0xd7, 0xd4, 0x33, 0xfb, 0xa9, 0xfb, 0x4, + 0x15, 0x4c, 0xcf, 0x6c, 0xc1, 0xcb, 0xc2, 0xb0, 0xb7, 0xb6, 0x1e, 0x93, + 0x93, 0x95, 0x92, 0x97, 0x1b, 0x9b, 0x94, 0x7e, 0x7c, 0x1f, 0x13, 0xeb, + 0x57, 0xec, 0x8f, 0x73, 0x80, 0x6c, 0x7c, 0x79, 0x1e, 0x78, 0x74, 0x72, + 0x7e, 0x6e, 0x87, 0x8, 0x69, 0x86, 0x7b, 0x71, 0x6a, 0x1a, 0x63, 0xa9, + 0x73, 0xb2, 0xca, 0xbc, 0xcc, 0xc4, 0x95, 0x1e, 0x8e, 0x9a, 0x8c, 0x9a, + 0x9b, 0x1a, 0xa7, 0x85, 0xa5, 0x84, 0xa6, 0x1e, 0x8a, 0x90, 0x8a, 0x91, + 0x91, 0x1a, 0x9b, 0x94, 0x98, 0x9c, 0x1e, 0x13, 0xeb, 0x27, 0xe9, 0x53, + 0x91, 0x8f, 0x8a, 0x88, 0x90, 0x1f, 0xac, 0x76, 0xa3, 0x66, 0x63, 0x6f, + 0x7d, 0x78, 0x77, 0x1a, 0x6a, 0xb0, 0x6d, 0xab, 0xb7, 0xa4, 0xbb, 0xb2, + 0xb7, 0x74, 0xb8, 0x69, 0xa7, 0x1e, 0x67, 0xaa, 0x69, 0x98, 0x5e, 0x97, + 0x8, 0x7d, 0x8f, 0x7a, 0x94, 0x9c, 0x1a, 0xa9, 0xbe, 0x94, 0xa2, 0x1e, + 0xda, 0x8e, 0x49, 0xbb, 0x1b, 0xae, 0xaf, 0xa5, 0xb0, 0xca, 0x47, 0xaa, + 0x55, 0x4b, 0x54, 0x66, 0x5f, 0x60, 0x1f, 0x13, 0xec, 0xd7, 0xea, 0x93, + 0x83, 0x83, 0x81, 0x84, 0x7f, 0x1b, 0x7b, 0x82, 0x98, 0x9a, 0x1f, 0x13, + 0xec, 0xd7, 0xe9, 0x93, 0xa3, 0x96, 0xaa, 0x9a, 0x9d, 0x1e, 0x9e, 0xa2, + 0xa4, 0x98, 0xa8, 0x8f, 0x8, 0xad, 0x90, 0x9b, 0xa5, 0xac, 0x1a, 0xb3, + 0x6d, 0xa3, 0x64, 0x4c, 0x5a, 0x4a, 0x52, 0x81, 0x1e, 0x88, 0x7c, 0x8a, + 0x7c, 0x7b, 0x1a, 0x6f, 0x91, 0x71, 0x92, 0x70, 0x1e, 0x8c, 0x86, 0x8c, + 0x85, 0x85, 0x1a, 0x7b, 0x82, 0x7e, 0x7a, 0x1e, 0x13, 0xd4, 0xd7, 0xd4, + 0x93, 0x85, 0x87, 0x8c, 0x8e, 0x86, 0x1f, 0x6a, 0xa0, 0x73, 0xb0, 0xb3, + 0xa7, 0x99, 0x9e, 0x9f, 0x1a, 0xac, 0x66, 0xa9, 0x6b, 0x5f, 0x72, 0x5b, + 0x64, 0x5f, 0xa2, 0x5e, 0xad, 0x6f, 0x1e, 0xaf, 0x6c, 0xad, 0x7e, 0xb8, + 0x7f, 0x8, 0x99, 0x87, 0x9c, 0x82, 0x7a, 0x1a, 0x6d, 0x58, 0x82, 0x74, + 0x56, 0x78, 0xa9, 0x9f, 0x76, 0x1e, 0x94, 0x81, 0x80, 0x92, 0x7b, 0x1b, + 0x68, 0x67, 0x71, 0x66, 0x1f, 0x13, 0xec, 0xd7, 0xec, 0x33, 0xf8, 0x15, + 0x92, 0x15, 0x13, 0xec, 0xd7, 0xec, 0x4f, 0x88, 0x8d, 0x87, 0x8d, 0x88, + 0x1e, 0x95, 0x7a, 0x91, 0x77, 0x8f, 0x78, 0x8, 0x8d, 0x80, 0x8c, 0x80, + 0x7f, 0x84, 0x8a, 0x85, 0x84, 0x1a, 0x89, 0x8b, 0x86, 0x8e, 0x96, 0x92, + 0xb8, 0x94, 0xa6, 0x81, 0xa8, 0x73, 0x9a, 0x1e, 0x8d, 0x88, 0x86, 0x8e, + 0x88, 0x1b, 0x13, 0xea, 0xd7, 0xd4, 0x33, 0x89, 0x8b, 0x8a, 0x89, 0x1f, + 0xfb, 0x8c, 0xca, 0x15, 0x71, 0x9c, 0xae, 0x77, 0xaa, 0x1b, 0x93, 0xab, + 0x91, 0x95, 0x8f, 0x81, 0x8b, 0x89, 0x77, 0x78, 0x8f, 0x91, 0x78, 0x1f, + 0x7a, 0x91, 0x7c, 0x93, 0x7d, 0x95, 0x8, 0x8d, 0x89, 0x88, 0x8c, 0x88, + 0x1b, 0x89, 0x8a, 0x8b, 0x89, 0x88, 0x8d, 0x87, 0x8d, 0x89, 0x1f, 0xda, + 0xfb, 0x3e, 0x15, 0x88, 0x91, 0x8b, 0x8d, 0xb3, 0xc0, 0xaf, 0xb6, 0x8d, + 0x8b, 0x96, 0x87, 0x1e, 0x13, 0xeb, 0x57, 0xea, 0x33, 0x88, 0x87, 0x84, + 0x89, 0x8a, 0x1f, 0x81, 0x7a, 0x7e, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7c, + 0x82, 0x7b, 0x84, 0x8, 0x89, 0x8a, 0x86, 0x88, 0x88, 0x1a, 0xf7, 0x68, + 0xf7, 0x88, 0x15, 0xa6, 0xa8, 0xb3, 0x97, 0xb2, 0x1b, 0xa3, 0xad, 0x81, + 0x6d, 0x79, 0x7f, 0x7f, 0x79, 0x82, 0x84, 0x8e, 0x90, 0x84, 0x1f, 0x6d, + 0xa3, 0x5e, 0x91, 0x67, 0x7f, 0x8, 0xfb, 0xe, 0xba, 0x15, 0x89, 0x95, + 0x8a, 0x94, 0x95, 0x1a, 0xb0, 0xa3, 0xdc, 0xb9, 0x9b, 0x9c, 0x7e, 0x7a, + 0x7e, 0x7f, 0x7e, 0x80, 0x86, 0x1e, 0x6a, 0x7e, 0x69, 0x65, 0x86, 0x67, + 0x8, 0xf7, 0x1f, 0xfb, 0x3a, 0x15, 0xb4, 0x7e, 0xc5, 0x58, 0x5c, 0x1a, + 0x77, 0x7f, 0x7a, 0x76, 0x79, 0x7f, 0x9c, 0x9c, 0x1e, 0x13, 0xec, 0xd7, + 0xec, 0x2f, 0x91, 0x8d, 0x91, 0x91, 0x1a, 0xaa, 0x7b, 0xb5, 0x72, 0x9e, + 0x1e, 0xfb, 0x81, 0xe3, 0x15, 0x62, 0x98, 0x51, 0xbe, 0xba, 0x1a, 0x9f, + 0x97, 0x9c, 0xa0, 0x9d, 0x97, 0x7a, 0x7a, 0x1e, 0x85, 0x89, 0x85, 0x85, + 0x1a, 0x6c, 0x9b, 0x61, 0xa4, 0x78, 0x1e, 0xf7, 0x21, 0xfb, 0x3f, 0x15, + 0x8d, 0x81, 0x8c, 0x82, 0x81, 0x1a, 0x66, 0x73, 0x3a, 0x5d, 0x1e, 0x13, + 0xec, 0xd7, 0xd2, 0x93, 0x7b, 0x7a, 0x98, 0x9c, 0x98, 0x97, 0x98, 0x96, + 0x90, 0x1f, 0xac, 0x98, 0xad, 0xb1, 0x90, 0xaf, 0x8, 0xfb, 0x7, 0xb4, + 0x15, 0x70, 0x6e, 0x63, 0x7f, 0x64, 0x1b, 0x73, 0x69, 0x95, 0xa9, 0x9d, + 0x97, 0x97, 0x9d, 0x94, 0x92, 0x88, 0x86, 0x92, 0x1f, 0x7a, 0xa0, 0xa7, + 0x84, 0xa6, 0x1b, 0x97, 0x97, 0x8c, 0x90, 0x96, 0x1f, 0xe, 0xfb, 0x2c, + 0x99, 0x76, 0xf9, 0x4a, 0x77, 0x1, 0xf7, 0xda, 0xaf, 0x3, 0xd1, 0xf7, + 0xd, 0x15, 0xae, 0x81, 0xa3, 0xdf, 0xc3, 0xab, 0x70, 0x2b, 0xae, 0x81, + 0xb0, 0xf7, 0x18, 0xdc, 0xba, 0x9a, 0x82, 0x5, 0x2e, 0x7, 0x2b, 0x29, + 0xa5, 0x71, 0xd1, 0xd3, 0x5, 0x4a, 0x7, 0x4e, 0x4c, 0xa5, 0x72, 0xc0, + 0xc1, 0xc0, 0x55, 0xa5, 0xa4, 0x4e, 0xca, 0x5, 0xcc, 0x7, 0xd1, 0x43, + 0xa5, 0xa5, 0x2b, 0xed, 0x5, 0xe8, 0x7, 0x9a, 0x94, 0xdc, 0x5c, 0xb0, + 0xfb, 0x18, 0xae, 0x95, 0x70, 0xeb, 0xc3, 0x6b, 0xa3, 0x37, 0xae, 0x95, + 0x77, 0xd4, 0xd4, 0x9d, 0x82, 0xae, 0x36, 0x76, 0x53, 0xac, 0xec, 0xa3, + 0x82, 0xaf, 0xfb, 0x19, 0x69, 0x3a, 0xb9, 0x5, 0x9d, 0x7, 0xdc, 0xb9, + 0xf7, 0x19, 0x69, 0x94, 0xaf, 0x2a, 0xa3, 0xc3, 0xac, 0xe0, 0x76, 0x94, + 0xae, 0x42, 0x9e, 0x9f, 0xd3, 0x68, 0x95, 0x73, 0x37, 0x53, 0x6b, 0xa6, + 0xeb, 0x68, 0x95, 0x66, 0xfb, 0x18, 0x3a, 0x5c, 0x7c, 0x94, 0x5, 0xe8, + 0x7, 0xeb, 0xed, 0x71, 0xa5, 0x45, 0x43, 0x5, 0xcc, 0x7, 0xc8, 0xca, + 0x71, 0xa4, 0x56, 0x55, 0x56, 0xc1, 0x71, 0x72, 0xc8, 0x4c, 0x5, 0x4a, + 0x7, 0x45, 0xd3, 0x71, 0x71, 0xeb, 0x29, 0x5, 0x2e, 0x7, 0x7c, 0x82, + 0x3a, 0xba, 0x66, 0xf7, 0x18, 0x68, 0x81, 0xa6, 0x2b, 0x53, 0xab, 0x73, + 0xdf, 0x68, 0x81, 0x9f, 0x43, 0x42, 0x78, 0x94, 0x68, 0xe0, 0xa0, 0xc3, + 0x6a, 0x2a, 0x73, 0x94, 0x67, 0xf7, 0x19, 0xad, 0xdc, 0x5d, 0x5, 0x79, + 0x7, 0x3a, 0x5d, 0xfb, 0x19, 0xad, 0x82, 0x67, 0xec, 0x73, 0x53, 0x6a, + 0x36, 0xa0, 0x82, 0x68, 0xd4, 0x78, 0x5, 0xe, 0xfb, 0x23, 0x9e, 0x76, + 0xf9, 0x40, 0x77, 0x12, 0xf7, 0x71, 0xb0, 0xd0, 0xb3, 0x64, 0xb3, 0xcf, + 0xb0, 0x67, 0xb0, 0x13, 0xf2, 0xdb, 0xf7, 0xc, 0x15, 0xb1, 0x7f, 0xa3, + 0xe5, 0xdd, 0xba, 0x86, 0x27, 0xa4, 0x7d, 0x5, 0x13, 0xea, 0xdf, 0xc1, + 0x5, 0x2d, 0x7, 0x49, 0x49, 0xa8, 0x70, 0xc4, 0xc4, 0xc4, 0x52, 0xa8, + 0xa6, 0x49, 0xcd, 0x5, 0xe9, 0x7, 0xdf, 0x55, 0xa4, 0x99, 0x86, 0xef, + 0xdd, 0x5c, 0xa3, 0x31, 0xb1, 0x97, 0x76, 0xd9, 0xd9, 0x9f, 0x82, 0xb2, + 0x31, 0x73, 0x39, 0xba, 0xe4, 0xb9, 0x5, 0xa7, 0x7, 0x32, 0xb9, 0xdd, + 0xba, 0xe5, 0x73, 0x94, 0xb2, 0x3d, 0xa0, 0xa0, 0xd8, 0x65, 0x97, 0x73, + 0x31, 0x39, 0x5c, 0x90, 0xef, 0x72, 0x99, 0x37, 0x55, 0x5, 0xe9, 0x7, + 0xcd, 0xcd, 0x6e, 0xa6, 0x52, 0x52, 0x52, 0xc4, 0x6e, 0x70, 0xcd, 0x49, + 0x5, 0x2d, 0x7, 0x37, 0xc1, 0x72, 0x7d, 0x90, 0x27, 0x39, 0xba, 0x73, + 0xe5, 0x65, 0x7f, 0xa0, 0x3e, 0x3d, 0x76, 0x94, 0x64, 0xe5, 0xa3, 0xdd, + 0x5c, 0x32, 0x5d, 0x5, 0x6f, 0x7, 0xe4, 0x5d, 0x39, 0x5c, 0x31, 0xa3, + 0x82, 0x64, 0xd9, 0x76, 0x5, 0xf7, 0x9f, 0xf7, 0x46, 0x15, 0xd9, 0x7, + 0xd2, 0xb7, 0x5, 0x13, 0xf4, 0x88, 0x38, 0x5, 0x13, 0xea, 0x5b, 0x41, + 0x15, 0xcf, 0xb2, 0xd5, 0x64, 0x41, 0x64, 0x5, 0xfb, 0x14, 0xd5, 0x15, + 0x47, 0xb2, 0x88, 0xde, 0xd2, 0x5f, 0x5, 0xb3, 0xfb, 0x76, 0x15, 0xd9, + 0x7, 0x13, 0xf4, 0xcf, 0x64, 0x8e, 0x38, 0x5, 0x13, 0xea, 0xfb, 0x5b, + 0xf7, 0xa, 0x15, 0x41, 0xb2, 0xd5, 0xb2, 0xcf, 0x64, 0x5, 0x58, 0xfb, + 0x31, 0x15, 0x8e, 0xde, 0xcf, 0xb2, 0x5, 0x3d, 0x7, 0xe, 0xfb, 0x2a, + 0x9b, 0x76, 0xf9, 0x46, 0x77, 0x1, 0xf7, 0xd2, 0xbf, 0x3, 0xd3, 0xf7, + 0xe, 0x15, 0xbd, 0x7d, 0xa3, 0xe2, 0xac, 0x9e, 0x74, 0x35, 0xbc, 0x7e, + 0xb0, 0xf7, 0x1c, 0xd4, 0xb5, 0x8e, 0x8a, 0x5, 0x36, 0x7, 0x28, 0x27, + 0xaf, 0x67, 0xca, 0xca, 0x5, 0x65, 0x7, 0x4b, 0x4b, 0xb0, 0x66, 0xc0, + 0xbf, 0xc0, 0x57, 0xb0, 0xb0, 0x4b, 0xcb, 0x5, 0xb1, 0x7, 0xca, 0x4c, + 0xaf, 0xaf, 0x28, 0xef, 0x5, 0xe0, 0x7, 0x8e, 0x8c, 0xd4, 0x61, 0xb0, + 0xfb, 0x1c, 0xbc, 0x98, 0x74, 0xe1, 0xac, 0x78, 0xa3, 0x34, 0xbd, 0x99, + 0x79, 0xd3, 0xd2, 0x9e, 0x7e, 0xbe, 0x33, 0x74, 0x6a, 0x9e, 0xe1, 0xa2, + 0x7e, 0xbc, 0xfb, 0x1c, 0x67, 0x42, 0xb6, 0x75, 0xa, 0xd4, 0xb6, 0xf7, + 0x1c, 0x67, 0x98, 0xbc, 0x35, 0xa2, 0xac, 0x9e, 0xe3, 0x74, 0x98, 0xbe, + 0x44, 0x9f, 0x9d, 0xd2, 0x59, 0x99, 0x73, 0x34, 0x6a, 0x78, 0xa2, 0xe1, + 0x5a, 0x98, 0x66, 0xfb, 0x1c, 0x42, 0x61, 0x88, 0x8c, 0x5, 0xe0, 0x7, + 0xee, 0xef, 0x67, 0xaf, 0x4c, 0x4c, 0x5, 0xb1, 0x7, 0xcb, 0xcb, 0x66, + 0xb0, 0x56, 0x57, 0x56, 0xbf, 0x66, 0x66, 0xcb, 0x4b, 0x5, 0x65, 0x7, + 0x4c, 0xca, 0x67, 0x67, 0xee, 0x27, 0x5, 0x36, 0x7, 0x88, 0x8a, 0x42, + 0xb5, 0x66, 0xf7, 0x1c, 0x5a, 0x7e, 0xa2, 0x35, 0x6a, 0x9e, 0x73, 0xe2, + 0x59, 0x7d, 0x9d, 0x44, 0x44, 0x77, 0x98, 0x58, 0xe3, 0xa2, 0xac, 0x78, + 0x35, 0x74, 0x98, 0x5a, 0xf7, 0x1c, 0xaf, 0xd4, 0x60, 0x80, 0xa, 0x42, + 0x60, 0xfb, 0x1c, 0xaf, 0x7e, 0x5a, 0xe1, 0x74, 0x6a, 0x78, 0x33, 0xa2, + 0x7e, 0x58, 0xd2, 0x77, 0x5, 0xe, 0x56, 0x97, 0x76, 0xa5, 0x76, 0xf7, + 0xdc, 0xaa, 0xf7, 0xe2, 0x77, 0x12, 0xf8, 0xd, 0xaa, 0x13, 0xb8, 0xf8, + 0x30, 0xf8, 0x13, 0x15, 0x94, 0x86, 0xf7, 0x3d, 0xf7, 0x8f, 0x76, 0x8f, + 0x81, 0x91, 0x7d, 0x9b, 0x19, 0xfb, 0x1, 0xfb, 0xbc, 0x15, 0xf7, 0xa4, + 0xf7, 0x19, 0x7b, 0x99, 0x85, 0x95, 0x87, 0xa0, 0x19, 0xfb, 0x8f, 0xfb, + 0x3d, 0x5, 0x60, 0x9e, 0x15, 0x95, 0x6, 0xa0, 0xf7, 0xc2, 0x5, 0x88, + 0x82, 0x83, 0x89, 0x83, 0x1b, 0x83, 0x83, 0x8c, 0x8f, 0x80, 0x1f, 0xd4, + 0xfb, 0xf6, 0x15, 0xf7, 0xc2, 0x76, 0x5, 0x87, 0x95, 0x8a, 0x93, 0x93, + 0x1a, 0x93, 0x8c, 0x93, 0x8f, 0x95, 0x1e, 0xfb, 0xc2, 0x76, 0x5, 0x40, + 0xac, 0x15, 0x94, 0x90, 0xfb, 0x19, 0xf7, 0xa4, 0x7d, 0x7b, 0x81, 0x85, + 0x76, 0x87, 0x19, 0xf7, 0x7f, 0xfb, 0xd1, 0x15, 0xf7, 0x8f, 0xfb, 0x3d, + 0x8f, 0xa0, 0x91, 0x95, 0x9b, 0x99, 0x19, 0xfb, 0xa4, 0xf7, 0x19, 0x5, + 0x35, 0xb1, 0x15, 0x90, 0x94, 0xfb, 0x8f, 0xf7, 0x3d, 0x87, 0x76, 0x85, + 0x81, 0x7b, 0x7d, 0x19, 0xf7, 0xe2, 0xfb, 0x57, 0x15, 0xf7, 0x19, 0xfb, + 0xa4, 0x99, 0x9b, 0x95, 0x91, 0xa0, 0x8f, 0x19, 0xfb, 0x3d, 0xf7, 0x8f, + 0x5, 0xfc, 0xd, 0x97, 0x15, 0xf7, 0xc2, 0xa0, 0x5, 0x95, 0x7, 0xfb, + 0xc2, 0xa0, 0x5, 0x8f, 0x80, 0x8c, 0x84, 0x82, 0x1a, 0x83, 0x89, 0x83, + 0x88, 0x82, 0x1e, 0xf7, 0xd7, 0xfb, 0xd7, 0x15, 0x13, 0x78, 0x8e, 0x95, + 0x93, 0x8d, 0x93, 0x1b, 0x13, 0xb8, 0x93, 0x93, 0x89, 0x88, 0x95, 0x1f, + 0x76, 0xf7, 0xc2, 0x5, 0x81, 0x6, 0xfb, 0xb0, 0xfb, 0x2a, 0x15, 0xf7, + 0x8f, 0xf7, 0x3d, 0x86, 0x94, 0xfb, 0xa4, 0xfb, 0x19, 0x9b, 0x7d, 0x91, + 0x81, 0x8f, 0x76, 0x19, 0xe7, 0x2f, 0x15, 0xa0, 0x87, 0x95, 0x85, 0x99, + 0x7b, 0xf7, 0x19, 0xf7, 0xa4, 0x18, 0x82, 0x90, 0x5, 0xe, 0x57, 0x97, + 0x76, 0xa5, 0x76, 0xf9, 0x49, 0x77, 0x12, 0xb7, 0xf9, 0x4e, 0x13, 0xb0, + 0xf8, 0x35, 0xf8, 0x7, 0x15, 0xf7, 0x55, 0xf7, 0x8b, 0x78, 0x8e, 0x55, + 0xaa, 0x7f, 0x9a, 0x19, 0xfb, 0x9, 0xfb, 0xb7, 0x5, 0xa0, 0x76, 0x15, + 0xf7, 0xb7, 0xf7, 0x9, 0x7c, 0x97, 0x6c, 0xc1, 0x88, 0x9e, 0x19, 0xfb, + 0x8b, 0xfb, 0x55, 0x5, 0x67, 0x9a, 0x15, 0x95, 0x6, 0xb7, 0xf7, 0xca, + 0x5, 0x87, 0x82, 0x77, 0x8a, 0x77, 0x1b, 0x77, 0x77, 0x8c, 0x8f, 0x82, + 0x1f, 0xe3, 0xfb, 0xf6, 0x15, 0xf7, 0xca, 0x5f, 0x5, 0x87, 0x94, 0x8a, + 0xa0, 0x9f, 0x1a, 0x9f, 0x8d, 0x9e, 0x8e, 0x94, 0x1e, 0xfb, 0xca, 0x5f, + 0x5, 0x4c, 0xa5, 0x15, 0x94, 0x90, 0xfb, 0x9, 0xf7, 0xb7, 0x7f, 0x7c, + 0x55, 0x6c, 0x78, 0x88, 0x19, 0xf7, 0x8c, 0xfb, 0xc2, 0x15, 0xf7, 0x8b, + 0xfb, 0x55, 0x8e, 0x9e, 0xaa, 0xc1, 0x9a, 0x97, 0x19, 0xfb, 0xb7, 0xf7, + 0x9, 0x5, 0x43, 0xa9, 0x15, 0x90, 0x94, 0xfb, 0x8b, 0xf7, 0x55, 0x88, + 0x78, 0x6c, 0x55, 0x7c, 0x7f, 0x19, 0xf8, 0x5f, 0xfc, 0x5f, 0x15, 0x97, + 0x9a, 0xc1, 0xaa, 0x9e, 0x8e, 0xfb, 0x55, 0xf7, 0x8b, 0x18, 0x82, 0x86, + 0x5, 0xfc, 0x0, 0x7e, 0x15, 0xf7, 0xca, 0xb7, 0x5, 0x95, 0x7, 0xfb, + 0xca, 0xb7, 0x5, 0x8f, 0x82, 0x8c, 0x76, 0x77, 0x1a, 0x77, 0x89, 0x78, + 0x88, 0x82, 0x1e, 0xf7, 0xc0, 0xfb, 0xc0, 0x15, 0x13, 0x70, 0x8e, 0x94, + 0x9e, 0x8d, 0x9f, 0x1b, 0x13, 0xb0, 0x9f, 0xa0, 0x8a, 0x87, 0x94, 0x1f, + 0x5f, 0xf7, 0xca, 0x5, 0x81, 0x6, 0xfb, 0xa5, 0xfb, 0x46, 0x15, 0xf7, + 0x8b, 0xf7, 0x55, 0x86, 0x94, 0xfb, 0xb7, 0xfb, 0x9, 0x9a, 0x7f, 0xaa, + 0x55, 0x8e, 0x78, 0x19, 0xc8, 0x4e, 0x15, 0x9e, 0x88, 0xc1, 0x6c, 0x97, + 0x7c, 0xf7, 0x9, 0xf7, 0xb7, 0x18, 0x82, 0x90, 0x5, 0xe, 0xfb, 0x12, + 0x92, 0x76, 0xf7, 0x1f, 0xf7, 0x43, 0xe6, 0xf7, 0x42, 0xf7, 0x15, 0x77, + 0x12, 0xae, 0xf7, 0x45, 0xc5, 0xf7, 0x42, 0x22, 0xae, 0xf7, 0x14, 0xf7, + 0x44, 0x13, 0xfb, 0xf7, 0xe7, 0xf7, 0x35, 0x15, 0x66, 0x7f, 0x6b, 0x6b, + 0x61, 0x1a, 0x59, 0xaf, 0x64, 0xbe, 0xbd, 0xb0, 0xb3, 0xbc, 0xb6, 0x6b, + 0xaa, 0x65, 0x97, 0x1e, 0xf7, 0x30, 0x7, 0xf7, 0x18, 0x3e, 0x5, 0x89, + 0x83, 0x89, 0x83, 0x82, 0x1a, 0x5a, 0xb3, 0x62, 0xbc, 0x1e, 0x13, 0xfd, + 0xbd, 0xb0, 0xb1, 0xbc, 0xba, 0x65, 0xb4, 0x5a, 0x6f, 0x76, 0x7f, 0x78, + 0x77, 0x1f, 0x13, 0xfb, 0xfb, 0x16, 0xd7, 0xf7, 0x16, 0xd7, 0x5, 0x76, + 0xa0, 0x9f, 0x82, 0xa9, 0x1b, 0xbc, 0xaf, 0xb6, 0xba, 0xbd, 0x62, 0xad, + 0x5b, 0x5e, 0x61, 0x63, 0x5e, 0x81, 0x8c, 0x80, 0x8e, 0x83, 0x1f, 0xfb, + 0x18, 0x3d, 0x5, 0xf7, 0x31, 0x7, 0xb1, 0x96, 0xab, 0xab, 0xb5, 0x1a, + 0xbd, 0x66, 0xb3, 0x59, 0x59, 0x66, 0x63, 0x59, 0x61, 0xaa, 0x6b, 0xb1, + 0x80, 0x1e, 0xfb, 0x31, 0x7, 0xfb, 0x18, 0xd9, 0x5, 0x8e, 0x92, 0x8d, + 0x93, 0x95, 0x1a, 0xbc, 0x63, 0xb3, 0x5a, 0x1e, 0x13, 0xfd, 0x59, 0x65, + 0x66, 0x59, 0x5c, 0xb2, 0x62, 0xbb, 0xa8, 0xa0, 0x97, 0x9e, 0x9f, 0x1f, + 0x13, 0xfb, 0xf7, 0x16, 0x3f, 0xfb, 0x16, 0x3f, 0x5, 0xa1, 0x76, 0x77, + 0x94, 0x6c, 0x1b, 0x5a, 0x67, 0x5f, 0x5c, 0x59, 0xb5, 0x69, 0xbb, 0xb7, + 0xb6, 0xb3, 0xb8, 0x96, 0x7e, 0x99, 0x93, 0x90, 0x1f, 0xf7, 0x18, 0xd8, + 0x5, 0xe, 0x5b, 0x97, 0x76, 0xf7, 0x83, 0xf7, 0xf, 0x71, 0xf7, 0xf, + 0xf7, 0x83, 0x77, 0x12, 0xf7, 0xb2, 0xf7, 0xf, 0x71, 0xf7, 0xf, 0x13, + 0xd4, 0xf8, 0x39, 0xf7, 0xf1, 0x15, 0xbf, 0xaf, 0xbb, 0x9f, 0xc7, 0x9b, + 0xa8, 0x93, 0xa9, 0x92, 0xa4, 0x9d, 0x9a, 0x95, 0x8b, 0x9e, 0x8c, 0x9e, + 0x8c, 0x95, 0x8b, 0x96, 0x8f, 0x94, 0x8, 0x8c, 0x8d, 0x8b, 0x8d, 0x8d, + 0x1a, 0x93, 0x84, 0x8c, 0x84, 0x81, 0x81, 0x8e, 0x8e, 0x82, 0x1e, 0x8e, + 0x81, 0x81, 0x8f, 0x81, 0x1b, 0x6f, 0x67, 0x56, 0x76, 0x7c, 0x1f, 0x6f, + 0x63, 0x6e, 0x68, 0x65, 0x6c, 0x82, 0x84, 0x82, 0x85, 0x82, 0x85, 0x8, + 0x78, 0x91, 0x15, 0x98, 0x88, 0x96, 0xc9, 0xa0, 0xbb, 0xaa, 0xc1, 0x19, + 0x98, 0xa2, 0xa2, 0xb3, 0xa6, 0x1a, 0x98, 0x83, 0x93, 0x83, 0x94, 0x1e, + 0x81, 0x96, 0x83, 0x94, 0x84, 0x98, 0x8, 0x8e, 0x8a, 0x88, 0x90, 0x87, + 0x1b, 0x86, 0x8b, 0x89, 0x88, 0x87, 0x1f, 0x7f, 0x80, 0x80, 0x87, 0x82, + 0x86, 0x8, 0x77, 0x81, 0x7e, 0x85, 0x61, 0x1a, 0x75, 0x8f, 0x76, 0x8f, + 0x76, 0x1e, 0x91, 0x6b, 0x8f, 0x6b, 0x6a, 0x1a, 0x71, 0x89, 0x71, 0x86, + 0x71, 0x1e, 0xa5, 0x65, 0x15, 0xc9, 0x80, 0xbb, 0x76, 0xc1, 0x6c, 0x8, + 0x7e, 0xa2, 0xb3, 0x74, 0xa6, 0x1b, 0x98, 0x94, 0x93, 0x93, 0x93, 0x1f, + 0x96, 0x95, 0x94, 0x93, 0x98, 0x92, 0x8, 0x8e, 0x8c, 0x90, 0x8e, 0x8f, + 0x1a, 0x90, 0x89, 0x8b, 0x88, 0x8f, 0x1e, 0x82, 0x96, 0x85, 0x94, 0x87, + 0x94, 0x8, 0xa1, 0x80, 0x87, 0x99, 0x5f, 0x1b, 0x75, 0x76, 0x87, 0x87, + 0x76, 0x1f, 0x85, 0x6b, 0x6b, 0x87, 0x6a, 0x1b, 0x71, 0x71, 0x8d, 0x90, + 0x71, 0x1f, 0x5b, 0x9a, 0x15, 0x97, 0x93, 0x67, 0xbf, 0x77, 0xbb, 0x7b, + 0xc7, 0x19, 0x83, 0xa8, 0x84, 0xa9, 0x79, 0xa4, 0x82, 0x98, 0x7c, 0x8d, + 0x7b, 0x8c, 0x7e, 0x8c, 0x7e, 0x8b, 0x7f, 0x8f, 0x8, 0x8c, 0x89, 0x89, + 0x8b, 0x89, 0x1b, 0x83, 0x8a, 0x84, 0x84, 0x80, 0x88, 0x80, 0x87, 0x81, + 0x1f, 0x88, 0x82, 0x88, 0x82, 0x82, 0x1a, 0x6f, 0xc0, 0x67, 0xa0, 0x7c, + 0x1e, 0xb3, 0x6f, 0xae, 0x6e, 0xaa, 0x65, 0x92, 0x82, 0x91, 0x82, 0x91, + 0x82, 0x8, 0xa9, 0x61, 0x15, 0xaf, 0x57, 0x9f, 0x5b, 0x9b, 0x4f, 0x93, + 0x6e, 0x92, 0x6d, 0x9d, 0x72, 0x94, 0x7d, 0x9c, 0x8a, 0x9c, 0x8a, 0x97, + 0x8a, 0x97, 0x8b, 0x96, 0x87, 0x8, 0x8a, 0x8d, 0x8d, 0x8b, 0x8d, 0x1b, + 0x93, 0x8c, 0x92, 0x92, 0x94, 0x8d, 0x93, 0x8e, 0x94, 0x1f, 0x8f, 0x96, + 0x8f, 0x96, 0x96, 0x1a, 0xa7, 0x56, 0xaf, 0x76, 0x9a, 0x1e, 0x63, 0xa7, + 0x68, 0xa8, 0x6c, 0xb1, 0x84, 0x94, 0x85, 0x94, 0x85, 0x94, 0x8, 0x5b, + 0x9a, 0x15, 0x8e, 0x98, 0x4d, 0x96, 0x5b, 0xa0, 0x55, 0xaa, 0x19, 0x13, + 0xb8, 0x98, 0x74, 0x63, 0xa2, 0x70, 0x1b, 0x7e, 0x82, 0x83, 0x83, 0x83, + 0x1f, 0x80, 0x81, 0x82, 0x83, 0x7e, 0x84, 0x8, 0x88, 0x8a, 0x86, 0x88, + 0x87, 0x1a, 0x86, 0x8d, 0x8b, 0x8e, 0x87, 0x1e, 0x95, 0x80, 0x91, 0x80, + 0x8f, 0x82, 0x8, 0x76, 0x95, 0x90, 0x7e, 0xb6, 0x1b, 0xa1, 0xa0, 0x8f, + 0x8f, 0xa0, 0x1f, 0x91, 0xab, 0xab, 0x8f, 0xac, 0x1b, 0xa5, 0xa5, 0x89, + 0x86, 0xa5, 0x1f, 0x9b, 0x75, 0x15, 0x80, 0x4d, 0x76, 0x5b, 0x6c, 0x55, + 0x8, 0x7e, 0x74, 0x74, 0x63, 0x70, 0x1a, 0x7e, 0x93, 0x82, 0x93, 0x83, + 0x1e, 0x95, 0x80, 0x93, 0x82, 0x92, 0x7e, 0x8, 0x88, 0x8c, 0x8e, 0x86, + 0x8f, 0x1b, 0x90, 0x8b, 0x8d, 0x8e, 0x8f, 0x1f, 0x94, 0x93, 0x93, 0x90, + 0x93, 0x8f, 0x8, 0xa3, 0x97, 0x9b, 0x8d, 0xba, 0x1a, 0xa1, 0x87, 0xa0, + 0x87, 0xa0, 0x1e, 0x85, 0xab, 0x87, 0xab, 0xac, 0x1a, 0xa5, 0x8d, 0xa5, + 0x90, 0xa5, 0x1e, 0x78, 0x91, 0x15, 0x83, 0x97, 0x57, 0x67, 0x5b, 0x77, + 0x4f, 0x7b, 0x19, 0x6e, 0x83, 0x6d, 0x84, 0x72, 0x79, 0x7e, 0x82, 0x89, + 0x7b, 0x8a, 0x7a, 0x8a, 0x7f, 0x8b, 0x7e, 0x87, 0x80, 0x8, 0x8a, 0x89, + 0x8b, 0x89, 0x89, 0x1a, 0x83, 0x92, 0x8a, 0x92, 0x95, 0x95, 0x88, 0x88, + 0x95, 0x1e, 0x88, 0x95, 0x94, 0x87, 0x95, 0x1b, 0xa7, 0xaf, 0xc0, 0xa0, + 0x9a, 0x1f, 0xa7, 0xb3, 0xa8, 0xae, 0xb1, 0xaa, 0x94, 0x92, 0x94, 0x91, + 0x94, 0x91, 0x8, 0xe, 0xfb, 0xb3, 0x8b, 0xcd, 0xf7, 0xb6, 0xd1, 0xe7, + 0xa4, 0xf7, 0xf, 0xa5, 0x1, 0xae, 0xa4, 0xf7, 0xf, 0xa6, 0xe8, 0xd3, + 0xd4, 0xd0, 0x3, 0xf7, 0x4b, 0xc8, 0x15, 0xe4, 0x4e, 0x5, 0xf2, 0xf7, + 0xf8, 0xf7, 0x22, 0xf7, 0x9, 0x6, 0x4b, 0xd1, 0x5, 0x3d, 0xd7, 0x6, + 0x46, 0xd4, 0x5, 0xfb, 0xf, 0xfb, 0x29, 0xfb, 0x28, 0xfb, 0xd, 0x6, + 0xe6, 0x49, 0x5, 0xc4, 0x6, 0xa6, 0xfb, 0xb6, 0x15, 0xf7, 0xfc, 0xfb, + 0x2a, 0xe7, 0xf7, 0x2a, 0xf7, 0x28, 0xe8, 0xfb, 0x28, 0xf7, 0x25, 0x2f, + 0xfb, 0x25, 0xfb, 0xfc, 0x7, 0xe, 0x55, 0x3a, 0xa, 0xf7, 0xdf, 0xf7, + 0xc9, 0x15, 0xfb, 0x33, 0xfb, 0x3, 0x72, 0x7a, 0x7d, 0x7a, 0x86, 0x73, + 0x19, 0x69, 0x84, 0xa6, 0x6d, 0xad, 0x1b, 0xa3, 0x9a, 0xa2, 0xaa, 0xa4, + 0x1f, 0xf7, 0x2, 0xf7, 0x2e, 0x9e, 0x83, 0x64, 0xfb, 0x66, 0x5, 0x65, + 0x84, 0xa1, 0x61, 0xb6, 0x1b, 0xba, 0x9b, 0xb4, 0xb2, 0x83, 0x1f, 0x65, + 0xf7, 0x66, 0x9d, 0x93, 0xf7, 0x4, 0xfb, 0x32, 0x5, 0x70, 0x9f, 0x98, + 0x74, 0xb1, 0x1b, 0xac, 0xa1, 0xa9, 0xaa, 0xa4, 0x7d, 0x99, 0x77, 0x98, + 0x1f, 0xfb, 0x46, 0xf7, 0xc, 0x93, 0x9f, 0xf7, 0x51, 0x6d, 0x5, 0xb4, + 0x85, 0xc5, 0x86, 0xc5, 0x1a, 0xca, 0x51, 0x89, 0x60, 0x84, 0x1e, 0xfb, + 0x4f, 0x67, 0x83, 0x9f, 0xf7, 0x44, 0xf7, 0xd, 0x5, 0x8b, 0xab, 0xa7, + 0xa4, 0x1a, 0xa9, 0x72, 0xa9, 0x6c, 0x6c, 0x7e, 0x7c, 0x74, 0x7b, 0x1e, + 0xfb, 0xa, 0xfb, 0x40, 0x79, 0x94, 0xab, 0xf7, 0x4d, 0x5, 0xb5, 0x92, + 0x8a, 0xc8, 0x50, 0x1b, 0x5d, 0x78, 0x69, 0x46, 0x97, 0x1f, 0xb1, 0xfb, + 0x4d, 0x78, 0x82, 0xfb, 0x2, 0xf7, 0x29, 0x5, 0xa1, 0x7b, 0x79, 0xab, + 0x6c, 0x1b, 0x6a, 0x6f, 0x74, 0x69, 0x65, 0xa7, 0x7e, 0xa6, 0x78, 0x1f, + 0xf7, 0x30, 0x26, 0x83, 0x78, 0xfb, 0x4e, 0xaf, 0x5, 0x60, 0x93, 0x51, + 0x8a, 0x4e, 0x1a, 0x4e, 0xc6, 0x94, 0xb4, 0x91, 0x1e, 0xf7, 0x4f, 0xa7, + 0x5, 0xe, 0x5b, 0x3a, 0xa, 0xae, 0xf9, 0x66, 0x3, 0x3b, 0xa, 0xfb, + 0x5c, 0xf7, 0x37, 0xfb, 0x34, 0xf7, 0x5b, 0xf7, 0x5a, 0xf7, 0x36, 0xf7, + 0x36, 0xf7, 0x5a, 0xf7, 0x5a, 0xfb, 0x36, 0xf7, 0x35, 0xfb, 0x5a, 0xfb, + 0x5b, 0xfb, 0x37, 0xfb, 0x33, 0xfb, 0x5c, 0x1e, 0xe, 0xad, 0x7d, 0xae, + 0xf9, 0x1c, 0xaf, 0x1, 0xae, 0x9f, 0xf9, 0x1e, 0xf7, 0x19, 0x3, 0xae, + 0xf7, 0xec, 0x15, 0xfb, 0x75, 0xf7, 0x49, 0xfb, 0x19, 0xf7, 0x6a, 0xf7, + 0x6b, 0xf7, 0x55, 0xf7, 0x13, 0xf7, 0x7b, 0xf7, 0x77, 0xfb, 0x52, 0xf7, + 0x1a, 0xfb, 0x69, 0xfb, 0x69, 0xfb, 0x4f, 0xfb, 0x1b, 0xfb, 0x76, 0x1e, + 0x9f, 0x16, 0xf7, 0x48, 0xf7, 0x28, 0x41, 0xa, 0xf7, 0x46, 0xf7, 0x25, + 0xfb, 0x27, 0xfb, 0x46, 0xfb, 0x46, 0xfb, 0x25, 0x3e, 0xa, 0xfb, 0x49, + 0xfb, 0x25, 0xf7, 0x23, 0xf7, 0x48, 0x1e, 0xe, 0x3d, 0x3d, 0xa, 0xf9, + 0x47, 0x7a, 0xa, 0xf9, 0x47, 0xf9, 0x48, 0xfd, 0x47, 0x6, 0xe, 0x3e, + 0x8b, 0xf7, 0x12, 0x6e, 0xa8, 0xf8, 0xac, 0xa9, 0x12, 0xae, 0xa8, 0xf8, + 0xa9, 0xa8, 0x13, 0x78, 0xae, 0xec, 0x15, 0xf7, 0x0, 0x6, 0x13, 0xb8, + 0x2a, 0xf8, 0xdc, 0xf8, 0xde, 0x26, 0xf5, 0xfc, 0xe3, 0x7, 0x13, 0x78, + 0xa8, 0xfc, 0xca, 0x15, 0xf8, 0xac, 0xf8, 0xa9, 0xfc, 0xac, 0x7, 0xe, + 0x3b, 0x8b, 0xf7, 0xf, 0xf8, 0xad, 0xab, 0x1, 0xae, 0xaa, 0xf8, 0xa8, + 0xf7, 0x13, 0x3, 0xae, 0xf7, 0x7, 0x15, 0xf7, 0xa, 0xfb, 0x7, 0x5, + 0xf8, 0xd0, 0xf8, 0xc7, 0x6, 0xfb, 0xd, 0xf7, 0x15, 0x5, 0xfc, 0xcd, + 0x6, 0xaa, 0xfc, 0xcd, 0x6d, 0xa, 0xc0, 0xa0, 0x76, 0xf9, 0x55, 0x54, + 0xa, 0xf9, 0xcb, 0x7a, 0xa, 0xf9, 0xcb, 0x6, 0xfc, 0x30, 0xf9, 0x55, + 0x5, 0xe, 0xc0, 0x92, 0x76, 0xf9, 0x56, 0x54, 0xa, 0xf9, 0xcb, 0x3, + 0xf8, 0x52, 0x7d, 0x15, 0xf8, 0x30, 0xf9, 0x56, 0x5, 0xfd, 0xcb, 0x6, + 0xe, 0x3a, 0xa, 0xa3, 0xf9, 0x63, 0x3, 0x3b, 0xa, 0xf7, 0xfb, 0xfb, + 0xfc, 0xf7, 0xfc, 0xf7, 0xfc, 0xfb, 0xfc, 0xf7, 0xfb, 0x5, 0xe, 0x54, + 0x3f, 0xa, 0x12, 0xaf, 0xf9, 0x5d, 0xfc, 0x8e, 0xf7, 0xc6, 0x13, 0xd0, + 0xf8, 0x1c, 0xf8, 0x21, 0x15, 0xf7, 0x2d, 0xf7, 0x2d, 0xfb, 0x2d, 0xf7, + 0x2f, 0xfb, 0x2d, 0xfb, 0x2e, 0x5, 0xf7, 0x5f, 0xfb, 0x5f, 0x15, 0xf7, + 0x2c, 0xfb, 0x2c, 0x5, 0x13, 0xe0, 0xf7, 0x2f, 0xf7, 0x25, 0xfb, 0x2d, + 0xf7, 0x35, 0x5, 0xfb, 0xf9, 0xfb, 0xfb, 0x15, 0xf7, 0x2d, 0xfb, 0x31, + 0xf7, 0x30, 0xf7, 0x31, 0xfb, 0x30, 0xf7, 0x2f, 0x5, 0xfb, 0x5f, 0x25, + 0x15, 0xf7, 0x2d, 0xf7, 0x2c, 0xfb, 0x2f, 0xf7, 0x2e, 0xfb, 0x2b, 0xfb, + 0x2e, 0x5, 0xe, 0xfb, 0xc2, 0x8b, 0xa4, 0xf7, 0xdb, 0xa2, 0xaa, 0xda, + 0xaa, 0xa4, 0xf7, 0x12, 0xa4, 0x1, 0xae, 0xa3, 0xf7, 0x6, 0xa4, 0xaa, + 0xdc, 0xa9, 0xa3, 0xf7, 0x6, 0xa4, 0x3, 0xf7, 0x41, 0x16, 0xf7, 0x53, + 0xf7, 0xf4, 0xf7, 0x1f, 0xf7, 0x51, 0xfb, 0x1f, 0xf7, 0x2b, 0xfb, 0x53, + 0xfb, 0x2b, 0xfb, 0x1e, 0xfb, 0x51, 0xf7, 0x1e, 0x6, 0xa4, 0xfb, 0xdb, + 0x15, 0xf7, 0xf2, 0xfb, 0x1f, 0xf7, 0x21, 0xf7, 0x1f, 0xf7, 0x2b, 0xf7, + 0x22, 0xfb, 0x2b, 0xf7, 0x1e, 0xfb, 0x21, 0xfb, 0x1e, 0xfb, 0xf2, 0x7, + 0xfb, 0x3, 0xa9, 0x15, 0xdc, 0xf7, 0xf3, 0xf7, 0x1d, 0xda, 0xfb, 0x1d, + 0xf7, 0x2a, 0x3a, 0xfb, 0x2a, 0xfb, 0x1f, 0x3c, 0xf7, 0x1f, 0x6, 0xe, + 0xfc, 0x25, 0x3a, 0xa, 0xae, 0xf8, 0x4, 0x3, 0xae, 0x7d, 0x15, 0xf7, + 0x66, 0xf7, 0x32, 0xf7, 0x35, 0xf7, 0x5c, 0xf7, 0x5c, 0xfb, 0x37, 0xf7, + 0x32, 0xfb, 0x61, 0x1f, 0xfd, 0x63, 0x7, 0xe, 0xfd, 0x51, 0x3d, 0xa, + 0xd0, 0x7a, 0xa, 0xd0, 0xf9, 0x48, 0x46, 0x6, 0xe, 0xfc, 0xc6, 0x5a, + 0xa, 0xae, 0x16, 0xf7, 0x63, 0xf9, 0x48, 0xfb, 0x63, 0x6, 0xe, 0xfc, + 0x3c, 0x3d, 0xa, 0xf7, 0xed, 0x7a, 0xa, 0xf7, 0xed, 0xf9, 0x48, 0xfb, + 0xed, 0x6, 0xe, 0x66, 0xa, 0xb9, 0x64, 0x15, 0x96, 0x7e, 0xf7, 0x38, + 0xf7, 0x56, 0xf7, 0x42, 0xf7, 0x27, 0xd9, 0xbb, 0x19, 0x30, 0xc2, 0xfb, + 0x3f, 0xf7, 0x1f, 0xfb, 0x34, 0xf7, 0x5b, 0x7c, 0x80, 0x18, 0xb7, 0xfb, + 0xb, 0xe3, 0xfb, 0x3d, 0xcf, 0x2d, 0x4c, 0x37, 0x2e, 0xfb, 0x65, 0x69, + 0x38, 0x8, 0xe, 0xfc, 0x41, 0x3d, 0xa, 0xf7, 0xe8, 0x7a, 0xa, 0xf7, + 0x84, 0x6, 0xef, 0xf7, 0xee, 0x27, 0xf7, 0xee, 0x5, 0xfb, 0x84, 0x6, + 0xef, 0xfb, 0xee, 0x5, 0xe, 0xfc, 0xf1, 0x3a, 0xa, 0xae, 0xc7, 0x3, + 0xae, 0xd3, 0x15, 0xf7, 0x22, 0x35, 0xa1, 0xa0, 0x23, 0xd2, 0x5, 0xf8, + 0xaf, 0x7, 0xf3, 0xcf, 0x75, 0x9f, 0xfb, 0x22, 0x33, 0x5, 0xe, 0xfc, + 0xf1, 0x3a, 0xa, 0xf7, 0x1e, 0xc8, 0x3, 0xae, 0x93, 0x15, 0xa0, 0x75, + 0xf7, 0x23, 0xe1, 0x5, 0xf8, 0xb5, 0x7, 0xfb, 0x23, 0xe3, 0x76, 0x77, + 0xf2, 0x47, 0x5, 0xfc, 0xae, 0x7, 0xe, 0xfc, 0x55, 0x3a, 0xa, 0xae, + 0xf7, 0x10, 0x3, 0xf7, 0xf2, 0x7d, 0x15, 0x91, 0x96, 0x5, 0xfb, 0x25, + 0xbc, 0x57, 0xf7, 0x32, 0xf7, 0x21, 0x1a, 0xf7, 0x1e, 0xc3, 0xf7, 0x38, + 0xf7, 0x21, 0xba, 0x1e, 0x83, 0x96, 0x5, 0xfb, 0x52, 0x54, 0xfb, 0xf, + 0x20, 0xfb, 0x5a, 0x1a, 0xfb, 0x5b, 0xf7, 0x1a, 0xfb, 0x2, 0xf7, 0x49, + 0x59, 0x1e, 0xe, 0xfb, 0x9a, 0xf3, 0xa2, 0xf7, 0x55, 0xb3, 0xf7, 0x69, + 0xa2, 0x1, 0xae, 0xa2, 0xf7, 0x66, 0xb4, 0xf7, 0x66, 0xa2, 0x14, 0x1c, + 0xf4, 0xf3, 0x15, 0xf8, 0x4, 0x6, 0x81, 0xa2, 0x5, 0x21, 0x5b, 0xe2, + 0xf7, 0x4, 0x1f, 0xf7, 0xa, 0xe7, 0x5c, 0x20, 0x1f, 0xa2, 0x81, 0x5, + 0xf8, 0x4, 0x7, 0x74, 0x81, 0x8e, 0xfb, 0x5, 0xfb, 0x0, 0x65, 0x22, + 0x88, 0x19, 0xf2, 0xb6, 0xf7, 0x2, 0xf7, 0x3, 0x85, 0x1e, 0x95, 0xa2, + 0x5, 0xfc, 0x4, 0x6, 0x95, 0x74, 0x5, 0xf6, 0x88, 0xb9, 0x31, 0xfb, + 0x6, 0x1a, 0xfb, 0x2, 0x22, 0xbb, 0xf5, 0x90, 0x1f, 0x74, 0x95, 0x5, + 0xfc, 0x4, 0x7, 0xa2, 0x95, 0x8c, 0xf6, 0xf7, 0x0, 0xc4, 0xf0, 0x81, + 0x19, 0x22, 0x63, 0x29, 0xfb, 0x5, 0x8f, 0x1e, 0xe, 0xfc, 0x55, 0x3a, + 0xa, 0xf7, 0x7c, 0xf7, 0xf, 0x3, 0xae, 0x88, 0x15, 0x92, 0x80, 0x5, + 0xf7, 0x50, 0xbf, 0xf7, 0x11, 0xf7, 0x0, 0xf7, 0x5b, 0x1a, 0xf7, 0x59, + 0xfb, 0xf, 0xf7, 0x0, 0xfb, 0x52, 0xc2, 0x1e, 0x84, 0x80, 0x5, 0xf7, + 0x20, 0x5b, 0xc4, 0xfb, 0x37, 0xfb, 0x1e, 0x1a, 0xfb, 0x21, 0x56, 0xfb, + 0x32, 0xfb, 0x24, 0x5a, 0x1e, 0xe, 0xfc, 0xc7, 0x5a, 0xa, 0xf7, 0x19, + 0x16, 0xf7, 0x1, 0x6, 0x26, 0xf7, 0xed, 0xf0, 0xf7, 0xef, 0x5, 0x22, + 0x6, 0x25, 0xfb, 0xef, 0x5, 0xe, 0xfc, 0xc7, 0x5a, 0xa, 0xae, 0x16, + 0xf5, 0x6, 0xf0, 0xf7, 0xed, 0x24, 0xf7, 0xef, 0x5, 0x23, 0x6, 0xef, + 0xfb, 0xef, 0x5, 0xe, 0xfc, 0x9e, 0x3d, 0xa, 0xf7, 0x34, 0x3, 0xf7, + 0x4c, 0x16, 0xee, 0x6, 0x54, 0xf7, 0x4, 0x6a, 0xf7, 0x4, 0xf7, 0x11, + 0x1a, 0xf7, 0x12, 0xa9, 0xed, 0xbd, 0xf7, 0xb, 0x1e, 0x2b, 0x6, 0x3a, + 0x29, 0x4c, 0xfb, 0xc, 0xfb, 0x14, 0x1a, 0xfb, 0x12, 0xcc, 0xfb, 0x13, + 0xdf, 0x2e, 0x1e, 0xe, 0xfc, 0x9e, 0x38, 0xa, 0xf7, 0xc, 0xf7, 0x37, + 0x7a, 0xa, 0xee, 0x6, 0xde, 0xe7, 0xcd, 0xf7, 0x14, 0xf7, 0x11, 0x1a, + 0xf7, 0x16, 0x4b, 0xf7, 0x9, 0x3b, 0xef, 0x1e, 0x28, 0x6, 0xc0, 0xfb, + 0xc, 0xa6, 0x2a, 0xfb, 0x12, 0x1a, 0xfb, 0x10, 0x6c, 0xfb, 0x5, 0x55, + 0xfb, 0x4, 0x1e, 0xe, 0xfc, 0x8d, 0x38, 0xa, 0xe1, 0xf7, 0x1b, 0x3, + 0xf7, 0xbf, 0x16, 0x99, 0x7, 0x3d, 0x8b, 0xc1, 0xc1, 0xf7, 0x2e, 0x8f, + 0xc0, 0x38, 0x9c, 0x1f, 0xde, 0x9d, 0x87, 0xc6, 0xf7, 0x24, 0x1a, 0xd7, + 0x8b, 0xaf, 0xd9, 0x1e, 0x98, 0x61, 0x7, 0x67, 0x39, 0x8b, 0x7c, 0x76, + 0x1f, 0x6c, 0x75, 0x87, 0x70, 0x68, 0x1a, 0x91, 0xfb, 0x3e, 0x5, 0x64, + 0x7f, 0x6d, 0x61, 0x83, 0x1e, 0xb5, 0x83, 0x97, 0x6f, 0x63, 0x1a, 0x85, + 0xfb, 0x3d, 0x5, 0x68, 0x8c, 0x69, 0xaf, 0x79, 0x1e, 0x7f, 0xa3, 0xd2, + 0x89, 0xaf, 0x1b, 0xe, 0xfc, 0x8d, 0x38, 0xa, 0xf7, 0x5, 0xf7, 0x1b, + 0x7a, 0xa, 0xbb, 0x6, 0xaf, 0xdc, 0x8b, 0x99, 0x99, 0x1f, 0xaf, 0x9d, + 0x8c, 0xad, 0xae, 0x1a, 0x85, 0xf7, 0x3d, 0x8a, 0xb4, 0x98, 0xa6, 0xb5, + 0x93, 0x19, 0x61, 0x93, 0x7d, 0xa0, 0x8d, 0xbb, 0x91, 0xf7, 0x3e, 0x18, + 0xae, 0x88, 0xa7, 0x6b, 0xa0, 0x1e, 0x9a, 0x74, 0x3b, 0x8b, 0x67, 0x1b, + 0x61, 0x7e, 0x6, 0xd9, 0x8b, 0x54, 0x56, 0x1f, 0x37, 0x7, 0x45, 0x87, + 0x56, 0xdd, 0x79, 0x1e, 0x39, 0x7a, 0x8f, 0x56, 0x45, 0x1a, 0x37, 0x7, + 0x55, 0x8b, 0x55, 0x3d, 0x1e, 0xe, 0xfc, 0x53, 0x73, 0xa, 0xf0, 0x26, + 0xf7, 0xd0, 0x13, 0xa0, 0xf7, 0xcc, 0xf9, 0x3a, 0x15, 0x86, 0xa0, 0x5, + 0xfb, 0x13, 0x7a, 0xfb, 0x23, 0x4b, 0xfb, 0x5b, 0x1a, 0x36, 0xc6, 0x21, + 0xf2, 0xeb, 0xc5, 0xd4, 0xd2, 0xc3, 0x71, 0xac, 0x75, 0x97, 0x1e, 0x7e, + 0x91, 0x7a, 0x8f, 0x7c, 0x86, 0x8, 0x86, 0x78, 0x81, 0x86, 0x70, 0x1b, + 0x13, 0xc0, 0x63, 0x71, 0xa0, 0xb5, 0xbd, 0xaf, 0xcc, 0xf7, 0x1e, 0xab, + 0x1f, 0xe, 0xfc, 0x53, 0x73, 0xa, 0xf7, 0xd0, 0x26, 0xf0, 0x13, 0xc0, + 0xde, 0xf7, 0x78, 0x15, 0xf7, 0x13, 0x9c, 0xf7, 0x23, 0xcb, 0xf7, 0x5b, + 0x1a, 0xe0, 0x50, 0xf5, 0x24, 0x2b, 0x51, 0x42, 0x44, 0x53, 0xa5, 0x6a, + 0xa1, 0x7f, 0x1e, 0x97, 0x85, 0x9a, 0x87, 0x9d, 0x90, 0x8, 0x90, 0x9e, + 0x95, 0x90, 0xa6, 0x1b, 0x13, 0xa0, 0xb3, 0xa5, 0x76, 0x61, 0x59, 0x67, + 0x4a, 0xfb, 0x1e, 0x6b, 0x1f, 0x90, 0x76, 0x5, 0xe, 0xfb, 0x3f, 0xf8, + 0xec, 0xf9, 0x3a, 0x15, 0x87, 0xa0, 0x5, 0xfb, 0xc, 0x5f, 0xa, 0x73, + 0xac, 0x76, 0x97, 0x1e, 0x80, 0x91, 0x7c, 0x8f, 0x7a, 0x86, 0x8, 0x86, + 0x7a, 0x81, 0x86, 0x72, 0x1b, 0x65, 0x73, 0xa0, 0xb5, 0xbd, 0xac, 0xcc, + 0xf7, 0x16, 0xab, 0x1f, 0xfb, 0xc4, 0x16, 0x86, 0xa0, 0x5, 0xfb, 0xb, + 0x5f, 0xa, 0x72, 0xac, 0x76, 0x97, 0x1e, 0x80, 0x91, 0x7d, 0x8f, 0x7a, + 0x86, 0x8, 0x86, 0x79, 0x82, 0x86, 0x71, 0x1b, 0x66, 0x72, 0xa0, 0xb5, + 0xbd, 0xad, 0xcc, 0xf7, 0x16, 0xab, 0x1f, 0xe, 0xfc, 0xc5, 0xe, 0x7d, + 0x99, 0xf7, 0xee, 0x98, 0xf7, 0xe1, 0x98, 0x6, 0x1e, 0xa0, 0x39, 0x63, + 0xff, 0xc, 0x9, 0xa7, 0xa, 0xe5, 0xb, 0xf9, 0xa8, 0x14, 0xf9, 0xdb, + 0x15, 0xa7, 0x13, 0x0, 0x61, 0x2, 0x0, 0x1, 0x0, 0x7, 0x0, 0xb, + 0x0, 0x11, 0x0, 0x18, 0x0, 0x1f, 0x0, 0x2c, 0x0, 0x30, 0x0, 0x39, + 0x0, 0x3e, 0x0, 0x43, 0x0, 0x4b, 0x0, 0x52, 0x0, 0x5a, 0x0, 0x5f, + 0x0, 0x64, 0x0, 0x69, 0x0, 0x78, 0x0, 0x7f, 0x0, 0xba, 0x0, 0xbf, + 0x1, 0xb, 0x1, 0x11, 0x1, 0x18, 0x1, 0x1d, 0x1, 0x24, 0x1, 0x3e, + 0x1, 0x42, 0x1, 0x46, 0x1, 0x55, 0x1, 0x59, 0x1, 0x5e, 0x1, 0x64, + 0x1, 0x69, 0x1, 0x6e, 0x1, 0x85, 0x1, 0x8d, 0x1, 0x92, 0x1, 0xa5, + 0x1, 0xaa, 0x1, 0xc7, 0x1, 0xe2, 0x1, 0xfc, 0x2, 0xb, 0x2, 0x16, + 0x2, 0x1b, 0x2, 0x1f, 0x2, 0x29, 0x2, 0x37, 0x2, 0x41, 0x2, 0x4b, + 0x2, 0x58, 0x2, 0x65, 0x2, 0x69, 0x2, 0x7f, 0x2, 0x95, 0x2, 0xa4, + 0x2, 0xaf, 0x2, 0xbe, 0x2, 0xc4, 0x2, 0xcf, 0x2, 0xda, 0x2, 0xec, + 0x2, 0xfe, 0x3, 0xf, 0x3, 0x20, 0x3, 0x2f, 0x3, 0x38, 0x3, 0x41, + 0x3, 0x4a, 0x3, 0x51, 0x3, 0x5e, 0x3, 0x6b, 0x3, 0x77, 0x3, 0x83, + 0x3, 0x89, 0x3, 0x8d, 0x3, 0x98, 0x3, 0xa1, 0x3, 0xa8, 0x3, 0xaf, + 0x3, 0xb6, 0x3, 0xbd, 0x3, 0xc4, 0x3, 0xcb, 0x3, 0xd0, 0x3, 0xd4, + 0x3, 0xde, 0x3, 0xe8, 0x3, 0xf2, 0x3, 0xfc, 0x4, 0x0, 0x4, 0x9, + 0x4, 0x12, 0x4, 0x19, 0x4, 0x1f, 0x4, 0x24, 0x4, 0x28, 0x30, 0xa, + 0x33, 0xa, 0x1e, 0xb, 0x15, 0x20, 0xa, 0xb, 0xae, 0xf7, 0xee, 0x21, + 0xa, 0xb, 0xae, 0xf7, 0xee, 0x15, 0x2c, 0xa, 0xb, 0xf7, 0x5b, 0x25, + 0xa, 0xfb, 0x5b, 0xb, 0xf7, 0x35, 0xf7, 0x35, 0xf7, 0x5b, 0xf7, 0x5a, + 0xfb, 0x35, 0xf7, 0x35, 0xb, 0x3, 0x23, 0xa, 0xb, 0xfb, 0x5a, 0xfb, + 0x35, 0xfb, 0x35, 0xfb, 0x5a, 0xb, 0xf7, 0x48, 0x2d, 0xa, 0xb, 0x2e, + 0xa, 0xf7, 0x5a, 0xb, 0xfb, 0x35, 0xfb, 0x35, 0xfb, 0x5a, 0x1e, 0xb, + 0xfb, 0x5b, 0xf7, 0x35, 0xfb, 0x35, 0xb, 0x46, 0xa, 0x24, 0xa, 0x27, + 0xa, 0x1e, 0xb, 0xf7, 0x25, 0x31, 0xa, 0xb, 0x3b, 0xa, 0x2b, 0xa, + 0xb, 0x2d, 0xa, 0xfb, 0x25, 0xb, 0x2c, 0xa, 0xae, 0x16, 0x40, 0xa, + 0x41, 0xa, 0xf7, 0x48, 0x2f, 0xa, 0xfb, 0x48, 0xb, 0x3e, 0xa, 0xfb, + 0x48, 0xfb, 0x25, 0xb, 0xf7, 0x7e, 0xf7, 0x3e, 0x5, 0xfb, 0xb5, 0x6, + 0x32, 0xf7, 0xa7, 0x32, 0xfb, 0xa7, 0x5, 0xfb, 0xb5, 0x6, 0xf7, 0x7e, + 0xfb, 0x3e, 0x5, 0x68, 0xfb, 0x5b, 0x15, 0xe1, 0xf7, 0x6c, 0xfb, 0x58, + 0xf7, 0x10, 0xf7, 0x7c, 0x7c, 0xc4, 0xf7, 0x75, 0xc4, 0xfb, 0x75, 0xf7, + 0x7c, 0x9a, 0xfb, 0x58, 0xfb, 0x10, 0xe1, 0xfb, 0x6c, 0xfb, 0x47, 0xf7, + 0x29, 0x5, 0xb, 0xfb, 0x47, 0x36, 0xa, 0xb, 0xf8, 0xaa, 0xf8, 0x8d, + 0x15, 0xaf, 0xae, 0x5, 0xa2, 0x98, 0xa9, 0xa6, 0xac, 0x1b, 0xba, 0xc5, + 0x5f, 0x4d, 0x71, 0x75, 0x6b, 0x70, 0x7a, 0x1f, 0x6e, 0x65, 0xc1, 0x8e, + 0xb3, 0xbe, 0x93, 0xb6, 0x19, 0xf7, 0x12, 0xe9, 0x71, 0xf7, 0x2e, 0xfb, + 0x23, 0xfb, 0x1b, 0x7d, 0x98, 0x7a, 0x95, 0x77, 0x92, 0x19, 0xf7, 0x5, + 0xf7, 0x16, 0x5, 0x7a, 0x65, 0x87, 0x83, 0x7d, 0x1f, 0x2f, 0xfb, 0x4, + 0x5, 0x52, 0x84, 0x61, 0x50, 0x68, 0x87, 0x8b, 0x88, 0x87, 0x1a, 0xb, + 0x4f, 0xa, 0x32, 0xa, 0x30, 0xb, 0xfb, 0x25, 0xf7, 0x25, 0xf7, 0x48, + 0xb, 0x15, 0x30, 0xa, 0x1e, 0xb, 0xa0, 0x76, 0xf9, 0x48, 0x77, 0x1, + 0xb, 0x95, 0x8, 0xb2, 0x9c, 0xda, 0xc4, 0xba, 0x1a, 0xbd, 0x26, 0xa7, + 0x64, 0x90, 0x1e, 0x8a, 0x8e, 0x97, 0x9b, 0x97, 0x9c, 0x95, 0x9c, 0x19, + 0x87, 0x8e, 0xb, 0x3f, 0xa, 0x1, 0xb, 0xae, 0x4d, 0xa, 0xb, 0x97, + 0x6b, 0x4a, 0xa, 0x9e, 0x7d, 0xa0, 0x81, 0x8, 0x64, 0x7a, 0x3c, 0x45, + 0xa, 0xb, 0x38, 0xa, 0xae, 0xb, 0xfb, 0x25, 0xfb, 0x47, 0xb, 0x92, + 0x76, 0xf9, 0x63, 0x77, 0xb, 0xf7, 0x47, 0xf7, 0x25, 0xb, 0xf7, 0x25, + 0xf7, 0x47, 0xb, 0x15, 0xa6, 0x9f, 0xa0, 0xa6, 0xa6, 0xa0, 0x76, 0x4b, + 0xa, 0xfb, 0xb4, 0x4, 0xa6, 0x9f, 0x9f, 0xa6, 0xa6, 0xa0, 0x77, 0x4b, + 0xa, 0xb, 0x5c, 0xa, 0x78, 0x99, 0x76, 0x39, 0xa, 0xb, 0x50, 0xa, + 0x51, 0xa, 0xb, 0x52, 0x5c, 0x1a, 0x59, 0xf0, 0x6f, 0xb2, 0x86, 0x1e, + 0x8c, 0x88, 0x7f, 0x7b, 0x7f, 0x7a, 0x81, 0x7a, 0x19, 0xb, 0x2b, 0xa, + 0xf7, 0x5a, 0xb, 0xa1, 0x6e, 0xa1, 0x6d, 0x65, 0x1a, 0x7f, 0x88, 0x73, + 0x7b, 0x72, 0x82, 0xc3, 0x9e, 0x9f, 0x90, 0x9e, 0x8f, 0x9e, 0x1e, 0x6a, + 0xa, 0x89, 0x7c, 0x7b, 0x89, 0x7c, 0x1b, 0xb, 0x6a, 0xa, 0x75, 0xa8, + 0x75, 0xa9, 0xb1, 0x1a, 0x97, 0x8e, 0xa3, 0x9b, 0xa4, 0x94, 0x53, 0x78, + 0x77, 0x86, 0x78, 0x87, 0x78, 0x1e, 0xfb, 0x2d, 0xc2, 0x15, 0xb, 0xe0, + 0xf7, 0xb, 0x76, 0xf7, 0x8c, 0x77, 0xf7, 0xa0, 0x54, 0xa, 0xf9, 0xea, + 0x3, 0xae, 0xed, 0x15, 0xf9, 0xea, 0xf7, 0x8c, 0xfd, 0xea, 0xf7, 0x8c, + 0xb, 0x1f, 0x89, 0x89, 0x5, 0x8e, 0x77, 0x76, 0x8c, 0x77, 0x1b, 0x86, + 0x7, 0x9c, 0x7c, 0xb, 0x70, 0x70, 0x76, 0x77, 0x70, 0x70, 0x77, 0x9f, + 0xa6, 0x1e, 0xb, 0xae, 0x12, 0xae, 0xae, 0xb, 0xf7, 0xee, 0x15, 0xb, + 0xb4, 0x8f, 0x7f, 0xf7, 0x12, 0x62, 0xa, 0x52, 0xa, 0xb, 0x9d, 0x15, + 0xf7, 0x7e, 0xf7, 0x3e, 0xf7, 0x7e, 0xfb, 0x3e, 0x31, 0xf7, 0xa7, 0xb, + 0x15, 0x7d, 0x96, 0x80, 0x99, 0x99, 0x96, 0x96, 0x99, 0xb, 0x99, 0x80, + 0x96, 0x7d, 0x7d, 0x80, 0x80, 0x7d, 0x1e, 0xb, 0x88, 0x8c, 0x84, 0x9e, + 0x81, 0x9d, 0x81, 0x9c, 0x19, 0x87, 0x89, 0x5, 0xb, 0x8e, 0x8a, 0x92, + 0x78, 0x95, 0x79, 0x95, 0x7a, 0x19, 0x8f, 0x8d, 0x5, 0xb, 0x77, 0x1, + 0xae, 0xb, 0x83, 0x83, 0x90, 0x94, 0x91, 0x8d, 0x90, 0x8e, 0x90, 0x1f, + 0xa2, 0xb3, 0xaf, 0x97, 0xb4, 0x98, 0x8, 0xfb, 0x2d, 0xc2, 0x15, 0xb, + 0xcc, 0x77, 0xc8, 0x92, 0xc1, 0xc4, 0xb8, 0x5e, 0xf7, 0x2e, 0xfb, 0x1, + 0xb0, 0x70, 0xae, 0x8f, 0xf7, 0x2e, 0xfb, 0x1b, 0x9d, 0xb, 0x87, 0x79, + 0x89, 0x79, 0x64, 0xa, 0x55, 0xa1, 0x5e, 0x1b, 0x60, 0x81, 0x6c, 0x66, + 0xb, 0xc3, 0x1b, 0xb7, 0xc1, 0xbe, 0xac, 0xa4, 0x1f, 0x53, 0xa, 0xb, + 0x8f, 0x9d, 0x8d, 0x9d, 0x63, 0xa, 0xc1, 0x75, 0xb8, 0x1b, 0xb6, 0x95, + 0xaa, 0xb0, 0xb, 0x3d, 0xa, 0xf7, 0x63, 0x3, 0xb, 0xf7, 0x27, 0x15, + 0xa1, 0x92, 0xa0, 0x95, 0x9e, 0x98, 0x8, 0xb, 0x88, 0x9f, 0xa0, 0x8a, + 0x9f, 0x1b, 0x90, 0x7, 0x7a, 0x9a, 0xb, 0x93, 0x93, 0x86, 0x82, 0x85, + 0x89, 0x86, 0x88, 0x86, 0x1f, 0x74, 0x63, 0x67, 0x7f, 0x62, 0x7e, 0x8, + 0xb, 0xae, 0x70, 0xb0, 0x8b, 0xb8, 0x62, 0xb8, 0xc0, 0xc1, 0x59, 0xc1, + 0x8e, 0xc8, 0x52, 0xc8, 0x77, 0xcc, 0xb, 0x7a, 0xfb, 0x1b, 0x4b, 0xfb, + 0x5b, 0x1a, 0x36, 0xc3, 0x21, 0xec, 0xe5, 0xc2, 0xd4, 0xd2, 0xc3, 0xb, + 0xa7, 0xd8, 0xcf, 0xaf, 0xb8, 0x5e, 0xf7, 0xa, 0xfb, 0xa, 0xf7, 0x22, + 0x38, 0xc6, 0x83, 0x92, 0xb, 0x74, 0x4e, 0x99, 0xa8, 0x98, 0x99, 0x8d, + 0x95, 0xbb, 0xa3, 0x72, 0x6e, 0xad, 0x1f, 0xb, 0x52, 0x1b, 0x5f, 0x55, + 0x58, 0x6a, 0x72, 0x1f, 0xb, 0x9d, 0x90, 0x8a, 0x90, 0x90, 0x1a, 0x71, + 0xaf, 0xb, 0x79, 0x86, 0x8c, 0x86, 0x86, 0x1a, 0xa5, 0x67, 0xb, 0x13, + 0xb2, 0x5a, 0x96, 0x56, 0xa0, 0xb, 0xfb, 0xde, 0x6c, 0x76, 0xf9, 0xa2, + 0x77, 0x1, 0xaf, 0xf8, 0x49, 0x3, 0xb, 0xf7, 0x22, 0xfb, 0xb, 0xc6, + 0x51, 0xf7, 0xa, 0x5d, 0xb8, 0x5f, 0xb8, 0xb, 0x9c, 0xf7, 0x1b, 0xcb, + 0xf7, 0x5b, 0x1a, 0xe0, 0x53, 0xf5, 0x2a, 0xb, 0xa5, 0xa5, 0xa1, 0x76, + 0x71, 0x71, 0x75, 0x75, 0x71, 0x71, 0x75, 0xb, 0xf7, 0x4a, 0xfb, 0x6b, + 0x15, 0xb, 0xfb, 0x7f, 0x15, 0xb, 0xf7, 0x4a, 0x72, 0xa4, 0xf7, 0x84, + 0xa4, 0x72, 0xf7, 0x4a, 0xb, 0x15, 0xf8, 0xad, 0xf8, 0xa8, 0xfc, 0xad, + 0x7, 0xe, 0x13, 0xe4, 0x82, 0xb9, 0x55, 0x40, 0xb, 0x13, 0xb2, 0x96, + 0x96, 0x56, 0xa0, 0xb, 0x13, 0xb2, 0x9a, 0x96, 0x55, 0xa0, 0xb, 0x75, + 0x84, 0x76, 0x81, 0x78, 0x7e, 0xb, 0xf7, 0x11, 0xf8, 0x78, 0xf7, 0x2, + 0xb, 0xf7, 0x78, 0xf8, 0x6b, 0x12, 0xb0, 0xb, 0xae, 0x1, 0xae, 0xae, + 0xb, 0x5, 0x8d, 0x7, 0xb, 0xf7, 0xf3, 0xf7, 0x7c, 0xfb, 0xf3, 0xf7, + 0x7c, 0x5, 0xb, 0x7e, 0x7d, 0x89, 0x81, 0x5b, 0x73, 0xa4, 0xa8, 0x69, + 0xb, 0x15, 0x9b, 0x7b, 0x9d, 0x82, 0x90, 0x90, 0x90, 0x90, 0xb, 0x15, + 0x90, 0x86, 0x9d, 0x94, 0x9b, 0x9b, 0x9b, 0x9b, 0xb, 0x3, 0xae, 0x16, + 0xb, 0x9a, 0x85, 0x97, 0x1e, 0x82, 0x9d, 0x80, 0x98, 0xb, 0x99, 0x8b, + 0xf7, 0x2, 0x3e, 0xb7, 0xac, 0x99, 0xb, 0xfb, 0xad, 0x5, 0xf7, 0x35, + 0x7, 0xe, 0x13, 0x94, 0x54, 0xec, 0x1b, 0xb, 0x1f, 0x8d, 0x8d, 0x5, + 0xb, 0x5, 0x89, 0x7, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitFixed.cpp b/core/fxge/fontdata/chromefontdata/FoxitFixed.cpp new file mode 100644 index 0000000000..61c0857593 --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitFixed.cpp @@ -0,0 +1,1476 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitFixedFontData[17597] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xe, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x0, 0x1, + 0x1, 0x1, 0x23, 0xf8, 0x10, 0x0, 0xf8, 0x2a, 0x1, 0xf8, 0x2b, 0x2, + 0xf8, 0x2b, 0x3, 0xf8, 0x18, 0x4, 0x6f, 0xfb, 0x8d, 0xf9, 0x8, 0xf9, + 0xb7, 0x5, 0xf7, 0x85, 0xf, 0xf9, 0x6c, 0x11, 0xaa, 0x1c, 0x3e, 0x6b, + 0x12, 0x0, 0x11, 0x1, 0x1, 0x5, 0xb, 0xd, 0x11, 0x19, 0x22, 0x2b, + 0x34, 0x3e, 0x45, 0x4b, 0x4d, 0x51, 0x5d, 0x65, 0x8f, 0x9e, 0x45, 0x75, + 0x72, 0x6f, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x49, 0x4a, 0x49, 0x64, + 0x6f, 0x74, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x61, 0x72, + 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x61, 0x72, 0x72, 0x6f, 0x77, + 0x64, 0x6f, 0x77, 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, + 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x61, + 0x72, 0x72, 0x6f, 0x77, 0x75, 0x70, 0x67, 0x63, 0x61, 0x72, 0x6f, 0x6e, + 0x69, 0x6a, 0x6c, 0x69, 0x72, 0x61, 0x70, 0x72, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x63, 0x65, 0x64, 0x69, 0x6c, + 0x6c, 0x61, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, + 0x6d, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, 0x0, + 0x0, 0x0, 0x0, 0x22, 0x0, 0x8a, 0x0, 0xab, 0x0, 0xac, 0x0, 0xad, + 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, 0x23, 0x0, 0x24, 0x0, 0xb1, + 0x0, 0x25, 0x0, 0x26, 0x0, 0xb2, 0x0, 0xb3, 0x0, 0xb4, 0x0, 0xb5, + 0x0, 0x9a, 0x1, 0x87, 0x0, 0x27, 0x0, 0x28, 0x1, 0x88, 0x0, 0x29, + 0x0, 0x2a, 0x1, 0x89, 0x0, 0xb6, 0x0, 0xb7, 0x0, 0xb8, 0x1, 0x8a, + 0x0, 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, 0x8c, 0x0, 0x2e, + 0x0, 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, 0x0, 0xbb, 0x0, 0xbc, + 0x0, 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, 0x0, 0x31, 0x0, 0x32, + 0x0, 0x33, 0x0, 0x34, 0x0, 0xc0, 0x1, 0x8b, 0x0, 0x35, 0x0, 0x9d, + 0x0, 0x36, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, 0x37, + 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0xc5, 0x0, 0xc6, 0x0, 0x3b, + 0x0, 0xc7, 0x0, 0x42, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0x7d, 0x0, 0xca, + 0x0, 0x90, 0x0, 0xcb, 0x0, 0x7, 0x0, 0xcc, 0x1, 0x8c, 0x1, 0x8d, + 0x1, 0x8e, 0x1, 0x8f, 0x1, 0x90, 0x0, 0x3f, 0x0, 0x5f, 0x0, 0xb, + 0x0, 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, 0x0, 0x5d, 0x0, 0x5c, + 0x0, 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, 0x0, 0xa0, 0x0, 0x74, + 0x0, 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, 0x0, 0x61, 0x0, 0x7e, + 0x0, 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, 0x0, 0x45, 0x0, 0x70, + 0x0, 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, 0x0, 0x5, 0x0, 0x82, + 0x0, 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, 0x0, 0xd1, 0x0, 0xd2, + 0x0, 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, 0x0, 0x1e, 0x0, 0xa7, + 0x0, 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, 0x0, 0x16, 0x0, 0x6e, + 0x0, 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, 0x1, 0x91, 0x0, 0x95, + 0x0, 0x7c, 0x0, 0x1f, 0x0, 0x6a, 0x0, 0x78, 0x0, 0x6b, 0x0, 0x6c, + 0x0, 0x49, 0x0, 0x86, 0x0, 0xe, 0x0, 0x4a, 0x0, 0xd3, 0x0, 0xd4, + 0x0, 0xd5, 0x0, 0xd6, 0x1, 0x92, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, + 0x0, 0x1d, 0x1, 0x93, 0x0, 0x97, 0x0, 0x92, 0x0, 0x4e, 0x0, 0x80, + 0x0, 0xa6, 0x0, 0x98, 0x0, 0xa8, 0x0, 0x4f, 0x0, 0x1a, 0x0, 0xd7, + 0x0, 0x4, 0x0, 0x50, 0x0, 0xd8, 0x0, 0xd9, 0x0, 0xda, 0x0, 0x94, + 0x0, 0x87, 0x0, 0xdb, 0x0, 0x12, 0x0, 0x9b, 0x0, 0x9e, 0x0, 0x96, + 0x0, 0x8b, 0x0, 0x8f, 0x0, 0x93, 0x0, 0xdc, 0x0, 0x51, 0x0, 0x73, + 0x0, 0x9, 0x0, 0xa, 0x0, 0x6, 0x0, 0xf, 0x0, 0x72, 0x0, 0x7a, + 0x0, 0xc, 0x0, 0x9c, 0x1, 0x94, 0x0, 0x52, 0x0, 0x20, 0x0, 0x7b, + 0x0, 0x3, 0x0, 0x76, 0x0, 0x69, 0x0, 0x77, 0x0, 0x41, 0x0, 0x8, + 0x0, 0x75, 0x0, 0x68, 0x0, 0x53, 0x0, 0xa5, 0x0, 0x84, 0x0, 0x54, + 0x0, 0xdd, 0x1, 0x95, 0x0, 0x66, 0x0, 0x1c, 0x0, 0x18, 0x0, 0x17, + 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, 0x55, 0x0, 0xa2, 0x0, 0x14, + 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, 0x99, 0x0, 0x13, 0x0, 0xa4, + 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, 0xe0, 0x0, 0xe1, 0x0, 0x40, + 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, 0x0, 0xe2, 0x0, 0xe3, + 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, 0x11, 0x0, 0xf4, 0x2, 0x0, + 0x1, 0x0, 0x2, 0x0, 0x4e, 0x0, 0xa8, 0x0, 0xc5, 0x0, 0xf1, 0x1, + 0x22, 0x1, 0x41, 0x1, 0x8a, 0x1, 0xd7, 0x2, 0x3b, 0x2, 0x86, 0x3, + 0x4, 0x3, 0x3e, 0x3, 0x79, 0x3, 0x92, 0x3, 0xbf, 0x3, 0xf5, 0x4, + 0xa, 0x4, 0x57, 0x4, 0xd4, 0x5, 0xb, 0x5, 0x3c, 0x5, 0x71, 0x5, + 0xac, 0x5, 0xc9, 0x6, 0x15, 0x6, 0x32, 0x6, 0x5b, 0x6, 0x78, 0x6, + 0xa1, 0x6, 0xbd, 0x6, 0xef, 0x7, 0x39, 0x7, 0x5b, 0x7, 0x95, 0x7, + 0xd5, 0x8, 0x7, 0x8, 0x7a, 0x8, 0xc3, 0x9, 0x1c, 0x9, 0x39, 0x9, + 0x4b, 0x9, 0x6d, 0x9, 0x88, 0xa, 0x1, 0xa, 0x47, 0xa, 0x8b, 0xb, + 0x27, 0xb, 0x83, 0xb, 0xfa, 0xc, 0x80, 0xd, 0x26, 0xd, 0x5f, 0xd, + 0xb9, 0xd, 0xf8, 0xe, 0x15, 0xe, 0x25, 0xe, 0x46, 0xe, 0x61, 0xe, + 0x92, 0xe, 0xd8, 0xf, 0x1d, 0xf, 0x5a, 0xf, 0x78, 0xf, 0x9e, 0xf, + 0xc9, 0x10, 0x10, 0x10, 0x73, 0x10, 0x89, 0x10, 0xab, 0x10, 0xbd, 0x10, + 0xf4, 0x11, 0x88, 0x11, 0x9e, 0x12, 0x1d, 0x12, 0x5b, 0x12, 0x79, 0x12, + 0xa1, 0x12, 0xae, 0x12, 0xc6, 0x12, 0xec, 0x13, 0x1b, 0x13, 0x5f, 0x13, + 0x95, 0x14, 0x31, 0x14, 0x84, 0x14, 0xe3, 0x14, 0xfb, 0x15, 0x10, 0x15, + 0x61, 0x15, 0xb3, 0x15, 0xd1, 0x15, 0xed, 0x16, 0x11, 0x16, 0x2e, 0x16, + 0x4f, 0x16, 0x96, 0x16, 0xb8, 0x17, 0x37, 0x17, 0x77, 0x17, 0xd2, 0x17, + 0xf7, 0x18, 0xb, 0x18, 0x1e, 0x18, 0xa6, 0x19, 0x15, 0x19, 0x73, 0x19, + 0x96, 0x19, 0xda, 0x1a, 0x13, 0x1a, 0x35, 0x1a, 0x58, 0x1a, 0xdf, 0x1a, + 0xf1, 0x1b, 0x7, 0x1b, 0x5b, 0x1b, 0x71, 0x1b, 0x93, 0x1b, 0xa5, 0x1b, + 0xc1, 0x1c, 0x36, 0x1c, 0x82, 0x1c, 0x94, 0x1c, 0xa7, 0x1c, 0xc6, 0x1d, + 0x38, 0x1d, 0x70, 0x1d, 0x9f, 0x1d, 0xe4, 0x1e, 0x17, 0x1e, 0x6b, 0x1e, + 0x98, 0x1e, 0xf6, 0x1f, 0x2c, 0x1f, 0x41, 0x1f, 0x7b, 0x1f, 0xc1, 0x20, + 0x4a, 0x20, 0x5b, 0x20, 0x82, 0x20, 0xb1, 0x20, 0xe2, 0x21, 0x2, 0x21, + 0x23, 0x21, 0x67, 0x21, 0x7d, 0x21, 0x90, 0x21, 0xb5, 0x21, 0xcd, 0x21, + 0xf6, 0x22, 0x15, 0x22, 0x2d, 0x22, 0x85, 0x22, 0xc6, 0x23, 0xc, 0x23, + 0x25, 0x23, 0x4a, 0x23, 0xeb, 0x24, 0x2, 0x24, 0x36, 0x24, 0x91, 0x24, + 0xa6, 0x24, 0xb9, 0x25, 0xa, 0x25, 0x36, 0x25, 0x76, 0x25, 0xc8, 0x26, + 0x55, 0x26, 0xb1, 0x26, 0xf3, 0x27, 0xc, 0x27, 0x33, 0x27, 0x53, 0x27, + 0xd5, 0x28, 0x4, 0x28, 0x1d, 0x28, 0x41, 0x28, 0xac, 0x29, 0xf, 0x29, + 0x33, 0x29, 0x8f, 0x29, 0xca, 0x2a, 0x3f, 0x2a, 0x92, 0x2a, 0xe1, 0x2b, + 0xb, 0x2b, 0x3e, 0x2b, 0x71, 0x2b, 0xb3, 0x2b, 0xcc, 0x2b, 0xed, 0x2c, + 0x52, 0x2c, 0x77, 0x2c, 0xa7, 0x2d, 0x19, 0x2d, 0x66, 0x2d, 0xab, 0x2e, + 0x7, 0x2e, 0x1e, 0x2e, 0x26, 0x2e, 0x48, 0x2e, 0x50, 0x2e, 0x5e, 0x2e, + 0x6c, 0x2e, 0x7a, 0x2e, 0x90, 0x2e, 0xda, 0x2f, 0x66, 0x2f, 0x9f, 0x30, + 0xc, 0x30, 0x94, 0x31, 0x3a, 0x31, 0xe9, 0x32, 0x9, 0x32, 0x27, 0x32, + 0x79, 0x32, 0x90, 0x32, 0x91, 0x33, 0x25, 0x33, 0x63, 0x33, 0xbd, 0x34, + 0x1f, 0x34, 0xb8, 0x35, 0x15, 0x35, 0x56, 0x35, 0x9a, 0x35, 0xe0, 0x36, + 0x1f, 0x36, 0x64, 0x36, 0x7b, 0x36, 0x9b, 0x36, 0xcd, 0x36, 0xe4, 0x36, + 0xf4, 0x37, 0x25, 0x37, 0x65, 0x37, 0xb2, 0x37, 0xec, 0x38, 0x36, 0x38, + 0x8f, 0x38, 0xe7, 0x39, 0x10, 0x39, 0x5a, 0x39, 0xa7, 0xe, 0x8b, 0xc1, + 0xf7, 0x4, 0xc1, 0xf7, 0xb4, 0xc1, 0x1, 0x8e, 0xf7, 0x63, 0xab, 0xee, + 0xbf, 0xf7, 0x60, 0x3, 0x8e, 0x16, 0xf7, 0x63, 0xc1, 0x33, 0x6, 0xb6, + 0xf7, 0x4, 0x5, 0xf7, 0xaa, 0x6, 0xb7, 0xfb, 0x4, 0x5, 0x2d, 0x55, + 0xf7, 0x60, 0xc1, 0x56, 0x6, 0xfb, 0x5f, 0xf8, 0x90, 0x5, 0xfb, 0x81, + 0x55, 0xf7, 0x1e, 0x6, 0xfb, 0x46, 0xfc, 0x5a, 0x5, 0x4e, 0x6, 0xf7, + 0x4a, 0xf7, 0x3a, 0x15, 0xf7, 0x7, 0xf7, 0xba, 0xf7, 0xf, 0xfb, 0xba, + 0x5, 0xe, 0x8b, 0xc2, 0xf7, 0x3, 0xc2, 0xac, 0xc2, 0xf7, 0x5b, 0xc1, + 0x1, 0xdc, 0xc4, 0xf7, 0xa, 0xc3, 0x8b, 0xc2, 0xdc, 0xc1, 0x9c, 0xc2, + 0x3, 0xa5, 0x16, 0xf7, 0x5a, 0xc2, 0x35, 0x6, 0xb7, 0xf7, 0x3, 0x5, + 0xf7, 0x16, 0xfb, 0x3a, 0xf7, 0x9a, 0xf7, 0x2e, 0x54, 0x28, 0xfb, 0x2c, + 0xf7, 0x5b, 0xdc, 0x53, 0xc1, 0xf7, 0x3a, 0x55, 0x54, 0x3a, 0xf7, 0x5b, + 0xf7, 0x2c, 0x25, 0xc2, 0xf7, 0x30, 0xfc, 0x2c, 0x55, 0xe5, 0x6, 0xfb, + 0x43, 0xfc, 0x59, 0x5, 0x54, 0x6, 0xf7, 0x44, 0xf7, 0x3a, 0x15, 0xf7, + 0x2, 0xf7, 0xb2, 0x5, 0xfb, 0xb2, 0x7, 0xe, 0x4d, 0xa, 0xf7, 0x78, + 0x77, 0x1, 0x54, 0xa, 0x3, 0x8e, 0x16, 0x24, 0xa, 0xfb, 0x95, 0xf8, + 0x18, 0x15, 0xf7, 0xac, 0xf0, 0x6a, 0xd4, 0xfb, 0x96, 0xfb, 0x24, 0x5, + 0xe, 0x4d, 0xa, 0xf7, 0x2f, 0xc2, 0x1, 0x54, 0xa, 0x3, 0xf7, 0x2d, + 0xf8, 0xf1, 0x15, 0xf7, 0x26, 0xf7, 0x7, 0xf7, 0x22, 0xfb, 0x7, 0xb3, + 0x9d, 0xfb, 0x24, 0xf7, 0x2c, 0x5, 0x3d, 0x6, 0xfb, 0x25, 0xfb, 0x2c, + 0x5, 0xfb, 0x3, 0xfd, 0x3, 0x15, 0x24, 0xa, 0xe, 0x8b, 0xc1, 0xf7, + 0x11, 0xc1, 0xf7, 0xaa, 0xc1, 0xda, 0xf7, 0x9, 0x12, 0x8e, 0xf7, 0x63, + 0x73, 0xdc, 0xca, 0xdc, 0x79, 0xf7, 0x60, 0x13, 0xf6, 0xf7, 0xde, 0xf9, + 0x18, 0x72, 0xa, 0xfb, 0x24, 0xfb, 0x9, 0x72, 0xa, 0xfb, 0x4b, 0xfd, + 0x8d, 0x15, 0x2d, 0xa, 0x6, 0x13, 0xe9, 0x39, 0xa, 0xe, 0x4d, 0xa, + 0x12, 0x54, 0xa, 0x17, 0x8e, 0x16, 0x25, 0xa, 0x13, 0x40, 0xf7, 0x3, + 0xf7, 0xbb, 0xf7, 0xb, 0xfb, 0xbb, 0x5, 0xfb, 0x9f, 0xf8, 0x7d, 0x79, + 0xa, 0xf7, 0x24, 0x5, 0xe, 0x4d, 0xa, 0xb0, 0xbd, 0xdb, 0xbe, 0x12, + 0x8e, 0xf7, 0x63, 0x83, 0xbe, 0xdb, 0xc0, 0x92, 0xf7, 0x60, 0x13, 0xfb, + 0x80, 0xf7, 0x5e, 0xf9, 0x47, 0x15, 0x58, 0xb4, 0x65, 0xbe, 0xbe, 0xb4, + 0xb1, 0xbe, 0xbe, 0x62, 0xb4, 0x58, 0x58, 0x62, 0x62, 0x58, 0x1e, 0xbe, + 0x8c, 0x15, 0xa1, 0x9d, 0x9d, 0xa1, 0xa1, 0x9d, 0x79, 0x75, 0x75, 0x79, + 0x79, 0x75, 0x75, 0x79, 0x9d, 0xa1, 0x1e, 0x13, 0xfd, 0x80, 0xfb, 0x8e, + 0xfd, 0x48, 0x15, 0x24, 0xa, 0xe, 0x8b, 0xc1, 0xf7, 0xb, 0xc1, 0xf7, + 0xa7, 0xc1, 0xdd, 0xbc, 0x1, 0x54, 0xa, 0x3, 0xf7, 0x31, 0xf9, 0x17, + 0x15, 0x9e, 0x93, 0x9e, 0xb4, 0xbc, 0x1b, 0xa1, 0x9d, 0x7e, 0x7c, 0xa0, + 0x1f, 0x79, 0xa4, 0xa7, 0x78, 0xb2, 0x1b, 0xcf, 0xad, 0xca, 0xb1, 0x96, + 0x1f, 0x58, 0x94, 0x5, 0x73, 0x83, 0x72, 0x66, 0x65, 0x1b, 0x75, 0x7a, + 0x9d, 0x9c, 0x75, 0x1f, 0x9a, 0x77, 0x72, 0x9a, 0x63, 0x1b, 0x52, 0x5b, + 0x5d, 0x56, 0x78, 0x1f, 0x23, 0xfd, 0x21, 0x15, 0x24, 0xa, 0xe, 0x8b, + 0xc1, 0xf7, 0x5b, 0xc2, 0xf7, 0x5c, 0xc1, 0x12, 0xf7, 0xb, 0xc2, 0xf7, + 0xb0, 0xc9, 0x74, 0xc8, 0x13, 0xf4, 0xb5, 0x16, 0xf7, 0xbd, 0x6, 0xf7, + 0x17, 0xe3, 0xb6, 0xf7, 0x0, 0xd8, 0x4b, 0xb5, 0x4b, 0x97, 0x1f, 0x13, + 0xf8, 0xc0, 0x9b, 0xb0, 0xc7, 0xc1, 0x1a, 0xf7, 0xb, 0x34, 0xaa, 0xfb, + 0xc, 0x1e, 0xfb, 0xa3, 0x55, 0xd8, 0xfc, 0x5a, 0x3e, 0x6, 0xf7, 0x18, + 0xf7, 0x8f, 0x15, 0xf7, 0x5f, 0x7, 0xf7, 0x2d, 0xf7, 0x17, 0x92, 0x24, + 0x32, 0x34, 0x79, 0x55, 0x1f, 0xfb, 0x23, 0xfb, 0x8f, 0x15, 0xf7, 0x58, + 0x7, 0x13, 0xf4, 0xf7, 0x5d, 0xf7, 0xe, 0x7c, 0x36, 0x37, 0x2e, 0x7f, + 0x4a, 0x1f, 0xe, 0x79, 0xc1, 0xf8, 0x7e, 0xc1, 0x1, 0xb9, 0xc3, 0xf8, + 0x13, 0xc1, 0x3, 0xf8, 0x9b, 0xf5, 0x15, 0x64, 0x56, 0x39, 0x6c, 0x47, + 0x1b, 0xfb, 0x9, 0x2a, 0xe9, 0xf7, 0x32, 0xf7, 0x3f, 0xf7, 0x1f, 0xce, + 0xd6, 0xcb, 0xd5, 0x64, 0x59, 0xaa, 0x1f, 0x31, 0xc1, 0xf7, 0x7d, 0x55, + 0x4e, 0x7, 0xbd, 0x56, 0x4c, 0x96, 0x56, 0x1b, 0xfb, 0x31, 0xfb, 0x5, + 0xfb, 0x1f, 0xfb, 0x2d, 0xfb, 0x39, 0xec, 0xfb, 0x21, 0xf7, 0x41, 0xda, + 0xe8, 0xa9, 0xb8, 0xc8, 0x1f, 0xe, 0xfb, 0x16, 0x76, 0xf7, 0x3f, 0xbf, + 0xf8, 0x5d, 0xbe, 0x1, 0xbd, 0xc4, 0xf8, 0x15, 0xc4, 0x3, 0xf7, 0x7c, + 0xfb, 0xb, 0x15, 0x83, 0x92, 0xa2, 0x73, 0xa7, 0x1b, 0xad, 0xb0, 0xa0, + 0xc5, 0xab, 0x7a, 0xa8, 0x6f, 0x94, 0x1f, 0x8d, 0xa1, 0x5, 0xe6, 0xd9, + 0xa3, 0xb5, 0xc9, 0x1f, 0x73, 0xbb, 0x5, 0x66, 0x55, 0x47, 0x72, 0x46, + 0x1b, 0xfb, 0x15, 0x29, 0xe1, 0xf7, 0x28, 0xf7, 0x43, 0xf7, 0x1f, 0xbb, + 0xd7, 0xcc, 0xc7, 0x6e, 0x5f, 0xb8, 0x1f, 0x35, 0xc4, 0xf7, 0x66, 0x52, + 0x52, 0x7, 0xbd, 0x43, 0x59, 0x92, 0x54, 0x1b, 0xfb, 0x33, 0x21, 0xfb, + 0x11, 0xfb, 0x24, 0xfb, 0x1e, 0xd4, 0xfb, 0xe, 0xf7, 0x28, 0x70, 0x1f, + 0x82, 0x42, 0x5, 0x8f, 0x94, 0x94, 0x8b, 0x94, 0x1b, 0x9a, 0x97, 0x7d, + 0x7f, 0x76, 0x7d, 0x81, 0x7c, 0x7d, 0x7b, 0x90, 0x9a, 0x82, 0x1f, 0xe, + 0x46, 0xa, 0xf7, 0x3, 0xc4, 0xf7, 0xe6, 0xc6, 0x3, 0xad, 0x16, 0xf7, + 0x7a, 0x6, 0xf7, 0x21, 0xf7, 0x34, 0xc4, 0xf7, 0x7b, 0xf7, 0x62, 0xfb, + 0x1c, 0xcf, 0xfb, 0x39, 0x1f, 0xfb, 0x7a, 0x54, 0xd8, 0xfc, 0x58, 0x3e, + 0x6, 0xf7, 0x1a, 0x16, 0xf8, 0x58, 0xeb, 0x7, 0xf7, 0x31, 0xe0, 0x47, + 0xfb, 0x2b, 0xfb, 0x35, 0x31, 0x43, 0xfb, 0x2c, 0x1f, 0xe, 0x8b, 0xc0, + 0xf7, 0x5c, 0xc1, 0xf7, 0x5d, 0xc1, 0x1, 0xf7, 0x1a, 0xc3, 0xf7, 0x7, + 0xc4, 0xef, 0xc3, 0x3, 0xbf, 0x16, 0xf8, 0x66, 0xf7, 0x4f, 0x53, 0xfb, + 0x1a, 0xfb, 0xa4, 0xf7, 0x5c, 0xf7, 0x7, 0x39, 0xc4, 0xf7, 0x6f, 0x52, + 0x38, 0xfb, 0x7, 0xf7, 0x5d, 0xf7, 0xa4, 0xfb, 0x1a, 0xc3, 0xf7, 0x50, + 0xfc, 0x66, 0x55, 0xdd, 0xfc, 0x5b, 0x39, 0x6, 0xe, 0x47, 0xa, 0xf7, + 0x58, 0xf8, 0xfe, 0x15, 0xf7, 0xb8, 0xf0, 0x69, 0xd5, 0xfb, 0xa3, 0xfb, + 0x25, 0x5, 0xfb, 0x18, 0xfd, 0x1c, 0x15, 0x2f, 0xa, 0xe, 0x4e, 0xa, + 0xf7, 0x7a, 0x77, 0x12, 0x61, 0xa, 0x17, 0xf7, 0x36, 0xf9, 0x5, 0x15, + 0x13, 0xfe, 0xf7, 0x2d, 0xf7, 0x7, 0xf7, 0x29, 0xfb, 0x7, 0xb5, 0x9d, + 0xfb, 0x2b, 0xf7, 0x2c, 0x5, 0x39, 0x6, 0xfb, 0x2b, 0xfb, 0x2b, 0x5, + 0x44, 0xfd, 0x18, 0x15, 0x2f, 0xa, 0xe, 0x4e, 0xa, 0xe5, 0xf7, 0x8, + 0x12, 0xf7, 0x1a, 0xc2, 0x93, 0xe0, 0xcb, 0xe1, 0x3c, 0xc4, 0xdd, 0xc3, + 0x13, 0xfe, 0x80, 0xf7, 0xee, 0xf9, 0x23, 0x15, 0xe1, 0xf7, 0x8, 0x35, + 0x6, 0xfb, 0x29, 0xfb, 0x8, 0x15, 0xe0, 0xf7, 0x8, 0x36, 0x6, 0xfb, + 0x26, 0xfd, 0x97, 0x15, 0x40, 0xa, 0x6, 0x13, 0xfd, 0x80, 0x2e, 0xa, + 0xe, 0x47, 0xa, 0xbe, 0x16, 0x2f, 0xa, 0xf8, 0x27, 0xf8, 0xc9, 0x15, + 0x96, 0xa9, 0xfb, 0xa4, 0xf7, 0x24, 0x69, 0x42, 0x5, 0xe, 0x8b, 0xc1, + 0xf7, 0x56, 0xc0, 0xf7, 0x63, 0xc1, 0x1, 0xf7, 0x1, 0xc3, 0xf7, 0xeb, + 0xcb, 0x3, 0xa7, 0x16, 0xf7, 0x8d, 0x6, 0xf7, 0x35, 0xf7, 0x1a, 0xc4, + 0xf7, 0x7f, 0xf7, 0x68, 0xfb, 0x33, 0xc5, 0xfb, 0x37, 0x1f, 0xfb, 0x72, + 0x55, 0xdc, 0xfb, 0x63, 0x3d, 0x56, 0xd9, 0xfb, 0x56, 0x3a, 0x6, 0xf7, + 0x1d, 0x16, 0xf7, 0x56, 0xf7, 0x4d, 0xc0, 0xfb, 0x4d, 0xf7, 0x63, 0xe0, + 0x7, 0xf7, 0x37, 0xea, 0x4c, 0xfb, 0x2d, 0xfb, 0x3b, 0x41, 0x44, 0xfb, + 0x31, 0x1f, 0xe, 0x8b, 0xbf, 0xf7, 0x27, 0xbf, 0xc3, 0xc0, 0xf7, 0x2b, + 0xbe, 0x1, 0xd8, 0xc7, 0xf8, 0x25, 0xc6, 0x3, 0x8e, 0xf7, 0x57, 0x15, + 0xe0, 0x6, 0xfb, 0x9, 0xaa, 0xe8, 0x3d, 0xf7, 0x30, 0x1b, 0xde, 0xdc, + 0xa6, 0xb6, 0xcc, 0x1f, 0x71, 0xb8, 0x5, 0x65, 0x53, 0x44, 0x72, 0x44, + 0x1b, 0x20, 0x35, 0xb8, 0xed, 0x6b, 0x1f, 0xf7, 0x83, 0x6, 0xa1, 0xbf, + 0x5, 0xfb, 0xa4, 0x6, 0x9b, 0x89, 0xa7, 0x8d, 0x9b, 0x1e, 0xf7, 0xb7, + 0x6, 0x9f, 0xc0, 0x5, 0xfb, 0xc1, 0x6, 0xe4, 0xa4, 0xd8, 0xc9, 0xf0, + 0x1b, 0xd5, 0xd5, 0x73, 0x64, 0xb3, 0x1f, 0x3e, 0xc6, 0xf7, 0x53, 0x50, + 0x5a, 0x7, 0xac, 0x56, 0x54, 0x9b, 0x3e, 0x1b, 0xfb, 0x1f, 0x28, 0x33, + 0xfb, 0x6, 0x6e, 0x1f, 0x4e, 0x6, 0x75, 0x56, 0x5, 0xd5, 0x6, 0x70, + 0x8c, 0x75, 0x8c, 0x80, 0x1e, 0x55, 0x6, 0xe, 0x8b, 0xc2, 0xf7, 0x5f, + 0xc2, 0xf7, 0x56, 0xc2, 0x1, 0xf7, 0x18, 0xc2, 0xf7, 0x35, 0xc2, 0xe3, + 0xc2, 0x3, 0xc1, 0x16, 0xf7, 0x9c, 0xc2, 0xfb, 0x17, 0xf7, 0x5f, 0xf7, + 0x35, 0x38, 0xc2, 0xf7, 0x72, 0x54, 0x37, 0xfb, 0x35, 0xf7, 0x56, 0xf7, + 0xc4, 0xfb, 0x11, 0xc2, 0xf7, 0x48, 0xfc, 0x80, 0x54, 0xd9, 0xfc, 0x58, + 0x3d, 0x6, 0xe, 0x79, 0xc2, 0xf7, 0x39, 0xc2, 0xf7, 0xa0, 0xc2, 0x1, + 0xad, 0xc5, 0xf8, 0x12, 0xc2, 0x3, 0xf7, 0xcc, 0x7c, 0xa, 0x7b, 0x6a, + 0x48, 0x79, 0x54, 0x1b, 0xfb, 0x23, 0x37, 0xf7, 0x8, 0xf7, 0x12, 0xf7, + 0x44, 0xf7, 0x2, 0x43, 0xa, 0x23, 0xfb, 0x1d, 0xfb, 0x37, 0xfb, 0x21, + 0xdd, 0x53, 0xa, 0xe, 0x79, 0xc2, 0xf7, 0x3b, 0xc2, 0xf7, 0x9e, 0xc2, + 0x1, 0xa7, 0xc5, 0xf8, 0x11, 0xc2, 0x3, 0xf7, 0xc5, 0x7c, 0xa, 0x76, + 0x4b, 0x67, 0x7e, 0x54, 0x1b, 0xfb, 0x23, 0x38, 0xf7, 0x8, 0xf7, 0x12, + 0xf7, 0x44, 0xf7, 0x1, 0x43, 0xa, 0x24, 0xfb, 0x1d, 0xfb, 0x37, 0xfb, + 0x21, 0xdc, 0x53, 0xa, 0x68, 0xf8, 0x6, 0x37, 0xa, 0x8b, 0xc2, 0xf7, + 0x5a, 0xc2, 0xf7, 0x5b, 0xc2, 0x1, 0xf7, 0x1, 0xc1, 0xf7, 0xa6, 0xc1, + 0x3, 0xab, 0x16, 0xf7, 0x70, 0xc2, 0x32, 0xf7, 0x5a, 0xf7, 0xa6, 0xfb, + 0x5a, 0x33, 0x54, 0xf7, 0x6f, 0xc2, 0x3e, 0xf8, 0x58, 0xd8, 0xc2, 0xfb, + 0x65, 0x54, 0xd9, 0xfb, 0x5b, 0xfb, 0xa6, 0xf7, 0x5b, 0xda, 0xc2, 0xfb, + 0x66, 0x54, 0xd8, 0xfc, 0x58, 0x3e, 0x6, 0xe, 0x46, 0xa, 0xf7, 0xa3, + 0xc2, 0x3, 0xeb, 0x16, 0xf8, 0x2c, 0xc2, 0xfb, 0x46, 0xf8, 0x58, 0xf7, + 0x38, 0xc2, 0xfc, 0x11, 0x54, 0xf7, 0x36, 0xfc, 0x58, 0xfb, 0x43, 0x6, + 0xe, 0x79, 0xc3, 0xf8, 0x68, 0xc3, 0x1, 0xec, 0xc5, 0xf7, 0xd, 0xc2, + 0xf7, 0x22, 0xc4, 0x3, 0xa3, 0x79, 0x15, 0xf7, 0x62, 0xc3, 0x40, 0xf8, + 0x68, 0xd1, 0xc3, 0xfb, 0x5c, 0x53, 0xd3, 0xfc, 0x68, 0x42, 0x6, 0xf7, + 0x90, 0xa0, 0x15, 0x85, 0x8c, 0xaa, 0x44, 0xf1, 0x1b, 0xf7, 0xb, 0x8c, + 0xf7, 0x24, 0xc2, 0x1f, 0x8c, 0xf7, 0xda, 0x5, 0xb7, 0xc2, 0xfb, 0x4c, + 0x54, 0xde, 0x6, 0x8a, 0xfb, 0xd9, 0x5, 0x6f, 0x8e, 0xfb, 0xc, 0x45, + 0x71, 0x5a, 0x95, 0x7f, 0xa, 0x6c, 0xa, 0x1, 0xf7, 0xa3, 0xc5, 0x3, + 0xf7, 0x48, 0xf8, 0xfe, 0x15, 0xf7, 0xc7, 0xf2, 0x68, 0xd3, 0xfb, 0xb1, + 0xfb, 0x25, 0x5, 0x44, 0xfd, 0x1c, 0x15, 0x32, 0xa, 0xe, 0x6c, 0xa, + 0x1, 0xf7, 0xa3, 0xc5, 0x3, 0xf7, 0x25, 0xf8, 0xfb, 0x15, 0xf7, 0x2e, + 0xf7, 0x7, 0xf7, 0x30, 0xfb, 0x7, 0xb7, 0x9d, 0xfb, 0x31, 0xf7, 0x2c, + 0x5, 0x35, 0x6, 0xfb, 0x2f, 0xfb, 0x2c, 0x5, 0x86, 0xfd, 0xd, 0x15, + 0x32, 0xa, 0xe, 0x6c, 0xa, 0xe3, 0xf7, 0x8, 0x1, 0xf7, 0xa3, 0xc5, + 0x3, 0xf7, 0xe6, 0xf9, 0x20, 0x76, 0xa, 0xfb, 0x31, 0xfb, 0x8, 0x76, + 0xa, 0x36, 0xfd, 0x94, 0x15, 0x32, 0xa, 0xe, 0x8b, 0xc1, 0xf8, 0x5e, + 0xc1, 0xcd, 0xf7, 0x8, 0x12, 0xf7, 0x95, 0xe5, 0x3f, 0xc5, 0x13, 0xe8, + 0xeb, 0x16, 0xf8, 0x2c, 0xc1, 0xfb, 0x43, 0xf8, 0x5e, 0x42, 0xa, 0xfc, + 0x5e, 0xfb, 0x43, 0x6, 0x13, 0xf0, 0xf7, 0x35, 0xf8, 0xd6, 0x76, 0xa, + 0xe, 0x6c, 0xa, 0x1, 0x8b, 0xa0, 0xf7, 0x8e, 0xc5, 0x3, 0xeb, 0x16, + 0x32, 0xa, 0xb9, 0xf9, 0x2d, 0x15, 0xf7, 0xc8, 0x26, 0x97, 0xa9, 0xfb, + 0xaf, 0xf7, 0x25, 0x5, 0xe, 0x79, 0xba, 0xf8, 0x72, 0xc2, 0x1, 0xb7, + 0xc2, 0xf7, 0xa2, 0xc0, 0x3, 0xb7, 0xca, 0x15, 0x4c, 0xc8, 0xd7, 0x79, + 0xd0, 0x1b, 0xf7, 0x31, 0x9a, 0xf4, 0xe9, 0x1f, 0xf7, 0xda, 0xf7, 0x1a, + 0xc2, 0xfc, 0x15, 0x54, 0xf7, 0x5a, 0xfb, 0xd9, 0x7, 0x36, 0x80, 0x47, + 0xfb, 0x6, 0x50, 0x35, 0x9a, 0x7f, 0xa, 0x8b, 0xc1, 0xf8, 0x59, 0xc2, + 0x1, 0xf6, 0xc0, 0xf7, 0x47, 0xf7, 0x59, 0x3, 0xa7, 0x16, 0xf7, 0x71, + 0xc1, 0x32, 0xf7, 0x38, 0x6, 0xdd, 0xdd, 0xe6, 0xfb, 0xa, 0xbd, 0x2d, + 0xb6, 0x33, 0x19, 0xf7, 0x26, 0xc1, 0xfb, 0x6, 0x6, 0x5e, 0xea, 0x4c, + 0xf0, 0x44, 0xde, 0xf7, 0x4d, 0xf7, 0x42, 0x18, 0xd3, 0xc2, 0xfb, 0x59, + 0x54, 0xc5, 0x6, 0xfb, 0x81, 0xfb, 0x73, 0x5, 0xf7, 0x73, 0xd9, 0xc2, + 0xfb, 0x66, 0x54, 0xda, 0xfc, 0x59, 0x3c, 0x7, 0xe, 0x46, 0xa, 0xf7, + 0x2c, 0xc2, 0xf7, 0xb7, 0xc2, 0x3, 0xb9, 0x16, 0xf8, 0x8f, 0xf7, 0x8b, + 0x54, 0xfb, 0x54, 0xfb, 0xb7, 0xf8, 0x58, 0xf7, 0x11, 0xc2, 0xfb, 0xb2, + 0x54, 0xf5, 0xfc, 0x58, 0x21, 0x6, 0xe, 0x75, 0xa, 0xf7, 0x2d, 0xc3, + 0xf7, 0xb4, 0xc3, 0x3, 0xb9, 0x16, 0xf8, 0x8f, 0xf7, 0x91, 0x53, 0xfb, + 0x5b, 0xfb, 0xb4, 0xf7, 0x4e, 0x6, 0xf7, 0x43, 0xd1, 0x5, 0xc2, 0x7, + 0xfb, 0x43, 0x44, 0x5, 0xf7, 0x6a, 0xf7, 0x12, 0xc1, 0xfb, 0xb5, 0x55, + 0xf6, 0xfb, 0x80, 0x7, 0x37, 0x69, 0x5, 0x55, 0x7, 0xdf, 0xad, 0x5, + 0xfb, 0x38, 0x20, 0x7, 0xe, 0x46, 0xa, 0xd1, 0xc3, 0xf7, 0xf2, 0xc3, + 0x3, 0xa0, 0x16, 0xf7, 0x3a, 0xc2, 0x4e, 0xf8, 0x58, 0x93, 0x6, 0xf7, + 0x26, 0xfc, 0xe, 0x5, 0xb6, 0x6, 0xf7, 0x23, 0xf8, 0xe, 0x5, 0x95, + 0xfc, 0x58, 0x52, 0x54, 0xf7, 0x34, 0xc2, 0x5c, 0xf8, 0x58, 0xb9, 0xc2, + 0xfb, 0x25, 0x6, 0xfb, 0x16, 0xfb, 0xeb, 0xfb, 0x19, 0xf7, 0xeb, 0x5, + 0xfb, 0x29, 0x54, 0xbc, 0xfc, 0x58, 0x5a, 0x6, 0xe, 0x46, 0xa, 0xe4, + 0xc4, 0xf7, 0xcd, 0xc3, 0x3, 0x92, 0x16, 0xf7, 0x8d, 0xc2, 0xfb, 0x2, + 0xf8, 0x41, 0x6, 0xf7, 0xba, 0xfc, 0x78, 0x5, 0xd6, 0xf8, 0x8f, 0xd9, + 0xc2, 0xfb, 0x93, 0x54, 0xf7, 0xd, 0xfc, 0x44, 0x6, 0xfb, 0xb9, 0xf8, + 0x7b, 0x5, 0xfb, 0x33, 0x54, 0xdd, 0xfc, 0x58, 0x39, 0x6, 0xe, 0x8c, + 0xbf, 0xf8, 0x5b, 0xc0, 0xd7, 0xbf, 0x99, 0xbc, 0x1, 0xe4, 0xc4, 0xf7, + 0xcd, 0xc3, 0x3, 0x92, 0x8c, 0x15, 0xf7, 0x8d, 0xbf, 0xfb, 0x2, 0xf8, + 0x45, 0x6, 0xf7, 0xba, 0xfc, 0x79, 0x5, 0xd6, 0xf8, 0x8f, 0xd9, 0xc0, + 0xfb, 0x88, 0x56, 0xf7, 0x2, 0xfc, 0x47, 0x6, 0xfb, 0xb9, 0xf8, 0x7c, + 0x5, 0xfb, 0x33, 0x56, 0xdd, 0xfc, 0x5b, 0x39, 0x6, 0xf7, 0x2e, 0xf8, + 0xe0, 0x15, 0x9f, 0x93, 0x9f, 0xb5, 0xbd, 0x1b, 0xa5, 0xa1, 0x78, 0x79, + 0xa4, 0x1f, 0x7a, 0xa3, 0xa5, 0x7f, 0xaf, 0x1b, 0xd2, 0xae, 0xca, 0xb3, + 0x96, 0x1f, 0x57, 0x94, 0x5, 0x72, 0x81, 0x72, 0x68, 0x64, 0x1b, 0x71, + 0x7b, 0x9c, 0x9e, 0x71, 0x1f, 0x99, 0x77, 0x72, 0x98, 0x64, 0x1b, 0x50, + 0x59, 0x5d, 0x55, 0x78, 0x1f, 0xe, 0x79, 0xc2, 0xf8, 0x7c, 0xc2, 0x1, + 0xb6, 0xc2, 0xf8, 0x22, 0xc8, 0x3, 0xb6, 0xf7, 0xa7, 0x15, 0xfb, 0x38, + 0xeb, 0xfb, 0x15, 0xf7, 0x32, 0xf7, 0x36, 0xed, 0xf7, 0x12, 0xf7, 0x3b, + 0xf7, 0x16, 0x4b, 0xf7, 0x43, 0xfb, 0x57, 0xfb, 0x45, 0x3d, 0xfb, 0x38, + 0xfb, 0x21, 0x1e, 0xc2, 0x16, 0xee, 0xb9, 0xf7, 0x2b, 0xf7, 0x2d, 0xf7, + 0x2d, 0xb9, 0xfb, 0x2e, 0x2b, 0xfb, 0x1e, 0x3d, 0x27, 0xfb, 0xd, 0xfb, + 0x9, 0x39, 0xec, 0xf7, 0x21, 0x1e, 0xe, 0x87, 0xc1, 0xf7, 0x4f, 0xc2, + 0xf7, 0x6c, 0xc1, 0x12, 0x9f, 0xc3, 0xf7, 0x81, 0xc3, 0xd2, 0xc2, 0xa8, + 0xc3, 0x17, 0xf8, 0x5, 0xbd, 0x15, 0xf7, 0x60, 0xd2, 0x4a, 0xc2, 0xf7, + 0x4c, 0x54, 0x4b, 0x44, 0xf7, 0x5b, 0x7, 0x13, 0xfa, 0xf7, 0x2f, 0x27, + 0xc3, 0xf7, 0x2e, 0xfb, 0xac, 0x6, 0xfb, 0x64, 0x43, 0xfb, 0x1a, 0xfb, + 0x2b, 0xfb, 0x1d, 0xd3, 0xfb, 0x24, 0xf7, 0x56, 0x1f, 0xf7, 0xba, 0xf7, + 0x32, 0x53, 0x23, 0x6, 0xfb, 0x67, 0x16, 0xfb, 0x1a, 0x87, 0x24, 0xd3, + 0xf7, 0x34, 0x1a, 0xf7, 0x3e, 0xf2, 0xcd, 0xf7, 0x1a, 0x85, 0x1e, 0xe, + 0x64, 0xa, 0xf7, 0x6d, 0x77, 0x57, 0xa, 0xf7, 0x51, 0xf8, 0xfe, 0x15, + 0xf7, 0xb0, 0xf0, 0x6a, 0xd5, 0xfb, 0x9b, 0xfb, 0x25, 0x5, 0xfb, 0x1a, + 0xfc, 0x5, 0x20, 0xa, 0xe, 0x64, 0xa, 0xd1, 0x76, 0x57, 0xa, 0xf7, + 0x32, 0xf9, 0x5, 0x49, 0xa, 0x41, 0xfb, 0xff, 0x20, 0xa, 0xe, 0x64, + 0xa, 0xcf, 0xf7, 0x9, 0x1, 0xb6, 0xc1, 0xe9, 0xde, 0xca, 0xde, 0xdc, + 0xc3, 0x3, 0xf7, 0xe5, 0xf9, 0x18, 0x62, 0xa, 0xfb, 0x26, 0xfb, 0x9, + 0x62, 0xa, 0xfb, 0x28, 0xfc, 0x76, 0x20, 0xa, 0xe, 0x64, 0xa, 0xf7, + 0x49, 0x77, 0x57, 0xa, 0xb6, 0xf7, 0xab, 0x20, 0xa, 0xc6, 0xf8, 0x2f, + 0x15, 0xf7, 0xb0, 0x45, 0x96, 0xa9, 0xfb, 0x9a, 0xf7, 0x1, 0x5, 0xe, + 0x7a, 0x76, 0xa5, 0xc2, 0xf8, 0x7b, 0xc2, 0x9c, 0x77, 0x12, 0xb2, 0xc2, + 0xf8, 0x2d, 0xc4, 0x13, 0xdc, 0xc1, 0x85, 0x15, 0xb6, 0x6b, 0xc2, 0xd6, + 0x5, 0x6c, 0xb4, 0xbe, 0x79, 0xc5, 0x1b, 0xf7, 0x36, 0xeb, 0xf7, 0x1b, + 0xf7, 0x38, 0xbf, 0x7c, 0xe1, 0x5a, 0xcd, 0x1f, 0xc5, 0xd9, 0x60, 0xac, + 0x56, 0x44, 0x5, 0x13, 0xec, 0xab, 0x65, 0x59, 0xa1, 0x48, 0x1b, 0xfb, + 0x45, 0x34, 0xfb, 0x31, 0xfb, 0x21, 0x38, 0xa5, 0x3f, 0xba, 0x55, 0x1f, + 0xd4, 0x93, 0x15, 0xf7, 0xa8, 0xf7, 0xff, 0x5, 0xad, 0x56, 0x93, 0x49, + 0x62, 0x1a, 0xfb, 0x13, 0x46, 0xfb, 0x7, 0xfb, 0x17, 0x5d, 0x63, 0x9a, + 0xa3, 0x6b, 0x1e, 0x65, 0xb1, 0x15, 0x69, 0xb7, 0x78, 0xc6, 0xc9, 0x1a, + 0xe4, 0xc0, 0xf7, 0x30, 0xf7, 0x2e, 0xc0, 0xb3, 0x7a, 0x71, 0xa9, 0x1e, + 0xe, 0x64, 0xa, 0xcc, 0xbc, 0x98, 0xbc, 0x57, 0xa, 0xf7, 0x3c, 0xf9, + 0x15, 0x15, 0x9f, 0x92, 0x9e, 0xb5, 0xbc, 0x1b, 0xa9, 0x9f, 0x7c, 0x79, + 0xa1, 0x1f, 0x7b, 0xa0, 0xa2, 0x7e, 0xb0, 0x1b, 0xcf, 0xad, 0xc6, 0xb2, + 0x96, 0x1f, 0x58, 0x94, 0x5, 0x73, 0x82, 0x75, 0x69, 0x65, 0x1b, 0x73, + 0x7b, 0x9a, 0x9d, 0x75, 0x1f, 0x9a, 0x78, 0x72, 0x99, 0x61, 0x1b, 0x52, + 0x5b, 0x52, 0x55, 0x78, 0x1f, 0x41, 0xfb, 0xfe, 0x20, 0xa, 0xe, 0x8b, + 0xc2, 0xf7, 0x1c, 0xc1, 0xf7, 0x9b, 0xc1, 0x1, 0xf7, 0x1e, 0xc2, 0xf7, + 0xb7, 0xc2, 0x3, 0xc7, 0x16, 0xf7, 0xb2, 0xc2, 0xfb, 0x2d, 0xf7, 0x1c, + 0xf7, 0x1a, 0x6, 0xf7, 0x5, 0xee, 0xca, 0xf7, 0xe, 0xe1, 0x50, 0xef, + 0xfb, 0x2c, 0x1f, 0xfb, 0xa0, 0x55, 0xd9, 0xfc, 0x59, 0x3d, 0x6, 0xf7, + 0x19, 0xf7, 0x52, 0x15, 0xf7, 0x9b, 0xf7, 0x18, 0x7, 0xdb, 0xda, 0x6a, + 0x28, 0x27, 0x37, 0x6c, 0x42, 0x1f, 0xe, 0xfb, 0x9, 0x76, 0xb6, 0xf7, + 0x11, 0x56, 0xc0, 0xf8, 0x86, 0xbf, 0x12, 0xb6, 0xc2, 0xf8, 0x26, 0xc4, + 0x13, 0xdc, 0xf7, 0x16, 0x31, 0x15, 0xa0, 0x5e, 0x5, 0xa3, 0xb8, 0xaf, + 0x9b, 0xb9, 0x1b, 0xaa, 0xa6, 0x7f, 0x80, 0xa4, 0x1f, 0x81, 0xa2, 0xa5, + 0x81, 0xb0, 0x1b, 0xae, 0xae, 0x98, 0xa1, 0xa5, 0x1f, 0x76, 0xb8, 0x5, + 0x7d, 0x76, 0x71, 0x81, 0x72, 0x1b, 0x72, 0x74, 0x95, 0x95, 0x73, 0x1f, + 0x96, 0x72, 0x71, 0x95, 0x6e, 0x1b, 0x7c, 0x7c, 0x86, 0x89, 0x7c, 0x1f, + 0x13, 0xbc, 0x99, 0x92, 0x97, 0x92, 0x97, 0x96, 0x8, 0xf7, 0x2a, 0xf7, + 0x8, 0xf7, 0xc, 0xf7, 0x42, 0xf7, 0x32, 0x3f, 0xf7, 0x2b, 0xfb, 0x4a, + 0xfb, 0x33, 0x2a, 0xfb, 0x2a, 0xfb, 0x33, 0xfb, 0x24, 0xcf, 0xfb, 0x0, + 0xf7, 0x10, 0x66, 0x1f, 0x70, 0x70, 0x5f, 0x70, 0x69, 0x79, 0x8, 0x6b, + 0xf7, 0xfd, 0x15, 0xf7, 0x16, 0xe0, 0xf7, 0x13, 0xf7, 0x7, 0xf7, 0x13, + 0xd6, 0xfb, 0xf, 0xfb, 0x1a, 0xfb, 0x4a, 0xfb, 0x1d, 0x50, 0x49, 0x48, + 0xfb, 0x18, 0xc1, 0xf7, 0x4f, 0x1e, 0xe, 0x8b, 0xc2, 0xf7, 0x55, 0xc2, + 0xf7, 0x60, 0xc2, 0x1, 0xf5, 0xc2, 0xf7, 0xac, 0xc2, 0x3, 0xa4, 0x16, + 0xf7, 0x6e, 0xc2, 0x39, 0xf7, 0x55, 0xf7, 0x8, 0x6, 0xb2, 0x5c, 0xe4, + 0xfb, 0x19, 0xb2, 0x47, 0x8, 0xf7, 0x17, 0xc2, 0x24, 0x6, 0x6a, 0xc1, + 0x4f, 0xe8, 0x63, 0xbb, 0x8, 0xce, 0x90, 0xe5, 0xab, 0xf7, 0xc, 0x1a, + 0xdf, 0x5b, 0xd2, 0xfb, 0xe, 0x1e, 0xfb, 0xc1, 0x54, 0xdc, 0xfc, 0x58, + 0x3a, 0x6, 0xf7, 0x1c, 0xf7, 0x8c, 0x15, 0xf7, 0x60, 0xf7, 0x26, 0x7, + 0xd2, 0xca, 0x74, 0x3c, 0x20, 0x24, 0x90, 0x41, 0x1f, 0x69, 0x68, 0x8b, + 0x69, 0x1b, 0xe, 0x77, 0xbf, 0x76, 0x76, 0xf8, 0xae, 0xbf, 0x7e, 0x77, + 0x12, 0xd3, 0xc2, 0x6e, 0xc1, 0xf7, 0xc2, 0xc1, 0x67, 0xc2, 0x13, 0x6a, + 0xd3, 0x81, 0x15, 0xc2, 0xb3, 0x6, 0x13, 0xa5, 0x60, 0xc9, 0xd8, 0x84, + 0xb9, 0x1b, 0xf7, 0x4, 0xf2, 0xc1, 0xf7, 0x9, 0xf7, 0xd, 0xfb, 0x2, + 0x9a, 0x28, 0x9a, 0x1f, 0x42, 0x97, 0x2e, 0xaa, 0xd8, 0x1a, 0xcb, 0xcc, + 0xb5, 0xe5, 0x1e, 0x13, 0x9a, 0xbf, 0xc6, 0x75, 0x68, 0xaf, 0x1f, 0x32, + 0xc1, 0xf7, 0x4d, 0x55, 0x6d, 0x7, 0x13, 0xa5, 0xa7, 0x64, 0x50, 0x9a, + 0x57, 0x1b, 0xfb, 0x23, 0x4c, 0x3a, 0x37, 0xfb, 0xe, 0xf7, 0x14, 0x67, + 0xdf, 0x80, 0x1f, 0xdd, 0x80, 0xdb, 0x80, 0x3a, 0x1a, 0x4a, 0x4a, 0x5d, + 0x23, 0x1e, 0x13, 0x6a, 0x4c, 0x4b, 0x9f, 0xb3, 0x5a, 0x1f, 0xd9, 0x54, + 0x7, 0xe, 0x77, 0xc3, 0x73, 0x76, 0xf8, 0xac, 0xc3, 0x7f, 0x77, 0xab, + 0xb7, 0xf7, 0x46, 0x77, 0x12, 0xd2, 0xc3, 0x6d, 0xc2, 0xf7, 0xc1, 0xc2, + 0x62, 0xc8, 0x13, 0x6e, 0x80, 0xd2, 0x82, 0x15, 0xc3, 0xbe, 0x6, 0x13, + 0xad, 0x40, 0x5f, 0xca, 0xd9, 0x79, 0xba, 0x1b, 0xf7, 0x5, 0xef, 0xc2, + 0xf7, 0xa, 0xf7, 0x9, 0xfb, 0xe, 0x9b, 0x2e, 0x95, 0x1f, 0x44, 0x93, + 0x31, 0x9e, 0xe4, 0x1a, 0xcc, 0xcd, 0xbd, 0xe7, 0x1e, 0x13, 0x9e, 0x80, + 0xbf, 0xc1, 0x6f, 0x67, 0xb0, 0x1f, 0x3b, 0xc2, 0xf7, 0x50, 0x54, 0x62, + 0x7, 0x13, 0xad, 0x40, 0xa8, 0x63, 0x55, 0xa3, 0x57, 0x1b, 0xfb, 0x26, + 0x4b, 0x28, 0x36, 0xfb, 0x11, 0xf7, 0x1c, 0x73, 0xe2, 0x82, 0x1f, 0xd8, + 0x83, 0xd1, 0x7e, 0x3f, 0x1a, 0x49, 0x53, 0x61, 0x22, 0x1e, 0x13, 0x6e, + 0x80, 0x4b, 0x4a, 0xa7, 0xb4, 0x59, 0x1f, 0xd0, 0x53, 0x7, 0xf7, 0x5d, + 0xf8, 0x59, 0x37, 0xa, 0xfb, 0x16, 0x76, 0xf7, 0x47, 0xca, 0xf7, 0x48, + 0xc9, 0xf7, 0x49, 0xcd, 0x12, 0xd2, 0xc6, 0x57, 0xc5, 0xf7, 0x1e, 0xef, + 0xd1, 0xc6, 0x63, 0xcc, 0x13, 0xfa, 0x80, 0xd2, 0xa7, 0x15, 0xc6, 0xcd, + 0x6, 0xb6, 0x73, 0xb5, 0x6e, 0xc8, 0x81, 0x88, 0x3f, 0x18, 0x8e, 0x92, + 0x95, 0x8c, 0x94, 0x1b, 0x99, 0x98, 0x7f, 0x7a, 0x77, 0x7a, 0x80, 0x78, + 0x7e, 0x7d, 0x90, 0x95, 0x81, 0x1f, 0x7c, 0x60, 0x5, 0x7c, 0x9c, 0xa2, + 0x84, 0x9e, 0x1b, 0xb4, 0xaf, 0xb2, 0xbd, 0xb5, 0x72, 0xa2, 0x77, 0x8d, + 0x1f, 0xa2, 0x7, 0xf7, 0x9, 0x8d, 0xdd, 0xce, 0xf2, 0x1a, 0xe5, 0x3f, + 0xb1, 0x3f, 0x90, 0x1e, 0x13, 0xf7, 0x0, 0x40, 0x92, 0xfb, 0x39, 0x7a, + 0xf2, 0x1a, 0xd6, 0xec, 0x98, 0xba, 0xc7, 0xc5, 0x6b, 0x6a, 0xb9, 0x1e, + 0x51, 0xc6, 0xf7, 0x51, 0x50, 0x4f, 0x7, 0xac, 0x5a, 0x52, 0xa6, 0x4d, + 0x1b, 0xfb, 0xb, 0x3c, 0x4d, 0x24, 0xfb, 0x22, 0xf7, 0x42, 0x8d, 0xe3, + 0x87, 0x1f, 0x13, 0xfa, 0x80, 0xbf, 0x89, 0xd2, 0x86, 0x43, 0x1a, 0x33, + 0xfb, 0x5, 0x7e, 0x63, 0x46, 0x50, 0xb1, 0xb7, 0x57, 0x1e, 0xc6, 0x50, + 0x7, 0xe, 0x8b, 0xc2, 0xf7, 0xd3, 0xf7, 0x50, 0x54, 0xc2, 0x12, 0xb0, + 0xc3, 0xf7, 0x46, 0xc3, 0xf7, 0x47, 0xc3, 0x13, 0xbc, 0xf7, 0x26, 0x16, + 0xf7, 0xc6, 0xc2, 0xfb, 0x11, 0xf8, 0x58, 0xf7, 0x47, 0x6, 0x13, 0xdc, + 0xfb, 0x19, 0xc3, 0xf7, 0x50, 0xfc, 0xa1, 0xfb, 0x50, 0xc3, 0x7, 0x13, + 0xbc, 0xf7, 0x19, 0xf7, 0x46, 0xfc, 0x58, 0xfb, 0x11, 0x7, 0xe, 0x8b, + 0xc1, 0xf5, 0xc1, 0xf7, 0x42, 0xc1, 0xf7, 0x12, 0xc1, 0x1, 0xf7, 0x40, + 0xbc, 0xf7, 0x95, 0xbe, 0x3, 0xf7, 0xf9, 0x16, 0xc1, 0xfb, 0x1c, 0xf5, + 0xf7, 0x1a, 0x7, 0xf7, 0x15, 0xb8, 0xc5, 0xde, 0xe6, 0x5f, 0xbd, 0xfb, + 0x18, 0x1f, 0xfb, 0x18, 0xf7, 0x12, 0xee, 0xc1, 0xfb, 0x8e, 0x55, 0xf1, + 0xfc, 0x96, 0x25, 0x55, 0x6, 0xf7, 0x2b, 0xf8, 0x18, 0x15, 0xf7, 0x18, + 0x6, 0xaf, 0xa9, 0x85, 0x80, 0xa2, 0x1f, 0xa3, 0x80, 0x97, 0x73, 0x66, + 0x1a, 0x68, 0x7f, 0x74, 0x73, 0x80, 0x1e, 0x80, 0x74, 0x6e, 0x86, 0x68, + 0x1b, 0xfb, 0x1a, 0x6, 0xe, 0x79, 0xbe, 0xf8, 0x6e, 0xc2, 0x1, 0xec, + 0xbf, 0xf7, 0xc5, 0xbf, 0x3, 0x9c, 0xf8, 0x8f, 0x15, 0xdb, 0xfb, 0xd1, + 0x6, 0xfb, 0x17, 0xc1, 0x3e, 0xf7, 0x2c, 0xf7, 0x12, 0xd8, 0xd4, 0xf7, + 0x1b, 0x1e, 0xf7, 0xd1, 0xd8, 0xc2, 0xfb, 0x7c, 0x54, 0xf2, 0xfb, 0xd1, + 0x7, 0xfb, 0xf, 0x42, 0x69, 0x3c, 0x21, 0x5c, 0xb8, 0xf7, 0x4, 0x1e, + 0xf7, 0xd1, 0xf5, 0xc2, 0xfb, 0x82, 0x7, 0xe, 0x6b, 0xa, 0xf7, 0x7a, + 0x77, 0x55, 0xa, 0xf7, 0x52, 0xf8, 0xfe, 0x15, 0xf7, 0xab, 0xf0, 0x6b, + 0xd5, 0xfb, 0x97, 0xfb, 0x25, 0x5, 0xfb, 0x35, 0xfb, 0x20, 0x34, 0xa, + 0xe, 0x6b, 0xa, 0x5b, 0xa, 0xfb, 0x14, 0xd5, 0x2a, 0x30, 0xa, 0xf7, + 0x21, 0xc9, 0x49, 0xa, 0xe, 0x6b, 0xa, 0xf7, 0x10, 0xf7, 0x9, 0x5b, + 0xa, 0xfb, 0x1b, 0xcf, 0x31, 0xf7, 0x1f, 0x31, 0xa, 0xbf, 0xf7, 0xc, + 0x4f, 0xa, 0xf7, 0xd0, 0xdc, 0x62, 0xa, 0xfb, 0x22, 0xfb, 0x9, 0x62, + 0xa, 0xe, 0x6b, 0xa, 0xf7, 0x7a, 0x77, 0x1, 0xeb, 0xbf, 0xf7, 0xc6, + 0xbf, 0x3, 0x9c, 0xf8, 0x90, 0x34, 0xa, 0xf7, 0x1e, 0xf7, 0x30, 0x79, + 0xa, 0xf7, 0x25, 0x5, 0xe, 0x93, 0x76, 0xf8, 0x9c, 0xc2, 0x1, 0x87, + 0xf7, 0x77, 0xf7, 0x31, 0xf7, 0x74, 0x3, 0xf7, 0x9b, 0x7e, 0x15, 0xd4, + 0x6, 0xf7, 0x5c, 0xf8, 0x9c, 0x5, 0xcf, 0xc2, 0xfb, 0x74, 0x54, 0xeb, + 0x6, 0xfb, 0x45, 0xfc, 0x61, 0xfb, 0x43, 0xf8, 0x61, 0x5, 0xee, 0xc2, + 0xfb, 0x77, 0x54, 0xcb, 0x6, 0xe, 0x96, 0x76, 0xf8, 0x63, 0x77, 0xd5, + 0xc2, 0x1, 0x9f, 0xf7, 0x5a, 0xf7, 0x37, 0xf7, 0x5b, 0x3, 0xf7, 0x10, + 0x81, 0x15, 0xca, 0x6, 0xf7, 0x5, 0xf7, 0xfd, 0xf7, 0xa, 0xfb, 0xfd, + 0x5, 0xc8, 0x6, 0xc4, 0xf8, 0x99, 0x5, 0xb7, 0xc2, 0xfb, 0x5b, 0x54, + 0xee, 0x6, 0x63, 0xfc, 0x36, 0xfb, 0xa, 0xf8, 0x0, 0x5, 0x62, 0x6, + 0xfb, 0x8, 0xfc, 0x2, 0x5e, 0xf8, 0x38, 0x5, 0xed, 0xc2, 0xfb, 0x5a, + 0x54, 0xb9, 0x6, 0xe, 0x46, 0xa, 0xa2, 0x16, 0xf7, 0x7e, 0xc2, 0x22, + 0x6, 0xf7, 0x2a, 0xf7, 0x58, 0xf7, 0x26, 0xfb, 0x58, 0x5, 0x2d, 0x54, + 0xf7, 0x73, 0xc2, 0x4a, 0x6, 0xfb, 0x46, 0xf7, 0x84, 0xf7, 0x32, 0xf7, + 0x68, 0x5, 0xcd, 0xc2, 0xfb, 0x53, 0x54, 0xc8, 0x6, 0xfb, 0x13, 0xfb, + 0x3f, 0xfb, 0x14, 0xf7, 0x3f, 0x5, 0xcf, 0xc2, 0xfb, 0x5a, 0x54, 0xce, + 0x6, 0xf7, 0x32, 0xfb, 0x68, 0xfb, 0x48, 0xfb, 0x84, 0x5, 0x4a, 0x6, + 0xe, 0x75, 0xa, 0xa3, 0xf7, 0x5f, 0xbb, 0xc3, 0xb9, 0xf7, 0x5b, 0x3, + 0xf7, 0x27, 0x16, 0xf7, 0xcb, 0xc1, 0xfb, 0x13, 0xf7, 0x43, 0x6, 0xf7, + 0x46, 0xf7, 0xab, 0x5, 0xce, 0xc1, 0xfb, 0x5b, 0x55, 0xd2, 0x6, 0xfb, + 0x25, 0xfb, 0x76, 0xfb, 0x28, 0xf7, 0x76, 0x5, 0xd3, 0xc1, 0xfb, 0x5f, + 0x55, 0xd0, 0x6, 0xf7, 0x4a, 0xfb, 0xab, 0x5, 0xfb, 0x43, 0xfb, 0x14, + 0x7, 0xe, 0x8b, 0xc1, 0xf8, 0x5d, 0xc1, 0xf7, 0x78, 0x77, 0x81, 0xa, + 0xf7, 0x27, 0x16, 0x36, 0xa, 0xb0, 0xf8, 0xc9, 0x15, 0xf7, 0xba, 0xf0, + 0x69, 0xd4, 0xfb, 0xa4, 0xfb, 0x24, 0x5, 0xe, 0x8b, 0xc1, 0xf8, 0x5d, + 0xc1, 0xf7, 0xe, 0xf7, 0x15, 0x81, 0xa, 0xf7, 0xe5, 0xf9, 0x43, 0x15, + 0xe1, 0xf7, 0x15, 0x35, 0x6, 0xfb, 0x2b, 0xfb, 0x15, 0x15, 0xe0, 0xf7, + 0x15, 0x36, 0x6, 0x64, 0xfd, 0xc4, 0x15, 0x36, 0xa, 0xe, 0x75, 0xa, + 0xf7, 0xa, 0xbf, 0xf7, 0xb5, 0xc2, 0x3, 0xe1, 0x16, 0xf8, 0x40, 0xf7, + 0x5f, 0x54, 0xfb, 0x29, 0xfb, 0xc1, 0x6, 0xf7, 0xf8, 0xf8, 0x5d, 0x5, + 0xbe, 0xfc, 0x20, 0xfb, 0x51, 0xbf, 0xf7, 0x1b, 0xf7, 0xa3, 0x7, 0xfb, + 0xf7, 0xfc, 0x5b, 0x5, 0xe, 0x8b, 0xc2, 0xf8, 0x63, 0xc2, 0x1, 0xf7, + 0xa, 0xbf, 0xf7, 0xb7, 0xc0, 0x3, 0xe1, 0x16, 0xf8, 0x40, 0xf7, 0x78, + 0x56, 0xfb, 0x41, 0xfb, 0xc2, 0x6, 0xf7, 0xf7, 0xf8, 0x66, 0x5, 0xbf, + 0xfc, 0x20, 0xfb, 0x68, 0xbf, 0xf7, 0x31, 0xf7, 0xa4, 0x7, 0xfb, 0xf8, + 0xfc, 0x64, 0x5, 0xf7, 0x52, 0xf8, 0xd2, 0x15, 0xd9, 0x6, 0xf7, 0x21, + 0xf7, 0x33, 0x63, 0x9d, 0xfb, 0x20, 0xfb, 0xb, 0xfb, 0x23, 0xf7, 0xb, + 0x64, 0x78, 0x5, 0xe, 0x88, 0xc2, 0xf7, 0x33, 0xc1, 0xf7, 0xb, 0xc4, + 0x1, 0xba, 0xc4, 0xf7, 0xca, 0xc2, 0x3, 0xf1, 0xf7, 0xe1, 0x15, 0xd2, + 0xa9, 0xcf, 0xa1, 0xbc, 0x8a, 0xdf, 0x8a, 0xbb, 0x6b, 0x83, 0x28, 0x8, + 0x95, 0x5e, 0x5b, 0x8e, 0x5d, 0x1b, 0xfb, 0xd, 0x20, 0x5c, 0x29, 0x4a, + 0xc0, 0x45, 0xf7, 0x8, 0xea, 0xd7, 0xc2, 0xb4, 0xa7, 0x1f, 0x37, 0xf7, + 0x1e, 0xc2, 0x37, 0xf7, 0x85, 0x7, 0xf4, 0x49, 0xb6, 0xfb, 0x7, 0x40, + 0x3b, 0x6e, 0x71, 0x5c, 0x1e, 0xf7, 0xdc, 0xfb, 0x83, 0x15, 0x4f, 0x58, + 0x46, 0x55, 0x39, 0x1b, 0x4c, 0x5e, 0xbb, 0xb1, 0xd2, 0xdd, 0xa0, 0xe3, + 0xbc, 0xc0, 0x88, 0x80, 0xb1, 0x1f, 0xe, 0x3e, 0xa, 0xf7, 0x30, 0xf8, + 0x83, 0x15, 0xf7, 0xbb, 0xf2, 0x69, 0xd5, 0xfb, 0xa5, 0xfb, 0x26, 0x5, + 0x5a, 0xfb, 0x44, 0x23, 0xa, 0x3e, 0xa, 0xf7, 0x16, 0xf8, 0x74, 0x15, + 0xf7, 0x2d, 0xf7, 0xa, 0xf7, 0x2a, 0xfb, 0xa, 0xb6, 0x9c, 0xfb, 0x2c, + 0xf7, 0x31, 0x5, 0x38, 0x6, 0xfb, 0x2d, 0xfb, 0x31, 0x5, 0x92, 0xfb, + 0x27, 0x23, 0xa, 0x6e, 0xa, 0xf7, 0x61, 0xf8, 0x85, 0x15, 0xf7, 0x64, + 0xf1, 0x5e, 0xd4, 0xfb, 0x4a, 0xfb, 0x24, 0x5, 0xe, 0x7c, 0xc3, 0x6a, + 0xc3, 0xf7, 0x2b, 0xc3, 0xf7, 0x7, 0xc3, 0xe3, 0xf7, 0x7, 0x12, 0xba, + 0xc5, 0xbf, 0xe2, 0xcc, 0xe1, 0x9e, 0xc3, 0x13, 0x7f, 0x80, 0xf7, 0xc9, + 0xf8, 0xa6, 0x15, 0xe1, 0xf7, 0x7, 0x35, 0x6, 0xfb, 0x2c, 0x60, 0xa, + 0x4d, 0xfb, 0xbb, 0x28, 0xa, 0x1f, 0x13, 0xbf, 0x80, 0x3d, 0xa, 0x1e, + 0x29, 0xa, 0x2a, 0xa, 0x7c, 0xc1, 0xf7, 0x42, 0xc2, 0xf7, 0xa, 0xc2, + 0x1, 0xa3, 0xc4, 0xf7, 0x4e, 0xc3, 0x3, 0xf7, 0xba, 0xd7, 0x15, 0x58, + 0x9f, 0xbf, 0x63, 0xda, 0x1b, 0xb8, 0xb9, 0x96, 0x96, 0xb2, 0x1f, 0x7f, + 0xc1, 0x5, 0x82, 0x6b, 0x65, 0x7e, 0x67, 0x1b, 0x2e, 0x62, 0xda, 0xde, + 0x1f, 0x97, 0xf7, 0x8f, 0x7, 0xf4, 0x8c, 0x76, 0xf7, 0xf, 0xfb, 0x13, + 0x1b, 0x53, 0x6a, 0x71, 0x62, 0x70, 0x1f, 0x99, 0x85, 0x7d, 0xc0, 0x2b, + 0x1b, 0x54, 0x58, 0x7e, 0x7b, 0x5f, 0x1f, 0x96, 0x56, 0x5, 0x98, 0xad, + 0xbe, 0x99, 0xb4, 0x1b, 0xd2, 0x99, 0x68, 0x53, 0x1f, 0x70, 0x7, 0xfb, + 0x7, 0x8c, 0xfb, 0x14, 0x75, 0xfb, 0x1e, 0x1a, 0x34, 0xcd, 0x66, 0xc9, + 0xa5, 0xc4, 0x90, 0xe1, 0xc6, 0x1e, 0xaa, 0xf7, 0x54, 0x15, 0xcb, 0x8f, + 0xb3, 0xc1, 0xc9, 0x1b, 0xd6, 0x91, 0x49, 0x57, 0x92, 0x1f, 0xfb, 0x90, + 0xfb, 0x21, 0x15, 0x75, 0x7f, 0x64, 0x49, 0x4b, 0x1b, 0x63, 0x6c, 0xa6, + 0xb9, 0xf0, 0xf7, 0x0, 0x8b, 0xd9, 0x1f, 0xe, 0x3e, 0xa, 0xf7, 0x1a, + 0xf8, 0xe8, 0x15, 0xf7, 0xbd, 0x24, 0x96, 0xaa, 0xfb, 0xa5, 0xf7, 0x28, + 0x5, 0x41, 0xfb, 0xd6, 0x23, 0xa, 0x86, 0xc0, 0x64, 0xc2, 0xf7, 0x3e, + 0xc1, 0xf7, 0x5f, 0xbf, 0x1, 0xc9, 0xc2, 0x91, 0xbf, 0x3, 0xf7, 0xf4, + 0xbb, 0x15, 0xae, 0x59, 0x5, 0xf7, 0x2a, 0xc2, 0xfb, 0x11, 0x6, 0x72, + 0xb0, 0xa6, 0xb0, 0xa1, 0xc0, 0x91, 0xc2, 0x19, 0xd8, 0xc1, 0xfb, 0xd, + 0x6, 0x60, 0x7b, 0x43, 0x71, 0x63, 0x1e, 0xfb, 0x22, 0xf7, 0x5e, 0x87, + 0x8f, 0x69, 0xb8, 0x8a, 0xb2, 0x19, 0xc0, 0x89, 0xc2, 0x99, 0xb5, 0x1b, + 0xb9, 0xa9, 0x74, 0x7a, 0x9a, 0x1f, 0xa9, 0xb7, 0x5, 0xa7, 0x6e, 0x5d, + 0x9f, 0x5e, 0x1b, 0x40, 0x42, 0x68, 0x42, 0x5f, 0xa4, 0x5c, 0xa6, 0x64, + 0x1f, 0x20, 0x50, 0x85, 0x38, 0x6b, 0x1a, 0x50, 0xb0, 0x34, 0xf6, 0xc3, + 0xc0, 0xa2, 0xb3, 0xb0, 0x1e, 0x6e, 0xb7, 0x15, 0x75, 0x73, 0x6e, 0x6b, + 0x54, 0x1b, 0x59, 0x5b, 0xa7, 0xd8, 0xc3, 0xbb, 0xbd, 0xb0, 0x9b, 0x1f, + 0xe, 0x41, 0xa, 0xc8, 0xf7, 0x38, 0x12, 0xba, 0xc5, 0xe6, 0xf7, 0x46, + 0xb3, 0xc3, 0x13, 0xbf, 0xf7, 0x58, 0xf8, 0xe4, 0x15, 0x5d, 0xb2, 0x67, + 0xbd, 0xbd, 0xb2, 0xaf, 0xb9, 0xb9, 0x64, 0xaf, 0x59, 0x59, 0x64, 0x67, + 0x5d, 0x1e, 0xc1, 0x16, 0x9d, 0x9b, 0x99, 0x9e, 0x9e, 0x9b, 0x7d, 0x79, + 0x7a, 0x7b, 0x7c, 0x78, 0x78, 0x7b, 0x9a, 0x9c, 0x1e, 0xfb, 0x2f, 0xfb, + 0x86, 0x2c, 0xa, 0xf7, 0xa4, 0xbe, 0x1, 0x6f, 0xf9, 0x24, 0x3, 0xf7, + 0x5d, 0x70, 0xa, 0xf8, 0x55, 0x80, 0xa, 0xa7, 0x5e, 0xf7, 0x7a, 0xf7, + 0x4b, 0xfb, 0x7a, 0x78, 0xa, 0xfc, 0x59, 0x5d, 0xa, 0x7c, 0xf9, 0x3, + 0x1, 0xf7, 0xa8, 0xbe, 0x3, 0xf7, 0x8, 0xf7, 0x66, 0x15, 0xf7, 0x4d, + 0xfb, 0x75, 0xf7, 0x4b, 0xf7, 0x7b, 0x5e, 0xa7, 0xfb, 0x4, 0xfb, 0x2e, + 0x5, 0xf8, 0x9a, 0x58, 0xfc, 0x9c, 0x7, 0xfb, 0xf, 0xf7, 0x2f, 0x5, + 0xe, 0x7d, 0xa, 0xf7, 0x61, 0x70, 0xa, 0xf8, 0xb5, 0xbe, 0xfc, 0xb7, + 0x5d, 0xa, 0x7d, 0xa, 0x73, 0xf7, 0xa4, 0x15, 0xf8, 0xb5, 0x80, 0xa, + 0xa7, 0x5e, 0xf7, 0x79, 0xf7, 0x4b, 0xfb, 0x79, 0x78, 0xa, 0xfc, 0xb7, + 0x6, 0xe, 0xf8, 0x1c, 0xf7, 0x14, 0x1, 0xf7, 0xa8, 0xbe, 0x3, 0xf7, + 0xa8, 0x16, 0xbe, 0xf8, 0x9a, 0x6, 0xf7, 0x4, 0xfb, 0x2e, 0xb8, 0xa7, + 0xfb, 0x4b, 0xf7, 0x75, 0xfb, 0x4d, 0xfb, 0x75, 0xb0, 0x6f, 0xf7, 0xf, + 0xf7, 0x30, 0x5, 0xe, 0xf8, 0xb, 0x76, 0xf7, 0xa0, 0x77, 0x1, 0xe9, + 0xf8, 0x30, 0x3, 0xe9, 0xf7, 0xf6, 0x15, 0xd8, 0xa6, 0xd2, 0xc6, 0xc5, + 0xc5, 0xc7, 0x4e, 0xd0, 0x53, 0xd8, 0x71, 0x8, 0xba, 0x7, 0x2a, 0xd6, + 0x5e, 0xb9, 0x63, 0xee, 0x8, 0x58, 0x6, 0x68, 0x2d, 0x5a, 0x53, 0x2c, + 0x44, 0x8, 0xe, 0xf7, 0x5b, 0xbe, 0x9e, 0xbe, 0x12, 0xc8, 0xf8, 0x71, + 0x17, 0xf6, 0xf7, 0x59, 0x15, 0xaa, 0xa1, 0xa6, 0xb4, 0xb2, 0x1b, 0xb1, + 0xaa, 0x77, 0x78, 0xac, 0x1f, 0x7a, 0xa9, 0xaa, 0x7b, 0xb1, 0x1b, 0xcd, + 0xb6, 0xba, 0xb8, 0xac, 0x1f, 0x5f, 0xaa, 0x5, 0x77, 0x7d, 0x5e, 0x57, + 0x65, 0x1b, 0x71, 0x73, 0x9b, 0x9b, 0x6f, 0x1f, 0x13, 0xe0, 0x9e, 0x6a, + 0x64, 0xa0, 0x53, 0x1b, 0x4c, 0x6b, 0x5e, 0x62, 0x68, 0x1f, 0xe, 0xf7, + 0x95, 0xf7, 0xf2, 0x1, 0xf7, 0xa0, 0xcb, 0x3, 0xf7, 0x37, 0xf7, 0xc0, + 0x15, 0xcc, 0x60, 0xd5, 0xf7, 0x16, 0xd5, 0xfb, 0x16, 0xc8, 0xb5, 0x2a, + 0xf7, 0x9, 0xf7, 0x24, 0xa6, 0x79, 0xcf, 0xfb, 0x20, 0x57, 0x98, 0xf7, + 0x28, 0x5, 0x40, 0x6, 0x94, 0xfb, 0x29, 0xfb, 0x1d, 0xc0, 0x77, 0x47, + 0xf7, 0x26, 0x6f, 0x5, 0xe, 0x7c, 0xb1, 0xde, 0xb1, 0xf7, 0x68, 0xb5, + 0xf7, 0x1, 0xb2, 0x1, 0xb0, 0xb6, 0xe5, 0xb3, 0xf7, 0x24, 0xb7, 0xf7, + 0xd, 0xb7, 0x3, 0xf7, 0xf6, 0xf7, 0x40, 0x15, 0x6e, 0x93, 0xa0, 0x66, + 0xb9, 0x1b, 0xdc, 0xc0, 0xe9, 0xf7, 0x0, 0xf7, 0x23, 0xfb, 0x1, 0xea, + 0xfb, 0x24, 0xfb, 0x47, 0x2d, 0xfb, 0x15, 0xfb, 0x31, 0xfb, 0x3a, 0xf7, + 0x0, 0xfb, 0x1, 0xf7, 0x44, 0xdf, 0xd0, 0xa7, 0xb3, 0xcc, 0x1f, 0x77, + 0xb3, 0x5, 0x76, 0x6e, 0x2c, 0x5a, 0x41, 0x1b, 0xfb, 0x11, 0xfb, 0x8, + 0xdd, 0xf7, 0x2f, 0xf7, 0xe, 0xd2, 0xf7, 0x11, 0xf7, 0x33, 0xf7, 0xb, + 0xe5, 0x36, 0xfb, 0x5, 0x3e, 0x67, 0x33, 0x58, 0x59, 0x91, 0xd9, 0xb6, + 0x95, 0x1f, 0xac, 0xf7, 0x1c, 0x5, 0x5f, 0x6, 0x7f, 0x5a, 0x5, 0xb6, + 0x76, 0x72, 0x8e, 0x6c, 0x1b, 0x3d, 0x59, 0x2a, 0x2a, 0x5e, 0x99, 0x56, + 0xce, 0xb4, 0xb6, 0xac, 0xac, 0x9e, 0x1f, 0xfb, 0x24, 0xa9, 0x15, 0xc1, + 0xa6, 0xef, 0xc8, 0xbd, 0x91, 0x67, 0x79, 0x4a, 0x64, 0x30, 0x51, 0x69, + 0x7e, 0xad, 0xa1, 0x1e, 0xe, 0x7c, 0xc3, 0x5f, 0xc3, 0xf7, 0x34, 0xc3, + 0xf7, 0x1c, 0xc3, 0xc7, 0xbd, 0x9b, 0xbc, 0x12, 0xba, 0xc5, 0xf7, 0xc9, + 0xc3, 0x13, 0xbf, 0xf7, 0x15, 0xf8, 0xa1, 0x15, 0x99, 0x8f, 0x9f, 0xbb, + 0xaf, 0x1b, 0xa7, 0x9d, 0x7d, 0x7c, 0x9f, 0x1f, 0x79, 0xa2, 0xa6, 0x78, + 0xb9, 0x1b, 0xcb, 0xbc, 0xb9, 0xc3, 0x9e, 0x1f, 0x58, 0x94, 0x5, 0x72, + 0x82, 0x6e, 0x67, 0x66, 0x1b, 0x70, 0x78, 0x9b, 0x9d, 0x74, 0x1f, 0x9b, + 0x76, 0x73, 0x9a, 0x65, 0x1b, 0x57, 0x55, 0x67, 0x4a, 0x75, 0x1f, 0x9d, + 0xfb, 0x4d, 0x2c, 0xa, 0x7c, 0xc2, 0x60, 0xc3, 0xf7, 0xea, 0xc3, 0x12, + 0xf5, 0xc4, 0xf7, 0xf9, 0xc7, 0x13, 0x78, 0x9e, 0x88, 0x15, 0xf7, 0x24, + 0xd1, 0x6, 0x13, 0xb8, 0x7b, 0x99, 0xb5, 0x49, 0xf7, 0x18, 0x1b, 0xf7, + 0x1e, 0xe6, 0xf7, 0xa, 0xf7, 0x2, 0xf7, 0x2b, 0x27, 0xe2, 0xfb, 0x13, + 0xfb, 0x4, 0x4f, 0x4c, 0x72, 0x79, 0x1f, 0xf7, 0x9e, 0xfb, 0x24, 0x54, + 0xe2, 0x7, 0x13, 0x78, 0xfc, 0x9d, 0x34, 0x7, 0xf7, 0x25, 0xf7, 0x3d, + 0x15, 0xf5, 0xe4, 0xce, 0xe4, 0xf7, 0xc, 0xc6, 0x36, 0x2a, 0x8a, 0x1e, + 0x13, 0xb8, 0x24, 0x8a, 0x34, 0x45, 0x31, 0x1b, 0x38, 0x2c, 0xc5, 0xf7, + 0x10, 0x1f, 0xe, 0xfb, 0x1d, 0xf9, 0xce, 0x1, 0xcf, 0xf8, 0x64, 0x3, + 0xf8, 0x7b, 0xfb, 0x1d, 0x15, 0xb8, 0xa3, 0xfc, 0x37, 0xf9, 0xb6, 0x5e, + 0x70, 0x5, 0xe, 0xfb, 0x79, 0x76, 0xfa, 0x7c, 0x77, 0x68, 0xa, 0xbe, + 0x3, 0xf7, 0xa6, 0xfb, 0x8e, 0x15, 0xbe, 0xfa, 0x7c, 0x58, 0x6, 0xe, + 0xfb, 0x78, 0xbf, 0xf9, 0xf1, 0xc4, 0x1, 0xf7, 0x9f, 0xc5, 0x3, 0xf7, + 0x40, 0xf7, 0x82, 0x15, 0xd9, 0x72, 0x9c, 0x75, 0x2b, 0x1a, 0xfb, 0x50, + 0x7, 0x49, 0xae, 0x46, 0xf7, 0x11, 0x1e, 0xbf, 0x7, 0x4e, 0x8e, 0x62, + 0xae, 0xbb, 0x1a, 0xf7, 0x4d, 0x7, 0xcc, 0x8a, 0xc7, 0x3a, 0xb0, 0x1e, + 0xdc, 0xb4, 0x8c, 0xbe, 0xd1, 0x1a, 0xf7, 0x5c, 0x7, 0xbb, 0xb4, 0x9a, + 0xc8, 0x8e, 0x1e, 0xc4, 0x7, 0xfb, 0x17, 0x6e, 0x4e, 0x41, 0x1f, 0xfb, + 0x50, 0x7, 0x2b, 0x77, 0x75, 0x40, 0x72, 0x1e, 0xe, 0xfb, 0x78, 0xbf, + 0xf9, 0xf5, 0xc0, 0x68, 0xa, 0xc5, 0x3, 0xf7, 0x40, 0xfb, 0x44, 0x15, + 0x57, 0x7, 0xf7, 0x11, 0xae, 0xd0, 0xcd, 0x1f, 0xf7, 0x50, 0x7, 0xeb, + 0x9c, 0xa1, 0xd9, 0xa4, 0x1e, 0xb1, 0x7, 0x40, 0xa4, 0x77, 0xa1, 0xeb, + 0x1a, 0xf7, 0x50, 0x7, 0xd5, 0x6e, 0xc8, 0xfb, 0x17, 0x1e, 0x56, 0x7, + 0xc8, 0x88, 0xb4, 0x78, 0x5b, 0x1a, 0xfb, 0x5c, 0x7, 0x45, 0x8c, 0x58, + 0xdc, 0x62, 0x1e, 0x3a, 0x66, 0x8a, 0x4f, 0x4a, 0x1a, 0xfb, 0x4d, 0x7, + 0x5b, 0x62, 0x68, 0x4e, 0x88, 0x1e, 0xe, 0x3d, 0x77, 0x9f, 0xc1, 0xf9, + 0x2, 0xc1, 0x1, 0xf7, 0x69, 0xc2, 0x3, 0xf7, 0x69, 0x3d, 0x15, 0xf7, + 0x41, 0xc1, 0xfb, 0xa, 0xf9, 0x2, 0xf7, 0xa, 0xc1, 0xfb, 0x41, 0x6, + 0xe, 0x3d, 0xc1, 0xf9, 0x2, 0xc1, 0x1, 0xf7, 0xdf, 0xc2, 0x3, 0xf7, + 0x69, 0x73, 0x15, 0x55, 0xf7, 0x41, 0xf9, 0x6e, 0xfb, 0x41, 0x55, 0xf7, + 0xa, 0xfd, 0x2, 0x7, 0xe, 0xf8, 0x89, 0xb2, 0x1, 0xf7, 0x2d, 0xf8, + 0xf5, 0x15, 0x3b, 0xaf, 0xc3, 0x6f, 0xc4, 0x1b, 0xd5, 0xc0, 0xbc, 0xc6, + 0x9d, 0x1f, 0x61, 0x6, 0x6d, 0x80, 0x64, 0x64, 0x55, 0x1b, 0x60, 0x63, + 0xa5, 0xb6, 0x78, 0x1f, 0xe, 0xfb, 0x2e, 0x76, 0xf9, 0xe6, 0x77, 0x68, + 0xa, 0xbe, 0x3, 0xf7, 0xa6, 0xf7, 0xaf, 0x15, 0xbe, 0xf8, 0x1c, 0x58, + 0x6, 0xfd, 0xe6, 0x4, 0xbe, 0xf8, 0x1c, 0x58, 0x6, 0xe, 0xf7, 0x16, + 0xf7, 0x91, 0x1, 0xf7, 0x40, 0xf7, 0x94, 0x3, 0xf7, 0x40, 0xf7, 0x95, + 0x15, 0x45, 0xc4, 0x52, 0xd2, 0xd3, 0xc3, 0xc4, 0xd1, 0xd1, 0x53, 0xc3, + 0x43, 0x44, 0x52, 0x53, 0x45, 0x1e, 0xe, 0x7c, 0xc0, 0xf7, 0xef, 0xc3, + 0x1, 0xcf, 0xc1, 0xf7, 0xe4, 0xc1, 0x3, 0xf8, 0x89, 0xf7, 0x8, 0x15, + 0x76, 0x74, 0x34, 0x52, 0x3b, 0x1b, 0xfb, 0x19, 0x53, 0xe7, 0xdf, 0xe4, + 0xd4, 0xdd, 0xf7, 0x4, 0xc4, 0xbf, 0x73, 0x67, 0xb5, 0x1f, 0x46, 0xc1, + 0xf7, 0x4d, 0x55, 0x5b, 0x7, 0xaa, 0x5e, 0x5c, 0x9c, 0x51, 0x1b, 0xfb, + 0x3e, 0x45, 0xfb, 0x19, 0x30, 0xfb, 0x28, 0xec, 0x37, 0xf7, 0x24, 0xeb, + 0xcb, 0xab, 0xbb, 0xc9, 0x1f, 0xe, 0xf8, 0x80, 0xc3, 0x1, 0xf7, 0x10, + 0xf7, 0xf4, 0x3, 0xf7, 0x9c, 0xf8, 0x80, 0x15, 0xd6, 0x6, 0xf7, 0x1d, + 0xf7, 0x31, 0x64, 0x9f, 0xfb, 0x1c, 0xfb, 0xd, 0xfb, 0x1f, 0xf7, 0xc, + 0x65, 0x77, 0x5, 0xe, 0xfb, 0x21, 0x76, 0xf7, 0x40, 0xbd, 0xf7, 0xdc, + 0xc0, 0x12, 0xcf, 0xc2, 0xf7, 0x2d, 0xe9, 0x5d, 0xb9, 0xea, 0xc2, 0x13, + 0xfa, 0xf7, 0xab, 0x95, 0x15, 0x86, 0x44, 0x5, 0x9c, 0x92, 0xac, 0x8b, + 0x71, 0x1a, 0x13, 0x72, 0x6d, 0x5d, 0x85, 0x74, 0xa1, 0x1e, 0x7d, 0x65, + 0x5, 0x13, 0x76, 0x79, 0xa9, 0x9d, 0x8a, 0x93, 0x1b, 0xb2, 0xad, 0xad, + 0xb7, 0xb0, 0x73, 0x9f, 0x78, 0x8d, 0x1f, 0xa3, 0x7, 0xde, 0x8f, 0xcd, + 0xa8, 0xc2, 0xb4, 0x75, 0xbf, 0x18, 0x76, 0x72, 0x3c, 0x54, 0x3a, 0x1b, + 0xfb, 0x31, 0x56, 0xf5, 0xc8, 0xdf, 0xdd, 0xd8, 0xf7, 0x7, 0xc4, 0xc0, + 0x7e, 0x69, 0xb7, 0x1f, 0x41, 0xc2, 0xf7, 0x42, 0x54, 0x7, 0x13, 0x4, + 0x5e, 0x7, 0xa8, 0x5c, 0x5b, 0x9b, 0x51, 0x1b, 0xfb, 0x43, 0x46, 0xfb, + 0x11, 0x35, 0xfb, 0x14, 0xec, 0x3a, 0xf7, 0x6, 0x80, 0x1f, 0xe, 0xfb, + 0x2b, 0xb3, 0xbb, 0xb3, 0x12, 0xf7, 0xa5, 0xbd, 0x87, 0xbd, 0x13, 0xd0, + 0xf7, 0x7b, 0xfb, 0x1b, 0x15, 0x80, 0x9c, 0x9d, 0x86, 0x9e, 0x1b, 0xb6, + 0xb4, 0xa7, 0xb8, 0x1f, 0x13, 0xe0, 0xae, 0x71, 0x9d, 0x77, 0x8d, 0x1e, + 0xac, 0x59, 0x7, 0x83, 0x3d, 0x5, 0x8f, 0x98, 0x94, 0x8c, 0x93, 0x1b, + 0x9e, 0x90, 0x7e, 0x80, 0x7a, 0x7c, 0x84, 0x7a, 0x7c, 0x7b, 0x90, 0x93, + 0x81, 0x1f, 0xe, 0x6f, 0x76, 0xf7, 0x22, 0xc2, 0xf7, 0x94, 0xc2, 0x1, + 0xed, 0xc1, 0xf7, 0x8, 0xc3, 0xf7, 0x1, 0xc1, 0x3, 0xf7, 0xa0, 0x5a, + 0x15, 0xc3, 0xf7, 0x22, 0x6, 0xd0, 0x8d, 0xd3, 0xa7, 0xaf, 0xaa, 0x75, + 0xbd, 0x18, 0x6b, 0x57, 0x56, 0x73, 0x4b, 0x1b, 0xfb, 0xb, 0x64, 0xd2, + 0xbe, 0xd3, 0xc3, 0xc9, 0xed, 0xb8, 0xb3, 0x82, 0x71, 0xb5, 0x1f, 0x55, + 0xc1, 0xf7, 0x3c, 0x55, 0x56, 0x7, 0x61, 0xa1, 0x6e, 0x8e, 0x65, 0x8f, + 0x8, 0xf7, 0x32, 0x53, 0xfb, 0x32, 0x7, 0x42, 0x84, 0x2a, 0x52, 0xfb, + 0xf, 0x1a, 0xfb, 0x8, 0xe1, 0x51, 0xdf, 0x86, 0x1e, 0xe, 0xf8, 0xe9, + 0xc4, 0x1, 0xf7, 0x10, 0xf7, 0xf4, 0x3, 0xf7, 0x36, 0xf8, 0x71, 0x15, + 0xf7, 0x1e, 0xf7, 0xc, 0xf7, 0x1d, 0xfb, 0xc, 0xb2, 0x9d, 0xfb, 0x1e, + 0xf7, 0x33, 0x5, 0x40, 0x6, 0xfb, 0x1f, 0xfb, 0x33, 0x5, 0xe, 0xf4, + 0xf7, 0xe, 0xf7, 0x30, 0xf7, 0xe, 0x7a, 0xa, 0xf8, 0x50, 0x15, 0x52, + 0xa, 0xfb, 0xaa, 0x4, 0x52, 0xa, 0xe, 0xf7, 0x6e, 0xf7, 0x37, 0x3, + 0xf7, 0x6e, 0xfb, 0x4, 0x15, 0xca, 0x6, 0xef, 0xf7, 0x7e, 0x5, 0x2e, + 0x6, 0xe, 0x79, 0xb9, 0xe2, 0xc0, 0xf7, 0x84, 0xbb, 0xdb, 0xb7, 0x1, + 0x8b, 0xb9, 0xf2, 0xba, 0xf7, 0xfb, 0xb8, 0x3, 0xf7, 0xab, 0x4, 0xfb, + 0x38, 0xf7, 0x1a, 0xfb, 0x19, 0xf7, 0x3b, 0xf7, 0x35, 0xf7, 0x1e, 0xf7, + 0xe, 0xf7, 0x43, 0xf7, 0x4b, 0xfb, 0x21, 0xf7, 0xa, 0xfb, 0x32, 0xfb, + 0x2f, 0xfb, 0x26, 0xfb, 0xb, 0xfb, 0x4a, 0x1e, 0xb9, 0x16, 0xf7, 0x18, + 0xee, 0xf7, 0x11, 0xf7, 0x30, 0xf7, 0x21, 0xf7, 0x5, 0xfb, 0xc, 0xfb, + 0x1d, 0xfb, 0x22, 0xfb, 0x4, 0xfb, 0x1, 0xfb, 0x22, 0xfb, 0x1b, 0xfb, + 0xc, 0xf7, 0x1, 0xf7, 0x22, 0x1e, 0xf8, 0x7, 0x43, 0x15, 0x6f, 0x71, + 0x64, 0x80, 0x65, 0x1b, 0x4f, 0x51, 0xb6, 0xd2, 0xda, 0xc3, 0xba, 0xc9, + 0xa6, 0xb2, 0x81, 0x75, 0x9e, 0x1f, 0xac, 0xac, 0x5, 0xad, 0x6a, 0x5d, + 0x98, 0x64, 0x1b, 0x33, 0x3e, 0x3f, 0x29, 0x20, 0xdc, 0x4f, 0xdf, 0xbc, + 0xbe, 0x9e, 0xb2, 0xae, 0x1f, 0xe, 0xd7, 0xba, 0xf7, 0xd2, 0xba, 0x1, + 0xe9, 0xba, 0xf7, 0xd2, 0xbb, 0x3, 0xd4, 0xe1, 0x15, 0xab, 0x6f, 0xcc, + 0xca, 0x5, 0x63, 0xc0, 0xb9, 0x86, 0xaa, 0x1b, 0xbd, 0xba, 0x9b, 0xa8, + 0xb1, 0x1f, 0xc9, 0x4c, 0xa9, 0xa8, 0x4b, 0xcb, 0x5, 0xa8, 0xb1, 0x9a, + 0xba, 0xbb, 0x1a, 0xba, 0x7d, 0xba, 0x6d, 0xae, 0x1e, 0xcb, 0xcb, 0x6c, + 0xa8, 0x4d, 0x4c, 0x5, 0xaa, 0x66, 0x5d, 0x99, 0x5b, 0x1b, 0x59, 0x59, + 0x7b, 0x6d, 0x67, 0x1f, 0x4c, 0xcb, 0x6c, 0x6c, 0xcd, 0x4c, 0x5, 0x68, + 0x5f, 0x81, 0x5f, 0x63, 0x1a, 0x5b, 0x9a, 0x5b, 0xaa, 0x67, 0x1e, 0x8c, + 0xf7, 0x16, 0x15, 0xda, 0xc9, 0xdb, 0xee, 0xe9, 0xca, 0x3e, 0x39, 0x2a, + 0x40, 0x4d, 0x38, 0x33, 0x43, 0xd1, 0xe4, 0x1e, 0xe, 0x7c, 0xc2, 0x61, + 0xc2, 0xf7, 0xe1, 0xc7, 0xf7, 0x14, 0xc2, 0x12, 0xa6, 0xc4, 0xf7, 0xf3, + 0xc3, 0x13, 0x7c, 0xf8, 0x47, 0x89, 0x15, 0xf7, 0x1e, 0xc2, 0x39, 0xf8, + 0xd4, 0xfb, 0x4d, 0x54, 0xf7, 0x15, 0xfb, 0x70, 0x6, 0xd7, 0x5e, 0x40, + 0x9b, 0x54, 0x1b, 0xfb, 0x1f, 0x2d, 0x27, 0xfb, 0x15, 0x1f, 0x13, 0xbc, + 0xfb, 0x8, 0xda, 0xfb, 0x8, 0xf7, 0x2a, 0xd3, 0xce, 0xa8, 0xc5, 0xb3, + 0x1e, 0x13, 0x7c, 0xfb, 0xf3, 0xf7, 0x25, 0x15, 0xe7, 0xd1, 0xd8, 0xf2, + 0xf7, 0xf, 0xbd, 0x2b, 0x46, 0x1e, 0x13, 0xbc, 0x21, 0x45, 0x40, 0x24, + 0xfb, 0x5, 0x4f, 0xe5, 0xe2, 0x1e, 0xe, 0xf7, 0xfc, 0xc2, 0xf7, 0x39, + 0x77, 0x1, 0xf7, 0xa5, 0xc2, 0x3, 0xf7, 0xa5, 0x3c, 0x15, 0xc2, 0xf8, + 0x4b, 0xf7, 0x17, 0xc2, 0xfb, 0x17, 0xf7, 0x39, 0x54, 0xfb, 0x39, 0xfb, + 0x18, 0x54, 0xf7, 0x18, 0x6, 0xe, 0xd0, 0xf7, 0xc9, 0xfb, 0x8e, 0xf7, + 0xca, 0x12, 0xf7, 0x21, 0xf7, 0x52, 0x13, 0xa0, 0xf7, 0x21, 0xd0, 0x15, + 0xf7, 0x15, 0xfb, 0x27, 0xc8, 0xf7, 0x27, 0xf7, 0x14, 0x6, 0x13, 0x60, + 0xc6, 0xfb, 0x14, 0x7, 0x13, 0xa0, 0xf7, 0x8e, 0xf7, 0x14, 0x7, 0x13, + 0x60, 0xc7, 0xfb, 0x14, 0xf7, 0x22, 0x4e, 0xfb, 0x22, 0xfb, 0x15, 0x7, + 0x13, 0xa0, 0x4f, 0xf7, 0x15, 0x7, 0x13, 0x60, 0xfb, 0x8e, 0xfb, 0x15, + 0x7, 0xe, 0xf7, 0xa4, 0xc9, 0xf7, 0x76, 0xc9, 0x1, 0xf7, 0xf, 0xc9, + 0xf7, 0x77, 0xcc, 0x3, 0xf7, 0xf, 0xf8, 0x51, 0x15, 0x2c, 0xd6, 0x3a, + 0xf1, 0xeb, 0xdc, 0xd3, 0xf6, 0xd8, 0x58, 0xec, 0xfb, 0x10, 0x25, 0x3e, + 0x3b, 0x2a, 0x1e, 0xc9, 0x16, 0xbc, 0xb0, 0xcd, 0xdb, 0xe0, 0xa4, 0x3d, + 0x66, 0x49, 0x59, 0x5b, 0x4d, 0x46, 0x5d, 0xc5, 0xc3, 0x1e, 0xe, 0xf8, + 0x80, 0xf2, 0x1, 0xf7, 0x27, 0xf7, 0x4, 0xdc, 0xf7, 0x4, 0x3, 0xf7, + 0x27, 0xf8, 0x80, 0x15, 0xf7, 0x4, 0xf2, 0xfb, 0x4, 0x6, 0xf7, 0x55, + 0x24, 0x15, 0xf7, 0x4, 0xf2, 0xfb, 0x4, 0x6, 0xe, 0xbb, 0xf3, 0xd5, + 0xca, 0xd5, 0xf3, 0x1, 0xf7, 0x8a, 0xf3, 0x14, 0xe0, 0xe2, 0xf7, 0x76, + 0x15, 0xf8, 0x3e, 0xca, 0xfc, 0x3e, 0x6, 0xf7, 0x33, 0xf7, 0x12, 0x15, + 0x51, 0xa, 0xfb, 0xcf, 0x4, 0x51, 0xa, 0xe, 0x22, 0x76, 0xf7, 0x20, + 0xbb, 0xf8, 0x4b, 0xbf, 0x9a, 0x77, 0xf7, 0x4, 0x77, 0x12, 0xf7, 0x0, + 0xc0, 0xf7, 0x2, 0xc2, 0xec, 0xc1, 0x62, 0xc3, 0x13, 0xee, 0x80, 0xf6, + 0x99, 0x15, 0xc1, 0xbb, 0x6, 0xab, 0x73, 0xa0, 0x7b, 0xc4, 0x83, 0x8, + 0xfb, 0x20, 0xc2, 0xf7, 0x20, 0x7, 0xf7, 0x4, 0x94, 0xc1, 0xd3, 0xd8, + 0x1a, 0xf7, 0x0, 0xfb, 0x20, 0xa2, 0x48, 0x9f, 0x1e, 0x66, 0x96, 0x34, + 0xa9, 0xbf, 0x1a, 0xc7, 0xcb, 0xa4, 0xce, 0x1e, 0x13, 0xdf, 0x0, 0xc0, + 0xc1, 0x7c, 0x70, 0xa3, 0x1f, 0x58, 0xc1, 0xf7, 0x34, 0x55, 0x5b, 0x7, + 0x13, 0xee, 0x80, 0x74, 0xa0, 0x60, 0x94, 0x6b, 0x8e, 0x8, 0xf6, 0x54, + 0x20, 0x7, 0x4b, 0x29, 0x64, 0x24, 0x1f, 0x8b, 0x7, 0x43, 0xcf, 0x62, + 0xee, 0x70, 0x1e, 0xd5, 0x76, 0xe2, 0x74, 0x50, 0x1a, 0x47, 0x51, 0x65, + 0x45, 0x4f, 0x53, 0xa5, 0xb0, 0x6c, 0x1e, 0xc3, 0x55, 0x7, 0xe, 0xf8, + 0x71, 0xf2, 0x1, 0xf7, 0x8c, 0xf2, 0x3, 0xf7, 0x8c, 0xf8, 0x71, 0x15, + 0xf2, 0xf2, 0x24, 0x6, 0xe, 0x74, 0xa, 0xf7, 0xa6, 0x73, 0xa, 0xc1, + 0xfb, 0x44, 0xf8, 0x8, 0xfb, 0x5b, 0x55, 0xf7, 0x24, 0xfb, 0xd2, 0xfb, + 0x47, 0x6, 0xe, 0x7f, 0xc1, 0xf7, 0x3c, 0xc2, 0xf7, 0x12, 0xc3, 0x1, + 0xca, 0xc4, 0x3, 0xf7, 0xc, 0xf7, 0x66, 0x15, 0xf8, 0x2e, 0x6, 0xf7, + 0x12, 0x48, 0xf7, 0x3, 0xfb, 0x35, 0xfb, 0x19, 0x21, 0x2f, 0xfb, 0x1e, + 0xfb, 0xa, 0xd0, 0xfb, 0x3, 0xf7, 0x43, 0xdc, 0xdf, 0x99, 0xac, 0xcb, + 0x1e, 0x7a, 0xc0, 0x5, 0x64, 0x41, 0x39, 0x84, 0x5c, 0x1b, 0x5c, 0x5e, + 0x91, 0xa3, 0x65, 0x1f, 0x67, 0xa2, 0x6d, 0xc1, 0xc0, 0x1a, 0x8d, 0xca, + 0x15, 0xc6, 0x93, 0xc6, 0xce, 0xf7, 0x5, 0x1b, 0xf7, 0x1e, 0xaa, 0x26, + 0x72, 0x1f, 0xe, 0x5a, 0xa, 0xf7, 0x46, 0xf8, 0x81, 0x15, 0xf7, 0xb9, + 0xf2, 0x69, 0xd7, 0xfb, 0xa3, 0xfb, 0x28, 0x5, 0x5a, 0xfb, 0xd9, 0x22, + 0xa, 0x5a, 0xa, 0xf7, 0x2c, 0xf8, 0x7d, 0x15, 0xf7, 0x2c, 0xf7, 0xa, + 0xf7, 0x29, 0xfb, 0xa, 0xb6, 0x9d, 0xfb, 0x2c, 0xf7, 0x31, 0x5, 0x3a, + 0x6, 0xfb, 0x2d, 0xfb, 0x31, 0x5, 0x92, 0xfb, 0xc8, 0x22, 0xa, 0x5e, + 0xa, 0xdc, 0xf7, 0x7, 0x56, 0xa, 0xf7, 0xde, 0xf8, 0xa6, 0x59, 0xa, + 0x4d, 0xfc, 0x52, 0x22, 0xa, 0x7c, 0x82, 0xa, 0xf7, 0x1f, 0xc3, 0x56, + 0xa, 0xf7, 0x31, 0xf8, 0xe8, 0x15, 0xf7, 0xb9, 0x24, 0x97, 0xaa, 0xfb, + 0xa3, 0xf7, 0x28, 0x5, 0x41, 0xfc, 0x6d, 0x22, 0xa, 0x7c, 0xbd, 0xf7, + 0x8a, 0xc2, 0xf7, 0x7e, 0xbf, 0x12, 0xf1, 0xc4, 0x61, 0xc5, 0xf7, 0x8c, + 0xc6, 0x61, 0xc5, 0x13, 0xf2, 0xf7, 0x56, 0xf7, 0xcc, 0x15, 0x75, 0x7e, + 0x45, 0x5c, 0x2b, 0x1a, 0x30, 0xc7, 0x3b, 0xf7, 0x1c, 0xf7, 0x15, 0xd2, + 0xd5, 0xee, 0xea, 0x4b, 0xb7, 0x67, 0x9a, 0x1e, 0x13, 0xec, 0xaa, 0x96, + 0xc0, 0xb9, 0xe2, 0x1a, 0xc9, 0x5e, 0xf3, 0xfb, 0x1b, 0x22, 0x3b, 0x49, + 0x27, 0x4a, 0xb8, 0x50, 0xab, 0x77, 0x1e, 0x13, 0xf2, 0x68, 0xfb, 0x2e, + 0x15, 0xcf, 0xc9, 0xc2, 0xd9, 0xd9, 0xca, 0x54, 0x47, 0x47, 0x4c, 0x54, + 0x3d, 0x3d, 0x4d, 0xc2, 0xcf, 0x1e, 0x13, 0xec, 0x9b, 0xf7, 0xbe, 0x15, + 0xcd, 0xc3, 0xbb, 0xcf, 0xcf, 0xc3, 0x5b, 0x49, 0x49, 0x53, 0x55, 0x47, + 0x47, 0x53, 0xc1, 0xcd, 0x1e, 0xe, 0x7c, 0xf7, 0x12, 0x1, 0xb0, 0xf7, + 0x11, 0xd4, 0xf7, 0x14, 0xd4, 0xf7, 0x13, 0x3, 0xf8, 0x48, 0xba, 0x15, + 0x6c, 0xa4, 0x6c, 0xb3, 0xa9, 0xab, 0xa5, 0xae, 0xac, 0x72, 0xab, 0x65, + 0x67, 0x6f, 0x6e, 0x68, 0x1e, 0xfb, 0x5d, 0x16, 0x6c, 0xa4, 0x6c, 0xb4, + 0xaa, 0xaa, 0xa5, 0xae, 0xac, 0x73, 0xab, 0x65, 0x65, 0x6f, 0x6e, 0x68, + 0x1e, 0xfb, 0x5a, 0x16, 0x6c, 0xa3, 0x6c, 0xb3, 0xaa, 0xa9, 0xa5, 0xae, + 0xac, 0x73, 0xab, 0x65, 0x67, 0x70, 0x6e, 0x68, 0x1e, 0xe, 0xf7, 0x7b, + 0xc1, 0x1, 0x8b, 0xf8, 0xec, 0x3, 0xf7, 0x7b, 0x4, 0xf8, 0xec, 0xc1, + 0xfc, 0xec, 0x6, 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0xd6, 0xf8, 0x56, 0x3, + 0xd6, 0xf7, 0x7b, 0x15, 0xf8, 0x56, 0xc1, 0xfc, 0x56, 0x6, 0xe, 0xf7, + 0x1e, 0xc7, 0xf7, 0x8, 0xc8, 0x1, 0xe5, 0xf8, 0x37, 0x3, 0xe5, 0xf7, + 0xcf, 0x15, 0xf8, 0x37, 0xc8, 0xfc, 0x37, 0x6, 0xfb, 0x82, 0x4, 0xf8, + 0x37, 0xc7, 0xfc, 0x37, 0x6, 0xe, 0x7c, 0xbf, 0xf7, 0xe3, 0xbf, 0x1, + 0xc9, 0xc0, 0xf8, 0x0, 0xc6, 0x3, 0xf7, 0x6f, 0xf8, 0x59, 0x15, 0xf4, + 0xd1, 0xd5, 0x5c, 0xb1, 0x3a, 0x91, 0x7e, 0x19, 0xa9, 0x67, 0x4f, 0x97, + 0x58, 0x1b, 0xfb, 0x36, 0x44, 0xfb, 0xd, 0x28, 0xfb, 0x1b, 0xf1, 0x37, + 0xf7, 0x1a, 0xf7, 0x3a, 0xd3, 0xf7, 0x7, 0xf7, 0xd, 0x8d, 0x1f, 0x8e, + 0x7, 0xe5, 0x65, 0xf7, 0x2c, 0xfb, 0x11, 0xe6, 0x1e, 0xe1, 0xc5, 0x71, + 0xb9, 0xfb, 0x2, 0x42, 0x66, 0x9e, 0x53, 0x96, 0x61, 0x91, 0x19, 0x79, + 0x5c, 0xaa, 0x88, 0xb3, 0x82, 0xa9, 0x7e, 0x19, 0x3b, 0x51, 0x5, 0x3d, + 0xfb, 0xb6, 0x15, 0xea, 0xcc, 0xd4, 0xf7, 0x2, 0xf7, 0x2c, 0xb0, 0x22, + 0x4d, 0x26, 0x3f, 0x48, 0x23, 0xfb, 0x2, 0x41, 0xd6, 0xe7, 0x1e, 0xe, + 0x7c, 0xf7, 0x14, 0xf8, 0x64, 0x77, 0x12, 0xf7, 0x80, 0xf7, 0x14, 0x2c, + 0xcd, 0x13, 0xd0, 0xf7, 0xaa, 0xf7, 0x49, 0x15, 0xbb, 0x6, 0x9d, 0xf8, + 0x18, 0x5, 0x37, 0x6, 0x13, 0xe0, 0x73, 0xfc, 0x9d, 0x15, 0x6c, 0xa4, + 0x6b, 0xb2, 0x1e, 0xb3, 0xa3, 0xaa, 0xac, 0xab, 0x6d, 0xab, 0x6b, 0x1f, + 0x13, 0x60, 0x60, 0x74, 0x69, 0x6c, 0x1f, 0xe, 0xfb, 0x1c, 0x76, 0xf8, + 0x67, 0xf7, 0xc, 0x1, 0xf7, 0xa2, 0xc8, 0x3, 0xf7, 0x80, 0xf8, 0x5, + 0x15, 0x6b, 0xa7, 0x70, 0xaf, 0xb5, 0xa1, 0xa9, 0xa9, 0xa9, 0x71, 0xa9, + 0x64, 0x63, 0x74, 0x6f, 0x6a, 0x1e, 0xa4, 0xfc, 0xa2, 0x15, 0xd9, 0x6, + 0x7b, 0xf8, 0x21, 0x5, 0x5f, 0x6, 0xe, 0x8b, 0xc2, 0xf7, 0xd8, 0xc2, + 0xf7, 0x1f, 0xc2, 0x1, 0xf7, 0x58, 0xc3, 0x3, 0xe6, 0x16, 0xf8, 0xd, + 0xc2, 0xfb, 0x6c, 0xf7, 0xd8, 0xf7, 0x62, 0xc2, 0xfb, 0x62, 0x6, 0x8c, + 0xf7, 0x11, 0x8a, 0x98, 0xf7, 0x7, 0x8c, 0x8, 0xb1, 0xc9, 0x81, 0x85, + 0xaf, 0x1f, 0x90, 0xc3, 0x5, 0x90, 0x6a, 0x45, 0x95, 0x63, 0x1b, 0xfb, + 0x20, 0x8c, 0x6f, 0x6a, 0x8a, 0xfb, 0x36, 0x8, 0x22, 0x54, 0xf4, 0xfb, + 0xd8, 0x22, 0x6, 0xe, 0x8b, 0xc0, 0xf7, 0xd5, 0xc0, 0xde, 0xf7, 0xd, + 0x1, 0xf7, 0x1, 0xc2, 0xf7, 0xa3, 0xc2, 0x3, 0xf8, 0x37, 0xf8, 0x92, + 0x15, 0xd2, 0xf7, 0xb, 0x44, 0x6, 0x33, 0xfd, 0x9, 0x15, 0xf7, 0x9e, + 0xc0, 0x20, 0xf8, 0xa, 0xfb, 0x1c, 0x56, 0xdc, 0xfb, 0xd5, 0x23, 0x6, + 0xfb, 0xdc, 0x56, 0x48, 0xa, 0x4a, 0xa, 0x7c, 0xc3, 0xf7, 0xa5, 0xc9, + 0xf7, 0x40, 0xc6, 0x1, 0xf7, 0x14, 0xc9, 0xf7, 0x8d, 0xc9, 0x3, 0xec, + 0xa7, 0x15, 0x6c, 0xd2, 0xc5, 0x7f, 0xc2, 0x1b, 0xf7, 0x1c, 0xe0, 0xdc, + 0xf7, 0x9, 0x8a, 0x1f, 0xf7, 0xc, 0x8a, 0x38, 0xd4, 0xfb, 0x5, 0x1b, + 0x63, 0x6b, 0x80, 0x76, 0x61, 0x1f, 0xf7, 0x60, 0xf7, 0xa8, 0xc6, 0xfb, + 0xe6, 0xfb, 0xd5, 0x7, 0xb5, 0x73, 0x5, 0xaf, 0xb6, 0xbb, 0x9b, 0xb6, + 0x1b, 0xd6, 0xc7, 0x5b, 0x35, 0x2b, 0x42, 0x61, 0x36, 0x8a, 0x1f, 0x55, + 0x8a, 0x51, 0x9a, 0x58, 0xaa, 0x8, 0xe, 0x8b, 0xc2, 0xf7, 0xd3, 0xc0, + 0xf7, 0x26, 0xc3, 0x8d, 0x77, 0x12, 0xf7, 0x1, 0xc2, 0xf7, 0xa5, 0xc1, + 0x13, 0xec, 0xf7, 0xdf, 0x16, 0xf7, 0x9e, 0xc2, 0x21, 0xf8, 0xd2, 0xfb, + 0x25, 0x53, 0xe6, 0xfc, 0x9a, 0x21, 0x6, 0xfb, 0xdc, 0x54, 0x48, 0xa, + 0x13, 0xdc, 0x4a, 0xa, 0xfb, 0x23, 0xc6, 0xf8, 0x4b, 0xc4, 0xf7, 0x2d, + 0xc4, 0x1, 0xab, 0xf8, 0xab, 0x3, 0xbf, 0x37, 0x15, 0x77, 0x50, 0x5, + 0xd0, 0x6, 0xf7, 0x2c, 0x9c, 0xc7, 0xf7, 0x2, 0x9f, 0x1f, 0xc6, 0xf7, + 0xdc, 0x5, 0xf6, 0x6, 0x92, 0xc4, 0x5, 0x23, 0x6, 0xf7, 0x7, 0xa2, + 0x84, 0xb1, 0xf7, 0x5, 0x1b, 0x9d, 0xa8, 0x88, 0x8a, 0x9d, 0x1f, 0x99, + 0xc5, 0x4f, 0x8e, 0x5, 0x54, 0x52, 0x86, 0x64, 0x66, 0x1f, 0x62, 0x61, + 0x88, 0x4b, 0x80, 0x4f, 0x8, 0xfb, 0x0, 0x6, 0x85, 0x52, 0x5, 0xf3, + 0x6, 0x51, 0xfb, 0xd5, 0x77, 0xfb, 0x6, 0x59, 0x78, 0xfb, 0x5, 0x9a, + 0x19, 0xe, 0x95, 0xc3, 0xf7, 0x16, 0xc7, 0xf8, 0x2, 0x77, 0x1, 0xf7, + 0xfe, 0xc9, 0x3, 0xe4, 0xf7, 0x4f, 0x15, 0xf7, 0xa5, 0xfb, 0x17, 0xfb, + 0x2, 0x53, 0xf7, 0x97, 0xc3, 0x34, 0xf7, 0x17, 0xe2, 0xc7, 0x34, 0xf8, + 0xb, 0x34, 0x6, 0xfb, 0x8c, 0xfc, 0x11, 0x5, 0xcc, 0x91, 0x15, 0xf7, + 0x64, 0xf7, 0xd1, 0x5, 0xfb, 0xd1, 0x7, 0xe, 0x52, 0xf9, 0x66, 0x1, + 0xe6, 0xf8, 0x35, 0x3, 0xe6, 0x66, 0x15, 0xb3, 0x77, 0xf8, 0xd, 0xf9, + 0x50, 0x64, 0xa1, 0x5, 0xe, 0xfb, 0x31, 0xbe, 0xf7, 0x37, 0xbf, 0xf7, + 0xac, 0xbf, 0x7f, 0x77, 0x12, 0xb2, 0xc0, 0xf7, 0xf5, 0xc0, 0x13, 0xdc, + 0xde, 0x3c, 0x15, 0x80, 0x59, 0x50, 0xa, 0x41, 0x7, 0x13, 0xec, 0xbc, + 0x70, 0x43, 0xb0, 0x44, 0xa, 0x70, 0x31, 0x48, 0x2c, 0x9b, 0x96, 0x57, + 0x1e, 0x94, 0xf7, 0xda, 0x15, 0xe0, 0xde, 0xc4, 0xe9, 0xf7, 0x8, 0xc4, + 0x69, 0xa, 0xe, 0xfb, 0x31, 0xbe, 0x8b, 0xf7, 0x37, 0x8b, 0xbf, 0xf7, + 0xac, 0xbf, 0x7f, 0x77, 0xab, 0xbd, 0x12, 0xb2, 0xc0, 0xf7, 0xf5, 0xc0, + 0x13, 0xef, 0xde, 0x43, 0x15, 0x80, 0x52, 0x50, 0xa, 0x55, 0x7, 0x13, + 0xf7, 0xae, 0x6a, 0x49, 0xaa, 0x44, 0xa, 0x6f, 0x31, 0x8c, 0x1e, 0x48, + 0x8c, 0x2c, 0x9f, 0x57, 0x96, 0x8, 0x94, 0xf7, 0xd5, 0x15, 0xe0, 0xde, + 0xc4, 0xe9, 0xf7, 0x1e, 0xae, 0x69, 0xa, 0xf7, 0x43, 0xf7, 0x88, 0x37, + 0xa, 0x7c, 0xc0, 0x63, 0xc3, 0xf7, 0xdf, 0xc2, 0xf7, 0x1a, 0xc2, 0x12, + 0xf7, 0x3, 0xc2, 0xd9, 0xc4, 0xf7, 0x17, 0xc2, 0xa7, 0xc2, 0x13, 0x7f, + 0xa9, 0x89, 0x15, 0xf7, 0x1c, 0xf8, 0x77, 0x6, 0xde, 0xa1, 0x95, 0xf2, + 0xd8, 0xcb, 0x88, 0x56, 0x59, 0x5e, 0x88, 0x55, 0x72, 0x1e, 0x5e, 0x77, + 0x5f, 0x72, 0x58, 0x1a, 0x4d, 0xc1, 0x6f, 0xbb, 0x78, 0x1e, 0xf7, 0x17, + 0x59, 0xb1, 0x80, 0x5d, 0x1a, 0x13, 0xbf, 0x4f, 0x4f, 0x70, 0x48, 0x88, + 0x1e, 0x45, 0x88, 0x41, 0xa7, 0x74, 0xa4, 0x75, 0x54, 0x18, 0x6d, 0xb2, + 0xd2, 0x79, 0xd0, 0x1b, 0xec, 0xea, 0xb8, 0xf4, 0xd7, 0x38, 0xaa, 0x40, + 0xa4, 0x1f, 0x4f, 0x9f, 0x58, 0x9a, 0xb4, 0x1a, 0xb3, 0xbb, 0x97, 0xbd, + 0x9f, 0x1e, 0xc4, 0xa2, 0xaa, 0x9a, 0xce, 0x1a, 0xdf, 0x35, 0xa4, 0x2b, + 0xfb, 0x3a, 0x6f, 0x6b, 0xfb, 0x31, 0x1e, 0x3a, 0x54, 0xdc, 0x6, 0x13, + 0x7f, 0xfb, 0xdf, 0x3a, 0x7, 0xe, 0x6e, 0xa, 0xf8, 0x20, 0xf8, 0x85, + 0x15, 0x9c, 0xa8, 0xfb, 0x49, 0xf7, 0x26, 0x5d, 0x46, 0x5, 0xe, 0xb5, + 0xd0, 0xf7, 0xbf, 0xc9, 0x1, 0xf8, 0x44, 0xce, 0x3, 0xf8, 0x87, 0xf7, + 0xbd, 0x15, 0xfc, 0x22, 0xf7, 0x43, 0x5, 0x4d, 0x7, 0xf7, 0xdf, 0xfb, + 0x2b, 0xfb, 0xdf, 0xfb, 0x28, 0x5, 0x46, 0x7, 0xf8, 0x22, 0xf7, 0x46, + 0x5, 0xe, 0x7b, 0xa, 0xf7, 0x95, 0xf7, 0x96, 0x15, 0xf7, 0x7e, 0xfb, + 0x50, 0x9c, 0xba, 0xfb, 0x3d, 0xf7, 0x21, 0xf7, 0x3d, 0xf7, 0x21, 0x78, + 0xba, 0x5, 0xfc, 0x21, 0xfb, 0x50, 0x15, 0xf7, 0x79, 0xfb, 0x50, 0xa0, + 0xba, 0xfb, 0x40, 0xf7, 0x21, 0xf7, 0x3d, 0xf7, 0x1f, 0x75, 0xbc, 0x5, + 0xe, 0x7b, 0xa, 0xf7, 0x2, 0xd1, 0x15, 0xf7, 0x7d, 0xf7, 0x50, 0xfb, + 0x7d, 0xf7, 0x50, 0x79, 0x5c, 0xf7, 0x3d, 0xfb, 0x21, 0xfb, 0x3d, 0xfb, + 0x21, 0x5, 0xf7, 0x51, 0x5c, 0x15, 0xf7, 0x77, 0xf7, 0x50, 0xfb, 0x73, + 0xf7, 0x50, 0x73, 0x5a, 0xf7, 0x3d, 0xfb, 0x1f, 0xfb, 0x40, 0xfb, 0x21, + 0x5, 0xe, 0xd1, 0xf8, 0xc, 0x1, 0xf7, 0x2b, 0xf7, 0xbd, 0x3, 0xf7, + 0x2b, 0xf7, 0x96, 0x15, 0xf7, 0xa3, 0xfb, 0x50, 0xa5, 0xb3, 0xfb, 0x66, + 0xf7, 0x28, 0xf7, 0x66, 0xf7, 0x27, 0x71, 0xb4, 0x5, 0xe, 0xd1, 0xf8, + 0xc, 0x1, 0xf7, 0x2f, 0xf7, 0xba, 0x3, 0xf7, 0x46, 0xd1, 0x15, 0xf7, + 0xa3, 0xf7, 0x50, 0xfb, 0xa3, 0xf7, 0x50, 0x70, 0x62, 0xf7, 0x67, 0xfb, + 0x27, 0xfb, 0x63, 0xfb, 0x28, 0x5, 0xe, 0x8b, 0xc2, 0xf7, 0xf0, 0xc2, + 0xf7, 0x8, 0xc2, 0x1, 0xf5, 0xc3, 0xf7, 0xab, 0xc3, 0x3, 0x9e, 0x16, + 0xf7, 0x83, 0xc2, 0x2b, 0xf7, 0x99, 0x6, 0xb6, 0xbb, 0xcb, 0xb7, 0xce, + 0x1b, 0xe0, 0x9a, 0x59, 0x54, 0x1f, 0xfb, 0x87, 0x36, 0x54, 0xf7, 0x76, + 0xc2, 0x36, 0xf7, 0x9d, 0x7, 0xca, 0x6e, 0xd6, 0xfb, 0x13, 0x4a, 0x4e, + 0x66, 0x5e, 0x56, 0x1e, 0xf7, 0x91, 0xfb, 0x24, 0x54, 0xe3, 0xfc, 0x9b, + 0x34, 0x7, 0xe, 0xf8, 0x85, 0xf7, 0x43, 0x1, 0xf7, 0x17, 0xf7, 0xe6, + 0x3, 0xf7, 0x17, 0xf8, 0x9d, 0x71, 0xa, 0x7d, 0xfb, 0x2b, 0x71, 0xa, + 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0xf2, 0xf8, 0x1e, 0x3, 0xf2, 0xf7, 0x7b, + 0x15, 0xf8, 0x1e, 0xc1, 0xfc, 0x1e, 0x6, 0xe, 0x8b, 0xc2, 0xf7, 0xd9, + 0xc2, 0xed, 0xf7, 0x10, 0x81, 0xa, 0xf7, 0x95, 0x7e, 0xa, 0xfb, 0x36, + 0xfd, 0x25, 0x15, 0xf8, 0x2e, 0xc2, 0xfb, 0x43, 0xf8, 0x10, 0xfb, 0x5d, + 0x54, 0xf7, 0x24, 0xfb, 0xd9, 0xfb, 0x46, 0x6, 0xe, 0x6f, 0xa, 0xf7, + 0x31, 0xf8, 0x82, 0x15, 0xf7, 0xb7, 0xf1, 0x69, 0xd7, 0xfb, 0xa1, 0xfb, + 0x27, 0x5, 0x59, 0xfc, 0xa1, 0x15, 0x35, 0xa, 0xe, 0x8b, 0xc2, 0xf7, + 0xdd, 0x82, 0xa, 0x68, 0xa, 0xc3, 0x3, 0xe9, 0xf8, 0x86, 0x15, 0xb4, + 0x79, 0xf7, 0x29, 0xf7, 0xa, 0xf7, 0x27, 0xfb, 0xa, 0xb6, 0x9d, 0xfb, + 0x29, 0xf7, 0x30, 0x5, 0x3a, 0x6, 0xfb, 0x29, 0xfd, 0x22, 0x15, 0x35, + 0xa, 0xe, 0x8b, 0xc2, 0xf7, 0xdb, 0xc2, 0xe8, 0xf7, 0x7, 0x12, 0xf7, + 0x3a, 0xe2, 0xa0, 0xc3, 0x7e, 0xe0, 0x13, 0xf8, 0xea, 0x16, 0x35, 0xa, + 0x13, 0xf4, 0xf7, 0x72, 0xf8, 0x6f, 0x59, 0xa, 0xe, 0x6f, 0xa, 0xf7, + 0x1c, 0xf8, 0xe8, 0x15, 0xf7, 0xb9, 0x25, 0x96, 0xaa, 0xfb, 0xa2, 0xf7, + 0x27, 0x5, 0x40, 0xfd, 0x34, 0x15, 0x35, 0xa, 0xe, 0xfb, 0x31, 0xc1, + 0xf8, 0x76, 0xc5, 0xee, 0xf7, 0x10, 0x1, 0xf7, 0x18, 0xc4, 0xf7, 0xa9, + 0xc7, 0x3, 0xf7, 0x8, 0x7e, 0xa, 0x60, 0xfd, 0x8c, 0x15, 0x55, 0xf7, + 0x3f, 0xc1, 0x54, 0xf8, 0xae, 0x25, 0x54, 0xb8, 0xfc, 0x77, 0x7, 0xf7, + 0xbc, 0xf9, 0x17, 0x15, 0xd5, 0xf7, 0x9, 0x41, 0x6, 0xfb, 0x2, 0xfd, + 0x7a, 0x15, 0x7c, 0x55, 0x5, 0x85, 0x91, 0xb6, 0x7f, 0xbf, 0x1b, 0xef, + 0xa1, 0xbd, 0xf7, 0xc, 0x1f, 0xf8, 0x3c, 0xfb, 0x32, 0x51, 0xed, 0xfb, + 0xf4, 0x7, 0x32, 0x88, 0x62, 0x50, 0x56, 0x89, 0x93, 0x95, 0x6c, 0x1e, + 0xe, 0xfb, 0x31, 0xc1, 0xf8, 0x7b, 0xc0, 0xf2, 0xf7, 0x9, 0x1, 0xf8, + 0x28, 0xc7, 0x3, 0xf8, 0x2, 0xf8, 0xb0, 0x15, 0xd5, 0xf7, 0x9, 0x41, + 0x6, 0xfb, 0x70, 0xfd, 0x7a, 0x15, 0x81, 0x53, 0x5, 0x82, 0xb5, 0xbf, + 0x84, 0xbf, 0x1b, 0xef, 0xdd, 0xbd, 0xf7, 0xc, 0x1f, 0xf8, 0x3c, 0xfb, + 0xd2, 0x56, 0xf7, 0x96, 0xfb, 0xf9, 0x7, 0x32, 0x53, 0x62, 0x49, 0x56, + 0x5b, 0x96, 0x92, 0x68, 0x1e, 0xe, 0x8b, 0xc2, 0xf7, 0xda, 0xc2, 0xf7, + 0x1e, 0xc2, 0x1, 0xf7, 0xa, 0xc3, 0x3, 0xaa, 0x16, 0xf7, 0x23, 0xf7, + 0x5a, 0x6, 0xc5, 0xb5, 0xb4, 0x6a, 0xe0, 0x32, 0xbd, 0x4c, 0x19, 0x52, + 0x54, 0xf7, 0x6d, 0xc2, 0x2c, 0x6, 0x4d, 0xda, 0x4b, 0xd3, 0x3f, 0xc9, + 0xf7, 0x33, 0xf7, 0x5, 0x18, 0xee, 0xc2, 0xfb, 0x72, 0x54, 0xba, 0x6, + 0xfb, 0x48, 0xfb, 0x14, 0x5, 0xf8, 0xc, 0xfb, 0x23, 0x54, 0xe2, 0xfc, + 0x9b, 0x34, 0x7, 0xe, 0x8b, 0xc2, 0xf8, 0x9b, 0xc2, 0x68, 0xa, 0x73, + 0xa, 0xc2, 0xfb, 0x44, 0xf8, 0xd2, 0xfb, 0x6b, 0x54, 0xf7, 0x34, 0xfc, + 0x9b, 0xfb, 0x47, 0x6, 0xe, 0xb5, 0xc9, 0xf7, 0xbf, 0xd0, 0x1, 0xf0, + 0xce, 0x3, 0xf0, 0xf7, 0x6d, 0x15, 0xf8, 0x22, 0xfb, 0x43, 0x5, 0xc9, + 0x7, 0xfb, 0xdf, 0xf7, 0x2b, 0xf7, 0xdf, 0xf7, 0x28, 0x5, 0xd0, 0x7, + 0xfc, 0x22, 0xfb, 0x46, 0x5, 0xe, 0x76, 0xbe, 0xf7, 0x37, 0xc3, 0xd7, + 0xc5, 0xf7, 0x3e, 0xc5, 0x1, 0xf7, 0x39, 0xc2, 0x3, 0xd6, 0xaa, 0x15, + 0xa5, 0x57, 0xa8, 0x94, 0xd8, 0xac, 0xb0, 0x8a, 0x19, 0xaf, 0x8a, 0x90, + 0x8c, 0xad, 0x7a, 0x8, 0x81, 0x9f, 0x9f, 0x7d, 0xbc, 0x1b, 0xb6, 0xb6, + 0x9d, 0xa7, 0xaa, 0x1f, 0x76, 0xb8, 0x5, 0x7f, 0x7a, 0x61, 0x6f, 0x68, + 0x1b, 0x69, 0x81, 0x93, 0x9f, 0x6c, 0x1f, 0x99, 0x75, 0x73, 0x90, 0x7c, + 0x1b, 0x6a, 0x6f, 0x84, 0x7a, 0x67, 0x1f, 0xc3, 0xb7, 0x9b, 0xa9, 0x86, + 0xcd, 0x8, 0xf7, 0x19, 0xc3, 0xfb, 0x1d, 0x6, 0x87, 0x97, 0x88, 0xaf, + 0x88, 0xa7, 0x8, 0xf7, 0x27, 0xc5, 0x6, 0xfb, 0x2d, 0x8c, 0x5, 0x89, + 0xa3, 0x89, 0x97, 0x97, 0x1a, 0xe8, 0xc6, 0xa7, 0xbe, 0xbe, 0xbd, 0x72, + 0x59, 0xa4, 0x1e, 0xc0, 0x9e, 0x5, 0xc4, 0x70, 0x50, 0xc4, 0x2f, 0x1b, + 0x22, 0x4e, 0x3f, 0x36, 0x7b, 0x8d, 0x78, 0x8e, 0x6c, 0x1f, 0x2e, 0x4f, + 0xef, 0x6, 0x8f, 0x6f, 0x8b, 0x69, 0x8f, 0x7e, 0x8, 0xfb, 0x0, 0x53, + 0xf7, 0x4, 0x6, 0x96, 0x4c, 0x53, 0x5a, 0x46, 0x59, 0x8, 0xe, 0xf7, + 0xc7, 0xc9, 0x1, 0xf8, 0x54, 0xc2, 0x3, 0xf8, 0x54, 0xf7, 0xc7, 0x15, + 0xfb, 0x5b, 0xc2, 0xf7, 0x99, 0xfc, 0x3e, 0x4d, 0x7, 0xe, 0x8b, 0xc3, + 0xf8, 0x99, 0xc3, 0x1, 0xf7, 0xa5, 0x73, 0xa, 0xc3, 0xfb, 0x45, 0xf7, + 0x88, 0x6, 0xf7, 0x18, 0xc0, 0x5, 0xc3, 0x7, 0xfb, 0x18, 0x55, 0x5, + 0xf7, 0xa6, 0xfb, 0x78, 0x53, 0xf7, 0x41, 0xfb, 0x84, 0x7, 0xfb, 0x19, + 0x55, 0x5, 0x54, 0x7, 0xf7, 0x19, 0xc1, 0x5, 0xfb, 0x72, 0xfb, 0x46, + 0x7, 0xe, 0x8b, 0xc2, 0xf7, 0xdf, 0xc2, 0x1, 0xc2, 0xc4, 0xf7, 0x3c, + 0xc3, 0xf7, 0x2c, 0xc4, 0x3, 0xc2, 0x16, 0xf7, 0xd, 0xc1, 0x4b, 0xf7, + 0xa2, 0x6, 0xa7, 0x9f, 0xa1, 0xad, 0xba, 0x1b, 0xd0, 0x95, 0x40, 0x81, + 0x1f, 0xfb, 0xc1, 0xf7, 0xd, 0xc2, 0x4a, 0xf7, 0x96, 0x7, 0x96, 0xa7, + 0xca, 0xc4, 0xc9, 0x90, 0x54, 0x75, 0x1e, 0xfb, 0xca, 0xf7, 0x4, 0xc2, + 0x54, 0xf7, 0x96, 0x7, 0xcd, 0x6a, 0xc9, 0x3d, 0x56, 0x6e, 0x68, 0x68, + 0x6f, 0x1e, 0xaf, 0x7c, 0x62, 0xad, 0x55, 0x1b, 0x5e, 0x6f, 0x6f, 0x6e, + 0x6e, 0x1f, 0xb7, 0xfb, 0x4, 0x55, 0xc2, 0x7, 0xe, 0xf8, 0xa1, 0xb3, + 0x1, 0xf7, 0xc, 0xf7, 0xfc, 0x3, 0xf7, 0xc, 0xf8, 0xa1, 0x15, 0xf7, + 0xfc, 0xb3, 0xfb, 0xfc, 0x6, 0xe, 0xf7, 0x7c, 0xbe, 0x1, 0xdb, 0xf8, + 0x4c, 0x3, 0xdb, 0xf7, 0x7c, 0x15, 0xf8, 0x4c, 0xbe, 0xfc, 0x4c, 0x6, + 0xe, 0xfb, 0x1c, 0x76, 0xf7, 0x2c, 0xbf, 0x62, 0xb4, 0x62, 0xc1, 0xf7, + 0xcd, 0xc0, 0x12, 0xf7, 0x3, 0xc2, 0xf7, 0x9f, 0xc2, 0x13, 0xce, 0xf7, + 0x3a, 0xae, 0x15, 0x6f, 0xa7, 0xb1, 0x7f, 0xb3, 0x1b, 0xc8, 0xcb, 0xae, + 0xc5, 0xaf, 0x1f, 0x13, 0xae, 0x39, 0xf7, 0x1d, 0x7, 0x13, 0x9e, 0xc1, + 0x39, 0xf8, 0x2, 0xfb, 0x1d, 0x56, 0xdd, 0xfb, 0x18, 0x7, 0x13, 0xce, + 0x5a, 0x68, 0xfb, 0x25, 0xfb, 0x11, 0x49, 0x62, 0xb8, 0xc6, 0x1e, 0xf7, + 0xa7, 0xfb, 0x1d, 0x56, 0xdd, 0xfc, 0xa6, 0xc2, 0x7, 0xe, 0xc9, 0x76, + 0x1, 0xe1, 0xdb, 0x15, 0xaf, 0x65, 0xf7, 0x45, 0xf7, 0x43, 0xf7, 0x44, + 0xfb, 0x42, 0xb2, 0xb2, 0xfb, 0x44, 0xf7, 0x43, 0xf7, 0x44, 0xf7, 0x44, + 0x69, 0xb4, 0xfb, 0x49, 0xfb, 0x46, 0xfb, 0x43, 0xf7, 0x42, 0x65, 0x64, + 0xf7, 0x43, 0xfb, 0x43, 0x5, 0xe, 0x8b, 0xc2, 0xf7, 0xe0, 0xc2, 0x1, + 0xf7, 0x1, 0xc2, 0xf7, 0xa5, 0xc2, 0x3, 0xa4, 0x16, 0xf7, 0x73, 0xc2, + 0x37, 0xf7, 0x85, 0x6, 0xb8, 0xb5, 0xd0, 0xb9, 0xc9, 0x1b, 0xb7, 0xc3, + 0x7e, 0x47, 0x1f, 0xfb, 0x8f, 0x38, 0x54, 0xf7, 0x70, 0xc2, 0x39, 0xf7, + 0x90, 0x7, 0xe1, 0x5a, 0xbc, 0x21, 0x45, 0x45, 0x5e, 0x62, 0x6a, 0x1e, + 0xe1, 0xfb, 0x1f, 0x54, 0xdf, 0xfb, 0xe0, 0x37, 0x7, 0xe, 0x7c, 0xc4, + 0xf7, 0x4a, 0xc9, 0xf7, 0xa9, 0xc6, 0x1, 0xf5, 0xc7, 0xf7, 0xa2, 0xc5, + 0x3, 0xf5, 0x7c, 0x15, 0xf7, 0x8d, 0xf7, 0x1f, 0xf7, 0x5, 0xf7, 0x7c, + 0xf7, 0x62, 0x2d, 0xe1, 0xfb, 0x6, 0x23, 0x3f, 0x27, 0x20, 0x28, 0xcb, + 0x2f, 0xf7, 0x2, 0xd9, 0xbc, 0xb9, 0xb3, 0xa8, 0x1f, 0xfb, 0x5a, 0xfb, + 0x34, 0x3d, 0xfb, 0x3e, 0x93, 0x1e, 0xf7, 0xd9, 0xf7, 0xf2, 0x15, 0x54, + 0x70, 0x59, 0x58, 0x4a, 0x1b, 0x43, 0x58, 0xc0, 0xd9, 0xc5, 0xab, 0xe3, + 0xe3, 0xe2, 0xc1, 0x2d, 0x3e, 0x8f, 0x1f, 0xe, 0x8b, 0xbf, 0xf7, 0xed, + 0xc0, 0x5b, 0xc0, 0xc7, 0xbb, 0x8c, 0xbc, 0x12, 0xa4, 0xf7, 0x20, 0x54, + 0xc2, 0xf7, 0xa5, 0xc1, 0x13, 0xbd, 0xeb, 0xf8, 0xa1, 0x15, 0xbe, 0x81, + 0x5, 0x99, 0x8f, 0x9f, 0xae, 0xaf, 0x1b, 0xad, 0xaa, 0x85, 0x7c, 0xa1, + 0x1f, 0x7c, 0xa1, 0x9b, 0x7e, 0xb4, 0x1b, 0xc9, 0xb6, 0xb6, 0xc2, 0x9e, + 0x1f, 0x59, 0x94, 0x5, 0x72, 0x82, 0x6e, 0x69, 0x67, 0x1b, 0x76, 0x7a, + 0x97, 0x98, 0x78, 0x1f, 0x9c, 0x73, 0x71, 0x93, 0x5f, 0x1b, 0x58, 0x56, + 0x74, 0x4a, 0x75, 0x1f, 0x44, 0xfc, 0xa1, 0x15, 0xf7, 0x73, 0xbf, 0x38, + 0xf7, 0x93, 0x6, 0xb7, 0xb5, 0xd0, 0xbe, 0xc8, 0x1b, 0xb7, 0xc4, 0x7f, + 0x49, 0x1f, 0xfb, 0xa4, 0x38, 0x57, 0xf7, 0x6f, 0xbf, 0x39, 0xf7, 0xa5, + 0x7, 0xdd, 0x62, 0xbb, 0x2a, 0x45, 0x47, 0x65, 0x5f, 0x58, 0x1e, 0x13, + 0xdd, 0xd0, 0xfb, 0x20, 0x56, 0x7, 0x13, 0xdb, 0xe0, 0xfb, 0xe5, 0x6, + 0x13, 0xdd, 0x36, 0x6, 0xe, 0xf7, 0x1f, 0xc1, 0xf7, 0x35, 0xc1, 0x1, + 0xf7, 0x3b, 0x3d, 0x15, 0xbd, 0x6, 0x95, 0xf7, 0x6d, 0x5, 0xf7, 0x23, + 0x6, 0x86, 0xfb, 0x6d, 0x5, 0xbd, 0x6, 0x91, 0xf7, 0x6d, 0x5, 0xef, + 0xc1, 0x2b, 0x6, 0x8f, 0xf7, 0x35, 0x5, 0xe7, 0xc1, 0x32, 0x6, 0x90, + 0xf7, 0x6f, 0x5, 0x58, 0x6, 0x87, 0xfb, 0x6f, 0x5, 0xfb, 0x25, 0x6, + 0x8e, 0xf7, 0x6f, 0x5, 0x57, 0x6, 0x88, 0xfb, 0x6f, 0x5, 0x20, 0x55, + 0xf4, 0x6, 0x86, 0xfb, 0x35, 0x5, 0x27, 0x55, 0xec, 0x6, 0xc1, 0xc1, + 0x15, 0x90, 0xf7, 0x35, 0x5, 0xf7, 0x24, 0x6, 0x86, 0xfb, 0x35, 0x5, + 0xe, 0x7a, 0xc2, 0xf7, 0xf2, 0xc2, 0x1, 0xc7, 0xc1, 0xf8, 0x2, 0xc6, + 0x3, 0xc7, 0xf7, 0x67, 0x15, 0xfb, 0x1f, 0xf6, 0x32, 0xf7, 0x18, 0xf7, + 0x1e, 0xf1, 0xe6, 0xf7, 0x1e, 0xf7, 0x22, 0x24, 0xe4, 0xfb, 0x1d, 0xfb, + 0x1f, 0x27, 0x34, 0xfb, 0x25, 0x1e, 0xc1, 0x16, 0xf7, 0x6, 0xd8, 0xca, + 0xf5, 0xf5, 0xd8, 0x4d, 0xfb, 0x6, 0xfb, 0xa, 0x43, 0x53, 0xfb, 0x3, + 0x22, 0x3d, 0xc5, 0xf7, 0x7, 0x1e, 0xe, 0x63, 0xa, 0x58, 0xa, 0xf7, + 0x4c, 0xf8, 0x95, 0x15, 0xf7, 0xa6, 0xde, 0x6b, 0xd7, 0xfb, 0x92, 0xfb, + 0x13, 0x5, 0xfb, 0x2, 0xfb, 0xdd, 0x21, 0xa, 0x63, 0xa, 0xf7, 0x62, + 0x77, 0x58, 0xa, 0xf7, 0x32, 0xf8, 0x7d, 0x15, 0xf7, 0x22, 0xf7, 0x3, + 0xf7, 0x20, 0xfb, 0x3, 0xb3, 0x9d, 0xfb, 0x22, 0xf7, 0x27, 0x5, 0x3f, + 0x6, 0xfb, 0x23, 0xfb, 0x27, 0x5, 0x52, 0xfb, 0xb7, 0x21, 0xa, 0x63, + 0xa, 0xd2, 0xf7, 0x8, 0x58, 0xa, 0xf7, 0xf6, 0xf8, 0x9b, 0x15, 0xda, + 0xf7, 0x8, 0x3c, 0x6, 0xfb, 0x54, 0xfb, 0x8, 0x15, 0xdd, 0xf7, 0x8, + 0x39, 0x6, 0x27, 0xfc, 0x37, 0x21, 0xa, 0x7c, 0xc2, 0xf7, 0x2c, 0xc6, + 0xf7, 0x1b, 0xc2, 0x1, 0xa9, 0xc1, 0xf7, 0x59, 0xc0, 0xf7, 0x4b, 0xbf, + 0x3, 0xf7, 0xc8, 0xd3, 0x15, 0x58, 0xa4, 0xb2, 0x67, 0xe0, 0x1b, 0xb6, + 0xac, 0x96, 0x97, 0xaf, 0x1f, 0x81, 0xc1, 0x5, 0x81, 0x6f, 0x65, 0x7f, + 0x68, 0x1b, 0x3f, 0x55, 0xbb, 0xf3, 0x91, 0x1f, 0xf7, 0x7f, 0x6, 0xec, + 0x8c, 0x82, 0xf7, 0x2c, 0xfb, 0x14, 0x1b, 0x48, 0x66, 0x5a, 0x6d, 0x7d, + 0x1f, 0xb9, 0x76, 0x63, 0xac, 0x4b, 0x1b, 0xfb, 0x1d, 0x74, 0xfb, 0x21, + 0xfb, 0x3, 0xfb, 0x51, 0xf7, 0x9, 0x7b, 0xad, 0xe3, 0xa9, 0xcb, 0xa3, + 0x94, 0x1f, 0xa6, 0xf7, 0x47, 0x15, 0xcb, 0x81, 0xba, 0xcf, 0xc5, 0x1b, + 0xd1, 0x9c, 0x3b, 0x57, 0x1f, 0xfc, 0x45, 0x52, 0x15, 0xe3, 0x9d, 0xf3, + 0xdf, 0xd9, 0x9c, 0x35, 0x49, 0x47, 0x90, 0xfb, 0x12, 0x24, 0x31, 0x82, + 0xf7, 0x12, 0xa7, 0x1e, 0xe, 0xfb, 0x2b, 0xc1, 0x1, 0xf7, 0x78, 0xcd, + 0x3, 0xf7, 0xb9, 0x16, 0x67, 0x7b, 0x6e, 0x6a, 0x67, 0x1a, 0x61, 0xaf, + 0x73, 0xb1, 0xa1, 0xa1, 0x93, 0x9a, 0x9c, 0x1e, 0x93, 0xc3, 0x5, 0x7c, + 0x82, 0x75, 0x81, 0x79, 0x1b, 0x7b, 0x7f, 0x95, 0x9f, 0xb1, 0xba, 0x9d, + 0xa4, 0x96, 0x1f, 0xe, 0x63, 0xa, 0x58, 0xa, 0xf7, 0x36, 0xf8, 0xe7, + 0x15, 0xf7, 0xa8, 0x24, 0x96, 0xaa, 0xfb, 0x93, 0xf7, 0x29, 0x5, 0xfb, + 0x18, 0xfc, 0x5c, 0x21, 0xa, 0x8b, 0xc2, 0xf8, 0xcb, 0x77, 0x1, 0xf7, + 0xa9, 0xc2, 0x3, 0xea, 0x16, 0xf8, 0x2d, 0xc2, 0xfb, 0x40, 0xf8, 0xcb, + 0x6, 0xfb, 0x71, 0x58, 0x5, 0x54, 0x7, 0xf7, 0x3a, 0xaf, 0x5, 0xfc, + 0x85, 0xfb, 0x4a, 0x7, 0xe, 0x5d, 0xc1, 0x5f, 0x76, 0xf7, 0xd4, 0xc0, + 0x7c, 0xc1, 0xf7, 0xca, 0x77, 0x12, 0xf0, 0xc0, 0xf8, 0x3, 0xbe, 0x13, + 0x5e, 0xb9, 0x6e, 0x15, 0xb0, 0x6f, 0xf8, 0x9a, 0xf9, 0x46, 0x66, 0xab, + 0x5, 0xfc, 0xc8, 0xfc, 0x0, 0x15, 0xf7, 0x94, 0xc1, 0x25, 0xf7, 0xc6, + 0x6, 0xfb, 0x25, 0x73, 0x5, 0x55, 0x7, 0xe7, 0x99, 0x5, 0xfb, 0x86, + 0x26, 0x7, 0xf7, 0xfa, 0xfb, 0xf2, 0x15, 0x13, 0xae, 0x58, 0xf7, 0x6a, + 0xc1, 0xfb, 0x22, 0x7, 0xf1, 0xe5, 0xb3, 0xb0, 0xd2, 0x1a, 0xc3, 0x69, + 0xc1, 0x46, 0x65, 0x67, 0x78, 0x69, 0x73, 0x1e, 0x4c, 0xb8, 0x7, 0xb0, + 0x84, 0xa9, 0xa5, 0xa9, 0x1b, 0xae, 0x9c, 0x6c, 0x69, 0x59, 0x24, 0x39, + 0x4f, 0x4e, 0x1f, 0xe, 0x5e, 0xc1, 0x5e, 0x76, 0xf7, 0xf, 0xc3, 0xf7, + 0x47, 0xc1, 0xf7, 0xc6, 0x77, 0x12, 0xef, 0xbc, 0xf7, 0xcc, 0xbd, 0x13, + 0xbe, 0xf7, 0xd6, 0xc8, 0x15, 0xf7, 0x1f, 0x57, 0x54, 0x55, 0xf7, 0x2b, + 0xc1, 0x5d, 0xbf, 0xb9, 0xc3, 0x5d, 0xf7, 0x55, 0x51, 0x6, 0xfb, 0x17, + 0xfb, 0x66, 0x5, 0xca, 0x9c, 0x15, 0xd7, 0xf7, 0x8, 0x5, 0xfb, 0x8, + 0x7, 0xfc, 0x14, 0xfb, 0x24, 0x15, 0x13, 0x7e, 0xb3, 0x6d, 0xf8, 0x77, + 0xf9, 0x47, 0x63, 0x9f, 0x5, 0xfc, 0xc4, 0xfb, 0xf5, 0x15, 0xf7, 0x87, + 0xc1, 0x2d, 0xf7, 0xc6, 0x6, 0xfb, 0x19, 0x73, 0x5, 0x55, 0x7, 0xdf, + 0x99, 0x5, 0xfb, 0x86, 0x27, 0x7, 0xe, 0xf7, 0x8d, 0xc3, 0xf7, 0xd1, + 0x77, 0x68, 0xa, 0xc1, 0x3, 0xf7, 0x40, 0xf7, 0x8d, 0x15, 0xf7, 0x94, + 0xc3, 0x27, 0xf7, 0xd1, 0x6, 0xfb, 0x25, 0x71, 0x5, 0x53, 0x7, 0xe6, + 0x9a, 0x5, 0xfb, 0x8e, 0x25, 0x7, 0xe, 0xf7, 0x8d, 0xbf, 0xe7, 0xbe, + 0xe4, 0xba, 0x1, 0xf7, 0xf1, 0xb7, 0x3, 0xf7, 0xf2, 0xf7, 0x95, 0x15, + 0xe8, 0xc2, 0x59, 0xf7, 0x27, 0x6, 0xd6, 0x75, 0xb9, 0x3e, 0x5f, 0x5b, + 0x7a, 0x7c, 0x69, 0x1e, 0x96, 0x5b, 0x5, 0xa8, 0xc0, 0xb0, 0x8f, 0xa8, + 0x1b, 0xac, 0x9d, 0x6a, 0x58, 0x1f, 0x7e, 0x7, 0x8f, 0x75, 0x73, 0x8f, + 0x73, 0x1b, 0x26, 0x76, 0x4a, 0x69, 0x5c, 0xac, 0x5a, 0xc2, 0xb3, 0xaf, + 0xa6, 0xad, 0xa8, 0x1f, 0x8a, 0xcf, 0x15, 0x5f, 0x72, 0x66, 0x6a, 0x64, + 0x1b, 0x70, 0x76, 0x9e, 0xa4, 0xa4, 0xa4, 0xa2, 0xba, 0xb1, 0xb2, 0x7c, + 0x8b, 0x1f, 0xe, 0xf7, 0x8d, 0xc1, 0xf7, 0x75, 0xbf, 0x1, 0xf7, 0x31, + 0xc2, 0xf7, 0x44, 0xc2, 0x3, 0xf7, 0x31, 0xf8, 0x34, 0x15, 0xfb, 0x13, + 0xed, 0x63, 0xb8, 0xc3, 0xe2, 0xba, 0xf7, 0xa, 0xe5, 0x55, 0xd7, 0x34, + 0x4b, 0x3a, 0x59, 0xfb, 0x6, 0x1e, 0xc2, 0x16, 0xc5, 0xad, 0xc1, 0xc4, + 0xd1, 0x9a, 0x3b, 0x6b, 0x45, 0x63, 0x60, 0x5d, 0x5f, 0x5d, 0xb7, 0xd0, + 0x1e, 0xe, 0x7f, 0xbd, 0x69, 0x76, 0xf8, 0x33, 0xbd, 0x8e, 0x77, 0x12, + 0xc8, 0xbf, 0xf8, 0x0, 0xc2, 0x13, 0x6c, 0xc8, 0xa3, 0x15, 0xaf, 0x62, + 0xc0, 0xbe, 0x5, 0x13, 0x9c, 0x69, 0xb7, 0xc1, 0x7f, 0xbe, 0x1b, 0xf7, + 0x12, 0xf6, 0xdd, 0xf7, 0x29, 0xbf, 0x7e, 0xbf, 0x6c, 0xb1, 0x1f, 0xbd, + 0xbc, 0x67, 0xb4, 0x57, 0x58, 0x5, 0x13, 0xac, 0xac, 0x60, 0x57, 0x9a, + 0x54, 0x1b, 0xfb, 0x2d, 0x35, 0x22, 0xfb, 0x11, 0x55, 0x9c, 0x54, 0xac, + 0x65, 0x1f, 0xda, 0x8d, 0x15, 0xf7, 0x96, 0xf7, 0x8d, 0x5, 0x98, 0x77, + 0x9b, 0x69, 0x4b, 0x1a, 0x50, 0x5a, 0x20, 0xfb, 0x16, 0x64, 0x65, 0x99, + 0xa0, 0x6c, 0x1e, 0x63, 0xb0, 0x15, 0x73, 0xa7, 0x7e, 0xb3, 0xb3, 0x1a, + 0xf6, 0xdd, 0xd4, 0xf3, 0xa9, 0xb7, 0x7f, 0x72, 0xb0, 0x1e, 0xe, 0x63, + 0xa, 0xc9, 0xbd, 0x9c, 0xbc, 0x12, 0xc9, 0xc5, 0xf7, 0xfa, 0xc7, 0x17, + 0xf7, 0x0, 0xf8, 0xa1, 0x15, 0xbb, 0x80, 0x5, 0x9a, 0x8f, 0x9e, 0xbb, + 0xad, 0x1b, 0xad, 0x9e, 0x76, 0x79, 0xa3, 0x1f, 0x13, 0xfc, 0x7c, 0x9e, + 0xa0, 0x7e, 0xad, 0x1b, 0x13, 0xec, 0xc6, 0xb9, 0xbb, 0xc2, 0x9d, 0x1f, + 0x5c, 0x94, 0x5, 0x73, 0x82, 0x70, 0x65, 0x69, 0x1b, 0x77, 0x7c, 0x94, + 0x96, 0x7c, 0x1f, 0x13, 0xdc, 0x9e, 0x71, 0x72, 0xa6, 0x61, 0x1b, 0x5b, + 0x59, 0x67, 0x4a, 0x76, 0x1f, 0x5d, 0xfb, 0xc9, 0x21, 0xa, 0x66, 0xa, + 0xe7, 0xc2, 0xf7, 0xf1, 0xc4, 0x13, 0xdc, 0x92, 0x21, 0x15, 0x58, 0xf7, + 0xbd, 0xbe, 0xfb, 0x31, 0xf7, 0x5f, 0x7, 0x67, 0xac, 0xc3, 0x62, 0xea, + 0x1b, 0xf7, 0x11, 0xec, 0xe8, 0xf7, 0x12, 0xf7, 0x4, 0x2b, 0xde, 0xfb, + 0xe, 0x33, 0x4d, 0x70, 0x60, 0x65, 0x1f, 0x13, 0xec, 0xcc, 0xfb, 0x20, + 0x58, 0xe0, 0xfc, 0x78, 0x7, 0xc6, 0xf7, 0xe4, 0x15, 0x13, 0xdc, 0xe4, + 0xd8, 0xca, 0xeb, 0xeb, 0xd7, 0x4c, 0x32, 0x32, 0x3f, 0x43, 0x2b, 0x2b, + 0x3e, 0xd3, 0xe4, 0x1e, 0xe, 0xf8, 0xa8, 0xa9, 0x1, 0xf7, 0xd1, 0xb7, + 0xd9, 0xb6, 0x3, 0xf7, 0xd1, 0x3d, 0x15, 0xb7, 0xf8, 0xf6, 0xd9, 0xfc, + 0xf6, 0xb6, 0xf8, 0xf6, 0xbb, 0xa9, 0xfb, 0x6e, 0x6, 0xfb, 0x38, 0x3c, + 0x4f, 0xfb, 0xa, 0x4d, 0xc2, 0x2a, 0xf7, 0x55, 0x8a, 0x1f, 0xe, 0xfb, + 0x0, 0xf9, 0x6e, 0x1, 0xf7, 0x6a, 0xc2, 0x3, 0xf8, 0x16, 0xf9, 0x2, + 0x15, 0x56, 0x6, 0x51, 0x31, 0x4e, 0xfb, 0x29, 0xfb, 0x27, 0x1a, 0x26, + 0xbb, 0xfb, 0x1a, 0xd1, 0xfb, 0x1, 0x1e, 0xc1, 0x6, 0x4e, 0xf7, 0x7, + 0x53, 0xe5, 0xf7, 0x1f, 0x1a, 0xf7, 0x3a, 0xd1, 0xf7, 0x1c, 0xba, 0xdf, + 0x1e, 0xe, 0xfb, 0x0, 0xf9, 0x6e, 0x1, 0xf7, 0xdf, 0xc2, 0x3, 0xf7, + 0x6a, 0xfb, 0x0, 0x15, 0xc0, 0x6, 0xc5, 0xe5, 0xc8, 0xf7, 0x29, 0xf7, + 0x27, 0x1a, 0xf0, 0x5b, 0xf7, 0x1a, 0x45, 0xf7, 0x1, 0x1e, 0x55, 0x6, + 0xc8, 0xfb, 0x7, 0xc3, 0x31, 0xfb, 0x1f, 0x1a, 0xfb, 0x3a, 0x45, 0xfb, + 0x1c, 0x5c, 0x37, 0x1e, 0xe, 0x7c, 0xc1, 0xf7, 0x22, 0xc4, 0xf7, 0x20, + 0xc1, 0xf7, 0x19, 0xc4, 0x12, 0xf7, 0x1, 0xc3, 0xc3, 0xc3, 0xa9, 0xc2, + 0xc4, 0xc2, 0x17, 0xf0, 0xf7, 0x5d, 0x15, 0xf8, 0x35, 0xf7, 0x3c, 0x78, + 0xba, 0xfc, 0x36, 0xfb, 0x38, 0x5, 0xf7, 0x58, 0xfb, 0x22, 0x65, 0xa, + 0x64, 0x6b, 0xab, 0xb2, 0x1e, 0x4b, 0xa, 0x53, 0xf8, 0x13, 0x65, 0xa, + 0x1e, 0x13, 0x3a, 0x64, 0x6b, 0xab, 0xb2, 0x1f, 0x4b, 0xa, 0xe, 0x7c, + 0xf7, 0x10, 0x7a, 0xa, 0xb7, 0x15, 0x65, 0xab, 0x76, 0xb1, 0xab, 0xb3, + 0xa0, 0xb1, 0xb2, 0x6b, 0xa5, 0x63, 0x65, 0x6b, 0x73, 0x62, 0x1e, 0xe, + 0xf7, 0x51, 0xf7, 0x1e, 0x1, 0xf7, 0x72, 0xf7, 0x30, 0x3, 0xf7, 0x72, + 0xf7, 0x95, 0x15, 0x69, 0xaa, 0x69, 0xbc, 0xb1, 0xb1, 0xa7, 0xb2, 0xaf, + 0x6d, 0xae, 0x5c, 0x5f, 0x68, 0x6c, 0x64, 0x1e, 0xe, 0x7c, 0xc2, 0xf7, + 0x21, 0xc1, 0xf7, 0x1d, 0xc2, 0xf7, 0x21, 0xc1, 0x12, 0xa4, 0xc3, 0x7d, + 0xc3, 0xf2, 0xc1, 0x7f, 0xc1, 0xa0, 0xc3, 0xf7, 0x25, 0xc1, 0x13, 0xfa, + 0xc0, 0xa4, 0xf8, 0x84, 0x15, 0x49, 0xbd, 0x51, 0xd9, 0xd4, 0xc1, 0xc4, + 0xcf, 0xcd, 0x62, 0xc6, 0x33, 0x3e, 0x5a, 0x4f, 0x49, 0x1e, 0xc3, 0x8a, + 0x15, 0xb6, 0xa7, 0xa9, 0xb9, 0xb8, 0xa5, 0x6a, 0x64, 0x69, 0x72, 0x68, + 0x5d, 0x61, 0x6b, 0xa5, 0xb5, 0x1e, 0xf7, 0x9a, 0xfc, 0x15, 0x3a, 0xa, + 0x13, 0xf5, 0xc0, 0xfb, 0xe0, 0x8c, 0x3a, 0xa, 0x27, 0xf2, 0x15, 0x13, + 0x0, 0x0, 0xf8, 0x46, 0xf7, 0x47, 0x75, 0xbe, 0xfc, 0x46, 0xfb, 0x47, + 0x5, 0xe, 0xcc, 0x76, 0xf7, 0x5a, 0xc1, 0xf7, 0x42, 0x77, 0x68, 0xa, + 0xc1, 0x3, 0xdb, 0xf7, 0x86, 0x15, 0xf7, 0x56, 0xfb, 0x5a, 0xc1, 0xf7, + 0x5a, 0xf7, 0x54, 0xc1, 0xfb, 0x54, 0xf7, 0x42, 0x55, 0xfb, 0x42, 0xfb, + 0x56, 0x6, 0xe, 0xb7, 0xc2, 0xf7, 0x76, 0xc2, 0xf7, 0x46, 0x77, 0x68, + 0xa, 0xc2, 0x3, 0xf7, 0xa6, 0xf7, 0x1e, 0x15, 0xc2, 0xf7, 0x4f, 0xf7, + 0x4c, 0xc2, 0xfb, 0x4c, 0xf7, 0x46, 0x54, 0xfb, 0x46, 0xfb, 0x4f, 0x54, + 0xf7, 0x4f, 0x6, 0xfb, 0x4f, 0xfb, 0xad, 0x15, 0xf8, 0x3e, 0xc2, 0xfc, + 0x3e, 0x6, 0xe, 0x7c, 0xc2, 0xf7, 0x5c, 0xc2, 0xf7, 0x68, 0xc2, 0x1, + 0xf5, 0xc2, 0xf7, 0xab, 0xc2, 0x3, 0xa4, 0x7c, 0x15, 0xf7, 0x6d, 0xc2, + 0x3a, 0xf7, 0x5c, 0xf7, 0x8, 0x6, 0xa2, 0x6d, 0xb5, 0x4e, 0xb1, 0x4f, + 0x47, 0x47, 0x18, 0xaf, 0x67, 0xc7, 0xc7, 0x98, 0x74, 0x98, 0x77, 0x94, + 0x7a, 0x19, 0xf7, 0x18, 0xc2, 0x23, 0x6, 0x83, 0x97, 0x83, 0x9a, 0x81, + 0x9a, 0xd5, 0xd5, 0x18, 0x67, 0xaf, 0x4a, 0x4a, 0x70, 0xb5, 0x6d, 0xb7, + 0x74, 0xa8, 0x19, 0xcf, 0x90, 0xe4, 0xac, 0xf7, 0xf, 0x1a, 0xe1, 0x5b, + 0xd4, 0xfb, 0xe, 0x1e, 0xfb, 0xc0, 0x54, 0xdc, 0xfc, 0x67, 0x3a, 0x6, + 0xf7, 0x1c, 0xf7, 0x93, 0x15, 0xf7, 0x68, 0xf7, 0x26, 0x7, 0xd1, 0xca, + 0x72, 0x3a, 0xfb, 0x2, 0x24, 0x8f, 0x42, 0x1f, 0xe, 0x66, 0xa, 0xba, + 0xc4, 0xf7, 0xf1, 0xc2, 0x13, 0xec, 0xf7, 0xbc, 0x21, 0x15, 0x58, 0xf7, + 0xbd, 0xbe, 0x36, 0xf8, 0x78, 0xe0, 0xbe, 0xfb, 0x20, 0x4a, 0x7, 0x13, + 0xdc, 0xb6, 0x65, 0x4d, 0xa6, 0x33, 0x1b, 0xfb, 0xe, 0x2b, 0x38, 0xfb, + 0x4, 0xfb, 0x12, 0xec, 0x2e, 0xf7, 0x11, 0xea, 0xc3, 0xb4, 0xaf, 0xac, + 0x1f, 0xfb, 0x5f, 0x7, 0x87, 0xf7, 0xe4, 0x15, 0x32, 0x3e, 0x43, 0x2b, + 0x2b, 0x3f, 0xd3, 0xe4, 0xe4, 0xd7, 0xca, 0xeb, 0xeb, 0xd8, 0x4c, 0x32, + 0x1e, 0xe, 0x7c, 0xf7, 0xb, 0xf8, 0x34, 0xbf, 0x1, 0xf7, 0xa, 0xc1, + 0xaa, 0xf7, 0x19, 0xe7, 0xc0, 0x3, 0xf7, 0x86, 0xf7, 0x44, 0x15, 0xc2, + 0xcd, 0x6, 0xcc, 0x8f, 0xf7, 0xb, 0xb3, 0xf7, 0xc, 0x1a, 0xf7, 0x6, + 0x2c, 0xbf, 0x27, 0x4f, 0x4d, 0x79, 0x69, 0x5d, 0x1e, 0x27, 0xc1, 0xc9, + 0x7, 0xa7, 0xb0, 0xb4, 0x95, 0xb1, 0x1b, 0xd7, 0xcb, 0x5c, 0x4a, 0x29, + 0xfb, 0x5, 0x7c, 0x42, 0x7d, 0x1f, 0x64, 0xfb, 0x81, 0x4c, 0xa, 0xfb, + 0x31, 0xc1, 0xf7, 0xb, 0x76, 0xf7, 0xd2, 0xf7, 0x9, 0x1, 0xf7, 0xa, + 0xc0, 0xe6, 0xf7, 0x1b, 0xa9, 0xc1, 0x3, 0xf7, 0x9a, 0xf8, 0x9, 0x15, + 0x6c, 0xa5, 0x6e, 0xb4, 0xb1, 0xa9, 0xa5, 0xac, 0xa8, 0x70, 0xa8, 0x61, + 0x6a, 0x6a, 0x73, 0x6a, 0x1e, 0xb4, 0xfb, 0x52, 0x15, 0x40, 0x77, 0xfb, + 0x2, 0x67, 0xfb, 0xb, 0x1a, 0x21, 0xea, 0x50, 0xf1, 0xc6, 0xc7, 0x9b, + 0x9c, 0xba, 0x1e, 0xf7, 0xb, 0x55, 0x44, 0x7, 0x7b, 0x68, 0x63, 0x80, + 0x63, 0x1b, 0xfb, 0x5, 0x6f, 0xd3, 0xb0, 0xec, 0xf7, 0x6, 0xa0, 0xd4, + 0x98, 0x1f, 0xf7, 0x6, 0x54, 0x7, 0xe, 0xf8, 0xc2, 0x77, 0x1, 0xf7, + 0x58, 0xca, 0xdc, 0xca, 0x3, 0xf7, 0x62, 0xf7, 0xc7, 0x77, 0xa, 0xf7, + 0x37, 0xfb, 0x8f, 0x77, 0xa, 0xe, 0xfb, 0x1a, 0x6d, 0xa, 0xfb, 0x1a, + 0x45, 0xa, 0xf7, 0xdc, 0xf7, 0x7e, 0x8b, 0x77, 0x1, 0xf7, 0x1c, 0xf7, + 0xdc, 0x3, 0xf8, 0x29, 0xf7, 0xdc, 0x15, 0xc6, 0x6, 0x46, 0xf7, 0x7e, + 0x5, 0x2e, 0x6, 0x4a, 0xfb, 0x7e, 0x15, 0xc8, 0x6, 0x45, 0x5c, 0xa, + 0xf7, 0xdc, 0x6d, 0xa, 0xf7, 0xdc, 0x45, 0xa, 0xf7, 0xdc, 0x5f, 0xa, + 0xf7, 0xd6, 0xf7, 0xdc, 0x15, 0xc6, 0x6, 0x44, 0x5c, 0xa, 0xf7, 0xdc, + 0x5f, 0xa, 0xf7, 0x6e, 0xf7, 0xdc, 0x15, 0xc6, 0x6, 0xf3, 0x5c, 0xa, + 0xfb, 0x1a, 0x5f, 0xa, 0xf7, 0x6e, 0xfb, 0x1a, 0x15, 0xc6, 0x6, 0xf3, + 0x5c, 0xa, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x97, 0xdd, 0x3, 0xf7, 0xae, + 0xf7, 0xc7, 0x15, 0xae, 0x6, 0xa3, 0xf7, 0x93, 0x5, 0x39, 0x6, 0xe, + 0x8b, 0xc1, 0xf7, 0xd4, 0xc1, 0x63, 0xc0, 0x12, 0xbd, 0xf7, 0x4a, 0x54, + 0xc2, 0x13, 0xb0, 0xbd, 0x16, 0xf8, 0xf, 0xc1, 0xfb, 0x59, 0xf7, 0x51, + 0x6, 0xf1, 0xf7, 0x2, 0xc2, 0xb6, 0xb6, 0x1b, 0xa4, 0x9e, 0x85, 0x69, + 0x92, 0x1f, 0xc5, 0x90, 0x5, 0xbf, 0x88, 0x6a, 0xaf, 0x54, 0x1b, 0x2c, + 0x3f, 0x36, 0x57, 0x54, 0x1f, 0x13, 0xd0, 0xf7, 0x10, 0xfb, 0x4a, 0x55, + 0x7, 0x13, 0xc8, 0xf7, 0x13, 0xfb, 0xd4, 0x6, 0x13, 0xd0, 0xfb, 0x13, + 0x6, 0xe, 0x79, 0xb9, 0xf8, 0x7, 0xba, 0xe4, 0xb8, 0x1, 0x8b, 0xb9, + 0xf7, 0x2f, 0xbb, 0xf7, 0xd, 0xbe, 0xf7, 0x17, 0xbb, 0x3, 0xf7, 0xaa, + 0x4, 0xfb, 0x37, 0xf7, 0x1c, 0xfb, 0x19, 0xf7, 0x3b, 0xf7, 0x36, 0xf7, + 0x1b, 0xf7, 0x14, 0xf7, 0x43, 0xf7, 0x3b, 0xfb, 0x1e, 0xf7, 0x14, 0xfb, + 0x33, 0xfb, 0x2f, 0xfb, 0x28, 0xfb, 0xc, 0xfb, 0x4a, 0x1e, 0xb9, 0x8d, + 0x15, 0xf7, 0x16, 0xf1, 0xf7, 0x11, 0xf7, 0x30, 0xf7, 0x22, 0xf5, 0xfb, + 0x8, 0xfb, 0x1d, 0xfb, 0x22, 0xfb, 0x1, 0xfb, 0x4, 0xfb, 0x21, 0xfb, + 0x1b, 0xfb, 0xd, 0xf7, 0x2, 0xf7, 0x22, 0x1e, 0xf7, 0x2f, 0xfb, 0x30, + 0x15, 0xbb, 0xf7, 0xe, 0xc0, 0x6, 0xd4, 0xfb, 0xe, 0x5, 0xc6, 0x6, + 0x3d, 0xf7, 0x1a, 0x5, 0xb1, 0x99, 0xa6, 0xba, 0xae, 0x1a, 0xd1, 0x4f, + 0xa1, 0x52, 0x1e, 0x24, 0x6, 0xbb, 0xfb, 0x2d, 0x15, 0xf5, 0xc1, 0x7, + 0xb8, 0xa1, 0x71, 0x74, 0x65, 0x67, 0x78, 0x6d, 0x1f, 0xe, 0xf8, 0x63, + 0xbd, 0xab, 0x8b, 0xab, 0xbd, 0x1, 0xf7, 0x6e, 0xbd, 0xcb, 0xbd, 0x14, + 0xe0, 0xf7, 0x6e, 0xf8, 0xb5, 0x15, 0x5d, 0xaf, 0x67, 0xb9, 0xb9, 0xaf, + 0xaf, 0xb9, 0xb9, 0x67, 0xaf, 0x5d, 0x5d, 0x67, 0x67, 0x5d, 0x1e, 0xbd, + 0x16, 0x9d, 0x99, 0x99, 0x9d, 0x9d, 0x99, 0x7d, 0x79, 0x79, 0x7d, 0x7d, + 0x79, 0x79, 0x7d, 0x99, 0x9d, 0x1e, 0xe, 0x7e, 0xc2, 0xf7, 0x2b, 0xc0, + 0xf7, 0x20, 0xc2, 0x12, 0xdf, 0xc2, 0x5a, 0xc1, 0xf7, 0xba, 0xc1, 0x69, + 0xc5, 0x13, 0xf4, 0xdf, 0x7f, 0x15, 0xc2, 0xb8, 0x6, 0x74, 0xbc, 0xc5, + 0x75, 0xdb, 0x1b, 0x13, 0xea, 0xf7, 0x3, 0xda, 0xc4, 0xe1, 0xf7, 0xb, + 0xfb, 0x28, 0x80, 0x32, 0x92, 0x1f, 0x5f, 0x8e, 0x30, 0x99, 0xc1, 0x1a, + 0xc9, 0xee, 0x92, 0xb6, 0xc2, 0xc2, 0x7a, 0x70, 0xb5, 0x1e, 0x50, 0xc1, + 0xf7, 0x32, 0x55, 0x63, 0x7, 0xa6, 0x5e, 0x55, 0x98, 0x53, 0x1b, 0xfb, + 0x2, 0x38, 0x5c, 0x35, 0x33, 0xf7, 0xc, 0x72, 0xce, 0x89, 0x1f, 0xc1, + 0x89, 0xf7, 0x13, 0x85, 0x4f, 0x1a, 0x45, 0x20, 0x7f, 0x66, 0x4c, 0x4b, + 0x9e, 0xb0, 0x5b, 0x1e, 0xc6, 0x54, 0x7, 0xe, 0x7c, 0xc2, 0x8b, 0xf7, + 0x27, 0x8b, 0xc1, 0x8b, 0xf7, 0x2b, 0x8b, 0xc2, 0x8b, 0xb7, 0x12, 0xde, + 0xc3, 0xf7, 0xbd, 0xc2, 0x17, 0xf7, 0x96, 0xf8, 0x7f, 0x15, 0xdd, 0x6, + 0xf7, 0x2a, 0xf7, 0x32, 0x60, 0x9f, 0xfb, 0x28, 0xfb, 0xe, 0xfb, 0x2d, + 0xf7, 0xd, 0x61, 0x77, 0x5, 0x76, 0xfd, 0x2b, 0x15, 0xc3, 0xc2, 0x6, + 0x74, 0xbd, 0xbe, 0x6b, 0xdd, 0x1b, 0xf7, 0x5, 0xdc, 0xc4, 0xe2, 0xdf, + 0x3f, 0xa2, 0x44, 0x90, 0x1f, 0x44, 0x90, 0xfb, 0x2c, 0x7b, 0xe1, 0x1a, + 0xca, 0xe6, 0x98, 0xb7, 0x1e, 0x13, 0xef, 0xc3, 0xc3, 0x70, 0x70, 0xb6, + 0x1f, 0x59, 0xc2, 0xf7, 0x33, 0x54, 0x59, 0x7, 0xa6, 0x5d, 0x54, 0xa2, + 0x51, 0x1b, 0xfb, 0x4, 0x41, 0x56, 0x34, 0xfb, 0xa, 0xf7, 0x2a, 0x8c, + 0xdd, 0x88, 0x1f, 0xbc, 0x89, 0xdf, 0x91, 0x47, 0x1a, 0x40, 0xfb, 0x1, + 0x83, 0x65, 0x4b, 0x52, 0xa9, 0xb0, 0x5a, 0x1e, 0xbc, 0x53, 0x7, 0xe, + 0xfb, 0x2b, 0xf7, 0x5a, 0x56, 0xc0, 0xf7, 0x22, 0xbd, 0xf7, 0x29, 0xc0, + 0x12, 0xde, 0xc3, 0x5a, 0xc2, 0xf7, 0xb6, 0xc3, 0x6c, 0xc3, 0x13, 0x7a, + 0xde, 0x85, 0x15, 0xc3, 0xc0, 0x6, 0xb3, 0x78, 0xb3, 0x73, 0xc4, 0x83, + 0x89, 0x4a, 0x18, 0x8e, 0x92, 0x95, 0x8c, 0x95, 0x1b, 0x98, 0x96, 0x84, + 0x7e, 0x7b, 0x7c, 0x82, 0x7a, 0x7d, 0x7d, 0x8e, 0x94, 0x81, 0x1f, 0x7d, + 0x68, 0x5, 0x13, 0xba, 0x7f, 0x9b, 0xa0, 0x85, 0x9e, 0x1b, 0xb1, 0xae, + 0xab, 0xb3, 0xad, 0x73, 0x9e, 0x77, 0x8c, 0x1f, 0x13, 0x75, 0x9e, 0x7, + 0xf7, 0x3, 0x8c, 0xda, 0xb4, 0xde, 0x1a, 0xdc, 0x4f, 0xae, 0x43, 0x8f, + 0x1e, 0x45, 0x90, 0xfb, 0x3d, 0x85, 0xde, 0x1a, 0xc8, 0xe6, 0x91, 0xb7, + 0x1e, 0x13, 0xb6, 0xc4, 0xc2, 0x70, 0x70, 0xb6, 0x1f, 0x5c, 0xc3, 0xf7, + 0x2e, 0x53, 0x5b, 0x7, 0xa5, 0x5d, 0x55, 0xa1, 0x50, 0x1b, 0xfb, 0x4, + 0x41, 0x5d, 0x38, 0xfb, 0x7, 0xf7, 0x2e, 0x86, 0xdd, 0x88, 0x1f, 0x13, + 0xb9, 0xbd, 0x89, 0xdf, 0x83, 0x48, 0x1a, 0x44, 0xfb, 0x5, 0x91, 0x65, + 0x4a, 0x53, 0xa7, 0xaf, 0x5a, 0x1e, 0xb1, 0x53, 0x7, 0xe, 0x3e, 0xc0, + 0xf8, 0xa3, 0xc0, 0x1, 0xf7, 0x16, 0xc0, 0xf7, 0x74, 0xc0, 0x3, 0xf7, + 0x16, 0xdd, 0x15, 0xfb, 0x33, 0xf7, 0x53, 0x7, 0xa5, 0xa7, 0x8c, 0x8f, + 0xa0, 0x1f, 0xa5, 0x91, 0xac, 0x9e, 0xb7, 0x1a, 0xa7, 0x7a, 0xa7, 0x74, + 0x9e, 0x1e, 0x8b, 0x7c, 0x96, 0x84, 0x92, 0x1e, 0xe3, 0x9e, 0x8c, 0xc6, + 0xa2, 0x1a, 0x8c, 0x7, 0xad, 0x72, 0xa6, 0x71, 0x9f, 0x1e, 0xfb, 0x67, + 0xf7, 0x33, 0x5, 0x74, 0x9d, 0x84, 0x93, 0x96, 0x1a, 0xa9, 0xae, 0x8f, + 0x9f, 0x1e, 0xf7, 0x36, 0x21, 0xc0, 0xf7, 0x33, 0xfb, 0x47, 0x6, 0x69, + 0x68, 0x8a, 0x81, 0x6e, 0x1f, 0x6e, 0x82, 0x7a, 0x70, 0x6d, 0x1a, 0x6c, + 0x9f, 0x76, 0xa1, 0x77, 0x1e, 0x9e, 0x7a, 0x5, 0x6d, 0x83, 0x59, 0x6b, + 0x52, 0x1a, 0x69, 0x9e, 0x6d, 0xa3, 0x79, 0x1e, 0xf7, 0x65, 0xfb, 0x32, + 0x5, 0xa8, 0x76, 0x8e, 0x7d, 0x80, 0x1a, 0x81, 0x86, 0x76, 0x6a, 0x1e, + 0xfb, 0x49, 0xf5, 0x6, 0xf7, 0x3f, 0xbb, 0x15, 0xfb, 0x2c, 0xf7, 0x6, + 0x5, 0x7d, 0x96, 0x7a, 0x9b, 0xa0, 0x1a, 0xb0, 0xb5, 0xa2, 0xa5, 0x1e, + 0xf7, 0x31, 0xfb, 0x5, 0x5, 0x9b, 0x7e, 0x9f, 0x7a, 0x75, 0x1a, 0x7c, + 0x80, 0x61, 0x48, 0x1e, 0xe, 0xa8, 0x76, 0xf7, 0x8e, 0xf7, 0x15, 0x8b, + 0xf7, 0xb, 0x1, 0xf7, 0x99, 0xf7, 0x19, 0x3, 0xf7, 0x61, 0x93, 0x15, + 0xcb, 0x6, 0xf1, 0xf7, 0x8e, 0x5, 0x2b, 0x6, 0x7d, 0xf7, 0x50, 0x4c, + 0xa, 0xa0, 0x76, 0xf8, 0xbb, 0xc3, 0x1, 0xee, 0xc3, 0x3, 0xf7, 0x8a, + 0x16, 0xc8, 0x6, 0xf7, 0x55, 0xf8, 0xb8, 0x5, 0xc6, 0xfc, 0x25, 0xfb, + 0x28, 0xc3, 0xe7, 0xf7, 0xb3, 0x7, 0xe, 0x7c, 0xc6, 0xf7, 0xa9, 0xc9, + 0xf7, 0x4a, 0xc4, 0x1, 0xf1, 0xc5, 0xf7, 0xaa, 0xc7, 0x3, 0xf7, 0x34, + 0xf7, 0xbd, 0x15, 0xf7, 0x72, 0xf7, 0x39, 0xb9, 0xf7, 0x37, 0x1e, 0xc4, + 0x7, 0xfb, 0x8d, 0xfb, 0x1d, 0x38, 0xfb, 0x9a, 0xfb, 0x62, 0xe8, 0x35, + 0xf7, 0x6, 0xf3, 0xe0, 0xef, 0xf6, 0xee, 0x42, 0xe7, 0xfb, 0x2, 0x3d, + 0x5b, 0x5d, 0x63, 0x6e, 0x1f, 0x8e, 0x39, 0x15, 0xc2, 0xa6, 0xbe, 0xbe, + 0xcc, 0x1b, 0xd3, 0xc7, 0x56, 0x3d, 0x51, 0x62, 0x33, 0x2c, 0x34, 0x5b, + 0xe9, 0xd8, 0x87, 0x1f, 0xe, 0x3b, 0xf9, 0x59, 0x1, 0xf7, 0x11, 0xf7, + 0xf2, 0x3, 0xf7, 0x11, 0x4d, 0x15, 0xb3, 0x79, 0xf7, 0xca, 0xf9, 0x46, + 0x63, 0x9e, 0x5, 0xe, 0xe, 0x76, 0xc5, 0x70, 0xc4, 0xf7, 0x64, 0xc5, + 0xf7, 0x71, 0xc4, 0x12, 0xf7, 0x25, 0xc1, 0x89, 0xc0, 0x13, 0xb8, 0xf7, + 0xa, 0xaa, 0x15, 0xa3, 0x57, 0x5, 0x13, 0x78, 0xa4, 0xc3, 0xb5, 0x91, + 0xad, 0x1b, 0x13, 0xb8, 0xc8, 0xae, 0x6c, 0xae, 0x1b, 0xb6, 0xb2, 0x9d, + 0xa6, 0xaa, 0x1f, 0x76, 0xb9, 0x5, 0x7f, 0x7a, 0x6e, 0x76, 0x68, 0x1b, + 0x13, 0x74, 0x6e, 0x8a, 0x5f, 0xa9, 0x50, 0x8c, 0x8, 0x6e, 0x69, 0x86, + 0x77, 0x66, 0x1f, 0x88, 0x6, 0xb6, 0xc1, 0xa3, 0xb7, 0x8d, 0xb8, 0x8c, + 0xa8, 0x88, 0xa8, 0x81, 0xab, 0x8, 0xf7, 0x61, 0xc5, 0xfb, 0x73, 0x6, + 0x13, 0xb8, 0x80, 0xa3, 0x81, 0xbb, 0xa2, 0x1a, 0xdd, 0xbf, 0xb7, 0xd8, + 0xbe, 0xb9, 0x67, 0x5a, 0xa4, 0x1e, 0xc0, 0xa9, 0x5, 0xc3, 0x70, 0x52, + 0xc3, 0x31, 0x1b, 0xfb, 0xb, 0x4a, 0x38, 0x2f, 0x69, 0x93, 0x67, 0x9c, + 0x6a, 0x1f, 0x32, 0x51, 0xf4, 0x6, 0x13, 0xb4, 0x93, 0x73, 0x8e, 0x73, + 0x74, 0x1a, 0x48, 0x6d, 0x51, 0x5a, 0x5b, 0x1e, 0xe, 0x7c, 0xc2, 0xf7, + 0xe4, 0xc2, 0xf7, 0x16, 0x77, 0x1, 0xf7, 0x2a, 0xc1, 0x3, 0xd9, 0xf8, + 0xc, 0x15, 0xd3, 0xfb, 0x98, 0x6, 0xfb, 0x5, 0xf7, 0x0, 0x79, 0xbf, + 0xd5, 0xd5, 0xa8, 0xa6, 0xca, 0x1e, 0x85, 0xc1, 0x5, 0x77, 0x57, 0x41, + 0x68, 0x47, 0x1b, 0x3f, 0x62, 0x9d, 0xdd, 0x1f, 0xf7, 0x80, 0xf7, 0x8c, + 0xc2, 0xfb, 0x8c, 0xf7, 0x16, 0x55, 0xfb, 0x16, 0x43, 0x7, 0xe, 0xfb, + 0x31, 0xc0, 0xf7, 0x16, 0xc1, 0xf7, 0xe1, 0xc1, 0xf7, 0x1, 0xc0, 0x1, + 0xf6, 0xc3, 0xf7, 0xfb, 0xc5, 0x3, 0x9e, 0x23, 0x15, 0x56, 0xf7, 0xc5, + 0xc0, 0xfb, 0x35, 0xf7, 0x65, 0x7, 0x64, 0xab, 0xc6, 0x63, 0xea, 0x1b, + 0xf7, 0x14, 0xf2, 0xea, 0xf7, 0x15, 0xf7, 0x14, 0xfb, 0x2, 0xe4, 0xfb, + 0x8, 0x31, 0x4b, 0x67, 0x5e, 0x66, 0x1f, 0xf7, 0x87, 0xfb, 0x24, 0x56, + 0xe3, 0xfd, 0x3c, 0x7, 0xc6, 0xf7, 0xf4, 0x15, 0xe2, 0xd0, 0xd9, 0xf7, + 0x4, 0xf7, 0x1e, 0xb0, 0xfb, 0x1, 0x54, 0x21, 0x45, 0x4c, 0x20, 0x2a, + 0x39, 0xcf, 0xef, 0x1e, 0xe, 0x7c, 0xbf, 0xf7, 0x7e, 0xc6, 0xf7, 0x7c, + 0xc7, 0x12, 0xf8, 0x2b, 0xc9, 0x6b, 0xc5, 0x13, 0xe8, 0xf3, 0xa6, 0x15, + 0x70, 0xbc, 0xcd, 0x7c, 0xca, 0x1b, 0xf7, 0x2, 0xf2, 0xbb, 0xf7, 0x11, + 0xf7, 0x1, 0x33, 0xae, 0x65, 0x91, 0x1f, 0x13, 0xf0, 0xb6, 0x9e, 0xc4, + 0xc8, 0xd6, 0x1a, 0xf7, 0x3, 0x31, 0xbb, 0x32, 0x4d, 0x4a, 0x70, 0x67, + 0x5a, 0x1e, 0xa8, 0x58, 0x5, 0xae, 0xb4, 0xc0, 0x9e, 0xba, 0x1b, 0xcd, + 0xc4, 0x74, 0x3d, 0x55, 0x49, 0x3e, 0x30, 0x1f, 0x88, 0x50, 0x6, 0x13, + 0xe8, 0xd2, 0x8a, 0xf7, 0xb, 0x79, 0x2f, 0x1a, 0x35, 0x42, 0x66, 0x3a, + 0x53, 0x4f, 0x9c, 0xa9, 0x61, 0x1e, 0xe, 0x62, 0xc2, 0x5a, 0x76, 0xf7, + 0xd, 0xc1, 0xf7, 0x47, 0xc2, 0xf7, 0x99, 0xbf, 0x12, 0xf7, 0x44, 0xc1, + 0x6a, 0xbf, 0xf7, 0x64, 0xbf, 0x13, 0xbd, 0xf7, 0xca, 0xcc, 0x15, 0xf7, + 0x27, 0x58, 0x50, 0x54, 0xf7, 0x34, 0xc2, 0x5a, 0xbe, 0xbc, 0xc1, 0x5a, + 0xf7, 0x56, 0x4e, 0x6, 0xfb, 0x1e, 0xfb, 0x65, 0x5, 0xce, 0x9a, 0x15, + 0xdb, 0xf7, 0x8, 0x5, 0xfb, 0x8, 0x7, 0xfc, 0x32, 0xfb, 0x24, 0x15, + 0x13, 0x7b, 0xb6, 0x6c, 0xf8, 0x8e, 0xf9, 0x47, 0x60, 0xaa, 0x5, 0xfc, + 0xb2, 0xfb, 0xe7, 0x15, 0x7c, 0xa8, 0xbb, 0x7d, 0xb3, 0x1b, 0xca, 0xc9, + 0xb3, 0xce, 0xc0, 0x74, 0x9d, 0x6f, 0x99, 0x1f, 0x13, 0xbd, 0xa0, 0x9d, + 0x96, 0x9f, 0xad, 0x1a, 0xcb, 0x5d, 0xb3, 0x4e, 0x63, 0x61, 0x7b, 0x75, + 0x6d, 0x1e, 0x9f, 0x57, 0x5, 0xa2, 0x9b, 0xb5, 0x9a, 0xae, 0x1b, 0xa7, + 0xa3, 0x7b, 0x68, 0x69, 0x72, 0x74, 0x47, 0x8d, 0x1f, 0x56, 0x7, 0x13, + 0xbb, 0xbb, 0xcd, 0x8b, 0x59, 0x68, 0x67, 0x7a, 0x63, 0x65, 0x61, 0x94, + 0xa0, 0x77, 0x1f, 0xe, 0xf7, 0x84, 0xc2, 0xf7, 0xa3, 0xc3, 0x12, 0xf7, + 0xf3, 0xc3, 0x63, 0xc5, 0x13, 0xd0, 0xf7, 0x42, 0xf7, 0xa2, 0x15, 0x7c, + 0xaa, 0xbd, 0x7c, 0xb4, 0x1b, 0xcc, 0xcb, 0xb3, 0xd2, 0xc2, 0x73, 0x9d, + 0x6f, 0x99, 0x1f, 0x13, 0xe0, 0xa5, 0xa2, 0x93, 0xab, 0xaa, 0x1a, 0xbe, + 0x60, 0xba, 0x48, 0x60, 0x5e, 0x7a, 0x73, 0x6b, 0x1e, 0xa2, 0x5d, 0x5, + 0xa0, 0xa4, 0xb4, 0x95, 0xa7, 0x1b, 0xaa, 0xa5, 0x7b, 0x67, 0x69, 0x6f, + 0x72, 0x45, 0x8d, 0x1f, 0x55, 0x7, 0x13, 0xd0, 0xbd, 0x8c, 0xcb, 0x88, + 0x59, 0x1a, 0x63, 0x67, 0x7b, 0x61, 0x66, 0x62, 0x97, 0x9f, 0x75, 0x1e, + 0xe, 0xf8, 0x7d, 0xbc, 0x9d, 0xbd, 0x1, 0xf0, 0xf8, 0x8c, 0x15, 0xbe, + 0x80, 0x5, 0x99, 0x8f, 0xa4, 0xbc, 0xaf, 0x1b, 0xa9, 0x9d, 0x77, 0x79, + 0xa3, 0x1f, 0x7c, 0x9f, 0xa2, 0x7d, 0xb1, 0x1b, 0xc9, 0xbb, 0xba, 0xc3, + 0x9e, 0x1f, 0x59, 0x95, 0x82, 0x72, 0x6e, 0x65, 0x62, 0x8a, 0x19, 0x73, + 0x7a, 0x97, 0x99, 0x7a, 0x1f, 0x9e, 0x74, 0x74, 0xa2, 0x63, 0x1b, 0x58, + 0x57, 0x66, 0x4a, 0x75, 0x1f, 0xe, 0xf7, 0xb0, 0x76, 0xf7, 0x93, 0xb7, + 0x1, 0xf7, 0x10, 0xb8, 0xf7, 0x3, 0xb7, 0xf7, 0x4a, 0xb7, 0x3, 0xf7, + 0xac, 0xf7, 0x9b, 0x15, 0xb7, 0xf7, 0x98, 0x6, 0xcb, 0xfb, 0x98, 0x5, + 0xc4, 0x6, 0xc8, 0xf7, 0x97, 0x5, 0xfb, 0x97, 0xb7, 0xf7, 0xbf, 0x39, + 0x7, 0x56, 0xfb, 0x7c, 0x55, 0xf7, 0x7c, 0x5, 0x3a, 0x6, 0xfb, 0x30, + 0xfb, 0xbf, 0x15, 0xb8, 0xf7, 0x93, 0xd7, 0xb7, 0xfb, 0x58, 0x5f, 0xd6, + 0x6, 0xe, 0x8b, 0xc2, 0xf8, 0x1f, 0x77, 0xf7, 0x1a, 0xc5, 0x1, 0xf8, + 0x4c, 0xc7, 0x3, 0xee, 0x16, 0xf8, 0x25, 0xf7, 0x24, 0x51, 0x32, 0xfb, + 0x9d, 0x6, 0xf7, 0x6d, 0xf7, 0x44, 0xf5, 0xde, 0xf7, 0x4, 0x1a, 0xf7, + 0x17, 0x3b, 0xcc, 0xfb, 0x1, 0x37, 0x4b, 0x66, 0x3f, 0x61, 0x1e, 0x50, + 0xc1, 0x7, 0xd2, 0xc4, 0xb6, 0xd9, 0xdd, 0xbb, 0x5d, 0x2f, 0x3f, 0x2f, + 0x3f, 0x6e, 0x72, 0x1e, 0x42, 0x4c, 0x41, 0x46, 0x42, 0x4d, 0x8, 0xe, + 0xf7, 0x8d, 0xc2, 0xf7, 0x9c, 0xc1, 0x1, 0xf7, 0x53, 0xbf, 0xf7, 0x14, + 0xbf, 0x3, 0xf7, 0x44, 0xf7, 0x8d, 0x15, 0xf7, 0x8b, 0xc2, 0xfb, 0x38, + 0x6, 0xf7, 0x9, 0xe8, 0xba, 0xb3, 0xd3, 0x1a, 0xc5, 0x64, 0xc2, 0x3b, + 0x60, 0x5c, 0x80, 0x4a, 0x74, 0x1e, 0x55, 0xbf, 0x7, 0xc3, 0x83, 0xb0, + 0x9f, 0xab, 0x1b, 0xb5, 0xa4, 0x6b, 0x68, 0x55, 0xfb, 0x1f, 0x26, 0x53, + 0x5e, 0x1f, 0xe, 0x7c, 0xc0, 0x62, 0xc1, 0xf7, 0xd5, 0xc1, 0x12, 0xf7, + 0x4, 0xc0, 0xf7, 0xa2, 0xc0, 0x13, 0xb8, 0xa8, 0xf8, 0x8, 0x15, 0xde, + 0xfb, 0x8b, 0x6, 0x31, 0xcf, 0x59, 0xe3, 0xb2, 0xbf, 0x9b, 0xd3, 0xd7, + 0x1e, 0x13, 0x78, 0x3f, 0xf7, 0x1b, 0xc1, 0x39, 0xf8, 0xb, 0xfb, 0x1c, + 0x55, 0xde, 0xfb, 0x71, 0x7, 0x13, 0xb8, 0x5a, 0x62, 0x54, 0x4b, 0x4f, + 0x1b, 0x42, 0x62, 0xb5, 0xd3, 0x1f, 0xf7, 0xa6, 0xfb, 0x1c, 0x7, 0xe, + 0x3f, 0xa, 0xf7, 0x41, 0xf8, 0x82, 0x15, 0xf7, 0xb3, 0xf3, 0x6a, 0xd5, + 0xfb, 0x9e, 0xfb, 0x26, 0x5, 0xfb, 0x18, 0xfb, 0x25, 0x2b, 0xa, 0x3f, + 0xa, 0xf7, 0x0, 0xf8, 0x8f, 0x15, 0xb3, 0x79, 0xf7, 0x27, 0xf7, 0xb, + 0xf7, 0x26, 0xfb, 0xb, 0xb4, 0x9d, 0xfb, 0x27, 0xf7, 0x31, 0x5, 0x3c, + 0x6, 0xfb, 0x77, 0xfb, 0xaf, 0x2b, 0xa, 0x7c, 0xc1, 0x61, 0x67, 0xa, + 0xe7, 0xf7, 0x9, 0x12, 0xf7, 0x4, 0xc0, 0x94, 0xe0, 0xca, 0xdc, 0xaa, + 0xc0, 0x13, 0xbf, 0xf7, 0xd6, 0xf8, 0xa4, 0x72, 0xa, 0xfb, 0x28, 0xfb, + 0x9, 0x15, 0xe0, 0xf7, 0x9, 0x36, 0x6, 0xfb, 0x25, 0xfb, 0x9c, 0x38, + 0xa, 0x13, 0x7f, 0x3b, 0xa, 0x13, 0xbf, 0x33, 0xa, 0x3f, 0xa, 0xf7, + 0x2c, 0xf8, 0xe8, 0x15, 0xf7, 0xb3, 0x24, 0x96, 0xaa, 0xfb, 0x9c, 0xf7, + 0x28, 0x5, 0xfb, 0x31, 0xfb, 0xb7, 0x2b, 0xa, 0xfb, 0x11, 0xbd, 0x1, + 0x8b, 0xf8, 0xec, 0x3, 0x40, 0x4, 0x59, 0xf8, 0xec, 0xbd, 0x7, 0xe, + 0x96, 0x76, 0xf8, 0x11, 0xc2, 0x1, 0x9a, 0xf7, 0x68, 0xf7, 0x25, 0xf7, + 0x69, 0x3, 0xf7, 0x9e, 0x81, 0x15, 0xcc, 0x6, 0xf7, 0x45, 0xf8, 0x11, + 0x5, 0xd8, 0xc2, 0xfb, 0x69, 0x54, 0xd5, 0x6, 0xfb, 0x27, 0xfb, 0xd1, + 0xfb, 0x28, 0xf7, 0xd1, 0x5, 0xd7, 0xc2, 0xfb, 0x68, 0x54, 0xd4, 0x6, + 0xe, 0x96, 0x76, 0xf8, 0x11, 0xc2, 0x1, 0x98, 0xf7, 0x39, 0xf7, 0x8c, + 0xf7, 0x34, 0x3, 0xf7, 0x31, 0x81, 0x15, 0xca, 0x6, 0xdc, 0xf7, 0x9b, + 0xdb, 0xfb, 0x9b, 0x5, 0xc9, 0x6, 0xf6, 0xf8, 0x11, 0x5, 0xaf, 0xc2, + 0xfb, 0x34, 0x54, 0xce, 0x6, 0x39, 0xfb, 0xc4, 0x34, 0xf7, 0xb0, 0x5, + 0x5c, 0x6, 0x35, 0xfb, 0xae, 0x33, 0xf7, 0xc2, 0x5, 0xd6, 0xc2, 0xfb, + 0x39, 0x54, 0xad, 0x6, 0xe, 0x74, 0xa, 0xb0, 0xf7, 0x5b, 0xf7, 0x18, + 0xf7, 0x50, 0x3, 0x9f, 0x16, 0xf7, 0x6d, 0xc1, 0x43, 0x6, 0xf7, 0x1a, + 0xf7, 0x1b, 0xf7, 0x1a, 0xfb, 0x1b, 0x5, 0x43, 0x55, 0xf7, 0x6f, 0xc1, + 0x3f, 0x6, 0xfb, 0x40, 0xf7, 0x3e, 0xf7, 0x28, 0xf7, 0x28, 0x5, 0xd7, + 0xc1, 0xfb, 0x50, 0x55, 0xb6, 0x6, 0xfb, 0x5, 0xfb, 0x5, 0xfb, 0x4, + 0xf7, 0x5, 0x5, 0xbd, 0xc1, 0xfb, 0x5b, 0x55, 0xdb, 0x6, 0xf7, 0x28, + 0xfb, 0x27, 0xfb, 0x40, 0xfb, 0x3f, 0x5, 0x42, 0x6, 0xe, 0xfb, 0x31, + 0xbe, 0xf8, 0x75, 0xbe, 0x6a, 0xa, 0x13, 0xe8, 0x13, 0xd8, 0xc0, 0x21, + 0x15, 0x58, 0xf7, 0x9a, 0xbe, 0x32, 0x7, 0xf7, 0xc1, 0xf8, 0x75, 0x5, + 0xcc, 0xbe, 0xfb, 0x4b, 0x58, 0xc4, 0x6, 0xfb, 0x3d, 0xfb, 0xa1, 0xfb, + 0x34, 0xf7, 0xa1, 0x5, 0xcd, 0xbe, 0xfb, 0x58, 0x58, 0xd0, 0x6, 0xf7, + 0x53, 0xfb, 0xd3, 0x25, 0xfb, 0x36, 0x5, 0xe, 0xfb, 0x31, 0xc0, 0xf8, + 0x87, 0xc0, 0x6a, 0xa, 0x13, 0xd8, 0xf7, 0x3e, 0xf8, 0x89, 0x15, 0xf7, + 0xbc, 0xee, 0x69, 0xd3, 0xfb, 0xa6, 0xfb, 0x21, 0x5, 0x22, 0xfd, 0xf, + 0x15, 0x56, 0xf7, 0x9a, 0xc0, 0x32, 0x7, 0xf7, 0xc1, 0xf8, 0x87, 0x5, + 0xcc, 0xc0, 0xfb, 0x4b, 0x56, 0xc4, 0x6, 0xfb, 0x3c, 0xfb, 0xab, 0xfb, + 0x35, 0xf7, 0xab, 0x5, 0x13, 0xe8, 0xcd, 0xc0, 0xfb, 0x58, 0x56, 0xd0, + 0x6, 0xf7, 0x54, 0xfb, 0xe0, 0x24, 0xfb, 0x3b, 0x5, 0xe, 0xfb, 0x31, + 0xbd, 0xf8, 0x66, 0xbc, 0xd6, 0xf7, 0x4, 0x12, 0x92, 0xf7, 0x58, 0x6b, + 0xe2, 0xce, 0xe0, 0x8a, 0xf7, 0x4b, 0x13, 0xec, 0xf7, 0xd9, 0xf8, 0x77, + 0x15, 0xe0, 0xf7, 0x4, 0x36, 0x80, 0xa, 0x15, 0xe2, 0xf7, 0x4, 0x34, + 0x6, 0x13, 0xd2, 0xfb, 0xa, 0xfd, 0x52, 0x15, 0x59, 0xf7, 0x9a, 0xbd, + 0x32, 0x7, 0xf7, 0xc1, 0xf8, 0x66, 0x5, 0xcc, 0xbc, 0xfb, 0x4b, 0x5a, + 0xc4, 0x6, 0xfb, 0x3c, 0xfb, 0x99, 0xfb, 0x35, 0xf7, 0x99, 0x5, 0xcd, + 0xbc, 0xfb, 0x58, 0x5a, 0xd0, 0x6, 0xf7, 0x54, 0xfb, 0xc9, 0x24, 0xfb, + 0x31, 0x5, 0xe, 0x8b, 0xc1, 0xd8, 0xc1, 0xd1, 0xc2, 0xf7, 0x5a, 0xc1, + 0x1, 0xa5, 0xf7, 0x60, 0xb9, 0xc1, 0xb4, 0xf7, 0x5f, 0x3, 0xf7, 0x3c, + 0x16, 0xf7, 0xa1, 0xc1, 0x20, 0xd8, 0xf7, 0x15, 0xc1, 0xfb, 0x15, 0xd1, + 0xf7, 0x15, 0xc2, 0xfb, 0xd, 0x6, 0xf7, 0x47, 0xf7, 0x5a, 0x5, 0xc4, + 0xc1, 0xfb, 0x5f, 0x55, 0xce, 0x6, 0xfb, 0x1d, 0xfb, 0x2b, 0xfb, 0x1d, + 0xf7, 0x2b, 0x5, 0xcd, 0xc1, 0xfb, 0x60, 0x55, 0xca, 0x6, 0xf7, 0x43, + 0xfb, 0x5a, 0x5, 0xfb, 0x9, 0x54, 0xf7, 0x15, 0x45, 0xfb, 0x15, 0x55, + 0xf7, 0x15, 0x3e, 0xfb, 0x0, 0x6, 0xe, 0x74, 0xa, 0xf7, 0x4, 0xc1, + 0xf7, 0xad, 0xc1, 0x3, 0xed, 0x16, 0xf8, 0x27, 0xf7, 0x2e, 0x55, 0x27, + 0xfb, 0xa3, 0x6, 0xf7, 0xd9, 0xf7, 0xd6, 0x5, 0xbd, 0xfc, 0x19, 0xfb, + 0x2b, 0xc1, 0xec, 0xf7, 0x94, 0x7, 0xfb, 0xd8, 0xfb, 0xd5, 0x5, 0xe, + 0x8b, 0x67, 0xa, 0xbf, 0xc4, 0x1, 0xf7, 0x3, 0xc1, 0xf7, 0xad, 0xc2, + 0x3, 0xf7, 0x9e, 0xf8, 0x7f, 0x15, 0xda, 0x6, 0xf7, 0x27, 0xf7, 0x32, + 0x62, 0x9f, 0xfb, 0x26, 0xfb, 0xd, 0xfb, 0x28, 0xf7, 0xc, 0x62, 0x77, + 0x5, 0x79, 0xfd, 0x1c, 0x15, 0xf8, 0x27, 0xf7, 0x31, 0x54, 0x25, 0xfb, + 0xa3, 0x6, 0xf7, 0xda, 0xf7, 0xdd, 0x5, 0xc2, 0xfc, 0x1a, 0xfb, 0x32, + 0xc1, 0x7, 0x8c, 0xf2, 0x5, 0xf7, 0x98, 0x6, 0xfb, 0xdc, 0xfb, 0xe0, + 0x5, 0xe, 0x7d, 0xc1, 0xf8, 0xa3, 0xc2, 0x1, 0xf5, 0xc4, 0xf7, 0xa5, + 0xc5, 0x3, 0xf5, 0xf7, 0xc4, 0x15, 0xfb, 0x29, 0xa2, 0xfb, 0x3d, 0xf7, + 0x40, 0xf7, 0x45, 0x9b, 0xf7, 0x40, 0xf7, 0x26, 0xf7, 0x1b, 0x78, 0xf7, + 0x4b, 0xfb, 0x41, 0xfb, 0x41, 0x74, 0xfb, 0x49, 0xfb, 0x1d, 0x1e, 0xc4, + 0x16, 0xf7, 0xf, 0x9e, 0xf7, 0x20, 0xf7, 0xc, 0xf7, 0x3, 0xa2, 0xfb, + 0x1f, 0xfb, 0x10, 0xfb, 0x17, 0x78, 0xfb, 0x19, 0xfb, 0xa, 0xfb, 0x6, + 0x75, 0xf7, 0x17, 0xf7, 0x19, 0x1e, 0xe, 0x79, 0x9d, 0xf8, 0x3e, 0x9a, + 0xf7, 0xd, 0x9d, 0xa9, 0x97, 0x6, 0xfb, 0x31, 0x8b, 0x7, 0x1e, 0xa0, + 0x39, 0x63, 0xff, 0xc, 0x9, 0xc2, 0xa, 0xc2, 0xb, 0xf8, 0xec, 0x14, + 0xaa, 0x13, 0x0, 0x63, 0x2, 0x0, 0x1, 0x0, 0x3d, 0x0, 0x70, 0x0, + 0xae, 0x0, 0xb8, 0x0, 0xbd, 0x0, 0xc2, 0x0, 0xc8, 0x0, 0xe5, 0x0, + 0xff, 0x1, 0x18, 0x1, 0x2e, 0x1, 0x38, 0x1, 0x42, 0x1, 0x55, 0x1, + 0x71, 0x1, 0x76, 0x1, 0x80, 0x1, 0x9a, 0x1, 0xa9, 0x1, 0xba, 0x1, + 0xc6, 0x1, 0xd8, 0x2, 0x7, 0x2, 0x1c, 0x2, 0x2c, 0x2, 0x33, 0x2, + 0x5a, 0x2, 0x69, 0x2, 0x73, 0x2, 0x7d, 0x2, 0x88, 0x2, 0x97, 0x2, + 0xa3, 0x2, 0xae, 0x2, 0xb7, 0x2, 0xcf, 0x2, 0xe7, 0x2, 0xfd, 0x3, + 0x4, 0x3, 0xe, 0x3, 0x24, 0x3, 0x3a, 0x3, 0x4e, 0x3, 0x63, 0x3, + 0x76, 0x3, 0x7f, 0x3, 0x88, 0x3, 0x91, 0x3, 0xa5, 0x3, 0xb7, 0x3, + 0xc9, 0x3, 0xdb, 0x3, 0xe3, 0x3, 0xeb, 0x3, 0xf3, 0x3, 0xfb, 0x4, + 0x3, 0x4, 0xe, 0x4, 0x13, 0x4, 0x1e, 0x4, 0x24, 0x4, 0x31, 0x4, + 0x38, 0x4, 0x41, 0x4, 0x4a, 0x4, 0x53, 0x4, 0x5a, 0x4, 0x60, 0x4, + 0x66, 0x4, 0x74, 0x4, 0x81, 0x4, 0x86, 0x4, 0x8a, 0x4, 0x96, 0x4, + 0xa2, 0x4, 0xa8, 0x4, 0xae, 0x4, 0xb9, 0x4, 0xc4, 0x4, 0xce, 0x4, + 0xd9, 0x4, 0xe4, 0x4, 0xeb, 0x4, 0xf2, 0x4, 0xf9, 0x5, 0x0, 0x5, + 0x7, 0x5, 0x11, 0x5, 0x1b, 0x5, 0x24, 0x5, 0x2d, 0x5, 0x36, 0x5, + 0x3f, 0x5, 0x48, 0x5, 0x51, 0x5, 0x58, 0x5, 0x5e, 0x5, 0x64, 0x5, + 0x69, 0x15, 0xfb, 0x37, 0xf3, 0xfb, 0x1a, 0xf7, 0x30, 0xf7, 0x34, 0xe9, + 0xf7, 0x1a, 0xf7, 0x37, 0xe9, 0x5a, 0xf7, 0x5f, 0xfb, 0x60, 0xfb, 0x43, + 0x35, 0xfb, 0x31, 0xfb, 0x20, 0x1e, 0xc1, 0x89, 0x15, 0xe4, 0xc1, 0xf7, + 0x31, 0xf7, 0x2b, 0xf7, 0x2c, 0xba, 0xfb, 0x3d, 0x3e, 0xfb, 0x13, 0x47, + 0xfb, 0x7, 0xfb, 0x15, 0xfb, 0x15, 0x3d, 0xf7, 0x7, 0xf7, 0x13, 0x1e, + 0xb, 0x15, 0xfb, 0x1b, 0xe2, 0x2b, 0xf7, 0x2a, 0xf7, 0x25, 0xe9, 0xed, + 0xf7, 0x19, 0xf7, 0x20, 0x2f, 0xe7, 0xfb, 0x25, 0xfb, 0x1b, 0x23, 0x33, + 0xfb, 0x24, 0x1e, 0xc5, 0x8a, 0x15, 0xe9, 0xc9, 0xdd, 0xf7, 0xb, 0xf7, + 0xe, 0xc2, 0x38, 0x2e, 0x39, 0x4b, 0x2f, 0xfb, 0x8, 0xfb, 0xa, 0x4f, + 0xe7, 0xdd, 0x1e, 0xe, 0x15, 0xf8, 0x36, 0x6, 0xf7, 0x14, 0x45, 0xf7, + 0xe, 0xfb, 0x3b, 0xfb, 0x1c, 0x24, 0x24, 0xfb, 0x1f, 0xfb, 0xc, 0xd1, + 0x25, 0xf7, 0x47, 0xdd, 0xe0, 0xa6, 0xb0, 0xcd, 0x1e, 0x7a, 0xc0, 0x5, + 0x5f, 0x3b, 0x3c, 0x79, 0x5b, 0x1b, 0x2a, 0x24, 0xb8, 0xf7, 0x6, 0x1f, + 0x8d, 0xc3, 0x15, 0xc7, 0x93, 0xc2, 0xd9, 0xf7, 0x8, 0x1b, 0xf7, 0x19, + 0xa9, 0x2e, 0x5e, 0x96, 0x1f, 0xe, 0x26, 0xa, 0x13, 0x7c, 0x29, 0xa, + 0x13, 0xbc, 0x2a, 0xa, 0x25, 0xa, 0x3c, 0xa, 0xb, 0x2d, 0xa, 0x27, + 0xa, 0xb, 0x28, 0xa, 0x3d, 0xa, 0x1f, 0xb, 0xf7, 0x60, 0xc1, 0x57, + 0x6, 0xfb, 0x60, 0xf8, 0x93, 0x5, 0xfb, 0x82, 0x55, 0xf7, 0x20, 0x6, + 0xfb, 0x48, 0xfc, 0x5d, 0x5, 0x4f, 0x6, 0xf7, 0x4e, 0xf7, 0x45, 0x15, + 0xb, 0x15, 0x9a, 0xab, 0xe0, 0xa7, 0xd1, 0x1b, 0xd7, 0xc3, 0x8b, 0x21, + 0x1f, 0x6b, 0x7, 0x92, 0x5e, 0x59, 0x92, 0x59, 0x1b, 0xfb, 0x3c, 0x55, + 0x33, 0x50, 0xb, 0x36, 0xf7, 0x1e, 0xc3, 0x38, 0xf7, 0x88, 0x7, 0xeb, + 0x59, 0xc3, 0xfb, 0x14, 0x45, 0x3a, 0x77, 0x73, 0x4f, 0x1e, 0xf7, 0xe1, + 0xfb, 0x94, 0x15, 0xb, 0x4e, 0x58, 0x46, 0x5c, 0x38, 0x1b, 0x4c, 0x60, + 0xb4, 0xb2, 0xe1, 0xf7, 0x6, 0x91, 0xcb, 0xb8, 0xb6, 0x85, 0x83, 0xb6, + 0x1f, 0xe, 0x38, 0xa, 0x13, 0x78, 0x3b, 0xa, 0x13, 0xb8, 0x33, 0xa, + 0x26, 0xa, 0x13, 0x7f, 0x29, 0xa, 0x13, 0xbf, 0x2a, 0xa, 0xf7, 0x63, + 0xc1, 0x32, 0x6, 0xb9, 0xf7, 0xf, 0x5, 0xf7, 0xa6, 0x6, 0xba, 0xfb, + 0xf, 0x5, 0x2c, 0x55, 0xb, 0xf7, 0x38, 0x39, 0xc4, 0xf7, 0x6f, 0x52, + 0x38, 0xfb, 0x38, 0xf7, 0x5e, 0xf7, 0xc2, 0xfb, 0x1b, 0xc4, 0xf7, 0x51, + 0xfc, 0x85, 0x55, 0xde, 0xfc, 0x5d, 0x38, 0x6, 0xb, 0x40, 0xa, 0x2e, + 0xa, 0xb, 0xf7, 0x19, 0x31, 0xa, 0xb7, 0xf7, 0x14, 0x4f, 0xa, 0xb, + 0xf7, 0x11, 0xd9, 0xd6, 0xf7, 0x27, 0x1e, 0xf7, 0xc4, 0xd8, 0xc2, 0xfb, + 0x7c, 0x54, 0xf2, 0xfb, 0xc3, 0x7, 0xfb, 0xe, 0x42, 0x5d, 0x3c, 0x31, + 0x4b, 0xb, 0xf8, 0x2c, 0xc1, 0xfb, 0x43, 0xf8, 0x5c, 0x42, 0xa, 0xfc, + 0x5c, 0xfb, 0x43, 0x6, 0xb, 0x58, 0x63, 0x57, 0x54, 0x4b, 0x1b, 0x42, + 0x63, 0xb6, 0xd5, 0x1f, 0xf7, 0xac, 0xfb, 0x1c, 0x7, 0xe, 0x15, 0xda, + 0xfb, 0xc1, 0x6, 0xfb, 0x1a, 0xd5, 0x30, 0x30, 0xa, 0xb, 0xf8, 0x2e, + 0xc2, 0xfb, 0x43, 0xf8, 0x12, 0xfb, 0x5c, 0x54, 0xf7, 0x24, 0xfb, 0xdb, + 0xfb, 0x47, 0x6, 0xb, 0xf7, 0xc8, 0xc1, 0xfb, 0x11, 0xf7, 0x43, 0x6, + 0xf7, 0x45, 0xf7, 0xae, 0x5, 0xd0, 0xc1, 0xfb, 0x5c, 0x55, 0xd1, 0x6, + 0xfb, 0x25, 0xfb, 0x78, 0xfb, 0x27, 0xf7, 0x78, 0x5, 0xd2, 0xc1, 0xfb, + 0x5d, 0x55, 0xcf, 0x6, 0xf7, 0x49, 0xfb, 0xae, 0x5, 0xfb, 0x43, 0xfb, + 0x12, 0x7, 0xb, 0x15, 0xdd, 0x6, 0xf7, 0x2a, 0xf7, 0x34, 0x60, 0x9d, + 0xfb, 0x27, 0xfb, 0xd, 0xfb, 0x2c, 0xf7, 0xd, 0x62, 0x78, 0x5, 0xe, + 0x15, 0xde, 0xfb, 0x90, 0x6, 0x2e, 0xcf, 0x58, 0xe2, 0xb3, 0xbe, 0x9b, + 0xd5, 0xd7, 0x1e, 0xb, 0x27, 0xa, 0x13, 0x40, 0x3c, 0xa, 0xb, 0x15, + 0x48, 0xbd, 0x51, 0xd9, 0xd4, 0xc1, 0xc4, 0xd0, 0xcc, 0x62, 0xc6, 0x33, + 0x3e, 0x5a, 0x4f, 0x4a, 0x1e, 0xc3, 0x8a, 0x15, 0xb5, 0xa6, 0xa9, 0xb9, + 0xb8, 0xa6, 0x6a, 0x65, 0x68, 0x71, 0x68, 0x5d, 0x61, 0x6c, 0xa5, 0xb6, + 0x1e, 0xb, 0x3d, 0xf7, 0x1c, 0xc2, 0x38, 0xf8, 0x14, 0xfb, 0x1c, 0x54, + 0xde, 0xfb, 0x80, 0x7, 0xb, 0xf7, 0x3, 0xf7, 0xbb, 0xf7, 0xb, 0xfb, + 0xbb, 0x5, 0xb, 0x49, 0xc5, 0x44, 0xf4, 0xd9, 0xd2, 0xb7, 0xc0, 0xc3, + 0xb, 0x41, 0xa, 0x12, 0xba, 0xc5, 0xf7, 0xc9, 0xc3, 0x13, 0xbc, 0xb, + 0x7c, 0xc1, 0x61, 0x67, 0xa, 0x12, 0xf7, 0x4, 0xc0, 0xf7, 0xa1, 0xc0, + 0x13, 0xb8, 0xb, 0xf8, 0x85, 0xf7, 0x51, 0x53, 0xfb, 0x1b, 0xfb, 0xc3, + 0xf7, 0x5d, 0xb, 0x7c, 0xc3, 0x5f, 0xc3, 0xf7, 0x34, 0xc3, 0xf7, 0x10, + 0xc3, 0xb, 0xf7, 0x3e, 0xc1, 0xfc, 0x24, 0x55, 0xf7, 0x40, 0xb, 0xd1, + 0xee, 0xcf, 0xc8, 0x67, 0x5b, 0xb7, 0x1f, 0x40, 0xc2, 0xf7, 0x6a, 0x54, + 0x49, 0x7, 0xae, 0x65, 0x4f, 0xaa, 0x40, 0x1b, 0xfb, 0x37, 0xb, 0x3c, + 0x1b, 0xfb, 0x2a, 0x3d, 0x22, 0x32, 0x30, 0xd3, 0x28, 0xf7, 0x2f, 0xcc, + 0xd5, 0xa1, 0xba, 0xb3, 0x1f, 0xfb, 0x9, 0x7, 0x33, 0x51, 0xb, 0x15, + 0xc3, 0x6, 0xef, 0xf7, 0x7e, 0x5, 0x31, 0x6, 0xe7, 0xfb, 0x7e, 0x15, + 0xc6, 0x6, 0xec, 0xf7, 0x7e, 0x5, 0x32, 0x6, 0xe, 0x8b, 0xc2, 0xf8, + 0x58, 0xc2, 0x1, 0xb, 0x4e, 0xa, 0xf7, 0x78, 0x77, 0x1, 0x61, 0xa, + 0x3, 0xb, 0x15, 0xf7, 0x9f, 0xc0, 0x21, 0xf7, 0xd5, 0xf5, 0xc0, 0x21, + 0xcd, 0x6, 0xdb, 0xce, 0x9e, 0xde, 0x74, 0x1e, 0x94, 0xbe, 0x5, 0xb, + 0x15, 0xf7, 0x27, 0xe9, 0xf7, 0x24, 0x2d, 0xb4, 0x9c, 0xfb, 0x26, 0xf7, + 0x19, 0x5, 0x3b, 0x6, 0xfb, 0x27, 0xfb, 0x19, 0x5, 0xb, 0x92, 0x72, + 0x71, 0x8f, 0x74, 0x1b, 0x3c, 0x4e, 0x62, 0x30, 0x1f, 0x43, 0x21, 0x56, + 0xf5, 0xfb, 0xd5, 0x21, 0x7, 0xe, 0x53, 0x8c, 0x15, 0x46, 0xc4, 0x52, + 0xd0, 0xd0, 0xc5, 0xc4, 0xd0, 0xd0, 0x51, 0xc5, 0x46, 0x46, 0x52, 0x51, + 0x46, 0x1e, 0xb, 0x15, 0x6d, 0xa6, 0x6e, 0xb5, 0xab, 0xab, 0xa3, 0xad, + 0xaa, 0x72, 0xa9, 0x63, 0x65, 0x6d, 0x70, 0x6a, 0x1e, 0xe, 0x8b, 0xc1, + 0xf7, 0xf, 0xc1, 0xf7, 0xac, 0xc1, 0xb, 0x8b, 0xc1, 0xf7, 0x5d, 0xc1, + 0xf7, 0x5e, 0xc1, 0xb, 0x1e, 0xf7, 0xbf, 0xf5, 0xc2, 0xfb, 0x81, 0x7, + 0xb, 0x5, 0x80, 0xbf, 0xe8, 0x7a, 0xdd, 0x1b, 0xf7, 0xe, 0xd8, 0xc0, + 0xf0, 0x1f, 0xf8, 0x11, 0xc9, 0xbe, 0xfb, 0x7, 0xb, 0x6e, 0xa2, 0x74, + 0xa8, 0xa8, 0xa2, 0xa2, 0xa8, 0xa8, 0x74, 0xa2, 0x6e, 0x6e, 0x74, 0x74, + 0x6e, 0x1e, 0xb, 0x64, 0xab, 0x75, 0xb2, 0xb2, 0xab, 0xa1, 0xb2, 0xb2, + 0x6b, 0xa1, 0x64, 0x64, 0x6b, 0x75, 0x64, 0x1e, 0xb, 0xfb, 0x31, 0xf7, + 0x60, 0xd4, 0xd4, 0xa0, 0xa5, 0xca, 0x1f, 0xf7, 0x41, 0xbd, 0xc2, 0xfb, + 0x9f, 0x7, 0xb, 0x8e, 0xf7, 0x63, 0xf7, 0x4b, 0xf7, 0x60, 0xb, 0x1, + 0xeb, 0xbf, 0xf7, 0xc6, 0xbf, 0x3, 0xb, 0x1, 0xc6, 0xc5, 0xf7, 0xf7, + 0xca, 0x3, 0xb, 0x1, 0xb6, 0xc1, 0xf8, 0x28, 0xc3, 0x3, 0xb, 0x1, + 0xc9, 0xc5, 0xf7, 0xfa, 0xc7, 0x3, 0xb, 0x15, 0xe0, 0xf7, 0x7, 0x36, + 0x6, 0xfb, 0x2b, 0x60, 0xa, 0xb, 0x5e, 0xa, 0x56, 0xa, 0xb, 0x55, + 0xa, 0x9c, 0xf8, 0x90, 0x15, 0xda, 0xfb, 0xc1, 0x6, 0xb, 0xf7, 0x7e, + 0x5, 0x2f, 0x6, 0xe, 0x6, 0xf7, 0x30, 0xf7, 0xf, 0x6f, 0xb0, 0xfb, + 0x79, 0xfb, 0x4d, 0x5, 0xe, 0x7c, 0x82, 0xa, 0xf7, 0x1e, 0xc3, 0xb, + 0xf7, 0x7e, 0x1, 0xf7, 0x6e, 0xf7, 0x37, 0x3, 0xb, 0xfb, 0x7, 0x15, + 0xe2, 0xf7, 0x7, 0x34, 0x6, 0xb, 0xf7, 0x1a, 0xc2, 0xf7, 0x38, 0xc4, + 0xdd, 0xc3, 0xb, 0x15, 0xde, 0xf7, 0x9, 0x38, 0x6, 0xb, 0x7c, 0xc3, + 0xf7, 0xf2, 0xc4, 0xb, 0x79, 0xc0, 0xf8, 0x7c, 0xc0, 0xb, 0x15, 0xb2, + 0xab, 0xab, 0xb2, 0xb2, 0xab, 0x6b, 0x64, 0x64, 0x6b, 0x6b, 0x64, 0xb, + 0xfb, 0x31, 0xbe, 0xf7, 0x12, 0xbc, 0xf7, 0xc9, 0xbe, 0x5c, 0xbf, 0x12, + 0xb, 0xc2, 0xf7, 0xdd, 0xc2, 0xb, 0x1, 0xf7, 0xa6, 0xb, 0x32, 0x58, + 0x3a, 0x3e, 0x50, 0x29, 0x27, 0x40, 0xc9, 0xd7, 0x1e, 0xb, 0x12, 0x92, + 0xf7, 0x58, 0xfb, 0x2a, 0xf7, 0x9a, 0xe9, 0xf7, 0x4b, 0xb, 0x79, 0xc2, + 0xf8, 0x6b, 0xc2, 0xb, 0x8b, 0xc1, 0xf8, 0x5c, 0xc1, 0xb, 0xf7, 0x7e, + 0x1, 0xf7, 0x23, 0xf7, 0xce, 0x3, 0xf7, 0x23, 0xb, 0xf8, 0x85, 0xf7, + 0x43, 0x1, 0xf7, 0x4e, 0xf7, 0x77, 0x3, 0xb, 0x8b, 0xc2, 0xf7, 0xdb, + 0xc2, 0x68, 0xa, 0xc3, 0x3, 0xb, 0xf7, 0x7, 0x15, 0xa7, 0xb8, 0xfb, + 0x2e, 0xf7, 0x4, 0x5, 0xb, 0x15, 0xa7, 0x73, 0xf7, 0x3e, 0xf7, 0x10, + 0x5f, 0xbe, 0x5, 0xb, 0x15, 0xdc, 0xf7, 0x9, 0x3a, 0x6, 0xb, 0xc2, + 0x3, 0xea, 0x16, 0xf8, 0x2e, 0xb, 0x8b, 0xc1, 0xf7, 0xd2, 0xc1, 0x1, + 0xb, 0x8b, 0xc1, 0xf8, 0x5a, 0xc1, 0x1, 0xb, 0x15, 0xe5, 0xf7, 0x8, + 0x31, 0x6, 0xb, 0x15, 0xb7, 0x6, 0x9d, 0xf7, 0x8f, 0x5, 0x3a, 0x6, + 0xb, 0xf7, 0x4d, 0x6f, 0x66, 0xf7, 0x30, 0xfb, 0xf, 0x5, 0xb, 0x15, + 0xf7, 0xac, 0x26, 0x96, 0xa9, 0xfb, 0x96, 0xb, 0x1, 0xf7, 0x79, 0xf7, + 0x22, 0x3, 0xf7, 0x79, 0xb, 0xd1, 0xf8, 0xc, 0x1, 0xe7, 0xf8, 0x34, + 0x3, 0xb, 0xf7, 0x5e, 0x15, 0xf7, 0x36, 0xfb, 0x17, 0x6, 0xb, 0xf7, + 0xa4, 0xbe, 0x1, 0x73, 0xf9, 0x1c, 0x3, 0xb, 0xf8, 0xa9, 0x15, 0xd4, + 0xf7, 0x10, 0x42, 0x6, 0xb, 0xf7, 0xf, 0x1e, 0xf0, 0x54, 0x7, 0xe, + 0x6, 0xfb, 0x2e, 0xfb, 0x4, 0xb, 0x1, 0xf7, 0xa5, 0xc4, 0x3, 0xb, + 0xc2, 0xf7, 0x33, 0xc3, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp b/core/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp new file mode 100644 index 0000000000..c1494f51aa --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp @@ -0,0 +1,1514 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitFixedBoldFontData[18055] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x13, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x2d, 0x42, + 0x6f, 0x6c, 0x64, 0x0, 0x1, 0x1, 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, + 0x2a, 0x1, 0xf8, 0x2b, 0x2, 0xf8, 0x2c, 0x3, 0xf8, 0x14, 0x4, 0xfb, + 0x5, 0xfb, 0x8d, 0xf9, 0x5d, 0xf9, 0xbf, 0x5, 0xf7, 0xa0, 0xf, 0xf9, + 0x6, 0x11, 0xae, 0x1c, 0x40, 0xc8, 0x12, 0x0, 0x12, 0x1, 0x1, 0x5, + 0x7, 0x9, 0x11, 0x19, 0x1f, 0x25, 0x29, 0x2d, 0x39, 0x42, 0x49, 0x53, + 0x5c, 0x65, 0x8f, 0xa3, 0xb2, 0x49, 0x64, 0x6f, 0x74, 0x49, 0x4a, 0x69, + 0x6a, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x73, 0x63, 0x65, + 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x67, + 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x6c, 0x69, 0x72, 0x61, 0x45, 0x75, 0x72, + 0x6f, 0x70, 0x72, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, 0x74, 0x61, 0x72, + 0x72, 0x6f, 0x77, 0x75, 0x70, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x64, 0x6f, 0x77, 0x6e, + 0x61, 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x46, 0x69, 0x78, + 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x43, + 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, 0x4f, + 0x54, 0x46, 0x0, 0x0, 0x1, 0x0, 0x1, 0x6, 0x0, 0x68, 0x0, 0x0, + 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, 0x67, 0x0, 0x0, + 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, + 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, + 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, + 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, + 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, + 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, + 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, + 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, + 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, + 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, + 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, + 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, + 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, + 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, + 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, + 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, + 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, + 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, + 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x1, 0x87, 0x0, 0x0, 0x91, 0x0, 0x1, + 0x88, 0x1, 0x0, 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, + 0x94, 0x0, 0x1, 0x8a, 0x1, 0x0, 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, + 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, 0x65, 0x0, 0x1, 0x8c, 0x1, 0x0, + 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, + 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, + 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, + 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, + 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, + 0x8e, 0x2, 0x0, 0x99, 0x0, 0x1, 0x91, 0x4, 0x0, 0xa6, 0x0, 0x0, + 0x6d, 0x1, 0x0, 0xf4, 0x2, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, + 0x34, 0x0, 0x60, 0x0, 0xc1, 0x1, 0x42, 0x1, 0xcc, 0x2, 0x52, 0x2, + 0x68, 0x2, 0x9d, 0x2, 0xd2, 0x3, 0x2, 0x3, 0x26, 0x3, 0x39, 0x3, + 0x4e, 0x3, 0x67, 0x3, 0x7e, 0x3, 0xc4, 0x3, 0xe8, 0x4, 0x2f, 0x4, + 0x8e, 0x4, 0xc1, 0x5, 0xf, 0x5, 0x77, 0x5, 0x96, 0x6, 0xc, 0x6, + 0x73, 0x6, 0x86, 0x6, 0xa9, 0x6, 0xc6, 0x6, 0xe4, 0x7, 0x1, 0x7, + 0x5f, 0x7, 0xff, 0x8, 0x3d, 0x8, 0xa0, 0x8, 0xee, 0x9, 0x22, 0x9, + 0x69, 0x9, 0xb0, 0x9, 0xd8, 0xa, 0x12, 0xa, 0x26, 0xa, 0x57, 0xa, + 0x94, 0xa, 0xb6, 0xa, 0xf8, 0xb, 0x2d, 0xb, 0x76, 0xb, 0xb7, 0xc, + 0x32, 0xc, 0x86, 0xc, 0xfa, 0xd, 0x26, 0xd, 0x64, 0xd, 0x94, 0xd, + 0xcc, 0xe, 0xf, 0xe, 0x45, 0xe, 0x6f, 0xe, 0x8b, 0xe, 0x9f, 0xe, + 0xbb, 0xe, 0xea, 0xe, 0xf6, 0xf, 0xc, 0xf, 0x73, 0xf, 0xd4, 0x10, + 0x1d, 0x10, 0x7c, 0x10, 0xc8, 0x11, 0x6, 0x11, 0x43, 0x11, 0x90, 0x11, + 0xc3, 0x12, 0x7, 0x12, 0x43, 0x12, 0x56, 0x12, 0xb6, 0x12, 0xfd, 0x13, + 0x39, 0x13, 0x97, 0x13, 0xdd, 0x14, 0x1d, 0x14, 0x95, 0x14, 0xd4, 0x15, + 0x29, 0x15, 0x51, 0x15, 0x91, 0x15, 0xd0, 0x16, 0x7, 0x16, 0x3f, 0x16, + 0xa5, 0x16, 0xb5, 0x17, 0x1b, 0x17, 0x62, 0x17, 0x94, 0x17, 0xe6, 0x18, + 0x64, 0x18, 0xd4, 0x19, 0x29, 0x19, 0x41, 0x19, 0xe1, 0x1a, 0x7, 0x1a, + 0x90, 0x1a, 0xf6, 0x1b, 0x29, 0x1b, 0x44, 0x1b, 0xd1, 0x1b, 0xe4, 0x1c, + 0x1e, 0x1c, 0x4b, 0x1c, 0x95, 0x1c, 0xfe, 0x1d, 0x14, 0x1d, 0x76, 0x1d, + 0xa3, 0x1d, 0xbf, 0x1d, 0xf9, 0x1e, 0x25, 0x1e, 0x5f, 0x1e, 0x93, 0x1e, + 0xf6, 0x1f, 0x64, 0x1f, 0xff, 0x20, 0x60, 0x20, 0x81, 0x20, 0xa0, 0x20, + 0xca, 0x21, 0x23, 0x21, 0x4c, 0x21, 0x8d, 0x21, 0xf8, 0x22, 0x7b, 0x22, + 0x8e, 0x22, 0xc1, 0x22, 0xf5, 0x23, 0x31, 0x23, 0x49, 0x23, 0x68, 0x23, + 0x93, 0x23, 0xc1, 0x24, 0xc, 0x24, 0x7f, 0x24, 0xa0, 0x24, 0xba, 0x24, + 0xdf, 0x25, 0x33, 0x25, 0x5a, 0x25, 0x89, 0x26, 0x6, 0x26, 0x1e, 0x26, + 0x35, 0x26, 0x5d, 0x26, 0x92, 0x26, 0xdd, 0x27, 0x26, 0x27, 0xb4, 0x27, + 0xd5, 0x27, 0xf6, 0x28, 0x26, 0x28, 0x8b, 0x28, 0xcc, 0x29, 0x8, 0x29, + 0xb0, 0x2a, 0x2c, 0x2a, 0x46, 0x2a, 0x5f, 0x2a, 0x83, 0x2a, 0xa2, 0x2a, + 0xb8, 0x2a, 0xcd, 0x2a, 0xf5, 0x2b, 0x3a, 0x2b, 0xab, 0x2c, 0x35, 0x2c, + 0x54, 0x2c, 0x70, 0x2c, 0x95, 0x2c, 0xe7, 0x2d, 0xa, 0x2d, 0x29, 0x2d, + 0xbd, 0x2d, 0xd4, 0x2d, 0xea, 0x2e, 0xe, 0x2e, 0x5a, 0x2e, 0x86, 0x2e, + 0xe6, 0x2f, 0x21, 0x2f, 0x4b, 0x2f, 0x5c, 0x2f, 0xa1, 0x30, 0x14, 0x30, + 0x4e, 0x30, 0x7b, 0x30, 0xe8, 0x31, 0x65, 0x32, 0x14, 0x32, 0xc5, 0x33, + 0x60, 0x33, 0xf4, 0x34, 0x57, 0x34, 0xa2, 0x34, 0xf2, 0x35, 0x4f, 0x35, + 0x9b, 0x35, 0xeb, 0x36, 0xe, 0x36, 0x1b, 0x36, 0x4a, 0x36, 0x61, 0x36, + 0x96, 0x36, 0xca, 0x37, 0x9, 0x37, 0x31, 0x37, 0x44, 0x37, 0x57, 0x37, + 0x6e, 0x37, 0x80, 0x37, 0x94, 0x37, 0xa2, 0x37, 0xb7, 0x37, 0xce, 0x37, + 0xee, 0x38, 0x22, 0x38, 0x43, 0x38, 0x90, 0x39, 0x34, 0x39, 0x4d, 0x39, + 0x6b, 0x39, 0x82, 0x3a, 0x8, 0x3a, 0x89, 0x3a, 0xf0, 0x3b, 0x34, 0x3b, + 0x41, 0x3b, 0x63, 0x3b, 0x71, 0x3b, 0x94, 0x3b, 0xa8, 0x3b, 0xb4, 0x3c, + 0x11, 0x3c, 0x6a, 0xe, 0xe, 0x7c, 0xf7, 0x31, 0xf8, 0x44, 0x77, 0x1, + 0xf7, 0x7e, 0xf7, 0x17, 0x3, 0xf7, 0x89, 0xf7, 0x4b, 0x15, 0xf7, 0x2, + 0x6, 0x9f, 0xf8, 0x19, 0x5, 0xfb, 0x2b, 0x6, 0x75, 0xfc, 0x90, 0x15, + 0x5f, 0xb7, 0x68, 0xc1, 0xc1, 0xb7, 0xae, 0xb7, 0xb7, 0x5f, 0xad, 0x55, + 0x55, 0x5f, 0x69, 0x5f, 0x1e, 0xe, 0xf7, 0xb8, 0x76, 0xf7, 0xb7, 0x77, + 0x1, 0xf7, 0x28, 0xf7, 0x6, 0xd6, 0xf7, 0x5, 0x3, 0xf7, 0xe5, 0xf7, + 0xa9, 0x15, 0xf7, 0x5, 0x6, 0x9a, 0x59, 0xa, 0xfb, 0x22, 0x6, 0xfb, + 0x43, 0xfb, 0xb1, 0x15, 0xf7, 0x6, 0x6, 0x9b, 0x59, 0xa, 0xfb, 0x23, + 0x6, 0xe, 0x5e, 0x76, 0xf7, 0x75, 0xe6, 0xf3, 0xe6, 0xf7, 0x54, 0x77, + 0x1, 0xf7, 0x24, 0xe3, 0xf3, 0xe7, 0x3, 0xf7, 0x1d, 0x5e, 0x15, 0xe4, + 0x6, 0x98, 0xf7, 0x60, 0x5, 0xf4, 0x6, 0x7c, 0xfb, 0x60, 0x5, 0xe8, + 0x6, 0x98, 0xf7, 0x60, 0x5, 0xf7, 0x1, 0xe6, 0x24, 0x6, 0x91, 0xf3, + 0x5, 0xec, 0xe6, 0x30, 0x6, 0x92, 0xf7, 0x62, 0x5, 0x31, 0x6, 0x83, + 0xfb, 0x62, 0x5, 0x24, 0x6, 0x92, 0xf7, 0x62, 0x5, 0x32, 0x6, 0x82, + 0xfb, 0x62, 0x5, 0xfb, 0x4, 0x30, 0xf6, 0x6, 0x84, 0x23, 0x5, 0x27, + 0x30, 0xea, 0x6, 0xe9, 0xe6, 0x15, 0x93, 0xf3, 0x5, 0xf1, 0x6, 0x85, + 0x23, 0x5, 0xe, 0x22, 0x76, 0xf7, 0x13, 0xf7, 0x54, 0xf7, 0x56, 0xf7, + 0x53, 0x20, 0xf7, 0x57, 0x12, 0xe0, 0xef, 0xcb, 0xef, 0xbf, 0xee, 0x3a, + 0xee, 0x13, 0xdd, 0xdc, 0x8c, 0x15, 0xef, 0xa9, 0x6, 0x84, 0x9f, 0xa6, + 0x86, 0xa0, 0x1b, 0xfb, 0x25, 0xef, 0xf7, 0x24, 0x7, 0xb1, 0x92, 0xf7, + 0x17, 0xa1, 0xf7, 0x13, 0x1a, 0xf3, 0x37, 0x9e, 0x20, 0xa7, 0x1e, 0x62, + 0x97, 0x26, 0x9d, 0xc1, 0x1a, 0xc0, 0xd9, 0x94, 0xaa, 0x1e, 0x13, 0xee, + 0xb0, 0xb0, 0x81, 0x7c, 0xac, 0x1f, 0x50, 0xee, 0xf7, 0x53, 0x28, 0x6c, + 0x7, 0x7b, 0x93, 0x7a, 0x91, 0x78, 0x8e, 0x8, 0x13, 0xdd, 0xf1, 0x27, + 0x26, 0x7, 0x46, 0x82, 0x2c, 0x67, 0xfb, 0x7, 0x1a, 0x21, 0xde, 0x76, + 0xf7, 0xe, 0x69, 0x1e, 0xb6, 0x80, 0xe1, 0x83, 0x56, 0x1a, 0x55, 0x25, + 0x87, 0x6f, 0x66, 0x67, 0x91, 0x9a, 0x68, 0x1e, 0xc5, 0x27, 0x7, 0xe, + 0x91, 0x76, 0xf7, 0x5f, 0xd1, 0xdd, 0xd0, 0xf7, 0x1c, 0xd2, 0x12, 0xc7, + 0xd2, 0xf7, 0x9, 0xd2, 0x64, 0xd1, 0xf7, 0xa, 0xd2, 0x13, 0xfb, 0xc7, + 0xf8, 0x71, 0x15, 0x42, 0xc3, 0x4c, 0xe3, 0x8a, 0x1e, 0xdb, 0xcd, 0xc5, + 0xdb, 0xd1, 0x52, 0xcf, 0x34, 0x36, 0x4e, 0x48, 0x43, 0x1f, 0xd2, 0x8c, + 0x15, 0xae, 0xa5, 0xab, 0xba, 0x1e, 0x13, 0xeb, 0xba, 0xa8, 0x6c, 0x67, + 0x5d, 0x64, 0x74, 0x65, 0x5e, 0x70, 0xac, 0xaf, 0x1f, 0x13, 0xfd, 0xf7, + 0x9, 0xfb, 0xf7, 0x15, 0x43, 0xc5, 0x4a, 0xe3, 0x8a, 0x1e, 0x13, 0x45, + 0xda, 0xcd, 0xc5, 0xdc, 0xd2, 0x52, 0xce, 0x35, 0x36, 0x4c, 0x49, 0x42, + 0x1f, 0xd2, 0x8c, 0x15, 0xad, 0xa6, 0xad, 0xbb, 0x1e, 0x13, 0x5, 0xb9, + 0xa7, 0x6a, 0x68, 0x5c, 0x66, 0x76, 0x65, 0x5d, 0x6f, 0xab, 0xaf, 0x1f, + 0xfb, 0x6b, 0xb3, 0x15, 0x13, 0x0, 0xf8, 0x46, 0xf7, 0x63, 0x6f, 0xcf, + 0xfc, 0x47, 0xfb, 0x6a, 0x5, 0xe, 0x7c, 0xe7, 0x3b, 0xe8, 0xf7, 0xa, + 0xe8, 0xf7, 0x28, 0xe9, 0x12, 0xb8, 0xec, 0x68, 0xec, 0x13, 0xb8, 0xf7, + 0x2f, 0xf7, 0xc4, 0x15, 0x4d, 0x6d, 0x5b, 0x4f, 0x45, 0x1a, 0x46, 0xbd, + 0x31, 0xf7, 0xb, 0xdb, 0xad, 0xad, 0x9d, 0xa3, 0x1e, 0x13, 0x74, 0xb3, + 0x63, 0x5, 0xf7, 0x37, 0xe8, 0xfb, 0xc, 0x6, 0x6f, 0xa4, 0x9f, 0xa8, + 0x97, 0xac, 0x98, 0xaa, 0x19, 0xde, 0xe8, 0xfb, 0x27, 0x6, 0x86, 0x73, + 0x77, 0x52, 0x7c, 0x71, 0x30, 0xf7, 0xd, 0x18, 0x7c, 0x9f, 0x65, 0xbd, + 0xa2, 0x1a, 0xaa, 0xa8, 0x95, 0xae, 0xb5, 0xbe, 0x73, 0x79, 0x98, 0x1e, + 0xc2, 0xd0, 0x5, 0xb3, 0x66, 0x4b, 0xa6, 0x4f, 0x1b, 0x38, 0x3d, 0x63, + 0x2e, 0x5a, 0xb2, 0x64, 0x93, 0x7b, 0x1f, 0xbe, 0x43, 0x15, 0xe7, 0x6a, + 0xa, 0x13, 0xb8, 0x74, 0x77, 0x6d, 0x7d, 0x6c, 0x1b, 0x54, 0x78, 0xb5, + 0xa9, 0xb8, 0xb1, 0xa4, 0xa4, 0x9a, 0x1f, 0xe, 0x4c, 0xa, 0xf7, 0x7d, + 0xf7, 0x19, 0x3, 0xf7, 0x84, 0xf7, 0xa9, 0x15, 0xf7, 0xb, 0x6, 0x99, + 0x59, 0xa, 0xfb, 0x26, 0x6, 0xe, 0x3a, 0x76, 0xf9, 0x62, 0x77, 0x1, + 0xf7, 0x47, 0xf7, 0x1, 0x3, 0xf7, 0xd3, 0x25, 0x15, 0xf1, 0x6, 0x53, + 0xe2, 0x3e, 0xf7, 0xf, 0xf7, 0x52, 0x1a, 0xf7, 0x2b, 0xc4, 0xc0, 0xd7, + 0xf7, 0x6, 0x1e, 0x29, 0x6, 0x32, 0x27, 0x54, 0x27, 0xfb, 0xb, 0x1a, + 0xfb, 0x17, 0xa0, 0xfb, 0x0, 0xf7, 0xb, 0xfb, 0x34, 0x1e, 0xe, 0x3a, + 0x76, 0xf9, 0x62, 0x77, 0x1, 0xf7, 0xcc, 0xf7, 0x1, 0x3, 0xf7, 0x47, + 0x25, 0x15, 0xf1, 0x6, 0xf7, 0xb, 0xf7, 0x34, 0xa0, 0xf7, 0x0, 0xf7, + 0x17, 0x1a, 0xf7, 0xb, 0x54, 0xef, 0x32, 0xef, 0x1e, 0x29, 0x6, 0xd7, + 0xfb, 0x6, 0xc4, 0x56, 0xfb, 0x2b, 0x1a, 0xfb, 0x52, 0x3e, 0xfb, 0xf, + 0x53, 0x34, 0x1e, 0xe, 0xf7, 0x8e, 0xf1, 0x3, 0xf7, 0x22, 0xf7, 0xac, + 0x15, 0xdf, 0x4e, 0xd6, 0xf7, 0xc, 0xd6, 0xfb, 0xb, 0xdf, 0xc8, 0x33, + 0xf2, 0xf7, 0x1d, 0xad, 0x69, 0xed, 0xfb, 0x14, 0x59, 0x95, 0xf7, 0x1b, + 0x5, 0x6b, 0xa, 0x93, 0xfb, 0x19, 0xfb, 0x13, 0xbb, 0x67, 0x28, 0xf7, + 0x20, 0x6a, 0x5, 0xe, 0xc7, 0x76, 0xf7, 0x41, 0xe9, 0xf7, 0x40, 0x67, + 0xa, 0xed, 0x3, 0xd2, 0xf7, 0x68, 0x15, 0xf7, 0x48, 0xfb, 0x41, 0xed, + 0xf7, 0x41, 0xf7, 0x48, 0xe9, 0xfb, 0x48, 0xf7, 0x40, 0x29, 0xfb, 0x40, + 0xfb, 0x48, 0x6, 0xe, 0x31, 0x45, 0xa, 0xf7, 0x39, 0xfb, 0x3, 0x15, + 0xf7, 0x14, 0x6, 0xf7, 0x22, 0x59, 0xa, 0xfb, 0x3d, 0x6, 0xe, 0xf7, + 0x5f, 0xf7, 0x2, 0x1, 0xef, 0xf8, 0x24, 0x3, 0xef, 0xf7, 0x5f, 0x15, + 0xf8, 0x24, 0xf7, 0x2, 0xfc, 0x24, 0x6, 0xe, 0x7c, 0xf7, 0x4e, 0x6d, + 0xa, 0xd9, 0x15, 0x58, 0xbc, 0x61, 0xc6, 0xc6, 0xbc, 0xb5, 0xbe, 0xbe, + 0x5a, 0xb5, 0x50, 0x50, 0x5a, 0x61, 0x58, 0x1e, 0xe, 0x53, 0x76, 0xf9, + 0x53, 0x77, 0x1, 0xed, 0xf8, 0x28, 0x3, 0xed, 0x5d, 0x15, 0xd0, 0x6c, + 0xf7, 0xe3, 0xf9, 0x34, 0x45, 0xaa, 0x5, 0xe, 0x7c, 0xe8, 0xf8, 0x51, + 0xe8, 0x1, 0xe2, 0xed, 0xf7, 0x7c, 0xeb, 0x3, 0xe2, 0xf7, 0xbe, 0x15, + 0x42, 0x99, 0xfb, 0x84, 0xf7, 0x5c, 0xf7, 0x60, 0x93, 0xf7, 0x84, 0xd5, + 0xd4, 0x78, 0xf7, 0x88, 0xfb, 0x53, 0xfb, 0x66, 0x85, 0xfb, 0x86, 0x3f, + 0x1e, 0xed, 0x8c, 0x15, 0xc6, 0x8d, 0x90, 0xf7, 0x39, 0xf7, 0x1, 0x1b, + 0xf7, 0x3, 0x90, 0xfb, 0x3c, 0x50, 0x3b, 0x7c, 0xfb, 0x1e, 0x28, 0x20, + 0x80, 0xf7, 0x1f, 0xdd, 0x1f, 0xe, 0x8b, 0xe8, 0xf8, 0x9f, 0x77, 0x1, + 0xf7, 0x91, 0xec, 0x3, 0xd2, 0x16, 0xf8, 0x5e, 0xe8, 0xfb, 0x47, 0xf8, + 0x9f, 0x6, 0xfb, 0x9e, 0x56, 0x5, 0x30, 0x7, 0xf7, 0x3d, 0xad, 0x5, + 0xfc, 0x31, 0xfb, 0x4a, 0x7, 0xe, 0x8b, 0xea, 0x2c, 0xf7, 0x34, 0xf7, + 0xfe, 0xe9, 0x12, 0xf2, 0xed, 0xf7, 0x6f, 0xee, 0x13, 0x78, 0xdc, 0x16, + 0xf8, 0x4a, 0xf7, 0x34, 0x2c, 0x6, 0x13, 0xb8, 0x4a, 0xfb, 0x4c, 0x7, + 0xf7, 0x1, 0xe8, 0xf7, 0x3e, 0xf7, 0x17, 0xef, 0x1a, 0xef, 0x42, 0xec, + 0xfb, 0x1d, 0x39, 0x43, 0x69, 0x4d, 0x57, 0x1e, 0x34, 0xed, 0x7, 0xdf, + 0xe1, 0x90, 0xa6, 0xca, 0xb6, 0x68, 0x48, 0x58, 0xfb, 0xb, 0x28, 0xfb, + 0x70, 0xfb, 0x45, 0x1e, 0xe, 0x7c, 0xe8, 0xf7, 0x50, 0xe8, 0xf7, 0x37, + 0xe9, 0x12, 0xf8, 0x1b, 0xf2, 0x44, 0xeb, 0x13, 0xe8, 0xdc, 0xb3, 0x15, + 0x79, 0xbe, 0xcc, 0x66, 0xed, 0x1b, 0xdb, 0xf7, 0x24, 0xb7, 0xf7, 0x23, + 0xe1, 0x5e, 0xaa, 0x5b, 0xac, 0x1f, 0x13, 0xf0, 0xba, 0xa1, 0xa1, 0xc4, + 0xc1, 0x1a, 0xf7, 0x6, 0x8a, 0x2a, 0xba, 0x23, 0x1b, 0x40, 0x6a, 0x6f, + 0x66, 0x4f, 0x1f, 0xad, 0x42, 0x5, 0xb2, 0xd3, 0x9f, 0x90, 0xb6, 0x1b, + 0xc8, 0xb0, 0x77, 0x50, 0x3e, 0x33, 0x84, 0x4e, 0x1f, 0x2e, 0x7, 0x13, + 0xe8, 0xe6, 0xe4, 0x7f, 0x39, 0x4d, 0x4f, 0x6b, 0x46, 0x57, 0x56, 0x9b, + 0xaf, 0x40, 0x1f, 0xe, 0x8b, 0xe9, 0xdf, 0xe9, 0xf7, 0xec, 0x77, 0x1, + 0xf7, 0xe3, 0xeb, 0x3, 0xd4, 0xf7, 0x46, 0x15, 0xf7, 0x9a, 0x37, 0x23, + 0x2d, 0xf7, 0xbc, 0xe9, 0x2b, 0xdf, 0xe8, 0xe9, 0x2e, 0xf7, 0xec, 0x24, + 0x6, 0xfb, 0x93, 0xfb, 0xf9, 0x5, 0xf7, 0x2, 0x98, 0x15, 0xf7, 0x2c, + 0xf7, 0x73, 0x5, 0xfb, 0x73, 0x7, 0xe, 0x7c, 0xe7, 0xf7, 0x75, 0xe5, + 0xf7, 0x8, 0xe8, 0x1, 0xf7, 0x9, 0xeb, 0xf7, 0x6c, 0xeb, 0x3, 0xd5, + 0xaf, 0x15, 0x7b, 0xb1, 0xeb, 0x68, 0xe1, 0x1b, 0xf7, 0x31, 0xd5, 0xee, + 0xf6, 0xf7, 0x7, 0x3f, 0xe1, 0xfb, 0xa, 0x67, 0x63, 0x89, 0x7e, 0x61, + 0x1f, 0xf7, 0x17, 0xf7, 0xb2, 0xe8, 0xfc, 0x12, 0xfb, 0xaf, 0x7, 0xbc, + 0x52, 0xb3, 0xa8, 0xbd, 0x98, 0xb8, 0x8a, 0x19, 0xd0, 0x8a, 0xc6, 0x64, + 0x41, 0x1a, 0x4c, 0x5b, 0x5b, 0x36, 0x48, 0x4d, 0xa3, 0xa1, 0x51, 0x1e, + 0xe, 0x7c, 0xe4, 0xf7, 0x69, 0xe9, 0xf7, 0x1c, 0xe6, 0x1, 0xdf, 0xf7, + 0x2, 0xf7, 0x6a, 0xec, 0x3, 0xf7, 0x51, 0xf7, 0xee, 0x15, 0xf7, 0x19, + 0xa5, 0xf7, 0x1, 0xb1, 0xf7, 0xd, 0x1b, 0xa0, 0xa0, 0x8f, 0x87, 0xa0, + 0x1f, 0x92, 0xe9, 0x5, 0x8e, 0x73, 0x73, 0x85, 0x75, 0x1b, 0xfb, 0xf, + 0x31, 0x6c, 0x40, 0x46, 0x1f, 0x5f, 0x59, 0x68, 0x32, 0x30, 0x1a, 0xfb, + 0x21, 0xce, 0xfb, 0x26, 0xf7, 0x30, 0xf6, 0xe6, 0xde, 0xf7, 0x3, 0xf7, + 0x12, 0x45, 0xd7, 0xfb, 0x16, 0x56, 0x75, 0x7f, 0x74, 0x62, 0x1e, 0x90, + 0xfb, 0x17, 0x15, 0x8b, 0xa2, 0xd3, 0xdf, 0xdc, 0xa5, 0x5a, 0x53, 0x48, + 0x5e, 0x62, 0x51, 0x43, 0x64, 0xd6, 0xcd, 0x1e, 0xe, 0xa0, 0x76, 0xf8, + 0x90, 0xe8, 0x1, 0xe5, 0xed, 0x3, 0xf7, 0x5d, 0x16, 0xf6, 0x6, 0xf7, + 0x5c, 0xf8, 0x8e, 0x8c, 0xea, 0x5, 0xfc, 0x37, 0xfb, 0x48, 0xed, 0xe2, + 0xf7, 0x6e, 0x6, 0xe, 0x7c, 0xe8, 0xf7, 0x53, 0xe9, 0xf7, 0x22, 0xe9, + 0x12, 0xde, 0xee, 0x32, 0xee, 0xf7, 0x6c, 0xec, 0x36, 0xec, 0x13, 0xf2, + 0xf7, 0x3d, 0xf7, 0xd5, 0x15, 0x58, 0x69, 0x68, 0x57, 0x4d, 0x1a, 0xfb, + 0x13, 0xf7, 0x9, 0x4e, 0xef, 0xf7, 0x10, 0xe8, 0xc7, 0xf7, 0x12, 0xcc, + 0x6c, 0xbc, 0x55, 0xb0, 0x1e, 0x13, 0xec, 0xb7, 0xac, 0xa8, 0xb8, 0xc9, + 0x1a, 0xf0, 0x34, 0xc5, 0xfb, 0xa, 0xfb, 0x16, 0x3e, 0x43, 0x31, 0x54, + 0xa7, 0x5c, 0xbb, 0x67, 0x1e, 0xa2, 0xf7, 0x19, 0x15, 0xbb, 0xb7, 0xaa, + 0xcb, 0xe0, 0xa2, 0x6b, 0x5d, 0x51, 0x54, 0x6c, 0x56, 0x50, 0x5a, 0xae, + 0xc0, 0x1e, 0x13, 0xf2, 0x81, 0xfb, 0xaf, 0x15, 0xc0, 0xc2, 0xb8, 0xca, + 0xde, 0xb0, 0x57, 0x5d, 0x4f, 0x69, 0x6d, 0x37, 0x3e, 0x60, 0xb6, 0xba, + 0x1e, 0xe, 0x7c, 0xe8, 0xf7, 0x1a, 0xed, 0xf7, 0x68, 0xe9, 0x1, 0xe5, + 0xf1, 0xf7, 0x6d, 0xf5, 0x3, 0xdf, 0x81, 0x15, 0x88, 0xa6, 0xa5, 0x89, + 0xa4, 0x1b, 0xf7, 0x3c, 0xf7, 0xf, 0xcd, 0xf7, 0x28, 0xb7, 0x1f, 0x97, + 0xb3, 0x91, 0xb8, 0xbf, 0x1a, 0xf7, 0x3, 0x6d, 0xf7, 0x42, 0xfb, 0x4e, + 0xfb, 0xb, 0x31, 0x2d, 0x26, 0xfb, 0x0, 0xd8, 0x23, 0xf7, 0x13, 0xb6, + 0xac, 0x9c, 0x9a, 0xa4, 0x1e, 0xfb, 0xd, 0x6f, 0x3b, 0x5c, 0xfb, 0x14, + 0x1b, 0x75, 0x74, 0x8d, 0x8d, 0x73, 0x1f, 0xf7, 0xd3, 0xf7, 0xcd, 0x15, + 0x87, 0x8c, 0x6f, 0x3c, 0x37, 0x1b, 0x50, 0x5c, 0xb8, 0xd1, 0xd4, 0xca, + 0xa6, 0xb9, 0xe1, 0x97, 0x42, 0x50, 0x95, 0x1f, 0xe, 0x7c, 0xf7, 0x44, + 0xe1, 0xf7, 0x44, 0x6d, 0xa, 0xf7, 0xe5, 0x15, 0x37, 0xa, 0xfb, 0x9c, + 0x4, 0x37, 0xa, 0xe, 0x31, 0x76, 0xf8, 0x7, 0xf7, 0x44, 0x1, 0xf7, + 0x76, 0xf7, 0x6c, 0x3, 0xf7, 0x31, 0xfb, 0x3, 0x15, 0xf7, 0x1c, 0x6, + 0xf7, 0x29, 0xf7, 0xad, 0x5, 0xfb, 0x46, 0x6, 0x65, 0xf7, 0x3b, 0x15, + 0x37, 0xa, 0xe, 0x5e, 0xa, 0xf7, 0x5c, 0x15, 0xf8, 0x5d, 0xfb, 0x4d, + 0x5, 0xe9, 0x7, 0xfb, 0xf6, 0xf7, 0x2a, 0xf7, 0xf6, 0xf7, 0x28, 0x5, + 0xe9, 0x7, 0xfc, 0x5d, 0xfb, 0x4c, 0x5, 0xe, 0xf7, 0xa, 0xf1, 0xd7, + 0xf1, 0x1, 0xd2, 0xf8, 0x5e, 0x3, 0xd2, 0xf7, 0xbc, 0x15, 0xf8, 0x5e, + 0xf1, 0xfc, 0x5e, 0x6, 0xfb, 0xac, 0x4, 0xf8, 0x5e, 0xf1, 0xfc, 0x5e, + 0x6, 0xe, 0x5e, 0xa, 0x9a, 0x15, 0xf8, 0x5d, 0xf7, 0x4d, 0x5, 0xf7, + 0x9, 0x7, 0xfc, 0x5d, 0xf7, 0x4c, 0x5, 0x2d, 0x7, 0xf7, 0xf9, 0xfb, + 0x28, 0xfb, 0xf9, 0xfb, 0x2a, 0x5, 0xe, 0x80, 0xf7, 0x2a, 0xf7, 0xf1, + 0xe7, 0x12, 0xed, 0xec, 0x7e, 0xf7, 0x41, 0xbd, 0xeb, 0x13, 0xe8, 0xf7, + 0x70, 0xf7, 0x45, 0x15, 0xec, 0xc8, 0x6, 0xc0, 0x97, 0xf7, 0x17, 0xb0, + 0xf7, 0x10, 0x1a, 0xf7, 0x1, 0x2b, 0xc7, 0xfb, 0xd, 0x53, 0x3e, 0x7d, + 0x77, 0x56, 0x1e, 0xfb, 0x23, 0xec, 0xd6, 0x7, 0xa8, 0x92, 0xae, 0x8f, + 0xad, 0x8a, 0x8, 0xc6, 0x8a, 0xc0, 0x76, 0x54, 0x1a, 0x13, 0x90, 0x40, + 0x2b, 0x7a, 0x32, 0x7d, 0x1e, 0x13, 0xd8, 0x65, 0xfb, 0x88, 0x15, 0x62, + 0xb1, 0x69, 0xbb, 0xbb, 0xb2, 0xad, 0xb4, 0xb4, 0x64, 0xad, 0x5b, 0x5b, + 0x65, 0x69, 0x62, 0x1e, 0xe, 0x79, 0xd3, 0xd2, 0xd4, 0xf7, 0x85, 0x77, + 0xe6, 0xd0, 0x1, 0x9e, 0xdf, 0xcc, 0xd0, 0xf7, 0x9b, 0xdb, 0x3, 0xf7, + 0xea, 0xf7, 0x3b, 0x15, 0x6a, 0xa1, 0xaf, 0x82, 0x9d, 0x1b, 0xc8, 0xf0, + 0xc0, 0xf7, 0x26, 0xbd, 0x81, 0xbc, 0x72, 0xb3, 0x1f, 0xde, 0x57, 0x2f, + 0xac, 0x30, 0x1b, 0xfb, 0x2d, 0xfb, 0x1e, 0x23, 0xfb, 0x5d, 0xfb, 0x1, + 0xbf, 0xfb, 0x4b, 0xf7, 0x78, 0xf7, 0x13, 0xd4, 0xc4, 0xa4, 0xb1, 0x1f, + 0x6f, 0xcf, 0x5, 0x54, 0x3d, 0x4c, 0x74, 0x3f, 0x1b, 0xfb, 0x2d, 0x67, + 0xf7, 0x1b, 0xe3, 0xc9, 0xa2, 0xf7, 0x3f, 0xf7, 0x4c, 0xf7, 0xb, 0xd2, + 0x44, 0x23, 0x3c, 0x69, 0x51, 0x63, 0x7d, 0x77, 0x91, 0xa3, 0x90, 0x8b, + 0x8f, 0x8d, 0x91, 0x1f, 0xbe, 0xf7, 0x52, 0x5, 0x46, 0x6, 0x85, 0x79, + 0x5, 0xa3, 0x74, 0x7e, 0x8b, 0x7d, 0x1b, 0xfb, 0x4, 0x63, 0xfb, 0xe, + 0x3a, 0x35, 0xbe, 0x72, 0xad, 0xac, 0xab, 0x9c, 0xa4, 0xa3, 0x1f, 0x22, + 0xd0, 0x15, 0xc3, 0xa5, 0xd4, 0xbc, 0xa3, 0x8d, 0x74, 0x82, 0x70, 0x77, + 0xfb, 0x0, 0x4f, 0x7b, 0x86, 0x9d, 0x9f, 0x1e, 0xe, 0x8b, 0xe6, 0xd8, + 0xe6, 0xf7, 0x68, 0xe6, 0x1, 0x82, 0x16, 0xf7, 0x8d, 0xe6, 0x31, 0x6, + 0xab, 0xd8, 0x5, 0xf7, 0x80, 0x6, 0xae, 0x3e, 0x5, 0x35, 0x30, 0xf7, + 0x86, 0xe6, 0x52, 0x6, 0xfb, 0x62, 0xf8, 0x6b, 0x5, 0xfb, 0x90, 0x30, + 0xf7, 0x15, 0x6, 0xfb, 0x3f, 0xfc, 0x10, 0x5, 0x4e, 0x6, 0xf7, 0x7c, + 0xf7, 0x3c, 0x15, 0xdb, 0xf7, 0x40, 0xd7, 0xfb, 0x40, 0x5, 0xe, 0x8b, + 0xe6, 0xf7, 0x2e, 0xe6, 0xf7, 0x1b, 0xe6, 0x12, 0xf7, 0x2, 0xeb, 0xf7, + 0x7f, 0xea, 0x4e, 0xeb, 0x13, 0xf4, 0xa7, 0x16, 0xf7, 0xc4, 0x6, 0xf7, + 0x49, 0xc5, 0xcf, 0xeb, 0xb8, 0x78, 0xb5, 0x3f, 0xb7, 0x1f, 0x13, 0xf8, + 0xb2, 0xa8, 0xa0, 0xb4, 0xb7, 0x1a, 0xcd, 0x5a, 0xe2, 0xfb, 0x2d, 0x1e, + 0xfb, 0xc6, 0x30, 0xdd, 0xfc, 0x10, 0x39, 0x6, 0xf7, 0x46, 0xf7, 0x89, + 0x15, 0xf7, 0x1b, 0xf7, 0x12, 0x7, 0xe6, 0x9d, 0x67, 0x6e, 0x4d, 0x3e, + 0x83, 0x6b, 0x1f, 0xfb, 0x12, 0xfb, 0x89, 0x15, 0xf7, 0x2e, 0xf7, 0x12, + 0x7, 0x13, 0xf4, 0xa4, 0xf7, 0xa, 0x8a, 0x3b, 0x4a, 0x55, 0x83, 0x32, + 0x1f, 0xe, 0x79, 0xe7, 0xf8, 0x33, 0xe6, 0x1, 0xaa, 0xec, 0xf7, 0xed, + 0xeb, 0x3, 0xf8, 0x95, 0xf7, 0x20, 0x15, 0x74, 0x6a, 0x40, 0x60, 0x37, + 0x1b, 0xfb, 0x1c, 0x52, 0xf3, 0xf5, 0xf7, 0x2e, 0xf7, 0x8, 0xbe, 0xd6, + 0xc1, 0xc1, 0x77, 0x70, 0xb9, 0x1f, 0x22, 0xeb, 0xf7, 0x87, 0x2b, 0x61, + 0x7, 0x95, 0x7d, 0x55, 0xab, 0x34, 0x1b, 0xfb, 0x3a, 0xfb, 0xd, 0xfb, + 0x10, 0xfb, 0x3f, 0xfb, 0x8, 0xcf, 0xfb, 0x4f, 0xf7, 0x75, 0xda, 0xe0, + 0x90, 0xd1, 0xdb, 0x1f, 0x8c, 0x8a, 0x5, 0xe, 0x32, 0xa, 0xf0, 0xeb, + 0xf7, 0xaf, 0xf1, 0x3, 0x9d, 0x16, 0xf7, 0x87, 0x6, 0xf7, 0x30, 0xf7, + 0x39, 0xce, 0xf7, 0x75, 0xf7, 0x47, 0xfb, 0x9, 0xe6, 0xfb, 0x45, 0x1f, + 0xfb, 0xa2, 0x7a, 0xa, 0x6, 0xf7, 0x47, 0x16, 0xf8, 0x10, 0x7, 0xf7, + 0x90, 0xaa, 0x39, 0x26, 0xfb, 0x1d, 0x41, 0x4f, 0xfb, 0x65, 0x1f, 0xe, + 0x8b, 0xe6, 0x30, 0xf7, 0x58, 0xb8, 0xe5, 0xac, 0xf7, 0x5a, 0x30, 0xe6, + 0x12, 0xf7, 0x7, 0xef, 0xf7, 0x3, 0xee, 0xb6, 0xee, 0x13, 0x77, 0xb1, + 0x16, 0xf8, 0xa5, 0xf7, 0x58, 0x28, 0x6, 0x13, 0xaf, 0x22, 0xfb, 0x91, + 0xf7, 0x2a, 0xf7, 0x3, 0x4a, 0xee, 0xf7, 0x70, 0x28, 0x4a, 0xfb, 0x3, + 0xf7, 0x20, 0xf7, 0x91, 0x7, 0x13, 0xb7, 0x20, 0xee, 0xf7, 0x5a, 0xfc, + 0xa5, 0x7, 0x13, 0xaf, 0x30, 0xd8, 0xfc, 0x10, 0x3e, 0x7, 0xe, 0x8b, + 0xe6, 0xf7, 0x28, 0xe6, 0xae, 0xf7, 0x58, 0x31, 0xe5, 0x90, 0x77, 0x12, + 0xf7, 0x6, 0xed, 0xf7, 0x8, 0xed, 0xb2, 0xef, 0x13, 0xd7, 0xad, 0x16, + 0xf7, 0xd5, 0xe6, 0xfb, 0x23, 0xf7, 0x28, 0xf7, 0x8, 0x4b, 0xed, 0xf7, + 0x70, 0x29, 0x4a, 0xfb, 0x8, 0xf7, 0x21, 0xf7, 0x91, 0x6, 0x13, 0xe7, + 0x21, 0xef, 0x7, 0x13, 0xcf, 0xf7, 0x5d, 0x7, 0x13, 0xd7, 0xfc, 0xa7, + 0x2b, 0x6, 0xdb, 0x8c, 0x5, 0xfc, 0x10, 0x3b, 0x7, 0xe, 0x79, 0xe9, + 0xf1, 0xea, 0xf7, 0x6c, 0xe6, 0x1, 0x99, 0xed, 0xf7, 0xc7, 0xed, 0x3, + 0x46, 0xa, 0xda, 0xf7, 0x17, 0xf7, 0x21, 0xe6, 0xc9, 0xed, 0x41, 0xa, + 0xfb, 0x5, 0xfb, 0x4d, 0xfb, 0x62, 0xf7, 0x33, 0x2d, 0xf7, 0x36, 0x58, + 0xa, 0xe, 0x8b, 0xe6, 0xf7, 0x23, 0xe6, 0xf7, 0x26, 0xe6, 0x1, 0xec, + 0xe8, 0xf7, 0x70, 0xe8, 0x3, 0x9f, 0x16, 0xf7, 0x8c, 0xe6, 0x3d, 0xf7, + 0x23, 0xf7, 0x70, 0xfb, 0x23, 0x3e, 0x30, 0xf7, 0x8b, 0xe6, 0x3e, 0xf8, + 0x10, 0xd8, 0xe6, 0xfb, 0x88, 0x30, 0xd5, 0xfb, 0x26, 0xfb, 0x70, 0xf7, + 0x26, 0xd7, 0xe6, 0xfb, 0x8a, 0x30, 0xd8, 0xfc, 0x10, 0x3e, 0x6, 0xe, + 0x32, 0xa, 0xf7, 0x8f, 0xf0, 0x60, 0xa, 0xe6, 0xfb, 0x3f, 0xf8, 0x10, + 0x74, 0xa, 0xfc, 0x10, 0xfb, 0x42, 0x6, 0xe, 0x79, 0xe5, 0xf8, 0x22, + 0xe7, 0x1, 0x9d, 0xed, 0xf7, 0x85, 0xeb, 0x3, 0x9d, 0xbd, 0x15, 0x7a, + 0xab, 0xef, 0x58, 0xf5, 0x1b, 0xf7, 0x12, 0xd2, 0xd5, 0xf7, 0x1f, 0x1f, + 0xf7, 0xa7, 0xf7, 0x15, 0xe7, 0xfc, 0x24, 0x2f, 0xf7, 0x43, 0xfb, 0xa8, + 0x7, 0x49, 0x80, 0x53, 0x2e, 0x3d, 0x50, 0x78, 0xa, 0x32, 0xa, 0xe9, + 0xee, 0x3, 0x96, 0x16, 0xf7, 0x9c, 0xe6, 0x39, 0xf7, 0x2, 0x6, 0xc6, + 0xc0, 0xcf, 0x34, 0xc5, 0x2a, 0xbe, 0x45, 0x19, 0xf7, 0x34, 0xe6, 0x20, + 0x6, 0x5d, 0xce, 0x4c, 0xe1, 0x54, 0xcf, 0xf7, 0x44, 0xf7, 0x33, 0x18, + 0xcf, 0xe6, 0xfb, 0x86, 0x30, 0xb6, 0x6, 0xfb, 0x3e, 0xfb, 0x2d, 0x5, + 0xf7, 0x2d, 0xda, 0xe6, 0xfb, 0x99, 0x7a, 0xa, 0x7, 0xe, 0x32, 0xa, + 0xf7, 0x17, 0xec, 0xf7, 0x86, 0xee, 0x3, 0xa9, 0x16, 0xf8, 0xaf, 0xf7, + 0x92, 0x28, 0xfb, 0x37, 0xfb, 0x86, 0xf8, 0x10, 0xf7, 0x14, 0xe6, 0xfb, + 0xda, 0x30, 0xf0, 0xfc, 0x10, 0x26, 0x6, 0xe, 0x32, 0xa, 0xd2, 0xe7, + 0xf7, 0xab, 0xe7, 0x3, 0x89, 0x16, 0xf7, 0x90, 0xe6, 0x2c, 0x6, 0x9b, + 0xf7, 0xce, 0xf1, 0xfb, 0xa2, 0x5, 0xc6, 0x6, 0xf4, 0xf7, 0x9f, 0x96, + 0xfb, 0xcb, 0x5, 0x32, 0x30, 0xf7, 0x86, 0xe6, 0x4d, 0x6, 0x81, 0xf8, + 0x10, 0x5, 0xd4, 0xe6, 0xfb, 0x52, 0x6, 0x20, 0xfb, 0xac, 0x25, 0xf7, + 0xac, 0x5, 0xfb, 0x5f, 0x30, 0xda, 0x6, 0x7b, 0xfc, 0x10, 0x5, 0x4a, + 0x6, 0xe, 0x7f, 0xe8, 0xf8, 0x18, 0xe8, 0x1, 0xd8, 0xe8, 0xf7, 0x9a, + 0xe5, 0x3, 0x8a, 0x7f, 0x15, 0xf7, 0x8e, 0xe8, 0x3c, 0xf7, 0xd1, 0x6, + 0xf7, 0x9a, 0xfc, 0x2e, 0x5, 0xe5, 0xf8, 0x75, 0xda, 0xe8, 0xfb, 0x96, + 0x2e, 0xe0, 0xfb, 0xc5, 0x6, 0xfb, 0x8b, 0xf8, 0x22, 0x5, 0xfb, 0x4a, + 0x2e, 0xd9, 0xfc, 0x18, 0x3d, 0x6, 0xe, 0x79, 0xe7, 0xf8, 0x30, 0xe9, + 0x1, 0xa1, 0xee, 0xf7, 0xfd, 0xeb, 0x3, 0xa1, 0xf7, 0xab, 0x15, 0xfb, + 0x5c, 0xf7, 0x25, 0x2a, 0xf7, 0x1a, 0xf2, 0xf7, 0x42, 0xd5, 0xf7, 0x76, + 0xf7, 0x21, 0x2f, 0xf7, 0x31, 0xfb, 0x4d, 0xfb, 0x42, 0x22, 0xfb, 0x25, + 0xfb, 0x30, 0x1e, 0xeb, 0x8e, 0x15, 0xe9, 0xca, 0xf7, 0x2, 0xf7, 0xc, + 0xf7, 0x1d, 0xb9, 0xfb, 0x16, 0x44, 0x38, 0x5a, 0xfb, 0x14, 0xfb, 0x1a, + 0xfb, 0xd, 0x4d, 0xf7, 0x0, 0xef, 0x1e, 0xe, 0x8b, 0xe6, 0xef, 0xe7, + 0xf7, 0x50, 0xe6, 0x1, 0xf7, 0x13, 0xed, 0xf7, 0x7d, 0xec, 0x3, 0xb7, + 0x16, 0xf7, 0xca, 0xe6, 0xfb, 0x15, 0xef, 0x6, 0xf7, 0x8d, 0xdc, 0xbd, + 0xf7, 0x17, 0xf7, 0x5f, 0xfb, 0x36, 0x78, 0xfb, 0xf1, 0x91, 0x1f, 0x7a, + 0xa, 0x7, 0xf7, 0x49, 0xf7, 0x54, 0x15, 0xf7, 0x50, 0x7, 0xf7, 0x20, + 0x84, 0xe8, 0x99, 0x24, 0x1a, 0x26, 0x25, 0x9b, 0xfb, 0x17, 0x84, 0x1e, + 0xe, 0xfb, 0x9, 0x76, 0xb8, 0xf7, 0x49, 0xf8, 0x24, 0xe7, 0x12, 0xa6, + 0xeb, 0xf7, 0xf7, 0xea, 0x17, 0xf7, 0xa, 0x46, 0x15, 0xb6, 0x46, 0x5, + 0xab, 0xc7, 0xa5, 0x98, 0xaf, 0x1b, 0xa9, 0xa4, 0x80, 0x81, 0xa4, 0x1f, + 0x81, 0xa3, 0xa4, 0x82, 0xa8, 0x1b, 0xc2, 0xaa, 0xa6, 0xb8, 0xb9, 0x1f, + 0x51, 0xca, 0x5, 0x68, 0x66, 0x7e, 0x83, 0x79, 0x1b, 0x73, 0x70, 0x9b, + 0xa1, 0x6b, 0x1f, 0xf7, 0x26, 0xb1, 0xca, 0xf7, 0xf, 0xf7, 0x10, 0x1a, + 0xde, 0x5a, 0xf7, 0x6b, 0xfb, 0x75, 0xfb, 0x1f, 0xfb, 0x19, 0x27, 0xfb, + 0x56, 0xfb, 0x20, 0xd1, 0x2f, 0xf0, 0x62, 0x1e, 0x40, 0xf7, 0xa6, 0x15, + 0xf7, 0x2e, 0xf6, 0xba, 0xd0, 0x1e, 0x13, 0x58, 0xf7, 0xb, 0xc7, 0x24, + 0x25, 0x1f, 0x13, 0x50, 0xfb, 0x2c, 0x21, 0x60, 0x41, 0x3b, 0x2c, 0xbc, + 0xf7, 0x2a, 0x1e, 0xe, 0x8b, 0xe6, 0xf7, 0x18, 0xe6, 0xf7, 0x31, 0xe6, + 0x1, 0xec, 0xef, 0xf7, 0x7a, 0xee, 0x3, 0x97, 0x16, 0xf7, 0x9d, 0xe6, + 0x3b, 0xf7, 0x18, 0xde, 0x6, 0xe4, 0xfb, 0x9, 0xb6, 0x4d, 0xa9, 0x5f, + 0x8, 0xf7, 0x25, 0xe6, 0x33, 0x6, 0xfb, 0x4, 0xf7, 0x2a, 0x5, 0xf6, + 0x9d, 0xab, 0xcf, 0xd1, 0x1a, 0xf7, 0x8, 0x27, 0xbc, 0xfb, 0x8, 0x1e, + 0xfb, 0xba, 0x30, 0xdc, 0xfc, 0x10, 0x36, 0x6, 0xf7, 0x4d, 0xf7, 0x73, + 0x15, 0xf7, 0x31, 0x7, 0xf7, 0x49, 0xbc, 0x92, 0x39, 0x31, 0x39, 0x93, + 0xfb, 0x28, 0x1f, 0xe, 0x8b, 0xe3, 0xf8, 0x17, 0xe3, 0x94, 0x77, 0x12, + 0xd3, 0xe6, 0x41, 0xe7, 0xf7, 0x80, 0xe6, 0x45, 0xe5, 0x13, 0xd2, 0xd3, + 0x16, 0xe6, 0xae, 0x6, 0x81, 0x9f, 0xb9, 0x72, 0xd5, 0x1b, 0xf7, 0xe, + 0xf2, 0xcc, 0xf5, 0xf7, 0x24, 0xfb, 0x2a, 0x87, 0x21, 0x9a, 0x1f, 0x13, + 0xcc, 0x72, 0x8f, 0x49, 0x95, 0xc5, 0x1a, 0xb5, 0xb9, 0xae, 0xdc, 0xb2, + 0xb0, 0x88, 0x7d, 0xac, 0x1e, 0x2e, 0xe6, 0x7, 0x13, 0xb4, 0xf7, 0x63, + 0x30, 0x76, 0x7, 0x13, 0xca, 0x99, 0x6a, 0x64, 0x89, 0x62, 0x1b, 0xfb, + 0x22, 0x42, 0x32, 0x3d, 0xfb, 0x22, 0xf7, 0x1d, 0x81, 0xf7, 0x6, 0x82, + 0x1f, 0xbd, 0x87, 0xbb, 0x78, 0x62, 0x1a, 0x5b, 0x64, 0x68, 0x2b, 0x1e, + 0x13, 0xd4, 0x58, 0x5c, 0x9b, 0xa3, 0x61, 0x1f, 0xd3, 0x30, 0x7, 0xe, + 0x32, 0xa, 0xb4, 0xee, 0xf7, 0x3, 0xed, 0xf7, 0x3, 0xee, 0x14, 0x38, + 0xf7, 0xe, 0x16, 0xf7, 0xe6, 0xe6, 0xfb, 0x3, 0xf8, 0x10, 0xf7, 0x3, + 0xfb, 0x5, 0xee, 0xf7, 0x60, 0xfc, 0x9a, 0xfb, 0x60, 0xee, 0xf7, 0x5, + 0xf7, 0x3, 0xfc, 0x10, 0xfb, 0x15, 0x6, 0xe, 0x79, 0xe7, 0xf8, 0x20, + 0xe7, 0x1, 0xde, 0xe9, 0xf7, 0x8b, 0xe9, 0x3, 0x8f, 0xf8, 0x6a, 0x15, + 0xda, 0xfb, 0xa2, 0x6, 0xfb, 0x28, 0xd2, 0x45, 0xf7, 0x25, 0xf7, 0x13, + 0xe7, 0xc4, 0xf7, 0x21, 0x1e, 0xf7, 0xb6, 0xd9, 0xe7, 0xfb, 0x96, 0x2f, + 0xe1, 0xfb, 0x9a, 0x7, 0x35, 0x73, 0x5b, 0x24, 0xfb, 0x4, 0x83, 0xcb, + 0xc0, 0x1e, 0xf7, 0xab, 0xdf, 0xe7, 0xfb, 0x95, 0x7, 0xe, 0xa0, 0x76, + 0xf8, 0x6b, 0xe6, 0x1, 0x7e, 0xf7, 0x8a, 0xf7, 0x1a, 0xf7, 0x8a, 0x3, + 0xf7, 0x90, 0x16, 0xeb, 0x6, 0xf7, 0x58, 0xf8, 0x6b, 0x5, 0xd0, 0xe6, + 0xfb, 0x8a, 0x30, 0xde, 0x6, 0xfb, 0x28, 0xfb, 0xf4, 0xfb, 0x1f, 0xf7, + 0xf4, 0x5, 0xd1, 0xe6, 0xfb, 0x8a, 0x30, 0xd8, 0x6, 0xe, 0xa0, 0x76, + 0xf8, 0x6b, 0xe6, 0x1, 0xed, 0x16, 0xde, 0x6, 0xf7, 0xa, 0xf7, 0xbc, + 0xf7, 0xc, 0xfb, 0xbc, 0x5, 0xdd, 0x6, 0xcf, 0xf8, 0x6b, 0x5, 0xbc, + 0xe6, 0xfb, 0x78, 0x30, 0xe1, 0x6, 0x69, 0xfb, 0xab, 0x21, 0xf7, 0x94, + 0x5, 0x45, 0x6, 0x23, 0xfb, 0x96, 0x67, 0xf7, 0xad, 0x5, 0xe0, 0xe6, + 0xfb, 0x79, 0x30, 0xbc, 0x6, 0xe, 0x32, 0xa, 0x97, 0x16, 0xf7, 0x8c, + 0xe6, 0x45, 0x6, 0xf7, 0x1, 0xf7, 0x1b, 0xf7, 0x1, 0xfb, 0x1b, 0x5, + 0x4d, 0x30, 0xf7, 0x86, 0xe6, 0x47, 0x6, 0xfb, 0x37, 0xf7, 0x5f, 0xf7, + 0x23, 0xf7, 0x45, 0x5, 0xd1, 0xe6, 0xfb, 0x77, 0x30, 0xbb, 0x6, 0x34, + 0xfb, 0x0, 0x32, 0xf7, 0x0, 0x5, 0xb7, 0xe6, 0xfb, 0x7a, 0x30, 0xd2, + 0x6, 0xf7, 0x25, 0xfb, 0x45, 0xfb, 0x39, 0xfb, 0x5f, 0x5, 0x47, 0x6, + 0xe, 0x32, 0xa, 0xf7, 0x8e, 0xec, 0x3, 0xf7, 0x12, 0x16, 0xf7, 0xec, + 0xe6, 0xfb, 0xf, 0xf7, 0x1c, 0x6, 0xf7, 0x35, 0xf7, 0x88, 0x5, 0xdb, + 0xe6, 0xfb, 0x81, 0x30, 0xc2, 0x6, 0x22, 0xfb, 0x31, 0x22, 0xf7, 0x31, + 0x5, 0xc0, 0xe6, 0xfb, 0x82, 0x30, 0xda, 0x6, 0xf7, 0x34, 0xfb, 0x88, + 0x5, 0xfb, 0x1c, 0xfb, 0x10, 0x7, 0xe, 0x32, 0xa, 0xcc, 0xed, 0xf7, + 0xaa, 0xec, 0x3, 0xc8, 0x16, 0xf8, 0x71, 0xf7, 0x70, 0x2a, 0xfb, 0x15, + 0xfb, 0x8d, 0x6, 0xf7, 0xd6, 0xf8, 0x2a, 0x5, 0xcc, 0xfc, 0x55, 0xfb, + 0x61, 0xed, 0xf7, 0x6, 0xf7, 0x6c, 0x7, 0xfb, 0xd2, 0xfc, 0x25, 0x5, + 0xe, 0x25, 0xe7, 0xf8, 0xaa, 0xe7, 0x1, 0xf7, 0x4d, 0xed, 0x3, 0xf7, + 0x4d, 0x25, 0x15, 0xf7, 0x7a, 0xe7, 0xfb, 0x18, 0xf8, 0xaa, 0xf7, 0x18, + 0xe7, 0xfb, 0x7a, 0x6, 0xe, 0x53, 0x76, 0xf9, 0x53, 0x77, 0x1, 0xf8, + 0x43, 0x3e, 0x15, 0xd2, 0xa8, 0xfb, 0xe1, 0xf9, 0x36, 0x44, 0x6e, 0x5, + 0xe, 0x25, 0xe7, 0xf8, 0xaa, 0xe7, 0x1, 0xf7, 0xd2, 0xec, 0x3, 0xf7, + 0x4d, 0x81, 0x15, 0x2f, 0xf7, 0x7a, 0xf9, 0x62, 0xfb, 0x7a, 0x2f, 0xf7, + 0x19, 0xfc, 0xaa, 0x7, 0xe, 0xf7, 0xa3, 0x76, 0xf8, 0x2, 0x77, 0x1, + 0xf7, 0x0, 0xf7, 0x8e, 0x15, 0xd3, 0xb1, 0xce, 0xcc, 0xc1, 0xd8, 0xc2, + 0x3a, 0xcb, 0x4e, 0xd3, 0x66, 0x8, 0xcb, 0x7, 0x30, 0xf7, 0x2, 0x6c, + 0xc2, 0x66, 0xf7, 0x1c, 0x8, 0x47, 0x6, 0x6b, 0xfb, 0x14, 0x68, 0x45, + 0x31, 0x23, 0x8, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, + 0xec, 0xbd, 0x7, 0xe, 0xf8, 0xa5, 0x76, 0xf7, 0x2d, 0x77, 0x1, 0xf7, + 0x3c, 0xf8, 0xcd, 0x15, 0xf7, 0x89, 0x4e, 0x9d, 0xbb, 0xfb, 0x7b, 0xf4, + 0x5, 0xe, 0x7c, 0xe9, 0x3a, 0xe9, 0xf1, 0xed, 0xd0, 0xe8, 0x34, 0xa, + 0x13, 0xbc, 0xf4, 0xf7, 0xcf, 0x15, 0x9a, 0xa8, 0xe6, 0xaa, 0xd3, 0x1b, + 0xbe, 0xb4, 0x75, 0x5c, 0x1f, 0x7f, 0x7, 0x92, 0x67, 0x68, 0x90, 0x6c, + 0x1b, 0xfb, 0x33, 0x2b, 0x48, 0x2d, 0x2d, 0xeb, 0x57, 0xed, 0xc8, 0xc9, + 0x9e, 0xb4, 0xb3, 0x1f, 0x13, 0x7a, 0x5c, 0xf7, 0x46, 0xe9, 0x7, 0x13, + 0x7c, 0x38, 0xf7, 0x3a, 0x6, 0xf7, 0x11, 0x6e, 0xd2, 0xfb, 0x29, 0x31, + 0x28, 0x67, 0x75, 0x58, 0x1e, 0xf7, 0xd7, 0xfb, 0x83, 0x15, 0x13, 0xbc, + 0x60, 0x5b, 0x4f, 0x68, 0x47, 0x1b, 0x60, 0x62, 0x9e, 0xab, 0xb8, 0xd7, + 0x9e, 0xc6, 0xc6, 0xb6, 0x86, 0x89, 0xa2, 0x1f, 0xe, 0x7c, 0xe8, 0x3b, + 0xe9, 0xf7, 0x9d, 0xe7, 0xde, 0xe9, 0x12, 0x93, 0xf7, 0x4c, 0x28, 0xee, + 0xf7, 0xbf, 0xf0, 0x13, 0x7a, 0x94, 0x89, 0x15, 0xf7, 0x4b, 0xb1, 0x6, + 0x13, 0xba, 0x68, 0xbb, 0xc2, 0x7b, 0xc0, 0x1b, 0xf7, 0x12, 0xf7, 0xa, + 0xea, 0xf7, 0x1f, 0xf7, 0x1b, 0xfb, 0x7, 0xea, 0xfb, 0x12, 0x55, 0x53, + 0x7d, 0x67, 0x5a, 0x1f, 0xf7, 0x77, 0xfb, 0x4c, 0x2d, 0x7, 0x13, 0x76, + 0xe0, 0xfc, 0x4c, 0x37, 0x6, 0xf7, 0x48, 0xf7, 0x10, 0x15, 0xd6, 0xb8, + 0xcd, 0xf7, 0x0, 0xf7, 0x0, 0xb4, 0x34, 0x59, 0x1e, 0x13, 0xba, 0x3e, + 0x4b, 0x4a, 0x34, 0x5d, 0x22, 0xa6, 0xf7, 0x3, 0x1e, 0xe, 0x7c, 0xe9, + 0xf7, 0xb2, 0xe9, 0x1, 0xba, 0xeb, 0xf7, 0xab, 0xeb, 0x3, 0xf8, 0x3a, + 0xf7, 0x8b, 0x15, 0xeb, 0xf7, 0x68, 0x2b, 0x78, 0x6, 0x98, 0x68, 0x65, + 0x91, 0x65, 0x1b, 0xfb, 0x49, 0x38, 0xfb, 0x11, 0xfb, 0x4, 0xfb, 0x2b, + 0xf7, 0x11, 0x35, 0xf7, 0x12, 0xeb, 0xe4, 0xb4, 0xc2, 0xd0, 0x1f, 0x55, + 0xd5, 0x5, 0x62, 0x52, 0x54, 0x68, 0x3c, 0x1b, 0x39, 0x39, 0xbb, 0xe9, + 0xdc, 0xcb, 0xca, 0xf3, 0xb2, 0xb3, 0x81, 0x7a, 0xab, 0x1f, 0xe, 0x7c, + 0xe9, 0x3a, 0xe9, 0xf7, 0x9d, 0xe9, 0xdc, 0xe9, 0x12, 0x99, 0xec, 0xf7, + 0xbe, 0xec, 0x2a, 0xf7, 0x44, 0x13, 0x7a, 0xf8, 0x2f, 0x89, 0x15, 0xf7, + 0x42, 0xe9, 0x3c, 0x6, 0x13, 0x7c, 0xf8, 0xaa, 0xfb, 0x72, 0x2d, 0xf7, + 0x11, 0xfb, 0x17, 0x7, 0xad, 0x65, 0x52, 0x9b, 0x53, 0x1b, 0xfb, 0x24, + 0x27, 0xfb, 0x3, 0xfb, 0xe, 0xfb, 0x11, 0xf4, 0xfb, 0x0, 0xf7, 0x23, + 0x1f, 0x13, 0xbc, 0xc2, 0xc1, 0x9c, 0xab, 0xb3, 0x1f, 0xfb, 0xc0, 0xf7, + 0x4e, 0x15, 0xd9, 0xcd, 0xc6, 0xe2, 0xe6, 0xc1, 0x4c, 0x3e, 0xfb, 0xd, + 0xfb, 0x7, 0x7a, 0x69, 0x3a, 0x47, 0xc8, 0xdb, 0x1e, 0xe, 0x7c, 0xe8, + 0xee, 0xea, 0xe3, 0xe9, 0x1, 0xf7, 0x22, 0xf7, 0x45, 0x15, 0xf8, 0x22, + 0x6, 0xf7, 0x3a, 0x9f, 0x29, 0xf7, 0x3, 0xfb, 0x37, 0x1b, 0xfb, 0xe, + 0xfb, 0x1f, 0x3c, 0xfb, 0x32, 0xfb, 0xe, 0xe4, 0xfb, 0x2, 0xf7, 0x41, + 0xe8, 0xe7, 0xaa, 0xb6, 0xd7, 0x1f, 0x5f, 0xda, 0x5, 0x6c, 0x4a, 0x44, + 0x6e, 0x3d, 0x1b, 0xfb, 0x10, 0x6b, 0xcc, 0xad, 0x86, 0x1f, 0x8d, 0xea, + 0x15, 0xc5, 0xa0, 0xce, 0xa9, 0xc9, 0x1b, 0xc9, 0xc9, 0x78, 0x46, 0x9e, + 0x1f, 0xe, 0x7c, 0xa, 0xe8, 0xeb, 0xe7, 0x1, 0xf7, 0x44, 0xf5, 0x3, + 0xcf, 0x16, 0xf8, 0x50, 0xe9, 0xfb, 0x7a, 0xf7, 0x8f, 0xf7, 0x7a, 0xe8, + 0xfb, 0x7a, 0xae, 0x6, 0xb1, 0x8d, 0xa2, 0xdb, 0xbd, 0xa9, 0x84, 0x80, + 0xb9, 0x1e, 0xb5, 0xe7, 0x5, 0x96, 0x35, 0x4d, 0x92, 0x5a, 0x1b, 0x24, + 0x53, 0x51, 0x24, 0x1f, 0x70, 0xfb, 0x0, 0x2e, 0xf7, 0x0, 0xfb, 0x8f, + 0xfb, 0x0, 0x7, 0xe, 0xfb, 0x26, 0xe4, 0xf1, 0xe3, 0xf7, 0x71, 0xe4, + 0x3e, 0xe3, 0x69, 0xa, 0x13, 0xec, 0x50, 0xa, 0xe9, 0xf2, 0x1f, 0xf7, + 0xc3, 0x7, 0x13, 0xea, 0xd7, 0xe4, 0xfb, 0x3c, 0x6e, 0x6, 0x13, 0xdc, + 0x5a, 0xa, 0xfb, 0x9, 0xee, 0x36, 0xf7, 0x21, 0xc0, 0xbe, 0x94, 0xa7, + 0xb1, 0x1f, 0x67, 0x7, 0x51, 0x88, 0x5e, 0x42, 0xa, 0x63, 0x33, 0x43, + 0x44, 0xb7, 0xd2, 0x1e, 0xe, 0x8b, 0xe9, 0xf7, 0x8b, 0xe8, 0xed, 0xe9, + 0x12, 0x91, 0xf7, 0x48, 0x2a, 0xec, 0xf7, 0x77, 0xec, 0x13, 0xf4, 0x91, + 0x16, 0xf7, 0x96, 0xe9, 0x3d, 0xf7, 0x61, 0x6, 0xbd, 0xd5, 0xc2, 0x94, + 0xa8, 0x1b, 0xc3, 0x98, 0x6a, 0x69, 0x1f, 0xfb, 0x59, 0x3d, 0x2d, 0xf7, + 0x96, 0xe9, 0x38, 0xf7, 0x52, 0x7, 0xd8, 0x71, 0xe5, 0xfb, 0x1f, 0x4e, + 0x5b, 0x75, 0x71, 0x59, 0x1e, 0xf7, 0x73, 0xfb, 0x48, 0x2d, 0x7, 0x13, + 0xec, 0xde, 0xfc, 0x4a, 0x6, 0x13, 0xf4, 0x38, 0x6, 0xe, 0x8b, 0xea, + 0xf7, 0x92, 0xeb, 0xd1, 0xf7, 0x23, 0x12, 0xf7, 0x83, 0xf7, 0x3, 0x29, + 0xed, 0x13, 0xf0, 0xf7, 0x83, 0xf8, 0x97, 0x79, 0xa, 0x6b, 0xa, 0xfb, + 0x36, 0xfd, 0x26, 0x15, 0xf8, 0x52, 0xea, 0xfb, 0x41, 0xf7, 0xf2, 0xfb, + 0x7f, 0x2b, 0x6, 0x13, 0xe8, 0xf7, 0x1d, 0xfb, 0x92, 0xfb, 0x43, 0x6, + 0xe, 0xfb, 0x26, 0xe7, 0xf8, 0x37, 0xe6, 0xc5, 0xf7, 0x24, 0x12, 0xf7, + 0xf4, 0xf7, 0xa, 0x35, 0xf3, 0x13, 0xf0, 0xf7, 0xf4, 0xf8, 0x96, 0x73, + 0xa, 0xfb, 0x6d, 0xfd, 0x49, 0x15, 0x73, 0x30, 0x5, 0x81, 0xc2, 0xc4, + 0x81, 0xc4, 0x1b, 0x13, 0xe8, 0xf7, 0x63, 0x8c, 0xf7, 0x1b, 0xc6, 0x1f, + 0xf8, 0x2c, 0xfc, 0x2, 0x30, 0xf7, 0x9a, 0xfb, 0xcd, 0x7, 0x46, 0x81, + 0x66, 0x31, 0x55, 0x4d, 0x98, 0x91, 0x6a, 0x1e, 0xe, 0x7c, 0xa, 0xe9, + 0xe8, 0xe9, 0x1, 0xec, 0xed, 0x3, 0x9c, 0x16, 0xf7, 0x46, 0xf7, 0x3e, + 0x6, 0xaf, 0xa2, 0xf7, 0xe, 0x28, 0x5, 0x70, 0x2d, 0xf7, 0x94, 0xe9, + 0xfb, 0x0, 0x6, 0xfb, 0x41, 0xf7, 0x25, 0xf7, 0x37, 0xf5, 0x5, 0xda, + 0xe9, 0xfb, 0xb1, 0x2d, 0xd2, 0x6, 0xfb, 0x1a, 0x39, 0x5, 0xf7, 0xff, + 0xfb, 0x46, 0x2d, 0xdb, 0xfc, 0x4a, 0x3b, 0x7, 0xe, 0x8b, 0xe9, 0xf8, + 0x4a, 0x40, 0xa, 0xf8, 0xa8, 0xfb, 0x92, 0x2d, 0xf7, 0x2f, 0xfc, 0x4a, + 0xfb, 0x41, 0x6, 0xe, 0x90, 0xe9, 0xf7, 0x99, 0xe9, 0x1, 0xc1, 0xe9, + 0xf7, 0x3, 0xe6, 0xf7, 0x5, 0xe7, 0x3, 0x73, 0x16, 0xf7, 0x8e, 0xe9, + 0x3d, 0xf7, 0x7b, 0x6, 0x9e, 0x9d, 0xa2, 0x9b, 0xa3, 0x1b, 0xb1, 0x93, + 0x6a, 0x77, 0x1f, 0xfb, 0xc7, 0xf7, 0x38, 0xe9, 0x42, 0xf7, 0x73, 0x7, + 0xad, 0xa4, 0xa6, 0x94, 0x9c, 0x1b, 0xac, 0x96, 0x6d, 0x81, 0x1f, 0xfb, + 0xd4, 0xf7, 0x35, 0xe9, 0x46, 0xf7, 0x72, 0x7, 0xd7, 0x5a, 0xc9, 0x38, + 0x62, 0x61, 0x79, 0x6c, 0x71, 0x1e, 0xb5, 0x72, 0x66, 0x92, 0x73, 0x1b, + 0x6c, 0x6d, 0x7f, 0x74, 0x78, 0x1f, 0xa1, 0xfb, 0x40, 0x2d, 0xd9, 0xfb, + 0x91, 0x3d, 0x7, 0xe, 0x8b, 0xe9, 0xf7, 0x91, 0xe9, 0x3b, 0xe8, 0x12, + 0x98, 0xf7, 0x48, 0xf7, 0x75, 0xea, 0x13, 0xb8, 0x9a, 0x16, 0xf7, 0x97, + 0xe9, 0x3a, 0xf7, 0x67, 0x6, 0xb7, 0xbd, 0xcf, 0x97, 0xa9, 0x1b, 0xd1, + 0x92, 0x55, 0x64, 0x1f, 0xfb, 0x42, 0x46, 0x2d, 0xf7, 0x82, 0xe9, 0x41, + 0xf7, 0x42, 0x7, 0xf7, 0x12, 0x60, 0xc7, 0xfb, 0xc, 0x52, 0x51, 0x79, + 0x6f, 0x61, 0x1e, 0x13, 0xd0, 0xac, 0xfb, 0x48, 0x2d, 0xde, 0xfb, 0x91, + 0x3a, 0x7, 0xe, 0x7c, 0xe9, 0xf7, 0xad, 0xe9, 0x4b, 0xa, 0xa9, 0xf7, + 0x6d, 0x15, 0xfb, 0x40, 0xf7, 0x2f, 0x4f, 0xf7, 0x6, 0xf7, 0xe, 0xf7, + 0x29, 0xce, 0xf7, 0x39, 0xf7, 0x31, 0xfb, 0x18, 0xdb, 0xfb, 0x1f, 0xfb, + 0x1d, 0xfb, 0x18, 0x3b, 0xfb, 0x31, 0x1e, 0xef, 0x16, 0xe2, 0xd6, 0xc3, + 0xe9, 0xe7, 0xdb, 0x50, 0x37, 0x28, 0x36, 0x64, 0x34, 0x3c, 0x31, 0xb2, + 0xee, 0x1e, 0xe, 0xfb, 0x22, 0xe3, 0xd6, 0xe2, 0xf7, 0x89, 0xe3, 0x40, + 0xe3, 0x12, 0x9c, 0xf7, 0x43, 0x2c, 0xea, 0xf7, 0xbd, 0xeb, 0x13, 0xda, + 0x9c, 0x55, 0x15, 0x33, 0xf7, 0xcc, 0xe3, 0xfb, 0x1d, 0xf7, 0xe, 0x7, + 0x7d, 0xa1, 0xc1, 0x6a, 0xd9, 0x1b, 0xf7, 0x1f, 0xef, 0xed, 0xf7, 0xd, + 0xf7, 0x28, 0xfb, 0x21, 0xcd, 0x25, 0x56, 0x52, 0x7b, 0x6d, 0x63, 0x1f, + 0x13, 0xe6, 0xac, 0xfb, 0x46, 0x33, 0xde, 0xfc, 0x2b, 0x7, 0x13, 0xda, + 0xe6, 0xf7, 0xb8, 0x15, 0xf7, 0x1, 0xf7, 0x4, 0x9e, 0xb4, 0xd9, 0xd1, + 0x5e, 0x38, 0x3c, 0x43, 0x58, 0x3e, 0x5f, 0xfb, 0x0, 0xa4, 0xf4, 0x1e, + 0xe, 0xf8, 0xda, 0x55, 0x15, 0x33, 0xfb, 0xcc, 0xe3, 0xf7, 0x1d, 0xf7, + 0xe, 0x7, 0x7d, 0x75, 0x55, 0x6a, 0x3d, 0x1b, 0xfb, 0x1f, 0x27, 0xed, + 0xf7, 0xd, 0xf7, 0x28, 0xf7, 0x21, 0xcd, 0xf1, 0xc0, 0xc4, 0x7b, 0x6d, + 0xb3, 0x1f, 0xac, 0xf7, 0x46, 0x33, 0x38, 0xfc, 0x2b, 0x7, 0x30, 0xf7, + 0xb8, 0x15, 0xf7, 0x1, 0xfb, 0x4, 0x9e, 0x62, 0x3d, 0x45, 0x5e, 0x38, + 0x3c, 0xd3, 0x58, 0xd8, 0xb7, 0xf7, 0x0, 0xa4, 0xf4, 0x1e, 0xe, 0x8b, + 0xe9, 0xf7, 0x90, 0xe9, 0x3b, 0xe9, 0x12, 0xf7, 0x28, 0xee, 0x13, 0xb0, + 0xac, 0x16, 0xf8, 0x21, 0xe9, 0xfb, 0x4b, 0xf7, 0x35, 0x6, 0xae, 0xba, + 0xd1, 0xd1, 0xd6, 0x1b, 0xa5, 0x8f, 0x81, 0x71, 0x8e, 0x1f, 0xe9, 0x99, + 0x5, 0xb3, 0x89, 0x77, 0xd7, 0x22, 0x1b, 0x41, 0x4b, 0x5e, 0x63, 0x55, + 0x1f, 0x13, 0xd0, 0xd2, 0xfb, 0x6a, 0x2d, 0xf7, 0x7, 0xfb, 0x90, 0xfb, + 0x7, 0x7, 0xe, 0x7a, 0xeb, 0xeb, 0xe3, 0x9b, 0xf7, 0x48, 0x2b, 0xeb, + 0x12, 0xcd, 0xed, 0x36, 0xe0, 0x36, 0xea, 0xf7, 0x84, 0xee, 0x40, 0xea, + 0x13, 0xe8, 0x80, 0xcd, 0x7a, 0x15, 0xed, 0xad, 0x6, 0x72, 0xb9, 0xc1, + 0x82, 0xc2, 0x1b, 0xf7, 0xb, 0xea, 0xc4, 0xe6, 0xf5, 0x21, 0x9f, 0x35, + 0x91, 0x1f, 0x13, 0xd3, 0x0, 0x2b, 0x93, 0x44, 0x91, 0xb2, 0x1a, 0xb5, + 0xe5, 0x90, 0xa2, 0xb7, 0xc2, 0x80, 0x72, 0xa7, 0x1e, 0x13, 0xe5, 0x0, + 0x5b, 0xee, 0xf7, 0x48, 0x28, 0x69, 0x7, 0xa0, 0x6e, 0x50, 0x98, 0x5c, + 0x1b, 0x2e, 0x20, 0x64, 0x25, 0xfb, 0x12, 0xf7, 0x2a, 0x81, 0xd6, 0x84, + 0x1f, 0x13, 0xe8, 0x80, 0xaf, 0x88, 0xed, 0x8a, 0x63, 0x1a, 0x69, 0x47, + 0x79, 0x53, 0x44, 0x54, 0x96, 0x9e, 0x73, 0x1e, 0x13, 0xe9, 0x0, 0xd0, + 0x29, 0x7, 0xe, 0x7c, 0xe6, 0xf7, 0x99, 0xe8, 0xf7, 0x18, 0x77, 0x1, + 0xf7, 0x11, 0xee, 0x3, 0xc4, 0xf7, 0xe5, 0x15, 0xcf, 0xfb, 0x57, 0x6, + 0xfb, 0x1d, 0xf7, 0x0, 0x77, 0xd7, 0xdc, 0xdd, 0xab, 0xa6, 0xd1, 0x1e, + 0x7a, 0xe8, 0x5, 0x7a, 0x65, 0xfb, 0x0, 0x5f, 0x47, 0x1b, 0x39, 0x86, + 0xb7, 0xb6, 0x1f, 0xf7, 0x42, 0xf7, 0x9e, 0xe8, 0xfb, 0x9e, 0xf7, 0x18, + 0x28, 0xfb, 0x18, 0x47, 0x7, 0xe, 0x7c, 0xe7, 0x3c, 0xe9, 0xf7, 0x91, + 0xe9, 0x12, 0x9a, 0xf7, 0x43, 0x2c, 0xea, 0xf7, 0x22, 0xf7, 0x42, 0x2b, + 0xeb, 0x2b, 0xf7, 0x43, 0x13, 0xb4, 0x9a, 0xf7, 0xed, 0x15, 0x13, 0xaa, + 0xdb, 0xfb, 0x4e, 0x6, 0xfb, 0x5, 0xd0, 0x4e, 0xf7, 0x1, 0xc0, 0xc2, + 0xa6, 0xa7, 0xa8, 0x1e, 0x13, 0x71, 0x61, 0xf7, 0x43, 0xe9, 0x7, 0x13, + 0x74, 0x3c, 0xf7, 0xef, 0xfb, 0x42, 0x2d, 0x6, 0x13, 0xb2, 0xd9, 0xfb, + 0x56, 0x6, 0x6c, 0x69, 0x65, 0x60, 0x4d, 0x1b, 0x38, 0x88, 0xc4, 0xa2, + 0x1f, 0xf7, 0xae, 0xfb, 0x43, 0x7, 0xe, 0xa0, 0x76, 0xf7, 0xed, 0xe9, + 0x1, 0xf7, 0x98, 0x16, 0xe3, 0x6, 0xf7, 0x3c, 0xf7, 0xed, 0x5, 0xe0, + 0xe9, 0xfb, 0x86, 0x2d, 0xc8, 0x6, 0xfb, 0x7, 0xfb, 0x82, 0xfb, 0x8, + 0xf7, 0x82, 0x5, 0xcf, 0xe9, 0xfb, 0x96, 0x2d, 0xe0, 0x6, 0xe, 0xa0, + 0x76, 0xf7, 0xed, 0xe9, 0x1, 0x79, 0xf7, 0x6d, 0xf7, 0x64, 0xf7, 0x67, + 0x3, 0xf7, 0x24, 0x16, 0xda, 0x6, 0xd5, 0xf7, 0x68, 0xe1, 0xfb, 0x68, + 0x5, 0xd7, 0x6, 0xf7, 0x2, 0xf7, 0xed, 0x5, 0xbc, 0xe9, 0xfb, 0x67, + 0x2d, 0xd3, 0x6, 0x4f, 0xfb, 0x57, 0x36, 0xf7, 0x6f, 0x5, 0x49, 0x6, + 0x3d, 0xfb, 0x6f, 0x4e, 0xf7, 0x57, 0x5, 0xd1, 0xe9, 0xfb, 0x6d, 0x2d, + 0xbc, 0x6, 0xe, 0x7c, 0xa, 0xe9, 0x1, 0x91, 0x16, 0xf7, 0x91, 0xe9, + 0x62, 0x6, 0xda, 0xd8, 0xdd, 0x3e, 0x5, 0x64, 0x2d, 0xf7, 0x92, 0xe9, + 0x37, 0x6, 0xfb, 0x28, 0xf7, 0x1c, 0xf7, 0x10, 0xf7, 0x7, 0x5, 0xdc, + 0xe9, 0xfb, 0x75, 0x2d, 0x9e, 0x6, 0x4f, 0x52, 0x49, 0xc4, 0x5, 0xa1, + 0xe9, 0xfb, 0x82, 0x2d, 0xe1, 0x6, 0xf7, 0x14, 0xfb, 0x9, 0xfb, 0x22, + 0xfb, 0x1a, 0x5, 0x36, 0x6, 0xe, 0xfb, 0x22, 0xe3, 0xf8, 0x29, 0xe3, + 0x12, 0x13, 0xc0, 0xb4, 0x55, 0x15, 0x33, 0xf7, 0xb4, 0xe3, 0x48, 0x7, + 0xf7, 0x9e, 0xf8, 0x29, 0x5, 0xd6, 0xe3, 0xfb, 0x80, 0x33, 0xc3, 0x6, + 0xfb, 0x14, 0xfb, 0x55, 0xfb, 0x6, 0xf7, 0x55, 0x5, 0xc6, 0xe3, 0xfb, + 0x86, 0x33, 0xd7, 0x6, 0xf7, 0x3b, 0xfb, 0xa8, 0x35, 0xfb, 0x15, 0x5, + 0xe, 0x8b, 0xe9, 0x2d, 0xf7, 0x51, 0xd4, 0xf7, 0x45, 0x2e, 0xe8, 0x12, + 0xea, 0xec, 0xf7, 0x7a, 0xec, 0x13, 0x6c, 0xdb, 0x16, 0xf8, 0x4b, 0xf7, + 0x51, 0x2a, 0x6, 0x13, 0xac, 0x2c, 0xfb, 0x51, 0x7, 0xf7, 0xb2, 0xf7, + 0xa9, 0x5, 0xcf, 0xfc, 0x3c, 0xfb, 0x45, 0xec, 0x7, 0x13, 0x9c, 0xdf, + 0xf7, 0x41, 0x7, 0xfb, 0xb1, 0xfb, 0xa6, 0x5, 0xe, 0xf7, 0x86, 0xe4, + 0x3, 0xf8, 0x6b, 0xfb, 0x88, 0x15, 0xe8, 0x7, 0x65, 0x64, 0x8b, 0x95, + 0x69, 0x1f, 0x75, 0x92, 0x84, 0xa5, 0xa1, 0x1a, 0xf7, 0x28, 0x7, 0xd4, + 0x6a, 0xde, 0x4d, 0xae, 0x1e, 0xc9, 0xae, 0xac, 0xdc, 0xd4, 0x1a, 0xf7, + 0x28, 0x7, 0xa1, 0x92, 0xa5, 0xa1, 0x92, 0x1e, 0x95, 0xad, 0xb2, 0x8b, + 0xb1, 0x1b, 0xe8, 0x7, 0x5b, 0x4f, 0x8b, 0x79, 0x5d, 0x1f, 0x56, 0x76, + 0x75, 0x52, 0x5c, 0x1a, 0xfb, 0x9, 0x7, 0xfb, 0x0, 0x82, 0x49, 0x22, + 0x7c, 0x1e, 0x2d, 0x7, 0xf4, 0x7c, 0x94, 0x49, 0xfb, 0x0, 0x1a, 0xfb, + 0x9, 0x7, 0x5c, 0xa1, 0x52, 0xc0, 0x76, 0x1e, 0x79, 0xb9, 0xc7, 0x8b, + 0xbb, 0x1b, 0xe, 0xfb, 0x79, 0x76, 0xfa, 0x7c, 0x6e, 0xa, 0xfb, 0x8e, + 0x15, 0xe5, 0xfa, 0x7c, 0x31, 0x6, 0xe, 0xf7, 0xa0, 0xe4, 0x3, 0xf7, + 0x14, 0xfb, 0x2c, 0x15, 0x2f, 0x7, 0xbb, 0xc6, 0x8b, 0x9d, 0xba, 0x1f, + 0xbf, 0x9f, 0xa2, 0xc5, 0xba, 0x1a, 0xf7, 0x9, 0x7, 0xf7, 0x0, 0x94, + 0xcc, 0xf4, 0x9b, 0x1e, 0xe9, 0x7, 0x22, 0x9b, 0x82, 0xcc, 0xf7, 0x0, + 0x1a, 0xf7, 0x9, 0x7, 0xba, 0x75, 0xc5, 0x56, 0x9f, 0x1e, 0x9d, 0x5c, + 0x50, 0x8b, 0x5b, 0x1b, 0x2e, 0x7, 0xb2, 0xb0, 0x8b, 0x81, 0xae, 0x1f, + 0xa2, 0x84, 0x91, 0x72, 0x74, 0x1a, 0xfb, 0x28, 0x7, 0x43, 0xac, 0x39, + 0xc9, 0x68, 0x1e, 0x4d, 0x68, 0x6a, 0x38, 0x42, 0x1a, 0xfb, 0x28, 0x7, + 0x74, 0x85, 0x72, 0x74, 0x84, 0x1e, 0x80, 0x67, 0x67, 0x8b, 0x64, 0x1b, + 0xe, 0xf7, 0x45, 0xef, 0x62, 0xf0, 0x12, 0x13, 0x40, 0xd1, 0xf7, 0x67, + 0x15, 0xcc, 0x51, 0x5, 0xab, 0xa0, 0x9d, 0xbe, 0xb3, 0x1b, 0xa8, 0xb2, + 0x75, 0x7a, 0xb2, 0x1f, 0x13, 0x80, 0x80, 0xa4, 0xa5, 0x82, 0xa3, 0x1b, + 0xb4, 0xc3, 0xaf, 0xe0, 0xaf, 0x1f, 0x4e, 0xc5, 0x5, 0x75, 0x7d, 0x6b, + 0x52, 0x71, 0x1b, 0x73, 0x74, 0x97, 0x99, 0x71, 0x1f, 0x13, 0x40, 0x9b, + 0x6b, 0x67, 0x9d, 0x5d, 0x1b, 0x47, 0x65, 0x45, 0x53, 0x6a, 0x1f, 0xe, + 0xfb, 0x11, 0x76, 0xf8, 0x4a, 0xf7, 0x31, 0x1, 0xf7, 0x7e, 0xf7, 0x17, + 0x3, 0xf7, 0x74, 0xfb, 0x26, 0x15, 0xf7, 0x2b, 0x6, 0x77, 0xf8, 0x22, + 0x5, 0xfb, 0x2, 0x6, 0x60, 0xf7, 0xa, 0x15, 0x5f, 0xb7, 0x69, 0xc1, + 0xc1, 0xb7, 0xad, 0xb7, 0xb7, 0x5f, 0xae, 0x55, 0x55, 0x5f, 0x68, 0x5f, + 0x1e, 0xe, 0x6f, 0x76, 0x1, 0xd5, 0xec, 0xd9, 0xec, 0xc8, 0xe9, 0x3, + 0xf7, 0x8d, 0x5a, 0x15, 0xec, 0xf7, 0x14, 0x6, 0xce, 0x95, 0xc5, 0xaf, + 0xc2, 0xb2, 0x5e, 0xd2, 0x18, 0x61, 0x41, 0x60, 0x73, 0x4a, 0x1b, 0xfb, + 0x6, 0x7d, 0xe7, 0xa2, 0xc9, 0xc0, 0xca, 0xda, 0xaf, 0xb1, 0x7c, 0x7a, + 0xa9, 0x1f, 0x54, 0xe9, 0xf7, 0x44, 0x2d, 0x6c, 0x7, 0x7b, 0x97, 0x72, + 0x94, 0x77, 0x8e, 0x8, 0xf2, 0x2a, 0x25, 0x7, 0xfb, 0xb, 0x72, 0x53, + 0x2e, 0x31, 0x1a, 0xfb, 0x24, 0xf7, 0x12, 0x5c, 0xbc, 0x7e, 0x1e, 0xe, + 0x84, 0x76, 0xf7, 0xb9, 0xe8, 0xf7, 0x34, 0xe8, 0x12, 0xf7, 0xf, 0xe9, + 0x5d, 0xec, 0x13, 0xe8, 0xdf, 0xaf, 0x15, 0xbe, 0x4b, 0x5, 0x93, 0x97, + 0xce, 0xb0, 0xbb, 0x1b, 0xa1, 0xac, 0x82, 0x83, 0xa6, 0x1f, 0x84, 0xa2, + 0xa3, 0x85, 0x9f, 0x1b, 0xd3, 0xb2, 0xb6, 0x71, 0xa, 0x70, 0x79, 0x64, + 0xa, 0x75, 0x94, 0x7c, 0x1b, 0x78, 0x61, 0x84, 0x85, 0x7f, 0x1f, 0x9f, + 0xac, 0x9b, 0xab, 0xae, 0x1a, 0xa1, 0x8b, 0xa3, 0x84, 0xa5, 0x1e, 0xf7, + 0x5f, 0xd8, 0xfb, 0x74, 0x6, 0x13, 0xf0, 0x7f, 0xa4, 0x86, 0xb4, 0xa2, + 0x6c, 0xa, 0xbd, 0x7c, 0x5e, 0xa0, 0x1f, 0xd5, 0xb9, 0x5, 0xb9, 0x70, + 0x5d, 0xc8, 0x63, 0xa, 0x76, 0x8f, 0x66, 0x93, 0x77, 0x1e, 0x3d, 0x3e, + 0xef, 0x6, 0x13, 0xe8, 0x92, 0x76, 0x8c, 0x76, 0x75, 0x1a, 0x8a, 0x49, + 0x66, 0x49, 0x60, 0x6a, 0x8, 0xe, 0xcf, 0xe3, 0xf7, 0x92, 0xe3, 0x1, + 0xdc, 0xe5, 0xf7, 0x97, 0xe5, 0x3, 0xc1, 0xf5, 0x15, 0xc8, 0x52, 0xc8, + 0xc4, 0x5, 0x71, 0xae, 0xb8, 0x7f, 0xb9, 0x1b, 0xb8, 0xb7, 0x98, 0xa5, + 0xad, 0x1f, 0xc9, 0x51, 0xc6, 0xc6, 0x4c, 0xc5, 0x5, 0xa3, 0xaa, 0x98, + 0xb5, 0xb5, 0x1a, 0xb7, 0x7f, 0xb7, 0x72, 0xac, 0x1e, 0xca, 0xc5, 0x51, + 0xc4, 0x4e, 0x50, 0x68, 0xa7, 0x5a, 0x98, 0x5b, 0x8a, 0x19, 0x5f, 0x8a, + 0x60, 0x7f, 0x6a, 0x72, 0x4e, 0xc4, 0x18, 0x4f, 0x50, 0xca, 0x51, 0x5, + 0x73, 0x6a, 0x7f, 0x60, 0x61, 0x1a, 0x61, 0x97, 0x60, 0xa4, 0x6b, 0x1e, + 0xc0, 0xf7, 0xa, 0x15, 0xd0, 0xc4, 0xc5, 0xd3, 0xd3, 0xc5, 0x51, 0x46, + 0x45, 0x51, 0x52, 0x43, 0x43, 0x52, 0xc4, 0xd1, 0x1e, 0xe, 0x8b, 0xe2, + 0xc4, 0xc1, 0xb5, 0xc0, 0xf7, 0x4a, 0xe2, 0x1, 0x95, 0xf7, 0x84, 0xf3, + 0xf7, 0x80, 0x3, 0xf7, 0x22, 0x16, 0xf7, 0xd3, 0xe2, 0xfb, 0x5, 0xc3, + 0xf7, 0x25, 0xc1, 0xfb, 0x25, 0xb6, 0xf7, 0x25, 0xc0, 0xfb, 0x20, 0x6, + 0xf7, 0x34, 0xf7, 0x4a, 0x5, 0xd8, 0xe2, 0xfb, 0x80, 0x34, 0xb7, 0x6, + 0x2b, 0xfb, 0x7, 0x2a, 0xf7, 0x7, 0x5, 0xb8, 0xe2, 0xfb, 0x84, 0x34, + 0xdc, 0x6, 0xf7, 0x36, 0xfb, 0x4a, 0x5, 0xfb, 0x24, 0x56, 0xf7, 0x26, + 0x60, 0xfb, 0x26, 0x55, 0xf7, 0x26, 0x53, 0xfb, 0x5, 0x6, 0xe, 0xfb, + 0x2e, 0x76, 0xf9, 0xe6, 0x6e, 0xa, 0xf7, 0xb1, 0x15, 0xe5, 0xf8, 0x1a, + 0x31, 0x6, 0xfd, 0xe6, 0x4, 0xe5, 0xf8, 0x1b, 0x31, 0x6, 0xe, 0x45, + 0xe8, 0x2e, 0xf7, 0x40, 0xf7, 0xd5, 0xf7, 0x40, 0xfb, 0x1, 0xe9, 0x12, + 0xe3, 0xf1, 0xf7, 0x60, 0xf1, 0x13, 0x9c, 0xe3, 0x45, 0x15, 0xf7, 0x84, + 0x6, 0xe8, 0xcd, 0xa4, 0xd4, 0xb1, 0x7d, 0x9f, 0x75, 0x9f, 0x1f, 0xa5, + 0x96, 0xb3, 0xaa, 0xc1, 0x1a, 0xaf, 0x74, 0xab, 0x6b, 0xa2, 0x1e, 0xfb, + 0x91, 0xf7, 0x41, 0x5, 0x8b, 0x86, 0x8e, 0x90, 0x1a, 0x96, 0x98, 0x8c, + 0xa2, 0x1e, 0xf7, 0x2e, 0x4c, 0x6, 0x13, 0xac, 0xf1, 0xf7, 0x40, 0xfb, + 0x88, 0x6, 0x49, 0x36, 0x78, 0x26, 0x6e, 0xa0, 0x74, 0xa1, 0x78, 0x1f, + 0x73, 0x7b, 0x66, 0x72, 0x50, 0x1a, 0x59, 0xa7, 0x71, 0xbb, 0x6b, 0x1e, + 0xf7, 0x5e, 0xfb, 0x1d, 0x5, 0xa1, 0x7d, 0x8e, 0x88, 0x82, 0x1a, 0x82, + 0x7e, 0x8a, 0x7a, 0x1e, 0xfb, 0x3a, 0xda, 0x6, 0x13, 0x6c, 0x25, 0x6, + 0xf7, 0xac, 0xcc, 0x15, 0xfb, 0x37, 0xf7, 0x1, 0x5, 0x80, 0x92, 0x82, + 0x97, 0x97, 0x1a, 0xa0, 0xa5, 0x95, 0x98, 0x92, 0x1e, 0xf7, 0x48, 0xfb, + 0xd, 0x5, 0x94, 0x86, 0x92, 0x83, 0x82, 0x1a, 0x71, 0x68, 0x84, 0x7a, + 0x89, 0x1e, 0xe, 0xf8, 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x14, 0xf7, 0x17, + 0xde, 0xf7, 0x16, 0x3, 0xf7, 0xea, 0xf8, 0x79, 0x15, 0xf7, 0x16, 0xf7, + 0x20, 0xfb, 0x16, 0x6, 0xfb, 0x6a, 0xfb, 0x20, 0x15, 0xf7, 0x17, 0xf7, + 0x20, 0xfb, 0x17, 0x6, 0xe, 0x79, 0xb8, 0xe7, 0xb9, 0xf7, 0x8d, 0xba, + 0xd5, 0xb8, 0x1, 0x8b, 0xb8, 0xf3, 0xb9, 0xf7, 0xfc, 0xb8, 0x3, 0xf7, + 0xad, 0x4, 0xfb, 0x39, 0xf7, 0x1a, 0xfb, 0x1a, 0xf7, 0x39, 0xf7, 0x3a, + 0xf7, 0x1b, 0xf7, 0x1a, 0xf7, 0x39, 0xf7, 0x39, 0xfb, 0x1b, 0xf7, 0x1a, + 0xfb, 0x3a, 0xfb, 0x39, 0xfb, 0x1a, 0xfb, 0x1a, 0xfb, 0x39, 0x1e, 0xb8, + 0x16, 0xf7, 0x21, 0xf7, 0x5, 0xf7, 0x5, 0xf7, 0x21, 0xf7, 0x21, 0xf7, + 0x7, 0xfb, 0x5, 0xfb, 0x21, 0xfb, 0x21, 0xfb, 0x7, 0xfb, 0x5, 0xfb, + 0x21, 0xfb, 0x21, 0xfb, 0x5, 0xf7, 0x5, 0xf7, 0x21, 0x1e, 0xf8, 0x9, + 0x49, 0x15, 0x71, 0x73, 0x61, 0x73, 0x64, 0x1b, 0x46, 0x5a, 0xc7, 0xcc, + 0xcd, 0xc0, 0xc5, 0xcb, 0xae, 0xa7, 0x79, 0x75, 0xa1, 0x1f, 0xb1, 0xb2, + 0x5, 0xa8, 0x6a, 0x5f, 0x9e, 0x5e, 0x1b, 0x37, 0x3b, 0x43, 0x29, 0x35, + 0xcd, 0x35, 0xf2, 0xc4, 0xc9, 0xb7, 0xa0, 0x9b, 0x1f, 0xe, 0xf7, 0x58, + 0xde, 0xf7, 0x71, 0xdb, 0x12, 0xf7, 0x27, 0xcf, 0xf7, 0xd, 0xce, 0x48, + 0xf7, 0x9, 0x13, 0xe8, 0xf7, 0xe4, 0xf7, 0x60, 0x15, 0xf7, 0x9, 0xdd, + 0x59, 0x6, 0x13, 0xf0, 0xf7, 0x23, 0x7, 0xde, 0x86, 0xcf, 0xfb, 0x8, + 0x5c, 0x59, 0x7c, 0x77, 0x6d, 0x1e, 0x9f, 0x47, 0x5, 0x99, 0xa5, 0xc6, + 0x94, 0xa2, 0x1b, 0xad, 0x9e, 0x7e, 0x62, 0x1f, 0x94, 0x77, 0x75, 0x8e, + 0x76, 0x1b, 0x24, 0x74, 0x3d, 0x5b, 0x44, 0xb8, 0x4a, 0xce, 0xa7, 0xa7, + 0xa0, 0xa8, 0xa0, 0x1f, 0xf7, 0x12, 0x4, 0x63, 0x80, 0x6b, 0x56, 0x67, + 0x1b, 0x6d, 0x7f, 0xa4, 0x9d, 0xb8, 0xb6, 0x95, 0xb1, 0x9a, 0x9a, 0x88, + 0x89, 0x95, 0x1f, 0xe, 0x7b, 0xa, 0xba, 0xf8, 0x8b, 0x3, 0xf7, 0xa3, + 0xf7, 0x98, 0x15, 0xf7, 0x77, 0xfb, 0x52, 0xc1, 0xc9, 0xfb, 0x2d, 0xf7, + 0x13, 0xf7, 0x2b, 0xf7, 0x10, 0x54, 0xca, 0x5, 0xfc, 0x54, 0xfb, 0x4e, + 0x15, 0xf7, 0x6c, 0xfb, 0x52, 0xc2, 0xc9, 0xfb, 0x28, 0xf7, 0x13, 0xf7, + 0x26, 0xf7, 0x10, 0x53, 0xca, 0x5, 0xe, 0xf7, 0x10, 0x76, 0xf7, 0x5d, + 0xf7, 0x1, 0x1, 0xf8, 0x45, 0xeb, 0x3, 0xd2, 0xf7, 0xc4, 0x15, 0xf7, + 0xfe, 0xfb, 0x5d, 0xeb, 0xf7, 0xca, 0xfc, 0x5e, 0x6, 0xe, 0x79, 0xb8, + 0xf7, 0xf6, 0xb9, 0xf7, 0x0, 0xb8, 0x1, 0x8b, 0xb8, 0xf7, 0x2f, 0xbb, + 0xf7, 0x5, 0xbd, 0xf7, 0x24, 0xb8, 0x3, 0xf7, 0xad, 0x4, 0xfb, 0x39, + 0xf7, 0x1b, 0xfb, 0x1a, 0xf7, 0x39, 0xf7, 0x3a, 0xf7, 0x1a, 0xf7, 0x1a, + 0xf7, 0x39, 0xf7, 0x39, 0xfb, 0x1a, 0xf7, 0x1a, 0xfb, 0x3a, 0xfb, 0x39, + 0xfb, 0x1b, 0xfb, 0x1a, 0xfb, 0x39, 0x1e, 0xb8, 0x16, 0xf7, 0x20, 0xf7, + 0x7, 0xf7, 0x6, 0xf7, 0x20, 0xf7, 0x22, 0xf7, 0x5, 0xfb, 0x6, 0xfb, + 0x20, 0xfb, 0x20, 0xfb, 0x5, 0xfb, 0x6, 0xfb, 0x22, 0xfb, 0x20, 0xfb, + 0x7, 0xf7, 0x6, 0xf7, 0x20, 0x1e, 0xf7, 0x2f, 0xfb, 0x27, 0x15, 0xbb, + 0xf7, 0x8, 0xc1, 0x6, 0xbe, 0xfb, 0x8, 0x5, 0xc5, 0x6, 0x54, 0xf7, + 0x13, 0x5, 0x9e, 0x91, 0xaf, 0xa4, 0xc7, 0x1a, 0xed, 0x42, 0x86, 0xfb, + 0x1e, 0x8d, 0x1e, 0xbb, 0xfb, 0x29, 0x15, 0xf2, 0x7, 0xde, 0xa9, 0x83, + 0x5f, 0x5f, 0x64, 0x84, 0x41, 0x1f, 0xe, 0xf8, 0x8d, 0xdb, 0x1, 0xe3, + 0xf8, 0x3c, 0x3, 0xe3, 0xf8, 0x8d, 0x15, 0xf8, 0x3c, 0xdb, 0xfc, 0x3c, + 0x6, 0xe, 0xf7, 0x87, 0xe6, 0xf7, 0x53, 0xe6, 0x1, 0xf5, 0xea, 0xf7, + 0x5b, 0xe9, 0x3, 0xf5, 0xf8, 0x41, 0x15, 0x24, 0xe1, 0x38, 0xf7, 0x0, + 0xf7, 0x1, 0xe0, 0xde, 0xf2, 0xf3, 0x36, 0xde, 0xfb, 0x1, 0xfb, 0x0, + 0x35, 0x38, 0x23, 0x1e, 0xea, 0x16, 0xc1, 0xb6, 0xb5, 0xc3, 0xc4, 0xb6, + 0x61, 0x55, 0x56, 0x60, 0x61, 0x52, 0x53, 0x60, 0xb5, 0xc0, 0x1e, 0xe, + 0xa3, 0xdc, 0xf7, 0x4a, 0xe3, 0xf7, 0x20, 0x67, 0xa, 0xeb, 0x3, 0xd2, + 0xf7, 0xb3, 0x15, 0xf7, 0x48, 0xfb, 0x27, 0xeb, 0xf7, 0x27, 0xf7, 0x4a, + 0xe3, 0xfb, 0x4a, 0xf7, 0x20, 0x2b, 0xfb, 0x20, 0xfb, 0x48, 0x6, 0xfb, + 0xf3, 0x4, 0xf8, 0x5e, 0xdc, 0xfc, 0x5e, 0x6, 0xe, 0xf7, 0x7a, 0xd6, + 0xf7, 0x39, 0xf7, 0x26, 0x3e, 0xd8, 0x12, 0xf8, 0x0, 0xdd, 0x13, 0xb0, + 0xf7, 0x2d, 0xf7, 0x7a, 0x15, 0xf7, 0xb9, 0xd6, 0xfb, 0x38, 0x6, 0xf7, + 0x1, 0xe0, 0x5, 0xa7, 0xa0, 0xa5, 0xb0, 0xb7, 0x1a, 0xae, 0x6e, 0xe4, + 0xfb, 0x5, 0x54, 0x57, 0x73, 0x56, 0x6c, 0x1e, 0x13, 0xd0, 0x46, 0xde, + 0x7, 0x13, 0xb0, 0xa1, 0x87, 0xba, 0xc6, 0xa4, 0xaf, 0x82, 0x64, 0x78, + 0x82, 0x7c, 0x79, 0x7c, 0x1e, 0xfb, 0x4c, 0xfb, 0x27, 0x5, 0xe, 0xf7, + 0x72, 0xd6, 0xee, 0xd4, 0xf7, 0x27, 0x77, 0x12, 0xf7, 0x83, 0xf7, 0x50, + 0x3b, 0xdb, 0x4e, 0xdc, 0x13, 0xe4, 0xf7, 0x2c, 0xf7, 0x96, 0x15, 0x71, + 0xcb, 0xb2, 0x81, 0xb3, 0x1b, 0xe9, 0xc5, 0xc6, 0xce, 0xae, 0x7a, 0xae, + 0x6d, 0xa2, 0x1f, 0x13, 0xe8, 0x97, 0x97, 0x9a, 0xa1, 0xab, 0x1a, 0xd7, + 0x50, 0xac, 0x4a, 0x57, 0x54, 0x78, 0x6a, 0x69, 0x1e, 0xb5, 0x4b, 0x5, + 0x9d, 0xaa, 0xaf, 0xa1, 0xaf, 0x1b, 0x9c, 0xa2, 0x84, 0x70, 0x70, 0x75, + 0x80, 0x70, 0x1f, 0x13, 0xf0, 0x88, 0x7b, 0x8c, 0x63, 0x1b, 0x42, 0xce, + 0x7, 0x13, 0xe4, 0xb6, 0x9c, 0x74, 0x72, 0x6e, 0x73, 0x75, 0x64, 0x1f, + 0x5e, 0x8c, 0x66, 0x99, 0x67, 0x9d, 0x8, 0xe, 0xf8, 0xa5, 0x76, 0xf7, + 0x2d, 0x77, 0x1, 0xf7, 0x4e, 0xf8, 0x90, 0x15, 0xf7, 0x89, 0xcc, 0x6b, + 0xe3, 0xfb, 0x7b, 0x24, 0x5, 0xe, 0xfb, 0xd, 0x76, 0xf7, 0x36, 0xd9, + 0x3d, 0xe5, 0xf7, 0x83, 0xe5, 0x12, 0x9a, 0xf7, 0x45, 0x2a, 0xec, 0xf7, + 0x1c, 0xf7, 0x46, 0x2a, 0xec, 0x2a, 0xf7, 0x44, 0x13, 0xd9, 0x0, 0xea, + 0xfb, 0x22, 0x15, 0xec, 0xf7, 0x51, 0x6, 0x77, 0x9e, 0xaa, 0x83, 0xab, + 0x1b, 0xc0, 0xc6, 0xa1, 0xa9, 0xa2, 0x1f, 0x58, 0x7, 0x13, 0xb8, 0x80, + 0xf7, 0x44, 0xe5, 0x6, 0x13, 0xba, 0x0, 0x3c, 0xf7, 0xdd, 0xfb, 0x46, + 0x31, 0x6, 0x13, 0xd9, 0x0, 0xdc, 0xfb, 0x56, 0x6, 0x6b, 0x71, 0x55, + 0x72, 0x5c, 0x1b, 0x5b, 0x61, 0xa0, 0xca, 0x1f, 0xf7, 0x95, 0xfb, 0x45, + 0x31, 0x7, 0x13, 0xd6, 0x0, 0xdb, 0x6, 0xe, 0x5a, 0x76, 0xf9, 0x0, + 0xa9, 0x1, 0xf7, 0xd4, 0xc2, 0xeb, 0xc0, 0x3, 0xf7, 0xd4, 0x45, 0x15, + 0xc2, 0xf9, 0x0, 0xeb, 0xfd, 0x0, 0xc0, 0xf9, 0x0, 0xc8, 0xa9, 0xfb, + 0x98, 0x6, 0xfb, 0x60, 0x21, 0x4f, 0xfb, 0xc, 0xfb, 0x2, 0xf5, 0x57, + 0xf7, 0x5b, 0x8a, 0x1f, 0xe, 0xf7, 0x39, 0xf7, 0x4e, 0x1, 0xf7, 0x58, + 0xf7, 0x96, 0x15, 0x58, 0xba, 0x61, 0xc4, 0xc4, 0xba, 0xb5, 0xbe, 0xbe, + 0x5c, 0xb5, 0x52, 0x52, 0x5c, 0x61, 0x58, 0x1e, 0xe, 0xfb, 0x4d, 0x76, + 0xf7, 0x62, 0x77, 0x12, 0xf7, 0x91, 0x16, 0x80, 0x2d, 0x5, 0x8f, 0x92, + 0x9a, 0x8d, 0x99, 0x1b, 0x9d, 0x9b, 0x85, 0x77, 0x7d, 0x7e, 0x83, 0x7b, + 0x1f, 0x13, 0xc0, 0x7c, 0x74, 0x90, 0x94, 0x82, 0x1f, 0x70, 0x53, 0x5, + 0x79, 0xa4, 0xa6, 0x81, 0xa9, 0x1b, 0xc9, 0xb1, 0xb8, 0xc2, 0xc8, 0x60, + 0x9a, 0x7b, 0x8f, 0x1f, 0xa5, 0x7, 0xe, 0xf7, 0x7a, 0xd8, 0xf7, 0xc9, + 0x77, 0x12, 0xf7, 0x3a, 0xf7, 0x45, 0x3b, 0xdb, 0x13, 0xe0, 0xf7, 0x2d, + 0xf7, 0x7a, 0x15, 0xf7, 0xba, 0xd8, 0x23, 0xf7, 0xc9, 0x6, 0xfb, 0x45, + 0x75, 0x5, 0x3f, 0x7, 0x13, 0xd0, 0xec, 0x91, 0x5, 0xfb, 0x6d, 0xfb, + 0x2, 0x7, 0xe, 0xf7, 0x58, 0xde, 0xf7, 0x6e, 0xde, 0x1, 0xf7, 0x27, + 0xcf, 0xf7, 0x3f, 0xce, 0x3, 0xf7, 0x27, 0xf8, 0x18, 0x15, 0x21, 0xca, + 0x35, 0xe7, 0xda, 0xd3, 0xd6, 0xf7, 0x9, 0xe9, 0x53, 0xed, 0x29, 0x2a, + 0x54, 0x24, 0x32, 0x1e, 0xcf, 0x89, 0x15, 0xbe, 0xa7, 0xc7, 0xc5, 0xc5, + 0xa6, 0x4c, 0x5d, 0x49, 0x66, 0x60, 0x5b, 0x53, 0x6d, 0xbe, 0xc3, 0x1e, + 0xe, 0x7b, 0xa, 0xbc, 0xf8, 0x8b, 0x3, 0xf0, 0xd1, 0x15, 0xf7, 0x77, + 0xf7, 0x52, 0xfb, 0x74, 0xf7, 0x4e, 0x54, 0x4c, 0xf7, 0x2b, 0xfb, 0x10, + 0xfb, 0x2d, 0xfb, 0x13, 0x5, 0xf7, 0xb5, 0x4d, 0x15, 0xf7, 0x6c, 0xf7, + 0x52, 0xfb, 0x69, 0xf7, 0x4e, 0x53, 0x4c, 0xf7, 0x26, 0xfb, 0x10, 0xfb, + 0x28, 0xfb, 0x13, 0x5, 0xe, 0x64, 0x76, 0xa2, 0xc4, 0x5a, 0x76, 0xf7, + 0x6, 0xca, 0xf7, 0x43, 0xd0, 0x8b, 0xf7, 0x4f, 0xe1, 0x77, 0x12, 0xbf, + 0xd5, 0xf8, 0x8, 0xd7, 0x13, 0xdf, 0x80, 0xf7, 0xf0, 0xcb, 0x15, 0xf7, + 0x2a, 0x5f, 0x3f, 0x52, 0xf7, 0x59, 0xc4, 0x5e, 0xb7, 0xb8, 0xca, 0x5e, + 0xf7, 0x41, 0x42, 0x6, 0xfb, 0x2d, 0xfb, 0x52, 0x5, 0xe3, 0x9c, 0x15, + 0xc9, 0xd7, 0x5, 0x3f, 0x7, 0xfc, 0x71, 0xfb, 0x10, 0x15, 0x13, 0x3f, + 0x80, 0x65, 0xa, 0x50, 0xc6, 0x5, 0xfd, 0x12, 0xfb, 0xea, 0x15, 0xf7, + 0xa0, 0xd0, 0x2d, 0xf7, 0xa4, 0x6, 0xfb, 0x37, 0x78, 0x5, 0x47, 0x7, + 0xe4, 0x90, 0x5, 0xfb, 0x52, 0x27, 0x7, 0xe, 0x51, 0xce, 0xf7, 0x33, + 0xf7, 0x16, 0x47, 0xcf, 0x8a, 0xd1, 0x8b, 0xf7, 0x52, 0xe2, 0x77, 0xb0, + 0x77, 0x12, 0xbc, 0xd1, 0x13, 0xcb, 0xf8, 0x20, 0x97, 0x15, 0x51, 0xf7, + 0x90, 0xce, 0xfb, 0x22, 0x7, 0xf7, 0xa, 0xeb, 0xa2, 0xaa, 0xb3, 0x1a, + 0xa9, 0x71, 0xdb, 0x29, 0x5d, 0x62, 0x75, 0x67, 0x6d, 0x1e, 0x43, 0xd2, + 0x7, 0x13, 0xab, 0x9e, 0x87, 0xb6, 0xbd, 0xa1, 0xac, 0x82, 0x69, 0x79, + 0x82, 0x7e, 0xfb, 0x41, 0xfb, 0x24, 0x1e, 0x13, 0x9b, 0xfc, 0x4f, 0xf7, + 0xb1, 0x15, 0xf7, 0x91, 0xd1, 0x34, 0xf7, 0xa8, 0x6, 0x13, 0x9d, 0xfb, + 0x2e, 0x78, 0x5, 0x46, 0x7, 0xdf, 0x90, 0x5, 0xfb, 0x55, 0x2b, 0x7, + 0xc7, 0xfc, 0x0, 0x15, 0x65, 0xa, 0x50, 0xc6, 0x5, 0xe, 0x5e, 0xc4, + 0x58, 0x76, 0xaa, 0x76, 0xf5, 0xcb, 0xf7, 0x3c, 0xd0, 0xe5, 0xcb, 0xc8, + 0xcd, 0x91, 0x77, 0xb0, 0x77, 0x12, 0x13, 0x5e, 0x80, 0xf7, 0xe7, 0xc3, + 0x15, 0xf7, 0x29, 0x6, 0x13, 0x9e, 0x80, 0x5f, 0x41, 0x52, 0xf7, 0x56, + 0xc4, 0x5d, 0xb7, 0xb9, 0xcb, 0x5d, 0xf7, 0x46, 0x45, 0x7, 0xfb, 0x2d, + 0xfb, 0x56, 0x5, 0xe3, 0x9b, 0x15, 0xc8, 0xd9, 0x5, 0x3d, 0x7, 0xfc, + 0xa8, 0xf7, 0x5f, 0x15, 0x71, 0xc7, 0xaf, 0x82, 0xb3, 0x1b, 0xe1, 0xbe, + 0xc1, 0xc9, 0xaa, 0x7c, 0xaa, 0x70, 0x9f, 0x1f, 0x96, 0x95, 0x98, 0xa0, + 0xa9, 0x1a, 0xc9, 0x56, 0xa8, 0x4f, 0x5b, 0x57, 0x7b, 0x6d, 0x6b, 0x1e, + 0xb4, 0x56, 0x5, 0x9d, 0x99, 0xad, 0x9a, 0xb0, 0x1b, 0xa4, 0x9f, 0x83, + 0x79, 0x71, 0x76, 0x82, 0x73, 0x1f, 0x55, 0x4b, 0xca, 0x6, 0xb2, 0x9a, + 0x76, 0x75, 0x71, 0x75, 0x76, 0x69, 0x1f, 0x89, 0x6, 0x61, 0x8c, 0x69, + 0x98, 0x69, 0x9a, 0x8, 0xa8, 0xfc, 0x13, 0x15, 0x13, 0x3e, 0x80, 0x65, + 0xa, 0x5, 0x13, 0x5d, 0x0, 0x50, 0xc6, 0x5, 0xe, 0xfb, 0x26, 0xe7, + 0xf7, 0xf1, 0xf7, 0x2e, 0x12, 0xed, 0xec, 0xba, 0xf7, 0x44, 0x7c, 0xed, + 0x13, 0xe8, 0xf7, 0xad, 0xf7, 0x59, 0x15, 0x57, 0x7f, 0xfb, 0x17, 0x66, + 0xfb, 0xf, 0x1a, 0xfb, 0x2, 0xeb, 0x4e, 0xf7, 0xd, 0xc2, 0xd9, 0x9a, + 0x9f, 0xc0, 0x1e, 0xf7, 0x24, 0x29, 0x3f, 0x7, 0x85, 0x6f, 0x6d, 0x86, + 0x6e, 0x1b, 0x48, 0x55, 0xa3, 0xc2, 0xd5, 0xe9, 0x9c, 0xe4, 0x99, 0x1f, + 0xf7, 0x13, 0x7, 0x13, 0x50, 0x2a, 0x6, 0x13, 0xf0, 0x64, 0xf7, 0x7, + 0x15, 0x60, 0xb2, 0x69, 0xbc, 0x1e, 0x13, 0x50, 0xbc, 0xb2, 0xad, 0xb6, + 0xb6, 0x64, 0xad, 0x5a, 0x5a, 0x64, 0x69, 0x60, 0x1f, 0xe, 0x8b, 0xe5, + 0xcc, 0xe5, 0xf7, 0x7a, 0xe5, 0xf7, 0x6f, 0x77, 0x44, 0xa, 0xf7, 0x19, + 0xf9, 0x3c, 0x15, 0xf7, 0xcf, 0x40, 0xa5, 0xc5, 0xfb, 0xbe, 0xf7, 0xd, + 0x5, 0xfb, 0x4d, 0xfd, 0xa4, 0x22, 0xa, 0x8b, 0xe5, 0xcc, 0xe5, 0xf7, + 0x6d, 0xe5, 0xf7, 0x7c, 0x77, 0x44, 0xa, 0x82, 0x16, 0x20, 0xa, 0xfb, + 0x60, 0xf7, 0xfc, 0x15, 0xf7, 0xd2, 0xd5, 0x62, 0xf4, 0xfb, 0xbd, 0x6a, + 0xa, 0xe, 0x8b, 0xe4, 0xcd, 0xe4, 0xf7, 0x6d, 0xe4, 0xf7, 0x7a, 0x77, + 0x44, 0xa, 0xf7, 0x20, 0xf8, 0xef, 0x15, 0xf7, 0x2c, 0xf1, 0xf7, 0x2b, + 0x25, 0xc7, 0xaf, 0xfb, 0x36, 0xf7, 0x21, 0x5, 0x2a, 0x6, 0xfb, 0x39, + 0xfb, 0x20, 0x5, 0x33, 0xfd, 0x14, 0x22, 0xa, 0x8b, 0xe5, 0xcc, 0xe5, + 0xf7, 0x6d, 0xe5, 0xc7, 0xde, 0x74, 0xde, 0x8f, 0x77, 0x12, 0x82, 0xf7, + 0x97, 0xf4, 0xf7, 0x92, 0x13, 0xeb, 0xde, 0xf9, 0x10, 0x15, 0xe3, 0x71, + 0x5, 0xaf, 0x99, 0x98, 0xa5, 0xa7, 0x1b, 0xaf, 0x9f, 0x78, 0x7b, 0xa4, + 0x1f, 0x13, 0xf7, 0x7e, 0x9f, 0xa1, 0x7f, 0xae, 0x1b, 0xd9, 0xbd, 0xc6, + 0xca, 0x9a, 0x1f, 0x35, 0xa4, 0x5, 0x75, 0x84, 0x7d, 0x61, 0x66, 0x1b, + 0x6d, 0x76, 0x99, 0x9a, 0x75, 0x1f, 0x13, 0xeb, 0x9a, 0x74, 0x73, 0x9b, + 0x66, 0x1b, 0x38, 0x5e, 0x49, 0x56, 0x7c, 0x1f, 0x2f, 0xfd, 0x10, 0x22, + 0xa, 0x8b, 0xe3, 0xcc, 0xe3, 0xf7, 0x69, 0xe3, 0xdf, 0xf7, 0xe, 0x44, + 0xa, 0xf7, 0xda, 0xf9, 0x10, 0x15, 0xf7, 0x3, 0xf7, 0xe, 0x6b, 0xa, + 0xfb, 0x4b, 0xfb, 0xe, 0x15, 0xf7, 0x5, 0xf7, 0xe, 0xfb, 0x5, 0x6, + 0xfb, 0x2c, 0xfd, 0x8a, 0x22, 0xa, 0x8b, 0xe8, 0xcf, 0xe9, 0xf7, 0x7e, + 0xe8, 0x9e, 0xc9, 0xd7, 0xc9, 0x1, 0xf7, 0x4d, 0xcc, 0xdb, 0xcb, 0x3, + 0xf7, 0x4d, 0xf9, 0x51, 0x15, 0x54, 0xba, 0x5e, 0xc5, 0xc4, 0xba, 0xb8, + 0xc2, 0xc2, 0x5c, 0xb8, 0x52, 0x51, 0x5c, 0x5e, 0x54, 0x1e, 0xcd, 0x16, + 0xa0, 0x9c, 0x9c, 0xa1, 0xa1, 0x9d, 0x7a, 0x76, 0x76, 0x79, 0x7a, 0x75, + 0x75, 0x7a, 0x9c, 0xa0, 0x1e, 0xfb, 0x98, 0xfd, 0x51, 0x22, 0xa, 0x8b, + 0xe5, 0x31, 0xf7, 0x40, 0x7e, 0xe6, 0x48, 0xf7, 0x50, 0x9d, 0xf7, 0x41, + 0x31, 0xe5, 0x12, 0xf7, 0xbe, 0xed, 0xb5, 0xda, 0x9d, 0xdc, 0x13, 0xab, + 0x80, 0x7c, 0x16, 0xf7, 0x89, 0xe5, 0x3e, 0x6, 0xa9, 0xd0, 0x5, 0xf7, + 0x7, 0xfb, 0x33, 0xf7, 0xd2, 0x6, 0x13, 0x5b, 0x80, 0xf7, 0x40, 0x3a, + 0x7, 0x13, 0x97, 0x80, 0x39, 0xfb, 0x1f, 0xf7, 0x22, 0xb5, 0x5a, 0xda, + 0xf7, 0x50, 0x3c, 0x5a, 0x61, 0xf7, 0x2a, 0xf7, 0x1f, 0x7, 0x13, 0xab, + 0x80, 0x38, 0xdc, 0xf7, 0x41, 0xfc, 0x7b, 0x7, 0x13, 0xa7, 0x80, 0x31, + 0xea, 0x7, 0xfb, 0x40, 0xfc, 0x12, 0x5, 0x48, 0x6, 0xf7, 0x83, 0xf7, + 0x34, 0x15, 0xd5, 0xf7, 0x39, 0x5, 0xfb, 0x39, 0x7, 0xe, 0xfb, 0x4d, + 0x76, 0xf7, 0x54, 0xe7, 0xf8, 0x2e, 0xe7, 0x1, 0xaa, 0xec, 0xf7, 0x16, + 0xf7, 0x22, 0xcb, 0xec, 0x3, 0xf7, 0x9b, 0x82, 0x15, 0x82, 0x2e, 0x5, + 0x8e, 0x98, 0x9f, 0x8e, 0x97, 0x1b, 0x94, 0x99, 0x84, 0x7f, 0x7c, 0x80, + 0x84, 0x7d, 0x7d, 0x79, 0x91, 0x95, 0x7d, 0x1f, 0x6f, 0x52, 0x5, 0x71, + 0xac, 0xa0, 0x89, 0xa1, 0x1b, 0xc2, 0xb9, 0xac, 0xca, 0x98, 0x8b, 0xc3, + 0x4f, 0x99, 0x1f, 0x8c, 0x98, 0xe3, 0x8f, 0xcf, 0xb2, 0xd3, 0xb9, 0x19, + 0x52, 0xcf, 0x5, 0x72, 0x60, 0x4a, 0x63, 0x36, 0x1b, 0xfb, 0x21, 0x59, + 0xf7, 0x15, 0xd7, 0xf7, 0x2f, 0xf7, 0x6, 0xbd, 0xd7, 0xc1, 0xbd, 0x78, + 0x71, 0xb5, 0x1f, 0x21, 0xec, 0xf7, 0x87, 0x2a, 0x60, 0x7, 0xa4, 0x6a, + 0x55, 0x9d, 0x4e, 0x1b, 0xfb, 0x1e, 0xfb, 0x27, 0x2a, 0xfb, 0x5e, 0xfb, + 0x21, 0xea, 0xfb, 0x13, 0xf7, 0x1d, 0x75, 0x1f, 0xe, 0x48, 0xa, 0xc1, + 0xed, 0x3, 0xb1, 0x16, 0x35, 0xa, 0xf6, 0xf8, 0xe2, 0x15, 0xf7, 0xd2, + 0x40, 0xa6, 0x77, 0xa, 0x48, 0xa, 0xbf, 0xee, 0x3, 0xb1, 0x16, 0xf8, + 0xa5, 0x6, 0x8a, 0xf7, 0x5e, 0x5, 0x28, 0xfb, 0x4, 0xfb, 0x91, 0x38, + 0xa, 0xf7, 0x91, 0xfb, 0x6, 0xee, 0xf7, 0x60, 0xfc, 0xa1, 0x31, 0xd7, + 0xfc, 0x8, 0x3c, 0x6, 0xf7, 0x2b, 0xf8, 0x97, 0x15, 0xf7, 0xd8, 0xd5, + 0x61, 0xf4, 0xfb, 0xc3, 0x6a, 0xa, 0xe, 0x8b, 0xe4, 0xf7, 0x26, 0xe4, + 0xf7, 0x1d, 0xe4, 0xf7, 0x7a, 0x77, 0x1, 0xf7, 0x9, 0xec, 0xf1, 0xee, + 0xc0, 0xee, 0x3, 0xf7, 0x2b, 0xf8, 0xef, 0x15, 0xf7, 0x2d, 0xf1, 0xf7, + 0x2d, 0x25, 0xc8, 0xaf, 0xfb, 0x37, 0xf7, 0x21, 0x5, 0x27, 0x6, 0xfb, + 0x3b, 0xfb, 0x20, 0x5, 0x59, 0xfd, 0x14, 0x15, 0x35, 0xa, 0xe, 0x8b, + 0xe3, 0xf7, 0x24, 0xe2, 0xf7, 0x1b, 0xe3, 0xdf, 0xf7, 0xe, 0x12, 0xf7, + 0x9, 0xec, 0x4f, 0xf7, 0x6, 0xbb, 0xee, 0x40, 0xf7, 0x4, 0x9c, 0xed, + 0x13, 0xf5, 0x80, 0xf7, 0xe8, 0xf9, 0x10, 0x15, 0xf7, 0x4, 0xf7, 0xe, + 0xfb, 0x4, 0x56, 0xa, 0xfb, 0x8, 0xfd, 0x8a, 0x15, 0xf8, 0xa5, 0xf7, + 0x5e, 0x29, 0xfb, 0x4, 0x6, 0x13, 0xfa, 0x80, 0x2d, 0xa, 0xe, 0x8b, + 0xe5, 0xf8, 0x8, 0x5f, 0xa, 0xf7, 0x90, 0xef, 0x3, 0xd8, 0x16, 0x31, + 0xa, 0xcd, 0xf8, 0xe2, 0x15, 0xf7, 0xd4, 0x40, 0xa5, 0x77, 0xa, 0x8b, + 0xe5, 0xf8, 0x8, 0x5f, 0xa, 0xf7, 0x90, 0xef, 0x3, 0xf7, 0x50, 0xf8, + 0xf1, 0x15, 0xf7, 0xd9, 0xd5, 0x60, 0xf4, 0xfb, 0xc2, 0x6a, 0xa, 0x30, + 0xfd, 0x2c, 0x15, 0x31, 0xa, 0xe, 0x8b, 0xe4, 0xf8, 0x8, 0xe4, 0xf7, + 0x7a, 0x67, 0xa, 0xef, 0x3, 0xf7, 0x29, 0xf8, 0xef, 0x15, 0xf7, 0x2e, + 0xf1, 0xf7, 0x2d, 0x25, 0xc8, 0xaf, 0xfb, 0x38, 0xf7, 0x21, 0x5, 0x28, + 0x6, 0xfb, 0x3c, 0xfb, 0x20, 0x5, 0x82, 0xfd, 0x14, 0x15, 0x31, 0xa, + 0xe, 0x8b, 0xe3, 0xf8, 0x2, 0xe3, 0xdf, 0xf7, 0xe, 0x12, 0xf7, 0x2d, + 0xf7, 0x6, 0x7c, 0xef, 0x7e, 0xf7, 0x5, 0x13, 0xf4, 0xf7, 0xe7, 0xf9, + 0x10, 0x15, 0xf7, 0x5, 0xf7, 0xe, 0xfb, 0x5, 0x56, 0xa, 0x3f, 0xfd, + 0x8a, 0x15, 0xf8, 0x52, 0xe5, 0x6, 0x13, 0xe8, 0x30, 0xa, 0xe, 0x8b, + 0xe6, 0xf7, 0x30, 0xce, 0xf7, 0x31, 0xe6, 0x1, 0xf0, 0xeb, 0xf7, 0xb5, + 0xeb, 0x3, 0x9d, 0x16, 0xf7, 0xa1, 0x6, 0xf7, 0x2f, 0xf7, 0x20, 0xce, + 0xf7, 0x75, 0xf7, 0x39, 0x39, 0xf4, 0xfb, 0x4e, 0x1f, 0xfb, 0xbc, 0x30, + 0xde, 0xfb, 0x31, 0x43, 0x48, 0xd3, 0xfb, 0x30, 0x38, 0x6, 0xf7, 0x47, + 0x16, 0xf7, 0x30, 0xf7, 0x12, 0xce, 0xfb, 0x12, 0xf7, 0x31, 0xf7, 0xb, + 0x7, 0xf7, 0xf, 0xba, 0x38, 0x27, 0xfb, 0x12, 0x46, 0x44, 0xfb, 0x1a, + 0x1f, 0xe, 0x7f, 0xe7, 0xf8, 0x13, 0xe7, 0xc1, 0xdf, 0x12, 0xd9, 0xe8, + 0xf7, 0x97, 0xe8, 0x17, 0x8a, 0x7f, 0x15, 0xf7, 0x99, 0xe7, 0x32, 0xf7, + 0xd6, 0x6, 0xf7, 0x9b, 0xfc, 0x32, 0x5, 0xe4, 0xf8, 0x79, 0xd9, 0xe7, + 0xfb, 0x9e, 0x2f, 0xea, 0xfb, 0xcb, 0x6, 0xfb, 0x8b, 0xf8, 0x27, 0x5, + 0xfb, 0x4c, 0x2f, 0xda, 0xfc, 0x1d, 0x3c, 0x6, 0xe8, 0xf8, 0xc7, 0x15, + 0xe0, 0x71, 0x5, 0xaf, 0x9a, 0x97, 0xa6, 0xa7, 0x1b, 0xb2, 0x9f, 0x79, + 0x7a, 0xa2, 0x1f, 0x13, 0x60, 0x7d, 0x9e, 0x9f, 0x7f, 0xac, 0x1b, 0xd7, + 0xbb, 0xc7, 0xcb, 0x9a, 0x1f, 0x38, 0xa5, 0x5, 0x75, 0x84, 0x7c, 0x5f, + 0x68, 0x1b, 0x6f, 0x7b, 0x99, 0x99, 0x79, 0x1f, 0x9b, 0x77, 0x73, 0x9c, + 0x5c, 0x1b, 0x3a, 0x5f, 0x48, 0x55, 0x7c, 0x1f, 0xe, 0x61, 0xa, 0xf7, + 0x72, 0x54, 0xa, 0xa1, 0xf7, 0xa2, 0x2f, 0xa, 0xf7, 0x2b, 0x2e, 0xf7, + 0x1f, 0x26, 0xa, 0xa3, 0xf8, 0x2a, 0x15, 0xf7, 0xd0, 0x40, 0xa5, 0xc5, + 0xfb, 0xbf, 0xf7, 0xe, 0x5, 0xe, 0x61, 0xa, 0xf7, 0x72, 0x54, 0xa, + 0xa1, 0xf7, 0xa2, 0x25, 0xa, 0xd0, 0xf7, 0xdf, 0x15, 0xf7, 0xd4, 0xd5, + 0x61, 0xf5, 0xfb, 0xbe, 0xfb, 0xd, 0x5, 0xe, 0x61, 0xa, 0xf7, 0x6e, + 0x54, 0xa, 0xf7, 0x2b, 0xf8, 0xee, 0x15, 0xf7, 0x2c, 0xf2, 0xf7, 0x2c, + 0x24, 0xc6, 0xaf, 0xfb, 0x35, 0xf7, 0x22, 0x5, 0x29, 0x6, 0xfb, 0x3a, + 0xfb, 0x21, 0x5, 0x48, 0xfc, 0x5, 0x25, 0xa, 0xe, 0x61, 0xa, 0xbb, + 0xdf, 0x73, 0xdf, 0x90, 0x77, 0x12, 0xa1, 0xed, 0xf7, 0xff, 0xea, 0x13, + 0xd6, 0xe7, 0xf9, 0xe, 0x15, 0xe3, 0x71, 0x5, 0xae, 0x99, 0x99, 0xa6, + 0xa6, 0x1b, 0xac, 0x9e, 0x7d, 0x7d, 0xa0, 0x1f, 0x13, 0xee, 0x7d, 0xa0, + 0xa2, 0x79, 0xb6, 0x1b, 0xd9, 0xbe, 0xc6, 0xcb, 0x9a, 0x1f, 0x36, 0xa5, + 0x5, 0x75, 0x83, 0x7c, 0x60, 0x66, 0x1b, 0x6a, 0x7c, 0x9d, 0x9b, 0x74, + 0x1f, 0x13, 0xd6, 0x98, 0x78, 0x72, 0x98, 0x5f, 0x1b, 0x39, 0x5e, 0x49, + 0x55, 0x7b, 0x1f, 0x45, 0xfc, 0x0, 0x25, 0xa, 0xe, 0x79, 0xe4, 0xf8, + 0x15, 0xe6, 0xd8, 0xf7, 0x10, 0x1, 0xa1, 0xed, 0xae, 0xf7, 0x5, 0xd1, + 0xf7, 0x5, 0xab, 0xea, 0x3, 0xf7, 0xe6, 0xf9, 0xe, 0x53, 0xa, 0xfb, + 0x4b, 0xfb, 0x10, 0x53, 0xa, 0xfb, 0x19, 0xfc, 0x7c, 0x25, 0xa, 0xe, + 0xc7, 0x76, 0xf8, 0x4b, 0x77, 0x1, 0xdc, 0xef, 0x15, 0xc8, 0x4e, 0xf7, + 0x32, 0xf7, 0x33, 0xf7, 0x32, 0xfb, 0x33, 0xc8, 0xc8, 0xfb, 0x31, 0xf7, + 0x32, 0xf7, 0x30, 0xf7, 0x30, 0x4f, 0xc8, 0xfb, 0x33, 0xfb, 0x30, 0xfb, + 0x32, 0xf7, 0x33, 0x4e, 0x4f, 0xf7, 0x33, 0xfb, 0x33, 0x5, 0xe, 0x7c, + 0xe6, 0x3e, 0x76, 0xf8, 0x93, 0xe8, 0x8d, 0x77, 0x12, 0xa1, 0xee, 0xf8, + 0x2, 0xe6, 0x13, 0x6c, 0xad, 0xa3, 0x15, 0xcc, 0x5d, 0xba, 0xbf, 0x5, + 0x13, 0x9c, 0x6d, 0xbb, 0xc1, 0x7c, 0xc2, 0x1b, 0xf2, 0xf7, 0x40, 0xd1, + 0xf7, 0x76, 0xce, 0x78, 0xd3, 0x61, 0xc4, 0x1f, 0xbc, 0xc6, 0x4b, 0xbb, + 0x62, 0x58, 0x5, 0x13, 0xac, 0xa9, 0x61, 0x56, 0x9e, 0x4c, 0x1b, 0xfb, + 0x44, 0x8a, 0x22, 0xfb, 0x24, 0xfb, 0x30, 0x1a, 0x38, 0xa3, 0x4b, 0xb2, + 0x5a, 0x1e, 0xcd, 0xda, 0x15, 0x77, 0xa9, 0x81, 0xb9, 0xb4, 0x1a, 0xe9, + 0xc7, 0xf7, 0x6, 0xf7, 0xe, 0xb2, 0xab, 0x80, 0x7a, 0xa4, 0x1e, 0xfb, + 0x54, 0xfb, 0xfa, 0x15, 0xf7, 0x8a, 0xf7, 0xbd, 0x5, 0xa1, 0x6a, 0x97, + 0x54, 0x6c, 0x1a, 0x38, 0x58, 0xfb, 0xe, 0xfb, 0x19, 0x65, 0x6a, 0x95, + 0x9c, 0x72, 0x1e, 0xe, 0x4f, 0xa, 0xf7, 0x20, 0xf9, 0x3b, 0x15, 0xf7, + 0xca, 0x41, 0xa5, 0xc5, 0xfb, 0xb9, 0xf7, 0xd, 0x5, 0xfb, 0x47, 0xfb, + 0xd8, 0x15, 0x27, 0xa, 0x4f, 0xa, 0xf7, 0x4d, 0xf8, 0xf1, 0x15, 0xf7, + 0xcd, 0xd4, 0x62, 0xf5, 0xfb, 0xb9, 0x6a, 0xa, 0xfb, 0x34, 0xfb, 0x60, + 0x15, 0x27, 0xa, 0x79, 0xe6, 0xf8, 0x16, 0xe5, 0xf7, 0x7b, 0x52, 0xa, + 0xf7, 0x26, 0xf8, 0xef, 0x15, 0xf7, 0x2a, 0xf1, 0xf7, 0x28, 0x25, 0xc5, + 0xae, 0xfb, 0x32, 0xf7, 0x22, 0x5, 0x2c, 0x6, 0xfb, 0x37, 0xfb, 0x21, + 0x5, 0x39, 0xfb, 0x47, 0x15, 0x27, 0xa, 0x79, 0xe4, 0xf8, 0x11, 0xe3, + 0xe1, 0xf7, 0xe, 0x12, 0xdf, 0xea, 0x6d, 0xf7, 0x3, 0xd0, 0xf7, 0x2, + 0x7c, 0xea, 0x13, 0xec, 0xf7, 0xdd, 0xf9, 0x10, 0x15, 0xf7, 0x2, 0xf7, + 0xe, 0xfb, 0x2, 0x6, 0xfb, 0x48, 0xfb, 0xe, 0x15, 0xf7, 0x3, 0xf7, + 0xe, 0x6b, 0xa, 0xfb, 0x25, 0xfb, 0xbe, 0x15, 0x13, 0xf2, 0x27, 0xa, + 0x8b, 0xe5, 0xf8, 0x9, 0xe5, 0xf7, 0x7b, 0x77, 0x1, 0xf7, 0x8e, 0xec, + 0x3, 0xf7, 0x12, 0x16, 0xf7, 0xeb, 0xe5, 0xfb, 0xe, 0xf7, 0x6, 0x6, + 0xf7, 0x34, 0xf7, 0x97, 0x5, 0xdc, 0xe5, 0xfb, 0x82, 0x31, 0xc2, 0x6, + 0x21, 0xfb, 0x41, 0x24, 0xf7, 0x41, 0x5, 0xc0, 0xe5, 0xfb, 0x82, 0x31, + 0xda, 0x6, 0xf7, 0x34, 0xfb, 0x97, 0x5, 0xfb, 0x6, 0xfb, 0x10, 0x7, + 0xc9, 0xf8, 0x98, 0x15, 0xf7, 0xce, 0xd4, 0x62, 0xf4, 0xfb, 0xbb, 0xfb, + 0xb, 0x5, 0xe, 0x8b, 0xe6, 0xbe, 0xdb, 0xf7, 0x9, 0xdb, 0xbf, 0xe6, + 0x1, 0xf7, 0x2a, 0xde, 0xf7, 0x81, 0xdf, 0x3, 0xb8, 0x16, 0xf7, 0xc5, + 0xe6, 0xfb, 0x9, 0xbe, 0xf7, 0xf, 0x6, 0xee, 0xee, 0x9c, 0xf7, 0x13, + 0xf7, 0x29, 0xfb, 0x1d, 0x7b, 0x28, 0x1f, 0x36, 0xbf, 0xf7, 0xb, 0xe6, + 0xfb, 0xc5, 0x30, 0xf2, 0xfc, 0x10, 0x22, 0x6, 0xf7, 0x50, 0xf7, 0x17, + 0x15, 0xf7, 0x9, 0xf7, 0x16, 0x7, 0xb1, 0xd0, 0x8c, 0x50, 0x48, 0x47, + 0x93, 0x6a, 0x1f, 0xe, 0x7c, 0xe9, 0x39, 0xe9, 0xf7, 0x90, 0xe9, 0xea, + 0xe9, 0x12, 0x98, 0xf7, 0x46, 0x2b, 0xeb, 0xf7, 0x78, 0xeb, 0x72, 0xec, + 0x13, 0x7a, 0x98, 0x88, 0x15, 0xf7, 0x46, 0xf8, 0x56, 0x6, 0xdc, 0xab, + 0x8f, 0xcf, 0xd7, 0xbf, 0x87, 0x70, 0x6e, 0x55, 0x7d, 0x62, 0x75, 0x1e, + 0x66, 0x77, 0x63, 0x6e, 0x5a, 0x1a, 0x38, 0xd4, 0x71, 0xd9, 0x6f, 0x1e, + 0x13, 0xb9, 0xab, 0x80, 0xc7, 0x7f, 0x62, 0x1a, 0x69, 0x5a, 0x73, 0x4e, + 0x66, 0x42, 0x97, 0xa5, 0x73, 0x1e, 0x6e, 0x34, 0x5, 0x67, 0xc8, 0xb3, + 0x82, 0xc1, 0x1b, 0xf7, 0x18, 0xde, 0xd4, 0xe0, 0xe5, 0x3d, 0xa2, 0x42, + 0xa3, 0x1f, 0x5b, 0x9b, 0x5f, 0x9b, 0xa4, 0x1a, 0xa1, 0xaf, 0x9b, 0xb0, + 0x9c, 0x1e, 0x13, 0xb6, 0xc6, 0xa6, 0xb2, 0x9f, 0xcb, 0x1a, 0xd5, 0x51, + 0xbc, 0xfb, 0x40, 0xfb, 0x3a, 0x73, 0x4a, 0xfb, 0x10, 0x1e, 0x13, 0xba, + 0x39, 0x2d, 0x6, 0x13, 0x76, 0xdd, 0xfb, 0x90, 0x6, 0x13, 0x7a, 0x39, + 0x6, 0xe, 0x39, 0xa, 0xf7, 0x78, 0x77, 0x3b, 0xa, 0xf7, 0x13, 0xf8, + 0xc1, 0x15, 0xf7, 0xd5, 0x3f, 0xa2, 0xc5, 0xfb, 0xc2, 0xf7, 0xe, 0x5, + 0x42, 0xfb, 0xf8, 0x51, 0xa, 0xaa, 0x70, 0x5b, 0x8a, 0x21, 0xa, 0x39, + 0xa, 0xf7, 0x78, 0x77, 0x3b, 0xa, 0xf7, 0x42, 0xf8, 0x75, 0x15, 0xf7, + 0xd5, 0xd7, 0x61, 0xf3, 0xfb, 0xc2, 0xfb, 0xe, 0x5, 0x54, 0xfb, 0x7e, + 0x51, 0xa, 0xab, 0x70, 0x5b, 0x89, 0x21, 0xa, 0x39, 0xa, 0xf7, 0x74, + 0x77, 0x3b, 0xa, 0xf7, 0x1a, 0xf8, 0x72, 0x15, 0xf7, 0x2c, 0xf3, 0xf7, + 0x2d, 0x23, 0xc7, 0xae, 0xfb, 0x36, 0xf7, 0x24, 0x5, 0x27, 0x6, 0xfb, + 0x3a, 0xfb, 0x23, 0x5, 0xa4, 0xfb, 0x65, 0x15, 0x9b, 0xa9, 0xf4, 0xa4, + 0xd7, 0x1b, 0xbf, 0xa9, 0x70, 0x5b, 0x21, 0xa, 0x39, 0xa, 0xf7, 0x7, + 0xe0, 0x8e, 0x77, 0x34, 0xa, 0x13, 0xbb, 0x0, 0xf7, 0x32, 0xf8, 0x7a, + 0x15, 0xa3, 0x98, 0x94, 0xb1, 0xb1, 0x1b, 0xa0, 0xa8, 0x7a, 0x7b, 0xa9, + 0x1f, 0x7d, 0xa5, 0xa6, 0x7f, 0xa4, 0x1b, 0xf2, 0xac, 0xe3, 0xad, 0x96, + 0x1f, 0x13, 0xb7, 0x0, 0x35, 0xa4, 0x5, 0x61, 0x78, 0x80, 0x76, 0x6e, + 0x1b, 0x77, 0x74, 0x96, 0x98, 0x74, 0x1f, 0x13, 0xbb, 0x0, 0x9c, 0x6d, + 0x6b, 0x9e, 0x6c, 0x1b, 0x28, 0x6c, 0x3d, 0x5f, 0x79, 0x1f, 0xa4, 0xfb, + 0x62, 0x15, 0x9b, 0xa9, 0xf4, 0xa4, 0xd7, 0x1b, 0x3d, 0xa, 0x13, 0x7a, + 0x80, 0x4d, 0xa, 0x13, 0x7b, 0x0, 0x2b, 0xa, 0x13, 0xbb, 0x0, 0x29, + 0xa, 0x39, 0xa, 0xcf, 0xf7, 0x10, 0x12, 0xab, 0xec, 0x90, 0xf7, 0x5, + 0xd4, 0xf7, 0x4, 0x60, 0xea, 0x2c, 0xf7, 0x46, 0x13, 0xbf, 0x0, 0xf7, + 0xd4, 0xf8, 0x89, 0x15, 0xf7, 0x4, 0xf7, 0x10, 0xfb, 0x4, 0x6, 0xfb, + 0x4e, 0xfb, 0x10, 0x53, 0xa, 0x65, 0xfb, 0xd4, 0x3f, 0xa, 0x13, 0xbe, + 0x80, 0x3d, 0xa, 0x13, 0x7e, 0x40, 0x4d, 0xa, 0x13, 0x7e, 0x80, 0x2b, + 0xa, 0x13, 0xbe, 0x80, 0x29, 0xa, 0x39, 0xa, 0xba, 0xf7, 0x5a, 0x3b, + 0xa, 0xf7, 0x46, 0xf8, 0xe0, 0x15, 0x55, 0xbc, 0x62, 0xc8, 0xc8, 0xbc, + 0xb4, 0xc1, 0xc1, 0x5a, 0xaf, 0x4e, 0x4e, 0x5a, 0x67, 0x55, 0x1e, 0xcc, + 0x16, 0xa0, 0xa0, 0x95, 0xa3, 0xa4, 0x9e, 0x81, 0x76, 0x75, 0x78, 0x7e, + 0x72, 0x73, 0x76, 0x98, 0xa1, 0x1e, 0xfb, 0x27, 0xfb, 0xaf, 0x51, 0xa, + 0xa6, 0x70, 0x5b, 0x8e, 0x21, 0xa, 0x7c, 0xed, 0x3f, 0x76, 0xf7, 0x53, + 0xe8, 0x40, 0xe6, 0xd5, 0xe9, 0x12, 0x89, 0xec, 0xf7, 0x29, 0xee, 0x13, + 0xae, 0xf7, 0xb9, 0xc5, 0x15, 0x52, 0xa6, 0xc6, 0x7b, 0xcc, 0x1b, 0xc0, + 0xc6, 0x99, 0xa0, 0xba, 0x1f, 0x6b, 0xe7, 0x5, 0x73, 0x4d, 0x62, 0x86, + 0x74, 0x1b, 0x37, 0x7d, 0xd1, 0xa0, 0x1f, 0x8e, 0xf7, 0x89, 0x7, 0x8d, + 0x9f, 0x8c, 0x9e, 0x9e, 0x1a, 0xf7, 0x11, 0x5d, 0xe9, 0xfb, 0xa, 0x5f, + 0x5b, 0x78, 0x68, 0x6e, 0x1e, 0x7f, 0xb0, 0x5b, 0x9a, 0x54, 0x8c, 0x48, + 0x8c, 0x3e, 0x78, 0x6e, 0x74, 0xa5, 0x39, 0x18, 0x9b, 0xb5, 0xc0, 0x99, + 0xb6, 0x1b, 0xbb, 0x97, 0x7a, 0x4d, 0x89, 0x1f, 0x13, 0x5e, 0x8d, 0x73, + 0x78, 0x8e, 0x66, 0x1b, 0xfb, 0xb, 0x5c, 0x31, 0x44, 0x3d, 0xc4, 0x4e, + 0xe1, 0xd3, 0xbb, 0xb9, 0xa5, 0xab, 0x1f, 0x13, 0xae, 0xbd, 0xf7, 0x68, + 0x15, 0xc8, 0x8f, 0xb3, 0xa8, 0xb5, 0x1b, 0xc4, 0x96, 0x47, 0x75, 0x8d, + 0x1f, 0xfb, 0x93, 0xfb, 0x1d, 0x15, 0x6e, 0x6f, 0x69, 0x73, 0x62, 0x1b, + 0x79, 0x6f, 0x98, 0xad, 0x1f, 0x13, 0x9e, 0xb0, 0xa3, 0xaa, 0xc3, 0x9e, + 0xa2, 0x88, 0x84, 0xa6, 0x1e, 0xe, 0xfb, 0x4d, 0x76, 0xf7, 0x5b, 0xe7, + 0xf7, 0xa2, 0xe9, 0x12, 0xba, 0xec, 0xf7, 0x13, 0xf7, 0x21, 0x95, 0xeb, + 0x17, 0xf7, 0x80, 0xfb, 0x45, 0x15, 0x7a, 0xa0, 0xa6, 0x7f, 0xaa, 0x1b, + 0xcc, 0xab, 0xbe, 0xbd, 0xa6, 0x82, 0xb7, 0x5a, 0x97, 0x1f, 0x9d, 0x7, + 0xd5, 0x97, 0xd0, 0xad, 0xc2, 0xb7, 0x55, 0xd4, 0x18, 0x62, 0x51, 0x55, + 0x6a, 0x3c, 0x1b, 0x39, 0x3a, 0xb8, 0xe9, 0xdb, 0xca, 0xbe, 0xf3, 0xb2, + 0xb3, 0x8b, 0x7c, 0xab, 0x1f, 0x30, 0xeb, 0xf7, 0x5c, 0x2b, 0x82, 0x7, + 0x95, 0x68, 0x65, 0x8a, 0x65, 0x1b, 0xfb, 0x49, 0x38, 0xfb, 0x4, 0xfb, + 0x3, 0xfb, 0x21, 0xf7, 0x3, 0x39, 0xf7, 0x9, 0x81, 0x1f, 0x84, 0x2e, + 0x5, 0x8c, 0x95, 0xa0, 0x91, 0x9b, 0x1b, 0x97, 0x94, 0x85, 0x7c, 0x7d, + 0x80, 0x84, 0x7d, 0x7a, 0x77, 0x8f, 0x94, 0x82, 0x1f, 0xe, 0x55, 0xa, + 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x1e, 0xf8, 0xc3, 0x15, 0xf7, 0xd2, 0x3f, + 0xa1, 0xc6, 0xfb, 0xbd, 0xf7, 0xb, 0x5, 0x5e, 0xfc, 0x7f, 0x24, 0xa, + 0x55, 0xa, 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x4d, 0xf8, 0x76, 0x15, 0xf7, + 0xd3, 0xd7, 0x60, 0xf2, 0xfb, 0xbf, 0x6a, 0xa, 0x71, 0xfc, 0x7, 0x24, + 0xa, 0x55, 0xa, 0xf7, 0x73, 0x77, 0x1, 0xf7, 0x23, 0xf8, 0x73, 0x15, + 0xf7, 0x2c, 0xf2, 0xf7, 0x2c, 0x24, 0xc7, 0xad, 0xfb, 0x36, 0xf7, 0x24, + 0x5, 0x28, 0x6, 0xfb, 0x39, 0xfb, 0x23, 0x5, 0xc2, 0xfb, 0xec, 0x24, + 0xa, 0x55, 0xa, 0xcc, 0xf7, 0x12, 0x1, 0xf7, 0x24, 0xf7, 0x4, 0xd2, + 0xf7, 0x4, 0x3, 0xf7, 0xdb, 0xf8, 0x87, 0x72, 0xa, 0xfb, 0x4b, 0xfb, + 0x12, 0x72, 0xa, 0x83, 0xfc, 0x5b, 0x24, 0xa, 0x57, 0xa, 0xf7, 0x17, + 0xf8, 0xc2, 0x15, 0xf7, 0xd4, 0x40, 0xa3, 0xc5, 0xfb, 0xc1, 0xf7, 0xc, + 0x5, 0x2a, 0xfd, 0x29, 0x33, 0xa, 0x57, 0xa, 0xf7, 0x48, 0xf8, 0x77, + 0x15, 0xf7, 0xd2, 0xd6, 0x61, 0xf2, 0xfb, 0xc0, 0x6a, 0xa, 0x3c, 0xfc, + 0xb1, 0x33, 0xa, 0x8b, 0xe5, 0xf7, 0x84, 0xe6, 0xf7, 0x80, 0x77, 0x1, + 0xf7, 0x8d, 0xf1, 0x3, 0xd1, 0xf8, 0x98, 0x15, 0xcb, 0x67, 0xf7, 0x31, + 0xf1, 0xf7, 0x31, 0x25, 0xc9, 0xae, 0xfb, 0x3b, 0xf7, 0x22, 0x5, 0x24, + 0x6, 0xfb, 0x30, 0xfd, 0x25, 0x33, 0xa, 0x8b, 0xe6, 0xf7, 0x86, 0xe6, + 0xd7, 0xf7, 0x11, 0x12, 0xf7, 0x20, 0xf7, 0x4, 0x8a, 0xec, 0x72, 0xf7, + 0x5, 0x13, 0xf4, 0xf7, 0xd7, 0xf8, 0x88, 0x15, 0xf7, 0x5, 0xf7, 0x11, + 0xfb, 0x5, 0x6, 0xfb, 0x4b, 0xfb, 0x11, 0x15, 0xf7, 0x4, 0xf7, 0x11, + 0xfb, 0x4, 0x6, 0x4c, 0xfd, 0x5, 0x15, 0xf8, 0x52, 0xe6, 0x6, 0x13, + 0xe8, 0xfb, 0x43, 0xf7, 0xe1, 0xfb, 0x7e, 0x30, 0xf7, 0x1d, 0xfb, 0x86, + 0xfb, 0x42, 0x6, 0xe, 0x70, 0xe3, 0xf7, 0x96, 0xe4, 0xf7, 0x6e, 0x77, + 0x1, 0xc4, 0xe8, 0xf7, 0xc1, 0xe6, 0x3, 0xf7, 0x51, 0xf8, 0x48, 0x15, + 0xf7, 0x5, 0xc2, 0xd1, 0x62, 0xb7, 0x47, 0x8c, 0x87, 0x19, 0x9d, 0x6d, + 0x77, 0x97, 0x4c, 0x1b, 0xfb, 0x39, 0x39, 0xfb, 0x0, 0xfb, 0x3, 0xfb, + 0x0, 0xdd, 0xfb, 0x0, 0xf7, 0x37, 0xf7, 0x3a, 0xd5, 0xf7, 0x3, 0xf7, + 0x17, 0xf7, 0x44, 0xfb, 0xa, 0xf6, 0x59, 0xaa, 0x1f, 0xea, 0xb5, 0x6c, + 0xc1, 0xfb, 0x15, 0x4e, 0x6f, 0x9d, 0x3c, 0xb0, 0x63, 0x92, 0x19, 0x70, + 0x4f, 0xad, 0x83, 0xad, 0x7b, 0xab, 0x7d, 0x19, 0x3b, 0x65, 0x5, 0x86, + 0xfb, 0xc2, 0x15, 0xe7, 0xdb, 0xb2, 0xd1, 0xf5, 0xb8, 0x49, 0x4c, 0x30, + 0x3d, 0x65, 0x45, 0x40, 0x3d, 0xb0, 0xe5, 0x1e, 0xe, 0x8b, 0xe7, 0xf7, + 0x97, 0xe5, 0x31, 0xe7, 0xf7, 0x55, 0x77, 0x12, 0x98, 0xf7, 0x46, 0x2b, + 0xeb, 0xf7, 0x72, 0xeb, 0x13, 0xda, 0xe8, 0xf8, 0x95, 0x15, 0xe1, 0x71, + 0x96, 0x9f, 0x93, 0xad, 0xa1, 0x8d, 0x19, 0xa1, 0x8d, 0xa4, 0x82, 0xb1, + 0x77, 0x8, 0x7e, 0xa4, 0xa8, 0x7e, 0xac, 0x1b, 0xf0, 0xab, 0xe3, 0xad, + 0x97, 0x1f, 0x35, 0xa3, 0x5, 0x62, 0x79, 0x81, 0x76, 0x6e, 0x1b, 0x79, + 0x77, 0x94, 0x96, 0x77, 0x1f, 0x9c, 0x6b, 0x6a, 0xa2, 0x6a, 0x1b, 0x2a, + 0x6d, 0x3d, 0x60, 0x79, 0x1f, 0x3c, 0xfc, 0x95, 0x15, 0xf7, 0x95, 0xe7, + 0x3b, 0xf7, 0x56, 0x6, 0xb6, 0xbd, 0xce, 0xa1, 0xa9, 0x1b, 0xd0, 0x91, + 0x6c, 0x64, 0x1f, 0xfb, 0x51, 0x3d, 0x2f, 0xf7, 0x90, 0xe7, 0x3d, 0xf7, + 0x66, 0x7, 0xe6, 0x43, 0xbb, 0x31, 0x53, 0x51, 0x70, 0x70, 0x61, 0x1e, + 0x13, 0xba, 0xc3, 0xfb, 0x46, 0x2f, 0x7, 0x13, 0xb6, 0xdd, 0xfb, 0x97, + 0x3a, 0x6, 0xe, 0x7b, 0xe7, 0xf7, 0xa0, 0xe7, 0xf7, 0x75, 0x77, 0x4b, + 0xa, 0xf7, 0x24, 0xf8, 0xc1, 0x15, 0xf7, 0xda, 0x40, 0xa2, 0xc5, 0xfb, + 0xc7, 0xf7, 0xd, 0x5, 0xfb, 0x30, 0xfc, 0x5a, 0x23, 0xa, 0x62, 0xa, + 0xf7, 0x75, 0x77, 0x4b, 0xa, 0xf7, 0x53, 0xf8, 0x76, 0x15, 0xf7, 0xda, + 0xd6, 0x61, 0xf3, 0xfb, 0xc7, 0xfb, 0xd, 0x5, 0xfb, 0x1e, 0xfb, 0xe1, + 0x23, 0xa, 0x62, 0xa, 0xf7, 0x71, 0x77, 0x4b, 0xa, 0xf7, 0x2a, 0xf8, + 0x72, 0x15, 0xf7, 0x30, 0xf3, 0xf7, 0x2f, 0x23, 0xc7, 0xad, 0xfb, 0x38, + 0xf7, 0x25, 0x5, 0x24, 0x6, 0xfb, 0x3b, 0xfb, 0x23, 0x5, 0x52, 0xfb, + 0xc7, 0x23, 0xa, 0x62, 0xa, 0xf7, 0x5, 0xe0, 0x8d, 0x77, 0x12, 0xa9, + 0xef, 0xf7, 0xe9, 0xee, 0x13, 0xec, 0xe3, 0xf8, 0x94, 0x15, 0xe4, 0x71, + 0x5, 0xa5, 0x96, 0x98, 0xb0, 0xae, 0x1b, 0x9f, 0xa0, 0x7e, 0x7d, 0xa3, + 0x1f, 0x7b, 0xa7, 0xa9, 0x7a, 0xb0, 0x1b, 0xf5, 0xac, 0xe4, 0xad, 0x95, + 0x1f, 0x13, 0xdc, 0x33, 0xa3, 0x5, 0x62, 0x79, 0x81, 0x76, 0x6d, 0x1b, + 0x74, 0x71, 0x99, 0x9a, 0x70, 0x1f, 0x13, 0xec, 0x9a, 0x6f, 0x6e, 0x9b, + 0x6f, 0x1b, 0x26, 0x6b, 0x3d, 0x5f, 0x7a, 0x1f, 0x51, 0xfb, 0xc5, 0x23, + 0xa, 0x62, 0xa, 0xca, 0xf7, 0x12, 0x1, 0xa9, 0xef, 0xa0, 0xf7, 0x6, + 0xd5, 0xf7, 0x6, 0x9d, 0xee, 0x3, 0xf7, 0xe7, 0xf8, 0x87, 0x70, 0xa, + 0xfb, 0x50, 0xfb, 0x12, 0x70, 0xa, 0xfb, 0xd, 0xfc, 0x36, 0x23, 0xa, + 0x9b, 0xf7, 0x1d, 0xbd, 0xf7, 0x2, 0xbd, 0xf7, 0x1d, 0x1, 0xf7, 0x79, + 0xf7, 0x28, 0x14, 0xe0, 0x5c, 0xa, 0xf7, 0x32, 0xf7, 0xa, 0x15, 0x49, + 0xa, 0xfb, 0xef, 0x4, 0x49, 0xa, 0xe, 0x7a, 0xe9, 0x3b, 0x76, 0xf8, + 0x1c, 0xea, 0x12, 0xa9, 0xed, 0xf7, 0xed, 0xec, 0x13, 0x78, 0xb2, 0xa9, + 0x15, 0x8d, 0xc1, 0x56, 0x8a, 0x8d, 0x1f, 0x8b, 0xa1, 0x9e, 0xaa, 0xa7, + 0x1e, 0x13, 0xb8, 0x72, 0xb6, 0xbe, 0x7c, 0xc3, 0x1b, 0xf7, 0x29, 0xf7, + 0xd, 0xf6, 0xf7, 0x18, 0xc0, 0x77, 0xbd, 0x69, 0xb3, 0x1f, 0xa7, 0xa6, + 0x9b, 0x9c, 0x8b, 0x8b, 0x53, 0xbf, 0x8a, 0x1a, 0x8b, 0x77, 0x7f, 0x6c, + 0x6e, 0x1e, 0xa6, 0x60, 0x56, 0x9c, 0x52, 0x1b, 0xfb, 0x29, 0xfb, 0xd, + 0xfb, 0x1, 0xfb, 0x18, 0x53, 0xa0, 0x59, 0xaf, 0x62, 0x1f, 0x6d, 0x6f, + 0x79, 0x7a, 0x8b, 0x1a, 0xf7, 0xa, 0xf7, 0x3, 0x15, 0x78, 0xa2, 0x81, + 0xa6, 0xa9, 0x1a, 0xdb, 0xd8, 0xce, 0xea, 0xa7, 0xa7, 0x83, 0x81, 0xa3, + 0x1e, 0x45, 0x4a, 0x36, 0x3b, 0x47, 0x4b, 0x8, 0xcd, 0x5a, 0x15, 0xd0, + 0xcb, 0xe1, 0xdb, 0xce, 0xca, 0x8, 0x9d, 0x75, 0x95, 0x70, 0x6e, 0x1a, + 0x3b, 0x3d, 0x4b, 0x2c, 0x6f, 0x71, 0x90, 0x95, 0x74, 0x1e, 0xe, 0x3c, + 0xa, 0xf7, 0x17, 0xf8, 0xc3, 0x15, 0xf7, 0xcc, 0x3d, 0xa2, 0xc7, 0xfb, + 0xbc, 0xf7, 0xc, 0x5, 0xfb, 0x2f, 0xfb, 0xde, 0x28, 0xa, 0x3c, 0xa, + 0xf7, 0x43, 0xf8, 0x76, 0x15, 0xf7, 0xcf, 0xd7, 0x62, 0xf2, 0xfb, 0xbd, + 0x6a, 0xa, 0xfb, 0x1d, 0xfb, 0x66, 0x28, 0xa, 0x4a, 0xa, 0xf7, 0x7f, + 0x36, 0xa, 0xf7, 0x1d, 0xf8, 0x71, 0x15, 0xf7, 0x2a, 0xf4, 0xf7, 0x29, + 0x22, 0xc6, 0xae, 0xfb, 0x34, 0xf7, 0x25, 0x5, 0x2b, 0x6, 0xfb, 0x37, + 0xfb, 0x24, 0x5, 0x4e, 0xfb, 0x4a, 0x28, 0xa, 0x4a, 0xa, 0xd9, 0xf7, + 0x11, 0x12, 0x9a, 0xf7, 0x42, 0x2e, 0xe8, 0x5a, 0xf7, 0x2, 0xd0, 0xf7, + 0x2, 0x29, 0xf7, 0x41, 0x2d, 0xe9, 0x2d, 0xf7, 0x43, 0x13, 0xb3, 0x0, + 0xf7, 0xd3, 0xf8, 0x88, 0x6f, 0xa, 0xfb, 0x47, 0xfb, 0x11, 0x6f, 0xa, + 0x13, 0xb9, 0x0, 0xfb, 0x11, 0xfb, 0xba, 0x15, 0x13, 0xb4, 0x40, 0x2e, + 0xa, 0x13, 0x78, 0x20, 0x64, 0xf7, 0x43, 0xe6, 0x7, 0x13, 0x78, 0x80, + 0x3a, 0xf7, 0xe1, 0xfb, 0x41, 0x30, 0x6, 0x13, 0xb8, 0x40, 0x2c, 0xa, + 0xfb, 0x22, 0xe2, 0xf8, 0x26, 0xe2, 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x59, + 0xf8, 0x7f, 0x15, 0xf7, 0xcf, 0xd2, 0x62, 0xee, 0xfb, 0xbe, 0xfb, 0x7, + 0x5, 0xfb, 0x19, 0xfc, 0xed, 0x15, 0x34, 0xf7, 0xc9, 0xe2, 0x33, 0x3a, + 0xa, 0xfb, 0xa7, 0x35, 0xfb, 0x13, 0x5, 0xe, 0xfb, 0x22, 0xe4, 0xe0, + 0xe3, 0xf7, 0x9a, 0xe4, 0xcd, 0xe4, 0x12, 0x93, 0xf7, 0x49, 0x29, 0xed, + 0xf7, 0xc4, 0xee, 0x13, 0xfa, 0x93, 0x56, 0x15, 0x32, 0xf7, 0xe1, 0xe4, + 0xfb, 0x2c, 0xf7, 0x18, 0x7, 0x7d, 0xa1, 0xc3, 0x6a, 0xde, 0x1b, 0xf7, + 0x21, 0xf0, 0xee, 0xf7, 0x10, 0xf7, 0x2b, 0xfb, 0x23, 0xcc, 0x24, 0x51, + 0x51, 0x7b, 0x6d, 0x62, 0x1f, 0xf7, 0x5d, 0xfb, 0x49, 0x32, 0x7, 0x13, + 0xf6, 0xde, 0xfc, 0xe2, 0x6, 0x13, 0xfa, 0xe9, 0xf7, 0xc6, 0x15, 0xf7, + 0x2, 0xf7, 0x9, 0x9e, 0xb4, 0xdb, 0xd1, 0x5d, 0x38, 0x3b, 0x43, 0x56, + 0x3c, 0x5c, 0xfb, 0x2, 0xa5, 0xf6, 0x1e, 0xe, 0xfb, 0x22, 0xe1, 0xf8, + 0x26, 0xe2, 0xd3, 0xf7, 0xc, 0x1, 0xf7, 0x31, 0xf7, 0x3, 0xd2, 0xf7, + 0x3, 0x3, 0xf7, 0xe7, 0xf8, 0x8d, 0x15, 0xf7, 0x3, 0xf7, 0xc, 0x6b, + 0xa, 0xfb, 0x4a, 0xfb, 0xc, 0x15, 0xf7, 0x3, 0xf7, 0xc, 0x6b, 0xa, + 0xfb, 0x9, 0xfd, 0x3d, 0x15, 0x35, 0xf7, 0xbf, 0xe1, 0x3d, 0x3a, 0xa, + 0xfb, 0xa5, 0x35, 0xfb, 0x15, 0x5, 0xe, 0x8b, 0xe6, 0xf7, 0xf2, 0xe6, + 0x4e, 0xe6, 0xb6, 0xf7, 0x23, 0x12, 0xf7, 0x8f, 0xf0, 0x13, 0xb8, 0x66, + 0xa, 0xe6, 0xfb, 0x3f, 0x6, 0x13, 0xd8, 0xf7, 0xf2, 0x74, 0xa, 0xfb, + 0xf2, 0xfb, 0x42, 0x7, 0xf7, 0x3d, 0xf8, 0x96, 0x79, 0xa, 0x6b, 0xa, + 0xe, 0x7c, 0xa, 0x40, 0xa, 0xf7, 0xed, 0xfb, 0x7f, 0x2d, 0xf7, 0x1c, + 0xfb, 0x8f, 0xfb, 0x41, 0x6, 0xe, 0x79, 0xe6, 0xf8, 0x22, 0xe6, 0x1, + 0xcb, 0xf0, 0xf3, 0xed, 0xf0, 0xeb, 0x3, 0x7c, 0x79, 0x15, 0xf7, 0x99, + 0xe6, 0x3a, 0xf8, 0x22, 0xd9, 0xe6, 0xfb, 0x95, 0x30, 0xd9, 0xfc, 0x22, + 0x3c, 0x6, 0xf7, 0xb0, 0x74, 0x15, 0x78, 0x9e, 0xa2, 0x5a, 0xf5, 0x1b, + 0xf7, 0x12, 0xa0, 0xd5, 0xf7, 0x1f, 0x1f, 0xf7, 0xa7, 0xbe, 0xe7, 0xfb, + 0x9a, 0x2f, 0xf7, 0x7, 0xfb, 0xa8, 0x7, 0x49, 0x8a, 0x53, 0x56, 0x5b, + 0x8c, 0x78, 0xa, 0xfb, 0x23, 0xe4, 0x32, 0xea, 0xf8, 0x31, 0xe6, 0x80, + 0x77, 0xe4, 0xf7, 0x24, 0x12, 0xae, 0xf7, 0x25, 0xfb, 0x3, 0xf7, 0x3, + 0x29, 0xed, 0xf7, 0x9f, 0xf7, 0xa, 0x13, 0xac, 0x80, 0xd0, 0xf8, 0x97, + 0x79, 0xa, 0x6, 0x13, 0x5a, 0x80, 0x6b, 0xa, 0x56, 0xfd, 0x56, 0x15, + 0x2c, 0xf7, 0x77, 0xea, 0x4c, 0xf8, 0x81, 0x7, 0x13, 0x9c, 0x80, 0xfb, + 0x25, 0x2b, 0x6, 0x13, 0x69, 0x80, 0xba, 0xfc, 0x21, 0x6, 0xf8, 0x1, + 0xf8, 0xc6, 0x73, 0xa, 0xfb, 0x24, 0xfd, 0x49, 0x15, 0x73, 0x30, 0x5, + 0x87, 0xa9, 0x9a, 0x7b, 0xc8, 0x1b, 0xf7, 0x63, 0x82, 0xf7, 0x1b, 0xc6, + 0x1f, 0xf8, 0x2c, 0xfb, 0x80, 0x30, 0xf7, 0x18, 0xfb, 0xcd, 0x7, 0x46, + 0x81, 0x66, 0x3b, 0x64, 0x7d, 0x94, 0x95, 0x6a, 0x1e, 0xe, 0x32, 0xa, + 0xf7, 0x17, 0xed, 0xf7, 0x85, 0xee, 0x3, 0xa9, 0x16, 0xf8, 0xaf, 0xf7, + 0x9c, 0x28, 0xfb, 0x41, 0xfb, 0x85, 0xf7, 0x2e, 0x6, 0xf7, 0x36, 0xbb, + 0x5, 0xc9, 0x7, 0xfb, 0x36, 0x5d, 0x5, 0xf7, 0x36, 0xf7, 0x13, 0xe6, + 0xfb, 0xda, 0x30, 0xf0, 0xfb, 0x50, 0x7, 0x36, 0x73, 0x5, 0x4c, 0x7, + 0xe0, 0xa1, 0x5, 0xfb, 0x13, 0x26, 0x7, 0xe, 0x8b, 0xe9, 0xf8, 0x4a, + 0x40, 0xa, 0xf7, 0x68, 0x6, 0xf7, 0x12, 0xaf, 0x5, 0xcd, 0x7, 0xfb, + 0x12, 0x67, 0x5, 0xf7, 0x92, 0xfb, 0x9e, 0x2d, 0xf7, 0x3b, 0xfb, 0x4f, + 0x7, 0xfb, 0x9, 0x69, 0x5, 0x4b, 0x7, 0xf7, 0x9, 0xab, 0x5, 0xfb, + 0x4d, 0xfb, 0x41, 0x7, 0xe, 0x8b, 0xe6, 0x30, 0xf7, 0x3e, 0xa0, 0xf7, + 0x4f, 0x94, 0xf7, 0x43, 0x30, 0xe6, 0x12, 0x81, 0xe9, 0xf7, 0x6f, 0xea, + 0xaf, 0xd6, 0xa5, 0xd6, 0x13, 0xaf, 0x80, 0xf8, 0x22, 0xe6, 0x15, 0xf7, + 0x2b, 0xaf, 0x58, 0xd6, 0xf7, 0x4f, 0x40, 0x5d, 0x67, 0xf7, 0x1f, 0xf7, + 0x1d, 0x7, 0x13, 0xb7, 0x80, 0x37, 0xd6, 0xf7, 0x43, 0xfc, 0x16, 0x7, + 0xfb, 0xe, 0xfb, 0x4, 0xfb, 0x7, 0xfb, 0x43, 0xfb, 0x43, 0xf7, 0x5, + 0x2a, 0xf2, 0x1f, 0xf8, 0x28, 0x6, 0x13, 0x77, 0x80, 0xf7, 0x3e, 0x40, + 0x7, 0x13, 0xaf, 0x80, 0x3c, 0x7, 0xfb, 0x7c, 0xbc, 0x15, 0x5c, 0x5d, + 0x89, 0x79, 0x23, 0x58, 0xd3, 0xf7, 0x1, 0xf7, 0xf, 0xd2, 0xd7, 0xe8, + 0x9b, 0xb2, 0x8a, 0x66, 0x1e, 0xe, 0x7c, 0xe9, 0xec, 0xea, 0xe3, 0xea, + 0x1, 0x7d, 0xed, 0xf7, 0x3a, 0xed, 0x3, 0xf7, 0xf5, 0xf7, 0x44, 0x15, + 0xf7, 0x8f, 0x6, 0xf7, 0xf, 0x9d, 0x61, 0xf7, 0x2f, 0xfb, 0x23, 0x1b, + 0x5c, 0x60, 0x78, 0x68, 0x6a, 0x1f, 0xb1, 0x6a, 0x58, 0x9b, 0x57, 0x1b, + 0xfb, 0x18, 0x4f, 0x22, 0xfb, 0x1c, 0x49, 0x9b, 0xfb, 0x36, 0xf7, 0x39, + 0xd1, 0xba, 0xb8, 0xa2, 0x9d, 0x1f, 0x6a, 0xaa, 0xa8, 0x68, 0xe5, 0x1b, + 0xc4, 0xbe, 0x9a, 0xa0, 0xc2, 0x1f, 0x73, 0xe6, 0x5, 0x73, 0x4d, 0x53, + 0x82, 0x74, 0x1b, 0x38, 0x7d, 0xd6, 0x9f, 0x1f, 0x86, 0xec, 0x15, 0xb3, + 0x8f, 0xa7, 0xbb, 0xc1, 0x1b, 0xcf, 0x93, 0x48, 0x76, 0x8c, 0x1f, 0xfc, + 0x3f, 0x51, 0x15, 0xab, 0x8b, 0xf7, 0x6, 0xe6, 0xd3, 0x8e, 0xfb, 0x2, + 0x67, 0x67, 0x87, 0x29, 0x3a, 0x47, 0x7e, 0xef, 0xad, 0x1e, 0xe, 0xfb, + 0x4d, 0x76, 0xf7, 0x7d, 0xf4, 0xf7, 0xc, 0xf1, 0xf7, 0xa, 0xf7, 0x2, + 0x12, 0xba, 0xf7, 0x0, 0x30, 0xf1, 0xd9, 0xf7, 0x2e, 0xa5, 0xf6, 0x39, + 0xf3, 0x13, 0xfa, 0x80, 0xba, 0xa6, 0x15, 0xf7, 0x0, 0xb9, 0x6, 0xa6, + 0x80, 0xa9, 0x7e, 0xab, 0x82, 0x8, 0xfb, 0x13, 0x7, 0x8d, 0x95, 0x9c, + 0x92, 0x9d, 0x1b, 0x9d, 0x95, 0x81, 0x78, 0x7c, 0x7e, 0x7e, 0x7d, 0x8a, + 0x1f, 0x74, 0x89, 0x78, 0x93, 0x81, 0x94, 0x6e, 0x55, 0x18, 0x79, 0xa1, + 0xa9, 0x7e, 0xac, 0x1b, 0xd0, 0xae, 0xc2, 0xc0, 0xa8, 0x81, 0xbb, 0x57, + 0x97, 0x1f, 0x8c, 0xaf, 0x5, 0xf7, 0xc, 0x90, 0xeb, 0xcd, 0xf2, 0x1a, + 0xf7, 0x11, 0xfb, 0xc, 0xaa, 0x2f, 0x88, 0x1e, 0x13, 0xf7, 0x0, 0x28, + 0x92, 0x3f, 0x93, 0xb7, 0x1a, 0xbf, 0xed, 0x92, 0xa3, 0xb9, 0xbf, 0x73, + 0x75, 0xb1, 0x1e, 0x54, 0xf6, 0xf7, 0x67, 0x20, 0x63, 0x7, 0x9b, 0x62, + 0x55, 0xa3, 0x59, 0x1b, 0x27, 0xfb, 0x7, 0x5d, 0xfb, 0xd, 0xfb, 0x25, + 0xf7, 0x35, 0x7f, 0xdb, 0x85, 0x1f, 0x13, 0xfa, 0x80, 0xb3, 0x88, 0xf3, + 0x98, 0x4e, 0x1a, 0x62, 0x43, 0x6f, 0x4f, 0x3e, 0x52, 0xb3, 0x96, 0x6f, + 0x1e, 0xd2, 0xfb, 0x0, 0x7, 0xe, 0xfb, 0x4d, 0x76, 0xf7, 0x59, 0xe3, + 0xf1, 0xe1, 0x99, 0xf7, 0x46, 0x2e, 0xe8, 0x12, 0xcd, 0xef, 0x35, 0xe1, + 0x35, 0xea, 0xd3, 0xf7, 0x23, 0xa3, 0xee, 0x3f, 0xeb, 0x13, 0xf4, 0xa0, + 0xcd, 0x82, 0x15, 0xef, 0xb1, 0x6, 0xa4, 0x82, 0xa6, 0x80, 0xa8, 0x84, + 0x8, 0xfb, 0x0, 0x7, 0x8d, 0x95, 0x9a, 0x91, 0x9b, 0x1b, 0x9d, 0x93, + 0x82, 0x7c, 0x7e, 0x80, 0x80, 0x7d, 0x8a, 0x1f, 0x76, 0x89, 0x7a, 0x92, + 0x81, 0x93, 0x71, 0x5d, 0x18, 0x7c, 0x9f, 0xa7, 0x80, 0xa9, 0x1b, 0xcc, + 0xab, 0xb9, 0xb8, 0xa3, 0x82, 0xb4, 0x5b, 0x95, 0x1f, 0x8c, 0xaa, 0x5, + 0xf7, 0x2, 0x90, 0xe4, 0xc2, 0xe1, 0x1a, 0xf5, 0xfb, 0x3, 0xa6, 0x36, + 0x88, 0x1e, 0x13, 0xe9, 0xc0, 0x2f, 0x91, 0x45, 0x92, 0xaf, 0x1a, 0xb8, + 0xe5, 0x90, 0xa2, 0xb6, 0xbb, 0x77, 0x79, 0xae, 0x1e, 0x13, 0xf2, 0xc0, + 0x5c, 0xee, 0xf7, 0x46, 0x28, 0x69, 0x7, 0x99, 0x65, 0x59, 0x9f, 0x5d, + 0x1b, 0x2e, 0x20, 0x64, 0x24, 0xfb, 0xe, 0xf7, 0x2a, 0x82, 0xd5, 0x86, + 0x1f, 0x13, 0xf4, 0xa0, 0xaf, 0x88, 0xec, 0x95, 0x58, 0x1a, 0x69, 0x48, + 0x73, 0x53, 0x44, 0x58, 0xae, 0x94, 0x71, 0x1e, 0x13, 0xf4, 0xc0, 0xc7, + 0x27, 0x7, 0xe, 0x75, 0xe6, 0x8b, 0xf7, 0x27, 0xf7, 0x97, 0xe6, 0x8b, + 0xb6, 0x6d, 0xb6, 0xf7, 0x3c, 0x77, 0x12, 0xba, 0xf1, 0x36, 0xe0, 0x36, + 0xf2, 0xf7, 0x99, 0xf1, 0x3d, 0xf0, 0x13, 0xed, 0x20, 0xba, 0x75, 0x15, + 0xf1, 0xae, 0x6, 0x82, 0xa1, 0xbc, 0x71, 0xdc, 0x1b, 0xf7, 0x1d, 0xf7, + 0x7, 0xcc, 0xf7, 0x0, 0xe7, 0x3e, 0xb5, 0x3a, 0x98, 0x1f, 0x13, 0xf4, + 0xc0, 0x53, 0x93, 0xfb, 0x40, 0x7e, 0xe7, 0x1a, 0xb5, 0xbc, 0xbb, 0xe6, + 0xb6, 0xb5, 0x7f, 0x7c, 0xaf, 0x1e, 0x22, 0xf1, 0xf7, 0x73, 0x25, 0x73, + 0x7, 0x9a, 0x67, 0x5f, 0x94, 0x5e, 0x1b, 0xfb, 0x32, 0x3a, 0x26, 0x3b, + 0xfb, 0x2e, 0xf7, 0x48, 0x85, 0xf7, 0xa, 0x82, 0x1f, 0x13, 0xed, 0x20, + 0xc3, 0x87, 0xad, 0x79, 0x60, 0x1a, 0x5b, 0x60, 0x69, 0xfb, 0x0, 0x54, + 0x57, 0x9a, 0xa4, 0x5e, 0x1e, 0xde, 0x7, 0x13, 0xee, 0x40, 0x25, 0x6, + 0x13, 0xf5, 0x40, 0xf7, 0x62, 0xf8, 0x35, 0x15, 0xf5, 0x6, 0xf7, 0x3e, + 0xf7, 0x24, 0x4c, 0xaf, 0xfb, 0x35, 0x24, 0xfb, 0x31, 0xf3, 0x49, 0x69, + 0x5, 0xe, 0x7a, 0xe1, 0xed, 0xdf, 0x8b, 0xeb, 0x3a, 0xf7, 0x41, 0x2f, + 0xe7, 0x7d, 0xb9, 0x12, 0xcd, 0xed, 0x37, 0xdf, 0x37, 0xea, 0xf7, 0x83, + 0xee, 0x40, 0xea, 0x13, 0xe6, 0x20, 0xf7, 0x99, 0xf8, 0x79, 0x15, 0xf0, + 0x6, 0xf7, 0x38, 0xf7, 0x25, 0x4d, 0xb0, 0xfb, 0x2e, 0x22, 0xfb, 0x2e, + 0xf4, 0x4c, 0x67, 0x5, 0x70, 0xfd, 0x1c, 0x15, 0xed, 0xb1, 0x6, 0x7b, + 0xb9, 0xc3, 0x75, 0xc0, 0x1b, 0xf7, 0xb, 0xea, 0xc2, 0xe2, 0xf2, 0xfb, + 0x3, 0xa5, 0x36, 0x88, 0x1f, 0x13, 0xe4, 0xc0, 0x30, 0x92, 0x44, 0x91, + 0xaf, 0x1a, 0x13, 0xea, 0x40, 0xb5, 0xe6, 0x90, 0xa1, 0xb6, 0xba, 0x78, + 0x7a, 0xaf, 0x1e, 0x13, 0xd1, 0x40, 0x5e, 0xee, 0xf7, 0x41, 0x28, 0x6a, + 0x7, 0x99, 0x64, 0x5a, 0x9e, 0x5d, 0x1b, 0x2e, 0x20, 0x65, 0x28, 0xfb, + 0xc, 0xf7, 0x2a, 0x82, 0xd5, 0x85, 0x1f, 0x13, 0xe6, 0x20, 0xaf, 0x88, + 0xed, 0x96, 0x59, 0x1a, 0x6a, 0x47, 0x74, 0x53, 0x45, 0x56, 0xab, 0x94, + 0x70, 0x1e, 0xc6, 0x29, 0x7, 0xe, 0x8b, 0xe3, 0xf8, 0x1b, 0xe8, 0xe3, + 0xf7, 0x15, 0x12, 0x99, 0xf7, 0x80, 0x2b, 0xf7, 0x4, 0xd1, 0xf7, 0x4, + 0x28, 0xf7, 0x80, 0x13, 0xec, 0xf7, 0x13, 0x16, 0xf7, 0xe9, 0xe8, 0xfb, + 0xe, 0xf7, 0x14, 0x6, 0xf7, 0x34, 0xf7, 0x96, 0x5, 0x13, 0xea, 0xda, + 0xe8, 0xfb, 0x80, 0x2e, 0xc3, 0x6, 0x22, 0xfb, 0x3d, 0x23, 0xf7, 0x3d, + 0x5, 0x13, 0xf4, 0xc1, 0xe8, 0xfb, 0x80, 0x2e, 0xd8, 0x6, 0xf7, 0x34, + 0xfb, 0x96, 0x5, 0xfb, 0x14, 0xfb, 0x10, 0x7, 0xf7, 0x62, 0xf8, 0xcb, + 0x15, 0xf7, 0x1, 0xf7, 0x15, 0xfb, 0x1, 0x6, 0xfb, 0x48, 0xfb, 0x15, + 0x15, 0xf7, 0x2, 0xf7, 0x15, 0xfb, 0x2, 0x6, 0xe, 0x8b, 0xe6, 0xf8, + 0xc, 0xe5, 0x8b, 0xc1, 0xf7, 0x47, 0x77, 0x12, 0xcd, 0xed, 0xf7, 0xa8, + 0xed, 0x17, 0xc8, 0x16, 0xf8, 0x71, 0xf7, 0x6e, 0x29, 0xfb, 0x13, 0xfb, + 0x8a, 0x6, 0xf7, 0xd5, 0xf8, 0x26, 0x5, 0x13, 0x78, 0xcb, 0xfc, 0x55, + 0xfb, 0x5f, 0xed, 0xf7, 0x5, 0xf7, 0x6d, 0x7, 0xfb, 0xd4, 0xfc, 0x22, + 0x5, 0xf7, 0x4f, 0xf8, 0xb2, 0x15, 0xf0, 0x6, 0xf7, 0x36, 0xf7, 0x22, + 0x51, 0xaf, 0xfb, 0x30, 0x25, 0xfb, 0x2b, 0xf2, 0x4d, 0x69, 0x5, 0xe, + 0x8b, 0xe7, 0xf7, 0x2f, 0xf7, 0x43, 0x30, 0xe6, 0x8b, 0xc8, 0xf7, 0x4c, + 0x77, 0x12, 0xe9, 0xee, 0xf7, 0x79, 0xec, 0x13, 0xde, 0xf7, 0x94, 0xf8, + 0x77, 0x15, 0xf0, 0x6, 0xf7, 0x36, 0xf7, 0x26, 0x4e, 0xb1, 0xfb, 0x2c, + 0x21, 0xfb, 0x2e, 0xf5, 0x4c, 0x66, 0x5, 0x82, 0xfd, 0xa, 0x15, 0xf8, + 0x4b, 0xf7, 0x4e, 0x2a, 0x2d, 0xfb, 0x51, 0x6, 0xf7, 0xb2, 0xf7, 0x9c, + 0x5, 0xcd, 0xfc, 0x3d, 0xfb, 0x43, 0xee, 0x7, 0x13, 0xbe, 0xdf, 0xf7, + 0x40, 0x7, 0xfb, 0xb1, 0xfb, 0x98, 0x5, 0xe, 0xfb, 0x17, 0xe9, 0xf8, + 0x9, 0xe8, 0xeb, 0xe6, 0x1, 0xa4, 0x6c, 0x15, 0x71, 0x2f, 0x5, 0x87, + 0xb1, 0xab, 0x87, 0xb7, 0x1b, 0xdd, 0xde, 0xa9, 0xf2, 0x9f, 0x1f, 0xd1, + 0xf7, 0xe2, 0x5, 0xf6, 0x6, 0x9d, 0xe8, 0x5, 0xfb, 0x1, 0x6, 0xe5, + 0x93, 0xad, 0x91, 0xd7, 0x1b, 0xab, 0xaa, 0x87, 0x89, 0x9f, 0x1f, 0x9b, + 0xe5, 0x5, 0x8d, 0x68, 0x67, 0x90, 0x66, 0x1b, 0xfb, 0x10, 0x8a, 0x4b, + 0x5f, 0x7b, 0xfb, 0x22, 0x8, 0x25, 0x6, 0x78, 0x2e, 0x5, 0xf3, 0x6, + 0x4f, 0xfb, 0xae, 0x5, 0x3d, 0x7d, 0x79, 0x7e, 0x51, 0x1b, 0x73, 0x5a, + 0x8f, 0x8d, 0x73, 0x1f, 0xe, 0x79, 0xe9, 0x8b, 0xf1, 0x8b, 0xea, 0x8b, + 0xd1, 0xf7, 0x26, 0xe6, 0x8b, 0xaf, 0xf7, 0x42, 0x77, 0x12, 0x99, 0xed, + 0xf7, 0xdd, 0xea, 0x35, 0xed, 0x13, 0xff, 0x80, 0x46, 0xa, 0xd0, 0xf7, + 0x17, 0xf7, 0x21, 0xe6, 0xd3, 0xed, 0x1f, 0x13, 0xff, 0x40, 0x41, 0xa, + 0xfb, 0xf, 0xfb, 0x4d, 0xfb, 0x62, 0xf7, 0x33, 0x37, 0xf7, 0x36, 0x1f, + 0x13, 0xff, 0x80, 0x58, 0xa, 0x64, 0xf7, 0xeb, 0x15, 0xe7, 0x6, 0xf7, + 0x29, 0xf7, 0x1e, 0x5, 0x13, 0xff, 0x40, 0x3e, 0xa, 0xfb, 0x26, 0xe4, + 0xed, 0xe3, 0x3d, 0xe3, 0xf7, 0x6b, 0xe4, 0x3e, 0xe3, 0x8b, 0xb2, 0xf7, + 0x42, 0x77, 0x69, 0xa, 0x13, 0xd7, 0x80, 0x50, 0xa, 0xf3, 0xf2, 0x1f, + 0xf7, 0xb9, 0x7, 0x13, 0xd7, 0x40, 0xd7, 0xe4, 0xfb, 0x3c, 0x6e, 0x6, + 0x13, 0xcf, 0x80, 0x5a, 0xa, 0x1f, 0x13, 0xaf, 0x80, 0xfb, 0x9, 0xee, + 0x3c, 0xf7, 0x21, 0xc0, 0xbe, 0x98, 0xa7, 0xb1, 0x1e, 0x67, 0x7, 0x51, + 0x88, 0x54, 0x42, 0xa, 0x69, 0x33, 0x43, 0x44, 0xb1, 0xd2, 0x1e, 0xf7, + 0x1d, 0xf7, 0x89, 0x43, 0xa, 0xf8, 0x8c, 0x76, 0xf7, 0x42, 0x77, 0x1, + 0xf7, 0x35, 0xf8, 0x77, 0x15, 0xf7, 0x20, 0xf7, 0x2, 0xf7, 0x20, 0xfb, + 0x2, 0xc3, 0xac, 0xfb, 0x29, 0xf7, 0x21, 0x5, 0x2e, 0x6, 0xfb, 0x2c, + 0xfb, 0x20, 0x5, 0xe, 0xf8, 0x96, 0x76, 0xf7, 0x42, 0x77, 0x1, 0xf7, + 0x94, 0xf8, 0x81, 0x43, 0xa, 0xf8, 0x68, 0xde, 0x38, 0xf7, 0x37, 0x12, + 0x13, 0x40, 0xde, 0xf9, 0xb, 0x15, 0x43, 0x98, 0xcb, 0x30, 0xf7, 0x21, + 0x1b, 0xf7, 0x32, 0xbd, 0xf7, 0x4, 0xbe, 0x93, 0x1f, 0x2e, 0x6, 0x13, + 0x80, 0x63, 0x7a, 0x70, 0x63, 0x3c, 0x1b, 0x13, 0x40, 0x3d, 0x66, 0xb6, + 0xb0, 0x83, 0x1f, 0xe, 0xf8, 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x7a, 0xf7, + 0x20, 0x3, 0xf7, 0x7a, 0xf8, 0x79, 0x15, 0xf7, 0x20, 0xf7, 0x20, 0xfb, + 0x20, 0x6, 0xe, 0xf8, 0x75, 0xf7, 0x59, 0x1, 0xf7, 0x5a, 0xc8, 0xdd, + 0xc8, 0x3, 0xf7, 0x5a, 0xf8, 0xd7, 0x15, 0x56, 0xb9, 0x5e, 0xc2, 0xc4, + 0xb9, 0xb8, 0xc0, 0xc1, 0x5d, 0xb8, 0x52, 0x54, 0x5d, 0x5e, 0x55, 0x1e, + 0xc8, 0x16, 0xa2, 0x9d, 0x9d, 0xa1, 0xa3, 0x9d, 0x79, 0x74, 0x75, 0x79, + 0x79, 0x73, 0x75, 0x79, 0x9d, 0xa1, 0x1e, 0xe, 0xfb, 0x5b, 0xf7, 0x5b, + 0x12, 0xf7, 0x5d, 0xe4, 0x32, 0xf7, 0x51, 0x13, 0xc0, 0xf7, 0xbe, 0x16, + 0x7d, 0x88, 0x38, 0x68, 0x42, 0x1a, 0x5d, 0xaf, 0x61, 0xc0, 0x1e, 0x13, + 0xa0, 0xab, 0xb9, 0x9e, 0xa0, 0xa1, 0x1f, 0xd7, 0x7, 0x13, 0xc0, 0x79, + 0x73, 0x39, 0x60, 0xc5, 0x1a, 0xb6, 0xde, 0xad, 0xa5, 0x9a, 0x1e, 0xe, + 0xe3, 0xf8, 0x3b, 0x3, 0xe3, 0xf8, 0x9a, 0x15, 0xdc, 0x72, 0x5, 0xa3, + 0x98, 0x95, 0xae, 0xac, 0x1b, 0x9e, 0xa0, 0x7e, 0x7d, 0xa2, 0x1f, 0x7d, + 0xa4, 0xa7, 0x7c, 0xab, 0x1b, 0xec, 0xaa, 0xdf, 0xab, 0x95, 0x1f, 0x3a, + 0xa3, 0x5, 0x64, 0x78, 0x83, 0x76, 0x6e, 0x1b, 0x78, 0x76, 0x96, 0x97, + 0x75, 0x1f, 0x9b, 0x6f, 0x6e, 0x9d, 0x6e, 0x1b, 0x2d, 0x6f, 0x41, 0x62, + 0x7b, 0x1f, 0xe, 0xf8, 0x8f, 0x76, 0xf7, 0x43, 0x77, 0x1, 0xb3, 0xf8, + 0x9c, 0x3, 0xf7, 0x93, 0xf8, 0x8f, 0x15, 0xc8, 0x76, 0xf7, 0x88, 0xf7, + 0x25, 0x28, 0xa9, 0x5, 0xfc, 0x39, 0xfb, 0x2e, 0x15, 0xc8, 0x76, 0xf7, + 0x8a, 0xf7, 0x25, 0x28, 0xa9, 0x5, 0xe, 0xf7, 0x5f, 0xef, 0x1, 0xcc, + 0xf8, 0x6a, 0x3, 0xcc, 0xf7, 0x5f, 0x15, 0xf8, 0x6a, 0xef, 0xfc, 0x6a, + 0x6, 0xe, 0xf7, 0x5f, 0xef, 0x1, 0x81, 0xf9, 0x0, 0x3, 0x81, 0xf7, + 0x5f, 0x15, 0xf9, 0x0, 0xef, 0xfd, 0x0, 0x6, 0xe, 0xf7, 0xbe, 0x76, + 0xf7, 0xb5, 0x77, 0x1, 0xf7, 0xc7, 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, + 0x2b, 0xf7, 0xb5, 0x5, 0xfb, 0x2e, 0x6, 0xe, 0x4c, 0xa, 0xf7, 0x42, + 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x1a, 0x59, 0xa, 0xfb, 0x30, + 0x6, 0xe, 0xfb, 0xd, 0x45, 0xa, 0xf7, 0x42, 0xfb, 0x22, 0x15, 0xf7, + 0xd, 0x6, 0xf7, 0x17, 0x59, 0xa, 0xfb, 0x2f, 0x6, 0xe, 0x4c, 0xa, + 0xf8, 0x33, 0xf7, 0xa9, 0x5d, 0xa, 0x36, 0xfb, 0xb1, 0x5d, 0xa, 0xe, + 0x4c, 0xa, 0xf7, 0xad, 0xf7, 0xa9, 0x15, 0xf7, 0xb, 0x6, 0xf7, 0x18, + 0x59, 0xa, 0xfb, 0x2d, 0x6, 0xfb, 0xcb, 0x4e, 0xa, 0xfb, 0xd, 0x45, + 0xa, 0xf7, 0xad, 0xfb, 0x22, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x19, 0x59, + 0xa, 0xfb, 0x2e, 0x6, 0xfb, 0xca, 0x4e, 0xa, 0xf7, 0xdc, 0xed, 0x1, + 0xf7, 0x8e, 0xef, 0x3, 0xf7, 0x8e, 0x45, 0x15, 0xef, 0xf8, 0x29, 0xf7, + 0x24, 0xed, 0xfb, 0x24, 0xf7, 0x1d, 0x27, 0xfb, 0x1d, 0xfb, 0x24, 0x29, + 0xf7, 0x24, 0x6, 0xe, 0x5a, 0x76, 0xf7, 0x53, 0xed, 0xf6, 0xed, 0xf7, + 0x30, 0x77, 0x1, 0xf7, 0x90, 0xee, 0x3, 0xf5, 0xf7, 0xd, 0x15, 0xf7, + 0x26, 0xfb, 0x53, 0xee, 0xf7, 0x53, 0xf7, 0x23, 0xed, 0xfb, 0x23, 0xf6, + 0xf7, 0x23, 0xed, 0xfb, 0x23, 0xf7, 0x30, 0x28, 0xfb, 0x30, 0xfb, 0x26, + 0x29, 0xf7, 0x26, 0x20, 0xfb, 0x26, 0x6, 0xe, 0xf7, 0xc, 0xf7, 0xfe, + 0x1, 0xf7, 0xc, 0xf7, 0xfc, 0x3, 0xf8, 0x74, 0xf7, 0xc1, 0x15, 0xef, + 0x3b, 0xdc, 0x27, 0x27, 0x3b, 0x3a, 0x27, 0x27, 0xdb, 0x3a, 0xef, 0xef, + 0xdb, 0xdc, 0xef, 0x1e, 0xe, 0x7c, 0xf7, 0x17, 0x1, 0xa5, 0xf7, 0x1c, + 0xd1, 0xf7, 0x1c, 0xd1, 0xf7, 0x1c, 0x14, 0x70, 0xf8, 0x4a, 0xbd, 0x15, + 0x6c, 0xa3, 0x69, 0xb9, 0xb6, 0xa2, 0xad, 0xab, 0xad, 0x75, 0xaa, 0x5e, + 0x5a, 0x77, 0x66, 0x6e, 0x1e, 0xfb, 0x62, 0x16, 0x6c, 0xa3, 0x69, 0xb9, + 0xb7, 0xa1, 0xad, 0xab, 0xad, 0x75, 0xaa, 0x5e, 0x5b, 0x76, 0x66, 0x6e, + 0x1e, 0xfb, 0x62, 0x16, 0x6c, 0xa4, 0x69, 0xb8, 0xb7, 0xa1, 0xad, 0xab, + 0xad, 0x76, 0xaa, 0x5d, 0x5b, 0x76, 0x66, 0x6e, 0x1e, 0xe, 0x7c, 0xd1, + 0xf7, 0x1d, 0xd1, 0xd9, 0xd1, 0xf7, 0x1c, 0xd1, 0x12, 0xfb, 0x5, 0xd8, + 0xf3, 0xd7, 0x74, 0xd7, 0xf3, 0xd8, 0xa3, 0xd7, 0xf7, 0x32, 0xd8, 0x13, + 0xfb, 0xc0, 0xf8, 0x26, 0xf7, 0xf, 0x15, 0x43, 0xc6, 0x4a, 0xeb, 0x8a, + 0x1e, 0xe1, 0xd1, 0xc6, 0xdb, 0xd2, 0x4f, 0xce, 0x2d, 0x2f, 0x4a, 0x68, + 0xa, 0xc0, 0xbd, 0xa8, 0x6b, 0x67, 0x5c, 0x63, 0x75, 0x63, 0x58, 0x70, + 0xac, 0xaf, 0x1e, 0xfc, 0xe3, 0xf7, 0xf5, 0x15, 0x43, 0xc6, 0x4b, 0xea, + 0x8a, 0x1e, 0xe2, 0xd0, 0xc6, 0xda, 0xd2, 0x50, 0xce, 0x2c, 0x2f, 0x4b, + 0x49, 0x42, 0x1f, 0xd8, 0x8c, 0x15, 0xae, 0xa4, 0xac, 0xbf, 0xbe, 0xa8, + 0x6b, 0x67, 0x5d, 0x64, 0x75, 0x61, 0x5a, 0x70, 0xab, 0xaf, 0x1e, 0x13, + 0xfd, 0xc0, 0xf3, 0xfb, 0xf7, 0x15, 0x43, 0xc5, 0x4a, 0xea, 0x8a, 0x1e, + 0xe2, 0xd1, 0xc6, 0xdb, 0xd2, 0x4f, 0xce, 0x2c, 0x2f, 0x4c, 0x68, 0xa, + 0xbe, 0xbe, 0xa8, 0x6b, 0x67, 0x5c, 0x64, 0x75, 0x61, 0x5a, 0x70, 0xac, + 0xaf, 0x1e, 0xfb, 0x5b, 0xc0, 0x15, 0xf8, 0x55, 0xf7, 0x52, 0x6c, 0xca, + 0xfc, 0x56, 0xfb, 0x51, 0x5, 0xe, 0x7b, 0xa, 0xf7, 0x21, 0xf7, 0x96, + 0x15, 0xf7, 0x9f, 0xfb, 0x50, 0xbc, 0xca, 0xfb, 0x4b, 0xf7, 0x15, 0xf7, + 0x4b, 0xf7, 0xd, 0x5a, 0xca, 0x5, 0xe, 0x7b, 0xa, 0xf7, 0x21, 0xf7, + 0xd0, 0x3, 0xf7, 0x52, 0xf8, 0x52, 0x15, 0x5a, 0x4c, 0xf7, 0x4b, 0xfb, + 0xd, 0xfb, 0x4b, 0xfb, 0x15, 0xbc, 0x4c, 0xf7, 0x9f, 0xf7, 0x50, 0x5, + 0xe, 0x64, 0x76, 0xf9, 0x65, 0x77, 0x1, 0xa3, 0xf8, 0xbb, 0x3, 0xa3, + 0x83, 0x15, 0xd1, 0x57, 0xf8, 0x75, 0xf9, 0x34, 0x44, 0xbc, 0x5, 0xe, + 0x84, 0x76, 0xf7, 0x5f, 0xd4, 0xba, 0xd4, 0xf7, 0x2b, 0xe8, 0x1, 0xf7, + 0xf, 0xe9, 0x3, 0xc7, 0xaf, 0x15, 0xbe, 0x4b, 0x5, 0x93, 0x97, 0xec, + 0xb0, 0xbb, 0x1b, 0xa1, 0xa6, 0x82, 0x83, 0xa6, 0x1f, 0x84, 0xa2, 0xad, + 0x85, 0x9f, 0x1b, 0xd3, 0xa8, 0xbd, 0x71, 0xa, 0x7a, 0x72, 0x64, 0xa, + 0x6b, 0x94, 0x7c, 0x1b, 0x7a, 0x50, 0x86, 0x85, 0x7c, 0x1f, 0xa6, 0x9a, + 0x93, 0xb7, 0x89, 0xa0, 0x8, 0xf7, 0x45, 0xd4, 0xfb, 0x50, 0x6, 0x88, + 0x93, 0x87, 0xa3, 0x8a, 0x9a, 0x8, 0xf7, 0x58, 0xd4, 0xfb, 0x5a, 0x6, + 0x89, 0xa8, 0x8a, 0xa4, 0x94, 0x6c, 0xa, 0xba, 0x72, 0x5e, 0xa0, 0x1f, + 0xde, 0xaf, 0x5, 0xb9, 0x70, 0x57, 0xdc, 0x63, 0xa, 0x83, 0x8b, 0x77, + 0x8d, 0x73, 0x1e, 0x47, 0x42, 0xd0, 0x6, 0x8e, 0x75, 0x8b, 0x79, 0x8d, + 0x84, 0x8, 0x41, 0x42, 0xe1, 0x6, 0x91, 0x59, 0x63, 0x4d, 0x5a, 0x70, + 0x8, 0xe, 0x8b, 0xde, 0xe5, 0xd5, 0xc1, 0xd4, 0xf4, 0xde, 0x1, 0xd8, + 0xee, 0xf7, 0xdd, 0xed, 0x3, 0x82, 0xf7, 0x4c, 0x15, 0xef, 0x6, 0xfb, + 0xe, 0xae, 0xf7, 0x8, 0x4d, 0xf7, 0xd, 0x1b, 0xe3, 0xe1, 0xaa, 0xbc, + 0xd3, 0x1f, 0x53, 0xc3, 0x5, 0x63, 0x65, 0x3a, 0x79, 0x48, 0x1b, 0x46, + 0x8c, 0x44, 0xb3, 0x6d, 0xcc, 0x8, 0xf7, 0x40, 0x6, 0xa5, 0xd5, 0x5, + 0xfb, 0x6e, 0x6, 0x8a, 0x91, 0x8b, 0x94, 0x91, 0x92, 0x8c, 0x93, 0x92, + 0x1a, 0xf7, 0x7b, 0x6, 0xa6, 0xd4, 0x5, 0xfb, 0x83, 0x6, 0xd5, 0xa3, + 0xd5, 0xaa, 0xd3, 0x1b, 0xbf, 0x8a, 0xbf, 0x79, 0xae, 0x63, 0x8, 0x47, + 0xed, 0xf7, 0x66, 0x29, 0x5c, 0x7, 0xaa, 0x5e, 0x56, 0x9b, 0x54, 0x1b, + 0xfb, 0xa, 0xfb, 0x3, 0x43, 0xfb, 0x8, 0x6a, 0x1f, 0x43, 0x6, 0x70, + 0x42, 0x5, 0xe1, 0x79, 0x6, 0x8c, 0x72, 0x5, 0x4f, 0x6, 0xe, 0x7c, + 0xe8, 0xf7, 0x1c, 0xe8, 0xf7, 0x36, 0xe8, 0x1, 0xec, 0xee, 0xf7, 0x7b, + 0xed, 0x3, 0x97, 0x7c, 0x15, 0xf7, 0x9c, 0xe8, 0x3b, 0xf7, 0x1c, 0xde, + 0x6, 0xad, 0x5d, 0xb0, 0x5d, 0xa1, 0x6b, 0x5b, 0x55, 0x18, 0xd1, 0x58, + 0xaa, 0xa9, 0x95, 0x7c, 0x8d, 0x88, 0x93, 0x7f, 0x19, 0xf7, 0x22, 0xe8, + 0x32, 0x6, 0x7f, 0x9f, 0xcc, 0xe4, 0x44, 0xbc, 0x5c, 0x4a, 0x5d, 0xc8, + 0x5, 0xf5, 0x9e, 0xab, 0xd1, 0xd3, 0x1a, 0xf7, 0xb, 0x28, 0xbd, 0xfb, + 0x8, 0x1e, 0xfb, 0xba, 0x2e, 0xdc, 0xfc, 0x1b, 0x36, 0x6, 0xf7, 0x4c, + 0xf7, 0x79, 0x15, 0xf7, 0x36, 0x7, 0xf7, 0x4a, 0xbc, 0x92, 0x37, 0x2e, + 0x39, 0x93, 0xfb, 0x29, 0x1f, 0xe, 0xf7, 0x8f, 0x76, 0xf7, 0xae, 0xbc, + 0x1, 0xf7, 0x4, 0xbb, 0xf7, 0xb, 0xba, 0xf7, 0x58, 0xbb, 0x3, 0xf7, + 0xab, 0xf7, 0x7a, 0x15, 0xba, 0xf7, 0xb5, 0x6, 0xd1, 0xfb, 0xb5, 0x5, + 0xc7, 0x6, 0xcd, 0xf7, 0xb4, 0x5, 0xfb, 0xb4, 0xbb, 0xf7, 0xe0, 0x32, + 0x7, 0x52, 0xfb, 0x97, 0x51, 0xf7, 0x97, 0x5, 0x34, 0x6, 0xfb, 0x3b, + 0xfb, 0xe0, 0x15, 0xbb, 0xf7, 0xae, 0xdd, 0xbc, 0xfb, 0x69, 0x5a, 0xde, + 0x6, 0xe, 0x75, 0xa, 0xf7, 0x33, 0x76, 0xa, 0xf8, 0x7e, 0xe1, 0xfc, + 0x79, 0x5b, 0xa, 0x8e, 0xf9, 0x3, 0x1, 0xf7, 0x92, 0xe1, 0x3, 0xf7, + 0x92, 0x8e, 0x15, 0xe1, 0xf8, 0x5b, 0x6, 0xbf, 0x45, 0xcb, 0xbd, 0xfb, + 0x31, 0xf7, 0x50, 0xfb, 0x2f, 0xfb, 0x4d, 0xca, 0x58, 0xba, 0xca, 0x5, + 0xe, 0x75, 0xa, 0x6e, 0xf7, 0x96, 0x15, 0xf8, 0x7e, 0x47, 0xa, 0xfc, + 0x79, 0x6, 0xe, 0x91, 0x76, 0x1, 0xf7, 0x92, 0xe1, 0x3, 0xf7, 0x24, + 0xf7, 0x3e, 0x15, 0xf7, 0x2f, 0xfb, 0x4d, 0xf7, 0x31, 0xf7, 0x50, 0x4b, + 0xbd, 0x57, 0x45, 0x5, 0xf8, 0x5b, 0x35, 0xfc, 0x56, 0x7, 0x5c, 0xca, + 0x5, 0xe, 0xf7, 0x96, 0xe1, 0x1, 0x73, 0xf9, 0x1c, 0x3, 0xf7, 0x38, + 0x76, 0xa, 0xf7, 0xcc, 0x47, 0xa, 0xfb, 0xc2, 0x5b, 0xa, 0xf7, 0x5f, + 0xf7, 0x2, 0x1, 0xd2, 0xf8, 0x5e, 0x3, 0x5c, 0xa, 0xe, 0x8b, 0xe5, + 0xf7, 0x87, 0xe5, 0xd7, 0xf7, 0x13, 0x73, 0x77, 0x12, 0xf4, 0xe5, 0xf7, + 0x12, 0xf7, 0x42, 0x2f, 0xe7, 0x13, 0xea, 0xf8, 0x27, 0xf8, 0x87, 0x15, + 0xe7, 0xf7, 0x13, 0x2f, 0x6, 0x2f, 0xfd, 0x6, 0x15, 0xf7, 0xab, 0xe5, + 0x2c, 0xf7, 0xe1, 0x6, 0x13, 0xec, 0xfb, 0x42, 0x31, 0x6, 0x13, 0xda, + 0xdd, 0xfb, 0x87, 0x2f, 0x6, 0xfb, 0xc2, 0x31, 0x15, 0xf7, 0xae, 0xe5, + 0x2b, 0xf7, 0x87, 0xeb, 0xe5, 0x2b, 0xbf, 0x6, 0xb4, 0xdf, 0x87, 0xa4, + 0x1e, 0x8e, 0xe5, 0x5, 0x21, 0x2b, 0x8c, 0xfb, 0x1d, 0x1f, 0x60, 0x2b, + 0x31, 0xeb, 0xfb, 0x87, 0x2b, 0x7, 0xe, 0x8b, 0xe8, 0xf7, 0x90, 0xe8, + 0xea, 0xe5, 0x8e, 0x77, 0x12, 0xf4, 0xe5, 0xf7, 0x3d, 0xf7, 0x17, 0x31, + 0xe5, 0x13, 0xdc, 0xf7, 0xcc, 0x16, 0xf7, 0xaa, 0xe8, 0x2c, 0xf8, 0xa9, + 0xfb, 0x17, 0x6, 0x13, 0xec, 0x2e, 0x7, 0x13, 0xea, 0xb4, 0xfc, 0x4c, + 0x2e, 0x6, 0xfb, 0xc3, 0x2e, 0x15, 0xf7, 0xac, 0xe8, 0x2d, 0xf7, 0x90, + 0xe9, 0xe8, 0x2d, 0xbe, 0x6, 0xab, 0xb6, 0x96, 0xb1, 0x8c, 0x1e, 0xa5, + 0x8c, 0xa3, 0x8b, 0x91, 0x89, 0x8c, 0xe6, 0x18, 0x20, 0xfb, 0xd, 0x8b, + 0xfb, 0x20, 0x1f, 0x5e, 0x2b, 0x2e, 0xeb, 0xfb, 0x90, 0x2b, 0x7, 0xe, + 0x79, 0x9d, 0xf8, 0x4b, 0x9f, 0xf2, 0x9d, 0x9f, 0x95, 0x95, 0x95, 0x6, + 0xfb, 0x26, 0x8f, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xe8, + 0xa, 0xe8, 0xb, 0x8c, 0xc, 0xe, 0xf8, 0xec, 0x14, 0xae, 0x13, 0x0, + 0x5d, 0x2, 0x0, 0x1, 0x0, 0x35, 0x0, 0x43, 0x0, 0x47, 0x0, 0x7a, + 0x0, 0xba, 0x0, 0xc4, 0x0, 0xe9, 0x1, 0x17, 0x1, 0x34, 0x1, 0x4c, + 0x1, 0x65, 0x1, 0x7d, 0x1, 0x94, 0x1, 0xa8, 0x1, 0xbb, 0x1, 0xca, + 0x1, 0xdc, 0x1, 0xe2, 0x1, 0xe9, 0x1, 0xfc, 0x2, 0x6, 0x2, 0x10, + 0x2, 0x24, 0x2, 0x36, 0x2, 0x43, 0x2, 0x4c, 0x2, 0x6c, 0x2, 0x71, + 0x2, 0x78, 0x2, 0x7f, 0x2, 0x8d, 0x2, 0x95, 0x2, 0xa0, 0x2, 0xb8, + 0x2, 0xcf, 0x2, 0xd8, 0x2, 0xe1, 0x2, 0xe7, 0x2, 0xfa, 0x3, 0xd, + 0x3, 0x1c, 0x3, 0x2e, 0x3, 0x36, 0x3, 0x3e, 0x3, 0x43, 0x3, 0x49, + 0x3, 0x57, 0x3, 0x61, 0x3, 0x71, 0x3, 0x75, 0x3, 0x7e, 0x3, 0x87, + 0x3, 0x90, 0x3, 0x97, 0x3, 0xa5, 0x3, 0xb1, 0x3, 0xbf, 0x3, 0xc3, + 0x3, 0xd0, 0x3, 0xdb, 0x3, 0xe7, 0x3, 0xf2, 0x3, 0xfe, 0x4, 0x4, + 0x4, 0x8, 0x4, 0xe, 0x4, 0x14, 0x4, 0x1f, 0x4, 0x2a, 0x4, 0x31, + 0x4, 0x36, 0x4, 0x3b, 0x4, 0x45, 0x4, 0x4f, 0x4, 0x53, 0x4, 0x57, + 0x4, 0x60, 0x4, 0x69, 0x4, 0x72, 0x4, 0x7b, 0x4, 0x84, 0x4, 0x8d, + 0x4, 0x96, 0x4, 0x9f, 0x4, 0xa8, 0x4, 0xb1, 0x4, 0xba, 0x4, 0xc1, + 0x4, 0xc8, 0x4, 0xce, 0x4, 0xd4, 0x4, 0xd9, 0x4, 0xde, 0xf7, 0x97, + 0xe5, 0x27, 0x6, 0xa9, 0xcc, 0x5, 0xf7, 0x86, 0x6, 0xa9, 0x4a, 0x5, + 0x2a, 0x31, 0xf7, 0x92, 0xe5, 0x51, 0x6, 0xfb, 0x62, 0xf8, 0x62, 0x5, + 0xfb, 0x8f, 0x31, 0xf7, 0x15, 0x6, 0xfb, 0x3f, 0xfc, 0x8, 0x5, 0x4e, + 0x6, 0xf7, 0x7a, 0xf7, 0x2f, 0x15, 0xdc, 0xf7, 0x47, 0xdc, 0xfb, 0x47, + 0x5, 0xb, 0x2a, 0xa, 0x13, 0x7d, 0x4d, 0xa, 0x13, 0x7e, 0x2b, 0xa, + 0x13, 0xbe, 0x29, 0xa, 0x15, 0x20, 0xa, 0xe, 0x15, 0xfb, 0x39, 0xf7, + 0x2a, 0x51, 0xf7, 0xa, 0xf7, 0xf, 0xf7, 0x29, 0xcb, 0xf7, 0x33, 0xf7, + 0x24, 0xfb, 0x6, 0xe0, 0xfb, 0x32, 0xfb, 0x21, 0xfb, 0x13, 0x3d, 0xfb, + 0x2b, 0x1e, 0xef, 0x16, 0xdf, 0xd4, 0xc0, 0xea, 0xf7, 0x7, 0xc5, 0x52, + 0x3b, 0x34, 0x28, 0x5b, 0x41, 0x47, 0x27, 0xb7, 0xe6, 0x1e, 0xe, 0x15, + 0xf8, 0x23, 0x6, 0xf7, 0x1c, 0xa5, 0x32, 0xf7, 0x14, 0xfb, 0x43, 0x1b, + 0xfb, 0xc, 0xfb, 0x1f, 0x3f, 0xfb, 0x2b, 0xfb, 0x8, 0xe3, 0x21, 0xf7, + 0x41, 0xe5, 0xeb, 0xa9, 0xb4, 0xd7, 0x1f, 0x5f, 0xda, 0x5, 0x6d, 0x4b, + 0x3b, 0x6d, 0x41, 0x1b, 0xfb, 0x10, 0x69, 0xc7, 0xae, 0x86, 0x1f, 0x92, + 0xe6, 0x15, 0xc3, 0xa0, 0xce, 0xa4, 0xc8, 0x1b, 0xc7, 0xca, 0x7a, 0x4b, + 0x9e, 0x1f, 0xe, 0x2f, 0xa, 0xf7, 0x2e, 0x2e, 0xf7, 0x1c, 0x26, 0xa, + 0xb, 0xfb, 0x4c, 0xfb, 0x42, 0x22, 0xfb, 0x21, 0xfb, 0x2b, 0x1e, 0xed, + 0x8e, 0x15, 0xe6, 0xc8, 0xf6, 0xf7, 0xc, 0xf7, 0x1c, 0xb9, 0xfb, 0x13, + 0x47, 0x3a, 0x5a, 0xfb, 0x10, 0xfb, 0x19, 0xfb, 0xd, 0x4f, 0xf3, 0xed, + 0x1e, 0xb, 0xdb, 0xfb, 0xa2, 0x6, 0xfb, 0x11, 0xd3, 0x38, 0xf7, 0x25, + 0xf7, 0x11, 0xe8, 0xdc, 0xf7, 0x12, 0x1e, 0xf7, 0xa3, 0xd8, 0xe6, 0xfb, + 0x96, 0x30, 0xe1, 0xfb, 0x8d, 0x7, 0x35, 0x74, 0x57, 0x25, 0xfb, 0x4, + 0x83, 0xe2, 0xc0, 0x1e, 0xf7, 0x8b, 0xdf, 0xe6, 0xfb, 0x97, 0x7, 0xe, + 0x15, 0x13, 0xb5, 0x0, 0x2e, 0xa, 0x13, 0x78, 0x80, 0x64, 0xf7, 0x43, + 0xe6, 0x7, 0x13, 0x7a, 0x0, 0x3a, 0xf7, 0xe1, 0xfb, 0x41, 0x30, 0x6, + 0x13, 0xb9, 0x0, 0x2c, 0xa, 0x61, 0x5b, 0x4f, 0x69, 0x47, 0x1b, 0x60, + 0x62, 0x9c, 0xab, 0xb7, 0xbf, 0x9d, 0xc6, 0x8c, 0x1f, 0xc7, 0x8c, 0xcd, + 0x85, 0xa2, 0x89, 0x8, 0xe, 0x1f, 0x8f, 0x67, 0x63, 0x8e, 0x66, 0x1b, + 0xfb, 0x7f, 0x82, 0xfb, 0x19, 0x78, 0x4b, 0xcb, 0x3e, 0xf7, 0xa, 0xda, + 0xb0, 0xa1, 0xae, 0xc6, 0x1f, 0xb, 0x38, 0xf7, 0x37, 0x6, 0xf7, 0xe, + 0x5d, 0xc8, 0xfb, 0x10, 0xfb, 0x0, 0xfb, 0xe, 0x66, 0x7f, 0x7a, 0x1e, + 0xf7, 0xd6, 0xfb, 0x7c, 0x15, 0xb, 0xda, 0xfb, 0x4f, 0x6, 0x75, 0x63, + 0x52, 0x71, 0x59, 0x8a, 0x8, 0x5a, 0x8a, 0x60, 0xa0, 0xbf, 0x1a, 0xf7, + 0xa5, 0xfb, 0x42, 0x7, 0xe, 0xfb, 0x93, 0x38, 0xa, 0xf7, 0x93, 0xfb, + 0x6, 0xed, 0xf7, 0x60, 0xfc, 0xa2, 0x31, 0xd7, 0xfc, 0x8, 0x3c, 0x6, + 0xb, 0xdc, 0xfb, 0x48, 0x6, 0xfb, 0x2, 0xc7, 0x54, 0xf7, 0xa, 0x8a, + 0x1e, 0xbf, 0xbe, 0xa1, 0xa9, 0xac, 0x1f, 0xb, 0x15, 0xfb, 0x56, 0xf7, + 0x25, 0x2d, 0xf7, 0x1a, 0xf3, 0xf7, 0x41, 0xd2, 0xf7, 0x6f, 0xb, 0xfb, + 0x3f, 0xf8, 0x8, 0xf7, 0x36, 0xe5, 0xfc, 0x3f, 0x31, 0xf7, 0x39, 0xfc, + 0x8, 0xfb, 0x43, 0x6, 0xb, 0xf8, 0x52, 0xe5, 0x30, 0xa, 0xb, 0x8b, + 0xe6, 0xf8, 0x10, 0xe6, 0x1, 0xb, 0x15, 0xf8, 0x52, 0xe6, 0xfb, 0x43, + 0xf7, 0xe0, 0xfb, 0x7e, 0x30, 0xf7, 0x1d, 0xfb, 0x85, 0xfb, 0x42, 0x6, + 0xe, 0x12, 0xab, 0xec, 0xf7, 0x98, 0xea, 0x2c, 0xf7, 0x46, 0xb, 0xf8, + 0xa5, 0xf7, 0x5e, 0x29, 0xfb, 0x4, 0x2d, 0xa, 0xb, 0x77, 0x12, 0x9a, + 0xf7, 0x42, 0x2e, 0xe8, 0xf7, 0x22, 0xf7, 0x41, 0x2d, 0xe9, 0x2d, 0xf7, + 0x43, 0x13, 0xba, 0x0, 0xb, 0x5a, 0xbb, 0x64, 0xc7, 0xc7, 0xbb, 0xb2, + 0xbc, 0xbc, 0x5b, 0xb2, 0x4f, 0x4f, 0x5b, 0x64, 0x5a, 0x1e, 0xb, 0xf7, + 0x27, 0xf1, 0x4b, 0xee, 0xf7, 0x6c, 0x28, 0x4b, 0x25, 0xf7, 0x1d, 0xb, + 0x7c, 0xe6, 0x3c, 0xe5, 0xf0, 0xe5, 0xcf, 0xe2, 0xb, 0x7, 0xf7, 0x9e, + 0xf8, 0x26, 0x5, 0xd7, 0xe2, 0xfb, 0x76, 0x34, 0xb8, 0x6, 0xfb, 0x14, + 0xfb, 0x54, 0xfb, 0x6, 0xf7, 0x54, 0x5, 0xbc, 0xe2, 0xfb, 0x7b, 0x34, + 0xd7, 0x6, 0xf7, 0x3a, 0xb, 0x34, 0xa, 0x13, 0xbe, 0xb, 0x4a, 0xa, + 0xf7, 0x83, 0x36, 0xa, 0xb, 0xbf, 0xa9, 0x70, 0x5b, 0x2a, 0xa, 0xb, + 0x53, 0xaf, 0xfb, 0x20, 0xfb, 0x1, 0xfb, 0x20, 0xf7, 0x1, 0x51, 0x68, + 0x5, 0xe, 0x15, 0x9b, 0xa9, 0xf4, 0xa4, 0xd7, 0x1b, 0xb, 0xe9, 0x1, + 0xf7, 0x8e, 0xee, 0x60, 0xa, 0xe9, 0xfb, 0x42, 0xb, 0xc9, 0xaf, 0x75, + 0x6d, 0xbe, 0x1f, 0x2d, 0xed, 0xf7, 0x81, 0x29, 0x5c, 0x7, 0xa5, 0x62, + 0x66, 0xa0, 0x41, 0x1b, 0xfb, 0x32, 0xfb, 0x12, 0xb, 0xfb, 0xa, 0x42, + 0x39, 0xa3, 0x95, 0x64, 0x1e, 0xa7, 0xf7, 0xa3, 0x15, 0xd2, 0xcd, 0xba, + 0xd9, 0xdf, 0xc6, 0x5f, 0x3f, 0x42, 0x53, 0xb, 0x15, 0xe7, 0x6, 0xf7, + 0x29, 0xf7, 0x1e, 0x3e, 0xa, 0x1, 0x82, 0xf7, 0x97, 0xf4, 0xf7, 0x92, + 0x3, 0xb, 0x76, 0xf7, 0xb1, 0x77, 0x1, 0xb, 0xf7, 0xc4, 0xf7, 0x46, + 0x15, 0xf7, 0x1d, 0x32, 0x6, 0x81, 0x62, 0x64, 0x88, 0x67, 0x1b, 0xfb, + 0x14, 0x36, 0xb, 0x6, 0x45, 0x57, 0xbd, 0x4c, 0xf7, 0x50, 0xf7, 0x30, + 0xfb, 0x4d, 0xf7, 0x30, 0x58, 0x4c, 0xca, 0x5b, 0x5, 0xb, 0x8b, 0xe5, + 0xf7, 0x27, 0xe3, 0xf7, 0x1d, 0x5f, 0xa, 0xf7, 0x9, 0xec, 0xf1, 0xee, + 0xb, 0x66, 0xac, 0x6c, 0xb4, 0xb4, 0xac, 0xaa, 0xb0, 0xb2, 0x6a, 0xa9, + 0x62, 0x62, 0x6a, 0x6d, 0x64, 0x1e, 0xb, 0x7c, 0xe7, 0x3c, 0xe6, 0xf7, + 0x86, 0xe6, 0xb, 0x1, 0xa9, 0xef, 0xf7, 0xe9, 0xee, 0x3, 0xb, 0xf7, + 0xbe, 0x45, 0xa, 0xb, 0x5e, 0xf7, 0x46, 0xe5, 0x7, 0xb, 0xfb, 0xb1, + 0x15, 0xf7, 0x9, 0x6, 0xf7, 0x1a, 0x59, 0xa, 0xfb, 0x2e, 0x6, 0xe, + 0x79, 0xe6, 0xf8, 0x17, 0xe6, 0xf7, 0x7d, 0x52, 0xa, 0xb, 0xe7, 0x74, + 0x15, 0x75, 0x32, 0x5, 0x79, 0xdf, 0xc8, 0x7b, 0xd5, 0x1b, 0xf7, 0x50, + 0xa1, 0xb, 0x3f, 0xa, 0xbf, 0xb, 0x77, 0x1, 0xdf, 0xea, 0xf7, 0x89, + 0xea, 0x3, 0xb, 0x15, 0xf7, 0x5, 0xf7, 0x10, 0xfb, 0x5, 0x6, 0xb, + 0x77, 0x1, 0xa1, 0xed, 0xf7, 0xff, 0xea, 0x3, 0xb, 0x7c, 0xe5, 0xea, + 0xe6, 0xdc, 0xe7, 0xb, 0x6, 0xfb, 0x4e, 0xfb, 0xe, 0x15, 0xf7, 0x6, + 0xf7, 0xe, 0xfb, 0x6, 0x6, 0xb, 0x8b, 0xe6, 0xf7, 0x85, 0xe6, 0xf7, + 0x82, 0x67, 0xa, 0xec, 0x3, 0xb, 0xd2, 0xd2, 0x9c, 0xaa, 0xc6, 0x1f, + 0xf7, 0x28, 0xbd, 0xea, 0xfb, 0xae, 0x7, 0xb, 0xf7, 0xb1, 0x5, 0xb, + 0xa7, 0x66, 0x5a, 0x97, 0x56, 0x1b, 0xfb, 0x23, 0x27, 0x30, 0xfb, 0x8, + 0xb, 0x6, 0xca, 0xbb, 0x58, 0xca, 0xfb, 0x4d, 0xfb, 0x30, 0x5, 0xe, + 0xd2, 0xf7, 0x5f, 0x15, 0xf8, 0x5e, 0xf7, 0x2, 0xfc, 0x5e, 0x6, 0xb, + 0x15, 0xf7, 0x9, 0x6, 0x2b, 0x59, 0xa, 0xfb, 0x2c, 0x6, 0xb, 0xaf, + 0x76, 0xf8, 0x7a, 0x77, 0x1, 0xd2, 0xf8, 0x5d, 0x3, 0xd2, 0xb, 0xe5, + 0xf7, 0x7c, 0x77, 0x1, 0xb, 0x3, 0x66, 0xa, 0xb, 0x79, 0xe4, 0xf8, + 0x24, 0xe6, 0xb, 0x7c, 0xe7, 0xf7, 0x9f, 0xe7, 0xb, 0xfb, 0x12, 0x1b, + 0xfb, 0x1b, 0x45, 0x2b, 0x2c, 0x8c, 0x1f, 0xb, 0x67, 0x1b, 0x81, 0x7c, + 0x8f, 0x91, 0x7b, 0x1f, 0x92, 0x76, 0xb, 0xc3, 0x56, 0xf8, 0xd0, 0xf9, + 0xf, 0xb, 0xd8, 0x16, 0xf8, 0x52, 0xb, 0x77, 0x1, 0xf7, 0x8f, 0xb, + 0x49, 0x42, 0x1f, 0xd7, 0x8c, 0x15, 0xae, 0xa5, 0xac, 0xb, 0x12, 0xa4, + 0xea, 0xf7, 0xb3, 0xe7, 0x2f, 0xf7, 0x3c, 0xb, 0xfb, 0xc, 0x5, 0xb, + 0xfb, 0x3, 0x6, 0xb, 0x1a, 0xbc, 0x8a, 0xb2, 0xb1, 0xd5, 0x1b, 0xbf, + 0xb, 0x1, 0xf7, 0x54, 0xf7, 0x6c, 0x3, 0xf7, 0x54, 0xb, 0x77, 0x1, + 0xf7, 0x93, 0xe5, 0x3, 0xf7, 0x93, 0xb, 0x15, 0xf7, 0x2, 0xf7, 0x11, + 0xfb, 0x2, 0x6, 0xb, 0x15, 0xf7, 0x6, 0xf7, 0x12, 0xfb, 0x6, 0x6, + 0xb, 0xa4, 0xa0, 0x1f, 0x53, 0xca, 0x5, 0x77, 0x71, 0xb, 0x15, 0xf7, + 0x4, 0xf7, 0x12, 0xfb, 0x4, 0x6, 0xb, 0x15, 0xf7, 0xa, 0xf7, 0x24, + 0xfb, 0xa, 0x6, 0xb, 0xf7, 0x3c, 0xe6, 0xfc, 0x4c, 0x30, 0xf7, 0x3f, + 0xb, 0xf7, 0x96, 0xe1, 0x1, 0x6e, 0xf9, 0x26, 0x3, 0xb, 0xf7, 0x23, + 0x15, 0xbd, 0xca, 0x45, 0xbf, 0x5, 0xb, 0xc5, 0xfb, 0xc3, 0xf7, 0xd, + 0x5, 0xe, 0xa1, 0xd8, 0x1e, 0xf6, 0x29, 0x7, 0xe, 0x15, 0xf7, 0x3, + 0xf7, 0x23, 0xb, 0x30, 0xde, 0xfc, 0x10, 0x38, 0xb, 0xd1, 0xf8, 0xc, + 0x1, 0xb, 0x8b, 0xe9, 0xf7, 0x8f, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp b/core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp new file mode 100644 index 0000000000..c9509e6c6b --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp @@ -0,0 +1,1605 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitFixedBoldItalicFontData[19151] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x19, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x2d, 0x42, + 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, + 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, 0x2a, 0x1, 0xf8, 0x2b, 0x2, 0xf8, + 0x2c, 0x3, 0xf8, 0x14, 0x4, 0xfb, 0xa, 0xfb, 0x8d, 0xf9, 0x49, 0xf9, + 0xbf, 0x5, 0xf7, 0xad, 0xf, 0xf9, 0x94, 0x11, 0xac, 0x1c, 0x44, 0x2e, + 0x12, 0x0, 0x12, 0x1, 0x1, 0x5, 0xb, 0xd, 0x11, 0x19, 0x22, 0x2b, + 0x34, 0x3e, 0x45, 0x4b, 0x4d, 0x51, 0x5d, 0x65, 0x8f, 0xaa, 0xb9, 0x45, + 0x75, 0x72, 0x6f, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x49, 0x4a, 0x49, + 0x64, 0x6f, 0x74, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x61, + 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x61, 0x72, 0x72, 0x6f, + 0x77, 0x64, 0x6f, 0x77, 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, + 0x66, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x61, 0x72, 0x72, 0x6f, 0x77, 0x75, 0x70, 0x67, 0x63, 0x61, 0x72, 0x6f, + 0x6e, 0x69, 0x6a, 0x6c, 0x69, 0x72, 0x61, 0x70, 0x72, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x63, 0x65, 0x64, 0x69, + 0x6c, 0x6c, 0x61, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, + 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x20, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, + 0x43, 0x68, 0x72, 0x6F, 0x68, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, + 0x4f, 0x54, 0x46, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x8a, 0x0, 0xab, + 0x0, 0xac, 0x0, 0xad, 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, 0x23, + 0x0, 0x24, 0x0, 0xb1, 0x0, 0x25, 0x0, 0x26, 0x0, 0xb2, 0x0, 0xb3, + 0x0, 0xb4, 0x0, 0xb5, 0x0, 0x9a, 0x1, 0x87, 0x0, 0x27, 0x0, 0x28, + 0x1, 0x88, 0x0, 0x29, 0x0, 0x2a, 0x1, 0x89, 0x0, 0xb6, 0x0, 0xb7, + 0x0, 0xb8, 0x1, 0x8a, 0x0, 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, + 0x0, 0x8c, 0x0, 0x2e, 0x0, 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, + 0x0, 0xbb, 0x0, 0xbc, 0x0, 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, + 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0xc0, 0x1, 0x8b, + 0x0, 0x35, 0x0, 0x9d, 0x0, 0x36, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, + 0x0, 0xc4, 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0xc5, + 0x0, 0xc6, 0x0, 0x3b, 0x0, 0xc7, 0x0, 0x42, 0x0, 0xc8, 0x0, 0xc9, + 0x0, 0x7d, 0x0, 0xca, 0x0, 0x90, 0x0, 0xcb, 0x0, 0x7, 0x0, 0xcc, + 0x1, 0x8c, 0x1, 0x8d, 0x1, 0x8e, 0x1, 0x8f, 0x1, 0x90, 0x0, 0x3f, + 0x0, 0x5f, 0x0, 0xb, 0x0, 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, + 0x0, 0x5d, 0x0, 0x5c, 0x0, 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, + 0x0, 0xa0, 0x0, 0x74, 0x0, 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, + 0x0, 0x61, 0x0, 0x7e, 0x0, 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, + 0x0, 0x45, 0x0, 0x70, 0x0, 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, + 0x0, 0x5, 0x0, 0x82, 0x0, 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, + 0x0, 0xd1, 0x0, 0xd2, 0x0, 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, + 0x0, 0x1e, 0x0, 0xa7, 0x0, 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, + 0x0, 0x16, 0x0, 0x6e, 0x0, 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, + 0x1, 0x91, 0x0, 0x95, 0x0, 0x7c, 0x0, 0x1f, 0x0, 0x6a, 0x0, 0x78, + 0x0, 0x6b, 0x0, 0x6c, 0x0, 0x49, 0x0, 0x86, 0x0, 0xe, 0x0, 0x4a, + 0x0, 0xd3, 0x0, 0xd4, 0x0, 0xd5, 0x0, 0xd6, 0x1, 0x92, 0x0, 0x4b, + 0x0, 0x4c, 0x0, 0x4d, 0x0, 0x1d, 0x1, 0x93, 0x0, 0x97, 0x0, 0x92, + 0x0, 0x4e, 0x0, 0x80, 0x0, 0xa6, 0x0, 0x98, 0x0, 0xa8, 0x0, 0x4f, + 0x0, 0x1a, 0x0, 0xd7, 0x0, 0x4, 0x0, 0x50, 0x0, 0xd8, 0x0, 0xd9, + 0x0, 0xda, 0x0, 0x94, 0x0, 0x87, 0x0, 0xdb, 0x0, 0x12, 0x0, 0x9b, + 0x0, 0x9e, 0x0, 0x96, 0x0, 0x8b, 0x0, 0x8f, 0x0, 0x93, 0x0, 0xdc, + 0x0, 0x51, 0x0, 0x73, 0x0, 0x9, 0x0, 0xa, 0x0, 0x6, 0x0, 0xf, + 0x0, 0x72, 0x0, 0x7a, 0x0, 0xc, 0x0, 0x9c, 0x1, 0x94, 0x0, 0x52, + 0x0, 0x20, 0x0, 0x7b, 0x0, 0x3, 0x0, 0x76, 0x0, 0x69, 0x0, 0x77, + 0x0, 0x41, 0x0, 0x8, 0x0, 0x75, 0x0, 0x68, 0x0, 0x53, 0x0, 0xa5, + 0x0, 0x84, 0x0, 0x54, 0x0, 0xdd, 0x1, 0x95, 0x0, 0x66, 0x0, 0x1c, + 0x0, 0x18, 0x0, 0x17, 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, 0x55, + 0x0, 0xa2, 0x0, 0x14, 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, 0x99, + 0x0, 0x13, 0x0, 0xa4, 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, 0xe0, + 0x0, 0xe1, 0x0, 0x40, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, + 0x0, 0xe2, 0x0, 0xe3, 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, 0x11, + 0x0, 0xf4, 0x2, 0x0, 0x1, 0x0, 0x2, 0x0, 0x44, 0x0, 0xc1, 0x0, + 0xdc, 0x1, 0x2, 0x1, 0x26, 0x1, 0x40, 0x1, 0x76, 0x1, 0xbf, 0x2, + 0x29, 0x2, 0x78, 0x2, 0xfe, 0x3, 0x37, 0x3, 0x84, 0x3, 0xa1, 0x3, + 0xc9, 0x3, 0xed, 0x4, 0x13, 0x4, 0x6e, 0x4, 0xf0, 0x5, 0x3a, 0x5, + 0x9a, 0x6, 0x8, 0x6, 0x5e, 0x6, 0x83, 0x6, 0xdb, 0x6, 0xf4, 0x7, + 0x1d, 0x7, 0x38, 0x7, 0x6e, 0x7, 0x84, 0x7, 0xc1, 0x8, 0x19, 0x8, + 0x45, 0x8, 0x85, 0x8, 0xc9, 0x8, 0xf8, 0x9, 0x6e, 0x9, 0xb6, 0xa, + 0x36, 0xa, 0x52, 0xa, 0x75, 0xa, 0x9a, 0xa, 0xbb, 0xb, 0x3c, 0xb, + 0x86, 0xb, 0xd0, 0xc, 0x48, 0xc, 0xa7, 0xd, 0x1b, 0xd, 0x8b, 0xe, + 0x2b, 0xe, 0x5c, 0xe, 0xba, 0xf, 0x17, 0xf, 0x33, 0xf, 0x59, 0xf, + 0x81, 0xf, 0x9a, 0xf, 0xcb, 0x10, 0xd, 0x10, 0x56, 0x10, 0x8f, 0x10, + 0xe0, 0x11, 0x4b, 0x11, 0x7d, 0x11, 0xce, 0x12, 0x48, 0x12, 0x67, 0x12, + 0x9b, 0x12, 0xaf, 0x12, 0xdd, 0x13, 0x88, 0x13, 0xa6, 0x14, 0x29, 0x14, + 0x62, 0x14, 0x83, 0x14, 0xa5, 0x14, 0xc3, 0x14, 0xdc, 0x15, 0x0, 0x15, + 0x32, 0x15, 0x7e, 0x15, 0xad, 0x16, 0x4c, 0x16, 0xaa, 0x17, 0x8, 0x17, + 0x21, 0x17, 0x3b, 0x17, 0xb4, 0x18, 0x2c, 0x18, 0x4c, 0x18, 0x70, 0x18, + 0x94, 0x18, 0xbd, 0x18, 0xde, 0x19, 0x29, 0x19, 0x44, 0x19, 0xc2, 0x19, + 0xfe, 0x1a, 0x5d, 0x1a, 0x7a, 0x1a, 0xb5, 0x1a, 0xd3, 0x1b, 0x5a, 0x1b, + 0xd7, 0x1c, 0x39, 0x1c, 0x6a, 0x1c, 0xaf, 0x1c, 0xeb, 0x1d, 0x15, 0x1d, + 0x3f, 0x1d, 0xd5, 0x1d, 0xee, 0x1e, 0xd, 0x1e, 0x5d, 0x1e, 0x73, 0x1e, + 0x9e, 0x1e, 0xc0, 0x1e, 0xe9, 0x1f, 0x63, 0x1f, 0x88, 0x1f, 0x9e, 0x1f, + 0xb4, 0x1f, 0xd9, 0x20, 0x4c, 0x20, 0x7d, 0x20, 0xad, 0x20, 0xff, 0x21, + 0x5c, 0x21, 0xa9, 0x22, 0x9, 0x22, 0x6d, 0x22, 0xae, 0x22, 0xbf, 0x23, + 0x2f, 0x23, 0xa9, 0x24, 0x38, 0x24, 0x4c, 0x24, 0x6c, 0x24, 0x85, 0x24, + 0xbe, 0x24, 0xde, 0x24, 0xf9, 0x25, 0x4d, 0x25, 0x75, 0x25, 0x8d, 0x25, + 0xc1, 0x25, 0xda, 0x25, 0xff, 0x26, 0x27, 0x26, 0x40, 0x26, 0xb0, 0x26, + 0xf8, 0x27, 0x45, 0x27, 0x67, 0x27, 0x87, 0x27, 0xec, 0x28, 0xa, 0x28, + 0x44, 0x28, 0xc6, 0x28, 0xdc, 0x28, 0xeb, 0x29, 0x3d, 0x29, 0x6a, 0x29, + 0xc9, 0x2a, 0x25, 0x2a, 0xc0, 0x2b, 0x2d, 0x2b, 0x6f, 0x2b, 0x86, 0x2b, + 0xb0, 0x2b, 0xc9, 0x2c, 0x4a, 0x2c, 0x78, 0x2c, 0x8f, 0x2c, 0xb2, 0x2d, + 0x2e, 0x2d, 0x9e, 0x2d, 0xc6, 0x2e, 0x2f, 0x2e, 0x6d, 0x2e, 0xe8, 0x2f, + 0x32, 0x2f, 0x92, 0x2f, 0xcc, 0x2f, 0xff, 0x30, 0x32, 0x30, 0x60, 0x30, + 0x7f, 0x30, 0xa0, 0x30, 0xed, 0x31, 0x1c, 0x31, 0x5e, 0x31, 0xca, 0x32, + 0x26, 0x32, 0x81, 0x32, 0xdd, 0x33, 0x4, 0x33, 0x25, 0x33, 0x46, 0x33, + 0x70, 0x33, 0x82, 0x33, 0x9e, 0x33, 0xb7, 0x33, 0xd1, 0x34, 0xd, 0x34, + 0x97, 0x34, 0xce, 0x35, 0x41, 0x35, 0xca, 0x36, 0x73, 0x37, 0xe, 0x37, + 0x41, 0x37, 0x65, 0x37, 0xc8, 0x37, 0xdd, 0x37, 0xde, 0x38, 0x2f, 0x38, + 0x7d, 0x38, 0xe4, 0x39, 0x44, 0x39, 0xf0, 0x3a, 0x51, 0x3a, 0x94, 0x3a, + 0xe9, 0x3b, 0x3a, 0x3b, 0x88, 0x3b, 0xde, 0x3b, 0xff, 0x3c, 0x26, 0x3c, + 0x4a, 0x3c, 0x61, 0x3c, 0x72, 0x3c, 0xa1, 0x3c, 0xe1, 0x3d, 0x2c, 0x3d, + 0x78, 0x3d, 0xba, 0x3e, 0xe, 0x3e, 0x76, 0x3e, 0xac, 0x3f, 0x0, 0x3f, + 0x42, 0xe, 0x8b, 0xe6, 0xd8, 0xe6, 0xf7, 0x68, 0xe6, 0x1, 0x63, 0x16, + 0xf7, 0x8d, 0x34, 0xa, 0x31, 0x6, 0xba, 0xd8, 0x5, 0xf7, 0x82, 0x6, + 0x9e, 0x3e, 0x5, 0x34, 0x36, 0xa, 0xf7, 0x8a, 0x42, 0xa, 0x50, 0x6, + 0xfb, 0x0, 0xf8, 0x6b, 0x5, 0xfb, 0x92, 0x4b, 0xa, 0xf7, 0x15, 0x6, + 0xfb, 0x8d, 0x7d, 0xa, 0x4c, 0x6, 0xf7, 0x9e, 0xf7, 0x3c, 0x15, 0xf7, + 0x9, 0xf7, 0x41, 0xb5, 0xfb, 0x41, 0x5, 0xe, 0x8b, 0xe5, 0x31, 0xf7, + 0x40, 0x7e, 0xe6, 0x52, 0xf7, 0x50, 0x93, 0xf7, 0x41, 0x31, 0xe5, 0x12, + 0x13, 0xa8, 0xfb, 0xa, 0x16, 0xf7, 0x85, 0x6, 0x9f, 0xe5, 0x5, 0x3d, + 0x6, 0xb8, 0xd0, 0x5, 0xf7, 0x4, 0x6, 0x6a, 0xfb, 0x33, 0x5, 0xf7, + 0xcc, 0x6, 0x13, 0x58, 0xaf, 0xf7, 0x40, 0x5, 0x3c, 0x6, 0x13, 0x94, + 0x7a, 0x39, 0x5, 0xfb, 0x1e, 0x6, 0xab, 0xf7, 0x2c, 0x5, 0xb1, 0x6, + 0x81, 0x5a, 0x5c, 0xa, 0xb3, 0xf7, 0x50, 0x5, 0x3c, 0x6, 0x82, 0x5a, + 0x5, 0x64, 0x6, 0xa8, 0x97, 0xa, 0xf7, 0x1e, 0x6, 0x13, 0xa8, 0x7a, + 0x38, 0x5c, 0xa, 0xaf, 0xf7, 0x41, 0x5, 0xfc, 0x6f, 0x6, 0x13, 0xa4, + 0x77, 0x31, 0x5, 0xe8, 0x6, 0xfb, 0x8e, 0xfc, 0x12, 0x5, 0x4a, 0x6, + 0xf7, 0xa0, 0xf7, 0x34, 0x15, 0xf5, 0xf7, 0x39, 0x69, 0xfb, 0x39, 0x5, + 0xe, 0x40, 0xa, 0xf7, 0x7a, 0x77, 0x1, 0xf7, 0xb6, 0xf8, 0xf3, 0x15, + 0xf7, 0xef, 0xd5, 0x77, 0xf2, 0xfb, 0xe4, 0xfb, 0xa, 0x5, 0xfb, 0xc2, + 0xfd, 0x2e, 0x23, 0xa, 0x40, 0xa, 0xf7, 0x76, 0x77, 0x1, 0xf7, 0x91, + 0xf8, 0xee, 0x15, 0xf7, 0x42, 0xf7, 0x4, 0xf7, 0x13, 0xfb, 0x4, 0xcd, + 0xae, 0xfb, 0x16, 0xf7, 0x23, 0x66, 0xa, 0xfb, 0x55, 0xfb, 0x22, 0x5, + 0xfb, 0x71, 0xfd, 0x12, 0x23, 0xa, 0x40, 0xa, 0xd3, 0xf7, 0xe, 0x1, + 0xf8, 0x57, 0xf9, 0x6, 0x6d, 0xa, 0xa5, 0xf7, 0xe, 0x5, 0xfb, 0x4, + 0x6, 0xfb, 0x66, 0xfb, 0xe, 0x5a, 0xa, 0xa5, 0xf7, 0xe, 0x4c, 0xa, + 0xfb, 0xd0, 0xfd, 0x80, 0x23, 0xa, 0x40, 0xa, 0xf7, 0x7a, 0x77, 0x1, + 0x76, 0x16, 0x20, 0xa, 0xfb, 0x31, 0xf8, 0x44, 0x15, 0xf7, 0xc2, 0x3a, + 0xb2, 0xc5, 0xfb, 0xa7, 0xf7, 0xb, 0x5, 0xe, 0x40, 0xa, 0xba, 0xf7, + 0x5c, 0x1, 0xf7, 0xd1, 0xf9, 0x3f, 0x15, 0x5d, 0xae, 0x67, 0xbf, 0xce, + 0xc7, 0xc1, 0xc9, 0xba, 0x69, 0xb0, 0x57, 0x4d, 0x49, 0x58, 0x48, 0x1e, + 0xce, 0x95, 0x15, 0xa5, 0x9e, 0x9f, 0xa8, 0x9e, 0x9a, 0x7d, 0x79, 0x73, + 0x70, 0x77, 0x75, 0x79, 0x7c, 0x99, 0x9b, 0x1e, 0xfc, 0x29, 0xfd, 0x49, + 0x23, 0xa, 0x40, 0xa, 0xc5, 0x77, 0xf7, 0x3b, 0x77, 0x1, 0xf7, 0x50, + 0xf9, 0x10, 0x15, 0xd6, 0x72, 0x5, 0xae, 0xa1, 0x9c, 0xa5, 0xa6, 0x1b, + 0xa2, 0x9d, 0x7d, 0x7d, 0x9f, 0x1f, 0x7b, 0xa1, 0xa2, 0x7b, 0xaa, 0x1b, + 0xd3, 0xc6, 0xc6, 0xca, 0xa6, 0x1f, 0x3f, 0xa4, 0x5, 0x76, 0x80, 0x75, + 0x61, 0x69, 0x1b, 0x7a, 0x7b, 0x93, 0x96, 0x7b, 0x1f, 0x9c, 0x70, 0x70, + 0xa2, 0x69, 0x1b, 0x3d, 0x55, 0x49, 0x56, 0x73, 0x1f, 0xfb, 0x65, 0xfd, + 0x10, 0x23, 0xa, 0x8b, 0xe6, 0xf7, 0x36, 0xe6, 0xf7, 0x13, 0xe6, 0x12, + 0xf8, 0x64, 0xed, 0x3c, 0xeb, 0x13, 0xf0, 0x77, 0x16, 0xf7, 0xee, 0x6, + 0xf7, 0x17, 0xf4, 0xdc, 0xed, 0x1f, 0x8c, 0xb1, 0x77, 0xaf, 0x6a, 0xa1, + 0x6e, 0x9e, 0x18, 0x13, 0xe8, 0xc8, 0xab, 0xb0, 0xb1, 0xce, 0x1a, 0xc9, + 0x66, 0xd0, 0xfb, 0x1f, 0x1e, 0xfb, 0xc6, 0x36, 0xa, 0xdd, 0x74, 0xa, + 0x39, 0x6, 0xf7, 0x79, 0xf7, 0x91, 0x15, 0xa8, 0xf7, 0x13, 0x5, 0xf7, + 0x20, 0x6, 0xc8, 0xa3, 0x70, 0x71, 0x8c, 0x1f, 0x44, 0x23, 0x88, 0x71, + 0x1e, 0xfb, 0x43, 0xfb, 0x91, 0x15, 0xaa, 0xf7, 0x36, 0x5, 0xf6, 0x6, + 0x13, 0xf0, 0xb3, 0xf7, 0x0, 0x80, 0x4d, 0x4f, 0x38, 0x6e, 0x6d, 0x1f, + 0xe, 0x79, 0xe8, 0xf8, 0x1d, 0xe7, 0x1, 0xa9, 0xec, 0x3, 0xf8, 0x7a, + 0xf7, 0x1e, 0x15, 0x76, 0x65, 0x38, 0x61, 0x39, 0x1b, 0xfb, 0x0, 0x5b, + 0xcb, 0xdb, 0xf7, 0x41, 0xf7, 0x24, 0xd7, 0xe7, 0xc2, 0xbc, 0x77, 0x6f, + 0xb2, 0x1f, 0x76, 0x22, 0x5, 0xea, 0x6, 0xbc, 0xf7, 0x89, 0x7a, 0xa, + 0x83, 0x60, 0x5, 0x96, 0x80, 0x5c, 0xab, 0x34, 0x1b, 0xfb, 0x4d, 0xfb, + 0x39, 0xfb, 0x25, 0xfb, 0x59, 0xfb, 0x2, 0xc0, 0xfb, 0x12, 0xf7, 0x4c, + 0xb4, 0xf7, 0x16, 0x9d, 0xd1, 0xe7, 0x1f, 0xe, 0xfb, 0x4d, 0x76, 0xf7, + 0x56, 0xe5, 0xf8, 0x19, 0xe7, 0x8c, 0x77, 0x12, 0x8b, 0xee, 0x13, 0xe8, + 0xf7, 0x0, 0xfb, 0x46, 0x15, 0x71, 0xa7, 0xa0, 0x89, 0xa0, 0x1b, 0xc9, + 0xca, 0xb5, 0xd5, 0xa1, 0x84, 0xad, 0x64, 0x94, 0x1f, 0x8f, 0x98, 0x5, + 0xe8, 0xd7, 0xba, 0xb3, 0xd7, 0x1f, 0x60, 0xcf, 0x5, 0x72, 0x5b, 0x42, + 0x63, 0x37, 0x1b, 0xfb, 0x1d, 0x75, 0xed, 0xd7, 0xf7, 0x2b, 0xf7, 0x2e, + 0xcb, 0xe0, 0xc1, 0xba, 0x79, 0x70, 0xb0, 0x1f, 0x76, 0x24, 0x5, 0xeb, + 0x6, 0x13, 0xd8, 0xbc, 0xf7, 0x85, 0x7a, 0xa, 0x83, 0x60, 0x5, 0x13, + 0xe8, 0xa4, 0x6f, 0x58, 0x9c, 0x4e, 0x1b, 0xfb, 0x42, 0xfb, 0x4a, 0x25, + 0xfb, 0x84, 0xfb, 0x8, 0xd6, 0x2e, 0xf7, 0x1, 0x7a, 0x1f, 0x70, 0x2e, + 0x5, 0x8e, 0x95, 0x9e, 0x8e, 0x9b, 0x1b, 0x94, 0x95, 0x85, 0x80, 0x7f, + 0x7e, 0x81, 0x7c, 0x80, 0x7d, 0x8f, 0x95, 0x7c, 0x1f, 0xe, 0x3a, 0xa, + 0xf8, 0x78, 0xeb, 0x3, 0x55, 0x16, 0xf7, 0xa2, 0x6, 0xf7, 0x57, 0xf7, + 0x3d, 0xf4, 0xf7, 0x91, 0xf7, 0xc, 0x40, 0xdf, 0xfb, 0x27, 0x1f, 0xfb, + 0xbc, 0x36, 0xa, 0xdf, 0x74, 0xa, 0x38, 0x6, 0xf7, 0x48, 0x16, 0xda, + 0xf8, 0x10, 0x5, 0xf7, 0xb, 0x6, 0xea, 0xb9, 0x59, 0x46, 0xfb, 0x28, + 0x2d, 0xfb, 0x5, 0xfb, 0x1d, 0x1f, 0xe, 0x8b, 0xe6, 0xd6, 0xf7, 0x39, + 0x31, 0xe5, 0xf7, 0x20, 0xe6, 0x12, 0x13, 0xb0, 0x75, 0x16, 0xf8, 0xa4, + 0x6, 0xb5, 0xf7, 0x59, 0x66, 0xa, 0x73, 0x21, 0x5, 0xfb, 0x9a, 0x6, + 0xa9, 0xf7, 0x2a, 0x5, 0xf7, 0x10, 0x6, 0x13, 0xd0, 0x7b, 0x40, 0x56, + 0xa, 0xbc, 0xf7, 0x84, 0x4e, 0xa, 0x7c, 0x40, 0x5, 0xfb, 0xe, 0x6, + 0xa8, 0x97, 0xa, 0xf7, 0x9a, 0x6, 0x76, 0x25, 0x96, 0xa, 0xb3, 0xf7, + 0x55, 0x5, 0xfc, 0xa2, 0x4b, 0xa, 0xd1, 0x74, 0xa, 0x43, 0x6, 0xe, + 0x54, 0xa, 0xf7, 0x7a, 0x77, 0x12, 0x13, 0xb8, 0xf7, 0x99, 0xf8, 0xf3, + 0x15, 0xf7, 0xe4, 0xd5, 0x77, 0xf2, 0xfb, 0xd9, 0xfb, 0xa, 0x5, 0xfb, + 0xa6, 0xfd, 0x2e, 0x28, 0xa, 0x54, 0xa, 0xf7, 0x76, 0x77, 0x12, 0x13, + 0xb8, 0xf7, 0x73, 0xf8, 0xee, 0x15, 0xf7, 0x44, 0xf7, 0x4, 0xf7, 0x13, + 0xfb, 0x4, 0xcf, 0xae, 0xfb, 0x18, 0xf7, 0x23, 0x4e, 0xa, 0xfb, 0x58, + 0xfb, 0x22, 0x5, 0xfb, 0x52, 0xfd, 0x12, 0x28, 0xa, 0x54, 0xa, 0xd4, + 0xf7, 0xd, 0x12, 0x13, 0xb8, 0xf8, 0x34, 0xf9, 0x7, 0x92, 0xa, 0xa5, + 0xf7, 0xd, 0x4c, 0xa, 0xfb, 0x66, 0xfb, 0xd, 0x6d, 0xa, 0xa5, 0xf7, + 0xd, 0x65, 0xa, 0xfb, 0xac, 0xfd, 0x80, 0x28, 0xa, 0x8b, 0xe5, 0xf7, + 0x27, 0xe4, 0xa1, 0x8b, 0x1, 0xdc, 0xea, 0xf7, 0x14, 0xed, 0xbd, 0xeb, + 0x3, 0x75, 0x16, 0x33, 0xa, 0x2a, 0xa, 0xf7, 0x7f, 0xf8, 0xe4, 0x15, + 0xf7, 0xc0, 0x40, 0xb1, 0xc5, 0xfb, 0xa5, 0xf7, 0xb, 0x5, 0xe, 0x8b, + 0xe6, 0xf7, 0x30, 0xce, 0xf7, 0x31, 0xe6, 0x1, 0xf8, 0x86, 0xee, 0x3, + 0x70, 0x16, 0xf7, 0xa2, 0x6, 0xf7, 0x36, 0xf7, 0x54, 0xf3, 0xf7, 0x8f, + 0xf7, 0xd, 0x4c, 0xe1, 0xfb, 0x28, 0x1f, 0xfb, 0xbc, 0x36, 0xa, 0xde, + 0x6, 0x6a, 0xfb, 0x31, 0x5, 0x4d, 0x6, 0x7e, 0x48, 0x5, 0xc8, 0x6, + 0x6b, 0xfb, 0x30, 0x5, 0x38, 0x6, 0xf7, 0x48, 0x16, 0xac, 0xf7, 0x30, + 0x5, 0xf7, 0x12, 0x6, 0x99, 0xce, 0x5, 0xfb, 0x12, 0x6, 0xaa, 0xf7, + 0x31, 0x5, 0xf7, 0xc, 0x6, 0xec, 0xaa, 0x57, 0x44, 0xfb, 0x28, 0x39, + 0xfb, 0x1, 0xfb, 0x33, 0x1f, 0xe, 0x8b, 0xdd, 0xe9, 0xd3, 0xc1, 0xd3, + 0xf5, 0xdd, 0x1, 0xf8, 0x7b, 0xe4, 0x3, 0x77, 0xf7, 0x44, 0x15, 0xe7, + 0x6, 0x23, 0x91, 0xca, 0x43, 0xf7, 0x25, 0x1b, 0xb2, 0xf7, 0x5, 0x9e, + 0xc9, 0xe2, 0x1f, 0x61, 0xc8, 0x5, 0x77, 0x68, 0x47, 0x63, 0x3d, 0x1b, + 0x45, 0x5a, 0xa9, 0xcb, 0x7d, 0x1f, 0xf7, 0x32, 0x6, 0xb2, 0xd3, 0x5, + 0xfb, 0x5d, 0x6, 0x8c, 0x9b, 0x8f, 0xa3, 0x90, 0x99, 0x8, 0xf7, 0x6a, + 0x6, 0xb3, 0xd3, 0x5, 0xfb, 0x71, 0x6, 0xcd, 0xae, 0xc7, 0xb3, 0xdd, + 0x1b, 0xbe, 0xbe, 0x6f, 0x6a, 0x98, 0x1f, 0x7e, 0x48, 0x5, 0xe4, 0x6, + 0xb7, 0xf7, 0x66, 0x5, 0x31, 0x6, 0x81, 0x5c, 0x5, 0xaa, 0x6c, 0x59, + 0x9b, 0x5e, 0x1b, 0xfb, 0x10, 0x22, 0x40, 0xfb, 0x5, 0x55, 0x1f, 0x48, + 0x6, 0x63, 0x43, 0x5, 0xda, 0x6, 0x85, 0x71, 0x89, 0x79, 0x8a, 0x81, + 0x8, 0x54, 0x6, 0xe, 0x8b, 0xe6, 0xdf, 0xf7, 0x2f, 0xf7, 0x21, 0xe6, + 0x1, 0xd8, 0xec, 0xf7, 0x18, 0xed, 0xd5, 0xed, 0x3, 0x75, 0x16, 0xf7, + 0xc7, 0x6, 0x9f, 0xe6, 0x5, 0xfb, 0x17, 0x6, 0xaa, 0xf7, 0x28, 0x5, + 0xf7, 0x6, 0x6, 0x7e, 0x4b, 0x56, 0xa, 0xb9, 0xf7, 0x70, 0x4e, 0xa, + 0x7c, 0x4a, 0x65, 0xa, 0xa9, 0xf7, 0x21, 0x88, 0xa, 0x70, 0xfb, 0x12, + 0x56, 0xa, 0xb9, 0xf7, 0x6d, 0x5, 0xfc, 0xa2, 0x4b, 0xa, 0xda, 0x6, + 0x3b, 0x7d, 0xa, 0x3b, 0x6, 0xe, 0x79, 0xe8, 0xf5, 0xe9, 0xf7, 0x56, + 0xe5, 0x1, 0x9f, 0xee, 0x3, 0xf7, 0xa7, 0xf7, 0x49, 0x15, 0xf7, 0x32, + 0x6, 0x7c, 0x3f, 0x5, 0x78, 0x65, 0x56, 0x80, 0x58, 0x1b, 0x3a, 0x3f, + 0xb1, 0xeb, 0xf7, 0x33, 0xf7, 0xc, 0xf4, 0xf7, 0x9, 0xc9, 0xaa, 0x87, + 0x6d, 0xb9, 0x1f, 0x77, 0x2d, 0x96, 0xa, 0xba, 0xf7, 0x6e, 0x66, 0xa, + 0x82, 0x65, 0x5, 0xa1, 0x71, 0x62, 0x9b, 0x41, 0x1b, 0xfb, 0x38, 0xfb, + 0x50, 0xfb, 0x23, 0xfb, 0x64, 0xfb, 0x2b, 0xf7, 0x1, 0x3c, 0xf7, 0x1f, + 0xeb, 0xf7, 0x5, 0xb6, 0x94, 0xa3, 0x1f, 0xa7, 0xf7, 0x27, 0x5, 0xba, + 0x55, 0xa, 0xfb, 0xc1, 0x6, 0xe, 0x79, 0xe2, 0x8b, 0xee, 0xa6, 0xe3, + 0x70, 0xcd, 0xf7, 0x70, 0xcd, 0x12, 0x8b, 0xee, 0x13, 0xec, 0xf7, 0x93, + 0xf7, 0x3c, 0x15, 0xf7, 0x32, 0x6, 0x7c, 0x44, 0x5, 0x7a, 0x67, 0x59, + 0x80, 0x5a, 0x1b, 0x37, 0x3b, 0xac, 0xe8, 0xf7, 0x29, 0xf7, 0xc, 0xf7, + 0x4, 0xf7, 0x9, 0xc9, 0xaa, 0x78, 0x6f, 0xb9, 0x1f, 0x13, 0xdc, 0x77, + 0x34, 0x96, 0xa, 0xba, 0xf7, 0x70, 0x66, 0xa, 0x82, 0x60, 0x5, 0xa2, + 0x67, 0x6c, 0x9f, 0x41, 0x1b, 0xfb, 0x42, 0xfb, 0x46, 0xfb, 0x2a, 0xfb, + 0x57, 0xfb, 0x21, 0xf7, 0x1, 0x41, 0xf7, 0x1f, 0xeb, 0xf7, 0x5, 0xb3, + 0x94, 0xa3, 0x1f, 0xa7, 0xf7, 0x1d, 0x5, 0xba, 0x6, 0x9f, 0xe3, 0x5, + 0xfb, 0xc1, 0x6, 0xab, 0xf7, 0xf4, 0x48, 0xa, 0x8b, 0xe6, 0xf7, 0x23, + 0xe6, 0xf7, 0x26, 0xe6, 0x1, 0xc4, 0xe9, 0xf7, 0x72, 0xea, 0x3, 0x64, + 0x16, 0xf7, 0x90, 0x34, 0xa, 0x3a, 0x6, 0xa8, 0xf7, 0x23, 0x5, 0xf7, + 0x72, 0x6, 0x6e, 0xfb, 0x23, 0x5, 0x3b, 0x6, 0x79, 0x30, 0x5, 0xf7, + 0x8f, 0x34, 0xa, 0x3e, 0x6, 0xd7, 0xf8, 0x10, 0x5, 0xd9, 0x42, 0xa, + 0xfb, 0x8f, 0x36, 0xa, 0xdb, 0x6, 0x6d, 0xfb, 0x26, 0x5, 0xfb, 0x72, + 0x6, 0xa9, 0xf7, 0x26, 0x5, 0xdc, 0x6, 0x9d, 0xe6, 0x5, 0xfb, 0x90, + 0x36, 0xa, 0xd8, 0x6, 0x3f, 0x7d, 0xa, 0x3d, 0x6, 0xe, 0x3a, 0xa, + 0xf7, 0x67, 0xf0, 0x3, 0x9c, 0x16, 0xf8, 0x54, 0x6, 0x9f, 0xe6, 0x5, + 0xfb, 0x41, 0x6, 0xdb, 0xf8, 0x10, 0x5, 0xf7, 0x3f, 0x34, 0xa, 0xfc, + 0x51, 0x36, 0xa, 0xf7, 0x41, 0x6, 0x3b, 0xfc, 0x10, 0x43, 0xa, 0x79, + 0xe6, 0xf8, 0x22, 0xe6, 0x1, 0x41, 0x79, 0x15, 0xf7, 0xaa, 0x6, 0x9f, + 0xe6, 0x5, 0x2e, 0x6, 0xdb, 0xf8, 0x22, 0x5, 0xe6, 0x34, 0xa, 0xfb, + 0xa7, 0x36, 0xa, 0xde, 0x6, 0x3b, 0xfc, 0x22, 0x5, 0x36, 0x6, 0xf7, + 0xd3, 0x72, 0x15, 0x76, 0xa2, 0xa4, 0x5e, 0xe9, 0x1b, 0xf7, 0x1e, 0x87, + 0x8c, 0xa, 0xac, 0x5b, 0xa, 0xfb, 0xa6, 0x6, 0x79, 0x2f, 0x5, 0xf7, + 0x25, 0x6, 0x53, 0xfb, 0xa8, 0x5, 0x40, 0x7c, 0x84, 0x5c, 0x5e, 0x1b, + 0x73, 0x83, 0x97, 0x9e, 0x9d, 0x91, 0xa3, 0x91, 0xa4, 0x1f, 0xa1, 0xec, + 0x4e, 0xa, 0xe, 0x68, 0xa, 0xf7, 0x90, 0xf8, 0xf3, 0x15, 0xf7, 0xde, + 0xd5, 0x78, 0xf2, 0xfb, 0xd3, 0xfb, 0xa, 0x5, 0xfb, 0x77, 0xfd, 0x2e, + 0x15, 0x2b, 0xa, 0xe, 0x75, 0xa, 0xf7, 0x76, 0x77, 0x62, 0xa, 0xf7, + 0x6b, 0xf8, 0xf0, 0x15, 0xf7, 0x49, 0xf7, 0x2, 0xf7, 0xa, 0xfb, 0x2, + 0xcf, 0xae, 0xfb, 0x16, 0xf7, 0x21, 0x66, 0xa, 0xfb, 0x56, 0xfb, 0x20, + 0x5, 0xfb, 0x24, 0xfd, 0x14, 0x15, 0x2b, 0xa, 0xe, 0x75, 0xa, 0xd2, + 0xf7, 0xf, 0x62, 0xa, 0xf8, 0x34, 0xf9, 0x5, 0x4a, 0xa, 0xfb, 0x69, + 0xfb, 0xf, 0x4a, 0xa, 0xfb, 0x84, 0xfd, 0x80, 0x15, 0x2b, 0xa, 0xe, + 0x8b, 0xe3, 0xf8, 0x2, 0xe3, 0xde, 0xf7, 0xf, 0x62, 0xa, 0xf7, 0xca, + 0xf9, 0x5, 0x4a, 0xa, 0xfb, 0xd4, 0xfd, 0x80, 0x15, 0xf8, 0x55, 0x6, + 0x9e, 0xe3, 0x5, 0xfb, 0x40, 0x6, 0xdb, 0xf8, 0x2, 0x5, 0xf7, 0x3e, + 0x6, 0x9e, 0xe3, 0x5, 0xfc, 0x51, 0x6, 0x78, 0x33, 0x5, 0xf7, 0x41, + 0x6, 0x3b, 0xfc, 0x2, 0x43, 0xa, 0x68, 0xa, 0x9c, 0x16, 0x2b, 0xa, + 0xf7, 0x56, 0xf8, 0xe6, 0x15, 0xf7, 0xc5, 0x3e, 0xb3, 0xc5, 0xfb, 0xac, + 0xf7, 0xb, 0x5, 0xe, 0x79, 0xe5, 0xf8, 0x22, 0xe7, 0x1, 0x9a, 0xed, + 0xf7, 0x73, 0xe8, 0x3, 0x6d, 0xbb, 0x15, 0x76, 0xa2, 0xf7, 0xa, 0x5e, + 0xe9, 0x1b, 0xf7, 0x1e, 0xc8, 0x8c, 0xa, 0xf7, 0x11, 0x5b, 0xa, 0xfc, + 0x29, 0x6, 0x79, 0x2f, 0x5, 0xf7, 0x4c, 0x6, 0x53, 0xfb, 0xa8, 0x5, + 0x40, 0x7c, 0x67, 0x5c, 0x3a, 0x1b, 0x45, 0x50, 0xa1, 0xd7, 0x9b, 0x1f, + 0xa1, 0xec, 0x4e, 0xa, 0xe, 0x3a, 0xa, 0xcf, 0xed, 0xf7, 0x8e, 0xf7, + 0x17, 0x3, 0x68, 0x16, 0xf7, 0x9d, 0x34, 0xa, 0x38, 0x6, 0xa0, 0xf0, + 0xd1, 0xc0, 0x9f, 0x70, 0xa1, 0x66, 0x9a, 0x71, 0x19, 0xa6, 0x56, 0xa6, + 0x58, 0x9b, 0x58, 0x8, 0xf7, 0x34, 0x34, 0xa, 0x20, 0x6, 0x7b, 0xb7, + 0x76, 0xa6, 0x75, 0xb5, 0x7e, 0xa8, 0x66, 0xc0, 0x80, 0x9c, 0xf7, 0x67, + 0xf7, 0x3c, 0x18, 0xd0, 0x34, 0xa, 0xfb, 0x87, 0x6e, 0xa, 0xb7, 0x6, + 0xfb, 0x61, 0xfb, 0x36, 0xae, 0xf7, 0x36, 0x5, 0xdd, 0x34, 0xa, 0xfb, + 0x9c, 0x6e, 0xa, 0xdf, 0x74, 0xa, 0x37, 0x6, 0xe, 0x3a, 0xa, 0xf7, + 0xf, 0xed, 0x3, 0x8d, 0x16, 0xf8, 0xb4, 0x6, 0xbf, 0xf7, 0x92, 0x5, + 0x27, 0x6, 0x6b, 0xfb, 0x37, 0x5, 0xfb, 0x89, 0x6, 0xdd, 0xf8, 0x10, + 0x5, 0xf7, 0x14, 0x34, 0xa, 0xfb, 0xdd, 0x36, 0xa, 0xf0, 0x6, 0x3b, + 0x7d, 0xa, 0x26, 0x6, 0xe, 0x3a, 0xa, 0xf7, 0xe, 0xed, 0x3, 0x8d, + 0x16, 0xf8, 0xb1, 0x6, 0xc2, 0xf7, 0x9c, 0x7b, 0xa, 0x66, 0xfb, 0x41, + 0x5, 0xfb, 0x86, 0x6, 0xae, 0xf7, 0x37, 0xf7, 0x34, 0xb4, 0x9a, 0xc9, + 0xfb, 0x36, 0x63, 0xac, 0xf7, 0x2e, 0x5, 0xf7, 0x14, 0x34, 0xa, 0xfb, + 0xdc, 0x36, 0xa, 0xf0, 0x6, 0x66, 0xfb, 0x47, 0x30, 0x74, 0x7f, 0x4b, + 0xe4, 0xa2, 0x6e, 0xfb, 0x1d, 0x5, 0x26, 0x6, 0xe, 0x3a, 0xa, 0x4e, + 0x16, 0xf7, 0x77, 0x34, 0xa, 0x3e, 0x6, 0xda, 0xf7, 0xce, 0xc5, 0xfb, + 0xac, 0x5, 0xc7, 0x6, 0xf7, 0x2b, 0xf7, 0xa4, 0x5b, 0xfb, 0xc6, 0x5, + 0x41, 0x6, 0x7a, 0x30, 0x5, 0xf7, 0x71, 0x42, 0xa, 0x55, 0x6, 0xc9, + 0xf8, 0x10, 0x5, 0xdb, 0x42, 0xa, 0xfb, 0x61, 0x6, 0xfb, 0x32, 0xfb, + 0xb6, 0x5b, 0xf7, 0xb6, 0x5, 0xfb, 0x5f, 0x4b, 0xa, 0xd7, 0x6, 0x2e, + 0x7d, 0xa, 0x53, 0x6, 0xe, 0x7f, 0xe8, 0xf8, 0x18, 0xe8, 0x1, 0x4f, + 0x7f, 0x15, 0xf7, 0xa4, 0x94, 0xa, 0x28, 0x6, 0xc9, 0xf7, 0xd1, 0xf7, + 0x4a, 0xfc, 0x2e, 0x5, 0xe7, 0x6, 0xeb, 0xf8, 0x75, 0x6c, 0xa, 0xea, + 0x6, 0x4e, 0xfb, 0xd0, 0xfb, 0x3e, 0xf8, 0x2d, 0x7e, 0xa, 0xfc, 0x18, + 0x5, 0x3c, 0x6, 0xe, 0x7f, 0xe7, 0xf8, 0x13, 0xe8, 0xc1, 0xe0, 0x73, + 0xdf, 0x8f, 0x77, 0x12, 0x13, 0xd0, 0x4f, 0x7f, 0x15, 0xf7, 0xa5, 0x5b, + 0xa, 0x27, 0x6, 0xca, 0xf7, 0xcd, 0xf7, 0x4c, 0xfc, 0x29, 0x5, 0xe5, + 0x6, 0xea, 0xf8, 0x6f, 0x6c, 0xa, 0xeb, 0x6, 0x4e, 0xfb, 0xc6, 0xfb, + 0x3e, 0xf8, 0x23, 0x7e, 0xa, 0xfc, 0x13, 0x5, 0x3b, 0x6, 0xf7, 0x62, + 0xf8, 0xbe, 0x15, 0xdb, 0x72, 0x5, 0xae, 0xa0, 0x9e, 0xa6, 0xa7, 0x1b, + 0xa6, 0xa0, 0x79, 0x7b, 0xa3, 0x1f, 0x13, 0xe8, 0x7d, 0xa0, 0xa1, 0x7e, + 0xa8, 0x1b, 0xd6, 0xca, 0xc7, 0xcb, 0xa6, 0x1f, 0x3c, 0xa4, 0x5, 0x76, + 0x7f, 0x74, 0x60, 0x67, 0x1b, 0x77, 0x79, 0x95, 0x98, 0x78, 0x1f, 0x13, + 0xd0, 0x9c, 0x72, 0x70, 0x9f, 0x6a, 0x1b, 0x39, 0x52, 0x48, 0x55, 0x71, + 0x1f, 0xe, 0x79, 0xe7, 0xf8, 0x1f, 0xe9, 0x1, 0xa2, 0xf1, 0xf7, 0xff, + 0xec, 0x3, 0xa2, 0xf7, 0x57, 0x15, 0xfb, 0x24, 0xf3, 0x46, 0xf7, 0x6, + 0xf7, 0x4f, 0xf7, 0x31, 0xf7, 0xe, 0xf7, 0x8d, 0xf7, 0xb, 0x45, 0xe6, + 0xfb, 0x2d, 0xfb, 0x5d, 0xfb, 0x1e, 0xfb, 0x49, 0xfb, 0x4f, 0x1e, 0xf1, + 0x9a, 0x15, 0xf7, 0xc, 0xd4, 0xf7, 0x1f, 0xf7, 0x24, 0xf7, 0x0, 0xb1, + 0x4d, 0x46, 0x23, 0x3e, 0xfb, 0x34, 0xfb, 0x2c, 0x2f, 0x61, 0xc9, 0xd5, + 0x1e, 0xe, 0x8b, 0xe6, 0x30, 0xf7, 0x3d, 0xa4, 0xf7, 0x4f, 0x92, 0xf7, + 0x42, 0x30, 0xe6, 0x12, 0x66, 0xea, 0x13, 0xac, 0xf7, 0xe2, 0xe6, 0x15, + 0xaa, 0xf7, 0x2b, 0x5, 0xaf, 0x6, 0x81, 0x58, 0x5, 0xd4, 0x6, 0xb1, + 0xf7, 0x4f, 0x5, 0x41, 0x6, 0x83, 0x5d, 0x5, 0x65, 0x6, 0xa7, 0xf7, + 0x1f, 0x5, 0xf7, 0x1a, 0x6, 0x13, 0xb4, 0x7b, 0x38, 0x5, 0xd5, 0x6, + 0xae, 0xf7, 0x42, 0x5, 0xfc, 0x10, 0x6, 0xfb, 0x1e, 0xfb, 0x30, 0xfb, + 0xf, 0xfb, 0x7a, 0xfb, 0x1c, 0xe2, 0x42, 0xe4, 0x1f, 0xf8, 0x16, 0x6, + 0x13, 0x74, 0xae, 0xf7, 0x3d, 0x5, 0x40, 0x6, 0x13, 0xac, 0x7a, 0x3d, + 0x5, 0xfc, 0x2e, 0xf7, 0x25, 0x15, 0xf7, 0x8, 0xed, 0xf7, 0xb, 0xf6, + 0x99, 0xb2, 0x8a, 0x66, 0x84, 0x1e, 0x50, 0xfb, 0xb9, 0x5, 0x5c, 0x82, + 0x67, 0x89, 0x7a, 0x1b, 0x30, 0x64, 0xc3, 0xe4, 0x1f, 0xe, 0x77, 0xa, + 0xf7, 0x71, 0x77, 0x58, 0xa, 0xf7, 0x8d, 0xf8, 0xf0, 0x15, 0xf7, 0xe4, + 0xd8, 0x76, 0xf2, 0xfb, 0xd7, 0xfb, 0xd, 0x5, 0xfb, 0x72, 0xfc, 0x61, + 0x24, 0xa, 0x77, 0xa, 0xf7, 0x6d, 0x77, 0x58, 0xa, 0xf7, 0x3f, 0xf9, + 0x13, 0x15, 0xc0, 0x66, 0xf7, 0x46, 0xf3, 0xf7, 0xa, 0x22, 0xcc, 0xaf, + 0xfb, 0x14, 0xf7, 0x23, 0x5, 0x2c, 0x6, 0xfb, 0xeb, 0xfc, 0xd6, 0x24, + 0xa, 0x77, 0xa, 0xc9, 0xf7, 0xf, 0x58, 0xa, 0xf8, 0x38, 0xf9, 0x5, + 0x5a, 0xa, 0xa4, 0xf7, 0xf, 0x4c, 0xa, 0xfb, 0x65, 0xfb, 0xf, 0x5a, + 0xa, 0xa5, 0xf7, 0xf, 0x5, 0xfb, 0x4, 0x6, 0xfb, 0x88, 0xfc, 0xb6, + 0x24, 0xa, 0x79, 0xe4, 0xf8, 0x21, 0xe6, 0x1, 0x9e, 0xf1, 0xf7, 0xee, + 0xed, 0x3, 0xf7, 0x81, 0xf9, 0x3d, 0x15, 0xf7, 0xc2, 0x40, 0xb2, 0xc5, + 0xfb, 0xa7, 0xf7, 0xc, 0x5, 0xfb, 0xb0, 0xfc, 0xda, 0x24, 0xa, 0x7c, + 0xe6, 0x3e, 0x76, 0xf8, 0x93, 0xe6, 0x8f, 0x77, 0x12, 0x97, 0xf2, 0xf8, + 0x5, 0xeb, 0x13, 0x6c, 0x7f, 0xa7, 0x15, 0xbf, 0x59, 0xc1, 0xbf, 0x5, + 0x13, 0x9c, 0x6d, 0xb5, 0xbe, 0x7c, 0xbf, 0x1b, 0xf7, 0x62, 0xf7, 0x1c, + 0xf7, 0x2c, 0xf7, 0x7b, 0x8a, 0x1f, 0xb2, 0x81, 0xb0, 0x7a, 0xac, 0x1e, + 0xc6, 0xc6, 0x57, 0xbb, 0x56, 0x58, 0x5, 0x13, 0xac, 0xa9, 0x68, 0x59, + 0x9c, 0x4c, 0x1b, 0xfb, 0x92, 0x2e, 0xfb, 0x6e, 0xfb, 0x2f, 0x5b, 0x97, + 0x62, 0x9e, 0x6a, 0x1f, 0xdd, 0xda, 0x15, 0x83, 0x9e, 0x88, 0xa5, 0x8c, + 0xa5, 0x8, 0xf7, 0x3, 0xe4, 0xf7, 0x23, 0xf7, 0x1b, 0xb3, 0xaa, 0x80, + 0x7a, 0xa1, 0x1e, 0xfb, 0x9b, 0xfb, 0xfa, 0x15, 0xf7, 0xc4, 0xf7, 0xbd, + 0x5, 0x93, 0x78, 0x8e, 0x74, 0x74, 0x1a, 0x27, 0x41, 0xfb, 0x33, 0xfb, + 0x2d, 0x67, 0x6c, 0x95, 0x9c, 0x76, 0x1e, 0xe, 0x77, 0xa, 0xbb, 0xdf, + 0xcb, 0x77, 0x58, 0xa, 0xf7, 0x2c, 0xf9, 0xf, 0x15, 0xd9, 0x71, 0xa0, + 0xaf, 0x9d, 0xa6, 0xa6, 0x8a, 0x19, 0xa4, 0x8a, 0x9e, 0x80, 0x9b, 0x80, + 0x8, 0x7a, 0xa3, 0xa0, 0x77, 0xaf, 0x1b, 0xd5, 0xc6, 0xc6, 0xcb, 0xa6, + 0x1f, 0x3f, 0xa4, 0x5, 0x76, 0x80, 0x73, 0x60, 0x69, 0x1b, 0x74, 0x7a, + 0x9a, 0x9a, 0x76, 0x1f, 0x9a, 0x77, 0x73, 0x9a, 0x68, 0x1b, 0x3c, 0x53, + 0x48, 0x56, 0x72, 0x1f, 0xfb, 0x19, 0xfc, 0x45, 0x24, 0xa, 0x8b, 0xe7, + 0xe5, 0xe6, 0xf7, 0x59, 0xe7, 0x1, 0xf8, 0x7d, 0xed, 0x3, 0x84, 0x16, + 0xf7, 0xca, 0x5b, 0xa, 0xfb, 0x15, 0x46, 0xa, 0xf7, 0x11, 0x6, 0xf7, + 0x3b, 0xdf, 0xe6, 0xf7, 0x16, 0x1f, 0xf3, 0x8a, 0x3a, 0xc2, 0xfb, 0xa, + 0x1b, 0xfb, 0xa8, 0x6, 0x78, 0x2f, 0x5, 0xde, 0x6, 0x3b, 0xfc, 0xe, + 0x5, 0x38, 0x6, 0xf7, 0x6f, 0xf7, 0x49, 0x15, 0xb3, 0xf7, 0x59, 0x5, + 0xeb, 0x6, 0xc5, 0xcb, 0x73, 0x51, 0x20, 0x2b, 0x83, 0x3d, 0x1f, 0xe, + 0xfb, 0x9, 0x76, 0xc1, 0xf7, 0x40, 0xf8, 0x11, 0xe6, 0x1, 0xba, 0xec, + 0xf7, 0xfd, 0xe9, 0x3, 0xd7, 0x45, 0x15, 0xa8, 0x47, 0x5, 0xab, 0xcb, + 0xa8, 0xa1, 0xaf, 0x1b, 0xa7, 0xa1, 0x7e, 0x7e, 0xa2, 0x1f, 0x7f, 0xa1, + 0xa1, 0x80, 0xa7, 0x1b, 0xc3, 0xac, 0xa6, 0xb8, 0xc3, 0x1f, 0x5f, 0xca, + 0x5, 0x67, 0x60, 0x7c, 0x83, 0x78, 0x1b, 0x73, 0x76, 0x9b, 0xa2, 0x6f, + 0x1f, 0xf7, 0x3f, 0xb5, 0xed, 0xf7, 0x28, 0xf7, 0x27, 0x1a, 0xeb, 0x5e, + 0xf7, 0x16, 0xfb, 0x3d, 0xfb, 0x37, 0xfb, 0x43, 0xfb, 0x11, 0xfb, 0x6c, + 0xfb, 0x7, 0xbd, 0x48, 0xd4, 0x73, 0x1e, 0x69, 0x62, 0x5, 0x93, 0xf7, + 0x95, 0x15, 0xf7, 0x3b, 0xf7, 0x22, 0xd4, 0xdb, 0xec, 0xb5, 0x40, 0x3a, + 0xfb, 0x13, 0xfb, 0x1c, 0x29, 0x37, 0x47, 0x42, 0xb0, 0xf3, 0x1e, 0xe, + 0x8b, 0xe7, 0xf7, 0xe, 0xe7, 0xf7, 0x38, 0xe7, 0x1, 0xf5, 0xed, 0xf7, + 0xb8, 0xee, 0x3, 0x8e, 0x16, 0xf7, 0x98, 0x5b, 0xa, 0x3d, 0x6, 0xa4, + 0xf7, 0xe, 0x5, 0xdd, 0x6, 0xd2, 0xfb, 0x2, 0x9d, 0x6a, 0x9b, 0x67, + 0x95, 0x68, 0x19, 0xf7, 0x22, 0x5b, 0xa, 0x3c, 0x6, 0x2e, 0x97, 0xa, + 0xf7, 0xa, 0x9d, 0xc9, 0xdf, 0xe6, 0x1a, 0xe9, 0x3b, 0xb6, 0x26, 0x1e, + 0xfb, 0xb5, 0x6, 0x78, 0x2f, 0x8a, 0xa, 0x3b, 0xfc, 0xe, 0x5, 0x37, + 0x6, 0xf7, 0x77, 0xf7, 0x6a, 0x15, 0xad, 0xf7, 0x38, 0x5, 0xf7, 0x18, + 0x6, 0xa2, 0xc5, 0x83, 0x5b, 0x2c, 0x25, 0x7e, 0x59, 0x1f, 0xe, 0x75, + 0xe9, 0xf8, 0x34, 0xe9, 0x12, 0xeb, 0xf6, 0xf7, 0x81, 0xf4, 0x13, 0xe0, + 0x82, 0x75, 0x15, 0xf2, 0x6, 0x95, 0xba, 0x5, 0x80, 0x9a, 0xdb, 0x67, + 0xd2, 0x1b, 0x13, 0x70, 0xf7, 0x41, 0xf1, 0xc3, 0xf7, 0x1e, 0xf7, 0x3, + 0xfb, 0x1c, 0x99, 0x33, 0x9d, 0x1f, 0x4c, 0x98, 0x54, 0xac, 0xb4, 0x1a, + 0xc7, 0xca, 0xa5, 0xee, 0xb6, 0xb1, 0x76, 0x7b, 0xac, 0x1e, 0x13, 0xe0, + 0x79, 0x33, 0x5, 0xf2, 0x6, 0xb8, 0xf7, 0x6f, 0x5, 0x24, 0x6, 0x85, + 0x69, 0x5, 0x9b, 0x69, 0x55, 0x9d, 0x5f, 0x1b, 0xfb, 0x45, 0x2c, 0x41, + 0xfb, 0xc, 0x34, 0xf0, 0x4d, 0xea, 0x81, 0x1f, 0xc1, 0x84, 0xe9, 0x81, + 0x55, 0x1a, 0x58, 0x4c, 0x68, 0xfb, 0x0, 0x54, 0x5b, 0xa5, 0xa4, 0x61, + 0x1e, 0x9a, 0xcf, 0x5, 0x24, 0x6, 0xe, 0x75, 0xe6, 0xf8, 0x2b, 0xe6, + 0x1, 0xe4, 0xef, 0xf7, 0x6e, 0xee, 0x3, 0x82, 0x75, 0x15, 0xec, 0x6, + 0x95, 0xb9, 0x5, 0x79, 0x9f, 0xbc, 0x6f, 0xd8, 0x1b, 0xf7, 0x3a, 0xeb, + 0xcb, 0xf7, 0x3, 0xf7, 0x2, 0x41, 0xa5, 0x31, 0x98, 0x1f, 0x62, 0x90, + 0xfb, 0x4, 0x95, 0xcd, 0x1a, 0xb5, 0xcd, 0xbe, 0xe1, 0xb2, 0xae, 0x75, + 0x7c, 0xaa, 0x1e, 0x7c, 0x36, 0x96, 0xa, 0xb5, 0xf7, 0x69, 0x7a, 0xa, + 0x84, 0x69, 0x5, 0x9a, 0x6b, 0x66, 0x9e, 0x61, 0x1b, 0xfb, 0x36, 0x22, + 0x3c, 0xfb, 0x13, 0x31, 0xdb, 0x65, 0xdb, 0x82, 0x1f, 0xbf, 0x86, 0xf5, + 0x83, 0x51, 0x1a, 0x59, 0x45, 0x69, 0x35, 0x56, 0x64, 0x99, 0xb0, 0x62, + 0x1e, 0x97, 0xcb, 0x7a, 0xa, 0xf7, 0xb1, 0xf8, 0x3c, 0x48, 0xa, 0xa1, + 0xf7, 0x57, 0xf7, 0xaa, 0xe2, 0x1, 0xea, 0xf6, 0xf7, 0x7d, 0xf4, 0x3, + 0xf7, 0x42, 0x2f, 0x15, 0x8e, 0x96, 0xa0, 0x8f, 0x9e, 0x1b, 0x94, 0x96, + 0x84, 0x7f, 0x7e, 0x7c, 0x80, 0x7b, 0x7f, 0x7b, 0x8f, 0x96, 0x7a, 0x1f, + 0x59, 0x4c, 0x5, 0x6f, 0xab, 0xa2, 0x89, 0xa2, 0x1b, 0xd1, 0xd1, 0xb9, + 0xdc, 0xa4, 0x83, 0xb0, 0x60, 0x95, 0x1f, 0x95, 0xa8, 0x5, 0xf7, 0x30, + 0x93, 0xe3, 0xc6, 0xee, 0x1a, 0xf4, 0x3c, 0xa4, 0x2b, 0x97, 0x1e, 0x5f, + 0x90, 0xfb, 0xb, 0x94, 0xca, 0x1a, 0xb4, 0xd3, 0xba, 0xe6, 0xb4, 0xb1, + 0x76, 0x7d, 0xac, 0x1e, 0x7a, 0x3b, 0x5, 0xf2, 0x6, 0xb9, 0xf7, 0x5e, + 0x5, 0x25, 0x6, 0x84, 0x6b, 0x5, 0x99, 0x68, 0x64, 0x9d, 0x5e, 0x1b, + 0xfb, 0x40, 0xfb, 0x6, 0x40, 0xfb, 0xc, 0x35, 0xe0, 0x67, 0xe1, 0x82, + 0x1f, 0xc2, 0x86, 0xf7, 0x6, 0x83, 0x54, 0x1a, 0x5b, 0x40, 0x6b, 0x2f, + 0x53, 0x61, 0x98, 0xae, 0x60, 0x1e, 0x97, 0xc8, 0x5, 0x25, 0x6, 0x5d, + 0xfb, 0x58, 0x5, 0xf2, 0x6, 0x96, 0xb6, 0x9c, 0x7e, 0xad, 0x78, 0xc0, + 0x83, 0x19, 0xe, 0x3a, 0xa, 0xc6, 0x16, 0xf7, 0xf3, 0x34, 0xa, 0xfb, + 0x12, 0x6, 0xd9, 0xf8, 0x10, 0x5, 0xf7, 0x14, 0x6, 0x75, 0xfb, 0x5, + 0x56, 0xa, 0xb4, 0xf7, 0x60, 0x5, 0xfc, 0xbb, 0x6, 0x62, 0xfb, 0x60, + 0x96, 0xa, 0xa3, 0xf7, 0x5, 0x5, 0xf7, 0x15, 0x6, 0x3d, 0x7d, 0xa, + 0xfb, 0x15, 0x6, 0xe, 0x8b, 0xe6, 0xb4, 0xe5, 0xf7, 0x9, 0xe5, 0xb5, + 0xe6, 0x1, 0xf7, 0x26, 0xe0, 0xf7, 0xa0, 0xe1, 0x3, 0x99, 0x16, 0xf7, + 0xd4, 0x6, 0x9c, 0xe6, 0x5, 0xfb, 0xc, 0x6, 0x92, 0xb4, 0x5, 0xf7, + 0x9, 0x6, 0xf7, 0x14, 0xf1, 0xaf, 0xf7, 0x28, 0xe6, 0x45, 0xa1, 0x36, + 0x1f, 0xfb, 0x1e, 0x6, 0x92, 0xb5, 0x5, 0xf7, 0xf, 0x6, 0x9b, 0xe6, + 0x5, 0xfb, 0xd4, 0x6, 0x7a, 0x30, 0x5, 0xf7, 0x6, 0x6, 0x46, 0x7d, + 0xa, 0xfb, 0x7, 0x6, 0xf7, 0x73, 0xf7, 0x17, 0x15, 0xa1, 0xf7, 0x9, + 0x5, 0xf7, 0x10, 0x6, 0xaa, 0xcf, 0x8a, 0x60, 0x3c, 0x38, 0x91, 0x6c, + 0x1f, 0xe, 0x79, 0xe7, 0xf8, 0x20, 0xe7, 0x1, 0xd6, 0xea, 0xf7, 0x8a, + 0xea, 0x3, 0x84, 0xf8, 0x6a, 0x15, 0xdd, 0x6, 0x54, 0xfb, 0xa3, 0x5, + 0x87, 0x77, 0x88, 0x79, 0x7a, 0x1a, 0xfb, 0x1, 0x8c, 0xc2, 0x56, 0xf7, + 0x12, 0x1b, 0xf7, 0x15, 0xf1, 0xc3, 0xf7, 0x2e, 0xab, 0x1f, 0xc0, 0xf7, + 0xaa, 0x5c, 0xa, 0x9d, 0xe7, 0x5, 0xfb, 0xa0, 0x6, 0x78, 0x2f, 0x5, + 0xeb, 0x6, 0x57, 0xfb, 0x9b, 0x5, 0x35, 0x7a, 0x6a, 0x5c, 0x25, 0x1b, + 0x35, 0x7a, 0xaf, 0xb4, 0x8a, 0x1f, 0x98, 0x8e, 0x98, 0x8d, 0x98, 0x1e, + 0xc4, 0xf7, 0xac, 0x5, 0xe9, 0x5b, 0xa, 0xfb, 0xa4, 0x6, 0xe, 0x79, + 0xa, 0xf7, 0x7e, 0x77, 0x59, 0xa, 0xf7, 0x61, 0xf8, 0xf0, 0x15, 0xf7, + 0xdc, 0xd7, 0x77, 0xf3, 0xfb, 0xd0, 0xfb, 0xd, 0x8f, 0xa, 0xfb, 0x5f, + 0x25, 0xa, 0xe, 0x79, 0xa, 0xf7, 0x7a, 0x77, 0x59, 0xa, 0xf7, 0x3a, + 0xf8, 0xed, 0x15, 0xf7, 0x41, 0xf5, 0xf7, 0x11, 0x21, 0xcd, 0xaf, 0xfb, + 0x15, 0xf7, 0x23, 0x5, 0x2c, 0x6, 0xfb, 0x55, 0xfb, 0x22, 0x5, 0x31, + 0xfb, 0x46, 0x25, 0xa, 0xe, 0x79, 0xa, 0xd6, 0xf7, 0xf, 0x59, 0xa, + 0xf7, 0xf8, 0xf9, 0x5, 0x15, 0xf7, 0x1, 0x6, 0xa5, 0xf7, 0xf, 0x86, + 0xa, 0xfb, 0x62, 0xfb, 0xf, 0x15, 0xf7, 0x2, 0x6, 0xa6, 0xf7, 0xf, + 0x86, 0xa, 0xfb, 0x47, 0xfb, 0xb4, 0x25, 0xa, 0xe, 0x79, 0xa, 0x59, + 0xa, 0xa2, 0xf8, 0x60, 0x25, 0xa, 0xf7, 0x1a, 0xf7, 0x17, 0x15, 0xf7, + 0xbb, 0x3e, 0xb0, 0xc5, 0xfb, 0xa0, 0xf7, 0xe, 0x5, 0xe, 0xf8, 0x6b, + 0xe6, 0x1, 0xf7, 0x2b, 0xec, 0xf7, 0x55, 0xe9, 0x3, 0xf7, 0x2b, 0x89, + 0x15, 0xec, 0x6, 0xf7, 0xb3, 0xf8, 0x6d, 0x5, 0xd1, 0x34, 0xa, 0xfb, + 0x96, 0x36, 0xa, 0xe9, 0x6, 0xfb, 0x6a, 0xfc, 0x0, 0x40, 0xf8, 0x0, + 0x5, 0xdc, 0x34, 0xa, 0xfb, 0x95, 0x36, 0xa, 0xd8, 0x6, 0xe, 0xa0, + 0x76, 0xf8, 0x5e, 0x77, 0xac, 0xe6, 0x1, 0x93, 0xed, 0x3, 0x84, 0x16, + 0xdd, 0x6, 0xf7, 0x49, 0xf7, 0xc6, 0xc3, 0xfb, 0xc6, 0x5, 0xdd, 0x6, + 0xf7, 0x39, 0xf8, 0x6b, 0x5, 0xbc, 0x34, 0xa, 0xfb, 0x82, 0x36, 0xa, + 0xec, 0x6, 0x2e, 0xfb, 0xab, 0x59, 0xf7, 0x9e, 0x5, 0x47, 0x6, 0xfb, + 0x34, 0xfb, 0xa0, 0xa0, 0xf7, 0xad, 0x5, 0xeb, 0x34, 0xa, 0xfb, 0x83, + 0x36, 0xa, 0xbd, 0x6, 0xe, 0x3a, 0xa, 0x65, 0x16, 0xf7, 0x97, 0x34, + 0xa, 0x3b, 0x6, 0xf7, 0x1b, 0xf7, 0x11, 0xdf, 0xfb, 0x11, 0x5, 0x4c, + 0x6e, 0xa, 0xf7, 0x89, 0x34, 0xa, 0x47, 0x6, 0xfb, 0x11, 0xf7, 0x55, + 0xf7, 0x4b, 0xf7, 0x4f, 0x5, 0xd1, 0x34, 0xa, 0xfb, 0x76, 0x6e, 0xa, + 0xba, 0x6, 0xfb, 0x5, 0xfb, 0xa, 0x4b, 0xf7, 0xa, 0x5, 0xc2, 0x34, + 0xa, 0xfb, 0x84, 0x36, 0xa, 0xd2, 0x6, 0xf5, 0xfb, 0x4f, 0xfb, 0x62, + 0xfb, 0x55, 0x5, 0x47, 0x6, 0xe, 0x3a, 0xa, 0x9d, 0x16, 0xf7, 0xf0, + 0x42, 0xa, 0xfb, 0x10, 0x6, 0xa7, 0xf7, 0x1c, 0xf7, 0x68, 0xf7, 0x88, + 0x5, 0xdc, 0x42, 0xa, 0xfb, 0x83, 0x36, 0xa, 0xc3, 0x6, 0xfb, 0x1e, + 0xfb, 0x31, 0x41, 0xf7, 0x31, 0x5, 0xc2, 0x34, 0xa, 0xfb, 0x85, 0x4b, + 0xa, 0xda, 0x6, 0xf7, 0x3, 0xfb, 0x88, 0x70, 0xfb, 0x1c, 0x5, 0xfb, + 0x11, 0x6, 0xe, 0x8b, 0xe5, 0xf8, 0x8, 0xe5, 0x1, 0x9c, 0x16, 0xf7, + 0xef, 0x6, 0x9f, 0xe5, 0x5, 0xfb, 0x11, 0x6, 0xa7, 0xf7, 0x19, 0xf7, + 0x69, 0xf7, 0x83, 0x5, 0xdc, 0x46, 0xa, 0xfb, 0x84, 0x6, 0x79, 0x31, + 0x5, 0xc2, 0x6, 0xfb, 0x1f, 0xfb, 0x2d, 0x43, 0xf7, 0x2d, 0x5, 0xc1, + 0x46, 0xa, 0xfb, 0x83, 0x6, 0x79, 0x31, 0x5c, 0xa, 0xf7, 0x5, 0xfb, + 0x83, 0x6d, 0xfb, 0x19, 0x5, 0xfb, 0x10, 0x6, 0xf7, 0x3e, 0xf8, 0x97, + 0x15, 0xf7, 0xe1, 0xd8, 0x77, 0xf1, 0xfb, 0xd5, 0xfb, 0xc, 0x5, 0xe, + 0x8b, 0xe3, 0xf8, 0x1b, 0xe8, 0xe3, 0xf7, 0x15, 0x12, 0xf7, 0x38, 0xeb, + 0x3b, 0xf7, 0x2, 0xd1, 0xf7, 0x3, 0x13, 0xf4, 0xa0, 0x16, 0xf7, 0xec, + 0x6, 0x9d, 0xe8, 0x5, 0xfb, 0xf, 0x6, 0xa5, 0xf7, 0x14, 0xf7, 0x69, + 0xf7, 0x96, 0x5, 0xda, 0x94, 0xa, 0xfb, 0x82, 0x6, 0x79, 0x2e, 0x5, + 0xc3, 0x6, 0xfb, 0x20, 0xfb, 0x3d, 0x45, 0xf7, 0x3d, 0x5, 0xc1, 0x6, + 0x9d, 0xe8, 0x5, 0xfb, 0x81, 0x82, 0xa, 0xd9, 0x6, 0xf7, 0x1, 0xfb, + 0x96, 0x71, 0xfb, 0x14, 0x5, 0xfb, 0x11, 0x6, 0xf7, 0xd5, 0xf8, 0xcb, + 0x92, 0xa, 0xa5, 0xf7, 0x15, 0x4c, 0xa, 0x13, 0xec, 0xfb, 0x62, 0xfb, + 0x15, 0x15, 0xf7, 0x2, 0x6, 0xa5, 0xf7, 0x15, 0x86, 0xa, 0xe, 0x3a, + 0xa, 0xe4, 0xec, 0x3, 0x98, 0x16, 0xf8, 0x74, 0x6, 0xbc, 0xf7, 0x70, + 0x66, 0xa, 0x6c, 0xfb, 0x15, 0x5, 0xfb, 0x8e, 0x6, 0xf8, 0x2e, 0xf8, + 0x2a, 0x98, 0xcc, 0x5, 0xfc, 0x58, 0x6, 0x5d, 0xfb, 0x61, 0x96, 0xa, + 0xa7, 0xf7, 0x6, 0x5, 0xf7, 0x6e, 0x6, 0xfc, 0x28, 0xfc, 0x25, 0x5, + 0xe, 0x8b, 0xe4, 0xf8, 0xd, 0xe5, 0x1, 0xd7, 0xea, 0xf7, 0x8d, 0xea, + 0x3, 0x8c, 0x16, 0xf8, 0x68, 0x6, 0xb9, 0xf7, 0x6d, 0x5, 0x2c, 0x6, + 0x71, 0xfb, 0x14, 0x5, 0xfb, 0x89, 0x6, 0xf8, 0x23, 0xf8, 0x27, 0x99, + 0xcb, 0x5, 0xfc, 0x4d, 0x6, 0x5e, 0xfb, 0x5f, 0x5, 0xea, 0x6, 0xa5, + 0xf7, 0x5, 0x5, 0xf7, 0x6a, 0x6, 0xfc, 0x20, 0xfc, 0x23, 0x5, 0xf7, + 0xbd, 0xf8, 0xb3, 0x15, 0xed, 0x6, 0xf7, 0x50, 0xf7, 0x23, 0x58, 0xaf, + 0xfb, 0x42, 0x21, 0xfb, 0x11, 0xf6, 0x46, 0x69, 0x5, 0xe, 0x7c, 0xea, + 0x35, 0xea, 0xf5, 0xe9, 0xd0, 0xeb, 0x12, 0xaf, 0xed, 0xf7, 0xbd, 0xed, + 0x13, 0x7c, 0xf8, 0x6, 0x85, 0x15, 0xf7, 0x44, 0x6, 0x9e, 0xea, 0x5, + 0x3a, 0x6, 0xad, 0xf7, 0x3f, 0x92, 0xa7, 0x90, 0xaa, 0x8a, 0xa7, 0x19, + 0xee, 0xfb, 0x1e, 0x93, 0x6f, 0x3d, 0x2c, 0x71, 0x6e, 0x42, 0x1e, 0xa0, + 0x3a, 0x5, 0xa2, 0xcb, 0xd6, 0x9c, 0xc9, 0x1b, 0xa2, 0xd0, 0x8a, 0x61, + 0x80, 0x89, 0x80, 0x8a, 0x80, 0x1f, 0x8f, 0x67, 0x64, 0x8e, 0x65, 0x1b, + 0xfb, 0x8c, 0x6c, 0xfb, 0x25, 0x68, 0x1f, 0x13, 0xbc, 0x4e, 0xbc, 0x4c, + 0xf5, 0xdc, 0xb5, 0xa2, 0xae, 0xcc, 0x1e, 0x13, 0x7c, 0xa3, 0xf7, 0x5, + 0x15, 0x13, 0xbc, 0x5f, 0x51, 0x48, 0x6b, 0x47, 0x1b, 0x66, 0x64, 0x96, + 0xa4, 0xc7, 0xed, 0x9e, 0xbc, 0xc6, 0xb1, 0x85, 0x89, 0xab, 0x1f, 0xe, + 0x41, 0xa, 0xf7, 0x75, 0x77, 0x12, 0xa6, 0xeb, 0x13, 0x7c, 0xf7, 0x87, + 0xf8, 0x77, 0x15, 0xf7, 0xde, 0xd7, 0x77, 0xf1, 0xfb, 0xd4, 0xfb, 0xd, + 0x5, 0xf7, 0xe, 0xfc, 0xb3, 0x21, 0xa, 0x8b, 0xe5, 0xee, 0xe4, 0xcc, + 0xe6, 0x1, 0xae, 0xe9, 0xf7, 0x7e, 0xef, 0x3, 0xf7, 0x61, 0xf8, 0x73, + 0x15, 0xf7, 0x3f, 0xf4, 0xf7, 0x10, 0x22, 0xcc, 0xae, 0xfb, 0x14, 0xf7, + 0x23, 0x66, 0xa, 0xfb, 0x50, 0xfb, 0x22, 0x5, 0xf7, 0x67, 0xfc, 0x9a, + 0x22, 0xa, 0x3b, 0xa, 0x1f, 0xa1, 0xf7, 0x1, 0x15, 0x2c, 0xa, 0xf7, + 0x35, 0xf7, 0xb2, 0x3, 0xf7, 0x35, 0xf8, 0x90, 0x15, 0xf7, 0xb2, 0xca, + 0x7a, 0xe5, 0xfb, 0xaa, 0x23, 0x5, 0xe, 0x41, 0xa, 0xca, 0xf7, 0x12, + 0x12, 0xb3, 0xeb, 0x13, 0x7c, 0xf8, 0x35, 0xf8, 0x87, 0x15, 0xf7, 0x8, + 0x6, 0xa4, 0xf7, 0x12, 0x5, 0xfb, 0x8, 0x6, 0xfb, 0x6a, 0xfb, 0x12, + 0x15, 0xf7, 0x6, 0x6, 0xa6, 0xf7, 0x12, 0x5, 0xfb, 0x9, 0x6, 0xf7, + 0x8, 0xfd, 0x8, 0x21, 0xa, 0x7c, 0xea, 0xe0, 0xeb, 0x39, 0xec, 0xde, + 0xea, 0x12, 0x13, 0xd0, 0xf7, 0xa4, 0xc5, 0x15, 0x71, 0x97, 0xad, 0x5c, + 0xe6, 0x1b, 0xc3, 0xbc, 0x99, 0xa0, 0xc7, 0x1f, 0x7d, 0xe7, 0x5, 0x74, + 0x47, 0x64, 0x82, 0x73, 0x1b, 0x36, 0x8b, 0xcb, 0x9e, 0x8e, 0x1f, 0x8c, + 0x8d, 0x5, 0xf7, 0x89, 0x6, 0x98, 0xb2, 0x94, 0xb3, 0xb4, 0x1a, 0xde, + 0x6c, 0xe1, 0x2b, 0x60, 0x56, 0x78, 0x68, 0x67, 0x1e, 0xb1, 0x77, 0x72, + 0x9b, 0x47, 0x1b, 0x42, 0x2d, 0x66, 0x89, 0x86, 0x1f, 0x94, 0x2d, 0x5, + 0x9c, 0xba, 0xc0, 0xa0, 0xb7, 0x1b, 0xac, 0x9b, 0x7f, 0x6c, 0x81, 0x8a, + 0x80, 0x88, 0x7d, 0x1f, 0x89, 0x81, 0x5, 0x13, 0xb0, 0x8d, 0x72, 0x79, + 0x8e, 0x67, 0x1b, 0xfb, 0x14, 0x40, 0x2c, 0x34, 0x1f, 0x4d, 0x8c, 0xb7, + 0x5c, 0xd6, 0x1b, 0xd3, 0xc4, 0xba, 0xa5, 0xb1, 0x1f, 0x13, 0xd0, 0xe7, + 0xf7, 0x5f, 0x15, 0xc6, 0x9a, 0xba, 0xb2, 0xb4, 0x1b, 0xc5, 0x87, 0x3e, + 0x76, 0x89, 0x1f, 0xfb, 0xae, 0xfb, 0x1e, 0x15, 0x6e, 0x6a, 0x63, 0x7d, + 0x63, 0x1b, 0x79, 0x78, 0x95, 0xae, 0x1f, 0x13, 0xb0, 0x95, 0x9a, 0xb7, + 0xe3, 0x96, 0xab, 0x8a, 0x87, 0x9a, 0x1e, 0xe, 0x41, 0xa, 0xf7, 0x75, + 0x77, 0x12, 0xae, 0xeb, 0x13, 0x7c, 0xf7, 0x74, 0xf8, 0xc6, 0x15, 0xf7, + 0xc4, 0x3b, 0xb0, 0xc5, 0xfb, 0xa9, 0xf7, 0xd, 0x5, 0xd6, 0xfd, 0x2c, + 0x21, 0xa, 0x7c, 0xe9, 0x39, 0xe9, 0xf7, 0x17, 0xe9, 0xf7, 0x18, 0xea, + 0x12, 0xad, 0xf2, 0x9b, 0xed, 0x13, 0x7c, 0xf7, 0xda, 0xb0, 0x15, 0xa0, + 0x63, 0x5, 0xf7, 0x45, 0x3f, 0xa, 0xfb, 0x19, 0x6, 0x7f, 0xa1, 0xa5, + 0xa8, 0x9d, 0xbc, 0xa0, 0xaa, 0x19, 0xdf, 0x3f, 0xa, 0xfb, 0x2a, 0x6, + 0x81, 0x74, 0x6c, 0x44, 0x76, 0x71, 0x8, 0x3c, 0xf7, 0x22, 0x73, 0xb3, + 0xab, 0x1a, 0xa7, 0xab, 0x94, 0xa9, 0x8c, 0x1e, 0xb9, 0x8c, 0xc3, 0x74, + 0x9c, 0x76, 0xd2, 0xd0, 0x18, 0xb1, 0x64, 0x4b, 0xaa, 0x4d, 0x1b, 0x2c, + 0x31, 0x4c, 0x34, 0x64, 0xa3, 0x6c, 0x8f, 0x7d, 0x1f, 0x89, 0x7, 0x39, + 0x69, 0x4a, 0x3e, 0x34, 0x1a, 0x13, 0xbc, 0x4e, 0xb4, 0x4c, 0xf1, 0xda, + 0xb5, 0xad, 0x9d, 0xa7, 0x1e, 0x62, 0xd9, 0x15, 0x74, 0x72, 0x6b, 0x7e, + 0x6c, 0x1b, 0x5f, 0x7b, 0xa5, 0xa4, 0xbf, 0xbd, 0xb2, 0xaa, 0x9a, 0x1f, + 0xe, 0x41, 0xa, 0xf7, 0x4b, 0x77, 0x12, 0xb3, 0xeb, 0x13, 0x7c, 0xf7, + 0xb1, 0xf8, 0xc4, 0x15, 0x5e, 0xb0, 0x68, 0xc0, 0xcd, 0xd0, 0xc0, 0xca, + 0xb9, 0x65, 0xaf, 0x55, 0x49, 0x48, 0x54, 0x4c, 0x1e, 0xcf, 0x91, 0x15, + 0xa7, 0xa6, 0xa4, 0xa5, 0xa0, 0x9b, 0x7d, 0x79, 0x72, 0x70, 0x75, 0x70, + 0x77, 0x7b, 0x96, 0x9a, 0x1e, 0x9a, 0xfc, 0xcd, 0x21, 0xa, 0xf7, 0xa2, + 0xcf, 0x1, 0x73, 0xf9, 0x1c, 0x3, 0xf7, 0x3, 0xf7, 0x23, 0x15, 0xc9, + 0xbf, 0x48, 0xd7, 0xf8, 0x1, 0x8a, 0x2c, 0x4b, 0x6a, 0xa, 0x4a, 0x5, + 0xfb, 0xeb, 0x6, 0xdd, 0xc1, 0x8e, 0xa, 0x9b, 0x76, 0xf8, 0xef, 0x77, + 0x1, 0xf7, 0x95, 0x86, 0x15, 0xf7, 0x5f, 0xf7, 0x36, 0x58, 0xc0, 0x38, + 0x40, 0xf7, 0xe, 0xf8, 0x5a, 0x44, 0x94, 0xfb, 0xe, 0xfc, 0x5f, 0x5a, + 0xd4, 0x49, 0x5c, 0x5, 0xe, 0xf7, 0x99, 0xd1, 0x1, 0x69, 0xf9, 0x26, + 0x3, 0xf0, 0xf7, 0x23, 0x15, 0xc9, 0xbf, 0x51, 0xcd, 0x5, 0xf8, 0x9b, + 0x6, 0x95, 0xd1, 0x5, 0xfc, 0x96, 0x6, 0xe9, 0xc8, 0x8e, 0xa, 0xf7, + 0x9f, 0xd1, 0x1, 0x69, 0xf9, 0x30, 0x3, 0x69, 0xf7, 0x9f, 0x15, 0xf8, + 0x96, 0x6, 0x2d, 0x4e, 0x6a, 0xa, 0x49, 0x5, 0xfc, 0x9b, 0x6, 0xe, + 0xa1, 0xf8, 0x3b, 0x1, 0xf7, 0x2d, 0xd1, 0x3, 0xf7, 0x2d, 0xa1, 0x15, + 0xd1, 0x82, 0xf7, 0xe, 0xf8, 0x5e, 0xbc, 0x42, 0xcd, 0xba, 0xfb, 0x9, + 0xf7, 0x3f, 0xfb, 0x5f, 0xfb, 0x37, 0xbe, 0x56, 0xde, 0xd6, 0x5, 0xe, + 0xf7, 0x8f, 0xf8, 0x1, 0x1, 0xf7, 0x0, 0xf8, 0xc, 0x3, 0xf7, 0x0, + 0xf7, 0x8e, 0x15, 0xd7, 0xb1, 0xd9, 0xdb, 0xca, 0xd8, 0xb5, 0x3a, 0xbf, + 0x3f, 0xcc, 0x66, 0x93, 0xcb, 0x18, 0x41, 0xf7, 0x2, 0x6a, 0xc2, 0x78, + 0xf7, 0x1c, 0x8, 0x5c, 0x6, 0x5b, 0xfb, 0x15, 0x56, 0x46, 0x25, 0x23, + 0x8, 0xe, 0xf7, 0x3a, 0xf2, 0x2c, 0x76, 0xde, 0xf3, 0x9b, 0x77, 0x12, + 0xcc, 0xf8, 0x69, 0x13, 0x68, 0xf7, 0xc, 0xf7, 0x2d, 0x15, 0xab, 0xa3, + 0xa7, 0xbe, 0xb4, 0x1b, 0x9a, 0xaa, 0x76, 0x7a, 0xae, 0x1f, 0x7f, 0xa3, + 0xa5, 0x81, 0xa4, 0x1b, 0xb6, 0xd2, 0xad, 0xdf, 0xbe, 0x1f, 0x13, 0x98, + 0x58, 0xc9, 0x5, 0x75, 0x7c, 0x65, 0x54, 0x61, 0x1b, 0x74, 0x73, 0x96, + 0x98, 0x73, 0x1f, 0x13, 0x68, 0x9c, 0x6b, 0x6c, 0x9f, 0x71, 0x1b, 0x44, + 0x59, 0x48, 0x55, 0x61, 0x1f, 0xe, 0xf7, 0x4e, 0xf0, 0x3, 0xf7, 0x4e, + 0xf7, 0x6f, 0x15, 0xf0, 0xf7, 0x7, 0xbd, 0xfb, 0x6, 0xec, 0xc7, 0x52, + 0xf3, 0xf7, 0x18, 0xad, 0x7c, 0xee, 0xfb, 0x1d, 0x56, 0xb0, 0xf7, 0x1d, + 0x4c, 0xa, 0x78, 0xfb, 0x19, 0xfb, 0xb, 0xbc, 0x55, 0x27, 0xf7, 0x16, + 0x6a, 0x20, 0x22, 0x5, 0xe, 0x79, 0xd3, 0xd2, 0xd4, 0xf7, 0x3b, 0xd5, + 0xd2, 0xd0, 0x1, 0x91, 0xe1, 0xc6, 0xd2, 0xf7, 0xb4, 0xdb, 0x3, 0xf7, + 0xcf, 0xf7, 0x3b, 0x15, 0x6a, 0x9b, 0xad, 0x82, 0x9d, 0x1b, 0xf7, 0x0, + 0xee, 0xf7, 0x1c, 0xf7, 0xe, 0xf7, 0x16, 0x25, 0xcd, 0xfb, 0x10, 0xfb, + 0x3b, 0xfb, 0x53, 0xfb, 0x22, 0xfb, 0x75, 0x22, 0xb6, 0xfb, 0x11, 0xf7, + 0x50, 0xf7, 0x13, 0xdf, 0xc4, 0xa4, 0xb5, 0x1f, 0x7d, 0xcf, 0x5, 0x54, + 0x32, 0x47, 0x74, 0x3f, 0x1b, 0xfb, 0xb, 0x6b, 0xdd, 0xd8, 0xe5, 0xd6, + 0xf7, 0x63, 0xf7, 0x4b, 0xf2, 0xc4, 0x55, 0x39, 0x3a, 0x54, 0x2c, 0x59, + 0x7d, 0x79, 0x91, 0xa3, 0x8f, 0x1f, 0x8c, 0x90, 0x8c, 0x8f, 0x8e, 0x91, + 0xe2, 0xf7, 0x48, 0x18, 0x46, 0x6, 0x82, 0x79, 0x5, 0xa3, 0x78, 0x7e, + 0x8b, 0x7d, 0x1b, 0x25, 0x2f, 0xfb, 0x1d, 0x30, 0x51, 0xb1, 0x79, 0xa8, + 0xac, 0xaf, 0x9c, 0xa4, 0xa7, 0x1f, 0xa8, 0xf7, 0x3a, 0x15, 0x70, 0x85, + 0x62, 0xfb, 0x0, 0x4f, 0x1b, 0x80, 0x87, 0x93, 0x97, 0xc5, 0xd1, 0xe4, + 0xab, 0xa3, 0x88, 0x74, 0x82, 0x8a, 0x1f, 0xe, 0x41, 0xa, 0xf7, 0x1e, + 0x77, 0xdd, 0x77, 0x12, 0x95, 0xeb, 0x13, 0x7e, 0xf7, 0x12, 0xf8, 0x95, + 0x15, 0xdb, 0x71, 0x9a, 0x9f, 0x94, 0xa2, 0xa3, 0x98, 0x19, 0xa3, 0x98, + 0xa9, 0x7a, 0xaa, 0x79, 0x8, 0x7c, 0xa6, 0xa7, 0x7b, 0xa4, 0x1b, 0xf0, + 0xbf, 0xe3, 0xad, 0x9d, 0x1f, 0x39, 0xa3, 0x5, 0x62, 0x70, 0x7d, 0x76, + 0x6f, 0x1b, 0x79, 0x79, 0x94, 0x97, 0x78, 0x1f, 0x9c, 0x6f, 0x6f, 0xa1, + 0x6b, 0x1b, 0x29, 0x5c, 0x3d, 0x60, 0x72, 0x1f, 0xf7, 0x68, 0xfc, 0x98, + 0x22, 0xa, 0x1f, 0x13, 0xbe, 0x3b, 0xa, 0x1e, 0x13, 0x7e, 0xa1, 0xf7, + 0x1, 0x15, 0x13, 0xbe, 0x2c, 0xa, 0x7c, 0xe8, 0x3a, 0xe9, 0xf7, 0x9d, + 0xe9, 0xdd, 0xe9, 0x12, 0xf8, 0x94, 0xef, 0x13, 0x78, 0x80, 0x88, 0x15, + 0xf7, 0x47, 0x6, 0x94, 0xbb, 0x5, 0x13, 0xb8, 0x70, 0xad, 0xb2, 0x6a, + 0xd7, 0x1b, 0xf7, 0x5a, 0xe3, 0xf7, 0x18, 0xf7, 0x1e, 0xf3, 0x42, 0xe6, + 0xfb, 0x14, 0x53, 0x54, 0x84, 0x69, 0x5b, 0x1f, 0xb8, 0xf7, 0x6d, 0x5, + 0xfb, 0x49, 0x44, 0xa, 0xdd, 0x6, 0x13, 0x78, 0x32, 0xfc, 0x4d, 0x5, + 0x3a, 0x6, 0xf7, 0x5b, 0xef, 0x15, 0xe6, 0xc7, 0xd5, 0xf7, 0xd, 0xe8, + 0xa9, 0x48, 0x58, 0x1e, 0x13, 0xb8, 0x35, 0x2d, 0x41, 0x34, 0x63, 0x38, + 0xa5, 0xe2, 0x1e, 0xe, 0xfb, 0x1d, 0xf9, 0x8f, 0x1, 0xf7, 0x37, 0xf7, + 0xa5, 0x3, 0xf7, 0xfe, 0xfb, 0x1d, 0x15, 0xd5, 0xa8, 0xfb, 0x5b, 0xf9, + 0x72, 0x41, 0x6e, 0x5, 0xe, 0xfb, 0x73, 0x76, 0xfa, 0x7c, 0x77, 0x1, + 0xf7, 0x1a, 0xe3, 0x3, 0xf7, 0x1a, 0xfb, 0x88, 0x15, 0xe3, 0x6, 0xf7, + 0x88, 0xfa, 0x7c, 0x5, 0x33, 0x6, 0xe, 0xf7, 0x34, 0xdc, 0x3, 0xd5, + 0xf7, 0x71, 0x15, 0xdc, 0x7f, 0x95, 0x60, 0x61, 0x1a, 0x85, 0x80, 0x45, + 0x74, 0xfb, 0x19, 0x1e, 0x83, 0x5c, 0x97, 0x52, 0xbd, 0x76, 0x8, 0x79, + 0xb6, 0xc7, 0x8b, 0xbc, 0x1b, 0x9d, 0xe8, 0x5, 0x64, 0x63, 0x8b, 0x95, + 0x6b, 0x1f, 0x76, 0x92, 0x89, 0xa4, 0x8f, 0xa2, 0x9e, 0xf7, 0x9, 0x95, + 0xcb, 0x8c, 0x96, 0x8, 0x8c, 0x97, 0x8b, 0x93, 0x90, 0x1a, 0xb3, 0x74, + 0xc3, 0x63, 0xa5, 0x1e, 0xd0, 0xae, 0xbd, 0xdd, 0x98, 0xd3, 0xa7, 0xf7, + 0x28, 0x18, 0x8f, 0xa2, 0x96, 0xa5, 0xa3, 0x91, 0x8, 0x95, 0xb2, 0xaf, + 0x8b, 0xb2, 0x1b, 0x9e, 0xe8, 0x5, 0x5a, 0x51, 0x8b, 0x79, 0x57, 0x1f, + 0x52, 0x77, 0x67, 0x51, 0x83, 0x5c, 0x75, 0xfb, 0x9, 0x18, 0x76, 0xfb, + 0x0, 0x77, 0x4a, 0xfb, 0x3, 0x7b, 0x8, 0xe, 0xf8, 0x2, 0xda, 0x3, + 0xd5, 0xfb, 0x78, 0x15, 0xbc, 0xc5, 0x8b, 0x9d, 0xbf, 0x1f, 0xc4, 0x9f, + 0xaf, 0xc5, 0x93, 0xba, 0xa1, 0xf7, 0x9, 0x18, 0xa0, 0xf7, 0x0, 0x9f, + 0xcc, 0xf7, 0x3, 0x9b, 0x9c, 0xe9, 0x18, 0x3a, 0x97, 0x81, 0xb6, 0xb5, + 0x1a, 0x91, 0x96, 0xd1, 0xa2, 0xf7, 0x19, 0x1e, 0x93, 0xba, 0x7f, 0xc4, + 0x59, 0xa0, 0x8, 0x9d, 0x60, 0x4f, 0x8b, 0x5a, 0x1b, 0x79, 0x2e, 0x5, + 0xb2, 0xb3, 0x8b, 0x81, 0xab, 0x1f, 0xa0, 0x84, 0x8d, 0x72, 0x87, 0x74, + 0x78, 0xfb, 0x9, 0x81, 0x4b, 0x8a, 0x7f, 0x8, 0x8a, 0x80, 0x8b, 0x83, + 0x86, 0x1a, 0x63, 0xa2, 0x53, 0xb3, 0x71, 0x1e, 0x46, 0x68, 0x59, 0x39, + 0x7e, 0x43, 0x6f, 0xfb, 0x28, 0x18, 0x87, 0x74, 0x80, 0x71, 0x73, 0x85, + 0x8, 0x81, 0x64, 0x67, 0x8b, 0x64, 0x1b, 0xe, 0x25, 0xe7, 0xf8, 0xaa, + 0xe7, 0x1, 0xf7, 0x0, 0x25, 0x15, 0xf7, 0x7c, 0x6, 0x9f, 0xe7, 0x5, + 0xfb, 0x1b, 0x6, 0xf7, 0x5, 0xf8, 0xaa, 0x5, 0xf7, 0x1a, 0x5b, 0xa, + 0xfb, 0x7c, 0x6, 0xe, 0x25, 0xe7, 0xf8, 0xaa, 0xe7, 0x1, 0xf7, 0x13, + 0x81, 0x15, 0x78, 0x2f, 0x5, 0xf7, 0x7b, 0x6, 0xf7, 0x2c, 0xf9, 0x62, + 0x5, 0xfb, 0x7c, 0x6, 0x77, 0x2f, 0x5, 0xf7, 0x1b, 0x6, 0xfb, 0x6, + 0xfc, 0xaa, 0x5, 0xe, 0xf8, 0x68, 0xd5, 0x1, 0xdf, 0xf9, 0xb, 0x15, + 0x44, 0xb7, 0x2f, 0xf7, 0x22, 0xf7, 0x31, 0xd3, 0xf7, 0x5, 0xbd, 0x9d, + 0x1e, 0x2f, 0x6, 0x3d, 0x64, 0x41, 0x80, 0x70, 0x1b, 0x3c, 0x71, 0xc0, + 0xaf, 0x8a, 0x1f, 0xe, 0xfb, 0x2e, 0x76, 0xf9, 0xe6, 0x77, 0x1, 0xf7, + 0x39, 0xc6, 0xf7, 0x2c, 0xc6, 0x3, 0xf7, 0xac, 0xf7, 0xb0, 0x15, 0xc6, + 0x6, 0xeb, 0xf8, 0x1b, 0x5, 0x50, 0x6, 0xfb, 0x67, 0xfd, 0xe6, 0x15, + 0xc6, 0x6, 0xed, 0xf8, 0x1a, 0x5, 0x50, 0x6, 0xe, 0xf7, 0x18, 0xf7, + 0xbe, 0x1, 0xf7, 0x1d, 0xf7, 0xd9, 0x3, 0xf7, 0x1d, 0xf7, 0x8c, 0x15, + 0x48, 0xbf, 0x5a, 0xd8, 0xed, 0xed, 0xdb, 0xeb, 0xd1, 0x57, 0xbf, 0x3c, + 0x23, 0x31, 0x38, 0x28, 0x1e, 0xe, 0x7c, 0xea, 0xf7, 0xb0, 0xea, 0x1, + 0xae, 0xf2, 0x3, 0xf8, 0x89, 0xf7, 0x2e, 0x15, 0x62, 0x46, 0x4c, 0x6a, + 0x38, 0x1b, 0x3e, 0x44, 0xb0, 0xd5, 0xee, 0xe5, 0xd5, 0xf7, 0xd, 0xb3, + 0xb3, 0x80, 0x7c, 0xab, 0x1f, 0x77, 0x30, 0x5, 0xef, 0x6, 0xb7, 0xf7, + 0x68, 0x7b, 0xa, 0x86, 0x78, 0x5, 0x98, 0x69, 0x65, 0x91, 0x62, 0x1b, + 0xfb, 0x64, 0xfb, 0x11, 0xfb, 0x27, 0xfb, 0x20, 0xfb, 0xc, 0xf4, 0x48, + 0xf7, 0xa, 0xf0, 0xf0, 0xb3, 0xc3, 0xdf, 0x1f, 0xe, 0xf7, 0x79, 0xe6, + 0x3, 0xf7, 0x79, 0xf8, 0x81, 0x15, 0xe6, 0x6, 0xf7, 0x45, 0xf7, 0x1e, + 0x5b, 0xaf, 0xfb, 0x36, 0x25, 0xfb, 0xc, 0xf1, 0x4b, 0x68, 0x5, 0xe, + 0xfb, 0x4d, 0x76, 0xf7, 0x58, 0xe8, 0xf7, 0xae, 0xe9, 0x1, 0xa4, 0xf1, + 0x3, 0xf7, 0x23, 0xfb, 0x46, 0x15, 0x7b, 0x9e, 0xa6, 0x7f, 0xac, 0x1b, + 0xd3, 0xc0, 0xc2, 0xc5, 0xa5, 0x85, 0xac, 0x62, 0x95, 0x1f, 0x8f, 0x9c, + 0xdd, 0x98, 0xda, 0xad, 0xcf, 0xb7, 0x19, 0x60, 0xd4, 0x5, 0x61, 0x46, + 0x4c, 0x6b, 0x38, 0x1b, 0x3f, 0x43, 0xaf, 0xd2, 0xee, 0xe4, 0xd7, 0xf7, + 0xe, 0xb5, 0xb2, 0x81, 0x7b, 0xaa, 0x1f, 0x77, 0x31, 0x5, 0xef, 0x6, + 0xb8, 0xf7, 0x66, 0x5, 0x27, 0x6, 0x87, 0x78, 0x5, 0x98, 0x69, 0x64, + 0x91, 0x62, 0x1b, 0xfb, 0x62, 0xfb, 0x12, 0xfb, 0x26, 0xfb, 0x1d, 0xfb, + 0x4, 0xe4, 0x4a, 0xf6, 0x82, 0x1f, 0x70, 0x31, 0x5, 0x8c, 0x95, 0x9f, + 0x91, 0x9c, 0x1b, 0x96, 0x95, 0x87, 0x7d, 0x7c, 0x79, 0x83, 0x79, 0x7b, + 0x7b, 0x91, 0x93, 0x83, 0x1f, 0xe, 0xfb, 0x62, 0xd1, 0xb4, 0xea, 0x1, + 0xf7, 0xae, 0xd9, 0x3, 0xf7, 0x5d, 0xfb, 0x46, 0x15, 0x79, 0xa1, 0xa3, + 0x81, 0xa9, 0x1b, 0xce, 0xc2, 0xc0, 0xca, 0xb8, 0x6b, 0x9a, 0x80, 0x8f, + 0x1f, 0x8f, 0xa5, 0x5, 0x3d, 0x6, 0x6b, 0x24, 0x5, 0x8d, 0x94, 0xa4, + 0x91, 0x9c, 0x1b, 0x95, 0x92, 0x86, 0x81, 0x78, 0x78, 0x84, 0x75, 0x7e, + 0x7f, 0x91, 0x93, 0x84, 0x1f, 0xe, 0x6f, 0x76, 0xf7, 0xfd, 0xf7, 0x4e, + 0xf7, 0x8, 0x77, 0x1, 0xc5, 0xf0, 0x3, 0xf7, 0x43, 0x5a, 0x15, 0xed, + 0x6, 0xa5, 0xf7, 0x1d, 0xd1, 0x95, 0xcc, 0xa4, 0xca, 0xb2, 0x19, 0x6c, + 0xd3, 0x5, 0x60, 0x37, 0x5b, 0x72, 0x49, 0x1b, 0x33, 0x76, 0xc1, 0xb0, + 0xd6, 0xd2, 0xd3, 0xe6, 0xaf, 0xae, 0x80, 0x7c, 0xa8, 0x1f, 0x7c, 0x49, + 0x96, 0xa, 0xb1, 0xf7, 0x4e, 0x7a, 0xa, 0x85, 0x6c, 0x78, 0x91, 0x76, + 0x90, 0x78, 0x8e, 0x19, 0xa6, 0xf7, 0x19, 0x66, 0xa, 0x70, 0xfb, 0x18, + 0x5, 0xfb, 0x23, 0x6c, 0x39, 0x2b, 0xfb, 0x9, 0x1a, 0xfb, 0x0, 0xf2, + 0x6e, 0xb5, 0x7f, 0x1e, 0xe, 0xf7, 0xaf, 0xe7, 0x3, 0xf7, 0x2d, 0xf8, + 0x77, 0x15, 0xf7, 0x37, 0xf2, 0xf7, 0xa, 0x24, 0xca, 0xad, 0xfb, 0xe, + 0x97, 0xa, 0x2f, 0x6, 0xfb, 0x48, 0xfb, 0x1f, 0x5, 0xe, 0x7c, 0xf7, + 0x41, 0xe9, 0xf7, 0x41, 0x1, 0xf7, 0x6f, 0xf7, 0xd4, 0x15, 0x6e, 0xa3, + 0x64, 0xd0, 0xcf, 0xc3, 0xbc, 0xc8, 0xac, 0x6c, 0xa9, 0x51, 0x48, 0x4e, + 0x56, 0x57, 0x1e, 0x53, 0xfb, 0x9e, 0x15, 0x6e, 0xa4, 0x63, 0xd0, 0xc8, + 0xbf, 0xb3, 0xb9, 0x96, 0x1e, 0x8c, 0x90, 0x8b, 0x91, 0x90, 0x1a, 0xaf, + 0x70, 0xae, 0x4c, 0x4a, 0x4b, 0x58, 0x56, 0x1e, 0xe, 0xfb, 0x3, 0xf7, + 0xb5, 0x1, 0xf7, 0x1a, 0xf7, 0x13, 0xac, 0xf7, 0x3f, 0x3, 0xf7, 0x1a, + 0xfb, 0x3, 0x15, 0xf7, 0x13, 0x6, 0xf7, 0x60, 0xf7, 0xb5, 0x5, 0xfb, + 0x3f, 0x6, 0xe, 0x79, 0xb8, 0xe9, 0xb9, 0xf7, 0x8c, 0xb9, 0xd5, 0xb8, + 0x1, 0x84, 0xb9, 0xf7, 0x2, 0xb9, 0xf8, 0x1, 0xba, 0x3, 0x84, 0xf7, + 0x6d, 0x15, 0xfb, 0x18, 0xf6, 0x24, 0xf7, 0x21, 0xf7, 0x78, 0xf7, 0x1e, + 0xf7, 0x44, 0xf7, 0x48, 0xf7, 0x1d, 0x25, 0xf4, 0xfb, 0x24, 0xfb, 0x4d, + 0xfb, 0x4b, 0xfb, 0x1c, 0xfb, 0x77, 0x1e, 0xb9, 0x9c, 0x15, 0xf7, 0x35, + 0xf7, 0x2f, 0xf7, 0x20, 0xf7, 0x30, 0xf7, 0x13, 0xde, 0x30, 0xfb, 0xc, + 0xfb, 0x32, 0xfb, 0x28, 0xfb, 0x1f, 0xfb, 0x35, 0xfb, 0x11, 0x34, 0xe5, + 0xf7, 0x9, 0x1e, 0xf7, 0xfd, 0x77, 0x15, 0x72, 0x6f, 0x62, 0x75, 0x63, + 0x1b, 0x4e, 0x69, 0xb8, 0xc3, 0x8a, 0x1f, 0xd6, 0xd4, 0xd3, 0xd2, 0xae, + 0xaf, 0x7a, 0x76, 0x9d, 0x1e, 0xae, 0xab, 0x5, 0xa9, 0x72, 0x61, 0xa1, + 0x5d, 0x1b, 0x2b, 0x22, 0x36, 0xfb, 0x9, 0x42, 0xbb, 0x4a, 0xe4, 0xcc, + 0xc7, 0xaf, 0x9e, 0x9f, 0x1f, 0xe, 0xce, 0xe4, 0x35, 0x76, 0xf7, 0xfd, + 0xe3, 0x9e, 0x77, 0x12, 0xd7, 0xe7, 0xf7, 0x9e, 0xe7, 0x13, 0x6c, 0x9c, + 0xf5, 0x15, 0xbe, 0x52, 0xd2, 0xc4, 0x5, 0x13, 0xac, 0x6f, 0xac, 0xb7, + 0x80, 0xb9, 0x1b, 0xb8, 0xba, 0x9a, 0xa4, 0xaf, 0x1f, 0x13, 0x5c, 0xbe, + 0x51, 0xd2, 0xc6, 0x58, 0xc5, 0x5, 0xb2, 0xb2, 0xa5, 0xc7, 0xc4, 0x1a, + 0xa7, 0x86, 0xa7, 0x7f, 0xa3, 0x1e, 0xd5, 0xc5, 0x5e, 0xc4, 0x40, 0x50, + 0x5, 0x13, 0xac, 0xa7, 0x6b, 0x5f, 0x97, 0x5e, 0x1b, 0x5c, 0x5a, 0x7d, + 0x73, 0x67, 0x1f, 0x13, 0x9c, 0x5a, 0xc4, 0x43, 0x50, 0xbd, 0x51, 0x5, + 0x67, 0x63, 0x70, 0x51, 0x53, 0x1a, 0x6e, 0x8f, 0x70, 0x98, 0x72, 0x1e, + 0xd6, 0xec, 0x15, 0x13, 0xac, 0xda, 0xdc, 0xd0, 0xd8, 0xcb, 0xb7, 0x5d, + 0x50, 0x3b, 0x3a, 0x46, 0x3d, 0x4b, 0x60, 0xb9, 0xc7, 0x1e, 0xe, 0x7c, + 0xe9, 0x39, 0xe9, 0xf7, 0x7f, 0xe9, 0xf7, 0x4, 0xe9, 0x12, 0x9d, 0xef, + 0x13, 0x78, 0xf8, 0xe, 0x88, 0x15, 0xf7, 0x46, 0x3f, 0xa, 0x3c, 0x6, + 0xf4, 0xf8, 0xab, 0x5, 0xfb, 0x73, 0x87, 0xa, 0xf7, 0x11, 0x6, 0x70, + 0xfb, 0x1c, 0x5, 0xac, 0x6a, 0x53, 0x91, 0x53, 0x1b, 0xfb, 0x32, 0xfb, + 0x1d, 0xfb, 0x16, 0xfb, 0x24, 0x1f, 0x13, 0xb8, 0x24, 0xde, 0x42, 0xf7, + 0x13, 0xc1, 0xc6, 0xa5, 0xab, 0xba, 0x1e, 0x13, 0x78, 0xfb, 0xa2, 0xf7, + 0x20, 0x15, 0xe6, 0xe3, 0xce, 0xea, 0xd9, 0xba, 0x68, 0x52, 0x1e, 0x13, + 0xb8, 0xfb, 0x18, 0xfb, 0x1e, 0x65, 0x5f, 0x44, 0x54, 0xb1, 0xcd, 0x1e, + 0xe, 0xf7, 0xcf, 0xed, 0xf7, 0x3b, 0x77, 0x1, 0xf7, 0x3a, 0xee, 0x3, + 0xf7, 0x3a, 0x45, 0x15, 0xee, 0x6, 0xd6, 0xf8, 0x15, 0x5, 0xf7, 0x26, + 0x6, 0x9e, 0xed, 0x5, 0xfb, 0x26, 0x6, 0xad, 0xf7, 0x3b, 0x7b, 0xa, + 0x69, 0xfb, 0x3b, 0x5, 0xfb, 0x26, 0x6, 0x78, 0x29, 0x5, 0xf7, 0x25, + 0x6, 0xe, 0xf7, 0x4, 0xee, 0xf7, 0x9, 0xec, 0xf7, 0x2f, 0x77, 0x1, + 0xf7, 0x4b, 0xf0, 0x3, 0xcf, 0xf7, 0xe, 0x15, 0xf7, 0x2e, 0x6, 0x64, + 0xfb, 0x54, 0x5, 0xf0, 0x6, 0xaf, 0xf7, 0x54, 0x70, 0xa, 0x9f, 0xee, + 0x85, 0xa, 0xa3, 0xf6, 0x70, 0xa, 0x9f, 0xec, 0x85, 0xa, 0xa9, 0xf7, + 0x2f, 0x66, 0xa, 0x68, 0xfb, 0x2f, 0x5, 0xfb, 0x2a, 0x6, 0x77, 0x2a, + 0x5, 0xf7, 0x2a, 0x6, 0x77, 0x20, 0x5, 0xfb, 0x2e, 0x6, 0xe, 0xf7, + 0x87, 0xe6, 0xf7, 0x53, 0xe6, 0x1, 0xf1, 0xed, 0xf7, 0x5e, 0xeb, 0x3, + 0xf1, 0xf8, 0x15, 0x15, 0x39, 0xcf, 0x4f, 0xe8, 0xf7, 0x21, 0xe9, 0xf4, + 0xf7, 0xd, 0xe2, 0x4a, 0xc7, 0x2d, 0xfb, 0xa, 0xfb, 0xb, 0x2d, 0xfb, + 0x1d, 0x1e, 0xed, 0xa1, 0x15, 0xcc, 0xc1, 0xc0, 0xcd, 0xbf, 0xa9, 0x6a, + 0x5e, 0x4e, 0x51, 0x57, 0x4d, 0x5a, 0x6a, 0xab, 0xb4, 0x1e, 0xe, 0xf8, + 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x12, 0xf7, 0xe, 0xd8, 0xf7, 0xf, 0x3, + 0xf7, 0xd9, 0xf8, 0x79, 0x15, 0xf7, 0xf, 0x6, 0xa5, 0x97, 0xa, 0xfb, + 0xe, 0x6, 0xfb, 0x76, 0xfb, 0x20, 0x15, 0xf7, 0xe, 0x6, 0xa6, 0x97, + 0xa, 0xfb, 0xf, 0x6, 0xe, 0x9b, 0xf7, 0x2b, 0xaf, 0xf7, 0x2, 0xaf, + 0xf7, 0x2b, 0x12, 0xf7, 0x57, 0xf7, 0x23, 0x4d, 0xf7, 0x23, 0x14, 0xe0, + 0x13, 0xe8, 0xf7, 0xa8, 0xf8, 0x29, 0x4f, 0xa, 0xfb, 0x6d, 0xfb, 0x5e, + 0x73, 0xa, 0x13, 0xf0, 0xf7, 0x9, 0xfb, 0x85, 0x4f, 0xa, 0xe, 0x22, + 0x76, 0xf7, 0x8, 0xf7, 0x4a, 0xf7, 0x75, 0xf7, 0x49, 0x20, 0xe9, 0x2d, + 0xf7, 0x57, 0x12, 0xf7, 0x4, 0xf5, 0xf7, 0x4e, 0xf0, 0x13, 0xce, 0xa8, + 0x81, 0x15, 0xf0, 0x6, 0x93, 0xbe, 0x5, 0x7b, 0x9c, 0xa4, 0x85, 0xa0, + 0x1b, 0x6e, 0xfb, 0x25, 0x5, 0xf0, 0x6, 0xa9, 0xf7, 0x24, 0x5, 0xd5, + 0x8c, 0xf7, 0x14, 0xbb, 0xf7, 0x1f, 0x1a, 0xda, 0x31, 0xa1, 0x31, 0xa5, + 0x1e, 0x68, 0x94, 0x43, 0x9f, 0xb1, 0x1a, 0xcf, 0xe0, 0x8e, 0xb1, 0xb0, + 0xa5, 0x82, 0x71, 0xb1, 0x1e, 0x13, 0xe6, 0x83, 0x64, 0x5, 0xee, 0x6, + 0xb1, 0xf7, 0x49, 0x5, 0x27, 0x6, 0x83, 0x62, 0x80, 0x9e, 0x79, 0x90, + 0x79, 0x8e, 0x19, 0x13, 0xce, 0xa1, 0xf1, 0x5, 0x24, 0x6, 0x13, 0xd6, + 0x77, 0x26, 0x5, 0x3c, 0x8a, 0xfb, 0x10, 0x54, 0xfb, 0x11, 0x1a, 0x8a, + 0x3c, 0xd7, 0x6c, 0xf3, 0x6d, 0x8, 0xb1, 0x81, 0xd6, 0x82, 0x56, 0x1a, + 0x56, 0xfb, 0x6, 0x86, 0x6f, 0x65, 0x69, 0x93, 0xa2, 0x6c, 0x1e, 0x93, + 0xa6, 0x5, 0x26, 0x6, 0xe, 0xf8, 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x78, + 0xf7, 0x9, 0x3, 0xf7, 0x78, 0xf8, 0x79, 0x15, 0xf7, 0x9, 0x6, 0xa6, + 0x97, 0xa, 0xfb, 0x9, 0x6, 0xe, 0x7f, 0xa, 0xcd, 0xf8, 0x55, 0x3, + 0xcd, 0x16, 0xf8, 0x55, 0x6, 0x9e, 0xe9, 0x3e, 0xa, 0xd1, 0xf7, 0xed, + 0x5, 0xfb, 0x80, 0x6f, 0xa, 0xf7, 0x1e, 0x6, 0x58, 0xfb, 0x8f, 0x43, + 0xa, 0x7c, 0xea, 0xe0, 0xeb, 0xec, 0xeb, 0x1, 0xf8, 0x65, 0xea, 0x3, + 0xf7, 0x26, 0xf7, 0x48, 0x15, 0xf8, 0x23, 0x6, 0x91, 0xa0, 0x94, 0xb5, + 0xa8, 0x1a, 0xf4, 0x34, 0xd8, 0xfb, 0xc, 0xfb, 0x1a, 0xfb, 0x49, 0x35, + 0xfb, 0x5c, 0x26, 0xdb, 0x39, 0xf7, 0x30, 0xe7, 0xe7, 0xab, 0xb2, 0xda, + 0x1e, 0x6d, 0xda, 0x5, 0x66, 0x44, 0x49, 0x79, 0x3e, 0x1b, 0xfb, 0x11, + 0x74, 0xbd, 0xae, 0x8c, 0x1f, 0xa7, 0xeb, 0x15, 0xd1, 0xaa, 0xd9, 0xa6, + 0xc7, 0x1b, 0xcb, 0xc4, 0x6c, 0x49, 0x8c, 0x1f, 0xe, 0x5f, 0xa, 0xf7, + 0x82, 0xf8, 0x76, 0x15, 0xf7, 0xd9, 0xd9, 0x77, 0xf0, 0xfb, 0xcf, 0xfb, + 0xc, 0x5, 0x34, 0xfc, 0x13, 0x32, 0xa, 0x61, 0xa, 0xf7, 0x73, 0x77, + 0x76, 0xa, 0xf7, 0x5c, 0xf8, 0x73, 0x15, 0xf7, 0x40, 0xf4, 0xf7, 0x11, + 0x22, 0xcc, 0xad, 0xfb, 0x14, 0xf7, 0x24, 0x66, 0xa, 0xfb, 0x52, 0xfb, + 0x23, 0x5, 0x85, 0xfb, 0xf8, 0x35, 0xa, 0xfb, 0x49, 0x93, 0xa, 0xd2, + 0x31, 0xa, 0x61, 0xa, 0xce, 0xf7, 0x10, 0x76, 0xa, 0xf8, 0x25, 0xf8, + 0x89, 0x6d, 0xa, 0xa5, 0xf7, 0x10, 0x83, 0xa, 0xfb, 0x66, 0xfb, 0x10, + 0x5a, 0xa, 0xa4, 0xf7, 0x10, 0x65, 0xa, 0x28, 0xfc, 0x67, 0x32, 0xa, + 0x5f, 0xa, 0xf7, 0x6e, 0xf8, 0xc3, 0x15, 0xf7, 0xc3, 0x3e, 0xaf, 0xc5, + 0xfb, 0xa7, 0xf7, 0xd, 0x5, 0xfb, 0x21, 0xfc, 0x8b, 0x35, 0xa, 0xfb, + 0x4a, 0x93, 0xa, 0xd3, 0x3c, 0xf7, 0x2a, 0xea, 0xd9, 0xa0, 0xb5, 0xdd, + 0x1f, 0x81, 0xdc, 0x2f, 0xa, 0x7c, 0xe7, 0xf7, 0x49, 0xea, 0xf7, 0x3e, + 0xe8, 0x12, 0xc2, 0xf0, 0x6e, 0xed, 0xf7, 0x45, 0xeb, 0x56, 0xee, 0x13, + 0xf4, 0xf7, 0x47, 0xf7, 0xc9, 0x15, 0x46, 0x62, 0x54, 0x49, 0x3d, 0x1a, + 0x2c, 0xf0, 0x5f, 0xe3, 0xf7, 0x3d, 0xdf, 0xf7, 0x6, 0xe3, 0x8c, 0x1e, + 0x8c, 0xbe, 0x7b, 0xb3, 0x60, 0xab, 0x8, 0x13, 0xea, 0xc9, 0xb0, 0xb5, + 0xc7, 0xd4, 0x1a, 0xdb, 0x45, 0xc3, 0x23, 0xfb, 0x1c, 0x20, 0x29, 0x25, + 0x61, 0x9c, 0x67, 0xae, 0x6e, 0x1e, 0xb9, 0xf7, 0x0, 0x15, 0xc5, 0xc1, + 0xbb, 0xd2, 0xd5, 0xa1, 0x67, 0x6a, 0x8a, 0x1e, 0x4b, 0x47, 0x66, 0x51, + 0x58, 0x60, 0xa3, 0xb3, 0x1e, 0x13, 0xf4, 0x46, 0xfb, 0x9b, 0x15, 0xc8, + 0xd4, 0xb6, 0xcf, 0xd2, 0xaa, 0x6c, 0x67, 0x8e, 0x1e, 0x46, 0x42, 0x5e, + 0x4e, 0x48, 0x5e, 0xaf, 0xb4, 0x1e, 0xe, 0x7c, 0xf7, 0x17, 0x1, 0xa3, + 0xf7, 0x21, 0xca, 0xf7, 0x21, 0xcc, 0xf7, 0x21, 0x3, 0xa3, 0xaf, 0x15, + 0x60, 0xa, 0xa7, 0x7a, 0xa5, 0x63, 0x54, 0x6e, 0x5f, 0x67, 0x1e, 0xf8, + 0x2e, 0x50, 0xa, 0xfb, 0x62, 0x50, 0xa, 0xe, 0xf7, 0x5f, 0xef, 0x1, + 0x75, 0xf9, 0x5, 0x3, 0x75, 0xf7, 0x5f, 0x15, 0xf9, 0x5, 0x6, 0x9e, + 0xef, 0x5, 0xfd, 0x5, 0x6, 0xe, 0xf7, 0x5f, 0xef, 0x1, 0xc0, 0xf8, + 0x6f, 0x3, 0xc0, 0xf7, 0x5f, 0x15, 0xf8, 0x6f, 0x6, 0x9e, 0xef, 0x5, + 0xfc, 0x6f, 0x6, 0xe, 0xf7, 0xa, 0xf2, 0xd5, 0xf2, 0x1, 0xb4, 0xf8, + 0x64, 0x3, 0xd6, 0xf7, 0xbb, 0x15, 0xf8, 0x65, 0x6, 0x9e, 0xf2, 0x5, + 0xfc, 0x64, 0x6, 0x55, 0xfb, 0xac, 0x15, 0xf8, 0x64, 0x6, 0x9f, 0xf2, + 0x5, 0xfc, 0x65, 0x6, 0xe, 0x70, 0xe2, 0xf7, 0x95, 0xe1, 0x91, 0xa, + 0x9b, 0xf7, 0x0, 0xf7, 0xed, 0xf7, 0x7, 0x3, 0xf7, 0x80, 0xf8, 0x42, + 0x15, 0xf7, 0x1d, 0xc1, 0xd0, 0x62, 0xa8, 0x4a, 0x8c, 0x87, 0x19, 0x9d, + 0x6d, 0x78, 0x96, 0x44, 0x1b, 0xfb, 0x5c, 0xfb, 0x1c, 0xfb, 0x1, 0xfb, + 0x2c, 0x31, 0xd5, 0x3c, 0xf7, 0x35, 0xf7, 0x80, 0xec, 0xf7, 0x2c, 0xf7, + 0x41, 0xf7, 0x10, 0x39, 0xd4, 0x63, 0xa5, 0x1f, 0xf7, 0xb, 0xbf, 0x74, + 0xc0, 0xfb, 0x2d, 0x46, 0x6c, 0x9d, 0x3f, 0xa7, 0x60, 0x93, 0x19, 0x4f, + 0x58, 0xb1, 0x84, 0xbc, 0x77, 0xac, 0x7d, 0x19, 0x22, 0x5d, 0x5, 0x35, + 0xfb, 0xd0, 0x15, 0xf7, 0x0, 0xf7, 0x7, 0xbf, 0xe4, 0xf2, 0xb1, 0x58, + 0x55, 0x23, 0xfb, 0x7, 0x5b, 0x39, 0x3e, 0x44, 0xa8, 0xcf, 0x1e, 0xe, + 0x7c, 0xf7, 0x2e, 0xf8, 0x45, 0x77, 0x1, 0xf7, 0x34, 0xf7, 0x5d, 0x3, + 0xf7, 0x80, 0xf7, 0x48, 0x15, 0xee, 0x6, 0xf3, 0xf8, 0x1c, 0x5, 0xfb, + 0x1e, 0x6, 0xfb, 0x21, 0xfc, 0xa1, 0x15, 0x5f, 0xbf, 0x79, 0xac, 0xc9, + 0xc1, 0xb2, 0xc3, 0xab, 0x6b, 0xa6, 0x56, 0x43, 0x5f, 0x5b, 0x5f, 0x1e, + 0xe, 0xfb, 0x11, 0x76, 0xf8, 0x4b, 0xf7, 0x30, 0x1, 0xf7, 0x83, 0xf7, + 0x5d, 0x3, 0xf7, 0x83, 0xf7, 0xf9, 0x15, 0x69, 0xa9, 0x6d, 0xc0, 0xd4, + 0xb8, 0xb1, 0xc0, 0xbb, 0x57, 0x9c, 0x6a, 0x4e, 0x54, 0x66, 0x54, 0x1e, + 0x3c, 0xfc, 0x8b, 0x15, 0xf7, 0x1f, 0x6, 0xcb, 0xf8, 0x22, 0x7b, 0xa, + 0xe, 0x8b, 0xe9, 0xf7, 0x90, 0xe8, 0xea, 0xe6, 0x1, 0xf7, 0x87, 0xf3, + 0x3, 0xb6, 0x16, 0xf8, 0x49, 0x55, 0xa, 0xfb, 0x77, 0x6, 0xc0, 0xf7, + 0x90, 0x5, 0xf7, 0x78, 0x89, 0xa, 0xfb, 0x77, 0x6, 0xd5, 0x9c, 0x93, + 0xa0, 0xdb, 0x1b, 0xbc, 0xc0, 0x82, 0x83, 0xb8, 0x1f, 0xb1, 0xe8, 0x3e, + 0x95, 0x52, 0x91, 0x5c, 0x8a, 0x19, 0x58, 0x8a, 0x65, 0x83, 0x66, 0x78, + 0x55, 0x6d, 0x7c, 0x5a, 0x80, 0x58, 0x84, 0x6f, 0x18, 0x21, 0x6, 0x77, + 0x2e, 0x5, 0xf5, 0x6, 0x55, 0xfb, 0x90, 0x5, 0x21, 0x6, 0xe, 0xf8, + 0x75, 0xf8, 0x74, 0x15, 0xf5, 0x6, 0xa8, 0xf7, 0x26, 0x5, 0x21, 0x6, + 0xfb, 0x68, 0xfd, 0x6, 0x15, 0xf7, 0xb4, 0x37, 0xa, 0x29, 0x6, 0xcc, + 0xf7, 0xd8, 0x5, 0xfb, 0x48, 0x3c, 0xa, 0xe1, 0x6, 0x5e, 0xfb, 0x7e, + 0x66, 0xa, 0xfb, 0xe0, 0x31, 0x15, 0xf7, 0xb6, 0x37, 0xa, 0x28, 0x6, + 0xb9, 0xf7, 0x7e, 0x5, 0xee, 0x37, 0xa, 0x28, 0x6, 0x99, 0xc9, 0x99, + 0xc2, 0xe1, 0x7c, 0xad, 0x88, 0x19, 0xab, 0xe5, 0xfb, 0x2, 0x90, 0xfb, + 0xe, 0x88, 0x6d, 0xfb, 0x1e, 0x19, 0x7f, 0x56, 0x5, 0x29, 0x3c, 0xa, + 0xed, 0x6, 0x5e, 0xfb, 0x7e, 0x4e, 0xa, 0xe, 0x7c, 0xe7, 0xf7, 0x7e, + 0xe7, 0xf4, 0xe8, 0x1, 0xf8, 0x37, 0xef, 0x3, 0xa7, 0xaf, 0x15, 0x7d, + 0xad, 0xe6, 0x66, 0xe3, 0x1b, 0xf7, 0x43, 0xf2, 0xf7, 0xe, 0xf7, 0x17, + 0xde, 0x55, 0xdd, 0xfb, 0x10, 0x6a, 0x5c, 0x85, 0x77, 0x75, 0x1f, 0xa6, + 0xf7, 0x17, 0x5, 0xf7, 0xb3, 0x94, 0xa, 0xfc, 0x15, 0x6, 0x4b, 0xfb, + 0xd8, 0xcd, 0x71, 0x5, 0xc7, 0xbb, 0xb4, 0x8b, 0xa6, 0x1b, 0xcb, 0xbd, + 0x61, 0x52, 0x3f, 0x4b, 0x50, 0x2d, 0x49, 0x4f, 0x9d, 0xa1, 0x53, 0x1f, + 0xe, 0x8b, 0xe8, 0xf7, 0x86, 0xe9, 0xef, 0xe8, 0x8f, 0x77, 0x12, 0x13, + 0xd0, 0xf7, 0xbf, 0x16, 0xf7, 0xb8, 0x94, 0xa, 0x27, 0x6, 0xf5, 0xf8, + 0xa9, 0x5, 0xfb, 0x1b, 0x82, 0xa, 0xb5, 0x6, 0x34, 0xfc, 0x4c, 0x7b, + 0xa, 0xfb, 0xe1, 0x2e, 0x15, 0xf7, 0xb9, 0x6, 0x9d, 0xe8, 0x5, 0x27, + 0x6, 0xbc, 0xf7, 0x86, 0x5, 0xee, 0x6, 0x9d, 0xe9, 0x5, 0x27, 0x6, + 0x9a, 0xc2, 0x5, 0x13, 0xe0, 0x97, 0xc3, 0xe9, 0x7e, 0xad, 0x8d, 0xaa, + 0xe8, 0x18, 0xfb, 0x16, 0x8e, 0xfb, 0x0, 0x8a, 0x6e, 0xfb, 0x22, 0x80, + 0x56, 0x18, 0x27, 0x44, 0xa, 0xef, 0x6, 0x5b, 0xfb, 0x86, 0x7b, 0xa, + 0xe, 0xfb, 0x17, 0xea, 0xf8, 0x6, 0xea, 0xe8, 0xe9, 0x1, 0xf7, 0xc3, + 0xee, 0x3, 0x8d, 0x6d, 0x15, 0x3b, 0x2e, 0x5, 0x88, 0xa7, 0xc0, 0x86, + 0xbd, 0x1b, 0xdc, 0xe8, 0xa8, 0xf1, 0xb3, 0x1f, 0xf7, 0x1b, 0xf7, 0xe2, + 0x5, 0xf7, 0x3, 0x6, 0xb1, 0xea, 0x65, 0xa, 0xd0, 0xaa, 0xa3, 0xa3, + 0xc2, 0x1b, 0xa4, 0xaa, 0x87, 0x88, 0xa0, 0x1f, 0xc1, 0xe9, 0x5, 0x90, + 0x5e, 0x8b, 0x8d, 0x65, 0x1b, 0xfb, 0x10, 0x43, 0x5c, 0x22, 0x5f, 0x1f, + 0x7b, 0x68, 0x5, 0x20, 0x6, 0x64, 0x2c, 0x5, 0xf7, 0x1, 0x6, 0xfb, + 0x5, 0xfb, 0xae, 0x5, 0x3e, 0x6d, 0x74, 0x80, 0x50, 0x1b, 0x71, 0x70, + 0x8f, 0x8d, 0x74, 0x1f, 0xe, 0x8b, 0xe8, 0xd6, 0xe8, 0xf7, 0xf7, 0x77, + 0x1, 0xf7, 0xd0, 0xef, 0x3, 0xc9, 0xf7, 0x3c, 0x15, 0xf7, 0xa4, 0x6, + 0x79, 0x40, 0x5, 0xfb, 0x0, 0x82, 0xa, 0xf7, 0xbd, 0x89, 0xa, 0x31, + 0x6, 0x9c, 0xd6, 0x5, 0xe0, 0x89, 0xa, 0x35, 0x6, 0xd4, 0xf7, 0xf7, + 0x5, 0xfb, 0x0, 0x6, 0xfb, 0xe5, 0xfc, 0x4, 0x5, 0xf7, 0x6, 0x98, + 0x15, 0xf7, 0x62, 0xf7, 0x7d, 0x5b, 0xfb, 0x7d, 0x5, 0xe, 0x61, 0xf9, + 0x41, 0x3, 0x61, 0x83, 0x15, 0xc8, 0x57, 0xf9, 0x4, 0xf9, 0x34, 0x4b, + 0xbc, 0x5, 0xe, 0xfb, 0x26, 0xe5, 0xea, 0xe3, 0xf7, 0x6f, 0xe4, 0x45, + 0xe4, 0x12, 0xb1, 0xed, 0x13, 0xe8, 0xb8, 0x73, 0x15, 0x62, 0x31, 0x5, + 0x79, 0xdb, 0xd0, 0x7d, 0xd5, 0x1b, 0xf7, 0x50, 0xb4, 0xe7, 0xf2, 0xa0, + 0x1f, 0xc9, 0xf7, 0xbd, 0x5c, 0xa, 0x9e, 0xe4, 0x5, 0xfb, 0x3d, 0x6, + 0x83, 0x6b, 0x5, 0x13, 0xd8, 0xa8, 0x6a, 0x5f, 0xa1, 0x58, 0x1b, 0xfb, + 0x2e, 0xfb, 0x1f, 0xfb, 0x0, 0xfb, 0x1b, 0x27, 0xd6, 0x43, 0xf7, 0x14, + 0xbe, 0xc0, 0x8e, 0xa9, 0xb8, 0x1f, 0x2c, 0x77, 0x81, 0x6a, 0xfb, 0x9, + 0x1b, 0x41, 0x33, 0xa0, 0x96, 0x67, 0x1f, 0xe6, 0xf7, 0x8e, 0x15, 0xdb, + 0xe1, 0xc6, 0xe1, 0xd4, 0xb9, 0x60, 0x4e, 0x8a, 0x1e, 0x33, 0x41, 0x5d, + 0x2c, 0x4a, 0x53, 0xb2, 0xc7, 0x1e, 0xe, 0xfb, 0x26, 0xde, 0xe3, 0xdc, + 0xf7, 0x70, 0xdd, 0x1, 0x9d, 0xed, 0x3, 0xa4, 0x6a, 0x15, 0x62, 0x38, + 0x5, 0x7a, 0xdb, 0xd0, 0x7e, 0xd5, 0x1b, 0xf7, 0x50, 0xb4, 0xe0, 0xea, + 0xa0, 0x1f, 0xc9, 0xf7, 0xae, 0x5c, 0xa, 0x9e, 0xdd, 0x5, 0xfb, 0x3d, + 0x6, 0x83, 0x66, 0x5, 0xa6, 0x6a, 0x5f, 0x9f, 0x58, 0x1b, 0xfb, 0x2e, + 0xfb, 0x1f, 0x27, 0xfb, 0x10, 0x2e, 0xd6, 0x49, 0xf7, 0x14, 0xbe, 0xc0, + 0x8e, 0xa6, 0xb8, 0x1f, 0x34, 0x77, 0x81, 0x6c, 0xfb, 0x9, 0x1b, 0x41, + 0x33, 0x9e, 0x96, 0x67, 0x1f, 0xe6, 0xf7, 0x7a, 0x15, 0xd5, 0xe1, 0xc2, + 0xe1, 0xd4, 0xb9, 0x63, 0x53, 0x8a, 0x1e, 0x39, 0x41, 0x61, 0x2c, 0x4a, + 0x53, 0xaf, 0xc2, 0x1e, 0xf7, 0x65, 0xf7, 0xb5, 0x15, 0xee, 0x6, 0xf7, + 0x54, 0xf7, 0x24, 0x57, 0xaf, 0xfb, 0x46, 0x5e, 0xa, 0x7c, 0xe9, 0x39, + 0xe9, 0xf7, 0x90, 0xe9, 0xf5, 0xde, 0x12, 0xf7, 0xb1, 0xed, 0xf7, 0xe, + 0xed, 0x13, 0x7c, 0x88, 0x88, 0x15, 0xf7, 0x45, 0x6, 0xe6, 0xf8, 0x56, + 0x5, 0xdf, 0x9b, 0xad, 0x97, 0xdd, 0x1b, 0xbe, 0xb7, 0x82, 0x6a, 0x6b, + 0x40, 0x77, 0x74, 0x86, 0x1f, 0x4d, 0x7d, 0x5c, 0x56, 0x46, 0x1a, 0x4f, + 0xc9, 0x74, 0xcb, 0x73, 0x1e, 0xaa, 0x80, 0xca, 0x81, 0x6f, 0x1a, 0x13, + 0xbc, 0x69, 0x4d, 0x64, 0x4d, 0x66, 0x62, 0x9d, 0x97, 0x70, 0x1e, 0x46, + 0x46, 0x5, 0x67, 0xc2, 0xb0, 0x78, 0xc2, 0x1b, 0xf7, 0x1f, 0xf7, 0x2, + 0xda, 0xf6, 0xca, 0x46, 0xa4, 0x4c, 0xa0, 0x1f, 0x71, 0x93, 0x4d, 0x99, + 0xad, 0x1a, 0xa3, 0xbc, 0x9e, 0xa7, 0x94, 0x1e, 0xcd, 0xa0, 0xc9, 0xa1, + 0xd3, 0x1a, 0xd6, 0x77, 0xbb, 0xfb, 0x3f, 0xfb, 0x2f, 0x5c, 0x55, 0xfb, + 0x5, 0x74, 0x1e, 0x86, 0x75, 0x5, 0x3b, 0x6f, 0xa, 0xdd, 0x6, 0x13, + 0x7c, 0x59, 0xfb, 0x90, 0x5, 0x38, 0x6, 0xe, 0xf7, 0x4c, 0xf7, 0x7b, + 0x3, 0xf7, 0x4c, 0xf8, 0xcf, 0x15, 0xf7, 0x63, 0x4c, 0xa3, 0xbc, 0xfb, + 0x50, 0xf3, 0x5, 0xe, 0xaf, 0x76, 0xf8, 0x7a, 0x77, 0x1, 0xc1, 0x9a, + 0x15, 0xf8, 0x6b, 0xf7, 0x4b, 0xa0, 0xf7, 0xa, 0xfc, 0x25, 0xf7, 0x4d, + 0x7a, 0x2d, 0xf7, 0xd1, 0xfb, 0x2a, 0xfc, 0xa, 0xfb, 0x28, 0x5, 0xe, + 0xd1, 0xc5, 0xf7, 0x96, 0xc7, 0x1, 0xc5, 0xf7, 0x5, 0xf7, 0x2, 0xf7, + 0x5, 0x3, 0xc5, 0xf7, 0x9b, 0x51, 0xa, 0x9c, 0xfb, 0x4b, 0x51, 0xa, + 0xe, 0xe6, 0x76, 0xf8, 0xc, 0x77, 0x1, 0xf7, 0x86, 0xf7, 0xa, 0xd0, + 0xf7, 0x5, 0x3, 0xc5, 0xf7, 0x19, 0x15, 0xaf, 0x4c, 0xf7, 0x9e, 0xf7, + 0x4e, 0xfb, 0x5e, 0xf7, 0x52, 0x53, 0x4d, 0xf7, 0x20, 0xfb, 0x13, 0x5, + 0x9a, 0xfb, 0x10, 0x15, 0xae, 0x4c, 0xf7, 0x8e, 0xf7, 0x4e, 0xfb, 0x4c, + 0xf7, 0x52, 0x53, 0x4d, 0xf7, 0x13, 0xfb, 0x13, 0x5, 0xe, 0xd1, 0xf8, + 0xc, 0x1, 0xf7, 0x12, 0xf7, 0xbd, 0x3, 0xf7, 0x12, 0xf7, 0x97, 0x15, + 0xf7, 0x7f, 0xfb, 0x51, 0xc9, 0xbf, 0xfb, 0x3f, 0xf7, 0x1c, 0xf7, 0x72, + 0xf7, 0x11, 0x65, 0xca, 0x5, 0xe, 0xd1, 0xf8, 0xc, 0x1, 0xf7, 0x12, + 0xf7, 0x18, 0x15, 0xb2, 0x4d, 0xf7, 0xc9, 0xf7, 0x51, 0xfb, 0x7a, 0xf7, + 0x4f, 0x4b, 0x56, 0xf7, 0x3d, 0xfb, 0x12, 0x5, 0xe, 0x81, 0xa, 0xf1, + 0xec, 0x3, 0x8d, 0x16, 0xf7, 0x94, 0x55, 0xa, 0x3c, 0x6, 0xb2, 0xf7, + 0x57, 0x5, 0xbc, 0xdc, 0xc4, 0x94, 0xa7, 0x1b, 0xb1, 0x9f, 0x7b, 0x76, + 0x82, 0x89, 0x81, 0x89, 0x81, 0x1f, 0x66, 0xfb, 0x4f, 0x5, 0x3b, 0x6f, + 0xa, 0xf7, 0x96, 0x3f, 0xa, 0x3a, 0x6, 0xaf, 0xf7, 0x48, 0x5, 0x8f, + 0x9c, 0x8f, 0x9d, 0x9d, 0x1a, 0xc5, 0x77, 0xc2, 0xfb, 0x8, 0x4f, 0x57, + 0x76, 0x71, 0x55, 0x1e, 0xbb, 0xf7, 0x7d, 0x5, 0xfb, 0x46, 0x44, 0xa, + 0xdd, 0x6, 0x31, 0xfc, 0x4a, 0x5, 0x3a, 0x6, 0xe, 0xf8, 0x7c, 0xf7, + 0x41, 0x1, 0xba, 0xc2, 0xf7, 0x34, 0xc2, 0x3, 0xf7, 0x9a, 0xf8, 0x8f, + 0x15, 0xc2, 0x78, 0xf7, 0x80, 0xf7, 0x23, 0x31, 0xa9, 0x5, 0xfc, 0x34, + 0xfb, 0x2e, 0x15, 0xc2, 0x78, 0xf7, 0x82, 0xf7, 0x23, 0x31, 0xa9, 0x5, + 0xe, 0xf7, 0x5f, 0xf7, 0x2, 0x1, 0xe3, 0xf8, 0x25, 0x3, 0xe3, 0xf7, + 0x5f, 0x15, 0xf8, 0x25, 0x6, 0xa2, 0xf7, 0x2, 0x5, 0xfc, 0x25, 0x6, + 0xe, 0x8b, 0xea, 0xf7, 0x93, 0xea, 0xc9, 0xf7, 0x2b, 0x1, 0xf7, 0xf3, + 0xf7, 0x4, 0x3, 0xf7, 0xd4, 0x69, 0xa, 0xfb, 0xbb, 0xfd, 0x26, 0x15, + 0xf8, 0x54, 0x6, 0x9f, 0xea, 0x8f, 0xa, 0x6, 0xd1, 0xf7, 0xf2, 0x5, + 0xfb, 0x7f, 0x6, 0x77, 0x2c, 0x5, 0xf7, 0x1d, 0x6, 0x59, 0xfb, 0x93, + 0x5, 0xfb, 0x44, 0x6, 0xe, 0x78, 0xa, 0x91, 0xa, 0xf7, 0x7e, 0xf8, + 0x77, 0x15, 0xf7, 0xdf, 0xd8, 0x78, 0xf0, 0xfb, 0xd6, 0xfb, 0xc, 0x5, + 0xfb, 0x48, 0xfc, 0xb1, 0x2e, 0xa, 0x78, 0xa, 0xf7, 0x6f, 0x77, 0x1, + 0xf7, 0x5f, 0xf8, 0x74, 0x15, 0xf7, 0x37, 0xf3, 0xf7, 0x9, 0x23, 0xc8, + 0xae, 0xfb, 0xc, 0xf7, 0x22, 0x5, 0x30, 0x6, 0xfb, 0x48, 0xfb, 0x21, + 0x5, 0xfb, 0x1, 0xfc, 0x98, 0x2e, 0xa, 0x78, 0xa, 0xc9, 0xf7, 0x11, + 0x1, 0xf8, 0x27, 0xf8, 0x89, 0x15, 0xf7, 0x1, 0x89, 0xa4, 0xf7, 0x12, + 0x86, 0xa, 0xfb, 0x5e, 0xfb, 0x10, 0x15, 0xf7, 0x0, 0x6, 0xa4, 0xf7, + 0x10, 0x5, 0xfb, 0x1, 0x6, 0xfb, 0x61, 0xfd, 0x5, 0x2e, 0xa, 0x78, + 0xa, 0x91, 0xa, 0xf7, 0x73, 0xf8, 0xc4, 0x15, 0xf7, 0xaa, 0x3e, 0xac, + 0xc5, 0xfb, 0x90, 0xf7, 0xc, 0x5, 0xfb, 0x82, 0xfd, 0x29, 0x2e, 0xa, + 0xfb, 0x26, 0xea, 0xf8, 0x35, 0xe6, 0xbd, 0xf7, 0x2b, 0xfb, 0x25, 0xf7, + 0x25, 0x12, 0x13, 0xe0, 0xf7, 0x20, 0x69, 0xa, 0xfb, 0x61, 0xfd, 0x59, + 0x15, 0x77, 0x2c, 0x5, 0xf7, 0x82, 0x6, 0x9f, 0xea, 0x5, 0x41, 0x6, + 0xf7, 0x2, 0xf8, 0x84, 0x5, 0xfb, 0x39, 0x6, 0x77, 0x2c, 0x5, 0xce, + 0x6, 0x31, 0xfc, 0x25, 0x5, 0x13, 0xd0, 0xf8, 0x69, 0xf8, 0xc8, 0x15, + 0xf7, 0xc, 0x6, 0xac, 0xf7, 0x25, 0x5, 0xfb, 0xd, 0x6, 0xfb, 0xa1, + 0xfd, 0x4a, 0x15, 0x5e, 0x30, 0x5, 0x86, 0x9a, 0xa4, 0x7d, 0xc5, 0x1b, + 0xf7, 0x4b, 0x9e, 0x8b, 0xa, 0xfb, 0x67, 0x6e, 0xa, 0xf4, 0x6, 0x44, + 0xfb, 0xce, 0x5, 0x45, 0x7b, 0x6c, 0x66, 0x61, 0x1b, 0x57, 0x7f, 0x9a, + 0x8f, 0x81, 0x1f, 0xe, 0xfb, 0x26, 0xe6, 0xf8, 0x39, 0xe6, 0xc3, 0xf7, + 0x25, 0x1, 0xf7, 0xc5, 0xf4, 0x3, 0xf8, 0xf, 0xf8, 0x95, 0x15, 0xf7, + 0xb, 0x6, 0xac, 0xf7, 0x25, 0x5, 0xfb, 0xc, 0x6, 0xfc, 0xe, 0xfd, + 0x4a, 0x15, 0x5e, 0x30, 0x5, 0x82, 0xc1, 0xc2, 0x81, 0xc5, 0x1b, 0xf7, + 0x66, 0xab, 0x8b, 0xa, 0xfc, 0x7, 0x6e, 0xa, 0xf7, 0x9d, 0x6, 0x44, + 0xfb, 0xce, 0x5, 0x45, 0x7b, 0x6a, 0x66, 0x3b, 0x1b, 0x57, 0x5d, 0x93, + 0x96, 0x5e, 0x1f, 0xe, 0x8b, 0xe9, 0x1, 0xe9, 0xd9, 0xf7, 0x15, 0xf7, + 0x91, 0x3, 0x87, 0x16, 0xf7, 0x44, 0x6, 0xae, 0xf7, 0x3d, 0xb2, 0xa3, + 0xb1, 0x72, 0xae, 0x68, 0xa7, 0x64, 0x19, 0x6f, 0x87, 0xa, 0xf7, 0x91, + 0x6, 0x9d, 0xe9, 0x5, 0x21, 0x6, 0x6a, 0xbd, 0x44, 0xcc, 0x68, 0xac, + 0xf7, 0x2a, 0xf2, 0x18, 0xf7, 0x0, 0x55, 0xa, 0xfb, 0xa3, 0x6f, 0xa, + 0x9f, 0x6, 0x20, 0x43, 0xd3, 0xf7, 0xf5, 0x5, 0xfb, 0x44, 0x6f, 0xa, + 0xdb, 0x6, 0x32, 0xfc, 0x4a, 0x5, 0x3c, 0x6, 0xe, 0x81, 0xa, 0xf7, + 0x98, 0xee, 0x3, 0xcd, 0x16, 0xf8, 0x54, 0x6, 0x9f, 0xe9, 0x3e, 0xa, + 0xf7, 0x1, 0xf8, 0xa8, 0x5, 0xfb, 0x94, 0x87, 0xa, 0xf7, 0x30, 0x6, + 0x31, 0xfc, 0x4a, 0x8f, 0xa, 0x6, 0xe, 0xaf, 0x76, 0xf8, 0x7a, 0x77, + 0x1, 0xc1, 0xf7, 0x5c, 0x15, 0xf8, 0x25, 0xfb, 0x4d, 0x9c, 0xe9, 0xfb, + 0xd1, 0xf7, 0x2a, 0xf8, 0x9, 0xf7, 0x28, 0x9c, 0xe9, 0xfc, 0x6a, 0xfb, + 0x4b, 0x5, 0xe, 0x84, 0x76, 0xb0, 0x76, 0xf7, 0x46, 0xde, 0xce, 0xde, + 0xf7, 0xb, 0xe8, 0x12, 0xf7, 0x3f, 0xea, 0x13, 0xbc, 0x52, 0xa, 0x13, + 0x7c, 0x3d, 0xa, 0x7c, 0x7f, 0x88, 0x83, 0x7f, 0x1f, 0x9c, 0x9a, 0xa8, + 0xbe, 0x89, 0x8e, 0x8, 0xf7, 0x47, 0x6, 0x9f, 0xde, 0x5, 0xfb, 0x3e, + 0x6, 0x89, 0x92, 0x91, 0xa8, 0x8a, 0xaa, 0x8, 0xf7, 0x27, 0x6, 0x9f, + 0xde, 0x5, 0xfb, 0x3a, 0x92, 0x6, 0xcb, 0xab, 0x47, 0xa, 0x3f, 0x3e, + 0xfb, 0x10, 0x1f, 0x80, 0x3b, 0x7, 0x78, 0x38, 0x5, 0xeb, 0x6, 0x6c, + 0x83, 0x6e, 0x8c, 0x84, 0x1e, 0x27, 0x6, 0x78, 0x38, 0x5, 0xe8, 0x6, + 0x8c, 0x6f, 0x67, 0x56, 0x43, 0x5a, 0x8, 0xe, 0xf7, 0xc0, 0xf7, 0x5, + 0x1, 0xf8, 0x18, 0xee, 0x3, 0xc6, 0xf7, 0xc0, 0x15, 0xf7, 0xff, 0x6, + 0x69, 0xfb, 0x59, 0x5, 0xee, 0x6, 0xc1, 0xf7, 0xca, 0x5, 0xfc, 0x63, + 0x6, 0xe, 0x81, 0xa, 0xf7, 0x91, 0xf4, 0x3, 0xbc, 0x16, 0xf8, 0x6d, + 0x55, 0xa, 0xfb, 0x4c, 0x6, 0xbb, 0xf7, 0x73, 0xf7, 0x16, 0xaa, 0x99, + 0xcd, 0xfb, 0x15, 0x6b, 0xc0, 0xf7, 0x88, 0x5, 0xfb, 0xae, 0x6, 0x76, + 0x2d, 0x5, 0xf7, 0x46, 0x6, 0x64, 0xfb, 0x45, 0xfb, 0x18, 0x6a, 0x7e, + 0x4a, 0xf7, 0x17, 0xab, 0x60, 0xfb, 0x57, 0x5, 0xfb, 0x4b, 0x6, 0xe, + 0x8b, 0xea, 0xf7, 0x90, 0xea, 0x1, 0xd4, 0xdd, 0xf5, 0xee, 0x3, 0x76, + 0x16, 0xf7, 0x8a, 0x6, 0x9c, 0xea, 0x5, 0x34, 0x6, 0xb6, 0xf7, 0x7b, + 0x5, 0x9c, 0xa0, 0xb0, 0x9b, 0xa1, 0x1b, 0xaa, 0x96, 0x77, 0x78, 0x86, + 0x8b, 0x87, 0x8a, 0x87, 0x1f, 0x51, 0xfb, 0xc7, 0x5, 0xf7, 0x35, 0x6, + 0x9b, 0xea, 0x5, 0x3d, 0x6, 0xb6, 0xf7, 0x73, 0x5, 0xab, 0xa7, 0xae, + 0x94, 0x9b, 0x1b, 0xad, 0x97, 0x6f, 0x81, 0x89, 0x1f, 0x4f, 0xfb, 0xd5, + 0x5, 0xf7, 0x1f, 0x6, 0x9b, 0xea, 0x5, 0x53, 0x6, 0xb7, 0xf7, 0x72, + 0x5, 0x8d, 0x95, 0x8c, 0x96, 0x94, 0x1a, 0xc9, 0x65, 0xb8, 0x46, 0x62, + 0x5f, 0x79, 0x6c, 0x6a, 0x1e, 0xb5, 0x7b, 0x66, 0x92, 0x75, 0x1b, 0x6c, + 0x6c, 0x7f, 0x73, 0x73, 0x1f, 0x8e, 0xa3, 0x5, 0xfb, 0x3b, 0x6, 0x79, + 0x2c, 0x5c, 0xa, 0x5a, 0xfb, 0x90, 0x5, 0x3d, 0x6, 0xe, 0xf8, 0x8d, + 0xdb, 0x1, 0xda, 0xf8, 0x3b, 0x3, 0xda, 0xf8, 0x8d, 0x15, 0xf8, 0x3b, + 0x6, 0x9d, 0xdb, 0x5, 0xfc, 0x3b, 0x6, 0xe, 0xf7, 0x5f, 0xf7, 0x2, + 0x1, 0xc6, 0xf8, 0x63, 0x3, 0xc6, 0xf7, 0x5f, 0x73, 0xa, 0xe, 0xfb, + 0xd, 0x76, 0xf7, 0x2a, 0xe0, 0x42, 0xe4, 0xf7, 0x85, 0xe4, 0x12, 0x13, + 0xd0, 0xa8, 0xfb, 0x22, 0x15, 0xeb, 0x6, 0xb1, 0xf7, 0x48, 0x5, 0x7d, + 0x98, 0x9d, 0x7b, 0xb2, 0x1b, 0xcc, 0xb8, 0xab, 0xab, 0xb7, 0x1f, 0x13, + 0xb0, 0x7f, 0x57, 0x5, 0xf7, 0x44, 0x6, 0x9e, 0xe4, 0x5, 0x3b, 0x6, + 0xcf, 0xf7, 0xde, 0x8d, 0xa, 0x63, 0xfb, 0x57, 0x5, 0x13, 0xd0, 0x68, + 0x5c, 0x62, 0x70, 0x50, 0x1b, 0x5f, 0x74, 0xa1, 0xad, 0x92, 0x8b, 0x94, + 0x8d, 0x93, 0x1f, 0xc1, 0xf7, 0x9e, 0x8d, 0xa, 0xe, 0xbc, 0xf8, 0x4e, + 0x3, 0xbc, 0xef, 0x15, 0xbc, 0x4e, 0xf7, 0x52, 0xf7, 0x35, 0xf7, 0x15, + 0xfb, 0x35, 0xd5, 0xc8, 0xfb, 0x15, 0xf7, 0x33, 0xf7, 0x50, 0xf7, 0x30, + 0x5b, 0xc7, 0xfb, 0x53, 0xfb, 0x31, 0xfb, 0x13, 0xf7, 0x34, 0x41, 0x4f, + 0xf7, 0x16, 0xfb, 0x33, 0x5, 0xe, 0x8b, 0xe9, 0xf7, 0x90, 0xea, 0x3b, + 0xe8, 0x12, 0x13, 0xa0, 0x8d, 0x16, 0xf7, 0x96, 0x3f, 0xa, 0x39, 0x6, + 0xb4, 0xf7, 0x5d, 0x5, 0xb6, 0xc6, 0xd3, 0xa2, 0xaa, 0x1b, 0xbd, 0x9a, + 0x7a, 0x72, 0x82, 0x89, 0x81, 0x89, 0x80, 0x1f, 0x64, 0xfb, 0x57, 0x5, + 0x3c, 0x44, 0xa, 0xf7, 0x93, 0x3f, 0xa, 0x3b, 0x6, 0xb7, 0xf7, 0x6d, + 0x5, 0x13, 0xc0, 0x8e, 0x98, 0x8d, 0x96, 0x96, 0x1a, 0x13, 0xa0, 0xd0, + 0x4d, 0xb2, 0x3e, 0x52, 0x4b, 0x6f, 0x6f, 0x5a, 0x1e, 0x13, 0xc0, 0x93, + 0xb6, 0x5, 0xfb, 0x46, 0x6, 0x78, 0x2c, 0x5, 0xde, 0x6, 0x58, 0xfb, + 0x90, 0x5, 0x3b, 0x6, 0xe, 0x7c, 0xe4, 0xf7, 0x1b, 0xe8, 0xf7, 0x70, + 0xe9, 0x1, 0xf7, 0x1d, 0xf1, 0xf7, 0x77, 0xe7, 0x3, 0xb5, 0x82, 0x15, + 0x87, 0xaa, 0xb5, 0x89, 0xbd, 0x1b, 0xf7, 0x5a, 0xf7, 0x57, 0xf7, 0x28, + 0xf7, 0xb0, 0xf2, 0x62, 0xeb, 0xfb, 0x1a, 0xfb, 0x15, 0xfb, 0x9, 0xfb, + 0x5, 0xfb, 0xa, 0x1f, 0x2e, 0x89, 0xce, 0x38, 0xf1, 0x1b, 0xb6, 0xb5, + 0x9d, 0x9b, 0xa8, 0x1f, 0xfb, 0xc, 0x6a, 0xfb, 0x1e, 0x5a, 0xfb, 0x48, + 0x1b, 0xf8, 0x23, 0xf7, 0xc6, 0x15, 0x86, 0x53, 0x42, 0x37, 0x56, 0x69, + 0xb1, 0xc4, 0xdf, 0xdb, 0xb4, 0xbe, 0xe3, 0x97, 0x3d, 0x4b, 0x87, 0x1e, + 0xe, 0x8b, 0xe7, 0xf7, 0x89, 0xe7, 0xf7, 0xc, 0xe0, 0x1, 0xf7, 0x38, + 0xf8, 0x95, 0x15, 0xda, 0x71, 0x5, 0xa4, 0x9a, 0x9c, 0xb0, 0xaf, 0x1b, + 0xa1, 0xa1, 0x7a, 0x7b, 0xa3, 0x1f, 0x7d, 0xa1, 0xa1, 0x7e, 0xa4, 0x1b, + 0xed, 0xbc, 0xe3, 0xaf, 0x9c, 0x1f, 0x3d, 0xa2, 0x5, 0x62, 0x71, 0x7e, + 0x75, 0x6e, 0x1b, 0x78, 0x77, 0x98, 0x98, 0x77, 0x1f, 0x9c, 0x72, 0x72, + 0x9d, 0x6f, 0x1b, 0x2d, 0x5d, 0x3d, 0x60, 0x72, 0x1f, 0xfb, 0x44, 0xfc, + 0x95, 0x15, 0xf7, 0x8c, 0x6, 0x9c, 0xe7, 0x5, 0x3d, 0x6, 0xb1, 0xf7, + 0x56, 0x5, 0xb6, 0xc4, 0xd1, 0xa1, 0xa7, 0x1b, 0xba, 0x9b, 0x7c, 0x75, + 0x81, 0x8a, 0x80, 0x89, 0x7f, 0x1f, 0x66, 0xfb, 0x51, 0x5, 0x3f, 0x6, + 0x78, 0x2f, 0x5, 0xf7, 0x88, 0x6, 0x9d, 0xe7, 0x5, 0x40, 0x6, 0xb4, + 0xf7, 0x66, 0x5, 0x8e, 0x98, 0x8c, 0x97, 0x97, 0x1a, 0xcd, 0x50, 0xb0, + 0x42, 0x55, 0x4b, 0x6f, 0x70, 0x5e, 0x1e, 0x94, 0xb5, 0x5, 0xfb, 0x40, + 0x6, 0x79, 0x2f, 0x8a, 0xa, 0x5a, 0xfb, 0x89, 0x5, 0x3e, 0x6, 0xe, + 0xf7, 0x29, 0xe6, 0xf7, 0x6, 0xe6, 0x12, 0xf7, 0x4, 0xe9, 0x84, 0xe5, + 0x9f, 0xe7, 0x81, 0xe9, 0x13, 0xe8, 0xce, 0x5e, 0x15, 0xe2, 0x6, 0xbf, + 0xf7, 0x56, 0x5, 0xf2, 0x6, 0x56, 0x98, 0xa, 0xea, 0x6, 0xbd, 0xf7, + 0x56, 0x5, 0xf7, 0x5, 0x34, 0xa, 0x21, 0x6, 0xab, 0xf7, 0x6, 0x5, + 0xed, 0x34, 0xa, 0x13, 0xd4, 0x30, 0x6, 0xc1, 0xf7, 0x62, 0x5, 0x30, + 0x6, 0x52, 0xfb, 0x62, 0x5, 0x25, 0x6, 0xc2, 0xf7, 0x62, 0x5, 0x32, + 0x6, 0x53, 0xfb, 0x62, 0x5, 0xfb, 0x5, 0x36, 0xa, 0xf6, 0x6, 0x6b, + 0xfb, 0x6, 0x5, 0x28, 0x36, 0xa, 0x13, 0xe8, 0xe3, 0x6, 0xf7, 0xb, + 0xe6, 0x15, 0xab, 0xf7, 0x6, 0x5, 0xf3, 0x6, 0x6b, 0xfb, 0x6, 0x5, + 0xe, 0x7c, 0xeb, 0xf7, 0xa9, 0xeb, 0x1, 0xa4, 0xf1, 0xf7, 0xef, 0xf0, + 0x3, 0xa4, 0xf7, 0x3c, 0x15, 0xfb, 0x1b, 0xf7, 0x17, 0x5b, 0xf4, 0xf7, + 0x31, 0xf7, 0x31, 0xe5, 0xf7, 0x4d, 0xee, 0x4b, 0xea, 0xfb, 0x35, 0xfb, + 0x2e, 0xfb, 0x3f, 0x22, 0xfb, 0x49, 0x1e, 0xf1, 0x9b, 0x15, 0xf3, 0xe8, + 0xd1, 0xf6, 0xf7, 0x3, 0xaf, 0x51, 0x54, 0xfb, 0x5, 0xfb, 0x1, 0x58, + 0x33, 0x54, 0x2c, 0x9e, 0xdf, 0x1e, 0xe, 0x5d, 0xa, 0xf7, 0x88, 0xf8, + 0x77, 0x15, 0xf7, 0xdf, 0xd8, 0x77, 0xf0, 0xfb, 0xd6, 0xfb, 0xc, 0x5, + 0xfb, 0x65, 0xfc, 0x12, 0x29, 0xa, 0x63, 0xa, 0xf7, 0x71, 0x77, 0x45, + 0xa, 0xf7, 0x2b, 0xf8, 0x95, 0x15, 0xc0, 0x67, 0xf7, 0x45, 0xf7, 0x0, + 0xf7, 0x13, 0xfb, 0x0, 0xce, 0xae, 0xfb, 0x18, 0xf7, 0x25, 0x4e, 0xa, + 0xfb, 0xd5, 0xfc, 0x86, 0x30, 0xa, 0xfb, 0x3, 0xfb, 0x3a, 0x2d, 0xa, + 0x63, 0xa, 0xcc, 0xf7, 0x10, 0x45, 0xa, 0xf8, 0x21, 0xf8, 0x89, 0x72, + 0xa, 0xfb, 0x68, 0xfb, 0x10, 0x72, 0xa, 0xfb, 0x69, 0xfc, 0x66, 0x29, + 0xa, 0x7c, 0xea, 0xe0, 0xea, 0xed, 0xeb, 0x1, 0x76, 0xef, 0x3, 0xf7, + 0xab, 0xc1, 0x15, 0x69, 0xa3, 0xa1, 0x68, 0xe7, 0x1b, 0xc3, 0xbc, 0x99, + 0xa0, 0xc6, 0x1f, 0x7e, 0xe7, 0x5, 0x74, 0x46, 0x62, 0x82, 0x73, 0x1b, + 0x4a, 0x77, 0xb0, 0xa6, 0x94, 0x8c, 0x92, 0x8e, 0x90, 0x1f, 0xf7, 0x8a, + 0x6, 0x97, 0xad, 0x95, 0xb9, 0xb8, 0x1a, 0xde, 0x6c, 0xdc, 0x2c, 0x5c, + 0x5a, 0x78, 0x68, 0x63, 0x1e, 0xb1, 0x71, 0x5c, 0x9b, 0x58, 0x1b, 0xfb, + 0x32, 0x29, 0xfb, 0x32, 0xfb, 0x32, 0x44, 0xa8, 0x39, 0xf7, 0xe, 0xd2, + 0xc1, 0xb8, 0xa3, 0xa3, 0x1f, 0xe1, 0xf7, 0x62, 0x15, 0xb3, 0x97, 0xb6, + 0xc5, 0xbf, 0x1b, 0xd0, 0x7d, 0x3f, 0x75, 0x88, 0x1f, 0xfc, 0x51, 0xfb, + 0xc, 0x15, 0xc2, 0xb1, 0xf7, 0x37, 0xea, 0xbb, 0x96, 0x66, 0x6b, 0x41, + 0x60, 0xfb, 0x1b, 0x38, 0x60, 0x74, 0xa1, 0xb1, 0x1e, 0xe, 0xfb, 0x5b, + 0xd4, 0x1, 0xf7, 0x59, 0xe2, 0x3, 0xf7, 0xc9, 0x8a, 0x15, 0x78, 0x2e, + 0x56, 0x40, 0x64, 0xa5, 0x6c, 0xb7, 0xa9, 0xa9, 0x97, 0xa0, 0xa5, 0x1f, + 0xa7, 0xdd, 0x5, 0x7b, 0x80, 0x64, 0x71, 0x72, 0x1b, 0x7e, 0x82, 0x91, + 0x9e, 0xb1, 0xe7, 0xba, 0xa6, 0x9a, 0x1f, 0xe, 0x5d, 0xa, 0xf7, 0x6d, + 0xf8, 0xc3, 0x15, 0xf7, 0xc9, 0x3e, 0xae, 0xc6, 0xfb, 0xab, 0xf7, 0xc, + 0x5, 0xfb, 0x96, 0xfc, 0x8a, 0x29, 0xa, 0x8b, 0xe8, 0x1, 0xf7, 0x9c, + 0xeb, 0x3, 0xcd, 0x16, 0xf8, 0x55, 0x94, 0xa, 0xfb, 0x42, 0x6, 0xf5, + 0xf8, 0x9f, 0xfb, 0xa3, 0x56, 0x78, 0x30, 0xf7, 0x3f, 0xad, 0x38, 0xfc, + 0x31, 0x5, 0xfb, 0x47, 0x6, 0xe, 0x5d, 0xce, 0x4f, 0x76, 0xf7, 0xb7, + 0xcf, 0x8a, 0xd0, 0xf7, 0xba, 0x77, 0x12, 0xc4, 0xcf, 0xf7, 0x7d, 0xce, + 0xeb, 0xcf, 0x13, 0xaf, 0xf7, 0xc6, 0x5d, 0x15, 0xf7, 0x82, 0x6, 0x98, + 0xce, 0x5, 0xfb, 0x1a, 0x6, 0xf1, 0xd8, 0x5, 0xac, 0xa0, 0xaa, 0xb4, + 0xb9, 0x1a, 0xaf, 0x7b, 0xc4, 0x3b, 0x5f, 0x5e, 0x75, 0x68, 0x68, 0x1e, + 0x80, 0x4c, 0x5, 0xce, 0x6, 0xa4, 0x90, 0x91, 0xa6, 0xb6, 0x1b, 0x9f, + 0xa1, 0x81, 0x75, 0x79, 0x7e, 0x73, 0x79, 0x7e, 0x1f, 0xfb, 0x41, 0xfb, + 0x19, 0x5, 0xfb, 0xfe, 0x77, 0x15, 0x13, 0x5f, 0xc5, 0x58, 0xf9, 0xd, + 0xf9, 0x35, 0x4d, 0xbb, 0x5, 0xfd, 0xa, 0xfb, 0xff, 0x15, 0xf7, 0x83, + 0x6, 0x99, 0xd0, 0x5, 0x39, 0x6, 0xbf, 0xf7, 0xa9, 0xfb, 0x22, 0x6e, + 0x7e, 0x46, 0xd4, 0x9a, 0x65, 0x98, 0xa, 0x32, 0x6, 0xe, 0x5c, 0xc4, + 0x5a, 0x76, 0xf7, 0x6, 0xca, 0xf7, 0x48, 0xd0, 0xf7, 0xbb, 0x77, 0x12, + 0x13, 0xb8, 0xf7, 0x96, 0xc1, 0x15, 0xf7, 0x19, 0x6, 0x84, 0x5f, 0x5, + 0x52, 0x6, 0x80, 0x52, 0x5, 0xf7, 0x37, 0x6, 0x96, 0xc4, 0x5, 0x63, + 0x6, 0x93, 0xb7, 0x5, 0xb3, 0x6, 0x98, 0xca, 0x5, 0x63, 0x6, 0xac, + 0xf7, 0x46, 0x5, 0x4c, 0x6, 0xfb, 0x41, 0x98, 0xa, 0xdd, 0x9b, 0x15, + 0xd0, 0xdc, 0x7c, 0x3a, 0x5, 0xfc, 0x52, 0xfb, 0x12, 0x15, 0x13, 0x78, + 0xc6, 0x58, 0xf9, 0x9, 0xf9, 0x34, 0x4c, 0xbc, 0x5, 0xfd, 0x9, 0xfc, + 0x0, 0x15, 0xf7, 0x82, 0x6, 0x99, 0xd0, 0x5, 0x38, 0x6, 0xbf, 0xf7, + 0xa8, 0xfb, 0x1f, 0x6e, 0x7e, 0x47, 0xd2, 0x9a, 0x66, 0x98, 0xa, 0x32, + 0x6, 0xe, 0xf7, 0x70, 0xd7, 0xf7, 0xd4, 0x77, 0x1, 0xf7, 0xa4, 0xda, + 0x3, 0xf7, 0x29, 0xf7, 0x70, 0x15, 0xf7, 0xb0, 0x6, 0x9c, 0xd7, 0x7b, + 0xa, 0xc9, 0xf7, 0xd4, 0xfb, 0x3b, 0x6a, 0x7b, 0x3f, 0xe0, 0x9c, 0x60, + 0xfb, 0x78, 0x5, 0x21, 0x6, 0xe, 0xf7, 0x58, 0xde, 0xed, 0xda, 0xb4, + 0xde, 0x1, 0xf7, 0x17, 0xd8, 0x3, 0xf7, 0xd6, 0xf7, 0x60, 0x15, 0xf7, + 0x17, 0x6, 0x9a, 0xdd, 0x5, 0x53, 0x6, 0xa4, 0xf7, 0x22, 0x5, 0x8f, + 0xa1, 0x8d, 0xa5, 0xa1, 0x1a, 0xc9, 0x51, 0x9f, 0x53, 0x55, 0x4e, 0x7b, + 0x7d, 0x67, 0x1e, 0x9a, 0x3c, 0x5, 0x99, 0xb2, 0xc3, 0x97, 0xb1, 0x1b, + 0xaa, 0x98, 0x77, 0x6c, 0x87, 0x1f, 0x92, 0x75, 0x74, 0x8e, 0x73, 0x1b, + 0xfb, 0x13, 0x64, 0x32, 0x4b, 0x51, 0xb2, 0x5a, 0xcb, 0xab, 0xae, 0xa0, + 0xa7, 0xa7, 0x1f, 0xa2, 0xf7, 0x12, 0x15, 0x63, 0x76, 0x60, 0x57, 0x63, + 0x1b, 0x69, 0x85, 0xa0, 0x9e, 0xb3, 0xbd, 0x9d, 0xb2, 0xa1, 0xac, 0x85, + 0x8b, 0x1f, 0xe, 0xf7, 0x58, 0xde, 0xf7, 0x6e, 0xde, 0x1, 0xf7, 0x10, + 0xd9, 0xf7, 0x58, 0xd9, 0x3, 0xf7, 0x10, 0xf8, 0x3, 0x15, 0x35, 0xbf, + 0x36, 0xe6, 0xf7, 0x3, 0xed, 0xf7, 0xa, 0xf7, 0x14, 0xdc, 0x5e, 0xe9, + 0x2b, 0xfb, 0x16, 0x3a, 0xfb, 0x26, 0x23, 0x1e, 0xd9, 0x99, 0x15, 0xc5, + 0xb3, 0xea, 0xd7, 0xc4, 0xa2, 0x4b, 0x61, 0x41, 0x54, 0x40, 0x4c, 0x56, + 0x72, 0xc4, 0xb8, 0x1e, 0xe, 0x7d, 0xea, 0x37, 0x76, 0xf8, 0x18, 0xea, + 0x8f, 0x77, 0x12, 0xac, 0xf0, 0xf7, 0xe4, 0xec, 0x13, 0x6c, 0x94, 0xa7, + 0x15, 0xba, 0x57, 0xc6, 0xbb, 0x5, 0x13, 0x9c, 0x70, 0xb7, 0xc1, 0x80, + 0xbb, 0x1b, 0xf7, 0x14, 0xf7, 0x46, 0xea, 0xf7, 0x4e, 0x1f, 0x8c, 0xaf, + 0x83, 0xae, 0x78, 0xaa, 0xbd, 0xb4, 0x18, 0x5d, 0xc0, 0x56, 0x60, 0x5, + 0x13, 0xac, 0xa3, 0x68, 0x5c, 0x9a, 0x4d, 0x1b, 0xfb, 0x29, 0xfb, 0x3a, + 0x20, 0xfb, 0x48, 0x63, 0x96, 0x6a, 0x9d, 0x70, 0x1f, 0xf7, 0x20, 0xa1, + 0x15, 0xf7, 0x93, 0xf7, 0x64, 0x5, 0x93, 0x7d, 0x90, 0x7b, 0x7b, 0x1a, + 0xfb, 0x5, 0xfb, 0x3, 0x4d, 0x39, 0x76, 0x6e, 0x8e, 0x95, 0x72, 0x1e, + 0x53, 0xb8, 0x15, 0x7e, 0xa0, 0x8c, 0xa5, 0x9f, 0x1a, 0xe9, 0xf0, 0xcb, + 0xe7, 0xab, 0xa4, 0x86, 0x82, 0x9f, 0x1e, 0xe, 0x63, 0xa, 0xf7, 0x1e, + 0x77, 0xdd, 0x77, 0x45, 0xa, 0xf7, 0x1b, 0xf8, 0x95, 0x15, 0xd9, 0x71, + 0x5, 0xa0, 0x9c, 0x99, 0xb4, 0xad, 0x1b, 0x9e, 0x9f, 0x81, 0x7e, 0x9f, + 0x1f, 0x7a, 0xa5, 0xa6, 0x78, 0xa9, 0x1b, 0xee, 0xbc, 0xe3, 0xad, 0x9c, + 0x1f, 0x3d, 0xa3, 0x5, 0x62, 0x70, 0x7e, 0x76, 0x6e, 0x1b, 0x76, 0x77, + 0x98, 0x99, 0x76, 0x1f, 0x9b, 0x73, 0x72, 0x9c, 0x70, 0x1b, 0x2c, 0x5d, + 0x3d, 0x60, 0x73, 0x1f, 0xfb, 0x3, 0xfb, 0xf6, 0x29, 0xa, 0xfb, 0x22, + 0xe3, 0xea, 0x76, 0xf7, 0xe1, 0xe3, 0x40, 0xe3, 0x12, 0xb7, 0xe9, 0xf7, + 0xf6, 0xee, 0x13, 0xdc, 0x67, 0x90, 0xa, 0x9e, 0xe3, 0x85, 0xa, 0xa2, + 0xf7, 0x3, 0x5, 0x7d, 0x9d, 0xbd, 0x74, 0xdb, 0x1b, 0xf7, 0x39, 0xf7, + 0xf, 0xf7, 0x7, 0xf7, 0x24, 0xf7, 0x7, 0x3b, 0xc7, 0xfb, 0x1, 0x54, + 0x44, 0x72, 0x6c, 0x5b, 0x1f, 0x13, 0xec, 0x94, 0xb6, 0x3e, 0xa, 0x79, + 0x33, 0x8a, 0xa, 0x35, 0xfc, 0x2b, 0x5, 0xf7, 0x29, 0xf7, 0x8f, 0x15, + 0x13, 0xdc, 0xf7, 0xe, 0xf7, 0x18, 0xae, 0xc0, 0xce, 0xba, 0x6a, 0x56, + 0x39, 0x2f, 0x3a, 0x3d, 0x63, 0x32, 0x99, 0xd9, 0x1e, 0xe, 0xf8, 0xba, + 0xa9, 0x1, 0xf7, 0xb, 0xbf, 0xea, 0xc0, 0x3, 0xf7, 0xb, 0x45, 0x15, + 0xbf, 0x6, 0xf7, 0x7a, 0xf9, 0x0, 0x5, 0xea, 0x6, 0xfb, 0x7a, 0xfd, + 0x0, 0x5, 0xc0, 0x6, 0xf7, 0x78, 0xf9, 0x0, 0x5, 0xc8, 0x6, 0x96, + 0xa9, 0x5, 0xfb, 0x97, 0x6, 0xfb, 0x4e, 0xfb, 0x55, 0x59, 0xfb, 0x2a, + 0x47, 0xce, 0x49, 0xf7, 0x4a, 0x81, 0x1f, 0xe, 0x3a, 0x76, 0xf9, 0x62, + 0x77, 0x1, 0xf7, 0x1d, 0xf2, 0x3, 0xf7, 0x5b, 0x25, 0x15, 0xec, 0x6, + 0x6e, 0xd1, 0x70, 0xec, 0xf6, 0x1a, 0xf7, 0x46, 0xf7, 0xe, 0xf7, 0x23, + 0xf0, 0xf7, 0xf, 0x1e, 0x2b, 0x6, 0xfb, 0x1a, 0xfb, 0x23, 0x2b, 0xfb, + 0x26, 0xfb, 0x46, 0x1a, 0x48, 0x98, 0x32, 0xbc, 0x2c, 0x1e, 0xe, 0x3a, + 0x76, 0xf9, 0x62, 0x77, 0x1, 0xf7, 0xfc, 0xf2, 0x3, 0xf7, 0x1c, 0x25, + 0x15, 0xeb, 0x6, 0xf7, 0x1a, 0xf7, 0x23, 0xec, 0xf7, 0x26, 0xf7, 0x46, + 0x1a, 0xce, 0x7e, 0xe4, 0x5a, 0xea, 0x1e, 0x2a, 0x6, 0xa8, 0x45, 0xa6, + 0x2a, 0x20, 0x1a, 0xfb, 0x46, 0xfb, 0xf, 0xfb, 0x23, 0x26, 0xfb, 0xf, + 0x1e, 0xe, 0x7c, 0xd1, 0xf7, 0x1c, 0xd1, 0xda, 0xd1, 0xf7, 0x1c, 0xd1, + 0x1, 0xc3, 0xdc, 0xd5, 0xdc, 0x9b, 0xdc, 0xd5, 0xdc, 0x3, 0xc3, 0xf8, + 0x5a, 0x39, 0xa, 0xd5, 0xfb, 0xfd, 0x39, 0xa, 0xfb, 0x69, 0xce, 0x15, + 0xf8, 0x5e, 0xf7, 0x4a, 0x7a, 0xcb, 0xfc, 0x5f, 0xfb, 0x4c, 0x5, 0xe, + 0x7c, 0xf7, 0x4e, 0x1, 0xf7, 0x52, 0xf7, 0x6f, 0x3, 0xf7, 0x52, 0xcb, + 0x15, 0x68, 0xa3, 0x5f, 0xd1, 0xc7, 0xcc, 0xb2, 0xcf, 0xb3, 0x6d, 0xb2, + 0x4d, 0x4b, 0x4c, 0x60, 0x4b, 0x1e, 0xe, 0xf7, 0x39, 0xf7, 0x4e, 0x1, + 0xf7, 0x56, 0xf7, 0x68, 0x3, 0xf7, 0x56, 0xf7, 0x87, 0x15, 0x6c, 0x9f, + 0x5c, 0xd3, 0xc9, 0xc5, 0xbc, 0xc5, 0xb3, 0x72, 0xb2, 0x4c, 0x49, 0x51, + 0x55, 0x55, 0x1e, 0xe, 0x7c, 0xd1, 0xf7, 0x1b, 0xd1, 0xdb, 0xd1, 0xf7, + 0x1c, 0xd1, 0x1, 0x3f, 0xd9, 0xab, 0xd9, 0xc2, 0xd7, 0xad, 0xd7, 0xa0, + 0xd9, 0xf7, 0x39, 0xd7, 0x3, 0x3f, 0xf8, 0x57, 0x49, 0xa, 0xc0, 0x3a, + 0xfb, 0xa, 0x42, 0x3c, 0x35, 0x1e, 0xd9, 0x95, 0x15, 0xb7, 0xaf, 0xb4, + 0xc8, 0xb5, 0xa5, 0x72, 0x53, 0xa, 0x3f, 0xfb, 0xaa, 0x15, 0xf8, 0x77, + 0xf7, 0x4f, 0x7a, 0xc9, 0xfc, 0x79, 0xfb, 0x50, 0x5, 0xf8, 0x67, 0xfb, + 0x28, 0x38, 0xa, 0xfc, 0x36, 0x81, 0x38, 0xa, 0xe, 0xf7, 0x68, 0xe9, + 0xf7, 0x40, 0x77, 0x1, 0xf7, 0x62, 0xed, 0x3, 0xc6, 0xf7, 0x68, 0x15, + 0xf7, 0x4a, 0x6, 0x68, 0xfb, 0x3d, 0x56, 0xa, 0xae, 0xf7, 0x3d, 0x5, + 0xf7, 0x4b, 0x3f, 0xa, 0xfb, 0x4a, 0x6, 0xae, 0xf7, 0x40, 0x4e, 0xa, + 0x68, 0xfb, 0x40, 0x5, 0xfb, 0x4b, 0x6, 0xe, 0xa9, 0xdc, 0xf7, 0x43, + 0xdc, 0xf7, 0x28, 0x77, 0x1, 0xf7, 0x82, 0xed, 0x3, 0xf7, 0x82, 0xf7, + 0x1e, 0x15, 0xed, 0x6, 0xad, 0xf7, 0x28, 0x5, 0xf7, 0x48, 0x6, 0x9e, + 0xdc, 0x5, 0xfb, 0x48, 0x6, 0xae, 0xf7, 0x28, 0x4e, 0xa, 0x69, 0xfb, + 0x28, 0x5, 0xfb, 0x47, 0x6, 0x78, 0x3a, 0x5, 0xf7, 0x47, 0x6, 0xfb, + 0x86, 0xfb, 0x9a, 0x15, 0xf8, 0x5c, 0x6, 0x9e, 0xdc, 0x5, 0xfc, 0x5c, + 0x6, 0xe, 0x7c, 0xe9, 0xf7, 0x12, 0xe9, 0xf7, 0x3d, 0xe9, 0x1, 0xf8, + 0x89, 0xf1, 0x3, 0xf7, 0xdc, 0xb0, 0x15, 0xc8, 0x57, 0xb5, 0xb7, 0x96, + 0x7c, 0x95, 0x7d, 0x90, 0x7c, 0x19, 0xf7, 0xa, 0x55, 0xa, 0x3a, 0x6, + 0x7d, 0xa0, 0xdb, 0xdd, 0x54, 0xbf, 0x46, 0x46, 0x65, 0xc5, 0x5, 0xf7, + 0xd, 0x9e, 0xcb, 0xe1, 0xe8, 0x1a, 0xec, 0x39, 0xb7, 0x23, 0x1e, 0xfb, + 0xbc, 0x44, 0xa, 0xdd, 0x6, 0x39, 0xfc, 0x19, 0x5, 0x34, 0x44, 0xa, + 0xf7, 0x9f, 0x3f, 0xa, 0x3b, 0x6, 0xa5, 0xf7, 0x12, 0x5, 0xdf, 0x6, + 0xd3, 0xfb, 0x4, 0x5, 0xfb, 0x1c, 0xf7, 0x62, 0x15, 0xae, 0xf7, 0x3d, + 0x5, 0xf7, 0x1b, 0x6, 0xa3, 0xc6, 0x82, 0x5a, 0x2a, 0x23, 0x7d, 0x58, + 0x1f, 0xe, 0xfb, 0x22, 0xe3, 0xd6, 0xe1, 0xf7, 0x8c, 0xe3, 0x3f, 0xe2, + 0x12, 0x81, 0xf1, 0x13, 0xe8, 0xf7, 0x4a, 0x90, 0xa, 0xa0, 0xe3, 0x5, + 0x3b, 0x6, 0xe3, 0xf8, 0x2d, 0x5c, 0xa, 0x9f, 0xe3, 0x3e, 0xa, 0x7f, + 0x5e, 0x5, 0x13, 0xd8, 0xad, 0x69, 0x5c, 0xa1, 0x53, 0x1b, 0xfb, 0x31, + 0xfb, 0x21, 0xfb, 0xf, 0xfb, 0x18, 0x29, 0xd7, 0x3b, 0xf7, 0x14, 0xc1, + 0xc2, 0x90, 0xa9, 0xbb, 0x1f, 0x75, 0xfb, 0x2, 0x5, 0xfb, 0x81, 0xf7, + 0x9c, 0x15, 0xe1, 0xdc, 0xd2, 0xf0, 0xed, 0xa0, 0x49, 0x56, 0xfb, 0x11, + 0xfb, 0x1a, 0x7b, 0x5e, 0x46, 0x56, 0xb4, 0xc9, 0x1e, 0xe, 0x7d, 0xf7, + 0x2c, 0xf7, 0xf2, 0xe7, 0x1, 0xeb, 0xf7, 0x54, 0xf7, 0x8, 0xef, 0x3, + 0xf7, 0x3d, 0xf7, 0x4a, 0x15, 0xed, 0x6, 0x98, 0xc5, 0x5, 0xe3, 0x9a, + 0xf7, 0x1c, 0xc2, 0xf7, 0x1a, 0x1a, 0xe4, 0x3c, 0xba, 0xfb, 0x0, 0x53, + 0x3c, 0x7d, 0x77, 0x52, 0x1e, 0x6e, 0xfb, 0x24, 0x5, 0xee, 0x6, 0x99, + 0xd7, 0x5, 0x91, 0xa7, 0xa9, 0x8f, 0xa7, 0x1b, 0xc6, 0xbd, 0x7a, 0x62, + 0x30, 0xfb, 0x2, 0x79, 0x28, 0x7c, 0x1f, 0x28, 0xfb, 0x9e, 0x15, 0x6a, + 0xae, 0x76, 0xba, 0xd8, 0xac, 0xbd, 0xb6, 0xa2, 0x7b, 0xaf, 0x4c, 0x4a, + 0x5b, 0x5c, 0x58, 0x1e, 0xe, 0xfb, 0x26, 0xe8, 0xf7, 0xf2, 0xf7, 0x2c, + 0x1, 0xeb, 0xed, 0xf7, 0xc, 0xf7, 0x52, 0x3, 0xf7, 0xce, 0xf8, 0x2, + 0x15, 0x78, 0x8a, 0x90, 0x59, 0xd6, 0x1b, 0xce, 0xb7, 0xb8, 0xbb, 0xaf, + 0x6a, 0xa2, 0x5b, 0x44, 0x65, 0x5d, 0x66, 0x1f, 0x8e, 0xfb, 0x3e, 0x15, + 0x4b, 0x85, 0xfb, 0x31, 0x4a, 0xfb, 0x1b, 0x1a, 0x33, 0xd9, 0x5b, 0xf6, + 0xc1, 0xdf, 0x99, 0x9f, 0xc4, 0x1e, 0xa7, 0xf7, 0x1a, 0x66, 0xa, 0x7d, + 0x49, 0x5, 0x86, 0x6e, 0x68, 0x87, 0x6e, 0x1b, 0x51, 0x5b, 0x9c, 0xb4, + 0xe7, 0xf7, 0x2, 0x9d, 0xec, 0x9a, 0x1f, 0xa4, 0xf7, 0x13, 0x66, 0xa, + 0xe, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x6, 0xf7, 0x4, 0xd5, 0xf7, 0x2, + 0x3, 0xf7, 0xc0, 0xf7, 0xa9, 0x15, 0xf7, 0x2, 0x6, 0xd7, 0x71, 0xa, + 0xfb, 0x20, 0x6, 0xfb, 0x7c, 0xfb, 0xb1, 0x5a, 0xa, 0xd7, 0x71, 0xa, + 0xfb, 0x20, 0x6, 0xe, 0xfb, 0x22, 0xf7, 0xb1, 0x1, 0xf7, 0x90, 0xfb, + 0x22, 0x15, 0xf7, 0x9, 0x80, 0xa, 0xfb, 0x31, 0x6, 0xfc, 0x3, 0xfb, + 0xb1, 0x15, 0xf7, 0x7, 0x6, 0xf7, 0x57, 0x71, 0xa, 0xfb, 0x32, 0x6, + 0xe, 0xf7, 0x46, 0xf7, 0x5, 0xed, 0xf7, 0x5, 0x3, 0xf8, 0x19, 0xf7, + 0xa9, 0x6d, 0xa, 0x63, 0x71, 0xa, 0xfb, 0x2d, 0x6, 0xfb, 0x17, 0xfb, + 0xb1, 0x6d, 0xa, 0x64, 0x71, 0xa, 0xfb, 0x2e, 0x6, 0xe, 0xf7, 0xbe, + 0x76, 0xf7, 0xb1, 0x77, 0x1, 0xb1, 0xf7, 0x8, 0xee, 0xf7, 0xa, 0x3, + 0xf7, 0x91, 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x53, 0x71, 0xa, + 0xfb, 0x32, 0x6, 0xfc, 0x2, 0xfb, 0xb1, 0x15, 0xf7, 0x8, 0x80, 0xa, + 0xfb, 0x33, 0x6, 0xe, 0xf7, 0xa9, 0xf7, 0xb1, 0x1, 0xf7, 0xaf, 0xf7, + 0xa9, 0x5a, 0xa, 0x65, 0x71, 0xa, 0xfb, 0x2c, 0x6, 0xe, 0xf7, 0xbe, + 0x76, 0xf7, 0xb1, 0x77, 0x1, 0xf7, 0x24, 0xf7, 0xa, 0x3, 0xf7, 0x24, + 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x56, 0x71, 0xa, 0xfb, 0x35, + 0x6, 0xe, 0xfb, 0xd, 0x76, 0xf7, 0xae, 0x77, 0x1, 0xf7, 0x24, 0xf7, + 0xb, 0x3, 0xf7, 0x24, 0xfb, 0x22, 0x15, 0xf7, 0xb, 0x80, 0xa, 0xfb, + 0x34, 0x6, 0xe, 0xf7, 0xbb, 0x76, 0xf7, 0xb4, 0x77, 0x1, 0xf7, 0x62, + 0xf7, 0x5, 0x3, 0xf7, 0x62, 0xf7, 0xa6, 0x6d, 0xa, 0xd6, 0xf7, 0xb4, + 0x5, 0xfb, 0x20, 0x6, 0xe, 0x7f, 0xa, 0xf7, 0x2b, 0xee, 0x3, 0x9c, + 0x16, 0xf8, 0x2c, 0x3f, 0xa, 0xfb, 0x56, 0x6, 0xac, 0xf7, 0x2b, 0x5, + 0xc2, 0xcd, 0xcc, 0xc7, 0xdf, 0x1b, 0xa4, 0x8d, 0x81, 0x72, 0x8a, 0x1f, + 0xed, 0x99, 0x5, 0xcb, 0x8b, 0xbe, 0x22, 0x41, 0x40, 0x53, 0x63, 0x4e, + 0x1e, 0x98, 0xdc, 0x5, 0xfb, 0x6b, 0x87, 0xa, 0xf7, 0x7, 0x6, 0x58, + 0xfb, 0x8f, 0x83, 0xa, 0xe, 0x79, 0xb8, 0xf6, 0xf7, 0x37, 0xf2, 0xba, + 0xe3, 0xb8, 0x1, 0x84, 0xba, 0xf7, 0xe5, 0xba, 0xf7, 0x1d, 0xb9, 0x3, + 0x84, 0xf7, 0x6e, 0x15, 0xfb, 0x1a, 0xf5, 0x25, 0xf7, 0x24, 0xf7, 0x4c, + 0xf7, 0x48, 0xf7, 0x3b, 0xf7, 0x51, 0xf7, 0x1d, 0x25, 0xf4, 0xfb, 0x25, + 0xfb, 0x4f, 0xfb, 0x48, 0xfb, 0x3f, 0xfb, 0x53, 0x1e, 0xba, 0x9e, 0x15, + 0xf7, 0x32, 0xf7, 0x34, 0xf7, 0x20, 0xf7, 0x2b, 0xf7, 0x13, 0xde, 0x2e, + 0xfb, 0xc, 0xfb, 0x31, 0xfb, 0x34, 0xfb, 0x1e, 0xfb, 0x2a, 0xfb, 0x12, + 0x36, 0xe6, 0xf7, 0xb, 0x1e, 0xf7, 0x18, 0x24, 0x15, 0xbb, 0x6, 0xa5, + 0xf7, 0x8, 0x5, 0xbf, 0x6, 0xa6, 0xfb, 0x8, 0x5, 0xc5, 0x6, 0x6e, + 0xf7, 0x13, 0x5, 0xb6, 0x95, 0xa6, 0xb4, 0xc4, 0x1a, 0xcf, 0x53, 0x95, + 0x4e, 0x1e, 0x41, 0x6, 0xa1, 0xfb, 0x2a, 0x15, 0x9b, 0xf2, 0x5, 0xbb, + 0x6, 0xa8, 0xa8, 0x83, 0x6f, 0x55, 0x61, 0x7e, 0x6c, 0x1f, 0xe, 0xf8, + 0x75, 0xc6, 0xda, 0xc6, 0x1, 0xf7, 0x57, 0xc9, 0xdf, 0xca, 0x3, 0xf7, + 0x57, 0xf8, 0xc5, 0x15, 0x5e, 0xad, 0x68, 0xbd, 0xcf, 0xc4, 0xc4, 0xcb, + 0xb6, 0x69, 0xac, 0x5a, 0x49, 0x4f, 0x54, 0x4d, 0x1e, 0xc9, 0x96, 0x15, + 0xa5, 0xa3, 0xa0, 0xa6, 0x9f, 0x98, 0x7f, 0x7a, 0x71, 0x76, 0x73, 0x6f, + 0x76, 0x7d, 0x99, 0x9d, 0x1e, 0xe, 0x7a, 0xe6, 0xf4, 0xd9, 0xa0, 0xf7, + 0x49, 0x2b, 0xeb, 0x12, 0xf7, 0x2, 0xe9, 0xf7, 0x76, 0xed, 0x13, 0xdc, + 0xa9, 0x7a, 0x15, 0xed, 0x6, 0x93, 0xb2, 0x5, 0x76, 0xb5, 0xbe, 0x79, + 0xc0, 0x1b, 0xf7, 0x1e, 0xf7, 0x0, 0xab, 0xf7, 0x1, 0xe8, 0x33, 0xab, + 0x40, 0x93, 0x1f, 0xfb, 0x5, 0x96, 0x5b, 0x97, 0xac, 0x1a, 0xb6, 0xef, + 0x92, 0xa2, 0xb6, 0xb7, 0x7c, 0x75, 0xab, 0x1e, 0x13, 0xec, 0x81, 0x5b, + 0x56, 0xa, 0xaf, 0xf7, 0x49, 0x4e, 0xa, 0x85, 0x69, 0x5, 0x9a, 0x66, + 0x5f, 0x9e, 0x5c, 0x1b, 0xfb, 0x13, 0x26, 0x5b, 0x24, 0x2b, 0xf7, 0xf, + 0x70, 0xd4, 0x85, 0x1f, 0xad, 0x88, 0xe5, 0x83, 0x57, 0x1a, 0x67, 0x3e, + 0x85, 0x52, 0x45, 0x5d, 0xa3, 0x9c, 0x71, 0x1e, 0x98, 0xc8, 0x7b, 0xa, + 0xe, 0x7a, 0xe0, 0xf7, 0x57, 0xf7, 0x40, 0x1, 0xe8, 0xe4, 0xf7, 0x6c, + 0xe6, 0x3, 0xf7, 0xc1, 0xf8, 0x79, 0x15, 0xeb, 0x6, 0xf7, 0x4d, 0xf7, + 0x25, 0x58, 0xb0, 0xfb, 0x3d, 0xfb, 0x0, 0xfb, 0x10, 0xf7, 0x0, 0x48, + 0x67, 0x5, 0xfb, 0x2e, 0xfd, 0x1c, 0x15, 0xe8, 0x6, 0x93, 0xb1, 0x5, + 0x7b, 0xb4, 0xc2, 0x75, 0xbf, 0x1b, 0xf7, 0x24, 0xda, 0xc1, 0xe3, 0xdd, + 0x4c, 0xaf, 0x38, 0x92, 0x1f, 0x26, 0x93, 0x4f, 0x91, 0xaf, 0x1a, 0xbf, + 0xe5, 0x8b, 0xa2, 0xb4, 0xb9, 0x73, 0x7a, 0xa9, 0x1e, 0x82, 0x5e, 0x5, + 0xe9, 0x6, 0xad, 0xf7, 0x40, 0x5, 0x2e, 0x6, 0x84, 0x6b, 0x5, 0x98, + 0x68, 0x5d, 0x9e, 0x5e, 0x1b, 0x28, 0xfb, 0x4, 0x72, 0xfb, 0x3, 0x8a, + 0x1f, 0x2a, 0xf7, 0x9, 0x6b, 0xd0, 0x85, 0x1e, 0xac, 0x88, 0xe1, 0x8f, + 0x60, 0x1a, 0x6a, 0x4a, 0x73, 0x55, 0x48, 0x57, 0xac, 0x94, 0x74, 0x1e, + 0x95, 0xc6, 0x5, 0x2d, 0x6, 0xe, 0xfb, 0x62, 0xce, 0xf7, 0xe, 0xf7, + 0x57, 0x81, 0xe2, 0xa4, 0xf7, 0x47, 0x12, 0xf7, 0x2, 0xe8, 0x9f, 0xcd, + 0xf7, 0x26, 0xed, 0x13, 0xde, 0xa9, 0x7a, 0x15, 0xed, 0x6, 0x93, 0xb3, + 0xa4, 0x81, 0xa9, 0x7e, 0xab, 0x84, 0x19, 0x6b, 0x26, 0x5, 0x8e, 0x94, + 0x9d, 0x8e, 0x9a, 0x1b, 0x93, 0x94, 0x85, 0x81, 0x80, 0x7e, 0x81, 0x7e, + 0x81, 0x7e, 0x8f, 0x94, 0x7c, 0x1f, 0x62, 0x55, 0x5, 0x73, 0xa6, 0x9e, + 0x89, 0x9d, 0x1b, 0xc6, 0xc5, 0xb3, 0xd0, 0xa1, 0x85, 0xab, 0x67, 0x93, + 0x1f, 0x90, 0x9d, 0x5, 0xf7, 0x2b, 0x8a, 0xe0, 0xc4, 0xe8, 0x1a, 0x13, + 0xbe, 0xe1, 0x49, 0xb1, 0x34, 0x92, 0x1e, 0x21, 0x93, 0x4c, 0x92, 0xb0, + 0x1a, 0xc2, 0xea, 0x8a, 0xa3, 0xb6, 0xbb, 0x73, 0x79, 0xaa, 0x1e, 0x82, + 0x5c, 0x56, 0xa, 0xb0, 0xf7, 0x47, 0x4e, 0xa, 0x84, 0x69, 0x5, 0x99, + 0x66, 0x5b, 0x9f, 0x5c, 0x1b, 0x23, 0xfb, 0xa, 0x72, 0xfb, 0x9, 0x8a, + 0x1f, 0x26, 0xf7, 0xe, 0x69, 0xd4, 0x85, 0x1e, 0xad, 0x88, 0xe5, 0x8f, + 0x5e, 0x1a, 0x68, 0x47, 0x72, 0x53, 0x44, 0x55, 0xae, 0x94, 0x73, 0x1e, + 0x13, 0xde, 0x95, 0xc9, 0x4e, 0xa, 0xe, 0x45, 0xe9, 0xf8, 0x62, 0xe8, + 0x1, 0xcc, 0xf2, 0xf7, 0x9b, 0xf1, 0x3, 0xa6, 0x45, 0x15, 0xf7, 0x82, + 0x6, 0xe6, 0xe7, 0xa7, 0xdf, 0xa8, 0x85, 0x9d, 0x7c, 0x9c, 0x1f, 0xad, + 0x95, 0xc1, 0xbe, 0xc5, 0x1a, 0x8a, 0xa6, 0x7d, 0xa3, 0x74, 0x9d, 0xfb, + 0x6c, 0xf7, 0x41, 0x18, 0x8b, 0x88, 0x8e, 0x8f, 0x1a, 0x96, 0x9c, 0x8c, + 0x91, 0x1e, 0xf7, 0x3c, 0x6, 0x79, 0x35, 0x5, 0xf1, 0x6, 0xb2, 0xf7, + 0x48, 0xfb, 0x88, 0x8a, 0x5, 0x32, 0x37, 0x76, 0x38, 0x6f, 0x96, 0x75, + 0x9d, 0x78, 0x1f, 0x56, 0x76, 0x68, 0x60, 0x5c, 0x1a, 0x6b, 0x9d, 0x68, + 0xb2, 0x6c, 0x1e, 0xf7, 0x42, 0xfb, 0x1e, 0x5, 0x9c, 0x7d, 0x8d, 0x88, + 0x83, 0x1a, 0x82, 0x7b, 0x8a, 0x87, 0x1e, 0xfb, 0x45, 0x6, 0x9e, 0xe3, + 0x5, 0x24, 0x6, 0xf7, 0xb7, 0xc3, 0x15, 0xfb, 0x1f, 0xf7, 0x1, 0x5, + 0x82, 0x92, 0x87, 0x97, 0x97, 0x1a, 0xa0, 0xab, 0x95, 0x99, 0x92, 0x1e, + 0xf7, 0x30, 0xfb, 0xd, 0x5, 0x92, 0x86, 0x8d, 0x83, 0x82, 0x1a, 0x71, + 0x61, 0x84, 0x7a, 0x89, 0x1e, 0xe, 0x31, 0x76, 0xf7, 0xfc, 0xf7, 0x44, + 0x1, 0xf7, 0xa5, 0xf7, 0x6d, 0x3, 0xf7, 0xa5, 0xf7, 0xd6, 0x15, 0x6e, + 0x9f, 0x5f, 0xd3, 0xce, 0xc5, 0xbc, 0xc6, 0xae, 0x6e, 0xac, 0x4e, 0x45, + 0x52, 0x58, 0x57, 0x1e, 0xfb, 0x38, 0xfc, 0x45, 0x15, 0xf7, 0x12, 0x6, + 0xf7, 0x5d, 0xf7, 0xac, 0x5, 0xfb, 0x3b, 0x6, 0xe, 0xa0, 0x76, 0xf8, + 0x39, 0xf7, 0x48, 0x1, 0xf4, 0xf5, 0x3, 0xf4, 0x16, 0xf5, 0x6, 0xf7, + 0xcc, 0xf8, 0xa9, 0x99, 0xcf, 0x5, 0xfc, 0x4a, 0x6, 0x66, 0xfb, 0x48, + 0x56, 0xa, 0x9d, 0xe2, 0x5, 0xf7, 0x80, 0x6, 0xe, 0x7c, 0xe6, 0xf7, + 0x74, 0xe8, 0xf7, 0x1e, 0xdf, 0x8a, 0x77, 0x12, 0xf8, 0x3, 0xed, 0x13, + 0xe8, 0xf7, 0x48, 0xf7, 0xfb, 0x15, 0xf7, 0x19, 0xda, 0xf7, 0x6, 0xb2, + 0xf7, 0x33, 0x1b, 0x13, 0xd8, 0xa5, 0xde, 0x5, 0x13, 0xe8, 0x75, 0x69, + 0x8c, 0x5b, 0x1b, 0xfb, 0x5d, 0x8c, 0xfb, 0x67, 0xfb, 0x50, 0xfb, 0x89, + 0x1a, 0x20, 0xd3, 0x30, 0xf7, 0xc, 0xf7, 0x7, 0xf7, 0x8, 0xf7, 0x7, + 0xf7, 0x8, 0xe3, 0x5b, 0xe4, 0xfb, 0x6, 0x56, 0x73, 0x7f, 0x75, 0x5d, + 0x1e, 0x65, 0xfb, 0x1c, 0x15, 0x8b, 0xc0, 0xd8, 0xdf, 0xd3, 0x9b, 0x53, + 0x60, 0x40, 0x46, 0x59, 0x51, 0x41, 0x65, 0xe0, 0xc9, 0x99, 0x1e, 0xe, + 0xf9, 0x6, 0x77, 0x1, 0xab, 0xf8, 0x69, 0x3, 0xab, 0x5d, 0x15, 0xcb, + 0x6c, 0xf8, 0x6b, 0xf9, 0x32, 0x49, 0xac, 0x5, 0xe, 0xe, 0x84, 0x76, + 0xb0, 0x76, 0xf7, 0xaa, 0xe8, 0xf7, 0x33, 0xe8, 0x12, 0xf7, 0x21, 0xea, + 0x36, 0xed, 0x13, 0xb8, 0x52, 0xa, 0x13, 0x74, 0x3d, 0xa, 0x7b, 0x7d, + 0x87, 0x81, 0x7e, 0x1f, 0xb6, 0xc1, 0xa0, 0xbb, 0xd1, 0x1a, 0xf7, 0x69, + 0x89, 0xa, 0xfb, 0x84, 0x6, 0x13, 0xb8, 0x86, 0x9b, 0x8a, 0x9b, 0x9a, + 0x1a, 0xcb, 0xc9, 0x47, 0xa, 0x21, 0x3e, 0xfb, 0x10, 0x7a, 0x89, 0x7a, + 0x8d, 0x7a, 0x1f, 0x3b, 0x82, 0xa, 0x13, 0xb4, 0xf7, 0x1, 0x6, 0x8a, + 0x2e, 0x59, 0x33, 0x43, 0x5a, 0x8, 0xe, 0x7c, 0xe7, 0xf7, 0x96, 0xe8, + 0xf7, 0x1a, 0x77, 0x1, 0xf4, 0xf7, 0xe3, 0x15, 0xd1, 0x6, 0x62, 0x98, + 0xa, 0x88, 0x7b, 0x89, 0x7e, 0x7e, 0x1a, 0x29, 0xe9, 0x7b, 0xcf, 0xe0, + 0xe6, 0xab, 0xa6, 0xda, 0x1e, 0x8e, 0xe7, 0x5, 0x7c, 0x5f, 0xfb, 0xc, + 0x5f, 0x43, 0x1b, 0x53, 0x76, 0x9f, 0xa4, 0x98, 0x8d, 0x99, 0x8e, 0x99, + 0x1f, 0xb2, 0xf7, 0x40, 0x5, 0xf7, 0x91, 0x89, 0xa, 0xfb, 0x93, 0x6, + 0xa9, 0xf7, 0x1a, 0x5, 0x23, 0x6, 0x6f, 0xfb, 0x1a, 0x5, 0x44, 0x6, + 0xe, 0xfb, 0x22, 0xe4, 0xd5, 0xe4, 0xf7, 0xa6, 0xe5, 0xca, 0xe4, 0x1, + 0xd5, 0xe9, 0xf7, 0xfd, 0xed, 0x3, 0x85, 0x56, 0x15, 0x77, 0x32, 0x5, + 0xf7, 0xd7, 0x6, 0x9e, 0xe4, 0x85, 0xa, 0xa9, 0xf7, 0x18, 0x5, 0x7c, + 0x9c, 0xb7, 0x60, 0xdb, 0x1b, 0xf7, 0x2d, 0xf7, 0x1b, 0xf7, 0x13, 0xf7, + 0x24, 0xf7, 0xa, 0xfb, 0x1, 0xbf, 0x30, 0x55, 0x52, 0x84, 0x6c, 0x5c, + 0x1f, 0xb6, 0xf7, 0x5e, 0x5, 0xfb, 0x45, 0x6, 0x78, 0x32, 0x5, 0xdd, + 0x6, 0xfb, 0x10, 0xfc, 0xe2, 0x5, 0xf7, 0x2e, 0xf7, 0xa3, 0x15, 0xf7, + 0x13, 0xf7, 0x10, 0xa6, 0xc3, 0xce, 0xc1, 0x67, 0x49, 0x2f, 0x2e, 0x47, + 0x36, 0x64, 0x38, 0xa6, 0xdc, 0x8a, 0x1e, 0xe, 0x7c, 0xe8, 0xf7, 0x2b, + 0xe9, 0xf7, 0x5b, 0xe9, 0x12, 0xf8, 0x3c, 0xef, 0x3f, 0xf0, 0x13, 0xf0, + 0xbd, 0xb3, 0x15, 0x79, 0xba, 0xd0, 0x66, 0xee, 0x1b, 0xf7, 0x0, 0xf7, + 0x2b, 0xc6, 0xf7, 0x31, 0xcb, 0x6b, 0xa7, 0x66, 0xa9, 0x1f, 0x13, 0xe8, + 0xb2, 0x9f, 0xc2, 0xc8, 0xd4, 0x1a, 0xe0, 0x44, 0xc1, 0x2b, 0x3f, 0x47, + 0x68, 0x65, 0x47, 0x1e, 0xac, 0x42, 0x5, 0xb2, 0xdb, 0xb1, 0x98, 0xb6, + 0x1b, 0xaf, 0xbb, 0x7c, 0x60, 0x29, 0xfb, 0xc, 0x5f, 0x50, 0x8c, 0x1f, + 0x78, 0x2d, 0x5, 0x13, 0xf0, 0xdd, 0xe7, 0xaa, 0x50, 0x3f, 0x3b, 0x5c, + 0x44, 0x57, 0x6d, 0x95, 0xab, 0x34, 0x1f, 0xe, 0x5e, 0xc4, 0x58, 0x76, + 0xf7, 0x9, 0xca, 0xf7, 0x3d, 0xce, 0xe6, 0xcb, 0x4b, 0xf7, 0x57, 0x49, + 0x77, 0xf4, 0x77, 0x12, 0x13, 0xbb, 0xf7, 0x98, 0xc4, 0x15, 0xf7, 0x19, + 0x6, 0x82, 0x5e, 0x5, 0x52, 0x6, 0x80, 0x52, 0x5, 0xf7, 0x39, 0x6, + 0x96, 0xc4, 0x5, 0x62, 0x6, 0x93, 0xb8, 0x5, 0xb5, 0x6, 0x97, 0xca, + 0x5, 0x62, 0x6, 0xae, 0xf7, 0x46, 0x5, 0x4a, 0x6, 0xfb, 0x41, 0x98, + 0xa, 0xdc, 0x9b, 0x15, 0xd0, 0xda, 0x7d, 0x3c, 0x5, 0xfc, 0x56, 0xfb, + 0x12, 0x15, 0x13, 0x7b, 0xc6, 0x55, 0xf9, 0xb, 0xf9, 0x34, 0x4d, 0xbc, + 0x5, 0xfc, 0xfd, 0xfb, 0xe6, 0x15, 0x71, 0xbc, 0xaa, 0x83, 0xad, 0x1b, + 0xdf, 0xce, 0xc7, 0xd2, 0x1f, 0x8c, 0xa4, 0x82, 0xa3, 0x79, 0x9c, 0x8, + 0x9b, 0x95, 0xa0, 0xaf, 0xa9, 0x1a, 0x13, 0xb4, 0xba, 0x6b, 0xac, 0x51, + 0x5f, 0x61, 0x77, 0x72, 0x64, 0x1e, 0xa5, 0x51, 0x5, 0x13, 0xbb, 0x9b, + 0xa7, 0xad, 0xa0, 0xa9, 0x1b, 0x98, 0x9a, 0x86, 0x78, 0x6e, 0x71, 0x7f, + 0x73, 0x1f, 0x5c, 0x8c, 0x7e, 0x4a, 0x5, 0xc3, 0x6, 0xac, 0x96, 0x7a, + 0x78, 0x6d, 0x70, 0x72, 0x67, 0x65, 0x70, 0x9a, 0x9a, 0x6e, 0x1f, 0xe, + 0xf7, 0x72, 0xd6, 0xf0, 0xd4, 0xf7, 0x25, 0x77, 0x1, 0xf8, 0x5, 0xdd, + 0x3, 0xf7, 0x1a, 0xf7, 0x98, 0x15, 0x6f, 0xc5, 0xb0, 0x81, 0xb4, 0x1b, + 0xe8, 0xe3, 0xcc, 0xd8, 0x1f, 0x8d, 0xa9, 0x81, 0xa7, 0x74, 0x9e, 0x8, + 0x9f, 0x97, 0xa5, 0xb3, 0xae, 0x1a, 0xbe, 0x62, 0xb0, 0x46, 0x57, 0x5a, + 0x74, 0x6f, 0x5a, 0x1e, 0xaa, 0x4b, 0x5, 0x9d, 0xad, 0xb3, 0xa2, 0xb0, + 0x1b, 0x99, 0x9e, 0x84, 0x79, 0x8c, 0x1f, 0x69, 0x69, 0x7f, 0x6b, 0x1e, + 0x58, 0x6, 0x7c, 0x42, 0x5, 0xcd, 0x6, 0xb2, 0x99, 0x79, 0x76, 0x68, + 0x69, 0x70, 0x62, 0x1f, 0x89, 0x6, 0x60, 0x69, 0x9c, 0x9b, 0x69, 0x1f, + 0xe, 0xf8, 0x84, 0xdb, 0x1, 0xda, 0xf8, 0x4e, 0x3, 0xda, 0xf8, 0x99, + 0x15, 0xd8, 0x73, 0x5, 0xa1, 0x9d, 0x9e, 0xb5, 0xae, 0x1b, 0xa0, 0x9f, + 0x7d, 0x7b, 0xa0, 0x1f, 0x7c, 0xa0, 0xa2, 0x7b, 0xa4, 0x1b, 0xec, 0xbb, + 0xdf, 0xad, 0x9c, 0x1f, 0x3e, 0xa1, 0x5, 0x63, 0x71, 0x7f, 0x77, 0x6f, + 0x1b, 0x78, 0x78, 0x96, 0x98, 0x77, 0x1f, 0x9b, 0x72, 0x71, 0x9d, 0x6f, + 0x1b, 0x2e, 0x5f, 0x40, 0x61, 0x72, 0x1f, 0xe, 0xf8, 0x95, 0xbc, 0x12, + 0xad, 0xbf, 0xf7, 0x14, 0xbe, 0xf7, 0x43, 0xcb, 0x6e, 0xbe, 0x13, 0xf0, + 0xf7, 0x6a, 0xf7, 0x7a, 0x15, 0xbe, 0x6, 0xc8, 0xf7, 0xc0, 0x98, 0xfb, + 0xc0, 0x5, 0xcd, 0x6, 0xf7, 0x16, 0xf7, 0xbf, 0x5, 0x13, 0xe8, 0x4f, + 0xfb, 0xbf, 0x5, 0xbe, 0x6, 0xcf, 0xf7, 0xe0, 0x7a, 0xa, 0xfb, 0x5, + 0xfb, 0xa1, 0x82, 0xf7, 0xa1, 0x5, 0x2e, 0x6, 0xfb, 0x8d, 0xfb, 0xe0, + 0x15, 0xbf, 0x6, 0xc4, 0xf7, 0xaf, 0x5, 0xe3, 0x6, 0x96, 0xbc, 0x5, + 0xfb, 0x77, 0x6, 0x81, 0x5a, 0x5, 0xe2, 0x6, 0xe, 0xe9, 0x77, 0xf8, + 0x55, 0xe8, 0x1, 0xf7, 0x1e, 0xee, 0xf7, 0x7a, 0xee, 0x3, 0xad, 0x16, + 0xf8, 0x49, 0x6, 0xad, 0xf7, 0x35, 0x5, 0x2d, 0x6, 0x7d, 0x48, 0x5, + 0xfb, 0x4e, 0x6, 0xf7, 0x2e, 0xf7, 0x5, 0x5, 0xf7, 0x0, 0xda, 0xe8, + 0xc9, 0xf7, 0xe, 0x1a, 0xdb, 0x51, 0xcd, 0xfb, 0xd, 0x39, 0x45, 0x77, + 0x36, 0x3c, 0x1e, 0x79, 0x33, 0x5, 0xee, 0x6, 0xf1, 0x9b, 0xf6, 0x89, + 0x91, 0x1b, 0xc1, 0xba, 0x6f, 0x57, 0x53, 0x6c, 0x6a, 0x45, 0x57, 0x1f, + 0xfb, 0xd1, 0xfb, 0x74, 0x5, 0xe, 0xf7, 0x70, 0xd6, 0xf7, 0x88, 0xd8, + 0x1, 0xf7, 0x50, 0xde, 0xf7, 0xc, 0xde, 0x3, 0xf7, 0x11, 0xf7, 0x70, + 0x15, 0xf7, 0xb8, 0x6, 0x9b, 0xd6, 0x5, 0xfb, 0x38, 0x6, 0xf7, 0x14, + 0xea, 0x5, 0xae, 0xa3, 0xb5, 0xba, 0xbe, 0x1a, 0xb4, 0x75, 0xca, 0x2b, + 0x55, 0x55, 0x72, 0x62, 0x5f, 0x1e, 0x7b, 0x3b, 0x5, 0xde, 0x6, 0x8e, + 0x96, 0x5, 0x9c, 0x8f, 0x94, 0xb4, 0xc0, 0x1b, 0xa1, 0xa8, 0x85, 0x6f, + 0x71, 0x80, 0x78, 0x71, 0x79, 0x1f, 0xfb, 0x6c, 0xfb, 0x27, 0x5, 0xe, + 0x7c, 0xe8, 0x3a, 0xea, 0xf7, 0x90, 0xea, 0x12, 0x13, 0xa0, 0xb2, 0xf7, + 0xec, 0x15, 0xdc, 0x6, 0x67, 0xfb, 0x4d, 0x5, 0x85, 0x74, 0x89, 0x76, + 0x79, 0x1a, 0x37, 0xd0, 0x6f, 0xde, 0xbe, 0xc0, 0xa7, 0xa5, 0xb7, 0x1e, + 0x13, 0x60, 0x81, 0x61, 0x5, 0xf7, 0x43, 0x6, 0x9e, 0xea, 0x5, 0x3b, + 0x6, 0xd0, 0xf7, 0xef, 0x8f, 0xa, 0x6, 0x78, 0x2c, 0x5, 0xda, 0x6, + 0x65, 0x98, 0xa, 0x13, 0xa0, 0x6b, 0x63, 0x5b, 0x63, 0x4d, 0x1b, 0x54, + 0x7a, 0xa4, 0xa2, 0x97, 0x8c, 0x96, 0x8c, 0x93, 0x1f, 0xc3, 0xf7, 0xae, + 0x43, 0xa, 0x67, 0xa, 0xf7, 0x78, 0xf8, 0x75, 0x15, 0xf7, 0xe9, 0xd9, + 0x76, 0xf1, 0xfb, 0xde, 0xfb, 0xb, 0x5, 0xfb, 0x47, 0xfb, 0x53, 0x15, + 0xdc, 0x6, 0x67, 0xfb, 0x5b, 0x5, 0x8a, 0x78, 0x84, 0x26, 0xa, 0x57, + 0xa, 0xf7, 0x6b, 0x77, 0x12, 0x13, 0xb0, 0xf7, 0x52, 0xf8, 0x70, 0x15, + 0xf7, 0x44, 0xf7, 0x0, 0xf7, 0x14, 0xfb, 0x0, 0xcc, 0xb0, 0xfb, 0x16, + 0xf7, 0x24, 0x4e, 0xa, 0xfb, 0x57, 0xfb, 0x23, 0x5, 0x2a, 0xfb, 0x37, + 0x27, 0xa, 0x57, 0xa, 0xc6, 0xf7, 0x10, 0x12, 0x13, 0xb0, 0xf8, 0xe, + 0xf8, 0x89, 0x92, 0xa, 0xa3, 0xf7, 0x10, 0x86, 0xa, 0xfb, 0x62, 0xfb, + 0x10, 0x92, 0xa, 0xa4, 0xf7, 0x10, 0x4c, 0xa, 0xfb, 0x4b, 0xfb, 0xa6, + 0x27, 0xa, 0x67, 0xa, 0xf7, 0x5d, 0xf8, 0xc6, 0x15, 0xf7, 0xbf, 0x3b, + 0xae, 0xc6, 0xfb, 0xa3, 0xf7, 0xc, 0x5, 0xfb, 0x75, 0xfb, 0xca, 0x27, + 0xa, 0xfb, 0x11, 0xbd, 0x1, 0x90, 0x40, 0x15, 0x81, 0x59, 0x5, 0xf8, + 0xed, 0x6, 0x95, 0xbd, 0x5, 0xe, 0xa0, 0x76, 0xf7, 0xed, 0xe9, 0x1, + 0xf7, 0x4d, 0xdb, 0x3, 0xf7, 0x4d, 0x16, 0xdb, 0x6, 0xf7, 0x87, 0xf7, + 0xed, 0x5, 0xe0, 0x3f, 0xa, 0xfb, 0x87, 0x87, 0xa, 0xc7, 0x6, 0xfb, + 0x34, 0xfb, 0x82, 0x44, 0xf7, 0x82, 0x5, 0xce, 0x55, 0xa, 0xfb, 0x98, + 0x44, 0xa, 0xe1, 0x6, 0xe, 0xa0, 0x76, 0xf7, 0xed, 0xe9, 0x1, 0xf7, + 0x24, 0x16, 0xf7, 0x9, 0xf7, 0x67, 0xb8, 0xfb, 0x67, 0x5, 0xd7, 0x6, + 0xf7, 0x47, 0xf7, 0xed, 0x5, 0xbc, 0x3f, 0xa, 0xfb, 0x67, 0x44, 0xa, + 0xd2, 0x6, 0x2b, 0xfb, 0x4d, 0x5f, 0xf7, 0x65, 0x5, 0x48, 0x6, 0xfb, + 0xc, 0xfb, 0x65, 0x72, 0xf7, 0x4d, 0x5, 0xd1, 0x55, 0xa, 0xfb, 0x6e, + 0x44, 0xa, 0xbc, 0x6, 0xb8, 0xfb, 0xed, 0x5, 0xe, 0x7f, 0xa, 0xd6, + 0xf7, 0x15, 0xf7, 0x39, 0xf7, 0x1a, 0x3, 0x6b, 0x16, 0xf7, 0x8b, 0x55, + 0xa, 0x6c, 0x6, 0xe7, 0xce, 0xd4, 0x48, 0x5, 0x6f, 0x6f, 0xa, 0xf7, + 0x8c, 0x3f, 0xa, 0x36, 0x6, 0xfb, 0x17, 0xf7, 0x11, 0xf7, 0x30, 0xf7, + 0x12, 0x5, 0xe0, 0x3f, 0xa, 0xfb, 0x79, 0x44, 0xa, 0x9d, 0x6, 0x3a, + 0x48, 0x5c, 0xce, 0x5, 0xa0, 0x3f, 0xa, 0xfb, 0x85, 0x44, 0xa, 0xe2, + 0x6, 0xef, 0xfb, 0x14, 0xfb, 0x3a, 0xfb, 0xf, 0x5, 0x33, 0x6, 0xe, + 0xfb, 0x22, 0xe3, 0xf8, 0x29, 0xe3, 0x1, 0xe3, 0xf7, 0x3, 0xf7, 0x8f, + 0xf7, 0x1, 0x3, 0x67, 0x55, 0x15, 0x76, 0x33, 0x5, 0xf7, 0xc0, 0x6, + 0xa0, 0xe3, 0x5, 0x45, 0x6, 0xf8, 0x1, 0xf8, 0x29, 0x5c, 0xa, 0x9f, + 0xe3, 0x5, 0xfb, 0x7f, 0x6, 0x77, 0x33, 0x5, 0xbb, 0x6, 0xfb, 0x3c, + 0xfb, 0x4d, 0x38, 0xf7, 0x4d, 0x5, 0xbd, 0x6, 0x9f, 0xe3, 0x5, 0xfb, + 0x83, 0x6, 0x77, 0x33, 0x5c, 0xa, 0xf7, 0xb, 0xfb, 0xa0, 0xfb, 0x11, + 0xfb, 0x1d, 0x5, 0xe, 0xfb, 0x22, 0xe2, 0xf8, 0x25, 0xe3, 0x1, 0xe2, + 0xf7, 0x4, 0xf7, 0x8e, 0xf7, 0x2, 0x3, 0xf7, 0x8c, 0xf8, 0x7f, 0x15, + 0xf7, 0xec, 0xd4, 0x76, 0xec, 0xfb, 0xe2, 0xfb, 0x6, 0x5, 0xfb, 0xa5, + 0xfc, 0xee, 0x6b, 0xa, 0xf8, 0x1, 0xf8, 0x25, 0x5, 0xd9, 0x84, 0xa, + 0xfb, 0x80, 0x6, 0x77, 0x34, 0x5, 0xbb, 0x6, 0xfb, 0x40, 0xfb, 0x4a, + 0x4d, 0xa, 0xfb, 0x9d, 0xfb, 0xe, 0xfb, 0x1d, 0x5, 0xe, 0xfb, 0x22, + 0xe2, 0xf8, 0x26, 0xe2, 0xd4, 0xf7, 0xa, 0x1, 0xe2, 0xf7, 0x4, 0xf7, + 0x8f, 0xf7, 0x2, 0x3, 0xf8, 0x24, 0xf8, 0x8f, 0x15, 0xf7, 0x9, 0x6, + 0xa4, 0xf7, 0xa, 0x5, 0xfb, 0x8, 0x6, 0xfb, 0x6b, 0xfb, 0xa, 0x15, + 0xf7, 0x8, 0x6, 0xa5, 0xf7, 0xa, 0x5, 0xfb, 0x8, 0x6, 0xfb, 0xa5, + 0xfd, 0x3c, 0x6b, 0xa, 0xf8, 0x2, 0xf8, 0x26, 0x5, 0xd8, 0x84, 0xa, + 0xfb, 0x7f, 0x6, 0x77, 0x34, 0x5, 0xbb, 0x6, 0xfb, 0x41, 0xfb, 0x4b, + 0x4d, 0xa, 0xfb, 0x9e, 0xfb, 0xe, 0xfb, 0x1c, 0x5, 0xe, 0x8b, 0xe2, + 0xbe, 0xbd, 0xc3, 0xbc, 0xf7, 0x4a, 0xe2, 0x1, 0xa3, 0x16, 0xf7, 0xdb, + 0x6, 0x9e, 0xe2, 0x5, 0xfb, 0xa, 0x6, 0x97, 0xbe, 0x70, 0xa, 0x95, + 0xbd, 0x5, 0xfb, 0x29, 0x6, 0x9a, 0xc3, 0x70, 0xa, 0x97, 0xbc, 0x5, + 0xfb, 0x22, 0x6, 0xf7, 0x5f, 0xf7, 0x4a, 0x5c, 0xa, 0x9e, 0xe2, 0x5, + 0xfb, 0x83, 0x6, 0x77, 0x34, 0x5, 0xb8, 0x6, 0xfb, 0x11, 0xfb, 0x8, + 0x41, 0xf7, 0x8, 0x5, 0xb9, 0x6, 0x9e, 0xe2, 0x5, 0xfb, 0x88, 0x6, + 0x78, 0x34, 0x5, 0xdd, 0x6, 0xf7, 0x10, 0xfb, 0x4a, 0x5, 0xfb, 0x26, + 0x6, 0x81, 0x5a, 0x70, 0xa, 0x7c, 0x53, 0x85, 0xa, 0x82, 0x59, 0x70, + 0xa, 0x7f, 0x58, 0x83, 0xa, 0xe, 0x8b, 0xe9, 0xf7, 0x90, 0xe8, 0x1, + 0xf2, 0xed, 0xf7, 0x6c, 0xed, 0x3, 0xad, 0x16, 0xf8, 0x4e, 0x6, 0xb2, + 0xf7, 0x50, 0x5, 0x29, 0x44, 0xa, 0xfb, 0x55, 0x6, 0xf7, 0xef, 0xf7, + 0xa9, 0x99, 0xcf, 0x5, 0xfc, 0x3f, 0x6, 0x67, 0xfb, 0x46, 0x56, 0xa, + 0x9c, 0xe0, 0x5, 0xf7, 0x43, 0x6, 0xfb, 0xec, 0xfb, 0xa6, 0x5, 0xe, + 0x8b, 0xe6, 0xf7, 0x89, 0xe5, 0xc7, 0xd5, 0x1, 0xe8, 0xea, 0xf7, 0x5d, + 0xe9, 0x3, 0xf7, 0xb9, 0xf8, 0x7a, 0x15, 0xec, 0x6, 0xf7, 0x4d, 0xf7, + 0x24, 0x58, 0xb0, 0xfb, 0x3f, 0x20, 0xfb, 0xf, 0xf6, 0x46, 0x67, 0x5, + 0xfb, 0x1d, 0xfd, 0xb, 0x15, 0xf8, 0x3d, 0x6, 0xad, 0xf7, 0x3c, 0x5, + 0x2d, 0x6, 0x7a, 0x3e, 0x5, 0xfb, 0x49, 0x6, 0xf7, 0xde, 0xf7, 0xa2, + 0x98, 0xcc, 0x5, 0xfc, 0x2d, 0x6, 0x6b, 0xfb, 0x2d, 0x5, 0xea, 0x6, + 0x98, 0xca, 0x5, 0xf7, 0x3a, 0x6, 0xfb, 0xdd, 0xfb, 0x9e, 0x5, 0xe, + 0x7c, 0xe9, 0xf8, 0x4f, 0xe9, 0x1, 0xd3, 0xec, 0xf7, 0x9b, 0xeb, 0x3, + 0xd3, 0xf7, 0x50, 0x15, 0x2b, 0xa9, 0x20, 0xf7, 0x1b, 0xf7, 0x91, 0xb1, + 0xf7, 0xe3, 0xf7, 0xd, 0xe5, 0x61, 0xe0, 0xfb, 0xc, 0xfb, 0x88, 0x59, + 0xfb, 0xd2, 0xfb, 0x2, 0x1e, 0xec, 0x9d, 0x15, 0xf7, 0x10, 0xd1, 0xf7, + 0x54, 0xf5, 0xee, 0x7f, 0x31, 0x56, 0x3e, 0x58, 0xfb, 0x73, 0xfb, 0xe, + 0x3b, 0x81, 0xca, 0xcb, 0x1e, 0xe, 0x79, 0x9d, 0xf8, 0x4b, 0x9f, 0xf6, + 0x99, 0x9f, 0x9f, 0x6, 0xfb, 0x26, 0x8f, 0x7, 0x1e, 0xa0, 0x39, 0x63, + 0xff, 0xc, 0x9, 0xe8, 0xa, 0xe8, 0xb, 0x8c, 0xc, 0xe, 0xf8, 0xec, + 0x14, 0xac, 0x13, 0x0, 0x79, 0x2, 0x0, 0x1, 0x0, 0x3b, 0x0, 0x4d, + 0x0, 0x89, 0x0, 0x8d, 0x0, 0xcb, 0x1, 0x15, 0x1, 0x51, 0x1, 0x5d, + 0x1, 0x65, 0x1, 0x6c, 0x1, 0x94, 0x1, 0xb0, 0x1, 0xc5, 0x1, 0xdd, + 0x1, 0xf8, 0x2, 0x16, 0x2, 0x2e, 0x2, 0x3b, 0x2, 0x44, 0x2, 0x59, + 0x2, 0x5e, 0x2, 0x72, 0x2, 0x77, 0x2, 0x7c, 0x2, 0x93, 0x2, 0xba, + 0x2, 0xc1, 0x2, 0xcb, 0x2, 0xd0, 0x2, 0xf2, 0x2, 0xf7, 0x2, 0xfc, + 0x3, 0x4, 0x3, 0xd, 0x3, 0x12, 0x3, 0x15, 0x3, 0x1a, 0x3, 0x22, + 0x3, 0x27, 0x3, 0x3c, 0x3, 0x49, 0x3, 0x55, 0x3, 0x5c, 0x3, 0x61, + 0x3, 0x66, 0x3, 0x77, 0x3, 0x7b, 0x3, 0x8e, 0x3, 0x9b, 0x3, 0xae, + 0x3, 0xc1, 0x3, 0xcc, 0x3, 0xd7, 0x3, 0xdc, 0x3, 0xe0, 0x3, 0xe8, + 0x3, 0xf0, 0x3, 0xf8, 0x3, 0xfd, 0x4, 0x2, 0x4, 0x6, 0x4, 0xe, + 0x4, 0x16, 0x4, 0x1e, 0x4, 0x27, 0x4, 0x2e, 0x4, 0x34, 0x4, 0x3a, + 0x4, 0x40, 0x4, 0x45, 0x4, 0x49, 0x4, 0x52, 0x4, 0x5a, 0x4, 0x66, + 0x4, 0x74, 0x4, 0x7f, 0x4, 0x8a, 0x4, 0x8f, 0x4, 0x94, 0x4, 0x99, + 0x4, 0x9e, 0x4, 0xa2, 0x4, 0xa9, 0x4, 0xb5, 0x4, 0xba, 0x4, 0xc0, + 0x4, 0xc6, 0x4, 0xcc, 0x4, 0xd2, 0x4, 0xd8, 0x4, 0xdc, 0x4, 0xe0, + 0x4, 0xe4, 0x4, 0xe8, 0x4, 0xf3, 0x4, 0xfa, 0x5, 0x0, 0x5, 0x7, + 0x5, 0xc, 0x5, 0x11, 0x5, 0x16, 0x5, 0x1b, 0x5, 0x20, 0x5, 0x25, + 0x5, 0x2a, 0x5, 0x2f, 0x5, 0x33, 0x5, 0x3d, 0x5, 0x47, 0x5, 0x50, + 0x5, 0x58, 0x5, 0x5c, 0x5, 0x65, 0x5, 0x6a, 0x5, 0x6f, 0x5, 0x74, + 0x5, 0x79, 0x5, 0x7e, 0x5, 0x82, 0x5, 0x86, 0x5, 0x8a, 0xf7, 0x8d, + 0x6, 0x9f, 0xe5, 0x5, 0x30, 0x6, 0xb9, 0xd7, 0x5, 0xf7, 0x84, 0x6, + 0x9f, 0x3f, 0x5, 0x33, 0x3c, 0xa, 0xf7, 0x88, 0x37, 0xa, 0x51, 0x6, + 0xfb, 0x1, 0xf8, 0x64, 0x5, 0xfb, 0x91, 0x3c, 0xa, 0xf7, 0x15, 0x6, + 0xfb, 0x8e, 0x7c, 0xa, 0x4e, 0x6, 0xf7, 0x9d, 0xf7, 0x3a, 0x15, 0xf7, + 0xa, 0xf7, 0x3d, 0xb6, 0xfb, 0x3d, 0x5, 0xb, 0x22, 0xa, 0x1f, 0x13, + 0xbc, 0x3b, 0xa, 0x1e, 0x13, 0x7c, 0xa1, 0xf7, 0x1, 0x15, 0x13, 0xbc, + 0x2c, 0xa, 0x15, 0xf7, 0x41, 0x42, 0xa, 0x3c, 0x6, 0xac, 0xf7, 0x36, + 0x5, 0x91, 0xa8, 0x90, 0xaa, 0xa7, 0x1a, 0xcf, 0x46, 0xa9, 0x46, 0x2e, + 0xfb, 0x6, 0x6f, 0x74, 0x51, 0x1e, 0x9f, 0x3c, 0x5, 0x9c, 0xa6, 0xef, + 0xa1, 0xd6, 0x1b, 0xbc, 0xb0, 0x7b, 0x69, 0x84, 0x8a, 0x83, 0x88, 0x83, + 0x1f, 0x8f, 0x68, 0x64, 0x8e, 0x67, 0x1b, 0xfb, 0x8a, 0x6e, 0xfb, 0x20, + 0x64, 0xb, 0x15, 0x20, 0xa, 0xe, 0x15, 0xfb, 0x28, 0xf7, 0x1, 0x43, + 0xf7, 0x8, 0xf7, 0x44, 0xf7, 0x34, 0xf7, 0x9, 0xf7, 0x89, 0xf7, 0x6, + 0x48, 0xf4, 0xfb, 0x29, 0xfb, 0x57, 0xfb, 0x2a, 0xfb, 0x2f, 0xfb, 0x62, + 0x1e, 0xef, 0x9e, 0x15, 0xf7, 0x4, 0x8a, 0xe4, 0xf7, 0x1f, 0xf7, 0x1e, + 0x1b, 0xf7, 0x5, 0xa6, 0x33, 0x46, 0x8a, 0x1f, 0x2a, 0x3d, 0xfb, 0x27, + 0xfb, 0x23, 0x29, 0x5d, 0xd2, 0xda, 0x1e, 0xe, 0x15, 0xdc, 0x6, 0x54, + 0xfb, 0x9c, 0x5, 0x86, 0x73, 0x89, 0x75, 0x77, 0x1a, 0x2d, 0xc8, 0x55, + 0xf7, 0xd, 0xf7, 0x15, 0xe9, 0xac, 0xf7, 0x48, 0xb0, 0x1e, 0xc2, 0xf7, + 0x9d, 0x5, 0xdb, 0x46, 0xa, 0xfb, 0xa2, 0x6, 0x79, 0x31, 0x5, 0xeb, + 0x6, 0x57, 0xfb, 0x95, 0x5, 0x36, 0x79, 0x6b, 0x5e, 0x24, 0x1b, 0x3b, + 0x75, 0xab, 0xb0, 0x8a, 0x1f, 0x9a, 0x8d, 0x9a, 0x8e, 0x9a, 0x1e, 0xc3, + 0xf7, 0xa5, 0x5, 0xea, 0x46, 0xa, 0xfb, 0xa2, 0x6, 0xb, 0x7a, 0x7b, + 0x1a, 0x43, 0xd0, 0x60, 0xdd, 0xbf, 0xc0, 0xa6, 0xa5, 0xb7, 0x1e, 0x13, + 0x70, 0x81, 0x62, 0x5, 0xf7, 0x43, 0x37, 0xa, 0x3b, 0x6, 0xd0, 0xf7, + 0xf7, 0x8f, 0xa, 0x36, 0xa, 0xda, 0x6, 0x65, 0xfb, 0x63, 0x5, 0x13, + 0xb0, 0x6c, 0x63, 0x5b, 0x64, 0x4d, 0x1b, 0x54, 0x7a, 0xa2, 0xa1, 0x97, + 0x8c, 0x96, 0x8c, 0x93, 0x1f, 0xc3, 0xf7, 0xb8, 0x43, 0xa, 0x15, 0xdc, + 0x6, 0x67, 0xfb, 0x5b, 0x5, 0x85, 0x78, 0x89, 0x26, 0xa, 0x15, 0x33, + 0xa, 0x13, 0xd8, 0x2a, 0xa, 0xe, 0x30, 0xa, 0x26, 0xfb, 0x44, 0x2d, + 0xa, 0x7b, 0x42, 0x56, 0xa, 0xbc, 0xf7, 0x80, 0x4e, 0xa, 0x7c, 0x41, + 0x4c, 0xa, 0xa7, 0xf7, 0x1e, 0x88, 0xa, 0x72, 0xfb, 0x8, 0x56, 0xa, + 0xb6, 0xf7, 0x62, 0x5, 0xfc, 0xa1, 0x6, 0x79, 0x31, 0x8a, 0xa, 0x3d, + 0x7c, 0xa, 0x37, 0x6, 0xb, 0xf8, 0x55, 0x37, 0xa, 0xfb, 0x40, 0x6, + 0xdb, 0xf8, 0xa, 0x5, 0xf7, 0x3e, 0x37, 0xa, 0xfc, 0x51, 0x3c, 0xa, + 0xf7, 0x41, 0x6, 0x3b, 0xfc, 0xa, 0x3e, 0xa, 0xb, 0x61, 0x53, 0x49, + 0x6a, 0x48, 0x1b, 0x66, 0x65, 0x98, 0xa4, 0xc3, 0xe4, 0x9d, 0xc3, 0xc5, + 0xb1, 0x84, 0x89, 0xa8, 0x1f, 0xe, 0x1e, 0xf1, 0xa2, 0x15, 0xef, 0xea, + 0xca, 0xf5, 0xf7, 0x3, 0xb0, 0x54, 0x56, 0x20, 0xfb, 0x5, 0x55, 0x35, + 0x53, 0x2d, 0xa3, 0xdd, 0x1e, 0xe, 0x15, 0x9d, 0xe6, 0x5, 0xf7, 0x33, + 0x6, 0xdb, 0xf7, 0x94, 0x5, 0xfb, 0x35, 0x34, 0xa, 0xf7, 0x98, 0x6, + 0x25, 0xfb, 0xef, 0x5, 0xf7, 0x4d, 0x4b, 0xa, 0xe, 0x5, 0x6d, 0x44, + 0x3c, 0x74, 0x3f, 0x1b, 0xfb, 0xf, 0x82, 0xb9, 0xaf, 0x87, 0x1f, 0x9b, + 0xe6, 0x15, 0xc4, 0xac, 0xd5, 0xb0, 0xc8, 0x1b, 0xca, 0xd8, 0x6e, 0x4a, + 0x8c, 0x1f, 0xe, 0x15, 0xfb, 0x12, 0xf7, 0x18, 0x5b, 0xf3, 0xf7, 0x1a, + 0xf7, 0x49, 0xe6, 0xf7, 0x49, 0xe9, 0x48, 0xe0, 0xfb, 0x32, 0xfb, 0x32, + 0xfb, 0x3c, 0xb, 0x3c, 0xf7, 0x2a, 0xea, 0xe0, 0xa1, 0xb5, 0xdd, 0x1f, + 0x7a, 0xdb, 0x2f, 0xa, 0x35, 0xa, 0xfb, 0x4a, 0x93, 0xa, 0xd3, 0x31, + 0xa, 0xf8, 0xa4, 0x6, 0xb5, 0xf7, 0x5e, 0x7a, 0xa, 0x73, 0xfb, 0x4, + 0x95, 0xa, 0xab, 0xf7, 0x27, 0x5, 0xf7, 0x4, 0x6, 0xb, 0x6, 0x9e, + 0xe6, 0x5, 0xb, 0x15, 0xf8, 0x21, 0x6, 0x94, 0xa3, 0x97, 0xc0, 0xa9, + 0x1a, 0xee, 0x89, 0x30, 0xd1, 0xfb, 0x9, 0x1b, 0xfb, 0x17, 0xb, 0x6, + 0x78, 0x30, 0x5, 0xb, 0x6, 0x9e, 0xe5, 0x5, 0xb, 0x49, 0xa, 0xbf, + 0x3a, 0xfb, 0xa, 0x42, 0x3d, 0x35, 0x1e, 0xd9, 0x95, 0x15, 0xb7, 0xaf, + 0xb3, 0xc8, 0xb5, 0xa5, 0x73, 0x53, 0xa, 0xb, 0x15, 0x4d, 0xba, 0x57, + 0xe3, 0xed, 0xef, 0xd2, 0xe9, 0xc7, 0x58, 0xbe, 0x37, 0x27, 0x29, 0x3f, + 0x35, 0x1e, 0xdc, 0x91, 0x15, 0xba, 0xb2, 0xb2, 0xc7, 0xba, 0xa4, 0x72, + 0x6c, 0x56, 0x52, 0x70, 0x5e, 0x62, 0x6f, 0xa3, 0xa5, 0x1e, 0xb, 0x8b, + 0xe6, 0xf8, 0x10, 0xe6, 0x1, 0xb, 0x52, 0xbf, 0x51, 0xf0, 0xda, 0xb6, + 0xa2, 0xae, 0xca, 0xb, 0x6, 0x78, 0x31, 0x5, 0xb, 0x84, 0xa3, 0xa3, + 0x83, 0xa1, 0x1b, 0xd5, 0xc5, 0xbd, 0xa4, 0xa6, 0x1f, 0x5f, 0xca, 0x5, + 0x77, 0x6e, 0x69, 0x72, 0x67, 0x1b, 0x7a, 0x76, 0x91, 0x92, 0x76, 0x1f, + 0x92, 0x75, 0x75, 0x92, 0x76, 0x1b, 0xb, 0x5, 0xfb, 0x43, 0x6, 0xb, + 0x6, 0x9e, 0xe9, 0x5, 0xb, 0x8b, 0xe5, 0xd7, 0xe5, 0xf7, 0x64, 0xe5, + 0xb, 0x7c, 0xe7, 0x3b, 0xe6, 0xf0, 0xe5, 0xcd, 0xe6, 0xb, 0x6, 0x9d, + 0xe6, 0x5, 0xb, 0x3e, 0xa, 0xe, 0x6, 0x78, 0x2d, 0x5, 0xb, 0x1, + 0xa3, 0xf1, 0xf7, 0xf1, 0xef, 0x3, 0xb, 0x6, 0x9d, 0xe5, 0x5, 0xb, + 0xbb, 0xd5, 0xbf, 0xb5, 0x73, 0x5c, 0x99, 0x1e, 0xe6, 0xb0, 0x5, 0xb9, + 0x78, 0x69, 0xdc, 0xfb, 0x15, 0x1b, 0xfb, 0x22, 0xb, 0x15, 0xee, 0x6, + 0xf7, 0x53, 0xf7, 0x25, 0x57, 0xaf, 0xfb, 0x45, 0x5e, 0xa, 0x15, 0x4f, + 0xbb, 0x58, 0xde, 0xf1, 0xe1, 0xd2, 0xe7, 0xc7, 0x5c, 0xb, 0x64, 0xa, + 0xf7, 0xf, 0x65, 0xa, 0xb, 0x6, 0x79, 0x30, 0x5, 0xb, 0x5, 0xfb, + 0x3, 0x6, 0xb, 0x3d, 0xf7, 0x4b, 0x5, 0xbd, 0x84, 0xa, 0xfb, 0x84, + 0x6, 0x77, 0x34, 0x5c, 0xa, 0xf7, 0x8, 0xb, 0x5, 0x29, 0x6, 0xb, + 0x15, 0x6b, 0xa2, 0x73, 0xad, 0xb7, 0xb5, 0xb5, 0xba, 0xbb, 0x72, 0x99, + 0x6a, 0x5a, 0x67, 0x5e, 0x59, 0x1e, 0xb, 0x16, 0x60, 0xa, 0xa8, 0x7a, + 0xa4, 0x63, 0x54, 0x6e, 0x5f, 0x67, 0x1e, 0xb, 0x15, 0xf7, 0x62, 0xfb, + 0x55, 0xc0, 0xc5, 0xfb, 0x26, 0xf7, 0x1b, 0xf7, 0x26, 0xf7, 0xf, 0x56, + 0xc7, 0x5, 0xb, 0xa7, 0xaf, 0x15, 0xb2, 0x4b, 0x5, 0x93, 0x99, 0xcd, + 0xb1, 0xbc, 0x1b, 0xa0, 0xa3, 0x84, 0x83, 0xa4, 0x1f, 0xb, 0x6d, 0x55, + 0x56, 0x70, 0x5d, 0x61, 0x73, 0xa2, 0xa7, 0x1e, 0xb, 0x8b, 0xe5, 0xd5, + 0xf7, 0x36, 0x32, 0xe4, 0xf7, 0x1e, 0xe5, 0xb, 0x6, 0x9f, 0xe9, 0x5, + 0xb, 0x5, 0xed, 0x6, 0xb, 0x7c, 0xe4, 0x3e, 0xe5, 0xf7, 0x9c, 0xe6, + 0xb, 0x1, 0x9e, 0xef, 0xf8, 0x1, 0xeb, 0x3, 0xb, 0x1, 0xf3, 0xe9, + 0xf7, 0x8b, 0xe9, 0x3, 0xb, 0x15, 0xf7, 0x4, 0x6, 0xb, 0x6, 0x9e, + 0xe7, 0x5, 0xb, 0x5, 0xd9, 0x6, 0xb, 0x63, 0xa, 0xf7, 0x75, 0x77, + 0x45, 0xa, 0xb, 0x22, 0xfb, 0x10, 0xf5, 0x45, 0x69, 0x5, 0xe, 0x61, + 0xa, 0xf7, 0x77, 0x77, 0x76, 0xa, 0xb, 0x71, 0xa2, 0x72, 0xb1, 0xba, + 0xac, 0xb3, 0xb0, 0xb, 0x7c, 0xe6, 0xdd, 0xe6, 0xe9, 0xe6, 0xb, 0x1, + 0xf7, 0x67, 0xf1, 0x3, 0xb, 0x7c, 0xe6, 0xf7, 0xa1, 0xe6, 0xb, 0x15, + 0xf7, 0x6, 0x6, 0xa5, 0xb, 0x5, 0xfb, 0x5, 0x6, 0xb, 0x5, 0x2a, + 0x6, 0xb, 0x57, 0xa, 0xf7, 0x6f, 0x77, 0x12, 0x13, 0xb0, 0xb, 0x75, + 0xa, 0xf7, 0x7a, 0x77, 0x62, 0xa, 0xb, 0xf8, 0x8f, 0x5a, 0xa, 0xaa, + 0xf7, 0x2b, 0x5, 0xfb, 0x4, 0x6, 0xb, 0xb1, 0x4c, 0xf7, 0x66, 0xf7, + 0x2e, 0xfb, 0x1b, 0xf7, 0x32, 0x4d, 0x57, 0xc5, 0xb, 0x15, 0x76, 0x34, + 0x5, 0xf7, 0xc0, 0x84, 0xa, 0x46, 0x6, 0xb, 0x5, 0xda, 0x6, 0x9d, + 0xe8, 0x5, 0xfb, 0xa0, 0x82, 0xa, 0xb, 0x15, 0xf7, 0x5, 0x6, 0xb, + 0x6, 0x77, 0x30, 0x5, 0xb, 0x6, 0x77, 0x2d, 0x5, 0xb, 0x5, 0xf7, + 0x28, 0x6, 0xb, 0xf7, 0xb1, 0x5, 0xb, 0x64, 0xa, 0xf7, 0x10, 0x83, + 0xa, 0xb, 0x15, 0xf8, 0x63, 0x6, 0x9e, 0xf7, 0x2, 0x5, 0xfc, 0x63, + 0x6, 0xb, 0x6, 0x3c, 0x7d, 0xa, 0xb, 0x8b, 0xe5, 0xf8, 0xa, 0xe5, + 0xb, 0x1, 0xf8, 0x66, 0xe8, 0x3, 0xb, 0x79, 0xe4, 0xf8, 0x25, 0xe6, + 0xb, 0x8b, 0xe6, 0xf7, 0x94, 0xe6, 0xb, 0x79, 0xe6, 0xf8, 0x17, 0xe5, + 0xb, 0x5, 0x2b, 0x6, 0xb, 0x5, 0x28, 0x6, 0xb, 0xfc, 0xa, 0x5, + 0xb, 0xfc, 0x10, 0x5, 0xb, 0x5, 0xfb, 0x4c, 0x6, 0x79, 0x2e, 0x5, + 0xd8, 0x6, 0x3f, 0xb, 0x8b, 0xe9, 0xf7, 0x8f, 0xe9, 0x1, 0xb, 0x6, + 0xf7, 0x55, 0x71, 0xa, 0xb, 0x8b, 0xe9, 0xf8, 0x4a, 0xe9, 0x1, 0xb, + 0x6, 0x78, 0x2e, 0x5, 0xb, 0x5, 0xfb, 0x6, 0x6, 0xb, 0x6, 0x9f, + 0xe2, 0x5, 0xb, 0x5, 0xfb, 0x28, 0x6, 0xb, 0x5, 0xfb, 0x2, 0x6, + 0xb, 0x6, 0x79, 0x2d, 0x5, 0xb, 0x5, 0xf7, 0x8f, 0x6, 0xb, 0x6, + 0x9f, 0xe8, 0x5, 0xb, 0x5, 0xdb, 0x6, 0xb, 0xf7, 0x1b, 0xc5, 0x98, + 0x1f, 0xe7, 0xf8, 0x2e, 0x5, 0xb, 0xda, 0xf7, 0xb, 0xa4, 0x1f, 0xc5, + 0xf7, 0xb6, 0x5, 0xb, 0x5, 0xfb, 0x45, 0x6, 0x79, 0x32, 0x8a, 0xa, + 0xb, 0x65, 0xca, 0xfb, 0x66, 0xfb, 0x2e, 0x5, 0xe, 0x5, 0xfb, 0x42, + 0xb, 0x55, 0x15, 0x77, 0x33, 0x5, 0xf7, 0xd7, 0x6, 0xb, 0xf7, 0x73, + 0x77, 0x1, 0xb, 0x15, 0xf7, 0x3, 0x6, 0xb, 0x28, 0xfb, 0x42, 0x2a, + 0xb, 0x6, 0x9e, 0xe8, 0x5, 0xb, 0x5, 0xfb, 0x90, 0x6, 0xb, 0x5, + 0xec, 0x6, 0xb, 0xf7, 0x20, 0x5, 0xb, 0xfb, 0x56, 0x5, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp b/core/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp new file mode 100644 index 0000000000..7fe9f63c0e --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp @@ -0,0 +1,1572 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitFixedItalicFontData[18746] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x15, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x2d, 0x49, + 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x23, 0xf8, 0x10, + 0x0, 0xf8, 0x2a, 0x1, 0xf8, 0x2b, 0x2, 0xf8, 0x2c, 0x3, 0xf8, 0x18, + 0x4, 0x5b, 0xfb, 0x8d, 0xf9, 0x2b, 0xf9, 0xb7, 0x5, 0xf7, 0xa3, 0xf, + 0xf9, 0xc, 0x11, 0xaa, 0x1c, 0x42, 0x78, 0x12, 0x0, 0x12, 0x1, 0x1, + 0x5, 0x7, 0x9, 0x11, 0x19, 0x1f, 0x25, 0x29, 0x2d, 0x39, 0x42, 0x49, + 0x53, 0x5c, 0x65, 0x8f, 0xa5, 0xb4, 0x49, 0x64, 0x6f, 0x74, 0x49, 0x4a, + 0x69, 0x6a, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x73, 0x63, + 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, + 0x67, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x6c, 0x69, 0x72, 0x61, 0x45, 0x75, + 0x72, 0x6f, 0x70, 0x72, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, 0x74, 0x61, + 0x72, 0x72, 0x6f, 0x77, 0x75, 0x70, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x64, 0x6f, 0x77, + 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x46, 0x69, + 0x78, 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x49, 0x74, 0x61, 0x6c, + 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x46, 0x69, 0x78, 0x65, + 0x64, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x1, 0x0, 0x1, 0x6, 0x0, + 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, + 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, + 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, + 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, + 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, + 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, + 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, + 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, + 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, + 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, + 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, + 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, + 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, + 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, + 0xc9, 0x0, 0x0, 0xc8, 0x0, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, + 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, + 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, + 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, + 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, + 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x1, + 0x87, 0x0, 0x0, 0x91, 0x0, 0x1, 0x88, 0x1, 0x0, 0x8c, 0x0, 0x0, + 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x94, 0x0, 0x1, 0x8a, 0x1, 0x0, + 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, + 0x65, 0x0, 0x1, 0x8c, 0x1, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, + 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, + 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, + 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, + 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, + 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, 0x8e, 0x2, 0x0, 0x99, 0x0, 0x1, + 0x91, 0x4, 0x0, 0xa6, 0x0, 0x0, 0x6d, 0x1, 0x0, 0xf4, 0x2, 0x0, + 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x2f, 0x0, 0x62, 0x0, 0xd0, 0x1, + 0x55, 0x1, 0xb1, 0x2, 0x3c, 0x2, 0x50, 0x2, 0x87, 0x2, 0xbe, 0x2, + 0xf5, 0x3, 0x21, 0x3, 0x2f, 0x3, 0x43, 0x3, 0x52, 0x3, 0x67, 0x3, + 0xab, 0x3, 0xd2, 0x4, 0x22, 0x4, 0x80, 0x4, 0xc1, 0x5, 0x11, 0x5, + 0x67, 0x5, 0x8f, 0x6, 0x0, 0x6, 0x57, 0x6, 0x6f, 0x6, 0x8f, 0x6, + 0xb2, 0x6, 0xd4, 0x6, 0xf7, 0x7, 0x5b, 0x7, 0xf8, 0x8, 0x32, 0x8, + 0x9f, 0x8, 0xf3, 0x9, 0x2e, 0x9, 0x77, 0x9, 0xc3, 0x9, 0xd7, 0xa, + 0x28, 0xa, 0x48, 0xa, 0x84, 0xa, 0xd7, 0xb, 0x1, 0xb, 0x48, 0xb, + 0x83, 0xb, 0xcd, 0xc, 0x1a, 0xc, 0xb7, 0xd, 0x19, 0xd, 0x88, 0xd, + 0xbc, 0xe, 0x12, 0xe, 0x3d, 0xe, 0x7f, 0xe, 0xd2, 0xf, 0x7, 0xf, + 0x3e, 0xf, 0x5e, 0xf, 0x81, 0xf, 0xa4, 0xf, 0xd4, 0xf, 0xe5, 0xf, + 0xf5, 0x10, 0x45, 0x10, 0xaa, 0x10, 0xfe, 0x11, 0x65, 0x11, 0xb9, 0x12, + 0xa, 0x12, 0x1f, 0x12, 0x6b, 0x12, 0xa0, 0x12, 0xe2, 0x13, 0x30, 0x13, + 0x53, 0x13, 0xca, 0x14, 0x29, 0x14, 0x70, 0x14, 0xd7, 0x15, 0x3f, 0x15, + 0x84, 0x15, 0xed, 0x16, 0x39, 0x16, 0x8f, 0x16, 0xbb, 0x16, 0xff, 0x17, + 0x52, 0x17, 0x92, 0x17, 0xc4, 0x18, 0x2b, 0x18, 0x45, 0x18, 0xac, 0x18, + 0xea, 0x19, 0x19, 0x19, 0x77, 0x19, 0xe6, 0x1a, 0x67, 0x1a, 0xca, 0x1a, + 0xe9, 0x1b, 0x82, 0x1b, 0x9e, 0x1c, 0x23, 0x1c, 0x8a, 0x1c, 0xbd, 0x1c, + 0xd8, 0x1d, 0x60, 0x1d, 0x73, 0x1d, 0xb0, 0x1d, 0xee, 0x1e, 0x31, 0x1e, + 0x97, 0x1e, 0xa9, 0x1e, 0xee, 0x1f, 0x27, 0x1f, 0x48, 0x1f, 0x84, 0x1f, + 0xa8, 0x1f, 0xe7, 0x20, 0x1c, 0x20, 0x89, 0x20, 0xfc, 0x21, 0xaa, 0x22, + 0x9, 0x22, 0x27, 0x22, 0x4e, 0x22, 0x7b, 0x22, 0xc6, 0x22, 0xe9, 0x23, + 0x2f, 0x23, 0x9f, 0x24, 0x22, 0x24, 0x40, 0x24, 0x63, 0x24, 0x89, 0x24, + 0xb7, 0x24, 0xd4, 0x25, 0x14, 0x25, 0x3e, 0x25, 0x6d, 0x25, 0xc8, 0x26, + 0x49, 0x26, 0x67, 0x26, 0x88, 0x26, 0xae, 0x26, 0xff, 0x27, 0x31, 0x27, + 0x60, 0x27, 0xe8, 0x27, 0xfd, 0x28, 0x16, 0x28, 0x3f, 0x28, 0x61, 0x28, + 0x80, 0x28, 0xd1, 0x29, 0x5b, 0x29, 0x71, 0x29, 0x97, 0x29, 0xad, 0x2a, + 0x13, 0x2a, 0x36, 0x2a, 0x7f, 0x2b, 0x2d, 0x2b, 0xaf, 0x2b, 0xcd, 0x2b, + 0xea, 0x2c, 0x19, 0x2c, 0x4a, 0x2c, 0x65, 0x2c, 0x96, 0x2c, 0xba, 0x2c, + 0xda, 0x2d, 0x51, 0x2d, 0xf4, 0x2e, 0xc, 0x2e, 0x23, 0x2e, 0x49, 0x2e, + 0x92, 0x2e, 0xb9, 0x2e, 0xeb, 0x2f, 0x6a, 0x2f, 0x89, 0x2f, 0xa8, 0x2f, + 0xd0, 0x2f, 0xf8, 0x30, 0x4b, 0x30, 0xb6, 0x31, 0x1b, 0x31, 0x40, 0x31, + 0x66, 0x31, 0xc3, 0x32, 0x29, 0x32, 0x65, 0x32, 0x9f, 0x33, 0x0, 0x33, + 0x8c, 0x34, 0x39, 0x34, 0xe5, 0x35, 0x70, 0x36, 0x2, 0x36, 0x2d, 0x36, + 0x71, 0x36, 0xb3, 0x37, 0xa, 0x37, 0x28, 0x37, 0x49, 0x37, 0x6b, 0x37, + 0x8d, 0x37, 0xb6, 0x37, 0xc6, 0x37, 0xfd, 0x38, 0x2e, 0x38, 0x6f, 0x38, + 0x8e, 0x38, 0x9e, 0x38, 0xae, 0x38, 0xbf, 0x38, 0xd5, 0x38, 0xe4, 0x39, + 0x7, 0x39, 0x24, 0x39, 0x40, 0x39, 0x70, 0x39, 0xb6, 0x39, 0xd4, 0x39, + 0xf4, 0x3a, 0x2f, 0x3a, 0x4e, 0x3a, 0x6e, 0x3a, 0x81, 0x3b, 0x1, 0x3b, + 0x88, 0x3c, 0x0, 0x3c, 0x53, 0x3c, 0x74, 0x3c, 0x9e, 0x3c, 0xbe, 0x3c, + 0xe3, 0x3d, 0x1d, 0x3d, 0x2c, 0x3d, 0xa7, 0x3e, 0x14, 0xe, 0xe, 0x7c, + 0xf7, 0xc, 0x1, 0xf7, 0x9f, 0xb7, 0x3, 0xf7, 0x9f, 0xf7, 0x49, 0x15, + 0xb7, 0x6, 0xee, 0xf8, 0x1b, 0x5, 0x3d, 0x6, 0xfb, 0x22, 0xfc, 0xab, + 0x15, 0x6e, 0x9d, 0x74, 0xb0, 0xb3, 0xb3, 0xa8, 0xb3, 0xaa, 0x72, 0x9f, + 0x68, 0x66, 0x65, 0x69, 0x69, 0x1e, 0xe, 0xf7, 0xdc, 0xf7, 0x7e, 0x12, + 0xf7, 0x3e, 0xb6, 0x7d, 0xdb, 0xb5, 0xb5, 0x7e, 0xda, 0x13, 0xd0, 0xf7, + 0xd5, 0xf7, 0xdc, 0x15, 0x13, 0xc8, 0xa8, 0x64, 0xa, 0xda, 0x6, 0x13, + 0xd0, 0x49, 0xfb, 0x7e, 0x5, 0xfb, 0x55, 0x16, 0x13, 0xb0, 0xa8, 0x64, + 0xa, 0xdb, 0x6, 0x13, 0xd0, 0x49, 0xfb, 0x7e, 0x5, 0xe, 0xf7, 0x5e, + 0xf7, 0x34, 0xbf, 0xf7, 0x75, 0x1, 0xf7, 0x2a, 0xf7, 0x1a, 0xbb, 0xf7, + 0x39, 0x3, 0xf2, 0x4c, 0x15, 0xba, 0x6, 0xc1, 0xf7, 0x69, 0x5, 0xf7, + 0x16, 0x6, 0x59, 0xfb, 0x69, 0x5, 0xbb, 0x6, 0xbf, 0xf7, 0x69, 0x5, + 0xf2, 0x6, 0x95, 0xbf, 0x5, 0x27, 0x6, 0xb4, 0xf7, 0x34, 0x5, 0xe3, + 0x6, 0x95, 0xbf, 0x5, 0x33, 0x6, 0xc1, 0xf7, 0x75, 0x5, 0x5b, 0x6, + 0x54, 0xfb, 0x75, 0x83, 0xa, 0xc1, 0xf7, 0x75, 0x5, 0x5b, 0x6, 0x51, + 0xfb, 0x75, 0x5, 0x25, 0x6, 0x81, 0x57, 0x5, 0xf1, 0x6, 0x64, 0xfb, + 0x34, 0x5, 0x2f, 0x6, 0x81, 0x57, 0x5, 0xe5, 0x6, 0xca, 0xbf, 0x15, + 0xb1, 0xf7, 0x34, 0x5, 0xf7, 0x17, 0x6, 0x66, 0xfb, 0x34, 0x5, 0xe, + 0x22, 0x76, 0xf7, 0x2b, 0xc0, 0xf8, 0x40, 0xbf, 0x1, 0xc3, 0xc0, 0xf7, + 0xb, 0xc3, 0xf7, 0x28, 0xc5, 0x3, 0xc3, 0x9c, 0x15, 0xc0, 0x6, 0x96, + 0xbe, 0xab, 0x77, 0xa9, 0x7d, 0xb9, 0x81, 0x19, 0x6d, 0xfb, 0x2a, 0x51, + 0xa, 0xa9, 0xf7, 0x2b, 0x5, 0xf7, 0x0, 0xec, 0xbd, 0xee, 0x8c, 0x1f, + 0xd4, 0x45, 0xb1, 0x47, 0xa6, 0x1e, 0x52, 0xa0, 0x2f, 0xa4, 0x89, 0xbc, + 0x8, 0xcd, 0xd9, 0xac, 0xcc, 0xba, 0xb6, 0x72, 0x75, 0xad, 0x1e, 0x83, + 0x66, 0x6a, 0xa, 0xa8, 0xf7, 0x29, 0x5, 0x55, 0x6, 0x80, 0x54, 0x70, + 0x9a, 0x6e, 0x9d, 0x69, 0x8f, 0x19, 0x9f, 0xf7, 0x1, 0x71, 0xa, 0x77, + 0x23, 0x5, 0x57, 0x8a, 0xfb, 0x21, 0x71, 0xfb, 0x1d, 0x1a, 0x45, 0xe6, + 0x6c, 0xd1, 0x72, 0x1e, 0xcb, 0x74, 0xce, 0x6c, 0x59, 0x1a, 0x51, 0x3e, + 0x6f, 0x29, 0x59, 0x5e, 0xa0, 0xaa, 0x6d, 0x1e, 0x94, 0xb9, 0x52, 0xa, + 0xe, 0x7c, 0xc4, 0xf7, 0x28, 0xc2, 0xf7, 0x12, 0xc4, 0xf7, 0x1f, 0xc2, + 0x12, 0xf7, 0x13, 0xc4, 0xac, 0xc4, 0xc3, 0xc5, 0xab, 0xc5, 0x17, 0xf7, + 0x13, 0xf8, 0x6b, 0x6d, 0xa, 0xba, 0x42, 0x35, 0x47, 0x44, 0x3b, 0x1e, + 0xc4, 0x94, 0x15, 0xbc, 0xae, 0xb1, 0xc1, 0xad, 0xa2, 0x70, 0x72, 0xa, + 0xfb, 0x5, 0xfb, 0xb3, 0x15, 0xf8, 0x61, 0xf7, 0x43, 0x5, 0x13, 0xc5, + 0x86, 0xc1, 0xfc, 0x60, 0xfb, 0x45, 0x5, 0xf7, 0x2a, 0xfb, 0x34, 0x6d, + 0xa, 0xc3, 0x42, 0x35, 0x47, 0x3b, 0x3b, 0x1e, 0xc4, 0x94, 0x15, 0xbc, + 0xae, 0xba, 0xc1, 0xad, 0xa2, 0x67, 0x72, 0xa, 0xe, 0x7c, 0xbd, 0x67, + 0xc3, 0xf7, 0x38, 0xc3, 0xf7, 0x6d, 0xbe, 0x12, 0xc0, 0xc0, 0xce, 0xc1, + 0x13, 0x7c, 0xf7, 0xe1, 0xbd, 0x15, 0xa6, 0x58, 0x5, 0xf7, 0x2b, 0x6, + 0x95, 0xc3, 0x5, 0xfb, 0x11, 0x6, 0x78, 0xae, 0xaf, 0xaf, 0xa5, 0xbd, + 0x9b, 0xb6, 0x19, 0xdc, 0x6, 0x95, 0xc3, 0x5, 0xfb, 0xf, 0x6, 0x83, + 0x60, 0x72, 0x54, 0x67, 0x63, 0x21, 0xf7, 0x62, 0x18, 0x88, 0x8f, 0x7a, + 0xac, 0x8a, 0xab, 0x8, 0xc0, 0xc1, 0xa6, 0xcf, 0xaf, 0xb2, 0x7d, 0x72, + 0x9d, 0x1e, 0xa7, 0xbb, 0x5, 0xab, 0x6d, 0x5d, 0x95, 0x5d, 0x1b, 0x39, + 0x2e, 0x60, 0x3d, 0x1f, 0x88, 0x65, 0x9c, 0x67, 0x9b, 0x67, 0x8, 0xfb, + 0x18, 0x39, 0x79, 0x4b, 0x45, 0x1a, 0x13, 0xbc, 0x57, 0xab, 0x50, 0xe2, + 0xc2, 0xc7, 0xa3, 0xb4, 0xb9, 0x1e, 0x76, 0xb9, 0x15, 0x75, 0x6e, 0x60, + 0x64, 0x54, 0x1b, 0x60, 0x68, 0xa2, 0xbe, 0x8a, 0x1f, 0xd8, 0xd4, 0xc2, + 0xbb, 0xa3, 0x1e, 0xe, 0xf7, 0xee, 0x76, 0xf7, 0x81, 0x77, 0x1, 0xf7, + 0x86, 0xf7, 0xd9, 0x15, 0xb9, 0x6, 0xd0, 0xf7, 0x81, 0x7b, 0xa, 0xe, + 0x34, 0x76, 0xf9, 0x6e, 0x77, 0x1, 0xf7, 0x3e, 0xbe, 0x3, 0xf7, 0x6e, + 0xfb, 0x0, 0x15, 0xbe, 0x6, 0x75, 0xc6, 0x71, 0xe2, 0xeb, 0x1a, 0xf7, + 0x4f, 0xee, 0xf7, 0x33, 0xf7, 0x1, 0xf7, 0x22, 0x1e, 0x7a, 0x79, 0x8b, + 0x7a, 0x1b, 0xfb, 0x18, 0xfb, 0x37, 0x40, 0xfb, 0x29, 0xfb, 0x46, 0x1a, + 0x2c, 0xa1, 0x36, 0xa5, 0x4f, 0x1e, 0xe, 0x34, 0x76, 0xf9, 0x6e, 0x77, + 0x1, 0xf8, 0xd, 0xbf, 0x3, 0xf7, 0x3e, 0xfb, 0x0, 0x15, 0x9c, 0x9d, + 0x8b, 0x9c, 0x1b, 0xf7, 0x18, 0xf7, 0x37, 0xd6, 0xf7, 0x29, 0xf7, 0x46, + 0x1a, 0xea, 0x74, 0xe0, 0x71, 0xc7, 0x1e, 0x58, 0x6, 0xa1, 0x50, 0xa5, + 0x34, 0x2b, 0x1a, 0xfb, 0x4f, 0x29, 0xfb, 0x33, 0xfb, 0x1, 0xfb, 0x22, + 0x1e, 0xe, 0xf7, 0x95, 0xf7, 0xf2, 0x1, 0xf7, 0x8, 0xf8, 0x4, 0x3, + 0xf7, 0x1d, 0xf7, 0xb5, 0x15, 0xc0, 0x6b, 0xee, 0xf7, 0xe, 0xbb, 0xfb, + 0xe, 0xca, 0xab, 0x4a, 0xf7, 0x12, 0xf7, 0x29, 0xa7, 0x82, 0xcd, 0xfb, + 0x24, 0x5e, 0xae, 0xf7, 0x23, 0x5, 0x46, 0x6, 0x74, 0xfb, 0x1d, 0xfb, + 0x16, 0xb2, 0x6f, 0x49, 0xf7, 0x17, 0x6e, 0x5, 0xe, 0xf7, 0x79, 0xc1, + 0x1, 0xf7, 0x79, 0xc3, 0x3, 0xd5, 0xf7, 0x79, 0x15, 0xf7, 0x55, 0x6, + 0x65, 0xfb, 0x4d, 0x51, 0xa, 0xb1, 0xf7, 0x4d, 0x5, 0xf7, 0x54, 0x4d, + 0xa, 0xfb, 0x54, 0x6, 0xb1, 0xf7, 0x4f, 0x71, 0xa, 0x65, 0xfb, 0x4f, + 0x5, 0xfb, 0x55, 0x6, 0xe, 0x30, 0x76, 0xf7, 0x7e, 0x77, 0x1, 0xf7, + 0x55, 0xfb, 0x4, 0x15, 0xcb, 0x75, 0xa, 0xf7, 0x7b, 0xc1, 0x1, 0xec, + 0xf8, 0x2a, 0x3, 0xec, 0xf7, 0x7b, 0x15, 0xf8, 0x1e, 0x47, 0xa, 0xfc, + 0x1e, 0x6, 0xe, 0x7c, 0xf7, 0x10, 0x1, 0xf7, 0x78, 0xf7, 0x24, 0x3, + 0xf7, 0x78, 0xae, 0x35, 0xa, 0xe, 0x3b, 0xf9, 0x59, 0x1, 0xc1, 0xf8, + 0x80, 0x3, 0xc1, 0x4f, 0x15, 0xb6, 0x77, 0xf8, 0x55, 0xf9, 0x44, 0x63, + 0xa0, 0x5, 0xe, 0x7c, 0xc5, 0xf8, 0x77, 0xc1, 0x1, 0xe5, 0xc0, 0xf7, + 0xc8, 0xc6, 0x3, 0xe5, 0xf7, 0x46, 0x15, 0x2f, 0xa8, 0x26, 0xf7, 0xe, + 0xf7, 0x78, 0xb4, 0xf7, 0xbe, 0xf7, 0xb, 0xe4, 0x67, 0xe4, 0xfb, 0x3, + 0xfb, 0x5a, 0x40, 0xfb, 0x8f, 0xfb, 0x2b, 0x1e, 0xc0, 0x8e, 0x15, 0xf7, + 0x13, 0xd0, 0xf7, 0x6e, 0xf7, 0x1d, 0xdf, 0x9d, 0x41, 0x4f, 0xfb, 0x46, + 0x3b, 0xfb, 0x43, 0xfb, 0xd, 0x39, 0x72, 0xd3, 0xd1, 0x1e, 0xe, 0x8b, + 0xc2, 0x54, 0xc6, 0xf8, 0x9f, 0x77, 0x1, 0xf7, 0xad, 0xc2, 0x3, 0xe6, + 0x16, 0xf8, 0x2a, 0x36, 0xa, 0xfb, 0x40, 0x6, 0xf2, 0xf8, 0xa3, 0xfb, + 0x7c, 0x58, 0x80, 0x53, 0xf7, 0x42, 0xb0, 0x32, 0x7a, 0xa, 0xfb, 0x47, + 0x6, 0xe, 0x8b, 0xc2, 0x54, 0xc6, 0xf8, 0x6b, 0xc0, 0x12, 0xf7, 0x34, + 0xc3, 0xf7, 0xaa, 0xc2, 0x13, 0xb8, 0xbe, 0x16, 0xf8, 0x31, 0x6, 0xa3, + 0xf7, 0x13, 0x52, 0xa, 0x7e, 0x43, 0x5, 0xfb, 0xa9, 0x6, 0xf7, 0xff, + 0xf7, 0x7a, 0xb6, 0xb8, 0xf7, 0x9, 0x1a, 0xd3, 0x39, 0xc8, 0x37, 0x3e, + 0x4a, 0x7f, 0x43, 0x49, 0x1e, 0x7c, 0x43, 0x51, 0xa, 0xe5, 0x99, 0xdb, + 0x98, 0xc4, 0x1b, 0xd3, 0xc2, 0x65, 0x53, 0x1f, 0x13, 0x78, 0xfb, 0x7, + 0xfb, 0x8b, 0xfb, 0xd, 0xfb, 0x4d, 0xfb, 0x1e, 0x1e, 0xe, 0x7c, 0xc2, + 0xf7, 0x63, 0xc7, 0xf7, 0x96, 0xc4, 0x1, 0xf8, 0x31, 0xc3, 0x3, 0xd3, + 0xa2, 0x15, 0x71, 0xcc, 0xd0, 0x7f, 0xce, 0x1b, 0xf7, 0x10, 0xf7, 0x0, + 0xd0, 0xf7, 0x17, 0xd5, 0x4d, 0xa3, 0x6d, 0x92, 0x1f, 0xbd, 0xa4, 0xcc, + 0xbb, 0xec, 0x1a, 0xda, 0x38, 0xb3, 0x33, 0x8c, 0x1e, 0x4b, 0x49, 0x79, + 0x6a, 0x61, 0x1f, 0x9a, 0x58, 0x5, 0xa4, 0xa8, 0xcb, 0xa3, 0xc9, 0x1b, + 0xc6, 0xc2, 0x76, 0x53, 0x4a, 0x39, 0x41, 0x20, 0x1f, 0x88, 0x6, 0x80, + 0x4b, 0x5, 0xc8, 0x8e, 0xf7, 0xb, 0x88, 0x43, 0x1a, 0x32, 0x32, 0x59, + 0x26, 0x50, 0x57, 0x97, 0xa3, 0x5a, 0x1e, 0xe, 0x8b, 0xc7, 0xf3, 0xc6, + 0xf7, 0xa8, 0xcc, 0x1, 0xf7, 0xe8, 0xcd, 0x3, 0xde, 0xf7, 0x38, 0x15, + 0xf7, 0xa9, 0x6, 0x77, 0xfb, 0x0, 0x5, 0x20, 0x60, 0xa, 0xf7, 0x91, + 0x3c, 0xa, 0x3b, 0x6, 0x9e, 0xf7, 0x0, 0x5, 0xdb, 0x6, 0x96, 0xc6, + 0x89, 0xa, 0xcf, 0xf7, 0xe9, 0x5, 0x30, 0x6, 0xfb, 0xd4, 0xfb, 0xf0, + 0x5, 0xd8, 0x92, 0x15, 0xf7, 0x96, 0xf7, 0xa8, 0x51, 0xfb, 0xa8, 0x5, + 0xe, 0x7c, 0xc6, 0xf7, 0x9f, 0xc6, 0xf7, 0x1e, 0xc3, 0x1, 0xf7, 0x1e, + 0xcb, 0xf7, 0x5d, 0xca, 0x3, 0xc2, 0xa5, 0x15, 0x6f, 0xc4, 0xc7, 0x7e, + 0xc3, 0x1b, 0xf7, 0x27, 0xf7, 0x12, 0xd6, 0xf7, 0x22, 0xde, 0x45, 0xc8, + 0x3a, 0x5c, 0x54, 0x87, 0x72, 0x5d, 0x1f, 0xb2, 0xf7, 0x53, 0x5, 0xf7, + 0xb9, 0x3c, 0xa, 0xfb, 0xf1, 0x6, 0x51, 0xfb, 0xc1, 0xb0, 0x81, 0x5, + 0x9e, 0xb5, 0xcb, 0x9d, 0xba, 0x1b, 0xd0, 0xb4, 0x63, 0x54, 0x2d, 0x23, + 0x50, 0x20, 0x55, 0x54, 0x96, 0xa8, 0x62, 0x1f, 0xe, 0x7c, 0xc6, 0xf7, + 0x99, 0x76, 0xf7, 0x84, 0xc3, 0x1, 0xca, 0xc6, 0xf7, 0x9f, 0xc9, 0x3, + 0xf7, 0x16, 0xf7, 0x9c, 0x15, 0xf7, 0x25, 0xa5, 0xf7, 0x4e, 0xf7, 0x7, + 0xf7, 0x4a, 0x1b, 0x98, 0xc3, 0x5, 0xfb, 0xa5, 0xfb, 0x5d, 0xfb, 0x2f, + 0xfb, 0x7c, 0xfb, 0x28, 0xd8, 0x4f, 0xe8, 0xf7, 0x1d, 0xdc, 0xec, 0xf7, + 0xc, 0xe6, 0x34, 0xbb, 0x38, 0x4e, 0x50, 0x67, 0x62, 0x6c, 0x1f, 0x83, + 0x46, 0x15, 0xbc, 0xa0, 0xc9, 0xb3, 0xca, 0x1b, 0xce, 0xc1, 0x6e, 0x44, + 0x45, 0x4e, 0x41, 0x2f, 0x36, 0x63, 0xd9, 0xd8, 0x96, 0x1f, 0xe, 0xa0, + 0x76, 0xf8, 0x91, 0xc2, 0x1, 0xe0, 0xc0, 0xf7, 0xc8, 0xc5, 0x3, 0xf7, + 0x32, 0x16, 0xc6, 0x6, 0xf7, 0xb3, 0xf8, 0x8d, 0x96, 0xc6, 0x5, 0xfc, + 0x1d, 0x6, 0x66, 0xfb, 0x29, 0x5, 0xc0, 0x6, 0xa6, 0xe9, 0x5, 0xf7, + 0xad, 0x6, 0xe, 0x7c, 0xc2, 0xf7, 0x6d, 0xc8, 0xf7, 0x5f, 0xc6, 0x1, + 0xd3, 0xcb, 0xf7, 0x9b, 0xc9, 0x3, 0xf7, 0x60, 0xf7, 0xb9, 0x15, 0x64, + 0x85, 0x2e, 0x4a, 0x31, 0x1a, 0x2b, 0xcf, 0x58, 0xf6, 0xf7, 0x25, 0xea, + 0xd8, 0xf7, 0xb, 0xd0, 0x5a, 0xa8, 0x6d, 0x99, 0x1e, 0xc0, 0x93, 0xce, + 0xc9, 0xea, 0x1a, 0xc3, 0x54, 0xcd, 0x23, 0xfb, 0x8, 0xfb, 0x3, 0x44, + 0xfb, 0xc, 0x1e, 0x8c, 0x5f, 0xa4, 0x6b, 0xaf, 0x77, 0x8, 0x89, 0xec, + 0x15, 0xf7, 0x5, 0xf7, 0x6, 0xa1, 0xb0, 0xcf, 0xb9, 0x63, 0x62, 0x41, + 0x42, 0x57, 0x39, 0x6d, 0x3b, 0x95, 0xc9, 0x1e, 0x49, 0xfb, 0xa1, 0x15, + 0xf7, 0x6, 0xf7, 0xa, 0xa5, 0xba, 0xcb, 0xc7, 0x61, 0x5b, 0x2e, 0x28, + 0x62, 0x47, 0x62, 0x3a, 0xa4, 0xc6, 0x1e, 0xe, 0x7d, 0xc7, 0xf7, 0x41, + 0xc4, 0xf7, 0x8e, 0xc1, 0x1, 0xf7, 0x25, 0xc4, 0xf7, 0xab, 0xc6, 0x3, + 0xc6, 0x7d, 0x15, 0xf8, 0x9, 0xf7, 0x0, 0xf7, 0x55, 0xf7, 0x78, 0xe9, + 0x58, 0xda, 0xfb, 0x5, 0xfb, 0x18, 0x28, 0x20, 0xfb, 0x4, 0x1f, 0x42, + 0x8c, 0xbf, 0x46, 0xf3, 0x1b, 0xc6, 0xca, 0x93, 0xb6, 0xb4, 0x1f, 0x66, + 0xfb, 0xe, 0x26, 0xfb, 0x0, 0xfb, 0x94, 0x8d, 0x8, 0xf8, 0x2e, 0xf7, + 0xce, 0x15, 0x64, 0x71, 0x4c, 0x62, 0x42, 0x1b, 0x43, 0x5e, 0xb4, 0xbf, + 0xe2, 0xd9, 0xd1, 0xe7, 0xe9, 0xa5, 0x30, 0x3c, 0x80, 0x1f, 0xe, 0x7c, + 0xf7, 0x10, 0xf7, 0x2c, 0xf7, 0x10, 0x1, 0xf7, 0x5a, 0xf7, 0x24, 0x3, + 0xf7, 0x5a, 0xae, 0x35, 0xa, 0xc6, 0xf7, 0xa8, 0x35, 0xa, 0xe, 0xf7, + 0x99, 0xf7, 0x10, 0x1, 0xf7, 0x32, 0xcb, 0xd7, 0xf7, 0x24, 0x3, 0xf7, + 0x32, 0xfb, 0x4, 0x15, 0xcb, 0x6, 0xf7, 0x2a, 0xf7, 0x8f, 0x5, 0x2e, + 0x6, 0x9e, 0xf7, 0x40, 0x35, 0xa, 0xe, 0xca, 0x76, 0xf7, 0xfe, 0xcf, + 0x1, 0xd4, 0xd5, 0x3, 0xd4, 0xf7, 0x6c, 0x15, 0xf7, 0xfa, 0xfb, 0x42, + 0x9c, 0xc9, 0xfb, 0xc1, 0xf7, 0x2d, 0xf8, 0x3, 0xf7, 0x27, 0x98, 0xcf, + 0xfc, 0x48, 0xfb, 0x42, 0x5, 0xe, 0xf7, 0x1e, 0xc8, 0xf7, 0x7, 0xc9, + 0x1, 0xe0, 0xf7, 0xce, 0x15, 0xf8, 0x56, 0x6, 0x95, 0xc9, 0x5, 0xfc, + 0x55, 0x6, 0x61, 0xfb, 0x82, 0x15, 0xf8, 0x54, 0x6, 0x97, 0xc8, 0x5, + 0xfc, 0x55, 0x6, 0xe, 0xb5, 0xcf, 0xf7, 0xc0, 0xc9, 0x1, 0xf8, 0x59, + 0xd5, 0x3, 0xd4, 0xb5, 0x15, 0xf8, 0x48, 0xf7, 0x42, 0x9d, 0xdd, 0xfb, + 0xfa, 0xf7, 0x42, 0x7a, 0x4d, 0xf7, 0xc1, 0xfb, 0x2d, 0xfc, 0x3, 0xfb, + 0x27, 0x5, 0xe, 0x7c, 0xf7, 0xa, 0xf7, 0x44, 0xf7, 0x23, 0xeb, 0xc1, + 0x12, 0xf7, 0xb, 0xc1, 0x9c, 0xc3, 0xf7, 0x48, 0xc1, 0x17, 0xf7, 0x52, + 0xf7, 0x44, 0x15, 0xc3, 0x6, 0x96, 0xc5, 0x5, 0xda, 0x9b, 0xf7, 0x24, + 0xc6, 0xf7, 0x17, 0x1a, 0xe0, 0x43, 0xba, 0x2c, 0x50, 0x4b, 0x73, 0x7a, + 0x59, 0x1e, 0x13, 0xf4, 0x76, 0xfb, 0x1, 0x5, 0xc1, 0x6, 0x97, 0xc9, + 0x5, 0x9a, 0xb1, 0xb5, 0x9e, 0xb3, 0x1b, 0xe7, 0xa8, 0x5e, 0x65, 0x2d, + 0xfb, 0x17, 0x5a, 0x36, 0x7e, 0x1f, 0x36, 0xfb, 0x8f, 0x15, 0x70, 0x8c, + 0x9f, 0x7b, 0xad, 0x1b, 0xae, 0xb9, 0xa9, 0xb3, 0xa3, 0x75, 0xa3, 0x69, + 0x62, 0x63, 0x67, 0x64, 0x8c, 0x1f, 0xe, 0x7d, 0xb0, 0xdf, 0xaf, 0xf7, + 0x6e, 0xb0, 0xf7, 0x0, 0xb0, 0x1, 0xb1, 0xb0, 0xeb, 0xb0, 0xf7, 0xe6, + 0xb1, 0x3, 0xf7, 0xe4, 0xf7, 0x3e, 0x15, 0x6e, 0x8a, 0xa3, 0x69, 0xba, + 0x1b, 0xf0, 0xd8, 0xf7, 0x18, 0xf7, 0xb, 0xf7, 0xb, 0x2c, 0xcd, 0xfb, + 0x6, 0xfb, 0x58, 0xfb, 0x21, 0xfb, 0x34, 0xfb, 0x4d, 0x21, 0xbd, 0x21, + 0xf7, 0x32, 0xdf, 0xe7, 0xa9, 0xb2, 0xd4, 0x1f, 0x83, 0xaf, 0x5, 0x58, + 0x29, 0x42, 0x7a, 0x49, 0x1b, 0x20, 0x47, 0xd1, 0xf5, 0xf7, 0x1c, 0xe4, + 0xf7, 0x3f, 0xf7, 0x5a, 0xf0, 0xde, 0x5a, 0x20, 0x2d, 0x4b, 0xfb, 0x5, + 0x49, 0x71, 0x74, 0x9f, 0xae, 0x91, 0x1f, 0x90, 0xa2, 0x99, 0xa3, 0x95, + 0xa0, 0xc6, 0xf7, 0x12, 0x18, 0x66, 0x6, 0x73, 0x59, 0x5, 0xc2, 0x85, + 0x6b, 0x8c, 0x7e, 0x1b, 0x2d, 0x37, 0x23, 0xfb, 0x11, 0x6a, 0x9e, 0x6e, + 0xb1, 0xb4, 0xb5, 0xa9, 0xac, 0xa4, 0x1f, 0xad, 0xf7, 0x19, 0x15, 0x4a, + 0x7e, 0x50, 0x2c, 0x51, 0x1b, 0x71, 0x85, 0xa1, 0x9f, 0xd8, 0xcd, 0xee, + 0xca, 0xb0, 0x8a, 0x62, 0x7a, 0x88, 0x1f, 0xe, 0x8b, 0xc1, 0xf6, 0xc1, + 0xf7, 0xb4, 0xc1, 0x1, 0x89, 0xf7, 0x65, 0xf7, 0x48, 0xf7, 0x60, 0x3, + 0x89, 0x16, 0xf7, 0x65, 0x2a, 0xa, 0x32, 0x6, 0xca, 0xf7, 0x4, 0x5, + 0xf7, 0xab, 0x6, 0xa2, 0xfb, 0x4, 0x2c, 0xa, 0xf8, 0x90, 0x32, 0xa, + 0x58, 0xa, 0x4f, 0x6, 0xf7, 0x6c, 0xf7, 0x3a, 0x15, 0xf7, 0x3f, 0xf7, + 0xba, 0xcb, 0xfb, 0xba, 0x5, 0xe, 0x8b, 0xc1, 0xf7, 0x50, 0xc2, 0xf7, + 0x67, 0xc1, 0x12, 0xf5, 0xc3, 0xf7, 0xec, 0xc8, 0x62, 0xc7, 0x13, 0xe8, + 0x13, 0xe4, 0x98, 0x16, 0xf7, 0xc8, 0x6, 0xf7, 0x1a, 0xf7, 0x5, 0xbd, + 0xf7, 0x18, 0x8a, 0x1f, 0xbe, 0x58, 0xae, 0x58, 0x95, 0x1e, 0x13, 0xe8, + 0xd2, 0x9e, 0xbd, 0xbb, 0xe9, 0x1a, 0xe8, 0x2c, 0xa9, 0x2a, 0x1e, 0xfb, + 0x9e, 0x45, 0xa, 0xdd, 0x6, 0x2f, 0xfc, 0x5a, 0x6b, 0xa, 0xf7, 0x51, + 0xf7, 0x87, 0x15, 0xb5, 0xf7, 0x67, 0x5, 0xf7, 0x1d, 0xf7, 0x1a, 0x89, + 0x40, 0x2e, 0x24, 0x62, 0x37, 0x1f, 0xfb, 0x45, 0xfb, 0x87, 0x15, 0xb3, + 0xf7, 0x50, 0x5, 0xf7, 0x1e, 0x6, 0x13, 0xf8, 0xc7, 0xf5, 0x83, 0x4c, + 0x30, 0xfb, 0x3, 0x71, 0x41, 0x1f, 0xe, 0x79, 0xc2, 0xf8, 0x7d, 0xc1, + 0x8a, 0x77, 0x12, 0xbc, 0xc5, 0x13, 0xd0, 0xf8, 0x6e, 0xf2, 0x15, 0x64, + 0x4d, 0x42, 0x70, 0x46, 0x1b, 0x22, 0x51, 0xc9, 0xf7, 0x2, 0xf7, 0x5a, + 0xf7, 0x12, 0xf7, 0xb, 0xf7, 0xe, 0xcc, 0xc1, 0x6b, 0x5c, 0xaf, 0x1f, + 0x78, 0x30, 0x6a, 0xa, 0x13, 0xb0, 0xb8, 0xf7, 0x73, 0x52, 0xa, 0x7f, + 0x4e, 0x5, 0x13, 0xd0, 0xb9, 0x4a, 0x5d, 0x9b, 0x55, 0x1b, 0xfb, 0x54, + 0xfb, 0xa, 0xfb, 0x38, 0xfb, 0x61, 0xfb, 0x15, 0xbd, 0x27, 0xf7, 0x2f, + 0xdb, 0xdf, 0xa8, 0xb8, 0xd2, 0x1f, 0xe, 0x3e, 0xa, 0xf8, 0xab, 0xc3, + 0x3, 0x80, 0x16, 0xf7, 0x87, 0x6, 0xf7, 0x48, 0xf7, 0x47, 0xd7, 0xf7, + 0xb6, 0xf7, 0x37, 0xfb, 0x0, 0xac, 0xfb, 0x18, 0x1f, 0xfb, 0x8b, 0x45, + 0xa, 0xdb, 0x5e, 0xa, 0x3a, 0x6, 0xf7, 0x1c, 0x16, 0xe6, 0x87, 0xa, + 0xf7, 0x5a, 0x85, 0xf7, 0x2, 0x9f, 0xfb, 0x3e, 0x1a, 0xfb, 0x42, 0x23, + 0xfb, 0x10, 0xfb, 0x4a, 0x1e, 0xe, 0x8b, 0xc1, 0xf7, 0x5b, 0x61, 0xa, + 0x1, 0x88, 0x16, 0xf8, 0x87, 0x6, 0xb1, 0xf7, 0x4f, 0x62, 0xa, 0x70, + 0xfb, 0x19, 0x5, 0xfb, 0xc4, 0x6, 0xb3, 0xf7, 0x5b, 0x5, 0xf7, 0x39, + 0x6, 0x7a, 0x3a, 0x51, 0xa, 0xba, 0xf7, 0x6d, 0x62, 0xa, 0x79, 0x39, + 0x5, 0xfb, 0x39, 0x6, 0xb4, 0xf7, 0x5d, 0x81, 0xa, 0x70, 0xfb, 0x1a, + 0x5, 0xc4, 0x6, 0xb1, 0xf7, 0x50, 0x5, 0xfc, 0x82, 0x45, 0xa, 0xdf, + 0x6, 0x2f, 0xfc, 0x5a, 0x6b, 0xa, 0xe, 0x8b, 0xc1, 0xf7, 0x5b, 0x61, + 0xa, 0x1, 0xe3, 0xc4, 0xf7, 0x54, 0xc3, 0xf7, 0x6, 0xc4, 0x3, 0x88, + 0x16, 0xf7, 0xa3, 0x6, 0x97, 0xc1, 0x55, 0xa, 0xb3, 0xf7, 0x5b, 0x5, + 0xf7, 0x3a, 0x6, 0x7d, 0x43, 0x51, 0xa, 0xb4, 0xf7, 0x5b, 0x62, 0xa, + 0x7c, 0x42, 0x5, 0xfb, 0x3a, 0x6, 0xb3, 0xf7, 0x5d, 0x5, 0xf7, 0xc0, + 0x6, 0x6e, 0xfb, 0x23, 0x5, 0xc4, 0x6, 0xb3, 0xf7, 0x59, 0x5, 0xfc, + 0x80, 0x45, 0xa, 0xdb, 0x6, 0x2f, 0xfc, 0x5a, 0x89, 0xa, 0xe, 0x79, + 0xc2, 0xf7, 0x39, 0xc2, 0xf7, 0xa0, 0xc2, 0x1, 0x9e, 0xc4, 0xf8, 0x2b, + 0xc3, 0x3, 0x34, 0xa, 0x3d, 0xa, 0xe, 0x8b, 0xc1, 0xf7, 0x60, 0xc1, + 0xf7, 0x58, 0xc1, 0x1, 0xcb, 0xc1, 0xf7, 0xa8, 0xc1, 0x3, 0x70, 0x16, + 0xf7, 0x6a, 0x2a, 0xa, 0x3b, 0x6, 0xb4, 0xf7, 0x60, 0x5, 0xf7, 0xa7, + 0x6, 0x63, 0xfb, 0x60, 0x5, 0x3c, 0x2d, 0xa, 0xf7, 0x68, 0x2a, 0xa, + 0x3c, 0x6, 0xe5, 0x87, 0xa, 0xda, 0x2a, 0xa, 0xfb, 0x68, 0x2d, 0xa, + 0xda, 0x6, 0x64, 0xfb, 0x58, 0x5, 0xfb, 0xa7, 0x6, 0xb1, 0xf7, 0x58, + 0x5, 0xdb, 0x2a, 0xa, 0xfb, 0x6a, 0x2d, 0xa, 0xdb, 0x6, 0x31, 0xfc, + 0x5a, 0x89, 0xa, 0xe, 0x3e, 0xa, 0xaf, 0x16, 0xf8, 0x2e, 0x47, 0xa, + 0xfb, 0x44, 0x6, 0xec, 0x87, 0xa, 0xf7, 0x40, 0x47, 0xa, 0xfc, 0x2a, + 0x45, 0xa, 0xf7, 0x43, 0x6, 0x2a, 0x58, 0xa, 0xfb, 0x43, 0x6, 0xe, + 0x79, 0xc1, 0xf8, 0x6b, 0xc2, 0x1, 0xa2, 0xc3, 0xf7, 0xec, 0xc1, 0x3, + 0x7b, 0xb4, 0x15, 0x65, 0xe2, 0xca, 0x76, 0xce, 0x1b, 0xf7, 0x22, 0xbb, + 0x7c, 0xa, 0xf7, 0x15, 0x36, 0xa, 0xfc, 0x12, 0x38, 0xa, 0xf7, 0x5b, + 0x6, 0x4b, 0xfb, 0xdc, 0x5, 0x3a, 0x7b, 0x5f, 0x4d, 0x2d, 0x1b, 0x71, + 0xfb, 0x1f, 0x91, 0xf7, 0xe, 0xa3, 0x1f, 0x9a, 0xe6, 0x71, 0xa, 0xe, + 0x3e, 0xa, 0xd7, 0xc1, 0xf7, 0xec, 0xcf, 0x3, 0x7b, 0x16, 0xf7, 0x6d, + 0x2a, 0xa, 0x39, 0x6, 0xab, 0xf7, 0x2d, 0xef, 0xdd, 0xa5, 0x5f, 0xb6, + 0x41, 0xae, 0x38, 0xa4, 0x33, 0x19, 0xf7, 0x2a, 0x2a, 0xa, 0xfb, 0x9, + 0x6, 0x76, 0xd2, 0x65, 0xdd, 0x62, 0xcc, 0x8, 0x8b, 0x76, 0xad, 0x82, + 0x9a, 0x1e, 0xf7, 0x81, 0xf7, 0x4f, 0x5, 0xcb, 0x43, 0xa, 0xd2, 0x6, + 0xfb, 0xbf, 0xfb, 0x7f, 0xc3, 0xf7, 0x7f, 0x5, 0xd0, 0x2a, 0xa, 0xfb, + 0x6b, 0x2d, 0xa, 0xe7, 0x6, 0x26, 0x58, 0xa, 0x3a, 0x6, 0xe, 0x3e, + 0xa, 0xf7, 0xb, 0xc3, 0x3, 0x8b, 0x4, 0xf8, 0x96, 0x6, 0xb9, 0xf7, + 0x87, 0x71, 0xa, 0x68, 0xfb, 0x51, 0x5, 0xfb, 0xba, 0x6, 0xe7, 0x87, + 0xa, 0xf7, 0x14, 0x2a, 0xa, 0xfb, 0xb9, 0x2d, 0xa, 0xf7, 0x0, 0x5e, + 0xa, 0xfb, 0x0, 0x6, 0xe, 0x3e, 0xa, 0x9f, 0xc3, 0xf7, 0xfc, 0xc3, + 0x3, 0x63, 0x16, 0xf7, 0x3c, 0x47, 0xa, 0x4b, 0x6, 0xe6, 0x87, 0xa, + 0x94, 0x6, 0xd4, 0xfc, 0xf, 0x5, 0xb7, 0x6, 0xf7, 0x73, 0xf8, 0xf, + 0x5, 0x96, 0x5e, 0xa, 0x4f, 0x5f, 0xa, 0xf7, 0x36, 0x2a, 0xa, 0x5c, + 0x6, 0xe6, 0x87, 0xa, 0xb9, 0x47, 0xa, 0xfb, 0x28, 0x6, 0xfb, 0x5e, + 0xfb, 0xec, 0x48, 0xf7, 0xec, 0x5, 0xfb, 0x2b, 0x5f, 0xa, 0xbb, 0x5e, + 0xa, 0x5b, 0x6, 0xe, 0x8a, 0xc2, 0xf8, 0x59, 0xc2, 0x1, 0x5e, 0x8a, + 0x15, 0xf7, 0x80, 0x36, 0xa, 0x28, 0x6, 0xe1, 0xf8, 0x41, 0xf7, 0x54, + 0xfc, 0x78, 0x5, 0xd6, 0x6, 0xf0, 0xf8, 0x90, 0x5, 0xd8, 0x36, 0xa, + 0xfb, 0x7b, 0x38, 0xa, 0xed, 0x6, 0x35, 0xfc, 0x44, 0xfb, 0x53, 0xf8, + 0x7b, 0x5, 0xfb, 0x31, 0x56, 0xa, 0xdd, 0x6, 0x31, 0xfc, 0x59, 0x5, + 0x3a, 0x6, 0xe, 0x79, 0xc2, 0xf8, 0x7c, 0xc2, 0x1, 0xad, 0xc2, 0xf8, + 0x38, 0xc3, 0x3, 0xad, 0xf7, 0x6c, 0x15, 0xfb, 0x19, 0xd5, 0x26, 0xf7, + 0x1c, 0xf7, 0x4b, 0xf7, 0x1e, 0xf7, 0x4f, 0xf7, 0x50, 0xee, 0x5c, 0xf7, + 0x10, 0xfb, 0x33, 0xfb, 0x5a, 0xfb, 0x13, 0xfb, 0x5c, 0xfb, 0x38, 0x1e, + 0xc2, 0x89, 0x15, 0xf7, 0x3, 0xdd, 0xf7, 0x5c, 0xf7, 0x43, 0xf7, 0x10, + 0xb2, 0x2e, 0x3c, 0xfb, 0x24, 0xfb, 0xb, 0xfb, 0x40, 0xfb, 0x1b, 0x20, + 0x50, 0xd9, 0xee, 0x1e, 0xe, 0x8b, 0xc1, 0xf7, 0x31, 0xc1, 0xf7, 0x87, + 0xc1, 0x1, 0xf6, 0xc5, 0xf7, 0xfa, 0xc6, 0x3, 0x9c, 0x16, 0xf7, 0xba, + 0x2a, 0xa, 0xfb, 0x31, 0x6, 0xab, 0xf7, 0x31, 0x5, 0xf7, 0x1a, 0x6, + 0xf7, 0x31, 0xe9, 0xcf, 0xf7, 0x27, 0xd2, 0x5c, 0xcc, 0xfb, 0x15, 0x1f, + 0xfb, 0xa7, 0x2d, 0xa, 0xdb, 0x6, 0x2e, 0x58, 0xa, 0x3c, 0x6, 0xf7, + 0x47, 0xf7, 0x67, 0x15, 0xbc, 0xf7, 0x87, 0x5, 0xf7, 0x1b, 0x6, 0xd0, + 0xca, 0x6b, 0x52, 0xfb, 0x11, 0x20, 0x6e, 0x4a, 0x1f, 0xe, 0xfb, 0x1e, + 0xf7, 0x41, 0xfb, 0x15, 0xf7, 0x15, 0x54, 0xc2, 0xf8, 0x7e, 0xc2, 0x12, + 0xae, 0xc7, 0xf8, 0x2f, 0xc6, 0x13, 0x5c, 0xd9, 0x3f, 0x15, 0x91, 0x54, + 0x5, 0xaa, 0xb4, 0xb2, 0x91, 0xb2, 0x1b, 0xaa, 0xaa, 0x7c, 0x80, 0xab, + 0x1f, 0x13, 0x9c, 0x82, 0xa6, 0xa6, 0x82, 0xa6, 0x1b, 0xae, 0xaf, 0x9b, + 0x9f, 0xa7, 0x1f, 0x7b, 0xba, 0x5, 0x7f, 0x73, 0x6f, 0x7d, 0x70, 0x1b, + 0x75, 0x75, 0x94, 0x94, 0x75, 0x1f, 0x94, 0x74, 0x74, 0x98, 0x70, 0x1b, + 0x7c, 0x7a, 0x8c, 0x86, 0x7a, 0x1f, 0x13, 0x3c, 0xa9, 0x9a, 0x8d, 0x8b, + 0x95, 0x95, 0x8, 0xf7, 0x5f, 0x8a, 0xf7, 0x12, 0xf7, 0x4a, 0xf7, 0x64, + 0x1a, 0xf7, 0x1, 0x5e, 0xf1, 0xfb, 0x33, 0xfb, 0x4f, 0xfb, 0x1f, 0xfb, + 0x5d, 0xfb, 0x4c, 0x23, 0xbd, 0x3e, 0xeb, 0x6e, 0x1e, 0x6a, 0x70, 0x6a, + 0x7a, 0x66, 0x7a, 0x8, 0x9c, 0xf7, 0xa3, 0x15, 0xf7, 0x2b, 0xf7, 0x1, + 0xf7, 0x47, 0xf7, 0x25, 0xf1, 0xc2, 0x4c, 0x36, 0xfb, 0x60, 0xfb, 0x26, + 0xfb, 0x1e, 0xfb, 0x0, 0x40, 0x39, 0xb0, 0xf7, 0xf, 0x1e, 0xe, 0x8b, + 0xc1, 0xf7, 0x45, 0xbf, 0xf7, 0x75, 0xc1, 0x1, 0xf7, 0x4, 0xc2, 0xf7, + 0xf9, 0xc3, 0x3, 0x9f, 0x16, 0xf7, 0x6c, 0x2a, 0xa, 0x3b, 0x6, 0xae, + 0xf7, 0x43, 0x5, 0xf7, 0x7, 0x6, 0xa8, 0x5c, 0xcc, 0xfb, 0x6, 0xa4, + 0x47, 0x8, 0xf7, 0x18, 0x2a, 0xa, 0x24, 0x6, 0x73, 0xc1, 0x60, 0xd6, + 0x6d, 0xbb, 0x8, 0xe5, 0x8e, 0xf7, 0x3, 0xb6, 0xf7, 0x33, 0x1a, 0xcb, + 0x59, 0xc9, 0x29, 0x1e, 0xfb, 0xbf, 0x2d, 0xa, 0xdc, 0x5e, 0xa, 0x3a, + 0x6, 0xf7, 0x4a, 0xf7, 0x79, 0x15, 0xb8, 0xf7, 0x75, 0x5, 0xf7, 0x24, + 0x6, 0xd6, 0xba, 0x6c, 0x60, 0xfb, 0x26, 0xfb, 0x1c, 0x86, 0x42, 0x1f, + 0xe, 0x77, 0xc5, 0xf8, 0x7b, 0xc2, 0x1, 0xf7, 0xc, 0xc7, 0xf7, 0xbc, + 0xc7, 0x3, 0x98, 0x7f, 0x15, 0xc5, 0x6, 0x95, 0xbf, 0x5, 0x65, 0xc1, + 0xd6, 0x75, 0xd5, 0x1b, 0xf7, 0x8, 0xf7, 0x1c, 0xbe, 0xf7, 0x5, 0xf7, + 0x5, 0x2d, 0x9f, 0x31, 0x95, 0x1f, 0x3d, 0x93, 0x2d, 0xaa, 0xcf, 0x1a, + 0xdf, 0xe3, 0xba, 0xf2, 0xc3, 0xbc, 0x6f, 0x68, 0xab, 0x1e, 0x7a, 0x3b, + 0x5, 0xc5, 0x6, 0xb1, 0xf7, 0x4f, 0x62, 0xa, 0x82, 0x63, 0x5, 0xa6, + 0x68, 0x58, 0xa3, 0x54, 0x1b, 0xfb, 0x3a, 0x2d, 0x3a, 0x20, 0xfb, 0x6, + 0xf7, 0xd, 0x6d, 0xe5, 0x7d, 0x1f, 0xc8, 0x80, 0xdf, 0x82, 0x43, 0x1a, + 0x47, 0x24, 0x67, 0x2f, 0x42, 0x41, 0xa1, 0xb5, 0x63, 0x1e, 0x9a, 0xd0, + 0x5, 0x50, 0x6, 0xe, 0x3e, 0xa, 0xf7, 0x54, 0xc2, 0x3, 0xc5, 0x16, + 0xf7, 0xc2, 0x2a, 0xa, 0xfb, 0x10, 0x6, 0xe5, 0x87, 0xa, 0xf7, 0x43, + 0x6, 0x6d, 0xfb, 0x2d, 0x6a, 0xa, 0xb4, 0xf7, 0x63, 0x5, 0xfc, 0x98, + 0x6, 0x62, 0xfb, 0x63, 0x6a, 0xa, 0xa9, 0xf7, 0x2d, 0x5, 0xf7, 0x43, + 0x6, 0x32, 0x58, 0xa, 0xfb, 0xf, 0x6, 0xe, 0x79, 0xbf, 0xf8, 0x6d, + 0xc2, 0x1, 0xd2, 0xc0, 0x3, 0xbf, 0xf8, 0x8f, 0x85, 0xa, 0x56, 0xfb, + 0x8c, 0x81, 0x46, 0x68, 0x1a, 0x22, 0xb3, 0x47, 0xf7, 0x16, 0xf7, 0x11, + 0xe2, 0xc4, 0xf7, 0x2d, 0xa8, 0x1e, 0x9f, 0xf4, 0x9e, 0xf4, 0x9f, 0xf4, + 0x8, 0xd8, 0x36, 0xa, 0xfb, 0x7c, 0x67, 0xa, 0xad, 0xae, 0x8b, 0xad, + 0x1b, 0x77, 0x22, 0x78, 0x23, 0x77, 0x22, 0x8, 0xfb, 0xe, 0x73, 0x3c, + 0x66, 0x3d, 0x1b, 0x32, 0x66, 0xb7, 0xdb, 0xbf, 0xb4, 0xf7, 0x49, 0x9f, + 0xf7, 0x8, 0x1f, 0xf5, 0x36, 0xa, 0xfb, 0x83, 0x6, 0xe, 0x93, 0x76, + 0xf8, 0x9c, 0xc2, 0x1, 0xf7, 0x31, 0x7e, 0x85, 0xa, 0xf7, 0xbb, 0xf8, + 0x9c, 0x5, 0xcb, 0x36, 0xa, 0xfb, 0x70, 0x38, 0xa, 0xe5, 0x6, 0xfb, + 0x99, 0xfc, 0x64, 0x3a, 0xf8, 0x64, 0x5, 0xe6, 0x46, 0xa, 0xfb, 0x77, + 0x38, 0xa, 0xd3, 0x6, 0xe, 0x93, 0x76, 0xf8, 0x9c, 0xc2, 0x1, 0xb1, + 0xc5, 0x3, 0x9c, 0x7e, 0x15, 0xcb, 0x6, 0xf7, 0x4b, 0xf8, 0x0, 0xbe, + 0xfc, 0x0, 0x5, 0xc6, 0x6, 0xf7, 0x32, 0xf8, 0x9c, 0x5, 0xb7, 0x46, + 0xa, 0xfb, 0x5d, 0x56, 0xa, 0xf2, 0x6, 0xfb, 0xe, 0xfc, 0x36, 0x58, + 0xf8, 0x0, 0x5, 0x63, 0x6, 0xfb, 0x4f, 0xfc, 0x2, 0xaf, 0xf8, 0x38, + 0x5, 0xef, 0x36, 0xa, 0xfb, 0x5d, 0x56, 0xa, 0xba, 0x6, 0xe, 0x3e, + 0xa, 0x71, 0xf7, 0x76, 0xf7, 0x9, 0xf7, 0x6a, 0x3, 0x71, 0x16, 0xf7, + 0x76, 0x2a, 0xa, 0x2b, 0x6, 0xf7, 0x53, 0xf7, 0x50, 0xf7, 0x0, 0xfb, + 0x50, 0x5, 0x35, 0x2d, 0xa, 0xf7, 0x6a, 0x2a, 0xa, 0x4a, 0x6, 0xfb, + 0x18, 0xf7, 0x7b, 0xf7, 0x5f, 0xf7, 0x73, 0x5, 0xce, 0x2a, 0xa, 0xfb, + 0x55, 0x2d, 0xa, 0xca, 0x6, 0xfb, 0x37, 0xfb, 0x49, 0x2c, 0xf7, 0x49, + 0x5, 0xd8, 0x2a, 0xa, 0xfb, 0x64, 0x45, 0xa, 0xcf, 0x6, 0xf7, 0x9, + 0xfb, 0x73, 0xfb, 0x79, 0xfb, 0x7b, 0x5, 0x49, 0x6, 0xe, 0x3e, 0xa, + 0xb4, 0x16, 0xf7, 0xc8, 0x2a, 0xa, 0xfb, 0x11, 0x6, 0xab, 0xf7, 0x42, + 0xf7, 0x7f, 0xf7, 0xac, 0x5, 0xcf, 0x2a, 0xa, 0xfb, 0x5b, 0x2d, 0xa, + 0xd2, 0x6, 0xfb, 0x54, 0xfb, 0x77, 0x27, 0xf7, 0x77, 0x5, 0xd3, 0x43, + 0xa, 0xd1, 0x6, 0xf7, 0xe, 0xfb, 0xac, 0x6b, 0xfb, 0x42, 0x5, 0xfb, + 0x12, 0x6, 0xe, 0x3e, 0xa, 0xba, 0xd3, 0xf7, 0xda, 0xc0, 0x3, 0xb1, + 0x16, 0xf8, 0x38, 0x6, 0xb3, 0xf7, 0x5f, 0x5, 0x56, 0x6, 0x6e, 0xfb, + 0x29, 0x5, 0xfb, 0xbd, 0x6, 0xf8, 0x46, 0xf8, 0x5d, 0x94, 0xbe, 0x5, + 0xfc, 0x19, 0x6, 0x66, 0xfb, 0x50, 0x5, 0xbe, 0x6, 0xa5, 0xf7, 0x1a, + 0x5, 0xf7, 0xa0, 0x6, 0xfc, 0x46, 0xfc, 0x5b, 0x5, 0xe, 0xfb, 0x0, + 0xc1, 0xf9, 0x2, 0xc1, 0x1, 0xf7, 0x1c, 0xfb, 0x0, 0x15, 0xf7, 0x4e, + 0x2a, 0xa, 0xfb, 0x19, 0x6, 0xf7, 0xc, 0xf9, 0x2, 0x5, 0xf7, 0x19, + 0x2a, 0xa, 0xfb, 0x4e, 0x6, 0xe, 0x23, 0xf9, 0x60, 0xfd, 0x33, 0x76, + 0xf9, 0x59, 0x77, 0x12, 0x13, 0x60, 0xf8, 0xb, 0xfb, 0xd, 0x15, 0x13, + 0x80, 0xba, 0x9c, 0x5, 0x13, 0x60, 0xfb, 0x5a, 0xf9, 0x71, 0x5, 0x13, + 0x80, 0x5c, 0x7a, 0x5, 0xe, 0xfb, 0x0, 0xc1, 0xf9, 0x2, 0xc1, 0x1, + 0xf7, 0x27, 0x55, 0x15, 0x80, 0x55, 0x5, 0xf7, 0x4e, 0x6, 0xf7, 0x22, + 0xf9, 0x6e, 0x5, 0xfb, 0x4e, 0x2d, 0xa, 0xf7, 0x19, 0x6, 0xfb, 0xc, + 0xfd, 0x2, 0x5, 0xe, 0xf7, 0xf7, 0xf7, 0x9f, 0x12, 0xf2, 0xf8, 0x27, + 0x17, 0xe9, 0xf7, 0xf6, 0x15, 0xdc, 0xa6, 0xe1, 0xc6, 0xce, 0xc4, 0xb9, + 0x4f, 0xc1, 0x53, 0xd0, 0x71, 0x94, 0xba, 0x18, 0x3b, 0xd7, 0x7c, 0xb8, + 0x78, 0xee, 0x8, 0x58, 0x6, 0x13, 0x40, 0x58, 0x2d, 0x3c, 0x54, 0xfb, + 0x0, 0x43, 0x8, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x90, 0x40, 0x15, 0x81, + 0x59, 0x5, 0xf8, 0xed, 0x6, 0x95, 0xbd, 0x5, 0xe, 0x65, 0xa, 0xf7, + 0x61, 0xf8, 0xeb, 0x15, 0xf7, 0x46, 0x25, 0x97, 0xaa, 0xfb, 0x31, 0x79, + 0xa, 0xf8, 0x20, 0x87, 0x15, 0xf7, 0x1f, 0x36, 0xa, 0x36, 0x6, 0xbf, + 0xf7, 0x97, 0x8b, 0x9e, 0x9b, 0x1a, 0xc7, 0x5a, 0xaf, 0x25, 0x46, 0x36, + 0x77, 0x73, 0x4b, 0x1e, 0x39, 0xa, 0xc8, 0xc1, 0x8c, 0x54, 0x77, 0x87, + 0x5c, 0x85, 0x73, 0x1f, 0x92, 0x5f, 0x5a, 0x92, 0x5a, 0x1b, 0xfb, 0x45, + 0x41, 0x38, 0x3f, 0x52, 0xb9, 0x56, 0xe6, 0xd8, 0xda, 0xaf, 0xc0, 0xcd, + 0x1f, 0x98, 0xd2, 0x15, 0x50, 0x4b, 0x3e, 0x5d, 0x38, 0x1b, 0x56, 0x66, + 0xa8, 0xab, 0xdb, 0xf7, 0x7, 0x9c, 0xdb, 0x40, 0xa, 0x7c, 0xc2, 0x5f, + 0xc3, 0xf7, 0xe8, 0xc3, 0xf7, 0x12, 0xc2, 0x12, 0xf8, 0xb0, 0xc5, 0x13, + 0x78, 0x8d, 0x87, 0x15, 0xf7, 0x21, 0x6, 0x9a, 0xdb, 0x5, 0x13, 0xb8, + 0x7b, 0x96, 0xa8, 0x40, 0xf7, 0x14, 0x1b, 0xf7, 0x33, 0xf7, 0x5, 0xf7, + 0x18, 0xf7, 0x2f, 0xf7, 0x7, 0x32, 0xc8, 0x30, 0xfb, 0x1, 0x46, 0x56, + 0x72, 0x75, 0x1f, 0xbe, 0xf7, 0x97, 0x66, 0xa, 0xe0, 0x6, 0x13, 0x78, + 0x24, 0xfc, 0x9e, 0x5, 0x35, 0x6, 0xf7, 0x48, 0xf7, 0x45, 0x15, 0xf5, + 0xa0, 0xed, 0xc4, 0xe4, 0x1b, 0xea, 0xb7, 0x4c, 0x48, 0x1f, 0x13, 0xb8, + 0xfb, 0xe, 0xfb, 0x1, 0x27, 0x26, 0x3a, 0x3a, 0xcb, 0xf7, 0x11, 0xa4, + 0x1e, 0xe, 0x7c, 0xc0, 0xf7, 0xf0, 0xc2, 0x12, 0xbc, 0xc5, 0xf7, 0xf5, + 0xc2, 0x17, 0xf8, 0x71, 0xf7, 0x9, 0x15, 0x76, 0x6d, 0x31, 0x51, 0x3a, + 0x1b, 0xfb, 0xe, 0x5c, 0xcd, 0xc8, 0x1f, 0x13, 0x50, 0xf7, 0x5, 0xe8, + 0xf7, 0x0, 0xf7, 0x17, 0xc4, 0xbe, 0x7c, 0x67, 0xaf, 0x1e, 0x7c, 0x3c, + 0x6a, 0xa, 0x13, 0xe0, 0xaf, 0xf7, 0x4d, 0x52, 0xa, 0x82, 0x5c, 0x5, + 0xa9, 0x63, 0x5d, 0x9c, 0x51, 0x1b, 0xfb, 0x5b, 0x2c, 0xfb, 0x29, 0xfb, + 0x15, 0xfb, 0x5, 0xe5, 0x4a, 0xf7, 0x2, 0xe8, 0xd8, 0xab, 0xb9, 0xd0, + 0x1f, 0xe, 0x7c, 0xc2, 0x61, 0xc2, 0xf7, 0xe7, 0xc2, 0xf7, 0x13, 0xc2, + 0x12, 0xa1, 0xc5, 0x13, 0x78, 0xf8, 0x1f, 0x89, 0x15, 0xf7, 0x1f, 0x36, + 0xa, 0x39, 0x6, 0xf7, 0x6, 0xf8, 0xd4, 0x5, 0xfb, 0x58, 0x38, 0xa, + 0xf7, 0x20, 0x6, 0x65, 0xfb, 0x57, 0x5, 0xc9, 0x64, 0x46, 0x91, 0x54, + 0x1b, 0xfb, 0x33, 0xfb, 0x14, 0xfb, 0x16, 0xfb, 0x2c, 0x1f, 0x13, 0xb8, + 0x2a, 0xca, 0x38, 0xf7, 0x14, 0xd4, 0xd8, 0xac, 0xc9, 0xbb, 0x1e, 0x13, + 0x78, 0xfb, 0xdf, 0xf7, 0x0, 0x15, 0xf4, 0xf3, 0xee, 0xf7, 0x3, 0xf7, + 0x0, 0xb2, 0x53, 0x52, 0x1e, 0x13, 0xb8, 0xfb, 0xd, 0xfb, 0x1, 0xfb, + 0xa, 0xfb, 0x0, 0x26, 0x5f, 0xd1, 0xd9, 0x1e, 0xe, 0x7c, 0xc0, 0xf7, + 0x31, 0xc2, 0xf7, 0x21, 0xbd, 0x1, 0xe4, 0xf7, 0x57, 0x15, 0xf8, 0x3b, + 0x6, 0x90, 0xa4, 0x8d, 0xa4, 0x8a, 0xa3, 0x8, 0xea, 0x88, 0x51, 0xd8, + 0xfb, 0x17, 0x1b, 0xfb, 0x35, 0xfb, 0x1e, 0xfb, 0x19, 0xfb, 0x3d, 0x35, + 0xd3, 0x47, 0xf7, 0x21, 0xde, 0xe5, 0xa5, 0xaf, 0xd4, 0x1f, 0x84, 0xbf, + 0x5, 0x60, 0x32, 0x38, 0x79, 0x5c, 0x1b, 0xfb, 0x7, 0x30, 0xc0, 0xf3, + 0xae, 0x1f, 0x9c, 0xc3, 0x15, 0xc6, 0x9f, 0xda, 0xdc, 0xf7, 0x7, 0x1b, + 0xf7, 0x21, 0x92, 0xfb, 0x8, 0x72, 0x86, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, + 0xd9, 0xc3, 0xf7, 0x1e, 0xc2, 0x1, 0xf7, 0x26, 0xc5, 0x3, 0xa5, 0x16, + 0xf8, 0x18, 0x36, 0xa, 0xfb, 0x71, 0x6, 0xcb, 0xf7, 0xd9, 0x5, 0xf7, + 0x71, 0x3c, 0xa, 0xfb, 0x71, 0x6, 0xf7, 0x11, 0xab, 0x87, 0x98, 0xf7, + 0x9, 0x1b, 0xb2, 0xc3, 0x85, 0x85, 0xaf, 0x1f, 0x9e, 0xc1, 0x5, 0x90, + 0x6a, 0x49, 0x93, 0x61, 0x1b, 0x3d, 0x31, 0x82, 0x3f, 0x79, 0x1f, 0x71, + 0xfb, 0x0, 0x5, 0xfb, 0x1, 0x6, 0x81, 0x53, 0x5, 0xf7, 0x1, 0x6, + 0x4a, 0xfb, 0xd9, 0x57, 0xa, 0xe, 0xfb, 0x31, 0xbd, 0xf7, 0x38, 0xbe, + 0xf7, 0xae, 0xbe, 0x1, 0xab, 0xc3, 0xf7, 0xca, 0xbf, 0x3, 0x3f, 0xa, + 0x30, 0xa, 0xe, 0x8b, 0xc2, 0xf7, 0xca, 0xc2, 0xf7, 0x2e, 0xc2, 0x1, + 0x9f, 0x16, 0xf7, 0x72, 0x36, 0xa, 0x38, 0x6, 0xbf, 0xf7, 0x99, 0x5, + 0xb6, 0xc3, 0xd2, 0xb7, 0xcc, 0x1b, 0xdf, 0x90, 0x59, 0x54, 0x81, 0x1f, + 0x5a, 0xfb, 0x87, 0x5, 0x37, 0x38, 0xa, 0xf7, 0x6f, 0x36, 0xa, 0x3a, + 0x6, 0xc0, 0xf7, 0x9d, 0x5, 0xca, 0x97, 0x85, 0xd6, 0xfb, 0xa, 0x1b, + 0x45, 0x40, 0x66, 0x5e, 0x4f, 0x1f, 0xba, 0xf7, 0x91, 0x66, 0xa, 0xe2, + 0x6, 0x25, 0xfc, 0x9b, 0x7b, 0xa, 0xe, 0x8b, 0xc2, 0xf7, 0xda, 0xc2, + 0xed, 0xf7, 0xf, 0x1, 0xf7, 0xe6, 0xf8, 0xaa, 0x15, 0xd1, 0x6, 0xa4, + 0xf7, 0xf, 0x5, 0x44, 0x6, 0xfb, 0xb8, 0xfd, 0x25, 0x15, 0xf8, 0x2d, + 0x36, 0xa, 0xfb, 0x42, 0x6, 0xd4, 0xf8, 0x11, 0x5, 0xfb, 0x5b, 0x38, + 0xa, 0xf7, 0x25, 0x6, 0x4b, 0xfb, 0xda, 0x5, 0xfb, 0x47, 0x6, 0xe, + 0xfb, 0x31, 0xc1, 0xf8, 0x84, 0xbf, 0xe9, 0xf7, 0xa, 0x1, 0xf8, 0x50, + 0xf8, 0xaf, 0x54, 0xa, 0xfc, 0x23, 0xfd, 0x80, 0x15, 0x76, 0x59, 0x5, + 0x82, 0xbe, 0xbe, 0x84, 0xbb, 0x1b, 0xf6, 0xe0, 0xb6, 0xf7, 0x12, 0xaf, + 0x1f, 0xea, 0xf8, 0x45, 0x5, 0xfb, 0xe2, 0x82, 0xa, 0xf7, 0xa5, 0x6, + 0x39, 0xfc, 0x3, 0x5, 0xfb, 0x9, 0x61, 0x46, 0x7f, 0x5c, 0x1b, 0x51, + 0x5c, 0x91, 0x91, 0x68, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, 0xd9, 0xc2, 0xf7, + 0x1f, 0xc2, 0x1, 0x97, 0x16, 0xf7, 0x20, 0x6, 0xb1, 0xf7, 0x5a, 0xcd, + 0xb5, 0xad, 0x6a, 0xcd, 0x31, 0xb0, 0x4d, 0x19, 0x53, 0x38, 0xa, 0xf7, + 0x6a, 0x46, 0xa, 0x2b, 0x6, 0x6d, 0xba, 0x6d, 0xc5, 0x67, 0xb3, 0x4f, + 0xcf, 0x18, 0xf7, 0x47, 0xf7, 0x4, 0x5, 0xed, 0x77, 0xa, 0xfb, 0x70, + 0x6, 0x82, 0x54, 0x5, 0xb9, 0x6, 0xfb, 0x5f, 0xfb, 0x13, 0xd5, 0xf8, + 0xc, 0x66, 0xa, 0xe1, 0x6, 0x26, 0xfc, 0x9b, 0x5, 0x36, 0x6, 0xe, + 0x8b, 0xc2, 0xf8, 0x9b, 0xc2, 0x1, 0xe5, 0x16, 0xf8, 0x2d, 0x36, 0xa, + 0xfb, 0x43, 0x6, 0xf7, 0x1, 0xf8, 0xd2, 0x5, 0xfb, 0x6b, 0x38, 0xa, + 0xf7, 0x34, 0x6, 0x29, 0xfc, 0x9b, 0x5, 0xfb, 0x47, 0x6, 0xe, 0x8b, + 0xc1, 0xf7, 0xe0, 0xc2, 0x7e, 0x77, 0x12, 0x13, 0xc0, 0x91, 0x16, 0xf7, + 0x11, 0x47, 0xa, 0x49, 0x6, 0xc5, 0xf7, 0xa2, 0x5, 0xa7, 0xa6, 0xac, + 0xad, 0xbb, 0x1b, 0xbc, 0x96, 0x6d, 0x72, 0x7d, 0x88, 0x7f, 0x8a, 0x87, + 0x1f, 0x4c, 0xfb, 0xc1, 0x5, 0xf7, 0x12, 0x2a, 0xa, 0x49, 0x6, 0xc2, + 0xf7, 0x97, 0x5, 0x96, 0x8d, 0xca, 0xcb, 0xc0, 0x1b, 0xb3, 0x97, 0x77, + 0x72, 0x78, 0x86, 0x74, 0x87, 0x78, 0x1f, 0x50, 0xfb, 0xae, 0x5, 0xf7, + 0x7, 0x2a, 0xa, 0x53, 0x6, 0xc5, 0xf7, 0xa5, 0x8d, 0x9b, 0x99, 0x1a, + 0xba, 0x6d, 0xb0, 0x4c, 0x55, 0x5a, 0x69, 0x67, 0x66, 0x1e, 0xb0, 0x83, + 0x6e, 0xac, 0x55, 0x1b, 0x5b, 0x64, 0x69, 0x74, 0x68, 0x1f, 0x13, 0xa0, + 0x93, 0xb7, 0x5, 0xfb, 0x7, 0x5f, 0xa, 0xc3, 0x6, 0xe, 0x8b, 0xc1, + 0xf7, 0xc8, 0xc2, 0x6d, 0xc1, 0x12, 0xf7, 0x7, 0xc1, 0xf7, 0xa5, 0xc1, + 0x13, 0xd8, 0x9f, 0x16, 0xf7, 0x72, 0x2a, 0xa, 0x37, 0x6, 0xbb, 0xf7, + 0x86, 0x5, 0x13, 0xb8, 0xbf, 0xc9, 0xe1, 0xb2, 0xd6, 0x1b, 0xb5, 0x97, + 0x79, 0x6a, 0x82, 0x8a, 0x81, 0x89, 0x80, 0x1f, 0x5a, 0xfb, 0x90, 0x5, + 0x38, 0x2d, 0xa, 0xf7, 0x70, 0x2a, 0xa, 0x38, 0x6, 0xbd, 0xf7, 0x91, + 0x5, 0x8f, 0x9e, 0x8c, 0x9c, 0x9b, 0x1a, 0xbf, 0x62, 0xa9, 0x40, 0x45, + 0x3f, 0x63, 0x5e, 0x4f, 0x1e, 0x99, 0xd3, 0x5, 0xfb, 0x1e, 0x38, 0xa, + 0xde, 0x6, 0x4d, 0xfb, 0xd3, 0x5, 0x37, 0x6, 0xe, 0x7c, 0xc1, 0xf7, + 0xf0, 0xc1, 0x1, 0xc4, 0xc2, 0xf8, 0xb, 0xc3, 0x3, 0xc4, 0xf7, 0x3b, + 0x15, 0xfb, 0x0, 0xd5, 0x41, 0xf7, 0x17, 0xf7, 0x39, 0xf7, 0x8, 0xf7, + 0x13, 0xf7, 0x2c, 0xde, 0x5d, 0xe9, 0xfb, 0x2b, 0xfb, 0x28, 0xfb, 0x21, + 0xfb, 0x2, 0xfb, 0x38, 0x1e, 0xc2, 0x92, 0x15, 0xf7, 0x1, 0xea, 0xf3, + 0xf7, 0x14, 0xf7, 0xd, 0xaa, 0x40, 0x51, 0xfb, 0x9, 0x2b, 0x29, 0xfb, + 0xc, 0xfb, 0x1, 0x59, 0xcd, 0xd0, 0x1e, 0xe, 0xfb, 0x31, 0xbe, 0xf7, + 0xa, 0xbf, 0xf7, 0xc5, 0xbf, 0x6a, 0xc0, 0x12, 0xf8, 0x90, 0xc4, 0x13, + 0xd8, 0x6a, 0x21, 0x15, 0x80, 0x58, 0x5, 0xf7, 0xbb, 0x78, 0xa, 0xfb, + 0x30, 0x6, 0xb2, 0xf7, 0x4d, 0x5, 0x65, 0xa3, 0xbd, 0x6e, 0xe7, 0x1b, + 0xf7, 0x20, 0xf7, 0x6, 0xf7, 0xa, 0xf7, 0x27, 0xe7, 0x4d, 0xd3, 0x21, + 0x33, 0x50, 0x60, 0x5f, 0x5d, 0x1f, 0x13, 0xe8, 0x9a, 0xce, 0x5, 0xfb, + 0x1f, 0x6, 0x81, 0x57, 0x5, 0xdf, 0x6, 0x25, 0xfc, 0x6f, 0x5, 0xf7, + 0xb, 0xf7, 0xb2, 0x15, 0x13, 0xd8, 0xed, 0xe5, 0xf7, 0x2, 0xf7, 0xe, + 0xf3, 0xa0, 0x4d, 0x55, 0xfb, 0xe, 0x2b, 0x35, 0x2d, 0x37, 0x4c, 0xb2, + 0xd8, 0x1e, 0xe, 0xfb, 0x31, 0xbf, 0xf7, 0xb, 0xbe, 0xf7, 0xcd, 0xbe, + 0x63, 0xbf, 0x12, 0xb4, 0xc4, 0x13, 0xe8, 0xf7, 0x6b, 0x22, 0x15, 0x80, + 0x57, 0x5, 0xf7, 0xbf, 0x6, 0x96, 0xbf, 0x5, 0x35, 0x6, 0xf4, 0xf8, + 0x77, 0x5, 0xe0, 0x6, 0x95, 0xbe, 0x5, 0xfb, 0x20, 0x6, 0x78, 0x42, + 0x5, 0x13, 0xd8, 0xb2, 0x75, 0x53, 0xb9, 0x36, 0x1b, 0xfb, 0x1b, 0xfb, + 0x16, 0xfb, 0x6, 0xfb, 0x24, 0x27, 0xcc, 0x46, 0xf7, 0x2, 0xcb, 0xd2, + 0x98, 0xc1, 0xc7, 0x1f, 0x65, 0xfb, 0x4e, 0x5, 0xfb, 0xa7, 0xf7, 0xbf, + 0x15, 0xd3, 0xbc, 0xf7, 0xf, 0xf7, 0x2a, 0xef, 0xba, 0x49, 0x3f, 0xfb, + 0xb, 0xfb, 0x12, 0x4c, 0x32, 0x40, 0x53, 0xbb, 0xdc, 0x1e, 0xe, 0x8b, + 0xc1, 0xf7, 0xe2, 0xc1, 0x1, 0xf7, 0x32, 0xc4, 0x3, 0x9f, 0x16, 0xf7, + 0xfe, 0x2a, 0xa, 0xfb, 0x46, 0x6, 0xb4, 0xf7, 0x64, 0x5, 0xf2, 0xf7, + 0x18, 0xbc, 0xa2, 0xc1, 0x1b, 0xa4, 0xa0, 0x85, 0x69, 0x8c, 0x1f, 0xc4, + 0x90, 0x5, 0xbe, 0x8c, 0x79, 0xb0, 0x51, 0x1b, 0x2a, 0x3e, 0x4c, 0x54, + 0x3f, 0x1f, 0x9f, 0xf4, 0x5, 0xfb, 0x4c, 0x5f, 0xa, 0xf7, 0x13, 0x6, + 0x4a, 0xfb, 0xd4, 0x5, 0xfb, 0x13, 0x6, 0xe, 0x7c, 0xc1, 0xf7, 0xf0, + 0xc1, 0x1, 0xf7, 0xa, 0xca, 0xf7, 0xaa, 0xc5, 0x3, 0xba, 0x7c, 0x15, + 0xc4, 0x3c, 0xa, 0x72, 0xb2, 0xbe, 0x6c, 0xdd, 0x1b, 0xf7, 0x10, 0xf5, + 0xba, 0xf3, 0xcc, 0x52, 0xa5, 0x53, 0x94, 0x1f, 0x54, 0x94, 0xfb, 0x3c, + 0x9c, 0xbf, 0x1a, 0xd8, 0xea, 0x87, 0xbf, 0xc4, 0xbf, 0x71, 0x70, 0xb1, + 0x1e, 0x81, 0x5a, 0x51, 0xa, 0xab, 0xf7, 0x30, 0x71, 0xa, 0x80, 0x5b, + 0x5, 0xa5, 0x62, 0x58, 0xa1, 0x51, 0x1b, 0xfb, 0x19, 0x36, 0x67, 0x2a, + 0x42, 0xf7, 0x21, 0x60, 0xd6, 0x85, 0x1f, 0xb9, 0x87, 0xda, 0x83, 0x5b, + 0x1a, 0x30, 0xfb, 0x19, 0x8f, 0x62, 0x4a, 0x50, 0xa8, 0xb2, 0x6a, 0x1e, + 0x95, 0xbb, 0x62, 0xa, 0xe, 0x7c, 0xc2, 0xf7, 0xe4, 0xc2, 0xf7, 0x16, + 0x77, 0x1, 0xf7, 0x17, 0xc6, 0x3, 0xf7, 0x5, 0xf8, 0xc, 0x15, 0xd4, + 0x6, 0x54, 0xfb, 0xa7, 0x8b, 0x7f, 0x7f, 0x1a, 0x3d, 0x8c, 0xe9, 0x7d, + 0xb9, 0x1b, 0xd8, 0xdd, 0xa8, 0xa6, 0xd2, 0x1f, 0x8f, 0xc1, 0x5, 0x77, + 0x51, 0x37, 0x68, 0x45, 0x1b, 0x51, 0x5d, 0x92, 0xc7, 0x1f, 0xbf, 0xf7, + 0xa1, 0x5, 0xf7, 0x93, 0x77, 0xa, 0xfb, 0x93, 0x6, 0xa5, 0xf7, 0x16, + 0x71, 0xa, 0x71, 0xfb, 0x16, 0x5, 0x42, 0x6, 0xe, 0x7c, 0xc0, 0x63, + 0xc1, 0xf7, 0xd4, 0xc1, 0x12, 0x13, 0xa0, 0xcb, 0xf8, 0x8, 0x85, 0xa, + 0x58, 0xfb, 0x96, 0x8a, 0x80, 0x81, 0x1a, 0x45, 0xc2, 0x65, 0xd7, 0xb2, + 0xc0, 0x9c, 0xd2, 0xe3, 0x1e, 0x13, 0x60, 0x7c, 0x40, 0x5, 0xf7, 0x1a, + 0x2a, 0xa, 0x3a, 0x6, 0xd3, 0xf8, 0xa, 0x55, 0xa, 0x82, 0x55, 0x5, + 0xdc, 0x6, 0x5e, 0xfb, 0x7a, 0x5, 0x13, 0xa0, 0x59, 0x5b, 0x4d, 0x55, + 0x4d, 0x1b, 0x56, 0x62, 0xa1, 0xb2, 0x90, 0x8b, 0x90, 0x8c, 0x90, 0x1f, + 0x9e, 0xf3, 0x9d, 0xf3, 0x9e, 0xf3, 0x8, 0xfb, 0x1b, 0x6, 0xe, 0x96, + 0x76, 0xf8, 0x11, 0xc2, 0x1, 0xf7, 0x52, 0x81, 0x15, 0xcc, 0x6, 0xf7, + 0x8d, 0xf8, 0x11, 0x5, 0xdc, 0x77, 0xa, 0xfb, 0x6a, 0x67, 0xa, 0xd5, + 0x6, 0xfb, 0x68, 0xfb, 0xd7, 0x38, 0xf7, 0xd7, 0x5, 0xd7, 0x77, 0xa, + 0xfb, 0x72, 0x67, 0xa, 0xe2, 0x6, 0xe, 0x96, 0x76, 0xf8, 0x11, 0xc2, + 0x1, 0xcb, 0xc0, 0x3, 0xdc, 0x81, 0x15, 0xcb, 0x6, 0xf7, 0x11, 0xf7, + 0x9b, 0xaa, 0xfb, 0x9b, 0x5, 0xc8, 0x6, 0xf7, 0x44, 0xf8, 0x11, 0x5, + 0xb0, 0x77, 0xa, 0xfb, 0x32, 0x38, 0xa, 0xd3, 0x6, 0xfb, 0x23, 0xfb, + 0xc5, 0x6b, 0xf7, 0xb2, 0x5, 0x5b, 0x6, 0xfb, 0x1b, 0xfb, 0xb0, 0x71, + 0xf7, 0xc3, 0x5, 0xd4, 0x6, 0x94, 0xc2, 0x5, 0xfb, 0x36, 0x67, 0xa, + 0xac, 0x6, 0xe, 0x8b, 0xc1, 0xf7, 0xd3, 0xc0, 0x1, 0x7a, 0x16, 0xf7, + 0x68, 0x47, 0xa, 0x48, 0x6, 0xf7, 0x3b, 0xf7, 0x16, 0xf7, 0x2, 0xfb, + 0x16, 0x5, 0x4c, 0x2d, 0xa, 0xf7, 0x69, 0x47, 0xa, 0x3b, 0x6, 0xfb, + 0x21, 0xf7, 0x38, 0xf7, 0x48, 0xf7, 0x2f, 0x5, 0xdc, 0x6, 0x95, 0xc0, + 0x5, 0xfb, 0x55, 0x68, 0xa, 0xb6, 0x6, 0xfb, 0x1f, 0xfb, 0xc, 0x30, + 0xf7, 0xc, 0x5, 0xbf, 0x6, 0x95, 0xc0, 0x5, 0xfb, 0x5e, 0x68, 0xa, + 0xdb, 0x6, 0xf7, 0xd, 0xfb, 0x2e, 0xfb, 0x64, 0xfb, 0x39, 0x5, 0x3e, + 0x6, 0xe, 0xfb, 0x31, 0xbe, 0xf8, 0x75, 0xbe, 0x1, 0x6c, 0x21, 0x15, + 0x7f, 0x58, 0x5, 0xf7, 0xa2, 0x78, 0xa, 0x32, 0x6, 0xf8, 0x35, 0xf8, + 0x75, 0x5, 0xce, 0x78, 0xa, 0xfb, 0x53, 0x6, 0x80, 0x58, 0x5, 0xc7, + 0x6, 0xfb, 0x7c, 0xfb, 0xa1, 0x21, 0xf7, 0xa1, 0x5, 0xce, 0x78, 0xa, + 0xfb, 0x5f, 0x6, 0x80, 0x58, 0x5, 0xd3, 0x6, 0xf7, 0x13, 0xfb, 0xd2, + 0xfb, 0x22, 0xfb, 0x37, 0x5, 0xe, 0x8b, 0xc1, 0xf7, 0xd2, 0xc1, 0x1, + 0xc0, 0x16, 0xf8, 0x2d, 0x6, 0xaa, 0xf7, 0x1a, 0x52, 0xa, 0x76, 0x3b, + 0x5, 0xfb, 0xa7, 0x6, 0xf8, 0x1f, 0xf7, 0xd6, 0x95, 0xbd, 0x5, 0xfc, + 0x1f, 0x6, 0x6b, 0xfb, 0x18, 0x5, 0xc1, 0x6, 0xa2, 0xd9, 0x5, 0xf7, + 0x98, 0x6, 0xfc, 0x1e, 0xfb, 0xd5, 0x5, 0xe, 0xfb, 0x70, 0xc0, 0xf9, + 0xf1, 0xc0, 0x1, 0xf7, 0x53, 0xba, 0x3, 0xf7, 0xa, 0xf7, 0x81, 0x15, + 0xbe, 0x73, 0x9e, 0x78, 0x8a, 0x53, 0x8, 0x74, 0x86, 0x6d, 0x82, 0x65, + 0x1e, 0x7a, 0x3b, 0x84, 0x55, 0x65, 0x1a, 0x4c, 0xb1, 0x7b, 0xe4, 0x7b, + 0x1e, 0x95, 0xc0, 0x5, 0x59, 0x93, 0x67, 0x96, 0xad, 0x1a, 0xa9, 0x92, + 0xbb, 0xa0, 0xde, 0x1e, 0x91, 0xa4, 0x8f, 0xb9, 0xb5, 0x1a, 0xb5, 0x7e, + 0xb4, 0x6e, 0xa1, 0x1e, 0xe6, 0xc2, 0xa1, 0xf7, 0x0, 0x92, 0xb9, 0x8, + 0xf7, 0x5f, 0xb0, 0xab, 0x9c, 0xdf, 0x1b, 0x97, 0xc0, 0x5, 0xfb, 0x23, + 0x74, 0x5d, 0xfb, 0x71, 0x59, 0x1f, 0x6f, 0xfb, 0x14, 0x72, 0x6e, 0x38, + 0x6a, 0x8, 0xe, 0xfb, 0x79, 0x76, 0xfa, 0x7c, 0x77, 0x1, 0xf7, 0x3c, + 0xbe, 0x3, 0xf7, 0x3c, 0xfb, 0x8e, 0x15, 0xbe, 0x6, 0xf7, 0x68, 0xfa, + 0x7c, 0x5, 0x58, 0x6, 0xe, 0xfb, 0x71, 0xc0, 0xf9, 0xf1, 0xc0, 0x1, + 0xf7, 0xaf, 0xbe, 0x3, 0xf8, 0x75, 0xf7, 0xb5, 0x15, 0x58, 0xa3, 0x78, + 0x9e, 0x8c, 0xc3, 0x8, 0xa2, 0x8f, 0xa9, 0x94, 0xb1, 0x1e, 0x9c, 0xdb, + 0x93, 0xc1, 0xb1, 0x1a, 0xca, 0x65, 0x9b, 0x32, 0x9b, 0x1e, 0x81, 0x56, + 0x5, 0xbd, 0x83, 0xaf, 0x80, 0x69, 0x1a, 0x6d, 0x81, 0x59, 0x7c, 0x3a, + 0x1e, 0x86, 0x72, 0x83, 0x5d, 0x61, 0x1a, 0x61, 0x98, 0x62, 0xa8, 0x75, + 0x1e, 0x30, 0x54, 0x75, 0xfb, 0x0, 0x84, 0x5d, 0x8, 0xfb, 0x5f, 0x66, + 0x6b, 0x7a, 0x37, 0x1b, 0x7f, 0x56, 0x5, 0xf7, 0x23, 0xa2, 0xb9, 0xf7, + 0x71, 0xbd, 0x1f, 0xa7, 0xf7, 0x14, 0xa4, 0xa8, 0xde, 0xac, 0x8, 0xe, + 0xf7, 0x59, 0xc8, 0x91, 0xc3, 0x12, 0xf0, 0xf7, 0x59, 0x15, 0xaa, 0xa7, + 0xaf, 0xaf, 0xb1, 0x1b, 0xb0, 0xa6, 0x78, 0x7a, 0xa7, 0x1f, 0x7b, 0xa4, + 0xa5, 0x7c, 0xae, 0x1b, 0xcd, 0xbf, 0xaf, 0xb7, 0xb6, 0x1f, 0x64, 0xb6, + 0x5, 0x77, 0x78, 0x4f, 0x61, 0x66, 0x1b, 0x6e, 0x77, 0x97, 0x99, 0x75, + 0x1f, 0x9c, 0x70, 0x6e, 0x9e, 0x53, 0x1b, 0x4b, 0x62, 0x5e, 0x67, 0x62, + 0x1f, 0xe, 0xfb, 0x1c, 0x76, 0xf8, 0x67, 0xf7, 0xc, 0x1, 0xf7, 0x9f, + 0xf7, 0x23, 0x3, 0xf7, 0x9f, 0xf7, 0xf8, 0x15, 0x71, 0xa7, 0x77, 0xa8, + 0xba, 0xb2, 0xae, 0xaf, 0xa5, 0x74, 0xa2, 0x66, 0x5b, 0x68, 0x69, 0x63, + 0x1e, 0x3e, 0xfc, 0x95, 0x85, 0xa, 0xc9, 0xf8, 0x1e, 0x5, 0x5d, 0x6, + 0xe, 0xe9, 0xc2, 0xf7, 0xa1, 0xc2, 0x1, 0xdc, 0xc4, 0xf7, 0x4f, 0xc2, + 0x3, 0xf7, 0x56, 0x5a, 0x15, 0xc2, 0x6, 0xa6, 0xf7, 0x23, 0xd3, 0x8f, + 0xc7, 0xa7, 0xc7, 0xad, 0x19, 0x85, 0xb9, 0x5, 0x6b, 0x50, 0x4b, 0x72, + 0x49, 0x1b, 0x29, 0x66, 0xc2, 0xbb, 0xe1, 0xdd, 0xdb, 0xf3, 0xb8, 0xc1, + 0x7b, 0x6c, 0x9d, 0x1f, 0x81, 0x59, 0x6a, 0xa, 0xab, 0xf7, 0x36, 0x5, + 0x55, 0x6, 0x81, 0x58, 0x6c, 0xa3, 0x6a, 0x99, 0x66, 0x8f, 0x19, 0xa6, + 0xf7, 0x20, 0x52, 0xa, 0x70, 0xfb, 0x21, 0x5, 0x34, 0x8a, 0xfb, 0x16, + 0x2c, 0xfb, 0x18, 0x1a, 0x2e, 0xcf, 0x58, 0xd3, 0x84, 0x1e, 0xe, 0x76, + 0xc5, 0xf7, 0x82, 0xc4, 0xf7, 0x71, 0xc5, 0x12, 0xf7, 0x33, 0xc1, 0x61, + 0xbf, 0x13, 0xe8, 0xbe, 0xaa, 0x15, 0x9b, 0x57, 0x5, 0xa1, 0xc0, 0xe0, + 0x93, 0x9b, 0x1b, 0xa1, 0x9d, 0x82, 0x83, 0xa0, 0x1f, 0x84, 0x9d, 0x9f, + 0x85, 0xa4, 0x53, 0xa, 0x74, 0x7b, 0x91, 0x92, 0x7b, 0x1f, 0x94, 0x77, + 0x79, 0x94, 0x70, 0x1b, 0x69, 0x67, 0x81, 0x7c, 0x69, 0x1f, 0x8e, 0x6, + 0xea, 0xe0, 0x8c, 0xc8, 0x8c, 0xe1, 0x8, 0xf7, 0x6e, 0x6, 0x96, 0xc4, + 0x5, 0xfb, 0x7f, 0x6, 0x13, 0xf0, 0x89, 0xa3, 0x88, 0xa5, 0x8c, 0xa5, + 0x8, 0x42, 0xa, 0x6c, 0x8f, 0x6d, 0x8d, 0x6e, 0x8, 0x2c, 0x6, 0x80, + 0x52, 0x5, 0x13, 0xe8, 0xf7, 0x5, 0x6, 0x23, 0x64, 0x3f, 0x3a, 0x4b, + 0x1e, 0xe, 0xd7, 0xb9, 0x60, 0x76, 0xf8, 0x14, 0xb9, 0x9d, 0x77, 0x12, + 0xe1, 0xbb, 0xf7, 0xdf, 0xbc, 0x13, 0x6c, 0xac, 0xeb, 0x15, 0xa9, 0x65, + 0xda, 0xc5, 0x5, 0x13, 0xac, 0x64, 0xb9, 0xb0, 0x8a, 0xac, 0x1b, 0xbd, + 0xbe, 0x9b, 0xa7, 0xb7, 0x1f, 0x13, 0x5c, 0xbe, 0x4d, 0xae, 0xa8, 0x58, + 0xcb, 0x5, 0xbe, 0xb3, 0xa4, 0xd6, 0xc1, 0x1a, 0x8c, 0xaf, 0x86, 0xa4, + 0x7a, 0xa5, 0xd5, 0xc9, 0x18, 0x6c, 0xb0, 0x42, 0x50, 0x5, 0x13, 0xac, + 0xa9, 0x6c, 0x62, 0x96, 0x5a, 0x1b, 0x59, 0x55, 0x7b, 0x6e, 0x61, 0x1f, + 0x13, 0x9c, 0x57, 0xca, 0x66, 0x6c, 0xc0, 0x4c, 0x5, 0x57, 0x51, 0x75, + 0x5d, 0x4c, 0x1a, 0x8a, 0x68, 0x92, 0x6e, 0x9c, 0x71, 0x8, 0xa4, 0xe4, + 0x15, 0x13, 0xac, 0xea, 0xe2, 0xf2, 0xf7, 0x3, 0xdb, 0xc0, 0x52, 0x48, + 0xfb, 0x4, 0x21, 0x37, 0x30, 0x3f, 0x51, 0xbe, 0xd2, 0x1e, 0xe, 0x8b, + 0xc1, 0xd9, 0xc1, 0xcf, 0xc2, 0xf7, 0x5b, 0xc1, 0x1, 0xc3, 0x16, 0xf7, + 0xa9, 0x2a, 0xa, 0xfb, 0x2, 0x6, 0x9a, 0xd9, 0x5, 0xf7, 0x18, 0x47, + 0xa, 0xfb, 0x19, 0x6, 0x98, 0xcf, 0x5, 0xf7, 0x19, 0x46, 0xa, 0xfb, + 0x12, 0x6, 0xf7, 0x5f, 0xf7, 0x5b, 0x5, 0xdb, 0x2a, 0xa, 0xfb, 0x64, + 0x2d, 0xa, 0xd0, 0x6, 0xfb, 0x45, 0xfb, 0x40, 0x22, 0xf7, 0x40, 0x5, + 0xcf, 0x2a, 0xa, 0xfb, 0x65, 0x2d, 0xa, 0xdc, 0x6, 0xf7, 0xe, 0xfb, + 0x5b, 0x5, 0xfb, 0xb, 0x38, 0xa, 0xf7, 0x17, 0x6, 0x7e, 0x47, 0x5, + 0xfb, 0x17, 0x45, 0xa, 0xf7, 0x18, 0x6, 0x7b, 0x3d, 0x5, 0xfb, 0x2, + 0x6, 0xe, 0xf7, 0x4c, 0xbc, 0x3, 0xf7, 0xad, 0xf7, 0xaf, 0x15, 0xbd, + 0x6, 0xdf, 0xf8, 0x1c, 0x5, 0x59, 0x6, 0xfb, 0x49, 0xfd, 0xe6, 0x15, + 0xbc, 0x6, 0xe0, 0xf8, 0x1d, 0x5, 0x59, 0x6, 0xe, 0x3d, 0xc2, 0xf7, + 0xb, 0xb4, 0xf8, 0x18, 0xc2, 0x1, 0xe3, 0xc4, 0xf7, 0x71, 0xc4, 0x3, + 0xc4, 0x3d, 0x15, 0xf7, 0x87, 0x6, 0xcd, 0xc4, 0xac, 0xbc, 0xa6, 0x7e, + 0xaa, 0x68, 0xad, 0x1f, 0xe3, 0x8a, 0xa7, 0xde, 0xb0, 0x1a, 0xa8, 0x7a, + 0xa3, 0x75, 0x9d, 0x1e, 0xfb, 0x65, 0xf7, 0x4c, 0x87, 0x93, 0x96, 0x1a, + 0xaf, 0x8c, 0xb7, 0x8b, 0xa0, 0x1b, 0xf7, 0x3f, 0x6, 0x75, 0x26, 0x5, + 0xc4, 0x6, 0xab, 0xf7, 0x30, 0x5, 0xfb, 0x50, 0x6, 0x48, 0x24, 0x85, + 0x35, 0x70, 0x9a, 0x76, 0xab, 0x6a, 0x1f, 0x5a, 0x4a, 0x56, 0x52, 0x73, + 0x9d, 0x6a, 0xa0, 0x79, 0x1f, 0xf7, 0x4e, 0xfb, 0x39, 0x5, 0x99, 0x7f, + 0x94, 0x77, 0x7b, 0x1a, 0x79, 0x7d, 0x7d, 0x6d, 0x1e, 0xfb, 0x5a, 0x6, + 0xa0, 0xf0, 0x62, 0xa, 0xf7, 0x93, 0xc6, 0x15, 0xfb, 0x1d, 0xf7, 0xb, + 0x5, 0x7c, 0x99, 0x85, 0x9a, 0x9a, 0x1a, 0xaf, 0xb6, 0xab, 0xb2, 0x8c, + 0x1e, 0xf7, 0x22, 0xfb, 0x9, 0x5, 0x9a, 0x7d, 0x96, 0x7f, 0x74, 0x1a, + 0x7c, 0x75, 0x58, 0x45, 0x1e, 0xe, 0xf8, 0x80, 0xf2, 0x1, 0xf7, 0xd9, + 0xf8, 0x80, 0x15, 0xef, 0x6, 0xa8, 0xf2, 0x5, 0x27, 0x6, 0xfb, 0x64, + 0x24, 0x15, 0xf2, 0x6, 0xa8, 0xf2, 0x5, 0x24, 0x6, 0xe, 0x79, 0xb9, + 0xe6, 0xb8, 0xf7, 0x8f, 0xb8, 0xd7, 0xb7, 0x1, 0x84, 0xb9, 0xf7, 0x0, + 0xba, 0xf8, 0x3, 0xb9, 0x3, 0x84, 0xf7, 0x66, 0x15, 0xfb, 0x18, 0xf5, + 0x2b, 0xf7, 0x23, 0xf7, 0x59, 0xf7, 0x3c, 0xf7, 0x38, 0xf7, 0x5d, 0xf7, + 0x1d, 0x20, 0xeb, 0xfb, 0x1f, 0xfb, 0x41, 0xfb, 0x57, 0xfb, 0x35, 0xfb, + 0x65, 0x1e, 0xb9, 0x9c, 0x15, 0xf7, 0x2f, 0xf7, 0x20, 0xf7, 0x2e, 0xf7, + 0x43, 0xf7, 0x11, 0xdd, 0x39, 0xfb, 0x8, 0xfb, 0x37, 0xfb, 0x2e, 0xfb, + 0x27, 0xfb, 0x31, 0xfb, 0xa, 0x2e, 0xde, 0xf7, 0x8, 0x1e, 0xf7, 0xfc, + 0x7d, 0x15, 0x6b, 0x69, 0x63, 0x7a, 0x68, 0x1b, 0x51, 0x65, 0xb5, 0xc0, + 0xe3, 0xd7, 0xcf, 0xd3, 0xaa, 0xb1, 0x7c, 0x77, 0x9f, 0x1f, 0xad, 0xae, + 0x5, 0xab, 0x66, 0x6e, 0x98, 0x5d, 0x1b, 0xfb, 0x7, 0x30, 0x27, 0x20, + 0x39, 0xca, 0x57, 0xd2, 0xbd, 0xc5, 0xa3, 0xab, 0xb2, 0x1f, 0xe, 0xf7, + 0x8d, 0xc7, 0xda, 0xc5, 0xda, 0xc2, 0x1, 0xf7, 0xeb, 0xf7, 0x95, 0x15, + 0xee, 0x6, 0x94, 0xc6, 0x5, 0x56, 0x6, 0xa0, 0xf7, 0x25, 0x5, 0x8d, + 0x9a, 0x8d, 0x99, 0x95, 0x1a, 0xc8, 0x5c, 0x9e, 0x58, 0x5b, 0x54, 0x7a, + 0x7c, 0x6d, 0x1e, 0x8e, 0x50, 0x5, 0x9d, 0xa6, 0xc1, 0x9d, 0xb4, 0x1b, + 0xac, 0xa2, 0x84, 0x61, 0x80, 0x89, 0x7f, 0x87, 0x7b, 0x1f, 0x90, 0x75, + 0x71, 0x8f, 0x71, 0x1b, 0xfb, 0x8, 0x6e, 0x43, 0x5d, 0x62, 0xa8, 0x65, + 0xbd, 0xb6, 0xb9, 0xa7, 0xac, 0xae, 0x1f, 0x93, 0xd1, 0x15, 0x5f, 0x6a, + 0x5e, 0x70, 0x62, 0x1b, 0x71, 0x78, 0x94, 0x9f, 0xab, 0xa7, 0x9d, 0xc1, + 0xb4, 0xb4, 0x83, 0x8b, 0x1f, 0xe, 0xda, 0x76, 0xf8, 0x18, 0x77, 0x1, + 0xf7, 0x86, 0xf7, 0x93, 0x15, 0xf7, 0x4b, 0xfb, 0x4d, 0xab, 0xba, 0xfb, + 0x15, 0xf7, 0x1e, 0xf7, 0x59, 0xf7, 0x24, 0x6e, 0xba, 0x5, 0xfc, 0x39, + 0xfb, 0x53, 0x15, 0xf7, 0x3e, 0xfb, 0x4d, 0xb1, 0xbc, 0xfb, 0x14, 0xf7, + 0x1c, 0xf7, 0x52, 0xf7, 0x24, 0x6c, 0xba, 0x5, 0xe, 0xf7, 0x15, 0x76, + 0xf7, 0x5b, 0xc9, 0x1, 0xdd, 0xf7, 0xc7, 0x15, 0xf8, 0x7, 0x6, 0x68, + 0xfb, 0x5b, 0x6a, 0xa, 0xb8, 0xf7, 0x99, 0x5, 0xfc, 0x3e, 0x6, 0xe, + 0x79, 0xb9, 0xf7, 0x7, 0xf7, 0x37, 0xe8, 0xbb, 0xe4, 0xb7, 0x1, 0x84, + 0xbb, 0xf7, 0xde, 0xbd, 0xf7, 0x1f, 0xba, 0x3, 0x84, 0xf7, 0x74, 0x15, + 0xfb, 0x1e, 0xf1, 0x23, 0xf7, 0x27, 0xf7, 0x48, 0xf7, 0x4d, 0xf7, 0x35, + 0xf7, 0x5d, 0xf7, 0x1e, 0x21, 0xed, 0xfb, 0x20, 0xfb, 0x3a, 0xfb, 0x5e, + 0xfb, 0x2a, 0xfb, 0x62, 0x1e, 0xbb, 0x93, 0x15, 0xf7, 0x1d, 0xf7, 0x22, + 0xf7, 0x3b, 0xf7, 0x3f, 0xf7, 0xe, 0xdf, 0x33, 0xfb, 0x4, 0xfb, 0x30, + 0xfb, 0x33, 0xfb, 0x2c, 0xfb, 0x2b, 0xfb, 0xc, 0x32, 0xe0, 0xf7, 0xb, + 0x1e, 0xf7, 0x17, 0x32, 0x15, 0xba, 0x6, 0xa1, 0xf5, 0x5, 0xbf, 0x6, + 0xa9, 0x21, 0x5, 0xc6, 0x6, 0x6d, 0xf7, 0x9, 0x5, 0xbf, 0x9d, 0x9c, + 0xba, 0xbc, 0x1a, 0xb8, 0x63, 0xa7, 0x5e, 0x1e, 0x23, 0x6, 0x9d, 0xfb, + 0x21, 0x15, 0x9f, 0xe8, 0x6a, 0xa, 0xa8, 0x9c, 0x79, 0x7b, 0x59, 0x71, + 0x82, 0x65, 0x1f, 0xe, 0xf8, 0xa1, 0xb3, 0x1, 0xf7, 0x8, 0xf8, 0xa1, + 0x15, 0xf7, 0xfc, 0x6, 0x93, 0xb3, 0x5, 0xfb, 0xfc, 0x6, 0xe, 0xf7, + 0x9e, 0xc9, 0xf7, 0x7c, 0xc9, 0x1, 0xf7, 0xb, 0xca, 0xf7, 0x80, 0xca, + 0x3, 0xf7, 0xb, 0xf8, 0x28, 0x15, 0x3f, 0xc6, 0x4d, 0xe2, 0xf7, 0x1, + 0xf6, 0xf2, 0xf7, 0x11, 0xca, 0x5f, 0xcc, 0x28, 0xfb, 0xb, 0x27, 0x23, + 0xfb, 0x6, 0x1e, 0xca, 0x9a, 0x15, 0xbf, 0xc1, 0xe4, 0xe4, 0xd0, 0xa3, + 0x5d, 0x67, 0x4f, 0x46, 0x31, 0x43, 0x4f, 0x68, 0xb6, 0xbb, 0x1e, 0xe, + 0xb7, 0xc0, 0xf7, 0x79, 0xc0, 0xf7, 0x47, 0x77, 0x1, 0xf7, 0x97, 0xc2, + 0x3, 0xf7, 0x97, 0xf7, 0x26, 0x15, 0xc2, 0x6, 0xb0, 0xf7, 0x48, 0x5, + 0xf7, 0x4f, 0x80, 0xa, 0xfb, 0x4f, 0x6, 0xaf, 0xf7, 0x47, 0x52, 0xa, + 0x67, 0xfb, 0x47, 0x5, 0xfb, 0x4f, 0x6, 0x80, 0x56, 0x5, 0xf7, 0x4f, + 0x6, 0xfb, 0x89, 0xfb, 0xae, 0x15, 0xf8, 0x41, 0x80, 0xa, 0xfc, 0x41, + 0x6, 0xe, 0xf7, 0x8d, 0xc3, 0xf7, 0x9b, 0xc1, 0x1, 0xf8, 0x1f, 0xc4, + 0x3, 0xf7, 0x27, 0xf7, 0x8d, 0x15, 0xf7, 0x91, 0x3c, 0xa, 0xfb, 0x3d, + 0x6, 0xf7, 0x17, 0xdf, 0xda, 0xbb, 0xef, 0x1a, 0xb9, 0x68, 0xb2, 0x48, + 0x5f, 0x4a, 0x74, 0x58, 0x73, 0x1e, 0x82, 0x52, 0x5, 0xc0, 0x6, 0xb2, + 0x8a, 0xba, 0xb1, 0xaa, 0x1b, 0xae, 0xa1, 0x75, 0x71, 0x5c, 0x62, 0x63, + 0x68, 0x74, 0x1f, 0xfb, 0x36, 0xfb, 0x1, 0x5, 0xe, 0xf7, 0x84, 0xc3, + 0xf5, 0xc2, 0xf7, 0x2, 0xc2, 0x12, 0xf8, 0xa, 0xc5, 0x5e, 0xc4, 0x13, + 0xf0, 0xf7, 0x30, 0xf7, 0xa3, 0x15, 0x7c, 0xa8, 0xbb, 0x7b, 0xb6, 0x1b, + 0xd7, 0xdb, 0xc0, 0xde, 0xae, 0x79, 0x9a, 0x75, 0x97, 0x1f, 0x13, 0xe8, + 0xae, 0xa1, 0x9c, 0xb2, 0xb4, 0x1a, 0xbc, 0x65, 0xac, 0x54, 0x60, 0x5c, + 0x77, 0x75, 0x64, 0x1e, 0x96, 0x57, 0x5, 0x9d, 0xab, 0xac, 0xa0, 0xad, + 0x1b, 0xa6, 0xa7, 0x7d, 0x71, 0x5e, 0x5a, 0x72, 0x4b, 0x1f, 0x87, 0x79, + 0x87, 0x78, 0x87, 0x79, 0x8, 0x99, 0x9f, 0x8b, 0x9f, 0x1b, 0x13, 0xf0, + 0xa9, 0xa7, 0x81, 0x6e, 0x6a, 0x71, 0x69, 0x4b, 0x66, 0x67, 0x99, 0x9d, + 0x6f, 0x1f, 0xe, 0x65, 0xa, 0xf7, 0x42, 0xf8, 0x85, 0x15, 0xf7, 0x96, + 0xf0, 0x7b, 0xd5, 0xfb, 0x8c, 0xfb, 0x24, 0x5, 0xe, 0xf7, 0x22, 0xac, + 0x15, 0x75, 0x9a, 0xa9, 0x78, 0xbb, 0x1b, 0xbe, 0xdf, 0xab, 0xca, 0xbc, + 0x1f, 0x7b, 0x39, 0x5, 0xf7, 0x1c, 0x2a, 0xa, 0x39, 0x6, 0xd3, 0xf8, + 0x3, 0x5, 0xfb, 0x1c, 0x68, 0xa, 0xdd, 0x6, 0x70, 0xfb, 0x18, 0x5, + 0x35, 0x7b, 0x51, 0xfb, 0x2, 0xfb, 0x11, 0x1b, 0x4b, 0x6a, 0xb9, 0xc6, + 0x96, 0x1f, 0xc2, 0xf7, 0xa8, 0x5, 0xfb, 0x1d, 0x68, 0xa, 0xdd, 0x6, + 0x23, 0xfc, 0xa6, 0x6a, 0xa, 0xe, 0xf8, 0xa9, 0xa8, 0x1, 0xf7, 0x28, + 0xba, 0xda, 0xb6, 0x3, 0xf7, 0x28, 0x3d, 0x15, 0xba, 0x6, 0xf7, 0x52, + 0xf8, 0xf7, 0x5, 0xda, 0x6, 0xfb, 0x52, 0xfc, 0xf7, 0x5, 0xb6, 0x6, + 0xf7, 0x52, 0xf8, 0xf7, 0x5, 0xbc, 0x6, 0x94, 0xa8, 0x5, 0xfb, 0x6f, + 0x6, 0xfb, 0x34, 0xfb, 0x2b, 0x4c, 0xfb, 0x21, 0x53, 0xb9, 0x3e, 0xf7, + 0x35, 0x1f, 0xe, 0xf7, 0x51, 0xf7, 0x1e, 0x1, 0xf7, 0x70, 0xf7, 0x33, + 0x3, 0xf7, 0x70, 0xf7, 0x87, 0x15, 0x6e, 0xa6, 0x72, 0xb4, 0xb7, 0xba, + 0xaf, 0xb9, 0xa9, 0x73, 0xa5, 0x63, 0x58, 0x5f, 0x65, 0x5d, 0x1e, 0xe, + 0xfb, 0x2, 0xb9, 0x1, 0xf7, 0xbf, 0xba, 0x3, 0xf7, 0x76, 0xfb, 0x1a, + 0x15, 0x88, 0x90, 0xa3, 0x7d, 0xa4, 0x1b, 0xbc, 0xb7, 0xb0, 0xba, 0xa4, + 0x78, 0x9c, 0x7c, 0x8d, 0x1f, 0x92, 0xac, 0x5, 0x5c, 0x6, 0x73, 0x41, + 0x5, 0x8c, 0x93, 0x91, 0x8b, 0x91, 0x1b, 0x9d, 0x93, 0x83, 0x83, 0x8c, + 0x1f, 0x78, 0x79, 0x7f, 0x7b, 0x7d, 0x7c, 0x8e, 0x94, 0x81, 0x1e, 0xe, + 0xf7, 0x8d, 0xc3, 0x1, 0xf7, 0xab, 0xc0, 0x3, 0xf7, 0x3e, 0xf7, 0x8d, + 0x15, 0xf7, 0x8d, 0x3c, 0xa, 0x29, 0x6, 0xc5, 0xf7, 0xd1, 0xfb, 0x26, + 0x72, 0x80, 0x53, 0xe6, 0x9a, 0x5e, 0xfb, 0x8f, 0x5, 0x29, 0x6, 0xe, + 0xf7, 0x8d, 0xc6, 0xf7, 0x69, 0xc6, 0x1, 0xf7, 0x1d, 0xc1, 0xf7, 0x6d, + 0xc1, 0x3, 0xf7, 0x1d, 0xf8, 0xc, 0x15, 0x2c, 0xe5, 0x6b, 0xb6, 0xd4, + 0xf7, 0xb, 0xd2, 0xf7, 0x17, 0xd4, 0x5a, 0xc3, 0x39, 0x36, 0xfb, 0x1, + 0x40, 0xfb, 0x15, 0x1e, 0xc1, 0x9a, 0x15, 0xd1, 0xbf, 0xc7, 0xd9, 0xcf, + 0x9d, 0x5d, 0x68, 0x8c, 0x1e, 0x3c, 0x4a, 0x56, 0x4e, 0x5c, 0x5f, 0xa9, + 0xc0, 0x1e, 0xe, 0xe6, 0x76, 0xf8, 0xc, 0x77, 0x1, 0x8c, 0xf8, 0xc4, + 0x3, 0xf3, 0xd1, 0x15, 0xf7, 0x92, 0xf7, 0x53, 0xfb, 0x4b, 0xf7, 0x4d, + 0x6b, 0x5c, 0xf7, 0x15, 0xfb, 0x1e, 0xfb, 0x59, 0xfb, 0x24, 0x5, 0xf7, + 0x48, 0x16, 0xaa, 0x5c, 0xf7, 0x83, 0xf7, 0x53, 0xfb, 0x3e, 0xf7, 0x4d, + 0x65, 0x5a, 0xf7, 0x14, 0xfb, 0x1c, 0x5, 0xe, 0x60, 0xc1, 0x5c, 0x76, + 0xf3, 0xc2, 0xf7, 0x5d, 0xc0, 0xf7, 0xc9, 0x77, 0x12, 0x13, 0xb8, 0xf7, + 0x8d, 0xba, 0x15, 0xf7, 0x14, 0x6, 0x82, 0x67, 0x5, 0x5a, 0x5f, 0xa, + 0xf7, 0x20, 0x76, 0xa, 0x61, 0x6, 0x93, 0xaf, 0x5, 0xb6, 0x6, 0x94, + 0xc2, 0x5, 0x60, 0x6, 0xac, 0xf7, 0x65, 0x52, 0xa, 0xfb, 0x30, 0xfb, + 0x65, 0x5, 0xc9, 0x16, 0xe4, 0xf7, 0x19, 0x76, 0xfb, 0x19, 0x5, 0xfc, + 0x19, 0xfb, 0x14, 0x15, 0x13, 0x78, 0xac, 0x6c, 0xf8, 0xd4, 0xf9, 0x47, + 0x69, 0xaa, 0x5, 0xfc, 0xd3, 0xfb, 0xfe, 0x15, 0xf7, 0x6e, 0x6, 0x94, + 0xc0, 0x5, 0x36, 0x6, 0xbe, 0xf7, 0xc6, 0xfb, 0x14, 0x73, 0x82, 0x55, + 0xdb, 0x99, 0x62, 0xfb, 0x86, 0x5, 0x35, 0x6, 0xe, 0x5f, 0xc1, 0x5d, + 0x76, 0xf7, 0xd5, 0xc0, 0x7c, 0xc1, 0xf7, 0xc9, 0x77, 0x12, 0xf8, 0x65, + 0xbb, 0x13, 0x5c, 0x89, 0x71, 0x15, 0xad, 0x6c, 0xf8, 0xce, 0xf9, 0x47, + 0x67, 0xaa, 0x5, 0xfc, 0xb5, 0xfb, 0xff, 0x15, 0xf7, 0x70, 0x76, 0xa, + 0x34, 0x6, 0xbe, 0xf7, 0xc4, 0xfb, 0x13, 0x74, 0x82, 0x55, 0xda, 0x99, + 0x64, 0xfb, 0x85, 0x5, 0x34, 0x6, 0x13, 0xac, 0xf7, 0x73, 0xfc, 0x24, + 0x15, 0xf7, 0x6b, 0x76, 0xa, 0xfb, 0x23, 0x6, 0xf7, 0xb, 0xee, 0xc6, + 0xa8, 0xe1, 0x1a, 0xbc, 0x72, 0xb7, 0x4d, 0x65, 0x63, 0x78, 0x69, 0x6c, + 0x1e, 0x81, 0x4c, 0x5, 0xb9, 0x6, 0xb0, 0x89, 0xae, 0xa5, 0xaa, 0x1b, + 0xaa, 0x9c, 0x73, 0x6e, 0x62, 0x68, 0x6a, 0x6d, 0x74, 0x1f, 0xfb, 0x1e, + 0xfb, 0x0, 0x5, 0xe, 0x61, 0xc1, 0x5c, 0x76, 0xf7, 0xb, 0xc2, 0xf7, + 0x42, 0xc2, 0xf7, 0xb3, 0x76, 0xc0, 0x77, 0x12, 0xf7, 0x67, 0xba, 0x65, + 0xbb, 0x13, 0xbe, 0xf7, 0x90, 0xca, 0x15, 0xf7, 0x11, 0x6, 0x83, 0x58, + 0x5, 0x59, 0x6, 0x82, 0x55, 0x5, 0xf7, 0x1c, 0x76, 0xa, 0x62, 0x6, + 0x92, 0xbe, 0x5, 0xb6, 0x6, 0x94, 0xc2, 0x5, 0x61, 0x6, 0xab, 0xf7, + 0x57, 0x5, 0x56, 0x6, 0xfb, 0x2c, 0xfb, 0x66, 0x5, 0xc7, 0x9a, 0x15, + 0xe3, 0xf7, 0x8, 0x78, 0xfb, 0x8, 0x5, 0xfc, 0x10, 0xfb, 0x25, 0x15, + 0x13, 0x7e, 0xab, 0x6e, 0xf8, 0xbe, 0xf9, 0x47, 0x6a, 0xaa, 0x5, 0xfc, + 0xa1, 0xfb, 0xe8, 0x15, 0x7d, 0xa2, 0xb1, 0x77, 0xae, 0x1b, 0xc4, 0xd1, + 0xc2, 0xd5, 0x1f, 0x8e, 0xb3, 0x7a, 0x9a, 0x78, 0x97, 0x8, 0x13, 0xbd, + 0xa6, 0xa0, 0x9b, 0xb1, 0xb1, 0x1a, 0xbc, 0x6c, 0xab, 0x5d, 0x69, 0x66, + 0x79, 0x75, 0x6b, 0x1e, 0x94, 0x58, 0x5, 0x9d, 0xa5, 0xa5, 0x9f, 0xa7, + 0x1b, 0xa0, 0x9f, 0x7d, 0x72, 0x8d, 0x1f, 0x64, 0x69, 0x6f, 0x57, 0x1e, + 0x85, 0x6, 0x82, 0x56, 0x5, 0x13, 0xbe, 0xb2, 0xc0, 0x87, 0x6a, 0x6d, + 0x73, 0x63, 0x59, 0x6d, 0x6e, 0x9c, 0x9c, 0x76, 0x1f, 0xe, 0xfb, 0x31, + 0xc1, 0xf8, 0x33, 0xf7, 0xa, 0x12, 0xf7, 0xc, 0xc2, 0xf7, 0x45, 0xc2, + 0x9e, 0xc1, 0x17, 0xf7, 0xe5, 0xf7, 0xf7, 0x15, 0x73, 0xa1, 0x78, 0xac, + 0xb8, 0xad, 0xad, 0xb3, 0xa2, 0x75, 0xa0, 0x68, 0x68, 0x61, 0x69, 0x62, + 0x1e, 0x8e, 0xfb, 0x41, 0x15, 0x38, 0x7a, 0xfb, 0x1d, 0x5e, 0xfb, 0x22, + 0x1a, 0x31, 0xd6, 0x5e, 0xe5, 0xc6, 0xc9, 0x9a, 0x9c, 0xbe, 0x1e, 0x13, + 0xb8, 0xa2, 0xf7, 0xb, 0x5, 0x55, 0x6, 0x7d, 0x44, 0x5, 0x7b, 0x66, + 0x61, 0x81, 0x63, 0x1b, 0x2f, 0x71, 0xba, 0xb1, 0xf7, 0x2, 0xf7, 0x1f, + 0xac, 0xd3, 0x96, 0x1f, 0xa0, 0xf3, 0x52, 0xa, 0xe, 0x8b, 0xc1, 0xf7, + 0x10, 0xc1, 0xf7, 0xb1, 0xc1, 0x1, 0x89, 0x4f, 0xa, 0x89, 0x16, 0x20, + 0xa, 0xfb, 0x43, 0xf8, 0x7d, 0x15, 0xf7, 0x9a, 0x26, 0x9b, 0xa9, 0xfb, + 0x7b, 0x79, 0xa, 0x8b, 0xc1, 0xf7, 0xf, 0xc2, 0xf7, 0xab, 0xc1, 0x84, + 0xa, 0x72, 0xf7, 0x74, 0xf7, 0x5a, 0xf7, 0x71, 0x3, 0xf7, 0xc2, 0xf8, + 0xff, 0x15, 0xf7, 0xd7, 0xf0, 0x77, 0xd4, 0xfb, 0xc9, 0xfb, 0x24, 0x5, + 0xfb, 0xd5, 0xfd, 0x1d, 0x23, 0xa, 0x8b, 0xc0, 0xf7, 0xc, 0xc0, 0xf7, + 0xb1, 0xc1, 0xf7, 0x66, 0x77, 0x1, 0x89, 0x4f, 0xa, 0xf7, 0x7a, 0xf9, + 0x3, 0x15, 0xb0, 0x79, 0xf7, 0x3b, 0xf7, 0x7, 0xf7, 0xd, 0xfb, 0x7, + 0xb5, 0x9d, 0xfb, 0x5, 0xf7, 0x2c, 0x5, 0x3c, 0x6, 0xfc, 0x2b, 0xfd, + 0x9b, 0x23, 0xa, 0x7e, 0xa, 0xd3, 0xbc, 0x9c, 0xbc, 0x1, 0x71, 0x4f, + 0xa, 0xf7, 0x6c, 0xf9, 0x20, 0x15, 0xbc, 0x81, 0x5, 0x9e, 0x97, 0xa6, + 0xb5, 0xbc, 0x1b, 0xa4, 0x9b, 0x7b, 0x7b, 0x9e, 0x1f, 0x7a, 0x9f, 0xa1, + 0x7a, 0xb1, 0x1b, 0xd0, 0xb9, 0xca, 0xb1, 0x9e, 0x1f, 0x5b, 0x94, 0x5, + 0x73, 0x7d, 0x69, 0x66, 0x66, 0x1b, 0x76, 0x7e, 0x99, 0x9b, 0x7a, 0x1f, + 0x9c, 0x79, 0x75, 0x9e, 0x61, 0x1b, 0x52, 0x51, 0x5c, 0x56, 0x6d, 0x1f, + 0xfb, 0x86, 0xfd, 0x20, 0x23, 0xa, 0x7e, 0xa, 0xdb, 0xf7, 0x8, 0x1, + 0x89, 0x4f, 0xa, 0xf8, 0x55, 0xf9, 0x19, 0x15, 0xdd, 0x5c, 0xa, 0x38, + 0x6, 0xfb, 0x3c, 0xfb, 0x8, 0x15, 0xdd, 0x5c, 0xa, 0x39, 0x6, 0xfb, + 0xe0, 0xfd, 0x8d, 0x23, 0xa, 0x8b, 0xbf, 0xf7, 0x20, 0xc1, 0xf7, 0xaa, + 0xc1, 0xaa, 0xc4, 0xd2, 0xc3, 0x1, 0x89, 0xf7, 0x63, 0xf7, 0x11, 0xc6, + 0xd4, 0xc7, 0x3, 0xf7, 0xde, 0xf9, 0x3d, 0x15, 0x5d, 0xb1, 0x71, 0xb7, + 0xc8, 0xbc, 0xbf, 0xc5, 0xab, 0x7f, 0xb5, 0x4a, 0x4c, 0x57, 0x58, 0x4e, + 0x1e, 0xc6, 0x93, 0x15, 0xa3, 0x97, 0xa3, 0xac, 0xad, 0x85, 0x6f, 0x86, + 0x75, 0x77, 0x7b, 0x76, 0x85, 0x71, 0x8b, 0xa2, 0x1e, 0xfc, 0x1b, 0xfd, + 0x45, 0x23, 0xa, 0x8b, 0xc1, 0xeb, 0xc1, 0xbc, 0x61, 0xa, 0x1, 0x71, + 0xf7, 0x56, 0xe2, 0xcd, 0xf6, 0xc1, 0x93, 0xc2, 0x3, 0x71, 0x16, 0xf7, + 0x56, 0x2a, 0xa, 0x35, 0x6, 0xc8, 0xf7, 0x3, 0x5, 0xf7, 0x19, 0x6, + 0x6b, 0xfb, 0x39, 0x5, 0xf7, 0x97, 0x6, 0xaa, 0xf7, 0x2d, 0x52, 0xa, + 0x78, 0x28, 0x5, 0xfb, 0x2a, 0x6, 0xb1, 0xf7, 0x5c, 0x5, 0xdb, 0x6, + 0x80, 0x52, 0x5, 0xc1, 0x6, 0xab, 0xf7, 0x3b, 0x5, 0x57, 0x60, 0xa, + 0x39, 0x6, 0xb3, 0xf7, 0x5c, 0x5, 0xf7, 0x2b, 0x6, 0x78, 0x26, 0x6a, + 0xa, 0xa9, 0xf7, 0x2f, 0x5, 0xfc, 0x2a, 0x2d, 0xa, 0xe4, 0x6, 0xfb, + 0x99, 0x58, 0xa, 0x57, 0x6, 0xf7, 0x5b, 0xf7, 0x39, 0x15, 0xf7, 0x3e, + 0xf7, 0xb4, 0x52, 0xfb, 0xb4, 0x5, 0xe, 0xfb, 0x2b, 0xc2, 0xe7, 0xbe, + 0xf8, 0x76, 0xbe, 0x1, 0x9c, 0xc5, 0xf7, 0x3, 0xbb, 0xf7, 0x8b, 0xc3, + 0x3, 0xf7, 0x5, 0xfb, 0x13, 0x15, 0x84, 0x90, 0xa3, 0x7a, 0xa7, 0x1b, + 0xb3, 0xc2, 0xa2, 0xcb, 0xab, 0x7c, 0xa2, 0x77, 0x93, 0x1f, 0x8f, 0x88, + 0x5, 0xe7, 0xdc, 0xbe, 0xb5, 0xd3, 0x1f, 0x7b, 0xb7, 0x5, 0x66, 0x4d, + 0x45, 0x5a, 0x44, 0x1b, 0xfb, 0x5, 0x43, 0xe5, 0xf7, 0x9, 0xf7, 0x43, + 0xf7, 0x44, 0xef, 0xeb, 0xcc, 0xc5, 0x6d, 0x60, 0xaa, 0x1f, 0x77, 0x36, + 0x51, 0xa, 0xb8, 0xf7, 0x65, 0x52, 0xa, 0x7e, 0x51, 0x5, 0xb7, 0x49, + 0x60, 0x99, 0x55, 0x1b, 0xfb, 0x54, 0xfb, 0x22, 0xfb, 0x3d, 0xfb, 0x44, + 0x22, 0xd1, 0x30, 0xee, 0x7c, 0x1f, 0x78, 0x42, 0x5, 0x8f, 0x92, 0x94, + 0x8b, 0x92, 0x1b, 0x98, 0x96, 0x83, 0x81, 0x80, 0x85, 0x75, 0x6e, 0x7d, + 0x7e, 0x93, 0x92, 0x81, 0x1f, 0xe, 0x5b, 0xa, 0x1, 0xe4, 0xc2, 0xf7, + 0x52, 0xc3, 0xc6, 0xb8, 0x3, 0x88, 0x16, 0x28, 0xa, 0xf8, 0x9d, 0xf8, + 0xc9, 0x15, 0x9a, 0xa9, 0xfb, 0xc9, 0xf7, 0x24, 0x6f, 0x42, 0x5, 0xe, + 0x5b, 0xa, 0x84, 0xa, 0xe5, 0xc3, 0xf7, 0x55, 0xc4, 0xc7, 0xb9, 0x3, + 0xf7, 0xa0, 0xf8, 0xff, 0x15, 0xf7, 0xd5, 0xf0, 0x78, 0xd4, 0xfb, 0xc9, + 0xfb, 0x24, 0x5, 0xfb, 0x9c, 0xfd, 0x1d, 0x15, 0x28, 0xa, 0xe, 0x5b, + 0xa, 0x1, 0xe4, 0xc2, 0x3, 0xf7, 0x54, 0xf9, 0xd, 0x15, 0xb2, 0x79, + 0xf7, 0x45, 0xf7, 0x7, 0xf7, 0x14, 0xfb, 0x7, 0xb9, 0x9d, 0xfb, 0xb, + 0xf7, 0x2c, 0x5, 0x36, 0x6, 0xfc, 0x11, 0xfd, 0xa5, 0x15, 0x28, 0xa, + 0xe, 0x8b, 0xbe, 0xf7, 0x75, 0x76, 0xf7, 0xca, 0x77, 0xf7, 0x2, 0xf7, + 0x8, 0x1, 0xe4, 0xc2, 0x3, 0xf8, 0x3d, 0xf9, 0x23, 0x15, 0xe2, 0x5c, + 0xa, 0x34, 0x6, 0xfb, 0x46, 0xfb, 0x8, 0x15, 0xe2, 0x6, 0xa5, 0x88, + 0xa, 0x34, 0x6, 0xfb, 0xc1, 0xfd, 0x97, 0x15, 0x28, 0xa, 0xe, 0x8b, + 0xc1, 0xf8, 0x5c, 0xc2, 0x84, 0xa, 0xf7, 0x74, 0xc6, 0x3, 0xaf, 0x16, + 0x2f, 0xa, 0xf7, 0x50, 0xf9, 0x2e, 0x15, 0xf7, 0xb5, 0x26, 0x9e, 0xa9, + 0xfb, 0x94, 0x79, 0xa, 0x8b, 0xc1, 0xf8, 0x5d, 0xc2, 0xf7, 0x77, 0x77, + 0x1, 0xf7, 0x6c, 0xc5, 0x3, 0xf7, 0x88, 0xf9, 0x0, 0x15, 0xf7, 0xdb, + 0xef, 0x78, 0xd4, 0xfb, 0xcf, 0xfb, 0x23, 0x5, 0xfb, 0x64, 0xfd, 0x1e, + 0x15, 0xf8, 0x2d, 0x2a, 0xa, 0xfb, 0x43, 0x6, 0xeb, 0xf8, 0x5d, 0x5, + 0xf7, 0x40, 0x46, 0xa, 0xfc, 0x29, 0x6, 0x7e, 0x54, 0x5, 0xf7, 0x42, + 0x6, 0x2d, 0x7a, 0xa, 0xfb, 0x44, 0x6, 0xe, 0x8b, 0xc0, 0xf8, 0x5d, + 0xc2, 0x1, 0xf7, 0x74, 0xc6, 0x3, 0xf7, 0x3f, 0xf9, 0xb, 0x15, 0xb2, + 0x7a, 0xf7, 0x47, 0xf7, 0x8, 0xf7, 0x14, 0xfb, 0x8, 0xb9, 0x9c, 0xfb, + 0xd, 0xf7, 0x2e, 0x5, 0x36, 0x6, 0xfb, 0xd5, 0xfd, 0xa5, 0x15, 0x2f, + 0xa, 0xe, 0x8b, 0xbe, 0xf8, 0x5f, 0xc2, 0xf7, 0x62, 0x77, 0x1, 0xf7, + 0x74, 0xc6, 0x3, 0xf8, 0x35, 0xf9, 0x22, 0x15, 0xe7, 0x6, 0xa5, 0xf7, + 0x9, 0x5, 0x31, 0x6, 0xfb, 0x4e, 0xfb, 0x9, 0x15, 0xe5, 0x6, 0xa6, + 0xf7, 0x9, 0x5, 0x31, 0x6, 0xfb, 0x8e, 0xfd, 0x97, 0x15, 0x2f, 0xa, + 0xe, 0x8b, 0xc1, 0xf7, 0x57, 0xbf, 0xf7, 0x63, 0xc1, 0x1, 0xf8, 0xad, + 0xcb, 0x3, 0x8a, 0x16, 0xf7, 0x6f, 0x6, 0xf7, 0x56, 0xf7, 0x49, 0xe1, + 0xf7, 0xaf, 0xf7, 0x22, 0x28, 0xbe, 0xfb, 0x1a, 0x1f, 0xfb, 0x8c, 0x2d, + 0xa, 0xda, 0x6, 0x63, 0xfb, 0x63, 0x5, 0x3f, 0x6, 0x7f, 0x57, 0x5, + 0xd8, 0x6, 0x64, 0xfb, 0x57, 0x89, 0xa, 0xf7, 0x1b, 0x16, 0xb1, 0xf7, + 0x57, 0x5, 0xf7, 0x55, 0x6, 0x96, 0xbf, 0x5, 0xfb, 0x54, 0x6, 0xb4, + 0xf7, 0x63, 0x5, 0xf0, 0x6, 0xf7, 0x2a, 0xb5, 0x60, 0xfb, 0x16, 0xfb, + 0x1a, 0x21, 0xfb, 0x27, 0xfb, 0x3a, 0x1f, 0xe, 0x7e, 0xbf, 0xf8, 0x4e, + 0xbf, 0xdf, 0xbc, 0x9b, 0xbd, 0x1, 0x61, 0x7e, 0x15, 0xf7, 0x8f, 0x6, + 0x96, 0xbf, 0x5, 0xfb, 0x3, 0x6, 0xe2, 0xf8, 0x37, 0xf7, 0x5a, 0xfc, + 0x6b, 0x5, 0xd7, 0x6, 0xf1, 0xf8, 0x82, 0x5, 0xdb, 0x6, 0x96, 0xbf, + 0x5, 0xfb, 0x8b, 0x82, 0xa, 0xf7, 0x2, 0x6, 0x34, 0xfc, 0x3b, 0xfb, + 0x58, 0xf8, 0x6f, 0x5, 0xfb, 0x34, 0x6, 0x7f, 0x57, 0x5, 0xde, 0x6, + 0x30, 0xfc, 0x4e, 0x7b, 0xa, 0xf7, 0x6c, 0xf8, 0xe5, 0x15, 0xbe, 0x80, + 0x5, 0x9f, 0x97, 0xa8, 0xb4, 0xbe, 0x1b, 0xac, 0x9e, 0x78, 0x7a, 0xa1, + 0x1f, 0x7c, 0x9e, 0x9f, 0x7d, 0xac, 0x1b, 0xd2, 0xbb, 0xcb, 0xb2, 0x9f, + 0x1f, 0x58, 0x94, 0x5, 0x73, 0x7d, 0x6d, 0x64, 0x64, 0x1b, 0x70, 0x7c, + 0x99, 0x9a, 0x7b, 0x1f, 0x9d, 0x78, 0x76, 0x9e, 0x5e, 0x1b, 0x50, 0x4e, + 0x5d, 0x55, 0x6c, 0x1f, 0xe, 0x79, 0xc1, 0xf8, 0x7b, 0xc1, 0xf7, 0x6c, + 0x7d, 0xa, 0xf7, 0x82, 0xf9, 0x64, 0x15, 0xf7, 0xa0, 0x27, 0x9b, 0xa9, + 0xfb, 0x7f, 0xf7, 0x23, 0x5, 0xfb, 0x91, 0xfc, 0xd9, 0x25, 0xa, 0x79, + 0xc1, 0xf8, 0x7a, 0xc1, 0x1, 0xaa, 0xc2, 0xf8, 0x45, 0xc3, 0x3, 0xf7, + 0x97, 0xf8, 0xff, 0x15, 0xf7, 0xbb, 0xef, 0x78, 0xd5, 0xfb, 0xb5, 0xfb, + 0x25, 0x5, 0xfb, 0x68, 0xfc, 0x48, 0x25, 0xa, 0x79, 0xc1, 0xf8, 0x7b, + 0xc1, 0xf7, 0x5a, 0x7d, 0xa, 0xf7, 0x4b, 0xf9, 0x2, 0x15, 0xb1, 0x7a, + 0xf7, 0x40, 0xf7, 0x7, 0xf7, 0xf, 0xfb, 0x7, 0xb6, 0x9c, 0xfb, 0x8, + 0xf7, 0x2d, 0x89, 0xa, 0xfb, 0xdd, 0xfc, 0xc7, 0x25, 0xa, 0x79, 0xbf, + 0xf8, 0x7d, 0xc1, 0xd1, 0xbc, 0x9c, 0xbc, 0x1, 0x9e, 0xc6, 0xf8, 0x36, + 0xc1, 0x3, 0xf7, 0x2e, 0xf9, 0x2a, 0x15, 0xbd, 0x80, 0x5, 0x9f, 0x97, + 0xa7, 0xb5, 0xbb, 0x1b, 0xae, 0x9c, 0x7a, 0x7a, 0x9d, 0x1f, 0x7b, 0x9c, + 0x9e, 0x7b, 0xb0, 0x1b, 0xd1, 0xbb, 0xca, 0xb2, 0x9e, 0x1f, 0x58, 0x94, + 0x5, 0x73, 0x7e, 0x6b, 0x65, 0x66, 0x1b, 0x73, 0x7e, 0x97, 0x99, 0x7d, + 0x1f, 0x9d, 0x79, 0x76, 0xa1, 0x5b, 0x1b, 0x52, 0x4f, 0x5d, 0x55, 0x6d, + 0x1f, 0xfb, 0xc, 0xfc, 0x56, 0x25, 0xa, 0x79, 0xbe, 0xf8, 0x7e, 0xc1, + 0xce, 0xf7, 0x9, 0x1, 0xad, 0xc2, 0xf7, 0x40, 0xdf, 0xc9, 0xde, 0x9e, + 0xc3, 0x3, 0xf8, 0x2b, 0xf9, 0x18, 0x15, 0xde, 0x6, 0xa5, 0xf7, 0x9, + 0x5, 0x37, 0x6, 0xfb, 0x3f, 0xfb, 0x9, 0x15, 0xdf, 0x6, 0xa4, 0xf7, + 0x9, 0x7b, 0xa, 0xfb, 0x91, 0xfc, 0xb9, 0x25, 0xa, 0xcb, 0x76, 0xf8, + 0x3f, 0x77, 0x1, 0xbb, 0xe4, 0x15, 0xb9, 0x5d, 0xf7, 0x5b, 0xf7, 0x3d, + 0xf7, 0x1e, 0xfb, 0x3d, 0xbb, 0xb2, 0xfb, 0x20, 0xf7, 0x3e, 0xf7, 0x69, + 0xf7, 0x41, 0x63, 0xb8, 0xfb, 0x67, 0xfb, 0x41, 0xfb, 0x1f, 0xf7, 0x40, + 0x5d, 0x64, 0xf7, 0x1e, 0xfb, 0x3d, 0x5, 0xe, 0x82, 0xbf, 0x5d, 0x76, + 0xf8, 0xae, 0xc0, 0x12, 0x13, 0x60, 0xf8, 0xbd, 0xf7, 0xab, 0x15, 0x95, + 0xbe, 0x8d, 0xde, 0x67, 0xca, 0xc3, 0xc6, 0x18, 0x68, 0xab, 0x59, 0x57, + 0x5, 0xaa, 0x6c, 0x5f, 0xa0, 0x4a, 0x1b, 0xfb, 0x3f, 0xfb, 0x7, 0xfb, + 0x2b, 0xfb, 0x1d, 0x71, 0x1f, 0x7b, 0x3b, 0x96, 0x41, 0xae, 0x58, 0x4c, + 0x48, 0x18, 0xaf, 0x6c, 0xc6, 0xc9, 0x5, 0x13, 0xa0, 0x6d, 0xad, 0xb9, + 0x7a, 0xc4, 0x1b, 0xf7, 0x31, 0xf7, 0xa, 0xf7, 0x16, 0xf7, 0x32, 0xaa, + 0x1f, 0x55, 0x89, 0x15, 0xfb, 0xe, 0x73, 0x30, 0xfb, 0x4, 0xfb, 0x13, + 0x1b, 0x5f, 0x67, 0x9a, 0xa3, 0x71, 0x1f, 0xf7, 0xe3, 0xf7, 0xf2, 0xa2, + 0x57, 0x88, 0x4c, 0x84, 0x63, 0x19, 0x63, 0xf7, 0x57, 0x15, 0xfb, 0xe6, + 0xfb, 0xf6, 0x72, 0xb6, 0x84, 0xc3, 0x96, 0xc7, 0x19, 0xe1, 0x9d, 0xdb, + 0xf7, 0x2b, 0xf7, 0x29, 0x1b, 0xbf, 0xaf, 0x7b, 0x71, 0xa3, 0x1f, 0xe, + 0x59, 0xa, 0x96, 0xf8, 0x91, 0x26, 0xa, 0xf7, 0x3c, 0xf7, 0x2f, 0x15, + 0xf7, 0x99, 0x26, 0x9c, 0xa9, 0xfb, 0x7b, 0x79, 0xa, 0x59, 0xa, 0xf7, + 0x6c, 0xf8, 0xfa, 0x15, 0xf7, 0xb3, 0xf7, 0x0, 0x7a, 0xd2, 0xfb, 0xb2, + 0xfb, 0x25, 0x5, 0xfb, 0x51, 0xfb, 0x1f, 0x26, 0xa, 0xe, 0x70, 0xa, + 0xf7, 0x4d, 0xc2, 0x50, 0xa, 0xf7, 0x42, 0xf9, 0xe, 0x15, 0xf7, 0x3d, + 0xf7, 0x8, 0xf7, 0xa, 0xfb, 0x8, 0xb5, 0x9c, 0xfb, 0x4, 0xf7, 0x2e, + 0x5, 0x3c, 0x6, 0xfb, 0x43, 0xfb, 0x2e, 0x5, 0xfb, 0x12, 0xfb, 0x22, + 0x26, 0xa, 0xe, 0x70, 0xa, 0x50, 0xa, 0xf7, 0xf8, 0xf9, 0x21, 0x15, + 0xdc, 0x6, 0xa4, 0xf7, 0xa, 0x6b, 0xa, 0xfb, 0x3b, 0xfb, 0xa, 0x85, + 0xa, 0xa3, 0xf7, 0xa, 0x6b, 0xa, 0xfb, 0x76, 0xfb, 0x9a, 0x26, 0xa, + 0xe, 0x8b, 0xc1, 0xf8, 0x5d, 0xc1, 0x84, 0xa, 0xf7, 0x47, 0xc3, 0x3, + 0xb4, 0x16, 0x31, 0xa, 0xf7, 0x34, 0xf8, 0xc7, 0x15, 0xf7, 0xc3, 0xf1, + 0x79, 0xd5, 0xfb, 0xc1, 0xfb, 0x24, 0x5, 0xe, 0x8b, 0xc1, 0xd1, 0x61, + 0xa, 0xd6, 0xc1, 0x1, 0xf8, 0x92, 0xc0, 0x3, 0xaf, 0x16, 0xf7, 0xba, + 0x4d, 0xa, 0xfb, 0x21, 0x6, 0x98, 0xd1, 0x5, 0xf7, 0x15, 0x6, 0xf7, + 0x1, 0xf7, 0x5, 0xb5, 0xf7, 0x32, 0xd3, 0x46, 0xb0, 0x37, 0x1f, 0xfb, + 0x24, 0x6, 0x99, 0xd6, 0x5, 0xf3, 0x76, 0xa, 0xfb, 0x95, 0x5f, 0xa, + 0xf4, 0x6, 0x3a, 0x58, 0xa, 0x23, 0x6, 0xf7, 0x44, 0xf7, 0x10, 0x15, + 0xae, 0xf7, 0x5d, 0x5, 0xf7, 0x1a, 0x6, 0xc0, 0xcd, 0x7d, 0x5a, 0x28, + 0x41, 0x64, 0x38, 0x1f, 0xe, 0x7c, 0xc2, 0x60, 0xc3, 0xf7, 0xda, 0xc3, + 0xf7, 0x1f, 0xc2, 0x12, 0xf7, 0xc4, 0xc0, 0xf7, 0x34, 0xc1, 0x5f, 0xc4, + 0x13, 0x7c, 0x9a, 0x88, 0x15, 0xf7, 0x1c, 0x6, 0xe8, 0xf8, 0x76, 0x5, + 0xd1, 0x99, 0xa5, 0xa4, 0xf2, 0x1b, 0xd8, 0xc0, 0x8a, 0x54, 0x1f, 0x28, + 0xfb, 0x69, 0xb9, 0xfb, 0x23, 0x1a, 0x41, 0xf7, 0x17, 0x73, 0xad, 0x7c, + 0x1e, 0x13, 0xba, 0xb8, 0x76, 0x98, 0x74, 0x74, 0x1a, 0x43, 0xfb, 0x26, + 0x6d, 0x6d, 0x59, 0x5f, 0xa4, 0xab, 0x69, 0x1e, 0x6b, 0x53, 0x5, 0x6d, + 0xb4, 0xc0, 0x71, 0xc4, 0x1b, 0xde, 0xf7, 0x33, 0xb3, 0xf7, 0x1a, 0xb9, + 0x5c, 0xac, 0x5c, 0x9f, 0x1f, 0x53, 0xa5, 0x3e, 0x95, 0xae, 0x1a, 0x13, + 0x7c, 0xe2, 0xf7, 0x6a, 0x5d, 0xf7, 0x25, 0x1a, 0xe8, 0x48, 0xa0, 0xfb, + 0x9, 0x2b, 0x35, 0x6f, 0xfb, 0x1f, 0x79, 0x1e, 0x85, 0x70, 0x7b, 0xa, + 0x81, 0x53, 0x5, 0xde, 0x6, 0x4c, 0xfb, 0xda, 0x6b, 0xa, 0xe, 0x4b, + 0xa, 0xf7, 0x80, 0xf8, 0xe7, 0x15, 0xf7, 0xa5, 0x24, 0x9d, 0xaa, 0xfb, + 0x85, 0xf7, 0x29, 0x5, 0xf4, 0xfd, 0x37, 0x21, 0xa, 0x3b, 0xa, 0xf7, + 0x61, 0x77, 0x4a, 0xa, 0x13, 0x7e, 0xf7, 0x3c, 0xf8, 0x85, 0x15, 0xb1, + 0x79, 0xf7, 0x43, 0xf7, 0xb, 0xf7, 0x10, 0xfb, 0xb, 0xba, 0x9d, 0xfb, + 0xc, 0xf7, 0x31, 0x5, 0x3a, 0x6, 0xb3, 0xfd, 0x25, 0x21, 0xa, 0x4b, + 0xa, 0xf8, 0xa0, 0xf8, 0xe7, 0x15, 0x72, 0xd8, 0xfb, 0x9e, 0xfb, 0x29, + 0x9d, 0x6c, 0x5, 0xf7, 0x20, 0xfc, 0x83, 0x21, 0xa, 0x3b, 0xa, 0xc6, + 0xbd, 0x9e, 0xbc, 0x90, 0x76, 0x4a, 0xa, 0x13, 0xbd, 0x80, 0xf7, 0x21, + 0xf8, 0x9e, 0x15, 0xbd, 0x81, 0x5, 0x9a, 0x92, 0xba, 0xbd, 0xb0, 0x1b, + 0xb1, 0x9e, 0x71, 0x77, 0xa5, 0x1f, 0x7e, 0x9b, 0x9e, 0x81, 0xa7, 0x1b, + 0x13, 0xbb, 0x80, 0xcc, 0xbe, 0xba, 0xc2, 0xab, 0x1f, 0x8a, 0x6, 0x5a, + 0x94, 0x5, 0x73, 0x7c, 0x68, 0x66, 0x65, 0x1b, 0x72, 0x7d, 0x94, 0x97, + 0x7e, 0x1f, 0x13, 0x7d, 0x80, 0x9f, 0x75, 0x7a, 0xa6, 0x55, 0x1b, 0x56, + 0x4c, 0x64, 0x4a, 0x67, 0x1f, 0xf7, 0x8e, 0xfc, 0xa1, 0x22, 0xa, 0x13, + 0xbd, 0x80, 0x3a, 0xa, 0x13, 0x7d, 0x80, 0x98, 0xce, 0x15, 0x13, 0xbd, + 0x80, 0x2b, 0xa, 0x3b, 0xa, 0xd1, 0xf7, 0x8, 0x4a, 0xa, 0x13, 0x7e, + 0xf8, 0x1f, 0xf8, 0x9b, 0x15, 0xdf, 0x5c, 0xa, 0x36, 0x6, 0xfb, 0x42, + 0xfb, 0x8, 0x15, 0xe0, 0x5c, 0xa, 0x36, 0x6, 0xf7, 0xd, 0xfd, 0x12, + 0x21, 0xa, 0x3b, 0xa, 0xb1, 0xf7, 0x48, 0x6a, 0x76, 0x4a, 0xa, 0x13, + 0xbb, 0xf7, 0xb2, 0xf8, 0xc1, 0x15, 0x63, 0xae, 0x6d, 0xba, 0xc6, 0xc7, + 0xbc, 0xc5, 0xb5, 0x6a, 0xaa, 0x5b, 0x4d, 0x51, 0x59, 0x4f, 0x1e, 0xc9, + 0x95, 0x15, 0x13, 0x77, 0xa4, 0xa1, 0xa0, 0xa3, 0x9c, 0x9a, 0x81, 0x7d, + 0x72, 0x74, 0x75, 0x73, 0x7b, 0x7c, 0x97, 0x98, 0x1e, 0xb6, 0xfc, 0xce, + 0x22, 0xa, 0x13, 0xbb, 0x3a, 0xa, 0x13, 0x7b, 0x98, 0xce, 0x15, 0x13, + 0xbb, 0x2b, 0xa, 0x7c, 0xc1, 0xf7, 0x39, 0xc2, 0xf7, 0x13, 0xc2, 0x1, + 0x93, 0xc6, 0x3, 0xf7, 0xa5, 0xd7, 0x15, 0x58, 0x93, 0xb7, 0x63, 0xda, + 0x1b, 0xb8, 0xbb, 0x96, 0x96, 0xb3, 0x1f, 0x8a, 0xc1, 0x5, 0x82, 0x6a, + 0x62, 0x7e, 0x67, 0x1b, 0x3e, 0x6c, 0xbc, 0xcc, 0x8d, 0x1f, 0x97, 0x8f, + 0x98, 0x8c, 0x98, 0x1e, 0x8c, 0x98, 0x5, 0xf7, 0x91, 0x6, 0x93, 0xad, + 0x90, 0xa4, 0xaf, 0x1a, 0xd4, 0x6f, 0xd0, 0x33, 0x54, 0x65, 0x71, 0x62, + 0x68, 0x1e, 0x99, 0x88, 0x88, 0xc0, 0x2b, 0x1b, 0x55, 0x5f, 0x7e, 0x7b, + 0x5c, 0x1f, 0x56, 0x7, 0x98, 0xb0, 0xb6, 0x99, 0xb4, 0x1b, 0xbf, 0x9c, + 0x78, 0x6a, 0x8c, 0x1f, 0x80, 0x8b, 0x73, 0x87, 0x7c, 0x1e, 0x85, 0x72, + 0x5, 0x8f, 0x76, 0x75, 0x83, 0x76, 0x1b, 0x2c, 0x8a, 0xfb, 0x7, 0x59, + 0xfb, 0xe, 0x1a, 0x48, 0xbe, 0x6d, 0xc1, 0xa5, 0xe0, 0x90, 0xe1, 0xbc, + 0x1e, 0xce, 0xf7, 0x4b, 0x15, 0xcb, 0x9b, 0xbe, 0xca, 0xc9, 0x1b, 0xd5, + 0x87, 0x3e, 0x59, 0x87, 0x1f, 0xfb, 0xad, 0xfb, 0x18, 0x15, 0x75, 0x7b, + 0x58, 0x49, 0x4b, 0x1b, 0x68, 0x76, 0xa0, 0xaf, 0xd7, 0xd7, 0xa7, 0xc5, + 0x8c, 0x1f, 0xa7, 0xaa, 0x92, 0x87, 0x96, 0x1f, 0xe, 0xfb, 0x1c, 0x76, + 0xf7, 0x3a, 0xbe, 0xf7, 0xdc, 0xc0, 0x8a, 0x77, 0x12, 0xb9, 0xc5, 0x13, + 0xe8, 0xf7, 0x26, 0xfb, 0x1e, 0x15, 0x7c, 0xa1, 0x9f, 0x87, 0x9d, 0x1b, + 0xbe, 0xb3, 0xaa, 0xbf, 0xa3, 0x78, 0xa9, 0x7d, 0x90, 0x1f, 0x90, 0xa3, + 0xe1, 0x8f, 0xd3, 0xa9, 0xcb, 0xb3, 0x19, 0x80, 0xbf, 0x5, 0x76, 0x6c, + 0x31, 0x55, 0x38, 0x1b, 0xfb, 0x1c, 0x67, 0xda, 0xc8, 0xe3, 0xf2, 0xef, + 0xf7, 0x10, 0xc5, 0xbe, 0x7f, 0x69, 0xb0, 0x1f, 0x7b, 0x40, 0x51, 0xa, + 0x13, 0xd8, 0xb0, 0xf7, 0x41, 0x71, 0xa, 0x82, 0x60, 0x5, 0x13, 0xe8, + 0xa8, 0x62, 0x5d, 0x9a, 0x50, 0x1b, 0xfb, 0x58, 0x26, 0xfb, 0x1b, 0xfb, + 0x10, 0x26, 0xd7, 0x4d, 0xee, 0x81, 0x1f, 0x77, 0x44, 0x5, 0x8d, 0x90, + 0x92, 0x8c, 0x93, 0x1b, 0x98, 0x98, 0x7e, 0x80, 0x77, 0x79, 0x7d, 0x77, + 0x7f, 0x77, 0x91, 0x96, 0x82, 0x1f, 0xe, 0x7c, 0xc2, 0xf7, 0x34, 0xc4, + 0x7f, 0xa, 0xc5, 0x3, 0xf7, 0x7d, 0xf8, 0xe9, 0x15, 0xf7, 0xa8, 0x25, + 0x9d, 0xa9, 0xfb, 0x88, 0xf7, 0x27, 0x5, 0xfb, 0x39, 0xfc, 0x6b, 0x27, + 0xa, 0x7c, 0xc2, 0xf7, 0x33, 0xc5, 0x7f, 0xa, 0xc7, 0x3, 0xf7, 0x78, + 0xf8, 0x82, 0x15, 0xf7, 0xd0, 0xf2, 0x77, 0xd6, 0xfb, 0xc2, 0xfb, 0x26, + 0x5, 0x23, 0xfb, 0xd9, 0x27, 0xa, 0x7c, 0xc2, 0xf7, 0x34, 0xc4, 0xf7, + 0x2c, 0xc4, 0xf7, 0x18, 0xc3, 0x1, 0xc1, 0xc5, 0xf8, 0xb, 0xc6, 0x3, + 0xf7, 0x3b, 0xf8, 0x86, 0x15, 0xb1, 0x79, 0xf7, 0x41, 0xf7, 0xa, 0xf7, + 0xf, 0xfb, 0xa, 0xb8, 0x9d, 0xfb, 0x9, 0xf7, 0x30, 0x89, 0xa, 0xfb, + 0x7b, 0xfc, 0x59, 0x27, 0xa, 0x7c, 0xbd, 0xf7, 0x38, 0xc5, 0xf7, 0x32, + 0x76, 0xf7, 0x1c, 0xf7, 0x7, 0x1, 0xc1, 0xc5, 0xf7, 0x16, 0xe3, 0xcc, + 0xe2, 0x90, 0xc6, 0x3, 0xf8, 0x1f, 0xf8, 0xa6, 0x15, 0xe2, 0x6e, 0xa, + 0x33, 0x6, 0xfb, 0x45, 0xfb, 0x7, 0x15, 0xe3, 0x6e, 0xa, 0x33, 0x6, + 0xfb, 0x29, 0xfc, 0x50, 0x27, 0xa, 0x6f, 0xa, 0xf7, 0x7f, 0x77, 0x1, + 0xf7, 0x82, 0xf8, 0xe8, 0x15, 0xf7, 0x93, 0x25, 0x9c, 0xab, 0xfb, 0x75, + 0xf7, 0x26, 0x5, 0xfb, 0x61, 0xfd, 0x34, 0x33, 0xa, 0x6f, 0xa, 0xf7, + 0x7f, 0x77, 0x1, 0xdb, 0x16, 0xf8, 0x13, 0x46, 0xa, 0xfb, 0x3a, 0x6, + 0xd2, 0xf8, 0x12, 0x5, 0xfb, 0x4f, 0x67, 0xa, 0xf7, 0x1b, 0x6, 0x4e, + 0xfb, 0xdb, 0x5, 0xfb, 0x3b, 0x6, 0xf7, 0x2f, 0xf8, 0x4b, 0x15, 0xf7, + 0xa7, 0xf1, 0x70, 0xd7, 0xfb, 0x9d, 0xfb, 0x26, 0x5, 0xe, 0x6f, 0xa, + 0xf7, 0x6d, 0x77, 0x1, 0xf7, 0x36, 0xf8, 0x86, 0x15, 0xaf, 0x79, 0xf7, + 0x3c, 0xf7, 0xa, 0xf7, 0x9, 0xfb, 0xa, 0xb8, 0x9d, 0xfb, 0x5, 0xf7, + 0x30, 0x5, 0x3e, 0x6, 0xfb, 0x96, 0xfd, 0x22, 0x33, 0xa, 0x6f, 0xa, + 0xde, 0xf7, 0x7, 0x1, 0xf8, 0x2c, 0xf8, 0x9c, 0x15, 0xe4, 0x6e, 0xa, + 0x32, 0x6, 0xfb, 0x4b, 0xfb, 0x7, 0x15, 0xe6, 0x6e, 0xa, 0x31, 0x6, + 0xfb, 0x58, 0xfd, 0xf, 0x33, 0xa, 0x7c, 0xbe, 0xf7, 0xc6, 0xbf, 0xf7, + 0x7f, 0x77, 0x1, 0xaa, 0xc6, 0xf8, 0x2f, 0xce, 0x3, 0xf7, 0x9b, 0xf8, + 0x50, 0x15, 0xf7, 0x13, 0xc6, 0xd2, 0x5d, 0xad, 0x28, 0x8e, 0x7d, 0x19, + 0xaa, 0x69, 0x4c, 0x9e, 0x53, 0x1b, 0xfb, 0x66, 0x23, 0xfb, 0x11, 0xfb, + 0x11, 0x22, 0xe5, 0x55, 0xf7, 0x15, 0xf7, 0x6e, 0xef, 0xf7, 0x26, 0xf7, + 0x35, 0xd9, 0x6c, 0xef, 0x37, 0xcb, 0x1f, 0xf2, 0xbd, 0x78, 0xb8, 0xfb, + 0x18, 0x4b, 0x66, 0x9d, 0x62, 0xa2, 0x5d, 0x90, 0x19, 0x5e, 0x5d, 0xac, + 0x88, 0xaf, 0x79, 0xa9, 0x7f, 0x19, 0x31, 0x5f, 0x5, 0xfb, 0x2f, 0xfb, + 0xe7, 0x15, 0xf7, 0x7, 0xf7, 0x1, 0xd9, 0xf7, 0x11, 0x1e, 0x92, 0x6, + 0xf7, 0x18, 0xb1, 0x5c, 0x52, 0x22, 0xfb, 0xa, 0x2a, 0xfb, 0xe, 0x27, + 0x44, 0xb6, 0xd1, 0x1f, 0xe, 0x8b, 0xbf, 0xf7, 0xc5, 0xc0, 0xdb, 0xbb, + 0x9b, 0xbf, 0x1, 0xea, 0xc3, 0xf7, 0xa9, 0xc3, 0x3, 0xf7, 0x45, 0xf8, + 0x96, 0x15, 0xbb, 0x7d, 0x5, 0x9a, 0x92, 0xb9, 0xbc, 0xaf, 0x1b, 0xaa, + 0x9b, 0x79, 0x7a, 0x9d, 0x1f, 0x7c, 0x9b, 0x9e, 0x7d, 0xae, 0x1b, 0xcb, + 0xc6, 0xb9, 0xc2, 0xa9, 0x1f, 0x59, 0x97, 0x5, 0x73, 0x7d, 0x5e, 0x62, + 0x65, 0x1b, 0x73, 0x7e, 0x9a, 0x9a, 0x7c, 0x1f, 0x9d, 0x7a, 0x78, 0x9f, + 0x62, 0x1b, 0x56, 0x4e, 0x65, 0x4b, 0x68, 0x1f, 0xfb, 0x46, 0xfc, 0x96, + 0x15, 0xf7, 0x76, 0x6, 0x97, 0xbf, 0x5, 0x35, 0x6, 0xbb, 0xf7, 0x7c, + 0x5, 0xb6, 0xc0, 0xda, 0xb7, 0xca, 0x1b, 0xb1, 0xbc, 0x82, 0x5f, 0x84, + 0x8b, 0x82, 0x89, 0x82, 0x1f, 0x58, 0xfb, 0x85, 0x5, 0x37, 0x82, 0xa, + 0xf7, 0x73, 0x6, 0x97, 0xbf, 0x5, 0x37, 0x6, 0xbd, 0xf7, 0x86, 0x5, + 0x8e, 0x98, 0x8d, 0x97, 0x96, 0x1a, 0xc5, 0x8c, 0x67, 0xae, 0x38, 0x1b, + 0x44, 0x3e, 0x65, 0x5f, 0x4d, 0x1f, 0x9a, 0xd0, 0x5, 0xfb, 0x21, 0x6, + 0x80, 0x56, 0x5, 0xe0, 0x6, 0x4b, 0xfb, 0xc5, 0x5, 0x36, 0x6, 0xe, + 0x5a, 0xa, 0xf7, 0x7d, 0xf8, 0xe7, 0x15, 0xf7, 0x93, 0x23, 0x9a, 0xaa, + 0xfb, 0x73, 0xf7, 0x2a, 0x5, 0xfb, 0x73, 0xfc, 0x90, 0x29, 0xa, 0xe, + 0x5a, 0xa, 0xc4, 0xf7, 0x38, 0x29, 0xa, 0xf7, 0x15, 0xf7, 0xcc, 0x15, + 0xf7, 0xba, 0xea, 0x7b, 0xe1, 0xfb, 0xb9, 0xfb, 0x2a, 0x5, 0xe, 0x5d, + 0xa, 0xf7, 0x62, 0x77, 0x49, 0xa, 0xf7, 0x43, 0xf8, 0x85, 0x15, 0xae, + 0x79, 0xf7, 0x38, 0xf7, 0xb, 0xf7, 0x8, 0xfb, 0xb, 0xb7, 0x9d, 0xfb, + 0x4, 0xf7, 0x31, 0x5, 0x3f, 0x6, 0xfb, 0xb5, 0xfc, 0x7e, 0x29, 0xa, + 0xe, 0x5d, 0xa, 0xc9, 0xbd, 0x9c, 0xbc, 0x49, 0xa, 0xf7, 0x2c, 0xf8, + 0xa1, 0x15, 0xbb, 0x80, 0x5, 0x9a, 0x91, 0xb6, 0xbb, 0xaf, 0x1b, 0xa3, + 0x9c, 0x7c, 0x7b, 0x9d, 0x1f, 0x7a, 0x9f, 0x9f, 0x78, 0xaa, 0x1b, 0xc8, + 0xc5, 0xbb, 0xc2, 0xa8, 0x1f, 0x5b, 0x94, 0x5, 0x73, 0x7d, 0x63, 0x65, + 0x67, 0x1b, 0x75, 0x7b, 0x99, 0x98, 0x7c, 0x1f, 0x9e, 0x75, 0x76, 0x9f, + 0x69, 0x1b, 0x59, 0x50, 0x67, 0x4a, 0x69, 0x1f, 0x2c, 0xfb, 0xfd, 0x29, + 0xa, 0xe, 0x5d, 0xa, 0xd3, 0xf7, 0x7, 0x49, 0xa, 0xf8, 0x11, 0xf8, + 0x9c, 0x15, 0xda, 0x6, 0xa3, 0xf7, 0x7, 0x89, 0xa, 0xfb, 0x38, 0xfb, + 0x7, 0x15, 0xdc, 0x6, 0xa2, 0xf7, 0x7, 0x5, 0x3a, 0x6, 0xfb, 0x62, + 0xfc, 0x6b, 0x29, 0xa, 0xe, 0xc6, 0x76, 0xf7, 0x55, 0xc6, 0xf7, 0x45, + 0x77, 0x1, 0xf7, 0xad, 0xf8, 0x2e, 0x6c, 0xa, 0x9f, 0x75, 0x71, 0x6f, + 0x70, 0x6d, 0x1e, 0xfb, 0x5c, 0xfb, 0x47, 0x15, 0xf8, 0x3e, 0x6, 0x96, + 0xc6, 0x5, 0xfc, 0x3e, 0x6, 0xf7, 0x1b, 0xfb, 0x64, 0x6c, 0xa, 0x9d, + 0x75, 0x71, 0x6f, 0x72, 0x6d, 0x1e, 0xe, 0x7f, 0xc3, 0x63, 0x76, 0xf8, + 0x2e, 0xc2, 0x8e, 0x77, 0x12, 0x13, 0x60, 0xa3, 0xa3, 0x15, 0xa7, 0x62, + 0xcb, 0xbe, 0x5, 0x13, 0x90, 0x69, 0xb1, 0xc0, 0x7f, 0xbd, 0x1b, 0xf7, + 0x14, 0xf7, 0xf, 0xdd, 0xf7, 0x29, 0xa6, 0x1f, 0x95, 0xbf, 0x86, 0xbf, + 0x72, 0xb1, 0xc8, 0xbc, 0x18, 0x6f, 0xb4, 0x4c, 0x58, 0x5, 0x13, 0xa0, + 0xac, 0x65, 0x5a, 0x9a, 0x53, 0x1b, 0xfb, 0x2d, 0x21, 0x22, 0xfb, 0x11, + 0x73, 0x1f, 0x82, 0x55, 0x91, 0x54, 0xa6, 0x65, 0x8, 0xdb, 0x8d, 0x15, + 0xf7, 0xc6, 0xf7, 0x8d, 0x9c, 0x6e, 0x8f, 0x66, 0x83, 0x65, 0x19, 0x7e, + 0x5d, 0x5, 0x68, 0x7d, 0x52, 0x2e, 0xfb, 0x18, 0x1b, 0x65, 0x66, 0x93, + 0xa0, 0x6f, 0x1f, 0x69, 0xb0, 0x15, 0x78, 0xa7, 0x86, 0xb3, 0x92, 0xb3, + 0x8, 0xf6, 0x9f, 0xea, 0xcf, 0xf3, 0x1b, 0xaa, 0xb6, 0x84, 0x72, 0xab, + 0x1f, 0xe, 0x4e, 0xa, 0xf7, 0x80, 0x77, 0x12, 0xe8, 0xc6, 0x13, 0xb8, + 0xf7, 0x75, 0xf8, 0xea, 0x15, 0xf7, 0x9c, 0x21, 0x9b, 0xad, 0xfb, 0x7c, + 0xf7, 0x26, 0x5, 0xfb, 0x65, 0xfb, 0xb8, 0x24, 0xa, 0x4e, 0xa, 0xf7, + 0x80, 0x77, 0x12, 0xdd, 0xc6, 0x13, 0xb8, 0xf7, 0x77, 0xf8, 0x81, 0x15, + 0xf7, 0xd4, 0xf3, 0x77, 0xd6, 0xfb, 0xc7, 0xfb, 0x20, 0x5, 0xfb, 0x3b, + 0xfb, 0x2c, 0x24, 0xa, 0x4e, 0xa, 0xf7, 0x82, 0x77, 0x12, 0xe8, 0xc6, + 0x13, 0xb8, 0xf7, 0x39, 0xf8, 0x98, 0x15, 0xaf, 0x7a, 0xf7, 0x3d, 0xf7, + 0xb, 0xf7, 0xc, 0xfb, 0xb, 0xb8, 0x9c, 0xfb, 0x7, 0xf7, 0x32, 0x5, + 0x3d, 0x6, 0xfb, 0xaa, 0xfb, 0xba, 0x24, 0xa, 0x4e, 0xa, 0xe8, 0xf7, + 0x8, 0x12, 0xe8, 0xc6, 0x13, 0xb8, 0xf8, 0x10, 0xf8, 0xa5, 0x15, 0xdc, + 0x6, 0xa3, 0xf7, 0x8, 0x6b, 0xa, 0xfb, 0x3d, 0xfb, 0x8, 0x15, 0xdf, + 0x6, 0xa2, 0xf7, 0x8, 0x7b, 0xa, 0xfb, 0x56, 0xfb, 0x9d, 0x24, 0xa, + 0xfb, 0x31, 0xc1, 0xf8, 0x72, 0xc1, 0x1, 0xe0, 0xcb, 0xf7, 0xf6, 0xcb, + 0x3, 0xf7, 0x70, 0xf8, 0x89, 0x15, 0xf7, 0xdb, 0xef, 0x76, 0xd2, 0xfb, + 0xcc, 0xfb, 0x20, 0x5, 0xfb, 0x89, 0xfd, 0xf, 0x15, 0x7f, 0x55, 0x5, + 0xf7, 0xa3, 0x2a, 0xa, 0x31, 0x6, 0xf8, 0x36, 0xf8, 0x72, 0x5, 0xce, + 0x4d, 0xa, 0xfb, 0x52, 0x5f, 0xa, 0xc6, 0x6, 0xfb, 0x82, 0xfb, 0xa1, + 0x26, 0xf7, 0xa1, 0x5, 0xcf, 0x4d, 0xa, 0xfb, 0x5f, 0x2d, 0xa, 0xd3, + 0x6, 0xf7, 0xf, 0xfb, 0xd6, 0xfb, 0x1e, 0xfb, 0x30, 0x5, 0xe, 0xfb, + 0x31, 0xc0, 0xf7, 0xc, 0xc1, 0xf7, 0xe1, 0xc1, 0xf7, 0xb, 0xc0, 0x1, + 0xdc, 0xc2, 0xf8, 0x3a, 0xc4, 0x3, 0x88, 0x23, 0x15, 0x80, 0x56, 0x5, + 0xf7, 0xba, 0x80, 0xa, 0xfb, 0x2f, 0x6, 0xb6, 0xf7, 0x64, 0x5, 0x65, + 0xa3, 0xb9, 0x59, 0xe7, 0x1b, 0xf7, 0x22, 0xf7, 0x18, 0xf7, 0x11, 0xf7, + 0x2a, 0xf3, 0x37, 0xc9, 0x2c, 0x34, 0x49, 0x71, 0x5e, 0x5e, 0x1f, 0xbc, + 0xf7, 0x87, 0x5, 0xfb, 0x1e, 0x6, 0x7f, 0x56, 0x5, 0xdf, 0x6, 0xfb, + 0x20, 0xfd, 0x3c, 0x5, 0xf7, 0x17, 0xf7, 0xf3, 0x15, 0xe2, 0x9d, 0xdb, + 0xd0, 0xf7, 0x1, 0x1b, 0xf7, 0x5, 0xa5, 0x3c, 0x52, 0xfb, 0xa, 0xfb, + 0xf, 0x3c, 0x34, 0x2d, 0x4c, 0xd8, 0xef, 0xa0, 0x1f, 0xe, 0xfb, 0x31, + 0xbd, 0xf8, 0x64, 0xbc, 0xd8, 0xf7, 0x4, 0x1, 0xf8, 0x15, 0xf8, 0x81, + 0x15, 0xe3, 0x6, 0xa4, 0xf7, 0x4, 0x5, 0x33, 0x6, 0xfb, 0x4b, 0xfb, + 0x4, 0x15, 0xe6, 0x6, 0xa4, 0xf7, 0x4, 0x5, 0x31, 0x6, 0xfb, 0xb0, + 0xfd, 0x5c, 0x15, 0x7f, 0x59, 0x5, 0xf7, 0xa2, 0x6, 0x97, 0xbd, 0x5, + 0x30, 0x6, 0xf8, 0x36, 0xf8, 0x64, 0x5, 0xce, 0x6, 0x96, 0xbc, 0x5, + 0xfb, 0x51, 0x6, 0x7f, 0x5a, 0x5, 0xc6, 0x6, 0xfb, 0x80, 0xfb, 0x97, + 0x24, 0xf7, 0x97, 0x5, 0xd0, 0x6, 0x95, 0xbc, 0x5, 0xfb, 0x5f, 0x6, + 0x81, 0x5a, 0x5, 0xd2, 0x6, 0xf7, 0xf, 0xfb, 0xc8, 0xfb, 0x1e, 0xfb, + 0x30, 0x5, 0xe, 0x8b, 0xc1, 0xf8, 0x3e, 0xc2, 0xcf, 0xf7, 0x5, 0x1, + 0xaf, 0x16, 0x44, 0xa, 0xf8, 0x3e, 0x37, 0xa, 0xfc, 0x3e, 0x5, 0xfb, + 0x45, 0x6, 0xf7, 0xa8, 0xf8, 0xb9, 0x15, 0xe6, 0x6, 0xa4, 0xf7, 0x5, + 0x5, 0x31, 0x6, 0xe, 0x8b, 0xc1, 0xf7, 0xd2, 0xc1, 0x1, 0xf7, 0xab, + 0xc3, 0x3, 0xe5, 0x16, 0xf8, 0x2d, 0x2a, 0xa, 0xfb, 0x43, 0x6, 0xd4, + 0xf8, 0x8, 0x5, 0xfb, 0x5b, 0x5f, 0xa, 0xf7, 0x24, 0x6, 0x4b, 0xfb, + 0xd2, 0x5, 0xfb, 0x46, 0x6, 0xe, 0x7a, 0xc1, 0x69, 0x76, 0xf8, 0xa2, + 0xc1, 0x12, 0xf7, 0x23, 0xc6, 0xf7, 0xd5, 0xc1, 0x13, 0xb8, 0x68, 0x7a, + 0x15, 0xf7, 0x56, 0x47, 0xa, 0x49, 0x6, 0xec, 0xf8, 0x6b, 0x5, 0xc9, + 0x47, 0xa, 0xfb, 0x4e, 0x45, 0xa, 0xcc, 0x6, 0x2a, 0xfc, 0x6b, 0x5, + 0x46, 0x6, 0xf7, 0x92, 0xa0, 0x15, 0x13, 0x78, 0x67, 0xa3, 0xa8, 0x63, + 0xce, 0x1b, 0xf7, 0x13, 0x98, 0x7c, 0xa, 0xba, 0x36, 0xa, 0xfb, 0x66, + 0x38, 0xa, 0xf7, 0x1, 0x6, 0x4b, 0xfb, 0xdc, 0x5, 0x3a, 0x7b, 0x88, + 0x4d, 0x36, 0x1b, 0x71, 0x5b, 0x91, 0xf7, 0xe, 0xa2, 0x1f, 0x9a, 0xe6, + 0x71, 0xa, 0xe, 0xfb, 0x31, 0xc1, 0xf8, 0x84, 0xc4, 0xe4, 0xf7, 0xa, + 0x1, 0xf8, 0x7f, 0xf8, 0xaf, 0x54, 0xa, 0xfb, 0xa2, 0xfd, 0xb2, 0x15, + 0x81, 0xa8, 0xa1, 0x85, 0xa8, 0x1b, 0xf6, 0x92, 0xb6, 0xf7, 0x12, 0xad, + 0x1f, 0xea, 0xf8, 0x45, 0x5, 0xfb, 0x25, 0x82, 0xa, 0xdf, 0x6, 0x39, + 0xfc, 0x3, 0x74, 0x2e, 0x83, 0x69, 0x5c, 0x89, 0x19, 0x6c, 0x8a, 0x7c, + 0x91, 0x73, 0x92, 0x8, 0xfb, 0x93, 0x81, 0x15, 0x80, 0x55, 0x5, 0xf7, + 0x3c, 0x6, 0x98, 0xc1, 0x5, 0x4e, 0x6, 0xf7, 0x1, 0xf8, 0x84, 0x5, + 0xc3, 0x46, 0xa, 0xfb, 0x3e, 0x38, 0xa, 0xc1, 0x6, 0xfb, 0x1, 0xfc, + 0x84, 0x5, 0xf7, 0x17, 0xf9, 0x14, 0x54, 0xa, 0xe, 0x3e, 0xa, 0x9f, + 0x16, 0xf8, 0x91, 0x6, 0xbe, 0xf7, 0x91, 0x71, 0xa, 0x5f, 0xfb, 0x5b, + 0x5, 0xfb, 0xb2, 0x6, 0xb0, 0xf7, 0x4e, 0xf7, 0x53, 0xd1, 0x96, 0xc2, + 0xfb, 0x53, 0x44, 0xb6, 0xf7, 0x6a, 0x5, 0xf7, 0x13, 0x2a, 0xa, 0xfb, + 0xb6, 0x45, 0xa, 0xf7, 0x0, 0x6, 0x5c, 0xfb, 0x80, 0x30, 0x69, 0x80, + 0x55, 0xe6, 0xad, 0x6b, 0xfb, 0x38, 0x57, 0xa, 0xe, 0x8b, 0xc2, 0xf8, + 0x9b, 0xc2, 0x1, 0xc3, 0x16, 0xf8, 0x57, 0x6, 0x98, 0xc2, 0x5, 0xfb, + 0x56, 0x6, 0xbf, 0xf7, 0x89, 0xf7, 0x2e, 0xc0, 0x97, 0xc2, 0xfb, 0x2d, + 0x56, 0xc5, 0xf7, 0xa6, 0x5, 0xfb, 0x90, 0x56, 0xa, 0xf7, 0x53, 0x6, + 0x58, 0xfb, 0x85, 0xfb, 0x33, 0x55, 0x80, 0x55, 0xf7, 0x32, 0xc0, 0x59, + 0xfb, 0x73, 0x5, 0xfb, 0x57, 0x6, 0xe, 0x8b, 0xc1, 0xf7, 0x5b, 0xc2, + 0xf7, 0x5c, 0xc1, 0x1, 0x85, 0xc3, 0x3, 0xf7, 0xc2, 0xc1, 0x15, 0xb2, + 0xf7, 0x5b, 0x5, 0xda, 0x60, 0xa, 0xc1, 0x6, 0xac, 0xf7, 0x3a, 0x5, + 0x55, 0x38, 0xa, 0x3c, 0x6, 0xb2, 0xf7, 0x5c, 0x5, 0xf7, 0x2a, 0x6, + 0x78, 0x27, 0x6a, 0xa, 0xa9, 0xf7, 0x2e, 0x5, 0xfb, 0xa5, 0x6, 0xfb, + 0x3f, 0xfb, 0x3d, 0xfb, 0x21, 0xfb, 0x6a, 0xfb, 0x3, 0xc3, 0x2b, 0xf7, + 0x32, 0x1f, 0xf7, 0xb5, 0x6, 0xaa, 0xf7, 0x2c, 0x52, 0xa, 0x77, 0x29, + 0x5, 0xfb, 0x62, 0x16, 0xfb, 0x25, 0x57, 0xc9, 0xf2, 0xf7, 0x3e, 0xf7, + 0x2c, 0xf7, 0xc, 0xf7, 0x1a, 0x8a, 0x1f, 0xe, 0x7c, 0xc2, 0xf7, 0x38, + 0xc1, 0xf7, 0x14, 0xc2, 0x1, 0x9e, 0xc2, 0xf7, 0x65, 0xba, 0xf7, 0x57, + 0xc2, 0x3, 0xf7, 0xad, 0xd3, 0x15, 0x57, 0x9b, 0xaa, 0x68, 0xd5, 0x1b, + 0xb6, 0xba, 0x97, 0x96, 0xb2, 0x1f, 0xc2, 0x7, 0x82, 0x6d, 0x62, 0x7d, + 0x68, 0x1b, 0x4c, 0x64, 0xad, 0xd6, 0x99, 0x8e, 0xa5, 0x8f, 0x9a, 0x1f, + 0xf7, 0x80, 0x6, 0x94, 0xaa, 0x90, 0xa2, 0xae, 0x1a, 0xd6, 0x78, 0xd4, + 0x36, 0x46, 0x5f, 0x5a, 0x6d, 0x76, 0x1e, 0xba, 0x80, 0x69, 0xab, 0x4b, + 0x1b, 0xfb, 0x2f, 0x50, 0xfb, 0x5c, 0xfb, 0x11, 0xfb, 0xc, 0xe3, 0x80, + 0xa8, 0xe3, 0xb7, 0xcb, 0xa2, 0x98, 0x1f, 0xc7, 0xf7, 0x4e, 0x15, 0xcb, + 0x9b, 0xbe, 0xcb, 0xc7, 0x1b, 0xd1, 0x82, 0x3d, 0x59, 0x87, 0x1f, 0xfc, + 0x57, 0xfb, 0xf, 0x15, 0xe9, 0xbe, 0xf7, 0x31, 0xec, 0xe2, 0x7e, 0x29, + 0x4c, 0x7e, 0x1e, 0x47, 0x7f, 0x75, 0xfb, 0x9, 0x23, 0x1b, 0x4d, 0x82, + 0xbc, 0xb9, 0x1f, 0xe, 0xfb, 0x16, 0x76, 0xf7, 0x70, 0xc6, 0xf7, 0x36, + 0xc4, 0xf7, 0x3a, 0xc8, 0x91, 0x77, 0x12, 0xeb, 0xce, 0xf7, 0xd0, 0xcf, + 0x13, 0xf6, 0x98, 0xcf, 0x15, 0xcc, 0x6, 0x97, 0xc7, 0xba, 0x75, 0xb8, + 0x6c, 0xd8, 0x85, 0x19, 0x78, 0x38, 0x5, 0x90, 0x94, 0x95, 0x8c, 0x94, + 0x1b, 0x9b, 0x98, 0x80, 0x7d, 0x7d, 0x84, 0x6d, 0x68, 0x7a, 0x79, 0x8f, + 0x94, 0x7f, 0x1f, 0x6c, 0x50, 0x5, 0x82, 0x91, 0xa6, 0x78, 0xad, 0x1b, + 0xbb, 0xc9, 0xb5, 0xe1, 0xa6, 0x7e, 0xaf, 0x73, 0x96, 0x1f, 0x8e, 0x9d, + 0x5, 0xf7, 0x20, 0x91, 0xe2, 0xba, 0xf6, 0x1a, 0xcf, 0x3c, 0xb8, 0x34, + 0x90, 0x1e, 0x3c, 0x8f, 0xfb, 0x1f, 0x7f, 0xe5, 0x1a, 0xc7, 0xf7, 0xc, + 0xa3, 0xbc, 0xcc, 0xc8, 0x73, 0x6e, 0xb7, 0x1e, 0x7e, 0x52, 0x5, 0xc9, + 0x6, 0x13, 0xee, 0xaf, 0xf7, 0x45, 0x5, 0x4d, 0x6, 0x82, 0x54, 0x5, + 0x13, 0xf6, 0xa8, 0x5b, 0x4e, 0x9f, 0x4a, 0x1b, 0xfb, 0x16, 0xfb, 0x8, + 0x50, 0x30, 0xfb, 0x16, 0xf7, 0x1f, 0x8b, 0xf3, 0x87, 0x1f, 0xdf, 0x88, + 0xc3, 0x75, 0x5a, 0x1a, 0x35, 0xfb, 0x22, 0x89, 0x56, 0x40, 0x53, 0xad, + 0xb4, 0x5b, 0x1e, 0x96, 0xc0, 0x5, 0x4b, 0x6, 0xe, 0xfb, 0x16, 0x76, + 0xf7, 0x47, 0xba, 0xf7, 0x17, 0xb9, 0xf7, 0x1b, 0xbd, 0x8f, 0x77, 0x12, + 0xf7, 0xa, 0xc8, 0xf7, 0xac, 0xc7, 0x13, 0xf6, 0xba, 0xa6, 0x15, 0xc2, + 0x6, 0x96, 0xbb, 0xb5, 0x7a, 0xb5, 0x76, 0xcd, 0x82, 0x19, 0x7b, 0x47, + 0x5, 0x8e, 0x92, 0x92, 0x8d, 0x92, 0x1b, 0x9a, 0x99, 0x82, 0x7f, 0x80, + 0x85, 0x73, 0x6c, 0x7c, 0x7b, 0x8e, 0x92, 0x80, 0x1f, 0x70, 0x5c, 0x5, + 0x83, 0x90, 0xa3, 0x7c, 0xa9, 0x1b, 0xb5, 0xc2, 0xac, 0xd0, 0x1f, 0x8a, + 0xa1, 0x81, 0xaa, 0x76, 0x94, 0x8d, 0x9a, 0x18, 0xf7, 0x11, 0x90, 0xd8, + 0xb0, 0xe2, 0x1a, 0x8c, 0xc2, 0x44, 0xaf, 0x3d, 0x8f, 0x8, 0x45, 0x8e, + 0xfb, 0xe, 0x82, 0xd4, 0x1a, 0xbc, 0xf5, 0x9e, 0xb6, 0xc4, 0xc2, 0x78, + 0x73, 0xb2, 0x1e, 0x80, 0x5d, 0x5, 0xc1, 0x6, 0x13, 0xee, 0xaa, 0xf7, + 0x23, 0x5, 0x55, 0x6, 0x83, 0x5f, 0x5, 0x13, 0xf6, 0xa2, 0x61, 0x54, + 0x9c, 0x52, 0x1b, 0xfb, 0x7, 0x23, 0x5b, 0x41, 0x21, 0xf7, 0x10, 0x8b, + 0xe7, 0x88, 0x1f, 0xd5, 0x89, 0xbe, 0x79, 0x63, 0x1a, 0x46, 0xfb, 0x13, + 0x89, 0x5c, 0x49, 0x59, 0xa7, 0xac, 0x60, 0x1e, 0x95, 0xb6, 0x62, 0xa, + 0xe, 0x77, 0xc2, 0xf8, 0x7d, 0xc2, 0x8b, 0xb9, 0xf7, 0x48, 0x77, 0x12, + 0xf4, 0xc7, 0xf7, 0xa7, 0xc8, 0x17, 0x8c, 0x81, 0x15, 0xc4, 0x78, 0xa, + 0x5f, 0xc1, 0xe9, 0x7a, 0xb9, 0x1b, 0xf7, 0x9, 0xf7, 0xd, 0xae, 0xf7, + 0x21, 0xe6, 0x38, 0xa8, 0x3a, 0x9f, 0x1f, 0x45, 0x9c, 0x25, 0x98, 0xde, + 0x1a, 0xd7, 0xcd, 0xb2, 0xee, 0xc1, 0xcf, 0x71, 0x68, 0xab, 0x1e, 0x7a, + 0x3a, 0x5, 0xc6, 0x6, 0xad, 0xf7, 0x50, 0x71, 0xa, 0x83, 0x63, 0x5, + 0x13, 0xfc, 0xa7, 0x69, 0x45, 0xa0, 0x56, 0x1b, 0xfb, 0x33, 0x40, 0x4c, + 0xfb, 0x3, 0xfb, 0xf, 0xf7, 0x10, 0x74, 0xdc, 0x79, 0x1f, 0xce, 0x7d, + 0xca, 0x6c, 0x61, 0x1a, 0x49, 0x4e, 0x56, 0xfb, 0x6, 0x4a, 0x3e, 0xa7, + 0xb3, 0x60, 0x1e, 0x99, 0xd1, 0x62, 0xa, 0xf7, 0xbb, 0xf8, 0x58, 0x15, + 0xde, 0x6, 0xf7, 0x4b, 0xf7, 0x36, 0x62, 0x9d, 0xfb, 0x3c, 0xfb, 0xd, + 0xfb, 0x1b, 0xf7, 0xd, 0x5d, 0x78, 0x5, 0xe, 0x7c, 0xc2, 0x8b, 0xf7, + 0x25, 0x8b, 0xbf, 0x8b, 0xf7, 0x2a, 0x8b, 0xc2, 0x8b, 0xbc, 0xf7, 0x46, + 0x77, 0x1, 0xf3, 0xc4, 0xf7, 0xa5, 0xc6, 0x3, 0xf7, 0xc5, 0xf8, 0x7f, + 0x85, 0xa, 0xf7, 0x49, 0xf7, 0x32, 0x64, 0x9f, 0xfb, 0x3d, 0xfb, 0x4, + 0xfb, 0x17, 0xf7, 0x3, 0x5e, 0x77, 0x5, 0xfb, 0x2c, 0xfd, 0x2b, 0x15, + 0xc3, 0x36, 0xa, 0x74, 0xb8, 0xb5, 0x6b, 0xdd, 0x1b, 0xf7, 0x1e, 0xe2, + 0xb5, 0xf2, 0x1f, 0x8c, 0xc8, 0x46, 0xb5, 0x40, 0x8f, 0x8, 0x47, 0x8f, + 0xfb, 0xd, 0x80, 0xdc, 0x1a, 0xc1, 0xf3, 0xa1, 0xb6, 0xc3, 0xbf, 0x75, + 0x70, 0xb1, 0x1e, 0x80, 0x58, 0x5, 0xc1, 0x6, 0xab, 0xf7, 0x34, 0x5, + 0x55, 0x6, 0x82, 0x59, 0x5, 0xa6, 0x62, 0x57, 0x9d, 0x52, 0x1b, 0xfb, + 0x4, 0x27, 0x56, 0x38, 0xfb, 0x9, 0xf7, 0xc, 0x8b, 0xe5, 0x87, 0x1f, + 0xd4, 0x88, 0xba, 0x78, 0x5f, 0x1a, 0x3e, 0xfb, 0xe, 0x89, 0x5d, 0x4a, + 0x5b, 0xa8, 0xb1, 0x62, 0x1e, 0x94, 0xbc, 0x52, 0xa, 0xe, 0x8b, 0xc1, + 0xf8, 0x5d, 0xc1, 0xee, 0xf7, 0x9, 0x1, 0xf7, 0xfb, 0xf9, 0x2c, 0x15, + 0xe2, 0x6, 0xa4, 0xf7, 0x9, 0x5, 0x35, 0x6, 0xfb, 0x44, 0xfb, 0x9, + 0x15, 0xe0, 0x6, 0xa6, 0xf7, 0x9, 0x5, 0x34, 0x6, 0xfb, 0x55, 0xfd, + 0xa1, 0x15, 0x31, 0xa, 0xe, 0x8b, 0xc2, 0xf8, 0x63, 0xc2, 0x8b, 0xc1, + 0x8b, 0xc5, 0x1, 0xf7, 0x6, 0xc3, 0xf7, 0xa1, 0xc0, 0x3, 0xa0, 0x16, + 0xf8, 0x41, 0x6, 0xb5, 0xf7, 0x63, 0x5, 0x56, 0x6, 0x6b, 0xfb, 0x2c, + 0x5, 0xfb, 0xc4, 0x6, 0xf8, 0x4f, 0xf8, 0x66, 0x95, 0xbf, 0x5, 0xfc, + 0x26, 0x6, 0x63, 0xfb, 0x55, 0x51, 0xa, 0xa9, 0xf7, 0x1e, 0x5, 0xf7, + 0xa5, 0x6, 0xfc, 0x4e, 0xfc, 0x64, 0x5, 0xf7, 0xbd, 0xf8, 0xd1, 0x48, + 0xa, 0x8b, 0xc2, 0xf7, 0xd8, 0xc2, 0x8b, 0xc3, 0xf7, 0x47, 0x77, 0x12, + 0xf7, 0xc4, 0xf8, 0x7e, 0x4c, 0xa, 0xfb, 0x28, 0xfd, 0x1c, 0x15, 0xf8, + 0x2b, 0x6, 0xaa, 0xf7, 0x31, 0x52, 0xa, 0x77, 0x25, 0x5, 0xfb, 0xa7, + 0x6, 0xf8, 0x1d, 0xf7, 0xdc, 0x95, 0xbe, 0x5, 0x13, 0x60, 0xfc, 0x1a, + 0x6, 0x6d, 0xfb, 0x2e, 0x5, 0xc1, 0x6, 0x9f, 0xee, 0x5, 0xf7, 0x95, + 0x6, 0xfc, 0x1c, 0xfb, 0xdb, 0x5, 0xe, 0xfb, 0x23, 0xc6, 0xf8, 0x4f, + 0xc5, 0xf7, 0x2d, 0xbf, 0x1, 0x7f, 0x37, 0x15, 0x67, 0x50, 0x5, 0xf7, + 0x75, 0x9f, 0xb3, 0xf7, 0x19, 0xbd, 0x1f, 0xf7, 0x11, 0xf7, 0xdd, 0x5, + 0xf7, 0x2, 0x6, 0x9e, 0xc5, 0x57, 0xa, 0xf7, 0x8, 0xba, 0x97, 0xb0, + 0xf2, 0x1b, 0x9e, 0x9f, 0x88, 0x8a, 0x9e, 0x1f, 0xaf, 0xc3, 0x5, 0x61, + 0x65, 0x8b, 0x6e, 0x1b, 0xfb, 0x1f, 0x80, 0x4b, 0xfb, 0x21, 0x55, 0x1f, + 0xfb, 0x5, 0x6, 0x7a, 0x51, 0x5, 0xf7, 0x0, 0x6, 0xfb, 0xf, 0xfb, + 0xd7, 0x5, 0x20, 0x63, 0x55, 0x7e, 0xfb, 0x1, 0x1b, 0xe, 0x79, 0xc2, + 0x8b, 0xf7, 0x39, 0x8b, 0xc2, 0xf7, 0xa0, 0xc2, 0x8b, 0xba, 0xf7, 0x46, + 0x77, 0x12, 0x9e, 0xc4, 0x17, 0x34, 0xa, 0x13, 0xfe, 0x3d, 0xa, 0xa8, + 0xf8, 0x6, 0x48, 0xa, 0xfb, 0x31, 0xbd, 0x8b, 0xf7, 0x38, 0x8b, 0xbe, + 0xf7, 0xae, 0xbe, 0x8b, 0xbc, 0xf7, 0x47, 0x77, 0x12, 0xab, 0xc3, 0x17, + 0x3f, 0xa, 0x13, 0xfe, 0x30, 0xa, 0xf7, 0x6f, 0xf7, 0xa0, 0x4c, 0xa, + 0xe, 0xf8, 0xe2, 0xcb, 0x1, 0xf7, 0x10, 0xf7, 0xf4, 0x3, 0xf7, 0x10, + 0xf8, 0x83, 0x15, 0xad, 0x79, 0xf7, 0x36, 0xf7, 0x5, 0xf7, 0x5, 0xfb, + 0x5, 0xb6, 0x9d, 0xfb, 0x1, 0xf7, 0x33, 0x5, 0x40, 0x6, 0xe, 0xf8, + 0x80, 0xc9, 0x1, 0xf7, 0x10, 0xf7, 0xf4, 0x3, 0xf7, 0x7f, 0xf8, 0x80, + 0x15, 0xd5, 0x6, 0xf7, 0x3b, 0xf7, 0x31, 0x67, 0x9f, 0xfb, 0x32, 0xfb, + 0x7, 0xfb, 0x9, 0xf7, 0x6, 0x62, 0x77, 0x5, 0xe, 0xf8, 0x89, 0xb2, + 0x1, 0xf7, 0x2b, 0xf7, 0xbd, 0x3, 0xf7, 0x2b, 0xf8, 0xf5, 0x15, 0x3c, + 0xa1, 0xbf, 0x6e, 0xc4, 0x1b, 0xd7, 0xc8, 0xbc, 0xc6, 0xa8, 0x1f, 0x60, + 0x6, 0x6d, 0x7b, 0x5c, 0x64, 0x55, 0x1b, 0x60, 0x64, 0xa5, 0xb6, 0x80, + 0x1f, 0xe, 0xf8, 0x71, 0xf2, 0x1, 0xf7, 0x8b, 0xf8, 0x71, 0x15, 0xde, + 0x6, 0xa2, 0xf2, 0x7b, 0xa, 0xe, 0xf8, 0x63, 0xbe, 0xca, 0xbd, 0x1, + 0xf7, 0x6c, 0xbe, 0xcd, 0xbe, 0x3, 0xf7, 0x6c, 0xf8, 0xa3, 0x15, 0x67, + 0xa6, 0x6f, 0xb4, 0xbf, 0xbb, 0xb9, 0xbf, 0xb1, 0x6f, 0xa7, 0x62, 0x57, + 0x5c, 0x5c, 0x56, 0x1e, 0xbe, 0x96, 0x15, 0xa0, 0x9d, 0x9d, 0x9f, 0x9b, + 0x97, 0x81, 0x7d, 0x77, 0x79, 0x78, 0x76, 0x7b, 0x80, 0x96, 0x98, 0x1e, + 0xe, 0xfb, 0x28, 0xbf, 0xeb, 0x77, 0x1, 0xf7, 0x79, 0xcc, 0x3, 0xf7, + 0xc4, 0x16, 0x64, 0x78, 0x67, 0x65, 0x61, 0x1a, 0x6f, 0x9d, 0x76, 0xae, + 0xa0, 0xa1, 0x92, 0x99, 0x9f, 0x1e, 0x9b, 0xc2, 0x5, 0x7d, 0x83, 0x73, + 0x81, 0x7a, 0x1b, 0x81, 0x83, 0x90, 0x96, 0xb2, 0xbd, 0xa5, 0xa5, 0x9a, + 0x1f, 0xe, 0xf8, 0x7d, 0xbd, 0x9d, 0xbc, 0x1, 0xe6, 0xf8, 0x8c, 0x15, + 0xbc, 0x80, 0x5, 0x9a, 0x92, 0xae, 0xbc, 0xae, 0x1b, 0xa5, 0x9f, 0x78, + 0x79, 0xa2, 0x1f, 0x7b, 0x9f, 0xa1, 0x7c, 0xa9, 0x1b, 0xc9, 0xc5, 0xbb, + 0xc3, 0xa9, 0x1f, 0x5a, 0x95, 0x5, 0x71, 0x7d, 0x5d, 0x65, 0x67, 0x1b, + 0x75, 0x7b, 0x99, 0x9b, 0x78, 0x1f, 0x9d, 0x76, 0x73, 0x9e, 0x6a, 0x1b, + 0x58, 0x58, 0x67, 0x49, 0x68, 0x1f, 0xe, 0x65, 0xa, 0xf7, 0xa5, 0xf8, + 0x99, 0x15, 0xad, 0x77, 0xf7, 0x52, 0xf7, 0x22, 0x55, 0xac, 0x5, 0xfb, + 0xe8, 0xfb, 0x2f, 0x15, 0xad, 0x77, 0xf7, 0x56, 0xf7, 0x22, 0x52, 0xac, + 0x5, 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0xd0, 0xf7, 0x7b, 0x15, 0xf8, 0x57, + 0x2a, 0xa, 0xfc, 0x57, 0x6, 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0x85, 0xf7, + 0x7b, 0x15, 0xf8, 0xed, 0x2a, 0xa, 0xfc, 0xed, 0x6, 0xe, 0xf7, 0xbb, + 0xc9, 0x3, 0xf7, 0xbb, 0xf7, 0xdc, 0x15, 0xc9, 0x6, 0x72, 0x64, 0xa, + 0x32, 0x6, 0xe, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x56, 0xc9, 0x3, 0xf7, + 0x56, 0xf7, 0xdc, 0x15, 0xc9, 0x6, 0xf7, 0x2a, 0x64, 0xa, 0x30, 0x6, + 0xe, 0xef, 0x77, 0x1, 0xf7, 0x56, 0xca, 0x3, 0xf7, 0x56, 0xfb, 0x1a, + 0x15, 0xca, 0x75, 0xa, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x68, 0xc9, 0xf4, + 0xc7, 0x3, 0xf8, 0xf, 0xf7, 0xdc, 0x15, 0xc7, 0x6, 0x72, 0x64, 0xa, + 0x32, 0x6, 0xfb, 0x5, 0xfb, 0x7e, 0x15, 0xc9, 0x6, 0x73, 0x64, 0xa, + 0x31, 0x6, 0xe, 0xf8, 0xc6, 0x74, 0xa, 0xf7, 0xdc, 0x15, 0xc7, 0x6, + 0xf7, 0x21, 0x64, 0xa, 0x35, 0x6, 0xfb, 0xa9, 0xfb, 0x7e, 0x15, 0xc6, + 0x6, 0xf7, 0x23, 0x64, 0xa, 0x35, 0x6, 0xe, 0xef, 0x74, 0xa, 0xfb, + 0x1a, 0x15, 0xc7, 0x6, 0xf7, 0x21, 0x64, 0xa, 0x34, 0x6, 0xfb, 0xa8, + 0xfb, 0x7e, 0x15, 0xc6, 0x6, 0xf7, 0x22, 0x64, 0xa, 0x34, 0x6, 0xe, + 0xf7, 0xfb, 0xc6, 0xf7, 0x36, 0x77, 0x1, 0xf7, 0x40, 0xc6, 0x3, 0xf7, + 0x40, 0x3d, 0x15, 0xc6, 0x6, 0xe5, 0xf8, 0x4f, 0x5, 0xf7, 0x17, 0x6, + 0x97, 0xc0, 0x83, 0xa, 0xae, 0xf7, 0x36, 0x5, 0x50, 0x6, 0x69, 0xfb, + 0x36, 0x5, 0xfb, 0x14, 0x6, 0x80, 0x56, 0x5, 0xf7, 0x14, 0x6, 0xe, + 0xf2, 0xc6, 0xf7, 0x64, 0xc5, 0xf7, 0x2c, 0x77, 0x1, 0xec, 0xf2, 0x15, + 0xf7, 0x18, 0x6, 0x64, 0xfb, 0x49, 0x5, 0xcb, 0x6, 0xb2, 0xf7, 0x49, + 0x5, 0xf7, 0x18, 0x6, 0x97, 0xc6, 0x5, 0xfb, 0x17, 0x6, 0xb6, 0xf7, + 0x64, 0x5, 0xf7, 0x16, 0x6, 0x97, 0xc5, 0x5, 0xfb, 0x16, 0x6, 0xab, + 0xf7, 0x2c, 0x5, 0x4b, 0x6, 0x6b, 0xfb, 0x2c, 0x83, 0xa, 0x81, 0x51, + 0x5, 0xf7, 0x17, 0x6, 0x5f, 0xfb, 0x64, 0x83, 0xa, 0xe, 0xf7, 0x2b, + 0x76, 0xf7, 0x91, 0x77, 0x1, 0xf7, 0x3d, 0xf7, 0x7c, 0x15, 0x52, 0xb5, + 0x5e, 0xc9, 0xd7, 0xdc, 0xd2, 0xd9, 0xc6, 0x5f, 0xb8, 0x4c, 0x3c, 0x40, + 0x45, 0x3a, 0x1e, 0xe, 0x7c, 0xf7, 0x12, 0x1, 0xae, 0xf7, 0x15, 0xd2, + 0xf7, 0x15, 0xd2, 0xf7, 0x15, 0x14, 0x70, 0xf7, 0x7f, 0xb1, 0x15, 0x41, + 0xa, 0xfb, 0x5c, 0x16, 0x41, 0xa, 0xf8, 0x24, 0x16, 0x41, 0xa, 0xe, + 0x7c, 0xc2, 0xf7, 0x21, 0xc1, 0xf7, 0x1d, 0xc2, 0xf7, 0x21, 0xc1, 0x12, + 0xaa, 0xc4, 0xf7, 0x57, 0xc4, 0x77, 0xc4, 0xf7, 0x2a, 0xc4, 0x13, 0xfd, + 0xd7, 0xf8, 0x6e, 0x2e, 0xa, 0xfb, 0x5, 0xfb, 0x94, 0x15, 0xf8, 0x6c, + 0xf7, 0x38, 0x87, 0xc0, 0xfc, 0x6c, 0xfb, 0x3a, 0x5, 0x13, 0xfb, 0xf7, + 0xc4, 0xfb, 0x51, 0x2e, 0xa, 0xfb, 0xee, 0x84, 0x2e, 0xa, 0xe, 0xf8, + 0x52, 0x77, 0x1, 0xf7, 0x18, 0xe8, 0x3, 0xf7, 0x18, 0xf7, 0x95, 0x15, + 0xf7, 0x84, 0xfb, 0x4f, 0xa9, 0xba, 0xfb, 0x45, 0xf7, 0x1d, 0xf7, 0x87, + 0xf7, 0x1c, 0x82, 0xc3, 0x5, 0xe, 0xf8, 0x52, 0x77, 0x1, 0xf8, 0x6, + 0xed, 0x3, 0xf7, 0x21, 0xd1, 0x15, 0xf7, 0xdb, 0xf7, 0x4f, 0xfb, 0x84, + 0xf7, 0x51, 0x6c, 0x5c, 0xf7, 0x41, 0xfb, 0x1a, 0xfb, 0x82, 0xfb, 0x20, + 0x5, 0xe, 0x67, 0x76, 0xf9, 0x66, 0x77, 0x1, 0x9e, 0x6e, 0x15, 0xab, + 0x6f, 0xf8, 0xa6, 0xf9, 0x4a, 0x6b, 0xa7, 0x5, 0xe, 0x76, 0xc5, 0xf7, + 0x28, 0xc4, 0xdb, 0xc3, 0xf7, 0x43, 0xc5, 0x1, 0xf7, 0x36, 0xc1, 0x3, + 0xbb, 0xaa, 0x15, 0x9b, 0x57, 0x5, 0xa1, 0xc0, 0xe6, 0x93, 0x9b, 0x1b, + 0x9f, 0x9d, 0x87, 0x84, 0x9e, 0x1f, 0x83, 0x9e, 0xa0, 0x80, 0xa6, 0x53, + 0xa, 0x71, 0x79, 0x97, 0x93, 0x79, 0x1f, 0x93, 0x7a, 0x7a, 0x8e, 0x73, + 0x1b, 0x6e, 0x6d, 0x84, 0x80, 0x6e, 0x1f, 0xc8, 0xb0, 0x9f, 0xc2, 0x8e, + 0xb6, 0x8, 0xf7, 0x48, 0x6, 0x99, 0xc4, 0x5, 0xfb, 0x5c, 0x6, 0x8a, + 0x96, 0x8a, 0xae, 0x8a, 0xad, 0x8, 0xf7, 0x66, 0x6, 0x9b, 0xc3, 0x5, + 0xfb, 0x77, 0xa9, 0x6, 0x42, 0xa, 0x82, 0x8b, 0x7b, 0x8c, 0x78, 0x8, + 0x4a, 0x6, 0x7d, 0x53, 0x5, 0xdb, 0x6, 0x8c, 0x6a, 0x8d, 0x69, 0x8c, + 0x7e, 0x8, 0x29, 0x6, 0x7b, 0x52, 0x5, 0xf7, 0x8, 0x6, 0x55, 0x63, + 0x67, 0x3a, 0x4b, 0x1e, 0xe, 0x8b, 0xbf, 0xf7, 0x22, 0xbf, 0xc8, 0xbf, + 0xf7, 0x2b, 0xbf, 0x1, 0xe0, 0xc2, 0xf8, 0x8, 0xbe, 0x3, 0x89, 0xf7, + 0x56, 0x15, 0xd7, 0x6, 0xfb, 0x7, 0x90, 0xcf, 0x3c, 0xf7, 0x1f, 0x1b, + 0xd6, 0xda, 0xa7, 0xb5, 0xcd, 0x1f, 0x7d, 0xb7, 0x5, 0x67, 0x52, 0x45, + 0x71, 0x4a, 0x1b, 0x2c, 0x49, 0xb9, 0xeb, 0x81, 0x1f, 0xf7, 0x6b, 0x6, + 0xa7, 0xbf, 0x5, 0xfb, 0x87, 0x6, 0x8e, 0x9f, 0x8e, 0xa2, 0x90, 0x9d, + 0x8, 0xf7, 0x98, 0x6, 0xa9, 0xbf, 0x5, 0xfb, 0xa4, 0x6, 0xe5, 0xb4, + 0xdc, 0xc8, 0xe5, 0x1b, 0xcf, 0xc8, 0x73, 0x66, 0xa8, 0x1f, 0x7b, 0x3d, + 0x5, 0xbe, 0x6, 0xb2, 0xf7, 0x53, 0x5, 0x58, 0x6, 0x80, 0x59, 0x5, + 0xac, 0x63, 0x5b, 0x9c, 0x47, 0x1b, 0xfb, 0x12, 0xfb, 0x0, 0x32, 0xfb, + 0x6, 0x5c, 0x1f, 0x54, 0x6, 0x6d, 0x57, 0x5, 0xce, 0x6, 0x86, 0x73, + 0x89, 0x76, 0x89, 0x7b, 0x8, 0x5a, 0x6, 0xe, 0x7c, 0xc2, 0xf7, 0x49, + 0xc1, 0xf7, 0x7c, 0xc2, 0x1, 0xf8, 0xac, 0xc6, 0x3, 0x90, 0x7c, 0x15, + 0xf7, 0x79, 0x36, 0xa, 0x37, 0x6, 0xb1, 0xf7, 0x48, 0x5, 0xf7, 0xc, + 0x6, 0x9d, 0x6e, 0xaa, 0x57, 0xa7, 0x56, 0x40, 0x44, 0x18, 0xba, 0x6d, + 0xc1, 0xbd, 0x94, 0x79, 0x92, 0x7a, 0x91, 0x7c, 0x19, 0xf7, 0x1f, 0x6, + 0x96, 0xc2, 0x57, 0xa, 0x78, 0xb1, 0xda, 0xd5, 0x5c, 0xa9, 0x51, 0x54, + 0x77, 0xae, 0x77, 0xac, 0x7a, 0xa5, 0x19, 0xea, 0x8e, 0xf7, 0x8, 0xb8, + 0xf7, 0x37, 0x1a, 0xcd, 0x57, 0xcb, 0x23, 0x1e, 0xfb, 0xce, 0x38, 0xa, + 0xe1, 0x6, 0x2a, 0xfc, 0x67, 0x5, 0x34, 0x6, 0xf7, 0x56, 0xf7, 0x7f, + 0x15, 0xba, 0xf7, 0x7c, 0x5, 0xf7, 0x2c, 0x6, 0xd9, 0xbc, 0x6b, 0x5f, + 0xfb, 0x2b, 0xfb, 0x23, 0x86, 0x3f, 0x1f, 0xe, 0xf7, 0xb0, 0x76, 0xf7, + 0x93, 0xb7, 0x1, 0xb6, 0xbe, 0xf7, 0x10, 0xbb, 0xf7, 0x60, 0xbd, 0x3, + 0xf7, 0x6e, 0xf7, 0x9b, 0x15, 0xbb, 0x6, 0xc7, 0xf7, 0xa2, 0x97, 0xfb, + 0xa2, 0x5, 0xcb, 0x6, 0xf7, 0x14, 0xf7, 0xa1, 0x4f, 0xfb, 0xa1, 0x5, + 0xbd, 0x6, 0xcd, 0xf7, 0xbf, 0x5, 0x30, 0x6, 0xfb, 0x6, 0xfb, 0x87, + 0x84, 0xf7, 0x87, 0x5, 0x31, 0x6, 0xfb, 0x85, 0xfb, 0xbf, 0x15, 0xbe, + 0x6, 0xc2, 0xf7, 0x93, 0x5, 0xe1, 0x6, 0x95, 0xb7, 0x5, 0xfb, 0x71, + 0x6, 0x81, 0x5f, 0x5, 0xe0, 0x6, 0xe, 0x73, 0xa, 0xf7, 0x11, 0xf7, + 0x7, 0x15, 0xa9, 0xba, 0x2f, 0xf7, 0x3, 0x5, 0xf8, 0xbd, 0x6, 0x96, + 0xbd, 0x5, 0xfc, 0xae, 0x6, 0xf7, 0x18, 0xf3, 0x82, 0xc3, 0xfb, 0x82, + 0xfb, 0x4e, 0x5, 0xe, 0xa0, 0x76, 0xf9, 0x3, 0x77, 0x1, 0xf7, 0x88, + 0xbd, 0x3, 0xf7, 0x38, 0x9c, 0x15, 0xf7, 0x18, 0xf8, 0x80, 0xfb, 0x1a, + 0x26, 0x58, 0xa2, 0xf7, 0x84, 0xf7, 0x49, 0xf7, 0x1e, 0xfb, 0x54, 0x55, + 0x7a, 0x37, 0xf7, 0xa, 0xfb, 0x1b, 0xfc, 0x8e, 0x5, 0xe, 0x73, 0xa, + 0x70, 0xf7, 0xa7, 0x15, 0x96, 0xbd, 0x5, 0xf8, 0xbf, 0x6, 0x2f, 0xf7, + 0x3, 0xa9, 0xba, 0xf7, 0x2a, 0xfb, 0x4a, 0xfb, 0x81, 0xfb, 0x4e, 0x82, + 0xc3, 0xf7, 0x18, 0xf3, 0x5, 0xe, 0x9a, 0x76, 0xf8, 0xea, 0x77, 0x1, + 0xf7, 0x3, 0xf7, 0x4f, 0x15, 0xc0, 0x9c, 0xdd, 0xfb, 0x9, 0xf7, 0x1c, + 0xf8, 0x8d, 0xbe, 0x88, 0xfb, 0x18, 0xfc, 0x7e, 0xf7, 0x1c, 0xef, 0xbf, + 0x74, 0xfb, 0x86, 0xfb, 0x4a, 0x5, 0xe, 0xf7, 0x1c, 0x76, 0xf7, 0x32, + 0xbf, 0xf7, 0x32, 0x77, 0x1, 0xf7, 0x10, 0xf7, 0x7, 0x15, 0xfb, 0x2c, + 0xf7, 0x4a, 0xf7, 0x83, 0xf7, 0x4e, 0x94, 0x53, 0xfb, 0x18, 0x25, 0x5, + 0xf8, 0x58, 0x6, 0x31, 0xf7, 0x3, 0xa9, 0xba, 0xf7, 0x28, 0xfb, 0x4a, + 0xfb, 0x7f, 0xfb, 0x4e, 0x82, 0xc3, 0xf7, 0x16, 0xf2, 0xfc, 0x58, 0x8a, + 0xe7, 0xfb, 0x3, 0x5, 0xe, 0xf7, 0x7c, 0xbe, 0x1, 0xd5, 0xf7, 0x7c, + 0x15, 0xf8, 0x57, 0xbe, 0xfc, 0x57, 0x6, 0xe, 0x8b, 0xc0, 0xf7, 0xc1, + 0xc0, 0xf1, 0xf7, 0xc, 0x1, 0xf7, 0x0, 0xc1, 0xf7, 0xa7, 0xc1, 0x3, + 0xf8, 0x96, 0xf8, 0x91, 0x15, 0xd2, 0x6, 0xa2, 0xf7, 0xc, 0x5, 0x44, + 0x6, 0xfb, 0x6d, 0xfd, 0x9, 0x15, 0xf7, 0xa1, 0x80, 0xa, 0xfb, 0x1, + 0x6, 0xd3, 0xf7, 0xf6, 0x5, 0xfb, 0x1c, 0x68, 0xa, 0xdd, 0x6, 0x4d, + 0xfb, 0xc1, 0x5, 0x21, 0x6, 0xfb, 0xe7, 0x56, 0x15, 0xf7, 0x9e, 0x6, + 0x97, 0xc0, 0x57, 0xa, 0xc9, 0xf7, 0xc1, 0x5, 0xf6, 0x6, 0x96, 0xc0, + 0x57, 0xa, 0xa6, 0xed, 0x5, 0x9f, 0x90, 0x96, 0xa2, 0xd4, 0x1b, 0xa1, + 0xa1, 0x87, 0x87, 0x9e, 0x1f, 0xa0, 0xbf, 0x5, 0x8f, 0x71, 0x5e, 0x90, + 0x78, 0x1b, 0x5a, 0x43, 0x7e, 0x38, 0x77, 0x1f, 0x73, 0x29, 0x5, 0x20, + 0x68, 0xa, 0xf6, 0x6, 0x4e, 0xfb, 0xc1, 0x5, 0x22, 0x6, 0xe, 0x8b, + 0xc2, 0xf7, 0xcf, 0xc2, 0xf7, 0x29, 0xc2, 0x1, 0xf7, 0x2, 0xc1, 0xf7, + 0xa8, 0xc3, 0x3, 0xf7, 0xd5, 0x16, 0xf7, 0xa2, 0x36, 0xa, 0x21, 0x6, + 0xf7, 0x4, 0xf8, 0xd2, 0x5, 0xfb, 0x27, 0x56, 0xa, 0xe8, 0x6, 0x25, + 0xfc, 0x9b, 0x57, 0xa, 0xfb, 0xe8, 0x54, 0x15, 0xf7, 0xa0, 0x6, 0x97, + 0xc2, 0x57, 0xa, 0xc9, 0xf7, 0xcf, 0x5, 0xf6, 0x6, 0x96, 0xc2, 0x57, + 0xa, 0x9c, 0xe0, 0x5, 0xa1, 0x8f, 0x97, 0xb5, 0xde, 0x1b, 0xa2, 0xa0, + 0x86, 0x86, 0xa0, 0x1f, 0x9f, 0xc1, 0x5, 0x90, 0x71, 0x6f, 0x91, 0x6f, + 0x1b, 0x30, 0x58, 0x5a, 0x45, 0x7e, 0x1f, 0x79, 0x36, 0x5, 0xfb, 0x1, + 0x67, 0xa, 0xf7, 0x1, 0x6, 0x4d, 0xfb, 0xcf, 0x5, 0x20, 0x6, 0xe, + 0x79, 0x9d, 0xf8, 0x3e, 0x9a, 0xf7, 0xd, 0x9d, 0xa9, 0x97, 0x6, 0xfb, + 0x31, 0x8b, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xc2, 0xa, + 0xc2, 0xb, 0xf8, 0xec, 0x14, 0xaa, 0x13, 0x0, 0x6a, 0x2, 0x0, 0x1, + 0x0, 0x29, 0x0, 0x38, 0x0, 0x69, 0x0, 0x6d, 0x0, 0xb9, 0x0, 0xf5, + 0x1, 0x3b, 0x1, 0x83, 0x1, 0xc3, 0x1, 0xf8, 0x1, 0xfd, 0x2, 0xe, + 0x2, 0x1a, 0x2, 0x1f, 0x2, 0x46, 0x2, 0x53, 0x2, 0x93, 0x2, 0xc4, + 0x2, 0xce, 0x2, 0xe8, 0x3, 0x19, 0x3, 0x2c, 0x3, 0x31, 0x3, 0x3f, + 0x3, 0x44, 0x3, 0x4e, 0x3, 0x59, 0x3, 0x64, 0x3, 0x69, 0x3, 0x8e, + 0x3, 0x95, 0x3, 0xb8, 0x3, 0xbf, 0x3, 0xd1, 0x3, 0xed, 0x3, 0xf4, + 0x3, 0xff, 0x4, 0x4, 0x4, 0x9, 0x4, 0xe, 0x4, 0x23, 0x4, 0x2b, + 0x4, 0x32, 0x4, 0x3c, 0x4, 0x51, 0x4, 0x56, 0x4, 0x5e, 0x4, 0x66, + 0x4, 0x6e, 0x4, 0x72, 0x4, 0x76, 0x4, 0x87, 0x4, 0x91, 0x4, 0x96, + 0x4, 0x9b, 0x4, 0x9f, 0x4, 0xa3, 0x4, 0xab, 0x4, 0xb3, 0x4, 0xba, + 0x4, 0xbf, 0x4, 0xc5, 0x4, 0xca, 0x4, 0xcf, 0x4, 0xd4, 0x4, 0xd9, + 0x4, 0xdd, 0x4, 0xe1, 0x4, 0xe5, 0x4, 0xed, 0x4, 0xf3, 0x4, 0xf8, + 0x4, 0xfd, 0x5, 0x1, 0x5, 0x5, 0x5, 0x9, 0x5, 0x15, 0x5, 0x21, + 0x5, 0x27, 0x5, 0x2d, 0x5, 0x33, 0x5, 0x37, 0x5, 0x42, 0x5, 0x4d, + 0x5, 0x58, 0x5, 0x60, 0x5, 0x65, 0x5, 0x69, 0x5, 0x6e, 0x5, 0x72, + 0x5, 0x76, 0x5, 0x7a, 0x5, 0x83, 0x5, 0x8c, 0x5, 0x95, 0x5, 0x9e, + 0x5, 0xa3, 0x5, 0xa8, 0x5, 0xad, 0x5, 0xb2, 0x5, 0xb7, 0x5, 0xbb, + 0x5, 0xbf, 0x5, 0xc3, 0x5, 0xc7, 0x5, 0xcb, 0xf7, 0x63, 0x4d, 0xa, + 0x33, 0x6, 0xcc, 0xf7, 0xf, 0x5, 0xf7, 0xaa, 0x6, 0xa3, 0xfb, 0xf, + 0x2c, 0xa, 0xf8, 0x93, 0x32, 0xa, 0x7a, 0xa, 0x4f, 0x6, 0xf7, 0x6b, + 0xf7, 0x45, 0x15, 0xf7, 0x40, 0xf7, 0xbb, 0xca, 0xfb, 0xbb, 0x5, 0xb, + 0x22, 0xa, 0x13, 0xbe, 0x3a, 0xa, 0x13, 0x7e, 0x98, 0xce, 0x15, 0x13, + 0xbe, 0x2b, 0xa, 0x15, 0xf7, 0x1e, 0x3c, 0xa, 0x37, 0x6, 0xbe, 0xf7, + 0x9a, 0x8c, 0x9b, 0x9a, 0x1a, 0xcb, 0x8a, 0x5e, 0xb2, 0x22, 0x1b, 0x46, + 0x36, 0x77, 0x72, 0x4b, 0x1f, 0x39, 0xa, 0xa8, 0xe1, 0x9c, 0x33, 0x1f, + 0x81, 0x49, 0x5, 0x92, 0x5f, 0x5a, 0x92, 0x5a, 0x1b, 0xfb, 0x51, 0x4c, + 0x2c, 0x3f, 0x1f, 0xb, 0x15, 0x20, 0xa, 0xe, 0x15, 0xdb, 0x6, 0x5a, + 0xfb, 0x91, 0x5, 0x88, 0x7e, 0x8c, 0x7f, 0x80, 0x1a, 0x45, 0xc3, 0x67, + 0xd6, 0xb2, 0xc1, 0x9a, 0xd5, 0xe3, 0x1e, 0x13, 0x78, 0x7c, 0x3d, 0x5, + 0xf7, 0x1a, 0x36, 0xa, 0x3a, 0x6, 0xd3, 0xf8, 0x15, 0x55, 0xa, 0x82, + 0x53, 0x5, 0xdc, 0x6, 0x5e, 0xfb, 0x77, 0x5, 0x13, 0xb8, 0x59, 0x5b, + 0x4d, 0x4b, 0x4c, 0x1b, 0x4e, 0x6c, 0xa8, 0xbe, 0x8a, 0x1f, 0x96, 0x8c, + 0x96, 0x8d, 0x98, 0x1e, 0xc0, 0xf7, 0xae, 0x5, 0xfb, 0x1a, 0x6, 0xe, + 0x15, 0xfb, 0x15, 0xd7, 0x26, 0xf7, 0x1a, 0xf7, 0x4d, 0xf7, 0x1c, 0xf7, + 0x4d, 0xf7, 0x4f, 0xed, 0x5f, 0xf7, 0x11, 0xfb, 0x35, 0xfb, 0x60, 0xfb, + 0xe, 0xfb, 0x5c, 0xfb, 0x39, 0x1e, 0xc2, 0x93, 0x15, 0xf7, 0x2, 0xea, + 0xf7, 0x55, 0xf7, 0x3c, 0xf7, 0x1a, 0xa4, 0x20, 0x3a, 0xfb, 0x13, 0xfb, + 0xf, 0xfb, 0x40, 0xfb, 0x19, 0xfb, 0x1, 0x52, 0xdf, 0xef, 0x1e, 0xe, + 0x15, 0xdc, 0x6, 0x55, 0xfb, 0xb5, 0x5, 0x85, 0x6b, 0x88, 0x6d, 0x70, + 0x1a, 0x30, 0xbd, 0x51, 0xf7, 0xc, 0xf7, 0x12, 0xe2, 0xc1, 0xf7, 0x30, + 0xa7, 0x1e, 0xc7, 0xf7, 0xd1, 0x5, 0xd8, 0x3c, 0xa, 0xfb, 0x7b, 0x60, + 0xa, 0xf1, 0x6, 0x50, 0xfb, 0xca, 0x63, 0xa, 0x76, 0x53, 0x54, 0x23, + 0x1b, 0x32, 0x65, 0xb4, 0xdc, 0x9d, 0x8e, 0x9e, 0x8f, 0xa0, 0x1f, 0xc3, + 0xf7, 0xb9, 0x5, 0xf4, 0x3c, 0xa, 0xfb, 0x82, 0x6, 0xb, 0x15, 0xf8, + 0x38, 0x89, 0x5, 0x8f, 0xa1, 0x8f, 0xaa, 0xa0, 0x1a, 0xe8, 0x51, 0xe0, + 0xfb, 0x1c, 0xfb, 0x34, 0xfb, 0x1e, 0xfb, 0x9, 0xfb, 0x48, 0x2c, 0xc5, + 0x41, 0xf7, 0x2c, 0xe0, 0xe5, 0xa8, 0xb0, 0xd5, 0x1e, 0x84, 0xc1, 0x5, + 0x5e, 0x32, 0x37, 0x77, 0x5a, 0x1b, 0x44, 0x26, 0xa1, 0xe3, 0x9b, 0x8b, + 0x9c, 0x91, 0x9d, 0x1f, 0x9b, 0xc3, 0x15, 0xc6, 0xa0, 0xd0, 0xd9, 0xf7, + 0x9, 0x1b, 0xf7, 0x22, 0x8f, 0xfb, 0x4, 0x72, 0x1f, 0xe, 0xf8, 0x85, + 0x6, 0xb1, 0xf7, 0x51, 0x71, 0xa, 0x70, 0xfb, 0x1b, 0x5, 0xfb, 0xc5, + 0x6, 0xb4, 0xf7, 0x5d, 0x5, 0xf7, 0x39, 0x6, 0x7b, 0x39, 0x51, 0xa, + 0xb8, 0xf7, 0x6f, 0x62, 0xa, 0x7a, 0x38, 0x5, 0xfb, 0x38, 0x6, 0xb3, + 0xf7, 0x5e, 0x81, 0xa, 0x71, 0xfb, 0x1b, 0x5, 0xc4, 0x6, 0xb1, 0xf7, + 0x51, 0x5, 0xfc, 0x83, 0x45, 0xa, 0xdf, 0x6, 0x2f, 0xfc, 0x5d, 0x6b, + 0xa, 0xb, 0x15, 0x20, 0xd7, 0x43, 0xf7, 0x15, 0xf7, 0x38, 0xf7, 0x9, + 0xf7, 0x14, 0xf7, 0x2e, 0xdf, 0x5b, 0xec, 0xfb, 0x2a, 0xfb, 0x2b, 0xfb, + 0x1d, 0xfb, 0x9, 0xfb, 0x3b, 0x1e, 0xc9, 0x9a, 0x15, 0xf5, 0xe8, 0xf6, + 0xf7, 0xe, 0xf7, 0x16, 0x9d, 0x34, 0x4f, 0x28, 0x2c, 0x21, 0xfb, 0x9, + 0xfb, 0x7, 0x67, 0xcc, 0xd5, 0x1e, 0xb, 0x6, 0x96, 0xc1, 0x5, 0xb, + 0x4e, 0x4b, 0x3e, 0x5c, 0x38, 0x1b, 0x57, 0x64, 0xa8, 0xab, 0xed, 0xf7, + 0x1d, 0x97, 0xc6, 0x40, 0xa, 0x5, 0x2b, 0x2d, 0xa, 0xf7, 0x60, 0x2a, + 0xa, 0x57, 0x6, 0x21, 0xb, 0x6, 0x80, 0x55, 0x5, 0xb, 0x15, 0x52, + 0xb2, 0x5e, 0xcf, 0xdf, 0xd4, 0xd3, 0xdb, 0xc1, 0x6c, 0xb7, 0x3d, 0x38, + 0x43, 0x42, 0x40, 0x1e, 0xc4, 0x92, 0x15, 0xbc, 0xb3, 0xb1, 0xbe, 0xb3, + 0x9e, 0x73, 0x6c, 0x61, 0x6a, 0x5f, 0x55, 0x66, 0x71, 0x9f, 0xad, 0x1e, + 0xb, 0x44, 0xa, 0xf8, 0x5c, 0x37, 0xa, 0xfc, 0x5c, 0x5, 0xfb, 0x45, + 0x6, 0xb, 0xad, 0x71, 0x53, 0xb4, 0x3c, 0x1b, 0xfb, 0x33, 0xfb, 0x9, + 0xfb, 0x9, 0x22, 0x39, 0xc1, 0x3b, 0xf7, 0x21, 0xcc, 0xd6, 0x98, 0xb8, + 0xbd, 0x1f, 0x78, 0x20, 0x5, 0x34, 0x79, 0x52, 0x6f, 0xfb, 0xb, 0x1b, + 0x48, 0x4b, 0x9c, 0x96, 0x59, 0x1f, 0xcc, 0xf7, 0xc1, 0x15, 0xee, 0xf7, + 0x1, 0xd0, 0xf0, 0xf7, 0x6, 0xab, 0x4c, 0x4b, 0x2c, 0x25, 0x4f, 0x23, + 0x31, 0x4f, 0xbd, 0xcb, 0x1e, 0xb, 0xf7, 0xc9, 0x2a, 0xa, 0xfb, 0x12, + 0x6, 0xad, 0xf7, 0x43, 0xf7, 0x7e, 0xf7, 0xae, 0x5, 0xce, 0x2a, 0xa, + 0xfb, 0x5a, 0x2d, 0xa, 0xd1, 0x6, 0xfb, 0x52, 0xfb, 0x78, 0x26, 0xf7, + 0x78, 0x5, 0xd2, 0x43, 0xa, 0xd1, 0x6, 0xf7, 0x10, 0xfb, 0xae, 0x69, + 0xfb, 0x43, 0x5, 0xfb, 0x12, 0x6, 0xb, 0x5, 0xfb, 0x82, 0x2d, 0xa, + 0x86, 0xa, 0xfb, 0x9d, 0xb, 0x15, 0x69, 0xa, 0xf7, 0x3b, 0x6, 0xc8, + 0xf7, 0xdb, 0x5, 0xfb, 0x1b, 0x77, 0xa, 0xf7, 0x4f, 0x6, 0x44, 0xfc, + 0x12, 0x5, 0xf7, 0x3a, 0x56, 0xa, 0xe, 0xf7, 0xb5, 0xf7, 0x5e, 0x15, + 0xf7, 0x37, 0x6, 0x72, 0xfb, 0x18, 0x5, 0x76, 0x46, 0x64, 0x7f, 0x54, + 0x1b, 0xfb, 0x18, 0x53, 0xd8, 0xeb, 0xf7, 0x74, 0xf7, 0x2a, 0xe6, 0xf7, + 0x7, 0xd0, 0xc0, 0x68, 0x5b, 0xae, 0x1f, 0x7c, 0x3f, 0x51, 0xa, 0xb5, + 0xf7, 0x6a, 0x52, 0xa, 0x7e, 0x49, 0x5, 0xb, 0x15, 0x71, 0xa3, 0x73, + 0xb1, 0xb2, 0xb6, 0xa9, 0xb3, 0xa8, 0x75, 0xa4, 0x67, 0x60, 0x60, 0x69, + 0x63, 0x1e, 0xb, 0x6, 0x96, 0xc2, 0x5, 0xb, 0x5, 0xf7, 0x41, 0x46, + 0xa, 0xfc, 0x2b, 0x38, 0xa, 0xf7, 0x42, 0x6, 0x2c, 0xb, 0x6, 0x80, + 0x54, 0x5, 0xb, 0x8f, 0x55, 0x5, 0x9a, 0xae, 0xe4, 0xa6, 0xd0, 0x1b, + 0xb, 0x51, 0xb9, 0x54, 0xe7, 0xd8, 0xda, 0xb6, 0xc1, 0xcd, 0x1e, 0xb, + 0x7c, 0xc3, 0x5f, 0xc3, 0xf7, 0x33, 0xc4, 0xf7, 0xf, 0xc4, 0xb, 0x6, + 0x96, 0xc3, 0x5, 0xb, 0xb4, 0x62, 0x4d, 0xa4, 0x46, 0x1b, 0xfb, 0x3f, + 0xfb, 0x2b, 0xfb, 0x24, 0xfb, 0x7c, 0xfb, 0x8, 0xce, 0x21, 0xf7, 0x3d, + 0xd4, 0xd9, 0x9f, 0xa5, 0xcf, 0x1f, 0xac, 0xf7, 0x42, 0x5, 0xbf, 0x36, + 0xa, 0xfb, 0xa2, 0x6, 0xb, 0x8b, 0xc1, 0xf8, 0x5a, 0xc1, 0x1, 0xb, + 0xa2, 0x3c, 0x15, 0x76, 0x59, 0x5, 0x80, 0xbd, 0xdc, 0x7a, 0xdd, 0x1b, + 0xf7, 0x10, 0xe3, 0xbf, 0xf0, 0xa2, 0x1f, 0xd9, 0xf8, 0x12, 0x5, 0xc7, + 0x6, 0x95, 0xbe, 0x5, 0xfb, 0x6, 0x6, 0x7c, 0x4c, 0x5, 0xb, 0xb8, + 0xb5, 0x85, 0x84, 0xb5, 0x1f, 0xe, 0x70, 0xa0, 0x71, 0xae, 0xb0, 0xaf, + 0xab, 0xb4, 0xaa, 0x73, 0xa1, 0x6c, 0x65, 0x67, 0x68, 0x65, 0x1e, 0xb, + 0xf3, 0xef, 0xb4, 0xc8, 0xc0, 0xbd, 0x75, 0x59, 0x9b, 0x1e, 0xc2, 0x9c, + 0x5, 0xc3, 0x79, 0x6d, 0xc4, 0xfb, 0x9, 0x1b, 0xfb, 0xc, 0x23, 0x32, + 0x27, 0x1f, 0x8a, 0xb, 0x2a, 0xa, 0xfb, 0x5f, 0x2d, 0xa, 0xb, 0xf8, + 0x2f, 0x6, 0x98, 0xc1, 0x5, 0xfb, 0x45, 0x6, 0xea, 0xb, 0x6, 0x7f, + 0x55, 0x5, 0xb, 0x6, 0x97, 0xc2, 0x5, 0xb, 0x6, 0x97, 0xc1, 0x5, + 0xb, 0x15, 0xd9, 0x6, 0xf7, 0x40, 0xf7, 0x33, 0x65, 0x9d, 0xfb, 0x33, + 0xfb, 0xb, 0xfb, 0x11, 0xf7, 0xc, 0x5f, 0x78, 0x5, 0xe, 0x1, 0xc4, + 0xc9, 0xf7, 0xff, 0xc8, 0x3, 0xb, 0x12, 0xba, 0xc5, 0xf7, 0xee, 0xc4, + 0xb, 0x3b, 0xa, 0xf7, 0x73, 0x77, 0x4a, 0xa, 0x13, 0x7e, 0xb, 0x15, + 0xdb, 0x6, 0xf7, 0x46, 0xf7, 0x33, 0x65, 0x9f, 0xfb, 0x3d, 0xfb, 0xf, + 0xfb, 0x12, 0xf7, 0xe, 0x5f, 0x77, 0x5, 0xb, 0x6, 0x95, 0xc1, 0x5, + 0xb, 0x7c, 0xc1, 0x60, 0xc2, 0xf7, 0xdd, 0xc3, 0xb, 0xf7, 0x63, 0xf7, + 0x4a, 0xf7, 0x60, 0x3, 0xb, 0x1, 0xe7, 0xbf, 0xf7, 0xc4, 0xbf, 0x3, + 0xb, 0x5, 0xc3, 0x6, 0xb, 0x5, 0x54, 0x6, 0xb, 0x1b, 0xb7, 0xb9, + 0x9d, 0xa7, 0xb1, 0x1f, 0x7d, 0xb8, 0x5, 0x7f, 0x77, 0x53, 0x76, 0x67, + 0x1b, 0xb, 0x15, 0xda, 0x6, 0xa5, 0xf7, 0xa, 0x5, 0x3d, 0x6, 0xb, + 0x5, 0xfb, 0x1b, 0x6, 0xb, 0x6, 0x7f, 0x54, 0x5, 0xb, 0x63, 0xa, + 0x6, 0xb, 0xfc, 0x5a, 0x5, 0xb, 0x70, 0xa, 0xf7, 0x78, 0x77, 0x50, + 0xa, 0xb, 0x5d, 0xa, 0xf7, 0x74, 0x77, 0x49, 0xa, 0xb, 0x8b, 0x61, + 0xa, 0xf7, 0x5e, 0xc1, 0xb, 0x6, 0xa4, 0x88, 0xa, 0xb, 0x7c, 0xc2, + 0xf7, 0xf4, 0xc3, 0xb, 0x6, 0x30, 0x58, 0xa, 0xb, 0x6, 0x81, 0x55, + 0x5, 0xb, 0x6, 0x80, 0x53, 0x5, 0xb, 0xc1, 0xf7, 0x5d, 0xc1, 0xb, + 0x5, 0x52, 0x6, 0xb, 0x5, 0xfb, 0x0, 0xb, 0xf7, 0x7e, 0x5, 0xb, + 0xf8, 0x9a, 0x76, 0xf7, 0x43, 0x77, 0x1, 0xb, 0x5, 0xfb, 0x21, 0x38, + 0xa, 0xb, 0x6, 0x81, 0x54, 0x5, 0xb, 0x6, 0x81, 0x56, 0x5, 0xb, + 0x95, 0xc2, 0x5, 0xb, 0x5, 0xc2, 0x6, 0xb, 0x5, 0x39, 0x6, 0xb, + 0x15, 0x74, 0x97, 0x76, 0xa4, 0xa6, 0xa5, 0xa8, 0xa9, 0xa1, 0x7d, 0xb, + 0x15, 0x57, 0xb4, 0x5b, 0xcd, 0xdf, 0xd1, 0xd3, 0xdd, 0xbd, 0x69, 0xb, + 0x6, 0xa4, 0xf7, 0x7, 0x5, 0xb, 0x8b, 0xc2, 0xf7, 0xdb, 0xc2, 0xb, + 0x79, 0xc1, 0xf8, 0x6d, 0xc3, 0xb, 0x5, 0x53, 0x6, 0xb, 0x71, 0x5f, + 0x6c, 0x61, 0x55, 0x68, 0x71, 0xa1, 0xa9, 0x1e, 0xb, 0xf7, 0x1c, 0x76, + 0xf7, 0x32, 0xbd, 0xf7, 0x34, 0x77, 0x1, 0xb, 0x77, 0x1, 0xf7, 0xa, + 0xc6, 0xf2, 0xc7, 0x3, 0xf7, 0xac, 0xb, 0x6, 0xf7, 0x29, 0x64, 0xa, + 0x2f, 0x6, 0xe, 0x6, 0x94, 0xc1, 0x5, 0xb, 0x6, 0x69, 0xa, 0xb, + 0x6, 0x96, 0xbe, 0x5, 0xb, 0xf7, 0x24, 0x5, 0xe, 0xfc, 0x5d, 0x5, + 0xb, 0x5, 0x38, 0x6, 0xb, 0xe2, 0xdd, 0x9b, 0x1f, 0xd1, 0xf7, 0xf8, + 0x5, 0xb, 0x77, 0x1, 0xad, 0xc1, 0xf8, 0x3a, 0xc2, 0x3, 0xb, 0x8b, + 0xbe, 0xf7, 0x12, 0xc1, 0xf7, 0xac, 0xc1, 0xb, 0xf7, 0x1d, 0xc4, 0xf7, + 0x71, 0x77, 0x1, 0xc1, 0xb, 0x6, 0x96, 0xc0, 0x5, 0xb, 0x5, 0xf7, + 0xbe, 0x6, 0xb, 0x6, 0x80, 0x57, 0x5, 0xb, 0x5, 0xfb, 0x18, 0x6, + 0xb, 0xf7, 0x78, 0x77, 0x1, 0xb, 0x15, 0xdd, 0x6, 0xb, 0xf7, 0x1f, + 0x6, 0xb, 0xf8, 0x5a, 0x5, 0xb, 0xf7, 0x8, 0x5, 0xb, 0x5, 0x3b, + 0x6, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSans.cpp b/core/fxge/fontdata/chromefontdata/FoxitSans.cpp new file mode 100644 index 0000000000..16da03e54e --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSans.cpp @@ -0,0 +1,1262 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSansFontData[15025] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xd, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x4f, 0x54, 0x46, 0x0, 0x1, 0x1, + 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, + 0x1d, 0x3, 0xf8, 0x18, 0x4, 0xfb, 0x3a, 0xfb, 0x75, 0xfa, 0x7c, 0xfa, + 0x45, 0x5, 0xf7, 0x16, 0xf, 0xf8, 0xe1, 0x11, 0xab, 0x1c, 0x34, 0xa2, + 0x12, 0x0, 0x3, 0x1, 0x1, 0x5, 0x2f, 0x3d, 0x45, 0x75, 0x72, 0x6f, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, + 0x53, 0x61, 0x6e, 0x73, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x0, 0x0, + 0x22, 0x0, 0x8a, 0x0, 0xab, 0x0, 0xac, 0x0, 0xad, 0x0, 0xae, 0x0, + 0xaf, 0x0, 0xb0, 0x0, 0x23, 0x0, 0x24, 0x0, 0xb1, 0x0, 0x25, 0x0, + 0x26, 0x0, 0xb2, 0x0, 0xb3, 0x0, 0xb4, 0x0, 0xb5, 0x0, 0x9a, 0x1, + 0x87, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0xb6, 0x0, + 0xb7, 0x0, 0xb8, 0x0, 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, + 0x8c, 0x0, 0x2e, 0x0, 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, 0x0, + 0xbb, 0x0, 0xbc, 0x0, 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, 0x0, + 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0xc0, 0x0, 0x35, 0x0, + 0x9d, 0x0, 0x36, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, + 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0xc5, 0x0, 0xc6, 0x0, + 0x3b, 0x0, 0xc7, 0x0, 0x42, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0x7d, 0x0, + 0xca, 0x0, 0x90, 0x0, 0xcb, 0x0, 0x7, 0x0, 0xcc, 0x0, 0x3f, 0x0, + 0x5f, 0x0, 0xb, 0x0, 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, 0x0, + 0x5d, 0x0, 0x5c, 0x0, 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, 0x0, + 0xa0, 0x0, 0x74, 0x0, 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, 0x0, + 0x61, 0x0, 0x7e, 0x0, 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, 0x0, + 0x45, 0x0, 0x70, 0x0, 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, 0x0, + 0x5, 0x0, 0x82, 0x0, 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, 0x0, + 0xd1, 0x0, 0xd2, 0x0, 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, 0x0, + 0x1e, 0x0, 0xa7, 0x0, 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, 0x0, + 0x16, 0x0, 0x6e, 0x0, 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, 0x0, + 0x95, 0x0, 0x7c, 0x0, 0x1f, 0x0, 0x6a, 0x0, 0x78, 0x0, 0x6b, 0x0, + 0x6c, 0x0, 0x49, 0x0, 0x86, 0x0, 0xe, 0x0, 0x4a, 0x0, 0xd3, 0x0, + 0xd4, 0x0, 0xd5, 0x0, 0xd6, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, 0x0, + 0x1d, 0x0, 0x97, 0x0, 0x92, 0x0, 0x4e, 0x0, 0x80, 0x0, 0xa6, 0x0, + 0x98, 0x0, 0xa8, 0x0, 0x4f, 0x0, 0x1a, 0x0, 0xd7, 0x0, 0x4, 0x0, + 0x50, 0x0, 0xd8, 0x0, 0xd9, 0x0, 0xda, 0x0, 0x94, 0x0, 0x87, 0x0, + 0xdb, 0x0, 0x12, 0x0, 0x9b, 0x0, 0x9e, 0x0, 0x96, 0x0, 0x8b, 0x0, + 0x8f, 0x0, 0x93, 0x0, 0xdc, 0x0, 0x51, 0x0, 0x73, 0x0, 0x9, 0x0, + 0xa, 0x0, 0x6, 0x0, 0xf, 0x0, 0x72, 0x0, 0x7a, 0x0, 0xc, 0x0, + 0x9c, 0x0, 0x52, 0x0, 0x20, 0x0, 0x7b, 0x0, 0x3, 0x0, 0x76, 0x0, + 0x69, 0x0, 0x77, 0x0, 0x41, 0x0, 0x8, 0x0, 0x75, 0x0, 0x68, 0x0, + 0x53, 0x0, 0xa5, 0x0, 0x84, 0x0, 0x54, 0x0, 0xdd, 0x0, 0x66, 0x0, + 0x1c, 0x0, 0x18, 0x0, 0x17, 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, + 0x55, 0x0, 0xa2, 0x0, 0x14, 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, + 0x99, 0x0, 0x13, 0x0, 0xa4, 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, + 0xe0, 0x0, 0xe1, 0x0, 0x40, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, + 0x5a, 0x0, 0xe2, 0x0, 0xe3, 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, + 0x11, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, 0x36, 0x0, 0x75, + 0x0, 0x8a, 0x0, 0xa2, 0x0, 0xc2, 0x0, 0xd3, 0x1, 0x4, 0x1, 0x32, + 0x1, 0x92, 0x1, 0xe1, 0x2, 0x5b, 0x2, 0x9d, 0x2, 0xc0, 0x2, 0xcd, + 0x2, 0xd9, 0x2, 0xeb, 0x2, 0xfc, 0x3, 0x47, 0x3, 0xc2, 0x3, 0xe1, + 0x4, 0x42, 0x4, 0x68, 0x4, 0x77, 0x4, 0x87, 0x4, 0xa4, 0x4, 0xbf, + 0x4, 0xd0, 0x5, 0x1, 0x5, 0x2f, 0x5, 0x44, 0x5, 0x71, 0x5, 0xa7, + 0x5, 0xcc, 0x6, 0x16, 0x6, 0x68, 0x6, 0xd7, 0x6, 0xe8, 0x6, 0xf9, + 0x7, 0x8, 0x7, 0x21, 0x7, 0xa4, 0x7, 0xdf, 0x8, 0x1c, 0x8, 0x98, + 0x8, 0xf0, 0x9, 0x58, 0x9, 0xc6, 0x9, 0xe1, 0xa, 0x25, 0xa, 0x58, + 0xa, 0x60, 0xa, 0x67, 0xa, 0x74, 0xa, 0x7b, 0xa, 0x96, 0xa, 0xcf, + 0xb, 0x3, 0xb, 0x2a, 0xb, 0x4e, 0xb, 0x76, 0xb, 0x90, 0xb, 0xb2, + 0xc, 0x31, 0xc, 0x40, 0xc, 0x4e, 0xc, 0x5c, 0xc, 0x6a, 0xd, 0x12, + 0xd, 0x37, 0xd, 0xcd, 0xe, 0xa, 0xe, 0x2c, 0xe, 0x74, 0xe, 0xc8, + 0xf, 0x7c, 0xf, 0xb4, 0x10, 0xb, 0x10, 0x21, 0x10, 0x37, 0x10, 0x85, + 0x10, 0xd3, 0x10, 0xf1, 0x11, 0xe, 0x11, 0x32, 0x11, 0x4f, 0x11, 0x70, + 0x11, 0xba, 0x11, 0xd1, 0x12, 0x42, 0x12, 0x76, 0x12, 0xed, 0x13, 0x3, + 0x13, 0x1c, 0x13, 0x40, 0x13, 0xd1, 0x14, 0x41, 0x14, 0x90, 0x14, 0xb4, + 0x14, 0xe5, 0x15, 0x1d, 0x15, 0x39, 0x15, 0x62, 0x15, 0xe9, 0x15, 0xfd, + 0x16, 0xb, 0x16, 0x5c, 0x16, 0x6f, 0x16, 0x81, 0x16, 0xcb, 0x16, 0xe6, + 0x17, 0x5a, 0x17, 0x81, 0x17, 0x91, 0x17, 0x9f, 0x17, 0xbb, 0x18, 0x2e, + 0x18, 0x56, 0x18, 0x7e, 0x18, 0xae, 0x18, 0xc2, 0x19, 0x15, 0x19, 0x25, + 0x19, 0x87, 0x19, 0xb7, 0x19, 0xcf, 0x1a, 0x40, 0x1a, 0xa3, 0x1a, 0xba, + 0x1a, 0xd6, 0x1b, 0x8, 0x1b, 0x3a, 0x1b, 0x54, 0x1b, 0x6e, 0x1b, 0xa4, + 0x1b, 0xb8, 0x1b, 0xc9, 0x1b, 0xe0, 0x1b, 0xf1, 0x1c, 0xe, 0x1c, 0x29, + 0x1c, 0x3a, 0x1c, 0x6b, 0x1c, 0x92, 0x1c, 0x9a, 0x1c, 0xb7, 0x1c, 0xcb, + 0x1c, 0xe9, 0x1d, 0x3b, 0x1d, 0x4c, 0x1d, 0x58, 0x1d, 0x9b, 0x1d, 0xd1, + 0x1e, 0x1, 0x1e, 0x62, 0x1e, 0xd1, 0x1f, 0x38, 0x1f, 0x7d, 0x1f, 0x8f, + 0x1f, 0xa1, 0x1f, 0xb5, 0x20, 0x40, 0x20, 0x73, 0x20, 0x8c, 0x20, 0xb0, + 0x21, 0x2d, 0x21, 0x85, 0x21, 0xad, 0x22, 0x24, 0x22, 0x66, 0x22, 0xdf, + 0x23, 0x25, 0x23, 0x6e, 0x23, 0x9e, 0x23, 0xd2, 0x24, 0x8, 0x24, 0x9d, + 0x24, 0xac, 0x24, 0xc3, 0x25, 0x37, 0x25, 0x59, 0x25, 0x89, 0x25, 0xd3, + 0x26, 0x29, 0x26, 0x7f, 0x26, 0x9a, 0x26, 0xb5, 0x26, 0xd1, 0x26, 0xf2, + 0x27, 0x16, 0x27, 0x38, 0x27, 0x5a, 0x27, 0x77, 0x27, 0xa8, 0x28, 0x45, + 0x28, 0x7d, 0x28, 0xd4, 0x29, 0x32, 0x29, 0xcd, 0x29, 0xf8, 0x2a, 0x24, + 0x2a, 0x87, 0x2a, 0x9d, 0x2a, 0xa0, 0x2b, 0x31, 0x2b, 0x6b, 0x2b, 0xc2, + 0x2c, 0x21, 0x2c, 0xba, 0x2d, 0x14, 0x2d, 0x50, 0x2d, 0x9d, 0x2d, 0xeb, + 0x2e, 0x36, 0x2e, 0x6b, 0x2e, 0x7a, 0x2e, 0x88, 0x2e, 0xbc, 0x2e, 0xd8, + 0x2e, 0xe4, 0x2f, 0x0, 0x2f, 0x33, 0x2f, 0x62, 0x2f, 0xa0, 0x2f, 0xb3, + 0x2f, 0xcb, 0x30, 0x12, 0x30, 0x23, 0x30, 0x3c, 0x30, 0x85, 0xfc, 0x31, + 0xe, 0x5f, 0xa, 0xf7, 0x70, 0xd6, 0xf8, 0x3b, 0x77, 0x1, 0x99, 0x16, + 0xea, 0x6, 0xd8, 0xf7, 0x70, 0x5, 0xf7, 0xb2, 0x6, 0xdb, 0xfb, 0x70, + 0x5, 0xf1, 0x6, 0xfb, 0xaa, 0xf9, 0x62, 0x5, 0x28, 0x6, 0x49, 0xfc, + 0x3b, 0x15, 0xf7, 0x4, 0xf7, 0xef, 0x5, 0x8d, 0x6, 0xf7, 0xb, 0xfb, + 0xef, 0x5, 0xe, 0xf7, 0xc9, 0x8b, 0xdf, 0xf7, 0xf, 0xdf, 0xaf, 0xdf, + 0xf7, 0x72, 0xe0, 0x1, 0xf8, 0x78, 0xea, 0x3, 0x93, 0x16, 0xf2, 0x6, + 0xec, 0xf7, 0x63, 0x5, 0xf7, 0xa8, 0xfb, 0x63, 0xf8, 0x67, 0xdf, 0xfc, + 0x8, 0xf7, 0x87, 0xf7, 0xdf, 0xdf, 0xfb, 0xdf, 0xf7, 0x72, 0xf8, 0x7, + 0xe0, 0xfc, 0xea, 0x6, 0x23, 0xfc, 0x3f, 0x15, 0xf7, 0x39, 0xf7, 0xea, + 0x5, 0xd2, 0xfb, 0xea, 0x6, 0xe, 0x46, 0xa, 0xf8, 0x7f, 0xf7, 0x19, + 0x1, 0x27, 0xa, 0xfb, 0x44, 0xf8, 0x7f, 0x4c, 0xa, 0xf7, 0x0, 0xf7, + 0x19, 0x59, 0xa, 0x35, 0xa, 0xfb, 0x9d, 0xf8, 0x7f, 0x15, 0xef, 0x6, + 0xc3, 0xda, 0xc0, 0x3c, 0x5, 0xef, 0x6, 0xfb, 0x2, 0xf7, 0x19, 0x5, + 0x2e, 0x6, 0xe, 0x46, 0xa, 0xf8, 0x86, 0xed, 0x1, 0xf7, 0x5a, 0xe5, + 0xe6, 0xe5, 0x3, 0x27, 0xa, 0xfb, 0x8a, 0xf8, 0x86, 0x15, 0xe5, 0xed, + 0x31, 0x6, 0xf7, 0x49, 0x29, 0x15, 0xe5, 0xed, 0x31, 0x6, 0xe, 0x35, + 0xa, 0xfb, 0x11, 0xf8, 0x7a, 0x15, 0xd0, 0x6, 0x4c, 0xf7, 0x1e, 0x5, + 0xfb, 0x1, 0x6, 0xe, 0x46, 0xa, 0xf8, 0x65, 0xaf, 0xf2, 0xaf, 0x1, + 0xf7, 0x85, 0xaf, 0xf3, 0xaf, 0x3, 0x27, 0xa, 0xfb, 0x5f, 0xf8, 0xbe, + 0x64, 0xa, 0xaf, 0x5a, 0x5a, 0x65, 0x67, 0x5a, 0x1e, 0xaf, 0x16, 0xa5, + 0xa1, 0xa3, 0xa9, 0xa9, 0xa1, 0x75, 0x6f, 0x6e, 0x74, 0x73, 0x6e, 0x70, + 0x72, 0xa0, 0xab, 0x1e, 0xe, 0x46, 0xa, 0xf8, 0x87, 0x75, 0xa, 0x13, + 0xe0, 0x27, 0xa, 0xfb, 0xa6, 0xf8, 0x87, 0x6b, 0xa, 0xa3, 0xa2, 0x80, + 0x7f, 0xa1, 0x1f, 0x80, 0xa0, 0x9f, 0x7f, 0x53, 0xa, 0x7e, 0x7b, 0x92, + 0x93, 0x79, 0x1f, 0x13, 0xd0, 0x97, 0x72, 0x70, 0x99, 0x6d, 0x1b, 0x13, + 0xe0, 0x73, 0xa, 0x73, 0x8b, 0xe0, 0xf7, 0x8a, 0xe0, 0xf7, 0x6d, 0xe0, + 0x1, 0xd5, 0xea, 0xf7, 0xd2, 0xe8, 0x3, 0xd5, 0x16, 0xf7, 0x82, 0x6, + 0xf7, 0x18, 0xf7, 0x4b, 0xa5, 0xf7, 0x4a, 0xc3, 0x67, 0xdf, 0xfb, 0x2, + 0xac, 0x1f, 0xe8, 0xba, 0x91, 0xce, 0xa5, 0x1a, 0xf7, 0x32, 0xfb, 0x26, + 0xb2, 0xfb, 0xe, 0x1e, 0xfb, 0x82, 0x6, 0xea, 0xfd, 0xd, 0x15, 0xf7, + 0x8a, 0xf7, 0x23, 0x7, 0xc5, 0xf7, 0x33, 0x8b, 0xfb, 0xf, 0xfb, 0x10, + 0xfb, 0x3b, 0x8c, 0x59, 0x1f, 0xfb, 0x23, 0xf7, 0xdf, 0x15, 0xf7, 0x6d, + 0xf7, 0x23, 0x7, 0xda, 0xeb, 0x89, 0xfb, 0x2, 0x21, 0xfb, 0x4, 0x8c, + 0x4c, 0x1f, 0xe, 0xaa, 0x78, 0xde, 0xf8, 0xe2, 0xde, 0x1, 0xc3, 0xee, + 0x3, 0xf8, 0xde, 0xf7, 0x8d, 0x15, 0x32, 0x78, 0x53, 0x2b, 0xfb, 0x1d, + 0x1b, 0xfb, 0x40, 0x50, 0xf7, 0x47, 0xf7, 0xc, 0xf7, 0xa, 0xab, 0xf7, + 0x41, 0xf7, 0x5b, 0xf7, 0x19, 0xbc, 0x2c, 0x50, 0x9e, 0x1f, 0xe9, 0xa1, + 0x5, 0xf7, 0x2b, 0x60, 0xfb, 0xf, 0xcb, 0xfb, 0x15, 0x1b, 0xfb, 0x45, + 0xfb, 0x2d, 0xfb, 0x8, 0xfb, 0x96, 0xfb, 0x57, 0xe1, 0xfb, 0x4f, 0xf7, + 0x88, 0xd9, 0xf7, 0x41, 0xa2, 0xf7, 0x70, 0xc3, 0x1f, 0xe, 0xaa, 0xfb, + 0x60, 0x76, 0xf7, 0x67, 0xda, 0xf8, 0xe1, 0xde, 0x1, 0xb7, 0xee, 0xf7, + 0x85, 0xe1, 0x3, 0xf7, 0xda, 0x7d, 0x15, 0x72, 0x3f, 0x5, 0xbf, 0x8a, + 0xaa, 0x80, 0x70, 0x1a, 0x65, 0xfb, 0x7, 0x91, 0x78, 0x8a, 0x1e, 0x87, + 0x4c, 0x5, 0xf7, 0x2d, 0xd2, 0x9e, 0xd8, 0xae, 0x75, 0xb0, 0x4e, 0x92, + 0x1f, 0x91, 0xac, 0x5, 0xf7, 0x1e, 0xf7, 0x0, 0xd8, 0xf7, 0x3a, 0xb5, + 0x1f, 0x2b, 0xa4, 0x5, 0x2f, 0x75, 0x59, 0x2d, 0xfb, 0x1e, 0x1b, 0xfb, + 0x42, 0x51, 0xf7, 0x2d, 0xf7, 0x21, 0xf7, 0x1a, 0xbc, 0xf7, 0x35, 0xf7, + 0x52, 0xf7, 0x19, 0xb4, 0x2e, 0x50, 0x9d, 0x1f, 0xe9, 0xa1, 0x5, 0xf7, + 0x2c, 0x60, 0xfb, 0x7, 0xc8, 0xfb, 0x13, 0x1b, 0xfb, 0x31, 0xfb, 0x4a, + 0x28, 0xfb, 0xab, 0xfb, 0x38, 0xd0, 0xfb, 0x65, 0xf7, 0x69, 0x1f, 0xe, + 0xaa, 0x8b, 0xe0, 0xf8, 0xb8, 0xe0, 0x12, 0xdc, 0xea, 0xf8, 0x24, 0xed, + 0x17, 0xdc, 0x16, 0xf7, 0x8a, 0x6, 0xf7, 0x6e, 0xf7, 0x15, 0xf7, 0x10, + 0xf7, 0x82, 0x1f, 0x13, 0xe0, 0xf7, 0x9a, 0xfb, 0x24, 0xe9, 0xfb, 0x5f, + 0x1e, 0xfb, 0x8a, 0x6, 0xea, 0xfd, 0xd, 0x15, 0xf8, 0xb8, 0x7, 0x13, + 0xd0, 0xf7, 0x2b, 0x6, 0xf7, 0x2e, 0xea, 0x21, 0xfb, 0x39, 0xfb, 0xac, + 0xfb, 0x39, 0x8e, 0x37, 0x1f, 0xe, 0x73, 0x8b, 0xe0, 0xf7, 0x86, 0xe0, + 0xf7, 0x71, 0xe0, 0x6e, 0xa, 0x3, 0xe1, 0x16, 0xf9, 0x62, 0xf8, 0x85, + 0x36, 0xfc, 0x26, 0xfb, 0x71, 0xf8, 0x15, 0x36, 0xfc, 0x15, 0xfb, 0x86, + 0xf8, 0x26, 0x36, 0x7, 0xe, 0x43, 0xa, 0xc3, 0xf7, 0x1d, 0x36, 0xa, + 0xf7, 0x54, 0xc3, 0x2f, 0xa, 0xe, 0x43, 0xa, 0xf7, 0x55, 0x77, 0x36, + 0xa, 0xf2, 0xc3, 0x2c, 0xa, 0xe, 0x43, 0xa, 0xcc, 0xef, 0x6e, 0xa, + 0xa6, 0xe5, 0xe6, 0xe5, 0x30, 0xa, 0xf7, 0xe, 0xcc, 0x2e, 0xa, 0xe, + 0x43, 0xa, 0xc7, 0xf7, 0x19, 0x36, 0xa, 0xf7, 0x8f, 0xc7, 0x4c, 0xa, + 0x4a, 0xf7, 0x19, 0x59, 0xa, 0xaa, 0x8b, 0xe0, 0xf7, 0x7b, 0xe0, 0xf7, + 0x7c, 0xe0, 0x1, 0xdb, 0xea, 0xf8, 0x25, 0xed, 0x3, 0xdb, 0x16, 0xf7, + 0x89, 0x6, 0xf7, 0x5a, 0xf7, 0x2b, 0xf7, 0xc, 0xf7, 0x86, 0xf7, 0x9a, + 0xfb, 0x26, 0xe9, 0xfb, 0x5f, 0x1f, 0xfb, 0x89, 0xfb, 0xd1, 0x3b, 0x36, + 0xdb, 0x6, 0xea, 0xfb, 0x7b, 0x15, 0xf7, 0x7b, 0xf7, 0x57, 0xe0, 0xfb, + 0x57, 0xf7, 0x7c, 0xf7, 0x2a, 0x7, 0xf7, 0x34, 0xe6, 0x46, 0xfb, 0x5e, + 0xfb, 0xab, 0xfb, 0x3b, 0x8d, 0x37, 0x1f, 0xe, 0x73, 0x8b, 0xda, 0xf7, + 0x43, 0xcb, 0xdf, 0xcb, 0xf7, 0x41, 0xda, 0x1, 0x99, 0xf7, 0x93, 0x15, + 0xf4, 0x6, 0xfb, 0x40, 0xb7, 0xe4, 0x38, 0xf7, 0x6b, 0x1b, 0xc1, 0xc9, + 0x94, 0x9d, 0xbb, 0x1f, 0xed, 0x7, 0x68, 0x5e, 0x50, 0x80, 0x4f, 0x1b, + 0xfb, 0x20, 0x31, 0xcb, 0xf7, 0x4, 0x73, 0x1f, 0xf7, 0xe4, 0x6, 0x9a, + 0xcb, 0x5, 0xfb, 0xff, 0x6, 0x8a, 0x99, 0x8b, 0xae, 0x8c, 0xac, 0x8, + 0xf8, 0xf, 0x6, 0x9a, 0xcb, 0x5, 0xfc, 0x15, 0x6, 0xf7, 0x6, 0xa2, + 0xf7, 0x2, 0xc7, 0xf7, 0x19, 0x1b, 0xc5, 0xbf, 0x7b, 0x6c, 0xb8, 0x1f, + 0xa2, 0xe2, 0x5, 0xa7, 0x56, 0x4b, 0x96, 0x4e, 0x1b, 0xfb, 0x5b, 0xfb, + 0x12, 0x32, 0xfb, 0x38, 0x66, 0x1f, 0x37, 0x6, 0x7b, 0x4b, 0x5, 0xe7, + 0x6, 0x8a, 0x77, 0x8c, 0x61, 0x8c, 0x77, 0x8, 0x3e, 0x6, 0xe, 0x3b, + 0xa0, 0x76, 0xf7, 0xd8, 0xe0, 0xf7, 0x74, 0xe0, 0x6e, 0xa, 0x3, 0xe1, + 0x16, 0xea, 0xf7, 0xd8, 0xf7, 0xdb, 0xe0, 0xfb, 0xdb, 0xf7, 0x74, 0xf8, + 0x26, 0xe0, 0xfc, 0x85, 0x6, 0xe, 0xe2, 0x78, 0xe2, 0xf7, 0x66, 0xe2, + 0xf7, 0xb5, 0xde, 0x12, 0xbb, 0xea, 0xf8, 0x6a, 0xe6, 0x17, 0xf8, 0x29, + 0xf7, 0xaa, 0x15, 0xf7, 0x64, 0xfb, 0x1c, 0x6, 0x7d, 0x7a, 0x39, 0x4f, + 0x20, 0x1b, 0x13, 0x30, 0xfb, 0x3c, 0x2b, 0xf7, 0xc, 0xf7, 0x3b, 0xd2, + 0xa2, 0xf7, 0x78, 0xf7, 0x83, 0x1f, 0x13, 0xf8, 0xf7, 0x35, 0xa9, 0xfb, + 0x5, 0x5d, 0x98, 0x1f, 0xdf, 0xa3, 0x5, 0xc0, 0x7e, 0x64, 0xf7, 0x39, + 0xfb, 0x80, 0x1b, 0xfb, 0xb4, 0x46, 0xfb, 0x82, 0xfb, 0x24, 0xfb, 0x7b, + 0xf7, 0x24, 0xfb, 0x23, 0xf7, 0x6b, 0xf7, 0x2d, 0xf5, 0xdd, 0xaa, 0xb1, + 0x1f, 0xf7, 0xa3, 0xfb, 0xbf, 0x7, 0xe, 0xaa, 0xa0, 0x76, 0xf7, 0xe5, + 0xe0, 0xf7, 0xbc, 0x77, 0x1, 0xd8, 0xea, 0xf8, 0xf, 0xea, 0x3, 0xd8, + 0x16, 0xea, 0xf7, 0xe5, 0xf8, 0xf, 0xfb, 0xe5, 0xea, 0xf9, 0x62, 0x2c, + 0xfb, 0xbc, 0xfc, 0xf, 0xf7, 0xbc, 0x2c, 0x6, 0xe, 0xfc, 0x31, 0x39, + 0xa, 0xe6, 0xec, 0x3, 0xe6, 0x16, 0xec, 0xf9, 0x62, 0x2a, 0x6, 0xe, + 0x61, 0xa, 0xd2, 0xf9, 0xab, 0x4c, 0xa, 0xf7, 0x15, 0xf7, 0x1e, 0x38, + 0xa, 0x48, 0x51, 0xa, 0x4b, 0xa, 0xf9, 0xac, 0xf7, 0x1d, 0x1, 0xe5, + 0xea, 0x3, 0x85, 0xf9, 0xac, 0x15, 0xef, 0x6, 0xba, 0xde, 0xb8, 0x38, + 0x5, 0xee, 0x6, 0x26, 0x42, 0xa, 0x8a, 0x51, 0xa, 0x4b, 0xa, 0xf9, + 0xb5, 0xef, 0x12, 0x98, 0xe5, 0x7e, 0xea, 0x82, 0xe5, 0x13, 0xd0, 0xe5, + 0x16, 0xea, 0xf9, 0x60, 0x2c, 0x6, 0x13, 0xe8, 0x3e, 0xe0, 0x58, 0xa, + 0x61, 0xa, 0xf7, 0x1e, 0xf9, 0xaa, 0x15, 0xd1, 0x6, 0x35, 0xf7, 0x1f, + 0x38, 0xa, 0xde, 0x51, 0xa, 0xfb, 0x53, 0x78, 0xe0, 0xf9, 0x20, 0x77, + 0x1, 0x9c, 0xe1, 0xf7, 0x7a, 0xea, 0x3, 0x9c, 0xf7, 0x5b, 0x15, 0xfb, + 0x4c, 0xf7, 0x19, 0x69, 0xd2, 0xf7, 0x49, 0xa5, 0xf7, 0x13, 0xf7, 0x3, + 0x1e, 0xf8, 0x87, 0x2c, 0xfc, 0x87, 0x7, 0x50, 0x86, 0x2d, 0x20, 0x27, + 0x7b, 0xeb, 0xbc, 0x89, 0x1e, 0xe, 0x73, 0x39, 0xa, 0xd7, 0xea, 0x3, + 0xd7, 0x16, 0xea, 0xf7, 0x8c, 0x6, 0xf7, 0xa, 0xf7, 0x6, 0xf7, 0x8d, + 0xfb, 0xfe, 0x5, 0xf7, 0x11, 0x6, 0xfb, 0xc8, 0xf8, 0x3e, 0xf7, 0xbf, + 0xf7, 0xb8, 0x5, 0xfb, 0x14, 0x6, 0xfb, 0xf7, 0xfb, 0xf9, 0x5, 0xf7, + 0xf9, 0x2c, 0x7, 0xe, 0x8b, 0xe0, 0xf9, 0xd, 0x77, 0x1, 0xd7, 0xea, + 0x3, 0xd7, 0x16, 0xf8, 0x61, 0xe0, 0xfc, 0x2, 0xf9, 0xd, 0x2c, 0x6, + 0xe, 0x8b, 0xe0, 0xf9, 0xd, 0x77, 0x1, 0xd6, 0xea, 0x3, 0xd6, 0x16, + 0xf8, 0x62, 0xe0, 0xfc, 0x3, 0xf7, 0xa4, 0x6, 0xf7, 0x35, 0x5a, 0xa, + 0xdd, 0x7, 0xfb, 0x35, 0xfb, 0x1e, 0x5, 0xf7, 0xac, 0x2c, 0xfb, 0xfc, + 0x7, 0x2c, 0x38, 0x5, 0x3a, 0x7, 0xea, 0xdd, 0x5, 0xe, 0xf7, 0x22, + 0x39, 0xa, 0xd4, 0xe5, 0xf8, 0x90, 0xe5, 0x3, 0xd4, 0x16, 0xe5, 0xf8, + 0xf7, 0x8e, 0x6, 0xf7, 0x64, 0xfc, 0xf7, 0x5, 0xe0, 0x6, 0xf7, 0x66, + 0xf8, 0xed, 0x5, 0x8d, 0xfc, 0xed, 0xe5, 0xf9, 0x62, 0xfb, 0x16, 0x6, + 0xfb, 0x65, 0xfc, 0xfb, 0x5, 0x89, 0x6, 0xfb, 0x5e, 0xf8, 0xfb, 0x5, + 0xfb, 0x25, 0x6, 0xe, 0xaa, 0x39, 0xa, 0xd7, 0xe5, 0xf8, 0x1a, 0xe5, + 0x3, 0xd7, 0x16, 0xe5, 0xf8, 0xc8, 0x8d, 0x6, 0xf8, 0x11, 0xfc, 0xc8, + 0x5, 0xec, 0xf9, 0x62, 0x31, 0xfc, 0xc8, 0x89, 0x6, 0xfc, 0x11, 0xf8, + 0xc8, 0x5, 0x2a, 0x6, 0xe, 0xaa, 0xa0, 0x76, 0xf8, 0xd7, 0xf7, 0x2e, + 0xf7, 0x22, 0xb5, 0x1, 0xd7, 0xe5, 0xf8, 0x1a, 0xe5, 0x3, 0xd7, 0x16, + 0xe5, 0xf8, 0xc6, 0x8d, 0x6, 0xf8, 0x11, 0xfc, 0xc6, 0x5, 0xec, 0xf9, + 0x60, 0x31, 0xfc, 0xc6, 0x6, 0xfc, 0x13, 0xf8, 0xc6, 0x5, 0x2a, 0x6, + 0xf7, 0x18, 0xe3, 0x6b, 0xa, 0xa1, 0xa1, 0x7f, 0x80, 0xa1, 0x1f, 0x7f, + 0xa1, 0xa1, 0x80, 0x53, 0xa, 0x87, 0x78, 0x94, 0x95, 0x73, 0x1f, 0x96, + 0x72, 0x6c, 0x96, 0x71, 0x1b, 0x73, 0xa, 0xe2, 0x78, 0xde, 0xf8, 0xe2, + 0xde, 0x1, 0xc7, 0xef, 0xf8, 0x5f, 0xef, 0x3, 0xb2, 0xf7, 0xf8, 0x15, + 0xfb, 0x4f, 0xf7, 0xd, 0xfb, 0x50, 0xf7, 0x78, 0xf7, 0x57, 0xf7, 0x30, + 0xf7, 0x1f, 0xf7, 0x80, 0xf7, 0x7f, 0xfb, 0x2c, 0xf7, 0x26, 0xfb, 0x5b, + 0xfb, 0x4c, 0xfb, 0x39, 0xfb, 0xe, 0xfb, 0x97, 0x1e, 0xef, 0x16, 0xf7, + 0x18, 0xcf, 0xf7, 0x3a, 0xf7, 0x49, 0xf7, 0x10, 0xf7, 0x13, 0x32, 0xfb, + 0x65, 0xfb, 0x5c, 0xfb, 0xa, 0x2f, 0xfb, 0x19, 0xfb, 0x28, 0x26, 0xf7, + 0xd, 0xf7, 0x3f, 0x1e, 0xe, 0xf7, 0xc9, 0x78, 0xd7, 0x4c, 0xe0, 0xf7, + 0x8d, 0xe0, 0xf7, 0x79, 0xe0, 0x49, 0xd7, 0x12, 0xcd, 0xed, 0xf8, 0x2, + 0xe3, 0x13, 0x76, 0xf8, 0xa6, 0x85, 0x15, 0xf8, 0x47, 0xe0, 0xfb, 0xef, + 0xf7, 0x8d, 0xf7, 0xc7, 0xe0, 0xfb, 0xc7, 0xf7, 0x79, 0xf7, 0xe0, 0xe0, + 0xfc, 0x39, 0x2a, 0x89, 0x6, 0x13, 0x8e, 0xe2, 0x59, 0x39, 0x9f, 0x43, + 0x1b, 0xfb, 0x66, 0x3e, 0xfb, 0x48, 0xfb, 0x57, 0xfb, 0x3b, 0xca, 0xfb, + 0x6a, 0xf7, 0x74, 0xb5, 0xf1, 0x92, 0xf7, 0x1, 0xc8, 0x1f, 0x8d, 0x6, + 0xfc, 0x20, 0xf7, 0x9d, 0x15, 0xf7, 0xf, 0xac, 0xf7, 0x44, 0xf7, 0x30, + 0xf7, 0x2f, 0xb9, 0xfb, 0x5d, 0x29, 0xfb, 0xe, 0x58, 0xfb, 0x4b, 0xfb, + 0x2a, 0x25, 0x34, 0xf2, 0xf7, 0x5e, 0x1e, 0xe, 0x4f, 0xa, 0xbd, 0xf7, + 0x1d, 0x45, 0xa, 0xf7, 0xe2, 0xf9, 0xac, 0x2f, 0xa, 0xfb, 0xf2, 0x26, + 0xa, 0x4f, 0xa, 0xf7, 0x4f, 0x77, 0x45, 0xa, 0xf7, 0x7f, 0xf9, 0xac, + 0x2c, 0xa, 0xfb, 0xb8, 0x26, 0xa, 0x4f, 0xa, 0x45, 0xa, 0xbc, 0xf7, + 0xf9, 0x21, 0xa, 0xf4, 0xf8, 0x50, 0x2e, 0xa, 0xe, 0x4f, 0xa, 0xb9, + 0xf7, 0x21, 0x45, 0xa, 0xf8, 0x12, 0xf9, 0xa8, 0x15, 0xd5, 0x6, 0x49, + 0xf7, 0x21, 0x5, 0xfb, 0xa, 0x6, 0xfb, 0x73, 0x26, 0xa, 0xe2, 0x87, + 0xda, 0x42, 0x76, 0xf9, 0x28, 0xda, 0x9c, 0x77, 0x12, 0xb8, 0xed, 0xf8, + 0x7c, 0xed, 0x13, 0x6c, 0xb2, 0xa0, 0x15, 0xbc, 0x63, 0xdc, 0xe5, 0x5, + 0x13, 0x9c, 0x6c, 0xb6, 0xc4, 0x5f, 0xf7, 0xb, 0x1b, 0xf7, 0x48, 0xf7, + 0x35, 0xf7, 0x10, 0xf7, 0x80, 0xf7, 0x17, 0x60, 0xcd, 0x6a, 0xbb, 0x1f, + 0xe2, 0xeb, 0x5a, 0xb3, 0x39, 0x30, 0x5, 0x13, 0xac, 0xab, 0x60, 0x4e, + 0xb5, 0xfb, 0x9, 0x1b, 0xfb, 0x65, 0xfb, 0x1a, 0xfb, 0x25, 0xfb, 0x6d, + 0xfb, 0xf, 0xb2, 0x52, 0xb4, 0x4d, 0x1f, 0xc8, 0xce, 0x15, 0x76, 0xb3, + 0x75, 0xb3, 0xea, 0x1a, 0xf7, 0x75, 0xf7, 0x21, 0xc5, 0xf3, 0xdd, 0xb3, + 0x6f, 0x6c, 0xb3, 0x1e, 0xfb, 0xd7, 0xfc, 0x53, 0x15, 0xf8, 0x0, 0xf8, + 0x21, 0x5, 0xa4, 0x5d, 0x9a, 0x52, 0x42, 0x1a, 0xfb, 0x48, 0x24, 0x26, + 0xfb, 0x20, 0x34, 0x5c, 0xb2, 0xa0, 0x70, 0x1e, 0xe, 0x4f, 0xa, 0x45, + 0xa, 0xf7, 0x76, 0xf9, 0xb8, 0x15, 0xcc, 0x6, 0xbb, 0xab, 0x8a, 0x90, + 0x9e, 0xa2, 0x82, 0x80, 0xa3, 0x1e, 0x7f, 0xa7, 0xa3, 0x7d, 0x96, 0x1b, + 0xa0, 0xd6, 0x86, 0xf7, 0x9, 0x56, 0xa, 0x87, 0x78, 0x94, 0x96, 0x73, + 0x1f, 0x72, 0x96, 0x6d, 0x96, 0x70, 0x8a, 0x8, 0x5a, 0x59, 0x67, 0x3f, + 0x1f, 0xfb, 0x45, 0xfc, 0x53, 0x21, 0xa, 0xe, 0x5f, 0xa, 0xf7, 0xb6, + 0xe0, 0xf7, 0x96, 0xe0, 0x6e, 0xa, 0xf7, 0xda, 0xed, 0x3, 0xe1, 0x16, + 0xea, 0xf7, 0xb6, 0xf7, 0x44, 0x6, 0xf7, 0x18, 0xf7, 0x19, 0xbb, 0xf7, + 0x3c, 0xf7, 0x39, 0xfb, 0x15, 0xba, 0xfb, 0x1c, 0x1f, 0xfb, 0xa3, 0x6, + 0xea, 0xfb, 0xeb, 0x15, 0xf7, 0x96, 0xf7, 0x44, 0x7, 0xeb, 0xd2, 0x71, + 0x26, 0xfb, 0x12, 0xfb, 0x7, 0x86, 0x57, 0x1f, 0xe, 0xe2, 0x68, 0x76, + 0xb7, 0xdd, 0xf8, 0xdd, 0xdd, 0x1, 0xc3, 0xed, 0xf8, 0x6f, 0xed, 0x3, + 0xf8, 0xc2, 0xab, 0x15, 0x6c, 0x53, 0x50, 0x7e, 0x4e, 0x1b, 0xfb, 0x5c, + 0xfb, 0x23, 0xf7, 0x2e, 0xf7, 0x70, 0xf7, 0x68, 0xf7, 0x13, 0xf7, 0x37, + 0xf7, 0x6c, 0xf7, 0x5a, 0xf7, 0x27, 0xfb, 0x27, 0xfb, 0x78, 0x37, 0x77, + 0xfb, 0x7, 0x33, 0x36, 0x1f, 0xb0, 0x70, 0xb3, 0x74, 0xb6, 0x7a, 0x70, + 0x48, 0x18, 0x58, 0x9e, 0x58, 0xa8, 0x57, 0xb3, 0x8, 0xfb, 0x29, 0xf7, + 0x3c, 0x15, 0xd7, 0x76, 0xae, 0x71, 0xa3, 0x74, 0x8, 0xd3, 0xcb, 0x98, + 0xef, 0xcf, 0x1a, 0xf7, 0x60, 0xfb, 0xe, 0xe4, 0xfb, 0x11, 0x26, 0xfb, + 0x24, 0x50, 0xfb, 0x7e, 0xfb, 0x6b, 0xf7, 0x13, 0x3e, 0xf7, 0xa, 0xbe, + 0xaf, 0x99, 0x90, 0x96, 0x1e, 0x6c, 0x9e, 0x6f, 0x99, 0x68, 0x93, 0x8, + 0xe, 0xaa, 0xa0, 0x76, 0xf7, 0xd0, 0xe0, 0xf7, 0x82, 0xda, 0x1, 0xe3, + 0xea, 0xf7, 0xec, 0xed, 0x3, 0xe3, 0x16, 0xea, 0xf7, 0xd0, 0xcb, 0x6, + 0xda, 0xb6, 0x84, 0xfb, 0x35, 0xf1, 0x1f, 0xe9, 0xfb, 0x28, 0x5, 0xf7, + 0xb, 0x6, 0xfb, 0xd, 0xf7, 0x43, 0x53, 0xe2, 0x5c, 0xb9, 0x67, 0x9c, + 0x19, 0x8d, 0x7, 0xf7, 0xe, 0x9b, 0xda, 0xcb, 0xf7, 0x7, 0x1a, 0xf7, + 0x2c, 0xfb, 0x25, 0xb7, 0xfb, 0x15, 0x1e, 0xfb, 0x9b, 0x6, 0xea, 0xfb, + 0xd1, 0x15, 0xf7, 0x82, 0xf7, 0x3c, 0x7, 0xd5, 0xf1, 0x72, 0x2f, 0x24, + 0x2a, 0x79, 0x3c, 0x1f, 0xe, 0x73, 0x78, 0xe2, 0xf8, 0xda, 0xe2, 0x1, + 0xd7, 0xe6, 0xf7, 0xf5, 0xe6, 0x3, 0xbc, 0xf7, 0x79, 0x15, 0xfb, 0x27, + 0x9b, 0xd2, 0x26, 0xf7, 0x6b, 0x1b, 0xf7, 0x37, 0xf5, 0xe6, 0xf7, 0xd, + 0xf7, 0x35, 0xfb, 0x2a, 0xb5, 0xfb, 0x17, 0xa8, 0x1f, 0xfb, 0x18, 0xa9, + 0x63, 0x9c, 0xcb, 0x1a, 0xe6, 0xee, 0xa2, 0xc9, 0xf7, 0x29, 0xa4, 0x35, + 0x56, 0x90, 0x1e, 0xe7, 0x92, 0x5, 0xf7, 0x24, 0x86, 0xfb, 0x3, 0xd6, + 0xfb, 0x2f, 0x1b, 0xfb, 0x33, 0x2e, 0x33, 0xfb, 0x5, 0xfb, 0x26, 0xf7, + 0x22, 0x69, 0xe8, 0x74, 0x1f, 0xf7, 0x26, 0x68, 0xd3, 0x78, 0x35, 0x1a, + 0x3a, 0x3c, 0x5f, 0x28, 0x41, 0xfb, 0xe, 0xab, 0xf7, 0x1d, 0x7b, 0x1e, + 0xe, 0x73, 0x78, 0xe0, 0xf8, 0xcc, 0xe0, 0x1, 0xd9, 0xe5, 0xf7, 0xef, + 0xe6, 0x3, 0xbc, 0xf7, 0x74, 0x15, 0xfb, 0x10, 0xa1, 0xcd, 0xfb, 0xb, + 0xf7, 0x6a, 0x1b, 0xf7, 0x37, 0xf5, 0xe4, 0xf7, 0xb, 0xf7, 0x31, 0xfb, + 0x2a, 0xb4, 0xfb, 0x17, 0xa8, 0x1f, 0xfb, 0x17, 0xa8, 0x63, 0x9c, 0xc9, + 0x1a, 0xe4, 0xee, 0xa3, 0xc9, 0xf7, 0x28, 0xa4, 0x36, 0x57, 0x90, 0x1e, + 0xe6, 0x92, 0x5, 0xf7, 0x21, 0x86, 0xfb, 0x2, 0xd5, 0xfb, 0x2e, 0x1b, + 0xfb, 0x33, 0x2f, 0x34, 0xfb, 0x3, 0xfb, 0x23, 0xf7, 0x21, 0x6a, 0xe8, + 0x75, 0x1f, 0xf7, 0x25, 0x68, 0xd3, 0x79, 0x37, 0x1a, 0x3b, 0x3c, 0x60, + 0x28, 0x42, 0xfb, 0x6, 0xad, 0xf7, 0x18, 0x72, 0x1e, 0xf7, 0x2a, 0xf8, + 0xc4, 0x37, 0xa, 0x3b, 0xa0, 0x76, 0xf9, 0xd, 0xe0, 0x1, 0xf7, 0x95, + 0xea, 0x3, 0xf7, 0x95, 0x16, 0xea, 0xf9, 0xd, 0xf7, 0x89, 0xe0, 0xfc, + 0xdb, 0x36, 0xf7, 0x87, 0x6, 0xe, 0x5f, 0xa, 0xf7, 0x25, 0xe0, 0xf7, + 0x94, 0xe0, 0xf7, 0x27, 0x77, 0x6e, 0xa, 0xf7, 0xeb, 0xed, 0x3, 0xe1, + 0x16, 0xea, 0xf7, 0x25, 0xf7, 0x39, 0x6, 0xf7, 0x18, 0xf7, 0x24, 0xb9, + 0xf7, 0x3d, 0xf7, 0x35, 0xfb, 0x1b, 0xbd, 0xfb, 0x21, 0x1f, 0xfb, 0x39, + 0xf7, 0x27, 0x2c, 0x6, 0xea, 0xfc, 0x7c, 0x15, 0xf7, 0x94, 0xf7, 0x39, + 0x7, 0xe5, 0xe3, 0x79, 0xfb, 0x0, 0xfb, 0x13, 0xfb, 0x15, 0x88, 0x5a, + 0x1f, 0xe, 0xaa, 0x78, 0xe0, 0xf9, 0x20, 0x77, 0x41, 0xa, 0xf9, 0x62, + 0x15, 0xfc, 0x3a, 0x7, 0xfb, 0x13, 0x91, 0xfb, 0x50, 0xf7, 0xa3, 0xf7, + 0xac, 0x93, 0xf7, 0x70, 0xea, 0x1e, 0xf8, 0x3a, 0x2c, 0xfc, 0x3a, 0x7, + 0xfb, 0x15, 0x7a, 0x26, 0xfb, 0x44, 0xfb, 0x48, 0x89, 0xf7, 0x23, 0xe2, + 0x1e, 0xf8, 0x3a, 0x7, 0xe, 0x2b, 0xa, 0xf7, 0x18, 0xda, 0x2f, 0xa, + 0xe, 0x2b, 0xa, 0xac, 0xda, 0x2c, 0xa, 0xe, 0xaa, 0x78, 0xe0, 0xf9, + 0x6e, 0xef, 0x2a, 0xa, 0xbf, 0xe3, 0x2e, 0xa, 0xe, 0x2b, 0xa, 0xf7, + 0x3f, 0xda, 0x5e, 0xa, 0x73, 0x39, 0xa, 0xf7, 0xb5, 0x16, 0xe8, 0x6, + 0xf7, 0x9d, 0xf9, 0x62, 0x5, 0x30, 0x6, 0xfb, 0x71, 0xfd, 0x13, 0xfb, + 0x6e, 0xf9, 0x13, 0x5, 0x2a, 0x6, 0xe, 0xf7, 0x91, 0x39, 0xa, 0xf7, + 0x62, 0x16, 0xea, 0x6, 0xf7, 0x3c, 0xf9, 0xc, 0x5, 0x8c, 0x6, 0xf7, + 0x40, 0xfd, 0xc, 0x5, 0xe5, 0x6, 0xf7, 0x58, 0xf9, 0x62, 0x5, 0x2d, + 0x6, 0xfb, 0x27, 0xfc, 0xfe, 0xfb, 0x32, 0xf8, 0xfe, 0x5, 0xfb, 0x2, + 0x6, 0xfb, 0x3a, 0xfc, 0xfe, 0x5, 0x89, 0x6, 0xfb, 0x1f, 0xf8, 0xfe, + 0x5, 0x2b, 0x6, 0xe, 0x73, 0x39, 0xa, 0x9e, 0x16, 0xf7, 0x1, 0x6, + 0xf7, 0x61, 0xf7, 0xc4, 0x5, 0x8c, 0x6, 0xf7, 0x5e, 0xfb, 0xc4, 0x5, + 0xf7, 0x4, 0x6, 0xfb, 0x98, 0xf8, 0x10, 0xf7, 0x85, 0xf7, 0xe6, 0x5, + 0x32, 0x6, 0xfb, 0x5f, 0xfb, 0xa5, 0xfb, 0x47, 0xf7, 0xa5, 0x5, 0xfb, + 0x0, 0x6, 0xf7, 0x7f, 0xfb, 0xec, 0x5, 0xe, 0x73, 0x39, 0xa, 0xf7, + 0xaf, 0xe8, 0x3, 0xf7, 0xaf, 0x16, 0xe8, 0xf7, 0xc3, 0x6, 0xf7, 0xa9, + 0xf8, 0x33, 0x5, 0x20, 0x6, 0xfb, 0x67, 0xfb, 0xe7, 0xfb, 0x65, 0xf7, + 0xe7, 0x5, 0xfb, 0x4, 0x6, 0xf7, 0xa1, 0xfc, 0x33, 0x5, 0xe, 0x5f, + 0xa, 0xf9, 0xac, 0xf7, 0x1d, 0x1, 0xf7, 0xad, 0xea, 0x3, 0x57, 0xa, + 0xfb, 0x65, 0xfb, 0xe2, 0xfb, 0x60, 0xf7, 0xe2, 0x5, 0xfb, 0x8, 0x6, + 0xf7, 0x9f, 0xfc, 0x2e, 0x5, 0x88, 0xf8, 0x7d, 0x2f, 0xa, 0xe, 0x5f, + 0xa, 0xf9, 0xb5, 0xef, 0x12, 0xf7, 0x5a, 0xe5, 0x84, 0xea, 0x8e, 0xe5, + 0x13, 0xd8, 0x57, 0xa, 0xfb, 0x6a, 0xfb, 0xe2, 0xfb, 0x5c, 0xf7, 0xe2, + 0x38, 0xa, 0xf7, 0x9f, 0xfc, 0x2e, 0x5, 0x13, 0xe8, 0x38, 0xf8, 0x86, + 0x2e, 0xa, 0xe, 0x3b, 0x8b, 0xe0, 0xf8, 0xb8, 0xe0, 0x6a, 0xa, 0xf8, + 0x4f, 0xf8, 0xb8, 0x5, 0xe0, 0xfc, 0x93, 0x36, 0xf8, 0x22, 0x7, 0xfc, + 0x4b, 0xfc, 0xb4, 0x5, 0xe, 0x3b, 0x8b, 0xe0, 0xf8, 0xb3, 0xe0, 0xf7, + 0x6c, 0x77, 0x6a, 0xa, 0xf8, 0x51, 0xf8, 0xb3, 0x5, 0xe0, 0xfc, 0x95, + 0x36, 0xf8, 0x24, 0x7, 0xfc, 0x4d, 0xfc, 0xaf, 0x5, 0xf7, 0x82, 0xf9, + 0x53, 0x37, 0xa, 0x7c, 0xd0, 0xf8, 0x30, 0xd3, 0x1, 0xaf, 0xe9, 0xf7, + 0xa0, 0xe3, 0x3, 0xbe, 0xf8, 0xd, 0x15, 0xe1, 0x80, 0x5, 0xb6, 0x96, + 0x9b, 0xc4, 0xf7, 0x2, 0x1b, 0xf7, 0x15, 0x88, 0x3a, 0x53, 0x89, 0x1f, + 0x59, 0x79, 0x2e, 0x81, 0x7e, 0x89, 0x8, 0x52, 0x84, 0xfb, 0x29, 0x7a, + 0xfb, 0x1e, 0x1a, 0x35, 0xcc, 0x49, 0xf7, 0x6, 0xc3, 0xc6, 0x98, 0xca, + 0xd5, 0x1e, 0x8d, 0x7e, 0x9d, 0x73, 0x99, 0x70, 0x8, 0xe7, 0x6, 0x6f, + 0xbd, 0x7b, 0x92, 0xf7, 0x19, 0x1a, 0xf7, 0x28, 0x7, 0xe5, 0x80, 0xf7, + 0x5, 0xfb, 0x5d, 0xfb, 0x5c, 0x7e, 0xfb, 0x7, 0x5d, 0x81, 0x1e, 0xf7, + 0xef, 0xfb, 0x9, 0x15, 0x40, 0x87, 0x5f, 0x68, 0x65, 0x1e, 0x5f, 0x62, + 0x3d, 0x86, 0x72, 0x1b, 0x3c, 0x85, 0xbb, 0xb0, 0xd1, 0xc5, 0x95, 0xc1, + 0x93, 0x1f, 0xb9, 0x92, 0xd7, 0x98, 0xad, 0x98, 0x8, 0xe, 0x40, 0xa, + 0xce, 0xf7, 0x1d, 0x49, 0xa, 0x3f, 0xa, 0xfb, 0x1f, 0xfc, 0xb, 0x20, + 0xa, 0x40, 0xa, 0xf7, 0x60, 0x77, 0x49, 0xa, 0x3a, 0xa, 0x3a, 0xfc, + 0xb, 0x20, 0xa, 0x54, 0xa, 0xf7, 0xe, 0xf8, 0xe5, 0x4c, 0xa, 0xf7, + 0x11, 0xf7, 0x21, 0x59, 0xa, 0x40, 0xa, 0xd7, 0xef, 0x49, 0xa, 0x3e, + 0xa, 0xfb, 0x43, 0xfb, 0xef, 0x20, 0xa, 0xf7, 0x5a, 0x7c, 0xd4, 0xf7, + 0x47, 0xd3, 0xf7, 0x31, 0xd3, 0x1, 0xaf, 0xe9, 0xf7, 0x94, 0xe4, 0x3, + 0xbc, 0xf8, 0x4, 0x15, 0xe1, 0x81, 0x5, 0xba, 0x95, 0xb0, 0xc8, 0xe6, + 0x1b, 0xf6, 0x95, 0x50, 0x3b, 0x87, 0x1f, 0x64, 0x7f, 0x58, 0x88, 0x50, + 0x83, 0x8, 0x25, 0x7d, 0x28, 0x3f, 0x3e, 0x1a, 0x63, 0xa4, 0xfb, 0x4, + 0xf7, 0x2d, 0xed, 0xcc, 0xbd, 0xbd, 0xbd, 0x1e, 0x3d, 0xc7, 0xcc, 0x75, + 0xce, 0x1b, 0xf7, 0x1e, 0xcb, 0xe2, 0xe2, 0xa4, 0x1f, 0x30, 0x97, 0x5, + 0x65, 0x82, 0x69, 0x40, 0x2e, 0x1b, 0x2b, 0x50, 0xdd, 0xec, 0x96, 0x1f, + 0xf8, 0x8, 0x6, 0xf7, 0x38, 0x51, 0xf7, 0x1d, 0xfb, 0x3e, 0x25, 0x5f, + 0x5a, 0x76, 0x77, 0x1e, 0xa1, 0x7e, 0x6d, 0xbb, 0xfb, 0x1d, 0x1b, 0xfb, + 0x4e, 0x71, 0xfb, 0xc, 0x59, 0x7f, 0x1f, 0xf7, 0xe7, 0xfb, 0x0, 0x15, + 0xfb, 0x12, 0xa2, 0x3e, 0x3c, 0xfb, 0xc, 0x1b, 0x33, 0x8f, 0xc8, 0xa3, + 0xb6, 0xd2, 0xb0, 0xaf, 0x91, 0x1f, 0xbf, 0x93, 0xc8, 0x94, 0xb1, 0x9c, + 0x8, 0xe2, 0xbc, 0x15, 0xd5, 0x90, 0xb4, 0xde, 0xed, 0x1b, 0xf7, 0x14, + 0x93, 0xfb, 0x11, 0x6b, 0x8e, 0x1f, 0xe, 0x40, 0xa, 0xcf, 0xf7, 0x1c, + 0x12, 0xba, 0xe9, 0xf7, 0x8d, 0xe3, 0x13, 0xbc, 0xf7, 0x9a, 0xf8, 0xea, + 0x4c, 0xa, 0x4a, 0xf7, 0x1c, 0x38, 0xa, 0x86, 0xfc, 0xb, 0x24, 0xa, + 0x13, 0x7c, 0x25, 0xa, 0x13, 0xbc, 0x28, 0xa, 0x73, 0x7c, 0xda, 0xf8, + 0xda, 0xd3, 0x12, 0xb7, 0xe8, 0x87, 0xe5, 0xf7, 0x38, 0xe5, 0x13, 0xe8, + 0xf7, 0x69, 0xf8, 0x2b, 0x15, 0xfb, 0x12, 0x4e, 0x60, 0x42, 0x3b, 0x1a, + 0x2f, 0xd4, 0xfb, 0x8, 0xf7, 0x2d, 0xde, 0xcd, 0xab, 0xca, 0xc3, 0x1e, + 0x99, 0x7c, 0xb7, 0x5f, 0xc0, 0x68, 0xc6, 0xce, 0x18, 0x64, 0xa7, 0x62, + 0xaf, 0x6a, 0xb5, 0xa8, 0xb7, 0x9e, 0xbb, 0x9b, 0xca, 0x30, 0x9e, 0x18, + 0x88, 0x7f, 0x81, 0x5e, 0x76, 0x60, 0xfb, 0x15, 0xf7, 0x38, 0x18, 0xea, + 0xbd, 0xb3, 0xbe, 0xcd, 0x1a, 0xdd, 0x44, 0xd3, 0x27, 0x1e, 0x13, 0xd8, + 0x22, 0x47, 0x45, 0x37, 0x5f, 0x9d, 0x62, 0xc9, 0x43, 0x1f, 0xb9, 0x52, + 0x15, 0xf7, 0x35, 0xfb, 0x5c, 0x5, 0x5c, 0x6c, 0x4f, 0x64, 0x51, 0x1b, + 0x13, 0xe8, 0x2d, 0x63, 0xe1, 0xba, 0xcf, 0xc7, 0xba, 0xc9, 0xb1, 0x1f, + 0xb1, 0xf2, 0x15, 0x13, 0xd8, 0x47, 0xdb, 0x85, 0x97, 0x9e, 0x1a, 0xbe, + 0xb7, 0xaa, 0xb2, 0xb2, 0xb5, 0x70, 0x54, 0x4d, 0x5d, 0x74, 0x5f, 0x71, + 0x1e, 0xe, 0x40, 0xa, 0xbb, 0xaf, 0xf5, 0xaf, 0x12, 0xba, 0xe9, 0xbd, + 0xaf, 0xf3, 0xaf, 0xa2, 0xe3, 0x13, 0x7f, 0x80, 0xf7, 0x53, 0xf9, 0x2f, + 0x64, 0xa, 0xb3, 0x5a, 0x5a, 0x65, 0x63, 0x5a, 0x1e, 0xaf, 0x8c, 0x15, + 0xa6, 0xa0, 0xa4, 0xaa, 0xaa, 0xa0, 0x72, 0x6f, 0x6e, 0x74, 0x73, 0x6e, + 0x70, 0x72, 0xa1, 0xab, 0x1e, 0x3d, 0xfb, 0xc9, 0x22, 0xa, 0x13, 0xbf, + 0x80, 0x28, 0xa, 0xfb, 0x72, 0xf7, 0xb1, 0x76, 0xf8, 0x3c, 0x77, 0x1, + 0x7d, 0xf7, 0x9c, 0x15, 0xe5, 0x6, 0xf7, 0x32, 0xf7, 0xd9, 0xf7, 0x34, + 0xfb, 0xd9, 0x5, 0xe4, 0x6, 0xfb, 0x69, 0xf8, 0x3c, 0x5, 0x44, 0x6, + 0xe, 0x20, 0xf7, 0x49, 0xe1, 0x49, 0x76, 0xc6, 0xe1, 0x8c, 0x77, 0x12, + 0x13, 0x60, 0xc8, 0xf7, 0x48, 0x15, 0xa6, 0xa8, 0xae, 0xab, 0xc1, 0x1b, + 0xbc, 0xaf, 0x7a, 0x7b, 0xb0, 0x1f, 0x13, 0x90, 0x7e, 0xa9, 0xa9, 0x7f, + 0xb1, 0x1b, 0xc9, 0xae, 0xa5, 0xa3, 0xa6, 0x1f, 0xea, 0x7, 0x82, 0x83, + 0x59, 0x59, 0x51, 0x1b, 0x6e, 0x69, 0x96, 0x97, 0x69, 0x1f, 0x13, 0x60, + 0x9b, 0x5e, 0x5e, 0x9e, 0x69, 0x1b, 0x64, 0x59, 0x7f, 0x63, 0x67, 0x1f, + 0xe, 0xfb, 0xc2, 0xf8, 0x58, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0xf7, 0x16, + 0xf8, 0x43, 0x15, 0x9f, 0xa5, 0x99, 0xa0, 0xa7, 0xbf, 0xa3, 0x63, 0x98, + 0x74, 0xa6, 0x67, 0xc4, 0xb3, 0x18, 0x86, 0x8f, 0x54, 0xcb, 0x75, 0x9e, + 0xaf, 0x8f, 0xbf, 0x97, 0xa9, 0x94, 0x75, 0xcd, 0x18, 0x72, 0x83, 0x59, + 0x79, 0x67, 0x79, 0x8, 0x93, 0xbf, 0x8d, 0xb3, 0xa0, 0x1a, 0x48, 0x6, + 0x6c, 0x8d, 0x79, 0x93, 0x4a, 0x1e, 0x83, 0x84, 0x3d, 0xb7, 0x75, 0x93, + 0x75, 0x49, 0x18, 0xb3, 0x81, 0xaf, 0x83, 0xb1, 0x84, 0x3d, 0x34, 0x18, + 0xe, 0xf7, 0xd8, 0x5c, 0xc8, 0x4e, 0xf7, 0x4e, 0x82, 0xcc, 0xf7, 0xdb, + 0xca, 0xf7, 0x1, 0xc7, 0x12, 0xf7, 0x1c, 0xc6, 0xe8, 0xd6, 0xf8, 0x5e, + 0xc6, 0x13, 0xbf, 0xf8, 0xc3, 0xf7, 0x5c, 0x15, 0x71, 0x8e, 0x90, 0x5f, + 0xd1, 0x1b, 0xf7, 0xc, 0xf7, 0xf, 0xf7, 0x1c, 0xf7, 0x38, 0xf7, 0x33, + 0xfb, 0xb, 0xf7, 0x39, 0xfb, 0x7a, 0xfb, 0xc5, 0x31, 0xfb, 0x99, 0xfb, + 0x3a, 0xfb, 0x5a, 0xf7, 0x7, 0xfb, 0x44, 0xf7, 0xb8, 0x1f, 0x13, 0x5f, + 0xf7, 0x97, 0xe3, 0xf7, 0x39, 0xa0, 0x95, 0x1f, 0x42, 0x6, 0x13, 0xbf, + 0x62, 0x6d, 0x3e, 0x37, 0xfb, 0x45, 0x1b, 0xfb, 0x3d, 0xfb, 0x47, 0xd0, + 0xf7, 0x88, 0xf7, 0x54, 0xf7, 0x15, 0xf7, 0x43, 0xf7, 0x63, 0xf7, 0x35, + 0xf7, 0x15, 0x20, 0xfb, 0x31, 0xfb, 0x24, 0xfb, 0x4, 0x34, 0x5f, 0x7f, + 0x7a, 0x94, 0x9e, 0x1f, 0xd1, 0xf7, 0xed, 0x5, 0x43, 0x6, 0x7d, 0x4a, + 0x5, 0xd3, 0x60, 0x53, 0x91, 0x74, 0x1b, 0xfb, 0x4, 0x29, 0xfb, 0x28, + 0xfb, 0x10, 0x22, 0xcb, 0x3e, 0xde, 0xc7, 0xb6, 0xb8, 0xa3, 0xa0, 0x1f, + 0xfb, 0x58, 0xf7, 0x5, 0x15, 0xd4, 0xb3, 0xf7, 0x1c, 0xea, 0xbc, 0xba, + 0x64, 0x3b, 0xfb, 0x6, 0x32, 0x2d, 0x45, 0x63, 0x6b, 0xad, 0xdf, 0x1e, + 0xe, 0x40, 0xa, 0xda, 0xf7, 0x5, 0x49, 0xa, 0xf7, 0x48, 0xf8, 0xf5, + 0x15, 0xbb, 0xab, 0x8a, 0x90, 0xa7, 0xa0, 0x80, 0x80, 0x9e, 0x1e, 0x7f, + 0x9f, 0x9d, 0x7f, 0xa2, 0x1b, 0xa0, 0xd6, 0x92, 0xf4, 0x56, 0xa, 0x8f, + 0x79, 0x94, 0x96, 0x70, 0x1f, 0x96, 0x6f, 0x66, 0x96, 0x74, 0x1b, 0x5a, + 0x59, 0x66, 0x3f, 0x1f, 0xad, 0xfb, 0x8e, 0x20, 0xa, 0x7c, 0xd3, 0xf8, + 0x25, 0xd3, 0xf7, 0x50, 0x77, 0x12, 0xc5, 0xdc, 0x3a, 0xe3, 0xf7, 0xa5, + 0xe5, 0x13, 0xec, 0xc5, 0x16, 0xdd, 0xcc, 0x8d, 0x6, 0x41, 0xbb, 0xd5, + 0x85, 0xa1, 0x1b, 0xde, 0xf7, 0x28, 0xc3, 0xf7, 0x6f, 0xf7, 0x29, 0x30, + 0xf7, 0xd, 0xfb, 0x20, 0x35, 0x63, 0x57, 0x79, 0x7f, 0x1f, 0x89, 0xf7, + 0x96, 0x33, 0x6, 0x13, 0xf4, 0xdc, 0xfc, 0x5e, 0x15, 0xf4, 0xc3, 0xe8, + 0xe6, 0xe6, 0xbd, 0x37, 0xfb, 0x6, 0xfb, 0x22, 0x44, 0x4e, 0x45, 0x5a, + 0x5e, 0xaa, 0xb3, 0x70, 0x1e, 0x7f, 0x9d, 0x7d, 0xa5, 0xe3, 0x1a, 0xe, + 0xfc, 0x31, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xf7, 0x74, 0x78, 0x15, + 0xd2, 0x6, 0xfb, 0x85, 0xf9, 0x88, 0x5, 0x44, 0x6, 0xe, 0xfc, 0x43, + 0xfb, 0x50, 0x76, 0xfa, 0x46, 0x77, 0x1, 0xe9, 0xd4, 0x3, 0xe9, 0xfb, + 0x65, 0x15, 0xd4, 0xfa, 0x46, 0x42, 0x6, 0xe, 0xfb, 0xf9, 0xfb, 0x58, + 0xd5, 0xf7, 0xee, 0xda, 0xf7, 0xed, 0xd5, 0x1, 0xf7, 0x18, 0xd3, 0x3, + 0xb5, 0xf7, 0x74, 0x15, 0xe4, 0x89, 0x8b, 0x33, 0x8c, 0x2d, 0x8, 0xfb, + 0x4c, 0x8a, 0x9e, 0x57, 0xf7, 0x22, 0x1b, 0xd5, 0x7, 0x33, 0x8d, 0x93, + 0xf7, 0x2e, 0xf7, 0x6, 0x7a, 0xd5, 0x40, 0xae, 0x1f, 0xe5, 0xbb, 0x8d, + 0x8b, 0xf7, 0x44, 0x1a, 0xe2, 0x89, 0xd5, 0xe3, 0x1e, 0xd5, 0x7, 0xfb, + 0x22, 0x79, 0x31, 0xfb, 0x25, 0x1f, 0x8a, 0x2c, 0x8b, 0x34, 0x32, 0x89, + 0x8, 0xe, 0xfb, 0xf9, 0xfb, 0x58, 0xd5, 0xf7, 0xed, 0xda, 0xf7, 0xee, + 0xd5, 0x1, 0xf7, 0x15, 0xd3, 0x3, 0xb5, 0xfb, 0xe, 0x15, 0x41, 0x7, + 0xde, 0xd7, 0x99, 0xf7, 0x33, 0x1f, 0x8c, 0xeb, 0x8d, 0xf7, 0x28, 0xe3, + 0x8d, 0x8, 0xda, 0x7, 0x33, 0x8d, 0x88, 0xdb, 0xea, 0x1a, 0xf7, 0x29, + 0x86, 0xe9, 0xfb, 0x2e, 0x1e, 0x41, 0x7, 0xe2, 0x8b, 0x73, 0xfb, 0x25, + 0xfb, 0x7, 0x9a, 0x49, 0xd6, 0x68, 0x1f, 0x31, 0x5b, 0x8b, 0x4d, 0xfb, + 0x44, 0x1a, 0x34, 0x79, 0x7f, 0x46, 0x1e, 0xe, 0x69, 0xa, 0xca, 0xe3, + 0x33, 0xf7, 0x4f, 0x13, 0xe0, 0xf7, 0x2b, 0xfb, 0xf, 0x15, 0xf9, 0x98, + 0x7, 0x13, 0xd0, 0xee, 0xd4, 0xfb, 0x4f, 0xfe, 0x2a, 0xf7, 0x4f, 0xd4, + 0x6, 0xe, 0x69, 0xa, 0xa7, 0xf7, 0x4f, 0x33, 0xe3, 0x13, 0xe0, 0xa7, + 0xfb, 0xf, 0x15, 0x42, 0xf7, 0x4f, 0xfa, 0x2a, 0xfb, 0x4f, 0x42, 0x7, + 0x13, 0xd0, 0xee, 0xfd, 0x98, 0x6, 0xe, 0xfb, 0xfa, 0xf8, 0xe7, 0xcc, + 0xd2, 0x77, 0x1, 0x98, 0xf9, 0x6f, 0x15, 0x2c, 0xe3, 0x62, 0xcd, 0xce, + 0xe2, 0xb6, 0xe8, 0x1e, 0x4b, 0x6, 0x6a, 0x84, 0x7e, 0x65, 0x45, 0x1b, + 0x43, 0x7d, 0xbf, 0x9e, 0x87, 0x1f, 0xe, 0xfc, 0x43, 0x8d, 0x76, 0xf9, + 0x88, 0x77, 0x1, 0xe9, 0xd4, 0x3, 0xe9, 0xf8, 0x3f, 0x15, 0xd4, 0xf7, + 0xca, 0x42, 0x6, 0xfd, 0x88, 0x4, 0xd4, 0xf7, 0xc9, 0x42, 0x6, 0xe, + 0xfb, 0xe9, 0xf7, 0x5e, 0xf7, 0xcf, 0x1, 0x9d, 0xf7, 0xcf, 0x3, 0x9d, + 0xf7, 0xfb, 0x15, 0x33, 0xd2, 0x46, 0xe1, 0xe1, 0xd3, 0xd0, 0xe3, 0xe4, + 0x43, 0xd0, 0x35, 0x35, 0x44, 0x46, 0x32, 0x1e, 0xe, 0xfb, 0x53, 0x7c, + 0xd3, 0xf8, 0x29, 0xd7, 0x1, 0xbb, 0xe5, 0xf7, 0x9b, 0xe0, 0x3, 0xf8, + 0x24, 0xf7, 0x52, 0x15, 0x71, 0x88, 0x7a, 0x20, 0xfb, 0x4, 0x1b, 0xfb, + 0xf, 0x7c, 0xf7, 0x18, 0xd0, 0xc8, 0x93, 0xf7, 0x23, 0xf7, 0x1d, 0xc1, + 0xc1, 0x6f, 0x40, 0x9d, 0x1f, 0xe0, 0x98, 0x5, 0xf4, 0xfb, 0x8, 0xc8, + 0x2c, 0x24, 0xfb, 0x18, 0x4b, 0xfb, 0x6c, 0xfb, 0x1e, 0xc4, 0xfb, 0x1b, + 0xf7, 0x3f, 0xb7, 0xf7, 0x27, 0x9e, 0xf7, 0x43, 0xa7, 0x1e, 0xe, 0x54, + 0xa, 0xf7, 0xc, 0xf8, 0xe5, 0x15, 0xeb, 0x6, 0xeb, 0xf7, 0x21, 0x5, + 0x31, 0x6, 0x57, 0x34, 0x50, 0xe2, 0x5, 0x31, 0x6, 0xe, 0xfb, 0x53, + 0xfb, 0x60, 0x76, 0xf7, 0x5b, 0xd6, 0xf8, 0x32, 0xd6, 0x1, 0xa9, 0xe4, + 0x3, 0xf7, 0x67, 0x76, 0x15, 0x7b, 0x3d, 0x5, 0x9b, 0xc0, 0x86, 0x69, + 0x8d, 0x1f, 0x78, 0x8c, 0x48, 0x84, 0x60, 0x1b, 0x89, 0x4e, 0x5, 0xf7, + 0x13, 0xcb, 0xb2, 0xbb, 0xc2, 0x5d, 0xa0, 0x6a, 0x1f, 0x91, 0xaf, 0xda, + 0x91, 0xf1, 0xb6, 0xa2, 0xf7, 0x2a, 0x19, 0x36, 0x96, 0x5, 0x71, 0x87, + 0x7a, 0xfb, 0x1, 0xfb, 0x2, 0x1b, 0xfb, 0x23, 0x8c, 0xf7, 0x3d, 0xad, + 0xd9, 0x9c, 0xf7, 0x19, 0xf7, 0x13, 0xc2, 0xba, 0x6d, 0x3c, 0x9c, 0x1f, + 0xe0, 0x9a, 0x5, 0xf7, 0x7, 0x7c, 0x3a, 0xc1, 0xfb, 0x0, 0x1b, 0xfb, + 0x43, 0x51, 0xfb, 0x21, 0xfb, 0x25, 0xfb, 0x2c, 0xd0, 0x27, 0xf7, 0x4, + 0x76, 0x1f, 0xe, 0xfb, 0xfa, 0xfb, 0x60, 0x76, 0xf7, 0x75, 0x77, 0x1, + 0xeb, 0xf2, 0x3, 0xf7, 0x1a, 0x16, 0x6a, 0x2c, 0x5, 0xa5, 0xbe, 0x85, + 0x6b, 0x58, 0x2c, 0x9a, 0x6a, 0x91, 0x1f, 0x86, 0x52, 0x5, 0x87, 0xa1, + 0x92, 0x8a, 0xa1, 0x1b, 0xf7, 0x5, 0xbd, 0xb8, 0xba, 0xb6, 0x64, 0xa3, + 0x5f, 0x90, 0x1f, 0xa2, 0xc8, 0x5, 0xe, 0x2d, 0x76, 0xf1, 0xd2, 0xf8, + 0x25, 0xd3, 0xe7, 0x77, 0x1, 0xbe, 0xe5, 0x3, 0xf7, 0x4a, 0x95, 0x15, + 0x69, 0xfb, 0x1, 0xc2, 0x7b, 0xae, 0xf7, 0x0, 0x5, 0x88, 0x98, 0x98, + 0x88, 0xa2, 0x1b, 0xcd, 0xf7, 0x18, 0xad, 0xf7, 0x33, 0xa7, 0x1f, 0x37, + 0x95, 0x5, 0x2f, 0x7e, 0x45, 0x63, 0x50, 0x1b, 0x7d, 0x84, 0x8d, 0x8d, + 0x82, 0x1f, 0xf7, 0x1, 0xf8, 0xa, 0xad, 0x6f, 0x93, 0x68, 0x8f, 0x77, + 0x19, 0xe1, 0x98, 0x84, 0xac, 0x7d, 0xd4, 0x32, 0xb2, 0x19, 0xa5, 0xeb, + 0x56, 0x9b, 0x6f, 0x2b, 0x5, 0x8f, 0x6c, 0x7f, 0x8b, 0x85, 0x1b, 0x52, + 0xfb, 0x44, 0x6f, 0xfb, 0x8b, 0xfb, 0x12, 0xc3, 0x37, 0xd6, 0x67, 0x1f, + 0xa2, 0xd7, 0x15, 0x56, 0xac, 0x80, 0xea, 0xb5, 0x1a, 0xd5, 0xa1, 0xf7, + 0x22, 0xf7, 0x2b, 0x7e, 0x1e, 0xe, 0x54, 0xa, 0xa0, 0xf8, 0xe5, 0x15, + 0xe9, 0x6, 0xc1, 0xe2, 0xbc, 0x34, 0x5, 0xe9, 0x6, 0x24, 0xf7, 0x21, + 0x5, 0x34, 0x6, 0xe, 0xfc, 0x31, 0x8b, 0xee, 0xf7, 0xd2, 0xee, 0x1, + 0xe2, 0xf3, 0x3, 0xe2, 0x16, 0xf3, 0xee, 0x23, 0x6, 0xf7, 0xd2, 0x4, + 0xf3, 0xee, 0x23, 0x6, 0xe, 0xfc, 0x31, 0xfb, 0x12, 0x76, 0xf7, 0x91, + 0x77, 0x1, 0xe3, 0xf1, 0x3, 0xe3, 0x8d, 0x15, 0xbe, 0x6, 0x61, 0x85, + 0x5a, 0x5d, 0x76, 0x1e, 0xa2, 0x66, 0x5, 0xce, 0xa1, 0x98, 0xe8, 0xad, + 0x1a, 0xf3, 0x25, 0x7, 0xe, 0xb9, 0x78, 0xca, 0xed, 0xc7, 0xf7, 0xce, + 0xc3, 0xf1, 0xca, 0x1, 0x7d, 0xcb, 0xf7, 0xa, 0xd1, 0xf8, 0x57, 0xca, + 0x3, 0xf8, 0x80, 0xf7, 0xbe, 0x15, 0x35, 0x75, 0x3e, 0x81, 0x70, 0x1b, + 0x46, 0x50, 0xbb, 0xf5, 0xd7, 0xa9, 0xdf, 0xed, 0x9c, 0xd4, 0x8a, 0x40, + 0xa9, 0x1f, 0xc8, 0x99, 0x5, 0xdd, 0x72, 0x3e, 0xaf, 0x3c, 0x1b, 0xfb, + 0x14, 0x45, 0x37, 0xfb, 0x18, 0xfb, 0x1c, 0xdc, 0x3d, 0xf7, 0x9, 0xdb, + 0xe0, 0xb6, 0xea, 0xa2, 0x1f, 0xfc, 0xcc, 0xd7, 0x15, 0xfb, 0x65, 0xf7, + 0x3c, 0xfb, 0x3a, 0xf7, 0x68, 0xf7, 0x68, 0xf7, 0x42, 0xf7, 0x3b, 0xf7, + 0x64, 0xf7, 0x67, 0xfb, 0x44, 0xf7, 0x3e, 0xfb, 0x66, 0xfb, 0x66, 0xfb, + 0x3e, 0xfb, 0x3d, 0xfb, 0x68, 0x1e, 0xcb, 0x16, 0xf7, 0x44, 0xf7, 0x1f, + 0xf7, 0x22, 0xf7, 0x45, 0xf7, 0x45, 0xf7, 0x26, 0xfb, 0x22, 0xfb, 0x44, + 0xfb, 0x42, 0xfb, 0x26, 0xfb, 0x1e, 0xfb, 0x45, 0xfb, 0x45, 0xfb, 0x1f, + 0xf7, 0x1e, 0xf7, 0x42, 0x1e, 0xe, 0xf7, 0xc, 0x76, 0xae, 0xdf, 0xf7, + 0x9e, 0xdf, 0xae, 0x77, 0x1, 0xe1, 0xee, 0x15, 0xd2, 0xd2, 0x5, 0x71, + 0xb2, 0xb6, 0x81, 0xb2, 0x1b, 0xb1, 0xb7, 0x95, 0xa5, 0xb2, 0x1f, 0xd2, + 0x44, 0xc5, 0xc8, 0x44, 0xd0, 0x5, 0xaa, 0xbd, 0x91, 0xb9, 0xa5, 0x1a, + 0xa6, 0x85, 0xb8, 0x6c, 0xbc, 0x1e, 0xd2, 0xd1, 0x51, 0xc8, 0x44, 0x44, + 0x5, 0xa5, 0x64, 0x5f, 0x95, 0x65, 0x1b, 0x64, 0x60, 0x81, 0x71, 0x64, + 0x1f, 0x44, 0xd2, 0x51, 0x4e, 0xd2, 0x45, 0x5, 0x6c, 0x5a, 0x85, 0x5e, + 0x70, 0x1a, 0x71, 0x91, 0x5d, 0xaa, 0x59, 0x1e, 0x44, 0x46, 0x5, 0xf7, + 0xa, 0xf7, 0x53, 0x15, 0xd4, 0xc5, 0xc7, 0xd5, 0xce, 0xcc, 0x52, 0x3f, + 0x41, 0x50, 0x50, 0x42, 0x41, 0x51, 0xc6, 0xd5, 0x1e, 0xe, 0x7c, 0xd3, + 0xf8, 0x23, 0xd5, 0xf7, 0x50, 0x77, 0x1, 0xae, 0xe5, 0xf7, 0xa7, 0xe3, + 0x3, 0xf8, 0x35, 0x16, 0xdd, 0xf9, 0x62, 0x33, 0xfb, 0x97, 0x89, 0x6, + 0xb4, 0x70, 0x4d, 0xa9, 0x4a, 0x1b, 0xfb, 0x16, 0x31, 0xfb, 0x2, 0xfb, + 0x3d, 0xfb, 0x3a, 0xec, 0x27, 0xf7, 0xf, 0x9e, 0xe9, 0x8e, 0xd9, 0xbc, + 0x1f, 0xfb, 0xb8, 0xf7, 0x4d, 0x15, 0xb1, 0x89, 0xf7, 0x3b, 0xf7, 0x18, + 0xf6, 0xc4, 0x23, 0x26, 0xfb, 0x46, 0xfb, 0x1c, 0x7b, 0x6f, 0x58, 0x3c, + 0xaa, 0xf7, 0x37, 0x1e, 0xe, 0xfb, 0x1e, 0x76, 0xf8, 0xe0, 0xd9, 0xf7, + 0x67, 0x77, 0x1, 0xf7, 0x7e, 0xe3, 0x3, 0xf7, 0x7e, 0xfb, 0x33, 0x15, + 0xe3, 0xf8, 0xe0, 0x78, 0xa, 0xf7, 0x67, 0x33, 0xfb, 0x67, 0xfb, 0x53, + 0x3d, 0xf7, 0x53, 0x6, 0xe, 0xfb, 0x1e, 0x76, 0xf7, 0x4c, 0xd9, 0xf7, + 0xf5, 0xd9, 0xf7, 0x4c, 0x77, 0x1, 0xf7, 0x7e, 0xe3, 0x3, 0xb6, 0xa4, + 0x15, 0xf7, 0x53, 0xfb, 0x4c, 0xe3, 0xf7, 0x4c, 0x78, 0xa, 0xf7, 0xf5, + 0x78, 0xa, 0xf7, 0x4c, 0x33, 0xfb, 0x4c, 0xfb, 0x53, 0x3d, 0xf7, 0x53, + 0xfb, 0xf5, 0xfb, 0x53, 0x6, 0xe, 0xfb, 0xb7, 0xf8, 0x2f, 0xc4, 0xf7, + 0x46, 0xc4, 0x1, 0xc1, 0xc5, 0xf7, 0x44, 0xc5, 0x3, 0xc1, 0xf8, 0xc2, + 0x15, 0x39, 0xcc, 0x4a, 0xdb, 0xdc, 0xcd, 0xcc, 0xdd, 0xda, 0x4a, 0xcd, + 0x39, 0x3a, 0x4b, 0x4a, 0x3b, 0x1e, 0xc5, 0x16, 0xbb, 0xb1, 0xb3, 0xbc, + 0xbd, 0xb2, 0x63, 0x5b, 0x59, 0x63, 0x63, 0x5a, 0x5b, 0x64, 0xb3, 0xbd, + 0x1e, 0xe, 0xfb, 0xfa, 0xf8, 0xf0, 0xf1, 0x1, 0xb3, 0xe5, 0xd4, 0xe5, + 0x3, 0xb3, 0xf8, 0xf0, 0x15, 0xe5, 0xf1, 0x31, 0x6, 0xf7, 0x37, 0x25, + 0x15, 0xe5, 0xf1, 0x31, 0x6, 0xe, 0x20, 0x78, 0xed, 0xf7, 0x1e, 0xdd, + 0xf7, 0x14, 0xec, 0x1, 0xf7, 0x86, 0xef, 0x3, 0xb2, 0xf7, 0x6c, 0x15, + 0xf8, 0x8e, 0xdd, 0xfc, 0x8e, 0x6, 0xf7, 0x5f, 0xf7, 0x15, 0x15, 0xef, + 0xec, 0x27, 0x6, 0xfc, 0xb3, 0x4, 0xef, 0xed, 0x27, 0x6, 0xe, 0x2d, + 0x76, 0xfa, 0xe, 0x77, 0x1, 0xbb, 0xe6, 0xf7, 0x5, 0xc0, 0xf7, 0xf, + 0xe7, 0x3, 0xab, 0xf7, 0x52, 0x15, 0x98, 0xfb, 0x52, 0xf7, 0x2b, 0x7a, + 0xc3, 0x83, 0x8, 0x31, 0xc0, 0xe6, 0x7, 0xf7, 0x22, 0x90, 0xd4, 0xee, + 0xf5, 0x1a, 0xf7, 0x39, 0xfb, 0x23, 0xb0, 0x43, 0x9b, 0x1e, 0xf7, 0x93, + 0x7, 0xa7, 0x85, 0xc6, 0x7e, 0x9b, 0x2a, 0xe9, 0x98, 0x18, 0x78, 0xf7, + 0x8, 0x3d, 0xc1, 0x27, 0x93, 0x8, 0xb4, 0x56, 0x62, 0x7, 0x22, 0x86, + 0x2d, 0x4f, 0x86, 0xfb, 0x17, 0x88, 0x42, 0xda, 0xfb, 0x13, 0xf7, 0x14, + 0x83, 0x8, 0xfb, 0xad, 0x7, 0x20, 0x96, 0x71, 0xf7, 0x9, 0x88, 0xa8, + 0x8, 0xf7, 0x1c, 0xf7, 0x65, 0x15, 0x26, 0xa8, 0x7f, 0xc1, 0xb5, 0x1a, + 0xbf, 0xac, 0xc2, 0xdb, 0x98, 0x1e, 0xc0, 0xfc, 0xf7, 0x15, 0xf7, 0xa1, + 0x7, 0xcd, 0x76, 0xc4, 0x73, 0x36, 0x1a, 0x2d, 0x40, 0x63, 0x5b, 0x86, + 0x1e, 0xe, 0xfb, 0xfa, 0xf8, 0xf0, 0xf1, 0x1, 0xf7, 0xd, 0xe6, 0x3, + 0xf7, 0xd, 0xf8, 0xf0, 0x15, 0xe6, 0xf1, 0x30, 0x6, 0xe, 0xfc, 0x31, + 0x68, 0xa, 0xea, 0xe3, 0x3, 0xea, 0x16, 0xe3, 0xf8, 0x9f, 0x7a, 0xa, + 0x7c, 0xd3, 0xf7, 0x48, 0xd3, 0xf7, 0x2e, 0xd6, 0x1, 0xc3, 0xe5, 0xf7, + 0x91, 0xe5, 0x3, 0xf7, 0x16, 0xf7, 0x81, 0x15, 0xf8, 0x16, 0x6, 0xf7, + 0x9c, 0xfb, 0x34, 0xb0, 0x41, 0xfb, 0x32, 0x37, 0xfb, 0x11, 0xfb, 0x32, + 0xfb, 0x34, 0xdc, 0xfb, 0x2, 0xf7, 0x35, 0xf7, 0x14, 0xd8, 0xd4, 0xed, + 0xa5, 0x1e, 0x31, 0x96, 0x5, 0x6d, 0x80, 0x6c, 0x3b, 0x28, 0x1b, 0x3d, + 0x48, 0xc3, 0xf7, 0x10, 0x84, 0x1f, 0x90, 0xd3, 0x15, 0xcf, 0x90, 0xb7, + 0xe1, 0xed, 0x1b, 0xe7, 0xbf, 0x3d, 0x3f, 0x1f, 0xe, 0x4a, 0xa, 0xce, + 0xf7, 0x1d, 0x1, 0xf8, 0x34, 0xe5, 0x3, 0x3f, 0xa, 0xfb, 0x28, 0xfc, + 0x85, 0x29, 0xa, 0xe, 0x4a, 0xa, 0xf7, 0x60, 0x77, 0x1, 0xf8, 0x34, + 0xe5, 0x3, 0x3a, 0xa, 0x31, 0xfc, 0x85, 0x29, 0xa, 0xe, 0x4a, 0xa, + 0xd7, 0xef, 0x1, 0xf7, 0xae, 0x8b, 0xf7, 0x1a, 0xe5, 0x3, 0x3e, 0xa, + 0xfb, 0x4c, 0xfc, 0x69, 0x15, 0xf8, 0x2, 0x6, 0xf7, 0x1c, 0x65, 0xd8, + 0x56, 0xb0, 0x1e, 0xb0, 0x56, 0x52, 0x91, 0x74, 0x1b, 0xfb, 0x38, 0x4c, + 0xfb, 0xa, 0xfb, 0x31, 0x86, 0x1f, 0x2d, 0xa, 0x7b, 0x7c, 0x3a, 0x23, + 0x1b, 0x37, 0x5e, 0xc2, 0xf7, 0x11, 0x7e, 0x1f, 0x90, 0xd3, 0x15, 0xcf, + 0x96, 0xa2, 0xdc, 0xf2, 0x1b, 0xec, 0xab, 0x42, 0x3f, 0x90, 0x1f, 0xe, + 0x4a, 0xa, 0xcf, 0xf7, 0x1c, 0x1, 0xf8, 0x34, 0xe5, 0x3, 0xf7, 0x20, + 0xf7, 0x81, 0x29, 0xa, 0xfb, 0x2e, 0xf7, 0xb5, 0x4c, 0xa, 0x4a, 0xf7, + 0x1c, 0x59, 0xa, 0x78, 0xd2, 0xf7, 0xb2, 0xaf, 0x67, 0xd1, 0xf7, 0x74, + 0xd2, 0x12, 0xc1, 0xe7, 0xf7, 0x9d, 0xe7, 0x13, 0xdc, 0xf7, 0x45, 0xf8, + 0xa, 0x15, 0x31, 0x5a, 0xfb, 0x10, 0x56, 0xfb, 0xc, 0xe6, 0x2b, 0xf7, + 0x28, 0xf7, 0x27, 0xe8, 0xeb, 0xf7, 0x9, 0xed, 0x52, 0xc5, 0x3b, 0xa3, + 0x1f, 0x8d, 0x7, 0xab, 0x96, 0xd6, 0xb0, 0xec, 0x1a, 0xe9, 0x3f, 0xe3, + 0xfb, 0x1c, 0xfb, 0x18, 0x40, 0x39, 0x29, 0x21, 0xd9, 0x6c, 0xaa, 0x81, + 0x1e, 0x7a, 0xf7, 0x2a, 0x15, 0xc2, 0xb6, 0xbe, 0xd4, 0xcf, 0xbe, 0x5c, + 0x4b, 0x1e, 0x13, 0xbc, 0x4c, 0x58, 0x59, 0x48, 0x51, 0x50, 0xb3, 0xd9, + 0x1e, 0x6d, 0xfb, 0xde, 0x15, 0xd3, 0xbe, 0xd1, 0xe9, 0xdb, 0xd1, 0x53, + 0x33, 0x33, 0x48, 0x55, 0x3a, 0x31, 0x52, 0xcc, 0xda, 0x1e, 0xe, 0xf7, + 0xc9, 0x8b, 0xf5, 0x1, 0xf7, 0x7, 0xef, 0xf7, 0x7d, 0xef, 0xf7, 0x81, + 0xef, 0x3, 0xf7, 0x7, 0x16, 0xef, 0xf5, 0x27, 0x6, 0xf7, 0xe1, 0x21, + 0x15, 0xef, 0xf5, 0x27, 0x6, 0xf7, 0xe5, 0x21, 0x15, 0xef, 0xf5, 0x27, + 0x6, 0xe, 0xf7, 0xc9, 0xf7, 0x84, 0xd4, 0x1, 0xf7, 0x84, 0x4, 0xfa, + 0x7c, 0xd4, 0xfe, 0x7c, 0x6, 0xe, 0xf7, 0x84, 0xd4, 0x1, 0xf7, 0x84, + 0x4, 0xf8, 0xc0, 0xd4, 0xfc, 0xc0, 0x6, 0xe, 0x20, 0xf7, 0x7, 0xdb, + 0xf7, 0x7, 0xdb, 0x1, 0xb2, 0xf7, 0xca, 0x15, 0xf8, 0x8e, 0xdb, 0xfc, + 0x8e, 0x6, 0xfb, 0xa7, 0x4, 0xf8, 0x8e, 0xdb, 0xfc, 0x8e, 0x6, 0xe, + 0x7c, 0xd5, 0xf8, 0x1d, 0xda, 0xf7, 0x62, 0x77, 0x1, 0xae, 0xe6, 0xf7, + 0xc5, 0xe6, 0x3, 0xf7, 0x41, 0xf8, 0xc0, 0x15, 0xf7, 0xc, 0xc4, 0xb0, + 0x61, 0x97, 0x76, 0xa1, 0x5f, 0x19, 0x98, 0x6f, 0x6b, 0x97, 0x59, 0x1b, + 0x30, 0xfb, 0x14, 0x50, 0xfb, 0x6c, 0xfb, 0x71, 0xf7, 0x15, 0x59, 0xea, + 0xf7, 0x27, 0xf7, 0x8, 0xf4, 0xf7, 0x3a, 0xf7, 0x27, 0x4e, 0xf7, 0x12, + 0x29, 0xf7, 0x8, 0x1f, 0xe4, 0xb6, 0x72, 0xbc, 0x21, 0x58, 0x75, 0xa0, + 0x83, 0x90, 0x6b, 0xa4, 0x19, 0xfb, 0x0, 0x6, 0xb6, 0x6d, 0x9d, 0x7f, + 0xb5, 0x62, 0x20, 0x5a, 0x18, 0x76, 0xfb, 0xf1, 0x15, 0xf7, 0x21, 0xd3, + 0xc2, 0xc9, 0xea, 0xd7, 0x64, 0xfb, 0x31, 0xfb, 0x30, 0x22, 0x62, 0x48, + 0x6b, 0x26, 0x99, 0xf7, 0x4b, 0x1e, 0xe, 0xfc, 0x31, 0x8b, 0xef, 0xf7, + 0x88, 0xef, 0xf7, 0xa6, 0x77, 0xb7, 0x77, 0x1, 0xe5, 0xec, 0x35, 0xd7, + 0x3, 0xe5, 0x16, 0xec, 0xef, 0x2a, 0x6, 0xa2, 0xdb, 0x15, 0xc1, 0x6, + 0x9f, 0xf8, 0xf, 0x5, 0xf7, 0x33, 0x2a, 0xfb, 0x33, 0x7, 0xe, 0xfb, + 0xfa, 0xfb, 0x42, 0x76, 0xf8, 0xfe, 0xef, 0x1, 0xf7, 0xa, 0xec, 0x33, + 0xd8, 0x3, 0xf7, 0xa, 0xf8, 0x3b, 0x15, 0xec, 0xef, 0x2a, 0x6, 0xfc, + 0xc6, 0x4, 0xfb, 0x30, 0xec, 0xf7, 0x30, 0x7, 0x75, 0xf8, 0xf, 0x5, + 0x53, 0x6, 0xe, 0x4b, 0xa, 0xf8, 0x56, 0xcf, 0xf7, 0x66, 0x77, 0x1, + 0xd7, 0xe3, 0x3, 0xd7, 0x16, 0xe3, 0xf8, 0x56, 0xed, 0xcf, 0x29, 0xbc, + 0x6, 0xc2, 0xa7, 0xb4, 0xc3, 0x76, 0x1e, 0x98, 0xd8, 0x5, 0x8b, 0x72, + 0x94, 0x7a, 0xfb, 0x23, 0x8b, 0xfb, 0x3, 0x59, 0x1e, 0x5a, 0x4d, 0x47, + 0xc9, 0x7, 0xe, 0x5b, 0xa, 0xf7, 0x3d, 0x3b, 0xa, 0xf7, 0x95, 0xfc, + 0x56, 0x15, 0xe3, 0xf8, 0x9a, 0x33, 0x6, 0xed, 0x4, 0x6d, 0xa, 0x78, + 0xd2, 0xf7, 0xe0, 0xd8, 0xf7, 0x3f, 0xdf, 0x12, 0xf8, 0x2a, 0xeb, 0x17, + 0xab, 0xf7, 0x46, 0x15, 0xfb, 0x2e, 0x99, 0xf7, 0x16, 0x60, 0xe5, 0x1b, + 0xf7, 0x36, 0xe1, 0xf7, 0x9, 0xf7, 0x13, 0xf7, 0x2f, 0xfb, 0x25, 0xdc, + 0x23, 0x59, 0x61, 0x78, 0x72, 0x74, 0x1f, 0xb3, 0xf7, 0x4f, 0x5, 0xf7, + 0xb6, 0xdf, 0xfb, 0xfd, 0x6, 0x43, 0xfb, 0xfe, 0xe0, 0x81, 0x5, 0xb1, + 0xa3, 0xba, 0xa9, 0xc8, 0x1b, 0xdf, 0xd1, 0x56, 0x21, 0x30, 0x54, 0x39, + 0x2a, 0x1f, 0x6f, 0x2f, 0x92, 0xf7, 0x12, 0x77, 0x1f, 0xe, 0x5b, 0xa, + 0xf7, 0x3b, 0x3b, 0xa, 0xf7, 0x93, 0xfc, 0x56, 0x15, 0xe3, 0xf9, 0x58, + 0x7a, 0xa, 0xfb, 0x4e, 0x76, 0xf9, 0x22, 0xcf, 0xf7, 0x20, 0xdd, 0x1, + 0x90, 0xfb, 0xb, 0x15, 0x7b, 0x3f, 0x5, 0x7f, 0xca, 0xa0, 0x8b, 0x92, + 0x1b, 0xda, 0xbe, 0xb3, 0xe2, 0x9a, 0x1f, 0xe9, 0xf8, 0xa3, 0x5, 0xef, + 0x6, 0x97, 0xcf, 0x5, 0x27, 0x6, 0x98, 0xc8, 0x5, 0xbf, 0x95, 0x94, + 0xa6, 0xba, 0x1b, 0xa0, 0x9c, 0x87, 0x83, 0xaf, 0x1f, 0x9c, 0xd6, 0x5, + 0x95, 0x68, 0x7a, 0x94, 0x64, 0x1b, 0xfb, 0x4, 0x6c, 0x27, 0x4e, 0x7e, + 0x1f, 0x7f, 0x4e, 0x5, 0x28, 0x6, 0x80, 0x47, 0x5, 0xed, 0x6, 0x33, + 0xfc, 0x8a, 0x5, 0x5f, 0x84, 0x73, 0x6c, 0x6c, 0x1b, 0x7b, 0x76, 0x8e, + 0x93, 0x65, 0x1f, 0xe, 0xa0, 0x76, 0xf7, 0x3d, 0xda, 0xf8, 0x5b, 0x77, + 0x1, 0xf7, 0xb3, 0xe3, 0x3, 0xa4, 0xf7, 0x3d, 0x15, 0xf7, 0xcd, 0xfb, + 0x3d, 0xe3, 0xf7, 0x3d, 0xec, 0xda, 0x2a, 0xf8, 0x5b, 0x43, 0x6, 0xfb, + 0xdd, 0xfc, 0x5b, 0x5, 0xe2, 0x16, 0xf7, 0x73, 0xf7, 0xd3, 0x5, 0x8e, + 0xfb, 0xd3, 0x6, 0xe, 0xfc, 0xa0, 0x8d, 0x76, 0xf9, 0x66, 0x77, 0x1, + 0x32, 0x78, 0x15, 0xf8, 0x3a, 0xf9, 0x66, 0x5, 0x3f, 0x6, 0xfc, 0x3b, + 0xfd, 0x66, 0x5, 0xe, 0xfb, 0x70, 0xd4, 0xf7, 0x1c, 0xd3, 0xf8, 0x29, + 0xd3, 0x12, 0xcb, 0xe5, 0xf7, 0x94, 0xe4, 0x39, 0xdd, 0x13, 0xf8, 0xc9, + 0x55, 0x15, 0xfb, 0x28, 0x87, 0xf7, 0x23, 0x79, 0xcc, 0x1b, 0xf7, 0x47, + 0xc1, 0xf7, 0x2, 0xf7, 0x3d, 0x1f, 0xf8, 0x66, 0x3a, 0x4d, 0x89, 0x7, + 0xd2, 0x54, 0x49, 0x8f, 0x6e, 0x1b, 0xfb, 0x36, 0x4b, 0xfb, 0x34, 0xfb, + 0x12, 0xfb, 0x20, 0xdc, 0xfb, 0xf, 0xf7, 0x25, 0x1f, 0x13, 0xb8, 0xb4, + 0xc1, 0x95, 0xc5, 0xbc, 0x1f, 0x24, 0x8e, 0x26, 0xfb, 0x27, 0x24, 0x7f, + 0xc0, 0xa6, 0x87, 0x1e, 0x7a, 0xf7, 0xd3, 0x15, 0xf7, 0x11, 0xc5, 0xe4, + 0xd9, 0x1e, 0x13, 0xf4, 0xc8, 0xe5, 0x49, 0xfb, 0x28, 0x2c, 0x67, 0x2b, + 0xfb, 0x7, 0x26, 0x68, 0xf7, 0x15, 0xc9, 0x1f, 0xe, 0x3b, 0x7c, 0xd3, + 0xf8, 0xeb, 0xd3, 0x12, 0xce, 0xe3, 0xf7, 0x22, 0xe5, 0x80, 0xe0, 0x9f, + 0xe5, 0x13, 0xec, 0xce, 0x16, 0xe3, 0xf8, 0x7e, 0x6, 0xce, 0x93, 0xee, + 0xf7, 0x7, 0xc3, 0xb5, 0x6a, 0x5f, 0x1e, 0x13, 0xf4, 0x57, 0x3c, 0x30, + 0x4e, 0x44, 0xf7, 0x4c, 0x38, 0x3c, 0x1a, 0x5d, 0x62, 0x64, 0x5a, 0x6e, + 0x69, 0x97, 0xd0, 0x66, 0x1e, 0x3f, 0x67, 0x5, 0x67, 0x9c, 0xbf, 0x3a, + 0xf7, 0x1, 0x1b, 0xf7, 0x0, 0xd1, 0xd2, 0xe1, 0x1f, 0xf7, 0x14, 0xfb, + 0x4c, 0xc0, 0xbf, 0x1a, 0x13, 0xec, 0xc2, 0xd5, 0xe9, 0xc2, 0x1a, 0xd2, + 0x4b, 0xd9, 0xfb, 0x9, 0xfb, 0x21, 0x43, 0x35, 0xfb, 0x2c, 0x1e, 0xe, + 0xfb, 0xfa, 0xf8, 0xf8, 0x76, 0xf7, 0x25, 0x77, 0x1, 0xf7, 0x29, 0xf8, + 0xe5, 0x15, 0xc9, 0x6, 0x2f, 0xf7, 0x21, 0x5, 0x22, 0x6, 0xe, 0x71, + 0xa, 0x96, 0x15, 0xf8, 0x7c, 0xf7, 0x5c, 0x5, 0xdd, 0x7, 0xfc, 0x7c, + 0xf7, 0x5e, 0x5, 0x34, 0x7, 0xf8, 0x1a, 0xfb, 0x30, 0xfc, 0x1a, 0xfb, + 0x2e, 0x5, 0xe, 0x3c, 0x52, 0xa, 0xf7, 0x93, 0xf7, 0x16, 0x15, 0xd9, + 0x6, 0xfb, 0xc, 0xf7, 0x5e, 0xf7, 0xc, 0xf7, 0x5f, 0x5, 0x3d, 0x6, + 0xfb, 0x27, 0xfb, 0x5f, 0x5, 0xf7, 0xd1, 0xfb, 0x5e, 0x15, 0xdb, 0x6, + 0xfb, 0xe, 0xf7, 0x5e, 0xf7, 0xe, 0xf7, 0x5f, 0x5, 0x3b, 0x6, 0xfb, + 0x27, 0xfb, 0x5f, 0x5, 0xe, 0x3c, 0x52, 0xa, 0xf7, 0xa9, 0xf7, 0x16, + 0x15, 0xdc, 0x6, 0xf7, 0x27, 0xf7, 0x5e, 0xfb, 0x27, 0xf7, 0x5f, 0x5, + 0x3a, 0x6, 0xf7, 0xd, 0xfb, 0x5f, 0x5, 0xfb, 0xb7, 0xfb, 0x5e, 0x15, + 0xda, 0x6, 0xf7, 0x28, 0xf7, 0x5e, 0xfb, 0x28, 0xf7, 0x5f, 0x5, 0x3c, + 0x6, 0xf7, 0xd, 0xfb, 0x5f, 0x5, 0xe, 0xfb, 0xfa, 0x52, 0xa, 0xf7, + 0x6b, 0xf7, 0x16, 0x15, 0xc1, 0x6, 0x36, 0xf7, 0x5e, 0xe0, 0xf7, 0x5f, + 0x5, 0x55, 0x6, 0xfb, 0xa, 0xfb, 0x5f, 0x5, 0xe, 0xfb, 0xd9, 0x52, + 0xa, 0xec, 0xf7, 0x16, 0x15, 0xc3, 0x6, 0xf7, 0x8, 0xf7, 0x60, 0xfb, + 0x8, 0xf7, 0x5d, 0x5, 0x53, 0x6, 0xe2, 0xfb, 0x5d, 0x5, 0xe, 0xa0, + 0x76, 0xf8, 0x5a, 0xd7, 0xf7, 0x50, 0x77, 0x1, 0xcc, 0xe3, 0xf7, 0x8e, + 0xe3, 0x3, 0xcc, 0x16, 0xe3, 0xf7, 0xaf, 0x6, 0xdd, 0xb2, 0xe4, 0xf4, + 0xf7, 0x1, 0x88, 0x2a, 0x6d, 0x1e, 0xfb, 0xdb, 0xe3, 0xf7, 0xdb, 0x7, + 0xf7, 0x8, 0x49, 0xe2, 0xfb, 0x14, 0x66, 0x59, 0x85, 0x4a, 0x52, 0x1e, + 0xf7, 0x97, 0x33, 0x7, 0xe, 0xfb, 0xfa, 0xf8, 0xe5, 0xf7, 0x21, 0x1, + 0xf7, 0x58, 0xf8, 0xe5, 0x60, 0xa, 0xfb, 0x9b, 0xfb, 0x21, 0x60, 0xa, + 0xe, 0xfb, 0xfa, 0xf7, 0x7c, 0xe5, 0x1, 0xb7, 0xf7, 0x7c, 0x15, 0xf7, + 0x89, 0xe5, 0xfb, 0x89, 0x6, 0xe, 0xfc, 0x69, 0xa0, 0x76, 0xf9, 0x1, + 0xec, 0x1, 0xf7, 0x24, 0xe3, 0x3, 0xce, 0x16, 0xe3, 0xf8, 0x98, 0x33, + 0x6, 0xf4, 0x4, 0x6d, 0xa, 0x62, 0xa, 0xcc, 0xf8, 0xe3, 0x15, 0xd2, + 0x6, 0xf7, 0x12, 0xf7, 0x23, 0x38, 0xa, 0x57, 0x50, 0xa, 0x4b, 0xa, + 0xf8, 0xe9, 0xf7, 0x1d, 0x1, 0xea, 0xe3, 0x3, 0x85, 0xf8, 0xe9, 0x15, + 0xee, 0x6, 0xbb, 0xde, 0xb6, 0x38, 0x5, 0xf0, 0x6, 0x26, 0x42, 0xa, + 0x8f, 0x50, 0xa, 0x4b, 0xa, 0xf8, 0xf2, 0xef, 0x12, 0x98, 0xe5, 0x83, + 0xe3, 0x84, 0xe5, 0x13, 0xd0, 0xea, 0x16, 0xe3, 0xf8, 0x99, 0x33, 0x6, + 0x13, 0xe8, 0x39, 0xe4, 0x58, 0xa, 0x62, 0xa, 0xf7, 0x17, 0xf8, 0xea, + 0x15, 0xd4, 0x6, 0x39, 0xf7, 0x1c, 0x38, 0xa, 0xe3, 0x50, 0xa, 0xfc, + 0x69, 0xfb, 0x51, 0x76, 0xf9, 0xd3, 0xec, 0x1, 0xce, 0xe3, 0x3, 0x8c, + 0xfb, 0x12, 0x15, 0x7a, 0x40, 0x5, 0x85, 0xa2, 0x9e, 0x88, 0x9c, 0x1b, + 0xdc, 0xaa, 0xc7, 0xf7, 0xe, 0x1f, 0xf8, 0xb5, 0x33, 0xfc, 0xb5, 0x7, + 0x2d, 0x72, 0x7d, 0x62, 0x95, 0x1e, 0xcd, 0xf9, 0x7f, 0x15, 0x6d, 0xa, + 0xfb, 0x53, 0x44, 0xa, 0xf7, 0x62, 0x6, 0xca, 0xc6, 0xf7, 0x43, 0xfb, + 0x9d, 0x5, 0xf7, 0x0, 0x6, 0xfb, 0x71, 0xf7, 0xda, 0xf7, 0x5a, 0xf7, + 0x54, 0x5, 0xfb, 0x6, 0x6, 0xfb, 0x65, 0xfb, 0x66, 0x5, 0xf8, 0x2e, + 0x33, 0x7, 0xe, 0xfc, 0x69, 0x44, 0xa, 0xf9, 0x62, 0x7a, 0xa, 0x71, + 0xa, 0xf7, 0x69, 0x15, 0xf8, 0x7c, 0xfb, 0x5e, 0x5, 0xe2, 0x7, 0xfc, + 0x1a, 0xf7, 0x30, 0xf8, 0x1a, 0xf7, 0x2e, 0x5, 0xe2, 0x7, 0xfc, 0x7c, + 0xfb, 0x5c, 0x5, 0xe, 0x20, 0xf7, 0x15, 0x76, 0x1, 0xb2, 0xf7, 0xc8, + 0x15, 0xf8, 0x27, 0xfb, 0x5c, 0xde, 0xf7, 0xae, 0xfc, 0x7a, 0x6, 0xe, + 0xfc, 0x69, 0x44, 0xa, 0xf7, 0xf9, 0x6, 0xe2, 0xd6, 0x5, 0xd8, 0x7, + 0x34, 0x40, 0x5, 0xf7, 0xb0, 0x33, 0xfb, 0xfb, 0x7, 0x34, 0x43, 0x5, + 0x3e, 0x7, 0xe2, 0xd3, 0x5, 0xe, 0xf7, 0x22, 0x6f, 0xa, 0xf7, 0x70, + 0xe3, 0xf7, 0x70, 0xe3, 0x17, 0xcc, 0x16, 0xe3, 0xf7, 0xa1, 0x6, 0xcc, + 0x9c, 0xf7, 0x14, 0xf7, 0x2, 0xe1, 0x92, 0x3f, 0x5a, 0x1e, 0xfb, 0xe5, + 0xe3, 0xf7, 0xc1, 0x7, 0xdc, 0xb2, 0xdb, 0xe3, 0xe8, 0x8b, 0x36, 0x59, + 0x1e, 0xfb, 0xdb, 0xe3, 0xf7, 0xf3, 0x7, 0xb0, 0x76, 0xf7, 0x2a, 0xfb, + 0x34, 0x2a, 0x72, 0x4c, 0x6f, 0x79, 0x1e, 0xc7, 0x76, 0x42, 0xaa, 0x41, + 0x1b, 0x40, 0x6c, 0x5e, 0x5d, 0x6f, 0x1f, 0x13, 0xf8, 0x89, 0x8a, 0x5, + 0xd3, 0x3c, 0x7, 0xe, 0xfb, 0xfa, 0xf9, 0x7, 0xc4, 0x1, 0x95, 0xf9, + 0x7, 0x15, 0xf7, 0xcd, 0xc4, 0xfb, 0xcd, 0x6, 0xe, 0x20, 0xb2, 0xf7, + 0x6c, 0x15, 0xf8, 0x8e, 0xd4, 0xfc, 0x8e, 0x6, 0xe, 0xfb, 0x4e, 0x76, + 0xf7, 0x57, 0xda, 0x48, 0xce, 0xf8, 0x5c, 0x77, 0x4e, 0xa, 0x13, 0xdc, + 0xf7, 0x33, 0xbf, 0x15, 0x6f, 0x9f, 0xa8, 0x67, 0xd4, 0x1b, 0xdd, 0xa9, + 0xb9, 0xa6, 0x9b, 0x1f, 0x8d, 0x6, 0x13, 0xbc, 0x4e, 0xd9, 0xf8, 0x9f, + 0x33, 0xfb, 0x75, 0x7, 0xfb, 0x10, 0x8a, 0x20, 0xfb, 0xb, 0xfb, 0x11, + 0x8b, 0xf7, 0xf, 0xf7, 0x1, 0x1e, 0xf7, 0x74, 0x33, 0xfd, 0x6e, 0xe4, + 0xf7, 0x97, 0x7, 0xe, 0x20, 0xa0, 0x76, 0xf8, 0x8e, 0x77, 0x1, 0xb3, + 0xd1, 0xf8, 0x1, 0xd0, 0x3, 0xb2, 0xd1, 0x15, 0xd1, 0x45, 0xf7, 0x4c, + 0xf7, 0x4b, 0xf7, 0x4a, 0xfb, 0x4b, 0xd1, 0xd2, 0xfb, 0x49, 0xf7, 0x4a, + 0xf7, 0x48, 0xf7, 0x49, 0x46, 0xd2, 0xfb, 0x49, 0xfb, 0x4c, 0xfb, 0x4c, + 0xf7, 0x4d, 0x45, 0x43, 0xf7, 0x4a, 0xfb, 0x4a, 0x5, 0xe, 0x6f, 0xa, + 0xf7, 0x8e, 0xe3, 0x17, 0xcc, 0x16, 0xe3, 0xf7, 0xaf, 0x6, 0xe0, 0xac, + 0xe9, 0xf7, 0x0, 0xf7, 0x0, 0x8c, 0x25, 0x5e, 0x1e, 0xfb, 0xcf, 0xe3, + 0xf7, 0xcf, 0x7, 0xf7, 0xe, 0x4a, 0xf0, 0xfb, 0x18, 0x68, 0x4d, 0x7c, + 0x3d, 0x58, 0x1e, 0x13, 0xf0, 0x89, 0xd4, 0x3c, 0x6, 0xe, 0x78, 0xd2, + 0xf7, 0x47, 0xd7, 0xf7, 0xdd, 0xd4, 0x1, 0xc6, 0xe5, 0xf7, 0x9d, 0xec, + 0x3, 0xc2, 0xf7, 0x30, 0x15, 0xfb, 0x3b, 0xa0, 0xf7, 0x30, 0x83, 0xb2, + 0x1b, 0xf7, 0x86, 0x8c, 0xf7, 0xc0, 0xd9, 0xf7, 0x61, 0x4e, 0xf7, 0x1f, + 0xfb, 0x4a, 0xfb, 0x18, 0x2a, 0x23, 0xfb, 0x20, 0xfb, 0x27, 0xf7, 0xb, + 0x3a, 0xf7, 0x2, 0xe0, 0xb8, 0xc0, 0xb3, 0xa3, 0x1f, 0x8d, 0x6, 0x47, + 0x8c, 0x88, 0xfb, 0x60, 0xfb, 0x2e, 0x1b, 0x29, 0x6e, 0xdf, 0xa6, 0x86, + 0x1f, 0x84, 0xf7, 0xbc, 0x15, 0xe7, 0xc2, 0xda, 0xdf, 0xde, 0xca, 0x39, + 0x32, 0x38, 0x56, 0x46, 0x2e, 0x3d, 0x4e, 0xc6, 0xe8, 0x1e, 0xe, 0xa0, + 0x76, 0xf8, 0x5a, 0xd7, 0xdc, 0x75, 0xa, 0xcc, 0xe3, 0xf7, 0x8e, 0xe3, + 0x13, 0xec, 0xcc, 0x16, 0xe3, 0xf7, 0xc2, 0x6, 0xdf, 0xac, 0xcf, 0xf7, + 0x0, 0xf7, 0x0, 0x8c, 0x20, 0x5e, 0x1e, 0xfb, 0xc2, 0xe3, 0xf7, 0xc2, + 0x7, 0xf7, 0x19, 0x52, 0xea, 0xfb, 0x20, 0x68, 0x4d, 0x83, 0x3e, 0x58, + 0x1e, 0x89, 0xd4, 0x3c, 0x6, 0xbd, 0xe8, 0x15, 0xcc, 0x6, 0xbb, 0xab, + 0x8a, 0x90, 0x9f, 0xa4, 0x7f, 0x7f, 0xa3, 0x1e, 0x80, 0xa2, 0x9f, 0x80, + 0x9c, 0x1b, 0xa1, 0xd0, 0x90, 0xf6, 0x90, 0x1f, 0x4b, 0x6, 0x13, 0xdc, + 0x68, 0x87, 0x80, 0x84, 0x77, 0x1b, 0x86, 0x78, 0x95, 0x96, 0x70, 0x1f, + 0x13, 0xec, 0x96, 0x72, 0x6d, 0x94, 0x74, 0x1b, 0x5a, 0x59, 0x68, 0x3e, + 0x1f, 0xe, 0xa0, 0x76, 0xf7, 0x55, 0xcb, 0xf7, 0x3a, 0xce, 0xf7, 0x5a, + 0x77, 0x1, 0xa7, 0xf8, 0x89, 0x3, 0xcb, 0x16, 0xd0, 0x6, 0xb3, 0xf7, + 0x55, 0x5, 0xf7, 0x25, 0x6, 0x62, 0xfb, 0x55, 0x5, 0xd1, 0x6, 0xb3, + 0xf7, 0x55, 0x5, 0xf7, 0x22, 0xcb, 0xfb, 0x14, 0x6, 0xad, 0xf7, 0x3a, + 0x5, 0xe9, 0xce, 0x3b, 0x6, 0xb2, 0xf7, 0x5a, 0x5, 0x47, 0x6, 0x62, + 0xfb, 0x5a, 0x5, 0xfb, 0x24, 0x6, 0xb3, 0xf7, 0x5a, 0x5, 0x46, 0x6, + 0x62, 0xfb, 0x5a, 0x5, 0xfb, 0x1d, 0x48, 0xf7, 0x10, 0x6, 0x68, 0xfb, + 0x3a, 0x5, 0x32, 0x4b, 0xd7, 0x6, 0xd9, 0xcb, 0x15, 0xae, 0xf7, 0x3b, + 0x5, 0xf7, 0x2e, 0x6, 0x67, 0xfb, 0x3b, 0x5, 0xe, 0x7d, 0xd3, 0xf8, + 0x2c, 0xd3, 0x1, 0xbb, 0xe5, 0xf7, 0xa8, 0xe5, 0x3, 0xae, 0xf7, 0xa0, + 0x15, 0xfb, 0x2e, 0xd1, 0xfb, 0x14, 0xf7, 0x41, 0xf7, 0x30, 0xe2, 0xf1, + 0xf7, 0x48, 0xf7, 0x5a, 0xfb, 0x1a, 0xd3, 0xfb, 0x1, 0xfb, 0x3c, 0x40, + 0xfb, 0x13, 0xfb, 0x23, 0x1e, 0xe5, 0x16, 0xf7, 0x3c, 0xed, 0xa9, 0xc2, + 0xda, 0xd5, 0x4f, 0xfb, 0x1e, 0x39, 0x6f, 0xfb, 0x14, 0xfb, 0x11, 0x57, + 0x26, 0xb4, 0xf7, 0x3d, 0x1e, 0xe, 0x76, 0xa, 0xc8, 0xf7, 0x1d, 0x1, + 0x77, 0xa, 0x3, 0x3f, 0xa, 0xfb, 0x87, 0xfc, 0x6a, 0x23, 0xa, 0xe, + 0x76, 0xa, 0xf7, 0x5a, 0x77, 0x1, 0x77, 0xa, 0x3, 0x3a, 0xa, 0xfb, + 0x4d, 0xfc, 0x6a, 0x23, 0xa, 0xe, 0x7d, 0xd3, 0xf8, 0x34, 0xd3, 0xc7, + 0xef, 0x1, 0x77, 0xa, 0x3, 0x3e, 0xa, 0xfb, 0xab, 0xfc, 0x4e, 0x23, + 0xa, 0xe, 0xf7, 0x91, 0x7c, 0xd4, 0xf7, 0x46, 0xd3, 0xf7, 0x32, 0xd3, + 0x1, 0xae, 0xe5, 0xf7, 0xc8, 0xe7, 0xf7, 0xb1, 0xe7, 0x3, 0xf8, 0x6f, + 0xde, 0x15, 0x3d, 0xbf, 0xd4, 0x77, 0xca, 0x1b, 0xc8, 0xf7, 0x18, 0x9f, + 0xf7, 0x2b, 0xb3, 0x1f, 0x3c, 0x98, 0x5, 0x77, 0x85, 0x5e, 0x30, 0x24, + 0x1b, 0x2e, 0x5c, 0xd8, 0xf0, 0x8a, 0x1f, 0xf8, 0x10, 0x6, 0xf7, 0xaa, + 0xfb, 0x41, 0xa3, 0x49, 0x3d, 0x49, 0x68, 0x4b, 0x5f, 0x1e, 0xc8, 0x61, + 0x5a, 0xb1, 0x21, 0x1b, 0xfb, 0xd, 0xfb, 0xe, 0x2c, 0xfb, 0x49, 0xfb, + 0x47, 0xf7, 0x1, 0x29, 0xf7, 0x1a, 0xa9, 0xea, 0x8e, 0xea, 0xd3, 0x1f, + 0xfb, 0xf2, 0xf7, 0x47, 0x15, 0xf6, 0xc7, 0xec, 0xe8, 0xe0, 0xd1, 0x3c, + 0xfb, 0x11, 0xfb, 0x1d, 0x3e, 0x48, 0x3d, 0x63, 0xfb, 0x5, 0xa2, 0xf7, + 0x49, 0x1e, 0xf8, 0x24, 0xb9, 0x15, 0xf7, 0x4, 0x94, 0xcf, 0xb5, 0xc8, + 0x1b, 0xd7, 0xc8, 0x61, 0xfb, 0x4, 0x95, 0x1f, 0xe, 0xfb, 0xfa, 0xfb, + 0x75, 0xc7, 0xf7, 0x39, 0x77, 0x1, 0xd4, 0xc9, 0xc9, 0xe5, 0x3, 0xe8, + 0x16, 0x7a, 0x4f, 0x88, 0x6e, 0x76, 0x1a, 0x3d, 0xc1, 0x66, 0xc6, 0xae, + 0xb0, 0x97, 0x9d, 0xa8, 0x1e, 0xc2, 0x7, 0x78, 0x6d, 0x6a, 0x85, 0x70, + 0x1b, 0x67, 0x71, 0xa1, 0xba, 0x91, 0x88, 0xb9, 0x9e, 0xb7, 0x1f, 0xe, + 0x76, 0xa, 0xca, 0xf7, 0x1b, 0x1, 0x77, 0xa, 0x3, 0xb8, 0xf7, 0x9c, + 0x23, 0xa, 0xf7, 0x13, 0xf7, 0xe3, 0x4c, 0xa, 0x4a, 0xf7, 0x1b, 0x59, + 0xa, 0xa0, 0x76, 0xf8, 0xbe, 0xf7, 0x33, 0x1, 0xf7, 0xa3, 0xe3, 0x3, + 0xf7, 0xa3, 0x16, 0xe3, 0xf9, 0x53, 0x48, 0x6, 0x67, 0x42, 0x44, 0x47, + 0x37, 0x64, 0x8, 0x36, 0x7, 0xab, 0x97, 0xdd, 0xb3, 0xc3, 0xc1, 0x8, + 0xe, 0xf7, 0x23, 0x81, 0xc3, 0x5f, 0x76, 0xf7, 0xc6, 0xc3, 0xf7, 0xfb, + 0x77, 0xa0, 0x77, 0x12, 0xf7, 0x2a, 0xd1, 0xf8, 0x6f, 0xd7, 0x13, 0x76, + 0xf7, 0x2a, 0xf7, 0xf1, 0x15, 0xd1, 0xf7, 0xf5, 0x57, 0x6, 0x68, 0x60, + 0x53, 0x69, 0x69, 0x80, 0x8, 0x51, 0x7, 0xb0, 0x94, 0xb4, 0xa0, 0xa8, + 0xa3, 0x8, 0x50, 0xfd, 0x9, 0x15, 0xd7, 0x6, 0x13, 0x6e, 0xf8, 0xa3, + 0xf9, 0x66, 0x5, 0x40, 0x6, 0x13, 0xb6, 0xfb, 0x24, 0xfd, 0x5d, 0x15, + 0xf7, 0xbe, 0xc3, 0xfb, 0x4d, 0x6, 0xd3, 0xc3, 0x5, 0xcf, 0xba, 0xb6, + 0xa4, 0xc8, 0x1a, 0xe9, 0xfb, 0xc, 0x99, 0x76, 0xfb, 0xb, 0x79, 0x46, + 0x6a, 0x83, 0x1e, 0xd3, 0x84, 0x5, 0xa6, 0x94, 0x95, 0xa5, 0xc1, 0x1b, + 0xb3, 0xa4, 0x79, 0x69, 0x6b, 0x74, 0x7a, 0x41, 0x57, 0x1f, 0x4c, 0x5e, + 0x55, 0x5c, 0x85, 0x57, 0x8, 0xe, 0xf7, 0x23, 0x8d, 0x76, 0xdc, 0xbe, + 0xf8, 0xe2, 0x77, 0x1, 0xf7, 0x43, 0xce, 0xf8, 0x24, 0xcd, 0x3, 0xf8, + 0x67, 0xc9, 0x15, 0xf7, 0x43, 0x44, 0xcd, 0xd2, 0xbb, 0xbe, 0x5b, 0xf7, + 0x78, 0x53, 0x6, 0xfb, 0x4d, 0xfb, 0x71, 0x5, 0xd1, 0x84, 0x15, 0xf4, + 0xf7, 0xf, 0x5, 0xfb, 0xf, 0x7, 0xfc, 0x67, 0xf7, 0x83, 0x15, 0xce, + 0xf7, 0xf3, 0x59, 0x6, 0x6a, 0x60, 0x56, 0x69, 0x6a, 0x81, 0x8, 0x51, + 0x7, 0xaf, 0x94, 0xb1, 0x9f, 0xa7, 0xa3, 0x8, 0x5d, 0xfd, 0xa, 0x15, + 0xd4, 0x6, 0xf8, 0x8d, 0xf9, 0x63, 0x5, 0x44, 0x6, 0xe, 0xfb, 0xfa, + 0xf7, 0xe0, 0x76, 0xf8, 0x3a, 0x77, 0x1, 0xf7, 0x2b, 0xd2, 0x3, 0xf7, + 0x2b, 0xf7, 0xcb, 0x15, 0xd2, 0xf8, 0x3a, 0x56, 0x6, 0x68, 0x5e, 0x53, + 0x68, 0x68, 0x80, 0x8, 0x4e, 0x7, 0xb1, 0x95, 0xb3, 0xa0, 0xa9, 0xa4, + 0x8, 0xe, 0xfb, 0xd5, 0xf7, 0xc4, 0xd1, 0xf7, 0xbe, 0xcc, 0x1, 0xa3, + 0xd3, 0xf7, 0x38, 0xce, 0x3, 0xf7, 0xa6, 0xf7, 0xcf, 0x4c, 0xa, 0x78, + 0xa7, 0x8b, 0xb3, 0xd6, 0x1a, 0xf7, 0x1e, 0x7, 0xf7, 0x11, 0x3d, 0x9b, + 0x48, 0xfb, 0x9, 0x74, 0x3b, 0x62, 0x86, 0x1e, 0xcc, 0x77, 0x5, 0xc9, + 0x93, 0xb1, 0x99, 0xad, 0x1b, 0xd6, 0x8e, 0x56, 0x64, 0x1f, 0x82, 0x85, + 0x3b, 0x7f, 0x7b, 0x87, 0x8, 0x5a, 0x84, 0x39, 0x7d, 0x22, 0x1a, 0x27, + 0xd2, 0x6f, 0xb8, 0xbe, 0xb7, 0xab, 0xa9, 0xa8, 0x1e, 0x75, 0x8f, 0x7d, + 0x91, 0x7c, 0x1e, 0x7c, 0xf7, 0x5b, 0x15, 0x5b, 0x8a, 0x7d, 0x81, 0x77, + 0x1e, 0x65, 0x79, 0x64, 0x77, 0x68, 0x1b, 0x6a, 0x70, 0x9f, 0xb1, 0xb9, + 0xa6, 0x93, 0xcb, 0x97, 0x1f, 0xb7, 0x94, 0x96, 0x8c, 0x9c, 0x91, 0x8, + 0xe, 0xfb, 0xda, 0xf7, 0xc4, 0xd0, 0xf7, 0xbb, 0xd0, 0x1, 0xa4, 0xcb, + 0xf7, 0x50, 0xcb, 0x3, 0xa4, 0xf8, 0x9e, 0x15, 0xfb, 0x9, 0xc0, 0x26, + 0xf4, 0xf7, 0xe, 0xaf, 0xf7, 0x15, 0xe4, 0xe2, 0x68, 0xf7, 0x14, 0xfb, + 0xf, 0xfb, 0xd, 0x66, 0xfb, 0xc, 0x2c, 0x1e, 0xcb, 0x16, 0xb2, 0x97, + 0xf6, 0xdd, 0xe1, 0x93, 0xfb, 0x12, 0x77, 0x68, 0x83, 0xfb, 0x6, 0x35, + 0x35, 0x83, 0xf7, 0x13, 0xa1, 0x1e, 0xe, 0x3b, 0x8a, 0x76, 0xa6, 0xd0, + 0xf8, 0x10, 0xd0, 0xa1, 0x77, 0x1, 0xa7, 0xd3, 0xf7, 0xf8, 0xdc, 0x3, + 0xb0, 0x97, 0x15, 0xbb, 0x69, 0xc1, 0xcc, 0x5, 0x7d, 0xa3, 0xaf, 0x73, + 0xdc, 0x1b, 0xf7, 0x39, 0xe7, 0xf7, 0x3, 0xf7, 0x27, 0xf7, 0x1, 0x69, + 0xb7, 0x71, 0xab, 0x1f, 0xc2, 0xcb, 0x5a, 0xac, 0x58, 0x4f, 0x5, 0x9b, + 0x6e, 0x5c, 0xa1, 0x3f, 0x1b, 0xfb, 0x3a, 0x35, 0xfb, 0x8, 0xfb, 0x24, + 0x2e, 0xaa, 0x53, 0xad, 0x68, 0x1f, 0xba, 0xc6, 0x15, 0x6e, 0xa6, 0x80, + 0xb8, 0xbe, 0x1a, 0xf7, 0x3a, 0xf7, 0x17, 0xa6, 0xbc, 0xbe, 0xad, 0x78, + 0x7e, 0x9e, 0x1e, 0xfb, 0x60, 0xfb, 0xdc, 0x15, 0xf7, 0x86, 0xf7, 0xaf, + 0x5, 0xa1, 0x6f, 0x97, 0x72, 0x4e, 0x1a, 0xfb, 0x34, 0xfb, 0x8, 0x6e, + 0x4f, 0x59, 0x6c, 0x91, 0x99, 0x78, 0x1e, 0xe, 0x7d, 0xd3, 0xf8, 0x34, + 0xd3, 0xca, 0x75, 0xa, 0x77, 0xa, 0x13, 0xec, 0xf7, 0x7, 0xf8, 0xf5, + 0x15, 0xcc, 0x6, 0xbb, 0xac, 0x8a, 0x8f, 0xa2, 0xa4, 0x7f, 0x7f, 0xa2, + 0x1e, 0x80, 0xa2, 0x9f, 0x80, 0x9a, 0x1b, 0xa0, 0xd6, 0x8d, 0xf7, 0x2, + 0x56, 0xa, 0x87, 0x79, 0x92, 0x96, 0x74, 0x1f, 0x13, 0xdc, 0x70, 0x96, + 0x6b, 0x98, 0x72, 0x8a, 0x8, 0x13, 0xec, 0x5a, 0x59, 0x66, 0x40, 0x1f, + 0x45, 0xfb, 0xed, 0x23, 0xa, 0xe, 0x66, 0xa, 0xc7, 0xe3, 0xf7, 0x98, + 0xe5, 0x3, 0xf7, 0x28, 0xc8, 0x15, 0x68, 0xa5, 0xb3, 0x6c, 0xc9, 0x1b, + 0xf7, 0x6, 0xf7, 0x13, 0xe0, 0xf7, 0x4c, 0xf7, 0x25, 0x2d, 0xf7, 0x15, + 0xfb, 0x27, 0x2d, 0x70, 0x54, 0x73, 0x7c, 0x1f, 0x89, 0xce, 0x3b, 0xfd, + 0x71, 0xe3, 0xf7, 0xa0, 0x6, 0x82, 0xf7, 0x5e, 0x15, 0xf7, 0xd, 0xc2, + 0xe0, 0xdf, 0xcd, 0xe0, 0x50, 0xfb, 0x26, 0xfb, 0x3e, 0x28, 0x70, 0x57, + 0x4f, 0x3c, 0xb3, 0xf7, 0x30, 0x1e, 0xe, 0xfb, 0x2e, 0xfb, 0x2c, 0x76, + 0xf9, 0xba, 0xe0, 0x1, 0x9d, 0xf7, 0xa2, 0xdd, 0xd0, 0x3, 0xf7, 0x6c, + 0xfb, 0x41, 0x15, 0xd3, 0xf9, 0xba, 0xdd, 0xfd, 0xba, 0xd0, 0xf9, 0xba, + 0xc5, 0xe0, 0xfb, 0x8b, 0x6, 0xfb, 0xf, 0xfb, 0x1, 0x48, 0xfb, 0x1d, + 0x27, 0xca, 0x2d, 0xf7, 0x1b, 0x1f, 0xe, 0x70, 0xa, 0x1, 0xcf, 0xe6, + 0x3, 0xf7, 0x88, 0xfb, 0x63, 0x15, 0xc2, 0x6, 0x21, 0xf7, 0x3e, 0x69, + 0xf7, 0x30, 0xf7, 0x23, 0x1a, 0xf7, 0x6d, 0xd4, 0xf7, 0x1f, 0xce, 0xf7, + 0x7, 0x1e, 0x4a, 0x6, 0x21, 0xfb, 0x1f, 0x4f, 0xfb, 0x37, 0xfb, 0x3d, + 0x1a, 0xfb, 0x7f, 0xf7, 0x1d, 0xfb, 0x4d, 0xb2, 0x5a, 0x1e, 0xe, 0x70, + 0xa, 0x12, 0xf7, 0x42, 0xe6, 0x17, 0xad, 0xfb, 0x61, 0x15, 0xc6, 0x89, + 0x5, 0xf5, 0xf7, 0x1f, 0xcd, 0xf7, 0x35, 0xf7, 0x3d, 0x1a, 0xf7, 0x7f, + 0xfb, 0x16, 0xf7, 0x4f, 0x64, 0xbc, 0x1e, 0x4d, 0x6, 0x13, 0x20, 0xf5, + 0xfb, 0x3e, 0xad, 0xfb, 0x32, 0xfb, 0x23, 0x1a, 0xfb, 0x6d, 0x3d, 0xfb, + 0x26, 0x4d, 0x23, 0x1e, 0xe, 0xf7, 0x5a, 0x79, 0xc5, 0x65, 0x76, 0xf7, + 0xc5, 0xc4, 0x89, 0xc5, 0xf7, 0x8a, 0xc4, 0x8c, 0x77, 0x12, 0xb2, 0xde, + 0xf7, 0x3a, 0xdd, 0xf7, 0x29, 0xdd, 0xf7, 0x3b, 0xdd, 0x13, 0x9b, 0xc0, + 0xb2, 0xf8, 0x9d, 0x15, 0xfb, 0x37, 0xf7, 0x2, 0x7a, 0xc0, 0xce, 0xf0, + 0xb2, 0xf7, 0x21, 0xf7, 0x27, 0x26, 0xad, 0x48, 0x1e, 0xfb, 0xa, 0x5e, + 0x29, 0x38, 0x1f, 0xde, 0x16, 0xae, 0x89, 0xe4, 0xdd, 0xdf, 0x8d, 0x28, + 0x72, 0x68, 0x89, 0x34, 0x37, 0x1e, 0x13, 0xa6, 0xc0, 0x39, 0x8d, 0xed, + 0xa3, 0x1f, 0xf8, 0x21, 0xfb, 0xfa, 0x15, 0xfb, 0x37, 0xf7, 0x2, 0x79, + 0xc0, 0xce, 0xf0, 0xb3, 0xf7, 0x21, 0x1e, 0x13, 0xab, 0xc0, 0xf7, 0x26, + 0x26, 0xad, 0x48, 0xfb, 0xb, 0x5f, 0x2a, 0x38, 0x1e, 0xdd, 0x16, 0xae, + 0x89, 0xe3, 0xde, 0xdf, 0x8d, 0x29, 0x72, 0x68, 0x89, 0x33, 0x37, 0x38, + 0x8d, 0xee, 0xa3, 0x1e, 0x13, 0x67, 0xc0, 0xfc, 0x2b, 0xfb, 0x4a, 0x15, + 0xda, 0x6, 0xf8, 0x3b, 0xf9, 0x66, 0x5, 0x3e, 0x6, 0xe, 0xfc, 0x31, + 0x8b, 0xf5, 0x1, 0xe2, 0xf3, 0x3, 0xe2, 0x16, 0xf3, 0xf5, 0x23, 0x6, + 0xe, 0xfc, 0x31, 0xf7, 0x52, 0xf7, 0x11, 0x1, 0xd8, 0xf7, 0x11, 0x3, + 0xd8, 0xf7, 0x52, 0x15, 0xf7, 0x11, 0xf7, 0x11, 0xfb, 0x11, 0x6, 0xe, + 0xf7, 0xc9, 0x78, 0xc5, 0xf7, 0x86, 0xc5, 0x88, 0xc6, 0xf7, 0x85, 0xc4, + 0x95, 0x77, 0x12, 0x92, 0xd5, 0xf7, 0x1f, 0xd4, 0xd9, 0xd4, 0xf7, 0x1f, + 0xd5, 0xbe, 0xd4, 0xf7, 0x1f, 0xd5, 0x13, 0xb7, 0xe0, 0x92, 0xf8, 0x98, + 0x15, 0x52, 0x97, 0xfb, 0xf, 0xf7, 0x16, 0xf7, 0x23, 0x8c, 0xf7, 0x1b, + 0xb8, 0xb2, 0x86, 0xf7, 0x1e, 0xfb, 0x1f, 0xfb, 0x1a, 0x83, 0xfb, 0x16, + 0x5c, 0x1e, 0xd5, 0x16, 0xb1, 0x8a, 0xdd, 0xd0, 0xc4, 0x99, 0x53, 0x4b, + 0x5d, 0x83, 0x40, 0x4c, 0x48, 0x8a, 0xd7, 0xb8, 0x1e, 0xf7, 0xb6, 0xfb, + 0xf8, 0x15, 0x5d, 0xa, 0x1e, 0x13, 0xcf, 0xe0, 0x3c, 0xa, 0xf7, 0x9c, + 0x16, 0x5d, 0xa, 0x3c, 0xa, 0xfd, 0xb, 0xfb, 0x45, 0x15, 0xcd, 0x6, + 0xf7, 0xbf, 0xf9, 0x64, 0x5, 0x49, 0x6, 0xe, 0x20, 0xf7, 0x82, 0xe4, + 0x1, 0xf7, 0x8d, 0xe4, 0x3, 0xb2, 0xf7, 0x82, 0x15, 0xf7, 0x66, 0xfb, + 0x64, 0xe4, 0xf7, 0x64, 0xf7, 0x63, 0xe4, 0xfb, 0x63, 0xf7, 0x64, 0x32, + 0xfb, 0x64, 0xfb, 0x66, 0x6, 0xe, 0x20, 0x8b, 0xd9, 0xf7, 0x57, 0xd8, + 0xf7, 0x30, 0x77, 0x1, 0xf7, 0x8b, 0xe4, 0x3, 0xb2, 0xf7, 0xa5, 0x15, + 0xf7, 0x64, 0xfb, 0x2e, 0xe4, 0xf7, 0x2e, 0xf7, 0x65, 0xd8, 0xfb, 0x65, + 0xf7, 0x30, 0x32, 0xfb, 0x30, 0xfb, 0x64, 0x6, 0xfb, 0xf2, 0x4, 0xf8, + 0x8e, 0xd9, 0xfc, 0x8e, 0x6, 0xe, 0x66, 0xa, 0xbe, 0xe5, 0xf7, 0xa6, + 0xda, 0x3, 0xf8, 0x28, 0xc8, 0x15, 0x8d, 0xfb, 0xa0, 0xe3, 0xf9, 0x71, + 0x3b, 0x48, 0x89, 0x6, 0xa3, 0x7c, 0x5b, 0xc2, 0x2d, 0x1b, 0xfb, 0x27, + 0x42, 0xfb, 0x10, 0xfb, 0x25, 0xfb, 0x4c, 0xf5, 0x31, 0xf7, 0x6, 0xc9, + 0xc8, 0xaa, 0xae, 0xa5, 0x1f, 0xfb, 0xab, 0xf7, 0x64, 0x15, 0xf7, 0x26, + 0xcb, 0xc1, 0xcd, 0xdf, 0xd7, 0x3c, 0xfb, 0xd, 0xfb, 0x30, 0x27, 0x5d, + 0x4f, 0x57, 0x3d, 0xab, 0xf7, 0x3e, 0x1e, 0xe, 0x8b, 0xef, 0xf8, 0xbf, + 0xd3, 0x12, 0xf7, 0x71, 0xeb, 0x31, 0xdc, 0xec, 0xe2, 0x13, 0xd8, 0xf7, + 0x77, 0xf7, 0x44, 0x15, 0xdc, 0x6, 0x8d, 0xed, 0x97, 0x9a, 0xce, 0xc8, + 0x8, 0xc6, 0xc2, 0xb7, 0xb4, 0xdc, 0x1a, 0xf7, 0x4, 0x30, 0xe3, 0xfb, + 0x16, 0x26, 0xfb, 0x6, 0x33, 0xfb, 0xa, 0x1e, 0xd8, 0x81, 0x5, 0xe0, + 0x99, 0xb4, 0xc6, 0xdf, 0x1b, 0xd8, 0xc3, 0x4d, 0x49, 0x59, 0x6f, 0x6e, + 0x62, 0x66, 0x1f, 0x38, 0x40, 0x6c, 0x67, 0x90, 0xfb, 0x10, 0x8, 0x13, + 0xe8, 0x85, 0xfb, 0x44, 0x15, 0xeb, 0xef, 0x2b, 0x6, 0xe, 0x3b, 0xfb, + 0x5d, 0xd3, 0xf8, 0xbf, 0xee, 0x12, 0xe6, 0xe5, 0xe0, 0xef, 0x31, 0xdf, + 0xe0, 0xdd, 0x13, 0xec, 0xf7, 0xa8, 0xf7, 0xea, 0x15, 0x89, 0x29, 0x85, + 0x86, 0x46, 0x4e, 0x8, 0x4d, 0x54, 0x5d, 0x5c, 0x3a, 0x1a, 0xfb, 0x4, + 0xea, 0x37, 0xf7, 0x1b, 0xcc, 0xf7, 0x21, 0xb8, 0xf7, 0x37, 0x1e, 0x39, + 0x95, 0x5, 0x3f, 0x8c, 0x63, 0x45, 0x35, 0x1b, 0x3b, 0x50, 0xc5, 0xcd, + 0xbd, 0xa9, 0xae, 0xb5, 0xb0, 0x1f, 0xe1, 0xd6, 0xa5, 0xa5, 0x86, 0xf7, + 0x10, 0x8, 0x13, 0xf4, 0x2d, 0xdf, 0x15, 0xef, 0xee, 0x27, 0x6, 0xe, + 0xfb, 0xe4, 0xf8, 0x78, 0x76, 0xf7, 0x93, 0x77, 0x1, 0xd1, 0xd8, 0xc8, + 0xd8, 0x3, 0xf7, 0x74, 0xf8, 0x63, 0x5c, 0xa, 0xfb, 0xe, 0xfb, 0x1e, + 0x5c, 0xa, 0xe, 0xfb, 0xfa, 0xfb, 0x14, 0x76, 0xf7, 0x22, 0xf7, 0x5, + 0x1, 0xdb, 0xbb, 0xf7, 0xb, 0xbb, 0x3, 0xad, 0x84, 0x48, 0xa, 0xf7, + 0x3b, 0xfb, 0x5, 0x48, 0xa, 0xe, 0xfb, 0xfa, 0xf8, 0x6a, 0xf7, 0x6, + 0xf7, 0x21, 0x77, 0x1, 0xb1, 0xbb, 0xf7, 0xb, 0xbb, 0x3, 0xf7, 0x61, + 0xf8, 0x6a, 0x47, 0xa, 0xfb, 0x3b, 0x2f, 0x47, 0xa, 0xe, 0xfb, 0xfa, + 0xf8, 0x78, 0x76, 0xf7, 0x21, 0xf7, 0x6, 0x12, 0xdb, 0xbb, 0xf7, 0xb, + 0xbb, 0x17, 0xbb, 0xf8, 0x63, 0x15, 0x13, 0xf0, 0x4d, 0xa, 0xf7, 0x51, + 0x69, 0x15, 0x13, 0x50, 0x4d, 0xa, 0xe, 0xfc, 0x69, 0xf8, 0x6a, 0xef, + 0xf7, 0x2f, 0x77, 0x1, 0xcc, 0xba, 0x3, 0xcc, 0xf8, 0x6a, 0x15, 0xe8, + 0xef, 0x5d, 0x6, 0x8c, 0xa7, 0x90, 0xd3, 0xbe, 0xa0, 0x75, 0xad, 0x18, + 0x3b, 0x67, 0x89, 0x2f, 0x5a, 0x1a, 0xe, 0xfc, 0x69, 0xf8, 0x78, 0x76, + 0x1, 0xf7, 0x2, 0xba, 0x3, 0xd6, 0xf8, 0x63, 0x15, 0xdb, 0xaf, 0x8d, + 0xd6, 0xbc, 0x1a, 0xea, 0x2e, 0xfb, 0x9, 0xb9, 0x7, 0x8a, 0x6f, 0x86, + 0x54, 0x58, 0x76, 0x8, 0xe, 0xfc, 0x69, 0x85, 0xf7, 0x4, 0x1, 0xf7, + 0x1, 0xbb, 0x3, 0xca, 0x85, 0x15, 0xb9, 0x6, 0x8a, 0x6f, 0x87, 0x4f, + 0x58, 0x76, 0xa1, 0x69, 0x18, 0xdb, 0xaf, 0x8d, 0xdb, 0xbc, 0x1a, 0xe5, + 0x2d, 0x7, 0xe, 0xfc, 0x88, 0xf8, 0x78, 0x76, 0xf7, 0x93, 0x77, 0x1, + 0xc6, 0xd4, 0x3, 0xdb, 0xf8, 0x63, 0x15, 0xa9, 0x6, 0xa1, 0xf7, 0x1e, + 0x5, 0xf7, 0x9, 0x42, 0xfb, 0x9, 0x7, 0xe, 0xfb, 0xfa, 0xa0, 0x76, + 0xf8, 0x55, 0xe4, 0x12, 0x85, 0xe3, 0x17, 0xd8, 0x16, 0xe3, 0xf7, 0xac, + 0x6, 0xd7, 0x9b, 0xe8, 0xc3, 0xa2, 0xa0, 0x8a, 0x78, 0xa0, 0x1e, 0xa9, + 0xdd, 0x5, 0x92, 0x82, 0x78, 0x9f, 0x5e, 0x1b, 0x4c, 0x7a, 0x5f, 0x63, + 0x77, 0x1f, 0x13, 0xe0, 0x89, 0xd4, 0x3b, 0x6, 0xe, 0xb9, 0x78, 0xca, + 0xf7, 0xab, 0xc3, 0xf7, 0xe, 0xc2, 0xf7, 0xa, 0xca, 0x1, 0x7d, 0xca, + 0xf7, 0x2e, 0xcd, 0xf7, 0x49, 0xd2, 0xf7, 0x3c, 0xca, 0x3, 0xf7, 0x5f, + 0xf7, 0x2a, 0x15, 0xcd, 0xf7, 0x41, 0xb3, 0x6, 0xc0, 0x9e, 0x76, 0x33, + 0xbd, 0x1f, 0xb0, 0x4b, 0x5, 0xdc, 0x6, 0x59, 0xda, 0x58, 0xdc, 0x7a, + 0x97, 0x73, 0x95, 0x19, 0x9d, 0xeb, 0x94, 0xef, 0xec, 0x2a, 0x9d, 0x3c, + 0x1f, 0xfb, 0x22, 0x6, 0xcd, 0xfb, 0x45, 0x15, 0xf7, 0xe, 0xd7, 0x7, + 0xb4, 0xcb, 0x8b, 0x4f, 0x4d, 0x41, 0x8b, 0x6c, 0x1f, 0xfb, 0xfb, 0x78, + 0x15, 0xfb, 0x66, 0xf7, 0x41, 0xfb, 0x3d, 0xf7, 0x68, 0xf7, 0x68, 0xf7, + 0x3d, 0xf7, 0x3e, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x3f, 0xf7, 0x3c, 0xfb, + 0x66, 0xfb, 0x66, 0xfb, 0x43, 0xfb, 0x3b, 0xfb, 0x66, 0x1e, 0xca, 0x16, + 0xf7, 0x42, 0xf7, 0x25, 0xf7, 0x20, 0xf7, 0x44, 0xf7, 0x44, 0xf7, 0x23, + 0xfb, 0x20, 0xfb, 0x42, 0xfb, 0x43, 0xfb, 0x23, 0xfb, 0x21, 0xfb, 0x44, + 0xfb, 0x44, 0xfb, 0x25, 0xf7, 0x21, 0xf7, 0x43, 0x1e, 0xe, 0xfb, 0xfa, + 0xf8, 0xd0, 0xb1, 0xf7, 0x0, 0xb1, 0x1, 0xd6, 0xb1, 0xf7, 0x0, 0xb1, + 0x3, 0xd6, 0xf9, 0x2e, 0x15, 0x57, 0xb3, 0x61, 0xbe, 0xbf, 0xb4, 0xb5, + 0xbf, 0xbe, 0x62, 0xb2, 0x57, 0x58, 0x63, 0x64, 0x58, 0x1e, 0xb1, 0x16, + 0xa6, 0xa1, 0xa4, 0xaa, 0xab, 0xa2, 0x74, 0x6e, 0x6c, 0x73, 0x72, 0x6c, + 0x6f, 0x72, 0xa1, 0xad, 0x1e, 0xe, 0xfb, 0x53, 0x7c, 0xd3, 0xf8, 0x2d, + 0xd3, 0x1, 0xc8, 0xe0, 0xf7, 0x78, 0xe5, 0x3, 0xab, 0xf7, 0x2f, 0x15, + 0x57, 0x94, 0xa3, 0xfb, 0xa, 0xf7, 0x50, 0x1b, 0xf7, 0x1b, 0xd7, 0xd3, + 0xe1, 0xf6, 0x3f, 0xa9, 0xfb, 0x1c, 0xae, 0x1f, 0x36, 0xa1, 0x66, 0x91, + 0xb7, 0x1a, 0xc6, 0xd2, 0x9f, 0xae, 0xae, 0xd5, 0x83, 0x6c, 0xa, 0xf6, + 0xfb, 0x4a, 0x1b, 0xfb, 0x11, 0x49, 0x44, 0x3b, 0xfb, 0x0, 0xf1, 0x73, + 0xda, 0x78, 0x1f, 0xf7, 0x2, 0x70, 0xb1, 0x73, 0x61, 0x1a, 0x68, 0x6c, + 0x58, 0x30, 0x38, 0x62, 0xb5, 0xd0, 0x82, 0x1e, 0xe, 0xfb, 0x53, 0x7c, + 0xd3, 0xf8, 0x22, 0xd3, 0xf7, 0x63, 0x77, 0x1, 0xb9, 0xe0, 0xf7, 0x87, + 0xe5, 0x3, 0xab, 0xf7, 0x2c, 0x15, 0x57, 0x94, 0xa3, 0xfb, 0x7, 0xf7, + 0x50, 0x1b, 0xf7, 0x1b, 0xd7, 0xd0, 0xe1, 0xf6, 0x40, 0x9c, 0xfb, 0x1c, + 0xae, 0x1f, 0x36, 0xa1, 0x66, 0xa2, 0xb7, 0x1a, 0xc6, 0xd2, 0x93, 0xae, + 0xae, 0xd5, 0x85, 0x6c, 0xa, 0xf4, 0xfb, 0x4a, 0x1b, 0xfb, 0x11, 0x49, + 0x46, 0x3b, 0xfb, 0x0, 0xf1, 0x70, 0xda, 0x78, 0x1f, 0xf7, 0x2, 0x70, + 0xb0, 0x7c, 0x61, 0x1a, 0x68, 0x6d, 0x5b, 0x30, 0x38, 0x61, 0xb2, 0xd0, + 0x82, 0x1e, 0xe2, 0xf8, 0x44, 0x37, 0xa, 0xfb, 0x53, 0xd4, 0xf9, 0xa4, + 0xd2, 0x1, 0xd4, 0x7a, 0x15, 0xfb, 0x10, 0x9b, 0xe6, 0x59, 0xf4, 0x1b, + 0xf7, 0x9, 0xd7, 0xd0, 0xe4, 0xd8, 0x4f, 0xb8, 0x79, 0x99, 0x1f, 0xb5, + 0x9c, 0xd1, 0x98, 0xe7, 0x1a, 0xe7, 0x3f, 0xc6, 0x27, 0xc6, 0x1e, 0x49, + 0xb3, 0x2d, 0xbf, 0xc4, 0x1a, 0xb2, 0xaa, 0xb6, 0xc8, 0xe0, 0x9e, 0x46, + 0x66, 0x92, 0x1e, 0xe6, 0x95, 0x5, 0xf7, 0x8, 0xfb, 0x15, 0xbe, 0x47, + 0xfb, 0x14, 0x52, 0x32, 0x4b, 0x50, 0xb0, 0x68, 0xa7, 0x73, 0x1e, 0x3f, + 0x74, 0x69, 0x4f, 0x54, 0x1a, 0x2a, 0xe2, 0x55, 0xda, 0x5c, 0x1e, 0xda, + 0x5a, 0xb0, 0x6f, 0xa2, 0x79, 0x8, 0xaf, 0x6f, 0x91, 0x76, 0x77, 0x1a, + 0x6d, 0x73, 0x55, 0x3a, 0x28, 0x7b, 0xd5, 0xb2, 0x82, 0x1e, 0xf7, 0x57, + 0xf7, 0x20, 0x15, 0x78, 0x99, 0x6f, 0x9c, 0x4b, 0xb0, 0x8, 0x3b, 0xba, + 0x60, 0xa5, 0xbf, 0x1a, 0xbf, 0xba, 0xb0, 0xa6, 0x9a, 0x1e, 0xa3, 0x77, + 0xab, 0x76, 0xb5, 0x71, 0x8, 0xd9, 0x5b, 0xc3, 0x62, 0x58, 0x1a, 0x70, + 0x79, 0x67, 0x55, 0x70, 0x1e, 0xe, 0xfc, 0x31, 0xfb, 0x12, 0x76, 0xf8, + 0xc8, 0xee, 0x1, 0xe3, 0xf2, 0x3, 0xe3, 0x85, 0x15, 0xc8, 0x6, 0x8a, + 0x61, 0x7d, 0x62, 0x5c, 0x76, 0xa3, 0x66, 0x18, 0xd2, 0xa4, 0x94, 0xdd, + 0xad, 0x1a, 0xee, 0x24, 0x7, 0xf7, 0xd8, 0x4, 0xf2, 0xee, 0x24, 0x6, + 0xe, 0xa0, 0x76, 0xf9, 0xa, 0xdc, 0x1, 0xf7, 0x23, 0xe9, 0x3, 0xf7, + 0x23, 0x16, 0xe9, 0x6, 0xa2, 0xf7, 0xcc, 0xf7, 0x54, 0xf7, 0x85, 0xd2, + 0xd2, 0x8, 0xcb, 0xfc, 0x7a, 0x3a, 0xf8, 0x3, 0x7, 0xfb, 0x3b, 0xfb, + 0x46, 0x2f, 0xfb, 0x9e, 0x89, 0xfb, 0x37, 0x8, 0xe, 0x78, 0xd2, 0xf7, + 0xd8, 0xd7, 0xf7, 0x48, 0xd2, 0x1, 0xc4, 0xf3, 0xf7, 0x9d, 0xe7, 0x3, + 0xf7, 0x14, 0xf7, 0xfa, 0x15, 0xf7, 0x4, 0xb3, 0xf7, 0x36, 0xf7, 0xd, + 0xed, 0xa3, 0x36, 0x70, 0x91, 0x1e, 0xe5, 0x93, 0x5, 0xf7, 0x1b, 0x78, + 0xfb, 0x6, 0xb3, 0x36, 0x1b, 0xfb, 0x88, 0x84, 0xfb, 0xb4, 0x30, 0xfb, + 0x43, 0xb6, 0xfb, 0x3c, 0xf7, 0x64, 0xf7, 0x2d, 0xd7, 0xf7, 0xa, 0xf7, + 0xa, 0xf7, 0x20, 0xfb, 0x6, 0xea, 0xfb, 0x7, 0x40, 0x5d, 0x69, 0x4f, + 0x65, 0x1f, 0x97, 0xfb, 0x1c, 0x15, 0xf1, 0xd8, 0xbf, 0xd1, 0xe3, 0xbc, + 0x45, 0x32, 0x38, 0x5b, 0x39, 0x32, 0x31, 0x52, 0xdc, 0xe4, 0x1e, 0xe, + 0xfc, 0x31, 0x8d, 0x76, 0x1, 0x7a, 0xf7, 0xcc, 0x3, 0x7a, 0x78, 0x15, + 0xd2, 0x6, 0xf7, 0x85, 0xf9, 0x88, 0x5, 0x4c, 0x6, 0xe, 0xfc, 0x31, + 0xe, 0x7b, 0xda, 0x6a, 0xd3, 0xf7, 0x6c, 0xd2, 0xf7, 0x96, 0xd2, 0x12, + 0xe8, 0xe3, 0x67, 0xe7, 0x13, 0x78, 0xac, 0xd0, 0x15, 0xac, 0x37, 0x5, + 0xa7, 0xb5, 0xc4, 0x9c, 0xbb, 0x1b, 0x13, 0xb8, 0xca, 0xe3, 0x5d, 0xc7, + 0x1b, 0xb5, 0xab, 0x98, 0x9c, 0xb4, 0x1f, 0x6f, 0xdb, 0x5, 0x83, 0x7a, + 0x64, 0x74, 0x68, 0x1b, 0x13, 0x74, 0x43, 0x54, 0xb2, 0x41, 0x1b, 0x6d, + 0x73, 0x85, 0x86, 0x7e, 0x1f, 0x89, 0x8d, 0x5, 0xbb, 0xbc, 0xb2, 0xca, + 0xd1, 0x1a, 0xa0, 0x86, 0x95, 0x86, 0x97, 0x1e, 0xf7, 0x1b, 0xd2, 0xfb, + 0x2a, 0x6, 0x13, 0xb8, 0x7e, 0xb1, 0x79, 0xbf, 0xb0, 0x1a, 0xc6, 0xbd, + 0xd3, 0xd8, 0xc9, 0xc2, 0x60, 0x39, 0x95, 0x1e, 0xe1, 0x98, 0x5, 0xf7, + 0x4, 0x84, 0x26, 0xd2, 0x22, 0x1b, 0x20, 0xfb, 0x0, 0x4c, 0xfb, 0x1f, + 0x67, 0x92, 0x6d, 0x9c, 0x4e, 0x1f, 0x42, 0x44, 0xe8, 0x6, 0x13, 0xb4, + 0x8f, 0x7b, 0x8f, 0x7c, 0x6e, 0x1a, 0xfb, 0xc, 0x34, 0x54, 0x72, 0x7d, + 0x1e, 0xe, 0xfc, 0x31, 0x99, 0x76, 0xf8, 0x52, 0xcf, 0xf7, 0x36, 0x77, + 0x1, 0xdc, 0xe3, 0x3, 0xf7, 0x95, 0x8c, 0x15, 0x7f, 0xd9, 0x5, 0x54, + 0x7e, 0x76, 0x93, 0xd4, 0x1a, 0xf7, 0xb8, 0xe3, 0xcf, 0x33, 0xf7, 0x36, + 0x7, 0x33, 0x56, 0x5, 0xfb, 0x1, 0x48, 0x47, 0xce, 0xfb, 0xb8, 0x7, + 0x35, 0x90, 0x47, 0xf7, 0x6, 0xa8, 0x98, 0x90, 0x8e, 0x9a, 0x1e, 0xe, + 0xfb, 0x4e, 0x76, 0xf7, 0x57, 0xd4, 0xf8, 0x20, 0xd4, 0xf7, 0x50, 0x77, + 0x12, 0xc5, 0xda, 0x3c, 0xe3, 0xf7, 0xad, 0xe5, 0x13, 0xf6, 0xf7, 0x26, + 0xc1, 0x15, 0x6c, 0xa8, 0xaf, 0x68, 0xd6, 0x1b, 0xf7, 0x2, 0xf7, 0xd, + 0xdd, 0xf7, 0x4e, 0xf7, 0x25, 0x37, 0xf7, 0x15, 0xfb, 0x27, 0x3c, 0x6d, + 0x6a, 0x6a, 0x6c, 0x1f, 0xf7, 0x92, 0x33, 0xfe, 0x31, 0xe3, 0x7, 0x13, + 0xfa, 0x82, 0xf8, 0x63, 0x15, 0xf7, 0xd, 0xcc, 0xdb, 0xdf, 0xcd, 0xd6, + 0x53, 0xfb, 0x25, 0xfb, 0x3e, 0x32, 0x72, 0x57, 0x4f, 0x32, 0xb2, 0xf7, + 0x30, 0x1e, 0xe, 0x78, 0xd2, 0xf8, 0xd8, 0xd2, 0x1, 0xf8, 0x29, 0xe9, + 0x3, 0xad, 0xf7, 0x47, 0x15, 0x28, 0x95, 0xd8, 0x28, 0xf7, 0x2b, 0x1b, + 0xf7, 0x13, 0xf7, 0xf, 0xdd, 0xf7, 0x1e, 0xd2, 0x4f, 0xf0, 0x3b, 0x1f, + 0x8d, 0x7, 0xe4, 0xb0, 0x99, 0xd2, 0xb0, 0x1a, 0xf1, 0x30, 0xdc, 0xfb, + 0x12, 0x3d, 0xfb, 0xa, 0x6a, 0xfb, 0x2a, 0x6e, 0x1e, 0xe7, 0x7b, 0x5, + 0xd1, 0x96, 0xb3, 0xc5, 0xdf, 0x1b, 0xc5, 0xca, 0x66, 0x40, 0x24, 0xfb, + 0x6, 0x77, 0x57, 0x90, 0x1f, 0x80, 0x3f, 0x5, 0xf4, 0xad, 0xf4, 0x51, + 0x24, 0x1a, 0x38, 0x48, 0x4b, 0x36, 0xfb, 0x9, 0x75, 0xf3, 0xae, 0x84, + 0x1e, 0xe, 0xf7, 0x23, 0x8d, 0x76, 0xdc, 0xbe, 0xf7, 0x77, 0xc2, 0xf7, + 0x6, 0xf7, 0x56, 0x56, 0xc0, 0x12, 0xf7, 0x8f, 0xd7, 0x50, 0xd7, 0xf7, + 0xec, 0xd1, 0x13, 0xf3, 0xf8, 0x89, 0xc9, 0x15, 0xf7, 0x4f, 0x43, 0xd1, + 0xd3, 0xbf, 0xbe, 0x57, 0xf7, 0x78, 0x4f, 0x6, 0xfb, 0x59, 0xfb, 0x71, + 0x5, 0xd6, 0x84, 0x15, 0xf7, 0x4, 0xf7, 0x10, 0x5, 0xfb, 0x10, 0x7, + 0xfd, 0x17, 0xf7, 0xdc, 0x15, 0x51, 0x97, 0xae, 0x60, 0xee, 0x1b, 0xef, + 0xc0, 0xc1, 0xc2, 0xbd, 0x68, 0xa7, 0x5a, 0x96, 0x1f, 0x8d, 0x7, 0x13, + 0xed, 0xbb, 0x97, 0x9e, 0xa3, 0xab, 0x1a, 0xe3, 0xfb, 0x8, 0x92, 0x78, + 0x31, 0x70, 0x68, 0x54, 0x75, 0x1e, 0xd1, 0x80, 0x5, 0xa7, 0x96, 0x99, + 0x9f, 0xb7, 0x1b, 0xb5, 0x9c, 0x77, 0x75, 0x63, 0x59, 0x83, 0x70, 0x1f, + 0x13, 0xf3, 0x81, 0x58, 0x5, 0xc1, 0x8d, 0xbd, 0x7d, 0x5b, 0x1a, 0x65, + 0x69, 0x7b, 0x60, 0x53, 0x7e, 0xae, 0x9d, 0x85, 0x1e, 0xa5, 0xfc, 0x67, + 0x15, 0xd8, 0x6, 0xf8, 0xaf, 0xf9, 0x66, 0x5, 0x3f, 0x6, 0xe, 0xfb, + 0xfa, 0xf7, 0xa2, 0xcd, 0xf7, 0xc4, 0xca, 0x1, 0xf7, 0x76, 0xdc, 0x3, + 0x90, 0xf8, 0x1c, 0x15, 0x46, 0x98, 0xb1, 0x56, 0xf5, 0x1b, 0xf5, 0xc4, + 0xcc, 0xcd, 0xc7, 0x66, 0xac, 0x56, 0x98, 0x1f, 0x8d, 0x7, 0xbf, 0x9a, + 0x9f, 0xa8, 0xb0, 0x1a, 0xf4, 0xfb, 0x11, 0x93, 0x77, 0x2b, 0x6f, 0x62, + 0x49, 0x74, 0x1e, 0xd5, 0x7f, 0x5, 0xab, 0x97, 0x99, 0xa3, 0xba, 0x1b, + 0xb8, 0x9e, 0x73, 0x71, 0x5b, 0x55, 0x82, 0x6f, 0x1f, 0x80, 0x4e, 0x5, + 0xc5, 0x8c, 0xc0, 0x7c, 0x52, 0x1a, 0x5e, 0x67, 0x77, 0x5d, 0x4f, 0x7c, + 0xb6, 0xa0, 0x85, 0x1e, 0xe, 0xfb, 0xfa, 0xf9, 0x37, 0xba, 0x1, 0x87, + 0xf8, 0xf2, 0x15, 0xce, 0x6, 0xbb, 0xad, 0x8b, 0x8f, 0xa0, 0x9f, 0x81, + 0x80, 0x9f, 0x1e, 0x7f, 0xa2, 0xa2, 0x7d, 0xa2, 0x1b, 0xa1, 0xdf, 0x91, + 0xf7, 0x1, 0x1f, 0x49, 0x6, 0x68, 0x87, 0x7c, 0x7f, 0x76, 0x1b, 0x78, + 0x7b, 0x92, 0x94, 0x7c, 0x1f, 0x98, 0x73, 0x74, 0x9c, 0x6a, 0x1b, 0x59, + 0x54, 0x66, 0x3d, 0x1f, 0xe, 0xf7, 0xc9, 0xf7, 0xdb, 0x76, 0xf7, 0xf5, + 0xc6, 0x1, 0xf7, 0x5b, 0xcd, 0xf7, 0x8b, 0xc8, 0xf7, 0xa1, 0xc8, 0x3, + 0xf7, 0x5b, 0xf7, 0xc6, 0x15, 0xcd, 0xf7, 0xf5, 0xf7, 0x2f, 0xc6, 0xfc, + 0xa, 0x50, 0xf7, 0x2d, 0x6, 0xf7, 0xcd, 0xfb, 0xf5, 0x15, 0xc8, 0xf7, + 0xf5, 0x8d, 0x6, 0xf4, 0xfb, 0xf5, 0x5, 0xc7, 0x6, 0xef, 0xf7, 0xf0, + 0x5, 0x8d, 0xfb, 0xf0, 0xc8, 0xf8, 0x30, 0x2b, 0x6, 0x2b, 0xfb, 0xe0, + 0x5, 0x89, 0x6, 0x28, 0xf7, 0xe0, 0x5, 0x29, 0x6, 0xe, 0x8b, 0xde, + 0xf8, 0xbc, 0xd4, 0x1, 0xf8, 0x32, 0xe6, 0x3, 0xa5, 0x16, 0xf8, 0x75, + 0xde, 0xfb, 0xfa, 0x6, 0x97, 0x9e, 0x97, 0xa3, 0xdb, 0xc9, 0x8, 0xf7, + 0x25, 0xf7, 0x4, 0xf6, 0xf5, 0xf1, 0x1a, 0xe1, 0x4c, 0xf7, 0x1, 0xfb, + 0x38, 0xfb, 0xe, 0x2b, 0x49, 0xfb, 0x1c, 0x7d, 0x1e, 0xe6, 0x81, 0x5, + 0xf7, 0x20, 0x8c, 0xf7, 0x11, 0x8a, 0x9a, 0x1b, 0xda, 0xc4, 0x5a, 0x44, + 0x37, 0xfb, 0x0, 0x2d, 0x3d, 0x4f, 0x1f, 0x38, 0x4a, 0xfb, 0xb, 0x2d, + 0xfb, 0x5, 0x1a, 0xe, 0xfb, 0xfa, 0xf7, 0xa0, 0xcd, 0xf7, 0xc7, 0xc9, + 0x1, 0xf7, 0x84, 0xdb, 0x3, 0x8f, 0xf7, 0xad, 0x15, 0xf7, 0xd3, 0xcd, + 0xfb, 0x5d, 0x6, 0x95, 0x96, 0x95, 0x95, 0xc5, 0xbb, 0x8, 0xd3, 0xc4, + 0xbb, 0xa8, 0xd3, 0x1a, 0xf7, 0x4, 0x2b, 0x9c, 0x54, 0xfb, 0x11, 0x77, + 0x38, 0x64, 0x81, 0x1e, 0xd5, 0x83, 0x5, 0xab, 0x95, 0x95, 0xaf, 0xc4, + 0x1b, 0xb6, 0xab, 0x70, 0x63, 0x65, 0x72, 0x78, 0x3d, 0x4b, 0x1f, 0x47, + 0x55, 0x50, 0x53, 0x85, 0x4d, 0x8, 0xe, 0x7c, 0xd7, 0x63, 0x76, 0xf8, + 0x9f, 0x77, 0x4e, 0xa, 0x13, 0x78, 0xf8, 0x2e, 0x16, 0xda, 0xf8, 0x9f, + 0x33, 0xfb, 0xb8, 0x6, 0x13, 0xb8, 0x33, 0x5b, 0x39, 0x30, 0x36, 0x76, + 0xd9, 0xe3, 0x1e, 0xf7, 0xbc, 0x33, 0xfb, 0xda, 0x7, 0xfb, 0x8, 0xca, + 0x2b, 0xf7, 0x17, 0xa4, 0xcc, 0x91, 0xe0, 0xc3, 0x1e, 0x8d, 0x6, 0xe, + 0x79, 0xa, 0xf8, 0xec, 0xf7, 0x1d, 0x34, 0xa, 0xfb, 0x4f, 0xf8, 0xa0, + 0x2f, 0xa, 0xe, 0x79, 0xa, 0xf9, 0x75, 0x77, 0x34, 0xa, 0xfb, 0xb2, + 0xf8, 0xa0, 0x2c, 0xa, 0xe, 0x79, 0xa, 0xf8, 0xf5, 0xef, 0x12, 0xcf, + 0xe3, 0x7e, 0xe5, 0xe6, 0xe5, 0x7e, 0xe3, 0x3c, 0xda, 0x13, 0x71, 0xf8, + 0x2e, 0x88, 0x15, 0xda, 0xf8, 0x9c, 0x6, 0x13, 0xb2, 0x33, 0xfb, 0xa8, + 0x6, 0x32, 0xa, 0x1e, 0x13, 0x69, 0x65, 0xa, 0x1f, 0xfb, 0x9f, 0xf8, + 0xa9, 0x31, 0xa, 0x13, 0xb4, 0xf7, 0x49, 0x72, 0xa, 0x79, 0xa, 0xf8, + 0xec, 0xf7, 0x1d, 0x3d, 0xa, 0x33, 0x6, 0x13, 0xb8, 0xfb, 0xa8, 0x7, + 0x32, 0xa, 0x65, 0xa, 0x1e, 0x13, 0xb4, 0xfb, 0x28, 0xf8, 0xa0, 0x5e, + 0xa, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, 0xc0, 0xbd, 0x7, + 0xe, 0xfb, 0x53, 0x68, 0xa, 0xf7, 0x64, 0x16, 0xdd, 0x6, 0xf7, 0x5e, + 0xf8, 0x9f, 0x5, 0x31, 0x6, 0xfb, 0x2d, 0xfc, 0x38, 0xfb, 0x28, 0xf8, + 0x38, 0x5, 0x2e, 0x6, 0xe, 0xaa, 0x68, 0xa, 0xf7, 0x41, 0x16, 0xe7, + 0x6, 0xe9, 0xf8, 0x28, 0x5, 0x8d, 0x6, 0xf1, 0xfc, 0x28, 0x5, 0xe6, + 0x6, 0xf7, 0x2f, 0xf8, 0x9f, 0x5, 0x35, 0x6, 0xfb, 0x2, 0xfc, 0x28, + 0x5, 0x89, 0x6, 0x25, 0xf8, 0x28, 0x5, 0x31, 0x6, 0x26, 0xfc, 0x33, + 0xfb, 0x5, 0xf8, 0x33, 0x5, 0x30, 0x6, 0xe, 0xfb, 0x53, 0x68, 0xa, + 0x96, 0x16, 0xf4, 0x6, 0xf7, 0x1b, 0xf7, 0x60, 0xf7, 0x18, 0xfb, 0x60, + 0x5, 0xf6, 0x6, 0xfb, 0x52, 0xf7, 0xa6, 0xf7, 0x44, 0xf7, 0x8d, 0x5, + 0x23, 0x6, 0xfb, 0x10, 0xfb, 0x4d, 0xfb, 0x7, 0xf7, 0x4d, 0x5, 0x20, + 0x6, 0xf7, 0x3f, 0xfb, 0x92, 0x5, 0xe, 0xfb, 0x53, 0xfb, 0x6a, 0xdd, + 0xf9, 0x23, 0x77, 0x1, 0xba, 0xfb, 0x10, 0x15, 0x94, 0x3b, 0x55, 0xa, + 0xa4, 0xf7, 0x0, 0xf2, 0xbe, 0x1f, 0xf7, 0x5d, 0xf8, 0xa2, 0x5, 0x32, + 0x6, 0xfb, 0x28, 0xfc, 0x37, 0x5, 0x89, 0x6, 0xfb, 0x24, 0xf8, 0x37, + 0x5, 0x2c, 0x6, 0xf7, 0x58, 0xfc, 0x9a, 0x5, 0x43, 0x71, 0x81, 0x4a, + 0x41, 0x1b, 0x76, 0x7b, 0x8f, 0x8f, 0x7e, 0x1f, 0xe, 0xfb, 0x53, 0xfb, + 0x6a, 0xda, 0xf9, 0x70, 0xf7, 0x1d, 0x1, 0x33, 0xa, 0xf7, 0x27, 0xf9, + 0x62, 0x2f, 0xa, 0xe, 0xfb, 0x53, 0xfb, 0x6a, 0xda, 0xf9, 0x79, 0xef, + 0x1, 0x96, 0xea, 0x94, 0xe5, 0xe6, 0xe5, 0x3, 0x33, 0xa, 0xce, 0xf9, + 0x6b, 0x2e, 0xa, 0xe, 0xa0, 0x76, 0xf7, 0x39, 0xcf, 0xe3, 0xcf, 0xf7, + 0xbf, 0x77, 0x1, 0xf7, 0x7f, 0xe3, 0x3, 0xab, 0xf7, 0x39, 0x15, 0xf7, + 0x5f, 0xfb, 0x39, 0xe3, 0xf7, 0x39, 0xf7, 0x5d, 0xcf, 0xfb, 0x5d, 0xe3, + 0xf7, 0x5d, 0xcf, 0xfb, 0x2f, 0x6, 0xf7, 0x4c, 0xf7, 0xbf, 0x5, 0x23, + 0x6, 0xfb, 0x40, 0xfb, 0xbf, 0xfb, 0x44, 0xf7, 0xbf, 0x5, 0x29, 0x6, + 0xf7, 0x4d, 0xfb, 0xbf, 0x5, 0xfb, 0x30, 0x47, 0xf7, 0x5f, 0x33, 0xfb, + 0x5f, 0x6, 0xe, 0xfb, 0x53, 0x8b, 0xd7, 0xf8, 0xb, 0xd3, 0x63, 0xa, + 0xf8, 0x1a, 0x67, 0xa, 0xfc, 0x10, 0x5, 0xe, 0xfb, 0x53, 0x8b, 0xd7, + 0xf8, 0x6, 0xd3, 0xf7, 0x6c, 0x77, 0x63, 0xa, 0xf8, 0x15, 0x67, 0xa, + 0xfc, 0xb, 0x5, 0xf7, 0x43, 0xf8, 0xa2, 0x37, 0xa, 0x78, 0xd2, 0xf8, + 0xd8, 0xd2, 0x1, 0xbe, 0xe8, 0xf7, 0xa6, 0xe8, 0x3, 0xb1, 0xf7, 0xec, + 0x15, 0x37, 0x92, 0xfb, 0xab, 0xf7, 0x7e, 0xf7, 0x7d, 0x91, 0xf7, 0xb3, + 0xd7, 0xd9, 0x88, 0xf7, 0xad, 0xfb, 0x81, 0xfb, 0x71, 0x78, 0xfb, 0xaf, + 0x3f, 0x1e, 0xe7, 0x16, 0xf7, 0x21, 0xa1, 0xf7, 0x27, 0xf7, 0x12, 0xf7, + 0x1c, 0x96, 0xfb, 0x38, 0xfb, 0x10, 0xfb, 0xd, 0x7e, 0xfb, 0x3f, 0xfb, + 0x19, 0xfb, 0x1c, 0x7e, 0xf7, 0x42, 0xf7, 0xa, 0x1e, 0xe, 0x76, 0xa0, + 0xf8, 0x9f, 0x9a, 0xf7, 0x48, 0x9e, 0x6, 0xfb, 0x70, 0x98, 0x7, 0x1e, + 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xd2, 0xa, 0xe2, 0xb, 0xf8, 0xc0, + 0x14, 0xf9, 0x47, 0x15, 0xab, 0x13, 0x0, 0x5b, 0x2, 0x0, 0x1, 0x0, + 0x7, 0x0, 0x68, 0x0, 0x6d, 0x0, 0xbc, 0x0, 0xf0, 0x1, 0x1e, 0x1, + 0x23, 0x1, 0x4c, 0x1, 0x72, 0x1, 0xac, 0x1, 0xd9, 0x1, 0xdf, 0x1, + 0xee, 0x2, 0xb, 0x2, 0x13, 0x2, 0x1c, 0x2, 0x34, 0x2, 0x3a, 0x2, + 0x50, 0x2, 0x84, 0x2, 0x96, 0x2, 0x9f, 0x2, 0xa4, 0x2, 0xb4, 0x2, + 0xb9, 0x2, 0xc0, 0x2, 0xc7, 0x2, 0xee, 0x3, 0xf, 0x3, 0x1d, 0x3, + 0x24, 0x3, 0x2b, 0x3, 0x33, 0x3, 0x3c, 0x3, 0x41, 0x3, 0x4b, 0x3, + 0x54, 0x3, 0x5c, 0x3, 0x62, 0x3, 0x78, 0x3, 0x8e, 0x3, 0x97, 0x3, + 0xa0, 0x3, 0xa5, 0x3, 0xa9, 0x3, 0xbd, 0x3, 0xc4, 0x3, 0xcb, 0x3, + 0xd3, 0x3, 0xdc, 0x3, 0xe4, 0x3, 0xf5, 0x3, 0xff, 0x4, 0x9, 0x4, + 0x13, 0x4, 0x23, 0x4, 0x29, 0x4, 0x2c, 0x4, 0x30, 0x4, 0x3e, 0x4, + 0x4c, 0x4, 0x59, 0x4, 0x5e, 0x4, 0x62, 0x4, 0x6c, 0x4, 0x76, 0x4, + 0x80, 0x4, 0x8c, 0x4, 0x98, 0x4, 0x9e, 0x4, 0xa9, 0x4, 0xb4, 0x4, + 0xbb, 0x4, 0xc5, 0x4, 0xcf, 0x4, 0xd9, 0x4, 0xe3, 0x4, 0xe7, 0x4, + 0xeb, 0x4, 0xf4, 0x4, 0xfd, 0x5, 0x6, 0x5, 0xa, 0x5, 0x11, 0x5, + 0x15, 0x5, 0x1b, 0x5, 0x21, 0x5, 0x27, 0x5, 0x2d, 0x5, 0x32, 0x5, + 0x35, 0x22, 0xa, 0x13, 0xbc, 0x28, 0xa, 0x15, 0x2b, 0xa9, 0x2e, 0xc6, + 0x44, 0x1e, 0x46, 0xc6, 0xd7, 0x5c, 0xf7, 0x7, 0x1b, 0xf7, 0x4f, 0xf7, + 0x2b, 0xf7, 0x1a, 0xf7, 0x86, 0x8e, 0x1f, 0xf6, 0x64, 0xf1, 0x52, 0xcf, + 0x1e, 0xd0, 0x53, 0x32, 0xb2, 0x27, 0x1b, 0x2c, 0x32, 0x6a, 0x4a, 0x52, + 0x1f, 0x53, 0x4a, 0x61, 0x24, 0xfb, 0xb, 0x1a, 0xef, 0x16, 0xc0, 0x9c, + 0xdd, 0xb3, 0xc7, 0x1e, 0xc8, 0xb3, 0xbe, 0xb7, 0xe6, 0x1b, 0xca, 0xcb, + 0x73, 0x58, 0xb3, 0x1f, 0xb4, 0x58, 0xac, 0x3a, 0x2e, 0x1a, 0x85, 0xfb, + 0x61, 0x2b, 0x35, 0xfb, 0x1f, 0x8a, 0x8, 0x40, 0x58, 0xa9, 0xbe, 0x5f, + 0x1f, 0x5f, 0xbf, 0x72, 0xd3, 0xe2, 0x1a, 0xb, 0x24, 0xa, 0x25, 0xa, + 0xb, 0x15, 0x47, 0x9c, 0x45, 0xb2, 0x57, 0x1e, 0x57, 0xb2, 0xbb, 0x67, + 0xde, 0x1b, 0xf7, 0x24, 0xeb, 0xec, 0xf7, 0x49, 0xee, 0x68, 0xcd, 0x5a, + 0xb3, 0x1f, 0xb4, 0x5a, 0x57, 0x9c, 0x54, 0x1b, 0x3c, 0x5b, 0x6d, 0x5b, + 0x63, 0x1f, 0x64, 0x5b, 0x77, 0x4a, 0x43, 0x1a, 0xe5, 0x16, 0xf7, 0x27, + 0x90, 0xd2, 0xb7, 0xc7, 0x1b, 0xd2, 0xd7, 0x56, 0xfb, 0x1e, 0x8e, 0x1f, + 0x62, 0x82, 0x57, 0x73, 0x62, 0x1e, 0x62, 0x73, 0x6d, 0x6c, 0x4c, 0x1b, + 0x51, 0x43, 0xc2, 0xf7, 0x2b, 0x85, 0x1f, 0xb, 0x15, 0x90, 0xa0, 0x91, + 0xa4, 0x9e, 0x9e, 0x8, 0x9f, 0x9e, 0xa0, 0x99, 0xc2, 0x1b, 0xcb, 0xa1, + 0x78, 0x72, 0x9b, 0x1f, 0x9b, 0x73, 0x8a, 0x6a, 0x8a, 0x6f, 0x54, 0x77, + 0x40, 0x85, 0x79, 0x87, 0x8, 0x60, 0x85, 0xfb, 0x2d, 0x78, 0xfb, 0x1d, + 0x1a, 0x33, 0xd9, 0x4b, 0xe8, 0xc3, 0xbb, 0x9b, 0xca, 0xd6, 0x1e, 0xb, + 0x8e, 0x7e, 0x99, 0x73, 0x9a, 0x70, 0x8, 0xe7, 0x6, 0x6e, 0xbd, 0x7e, + 0xad, 0xf7, 0x19, 0x1a, 0xf7, 0xa, 0x7, 0x90, 0xe5, 0x6e, 0xf3, 0xfb, + 0x48, 0x8c, 0x8, 0x2b, 0x60, 0x6f, 0x68, 0x6a, 0x1f, 0x6e, 0x68, 0x87, + 0x64, 0x85, 0x74, 0x8, 0xf7, 0xdb, 0xfb, 0x22, 0x15, 0xb, 0xfc, 0xd0, + 0x21, 0xa, 0xe, 0x99, 0x16, 0xeb, 0x6, 0xd7, 0xf7, 0x77, 0x5, 0xf7, + 0xb2, 0x6, 0xdb, 0xfb, 0x77, 0x5, 0xf1, 0x6, 0xfb, 0xab, 0xf9, 0x7c, + 0x5, 0x2a, 0x6, 0x49, 0xfc, 0x4b, 0x15, 0xf7, 0x4, 0xf7, 0xfd, 0x5, + 0x8c, 0x6, 0xf7, 0xb, 0xfb, 0xfd, 0x5, 0xb, 0x27, 0x85, 0x45, 0x4c, + 0x2a, 0x1b, 0x78, 0x7a, 0x92, 0x9a, 0x7a, 0x1f, 0x7b, 0x9b, 0x84, 0x9c, + 0x9e, 0x1a, 0xae, 0x99, 0x9f, 0xa0, 0x97, 0x1e, 0xa0, 0x97, 0x9d, 0x90, + 0xa6, 0x8f, 0xbd, 0x94, 0xc7, 0x94, 0xb1, 0x9a, 0x8, 0xe, 0x15, 0xf8, + 0x2, 0x6, 0xf7, 0x1c, 0x66, 0xd8, 0x55, 0xb0, 0x1e, 0xb1, 0x55, 0x53, + 0x90, 0x74, 0x1b, 0xfb, 0x38, 0x8a, 0x4c, 0xfb, 0x8, 0x86, 0xfb, 0x32, + 0x8, 0x2d, 0xa, 0x7a, 0x7e, 0x3a, 0x22, 0x1b, 0x38, 0x5d, 0xc3, 0xf7, + 0x10, 0x7e, 0x1f, 0x90, 0xd3, 0x15, 0x96, 0xce, 0xa2, 0xde, 0xf2, 0x8a, + 0xec, 0x8c, 0xab, 0x40, 0x90, 0x40, 0x8, 0xb, 0x41, 0xa, 0xf9, 0x5d, + 0x15, 0xfc, 0x2f, 0x7, 0xfb, 0x13, 0x8f, 0xfb, 0x56, 0xf7, 0xa3, 0xf7, + 0xac, 0x95, 0xf7, 0x76, 0xea, 0x1e, 0xf8, 0x2f, 0x2c, 0xfc, 0x2f, 0x7, + 0xfb, 0x15, 0x78, 0x20, 0xfb, 0x44, 0xfb, 0x48, 0x8b, 0xf7, 0x29, 0xe2, + 0x1e, 0xf8, 0x2f, 0x7, 0xb, 0xaa, 0x78, 0xe0, 0x2a, 0xa, 0xb, 0x15, + 0xef, 0x6, 0xc3, 0xde, 0xc0, 0x38, 0x5, 0xef, 0x6, 0xfb, 0x2, 0x42, + 0xa, 0xb, 0x3b, 0x9f, 0x48, 0xb3, 0x5b, 0x1e, 0x5b, 0xb4, 0xbe, 0x70, + 0xdb, 0x1b, 0xcb, 0xb5, 0x9d, 0xaa, 0xb0, 0x1f, 0xb2, 0xaa, 0xa4, 0xb5, + 0x98, 0xbc, 0x36, 0x96, 0x18, 0x6e, 0xb, 0x31, 0xa, 0xf7, 0x49, 0x27, + 0x31, 0xa, 0xb, 0x4c, 0xa, 0xf7, 0x0, 0xf7, 0x1d, 0x38, 0xa, 0xb, + 0x3, 0xe1, 0x16, 0xf8, 0xa6, 0xe0, 0xfc, 0x47, 0xf7, 0x90, 0xf8, 0x13, + 0xe0, 0xfc, 0x13, 0xf7, 0x79, 0xf8, 0x38, 0xe0, 0xfc, 0x97, 0x6, 0xb, + 0x15, 0xe5, 0xef, 0x31, 0x6, 0xb, 0x33, 0x6d, 0x2f, 0x20, 0x24, 0x86, + 0xdd, 0xe3, 0x1e, 0xf7, 0xb2, 0x33, 0xfb, 0xd4, 0x7, 0xfb, 0x8, 0xcc, + 0x2b, 0xf7, 0x17, 0xb, 0xbb, 0xfb, 0xd, 0x15, 0x94, 0x38, 0x55, 0xa, + 0xa5, 0xec, 0xf2, 0xbe, 0x1f, 0xf7, 0x5b, 0xf8, 0xa2, 0x5, 0x32, 0x6, + 0xfb, 0x27, 0xfc, 0x37, 0x5, 0x89, 0x6, 0xfb, 0x25, 0xf8, 0x37, 0x5, + 0x2c, 0x6, 0xf7, 0x59, 0xfc, 0x9a, 0x5, 0x43, 0x71, 0x80, 0x52, 0x41, + 0x1b, 0x76, 0x7c, 0x95, 0x8f, 0x7e, 0x1f, 0xb, 0x3d, 0xa, 0x6, 0x13, + 0xb8, 0x33, 0xfb, 0xa8, 0x6, 0x32, 0xa, 0x1e, 0x13, 0x74, 0x65, 0xa, + 0x1f, 0xb, 0x46, 0xa, 0xf9, 0x4, 0x77, 0x1, 0x27, 0xa, 0xb, 0x6e, + 0xa, 0x30, 0xa, 0xb, 0x15, 0xe8, 0x6, 0xf5, 0x5a, 0xa, 0x27, 0x6, + 0x53, 0x38, 0x56, 0xde, 0x5, 0x27, 0x6, 0xe, 0x5, 0xfb, 0x7, 0x6, + 0xb, 0xa0, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xb, 0xf7, 0x10, 0xf8, 0xe9, + 0x2c, 0xa, 0xb, 0xe3, 0x3, 0xe4, 0x16, 0xe3, 0xf8, 0x56, 0xf0, 0xcf, + 0x26, 0xc0, 0x6, 0xc7, 0xb4, 0xa5, 0xe0, 0x7c, 0x1e, 0x99, 0xd5, 0x5, + 0x94, 0x6f, 0x74, 0x8d, 0x74, 0x1b, 0xfb, 0x3, 0x60, 0x2a, 0x4e, 0x1f, + 0x58, 0x40, 0x47, 0xd6, 0x7, 0xb, 0xb2, 0x86, 0xf7, 0x20, 0xfb, 0x1f, + 0xfb, 0x1a, 0x83, 0xfb, 0x19, 0x5d, 0x1e, 0xd4, 0x16, 0xb1, 0x8a, 0xde, + 0xd1, 0xc4, 0x98, 0x52, 0x4b, 0x5d, 0x84, 0x40, 0x4c, 0x47, 0x8a, 0xd7, + 0xb8, 0x1e, 0xb, 0x4e, 0xa, 0x3c, 0xda, 0x13, 0x74, 0xf8, 0x2e, 0x88, + 0x15, 0xda, 0xf8, 0x9c, 0xb, 0xf7, 0x23, 0xf8, 0xf2, 0x2e, 0xa, 0xb, + 0xf7, 0x73, 0xf8, 0xe9, 0x2f, 0xa, 0xb, 0x7d, 0xda, 0x5f, 0x76, 0xf8, + 0x5e, 0xd3, 0xb, 0x1, 0xda, 0xea, 0xf8, 0xb, 0xea, 0x3, 0xda, 0xb, + 0x5a, 0xa, 0x2e, 0x6, 0xb, 0x73, 0x8b, 0xe0, 0xf7, 0x90, 0xe0, 0xf7, + 0x79, 0xe0, 0xb, 0x39, 0xa, 0xce, 0xe3, 0x3, 0xce, 0x16, 0xe3, 0xb, + 0x1, 0xbc, 0xef, 0xf8, 0x74, 0xef, 0x3, 0xb, 0x5f, 0xa, 0xf7, 0x77, + 0xd9, 0xb, 0x15, 0xe9, 0xf7, 0x6, 0x5d, 0x6, 0x8c, 0xa7, 0x8d, 0xc5, + 0xbe, 0xa0, 0x75, 0xad, 0x18, 0x3b, 0x67, 0x8b, 0x3d, 0x5a, 0x1a, 0xb, + 0x15, 0xb9, 0x6, 0x8a, 0x6f, 0x89, 0x50, 0x58, 0x76, 0xa1, 0x69, 0x18, + 0xdb, 0xaf, 0x8b, 0xda, 0xbc, 0x1a, 0xe6, 0x2d, 0x7, 0xb, 0x12, 0xba, + 0xe9, 0xf7, 0x8d, 0xe3, 0x13, 0x7c, 0xb, 0x7c, 0xd3, 0xf7, 0x48, 0xd3, + 0xf7, 0x29, 0xd3, 0xb, 0xfc, 0x31, 0xa0, 0x76, 0xb, 0x15, 0xd3, 0x6, + 0xb, 0xdb, 0xaf, 0x8b, 0xd9, 0xbc, 0x1a, 0xe7, 0x2d, 0xfb, 0x6, 0xb9, + 0x7, 0x8a, 0x6f, 0x89, 0x51, 0x58, 0x76, 0x8, 0xb, 0x12, 0xcf, 0xe3, + 0xf7, 0x89, 0xe3, 0xb, 0xe2, 0x78, 0xdf, 0xf8, 0xe4, 0xe0, 0xb, 0xfd, + 0x72, 0x15, 0xe3, 0xf8, 0x99, 0x7a, 0xa, 0xfe, 0x35, 0x15, 0xea, 0xf9, + 0x60, 0x2c, 0x6, 0xe, 0xf7, 0x2b, 0x76, 0xf8, 0x29, 0x77, 0x1, 0xb, + 0x9e, 0x1b, 0xa0, 0xd2, 0x91, 0xf5, 0x8f, 0x1f, 0x4b, 0x6, 0x69, 0x87, + 0x80, 0x83, 0x77, 0x1b, 0xb, 0xfb, 0xfa, 0xf8, 0xfa, 0x76, 0xf7, 0x21, + 0x77, 0x1, 0xb, 0x5, 0x87, 0x99, 0x8d, 0x85, 0xa4, 0x1b, 0xf7, 0x7, + 0xb, 0x1f, 0x4b, 0x6, 0x68, 0x87, 0x80, 0x84, 0x77, 0x1b, 0xb, 0xf7, + 0xad, 0x16, 0xea, 0xf7, 0xc3, 0x6, 0xf7, 0xa9, 0xf8, 0x2e, 0x5, 0xfb, + 0x2, 0x6, 0xb, 0x31, 0xa, 0xf7, 0x37, 0x72, 0xa, 0x38, 0xa, 0xe, + 0xf7, 0x1d, 0x5, 0xb, 0xfb, 0x53, 0xa0, 0x76, 0xf8, 0x56, 0xcf, 0xf7, + 0x10, 0xd5, 0x1, 0xe4, 0xe3, 0xb, 0x15, 0xb7, 0x6, 0x9c, 0xf7, 0x1e, + 0x5, 0xf7, 0x9, 0x3e, 0xfb, 0x9, 0x7, 0xb, 0x69, 0x8a, 0xfb, 0x25, + 0xf7, 0x23, 0xf7, 0x23, 0x8c, 0xf7, 0x1a, 0xb8, 0xb, 0x4c, 0xa, 0x4a, + 0x74, 0xa, 0x73, 0xa0, 0x76, 0xb, 0x15, 0xc9, 0x6, 0xf7, 0x2b, 0xf7, + 0x21, 0x38, 0xa, 0xb, 0x4b, 0xa, 0xfa, 0x35, 0x77, 0x1, 0xe5, 0xea, + 0x3, 0xb, 0x4b, 0xa, 0xf9, 0x72, 0x77, 0x1, 0xea, 0xe3, 0x3, 0xb, + 0x1, 0xaa, 0x16, 0xf8, 0x4a, 0xd7, 0xfb, 0xde, 0x6, 0xf7, 0xce, 0xb, + 0x15, 0x5a, 0xb1, 0x63, 0xbc, 0xbc, 0xb3, 0xb3, 0xbc, 0xbc, 0x63, 0xb, + 0xa6, 0xc7, 0x8e, 0xe0, 0xc6, 0xb, 0xfb, 0x4e, 0x76, 0xf7, 0x5e, 0xd3, + 0xf8, 0x26, 0xd0, 0x1, 0xb, 0x5, 0xc4, 0xfc, 0x28, 0x43, 0xf7, 0xb7, + 0x7, 0xfb, 0xc9, 0xb, 0xa0, 0x76, 0xf8, 0x9f, 0x77, 0x1, 0xb, 0xfc, + 0x31, 0xfb, 0x58, 0xd4, 0xf9, 0x98, 0xd4, 0x12, 0xb, 0x1, 0xa2, 0x16, + 0xf8, 0xc9, 0xe0, 0xfc, 0x5c, 0x6, 0xb, 0x15, 0xcc, 0x6, 0xba, 0x8a, + 0xad, 0x8b, 0x8f, 0x1b, 0xb, 0x3c, 0x96, 0x1e, 0xe1, 0x97, 0x5, 0xb3, + 0x84, 0x7a, 0xb, 0xe3, 0xec, 0x7a, 0xa, 0x1, 0xe1, 0xea, 0xb, 0xa0, + 0x76, 0xf8, 0x62, 0xd7, 0x12, 0xcc, 0xe3, 0xb, 0xfb, 0xfa, 0xfb, 0x4e, + 0x76, 0xfa, 0x40, 0x77, 0xb, 0x20, 0xab, 0x76, 0xf8, 0x78, 0x77, 0x1, + 0xbb, 0xb, 0x27, 0x31, 0xa, 0xe, 0x5a, 0x58, 0x68, 0x3e, 0x8c, 0x1f, + 0xe, 0xf7, 0x1d, 0x59, 0xa, 0xf7, 0x5, 0x8a, 0x77, 0x12, 0xb, 0x7d, + 0xd3, 0xf8, 0x2a, 0xd3, 0xb, 0xb8, 0xe5, 0xf7, 0xb2, 0xe5, 0xb, 0xf7, + 0x54, 0xd9, 0xfb, 0x54, 0xb, 0x7c, 0xd7, 0x60, 0x76, 0xb, 0x33, 0x6, + 0xe}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSansBold.cpp b/core/fxge/fontdata/chromefontdata/FoxitSansBold.cpp new file mode 100644 index 0000000000..10a63a53c6 --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSansBold.cpp @@ -0,0 +1,1371 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSansBoldFontData[16344] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x12, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x4f, 0x54, 0x46, 0x2d, 0x42, 0x6f, + 0x6c, 0x64, 0x0, 0x1, 0x1, 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, 0x1c, + 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x14, 0x4, 0xfb, 0x3e, + 0xfb, 0x78, 0xfa, 0x7e, 0xfa, 0x56, 0x5, 0xf7, 0x2f, 0xf, 0xf8, 0x8f, + 0x11, 0xb5, 0x1c, 0x39, 0x77, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, + 0x42, 0x50, 0x45, 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x4f, + 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x43, 0x68, 0x72, 0x6F, 0x6D, + 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x1, + 0x0, 0x1, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x86, 0x2, + 0x0, 0x91, 0x0, 0x0, 0x63, 0x0, 0x0, 0x6d, 0x1, 0x0, 0x8c, 0x0, + 0x0, 0x92, 0x0, 0x0, 0xc7, 0x0, 0x0, 0xe4, 0x0, 0x0, 0x2, 0x5, + 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x1d, + 0x1, 0x87, 0x0, 0x0, 0x75, 0x0, 0x0, 0x65, 0x0, 0x0, 0x76, 0x0, + 0x0, 0x79, 0x0, 0x0, 0x70, 0x1, 0x0, 0x7e, 0x0, 0x0, 0x7a, 0x0, + 0x0, 0xc0, 0x0, 0x0, 0x6b, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x41, 0x0, + 0x0, 0x8, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x74, 0x0, + 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x99, 0x0, + 0x0, 0xdd, 0x0, 0x0, 0x6c, 0x0, 0x0, 0x94, 0x0, 0x0, 0xc6, 0x0, + 0x0, 0x60, 0x2, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, + 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, + 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa6, 0x0, 0x0, 0xa5, 0x0, + 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, 0x0, + 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, 0x0, + 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, 0x0, + 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, 0x0, + 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, 0x0, + 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, 0x0, + 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, 0x2, + 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, 0x1, + 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, 0x0, + 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, 0x0, + 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, 0x0, + 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, + 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, + 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, + 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, + 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, + 0x0, 0xe3, 0x0, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, 0x7, + 0x0, 0x2c, 0x0, 0x41, 0x0, 0x75, 0x0, 0x84, 0x0, 0xb3, 0x0, 0xce, + 0x0, 0xd9, 0x0, 0xf1, 0x1, 0x30, 0x1, 0x6b, 0x1, 0x9a, 0x1, 0xc3, + 0x1, 0xf1, 0x2, 0x32, 0x2, 0x5e, 0x2, 0x8a, 0x2, 0xed, 0x3, 0x76, + 0x4, 0x7, 0x4, 0xa5, 0x4, 0xc4, 0x4, 0xfb, 0x5, 0x33, 0x5, 0x66, + 0x5, 0x8c, 0x5, 0xbb, 0x5, 0xcc, 0x5, 0xdf, 0x5, 0xf5, 0x6, 0x3f, + 0x6, 0x69, 0x6, 0xbc, 0x7, 0x1e, 0x7, 0x55, 0x7, 0xa7, 0x8, 0xa, + 0x8, 0x3e, 0x8, 0xaf, 0x9, 0x14, 0x9, 0x34, 0x9, 0x6d, 0x9, 0x8c, + 0x9, 0xab, 0x9, 0xc9, 0xa, 0x2e, 0xa, 0xda, 0xb, 0xd, 0xb, 0x6c, + 0xb, 0xbc, 0xb, 0xfb, 0xc, 0x24, 0xc, 0x48, 0xc, 0xc3, 0xc, 0xef, + 0xd, 0x2, 0xd, 0x33, 0xd, 0x64, 0xd, 0x78, 0xd, 0xb8, 0xd, 0xdb, + 0xe, 0x52, 0xe, 0x88, 0xf, 0x1a, 0xf, 0x73, 0xf, 0xdc, 0xf, 0xfb, + 0x10, 0x32, 0x10, 0x50, 0x10, 0x93, 0x10, 0xc5, 0x10, 0xdf, 0x10, 0xf9, + 0x11, 0x13, 0x11, 0x2a, 0x11, 0x44, 0x11, 0x65, 0x11, 0x72, 0x11, 0x88, + 0x11, 0xed, 0x12, 0x48, 0x12, 0x92, 0x12, 0xed, 0x13, 0x43, 0x13, 0x79, + 0x13, 0xe7, 0x14, 0x23, 0x14, 0x3c, 0x14, 0x80, 0x14, 0xaf, 0x14, 0xba, + 0x15, 0x19, 0x15, 0x58, 0x15, 0xa2, 0x15, 0xef, 0x16, 0x43, 0x16, 0x82, + 0x16, 0xe4, 0x17, 0x1e, 0x17, 0x60, 0x17, 0x85, 0x17, 0xc1, 0x17, 0xf3, + 0x18, 0x22, 0x18, 0x48, 0x18, 0x8c, 0x18, 0xa4, 0x18, 0xea, 0x19, 0x2c, + 0x19, 0xa7, 0x19, 0xcf, 0x1a, 0x33, 0x1a, 0x70, 0x1a, 0xa3, 0x1a, 0xcd, + 0x1b, 0x5, 0x1b, 0x19, 0x1b, 0xcf, 0x1c, 0x49, 0x1c, 0x5f, 0x1c, 0xda, + 0x1d, 0x5, 0x1d, 0x2e, 0x1d, 0x7f, 0x1d, 0xb8, 0x1d, 0xdb, 0x1d, 0xea, + 0x1d, 0xfa, 0x1e, 0x3e, 0x1e, 0x8c, 0x1f, 0x4, 0x1f, 0x19, 0x1f, 0xaf, + 0x1f, 0xda, 0x20, 0xa, 0x20, 0x88, 0x21, 0x14, 0x21, 0x8e, 0x21, 0xd3, + 0x21, 0xf2, 0x22, 0x9b, 0x22, 0xab, 0x23, 0x1b, 0x23, 0x95, 0x23, 0xa3, + 0x23, 0xbd, 0x23, 0xcf, 0x24, 0x4d, 0x24, 0x60, 0x24, 0x99, 0x24, 0xc7, + 0x25, 0x9, 0x25, 0x61, 0x25, 0x74, 0x25, 0xba, 0x25, 0xec, 0x26, 0x4, + 0x26, 0x3b, 0x26, 0x61, 0x26, 0xa4, 0x26, 0xb1, 0x27, 0x19, 0x27, 0x96, + 0x28, 0x2f, 0x28, 0x85, 0x28, 0x9d, 0x28, 0xb6, 0x28, 0xd5, 0x29, 0x1b, + 0x29, 0x3d, 0x29, 0x71, 0x29, 0xb8, 0x2a, 0x49, 0x2a, 0x59, 0x2a, 0x6a, + 0x2a, 0x91, 0x2a, 0xb8, 0x2a, 0xcd, 0x2a, 0xe1, 0x2a, 0xfc, 0x2b, 0x15, + 0x2b, 0x63, 0x2b, 0xbb, 0x2b, 0xe9, 0x2c, 0xd, 0x2c, 0x3a, 0x2c, 0x87, + 0x2c, 0xaf, 0x2c, 0xdf, 0x2d, 0x5f, 0x2d, 0x7c, 0x2d, 0x98, 0x2d, 0xbf, + 0x2d, 0xea, 0x2e, 0x1a, 0x2e, 0x5d, 0x2e, 0xcc, 0x2e, 0xe3, 0x2e, 0xfa, + 0x2f, 0x1b, 0x2f, 0x77, 0x2f, 0x9f, 0x2f, 0xe5, 0x30, 0x8f, 0x31, 0x1c, + 0x31, 0x36, 0x31, 0x51, 0x31, 0x73, 0x31, 0x97, 0x31, 0xae, 0x31, 0xc5, + 0x31, 0xe4, 0x32, 0x3, 0x32, 0x7c, 0x32, 0xf4, 0x33, 0x11, 0x33, 0x24, + 0x33, 0x42, 0x33, 0x80, 0x33, 0xa8, 0x33, 0xd7, 0x34, 0x55, 0x34, 0x6b, + 0x34, 0x81, 0x34, 0xa8, 0x34, 0xd6, 0x35, 0x13, 0x35, 0x67, 0x35, 0xac, + 0xfc, 0x15, 0xe, 0xfc, 0x15, 0xe, 0xf8, 0xf0, 0xcb, 0xdd, 0x77, 0x1, + 0x89, 0xf9, 0x82, 0x15, 0x22, 0x95, 0xd9, 0x62, 0xdb, 0x1b, 0xda, 0xdb, + 0xb3, 0xf5, 0x95, 0x1f, 0x4b, 0x6, 0x78, 0x8a, 0x7b, 0x4c, 0x33, 0x1b, + 0x4a, 0x6a, 0xb2, 0xb6, 0x85, 0x1f, 0xe, 0xf8, 0xfa, 0xf7, 0x7, 0x1, + 0xf3, 0xf7, 0x12, 0x3, 0xf3, 0xf8, 0xfa, 0x15, 0xf7, 0x12, 0xf7, 0x7, + 0xfb, 0x12, 0x6, 0xe, 0xf8, 0xcc, 0xc4, 0xe9, 0xc4, 0x1, 0xc6, 0xc6, + 0xed, 0xc6, 0x3, 0xc6, 0xf9, 0x35, 0x15, 0x51, 0xbc, 0x5c, 0xc7, 0xc4, + 0xbd, 0xb8, 0xc7, 0xc6, 0x5a, 0xb7, 0x51, 0x4d, 0x5c, 0x5e, 0x51, 0x1e, + 0xc6, 0x16, 0xa5, 0xa0, 0x9f, 0xa8, 0xa5, 0xa1, 0x78, 0x70, 0x70, 0x75, + 0x76, 0x71, 0x6f, 0x75, 0xa0, 0xa6, 0x1e, 0xe, 0xf8, 0xf0, 0x84, 0xa, + 0x94, 0xf8, 0xf0, 0x6b, 0xa, 0xef, 0xfb, 0x26, 0x6b, 0xa, 0xe, 0xfb, + 0x78, 0xd8, 0xf7, 0x2b, 0x77, 0x1, 0xd2, 0xe2, 0x3, 0xe5, 0x16, 0x80, + 0x61, 0x83, 0x6a, 0x67, 0x1a, 0x35, 0xdd, 0x6c, 0xcc, 0x9c, 0xa5, 0x8e, + 0x9c, 0xb6, 0x1e, 0xd0, 0x7, 0x87, 0x80, 0x61, 0x83, 0x6a, 0x1b, 0x53, + 0x87, 0xac, 0xb8, 0xa3, 0x8e, 0xa7, 0x93, 0xa0, 0x1f, 0xe, 0xf8, 0xf0, + 0xd1, 0x1, 0xed, 0xf8, 0xf0, 0x15, 0xf7, 0x1b, 0x6, 0xf7, 0x2, 0x83, + 0xa, 0xfb, 0xa, 0x6, 0x52, 0x3f, 0x4e, 0xd7, 0x5, 0xfb, 0x9, 0x6, + 0xe, 0xfc, 0x15, 0x73, 0xa, 0xd3, 0x63, 0xa, 0xf8, 0xa8, 0x6d, 0xa, + 0xfc, 0x84, 0x8d, 0x76, 0xf9, 0x6d, 0x77, 0x1, 0x2f, 0x78, 0x15, 0xf8, + 0x40, 0xf9, 0x6d, 0x5, 0x3d, 0x6, 0xfc, 0x40, 0xfd, 0x6d, 0x5, 0xe, + 0x57, 0x76, 0xa, 0xd2, 0xf7, 0x13, 0x1, 0xe2, 0xf7, 0x20, 0xf7, 0x43, + 0x7d, 0xa, 0xe2, 0x16, 0xf7, 0x20, 0xf8, 0x2c, 0xf4, 0xf7, 0x1, 0x22, + 0x6, 0xf4, 0xc5, 0x96, 0xca, 0x78, 0x1e, 0x9f, 0xeb, 0x5, 0x98, 0x5f, + 0x73, 0x8f, 0x6f, 0x1b, 0xfb, 0x37, 0x6f, 0xa, 0xf7, 0xcf, 0xfc, 0x2c, + 0x15, 0xf7, 0x20, 0xf8, 0x99, 0x68, 0xa, 0xd2, 0x4, 0xf7, 0x20, 0xf7, + 0x13, 0x6d, 0xa, 0x57, 0x76, 0xa, 0xf7, 0x66, 0x77, 0x1, 0xe2, 0xf7, + 0x20, 0xf7, 0x44, 0xf7, 0x1f, 0x3, 0xf8, 0x27, 0x16, 0xf7, 0x1f, 0xf9, + 0x5f, 0xfb, 0x1f, 0x6, 0xfb, 0xd0, 0xfd, 0x5f, 0x15, 0xf7, 0x20, 0xf8, + 0x2c, 0xf3, 0xf7, 0x1, 0x23, 0x6, 0xdf, 0xb1, 0xab, 0xde, 0x78, 0x1e, + 0x9e, 0xeb, 0x5, 0x98, 0x5f, 0x74, 0x8f, 0x6e, 0x1b, 0xfb, 0x36, 0x6f, + 0xa, 0xe, 0x86, 0xa, 0xa7, 0xf7, 0x16, 0x3, 0xc6, 0x16, 0xf8, 0xa0, + 0xf7, 0xe, 0xfc, 0x1e, 0xf7, 0x7c, 0x6, 0xf7, 0x3b, 0xf7, 0x1a, 0x5, + 0xf7, 0xc, 0x7, 0xfb, 0x3b, 0xfb, 0x1c, 0x5, 0xf7, 0x8a, 0xfb, 0x16, + 0xfb, 0xf9, 0x7, 0x3c, 0x4a, 0x5, 0xfb, 0x9, 0x7, 0xda, 0xcb, 0x5, + 0xe, 0xfc, 0x15, 0x3f, 0xa, 0xd1, 0xf7, 0xa, 0x3, 0xd1, 0x16, 0xf7, + 0xa, 0xf7, 0xfa, 0x6, 0xf7, 0x0, 0xd8, 0x5, 0xe9, 0x7, 0xfb, 0x0, + 0x3d, 0x5, 0xf7, 0x9f, 0xfb, 0xa, 0xfb, 0xf6, 0x7, 0x33, 0x48, 0x5, + 0x2d, 0x7, 0xe3, 0xcf, 0x5, 0xe, 0x57, 0x8b, 0xf7, 0xd, 0xf8, 0x6e, + 0x82, 0xa, 0xa4, 0x16, 0xf8, 0xc5, 0xf7, 0xd, 0x87, 0xa, 0xf7, 0x5, + 0xfc, 0x8e, 0xfb, 0xd, 0x8c, 0xa, 0xf7, 0x6e, 0xf9, 0x2d, 0x15, 0xf7, + 0xf, 0x6, 0xee, 0xf7, 0x21, 0x5, 0x20, 0x6, 0x58, 0x42, 0x54, 0xd4, + 0x5, 0x21, 0x6, 0xe, 0xfb, 0x37, 0x8b, 0xf7, 0xd, 0xf7, 0xaf, 0xf7, + 0x6, 0xe5, 0xf7, 0x22, 0x1, 0x9f, 0x16, 0xf8, 0x60, 0xf7, 0xd, 0xfb, + 0xad, 0x6, 0xf7, 0x9d, 0xf7, 0xc0, 0x5, 0xec, 0xfc, 0x3d, 0xfb, 0x6, + 0x7, 0xf7, 0x88, 0x8c, 0xfb, 0x9b, 0xfb, 0xbe, 0x5, 0xf7, 0x3b, 0xf8, + 0x89, 0x15, 0xf7, 0x12, 0x6, 0xf1, 0xf7, 0x22, 0x5, 0xfb, 0x2, 0x6, + 0x56, 0x42, 0x53, 0xd4, 0x5, 0xfb, 0x1, 0x6, 0xe, 0x8b, 0xf7, 0x1d, + 0xf8, 0xd9, 0x77, 0x12, 0xe5, 0xf7, 0x28, 0xfb, 0x28, 0xf7, 0x2e, 0x13, + 0xe0, 0xe8, 0x16, 0xf7, 0x25, 0xf7, 0x1d, 0xfb, 0x25, 0x6, 0xab, 0xbc, + 0x15, 0xdd, 0x6, 0x13, 0xd0, 0xb0, 0xf8, 0x0, 0x5, 0xf7, 0x3c, 0xfb, + 0x2e, 0xfb, 0x3c, 0x7, 0xe, 0xfb, 0x51, 0xf8, 0x68, 0x76, 0xf7, 0xa3, + 0x77, 0x1, 0xf7, 0xb3, 0xf8, 0x53, 0x15, 0xd3, 0x6, 0x9c, 0x67, 0xa, + 0xf7, 0x14, 0xfb, 0x1, 0xfb, 0x14, 0x7, 0xfb, 0x2a, 0xfb, 0x23, 0x15, + 0xd4, 0x6, 0x9b, 0x67, 0xa, 0xf7, 0x14, 0xfb, 0x0, 0xfb, 0x14, 0x7, + 0xe, 0x20, 0xa0, 0x76, 0xf7, 0x47, 0xf2, 0xf7, 0x1c, 0xf2, 0xf7, 0x45, + 0x77, 0x1, 0xb8, 0x16, 0xf6, 0x6, 0xb0, 0xf7, 0x47, 0x5, 0xf4, 0x6, + 0x67, 0xfb, 0x47, 0x5, 0xf4, 0x6, 0xb1, 0xf7, 0x47, 0x5, 0xf7, 0x1d, + 0xf2, 0xfb, 0x7, 0x6, 0xa7, 0xf7, 0x1c, 0x5, 0xe2, 0xf2, 0x49, 0x6, + 0xb1, 0xf7, 0x45, 0x5, 0xfb, 0x2, 0x6, 0x66, 0xfb, 0x45, 0x5, 0x24, + 0x6, 0xaf, 0xf7, 0x45, 0x5, 0x22, 0x6, 0x65, 0xfb, 0x45, 0x5, 0xfb, + 0x1b, 0x24, 0xf7, 0x6, 0x6, 0x6e, 0xfb, 0x1c, 0x5, 0x36, 0x24, 0xcb, + 0x6, 0xf7, 0x14, 0xf2, 0x15, 0xa7, 0xf7, 0x1c, 0x5, 0xf4, 0x6, 0x6f, + 0xfb, 0x1c, 0x5, 0xe, 0x20, 0x2d, 0x76, 0xfa, 0xe, 0x77, 0x12, 0xf7, + 0x85, 0xd4, 0xdf, 0xf7, 0x11, 0x17, 0xa9, 0xf7, 0x54, 0x15, 0x9b, 0x24, + 0xc2, 0x2a, 0xf7, 0x20, 0x7b, 0x8, 0x30, 0xd4, 0xe8, 0x7, 0xf7, 0x44, + 0xa4, 0xac, 0xf7, 0x7, 0xd0, 0x1a, 0xf7, 0x34, 0xfb, 0x19, 0xc0, 0x3f, + 0xa0, 0x1e, 0xf7, 0x56, 0x7, 0xbb, 0x77, 0x94, 0x62, 0x8e, 0x79, 0xf7, + 0x13, 0x9b, 0x18, 0x71, 0xf7, 0x2e, 0xfb, 0x13, 0x9a, 0x69, 0x8f, 0x8, + 0x13, 0x70, 0xbd, 0x7, 0x42, 0x59, 0x6, 0x24, 0x81, 0x34, 0x46, 0xfb, + 0xe, 0x1a, 0xfb, 0x32, 0xf7, 0x17, 0x5c, 0xc6, 0x7b, 0x1e, 0xfb, 0x64, + 0x7, 0x74, 0x96, 0x60, 0xab, 0x7e, 0xcf, 0x8, 0xf7, 0x2c, 0xfb, 0xa, + 0x15, 0xf7, 0x56, 0x7, 0xa1, 0x85, 0xc9, 0x79, 0x44, 0x1a, 0x60, 0x6f, + 0x5d, 0x53, 0x81, 0x1e, 0x42, 0xf7, 0xf9, 0x15, 0x4a, 0xa7, 0x8a, 0xb5, + 0x94, 0x1a, 0xad, 0xa1, 0xb7, 0xb7, 0x99, 0x1e, 0xe, 0xf7, 0x76, 0x78, + 0xd5, 0xf7, 0x69, 0xd5, 0x90, 0xd5, 0xf7, 0x69, 0xd5, 0x8d, 0x77, 0x12, + 0xa7, 0xf7, 0x4, 0xf3, 0xf7, 0x4, 0xf7, 0x45, 0xf7, 0x4, 0xf3, 0xf7, + 0x4, 0x13, 0xf7, 0x80, 0xf7, 0x20, 0xf8, 0xa4, 0x15, 0xd2, 0x98, 0xae, + 0xb2, 0xb3, 0x97, 0x67, 0x45, 0x42, 0x7f, 0x69, 0x63, 0x63, 0x7f, 0xaf, + 0xd2, 0x1e, 0xfb, 0x4, 0x16, 0x2d, 0xaf, 0x34, 0xf7, 0x14, 0xf7, 0x29, + 0x9a, 0xf7, 0xd, 0xc7, 0xf6, 0x5e, 0xd4, 0xfb, 0xb, 0xfb, 0x28, 0x7b, + 0xfb, 0xd, 0x50, 0x1e, 0xf7, 0x3b, 0xfc, 0xb7, 0x15, 0xf6, 0x6, 0x13, + 0xef, 0x80, 0xf8, 0x1f, 0xf9, 0x6d, 0x5, 0x24, 0x6, 0x4e, 0xfc, 0xba, + 0x15, 0x2d, 0xb0, 0x36, 0xf7, 0x15, 0xf7, 0x27, 0x9a, 0xf7, 0xb, 0xc9, + 0xf6, 0x5e, 0xd4, 0xfb, 0xa, 0xfb, 0x2a, 0x7c, 0xfb, 0xd, 0x4e, 0x1e, + 0xf7, 0x4, 0x8e, 0x15, 0xd3, 0x97, 0xac, 0xb3, 0xb3, 0x97, 0x68, 0x45, + 0x43, 0x7f, 0x67, 0x63, 0x63, 0x7f, 0xb0, 0xd2, 0x1e, 0xe, 0xc6, 0x7e, + 0xf7, 0x4, 0x2a, 0x76, 0xf9, 0x15, 0xeb, 0x12, 0xc1, 0xf7, 0x1e, 0x59, + 0xf7, 0x17, 0x13, 0x68, 0xf8, 0x8e, 0xca, 0x15, 0xa5, 0x72, 0xb5, 0x69, + 0xb9, 0x74, 0xdc, 0xf5, 0x18, 0x75, 0x94, 0x52, 0xb3, 0x6c, 0xa9, 0x9c, + 0xa1, 0x9c, 0xa7, 0xa5, 0xeb, 0xfb, 0xd, 0xa6, 0x18, 0x87, 0x7a, 0x81, + 0x69, 0x7c, 0x6d, 0x29, 0xf7, 0x16, 0x18, 0xda, 0xbe, 0xbc, 0xb8, 0xd4, + 0x1a, 0xe5, 0x42, 0xd2, 0xfb, 0xd, 0xfb, 0xe, 0x42, 0x40, 0x35, 0x57, + 0xa7, 0x5e, 0xb7, 0x59, 0x1e, 0x13, 0xb0, 0x68, 0x79, 0xfb, 0x11, 0x4c, + 0xfb, 0x1c, 0x1a, 0x54, 0xa6, 0xfb, 0x2b, 0xf7, 0x6b, 0xf7, 0x4, 0xc7, + 0xb4, 0xae, 0xb1, 0x1e, 0x36, 0xe5, 0x15, 0x76, 0x71, 0x64, 0x6a, 0x4f, + 0x1b, 0x43, 0x6b, 0xb8, 0xbc, 0xb5, 0xa3, 0xc0, 0xcf, 0xae, 0x1f, 0xbd, + 0xf7, 0x29, 0x15, 0x6c, 0xaf, 0x5, 0x13, 0xa8, 0x89, 0x8e, 0x6f, 0x8f, + 0xb5, 0x1a, 0xa5, 0x9e, 0xb2, 0xb8, 0xbf, 0xa3, 0x66, 0x6f, 0x74, 0x7c, + 0x7e, 0x7a, 0x7d, 0x1e, 0x7a, 0x7c, 0x77, 0x7e, 0x81, 0x84, 0x8, 0xe, + 0xfc, 0x3d, 0xf8, 0x68, 0x76, 0xf7, 0xa3, 0x77, 0x1, 0x7e, 0x85, 0xa, + 0xc3, 0xf8, 0x53, 0x15, 0xf7, 0x8, 0x6, 0x9b, 0xf7, 0x22, 0x5, 0xf7, + 0x15, 0xfb, 0x28, 0xfb, 0x15, 0x7, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, + 0x77, 0x1, 0xae, 0x85, 0xa, 0xf7, 0x63, 0xfb, 0x64, 0x15, 0xf5, 0x6, + 0x61, 0xdb, 0x33, 0xf7, 0x39, 0xf7, 0x73, 0x1a, 0xf7, 0x52, 0xc0, 0xf7, + 0x16, 0xd9, 0xf7, 0x2e, 0x1e, 0x22, 0x6, 0x34, 0xfb, 0x4, 0x34, 0xfb, + 0x39, 0xfb, 0x59, 0x1a, 0xfb, 0x3b, 0xd0, 0xfb, 0x35, 0xf2, 0xfb, 0x20, + 0x1e, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, 0x77, 0x1, 0xf7, 0x29, 0xf7, + 0x29, 0x3, 0x9e, 0xfb, 0x64, 0x15, 0xf4, 0x6, 0xe2, 0xf7, 0x4, 0xe2, + 0xf7, 0x35, 0xf7, 0x59, 0x1a, 0xf7, 0x3b, 0x46, 0xf7, 0x39, 0x24, 0xf7, + 0x20, 0x1e, 0x21, 0x6, 0xb5, 0x3b, 0xe2, 0xfb, 0x3d, 0xfb, 0x73, 0x1a, + 0xfb, 0x52, 0x57, 0xfb, 0x12, 0x3d, 0xfb, 0x2e, 0x1e, 0xe, 0xfb, 0xa6, + 0x4d, 0xa, 0xf7, 0x30, 0xd2, 0x3, 0xf7, 0x13, 0xf8, 0x17, 0x15, 0xcc, + 0xf7, 0x1, 0xc9, 0x21, 0xd1, 0xbb, 0x3a, 0xeb, 0xf7, 0xb, 0xa2, 0x72, + 0xe1, 0xfb, 0x8, 0x57, 0x97, 0xf7, 0x13, 0x5, 0x39, 0x6, 0x96, 0xfb, + 0x12, 0xfb, 0x1, 0xc2, 0x71, 0x38, 0xf7, 0x9, 0x6d, 0x34, 0x2f, 0x5, + 0xe, 0x3c, 0xa0, 0x76, 0xf7, 0x52, 0xf7, 0x15, 0xf7, 0x4f, 0x90, 0xa, + 0xf7, 0x52, 0x15, 0xf7, 0x50, 0xfb, 0x52, 0xf7, 0x13, 0xf7, 0x52, 0xf7, + 0x51, 0xf7, 0x15, 0xfb, 0x51, 0xf7, 0x4f, 0xfb, 0x13, 0xfb, 0x4f, 0xfb, + 0x50, 0x6, 0xe, 0xfc, 0x15, 0xfb, 0x27, 0x76, 0xf7, 0x51, 0x76, 0xf7, + 0x26, 0x77, 0x12, 0xd7, 0xf7, 0x1e, 0x44, 0xd2, 0x13, 0xf0, 0xd7, 0x16, + 0x13, 0xe8, 0xce, 0x6, 0x89, 0x38, 0x58, 0x7c, 0x71, 0x82, 0xa6, 0x4e, + 0x18, 0xf7, 0xf, 0xba, 0x8b, 0xec, 0xcd, 0x1a, 0xf3, 0x7, 0x13, 0xf0, + 0x81, 0xa, 0xf7, 0x6b, 0xf7, 0x16, 0x1, 0xa6, 0xf7, 0x6b, 0x15, 0xf7, + 0xab, 0xf7, 0x16, 0xfb, 0xab, 0x6, 0xe, 0xfc, 0x15, 0x8b, 0x84, 0xa, + 0xcb, 0xf7, 0x2a, 0x3, 0xcb, 0x16, 0xf7, 0x2a, 0xf7, 0x26, 0xfb, 0x2a, + 0x6, 0xe, 0xfc, 0x15, 0x86, 0x76, 0xf9, 0x8f, 0x77, 0x1, 0x76, 0xf7, + 0x11, 0x3, 0x6a, 0x78, 0x15, 0xf7, 0x11, 0x6, 0xf7, 0x6f, 0x93, 0xa, + 0x79, 0xa, 0xf8, 0x89, 0xf7, 0x6, 0x1, 0xab, 0xf7, 0x2c, 0xf7, 0x50, + 0xf7, 0x2c, 0x3, 0xab, 0xf7, 0xf5, 0x15, 0xfb, 0x21, 0xa2, 0xfb, 0x7b, + 0xf7, 0x74, 0xf7, 0x6d, 0xa7, 0xf7, 0x7d, 0xf7, 0x1d, 0xf7, 0x20, 0x72, + 0xf7, 0x6f, 0xfb, 0x72, 0xfb, 0x70, 0x72, 0xfb, 0x6f, 0xfb, 0x1e, 0x1e, + 0xf7, 0x2c, 0x89, 0x15, 0xf7, 0x53, 0xa4, 0xc1, 0xcf, 0xd1, 0xa4, 0x54, + 0xfb, 0x52, 0xfb, 0x52, 0x72, 0x49, 0x45, 0x47, 0x72, 0xcc, 0xf7, 0x53, + 0x1e, 0xe, 0x20, 0xa0, 0x76, 0xf9, 0x5a, 0x77, 0x1, 0xf7, 0x87, 0xf7, + 0x1b, 0x3, 0xf7, 0x87, 0x16, 0xf7, 0x1b, 0xf9, 0x5a, 0xfb, 0x2, 0x6, + 0x61, 0xfb, 0xc, 0xfb, 0x23, 0x56, 0x7d, 0x86, 0x8, 0xfb, 0xe, 0x7, + 0xe1, 0xa7, 0xc5, 0xba, 0xa9, 0xa7, 0x8, 0xe, 0x20, 0x8b, 0xf7, 0x12, + 0xf8, 0x6b, 0xf7, 0x5, 0x1, 0xb5, 0xf7, 0x1e, 0xf7, 0x55, 0xf7, 0x1e, + 0x3, 0xa5, 0x16, 0xf8, 0x79, 0xf7, 0x12, 0xfb, 0xa7, 0x6, 0x9e, 0xab, + 0xa2, 0xa0, 0xd2, 0xcb, 0x8, 0xd1, 0xca, 0xe7, 0xd5, 0xf7, 0x10, 0x1a, + 0xe3, 0x4a, 0xf7, 0xa, 0xfb, 0x3b, 0xfb, 0x17, 0x21, 0x2d, 0xfb, 0x7, + 0x1e, 0xf7, 0x1e, 0x7d, 0x5, 0xd3, 0x90, 0xa9, 0xb1, 0xcb, 0x1b, 0xc8, + 0xac, 0x63, 0x56, 0x43, 0x5b, 0x64, 0x2b, 0x33, 0x1f, 0xfb, 0x1e, 0xfb, + 0x12, 0x55, 0x41, 0x80, 0x22, 0x8, 0xe, 0x79, 0xa, 0xf8, 0x83, 0xf7, + 0x6, 0x1, 0xf7, 0xe6, 0xf7, 0x25, 0x3, 0xa6, 0xf7, 0x4a, 0x15, 0x25, + 0x97, 0xda, 0x28, 0xf7, 0x2a, 0x1b, 0xf7, 0x1d, 0xf7, 0x3, 0xeb, 0xf7, + 0x16, 0xe1, 0x56, 0xcd, 0x35, 0x9c, 0x1f, 0x8d, 0x7, 0xa5, 0x97, 0xda, + 0xae, 0xe9, 0x1a, 0xdf, 0x3b, 0xf6, 0xfb, 0x22, 0xfb, 0x4f, 0x72, 0xfb, + 0x22, 0x5f, 0x80, 0x1e, 0xf7, 0x17, 0x75, 0x5, 0xd4, 0x94, 0xb9, 0xa0, + 0xb0, 0x1b, 0xbd, 0xaa, 0x6c, 0x5d, 0x43, 0x4c, 0x75, 0x55, 0x8c, 0x1f, + 0x7c, 0xfb, 0x3, 0x5, 0xdd, 0xad, 0xdb, 0x56, 0x32, 0x1a, 0x55, 0x6c, + 0x51, 0x43, 0x48, 0x6c, 0xc0, 0xbd, 0x85, 0x1e, 0xe, 0x20, 0xa0, 0x76, + 0xf7, 0x23, 0xf7, 0xc, 0xf8, 0x53, 0x77, 0x1, 0xf7, 0xcc, 0xf7, 0x14, + 0x3, 0xa6, 0xf7, 0x23, 0x15, 0xf7, 0xb1, 0xfb, 0x23, 0xf7, 0x14, 0xf7, + 0x23, 0xe1, 0xf7, 0xc, 0x35, 0xf8, 0x53, 0x7c, 0xa, 0xfb, 0xc1, 0xfc, + 0x54, 0x5, 0xf7, 0x11, 0x8c, 0x15, 0xf7, 0x32, 0xf7, 0x86, 0x5, 0x8d, + 0xfb, 0x86, 0x6, 0xe, 0x79, 0xa, 0xf8, 0x7f, 0xf7, 0x11, 0x1, 0xf8, + 0x3f, 0xf7, 0x23, 0x3, 0xa6, 0xf7, 0x48, 0x15, 0xfb, 0x11, 0x9b, 0xec, + 0x41, 0xf7, 0x13, 0x1b, 0xf7, 0x3e, 0xda, 0xf7, 0x1e, 0xf7, 0x7, 0x1f, + 0x8a, 0xf7, 0x5e, 0xfb, 0x38, 0xe8, 0xfb, 0x2c, 0x46, 0xa1, 0xf7, 0x19, + 0x18, 0xf7, 0x9b, 0xf7, 0x11, 0xfc, 0x5, 0x6, 0x44, 0xfc, 0x11, 0xf7, + 0x5, 0x7b, 0xbb, 0xbf, 0xc1, 0x96, 0xb4, 0x7a, 0x19, 0xb6, 0x7a, 0xa9, + 0x53, 0x4f, 0x1a, 0x23, 0x54, 0x68, 0x58, 0x5c, 0x60, 0xa6, 0xd3, 0x80, + 0x1e, 0xe, 0x79, 0xa, 0xf7, 0x99, 0xef, 0xf7, 0x20, 0xf7, 0x6, 0x1, + 0xaa, 0xf7, 0x31, 0x3, 0xf7, 0x44, 0xf8, 0x23, 0x15, 0xd5, 0x90, 0x96, + 0xf7, 0xf, 0xee, 0x1b, 0xd2, 0x92, 0x4d, 0x7b, 0x8d, 0x1f, 0xf7, 0x1b, + 0x99, 0x5, 0xf6, 0x77, 0x3f, 0xd2, 0xfb, 0xb, 0x1b, 0xfb, 0x8a, 0x7d, + 0xfb, 0xc4, 0x4a, 0xfb, 0x4d, 0xe6, 0xfb, 0x43, 0xf7, 0x3d, 0xf7, 0x20, + 0xe4, 0xee, 0xf7, 0x22, 0xf7, 0x22, 0xfb, 0x6, 0xe7, 0xfb, 0x7, 0x52, + 0x5e, 0x6f, 0x6e, 0x7e, 0x1f, 0x97, 0xfb, 0x45, 0x15, 0xf7, 0x7, 0xdf, + 0x9e, 0x9e, 0xec, 0x85, 0xfb, 0x9, 0x7a, 0x77, 0x8a, 0x20, 0x31, 0x48, + 0x67, 0xc4, 0xd1, 0x1e, 0xe, 0x20, 0xa0, 0x76, 0xf8, 0xe1, 0xf7, 0x10, + 0x12, 0xf7, 0x14, 0xf7, 0x22, 0x17, 0xf7, 0x14, 0x16, 0xf7, 0x22, 0x6, + 0x13, 0xe0, 0xf7, 0x6e, 0xf7, 0x12, 0xf7, 0x9c, 0xf7, 0x18, 0xf7, 0xd, + 0x1e, 0xea, 0xfc, 0x8b, 0xfb, 0x10, 0xf7, 0xe3, 0x7, 0xfb, 0xb, 0xfb, + 0x1d, 0xfb, 0x5, 0xfb, 0x6f, 0xfb, 0x6e, 0x1a, 0xe, 0x20, 0x78, 0xf7, + 0x2, 0xf8, 0x8d, 0xf7, 0x2, 0x1, 0xab, 0xf7, 0x23, 0xf7, 0x62, 0xf7, + 0x23, 0x3, 0xf7, 0x31, 0xf8, 0xe, 0x15, 0x3b, 0x6a, 0x5e, 0x57, 0x36, + 0x1a, 0xfb, 0x21, 0xf7, 0x4, 0x35, 0xf7, 0x18, 0xf7, 0x1e, 0xf7, 0x2, + 0xe3, 0xf7, 0x1f, 0xc7, 0x72, 0xd1, 0x25, 0xb3, 0x1e, 0xd1, 0xa9, 0xab, + 0xc0, 0xc9, 0x1a, 0xe6, 0x4a, 0xeb, 0xfb, 0x32, 0xfb, 0x34, 0x4c, 0x2b, + 0x30, 0x36, 0xc0, 0x64, 0xbe, 0x76, 0x1e, 0xa8, 0xf7, 0x25, 0x15, 0xb3, + 0xa4, 0xb0, 0xcc, 0xbc, 0xb4, 0x74, 0x55, 0x3c, 0x47, 0x7c, 0x75, 0x77, + 0x45, 0x99, 0xdb, 0x1e, 0x80, 0xfb, 0xcf, 0x15, 0xa9, 0x9a, 0xdc, 0xe1, + 0xd4, 0xab, 0x51, 0x56, 0x2c, 0x48, 0x75, 0x65, 0x59, 0x58, 0xac, 0xdf, + 0x1e, 0xe, 0x79, 0xa, 0xf7, 0x20, 0xef, 0xf7, 0x99, 0xf7, 0x6, 0x1, + 0xa9, 0xf7, 0x1f, 0xf7, 0x41, 0xf7, 0x33, 0x3, 0xb7, 0xf7, 0x33, 0x15, + 0x25, 0x8e, 0xdd, 0x3f, 0xf7, 0x10, 0x1b, 0xf7, 0xa1, 0x8b, 0xf7, 0xc4, + 0xcc, 0xf7, 0x4e, 0x46, 0xf7, 0x42, 0xfb, 0x55, 0xfb, 0x21, 0x32, 0x28, + 0xfb, 0x22, 0xfb, 0x22, 0xf7, 0x2, 0x2f, 0xf7, 0x8, 0xa6, 0xb8, 0x90, + 0xc1, 0xb9, 0x1f, 0x8d, 0x89, 0x5, 0x41, 0x86, 0x78, 0xfb, 0xf, 0x28, + 0x1b, 0x44, 0x8b, 0xc9, 0x9b, 0x89, 0x1f, 0x80, 0xf7, 0xbc, 0x15, 0x9f, + 0x8b, 0xf6, 0xe6, 0xce, 0xaf, 0x47, 0x44, 0xfb, 0x7, 0x33, 0x84, 0x78, + 0x2a, 0x95, 0xf7, 0x9, 0x9c, 0x1e, 0xe, 0x8b, 0xf7, 0x19, 0xf7, 0x89, + 0xf7, 0x1a, 0x1, 0xe7, 0xf7, 0x2a, 0x3, 0xe7, 0x16, 0xf7, 0x2a, 0xf7, + 0x19, 0xfb, 0x2a, 0x6, 0xf7, 0x89, 0x4, 0xf7, 0x2a, 0xf7, 0x1a, 0xfb, + 0x2a, 0x6, 0xe, 0xfb, 0x27, 0x76, 0xf7, 0x4a, 0x76, 0xf8, 0x12, 0xf7, + 0x1d, 0x12, 0xf3, 0xf7, 0x1e, 0x44, 0xd2, 0x13, 0xf0, 0xf3, 0x84, 0x15, + 0x13, 0xe8, 0xce, 0x6, 0x2c, 0x56, 0x8b, 0x71, 0x82, 0x1e, 0xa6, 0x52, + 0x5, 0xf7, 0xf, 0xb7, 0x8b, 0xe9, 0xc9, 0x1a, 0xed, 0x7, 0x13, 0xf0, + 0xfb, 0x1e, 0x6, 0xf7, 0x89, 0x4, 0xf7, 0x1e, 0xf7, 0x1d, 0x81, 0xa, + 0x91, 0xa, 0xf7, 0x58, 0x15, 0xf8, 0x90, 0xfb, 0x60, 0x5, 0xf7, 0x18, + 0x7, 0xfb, 0xf6, 0xf7, 0x14, 0xf7, 0xf6, 0xf7, 0x15, 0x5, 0xf7, 0x19, + 0x7, 0xfc, 0x90, 0xfb, 0x62, 0x5, 0xe, 0x3c, 0xe2, 0xf7, 0xe, 0xe4, + 0x82, 0xa, 0xb3, 0xf8, 0x8c, 0x3, 0xb3, 0xe2, 0x15, 0xf8, 0x8c, 0xf7, + 0xe, 0xfc, 0x8c, 0x6, 0xe4, 0x4, 0xf8, 0x8c, 0xf7, 0xd, 0xfc, 0x8c, + 0x6, 0xe, 0x91, 0xa, 0x83, 0x15, 0xf8, 0x90, 0xf7, 0x62, 0x5, 0xf7, + 0x4, 0x7, 0xfc, 0x90, 0xf7, 0x60, 0x5, 0xfb, 0x18, 0x7, 0xf7, 0xf5, + 0xfb, 0x14, 0xfb, 0xf5, 0xfb, 0x15, 0x5, 0xe, 0x57, 0x8b, 0xf7, 0x1e, + 0xf8, 0x77, 0xf5, 0x12, 0xf7, 0x87, 0xf7, 0xc, 0xfb, 0xc, 0xf7, 0x19, + 0xbe, 0xf7, 0x15, 0x13, 0xe8, 0xf7, 0x87, 0xf7, 0x4e, 0x15, 0xf7, 0xd, + 0x6, 0x8a, 0x92, 0x8b, 0x93, 0x8f, 0x1a, 0xbf, 0x91, 0x9e, 0xc3, 0xba, + 0x1e, 0xe8, 0xdb, 0xb1, 0xba, 0xd2, 0x1a, 0xf7, 0x5, 0x25, 0xe8, 0xfb, + 0x27, 0xfb, 0x37, 0x3d, 0xfb, 0x4, 0x29, 0x85, 0x1e, 0xf7, 0xe, 0x7b, + 0x5, 0xd7, 0x9a, 0xb1, 0xb7, 0xd3, 0x1b, 0xc4, 0xca, 0x6b, 0x4a, 0x60, + 0x75, 0x79, 0x49, 0x52, 0x1f, 0x2d, 0x3d, 0x87, 0x5e, 0x8d, 0x2a, 0x8, + 0xfb, 0x4e, 0x4, 0x13, 0xd8, 0xf7, 0x19, 0xf7, 0x1e, 0xfb, 0x19, 0x6, + 0xe, 0xf8, 0x2d, 0x46, 0xda, 0xf7, 0x0, 0xda, 0xf7, 0xca, 0xdb, 0xec, + 0xda, 0x1, 0xf7, 0x16, 0xd8, 0xdc, 0xf7, 0x1, 0xf8, 0x53, 0xd7, 0x3, + 0xf8, 0xc8, 0xf7, 0x3b, 0x15, 0x79, 0x90, 0x93, 0x6c, 0xcb, 0x1b, 0xf7, + 0x40, 0xf6, 0xf7, 0x37, 0xf7, 0x28, 0xf7, 0x4c, 0xfb, 0x17, 0xf7, 0x2a, + 0xfb, 0x79, 0xfb, 0xc8, 0xfb, 0xe, 0xfb, 0x89, 0xfb, 0x5b, 0xfb, 0x9e, + 0xf7, 0x7d, 0xfb, 0xe, 0xf7, 0x5c, 0xf7, 0x18, 0xf7, 0x41, 0xb4, 0xf7, + 0x2e, 0xd5, 0x1f, 0x32, 0x6, 0x66, 0x6f, 0x47, 0x3c, 0xfb, 0x56, 0x1b, + 0xfb, 0xa9, 0x3c, 0xf7, 0x41, 0xf7, 0x1c, 0xf7, 0x11, 0xc7, 0xf7, 0x84, + 0xf7, 0xb9, 0xf7, 0x72, 0xc9, 0xfb, 0x30, 0x28, 0xfb, 0x1d, 0x20, 0x35, + 0x62, 0x75, 0x91, 0xa9, 0xa8, 0x90, 0x1f, 0xca, 0xf7, 0xcb, 0x5, 0xfb, + 0x2, 0x6, 0x81, 0x5b, 0x5, 0xc0, 0x6a, 0x56, 0x91, 0x72, 0x1b, 0xfb, + 0x2b, 0x3d, 0xfb, 0x3a, 0xfb, 0xd, 0x27, 0xc8, 0x39, 0xf0, 0xcd, 0xb0, + 0xb1, 0x96, 0x96, 0x1f, 0xfb, 0x3b, 0xf7, 0x19, 0x15, 0xc8, 0xa0, 0xf7, + 0x26, 0xee, 0xd0, 0x9d, 0x43, 0x6f, 0x51, 0x6b, 0xfb, 0x2c, 0x28, 0x50, + 0x7a, 0xc0, 0xbd, 0x1e, 0xe, 0x69, 0xa, 0xf7, 0x37, 0xf7, 0xe, 0xf8, + 0x45, 0x77, 0x1, 0x9f, 0xf9, 0x3e, 0x3, 0x9f, 0x16, 0xf7, 0x26, 0x6, + 0xc3, 0xf7, 0x37, 0x5, 0xf7, 0xa3, 0x6, 0xc6, 0xfb, 0x37, 0x5, 0xf7, + 0x2a, 0x6, 0xfb, 0xa4, 0xf9, 0x62, 0x40, 0xa, 0x76, 0xfc, 0x45, 0x15, + 0xe7, 0xf7, 0x9e, 0xe9, 0xfb, 0x9e, 0x5, 0xe, 0xc6, 0x8c, 0xf7, 0xd, + 0xf7, 0x51, 0xf7, 0xe, 0xf7, 0x38, 0x7b, 0xa, 0xf7, 0x22, 0xf7, 0xa9, + 0xf7, 0x1f, 0x3, 0xd7, 0x8d, 0x15, 0xf7, 0xa7, 0x6, 0xf7, 0x30, 0xf7, + 0x36, 0x89, 0xf7, 0x5f, 0xb4, 0x7e, 0xf0, 0xfb, 0xd, 0xb1, 0x1f, 0xcd, + 0xa8, 0xac, 0xba, 0xca, 0x1a, 0xf7, 0x33, 0xfb, 0x22, 0xb0, 0xfb, 0x21, + 0x1e, 0xfb, 0xa7, 0x6, 0xf7, 0x22, 0xfb, 0xb1, 0x15, 0xf7, 0x38, 0xf7, + 0x19, 0x7, 0xc8, 0xde, 0x8c, 0x3f, 0x3f, 0x2a, 0x7e, 0x5c, 0x1f, 0xfb, + 0x19, 0xfb, 0xcb, 0x15, 0xf7, 0x51, 0xf7, 0x19, 0x7, 0xef, 0xd2, 0x82, + 0x28, 0x47, 0x3d, 0x7e, 0x2e, 0x1f, 0xe, 0xc6, 0x78, 0xf7, 0x13, 0xf8, + 0x8a, 0xf7, 0x13, 0x1, 0xb7, 0xf7, 0x2d, 0x3, 0xf8, 0xb0, 0xf7, 0x9a, + 0x15, 0x3b, 0x79, 0x5d, 0x41, 0x29, 0x1b, 0xfb, 0x2b, 0x6d, 0xf7, 0xc, + 0xf7, 0x11, 0xba, 0x89, 0xf7, 0x66, 0xf7, 0x4b, 0xd7, 0xca, 0x60, 0x3c, + 0x9d, 0x1f, 0xf7, 0x27, 0xad, 0x5, 0xf7, 0xa, 0x71, 0xfb, 0x17, 0xec, + 0xfb, 0x27, 0x1b, 0xfb, 0x83, 0x2c, 0xfb, 0x49, 0xfb, 0x5f, 0xfb, 0x78, + 0xf7, 0x1b, 0xfb, 0x24, 0xf7, 0x5b, 0xf7, 0x84, 0xbe, 0xf7, 0x47, 0xc4, + 0x9a, 0x1f, 0xe, 0xc6, 0x8b, 0xf7, 0xd, 0xf8, 0x70, 0x7b, 0xa, 0xf7, + 0x26, 0xf7, 0xcc, 0xf7, 0x2b, 0x3, 0xd7, 0x16, 0xf7, 0x7c, 0x6, 0xf7, + 0x9e, 0xf7, 0x3, 0xf7, 0x23, 0xf7, 0x65, 0xf7, 0xb0, 0xfb, 0x36, 0xdd, + 0xfb, 0x6b, 0x1f, 0xfb, 0x7c, 0x6, 0xf7, 0x26, 0xfc, 0xe9, 0x15, 0xf8, + 0x70, 0xe1, 0x7, 0xf7, 0xe, 0xf3, 0x85, 0xfb, 0x83, 0xfb, 0x7b, 0xfb, + 0x5, 0x8b, 0xfb, 0x5, 0x1f, 0xe, 0x8f, 0x8b, 0xf7, 0xd, 0xf7, 0x57, + 0xf7, 0xd, 0xf7, 0x34, 0x7b, 0xa, 0xf7, 0x24, 0x3, 0xd7, 0x16, 0xf8, + 0xb5, 0xf7, 0xd, 0xfc, 0x25, 0xf7, 0x57, 0xf7, 0xf3, 0xf7, 0xd, 0xfb, + 0xf3, 0xf7, 0x34, 0xf8, 0x18, 0xf7, 0xd, 0xfc, 0xa8, 0x6, 0xe, 0x57, + 0xa0, 0x76, 0xf7, 0xc5, 0xf7, 0xd, 0xf7, 0x3f, 0x7b, 0xa, 0xf7, 0x2a, + 0x3, 0xd7, 0x16, 0xf7, 0x2a, 0xf7, 0xc5, 0xf7, 0xc2, 0xf7, 0xd, 0xfb, + 0xc2, 0xf7, 0x3f, 0xf7, 0xfd, 0xf7, 0xd, 0xfc, 0x93, 0x6, 0xe, 0xf7, + 0x7, 0x78, 0xf7, 0x13, 0xf7, 0x2e, 0xf7, 0x10, 0xf7, 0x60, 0xf7, 0x13, + 0x1, 0xc5, 0xf7, 0x29, 0xf7, 0xfc, 0xf7, 0x26, 0x3, 0xf8, 0x22, 0xf7, + 0x9a, 0x15, 0xf7, 0x3d, 0x2f, 0x6, 0x7d, 0x78, 0x49, 0x5b, 0x37, 0x1b, + 0xfb, 0x3c, 0x66, 0xf7, 0x25, 0xf7, 0x0, 0xa0, 0x8f, 0xa4, 0x94, 0xa9, + 0x1f, 0x94, 0xaa, 0x97, 0xa5, 0x9c, 0xa1, 0x8, 0xb8, 0xae, 0xbe, 0xa8, + 0xcf, 0x1b, 0xb6, 0xe5, 0x7c, 0x27, 0xa8, 0x1f, 0xf7, 0x24, 0xa6, 0x5, + 0xf7, 0x48, 0x63, 0xfb, 0x29, 0xae, 0xfb, 0x9, 0x1b, 0xfb, 0x15, 0x32, + 0x5a, 0x43, 0x53, 0x1f, 0x6f, 0x67, 0x77, 0x63, 0x7e, 0x5e, 0x8, 0x7e, + 0x5e, 0x85, 0x65, 0x6c, 0x1a, 0xfb, 0x54, 0xea, 0xfb, 0x50, 0xf7, 0x97, + 0xf7, 0x26, 0xf7, 0x12, 0xd4, 0xb3, 0xb6, 0x1e, 0xf7, 0xb8, 0xfb, 0xcf, + 0x7, 0xe, 0x69, 0xa, 0xf7, 0xcf, 0xf7, 0xe, 0xf7, 0xad, 0x77, 0x1, + 0xd2, 0xf7, 0x26, 0xf7, 0xb4, 0xf7, 0x26, 0x3, 0xd2, 0x16, 0xf7, 0x26, + 0xf7, 0xcf, 0xf7, 0xb4, 0xfb, 0xcf, 0xf7, 0x26, 0xf9, 0x62, 0xfb, 0x26, + 0xfb, 0xad, 0xfb, 0xb4, 0xf7, 0xad, 0xfb, 0x26, 0x6, 0xe, 0xfc, 0x15, + 0x3f, 0xa, 0xf7, 0x10, 0xf7, 0x2a, 0x3, 0xcb, 0x16, 0xf7, 0x2a, 0xf9, + 0x62, 0xfb, 0x2a, 0x6, 0xe, 0x20, 0x79, 0xf7, 0x12, 0xf8, 0xf6, 0x77, + 0x1, 0xf7, 0xe7, 0xf7, 0x25, 0x3, 0xa1, 0xf7, 0x70, 0x15, 0xfb, 0x38, + 0xdb, 0x41, 0xf7, 0x23, 0xf7, 0x41, 0xcd, 0xf7, 0xb, 0xf7, 0x2b, 0x1e, + 0xf8, 0x66, 0xfb, 0x25, 0xfc, 0x66, 0x7, 0x44, 0x86, 0x42, 0x32, 0x36, + 0x8f, 0xdf, 0xb9, 0x87, 0x1e, 0xe, 0xc6, 0x3f, 0xa, 0xe2, 0xf7, 0x22, + 0x3, 0xe2, 0x16, 0xf7, 0x22, 0xf7, 0x6e, 0x6, 0xf7, 0x8, 0xf7, 0xc, + 0xf7, 0x55, 0xfb, 0xe6, 0x5, 0xf7, 0x4c, 0x6, 0xfb, 0xab, 0xf8, 0x4c, + 0xf7, 0x9c, 0xf7, 0xaa, 0x5, 0xfb, 0x52, 0x6, 0xfb, 0xb4, 0xfb, 0xd1, + 0x5, 0xf7, 0xd1, 0xfb, 0x22, 0x7, 0xe, 0x86, 0xa, 0xd7, 0xf7, 0x25, + 0x3, 0xd7, 0x16, 0xf8, 0x8f, 0xf7, 0xe, 0xfb, 0xfe, 0xf8, 0xe8, 0xfb, + 0x25, 0x6, 0xe, 0xf7, 0x3e, 0xa0, 0x76, 0xf8, 0xc9, 0xf7, 0x2d, 0x1, + 0xd0, 0xf7, 0x1b, 0xf8, 0x3e, 0xf7, 0x1b, 0x3, 0xd0, 0x16, 0xf7, 0x1b, + 0xf8, 0xc9, 0x8d, 0x6, 0xf7, 0x22, 0xfc, 0xc9, 0x5, 0xf7, 0x20, 0x6, + 0xf7, 0x20, 0xf8, 0xc9, 0x5, 0x8d, 0xfc, 0xc9, 0xf7, 0x1b, 0xf9, 0x62, + 0xfb, 0x6f, 0x6, 0xfb, 0x13, 0xfc, 0x7c, 0x5, 0x88, 0x6, 0xfb, 0x15, + 0xf8, 0x7c, 0x5, 0xfb, 0x6e, 0x6, 0xe, 0xc6, 0xa0, 0x76, 0xf9, 0x62, + 0x5c, 0xa, 0xf8, 0x67, 0x8d, 0x6, 0xf7, 0xbb, 0xfc, 0x67, 0x5, 0xf7, + 0x2a, 0xf9, 0x62, 0xfb, 0x1e, 0xfc, 0x72, 0x89, 0x6, 0xfb, 0xc1, 0xf8, + 0x72, 0x5, 0xfb, 0x24, 0x6, 0xe, 0xf7, 0x7, 0x78, 0xf7, 0x13, 0xf8, + 0x76, 0xf7, 0x13, 0x1, 0xd0, 0xf7, 0x28, 0xf7, 0xf8, 0x85, 0xa, 0xb7, + 0xf7, 0xea, 0x15, 0x7c, 0x8d, 0x75, 0x90, 0x6d, 0x1e, 0x94, 0x4f, 0xa0, + 0x53, 0xae, 0x58, 0x8, 0x40, 0xbe, 0xe5, 0x57, 0xf7, 0x18, 0x1b, 0xf7, + 0x10, 0xe2, 0xba, 0xd2, 0xc2, 0x1f, 0xa6, 0xaf, 0x9f, 0xb4, 0x98, 0xb8, + 0x8, 0x98, 0xb9, 0x91, 0xb3, 0xae, 0x1a, 0xf7, 0x69, 0x3d, 0xa, 0xfb, + 0x20, 0xfb, 0x7f, 0x1e, 0xf7, 0x28, 0x16, 0xf7, 0x0, 0xac, 0xf7, 0x20, + 0xf7, 0x38, 0xf7, 0x44, 0xa0, 0xfb, 0x39, 0x38, 0x76, 0x87, 0x72, 0x84, + 0x6c, 0x1e, 0x84, 0x6c, 0x80, 0x70, 0x7c, 0x74, 0x8, 0x5c, 0x6c, 0x59, + 0x6e, 0x43, 0x1b, 0x3f, 0x5a, 0xa9, 0x89, 0xa, 0xaa, 0x8, 0x85, 0xaa, + 0x88, 0xa5, 0xa0, 0x1a, 0xe, 0x8f, 0xa0, 0x76, 0xf7, 0xac, 0xf7, 0xd, + 0xf7, 0x58, 0xf7, 0xd, 0x60, 0xa, 0xf7, 0xac, 0xdb, 0x6, 0xf7, 0x31, + 0xf7, 0x3d, 0x7e, 0xf7, 0x7a, 0xf7, 0x6c, 0xfb, 0x26, 0x90, 0xfb, 0x48, + 0x1f, 0xfb, 0x75, 0x6, 0xf7, 0x25, 0xfb, 0xd1, 0x15, 0xf7, 0x58, 0xdb, + 0x7, 0xf4, 0xd2, 0x89, 0x27, 0x24, 0x26, 0x94, 0x40, 0x1f, 0xe, 0xf7, + 0x7, 0x6c, 0x76, 0xc6, 0xf7, 0xf, 0xf8, 0x6f, 0xf7, 0xe, 0x1, 0xd1, + 0xf7, 0x23, 0xf7, 0xe7, 0xf7, 0x23, 0x3, 0xf8, 0xa8, 0xb0, 0x15, 0xc4, + 0x64, 0xb5, 0x68, 0xc2, 0x7c, 0xbe, 0xf0, 0x18, 0x4f, 0xa2, 0x68, 0xa5, + 0x7b, 0x96, 0x8, 0xa6, 0xa7, 0xc5, 0xe2, 0xf7, 0x20, 0x1a, 0xf7, 0x67, + 0xfb, 0x3, 0xf7, 0x2c, 0xfb, 0x73, 0xfb, 0x6b, 0xfb, 0xa, 0xfb, 0x20, + 0xfb, 0x73, 0x38, 0xa0, 0x2c, 0xbf, 0x47, 0x1e, 0x48, 0xc0, 0xde, 0x5f, + 0xf7, 0x10, 0x1b, 0xd3, 0xc7, 0x9e, 0x96, 0xa2, 0x1f, 0xfb, 0x50, 0xf7, + 0x23, 0x15, 0xab, 0x7f, 0xb2, 0x76, 0x9a, 0x80, 0x8, 0x88, 0x80, 0x80, + 0x88, 0x6c, 0x1b, 0x44, 0x5c, 0xa8, 0x89, 0xa, 0xac, 0x8, 0x85, 0xac, + 0x88, 0xa4, 0x9e, 0x1a, 0xf7, 0x7, 0xac, 0xf7, 0x12, 0xf7, 0x31, 0xf7, + 0x32, 0xac, 0xfb, 0x21, 0x27, 0x6a, 0x81, 0x50, 0x7f, 0x6e, 0x1e, 0x80, + 0x6f, 0x7e, 0x7a, 0x84, 0x82, 0x6a, 0xa4, 0x5d, 0xa8, 0x56, 0x9e, 0x8, + 0xe, 0x69, 0xa, 0xf7, 0xc0, 0xf7, 0x6, 0xf7, 0x4b, 0x7b, 0xa, 0xf7, + 0x1b, 0xf7, 0xa5, 0xf7, 0x1f, 0x3, 0xd7, 0x16, 0xf7, 0x1b, 0xf7, 0xc0, + 0xa6, 0x6, 0xe5, 0xa1, 0x81, 0xfb, 0x16, 0xdc, 0x1f, 0xdf, 0xfb, 0x34, + 0x5, 0xf7, 0x36, 0x6, 0x3a, 0xf7, 0x20, 0x47, 0xf7, 0x8, 0x71, 0xa5, + 0x53, 0xad, 0x19, 0x8d, 0x7, 0xf0, 0x92, 0xd7, 0xdb, 0xf7, 0x3, 0x1a, + 0xf7, 0x52, 0xfb, 0x1b, 0x97, 0xfb, 0x45, 0x1e, 0xfb, 0x7f, 0x6, 0xf7, + 0x1b, 0xfb, 0xc4, 0x15, 0xf7, 0x4b, 0xef, 0x7, 0xf5, 0xce, 0x94, 0x28, + 0x2c, 0x30, 0x8d, 0x39, 0x1f, 0xe, 0x8f, 0x78, 0xf7, 0x10, 0xf7, 0x64, + 0xf7, 0x1b, 0xf7, 0x3b, 0xf7, 0xe, 0x1, 0xcc, 0xf7, 0x21, 0xf7, 0x96, + 0xf7, 0x26, 0x3, 0xb2, 0xf7, 0x7b, 0x15, 0xfb, 0x87, 0x72, 0xa, 0xbe, + 0xf7, 0x42, 0xf7, 0x48, 0xfb, 0x2a, 0xae, 0xfb, 0x3, 0xa6, 0x1f, 0xfb, + 0x9, 0xa6, 0x5e, 0x96, 0xba, 0x1a, 0xc6, 0xda, 0xa2, 0xb6, 0xf7, 0x8, + 0x96, 0x47, 0x65, 0x91, 0x1e, 0xf7, 0x28, 0x91, 0x5, 0xf7, 0x3a, 0x85, + 0xfb, 0x18, 0xc3, 0xfb, 0x23, 0x1b, 0xfb, 0x69, 0x59, 0xfb, 0x11, 0x3c, + 0xfb, 0x36, 0xf7, 0x35, 0x63, 0xd3, 0x79, 0x1f, 0xf7, 0x1a, 0x6a, 0xbe, + 0x7e, 0x4e, 0x1a, 0x5c, 0x61, 0x55, 0x25, 0xfb, 0x18, 0x78, 0xf1, 0xb1, + 0x84, 0x1e, 0xe, 0x57, 0xa0, 0x76, 0xf8, 0xe8, 0xf7, 0xe, 0x1, 0xf7, + 0x7c, 0x85, 0xa, 0xf7, 0x7c, 0x16, 0xf7, 0x28, 0xf8, 0xe8, 0xf7, 0x6e, + 0xf7, 0xe, 0xfc, 0xdc, 0xfb, 0xe, 0xf7, 0x6e, 0x6, 0xe, 0xc6, 0x78, + 0xf7, 0x12, 0xf8, 0xf7, 0x77, 0x42, 0xa, 0xd3, 0xf9, 0x62, 0x15, 0xfc, + 0x22, 0x7, 0xfb, 0x3c, 0xb7, 0xfb, 0x3f, 0xf7, 0x8d, 0xf7, 0x6d, 0xd0, + 0xf7, 0x1, 0xf7, 0x7a, 0x1e, 0xf8, 0x22, 0xfb, 0x26, 0xfc, 0x22, 0x7, + 0xfb, 0x11, 0x8b, 0x33, 0xfb, 0x20, 0xfb, 0x16, 0x7a, 0xdc, 0xf7, 0x18, + 0x1e, 0xf8, 0x22, 0x7, 0xe, 0x8f, 0x3f, 0xa, 0xf7, 0x98, 0x16, 0xf7, + 0x26, 0x6, 0xf7, 0x86, 0xf9, 0x62, 0x40, 0xa, 0xfb, 0x39, 0xfc, 0xa7, + 0x6e, 0xa, 0xfb, 0x3d, 0xf8, 0xa7, 0x5, 0xfb, 0x28, 0x6, 0xe, 0xf7, + 0xad, 0xa0, 0x76, 0xf8, 0xaf, 0x77, 0xf7, 0x5b, 0x77, 0x1, 0xf7, 0x4a, + 0x16, 0xf7, 0x2d, 0x6, 0xf7, 0x1d, 0xf8, 0xaf, 0x5, 0x8c, 0x6, 0xf7, + 0x1d, 0xfc, 0xaf, 0x5, 0xf7, 0x2a, 0x6, 0xf7, 0x3d, 0xf9, 0x62, 0x5, + 0xfb, 0x22, 0x6, 0x22, 0xfc, 0x88, 0x6e, 0xa, 0xfb, 0xd, 0xf8, 0x88, + 0x5, 0xfb, 0x3b, 0x6, 0xfb, 0x12, 0xfc, 0x80, 0x6e, 0xa, 0x23, 0xf8, + 0x80, 0x5, 0xfb, 0x24, 0x6, 0xe, 0x8f, 0x3f, 0xa, 0x99, 0x16, 0xf7, + 0x3b, 0x6, 0xf7, 0x2c, 0xf7, 0x8d, 0xf7, 0x2d, 0xfb, 0x8d, 0x5, 0xf7, + 0x3b, 0x6, 0xfb, 0x7f, 0xf8, 0x7, 0xf7, 0x6a, 0xf7, 0xef, 0x5, 0xfb, + 0x35, 0x6, 0xfb, 0x1b, 0xfb, 0x7c, 0xfb, 0x1e, 0xf7, 0x7c, 0x5, 0xfb, + 0x36, 0x6, 0xf7, 0x69, 0xfb, 0xe9, 0x5, 0xe, 0x8f, 0x3f, 0xa, 0xf7, + 0x9d, 0xf7, 0x1d, 0x3, 0xf7, 0x9d, 0x16, 0xf7, 0x1d, 0xf7, 0xc2, 0x6, + 0xf7, 0x8f, 0xf8, 0x34, 0x4f, 0xa, 0xfc, 0x33, 0x5, 0xe, 0x57, 0x8b, + 0xf7, 0xe, 0xf8, 0x6e, 0xf7, 0xe, 0x1, 0xa4, 0x16, 0xf8, 0xc5, 0xf7, + 0xe, 0x87, 0xa, 0xf7, 0x6, 0xfc, 0x8e, 0xfb, 0xe, 0x8c, 0xa, 0xe, + 0x7f, 0xa, 0xca, 0xf7, 0x19, 0x3, 0xf7, 0x58, 0x33, 0x15, 0xf9, 0x52, + 0xf7, 0x5, 0xf7, 0x0, 0xfb, 0x8a, 0xfe, 0x2a, 0xf7, 0x8a, 0xf7, 0x0, + 0x7, 0xe, 0xfc, 0x15, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0x4e, 0xf7, + 0xec, 0x3, 0xf7, 0x4e, 0x78, 0x15, 0xf7, 0x11, 0x6, 0xfb, 0x6d, 0x93, + 0xa, 0x7f, 0xa, 0xf7, 0x1d, 0xf7, 0x19, 0x3, 0xa3, 0x33, 0x15, 0xfb, + 0x0, 0xf7, 0x8a, 0xfa, 0x2a, 0xfb, 0x8a, 0xfb, 0x0, 0xf7, 0x5, 0xfd, + 0x52, 0x7, 0xe, 0x3c, 0xf7, 0xec, 0x76, 0xf7, 0x79, 0x84, 0xa, 0xc9, + 0xf7, 0xd7, 0x15, 0xf7, 0x1c, 0x6, 0xe9, 0xf7, 0x79, 0xea, 0xfb, 0x79, + 0x5, 0xf7, 0x1b, 0x6, 0xfb, 0x42, 0xf8, 0xb, 0x5, 0x20, 0x6, 0xe, + 0x20, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, 0xc0, 0xbd, 0x7, + 0xe, 0xf8, 0xf0, 0x84, 0xa, 0x74, 0xf7, 0x8c, 0x3, 0xf7, 0x13, 0xf8, + 0xf0, 0x15, 0xed, 0x6, 0x3f, 0x83, 0xa, 0xfb, 0x40, 0x6, 0xe, 0x20, + 0x7d, 0xef, 0x48, 0x76, 0xf8, 0x4c, 0xf7, 0x0, 0x12, 0xa8, 0xf7, 0x1a, + 0xf7, 0x58, 0xf7, 0x1d, 0x13, 0x78, 0xf8, 0x6, 0xc4, 0x30, 0xa, 0x77, + 0xb8, 0x83, 0xa3, 0x38, 0xa, 0xad, 0x1a, 0xeb, 0x8a, 0xf4, 0xfb, 0x73, + 0xfb, 0x32, 0x5b, 0x49, 0x35, 0x73, 0x1e, 0xf7, 0x13, 0x73, 0x5, 0xa6, + 0x2d, 0xa, 0x7f, 0x6e, 0x83, 0x3c, 0x7d, 0x8, 0x41, 0x7c, 0xfb, 0xc, + 0x73, 0xfb, 0x17, 0x1a, 0x13, 0xb8, 0x2e, 0xd1, 0x4a, 0x37, 0xa, 0xf7, + 0x5b, 0x15, 0x6f, 0x7, 0x3c, 0x97, 0x5d, 0x4c, 0x3d, 0x1b, 0x55, 0x6d, + 0xa7, 0xa9, 0xbd, 0xca, 0xa9, 0xa4, 0x90, 0x1f, 0xa9, 0x92, 0xc8, 0x95, + 0x9c, 0x95, 0x8, 0xe, 0x57, 0x7d, 0xf7, 0x2, 0x3e, 0x76, 0xf8, 0x41, + 0xf5, 0xf7, 0x4d, 0x77, 0x12, 0xde, 0xf7, 0x20, 0xf7, 0x5a, 0xf7, 0x24, + 0x13, 0x7c, 0xc8, 0x89, 0x15, 0xf7, 0x17, 0xd8, 0x8d, 0x6, 0x13, 0xbc, + 0x3d, 0xc1, 0xd8, 0x80, 0xaa, 0x1b, 0xf7, 0x7, 0xf6, 0xe0, 0xf7, 0x50, + 0xf7, 0x4c, 0x22, 0xe5, 0xfb, 0xa, 0x35, 0x5b, 0x5a, 0x74, 0x77, 0x1f, + 0xf7, 0x95, 0xfb, 0x20, 0x7, 0x13, 0x7c, 0xf7, 0x1f, 0xfc, 0x52, 0x15, + 0xf5, 0xbf, 0xbc, 0xcc, 0xf3, 0x98, 0xfb, 0x2, 0x51, 0x1e, 0x13, 0xbc, + 0xfb, 0x16, 0x4c, 0x6a, 0x5b, 0x31, 0x6a, 0xda, 0xec, 0x1e, 0xe, 0x20, + 0x7d, 0xf7, 0x8, 0xf7, 0xe1, 0xf7, 0x3, 0x1, 0xb9, 0xf7, 0x21, 0x3, + 0xf8, 0x1a, 0xf7, 0x5e, 0x15, 0x6c, 0x85, 0x76, 0x46, 0x3b, 0x1b, 0x3c, + 0x6e, 0xc6, 0xf7, 0x5, 0xac, 0x86, 0xf7, 0x14, 0xf7, 0x5, 0xce, 0xa4, + 0x5c, 0x66, 0x92, 0x1f, 0xf7, 0x1b, 0xa4, 0x5, 0xd2, 0x77, 0x5a, 0xee, + 0xfb, 0x39, 0x1b, 0xfb, 0x59, 0x57, 0xfb, 0x28, 0xfb, 0x10, 0x31, 0xae, + 0xfb, 0x5a, 0xf7, 0x6a, 0xf7, 0x17, 0xdc, 0xc9, 0xf7, 0x18, 0xa8, 0x1f, + 0xe, 0x57, 0x7d, 0xf7, 0x2, 0x3e, 0x76, 0xf8, 0x3f, 0xf5, 0xf7, 0x4f, + 0x77, 0x12, 0xad, 0xf7, 0x24, 0xf7, 0x6d, 0xf7, 0x20, 0x13, 0x7c, 0xf8, + 0x38, 0x89, 0x15, 0xf7, 0x17, 0xf9, 0x64, 0xfb, 0x20, 0xfb, 0x97, 0x6, + 0xa2, 0x77, 0x5b, 0xbc, 0x35, 0x1b, 0xfb, 0xa, 0x22, 0x36, 0xfb, 0x4c, + 0x1f, 0x13, 0xbc, 0xfb, 0x50, 0xf6, 0x33, 0xf7, 0x7, 0xe9, 0xae, 0xb7, + 0xb7, 0xae, 0x1e, 0x13, 0x7c, 0xfb, 0x86, 0xf7, 0x50, 0x15, 0xc5, 0x98, + 0xf4, 0xf3, 0xcc, 0xbf, 0x51, 0x22, 0x1e, 0x13, 0xbc, 0x2a, 0x6a, 0x46, + 0x31, 0x5b, 0x4c, 0xb0, 0xf7, 0x15, 0x1e, 0xe, 0x20, 0x7d, 0xf7, 0x0, + 0xf7, 0x17, 0xe1, 0xf7, 0x2b, 0xf7, 0x0, 0x1, 0xa9, 0xf7, 0x28, 0xf7, + 0x64, 0xf7, 0x22, 0x3, 0xf7, 0x3c, 0xf7, 0x76, 0x15, 0xf7, 0xfc, 0x6, + 0xf7, 0x33, 0x57, 0xf7, 0x35, 0xfb, 0x5e, 0xfb, 0x3e, 0x3a, 0xfb, 0x1e, + 0xfb, 0x25, 0xfb, 0x3b, 0xf1, 0xfb, 0x2, 0xf7, 0x29, 0xf7, 0x46, 0xc3, + 0xf7, 0x12, 0xac, 0x97, 0x1e, 0xfb, 0x22, 0xa3, 0x5, 0x72, 0x83, 0x6d, + 0x59, 0x49, 0x1b, 0x3a, 0x74, 0xcf, 0xcb, 0x89, 0x1f, 0x8e, 0xe1, 0x15, + 0xce, 0xaf, 0xc6, 0xce, 0xd3, 0xb3, 0x4d, 0x4b, 0x1e, 0xe, 0x76, 0xa, + 0xf4, 0xf4, 0x1, 0xd8, 0xf7, 0x14, 0x3, 0xd8, 0x16, 0xf7, 0x14, 0xf8, + 0x2c, 0xde, 0xf7, 0x1, 0x38, 0xb0, 0x6, 0xa9, 0x8b, 0xb1, 0xbd, 0x93, + 0x9c, 0x89, 0x85, 0xa1, 0x1e, 0x9b, 0xeb, 0x5, 0x98, 0x65, 0x76, 0x8f, + 0x73, 0x1b, 0xfb, 0x21, 0x7a, 0xfb, 0x1, 0x4e, 0x1f, 0x63, 0x48, 0xfb, + 0x1, 0xce, 0x7, 0xe, 0x57, 0xfb, 0x6d, 0xf7, 0x0, 0xf7, 0x1, 0xf7, + 0x7, 0xf7, 0xd7, 0xf7, 0x0, 0x1, 0xb3, 0xf7, 0x23, 0xf7, 0x7b, 0xf7, + 0x1f, 0x3, 0xc5, 0x67, 0x15, 0xfb, 0x40, 0xf7, 0x10, 0x82, 0xf7, 0xe, + 0xf7, 0x79, 0x9f, 0xf7, 0xf, 0xf7, 0x28, 0x1e, 0xf8, 0x74, 0xfb, 0x16, + 0x40, 0x89, 0x7, 0xa3, 0x7c, 0x5c, 0xca, 0x2a, 0x1b, 0x35, 0xfb, 0x1c, + 0x55, 0xfb, 0x70, 0xfb, 0x2c, 0xde, 0xfb, 0xc, 0xf7, 0x1a, 0xca, 0xc4, + 0xae, 0xbe, 0xae, 0x1f, 0x8d, 0x3d, 0x6, 0x4d, 0x8b, 0x54, 0xfb, 0x7, + 0x50, 0x7d, 0x9c, 0xb0, 0x82, 0x1e, 0x69, 0xf7, 0xdb, 0x15, 0xb3, 0x94, + 0xf7, 0x12, 0xf5, 0xea, 0xa1, 0x29, 0x47, 0xfb, 0x1f, 0x38, 0x79, 0x66, + 0x32, 0x74, 0xdf, 0xd4, 0x1e, 0xe, 0x57, 0xa0, 0x76, 0xf8, 0x3e, 0xf4, + 0xf7, 0x4f, 0x77, 0x1, 0xcc, 0xf7, 0x20, 0xf7, 0x5d, 0x7d, 0xa, 0xcc, + 0x16, 0xf7, 0x20, 0xf7, 0x99, 0x6, 0xc4, 0x8b, 0xf7, 0x0, 0xf7, 0x6, + 0xe2, 0x8b, 0x3e, 0x33, 0x1e, 0xfb, 0x99, 0xf7, 0x20, 0xf7, 0x99, 0x7, + 0xf7, 0x44, 0x4f, 0xe9, 0xfb, 0xc, 0x6e, 0x47, 0x88, 0x40, 0x4b, 0x1e, + 0xf7, 0x9d, 0xfb, 0x20, 0x7, 0xe, 0x4c, 0xa, 0xf8, 0xa1, 0x77, 0xe9, + 0xf7, 0x12, 0x1, 0xf7, 0x22, 0x63, 0xa, 0xf8, 0xa1, 0x68, 0xa, 0xd5, + 0x4, 0xf7, 0x20, 0xf7, 0x12, 0x6d, 0xa, 0xfc, 0x15, 0xfb, 0x6a, 0xf7, + 0x16, 0xf8, 0xf5, 0x77, 0xe9, 0xf7, 0x12, 0x1, 0xf7, 0x8, 0xf7, 0x1b, + 0x3, 0xa7, 0x3b, 0x15, 0x73, 0xfb, 0xb, 0x5, 0x88, 0x97, 0xb4, 0x7f, + 0xb3, 0x1b, 0xf7, 0x22, 0x97, 0xf7, 0x9, 0xf7, 0x5, 0x1f, 0xf8, 0x91, + 0xfb, 0x1b, 0xfc, 0x89, 0x7, 0x42, 0x8c, 0x68, 0x52, 0x7c, 0x7f, 0x8e, + 0x8c, 0x86, 0x1e, 0xe3, 0xf9, 0x3b, 0x15, 0xf7, 0x1b, 0xf7, 0x12, 0xfb, + 0x1b, 0x6, 0xe, 0x20, 0x3f, 0xa, 0xd0, 0xf7, 0x21, 0x3, 0xd0, 0x16, + 0xf7, 0x21, 0xf7, 0x3b, 0x6, 0xcd, 0xcf, 0xf7, 0x1a, 0xfb, 0x7f, 0x5, + 0xf7, 0x2c, 0x6, 0xfb, 0x57, 0xf7, 0xdf, 0xf7, 0x4b, 0xf7, 0x53, 0x5, + 0xfb, 0x42, 0x6, 0xfb, 0x3a, 0xfb, 0x4c, 0x5, 0xf8, 0x10, 0xfb, 0x21, + 0x7, 0xe, 0xfc, 0x15, 0x3f, 0xa, 0xd0, 0x63, 0xa, 0xf9, 0x62, 0x6d, + 0xa, 0xf7, 0x76, 0xa0, 0x76, 0xf8, 0x4a, 0xf7, 0x0, 0x7f, 0x77, 0x12, + 0xdc, 0xf7, 0x1d, 0xf7, 0x33, 0xf7, 0x1c, 0xf7, 0x44, 0xf7, 0x1d, 0x13, + 0xdc, 0xcb, 0x16, 0xf7, 0x1d, 0xf7, 0xb1, 0x6, 0xe6, 0x9f, 0xc9, 0xe0, + 0xd3, 0x8a, 0x4f, 0x30, 0x1e, 0xfb, 0xb3, 0xf7, 0x1c, 0xf7, 0xb3, 0x7, + 0xd8, 0xa3, 0xd5, 0xda, 0xd4, 0x8b, 0x33, 0x4c, 0x1e, 0xfb, 0xb3, 0xf7, + 0x1d, 0xf7, 0xb7, 0x7, 0xc5, 0x8b, 0xf7, 0x59, 0xfb, 0x3e, 0x36, 0x59, + 0x53, 0x6f, 0x74, 0x1e, 0xa1, 0x7e, 0x69, 0xc9, 0x28, 0x1b, 0x66, 0x4d, + 0x85, 0x3d, 0x4f, 0x1f, 0x13, 0xbc, 0x89, 0xd3, 0xfb, 0x13, 0x6, 0xe, + 0x57, 0xa0, 0x76, 0xf8, 0x4a, 0xeb, 0x2b, 0xf7, 0x0, 0x12, 0x7a, 0xf7, + 0x20, 0xf7, 0xaf, 0xf7, 0x20, 0x13, 0xb8, 0xcc, 0x16, 0xf7, 0x20, 0xf7, + 0x8f, 0x6, 0xe3, 0x94, 0xee, 0xf6, 0xe0, 0x8b, 0x28, 0x33, 0x1e, 0xfb, + 0x8f, 0xf7, 0x20, 0xf7, 0x8f, 0x7, 0xf7, 0x18, 0x72, 0xf7, 0x37, 0xfb, + 0x2b, 0x55, 0x48, 0x78, 0x43, 0x57, 0x1e, 0x13, 0xd8, 0x89, 0xda, 0xfb, + 0x16, 0x6, 0xe, 0x57, 0x7d, 0xf7, 0x8, 0xf7, 0xdc, 0xf7, 0x8, 0x1, + 0xac, 0xf7, 0x23, 0xf7, 0x95, 0xf7, 0x23, 0x3, 0xad, 0xf7, 0xa1, 0x15, + 0xfb, 0x8e, 0xf7, 0x50, 0x6a, 0xde, 0xf7, 0x3e, 0xf2, 0xf7, 0x1a, 0xf7, + 0x29, 0xf7, 0x1c, 0x32, 0xf7, 0x21, 0xfb, 0x4c, 0xfb, 0x4f, 0x37, 0xfb, + 0x2a, 0xfb, 0x13, 0x1e, 0xf7, 0x23, 0x16, 0xf7, 0x5, 0xc8, 0xbb, 0xce, + 0xd3, 0xc5, 0x56, 0xfb, 0x0, 0xfb, 0xc, 0x49, 0x5c, 0x4b, 0x49, 0x4d, + 0xbf, 0xf7, 0x7, 0x1e, 0xe, 0x5a, 0xa, 0xe5, 0xf7, 0x17, 0xf7, 0x60, + 0xf7, 0x24, 0x13, 0xec, 0xf7, 0x5e, 0xc6, 0x15, 0x73, 0x9f, 0xbb, 0x59, + 0xe1, 0x1b, 0xf7, 0x9, 0xf4, 0xdf, 0xf7, 0x51, 0xf7, 0x55, 0x20, 0xea, + 0xfb, 0x6, 0x6b, 0x3f, 0x80, 0x3b, 0x55, 0x1f, 0x89, 0x6, 0x13, 0xdc, + 0xda, 0xfb, 0x17, 0xfd, 0x79, 0xf7, 0x20, 0x7, 0x8a, 0xf8, 0x65, 0x15, + 0x13, 0xec, 0xee, 0xab, 0xd7, 0xe5, 0xbb, 0xca, 0x61, 0xfb, 0x19, 0x4f, + 0x7e, 0x22, 0x24, 0x4a, 0x57, 0xc3, 0xf7, 0x1, 0x1e, 0xe, 0x5a, 0xa, + 0xad, 0xf7, 0x24, 0xf7, 0x7e, 0xf7, 0x20, 0xfb, 0x17, 0xf7, 0x17, 0x13, + 0xdc, 0xf8, 0x30, 0xc6, 0x15, 0xfb, 0x9e, 0xf7, 0x20, 0xf9, 0x79, 0x7, + 0x13, 0xda, 0xfb, 0x17, 0x3c, 0x89, 0x6, 0x13, 0xec, 0xdb, 0x55, 0x3e, + 0x96, 0x6b, 0x1b, 0xfb, 0x7, 0x20, 0x2c, 0xfb, 0x55, 0xfb, 0x51, 0xf4, + 0x37, 0xf7, 0xa, 0xe1, 0xbb, 0xbd, 0xa3, 0xa0, 0x1f, 0xfb, 0x7e, 0xf7, + 0x5b, 0x15, 0xf7, 0x19, 0xcb, 0xb5, 0xbb, 0xe5, 0xac, 0x3f, 0x28, 0xfb, + 0x1, 0x57, 0x53, 0x49, 0x24, 0x7d, 0xf4, 0xc7, 0x1e, 0xe, 0xfb, 0xa6, + 0xa0, 0x76, 0xf8, 0x37, 0xf7, 0x7, 0xfb, 0x7, 0xf7, 0x13, 0x12, 0xb9, + 0xf7, 0x12, 0xf7, 0x35, 0xb3, 0x13, 0xb8, 0xcb, 0x16, 0xf7, 0x12, 0xf7, + 0x39, 0x6, 0xf7, 0x28, 0x96, 0xf5, 0xdd, 0xa3, 0x9b, 0x7c, 0x84, 0x95, + 0x1e, 0xb3, 0xf7, 0xc, 0x5, 0x9a, 0x75, 0x62, 0x99, 0x70, 0x1b, 0x55, + 0x64, 0x66, 0x58, 0x84, 0x1f, 0x13, 0xd0, 0x89, 0xd7, 0xfb, 0x9, 0x6, + 0xe, 0x20, 0x7d, 0xf0, 0xf7, 0xfa, 0xf0, 0x1, 0xcb, 0xf7, 0x14, 0xf7, + 0x51, 0xf7, 0x1e, 0x3, 0xa9, 0xf7, 0x2b, 0x15, 0xfb, 0x2a, 0x9e, 0xf7, + 0x32, 0x7c, 0xd4, 0x1b, 0xf7, 0x40, 0xce, 0xd7, 0xdf, 0xf7, 0xa, 0x20, + 0xba, 0x2f, 0xa2, 0x1f, 0x66, 0x94, 0x21, 0x99, 0xb6, 0x1a, 0xb7, 0xcf, + 0x8c, 0xa2, 0xa4, 0xc6, 0x89, 0x4c, 0x9c, 0x1e, 0xf7, 0x17, 0xa3, 0x5, + 0xf6, 0x6d, 0x3d, 0xae, 0xfb, 0x10, 0x1b, 0xfb, 0x1, 0xfb, 0x2, 0x62, + 0xfb, 0xf, 0xfb, 0x13, 0xf6, 0x77, 0xf7, 0x32, 0x68, 0x1f, 0xab, 0x84, + 0xae, 0x7b, 0x6c, 0x1a, 0x51, 0x32, 0x8a, 0x7f, 0x5e, 0x58, 0x9a, 0xd2, + 0x7b, 0x1e, 0xe, 0x9a, 0x76, 0xf8, 0x26, 0xf3, 0xf7, 0x44, 0x77, 0x1, + 0xe4, 0xf7, 0x1a, 0x3, 0xf7, 0xc9, 0x99, 0x15, 0x7f, 0xf0, 0x5, 0x46, + 0x71, 0x75, 0x8c, 0xe5, 0x1a, 0xf7, 0x6c, 0xe6, 0xf3, 0x30, 0xf7, 0x44, + 0x7, 0xfb, 0x1a, 0x3e, 0x5, 0x28, 0x4d, 0x23, 0xc9, 0xfb, 0x6c, 0x7, + 0xfb, 0x7, 0x95, 0x44, 0xf7, 0xd, 0x99, 0xbb, 0x8d, 0x9d, 0xb7, 0x1e, + 0xe, 0x57, 0x7d, 0xf7, 0x0, 0x2b, 0xeb, 0xf8, 0x4a, 0x77, 0x12, 0xd5, + 0xf7, 0x1f, 0xf7, 0x55, 0xf7, 0x1f, 0x13, 0x78, 0xf8, 0x34, 0x89, 0x15, + 0xf7, 0x15, 0xf8, 0xaa, 0xfb, 0x1f, 0xfb, 0xbb, 0x6, 0x5c, 0x8d, 0x2b, + 0xfb, 0x7, 0x2f, 0x8f, 0xde, 0xc7, 0x1e, 0xf7, 0xbb, 0xfb, 0x1f, 0xfb, + 0xbb, 0x7, 0x13, 0xb8, 0xfb, 0x37, 0xba, 0x33, 0xf7, 0x14, 0xcf, 0xce, + 0xad, 0xc6, 0xb1, 0x1e, 0x8d, 0x6, 0xe, 0x20, 0x73, 0xa, 0x98, 0xf8, + 0xa6, 0x3, 0xf7, 0x6f, 0x16, 0xf7, 0xd, 0x6, 0xf7, 0x5f, 0xf8, 0xa8, + 0x5, 0xfb, 0x1f, 0x6, 0xfb, 0x11, 0xfb, 0xfd, 0x5, 0x8a, 0x6, 0xfb, + 0xf, 0xf7, 0xfd, 0x5, 0xfb, 0x22, 0x6, 0xe, 0xf7, 0x7, 0x73, 0xa, + 0x95, 0xf9, 0x8b, 0x3, 0xf7, 0x40, 0x16, 0xf7, 0x17, 0x6, 0xe0, 0xf7, + 0xec, 0x5, 0x8d, 0x6, 0xe1, 0xfb, 0xec, 0x5, 0xf7, 0x16, 0x6, 0xf7, + 0x37, 0xf8, 0xa8, 0x5, 0xfb, 0x19, 0x6, 0x2b, 0xfb, 0xf0, 0x6e, 0xa, + 0x38, 0xf7, 0xf0, 0x5, 0xfb, 0x17, 0x6, 0x35, 0xfb, 0xf0, 0x6e, 0xa, + 0x2d, 0xf7, 0xf0, 0x5, 0xfb, 0x18, 0x6, 0xe, 0x20, 0x73, 0xa, 0x9a, + 0xf8, 0xa2, 0x3, 0x9a, 0x16, 0xf7, 0x30, 0x6, 0xf3, 0xf7, 0x3a, 0xf2, + 0xfb, 0x3a, 0x5, 0xf7, 0x37, 0x6, 0xfb, 0x4f, 0xf7, 0xad, 0xf7, 0x3f, + 0xf7, 0x8f, 0x5, 0xfb, 0x30, 0x6, 0x2d, 0xfb, 0x25, 0x32, 0xf7, 0x25, + 0x5, 0xfb, 0x37, 0x6, 0xf7, 0x42, 0xfb, 0x95, 0x5, 0xe, 0x20, 0xfb, + 0x55, 0x76, 0xf9, 0x7e, 0x77, 0x1, 0xb6, 0x2b, 0x15, 0x97, 0xfb, 0x2, + 0x52, 0xa, 0xf7, 0x1, 0xf7, 0x12, 0xc8, 0x1f, 0xf7, 0x4a, 0xf8, 0x93, + 0x78, 0xa, 0xfc, 0xd, 0x6e, 0xa, 0xfb, 0xe, 0xf8, 0xd, 0x40, 0xa, + 0xf7, 0x58, 0xfc, 0xa8, 0x5, 0x29, 0x48, 0xa, 0xe, 0xfb, 0x37, 0x8b, + 0xf7, 0x10, 0xf7, 0xb7, 0xf7, 0x9, 0x1, 0x9f, 0x16, 0xf8, 0x60, 0xf7, + 0x10, 0xfb, 0xae, 0x6, 0xf7, 0x9e, 0xf7, 0xc8, 0x5, 0xef, 0xfc, 0x3d, + 0xfb, 0x9, 0xf7, 0x88, 0x7, 0xfb, 0x9b, 0xfb, 0xc5, 0x5, 0xe, 0x5b, + 0xa, 0xf7, 0x2a, 0xf7, 0xc, 0x14, 0xe0, 0xbb, 0xf7, 0x61, 0x15, 0xe8, + 0x94, 0x3f, 0xfb, 0x4, 0xfb, 0x2f, 0xbd, 0x51, 0xf7, 0x20, 0x1f, 0xa4, + 0xf7, 0x7, 0x6, 0x47, 0x70, 0x8e, 0xcc, 0xf7, 0x4f, 0x78, 0xbc, 0x48, + 0xb3, 0x1f, 0xca, 0xb5, 0xa2, 0xab, 0xf7, 0x5d, 0x1a, 0xcb, 0x9e, 0x90, + 0xd7, 0x1e, 0xf7, 0x7, 0x72, 0x7, 0xfb, 0x52, 0x8b, 0x32, 0xfb, 0x23, + 0xfb, 0x8, 0x7d, 0x56, 0x33, 0x1f, 0xe, 0xfc, 0x13, 0xfb, 0x5a, 0x76, + 0xfa, 0x50, 0x77, 0x1, 0xdf, 0xf7, 0x4, 0x3, 0xdf, 0xfb, 0x6f, 0x15, + 0xf7, 0x4, 0xfa, 0x50, 0x7c, 0xa, 0xe, 0x5b, 0xa, 0xf7, 0xb, 0xf7, + 0xc, 0x14, 0xe0, 0xa3, 0x3a, 0x15, 0xfb, 0x7, 0xa4, 0x7, 0xf7, 0x52, + 0x8b, 0xe4, 0xf7, 0x23, 0xf7, 0x8, 0x92, 0xc0, 0xea, 0x1f, 0xf7, 0x8, + 0x7, 0x29, 0x87, 0xd7, 0xf7, 0x4, 0xf7, 0x2f, 0x59, 0xc5, 0xfb, 0x20, + 0x1f, 0x72, 0xfb, 0x7, 0x6, 0xcf, 0xa6, 0x88, 0x4a, 0xfb, 0x4f, 0x9e, + 0x5a, 0xce, 0x63, 0x1f, 0x4c, 0x61, 0x74, 0x6b, 0xfb, 0x5d, 0x1a, 0x4b, + 0x78, 0x86, 0x3f, 0x1e, 0xe, 0x3c, 0xf7, 0x73, 0xf7, 0xc, 0x1, 0xce, + 0xf8, 0x62, 0x3, 0xc8, 0xf7, 0x37, 0x15, 0xc2, 0xbf, 0xb3, 0x91, 0xa6, + 0x1b, 0xb4, 0xae, 0x7b, 0x7b, 0xae, 0x1f, 0x7d, 0xac, 0xab, 0x7d, 0xb0, + 0x1b, 0xd0, 0xbf, 0xbc, 0x95, 0x94, 0x1f, 0xf7, 0xc, 0x7, 0x4d, 0x53, + 0x56, 0x89, 0x81, 0x1b, 0x72, 0x6b, 0x99, 0x98, 0x69, 0x1f, 0x9b, 0x64, + 0x61, 0x9c, 0x60, 0x1b, 0x76, 0x56, 0x8b, 0x4e, 0x55, 0x1f, 0xe, 0xc6, + 0x8b, 0xf7, 0xb, 0xf7, 0xa4, 0xd5, 0xf7, 0x19, 0xf7, 0xc, 0x1, 0x9f, + 0xf7, 0x93, 0x15, 0xf7, 0x1, 0x6, 0xfb, 0x2e, 0xae, 0xf7, 0x2b, 0x26, + 0xf7, 0x53, 0x1b, 0xcd, 0xc6, 0x95, 0xa0, 0xbc, 0x1f, 0xf7, 0x25, 0x7, + 0x66, 0x5f, 0x51, 0x77, 0x40, 0x1b, 0x28, 0xfb, 0xa, 0xc2, 0xdc, 0x7a, + 0x1f, 0xf8, 0xf, 0x6, 0x9e, 0xd5, 0x5, 0xfc, 0x30, 0x6, 0x9e, 0x89, + 0xa5, 0x8d, 0x9c, 0x1e, 0xf8, 0x3f, 0x6, 0x9f, 0xd5, 0x5, 0xfc, 0x46, + 0x6, 0xdb, 0x9f, 0xf7, 0xb, 0xc0, 0xef, 0x1b, 0xca, 0xba, 0x7e, 0x70, + 0xac, 0x1f, 0xae, 0xf7, 0x17, 0x5, 0x9e, 0x5b, 0x4a, 0x95, 0x4a, 0x1b, + 0xfb, 0x58, 0xfb, 0x21, 0x29, 0xfb, 0x2f, 0x64, 0x1f, 0x2e, 0x6, 0x79, + 0x41, 0x5, 0xee, 0x6, 0x8a, 0x7b, 0x8a, 0x6e, 0x8d, 0x7a, 0x8, 0x3a, + 0x6, 0xe, 0xfc, 0x15, 0xfb, 0x11, 0x76, 0x12, 0xdb, 0xf7, 0x15, 0x48, + 0xce, 0x13, 0xc0, 0xdb, 0x8a, 0x15, 0x13, 0xa0, 0xc9, 0x6, 0x89, 0x43, + 0x5c, 0x7f, 0x73, 0x83, 0xa4, 0x56, 0x18, 0xf7, 0x7, 0x45, 0xa, 0x7, + 0x13, 0xc0, 0xfb, 0x15, 0x6, 0xe, 0x20, 0xfb, 0x66, 0xf7, 0xa, 0xf8, + 0x91, 0xf4, 0xdc, 0xf7, 0x5, 0x1, 0x9b, 0x3b, 0x15, 0x71, 0xfb, 0x3, + 0x5, 0x7d, 0xb5, 0xa8, 0x86, 0xa9, 0x1b, 0xf7, 0xb, 0xb6, 0xd4, 0xd9, + 0x98, 0x1f, 0xd9, 0xf8, 0x70, 0x5, 0xe7, 0x6, 0x9c, 0xf4, 0x5, 0x2d, + 0x6, 0x90, 0xa7, 0x5, 0xb1, 0x92, 0x90, 0xa8, 0xb7, 0x1b, 0xa7, 0xa9, + 0x81, 0x87, 0x98, 0x1f, 0xa4, 0xf7, 0x5, 0x5, 0x9e, 0x52, 0x6f, 0x8d, + 0x80, 0x1b, 0xfb, 0x14, 0x67, 0x48, 0xfb, 0x28, 0x73, 0x1f, 0x30, 0x6, + 0x7a, 0x22, 0x5, 0xe6, 0x6, 0x47, 0xfc, 0x3c, 0x5, 0x4f, 0x82, 0x87, + 0x72, 0x60, 0x1b, 0x77, 0x7b, 0x8d, 0x95, 0x64, 0x1f, 0xe, 0xfb, 0x37, + 0xfb, 0x11, 0x76, 0xf7, 0x26, 0xf7, 0x13, 0x12, 0xd7, 0xf7, 0x1a, 0x46, + 0xd0, 0xe7, 0xf7, 0x1a, 0x45, 0xd1, 0x13, 0xe8, 0xf7, 0xc2, 0x16, 0x13, + 0xe4, 0xcb, 0x6, 0x98, 0xa, 0x72, 0x83, 0xa5, 0x56, 0x18, 0xf7, 0xc, + 0x61, 0xa, 0xfb, 0x76, 0xfb, 0x13, 0x15, 0x13, 0xd8, 0xcc, 0x6, 0x98, + 0xa, 0x71, 0x83, 0xa6, 0x56, 0x18, 0xf7, 0xb, 0x61, 0xa, 0xe, 0xf7, + 0xe5, 0x8b, 0x84, 0xa, 0xe7, 0xf7, 0x1f, 0xf7, 0x5b, 0xf7, 0x20, 0xf7, + 0x5b, 0xf7, 0x1f, 0x14, 0x70, 0xf9, 0x95, 0x16, 0xf7, 0x1f, 0xf7, 0x26, + 0xfb, 0x1f, 0x6, 0xfd, 0x39, 0xfb, 0x26, 0x15, 0xf7, 0x1f, 0xf7, 0x26, + 0xfb, 0x1f, 0x6, 0xf7, 0xe6, 0xfb, 0x26, 0x15, 0xf7, 0x20, 0xf7, 0x26, + 0x6d, 0xa, 0x20, 0xfb, 0x2a, 0x76, 0xf8, 0xda, 0xf7, 0x7, 0xf7, 0x54, + 0x77, 0x1, 0xf7, 0x6b, 0xf7, 0x15, 0x3, 0xf7, 0x6b, 0xfb, 0x3f, 0x15, + 0xf7, 0x15, 0xf8, 0xda, 0x74, 0xa, 0xf7, 0x54, 0xfb, 0x15, 0xfb, 0x54, + 0xfb, 0x47, 0xfb, 0x7, 0xf7, 0x47, 0x6, 0xe, 0x20, 0xfb, 0x2a, 0x76, + 0xf7, 0x3e, 0xf7, 0x7, 0xf7, 0xd3, 0xf7, 0x7, 0xf7, 0x3e, 0x77, 0x1, + 0xf7, 0x6b, 0xf7, 0x15, 0x3, 0xaf, 0x8a, 0x15, 0xf7, 0x47, 0xfb, 0x3e, + 0xf7, 0x15, 0xf7, 0x3e, 0x74, 0xa, 0xf7, 0xd3, 0x74, 0xa, 0xf7, 0x3e, + 0xfb, 0x15, 0xfb, 0x3e, 0xfb, 0x47, 0xfb, 0x7, 0xf7, 0x47, 0xfb, 0xd3, + 0xfb, 0x47, 0x6, 0xe, 0xf9, 0x39, 0xd4, 0x1, 0x81, 0xf8, 0xf0, 0x95, + 0xa, 0xd4, 0xc8, 0x42, 0x77, 0xa, 0x83, 0xa, 0xfb, 0x1b, 0x6, 0xe, + 0xf7, 0xe5, 0x78, 0xd4, 0x5a, 0x76, 0xf7, 0xab, 0xd4, 0x99, 0xd4, 0xf7, + 0x64, 0xd4, 0x91, 0x77, 0x12, 0x88, 0xeb, 0xe6, 0xeb, 0xf7, 0x1, 0xeb, + 0xe7, 0xea, 0xba, 0xeb, 0xe6, 0xeb, 0x13, 0x7b, 0xf0, 0xe8, 0xf8, 0xa8, + 0x15, 0xcc, 0x93, 0xad, 0xb0, 0xaf, 0x96, 0x6b, 0x48, 0x8a, 0x1e, 0x48, + 0x8a, 0x82, 0x61, 0x67, 0x1b, 0x66, 0x83, 0xb7, 0xcc, 0x1f, 0x2b, 0x16, + 0x51, 0x92, 0xfb, 0x10, 0xf7, 0x1a, 0xf7, 0x18, 0x95, 0xf7, 0x10, 0xc5, + 0xd1, 0x72, 0xf1, 0xfb, 0x9, 0xfb, 0x10, 0x7a, 0xfb, 0x5, 0x50, 0x1e, + 0xf7, 0x1d, 0xfc, 0xb8, 0x15, 0xec, 0x6, 0x13, 0x77, 0xf0, 0xf7, 0xc1, + 0xf9, 0x6a, 0x5, 0x2a, 0x6, 0x5d, 0xfc, 0xb2, 0x15, 0x13, 0xbb, 0xf0, + 0x50, 0x91, 0xfb, 0x14, 0xf7, 0x1b, 0xf7, 0x1c, 0x91, 0xf7, 0x1f, 0xbb, + 0xd0, 0x72, 0xee, 0xfb, 0x9, 0x71, 0xa, 0x94, 0xa9, 0xaf, 0xb2, 0x93, + 0x6d, 0x4a, 0x48, 0x83, 0x5d, 0x64, 0x67, 0x82, 0xb9, 0xce, 0x1e, 0xf7, + 0x7e, 0x16, 0x50, 0x92, 0xfb, 0x14, 0xf7, 0x1a, 0xf7, 0x1b, 0x92, 0xf7, + 0x1f, 0xbb, 0xd0, 0x73, 0xee, 0xfb, 0xa, 0x71, 0xa, 0x93, 0xa9, 0xb0, + 0xaf, 0x95, 0x6d, 0x4a, 0x4e, 0x85, 0x56, 0x63, 0x5e, 0x8b, 0xc9, 0xbf, + 0x1e, 0xe, 0x8f, 0x78, 0xf7, 0xe, 0xf8, 0x8c, 0xf7, 0xb, 0x1, 0xcc, + 0xf7, 0x21, 0xf7, 0xa9, 0xf7, 0x26, 0x3, 0xb2, 0xf7, 0x78, 0x15, 0xfb, + 0x84, 0x72, 0xa, 0xbd, 0xf7, 0x40, 0xf7, 0x45, 0xfb, 0x2a, 0xae, 0xfb, + 0x3, 0xa5, 0x1f, 0xfb, 0x9, 0xa7, 0x5e, 0x95, 0xb9, 0x1a, 0xc5, 0xda, + 0xa3, 0xb6, 0xf7, 0x8, 0x96, 0x47, 0x66, 0x91, 0x1e, 0xf7, 0x28, 0x91, + 0x5, 0xf7, 0x37, 0x85, 0xfb, 0x18, 0xc2, 0xfb, 0x23, 0x1b, 0xfb, 0x69, + 0x59, 0xfb, 0xe, 0x3c, 0xfb, 0x33, 0xf7, 0x35, 0x64, 0xd3, 0x78, 0x1f, + 0xf7, 0x1a, 0x6b, 0xbe, 0x7e, 0x4f, 0x1a, 0x5c, 0x61, 0x56, 0x25, 0xfb, + 0x18, 0x78, 0xf0, 0xb0, 0x84, 0x1e, 0xe3, 0xf8, 0xbd, 0x15, 0xf7, 0x14, + 0x6, 0xf4, 0xf7, 0x22, 0x5, 0xfb, 0x5, 0x6, 0x56, 0x41, 0x51, 0xd5, + 0x5, 0x7c, 0xa, 0xe, 0x5d, 0xa, 0xf7, 0x49, 0xd7, 0x15, 0xd0, 0x6, + 0x39, 0xf7, 0x64, 0xdd, 0xf7, 0x5c, 0x5, 0x46, 0x6, 0x29, 0xfb, 0x5c, + 0x5, 0xe, 0xf7, 0xe5, 0x78, 0xf7, 0x13, 0xfb, 0x7, 0xf7, 0x10, 0xf7, + 0x59, 0xf7, 0x10, 0xf7, 0x37, 0xf7, 0x10, 0xfb, 0x7, 0xf7, 0x13, 0x12, + 0xb0, 0xf7, 0x27, 0xf7, 0xcd, 0xf7, 0x19, 0x13, 0x76, 0xf8, 0x8e, 0x84, + 0x15, 0xf8, 0x5b, 0xf7, 0x10, 0xfb, 0xdf, 0xf7, 0x59, 0xf7, 0xad, 0xf7, + 0x10, 0xfb, 0xad, 0xf7, 0x37, 0xf7, 0xd1, 0xf7, 0x10, 0xfc, 0x4d, 0x3a, + 0x89, 0x6, 0x13, 0xae, 0xc2, 0x64, 0x5e, 0xb1, 0x37, 0x1b, 0xfb, 0x48, + 0xfb, 0xb, 0xfb, 0x26, 0xfb, 0x71, 0xfb, 0x7c, 0xeb, 0xfb, 0x31, 0xf7, + 0x55, 0xc0, 0xdb, 0x99, 0xdf, 0xba, 0x1f, 0x13, 0x6e, 0xfb, 0xd6, 0xf7, + 0xb7, 0x15, 0xf7, 0x21, 0xaf, 0xee, 0xf7, 0x8, 0xf7, 0x0, 0xc0, 0x3c, + 0xfb, 0x35, 0x1e, 0x13, 0xb6, 0xfb, 0x5b, 0x3d, 0x4c, 0x2e, 0x29, 0x5f, + 0xcf, 0xf7, 0x56, 0x1e, 0xe, 0xfc, 0x15, 0xf8, 0x6f, 0x76, 0xf7, 0xa5, + 0x77, 0x12, 0xd0, 0xf7, 0x15, 0x17, 0xd0, 0xf8, 0x5a, 0x15, 0xf7, 0x15, + 0xf7, 0x10, 0x6, 0x13, 0xe0, 0x4d, 0x6, 0x8d, 0xd4, 0xba, 0x9a, 0xa3, + 0x93, 0x72, 0xc0, 0x18, 0xfb, 0x7, 0x62, 0x8b, 0x35, 0x51, 0x1a, 0xe, + 0xfc, 0x15, 0xf8, 0x66, 0x76, 0xf7, 0xa5, 0x77, 0x12, 0xdb, 0xf7, 0x15, + 0x48, 0xce, 0x13, 0xe0, 0xe9, 0xf8, 0x51, 0x15, 0xf7, 0x7, 0x45, 0xa, + 0xfb, 0x15, 0xfb, 0x13, 0x7, 0x13, 0xd0, 0xc9, 0x6, 0x89, 0x42, 0x5c, + 0x7f, 0x73, 0x83, 0x8, 0xe, 0xfb, 0x37, 0xf8, 0x5a, 0xf7, 0x10, 0xf7, + 0x29, 0x77, 0x12, 0xcb, 0xd1, 0x45, 0xf7, 0x1a, 0xe7, 0xd0, 0x46, 0xf7, + 0x1a, 0x13, 0xd8, 0xcb, 0xf8, 0x5a, 0x15, 0xf7, 0x1a, 0xf7, 0x10, 0x6, + 0x13, 0xd4, 0x4b, 0x6, 0x8d, 0xd4, 0xbc, 0x9a, 0xa4, 0x93, 0x71, 0xc0, + 0x18, 0xfb, 0xc, 0x62, 0x8b, 0x34, 0x52, 0x1a, 0xf7, 0x76, 0x33, 0x15, + 0xf7, 0x1a, 0xf7, 0x10, 0x6, 0x13, 0xe4, 0x4a, 0x6, 0x8d, 0xd4, 0xbc, + 0x9a, 0xa5, 0x93, 0x70, 0xc0, 0x18, 0xfb, 0xb, 0x62, 0x8b, 0x34, 0x52, + 0x1a, 0xe, 0xfb, 0x37, 0xf8, 0x66, 0x76, 0xf7, 0x26, 0xf7, 0x13, 0x1, + 0xd7, 0xf7, 0x1a, 0xe7, 0xf7, 0x1a, 0x3, 0xf7, 0xd0, 0xf8, 0x51, 0x15, + 0xf7, 0xc, 0x45, 0xa, 0xfb, 0x1a, 0xfb, 0x13, 0xcb, 0x7, 0x98, 0xa, + 0x72, 0x83, 0x8, 0xfb, 0x5b, 0x56, 0x15, 0xf7, 0xb, 0x45, 0xa, 0xfb, + 0x1a, 0xfb, 0x13, 0xcc, 0x7, 0x98, 0xa, 0x71, 0x83, 0x8, 0xe, 0xfb, + 0xcd, 0xf7, 0x6b, 0x76, 0xf7, 0xde, 0x77, 0x1, 0x95, 0xf7, 0xde, 0x3, + 0x95, 0xf7, 0xfb, 0x15, 0x30, 0xd5, 0x41, 0xe5, 0xe6, 0xd6, 0xd4, 0xe7, + 0xe8, 0x40, 0xd3, 0x30, 0x30, 0x42, 0x42, 0x2f, 0x1e, 0xe, 0x20, 0xf7, + 0x77, 0xf5, 0x1, 0xf7, 0x77, 0x4, 0xf8, 0xc0, 0xf5, 0xfc, 0xc0, 0x6, + 0xe, 0xf7, 0xe5, 0xf7, 0x77, 0xf5, 0x1, 0xf7, 0x77, 0x4, 0xfa, 0x7c, + 0xf5, 0xfe, 0x7c, 0x6, 0xe, 0xf8, 0xf8, 0xf7, 0x11, 0x21, 0x76, 0xb7, + 0xde, 0x8a, 0x77, 0x12, 0x13, 0x60, 0x7a, 0xf8, 0xf6, 0x15, 0xcf, 0x65, + 0xa, 0xab, 0xaf, 0x1b, 0xab, 0xa6, 0x81, 0x80, 0xa6, 0x1f, 0x13, 0x80, + 0x81, 0xa6, 0xa5, 0x80, 0xa8, 0x1b, 0xe9, 0x8b, 0xee, 0xa5, 0x1f, 0x46, + 0x7a, 0xa, 0x6d, 0x66, 0x1b, 0x7f, 0x71, 0x95, 0x96, 0x6d, 0x1f, 0x13, + 0x50, 0x96, 0x6d, 0x69, 0x96, 0x71, 0x1b, 0x44, 0x71, 0x59, 0x3f, 0x1f, + 0xe, 0xf7, 0xe5, 0xf7, 0xdb, 0x76, 0xf7, 0xe7, 0xd4, 0x1, 0xf7, 0x5b, + 0xe3, 0xf7, 0x54, 0xdf, 0xf7, 0xca, 0xde, 0x3, 0xf7, 0x5b, 0xf7, 0xc6, + 0x15, 0xe3, 0xf7, 0xe7, 0xf7, 0x2b, 0xd4, 0xfc, 0x1e, 0x42, 0xf7, 0x2f, + 0x6, 0xf7, 0xac, 0xfb, 0xe7, 0x15, 0xdf, 0xf7, 0xdc, 0x8d, 0x6, 0xf7, + 0x5, 0xfb, 0xdc, 0x5, 0xda, 0x6, 0xf7, 0x5, 0xf7, 0xdc, 0x5, 0x8e, + 0xfb, 0xdc, 0xde, 0xf8, 0x30, 0xfb, 0x1e, 0x6, 0x28, 0xfb, 0xaf, 0x6e, + 0xa, 0x27, 0xf7, 0xaf, 0x5, 0x81, 0xa, 0x20, 0x7d, 0xed, 0xf8, 0xa1, + 0xf7, 0x21, 0x1, 0xbc, 0xf7, 0x15, 0xf7, 0x5f, 0xf7, 0x1e, 0x3, 0xa9, + 0xf7, 0x26, 0x15, 0xfb, 0x1c, 0x9e, 0xf7, 0x33, 0x73, 0xd4, 0x1b, 0xf7, + 0x40, 0xcd, 0xe8, 0xdc, 0xf7, 0x6, 0x22, 0xa6, 0x2e, 0xa1, 0x1f, 0x66, + 0x94, 0x21, 0x98, 0xb5, 0x1a, 0xb5, 0xd2, 0x8c, 0xa2, 0xa4, 0xc3, 0x89, + 0x4e, 0x9c, 0x1e, 0xf7, 0x18, 0xa3, 0x5, 0xf2, 0x6d, 0x3d, 0xad, 0xfb, + 0x11, 0x1b, 0xfb, 0x2, 0xfb, 0x2, 0x63, 0xfb, 0xb, 0xfb, 0xf, 0xf2, + 0x75, 0xf7, 0x33, 0x69, 0x1f, 0xab, 0x84, 0xb1, 0x7f, 0x6d, 0x1a, 0x53, + 0x33, 0x8a, 0x7f, 0x5e, 0x58, 0x99, 0xd0, 0x7a, 0x1e, 0xb5, 0xf8, 0x4e, + 0x15, 0xf7, 0x14, 0x6, 0xf3, 0xf7, 0x21, 0x5, 0x7c, 0xa, 0x56, 0x42, + 0x51, 0xd4, 0x5, 0xfb, 0x3, 0x6, 0xe, 0x5d, 0xa, 0xde, 0xd7, 0x15, + 0xcf, 0x6, 0xee, 0xf7, 0x5f, 0x28, 0xf7, 0x61, 0x5, 0x47, 0x6, 0xdc, + 0xfb, 0x61, 0x5, 0xe, 0xf7, 0xad, 0x7d, 0xf7, 0x0, 0xfb, 0x0, 0xf7, + 0x8, 0xf7, 0xf, 0xe4, 0xf7, 0x8, 0xf7, 0x8, 0x24, 0xf2, 0x12, 0xad, + 0xf7, 0x24, 0xf7, 0x8b, 0xf7, 0x1f, 0x13, 0xb6, 0xf8, 0x7c, 0xc7, 0x15, + 0x41, 0xd4, 0xe3, 0x8b, 0x9c, 0x1b, 0xe4, 0xf7, 0x3, 0xb1, 0xf7, 0x10, + 0xb2, 0x1f, 0xfb, 0x1c, 0xa2, 0x5, 0x6f, 0x81, 0x70, 0x5a, 0x49, 0x1b, + 0x4b, 0x6a, 0xbb, 0xde, 0x86, 0x1f, 0xf7, 0xf0, 0x6, 0xf7, 0x82, 0x29, + 0xde, 0xfb, 0x28, 0xfb, 0x0, 0x57, 0x52, 0x7a, 0x7a, 0x1e, 0xd0, 0x46, + 0x35, 0x90, 0x6c, 0x1b, 0xfb, 0x4c, 0x36, 0xfb, 0x18, 0xfb, 0x24, 0xfb, + 0x20, 0xe7, 0xfb, 0x24, 0xf7, 0x45, 0xef, 0xc5, 0xbc, 0xa4, 0xa6, 0x1f, + 0xfb, 0xca, 0xf7, 0x66, 0x15, 0xf7, 0xc, 0xc0, 0xb3, 0xd3, 0xce, 0xc2, + 0x53, 0x23, 0x1e, 0x13, 0x6e, 0xfb, 0x2c, 0x2e, 0x7b, 0x6e, 0x2c, 0x6d, + 0xf7, 0x8, 0xbf, 0x1e, 0xf8, 0x17, 0xb7, 0x15, 0xa6, 0x8d, 0x91, 0xf1, + 0xe8, 0x1b, 0xf0, 0x94, 0xfb, 0x0, 0x76, 0x8c, 0x1f, 0xe, 0x8f, 0xa0, + 0x76, 0xf9, 0xb2, 0xf7, 0x9, 0x12, 0xf7, 0x45, 0xf7, 0x5, 0x72, 0xf7, + 0x1d, 0x73, 0xf7, 0x5, 0x13, 0xd0, 0x70, 0xa, 0xf8, 0x33, 0x4f, 0xa, + 0xfc, 0x32, 0x5, 0x13, 0xe8, 0x33, 0xf8, 0x85, 0x8b, 0xa, 0xf7, 0x5d, + 0xfb, 0x9, 0x8b, 0xa, 0xe, 0xfb, 0x39, 0x76, 0xf8, 0xd9, 0xf7, 0x1d, + 0x12, 0xe5, 0xf7, 0x2e, 0xfb, 0x28, 0xf7, 0x22, 0x13, 0xd0, 0xeb, 0xf8, + 0x1f, 0x15, 0xf7, 0x22, 0xf7, 0x1d, 0xfb, 0x22, 0x6, 0x13, 0xe0, 0x85, + 0xfc, 0xba, 0x15, 0xfb, 0x3c, 0xf7, 0x2e, 0xf7, 0x3c, 0x7, 0x65, 0xf8, + 0x0, 0x5, 0x38, 0x6, 0xe, 0x20, 0x2a, 0x76, 0xf3, 0xf7, 0x1, 0xf7, + 0xcf, 0xf5, 0xf7, 0x4, 0x77, 0x1, 0xad, 0xf7, 0x1a, 0x3, 0xf7, 0x42, + 0x90, 0x15, 0x6c, 0x21, 0xc6, 0x7a, 0xab, 0xf7, 0x0, 0x5, 0x89, 0x94, + 0x9b, 0x89, 0xa4, 0x1b, 0xf7, 0x18, 0xdb, 0xc8, 0xf7, 0xe, 0xa7, 0x1f, + 0xfb, 0x1b, 0xa2, 0x5, 0x6e, 0x86, 0x77, 0x47, 0x3b, 0x1b, 0x7f, 0x8a, + 0x8c, 0x8c, 0x87, 0x1f, 0xe5, 0xf7, 0xb4, 0x9d, 0x78, 0x90, 0x74, 0x8d, + 0x7f, 0x19, 0xf7, 0x1b, 0xa2, 0x70, 0xe8, 0x58, 0xad, 0x5c, 0x9d, 0x19, + 0xb2, 0xf7, 0x4, 0x4f, 0x9c, 0x64, 0xfb, 0x7, 0x5, 0x8c, 0x81, 0x7d, + 0x8d, 0x75, 0x1b, 0xfb, 0x62, 0x5d, 0xfb, 0x35, 0x25, 0x3a, 0xb7, 0xfb, + 0x25, 0xeb, 0x75, 0x1f, 0xb1, 0xf7, 0xc, 0x15, 0x67, 0xb4, 0x83, 0xce, + 0x9f, 0x1a, 0xab, 0x92, 0xf7, 0x1c, 0xf7, 0x11, 0x80, 0x1e, 0xe, 0x20, + 0x7b, 0xf7, 0xf, 0xf7, 0x50, 0xf7, 0x1, 0xf7, 0x62, 0xf7, 0x0, 0x1, + 0xdd, 0xf7, 0x14, 0x3, 0xd9, 0x7b, 0x15, 0x9b, 0xa2, 0xb0, 0xa5, 0xc3, + 0x1b, 0xab, 0xb8, 0x82, 0x81, 0xb4, 0x1f, 0x80, 0xb9, 0xb4, 0x7f, 0x97, + 0x1b, 0xbc, 0xbd, 0x9d, 0x9c, 0xaa, 0x1f, 0x58, 0xf7, 0x7, 0x5, 0x81, + 0x74, 0x67, 0x7a, 0x66, 0x1b, 0x72, 0x79, 0x92, 0x92, 0x75, 0x1f, 0x91, + 0x77, 0x73, 0x91, 0x67, 0x1b, 0x83, 0x6c, 0x8b, 0x7d, 0x73, 0x1f, 0x89, + 0x8d, 0xb1, 0xb4, 0xb4, 0xbd, 0x83, 0xde, 0x19, 0xf7, 0x11, 0xf7, 0x1, + 0xfb, 0x27, 0x6, 0x82, 0xa4, 0x7d, 0xc2, 0xae, 0x1a, 0xb2, 0xa5, 0xbf, + 0xc8, 0xd4, 0x98, 0x42, 0x73, 0x90, 0x1e, 0xf7, 0x13, 0x9e, 0x5, 0xf7, + 0x3f, 0x73, 0xfb, 0x1b, 0x9a, 0x50, 0x1b, 0xfb, 0x1c, 0x3c, 0x2e, 0x22, + 0x7e, 0x8c, 0x5a, 0x9d, 0x55, 0x1f, 0x42, 0xfb, 0x1, 0xec, 0x6, 0x98, + 0x3d, 0x5b, 0x45, 0x4d, 0x5d, 0x8, 0xe, 0x20, 0xec, 0x76, 0xb5, 0xf7, + 0x16, 0xf7, 0x6c, 0xf7, 0x16, 0xb5, 0x77, 0x1, 0xb2, 0xf7, 0x17, 0xf7, + 0x6e, 0xf7, 0x16, 0x3, 0xe6, 0xd8, 0x15, 0xd2, 0xd2, 0x5, 0x78, 0xae, + 0xb3, 0x80, 0xb4, 0x1b, 0xb7, 0xb5, 0x97, 0x9e, 0xaa, 0x1f, 0xd5, 0x42, + 0xe5, 0xe6, 0x43, 0xd3, 0x5, 0x9e, 0xae, 0x97, 0xb3, 0xb5, 0x1a, 0xab, + 0x83, 0xb5, 0x74, 0xb6, 0x1e, 0xd3, 0xd3, 0x30, 0xe6, 0x42, 0x42, 0x5, + 0x95, 0x78, 0x66, 0xa0, 0x4e, 0x1b, 0x4e, 0x63, 0x76, 0x81, 0x7a, 0x1f, + 0x42, 0xd4, 0x31, 0x2b, 0xd2, 0x46, 0x5, 0x78, 0x68, 0x81, 0x64, 0x62, + 0x1a, 0x71, 0x8f, 0x60, 0xa6, 0x5b, 0x1e, 0x44, 0x45, 0x5, 0xf7, 0x3f, + 0xf7, 0x4f, 0x15, 0xc7, 0xbb, 0xbb, 0xc7, 0xc7, 0xbd, 0x5b, 0x4f, 0x4f, + 0x59, 0x5b, 0x4f, 0x4f, 0x5b, 0xbb, 0xc7, 0x1e, 0xe, 0x20, 0xa0, 0x76, + 0xf9, 0x4e, 0x77, 0x1, 0xf7, 0x61, 0xf7, 0x23, 0x3, 0x9b, 0xf7, 0x2a, + 0x15, 0xf7, 0x51, 0xfb, 0x2a, 0xf7, 0x23, 0xf7, 0x2a, 0xf7, 0x54, 0xf5, + 0xfb, 0x54, 0xd0, 0xf7, 0x54, 0xf5, 0xfb, 0xa, 0x6, 0xf7, 0x23, 0xf7, + 0x9f, 0x96, 0xa, 0xfb, 0x16, 0xfb, 0xa0, 0x6e, 0xa, 0xfb, 0x14, 0xf7, + 0xa0, 0x96, 0xa, 0xf7, 0x22, 0xfb, 0x9f, 0x5, 0xfb, 0x9, 0x21, 0xf7, + 0x51, 0x46, 0xfb, 0x51, 0x6, 0xe, 0xfc, 0x13, 0x8d, 0x76, 0xf9, 0x88, + 0x77, 0x1, 0xdf, 0xf7, 0x4, 0x3, 0xdf, 0x78, 0x15, 0xf7, 0x4, 0xf7, + 0xcb, 0x7c, 0xa, 0xf7, 0x1b, 0x4, 0xf7, 0x4, 0xf7, 0xca, 0x7c, 0xa, + 0xe, 0x20, 0xfb, 0x4c, 0xf1, 0xf9, 0x57, 0xf1, 0x12, 0xad, 0xf7, 0x10, + 0x38, 0xf7, 0x1c, 0xf7, 0x27, 0xf7, 0x1a, 0x32, 0xf7, 0xb, 0x13, 0xe8, + 0xc8, 0x7f, 0x15, 0xfb, 0x7, 0x9b, 0xe6, 0x52, 0xf7, 0x8, 0x1b, 0xf7, + 0x2d, 0xc2, 0xe3, 0xd7, 0xaf, 0x7e, 0xb7, 0x5e, 0xb5, 0x1f, 0x13, 0xd4, + 0xa9, 0x9e, 0xc5, 0xb7, 0xe0, 0x1a, 0xd0, 0x67, 0xc0, 0x23, 0xcd, 0x1e, + 0x57, 0xab, 0xfb, 0xb, 0xcb, 0xba, 0x1a, 0x9f, 0x95, 0xa3, 0xbb, 0xba, + 0xaa, 0x71, 0x5d, 0x8d, 0x1e, 0xf7, 0x19, 0x9a, 0x5, 0xc5, 0x83, 0x60, + 0xf0, 0xfb, 0x36, 0x1b, 0xfb, 0xe, 0x43, 0x49, 0x35, 0x53, 0xad, 0x67, + 0x99, 0x7c, 0x1f, 0x13, 0xe8, 0x44, 0x61, 0x79, 0x48, 0x60, 0x1a, 0x24, + 0xb6, 0x6d, 0xf7, 0x1e, 0x36, 0x1e, 0xbd, 0x6c, 0xe8, 0x5f, 0x59, 0x1a, + 0x65, 0x63, 0x7a, 0x69, 0x4c, 0x77, 0xb8, 0xb3, 0x83, 0x1e, 0xf7, 0x3c, + 0xf7, 0x30, 0x15, 0xfb, 0x1f, 0xe7, 0x5, 0x61, 0xa8, 0x75, 0xa8, 0xac, + 0x1a, 0xaf, 0xa9, 0xa3, 0x96, 0x90, 0x1e, 0xf7, 0x18, 0x2d, 0x5, 0x13, + 0xe4, 0xb8, 0x6a, 0xa6, 0x78, 0x6b, 0x1a, 0x72, 0x7a, 0x75, 0x72, 0x74, + 0x1e, 0xe, 0xf8, 0xfa, 0xf7, 0x7, 0x1, 0x91, 0xf7, 0x7, 0xe6, 0xf7, + 0x7, 0x3, 0x91, 0x44, 0xa, 0xe, 0xd5, 0x78, 0xd6, 0xe7, 0xd2, 0xf7, + 0xab, 0xd2, 0xe8, 0xd6, 0x1, 0x80, 0xd6, 0xf7, 0xb, 0xe2, 0xf8, 0x28, + 0xd6, 0x3, 0xcb, 0xf7, 0xfb, 0x15, 0xf7, 0x3c, 0xf7, 0x1d, 0xf7, 0x1b, + 0xf7, 0x3d, 0x58, 0xa, 0xfb, 0x3d, 0xfb, 0x1d, 0xf7, 0x1b, 0xf7, 0x3c, + 0x1e, 0xf8, 0x22, 0x53, 0x15, 0x76, 0x84, 0x78, 0x4c, 0x45, 0x1b, 0x5e, + 0x58, 0xad, 0xf5, 0xbd, 0x99, 0xe4, 0xe4, 0xc9, 0x9e, 0x5b, 0x77, 0x92, + 0x1f, 0xdb, 0x9e, 0x5, 0xaf, 0x7e, 0x66, 0xdf, 0xfb, 0xa, 0x1b, 0xfb, + 0x10, 0x49, 0x36, 0xfb, 0x11, 0xfb, 0x2f, 0xeb, 0x53, 0xe2, 0xcc, 0xdc, + 0xa9, 0xed, 0xa8, 0x1f, 0xfc, 0xbc, 0xde, 0x15, 0xfb, 0x65, 0xf7, 0x3e, + 0xfb, 0x3d, 0xf7, 0x67, 0x57, 0xa, 0xfb, 0x67, 0x80, 0xa, 0xfb, 0xb9, + 0xf7, 0xa8, 0xe7, 0xf7, 0xa5, 0xeb, 0x1, 0xa1, 0xef, 0xf7, 0x4, 0xed, + 0x3, 0xf7, 0x93, 0xf7, 0xb3, 0x15, 0xe7, 0x6, 0x7c, 0xaf, 0x8b, 0xa0, + 0xd3, 0x1a, 0xf7, 0x27, 0x7, 0xf0, 0x8b, 0xd4, 0xfb, 0x29, 0x3a, 0x5a, + 0x6b, 0x2f, 0x7a, 0x1e, 0xe6, 0x73, 0x5, 0x8c, 0x8d, 0x8f, 0x8c, 0x8e, + 0x1e, 0xa5, 0x93, 0x93, 0x9d, 0xb1, 0x1b, 0xba, 0x8c, 0x79, 0x5a, 0x8d, + 0x1f, 0x78, 0x83, 0x73, 0x85, 0x79, 0x86, 0x8, 0x35, 0x74, 0x4a, 0x7f, + 0xfb, 0x0, 0x1a, 0x41, 0xb5, 0x4d, 0xd6, 0xc1, 0xaf, 0xae, 0x9e, 0x9a, + 0x1e, 0x8d, 0x80, 0x8e, 0x7b, 0x91, 0x7b, 0x8, 0x76, 0xf7, 0x62, 0x15, + 0x72, 0x7, 0x30, 0x5a, 0x82, 0x7c, 0x69, 0x7d, 0xa4, 0x9e, 0xb3, 0xaa, + 0x9a, 0xbd, 0x97, 0x1e, 0x9f, 0x90, 0x8f, 0x8f, 0x92, 0x90, 0x8, 0xe, + 0x20, 0x5d, 0xa, 0xf8, 0x10, 0xd7, 0x53, 0xa, 0x61, 0xfb, 0x64, 0x53, + 0xa, 0xe, 0x3c, 0xf7, 0x15, 0x76, 0x1, 0xf8, 0x20, 0xf7, 0x13, 0x3, + 0xb3, 0xf7, 0xc6, 0x15, 0xf7, 0xf9, 0xfb, 0x5a, 0xf7, 0x13, 0xf7, 0xcb, + 0xfc, 0x78, 0x6, 0xe, 0x3c, 0xf7, 0x59, 0xf7, 0x4, 0x1, 0xb3, 0xf7, + 0x59, 0x15, 0xf8, 0x8c, 0xf7, 0x4, 0xfc, 0x8c, 0x6, 0xe, 0xd5, 0x78, + 0xd6, 0xf7, 0x9e, 0xca, 0xf7, 0x1, 0xcb, 0xf3, 0xd6, 0x1, 0x80, 0xd6, + 0xf7, 0x19, 0xdc, 0xf7, 0x32, 0xe2, 0xf7, 0x2a, 0xd6, 0x3, 0xf7, 0x59, + 0xf7, 0x31, 0x15, 0xdc, 0xf7, 0x39, 0xab, 0x6, 0xb4, 0x9e, 0x85, 0x2e, + 0xbb, 0x1f, 0xa7, 0x49, 0x5, 0xf0, 0x6, 0x5c, 0xdc, 0x67, 0xc7, 0x7f, + 0x9f, 0x66, 0x99, 0x19, 0x8d, 0x7, 0xdd, 0x96, 0xa5, 0xc3, 0xb8, 0x1a, + 0xf0, 0x34, 0x96, 0xfb, 0x13, 0x1e, 0x7c, 0xa, 0xdc, 0xfb, 0x41, 0x15, + 0xf7, 0x1, 0xac, 0x7, 0xd2, 0xc1, 0x8b, 0x56, 0x53, 0x57, 0x8b, 0x42, + 0x1f, 0xfb, 0x8b, 0x71, 0x15, 0xf7, 0x3c, 0xf7, 0x1d, 0xf7, 0x1b, 0xf7, + 0x3c, 0x58, 0xa, 0xfb, 0x3c, 0xfb, 0x1d, 0xf7, 0x1b, 0xf7, 0x3c, 0x1e, + 0x40, 0x16, 0xfb, 0x65, 0xf7, 0x3e, 0xfb, 0x3d, 0xf7, 0x66, 0x57, 0xa, + 0xfb, 0x66, 0x80, 0xa, 0xf8, 0xf0, 0xd5, 0x1, 0x85, 0xf7, 0xed, 0x3, + 0x85, 0xf8, 0xf0, 0x15, 0xf7, 0xed, 0xd5, 0xfb, 0xed, 0x6, 0xe, 0xfb, + 0x9b, 0xf8, 0x3e, 0xd6, 0xf7, 0x1c, 0xd6, 0x1, 0xc4, 0xd5, 0xf7, 0x1e, + 0xd5, 0x3, 0xc4, 0xf8, 0xcf, 0x15, 0x3b, 0xca, 0x4a, 0xda, 0xda, 0xcc, + 0xcc, 0xdb, 0xdb, 0x4a, 0xc8, 0x3c, 0x3c, 0x4c, 0x4e, 0x3b, 0x1e, 0xd5, + 0x8a, 0x15, 0xb1, 0xaa, 0xa8, 0xb1, 0xb1, 0xaa, 0x6f, 0x64, 0x65, 0x6c, + 0x6c, 0x65, 0x65, 0x6c, 0xaa, 0xb1, 0x1e, 0xe, 0x3c, 0x8b, 0xe6, 0xf7, + 0x42, 0xf7, 0x6, 0xf7, 0x13, 0x90, 0xa, 0x16, 0xf8, 0x8c, 0xe6, 0xfc, + 0x8c, 0x6, 0xf7, 0x50, 0xb7, 0x15, 0xf7, 0x13, 0xf7, 0x16, 0xf7, 0x51, + 0xf7, 0x6, 0xfb, 0x51, 0xf7, 0x13, 0xfb, 0x13, 0xfb, 0x13, 0xfb, 0x50, + 0xfb, 0x6, 0xf7, 0x50, 0x6, 0xe, 0xf7, 0xaf, 0xdc, 0xf7, 0x9d, 0xdc, + 0x1, 0xf7, 0x76, 0xed, 0x3, 0x94, 0xf7, 0xaf, 0x15, 0xf7, 0xcf, 0xdc, + 0xfb, 0x46, 0x6, 0xf7, 0x9, 0xe4, 0xc8, 0xbc, 0xdc, 0x1a, 0xbd, 0x64, + 0xd8, 0xfb, 0x4, 0xfb, 0x21, 0x83, 0x27, 0x67, 0x87, 0x1e, 0xed, 0x82, + 0x5, 0xa7, 0x8d, 0x90, 0xaf, 0xbb, 0x1b, 0x92, 0xb9, 0x8b, 0x5d, 0x67, + 0x73, 0x78, 0x4b, 0x54, 0x1f, 0x28, 0x36, 0x6d, 0x69, 0x44, 0x1a, 0xe, + 0xf7, 0xa3, 0xdd, 0xf7, 0xa7, 0xdd, 0x1, 0xf7, 0x61, 0xee, 0x3, 0x93, + 0xf8, 0x27, 0x15, 0xfb, 0xf, 0x9a, 0xf7, 0x2, 0x82, 0xab, 0x1b, 0xe9, + 0xce, 0xca, 0xd6, 0xbd, 0x70, 0xae, 0x5e, 0x9d, 0x1f, 0xad, 0xa1, 0x9b, + 0xa6, 0xa9, 0x1a, 0xc8, 0x53, 0xc5, 0x34, 0xfb, 0xe, 0x7b, 0x37, 0x63, + 0x82, 0x1e, 0xea, 0x7d, 0x5, 0xa0, 0x8d, 0x8f, 0xae, 0xb9, 0x1b, 0x9e, + 0xa4, 0x83, 0x6e, 0x5c, 0x50, 0x8c, 0x7d, 0x1f, 0x7f, 0x38, 0x5, 0xb8, + 0x9f, 0xc5, 0x79, 0x54, 0x1a, 0x6f, 0x7a, 0x6f, 0x62, 0x57, 0x87, 0xb5, + 0x9d, 0x87, 0x1e, 0xe, 0xf8, 0xf0, 0x84, 0xa, 0xf7, 0x0, 0xf8, 0xf0, + 0x15, 0xed, 0x6, 0xf7, 0x2a, 0x83, 0xa, 0xfb, 0x40, 0x6, 0xe, 0x57, + 0xfb, 0x4e, 0x76, 0xf7, 0x53, 0xf7, 0x5, 0x27, 0xef, 0xf8, 0x47, 0x77, + 0x49, 0xa, 0x13, 0xdc, 0xf7, 0x61, 0xc9, 0x15, 0x8d, 0x6, 0x68, 0x9c, + 0x9e, 0x60, 0xcb, 0x1b, 0xbc, 0xb1, 0xaf, 0xb5, 0xa0, 0x1f, 0x8d, 0x6, + 0x13, 0xbc, 0x4a, 0xf7, 0x14, 0xf8, 0xab, 0xfb, 0x1f, 0xfb, 0x87, 0x7, + 0x3e, 0x87, 0xfb, 0x7, 0x2c, 0x2c, 0x84, 0xf7, 0x8, 0xd9, 0x1e, 0xf7, + 0x85, 0xfb, 0x1f, 0xfd, 0x77, 0xf7, 0x1f, 0x7, 0xe, 0x20, 0xfb, 0x3e, + 0x76, 0xf9, 0x92, 0xf7, 0x11, 0x1, 0xf8, 0x6, 0xf7, 0x6, 0x3, 0xf7, + 0x4a, 0xfb, 0x53, 0x15, 0xf7, 0x7, 0xf9, 0x92, 0xd4, 0xfd, 0x92, 0xf7, + 0x6, 0xf9, 0x92, 0xc2, 0xf7, 0x11, 0xfb, 0xb4, 0x6, 0xfb, 0x2e, 0x22, + 0x5f, 0xfb, 0x2d, 0x5a, 0xa1, 0xfb, 0x27, 0xf7, 0x3c, 0x1f, 0xe, 0xfc, + 0x15, 0xf7, 0x40, 0xf7, 0x36, 0x1, 0xf7, 0x8, 0xf7, 0x36, 0x3, 0xc5, + 0xf7, 0x40, 0x15, 0xf7, 0x36, 0xf7, 0x36, 0xfb, 0x36, 0x6, 0xe, 0xfb, + 0x78, 0xd0, 0xee, 0xc7, 0x1, 0xc6, 0x7c, 0x15, 0x7f, 0x54, 0x5, 0x90, + 0x99, 0xa3, 0x90, 0x9f, 0x1b, 0xba, 0x94, 0x6e, 0x79, 0x69, 0x6e, 0x79, + 0x60, 0x67, 0x71, 0x8e, 0x8f, 0x76, 0x1f, 0x48, 0x7, 0x84, 0xa1, 0xb7, + 0x89, 0x9e, 0x1b, 0xd5, 0xdb, 0xac, 0xe5, 0xd2, 0x57, 0xad, 0x4f, 0x7a, + 0x69, 0x86, 0x81, 0x74, 0x1f, 0xe, 0xf7, 0xc4, 0x76, 0xf8, 0x3f, 0x77, + 0x1, 0xf7, 0x1e, 0xee, 0x3, 0xf7, 0x1e, 0xf7, 0xaf, 0x15, 0xee, 0xf8, + 0x3f, 0x3b, 0x6, 0x6f, 0x42, 0x31, 0x6f, 0x7e, 0x88, 0x8, 0x34, 0x7, + 0xa5, 0x92, 0xa5, 0x90, 0xc7, 0xb5, 0x8, 0xe, 0xfb, 0xbe, 0xf7, 0xa8, + 0xf4, 0xf7, 0x92, 0xf1, 0x1, 0x91, 0xf7, 0x0, 0xf7, 0x1e, 0xf7, 0x0, + 0x3, 0x91, 0xf8, 0x94, 0x15, 0xfb, 0x1a, 0xc7, 0x25, 0xf7, 0x7, 0xf7, + 0x8, 0xca, 0xf0, 0xf7, 0x1b, 0xf7, 0x12, 0x51, 0xee, 0xfb, 0xd, 0xfb, + 0x6, 0x4e, 0x30, 0xfb, 0x1a, 0x1e, 0xf7, 0x0, 0x16, 0xbb, 0x93, 0xd6, + 0xc6, 0xc6, 0x97, 0x4f, 0x4c, 0x54, 0x80, 0x3f, 0x4f, 0x51, 0x82, 0xda, + 0xbf, 0x1e, 0xe, 0x20, 0x5d, 0xa, 0xe3, 0xd7, 0x50, 0xa, 0xcb, 0xfb, + 0x5f, 0x50, 0xa, 0xe, 0xf7, 0x3f, 0x8d, 0x76, 0xa7, 0x76, 0xd0, 0xcf, + 0xf8, 0xdc, 0x77, 0xa0, 0x77, 0x12, 0xa5, 0xf7, 0x57, 0xf8, 0x2c, 0xe1, + 0x13, 0x6e, 0xf8, 0x5b, 0xc4, 0x15, 0xf7, 0x42, 0x46, 0xe1, 0xd0, 0xbe, + 0xcf, 0x58, 0xf7, 0x71, 0x3f, 0x6, 0xfb, 0x4c, 0xfb, 0x72, 0x5, 0xe1, + 0x8c, 0x15, 0xe1, 0xf6, 0x5, 0x8d, 0x20, 0x6, 0x13, 0xae, 0xfc, 0x77, + 0xfb, 0x24, 0x15, 0xd7, 0x6, 0xf8, 0x38, 0xf9, 0x6d, 0x5, 0x3f, 0x6, + 0xfc, 0x48, 0xfb, 0xfa, 0x15, 0xe6, 0x6, 0x13, 0x76, 0xf7, 0xf9, 0x41, + 0x7, 0x72, 0x4e, 0x37, 0x74, 0x7f, 0x88, 0x8, 0x42, 0x7, 0x8f, 0x8c, + 0x91, 0x8c, 0x8d, 0x8c, 0x96, 0x8e, 0xae, 0x94, 0xb9, 0xa9, 0x8, 0xe, + 0xf7, 0x3f, 0x7d, 0xd6, 0x50, 0x76, 0xf7, 0x8a, 0xf7, 0xb, 0xf8, 0x0, + 0x77, 0x12, 0xa5, 0xf7, 0x5b, 0xf8, 0x71, 0xe7, 0x13, 0x7c, 0xf7, 0x29, + 0x78, 0x15, 0xd8, 0x6, 0xf8, 0x3f, 0xf9, 0x6d, 0x5, 0x3e, 0x6, 0xfc, + 0x50, 0xfb, 0xfb, 0x15, 0xe8, 0xf7, 0xf8, 0x40, 0x6, 0x71, 0x4e, 0x35, + 0x76, 0x7f, 0x88, 0x8, 0x42, 0x7, 0xa3, 0x91, 0xa4, 0x90, 0xc4, 0xae, + 0x8, 0x13, 0xbc, 0xf8, 0x0, 0xfc, 0xf5, 0x15, 0xf7, 0xbe, 0xd6, 0xfb, + 0x2e, 0x6, 0x94, 0x94, 0x91, 0x91, 0x94, 0x90, 0x8, 0xf5, 0xd4, 0xa3, + 0xb0, 0xba, 0x1a, 0xb5, 0x69, 0xcd, 0x21, 0xfb, 0x18, 0x80, 0x37, 0x6c, + 0x87, 0x1e, 0xe7, 0x84, 0x5, 0xa3, 0x8d, 0x90, 0xa9, 0xb8, 0x1b, 0x92, + 0xb7, 0x8a, 0x64, 0x6d, 0x73, 0x7b, 0x4f, 0x5e, 0x1f, 0x2f, 0x41, 0x75, + 0x6c, 0x83, 0x53, 0x8, 0xe, 0xf7, 0x3f, 0x8d, 0x76, 0xa5, 0x76, 0xd0, + 0xcf, 0xf7, 0x71, 0xcf, 0xf7, 0x79, 0xcf, 0x8c, 0x77, 0x12, 0xf7, 0x5c, + 0xe8, 0xf8, 0x2, 0xe2, 0x13, 0x7b, 0xf8, 0x75, 0xc2, 0x15, 0xf7, 0x46, + 0x46, 0xe2, 0xd0, 0xc0, 0xcf, 0x56, 0xf7, 0x71, 0x3e, 0x6, 0xfb, 0x50, + 0xfb, 0x72, 0x5, 0xe3, 0x8c, 0x15, 0xe3, 0xf6, 0x5, 0x8d, 0x20, 0x6, + 0x13, 0xb7, 0xfc, 0x77, 0xfb, 0x22, 0x15, 0xd9, 0x6, 0xf8, 0x42, 0xf9, + 0x6d, 0x5, 0x3d, 0x6, 0xfc, 0xe2, 0xfb, 0x94, 0x15, 0x25, 0x99, 0xf2, + 0x83, 0xa8, 0x1b, 0xe3, 0xca, 0xbf, 0xca, 0xb4, 0x72, 0xa8, 0x60, 0x9a, + 0x1f, 0xac, 0x9d, 0x9a, 0xa4, 0xa4, 0x1a, 0x13, 0x7b, 0xbd, 0x56, 0xba, + 0x39, 0xfb, 0x5, 0x7c, 0x45, 0x6a, 0x83, 0x1e, 0xe3, 0x7f, 0x5, 0x9d, + 0x8d, 0x8f, 0xa8, 0xb5, 0x1b, 0x9e, 0xa2, 0x86, 0x73, 0x64, 0x54, 0x8a, + 0x7e, 0x1f, 0x80, 0x46, 0x5, 0x90, 0x9e, 0x96, 0x8d, 0x9a, 0x1b, 0xac, + 0x9d, 0x71, 0x72, 0x73, 0x7b, 0x74, 0x64, 0x5b, 0x87, 0xae, 0x9a, 0x88, + 0x1f, 0xe, 0x57, 0xfb, 0x57, 0xf5, 0xf8, 0x48, 0x77, 0x1, 0xc2, 0xf7, + 0x15, 0xbe, 0xf7, 0x19, 0x3, 0xf7, 0x8b, 0xf7, 0xef, 0x15, 0x8e, 0x4b, + 0x8a, 0x76, 0x4c, 0x57, 0x8, 0x2e, 0x3a, 0x65, 0x5c, 0x44, 0x1a, 0xfb, + 0x5, 0xec, 0x2e, 0xf7, 0x27, 0xf7, 0x37, 0xde, 0xf7, 0x4, 0xed, 0x91, + 0x1e, 0xfb, 0xc, 0x9c, 0x5, 0x3e, 0x7c, 0x5f, 0x5f, 0x42, 0x1b, 0x52, + 0x51, 0xab, 0xcc, 0xb7, 0xa1, 0x9d, 0xcd, 0xc3, 0x1f, 0xe9, 0xda, 0x8f, + 0xb8, 0x89, 0xec, 0x8, 0xfb, 0x19, 0xbb, 0x15, 0xf7, 0x19, 0xf7, 0x1d, + 0xfb, 0x19, 0x6, 0xe, 0x35, 0xa, 0xd3, 0xf7, 0x28, 0x1, 0xf7, 0xf2, + 0xf9, 0xa8, 0x15, 0xde, 0x6, 0x4a, 0xf7, 0x28, 0x40, 0xa, 0xfb, 0x5f, + 0xfe, 0x3c, 0x28, 0xa, 0x35, 0xa, 0xd3, 0xf7, 0x28, 0x1, 0xf7, 0xb7, + 0xf9, 0xa8, 0x15, 0xde, 0x6, 0xf7, 0x13, 0xf7, 0x28, 0x40, 0xa, 0xfb, + 0xe4, 0xfe, 0x3c, 0x28, 0xa, 0x35, 0xa, 0xd5, 0x84, 0xa, 0xf7, 0x61, + 0xf9, 0xaa, 0x15, 0xf4, 0x6, 0xbe, 0xd4, 0xc1, 0x42, 0x5, 0xf3, 0x6, + 0x2b, 0x83, 0xa, 0xfb, 0xc, 0x6, 0xfb, 0xaf, 0xfe, 0x3c, 0x28, 0xa, + 0x35, 0xa, 0xf7, 0xf, 0xdf, 0x8a, 0x77, 0x12, 0x13, 0xf0, 0xf7, 0x5e, + 0xf9, 0xaf, 0x15, 0xc6, 0x65, 0xa, 0xab, 0xaa, 0x1b, 0xa6, 0xa1, 0x82, + 0x82, 0x9f, 0x1f, 0x80, 0xa6, 0xa3, 0x7e, 0xa6, 0x1b, 0xdd, 0x8b, 0xef, + 0xa5, 0x1f, 0x4f, 0x7a, 0xa, 0x6d, 0x6b, 0x1b, 0x81, 0x78, 0x95, 0x95, + 0x73, 0x1f, 0x13, 0xe8, 0x97, 0x72, 0x6d, 0x96, 0x6e, 0x1b, 0x4d, 0x71, + 0x5a, 0x3d, 0x8e, 0x1f, 0xfb, 0x4a, 0xfd, 0xaf, 0x28, 0xa, 0x35, 0xa, + 0xda, 0xf7, 0xc, 0x1, 0xf7, 0x62, 0xf9, 0xaf, 0x15, 0xf7, 0x4, 0xf7, + 0xc, 0x7c, 0xa, 0xf7, 0x5c, 0xfb, 0xc, 0x15, 0xf7, 0x4, 0xf7, 0xc, + 0x7c, 0xa, 0xfc, 0x16, 0xfe, 0x27, 0x28, 0xa, 0x35, 0xa, 0xc0, 0xf7, + 0x55, 0x1, 0x9f, 0x16, 0x27, 0xa, 0xfb, 0x47, 0xf8, 0xd3, 0x15, 0x56, + 0xb4, 0x5f, 0xbd, 0xbc, 0xb5, 0xb5, 0xc2, 0xc3, 0x62, 0xb3, 0x59, 0x58, + 0x63, 0x62, 0x54, 0x1e, 0xbd, 0x16, 0xa4, 0x9d, 0x9d, 0xa2, 0xa1, 0x9e, + 0x7a, 0x71, 0x73, 0x78, 0x77, 0x75, 0x75, 0x78, 0x9f, 0xa3, 0x1e, 0xe, + 0xf7, 0xe5, 0x8b, 0xf7, 0xe, 0xba, 0xf7, 0x12, 0xa0, 0xf7, 0xe, 0xf7, + 0x35, 0xf7, 0xb, 0x1, 0xf8, 0x66, 0xf7, 0x1d, 0x3, 0x90, 0x16, 0xf7, + 0x2d, 0x6, 0xd1, 0xf7, 0x3d, 0x5, 0xf7, 0x81, 0xfb, 0x3d, 0xf8, 0x7d, + 0xf7, 0xe, 0xfb, 0xf3, 0xf7, 0x56, 0xf7, 0xc2, 0xf7, 0xe, 0xfb, 0xc2, + 0xf7, 0x35, 0xf7, 0xe7, 0xf7, 0xb, 0xfc, 0xfe, 0x6, 0x5e, 0xfc, 0x3b, + 0x15, 0xf7, 0x1a, 0xf7, 0xd0, 0x5, 0xc0, 0xfb, 0xd0, 0x6, 0xe, 0xc6, + 0xfb, 0x78, 0xc9, 0xe4, 0xbe, 0x8d, 0xf7, 0x13, 0xf8, 0x8e, 0xf7, 0x14, + 0x1, 0xb7, 0xf7, 0x2d, 0xf7, 0x68, 0xea, 0x3, 0xf7, 0x7c, 0xfb, 0x35, + 0x15, 0x4f, 0x7, 0x85, 0xa7, 0xbd, 0x8a, 0x8f, 0x1b, 0xf6, 0xde, 0xb1, + 0xd2, 0xb0, 0x78, 0xba, 0x30, 0x94, 0x1f, 0x8d, 0x7, 0xf7, 0x65, 0xca, + 0xf7, 0x40, 0xcc, 0x9d, 0x1f, 0xfb, 0x24, 0xb9, 0x5, 0x3a, 0x79, 0x5d, + 0x40, 0x29, 0x1b, 0xfb, 0x26, 0x68, 0xf7, 0x11, 0xf7, 0xe, 0xbb, 0x8b, + 0xf7, 0x67, 0xf7, 0x4b, 0xd7, 0xc8, 0x60, 0x3b, 0x9d, 0x1f, 0xf7, 0x27, + 0xae, 0x5, 0xf7, 0x40, 0x4d, 0xfb, 0x1b, 0xb7, 0x22, 0x1b, 0xfb, 0x83, + 0x2a, 0xfb, 0x4a, 0xfb, 0x61, 0xfb, 0x7a, 0xf7, 0x20, 0xfb, 0x24, 0xf7, + 0x45, 0x1f, 0x89, 0x7, 0x8c, 0x7, 0x75, 0x8a, 0x76, 0x88, 0x72, 0x82, + 0x7d, 0x5a, 0x18, 0x8f, 0x9b, 0xa6, 0x91, 0xa2, 0x1b, 0xc0, 0x96, 0x6f, + 0x7d, 0x61, 0x54, 0x86, 0x63, 0x6d, 0x86, 0x8b, 0x90, 0x5c, 0x1f, 0xe, + 0x33, 0xa, 0xf7, 0x8a, 0xbb, 0x15, 0xe3, 0x6, 0x46, 0xf7, 0x28, 0x5, + 0xfb, 0x2d, 0x6, 0xe, 0x33, 0xa, 0xf7, 0x4c, 0xbb, 0x15, 0xe2, 0x6, + 0xf7, 0x1b, 0xf7, 0x28, 0x5, 0xfb, 0x2e, 0x6, 0xe, 0x3a, 0xa, 0xbd, + 0x84, 0xa, 0xd7, 0xf7, 0x24, 0x3, 0xf7, 0x3d, 0xf9, 0xaa, 0x15, 0xf7, + 0x3, 0x6, 0xc0, 0xd4, 0xc5, 0x42, 0x5, 0xf7, 0x2, 0x6, 0x26, 0x83, + 0xa, 0xfb, 0x14, 0x6, 0xfb, 0x58, 0xfe, 0x3c, 0x15, 0x2e, 0xa, 0xe, + 0x3a, 0xa, 0xc3, 0xf7, 0xb, 0x12, 0xd7, 0xf7, 0x24, 0x59, 0xf7, 0xa, + 0xe9, 0xf7, 0xa, 0x13, 0xf6, 0xf7, 0x3e, 0xf9, 0xb0, 0x8e, 0xa, 0xf7, + 0x68, 0xfb, 0xb, 0x8e, 0xa, 0x13, 0xfa, 0xfb, 0xc6, 0xfe, 0x27, 0x15, + 0x2e, 0xa, 0xe, 0x4c, 0xa, 0xf9, 0xad, 0xf7, 0x23, 0x94, 0xa, 0xe9, + 0xf9, 0xad, 0x15, 0xe2, 0x6, 0x3d, 0x75, 0xa, 0xf7, 0xb, 0x46, 0xa, + 0x4c, 0xa, 0xfa, 0x3c, 0x77, 0x94, 0xa, 0xcb, 0xf9, 0xad, 0x15, 0xe2, + 0x6, 0xf7, 0x46, 0x75, 0xa, 0x20, 0x46, 0xa, 0x4c, 0xa, 0xf9, 0xaf, + 0xf7, 0x21, 0x94, 0xa, 0x66, 0xf9, 0xaf, 0x95, 0xa, 0xd1, 0xc8, 0x45, + 0x77, 0xa, 0xf7, 0x21, 0x5, 0xfb, 0x1b, 0x6, 0x87, 0x46, 0xa, 0x4c, + 0xa, 0xf9, 0xb3, 0xf7, 0x8, 0x1, 0xd0, 0x63, 0xa, 0xf9, 0x60, 0x68, + 0xa, 0x31, 0xde, 0x92, 0xa, 0xf7, 0x62, 0xfb, 0x8, 0x92, 0xa, 0xe, + 0xc6, 0x8b, 0xf7, 0xd, 0xf8, 0x70, 0x82, 0xa, 0xd2, 0xf7, 0x27, 0xf7, + 0xcc, 0xf7, 0x2f, 0x3, 0xf7, 0x6e, 0xf7, 0xd, 0x15, 0xf7, 0x4f, 0xf7, + 0x31, 0xef, 0xfb, 0x31, 0xf7, 0x51, 0xf7, 0x0, 0x7, 0xf7, 0x24, 0xc7, + 0x8b, 0xfb, 0x86, 0xfb, 0x7a, 0x2e, 0x87, 0xfb, 0x0, 0x1f, 0xfb, 0x96, + 0xfb, 0xd, 0x15, 0xf7, 0x96, 0x6, 0xf7, 0x8e, 0xf5, 0xf7, 0x46, 0xf7, + 0x42, 0xf7, 0x9d, 0xfb, 0x1, 0xf0, 0xfb, 0x8e, 0x1f, 0xfb, 0x93, 0xfb, + 0xca, 0x3f, 0x27, 0xd7, 0x6, 0xe, 0x69, 0xa, 0xf9, 0x74, 0x77, 0xf7, + 0x62, 0x5c, 0xa, 0xf8, 0x74, 0x8d, 0x6, 0xf7, 0xbb, 0xfc, 0x74, 0x5, + 0xf7, 0x2a, 0xf9, 0x74, 0xfb, 0x1e, 0xfc, 0x7f, 0x89, 0x6, 0xfb, 0xc1, + 0xf8, 0x7f, 0x5, 0xfb, 0x24, 0x6, 0xf7, 0xb, 0xc6, 0x15, 0xcb, 0x65, + 0xa, 0xab, 0xad, 0x1b, 0xaa, 0xa2, 0x80, 0x81, 0xa3, 0x1f, 0x81, 0xa4, + 0xa4, 0x80, 0xab, 0x1b, 0xe3, 0x8b, 0xef, 0xa5, 0x1f, 0x4a, 0x7a, 0xa, + 0x6d, 0x68, 0x1b, 0x80, 0x77, 0x95, 0x95, 0x71, 0x1f, 0x97, 0x71, 0x69, + 0x96, 0x6a, 0x1b, 0x48, 0x70, 0x5a, 0x3d, 0x8e, 0x1f, 0xe, 0x59, 0xa, + 0xd1, 0xf7, 0x23, 0x1, 0xc6, 0xf7, 0x28, 0xf8, 0x0, 0x85, 0xa, 0xb7, + 0xf7, 0xf4, 0x29, 0xa, 0xfb, 0x22, 0x51, 0x22, 0xfb, 0x1f, 0xfb, 0x2c, + 0x5e, 0xf7, 0x4, 0xf7, 0x1b, 0x1e, 0xf7, 0x4d, 0xf8, 0x4d, 0x15, 0xe1, + 0x6, 0x47, 0x67, 0xa, 0xfb, 0x2c, 0x6, 0xe, 0x5f, 0xa, 0xf8, 0x82, + 0xf7, 0x10, 0xd1, 0xf7, 0x23, 0x7e, 0xa, 0xf7, 0xcf, 0xf9, 0xad, 0x15, + 0xe1, 0x6, 0xf7, 0x1a, 0x67, 0xa, 0xfb, 0x2c, 0x6, 0xfb, 0xe7, 0x31, + 0xa, 0x54, 0xfb, 0xb, 0xfb, 0x22, 0x41, 0xa, 0x5f, 0xa, 0xf8, 0x82, + 0xf7, 0x10, 0xd3, 0xf7, 0x21, 0x7e, 0xa, 0xf7, 0x74, 0xf9, 0xaf, 0x15, + 0xf7, 0x3, 0x6, 0xc0, 0xd1, 0xc3, 0x45, 0x5, 0xf7, 0x2, 0x6, 0x26, + 0xf7, 0x21, 0x5, 0xfb, 0x12, 0x6, 0xfb, 0xaf, 0x31, 0xa, 0x4f, 0xfb, + 0xb, 0xfb, 0x1d, 0x41, 0xa, 0x59, 0xa, 0xd8, 0x64, 0xa, 0xd1, 0xf7, + 0x28, 0xf7, 0xf1, 0xf7, 0x28, 0x13, 0xd6, 0xf7, 0x71, 0xf9, 0xb2, 0x15, + 0xc9, 0x6a, 0xa, 0x9f, 0x1f, 0x13, 0xe6, 0x80, 0xa3, 0xa1, 0x80, 0xad, + 0x1b, 0xe1, 0x8b, 0xed, 0xa4, 0x1f, 0x4c, 0x7a, 0xa, 0x6e, 0x69, 0x1b, + 0x81, 0x79, 0x93, 0x94, 0x75, 0x1f, 0x13, 0xce, 0x97, 0x70, 0x67, 0x98, + 0x6c, 0x1b, 0x4a, 0x70, 0x5b, 0x3f, 0x8e, 0x1f, 0xfb, 0x45, 0xfc, 0x52, + 0x29, 0xa, 0xfb, 0x2c, 0x4f, 0x2c, 0xfb, 0x1d, 0x41, 0xa, 0x59, 0xa, + 0xd6, 0xf7, 0x9, 0x1, 0xc6, 0xf7, 0x28, 0xf8, 0x1, 0x85, 0xa, 0xf7, + 0x75, 0xf9, 0xb2, 0x8d, 0xa, 0xf7, 0x66, 0xfb, 0x9, 0x8d, 0xa, 0xfc, + 0x1b, 0xfc, 0xc7, 0x29, 0xa, 0xfb, 0x11, 0x54, 0xfb, 0xe, 0xfb, 0x22, + 0x41, 0xa, 0x3c, 0xa1, 0x76, 0xf8, 0x8c, 0x77, 0x1, 0xb4, 0xec, 0x15, + 0xe9, 0x2c, 0xf7, 0x30, 0xf7, 0x31, 0xf7, 0x32, 0xfb, 0x32, 0xeb, 0xec, + 0xfb, 0x32, 0xf7, 0x31, 0xf7, 0x30, 0xf7, 0x2f, 0x2e, 0xea, 0xfb, 0x31, + 0xfb, 0x31, 0xfb, 0x31, 0xf7, 0x31, 0x2b, 0x2b, 0xf7, 0x32, 0xfb, 0x30, + 0x5, 0xe, 0xf7, 0x7, 0x85, 0x76, 0xa6, 0xf7, 0xe, 0xf8, 0x74, 0xf7, + 0xe, 0xa0, 0x77, 0x1, 0xbc, 0xf7, 0x27, 0xf8, 0x7, 0xf7, 0x27, 0x3, + 0xac, 0xab, 0x15, 0xcf, 0x50, 0xd9, 0xe2, 0x5, 0x5a, 0xce, 0xd5, 0x80, + 0xcd, 0x1b, 0xf7, 0x8a, 0xed, 0xf7, 0x56, 0xf7, 0x43, 0xab, 0x89, 0xf7, + 0x2, 0x4a, 0xe1, 0x1f, 0xdc, 0xe4, 0x48, 0xc6, 0x3f, 0x36, 0x5, 0x9f, + 0x71, 0x4c, 0xb7, 0xfb, 0x12, 0x1b, 0xfb, 0x88, 0x2a, 0xfb, 0x40, 0xfb, + 0x4b, 0xfb, 0x18, 0xb1, 0x44, 0xab, 0x60, 0x1f, 0xee, 0xf7, 0x2, 0x15, + 0x7d, 0xad, 0x83, 0xbc, 0xc0, 0x1a, 0xf7, 0x12, 0xc6, 0xf6, 0xf7, 0x1b, + 0xb8, 0xba, 0x80, 0x6e, 0xad, 0x1e, 0xfb, 0x87, 0xfc, 0x25, 0x15, 0xf7, + 0xbb, 0xf7, 0xda, 0x5, 0x95, 0x72, 0x94, 0x64, 0x55, 0x1a, 0xfb, 0x47, + 0x2a, 0x47, 0x27, 0x6e, 0x63, 0x8e, 0xaf, 0x5b, 0x1e, 0xe, 0x54, 0xa, + 0xd3, 0xf9, 0x5e, 0x5e, 0xa, 0xb5, 0xfb, 0x48, 0xf7, 0x8f, 0xf7, 0x7a, + 0xc3, 0x2b, 0xa, 0xf7, 0x18, 0xd9, 0x15, 0xe4, 0x6, 0x45, 0xf7, 0x24, + 0x97, 0xa, 0xe, 0x54, 0xa, 0xf7, 0xb3, 0xf9, 0xac, 0x15, 0xe3, 0x6, + 0xf7, 0x1c, 0xf7, 0x24, 0x97, 0xa, 0xfb, 0xb0, 0xfb, 0x72, 0x5e, 0xa, + 0xa1, 0xfb, 0x48, 0xf7, 0xa3, 0x2f, 0xa, 0xc6, 0x78, 0xf7, 0x11, 0xf9, + 0x44, 0xf7, 0x22, 0x42, 0xa, 0xf7, 0x57, 0xf9, 0xae, 0x15, 0xf7, 0x4, + 0x6, 0xc1, 0xd1, 0xc5, 0x45, 0x5, 0xf7, 0x3, 0x6, 0x25, 0xf7, 0x22, + 0x5, 0xfb, 0x15, 0x6, 0xfb, 0x77, 0xfb, 0x72, 0x34, 0xa, 0xc6, 0x78, + 0xf7, 0x11, 0xf9, 0x48, 0xf7, 0x9, 0x12, 0xd3, 0xf7, 0x26, 0x75, 0xf7, + 0xb, 0xea, 0xf7, 0xb, 0x73, 0xf7, 0x26, 0x13, 0xd8, 0xf7, 0x58, 0xf9, + 0xb2, 0x8f, 0xa, 0xf7, 0x6a, 0xfb, 0x9, 0x8f, 0xa, 0x13, 0xe4, 0xfb, + 0xe6, 0xfb, 0x5d, 0x34, 0xa, 0x8f, 0xa0, 0x76, 0x1, 0xf7, 0x9d, 0xf7, + 0x1d, 0x3, 0x70, 0xa, 0xf8, 0x34, 0x5, 0xfb, 0x32, 0x6, 0xfb, 0x33, + 0xfb, 0xaf, 0xfb, 0x34, 0xf7, 0xaf, 0x5, 0xfb, 0x35, 0x6, 0xf7, 0x8e, + 0xfc, 0x33, 0x5, 0x89, 0xf8, 0x80, 0x15, 0xde, 0x6, 0xf7, 0x14, 0x67, + 0xa, 0xfb, 0x26, 0x6, 0xe, 0x8f, 0xa0, 0x76, 0xf7, 0x1b, 0xf7, 0xe, + 0xf7, 0x60, 0xf7, 0xe, 0xf7, 0x1b, 0x77, 0x60, 0xa, 0xf7, 0x1b, 0xd1, + 0x6, 0xcc, 0xf1, 0x8c, 0xa3, 0xbe, 0x1f, 0xb9, 0xa1, 0xd3, 0xbf, 0xf7, + 0x12, 0x1a, 0xf7, 0x73, 0xfb, 0x2f, 0x8b, 0xfb, 0x49, 0x1e, 0x45, 0xf7, + 0x1b, 0xfb, 0x25, 0x6, 0xf7, 0x25, 0xfc, 0x61, 0x15, 0xf7, 0x60, 0xd1, + 0x7, 0xf4, 0xdc, 0x88, 0x29, 0x24, 0xfb, 0x3, 0x8b, 0x40, 0x1f, 0xe, + 0x57, 0x92, 0x76, 0xf9, 0x11, 0xf7, 0x0, 0x1, 0xd0, 0xf7, 0x1e, 0xf7, + 0x7e, 0xf7, 0x1e, 0x3, 0xd0, 0x84, 0x15, 0xf7, 0x1e, 0xf8, 0x6b, 0x6, + 0xe3, 0x8b, 0xd2, 0xd6, 0xe6, 0x68, 0x36, 0x4c, 0x6d, 0x1e, 0x75, 0x5e, + 0x81, 0x6d, 0x72, 0x1a, 0x64, 0xa6, 0x6e, 0xc3, 0x56, 0x1e, 0xcf, 0x49, + 0x99, 0x7d, 0x6d, 0x1a, 0x6a, 0x73, 0x79, 0x72, 0x76, 0x76, 0x97, 0xa6, + 0x83, 0x1e, 0x2b, 0x53, 0x5, 0x4e, 0xa8, 0xcd, 0x6e, 0xcc, 0x1b, 0xe3, + 0xe0, 0xc3, 0xf7, 0x0, 0xc0, 0x76, 0xb5, 0x4a, 0xcd, 0x1f, 0x57, 0xc0, + 0x75, 0x9c, 0xa3, 0x1a, 0x9c, 0x97, 0x9f, 0xa1, 0xb4, 0x1e, 0xf7, 0x2, + 0xc6, 0x7a, 0xf7, 0x1e, 0xfb, 0x67, 0x1b, 0xfb, 0x59, 0x79, 0xfb, 0x3d, + 0x29, 0x1f, 0xe, 0x39, 0xa, 0xc4, 0xf7, 0x29, 0x51, 0xa, 0xf7, 0x9b, + 0xf8, 0xed, 0x15, 0xe4, 0x6, 0x45, 0xf7, 0x29, 0x96, 0xa, 0xf7, 0x89, + 0x22, 0xa, 0x39, 0xa, 0xc5, 0xf7, 0x28, 0x51, 0xa, 0xf7, 0x5b, 0xf8, + 0xee, 0x15, 0xe4, 0x6, 0xf7, 0x1e, 0xf7, 0x28, 0x96, 0xa, 0xf0, 0x22, + 0xa, 0x39, 0xa, 0xc6, 0xf7, 0x27, 0x51, 0xa, 0xf5, 0xf8, 0xef, 0x15, + 0xf7, 0x6, 0x6, 0xc1, 0xd4, 0xc5, 0x42, 0x5, 0xf7, 0x5, 0x6, 0x24, + 0xf7, 0x27, 0x5, 0xfb, 0x17, 0x6, 0xf7, 0x33, 0x22, 0xa, 0x39, 0xa, + 0xcd, 0xf7, 0x13, 0x37, 0xdf, 0x8a, 0x77, 0x66, 0xa, 0x49, 0xcd, 0xf7, + 0x52, 0xf7, 0x1d, 0x13, 0xa9, 0x80, 0xf2, 0xf8, 0xf4, 0x15, 0xca, 0x6, + 0x98, 0x8c, 0x8b, 0xab, 0xad, 0x1b, 0xb0, 0xa4, 0x7e, 0x80, 0xa3, 0x1f, + 0x13, 0xb2, 0x80, 0x82, 0xa1, 0xa0, 0x81, 0xa9, 0x1b, 0xe3, 0x8b, 0xf0, + 0xa5, 0x1f, 0x4b, 0x6, 0x7d, 0x88, 0x87, 0x6d, 0x69, 0x1b, 0x80, 0x78, + 0x94, 0x95, 0x73, 0x1f, 0x13, 0x65, 0x80, 0x97, 0x70, 0x68, 0x97, 0x6a, + 0x1b, 0x48, 0x70, 0x5a, 0x3c, 0x8e, 0x1f, 0xf7, 0x9f, 0xfc, 0xbb, 0x21, + 0xa, 0x13, 0xb2, 0x80, 0x32, 0xa, 0x39, 0xa, 0xce, 0xf7, 0xa, 0x66, + 0xa, 0x4d, 0xf7, 0xd, 0xea, 0xf7, 0xd, 0x36, 0xf7, 0x1d, 0x13, 0x76, + 0xf6, 0xf8, 0xf7, 0x8a, 0xa, 0xf7, 0x6c, 0xfb, 0xa, 0x8a, 0xa, 0xba, + 0xfd, 0x34, 0x30, 0xa, 0x13, 0xb9, 0x20, 0xa, 0x32, 0xa, 0x39, 0xa, + 0xb1, 0xf7, 0x56, 0x56, 0x77, 0x66, 0xa, 0x9e, 0xf7, 0x58, 0x72, 0xf7, + 0x1d, 0x13, 0xb6, 0xf7, 0x50, 0xf9, 0x3b, 0x15, 0x56, 0xb7, 0x5f, 0xc1, + 0xbf, 0xb9, 0xb5, 0xc2, 0xc3, 0x5e, 0xb4, 0x56, 0x54, 0x60, 0x61, 0x54, + 0x1e, 0xc0, 0x16, 0x13, 0x6d, 0xa4, 0x9f, 0x9e, 0xa4, 0xa3, 0x9f, 0x79, + 0x71, 0x73, 0x77, 0x77, 0x73, 0x73, 0x76, 0x9f, 0xa3, 0x1e, 0xf7, 0x15, + 0xfd, 0x2, 0x24, 0xa, 0x13, 0xb5, 0x26, 0xa, 0xf7, 0x76, 0x7d, 0xf7, + 0x0, 0xf7, 0x17, 0xe4, 0xf7, 0x10, 0xf7, 0x0, 0x1, 0xa8, 0xf7, 0x22, + 0xf7, 0x50, 0xf7, 0x21, 0xf7, 0x6c, 0xf7, 0x22, 0x3, 0xf8, 0x39, 0xc7, + 0x15, 0x52, 0xc8, 0xca, 0x7a, 0xc8, 0x1b, 0xf7, 0x47, 0xbf, 0xf7, 0xc, + 0xb2, 0x99, 0x1f, 0xfb, 0x1f, 0xa3, 0x5, 0x7a, 0x84, 0x72, 0x51, 0x41, + 0x1b, 0x2b, 0x84, 0xf2, 0xa7, 0x88, 0x1f, 0xf7, 0xfa, 0x6, 0xf4, 0x77, + 0xf7, 0x6c, 0xfb, 0x7c, 0x4c, 0x5a, 0x78, 0x6c, 0x63, 0x1e, 0x9a, 0x7b, + 0x4f, 0xae, 0x21, 0x1b, 0xfb, 0x2d, 0x61, 0x59, 0x26, 0x6a, 0x1f, 0xf7, + 0x15, 0x73, 0x5, 0x9d, 0x90, 0x9a, 0xbc, 0xda, 0x1b, 0xe3, 0x8b, 0x53, + 0x75, 0x1f, 0x7e, 0x7, 0x7a, 0x85, 0x78, 0x89, 0x59, 0x7d, 0x8, 0x24, + 0x6e, 0xfb, 0x22, 0x88, 0xfb, 0x29, 0x1a, 0x43, 0xbb, 0x35, 0xf7, 0x1a, + 0xf0, 0xd9, 0xb9, 0xa7, 0xaa, 0x1e, 0x4d, 0xf7, 0x57, 0x15, 0x42, 0x8b, + 0x63, 0x6c, 0x71, 0x1e, 0x56, 0x5f, 0x23, 0x93, 0xd7, 0x1a, 0xb9, 0xb5, + 0x99, 0xb8, 0x97, 0x1e, 0xf7, 0x88, 0xe1, 0x15, 0x9b, 0x8a, 0x92, 0xf7, + 0x0, 0xed, 0x1b, 0xf0, 0x92, 0x2f, 0x6b, 0x8d, 0x1f, 0xe, 0x20, 0xfb, + 0x78, 0xc2, 0xe4, 0xf7, 0x40, 0xfb, 0xa, 0xf7, 0xa, 0xf7, 0xec, 0xf7, + 0x6, 0x12, 0xad, 0xf7, 0x21, 0xf7, 0x23, 0xdd, 0x13, 0xdc, 0xf7, 0x5a, + 0x2f, 0x15, 0x92, 0xaa, 0x9c, 0x8c, 0x92, 0x1b, 0xc4, 0x93, 0x6d, 0x7e, + 0x5d, 0x45, 0x8b, 0x6c, 0x6a, 0x79, 0x8e, 0x8c, 0x83, 0x1f, 0x56, 0x7, + 0x85, 0xb2, 0x9d, 0x8b, 0x8d, 0x1b, 0xf7, 0x11, 0xc5, 0xc7, 0xb9, 0xc1, + 0x5b, 0xaa, 0x5f, 0x90, 0x1f, 0x13, 0xbc, 0x8d, 0x7, 0xf7, 0x3f, 0x91, + 0xaf, 0xf7, 0x2b, 0x94, 0xb5, 0xfb, 0x1b, 0xa3, 0x18, 0x69, 0x85, 0x7e, + 0x44, 0x3a, 0x1b, 0x36, 0x6e, 0xcd, 0xf3, 0xad, 0x89, 0xf7, 0x20, 0xf7, + 0x5, 0xda, 0x99, 0x47, 0x78, 0x8e, 0x1f, 0xf7, 0x1b, 0xa4, 0x5, 0xd4, + 0x77, 0x5e, 0xf2, 0xfb, 0x3a, 0x1b, 0xfb, 0x5e, 0x59, 0xfb, 0x3b, 0xfb, + 0xd, 0x3a, 0xa5, 0xfb, 0x56, 0xf7, 0x5f, 0x7e, 0x1f, 0x89, 0x7, 0x7c, + 0x8a, 0x7e, 0x8a, 0x75, 0x85, 0x8, 0xe, 0x3c, 0xa, 0xc8, 0xf7, 0x28, + 0x43, 0xa, 0xf7, 0x9d, 0xf8, 0xee, 0x15, 0xe6, 0x6, 0x44, 0xf7, 0x28, + 0x5, 0xfb, 0x33, 0x6, 0xb6, 0xfc, 0xa2, 0x25, 0xa, 0x3c, 0xa, 0xc7, + 0xf7, 0x29, 0x43, 0xa, 0xf7, 0x5c, 0xf8, 0xed, 0x15, 0xe6, 0x6, 0xf7, + 0x20, 0xf7, 0x29, 0x5, 0xfb, 0x34, 0x6, 0x25, 0xfc, 0xa2, 0x25, 0xa, + 0x3c, 0xa, 0xc9, 0xf7, 0x27, 0x43, 0xa, 0xf4, 0xf8, 0xef, 0x15, 0xf7, + 0x8, 0x6, 0xc3, 0xd4, 0xc6, 0x42, 0x5, 0xf7, 0x7, 0x6, 0x21, 0xf7, + 0x27, 0x5, 0xfb, 0x18, 0x6, 0x5f, 0xfc, 0xa2, 0x25, 0xa, 0x3c, 0xa, + 0xd1, 0xf7, 0xa, 0x43, 0xa, 0xf5, 0xf8, 0xf7, 0x15, 0xf7, 0x10, 0xf7, + 0xa, 0xfb, 0x10, 0x6, 0xf7, 0x71, 0xfb, 0xa, 0x15, 0xf7, 0xf, 0xf7, + 0xa, 0xfb, 0xf, 0x6, 0xfb, 0x32, 0xfc, 0x8d, 0x25, 0xa, 0x62, 0xa, + 0xf7, 0x23, 0xf8, 0xf2, 0x15, 0xe1, 0x6, 0x20, 0xf7, 0x24, 0x5, 0xfb, + 0x2c, 0x6, 0xf5, 0xfd, 0x82, 0x15, 0x55, 0xa, 0xe, 0x62, 0xa, 0xbc, + 0xf8, 0xf1, 0x15, 0xe2, 0x6, 0xf7, 0x41, 0xf7, 0x25, 0x5, 0xfb, 0x2c, + 0x6, 0x3a, 0xfd, 0x82, 0x15, 0x55, 0xa, 0xe, 0x4c, 0xa, 0xf8, 0xf3, + 0xf7, 0x23, 0x1, 0xd7, 0xf7, 0x13, 0x3, 0xd7, 0x16, 0x55, 0xa, 0xfb, + 0x5, 0xe1, 0x95, 0xa, 0xd3, 0xc8, 0x43, 0x77, 0xa, 0x67, 0xa, 0xfb, + 0x1b, 0x6, 0xe, 0x4c, 0xa, 0xf8, 0xfa, 0xf7, 0x7, 0x12, 0x76, 0xf7, + 0x7, 0x79, 0xf7, 0x13, 0x79, 0xf7, 0x7, 0x13, 0xe8, 0x76, 0x44, 0xa, + 0x13, 0xd0, 0xfb, 0x1, 0xfd, 0x6d, 0x15, 0x55, 0xa, 0xe, 0x57, 0x7d, + 0xf7, 0x8, 0xf7, 0xd4, 0xf7, 0x3, 0xf7, 0x60, 0x77, 0x1, 0xad, 0xf7, + 0x26, 0xf7, 0x90, 0xf7, 0x26, 0x3, 0xf7, 0x65, 0xf8, 0xc7, 0x15, 0xeb, + 0xb8, 0xb0, 0x5b, 0x95, 0x7b, 0xa4, 0x60, 0x19, 0x89, 0x89, 0x5, 0x9b, + 0x70, 0x6b, 0x9d, 0x5a, 0x1b, 0xfb, 0x1, 0xfb, 0x10, 0x22, 0xfb, 0x3b, + 0xfb, 0x26, 0xec, 0xfb, 0x15, 0xf7, 0x40, 0xf7, 0x31, 0xf7, 0xa, 0xea, + 0xf7, 0x48, 0xf7, 0x26, 0x3e, 0xf7, 0x23, 0x26, 0xf2, 0x1f, 0xd2, 0xad, + 0x75, 0xbd, 0x30, 0x60, 0x75, 0x9d, 0x85, 0x8f, 0x72, 0xa0, 0x19, 0xfb, + 0x26, 0x6, 0xbe, 0x66, 0x9a, 0x81, 0xb5, 0x63, 0x3a, 0x65, 0x18, 0x85, + 0xfb, 0xf3, 0x15, 0xf7, 0x4, 0xcc, 0xbc, 0xc5, 0xce, 0xc9, 0x54, 0x21, + 0x27, 0x52, 0x50, 0x44, 0x52, 0x48, 0xb2, 0xf7, 0xc, 0x1e, 0xe, 0x57, + 0xa0, 0x76, 0xf8, 0xfa, 0x64, 0xa, 0xcc, 0xf7, 0x16, 0x58, 0xc8, 0xf7, + 0x5d, 0xf7, 0x20, 0x13, 0xca, 0xcc, 0x16, 0x13, 0xc6, 0xf7, 0x20, 0xf7, + 0x7f, 0x6, 0xe2, 0x90, 0xf2, 0xf7, 0x3, 0xe0, 0x8b, 0x22, 0x36, 0x1e, + 0xfb, 0x7f, 0xf7, 0x20, 0xf7, 0xd6, 0x7, 0xf7, 0x6, 0x3e, 0xe9, 0x28, + 0x55, 0x48, 0x79, 0x45, 0x57, 0x1e, 0x13, 0xca, 0x89, 0xd7, 0xfb, 0x16, + 0x6, 0x13, 0xa6, 0xda, 0xe9, 0x15, 0xca, 0x65, 0xa, 0xaa, 0xad, 0x1b, + 0xa9, 0xa1, 0x82, 0x82, 0xa0, 0x1f, 0x13, 0xca, 0x80, 0xa5, 0xa3, 0x7f, + 0xae, 0x1b, 0xdf, 0x8f, 0xed, 0xa4, 0x1f, 0x4b, 0x6, 0x7d, 0x88, 0x87, + 0x6e, 0x69, 0x1b, 0x13, 0x96, 0x80, 0x73, 0x96, 0x96, 0x70, 0x1f, 0x95, + 0x71, 0x6e, 0x95, 0x6c, 0x1b, 0x49, 0x72, 0x6a, 0x30, 0x1f, 0xe, 0x3e, + 0xa, 0xd7, 0xf7, 0x25, 0x1, 0x56, 0xa, 0x3, 0xf7, 0xb9, 0xf8, 0xf1, + 0x15, 0xe4, 0x6, 0x46, 0xf7, 0x25, 0x5, 0xfb, 0x30, 0x6, 0xfb, 0xf, + 0xfc, 0x7a, 0x23, 0xa, 0x47, 0xa, 0xf7, 0x77, 0xf8, 0xf3, 0x15, 0xe2, + 0x6, 0xf7, 0x1a, 0x75, 0xa, 0xfb, 0x99, 0xfc, 0x7a, 0x23, 0xa, 0x47, + 0xa, 0xf7, 0x1e, 0xf8, 0xf3, 0x15, 0xf7, 0x5, 0x6, 0xc0, 0xd2, 0xc5, + 0x44, 0x5, 0xf7, 0x4, 0x6, 0x25, 0x67, 0xa, 0xfb, 0x16, 0x6, 0xfb, + 0x64, 0xfc, 0x7a, 0x23, 0xa, 0x3e, 0xa, 0xe0, 0x64, 0xa, 0x56, 0xa, + 0x13, 0xd6, 0xf7, 0x1b, 0xf8, 0xf8, 0x15, 0xca, 0x6a, 0xa, 0xa3, 0x1f, + 0x13, 0xe6, 0x80, 0xa4, 0xa3, 0x80, 0xaa, 0x1b, 0xe2, 0x8b, 0xed, 0xa4, + 0x1f, 0x4b, 0x7a, 0xa, 0x6e, 0x69, 0x1b, 0x13, 0xce, 0x7f, 0x75, 0x96, + 0x96, 0x71, 0x1f, 0x95, 0x71, 0x6d, 0x95, 0x6b, 0x1b, 0x49, 0x73, 0x5a, + 0x40, 0x1f, 0x26, 0xfb, 0xf0, 0x23, 0xa, 0x3e, 0xa, 0xe0, 0xf7, 0x7, + 0x12, 0xad, 0xf7, 0x23, 0x65, 0xf7, 0xc, 0xe9, 0xf7, 0xc, 0x65, 0xf7, + 0x23, 0x13, 0xec, 0xf7, 0x1f, 0xf8, 0xfa, 0x4a, 0xa, 0xf7, 0x6a, 0xfb, + 0x7, 0x4a, 0xa, 0x13, 0xf2, 0xfb, 0xd3, 0xfc, 0x65, 0x23, 0xa, 0x3c, + 0x61, 0xf7, 0x1f, 0xe9, 0xf7, 0x13, 0xe9, 0xf7, 0x1c, 0x1, 0xf7, 0x73, + 0xf7, 0x1e, 0x3, 0xb3, 0xf7, 0x53, 0x15, 0xf8, 0x8c, 0xf7, 0x13, 0xfc, + 0x8c, 0x6, 0xf7, 0x4b, 0xe9, 0x15, 0xf7, 0x1e, 0xf7, 0x1c, 0xfb, 0x1e, + 0x6, 0xfc, 0xe2, 0x4, 0xf7, 0x1e, 0xf7, 0x1f, 0x81, 0xa, 0x57, 0x83, + 0x76, 0xa3, 0xf7, 0x6, 0xf7, 0xd5, 0xf7, 0x6, 0x9b, 0x77, 0x12, 0xb2, + 0xf7, 0x26, 0xf7, 0x89, 0xf7, 0x24, 0x13, 0xdc, 0xab, 0x9e, 0x15, 0xc4, + 0x5b, 0xc4, 0xcb, 0x5, 0x71, 0xbb, 0xc8, 0x7d, 0xbd, 0x1b, 0xf7, 0x41, + 0xf7, 0x3, 0xf7, 0x13, 0xf7, 0x28, 0xd4, 0x6d, 0xd0, 0x68, 0xb4, 0x1f, + 0xc5, 0xc9, 0x50, 0xb8, 0x54, 0x4f, 0x5, 0x13, 0xec, 0x95, 0x7a, 0x55, + 0xad, 0x2f, 0x1b, 0xfb, 0x47, 0x23, 0xfb, 0x15, 0xfb, 0x25, 0x41, 0x9e, + 0x4e, 0xbc, 0x56, 0x1f, 0xeb, 0xf7, 0x0, 0x15, 0x7b, 0xb1, 0x89, 0xac, + 0x94, 0x1a, 0xf7, 0x7, 0xd2, 0xb8, 0xcd, 0xb6, 0xa2, 0x7c, 0x82, 0x96, + 0x1e, 0xfb, 0x29, 0xfb, 0xa7, 0x15, 0xf7, 0x56, 0xf7, 0x69, 0x5, 0x91, + 0x7b, 0x97, 0x6c, 0x70, 0x1a, 0x37, 0x5d, 0x3e, 0x2d, 0x60, 0x7b, 0x99, + 0x93, 0x7e, 0x1e, 0xe, 0x4e, 0xa, 0xf8, 0x34, 0x89, 0x2a, 0xa, 0x13, + 0x78, 0xfb, 0xf, 0xf8, 0xa4, 0x15, 0xe3, 0x6, 0x46, 0xf7, 0x25, 0x97, + 0xa, 0xe, 0x4e, 0xa, 0xf7, 0x7a, 0xf8, 0xf1, 0x15, 0xe3, 0x6, 0xf7, + 0x1c, 0xf7, 0x25, 0x97, 0xa, 0xf7, 0x9, 0xfd, 0x84, 0x2a, 0xa, 0xe, + 0x6c, 0xa, 0xf8, 0x97, 0xf7, 0x23, 0x49, 0xa, 0x13, 0x78, 0xf7, 0x1d, + 0xf8, 0xf3, 0x15, 0xf7, 0x5, 0x6, 0xc1, 0xd2, 0xc5, 0x44, 0x5, 0xf7, + 0x4, 0x6, 0x24, 0x67, 0xa, 0xfb, 0x15, 0x6, 0xf7, 0x42, 0xfd, 0x84, + 0x2a, 0xa, 0xe, 0x6c, 0xa, 0xf8, 0x9e, 0xf7, 0x7, 0x12, 0xcd, 0xf7, + 0x1f, 0x48, 0xf7, 0xc, 0xea, 0xf7, 0xc, 0x48, 0xf7, 0x1f, 0x13, 0x6c, + 0xf7, 0x1e, 0xf8, 0xfa, 0x4a, 0xa, 0xf7, 0x6b, 0xfb, 0x7, 0x4a, 0xa, + 0xca, 0xfd, 0x6f, 0x15, 0x13, 0x72, 0x2c, 0xa, 0x13, 0xac, 0x36, 0xa, + 0xe, 0x20, 0xfb, 0x55, 0x76, 0xf9, 0xc8, 0xf7, 0x24, 0x1, 0xb6, 0x28, + 0x15, 0x97, 0x20, 0x52, 0xa, 0xf5, 0xf7, 0xf, 0xc8, 0x1f, 0xf7, 0x4a, + 0xf8, 0x89, 0x78, 0xa, 0xfc, 0x5, 0x6e, 0xa, 0xfb, 0xe, 0xf8, 0x5, + 0x40, 0xa, 0xf7, 0x58, 0xfc, 0x9d, 0x5, 0x2b, 0x48, 0xa, 0xf7, 0x35, + 0xf9, 0x55, 0x15, 0xe1, 0x6, 0xf7, 0x19, 0xf7, 0x24, 0x5, 0xfb, 0x2c, + 0x6, 0xe, 0x57, 0xfb, 0x4f, 0x76, 0xf7, 0x50, 0xf7, 0x3, 0xf7, 0xe2, + 0xf6, 0xf7, 0x4e, 0x77, 0x1, 0xc9, 0xf7, 0x20, 0xf7, 0x7c, 0xf7, 0x24, + 0x3, 0xf7, 0x5e, 0xc5, 0x15, 0x6c, 0xa7, 0xb8, 0x5c, 0xdd, 0x1b, 0xf7, + 0x10, 0xec, 0xef, 0xf7, 0x43, 0xf7, 0x49, 0x21, 0xeb, 0xfb, 0x7, 0x39, + 0x64, 0x64, 0x69, 0x69, 0x1f, 0xf7, 0x97, 0xfb, 0x20, 0xfe, 0x32, 0xf7, + 0x20, 0x7, 0x8a, 0xf8, 0x63, 0x15, 0xf6, 0xbf, 0xca, 0xcc, 0xf2, 0x98, + 0xfb, 0x3, 0x50, 0xfb, 0x16, 0x4c, 0x69, 0x5b, 0x36, 0x66, 0xd1, 0xe9, + 0x1e, 0xe, 0x20, 0xfb, 0x55, 0x76, 0xf9, 0xcf, 0xf7, 0x8, 0x1, 0xf7, + 0x6, 0xf7, 0x9, 0xe8, 0xf7, 0x9, 0x3, 0xf7, 0x6, 0xf8, 0xf9, 0x88, + 0xa, 0xf7, 0x66, 0xfb, 0x8, 0x88, 0xa, 0xfb, 0xad, 0xfd, 0xcf, 0x15, + 0x97, 0xfb, 0x0, 0x52, 0xa, 0xf6, 0xf7, 0x10, 0xc8, 0x1f, 0xf7, 0x4a, + 0xf8, 0x8d, 0x78, 0xa, 0xfc, 0x8, 0x6e, 0xa, 0xfb, 0xe, 0xf8, 0x8, + 0x40, 0xa, 0xf7, 0x58, 0xfc, 0xa1, 0x5, 0x2a, 0x48, 0xa, 0xe, 0x76, + 0xa0, 0xf8, 0x9f, 0x9a, 0xf7, 0x48, 0x9e, 0x6, 0xfb, 0x70, 0x98, 0x7, + 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xf7, 0x11, 0xa, 0xf7, 0x20, + 0xb, 0xf7, 0x0, 0x9c, 0xc, 0xc, 0x8c, 0xc, 0xe, 0xf7, 0xe1, 0x14, + 0xf9, 0x2b, 0x15, 0xb5, 0x13, 0x0, 0x79, 0x2, 0x0, 0x1, 0x0, 0x23, + 0x0, 0x28, 0x0, 0x30, 0x0, 0x65, 0x0, 0x6a, 0x0, 0xaa, 0x0, 0xca, + 0x0, 0xed, 0x0, 0xf1, 0x1, 0x19, 0x1, 0x21, 0x1, 0x3e, 0x1, 0x5b, + 0x1, 0x69, 0x1, 0x81, 0x1, 0x87, 0x1, 0x93, 0x1, 0xc7, 0x1, 0xcb, + 0x1, 0xda, 0x1, 0xe3, 0x1, 0xed, 0x1, 0xfc, 0x2, 0x5, 0x2, 0xe, + 0x2, 0x18, 0x2, 0x25, 0x2, 0x2e, 0x2, 0x39, 0x2, 0x44, 0x2, 0x4d, + 0x2, 0x52, 0x2, 0x57, 0x2, 0x60, 0x2, 0x6a, 0x2, 0x74, 0x2, 0x7f, + 0x2, 0x86, 0x2, 0x8f, 0x2, 0x99, 0x2, 0xa5, 0x2, 0xae, 0x2, 0xb7, + 0x2, 0xc0, 0x2, 0xc5, 0x2, 0xca, 0x2, 0xd5, 0x2, 0xe8, 0x2, 0xfb, + 0x3, 0x4, 0x3, 0xf, 0x3, 0x21, 0x3, 0x2c, 0x3, 0x34, 0x3, 0x3c, + 0x3, 0x4d, 0x3, 0x5e, 0x3, 0x65, 0x3, 0x75, 0x3, 0x85, 0x3, 0x94, + 0x3, 0x9b, 0x3, 0xa2, 0x3, 0xa8, 0x3, 0xb6, 0x3, 0xbf, 0x3, 0xca, + 0x3, 0xd1, 0x3, 0xd9, 0x3, 0xde, 0x3, 0xe3, 0x3, 0xe7, 0x3, 0xeb, + 0x3, 0xef, 0x3, 0xf9, 0x4, 0x4, 0x4, 0xa, 0x4, 0xd, 0x4, 0x11, + 0x4, 0x1c, 0x4, 0x27, 0x4, 0x32, 0x4, 0x3d, 0x4, 0x44, 0x4, 0x4b, + 0x4, 0x51, 0x4, 0x58, 0x4, 0x5f, 0x4, 0x66, 0x4, 0x6b, 0x4, 0x70, + 0x4, 0x74, 0x4, 0x78, 0x4, 0x7c, 0x4, 0x85, 0x4, 0x8f, 0x4, 0x97, + 0x4, 0x9b, 0x4, 0x9f, 0x4, 0xa3, 0x4, 0xa7, 0x4, 0xab, 0x4, 0xb4, + 0x4, 0xbd, 0x4, 0xc6, 0x4, 0xcf, 0x4, 0xd8, 0x4, 0xe1, 0x4, 0xea, + 0x4, 0xf3, 0x4, 0xfc, 0x5, 0x5, 0x5, 0xe, 0x5, 0x17, 0x5, 0x20, + 0x5, 0x27, 0x5, 0x2c, 0x5, 0x32, 0x5, 0x37, 0x5, 0x3c, 0x5, 0x41, + 0x77, 0xb8, 0x83, 0xa2, 0x38, 0xa, 0xac, 0x1a, 0xeb, 0x80, 0xf4, 0xfb, + 0x73, 0xfb, 0x32, 0x65, 0x49, 0x35, 0x73, 0x1e, 0xf7, 0x13, 0x74, 0x5, + 0xa5, 0x2d, 0xa, 0x80, 0x6e, 0x82, 0x3c, 0x7d, 0x8, 0xb, 0x30, 0xa, + 0x20, 0xa, 0xb, 0xfd, 0x49, 0x24, 0xa, 0x13, 0xbc, 0x26, 0xa, 0x15, + 0xfb, 0x84, 0xf7, 0x50, 0x65, 0xde, 0xf7, 0x3e, 0xf2, 0xf7, 0x1b, 0xf7, + 0x23, 0xf7, 0x18, 0x32, 0xf7, 0x19, 0xfb, 0x4c, 0xfb, 0x4f, 0x37, 0xfb, + 0x21, 0xfb, 0x10, 0x1e, 0xf7, 0x23, 0x16, 0xf7, 0x2, 0xc8, 0xb6, 0xce, + 0xd3, 0xc5, 0x5b, 0x22, 0xfb, 0x7, 0x49, 0x58, 0x4b, 0x49, 0x4d, 0xc3, + 0xf7, 0x2, 0x1e, 0xe, 0x21, 0xa, 0x3b, 0xa, 0xb, 0x15, 0xf7, 0xfb, + 0x6, 0xf7, 0x34, 0x5a, 0xf7, 0x31, 0xfb, 0x60, 0xfb, 0x3f, 0x3a, 0xfb, + 0x1d, 0xfb, 0x23, 0xfb, 0x42, 0xf7, 0x20, 0x26, 0xf7, 0xe, 0xf7, 0x47, + 0xb8, 0xf7, 0x11, 0xac, 0x97, 0x1e, 0xfb, 0x23, 0xa2, 0x5, 0x73, 0x83, + 0x79, 0x5a, 0x48, 0x1b, 0x3a, 0x6a, 0xcd, 0xcb, 0x89, 0x1f, 0x8e, 0xe1, + 0x15, 0xd1, 0x8a, 0xb0, 0xc1, 0xce, 0x1b, 0xda, 0xab, 0x55, 0x45, 0x1f, + 0xe, 0x2e, 0xd1, 0x45, 0x37, 0xa, 0xf7, 0x59, 0x15, 0x70, 0x7, 0x3d, + 0x72, 0x4c, 0x34, 0x55, 0x73, 0xac, 0xa9, 0xbc, 0xc4, 0xa4, 0xa4, 0x90, + 0x1e, 0xa9, 0x92, 0xc8, 0x95, 0x9c, 0x94, 0x8, 0xe, 0xf7, 0x26, 0x6, + 0xc3, 0xf7, 0x3b, 0x5, 0xf7, 0xa3, 0x6, 0xc6, 0xfb, 0x3b, 0x5, 0xf7, + 0x2a, 0x6, 0xfb, 0xa4, 0xf9, 0x74, 0x40, 0xa, 0x76, 0xfc, 0x51, 0x15, + 0xe7, 0xf7, 0xa5, 0xe9, 0xfb, 0xa5, 0x5, 0xb, 0x15, 0x27, 0xa, 0xe, + 0x15, 0xfb, 0x3a, 0xd8, 0xfb, 0x61, 0xf7, 0xa0, 0xf7, 0x8d, 0xeb, 0xf7, + 0x4b, 0xf7, 0x50, 0xf7, 0x65, 0x3d, 0xa, 0xfb, 0x22, 0xfb, 0x79, 0x1e, + 0xf7, 0x28, 0x16, 0xf4, 0xac, 0xf7, 0x21, 0xf7, 0x38, 0xf7, 0x43, 0xa1, + 0xfb, 0x39, 0x3a, 0xb, 0x15, 0x2c, 0xa, 0x13, 0xb8, 0x36, 0xa, 0xb, + 0xf7, 0x3, 0xf7, 0x80, 0x1e, 0xf8, 0x16, 0xfb, 0x26, 0xfc, 0x16, 0x7, + 0xfb, 0xf, 0x8b, 0x28, 0xfb, 0x20, 0xfb, 0x1a, 0x7e, 0xe4, 0xf7, 0x19, + 0x1e, 0xf8, 0x16, 0x7, 0xb, 0xf7, 0x15, 0xf8, 0x9e, 0xfb, 0x1f, 0xfb, + 0x67, 0x6, 0xfb, 0x15, 0x8d, 0x33, 0xfb, 0x7, 0x2a, 0x94, 0xe1, 0xf7, + 0x17, 0x1e, 0xf7, 0x67, 0xfb, 0x1f, 0xfb, 0xdd, 0x7, 0xb, 0x95, 0x99, + 0xb4, 0xd0, 0x1b, 0xeb, 0x8b, 0x5d, 0x68, 0x1f, 0x82, 0x7, 0x6f, 0xb, + 0xf8, 0xb5, 0xf7, 0x11, 0xfc, 0x25, 0xf7, 0x5c, 0xf7, 0xfd, 0xf7, 0x11, + 0xfb, 0xfd, 0xf7, 0x39, 0xf8, 0x18, 0xf7, 0x11, 0xfc, 0xa8, 0x6, 0xb, + 0xf7, 0x79, 0xc4, 0x2b, 0xa, 0xe, 0x15, 0x98, 0x5f, 0x8e, 0x84, 0x8e, + 0x83, 0x8, 0xf7, 0x1e, 0x6, 0xb, 0xfc, 0xdc, 0x15, 0xfb, 0x39, 0xd8, + 0xfb, 0x62, 0xf7, 0xa0, 0xf7, 0x8d, 0xeb, 0xf7, 0x4c, 0xf7, 0x4f, 0xf7, + 0x66, 0xfb, 0x5, 0xf7, 0x35, 0xfb, 0x7c, 0xfb, 0x72, 0xfb, 0xf, 0xfb, + 0x21, 0xfb, 0x7a, 0x1e, 0xf7, 0x28, 0x16, 0xf4, 0xac, 0xf7, 0x22, 0xf7, + 0x38, 0xf7, 0x43, 0xa1, 0xfb, 0x3a, 0x3a, 0xfb, 0x14, 0xb, 0x3b, 0xa, + 0x26, 0xa, 0x3a, 0xa, 0xbb, 0xf7, 0x28, 0x1, 0xd7, 0xf7, 0x24, 0x3, + 0xd7, 0x16, 0x2e, 0xa, 0xb, 0x5e, 0xa, 0xa4, 0xfb, 0x48, 0xf7, 0xa0, + 0x2f, 0xa, 0x69, 0xa, 0xf7, 0x3b, 0xf7, 0x10, 0xf8, 0x51, 0x77, 0xb, + 0xfb, 0x8, 0xba, 0x32, 0xf7, 0x14, 0xcf, 0xce, 0xac, 0xc5, 0xb1, 0x1e, + 0x8d, 0x6, 0xb, 0xf5, 0xe1, 0xbf, 0xb6, 0xa7, 0xa6, 0x1e, 0x80, 0xb, + 0x88, 0xd1, 0x8, 0x8a, 0xa9, 0x8d, 0xf7, 0x24, 0xb, 0x20, 0x7d, 0xef, + 0x48, 0x76, 0xf8, 0x4a, 0xf7, 0x0, 0xb, 0x8f, 0x8b, 0xf7, 0x11, 0xf7, + 0x5c, 0xf7, 0x11, 0xf7, 0x39, 0xf7, 0x11, 0xb, 0x41, 0x7d, 0xfb, 0xc, + 0x78, 0xfb, 0x16, 0x1a, 0xb, 0x20, 0x7d, 0xf7, 0x0, 0xf7, 0x16, 0xe1, + 0xf7, 0x10, 0xf6, 0xb, 0xfb, 0x5, 0xf7, 0x36, 0xfb, 0x7c, 0xfb, 0x72, + 0xfb, 0xf, 0xb, 0x57, 0x7d, 0xf7, 0x4, 0xf7, 0xd3, 0xf7, 0x4, 0xb, + 0xa0, 0x76, 0x4d, 0xa, 0xb, 0x5, 0xfb, 0x25, 0x6, 0xb, 0xfb, 0x2c, + 0x5e, 0xf7, 0x5, 0xf7, 0x1a, 0x1e, 0xe, 0x1, 0xd3, 0xf7, 0x26, 0xf7, + 0xb3, 0xf7, 0x26, 0x3, 0xb, 0x1, 0xa2, 0xf7, 0x29, 0xf7, 0x6a, 0xf7, + 0x22, 0x3, 0xb, 0xf8, 0xfa, 0x4b, 0xa, 0xf7, 0x62, 0xfb, 0x7, 0x4b, + 0xa, 0xb, 0xb4, 0x8b, 0xde, 0xc5, 0x1a, 0xe6, 0xb, 0xfe, 0x3c, 0x15, + 0xf7, 0x20, 0xf9, 0x60, 0x6d, 0xa, 0x3e, 0xa, 0xd9, 0xf7, 0x23, 0x1, + 0x56, 0xa, 0x3, 0xb, 0x70, 0x5b, 0x87, 0x6c, 0x1b, 0x76, 0x7f, 0x8c, + 0x90, 0x73, 0x1f, 0xb, 0x12, 0xcd, 0xf7, 0x1f, 0xf7, 0x5d, 0xf7, 0x1f, + 0xb, 0x15, 0xf7, 0xc, 0xf7, 0x7, 0xfb, 0xc, 0x6, 0xb, 0x15, 0xf7, + 0x7, 0xf7, 0x7, 0xfb, 0x7, 0x6, 0xb, 0xfc, 0x15, 0xa0, 0x76, 0xb, + 0xf9, 0x62, 0x77, 0x1, 0xb, 0x6c, 0xa, 0xf8, 0x95, 0xf7, 0x25, 0x49, + 0xa, 0x13, 0x78, 0xb, 0x5, 0xfb, 0x32, 0x6, 0xfb, 0x33, 0xfb, 0xae, + 0xfb, 0x34, 0xf7, 0xae, 0x5, 0xfb, 0x35, 0x6, 0xf7, 0x8e, 0xb, 0x15, + 0xe3, 0x6, 0xf7, 0x11, 0xf7, 0x5f, 0xfb, 0x11, 0xf7, 0x61, 0x5, 0x33, + 0x6, 0xf2, 0xfb, 0x61, 0x5, 0xb, 0x66, 0xa, 0xf7, 0x52, 0xf7, 0x1d, + 0x13, 0x7c, 0xb, 0x5, 0x87, 0x9e, 0x82, 0x87, 0xae, 0x1b, 0xf7, 0x41, + 0xa2, 0xb, 0x15, 0xe3, 0x6, 0x24, 0xf7, 0x64, 0xf2, 0xf7, 0x5c, 0x5, + 0x33, 0x6, 0xfb, 0x11, 0xfb, 0x5c, 0x5, 0xb, 0xc6, 0x78, 0xf7, 0x11, + 0xf9, 0x42, 0xf7, 0x24, 0x42, 0xa, 0xb, 0xf7, 0x13, 0xf8, 0x9d, 0xfb, + 0x13, 0x6, 0xb, 0xad, 0xf7, 0x23, 0xf7, 0x96, 0xf7, 0x23, 0xb, 0xf7, + 0x66, 0xf7, 0x3d, 0xf7, 0x3d, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x3d, 0xf7, + 0x3d, 0xfb, 0x66, 0xb, 0xf7, 0x3c, 0xf7, 0x1c, 0xfb, 0x1b, 0xfb, 0x3c, + 0xfb, 0x3c, 0xfb, 0x1c, 0xfb, 0x1b, 0xfb, 0x3c, 0xb, 0x5f, 0xa, 0xf8, + 0x81, 0xf7, 0x11, 0xb, 0x57, 0xfb, 0x4e, 0x76, 0xf7, 0x54, 0xf7, 0x0, + 0xf7, 0xe8, 0xf7, 0x5, 0x7f, 0x77, 0x12, 0xb, 0xfb, 0xa6, 0xfb, 0x58, + 0xf7, 0x7, 0xf7, 0xb2, 0xf7, 0x8, 0xf7, 0xb2, 0xf7, 0x7, 0x1, 0xb, + 0x77, 0x1, 0xd0, 0xf7, 0x1e, 0xf7, 0xc9, 0xf7, 0x1e, 0x3, 0xd0, 0x16, + 0xf7, 0x1e, 0xb, 0xec, 0x76, 0xf8, 0x2c, 0x77, 0x1, 0xb, 0x15, 0xfc, + 0x16, 0x7, 0xfb, 0x3b, 0xb, 0xf7, 0x7, 0x78, 0xf7, 0x10, 0xb, 0x1, + 0xd7, 0xf7, 0x25, 0xf7, 0x94, 0xf7, 0x2a, 0x3, 0xd7, 0x16, 0xf7, 0x25, + 0xb, 0x45, 0xa, 0x7, 0x13, 0xe8, 0xfb, 0x1a, 0x6, 0xb, 0x4c, 0xa, + 0xf9, 0x82, 0x77, 0x1, 0xd7, 0xf7, 0x13, 0x3, 0xb, 0x7d, 0xa, 0xd0, + 0x16, 0xf7, 0x20, 0xb, 0xf7, 0xf, 0x39, 0xdd, 0x8a, 0x77, 0x12, 0xb, + 0x6, 0x97, 0x8c, 0x8b, 0xb, 0x12, 0xa8, 0xf7, 0x20, 0xb, 0xf7, 0x23, + 0x5, 0xb, 0xfb, 0x20, 0x6, 0xb, 0xc6, 0xa0, 0x76, 0xb, 0x65, 0xa, + 0xaa, 0xac, 0x1b, 0xaa, 0xa2, 0x82, 0x81, 0xb, 0x15, 0xe9, 0x6, 0xf7, + 0x45, 0x83, 0xa, 0xfb, 0x39, 0x6, 0xb, 0x57, 0x7d, 0xf5, 0x2d, 0xe9, + 0xb, 0x68, 0xa, 0xe, 0x5, 0x89, 0x6, 0xb, 0x75, 0xfb, 0x1, 0x26, + 0x1f, 0x3e, 0xfb, 0x1, 0xd8, 0x6, 0xb, 0xf7, 0x9d, 0x16, 0xf7, 0x1d, + 0xf7, 0xc0, 0x6, 0xf7, 0x8f, 0xb, 0xfb, 0x10, 0x7a, 0xfb, 0x3, 0x52, + 0x1e, 0xeb, 0x16, 0xcc, 0xb, 0xa7, 0xf7, 0x55, 0x84, 0xda, 0x1b, 0xf7, + 0xd, 0xf7, 0x3d, 0xb, 0xa0, 0x76, 0xf8, 0xa8, 0x77, 0x1, 0xb, 0xf7, + 0x44, 0xf7, 0x7, 0xfb, 0x44, 0xb, 0x67, 0xa, 0xfb, 0x2d, 0x6, 0xb, + 0xa0, 0x76, 0xf8, 0x2c, 0xf7, 0x1, 0xb, 0x5, 0xf7, 0x9, 0x6, 0xfb, + 0x0, 0xb, 0x5, 0xfb, 0x21, 0x6, 0xfb, 0xb, 0xb, 0x20, 0x78, 0xf7, + 0x6, 0xb, 0x6, 0x7d, 0x89, 0x87, 0xb, 0x82, 0xa, 0xd7, 0xb, 0xfb, + 0x4, 0x6, 0xb, 0xf7, 0x20, 0x3, 0xb, 0x1, 0xcb, 0xf7, 0x28, 0xf7, + 0xfc, 0x85, 0xa, 0xb, 0xfb, 0x58, 0xf7, 0x0, 0xf9, 0x52, 0xf7, 0x0, + 0x1, 0xb, 0xfb, 0x3e, 0xfb, 0x3d, 0xfb, 0x65, 0x1e, 0xe, 0xfb, 0x1e, + 0x6, 0xe, 0xf7, 0xd, 0x1, 0xb, 0xf7, 0x26, 0x5, 0xb, 0xf7, 0x26, + 0x1, 0xb, 0xf7, 0x28, 0x3, 0xb, 0x57, 0x8b, 0xf7, 0xe, 0xf8, 0xe8, + 0x77, 0x1, 0xb, 0xfc, 0x1d, 0x6, 0xf8, 0xf, 0xf8, 0x76, 0x5, 0xb, + 0x15, 0xf7, 0x9, 0xf7, 0x8, 0xfb, 0x9, 0x6, 0xb, 0xb8, 0x6c, 0x1f, + 0x7c, 0xa2, 0x81, 0xa6, 0x84, 0xb, 0x15, 0xf7, 0xd, 0xf7, 0xa, 0xfb, + 0xd, 0x6, 0xb, 0x15, 0xf7, 0x5, 0xf7, 0x9, 0xfb, 0x5, 0x6, 0xb, + 0xf7, 0xd6, 0x7, 0xfb, 0xff, 0xfc, 0x65, 0x5, 0xb, 0x15, 0xf7, 0xa, + 0xf7, 0x9, 0xfb, 0xa, 0x6, 0xb, 0x15, 0xf7, 0xa, 0xf7, 0xb, 0xfb, + 0xa, 0x6, 0xb, 0x15, 0xf7, 0xb, 0xf7, 0x9, 0xfb, 0xb, 0x6, 0xb, + 0x77, 0x1, 0xf7, 0x78, 0xf7, 0x13, 0x3, 0xb3, 0xb, 0x3c, 0x98, 0x76, + 0xf8, 0x9e, 0x77, 0x1, 0xb1, 0xb, 0x15, 0xf7, 0x7, 0xf7, 0x8, 0xfb, + 0x7, 0x6, 0xb, 0xf9, 0x88, 0x5, 0xfb, 0x13, 0x6, 0xe, 0x1, 0xd0, + 0x7d, 0xa, 0xb, 0x15, 0xf7, 0xa, 0x6, 0xc4, 0xb, 0x5, 0xfb, 0x31, + 0x6, 0xb, 0x5, 0xfb, 0x2f, 0x6, 0xb, 0x89, 0x42, 0x5a, 0x7f, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp b/core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp new file mode 100644 index 0000000000..054976cced --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp @@ -0,0 +1,1378 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSansBoldItalicFontData[16418] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x17, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x50, 0x53, 0x2d, 0x42, 0x6f, 0x6c, + 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x27, + 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, + 0xf8, 0x14, 0x4, 0x7f, 0xc, 0x2, 0xfb, 0x42, 0xfb, 0x78, 0xfa, 0xee, + 0xfa, 0x56, 0x5, 0xf7, 0x3c, 0xf, 0xf8, 0x9c, 0x11, 0xb1, 0x1c, 0x39, + 0xfc, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, 0x48, 0x55, 0x45, 0x75, + 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, + 0x6d, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x50, 0x53, 0x20, 0x42, 0x6f, + 0x6c, 0x64, 0x20, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x43, 0x68, 0x72, + 0x6F, 0x6D, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x50, 0x53, 0x0, 0x0, + 0x1, 0x0, 0x1, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x86, + 0x2, 0x0, 0x91, 0x0, 0x0, 0x63, 0x0, 0x0, 0x6d, 0x1, 0x0, 0x8c, + 0x0, 0x0, 0x92, 0x0, 0x0, 0xc7, 0x0, 0x0, 0xe4, 0x0, 0x0, 0x2, + 0x5, 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, + 0x1d, 0x1, 0x87, 0x0, 0x0, 0x75, 0x0, 0x0, 0x65, 0x0, 0x0, 0x76, + 0x0, 0x0, 0x79, 0x0, 0x0, 0x70, 0x1, 0x0, 0x7e, 0x0, 0x0, 0x7a, + 0x0, 0x0, 0xc0, 0x0, 0x0, 0x6b, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x41, + 0x0, 0x0, 0x8, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x74, + 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x99, + 0x0, 0x0, 0xdd, 0x0, 0x0, 0x6c, 0x0, 0x0, 0x94, 0x0, 0x0, 0xc6, + 0x0, 0x0, 0x60, 0x2, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, + 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, + 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa6, 0x0, 0x0, 0xa5, + 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, + 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, + 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, + 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, + 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, + 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, + 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, + 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, + 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, + 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, + 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, + 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, + 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, + 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, + 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, + 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, + 0x0, 0x0, 0xe3, 0x0, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, + 0x7, 0x0, 0x37, 0x0, 0x4c, 0x0, 0x76, 0x0, 0x89, 0x0, 0xb9, 0x0, + 0xcf, 0x0, 0xde, 0x0, 0xf6, 0x1, 0x48, 0x1, 0x94, 0x1, 0xbc, 0x1, + 0xe0, 0x2, 0x2b, 0x2, 0x70, 0x2, 0x99, 0x2, 0xd3, 0x3, 0x39, 0x3, + 0xc9, 0x4, 0x5a, 0x5, 0x4, 0x5, 0x21, 0x5, 0x5f, 0x5, 0x97, 0x5, + 0xcc, 0x5, 0xf3, 0x6, 0x1a, 0x6, 0x2e, 0x6, 0x40, 0x6, 0x55, 0x6, + 0x9e, 0x6, 0xca, 0x7, 0x1f, 0x7, 0x83, 0x7, 0xc5, 0x8, 0x25, 0x8, + 0x90, 0x8, 0xc1, 0x9, 0x35, 0x9, 0x9f, 0x9, 0xc2, 0x9, 0xfa, 0xa, + 0x1f, 0xa, 0x3f, 0xa, 0x62, 0xa, 0xb7, 0xb, 0x65, 0xb, 0x96, 0xb, + 0xef, 0xc, 0x39, 0xc, 0x6b, 0xc, 0x97, 0xc, 0xba, 0xd, 0x1a, 0xd, + 0x48, 0xd, 0x58, 0xd, 0x89, 0xd, 0xb7, 0xd, 0xc9, 0xe, 0x7, 0xe, + 0x2d, 0xe, 0x7c, 0xe, 0xb8, 0xf, 0x2d, 0xf, 0x8a, 0xf, 0xe6, 0x10, + 0xa, 0x10, 0x59, 0x10, 0x74, 0x10, 0xb2, 0x10, 0xe1, 0x11, 0x3, 0x11, + 0x31, 0x11, 0x53, 0x11, 0x6c, 0x11, 0x8d, 0x11, 0xae, 0x11, 0xbc, 0x11, + 0xcb, 0x12, 0x1d, 0x12, 0x7d, 0x12, 0xc7, 0x13, 0x21, 0x13, 0x73, 0x13, + 0xb1, 0x14, 0x1c, 0x14, 0x64, 0x14, 0x82, 0x14, 0xc6, 0x14, 0xf2, 0x14, + 0xfe, 0x15, 0x65, 0x15, 0xaf, 0x15, 0xc9, 0x16, 0x24, 0x16, 0x80, 0x16, + 0xbf, 0x17, 0x16, 0x17, 0x5a, 0x17, 0xa8, 0x17, 0xc5, 0x18, 0x1, 0x18, + 0x2f, 0x18, 0x6b, 0x18, 0x98, 0x18, 0xeb, 0x19, 0x4, 0x19, 0x5b, 0x19, + 0xa1, 0x1a, 0x1c, 0x1a, 0x3e, 0x1a, 0x9e, 0x1a, 0xbd, 0x1a, 0xd7, 0x1b, + 0xe, 0x1b, 0x58, 0x1b, 0x6c, 0x1c, 0xa, 0x1c, 0x8f, 0x1c, 0xa7, 0x1d, + 0x32, 0x1d, 0x5a, 0x1d, 0x7d, 0x1d, 0xc5, 0x1d, 0xe8, 0x1e, 0x7, 0x1e, + 0x11, 0x1e, 0x1c, 0x1e, 0x68, 0x1e, 0xb8, 0x1f, 0x2e, 0x1f, 0x44, 0x1f, + 0xdc, 0x20, 0x1b, 0x20, 0x48, 0x20, 0xbc, 0x21, 0x52, 0x21, 0xd7, 0x22, + 0x2d, 0x22, 0x4d, 0x22, 0xf6, 0x23, 0x8, 0x23, 0x98, 0x24, 0x2, 0x24, + 0x10, 0x24, 0x25, 0x24, 0x37, 0x24, 0xd9, 0x24, 0xf1, 0x25, 0x25, 0x25, + 0x56, 0x25, 0x9c, 0x25, 0xf2, 0x26, 0x2, 0x26, 0x4a, 0x26, 0x78, 0x26, + 0x8a, 0x26, 0xbd, 0x26, 0xe2, 0x27, 0x26, 0x27, 0x33, 0x27, 0x93, 0x28, + 0x10, 0x28, 0xaa, 0x29, 0x0, 0x29, 0x18, 0x29, 0x33, 0x29, 0x53, 0x29, + 0x9e, 0x29, 0xc2, 0x29, 0xf9, 0x2a, 0x49, 0x2a, 0xd8, 0x2a, 0xed, 0x2b, + 0x4, 0x2b, 0x24, 0x2b, 0x49, 0x2b, 0x6d, 0x2b, 0x84, 0x2b, 0xa5, 0x2b, + 0xbf, 0x2c, 0xc, 0x2c, 0x66, 0x2c, 0x72, 0x2c, 0x8e, 0x2c, 0xa8, 0x2c, + 0xed, 0x2d, 0x13, 0x2d, 0x46, 0x2d, 0xbd, 0x2d, 0xca, 0x2d, 0xd0, 0x2d, + 0xde, 0x2d, 0xee, 0x2e, 0x1e, 0x2e, 0x6a, 0x2e, 0xe8, 0x2f, 0x5, 0x2f, + 0x2a, 0x2f, 0x4f, 0x2f, 0xa2, 0x2f, 0xc2, 0x30, 0x5b, 0x31, 0x8, 0x31, + 0x8e, 0x31, 0xb1, 0x31, 0xd6, 0x31, 0xfb, 0x32, 0x29, 0x32, 0x3f, 0x32, + 0x5b, 0x32, 0x7d, 0x32, 0x9e, 0x33, 0x1a, 0x33, 0xac, 0x33, 0xbf, 0x33, + 0xe4, 0x34, 0x1, 0x34, 0x52, 0x34, 0x77, 0x34, 0xa3, 0x35, 0x1d, 0x35, + 0x2b, 0x35, 0x37, 0x35, 0x45, 0x35, 0x58, 0x35, 0x94, 0x35, 0xed, 0x36, + 0x24, 0xfb, 0xf9, 0xe, 0xfb, 0xf9, 0xe, 0xf8, 0xf0, 0xd4, 0x42, 0xf7, + 0x26, 0x12, 0x13, 0x40, 0xf7, 0x30, 0xf9, 0x82, 0x15, 0x49, 0x94, 0xae, + 0x3b, 0xf7, 0x4, 0x1b, 0xf7, 0x11, 0xb9, 0xf7, 0x4, 0xad, 0x96, 0x1f, + 0x43, 0x6, 0x13, 0x80, 0x75, 0x80, 0x6c, 0x58, 0x4b, 0x1b, 0x13, 0x40, + 0x55, 0x76, 0xad, 0xb2, 0x81, 0x1f, 0xe, 0xf8, 0xfa, 0xf7, 0x7, 0x1, + 0xf7, 0x7f, 0xf8, 0xfa, 0x15, 0xf7, 0x10, 0x6, 0xa5, 0xf7, 0x7, 0x5, + 0xfb, 0x10, 0x6, 0xe, 0xf7, 0x5c, 0xf9, 0x36, 0x15, 0x51, 0xbd, 0x5b, + 0xc8, 0xc5, 0xbe, 0xb9, 0xc7, 0xc7, 0x59, 0xb5, 0x50, 0x4c, 0x5b, 0x60, + 0x50, 0x1e, 0xc7, 0x16, 0xa5, 0xa1, 0x9d, 0xa8, 0xa5, 0xa2, 0x7a, 0x70, + 0x70, 0x74, 0x76, 0x71, 0x6f, 0x74, 0xa0, 0xa6, 0x1e, 0xe, 0x72, 0xa, + 0xf7, 0x1d, 0xf8, 0xf0, 0x15, 0xf3, 0x52, 0xa, 0xf7, 0x6, 0xfb, 0x26, + 0x15, 0xf3, 0x52, 0xa, 0xe, 0xfb, 0x78, 0xd9, 0xf7, 0x2a, 0x77, 0x1, + 0xb4, 0xdc, 0x3, 0xd6, 0x16, 0x83, 0x7a, 0x71, 0x4f, 0x54, 0x1a, 0x46, + 0xb1, 0x70, 0xc3, 0xaf, 0xbe, 0x9b, 0x9b, 0xa6, 0x1e, 0x9a, 0xcd, 0x5, + 0x89, 0x86, 0x55, 0x79, 0x6a, 0x1b, 0x76, 0x6e, 0x95, 0xb2, 0x9b, 0x8f, + 0xaa, 0xa2, 0xc1, 0x1f, 0xe, 0x72, 0xa, 0xf7, 0x68, 0xf8, 0xf0, 0x8e, + 0xa, 0xf7, 0x2c, 0xf7, 0x26, 0x7a, 0xa, 0x32, 0x34, 0x63, 0xe2, 0x5, + 0x25, 0x6, 0xe, 0x48, 0xa, 0x1, 0xd0, 0x16, 0xf7, 0x23, 0x6, 0xf7, + 0x2, 0xf8, 0xa8, 0x47, 0xa, 0xe, 0xfc, 0x68, 0x8d, 0x76, 0xf9, 0x6d, + 0x77, 0x1, 0x29, 0x78, 0x15, 0xf8, 0xdd, 0xf9, 0x6d, 0x5, 0x3f, 0x6, + 0xfc, 0xdd, 0xfd, 0x6d, 0x5, 0xe, 0x84, 0xa, 0xf9, 0x6b, 0x77, 0x1, + 0xe2, 0x16, 0xf7, 0x21, 0x6, 0xe3, 0xf8, 0x33, 0x5, 0xef, 0x6, 0xa1, + 0xf1, 0x5, 0x27, 0x6, 0xda, 0x9a, 0x9d, 0xa4, 0xb2, 0x1b, 0x99, 0x9d, + 0x87, 0x7d, 0xb1, 0x1f, 0xa6, 0xf0, 0x5, 0x9c, 0x55, 0x59, 0x91, 0x6b, + 0x1b, 0xfb, 0x17, 0x81, 0x28, 0xfb, 0x3, 0x6a, 0x1f, 0x3b, 0x6, 0x76, + 0x25, 0x5, 0xda, 0x6, 0xf7, 0x79, 0xfc, 0x33, 0x15, 0x9b, 0xa, 0xf7, + 0x1, 0xf8, 0x99, 0x3d, 0xa, 0x9a, 0xd2, 0x15, 0xf7, 0x21, 0x6, 0xa5, + 0xf7, 0x13, 0x65, 0xa, 0x84, 0xa, 0xf8, 0x33, 0xf1, 0xf7, 0x66, 0x77, + 0x1, 0xf8, 0x28, 0x16, 0xf7, 0x20, 0x6, 0xf7, 0x2b, 0xf9, 0x5f, 0x3d, + 0xa, 0xfc, 0x67, 0xfd, 0x5f, 0x15, 0x9b, 0xa, 0xe2, 0xf8, 0x33, 0x5, + 0xef, 0x6, 0xa0, 0xf1, 0x5, 0x27, 0x6, 0xda, 0x9c, 0x9a, 0xa4, 0xb2, + 0x1b, 0x99, 0x9f, 0x86, 0x7e, 0xb0, 0x1f, 0xa6, 0xf0, 0x5, 0x9c, 0x55, + 0x5a, 0x91, 0x6a, 0x1b, 0xfb, 0x15, 0x80, 0x28, 0xfb, 0x3, 0x6a, 0x1f, + 0x3c, 0x6, 0x75, 0x25, 0x5, 0xda, 0x6, 0xe, 0x87, 0xa, 0xcf, 0x16, + 0xf8, 0x9a, 0x50, 0xa, 0xfc, 0x4, 0x6, 0xbe, 0xf7, 0x84, 0xf7, 0x4c, + 0xee, 0xa3, 0xf7, 0x7, 0xfb, 0x4c, 0x28, 0xbd, 0xf7, 0x86, 0x94, 0xa, + 0x44, 0xfb, 0xe0, 0x30, 0x59, 0x73, 0xfb, 0x8, 0xe6, 0xbd, 0x5, 0xe, + 0xfb, 0xf9, 0x37, 0xa, 0xdc, 0x16, 0xf7, 0x20, 0x6, 0xd6, 0xf8, 0x0, + 0xe7, 0xcc, 0x9e, 0xe9, 0x2e, 0x4a, 0xc2, 0xf7, 0x98, 0x5, 0xfb, 0x20, + 0x6, 0x44, 0xfb, 0xe8, 0x29, 0x48, 0x77, 0x2d, 0xef, 0xcd, 0x5, 0xe, + 0x73, 0x8b, 0xf7, 0xd, 0xf8, 0x7f, 0xf7, 0x10, 0xbe, 0x95, 0xa, 0xa4, + 0x16, 0xf8, 0xcb, 0x40, 0xa, 0x8c, 0x8a, 0x2c, 0x8b, 0x2b, 0x1b, 0x52, + 0x4c, 0x8b, 0x8a, 0x44, 0x1f, 0xf8, 0x3e, 0xf8, 0x88, 0xa0, 0xf7, 0x8, + 0x5, 0xfc, 0xa2, 0x6, 0x71, 0xfb, 0x10, 0x5, 0xf7, 0xe8, 0x6, 0xfc, + 0x37, 0xfc, 0x84, 0x5, 0xf7, 0xc7, 0xf9, 0x33, 0x15, 0xf7, 0x19, 0x6, + 0xf7, 0x28, 0x67, 0xa, 0xfb, 0xa, 0x6, 0x34, 0x31, 0x65, 0xe5, 0x5, + 0x27, 0x6, 0xe, 0xfb, 0x1b, 0x8b, 0xf7, 0x9, 0xf7, 0xc0, 0xf7, 0x5, + 0xd0, 0x95, 0xa, 0x9f, 0x16, 0xf8, 0x69, 0x6, 0xa5, 0xf7, 0x9, 0x5, + 0xfb, 0xa8, 0x6, 0xf7, 0xd1, 0xf7, 0xdb, 0x9e, 0xe1, 0x5, 0xfc, 0x56, + 0x6, 0x72, 0xfb, 0x5, 0x5, 0xf7, 0x94, 0x6, 0xfb, 0xce, 0xfb, 0xd3, + 0x5, 0xf7, 0x83, 0xf8, 0x89, 0x15, 0xf7, 0x25, 0x6, 0xf7, 0x34, 0x67, + 0xa, 0xfb, 0x14, 0x6, 0x2d, 0x31, 0x61, 0xe5, 0x5, 0x20, 0x6, 0xe, + 0x8b, 0xf7, 0x1b, 0xf8, 0xdb, 0x77, 0x1, 0xe9, 0xf7, 0xc3, 0x3, 0xe9, + 0x16, 0x7c, 0xa, 0xa8, 0xf7, 0x1b, 0x47, 0xa, 0xb1, 0xbb, 0x15, 0xdb, + 0x6, 0xf7, 0x8, 0xf7, 0xf5, 0xb2, 0xf7, 0x4a, 0x5, 0xfb, 0x2d, 0x6, + 0x67, 0xfb, 0x4a, 0x5, 0xe, 0xfb, 0x35, 0xf8, 0x68, 0x76, 0xf7, 0xa3, + 0x77, 0x1, 0xf7, 0x55, 0xf7, 0x25, 0xb9, 0xf7, 0x25, 0x3, 0xf8, 0x14, + 0xf8, 0x53, 0x15, 0xdd, 0x6, 0xb5, 0xf7, 0x22, 0xa0, 0xf7, 0x15, 0x7a, + 0xa, 0x78, 0xfb, 0x15, 0x5, 0xfb, 0x57, 0xfb, 0x22, 0x15, 0xdd, 0x6, + 0xb7, 0xf7, 0x22, 0x9e, 0xf7, 0x15, 0x5, 0xfb, 0xd, 0x6, 0x77, 0xfb, + 0x15, 0x5, 0xe, 0x3c, 0xa0, 0x76, 0xf8, 0x35, 0xf2, 0xf7, 0x46, 0x77, + 0x1, 0xe6, 0x16, 0xf7, 0xb, 0x6, 0xb5, 0xf7, 0x47, 0x5, 0xf7, 0xb, + 0x6, 0x61, 0xfb, 0x47, 0x5, 0xf7, 0xb, 0x6, 0xb5, 0xf7, 0x47, 0x5, + 0xf7, 0x2e, 0xf1, 0xfb, 0x16, 0x6, 0xab, 0xf7, 0x1c, 0x5, 0xed, 0xf2, + 0x41, 0x6, 0xb5, 0xf7, 0x46, 0x5, 0xfb, 0xf, 0x6, 0x62, 0xfb, 0x46, + 0x5, 0xfb, 0x9, 0x6, 0xb5, 0xf7, 0x46, 0x5, 0xfb, 0xb, 0x6, 0x60, + 0xfb, 0x46, 0x5, 0xfb, 0x2b, 0x24, 0xf7, 0x13, 0x6, 0x6c, 0xfb, 0x1c, + 0x5, 0x2b, 0x25, 0xd3, 0x6, 0xf7, 0x24, 0xf1, 0x15, 0xaa, 0xf7, 0x1c, + 0x5, 0xf7, 0xa, 0x6, 0x6b, 0xfb, 0x1c, 0x5, 0xe, 0x3c, 0x2d, 0x76, + 0xe3, 0xf7, 0x3, 0xf9, 0x47, 0x77, 0x1, 0xf7, 0x2e, 0xf7, 0xe, 0xf7, + 0x46, 0xf7, 0xc, 0x3, 0xce, 0xf7, 0x5b, 0x15, 0x93, 0xfb, 0x7, 0xcf, + 0x3c, 0xec, 0x73, 0x76, 0x2b, 0x18, 0xd4, 0x6, 0x9e, 0xe3, 0x5, 0xf7, + 0x41, 0xe5, 0xf4, 0xf7, 0x5, 0xf7, 0x26, 0xfb, 0x12, 0xc9, 0x5f, 0x9c, + 0x1f, 0xb6, 0xf7, 0x5b, 0x97, 0x85, 0xa7, 0x7b, 0x94, 0x53, 0x19, 0xf7, + 0x12, 0x93, 0x80, 0xf7, 0x6, 0x42, 0xba, 0x47, 0x9d, 0x19, 0x95, 0xbe, + 0x5, 0x44, 0x6, 0x81, 0x61, 0x5, 0xfb, 0xb, 0xfb, 0x12, 0x4e, 0xfb, + 0x1d, 0x5b, 0x9f, 0xfb, 0x5, 0xf7, 0x1d, 0x50, 0x1f, 0x5c, 0xfb, 0x71, + 0x50, 0xa5, 0x84, 0xcd, 0x89, 0xa0, 0x19, 0xf7, 0x22, 0xf7, 0x82, 0x15, + 0x66, 0xa0, 0x72, 0xa7, 0xb4, 0x1a, 0xba, 0xb2, 0xb9, 0xc8, 0x89, 0x1e, + 0x61, 0xfc, 0xb2, 0x15, 0xb5, 0xf7, 0x5c, 0x5, 0xb4, 0x77, 0xb0, 0x76, + 0x57, 0x1a, 0x63, 0x70, 0x4f, 0x2e, 0x84, 0x1e, 0xe, 0xf7, 0x92, 0x7a, + 0xdb, 0x4e, 0x76, 0xf7, 0xaf, 0xdc, 0x8f, 0xdb, 0xf7, 0x5d, 0xdb, 0x8a, + 0x77, 0x12, 0xf7, 0xfa, 0xf0, 0xf7, 0xe9, 0xf0, 0x13, 0x7b, 0xf7, 0x81, + 0xf8, 0x6e, 0x15, 0x90, 0x99, 0xf7, 0x2b, 0xce, 0x9d, 0xa1, 0x82, 0x68, + 0x76, 0x7e, 0xfb, 0x1c, 0x47, 0x63, 0x8b, 0xaa, 0x99, 0x1e, 0x47, 0xfc, + 0x81, 0x15, 0xf7, 0x2, 0x6, 0x13, 0x77, 0xf8, 0xe2, 0xf9, 0x6c, 0x5, + 0xfb, 0x3, 0x6, 0xfd, 0x2, 0xfb, 0x75, 0x15, 0x4b, 0xb0, 0x44, 0xeb, + 0xf7, 0x30, 0xad, 0xf7, 0x2f, 0xcb, 0x1e, 0x13, 0xbb, 0xc4, 0x71, 0xe0, + 0xfb, 0x1, 0xfb, 0x1f, 0x5a, 0xfb, 0x1a, 0x2f, 0x1e, 0xf8, 0x4e, 0xfc, + 0x1, 0x15, 0x4a, 0xb0, 0x44, 0xeb, 0xf7, 0x2f, 0xae, 0xf7, 0x30, 0xcb, + 0xc4, 0x70, 0xe0, 0x20, 0xfb, 0x20, 0x5a, 0xfb, 0x1b, 0x30, 0x1e, 0xf0, + 0x81, 0x15, 0x91, 0x98, 0xf7, 0x29, 0xd0, 0x9b, 0xa2, 0x83, 0x68, 0x76, + 0x7d, 0xfb, 0x1d, 0x48, 0x63, 0x8b, 0xab, 0x99, 0x1e, 0xe, 0xe2, 0x7d, + 0xf7, 0x5, 0x2a, 0x76, 0xf9, 0x19, 0xe5, 0x12, 0xe4, 0xf7, 0x23, 0x9a, + 0xf7, 0x19, 0x13, 0x98, 0xf7, 0xac, 0xf8, 0x3b, 0x15, 0x4b, 0x6b, 0xfb, + 0x13, 0x4e, 0xfb, 0x1f, 0x1a, 0x32, 0xcd, 0xfb, 0x8, 0xf7, 0x49, 0xec, + 0xd4, 0xad, 0xa9, 0xb2, 0x1e, 0x13, 0x58, 0x9f, 0x77, 0xb4, 0x69, 0xa6, + 0x7c, 0xe7, 0xe6, 0x18, 0x8a, 0x8c, 0x86, 0x8f, 0x8c, 0x1a, 0x6d, 0xa2, + 0x7d, 0x98, 0x72, 0xa2, 0xa7, 0xa5, 0xae, 0xbb, 0x9e, 0xae, 0x23, 0xc6, + 0x18, 0x68, 0x56, 0x7b, 0x7c, 0x81, 0x81, 0x76, 0xa1, 0x58, 0xd1, 0x62, + 0xcf, 0x8, 0x13, 0x8, 0xf7, 0x2f, 0xd6, 0x9c, 0xe3, 0xab, 0x1a, 0x13, + 0x28, 0xc7, 0x56, 0xd7, 0xfb, 0xc, 0x23, 0x25, 0x54, 0xfb, 0x9, 0x5e, + 0x99, 0x62, 0x9e, 0x66, 0x1e, 0xbf, 0x2a, 0x15, 0xac, 0x52, 0xbf, 0x40, + 0xbb, 0x53, 0x8, 0x13, 0x98, 0x7c, 0x73, 0x63, 0x73, 0x4f, 0x1b, 0x3e, + 0x6b, 0xb7, 0xbb, 0xd9, 0xd5, 0xb7, 0xa5, 0x98, 0x1f, 0xd1, 0xf7, 0x2f, + 0x15, 0x84, 0x98, 0x7c, 0x9f, 0xab, 0x1a, 0x13, 0x0, 0xb6, 0xaa, 0xb2, + 0xb2, 0xac, 0x9f, 0x77, 0x71, 0x5f, 0x50, 0x66, 0x61, 0x77, 0x1e, 0xe, + 0xfc, 0x21, 0xf8, 0x68, 0x76, 0xf7, 0xa3, 0x77, 0x1, 0xf7, 0x39, 0xf8, + 0x53, 0x15, 0xe4, 0x6, 0xb7, 0xf7, 0x22, 0xa2, 0xf7, 0x15, 0x66, 0xa, + 0x77, 0xfb, 0x15, 0x5, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, 0x77, 0x1, + 0xd7, 0xf7, 0x19, 0x3, 0xf7, 0x33, 0xfb, 0x64, 0x15, 0xf1, 0x6, 0x8c, + 0x89, 0x92, 0x8a, 0x8d, 0x1e, 0x6d, 0xed, 0x78, 0xf7, 0x2c, 0xf4, 0x1a, + 0xf7, 0x9a, 0xf7, 0x2a, 0xf7, 0x76, 0xf7, 0x3, 0xe4, 0x1e, 0xfb, 0x5, + 0x6, 0x32, 0x2d, 0xfb, 0x54, 0xfb, 0x62, 0xfb, 0xa9, 0x1a, 0x50, 0x94, + 0xfb, 0x22, 0xd5, 0xfb, 0x38, 0x1e, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, + 0x77, 0x1, 0xf7, 0x80, 0xf7, 0x19, 0x3, 0x72, 0xfb, 0x64, 0x15, 0xf7, + 0x5, 0x6, 0xe4, 0xe9, 0xf7, 0x54, 0xf7, 0x62, 0xf7, 0xa9, 0x1a, 0xc6, + 0x82, 0xf7, 0x22, 0x41, 0xf7, 0x38, 0x1e, 0x25, 0x6, 0xab, 0x26, 0x9f, + 0xfb, 0x2d, 0xfb, 0x1, 0x1a, 0xfb, 0xd1, 0xfb, 0x5e, 0xfb, 0x6e, 0x50, + 0x5f, 0x1e, 0xe, 0xfb, 0x8a, 0xf8, 0x2c, 0x76, 0xf7, 0xdf, 0x77, 0x1, + 0xf7, 0x8c, 0xf8, 0x17, 0x15, 0xcc, 0xf7, 0x2, 0xca, 0xfb, 0x2, 0xd0, + 0xc1, 0x39, 0xe8, 0xf7, 0xa, 0xa4, 0x71, 0xe0, 0xfb, 0x6, 0x57, 0x97, + 0xf7, 0x12, 0x5, 0x37, 0x6, 0x98, 0xfb, 0x12, 0xfb, 0x0, 0xc2, 0x6f, + 0x36, 0xf7, 0xa, 0x6f, 0x32, 0x2d, 0x5, 0xe, 0x58, 0xf7, 0x52, 0xf7, + 0x14, 0x1, 0xf7, 0xab, 0xf7, 0x19, 0x3, 0xdd, 0xf7, 0x52, 0x15, 0xf7, + 0x59, 0xfb, 0x52, 0xf7, 0x19, 0xf7, 0x52, 0xf7, 0x5a, 0xf7, 0x14, 0xfb, + 0x5a, 0xf7, 0x50, 0xfb, 0x19, 0xfb, 0x50, 0xfb, 0x59, 0x6, 0xe, 0xfb, + 0xf9, 0xfb, 0x27, 0x76, 0xf7, 0xce, 0x77, 0x1, 0xc9, 0x8d, 0x15, 0xd0, + 0x6, 0x7d, 0x4a, 0x70, 0x74, 0x5b, 0x80, 0x7d, 0x44, 0x18, 0xf7, 0x2d, + 0x8e, 0xa4, 0xf7, 0x16, 0x98, 0xca, 0xa5, 0xf7, 0xa, 0x18, 0xfb, 0x2d, + 0x6, 0xe, 0xf7, 0x6b, 0xf7, 0x16, 0x1, 0xd4, 0xf7, 0x6b, 0x15, 0xf7, + 0xa9, 0x6, 0xa8, 0xf7, 0x16, 0x5, 0xfb, 0xa9, 0x6, 0xe, 0xfb, 0xf9, + 0x8b, 0xf7, 0x26, 0x1, 0xcb, 0x16, 0xf7, 0x2b, 0x6, 0xa9, 0xf7, 0x26, + 0x5, 0x97, 0xa, 0xe, 0xfb, 0xf9, 0x78, 0xa, 0x76, 0xf8, 0x8d, 0x3, + 0x66, 0x78, 0x15, 0xef, 0x6, 0xf8, 0x29, 0xf9, 0x88, 0x5, 0x25, 0x6, + 0xe, 0x3c, 0x78, 0xf7, 0x4, 0xf8, 0x8d, 0xf7, 0x4, 0x1, 0xe1, 0xf7, + 0xf, 0xf7, 0xb0, 0xf7, 0x10, 0x3, 0xe1, 0xf7, 0x63, 0x15, 0xfb, 0x3b, + 0xea, 0x50, 0xf7, 0x6, 0xf7, 0x81, 0xe0, 0xf7, 0xe6, 0xf7, 0x30, 0xf7, + 0x3e, 0x2d, 0xcc, 0xfb, 0x5, 0xfb, 0x7a, 0x2d, 0xfb, 0xe3, 0xfb, 0x3c, + 0x1e, 0xf7, 0xf, 0x16, 0xb6, 0xc6, 0xf7, 0xf0, 0xf7, 0x1b, 0xc5, 0xab, + 0x3c, 0x5f, 0x44, 0x52, 0xfb, 0xcb, 0xfb, 0x1b, 0x45, 0x75, 0xe6, 0xa2, + 0x1e, 0xe, 0x3c, 0xa0, 0x76, 0xf9, 0x5a, 0x77, 0x1, 0xf7, 0x41, 0xf7, + 0xf8, 0x3, 0xf7, 0x9c, 0x16, 0xf7, 0x14, 0x6, 0xf7, 0x1d, 0xf9, 0x5a, + 0x5, 0x3e, 0x6, 0x39, 0x2c, 0xfb, 0x1, 0x56, 0x4b, 0x6c, 0x73, 0xfb, + 0x10, 0x18, 0xb3, 0x95, 0xdb, 0xa7, 0xcd, 0xba, 0x8, 0xe, 0x3c, 0x8b, + 0xf7, 0x12, 0xf8, 0x6f, 0xf7, 0x1, 0x1, 0xf8, 0x54, 0xf7, 0x20, 0x3, + 0xa4, 0x16, 0xf8, 0x74, 0x6, 0xa9, 0xf7, 0x12, 0x5, 0xfb, 0xa6, 0x6, + 0xb0, 0xb5, 0x9b, 0x99, 0xf7, 0x10, 0xf2, 0x8, 0xf7, 0x0, 0xe4, 0xb5, + 0xd1, 0xd7, 0x1a, 0xdf, 0x4f, 0xf5, 0xfb, 0x45, 0xfb, 0x15, 0x28, 0x45, + 0xfb, 0x19, 0x73, 0x1e, 0xf7, 0x21, 0x77, 0x5, 0xbf, 0x96, 0xae, 0xc9, + 0xd1, 0x1b, 0xc3, 0xaf, 0x61, 0x65, 0x38, 0xfb, 0x14, 0x35, 0x40, 0x48, + 0x1f, 0xfb, 0x2, 0x2f, 0x2d, 0x3f, 0x7b, 0xfb, 0x9, 0x8, 0xe, 0x3c, + 0x78, 0xf7, 0x6, 0xf7, 0x63, 0xf7, 0x9, 0xf7, 0x46, 0xf7, 0x5, 0x1, + 0xf8, 0x60, 0xf7, 0x28, 0x3, 0xcc, 0xf7, 0x47, 0x15, 0xfb, 0x2b, 0xa0, + 0xf7, 0x4, 0x5c, 0xf2, 0x1b, 0xf7, 0x3b, 0xf3, 0xf7, 0xb, 0xf7, 0x1, + 0xc9, 0x68, 0xc5, 0x50, 0xa8, 0x1f, 0xcc, 0xa1, 0xcc, 0xc3, 0xe3, 0x1a, + 0xe0, 0x45, 0xf0, 0xfb, 0x2f, 0xfb, 0x4c, 0x65, 0xfb, 0x25, 0x64, 0x7e, + 0x1e, 0xf7, 0x1d, 0x71, 0x5, 0xc1, 0x9a, 0xa7, 0xb6, 0xc2, 0x1b, 0xaa, + 0xb9, 0x7c, 0x51, 0x49, 0x4f, 0x64, 0x3d, 0x1f, 0x71, 0xfb, 0x9, 0x5, + 0xd0, 0xc2, 0x72, 0x47, 0x4e, 0x5e, 0x56, 0x42, 0x4b, 0x77, 0xb5, 0xc5, + 0x81, 0x1f, 0xe, 0x3c, 0xa0, 0x76, 0xf7, 0x25, 0xf7, 0xa, 0xf8, 0x38, + 0x77, 0x1, 0xc7, 0xf8, 0xae, 0x3, 0xc7, 0xf7, 0x25, 0x15, 0xf7, 0xb1, + 0x6, 0x6b, 0xfb, 0x25, 0x5, 0xf7, 0x1a, 0x6, 0xaa, 0xf7, 0x25, 0x5, + 0xe3, 0x6, 0xa4, 0xf7, 0xa, 0x5, 0x33, 0x6, 0xea, 0xf8, 0x53, 0x7a, + 0xa, 0xfc, 0x1b, 0xfc, 0x55, 0x5, 0xf7, 0x22, 0x8d, 0x15, 0xf7, 0x50, + 0xf7, 0x72, 0x8d, 0x89, 0x5c, 0xfb, 0x70, 0x5, 0xe, 0x20, 0x78, 0xf7, + 0x7, 0xf7, 0xab, 0xf2, 0xf7, 0x2, 0xf7, 0x14, 0x1, 0xc8, 0xf7, 0x24, + 0xf7, 0x73, 0xf7, 0x27, 0x3, 0xc8, 0xf7, 0x5a, 0x15, 0xfb, 0x22, 0x8d, + 0xf1, 0x40, 0xf7, 0x9, 0x1b, 0xf7, 0x44, 0xf7, 0x9, 0xf7, 0x27, 0xf7, + 0x28, 0xf7, 0x9, 0x3d, 0xe0, 0xfb, 0xd, 0x60, 0x73, 0x81, 0x83, 0x78, + 0x1f, 0xae, 0xf7, 0x2, 0x5, 0xf7, 0x8f, 0x6, 0xa7, 0xf7, 0x14, 0x5, + 0xfc, 0x11, 0x6, 0xfb, 0x6, 0xfc, 0x1, 0xf7, 0xe, 0x82, 0x5, 0xbe, + 0xbc, 0xbd, 0x8b, 0x94, 0x1b, 0xb7, 0xb8, 0x73, 0x3f, 0xfb, 0x9, 0x42, + 0x4d, 0x49, 0x4a, 0x75, 0xbc, 0xcc, 0x8e, 0x1f, 0xe, 0x3c, 0x78, 0xf7, + 0x4, 0xf7, 0xb0, 0xe7, 0xf7, 0x15, 0xf7, 0x4, 0x1, 0xe0, 0xf7, 0x26, + 0xf7, 0x5e, 0xf7, 0x27, 0x3, 0xf7, 0xa3, 0xf8, 0x4c, 0x15, 0xb7, 0x98, + 0xaf, 0xf7, 0x6, 0xe3, 0x1b, 0xc9, 0x90, 0x59, 0x72, 0x8d, 0x1f, 0xf7, + 0x22, 0x94, 0x5, 0xf7, 0xd, 0x7c, 0x45, 0xc4, 0xfb, 0x7, 0x1b, 0xfb, + 0x6b, 0xfb, 0xb, 0xfb, 0x8f, 0xfb, 0x81, 0xfb, 0x10, 0xd7, 0xfb, 0x9, + 0xf7, 0x2a, 0xf7, 0x43, 0xe9, 0xf7, 0x2a, 0xf7, 0x14, 0xf7, 0x11, 0x3a, + 0xe0, 0xfb, 0x10, 0x64, 0x6a, 0x82, 0x77, 0x6b, 0x1f, 0x63, 0xfb, 0x6e, + 0x15, 0xe3, 0xb8, 0xce, 0xd7, 0xb0, 0xb7, 0x6d, 0x33, 0xfb, 0x0, 0x54, + 0x51, 0x4c, 0x47, 0x7b, 0xde, 0xb9, 0x1e, 0xe, 0x3c, 0xa0, 0x76, 0xf8, + 0xdd, 0xf7, 0x11, 0x1, 0xf7, 0x27, 0x16, 0xf7, 0x27, 0x6, 0xa7, 0xf7, + 0x1c, 0xf7, 0x2d, 0xf7, 0xe7, 0xf7, 0x47, 0xf7, 0x13, 0xa1, 0xeb, 0x18, + 0xfc, 0x9c, 0x6, 0x6c, 0xfb, 0x11, 0x5, 0xf7, 0xe7, 0x6, 0xfb, 0x8e, + 0xfb, 0x9c, 0x4b, 0xfb, 0xb3, 0x88, 0x75, 0x8, 0xe, 0x3c, 0x78, 0xf6, + 0xf7, 0x80, 0xf6, 0xf7, 0x38, 0xf6, 0x1, 0xd0, 0xf7, 0x2d, 0xf7, 0x65, + 0xf7, 0x29, 0x3, 0xf7, 0x7c, 0xf8, 0x16, 0x15, 0xfb, 0x21, 0x5f, 0x75, + 0xfb, 0xd, 0x5d, 0x1a, 0x22, 0xdc, 0x32, 0xf7, 0x28, 0xf7, 0x48, 0xf1, + 0xf7, 0x13, 0xf7, 0x6, 0xee, 0x47, 0xb1, 0x6f, 0x9b, 0x1e, 0xac, 0x98, + 0xee, 0xa9, 0xf7, 0x0, 0x1a, 0xf0, 0x37, 0xde, 0xfb, 0x1e, 0xfb, 0x3e, + 0x41, 0xfb, 0xd, 0x38, 0x3b, 0xc6, 0x71, 0xa2, 0x7d, 0x1e, 0x81, 0xfb, + 0x67, 0x15, 0xcf, 0xb3, 0xdc, 0xdd, 0xbe, 0xaf, 0x55, 0x5b, 0x60, 0x72, + 0x30, 0x29, 0x62, 0x5e, 0xa4, 0xc9, 0x1e, 0xcf, 0xf7, 0xdf, 0x15, 0xc4, + 0xbd, 0xb3, 0xbf, 0xc1, 0xa7, 0x65, 0x64, 0x59, 0x5b, 0x5e, 0x53, 0x5b, + 0x6b, 0xab, 0xb6, 0x1e, 0xe, 0x3c, 0x78, 0xf7, 0x4, 0xfb, 0x4, 0xf7, + 0x4a, 0xc6, 0xe7, 0xf7, 0xb0, 0xf7, 0x4, 0x1, 0xf7, 0x9, 0xf7, 0x28, + 0xf7, 0x5e, 0xf7, 0x28, 0x3, 0xd9, 0xf7, 0x33, 0x15, 0xfb, 0xd, 0x9a, + 0xd2, 0x52, 0xf7, 0x7, 0x1b, 0xf7, 0x6c, 0xf7, 0xc, 0xf7, 0x90, 0xf7, + 0x81, 0xf7, 0x10, 0x3f, 0xf7, 0x8, 0xfb, 0x2b, 0xfb, 0x44, 0x2c, 0xfb, + 0x2f, 0xfb, 0x14, 0xfb, 0x11, 0xdd, 0x3b, 0xf7, 0x11, 0xb2, 0xab, 0x94, + 0x9f, 0xac, 0x1f, 0x5f, 0x7e, 0x67, 0xfb, 0x6, 0x32, 0x1b, 0x4d, 0x86, + 0xbd, 0xa4, 0x88, 0x1f, 0xb8, 0xf7, 0x97, 0x15, 0xf7, 0x0, 0xc2, 0xca, + 0xca, 0xd0, 0x9a, 0x3a, 0x5d, 0x33, 0x5f, 0x46, 0x3e, 0x67, 0x5e, 0xa4, + 0xe3, 0x1e, 0xe, 0x8b, 0xf7, 0x17, 0xf7, 0x8f, 0xf7, 0x16, 0x1, 0xf7, + 0x44, 0xf8, 0x12, 0x15, 0xf7, 0x26, 0x6, 0xa8, 0xf7, 0x16, 0x93, 0xa, + 0xfb, 0x5, 0xfc, 0x94, 0x15, 0xf7, 0x26, 0x6, 0xa8, 0xf7, 0x17, 0x93, + 0xa, 0xe, 0xfb, 0x27, 0x76, 0xf7, 0x47, 0x76, 0xf8, 0x19, 0xf7, 0x19, + 0x1, 0xc3, 0xf7, 0xbb, 0x3, 0xe5, 0x81, 0x15, 0xcf, 0x6, 0x7d, 0x4f, + 0x70, 0x75, 0x5c, 0x81, 0x7d, 0x49, 0x18, 0xf7, 0x2a, 0x8e, 0xa5, 0xf7, + 0xd, 0x97, 0xc5, 0xa5, 0xf7, 0x2, 0x18, 0x97, 0xa, 0xc2, 0xf7, 0x93, + 0x15, 0xf7, 0x27, 0x6, 0xa9, 0xf7, 0x19, 0x7b, 0xa, 0xe, 0x58, 0x98, + 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xdd, 0xf7, 0x58, 0x15, 0xf8, 0x8b, 0xfb, + 0x60, 0x5, 0xf7, 0x17, 0x7, 0xfb, 0xdd, 0xf7, 0x17, 0xf7, 0xdd, 0xf7, + 0x13, 0x5, 0xf7, 0x19, 0x7, 0xfc, 0x8b, 0xfb, 0x60, 0x5, 0xe, 0x58, + 0xe2, 0xf7, 0xb, 0xe9, 0xf7, 0xb, 0x1, 0xc5, 0xf8, 0xd3, 0x3, 0xc5, + 0xe2, 0x15, 0xf8, 0xd3, 0xf7, 0xb, 0xfc, 0xd3, 0x6, 0xe9, 0x4, 0xf8, + 0xd3, 0xf7, 0xb, 0xfc, 0xd3, 0x6, 0xe, 0x58, 0x98, 0x76, 0xf8, 0x9e, + 0x77, 0x1, 0xf5, 0x83, 0x15, 0xf8, 0x8b, 0xf7, 0x60, 0x5, 0xf7, 0x6, + 0x7, 0xfc, 0x8b, 0xf7, 0x60, 0x98, 0xa, 0x7, 0xf7, 0xdc, 0xfb, 0x17, + 0xfb, 0xdc, 0xfb, 0x13, 0x5, 0xe, 0x73, 0x8b, 0xf7, 0x1b, 0xf8, 0x7d, + 0xf2, 0x1, 0xf7, 0x98, 0xf7, 0x47, 0x15, 0xf7, 0x15, 0x6, 0x96, 0xca, + 0x9f, 0x9b, 0xdd, 0xce, 0x8, 0xf7, 0xa, 0xea, 0xbe, 0xbc, 0xda, 0x1a, + 0xdf, 0x45, 0xea, 0xfb, 0x35, 0xfb, 0x50, 0x46, 0xfb, 0x1b, 0x45, 0x79, + 0x1e, 0xf7, 0x17, 0x74, 0x5, 0xf7, 0x9, 0xa6, 0xd3, 0x93, 0xb6, 0x1b, + 0xd8, 0xa1, 0x5f, 0x6b, 0x66, 0x75, 0x79, 0x35, 0x42, 0x1f, 0xfb, 0x4, + 0x2d, 0x61, 0x5b, 0x7c, 0x28, 0x8, 0x5f, 0xfb, 0x47, 0x15, 0xf7, 0x21, + 0x6, 0xa9, 0xf7, 0x1b, 0x92, 0xa, 0xe, 0xf8, 0x49, 0x4d, 0xda, 0xf7, + 0x0, 0xda, 0xf7, 0xca, 0xda, 0xed, 0xda, 0x1, 0xf7, 0x61, 0xdb, 0xe0, + 0xf7, 0x5, 0xf8, 0x64, 0xdb, 0x3, 0xf9, 0x25, 0xf7, 0x42, 0x15, 0x79, + 0x8f, 0x94, 0x6c, 0xce, 0x1b, 0xf7, 0x46, 0xf7, 0x4, 0xf7, 0x37, 0xf7, + 0x28, 0xf7, 0x4c, 0xfb, 0x1b, 0xf7, 0x2a, 0xfb, 0x83, 0xfb, 0xd4, 0xfb, + 0x14, 0xfb, 0x87, 0xfb, 0x5b, 0xfb, 0xa5, 0xf7, 0x7f, 0xfb, 0x9, 0xf7, + 0x6c, 0xf7, 0x1d, 0xf7, 0x47, 0xb4, 0xf7, 0x2e, 0xd8, 0x1f, 0x2f, 0x6, + 0x68, 0x6d, 0x46, 0x3a, 0xfb, 0x5e, 0x1b, 0xfb, 0xb5, 0x39, 0xf7, 0x41, + 0xf7, 0x1e, 0xf7, 0xf, 0xca, 0xf7, 0x84, 0xf7, 0xc4, 0xf7, 0x7a, 0xcc, + 0xfb, 0x2b, 0x28, 0xfb, 0x1d, 0xfb, 0x3, 0x30, 0x61, 0x73, 0x91, 0xa9, + 0xa8, 0x92, 0x1f, 0xcc, 0xf7, 0xcb, 0x5, 0xfb, 0x6, 0x6, 0x80, 0x5b, + 0x5, 0xc0, 0x67, 0x56, 0x90, 0x6f, 0x1b, 0xfb, 0x30, 0x3b, 0xfb, 0x39, + 0xfb, 0xd, 0x28, 0xc8, 0x38, 0xf5, 0xd0, 0xb3, 0xb1, 0x96, 0x96, 0x1f, + 0xfb, 0x42, 0xf7, 0x19, 0x15, 0xc8, 0xab, 0xf7, 0x26, 0xf0, 0xd2, 0x95, + 0x42, 0x70, 0x51, 0x6a, 0xfb, 0x2c, 0x24, 0x4f, 0x79, 0xbf, 0xbe, 0x1e, + 0xe, 0x68, 0xa, 0xf7, 0x33, 0xf7, 0xc, 0xf8, 0x4b, 0x77, 0x1, 0x9f, + 0x16, 0x5e, 0xa, 0xe1, 0xf7, 0x33, 0x5, 0xf7, 0xaf, 0x6, 0xa3, 0xfb, + 0x33, 0x5, 0xf7, 0x1f, 0x6, 0xfb, 0x8, 0xf9, 0x62, 0x43, 0xa, 0x27, + 0xfc, 0x4b, 0x15, 0xf7, 0x30, 0xf7, 0xb5, 0x5c, 0xa, 0xb3, 0xfb, 0xb5, + 0x5, 0xe, 0xe2, 0x8b, 0xf7, 0xc, 0xf7, 0x50, 0xf7, 0xc, 0xf7, 0x3e, + 0x8b, 0xa, 0xf7, 0xef, 0x6, 0xf7, 0x27, 0xf7, 0x42, 0xb5, 0xf7, 0x4c, + 0xc0, 0x6c, 0xd1, 0x32, 0xa3, 0x1f, 0x8d, 0x7, 0xa9, 0x93, 0xf7, 0x2, + 0x9c, 0xf7, 0x12, 0x1a, 0xf7, 0x23, 0x24, 0xbc, 0xfb, 0x47, 0x1e, 0xfb, + 0x90, 0x6, 0xa2, 0xfc, 0xea, 0x15, 0xb3, 0xf7, 0x50, 0x5, 0xf7, 0x48, + 0x6, 0xa2, 0xe9, 0x8b, 0x39, 0x25, 0x24, 0x87, 0x32, 0x1f, 0x3c, 0xf7, + 0xc8, 0x15, 0xaf, 0xf7, 0x3e, 0x5, 0xf7, 0x9, 0x6, 0xd5, 0xcf, 0x8b, + 0x43, 0x2d, 0x2b, 0x87, 0x37, 0x1f, 0xe, 0xe2, 0x78, 0xf7, 0x12, 0xf8, + 0x8c, 0xf7, 0x12, 0x1, 0xf6, 0xf7, 0x2c, 0x3, 0xf8, 0xe6, 0xf7, 0x95, + 0x15, 0xfb, 0xb, 0x64, 0x34, 0x6c, 0x51, 0x1b, 0x27, 0x58, 0xe3, 0xef, + 0xf7, 0xa, 0x80, 0xa, 0x69, 0x92, 0x1f, 0xf7, 0x28, 0x99, 0x5, 0xf7, + 0x3d, 0x77, 0xfb, 0x16, 0xcd, 0xfb, 0x1c, 0x1b, 0xfb, 0x7f, 0xfb, 0x35, + 0xfb, 0x54, 0xfb, 0x8e, 0xfb, 0x31, 0xce, 0xfb, 0x31, 0xf7, 0x75, 0xf7, + 0x62, 0xf0, 0xf7, 0x1b, 0xf7, 0x9, 0xb6, 0x1f, 0xe, 0x57, 0xa, 0xd7, + 0x16, 0xf7, 0x98, 0x6, 0xf7, 0x7c, 0xf7, 0x65, 0xf7, 0x24, 0xf7, 0xa7, + 0xf7, 0x71, 0xfb, 0x3, 0xd9, 0xfb, 0x81, 0x1f, 0xfb, 0x58, 0x6, 0xa0, + 0xfc, 0xec, 0x15, 0xf3, 0xf8, 0x76, 0x5, 0xe1, 0x6, 0xd8, 0xf4, 0x86, + 0xfb, 0x44, 0xfb, 0x8a, 0xfb, 0x38, 0x54, 0xfb, 0x17, 0x1f, 0xe, 0xab, + 0x8b, 0xf7, 0xc, 0xf7, 0x56, 0xf7, 0xc, 0xf7, 0x38, 0x8b, 0xa, 0xf8, + 0xc4, 0x6, 0xa5, 0x83, 0xa, 0xfc, 0x31, 0x6, 0xb3, 0xf7, 0x56, 0x5, + 0xf7, 0xfe, 0x40, 0xa, 0xfb, 0xfe, 0x6, 0xad, 0xf7, 0x38, 0x5, 0xf8, + 0x14, 0x40, 0xa, 0xfc, 0xa7, 0x6, 0xe, 0x84, 0xa, 0xf7, 0xc5, 0xf7, + 0xc, 0xf7, 0x41, 0x8b, 0xa, 0x5e, 0xa, 0xcc, 0xf7, 0xc5, 0x5, 0xf7, + 0xeb, 0x40, 0xa, 0xfb, 0xea, 0x6, 0xaf, 0xf7, 0x41, 0x5, 0xf7, 0xfe, + 0x40, 0xa, 0xfc, 0x93, 0x6, 0xe, 0x8c, 0xa, 0xf7, 0x2e, 0xf7, 0xf, + 0xf7, 0x77, 0xf7, 0x12, 0x1, 0xf7, 0x0, 0xf7, 0x25, 0x3, 0xf8, 0x4c, + 0xf7, 0x99, 0x15, 0xf7, 0x4e, 0x6, 0x74, 0xfb, 0x0, 0x5, 0x81, 0x78, + 0x3d, 0x67, 0x32, 0x1b, 0x4d, 0x25, 0x98, 0xf7, 0x3b, 0xf7, 0x28, 0xd1, + 0xf7, 0x44, 0xf7, 0x55, 0xd3, 0xc9, 0x6d, 0x2f, 0xa7, 0x1f, 0xf7, 0x1f, + 0x9a, 0x5, 0xf7, 0x3a, 0x71, 0xfb, 0x15, 0xce, 0xfb, 0x28, 0x1b, 0xfb, + 0xb2, 0xfb, 0xc, 0xfb, 0x97, 0xfb, 0x55, 0xfb, 0x49, 0xee, 0xfb, 0xf, + 0xf7, 0x63, 0xf7, 0x26, 0xf7, 0x9, 0xc4, 0xab, 0xbb, 0x1f, 0xcd, 0xf7, + 0xce, 0x5, 0xfb, 0xda, 0x6, 0xe, 0x68, 0xa, 0xf7, 0xd4, 0xf7, 0xd, + 0xf7, 0xa9, 0x77, 0x1, 0xd2, 0x16, 0x5e, 0xa, 0xcf, 0xf7, 0xd4, 0x5, + 0xf7, 0xad, 0x6, 0x47, 0xfb, 0xd4, 0x5, 0x5e, 0xa, 0xf7, 0x2c, 0xf9, + 0x62, 0x53, 0xa, 0x50, 0xfb, 0xa9, 0x5, 0xfb, 0xad, 0x6, 0xc5, 0xf7, + 0xa9, 0x5a, 0xa, 0xe, 0xfb, 0xf9, 0x37, 0xa, 0xcb, 0x16, 0x5e, 0xa, + 0xf7, 0x2d, 0xf9, 0x62, 0x5, 0x97, 0xa, 0xe, 0x3c, 0x79, 0xf7, 0x11, + 0xf8, 0xf7, 0x77, 0x1, 0xc7, 0xf7, 0x5b, 0x15, 0xfb, 0x20, 0xbb, 0x3e, + 0xf7, 0x32, 0xf7, 0x5b, 0xb7, 0xf7, 0xd, 0xf7, 0x45, 0xb0, 0x1e, 0xe6, + 0xf8, 0x4a, 0x7b, 0xa, 0x30, 0xfc, 0x4a, 0x85, 0xa, 0x6f, 0x6a, 0x66, + 0x4c, 0x1b, 0x2f, 0x98, 0xcf, 0xb1, 0x8d, 0x1f, 0xe, 0xe2, 0x37, 0xa, + 0xe2, 0x16, 0x5e, 0xa, 0xb9, 0xf7, 0x70, 0xf7, 0x20, 0xf7, 0xe, 0xf7, + 0x48, 0xfb, 0xea, 0x5, 0xf7, 0x3d, 0x6, 0xfb, 0x83, 0xf8, 0x49, 0xf7, + 0xd9, 0xf7, 0xad, 0x5, 0xfb, 0x5c, 0x6, 0xfb, 0xe1, 0xfb, 0xc4, 0x89, + 0x8d, 0xcb, 0xf7, 0xc2, 0x53, 0xa, 0xe, 0x87, 0xa, 0xd7, 0x16, 0xf8, + 0x92, 0x50, 0xa, 0xfb, 0xff, 0x6, 0xf7, 0x10, 0xf8, 0xe9, 0x7b, 0xa, + 0xe, 0xf7, 0x5a, 0x37, 0xa, 0xf7, 0xe1, 0xf7, 0x3, 0x3, 0xd0, 0x16, + 0x82, 0xa, 0xf7, 0x6, 0xf8, 0xec, 0x5c, 0xa, 0xa6, 0xfc, 0xec, 0x5, + 0xf7, 0x20, 0x6, 0xf7, 0xb0, 0xf8, 0xe7, 0x8d, 0x89, 0xfb, 0x23, 0xfc, + 0xe5, 0x5, 0xf7, 0x1c, 0x6, 0xf7, 0x2c, 0xf9, 0x62, 0x5, 0xfb, 0x6b, + 0x6, 0xfb, 0x8a, 0xfc, 0x8b, 0x51, 0xa, 0x76, 0xf8, 0x8b, 0x5, 0xfb, + 0x69, 0x6, 0xe, 0xe2, 0x37, 0xa, 0xd0, 0xf9, 0x76, 0x3, 0x8a, 0xa, + 0xf2, 0xf8, 0x77, 0x5c, 0xa, 0xf7, 0x59, 0xfc, 0x77, 0x5, 0x9b, 0xa, + 0xf7, 0x2d, 0xf9, 0x62, 0x3d, 0xa, 0x25, 0xfc, 0x74, 0x51, 0xa, 0xfb, + 0x5a, 0xf8, 0x74, 0x65, 0xa, 0x8c, 0xa, 0xf8, 0x8c, 0xf7, 0x12, 0x1, + 0xf7, 0x17, 0xf7, 0x2a, 0xf8, 0xf, 0xf7, 0x2a, 0x3, 0xf6, 0xf7, 0xb1, + 0x15, 0xfb, 0x22, 0xe3, 0xfb, 0x36, 0xf7, 0x69, 0xf7, 0xb1, 0xf7, 0x16, + 0xf7, 0x93, 0xf7, 0x55, 0xf7, 0x48, 0xfb, 0x6, 0xf7, 0x14, 0xfb, 0x53, + 0xfb, 0xc9, 0x25, 0xfb, 0xaf, 0xfb, 0x3d, 0x1e, 0xf7, 0x2a, 0x16, 0xf7, + 0x37, 0xf0, 0xf7, 0x37, 0xf7, 0x29, 0xf7, 0x3, 0xc2, 0x33, 0x2b, 0xfb, + 0x9, 0x3b, 0xfb, 0x5f, 0xfb, 0x3c, 0x2a, 0x44, 0xd5, 0xf3, 0x1e, 0xe, + 0xab, 0xa0, 0x76, 0xf7, 0xa6, 0xf7, 0xc, 0xf7, 0x60, 0x8b, 0xa, 0xf7, + 0x27, 0x6, 0xc4, 0xf7, 0xa6, 0x5, 0xea, 0x6, 0xf7, 0x51, 0xf7, 0x42, + 0xba, 0xf7, 0x60, 0xf7, 0x49, 0xfb, 0x3c, 0x97, 0x57, 0x1f, 0xfb, 0xb9, + 0x6, 0xdb, 0xfb, 0xd8, 0x15, 0xb6, 0xf7, 0x60, 0x5, 0xf6, 0x6, 0xd6, + 0xc9, 0x8d, 0x40, 0xfb, 0xb, 0xfb, 0x19, 0x7f, 0xfb, 0x1, 0x1f, 0xe, + 0xf7, 0x23, 0x6c, 0x76, 0xdb, 0xf7, 0xa, 0xf8, 0x6d, 0xf7, 0xa, 0x36, + 0xa, 0xf8, 0xc4, 0xc0, 0x15, 0xa4, 0x6b, 0xb3, 0x5e, 0xca, 0x6f, 0xd3, + 0xe3, 0x18, 0x67, 0x9e, 0x67, 0xa5, 0x6d, 0xa6, 0x8, 0xf7, 0x4, 0xe1, + 0xc0, 0xf7, 0x1b, 0xf7, 0xb, 0x1a, 0xf7, 0x3f, 0xfb, 0x7, 0xf7, 0xa, + 0xfb, 0x50, 0xfb, 0xd0, 0x2a, 0xfb, 0xa8, 0xfb, 0x29, 0xfb, 0x1f, 0xe6, + 0xfb, 0x25, 0xf7, 0x66, 0xc1, 0xba, 0x92, 0x9d, 0xbe, 0x1e, 0xfb, 0x35, + 0xf7, 0x35, 0x15, 0xb8, 0x7b, 0xb0, 0x67, 0x85, 0x1a, 0x81, 0x5a, 0x8b, + 0x86, 0x32, 0x3a, 0xbd, 0xf7, 0x8, 0xf7, 0x15, 0xe6, 0xf7, 0x46, 0xf7, + 0x33, 0xf7, 0x2, 0xc3, 0x3d, 0x2e, 0x5a, 0x75, 0xfb, 0x9, 0x3c, 0x3f, + 0x1e, 0x62, 0xb8, 0x65, 0xa3, 0x65, 0x9d, 0x8, 0xe, 0x68, 0xa, 0xf7, + 0xbb, 0xf7, 0x4, 0xf7, 0x53, 0x96, 0xa, 0xf9, 0x25, 0xf7, 0x27, 0x3, + 0xd7, 0x16, 0xf7, 0x29, 0x6, 0xca, 0xf7, 0xbb, 0x5, 0xc7, 0x6, 0xb7, + 0xa8, 0x8b, 0x5d, 0xab, 0x1f, 0xb5, 0x50, 0xce, 0xfb, 0x50, 0x89, 0x1a, + 0xf7, 0x34, 0x6, 0x60, 0xf7, 0x1, 0x51, 0xf7, 0x1f, 0x4b, 0xc4, 0x8, + 0xf7, 0x0, 0x9a, 0xf7, 0x5, 0xbe, 0xf7, 0x32, 0x1a, 0xf7, 0x51, 0xfb, + 0x36, 0x8b, 0x47, 0x1e, 0xfb, 0xd5, 0x6, 0xde, 0xfb, 0xcb, 0x15, 0xb3, + 0xf7, 0x53, 0x5, 0xf7, 0x38, 0x6, 0xbc, 0xcf, 0x8b, 0x44, 0xfb, 0x4, + 0xfb, 0x1c, 0x83, 0x21, 0x1f, 0xe, 0xab, 0x78, 0xf7, 0x12, 0xf8, 0x92, + 0x96, 0xa, 0xdc, 0xf7, 0x7a, 0x15, 0xfb, 0x53, 0xf7, 0x28, 0x51, 0xf7, + 0x24, 0xf7, 0x67, 0xdf, 0xf7, 0x0, 0xf7, 0x0, 0xf7, 0x10, 0x34, 0xc3, + 0xfb, 0x14, 0xc2, 0x1e, 0x35, 0xae, 0x59, 0x8e, 0xbf, 0x1a, 0xd8, 0xe7, + 0x9d, 0xa5, 0xd1, 0xcd, 0x70, 0x3a, 0x1e, 0xf7, 0x27, 0x92, 0x5, 0xf7, + 0x2d, 0xfb, 0x1f, 0xcf, 0xfb, 0x23, 0xfb, 0x65, 0x53, 0xfb, 0x13, 0x33, + 0xfb, 0x12, 0xe5, 0x64, 0xf7, 0x15, 0x54, 0x1e, 0xdc, 0x68, 0xb8, 0x79, + 0x57, 0x1a, 0x3e, 0x32, 0x7e, 0x57, 0xfb, 0x23, 0x88, 0xce, 0xca, 0x89, + 0x1e, 0xe, 0x84, 0xa, 0xf8, 0xe9, 0xf7, 0xd, 0x1, 0xf7, 0x77, 0x16, + 0xf7, 0x2d, 0x6, 0xf7, 0x15, 0xf8, 0xe9, 0x5, 0xf7, 0x6c, 0x6, 0xa5, + 0xf7, 0xd, 0x5, 0xfc, 0xdd, 0x6, 0x71, 0xfb, 0xd, 0x5, 0xf7, 0x6c, + 0x6, 0xe, 0xe2, 0x78, 0xf7, 0x11, 0xf8, 0xf8, 0x77, 0x1, 0xf7, 0x8, + 0xf7, 0x2b, 0x3, 0xf7, 0x66, 0xf9, 0x62, 0x15, 0x39, 0xfc, 0x20, 0x5, + 0x84, 0x67, 0x86, 0x67, 0x65, 0x1a, 0xfb, 0xd, 0x8c, 0xc1, 0xfb, 0x2, + 0xf7, 0x5f, 0x1b, 0xf7, 0xa5, 0xb6, 0xf7, 0x60, 0xf7, 0x1d, 0xa8, 0x1f, + 0xe0, 0xf8, 0x20, 0x5, 0xfb, 0x2c, 0x6, 0x36, 0xfc, 0x20, 0x5, 0xfb, + 0x11, 0x71, 0x49, 0x30, 0x2d, 0x1b, 0x36, 0x6e, 0xba, 0xc8, 0xb0, 0x8f, + 0xb1, 0x92, 0xac, 0x1f, 0xdf, 0xf8, 0x20, 0x5, 0xe, 0xab, 0x37, 0xa, + 0xf7, 0xb6, 0x16, 0xf7, 0x26, 0x6, 0xf8, 0x1, 0xf9, 0x62, 0x91, 0xa, + 0xfb, 0xa6, 0xfc, 0xb3, 0x51, 0xa, 0x39, 0xf8, 0xb3, 0x5b, 0xa, 0xe, + 0xf7, 0xc9, 0x37, 0xa, 0xf7, 0x4a, 0xf7, 0x14, 0xf7, 0xb5, 0xf7, 0x3, + 0x3, 0xf7, 0x57, 0x16, 0xf7, 0x26, 0x6, 0xf7, 0x8d, 0xf8, 0xa0, 0x5c, + 0xa, 0x9a, 0xfc, 0xa0, 0x8d, 0xa, 0xf7, 0xe0, 0xf9, 0x62, 0x5, 0xfb, + 0x1d, 0x6, 0xfb, 0x75, 0xfc, 0x85, 0x51, 0xa, 0x7c, 0xf8, 0x85, 0x5, + 0xfb, 0x2e, 0x6, 0xfb, 0x7e, 0xfc, 0x8a, 0x51, 0xa, 0x85, 0xf8, 0x8a, + 0x81, 0xa, 0xab, 0x37, 0xa, 0x99, 0x16, 0xf7, 0x49, 0x6, 0xf7, 0x50, + 0xf7, 0x7b, 0xf3, 0xfb, 0x7b, 0x5, 0xf7, 0x33, 0x6, 0xfb, 0x3b, 0xf7, + 0xe8, 0xf7, 0xcc, 0xf8, 0xe, 0x5, 0xfb, 0x45, 0x6, 0xfb, 0x5f, 0xfb, + 0x8b, 0xfb, 0xa, 0xf7, 0x8b, 0x7b, 0xa, 0xf7, 0x3e, 0xfb, 0xf6, 0x5, + 0xe, 0xab, 0x37, 0xa, 0xf7, 0x3c, 0xf9, 0x12, 0x3, 0x64, 0xa, 0xf7, + 0x9e, 0xf7, 0xcc, 0xf8, 0x58, 0x43, 0xa, 0xfb, 0x5d, 0xfb, 0xc7, 0xfb, + 0x10, 0xf7, 0xc7, 0x5a, 0xa, 0xf7, 0x51, 0xfc, 0x4a, 0x5, 0xe, 0x84, + 0xa, 0xf8, 0xe9, 0xf7, 0xd, 0x1, 0xa4, 0x16, 0xf8, 0xfb, 0x6, 0xa6, + 0xf7, 0x9, 0x5, 0x8a, 0xfc, 0x33, 0x8c, 0x8b, 0x1e, 0xf8, 0x62, 0xf8, + 0x7d, 0xa2, 0xf7, 0x4, 0x5, 0xfc, 0xcf, 0x6, 0x6f, 0xfb, 0xd, 0x5, + 0xf8, 0x5, 0x6, 0xfc, 0x5b, 0xfc, 0x78, 0x5, 0xe, 0x7f, 0xa, 0xf7, + 0x48, 0x35, 0x15, 0xf7, 0x29, 0xf9, 0x4e, 0x5, 0xf7, 0x1, 0x6, 0xa3, + 0xf7, 0x2, 0x5, 0xfb, 0x89, 0x6, 0xfb, 0x58, 0xfe, 0x2a, 0x5, 0xf7, + 0x89, 0x6, 0xa3, 0xf7, 0x2, 0x5, 0xe, 0xfb, 0xf9, 0x78, 0xa, 0xf7, + 0x10, 0xf7, 0x87, 0x3, 0xf7, 0x85, 0x78, 0x15, 0xf7, 0x12, 0x6, 0xfb, + 0x7, 0xf9, 0x88, 0x5, 0xfb, 0x14, 0x6, 0xe, 0x7f, 0xa, 0x91, 0x35, + 0x15, 0x73, 0xfb, 0x2, 0x5, 0xf7, 0x89, 0x6, 0xf7, 0x58, 0xfa, 0x2a, + 0x5, 0xfb, 0x89, 0x6, 0x73, 0xfb, 0x2, 0x5, 0xf7, 0x2, 0x6, 0xfb, + 0x29, 0xfd, 0x4e, 0x5, 0xe, 0x58, 0xf7, 0xec, 0x76, 0xf8, 0xb, 0x77, + 0x1, 0xf7, 0x17, 0xf7, 0xd7, 0x15, 0xf7, 0x1c, 0x6, 0xe9, 0xf7, 0x79, + 0xea, 0xfb, 0x79, 0x5, 0x82, 0xa, 0xfb, 0x42, 0xf8, 0xb, 0x5, 0x20, + 0x6, 0xe, 0x3c, 0xfb, 0x11, 0xbd, 0x1, 0x70, 0x40, 0x15, 0x59, 0xf8, + 0xcb, 0xbd, 0x7, 0xe, 0x72, 0xa, 0xf7, 0x8c, 0xf8, 0xf0, 0x15, 0xf4, + 0x6, 0x47, 0xf7, 0x26, 0x53, 0xa, 0xe, 0x42, 0xa, 0xf7, 0xf1, 0xf2, + 0x76, 0xa, 0xf8, 0x1a, 0x89, 0x2f, 0xa, 0x13, 0xb0, 0x99, 0xa, 0xaa, + 0xb2, 0x1a, 0xab, 0x7c, 0xf7, 0x3, 0x33, 0xa, 0x80, 0x5, 0xb8, 0x98, + 0xb1, 0x9b, 0xb8, 0x1b, 0xce, 0xa8, 0x5a, 0x55, 0x70, 0x1f, 0x6c, 0x80, + 0x54, 0x86, 0x50, 0x86, 0x8, 0x42, 0x86, 0xfb, 0x2f, 0x81, 0xfb, 0x34, + 0x1a, 0x28, 0xd6, 0x50, 0xe1, 0x1e, 0x30, 0xa, 0x99, 0xf7, 0x8a, 0x15, + 0x60, 0x81, 0x77, 0x20, 0x20, 0x1b, 0x5a, 0x77, 0xa1, 0xa7, 0xca, 0xdc, + 0xa2, 0xe7, 0x97, 0x1f, 0xe, 0x73, 0x7d, 0xf6, 0x41, 0x76, 0xf8, 0x45, + 0xf0, 0xf7, 0x4e, 0x77, 0x12, 0xf7, 0x67, 0xf7, 0x18, 0xf7, 0x36, 0xf7, + 0x20, 0x13, 0x7c, 0xc8, 0x89, 0x15, 0xf7, 0x18, 0x6, 0x9d, 0xe1, 0x5c, + 0xa, 0x13, 0xb4, 0x73, 0x96, 0xb4, 0x41, 0xf7, 0x7, 0x1b, 0xf7, 0x25, + 0xf7, 0xc, 0xf7, 0x23, 0xf7, 0x4f, 0xf7, 0x5, 0x57, 0xf2, 0xfb, 0x1b, + 0x42, 0x5f, 0x6c, 0x73, 0x6b, 0x1f, 0xbe, 0xf7, 0x85, 0x44, 0xa, 0x13, + 0x74, 0xb3, 0xfc, 0x90, 0x15, 0xf7, 0x3, 0xc4, 0xf7, 0x2, 0xe6, 0xc1, + 0xba, 0x60, 0x3f, 0x1e, 0x13, 0xb4, 0x38, 0x5e, 0xfb, 0x1c, 0x25, 0x4c, + 0x64, 0xc5, 0xc6, 0x1e, 0xe, 0x3c, 0x7d, 0xf7, 0x5, 0xf7, 0xe8, 0xf6, + 0x1, 0xda, 0xf7, 0x23, 0x3, 0xf8, 0x38, 0xf7, 0x5b, 0x15, 0x36, 0x6d, + 0x4f, 0x7c, 0x70, 0x1b, 0x63, 0x62, 0xb2, 0xd0, 0xe0, 0xb3, 0xf7, 0x27, + 0xf7, 0x5, 0xd7, 0x93, 0x48, 0x77, 0x8d, 0x1f, 0xf7, 0x1e, 0x9a, 0x5, + 0xe3, 0x83, 0x4d, 0xe6, 0xfb, 0x25, 0x1b, 0xfb, 0x4b, 0xfb, 0xe, 0xfb, + 0x2f, 0xfb, 0x4c, 0xfb, 0x4, 0xc6, 0xfb, 0x1, 0xf7, 0x36, 0xf7, 0x16, + 0xe3, 0xd6, 0xf7, 0x8, 0xb6, 0x1f, 0xe, 0x73, 0x7d, 0xf6, 0x2c, 0xea, + 0xf7, 0xde, 0xf7, 0x1, 0xf7, 0x4e, 0x77, 0x12, 0x13, 0x70, 0xf8, 0x38, + 0x89, 0x15, 0xf7, 0x17, 0x6, 0xf7, 0x2d, 0xf9, 0x64, 0x47, 0xa, 0x52, + 0xfb, 0xa1, 0x5, 0x9e, 0x7e, 0x62, 0xcb, 0x20, 0x1b, 0xfb, 0x32, 0x24, + 0xfb, 0x34, 0xfb, 0x3c, 0x1f, 0x13, 0xb0, 0xfb, 0x20, 0xd1, 0x3d, 0xf7, + 0x6, 0xe1, 0xbe, 0xb3, 0xa7, 0xa6, 0x1e, 0x8d, 0x89, 0x5, 0x13, 0x70, + 0xfb, 0x67, 0xf7, 0x2c, 0x15, 0xe7, 0xbe, 0xf7, 0x13, 0xe7, 0xc8, 0xb4, + 0x54, 0x49, 0x3f, 0x62, 0xfb, 0x19, 0x22, 0x4b, 0x68, 0xba, 0xcb, 0x1e, + 0xe, 0x3c, 0xf7, 0x71, 0xe3, 0xf7, 0x1a, 0xf2, 0x7d, 0xa, 0xf7, 0x68, + 0xf7, 0x71, 0x15, 0xf8, 0x8, 0x6, 0x93, 0xae, 0x8c, 0xb8, 0x99, 0x1a, + 0xf0, 0x5e, 0xf7, 0x16, 0xfb, 0x41, 0xfb, 0x6d, 0x33, 0xfb, 0x53, 0xfb, + 0x1a, 0xfb, 0x24, 0xeb, 0x30, 0xf7, 0x2c, 0xd7, 0xf7, 0x0, 0xa6, 0xf7, + 0x15, 0xcc, 0x1e, 0xfb, 0x19, 0xa0, 0x5, 0x7b, 0x82, 0x6b, 0x51, 0x41, + 0x1b, 0x4e, 0x59, 0xbc, 0xde, 0x8f, 0x1f, 0x9a, 0xe3, 0x15, 0xbd, 0x96, + 0xaf, 0xdf, 0xe0, 0x1b, 0xd8, 0xa5, 0x4c, 0x44, 0x88, 0x1f, 0xe, 0xa0, + 0x76, 0xf8, 0x33, 0xf1, 0xf7, 0x66, 0x77, 0x1, 0xe2, 0x16, 0xf7, 0x15, + 0x6, 0xda, 0xf8, 0x33, 0x5, 0xe6, 0x6, 0x9f, 0xf1, 0x5, 0x30, 0x6, + 0xda, 0x99, 0x91, 0xa4, 0xae, 0x1b, 0x98, 0xa6, 0x86, 0x7e, 0xad, 0x1f, + 0xa4, 0xf0, 0x5, 0x9c, 0x5a, 0x5e, 0x91, 0x6d, 0x1b, 0xfb, 0xa, 0x80, + 0x28, 0xfb, 0x3, 0x6d, 0x1f, 0x44, 0x6, 0x76, 0x25, 0x5, 0xd4, 0x6, + 0xe, 0x73, 0xfb, 0x6d, 0xf2, 0xf7, 0x3, 0xf6, 0xf7, 0xe7, 0xf2, 0x7e, + 0x77, 0x12, 0x13, 0xd0, 0xb1, 0x6e, 0x15, 0xfb, 0x46, 0xf7, 0x40, 0x81, + 0xca, 0xf7, 0x7b, 0xa3, 0xf6, 0xf7, 0x5a, 0xb5, 0x1e, 0xeb, 0xf8, 0x51, + 0x3d, 0xa, 0x78, 0x2d, 0x51, 0xa, 0x13, 0xe0, 0xd3, 0x68, 0x48, 0xae, + 0x46, 0x1b, 0xfb, 0x1d, 0xfb, 0x14, 0x20, 0xfb, 0x65, 0xfb, 0x3d, 0xf2, + 0x4b, 0xdd, 0xde, 0xc2, 0xb7, 0x9e, 0x9f, 0x1f, 0x8d, 0x89, 0x5, 0xfb, + 0x8, 0x74, 0x80, 0x53, 0x24, 0x1b, 0x44, 0x80, 0xae, 0xa7, 0x8d, 0x1f, + 0x9d, 0xf7, 0xac, 0x15, 0xc5, 0xb3, 0xf7, 0x30, 0xf4, 0xcb, 0xb4, 0x4d, + 0x4a, 0x2b, 0x53, 0xfb, 0x8, 0x2c, 0x51, 0x62, 0xb9, 0xda, 0x1e, 0xe, + 0x84, 0xa, 0xf8, 0x44, 0xef, 0xf7, 0x4e, 0x77, 0x1, 0xf8, 0x76, 0xf7, + 0x27, 0x3, 0xcc, 0x16, 0x7c, 0xa, 0xb7, 0xf7, 0x62, 0x5, 0xf4, 0xa2, + 0xb2, 0xf7, 0xd, 0xf6, 0x1b, 0xba, 0x98, 0x6f, 0x69, 0x76, 0x87, 0x74, + 0x86, 0x75, 0x1f, 0x49, 0xfb, 0xc4, 0x5, 0x7c, 0xa, 0xcc, 0xf7, 0xc4, + 0x5, 0x91, 0xa7, 0x92, 0xaf, 0xae, 0x1a, 0xcd, 0x6f, 0xca, 0xfb, 0x3, + 0x30, 0x51, 0x5d, 0x73, 0x6b, 0x1e, 0xc1, 0xf7, 0x94, 0x44, 0xa, 0xe, + 0x48, 0xa, 0xf8, 0xa1, 0x77, 0xe7, 0xf7, 0x14, 0x1, 0xd0, 0x16, 0x9b, + 0xa, 0xf7, 0x1, 0xf8, 0xa1, 0x92, 0xa, 0x9b, 0xd3, 0x15, 0x9b, 0xa, + 0xa6, 0xf7, 0x14, 0x92, 0xa, 0xe, 0xfb, 0xf9, 0xfb, 0x55, 0x76, 0x1, + 0x75, 0x3a, 0x15, 0x77, 0xfb, 0xa, 0x5, 0x7c, 0xb6, 0xb8, 0x8b, 0x94, + 0x1b, 0xf7, 0xe, 0xb1, 0xf7, 0x31, 0xf7, 0x1d, 0xa5, 0x1f, 0xdf, 0xf8, + 0x51, 0x5, 0xfb, 0x16, 0x6, 0x3a, 0xfc, 0x51, 0x5, 0xfb, 0x30, 0x6c, + 0x7e, 0x7e, 0x63, 0x1b, 0x80, 0x7a, 0x8c, 0x92, 0x73, 0x1f, 0xf7, 0x7b, + 0xf9, 0x3a, 0x15, 0xf7, 0x16, 0x6, 0xa3, 0xf7, 0x14, 0x5, 0xfb, 0x16, + 0x6, 0xe, 0x3c, 0x37, 0xa, 0xd0, 0x16, 0xf7, 0x26, 0x6, 0xae, 0xf7, + 0x31, 0xed, 0xdf, 0xd6, 0xfb, 0x85, 0x5, 0xf7, 0x26, 0x6, 0xfb, 0x8, + 0xf7, 0xdf, 0xf7, 0x6d, 0xf7, 0x51, 0x5, 0xfb, 0x52, 0x6, 0xfb, 0x50, + 0xfb, 0x44, 0x89, 0x8d, 0xdd, 0xf8, 0x8, 0x93, 0xa, 0xe, 0xfb, 0xf9, + 0x37, 0xa, 0x8a, 0xa, 0xf7, 0x2c, 0xf9, 0x62, 0x65, 0xa, 0xf7, 0x92, + 0xa0, 0x76, 0xf8, 0x4f, 0xf2, 0x1, 0xcb, 0x16, 0xf7, 0x23, 0x6, 0xbe, + 0xf7, 0x89, 0x5, 0xdf, 0x9d, 0xa1, 0xf7, 0x6, 0xf2, 0x1b, 0xb5, 0x96, + 0x75, 0x6e, 0x78, 0x87, 0x75, 0x87, 0x77, 0x1f, 0x45, 0xfb, 0xdf, 0x5, + 0x7c, 0xa, 0xbe, 0xf7, 0x86, 0x5, 0xd2, 0x98, 0xaf, 0xf7, 0x16, 0xed, + 0x1b, 0xae, 0x94, 0x68, 0x68, 0x7a, 0x89, 0x7a, 0x88, 0x7e, 0x1f, 0x47, + 0xfb, 0xda, 0x8d, 0xa, 0xd0, 0xf7, 0xda, 0x5, 0x8f, 0xa5, 0x8f, 0xa6, + 0xa5, 0x1a, 0xd5, 0x72, 0xce, 0x23, 0x3a, 0x44, 0x5e, 0x59, 0x6a, 0x1e, + 0xe1, 0x7b, 0x40, 0x94, 0x60, 0x1b, 0x38, 0x61, 0x77, 0x54, 0x63, 0x1f, + 0x99, 0xc9, 0x91, 0xa, 0xe, 0x84, 0xa, 0xf8, 0x4f, 0xe5, 0x31, 0xf2, + 0x12, 0x13, 0xa0, 0xcc, 0x16, 0x7c, 0xa, 0xba, 0xf7, 0x6f, 0x5, 0xf3, + 0xa1, 0xa7, 0xf7, 0xc, 0xf7, 0x9, 0x1b, 0xb7, 0x9b, 0x6a, 0x76, 0x6d, + 0x84, 0x6d, 0x86, 0x71, 0x1f, 0x4b, 0xfb, 0xc3, 0x5, 0xf7, 0x25, 0x6, + 0xcb, 0xf7, 0xc2, 0x5, 0x92, 0xad, 0x91, 0xb3, 0xb0, 0x1a, 0xd2, 0x6c, + 0xc9, 0xfb, 0x0, 0x34, 0x4f, 0x5f, 0x65, 0x61, 0x1e, 0x89, 0x8d, 0x5, + 0x13, 0xc0, 0x99, 0xce, 0x5b, 0xa, 0xe, 0x73, 0x7d, 0xf7, 0x2, 0xf7, + 0xe8, 0xf7, 0x2, 0x3f, 0xa, 0xdd, 0xf7, 0x71, 0x15, 0xfb, 0x11, 0xde, + 0xfb, 0x2, 0x38, 0xa, 0xf7, 0x37, 0x26, 0xa, 0xe, 0x73, 0xfb, 0x4e, + 0x76, 0xf7, 0x54, 0xf7, 0x4, 0xf7, 0xe8, 0xeb, 0x2b, 0xf7, 0x1, 0x12, + 0xf8, 0x8d, 0xf7, 0x20, 0x13, 0xd8, 0x9d, 0xfb, 0x63, 0x15, 0x7c, 0xa, + 0xc5, 0xf7, 0xaa, 0x5, 0x77, 0x98, 0xb4, 0x49, 0xf6, 0x1b, 0xf7, 0x34, + 0xf3, 0xf7, 0x32, 0xf7, 0x41, 0xf7, 0x23, 0x44, 0xe2, 0xfb, 0x6, 0x34, + 0x58, 0x62, 0x6e, 0x6f, 0x1f, 0x89, 0x8d, 0x5, 0x13, 0xe8, 0x96, 0xc2, + 0x5, 0xfb, 0x18, 0x6, 0xe2, 0xfb, 0xcb, 0x15, 0xd8, 0xb4, 0xf7, 0x1e, + 0xf5, 0xcc, 0xae, 0x54, 0x49, 0x2d, 0x58, 0xfb, 0x11, 0x2e, 0x4d, 0x62, + 0xc3, 0xd0, 0x1e, 0xe, 0x73, 0xfb, 0x4e, 0x76, 0xf7, 0x54, 0xf2, 0xf7, + 0xf1, 0xf7, 0x1, 0x7e, 0x77, 0x12, 0xdb, 0xf7, 0x21, 0x13, 0xd8, 0xf8, + 0x2, 0xfb, 0x63, 0x15, 0xf7, 0x25, 0x6, 0xf7, 0x2e, 0xf9, 0x78, 0x66, + 0xa, 0x79, 0x34, 0x51, 0xa, 0x13, 0xe8, 0xa3, 0x7f, 0x62, 0xd7, 0xfb, + 0x7, 0x1b, 0xfb, 0x26, 0xfb, 0xc, 0xfb, 0x27, 0xfb, 0x54, 0xfb, 0x9, + 0xbf, 0x22, 0xf7, 0x1b, 0xd5, 0xb7, 0xab, 0xa4, 0xac, 0x1f, 0xfb, 0x59, + 0xf7, 0x39, 0x15, 0xe0, 0xb7, 0xf7, 0x25, 0xf2, 0xca, 0xb2, 0x4f, 0x4e, + 0xfb, 0x6, 0x52, 0xfb, 0x6, 0x30, 0x54, 0x5d, 0xb4, 0xd9, 0x1e, 0xe, + 0xfb, 0x8a, 0xa0, 0x76, 0xf8, 0x30, 0xf7, 0xd, 0xfb, 0xd, 0xf7, 0x1a, + 0x12, 0xd7, 0xf8, 0x3d, 0x13, 0xb0, 0xcb, 0x16, 0x82, 0xa, 0xab, 0xf7, + 0x3c, 0xa6, 0xf7, 0x17, 0xa2, 0xf7, 0x13, 0xf7, 0x30, 0x7d, 0x19, 0xbf, + 0xf7, 0xb, 0x5, 0x91, 0x7e, 0x76, 0x94, 0x6e, 0x1b, 0x49, 0x59, 0x51, + 0x51, 0x69, 0x1f, 0x89, 0x8d, 0x5, 0x13, 0xc0, 0x9f, 0xf0, 0x5, 0xfb, + 0x12, 0x6, 0xe, 0x3c, 0x7d, 0xef, 0xf7, 0xfc, 0xef, 0x1, 0xca, 0xf7, + 0x28, 0x15, 0xfb, 0x7, 0xab, 0xe5, 0x5c, 0xf7, 0x17, 0x1b, 0xf7, 0x48, + 0xc0, 0xf7, 0x8, 0xd3, 0xf4, 0x20, 0xab, 0x3f, 0xa3, 0x1f, 0x44, 0xa0, + 0x71, 0x93, 0xab, 0x1a, 0xa5, 0xa3, 0xa3, 0xc4, 0x9b, 0xd0, 0x8b, 0x4b, + 0xa0, 0x1e, 0xf7, 0x14, 0xa3, 0x5, 0xf7, 0x11, 0x70, 0xfb, 0x6, 0x9a, + 0x44, 0x1b, 0xfb, 0x32, 0x42, 0x46, 0x38, 0x35, 0xd7, 0x4f, 0xe2, 0x6c, + 0x1f, 0xe9, 0x69, 0x95, 0x85, 0x6e, 0x1a, 0x67, 0x5d, 0x71, 0x5a, 0x41, + 0x71, 0xb3, 0xb8, 0x7b, 0x1e, 0xe, 0x9a, 0x76, 0xf8, 0x2c, 0xee, 0xf7, + 0x43, 0x77, 0x1, 0xf7, 0xda, 0x85, 0x15, 0xa2, 0xf1, 0x5, 0x87, 0x25, + 0x76, 0x9b, 0xc7, 0x1f, 0x70, 0x6f, 0x91, 0xa8, 0x91, 0x1f, 0xc5, 0xf7, + 0xa8, 0x5, 0xe3, 0x6, 0xa1, 0xee, 0x5, 0x33, 0x6, 0xb1, 0xf7, 0x43, + 0xfb, 0x37, 0x2c, 0x7a, 0x3b, 0x5, 0x45, 0x6, 0x75, 0x28, 0x5, 0xd0, + 0x6, 0x8b, 0x4c, 0xfb, 0xb2, 0x73, 0x1a, 0x2e, 0xf7, 0x1b, 0x86, 0xe0, + 0x1e, 0xe, 0x59, 0xa, 0xf8, 0x4f, 0x77, 0x12, 0xed, 0xf7, 0x27, 0x13, + 0x70, 0xf8, 0x31, 0x89, 0x15, 0xf7, 0x1a, 0x6, 0xf7, 0x3, 0xf8, 0xaa, + 0x44, 0xa, 0x57, 0xfb, 0x91, 0x5, 0x46, 0x72, 0x82, 0xfb, 0xd, 0xfb, + 0xe, 0x1b, 0x5d, 0x7c, 0xb0, 0xb4, 0x9c, 0x8f, 0x9c, 0x8f, 0x9a, 0x1f, + 0xcd, 0xf7, 0xd0, 0x47, 0xa, 0x4a, 0xfb, 0xd0, 0x5, 0x85, 0x6f, 0x84, + 0x67, 0x67, 0x1a, 0x13, 0xb0, 0x47, 0xa5, 0x4d, 0xf7, 0x5, 0xcf, 0xce, + 0xa9, 0xc1, 0xc2, 0x1e, 0x8c, 0x89, 0x5, 0xe, 0x3c, 0x79, 0xa, 0xf7, + 0x78, 0x16, 0xf7, 0x9, 0x6, 0xf7, 0xcb, 0xf8, 0xa8, 0x7b, 0xa, 0xfb, + 0x57, 0xfb, 0xf8, 0x51, 0xa, 0x57, 0xf7, 0xf8, 0x5, 0xfb, 0x1a, 0x6, + 0xe, 0xf7, 0x23, 0x79, 0xa, 0xf8, 0x79, 0xe5, 0x3, 0xf7, 0x4f, 0x16, + 0xf7, 0x15, 0x6, 0xf7, 0x2f, 0xf7, 0xea, 0x5c, 0xa, 0xa3, 0xfb, 0xea, + 0x5, 0xf7, 0x16, 0x6, 0xf7, 0x93, 0xf8, 0xa8, 0x54, 0xa, 0xfb, 0x32, + 0xfb, 0xf7, 0x51, 0xa, 0x7a, 0xf7, 0xf7, 0x5, 0xfb, 0x12, 0x6, 0xfb, + 0x33, 0xfb, 0xf7, 0x51, 0xa, 0x69, 0xf7, 0xf7, 0x5, 0xfb, 0xf, 0x6, + 0xe, 0x3c, 0x79, 0xa, 0x9a, 0x16, 0xf7, 0x3f, 0x6, 0xf7, 0x16, 0xf7, + 0x2b, 0xd4, 0xfb, 0x2b, 0x5, 0xf7, 0x29, 0x6, 0xfb, 0x17, 0xf7, 0x97, + 0xf7, 0x85, 0xf7, 0xa5, 0x5, 0xfb, 0x3e, 0x6, 0xfb, 0x18, 0xfb, 0x28, + 0x41, 0xf7, 0x28, 0x53, 0xa, 0xf7, 0x18, 0xfb, 0x96, 0x5, 0xe, 0x3c, + 0xfb, 0x6a, 0xf7, 0x9, 0xf9, 0x9, 0x77, 0x1, 0xc2, 0x34, 0x15, 0x7e, + 0xfb, 0x0, 0x5, 0x7e, 0xad, 0xaa, 0x85, 0xa6, 0x1b, 0xe2, 0xc5, 0xcd, + 0xf0, 0xc3, 0x1f, 0xf7, 0xd1, 0xf8, 0xd7, 0x77, 0xa, 0xfc, 0x27, 0x51, + 0xa, 0x59, 0xf8, 0x27, 0x54, 0xa, 0xe5, 0xfc, 0xa3, 0x5, 0x4c, 0x6f, + 0x6c, 0x64, 0x5c, 0x1b, 0x7d, 0x7b, 0x8e, 0x92, 0x79, 0x1f, 0xe, 0xfb, + 0x1b, 0x8b, 0xf7, 0xa, 0xf7, 0xc1, 0xf7, 0x5, 0x1, 0x9f, 0x16, 0xf8, + 0x70, 0x6, 0xa5, 0xf7, 0xa, 0x5, 0xfb, 0xac, 0x6, 0xf7, 0xd6, 0xf7, + 0xdc, 0x9e, 0xe1, 0x5, 0xfc, 0x5c, 0x6, 0x71, 0xfb, 0x5, 0x5, 0xf7, + 0x98, 0x6, 0xfb, 0xd3, 0xfb, 0xd5, 0x5, 0xe, 0x73, 0xa, 0xf7, 0xb2, + 0xf7, 0x7, 0x1, 0x14, 0xe0, 0xe9, 0xf7, 0x61, 0x15, 0xef, 0x79, 0x3f, + 0xfb, 0x4, 0x74, 0x1f, 0xfb, 0x2f, 0x69, 0xb1, 0x51, 0xf7, 0x1e, 0x1b, + 0xa3, 0x6, 0xa3, 0xf7, 0x7, 0x5, 0x49, 0x72, 0x8e, 0xcc, 0x98, 0x1f, + 0xb4, 0xf7, 0x4e, 0x82, 0xbd, 0x52, 0xb3, 0xd3, 0xb5, 0xa8, 0xac, 0xb7, + 0xf7, 0x5c, 0x8, 0xcb, 0x98, 0xa0, 0x90, 0xd6, 0x1b, 0xa3, 0xf7, 0x7, + 0x5, 0x73, 0x6, 0xfb, 0x50, 0x77, 0x32, 0xfb, 0x23, 0x6c, 0x1f, 0xfb, + 0x9, 0x72, 0x7f, 0x57, 0x27, 0x1b, 0xe, 0xfb, 0xf7, 0xfb, 0x50, 0x76, + 0xfa, 0x46, 0x77, 0x1, 0xbd, 0xfb, 0x65, 0x15, 0xf7, 0x3, 0x6, 0xf7, + 0x5e, 0xfa, 0x46, 0x5, 0xfb, 0x3, 0x6, 0xe, 0x73, 0xa, 0xf8, 0x25, + 0x77, 0x1, 0x93, 0x3a, 0x15, 0x71, 0xfb, 0x7, 0x5, 0xf7, 0x66, 0x9f, + 0xe4, 0xf7, 0x23, 0xac, 0x1f, 0xf7, 0x9, 0xa5, 0xa8, 0xbf, 0xdd, 0x1b, + 0xa4, 0xf7, 0x8, 0x5, 0x29, 0x9c, 0xd7, 0xf7, 0x4, 0xa4, 0x1f, 0x94, + 0xae, 0x8e, 0xa9, 0xa5, 0x1a, 0xe3, 0x59, 0xad, 0xfb, 0x10, 0x1e, 0x71, + 0xfb, 0x7, 0x5, 0xc0, 0xa6, 0x89, 0x67, 0x83, 0x8a, 0x82, 0x88, 0x7e, + 0x1f, 0x61, 0xfb, 0x4e, 0x94, 0x59, 0xc4, 0x63, 0x41, 0x61, 0x6e, 0x6a, + 0x5f, 0xfb, 0x5c, 0x8, 0x4b, 0x7c, 0x77, 0x86, 0x42, 0x1b, 0xe, 0x58, + 0xf7, 0x4d, 0x76, 0xf7, 0x47, 0x77, 0x1, 0xf7, 0x7, 0xf8, 0x62, 0x3, + 0xf7, 0x7, 0xf7, 0x37, 0x15, 0xc2, 0xbf, 0xb3, 0x91, 0xa6, 0x1b, 0xbc, + 0xab, 0x7d, 0x7c, 0xa9, 0x1f, 0x7b, 0xaa, 0xa9, 0x7c, 0xb4, 0x1b, 0xd0, + 0xbf, 0xbc, 0x95, 0x94, 0x1f, 0xf7, 0xc, 0x7, 0x4d, 0x53, 0x56, 0x89, + 0x81, 0x1b, 0x69, 0x6d, 0x97, 0x98, 0x6e, 0x1f, 0x9b, 0x64, 0x66, 0x9e, + 0x5d, 0x1b, 0x75, 0x57, 0x8b, 0x4e, 0x55, 0x1f, 0xe, 0xe2, 0x8b, 0xf7, + 0xc, 0xf8, 0x6f, 0xf7, 0xf, 0x1, 0xf7, 0x8, 0xf7, 0x1f, 0x3, 0x9f, + 0xf7, 0x94, 0x15, 0xeb, 0x6, 0xfb, 0x32, 0x9a, 0xec, 0x29, 0xf7, 0x4b, + 0x1b, 0xbb, 0xba, 0x93, 0x9a, 0xb9, 0x1f, 0xaf, 0xf7, 0x25, 0x5, 0x6b, + 0x5c, 0x53, 0x7b, 0x4c, 0x1b, 0x38, 0x3a, 0xca, 0xd4, 0x88, 0x1f, 0xf7, + 0xda, 0x6, 0x9b, 0xd4, 0x5, 0xfb, 0xe7, 0x6, 0x8f, 0xaa, 0x90, 0xa1, + 0x8d, 0x94, 0x8, 0xf7, 0xe9, 0x6, 0x9b, 0xd4, 0x5, 0xfb, 0xdf, 0x6, + 0xe2, 0xb9, 0xdb, 0xb7, 0xeb, 0x1b, 0xc4, 0xb5, 0x81, 0x6a, 0xa6, 0x1f, + 0xc6, 0x55, 0xa, 0xa8, 0x5a, 0x4e, 0x9a, 0x43, 0x1b, 0xfb, 0x49, 0xfb, + 0x20, 0x23, 0xfb, 0x2a, 0x54, 0x1f, 0xfb, 0x0, 0x6, 0x7b, 0x42, 0x5, + 0xf4, 0x6, 0x87, 0x71, 0x89, 0x76, 0x8a, 0x7c, 0x8, 0x39, 0x6, 0xe, + 0xfb, 0xf9, 0xfb, 0x11, 0x76, 0xf7, 0x3a, 0x76, 0xf7, 0x14, 0x77, 0x1, + 0xd3, 0x8a, 0x15, 0xc9, 0x6, 0x7e, 0x52, 0x73, 0x7a, 0x60, 0x82, 0x7e, + 0x4d, 0x18, 0xf7, 0x1d, 0x3e, 0xa, 0xfb, 0x1d, 0x6, 0xe, 0x3c, 0xfb, + 0x51, 0x76, 0xf9, 0xcf, 0x96, 0xa, 0x88, 0x3b, 0x15, 0x5c, 0xfb, 0x3, + 0x5, 0x7d, 0xb6, 0xc5, 0x86, 0xaa, 0x1b, 0xf7, 0x15, 0xbb, 0xf7, 0xf, + 0xd9, 0xa6, 0x1f, 0xf7, 0x27, 0xf8, 0x3e, 0x5, 0xef, 0x6, 0xae, 0xf4, + 0x5, 0x27, 0x6, 0xcd, 0xa2, 0x96, 0xa8, 0xba, 0x1b, 0xa9, 0xa9, 0x81, + 0x87, 0x98, 0x1f, 0xba, 0xf7, 0x5, 0x5, 0x9e, 0x50, 0x52, 0x8d, 0x80, + 0x1b, 0xfb, 0x1e, 0x7b, 0x35, 0xfb, 0x15, 0x51, 0x1f, 0x2a, 0x6, 0x67, + 0x22, 0x5, 0xed, 0x6, 0xfb, 0x26, 0xfc, 0x3c, 0x5, 0x4f, 0x77, 0x75, + 0x72, 0x6b, 0x1b, 0x77, 0x78, 0x8d, 0x95, 0x64, 0x1f, 0xe, 0xfb, 0x1b, + 0xfb, 0x11, 0x76, 0xf7, 0x25, 0xf7, 0x14, 0x1, 0xf7, 0xbd, 0x8a, 0x61, + 0xa, 0xf7, 0x1f, 0x3e, 0xa, 0xfb, 0x1e, 0x6, 0xfb, 0x96, 0xfb, 0x14, + 0x61, 0xa, 0x56, 0xa, 0xe, 0xf8, 0x1, 0x8b, 0xf7, 0x26, 0x1, 0xf9, + 0x92, 0x16, 0x4b, 0xa, 0xfd, 0x53, 0xfb, 0x26, 0x15, 0x4b, 0xa, 0xf7, + 0xc8, 0xfb, 0x26, 0x15, 0x4b, 0xa, 0xe, 0x3c, 0xfb, 0x2a, 0x76, 0xf8, + 0xdb, 0xf7, 0x3, 0xf7, 0x57, 0x77, 0x1, 0xf7, 0x45, 0xfb, 0x3f, 0x15, + 0xf7, 0x18, 0x6, 0xf7, 0xc, 0xf8, 0xdb, 0x5, 0xf7, 0x42, 0x6, 0xa2, + 0xf7, 0x3, 0x5, 0xfb, 0x43, 0x6, 0xb4, 0xf7, 0x57, 0x66, 0xa, 0x62, + 0xfb, 0x57, 0x5, 0xfb, 0x48, 0x6, 0x75, 0xfb, 0x3, 0x5, 0xf7, 0x48, + 0x6, 0xe, 0x3c, 0xfb, 0x2a, 0x76, 0xf7, 0x42, 0xf7, 0x3, 0xf7, 0xd7, + 0xf7, 0x3, 0xf7, 0x3e, 0x77, 0x1, 0xb9, 0x8e, 0x15, 0xf7, 0x43, 0x6, + 0x69, 0xfb, 0x42, 0x5, 0xf7, 0x14, 0x6, 0xad, 0xf7, 0x42, 0x5, 0xf7, + 0x3d, 0x89, 0xa, 0xcc, 0xf7, 0xd7, 0x5, 0xf7, 0x3e, 0x89, 0xa, 0xac, + 0xf7, 0x3e, 0x5, 0xfb, 0x13, 0x6, 0x69, 0xfb, 0x3e, 0x5, 0xfb, 0x44, + 0x6, 0x75, 0xfb, 0x3, 0x5, 0xf7, 0x43, 0x6, 0x4b, 0xfb, 0xd7, 0x5, + 0xfb, 0x44, 0x6, 0xe, 0x72, 0xa, 0xf7, 0xa, 0xf8, 0xf0, 0x8f, 0xa, + 0xe4, 0xe1, 0xb3, 0x35, 0x5, 0xf1, 0x6, 0x4c, 0xf7, 0x26, 0x81, 0xa, + 0xf8, 0x1, 0x7a, 0xdb, 0x4e, 0x76, 0xf9, 0x1d, 0xdb, 0x12, 0x13, 0x60, + 0xf7, 0x3e, 0xf8, 0x6f, 0x15, 0x9b, 0xa1, 0xf7, 0x1f, 0xc3, 0x9b, 0x9e, + 0x76, 0x6e, 0x75, 0x77, 0xfb, 0x17, 0x4f, 0x6a, 0x8b, 0xaa, 0x9c, 0x1e, + 0x47, 0xfc, 0x82, 0x15, 0xed, 0x6, 0xf8, 0x6a, 0xf9, 0x6d, 0x5, 0x26, + 0x6, 0xfc, 0x81, 0xfb, 0x7f, 0x15, 0xfb, 0x1, 0xd3, 0x79, 0xba, 0xf7, + 0x1c, 0xb8, 0xf7, 0x36, 0xd1, 0xb5, 0x79, 0xe3, 0x21, 0xfb, 0x2f, 0x76, + 0xfb, 0x6b, 0x77, 0x1e, 0xf7, 0xd7, 0xfc, 0x1, 0x15, 0x13, 0xa0, 0xfb, + 0x1, 0xd1, 0x79, 0xbb, 0xf7, 0x1c, 0xb8, 0xf7, 0x3e, 0xd0, 0xb5, 0x79, + 0xdc, 0x21, 0x74, 0xa, 0xa1, 0xf7, 0x1f, 0xc3, 0x9a, 0x9e, 0x7e, 0x6d, + 0x76, 0x77, 0xfb, 0x1e, 0x51, 0x69, 0x8b, 0xaa, 0x9b, 0x1e, 0xf7, 0x8b, + 0x16, 0xfb, 0x1, 0xd1, 0x79, 0xba, 0xf7, 0x1e, 0xb7, 0xf7, 0x3d, 0xcf, + 0xb2, 0x7b, 0xe1, 0xfb, 0x0, 0x74, 0xa, 0xa0, 0xf7, 0x1f, 0xc4, 0x9a, + 0x9e, 0x7c, 0x6d, 0x76, 0x77, 0xfb, 0x1c, 0x50, 0x6a, 0x8b, 0xaa, 0x9b, + 0x1e, 0xe, 0xab, 0x78, 0xf7, 0x14, 0x12, 0xdc, 0xf7, 0x26, 0x53, 0xf7, + 0x26, 0xf7, 0x5b, 0xf7, 0x2c, 0x2a, 0xf7, 0x27, 0x13, 0xd0, 0xdc, 0xf7, + 0x7e, 0x15, 0xfb, 0x46, 0xf7, 0x28, 0x40, 0xf7, 0x24, 0xf7, 0x67, 0xdf, + 0xf7, 0x2, 0xf7, 0x1, 0xf7, 0x12, 0x34, 0xc4, 0xfb, 0x14, 0xc2, 0x1e, + 0x13, 0xa8, 0x35, 0xb0, 0x59, 0x8e, 0xc0, 0x1a, 0xd8, 0xe7, 0x9e, 0xa5, + 0xd1, 0xc5, 0x73, 0x35, 0x93, 0x1e, 0xf7, 0x27, 0x92, 0x5, 0xf7, 0x37, + 0x80, 0xfb, 0x14, 0xc8, 0xfb, 0x23, 0x1b, 0xfb, 0x65, 0x53, 0xfb, 0x14, + 0x32, 0xfb, 0x15, 0xe5, 0x6e, 0xf7, 0x15, 0x53, 0x1f, 0x13, 0xd0, 0xdc, + 0x68, 0xb8, 0x6e, 0x56, 0x1a, 0x3d, 0x32, 0x7e, 0x57, 0xfb, 0x23, 0x88, + 0xcf, 0xcb, 0x89, 0x1e, 0xf7, 0x3e, 0xf8, 0xb3, 0x15, 0xf7, 0x1d, 0x6, + 0xf7, 0x2b, 0x5d, 0xa, 0xfb, 0xd, 0x6, 0x32, 0x31, 0x64, 0xe5, 0x5, + 0x26, 0x6, 0xe, 0x58, 0xa, 0xf7, 0x62, 0xd7, 0x15, 0xd0, 0x6, 0x5e, + 0xf7, 0x65, 0xf7, 0xf, 0xf7, 0x5b, 0x5, 0x39, 0x6, 0xfb, 0x21, 0xfb, + 0x5b, 0x5, 0xe, 0xf8, 0x1, 0x78, 0xf7, 0xd, 0xfb, 0x1, 0xf7, 0x1, + 0xfb, 0x1, 0xf7, 0xf, 0xf7, 0x5c, 0xf7, 0xf, 0xf7, 0x37, 0xf7, 0xf, + 0xfb, 0x1, 0xf7, 0xd, 0x12, 0xee, 0xf7, 0x19, 0x13, 0x3a, 0xf8, 0x84, + 0x84, 0x15, 0xf8, 0x88, 0x71, 0xa, 0xfb, 0xfc, 0x6, 0xb4, 0xf7, 0x5c, + 0x5, 0xf7, 0xc7, 0x71, 0xa, 0xfb, 0xc8, 0x6, 0xac, 0xf7, 0x37, 0x5, + 0xf7, 0xdc, 0x6, 0xa4, 0xf7, 0xf, 0x5, 0xfc, 0x68, 0x6, 0x7a, 0x39, + 0x5, 0x13, 0x96, 0xd6, 0x62, 0x3c, 0x9e, 0x57, 0x1b, 0xfb, 0x52, 0xfb, + 0x3c, 0xfb, 0x57, 0xfb, 0xab, 0xfb, 0x61, 0xf7, 0x12, 0x3e, 0xf7, 0x12, + 0xe3, 0xb4, 0xb1, 0xad, 0xa5, 0x1f, 0x8d, 0x88, 0x5, 0x13, 0x56, 0xfb, + 0xa8, 0xf7, 0x69, 0x15, 0xf7, 0x12, 0xc5, 0xf7, 0x77, 0xf7, 0x38, 0xe1, + 0xb7, 0x4a, 0x3e, 0x4e, 0x76, 0xfb, 0x9, 0x6f, 0x42, 0x1e, 0x6f, 0x80, + 0x63, 0x2e, 0x20, 0x1b, 0x38, 0x4d, 0xc5, 0xf2, 0x1f, 0xe, 0xfb, 0xf9, + 0xf8, 0x6f, 0x76, 0xf7, 0xa5, 0x77, 0x1, 0xf7, 0x39, 0xf8, 0x5a, 0x8e, + 0xa, 0xa6, 0xf7, 0x15, 0x5, 0x4d, 0x6, 0x97, 0xc4, 0xa4, 0x9a, 0xb6, + 0x95, 0x98, 0xc9, 0x18, 0xfb, 0x1e, 0x88, 0x74, 0xfb, 0x1, 0x7f, 0x54, + 0x8, 0xe, 0xfb, 0xf9, 0xf8, 0x66, 0x76, 0xf7, 0xa5, 0x77, 0x1, 0xf7, + 0x3b, 0xf8, 0x51, 0x15, 0xf7, 0x1d, 0x3e, 0xa, 0xfb, 0x1d, 0x6, 0x70, + 0xfb, 0x15, 0x5, 0xc9, 0x6, 0x7e, 0x53, 0x73, 0x7b, 0x60, 0x81, 0x8, + 0xe, 0xfb, 0x1b, 0xf8, 0x5a, 0xf7, 0x14, 0xf7, 0x25, 0x77, 0x1, 0xf7, + 0x34, 0xf8, 0x5a, 0x15, 0xf7, 0x1f, 0x6, 0xa6, 0xf7, 0x14, 0x5, 0x4d, + 0x6, 0x97, 0xc3, 0xa4, 0x9d, 0xb7, 0x94, 0x97, 0xc9, 0x18, 0xfb, 0x1e, + 0x88, 0x73, 0xfb, 0x3, 0x7f, 0x55, 0x8, 0xf7, 0x64, 0x22, 0x8e, 0xa, + 0xa7, 0xf7, 0x14, 0x5, 0x4c, 0x6, 0x98, 0xc3, 0xa3, 0x9d, 0xb7, 0x94, + 0x98, 0xc9, 0x18, 0xfb, 0x1f, 0x88, 0x74, 0xfb, 0x3, 0x7f, 0x55, 0x8, + 0xe, 0xfb, 0x1b, 0xf8, 0x66, 0x76, 0xf7, 0x24, 0xf7, 0x15, 0x1, 0xf8, + 0x1c, 0xf8, 0x51, 0x15, 0xf7, 0x1f, 0x3e, 0xa, 0xfb, 0x1e, 0x6, 0x6f, + 0x62, 0xa, 0xfb, 0x87, 0x4d, 0x15, 0x56, 0xa, 0x70, 0x62, 0xa, 0xe, + 0xfb, 0xb1, 0xf7, 0x6b, 0x76, 0xf7, 0xde, 0x77, 0x1, 0xde, 0xf7, 0xfd, + 0x15, 0x2f, 0xd7, 0x40, 0xe7, 0xe7, 0xd8, 0xd5, 0xe8, 0xe9, 0x3e, 0xd0, + 0x2f, 0x2e, 0x40, 0x44, 0x2f, 0x1e, 0xe, 0x3c, 0x88, 0xa, 0xf8, 0xd7, + 0xf5, 0xfc, 0xd7, 0x6, 0xe, 0xf8, 0x1, 0x88, 0xa, 0xfa, 0x93, 0xf5, + 0xfe, 0x93, 0x6, 0xe, 0xf8, 0xf6, 0xf7, 0x13, 0x38, 0xde, 0x89, 0x77, + 0x12, 0x13, 0x80, 0xf7, 0x5, 0xf8, 0xf6, 0x15, 0xd4, 0x6, 0x13, 0x40, + 0x8f, 0x9a, 0x96, 0xa7, 0xae, 0x8c, 0x8, 0xaa, 0xa2, 0x81, 0x81, 0xa3, + 0x1f, 0x81, 0xa2, 0xa2, 0x80, 0xaa, 0x1b, 0xc1, 0xbb, 0xb5, 0xdd, 0x99, + 0x1f, 0x41, 0x6, 0x72, 0x83, 0x83, 0x7a, 0x74, 0x1b, 0x75, 0x75, 0x93, + 0x93, 0x72, 0x1f, 0x13, 0x20, 0x96, 0x6c, 0x6a, 0x98, 0x69, 0x1b, 0x13, + 0x80, 0x3d, 0x72, 0x42, 0x57, 0x80, 0x1f, 0xe, 0xf8, 0x1, 0xf7, 0xdb, + 0x76, 0xf7, 0xe7, 0xd4, 0x1, 0xf7, 0x68, 0xe5, 0xf7, 0x58, 0xe0, 0xf7, + 0xd0, 0xe0, 0x3, 0xf7, 0x68, 0xf7, 0xc6, 0x15, 0xe5, 0xf7, 0xe7, 0xf7, + 0x2e, 0xd4, 0xfc, 0x26, 0x42, 0xf7, 0x32, 0x6, 0xf7, 0xb2, 0xfb, 0xe7, + 0x15, 0xe0, 0xf7, 0xdc, 0x8d, 0x6, 0xf7, 0x8, 0xfb, 0xdc, 0x5, 0xdb, + 0x6, 0xf7, 0x7, 0xf7, 0xdc, 0x5, 0x8e, 0xfb, 0xdc, 0xe0, 0xf8, 0x30, + 0xfb, 0x21, 0x6, 0x26, 0xfb, 0xaf, 0x51, 0xa, 0x25, 0xf7, 0xaf, 0x5, + 0xfb, 0x20, 0x6, 0xe, 0x3c, 0x7d, 0xef, 0xf8, 0x94, 0xf7, 0x2c, 0x1, + 0xf7, 0x24, 0xf7, 0x1c, 0xf7, 0x26, 0xf7, 0x28, 0x3, 0xca, 0xf7, 0x28, + 0x15, 0xfb, 0x7, 0xad, 0xe9, 0x5c, 0xf7, 0x1e, 0x1b, 0xf7, 0x51, 0xc3, + 0xe5, 0xd3, 0xf4, 0xfb, 0x4, 0xc5, 0x3a, 0xa3, 0x1f, 0x41, 0xa1, 0x70, + 0x8b, 0xab, 0x1a, 0xa4, 0xa4, 0xab, 0xc7, 0x9b, 0xd4, 0x8b, 0x4b, 0xa2, + 0x1e, 0xf7, 0x1a, 0xa3, 0x5, 0xf7, 0x11, 0x6f, 0xfb, 0xc, 0x9b, 0x40, + 0x1b, 0xfb, 0x3a, 0x3d, 0x46, 0x32, 0x27, 0xdc, 0x69, 0xe6, 0x6c, 0x1f, + 0xef, 0x69, 0x95, 0x7e, 0x6e, 0x1a, 0x67, 0x5a, 0x71, 0x58, 0x3d, 0x70, + 0xb3, 0xb8, 0x7a, 0x1e, 0xf7, 0x11, 0xf8, 0x3f, 0x15, 0x82, 0xa, 0xf7, + 0x2a, 0x5d, 0xa, 0xfb, 0xc, 0x6, 0x33, 0x31, 0x64, 0xe5, 0x5, 0x27, + 0x6, 0xe, 0x58, 0xa, 0xee, 0xd7, 0x15, 0xdd, 0x6, 0xf7, 0x21, 0xf7, + 0x55, 0x3f, 0xf7, 0x6b, 0x5, 0x46, 0x6, 0xb8, 0xfb, 0x6b, 0x5, 0xe, + 0xf7, 0xc9, 0x7d, 0xf1, 0x25, 0xf7, 0x2, 0xf7, 0x10, 0xe3, 0xf7, 0x15, + 0xf7, 0x1, 0x24, 0xf2, 0x12, 0xdd, 0xf7, 0x21, 0xf7, 0x98, 0xf7, 0x15, + 0x13, 0xb6, 0xf8, 0xa5, 0xcc, 0x15, 0x56, 0xb8, 0xd0, 0x71, 0xd0, 0x1b, + 0xf7, 0x2a, 0xca, 0xf7, 0x1, 0xb9, 0xa5, 0x1f, 0xfb, 0x13, 0xa2, 0x5, + 0x69, 0x7b, 0x6a, 0x61, 0x4d, 0x1b, 0x68, 0x47, 0xa4, 0xf6, 0x8d, 0x1f, + 0xf7, 0xf6, 0x6, 0x94, 0xae, 0x8d, 0xb0, 0xaf, 0x1a, 0xec, 0x4c, 0xf7, + 0xd, 0xfb, 0x2b, 0x74, 0x33, 0x89, 0x42, 0x39, 0x1e, 0xca, 0x51, 0x45, + 0x97, 0x53, 0x1b, 0xfb, 0xaa, 0x71, 0xfb, 0xa5, 0x4a, 0xfb, 0xa, 0xcf, + 0x23, 0xf7, 0x45, 0xd6, 0xd5, 0xa5, 0xc0, 0xc0, 0x1f, 0xec, 0xf7, 0x87, + 0x15, 0x13, 0xae, 0xa8, 0x92, 0xa4, 0xf5, 0xe9, 0x1b, 0xf0, 0x86, 0xfb, + 0x4, 0x74, 0x8a, 0x1f, 0xfd, 0x4, 0x27, 0x15, 0x13, 0x76, 0xf7, 0x5, + 0xc0, 0xf7, 0x8, 0xf0, 0xb7, 0xc9, 0x6f, 0x29, 0x43, 0x65, 0xfb, 0x23, + 0xfb, 0x9, 0x47, 0x66, 0xc1, 0xc5, 0x1e, 0xe, 0xab, 0xa0, 0x76, 0xf9, + 0x6d, 0x77, 0xdf, 0xf7, 0xe, 0x1, 0x64, 0xa, 0xf7, 0xa2, 0xf7, 0xcc, + 0xf8, 0x5f, 0x43, 0xa, 0xfb, 0x5d, 0xfb, 0xcc, 0xfb, 0x10, 0xf7, 0xcc, + 0x5a, 0xa, 0xf7, 0x51, 0xfc, 0x50, 0x5, 0x8a, 0xf8, 0x90, 0x15, 0xf7, + 0x6, 0x6, 0xa3, 0x55, 0xa, 0xfb, 0x7, 0x6, 0xf7, 0x40, 0xfb, 0xe, + 0x15, 0xf7, 0x6, 0x6, 0xa3, 0x55, 0xa, 0xfb, 0x6, 0x6, 0xe, 0xfb, + 0x39, 0x76, 0xf8, 0xab, 0x77, 0xcf, 0xf7, 0x1b, 0x1, 0xf7, 0x46, 0xf8, + 0x21, 0x15, 0xf7, 0x25, 0x6, 0xa9, 0xf7, 0x1b, 0x93, 0xa, 0xfb, 0xb, + 0xfc, 0xb9, 0x15, 0x65, 0xfb, 0x3d, 0x5, 0xf7, 0x2b, 0x6, 0xb0, 0xf7, + 0x3d, 0xb9, 0xf8, 0x2, 0x5, 0x3a, 0x6, 0xe, 0x3c, 0x2a, 0x76, 0xf6, + 0xf5, 0xf7, 0xed, 0xe9, 0xe9, 0x77, 0x1, 0xda, 0xf7, 0x1b, 0x3, 0xf7, + 0x24, 0x2c, 0x15, 0xc9, 0x74, 0xbe, 0xf7, 0x3, 0x5, 0x89, 0x95, 0x9b, + 0x89, 0xa1, 0x1b, 0xf7, 0x2f, 0xd5, 0xf7, 0x3, 0xd8, 0xa6, 0x1f, 0xfb, + 0x19, 0x9f, 0x73, 0x50, 0x64, 0x5c, 0x4b, 0x8f, 0x19, 0xf7, 0x1c, 0xf7, + 0xd8, 0xa0, 0x79, 0x96, 0x72, 0x8d, 0x6d, 0x19, 0xf7, 0x14, 0x99, 0x85, + 0xe3, 0x4f, 0xbb, 0x54, 0xa0, 0x19, 0xb0, 0xe2, 0x4f, 0xa3, 0x61, 0x2b, + 0x5, 0x8c, 0x85, 0x81, 0x8c, 0x7b, 0x1b, 0xfb, 0x39, 0xfb, 0x1d, 0xfb, + 0x20, 0xfb, 0x57, 0x2a, 0xb6, 0x4f, 0xd3, 0x6b, 0x1f, 0xb9, 0xf7, 0x2, + 0x15, 0x82, 0x93, 0x7a, 0x9e, 0xbf, 0x1a, 0xd2, 0xab, 0xf7, 0x35, 0xf7, + 0x14, 0x94, 0x1e, 0xe, 0x3c, 0x90, 0x76, 0xa6, 0x76, 0xf7, 0xc8, 0xf7, + 0x0, 0xf7, 0x61, 0xf6, 0x12, 0xf7, 0x4b, 0xf7, 0x14, 0x13, 0xb8, 0xcb, + 0x7b, 0x15, 0x9c, 0xaa, 0xc2, 0xa3, 0xc4, 0x1b, 0xbb, 0xa9, 0x82, 0x82, + 0xaa, 0x1f, 0x13, 0x78, 0x82, 0xa9, 0xab, 0x83, 0xbc, 0x1b, 0xc5, 0xaf, + 0x9a, 0x98, 0xaf, 0x1f, 0x61, 0xf7, 0xb, 0x5, 0x71, 0x53, 0x68, 0x8b, + 0x78, 0x1b, 0x7e, 0x41, 0x97, 0x84, 0xad, 0x1f, 0x86, 0xa4, 0x3e, 0x97, + 0x74, 0x1b, 0x75, 0x78, 0x87, 0x81, 0x7e, 0x1f, 0x89, 0x8d, 0xca, 0xc2, + 0xad, 0xbd, 0x90, 0xdd, 0x19, 0xe9, 0x6, 0xa2, 0xf7, 0x0, 0x7a, 0xa, + 0x87, 0xa1, 0x88, 0xa1, 0xa3, 0x1a, 0xe9, 0xc2, 0xb6, 0xc0, 0xd7, 0x96, + 0x44, 0x72, 0x8f, 0x1e, 0xf7, 0x11, 0x98, 0x5, 0xea, 0x84, 0x4f, 0xea, + 0xfb, 0x23, 0x1b, 0xfb, 0x28, 0x2d, 0xfb, 0x8, 0xfb, 0x14, 0x85, 0x8b, + 0x75, 0x93, 0x63, 0x1f, 0x3d, 0x6, 0x75, 0xfb, 0x0, 0x5, 0xf7, 0x3, + 0x6, 0x7e, 0xfb, 0x9, 0x23, 0x52, 0x68, 0x7c, 0x8, 0xe, 0x3c, 0xec, + 0x76, 0xb5, 0xf7, 0x16, 0xf7, 0x69, 0xf7, 0x16, 0xb8, 0x77, 0x1, 0xdc, + 0xd8, 0x15, 0xe6, 0xd2, 0x5, 0x78, 0xa6, 0xad, 0x80, 0xb1, 0x1b, 0xb5, + 0xb7, 0x97, 0x9e, 0xae, 0x1f, 0xb8, 0x42, 0xf7, 0x7, 0xe6, 0x5f, 0xd3, + 0xaa, 0xae, 0xa4, 0xb4, 0x99, 0xb5, 0x19, 0x92, 0xa0, 0x91, 0xa6, 0xa7, + 0x1a, 0x98, 0x8b, 0x98, 0x88, 0x99, 0x1e, 0xe7, 0xd3, 0x55, 0xe6, 0x2e, + 0x42, 0x5, 0x95, 0x7d, 0x6e, 0x9d, 0x52, 0x1b, 0x51, 0x60, 0x79, 0x81, + 0x77, 0x1f, 0x5e, 0xd4, 0xfb, 0x8, 0x2b, 0xb5, 0x46, 0x6e, 0x69, 0x74, + 0x62, 0x7e, 0x62, 0x19, 0x82, 0x71, 0x80, 0x60, 0x93, 0x5c, 0x32, 0x44, + 0x18, 0xf7, 0x74, 0xf7, 0x51, 0x15, 0xc6, 0x9e, 0xc9, 0xb8, 0xc3, 0x1b, + 0xb7, 0xa8, 0x6f, 0x62, 0x80, 0x89, 0x7f, 0x87, 0x7f, 0x1f, 0x4f, 0x77, + 0x4b, 0x5a, 0x53, 0x1b, 0x53, 0x6e, 0xbc, 0xc7, 0xa0, 0x1f, 0xe, 0x3c, + 0xa0, 0x76, 0xf7, 0x21, 0xe6, 0xf8, 0x66, 0x77, 0x1, 0xc7, 0xf7, 0x21, + 0x15, 0xf7, 0x4d, 0x6, 0x6d, 0xfb, 0x21, 0x5, 0xf7, 0x20, 0x6, 0xab, + 0xf7, 0x21, 0x5, 0xf7, 0x4b, 0x6, 0x9f, 0xe6, 0x5, 0xfb, 0x4c, 0x6, + 0x9c, 0xd7, 0x5, 0xf7, 0x4b, 0x6, 0x9f, 0xe7, 0x5, 0xfb, 0x13, 0x6, + 0xf7, 0x6a, 0xf7, 0xbe, 0x43, 0xa, 0xfb, 0x4b, 0xfb, 0xbe, 0x51, 0xa, + 0x40, 0xf7, 0xbe, 0x44, 0xa, 0xe8, 0xfb, 0xbe, 0x5, 0xfb, 0xf, 0x6, + 0x78, 0x2f, 0x5, 0xf7, 0x4d, 0x6, 0x7b, 0x3f, 0x5, 0xfb, 0x4e, 0x6, + 0xe, 0xfb, 0xf7, 0x78, 0xa, 0xdb, 0x78, 0x15, 0xf7, 0x0, 0x6, 0xce, + 0xf7, 0xc9, 0x5, 0xfb, 0x0, 0x6, 0xaa, 0xf7, 0x1d, 0x15, 0xf7, 0x0, + 0x6, 0xce, 0xf7, 0xca, 0x5, 0xfb, 0x0, 0x6, 0xe, 0x3c, 0xfb, 0x4c, + 0xe9, 0xf9, 0x1e, 0xf7, 0x3b, 0x12, 0xf6, 0xf7, 0xd, 0x78, 0xf7, 0x11, + 0xa1, 0xf7, 0x16, 0x6b, 0xf7, 0xa, 0x13, 0xe8, 0xc8, 0x77, 0x15, 0x35, + 0x9c, 0xd6, 0x3d, 0xf7, 0x1a, 0x1b, 0xf7, 0x1b, 0xcb, 0xd6, 0xd5, 0xbd, + 0x6f, 0xb7, 0x7d, 0x9e, 0x1f, 0x13, 0xd4, 0xd5, 0xae, 0xc1, 0xc6, 0xd3, + 0x1a, 0xc6, 0x6e, 0xbe, 0x2f, 0xdb, 0x1e, 0x27, 0xe3, 0x7a, 0x92, 0xb1, + 0x1a, 0xa5, 0x9c, 0xb3, 0xba, 0xcf, 0x8f, 0x4f, 0x78, 0x8d, 0x1e, 0xf7, + 0x12, 0x97, 0x5, 0xc4, 0x84, 0x72, 0xf3, 0xfb, 0x36, 0x1b, 0xfb, 0x28, + 0x5c, 0x30, 0x46, 0x75, 0x90, 0x6d, 0xa3, 0x65, 0x1f, 0x13, 0xe8, 0x67, + 0x79, 0x2c, 0x63, 0x22, 0x1a, 0x76, 0x89, 0x4a, 0xe1, 0x3e, 0x1e, 0xc8, + 0x55, 0xf3, 0x48, 0x4a, 0x1a, 0x83, 0x87, 0x5c, 0x4d, 0x60, 0x64, 0x9f, + 0xd9, 0x77, 0x1e, 0xf7, 0x57, 0xf7, 0x1c, 0x15, 0xfb, 0x9, 0xf7, 0x2, + 0x5, 0x65, 0xaf, 0x8b, 0x98, 0x96, 0x1a, 0xb9, 0xad, 0xaa, 0xab, 0x9d, + 0x1e, 0x86, 0xe2, 0x40, 0x82, 0x8f, 0x1f, 0x13, 0xe4, 0xb6, 0x64, 0xaa, + 0x6e, 0x66, 0x1a, 0x5d, 0x51, 0x71, 0x7e, 0x87, 0x1e, 0xe, 0xf8, 0xfa, + 0xf7, 0x7, 0x1, 0xf7, 0x1d, 0xf8, 0xfa, 0x69, 0xa, 0xf7, 0x45, 0xfb, + 0x7, 0x69, 0xa, 0xe, 0xf1, 0x78, 0xd6, 0xe7, 0xd2, 0xf7, 0xab, 0xd2, + 0xe8, 0xd6, 0x1, 0xc3, 0xd8, 0xf9, 0x5, 0xd8, 0x3, 0xf7, 0x19, 0xf7, + 0xf8, 0x15, 0xf7, 0x3c, 0xf7, 0x1d, 0xf7, 0x1e, 0xf7, 0x41, 0xf7, 0x41, + 0xf7, 0x22, 0xfb, 0x1e, 0xfb, 0x3c, 0xfb, 0x3c, 0xfb, 0x22, 0xfb, 0x18, + 0xfb, 0x41, 0xfb, 0x41, 0xfb, 0x1d, 0xf7, 0x18, 0xf7, 0x3c, 0x1e, 0xf8, + 0x2c, 0x56, 0x15, 0x76, 0x83, 0x79, 0x4c, 0x43, 0x1b, 0x5c, 0x57, 0xaa, + 0xf5, 0xbc, 0x93, 0xe8, 0xe6, 0xcb, 0xa4, 0x5b, 0x77, 0x93, 0x1f, 0xdd, + 0x9e, 0x5, 0xaf, 0x7d, 0x60, 0xdf, 0xfb, 0xe, 0x1b, 0xfb, 0x13, 0x4e, + 0x33, 0xfb, 0x11, 0xfb, 0x2f, 0xed, 0x56, 0xe5, 0xcd, 0xde, 0xa9, 0xed, + 0xa9, 0x1f, 0xfc, 0xca, 0xdb, 0x15, 0xfb, 0x65, 0xf7, 0x40, 0xfb, 0x3a, + 0xf7, 0x6b, 0xf7, 0x6b, 0xf7, 0x45, 0xf7, 0x3a, 0xf7, 0x65, 0xf7, 0x65, + 0xfb, 0x45, 0xf7, 0x40, 0xfb, 0x6b, 0xfb, 0x6b, 0xfb, 0x40, 0xfb, 0x40, + 0xfb, 0x65, 0x1e, 0xe, 0xfb, 0x9d, 0xf7, 0xa8, 0xe3, 0xf8, 0x9, 0x77, + 0x1, 0xf7, 0xd9, 0xf7, 0xb2, 0x15, 0xf5, 0x6, 0x81, 0xa6, 0x89, 0xa1, + 0x9b, 0xe9, 0xb9, 0xe0, 0xdf, 0x1a, 0xf7, 0xf, 0xfb, 0x15, 0x8b, 0x76, + 0x6b, 0x21, 0x8a, 0xfb, 0x16, 0x5b, 0x1e, 0xf4, 0x7b, 0x5, 0xbe, 0xa4, + 0xb3, 0x8b, 0x95, 0x1b, 0xaf, 0xab, 0x6d, 0x53, 0x70, 0x1f, 0xfb, 0x3, + 0x7e, 0x78, 0x89, 0x65, 0x80, 0x8, 0x54, 0x7a, 0x68, 0x4a, 0x4f, 0x1a, + 0x51, 0xad, 0x56, 0xe0, 0xaf, 0xb2, 0x98, 0xa4, 0xac, 0x1e, 0x8c, 0x7d, + 0x8c, 0x87, 0x8f, 0x81, 0x8, 0x8c, 0xf7, 0x4a, 0x15, 0x61, 0x82, 0x7e, + 0x4d, 0x4e, 0x1b, 0x73, 0x6d, 0x9c, 0xa4, 0xb5, 0xbf, 0x94, 0xe0, 0x96, + 0x1f, 0xe, 0x3c, 0x58, 0xa, 0xf8, 0x23, 0xd7, 0x4a, 0xa, 0x35, 0xfb, + 0x6d, 0x4a, 0xa, 0xe, 0x58, 0xf7, 0x15, 0x76, 0x1, 0xf4, 0xf7, 0xc6, + 0x15, 0xf8, 0x1, 0xfb, 0x5a, 0xf7, 0x19, 0xf7, 0xcb, 0xfc, 0x86, 0x6, + 0xe, 0x58, 0xf7, 0x59, 0xf7, 0x4, 0x1, 0xdd, 0xf7, 0x59, 0x15, 0xf7, + 0x4, 0xf8, 0xa4, 0xfb, 0x4, 0x7, 0xe, 0xf1, 0x78, 0xd6, 0xf7, 0xa0, + 0xca, 0xf7, 0xa7, 0xd6, 0x1, 0xc2, 0xd8, 0xf8, 0x32, 0xe4, 0xf7, 0xe, + 0xd8, 0x3, 0xf7, 0x94, 0xf7, 0x33, 0x15, 0xde, 0x6, 0xa4, 0xf7, 0x39, + 0x5, 0xa1, 0x6, 0xb5, 0xa4, 0x85, 0x2e, 0xae, 0x1f, 0xa3, 0x49, 0x5, + 0xf3, 0x6, 0x66, 0xdc, 0x71, 0xc7, 0x81, 0x9f, 0x67, 0x99, 0x19, 0x8d, + 0x7, 0xe1, 0x96, 0xb5, 0xbd, 0xb9, 0x1a, 0xf7, 0x15, 0xfb, 0x6, 0x7f, + 0xfb, 0xc, 0x1e, 0x38, 0x6, 0xc3, 0xfb, 0x41, 0x15, 0x9c, 0xf7, 0x1, + 0x5, 0xae, 0x6, 0xd4, 0xba, 0x8f, 0x52, 0x52, 0x4d, 0x8c, 0x40, 0x1f, + 0xfb, 0xa9, 0x6f, 0x15, 0xf7, 0x3c, 0xf7, 0x20, 0xf7, 0x1b, 0xf7, 0x41, + 0xf7, 0x41, 0xf7, 0x1f, 0xfb, 0x1b, 0xfb, 0x3c, 0xfb, 0x3c, 0xfb, 0x1f, + 0xfb, 0x1b, 0xfb, 0x41, 0xfb, 0x41, 0xfb, 0x20, 0xf7, 0x1b, 0xf7, 0x3c, + 0x1e, 0x3e, 0x16, 0xfb, 0x65, 0xf7, 0x43, 0xfb, 0x3d, 0xf7, 0x6b, 0xf7, + 0x6b, 0xf7, 0x42, 0xf7, 0x3d, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x42, 0xf7, + 0x3d, 0xfb, 0x6b, 0xfb, 0x6b, 0xfb, 0x43, 0xfb, 0x3d, 0xfb, 0x65, 0x1e, + 0xe, 0xf8, 0xf0, 0xd5, 0x1, 0xf7, 0xe, 0xf7, 0xfd, 0x3, 0xf7, 0xe, + 0xf8, 0xf0, 0x15, 0xf7, 0xe7, 0x6, 0xa1, 0xd5, 0x5, 0xfb, 0xe8, 0x6, + 0xe, 0xfb, 0x7f, 0xf7, 0x43, 0xd7, 0xf7, 0x20, 0xd7, 0x3, 0xf7, 0x43, + 0xf8, 0xcf, 0x15, 0x3b, 0xcc, 0x4a, 0xdb, 0xdc, 0xcd, 0xcc, 0xdb, 0xdb, + 0x49, 0xc8, 0x3a, 0x3b, 0x4a, 0x4e, 0x3b, 0x1e, 0xd7, 0x8a, 0x15, 0xb2, + 0xab, 0xa7, 0xb1, 0xb1, 0xab, 0x70, 0x63, 0x65, 0x6b, 0x6c, 0x65, 0x65, + 0x6b, 0xaa, 0xb1, 0x1e, 0xe, 0x58, 0x8b, 0xe7, 0xf7, 0x4c, 0xe9, 0xf7, + 0x1c, 0x77, 0x1, 0xf7, 0xaa, 0xf7, 0x0, 0x3, 0xb3, 0x16, 0xf8, 0xdd, + 0xe7, 0xfc, 0xdd, 0x6, 0xf7, 0x4c, 0x4, 0xf7, 0x82, 0xfb, 0x1f, 0xf7, + 0x0, 0xf7, 0x1f, 0xf7, 0x83, 0xe9, 0xfb, 0x83, 0xf7, 0x1c, 0xfb, 0x0, + 0xfb, 0x1c, 0xfb, 0x82, 0x6, 0xe, 0xf7, 0xaf, 0xe4, 0xf7, 0x95, 0xdc, + 0x1, 0xd0, 0xf7, 0xaf, 0x15, 0xf7, 0xd8, 0x6, 0xa2, 0xe4, 0x5, 0xfb, + 0x3c, 0x6, 0xa0, 0x9c, 0xc4, 0xb1, 0x97, 0x96, 0x8, 0xdc, 0xd3, 0xa9, + 0xb3, 0xb5, 0x1a, 0xc5, 0x5d, 0xc7, 0xfb, 0x7, 0xfb, 0x25, 0x75, 0x22, + 0x6f, 0x86, 0x1e, 0xf7, 0x4, 0x7d, 0x5, 0xa7, 0x92, 0x94, 0xb1, 0xb9, + 0x1b, 0xef, 0x30, 0xfb, 0x1, 0x52, 0x30, 0x1f, 0x2a, 0x4e, 0x6c, 0x5d, + 0x80, 0x42, 0x8, 0xe, 0xf7, 0xa3, 0xdd, 0x39, 0xf7, 0x1c, 0xf7, 0xc3, + 0x77, 0x1, 0xe6, 0xf8, 0x26, 0x15, 0x71, 0x8e, 0x9b, 0x22, 0xf7, 0x1b, + 0x1b, 0xf7, 0x2, 0xca, 0xda, 0xc8, 0x1f, 0xb9, 0x61, 0x9e, 0x9f, 0x9c, + 0xcc, 0xa6, 0xc0, 0x1a, 0xb8, 0x6a, 0xd3, 0x21, 0xfb, 0xa, 0x6c, 0x33, + 0x6a, 0x7f, 0x1e, 0xed, 0x79, 0x5, 0xb0, 0x95, 0x9c, 0x9f, 0xa8, 0x1b, + 0x92, 0xad, 0x8a, 0x69, 0x4f, 0x46, 0x92, 0x7d, 0x8d, 0x1f, 0x77, 0x34, + 0x5, 0xab, 0x95, 0xba, 0x83, 0x5d, 0x1a, 0x6d, 0x72, 0x6f, 0x61, 0x60, + 0x86, 0xaa, 0xa7, 0x86, 0x1e, 0xe, 0xf9, 0x5, 0x76, 0xf7, 0x26, 0x77, + 0x1, 0xf7, 0x80, 0xf8, 0xf0, 0x15, 0xf2, 0x52, 0xa, 0xe, 0x73, 0xfb, + 0x4e, 0x76, 0xf7, 0x62, 0xeb, 0x33, 0x76, 0xf8, 0xb6, 0x77, 0x12, 0x13, + 0xb0, 0xf7, 0x70, 0xc3, 0x15, 0x70, 0x9a, 0xa4, 0x60, 0xc8, 0x1b, 0xb7, + 0xa3, 0xa0, 0xb4, 0xb1, 0x1f, 0x13, 0xd0, 0x82, 0x5a, 0x5, 0xf7, 0x14, + 0x6, 0xf7, 0x4, 0xf8, 0xa9, 0x3d, 0xa, 0x4f, 0xfb, 0xa9, 0x5, 0x54, + 0x80, 0x74, 0x22, 0x33, 0x1b, 0x68, 0x5c, 0xa6, 0xcb, 0x1f, 0xce, 0xf7, + 0xee, 0x92, 0xa, 0xfb, 0x30, 0xfd, 0x77, 0x8d, 0xa, 0xe, 0x3c, 0xfb, + 0x3e, 0x76, 0xf9, 0x92, 0xf7, 0x11, 0x1, 0xf7, 0xc3, 0xfb, 0x53, 0x15, + 0xf7, 0x10, 0xf9, 0x92, 0xd9, 0xfd, 0x92, 0xf7, 0xc, 0xf9, 0x92, 0xca, + 0xf7, 0x11, 0xfb, 0xcb, 0x6, 0xfb, 0x29, 0xfb, 0x16, 0x5f, 0xfb, 0x2d, + 0x5a, 0xa4, 0xfb, 0x26, 0xf7, 0x48, 0x1f, 0xe, 0xfb, 0xf9, 0xf7, 0x40, + 0xf7, 0x36, 0x1, 0xf7, 0x2, 0xf7, 0x40, 0x8e, 0xa, 0xa7, 0xf7, 0x36, + 0x81, 0xa, 0xfb, 0x78, 0xce, 0xf7, 0x35, 0x77, 0x1, 0xf7, 0x18, 0xe3, + 0x3, 0xbc, 0x80, 0x15, 0x7b, 0x53, 0x5, 0x8e, 0x9d, 0x9b, 0x8e, 0x95, + 0x1b, 0x99, 0xb4, 0x87, 0x66, 0x5c, 0x48, 0x7f, 0x3c, 0x1f, 0x74, 0x48, + 0x5, 0xf7, 0x2f, 0xf1, 0xae, 0xe6, 0xbc, 0x69, 0xc0, 0x41, 0x70, 0x76, + 0x86, 0x85, 0x7c, 0x1f, 0xe, 0xf7, 0xc4, 0x76, 0xf8, 0x3f, 0x77, 0x1, + 0xf7, 0x62, 0xf7, 0xaf, 0x15, 0xe7, 0x6, 0xe5, 0xf8, 0x3f, 0x5, 0x51, + 0x6, 0x71, 0x6f, 0x55, 0x5f, 0x3f, 0x6b, 0x71, 0x31, 0x18, 0xaf, 0x93, + 0xb2, 0x98, 0xb4, 0xa2, 0x8, 0xe, 0xfb, 0xa2, 0xf7, 0xa8, 0xf2, 0xf7, + 0x93, 0xf2, 0x1, 0xe7, 0xf7, 0x6, 0xf7, 0x39, 0xf7, 0x6, 0x3, 0xe7, + 0xf8, 0x57, 0x15, 0x30, 0xbe, 0x37, 0xf7, 0xf, 0xf7, 0x3f, 0xbb, 0xf7, + 0x60, 0xd8, 0xe9, 0x50, 0xe1, 0xfb, 0xa, 0xfb, 0x2b, 0x4a, 0xfb, 0x43, + 0xfb, 0x3, 0x1e, 0xf7, 0x6, 0x16, 0xc2, 0xa6, 0xf7, 0x14, 0xd8, 0xa8, + 0xab, 0x74, 0x55, 0x5a, 0x6f, 0xfb, 0x15, 0x3f, 0x62, 0x77, 0xad, 0xb1, + 0x1e, 0xe, 0x3c, 0x58, 0xa, 0xf3, 0xd7, 0x4d, 0xa, 0xaa, 0xfb, 0x59, + 0x4d, 0xa, 0xe, 0xf7, 0x5b, 0x92, 0x76, 0xf9, 0x68, 0x77, 0x1, 0xf8, + 0x69, 0xc3, 0x15, 0xf7, 0x31, 0x6, 0x7b, 0x45, 0x5, 0xd7, 0x6, 0x9c, + 0xd1, 0x5, 0xba, 0x6, 0x9b, 0xcd, 0x5, 0x5d, 0x6, 0xbd, 0xf7, 0x70, + 0x5, 0x41, 0x6, 0xfb, 0x67, 0xfb, 0x70, 0x5, 0xdf, 0x16, 0xee, 0xf6, + 0x8d, 0x89, 0x70, 0x22, 0x5, 0xfc, 0x93, 0xfb, 0x21, 0x15, 0xd8, 0x6, + 0xf8, 0xe9, 0xf9, 0x6d, 0x5, 0x3e, 0x6, 0xfc, 0xa5, 0xfb, 0xfd, 0x15, + 0xe2, 0x6, 0xdf, 0xf7, 0xfb, 0x5, 0x55, 0x6, 0x72, 0x74, 0x58, 0x66, + 0x44, 0x70, 0x84, 0x89, 0x18, 0x7a, 0x41, 0xac, 0x92, 0xb0, 0x96, 0xb2, + 0x9e, 0x19, 0xe, 0xf7, 0x5b, 0x7d, 0xd5, 0x51, 0x76, 0xf7, 0xbe, 0xcd, + 0xf8, 0x1, 0x77, 0x12, 0x13, 0x70, 0xf7, 0x18, 0x78, 0x15, 0xdd, 0x6, + 0xf9, 0xe, 0xf9, 0x6d, 0x5, 0x39, 0x6, 0xfc, 0xb8, 0xfb, 0xfd, 0x15, + 0xe7, 0x6, 0xe5, 0xf7, 0xfb, 0x5, 0x51, 0x6, 0x71, 0x74, 0x55, 0x66, + 0x3f, 0x70, 0x83, 0x89, 0x18, 0x79, 0x41, 0xaf, 0x92, 0xb2, 0x96, 0xb4, + 0x9e, 0x19, 0x13, 0xb0, 0xf7, 0xaa, 0xfc, 0xe8, 0x15, 0xf7, 0x97, 0x6, + 0x9e, 0xd5, 0x91, 0xa, 0x9c, 0x9a, 0x94, 0x95, 0x96, 0x92, 0x8, 0xf7, + 0x1, 0xd9, 0x9a, 0xb3, 0xaf, 0x1a, 0xbb, 0x66, 0xbe, 0x2f, 0xfb, 0x8, + 0x7a, 0x32, 0x74, 0x87, 0x1e, 0xe4, 0x7f, 0x5, 0xa3, 0x91, 0x92, 0xad, + 0xb0, 0x1b, 0xa5, 0x97, 0x79, 0x7c, 0x70, 0x70, 0x76, 0x3e, 0x4e, 0x1f, + 0x43, 0x51, 0x6d, 0x6b, 0x82, 0x4e, 0x8, 0xe, 0xf7, 0x5b, 0x92, 0x76, + 0xf7, 0xfa, 0xce, 0xf7, 0xbf, 0x77, 0x12, 0xf7, 0xb4, 0xe6, 0x45, 0xe5, + 0x13, 0xf0, 0xf8, 0x6f, 0xc3, 0x15, 0xf7, 0x38, 0x6, 0x7a, 0x45, 0x5, + 0xdb, 0x6, 0x9e, 0xd1, 0x5, 0xbb, 0x6, 0x9c, 0xcd, 0x5, 0x5b, 0x6, + 0xbf, 0xf7, 0x70, 0x5, 0x3e, 0x6, 0xfb, 0x72, 0xfb, 0x70, 0x5, 0xe3, + 0x16, 0xf3, 0xf6, 0x8d, 0x89, 0x70, 0x22, 0x5, 0xfc, 0xa2, 0xfb, 0x21, + 0x15, 0xdd, 0x6, 0xf9, 0x5, 0xf9, 0x6d, 0x5, 0x3b, 0x6, 0xfd, 0x28, + 0xfb, 0x96, 0x15, 0x76, 0x8e, 0x98, 0x34, 0xf7, 0x8, 0x1b, 0xe9, 0xc1, + 0xcc, 0xbe, 0x1f, 0xb3, 0x67, 0x99, 0x9c, 0x1a, 0x13, 0xe8, 0x98, 0xc3, + 0x93, 0xc8, 0x1a, 0xb0, 0x6e, 0xc5, 0x30, 0x26, 0x71, 0x42, 0x6f, 0x81, + 0x1e, 0xdf, 0x7d, 0x5, 0xaa, 0x94, 0x99, 0x9b, 0xa4, 0x1b, 0x90, 0xa9, + 0x8a, 0x6f, 0x59, 0x50, 0x91, 0x7e, 0x8c, 0x1f, 0x7a, 0x44, 0x5, 0x13, + 0xf0, 0xa7, 0x92, 0xb3, 0x85, 0x65, 0x1a, 0x72, 0x76, 0x73, 0x67, 0x66, + 0x87, 0xa6, 0xa2, 0x87, 0x1e, 0xe, 0x73, 0xfb, 0x57, 0xf2, 0xf8, 0x54, + 0x77, 0xcb, 0xf7, 0x18, 0x1, 0xc0, 0xf7, 0x1a, 0x3, 0xf8, 0x40, 0xad, + 0x15, 0xfb, 0xa, 0x70, 0x43, 0x83, 0x60, 0x1b, 0x3e, 0x75, 0xb3, 0xab, + 0xb0, 0xa1, 0xa2, 0xe1, 0xd4, 0x1f, 0xf7, 0x4, 0xeb, 0xb5, 0xbb, 0x9a, + 0xee, 0x8, 0xfb, 0x15, 0x6, 0x80, 0x4c, 0x77, 0x7b, 0x39, 0x48, 0x8, + 0xfb, 0xa, 0x2a, 0x58, 0x55, 0x3c, 0x1a, 0x36, 0xd1, 0x31, 0xf7, 0x35, + 0xf7, 0x50, 0xd0, 0xf7, 0x1c, 0xd1, 0x9d, 0x1e, 0xfb, 0x72, 0xf8, 0x19, + 0x15, 0x9b, 0xa, 0xa8, 0xf7, 0x18, 0x65, 0xa, 0x34, 0xa, 0xd7, 0xf7, + 0x27, 0x1, 0xf8, 0x7d, 0xf9, 0xa9, 0x15, 0xea, 0x6, 0x4d, 0xf7, 0x27, + 0x91, 0xa, 0xfc, 0x3, 0xfe, 0x3c, 0x27, 0xa, 0x34, 0xa, 0xf7, 0x73, + 0x77, 0x1, 0xf8, 0x51, 0xf9, 0xa8, 0x15, 0xee, 0x6, 0xf7, 0x3d, 0xf7, + 0x28, 0x5, 0xfb, 0x33, 0x6, 0xfc, 0xaa, 0xfe, 0x3c, 0x27, 0xa, 0x34, + 0xa, 0xd6, 0xf7, 0x28, 0x1, 0xf7, 0xd5, 0xf9, 0xa8, 0x15, 0xf7, 0x9, + 0x6, 0xe0, 0xe1, 0xb1, 0x35, 0x5, 0xec, 0x6, 0x4f, 0xf7, 0x28, 0x66, + 0xa, 0xfc, 0x53, 0xfe, 0x3c, 0x27, 0xa, 0x34, 0xa, 0xe3, 0xf7, 0xe, + 0x39, 0xdd, 0x12, 0x13, 0xe8, 0xf7, 0xed, 0xf9, 0xb2, 0x15, 0xcc, 0x6, + 0x98, 0x90, 0x94, 0xa9, 0xab, 0x1b, 0xaa, 0xa0, 0x82, 0x80, 0x9e, 0x1f, + 0x13, 0xf0, 0x80, 0xa0, 0x9e, 0x82, 0xa7, 0x1b, 0xbb, 0xb6, 0xb4, 0xdc, + 0x98, 0x1f, 0x49, 0x6, 0x72, 0x83, 0x84, 0x7b, 0x77, 0x1b, 0x74, 0x78, + 0x94, 0x94, 0x74, 0x1f, 0x96, 0x73, 0x71, 0x95, 0x67, 0x1b, 0x46, 0x75, + 0x43, 0x58, 0x80, 0x1f, 0xfb, 0xd9, 0xfd, 0xb2, 0x27, 0xa, 0x34, 0xa, + 0xde, 0xf7, 0xb, 0x1, 0xf7, 0xed, 0xf9, 0xb0, 0x8f, 0xa, 0xa4, 0xf7, + 0xb, 0x5, 0xfb, 0xd, 0x6, 0xf7, 0x4a, 0xfb, 0xb, 0x8f, 0xa, 0xa5, + 0xf7, 0xb, 0x7a, 0xa, 0xfc, 0xc3, 0xfe, 0x27, 0x27, 0xa, 0x34, 0xa, + 0xf7, 0x58, 0xc0, 0x1, 0x9f, 0xf9, 0x3e, 0x3, 0x9f, 0x16, 0x25, 0xa, + 0x29, 0xf8, 0xdb, 0x15, 0x56, 0xb6, 0x5f, 0xc0, 0xbe, 0xb6, 0xb5, 0xc2, + 0xc3, 0x61, 0xb1, 0x57, 0x54, 0x62, 0x64, 0x54, 0x1e, 0xbf, 0x16, 0xa3, + 0x9e, 0x9c, 0xa4, 0xa2, 0x9f, 0x7b, 0x72, 0x72, 0x77, 0x78, 0x74, 0x73, + 0x77, 0x9e, 0xa4, 0x1e, 0xe, 0xf8, 0x1, 0x8b, 0xf7, 0xd, 0xc6, 0xf7, + 0xc, 0x98, 0xf7, 0xd, 0xf7, 0x39, 0xf7, 0xb, 0x1, 0x90, 0x16, 0xf7, + 0x2c, 0x6, 0xf1, 0xf7, 0x48, 0x5, 0xf7, 0x83, 0x6, 0x66, 0xfb, 0x48, + 0x5, 0xf8, 0x99, 0x50, 0xa, 0xfc, 0x10, 0x6, 0xb3, 0xf7, 0x54, 0x5, + 0xf7, 0xdd, 0x50, 0xa, 0xfb, 0xdd, 0x6, 0xaf, 0xf7, 0x39, 0x5, 0xf7, + 0xf3, 0x6, 0xa4, 0xf7, 0xb, 0x5, 0xfd, 0x39, 0x6, 0x2c, 0xfc, 0x36, + 0x15, 0xf7, 0x3e, 0xf7, 0xbf, 0x5, 0xe2, 0x6, 0x4d, 0xfb, 0xbf, 0x5, + 0xe, 0xe2, 0xfb, 0x63, 0x76, 0xf7, 0x27, 0xf7, 0x4b, 0xfb, 0x11, 0xf7, + 0x11, 0xf8, 0x90, 0xf7, 0x13, 0x12, 0xf6, 0xf7, 0x2c, 0xf7, 0x38, 0xed, + 0x13, 0xbc, 0xf7, 0x88, 0xfb, 0x36, 0x15, 0x70, 0x51, 0x5, 0x83, 0xbe, + 0xc7, 0x8b, 0x93, 0x1b, 0xf1, 0xde, 0xaa, 0xd9, 0xc6, 0x5b, 0xa7, 0x51, + 0x91, 0x1f, 0x8d, 0x7, 0xf7, 0x61, 0x92, 0xe6, 0xf7, 0x23, 0xb1, 0xf3, + 0xfb, 0x2f, 0xa2, 0x18, 0xfb, 0x9, 0x64, 0x37, 0x69, 0x4e, 0x1b, 0x27, + 0x58, 0xe6, 0xef, 0xf7, 0xb, 0x80, 0xa, 0x68, 0x92, 0x1f, 0xf7, 0x28, + 0x99, 0x5, 0xf7, 0x3e, 0x76, 0xfb, 0x15, 0xce, 0xfb, 0x1c, 0x1b, 0xfb, + 0x84, 0xfb, 0x30, 0xfb, 0x5e, 0xfb, 0x86, 0xfb, 0x31, 0xcd, 0xfb, 0x33, + 0xf7, 0x67, 0x1f, 0x8c, 0x87, 0x89, 0x87, 0x1b, 0x5b, 0x82, 0x73, 0x56, + 0x5, 0x13, 0xdc, 0x8e, 0x99, 0x9d, 0x8e, 0xa0, 0x1b, 0xbd, 0x9a, 0x77, + 0x79, 0x5c, 0x2e, 0x8b, 0x7c, 0x7e, 0x5c, 0x8e, 0x8c, 0x80, 0x1f, 0xe, + 0x41, 0xa, 0xbb, 0x95, 0xa, 0xd7, 0x16, 0x2c, 0xa, 0xf7, 0xa2, 0xbb, + 0x15, 0xea, 0x6, 0x4d, 0xf7, 0x2b, 0x5b, 0xa, 0xe, 0x41, 0xa, 0xf7, + 0x5b, 0x77, 0x1, 0xd7, 0x16, 0x2c, 0xa, 0xf7, 0x4f, 0xbb, 0x15, 0xe9, + 0x6, 0xf7, 0x32, 0xf7, 0x2b, 0x53, 0xa, 0xe, 0x41, 0xa, 0xbb, 0x95, + 0xa, 0xd7, 0xf9, 0x3d, 0x3, 0xd7, 0x16, 0x2c, 0xa, 0xe4, 0xbb, 0x15, + 0xf7, 0x9, 0x6, 0xe0, 0xe4, 0xb1, 0x32, 0x5, 0xec, 0x6, 0x4f, 0xf7, + 0x2b, 0x66, 0xa, 0xe, 0xab, 0x8b, 0xf7, 0xe, 0xf7, 0x5c, 0xf7, 0x10, + 0xf7, 0x3c, 0xf7, 0xf, 0x1, 0xf7, 0xec, 0xf9, 0xad, 0x15, 0xf7, 0xd, + 0x5f, 0xa, 0xf7, 0xc, 0x4f, 0xa, 0xfb, 0xc, 0x6, 0xfc, 0x87, 0xfe, + 0x27, 0x15, 0x2c, 0xa, 0xe, 0x4e, 0xa, 0xd0, 0x95, 0xa, 0xf7, 0xbd, + 0xf9, 0xa5, 0x15, 0xe5, 0x6, 0x50, 0x67, 0xa, 0xfb, 0x14, 0x6, 0xfb, + 0x1c, 0xfe, 0x3c, 0x15, 0xf7, 0x3f, 0xf9, 0x74, 0x5, 0x5e, 0xa, 0xfb, + 0x40, 0xfd, 0x74, 0x5, 0xe, 0x4e, 0xa, 0xf7, 0x70, 0x77, 0x1, 0xcb, + 0x16, 0x46, 0xa, 0x90, 0xbc, 0x15, 0xf6, 0x6, 0xf7, 0x49, 0x67, 0xa, + 0xfb, 0x3f, 0x6, 0xe, 0x4e, 0xa, 0xd0, 0x95, 0xa, 0xf7, 0xf, 0xf9, + 0xa5, 0x15, 0xf7, 0x11, 0x6, 0xe6, 0xe4, 0xb4, 0x32, 0x5, 0xf3, 0x6, + 0x4b, 0xf7, 0x2b, 0x3d, 0xa, 0xfb, 0x6b, 0xfe, 0x3c, 0x15, 0x46, 0xa, + 0xe, 0x4e, 0xa, 0xd8, 0xf7, 0xe, 0x1, 0xf7, 0x1f, 0xf9, 0xad, 0x6a, + 0xa, 0xf7, 0x4b, 0xfb, 0xe, 0x6a, 0xa, 0xfb, 0xc8, 0xfe, 0x27, 0x15, + 0x46, 0xa, 0xe, 0x57, 0xa, 0xd3, 0x16, 0xf7, 0x99, 0x6, 0xf7, 0x7e, + 0xf7, 0x66, 0xf7, 0x22, 0xf7, 0xa7, 0xf7, 0x71, 0xfb, 0x1a, 0xdb, 0xfb, + 0x6c, 0x1f, 0xfb, 0x59, 0x6, 0x49, 0xfb, 0xc3, 0x5, 0x3d, 0x6, 0x73, + 0xfb, 0x4, 0x5, 0xd8, 0x6, 0xf7, 0x5, 0xfb, 0x4d, 0x15, 0xb2, 0xf7, + 0x4d, 0x5, 0xf7, 0x32, 0x6, 0xa3, 0xf7, 0x4, 0x5, 0xfb, 0x31, 0x6, + 0xb3, 0xf7, 0x4d, 0x5, 0xe1, 0x6, 0xd9, 0xf5, 0x84, 0xfb, 0x44, 0xfb, + 0x8a, 0xfb, 0x15, 0x56, 0xfb, 0x3d, 0x1f, 0xe, 0x68, 0xa, 0xf9, 0x73, + 0x77, 0x1, 0x8a, 0xa, 0xf2, 0xf8, 0x82, 0x5c, 0xa, 0xf7, 0x59, 0xfc, + 0x82, 0x5, 0x9b, 0xa, 0xf7, 0x2d, 0xf9, 0x73, 0x3d, 0xa, 0x25, 0xfc, + 0x80, 0x51, 0xa, 0xfb, 0x5a, 0xf8, 0x80, 0x3d, 0xa, 0xf7, 0x12, 0xca, + 0x15, 0xca, 0x6, 0x8f, 0x99, 0x95, 0xaa, 0xaa, 0x89, 0xab, 0x89, 0x9e, + 0x81, 0x9c, 0x81, 0x9e, 0x81, 0x9b, 0x81, 0xab, 0x8d, 0xba, 0x8d, 0xb6, + 0xb2, 0x97, 0xdc, 0x8, 0x4a, 0x63, 0xa, 0x77, 0x78, 0x93, 0x94, 0x76, + 0x1f, 0x96, 0x73, 0x70, 0x96, 0x67, 0x1b, 0x47, 0x75, 0x43, 0x58, 0x82, + 0x1f, 0xe, 0x49, 0xa, 0xf8, 0x9e, 0xf9, 0xa4, 0x75, 0xa, 0xfb, 0xca, + 0x2b, 0xa, 0xf7, 0x23, 0x78, 0xf7, 0x14, 0xf9, 0xcf, 0x77, 0x36, 0xa, + 0xf8, 0x54, 0xf9, 0xa4, 0x15, 0xea, 0x6, 0xf7, 0x37, 0x5d, 0xa, 0xfb, + 0x2e, 0x6, 0xfc, 0x51, 0x2b, 0xa, 0x49, 0xa, 0xf7, 0xef, 0xf9, 0xa4, + 0x15, 0xf7, 0xb, 0x6, 0xe2, 0xe5, 0xb3, 0x31, 0x5, 0xee, 0x6, 0x4e, + 0xf7, 0x2c, 0x91, 0xa, 0xfc, 0x19, 0x2b, 0xa, 0xf7, 0x23, 0x78, 0xf7, + 0x13, 0xf9, 0x70, 0xde, 0x36, 0xa, 0xf8, 0xa, 0xf9, 0xb1, 0x15, 0xcb, + 0x6, 0x99, 0x8f, 0x95, 0xa8, 0xa9, 0x1b, 0xac, 0xa0, 0x82, 0x81, 0x9f, + 0x1f, 0x80, 0x9e, 0x9d, 0x81, 0xa4, 0x1b, 0xbb, 0xb5, 0xb4, 0xdd, 0x97, + 0x1f, 0x4a, 0x63, 0xa, 0x76, 0x79, 0x94, 0x94, 0x76, 0x1f, 0x96, 0x74, + 0x70, 0x95, 0x66, 0x1b, 0x47, 0x75, 0x43, 0x57, 0x81, 0x1f, 0xfb, 0x9f, + 0xfc, 0x97, 0x21, 0xa, 0xe, 0x8c, 0xa, 0xf8, 0x8f, 0xf7, 0x12, 0x36, + 0xa, 0xf6, 0xf7, 0xae, 0x21, 0xa, 0xf7, 0xc, 0xf8, 0x92, 0x15, 0xf7, + 0xf, 0x71, 0xa, 0xfb, 0x10, 0x6, 0xf7, 0x4d, 0xfb, 0xf, 0x15, 0xf7, + 0x10, 0x71, 0xa, 0xfb, 0x10, 0x6, 0xe, 0x58, 0xa1, 0x76, 0xf8, 0x8c, + 0x77, 0x1, 0xc5, 0xec, 0x15, 0xf7, 0x0, 0x2c, 0xf7, 0x46, 0xf7, 0x31, + 0xf7, 0x49, 0xfb, 0x32, 0xf7, 0x2, 0xec, 0xfb, 0x49, 0xf7, 0x31, 0xf7, + 0x47, 0xf7, 0x2f, 0x20, 0xea, 0xfb, 0x47, 0xfb, 0x31, 0xfb, 0x48, 0xf7, + 0x31, 0xfb, 0x2, 0x2b, 0xf7, 0x49, 0xfb, 0x30, 0x5, 0xe, 0xf7, 0x23, + 0x85, 0x76, 0xf9, 0x98, 0x77, 0x1, 0xe0, 0xf7, 0xb, 0xf8, 0x21, 0xf7, + 0x3, 0x3, 0xf8, 0xea, 0xf8, 0x9c, 0x15, 0x98, 0x76, 0x94, 0x55, 0x65, + 0x1a, 0xfb, 0xf, 0x23, 0xfb, 0x2b, 0xfb, 0x32, 0x5a, 0x65, 0x8b, 0x94, + 0x7b, 0x1e, 0x4f, 0xca, 0x15, 0x80, 0x97, 0x82, 0xb2, 0xb6, 0x1a, 0xf7, + 0x14, 0xf3, 0xf7, 0x3b, 0xf7, 0x31, 0xc3, 0xb4, 0x89, 0x84, 0x93, 0x1e, + 0xfc, 0x93, 0xfc, 0xc4, 0x15, 0xd1, 0x57, 0xd7, 0xde, 0x5, 0x6c, 0xc0, + 0xc5, 0x84, 0xc0, 0x1b, 0xf7, 0xac, 0xf7, 0x3, 0xf7, 0x62, 0xf7, 0x4b, + 0xc4, 0x87, 0xe7, 0x64, 0xc7, 0x1f, 0xd3, 0xd8, 0x46, 0xbf, 0x44, 0x3e, + 0x5, 0xa8, 0x58, 0x4e, 0x97, 0x4e, 0x1b, 0xfb, 0xc1, 0x31, 0xfb, 0x8c, + 0xfb, 0x36, 0x59, 0x95, 0x3b, 0xb4, 0x4f, 0x1f, 0xe, 0x2d, 0xa, 0xf7, + 0x30, 0xbc, 0x15, 0xed, 0x6, 0x4a, 0xf7, 0x2c, 0x81, 0xa, 0x2d, 0xa, + 0xb6, 0xc1, 0x60, 0xa, 0xe2, 0x78, 0xf7, 0x14, 0xf9, 0x3c, 0xf7, 0x27, + 0x24, 0xa, 0x68, 0xc1, 0x45, 0xa, 0xe2, 0x78, 0xf7, 0x14, 0xf9, 0x6, + 0x77, 0xdb, 0xf7, 0xc, 0x24, 0xa, 0x85, 0xc7, 0x3a, 0xa, 0xab, 0xa0, + 0x76, 0xf9, 0x74, 0x77, 0xf7, 0x70, 0x77, 0x1, 0x64, 0xa, 0xf7, 0xa5, + 0xf7, 0xcc, 0xf8, 0x63, 0x43, 0xa, 0xfb, 0x5d, 0xfb, 0xcf, 0xfb, 0x10, + 0xf7, 0xcf, 0x5a, 0xa, 0xf7, 0x51, 0xfc, 0x55, 0x5, 0xcb, 0xf8, 0x86, + 0x15, 0xe4, 0x6, 0xf7, 0x2a, 0xf7, 0x2b, 0x92, 0xa, 0xe, 0xab, 0xa0, + 0x76, 0xf7, 0x1d, 0xf7, 0xc, 0xf7, 0x60, 0xf7, 0xc, 0xf7, 0x1d, 0x77, + 0x1, 0xf8, 0xcc, 0xf7, 0x28, 0x3, 0xd7, 0x16, 0xf7, 0x29, 0x6, 0xa8, + 0xf7, 0x1d, 0x5, 0xeb, 0x6, 0xf7, 0x52, 0xf7, 0x44, 0xba, 0xf7, 0x61, + 0xf7, 0x48, 0xfb, 0x3e, 0x97, 0x57, 0x1f, 0xfb, 0x27, 0x6, 0xa8, 0xf7, + 0x1d, 0x53, 0xa, 0xbf, 0xfc, 0x61, 0x15, 0xb7, 0xf7, 0x60, 0x5, 0xf6, + 0x6, 0xd7, 0xc9, 0x8d, 0x41, 0xfb, 0xc, 0xfb, 0x1a, 0x7f, 0xfb, 0x1, + 0x1f, 0xe, 0x73, 0x7d, 0xf7, 0x8, 0x38, 0x76, 0xf9, 0x7, 0xf5, 0x12, + 0xf8, 0x94, 0xf7, 0x25, 0x13, 0x70, 0xd0, 0x89, 0x15, 0xf7, 0x2e, 0x6, + 0xf2, 0xf8, 0x56, 0x5, 0xe1, 0x9e, 0xa0, 0xe6, 0xe2, 0x1b, 0xb4, 0x97, + 0x7b, 0x74, 0x73, 0x77, 0x6d, 0x79, 0x77, 0x1f, 0x61, 0x5b, 0x79, 0x61, + 0x63, 0x1a, 0x5e, 0xa4, 0x5e, 0xb2, 0x55, 0x1e, 0x9c, 0x72, 0xa2, 0x65, + 0x6e, 0x1a, 0x13, 0xb0, 0x72, 0x7c, 0x78, 0x5c, 0x65, 0x7c, 0x9f, 0x9b, + 0x7e, 0x1e, 0xfb, 0x1, 0x53, 0x5, 0x66, 0xa7, 0xcf, 0x50, 0xef, 0x1b, + 0xf7, 0x1c, 0xbd, 0xd1, 0xdc, 0xc1, 0x73, 0xc7, 0x68, 0xb6, 0x1f, 0x6a, + 0xb2, 0x7b, 0xa0, 0xa3, 0x1a, 0xa2, 0x98, 0x9b, 0xa0, 0xaa, 0x1e, 0xac, + 0xbb, 0xaf, 0xcf, 0xc4, 0x1a, 0xc4, 0x5c, 0xc0, 0xfb, 0x1a, 0xfb, 0x63, + 0x5a, 0xfb, 0x0, 0xfb, 0x43, 0x61, 0x1e, 0xe, 0x42, 0xa, 0xf8, 0x8c, + 0xf7, 0x2c, 0x76, 0xa, 0xf8, 0x1a, 0x89, 0x20, 0xa, 0x13, 0xb0, 0x2a, + 0xa, 0x70, 0xf7, 0xf2, 0x15, 0xf2, 0x6, 0x48, 0xf7, 0x2c, 0x93, 0xa, + 0xe, 0x42, 0xa, 0xf7, 0xf1, 0xf3, 0xf7, 0x5f, 0x77, 0x12, 0xc2, 0xf7, + 0x2b, 0x13, 0x78, 0xf7, 0xe8, 0xf8, 0xea, 0x15, 0xf5, 0x6, 0xf7, 0x49, + 0x5d, 0xa, 0xfb, 0x3e, 0x6, 0x48, 0xfd, 0x84, 0x20, 0xa, 0x13, 0xb8, + 0x2e, 0xa, 0x42, 0xa, 0xf8, 0x8c, 0xf7, 0x2c, 0x76, 0xa, 0xf7, 0x62, + 0xf8, 0xea, 0x15, 0xf7, 0x11, 0x6, 0xe7, 0xe5, 0xb4, 0x31, 0x5, 0xf3, + 0x6, 0x4b, 0xf7, 0x2c, 0x92, 0xa, 0xa7, 0xfd, 0x84, 0x20, 0xa, 0x13, + 0xb0, 0x2e, 0xa, 0x42, 0xa, 0xf8, 0xc5, 0xdd, 0x89, 0x77, 0x12, 0xc2, + 0xf7, 0x2b, 0x13, 0xa8, 0xf7, 0x7f, 0xf8, 0xf7, 0x15, 0xd2, 0x6, 0x90, + 0x9a, 0x95, 0xa7, 0xad, 0x8c, 0xaa, 0x8c, 0xa6, 0x7f, 0xa6, 0x80, 0x8, + 0x82, 0xa2, 0xa0, 0x82, 0xa1, 0x1b, 0xbf, 0xba, 0xb4, 0xdc, 0x99, 0x1f, + 0x43, 0x6, 0x72, 0x83, 0x83, 0x7b, 0x75, 0x1b, 0x77, 0x79, 0x91, 0x93, + 0x76, 0x1f, 0x13, 0x58, 0x97, 0x70, 0x6b, 0x98, 0x5e, 0x1b, 0x40, 0x72, + 0x43, 0x57, 0x80, 0x1f, 0xf7, 0x2f, 0xfc, 0xf9, 0x20, 0xa, 0x13, 0xa8, + 0x2e, 0xa, 0x3c, 0x7d, 0xf6, 0x2c, 0xea, 0x12, 0xc2, 0xf7, 0x22, 0x13, + 0x60, 0xf7, 0x6d, 0xf8, 0xf3, 0x6d, 0xa, 0xf7, 0x56, 0xfb, 0xe, 0x6d, + 0xa, 0x40, 0xfd, 0x6f, 0x20, 0xa, 0x13, 0xa0, 0x2e, 0xa, 0x42, 0xa, + 0xf7, 0xba, 0xf7, 0x33, 0x23, 0xf3, 0xad, 0xf7, 0x57, 0x56, 0x77, 0x12, + 0xc2, 0xf7, 0x23, 0x13, 0xaa, 0xf7, 0xb3, 0xf9, 0x3a, 0x15, 0x56, 0xba, + 0x5f, 0xc4, 0xc3, 0xb9, 0xb5, 0xc2, 0xc2, 0x5d, 0xb6, 0x53, 0x4f, 0x5f, + 0x60, 0x54, 0x1e, 0xc3, 0x16, 0x13, 0x56, 0xa4, 0xa0, 0x9f, 0xa6, 0xa4, + 0xa0, 0x79, 0x70, 0x73, 0x76, 0x77, 0x72, 0x70, 0x76, 0x9f, 0xa3, 0x1e, + 0xba, 0xfd, 0x3c, 0x32, 0xa, 0x99, 0xca, 0x9a, 0xc0, 0x1e, 0x99, 0xa, + 0xab, 0xb1, 0x1a, 0xab, 0x7b, 0xf7, 0x4, 0xfb, 0x59, 0x27, 0xfb, 0x4, + 0x6b, 0xfb, 0xd, 0x60, 0x1e, 0xf7, 0x28, 0x7f, 0x5, 0xba, 0x98, 0xb1, + 0x99, 0xb8, 0x1b, 0xcf, 0xa6, 0x5b, 0x54, 0x71, 0x1f, 0x6c, 0x80, 0x55, + 0x88, 0x4f, 0x84, 0x8, 0x42, 0x87, 0xfb, 0x2f, 0x7d, 0xfb, 0x33, 0x1a, + 0x28, 0xd6, 0x52, 0xe1, 0x1e, 0x13, 0xaa, 0xba, 0xcb, 0x9d, 0xc2, 0xbf, + 0x1f, 0x8e, 0x70, 0x8b, 0x82, 0x93, 0x72, 0x8, 0x99, 0xf7, 0x7b, 0x15, + 0x31, 0xa, 0x91, 0xe6, 0x98, 0x1f, 0xe, 0xf7, 0x92, 0x7d, 0xf7, 0x1, + 0xf7, 0x11, 0xe3, 0xf7, 0x1b, 0xf2, 0x1, 0xc3, 0xf7, 0x17, 0xf8, 0xef, + 0xf7, 0x19, 0x3, 0xf7, 0x7, 0xf8, 0x1e, 0x15, 0xf7, 0x1f, 0x7d, 0x5, + 0xa4, 0x94, 0x99, 0xb1, 0xd0, 0x1b, 0xce, 0xa2, 0x60, 0x50, 0x7f, 0x1f, + 0x7b, 0x86, 0x7c, 0x84, 0xfb, 0x0, 0x82, 0x8, 0x35, 0x83, 0xfb, 0x23, + 0x86, 0xfb, 0x31, 0x1a, 0x28, 0xd3, 0x4a, 0xec, 0xf7, 0x15, 0xd0, 0xe7, + 0xac, 0xa3, 0x1e, 0x6e, 0x99, 0xb8, 0x2b, 0xf7, 0x22, 0x1b, 0xf7, 0x36, + 0xcf, 0xf7, 0x11, 0xab, 0x9e, 0x1f, 0xfb, 0x17, 0x9f, 0x5, 0x46, 0x64, + 0x50, 0x8b, 0x7d, 0x1b, 0x4f, 0x5a, 0xbb, 0xd9, 0x88, 0x1f, 0xf8, 0x7, + 0x6, 0x94, 0xb4, 0x8c, 0xb0, 0x9a, 0x1a, 0xf7, 0x1f, 0x37, 0xe9, 0xfb, + 0x1b, 0x64, 0x3f, 0x85, 0x4e, 0x4b, 0x1e, 0x9f, 0x7f, 0x6d, 0xba, 0xfb, + 0x12, 0x1b, 0xfb, 0x1b, 0x39, 0x4d, 0x31, 0x72, 0x1f, 0xf8, 0x4a, 0x35, + 0x15, 0xf7, 0x5, 0xa4, 0xd7, 0xa1, 0xb1, 0x1b, 0xcb, 0xb3, 0x5b, 0x34, + 0x85, 0x1f, 0xfc, 0x15, 0x52, 0x15, 0x43, 0x7c, 0x56, 0x37, 0x3a, 0x1b, + 0x55, 0x7c, 0xab, 0xa2, 0xbb, 0xbf, 0xad, 0xf7, 0x3a, 0x9e, 0x1f, 0xe, + 0x3c, 0xfb, 0x63, 0x76, 0xf9, 0x2c, 0xf7, 0x2, 0x1, 0xda, 0xf7, 0x23, + 0xe4, 0xe2, 0x3, 0xf7, 0x8a, 0x67, 0x15, 0x72, 0x55, 0x5, 0xa0, 0x8e, + 0xd0, 0x9b, 0x5d, 0x1a, 0x56, 0x2c, 0x8d, 0x61, 0x8c, 0x1e, 0x71, 0x52, + 0x5, 0x88, 0x9e, 0xa4, 0x8a, 0x9e, 0x1b, 0xa6, 0xf7, 0x34, 0x8b, 0xf7, + 0x3, 0x97, 0x89, 0xc7, 0x3c, 0x98, 0x1f, 0x8d, 0x7, 0xa7, 0x8c, 0xbc, + 0x90, 0xbd, 0xad, 0xa3, 0x9a, 0xc5, 0xb6, 0xae, 0xed, 0xfb, 0x20, 0xa3, + 0x18, 0x33, 0x6c, 0x50, 0x7c, 0x6f, 0x1b, 0x64, 0x61, 0xb1, 0xd2, 0xe3, + 0xb4, 0xf7, 0x2c, 0xf7, 0x4, 0xd7, 0x93, 0x46, 0x77, 0x8e, 0x1f, 0xf7, + 0x1d, 0x9a, 0x5, 0xe3, 0x84, 0x4f, 0xeb, 0xfb, 0x28, 0x1b, 0xfb, 0x3f, + 0xfb, 0x1a, 0xfb, 0x1e, 0xfb, 0x68, 0x22, 0xc9, 0x2d, 0xdd, 0x7a, 0x1f, + 0x89, 0x96, 0xb2, 0x83, 0x88, 0x1b, 0x89, 0x8a, 0x7f, 0x89, 0x81, 0x88, + 0x8, 0xe, 0x3c, 0xf7, 0x71, 0xe3, 0xf7, 0xb5, 0xf7, 0x2c, 0x1, 0xd1, + 0xf7, 0x21, 0xf7, 0x8c, 0xf7, 0x1a, 0x3, 0xf7, 0x67, 0xf7, 0x71, 0x23, + 0xa, 0x35, 0xf7, 0xb5, 0x15, 0xef, 0x6, 0x4a, 0xf7, 0x2c, 0x47, 0xa, + 0xe, 0x3c, 0xf7, 0x71, 0xe3, 0xf8, 0x4d, 0x77, 0x1, 0xce, 0xf7, 0x2c, + 0xf7, 0x7e, 0xf7, 0x23, 0x3, 0xf7, 0xd8, 0xf8, 0xea, 0x15, 0xf3, 0x6, + 0xf7, 0x46, 0x5d, 0xa, 0xfb, 0x3c, 0x6, 0xfb, 0x77, 0xfc, 0xa5, 0x23, + 0xa, 0xe, 0x3c, 0x7d, 0xf2, 0xf7, 0x18, 0xe3, 0xf7, 0xb5, 0xf7, 0x2c, + 0x7d, 0xa, 0xf7, 0x4c, 0xf8, 0xea, 0x8f, 0xa, 0xe5, 0xe5, 0xb3, 0x31, + 0x5, 0xf1, 0x6, 0x4c, 0xf7, 0x2c, 0x54, 0xa, 0xfb, 0x12, 0xfc, 0xa5, + 0x23, 0xa, 0xe, 0x3c, 0x7d, 0xf1, 0xf7, 0x17, 0xe1, 0x1, 0xd1, 0xf7, + 0x23, 0xf7, 0x8b, 0xf7, 0x1a, 0x3, 0xf7, 0x6b, 0xf8, 0xf3, 0x15, 0xf7, + 0x13, 0x6e, 0xa, 0xfb, 0x13, 0x6, 0xf7, 0x52, 0xfb, 0xe, 0x15, 0xf7, + 0x13, 0x6e, 0xa, 0xfb, 0x12, 0x6, 0xfb, 0x8b, 0xfc, 0x90, 0x23, 0xa, + 0xe, 0x48, 0xa, 0xf8, 0xeb, 0x95, 0xa, 0xd0, 0x16, 0x3c, 0xa, 0xc7, + 0xd0, 0x15, 0xe7, 0x6, 0x4f, 0x67, 0xa, 0xfb, 0x18, 0x6, 0xe, 0x48, + 0xa, 0xf9, 0x82, 0x77, 0x1, 0xf7, 0x4a, 0xf8, 0xeb, 0x15, 0xf5, 0x6, + 0xf7, 0x48, 0x67, 0xa, 0xfb, 0x3e, 0x6, 0xfb, 0x79, 0xfd, 0x82, 0x15, + 0x3c, 0xa, 0xe, 0x48, 0xa, 0xf8, 0xeb, 0x95, 0xa, 0xc9, 0xf8, 0xeb, + 0x15, 0xf7, 0x15, 0x6, 0xe9, 0xe4, 0xb5, 0x32, 0x5, 0xf6, 0x6, 0x49, + 0x67, 0xa, 0xfb, 0x25, 0x6, 0xfb, 0x2e, 0xfd, 0x82, 0x15, 0x3c, 0xa, + 0xe, 0x48, 0xa, 0xf8, 0xf3, 0xf7, 0xe, 0x1, 0xe6, 0xf8, 0xf3, 0x15, + 0xf7, 0xe, 0x5f, 0xa, 0xf7, 0xe, 0x6, 0xa4, 0xf7, 0xe, 0x5, 0xfb, + 0xd, 0x6, 0xfb, 0x93, 0xfd, 0x6d, 0x15, 0x3c, 0xa, 0xe, 0x73, 0x7d, + 0xf7, 0x3, 0xf7, 0xd8, 0xf7, 0x4, 0xf7, 0x60, 0x77, 0x1, 0xdd, 0xf7, + 0x28, 0xf7, 0xae, 0xf7, 0x2f, 0x3, 0xf7, 0xe7, 0xf8, 0xcf, 0x15, 0xf7, + 0x13, 0xb6, 0xac, 0x52, 0x98, 0x5a, 0x93, 0x68, 0x19, 0x88, 0x89, 0x5, + 0xa4, 0x76, 0x67, 0xb0, 0x32, 0x1b, 0xfb, 0x42, 0xfb, 0x7, 0xfb, 0x26, + 0xfb, 0x36, 0x26, 0xc2, 0xfb, 0x1e, 0xf7, 0x68, 0xf7, 0x87, 0xd6, 0xf7, + 0x4e, 0xf7, 0x18, 0xf7, 0x1e, 0x68, 0xf7, 0x6, 0x53, 0xed, 0x1f, 0xe9, + 0xad, 0x7a, 0xbc, 0x20, 0x65, 0x81, 0x9b, 0x87, 0x91, 0x7f, 0x9b, 0x19, + 0x9a, 0xa, 0xae, 0x64, 0x93, 0x82, 0x9c, 0x6f, 0xfb, 0x9, 0x63, 0x18, + 0x30, 0xfc, 0x20, 0x15, 0xdd, 0xc2, 0xf7, 0x6, 0xf7, 0x6, 0xbe, 0xc9, + 0x6c, 0x35, 0x57, 0x5f, 0xfb, 0x2f, 0xfb, 0x10, 0x3c, 0x68, 0xd1, 0xc5, + 0x1e, 0xe, 0x84, 0xa, 0xf8, 0xf8, 0xf7, 0x11, 0x39, 0xdd, 0x89, 0x77, + 0x12, 0xf8, 0x84, 0xf7, 0x2a, 0x13, 0xc8, 0xcc, 0x16, 0xf7, 0x29, 0x6, + 0xbb, 0xf7, 0x6f, 0x9d, 0xdc, 0x91, 0xad, 0xa7, 0xb0, 0x19, 0xad, 0xa7, + 0xb9, 0xb0, 0xb9, 0x1b, 0xba, 0x9a, 0x71, 0x6a, 0x70, 0x85, 0x6c, 0x85, + 0x75, 0x1f, 0x49, 0xfb, 0xc3, 0x5, 0xf7, 0x29, 0x6, 0xcd, 0xf7, 0xc2, + 0x5, 0x94, 0xb2, 0x8f, 0xb8, 0xb4, 0x1a, 0xc1, 0x65, 0xcb, 0x22, 0x32, + 0x4d, 0x5f, 0x65, 0x60, 0x1e, 0x89, 0x8d, 0x99, 0xce, 0x5, 0xfb, 0x20, + 0x6, 0xe3, 0xdb, 0x15, 0xcd, 0x6, 0x13, 0xa8, 0x90, 0x99, 0x94, 0xa7, + 0xab, 0x8c, 0xa6, 0x8c, 0xa0, 0x80, 0xa1, 0x7f, 0xa1, 0x81, 0xa0, 0x82, + 0xa6, 0x8c, 0xbc, 0x8e, 0xb7, 0xb1, 0x98, 0xdc, 0x8, 0x48, 0x6, 0x72, + 0x83, 0x84, 0x7b, 0x77, 0x1b, 0x78, 0x78, 0x91, 0x93, 0x78, 0x1f, 0x13, + 0x98, 0x97, 0x70, 0x6d, 0x98, 0x65, 0x1b, 0x13, 0xc8, 0x44, 0x74, 0x43, + 0x58, 0x81, 0x1f, 0xe, 0x4c, 0xa, 0xdd, 0xf7, 0x70, 0x22, 0xa, 0xf7, + 0x4c, 0xf8, 0xe, 0x15, 0xee, 0x6, 0x4b, 0xf7, 0x2c, 0x65, 0xa, 0x73, + 0x7d, 0xf7, 0x1, 0xf9, 0x23, 0x77, 0x1, 0xdd, 0xf7, 0x28, 0xf7, 0x9d, + 0xf7, 0x28, 0x3, 0xf7, 0xfe, 0xf8, 0xea, 0x15, 0xee, 0x6, 0xf7, 0x3d, + 0x5d, 0xa, 0xfb, 0x33, 0x6, 0xfc, 0x19, 0xfc, 0xa6, 0x22, 0xa, 0xe, + 0x4c, 0xa, 0xf7, 0x73, 0xf8, 0xea, 0x15, 0xf7, 0xd, 0x6, 0xe4, 0xe5, + 0xb3, 0x31, 0x5, 0xf0, 0x6, 0x4c, 0xf7, 0x2c, 0x5b, 0xa, 0xfb, 0xb9, + 0xfc, 0xa6, 0x22, 0xa, 0xe, 0x73, 0x7d, 0xf7, 0x1, 0xf8, 0xc4, 0xdd, + 0x89, 0x77, 0x12, 0xdd, 0xf7, 0x26, 0xf7, 0xa4, 0xf7, 0x26, 0x13, 0xd8, + 0xf7, 0x9b, 0xf8, 0xf7, 0x15, 0xcc, 0x6, 0x8f, 0x9a, 0x94, 0xa7, 0xab, + 0x8c, 0xa4, 0x8c, 0xa5, 0x7c, 0xa7, 0x80, 0x9f, 0x82, 0xa0, 0x84, 0x9e, + 0x8c, 0xbb, 0x8e, 0xb6, 0xb1, 0x98, 0xdc, 0x8, 0x48, 0x63, 0xa, 0x77, + 0x78, 0x92, 0x93, 0x76, 0x1f, 0x13, 0xb8, 0x97, 0x70, 0x6d, 0x97, 0x6a, + 0x1b, 0x45, 0x74, 0x43, 0x57, 0x82, 0x1f, 0xfb, 0x49, 0xfc, 0x1b, 0x22, + 0xa, 0xe, 0x73, 0x7d, 0xf7, 0x0, 0x3f, 0xa, 0xf7, 0x91, 0xf8, 0xf3, + 0x15, 0xf7, 0x12, 0x6e, 0xa, 0xfb, 0x12, 0x6, 0xf7, 0x50, 0xfb, 0xe, + 0x15, 0xf7, 0x12, 0x6e, 0xa, 0xfb, 0x11, 0x6, 0xfc, 0x30, 0xfc, 0x91, + 0x22, 0xa, 0xe, 0x58, 0xf7, 0x4d, 0xf7, 0x1d, 0x1, 0xf7, 0xa6, 0xf7, + 0x24, 0x3, 0xdd, 0xf7, 0x4d, 0x15, 0xf8, 0xa4, 0xf7, 0x1d, 0xfc, 0xa4, + 0x6, 0xf7, 0x54, 0xda, 0x15, 0xf7, 0x24, 0xf7, 0x27, 0xfb, 0x24, 0x6, + 0xfc, 0xe2, 0x4, 0xf7, 0x24, 0xf7, 0x25, 0xfb, 0x24, 0x6, 0xe, 0xfb, + 0x8, 0x83, 0x76, 0xb1, 0xeb, 0xf7, 0xd5, 0xeb, 0xb1, 0x77, 0x1, 0xd3, + 0xf7, 0xb, 0xf7, 0x68, 0xf7, 0xc, 0x3, 0x9e, 0x9a, 0x15, 0xc2, 0x5f, + 0xcb, 0xce, 0x5, 0x70, 0xc3, 0xc0, 0x89, 0xac, 0x1b, 0xf7, 0x59, 0xeb, + 0xf7, 0x24, 0xf7, 0x28, 0xbf, 0x7b, 0xd0, 0x73, 0xa8, 0x1f, 0xca, 0xcd, + 0x52, 0xb6, 0x4b, 0x49, 0x5, 0xa6, 0x56, 0x4d, 0x8c, 0x72, 0x1b, 0xfb, + 0x97, 0x69, 0xfb, 0x6c, 0x32, 0x48, 0x9b, 0x59, 0xa2, 0x78, 0x1f, 0xe3, + 0xe7, 0x15, 0x88, 0x93, 0x86, 0x98, 0xa2, 0x1a, 0xd7, 0xc2, 0xf7, 0x19, + 0xf7, 0x7, 0xb0, 0x9e, 0x80, 0x87, 0x94, 0x1e, 0xfb, 0x47, 0xfb, 0xb8, + 0x15, 0xf7, 0x76, 0xf7, 0x82, 0x5, 0x8e, 0x80, 0x92, 0x73, 0x76, 0x1a, + 0x49, 0x5d, 0xfb, 0x16, 0xfb, 0x13, 0x67, 0x7b, 0x94, 0x90, 0x80, 0x1e, + 0xe, 0x59, 0xa, 0xf8, 0x91, 0xf7, 0x2c, 0x29, 0xa, 0x79, 0xf8, 0xa5, + 0x75, 0xa, 0xe, 0x59, 0xa, 0xf9, 0x29, 0x77, 0x29, 0xa, 0x21, 0xf8, + 0xaa, 0x60, 0xa, 0x59, 0xa, 0xf8, 0x96, 0xf7, 0x27, 0x29, 0xa, 0xfb, + 0x74, 0xf8, 0xaa, 0x45, 0xa, 0x59, 0xa, 0x12, 0x13, 0x40, 0x28, 0xa, + 0x13, 0x80, 0x35, 0xa, 0x13, 0x40, 0xfb, 0x2f, 0xf8, 0xb0, 0x3a, 0xa, + 0x3c, 0xfb, 0x55, 0x76, 0xfa, 0x58, 0x77, 0x1, 0xcb, 0xf8, 0xf6, 0x3, + 0xc2, 0x30, 0x15, 0x7e, 0xfb, 0x0, 0x7e, 0xa, 0xcb, 0xee, 0xc2, 0x1f, + 0xf7, 0xd1, 0xf8, 0xd9, 0x77, 0xa, 0xfc, 0x28, 0x51, 0xa, 0x59, 0xf8, + 0x28, 0x54, 0xa, 0xe5, 0xfc, 0xa4, 0x5, 0x4e, 0x6c, 0xa, 0xf7, 0xa5, + 0xf9, 0x46, 0x15, 0xe7, 0x6, 0xf7, 0x31, 0xf7, 0x2b, 0x94, 0xa, 0xe, + 0x73, 0xfb, 0x4f, 0x76, 0xf7, 0x51, 0xf6, 0xf7, 0xea, 0xf0, 0xf7, 0x4f, + 0x77, 0x1, 0x9d, 0xf7, 0x23, 0xf7, 0xec, 0xf7, 0x20, 0x3, 0xf7, 0x70, + 0xcc, 0x15, 0x3d, 0xbd, 0xd8, 0x85, 0xac, 0x1b, 0xf7, 0x2d, 0xf7, 0x4, + 0xf7, 0x2d, 0xf7, 0x3e, 0xe9, 0x69, 0xf7, 0x19, 0xfb, 0x2b, 0x40, 0x58, + 0x66, 0x79, 0x73, 0x1f, 0xbd, 0xf7, 0x86, 0x47, 0xa, 0xfb, 0x5b, 0xfe, + 0x32, 0x8d, 0xa, 0xed, 0xf8, 0x3d, 0x15, 0xc0, 0xab, 0xf7, 0x34, 0xf7, + 0x5, 0xc1, 0xba, 0x60, 0x38, 0x4a, 0x67, 0xfb, 0x2b, 0xfb, 0x1, 0x6a, + 0x47, 0xa2, 0xf5, 0x1e, 0xe, 0x3c, 0xfb, 0x55, 0x76, 0xf9, 0xca, 0xf7, + 0xd, 0x1, 0xc2, 0x2f, 0x15, 0x7e, 0x20, 0x7e, 0xa, 0xca, 0xee, 0xc2, + 0x1f, 0xf7, 0xd1, 0xf8, 0xd8, 0x77, 0xa, 0xfc, 0x29, 0x51, 0xa, 0x59, + 0xf8, 0x29, 0x54, 0xa, 0xe5, 0xfc, 0xa4, 0x5, 0x4f, 0x6c, 0xa, 0xf7, + 0x42, 0xf9, 0x50, 0x6b, 0xa, 0xf7, 0x47, 0xfb, 0xd, 0x6b, 0xa, 0xe, + 0x78, 0x9e, 0xf8, 0xa8, 0x99, 0xf7, 0x40, 0x9e, 0x6, 0xfb, 0x6d, 0x95, + 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xf2, 0xa, 0xf7, 0x2a, + 0xb, 0xf2, 0x9c, 0x93, 0xc, 0xc, 0xf7, 0xe1, 0x14, 0xf9, 0xf, 0x15, + 0xb1, 0x13, 0x0, 0x7c, 0x2, 0x0, 0x1, 0x0, 0x31, 0x0, 0x6d, 0x0, + 0x7a, 0x0, 0xc0, 0x1, 0x5, 0x1, 0x2a, 0x1, 0x51, 0x1, 0x55, 0x1, + 0x87, 0x1, 0x93, 0x1, 0xa3, 0x1, 0xa8, 0x1, 0xc7, 0x1, 0xd1, 0x1, + 0xd4, 0x1, 0xdc, 0x1, 0xea, 0x1, 0xf8, 0x2, 0x4, 0x2, 0x11, 0x2, + 0x1b, 0x2, 0x2a, 0x2, 0x34, 0x2, 0x3b, 0x2, 0x44, 0x2, 0x4d, 0x2, + 0x56, 0x2, 0x5e, 0x2, 0x67, 0x2, 0x6c, 0x2, 0x71, 0x2, 0x7b, 0x2, + 0x80, 0x2, 0x8d, 0x2, 0x94, 0x2, 0x99, 0x2, 0x9e, 0x2, 0xaf, 0x2, + 0xb9, 0x2, 0xbe, 0x2, 0xc3, 0x2, 0xcf, 0x2, 0xe2, 0x2, 0xea, 0x2, + 0xf5, 0x3, 0x7, 0x3, 0xd, 0x3, 0x12, 0x3, 0x18, 0x3, 0x1c, 0x3, + 0x26, 0x3, 0x2b, 0x3, 0x30, 0x3, 0x34, 0x3, 0x3e, 0x3, 0x4d, 0x3, + 0x54, 0x3, 0x5a, 0x3, 0x5f, 0x3, 0x63, 0x3, 0x67, 0x3, 0x6b, 0x3, + 0x6f, 0x3, 0x7a, 0x3, 0x84, 0x3, 0x91, 0x3, 0x9e, 0x3, 0xa6, 0x3, + 0xae, 0x3, 0xb1, 0x3, 0xb5, 0x3, 0xb9, 0x3, 0xbd, 0x3, 0xc9, 0x3, + 0xcf, 0x3, 0xd8, 0x3, 0xe4, 0x3, 0xef, 0x3, 0xf4, 0x3, 0xfa, 0x4, + 0x0, 0x4, 0x6, 0x4, 0xc, 0x4, 0x17, 0x4, 0x22, 0x4, 0x2c, 0x4, + 0x33, 0x4, 0x38, 0x4, 0x3f, 0x4, 0x46, 0x4, 0x4b, 0x4, 0x50, 0x4, + 0x54, 0x4, 0x5e, 0x4, 0x68, 0x4, 0x72, 0x4, 0x7c, 0x4, 0x7f, 0x4, + 0x83, 0x4, 0x87, 0x4, 0x8b, 0x4, 0x8f, 0x4, 0x95, 0x4, 0x9e, 0x4, + 0xa7, 0x4, 0xb0, 0x4, 0xb6, 0x4, 0xbb, 0x4, 0xc1, 0x4, 0xc6, 0x4, + 0xcb, 0x4, 0xd0, 0x4, 0xd5, 0x4, 0xda, 0x4, 0xde, 0x4, 0xe3, 0x4, + 0xe8, 0x4, 0xec, 0x4, 0xf0, 0x4, 0xf4, 0x4, 0xf8, 0x4, 0xfc, 0x5, + 0x0, 0x5, 0x4, 0x2f, 0xa, 0x99, 0xa, 0xab, 0xb1, 0x1a, 0xab, 0x7c, + 0xf7, 0x4, 0x33, 0xa, 0x7f, 0x5, 0xb9, 0x98, 0xb1, 0x9a, 0xb8, 0x1b, + 0xce, 0xa8, 0x5b, 0x54, 0x70, 0x1f, 0x6c, 0x81, 0x54, 0x86, 0x50, 0x85, + 0x8, 0x42, 0x86, 0xfb, 0x2f, 0x7f, 0xfb, 0x34, 0x1a, 0x28, 0xd6, 0x52, + 0xe1, 0x1e, 0xb, 0x15, 0xfb, 0x23, 0xe3, 0xfb, 0x32, 0xf7, 0x69, 0xf7, + 0xb1, 0xf7, 0x16, 0xf7, 0x95, 0xf7, 0x56, 0xf7, 0x49, 0xfb, 0x6, 0xf7, + 0x13, 0xfb, 0x53, 0xfb, 0xc9, 0x25, 0xfb, 0xb4, 0xfb, 0x3e, 0x1e, 0xf7, + 0x2a, 0x16, 0xf7, 0x37, 0xf0, 0xf7, 0x3d, 0xf7, 0x29, 0xf7, 0x3, 0xc2, + 0x34, 0x2a, 0xfb, 0xa, 0x3b, 0xfb, 0x61, 0xfb, 0x3c, 0x2a, 0x44, 0xd1, + 0xf4, 0x1e, 0xb, 0x15, 0xfb, 0x11, 0xde, 0xfb, 0x1, 0x38, 0xa, 0xf7, + 0x36, 0x26, 0xa, 0xb, 0x15, 0xf8, 0x8, 0x6, 0x94, 0xae, 0x8c, 0xb3, + 0x99, 0x1a, 0xf0, 0x5d, 0xf7, 0x1c, 0xfb, 0x41, 0xfb, 0x6e, 0x35, 0xfb, + 0x33, 0xfb, 0x1b, 0xfb, 0x24, 0xe9, 0xfb, 0xf, 0xf7, 0x2d, 0xd7, 0xf7, + 0x1, 0xa6, 0xf7, 0x15, 0xcc, 0x1e, 0xfb, 0x1a, 0xa1, 0x5, 0x7a, 0x83, + 0x6a, 0x51, 0x41, 0x1b, 0x4d, 0x5a, 0xbc, 0xde, 0x8f, 0x1f, 0x9a, 0xe3, + 0x15, 0xbe, 0x95, 0xaf, 0xde, 0xe1, 0x1b, 0xd8, 0xa6, 0x4c, 0x44, 0x88, + 0x1f, 0xb, 0x1, 0xf7, 0x8, 0xf7, 0x28, 0x3, 0xf7, 0x6b, 0xf9, 0x73, + 0x15, 0x3a, 0xfc, 0x2a, 0x5, 0x81, 0x5f, 0x83, 0x59, 0x5b, 0x1a, 0xfb, + 0x1, 0xc2, 0x2a, 0xf7, 0x62, 0xf7, 0xa3, 0xb6, 0xf7, 0x64, 0xf7, 0x20, + 0xa8, 0x1e, 0xdf, 0xf8, 0x2a, 0x5, 0x97, 0xa, 0x37, 0xfc, 0x2a, 0x5, + 0xfb, 0x13, 0x71, 0x78, 0x2e, 0xfb, 0x20, 0x1b, 0x2b, 0x73, 0xb4, 0xc5, + 0xaf, 0x94, 0xb5, 0x94, 0xb6, 0x1f, 0xdf, 0xf8, 0x2a, 0x5, 0xb, 0x5e, + 0xa, 0xe1, 0xf7, 0x36, 0x5, 0xf7, 0xaf, 0x6, 0xa3, 0xfb, 0x36, 0x5, + 0xf7, 0x1f, 0x6, 0xfb, 0x8, 0xf9, 0x71, 0x43, 0xa, 0x27, 0xfc, 0x54, + 0x15, 0xf7, 0x30, 0xf7, 0xba, 0x5c, 0xa, 0xb3, 0xfb, 0xba, 0x5, 0xb, + 0xf7, 0xe, 0x48, 0xf7, 0xa, 0xfb, 0x4f, 0xfb, 0x7d, 0x41, 0xfb, 0x4c, + 0xfb, 0x21, 0x1e, 0xf7, 0x25, 0x16, 0xcb, 0xb0, 0xf7, 0x2b, 0xf7, 0x11, + 0xdb, 0xa8, 0x3d, 0x57, 0x29, 0x56, 0xfb, 0x4, 0x21, 0x3f, 0x67, 0xcb, + 0xc8, 0x1e, 0xb, 0x15, 0x25, 0xa, 0xe, 0xf8, 0x31, 0x89, 0x15, 0x82, + 0xa, 0xf7, 0x2, 0xf8, 0xa7, 0x47, 0xa, 0x57, 0xfb, 0x8e, 0x5, 0x46, + 0x71, 0x7f, 0xfb, 0xd, 0xfb, 0xe, 0x1b, 0x5e, 0x7d, 0xa4, 0xad, 0xa1, + 0x90, 0xa4, 0x91, 0xa0, 0x1f, 0xcc, 0xf7, 0xcd, 0x44, 0xa, 0x4d, 0xfb, + 0xba, 0x5, 0x85, 0x6a, 0x81, 0x60, 0x62, 0x1a, 0xb, 0x12, 0x13, 0x60, + 0x28, 0xa, 0x13, 0xa0, 0x35, 0xa, 0x13, 0x60, 0xb, 0x30, 0xa, 0x9c, + 0xf7, 0x8e, 0x15, 0x88, 0x78, 0x5, 0x31, 0xa, 0x90, 0xe6, 0x99, 0x1f, + 0xb, 0xfd, 0x22, 0x21, 0xa, 0xe, 0xf8, 0xc4, 0x6, 0xa5, 0xf7, 0x10, + 0x5, 0xfc, 0x31, 0x6, 0xb3, 0xf7, 0x5a, 0x70, 0xa, 0xf7, 0x10, 0x5, + 0xfb, 0xfe, 0x6, 0xad, 0xf7, 0x3c, 0x6f, 0xa, 0xf7, 0xf, 0x90, 0xa, + 0xb, 0xe2, 0x78, 0xf7, 0x14, 0xf9, 0x6, 0x77, 0x24, 0xa, 0xb, 0x2a, + 0xa, 0xe, 0x32, 0xa, 0x9a, 0xca, 0x99, 0xc0, 0x1e, 0xb, 0xba, 0xcb, + 0x9d, 0xc2, 0xbf, 0x1f, 0x8d, 0x70, 0x8c, 0x82, 0x93, 0x72, 0x8, 0xb, + 0x5f, 0x81, 0x77, 0x30, 0x20, 0x1b, 0x5a, 0x77, 0xab, 0xa7, 0xd6, 0xf7, + 0xa, 0xb, 0x15, 0xf7, 0x27, 0x6, 0x83, 0xa6, 0x87, 0x9e, 0xaa, 0x1a, + 0xbc, 0xb, 0xfb, 0x5a, 0x27, 0xfb, 0x3, 0x6b, 0xfb, 0xd, 0x5f, 0x1e, + 0xf7, 0x28, 0xb, 0x68, 0xa, 0xf7, 0x36, 0xf7, 0xf, 0xf8, 0x54, 0x77, + 0xb, 0x46, 0xa6, 0x4c, 0xf7, 0x6, 0xcd, 0xce, 0xa9, 0xc2, 0xc2, 0x1e, + 0x8d, 0x89, 0x5, 0xb, 0x1, 0xf6, 0xf7, 0x2a, 0xf8, 0x34, 0xf7, 0x2a, + 0x3, 0xb, 0xa0, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xb, 0xf7, 0x3d, 0xf7, + 0x59, 0xf7, 0x4, 0xf7, 0x31, 0xb, 0x15, 0xf7, 0xc, 0x40, 0xa, 0xfb, + 0xc, 0x6, 0xb, 0x39, 0xa, 0xf7, 0x48, 0xfb, 0xc, 0x39, 0xa, 0xe, + 0xf7, 0x2, 0x97, 0xc1, 0xa2, 0xf5, 0x18, 0xb, 0xf7, 0x1c, 0x6, 0xf4, + 0xf8, 0xa6, 0x5b, 0xa, 0xb, 0x5, 0xfb, 0x21, 0x6, 0xb, 0x8e, 0xa2, + 0x3b, 0xa, 0xb, 0x1, 0xdd, 0xf7, 0x25, 0xf7, 0xa3, 0xf7, 0x25, 0x3, + 0xb, 0x6, 0xa4, 0x83, 0xa, 0xb, 0xab, 0x8b, 0xf7, 0x10, 0xf7, 0x5a, + 0xf7, 0x10, 0xf7, 0x3c, 0xf7, 0xf, 0xb, 0x3c, 0x7d, 0xf7, 0x0, 0x2b, + 0xeb, 0xb, 0x5, 0xfb, 0x37, 0x6, 0xb, 0x5, 0xfb, 0x24, 0x6, 0xb, + 0x15, 0xf7, 0x8, 0x6, 0xe0, 0xe2, 0xb1, 0x34, 0x5, 0xec, 0x6, 0x4f, + 0xf7, 0x27, 0x66, 0xa, 0xe, 0xf7, 0x29, 0x6, 0xf7, 0x40, 0xf9, 0x74, + 0x5a, 0xa, 0xb, 0x5, 0xfb, 0x23, 0x6, 0xb, 0xfb, 0xf9, 0xa0, 0x76, + 0xb, 0xf7, 0x23, 0x78, 0xf7, 0x14, 0xf9, 0x37, 0xf7, 0x2c, 0x36, 0xa, + 0xb, 0x15, 0xdb, 0x6, 0x57, 0xf7, 0x65, 0xf7, 0x24, 0xf7, 0x5b, 0x5, + 0x2b, 0x6, 0xfb, 0x39, 0xfb, 0x53, 0x5, 0xb, 0x7c, 0xa, 0xa8, 0xf7, + 0x26, 0x44, 0xa, 0xb, 0x73, 0x7d, 0xf7, 0x1, 0xf8, 0x8b, 0xf7, 0x2c, + 0x3f, 0xa, 0xb, 0x15, 0xeb, 0x6, 0xf7, 0x39, 0xf7, 0x59, 0x32, 0xf7, + 0x67, 0x5, 0x3b, 0x6, 0xbf, 0xfb, 0x67, 0x5, 0xb, 0x48, 0xa, 0xf9, + 0x74, 0x77, 0xb, 0x6, 0xa4, 0x55, 0xa, 0xb, 0x6, 0xa4, 0xf7, 0xd, + 0x5, 0xb, 0x5, 0x89, 0x6, 0xb, 0x6, 0xf7, 0x44, 0xf7, 0x26, 0x5, + 0xfb, 0x3a, 0x6, 0xb, 0x5, 0xfb, 0x29, 0x6, 0xb, 0x5, 0xfb, 0x1e, + 0x6, 0xb, 0xf7, 0xe, 0x5, 0xb, 0xf7, 0x1e, 0x8e, 0xa3, 0x3b, 0xa, + 0xfb, 0x1f, 0x6, 0xb, 0xe2, 0x8b, 0xf7, 0xa, 0xf8, 0x76, 0xf7, 0xa, + 0x1, 0xf9, 0x6, 0xf7, 0x2b, 0x3, 0xb, 0xec, 0x76, 0xf8, 0x2c, 0x77, + 0x1, 0xb, 0x73, 0x7d, 0xf2, 0x30, 0xe6, 0xb, 0x5, 0xfb, 0x2a, 0x6, + 0xb, 0x85, 0xa, 0x6, 0xb, 0x5, 0x8d, 0x6, 0xb, 0xf7, 0x2c, 0x5, + 0xb, 0xf7, 0x2a, 0x6, 0xb, 0x4f, 0xa, 0xfb, 0xd, 0x6, 0xf7, 0x49, + 0xfb, 0xe, 0x15, 0xb, 0x15, 0xe8, 0x6, 0xf7, 0x32, 0xf7, 0x27, 0x53, + 0xa, 0xe, 0x15, 0xca, 0x6, 0x7e, 0x52, 0x73, 0x7a, 0x5f, 0x82, 0x7e, + 0x4d, 0x18, 0xb, 0xfb, 0x15, 0x5, 0xca, 0x6, 0x7e, 0x53, 0x73, 0x7b, + 0x5f, 0x81, 0x8, 0xb, 0x6, 0x72, 0x84, 0x84, 0x7b, 0x77, 0x1b, 0xb, + 0xf7, 0xc0, 0x16, 0xf7, 0x20, 0x6, 0xc1, 0xb, 0x3d, 0xa, 0xe, 0x98, + 0xa, 0x6, 0xb, 0xf7, 0x2b, 0x5, 0xb, 0xe2, 0xa0, 0x76, 0xb, 0x15, + 0xf7, 0xa, 0x6, 0xa4, 0xf7, 0x7, 0x5, 0xfb, 0xa, 0x6, 0xb, 0x86, + 0xa, 0xfb, 0xe, 0x6, 0xb, 0x15, 0xf7, 0xb, 0x50, 0xa, 0xfb, 0xb, + 0x6, 0xb, 0x72, 0x69, 0x63, 0x5c, 0x1b, 0x86, 0x79, 0x8b, 0x93, 0x72, + 0x1f, 0xb, 0x15, 0xf7, 0x15, 0x6, 0xa6, 0x55, 0xa, 0xfb, 0x15, 0x6, + 0xb, 0x6, 0xa5, 0x55, 0xa, 0xb, 0x5, 0xf8, 0x14, 0x6, 0xa4, 0xb, + 0x5, 0xf7, 0xfe, 0x6, 0xa4, 0xb, 0x6, 0xa5, 0xf7, 0xf, 0x5, 0xb, + 0xf8, 0xf0, 0xf7, 0x26, 0x1, 0xb, 0xfb, 0x8a, 0xfb, 0x58, 0xf7, 0x7, + 0xf7, 0xb2, 0xf7, 0x8, 0xb, 0xfb, 0x11, 0x59, 0xfb, 0x2f, 0x3b, 0x1e, + 0xe8, 0x16, 0x9b, 0xb, 0x15, 0xec, 0x6, 0x4c, 0x5d, 0xa, 0xfb, 0x1f, + 0x6, 0xb, 0x12, 0xc2, 0xf7, 0x23, 0x13, 0x70, 0xb, 0x94, 0xa, 0xfb, + 0x57, 0xb, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xb, 0xa0, 0x76, 0xf8, + 0xa8, 0x77, 0x1, 0xb, 0x5, 0xfb, 0xe, 0x6, 0xb, 0x5, 0xfb, 0x27, + 0x6, 0xb, 0xf7, 0x24, 0x6, 0xb, 0x1, 0xd1, 0xf7, 0x22, 0xf7, 0x8b, + 0xf7, 0x1a, 0x3, 0xb, 0x5, 0x87, 0x9b, 0xb8, 0x80, 0xb2, 0x1b, 0xf2, + 0xae, 0xb, 0xfb, 0x58, 0xf7, 0x2, 0xf9, 0x4e, 0xf7, 0x2, 0x1, 0xb, + 0xcc, 0xf7, 0x5a, 0xf7, 0x44, 0xf7, 0x9, 0x9c, 0x32, 0xb, 0x54, 0xa, + 0xe, 0xf7, 0x1b, 0x6, 0xb, 0xf7, 0xc, 0x5, 0xb, 0x73, 0xa0, 0x76, + 0xb, 0x5, 0xfb, 0x1c, 0xb, 0x15, 0xf7, 0xe, 0x4f, 0xa, 0xb, 0x73, + 0x8b, 0xf7, 0xd, 0xf8, 0xe9, 0x77, 0x1, 0xb, 0xf7, 0x77, 0xf5, 0x1, + 0xbb, 0xf7, 0x77, 0x15, 0xb, 0x6, 0xa1, 0xf7, 0x3, 0x5, 0xfb, 0x3d, + 0x6, 0xb, 0xd0, 0x16, 0xf7, 0x21, 0x6, 0xb, 0x96, 0xa, 0xd7, 0x16, + 0xb, 0xf7, 0x23, 0x78, 0xf7, 0x12, 0xb, 0x5, 0xf7, 0x23, 0x6, 0xb, + 0x15, 0xf7, 0x1e, 0x6, 0xb, 0x15, 0xf7, 0xe, 0x6, 0xb, 0x5, 0xfc, + 0xa7, 0x6, 0xb, 0x5, 0xfb, 0x1b, 0x6, 0xb, 0x5, 0x9a, 0xa, 0xb, + 0x5, 0xfb, 0x26, 0x6, 0xb, 0x5, 0xfb, 0x28, 0x6, 0xb, 0xf7, 0x2b, + 0x1, 0xb, 0xf7, 0xc, 0x1, 0xb, 0xfb, 0x2b, 0x6, 0xb, 0x5, 0xfb, + 0x17, 0xb, 0xa0, 0xe8, 0x93, 0xb, 0xfb, 0x22, 0x6, 0xb, 0xf7, 0x22, + 0x6, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp b/core/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp new file mode 100644 index 0000000000..2912e1688e --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp @@ -0,0 +1,1371 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSansItalicFontData[16339] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x14, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x4f, 0x54, 0x46, 0x2d, 0x49, 0x74, + 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x27, 0xf8, 0x10, 0x0, + 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x18, 0x4, + 0x7f, 0xc, 0x2, 0xfb, 0x3e, 0xfb, 0x75, 0xfa, 0xf0, 0xfa, 0x4b, 0x5, + 0xf7, 0x36, 0xf, 0xf9, 0x1, 0x11, 0xc3, 0x1c, 0x3a, 0xfc, 0x12, 0x0, + 0x4, 0x1, 0x1, 0x5, 0x2f, 0x44, 0x52, 0x45, 0x75, 0x72, 0x6f, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, + 0x61, 0x6e, 0x73, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x49, 0x74, 0x61, 0x6c, + 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x61, 0x6e, 0x73, + 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x8a, 0x0, + 0xab, 0x0, 0xac, 0x0, 0xad, 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, + 0x23, 0x0, 0x24, 0x0, 0xb1, 0x0, 0x25, 0x0, 0x26, 0x0, 0xb2, 0x0, + 0xb3, 0x0, 0xb4, 0x0, 0xb5, 0x0, 0x9a, 0x1, 0x87, 0x0, 0x27, 0x0, + 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0xb6, 0x0, 0xb7, 0x0, 0xb8, 0x0, + 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, 0x8c, 0x0, 0x2e, 0x0, + 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, 0x0, 0xbb, 0x0, 0xbc, 0x0, + 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, 0x0, 0x31, 0x0, 0x32, 0x0, + 0x33, 0x0, 0x34, 0x0, 0xc0, 0x0, 0x35, 0x0, 0x9d, 0x0, 0x36, 0x0, + 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, 0x37, 0x0, 0x38, 0x0, + 0x39, 0x0, 0x3a, 0x0, 0xc5, 0x0, 0xc6, 0x0, 0x3b, 0x0, 0xc7, 0x0, + 0x42, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0x7d, 0x0, 0xca, 0x0, 0x90, 0x0, + 0xcb, 0x0, 0x7, 0x0, 0xcc, 0x0, 0x3f, 0x0, 0x5f, 0x0, 0xb, 0x0, + 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, 0x0, 0x5d, 0x0, 0x5c, 0x0, + 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, 0x0, 0xa0, 0x0, 0x74, 0x0, + 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, 0x0, 0x61, 0x0, 0x7e, 0x0, + 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, 0x0, 0x45, 0x0, 0x70, 0x0, + 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, 0x0, 0x5, 0x0, 0x82, 0x0, + 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, 0x0, 0xd1, 0x0, 0xd2, 0x0, + 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, 0x0, 0x1e, 0x0, 0xa7, 0x0, + 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, 0x0, 0x16, 0x0, 0x6e, 0x0, + 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, 0x0, 0x95, 0x0, 0x7c, 0x0, + 0x1f, 0x0, 0x6a, 0x0, 0x78, 0x0, 0x6b, 0x0, 0x6c, 0x0, 0x49, 0x0, + 0x86, 0x0, 0xe, 0x0, 0x4a, 0x0, 0xd3, 0x0, 0xd4, 0x0, 0xd5, 0x0, + 0xd6, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, 0x0, 0x1d, 0x0, 0x97, 0x0, + 0x92, 0x0, 0x4e, 0x0, 0x80, 0x0, 0xa6, 0x0, 0x98, 0x0, 0xa8, 0x0, + 0x4f, 0x0, 0x1a, 0x0, 0xd7, 0x0, 0x4, 0x0, 0x50, 0x0, 0xd8, 0x0, + 0xd9, 0x0, 0xda, 0x0, 0x94, 0x0, 0x87, 0x0, 0xdb, 0x0, 0x12, 0x0, + 0x9b, 0x0, 0x9e, 0x0, 0x96, 0x0, 0x8b, 0x0, 0x8f, 0x0, 0x93, 0x0, + 0xdc, 0x0, 0x51, 0x0, 0x73, 0x0, 0x9, 0x0, 0xa, 0x0, 0x6, 0x0, + 0xf, 0x0, 0x72, 0x0, 0x7a, 0x0, 0xc, 0x0, 0x9c, 0x0, 0x52, 0x0, + 0x20, 0x0, 0x7b, 0x0, 0x3, 0x0, 0x76, 0x0, 0x69, 0x0, 0x77, 0x0, + 0x41, 0x0, 0x8, 0x0, 0x75, 0x0, 0x68, 0x0, 0x53, 0x0, 0xa5, 0x0, + 0x84, 0x0, 0x54, 0x0, 0xdd, 0x0, 0x66, 0x0, 0x1c, 0x0, 0x18, 0x0, + 0x17, 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, 0x55, 0x0, 0xa2, 0x0, + 0x14, 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, 0x99, 0x0, 0x13, 0x0, + 0xa4, 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, 0xe0, 0x0, 0xe1, 0x0, + 0x40, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, 0x0, 0xe2, 0x0, + 0xe3, 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, 0x11, 0x0, 0xe6, 0x2, + 0x0, 0x1, 0x0, 0x3, 0x0, 0x36, 0x0, 0x82, 0x0, 0x94, 0x0, 0xa7, + 0x0, 0xb9, 0x0, 0xd1, 0x1, 0x10, 0x1, 0x54, 0x1, 0xb3, 0x2, 0x5, + 0x2, 0x89, 0x2, 0xc9, 0x2, 0xf6, 0x3, 0x3, 0x3, 0x10, 0x3, 0x1c, + 0x3, 0x2f, 0x3, 0x87, 0x4, 0x6, 0x4, 0x2e, 0x4, 0x8d, 0x4, 0xbc, + 0x4, 0xca, 0x4, 0xe6, 0x5, 0x6, 0x5, 0x29, 0x5, 0x3e, 0x5, 0x72, + 0x5, 0xa5, 0x5, 0xbb, 0x5, 0xe6, 0x6, 0x17, 0x6, 0x3f, 0x6, 0xa1, + 0x6, 0xf1, 0x7, 0x77, 0x7, 0x9a, 0x7, 0xc3, 0x7, 0xe8, 0x8, 0x5, + 0x8, 0x84, 0x8, 0xd2, 0x9, 0x12, 0x9, 0x91, 0x9, 0xec, 0xa, 0x59, + 0xa, 0xdf, 0xa, 0xff, 0xb, 0x47, 0xb, 0x84, 0xb, 0xd6, 0xb, 0xf7, + 0xc, 0x1f, 0xc, 0x71, 0xc, 0x8c, 0xc, 0xc9, 0xc, 0xfa, 0xd, 0x22, + 0xd, 0x51, 0xd, 0x89, 0xd, 0xb1, 0xd, 0xee, 0xe, 0x7c, 0xe, 0x9e, + 0xe, 0xc3, 0xe, 0xda, 0xf, 0x9, 0xf, 0xbb, 0xf, 0xda, 0x10, 0x79, + 0x10, 0xc2, 0x10, 0xe4, 0x11, 0x2e, 0x11, 0x63, 0x12, 0x19, 0x12, 0x70, + 0x12, 0xca, 0x12, 0xe2, 0x12, 0xfc, 0x13, 0x4f, 0x13, 0xa6, 0x13, 0xca, + 0x13, 0xec, 0x14, 0x16, 0x14, 0x38, 0x14, 0x56, 0x14, 0xa0, 0x14, 0xb7, + 0x15, 0x2a, 0x15, 0x63, 0x15, 0xce, 0x15, 0xee, 0x16, 0x6, 0x16, 0x26, + 0x16, 0xbd, 0x17, 0x35, 0x17, 0x90, 0x17, 0xc8, 0x18, 0x16, 0x18, 0x50, + 0x18, 0x61, 0x18, 0x92, 0x19, 0x1f, 0x19, 0x31, 0x19, 0x42, 0x19, 0x99, + 0x19, 0xbc, 0x19, 0xe6, 0x1a, 0x4, 0x1a, 0x25, 0x1a, 0x96, 0x1a, 0xad, + 0x1a, 0xb8, 0x1a, 0xc1, 0x1a, 0xe2, 0x1b, 0x51, 0x1b, 0x75, 0x1b, 0xa3, + 0x1b, 0xde, 0x1c, 0x22, 0x1c, 0x7a, 0x1c, 0xb7, 0x1d, 0x16, 0x1d, 0x53, + 0x1d, 0x70, 0x1d, 0xdd, 0x1e, 0x52, 0x1e, 0x60, 0x1e, 0x89, 0x1e, 0xb7, + 0x1e, 0xe3, 0x1e, 0xfd, 0x1f, 0x1b, 0x1f, 0x5d, 0x1f, 0x6b, 0x1f, 0x82, + 0x1f, 0x9f, 0x1f, 0xbb, 0x1f, 0xdd, 0x1f, 0xfd, 0x20, 0x13, 0x20, 0x51, + 0x20, 0x7c, 0x20, 0x8b, 0x20, 0xaf, 0x20, 0xcd, 0x20, 0xee, 0x21, 0x52, + 0x21, 0x66, 0x21, 0x7a, 0x21, 0xcc, 0x21, 0xfd, 0x22, 0x3c, 0x22, 0xa1, + 0x23, 0x1b, 0x23, 0x72, 0x23, 0xb9, 0x23, 0xd7, 0x23, 0xfb, 0x24, 0x23, + 0x24, 0xba, 0x24, 0xeb, 0x25, 0x3, 0x25, 0x2f, 0x25, 0xb0, 0x26, 0x16, + 0x26, 0x3c, 0x26, 0xc6, 0x27, 0x6, 0x27, 0x7c, 0x27, 0xd3, 0x28, 0x29, + 0x28, 0x52, 0x28, 0x88, 0x28, 0xbd, 0x29, 0x5d, 0x29, 0x6b, 0x29, 0x7f, + 0x2a, 0x39, 0x2a, 0x5c, 0x2a, 0x9d, 0x2a, 0xf8, 0x2b, 0x4b, 0x2b, 0xa1, + 0x2b, 0xd2, 0x2b, 0xfa, 0x2c, 0x12, 0x2c, 0x3e, 0x2c, 0x54, 0x2c, 0x6b, + 0x2c, 0x86, 0x2c, 0x9f, 0x2c, 0xd7, 0x2d, 0x7d, 0x2d, 0xb7, 0x2e, 0x17, + 0x2e, 0x8e, 0x2f, 0x26, 0x2f, 0x55, 0x2f, 0x84, 0x2f, 0xe7, 0x2f, 0xfc, + 0x2f, 0xfe, 0x30, 0x8c, 0x30, 0xde, 0x31, 0x35, 0x31, 0x95, 0x32, 0x30, + 0x32, 0x8e, 0x32, 0xe2, 0x33, 0x3e, 0x33, 0x8c, 0x33, 0xdc, 0x34, 0x27, + 0x34, 0x34, 0x34, 0x42, 0x34, 0x4e, 0x34, 0x62, 0x34, 0x6f, 0x34, 0x8b, + 0x34, 0xc1, 0x34, 0xf0, 0x35, 0x27, 0x35, 0x75, 0x35, 0xc2, 0x36, 0x1b, + 0x36, 0x41, 0x36, 0x7a, 0x36, 0xbf, 0x77, 0xe, 0x35, 0xa, 0xf7, 0x62, + 0xd5, 0xf8, 0x4a, 0x77, 0x1, 0x99, 0x16, 0xf4, 0x6, 0xf7, 0x7, 0xf7, + 0x62, 0x5, 0xf7, 0xb8, 0x6, 0xae, 0xfb, 0x62, 0x5, 0xe8, 0x6, 0xfb, + 0xa, 0xf9, 0x62, 0x5, 0xfb, 0x5, 0x6, 0xfb, 0x28, 0xfc, 0x4a, 0x15, + 0xf7, 0x53, 0xf7, 0xfc, 0x48, 0xa, 0xb9, 0xfb, 0xfc, 0x5, 0xe, 0xf9, + 0x52, 0x8b, 0xdc, 0xf7, 0x10, 0xdc, 0xb9, 0xdc, 0xf7, 0x74, 0xdc, 0x1, + 0x93, 0x16, 0xf7, 0x0, 0x6, 0xf7, 0x10, 0xf7, 0x61, 0x5, 0xf7, 0xaa, + 0x6, 0x60, 0xfb, 0x61, 0x5, 0xf8, 0x98, 0x55, 0xa, 0xfc, 0x33, 0x6, + 0xbf, 0xf7, 0x8f, 0x5, 0xf8, 0x3, 0x55, 0xa, 0xfc, 0x3, 0x6, 0xba, + 0xf7, 0x74, 0x5, 0xf8, 0x7, 0x55, 0xa, 0xfd, 0x1a, 0x6, 0xfb, 0x35, + 0xfc, 0x44, 0x15, 0xf7, 0x6b, 0xf7, 0xf3, 0x5, 0xf2, 0x6, 0x42, 0xfb, + 0xf3, 0x5, 0xe, 0x31, 0xa, 0xf9, 0x13, 0x77, 0x1, 0xf8, 0x74, 0xf9, + 0xae, 0x36, 0xa, 0xfc, 0xc1, 0xfe, 0x35, 0x26, 0xa, 0x31, 0xa, 0xf8, + 0x8c, 0xf7, 0x1b, 0x1, 0xf7, 0xc7, 0xf9, 0xae, 0x30, 0xa, 0xfc, 0x3b, + 0xfe, 0x35, 0x26, 0xa, 0x31, 0xa, 0xf8, 0x93, 0xef, 0x1, 0xf8, 0xb1, + 0xf9, 0xb5, 0x2e, 0xa, 0xfc, 0x4, 0xfe, 0x19, 0x26, 0xa, 0x31, 0xa, + 0xf8, 0x87, 0xf7, 0x20, 0x1, 0xf8, 0x78, 0xf9, 0xa9, 0x56, 0xa, 0xf7, + 0x20, 0x5, 0x20, 0x6, 0xfc, 0xb, 0xfe, 0x35, 0x26, 0xa, 0x31, 0xa, + 0xf8, 0x77, 0xb0, 0xf7, 0x36, 0x76, 0x1, 0xf8, 0x28, 0xb0, 0xf3, 0xb0, + 0x3, 0xf8, 0x28, 0xf9, 0xf2, 0x15, 0x59, 0xb4, 0x64, 0xbb, 0xbb, 0xb4, + 0xb2, 0xbd, 0xbd, 0x63, 0xb2, 0x5a, 0x5a, 0x63, 0x64, 0x59, 0x1e, 0xb0, + 0x8a, 0x15, 0xa8, 0xa2, 0xa3, 0xa8, 0xa8, 0xa2, 0x74, 0x6d, 0x6e, 0x74, + 0x75, 0x6e, 0x6f, 0x73, 0xa1, 0xa8, 0x1e, 0xfc, 0x3f, 0xfd, 0xf1, 0x26, + 0xa, 0x31, 0xa, 0xf8, 0x9a, 0xf5, 0x8e, 0x77, 0x12, 0x13, 0xe0, 0xf8, + 0x5, 0xf9, 0xbc, 0x15, 0xc8, 0x66, 0xa, 0xa3, 0x1b, 0xa7, 0xa1, 0x82, + 0x82, 0x9e, 0x1f, 0x80, 0xa2, 0x9f, 0x7e, 0xa0, 0x1b, 0xc5, 0xac, 0xc1, + 0xc0, 0x90, 0x1f, 0x50, 0x6, 0x7d, 0x87, 0x85, 0x73, 0x5e, 0xa, 0x13, + 0xd0, 0x95, 0x73, 0x70, 0x96, 0x6e, 0x1b, 0x13, 0xe0, 0x48, 0x7a, 0x58, + 0x51, 0x7c, 0x1f, 0xfb, 0xf7, 0xfd, 0xbc, 0x26, 0xa, 0xf8, 0x5, 0x8b, + 0xdc, 0xf7, 0x8d, 0xdd, 0xf7, 0x75, 0xdc, 0x1, 0xf8, 0xd4, 0xf1, 0x3, + 0xd5, 0x16, 0xf7, 0xfd, 0x6, 0xf7, 0x37, 0xec, 0xf7, 0xd, 0xf5, 0xe5, + 0x4b, 0xb3, 0x52, 0x9e, 0x1f, 0xb6, 0x99, 0xea, 0xac, 0xf7, 0xa, 0x1a, + 0xf7, 0x22, 0xfb, 0x18, 0xae, 0xfb, 0xb, 0x1e, 0xfb, 0x7b, 0x6, 0x64, + 0xfd, 0x11, 0x15, 0xc1, 0xf7, 0x8d, 0x5, 0xf7, 0x52, 0x6, 0xc9, 0xeb, + 0x8a, 0x25, 0xfb, 0x11, 0xfb, 0x13, 0x76, 0x22, 0x1f, 0x29, 0xf7, 0xdf, + 0x15, 0xbc, 0xf7, 0x75, 0x5, 0xf7, 0x29, 0x6, 0xc7, 0xec, 0x8a, 0x2c, + 0xfb, 0x3, 0xfb, 0x6, 0x79, 0x31, 0x1f, 0xe, 0xf8, 0x3c, 0x78, 0xdc, + 0xf8, 0xe6, 0xdc, 0x1, 0xf7, 0x14, 0xef, 0x3, 0xf9, 0x1b, 0xf7, 0x8f, + 0x15, 0x51, 0x79, 0x4a, 0xfb, 0x17, 0xfb, 0x2b, 0x1b, 0x3c, 0xfb, 0x12, + 0xb4, 0xf7, 0x53, 0xf7, 0x47, 0xf2, 0xf7, 0x4b, 0xf7, 0x52, 0xf7, 0x28, + 0xaa, 0xfb, 0x8, 0x62, 0x92, 0x1f, 0xea, 0x93, 0x5, 0xf7, 0x52, 0x75, + 0xfb, 0x3a, 0xb3, 0x2e, 0x1b, 0xfb, 0x7e, 0xfb, 0x33, 0xfb, 0x5d, 0xfb, + 0x86, 0xfb, 0x74, 0xf7, 0x1c, 0x32, 0xf7, 0x36, 0xf7, 0x3b, 0xf7, 0x8, + 0xf2, 0xf7, 0x2d, 0xc5, 0x1f, 0xe, 0xf8, 0x3c, 0xfb, 0x75, 0xc6, 0xf7, + 0x24, 0xdc, 0xf8, 0xe9, 0xdc, 0x1, 0xf7, 0x0, 0xf0, 0x3, 0xf7, 0x79, + 0xfb, 0x37, 0x15, 0x72, 0x52, 0x5, 0x87, 0xa6, 0xad, 0x8a, 0xa6, 0x1b, + 0xf7, 0x46, 0x9e, 0xd5, 0xa8, 0xc6, 0x53, 0x93, 0x77, 0x8e, 0x1f, 0x99, + 0xa9, 0xc8, 0x8e, 0xf7, 0x43, 0xa6, 0xe0, 0xf7, 0x78, 0x19, 0x27, 0x98, + 0x5, 0x50, 0x78, 0x4c, 0xfb, 0x17, 0xfb, 0x2c, 0x1b, 0x38, 0xfb, 0xe, + 0xbe, 0xf7, 0x54, 0xf7, 0x48, 0xf0, 0xf7, 0x42, 0xf7, 0x54, 0xf7, 0x28, + 0xa8, 0xfb, 0x9, 0x62, 0x93, 0x1f, 0xea, 0x93, 0x5, 0xf7, 0x54, 0x76, + 0xfb, 0x3b, 0xb2, 0x2f, 0x1b, 0xfb, 0x7f, 0xfb, 0x33, 0xfb, 0x53, 0xfb, + 0x88, 0xfb, 0x35, 0xd0, 0xfb, 0x1c, 0xf7, 0x48, 0x73, 0x1f, 0x6a, 0x47, + 0x5, 0xc4, 0x8a, 0x9d, 0x7b, 0x78, 0x1a, 0x5f, 0x43, 0x8c, 0x57, 0x82, + 0x87, 0x8d, 0x8c, 0x6a, 0x1e, 0xe, 0xf8, 0x3c, 0x8b, 0xdc, 0xf8, 0xc0, + 0xdc, 0x1, 0xf9, 0x2c, 0xef, 0x3, 0xdc, 0x16, 0xf7, 0x9b, 0x6, 0xf7, + 0x6a, 0xf7, 0x62, 0xf7, 0x12, 0xf7, 0xc0, 0xf7, 0x42, 0xfb, 0xb, 0xf7, + 0xa, 0xfb, 0x52, 0x1f, 0xfb, 0x72, 0x6, 0x66, 0xfd, 0x11, 0x15, 0xf7, + 0xa, 0xf8, 0xc0, 0x5, 0xf7, 0x17, 0x6, 0xe0, 0xf7, 0x1a, 0x87, 0xfb, + 0x63, 0xfb, 0x9b, 0xfb, 0x30, 0x39, 0xfb, 0x58, 0x1f, 0xe, 0xf8, 0x5, + 0x8b, 0xdc, 0xf7, 0x8e, 0xdd, 0xf7, 0x74, 0xdc, 0x1, 0xe1, 0x16, 0xf8, + 0xbe, 0x6b, 0xa, 0xfc, 0x5d, 0x6, 0xc2, 0xf7, 0x8e, 0x5, 0xf8, 0x2a, + 0x6, 0x9c, 0xdd, 0x5, 0xfc, 0x29, 0x6, 0xb7, 0xf7, 0x74, 0x5, 0xf8, + 0x3e, 0x6b, 0xa, 0xfc, 0xa0, 0x6, 0xe, 0x32, 0xa, 0xf7, 0x53, 0x77, + 0x2a, 0xa, 0xf7, 0x1e, 0xc3, 0x36, 0xa, 0xe, 0x32, 0xa, 0xc3, 0xf7, + 0x1b, 0x2a, 0xa, 0xf7, 0x1, 0xc3, 0x30, 0xa, 0xe, 0x32, 0xa, 0xca, + 0xef, 0x2a, 0xa, 0xf7, 0xa7, 0xca, 0x2e, 0xa, 0xe, 0x32, 0xa, 0xbe, + 0xf7, 0x20, 0x2a, 0xa, 0xf7, 0x95, 0xbe, 0x56, 0xa, 0xf7, 0x20, 0x5, + 0xfb, 0x0, 0x6, 0xe, 0xf8, 0x3c, 0x8b, 0xdc, 0xf7, 0x8e, 0xdc, 0xf7, + 0x75, 0xdc, 0x1, 0xf9, 0x2c, 0xef, 0x3, 0xd8, 0x16, 0xf7, 0x9c, 0x6, + 0xf7, 0x6a, 0xf7, 0x65, 0xf7, 0x12, 0xf7, 0xbf, 0xf7, 0x44, 0xfb, 0xb, + 0xf7, 0x9, 0xfb, 0x55, 0x1f, 0xfb, 0x6f, 0x6, 0x49, 0xfb, 0xc6, 0x5, + 0x3a, 0x6, 0x7a, 0x3a, 0x5, 0xdb, 0x6, 0xb6, 0xfb, 0x8e, 0x15, 0xc2, + 0xf7, 0x8e, 0x5, 0xf7, 0x64, 0x6b, 0xa, 0xfb, 0x65, 0x6, 0xbd, 0xf7, + 0x75, 0x5, 0xf7, 0x14, 0x6, 0xe1, 0xf7, 0x1c, 0x86, 0xfb, 0x63, 0xfb, + 0x9b, 0xfb, 0x33, 0x3a, 0xfb, 0x58, 0x1f, 0xe, 0xf8, 0x5, 0x8b, 0xd8, + 0xf7, 0x50, 0xcb, 0xc9, 0xcb, 0xf7, 0x4e, 0xd8, 0x1, 0xd0, 0xf0, 0x3, + 0x99, 0xf7, 0x9d, 0x15, 0xc2, 0x6, 0xfb, 0x38, 0x97, 0xf2, 0x26, 0xf7, + 0x4b, 0x1b, 0xb8, 0xb6, 0x92, 0x9a, 0xb2, 0x1f, 0xa3, 0xf0, 0x5, 0x6c, + 0x62, 0x5b, 0x7c, 0x55, 0x1b, 0xfb, 0x12, 0x44, 0xda, 0xf7, 0x1, 0x83, + 0x1f, 0xf7, 0xcb, 0x6, 0x9a, 0xcb, 0x5, 0xfb, 0xda, 0x6, 0x8e, 0x9f, + 0x8c, 0xa1, 0x90, 0x9f, 0x8, 0xf7, 0xdf, 0x6, 0x9a, 0xcb, 0x5, 0xfb, + 0xd9, 0x6, 0xf6, 0xb8, 0xdf, 0xda, 0xf7, 0x17, 0x1b, 0xc6, 0xc4, 0x7b, + 0x5f, 0xae, 0x1f, 0xb6, 0xdc, 0x5, 0xb3, 0x54, 0x45, 0x9b, 0x46, 0x1b, + 0xfb, 0x46, 0xfb, 0x1c, 0xfb, 0x3, 0xfb, 0x2c, 0x56, 0x1f, 0x4a, 0x6, + 0x7d, 0x4b, 0x5, 0xc9, 0x6, 0x87, 0x77, 0x89, 0x75, 0x8a, 0x77, 0x8, + 0x62, 0x6, 0xe, 0xf7, 0xcd, 0xa0, 0x76, 0xf7, 0xd9, 0xdd, 0xf7, 0x7a, + 0xdc, 0x1, 0xe1, 0x16, 0xf0, 0x6, 0xd3, 0xf7, 0xd9, 0x5, 0xf8, 0x19, + 0x6, 0x9d, 0xdd, 0x5, 0xfc, 0x19, 0x6, 0xbd, 0xf7, 0x7a, 0x5, 0xf8, + 0x1b, 0x6b, 0xa, 0xfc, 0x81, 0x6, 0xe, 0x6c, 0xa, 0xf7, 0x70, 0xdd, + 0xf7, 0xb8, 0xdc, 0x1, 0xf7, 0x3, 0xef, 0x3, 0xf8, 0x43, 0xf7, 0xae, + 0x15, 0xf7, 0x75, 0x6, 0x6a, 0xfb, 0x31, 0x5, 0x78, 0x67, 0x37, 0x5f, + 0x33, 0x1b, 0xfb, 0x15, 0x40, 0xf7, 0x1, 0xf7, 0x6, 0xf7, 0x69, 0xf7, + 0xc, 0xf7, 0x32, 0xf7, 0x49, 0xe5, 0xd8, 0x5f, 0xfb, 0x4, 0xa2, 0x1f, + 0xec, 0x95, 0x5, 0xf7, 0x26, 0x81, 0xfb, 0x20, 0xdc, 0xfb, 0x1a, 0x1b, + 0xfb, 0xa6, 0xfb, 0x16, 0xfb, 0x87, 0xfb, 0x65, 0x26, 0xb0, 0xfb, 0x5f, + 0xf7, 0xa0, 0xf7, 0xe, 0xf7, 0x2, 0xbc, 0xb2, 0xc9, 0x1f, 0xc9, 0xf7, + 0xbb, 0x5, 0xfb, 0xd8, 0x6, 0xe, 0xf8, 0x3c, 0xa0, 0x76, 0xf7, 0xe5, + 0xdc, 0xf7, 0xc0, 0x77, 0x1, 0xd8, 0x16, 0xed, 0x6, 0xd1, 0xf7, 0xe5, + 0x5, 0xf8, 0xb, 0x6, 0x45, 0xfb, 0xe5, 0x5, 0xeb, 0x6, 0xf7, 0x2d, + 0xf9, 0x62, 0x57, 0xa, 0x4b, 0xfb, 0xc0, 0x5, 0xfc, 0xc, 0x6, 0xcb, + 0xf7, 0xc0, 0x4d, 0xa, 0xe, 0x77, 0x2d, 0xa, 0xe6, 0x16, 0xeb, 0x6, + 0xf7, 0x2e, 0xf9, 0x62, 0x4d, 0xa, 0xe, 0x54, 0xa, 0xf7, 0x6a, 0x77, + 0x1, 0xf7, 0x85, 0xf9, 0xa8, 0x15, 0xd6, 0x6, 0xf7, 0x23, 0x6d, 0xa, + 0xfb, 0x8, 0x6, 0xfb, 0x90, 0xfe, 0x35, 0x15, 0x34, 0xa, 0xe, 0x54, + 0xa, 0xd6, 0xf7, 0x1f, 0x1, 0xf7, 0x2f, 0xf9, 0xaa, 0x6e, 0xa, 0xda, + 0xe4, 0xb2, 0x32, 0x5, 0xd9, 0x6, 0x4e, 0x6f, 0xa, 0x2a, 0x6, 0xfb, + 0x55, 0xfe, 0x35, 0x15, 0x34, 0xa, 0xe, 0x5c, 0xa, 0xf9, 0x6d, 0x77, + 0x1, 0xf7, 0xed, 0xf9, 0xb4, 0x15, 0xe7, 0x6, 0xa0, 0xf0, 0x3d, 0xa, + 0xfb, 0x5e, 0x26, 0x15, 0xe7, 0x6, 0xa1, 0xf0, 0x5, 0x2e, 0x6, 0x2d, + 0xfe, 0x19, 0x15, 0x34, 0xa, 0xe, 0x54, 0xa, 0xf7, 0x6a, 0x77, 0x1, + 0xe6, 0x16, 0x34, 0xa, 0xb9, 0xc0, 0x15, 0xce, 0x6, 0x54, 0x6d, 0xa, + 0x23, 0x6, 0xe, 0xf7, 0x5e, 0x78, 0xdb, 0xf9, 0x25, 0x77, 0x1, 0xba, + 0xea, 0x3, 0xba, 0xf7, 0x60, 0x15, 0xfb, 0x2c, 0xc3, 0x44, 0xf7, 0x15, + 0xf7, 0x31, 0xbe, 0xf5, 0xf1, 0xa2, 0x1e, 0xf7, 0xa, 0xf8, 0xa5, 0x5, + 0x24, 0x6, 0xfb, 0x8, 0xfc, 0xa5, 0x5, 0x49, 0x7d, 0x61, 0x4d, 0x42, + 0x1b, 0x5b, 0x60, 0xbe, 0xee, 0x1f, 0xe, 0xf8, 0x5, 0x2d, 0xa, 0xf9, + 0x1f, 0xf7, 0x21, 0x3, 0xd7, 0x16, 0xf0, 0x6, 0xbe, 0xf7, 0x7e, 0xf7, + 0x31, 0xf7, 0x17, 0xf7, 0x6d, 0xfc, 0x1, 0x5, 0xf7, 0x4, 0x6, 0xfb, + 0x93, 0xf8, 0x3f, 0xf7, 0xf1, 0xf7, 0xb7, 0x5, 0xfb, 0x21, 0x6, 0xfc, + 0x30, 0xfb, 0xf1, 0xdb, 0xf7, 0xf1, 0x5, 0x26, 0x6, 0xe, 0x8b, 0xdc, + 0xf9, 0x11, 0x77, 0x1, 0xd7, 0x16, 0xf8, 0x62, 0x55, 0xa, 0xfc, 0x2, + 0x6, 0xf7, 0x19, 0xf9, 0x11, 0x50, 0xa, 0xe, 0x8b, 0xdc, 0xf9, 0x11, + 0x77, 0x1, 0xd1, 0x16, 0xf8, 0x68, 0x55, 0xa, 0xfc, 0x7, 0x6, 0xc4, + 0xf7, 0xa7, 0xf7, 0x54, 0xf7, 0x0, 0x9c, 0xdc, 0xfb, 0x54, 0x21, 0xc6, + 0xf7, 0xab, 0x50, 0xa, 0x43, 0xfb, 0xe8, 0x30, 0x59, 0x7a, 0x37, 0xe6, + 0xbf, 0x5, 0xe, 0xf8, 0xab, 0x2d, 0xa, 0xd4, 0x16, 0xe9, 0x6, 0xf7, + 0xd, 0xf8, 0xf4, 0xe2, 0xfc, 0xf4, 0x5, 0xe8, 0x6, 0xf7, 0xf0, 0xf8, + 0xf9, 0xfb, 0x28, 0xfc, 0xf9, 0x5, 0xea, 0x6, 0xf7, 0x2b, 0xf9, 0x62, + 0x5, 0xfb, 0xc, 0x6, 0xfb, 0xfc, 0xfd, 0x15, 0x30, 0xf9, 0x15, 0x5, + 0xfb, 0xa, 0x6, 0xe, 0xf8, 0x3c, 0x2d, 0xa, 0xcb, 0xf9, 0x67, 0x3, + 0xd7, 0x16, 0xea, 0x6, 0xf7, 0xb, 0xf8, 0xf4, 0xf7, 0x99, 0xfc, 0xf4, + 0x5, 0xeb, 0x6, 0xf7, 0x2c, 0xf9, 0x62, 0x4d, 0xa, 0xfb, 0xf, 0xfc, + 0xf5, 0xfb, 0x97, 0xf8, 0xf5, 0x4d, 0xa, 0xe, 0xf8, 0x3c, 0xa0, 0x76, + 0xf9, 0x6d, 0x77, 0xf7, 0xa, 0x76, 0xf7, 0x3, 0x77, 0x12, 0xd7, 0x16, + 0xea, 0x6, 0xf7, 0xd, 0xf8, 0xfc, 0x48, 0xa, 0xf7, 0x95, 0xfc, 0xfc, + 0x5, 0xeb, 0x6, 0xf7, 0x2c, 0xf9, 0x6d, 0x4d, 0xa, 0xfb, 0xf, 0xfc, + 0xfe, 0x4e, 0xa, 0xfb, 0x94, 0xf8, 0xfe, 0x4d, 0xa, 0xf7, 0x19, 0xd8, + 0x15, 0xca, 0x66, 0xa, 0xa4, 0x1b, 0x13, 0x10, 0xa5, 0xa0, 0x83, 0x82, + 0x9e, 0x1f, 0x7f, 0xa3, 0xa0, 0x7e, 0xa4, 0x1b, 0xc6, 0xad, 0xc2, 0xc1, + 0x90, 0x1f, 0x4e, 0x69, 0xa, 0x5e, 0xa, 0x13, 0x30, 0x96, 0x72, 0x6f, + 0x96, 0x6d, 0x1b, 0x46, 0x7a, 0x57, 0x50, 0x7b, 0x1f, 0xe, 0x6c, 0xa, + 0xf8, 0xe6, 0xdc, 0x1, 0xf7, 0x18, 0xef, 0xf8, 0x59, 0xef, 0x3, 0xf7, + 0x21, 0xf7, 0xbb, 0x15, 0xfb, 0x40, 0xf5, 0xfb, 0x22, 0xf7, 0x47, 0xf7, + 0x60, 0xf7, 0x34, 0xf7, 0x54, 0xf7, 0x80, 0xf7, 0x52, 0xfb, 0x1, 0xf7, + 0x1e, 0xfb, 0x47, 0xfb, 0x55, 0xfb, 0x3c, 0xfb, 0x3f, 0xfb, 0xa3, 0x1e, + 0xe5, 0x16, 0xf7, 0x89, 0xf7, 0x28, 0xf7, 0x8, 0xf7, 0xf, 0xf0, 0xec, + 0x30, 0xfb, 0x30, 0xfb, 0x46, 0xfb, 0x2, 0xfb, 0x3d, 0xfb, 0x31, 0x27, + 0x25, 0xdc, 0xf7, 0x2c, 0x1e, 0xe, 0xf9, 0x52, 0x78, 0xdc, 0x46, 0xd0, + 0x46, 0xde, 0xf7, 0x8f, 0xde, 0xf7, 0x7b, 0xdf, 0x46, 0xdc, 0x12, 0xed, + 0xe8, 0x13, 0x3a, 0xf8, 0xa6, 0x84, 0x15, 0xf8, 0x67, 0x6, 0x9d, 0xde, + 0x5, 0xfc, 0x3, 0x6, 0xc2, 0xf7, 0x8f, 0x5, 0xf7, 0xd4, 0x6, 0x9d, + 0xde, 0x5, 0xfb, 0xd4, 0x6, 0xbd, 0xf7, 0x7b, 0x5, 0xf7, 0xdb, 0x6, + 0x9d, 0xdf, 0x5, 0xfc, 0x41, 0x6, 0x78, 0x34, 0x5, 0x13, 0x96, 0xdb, + 0x51, 0x3c, 0x9e, 0x52, 0x1b, 0xfb, 0x66, 0xfb, 0x3a, 0xfb, 0x4b, 0xfb, + 0x93, 0xfb, 0x69, 0xf7, 0xe, 0x22, 0xf7, 0x26, 0xf2, 0xba, 0xb6, 0xa0, + 0xa5, 0x1f, 0x13, 0x56, 0xfb, 0xf3, 0xf7, 0x92, 0x15, 0xf7, 0x2c, 0xf7, + 0x3, 0xf7, 0x61, 0xf7, 0x39, 0xde, 0xdc, 0x4f, 0x25, 0x59, 0x6c, 0xfb, + 0x32, 0x74, 0x50, 0x1e, 0x6d, 0x80, 0x59, 0xfb, 0x1b, 0xfb, 0x21, 0x1b, + 0xfb, 0x23, 0x62, 0xef, 0xf7, 0x1d, 0x1f, 0xe, 0xf8, 0x74, 0x78, 0xdd, + 0xf9, 0x7e, 0x76, 0xf7, 0x21, 0x77, 0x1, 0xf4, 0xf0, 0xf8, 0x9b, 0xf0, + 0x3, 0xf8, 0x51, 0xf9, 0xa8, 0x15, 0xda, 0x6, 0xf7, 0x1d, 0x6d, 0xa, + 0xfb, 0xa, 0x6, 0xfc, 0x4a, 0x28, 0xa, 0xf8, 0x74, 0x78, 0xdd, 0xf9, + 0xc4, 0xbd, 0x1, 0xf4, 0xf0, 0xf7, 0xc4, 0xf2, 0xf7, 0x4, 0xf0, 0x3, + 0xf8, 0x8, 0xf9, 0xa9, 0x15, 0xec, 0x6, 0xe0, 0xe5, 0xb4, 0x31, 0x5, + 0xdd, 0x6, 0x4b, 0xf7, 0x20, 0x5, 0x24, 0x6, 0xfc, 0x29, 0x28, 0xa, + 0x6c, 0xa, 0xf9, 0x74, 0xf2, 0x1, 0x68, 0xa, 0x3, 0xf4, 0xf7, 0xc1, + 0x21, 0xa, 0xf8, 0x1, 0xf8, 0x8a, 0x15, 0xec, 0x6, 0xa2, 0xf2, 0x57, + 0xa, 0xfb, 0x68, 0x24, 0x15, 0xec, 0x6, 0xa1, 0xf2, 0x5, 0x2a, 0x6, + 0xe, 0xf8, 0x74, 0x78, 0xdd, 0xf8, 0xef, 0xdd, 0x1, 0x68, 0xa, 0x3, + 0xf8, 0x94, 0xf9, 0xa9, 0x15, 0xd4, 0x6, 0x4f, 0xf7, 0x20, 0x5, 0xfb, + 0x5, 0x6, 0xfb, 0xc7, 0x28, 0xa, 0xf8, 0x74, 0x8d, 0x76, 0xae, 0xdf, + 0xf8, 0x9b, 0xdf, 0xad, 0x77, 0x1, 0xbb, 0xe0, 0xf8, 0x97, 0xe5, 0x3, + 0xa6, 0x9b, 0x15, 0xba, 0x68, 0xdd, 0xe3, 0x5, 0x67, 0xc3, 0xcd, 0x7a, + 0xcf, 0x1b, 0xf7, 0x77, 0xf7, 0x39, 0xf7, 0x43, 0xf7, 0x65, 0xce, 0x81, + 0xdd, 0x4e, 0xcb, 0x1f, 0xdf, 0xe3, 0x5c, 0xaf, 0x3a, 0x34, 0x5, 0xbe, + 0x3b, 0x33, 0x8d, 0x6f, 0x1b, 0xfb, 0x84, 0xfb, 0x1f, 0xfb, 0x54, 0xfb, + 0x5c, 0x4e, 0x92, 0x3e, 0xc3, 0x49, 0x1f, 0xc8, 0xc8, 0x15, 0x6c, 0xb2, + 0x83, 0xc6, 0xba, 0x1a, 0xf7, 0x3b, 0xf7, 0x1a, 0xf7, 0x1f, 0xf7, 0x35, + 0xc0, 0xc3, 0x81, 0x74, 0xa6, 0x1e, 0xfb, 0xf3, 0xfc, 0x5c, 0x15, 0xf8, + 0x1b, 0xf8, 0x35, 0x5, 0x9e, 0x6e, 0xa4, 0x55, 0x49, 0x1a, 0xfb, 0x2c, + 0xfb, 0x13, 0xfb, 0x26, 0xfb, 0x39, 0x5a, 0x52, 0x8e, 0xa6, 0x66, 0x1e, + 0xe, 0x6c, 0xa, 0xf9, 0x7b, 0xf7, 0x1, 0x8e, 0x77, 0x12, 0x68, 0xa, + 0x13, 0xd8, 0xf7, 0xf9, 0xf9, 0xb9, 0x15, 0xcb, 0x6, 0xa4, 0x90, 0x97, + 0x9c, 0xa4, 0x1b, 0xa7, 0xa0, 0x83, 0x82, 0x9e, 0x1f, 0x7f, 0xa4, 0xa0, + 0x7d, 0xa6, 0x1b, 0xc8, 0xae, 0xc2, 0xc2, 0x90, 0x1f, 0x4d, 0x69, 0xa, + 0x70, 0x1b, 0x13, 0xb8, 0x7b, 0x75, 0x96, 0x96, 0x71, 0x1f, 0x95, 0x73, + 0x6f, 0x95, 0x6e, 0x1b, 0x13, 0xd8, 0x44, 0x79, 0x57, 0x4f, 0x7c, 0x1f, + 0xfb, 0x90, 0xfc, 0x8c, 0x21, 0xa, 0xe, 0x35, 0xa, 0xf7, 0xb6, 0xdc, + 0xf7, 0xa0, 0xda, 0x1, 0xf9, 0x16, 0xea, 0x3, 0xe1, 0x16, 0xeb, 0x6, + 0xc7, 0xf7, 0xb6, 0x5, 0xf7, 0x47, 0x6, 0xf7, 0x32, 0xf7, 0x32, 0xd7, + 0xf7, 0x40, 0xf7, 0x1b, 0x33, 0xb8, 0xfb, 0x7, 0x1f, 0xfb, 0xbf, 0x6, + 0xa3, 0xfb, 0xef, 0x15, 0xc2, 0xf7, 0xa0, 0x5, 0xf7, 0x4c, 0x6, 0xd1, + 0xd5, 0x8a, 0x27, 0xfb, 0x1c, 0xfb, 0x18, 0x6c, 0x2d, 0x1f, 0xe, 0xf8, + 0x74, 0x68, 0x76, 0xcf, 0xd8, 0xf8, 0xcf, 0xd8, 0x1, 0xf7, 0x1c, 0xf0, + 0xf8, 0x7c, 0xf0, 0x3, 0xf8, 0xcd, 0xb7, 0x15, 0xb0, 0x5f, 0xb0, 0x6c, + 0xb1, 0x72, 0xb3, 0xc3, 0x18, 0x7d, 0x95, 0x5e, 0xa6, 0x69, 0xb5, 0x8, + 0xef, 0xd8, 0xc9, 0xf7, 0xf, 0xf7, 0x23, 0x1a, 0xf7, 0x4a, 0xfb, 0x1, + 0xf7, 0x19, 0xfb, 0x49, 0xfb, 0x75, 0xfb, 0x1a, 0xfb, 0x67, 0xfb, 0x60, + 0xfb, 0xb9, 0xf7, 0x7b, 0x7a, 0xcb, 0xb6, 0xb9, 0x95, 0xa1, 0xb7, 0x1e, + 0xfb, 0x24, 0xf7, 0x10, 0x15, 0xac, 0x7a, 0x9f, 0x7c, 0xad, 0x6c, 0x8, + 0x80, 0x6d, 0x6c, 0x86, 0x6c, 0x1b, 0x53, 0xfb, 0x18, 0xbb, 0xf7, 0x4d, + 0xf7, 0x52, 0xf7, 0xa, 0xf7, 0x28, 0xf7, 0x2d, 0xe5, 0xf5, 0x3d, 0xfb, + 0x34, 0x26, 0x60, 0xfb, 0x7, 0x37, 0x49, 0x1f, 0x83, 0x94, 0x76, 0x9f, + 0x6c, 0xad, 0x55, 0xa3, 0x19, 0xe, 0xf8, 0x3c, 0xa0, 0x76, 0xf7, 0xd2, + 0xd8, 0xf7, 0x88, 0xda, 0x1, 0xf9, 0x3d, 0xe7, 0x3, 0xe3, 0x16, 0xeb, + 0x6, 0xcd, 0xf7, 0xd2, 0x5, 0xf7, 0x2, 0x6, 0xf7, 0x10, 0xaf, 0x2f, + 0x2e, 0xaf, 0x1f, 0xbf, 0xfb, 0x19, 0x5, 0xf6, 0x6, 0x54, 0xf7, 0x19, + 0x6d, 0xd3, 0x64, 0xd2, 0x4d, 0xb9, 0x19, 0xbe, 0x92, 0xf7, 0x55, 0xa4, + 0xf7, 0x4f, 0x1a, 0xf7, 0x43, 0xfb, 0x25, 0x8d, 0x30, 0x1e, 0xfb, 0xbf, + 0x6, 0xa8, 0xfb, 0xd7, 0x15, 0xbd, 0xf7, 0x88, 0x5, 0xf7, 0x70, 0x6, + 0xbe, 0xe8, 0x87, 0x2d, 0xfb, 0x27, 0xfb, 0x2a, 0x8c, 0xfb, 0x19, 0x1f, + 0xe, 0xf8, 0x5, 0x78, 0xdb, 0xf8, 0xe8, 0xdb, 0x12, 0xe5, 0xeb, 0x86, + 0xea, 0xf7, 0xaf, 0xee, 0x62, 0xeb, 0x13, 0xe8, 0xe5, 0xf7, 0x7a, 0x15, + 0xfb, 0x48, 0xf7, 0x1c, 0x46, 0xf7, 0x28, 0xf7, 0x43, 0xf7, 0x1, 0xe6, + 0xf7, 0x9, 0xf7, 0xb, 0x36, 0xb7, 0xfb, 0x21, 0xc8, 0x1e, 0x13, 0xd4, + 0xfb, 0x0, 0xba, 0x5b, 0x9d, 0xca, 0x1a, 0xe8, 0xf7, 0x4, 0xa2, 0xba, + 0xe1, 0xeb, 0x53, 0x2f, 0x1e, 0xeb, 0x92, 0x5, 0xe0, 0x49, 0xf7, 0x1c, + 0xfb, 0x64, 0xfb, 0x2a, 0xfb, 0x0, 0x41, 0xfb, 0xe, 0xfb, 0xe, 0xf7, + 0x0, 0x5e, 0xf7, 0x0, 0x5c, 0x1e, 0x13, 0xe8, 0xf5, 0x5d, 0xc3, 0x70, + 0x4a, 0x1a, 0x4a, 0x4e, 0x4c, 0xfb, 0xd, 0xfb, 0x40, 0x78, 0xe6, 0xe1, + 0x1e, 0xe, 0xf8, 0x5, 0x78, 0xdd, 0xf8, 0xf1, 0xdd, 0xb2, 0xf7, 0x20, + 0x12, 0xe5, 0xec, 0x86, 0xeb, 0xf7, 0xb1, 0xef, 0x13, 0xf4, 0xe5, 0xf7, + 0x7f, 0x15, 0xfb, 0x4c, 0xf7, 0x1d, 0x45, 0xf7, 0x29, 0xf7, 0x45, 0xf7, + 0x2, 0xe6, 0xf7, 0xc, 0xf7, 0xf, 0x35, 0xb6, 0xfb, 0x22, 0xcb, 0x1e, + 0x13, 0xec, 0xfb, 0x1, 0xbb, 0x5b, 0x9c, 0xcc, 0x1a, 0xea, 0xf7, 0x3, + 0xa0, 0xbc, 0xe1, 0xe7, 0x62, 0xfb, 0x0, 0x1e, 0xec, 0x93, 0x5, 0xeb, + 0x4e, 0xf7, 0x13, 0xfb, 0x66, 0xfb, 0x2b, 0xfb, 0x1, 0x41, 0xfb, 0x10, + 0xfb, 0x11, 0xf7, 0x1, 0x5d, 0xf7, 0x0, 0x5b, 0x1e, 0xf6, 0x5e, 0xc4, + 0x6e, 0x48, 0x1a, 0x4a, 0x4e, 0x4b, 0xfb, 0xf, 0x1e, 0x13, 0xf4, 0xfb, + 0x20, 0x5a, 0xe0, 0xea, 0x88, 0x1f, 0xf7, 0x70, 0xf8, 0xb6, 0x15, 0xef, + 0x6, 0xf7, 0x1b, 0xf7, 0x20, 0x5, 0x2d, 0x6, 0x38, 0x31, 0x63, 0xe5, + 0x5, 0x39, 0x6, 0xe, 0xf7, 0xcd, 0xa0, 0x76, 0xf9, 0x11, 0xdc, 0x1, + 0xf7, 0x94, 0x16, 0xee, 0x6, 0xf7, 0x1c, 0xf9, 0x11, 0x5, 0xf7, 0x85, + 0x6b, 0xa, 0xfc, 0xdc, 0x6, 0x79, 0x3a, 0x5, 0xf7, 0x89, 0x6, 0xe, + 0x35, 0xa, 0xf7, 0x26, 0xdc, 0xf7, 0xa0, 0xda, 0xf7, 0x24, 0x77, 0x1, + 0xf8, 0xfd, 0xea, 0x3, 0xe1, 0x16, 0xeb, 0x6, 0xaa, 0xf7, 0x26, 0x5, + 0xf7, 0x47, 0x6, 0xf7, 0x33, 0xf7, 0x35, 0xcd, 0xf7, 0x41, 0xf7, 0x1c, + 0x30, 0xc0, 0xfb, 0x7, 0x1f, 0xfb, 0x61, 0x6, 0xaa, 0xf7, 0x24, 0x50, + 0xa, 0x85, 0xfc, 0x7f, 0x15, 0xc2, 0xf7, 0xa0, 0x5, 0xf7, 0x4d, 0x6, + 0xd1, 0xd8, 0x82, 0x26, 0xfb, 0x1d, 0xfb, 0x1b, 0x76, 0x2c, 0x1f, 0xe, + 0xf8, 0x3c, 0x78, 0xdd, 0xf9, 0x23, 0x42, 0xa, 0xf7, 0x77, 0xf9, 0x62, + 0x15, 0x8f, 0xfb, 0x0, 0xfc, 0x7b, 0x65, 0xfb, 0x22, 0xf7, 0x9, 0x45, + 0xf7, 0x27, 0xf7, 0x91, 0xbb, 0xf7, 0x7a, 0xde, 0x9d, 0x1f, 0xe6, 0xf8, + 0x3c, 0x57, 0xa, 0x30, 0xfc, 0x3c, 0x5, 0xfb, 0x10, 0x72, 0x5c, 0x20, + 0xfb, 0x2e, 0x1b, 0x39, 0x3b, 0xb7, 0xe1, 0x1f, 0xf4, 0xf8, 0xa1, 0x5, + 0xe, 0xf8, 0x3c, 0x78, 0xdf, 0xf9, 0x31, 0x77, 0xe9, 0x76, 0xf7, 0x22, + 0x42, 0xa, 0xf8, 0x49, 0xf9, 0xa7, 0x15, 0xd5, 0x6, 0xf7, 0x19, 0xf7, + 0x22, 0x5, 0xfb, 0x7, 0x6, 0xfb, 0xc1, 0xfb, 0x57, 0x15, 0x8b, 0x22, + 0xfc, 0x85, 0x64, 0x1a, 0xfb, 0x25, 0xf7, 0xa, 0x43, 0xf7, 0x28, 0xf7, + 0x90, 0xbb, 0xf7, 0x7f, 0xe1, 0x9c, 0x1e, 0xe6, 0xf8, 0x44, 0x57, 0xa, + 0x32, 0xfc, 0x44, 0x5, 0xfb, 0xb, 0x75, 0x48, 0xfb, 0xa, 0xfb, 0x1e, + 0x1b, 0x3a, 0x39, 0xb8, 0xe3, 0x1f, 0xf4, 0xf8, 0xac, 0x5, 0xe, 0xf8, + 0x3c, 0x78, 0xdf, 0xf9, 0x32, 0x42, 0xa, 0xf8, 0x2, 0xf9, 0xa8, 0x15, + 0xe8, 0x6, 0xdd, 0xe5, 0xb3, 0x31, 0x5, 0xdb, 0x6, 0x4d, 0xf7, 0x21, + 0x47, 0xa, 0xfb, 0xa3, 0xfb, 0x56, 0x2c, 0xa, 0xf8, 0x3c, 0x78, 0xde, + 0xf9, 0x2b, 0x77, 0xf7, 0x56, 0x42, 0xa, 0xf8, 0xcb, 0xf9, 0xb2, 0x15, + 0xe9, 0x6, 0xa0, 0xf2, 0x5, 0x2d, 0x6, 0xfb, 0x62, 0x24, 0x15, 0xe9, + 0x6, 0xa1, 0xf2, 0x5, 0x2d, 0x6, 0xfb, 0x44, 0xfb, 0x3a, 0x2c, 0xa, + 0xf8, 0x3c, 0x78, 0xdf, 0xf9, 0x33, 0x77, 0xd4, 0xf7, 0x20, 0x1, 0xf7, + 0xf, 0xeb, 0x3, 0xf7, 0x77, 0xf9, 0x74, 0x15, 0x8b, 0x23, 0xfc, 0x87, + 0x64, 0x1a, 0xfb, 0x25, 0xf7, 0x9, 0x43, 0xf7, 0x27, 0xf7, 0x92, 0xbb, + 0xf7, 0x80, 0xe0, 0x9d, 0x1e, 0xe5, 0xf8, 0x46, 0x57, 0xa, 0x33, 0xfc, + 0x46, 0x5, 0xfb, 0xb, 0x74, 0x48, 0xfb, 0xa, 0xfb, 0x1f, 0x1b, 0x39, + 0x3a, 0xb8, 0xe3, 0x1f, 0xf4, 0xf8, 0xae, 0x5, 0xf7, 0x4e, 0xc0, 0x15, + 0xd2, 0x6, 0x50, 0xf7, 0x20, 0x5, 0xfb, 0x2, 0x6, 0xe, 0xf8, 0x5, + 0x2d, 0xa, 0xf7, 0xcc, 0x16, 0xf1, 0x6, 0xf8, 0x16, 0xf9, 0x62, 0x5, + 0x28, 0x6, 0xfb, 0xd5, 0xfc, 0xfd, 0xfb, 0x7, 0xf8, 0xfd, 0x3d, 0xa, + 0xe, 0xf9, 0x1a, 0x2d, 0xa, 0xf7, 0x52, 0xdf, 0xf7, 0xe6, 0xd9, 0xf7, + 0xbc, 0xea, 0x3, 0xf7, 0x68, 0x16, 0xec, 0x6, 0xf7, 0xb3, 0xf8, 0xd0, + 0x48, 0xa, 0xa7, 0xfc, 0xd0, 0x5, 0xf0, 0x6, 0xf7, 0xf6, 0xf9, 0x62, + 0x4d, 0xa, 0xfb, 0xac, 0xfc, 0xe5, 0x4e, 0xa, 0x70, 0xf8, 0xe5, 0x5, + 0x2a, 0x6, 0xfb, 0xb9, 0xfc, 0xde, 0x89, 0x8d, 0x76, 0xf8, 0xdc, 0x4d, + 0xa, 0xe, 0xf8, 0x5, 0x2d, 0xa, 0x9e, 0x16, 0xf7, 0xe, 0x6, 0xf7, + 0x92, 0xf7, 0xb4, 0xf7, 0x2b, 0xfb, 0xb4, 0x5, 0xef, 0x6, 0xfb, 0x51, + 0xf7, 0xee, 0xf7, 0xe1, 0xf8, 0x8, 0x5, 0xfb, 0xc, 0x6, 0xfb, 0x98, + 0xfb, 0xbc, 0xfb, 0x30, 0xf7, 0xbc, 0x5, 0x26, 0x6, 0xf7, 0x57, 0xfb, + 0xf8, 0x5, 0xe, 0xf8, 0x5, 0x2d, 0xa, 0xf7, 0x3b, 0xef, 0xf8, 0x40, + 0xf7, 0x3, 0x3, 0xf7, 0xda, 0x16, 0xe8, 0x6, 0xc2, 0xf7, 0xa1, 0xf7, + 0xe0, 0xf8, 0x55, 0x51, 0xa, 0xfb, 0xf9, 0xfb, 0x3d, 0xf7, 0xf9, 0x47, + 0xa, 0xf7, 0x6b, 0xfc, 0x4d, 0x5, 0xe, 0x35, 0xa, 0xfa, 0x35, 0x77, + 0x1, 0xf7, 0xda, 0x16, 0xe7, 0x6, 0xc3, 0xf7, 0xaa, 0xf7, 0xe0, 0xf8, + 0x5f, 0x51, 0xa, 0xfc, 0x0, 0xfb, 0x3d, 0xf8, 0x0, 0x47, 0xa, 0xf7, + 0x6a, 0xfc, 0x57, 0x5, 0xb1, 0xf8, 0x8c, 0x15, 0xd2, 0x6, 0xf7, 0x13, + 0x6f, 0xa, 0xfb, 0x1, 0x6, 0xe, 0x35, 0xa, 0xf9, 0x6d, 0x77, 0xe5, + 0xf1, 0x1, 0xf7, 0xda, 0x16, 0xe7, 0x6, 0xc3, 0xf7, 0xa6, 0xf7, 0xe0, + 0xf8, 0x5b, 0x51, 0xa, 0xfb, 0xfd, 0xfb, 0x3d, 0xf7, 0xfd, 0x47, 0xa, + 0xf7, 0x6a, 0xfc, 0x5b, 0x5, 0xf7, 0x36, 0xf8, 0xa1, 0x15, 0xe5, 0x6, + 0x9f, 0xf1, 0x3f, 0xa, 0xfb, 0x57, 0x25, 0x15, 0xe4, 0x6, 0xa0, 0xf1, + 0x3e, 0xa, 0xf7, 0xcd, 0x8b, 0xdc, 0xf8, 0xc0, 0xdc, 0x1, 0x84, 0x16, + 0xf9, 0x2, 0x6, 0x9f, 0xdc, 0x5, 0xfc, 0x7f, 0x6, 0xf8, 0xe0, 0xf8, + 0xc6, 0x94, 0xd6, 0x5, 0xfc, 0xd8, 0x6, 0x77, 0x3a, 0xf8, 0x5d, 0x8c, + 0xfc, 0xe6, 0xfc, 0xca, 0x5, 0xe, 0xf7, 0xcd, 0x8b, 0xdf, 0xf9, 0x56, + 0xf7, 0x1f, 0x1, 0x84, 0x16, 0xf8, 0xf8, 0x6, 0x9f, 0xdf, 0x5, 0xfc, + 0x75, 0x6, 0xf8, 0xe0, 0xf8, 0xd6, 0x94, 0xd8, 0x5, 0xfc, 0xd8, 0x6, + 0x77, 0x37, 0xf8, 0x57, 0x8a, 0xfc, 0xe0, 0xfc, 0xd8, 0x5, 0xf8, 0x24, + 0xf9, 0x60, 0x15, 0xf7, 0x6, 0x6, 0xf7, 0x2d, 0x6f, 0xa, 0x20, 0x6, + 0x2d, 0x31, 0x5d, 0xe5, 0x45, 0xa, 0xe, 0x7c, 0xd1, 0x66, 0x76, 0xf7, + 0x8b, 0xcd, 0xf7, 0x2e, 0xd5, 0x12, 0xc8, 0xe7, 0x13, 0x78, 0xf8, 0x3c, + 0x88, 0x15, 0xe8, 0x6, 0x85, 0xa7, 0x87, 0x9f, 0xa3, 0x1a, 0xae, 0x91, + 0xad, 0x92, 0xad, 0x1e, 0xaa, 0xf7, 0x17, 0x5, 0x91, 0xa4, 0x8d, 0xa4, + 0xa2, 0x1a, 0xe7, 0x51, 0xd1, 0xfb, 0x25, 0x40, 0xfb, 0x25, 0x60, 0xfb, + 0xb, 0x73, 0x1e, 0xe9, 0x83, 0x5, 0xd8, 0xa7, 0xc6, 0x9e, 0xc6, 0x1b, + 0x13, 0xb8, 0xc1, 0xe3, 0x7b, 0xfb, 0xb, 0x6a, 0x1f, 0x65, 0x7d, 0x64, + 0x89, 0x3d, 0x88, 0x8, 0x4d, 0x89, 0xfb, 0x4b, 0x83, 0xfb, 0x36, 0x1a, + 0x29, 0xd6, 0x54, 0xe6, 0x1e, 0xe8, 0xca, 0xc0, 0xa5, 0xa9, 0x1f, 0x8c, + 0x7f, 0x8d, 0x6e, 0x93, 0x71, 0x8, 0xa2, 0xf7, 0xa1, 0x15, 0x82, 0x56, + 0x80, 0x5f, 0x71, 0x66, 0x8, 0x5a, 0x69, 0x53, 0x6f, 0x53, 0x1b, 0x3c, + 0x74, 0xb7, 0xb2, 0xe0, 0xe8, 0x9a, 0xc7, 0x91, 0x1f, 0xdd, 0x92, 0xa4, + 0x8d, 0xad, 0x98, 0x8, 0xe, 0x4a, 0xa, 0xf8, 0x39, 0x77, 0x12, 0xc8, + 0xea, 0xf7, 0xe1, 0xed, 0x13, 0x7c, 0xf7, 0xcf, 0xf8, 0xe9, 0x15, 0xda, + 0x6, 0xf7, 0x21, 0xf7, 0x1d, 0x5, 0xfb, 0xd, 0x6, 0x90, 0xfd, 0x75, + 0x22, 0xa, 0xe, 0x4a, 0xa, 0xf7, 0xb0, 0xf7, 0x1d, 0x12, 0x13, 0x70, + 0xf7, 0x7b, 0xf8, 0xe9, 0x15, 0xe8, 0x6, 0xdd, 0xe2, 0xb3, 0x34, 0x5, + 0xdb, 0x6, 0x4d, 0xf7, 0x1d, 0x47, 0xa, 0xc2, 0xfd, 0x75, 0x20, 0xa, + 0x13, 0xb0, 0x2b, 0xa, 0xae, 0xf8, 0xfa, 0x76, 0xf7, 0x21, 0x77, 0x1, + 0xf7, 0x8c, 0xf8, 0xe5, 0x15, 0xdd, 0x6, 0xf7, 0x25, 0x6d, 0xa, 0xfb, + 0x11, 0x6, 0xe, 0x7c, 0xd0, 0x67, 0x76, 0xf7, 0x8a, 0xcd, 0xf7, 0xbe, + 0xee, 0x12, 0xc8, 0xe5, 0xf7, 0xcf, 0xe8, 0x13, 0x7c, 0xf8, 0x44, 0xf8, + 0xf3, 0x15, 0xe9, 0x6, 0xa1, 0xee, 0x4d, 0xa, 0xfb, 0x62, 0x28, 0x15, + 0xea, 0x6, 0xa0, 0xee, 0x5, 0x2d, 0x6, 0xf7, 0x2a, 0xfd, 0x59, 0x22, + 0xa, 0xe, 0xf8, 0xe3, 0x7c, 0xd1, 0xf7, 0x4c, 0xcf, 0xf7, 0x35, 0xd0, + 0x8c, 0x77, 0x12, 0xc8, 0xe6, 0x13, 0xe8, 0xf8, 0x47, 0xf1, 0x15, 0x44, + 0xa8, 0xe3, 0x5d, 0xd6, 0x1b, 0xf7, 0x39, 0xcc, 0xf7, 0x1b, 0xbb, 0xa2, + 0x1f, 0x2f, 0x93, 0x5, 0x33, 0x5f, 0x4c, 0x6e, 0x57, 0x1b, 0x44, 0x50, + 0xcd, 0xf7, 0x6, 0x99, 0x1f, 0xf8, 0x19, 0x6, 0x8d, 0x9a, 0x90, 0xad, + 0xa9, 0x1a, 0xf7, 0x7, 0x46, 0xf3, 0xfb, 0x20, 0x49, 0x4b, 0x72, 0x5c, + 0x5d, 0x1e, 0x13, 0xd8, 0x9f, 0x7c, 0x5f, 0xc0, 0xfb, 0x0, 0x1b, 0xfb, + 0x2, 0x2c, 0x5c, 0xfb, 0x7, 0x65, 0x1f, 0xe4, 0x84, 0x5, 0x13, 0xe8, + 0xa6, 0x97, 0xa7, 0xd3, 0xf7, 0x4, 0x1b, 0xd7, 0xb9, 0x51, 0x38, 0x65, + 0x1f, 0x30, 0x76, 0xfb, 0xe, 0x89, 0x58, 0x7c, 0x8, 0x2f, 0x6f, 0x75, + 0x45, 0x57, 0x1a, 0x48, 0xb2, 0x34, 0xf7, 0x16, 0xf6, 0xc0, 0xc4, 0xc7, + 0xb8, 0x1e, 0x81, 0xf7, 0x30, 0x15, 0x54, 0x82, 0x67, 0xfb, 0x28, 0xfb, + 0x14, 0x1b, 0x42, 0x70, 0xb6, 0xb4, 0xde, 0xdc, 0x96, 0xc9, 0x91, 0x1f, + 0xd8, 0x92, 0xa3, 0x91, 0xa8, 0x91, 0x8, 0xf4, 0xbc, 0x15, 0xec, 0xa6, + 0xc8, 0xcb, 0xe1, 0x1b, 0xc8, 0xd8, 0x60, 0xfb, 0xa, 0x78, 0x1f, 0xe, + 0x4a, 0xa, 0xf7, 0xb0, 0xf7, 0x1d, 0x12, 0xc8, 0xe5, 0xf7, 0xcf, 0xe8, + 0x13, 0x7c, 0xf8, 0x37, 0x88, 0x22, 0xa, 0x4a, 0xf7, 0xdc, 0x56, 0xa, + 0xf7, 0x1d, 0x5, 0xfb, 0x2, 0x6, 0xe, 0xf8, 0x5, 0x7e, 0xd9, 0x50, + 0x76, 0xf9, 0x2b, 0xd1, 0x12, 0xd8, 0xe2, 0xcb, 0xe3, 0xf7, 0x30, 0xe4, + 0x13, 0xbc, 0xf7, 0x9e, 0xf8, 0x34, 0x15, 0x47, 0x6e, 0xfb, 0xd, 0x52, + 0xfb, 0x26, 0x1a, 0xfb, 0x7, 0xe3, 0x39, 0xf7, 0x14, 0xea, 0xbf, 0xb4, + 0xb6, 0xbf, 0x1e, 0x13, 0x7c, 0xa9, 0x63, 0xaf, 0x6b, 0x9c, 0x7d, 0xcd, + 0xbf, 0x18, 0x74, 0xa5, 0x6c, 0xac, 0x6f, 0xb0, 0xa6, 0xaa, 0xaf, 0xbb, + 0xa4, 0xbf, 0x40, 0xae, 0x18, 0x6a, 0x51, 0x76, 0x76, 0x7b, 0x79, 0x57, + 0xcc, 0x56, 0xea, 0x7c, 0xa6, 0x8, 0xdc, 0xb5, 0xed, 0xc3, 0xeb, 0x1a, + 0xca, 0x58, 0xd3, 0x23, 0xfb, 0x6, 0x4b, 0x2d, 0x3e, 0x58, 0x9b, 0x6d, + 0x9b, 0x67, 0x1e, 0xf7, 0x4a, 0xfb, 0xb9, 0x15, 0x13, 0xbc, 0x55, 0x57, + 0x59, 0x79, 0x60, 0x1b, 0x46, 0x4b, 0xb6, 0xd7, 0xe7, 0xe1, 0xbb, 0xbe, + 0xa3, 0x1f, 0xb1, 0x44, 0xcc, 0x31, 0xb1, 0x59, 0x8, 0x2e, 0xf7, 0xd2, + 0x15, 0x6d, 0xc4, 0x88, 0xa6, 0x93, 0x1a, 0xb9, 0xb2, 0xc2, 0xbd, 0xb1, + 0xa8, 0x6d, 0x66, 0x4a, 0x2d, 0x5c, 0x6e, 0x7d, 0x1e, 0xe, 0x7c, 0xd0, + 0x67, 0x76, 0xf7, 0x88, 0xcc, 0xf7, 0xa3, 0xb1, 0xf3, 0xb0, 0x12, 0xc8, + 0xe5, 0xf7, 0x22, 0xb0, 0xf6, 0xb1, 0x13, 0x7f, 0xf7, 0xb9, 0xf9, 0x2f, + 0x15, 0x59, 0xb5, 0x63, 0xbc, 0xbc, 0xb5, 0xb3, 0xbd, 0xbe, 0x62, 0xb1, + 0x59, 0x59, 0x62, 0x65, 0x58, 0x1e, 0xb0, 0x8a, 0x15, 0xa8, 0xa3, 0xa3, + 0xa9, 0xa8, 0xa3, 0x74, 0x6d, 0x6e, 0x73, 0x75, 0x6e, 0x6e, 0x72, 0xa1, + 0xa8, 0x1e, 0xe4, 0xfd, 0x31, 0x20, 0xa, 0x13, 0xbf, 0x2b, 0xa, 0xf7, + 0x3f, 0xf7, 0xb1, 0x76, 0xf8, 0x3c, 0x77, 0x1, 0xb5, 0xf7, 0x9c, 0x15, + 0xec, 0x6, 0xf7, 0x2a, 0xf7, 0xda, 0xf7, 0x2e, 0xfb, 0xda, 0x5, 0xeb, + 0x6, 0xfb, 0x63, 0xf8, 0x3c, 0x5, 0x37, 0x6, 0xe, 0xf7, 0xb2, 0xf7, + 0x49, 0xdf, 0x4b, 0x76, 0xc7, 0xe0, 0x8c, 0x77, 0x12, 0x13, 0x60, 0xf7, + 0x3, 0xf7, 0x48, 0x15, 0xa6, 0xa8, 0xaf, 0xac, 0xc2, 0x1b, 0xb6, 0xac, + 0x80, 0x7f, 0xa9, 0x1f, 0x13, 0x90, 0x7a, 0xb3, 0xae, 0x78, 0xb4, 0x1b, + 0xca, 0xb0, 0xa5, 0xa4, 0xa6, 0x1f, 0xe9, 0x7, 0x82, 0x82, 0x59, 0x57, + 0x4f, 0x1b, 0x60, 0x65, 0x9d, 0x9c, 0x63, 0x1f, 0x13, 0x60, 0x98, 0x6b, + 0x6a, 0x97, 0x66, 0x1b, 0x64, 0x58, 0x7e, 0x62, 0x66, 0x1f, 0xe, 0xe6, + 0xf8, 0x58, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0xf7, 0xb6, 0xc5, 0x3, 0xf7, + 0x96, 0xf8, 0x43, 0x15, 0xc8, 0xee, 0xcb, 0x28, 0xc3, 0xb3, 0x3a, 0xe2, + 0xf7, 0x9, 0xa4, 0x75, 0xcd, 0xfb, 0x2, 0x5f, 0x95, 0xf7, 0x5, 0x47, + 0x8a, 0x95, 0xfb, 0x5, 0xfb, 0x1, 0xb7, 0x76, 0x49, 0xf7, 0x7, 0x73, + 0x3d, 0x33, 0x5, 0xe, 0xf9, 0xc6, 0x61, 0xcb, 0x4b, 0xf7, 0x56, 0x81, + 0xcc, 0xf7, 0xe9, 0xca, 0xeb, 0xcb, 0x12, 0xf7, 0x81, 0xca, 0xf2, 0xdb, + 0xf8, 0x7f, 0xcb, 0x13, 0xbf, 0xf9, 0x49, 0xf7, 0x6a, 0x15, 0x70, 0x8e, + 0x90, 0x5e, 0xd8, 0x1b, 0xf7, 0x12, 0xf7, 0x1a, 0xf7, 0x23, 0xf7, 0x3a, + 0xf7, 0x3c, 0xfb, 0x12, 0xf7, 0x3f, 0xfb, 0x87, 0xfb, 0xdf, 0x26, 0xfb, + 0xa6, 0xfb, 0x3e, 0xfb, 0x66, 0xf7, 0x19, 0xfb, 0x46, 0xf7, 0xc6, 0x1f, + 0x13, 0x5f, 0xf7, 0xaa, 0xea, 0xf7, 0x3d, 0xa4, 0x97, 0x1f, 0x3d, 0x6, + 0x13, 0xbf, 0x5f, 0x6d, 0x30, 0x35, 0xfb, 0x4c, 0x1b, 0xfb, 0x5e, 0xfb, + 0x44, 0xe0, 0xf7, 0x83, 0xf7, 0x63, 0xf7, 0x27, 0xf7, 0x41, 0xf7, 0x6d, + 0xf7, 0x3e, 0xf7, 0x20, 0xfb, 0x4, 0xfb, 0x37, 0xfb, 0x2a, 0xfb, 0xd, + 0x33, 0x5d, 0x1f, 0x67, 0x83, 0x94, 0xca, 0x94, 0xb4, 0xc9, 0xf7, 0xb6, + 0x18, 0x3e, 0x6, 0x7c, 0x48, 0x5, 0xd5, 0x5e, 0x4c, 0x90, 0x73, 0x1b, + 0xfb, 0xc, 0x23, 0xfb, 0x26, 0xfb, 0x1a, 0x26, 0xca, 0x33, 0xe9, 0xc8, + 0xbe, 0xbb, 0xa3, 0xa0, 0x1f, 0xfb, 0x66, 0xf7, 0x9, 0x15, 0xd9, 0xbf, + 0xf7, 0x1f, 0xec, 0xbb, 0xc1, 0x6b, 0x2d, 0xfb, 0x6, 0x39, 0x26, 0x40, + 0x5d, 0x5b, 0xb3, 0xdf, 0x1e, 0xe, 0x7c, 0xd0, 0x67, 0x76, 0xf7, 0x89, + 0xcd, 0xf0, 0xd5, 0xf7, 0x83, 0x77, 0x12, 0xc8, 0xea, 0xf7, 0xe1, 0xee, + 0x13, 0x7e, 0xf7, 0x7e, 0xf8, 0xf7, 0x15, 0xcd, 0x6, 0xa4, 0x91, 0x97, + 0x9c, 0xa5, 0x1b, 0xa5, 0xa4, 0x82, 0x81, 0xa2, 0x1f, 0x7f, 0xa6, 0xa3, + 0x7f, 0x9e, 0x1b, 0xca, 0xaf, 0xc2, 0xc1, 0x90, 0x1f, 0x4b, 0x6, 0x7d, + 0x87, 0x84, 0x72, 0x70, 0x1b, 0x7c, 0x77, 0x95, 0x95, 0x74, 0x1f, 0x96, + 0x72, 0x6e, 0x96, 0x67, 0x1b, 0x42, 0x79, 0x57, 0x50, 0x7a, 0x1f, 0xf7, + 0x4d, 0xfc, 0xfa, 0x20, 0xa, 0x13, 0xae, 0x2b, 0xa, 0x7c, 0xd3, 0x64, + 0x76, 0xf8, 0x61, 0xd4, 0xf7, 0x4f, 0x77, 0x12, 0xf8, 0x80, 0xe7, 0x13, + 0x78, 0xc5, 0x88, 0x15, 0xdd, 0x6, 0x9f, 0xee, 0x48, 0xa, 0x13, 0xb8, + 0x4a, 0x9e, 0xce, 0x5d, 0xd3, 0x1b, 0xf7, 0x13, 0xf7, 0x1d, 0xf7, 0x19, + 0xf7, 0x5a, 0xf7, 0x5a, 0xfb, 0x20, 0x9c, 0x66, 0x4c, 0x5d, 0x6e, 0x63, + 0x5d, 0x1f, 0xc2, 0xf7, 0x94, 0x3d, 0xa, 0x13, 0x78, 0x77, 0xfc, 0x8e, + 0x15, 0xdd, 0xcd, 0xf7, 0x38, 0xf7, 0xa, 0xea, 0x9d, 0x29, 0x5f, 0x1e, + 0x13, 0xb8, 0x42, 0x60, 0xfb, 0x4e, 0xfb, 0x1d, 0x6a, 0x37, 0x98, 0xf7, + 0x22, 0x1e, 0xe, 0x77, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xf7, 0x20, + 0xf7, 0x5e, 0x3, 0xf7, 0x90, 0x78, 0x15, 0xe5, 0x6, 0xfb, 0x4, 0xf9, + 0x88, 0x3e, 0xa, 0x65, 0xfb, 0x64, 0x76, 0xfa, 0x5a, 0x77, 0x1, 0xd5, + 0xf7, 0x74, 0x3, 0xd5, 0xfb, 0x79, 0x15, 0xd7, 0x6, 0xf7, 0x28, 0xfa, + 0x5a, 0x5, 0x3f, 0x6, 0xe, 0xaf, 0xfb, 0x58, 0xd5, 0xf7, 0xee, 0xd9, + 0xf7, 0xed, 0xd5, 0x1, 0xe7, 0xf7, 0xf5, 0x3, 0xe7, 0xf7, 0x74, 0x15, + 0xeb, 0x82, 0x31, 0x2c, 0x7e, 0x1f, 0xfb, 0x26, 0x76, 0x89, 0x32, 0xf7, + 0x3c, 0x1b, 0x96, 0xd5, 0x5, 0x29, 0x8b, 0x94, 0xf7, 0x2c, 0xa3, 0x1f, + 0x9b, 0xf7, 0x6, 0x85, 0xd7, 0x3c, 0xad, 0xf6, 0xbb, 0x90, 0x9f, 0xa3, + 0xf7, 0x44, 0x8, 0xe3, 0x98, 0xa3, 0xbf, 0xdd, 0x1b, 0x96, 0xd5, 0x5, + 0xfb, 0x36, 0x72, 0x45, 0xfb, 0x24, 0x73, 0x1f, 0x2b, 0x7b, 0x79, 0xfb, + 0x1, 0x2a, 0x1b, 0xe, 0xaf, 0xfb, 0x58, 0xd5, 0xf7, 0xee, 0xd9, 0xf8, + 0x7, 0xd5, 0x1, 0x8b, 0xf7, 0xf6, 0x3, 0x96, 0xfb, 0xe, 0x15, 0x80, + 0x41, 0x5, 0xf7, 0x24, 0xb9, 0xd7, 0xf7, 0x13, 0x9f, 0x1f, 0xea, 0x9a, + 0xa2, 0xf7, 0xe, 0xe9, 0x1b, 0x97, 0xd9, 0x5, 0x2d, 0x91, 0xdd, 0xea, + 0x99, 0x1f, 0xf7, 0x28, 0xa1, 0x89, 0xea, 0xfb, 0x38, 0x1b, 0x80, 0x41, + 0x5, 0xee, 0x89, 0x7c, 0xfb, 0x2e, 0x74, 0x1f, 0x7a, 0xfb, 0x6, 0x92, + 0x48, 0xd9, 0x68, 0xfb, 0x0, 0x5b, 0x86, 0x6b, 0x71, 0xfb, 0x44, 0x8, + 0x33, 0x7e, 0x71, 0x62, 0x3d, 0x1b, 0xe, 0x5f, 0xa, 0xa0, 0xf8, 0x12, + 0x3, 0xf7, 0xf, 0xfb, 0x14, 0x15, 0xf7, 0x33, 0xf9, 0xa2, 0x5, 0xf6, + 0x6, 0x99, 0xcf, 0x5, 0xfb, 0x59, 0x6, 0xfb, 0x4d, 0xfe, 0x2a, 0x5, + 0xf7, 0x57, 0x6, 0x9a, 0xcf, 0x5, 0xe, 0x5f, 0xa, 0x7d, 0xf8, 0x12, + 0x3, 0xfb, 0x14, 0x4, 0x7d, 0x47, 0x5, 0xf7, 0x56, 0x6, 0xf7, 0x50, + 0xfa, 0x2a, 0x5, 0xfb, 0x54, 0x6, 0x7c, 0x47, 0x5, 0xf5, 0x6, 0xfb, + 0x36, 0xfd, 0xa2, 0x5, 0xe, 0xae, 0xf8, 0xe7, 0xca, 0x1, 0xf7, 0x3b, + 0xc8, 0x3, 0xf7, 0x3b, 0xf9, 0x6f, 0x15, 0x42, 0x8e, 0xb9, 0x4c, 0xe5, + 0x1b, 0xf7, 0x2, 0xb9, 0xe2, 0xbc, 0x99, 0x1f, 0x4e, 0x6, 0x73, 0x81, + 0x6f, 0x5a, 0x47, 0x1b, 0x53, 0x78, 0xa9, 0xb6, 0x85, 0x1f, 0xe, 0x65, + 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xf7, 0x4b, 0xf8, 0x3f, 0x15, 0xd8, + 0x6, 0xcb, 0xf7, 0xca, 0x5, 0x3e, 0x6, 0xfb, 0x31, 0xfd, 0x88, 0x15, + 0xd8, 0x6, 0xcb, 0xf7, 0xc9, 0x5, 0x3e, 0x6, 0xe, 0xbf, 0xf7, 0x73, + 0x76, 0xf7, 0xcf, 0x77, 0x1, 0xe6, 0xf7, 0xfd, 0x15, 0x34, 0xd3, 0x43, + 0xe4, 0xe3, 0xd4, 0xd3, 0xe2, 0xe1, 0x42, 0xd1, 0x33, 0x32, 0x43, 0x45, + 0x35, 0x1e, 0xe, 0xf7, 0x5e, 0x7c, 0xd1, 0xf7, 0xc5, 0xf7, 0x46, 0x41, + 0xd5, 0x1, 0xd5, 0xea, 0xf7, 0xb8, 0xe7, 0x3, 0xf8, 0x3e, 0xf7, 0x52, + 0x15, 0x54, 0x78, 0x5c, 0x3b, 0x36, 0x1b, 0x72, 0x3a, 0x98, 0xf7, 0x12, + 0xbf, 0xa0, 0xf7, 0x6e, 0xf7, 0x36, 0xa6, 0xdd, 0x84, 0x28, 0x1f, 0xe7, + 0x90, 0x5, 0xf7, 0x1d, 0xfb, 0x4, 0xb1, 0x3b, 0xfb, 0x6d, 0x45, 0xfb, + 0x66, 0xfb, 0x1a, 0xfb, 0x26, 0xe7, 0x4c, 0xf7, 0x0, 0xf3, 0xe8, 0xc6, + 0xf7, 0x1d, 0xbb, 0x1e, 0xe, 0x53, 0xa, 0xf7, 0x83, 0xf8, 0xe5, 0x15, + 0xed, 0x6, 0xf7, 0x17, 0xf7, 0x21, 0x3d, 0xa, 0x3a, 0x31, 0x64, 0xe5, + 0x5, 0x3c, 0x6, 0xe, 0xf7, 0x5e, 0xfb, 0x60, 0x76, 0xf7, 0x58, 0xd1, + 0xf7, 0xce, 0xf7, 0x4b, 0x40, 0xd6, 0x1, 0xd5, 0xea, 0xf7, 0x3, 0xdd, + 0xee, 0xe6, 0x3, 0xf7, 0x63, 0x2d, 0x15, 0xa7, 0xb8, 0x8e, 0x68, 0x5c, + 0x3c, 0x91, 0x5b, 0x1f, 0x78, 0x53, 0x5, 0x8a, 0x9e, 0xa1, 0x8a, 0x9e, + 0x1b, 0xb2, 0xf7, 0x15, 0x98, 0xe3, 0x9d, 0x83, 0xbb, 0x41, 0x1f, 0x97, + 0xa8, 0x5, 0xf7, 0x1, 0xd9, 0xe1, 0xf7, 0x6, 0xb3, 0x1f, 0x2f, 0x95, + 0x5, 0x53, 0x78, 0x5b, 0x37, 0x36, 0x1b, 0x63, 0x49, 0xb3, 0xf5, 0xdc, + 0xa8, 0xf7, 0x57, 0xf7, 0x2f, 0xa6, 0xdc, 0x74, 0x33, 0x1f, 0xe6, 0x91, + 0x5, 0xf7, 0x20, 0xfb, 0x3, 0xb3, 0x3b, 0xfb, 0x68, 0x40, 0xfb, 0x61, + 0xfb, 0x26, 0xfb, 0x44, 0xf7, 0x11, 0x62, 0xae, 0x8e, 0x1e, 0xe, 0xae, + 0xfb, 0x60, 0x76, 0xf7, 0x75, 0x77, 0x12, 0xf7, 0x2e, 0xd9, 0x17, 0xee, + 0x16, 0x78, 0x38, 0x5, 0xb8, 0xa8, 0x79, 0x6f, 0x67, 0x4b, 0x8d, 0x7d, + 0x66, 0x7f, 0x8d, 0x8c, 0x7b, 0x1f, 0x13, 0xe0, 0x82, 0x4f, 0x5, 0x87, + 0xa2, 0xa9, 0x8a, 0xa2, 0x1b, 0xa7, 0xf7, 0x12, 0x90, 0xe6, 0x96, 0x88, + 0xc6, 0x3d, 0x98, 0x1f, 0x95, 0xb9, 0x5, 0xe, 0xad, 0xc1, 0xf7, 0xd8, + 0xc5, 0x1, 0xf6, 0x2a, 0x15, 0xc4, 0x79, 0xe0, 0xf7, 0x2d, 0x5, 0x89, + 0x94, 0x9b, 0x89, 0xa4, 0x1b, 0xf2, 0xed, 0xb7, 0xf7, 0x1, 0xbd, 0x1f, + 0x40, 0x92, 0x5, 0x61, 0x78, 0x46, 0x4b, 0x34, 0x1b, 0x82, 0x83, 0x8d, + 0x8c, 0x87, 0x1f, 0xf7, 0x40, 0xf7, 0xca, 0xb4, 0x75, 0x9e, 0x68, 0x8c, + 0x78, 0x19, 0xd3, 0x8f, 0x5, 0x9f, 0x7d, 0xd7, 0x32, 0xa7, 0x1e, 0xdf, + 0xf7, 0x2c, 0x53, 0x9d, 0x34, 0xfb, 0x33, 0x5, 0x8c, 0x83, 0x82, 0x8c, + 0x7a, 0x1b, 0xfb, 0x71, 0x43, 0xfb, 0x3a, 0x23, 0x5d, 0x9a, 0x4e, 0xdd, + 0x68, 0x1f, 0xac, 0xc7, 0x15, 0x79, 0x95, 0x66, 0x9d, 0xc1, 0x1a, 0xb7, + 0xa9, 0xf7, 0x3c, 0xf7, 0x51, 0x1e, 0xe, 0xae, 0xf8, 0xe5, 0xe5, 0x31, + 0xf7, 0x21, 0x12, 0x13, 0x80, 0xf7, 0x27, 0xf8, 0xe5, 0x15, 0xe7, 0x6, + 0xdc, 0xe5, 0xb2, 0x31, 0x5, 0xda, 0x6, 0x13, 0x40, 0x4d, 0xf7, 0x21, + 0x57, 0xa, 0xe, 0x77, 0x8b, 0xeb, 0xf7, 0xd8, 0xeb, 0x1, 0xe2, 0xf7, + 0x6a, 0x3, 0xf7, 0x43, 0xf8, 0x38, 0x40, 0xa, 0xfb, 0x2, 0xfc, 0x98, + 0x40, 0xa, 0xe, 0x77, 0xfb, 0x12, 0x76, 0xf7, 0x91, 0x77, 0x1, 0xe2, + 0x8e, 0x15, 0xc4, 0x6, 0x78, 0x2d, 0x5f, 0x81, 0x7a, 0x87, 0x83, 0x61, + 0x18, 0x67, 0xa, 0x92, 0xaf, 0x9e, 0xe5, 0x18, 0x22, 0x6, 0xe, 0xf8, + 0x4b, 0x78, 0xc9, 0xee, 0xc6, 0xf7, 0xce, 0xc2, 0xf4, 0xc9, 0x1, 0xc1, + 0xcc, 0xf9, 0x21, 0xcc, 0x3, 0xf8, 0xcb, 0xf7, 0xbe, 0x15, 0x34, 0x6b, + 0x41, 0x81, 0x6f, 0x1b, 0x44, 0x4f, 0xbb, 0xf6, 0x98, 0x1f, 0xd6, 0x94, + 0xb9, 0xdf, 0xef, 0x1b, 0x9d, 0xd0, 0x8a, 0x3f, 0xa1, 0x1f, 0xcb, 0x99, + 0x5, 0xdd, 0x7b, 0x46, 0xaf, 0x3a, 0x1b, 0xfb, 0x17, 0x35, 0x37, 0xfb, + 0x16, 0x7b, 0x1f, 0xfb, 0x1c, 0x7b, 0xd9, 0x3d, 0xf7, 0xc, 0x1b, 0xdd, + 0xe2, 0xb6, 0xe9, 0xad, 0x1f, 0xfc, 0xd3, 0xd8, 0x15, 0xfb, 0x65, 0xf7, + 0x45, 0xfb, 0x3a, 0xf7, 0x6d, 0xf7, 0x6d, 0xf7, 0x40, 0xf7, 0x3b, 0xf7, + 0x64, 0xf7, 0x65, 0xfb, 0x42, 0xf7, 0x40, 0xfb, 0x6b, 0xfb, 0x6a, 0xfb, + 0x48, 0xfb, 0x3f, 0xfb, 0x66, 0x1e, 0xcc, 0x16, 0xf7, 0x42, 0xf7, 0x29, + 0xf7, 0x25, 0xf7, 0x48, 0xf7, 0x49, 0xf7, 0x23, 0xfb, 0x25, 0xfb, 0x42, + 0xfb, 0x42, 0xfb, 0x23, 0xfb, 0x1f, 0xfb, 0x49, 0xfb, 0x48, 0xfb, 0x29, + 0xf7, 0x1f, 0xf7, 0x42, 0x1e, 0xe, 0xf7, 0xc, 0x76, 0xae, 0xdf, 0xf7, + 0x9e, 0xdf, 0xae, 0x77, 0x1, 0xee, 0xee, 0x15, 0xe3, 0xd3, 0x5, 0x70, + 0xa9, 0xb0, 0x81, 0xb0, 0x1b, 0xb0, 0xbb, 0x95, 0xa6, 0xb7, 0x1f, 0xbb, + 0x43, 0xd4, 0xc8, 0x5a, 0xd0, 0xb6, 0xbd, 0x9c, 0xb8, 0x92, 0xa5, 0x19, + 0x92, 0xa7, 0x94, 0xb8, 0x7a, 0xbb, 0xe3, 0xd2, 0x18, 0x63, 0xc8, 0x33, + 0x43, 0x5, 0xa6, 0x6e, 0x63, 0x95, 0x66, 0x1b, 0x66, 0x5e, 0x81, 0x70, + 0x5e, 0x1f, 0x5b, 0xd3, 0x43, 0x4e, 0xbb, 0x44, 0x60, 0x5b, 0x79, 0x5e, + 0x84, 0x6f, 0x19, 0x84, 0x71, 0x83, 0x5e, 0x9c, 0x59, 0x34, 0x46, 0x18, + 0xf7, 0x39, 0xf7, 0x52, 0x15, 0xd6, 0xa0, 0xd3, 0xc6, 0xd1, 0x1b, 0xd1, + 0xb5, 0x4f, 0x41, 0x76, 0x1f, 0x42, 0x77, 0x42, 0x50, 0x44, 0x1b, 0x46, + 0x62, 0xc6, 0xd4, 0x9f, 0x1f, 0xe, 0x7c, 0xd3, 0x4f, 0xc7, 0xf8, 0x25, + 0xd4, 0xf7, 0x4f, 0x77, 0x12, 0xdf, 0xe7, 0x13, 0x78, 0xf8, 0x30, 0x88, + 0x15, 0xe0, 0x6, 0xf7, 0x2f, 0xf9, 0x65, 0x3d, 0xa, 0x50, 0xfb, 0xad, + 0x4e, 0xa, 0xd5, 0x64, 0x51, 0x9f, 0x55, 0x1b, 0xfb, 0x20, 0xfb, 0x10, + 0xfb, 0x1c, 0xfb, 0x4a, 0x1f, 0x13, 0xb8, 0xfb, 0x3c, 0xf3, 0x4f, 0xd6, + 0xd0, 0xc0, 0xb2, 0xba, 0xb6, 0x1e, 0x13, 0x78, 0xfb, 0x90, 0xf7, 0x22, + 0x15, 0xc4, 0xb5, 0xf7, 0x50, 0xf7, 0x16, 0xc2, 0xcf, 0x67, 0x2a, 0xfb, + 0x1e, 0x3a, 0xfb, 0x16, 0x27, 0xfb, 0x6, 0x8b, 0xf7, 0x11, 0xaa, 0x1e, + 0xe, 0xfb, 0x1e, 0x76, 0xf8, 0xe6, 0xd5, 0xf7, 0x65, 0x77, 0x1, 0xf7, + 0x1b, 0xf8, 0x7b, 0x3, 0xf7, 0x61, 0xfb, 0x33, 0x15, 0xe2, 0x6, 0xf7, + 0xf, 0xf8, 0xe6, 0x5, 0xf7, 0x54, 0x6, 0x9a, 0xd5, 0x5, 0xfb, 0x53, + 0x6, 0xb6, 0xf7, 0x65, 0x5, 0x33, 0x6, 0x60, 0xfb, 0x65, 0x5, 0xfb, + 0x55, 0x6, 0x7c, 0x41, 0x5, 0xf7, 0x55, 0x6, 0xe, 0xfb, 0x1e, 0x76, + 0xf7, 0x50, 0xd5, 0xf7, 0xf6, 0xd8, 0xf7, 0x4c, 0x77, 0x1, 0xbf, 0xa8, + 0x15, 0xf7, 0x53, 0x6, 0x66, 0xfb, 0x50, 0x5, 0xe1, 0x6, 0xb0, 0xf7, + 0x50, 0x5, 0xf7, 0x50, 0x6, 0x9b, 0xd5, 0x5, 0xfb, 0x51, 0x6, 0xd5, + 0xf7, 0xf6, 0x5, 0xf7, 0x4f, 0x6, 0x9d, 0xd8, 0x5, 0xfb, 0x52, 0x6, + 0xb0, 0xf7, 0x4c, 0x5, 0x35, 0x6, 0x65, 0xfb, 0x4c, 0x5, 0xfb, 0x52, + 0x6, 0x7b, 0x3e, 0x5, 0xf7, 0x53, 0x6, 0x42, 0xfb, 0xf6, 0x5, 0xfb, + 0x52, 0x6, 0xe, 0xf1, 0xf8, 0x2f, 0xc2, 0xf7, 0x4c, 0xc0, 0x1, 0xf7, + 0x3d, 0xc1, 0xf7, 0x51, 0xc3, 0x3, 0xf7, 0x3d, 0xf8, 0xc3, 0x15, 0x38, + 0xcf, 0x4a, 0xdc, 0xdd, 0xcf, 0xcc, 0xde, 0xdc, 0x49, 0xca, 0x37, 0x38, + 0x49, 0x4d, 0x39, 0x1e, 0xc1, 0x8c, 0x15, 0xbe, 0xb5, 0xb2, 0xbf, 0xc0, + 0xb5, 0x64, 0x58, 0x57, 0x60, 0x61, 0x57, 0x58, 0x60, 0xb5, 0xbf, 0x1e, + 0xe, 0xae, 0xf8, 0xf0, 0xf1, 0x1, 0xf7, 0xf9, 0xf9, 0x56, 0x5d, 0xa, + 0xfb, 0x27, 0xf1, 0x5d, 0xa, 0xe, 0xf7, 0xb2, 0x78, 0xec, 0xf7, 0x18, + 0xdd, 0xf7, 0x1a, 0xed, 0x1, 0xe0, 0xf7, 0x66, 0x15, 0xf8, 0x76, 0x6, + 0xb2, 0xdd, 0x5, 0xfc, 0x76, 0x6, 0xf7, 0x7c, 0xf7, 0x1a, 0x15, 0xf0, + 0x6, 0xb9, 0xed, 0x5, 0x25, 0x6, 0xfb, 0x61, 0xfc, 0xb3, 0x15, 0xf1, + 0x6, 0xb8, 0xec, 0x5, 0x26, 0x6, 0xe, 0x2d, 0x76, 0xf7, 0x12, 0x76, + 0xf9, 0x35, 0xd4, 0xb2, 0x77, 0x1, 0xf7, 0x1a, 0xe6, 0xf7, 0xc3, 0xde, + 0x3, 0xf7, 0x8c, 0x81, 0x15, 0x74, 0x22, 0x5, 0xbf, 0x6, 0xa0, 0xee, + 0x5, 0xf7, 0x5e, 0xd0, 0xf7, 0xb, 0xe5, 0xf7, 0x12, 0xfb, 0xe, 0xc9, + 0x50, 0xa3, 0x1f, 0xc1, 0xf7, 0x8e, 0x5, 0xc6, 0xa8, 0x38, 0x6f, 0x8f, + 0x1f, 0xde, 0x91, 0x5, 0xb2, 0x4e, 0xf7, 0x1f, 0x29, 0x1e, 0x95, 0xba, + 0x5, 0x59, 0x6, 0x81, 0x64, 0x5, 0xfb, 0x55, 0x52, 0xfb, 0x8, 0x3a, + 0xfb, 0x13, 0xf7, 0x5, 0x58, 0xbf, 0x76, 0x1f, 0x50, 0xfb, 0xa9, 0x5, + 0x65, 0x53, 0xb6, 0xf4, 0x83, 0x1f, 0x2e, 0x86, 0x5, 0x25, 0x91, 0xca, + 0xfb, 0x6, 0xf7, 0x2, 0x1b, 0xe9, 0xf8, 0x46, 0x15, 0x62, 0x9e, 0x57, + 0xa1, 0xd5, 0x1a, 0xda, 0xd9, 0xb8, 0xcd, 0x1e, 0x3c, 0xfc, 0xf5, 0x15, + 0xc2, 0xf7, 0x9d, 0x5, 0xba, 0x77, 0xc8, 0x6e, 0x3e, 0x1a, 0x44, 0x4a, + 0x47, 0x29, 0x1e, 0xe, 0xae, 0xf8, 0xf0, 0xf1, 0x1, 0xf7, 0x8d, 0xf8, + 0xf0, 0x15, 0xe7, 0x6, 0xa0, 0xf1, 0x5, 0x2e, 0x6, 0xe, 0x77, 0x43, + 0xa, 0xea, 0xf7, 0x5b, 0x3, 0xea, 0x16, 0xe4, 0x6, 0xf7, 0x2, 0xf8, + 0x9f, 0x3e, 0xa, 0x7c, 0xd5, 0xf7, 0x49, 0xd0, 0xf7, 0x33, 0xd1, 0x1, + 0xdf, 0xe7, 0xf7, 0xcf, 0xe2, 0x3, 0xf7, 0x44, 0xf7, 0x84, 0x15, 0xf8, + 0x1f, 0x6, 0x8e, 0x9f, 0x8f, 0x9f, 0xb3, 0x1a, 0xe6, 0x5c, 0xf7, 0x13, + 0xfb, 0x38, 0xfb, 0x5a, 0x36, 0xfb, 0x55, 0xfb, 0x1b, 0xfb, 0x27, 0xe8, + 0x3d, 0xf7, 0x8, 0xf7, 0x1f, 0xe6, 0xf7, 0x2, 0xd4, 0xa1, 0x1e, 0x32, + 0x94, 0x5, 0x2a, 0x61, 0x39, 0x76, 0x64, 0x1b, 0x43, 0x4f, 0xd5, 0xf6, + 0x9a, 0x1f, 0x99, 0xd0, 0x15, 0xce, 0xa0, 0xc0, 0xe7, 0xf4, 0x1b, 0xd3, + 0xc6, 0x4c, 0x2b, 0x82, 0x1f, 0xe, 0x7c, 0xd5, 0x41, 0xf7, 0x50, 0xcf, + 0xd1, 0xf8, 0x3b, 0x77, 0x1, 0xdf, 0xe7, 0x3, 0xf7, 0xd7, 0xf8, 0xe7, + 0x15, 0xd8, 0x6, 0xf7, 0x1d, 0x6f, 0xa, 0xfb, 0xa, 0x6, 0xfb, 0x86, + 0xfc, 0x81, 0x25, 0xa, 0xe, 0x7c, 0xd5, 0xf7, 0x4a, 0xd1, 0xf7, 0xb0, + 0xf7, 0x1f, 0x1, 0xdf, 0xe6, 0xf7, 0xd0, 0xe2, 0x3, 0xf7, 0x8c, 0xf8, + 0xe7, 0x15, 0xe9, 0x6, 0xdd, 0xe5, 0xb4, 0x31, 0x5, 0xdb, 0x6, 0x4c, + 0xf7, 0x1f, 0x47, 0xa, 0xfb, 0x61, 0xfc, 0x81, 0x25, 0xa, 0xe, 0x7c, + 0xd4, 0xf7, 0x48, 0xcf, 0xf7, 0xbf, 0xf0, 0x1, 0xdf, 0xe6, 0x3, 0xf8, + 0x56, 0xf8, 0xf1, 0x63, 0xa, 0xfb, 0x64, 0x26, 0x63, 0xa, 0xfb, 0x1, + 0xfc, 0x65, 0x25, 0xa, 0xe, 0x7c, 0xd5, 0xf7, 0x4a, 0xd1, 0xf7, 0xb1, + 0xf7, 0x1e, 0x1, 0xdf, 0xe6, 0x3, 0xf7, 0x45, 0xf7, 0x85, 0x25, 0xa, + 0x29, 0xf7, 0xb1, 0x15, 0xd3, 0x6, 0x50, 0xf7, 0x1e, 0x5, 0xfb, 0x3, + 0x6, 0xe, 0x78, 0xd0, 0xf7, 0xbb, 0xcb, 0xf7, 0x75, 0xd0, 0x1, 0xd5, + 0xeb, 0xf7, 0xee, 0xe6, 0x3, 0xf7, 0x83, 0xf8, 0x15, 0x15, 0xfb, 0x31, + 0x63, 0x83, 0xfb, 0x2a, 0x6c, 0x1a, 0x23, 0xe0, 0x3c, 0xf7, 0x1f, 0xf7, + 0x3e, 0xf2, 0xf7, 0xb, 0xf7, 0xe, 0xe9, 0x4d, 0xb4, 0x6b, 0x9d, 0x1e, + 0xd0, 0x9c, 0xc8, 0xcc, 0xd3, 0x1a, 0xca, 0x5c, 0xf7, 0x3, 0xfb, 0x3f, + 0xfb, 0x39, 0x44, 0xfb, 0xb, 0x40, 0x78, 0x8d, 0x4c, 0xdf, 0x61, 0x1e, + 0x46, 0xfb, 0x71, 0x15, 0xe7, 0xcf, 0xe4, 0xf6, 0xd3, 0xc5, 0x55, 0x46, + 0x40, 0x4f, 0x2a, 0x20, 0x39, 0x53, 0xbc, 0xcc, 0x1e, 0xd8, 0xf7, 0xed, + 0x15, 0xc2, 0xb2, 0xd1, 0xf2, 0xd4, 0xc1, 0x5d, 0x50, 0x54, 0x5f, 0x4a, + 0x23, 0x43, 0x5a, 0xb0, 0xca, 0x1e, 0xe, 0xf9, 0x52, 0x8b, 0xf5, 0x1, + 0xf8, 0x57, 0x16, 0x4b, 0xa, 0xf7, 0xcf, 0x21, 0x15, 0x4b, 0xa, 0xfd, + 0x49, 0x21, 0x15, 0x4b, 0xa, 0xe, 0xf9, 0x52, 0x64, 0xa, 0xfa, 0x8c, + 0xd4, 0xfe, 0x8c, 0x6, 0xe, 0x64, 0xa, 0xf8, 0xd0, 0xd4, 0xfc, 0xd0, + 0x6, 0xe, 0xf7, 0xb2, 0xf7, 0x7, 0xdc, 0xf7, 0x8, 0xd9, 0x1, 0xb5, + 0xf8, 0xc9, 0x3, 0xca, 0xf7, 0xce, 0x15, 0xf8, 0xc9, 0xd7, 0xfc, 0xc9, + 0x6, 0xfb, 0xa7, 0x4, 0xf8, 0xc9, 0xda, 0xfc, 0xc9, 0x6, 0xe, 0x81, + 0xd5, 0x1, 0xf8, 0x8e, 0xf0, 0x3, 0xf7, 0xf0, 0xf8, 0xd1, 0x15, 0xf7, + 0x0, 0xb9, 0xa5, 0x5e, 0xa0, 0x5b, 0x94, 0x59, 0x19, 0x89, 0x89, 0x5, + 0xa2, 0x72, 0x61, 0xae, 0x36, 0x1b, 0xfb, 0x2a, 0xfb, 0x13, 0xfb, 0x29, + 0xfb, 0x47, 0xfb, 0x7, 0xd2, 0x23, 0xf7, 0x32, 0xf7, 0x8c, 0xc6, 0xf7, + 0x90, 0xf7, 0x8, 0xf7, 0x38, 0x53, 0xe4, 0x6d, 0xb9, 0x1f, 0xdd, 0xae, + 0x73, 0xbd, 0x2e, 0x65, 0x88, 0x90, 0x78, 0x9e, 0x7a, 0x99, 0x19, 0x28, + 0x6, 0xa5, 0x73, 0x90, 0x85, 0xad, 0x62, 0x28, 0x60, 0x18, 0xfb, 0x26, + 0xfc, 0x37, 0x15, 0xea, 0xc3, 0xf7, 0x33, 0xf7, 0x26, 0xcb, 0xd3, 0x68, + 0x21, 0x34, 0x4f, 0xfb, 0x3f, 0xfb, 0x24, 0xfb, 0x3, 0x74, 0xdf, 0xc8, + 0x1e, 0xe, 0x77, 0x8b, 0xef, 0xe0, 0x77, 0xf8, 0xbd, 0x77, 0x1, 0xe5, + 0x16, 0xef, 0x6, 0xa0, 0xef, 0x47, 0xa, 0xb0, 0xe0, 0x15, 0xc2, 0x6, + 0xf3, 0xf8, 0x4, 0xac, 0xf7, 0x39, 0x5, 0x20, 0x6, 0x6c, 0xfb, 0x39, + 0x5, 0xe, 0xae, 0xfb, 0x42, 0x76, 0xf8, 0xaf, 0x77, 0xf0, 0xed, 0x1, + 0xd8, 0xf7, 0x8d, 0x3, 0xf7, 0x61, 0xf8, 0x3d, 0x15, 0xef, 0x6, 0xa0, + 0xed, 0x47, 0xa, 0xfb, 0x8, 0xfc, 0xc0, 0x15, 0x6a, 0xfb, 0x36, 0x5, + 0xf6, 0x6, 0xab, 0xf7, 0x36, 0xc1, 0xf8, 0xd, 0x5, 0x54, 0x6, 0xe, + 0x77, 0x3a, 0xa, 0xf5, 0xf7, 0xde, 0x3, 0xe1, 0x16, 0xdb, 0x6, 0xe0, + 0xf8, 0x56, 0x5, 0xe5, 0x6, 0x98, 0xcf, 0x3f, 0xa, 0xf0, 0x9f, 0x91, + 0xa9, 0xb5, 0x1b, 0xa7, 0xa8, 0x82, 0x88, 0x98, 0x1f, 0x99, 0xd8, 0x5, + 0x8f, 0x79, 0x62, 0x95, 0x6c, 0x1b, 0x25, 0x80, 0x36, 0x46, 0x7a, 0x1f, + 0x7f, 0x53, 0x5, 0x43, 0x6, 0x7f, 0x47, 0x5, 0xd2, 0x6, 0xe, 0xf7, + 0x5e, 0x3a, 0xa, 0xe1, 0x16, 0xe5, 0x46, 0xa, 0xa1, 0x8f, 0xa9, 0xba, + 0x1b, 0xaa, 0xae, 0x82, 0x88, 0x99, 0x1f, 0x9b, 0xd8, 0x5, 0x8f, 0x77, + 0x62, 0x95, 0x68, 0x1b, 0xfb, 0x6, 0x7a, 0x36, 0x46, 0x78, 0x1f, 0x7e, + 0x53, 0x5, 0x3b, 0x6, 0x7c, 0x47, 0x5, 0xdc, 0x6, 0xf7, 0x36, 0xfc, + 0x56, 0x15, 0xe5, 0x6, 0xf7, 0x3, 0xf8, 0x9a, 0x3f, 0xa, 0x9f, 0xe9, + 0x15, 0xe5, 0x6, 0xa1, 0xf3, 0x3e, 0xa, 0x78, 0xd0, 0xf7, 0xef, 0xd9, + 0xf7, 0x2d, 0xdb, 0x1, 0xcf, 0xee, 0xf7, 0xb7, 0xeb, 0x3, 0xce, 0xf7, + 0x57, 0x15, 0x23, 0xd4, 0xfb, 0x2, 0xf7, 0x2e, 0xf7, 0x41, 0xf7, 0x10, + 0xf7, 0xd, 0xf7, 0x37, 0xf7, 0x2c, 0xfb, 0xa, 0xc5, 0x34, 0x41, 0x61, + 0x6e, 0x7e, 0x73, 0x1e, 0xc6, 0xf7, 0x47, 0x5, 0xf7, 0xbd, 0x6, 0x9e, + 0xdb, 0x5, 0xfc, 0x12, 0x6, 0xfb, 0x9, 0xfb, 0xfe, 0xdf, 0x84, 0x5, + 0x9e, 0x9b, 0xbc, 0xc2, 0xdf, 0x1b, 0xe7, 0xbb, 0x4c, 0x46, 0x23, 0x34, + 0xfb, 0x3, 0x20, 0x50, 0x38, 0xb8, 0xf7, 0x1, 0x93, 0x1f, 0xe, 0xf7, + 0x5e, 0x3a, 0xa, 0xe1, 0x16, 0xe4, 0x46, 0xa, 0xa2, 0x8f, 0xa9, 0xba, + 0x1b, 0xaa, 0xac, 0x82, 0x88, 0x9a, 0x1f, 0x9b, 0xd8, 0x5, 0x8f, 0x77, + 0x63, 0x95, 0x68, 0x1b, 0xfb, 0x5, 0x78, 0x37, 0x46, 0x79, 0x1f, 0x7e, + 0x52, 0x5, 0x3a, 0x6, 0x7d, 0x47, 0x5, 0xdc, 0x6, 0xf7, 0x35, 0xfc, + 0x56, 0x15, 0xe5, 0x6, 0xf7, 0x2c, 0xf9, 0x60, 0x5, 0x32, 0x6, 0xe, + 0xfb, 0x63, 0xd9, 0xf8, 0xda, 0xd1, 0xf7, 0x17, 0xde, 0x1, 0x77, 0xfb, + 0xa, 0x15, 0x6b, 0x3e, 0x5, 0x7f, 0xc7, 0xb2, 0x8b, 0x92, 0x1b, 0xdb, + 0xca, 0xdc, 0xe4, 0xae, 0x1f, 0xf7, 0x4d, 0xf8, 0x7e, 0x5, 0xf0, 0x6, + 0xa7, 0xd1, 0x5, 0x25, 0x6, 0xf3, 0xb6, 0x98, 0xa6, 0xbb, 0x1b, 0xa0, + 0x9c, 0x87, 0x82, 0xae, 0x1f, 0xac, 0xd8, 0x5, 0x95, 0x6a, 0x6d, 0x94, + 0x64, 0x1b, 0xfb, 0x6, 0x67, 0x27, 0xfb, 0x6, 0x5b, 0x1f, 0x27, 0x6, + 0x71, 0x45, 0x5, 0xee, 0x6, 0xfb, 0x48, 0xfc, 0x7d, 0x5, 0x64, 0x7b, + 0x68, 0x55, 0x60, 0x1b, 0x7b, 0x76, 0x8e, 0x93, 0x67, 0x1f, 0xe, 0xa0, + 0x76, 0xf7, 0x48, 0xd9, 0xf7, 0xc0, 0xf7, 0x2e, 0x1, 0xcb, 0xf7, 0x48, + 0x15, 0xf7, 0xd0, 0x6, 0x62, 0xfb, 0x48, 0x5, 0xeb, 0x6, 0xb5, 0xf7, + 0x48, 0x5, 0xf7, 0x1, 0x6, 0x9e, 0xd9, 0x5, 0xfb, 0x2, 0x6, 0xf1, + 0xf8, 0x51, 0x5, 0x3d, 0x6, 0xfc, 0x46, 0xfc, 0x49, 0x5, 0xe8, 0x83, + 0x15, 0xf7, 0xb2, 0xf7, 0xb9, 0x8d, 0x89, 0x48, 0xfb, 0xb7, 0x5, 0xe, + 0xfb, 0x17, 0x8d, 0x76, 0xf9, 0x66, 0x77, 0x1, 0xfb, 0x3b, 0xf9, 0x20, + 0x3, 0x23, 0x78, 0x15, 0xf8, 0xde, 0xf9, 0x66, 0x5, 0x43, 0x6, 0xfc, + 0xd8, 0xfd, 0x66, 0x5, 0xe, 0xfb, 0x70, 0xd5, 0xf7, 0x1f, 0xd5, 0xf8, + 0x21, 0xd5, 0x7f, 0x77, 0x12, 0x13, 0xd0, 0xb5, 0x54, 0x15, 0xfb, 0x30, + 0xf7, 0x36, 0x82, 0xc0, 0xf7, 0x57, 0xac, 0xf7, 0x2f, 0xd6, 0x9b, 0x1e, + 0xf7, 0x1, 0xf8, 0x98, 0x5, 0x37, 0x6, 0x7b, 0x33, 0x4e, 0xa, 0x13, + 0xe0, 0xe0, 0x5c, 0x47, 0x9a, 0x5c, 0x1b, 0xfb, 0x28, 0xfb, 0xe, 0xfb, + 0x26, 0xfb, 0x33, 0xfb, 0x2b, 0xe2, 0x32, 0xf4, 0xb5, 0xbf, 0x98, 0xc4, + 0xc5, 0x1f, 0x82, 0x56, 0x5, 0x2e, 0x7a, 0x61, 0x4c, 0x22, 0x1b, 0x25, + 0x81, 0xb9, 0xaf, 0x1f, 0xae, 0xf7, 0xbd, 0x15, 0xd2, 0xc2, 0xf7, 0x34, + 0xf7, 0xf, 0xd9, 0xbd, 0x4b, 0x3d, 0x27, 0x4b, 0xfb, 0x2f, 0xfb, 0x12, + 0x31, 0x71, 0xe6, 0xd6, 0x1e, 0xe, 0xf7, 0xcd, 0x7c, 0xd3, 0x64, 0x76, + 0xf9, 0x2b, 0xcf, 0x12, 0xf8, 0xb8, 0xef, 0x13, 0x70, 0xce, 0x88, 0x15, + 0xee, 0x6, 0xf7, 0x6, 0xf8, 0x84, 0x5, 0xe5, 0xa0, 0xbb, 0xd8, 0xf6, + 0x1b, 0xe0, 0x81, 0x2a, 0x5a, 0x61, 0x1f, 0x53, 0x4b, 0x6b, 0x62, 0x65, + 0x1a, 0x66, 0xa7, 0x68, 0xc6, 0x59, 0x1e, 0xc0, 0x5c, 0x9c, 0x79, 0x6f, + 0x1a, 0x13, 0xb0, 0x5d, 0x56, 0x56, 0x4b, 0x4e, 0x6b, 0xc4, 0xa6, 0x7c, + 0x1e, 0x38, 0x62, 0x5, 0x23, 0xd0, 0xd7, 0x80, 0xba, 0x1b, 0xf7, 0x8, + 0xef, 0xda, 0xe7, 0xc1, 0x6e, 0xa5, 0x4a, 0xc8, 0x1f, 0x5f, 0xb4, 0x79, + 0xa2, 0xa2, 0x1a, 0xa2, 0xa2, 0xa5, 0xb3, 0xb9, 0x1e, 0xec, 0xdf, 0x7f, + 0xf7, 0x2c, 0xfb, 0x46, 0x1b, 0xfb, 0x3d, 0x3b, 0xfb, 0x1, 0xfb, 0x12, + 0x6d, 0x1f, 0xe, 0x53, 0xa, 0xf7, 0x9f, 0xf8, 0xe5, 0x56, 0xa, 0x6d, + 0xa, 0xfb, 0x1, 0x6, 0xe, 0xf7, 0xb2, 0xbc, 0x76, 0xf8, 0x60, 0x77, + 0x1, 0xf7, 0x16, 0xf8, 0x71, 0x3, 0xf7, 0xc, 0x96, 0x15, 0xf8, 0x71, + 0xf7, 0x5c, 0x5, 0xde, 0x7, 0xfc, 0x71, 0xf7, 0x5d, 0x5, 0x34, 0x7, + 0xf8, 0x0, 0xfb, 0x2f, 0xfc, 0x0, 0xfb, 0x2f, 0x5, 0xe, 0x49, 0xa, + 0xf8, 0x2c, 0xf7, 0x17, 0x15, 0xc6, 0x6, 0x45, 0xf7, 0x64, 0xf7, 0x31, + 0xf7, 0x5d, 0x5, 0x4a, 0x6, 0xfb, 0x3f, 0xfb, 0x5d, 0x5, 0x39, 0xfb, + 0x64, 0x15, 0xc7, 0x6, 0x45, 0xf7, 0x64, 0xf7, 0x30, 0xf7, 0x5d, 0x5, + 0x4b, 0x6, 0xfb, 0x40, 0xfb, 0x5d, 0x5, 0xe, 0x49, 0xa, 0xf7, 0xc, + 0xf7, 0x17, 0x15, 0xcc, 0x6, 0xf7, 0x3f, 0xf7, 0x5d, 0x31, 0xf7, 0x64, + 0x5, 0x51, 0x6, 0xd0, 0xfb, 0x64, 0x5, 0x9a, 0xfb, 0x5d, 0x15, 0xcb, + 0x6, 0xf7, 0x40, 0xf7, 0x5d, 0x31, 0xf7, 0x64, 0x5, 0x50, 0x6, 0xd0, + 0xfb, 0x64, 0x5, 0xe, 0xbf, 0x49, 0xa, 0xf7, 0x75, 0xf7, 0x17, 0x15, + 0xc0, 0x6, 0x4c, 0xf7, 0x60, 0xf7, 0x22, 0xf7, 0x61, 0x5, 0x51, 0x6, + 0xfb, 0x2f, 0xfb, 0x61, 0x5, 0xe, 0xae, 0xf7, 0x2b, 0x76, 0xf8, 0x29, + 0x77, 0x1, 0xf7, 0x9, 0xf7, 0x16, 0x15, 0xc5, 0x6, 0xf7, 0x2f, 0xf7, + 0x55, 0x39, 0xf7, 0x68, 0x5, 0x57, 0x6, 0xc8, 0xfb, 0x68, 0x5, 0xe, + 0xa0, 0x76, 0xf8, 0x5f, 0xd3, 0xf7, 0x4f, 0x77, 0x1, 0xcc, 0x16, 0xe7, + 0x6, 0xba, 0xf7, 0x73, 0x94, 0xb5, 0x9c, 0xd6, 0xad, 0xb8, 0x19, 0xb4, + 0xac, 0xc0, 0xac, 0xcc, 0x1b, 0xeb, 0x71, 0x2f, 0x4f, 0x7d, 0x1f, 0x47, + 0xfb, 0xc7, 0x5, 0xe7, 0x6, 0xcd, 0xf7, 0xc7, 0x5, 0x91, 0xac, 0x91, + 0xaf, 0xad, 0x1a, 0xcc, 0x6c, 0xc3, 0x22, 0x34, 0x4f, 0x56, 0x69, 0x65, + 0x1e, 0xc5, 0xf7, 0xa6, 0x3e, 0xa, 0x53, 0xa, 0xf7, 0x31, 0xf8, 0xe5, + 0x4f, 0xa, 0xdd, 0xfb, 0x21, 0x4f, 0xa, 0xe, 0xae, 0xf7, 0x7c, 0xe5, + 0x1, 0xe8, 0xf7, 0x9c, 0x3, 0xe8, 0xf7, 0x7c, 0x15, 0xf7, 0x8b, 0x6, + 0x9c, 0xe5, 0x5, 0xfb, 0x8b, 0x6, 0xe, 0x3f, 0xa0, 0x76, 0xf8, 0x99, + 0x77, 0xf7, 0xe, 0xee, 0x1, 0xce, 0x16, 0xe4, 0x6, 0xf7, 0x2, 0xf8, + 0x99, 0x3f, 0xa, 0xa0, 0xf1, 0x15, 0xe5, 0x6, 0xa0, 0xee, 0x3e, 0xa, + 0x52, 0xa, 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x45, 0xf8, 0xe8, 0x6e, 0xa, + 0xf7, 0x34, 0xf7, 0x1e, 0x5, 0xfb, 0x1e, 0x6, 0xfb, 0x57, 0xfd, 0x72, + 0x15, 0x38, 0xa, 0xe, 0x52, 0xa, 0xe4, 0xf7, 0x1e, 0x1, 0xf7, 0x2, + 0xf8, 0xe8, 0x15, 0xea, 0x6, 0xdf, 0xe4, 0xb3, 0x32, 0x5, 0xdd, 0x6, + 0x4b, 0xf7, 0x1e, 0x5, 0x26, 0x6, 0xfb, 0x2b, 0xfd, 0x72, 0x15, 0x38, + 0xa, 0xe, 0x5c, 0xa, 0xf8, 0xf1, 0xf0, 0x1, 0xf7, 0xc4, 0xf8, 0xf1, + 0x6e, 0xa, 0xa0, 0xf0, 0x45, 0xa, 0xfb, 0x5c, 0x26, 0x6e, 0xa, 0xa0, + 0xf0, 0x45, 0xa, 0x58, 0xfd, 0x56, 0x15, 0x38, 0xa, 0xe, 0x52, 0xa, + 0xf7, 0x77, 0x77, 0x1, 0xea, 0x16, 0x38, 0xa, 0xb8, 0xd0, 0x15, 0xcd, + 0x6, 0x54, 0xf7, 0x1e, 0x5, 0x25, 0x6, 0xe, 0x3f, 0xfb, 0x51, 0x76, + 0xf9, 0x6b, 0x77, 0xf7, 0xe, 0xee, 0x1, 0x5d, 0xfb, 0xd, 0x15, 0x7d, + 0x3f, 0x5, 0x7e, 0xba, 0xa5, 0x8b, 0x92, 0x1b, 0xe7, 0xab, 0xf7, 0x10, + 0xdf, 0x9c, 0x1f, 0xf7, 0x0, 0xf8, 0x9b, 0x5, 0x36, 0x6, 0x24, 0xfc, + 0x9b, 0x72, 0xfb, 0x11, 0x78, 0x7a, 0x38, 0xa2, 0x19, 0xf7, 0x8d, 0xf9, + 0x78, 0x15, 0xe0, 0x6, 0x9f, 0xee, 0x5, 0x36, 0x6, 0xe, 0xf7, 0x5e, + 0x2d, 0xa, 0xce, 0x16, 0xe5, 0x6, 0xb1, 0xf7, 0x42, 0xf7, 0x2, 0xe9, + 0xf4, 0xfb, 0xa0, 0x5, 0xef, 0x6, 0xfb, 0x1e, 0xf7, 0xdb, 0xf7, 0x78, + 0xf7, 0x57, 0x5, 0xfb, 0xc, 0x6, 0xfb, 0x9a, 0xfb, 0x8c, 0x89, 0x8d, + 0xea, 0xf8, 0x4e, 0x3e, 0xa, 0x3f, 0x2d, 0xa, 0xce, 0x16, 0xe5, 0x6, + 0xf7, 0x2b, 0xf9, 0x62, 0x5, 0x32, 0x6, 0xe, 0xf7, 0xb2, 0xab, 0x76, + 0xf8, 0x78, 0x77, 0x1, 0xe9, 0xf7, 0x68, 0x15, 0xf8, 0x71, 0xfb, 0x5d, + 0x5, 0xe2, 0x7, 0xfc, 0x0, 0xf7, 0x2f, 0xf8, 0x0, 0xf7, 0x2f, 0x5, + 0xe2, 0x7, 0xfc, 0x71, 0xfb, 0x5d, 0x5, 0xe, 0xf7, 0xb2, 0xf7, 0x15, + 0x76, 0xf7, 0x60, 0xd9, 0x1, 0xf5, 0xf7, 0xcc, 0x15, 0xf8, 0x3b, 0x6, + 0x5b, 0xfb, 0x60, 0x5, 0xdd, 0x6, 0xcc, 0xf7, 0xae, 0x5, 0xfc, 0x8d, + 0x6, 0xe, 0x3f, 0x2d, 0xa, 0xc0, 0x16, 0xf1, 0x6, 0xe0, 0xf7, 0xfb, + 0xe4, 0xb4, 0x9d, 0xd8, 0x32, 0x61, 0xcf, 0xf7, 0xaf, 0x5, 0x26, 0x6, + 0x3b, 0xfb, 0xe4, 0x34, 0x64, 0x7a, 0x3e, 0xe0, 0xb3, 0x5, 0xe, 0xf8, + 0xab, 0x60, 0xa, 0x13, 0xc0, 0xcc, 0x16, 0xe5, 0x6, 0xbf, 0xf7, 0x8d, + 0x5, 0xe1, 0x9e, 0xbc, 0xf7, 0x16, 0xf7, 0xe, 0x1b, 0xd2, 0x83, 0x42, + 0x56, 0x7f, 0x1f, 0x41, 0xfb, 0xe7, 0x5, 0xe4, 0x6, 0xc1, 0xf7, 0x94, + 0x5, 0xc9, 0x98, 0xb6, 0xf7, 0x27, 0xf7, 0x16, 0x1b, 0xca, 0x91, 0x52, + 0x46, 0x7d, 0x1f, 0x41, 0xfb, 0xe7, 0x5, 0xe4, 0x6, 0xd3, 0xf7, 0xe7, + 0x5, 0x90, 0xa3, 0x8d, 0xa0, 0x9f, 0x1a, 0x13, 0xa0, 0xdb, 0x5d, 0xc1, + 0x38, 0x6c, 0x42, 0x83, 0x31, 0x42, 0x1e, 0xdf, 0x78, 0x49, 0x99, 0x62, + 0x1b, 0x37, 0x59, 0x55, 0x61, 0x63, 0x1f, 0x13, 0xc0, 0x9d, 0xdf, 0x5, + 0x32, 0x6, 0xe, 0xae, 0xf9, 0x7, 0xc4, 0x1, 0xf7, 0x23, 0xf9, 0x7, + 0x15, 0xf7, 0xca, 0x6, 0x9a, 0xc4, 0x5, 0xfb, 0xcb, 0x6, 0xe, 0xf7, + 0xb2, 0xf7, 0x6c, 0xd4, 0x1, 0xe0, 0xf7, 0x6c, 0x15, 0xf8, 0x6e, 0x6, + 0xba, 0xd4, 0x5, 0xfc, 0x6e, 0x6, 0xe, 0xfb, 0x4e, 0x76, 0xf7, 0x5f, + 0xcb, 0x54, 0x76, 0xf8, 0xaf, 0x77, 0x12, 0x13, 0xb0, 0xf7, 0x39, 0xb9, + 0x15, 0x76, 0x9d, 0xac, 0x62, 0xce, 0x1b, 0xcc, 0xb5, 0xac, 0xa0, 0xa2, + 0x1f, 0x8d, 0x89, 0x5, 0x13, 0xd0, 0x83, 0x63, 0x5, 0xde, 0x6, 0xf7, + 0x2, 0xf8, 0xa3, 0x5, 0x32, 0x6, 0x4f, 0xfb, 0xae, 0x5, 0x37, 0x78, + 0x68, 0x2a, 0x23, 0x1b, 0xfb, 0x0, 0x8d, 0xe3, 0xe8, 0xa0, 0x1f, 0x8c, + 0x91, 0x90, 0xa4, 0xc0, 0xf7, 0x8f, 0x8, 0x31, 0x6, 0xfb, 0x2d, 0xfd, + 0x6e, 0x5, 0xe2, 0x6, 0xe, 0xf7, 0xb2, 0xa0, 0x76, 0xf8, 0x8e, 0x77, + 0x1, 0xbd, 0xd2, 0x15, 0xc2, 0x44, 0xf7, 0x81, 0xf7, 0x52, 0xf7, 0x22, + 0xfb, 0x52, 0xd8, 0xce, 0xfb, 0x22, 0xf7, 0x51, 0xf7, 0x73, 0xf7, 0x47, + 0x55, 0xd1, 0xfb, 0x74, 0xfb, 0x46, 0xfb, 0x23, 0xf7, 0x47, 0x3e, 0x4e, + 0xf7, 0x23, 0xfb, 0x48, 0x5, 0xe, 0x60, 0xa, 0x13, 0xa0, 0xcc, 0x16, + 0xe7, 0x6, 0xbf, 0xf7, 0x89, 0x5, 0xd5, 0x9a, 0xc6, 0xf7, 0x26, 0xf7, + 0x18, 0x1b, 0xd9, 0x8b, 0x3d, 0x47, 0x7b, 0x1f, 0x43, 0xfb, 0xd3, 0x5, + 0xe7, 0x6, 0xcf, 0xf7, 0xd3, 0x5, 0x90, 0xa1, 0x8e, 0xa0, 0x9e, 0x1a, + 0xe4, 0x5e, 0xcf, 0x31, 0x2e, 0x44, 0x44, 0x6a, 0x6c, 0x1e, 0x89, 0x8d, + 0x5, 0x13, 0xc0, 0x9f, 0xe5, 0x5, 0x38, 0x6, 0xe, 0x78, 0xd4, 0x42, + 0xf7, 0x47, 0xf8, 0x6e, 0xd0, 0x1, 0xf7, 0x9, 0xe6, 0xf7, 0xa9, 0xec, + 0x3, 0xdd, 0xf7, 0x30, 0x15, 0x35, 0x93, 0xbc, 0x32, 0xf7, 0x17, 0x1b, + 0xf7, 0x97, 0xdb, 0xf7, 0xf3, 0xf7, 0x24, 0xf7, 0x4e, 0xfb, 0x12, 0xb4, + 0x26, 0xfb, 0x30, 0xfb, 0x1, 0xfb, 0x1a, 0xfb, 0x25, 0xfb, 0x1b, 0xeb, + 0x48, 0xf7, 0x0, 0xd9, 0xc2, 0xb3, 0x9f, 0xa3, 0x1f, 0x8d, 0x89, 0x5, + 0x69, 0x82, 0x4c, 0xfb, 0x54, 0xfb, 0x18, 0x1b, 0x46, 0x70, 0xbc, 0xc8, + 0x82, 0x1f, 0xb0, 0xf7, 0x98, 0x15, 0xee, 0xdf, 0xf7, 0x3, 0xe3, 0xf4, + 0xa6, 0x34, 0x45, 0xfb, 0xe, 0x33, 0x4b, 0x37, 0x3d, 0x55, 0xc0, 0xdb, + 0x1e, 0xe, 0xa0, 0x76, 0xf9, 0x21, 0xcd, 0x8e, 0x77, 0x12, 0xcc, 0xf8, + 0xa3, 0x13, 0xd0, 0xcc, 0x16, 0xe8, 0x6, 0xbf, 0xf7, 0x88, 0x5, 0xf7, + 0xf, 0xa7, 0xe3, 0xeb, 0xe8, 0x1b, 0xd3, 0x90, 0x3d, 0x48, 0x7c, 0x1f, + 0x42, 0xfb, 0xd2, 0x5, 0xe9, 0x6, 0xcf, 0xf7, 0xd2, 0x5, 0x91, 0xa5, + 0x8d, 0xa4, 0xa2, 0x1a, 0xe0, 0x5a, 0xc6, 0x34, 0x2d, 0x44, 0x44, 0x6b, + 0x6b, 0x1e, 0x89, 0x8d, 0x9f, 0xe4, 0x5, 0x37, 0x6, 0xce, 0xe3, 0x15, + 0xcb, 0x66, 0xa, 0xa5, 0x1b, 0xa8, 0xa2, 0x80, 0x80, 0xa1, 0x1f, 0x81, + 0xa0, 0x9f, 0x81, 0xa3, 0x1b, 0xc8, 0xae, 0xc1, 0xc1, 0x90, 0x1f, 0x4d, + 0x6, 0x7d, 0x86, 0x85, 0x73, 0x71, 0x1b, 0x7d, 0x75, 0x94, 0x95, 0x73, + 0x1f, 0x13, 0xa0, 0x96, 0x70, 0x6e, 0x96, 0x70, 0x1b, 0x45, 0x79, 0x57, + 0x51, 0x7b, 0x1f, 0xe, 0x8c, 0x76, 0xf7, 0x69, 0xd5, 0xf7, 0x55, 0xd4, + 0xf7, 0x60, 0x77, 0x1, 0xf7, 0x7, 0x66, 0x15, 0xd8, 0x6, 0xb7, 0xf7, + 0x69, 0x5, 0xf7, 0x34, 0x6, 0x5f, 0xfb, 0x69, 0x5, 0xd8, 0x6, 0xb7, + 0xf7, 0x69, 0x5, 0xf7, 0x32, 0xd5, 0xfb, 0x23, 0x6, 0xb1, 0xf7, 0x55, + 0x5, 0xf4, 0xd4, 0x31, 0x6, 0xb7, 0x58, 0xa, 0xfb, 0x33, 0x6, 0xb6, + 0x58, 0xa, 0xfb, 0x2e, 0x42, 0xf7, 0x20, 0x6, 0x64, 0xfb, 0x55, 0x5, + 0x26, 0x41, 0xe2, 0x6, 0xe6, 0xd5, 0x15, 0xb1, 0xf7, 0x55, 0x5, 0xf7, + 0x35, 0x6, 0x64, 0xfb, 0x55, 0x5, 0xe, 0x7d, 0xd1, 0xf8, 0x30, 0xd1, + 0x1, 0xed, 0xe5, 0xf7, 0xb6, 0xe5, 0x3, 0xde, 0xf7, 0x67, 0x15, 0xfb, + 0x24, 0xf1, 0x3a, 0xf7, 0x6, 0xf7, 0x30, 0xf7, 0x16, 0xf7, 0x1b, 0xf7, + 0x5a, 0xf7, 0x1f, 0x33, 0xdb, 0xfb, 0x12, 0xfb, 0x4c, 0x23, 0xfb, 0x26, + 0xfb, 0x49, 0x1e, 0xe5, 0x16, 0xf7, 0x5, 0xcb, 0xf7, 0x24, 0xf7, 0x17, + 0xe1, 0xb4, 0x48, 0x3a, 0xfb, 0x5, 0x43, 0xfb, 0x2b, 0xfb, 0xf, 0x6e, + 0x29, 0x98, 0xf7, 0x22, 0x1e, 0xe, 0x7d, 0xd1, 0xf9, 0x3a, 0x77, 0x1, + 0xe8, 0xe5, 0xf7, 0xc2, 0xe5, 0x3, 0xf7, 0xd3, 0xf8, 0xe7, 0x15, 0xd6, + 0x6, 0xf7, 0x19, 0x6f, 0xa, 0xfb, 0x7, 0x6, 0xfb, 0xdd, 0x29, 0xa, + 0x7d, 0xd1, 0xf8, 0xaf, 0xf7, 0x1f, 0x1, 0xe8, 0xe5, 0xf7, 0xbd, 0xe5, + 0x3, 0xf7, 0x8c, 0xf8, 0xe7, 0x15, 0xe8, 0x6, 0xdc, 0xe5, 0xb3, 0x31, + 0x5, 0xdb, 0x6, 0x4d, 0x6f, 0xa, 0x28, 0x6, 0xfb, 0xbe, 0x29, 0xa, + 0x7d, 0xd0, 0xf8, 0xba, 0xf0, 0x1, 0xe8, 0xe5, 0xf7, 0xb8, 0xe5, 0x3, + 0xde, 0xf7, 0x64, 0x24, 0xa, 0xf7, 0xa7, 0xf8, 0x21, 0x15, 0xe9, 0x6, + 0xa1, 0xf0, 0x4d, 0xa, 0xfb, 0x61, 0x26, 0x15, 0xe9, 0x6, 0xa0, 0xf0, + 0x5, 0x2d, 0x6, 0xe, 0xf9, 0x1a, 0x7c, 0xd4, 0x42, 0xf7, 0x4f, 0xcd, + 0xd0, 0xf7, 0x36, 0xd0, 0x1, 0xde, 0xe4, 0xf9, 0x53, 0xe4, 0x3, 0xf8, + 0x8b, 0xe3, 0x15, 0x40, 0xb3, 0xd0, 0x6f, 0xd3, 0x1b, 0xf7, 0x11, 0xe1, + 0xed, 0xe0, 0xb0, 0x1f, 0x2d, 0x94, 0x5, 0x61, 0x79, 0x54, 0x3e, 0x3b, + 0x1b, 0xfb, 0x2, 0x7d, 0xf7, 0xe, 0xc5, 0x93, 0x1f, 0xf8, 0x16, 0x6, + 0x8f, 0x9e, 0x90, 0xb1, 0xa4, 0x1a, 0xf7, 0x13, 0x3a, 0xe6, 0xfb, 0x14, + 0xfb, 0x0, 0x53, 0x52, 0x61, 0x63, 0x1e, 0xee, 0x53, 0xfb, 0x0, 0x8b, + 0x75, 0x1b, 0xfb, 0x52, 0x2f, 0xfb, 0x43, 0xfb, 0x32, 0xfb, 0x32, 0xf1, + 0x4d, 0xf7, 0x0, 0xf7, 0xc, 0xc8, 0xd1, 0xac, 0xa8, 0x1f, 0xfb, 0xdf, + 0xf7, 0x9, 0x15, 0xdd, 0xbb, 0xf7, 0x4a, 0xf7, 0x26, 0xea, 0xa7, 0x32, + 0x56, 0xfb, 0x1, 0x4b, 0xfb, 0x38, 0xfb, 0x17, 0xfb, 0xe, 0x8b, 0xf7, + 0xf, 0xa7, 0x1e, 0xf8, 0x2f, 0xf1, 0x15, 0xf7, 0x17, 0xb7, 0xdb, 0xaa, + 0xbc, 0x1b, 0xa0, 0xf7, 0x4, 0x87, 0xfb, 0x32, 0x7d, 0x1f, 0xe, 0xae, + 0xfb, 0x60, 0x76, 0xf7, 0x75, 0x77, 0x1, 0xb6, 0xc9, 0x3, 0xda, 0x16, + 0x75, 0x5d, 0x7d, 0x5a, 0x64, 0x1a, 0x6e, 0x93, 0x4d, 0xdb, 0xbb, 0xb2, + 0x9c, 0x96, 0x9e, 0x1e, 0x97, 0xc7, 0x5, 0x7c, 0x66, 0x70, 0x83, 0x74, + 0x1b, 0x81, 0x5c, 0x91, 0xc1, 0xae, 0xa1, 0xbd, 0x91, 0x9a, 0x1f, 0xe, + 0x7d, 0xd1, 0x1, 0xf2, 0xe5, 0xf7, 0xb8, 0xe5, 0x3, 0xf8, 0x1c, 0xf8, + 0xe7, 0x56, 0xa, 0x6f, 0xa, 0xfb, 0x1, 0x6, 0xfb, 0x68, 0x29, 0xa, + 0xa0, 0x76, 0xf8, 0xa4, 0xf7, 0x43, 0x1, 0xf7, 0x63, 0xf7, 0xc1, 0x3, + 0xf7, 0xb7, 0x16, 0xdb, 0x6, 0xf7, 0x1d, 0xf9, 0x53, 0x5, 0x5c, 0x6, + 0x5a, 0x35, 0xfb, 0x18, 0x40, 0x51, 0x72, 0x7c, 0x3d, 0x18, 0xbd, 0x99, + 0xdd, 0xa9, 0xbf, 0xba, 0x8d, 0x89, 0x18, 0xe, 0xf8, 0xac, 0x80, 0xc4, + 0x5f, 0x76, 0xf7, 0xc5, 0xc3, 0xf7, 0xfc, 0x77, 0xa0, 0x77, 0x12, 0xf9, + 0x92, 0xd1, 0x13, 0x6c, 0xf7, 0x6, 0x78, 0x15, 0xd5, 0x6, 0xf9, 0x1f, + 0xf9, 0x66, 0x5, 0x3a, 0x6, 0x13, 0xb4, 0xfb, 0x7d, 0xfd, 0x5e, 0x15, + 0xf7, 0xa7, 0x6, 0x96, 0xc4, 0x5, 0xfb, 0x43, 0x6, 0x9d, 0xa2, 0xa0, + 0x97, 0xca, 0xb2, 0x8, 0xc1, 0xac, 0xb7, 0xa9, 0xc5, 0x1a, 0xba, 0x6b, + 0xc1, 0x2a, 0x3c, 0x5a, 0x6a, 0x44, 0x78, 0x1e, 0xd1, 0x85, 0x5, 0xb3, + 0x98, 0xa4, 0x99, 0xb4, 0x1b, 0xb3, 0x9c, 0x74, 0x75, 0x6b, 0x72, 0x7d, + 0x5a, 0x6e, 0x1f, 0xfb, 0xf, 0x44, 0x6f, 0x55, 0x7b, 0x57, 0x8, 0xfb, + 0xaa, 0xf7, 0xfd, 0x15, 0xd1, 0x6, 0xd4, 0xf7, 0xf4, 0x5, 0x57, 0x6, + 0x5d, 0x53, 0x3c, 0x6f, 0x79, 0x85, 0x7e, 0x50, 0x18, 0xa8, 0x90, 0xb7, + 0x96, 0xb7, 0xab, 0x8, 0xe, 0x65, 0xa, 0xf8, 0xe0, 0x77, 0xa0, 0x77, + 0x12, 0x13, 0x68, 0xf8, 0x6a, 0xc7, 0x15, 0xf7, 0x36, 0x6, 0x7e, 0x44, + 0x5, 0xc6, 0x6, 0x99, 0xd2, 0x5, 0xb4, 0x6, 0x13, 0xa8, 0x96, 0xc1, + 0x5, 0x61, 0x6, 0xb5, 0xf7, 0x77, 0x5, 0x59, 0x6, 0xfb, 0x6a, 0xfb, + 0x74, 0x5, 0xd0, 0x88, 0x15, 0xf7, 0xb, 0xf7, 0xf, 0x70, 0xfb, 0xf, + 0x5, 0xfc, 0x7f, 0xfb, 0x19, 0x15, 0xce, 0x6, 0xf8, 0xdd, 0xf9, 0x66, + 0x5, 0x42, 0x6, 0xfc, 0x74, 0xfb, 0xf5, 0x15, 0xcb, 0x6, 0x13, 0x70, + 0xcc, 0xf7, 0xf4, 0x5, 0x5c, 0x6, 0x64, 0x55, 0x41, 0x6c, 0x7b, 0x86, + 0x80, 0x4f, 0x18, 0xa5, 0x91, 0xb2, 0x95, 0xb3, 0xab, 0x8, 0xe, 0xae, + 0xf7, 0xc2, 0x76, 0xf8, 0x3a, 0x77, 0x1, 0xf7, 0x7a, 0xf7, 0xad, 0x15, + 0xd1, 0x6, 0xd2, 0xf8, 0x3a, 0x5, 0x58, 0x6, 0x5d, 0x48, 0x3d, 0x6b, + 0x79, 0x84, 0x7f, 0x43, 0x18, 0xa7, 0x92, 0xb6, 0x98, 0xb8, 0xb1, 0x8, + 0xe, 0xd3, 0xf7, 0xd1, 0x77, 0xa7, 0x76, 0xf7, 0x4d, 0xd0, 0xf7, 0x47, + 0x77, 0x12, 0xef, 0xd6, 0x13, 0xb8, 0xf7, 0xee, 0xf7, 0xd1, 0x15, 0xd3, + 0x6, 0x84, 0x97, 0x88, 0x95, 0xac, 0x1a, 0x99, 0x89, 0x9d, 0xa0, 0xda, + 0x1e, 0x96, 0xb4, 0x95, 0xb5, 0xb2, 0x1a, 0xd6, 0x6d, 0xc4, 0xfb, 0x4, + 0xfb, 0xa, 0x63, 0x30, 0x69, 0x7e, 0x1e, 0xd6, 0x7d, 0x5, 0xd0, 0xa6, + 0xc4, 0x8c, 0x96, 0x1b, 0xad, 0xb1, 0x76, 0x63, 0x81, 0x89, 0x7f, 0x86, + 0x7c, 0x1f, 0x6b, 0x84, 0x7b, 0x87, 0x5f, 0x8a, 0x8, 0x53, 0x88, 0xfb, + 0xe, 0x82, 0xfb, 0x11, 0x1a, 0x13, 0x78, 0x63, 0xa4, 0x3e, 0xe7, 0xc2, + 0xbc, 0xab, 0x9d, 0x9d, 0x1e, 0x13, 0xb8, 0x8f, 0x74, 0x8b, 0x88, 0x8e, + 0x80, 0x8, 0x95, 0xf7, 0x50, 0x15, 0xfb, 0x16, 0x71, 0x3a, 0x89, 0x7a, + 0x1b, 0x79, 0x64, 0x97, 0xb6, 0xb9, 0xbb, 0x95, 0xab, 0x90, 0x1f, 0xc9, + 0x90, 0x94, 0x8e, 0xa9, 0x93, 0x8, 0xe, 0xce, 0xf7, 0xc4, 0xd7, 0xf7, + 0xad, 0xd7, 0x1, 0xef, 0xd8, 0xf7, 0x6a, 0xd8, 0x3, 0xef, 0xf8, 0x84, + 0x15, 0x27, 0xa9, 0x2f, 0xf7, 0x18, 0xf7, 0x10, 0xdd, 0xf7, 0x22, 0xf7, + 0x6, 0xe7, 0x53, 0xe0, 0xfb, 0x1, 0xfb, 0x23, 0x4f, 0xfb, 0x2f, 0x35, + 0x1e, 0xd8, 0x8d, 0x15, 0xbe, 0xb4, 0xf7, 0x4, 0xe0, 0xbe, 0xb0, 0x61, + 0x50, 0x3c, 0x5b, 0x26, 0x3a, 0x4e, 0x73, 0xbe, 0xce, 0x1e, 0xe, 0xf7, + 0xcd, 0x9b, 0xca, 0xf8, 0x2, 0xca, 0x1, 0xbc, 0xd6, 0xf7, 0xf0, 0xd8, + 0x3, 0xb8, 0x94, 0x15, 0xb8, 0x6c, 0xc4, 0xcb, 0x5, 0x80, 0x9f, 0xb5, + 0x79, 0xca, 0x1b, 0xf7, 0x37, 0xf7, 0xb, 0xf7, 0x13, 0xf7, 0x3d, 0xc4, + 0x80, 0xb9, 0x6e, 0xae, 0x1f, 0xc6, 0xcd, 0x5e, 0xab, 0x51, 0x4b, 0x5, + 0x93, 0x7e, 0x63, 0xa2, 0x43, 0x1b, 0xfb, 0x63, 0x41, 0xfb, 0x3d, 0xfb, + 0x18, 0x40, 0xa2, 0x67, 0x9b, 0x71, 0x1f, 0xc5, 0xca, 0x15, 0x7e, 0xa2, + 0x82, 0xa2, 0xa8, 0x1a, 0xec, 0xcc, 0xf7, 0x20, 0xf7, 0x1d, 0xba, 0xa2, + 0x7a, 0x84, 0x93, 0x1e, 0xfb, 0x72, 0xfb, 0xdc, 0x15, 0xf7, 0x97, 0xf7, + 0xb1, 0x5, 0x90, 0x7c, 0x9b, 0x78, 0x64, 0x1a, 0x24, 0x3b, 0xfb, 0x16, + 0xfb, 0x11, 0x6e, 0x72, 0x93, 0x98, 0x76, 0x1e, 0xe, 0x7d, 0xd0, 0xf8, + 0x15, 0xcf, 0xf2, 0xf7, 0x0, 0x49, 0xcd, 0x8e, 0x77, 0x12, 0xe5, 0xe8, + 0xf7, 0xb8, 0xe8, 0x13, 0xe6, 0xf7, 0x8b, 0xf8, 0xf7, 0x15, 0xcb, 0x6, + 0x13, 0xd6, 0xa4, 0x91, 0x96, 0x9c, 0xa5, 0x1b, 0xad, 0xa1, 0x7d, 0x7f, + 0xa3, 0x1f, 0x82, 0x9d, 0x9e, 0x83, 0xa2, 0x1b, 0xc8, 0xae, 0xc2, 0xc1, + 0x91, 0x1f, 0x4c, 0x69, 0xa, 0x70, 0x1b, 0x7c, 0x78, 0x96, 0x95, 0x73, + 0x1f, 0x13, 0xce, 0x96, 0x73, 0x6e, 0x95, 0x69, 0x1b, 0x13, 0xe6, 0x45, + 0x79, 0x57, 0x50, 0x7b, 0x1f, 0xfb, 0x38, 0xfc, 0x27, 0x24, 0xa, 0xe, + 0xfb, 0x4e, 0x76, 0xf7, 0x53, 0xd5, 0xf8, 0x2a, 0xc9, 0x4d, 0xd5, 0x12, + 0xf8, 0x80, 0xe7, 0x13, 0xd8, 0xf7, 0x3b, 0xdd, 0x15, 0x4b, 0xad, 0xbb, + 0x69, 0xd0, 0x1b, 0xf7, 0x1c, 0xf7, 0x16, 0xf7, 0x25, 0xf7, 0x53, 0xf7, + 0x21, 0x3c, 0xd8, 0x26, 0x45, 0x5c, 0x65, 0x5d, 0x5c, 0x1f, 0x13, 0xe8, + 0x9b, 0xd3, 0x5, 0x35, 0x6, 0xfb, 0x30, 0xfd, 0x71, 0x5, 0xe7, 0x6, + 0xe5, 0xf8, 0x38, 0x15, 0xe0, 0xcb, 0xf7, 0x3a, 0xf7, 0x9, 0xda, 0xaf, + 0x43, 0x43, 0x3e, 0x5c, 0xfb, 0x4d, 0xfb, 0x17, 0x31, 0x6f, 0xda, 0xd7, + 0x1e, 0xe, 0xf7, 0x83, 0xfb, 0x2c, 0x76, 0xf9, 0xc0, 0xda, 0x1, 0xf7, + 0xd2, 0xfb, 0x41, 0x15, 0xd9, 0xf9, 0xc0, 0xf6, 0xfd, 0xc0, 0xda, 0xf9, + 0xc0, 0xcf, 0xda, 0xfb, 0xc0, 0x6, 0xfb, 0xb, 0x22, 0x47, 0xfb, 0x19, + 0x29, 0xd5, 0x2d, 0xf7, 0xa, 0x1f, 0xe, 0x61, 0xa, 0xf7, 0x0, 0xe2, + 0x3, 0xf7, 0x4d, 0xfb, 0x63, 0x15, 0xcd, 0x6, 0x68, 0xf7, 0x0, 0x76, + 0xf7, 0x6, 0xf7, 0x5, 0x1a, 0xf7, 0xda, 0xf7, 0x74, 0xf7, 0x85, 0xae, + 0xb1, 0x1e, 0x46, 0x6, 0xfb, 0x0, 0xfb, 0x12, 0xfb, 0x3d, 0xfb, 0x4b, + 0xfb, 0xbc, 0x1a, 0xfb, 0x5, 0xa6, 0xfb, 0x5, 0xbd, 0xfb, 0x1, 0x1e, + 0xe, 0x61, 0xa, 0xf7, 0x8e, 0xe2, 0x3, 0x82, 0xfb, 0x63, 0x15, 0xd0, + 0x6, 0xf7, 0x0, 0xf7, 0x12, 0xf7, 0x3d, 0xf7, 0x42, 0xf7, 0xbc, 0x1a, + 0xf7, 0x5, 0x70, 0xf7, 0xe, 0x59, 0xf7, 0x1, 0x1e, 0x49, 0x6, 0xae, + 0xfb, 0x0, 0xa0, 0xfb, 0xf, 0xfb, 0x5, 0x1a, 0xfb, 0xda, 0xfb, 0x74, + 0xfb, 0x7c, 0x68, 0x65, 0x1e, 0xe, 0xf8, 0xe3, 0x78, 0xc3, 0xf7, 0x89, + 0xc7, 0x86, 0xc4, 0xf7, 0x8a, 0xc4, 0x91, 0x77, 0x12, 0xf7, 0x27, 0xd8, + 0xf7, 0x3d, 0xd7, 0xee, 0xd7, 0xf7, 0x3c, 0xd8, 0x13, 0xd7, 0x80, 0xf8, + 0xcc, 0xf7, 0x2, 0x15, 0x68, 0x8b, 0x2d, 0xf7, 0x18, 0xf7, 0x4f, 0x8d, + 0xf7, 0x74, 0x91, 0xf7, 0x1, 0x3f, 0xa1, 0x4b, 0x1e, 0xfb, 0x18, 0x5a, + 0xfb, 0x3c, 0x4b, 0x1f, 0xd7, 0x16, 0xae, 0x9f, 0xf7, 0x1d, 0xe3, 0x96, + 0xbc, 0x84, 0x4b, 0x7c, 0x80, 0xfb, 0x33, 0x28, 0x1e, 0x13, 0x37, 0x0, + 0x53, 0x89, 0xbe, 0xa1, 0x1f, 0xfc, 0x85, 0xf7, 0xfd, 0x15, 0x13, 0xb7, + 0x80, 0x68, 0x8b, 0x28, 0xf7, 0x18, 0xf7, 0x4f, 0x8e, 0xf7, 0x72, 0x92, + 0xf7, 0x1, 0x3f, 0xa1, 0x49, 0x1e, 0x13, 0x36, 0x0, 0xfb, 0x16, 0x59, + 0xfb, 0x36, 0x4b, 0x1f, 0xd8, 0x16, 0xad, 0x9f, 0xf7, 0x1b, 0xe2, 0x9f, + 0xb5, 0x7a, 0x52, 0x7d, 0x80, 0xfb, 0x32, 0x26, 0x1e, 0x13, 0x8c, 0x0, + 0x54, 0x89, 0xc3, 0xa0, 0x1f, 0x5f, 0xfc, 0x7e, 0x15, 0xde, 0x6, 0x13, + 0xcf, 0x80, 0xf8, 0xe7, 0xf9, 0x66, 0x5, 0x3a, 0x6, 0xe, 0x77, 0x8b, + 0xf5, 0x1, 0xe2, 0x16, 0xf4, 0x6, 0xa1, 0xf5, 0x5, 0x22, 0x6, 0xe, + 0x77, 0xf7, 0x52, 0xf7, 0x11, 0x1, 0xf7, 0x15, 0xf7, 0x52, 0x15, 0xf5, + 0x6, 0xa1, 0xf7, 0x11, 0x5, 0x21, 0x6, 0xe, 0xf9, 0x52, 0x78, 0xc3, + 0xf7, 0x8c, 0xc4, 0x8b, 0xc3, 0xf7, 0x8b, 0xc3, 0x8d, 0x77, 0x12, 0xe3, + 0xd3, 0xf7, 0x31, 0xd3, 0x8e, 0xd3, 0x13, 0xf7, 0xf7, 0x34, 0xf8, 0x6b, + 0x15, 0x95, 0x9a, 0xf7, 0x38, 0xe4, 0xc0, 0x8b, 0x52, 0x82, 0x67, 0x75, + 0xfb, 0x25, 0x39, 0x56, 0x8b, 0xbd, 0xa2, 0x1e, 0x64, 0xfc, 0x7e, 0x15, + 0xd4, 0x6, 0x13, 0xe8, 0xf8, 0x67, 0xf9, 0x66, 0x5, 0x41, 0x6, 0xfc, + 0x87, 0xfb, 0x7c, 0x5b, 0xa, 0xf7, 0x53, 0xb9, 0x1e, 0x13, 0xf0, 0xd5, + 0x5e, 0xbb, 0x3d, 0xfb, 0x1a, 0x5f, 0xfb, 0x26, 0x37, 0x1e, 0xf7, 0xc4, + 0xfb, 0xfd, 0x5b, 0xa, 0xf7, 0x51, 0xb9, 0xd6, 0x5e, 0xbb, 0x3d, 0xfb, + 0x1a, 0x5f, 0xfb, 0x25, 0x37, 0x1e, 0xd3, 0x16, 0x96, 0x9a, 0xf7, 0x35, + 0xe4, 0xc0, 0x8b, 0x53, 0x81, 0x68, 0x75, 0xfb, 0x24, 0x39, 0x1e, 0x13, + 0x81, 0x56, 0x8b, 0xbd, 0xa2, 0x1f, 0xf7, 0x9d, 0x16, 0x74, 0x8b, 0x21, + 0xf7, 0x10, 0x1e, 0x13, 0x0, 0xf7, 0x2e, 0xa1, 0xf7, 0x53, 0xb7, 0xd7, + 0x5d, 0xba, 0x3f, 0x1f, 0x13, 0x80, 0xfb, 0xe, 0x53, 0xfb, 0x2b, 0x3d, + 0x1f, 0xd3, 0x16, 0x96, 0x9a, 0xf7, 0x35, 0xe4, 0xbf, 0x8b, 0x53, 0x81, + 0x68, 0x75, 0xfb, 0x24, 0x3a, 0x1e, 0x13, 0x0, 0x56, 0x8b, 0xbd, 0xa2, + 0x1f, 0xe, 0xf7, 0xb2, 0xf7, 0x64, 0xe2, 0x1, 0xf7, 0xc0, 0xe6, 0x3, + 0xe0, 0xf7, 0x64, 0x15, 0xf7, 0x6b, 0xfb, 0x64, 0xe6, 0xf7, 0x64, 0xf7, + 0x6b, 0xe2, 0xfb, 0x6b, 0xf7, 0x66, 0x30, 0xfb, 0x66, 0xfb, 0x6b, 0x6, + 0xe, 0xf7, 0xb2, 0x8b, 0xcf, 0xf7, 0x64, 0xcf, 0xf7, 0x36, 0x77, 0x1, + 0xf7, 0xa0, 0xf7, 0x6, 0x15, 0xdd, 0x6, 0xbf, 0xf7, 0x36, 0x5, 0xf7, + 0x55, 0x6, 0xa2, 0xcf, 0x5, 0xfb, 0x55, 0x6, 0xbf, 0xf7, 0x36, 0x5, + 0x3a, 0x6, 0x57, 0xfb, 0x36, 0x5, 0xfb, 0x56, 0x6, 0x75, 0x47, 0x5, + 0xf7, 0x55, 0x6, 0xfb, 0xae, 0xfb, 0xa8, 0x15, 0xf8, 0x67, 0x6, 0xa1, + 0xcf, 0x5, 0xfc, 0x66, 0x6, 0xe, 0xfb, 0x4e, 0x76, 0xf7, 0x53, 0xd4, + 0xf8, 0x2c, 0xd4, 0x7f, 0x77, 0x12, 0xdf, 0xe7, 0x13, 0xd8, 0xf8, 0x31, + 0xc1, 0x15, 0x52, 0xfb, 0x99, 0x5, 0xe8, 0x6, 0xf7, 0x30, 0xf9, 0x71, + 0x5, 0x3b, 0x6, 0x77, 0x2a, 0x5, 0x13, 0xe8, 0xf5, 0x5b, 0x37, 0x8e, + 0x74, 0x1b, 0xfb, 0x26, 0xfb, 0xc, 0xfb, 0x1d, 0xfb, 0x52, 0xfb, 0x3c, + 0xf4, 0x50, 0xd4, 0xb3, 0xba, 0x99, 0xc3, 0xcb, 0x1f, 0xfb, 0x81, 0xf7, + 0x31, 0x15, 0xd1, 0xb7, 0xf7, 0x4c, 0xf7, 0x16, 0xd2, 0xbd, 0x4f, 0x3c, + 0xfb, 0x4, 0x44, 0xfb, 0x31, 0xfb, 0x3, 0x43, 0x62, 0xc1, 0xef, 0x1e, + 0xe, 0x8b, 0xef, 0xf8, 0xbf, 0xd3, 0x1, 0xf7, 0x86, 0xf3, 0x3, 0xf7, + 0x89, 0xf7, 0x47, 0x15, 0xe1, 0x6, 0x96, 0xc7, 0x95, 0xa4, 0xea, 0xd4, + 0x8, 0xe7, 0xd3, 0xd2, 0xc1, 0xe5, 0x1a, 0xeb, 0x35, 0xd9, 0xfb, 0x14, + 0xfb, 0x28, 0x34, 0xfb, 0x9, 0x31, 0x1e, 0xe8, 0x7c, 0x5, 0xb0, 0x90, + 0x9a, 0xf7, 0x5, 0xf7, 0x10, 0x1b, 0xd1, 0xbe, 0x5a, 0x56, 0x4c, 0x49, + 0x5c, 0x56, 0x61, 0x1f, 0x39, 0x4b, 0x4f, 0x5b, 0x7e, 0xfb, 0x2, 0x8, + 0x5d, 0xfb, 0x47, 0x15, 0xf3, 0x6, 0xa1, 0xef, 0x5, 0x23, 0x6, 0xe, + 0xf7, 0xcd, 0xfb, 0x5d, 0xd3, 0xf8, 0x73, 0x77, 0xee, 0xeb, 0x1, 0xe0, + 0xe8, 0x3, 0xf8, 0x56, 0xa2, 0x15, 0x86, 0x66, 0x61, 0xfb, 0x6, 0x24, + 0x8a, 0x8, 0x44, 0x8a, 0x58, 0xb8, 0xc0, 0x1a, 0xcb, 0xcd, 0xc0, 0xc0, + 0xb5, 0x1e, 0xde, 0xcb, 0xc8, 0xbb, 0x98, 0xf7, 0x3, 0x8, 0x34, 0x6, + 0x80, 0x4e, 0x81, 0x72, 0x2b, 0x42, 0x8, 0x2e, 0x43, 0x43, 0x4f, 0x30, + 0x1a, 0x2b, 0xe2, 0x42, 0xf7, 0x16, 0xf7, 0xd, 0xf7, 0x3, 0xf5, 0xf2, + 0x1e, 0xfb, 0x35, 0xf8, 0x39, 0x15, 0xf4, 0x6, 0xa1, 0xeb, 0x5, 0x22, + 0x6, 0xe, 0xc4, 0xf8, 0x78, 0x44, 0xa, 0xf7, 0x3c, 0xf7, 0xa2, 0x3, + 0xf7, 0xd5, 0xf8, 0x63, 0x15, 0xbc, 0x6, 0xb8, 0xf7, 0x1f, 0xa2, 0xf7, + 0x8, 0x3f, 0xa, 0x74, 0xfb, 0x8, 0x5, 0xfb, 0x31, 0xfb, 0x1f, 0x15, + 0xbc, 0x6, 0xb9, 0xf7, 0x1f, 0xa1, 0xf7, 0x8, 0x3f, 0xa, 0x75, 0xfb, + 0x8, 0x5, 0xe, 0xae, 0xfb, 0x14, 0x76, 0xf7, 0x2a, 0xf4, 0x1, 0xa4, + 0x8c, 0x15, 0x37, 0xa, 0x83, 0x62, 0x18, 0x67, 0xa, 0x93, 0xb0, 0x9d, + 0xe6, 0x18, 0x22, 0x6, 0xf7, 0x24, 0x22, 0x15, 0x62, 0xa, 0x83, 0x62, + 0x18, 0xf6, 0x3c, 0xa, 0x22, 0x6, 0xe, 0xae, 0xf8, 0x6a, 0xf4, 0xf7, + 0x2a, 0x77, 0x1, 0xf7, 0x1e, 0xf4, 0x3, 0xf7, 0xc3, 0xf8, 0x6a, 0x33, + 0xa, 0xfb, 0x4c, 0x30, 0x33, 0xa, 0xe, 0xae, 0xf8, 0x78, 0x76, 0xf7, + 0x2a, 0xf4, 0x1, 0xf7, 0x10, 0xf8, 0x63, 0x15, 0x67, 0xa, 0x93, 0xb0, + 0x9d, 0xe6, 0x18, 0x22, 0x6, 0x75, 0x22, 0x5, 0x37, 0xa, 0x8, 0xf7, + 0x32, 0x62, 0x15, 0xf6, 0x3c, 0xa, 0x22, 0x6, 0x75, 0x22, 0x5, 0x62, + 0xa, 0x8, 0xe, 0x3f, 0xf8, 0x7f, 0x44, 0xa, 0xf7, 0x39, 0xf8, 0x6a, + 0x3b, 0xa, 0xea, 0xb7, 0x95, 0x41, 0xa, 0xfb, 0x4, 0x84, 0x66, 0x8, + 0xe, 0x3f, 0xf8, 0x78, 0x44, 0xa, 0xf7, 0x2b, 0xf8, 0x63, 0x15, 0xf7, + 0x0, 0x3c, 0xa, 0x21, 0x6, 0x75, 0x22, 0x5, 0x37, 0xa, 0x8, 0xe, + 0x3f, 0xfb, 0x14, 0x44, 0xa, 0xbf, 0x8c, 0x15, 0x37, 0xa, 0x83, 0x62, + 0x18, 0xf7, 0x0, 0x99, 0xa3, 0xf7, 0x5, 0x93, 0xb0, 0x9e, 0xe6, 0x18, + 0x21, 0x6, 0xe, 0x20, 0xf8, 0x78, 0x44, 0xa, 0xf7, 0x31, 0xf8, 0x63, + 0x15, 0xc1, 0x6, 0xbc, 0xf7, 0x1f, 0xa4, 0xf7, 0x8, 0x57, 0xa, 0x72, + 0xfb, 0x8, 0x5, 0xe, 0xae, 0xa0, 0x76, 0xf8, 0x59, 0xd4, 0x42, 0xe0, + 0x12, 0x13, 0xa0, 0xd8, 0x16, 0xdb, 0x6, 0xb5, 0xf7, 0x67, 0x5, 0xf7, + 0x3, 0xa1, 0xc0, 0xf7, 0x17, 0xe4, 0x1b, 0x9c, 0x9b, 0x86, 0x7e, 0x9a, + 0x1f, 0xae, 0xdf, 0x5, 0x96, 0x76, 0x78, 0x93, 0x74, 0x1b, 0x41, 0x56, + 0x37, 0x68, 0x77, 0x1f, 0x13, 0xc0, 0x9e, 0xf6, 0x5, 0x41, 0x6, 0xe, + 0xf8, 0x4b, 0x78, 0xca, 0xf7, 0xab, 0xc3, 0xf7, 0xe, 0xc2, 0xf7, 0xa, + 0xca, 0x1, 0xc1, 0xcc, 0xf9, 0x21, 0xcc, 0x3, 0xf7, 0x93, 0xf7, 0x2a, + 0x15, 0xd0, 0x6, 0xad, 0xf7, 0x41, 0x5, 0xb3, 0x6, 0xc1, 0x9c, 0x76, + 0x33, 0xad, 0x1f, 0xa3, 0x4b, 0x5, 0xde, 0x6, 0x68, 0xda, 0x65, 0xdc, + 0x7a, 0x98, 0x73, 0x93, 0x19, 0x8c, 0x8d, 0xe3, 0x90, 0xb8, 0xc4, 0x94, + 0xb9, 0x19, 0xec, 0x9d, 0x2d, 0x9d, 0x3a, 0x1b, 0xfb, 0x27, 0x6, 0xad, + 0xfb, 0x45, 0x15, 0xa4, 0xf7, 0xe, 0x5, 0xd9, 0x6, 0xb4, 0xcd, 0x8b, + 0x4f, 0x7f, 0x1f, 0x4d, 0x7e, 0x45, 0x8b, 0x6b, 0x1b, 0xfc, 0x22, 0x78, + 0x15, 0xfb, 0x66, 0xf7, 0x44, 0xfb, 0x3d, 0xf7, 0x6c, 0xf7, 0x6d, 0xf7, + 0x42, 0xf7, 0x3e, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x45, 0xf7, 0x3c, 0xfb, + 0x6a, 0xfb, 0x6a, 0xfb, 0x46, 0xfb, 0x3b, 0xfb, 0x66, 0x1e, 0xcc, 0x16, + 0xf7, 0x42, 0xf7, 0x25, 0xf7, 0x20, 0xf7, 0x48, 0xf7, 0x4a, 0xf7, 0x26, + 0xfb, 0x20, 0xfb, 0x42, 0xfb, 0x43, 0xfb, 0x26, 0xfb, 0x21, 0xfb, 0x4a, + 0xfb, 0x48, 0xfb, 0x25, 0xf7, 0x21, 0xf7, 0x43, 0x1e, 0xe, 0xae, 0xf8, + 0xd0, 0xb1, 0xf7, 0x0, 0xb1, 0x1, 0xf7, 0x6a, 0xb2, 0xf7, 0x2, 0xb2, + 0x3, 0xf7, 0x6a, 0xf9, 0x2d, 0x15, 0x57, 0xb6, 0x62, 0xbe, 0xbe, 0xb6, + 0xb4, 0xbf, 0xbe, 0x61, 0xb3, 0x57, 0x57, 0x61, 0x63, 0x58, 0x1e, 0xb2, + 0x89, 0x15, 0xaa, 0xa3, 0xa3, 0xaa, 0xaa, 0xa3, 0x74, 0x6b, 0x6d, 0x73, + 0x74, 0x6c, 0x6d, 0x72, 0xa2, 0xa9, 0x1e, 0xe, 0xf7, 0x5e, 0x7c, 0xd0, + 0xf8, 0x33, 0xd0, 0x12, 0xf7, 0x1d, 0xde, 0xf7, 0x49, 0xe6, 0x57, 0xe4, + 0x13, 0xf0, 0xca, 0xf7, 0x46, 0x15, 0xfb, 0x49, 0xf7, 0x39, 0x7f, 0xbd, + 0xf7, 0x27, 0xce, 0xd4, 0xd8, 0xeb, 0x3f, 0xb7, 0x2a, 0xb5, 0x1e, 0x49, + 0xa7, 0x6a, 0x94, 0xb5, 0x1a, 0xaa, 0xac, 0xb5, 0xcc, 0x1e, 0x13, 0xe8, + 0x9b, 0xf5, 0x81, 0x2e, 0x1f, 0xe4, 0x90, 0x5, 0xf7, 0x1c, 0xfb, 0x14, + 0xaa, 0x3e, 0xfb, 0x1f, 0x5b, 0x3c, 0x4c, 0x34, 0xcd, 0x66, 0xe5, 0x63, + 0x1e, 0x13, 0xf0, 0xca, 0x6f, 0xb8, 0x75, 0x5c, 0x1a, 0x58, 0x56, 0x6d, + 0x4a, 0xfb, 0x14, 0x89, 0xf0, 0xa8, 0x1e, 0xe, 0xf7, 0x5e, 0x7c, 0xd1, + 0xf8, 0x36, 0xd1, 0x12, 0xf7, 0x20, 0xe2, 0x9f, 0xde, 0xe2, 0xe9, 0x55, + 0xe8, 0x13, 0xf8, 0xca, 0xf7, 0x47, 0x15, 0xfb, 0x4b, 0xf7, 0x40, 0x80, + 0xbf, 0xf7, 0x2e, 0xd1, 0xd6, 0xd7, 0xec, 0x3b, 0xb6, 0x27, 0xb6, 0x1e, + 0x46, 0xa8, 0x68, 0x8a, 0xb5, 0x1a, 0xaa, 0xae, 0xc0, 0xcf, 0x1e, 0x13, + 0xf4, 0x9b, 0xf7, 0x3, 0x8f, 0xfb, 0x0, 0x1f, 0xe8, 0x90, 0x5, 0xf7, + 0x1e, 0xfb, 0x19, 0xaa, 0x3a, 0xfb, 0x27, 0x5a, 0x31, 0x4b, 0x34, 0xd0, + 0x6f, 0xe9, 0x63, 0x1e, 0x13, 0xf8, 0xce, 0x6e, 0xba, 0x77, 0x5a, 0x1a, + 0x58, 0x52, 0x6d, 0x48, 0xfb, 0x19, 0x88, 0xf1, 0xa8, 0x1e, 0xf7, 0x2f, + 0xf8, 0x2d, 0x15, 0xf1, 0x6, 0xf7, 0x1e, 0xf7, 0x1f, 0x50, 0xa, 0x36, + 0x31, 0x62, 0xe5, 0x5, 0x38, 0x6, 0xe, 0xfb, 0x53, 0xce, 0xf9, 0xaa, + 0xd2, 0x1, 0xd7, 0x71, 0x15, 0xfb, 0xb, 0xa4, 0xe7, 0x5d, 0xe8, 0x1b, + 0xf7, 0xb, 0xd0, 0xdc, 0xd9, 0xae, 0x7d, 0xae, 0x6a, 0xb1, 0x1f, 0xed, + 0xbb, 0xad, 0xbe, 0xc2, 0x1a, 0xc9, 0x68, 0xba, 0x29, 0xdb, 0x1e, 0x3b, + 0xcd, 0x5a, 0xb4, 0xc2, 0x1a, 0xb9, 0xb3, 0xb2, 0xc5, 0x9d, 0xe0, 0x88, + 0x27, 0x1e, 0xe1, 0x96, 0x5, 0xbd, 0x83, 0x7a, 0xf7, 0x5, 0xfb, 0x34, + 0x1b, 0xfb, 0xd, 0x4e, 0x40, 0x38, 0x66, 0x99, 0x69, 0xa2, 0x70, 0x1f, + 0x53, 0x6f, 0x3c, 0x5f, 0x29, 0x1a, 0x41, 0xbc, 0x63, 0xc8, 0x57, 0x1e, + 0xf7, 0x1f, 0xfb, 0x7, 0xa3, 0x7a, 0x5e, 0x1a, 0x5d, 0x5f, 0x5d, 0x4d, + 0x73, 0x39, 0x90, 0xf7, 0x5, 0x73, 0x1e, 0xf7, 0x78, 0xf7, 0x14, 0x15, + 0x75, 0xa0, 0x5f, 0xae, 0x64, 0xaa, 0x8, 0x55, 0xb7, 0x6e, 0x9d, 0xb3, + 0x1a, 0xcb, 0xcd, 0xbb, 0xa5, 0x9a, 0x1e, 0xac, 0x67, 0xbd, 0x5f, 0xbf, + 0x60, 0x8, 0xb6, 0x66, 0x98, 0x79, 0x6d, 0x1a, 0x73, 0x7c, 0x5d, 0x3b, + 0x65, 0x1e, 0xe, 0x77, 0xfb, 0x12, 0x76, 0xf7, 0x3b, 0x76, 0xf8, 0x39, + 0xeb, 0x1, 0xc3, 0xf7, 0x89, 0x3, 0xe2, 0x8a, 0x15, 0xc5, 0x6, 0x77, + 0x30, 0x5f, 0x7f, 0x7b, 0x87, 0x82, 0x64, 0x18, 0xf6, 0x98, 0xa4, 0xf7, + 0x3, 0x92, 0xae, 0x9d, 0xe2, 0x18, 0x23, 0x6, 0xcd, 0xf7, 0xd5, 0x40, + 0xa, 0xe, 0xa0, 0x76, 0xf9, 0x9, 0xda, 0x1, 0xf7, 0x3a, 0x16, 0xf1, + 0x6, 0xb9, 0xf7, 0x52, 0xf7, 0x1b, 0xf7, 0x94, 0xf7, 0x5d, 0xf7, 0x3b, + 0x9e, 0xda, 0x18, 0xfc, 0x95, 0x6, 0x78, 0x3c, 0x5, 0xf8, 0x24, 0x6, + 0xfb, 0x63, 0xfb, 0x51, 0xfb, 0x1d, 0xfb, 0xa1, 0x70, 0xfb, 0x2f, 0x8, + 0xe, 0x78, 0xd0, 0xf7, 0xec, 0xd0, 0xf7, 0x44, 0xd4, 0x1, 0xe6, 0xe9, + 0xf7, 0xb8, 0xe5, 0x3, 0xf7, 0x6f, 0xf8, 0x29, 0x15, 0xac, 0x93, 0xcb, + 0xf7, 0x54, 0xf7, 0x17, 0x1b, 0xd0, 0xa7, 0x58, 0x50, 0x93, 0x1f, 0xe3, + 0x93, 0x5, 0xe0, 0x83, 0x5a, 0xe5, 0xfb, 0x16, 0x1b, 0xfb, 0x95, 0x3b, + 0xfb, 0xf2, 0xfb, 0x24, 0xfb, 0x4d, 0xf7, 0x11, 0x60, 0xef, 0xf7, 0x30, + 0xf7, 0x0, 0xf7, 0x13, 0xf7, 0x25, 0xf7, 0x19, 0x2c, 0xd8, 0x20, 0x3d, + 0x52, 0x64, 0x78, 0x73, 0x1f, 0x69, 0xfb, 0x58, 0x15, 0xf7, 0xd, 0xe5, + 0xcb, 0xde, 0xd9, 0xc1, 0x4d, 0x3c, 0x28, 0x37, 0x23, 0x33, 0x3e, 0x53, + 0xe4, 0xd1, 0x1e, 0xe, 0x77, 0x8d, 0x76, 0x1, 0x88, 0xf8, 0x6d, 0x3, + 0x76, 0x78, 0x15, 0xd2, 0x6, 0xf8, 0x26, 0xf9, 0x88, 0x5, 0x44, 0x6, + 0xe, 0x77, 0xe, 0x90, 0x76, 0xf7, 0xdc, 0xd3, 0xf7, 0x9c, 0xd1, 0x1, + 0xf7, 0x4c, 0xe6, 0x3, 0xc6, 0x7b, 0x15, 0xaf, 0xae, 0xb5, 0x95, 0xb8, + 0x8a, 0xb6, 0x8a, 0xb8, 0x7f, 0xb6, 0x80, 0x8, 0x81, 0xb3, 0xb0, 0x81, + 0xab, 0x1b, 0x95, 0xb9, 0x8b, 0xaf, 0xd7, 0x1f, 0x6f, 0xd9, 0x5, 0x6d, + 0x57, 0x5d, 0x8b, 0x81, 0x1b, 0x6b, 0x69, 0x96, 0x94, 0x65, 0x1f, 0x65, + 0x94, 0x61, 0x93, 0x5c, 0x84, 0x88, 0x8c, 0x18, 0xc0, 0xb1, 0xc2, 0xc4, + 0x88, 0xf7, 0xa, 0x8, 0xf7, 0x11, 0x6, 0x9a, 0xd3, 0x5, 0xfb, 0x23, + 0x6, 0x81, 0xbe, 0x8a, 0xb0, 0x98, 0x1a, 0xf7, 0x18, 0xea, 0xaa, 0xc0, + 0x9e, 0xeb, 0x88, 0xfb, 0x10, 0x9a, 0x1e, 0xdc, 0x93, 0x5, 0xf7, 0x30, + 0x7a, 0xfb, 0xd, 0xac, 0x43, 0x1b, 0xfb, 0x14, 0xfb, 0x4, 0x28, 0xfb, + 0x1a, 0x5f, 0x8d, 0x7e, 0x92, 0x5f, 0x1f, 0x35, 0x6, 0x7c, 0x43, 0x5, + 0xf7, 0x1, 0x6, 0x9f, 0xfb, 0xa, 0xfb, 0x11, 0x29, 0x5c, 0x70, 0x8, + 0xe, 0x77, 0x84, 0xd2, 0xf7, 0xfd, 0xcb, 0xf7, 0x48, 0x77, 0x1, 0xf7, + 0x3, 0xf7, 0x9d, 0x3, 0xf7, 0xa2, 0x8d, 0x15, 0x9a, 0xcf, 0x5, 0x87, + 0x79, 0x79, 0x89, 0x79, 0x1b, 0x65, 0x8b, 0xb2, 0xbd, 0x96, 0x1f, 0xc7, + 0xf7, 0xa4, 0x5, 0xe4, 0x6, 0x9a, 0xcb, 0x5, 0x32, 0x6, 0xb4, 0xf7, + 0x48, 0x23, 0x51, 0x70, 0xfb, 0xe, 0x5, 0x43, 0x6, 0x7d, 0x4b, 0x5, + 0xd2, 0x6, 0x4b, 0xfb, 0xa4, 0x5, 0x86, 0x72, 0x88, 0x75, 0x77, 0x1a, + 0x51, 0xa8, 0x68, 0xd6, 0x93, 0xa7, 0x8c, 0x93, 0xa7, 0x1e, 0xe, 0xfb, + 0x4e, 0x76, 0xf7, 0x51, 0xd4, 0xf8, 0x26, 0xd4, 0xf7, 0x50, 0x77, 0x1, + 0xb1, 0xe7, 0xf7, 0xfe, 0xe7, 0x3, 0xf7, 0x3c, 0xd9, 0x15, 0x4d, 0xad, + 0xb9, 0x69, 0xd1, 0x1b, 0xf7, 0x1c, 0xf7, 0x16, 0xf7, 0x23, 0xf7, 0x52, + 0xf7, 0x1e, 0x3d, 0xd8, 0x25, 0x57, 0x5d, 0x77, 0x56, 0x52, 0x1f, 0xc5, + 0xf7, 0x99, 0x5, 0x2e, 0x6, 0xfb, 0x5c, 0xfe, 0x31, 0x5, 0xe7, 0x6, + 0xe5, 0xf8, 0x32, 0x15, 0xdf, 0xca, 0xf7, 0x3a, 0xf7, 0xa, 0xd9, 0xb0, + 0x45, 0x43, 0x3e, 0x5b, 0xfb, 0x4b, 0xfb, 0x16, 0x31, 0x6f, 0xd9, 0xd5, + 0x1e, 0xe, 0x78, 0xd0, 0xf7, 0xa3, 0xd4, 0xf7, 0x84, 0xd0, 0x1, 0xf8, + 0x71, 0xeb, 0x3, 0xd6, 0xf7, 0x45, 0x15, 0xfb, 0x20, 0x96, 0xf7, 0x8, + 0x53, 0xf7, 0x3, 0x1b, 0xf7, 0x20, 0xf7, 0xc, 0xe6, 0xf7, 0x15, 0xe5, + 0x48, 0xbf, 0x75, 0x97, 0x1f, 0xe6, 0xb2, 0xae, 0xc3, 0xcf, 0x1a, 0xeb, + 0x38, 0xe4, 0xfb, 0x19, 0x6f, 0xfb, 0x34, 0x87, 0xfb, 0x46, 0x5b, 0x1e, + 0xe8, 0x79, 0x5, 0xe8, 0x9d, 0xce, 0xb1, 0xc5, 0x1b, 0xd0, 0xc0, 0x58, + 0x4a, 0x52, 0x46, 0x48, 0xfb, 0x10, 0x1f, 0x7b, 0x42, 0x5, 0xe8, 0xd8, + 0x61, 0x3d, 0x43, 0x44, 0x3c, 0x27, 0xfb, 0xc, 0x7d, 0xf0, 0xb0, 0x86, + 0x1f, 0xe, 0x65, 0xa, 0xf7, 0x77, 0xc4, 0xf7, 0x92, 0xbe, 0x12, 0xf7, + 0xe7, 0xd3, 0x55, 0xd1, 0x13, 0x7c, 0xf8, 0x79, 0xc7, 0x15, 0xf7, 0x45, + 0x6, 0x7d, 0x44, 0x5, 0xcb, 0x6, 0x9a, 0xd2, 0x5, 0xb8, 0x6, 0x97, + 0xc1, 0x5, 0x5e, 0x6, 0xb8, 0xf7, 0x77, 0x5, 0x55, 0x6, 0xfb, 0x7e, + 0xfb, 0x74, 0x5, 0xd6, 0x88, 0x15, 0xf7, 0x14, 0xf7, 0x11, 0x8d, 0x89, + 0x6e, 0xfb, 0xf, 0x5, 0xfc, 0xb2, 0xf7, 0xdc, 0x15, 0x50, 0x9b, 0xbe, + 0x61, 0xd6, 0x1b, 0xde, 0xc3, 0xbd, 0xc4, 0xc1, 0x66, 0x9a, 0x74, 0x95, + 0x1f, 0x8d, 0x7, 0x13, 0x7a, 0xb7, 0x94, 0xab, 0xa1, 0xbb, 0x1a, 0xc7, + 0x51, 0xae, 0x47, 0x48, 0x57, 0x6c, 0x50, 0x7b, 0x1e, 0xce, 0x82, 0x5, + 0x9e, 0x92, 0x97, 0xa8, 0xbc, 0x1b, 0xa8, 0xa6, 0x7d, 0x6d, 0x5d, 0x5c, + 0x85, 0x60, 0x8a, 0x1f, 0x81, 0x58, 0x5, 0x13, 0xbc, 0xae, 0xba, 0x82, + 0x5c, 0x79, 0x80, 0x6b, 0x51, 0x55, 0x7c, 0xb0, 0x9a, 0x85, 0x1f, 0x5d, + 0xfc, 0x69, 0x15, 0xd4, 0x6, 0xf9, 0x13, 0xf9, 0x66, 0x5, 0x3c, 0x6, + 0xe, 0xae, 0xf7, 0xa2, 0xcf, 0xf7, 0xc4, 0xc8, 0x12, 0xf7, 0xe2, 0xdf, + 0x4b, 0xdd, 0x13, 0xe0, 0xe5, 0xf8, 0x1b, 0x15, 0x45, 0x9d, 0xc5, 0x58, + 0xe2, 0x1b, 0xec, 0xcf, 0xc7, 0xcf, 0xcb, 0x5f, 0x9d, 0x70, 0x98, 0x1f, + 0x8d, 0x7, 0x13, 0xd0, 0xbe, 0x97, 0xb1, 0xa7, 0xc5, 0x1a, 0xd3, 0x48, + 0xb1, 0x3b, 0x3d, 0x4f, 0x66, 0x44, 0x77, 0x1e, 0xda, 0x81, 0x5, 0xa2, + 0x93, 0x98, 0xad, 0xc5, 0x1b, 0xad, 0xaa, 0x7a, 0x67, 0x55, 0x55, 0x83, + 0x59, 0x8a, 0x1f, 0x7f, 0x4d, 0x5, 0x13, 0xe0, 0xb3, 0xc3, 0x8b, 0x53, + 0x75, 0x7e, 0x5b, 0x47, 0x4c, 0x7a, 0xb8, 0x9c, 0x84, 0x1f, 0xe, 0xae, + 0xf8, 0xf3, 0xf7, 0x4, 0x2f, 0x76, 0xb7, 0xd0, 0x8e, 0x77, 0x12, 0xf7, + 0x11, 0xce, 0xf7, 0x7d, 0xcc, 0x13, 0x8c, 0xf7, 0x11, 0xf8, 0xf3, 0x15, + 0xce, 0x6, 0x13, 0x6c, 0xa4, 0x91, 0x97, 0x9d, 0xa6, 0x1b, 0xae, 0xa6, + 0x7e, 0x7f, 0xa3, 0x1f, 0x81, 0x9f, 0x9e, 0x82, 0xa1, 0x1b, 0xcb, 0xaf, + 0xc4, 0xc3, 0x91, 0x1f, 0x4a, 0x6, 0x7c, 0x86, 0x85, 0x72, 0x6f, 0x1b, + 0x7a, 0x78, 0x91, 0x92, 0x78, 0x1f, 0x13, 0x5c, 0x98, 0x6a, 0x69, 0x9c, + 0x6d, 0x1b, 0x13, 0x8c, 0x41, 0x79, 0x55, 0x4e, 0x7a, 0x1f, 0xe, 0xf9, + 0x52, 0xf7, 0xdb, 0x76, 0xf7, 0xf3, 0xc8, 0x1, 0xf9, 0x33, 0xc8, 0x3, + 0xf7, 0x5c, 0xf7, 0xc6, 0x15, 0xd2, 0x6, 0xf7, 0x13, 0xf7, 0xf3, 0x5, + 0xf7, 0x21, 0x6, 0xa0, 0xc8, 0x5, 0xfb, 0xf4, 0x6, 0x75, 0x4e, 0x5, + 0xf7, 0x21, 0x6, 0xf7, 0x31, 0xfb, 0xf3, 0x15, 0xcd, 0x6, 0xf7, 0x12, + 0xf7, 0xf3, 0x48, 0xa, 0x7e, 0xfb, 0xf3, 0x5, 0xcd, 0x6, 0xf7, 0x7d, + 0xf7, 0xed, 0x48, 0xa, 0xfb, 0x10, 0xfb, 0xed, 0x5, 0xcd, 0x6, 0xf7, + 0x28, 0xf8, 0x30, 0x5, 0x23, 0x6, 0xfb, 0x73, 0xfb, 0xdd, 0x4e, 0xa, + 0x96, 0xf7, 0xdd, 0x5, 0x21, 0x6, 0xe, 0x8b, 0xda, 0xf8, 0xbd, 0xd7, + 0x1, 0xf8, 0x63, 0xe9, 0x3, 0xa2, 0x16, 0xf8, 0x58, 0x6, 0x9d, 0xda, + 0x5, 0xfb, 0xe8, 0x6, 0xe1, 0xf7, 0xa, 0xf7, 0x11, 0xc2, 0xcf, 0xc7, + 0x8, 0xa9, 0xa3, 0xea, 0xe1, 0xe8, 0x1a, 0xee, 0x3d, 0xe4, 0xfb, 0x26, + 0xfb, 0x31, 0x49, 0x23, 0x29, 0x7b, 0x1e, 0xe6, 0x80, 0x5, 0xce, 0x98, + 0xb6, 0xd1, 0xe7, 0x1b, 0xd3, 0xc5, 0x5e, 0x48, 0x38, 0x37, 0x53, 0x36, + 0x4b, 0x1f, 0xfb, 0x4a, 0xfb, 0x1b, 0x4d, 0x5f, 0x70, 0xfb, 0x19, 0x8, + 0xe, 0xae, 0xf7, 0xad, 0xcf, 0xf7, 0x76, 0xf7, 0x14, 0x47, 0xcf, 0x1, + 0xf7, 0xfe, 0xe2, 0x3, 0xcb, 0xf7, 0xad, 0x15, 0xf7, 0xe8, 0x6, 0x99, + 0xcf, 0x5, 0xfb, 0x6d, 0x6, 0xa2, 0xa6, 0xa4, 0x9a, 0xda, 0xb9, 0x8, + 0xce, 0xb2, 0xc1, 0xb1, 0xd0, 0x1a, 0xc2, 0x63, 0xcc, 0xfb, 0xc, 0x2a, + 0x4e, 0x63, 0x37, 0x73, 0x1e, 0xe2, 0x83, 0x5, 0xbb, 0x9c, 0xa7, 0x9b, + 0xbd, 0x1b, 0xbd, 0xa2, 0x71, 0x71, 0x64, 0x6d, 0x78, 0x4e, 0x6a, 0x1f, + 0xfb, 0x2c, 0x36, 0x67, 0x4b, 0x78, 0x4d, 0x8, 0xe, 0x7c, 0xd5, 0x62, + 0x76, 0xf8, 0xa2, 0x77, 0x12, 0x13, 0x60, 0xf8, 0x2e, 0x88, 0x15, 0xdd, + 0x6, 0xf7, 0x0, 0xf8, 0xa2, 0x5, 0x33, 0x6, 0x5c, 0xfb, 0x75, 0x7d, + 0x44, 0x7d, 0x4c, 0x55, 0x57, 0x19, 0x13, 0xa0, 0x62, 0x60, 0x62, 0x7f, + 0x69, 0x1b, 0x4e, 0x5d, 0x97, 0xf7, 0xa, 0xa9, 0x1f, 0xcc, 0xf7, 0xe2, + 0x5, 0x38, 0x6, 0x49, 0xfb, 0xe2, 0x5, 0x85, 0x6b, 0x87, 0x6b, 0x70, + 0x1a, 0x4c, 0xb5, 0x59, 0xf2, 0xd9, 0xca, 0xbd, 0xc3, 0xbd, 0x1e, 0xe, + 0x39, 0xa, 0xf7, 0x78, 0x77, 0x27, 0xa, 0x31, 0xf8, 0x8f, 0x36, 0xa, + 0xe, 0x39, 0xa, 0xe8, 0xf7, 0x1b, 0x27, 0xa, 0xfb, 0x40, 0xf8, 0x8f, + 0x30, 0xa, 0xe, 0x39, 0xa, 0xef, 0xef, 0x27, 0xa, 0x8d, 0xf8, 0x96, + 0x2e, 0xa, 0xe, 0x39, 0xa, 0xe4, 0xf7, 0x1f, 0x27, 0xa, 0x65, 0xf8, + 0x8b, 0x15, 0xd3, 0x6, 0x50, 0x6f, 0xa, 0xfb, 0x3, 0x6, 0xe, 0xfb, + 0x11, 0xbd, 0x1, 0x70, 0x40, 0x15, 0x59, 0xf8, 0xcb, 0xbd, 0x7, 0xe, + 0xf7, 0x5e, 0x43, 0xa, 0xf7, 0x61, 0x16, 0xee, 0x6, 0xf7, 0xbf, 0xf8, + 0x9f, 0x4d, 0xa, 0xfb, 0x83, 0xfc, 0x4e, 0x4e, 0xa, 0x4e, 0xf8, 0x4e, + 0x5, 0x34, 0x6, 0xe, 0xf8, 0x3c, 0x43, 0xa, 0xf8, 0x65, 0xcd, 0x3, + 0xf7, 0x47, 0x16, 0xe7, 0x6, 0xf7, 0x4a, 0xf8, 0x36, 0xa3, 0xfc, 0x36, + 0x5, 0xe6, 0x6, 0xf7, 0x90, 0xf8, 0x9f, 0x5, 0x34, 0x6, 0xfb, 0x51, + 0xfc, 0x38, 0x4e, 0xa, 0x76, 0xf8, 0x38, 0x50, 0xa, 0xfb, 0x48, 0xfc, + 0x3d, 0x4e, 0xa, 0x6a, 0xf8, 0x3d, 0x5, 0x36, 0x6, 0xe, 0xf7, 0x5e, + 0x43, 0xa, 0x96, 0x16, 0xf7, 0xc, 0x6, 0xf7, 0x3a, 0xf7, 0x54, 0xec, + 0xfb, 0x54, 0x5, 0xf4, 0x6, 0xfb, 0x20, 0xf7, 0x98, 0xf7, 0x7f, 0xf7, + 0x9b, 0x5, 0xfb, 0x9, 0x6, 0xfb, 0x36, 0xfb, 0x52, 0x2c, 0xf7, 0x52, + 0x5, 0x22, 0x6, 0xf7, 0x20, 0xfb, 0x93, 0x5, 0xe, 0xf7, 0x5e, 0xfb, + 0x55, 0x76, 0xf9, 0x75, 0x77, 0x1, 0x9f, 0xfb, 0xe, 0x15, 0x86, 0x36, + 0x5, 0x86, 0x9f, 0x9d, 0x89, 0x9c, 0x1b, 0xe8, 0xc0, 0xd1, 0xd3, 0xb3, + 0x1f, 0xf7, 0xec, 0xf8, 0xe7, 0x50, 0xa, 0xfb, 0x86, 0xfc, 0x3a, 0x4e, + 0xf8, 0x3a, 0x3f, 0xa, 0xe4, 0xfc, 0xa3, 0x41, 0xfb, 0x15, 0x74, 0x7e, + 0x38, 0xa3, 0x19, 0xe, 0xf7, 0x5e, 0xfb, 0x55, 0x76, 0xf9, 0x7d, 0x77, + 0xf7, 0x73, 0x77, 0x1, 0xf8, 0x74, 0xeb, 0x3, 0x9f, 0xfb, 0xb, 0x15, + 0x86, 0x36, 0x59, 0xa, 0xd8, 0xce, 0xb2, 0x1f, 0xf7, 0xec, 0xf8, 0xed, + 0x50, 0xa, 0xfb, 0x85, 0xfc, 0x3f, 0x4e, 0xa, 0x4f, 0xf8, 0x3f, 0x45, + 0xa, 0xe5, 0xfc, 0xa8, 0x5, 0xfb, 0x15, 0x53, 0x59, 0x8e, 0x78, 0x1b, + 0x71, 0x7b, 0x8f, 0x8f, 0x7e, 0x1f, 0xf7, 0x97, 0xf9, 0x5f, 0x15, 0xd7, + 0x6, 0xf7, 0x1c, 0xf7, 0x1e, 0x5, 0xfb, 0x9, 0x6, 0xe, 0xf7, 0x5e, + 0xfb, 0x6a, 0xe1, 0xf9, 0x71, 0xf0, 0x1, 0x9f, 0xfb, 0xc, 0x15, 0x86, + 0x37, 0x59, 0xa, 0xd7, 0xce, 0xb2, 0x1f, 0xf7, 0xec, 0xf8, 0xe6, 0x50, + 0xa, 0xfb, 0x85, 0xfc, 0x3a, 0x4e, 0xa, 0x4f, 0xf8, 0x3a, 0x45, 0xa, + 0xe5, 0xfc, 0xa2, 0x5, 0xfb, 0x16, 0x3f, 0x7f, 0x90, 0x66, 0x1b, 0x71, + 0x7b, 0x8f, 0x8f, 0x7e, 0x1f, 0xf8, 0x1b, 0xf9, 0x69, 0x15, 0xeb, 0x6, + 0xa1, 0xf0, 0x50, 0xa, 0xfb, 0x65, 0x26, 0x15, 0xea, 0x6, 0xa1, 0xf0, + 0x50, 0xa, 0xe, 0xa0, 0x76, 0xf7, 0xbf, 0xcb, 0xf7, 0xd9, 0x77, 0x1, + 0xdc, 0xf7, 0x2e, 0x15, 0xf7, 0x58, 0x6, 0x6b, 0xfb, 0x2e, 0x5, 0xe1, + 0x6, 0xac, 0xf7, 0x2e, 0x5, 0xf7, 0x56, 0x6, 0x99, 0xcc, 0x5, 0xfb, + 0x56, 0x6, 0x9b, 0xdb, 0x5, 0xf7, 0x54, 0x6, 0x99, 0xcb, 0x5, 0xfb, + 0x2c, 0x6, 0xf7, 0x8f, 0xf7, 0xd9, 0x5, 0xfb, 0x0, 0x6, 0xfb, 0x77, + 0xfb, 0xd9, 0x4e, 0xa, 0xfb, 0x9, 0xf7, 0xd9, 0x5, 0x33, 0x6, 0xf7, + 0x13, 0xfb, 0xd9, 0x5, 0xfb, 0x35, 0x6, 0x7e, 0x4b, 0x5, 0xf7, 0x59, + 0x6, 0x7b, 0x3b, 0x5, 0xfb, 0x58, 0x6, 0xe, 0xf7, 0x5e, 0x8b, 0xda, + 0xf8, 0x6, 0xd5, 0x1, 0xaa, 0xf8, 0xb0, 0x3, 0xaa, 0x16, 0xf8, 0x5e, + 0x6, 0x9c, 0xda, 0x5, 0xfb, 0xe3, 0x6, 0xf8, 0x18, 0xf8, 0x18, 0x5a, + 0xa, 0xf7, 0xca, 0x6, 0xfc, 0xe, 0xfc, 0x10, 0x5, 0xe, 0xf7, 0x5e, + 0x8b, 0xdb, 0xf8, 0x98, 0xf7, 0x1e, 0x1, 0xaa, 0x16, 0xf8, 0x5e, 0x6, + 0x9c, 0xdb, 0x5, 0xfb, 0xe3, 0x6, 0xf8, 0x18, 0xf8, 0x1c, 0x5a, 0xa, + 0xf7, 0xc8, 0x6, 0x8d, 0x89, 0xfc, 0xe, 0xfc, 0x12, 0x5, 0xf7, 0x9b, + 0xf8, 0xa2, 0x15, 0xf5, 0x6, 0xf7, 0x23, 0xf7, 0x1e, 0x47, 0xa, 0x33, + 0x32, 0x60, 0xe4, 0x5, 0x36, 0x6, 0xe, 0x78, 0xd0, 0xf8, 0xdc, 0xd0, + 0x1, 0xf7, 0x2, 0xe3, 0xf7, 0xd0, 0xe3, 0x3, 0xe8, 0xf7, 0x63, 0x15, + 0xfb, 0x44, 0xf0, 0x59, 0xec, 0xf7, 0x73, 0xe9, 0xf7, 0xbc, 0xf7, 0x50, + 0xf7, 0x4f, 0xfb, 0xd, 0xbe, 0x3b, 0xfb, 0x6c, 0x29, 0xfb, 0xd7, 0xfb, + 0x41, 0x1e, 0xe3, 0x16, 0xa2, 0xac, 0xf8, 0x28, 0xf7, 0x56, 0xf7, 0x3, + 0x8c, 0xfb, 0x1d, 0x6b, 0x38, 0x5a, 0xfb, 0xe0, 0xfb, 0x43, 0x49, 0x5a, + 0xbd, 0xf6, 0x1e, 0xe, 0x78, 0x9e, 0xf8, 0x9f, 0x9a, 0xf7, 0x48, 0x9e, + 0x6, 0xfb, 0x70, 0x98, 0xf8, 0xc0, 0x94, 0x7, 0x78, 0x9e, 0xf8, 0x9f, + 0x9a, 0xf7, 0x48, 0x9e, 0x8, 0xfb, 0x70, 0x98, 0x9, 0x1e, 0xa0, 0x39, + 0x63, 0xff, 0xc, 0x9, 0xdc, 0xa, 0xe5, 0xb, 0xd5, 0x92, 0xc, 0xc, + 0xe5, 0x95, 0xc, 0xd, 0xf8, 0xc0, 0x14, 0xf7, 0xbe, 0x15, 0xc3, 0x13, + 0x0, 0x50, 0x2, 0x0, 0x1, 0x0, 0x4e, 0x0, 0x92, 0x0, 0x99, 0x0, + 0xc9, 0x1, 0x1, 0x1, 0x49, 0x1, 0x72, 0x1, 0xb1, 0x1, 0xb6, 0x1, + 0xbb, 0x1, 0xde, 0x1, 0xe1, 0x2, 0x13, 0x2, 0x1a, 0x2, 0x22, 0x2, + 0x2a, 0x2, 0x3a, 0x2, 0x40, 0x2, 0x4b, 0x2, 0x58, 0x2, 0x61, 0x2, + 0x66, 0x2, 0x72, 0x2, 0x7b, 0x2, 0x84, 0x2, 0x8c, 0x2, 0x96, 0x2, + 0xa0, 0x2, 0xa8, 0x2, 0xac, 0x2, 0xaf, 0x2, 0xb3, 0x2, 0xbc, 0x2, + 0xc5, 0x2, 0xcc, 0x2, 0xd3, 0x2, 0xd9, 0x2, 0xdd, 0x2, 0xeb, 0x2, + 0xef, 0x2, 0xf3, 0x2, 0xfb, 0x3, 0x3, 0x3, 0xa, 0x3, 0xf, 0x3, + 0x13, 0x3, 0x17, 0x3, 0x22, 0x3, 0x26, 0x3, 0x2d, 0x3, 0x33, 0x3, + 0x3a, 0x3, 0x40, 0x3, 0x45, 0x3, 0x4a, 0x3, 0x4e, 0x3, 0x58, 0x3, + 0x62, 0x3, 0x6c, 0x3, 0x76, 0x3, 0x7a, 0x3, 0x83, 0x3, 0x8c, 0x3, + 0x95, 0x3, 0x9e, 0x3, 0xa7, 0x3, 0xb0, 0x3, 0xb8, 0x3, 0xc1, 0x3, + 0xca, 0x3, 0xd0, 0x3, 0xd4, 0x3, 0xda, 0x3, 0xe0, 0x3, 0xe5, 0x3, + 0xea, 0x3, 0xef, 0x3, 0xf3, 0x3, 0xf7, 0x3, 0xfb, 0x6e, 0xa, 0x85, + 0xa7, 0x87, 0x9f, 0xa4, 0x1a, 0xae, 0x91, 0xae, 0x92, 0xad, 0x1e, 0xa9, + 0xf7, 0x18, 0x5, 0x97, 0xc4, 0x8f, 0xa5, 0x91, 0x1a, 0xe3, 0x2d, 0xc8, + 0xfb, 0x2, 0x30, 0xfb, 0x11, 0x5f, 0xfb, 0xc, 0x73, 0x1e, 0xe1, 0x83, + 0x5, 0xd8, 0xa6, 0xcc, 0xa0, 0xc5, 0x1b, 0xa4, 0xe5, 0x87, 0x44, 0x80, + 0x87, 0x6f, 0x83, 0x74, 0x1f, 0x67, 0x7c, 0x65, 0x89, 0x3d, 0x88, 0x8, + 0x4e, 0x89, 0xfb, 0x48, 0x83, 0xfb, 0x37, 0x1a, 0x28, 0xd6, 0x53, 0xe4, + 0x1e, 0xb, 0x15, 0xfb, 0x41, 0xf7, 0xb, 0xfb, 0x27, 0xf7, 0x5b, 0xf7, + 0x76, 0xf7, 0x45, 0xf7, 0x54, 0xf7, 0x82, 0xf7, 0x54, 0xfb, 0xb, 0xf7, + 0x1c, 0xfb, 0x5c, 0xfb, 0x6a, 0xfb, 0x50, 0xfb, 0x38, 0xfb, 0xa6, 0x1e, + 0xef, 0x86, 0x15, 0xf7, 0x8b, 0xf7, 0x39, 0xf7, 0x7, 0xf7, 0x1d, 0xf7, + 0x4, 0xf6, 0x32, 0xfb, 0x32, 0xfb, 0x47, 0xfb, 0xd, 0xfb, 0x3e, 0xfb, + 0x42, 0xfb, 0x4, 0xfb, 0x6, 0xdd, 0xf7, 0x2c, 0x1e, 0xb, 0x20, 0xa, + 0x13, 0xbc, 0x23, 0xa, 0xb, 0xe7, 0xc9, 0xc1, 0xa4, 0xa7, 0x1f, 0x8c, + 0x80, 0x8d, 0x6d, 0x94, 0x71, 0x8, 0xa1, 0xf7, 0xa4, 0x15, 0x82, 0x55, + 0x81, 0x5f, 0x71, 0x66, 0x8, 0x59, 0x69, 0x54, 0x6e, 0x54, 0x1b, 0x3e, + 0x73, 0xbd, 0xb2, 0xe1, 0xe7, 0x96, 0xc6, 0x90, 0x1f, 0xdd, 0x92, 0xa2, + 0x8d, 0xad, 0x99, 0x8, 0xb, 0x15, 0xfb, 0x22, 0xf1, 0x3b, 0xf7, 0x7, + 0xf7, 0x30, 0xf7, 0x15, 0xf7, 0x1a, 0xf7, 0x57, 0xf7, 0x1d, 0x34, 0xde, + 0xfb, 0x13, 0xfb, 0x4c, 0x23, 0xfb, 0x28, 0xfb, 0x47, 0x1e, 0xe5, 0x16, + 0xf7, 0x3, 0xcb, 0xf7, 0x27, 0xf7, 0x17, 0xe2, 0xb3, 0x43, 0x3c, 0xfb, + 0x4, 0x43, 0xfb, 0x28, 0xfb, 0xe, 0x6d, 0x29, 0x98, 0xf7, 0x20, 0x1e, + 0xb, 0x15, 0xf8, 0x1e, 0x6, 0x8e, 0x9f, 0x8f, 0xa0, 0xb3, 0x1a, 0xe7, + 0x5d, 0xf7, 0x15, 0xfb, 0x38, 0xfb, 0x5a, 0x35, 0xfb, 0x58, 0xfb, 0x1c, + 0xfb, 0x29, 0xe9, 0x3e, 0xf7, 0x7, 0xf7, 0x20, 0xe5, 0xf7, 0x2, 0xd5, + 0xa1, 0x1e, 0x32, 0x94, 0x5, 0x29, 0x61, 0x3a, 0x76, 0x63, 0x1b, 0x4c, + 0x54, 0xbe, 0xf2, 0x96, 0x8c, 0x92, 0x8c, 0x95, 0x1f, 0x99, 0xd1, 0x15, + 0xcf, 0xa0, 0xbf, 0xe9, 0xf5, 0x1b, 0xd2, 0xcd, 0x4b, 0x29, 0x7b, 0x1f, + 0xb, 0x15, 0xf4, 0x6, 0xf7, 0x8, 0xf7, 0x69, 0x5, 0xf7, 0xb6, 0x6, + 0xaf, 0xfb, 0x69, 0x5, 0xe8, 0x6, 0xfb, 0xb, 0xf9, 0x76, 0x5, 0xfb, + 0x5, 0x6, 0xfb, 0x26, 0xfc, 0x54, 0x15, 0xf7, 0x51, 0xf8, 0x4, 0x48, + 0xa, 0xb9, 0xfc, 0x4, 0x5, 0xe, 0x12, 0x13, 0x70, 0xf8, 0x27, 0x88, + 0x15, 0xe0, 0x6, 0xf7, 0x4, 0xf8, 0xa5, 0x45, 0xa, 0x5a, 0xfb, 0x76, + 0x5, 0x21, 0x75, 0x50, 0xfb, 0x1b, 0xfb, 0x12, 0x1b, 0x4b, 0x7a, 0xc5, + 0xd4, 0x9a, 0x1f, 0xd4, 0xf7, 0xe4, 0x45, 0xa, 0x46, 0xfb, 0xe2, 0x5, + 0x87, 0x74, 0x89, 0x76, 0x76, 0x1a, 0x13, 0xb0, 0x3a, 0xae, 0x4e, 0xec, + 0xdc, 0xcc, 0xbd, 0xc4, 0xbf, 0x1e, 0x13, 0x70, 0xb, 0xfd, 0x8, 0x21, + 0xa, 0xe, 0xfc, 0xa2, 0x24, 0xa, 0xe, 0x1, 0xe1, 0x16, 0xf8, 0xbe, + 0x6a, 0xa, 0xfc, 0x5c, 0x6, 0xbf, 0xf7, 0x94, 0x5, 0xf8, 0x29, 0x6, + 0x9d, 0xde, 0x5, 0xfc, 0x29, 0x6, 0xb9, 0xf7, 0x7b, 0x5, 0xf8, 0x40, + 0x6a, 0xa, 0xfc, 0xa0, 0x6, 0xb, 0x23, 0xa, 0xe, 0x15, 0x8b, 0x22, + 0xfc, 0x86, 0x64, 0x1a, 0xfb, 0x25, 0xf7, 0xb, 0x43, 0xf7, 0x27, 0xf7, + 0x91, 0xbb, 0xf7, 0x80, 0xe0, 0x9c, 0x1e, 0xe5, 0xf8, 0x45, 0x57, 0xa, + 0x33, 0xfc, 0x45, 0x5, 0xfb, 0xb, 0x74, 0x49, 0xfb, 0xa, 0xfb, 0x1e, + 0x1b, 0x39, 0x39, 0xb8, 0xe3, 0x1f, 0xf4, 0xf8, 0xad, 0x5, 0xe, 0xa0, + 0x76, 0xf9, 0x62, 0x77, 0x1, 0xb, 0x2f, 0xa, 0xfb, 0x5d, 0x27, 0x2f, + 0xa, 0xb, 0x15, 0xe7, 0x6, 0xa0, 0xef, 0x3d, 0xa, 0xb, 0x6e, 0xa, + 0xdb, 0xe2, 0xb2, 0x34, 0x5, 0xd9, 0x6, 0x4e, 0xf7, 0x1b, 0x5, 0x2a, + 0x6, 0xb, 0x35, 0xa, 0xf7, 0x69, 0xd8, 0xb, 0xf8, 0x5, 0x8b, 0xdf, + 0xf7, 0x94, 0xde, 0xf7, 0x7b, 0xdf, 0xb, 0x3b, 0xa, 0xe9, 0xb7, 0x96, + 0x41, 0xa, 0xfb, 0x5, 0x84, 0x66, 0x8, 0xb, 0xe9, 0x6, 0xf7, 0x25, + 0xf9, 0x73, 0x3d, 0xa, 0xb, 0xf8, 0x5, 0xa0, 0x76, 0xb, 0x15, 0xd4, + 0x6, 0xf7, 0x16, 0xf7, 0x1b, 0x5, 0xfb, 0x4, 0x6, 0xb, 0xc5, 0x6, + 0x77, 0x2d, 0x5f, 0x80, 0x7a, 0x87, 0xb, 0xdf, 0x6, 0xf4, 0xf8, 0xa3, + 0x5, 0x36, 0x6, 0xb, 0x7c, 0xd5, 0x4d, 0xc9, 0xf8, 0x67, 0x77, 0xb, + 0xa0, 0x76, 0xf8, 0x56, 0xcf, 0xf7, 0x17, 0xda, 0x1, 0xb, 0x15, 0xf4, + 0x6, 0xa1, 0xf4, 0x5, 0x52, 0x6, 0x9e, 0xb, 0x4c, 0xa, 0x92, 0xb0, + 0x9e, 0xe6, 0x18, 0xb, 0x5, 0x2f, 0x6, 0xb, 0x3f, 0xa, 0xe, 0x5, + 0x31, 0x6, 0xb, 0x15, 0xf3, 0x6, 0xa1, 0xeb, 0x5, 0x23, 0x6, 0xb, + 0x9c, 0x8f, 0x93, 0xb4, 0x18, 0x20, 0x7d, 0x72, 0xb, 0x77, 0x1, 0xf7, + 0xf, 0xec, 0x3, 0xb, 0xa0, 0x76, 0xf8, 0x9f, 0x77, 0x1, 0xb, 0x76, + 0xf7, 0x93, 0x77, 0x1, 0xb, 0x5, 0x30, 0x6, 0xb, 0x6, 0xeb, 0xf8, + 0x56, 0x5, 0xf0, 0x6, 0x99, 0xcf, 0x5, 0x26, 0x6, 0xf0, 0xb, 0x5, + 0x27, 0x6, 0xb, 0x5, 0x8d, 0x6, 0xb, 0xf7, 0x2c, 0x76, 0xf8, 0x2d, + 0x77, 0x1, 0xb, 0x7c, 0xd1, 0x66, 0x76, 0xf7, 0x8d, 0xce, 0xb, 0xef, + 0x6, 0xa0, 0xf5, 0x47, 0xa, 0xb, 0x99, 0xa4, 0xf7, 0x5, 0xb, 0x5, + 0x2c, 0x6, 0xb, 0x5, 0x89, 0x6, 0xb, 0x15, 0xdc, 0x6, 0xf7, 0x24, + 0x6d, 0xa, 0xfb, 0x10, 0x6, 0xb, 0x5, 0x2b, 0x6, 0xb, 0x5, 0xfb, + 0x3, 0x6, 0xfb, 0x97, 0xb, 0x5c, 0xa, 0xf8, 0xa3, 0x77, 0xb, 0xae, + 0xf8, 0xe5, 0xf7, 0x21, 0x1, 0xb, 0x5c, 0xa, 0xf9, 0x73, 0x77, 0xb, + 0x6, 0x9c, 0xdc, 0x5, 0xb, 0x15, 0xd1, 0x6, 0x51, 0xb, 0x5, 0x29, + 0x6, 0xb, 0xf7, 0x60, 0x5, 0x3f, 0x6, 0x5e, 0xfb, 0x60, 0x5, 0xb, + 0x5, 0x82, 0xa5, 0xa1, 0x8a, 0x9a, 0x1b, 0xe9, 0xb8, 0xb, 0x97, 0xc3, + 0x5, 0xfc, 0x4c, 0x6, 0x7a, 0x41, 0x5, 0xb, 0x15, 0x74, 0x8b, 0x21, + 0xf7, 0x10, 0xf7, 0x2d, 0xa3, 0xb, 0x77, 0xa0, 0x76, 0xb, 0x15, 0xe1, + 0x6, 0x76, 0x25, 0x5, 0x35, 0x6, 0xb, 0x72, 0x1b, 0x7c, 0x78, 0x95, + 0x95, 0x74, 0x1f, 0xb, 0x77, 0xfb, 0x58, 0xcf, 0xf9, 0xa2, 0xcf, 0x1, + 0xb, 0xa0, 0x76, 0xf8, 0x65, 0xc8, 0x4e, 0xd4, 0x12, 0xb, 0xae, 0xfb, + 0x4e, 0x76, 0xfa, 0x40, 0x77, 0x1, 0xb, 0xc4, 0x6, 0x77, 0x2d, 0x60, + 0x80, 0x7a, 0x87, 0xb, 0x15, 0xea, 0x6, 0xa1, 0xf0, 0x4d, 0xa, 0xb, + 0xf7, 0x84, 0xd4, 0x1, 0xbe, 0xf7, 0x84, 0x15, 0xb, 0xf8, 0xac, 0x8d, + 0x76, 0xa8, 0x76, 0xd2, 0xc1, 0xb, 0x6, 0xa3, 0x90, 0x96, 0x9c, 0xb, + 0xf6, 0x4c, 0xa, 0xb, 0xf4, 0xef, 0xf8, 0x9d, 0xef, 0xb, 0x6, 0x7d, + 0x87, 0x85, 0x72, 0xb, 0x6, 0x9c, 0xdf, 0x5, 0xb, 0x6, 0x9d, 0xdc, + 0x5, 0xb, 0xf8, 0x74, 0x78, 0xdc, 0xb, 0xf7, 0x21, 0x5, 0xb, 0x15, + 0xe6, 0x6, 0xb, 0xf7, 0x1f, 0x5, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp b/core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp new file mode 100644 index 0000000000..7f540aef1f --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp @@ -0,0 +1,5587 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSansMMFontData[66919] = { + 0x80, 0x01, 0xD2, 0x29, 0x00, 0x00, 0x25, 0x21, 0x50, 0x53, 0x2D, 0x41, + 0x64, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x6E, 0x74, 0x2D, 0x31, 0x2E, 0x30, + 0x3A, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x53, 0x61, 0x6E, 0x73, + 0x4D, 0x4D, 0x20, 0x30, 0x30, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x0D, 0x25, + 0x25, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x44, 0x61, 0x74, + 0x65, 0x3A, 0x20, 0x46, 0x72, 0x69, 0x20, 0x53, 0x65, 0x70, 0x20, 0x32, + 0x39, 0x20, 0x31, 0x36, 0x3A, 0x30, 0x32, 0x3A, 0x35, 0x33, 0x20, 0x32, + 0x30, 0x30, 0x36, 0x0D, 0x25, 0x25, 0x56, 0x4D, 0x75, 0x73, 0x61, 0x67, + 0x65, 0x3A, 0x20, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, + 0x30, 0x30, 0x30, 0x30, 0x0D, 0x31, 0x37, 0x20, 0x64, 0x69, 0x63, 0x74, + 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, + 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x31, 0x34, 0x20, 0x64, 0x69, 0x63, 0x74, + 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x2F, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x30, 0x30, 0x31, + 0x2E, 0x30, 0x30, 0x30, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, + 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x4E, 0x6F, 0x74, 0x69, + 0x63, 0x65, 0x20, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, + 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x75, 0x6C, 0x6C, + 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x28, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, + 0x20, 0x53, 0x61, 0x6E, 0x73, 0x20, 0x4D, 0x4D, 0x29, 0x20, 0x72, 0x65, + 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, + 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x28, + 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x73, 0x20, + 0x4D, 0x4D, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, + 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x49, 0x74, 0x61, 0x6C, 0x69, 0x63, + 0x41, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x2F, 0x69, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x69, 0x74, 0x63, + 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x65, 0x50, 0x6F, + 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x2D, 0x31, 0x30, 0x30, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, + 0x6E, 0x65, 0x54, 0x68, 0x69, 0x63, 0x6B, 0x6E, 0x65, 0x73, 0x73, 0x20, + 0x35, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x20, 0x28, 0x41, 0x6C, 0x6C, 0x29, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, + 0x6C, 0x65, 0x6E, 0x64, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x50, 0x6F, + 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x5B, 0x5B, 0x30, 0x20, + 0x30, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x30, 0x20, + 0x31, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x31, 0x20, 0x5D, 0x5D, 0x20, 0x64, + 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x44, 0x65, 0x73, + 0x69, 0x67, 0x6E, 0x4D, 0x61, 0x70, 0x20, 0x5B, 0x5B, 0x5B, 0x35, 0x30, + 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x31, 0x34, 0x35, 0x30, 0x20, 0x31, 0x20, + 0x5D, 0x5D, 0x5B, 0x5B, 0x35, 0x30, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x31, + 0x34, 0x35, 0x30, 0x20, 0x31, 0x20, 0x5D, 0x5D, 0x5D, 0x20, 0x64, 0x65, + 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, 0x69, 0x73, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x20, 0x5B, 0x2F, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x20, 0x2F, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, 0x5D, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x65, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, + 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x5B, + 0x30, 0x2E, 0x33, 0x31, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x31, 0x33, 0x34, + 0x39, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x31, + 0x36, 0x34, 0x34, 0x20, 0x5D, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, + 0x6F, 0x6E, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x2F, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x65, 0x53, 0x61, 0x6E, 0x73, 0x4D, 0x4D, 0x20, 0x64, 0x65, + 0x66, 0x0D, 0x2F, 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, 0x6E, 0x67, 0x20, + 0x32, 0x35, 0x36, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x0D, 0x30, 0x20, + 0x31, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7B, 0x31, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x2E, 0x6E, 0x6F, + 0x74, 0x64, 0x65, 0x66, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x20, 0x66, + 0x6F, 0x72, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x32, 0x20, 0x2F, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x33, 0x33, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x6C, 0x61, 0x6D, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x34, 0x20, 0x2F, + 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x35, 0x20, 0x2F, 0x6E, 0x75, 0x6D, + 0x62, 0x65, 0x72, 0x73, 0x69, 0x67, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x33, 0x36, 0x20, 0x2F, 0x64, 0x6F, 0x6C, 0x6C, + 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, + 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6E, 0x74, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x38, 0x20, 0x2F, 0x61, + 0x6D, 0x70, 0x65, 0x72, 0x73, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x39, 0x20, 0x2F, 0x71, 0x75, 0x6F, + 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x30, 0x20, 0x2F, 0x70, 0x61, 0x72, + 0x65, 0x6E, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x34, 0x31, 0x20, 0x2F, 0x70, 0x61, 0x72, 0x65, 0x6E, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x34, 0x32, 0x20, 0x2F, 0x61, 0x73, 0x74, 0x65, 0x72, 0x69, + 0x73, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, + 0x33, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x34, 0x34, 0x20, 0x2F, 0x63, 0x6F, 0x6D, 0x6D, + 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x35, + 0x20, 0x2F, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x36, 0x20, 0x2F, 0x70, 0x65, 0x72, + 0x69, 0x6F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x34, 0x37, 0x20, 0x2F, 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x38, 0x20, 0x2F, 0x7A, 0x65, + 0x72, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, + 0x39, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x35, 0x30, 0x20, 0x2F, 0x74, 0x77, 0x6F, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x31, 0x20, 0x2F, 0x74, + 0x68, 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x35, 0x32, 0x20, 0x2F, 0x66, 0x6F, 0x75, 0x72, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x33, 0x20, 0x2F, 0x66, 0x69, + 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, + 0x34, 0x20, 0x2F, 0x73, 0x69, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x35, 0x35, 0x20, 0x2F, 0x73, 0x65, 0x76, 0x65, 0x6E, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x36, 0x20, + 0x2F, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x35, 0x37, 0x20, 0x2F, 0x6E, 0x69, 0x6E, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x38, 0x20, 0x2F, + 0x63, 0x6F, 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x35, 0x39, 0x20, 0x2F, 0x73, 0x65, 0x6D, 0x69, 0x63, 0x6F, + 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x36, 0x30, 0x20, 0x2F, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x31, 0x20, 0x2F, 0x65, 0x71, 0x75, + 0x61, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, + 0x32, 0x20, 0x2F, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x33, 0x20, 0x2F, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x36, 0x34, 0x20, 0x2F, 0x61, 0x74, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x35, 0x20, 0x2F, 0x41, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x36, 0x20, + 0x2F, 0x42, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, + 0x37, 0x20, 0x2F, 0x43, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x36, 0x38, 0x20, 0x2F, 0x44, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x36, 0x39, 0x20, 0x2F, 0x45, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x30, 0x20, 0x2F, 0x46, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x31, 0x20, 0x2F, 0x47, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x32, 0x20, + 0x2F, 0x48, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, + 0x33, 0x20, 0x2F, 0x49, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x37, 0x34, 0x20, 0x2F, 0x4A, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x37, 0x35, 0x20, 0x2F, 0x4B, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x36, 0x20, 0x2F, 0x4C, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x37, 0x20, 0x2F, 0x4D, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x38, 0x20, + 0x2F, 0x4E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, + 0x39, 0x20, 0x2F, 0x4F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x38, 0x30, 0x20, 0x2F, 0x50, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x38, 0x31, 0x20, 0x2F, 0x51, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x32, 0x20, 0x2F, 0x52, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x33, 0x20, 0x2F, 0x53, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x34, 0x20, + 0x2F, 0x54, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, + 0x35, 0x20, 0x2F, 0x55, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x38, 0x36, 0x20, 0x2F, 0x56, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x38, 0x37, 0x20, 0x2F, 0x57, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x38, 0x20, 0x2F, 0x58, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x39, 0x20, 0x2F, 0x59, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x30, 0x20, + 0x2F, 0x5A, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, + 0x31, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x6C, 0x65, + 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, + 0x32, 0x20, 0x2F, 0x62, 0x61, 0x63, 0x6B, 0x73, 0x6C, 0x61, 0x73, 0x68, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x33, 0x20, + 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x34, + 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x63, 0x69, 0x72, 0x63, 0x75, + 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x35, + 0x20, 0x2F, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6F, 0x72, 0x65, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x36, 0x20, + 0x2F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x39, 0x37, 0x20, 0x2F, 0x61, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x38, 0x20, 0x2F, 0x62, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x39, 0x20, 0x2F, 0x63, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x30, + 0x20, 0x2F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x30, 0x31, 0x20, 0x2F, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x30, 0x32, 0x20, 0x2F, 0x66, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x33, 0x20, 0x2F, 0x67, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x34, + 0x20, 0x2F, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x30, 0x35, 0x20, 0x2F, 0x69, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x30, 0x36, 0x20, 0x2F, 0x6A, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x37, 0x20, 0x2F, 0x6B, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x38, + 0x20, 0x2F, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x30, 0x39, 0x20, 0x2F, 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x31, 0x30, 0x20, 0x2F, 0x6E, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x31, 0x20, 0x2F, 0x6F, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x32, + 0x20, 0x2F, 0x70, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x31, 0x33, 0x20, 0x2F, 0x71, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x31, 0x34, 0x20, 0x2F, 0x72, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x35, 0x20, 0x2F, 0x73, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x36, + 0x20, 0x2F, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x31, 0x37, 0x20, 0x2F, 0x75, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x31, 0x38, 0x20, 0x2F, 0x76, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x39, 0x20, 0x2F, 0x77, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x30, + 0x20, 0x2F, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x32, 0x31, 0x20, 0x2F, 0x79, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x32, 0x32, 0x20, 0x2F, 0x7A, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x33, 0x20, 0x2F, 0x62, + 0x72, 0x61, 0x63, 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x34, 0x20, 0x2F, 0x62, 0x61, + 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, + 0x35, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x65, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, + 0x36, 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x74, 0x69, 0x6C, 0x64, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, + 0x38, 0x20, 0x2F, 0x45, 0x75, 0x72, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x30, 0x20, 0x2F, 0x71, 0x75, 0x6F, + 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x62, 0x61, 0x73, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x31, 0x20, + 0x2F, 0x66, 0x6C, 0x6F, 0x72, 0x69, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x32, 0x20, 0x2F, 0x71, 0x75, 0x6F, + 0x74, 0x65, 0x64, 0x62, 0x6C, 0x62, 0x61, 0x73, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x33, 0x20, 0x2F, 0x65, + 0x6C, 0x6C, 0x69, 0x70, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x34, 0x20, 0x2F, 0x64, 0x61, 0x67, + 0x67, 0x65, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x33, 0x35, 0x20, 0x2F, 0x64, 0x61, 0x67, 0x67, 0x65, 0x72, 0x64, + 0x62, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x33, 0x36, 0x20, 0x2F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, + 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x33, 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x74, 0x68, 0x6F, 0x75, 0x73, + 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x33, 0x38, 0x20, 0x2F, 0x53, 0x63, 0x61, 0x72, 0x6F, 0x6E, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x39, 0x20, + 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x6C, 0x65, + 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x34, 0x30, 0x20, 0x2F, 0x4F, 0x45, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x34, 0x35, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, + 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x34, 0x36, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, 0x65, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x34, 0x37, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, 0x65, + 0x64, 0x62, 0x6C, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x38, 0x20, 0x2F, 0x71, 0x75, 0x6F, + 0x74, 0x65, 0x64, 0x62, 0x6C, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x39, 0x20, 0x2F, + 0x62, 0x75, 0x6C, 0x6C, 0x65, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x35, 0x30, 0x20, 0x2F, 0x65, 0x6E, 0x64, 0x61, + 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x35, 0x31, 0x20, 0x2F, 0x65, 0x6D, 0x64, 0x61, 0x73, 0x68, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x32, 0x20, 0x2F, + 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x35, 0x33, 0x20, 0x2F, 0x74, 0x72, 0x61, 0x64, 0x65, + 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x35, 0x34, 0x20, 0x2F, 0x73, 0x63, 0x61, 0x72, 0x6F, 0x6E, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x35, + 0x20, 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x35, 0x36, 0x20, 0x2F, 0x6F, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x39, 0x20, 0x2F, 0x59, 0x64, + 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x31, 0x20, 0x2F, 0x65, 0x78, 0x63, + 0x6C, 0x61, 0x6D, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x32, 0x20, 0x2F, 0x63, 0x65, 0x6E, + 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, + 0x33, 0x20, 0x2F, 0x73, 0x74, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x67, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x34, 0x20, + 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x35, 0x20, 0x2F, 0x79, + 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x36, 0x36, 0x20, 0x2F, 0x62, 0x72, 0x6F, 0x6B, 0x65, 0x6E, 0x62, 0x61, + 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, + 0x37, 0x20, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x38, 0x20, 0x2F, + 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x39, 0x20, 0x2F, 0x63, 0x6F, + 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x30, 0x20, 0x2F, 0x6F, 0x72, 0x64, + 0x66, 0x65, 0x6D, 0x69, 0x6E, 0x69, 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x31, 0x20, 0x2F, 0x67, 0x75, + 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x6C, 0x65, 0x66, 0x74, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x32, 0x20, + 0x2F, 0x6C, 0x6F, 0x67, 0x69, 0x63, 0x61, 0x6C, 0x6E, 0x6F, 0x74, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x34, 0x20, + 0x2F, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x35, 0x20, + 0x2F, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x36, 0x20, 0x2F, 0x64, 0x65, 0x67, + 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x37, 0x37, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, 0x6D, 0x69, 0x6E, + 0x75, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x37, 0x38, 0x20, 0x2F, 0x74, 0x77, 0x6F, 0x73, 0x75, 0x70, 0x65, 0x72, + 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x37, 0x39, 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x65, 0x73, 0x75, + 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x38, 0x30, 0x20, 0x2F, 0x61, 0x63, 0x75, 0x74, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, + 0x31, 0x20, 0x2F, 0x6D, 0x75, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x38, 0x32, 0x20, 0x2F, 0x70, 0x61, 0x72, 0x61, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x38, 0x33, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x64, + 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x34, 0x20, 0x2F, 0x63, 0x65, + 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x38, 0x35, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x73, 0x75, + 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x38, 0x36, 0x20, 0x2F, 0x6F, 0x72, 0x64, 0x6D, + 0x61, 0x73, 0x63, 0x75, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x37, 0x20, 0x2F, 0x67, 0x75, + 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x38, + 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x39, + 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x68, 0x61, 0x6C, 0x66, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x30, 0x20, 0x2F, 0x74, + 0x68, 0x72, 0x65, 0x65, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, 0x73, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x31, + 0x20, 0x2F, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, 0x6E, 0x64, 0x6F, + 0x77, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x39, 0x32, 0x20, 0x2F, 0x41, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x33, 0x20, 0x2F, + 0x41, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x39, 0x34, 0x20, 0x2F, 0x41, 0x63, 0x69, 0x72, + 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x35, 0x20, 0x2F, 0x41, 0x74, 0x69, + 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x39, 0x36, 0x20, 0x2F, 0x41, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, + 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x39, 0x37, 0x20, 0x2F, 0x41, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x38, 0x20, 0x2F, 0x41, + 0x45, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, + 0x39, 0x20, 0x2F, 0x43, 0x63, 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x30, 0x20, + 0x2F, 0x45, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x31, 0x20, 0x2F, 0x45, 0x61, 0x63, + 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x30, 0x32, 0x20, 0x2F, 0x45, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, + 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x32, 0x30, 0x33, 0x20, 0x2F, 0x45, 0x64, 0x69, 0x65, 0x72, 0x65, + 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x30, 0x34, 0x20, 0x2F, 0x49, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x35, 0x20, + 0x2F, 0x49, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x36, 0x20, 0x2F, 0x49, 0x63, 0x69, + 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x37, 0x20, 0x2F, 0x49, 0x64, + 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x38, 0x20, 0x2F, 0x45, 0x74, 0x68, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x39, + 0x20, 0x2F, 0x4E, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x30, 0x20, 0x2F, 0x4F, 0x67, + 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x32, 0x31, 0x31, 0x20, 0x2F, 0x4F, 0x61, 0x63, 0x75, 0x74, 0x65, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x32, + 0x20, 0x2F, 0x4F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, + 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, + 0x33, 0x20, 0x2F, 0x4F, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x34, 0x20, 0x2F, 0x4F, + 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x35, 0x20, 0x2F, 0x6D, 0x75, + 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x79, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x31, 0x36, 0x20, 0x2F, 0x4F, 0x73, 0x6C, 0x61, + 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x31, 0x37, 0x20, 0x2F, 0x55, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x38, 0x20, 0x2F, + 0x55, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x31, 0x39, 0x20, 0x2F, 0x55, 0x63, 0x69, 0x72, + 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x30, 0x20, 0x2F, 0x55, 0x64, 0x69, + 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x32, 0x31, 0x20, 0x2F, 0x59, 0x61, 0x63, 0x75, + 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x32, 0x32, 0x20, 0x2F, 0x54, 0x68, 0x6F, 0x72, 0x6E, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x33, 0x20, 0x2F, 0x67, + 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x64, 0x62, 0x6C, 0x73, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x34, 0x20, 0x2F, 0x61, + 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x32, 0x35, 0x20, 0x2F, 0x61, 0x61, 0x63, 0x75, 0x74, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, + 0x36, 0x20, 0x2F, 0x61, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, + 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x32, 0x37, 0x20, 0x2F, 0x61, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x38, 0x20, 0x2F, + 0x61, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x39, 0x20, 0x2F, 0x61, + 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x32, 0x33, 0x30, 0x20, 0x2F, 0x61, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x31, 0x20, 0x2F, 0x63, 0x63, + 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x33, 0x32, 0x20, 0x2F, 0x65, 0x67, 0x72, 0x61, + 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x33, 0x33, 0x20, 0x2F, 0x65, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x34, 0x20, 0x2F, + 0x65, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x35, 0x20, + 0x2F, 0x65, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x36, 0x20, 0x2F, + 0x69, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x33, 0x37, 0x20, 0x2F, 0x69, 0x61, 0x63, 0x75, + 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x33, 0x38, 0x20, 0x2F, 0x69, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, + 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x33, 0x39, 0x20, 0x2F, 0x69, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, + 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x34, 0x30, 0x20, 0x2F, 0x65, 0x74, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x31, 0x20, 0x2F, 0x6E, 0x74, 0x69, + 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x34, 0x32, 0x20, 0x2F, 0x6F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x33, 0x20, + 0x2F, 0x6F, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x34, 0x20, 0x2F, 0x6F, 0x63, 0x69, + 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x35, 0x20, 0x2F, 0x6F, 0x74, + 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x32, 0x34, 0x36, 0x20, 0x2F, 0x6F, 0x64, 0x69, 0x65, 0x72, 0x65, + 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x34, 0x37, 0x20, 0x2F, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x38, 0x20, + 0x2F, 0x6F, 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x39, 0x20, 0x2F, 0x75, 0x67, 0x72, + 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x35, 0x30, 0x20, 0x2F, 0x75, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x31, 0x20, + 0x2F, 0x75, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x32, + 0x20, 0x2F, 0x75, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x33, 0x20, + 0x2F, 0x79, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x34, 0x20, 0x2F, 0x74, 0x68, 0x6F, + 0x72, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x35, 0x35, 0x20, 0x2F, 0x79, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, + 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, + 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x50, 0x61, 0x69, 0x6E, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x31, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x24, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, + 0x7B, 0x20, 0x30, 0x2E, 0x31, 0x33, 0x34, 0x39, 0x20, 0x6D, 0x75, 0x6C, + 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x34, 0x39, + 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x30, 0x2E, 0x31, 0x36, 0x34, 0x34, 0x20, 0x6D, 0x75, 0x6C, + 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x62, + 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, + 0x74, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x5B, 0x20, 0x30, 0x2E, + 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, + 0x30, 0x2E, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x30, 0x20, 0x5D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, + 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x42, 0x42, + 0x6F, 0x78, 0x20, 0x7B, 0x2D, 0x31, 0x31, 0x39, 0x20, 0x2D, 0x32, 0x35, + 0x37, 0x20, 0x31, 0x31, 0x35, 0x30, 0x20, 0x38, 0x37, 0x32, 0x7D, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, + 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x33, 0x20, 0x64, 0x69, + 0x63, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, + 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x42, 0x42, 0x6F, 0x78, 0x20, 0x7B, + 0x7B, 0x20, 0x2D, 0x35, 0x35, 0x20, 0x2D, 0x31, 0x31, 0x32, 0x20, 0x2D, + 0x31, 0x36, 0x32, 0x20, 0x2D, 0x31, 0x34, 0x35, 0x20, 0x7D, 0x20, 0x7B, + 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, + 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x7D, 0x20, 0x7B, + 0x20, 0x34, 0x32, 0x34, 0x20, 0x31, 0x31, 0x35, 0x36, 0x20, 0x31, 0x33, + 0x38, 0x39, 0x20, 0x31, 0x39, 0x38, 0x31, 0x20, 0x7D, 0x20, 0x7B, 0x20, + 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, + 0x38, 0x37, 0x32, 0x20, 0x7D, 0x7D, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, + 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x31, 0x34, 0x20, 0x64, + 0x69, 0x63, 0x74, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x65, 0x6E, 0x64, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x25, 0x20, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x30, + 0x2D, 0x31, 0x39, 0x39, 0x34, 0x20, 0x41, 0x64, 0x6F, 0x62, 0x65, 0x20, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x49, 0x6E, 0x63, 0x6F, + 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x65, 0x64, 0x0D, 0x25, 0x20, 0x41, + 0x6C, 0x6C, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D, 0x2F, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, + 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, + 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x20, 0x64, 0x75, 0x70, 0x0D, 0x2F, 0x6D, 0x61, 0x6B, + 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x6D, 0x61, + 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, + 0x74, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x2F, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, + 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, + 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, + 0x30, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x2F, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x74, + 0x79, 0x70, 0x65, 0x20, 0x6E, 0x65, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x31, + 0x31, 0x20, 0x6C, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, + 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, + 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, + 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, + 0x7B, 0x0D, 0x31, 0x31, 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x63, + 0x6F, 0x70, 0x79, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x2F, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x56, + 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x67, 0x65, 0x74, 0x20, 0x6C, 0x65, + 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x71, 0x0D, 0x7B, 0x20, 0x64, 0x75, + 0x70, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x61, + 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, + 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x61, 0x62, 0x73, 0x20, 0x2E, 0x30, + 0x30, 0x31, 0x20, 0x67, 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x74, 0x72, + 0x75, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, + 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, + 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, 0x20, 0x65, + 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, 0x72, 0x61, + 0x6E, 0x67, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, 0x74, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, + 0x6D, 0x61, 0x78, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x64, 0x69, + 0x63, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x7B, 0x0D, 0x66, + 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x46, 0x49, 0x44, 0x20, + 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x49, 0x44, 0x20, 0x2F, 0x58, + 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x33, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7D, 0x20, + 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x65, 0x66, + 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, + 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x2F, 0x58, 0x55, 0x49, 0x44, + 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6B, 0x6E, 0x6F, 0x77, + 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, + 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x73, 0x75, + 0x62, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x67, 0x74, 0x20, 0x7B, + 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, + 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, + 0x6F, 0x70, 0x79, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x32, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x36, 0x35, 0x35, 0x33, 0x36, + 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x63, 0x76, 0x69, 0x20, 0x33, 0x20, 0x63, + 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, + 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x2F, 0x58, 0x55, 0x49, 0x44, + 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x7D, 0x20, + 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, + 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x50, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, 0x6F, + 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x6F, 0x61, + 0x64, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6D, 0x61, 0x78, 0x6C, 0x65, 0x6E, + 0x67, 0x74, 0x68, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x62, 0x65, 0x67, + 0x69, 0x6E, 0x20, 0x7B, 0x0D, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7B, + 0x20, 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x49, 0x44, 0x20, 0x2F, + 0x58, 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x33, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7D, + 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7B, 0x20, 0x70, 0x6F, + 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x65, + 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, + 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x24, 0x42, 0x6C, + 0x65, 0x6E, 0x64, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x5B, 0x0D, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, + 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x2D, 0x31, 0x20, 0x31, + 0x20, 0x7B, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x64, + 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x33, 0x20, + 0x2D, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x73, 0x75, 0x62, 0x20, + 0x67, 0x65, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x65, 0x71, + 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6C, + 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, + 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x2F, 0x70, 0x6F, 0x70, 0x20, 0x6C, + 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, + 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x31, 0x20, 0x65, + 0x71, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7B, 0x20, + 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x34, 0x20, 0x31, + 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x33, + 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x2F, 0x6D, 0x75, 0x6C, + 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, + 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, + 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x61, + 0x64, 0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, + 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, 0x70, 0x6F, 0x70, 0x20, + 0x7B, 0x20, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x5D, 0x20, 0x63, 0x76, 0x78, 0x20, 0x64, + 0x65, 0x66, 0x0D, 0x7B, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, + 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x20, 0x7B, 0x20, + 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, + 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, + 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, 0x74, 0x79, 0x70, 0x65, + 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, + 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x30, 0x20, 0x30, 0x20, + 0x31, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, + 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x7B, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x6D, 0x75, 0x6C, 0x20, + 0x61, 0x64, 0x64, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x7B, 0x20, 0x64, 0x75, + 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, + 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, 0x79, 0x70, + 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x70, + 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x70, + 0x6F, 0x70, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x2F, + 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, 0x6F, 0x6C, 0x64, 0x20, 0x65, 0x71, + 0x20, 0x7B, 0x0D, 0x35, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x30, + 0x20, 0x30, 0x20, 0x31, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, + 0x62, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, + 0x20, 0x7B, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, 0x20, + 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, + 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x2F, 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, 0x6F, 0x6C, 0x64, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x20, 0x67, 0x65, 0x74, + 0x20, 0x67, 0x74, 0x20, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x7D, + 0x20, 0x7B, 0x0D, 0x7B, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, + 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, + 0x74, 0x68, 0x20, 0x6E, 0x65, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x74, 0x72, + 0x75, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x69, 0x6E, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x74, 0x79, 0x70, + 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6F, 0x72, + 0x20, 0x61, 0x6E, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, + 0x6C, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, + 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x38, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x65, 0x78, 0x65, + 0x63, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x35, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x35, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, + 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x78, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x7B, 0x20, + 0x63, 0x76, 0x78, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, + 0x62, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x31, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x20, + 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, + 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, + 0x64, 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, 0x79, + 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, + 0x70, 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, + 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x36, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, + 0x63, 0x20, 0x7B, 0x0D, 0x39, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x39, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, + 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x33, 0x20, + 0x63, 0x6F, 0x70, 0x79, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x53, 0x74, 0x65, 0x6D, 0x53, 0x6E, + 0x61, 0x70, 0x48, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x2F, 0x53, 0x74, 0x65, 0x6D, 0x53, 0x6E, 0x61, 0x70, 0x56, 0x20, 0x65, + 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, + 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, + 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x6C, 0x65, 0x20, 0x7B, + 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, + 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, + 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x67, 0x65, 0x74, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, + 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x30, 0x20, 0x70, 0x75, 0x74, 0x20, 0x30, 0x20, 0x7D, 0x20, 0x69, 0x66, + 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, + 0x7D, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, + 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x0D, 0x33, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, + 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x33, 0x20, 0x63, + 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, 0x70, 0x6F, 0x70, 0x0D, + 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, + 0x20, 0x6C, 0x74, 0x20, 0x7B, 0x20, 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x67, 0x65, 0x74, 0x20, 0x30, + 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x30, 0x20, 0x67, 0x74, 0x20, + 0x7B, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, + 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, + 0x6C, 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x73, 0x75, 0x62, 0x20, 0x67, 0x65, 0x74, 0x69, 0x6E, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x2F, 0x64, + 0x69, 0x63, 0x74, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x7B, + 0x20, 0x36, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x33, 0x20, 0x31, 0x20, + 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, + 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, + 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, + 0x63, 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x2F, 0x74, 0x79, 0x70, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, + 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x7D, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, + 0x63, 0x74, 0x20, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x32, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x6E, + 0x64, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x2F, 0x24, 0x66, 0x62, 0x66, 0x20, 0x7B, 0x20, 0x46, 0x6F, 0x6E, + 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x63, + 0x6F, 0x75, 0x6E, 0x74, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x33, + 0x20, 0x61, 0x64, 0x64, 0x20, 0x2D, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, + 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x63, 0x6C, 0x65, + 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, + 0x7B, 0x0D, 0x5D, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x66, 0x69, 0x6E, + 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6D, + 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, + 0x6E, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x45, 0x6E, 0x63, 0x6F, + 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, + 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, + 0x6E, 0x67, 0x20, 0x67, 0x65, 0x74, 0x20, 0x70, 0x75, 0x74, 0x20, 0x64, + 0x65, 0x66, 0x69, 0x6E, 0x65, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x7D, 0x20, + 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6E, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x53, 0x63, 0x61, 0x6C, + 0x65, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x67, 0x65, 0x74, 0x20, + 0x6D, 0x61, 0x6B, 0x65, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x74, + 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, + 0x70, 0x75, 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x4E, 0x6F, 0x72, 0x6D, 0x61, + 0x6C, 0x69, 0x7A, 0x65, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, + 0x63, 0x74, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x35, 0x30, 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, + 0x64, 0x69, 0x76, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x35, 0x30, 0x20, + 0x73, 0x75, 0x62, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, 0x64, 0x69, 0x76, + 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x2F, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x44, 0x65, 0x73, 0x69, + 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x31, + 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, 0x62, + 0x20, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, + 0x75, 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, + 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, + 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, + 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, + 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, + 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x70, + 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, + 0x66, 0x0D, 0x2F, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, + 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x77, 0x68, + 0x65, 0x72, 0x65, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x73, 0x61, + 0x76, 0x65, 0x20, 0x7B, 0x20, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x65, + 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x7D, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x7B, + 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x20, 0x70, + 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, + 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, + 0x73, 0x65, 0x0D, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x64, + 0x75, 0x70, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x7B, + 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x7B, + 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, + 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x0D, 0x7D, 0x20, 0x7B, 0x20, + 0x7B, 0x20, 0x7D, 0x20, 0x75, 0x73, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, + 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x62, 0x65, + 0x67, 0x69, 0x6E, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x62, 0x65, 0x67, 0x69, + 0x6E, 0x20, 0x7B, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, + 0x69, 0x63, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x7D, + 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, + 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, + 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, + 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x24, 0x6D, 0x6D, 0x66, 0x66, + 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, + 0x74, 0x20, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, + 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, + 0x6F, 0x6E, 0x74, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, + 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0D, 0x7B, + 0x20, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x67, 0x65, 0x74, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x20, 0x67, 0x65, 0x74, 0x20, 0x33, 0x20, 0x6E, 0x65, 0x20, 0x7D, + 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, + 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, + 0x6E, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, + 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x67, + 0x65, 0x74, 0x20, 0x33, 0x20, 0x6E, 0x65, 0x20, 0x7D, 0x0D, 0x7B, 0x20, + 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, + 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, + 0x7B, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, + 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x7B, + 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, + 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x63, + 0x76, 0x73, 0x20, 0x28, 0x5F, 0x29, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x20, 0x7B, 0x0D, 0x63, 0x76, 0x6E, 0x20, 0x64, 0x75, 0x70, 0x20, + 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, + 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, + 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x74, 0x72, + 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, + 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x37, 0x20, 0x61, 0x64, 0x64, 0x20, + 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, + 0x20, 0x28, 0x25, 0x66, 0x6F, 0x6E, 0x74, 0x25, 0x29, 0x20, 0x70, 0x75, + 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x36, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, + 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x63, + 0x76, 0x73, 0x20, 0x70, 0x75, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6C, 0x0D, 0x7B, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, + 0x7D, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x70, 0x65, 0x64, 0x20, 0x7B, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, + 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, 0x24, 0x6D, 0x6D, 0x66, + 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, + 0x6E, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x70, 0x6F, 0x70, + 0x0D, 0x5B, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x28, 0x5F, + 0x29, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x7B, + 0x20, 0x63, 0x76, 0x72, 0x20, 0x7D, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x70, + 0x65, 0x64, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, + 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, + 0x73, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, 0x6F, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, + 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x2F, 0x42, + 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6B, 0x6E, 0x6F, + 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, 0x20, 0x6C, 0x65, 0x6E, + 0x67, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x74, 0x6F, 0x6D, + 0x61, 0x72, 0x6B, 0x20, 0x32, 0x20, 0x73, 0x75, 0x62, 0x20, 0x65, 0x71, + 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x7D, 0x20, + 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, + 0x7B, 0x0D, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x44, + 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x0D, + 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, + 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x0D, 0x5D, 0x20, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, + 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, + 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, + 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x66, 0x6F, 0x6E, 0x74, + 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, + 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, + 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x65, 0x6E, 0x64, + 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, + 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, + 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, + 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, + 0x63, 0x0D, 0x2F, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, + 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x64, + 0x75, 0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x20, 0x70, + 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x30, + 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, + 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x65, 0x6E, 0x64, 0x20, 0x65, 0x78, 0x65, 0x63, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x6E, + 0x64, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x66, 0x69, 0x6C, + 0x65, 0x20, 0x65, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x80, 0x02, 0x6D, 0xD9, + 0x00, 0x00, 0xE8, 0xDC, 0x61, 0x72, 0x80, 0x71, 0xAB, 0xD4, 0xD5, 0xBC, + 0xD2, 0x30, 0xC4, 0xE1, 0x86, 0xDC, 0xE0, 0x96, 0x54, 0x1C, 0x9C, 0x1F, + 0x2E, 0x58, 0x69, 0x40, 0x4E, 0x33, 0xF9, 0xCE, 0xFF, 0x7D, 0x2F, 0xBF, + 0xEF, 0x5F, 0x26, 0xC7, 0xE1, 0x84, 0x89, 0x54, 0xC7, 0x07, 0x55, 0x24, + 0x4E, 0x73, 0x41, 0xB8, 0x26, 0x97, 0xE2, 0xE8, 0xEA, 0x9C, 0xE9, 0x13, + 0x1D, 0x00, 0x55, 0x78, 0xAB, 0x3D, 0xE1, 0x9F, 0xA9, 0xF2, 0xFA, 0xFF, + 0x3B, 0xEB, 0x53, 0x17, 0x4A, 0x8E, 0x2F, 0x33, 0xE9, 0xDB, 0xE0, 0x38, + 0x63, 0x42, 0xF4, 0x0E, 0x5D, 0xF2, 0x5B, 0x7A, 0x88, 0x22, 0xEE, 0x2B, + 0x6C, 0xDC, 0xAC, 0x58, 0xA9, 0x8F, 0x9B, 0x04, 0x71, 0x44, 0xE3, 0xF6, + 0xE7, 0x4A, 0xB6, 0x0C, 0x00, 0xE4, 0x42, 0xE8, 0x30, 0xB1, 0x30, 0x30, + 0x8A, 0x3F, 0x0E, 0xDF, 0x2C, 0xE6, 0x62, 0x35, 0xF9, 0x21, 0x6D, 0x42, + 0x0F, 0x23, 0xAC, 0xED, 0xEC, 0x60, 0xA8, 0x8A, 0x73, 0x77, 0x14, 0x62, + 0xE1, 0xB2, 0x04, 0x04, 0x29, 0x5D, 0x49, 0xBA, 0x8A, 0x8B, 0xCB, 0xF2, + 0x04, 0x2A, 0x8D, 0xEB, 0x9A, 0x65, 0xBA, 0xF1, 0xC8, 0x24, 0x2F, 0x7E, + 0x90, 0xD9, 0x49, 0x63, 0x23, 0x73, 0xF8, 0x43, 0x8F, 0xC1, 0xE7, 0x37, + 0x37, 0x0B, 0x91, 0x15, 0x08, 0x9D, 0xA7, 0x90, 0xA8, 0x28, 0x50, 0xB6, + 0x91, 0xE6, 0xE9, 0xE2, 0x79, 0x11, 0x12, 0x36, 0xFF, 0xD7, 0xC7, 0x69, + 0xE2, 0x5A, 0x86, 0xDA, 0xFA, 0x47, 0x58, 0x69, 0x73, 0xB5, 0x49, 0xF3, + 0xB4, 0x9B, 0x15, 0x16, 0x9C, 0x35, 0xF5, 0xDD, 0x2F, 0xD1, 0x4A, 0x95, + 0x2A, 0x95, 0x04, 0x43, 0x8B, 0xF2, 0x75, 0x99, 0xA4, 0x90, 0xA6, 0xA1, + 0x0A, 0x87, 0x35, 0x71, 0xEB, 0x17, 0x1A, 0x46, 0x59, 0x3E, 0xC6, 0xF8, + 0x99, 0xF7, 0x60, 0x2C, 0x66, 0x27, 0x4A, 0x48, 0x63, 0x35, 0xAD, 0xC1, + 0xDF, 0x19, 0x26, 0x81, 0x68, 0x9C, 0x17, 0xD4, 0x71, 0x79, 0xEF, 0x5B, + 0xE3, 0xB5, 0xBE, 0xA9, 0xE5, 0xD2, 0x6C, 0xA2, 0x64, 0x0A, 0x14, 0x44, + 0xFE, 0x73, 0x6B, 0x69, 0xEF, 0x3D, 0xF3, 0x0A, 0x79, 0x68, 0x5B, 0x61, + 0x86, 0xAE, 0x9B, 0x42, 0x80, 0x6E, 0xBF, 0x24, 0x85, 0xA9, 0x87, 0x98, + 0x59, 0xBB, 0x30, 0x36, 0x38, 0x81, 0x2A, 0x82, 0xB6, 0x05, 0x19, 0x94, + 0x0A, 0x88, 0x24, 0x8A, 0x57, 0x0C, 0x51, 0x58, 0xE4, 0xAE, 0x1B, 0xE4, + 0xDF, 0xD3, 0x2F, 0x92, 0xBE, 0xB5, 0xDB, 0x51, 0x5E, 0xA2, 0xC4, 0x58, + 0xF0, 0x64, 0xF7, 0x57, 0xFB, 0x61, 0x3E, 0xAA, 0x46, 0xE6, 0x33, 0x46, + 0x6E, 0x45, 0x4D, 0x33, 0x17, 0x66, 0xE7, 0xD7, 0xCE, 0x92, 0xF0, 0xF6, + 0xB2, 0xFB, 0x62, 0x7B, 0xAD, 0x7C, 0x68, 0x0A, 0x8E, 0x14, 0x8F, 0xB7, + 0x48, 0x3D, 0x84, 0xEF, 0x49, 0xDC, 0x52, 0xE3, 0xAA, 0x04, 0xC9, 0xF3, + 0x0B, 0x21, 0x41, 0x96, 0x4D, 0x36, 0xC3, 0x3D, 0x54, 0xE8, 0x82, 0x69, + 0xFF, 0xB1, 0xA8, 0xE3, 0x8A, 0x39, 0xDC, 0xC8, 0x14, 0x0A, 0x49, 0xAC, + 0x96, 0x33, 0x1E, 0x09, 0xE8, 0x62, 0x64, 0x57, 0x82, 0x68, 0x46, 0xAB, + 0xE0, 0xBB, 0xCF, 0xCF, 0x8F, 0xCF, 0x9E, 0x08, 0xB0, 0xAD, 0x98, 0x71, + 0x33, 0x08, 0xE4, 0x5C, 0xCC, 0x7F, 0x17, 0x09, 0x98, 0x65, 0xEE, 0xED, + 0x93, 0x84, 0xC9, 0xFD, 0x46, 0x57, 0xB4, 0xF1, 0x98, 0x3A, 0xB5, 0xC2, + 0x7F, 0xF8, 0xFB, 0x60, 0x78, 0xD7, 0x47, 0xD7, 0x63, 0x58, 0x51, 0xE9, + 0xDC, 0xF1, 0x0E, 0xB8, 0x59, 0x3B, 0x72, 0x81, 0x31, 0xAF, 0xC8, 0x5B, + 0x35, 0x47, 0xF1, 0xBC, 0xCD, 0xED, 0x45, 0xF1, 0xFC, 0x6D, 0xFF, 0x2E, + 0xAA, 0x6C, 0xC2, 0x65, 0x5F, 0x8F, 0x8F, 0x95, 0x20, 0xBA, 0xCA, 0xF9, + 0x68, 0xA5, 0x47, 0x7F, 0xCC, 0xD0, 0xA6, 0x3B, 0xAE, 0xA2, 0xE5, 0x11, + 0x0D, 0x4E, 0x20, 0x44, 0x6B, 0x64, 0xDB, 0x75, 0x68, 0x9D, 0xA4, 0xEC, + 0xB2, 0x1D, 0xDF, 0x66, 0xC5, 0x89, 0x4F, 0x94, 0x0B, 0x06, 0xD9, 0x11, + 0x9C, 0x83, 0x3F, 0x55, 0x21, 0xA0, 0x65, 0x2E, 0x6D, 0x39, 0x6F, 0xCA, + 0x08, 0xDE, 0x60, 0x7F, 0x47, 0xE8, 0x9D, 0xC2, 0x9E, 0x5F, 0x81, 0x9C, + 0xAA, 0xB7, 0x46, 0x0A, 0xAC, 0xA0, 0xFD, 0x22, 0x59, 0xE6, 0xCB, 0x78, + 0xF6, 0x37, 0x7A, 0xD8, 0x6C, 0x8D, 0x61, 0xF1, 0x10, 0xE9, 0x60, 0x74, + 0x4C, 0x43, 0xB0, 0x4B, 0x3C, 0x0A, 0x77, 0x6A, 0xF3, 0xF5, 0xAE, 0x16, + 0x1C, 0xBB, 0x75, 0xDB, 0x81, 0x97, 0xA2, 0xDA, 0x6A, 0x8C, 0xE4, 0xBA, + 0xB4, 0xBE, 0x6C, 0xAD, 0x24, 0x18, 0x37, 0x3F, 0x05, 0x8A, 0x96, 0x9C, + 0x75, 0xD0, 0x97, 0xC5, 0x3B, 0xDB, 0x23, 0xBF, 0x62, 0x76, 0xC8, 0xD3, + 0xFD, 0x09, 0x57, 0xD7, 0x8B, 0x85, 0x1B, 0x9F, 0x65, 0x79, 0x83, 0x16, + 0x10, 0x92, 0xE4, 0x10, 0xB3, 0x65, 0xED, 0x7B, 0x42, 0x3B, 0xC6, 0x05, + 0x03, 0xF7, 0xFE, 0xEE, 0x4B, 0x1E, 0x87, 0x05, 0x65, 0x4E, 0x00, 0xE2, + 0x30, 0x67, 0x0A, 0xDB, 0xAB, 0x57, 0x04, 0xB6, 0x19, 0x39, 0x24, 0xFA, + 0x7F, 0xB8, 0xD9, 0x08, 0x64, 0x38, 0xFA, 0x16, 0xE1, 0xF2, 0x19, 0xB2, + 0x12, 0xBB, 0x5F, 0xDB, 0xEE, 0x81, 0xDA, 0x96, 0x41, 0x88, 0xE0, 0x9B, + 0x41, 0x27, 0x2C, 0x9B, 0xB8, 0x27, 0x41, 0x72, 0xC1, 0xE5, 0xD9, 0xE7, + 0x8D, 0x1F, 0x94, 0xF9, 0xCD, 0x0F, 0x68, 0x0D, 0xD3, 0x24, 0x6B, 0xBB, + 0xD5, 0x65, 0x71, 0x8B, 0xE9, 0x10, 0x4F, 0xED, 0x59, 0xCD, 0xEF, 0x1D, + 0x0E, 0xA7, 0x70, 0xB5, 0x1C, 0x62, 0xE5, 0x05, 0x88, 0x0C, 0xF3, 0x26, + 0x5D, 0xD8, 0x78, 0xA1, 0xF9, 0x79, 0x06, 0x9C, 0x7A, 0x5A, 0xEA, 0x30, + 0xCA, 0x16, 0x0F, 0x4E, 0xBE, 0x5F, 0x97, 0x58, 0xAA, 0x3F, 0x9B, 0xB0, + 0x32, 0xBE, 0xC8, 0x2C, 0x32, 0x70, 0xA1, 0xC3, 0xD9, 0x4A, 0xEB, 0x00, + 0xAF, 0xB2, 0x4E, 0x57, 0x7A, 0x2E, 0xE9, 0x68, 0xBD, 0x27, 0x09, 0x91, + 0xD6, 0xDC, 0xB5, 0x01, 0x5C, 0x6D, 0x1F, 0x98, 0x7C, 0x2E, 0x73, 0x41, + 0x8A, 0x09, 0x1D, 0x00, 0xE6, 0x5A, 0x9C, 0x4A, 0x6C, 0xEF, 0x59, 0x75, + 0x30, 0x70, 0x4C, 0xCF, 0xF1, 0x7F, 0x7B, 0x3F, 0xFA, 0x01, 0x0F, 0xED, + 0x29, 0x31, 0x5A, 0x5E, 0x62, 0x0D, 0x37, 0x52, 0xAB, 0x92, 0x04, 0x28, + 0xA6, 0xA8, 0x88, 0x63, 0x24, 0x0A, 0x38, 0x7F, 0x32, 0xCF, 0xC5, 0xC6, + 0xC0, 0x7C, 0x00, 0x77, 0x6C, 0x4F, 0x36, 0x82, 0xEF, 0x69, 0xF0, 0xEB, + 0xCC, 0x8C, 0x6D, 0x08, 0xFF, 0xCB, 0x03, 0x29, 0x8B, 0xEF, 0x0F, 0x45, + 0x81, 0xA3, 0xDF, 0x22, 0xEE, 0xB4, 0x72, 0x53, 0x20, 0xDC, 0x19, 0x6F, + 0x21, 0xEA, 0xF1, 0xF1, 0x51, 0x98, 0x3C, 0xA8, 0x48, 0x2E, 0x4C, 0xF9, + 0xEB, 0x10, 0x71, 0xFA, 0xF8, 0x87, 0x64, 0xE1, 0xBB, 0xAD, 0xD8, 0x12, + 0xE2, 0x8A, 0x1E, 0xFE, 0x48, 0x1C, 0x0C, 0xA6, 0x3D, 0xBD, 0x33, 0x54, + 0x8E, 0xD9, 0x88, 0x53, 0x55, 0x0D, 0x55, 0x62, 0x4F, 0x2D, 0x36, 0xE6, + 0xDF, 0x7C, 0x0F, 0xAE, 0x0E, 0x78, 0x11, 0xA3, 0x70, 0x65, 0x41, 0xE8, + 0x91, 0x36, 0xEE, 0xB6, 0xDD, 0xAB, 0xBA, 0x1F, 0x0D, 0x06, 0x48, 0x1F, + 0xE0, 0x4C, 0x12, 0xF6, 0xD2, 0x37, 0xC0, 0xBD, 0x5D, 0x34, 0x25, 0xE2, + 0xAB, 0x93, 0x4B, 0xD6, 0x17, 0x7B, 0x95, 0xD9, 0x2B, 0xFE, 0x60, 0xB0, + 0x32, 0xCD, 0x5F, 0x0F, 0x0B, 0x81, 0x58, 0xBC, 0x95, 0x9C, 0x4B, 0x81, + 0xBF, 0xD2, 0xA0, 0x64, 0xDB, 0xE8, 0xE0, 0x6A, 0x49, 0xFB, 0xC4, 0x99, + 0x59, 0x2F, 0x2B, 0xED, 0x21, 0x8D, 0xD7, 0xA7, 0x56, 0x04, 0x67, 0xC6, + 0x0C, 0x89, 0x58, 0x12, 0x5A, 0x5C, 0x27, 0x62, 0x79, 0x0C, 0x5E, 0xC3, + 0xCC, 0x99, 0x5A, 0xCF, 0x71, 0x99, 0x75, 0x2E, 0xBA, 0x1C, 0x28, 0xAA, + 0x64, 0x62, 0x17, 0xF9, 0xCD, 0x38, 0x1A, 0x0B, 0xE3, 0xF7, 0xF7, 0x98, + 0x4F, 0x0D, 0xB5, 0xF0, 0x03, 0x37, 0x68, 0x5F, 0x3D, 0xE8, 0x13, 0x01, + 0xE2, 0x36, 0xF9, 0xB6, 0x25, 0x41, 0xDE, 0x4C, 0x53, 0xD2, 0xD5, 0xB1, + 0xA1, 0x77, 0x1B, 0x9D, 0x3A, 0x67, 0x93, 0xCB, 0x00, 0xB9, 0xA0, 0x50, + 0x56, 0x00, 0xFF, 0xA6, 0xCC, 0x17, 0x5A, 0x4A, 0x5C, 0x98, 0xFA, 0x98, + 0x1E, 0x12, 0x60, 0x50, 0x4B, 0xA9, 0x91, 0x7E, 0x25, 0x9C, 0x30, 0x91, + 0xA9, 0x39, 0x22, 0xC3, 0xF8, 0x6D, 0xDC, 0xC7, 0xE7, 0x09, 0x4A, 0x56, + 0xCA, 0xD8, 0x3B, 0x4F, 0x4D, 0x2F, 0xC2, 0x2B, 0x93, 0x32, 0xE5, 0x47, + 0xEC, 0x14, 0x03, 0xC8, 0xB7, 0xE2, 0xA0, 0x84, 0xF7, 0x99, 0x51, 0x86, + 0x68, 0x08, 0x98, 0x02, 0x41, 0x29, 0x07, 0x56, 0x55, 0xE6, 0x6C, 0x74, + 0xC5, 0x61, 0x7B, 0xDB, 0x33, 0x01, 0xF8, 0xF0, 0xA9, 0x18, 0xFE, 0xC5, + 0x35, 0x8C, 0xB2, 0x80, 0xDA, 0xD0, 0x84, 0x8A, 0xFC, 0x4C, 0x3C, 0x3A, + 0x1F, 0x71, 0xF4, 0x46, 0x63, 0x60, 0x13, 0xF4, 0x1D, 0x82, 0xD7, 0xB0, + 0x48, 0x4F, 0x2E, 0x79, 0xF7, 0xEC, 0x06, 0x12, 0x7A, 0xD2, 0x94, 0x74, + 0x91, 0xC9, 0x68, 0x8A, 0xF0, 0x63, 0xD9, 0x18, 0x3C, 0x8B, 0x54, 0x94, + 0x12, 0x4F, 0xFE, 0x9F, 0x9D, 0x12, 0xFA, 0xAD, 0xEE, 0xD1, 0xFD, 0x56, + 0x31, 0x17, 0x5A, 0xC3, 0x09, 0xC1, 0x35, 0x53, 0x41, 0xEF, 0xF9, 0x9B, + 0x7E, 0xBE, 0xFC, 0xA8, 0x96, 0x6E, 0x8D, 0xFD, 0xB8, 0x42, 0xC3, 0xA7, + 0x78, 0xCB, 0xF9, 0x9B, 0xFB, 0x01, 0xCB, 0x9F, 0xA4, 0xA2, 0x0C, 0x80, + 0xB7, 0x4D, 0x01, 0x50, 0x2F, 0xD3, 0xC1, 0xD5, 0x4B, 0x01, 0xEE, 0xDF, + 0x08, 0x6A, 0xB2, 0xC6, 0x08, 0x49, 0x71, 0x89, 0xB3, 0xF0, 0xC1, 0x50, + 0x74, 0xAC, 0xFE, 0x7E, 0x82, 0xE7, 0xA6, 0x10, 0xF2, 0x0C, 0x5A, 0xEC, + 0xC2, 0xE8, 0x55, 0x40, 0xB0, 0x1E, 0x7F, 0x95, 0xF7, 0x39, 0x1C, 0xA7, + 0xEC, 0xEB, 0x81, 0xF4, 0xCB, 0x82, 0x1D, 0x94, 0x8C, 0xBF, 0xDA, 0xB7, + 0x65, 0x51, 0x05, 0x22, 0x92, 0x3C, 0x7A, 0x38, 0xB1, 0xBB, 0x14, 0xAF, + 0xB1, 0xFF, 0x8A, 0x98, 0x24, 0x1B, 0xE0, 0x51, 0x0B, 0x72, 0xD1, 0x2E, + 0x97, 0xE0, 0x4D, 0xA2, 0xFF, 0x0F, 0x30, 0xAC, 0x7A, 0xD2, 0x88, 0x6C, + 0xB4, 0xCE, 0x67, 0xC2, 0xF7, 0x18, 0x91, 0x1E, 0x1C, 0xF4, 0xFA, 0x0D, + 0xDC, 0x42, 0x3B, 0xA4, 0xB8, 0x48, 0xF3, 0x98, 0x94, 0x5C, 0x57, 0x98, + 0xA9, 0x71, 0x14, 0x5B, 0x79, 0xCF, 0x33, 0xAA, 0xE1, 0x19, 0x49, 0xFC, + 0x2E, 0x66, 0x2C, 0x6C, 0xEB, 0xB8, 0x71, 0x3B, 0x9C, 0x19, 0x14, 0x5C, + 0x95, 0xDB, 0x7D, 0x47, 0xB8, 0x54, 0x14, 0xC9, 0xA8, 0x38, 0xA3, 0x3A, + 0xF8, 0x40, 0xD6, 0x4F, 0x3E, 0x52, 0x48, 0x66, 0xED, 0xE9, 0xB8, 0xB7, + 0x03, 0x0E, 0x4B, 0x8F, 0x84, 0xDF, 0xA3, 0xE4, 0x7A, 0x97, 0xA6, 0xB8, + 0x9C, 0x97, 0xBF, 0x70, 0xDA, 0xAC, 0x71, 0x01, 0xAA, 0xDE, 0x0E, 0xFB, + 0xFA, 0xF1, 0xCF, 0x0D, 0x9C, 0x93, 0xEB, 0xE4, 0xF4, 0xAF, 0xB6, 0x1D, + 0x10, 0xB0, 0x0C, 0xDB, 0x80, 0xF2, 0x9A, 0x8C, 0xB5, 0x5F, 0x2C, 0xB1, + 0x67, 0xE9, 0x3A, 0xD7, 0xE4, 0xCF, 0x20, 0xE7, 0x06, 0x86, 0xFA, 0x23, + 0x8E, 0xBF, 0x85, 0x45, 0x2A, 0x4B, 0x53, 0x45, 0xF1, 0xA2, 0x6C, 0x2A, + 0x4F, 0x4D, 0x67, 0xED, 0x78, 0x15, 0x06, 0x43, 0x94, 0x44, 0xFB, 0x1C, + 0xD5, 0xDB, 0x88, 0x95, 0xD5, 0x53, 0x90, 0xBD, 0xF8, 0x7A, 0xD8, 0xED, + 0xE0, 0x3E, 0x86, 0xC9, 0x9D, 0xFC, 0xA7, 0x29, 0x94, 0x82, 0xC3, 0x71, + 0xB4, 0xE7, 0x77, 0x35, 0x48, 0x7A, 0xA0, 0x79, 0x8A, 0x68, 0x7F, 0xA2, + 0xDF, 0xDA, 0x34, 0x4D, 0x72, 0xD2, 0xB3, 0x51, 0xA6, 0x64, 0x84, 0xF5, + 0x01, 0x74, 0x87, 0x57, 0xA3, 0x3F, 0x25, 0x28, 0xAA, 0x88, 0x75, 0xFC, + 0xE6, 0x79, 0x62, 0xBF, 0xF8, 0xD7, 0xBE, 0x22, 0x13, 0xD2, 0xAD, 0x08, + 0x7D, 0x15, 0xF3, 0x9D, 0x74, 0xB6, 0x49, 0x53, 0xE7, 0x4C, 0xE9, 0x57, + 0x80, 0x5A, 0x8F, 0x5D, 0x75, 0xDE, 0x04, 0x59, 0x0B, 0x8C, 0xC6, 0x1B, + 0x7A, 0xFC, 0xF0, 0x42, 0xC2, 0x6A, 0x17, 0x3A, 0x19, 0x92, 0x66, 0xE3, + 0x04, 0x28, 0x85, 0x02, 0xA3, 0x2F, 0xA8, 0x3D, 0x92, 0x9F, 0xD4, 0xDF, + 0x24, 0x57, 0xF9, 0x61, 0x10, 0xD6, 0x6B, 0x32, 0x5F, 0x7F, 0xC6, 0xDD, + 0x58, 0x4D, 0x83, 0xF9, 0x27, 0x0E, 0xF9, 0x6D, 0x4F, 0x30, 0x32, 0x12, + 0x5A, 0xC5, 0xEA, 0x83, 0x35, 0x14, 0x23, 0x58, 0x66, 0x79, 0x5B, 0x44, + 0x44, 0x9E, 0xBE, 0xBF, 0x2D, 0x02, 0x76, 0x4A, 0x59, 0x2A, 0x1F, 0xC8, + 0xF6, 0x84, 0xD1, 0x87, 0x55, 0xE5, 0x3D, 0xF2, 0xCC, 0x63, 0xE0, 0x47, + 0x1F, 0x14, 0x00, 0x56, 0xF1, 0xF1, 0x7B, 0x45, 0xD2, 0xE6, 0xC9, 0x38, + 0x1C, 0xE1, 0x29, 0x3D, 0xF4, 0x1D, 0x2B, 0x3E, 0x67, 0x9C, 0x67, 0xE4, + 0x82, 0x40, 0x29, 0x55, 0xC4, 0x46, 0xBE, 0x6B, 0xA5, 0x2A, 0xDD, 0xFF, + 0xCA, 0xD0, 0xC9, 0x05, 0x03, 0xA0, 0x4F, 0x0D, 0xA0, 0xA5, 0x04, 0x26, + 0x02, 0x92, 0x16, 0x5C, 0x2D, 0x68, 0xDF, 0x06, 0x87, 0x79, 0x71, 0xA3, + 0x40, 0xB5, 0xCC, 0x1E, 0x71, 0x3C, 0x7F, 0x16, 0xFA, 0xA0, 0xA5, 0x58, + 0xD9, 0x53, 0x93, 0x31, 0x03, 0x28, 0x0A, 0x94, 0x41, 0xC1, 0xEE, 0x61, + 0x47, 0xE0, 0x02, 0x8E, 0x39, 0xEF, 0x6D, 0xA9, 0xD3, 0x00, 0xA0, 0x30, + 0x95, 0xF5, 0xFC, 0xBF, 0xC7, 0x6B, 0x8A, 0x32, 0x16, 0x9E, 0x50, 0xB0, + 0xEF, 0x0C, 0xF3, 0x55, 0x61, 0xD0, 0x21, 0xF7, 0x6B, 0xA0, 0xB9, 0xC9, + 0x69, 0xE7, 0x85, 0xF8, 0xE7, 0x69, 0xC4, 0xB5, 0x27, 0x01, 0x1B, 0xB1, + 0xAD, 0x09, 0x5A, 0xD0, 0x40, 0xC0, 0x1C, 0x34, 0x51, 0x23, 0x3F, 0xD2, + 0xD4, 0x94, 0xBA, 0x42, 0xA8, 0xC9, 0x4B, 0x84, 0x2B, 0x82, 0xDD, 0xDA, + 0x22, 0x14, 0xE0, 0x24, 0x53, 0x12, 0xD0, 0x67, 0x62, 0xC2, 0x4E, 0xF6, + 0x7A, 0xBA, 0xCB, 0xF1, 0xF0, 0xE4, 0x51, 0x2A, 0xA5, 0x48, 0x4C, 0xC6, + 0xC2, 0x30, 0x00, 0xEC, 0xEE, 0xEB, 0xBC, 0xE9, 0x76, 0x4E, 0x23, 0xB1, + 0xCE, 0x05, 0x40, 0x1F, 0x2D, 0x0E, 0xEB, 0x84, 0x96, 0x38, 0x16, 0x5B, + 0xCF, 0x4D, 0xFB, 0x1A, 0xB4, 0x74, 0x61, 0x7C, 0x4D, 0x67, 0x95, 0x79, + 0xB5, 0x81, 0x88, 0x32, 0xDA, 0x84, 0x9D, 0xC1, 0x53, 0x21, 0xDD, 0x0A, + 0xDE, 0x3C, 0xB3, 0xB5, 0xB8, 0x1A, 0xFC, 0x72, 0x7A, 0xB8, 0xEB, 0xC8, + 0xF6, 0x7A, 0x00, 0xDD, 0x2E, 0x7E, 0x52, 0x06, 0x66, 0x0C, 0xFF, 0x3F, + 0x8B, 0x16, 0x4B, 0x1A, 0x9B, 0x3C, 0x17, 0x5B, 0xD8, 0xCB, 0xA0, 0xCA, + 0xF9, 0x41, 0x36, 0xD6, 0xA6, 0x08, 0x6D, 0xFC, 0xD3, 0x77, 0x14, 0x58, + 0xF1, 0xB5, 0x3E, 0x54, 0xDB, 0xAC, 0x03, 0xAC, 0x11, 0x5C, 0x4D, 0xC6, + 0xB5, 0x03, 0x5A, 0xFF, 0x52, 0xA8, 0xDF, 0xDC, 0x39, 0xF3, 0x6A, 0xC8, + 0xB4, 0x23, 0x0B, 0x0B, 0x67, 0x1B, 0x02, 0xBA, 0x79, 0x03, 0x16, 0xB2, + 0xA9, 0xC3, 0xA1, 0x62, 0x6B, 0x96, 0x23, 0x14, 0x6D, 0x8F, 0x94, 0xF1, + 0xD2, 0xEA, 0x5B, 0x3A, 0x48, 0x79, 0x1E, 0x02, 0xCE, 0xE8, 0xF5, 0x2C, + 0x6A, 0xB2, 0x08, 0x62, 0xC6, 0x85, 0x09, 0x9E, 0x5A, 0xD0, 0xE5, 0x34, + 0x75, 0x81, 0xF5, 0xA7, 0x55, 0x6A, 0x31, 0x6E, 0x30, 0x08, 0x1B, 0xF9, + 0xF1, 0x5A, 0x33, 0x36, 0x3C, 0x7D, 0xA9, 0xB5, 0x91, 0x80, 0x06, 0x34, + 0x57, 0xD7, 0xC5, 0xA8, 0x74, 0x0F, 0x01, 0x27, 0x4C, 0x82, 0x98, 0xC6, + 0x6B, 0x4F, 0xC5, 0x7F, 0xFF, 0xAC, 0x13, 0x4A, 0xDA, 0x73, 0x97, 0xBF, + 0xEA, 0xA3, 0xF2, 0xBB, 0xE9, 0x51, 0x7D, 0x7E, 0xE6, 0xE9, 0x15, 0x85, + 0x1D, 0x72, 0x4A, 0xB8, 0xB7, 0x99, 0x3E, 0x9F, 0x71, 0x8F, 0x18, 0x56, + 0x9C, 0xBF, 0x45, 0x54, 0xB8, 0x14, 0x5C, 0x39, 0x7B, 0x93, 0xD8, 0x41, + 0xA7, 0x00, 0x1B, 0x74, 0x47, 0x29, 0x29, 0xB4, 0x42, 0xCF, 0x17, 0x69, + 0x43, 0xB2, 0x2E, 0x38, 0x1E, 0x11, 0xA7, 0x97, 0x6A, 0xB4, 0xB5, 0xDF, + 0x40, 0xE6, 0x75, 0x5B, 0xC0, 0xF0, 0x80, 0xC6, 0xFF, 0x73, 0xD5, 0x45, + 0x03, 0x04, 0x83, 0x17, 0xF4, 0x62, 0xBE, 0xF6, 0x4D, 0x25, 0x84, 0xD6, + 0xB2, 0xE3, 0x34, 0x49, 0xDE, 0x3D, 0x67, 0xF8, 0x7A, 0x7F, 0xFB, 0xF9, + 0xE5, 0x5E, 0xD1, 0x39, 0x8B, 0x9D, 0xFE, 0x7F, 0xE3, 0x0B, 0x8B, 0x48, + 0xA0, 0x9E, 0x15, 0x82, 0x57, 0xAF, 0xBA, 0xFE, 0x65, 0xFE, 0x07, 0x7A, + 0x3B, 0x46, 0xDE, 0x94, 0x7B, 0x69, 0x9C, 0xB0, 0x48, 0x68, 0x14, 0x45, + 0xF6, 0x85, 0xBB, 0x95, 0x94, 0x5E, 0x2D, 0x6C, 0x38, 0x2C, 0xF8, 0x65, + 0x13, 0x88, 0xA7, 0xEA, 0x05, 0xE7, 0x25, 0xAF, 0x13, 0xC8, 0x0F, 0xA3, + 0xDB, 0x1E, 0x58, 0x28, 0x95, 0xBD, 0x34, 0x50, 0x06, 0xEF, 0xBB, 0xC9, + 0x93, 0xA3, 0xD4, 0x2D, 0x4F, 0x07, 0x4F, 0x1D, 0xB8, 0xAF, 0x42, 0x59, + 0x34, 0x8A, 0x33, 0xB0, 0xD5, 0x4E, 0x55, 0x79, 0x0E, 0x53, 0xCD, 0xA4, + 0xE0, 0x96, 0x23, 0x8B, 0x1A, 0x04, 0xB0, 0x48, 0x82, 0xE8, 0xEC, 0xA8, + 0xB8, 0x52, 0xAF, 0xD0, 0xFB, 0xD1, 0xF1, 0xD0, 0x50, 0xFC, 0x7B, 0x27, + 0x38, 0xFC, 0x7A, 0xDE, 0x83, 0x50, 0x7E, 0xD3, 0xE6, 0xF5, 0x45, 0x76, + 0xC5, 0x2D, 0x50, 0xB4, 0x69, 0xF5, 0x10, 0x91, 0xBD, 0x18, 0xB1, 0x49, + 0xE4, 0x6A, 0x17, 0x45, 0xB1, 0xF1, 0x20, 0xC7, 0xE0, 0xC2, 0x02, 0x2D, + 0x3C, 0x91, 0x16, 0x26, 0x25, 0xDE, 0x49, 0x88, 0xB3, 0xD7, 0x91, 0x7D, + 0x21, 0xC1, 0x08, 0xDC, 0xEF, 0x52, 0x15, 0xD8, 0xE5, 0x3B, 0x58, 0xC6, + 0xD9, 0x97, 0x0E, 0x7E, 0xD8, 0x94, 0x4F, 0xCE, 0xCA, 0xD7, 0xC7, 0x3C, + 0xEF, 0xD1, 0x34, 0x3D, 0x78, 0xB6, 0x67, 0xA7, 0x6A, 0x13, 0x9D, 0x1E, + 0x0A, 0x50, 0x67, 0xA0, 0xBF, 0x88, 0xAA, 0x34, 0xB4, 0xAA, 0x47, 0x71, + 0x48, 0x78, 0x34, 0x42, 0xC8, 0x13, 0x1A, 0x96, 0x3E, 0x29, 0xF9, 0x9B, + 0xD3, 0x87, 0xC0, 0x64, 0xD6, 0x5C, 0x76, 0xBF, 0xD4, 0xF2, 0x85, 0xE7, + 0xB6, 0x64, 0x68, 0x47, 0x54, 0xE8, 0x1C, 0x3A, 0x06, 0x06, 0x83, 0xE6, + 0xF2, 0x43, 0x53, 0x2A, 0x8F, 0xFE, 0x8C, 0x04, 0xB0, 0xAB, 0x70, 0xE0, + 0xC7, 0xE3, 0x72, 0x4E, 0xB8, 0x2E, 0xA5, 0x8F, 0x1E, 0xDB, 0x80, 0xE6, + 0x46, 0xDD, 0xE5, 0x55, 0xAB, 0xBB, 0x1C, 0xB4, 0x98, 0xD3, 0x79, 0xAF, + 0xBE, 0x10, 0x9E, 0xB1, 0x33, 0x47, 0xDE, 0xF3, 0x46, 0x10, 0xAB, 0xBB, + 0xF1, 0xDD, 0x24, 0x4E, 0x91, 0xBF, 0x6E, 0xDD, 0xE5, 0x88, 0x46, 0xDB, + 0x44, 0x07, 0x69, 0x38, 0x2A, 0x8D, 0x48, 0xEE, 0xF3, 0xF0, 0xBE, 0xEE, + 0xA4, 0x67, 0x07, 0x25, 0x4D, 0x39, 0x76, 0x74, 0x17, 0xBB, 0x59, 0xA7, + 0x99, 0x49, 0xE7, 0x22, 0x73, 0xCD, 0x83, 0x4E, 0xA5, 0xDD, 0x65, 0xB7, + 0x36, 0x3D, 0xDF, 0x77, 0xF9, 0xB2, 0x5C, 0xD8, 0xC7, 0x0C, 0xCF, 0x7C, + 0x33, 0x7E, 0x28, 0x32, 0xDD, 0xAB, 0x5C, 0x27, 0x80, 0x54, 0x4C, 0xCF, + 0xF4, 0x92, 0xD5, 0xFC, 0x28, 0x15, 0x91, 0x7B, 0x77, 0x28, 0x0E, 0x85, + 0x63, 0xE2, 0x38, 0x6C, 0x10, 0xAE, 0x55, 0xB1, 0x76, 0x69, 0xCA, 0x0E, + 0x1E, 0x86, 0x76, 0x6B, 0x40, 0xC3, 0xA9, 0xD5, 0xDC, 0xB3, 0x2E, 0xBE, + 0x1F, 0xE9, 0x3A, 0x2C, 0xB8, 0x0B, 0xEC, 0xB4, 0xCA, 0x9E, 0x47, 0xCD, + 0x0D, 0x49, 0xC3, 0xB9, 0x28, 0xD9, 0xBF, 0xCD, 0xB9, 0xFA, 0x66, 0xC5, + 0x89, 0xD3, 0xDF, 0x04, 0xC1, 0x06, 0x31, 0xAF, 0xA4, 0xBC, 0xEE, 0xEB, + 0x33, 0xF6, 0x2B, 0x8B, 0xCB, 0xC4, 0x51, 0x84, 0x8D, 0x94, 0xFD, 0xDC, + 0xA8, 0xBC, 0x23, 0xDE, 0x48, 0xF1, 0xE6, 0x20, 0x20, 0x6E, 0x88, 0x6C, + 0x69, 0xA0, 0x3D, 0x3B, 0x7F, 0xE1, 0x35, 0x16, 0x79, 0x23, 0x8E, 0x23, + 0xED, 0x54, 0x7A, 0x1C, 0x90, 0x6C, 0x35, 0xD9, 0x31, 0xD6, 0x9B, 0xE6, + 0x18, 0x41, 0x07, 0x4C, 0x0A, 0xDC, 0x57, 0x8F, 0xEB, 0x04, 0xA2, 0xB9, + 0xDD, 0xC1, 0xBD, 0xEF, 0xD2, 0x51, 0x3D, 0x9D, 0x8B, 0x3F, 0xEC, 0x34, + 0xF3, 0x0D, 0xB3, 0xAD, 0xBC, 0xAD, 0x62, 0xAA, 0x02, 0xF8, 0x7C, 0x21, + 0xD9, 0x8F, 0x65, 0x08, 0xA1, 0x0E, 0x5F, 0x5D, 0xA5, 0x24, 0x5E, 0xF4, + 0x9C, 0x8A, 0x24, 0xA8, 0xF7, 0xF6, 0x0A, 0xAD, 0x28, 0xAE, 0x21, 0x50, + 0xA2, 0x2B, 0x1B, 0x6C, 0xAF, 0xDC, 0x63, 0xC4, 0x88, 0x54, 0xB6, 0x77, + 0xE0, 0xC5, 0x27, 0xD6, 0xF3, 0x92, 0xE1, 0x81, 0x19, 0x99, 0x0E, 0x83, + 0x3A, 0x17, 0x10, 0xF2, 0xB5, 0x74, 0x95, 0xB2, 0x87, 0x98, 0xBC, 0x75, + 0xFA, 0x54, 0x2C, 0x8B, 0x26, 0xAD, 0xE9, 0xA7, 0xCA, 0x28, 0x89, 0xB9, + 0x77, 0x5B, 0xF7, 0xC2, 0x75, 0x42, 0x73, 0x76, 0x83, 0xCA, 0x26, 0xF5, + 0xB9, 0x70, 0x23, 0x6F, 0x5F, 0x35, 0x91, 0xCE, 0x6A, 0x5D, 0x57, 0xB8, + 0xE0, 0x3C, 0x91, 0x6F, 0xC4, 0xB7, 0x30, 0x6F, 0xDD, 0xBD, 0xD7, 0x5F, + 0x1A, 0xD2, 0xE4, 0xE7, 0x0D, 0x2B, 0x02, 0x2F, 0x61, 0x9E, 0x22, 0x4C, + 0xFE, 0xBD, 0x1A, 0xDD, 0xE5, 0x67, 0xA2, 0x6F, 0x90, 0x4C, 0x31, 0x5E, + 0x6A, 0x9F, 0x8E, 0xE8, 0xC1, 0xB2, 0x4E, 0xE4, 0xCA, 0x2B, 0xB8, 0x4A, + 0xE8, 0xFF, 0x06, 0x91, 0x76, 0x2E, 0x51, 0x3F, 0x1B, 0xA5, 0x2A, 0x1C, + 0xEB, 0xD4, 0x07, 0x00, 0x03, 0x40, 0x33, 0x6A, 0xD8, 0xB7, 0x5A, 0xF0, + 0xF8, 0xF7, 0xCD, 0xCB, 0x3D, 0xB8, 0x98, 0xB4, 0x56, 0xE9, 0x20, 0xCC, + 0x45, 0x0F, 0xA3, 0x76, 0xB1, 0x2D, 0x41, 0x9A, 0x89, 0x24, 0x7C, 0xAC, + 0x62, 0xCC, 0xCF, 0xE5, 0xA1, 0xEB, 0x7E, 0x41, 0x64, 0x7D, 0x6D, 0xF1, + 0x05, 0xC2, 0x65, 0xE9, 0xF8, 0xE8, 0xDB, 0xA0, 0xB8, 0x1A, 0x87, 0x32, + 0x9C, 0xF7, 0x48, 0xA4, 0x83, 0x66, 0x12, 0xAC, 0x9D, 0x9D, 0xE4, 0x7B, + 0xF4, 0x7A, 0x2B, 0x28, 0xB7, 0x12, 0x3B, 0xAC, 0x7D, 0xF4, 0xB6, 0x72, + 0x87, 0x4C, 0xFC, 0x5F, 0x75, 0x4C, 0xE5, 0xE1, 0x6D, 0x10, 0xF8, 0xD5, + 0xA2, 0x3F, 0x04, 0xB2, 0x33, 0x6A, 0x0A, 0x3C, 0x45, 0x95, 0x77, 0x5F, + 0x20, 0x9E, 0x78, 0x91, 0xEB, 0x72, 0x6B, 0x90, 0x78, 0x9C, 0x5D, 0x47, + 0xE4, 0x9A, 0xC5, 0x10, 0xB8, 0xE1, 0x1D, 0x5A, 0x7D, 0xF3, 0x55, 0x8F, + 0x66, 0x54, 0x1D, 0x97, 0x05, 0x3F, 0xFC, 0xDA, 0x29, 0x04, 0x57, 0x3F, + 0xD0, 0x52, 0x12, 0x3C, 0xBA, 0xF5, 0x52, 0x02, 0xE6, 0x37, 0x3A, 0xF9, + 0xAD, 0xB7, 0x2F, 0x81, 0x8D, 0x14, 0xCC, 0x1C, 0x8C, 0x3A, 0x9D, 0x54, + 0x5D, 0x75, 0xEC, 0x15, 0x29, 0xB4, 0xCE, 0x44, 0xDA, 0x71, 0x8B, 0xD1, + 0xB6, 0x77, 0x08, 0x2E, 0x80, 0x43, 0x57, 0xF5, 0x94, 0x37, 0xFC, 0x11, + 0x1C, 0x75, 0x62, 0xA1, 0x17, 0xB2, 0x5E, 0x54, 0xA6, 0xBD, 0xAF, 0x0B, + 0xB4, 0x38, 0x77, 0xE8, 0x08, 0xC7, 0x93, 0xDD, 0x96, 0x83, 0x91, 0x1D, + 0x4B, 0x5F, 0xE5, 0xB3, 0xC8, 0x28, 0xA9, 0x51, 0x5D, 0xCB, 0xCE, 0x6F, + 0x7E, 0xCF, 0xBE, 0x4D, 0x5D, 0x46, 0xB0, 0x02, 0xFA, 0xAF, 0x6E, 0x0A, + 0x5B, 0xA4, 0x6D, 0x35, 0xEB, 0x78, 0x31, 0xB3, 0x36, 0x05, 0xD2, 0x84, + 0xBD, 0xB7, 0x38, 0x47, 0xCA, 0x47, 0x07, 0xA5, 0x9B, 0x67, 0x45, 0x3E, + 0x10, 0x82, 0x05, 0xE7, 0x7B, 0x80, 0xA9, 0x55, 0x34, 0x44, 0x6A, 0xC7, + 0x84, 0x24, 0x4F, 0xAA, 0xD5, 0x7D, 0x78, 0xF7, 0x16, 0x43, 0xC1, 0xD5, + 0x20, 0x83, 0xD7, 0xB0, 0x51, 0x14, 0xC6, 0xF4, 0xD5, 0xCB, 0x62, 0xDE, + 0xE4, 0xAD, 0x47, 0xB5, 0xE5, 0x57, 0xCA, 0x9D, 0x76, 0x10, 0x35, 0xDE, + 0x8F, 0xDA, 0x2B, 0x0A, 0xF8, 0x65, 0x90, 0xDB, 0xF5, 0x3D, 0x2E, 0xDE, + 0x1F, 0xF5, 0x6C, 0xF4, 0x2B, 0x2E, 0x18, 0x1C, 0xD5, 0x97, 0xC2, 0xDE, + 0xC2, 0xD8, 0xE1, 0x79, 0x43, 0xC8, 0xFC, 0x9A, 0x2A, 0xF3, 0x14, 0x28, + 0x0E, 0xB6, 0x08, 0xE1, 0xE8, 0xF1, 0x76, 0xB9, 0xA5, 0x57, 0x5C, 0x81, + 0x19, 0x27, 0xA5, 0x80, 0x16, 0x0A, 0x5E, 0xDC, 0xCC, 0xE1, 0xBD, 0x8B, + 0xC5, 0xEC, 0x07, 0xFF, 0x53, 0x3B, 0xB1, 0x1D, 0xAD, 0x02, 0xAB, 0xB6, + 0x04, 0x7B, 0xA1, 0x2E, 0x3F, 0x07, 0x19, 0xD5, 0x82, 0xDA, 0x77, 0x22, + 0x80, 0x31, 0x20, 0xDA, 0x83, 0xDB, 0x56, 0x22, 0x88, 0x89, 0x44, 0x53, + 0x87, 0x67, 0xAE, 0x30, 0x50, 0x4C, 0xD0, 0x90, 0x8B, 0x45, 0x23, 0xCE, + 0x41, 0x39, 0x03, 0xDE, 0xE6, 0xD3, 0xFC, 0x28, 0x19, 0x3E, 0x0B, 0xD2, + 0x2E, 0x96, 0xAC, 0x8D, 0xD0, 0x8E, 0x29, 0x48, 0x58, 0xA2, 0xD4, 0x17, + 0x65, 0x4B, 0x75, 0x4C, 0x48, 0x43, 0x34, 0x43, 0x3A, 0xDD, 0xCE, 0xC5, + 0xF0, 0xF4, 0x6C, 0xB8, 0xDD, 0xF3, 0x3E, 0x34, 0x50, 0x2A, 0x8C, 0x6C, + 0x90, 0x96, 0x1E, 0x21, 0x61, 0x13, 0x42, 0xA5, 0x12, 0x0F, 0x73, 0x02, + 0xBA, 0x9E, 0xFF, 0x47, 0x83, 0xDB, 0xE4, 0x16, 0x90, 0xD9, 0x0A, 0x40, + 0x84, 0xCA, 0xD2, 0x03, 0x05, 0xD8, 0x64, 0xB2, 0x3D, 0x8A, 0x42, 0x02, + 0x8C, 0x88, 0xDF, 0xEE, 0x5A, 0x47, 0xF1, 0xF4, 0x82, 0x6E, 0x61, 0xD5, + 0xF5, 0xA3, 0x58, 0x21, 0x6B, 0xEE, 0x8F, 0xE2, 0xEB, 0x07, 0x39, 0xA9, + 0x71, 0xFC, 0x55, 0x39, 0x37, 0x4D, 0xD2, 0x41, 0xC5, 0x33, 0xF7, 0xF5, + 0xED, 0x67, 0xA7, 0x42, 0xAD, 0x61, 0xEC, 0xE2, 0x9D, 0xB9, 0x13, 0x4B, + 0xF5, 0x14, 0xB0, 0xE1, 0x47, 0x06, 0x2B, 0x65, 0xCD, 0x09, 0x31, 0x46, + 0x47, 0xFE, 0x1B, 0xB5, 0xD8, 0x53, 0x04, 0x28, 0x5C, 0x3F, 0x46, 0x28, + 0xCD, 0xB9, 0x87, 0x9A, 0xB0, 0xE2, 0x49, 0xA6, 0xCF, 0x56, 0x8D, 0x52, + 0xD5, 0x05, 0xCD, 0x0C, 0x3D, 0x45, 0x11, 0x18, 0x84, 0x38, 0x98, 0xD4, + 0xD3, 0x2D, 0xD0, 0x2A, 0xAD, 0xF4, 0x7A, 0xAB, 0xBF, 0xF4, 0xA8, 0x9F, + 0x7A, 0xB7, 0x73, 0xC0, 0xEC, 0xF5, 0x3E, 0x87, 0x9F, 0x12, 0xEF, 0xB8, + 0xAC, 0x19, 0x34, 0xB9, 0x72, 0xB9, 0x6B, 0xF3, 0xBB, 0x08, 0x8E, 0x7F, + 0xEC, 0x24, 0x1A, 0xF4, 0x00, 0xC0, 0xD4, 0x27, 0xB1, 0x3B, 0x05, 0x68, + 0xD4, 0x30, 0xD2, 0x21, 0x63, 0xD8, 0x33, 0x6C, 0xDC, 0xA9, 0x3E, 0x7C, + 0xA4, 0xE0, 0x43, 0xC9, 0x80, 0xA3, 0xCA, 0x35, 0x72, 0x10, 0xF1, 0xEA, + 0xCD, 0xA2, 0xDB, 0x02, 0x5A, 0xEE, 0x52, 0x5E, 0x31, 0x33, 0x2C, 0x68, + 0x3A, 0xBE, 0x34, 0x5E, 0xCE, 0xF2, 0x23, 0xE7, 0x4D, 0xCF, 0x71, 0xD4, + 0x3E, 0x8C, 0x4E, 0x08, 0x82, 0xF5, 0x01, 0xE9, 0xF8, 0x35, 0xFC, 0x88, + 0xFE, 0xC1, 0x1E, 0x67, 0x95, 0x44, 0x45, 0xF8, 0x67, 0xB8, 0x91, 0xF0, + 0x8E, 0x6C, 0xE4, 0x57, 0xA6, 0xDB, 0x56, 0xE3, 0x6C, 0x18, 0x37, 0x0C, + 0x48, 0x49, 0xB5, 0x7E, 0x51, 0x7A, 0x46, 0x0E, 0xD4, 0x8E, 0x2B, 0x93, + 0x63, 0x6B, 0xEC, 0xE5, 0x5B, 0x72, 0x49, 0xB2, 0x3D, 0x24, 0xAA, 0x59, + 0xAF, 0x1B, 0x0A, 0x82, 0xE8, 0x56, 0xC1, 0x56, 0x46, 0x9F, 0xB2, 0x5B, + 0x8D, 0x4E, 0x45, 0x34, 0x49, 0xE6, 0xDA, 0xEF, 0x43, 0x53, 0x11, 0x41, + 0x12, 0x82, 0xB9, 0xA8, 0xCC, 0x95, 0x8E, 0x5F, 0xD3, 0xB9, 0xA0, 0x53, + 0xC5, 0x6E, 0x75, 0xC0, 0x50, 0xF8, 0xC8, 0xA8, 0x19, 0xEE, 0x17, 0x6F, + 0xD0, 0xB1, 0xA6, 0xD3, 0xC5, 0x39, 0x5E, 0x68, 0xCA, 0x7D, 0x17, 0x17, + 0x46, 0x83, 0xF3, 0x84, 0x05, 0x36, 0xB8, 0xE2, 0xD4, 0x20, 0xC0, 0x86, + 0xCE, 0xB3, 0xC2, 0x4D, 0xE8, 0xE8, 0x1A, 0x7E, 0x06, 0x1C, 0xE1, 0xA9, + 0x55, 0xCB, 0x2A, 0x88, 0xC5, 0x5A, 0xE1, 0x15, 0x74, 0x1E, 0x31, 0x0E, + 0xCE, 0xA9, 0x7D, 0xA4, 0xCB, 0xF1, 0x7B, 0xCD, 0x56, 0x54, 0xF2, 0xDC, + 0xD7, 0xE8, 0x59, 0x5C, 0xC1, 0x47, 0x6D, 0xB5, 0x3A, 0xB7, 0x4F, 0x30, + 0x90, 0x10, 0x7F, 0xD7, 0x16, 0xC2, 0xD5, 0xA2, 0x36, 0x10, 0x1A, 0x71, + 0x19, 0x4A, 0x6F, 0xFF, 0x5E, 0x4E, 0xC1, 0x2B, 0xC1, 0x96, 0xE4, 0x2A, + 0x2A, 0xEB, 0x60, 0x9C, 0x4B, 0x11, 0x97, 0xED, 0xEA, 0x6E, 0x83, 0xA3, + 0x8B, 0x17, 0xEB, 0x42, 0xC8, 0x18, 0x40, 0x61, 0xB0, 0x26, 0x72, 0xAC, + 0xA2, 0x49, 0xA4, 0x9C, 0xD1, 0x32, 0x8E, 0xCF, 0x80, 0x71, 0xF1, 0x20, + 0x47, 0xA5, 0x28, 0xD4, 0xC8, 0x1E, 0xF1, 0xB0, 0xD2, 0x15, 0x21, 0xBF, + 0x9C, 0x57, 0x88, 0xED, 0x30, 0x6F, 0x69, 0x3A, 0xB4, 0x14, 0x16, 0x98, + 0x17, 0xC1, 0xC2, 0x36, 0x16, 0x54, 0x02, 0xB7, 0x42, 0x0C, 0x88, 0x45, + 0x5E, 0x90, 0x89, 0xD6, 0xE3, 0xDB, 0x0F, 0xF6, 0x07, 0xC8, 0x5B, 0x89, + 0x8E, 0x24, 0xA0, 0x9D, 0xB7, 0xC6, 0xEC, 0x7E, 0xDB, 0xC1, 0xAC, 0x38, + 0xB3, 0x26, 0xD9, 0xFE, 0x8A, 0xC2, 0x76, 0xDD, 0x01, 0x41, 0x30, 0x2D, + 0x75, 0xDC, 0xE8, 0x60, 0x0B, 0xEF, 0xCC, 0xBA, 0x41, 0x85, 0xFC, 0x34, + 0x59, 0x4C, 0xA4, 0x13, 0x10, 0x7D, 0xF6, 0xE0, 0x00, 0x14, 0x86, 0x95, + 0xF0, 0x00, 0x41, 0xDF, 0xBD, 0xB5, 0x00, 0xDB, 0xDC, 0x8F, 0x5B, 0x75, + 0xDE, 0x5F, 0x75, 0xFC, 0x11, 0x7A, 0xC0, 0x0D, 0xA2, 0xDB, 0xB8, 0x53, + 0x59, 0x0B, 0xFE, 0xAF, 0x45, 0xDD, 0xB7, 0x72, 0x87, 0x2C, 0x4B, 0x04, + 0xCE, 0xC3, 0x37, 0x54, 0x9D, 0x62, 0xC3, 0x6A, 0x4D, 0x71, 0xAB, 0xF4, + 0x85, 0xA5, 0x89, 0xD1, 0xC9, 0xFB, 0x8C, 0x23, 0x70, 0x36, 0x75, 0x74, + 0x5A, 0x6C, 0xD4, 0x50, 0x5C, 0xD0, 0x49, 0xCC, 0x9B, 0x27, 0x8C, 0x99, + 0xC9, 0x55, 0x9C, 0x48, 0xD1, 0x40, 0x91, 0xD9, 0x1F, 0xA2, 0x4F, 0xBB, + 0x87, 0x42, 0xA5, 0xDA, 0xC5, 0xCB, 0x13, 0xA4, 0x9C, 0xFB, 0xD1, 0xD7, + 0xB9, 0x90, 0xEF, 0xF5, 0x03, 0x92, 0xCD, 0x7B, 0xF9, 0x76, 0xF4, 0xF8, + 0x76, 0x2E, 0x99, 0x13, 0x33, 0x61, 0xE1, 0x72, 0x92, 0x4A, 0x9E, 0x8F, + 0x20, 0xCE, 0x37, 0xC7, 0x17, 0x0F, 0xFF, 0x25, 0xDF, 0x16, 0xD4, 0xAF, + 0xD2, 0x47, 0x65, 0x4E, 0x2B, 0x0E, 0xBE, 0x45, 0x58, 0x8D, 0xFA, 0x7D, + 0x59, 0x9D, 0xAE, 0x4E, 0x7D, 0x9F, 0x8B, 0x40, 0x5E, 0x1D, 0x0C, 0x23, + 0xAE, 0xC9, 0xFD, 0x9E, 0x61, 0x38, 0xF8, 0x81, 0xC5, 0x71, 0xD4, 0x6B, + 0x24, 0xB6, 0x96, 0xDC, 0xC9, 0x1B, 0xD1, 0x7C, 0x84, 0xFD, 0x79, 0xEE, + 0x7B, 0x34, 0x82, 0xA9, 0x01, 0xB1, 0x76, 0x61, 0x65, 0xDA, 0x74, 0x94, + 0x93, 0x38, 0x1D, 0x23, 0x3E, 0x69, 0x24, 0x4C, 0xA4, 0x9F, 0x4D, 0x04, + 0xDA, 0x99, 0x32, 0x56, 0x81, 0x8D, 0x75, 0xDE, 0x53, 0x09, 0x51, 0x6E, + 0x31, 0x81, 0x0B, 0x1B, 0x18, 0xA3, 0xFF, 0xDF, 0x76, 0x7D, 0x57, 0x97, + 0x62, 0x8C, 0x48, 0x3B, 0x99, 0x1C, 0xA2, 0x8A, 0x16, 0xDA, 0x2D, 0x07, + 0xEB, 0xE8, 0x2F, 0xAE, 0x4E, 0xCF, 0xB4, 0xA1, 0xAD, 0xB2, 0xC5, 0xEB, + 0x2C, 0x69, 0x8B, 0x3F, 0x02, 0xD8, 0x8E, 0x17, 0x5E, 0xED, 0x51, 0xD9, + 0x2A, 0x95, 0xAA, 0x3C, 0x61, 0x18, 0x67, 0x69, 0x8B, 0x1B, 0x5D, 0x60, + 0x88, 0xCF, 0x6C, 0x61, 0x96, 0xD5, 0x2C, 0xCD, 0xF2, 0x8A, 0xA5, 0x8E, + 0x66, 0xC2, 0x18, 0x27, 0x51, 0xA6, 0x4E, 0xDE, 0x95, 0x18, 0xBD, 0xC7, + 0xDC, 0x52, 0x9F, 0xC0, 0x74, 0xBA, 0xD8, 0xF2, 0x1C, 0x2B, 0x5C, 0x01, + 0x29, 0xE4, 0x9D, 0xEE, 0xD5, 0xF6, 0xFF, 0x0E, 0x7C, 0x0D, 0x9E, 0x07, + 0x29, 0xF5, 0xED, 0xD7, 0x37, 0xA0, 0x57, 0x1A, 0x54, 0x3E, 0x15, 0xB6, + 0xEC, 0x97, 0x27, 0x32, 0xEA, 0x32, 0xC6, 0xB6, 0xBB, 0xF6, 0x2F, 0x0C, + 0x12, 0x74, 0x0E, 0xFA, 0x75, 0x94, 0xD0, 0x11, 0x79, 0xEE, 0xE4, 0xBD, + 0x9C, 0x0E, 0x34, 0xFA, 0xA9, 0x66, 0x14, 0x89, 0xDA, 0x0E, 0x20, 0x65, + 0x4A, 0x68, 0x5B, 0xE8, 0xAE, 0x51, 0x4F, 0x9E, 0x18, 0x5D, 0x6F, 0x7C, + 0x16, 0xD3, 0x76, 0x6C, 0xBE, 0x5E, 0x2D, 0x95, 0x95, 0x0B, 0x08, 0x07, + 0x35, 0xD3, 0x09, 0xCB, 0x68, 0x31, 0x13, 0x0C, 0x5B, 0xED, 0x4A, 0xE2, + 0x0F, 0x8B, 0x5B, 0x68, 0xDC, 0x33, 0xA6, 0x83, 0x98, 0x6B, 0x85, 0x06, + 0x16, 0xF3, 0xFE, 0xED, 0x60, 0x4E, 0x52, 0x6D, 0x71, 0x91, 0x88, 0x43, + 0xBE, 0xEF, 0xC4, 0xAD, 0x13, 0x42, 0x18, 0x50, 0x71, 0x34, 0x1A, 0x18, + 0xE0, 0x83, 0x5F, 0xD0, 0xE3, 0x68, 0xAD, 0x85, 0xFB, 0x81, 0x9A, 0xCE, + 0x38, 0x25, 0xFE, 0xDF, 0xE8, 0xE9, 0xE4, 0x89, 0xE9, 0x38, 0x6D, 0x99, + 0xA4, 0x7C, 0x05, 0xB6, 0xB6, 0x5C, 0x96, 0x70, 0xDE, 0x62, 0xE5, 0x6F, + 0x91, 0x19, 0xFF, 0x84, 0x14, 0x5E, 0xD4, 0xCC, 0xE9, 0x99, 0x89, 0xF5, + 0x72, 0x72, 0x83, 0x9D, 0xEF, 0x8B, 0xA3, 0x63, 0xEA, 0x76, 0x7A, 0xF2, + 0xD5, 0x1D, 0x50, 0xC9, 0x1B, 0xBC, 0x4D, 0x77, 0xB3, 0xDA, 0x1E, 0x8B, + 0x1B, 0x39, 0x04, 0xB5, 0x1A, 0x42, 0xDD, 0x18, 0xE5, 0xE3, 0x5F, 0xFD, + 0x05, 0x9B, 0xBE, 0x01, 0xA5, 0xAD, 0x0A, 0x9A, 0x62, 0xBB, 0xE2, 0x43, + 0xAB, 0x14, 0x96, 0xD2, 0xCC, 0xBE, 0xA9, 0x0C, 0xE8, 0xBF, 0x40, 0x04, + 0x01, 0xD5, 0x34, 0x5F, 0x25, 0x25, 0x2B, 0xD2, 0x76, 0xA4, 0x60, 0x6F, + 0xF2, 0xE6, 0x5C, 0x35, 0x44, 0x06, 0x36, 0x8D, 0xBA, 0xD5, 0xD7, 0x9F, + 0x13, 0xC8, 0xF1, 0x0B, 0x0A, 0x40, 0xED, 0xD2, 0x40, 0x93, 0xCE, 0x4E, + 0x15, 0x78, 0xF1, 0x92, 0x59, 0xDB, 0xE9, 0x1B, 0x1E, 0x91, 0xF3, 0xCA, + 0x22, 0x00, 0x28, 0xE6, 0xCE, 0xF1, 0x4E, 0x77, 0x2B, 0xF5, 0xFC, 0x2E, + 0x90, 0xAA, 0xFA, 0x47, 0x00, 0xEC, 0x42, 0x45, 0x8B, 0xD0, 0xD8, 0xAA, + 0x06, 0x0A, 0x79, 0xD3, 0xBB, 0xAE, 0xDA, 0xE6, 0xF2, 0x7E, 0x15, 0x34, + 0xA7, 0x10, 0xB9, 0xAD, 0xC7, 0x24, 0x25, 0xFF, 0xF1, 0xDD, 0x12, 0x68, + 0xFA, 0x93, 0xAF, 0x55, 0xEB, 0xEC, 0xA0, 0xAB, 0x48, 0x66, 0xBB, 0x2C, + 0x15, 0x9A, 0x36, 0xD9, 0xC4, 0x6C, 0x6B, 0x9E, 0x8B, 0x55, 0x67, 0x03, + 0xE4, 0xAE, 0x23, 0xB0, 0x89, 0x92, 0xDD, 0x04, 0x3A, 0xEB, 0xFA, 0x43, + 0x00, 0xA5, 0x03, 0x32, 0x25, 0x86, 0x02, 0x37, 0xCD, 0xCA, 0xF2, 0x88, + 0x22, 0x41, 0x93, 0x31, 0x75, 0x6C, 0xA1, 0x66, 0xD5, 0xC8, 0x26, 0x2C, + 0x30, 0x4F, 0xED, 0xF2, 0x07, 0xA6, 0x4F, 0x85, 0x0C, 0xBC, 0xEC, 0xA6, + 0xE5, 0x8A, 0xBA, 0x1C, 0xCA, 0xF6, 0x22, 0x65, 0xDD, 0x7A, 0x65, 0x85, + 0x2C, 0x5A, 0xF3, 0xDC, 0xAD, 0xB6, 0xC3, 0xF8, 0x03, 0x2A, 0x0B, 0x01, + 0xB2, 0x38, 0x96, 0xF7, 0x2F, 0xFA, 0xD6, 0x6B, 0xD9, 0x5C, 0x0C, 0xCD, + 0x3F, 0xE4, 0xB9, 0x8B, 0xA7, 0x51, 0x23, 0x8A, 0xCE, 0x08, 0xD5, 0xDB, + 0x19, 0xF6, 0xF4, 0x92, 0xF8, 0xE2, 0x6B, 0xB0, 0xC6, 0x3D, 0x2E, 0xE7, + 0xF1, 0x84, 0xA1, 0x12, 0x07, 0x14, 0x50, 0xBB, 0x86, 0x8D, 0x59, 0xBD, + 0x6C, 0xE3, 0x3B, 0xA6, 0xEF, 0xF9, 0xD4, 0x3B, 0x1F, 0x1D, 0x39, 0xBF, + 0xB6, 0xFD, 0xF2, 0x22, 0x00, 0xBC, 0xF5, 0xA8, 0x48, 0xFF, 0x65, 0xF4, + 0xD0, 0xD5, 0x5E, 0x47, 0x47, 0x82, 0xF6, 0xC5, 0x88, 0x95, 0xE7, 0x65, + 0xA7, 0x89, 0x2D, 0x6C, 0x1C, 0xCA, 0x2D, 0x30, 0xE7, 0xD5, 0x77, 0xBA, + 0xA4, 0x08, 0x03, 0x8B, 0x2D, 0x2D, 0x5A, 0xA3, 0xA5, 0x1D, 0x00, 0x62, + 0x61, 0xC8, 0x6D, 0x9B, 0xF9, 0x61, 0xF1, 0x0A, 0x8C, 0x2B, 0x48, 0x10, + 0x66, 0x9D, 0x41, 0xC8, 0x5A, 0xE3, 0x7C, 0xC1, 0x24, 0x09, 0x93, 0xE3, + 0x71, 0x53, 0x2D, 0x44, 0xA5, 0x9A, 0xE1, 0xCF, 0xBE, 0x89, 0x35, 0x1E, + 0x7A, 0x22, 0x71, 0xD4, 0x68, 0x4D, 0x7F, 0xBD, 0x4D, 0x67, 0x76, 0x03, + 0xA8, 0x56, 0x12, 0xC7, 0x6B, 0x84, 0x81, 0xBB, 0x0B, 0x3A, 0x6A, 0xE2, + 0x0F, 0x9D, 0xA0, 0xD6, 0x2E, 0x88, 0xA9, 0x64, 0xE7, 0xF0, 0x28, 0x78, + 0xCD, 0x26, 0xBB, 0x4B, 0xE5, 0xFB, 0xB8, 0xD1, 0x63, 0xA2, 0x99, 0x76, + 0x50, 0xCE, 0xF6, 0xC1, 0x96, 0xE0, 0x1A, 0x4E, 0x1B, 0xC6, 0x09, 0x58, + 0x3B, 0xE6, 0xFF, 0x75, 0x96, 0x80, 0x8D, 0x85, 0x2B, 0x90, 0x01, 0x06, + 0x8D, 0xB0, 0x42, 0x7E, 0xF5, 0x25, 0xAD, 0x24, 0xB1, 0x88, 0x9C, 0x1A, + 0x24, 0x8A, 0x68, 0x5A, 0xD5, 0x24, 0x94, 0x78, 0xB2, 0x1A, 0xB9, 0xC3, + 0xA2, 0x19, 0x92, 0x91, 0x1A, 0x77, 0x66, 0xD6, 0x6B, 0xF5, 0x5A, 0x49, + 0xC7, 0xAA, 0x44, 0x41, 0x43, 0xF3, 0xE9, 0xC3, 0x5F, 0x16, 0x43, 0x7D, + 0x15, 0xF5, 0x0A, 0xC2, 0x8A, 0x50, 0x64, 0x01, 0x7B, 0x8C, 0x09, 0x85, + 0xDD, 0x22, 0xE3, 0x9E, 0xA9, 0x46, 0x1E, 0x02, 0xE4, 0x01, 0xB0, 0x5D, + 0xB8, 0xE8, 0x14, 0xEB, 0x4E, 0x29, 0x23, 0xDE, 0xAE, 0x62, 0x45, 0x01, + 0xC8, 0x25, 0x87, 0x18, 0xB3, 0xF9, 0xAD, 0x03, 0x3E, 0x59, 0x49, 0x71, + 0xA9, 0xC7, 0x27, 0xD7, 0xBA, 0x65, 0xCD, 0x27, 0x1E, 0x50, 0xE0, 0xD8, + 0x8F, 0x84, 0x6B, 0x0F, 0x6C, 0x12, 0x36, 0x04, 0x6B, 0x5D, 0xE3, 0x7D, + 0xD5, 0x53, 0xAF, 0xBC, 0xB0, 0x82, 0x21, 0x58, 0xC9, 0xFF, 0xDF, 0x87, + 0x18, 0x09, 0x4B, 0x79, 0x50, 0xB4, 0x5F, 0x9B, 0xF7, 0x94, 0xAA, 0x7F, + 0xB5, 0x03, 0x29, 0x58, 0x60, 0xD4, 0xC9, 0x39, 0xC1, 0x58, 0x21, 0xE8, + 0xF5, 0x2D, 0x49, 0x58, 0xB1, 0x25, 0xE9, 0x82, 0x15, 0xB7, 0xDD, 0x8E, + 0x3D, 0x28, 0x1F, 0x97, 0xE5, 0xDA, 0x2B, 0x33, 0xB9, 0x2F, 0x08, 0x29, + 0x80, 0x87, 0xA2, 0xB7, 0x80, 0x33, 0x2A, 0xE5, 0xD5, 0x49, 0x7B, 0x84, + 0x13, 0x66, 0x7D, 0xE3, 0x1B, 0x92, 0x9F, 0x90, 0xCE, 0x74, 0x67, 0x4C, + 0xC3, 0x74, 0xC0, 0x75, 0x86, 0x63, 0x4C, 0x5E, 0xA1, 0x42, 0xAC, 0xC7, + 0x9B, 0x65, 0x17, 0x23, 0x6D, 0x50, 0x19, 0xF9, 0x99, 0x15, 0xA8, 0x73, + 0x0E, 0x28, 0xBA, 0x2C, 0x9A, 0xC0, 0x35, 0x13, 0x16, 0xBC, 0x12, 0x09, + 0x0F, 0xF3, 0x0C, 0xE3, 0xE1, 0x27, 0x63, 0x75, 0x60, 0xD3, 0xA8, 0xB9, + 0xAD, 0x10, 0x18, 0xC3, 0x52, 0x36, 0xED, 0xF4, 0xA4, 0x22, 0x4C, 0xC0, + 0x24, 0x36, 0xD5, 0xBC, 0xDF, 0xD5, 0x5A, 0xC2, 0xA1, 0x23, 0x6F, 0x2F, + 0x1A, 0xA2, 0x31, 0x97, 0x24, 0xB8, 0x67, 0xD7, 0x4B, 0x53, 0x50, 0x19, + 0x6A, 0xDF, 0x40, 0x21, 0xCB, 0x2F, 0x43, 0xD1, 0xD2, 0x68, 0x6B, 0x76, + 0x07, 0x8B, 0xA4, 0xC8, 0xD0, 0x5E, 0xAF, 0x22, 0x51, 0x13, 0x34, 0x1F, + 0x26, 0xAC, 0x7D, 0xC2, 0x6E, 0x6D, 0x21, 0x98, 0xFC, 0x3B, 0xC2, 0x95, + 0xAD, 0x74, 0xCB, 0xF0, 0xC0, 0xB7, 0xD0, 0xAE, 0x86, 0x46, 0x5D, 0x84, + 0xED, 0xEB, 0xB8, 0x64, 0x66, 0x2A, 0xA7, 0xA1, 0xE3, 0xCB, 0x48, 0x7D, + 0xD8, 0x2E, 0xCE, 0x7B, 0x37, 0xD2, 0x24, 0xB5, 0x80, 0x31, 0x0C, 0x77, + 0x24, 0x4E, 0x96, 0x59, 0x99, 0x05, 0x80, 0xCF, 0x13, 0x15, 0x4A, 0x97, + 0x43, 0x6F, 0x45, 0xB9, 0xE8, 0x45, 0x46, 0x90, 0x98, 0x49, 0xC1, 0x83, + 0x85, 0x4B, 0x67, 0x7E, 0x58, 0x78, 0x9E, 0x69, 0x9C, 0xDF, 0x1F, 0xEC, + 0xC5, 0x01, 0xB3, 0x5D, 0x51, 0xF9, 0xCE, 0x84, 0x19, 0x5C, 0x67, 0xC1, + 0xCE, 0x26, 0x4A, 0xAD, 0xBF, 0x23, 0x00, 0x43, 0x78, 0x3C, 0x2A, 0x0C, + 0xAE, 0xFC, 0x0A, 0x9A, 0x46, 0x2D, 0x37, 0x80, 0xCB, 0xB2, 0xBE, 0x8B, + 0x5D, 0xAE, 0x21, 0x11, 0xAC, 0xDE, 0x6F, 0xC1, 0x8D, 0xFB, 0xA1, 0xCF, + 0xBA, 0x72, 0xCF, 0x81, 0xD7, 0x74, 0x1A, 0x10, 0x82, 0x2A, 0x5F, 0xFB, + 0xE0, 0x22, 0xD5, 0x7B, 0x5A, 0x62, 0xB3, 0x4B, 0x5D, 0x94, 0x9C, 0xFE, + 0xFE, 0x7E, 0xFE, 0xC9, 0x1F, 0xA7, 0x9B, 0xBB, 0x8F, 0x42, 0x26, 0x8E, + 0x96, 0x70, 0x2C, 0xD0, 0x20, 0xE3, 0xC7, 0xC0, 0x29, 0x4C, 0xCE, 0x37, + 0x67, 0x77, 0x51, 0x22, 0x43, 0x83, 0xEA, 0x36, 0x85, 0xEA, 0xCD, 0x08, + 0x28, 0xC7, 0x36, 0x8E, 0xF6, 0x5F, 0x34, 0x65, 0x02, 0x61, 0xAC, 0xB5, + 0x42, 0xE3, 0xD6, 0x8D, 0x9B, 0xFC, 0x2F, 0x5A, 0xBA, 0xC4, 0x84, 0x10, + 0x42, 0xCE, 0xBB, 0x8C, 0x48, 0xF6, 0xD1, 0x0A, 0xDA, 0x45, 0x8D, 0x47, + 0x6C, 0x18, 0xBB, 0x87, 0xB6, 0x35, 0xDB, 0xDE, 0x01, 0x79, 0x5E, 0x0C, + 0x94, 0xFC, 0xF0, 0x9B, 0x61, 0x77, 0xEF, 0x6C, 0x36, 0xE9, 0x85, 0x54, + 0xC8, 0x37, 0x1F, 0x35, 0x85, 0x8B, 0x22, 0x53, 0x02, 0xF4, 0xBA, 0x09, + 0x5E, 0xD9, 0x4A, 0x74, 0xE5, 0x62, 0x7C, 0xE0, 0x41, 0xC9, 0x02, 0xA2, + 0xAB, 0x9E, 0x0B, 0x53, 0xB7, 0x04, 0xAF, 0xBF, 0x4A, 0xC3, 0x88, 0x53, + 0x13, 0xE5, 0xED, 0xC7, 0x2D, 0x35, 0x4E, 0x7F, 0xA5, 0x34, 0xA7, 0xB3, + 0x3B, 0xEB, 0x7B, 0x60, 0xB1, 0x0B, 0xB3, 0xA0, 0x32, 0x02, 0xBB, 0x31, + 0x34, 0x7B, 0xE5, 0x91, 0x1F, 0x48, 0xE0, 0x7F, 0x94, 0x95, 0x3C, 0xA4, + 0x36, 0x86, 0x31, 0x3A, 0x77, 0xA0, 0xDA, 0x50, 0x15, 0xB9, 0x13, 0xA0, + 0x35, 0x27, 0x70, 0xCC, 0x19, 0xF3, 0x89, 0x22, 0x7C, 0x35, 0xF1, 0xF0, + 0xCE, 0xCF, 0x3B, 0x15, 0x39, 0xB7, 0xE1, 0x11, 0xB4, 0xFC, 0x4E, 0x02, + 0x60, 0x05, 0xBB, 0x7E, 0x08, 0x01, 0x8B, 0xB5, 0x77, 0x87, 0x70, 0x60, + 0xDB, 0x38, 0x52, 0x31, 0x6B, 0x11, 0x41, 0xBF, 0x1B, 0xCB, 0x67, 0x84, + 0xC9, 0x7B, 0xA1, 0xBA, 0xA3, 0x2F, 0x21, 0xEC, 0x0D, 0x89, 0x5A, 0x75, + 0x36, 0x20, 0x82, 0xC6, 0xC1, 0x93, 0x12, 0xD6, 0x11, 0x22, 0xBF, 0x9F, + 0x0E, 0x59, 0xFC, 0xFB, 0xA0, 0x20, 0x47, 0xC7, 0x9A, 0x98, 0xB8, 0x1F, + 0x95, 0x1D, 0x4C, 0x5B, 0x97, 0xEF, 0x92, 0x40, 0xAB, 0xB7, 0x21, 0x60, + 0xE4, 0x65, 0xCF, 0xAC, 0xD8, 0x34, 0x91, 0x83, 0xD2, 0x71, 0xAA, 0xFC, + 0xAB, 0xA8, 0xF5, 0x6A, 0x05, 0x86, 0x01, 0x56, 0x72, 0x8F, 0x5B, 0xAA, + 0x51, 0x6B, 0x3F, 0xA3, 0x32, 0xA3, 0xE4, 0x99, 0xED, 0x38, 0x43, 0x46, + 0x8D, 0x61, 0x80, 0x88, 0xC3, 0xEF, 0xAA, 0xF6, 0xAA, 0x6F, 0x34, 0xA1, + 0xD7, 0x81, 0x4C, 0x9C, 0xD7, 0xEC, 0xE0, 0x9E, 0x26, 0x6B, 0x2C, 0xF8, + 0xC0, 0xD5, 0x0B, 0xA1, 0x73, 0xA7, 0xBD, 0x4B, 0x68, 0xD0, 0xFB, 0x75, + 0xF3, 0x1C, 0x9C, 0x26, 0xC3, 0x60, 0xB2, 0x11, 0x81, 0xFE, 0x12, 0x13, + 0xC4, 0x6B, 0xE5, 0x52, 0x72, 0x00, 0x26, 0x4E, 0x7A, 0xFF, 0x2C, 0x20, + 0xCB, 0x32, 0xAA, 0xE4, 0xEE, 0x6B, 0x89, 0x52, 0xC5, 0x2B, 0xDC, 0xFA, + 0x1B, 0x52, 0x4D, 0x8E, 0x02, 0xDB, 0x84, 0x4E, 0x7C, 0x37, 0xBA, 0xFF, + 0xDC, 0x8D, 0x3F, 0xC6, 0xBE, 0x5C, 0x1D, 0x85, 0xF3, 0xE3, 0x4A, 0x83, + 0x28, 0x61, 0xB3, 0xC0, 0xF6, 0x05, 0x8B, 0x8A, 0xE8, 0xED, 0x3E, 0x92, + 0x70, 0x9A, 0xFB, 0xF3, 0x5B, 0x39, 0x3A, 0x3B, 0x3E, 0x33, 0x25, 0x01, + 0x15, 0x86, 0x5B, 0x17, 0x14, 0x42, 0xBD, 0x83, 0xD5, 0x8B, 0x7E, 0xA8, + 0xFC, 0xF9, 0x26, 0x1D, 0xEC, 0xD9, 0xE4, 0x25, 0xCC, 0x3A, 0x3A, 0xD7, + 0x07, 0x7C, 0x59, 0x87, 0xC2, 0x4F, 0x7C, 0x7E, 0xDD, 0x4F, 0x02, 0x4B, + 0x46, 0xBA, 0xFD, 0x1A, 0x26, 0x46, 0x01, 0x3C, 0x26, 0xDF, 0x38, 0x03, + 0xA5, 0x0E, 0xF0, 0x8B, 0xC8, 0xDD, 0xE1, 0x37, 0xD5, 0xDB, 0x51, 0x1B, + 0x9C, 0x7B, 0x81, 0x12, 0x15, 0xCA, 0x6D, 0x85, 0xDB, 0x02, 0x2A, 0xA3, + 0x2B, 0x52, 0xAA, 0x05, 0xE9, 0xCA, 0x42, 0xCA, 0x01, 0x4B, 0xBF, 0x2C, + 0x82, 0x5F, 0x4E, 0x9E, 0xE2, 0xCB, 0x2D, 0xAD, 0x64, 0xC4, 0xA6, 0xC1, + 0xFB, 0xA8, 0xA7, 0x7F, 0x46, 0xC3, 0xA9, 0xF5, 0xC1, 0x68, 0x5F, 0x54, + 0x18, 0x2F, 0xD4, 0x5A, 0xD1, 0x94, 0x71, 0x52, 0x90, 0x33, 0xD0, 0xD9, + 0xF2, 0x05, 0x83, 0x08, 0x42, 0x77, 0xE5, 0x57, 0x6D, 0x78, 0xB9, 0x20, + 0x92, 0x1C, 0xB0, 0x64, 0x39, 0xE1, 0xC8, 0x27, 0x33, 0xB6, 0x24, 0x3D, + 0x8E, 0xE3, 0x6D, 0x41, 0x9A, 0x4C, 0x36, 0x11, 0xB2, 0x7D, 0x5C, 0xD3, + 0x4B, 0x56, 0x42, 0x1E, 0xB3, 0xD4, 0x1E, 0x55, 0xFE, 0x0C, 0x1B, 0x91, + 0x30, 0x74, 0x3C, 0x2C, 0x98, 0x58, 0xD7, 0x0D, 0xA3, 0xCD, 0x17, 0x07, + 0xBD, 0xDC, 0x31, 0x7C, 0xCE, 0x89, 0x9E, 0xDB, 0xDF, 0x39, 0x52, 0x9B, + 0x8B, 0x02, 0x78, 0xAD, 0xD8, 0xA7, 0xB3, 0xE4, 0x81, 0xE4, 0xFB, 0x41, + 0xE6, 0x64, 0x56, 0x8F, 0x86, 0x80, 0xF4, 0x67, 0x20, 0x40, 0x72, 0xFD, + 0xCC, 0x36, 0x15, 0xDA, 0xB7, 0x2E, 0xD8, 0x4F, 0x25, 0x54, 0x50, 0xA9, + 0xD0, 0x5B, 0x1A, 0x7D, 0xB0, 0xA6, 0xDF, 0x5D, 0xB4, 0x1B, 0x13, 0x3A, + 0xA2, 0x46, 0xEF, 0xE7, 0x53, 0x60, 0xF4, 0x20, 0xF1, 0x51, 0x31, 0x5A, + 0x36, 0xB1, 0xA6, 0xA7, 0xDA, 0x9E, 0x26, 0x73, 0xEC, 0x8B, 0x65, 0xD8, + 0x64, 0x85, 0x27, 0x51, 0x27, 0xB1, 0xEB, 0x4B, 0xBB, 0x78, 0x0C, 0xD0, + 0xF5, 0xE4, 0xEC, 0x52, 0xEB, 0x0E, 0xEB, 0x13, 0x3C, 0x1E, 0xD7, 0x35, + 0x88, 0x5D, 0x98, 0x11, 0x9D, 0x0B, 0x75, 0xEC, 0xEC, 0x67, 0x42, 0xB5, + 0x4C, 0xF6, 0xF0, 0x4C, 0xA2, 0xE1, 0x38, 0xF4, 0x55, 0x95, 0xCB, 0x54, + 0x0F, 0xD3, 0xE8, 0x3C, 0xF2, 0x39, 0x9E, 0xD6, 0x34, 0x46, 0x21, 0x85, + 0xD5, 0x63, 0xE8, 0x4B, 0x34, 0xAA, 0x31, 0x6E, 0xA7, 0xD0, 0xA9, 0xC7, + 0x54, 0x54, 0x62, 0x00, 0x9B, 0xB5, 0x89, 0x94, 0x8F, 0x6C, 0x0C, 0xD5, + 0x6C, 0x23, 0x13, 0xCD, 0x58, 0x6E, 0xCA, 0x9A, 0xF1, 0x08, 0x24, 0x94, + 0xA3, 0x80, 0xD9, 0x2F, 0xA9, 0x32, 0x1D, 0x3A, 0x3F, 0x67, 0xCB, 0xD5, + 0x7D, 0x4D, 0x89, 0x56, 0x5C, 0xE5, 0xDC, 0x37, 0x99, 0x27, 0x3E, 0x66, + 0x82, 0x59, 0x3F, 0xF2, 0x68, 0xE2, 0xC4, 0xA9, 0xE9, 0xD8, 0xFB, 0x5E, + 0x8E, 0x22, 0x0E, 0x77, 0x5F, 0x65, 0x9B, 0x91, 0xDC, 0x59, 0xC4, 0x91, + 0x30, 0x44, 0x24, 0x7A, 0x74, 0x49, 0xA3, 0xA1, 0x4C, 0x2A, 0xBF, 0xC3, + 0xD7, 0x21, 0x21, 0x2A, 0xA9, 0x8C, 0x5F, 0x45, 0xDA, 0x78, 0x5E, 0x55, + 0x7F, 0x7C, 0x41, 0xD3, 0x6D, 0x0B, 0xBE, 0x83, 0xA8, 0x5E, 0x08, 0xF5, + 0xEC, 0xCC, 0xFD, 0x21, 0xB3, 0x1D, 0x6A, 0xCC, 0xF9, 0x52, 0xF3, 0x89, + 0x96, 0x2A, 0x70, 0xAB, 0x63, 0x62, 0xA3, 0xB4, 0xE7, 0x70, 0xE9, 0xDF, + 0x4C, 0xED, 0x52, 0xA0, 0x24, 0x38, 0x58, 0xF1, 0xC6, 0x5B, 0x28, 0xA0, + 0x8F, 0x84, 0x36, 0x60, 0xFB, 0x17, 0xAA, 0x27, 0xB1, 0xA5, 0x71, 0xE8, + 0x1E, 0xDF, 0xB9, 0x0A, 0x0D, 0x15, 0x83, 0xF6, 0xE1, 0xF2, 0x51, 0x8F, + 0x92, 0x67, 0x63, 0xAB, 0xD1, 0x2A, 0x29, 0x77, 0x2D, 0xF0, 0x1E, 0x0E, + 0x19, 0xCC, 0x4E, 0x9D, 0x8F, 0xAA, 0xDE, 0xC1, 0x15, 0x1A, 0xBD, 0x19, + 0x79, 0xD0, 0x61, 0x51, 0x2D, 0x23, 0x82, 0x8E, 0x2C, 0xA3, 0x00, 0x9E, + 0x91, 0x83, 0xD4, 0x61, 0x6E, 0x53, 0x1B, 0x81, 0xBD, 0x07, 0x69, 0x24, + 0xE7, 0xF7, 0xD4, 0x5B, 0x65, 0x72, 0xE2, 0x0F, 0x05, 0x41, 0xD5, 0xD6, + 0x5E, 0x9D, 0xF3, 0xF0, 0xA0, 0xF5, 0x7C, 0xC9, 0x2F, 0x0C, 0x87, 0xEC, + 0x13, 0xDB, 0x79, 0x70, 0x89, 0x0C, 0x67, 0x40, 0xC9, 0xCA, 0xF3, 0xE0, + 0xEA, 0x12, 0xF1, 0x92, 0xD4, 0x02, 0x71, 0x79, 0xE6, 0xF7, 0xC6, 0xC5, + 0x27, 0x4A, 0x9D, 0xAC, 0x32, 0x6A, 0x44, 0xD9, 0x01, 0x8D, 0x01, 0x1F, + 0x2A, 0xD7, 0xE5, 0x7F, 0x32, 0x51, 0x9F, 0xB6, 0x36, 0x8A, 0x98, 0x4E, + 0xA1, 0x0D, 0xA3, 0xCD, 0x3C, 0xF7, 0xDF, 0x30, 0x0A, 0xD9, 0x2A, 0x6A, + 0xD6, 0x97, 0x14, 0x34, 0x0C, 0xA1, 0xC5, 0x87, 0x1B, 0x63, 0x4D, 0xBA, + 0x23, 0x9E, 0x3D, 0x6E, 0x4F, 0x80, 0x3D, 0x32, 0x28, 0x1D, 0x51, 0x8F, + 0x63, 0xCA, 0xA6, 0x5A, 0x77, 0xB8, 0xB9, 0xA2, 0xE5, 0x05, 0x8C, 0xE9, + 0xE3, 0xC7, 0xC8, 0xF0, 0x43, 0x14, 0x29, 0x7E, 0x70, 0x23, 0x77, 0x18, + 0x2D, 0x3A, 0x20, 0x14, 0x1F, 0x26, 0x0F, 0x46, 0x33, 0x0A, 0x6A, 0x6B, + 0xCA, 0x62, 0xB0, 0xF0, 0xCB, 0xB4, 0x48, 0xFA, 0xB2, 0x84, 0x55, 0x0B, + 0x45, 0x35, 0xC2, 0x47, 0x65, 0x72, 0x4B, 0x78, 0x54, 0x29, 0xD3, 0xD6, + 0x44, 0xF9, 0xA5, 0x83, 0xA7, 0xA7, 0x04, 0x31, 0x34, 0xA8, 0x3B, 0x8B, + 0xCD, 0x13, 0xA2, 0x00, 0xCB, 0x61, 0x9D, 0x9E, 0x40, 0xE1, 0xDB, 0x75, + 0x47, 0x12, 0xE8, 0x89, 0x4C, 0x31, 0xA5, 0x4D, 0xDC, 0xA5, 0x6D, 0x79, + 0x47, 0x3E, 0x58, 0xB5, 0x91, 0x9B, 0x02, 0xEC, 0x82, 0x28, 0xCF, 0x11, + 0x5C, 0x12, 0xFA, 0x88, 0xDE, 0x9C, 0x15, 0x4D, 0xCF, 0xD4, 0x24, 0xAD, + 0x5F, 0x16, 0xF0, 0xD0, 0x88, 0xC0, 0xF9, 0x77, 0x97, 0xE0, 0xC5, 0x69, + 0x20, 0x18, 0x4E, 0x9C, 0x2A, 0x19, 0x66, 0x42, 0xD5, 0x5C, 0xD3, 0x87, + 0x6B, 0xB2, 0xB0, 0xDE, 0x78, 0xB3, 0x8C, 0x5D, 0x90, 0xC3, 0x25, 0x3D, + 0xA3, 0xCC, 0xB0, 0x4C, 0x97, 0x0F, 0x6D, 0x29, 0x11, 0x42, 0xB3, 0x86, + 0x99, 0x87, 0x37, 0x5A, 0x45, 0x93, 0xE0, 0x88, 0xC9, 0x35, 0x05, 0x48, + 0xCA, 0x84, 0xAB, 0x13, 0xF8, 0x06, 0xA4, 0x0B, 0x72, 0x2A, 0x8D, 0xEB, + 0xA0, 0x89, 0x3D, 0x0B, 0x00, 0x1A, 0x17, 0x87, 0xCD, 0x95, 0x30, 0x2E, + 0xC5, 0xF3, 0xA6, 0x42, 0x5C, 0x63, 0x7A, 0xF6, 0xD0, 0xE3, 0x6D, 0x9C, + 0xC8, 0xF7, 0x83, 0xC3, 0xED, 0x9F, 0xFA, 0xF0, 0xC6, 0xE0, 0xFE, 0xCD, + 0xFB, 0xC8, 0x18, 0x83, 0x77, 0xAA, 0xDA, 0x58, 0x17, 0xD2, 0x7B, 0x73, + 0x62, 0x2D, 0xC0, 0xE1, 0xF8, 0xA9, 0x3E, 0x06, 0x97, 0x3F, 0x9B, 0xF4, + 0xBB, 0x16, 0x25, 0x31, 0x69, 0x7C, 0xD6, 0xD6, 0xB3, 0x01, 0x35, 0x41, + 0x77, 0x25, 0x71, 0xDE, 0x2D, 0x2C, 0xEF, 0x9E, 0x9A, 0xD6, 0x4C, 0xD9, + 0x8C, 0x0C, 0xD1, 0xD8, 0xA2, 0x48, 0x59, 0x6D, 0x41, 0x15, 0xED, 0xAC, + 0x98, 0xA8, 0x47, 0x3D, 0x4B, 0x7D, 0xE7, 0x14, 0xB7, 0xAB, 0x7F, 0xA9, + 0xCD, 0xAA, 0x49, 0x65, 0x48, 0x34, 0x8C, 0x65, 0xD6, 0x38, 0x5D, 0xE1, + 0x14, 0xFC, 0x4F, 0xE6, 0xE4, 0x87, 0x21, 0xE2, 0x54, 0x08, 0x91, 0x22, + 0xED, 0x3E, 0x87, 0xEE, 0x31, 0x9A, 0xC4, 0x40, 0x78, 0x46, 0x2E, 0xF9, + 0xDB, 0xED, 0x64, 0xD7, 0x10, 0xA4, 0x99, 0x3E, 0x43, 0x43, 0xB2, 0x54, + 0x20, 0x20, 0x7D, 0x93, 0x34, 0x0D, 0x0C, 0x86, 0x52, 0x1A, 0x9D, 0x19, + 0x12, 0x88, 0xDD, 0x14, 0xAE, 0x57, 0x72, 0x75, 0x26, 0xDF, 0xC4, 0xA1, + 0x90, 0x49, 0xC7, 0x0C, 0xE1, 0xA6, 0x11, 0x2C, 0x00, 0xBF, 0xB6, 0xF5, + 0xF2, 0x21, 0x4B, 0x14, 0xB4, 0x07, 0xBE, 0x04, 0x72, 0xCB, 0xBE, 0xB6, + 0x24, 0x27, 0xCF, 0x7D, 0x75, 0x2B, 0x31, 0xD6, 0xA6, 0x84, 0x55, 0x11, + 0xD7, 0x91, 0x5A, 0x15, 0x9C, 0xB0, 0x9D, 0x7E, 0xB1, 0xC6, 0xB7, 0xA5, + 0xE0, 0xB2, 0x88, 0x98, 0x9C, 0x2F, 0x67, 0x29, 0xDA, 0x88, 0xC9, 0xA5, + 0x27, 0x53, 0x4D, 0x8F, 0x0B, 0xF8, 0x08, 0x2C, 0xE7, 0x88, 0x26, 0x9C, + 0xD9, 0x10, 0xD9, 0xE4, 0xDB, 0xA4, 0xF7, 0xAD, 0x9F, 0x4E, 0x65, 0x3E, + 0xF4, 0xA4, 0x57, 0x18, 0x2C, 0xDD, 0x0E, 0x6D, 0x26, 0xA3, 0xC2, 0x66, + 0x0D, 0x71, 0x79, 0x22, 0x8E, 0xD5, 0x6A, 0xFC, 0xF4, 0x71, 0x83, 0x27, + 0xEF, 0x24, 0x50, 0xBA, 0x54, 0x1A, 0xE4, 0x98, 0x84, 0x3F, 0x27, 0xE3, + 0x29, 0x3E, 0x45, 0xC1, 0xB1, 0x00, 0x88, 0x54, 0x4D, 0xF0, 0x87, 0x7B, + 0x30, 0x7B, 0xA1, 0xC7, 0x6C, 0xD7, 0x48, 0xA0, 0xFF, 0xCB, 0x89, 0x92, + 0x6D, 0x0E, 0x05, 0x3A, 0xCE, 0x95, 0x30, 0x23, 0xD7, 0x42, 0x77, 0xA9, + 0x5E, 0xF5, 0xD9, 0xEB, 0x5A, 0xB7, 0x83, 0xB9, 0x91, 0x14, 0x51, 0x13, + 0x96, 0x1E, 0x13, 0x5B, 0x28, 0x56, 0xFB, 0x4C, 0x6C, 0x7B, 0x87, 0x4A, + 0xF5, 0x44, 0xD3, 0xC6, 0xC0, 0x17, 0x77, 0x45, 0x61, 0x60, 0x5E, 0x1D, + 0xA6, 0x0C, 0x19, 0x70, 0x95, 0x46, 0x7D, 0xD2, 0x3B, 0x94, 0xD5, 0x9E, + 0xD9, 0xB9, 0x1C, 0x02, 0x2D, 0xF5, 0x52, 0xEF, 0x77, 0x84, 0x1A, 0xA0, + 0x65, 0x7A, 0x61, 0xFF, 0x5A, 0xDD, 0x1E, 0xB6, 0xD5, 0xE7, 0xEC, 0xF6, + 0x33, 0x54, 0xB7, 0xE7, 0x33, 0x30, 0xB0, 0xB4, 0x61, 0x0F, 0xAA, 0xFE, + 0xAC, 0xDB, 0x9D, 0x3A, 0x2B, 0x78, 0x82, 0x93, 0x8B, 0x74, 0x86, 0x6A, + 0x07, 0xDF, 0x82, 0x1F, 0x35, 0xFA, 0xFD, 0x65, 0x39, 0x52, 0x87, 0xD9, + 0x20, 0x05, 0xF5, 0x56, 0x85, 0x70, 0xFA, 0x46, 0x54, 0x59, 0xE5, 0xA0, + 0xF3, 0x14, 0x09, 0x95, 0x5F, 0x9B, 0x56, 0x45, 0xA5, 0x32, 0x64, 0x88, + 0x98, 0x4A, 0x1D, 0x91, 0xDF, 0x32, 0x22, 0xAF, 0xCD, 0x3D, 0x8B, 0x5E, + 0x77, 0x59, 0x41, 0x25, 0xA0, 0xCC, 0x7F, 0xC6, 0x6B, 0x61, 0x60, 0x0F, + 0xCD, 0x0A, 0xC9, 0x55, 0x6E, 0x0E, 0xB7, 0x6B, 0x85, 0xC8, 0xD9, 0xD6, + 0x26, 0x93, 0x0C, 0x3D, 0x1C, 0xEE, 0xEB, 0x19, 0x8F, 0x98, 0xF0, 0x90, + 0x88, 0x06, 0x05, 0xF0, 0x0D, 0xE7, 0xC9, 0x5B, 0x86, 0xE2, 0x7E, 0x2C, + 0x4A, 0xD3, 0x80, 0xB6, 0x74, 0x54, 0x7F, 0x03, 0x12, 0x38, 0xB3, 0xA2, + 0xBB, 0x43, 0x24, 0xDA, 0x41, 0x6D, 0xEE, 0x99, 0x4D, 0xD1, 0xEC, 0x69, + 0x37, 0xE7, 0x41, 0xF3, 0x9D, 0xAA, 0xD8, 0xC1, 0xA5, 0xE0, 0x11, 0x3F, + 0x47, 0xB4, 0x2E, 0xAD, 0x09, 0x84, 0x56, 0x0F, 0x4E, 0x0C, 0xB1, 0x78, + 0xE6, 0xE0, 0x33, 0xA0, 0x32, 0xDA, 0xF6, 0x67, 0x80, 0xF0, 0xB3, 0xE9, + 0x2F, 0x41, 0x23, 0xF2, 0x79, 0xE3, 0xD2, 0x59, 0x7A, 0x0D, 0x4A, 0x58, + 0x29, 0x90, 0x92, 0xCA, 0x6C, 0x70, 0x15, 0x41, 0xCB, 0x72, 0xF4, 0x09, + 0x47, 0xB9, 0xE2, 0x98, 0xAB, 0x15, 0xCE, 0x3D, 0xA9, 0x9D, 0x0E, 0x44, + 0xDD, 0xA9, 0x23, 0x8E, 0x0E, 0x1D, 0x78, 0xBC, 0xEC, 0x5F, 0x48, 0x92, + 0x22, 0xEC, 0x2A, 0xED, 0x9A, 0x41, 0x8D, 0x14, 0xC8, 0x77, 0x44, 0x36, + 0xCE, 0xE6, 0xF5, 0x70, 0xF4, 0xC1, 0x50, 0x41, 0xAB, 0x7B, 0x28, 0xFD, + 0xB9, 0x00, 0x39, 0x63, 0x8D, 0x20, 0x73, 0x8E, 0x42, 0x7E, 0xB8, 0x40, + 0x7A, 0xAD, 0x8D, 0x8D, 0x6E, 0xFA, 0x93, 0x24, 0xA5, 0xF6, 0xF7, 0x61, + 0x72, 0x75, 0xFC, 0xBB, 0xF5, 0xD1, 0xBE, 0xA0, 0x36, 0x91, 0x61, 0x87, + 0x7F, 0x7F, 0xFD, 0x2A, 0x9B, 0xC8, 0x12, 0xE9, 0xB2, 0xE9, 0xFC, 0xBB, + 0x05, 0xA3, 0xA8, 0x21, 0x97, 0x9B, 0x96, 0x3C, 0x40, 0x64, 0x7F, 0xA3, + 0x51, 0x27, 0x3D, 0x6A, 0xB7, 0x67, 0x15, 0x57, 0x68, 0x4E, 0x87, 0x7D, + 0xB5, 0x2F, 0x45, 0x8F, 0x77, 0x3E, 0x92, 0x98, 0x10, 0xB7, 0x77, 0xA3, + 0x27, 0x20, 0x3C, 0x82, 0x42, 0x37, 0xF2, 0xD7, 0xD6, 0xE7, 0xBF, 0x8D, + 0xD6, 0xEF, 0x4B, 0x53, 0xEC, 0x0F, 0xCC, 0xA7, 0xB0, 0x91, 0x03, 0x27, + 0xAC, 0xE1, 0x9A, 0xA6, 0x38, 0x6E, 0x64, 0xF6, 0x4E, 0xE9, 0xD1, 0x78, + 0x7C, 0x7A, 0xD6, 0xF9, 0x0E, 0xEB, 0x24, 0x2C, 0x01, 0xF3, 0xB1, 0x38, + 0x22, 0x22, 0xBF, 0x91, 0x19, 0x44, 0xCB, 0xEC, 0x8B, 0xEF, 0x59, 0xF0, + 0xA8, 0x3D, 0x5D, 0x66, 0x43, 0xEF, 0x56, 0x6C, 0x1A, 0x88, 0x0A, 0xA7, + 0x74, 0x48, 0x0B, 0x1A, 0x9E, 0x2D, 0xD5, 0x0B, 0xCC, 0x43, 0xA3, 0x09, + 0xB9, 0xCD, 0xD7, 0x82, 0x0C, 0x73, 0x29, 0x4F, 0xE7, 0x0B, 0x69, 0x68, + 0x82, 0x00, 0x65, 0x4D, 0x5F, 0xF8, 0xE6, 0xD7, 0x02, 0x2A, 0x8F, 0x22, + 0x99, 0x5E, 0xAA, 0x08, 0x4D, 0xBD, 0x9A, 0xC4, 0xEC, 0x32, 0x0E, 0x15, + 0x3F, 0xB4, 0x94, 0xBF, 0x01, 0x3A, 0xB1, 0x0C, 0x78, 0x77, 0xDF, 0x72, + 0x5B, 0x77, 0x0D, 0x33, 0x7A, 0x0B, 0xC1, 0x1E, 0xED, 0x9A, 0xE8, 0x72, + 0x68, 0x8D, 0x24, 0xEE, 0x97, 0x24, 0xF6, 0xCA, 0x6D, 0xE8, 0x3B, 0x9D, + 0xDA, 0x93, 0x40, 0x85, 0xA1, 0x9D, 0x1F, 0xB8, 0xC9, 0xE5, 0xEA, 0x59, + 0xA0, 0xD4, 0x6D, 0xCB, 0x71, 0x52, 0x75, 0x9D, 0xA2, 0xAF, 0x91, 0x6A, + 0x4E, 0x0A, 0x6B, 0xB5, 0x67, 0x7B, 0x6C, 0xAC, 0x5E, 0x9B, 0x02, 0x27, + 0x4B, 0x3E, 0xCF, 0x19, 0x57, 0xCC, 0x74, 0x4B, 0x33, 0xA4, 0x6B, 0x1E, + 0x56, 0x6D, 0x0B, 0xA4, 0x84, 0xA3, 0x81, 0xC9, 0x89, 0xF7, 0x9E, 0x3F, + 0xFE, 0x57, 0x60, 0x4F, 0x79, 0x84, 0x53, 0xEB, 0x80, 0x8F, 0xB9, 0x63, + 0x29, 0x4F, 0xBD, 0xA0, 0x0C, 0xF0, 0x7F, 0x35, 0xEC, 0x18, 0xC1, 0x22, + 0xA3, 0x6D, 0x7F, 0x2E, 0xCC, 0x4D, 0x51, 0xFD, 0x76, 0x74, 0x18, 0x19, + 0x67, 0x6B, 0x81, 0x07, 0x07, 0x5B, 0x5D, 0xB3, 0x98, 0x4D, 0x23, 0xB8, + 0x77, 0xD1, 0xEC, 0x3C, 0x0E, 0x10, 0xD0, 0x65, 0x99, 0x29, 0xF1, 0x42, + 0x83, 0x51, 0x26, 0x18, 0x8C, 0x8E, 0x4F, 0x8D, 0x2A, 0x14, 0x34, 0x6A, + 0xC5, 0x71, 0x2F, 0x4C, 0xFF, 0xBA, 0x11, 0xD7, 0x76, 0x16, 0x00, 0xEE, + 0xBA, 0x26, 0xD9, 0xC2, 0x51, 0xBD, 0xC6, 0x67, 0x85, 0x56, 0x98, 0x36, + 0x12, 0xC3, 0xF1, 0xCC, 0xFA, 0xFB, 0xF6, 0x5A, 0xD2, 0x7A, 0xFF, 0x1B, + 0x33, 0xD3, 0x72, 0x05, 0x01, 0x67, 0xA2, 0x42, 0x45, 0x0C, 0x5E, 0x46, + 0xAD, 0x26, 0xA7, 0xCE, 0x38, 0x30, 0xFB, 0x9B, 0x39, 0x8D, 0x40, 0x61, + 0xDF, 0xE5, 0xC5, 0x8A, 0x26, 0xA6, 0x31, 0xFC, 0x8B, 0x0B, 0x2E, 0xAD, + 0xD8, 0xA5, 0x12, 0x92, 0xD2, 0xCA, 0x86, 0x73, 0x52, 0xA6, 0x19, 0xE7, + 0x70, 0xD2, 0x31, 0x14, 0x1C, 0xDA, 0x27, 0xC9, 0xB7, 0x6C, 0x98, 0xE9, + 0xD9, 0x59, 0x8B, 0x5F, 0x27, 0xA6, 0xB3, 0xAC, 0x89, 0xFC, 0x99, 0xF5, + 0x6A, 0x56, 0xC1, 0x99, 0xFE, 0x05, 0x3A, 0x0A, 0x27, 0x1E, 0xE4, 0xD2, + 0x75, 0x98, 0x7C, 0x00, 0x23, 0xD0, 0x19, 0x0B, 0x49, 0xC6, 0x52, 0x48, + 0x03, 0xB5, 0x24, 0x40, 0x03, 0xA2, 0x18, 0xA2, 0x0A, 0x5D, 0x84, 0xF2, + 0xDA, 0xF2, 0x01, 0xF5, 0xE7, 0xDD, 0x54, 0x1F, 0x6C, 0x04, 0xBA, 0x74, + 0x46, 0x29, 0xA3, 0x08, 0x18, 0xA1, 0xA9, 0x80, 0xA3, 0x85, 0x42, 0x49, + 0x33, 0x30, 0x79, 0x08, 0x7B, 0x72, 0x32, 0xB7, 0x59, 0x85, 0xA1, 0xB5, + 0x29, 0xDF, 0x69, 0xDF, 0x2C, 0xC3, 0x5F, 0xD7, 0xA7, 0xE9, 0x97, 0x6A, + 0xA4, 0x38, 0x8B, 0x8C, 0xDE, 0xB2, 0xA8, 0x27, 0xFE, 0x6E, 0xD5, 0xFF, + 0xF6, 0x00, 0x64, 0xB7, 0xBD, 0x14, 0x3C, 0xEC, 0x0E, 0x86, 0x83, 0x7A, + 0x16, 0xEF, 0x50, 0xBB, 0x3D, 0xBA, 0xA2, 0x43, 0x14, 0x61, 0x06, 0x8B, + 0x85, 0xCF, 0x86, 0xE6, 0xC9, 0x77, 0xC6, 0x9F, 0x84, 0xF2, 0x1E, 0xD8, + 0x51, 0x9F, 0xB6, 0xC8, 0x11, 0x56, 0x9A, 0x4B, 0x8B, 0xEA, 0x58, 0x68, + 0x18, 0x78, 0x44, 0x8C, 0x36, 0x0B, 0xA0, 0x4C, 0x74, 0x2E, 0x14, 0xBD, + 0xE8, 0x57, 0xA9, 0x1D, 0x4A, 0x9F, 0xD5, 0x44, 0xB3, 0x15, 0xD6, 0xED, + 0xAE, 0x7A, 0x4E, 0x7D, 0xA7, 0x3C, 0x30, 0xFF, 0x6F, 0x0C, 0x23, 0xCC, + 0x1B, 0x92, 0xC1, 0x48, 0xF9, 0x8C, 0x97, 0x47, 0x3E, 0x5E, 0x66, 0x83, + 0xE8, 0xB9, 0xF0, 0xD0, 0x1B, 0x79, 0x68, 0x1D, 0xA2, 0x35, 0xC7, 0x34, + 0x07, 0x8A, 0xCE, 0x68, 0xBD, 0x9B, 0x7C, 0x76, 0x38, 0x7A, 0x23, 0x9B, + 0x39, 0xD7, 0x04, 0x4A, 0x82, 0xB9, 0x4B, 0xCF, 0xB1, 0x9A, 0xBA, 0x75, + 0x6B, 0x04, 0xF5, 0x23, 0x8D, 0x36, 0x4F, 0x9A, 0x3E, 0x60, 0xD3, 0xAA, + 0xF9, 0x0F, 0x05, 0x5C, 0xA7, 0x28, 0x7E, 0xB4, 0xCA, 0x77, 0x92, 0x9B, + 0x21, 0x0C, 0x99, 0x84, 0xB0, 0xB1, 0xD2, 0x1C, 0xF7, 0x9A, 0x24, 0x0A, + 0xD7, 0x8A, 0xE3, 0x08, 0x3F, 0xE1, 0x5A, 0xC6, 0x32, 0xCF, 0xD8, 0xBB, + 0x6F, 0x86, 0x62, 0x28, 0xDC, 0xC6, 0xF5, 0x00, 0x8C, 0xBE, 0x15, 0x25, + 0x53, 0x87, 0x81, 0xAF, 0xDE, 0xAC, 0x6D, 0x59, 0x0D, 0x51, 0x1F, 0xF9, + 0x76, 0xEA, 0x44, 0x95, 0xFB, 0x1C, 0xC5, 0xB0, 0x0A, 0x29, 0xF2, 0xAE, + 0x8F, 0x03, 0xE7, 0x41, 0xD1, 0x54, 0x9D, 0xD3, 0xD2, 0xB4, 0x7D, 0x9A, + 0xC1, 0x09, 0xDA, 0xC5, 0xD8, 0x26, 0x59, 0xC4, 0x35, 0x66, 0xD7, 0xD1, + 0xE5, 0xA6, 0xED, 0xBB, 0x82, 0xAD, 0x50, 0x4C, 0xE0, 0x01, 0xC9, 0x57, + 0x78, 0x66, 0x8E, 0x0E, 0x69, 0xFD, 0x8C, 0xE9, 0x63, 0xA3, 0x21, 0xDA, + 0xC8, 0x58, 0x1D, 0x6B, 0x76, 0x6F, 0xA4, 0x8F, 0x46, 0xC8, 0x00, 0xB2, + 0x1E, 0xEF, 0x93, 0x54, 0x89, 0xAB, 0xD9, 0x18, 0x23, 0x95, 0xE6, 0x2A, + 0xF8, 0xCC, 0xF2, 0x74, 0xE5, 0x71, 0x60, 0x8C, 0xA1, 0x0E, 0x67, 0x14, + 0xBA, 0xEF, 0x69, 0xC4, 0x01, 0xFE, 0x93, 0x54, 0x26, 0x0A, 0xE1, 0xC2, + 0xC1, 0x47, 0xC9, 0x6A, 0xF6, 0x6A, 0xD8, 0xB6, 0xDD, 0xEE, 0x67, 0xB5, + 0xA0, 0xD8, 0x5F, 0x58, 0x7B, 0x42, 0xFE, 0xD3, 0xD0, 0xCB, 0xFD, 0x5E, + 0x22, 0x4F, 0x31, 0xF7, 0xBA, 0x12, 0x6C, 0xEF, 0x4A, 0x78, 0x23, 0x85, + 0xA3, 0xB1, 0x35, 0x59, 0x13, 0x5D, 0x35, 0xA2, 0x32, 0xF4, 0x6C, 0x07, + 0x33, 0x56, 0x53, 0xD9, 0xB5, 0x4B, 0x6F, 0xC7, 0x73, 0x01, 0x69, 0x54, + 0x7F, 0x95, 0x8C, 0x10, 0xD7, 0x11, 0xF1, 0xF5, 0x0C, 0x21, 0x17, 0xE5, + 0x23, 0x34, 0xDB, 0x4D, 0xC5, 0xA9, 0x18, 0x54, 0xD0, 0x76, 0xB2, 0x74, + 0x68, 0x61, 0x00, 0x8D, 0xCA, 0x3A, 0x70, 0xE4, 0x36, 0xDE, 0x2D, 0x9B, + 0x5F, 0xB0, 0x4E, 0x66, 0x15, 0x7B, 0x92, 0x04, 0x38, 0xBD, 0xC1, 0x61, + 0xF2, 0x19, 0xB9, 0xD9, 0x71, 0xCF, 0xFB, 0x4D, 0x19, 0x99, 0xE5, 0x2A, + 0x50, 0x27, 0x20, 0xC2, 0x18, 0x7B, 0xE9, 0xFA, 0x02, 0x13, 0x66, 0x89, + 0xE7, 0x72, 0x2A, 0xDC, 0x27, 0x72, 0x91, 0xE7, 0xCF, 0x3A, 0x76, 0x6B, + 0xFD, 0xAF, 0x6C, 0x68, 0x57, 0x38, 0xEE, 0x97, 0x55, 0x0C, 0xBF, 0xA6, + 0xBA, 0xDD, 0xC3, 0x2F, 0xDE, 0xD5, 0x39, 0x91, 0x8E, 0xFA, 0xE8, 0xFC, + 0x52, 0x87, 0x94, 0x85, 0x24, 0x3A, 0xDE, 0x03, 0xBE, 0x02, 0x1B, 0x81, + 0xE8, 0x1F, 0xE6, 0x96, 0xAA, 0x38, 0x42, 0x42, 0x2F, 0xDF, 0x4F, 0x13, + 0x50, 0xD3, 0x77, 0xE4, 0x2C, 0x8E, 0x96, 0x3C, 0x4A, 0x6E, 0x37, 0xAF, + 0xE5, 0x03, 0x27, 0x5F, 0x71, 0xE1, 0x79, 0xEA, 0xF7, 0xC5, 0x71, 0x4F, + 0xAC, 0xFE, 0x36, 0x45, 0x0A, 0x96, 0x60, 0x59, 0xD9, 0x52, 0x9F, 0x31, + 0xDF, 0x20, 0x6F, 0x33, 0x03, 0x3D, 0x51, 0x57, 0x18, 0xC1, 0xD0, 0xA4, + 0x7C, 0x33, 0x2E, 0x59, 0x04, 0xF8, 0x3C, 0xF3, 0x58, 0xBB, 0x2F, 0x12, + 0xB1, 0x35, 0xC4, 0xF6, 0xC4, 0x95, 0x3D, 0xDF, 0x13, 0x09, 0xFC, 0xFB, + 0x30, 0xA2, 0xF6, 0x9B, 0xAE, 0xC4, 0xA3, 0xB3, 0x2E, 0xFE, 0x29, 0x8D, + 0x56, 0x24, 0x37, 0xA4, 0xA4, 0x1E, 0xC3, 0x13, 0x6F, 0x99, 0x3D, 0x35, + 0xF8, 0xA0, 0x08, 0x7E, 0x4C, 0x7C, 0x59, 0x81, 0xC0, 0xD8, 0x8F, 0xF7, + 0x33, 0x8E, 0x67, 0x2F, 0xD2, 0x04, 0xE7, 0x4D, 0xB4, 0x90, 0x07, 0xD3, + 0xF7, 0x73, 0x18, 0x1D, 0x69, 0x89, 0x49, 0x13, 0x08, 0x65, 0x6F, 0xCA, + 0xDC, 0x8A, 0x32, 0xBC, 0xCF, 0x5C, 0x6E, 0xDE, 0x23, 0x83, 0x22, 0x94, + 0xEE, 0x02, 0xC6, 0x44, 0xE8, 0xDE, 0xBD, 0xB4, 0x79, 0xD2, 0xF0, 0x9E, + 0x46, 0xCB, 0xF6, 0x5B, 0x2B, 0xA3, 0x97, 0x98, 0x05, 0x60, 0x83, 0xE3, + 0x74, 0xFA, 0xA5, 0x0A, 0x04, 0xE0, 0x76, 0xB5, 0x2B, 0x16, 0xA2, 0x00, + 0xE1, 0x0D, 0xAF, 0x5C, 0x8E, 0xB3, 0x5E, 0x24, 0xC4, 0xA3, 0xB5, 0x8B, + 0xAC, 0x56, 0x13, 0x09, 0x8D, 0xDE, 0xE5, 0xA1, 0x85, 0x49, 0x65, 0xB2, + 0xFF, 0xE4, 0xF2, 0x61, 0x12, 0xE2, 0x45, 0x48, 0x8D, 0x8A, 0x02, 0x60, + 0xBB, 0x2F, 0xF3, 0xFF, 0x10, 0xCD, 0xE3, 0xA7, 0xE8, 0xF0, 0xC1, 0x14, + 0xB5, 0x0D, 0x65, 0xDE, 0x37, 0x33, 0xFC, 0x2F, 0x22, 0xB9, 0xBF, 0xE0, + 0x56, 0x0C, 0x44, 0x18, 0xFC, 0xAA, 0xBA, 0xBE, 0x24, 0x0E, 0xA1, 0x31, + 0x17, 0x7D, 0x2C, 0x2A, 0xA2, 0xAA, 0xF4, 0x65, 0x81, 0x12, 0xB4, 0x7E, + 0x0D, 0x13, 0xE3, 0x9B, 0x3F, 0xAD, 0xA1, 0x20, 0x19, 0x91, 0x34, 0x92, + 0xAD, 0x15, 0x5A, 0x93, 0x65, 0xC1, 0xDD, 0x10, 0xCD, 0x6D, 0xAD, 0x94, + 0x15, 0xA4, 0x88, 0x30, 0x4A, 0x8B, 0x8C, 0xB0, 0xEB, 0xA9, 0x04, 0x8E, + 0xEA, 0x4A, 0xBA, 0x28, 0x1F, 0x28, 0xD4, 0x65, 0x85, 0x49, 0xF4, 0x7C, + 0x69, 0x13, 0xB4, 0x3E, 0x84, 0x36, 0x77, 0x9E, 0x70, 0x36, 0x12, 0x53, + 0x1B, 0xD4, 0xD0, 0x2A, 0x17, 0xDC, 0x84, 0x93, 0xC1, 0xDF, 0xB9, 0x44, + 0x68, 0x0B, 0xF5, 0xEE, 0x3B, 0xB2, 0xA2, 0x8C, 0xCB, 0xB6, 0xA6, 0xD8, + 0x97, 0xA8, 0x2C, 0x61, 0x7C, 0xB7, 0x21, 0x58, 0x07, 0xC9, 0xD4, 0x5D, + 0x54, 0x3A, 0x70, 0xC9, 0xF4, 0x51, 0x00, 0xC6, 0x25, 0xFF, 0x1E, 0x1D, + 0x94, 0xBA, 0x48, 0xDE, 0x5E, 0x69, 0xB4, 0x87, 0x4F, 0x87, 0x83, 0x64, + 0x9A, 0xDF, 0x83, 0x93, 0x59, 0x2A, 0x43, 0xD7, 0xCE, 0x35, 0xE7, 0xD5, + 0x77, 0x72, 0x23, 0xB5, 0xFF, 0x52, 0xA6, 0x11, 0x2A, 0x29, 0x0A, 0xCA, + 0x3B, 0xB8, 0xBC, 0xF3, 0xFE, 0x3A, 0x6B, 0x1B, 0x13, 0xC9, 0x5D, 0xD1, + 0xF5, 0xEE, 0x6A, 0xC4, 0x05, 0x03, 0xAE, 0x04, 0xC5, 0x36, 0x03, 0x56, + 0x3C, 0x5D, 0xE1, 0x3E, 0x32, 0x45, 0x18, 0x3C, 0x90, 0x46, 0xF3, 0xB0, + 0xDA, 0xD4, 0xCC, 0xE0, 0xE1, 0xCD, 0x40, 0xAD, 0xC3, 0xFA, 0x6B, 0x2B, + 0x74, 0xC5, 0x20, 0xCA, 0xF6, 0xA2, 0xA7, 0xC6, 0xD3, 0xA2, 0x38, 0x1E, + 0x5C, 0x03, 0xE5, 0xCC, 0x3F, 0x21, 0xED, 0x8E, 0xAE, 0x6B, 0xDE, 0x75, + 0xF9, 0x67, 0x63, 0xEA, 0x8B, 0x18, 0x06, 0x7A, 0xBD, 0x67, 0x32, 0xA3, + 0x89, 0x6D, 0x71, 0x0A, 0x43, 0x00, 0x74, 0x6B, 0x19, 0x42, 0x8D, 0x0C, + 0x93, 0xAC, 0x4F, 0x69, 0x3B, 0x5C, 0xB0, 0x35, 0xAE, 0x7F, 0x54, 0x48, + 0x1A, 0x48, 0x36, 0x4A, 0xD4, 0x60, 0x32, 0x16, 0x21, 0x75, 0xF6, 0xAA, + 0x3A, 0x34, 0x14, 0xC3, 0xC7, 0x0D, 0xB6, 0x3E, 0xF8, 0x7D, 0xDE, 0x17, + 0x46, 0xBD, 0xA7, 0x87, 0x08, 0xF5, 0x1B, 0x6B, 0x13, 0x0B, 0xCD, 0xA9, + 0x4D, 0x9A, 0xD2, 0x39, 0x83, 0xCA, 0xE9, 0x47, 0xE1, 0xCF, 0xD6, 0x73, + 0xF1, 0x15, 0xCC, 0x50, 0x87, 0xE2, 0xB2, 0x56, 0x04, 0xCC, 0x20, 0x06, + 0x87, 0x3F, 0x19, 0x8D, 0xE6, 0x45, 0x70, 0xF1, 0x13, 0xB1, 0x32, 0x1C, + 0xC2, 0xFF, 0xB9, 0x2F, 0xC9, 0x76, 0x2C, 0x0E, 0x81, 0x18, 0xEF, 0x34, + 0xA7, 0xD0, 0x85, 0xD1, 0x37, 0xC3, 0x83, 0x44, 0xFB, 0x35, 0x2B, 0xB8, + 0x38, 0x4A, 0xB8, 0x44, 0x61, 0xE0, 0x65, 0x97, 0x90, 0x2A, 0xFB, 0x09, + 0x68, 0x1A, 0x8A, 0xF0, 0x56, 0xF7, 0xF7, 0xE4, 0xF5, 0x01, 0x35, 0xD2, + 0x92, 0xB5, 0xE0, 0x82, 0x2D, 0x39, 0x03, 0x1B, 0x0C, 0xDC, 0x30, 0x8D, + 0x7E, 0x55, 0xB4, 0x38, 0x29, 0x93, 0xA0, 0x99, 0x85, 0x6E, 0x8B, 0x6B, + 0x82, 0x6F, 0x5A, 0x57, 0xC0, 0x04, 0x68, 0xE3, 0x41, 0xB6, 0xF9, 0x5B, + 0xC7, 0xE9, 0xCF, 0x96, 0x06, 0x86, 0x63, 0x93, 0x12, 0xC1, 0xEC, 0xF3, + 0xBB, 0x25, 0x39, 0x8F, 0x1F, 0x06, 0x70, 0x08, 0xC6, 0x60, 0x4C, 0xD1, + 0x67, 0x89, 0x8A, 0x13, 0x97, 0x67, 0x13, 0x6E, 0x08, 0x2B, 0xE5, 0x59, + 0x5C, 0xAA, 0xFF, 0x4B, 0xE7, 0x49, 0x81, 0x6E, 0x46, 0x5E, 0x9E, 0x13, + 0x5C, 0x69, 0xEB, 0x95, 0x36, 0x2A, 0x77, 0xBF, 0xD2, 0xB5, 0xDC, 0x49, + 0x33, 0x5F, 0x17, 0x5D, 0x1F, 0x1C, 0x78, 0x8B, 0x38, 0x4D, 0x5D, 0xC4, + 0x03, 0xF2, 0x58, 0xF4, 0x0A, 0xFD, 0xE4, 0xEF, 0x18, 0xF0, 0x8F, 0x31, + 0x29, 0x5D, 0x69, 0xEE, 0xA1, 0x31, 0x37, 0xE2, 0x31, 0x5F, 0xF6, 0x92, + 0x33, 0xDC, 0x70, 0x28, 0xD2, 0x6D, 0xC7, 0x88, 0xC5, 0x86, 0x61, 0x0D, + 0xA9, 0x7B, 0x15, 0xA4, 0xE5, 0x35, 0x7C, 0xF3, 0xBD, 0xE1, 0x80, 0xDE, + 0x9D, 0x7A, 0x7D, 0x98, 0x06, 0xFF, 0x20, 0x6A, 0xF4, 0xCD, 0xC8, 0x99, + 0x25, 0x64, 0x81, 0xEA, 0xC8, 0x7E, 0x3C, 0x5B, 0x28, 0x06, 0xBD, 0xA5, + 0xA8, 0xF8, 0x9C, 0xF3, 0x3D, 0x4F, 0xB1, 0xB5, 0x15, 0x1D, 0x50, 0x0C, + 0x45, 0x55, 0x48, 0xEA, 0x4C, 0x62, 0x5C, 0x11, 0xF3, 0xAE, 0x7E, 0x13, + 0xA0, 0x9E, 0x6A, 0xB4, 0x99, 0x88, 0x03, 0x8F, 0xC7, 0xAE, 0x20, 0x67, + 0x2D, 0x4D, 0x88, 0x11, 0xB5, 0x41, 0x0D, 0x37, 0xA3, 0xAB, 0xD8, 0xE4, + 0x7C, 0x59, 0xC5, 0x71, 0x74, 0x5E, 0x95, 0xB8, 0x38, 0x95, 0x40, 0xAC, + 0x15, 0xD3, 0x7D, 0x21, 0xD0, 0xB3, 0x82, 0x40, 0x55, 0x92, 0x43, 0x90, + 0xDE, 0x83, 0x62, 0xE7, 0xD4, 0x56, 0x32, 0x72, 0x52, 0x0B, 0x2E, 0x09, + 0x30, 0x64, 0x4A, 0xAC, 0x5A, 0x67, 0x01, 0x0A, 0xBD, 0x22, 0xF4, 0x58, + 0xB0, 0xE5, 0x6B, 0x92, 0x69, 0x89, 0x72, 0xE2, 0x91, 0x50, 0x3E, 0x47, + 0xBB, 0xE0, 0x23, 0x57, 0xBC, 0xA5, 0x5D, 0xEF, 0xA7, 0x39, 0x96, 0x00, + 0x99, 0xE4, 0x30, 0x89, 0xCF, 0x0C, 0xA5, 0x22, 0x8F, 0x78, 0x5F, 0xAA, + 0x69, 0x50, 0xF6, 0xB9, 0x61, 0xA1, 0x3E, 0x1C, 0x65, 0x15, 0xD1, 0x50, + 0x4B, 0xDF, 0xD0, 0xA0, 0x87, 0xC2, 0xF8, 0xB2, 0xAA, 0x00, 0xB6, 0xFD, + 0x7A, 0x4E, 0xA6, 0xEA, 0xD8, 0xCE, 0x22, 0x3C, 0x41, 0xFA, 0x6A, 0x05, + 0xCA, 0x5F, 0xEC, 0x98, 0x4E, 0xFC, 0xF1, 0x06, 0x5E, 0x07, 0xF3, 0x98, + 0x73, 0xCF, 0xBD, 0x17, 0xF5, 0xB5, 0x5B, 0x52, 0x29, 0xEF, 0xCC, 0xAE, + 0x8C, 0x8F, 0x6C, 0xB0, 0x82, 0x9D, 0x1C, 0x15, 0x62, 0x4C, 0xFC, 0x99, + 0xFD, 0x3D, 0xD1, 0x7F, 0x13, 0xFD, 0x8A, 0xD1, 0x96, 0x50, 0x98, 0x2D, + 0x30, 0xE8, 0x57, 0x07, 0xFC, 0xD0, 0x06, 0x24, 0xB5, 0x7A, 0xC6, 0xBE, + 0xAA, 0x1E, 0xBF, 0xFF, 0xC6, 0x6C, 0x24, 0x70, 0xB7, 0x59, 0xC3, 0xDB, + 0xC1, 0x3A, 0x79, 0x6F, 0x83, 0xCB, 0x55, 0x84, 0x7E, 0x04, 0xF8, 0xDB, + 0x7D, 0x41, 0xAF, 0x5D, 0xDB, 0x5A, 0xE6, 0xCE, 0x9B, 0x66, 0x6F, 0x38, + 0xF4, 0xEA, 0x20, 0x09, 0x75, 0x75, 0xCD, 0xF8, 0x62, 0x74, 0x7E, 0x4A, + 0x3E, 0x2E, 0xAE, 0xCC, 0x8D, 0x49, 0xBC, 0xCC, 0x34, 0xE9, 0x9B, 0xC7, + 0x05, 0x81, 0x9C, 0xBA, 0x00, 0xF2, 0x83, 0xC5, 0xE4, 0x78, 0x85, 0xD0, + 0xC5, 0xF3, 0x0F, 0xB0, 0x18, 0x30, 0x9B, 0xA3, 0x62, 0x92, 0x72, 0xD5, + 0xEA, 0xE1, 0xC0, 0x5B, 0xDA, 0x0C, 0xBC, 0x19, 0x46, 0x7F, 0x03, 0xC8, + 0x7B, 0x31, 0x13, 0x1B, 0xA0, 0x91, 0xB4, 0x99, 0xC1, 0x9D, 0xB8, 0xE5, + 0x33, 0xD9, 0x41, 0x53, 0x19, 0x97, 0x99, 0x27, 0x8C, 0x8E, 0x5B, 0xAA, + 0x17, 0x85, 0x42, 0xA9, 0x47, 0x1C, 0x19, 0x33, 0xCB, 0x88, 0xBE, 0xF4, + 0x48, 0x43, 0x66, 0xEB, 0x9F, 0xF6, 0x94, 0x2C, 0xC2, 0x74, 0xF8, 0xD7, + 0x9B, 0xEB, 0x2F, 0x2F, 0xF3, 0x52, 0x1F, 0x45, 0x9D, 0x9E, 0xB4, 0x86, + 0x76, 0xAB, 0x43, 0xB9, 0x52, 0x0C, 0x0A, 0x06, 0xD7, 0xF2, 0xA5, 0xFE, + 0x9C, 0x0D, 0x8A, 0xE0, 0xA4, 0xEA, 0x65, 0x3F, 0x2B, 0x7C, 0x03, 0x31, + 0x3A, 0x40, 0x97, 0xA8, 0x56, 0xA2, 0xAD, 0x63, 0x7A, 0xE5, 0xDC, 0xFD, + 0x8D, 0xA9, 0xF3, 0x55, 0xB5, 0x14, 0xB7, 0x51, 0xBA, 0x00, 0x32, 0x43, + 0x25, 0xEB, 0x61, 0x78, 0xA6, 0x2A, 0xEA, 0x9D, 0x15, 0x72, 0x5D, 0xD0, + 0x0E, 0x0C, 0xB4, 0xC1, 0x4B, 0x10, 0x9A, 0xFB, 0x1B, 0x54, 0x33, 0x8D, + 0x3A, 0x0B, 0x43, 0x51, 0x6C, 0x22, 0xB8, 0x29, 0xC5, 0x11, 0x1F, 0x28, + 0xF5, 0x82, 0x5F, 0xCF, 0x0A, 0xB0, 0xBF, 0xDA, 0x90, 0x13, 0xCE, 0x69, + 0xFF, 0x05, 0x85, 0x9D, 0x80, 0xF3, 0x3D, 0x4B, 0x21, 0xAB, 0xED, 0x73, + 0xB9, 0xC4, 0xAD, 0x70, 0xEA, 0x17, 0x20, 0x78, 0xCA, 0xCC, 0x4E, 0x47, + 0xCA, 0x30, 0xA8, 0xDB, 0x1C, 0x7B, 0x46, 0x3C, 0xC0, 0xE2, 0x96, 0xF8, + 0x60, 0xDD, 0x43, 0xFE, 0x41, 0x7C, 0xD2, 0x7B, 0xB9, 0x90, 0x97, 0xF6, + 0x86, 0x62, 0xD5, 0xF3, 0x49, 0x78, 0x81, 0xCF, 0x0C, 0xF1, 0x30, 0xC7, + 0x37, 0x16, 0xDE, 0xB4, 0x93, 0x6A, 0xE0, 0x9F, 0x5B, 0x17, 0x43, 0x69, + 0x7E, 0x54, 0xBB, 0x83, 0x4F, 0x1B, 0xA9, 0x70, 0x41, 0x97, 0x5A, 0x5D, + 0x6E, 0x51, 0x1F, 0xEA, 0xDF, 0x44, 0xFB, 0x2D, 0x1E, 0xB9, 0xF9, 0xA4, + 0xCE, 0x11, 0xD5, 0x6C, 0x43, 0xF5, 0xD1, 0x23, 0x7B, 0x7E, 0x30, 0x4B, + 0x82, 0xF4, 0x3F, 0x9C, 0x53, 0xF5, 0xC8, 0xF6, 0xA1, 0xAB, 0x39, 0xD2, + 0x01, 0xD5, 0xEA, 0x01, 0xFF, 0x75, 0xFD, 0x23, 0x63, 0xBE, 0x4C, 0x70, + 0xC0, 0xF6, 0x78, 0xED, 0x83, 0x79, 0x19, 0x33, 0x58, 0xEA, 0x73, 0xC4, + 0xE9, 0x0E, 0xF6, 0x89, 0x3C, 0xD4, 0x0C, 0xF6, 0xBE, 0xAC, 0x81, 0x32, + 0x70, 0x24, 0x7D, 0xEA, 0x70, 0xBF, 0xC4, 0x45, 0x56, 0x8C, 0x49, 0x91, + 0xA4, 0x04, 0x76, 0x84, 0x5B, 0x43, 0x11, 0x72, 0x74, 0x1C, 0xF5, 0xEB, + 0x93, 0x42, 0x87, 0x1D, 0x6B, 0x16, 0x9F, 0xAD, 0xCA, 0x9B, 0xD3, 0x1F, + 0x78, 0x1A, 0x0A, 0xC5, 0x7D, 0x44, 0xD2, 0xDE, 0x91, 0x0C, 0x3E, 0x12, + 0x74, 0xDF, 0x92, 0xF7, 0x96, 0xD3, 0x6E, 0x76, 0xD6, 0x98, 0x48, 0x78, + 0x77, 0x92, 0xC9, 0x45, 0xD8, 0x75, 0xB3, 0x84, 0xDC, 0x1A, 0x2A, 0x0E, + 0xAF, 0xD8, 0xB2, 0x6D, 0x88, 0x60, 0xEE, 0x77, 0x4A, 0xFE, 0x4B, 0xC1, + 0x2E, 0x27, 0x4C, 0x4F, 0x31, 0x51, 0x5B, 0x92, 0x75, 0xC2, 0x41, 0x7F, + 0xB0, 0x43, 0x09, 0xC7, 0xBA, 0xB0, 0xB3, 0x9B, 0x27, 0x3D, 0xD4, 0x10, + 0x59, 0xD3, 0x4F, 0xB8, 0x7C, 0xFF, 0xC8, 0x4C, 0x06, 0xCA, 0xB4, 0x5C, + 0x37, 0xA4, 0xCD, 0x12, 0x60, 0x5C, 0x15, 0xB2, 0xA2, 0xAA, 0x81, 0x1A, + 0x17, 0x7D, 0xD9, 0xF6, 0x31, 0xD6, 0xEB, 0xE7, 0xE7, 0x16, 0x85, 0x36, + 0x3C, 0xE3, 0x57, 0x76, 0xAC, 0x35, 0xE3, 0xEC, 0x0F, 0xB7, 0x9B, 0xD5, + 0xD1, 0x8E, 0x63, 0x7F, 0x1A, 0xB8, 0x23, 0x02, 0x50, 0x62, 0x06, 0xBF, + 0xE5, 0x14, 0x2D, 0xED, 0xF0, 0x68, 0xEF, 0x8B, 0x82, 0x35, 0x29, 0x8A, + 0xE1, 0x64, 0x14, 0xFB, 0xAA, 0x4B, 0xE3, 0x2B, 0x91, 0x6A, 0x1D, 0x8E, + 0xB2, 0x60, 0xC1, 0xC4, 0x5A, 0x0B, 0xA5, 0xD6, 0xA1, 0xE8, 0x91, 0x97, + 0xA1, 0x51, 0xBD, 0x81, 0xD0, 0xB5, 0x7F, 0x69, 0x4A, 0xA8, 0x5D, 0xB5, + 0x36, 0x55, 0x22, 0xE2, 0x7E, 0x1C, 0x53, 0xE2, 0x5B, 0x57, 0x17, 0x62, + 0x96, 0xC8, 0x7E, 0x31, 0xCB, 0xE0, 0xC6, 0x71, 0x5E, 0xC1, 0xB9, 0xD6, + 0x54, 0x22, 0x49, 0xEF, 0xDD, 0x50, 0xB0, 0x88, 0xC0, 0x0F, 0x16, 0xE7, + 0xD6, 0xBA, 0x9A, 0x08, 0xAC, 0xD6, 0x78, 0xDA, 0x80, 0xDF, 0x7D, 0x69, + 0x97, 0xD4, 0xA7, 0x97, 0xFA, 0xDF, 0x76, 0x54, 0xE4, 0x3B, 0x1D, 0xF1, + 0x98, 0xC4, 0x68, 0xA6, 0xE8, 0x0B, 0x27, 0xE1, 0x0C, 0x2C, 0xC2, 0x8F, + 0x88, 0xB3, 0x31, 0xFF, 0x3A, 0xDB, 0x90, 0x1C, 0x59, 0x2A, 0x88, 0x54, + 0x26, 0x7E, 0xCB, 0xFF, 0x73, 0x99, 0xE5, 0xCF, 0x31, 0x8B, 0x69, 0xDB, + 0x8F, 0x28, 0x4D, 0x3B, 0x2F, 0x63, 0xC8, 0xEB, 0x61, 0x3E, 0x95, 0xBC, + 0x8B, 0x5C, 0x1C, 0xCA, 0xED, 0x43, 0xDF, 0x1A, 0x94, 0xF4, 0xF1, 0xF2, + 0x7D, 0x37, 0x71, 0xC2, 0x28, 0xE7, 0xFE, 0x69, 0x69, 0x3B, 0x6D, 0x31, + 0x3A, 0xE7, 0x0F, 0x26, 0xCE, 0xCD, 0x19, 0xA5, 0xE0, 0x66, 0x29, 0x54, + 0x65, 0x43, 0x43, 0xB9, 0x22, 0x86, 0x0E, 0x2E, 0xD5, 0x63, 0x55, 0xA8, + 0x78, 0x05, 0x54, 0xE3, 0x1E, 0xEC, 0x01, 0x67, 0xB4, 0x22, 0xFC, 0x18, + 0xDB, 0x53, 0x6F, 0x97, 0xC0, 0xEB, 0x58, 0x57, 0x49, 0xDC, 0xBD, 0x76, + 0xCA, 0x00, 0x46, 0xE3, 0x7F, 0x4D, 0x53, 0xAC, 0xDC, 0x77, 0xF3, 0xAF, + 0x4F, 0x5A, 0x85, 0xC8, 0x37, 0x2B, 0x41, 0x63, 0x6F, 0xD7, 0x25, 0x61, + 0x6D, 0x09, 0x9C, 0xEB, 0x43, 0xE2, 0xE8, 0x49, 0x72, 0xCD, 0x8E, 0x1C, + 0xD0, 0x8E, 0xD3, 0x96, 0x1F, 0x98, 0xAA, 0x2B, 0xF6, 0x47, 0x4D, 0x92, + 0x2A, 0xAA, 0x41, 0xA5, 0xA9, 0x71, 0xFE, 0x6C, 0x43, 0x7E, 0xB8, 0x21, + 0x4A, 0x58, 0xA4, 0xF7, 0x5D, 0xF8, 0x44, 0xC4, 0xE8, 0x9A, 0xA7, 0xB9, + 0xAC, 0x97, 0xD4, 0x8D, 0xA6, 0xC4, 0x04, 0x43, 0x30, 0x21, 0x54, 0x16, + 0x92, 0x49, 0x77, 0x7D, 0xEA, 0xD1, 0x1F, 0xB4, 0x75, 0xF4, 0x1F, 0x73, + 0xD0, 0xEA, 0x0F, 0xA6, 0x60, 0x4B, 0xE9, 0xDE, 0x79, 0x4C, 0xFF, 0xD9, + 0xAB, 0x9D, 0xA6, 0x92, 0xE8, 0x64, 0x25, 0x2F, 0x75, 0x97, 0x5C, 0x7A, + 0x7E, 0xF1, 0x5A, 0xE1, 0x6D, 0xD7, 0x16, 0x5A, 0x42, 0x83, 0x43, 0xDD, + 0x8D, 0x22, 0xEB, 0xEE, 0x63, 0xB0, 0x73, 0x67, 0x83, 0x1E, 0xF8, 0x7C, + 0xB6, 0x5B, 0xA5, 0xF9, 0xD1, 0xFF, 0x8A, 0xAD, 0x9A, 0x75, 0x4A, 0x3D, + 0x37, 0x67, 0x40, 0x78, 0xD5, 0x2A, 0xB3, 0xBE, 0xF3, 0x66, 0x3F, 0x51, + 0x94, 0x79, 0x2D, 0x98, 0xB7, 0x29, 0x81, 0x9B, 0xC3, 0xC4, 0x28, 0x38, + 0xB3, 0x99, 0x84, 0xBA, 0x50, 0x15, 0x66, 0x68, 0x40, 0x3D, 0xCD, 0xAF, + 0x3B, 0xF3, 0x1F, 0xD1, 0xE4, 0x17, 0x80, 0x74, 0xE3, 0x14, 0xBF, 0xB3, + 0x3D, 0xC3, 0xC2, 0x07, 0x1E, 0x74, 0x57, 0x96, 0xDF, 0xE4, 0x62, 0xBA, + 0x4C, 0x57, 0x47, 0x0A, 0x09, 0xC2, 0x46, 0x81, 0xF5, 0xBB, 0x77, 0x34, + 0x49, 0x3B, 0xBB, 0x02, 0xDC, 0xF1, 0x15, 0x99, 0x15, 0xB8, 0xF0, 0xD2, + 0x28, 0xD5, 0xC8, 0x79, 0xAB, 0xAF, 0xF8, 0x83, 0xE3, 0x57, 0x9A, 0x5E, + 0xC0, 0x0C, 0x72, 0x2E, 0xD8, 0xB7, 0xDE, 0xAB, 0x27, 0x49, 0xEC, 0x4E, + 0x8E, 0xB0, 0x49, 0x65, 0xDD, 0x2F, 0x56, 0xA4, 0xBE, 0x04, 0x90, 0x9C, + 0xCA, 0x76, 0x5F, 0x59, 0x94, 0x99, 0x5F, 0x97, 0xFD, 0xA7, 0x38, 0xD2, + 0x7F, 0x53, 0xBC, 0x7B, 0x0F, 0x6F, 0xC9, 0xE5, 0x3A, 0x0F, 0x94, 0x2C, + 0xBA, 0x85, 0x6D, 0xAE, 0xF7, 0x21, 0x6A, 0x64, 0xFD, 0xAA, 0x65, 0xD8, + 0x30, 0xB3, 0x0A, 0x6C, 0x91, 0xC6, 0xB6, 0x29, 0x8D, 0x68, 0xC7, 0x1A, + 0x06, 0x9C, 0x58, 0x30, 0x3C, 0xF2, 0xC6, 0x15, 0xD3, 0x8A, 0xC9, 0xA0, + 0x4D, 0x56, 0x88, 0xC7, 0xC2, 0x4E, 0x47, 0x87, 0x9F, 0x20, 0x13, 0x6C, + 0xEF, 0xC4, 0x6D, 0x31, 0x47, 0xB3, 0xEB, 0xBC, 0x61, 0x11, 0xE1, 0xA1, + 0xD8, 0x6E, 0x2B, 0x5C, 0xC1, 0xFD, 0xC3, 0x75, 0xBF, 0x70, 0xBC, 0x77, + 0x4E, 0x47, 0x65, 0xE5, 0xEC, 0xDD, 0x70, 0x24, 0x63, 0xA9, 0xD6, 0x9C, + 0xA9, 0x0C, 0x86, 0xDB, 0xC0, 0x3D, 0x96, 0x65, 0xA4, 0x9D, 0x89, 0xF1, + 0xB1, 0x65, 0x16, 0x29, 0x3E, 0x8C, 0x97, 0xC0, 0x73, 0xED, 0xD1, 0x96, + 0x84, 0x17, 0x8D, 0x66, 0x8E, 0x7F, 0x47, 0xD1, 0x64, 0x7F, 0x83, 0x54, + 0xE6, 0xD3, 0xA0, 0x6E, 0xB7, 0xB0, 0xA5, 0x7E, 0x8E, 0xFE, 0xBD, 0xA9, + 0xDE, 0x0B, 0x7E, 0xE9, 0x68, 0x82, 0x2B, 0x59, 0xF2, 0xA2, 0x45, 0x86, + 0x84, 0xEF, 0x04, 0x18, 0x6E, 0x5F, 0x5D, 0x21, 0xED, 0x8B, 0xAE, 0x65, + 0x0A, 0xC4, 0xD0, 0xD8, 0x2A, 0x9E, 0x81, 0x85, 0x78, 0x2B, 0x4E, 0x11, + 0x47, 0xC6, 0x60, 0x31, 0x63, 0xB1, 0x9A, 0xEB, 0x55, 0x34, 0x98, 0x27, + 0x9E, 0xCC, 0x7D, 0x28, 0x1B, 0xF9, 0xFF, 0x4D, 0x14, 0xF1, 0x48, 0x88, + 0x8C, 0x26, 0xDE, 0x1F, 0xF3, 0xE0, 0xCB, 0xD1, 0x4A, 0x06, 0x0C, 0xE0, + 0x79, 0x07, 0x6F, 0x01, 0xF6, 0x0F, 0x7B, 0x6E, 0x9E, 0x21, 0x0A, 0x7C, + 0x8D, 0xDC, 0xAB, 0xE9, 0xDB, 0xCB, 0xC8, 0x68, 0x4F, 0x20, 0xBB, 0xDB, + 0xF6, 0x3A, 0xEC, 0xD4, 0x52, 0x6F, 0xDF, 0xFF, 0x39, 0xAB, 0x30, 0xF9, + 0xBF, 0xCB, 0xC6, 0xC6, 0x63, 0x6B, 0xFE, 0x38, 0xF8, 0x50, 0x56, 0x00, + 0x23, 0xF9, 0xB7, 0x33, 0xE2, 0x93, 0x0A, 0x4A, 0xA1, 0x20, 0x85, 0xEC, + 0x88, 0x0E, 0x83, 0x57, 0x25, 0x38, 0x91, 0x48, 0x99, 0x0D, 0xAA, 0x28, + 0xEA, 0xBF, 0x66, 0x01, 0xC5, 0x08, 0xFF, 0xC6, 0x78, 0x37, 0x36, 0x51, + 0x0B, 0xF0, 0x63, 0x74, 0xC5, 0x3E, 0x14, 0x9C, 0xE4, 0x4B, 0x3A, 0x71, + 0x02, 0x96, 0x3F, 0x56, 0xF0, 0x9C, 0xCA, 0x9C, 0xAB, 0xA7, 0x86, 0x7E, + 0xB0, 0x9E, 0xFB, 0x58, 0xDE, 0xE5, 0x6E, 0x47, 0xEE, 0x80, 0x39, 0x52, + 0xD9, 0xCA, 0xE6, 0xC9, 0xA7, 0x9C, 0x89, 0xB0, 0x52, 0x68, 0xAB, 0x4B, + 0x3F, 0x86, 0xD3, 0x11, 0xE6, 0xFC, 0x2C, 0x77, 0x8C, 0x5C, 0x6E, 0x19, + 0xD8, 0x53, 0x95, 0xA4, 0x46, 0x08, 0xAC, 0x7D, 0x5D, 0xFB, 0xDE, 0x6C, + 0x4D, 0x45, 0xA3, 0x41, 0x9D, 0xCE, 0xC5, 0xB1, 0x49, 0xBD, 0x06, 0xF6, + 0x74, 0x2F, 0x82, 0xF6, 0x91, 0x4D, 0xDE, 0x8A, 0x2D, 0xD8, 0xAF, 0x17, + 0xFB, 0xC8, 0x85, 0xE2, 0x19, 0x39, 0xDD, 0x1B, 0x58, 0x2B, 0x4F, 0xB6, + 0xED, 0x32, 0x35, 0xF6, 0xEB, 0x12, 0xCE, 0x7F, 0xD1, 0x3C, 0xF1, 0x6E, + 0xC4, 0xE5, 0xBA, 0x6E, 0x92, 0xF7, 0x36, 0xF0, 0x84, 0xB3, 0x36, 0xFE, + 0x89, 0x4C, 0xFE, 0xA7, 0x9D, 0x73, 0x98, 0x28, 0xBB, 0x01, 0x5A, 0x9B, + 0x76, 0x6C, 0x82, 0x81, 0x55, 0x3B, 0xA9, 0x42, 0xD7, 0x7A, 0x37, 0x0C, + 0x3E, 0x1D, 0x6D, 0xB6, 0xF8, 0xD7, 0xA5, 0xAC, 0x5A, 0xBF, 0x83, 0x16, + 0x10, 0x2B, 0x2F, 0x25, 0x2D, 0x28, 0x7F, 0xD3, 0xB4, 0xC3, 0x54, 0x1D, + 0x7E, 0x36, 0xF1, 0x00, 0x80, 0xD5, 0x50, 0xA0, 0xB7, 0x81, 0xAB, 0x6E, + 0xA9, 0xEF, 0x7F, 0xB2, 0x1E, 0xA5, 0xE4, 0x62, 0x06, 0x49, 0xB3, 0xA8, + 0x61, 0xD2, 0x6C, 0xED, 0x4B, 0xF7, 0xAD, 0xD3, 0x4C, 0x1F, 0x23, 0xB1, + 0x5B, 0x54, 0x1B, 0xA5, 0xAA, 0x5F, 0x92, 0x6D, 0x6D, 0x23, 0xB2, 0x5F, + 0x73, 0xC5, 0x1A, 0x1E, 0xD9, 0x17, 0xE5, 0x19, 0xAF, 0x30, 0x9B, 0x77, + 0x0D, 0xF5, 0xC4, 0xAF, 0xDF, 0x57, 0x72, 0x25, 0xAE, 0xA6, 0x63, 0xFD, + 0xB3, 0xAF, 0x73, 0x1B, 0x37, 0x12, 0x1F, 0x4C, 0x62, 0x93, 0xC3, 0x3B, + 0x07, 0x59, 0xEA, 0x82, 0xB5, 0x4D, 0xCF, 0x90, 0xC7, 0x36, 0x08, 0xA4, + 0xE7, 0x69, 0xE5, 0xF9, 0x6E, 0x84, 0x68, 0x6D, 0x2A, 0x00, 0x27, 0x3B, + 0x7E, 0xD4, 0x34, 0x6B, 0x1B, 0xFB, 0x0C, 0x8F, 0xF4, 0x03, 0x31, 0x39, + 0x79, 0x07, 0x53, 0x04, 0x54, 0xFA, 0x6E, 0x23, 0x0D, 0x95, 0x6D, 0xF9, + 0x7D, 0xCA, 0x1B, 0x08, 0xDE, 0xD9, 0xC0, 0xFE, 0x99, 0x76, 0x8A, 0xE4, + 0x41, 0x33, 0x6F, 0x83, 0xC1, 0x55, 0xDA, 0xE7, 0x23, 0xA4, 0x56, 0x0A, + 0xC5, 0x06, 0x1E, 0x0D, 0xB1, 0x7F, 0x5B, 0xDB, 0x9A, 0xE5, 0x39, 0x28, + 0x3B, 0x41, 0xC6, 0x22, 0xAC, 0x23, 0x09, 0x43, 0x3B, 0x16, 0xFF, 0x02, + 0xC9, 0x3D, 0xC3, 0x53, 0x0E, 0xF9, 0xDB, 0x8A, 0x3B, 0xA0, 0xF5, 0xCC, + 0x89, 0x2D, 0x59, 0xFF, 0xB1, 0x39, 0xB1, 0xB4, 0x0E, 0x9C, 0x98, 0x8F, + 0x27, 0xF7, 0x6F, 0x91, 0x8B, 0x53, 0x67, 0x8B, 0xA2, 0x5E, 0xC0, 0x17, + 0x84, 0x3C, 0x76, 0xD2, 0xB8, 0x9A, 0x10, 0x8D, 0x0B, 0xAE, 0x3E, 0xA9, + 0x51, 0x50, 0xC1, 0x94, 0x05, 0xB2, 0x8B, 0x88, 0x67, 0xFE, 0x76, 0x0F, + 0xAF, 0xD6, 0x88, 0xFD, 0x38, 0x9F, 0xF8, 0xA9, 0x27, 0xB8, 0xB3, 0x99, + 0x97, 0x1A, 0xD6, 0x82, 0x8E, 0x92, 0x8E, 0x85, 0x7B, 0x85, 0xD4, 0x94, + 0xF8, 0x4F, 0x9A, 0xF1, 0xC8, 0xE6, 0x9A, 0x1F, 0xC8, 0xA3, 0xD7, 0x87, + 0xAD, 0x0C, 0xF8, 0x34, 0x00, 0x7E, 0x30, 0xCC, 0xBE, 0x8E, 0xD9, 0x44, + 0xF3, 0xBF, 0x98, 0xCF, 0xBF, 0x0F, 0x78, 0xBA, 0x39, 0xD7, 0x20, 0x94, + 0x46, 0x4A, 0xE2, 0x8A, 0xB0, 0x22, 0x5C, 0x8E, 0x43, 0xF8, 0xC3, 0x1D, + 0x4F, 0x6B, 0x4A, 0x14, 0x26, 0x9A, 0xD3, 0x10, 0xD4, 0xD3, 0x99, 0xB6, + 0xD4, 0xC8, 0x6A, 0x8E, 0x5D, 0x45, 0x09, 0x14, 0x30, 0x28, 0xE6, 0x75, + 0xCB, 0x4C, 0x28, 0xB7, 0x27, 0x36, 0x6D, 0x4F, 0xFE, 0x25, 0xCB, 0xD5, + 0xAF, 0x0B, 0xA1, 0x61, 0x77, 0x7C, 0x64, 0x28, 0xDB, 0x74, 0x65, 0x2C, + 0xA7, 0x88, 0x3F, 0xF8, 0xA0, 0xFC, 0xD3, 0xCF, 0x99, 0x4B, 0xE8, 0xDE, + 0xB7, 0x16, 0xA2, 0x80, 0x16, 0x8F, 0xBB, 0x53, 0x27, 0x72, 0x6B, 0x53, + 0xAB, 0x80, 0xAB, 0x37, 0xE8, 0x7C, 0x16, 0x31, 0xA9, 0x81, 0xDF, 0x36, + 0xD3, 0x69, 0xD9, 0xA1, 0xA9, 0x4B, 0x8F, 0x1F, 0x85, 0x64, 0x6E, 0x4D, + 0x39, 0x79, 0x47, 0x87, 0xF3, 0x0B, 0xB9, 0xF9, 0xE1, 0xF7, 0x6E, 0x5F, + 0x29, 0x0B, 0x32, 0xEE, 0xBA, 0x79, 0x01, 0x34, 0x1F, 0x1C, 0xF0, 0x03, + 0xEE, 0x96, 0x2F, 0x76, 0x4E, 0x2E, 0x0F, 0xD1, 0x8B, 0x94, 0x61, 0x9B, + 0x33, 0x16, 0xFD, 0xA7, 0x37, 0x6F, 0x6D, 0x6C, 0x5B, 0xCA, 0xA4, 0x9F, + 0x19, 0x69, 0x4E, 0x17, 0xEC, 0x02, 0xE6, 0x49, 0xAA, 0x7E, 0x8E, 0xC0, + 0xE9, 0x15, 0x54, 0x2F, 0xA6, 0x01, 0xE9, 0x27, 0x9F, 0x2E, 0x9D, 0x85, + 0x4D, 0xFF, 0x3E, 0x78, 0x0B, 0x14, 0xAC, 0x19, 0x78, 0x30, 0xCF, 0xA0, + 0x24, 0x01, 0x7B, 0x1D, 0x82, 0x43, 0x02, 0xAC, 0xF7, 0x6C, 0x0C, 0xA9, + 0xC7, 0x74, 0xE3, 0x8E, 0x15, 0xC1, 0xF2, 0xAD, 0x9D, 0x58, 0xDA, 0x50, + 0x93, 0x69, 0x4F, 0x74, 0x5A, 0xD2, 0xB5, 0xA0, 0x06, 0x08, 0x9D, 0xC0, + 0x0F, 0x27, 0x2B, 0x19, 0x82, 0x41, 0x27, 0x32, 0x66, 0xBC, 0xAA, 0x4E, + 0x90, 0x44, 0x88, 0x33, 0x6E, 0x60, 0xBC, 0x7C, 0xDA, 0x29, 0x04, 0x94, + 0x19, 0xF7, 0xD8, 0x5E, 0x99, 0x7F, 0xEF, 0xA8, 0xBD, 0x3A, 0xE0, 0x6A, + 0xB6, 0xA8, 0x00, 0x15, 0x29, 0x04, 0xF1, 0x41, 0x3F, 0x2B, 0xF7, 0x59, + 0x3E, 0x8E, 0xAB, 0x8D, 0x84, 0x26, 0x2D, 0xC2, 0xAD, 0xA7, 0x33, 0x6C, + 0x08, 0xCA, 0xB4, 0x8A, 0xF8, 0x5E, 0xD7, 0x6A, 0x5B, 0x92, 0xCE, 0x70, + 0x23, 0x01, 0x54, 0x88, 0xDB, 0xD7, 0xF5, 0x24, 0xED, 0xA8, 0x49, 0xDB, + 0x5C, 0x4C, 0x25, 0xE1, 0xBB, 0xC7, 0x5E, 0x0D, 0x05, 0x0B, 0xD0, 0x26, + 0x4F, 0x1D, 0xE4, 0xD6, 0xEB, 0x38, 0x30, 0xC5, 0x3F, 0x50, 0xB1, 0x46, + 0x91, 0x01, 0x7A, 0xE3, 0x01, 0xD1, 0x17, 0x29, 0x4B, 0x56, 0x34, 0xAC, + 0x72, 0xA0, 0xA5, 0x0C, 0xBB, 0x69, 0x93, 0x3D, 0x39, 0xE4, 0x8A, 0x94, + 0x2C, 0xD9, 0xD0, 0x24, 0x24, 0x1C, 0x60, 0xA9, 0x79, 0xD6, 0xF2, 0x33, + 0xBD, 0xB3, 0x7A, 0x61, 0x55, 0x7F, 0x66, 0xEF, 0xC5, 0xC8, 0xE7, 0x60, + 0xFC, 0xA5, 0xAF, 0x44, 0x34, 0x7E, 0x30, 0x17, 0xC5, 0xB1, 0xC4, 0x35, + 0xC7, 0x62, 0xBF, 0xA4, 0x6C, 0xD9, 0xD2, 0x86, 0xD7, 0xD7, 0x48, 0x5C, + 0x8A, 0x67, 0x76, 0xFF, 0xBE, 0x34, 0x5B, 0x4E, 0x20, 0xD9, 0x9F, 0xB9, + 0xD4, 0x94, 0x30, 0x22, 0x6B, 0xA9, 0x01, 0xBC, 0x7B, 0xEF, 0x35, 0xBD, + 0x7D, 0x18, 0x68, 0x5B, 0x1D, 0x4A, 0xF5, 0x11, 0x57, 0x1D, 0xE3, 0x66, + 0x8C, 0xA8, 0x40, 0xD9, 0xFA, 0x55, 0xB8, 0x83, 0xE9, 0x2C, 0xDE, 0x0E, + 0xBA, 0xE2, 0x16, 0xEF, 0xA6, 0xE3, 0x5E, 0xA6, 0xD9, 0x1F, 0x17, 0x97, + 0xCE, 0x78, 0xAC, 0x8A, 0xA0, 0x5C, 0x51, 0x2D, 0xF4, 0xDE, 0xCE, 0x14, + 0x57, 0xA0, 0x3A, 0x36, 0x0C, 0xAB, 0xF9, 0xEB, 0xC0, 0x91, 0x57, 0xED, + 0x21, 0x3D, 0x39, 0x87, 0x61, 0x93, 0x8E, 0x3E, 0x55, 0x3A, 0x7A, 0x2F, + 0x1B, 0xA1, 0x00, 0x89, 0xB5, 0xF7, 0x1C, 0xE0, 0x08, 0x74, 0x00, 0xD8, + 0x9B, 0x4A, 0x74, 0x37, 0xE6, 0x24, 0xDB, 0x7B, 0xAE, 0xA9, 0xF8, 0x92, + 0x35, 0x44, 0x3A, 0x0B, 0xDB, 0xB7, 0xED, 0x65, 0xAA, 0x5F, 0x7F, 0xE3, + 0x35, 0xD5, 0x2D, 0x24, 0x74, 0x53, 0xA6, 0x1D, 0x55, 0x60, 0x1F, 0xB6, + 0x22, 0x9C, 0x14, 0xBA, 0x63, 0x52, 0x7F, 0x88, 0xF9, 0x90, 0xBC, 0xE9, + 0xDB, 0x80, 0xB5, 0x00, 0x2B, 0x12, 0x50, 0xE4, 0x10, 0xC9, 0xBB, 0x18, + 0x76, 0x06, 0x8A, 0x93, 0xD3, 0x0B, 0xE4, 0xCB, 0x2E, 0x5C, 0xA3, 0x42, + 0xC5, 0xFF, 0xCF, 0x9D, 0x53, 0xD1, 0x6B, 0xE7, 0x10, 0x7D, 0x9F, 0x3C, + 0xC3, 0xF9, 0xB1, 0x5B, 0x8A, 0x15, 0x56, 0x63, 0xD5, 0x27, 0x40, 0x1E, + 0x01, 0x1A, 0xDC, 0x0C, 0x6B, 0x7D, 0x42, 0x91, 0xDD, 0x63, 0x9D, 0x1A, + 0xA9, 0xA8, 0xB0, 0xC5, 0xE4, 0x4A, 0x79, 0x4B, 0x04, 0x29, 0xDF, 0x22, + 0x59, 0xC1, 0xF3, 0xAB, 0x09, 0x00, 0x51, 0xEE, 0x3A, 0x96, 0xE1, 0x7B, + 0xDB, 0xC2, 0x36, 0x41, 0x60, 0xB1, 0x84, 0x74, 0x76, 0xB4, 0xA0, 0xD2, + 0x2F, 0x95, 0x5A, 0x89, 0x42, 0xB7, 0x57, 0xCD, 0xFB, 0x3E, 0x5B, 0x33, + 0xDC, 0x0A, 0x62, 0x18, 0x0F, 0x98, 0x71, 0x9B, 0xE6, 0x74, 0x19, 0x39, + 0xF6, 0xFF, 0x69, 0x4B, 0x5C, 0x24, 0x18, 0xF9, 0x3A, 0xD5, 0x70, 0x1F, + 0x7B, 0x5D, 0xAC, 0x01, 0xE9, 0xFE, 0xC2, 0x9E, 0xB5, 0x28, 0xB2, 0xFF, + 0x5A, 0xCB, 0xA2, 0x1A, 0xF2, 0xEA, 0x7D, 0xA0, 0x7A, 0xCC, 0x89, 0xEB, + 0x0A, 0x1C, 0x81, 0x2B, 0x8F, 0xF3, 0x2D, 0xF5, 0x67, 0x58, 0xF9, 0x10, + 0x3A, 0x8F, 0x9E, 0x0A, 0x04, 0xAD, 0x7F, 0xB2, 0x2D, 0xCB, 0xCC, 0x3D, + 0x84, 0x38, 0x46, 0x1B, 0x9A, 0xE1, 0xAA, 0xB2, 0x7E, 0xA7, 0xF3, 0x5E, + 0x43, 0x7B, 0x67, 0x7F, 0xC8, 0x0F, 0x45, 0xC0, 0xB8, 0xEE, 0xE6, 0x68, + 0x16, 0x1E, 0xBF, 0x14, 0xA5, 0xD1, 0xDA, 0x12, 0x7F, 0x42, 0x3B, 0x18, + 0xD3, 0x85, 0x8A, 0xEB, 0x2A, 0x47, 0xCF, 0xEB, 0x85, 0xFB, 0xA5, 0x10, + 0x98, 0x4C, 0x56, 0x4B, 0x63, 0x8A, 0x86, 0xD9, 0x98, 0x36, 0xB5, 0x2B, + 0x4A, 0xA1, 0xC9, 0x2B, 0x7F, 0xF9, 0xC9, 0x29, 0x9C, 0x90, 0xFE, 0x58, + 0x2B, 0x85, 0xD8, 0x01, 0x93, 0x0E, 0x2A, 0x5B, 0x0E, 0xCA, 0xD6, 0xB6, + 0x8F, 0xE1, 0x49, 0x9C, 0x49, 0xEE, 0x83, 0xAD, 0x28, 0x33, 0x94, 0xFB, + 0xA9, 0x2B, 0x47, 0x35, 0xCF, 0xBD, 0x1F, 0x06, 0xFB, 0x9E, 0x70, 0xA4, + 0xEC, 0x26, 0x79, 0x36, 0x3F, 0x67, 0xCF, 0x71, 0x61, 0x00, 0x35, 0xD8, + 0xB2, 0x3B, 0x03, 0x02, 0xD7, 0x80, 0x69, 0xE3, 0x22, 0x5F, 0x57, 0xD6, + 0x0A, 0x12, 0x77, 0xBB, 0x51, 0x93, 0xAC, 0xBF, 0x8A, 0xDC, 0x88, 0x48, + 0x77, 0x5F, 0xD9, 0x40, 0x01, 0x93, 0x83, 0xAD, 0x71, 0x32, 0xFA, 0xF8, + 0xF7, 0x1D, 0x81, 0xE2, 0x6B, 0xB9, 0x39, 0xE3, 0xB7, 0x4C, 0x22, 0xEA, + 0x38, 0x1B, 0xF5, 0x03, 0x9D, 0xBC, 0x5A, 0x81, 0xA5, 0x87, 0xB8, 0x8D, + 0x91, 0x59, 0xA8, 0xBE, 0xB0, 0x47, 0x68, 0x14, 0x70, 0xC2, 0xE0, 0x65, + 0xBA, 0x4B, 0xF4, 0x18, 0x7E, 0xDD, 0xDD, 0x6B, 0xE2, 0xE1, 0x95, 0x14, + 0xA0, 0x3E, 0x26, 0xA5, 0x43, 0x54, 0x51, 0xFE, 0x26, 0x24, 0x90, 0xA3, + 0x32, 0xB3, 0xE6, 0xB4, 0x8D, 0xF0, 0x7A, 0x77, 0x76, 0x2E, 0xE1, 0x0B, + 0x32, 0x44, 0x7B, 0x5F, 0x6B, 0x3F, 0x3C, 0x1E, 0x03, 0x0C, 0x49, 0x6E, + 0x22, 0x5B, 0x18, 0x5F, 0x49, 0x72, 0xDA, 0x3E, 0xB4, 0xB8, 0xA4, 0xE4, + 0xB9, 0xED, 0xAA, 0xC6, 0xAB, 0xB1, 0x69, 0x80, 0x55, 0xCD, 0x9C, 0xDF, + 0x03, 0xC1, 0x24, 0xEC, 0xA7, 0xA1, 0x8C, 0x15, 0x6C, 0x1B, 0x3B, 0xBA, + 0xA5, 0xCF, 0xDF, 0x7B, 0x38, 0x81, 0xDF, 0x40, 0xF1, 0xA4, 0x03, 0x7B, + 0x57, 0xAD, 0x75, 0x96, 0xE9, 0xC2, 0xEE, 0x76, 0x90, 0x81, 0x3E, 0xE8, + 0xD3, 0x23, 0x9B, 0x96, 0x3E, 0xF6, 0xF8, 0xFE, 0xC5, 0x52, 0xA3, 0xBB, + 0x68, 0x98, 0xFF, 0x92, 0xE7, 0xED, 0xC1, 0xDD, 0xF8, 0x6C, 0xC5, 0xBC, + 0xC4, 0x6A, 0x50, 0x53, 0x95, 0x28, 0x1D, 0x8D, 0x84, 0x90, 0xEE, 0xB0, + 0x27, 0x4C, 0xE9, 0x7C, 0x2E, 0x46, 0x94, 0xF5, 0xE3, 0xBB, 0xEB, 0x9F, + 0x6E, 0xD1, 0x6B, 0x6F, 0x83, 0xCB, 0x2A, 0x5A, 0x22, 0xAC, 0x67, 0xE4, + 0x5C, 0xF9, 0x57, 0x20, 0x42, 0xA7, 0xA6, 0x89, 0x22, 0x08, 0x68, 0x92, + 0x64, 0x1B, 0x4B, 0x82, 0xD3, 0x62, 0xE6, 0x80, 0xAC, 0x84, 0x36, 0x19, + 0x24, 0x55, 0x02, 0x4C, 0x79, 0x32, 0xAD, 0x22, 0xF4, 0xE0, 0x46, 0x7B, + 0x8B, 0x96, 0x9A, 0xEC, 0xC7, 0x67, 0xA1, 0x21, 0x8F, 0x5C, 0x48, 0xFC, + 0x52, 0xC7, 0x33, 0xA8, 0x22, 0xA0, 0x3D, 0x72, 0x44, 0x7E, 0xEB, 0x8F, + 0x19, 0xBE, 0x54, 0x98, 0x96, 0x91, 0xA2, 0xCA, 0x72, 0xA6, 0xAE, 0x5E, + 0xA8, 0xA6, 0xC9, 0x14, 0xB3, 0x09, 0xA4, 0x2B, 0x3B, 0xF8, 0x13, 0x13, + 0x1D, 0x51, 0xDC, 0x93, 0x37, 0x1B, 0xFC, 0x18, 0xF9, 0xA4, 0xFA, 0x57, + 0x3E, 0x8D, 0xF7, 0xF0, 0xD8, 0xBF, 0x8D, 0x83, 0x3F, 0x9B, 0x5A, 0x73, + 0x63, 0x82, 0x56, 0x94, 0x2E, 0x02, 0x62, 0x61, 0x01, 0x3C, 0x20, 0x86, + 0x44, 0xCA, 0xF8, 0xB7, 0x2D, 0xDA, 0x99, 0x25, 0xD7, 0x16, 0xE1, 0xEB, + 0x71, 0xEB, 0x16, 0xBC, 0xEB, 0x2F, 0x93, 0x6D, 0x9F, 0xD2, 0xD0, 0xE8, + 0xD4, 0xDD, 0x70, 0x8A, 0x2E, 0x82, 0xF6, 0x23, 0xF3, 0x11, 0x53, 0xC5, + 0xE3, 0x87, 0x06, 0xF9, 0xE6, 0x0A, 0xEE, 0xBA, 0x7B, 0x2C, 0x03, 0xBB, + 0x59, 0x60, 0x1E, 0xD2, 0x55, 0x43, 0xE6, 0xC1, 0x0C, 0x9E, 0x8A, 0x3A, + 0x69, 0xEB, 0x0F, 0x9E, 0x34, 0x3D, 0x48, 0x5D, 0xB4, 0xC1, 0xC0, 0xEF, + 0x50, 0x0E, 0xC6, 0x4A, 0xFB, 0xAC, 0x5F, 0x05, 0x03, 0x39, 0xDE, 0x3C, + 0x09, 0xF4, 0x29, 0xC9, 0x62, 0x90, 0xFB, 0x0F, 0x78, 0x66, 0x31, 0x06, + 0x2D, 0xE4, 0x1D, 0x4A, 0x80, 0xF0, 0x9E, 0x33, 0xBE, 0x89, 0x35, 0x8F, + 0x5D, 0xC0, 0x86, 0x0B, 0xCF, 0x4B, 0xE0, 0xF8, 0xEF, 0x43, 0x69, 0x3D, + 0x0D, 0xF7, 0x74, 0xC0, 0x42, 0x3A, 0x87, 0x44, 0x1D, 0xE4, 0x15, 0x82, + 0x54, 0x13, 0xCB, 0x05, 0xFD, 0x1D, 0xE1, 0x34, 0x97, 0x91, 0xFB, 0x4B, + 0x9F, 0xB8, 0x42, 0xAC, 0x9C, 0x97, 0x01, 0x26, 0x38, 0x76, 0xC5, 0x94, + 0xCF, 0xA0, 0xA3, 0x18, 0x1D, 0x4C, 0x10, 0x63, 0xEE, 0x20, 0x6A, 0xAD, + 0xFD, 0x85, 0xCF, 0x00, 0x9E, 0x3D, 0x63, 0xE9, 0x7F, 0x73, 0x30, 0x65, + 0x39, 0xF4, 0x5C, 0x25, 0xE5, 0x64, 0x80, 0xE3, 0x42, 0x04, 0xCE, 0x25, + 0xCB, 0x4B, 0x7C, 0x47, 0x09, 0x76, 0x1B, 0x92, 0xFA, 0x1E, 0x50, 0x66, + 0x87, 0x24, 0x9B, 0x12, 0x77, 0x9B, 0xC0, 0x6E, 0x26, 0xC8, 0x29, 0x11, + 0x29, 0x6E, 0xEC, 0x13, 0x83, 0x7B, 0xD4, 0x73, 0xDE, 0x86, 0x00, 0x08, + 0xD0, 0xD5, 0xA1, 0xD0, 0xCB, 0xBF, 0x05, 0x1C, 0xBC, 0xBD, 0x6F, 0x65, + 0x69, 0x45, 0x22, 0xFF, 0xBD, 0x0F, 0x02, 0xC0, 0xFC, 0x9B, 0x68, 0x4A, + 0xC0, 0x60, 0xA4, 0x9E, 0x40, 0x50, 0xC5, 0xD2, 0x76, 0x08, 0x7E, 0x58, + 0xB7, 0xE2, 0x4F, 0xA2, 0xCB, 0x0B, 0xA2, 0x56, 0x10, 0xAF, 0x40, 0xA9, + 0xF1, 0x89, 0x77, 0xD6, 0xE8, 0xD5, 0x07, 0x9A, 0x77, 0x4D, 0x44, 0xFE, + 0x18, 0x71, 0xCC, 0x4D, 0x1A, 0x20, 0x5C, 0x1B, 0x44, 0x7B, 0x1E, 0xB4, + 0x25, 0x2C, 0xDF, 0xE5, 0x47, 0xD4, 0xA0, 0xC7, 0xB1, 0x2E, 0xDA, 0xFA, + 0xB1, 0x76, 0xBB, 0xFD, 0xA0, 0x02, 0xEB, 0x4D, 0x04, 0x00, 0xCA, 0xAF, + 0x45, 0x83, 0x58, 0xC6, 0x52, 0x71, 0x5A, 0x3D, 0x3C, 0xF7, 0xF2, 0x29, + 0xA6, 0xA2, 0xA4, 0xF3, 0xC0, 0x30, 0xE0, 0x61, 0xB2, 0x55, 0x78, 0x2C, + 0x57, 0x84, 0xB4, 0x33, 0xB3, 0xF8, 0xD9, 0x57, 0x81, 0x37, 0xA7, 0xC1, + 0x14, 0x3F, 0x1C, 0x9B, 0x0B, 0x44, 0x99, 0xDB, 0x7C, 0x0E, 0x87, 0xF2, + 0xAC, 0xA6, 0x71, 0xFD, 0xC9, 0x29, 0x2E, 0x3C, 0x67, 0x2C, 0x7F, 0xB2, + 0xF7, 0xCB, 0x07, 0x82, 0x54, 0xC8, 0x92, 0x1A, 0x94, 0xEB, 0x46, 0x96, + 0x7D, 0xBB, 0x08, 0x70, 0x8C, 0x8E, 0x5F, 0x7F, 0x2F, 0xAF, 0xAA, 0xF3, + 0x6A, 0x2B, 0xA9, 0xF8, 0xDC, 0x92, 0x20, 0x9F, 0xC5, 0xFC, 0x18, 0xED, + 0x03, 0x85, 0xB1, 0x86, 0xF2, 0x74, 0x93, 0x81, 0x5D, 0x07, 0x48, 0xE4, + 0xED, 0xDC, 0x67, 0x4F, 0x12, 0xA0, 0x3B, 0x2A, 0x85, 0x4C, 0x04, 0xC7, + 0xFA, 0x87, 0xC1, 0x25, 0x20, 0x96, 0x17, 0x5D, 0x89, 0xC4, 0x0E, 0x36, + 0x9B, 0xA6, 0x92, 0x70, 0xFC, 0xF5, 0x1A, 0x5C, 0xAD, 0xED, 0xD8, 0xFD, + 0xDD, 0x67, 0xC6, 0x3A, 0xF0, 0x5B, 0x16, 0xDF, 0x4E, 0x3F, 0xBF, 0xF9, + 0x47, 0x9F, 0x01, 0x47, 0x73, 0xE1, 0x5A, 0x38, 0x7E, 0xC0, 0xA9, 0x18, + 0x70, 0x00, 0x88, 0xFF, 0x21, 0x2B, 0x12, 0xF4, 0xC5, 0x4E, 0xC6, 0x80, + 0x7D, 0xC4, 0x11, 0xB9, 0xC3, 0xF9, 0x5C, 0x69, 0x2A, 0x60, 0x6F, 0xE0, + 0xC6, 0x79, 0x3D, 0x15, 0xC2, 0xE7, 0x23, 0xDA, 0xFB, 0x9B, 0xAB, 0x13, + 0x1D, 0x6D, 0xBD, 0xC2, 0x6F, 0x3D, 0xF7, 0x44, 0xBD, 0x51, 0xF8, 0xA6, + 0xD1, 0x47, 0x7D, 0x8C, 0xA8, 0x52, 0x56, 0xF7, 0x01, 0x04, 0xD5, 0x22, + 0xE8, 0x16, 0x21, 0x61, 0x27, 0xC8, 0xE2, 0xF9, 0xA1, 0x55, 0x44, 0x5F, + 0x8F, 0xC3, 0x22, 0x22, 0x3A, 0xCA, 0x2B, 0x05, 0x31, 0xCF, 0x88, 0x8E, + 0x3B, 0xB0, 0x99, 0x1C, 0xAA, 0x96, 0xF9, 0xDB, 0x41, 0x91, 0x64, 0x0E, + 0xE1, 0xF1, 0xE0, 0xB0, 0x50, 0x62, 0x5D, 0x6B, 0x36, 0xA7, 0x59, 0xD9, + 0x2B, 0x77, 0x36, 0xA2, 0x18, 0xF4, 0x67, 0x74, 0xB8, 0x09, 0x88, 0x91, + 0x38, 0x9A, 0x01, 0x7D, 0xDE, 0xDF, 0xC3, 0xBB, 0x08, 0x59, 0xE9, 0xAD, + 0xA0, 0xEE, 0xC0, 0x4B, 0xC2, 0xBC, 0xB0, 0xAB, 0x4C, 0x32, 0xCB, 0x92, + 0xC9, 0x97, 0x0D, 0xCF, 0x43, 0x83, 0x9D, 0xED, 0x40, 0x98, 0x8E, 0x1B, + 0x2D, 0x67, 0x68, 0x7C, 0x68, 0x8A, 0x38, 0x71, 0xC8, 0xCB, 0x81, 0x32, + 0x95, 0x86, 0x9E, 0x77, 0x5F, 0x9E, 0x85, 0xEE, 0x63, 0xC6, 0x41, 0x49, + 0xD2, 0x98, 0xB0, 0x52, 0x41, 0xDE, 0x59, 0x54, 0x41, 0x64, 0x6F, 0xE5, + 0x1E, 0x73, 0x15, 0xA6, 0x21, 0x51, 0x4A, 0x66, 0xAC, 0xB3, 0x0B, 0x69, + 0x4C, 0xA3, 0xE5, 0xFA, 0xE5, 0xE3, 0xA9, 0xF5, 0x9A, 0x3A, 0x54, 0x04, + 0x82, 0x89, 0xF0, 0x33, 0x8F, 0x5C, 0x0E, 0x1E, 0x80, 0x17, 0x8A, 0x0E, + 0x2F, 0xF8, 0x2D, 0xF3, 0x84, 0xDE, 0xA7, 0x76, 0x1F, 0x4A, 0x39, 0xCA, + 0x6C, 0x8E, 0xA6, 0x27, 0x4B, 0x8C, 0xC8, 0xE3, 0xFF, 0x60, 0xD9, 0xE0, + 0xC2, 0x90, 0xD7, 0x8E, 0x28, 0xA4, 0xD4, 0xC9, 0xA9, 0x05, 0x27, 0xD1, + 0x7D, 0x0C, 0xEA, 0x9F, 0x4B, 0x45, 0xC5, 0x34, 0xDA, 0xE4, 0xAC, 0x51, + 0x23, 0xCC, 0xB0, 0x76, 0x41, 0x91, 0x92, 0x6B, 0x7E, 0x19, 0xDD, 0x7C, + 0x8D, 0x3D, 0xB9, 0xA1, 0xB3, 0x77, 0xEB, 0xD5, 0x62, 0xAF, 0x45, 0x9C, + 0xBD, 0x3B, 0xD4, 0x84, 0xAE, 0xA7, 0x8D, 0x3E, 0x47, 0xE1, 0xFB, 0x6C, + 0xD5, 0x27, 0xC6, 0x39, 0x1F, 0x74, 0x5C, 0x4D, 0x95, 0xE4, 0x7A, 0x79, + 0xA9, 0x9D, 0x29, 0x02, 0xC0, 0xC8, 0xA1, 0x33, 0xB8, 0xDF, 0x2A, 0x2E, + 0xDC, 0x6F, 0x99, 0x9C, 0x49, 0xA3, 0x4C, 0x2A, 0x2A, 0xFA, 0x4B, 0x56, + 0xE8, 0x84, 0x21, 0xBE, 0x6A, 0xDA, 0x6B, 0x71, 0x98, 0x20, 0x52, 0x32, + 0xF3, 0xA9, 0xFA, 0x36, 0xC1, 0x42, 0x58, 0x3B, 0xDD, 0x5F, 0x05, 0x73, + 0x5F, 0x3A, 0xEB, 0xC9, 0x7A, 0x8A, 0x84, 0xC1, 0xDE, 0x50, 0x67, 0x1C, + 0x7B, 0x98, 0xCE, 0xD9, 0x9C, 0x12, 0x81, 0x99, 0xA5, 0x6B, 0x27, 0x8E, + 0x32, 0x43, 0x12, 0xC9, 0xE1, 0x7A, 0x9A, 0x4D, 0xF6, 0x36, 0xAE, 0xF8, + 0x99, 0x4A, 0xC2, 0x90, 0x77, 0x79, 0xEF, 0x10, 0x1A, 0x4D, 0xD6, 0x71, + 0x6F, 0xFB, 0xB8, 0x83, 0x4E, 0x3F, 0xF3, 0xF9, 0xE5, 0xEB, 0xEB, 0xF9, + 0x6E, 0x1C, 0x89, 0x47, 0x52, 0xED, 0x3F, 0x4D, 0xEF, 0x26, 0xA7, 0x3C, + 0x4B, 0x46, 0x9A, 0x32, 0x1E, 0x80, 0x70, 0xBC, 0x5C, 0xF2, 0x80, 0x6E, + 0x62, 0x7C, 0xAE, 0x80, 0xBB, 0x81, 0x82, 0x27, 0xCD, 0xA0, 0x86, 0x34, + 0xD0, 0x80, 0x1E, 0x42, 0xFE, 0x1B, 0xA4, 0x42, 0xC0, 0x67, 0x4D, 0xBB, + 0xFC, 0x08, 0x20, 0x03, 0x6D, 0x62, 0x2F, 0xF2, 0x0C, 0x57, 0x77, 0x6A, + 0xC1, 0x51, 0x66, 0x74, 0x8D, 0x94, 0xE1, 0xF9, 0xF6, 0xC5, 0x78, 0xCD, + 0xCC, 0x68, 0xC6, 0x59, 0x2E, 0x3C, 0x94, 0x49, 0x76, 0x74, 0xD8, 0x67, + 0x41, 0xF6, 0x30, 0xF2, 0x83, 0xF1, 0xA8, 0x31, 0x7B, 0x86, 0x65, 0xED, + 0x5F, 0xD3, 0xF3, 0x9A, 0xF3, 0x7C, 0x57, 0x13, 0x57, 0x2C, 0x00, 0x49, + 0xB6, 0x96, 0xB5, 0x0B, 0x13, 0xE6, 0x2B, 0x17, 0xFA, 0x66, 0xFF, 0x40, + 0xF9, 0x55, 0xF3, 0x61, 0xB2, 0x85, 0xA6, 0xA7, 0xC3, 0x95, 0xFC, 0x69, + 0x48, 0x16, 0x8E, 0x61, 0x84, 0x61, 0xCB, 0xF5, 0x5C, 0x51, 0x8E, 0x22, + 0xC1, 0x26, 0x3F, 0x65, 0x59, 0xD2, 0x05, 0x23, 0xAB, 0xFB, 0x18, 0x09, + 0xFF, 0x91, 0x15, 0x21, 0x3E, 0xFD, 0xA3, 0x74, 0x33, 0xB4, 0x32, 0x49, + 0xA9, 0x3D, 0x73, 0x46, 0xA6, 0xF2, 0x20, 0x4F, 0x93, 0xD8, 0x83, 0xC0, + 0xA1, 0x90, 0x28, 0xBD, 0x58, 0x94, 0x53, 0x5A, 0xF1, 0x1F, 0xC7, 0x74, + 0x9E, 0x6A, 0x6A, 0xD3, 0x11, 0x7A, 0x02, 0x06, 0x1F, 0x9C, 0x84, 0x43, + 0xAE, 0xE0, 0x92, 0x36, 0xD1, 0x93, 0x81, 0x26, 0xDC, 0x31, 0x6C, 0x0A, + 0xD7, 0x5B, 0x39, 0xF2, 0x8B, 0xD3, 0xAF, 0xD9, 0x9D, 0xB2, 0xBB, 0x2B, + 0xFC, 0x0D, 0x0B, 0x7A, 0x71, 0xEA, 0x5E, 0xC9, 0xC5, 0x78, 0xDF, 0xB4, + 0x66, 0xAA, 0xB8, 0x49, 0x3E, 0x3C, 0x9D, 0x69, 0xA1, 0xC2, 0xED, 0x24, + 0xCE, 0xCB, 0x1D, 0x66, 0x05, 0x6B, 0xAF, 0x38, 0x0E, 0xE2, 0x52, 0x26, + 0x36, 0x9A, 0x78, 0xCC, 0xB1, 0xF5, 0x67, 0xC9, 0xA0, 0x4C, 0x47, 0x82, + 0xC0, 0x94, 0xD5, 0x57, 0x63, 0xD5, 0xA6, 0x7E, 0x7A, 0x68, 0xCA, 0x62, + 0xA1, 0x5D, 0xD5, 0x21, 0x7D, 0x84, 0x1E, 0xA1, 0xB5, 0x3A, 0xE3, 0xD4, + 0x06, 0x9B, 0xEC, 0xED, 0x19, 0xE3, 0xD3, 0xCA, 0x90, 0x8C, 0xB7, 0x6E, + 0xDC, 0x1B, 0x58, 0xED, 0x3B, 0x1B, 0x55, 0xE9, 0xAA, 0xED, 0xB9, 0x36, + 0x74, 0x46, 0x24, 0xA8, 0x30, 0x32, 0xE9, 0x1C, 0x56, 0xFE, 0x80, 0xF6, + 0x62, 0x44, 0x99, 0x22, 0x8C, 0xEB, 0x33, 0x8D, 0x6F, 0xB2, 0xF9, 0xAA, + 0x4D, 0x85, 0x64, 0x9F, 0xCE, 0x9A, 0x02, 0x98, 0x30, 0x94, 0x5F, 0x95, + 0xD4, 0xD9, 0xDE, 0xC1, 0x3B, 0xC2, 0x74, 0x84, 0xE4, 0x0C, 0x3F, 0xB6, + 0xFC, 0x5E, 0xCA, 0x22, 0xFE, 0xED, 0xAC, 0x59, 0x08, 0xCD, 0x90, 0x5A, + 0xCB, 0x12, 0x8E, 0xE4, 0xD6, 0x87, 0x3B, 0x75, 0xB8, 0xB8, 0x8F, 0xFC, + 0x20, 0x5F, 0x1B, 0x90, 0xCF, 0x60, 0xF3, 0xF2, 0xBE, 0x86, 0xF4, 0x47, + 0x50, 0x13, 0xCE, 0xF7, 0xBD, 0x1B, 0x51, 0xE5, 0x75, 0x2A, 0xDB, 0x27, + 0xA4, 0x30, 0xF4, 0xE5, 0x75, 0xC2, 0x2F, 0x65, 0xC8, 0xAF, 0x65, 0xFE, + 0x83, 0x82, 0x1D, 0x3B, 0xA6, 0xA3, 0x62, 0xE7, 0x76, 0xD1, 0x03, 0x82, + 0x60, 0xB6, 0x50, 0xE5, 0xE0, 0xF1, 0xB6, 0x1F, 0x1C, 0xFE, 0x03, 0x5F, + 0x33, 0x13, 0xFA, 0x01, 0xF4, 0x56, 0x45, 0xB1, 0xD9, 0x58, 0x8D, 0xC4, + 0xE4, 0xAE, 0x68, 0xD1, 0x5D, 0xA0, 0x47, 0x4B, 0x3B, 0xCF, 0x60, 0x94, + 0xBE, 0x8B, 0xFC, 0xC8, 0x8E, 0x2A, 0x1C, 0xDF, 0x09, 0x10, 0x26, 0x92, + 0x30, 0x9D, 0x15, 0x67, 0x35, 0xD1, 0xD9, 0xAD, 0x09, 0x50, 0x02, 0xA9, + 0xC7, 0xD5, 0xCA, 0x8E, 0x88, 0xD7, 0x17, 0x50, 0x0B, 0x76, 0xA4, 0x21, + 0xCD, 0xE2, 0x6C, 0xBA, 0x36, 0x39, 0x6D, 0xB4, 0xD0, 0xFA, 0x8A, 0x67, + 0x68, 0x3D, 0xF1, 0x8D, 0x3A, 0xB7, 0x61, 0x06, 0x2A, 0x9D, 0x3B, 0xB0, + 0x9B, 0xD1, 0xA1, 0x0A, 0x5A, 0xBD, 0x45, 0xD9, 0x06, 0x17, 0xFD, 0x24, + 0x63, 0x7E, 0x21, 0x76, 0x85, 0x9B, 0x56, 0x4E, 0x5A, 0xDA, 0x98, 0x2C, + 0x63, 0x4C, 0x01, 0xC3, 0x1E, 0xE9, 0xA7, 0xEB, 0xB8, 0x8E, 0xE2, 0x2B, + 0xB4, 0xFF, 0x6B, 0x09, 0x61, 0xFB, 0xE9, 0xCC, 0xDA, 0xE9, 0xEC, 0xA5, + 0xFF, 0x43, 0x68, 0x7E, 0xFE, 0x4D, 0x69, 0x49, 0xF7, 0xF2, 0x99, 0xBD, + 0x56, 0x18, 0xB6, 0x79, 0x98, 0x40, 0x6D, 0xC1, 0x60, 0xF8, 0x09, 0x14, + 0x4C, 0xBD, 0xD3, 0xB8, 0xF3, 0x0A, 0x7C, 0xF2, 0x98, 0x58, 0x61, 0xA6, + 0x30, 0x95, 0xEA, 0xB8, 0x91, 0xF2, 0xD0, 0x30, 0x68, 0x62, 0x25, 0xEF, + 0xFC, 0x4F, 0xC3, 0x5A, 0x40, 0x3C, 0xC9, 0xCE, 0xD9, 0x31, 0xA4, 0xBB, + 0x27, 0x59, 0xAA, 0x30, 0xD8, 0x71, 0xD2, 0x95, 0xDC, 0x76, 0x57, 0xCE, + 0x35, 0x1B, 0x51, 0x04, 0x7F, 0x42, 0x3C, 0xF5, 0x3A, 0xC8, 0xE7, 0x15, + 0x36, 0x8E, 0x69, 0x1F, 0x5E, 0x08, 0x40, 0x0E, 0x63, 0x12, 0x92, 0x1E, + 0x78, 0xF4, 0x49, 0xD0, 0x0A, 0x90, 0xBE, 0x41, 0x3B, 0xBC, 0x8B, 0x50, + 0x89, 0xFC, 0x88, 0x6C, 0x3C, 0x00, 0xFC, 0xC0, 0x3A, 0x52, 0x59, 0x42, + 0xA9, 0xC4, 0x35, 0x71, 0x7E, 0x5D, 0x73, 0x53, 0x28, 0xD7, 0xA4, 0x58, + 0x09, 0x52, 0x0F, 0xF1, 0xD5, 0xCB, 0xD6, 0x3C, 0x6C, 0x5E, 0xF6, 0xF3, + 0x0F, 0xE6, 0x07, 0xF0, 0x25, 0xB0, 0x76, 0x5A, 0xF0, 0x53, 0x70, 0xFB, + 0xF3, 0x3A, 0xDE, 0x52, 0x97, 0x4C, 0x1F, 0x34, 0x7B, 0xEE, 0xD9, 0x4C, + 0xFF, 0xAD, 0x53, 0xC6, 0xBA, 0x74, 0x82, 0x21, 0x81, 0x2E, 0x00, 0x19, + 0x32, 0xAA, 0x3E, 0x52, 0x0E, 0x53, 0x40, 0x1A, 0x63, 0xC4, 0x74, 0xF5, + 0xA2, 0x33, 0x2D, 0xAB, 0x3F, 0xE4, 0x56, 0xFE, 0x1D, 0x91, 0xF3, 0x8F, + 0x46, 0x21, 0x10, 0x1D, 0x38, 0x3D, 0x71, 0x85, 0x6C, 0xD3, 0x44, 0xDA, + 0x3D, 0x7C, 0x69, 0xEB, 0x92, 0xDF, 0xE1, 0x6C, 0x82, 0x88, 0xF5, 0x15, + 0x2D, 0xB2, 0x0F, 0x2D, 0xBF, 0x56, 0x6E, 0x8A, 0xC8, 0x87, 0x20, 0xA2, + 0xA7, 0xBC, 0xFF, 0x2A, 0x4A, 0x1F, 0x2C, 0x5B, 0x0A, 0x84, 0x41, 0x82, + 0xDE, 0xE2, 0x64, 0x0B, 0x42, 0xA6, 0x76, 0x44, 0x93, 0xDC, 0xD6, 0xDF, + 0x26, 0x95, 0x89, 0xEF, 0x76, 0x74, 0x34, 0x93, 0x45, 0x49, 0xB1, 0xB4, + 0x0B, 0x2F, 0xF6, 0x6F, 0xE0, 0xC9, 0x99, 0x47, 0xB1, 0x76, 0x1A, 0xBD, + 0x7E, 0xCD, 0x04, 0x7E, 0xBA, 0x50, 0xA6, 0xB7, 0xC8, 0x31, 0x2C, 0x16, + 0x0E, 0xB9, 0x8A, 0x96, 0xC4, 0x45, 0xB4, 0x06, 0xCE, 0xFF, 0x73, 0x80, + 0xED, 0x24, 0xD0, 0x9E, 0xA9, 0x24, 0x1B, 0x79, 0x25, 0xA9, 0x3D, 0x86, + 0x19, 0x68, 0xBF, 0x31, 0x83, 0x3C, 0x12, 0xB0, 0x5B, 0x23, 0x3B, 0x07, + 0x23, 0x81, 0xAF, 0xDD, 0x62, 0xE8, 0x55, 0x2D, 0x36, 0xA5, 0x16, 0xB1, + 0xA4, 0xFB, 0x20, 0x1A, 0x10, 0x3A, 0x0E, 0x7E, 0x97, 0xFC, 0x29, 0x06, + 0x78, 0xC1, 0x63, 0xB3, 0x6F, 0x64, 0xBE, 0x70, 0x8B, 0x43, 0x70, 0xEB, + 0xEB, 0xE9, 0xEF, 0x7C, 0xC3, 0x59, 0x1B, 0xCC, 0xAB, 0x5B, 0xE0, 0xBF, + 0xF4, 0xC6, 0xD4, 0xE5, 0x07, 0xCF, 0xAB, 0x5E, 0xE8, 0x2F, 0x68, 0xD9, + 0xF6, 0x3A, 0x36, 0x08, 0xE3, 0xF6, 0xAE, 0x7B, 0xC5, 0x7A, 0xF1, 0x16, + 0xC8, 0x46, 0x59, 0xEA, 0xD9, 0xAD, 0x65, 0x74, 0xE7, 0x63, 0xA8, 0xF4, + 0x5E, 0x01, 0x91, 0xE7, 0xEB, 0xA2, 0x0B, 0x92, 0x3C, 0x28, 0x50, 0x9A, + 0x54, 0x76, 0x4A, 0xEC, 0x38, 0x0E, 0x52, 0x02, 0xF4, 0xC8, 0x82, 0xC5, + 0x7D, 0x2D, 0x39, 0x6B, 0x30, 0xB3, 0x68, 0x87, 0x7B, 0x0A, 0x5C, 0x14, + 0xDF, 0x5D, 0xF9, 0xF8, 0x7E, 0x81, 0x6D, 0x76, 0x27, 0x78, 0x33, 0xBC, + 0x9B, 0x9E, 0xEE, 0xDD, 0xFB, 0x24, 0x1B, 0xBD, 0x49, 0x4B, 0x5E, 0xEA, + 0xC9, 0xDD, 0x2A, 0x04, 0x2D, 0xEB, 0xB3, 0xBD, 0x22, 0xDC, 0x61, 0xC3, + 0x95, 0xB7, 0x95, 0x92, 0xDC, 0x32, 0x39, 0xC0, 0x18, 0xC1, 0x43, 0x3B, + 0x20, 0x20, 0x32, 0x0A, 0xB0, 0x51, 0x70, 0x21, 0x59, 0x64, 0x8E, 0x35, + 0xFA, 0xD6, 0xF8, 0x75, 0x56, 0x59, 0x96, 0xA8, 0xEE, 0x3F, 0xF1, 0x49, + 0x64, 0xF1, 0x8F, 0x7C, 0x2B, 0xB9, 0x74, 0xC0, 0x03, 0x55, 0xBF, 0x95, + 0x9C, 0x31, 0x80, 0xDA, 0x37, 0x61, 0x99, 0x28, 0x8A, 0x45, 0x38, 0xF4, + 0x23, 0xC7, 0x55, 0x13, 0x79, 0x01, 0xE2, 0x1D, 0xFC, 0x76, 0x64, 0x20, + 0x4B, 0x63, 0x74, 0x0B, 0x40, 0x8C, 0x11, 0x52, 0xBF, 0xD1, 0x1C, 0xAF, + 0x32, 0xAD, 0x92, 0x11, 0x50, 0x61, 0x57, 0x1A, 0xDD, 0x7A, 0x4B, 0x54, + 0xC3, 0x57, 0x2A, 0xC3, 0xF6, 0x4C, 0xDF, 0x82, 0x6B, 0x5E, 0xD9, 0x7F, + 0x06, 0x52, 0x1D, 0xE3, 0x78, 0x4E, 0x6C, 0xC3, 0x14, 0x73, 0xF1, 0x10, + 0x7D, 0xDC, 0xBE, 0xE0, 0x30, 0x75, 0xCF, 0x24, 0x18, 0x44, 0xA2, 0x61, + 0xC5, 0x36, 0xD8, 0x44, 0x5E, 0x57, 0x3A, 0x2C, 0xFA, 0xDF, 0x6F, 0x0B, + 0x75, 0x69, 0xB7, 0x82, 0x53, 0x78, 0x23, 0x8A, 0x46, 0x65, 0xFF, 0x04, + 0xC8, 0xBF, 0x7D, 0xF0, 0x79, 0xDE, 0x36, 0x78, 0x2B, 0xDF, 0x30, 0x16, + 0x25, 0x71, 0xDC, 0xE3, 0x02, 0xD7, 0x49, 0xF7, 0x08, 0xB4, 0x9B, 0xC1, + 0xEE, 0x73, 0xA5, 0x35, 0x43, 0x9E, 0xB0, 0xEA, 0x11, 0x82, 0xC4, 0xC0, + 0x14, 0x1D, 0x00, 0xDC, 0xB4, 0x43, 0x41, 0xC2, 0x22, 0xA3, 0xBD, 0x1B, + 0x41, 0xEF, 0x9E, 0x3F, 0x3A, 0x50, 0x8E, 0x0E, 0xEB, 0x08, 0x5C, 0xAC, + 0x66, 0x05, 0x19, 0xF0, 0xCD, 0x3D, 0x84, 0xB8, 0x04, 0x0A, 0x22, 0x69, + 0xD2, 0xE1, 0x41, 0x9A, 0x9B, 0xFA, 0xAD, 0xB9, 0x84, 0x08, 0xFF, 0xEC, + 0x50, 0x9B, 0xD2, 0x55, 0xF6, 0x21, 0xA8, 0x4A, 0xF7, 0x19, 0xC4, 0xE9, + 0x1B, 0xE7, 0xD6, 0x97, 0x0F, 0xCB, 0xA3, 0xE1, 0xF5, 0xEB, 0x48, 0x38, + 0x8D, 0xCD, 0x6C, 0x14, 0xC8, 0x30, 0xDD, 0xC6, 0x3D, 0xA0, 0xDB, 0x46, + 0xB1, 0x07, 0x89, 0x38, 0xF7, 0x2E, 0x30, 0x7F, 0xD8, 0x93, 0x92, 0x32, + 0x0B, 0xD8, 0x8B, 0xC8, 0x5A, 0x1A, 0x60, 0xAC, 0xD1, 0x41, 0xEC, 0xB5, + 0xB5, 0xE3, 0x7B, 0xDE, 0x3A, 0x33, 0x24, 0x5E, 0x06, 0x85, 0x2B, 0x65, + 0x74, 0xBA, 0x40, 0x7D, 0x60, 0x87, 0xD3, 0xBE, 0xD9, 0x88, 0xF8, 0x36, + 0xA5, 0x83, 0xB8, 0x83, 0x62, 0x44, 0x20, 0x2F, 0xCB, 0xC7, 0xA1, 0x57, + 0xA8, 0x32, 0x60, 0xAB, 0x97, 0x6F, 0x70, 0x07, 0x2B, 0x41, 0x71, 0xF8, + 0xCE, 0xCD, 0x73, 0x4C, 0xB9, 0x04, 0x14, 0x9E, 0xC2, 0x5A, 0x6F, 0x14, + 0xD0, 0x83, 0x10, 0xAE, 0x2F, 0x67, 0x10, 0x46, 0x5F, 0x6D, 0x40, 0xF5, + 0x2F, 0x77, 0x50, 0x82, 0x65, 0x16, 0xAB, 0x82, 0x3F, 0xBA, 0xF1, 0xBC, + 0x53, 0x2D, 0x86, 0xAA, 0x96, 0x40, 0x14, 0x6D, 0x38, 0x4D, 0x37, 0xD0, + 0x0E, 0xFF, 0x2D, 0xBE, 0x31, 0x04, 0xC3, 0x78, 0x56, 0x28, 0x7A, 0x92, + 0xB6, 0xFD, 0x9D, 0x2D, 0x65, 0x1E, 0x90, 0xFE, 0x30, 0x0E, 0xC6, 0x7B, + 0x08, 0x27, 0x2E, 0xDC, 0x3A, 0xED, 0x07, 0x74, 0xF0, 0xF2, 0x09, 0xE9, + 0x1D, 0x96, 0x5B, 0xB2, 0x4D, 0x37, 0x41, 0xA9, 0xB4, 0xA3, 0x71, 0x2A, + 0xAB, 0x15, 0x4F, 0x31, 0x85, 0xC2, 0xD9, 0x10, 0x22, 0x10, 0xFF, 0xAF, + 0xD1, 0x08, 0x36, 0x0F, 0x05, 0x2A, 0xA9, 0xE2, 0xBA, 0x0E, 0x07, 0xAB, + 0xAC, 0x01, 0xCF, 0xC6, 0xB8, 0xE9, 0x61, 0x45, 0xFB, 0x3F, 0x94, 0x5A, + 0x0C, 0x6D, 0x7B, 0x0E, 0x57, 0x5D, 0x9D, 0xEB, 0x96, 0x0C, 0x1D, 0xC1, + 0x13, 0x24, 0x49, 0xB8, 0xA7, 0xE9, 0x5C, 0x9E, 0xED, 0xAD, 0xF3, 0x56, + 0xED, 0x91, 0xA0, 0xA1, 0x72, 0x51, 0xDE, 0xCD, 0xCC, 0x05, 0x89, 0xD4, + 0x01, 0xA4, 0x80, 0x0D, 0x4E, 0x5A, 0xA9, 0x5F, 0xEA, 0x71, 0x27, 0x84, + 0xE6, 0x70, 0x1D, 0xA2, 0xC9, 0x4C, 0x4C, 0x08, 0xAB, 0xD1, 0x73, 0x9B, + 0x5D, 0xE0, 0xB7, 0x5D, 0xDE, 0x1F, 0x49, 0x75, 0xD1, 0x92, 0x5B, 0x52, + 0x58, 0x3A, 0xCE, 0xA0, 0x25, 0x1F, 0xA7, 0xB1, 0xF7, 0xDD, 0x68, 0xD5, + 0xA7, 0xB6, 0xAA, 0xEC, 0x57, 0x93, 0x61, 0xF5, 0x67, 0x9E, 0x5B, 0x9C, + 0xB8, 0xE0, 0x0A, 0xC5, 0x34, 0x35, 0x25, 0xDC, 0x4B, 0xC5, 0xCF, 0x20, + 0x47, 0x84, 0x53, 0xDD, 0x0B, 0x83, 0x70, 0xD6, 0xF7, 0x2C, 0xF3, 0x55, + 0x3A, 0x52, 0xBC, 0x48, 0x0F, 0xCA, 0xFD, 0x4F, 0x91, 0x79, 0x57, 0xDD, + 0x46, 0xB5, 0xF2, 0xA8, 0x16, 0xC0, 0x06, 0x9B, 0xAF, 0x02, 0x12, 0x15, + 0xB6, 0xB0, 0x48, 0x1E, 0x95, 0xA4, 0x36, 0xBB, 0xD6, 0xF8, 0xBA, 0x1D, + 0x70, 0x50, 0x23, 0xA8, 0xF6, 0xBB, 0x61, 0x46, 0x91, 0x24, 0x16, 0x4E, + 0x02, 0xD8, 0x73, 0x01, 0x78, 0xDD, 0x42, 0x7A, 0xA6, 0x4F, 0xFE, 0x94, + 0xF6, 0xEA, 0x1E, 0x62, 0xB0, 0xAC, 0xE4, 0x94, 0x09, 0x0D, 0x43, 0xF4, + 0xA0, 0xA8, 0x7A, 0xAA, 0x1C, 0x28, 0x49, 0xD7, 0xCC, 0x8B, 0x55, 0xF3, + 0xD3, 0x99, 0x9B, 0xEC, 0x41, 0x6B, 0x86, 0x85, 0x65, 0x1B, 0xC2, 0x2E, + 0xD2, 0xF6, 0x46, 0x9F, 0x46, 0xFF, 0x9A, 0x5F, 0xAF, 0x6F, 0x22, 0x29, + 0x59, 0x40, 0xE4, 0x2D, 0xBE, 0x4A, 0x8E, 0xF0, 0x2B, 0x48, 0x5F, 0xC1, + 0x76, 0xA5, 0x2F, 0xEE, 0x03, 0xEB, 0xCF, 0xA7, 0x2E, 0xB0, 0x27, 0xD7, + 0x49, 0xB1, 0xB4, 0x01, 0x46, 0x00, 0x72, 0xCC, 0x98, 0xD7, 0xA3, 0xBC, + 0x4E, 0xF1, 0x32, 0x3D, 0xF1, 0x29, 0x98, 0xA4, 0x39, 0xD0, 0xD9, 0xD9, + 0x2A, 0x99, 0x14, 0x69, 0xE1, 0x99, 0x70, 0xC8, 0xEE, 0x5D, 0xC9, 0xC3, + 0x92, 0xF3, 0xB6, 0xE7, 0xA7, 0x14, 0xC3, 0xC4, 0xBB, 0x05, 0x44, 0xDD, + 0xDC, 0x77, 0xDB, 0x00, 0x73, 0xC9, 0x0B, 0x17, 0x38, 0xAF, 0xCB, 0x7E, + 0x5F, 0x4D, 0x3F, 0x79, 0x16, 0x10, 0x75, 0x79, 0x69, 0x16, 0xAC, 0x7E, + 0xAA, 0x73, 0xC7, 0x71, 0xF6, 0x01, 0x45, 0xC2, 0xA9, 0xB8, 0xC2, 0x77, + 0x88, 0x45, 0x3A, 0xCC, 0x9E, 0x02, 0xF5, 0xCC, 0x58, 0x4B, 0x98, 0x9B, + 0xA4, 0x7F, 0x9F, 0xB2, 0xE9, 0x8F, 0x0F, 0x21, 0xA2, 0xA3, 0x30, 0x24, + 0x96, 0x8E, 0x45, 0xCA, 0x7E, 0x88, 0x92, 0x8A, 0x81, 0xC5, 0xB5, 0x84, + 0x99, 0x98, 0x2D, 0x97, 0xAF, 0x75, 0x7D, 0x0E, 0xCB, 0x28, 0x96, 0xD5, + 0x4D, 0xFE, 0xDD, 0x30, 0xE1, 0xC3, 0x19, 0x3D, 0x04, 0x5A, 0xEA, 0x09, + 0x82, 0x66, 0x51, 0xE2, 0xE9, 0x03, 0xA3, 0xC2, 0xF7, 0x72, 0x7F, 0xE0, + 0x13, 0xF6, 0x29, 0x15, 0xE9, 0x51, 0xF3, 0x12, 0xE1, 0xB1, 0xC8, 0xC9, + 0x4F, 0xE0, 0x44, 0xA7, 0xE8, 0x80, 0x42, 0x82, 0x98, 0x1D, 0xA9, 0x0F, + 0x17, 0x29, 0xEF, 0xD6, 0xAB, 0x6D, 0x5F, 0x9D, 0xD3, 0x63, 0x61, 0xF3, + 0x63, 0x02, 0xC0, 0xF5, 0xB5, 0x75, 0x52, 0x9F, 0x0B, 0xED, 0x8E, 0x37, + 0x1C, 0xC4, 0x33, 0x02, 0xD8, 0xF5, 0xE4, 0x57, 0x0F, 0xD4, 0x7F, 0x07, + 0xFB, 0x7B, 0x98, 0x92, 0x71, 0x17, 0x45, 0xB0, 0x03, 0xD3, 0x62, 0xFF, + 0x65, 0xDC, 0x5B, 0xA4, 0xA1, 0x8A, 0x3F, 0xF8, 0x0F, 0x34, 0xF8, 0xDF, + 0x59, 0x60, 0xE4, 0xC1, 0x16, 0xC7, 0xAE, 0x46, 0x88, 0x33, 0x9E, 0xE0, + 0xD0, 0xB6, 0x21, 0xB6, 0x4B, 0x77, 0xB0, 0x12, 0x3A, 0x15, 0x15, 0x21, + 0x5E, 0xC7, 0xC5, 0xE3, 0x90, 0x4E, 0x79, 0x96, 0x1C, 0xCA, 0xEA, 0xC3, + 0x2D, 0x0B, 0x8C, 0xCE, 0x3E, 0x54, 0x7A, 0x44, 0xBA, 0xE4, 0xCC, 0x23, + 0x14, 0xEA, 0x73, 0x96, 0x88, 0x54, 0x99, 0xD8, 0x7B, 0x10, 0xB8, 0xB9, + 0xD2, 0xA4, 0x57, 0x63, 0x35, 0xDB, 0x8A, 0xFB, 0xBE, 0x57, 0xA3, 0x9B, + 0x0B, 0x39, 0x35, 0x08, 0x03, 0x9A, 0x22, 0x55, 0x04, 0xE2, 0x14, 0xBF, + 0xA1, 0xCA, 0x15, 0xAC, 0xA6, 0x6E, 0xF7, 0xEC, 0x7B, 0xE4, 0xE7, 0x9C, + 0x22, 0x4C, 0x25, 0x77, 0x77, 0x23, 0xEF, 0xF8, 0xB3, 0x52, 0x88, 0xB2, + 0x85, 0x65, 0xFC, 0xAE, 0xCA, 0xAB, 0x44, 0x77, 0x5B, 0x09, 0xC0, 0xC3, + 0xB1, 0x46, 0xAF, 0xEB, 0xEF, 0x50, 0xC4, 0x47, 0x0E, 0xAC, 0xEF, 0x22, + 0xAF, 0x24, 0x53, 0x51, 0x52, 0xB9, 0x55, 0xD7, 0xA8, 0x1A, 0x1A, 0xC5, + 0xDC, 0x64, 0xD4, 0x0C, 0x15, 0x37, 0x23, 0xC5, 0xD9, 0x2C, 0x02, 0xC5, + 0x53, 0x9D, 0xB4, 0x0C, 0x27, 0xB8, 0x00, 0xA3, 0x2E, 0x38, 0xAD, 0xE8, + 0xD0, 0x52, 0xB0, 0x37, 0x9A, 0xC8, 0x81, 0x33, 0x87, 0x37, 0x0C, 0xB8, + 0x17, 0x45, 0x8A, 0xAC, 0xB1, 0xEF, 0xA4, 0xA1, 0x10, 0x4E, 0x88, 0x13, + 0x10, 0x28, 0xF0, 0x22, 0x55, 0x18, 0x96, 0xB1, 0xDC, 0x54, 0x7B, 0xC3, + 0x7A, 0xA1, 0x8C, 0x58, 0x14, 0x9D, 0xB4, 0xC5, 0x98, 0xA9, 0xBF, 0xB6, + 0x27, 0x4F, 0x7A, 0x1C, 0xF4, 0x03, 0x6B, 0x60, 0x91, 0xB0, 0x1E, 0x9A, + 0x3B, 0x2B, 0x40, 0x30, 0x22, 0x3F, 0x61, 0x16, 0x8E, 0x4D, 0xC0, 0x8F, + 0xED, 0xA5, 0x4F, 0x73, 0x10, 0x4A, 0xD2, 0x73, 0xC5, 0xF8, 0x95, 0x25, + 0xB0, 0xBC, 0x01, 0x14, 0x37, 0x0D, 0x74, 0x45, 0xAA, 0xD6, 0x21, 0x4B, + 0x7D, 0x55, 0x93, 0x16, 0x02, 0xBB, 0xBD, 0x77, 0x4F, 0xEE, 0xEA, 0x29, + 0x3C, 0xDF, 0x45, 0x9A, 0x9B, 0x73, 0xBC, 0x01, 0xF7, 0x18, 0x53, 0x1A, + 0x73, 0x2B, 0x3F, 0x78, 0x69, 0xB8, 0x45, 0x16, 0x9F, 0x76, 0x09, 0x91, + 0x04, 0x21, 0x6B, 0x82, 0xCF, 0xFB, 0x0C, 0xF2, 0x15, 0x6A, 0xDD, 0x67, + 0x2C, 0x21, 0x39, 0x06, 0x13, 0x6C, 0xD7, 0x58, 0x54, 0xBA, 0xAC, 0x8D, + 0x1A, 0x13, 0x8F, 0x4F, 0xC3, 0xE8, 0x0A, 0xCC, 0xA0, 0x25, 0xC5, 0xBD, + 0x49, 0x95, 0x6D, 0x95, 0xA8, 0x6F, 0xCA, 0x85, 0x4F, 0xA1, 0x94, 0x45, + 0x86, 0xE2, 0xBA, 0xD6, 0xE3, 0xFA, 0x91, 0xF5, 0x03, 0xA2, 0x2C, 0xCD, + 0x54, 0x37, 0x61, 0xA6, 0x34, 0xE0, 0x8D, 0x1C, 0xD4, 0xC9, 0x31, 0x4B, + 0x13, 0x04, 0xA6, 0x52, 0xFC, 0x8F, 0x4F, 0x81, 0x0A, 0x15, 0xB0, 0xB0, + 0x33, 0x2F, 0x2A, 0xFC, 0xFF, 0x95, 0x87, 0x66, 0xFD, 0x19, 0xDE, 0x77, + 0x4C, 0xF9, 0x3A, 0x5D, 0x34, 0x5D, 0x47, 0x0B, 0x33, 0x55, 0x9B, 0x90, + 0x13, 0x2C, 0xE3, 0xD8, 0xA9, 0xDB, 0xAA, 0xA0, 0x4F, 0x7F, 0x20, 0xF6, + 0x8C, 0x5A, 0x48, 0x8F, 0x88, 0x95, 0x51, 0x11, 0x95, 0x88, 0x13, 0x31, + 0x4D, 0x6F, 0xA2, 0x5A, 0x1B, 0xE5, 0x16, 0x6E, 0x9C, 0x24, 0xA2, 0x82, + 0x69, 0xAC, 0x0A, 0x54, 0x8B, 0x12, 0x64, 0x4D, 0xC4, 0x51, 0x7F, 0xEA, + 0x4C, 0x44, 0x58, 0xF2, 0xA1, 0x1E, 0xBF, 0x02, 0x15, 0x75, 0x4C, 0x4A, + 0xEB, 0x4F, 0x77, 0xE5, 0xB1, 0x3C, 0x26, 0x4F, 0x21, 0xB9, 0xAD, 0x70, + 0x36, 0x4C, 0x02, 0x10, 0x55, 0x29, 0x7C, 0xA1, 0x01, 0x9F, 0xD9, 0x67, + 0xAB, 0xEE, 0x93, 0xD5, 0x91, 0xDF, 0xC5, 0x18, 0x48, 0x9B, 0x9D, 0x3C, + 0xCB, 0xCF, 0x06, 0x21, 0xA7, 0x5B, 0xE5, 0x83, 0x3B, 0x54, 0xCC, 0x04, + 0x43, 0x63, 0x60, 0x66, 0x60, 0x0F, 0xA2, 0x23, 0xAE, 0xE1, 0x55, 0x78, + 0x09, 0x62, 0x51, 0x0F, 0xAE, 0xF1, 0xE5, 0xBE, 0xCB, 0x4E, 0x83, 0xB1, + 0xB8, 0x45, 0x0E, 0x85, 0x54, 0x69, 0xCC, 0xFD, 0x7C, 0x5C, 0x95, 0xBB, + 0x46, 0xF5, 0x21, 0xB9, 0x86, 0x8C, 0x71, 0x10, 0xF3, 0x6C, 0x1E, 0xE5, + 0xBB, 0x5B, 0xCA, 0x38, 0xAE, 0xF1, 0xB8, 0x73, 0xDB, 0x16, 0x30, 0x28, + 0xB6, 0x18, 0xB4, 0xF4, 0x01, 0x0A, 0x99, 0xCC, 0x01, 0x14, 0x80, 0xC1, + 0xC1, 0xED, 0xC4, 0xE3, 0xE6, 0x92, 0x61, 0x7E, 0x18, 0x44, 0xB2, 0x41, + 0xE6, 0x41, 0xC5, 0xFB, 0x07, 0x75, 0xD3, 0xFB, 0xA7, 0xA9, 0xE7, 0x3B, + 0xAA, 0xFE, 0xB8, 0x16, 0x34, 0x9B, 0xA9, 0xEB, 0x75, 0xBA, 0xE6, 0x19, + 0x21, 0x4B, 0x3E, 0xF9, 0xFF, 0xC7, 0x03, 0x22, 0x42, 0xC4, 0x03, 0x38, + 0x83, 0xA9, 0xB0, 0xCE, 0xB7, 0x32, 0x8E, 0x99, 0x18, 0x8A, 0x3E, 0xC9, + 0x38, 0x23, 0x7E, 0x21, 0x0A, 0xBD, 0x2A, 0x07, 0x3C, 0x05, 0xA6, 0x1E, + 0x5A, 0x56, 0xD8, 0xC8, 0xE7, 0x5F, 0x5D, 0x6D, 0x4F, 0xA6, 0x6F, 0xB6, + 0xE1, 0xEE, 0x65, 0x6A, 0x9F, 0xA1, 0xD8, 0x69, 0xC0, 0x9E, 0x6D, 0x4F, + 0x64, 0x78, 0x34, 0x21, 0x56, 0x46, 0x98, 0xC4, 0x23, 0xE7, 0x4D, 0x25, + 0x24, 0x50, 0x86, 0xFC, 0xED, 0xB9, 0x32, 0x1D, 0x81, 0x0E, 0xE1, 0xFD, + 0x01, 0x67, 0x07, 0xD8, 0xF0, 0x15, 0xFC, 0x67, 0x62, 0x24, 0xD7, 0xB3, + 0xAE, 0x48, 0x26, 0xE2, 0xBD, 0x98, 0x51, 0xE2, 0x28, 0xC7, 0x54, 0x30, + 0xC0, 0x7C, 0xFF, 0xA7, 0x8A, 0x43, 0x19, 0xE0, 0xEF, 0x17, 0x1D, 0xF2, + 0x15, 0xD5, 0x8E, 0x55, 0xAA, 0x8B, 0x98, 0x13, 0xF8, 0xAA, 0xCB, 0xB8, + 0x44, 0x74, 0x8E, 0x54, 0x38, 0xA9, 0xB7, 0x2E, 0xCE, 0x69, 0xEE, 0x12, + 0x13, 0xEB, 0xA4, 0x73, 0xE0, 0x22, 0x0D, 0x1D, 0x38, 0xA5, 0x51, 0x68, + 0xFC, 0x8D, 0x1F, 0xF8, 0x97, 0xE9, 0xD9, 0xF6, 0xC4, 0x0E, 0x19, 0x8C, + 0xB8, 0xB4, 0xE0, 0xB7, 0x9C, 0x88, 0x97, 0x45, 0xA5, 0x09, 0xEC, 0x28, + 0x6C, 0x84, 0xE6, 0xA2, 0x79, 0xD2, 0x82, 0x08, 0x3E, 0xA4, 0xD5, 0x27, + 0x6E, 0x2C, 0x00, 0x3B, 0x2C, 0x69, 0x5C, 0x9F, 0x23, 0x98, 0x14, 0x44, + 0x73, 0x1C, 0x2B, 0x42, 0x69, 0xAE, 0x77, 0xF3, 0xA8, 0x8D, 0xC5, 0xA0, + 0x75, 0xD6, 0xDF, 0xDA, 0xC1, 0x72, 0x77, 0x5F, 0x25, 0x7A, 0x76, 0x80, + 0x8C, 0x78, 0x5D, 0xD4, 0x13, 0xA7, 0x4C, 0x72, 0xB8, 0x8C, 0x0F, 0xE1, + 0x10, 0xE2, 0x00, 0xBA, 0xE9, 0x7A, 0x50, 0x81, 0xDB, 0x60, 0x98, 0x39, + 0x90, 0x58, 0x5B, 0x8E, 0xA7, 0x96, 0x56, 0xB5, 0x0A, 0xC7, 0x72, 0x5A, + 0x26, 0x53, 0x23, 0x99, 0x52, 0xCB, 0xD5, 0xFE, 0xC9, 0xF8, 0xE3, 0x78, + 0x16, 0x80, 0xFE, 0xCC, 0x6A, 0x4F, 0x4B, 0x0C, 0xCA, 0x72, 0xCC, 0xF7, + 0x23, 0xCA, 0x0E, 0x0E, 0x5C, 0xD7, 0xA2, 0xA5, 0xA9, 0x8D, 0xC1, 0xE9, + 0x73, 0x7B, 0x84, 0xD6, 0x86, 0x49, 0x45, 0xD2, 0xD4, 0x05, 0xEB, 0xA8, + 0xD2, 0x5A, 0x69, 0x0F, 0xCB, 0x99, 0x39, 0x26, 0xDD, 0x4F, 0xDC, 0x42, + 0xFD, 0x8F, 0xC8, 0x0B, 0x29, 0xB8, 0x83, 0x3D, 0xB8, 0x96, 0x6C, 0x8A, + 0x5E, 0xC5, 0x28, 0x60, 0xE3, 0xC8, 0x9F, 0xFA, 0x0C, 0xC7, 0xAB, 0x67, + 0x8D, 0x23, 0x0F, 0x35, 0xAB, 0xCF, 0xBF, 0x7D, 0xC2, 0xF6, 0x33, 0xC8, + 0xED, 0x53, 0x86, 0x77, 0x28, 0x0B, 0xD5, 0x47, 0x3E, 0x17, 0x54, 0x9F, + 0x49, 0xD7, 0x29, 0x69, 0x57, 0xC0, 0x70, 0xC9, 0x0E, 0xC1, 0x3A, 0x77, + 0x4A, 0x91, 0x2E, 0x23, 0xF1, 0x13, 0xD0, 0x61, 0x8F, 0xA3, 0x6A, 0xDE, + 0x01, 0x6A, 0xC2, 0x4B, 0x8F, 0xCD, 0x5D, 0x98, 0x70, 0x6D, 0xAC, 0xE3, + 0xFD, 0x17, 0x77, 0x37, 0x81, 0x4C, 0x31, 0xC0, 0x93, 0x74, 0x27, 0x79, + 0xA3, 0x65, 0x7F, 0x35, 0x31, 0x9F, 0x4E, 0x21, 0x13, 0xCE, 0x7E, 0xAB, + 0x01, 0x85, 0x1D, 0x66, 0x95, 0xF5, 0x0C, 0x19, 0x8B, 0x06, 0x3D, 0xB3, + 0x14, 0xD9, 0x64, 0x2B, 0x46, 0xB5, 0x8A, 0x47, 0x0A, 0x98, 0x6D, 0x4E, + 0x7C, 0xE6, 0x26, 0xC8, 0xFA, 0xAB, 0x90, 0xFB, 0x4F, 0x04, 0xCC, 0xB2, + 0x0C, 0x9D, 0x62, 0x45, 0x55, 0x89, 0x4A, 0x55, 0x9B, 0x76, 0x71, 0x1D, + 0x90, 0xE4, 0xCF, 0x46, 0xFC, 0x2F, 0x92, 0x88, 0x9B, 0xFA, 0xF0, 0xCE, + 0xB1, 0x56, 0xB5, 0xD7, 0x65, 0xBF, 0x8A, 0x63, 0x5E, 0x0E, 0x05, 0xDA, + 0xD9, 0xFF, 0x26, 0xFD, 0x2A, 0xA0, 0x98, 0x70, 0x32, 0xBC, 0xBC, 0x93, + 0x22, 0x8C, 0x6E, 0xB1, 0x36, 0xE8, 0x9D, 0x7F, 0xBC, 0xDE, 0xDD, 0x0A, + 0x3F, 0x6D, 0xEA, 0xA2, 0xDA, 0xAC, 0x7B, 0x77, 0x4E, 0x6D, 0x7A, 0x71, + 0xEF, 0x49, 0x6E, 0x31, 0xD1, 0xD6, 0xC9, 0x15, 0xBA, 0x1E, 0x18, 0x98, + 0x92, 0xF1, 0x21, 0x23, 0xC0, 0xB5, 0x9C, 0x37, 0x15, 0x97, 0xA6, 0x48, + 0x09, 0x6D, 0x46, 0x6C, 0x45, 0x06, 0xC5, 0x27, 0x64, 0x54, 0x78, 0xF5, + 0xFF, 0xD3, 0xD3, 0xAE, 0xC8, 0x6E, 0xFC, 0x59, 0xB1, 0xD9, 0x26, 0xE8, + 0xEE, 0x3C, 0x1D, 0xC7, 0xCF, 0xC0, 0xE0, 0xAB, 0xDC, 0x10, 0x74, 0x48, + 0xBA, 0xC2, 0xCA, 0xA1, 0x9C, 0xFB, 0x87, 0x99, 0x7A, 0x6B, 0x37, 0x5C, + 0x6F, 0x9F, 0x97, 0xCB, 0x90, 0x4F, 0xBC, 0x26, 0x15, 0xAC, 0x0D, 0xC6, + 0x72, 0xF6, 0x29, 0xF8, 0xDD, 0x57, 0x68, 0x46, 0x35, 0x60, 0xD8, 0x16, + 0xE7, 0x3F, 0xC7, 0xEC, 0xDE, 0x6B, 0x8C, 0xF0, 0x3D, 0x4A, 0x17, 0x58, + 0x55, 0xD5, 0xE8, 0xA8, 0x4A, 0x62, 0x48, 0x8B, 0x52, 0xBD, 0x13, 0x00, + 0xF7, 0x44, 0xD1, 0x78, 0x3C, 0x1D, 0xAC, 0x34, 0xEE, 0xA5, 0x9B, 0xCC, + 0x6D, 0xAD, 0x30, 0x31, 0xFC, 0x81, 0x91, 0x50, 0x26, 0x2A, 0x48, 0x30, + 0x20, 0xB7, 0xAA, 0x87, 0x02, 0x99, 0xB2, 0xE4, 0xAC, 0x83, 0x71, 0x59, + 0xDC, 0xD9, 0x5D, 0x6C, 0xB1, 0x03, 0x32, 0x97, 0x97, 0xEE, 0xFD, 0xCC, + 0xC4, 0xF3, 0xDD, 0x94, 0xC6, 0x43, 0xB9, 0xB7, 0x1D, 0x2F, 0x9C, 0x9D, + 0x7F, 0x91, 0x51, 0x1A, 0x35, 0xAF, 0xD8, 0x50, 0xFB, 0xBF, 0xD0, 0xA0, + 0x28, 0x39, 0x6F, 0x47, 0x96, 0x57, 0x7D, 0x52, 0x5C, 0xCD, 0xC9, 0x7F, + 0xBB, 0x2C, 0x15, 0xFE, 0x2A, 0x3A, 0xFD, 0x23, 0xB2, 0x91, 0x6F, 0xC7, + 0x3C, 0xB2, 0x91, 0xB9, 0x59, 0xAA, 0x2E, 0x96, 0x45, 0xC5, 0x30, 0xAC, + 0x03, 0x42, 0x78, 0xFD, 0x46, 0xD2, 0x2F, 0x7A, 0x46, 0x55, 0x26, 0x49, + 0x38, 0x4C, 0xA1, 0xD2, 0x78, 0x17, 0xD6, 0x3D, 0x00, 0xCB, 0xF7, 0xB2, + 0x68, 0x7D, 0x4A, 0xDA, 0x2E, 0x54, 0xF6, 0x6C, 0xCF, 0xDE, 0x8F, 0xF7, + 0xFA, 0xF8, 0x87, 0x38, 0xCA, 0xEA, 0xD2, 0x1F, 0xED, 0x04, 0xD0, 0xE9, + 0x12, 0xCF, 0x11, 0x18, 0xAF, 0xF3, 0x4E, 0x13, 0x3D, 0xBC, 0x30, 0xB4, + 0x15, 0x71, 0x8B, 0x2D, 0x63, 0xCA, 0x53, 0x8C, 0x20, 0x6D, 0x0C, 0x4E, + 0xF8, 0x10, 0xD2, 0x1A, 0xC1, 0x0C, 0xE8, 0xCF, 0xE1, 0xA8, 0x93, 0x7E, + 0x8B, 0x32, 0x9D, 0x47, 0x03, 0x2B, 0x92, 0x27, 0x73, 0xE9, 0x39, 0xBD, + 0x9F, 0x7B, 0x76, 0x8B, 0x3C, 0x66, 0xA1, 0x3E, 0x4B, 0x69, 0x36, 0x71, + 0x93, 0x02, 0x47, 0x5E, 0x3D, 0x8F, 0x28, 0x72, 0x15, 0x85, 0x64, 0x1C, + 0x8F, 0x2F, 0x58, 0x8F, 0xDD, 0x25, 0x84, 0x70, 0x0A, 0xD4, 0x8A, 0x3A, + 0x02, 0x08, 0xC6, 0x91, 0xBD, 0xE9, 0xA9, 0x66, 0xD0, 0x9F, 0xE5, 0x2F, + 0xCF, 0xA2, 0x94, 0x7E, 0xB8, 0x91, 0x31, 0x90, 0xC8, 0x06, 0x9B, 0x91, + 0xCD, 0xE7, 0xDD, 0x1D, 0x6F, 0x57, 0x40, 0x59, 0x64, 0x95, 0x49, 0xAA, + 0xA6, 0x48, 0x2F, 0x09, 0x78, 0xE8, 0xA5, 0xCF, 0x41, 0x8C, 0x23, 0x38, + 0xEB, 0xA6, 0x93, 0x7F, 0x33, 0xE1, 0x38, 0x02, 0x64, 0x8C, 0x6A, 0x40, + 0x93, 0xD0, 0x4D, 0xA9, 0x9A, 0x4C, 0xE4, 0x2F, 0x8C, 0xC4, 0xFE, 0x00, + 0xB6, 0x6C, 0xD2, 0x55, 0xA8, 0xB6, 0xF1, 0x44, 0x43, 0x07, 0x53, 0x38, + 0x12, 0xD3, 0xA3, 0x25, 0x76, 0x13, 0x7E, 0x81, 0x39, 0xAB, 0x87, 0x90, + 0x15, 0xEC, 0x81, 0xC4, 0x37, 0x08, 0x18, 0xDC, 0xED, 0xE5, 0xF0, 0xA5, + 0x68, 0x41, 0x52, 0x92, 0xFA, 0x53, 0x70, 0xF6, 0xA0, 0xDC, 0xEF, 0xCF, + 0x6C, 0x3F, 0xDE, 0x72, 0x33, 0x3F, 0x43, 0x84, 0xB0, 0xA0, 0xC5, 0xEF, + 0x1B, 0x45, 0x63, 0x00, 0x6B, 0xDA, 0x3E, 0xCD, 0x84, 0x19, 0xD4, 0xD9, + 0x0D, 0x8C, 0x27, 0xF0, 0x6E, 0xA2, 0x03, 0xD5, 0xFD, 0xD7, 0x8F, 0x43, + 0x46, 0x5E, 0x38, 0x91, 0x7B, 0x2E, 0xB8, 0x65, 0xCD, 0x16, 0xC2, 0xB9, + 0x50, 0x97, 0x1C, 0xAF, 0x3A, 0xE0, 0xA9, 0x44, 0xE7, 0xF6, 0x5E, 0x40, + 0x41, 0x55, 0xDD, 0x05, 0xD9, 0xFC, 0x50, 0xB1, 0x1D, 0x51, 0xEE, 0xB0, + 0x8A, 0x52, 0x38, 0x77, 0x59, 0x36, 0xDE, 0xB2, 0xB9, 0x28, 0x07, 0xE0, + 0xC8, 0x44, 0x80, 0x6D, 0x91, 0x72, 0x65, 0xD8, 0xC6, 0xA2, 0xFF, 0xF6, + 0x61, 0x37, 0x22, 0x1B, 0x98, 0x65, 0xF9, 0x96, 0xDB, 0xF9, 0x33, 0xE7, + 0xAE, 0x25, 0x07, 0xC2, 0x01, 0x54, 0xF3, 0xA3, 0xFD, 0xC8, 0x25, 0x8E, + 0x7B, 0x7F, 0x49, 0xD1, 0x55, 0xA3, 0x17, 0x58, 0x53, 0xF0, 0x0F, 0xCA, + 0x1F, 0x6D, 0xEF, 0x28, 0x46, 0x0B, 0x35, 0x21, 0x66, 0x6C, 0x4F, 0x01, + 0x79, 0x92, 0xD2, 0x16, 0x3C, 0x2C, 0xBE, 0x88, 0x2E, 0x09, 0xC3, 0x8E, + 0x8E, 0x62, 0x0F, 0x5E, 0x4D, 0x3C, 0x0C, 0xFE, 0x02, 0x1A, 0x02, 0xB1, + 0xF4, 0x86, 0xCA, 0x17, 0x0E, 0x57, 0x00, 0x35, 0x6C, 0xA6, 0xBF, 0x29, + 0x35, 0x24, 0x78, 0x30, 0x90, 0xF3, 0xBE, 0x0B, 0x9D, 0x88, 0x79, 0x14, + 0x92, 0x32, 0x8F, 0xA0, 0xC1, 0xF7, 0x98, 0xFA, 0x9B, 0x62, 0x70, 0x84, + 0xA6, 0x5A, 0xA6, 0x03, 0xD0, 0x9F, 0xE9, 0x6A, 0x9F, 0x3A, 0xD4, 0xB7, + 0xE2, 0x83, 0x6A, 0x5B, 0x94, 0x44, 0x01, 0x99, 0x2F, 0x7F, 0x59, 0xA9, + 0xF2, 0xAD, 0x74, 0x15, 0xC7, 0x31, 0x22, 0x13, 0x76, 0xF4, 0x3D, 0x4A, + 0x07, 0xA7, 0xC0, 0x89, 0xFC, 0x7A, 0x83, 0x6D, 0xB1, 0xF8, 0xA3, 0x1F, + 0xB9, 0x3B, 0xCC, 0x81, 0x32, 0x37, 0x65, 0x46, 0x2D, 0xAF, 0x9A, 0x4E, + 0x96, 0x14, 0x3D, 0x57, 0x9C, 0xF1, 0x92, 0xB3, 0x0E, 0x54, 0x4F, 0xF0, + 0xA0, 0x70, 0x66, 0x65, 0x36, 0x8D, 0x11, 0xD0, 0xBD, 0xD6, 0xEB, 0x49, + 0x76, 0x79, 0xB4, 0xB7, 0x91, 0xAA, 0x21, 0x2D, 0xBA, 0x19, 0x1C, 0xDC, + 0x90, 0x16, 0xEC, 0xB7, 0x09, 0xFF, 0x1F, 0xC8, 0xE5, 0x75, 0xDB, 0x42, + 0x35, 0x53, 0x07, 0x77, 0x1F, 0x0C, 0xA3, 0x77, 0xD0, 0xCA, 0xDE, 0xC5, + 0xB8, 0x15, 0xA6, 0xAB, 0x5E, 0x2B, 0xC9, 0x3A, 0x1B, 0xDC, 0xDB, 0x4F, + 0x1C, 0xA7, 0xF7, 0xD7, 0xBF, 0x27, 0x07, 0x0C, 0xF7, 0xFD, 0x64, 0xF1, + 0xA1, 0x89, 0x50, 0xE8, 0xA5, 0x94, 0x12, 0xBC, 0x0B, 0x82, 0x3A, 0xDB, + 0xE4, 0xCC, 0x8C, 0x61, 0x5D, 0xB6, 0xD0, 0x38, 0xC6, 0xF2, 0xE3, 0xE8, + 0x6E, 0xDE, 0xA8, 0x5E, 0x13, 0x05, 0x08, 0x17, 0x1F, 0xE5, 0x04, 0x51, + 0x7E, 0xB8, 0x67, 0x55, 0xEA, 0x3F, 0x09, 0x53, 0xE0, 0x02, 0xD4, 0xD7, + 0xE5, 0x4B, 0x71, 0x0C, 0x28, 0xF0, 0x84, 0x9A, 0x3C, 0x5E, 0x3D, 0xA2, + 0x79, 0xDE, 0x75, 0x8B, 0xCF, 0xA6, 0x69, 0xDC, 0xAB, 0x13, 0x92, 0xFE, + 0xDA, 0xEC, 0x89, 0x7C, 0x88, 0x66, 0x94, 0x14, 0xD2, 0xDB, 0xCC, 0x5E, + 0x5D, 0x5D, 0xD6, 0x64, 0x85, 0x17, 0x9A, 0x48, 0xD3, 0xCC, 0xD7, 0x4C, + 0x43, 0x40, 0x13, 0x56, 0x3C, 0x27, 0x28, 0xDB, 0xDF, 0xF9, 0x7D, 0x10, + 0xE5, 0xB4, 0xAB, 0x62, 0x79, 0x08, 0xFA, 0x9E, 0xCE, 0xB2, 0x92, 0x27, + 0x05, 0x8F, 0x6C, 0x7B, 0xCD, 0xC6, 0xAD, 0x7A, 0xBD, 0x89, 0x04, 0x21, + 0x32, 0x52, 0xF8, 0x5B, 0xB1, 0x53, 0x5C, 0x0B, 0x43, 0x0E, 0xD2, 0x2D, + 0x13, 0xC9, 0xFD, 0x33, 0xB7, 0x5D, 0x91, 0xC5, 0xC8, 0x33, 0xB8, 0xDD, + 0x29, 0x9D, 0x5D, 0xC4, 0x5A, 0xF9, 0x4A, 0x1A, 0xAF, 0x3F, 0x40, 0x0D, + 0x53, 0x64, 0x85, 0x51, 0xC4, 0xCD, 0xA3, 0x2E, 0x68, 0x57, 0xFD, 0x4E, + 0xF6, 0x43, 0x8F, 0x7D, 0x2E, 0x3D, 0x44, 0x14, 0xB0, 0xF1, 0xB3, 0x65, + 0x95, 0x3E, 0x20, 0xE1, 0x19, 0xCC, 0xFB, 0x54, 0xA7, 0x89, 0x7F, 0xF4, + 0xD7, 0x4D, 0x61, 0x00, 0xA0, 0x9C, 0x97, 0x03, 0xA0, 0x0E, 0x95, 0xCD, + 0xF4, 0xF5, 0xF9, 0xCA, 0x2E, 0x3F, 0x23, 0x86, 0xFE, 0xCF, 0xAA, 0x70, + 0x26, 0x8E, 0x80, 0x7F, 0xBC, 0x71, 0x16, 0x40, 0x92, 0x4D, 0xB3, 0xF7, + 0x82, 0x55, 0x60, 0x20, 0xA2, 0x79, 0x88, 0x55, 0x52, 0xD2, 0xD8, 0x62, + 0x1B, 0x4B, 0xBD, 0x3D, 0x95, 0x35, 0x3B, 0x90, 0x98, 0xE5, 0x90, 0x83, + 0xB9, 0x68, 0xF0, 0xD3, 0xFF, 0x20, 0xB9, 0x19, 0xCB, 0xE1, 0xD6, 0x30, + 0x69, 0xDF, 0xEB, 0x59, 0xDF, 0x89, 0x77, 0xD1, 0x49, 0x8C, 0x5A, 0x4E, + 0x8D, 0xD9, 0x63, 0xAF, 0xAA, 0x2E, 0xF1, 0x93, 0x9C, 0xAA, 0xB2, 0x7D, + 0x6C, 0x2C, 0x69, 0x1E, 0xDA, 0x9C, 0x24, 0xAA, 0x56, 0x66, 0x19, 0x03, + 0xBE, 0x21, 0x9D, 0xF4, 0x36, 0x65, 0x5A, 0x02, 0x6B, 0x91, 0x41, 0xF7, + 0x07, 0x68, 0x26, 0xEA, 0x33, 0x1A, 0x79, 0x9D, 0xEF, 0x7A, 0xAF, 0x9B, + 0x66, 0x8B, 0xA2, 0xA7, 0x8C, 0x17, 0x33, 0xA0, 0x64, 0x2D, 0x3E, 0x84, + 0xBC, 0x13, 0x74, 0x52, 0xF9, 0x25, 0x22, 0x67, 0x9A, 0xC3, 0x8C, 0x04, + 0x56, 0x66, 0xD6, 0x55, 0xB7, 0xF5, 0x50, 0xDC, 0x22, 0xB6, 0x0D, 0x80, + 0x49, 0xD9, 0xC8, 0x48, 0x3C, 0xEB, 0x37, 0x42, 0x9E, 0x2F, 0xE4, 0xD5, + 0xA3, 0xD5, 0xBF, 0xD9, 0xBC, 0x3D, 0x99, 0x03, 0xBE, 0x0C, 0x53, 0x18, + 0x93, 0x0D, 0xCE, 0x59, 0xB4, 0x08, 0xFA, 0x93, 0x93, 0xAD, 0xEC, 0x24, + 0xC1, 0x76, 0x07, 0x06, 0xFB, 0x78, 0x93, 0x40, 0xB0, 0x40, 0x7C, 0xBA, + 0x4E, 0xBE, 0x93, 0x04, 0xD5, 0xF6, 0x6D, 0x72, 0x84, 0x09, 0x2D, 0x8A, + 0x5C, 0x86, 0xF3, 0xC0, 0x6B, 0x53, 0xE6, 0xDD, 0xA0, 0x34, 0x41, 0x2B, + 0x46, 0x7C, 0xE3, 0x76, 0x32, 0xD3, 0x3A, 0x8C, 0x46, 0x9C, 0x98, 0xFF, + 0x3D, 0x5F, 0xD5, 0xB0, 0xA1, 0xF2, 0x0A, 0xAE, 0x52, 0x3D, 0xD1, 0x71, + 0xBA, 0x5B, 0x09, 0xB4, 0x52, 0x65, 0xE8, 0x15, 0x80, 0xD5, 0x59, 0x68, + 0x68, 0xEC, 0x2B, 0x80, 0x72, 0xDA, 0xCB, 0xEB, 0x68, 0xBC, 0x68, 0xD0, + 0x19, 0xBC, 0x5E, 0xED, 0x1F, 0x80, 0x8F, 0xD1, 0x76, 0x44, 0x46, 0x6E, + 0xD9, 0x78, 0x91, 0xED, 0x71, 0x9B, 0x4A, 0xCF, 0x1B, 0x1D, 0xDE, 0xC2, + 0x4A, 0xEC, 0xF1, 0x2E, 0xC0, 0xC3, 0xEA, 0x7E, 0x76, 0x1F, 0x74, 0xCE, + 0x9D, 0xF1, 0x6B, 0x94, 0x21, 0x06, 0x00, 0x58, 0x1E, 0x37, 0x6B, 0xFB, + 0xB6, 0x45, 0xB4, 0x71, 0x35, 0x74, 0x20, 0x83, 0xA1, 0xD8, 0x3A, 0x1F, + 0xA4, 0x17, 0x71, 0xEB, 0x10, 0x93, 0xD0, 0xD7, 0x6C, 0xD2, 0x43, 0xF2, + 0xF3, 0x66, 0xC1, 0x55, 0x07, 0x00, 0x54, 0xA1, 0x4A, 0x4E, 0x55, 0xD9, + 0x9D, 0x1D, 0xB0, 0x3F, 0x2E, 0x60, 0xF1, 0x5F, 0x30, 0x1E, 0x66, 0xD8, + 0xE9, 0xCD, 0x99, 0x0B, 0x72, 0x35, 0x99, 0x55, 0x1E, 0x4A, 0xD7, 0xA3, + 0x02, 0x87, 0x27, 0x76, 0x5A, 0x8D, 0xBC, 0x3D, 0xAA, 0xD6, 0xDA, 0xFA, + 0x43, 0xE7, 0xD4, 0xCD, 0x92, 0xF0, 0xAB, 0xEB, 0x9F, 0xD2, 0xC8, 0xA4, + 0x3A, 0xF6, 0x1F, 0xAE, 0xBC, 0x79, 0xDD, 0xDD, 0x98, 0xE6, 0xA5, 0x11, + 0x53, 0x35, 0x24, 0xEE, 0x55, 0xC6, 0x86, 0x17, 0x55, 0x57, 0x8A, 0xCB, + 0xAC, 0x9B, 0xA3, 0xBA, 0x25, 0x24, 0xB6, 0x14, 0xC2, 0x42, 0xB2, 0xDE, + 0x42, 0x0A, 0x23, 0x58, 0xCE, 0xBF, 0x21, 0x2A, 0xDB, 0xF1, 0xBD, 0x78, + 0xD4, 0x18, 0xCC, 0xFE, 0x49, 0xAE, 0x04, 0xD7, 0x94, 0x58, 0x71, 0x6E, + 0x8F, 0x3B, 0xE1, 0xBF, 0x6A, 0x9C, 0x73, 0x88, 0x9D, 0xD7, 0xAB, 0x7C, + 0xE6, 0xAC, 0x31, 0xFB, 0xB0, 0x80, 0xD7, 0x47, 0x8E, 0x32, 0x81, 0x61, + 0xCF, 0xCF, 0x41, 0x2B, 0xA8, 0x84, 0x2D, 0x4F, 0x64, 0x89, 0xC3, 0xC8, + 0xEE, 0xFA, 0xF5, 0x6E, 0xB9, 0x62, 0x38, 0xBC, 0xBA, 0xFF, 0x26, 0x75, + 0xB4, 0xF3, 0x34, 0xB4, 0x94, 0xD1, 0x31, 0x57, 0x87, 0xDF, 0x93, 0xBC, + 0x27, 0xE5, 0x34, 0xEF, 0xF5, 0x50, 0xD1, 0x52, 0x53, 0x36, 0xAD, 0x7F, + 0xF1, 0x7A, 0x0C, 0xAB, 0x29, 0x17, 0x0A, 0xD4, 0xD1, 0x18, 0xA0, 0xC5, + 0xD9, 0xC9, 0xFB, 0xC6, 0x08, 0x47, 0xD8, 0x2D, 0x8B, 0xA6, 0x06, 0xA0, + 0xC1, 0xF3, 0xF4, 0x50, 0x65, 0x0F, 0xF2, 0x1B, 0x04, 0x48, 0x3E, 0x9B, + 0xC4, 0x70, 0x6A, 0xCC, 0xE6, 0x7C, 0x6D, 0x1F, 0x3F, 0x3B, 0x5B, 0xBE, + 0x87, 0x60, 0x31, 0x09, 0x3F, 0xF6, 0x37, 0xF3, 0xD9, 0xB8, 0x13, 0x20, + 0x38, 0x41, 0xF1, 0xF5, 0xE1, 0x2A, 0xDB, 0x33, 0xE4, 0xFA, 0xCE, 0x15, + 0xA0, 0x9D, 0x59, 0x2C, 0x05, 0x92, 0xC0, 0x87, 0xBE, 0x3C, 0x21, 0x53, + 0xEF, 0xF8, 0x63, 0xB5, 0x7F, 0x67, 0x7A, 0xA3, 0x5E, 0x76, 0x75, 0x79, + 0x90, 0x15, 0xA8, 0x8B, 0x06, 0xB4, 0x91, 0x6B, 0xDE, 0x37, 0x0D, 0x31, + 0x40, 0xE1, 0x7E, 0xC4, 0x1F, 0x00, 0xDD, 0xBA, 0x62, 0x00, 0xEA, 0x90, + 0xE5, 0xF2, 0xEE, 0x71, 0x2E, 0x1C, 0xA3, 0xFA, 0xBA, 0x9C, 0x64, 0xFF, + 0x11, 0x07, 0xD2, 0xE7, 0x00, 0xF1, 0x08, 0xAA, 0x8E, 0x1A, 0x55, 0x29, + 0xFB, 0xFB, 0x17, 0x11, 0xC7, 0xA3, 0xA0, 0x7D, 0x10, 0x4E, 0x02, 0xFA, + 0xBB, 0x12, 0x3D, 0x74, 0xA2, 0x84, 0xE7, 0xBD, 0x78, 0x77, 0x1E, 0x97, + 0xC9, 0x33, 0x2B, 0x19, 0x5B, 0x5D, 0xDD, 0xF2, 0xE1, 0xD6, 0xB3, 0x08, + 0x0D, 0xE0, 0x56, 0x71, 0x9D, 0xE2, 0x0C, 0xB9, 0x60, 0xC4, 0x0C, 0x90, + 0x54, 0x07, 0xDC, 0x03, 0x92, 0xC6, 0x20, 0x38, 0x3D, 0x3D, 0xC5, 0xC9, + 0xF6, 0x02, 0x84, 0x7D, 0x84, 0x5C, 0x6A, 0x60, 0xE5, 0xEF, 0xBC, 0x54, + 0x71, 0x0C, 0xD3, 0xF7, 0xED, 0x3D, 0x76, 0x0F, 0x19, 0x15, 0x50, 0x53, + 0xB4, 0x81, 0x8D, 0x0E, 0xCF, 0xA1, 0x59, 0x8D, 0xEF, 0xF2, 0x29, 0x21, + 0xF2, 0x64, 0xCE, 0x9C, 0xE2, 0x96, 0x4A, 0x0C, 0x1B, 0x71, 0x7A, 0x72, + 0x45, 0x24, 0x68, 0xC7, 0xD0, 0x6B, 0xD2, 0x3B, 0x5B, 0x16, 0xEC, 0xFE, + 0x40, 0x84, 0x72, 0xD7, 0x35, 0x7C, 0xA8, 0x80, 0x8C, 0xBA, 0xDA, 0x56, + 0xA3, 0xA9, 0xC1, 0xCC, 0x98, 0x6C, 0x20, 0x42, 0xBB, 0xB7, 0x1B, 0x0C, + 0xCF, 0x98, 0x77, 0x71, 0x07, 0x1D, 0xDA, 0x66, 0xA3, 0xD7, 0xE1, 0x2F, + 0xB0, 0x70, 0x7B, 0x53, 0xA9, 0x80, 0x76, 0x16, 0x4E, 0xB3, 0x82, 0x0A, + 0x33, 0xD0, 0x30, 0x2F, 0x76, 0x89, 0x80, 0x76, 0x25, 0x85, 0xA1, 0x29, + 0x97, 0xFA, 0xE3, 0xAE, 0x6E, 0x44, 0xBD, 0xA2, 0x6A, 0xA5, 0xCA, 0x9C, + 0x13, 0x7A, 0xAE, 0x51, 0x8D, 0x7C, 0xC8, 0xE1, 0xE6, 0xA8, 0x36, 0x01, + 0x34, 0x1D, 0xA6, 0x40, 0x93, 0xF2, 0x2F, 0x7F, 0xCD, 0x29, 0xB5, 0x5B, + 0x15, 0xEE, 0x59, 0x63, 0xE6, 0xD7, 0x77, 0xBB, 0x77, 0x0A, 0x25, 0x4D, + 0xF3, 0x9D, 0x23, 0x0C, 0xD4, 0x6D, 0xBB, 0x11, 0x96, 0x4E, 0x96, 0x15, + 0xDE, 0xFE, 0xE6, 0x1A, 0xD2, 0x10, 0xE2, 0xA4, 0x6B, 0x2F, 0x99, 0xB5, + 0xFA, 0xAC, 0xC5, 0xB6, 0x90, 0xFA, 0x6C, 0x90, 0x16, 0x45, 0xB6, 0x93, + 0x71, 0x6B, 0x80, 0xE1, 0x9C, 0x65, 0x0D, 0x05, 0x84, 0xB0, 0x1B, 0xAC, + 0x4E, 0xAE, 0x6A, 0x42, 0x80, 0xF5, 0xD7, 0xAA, 0x43, 0x93, 0xE1, 0x3E, + 0x51, 0x71, 0x5B, 0x6E, 0xA7, 0x9F, 0x56, 0x9A, 0xFC, 0xFD, 0x3B, 0xA5, + 0x07, 0x7C, 0xF6, 0x65, 0x22, 0xEA, 0x8E, 0x52, 0xAA, 0x51, 0x5A, 0x41, + 0x4A, 0x19, 0x7F, 0x92, 0x18, 0x0C, 0x04, 0x6A, 0xFB, 0x23, 0x30, 0xEC, + 0xF5, 0x5B, 0x4E, 0xEA, 0xE8, 0x4D, 0x3D, 0x87, 0xAE, 0xE7, 0x7C, 0x9A, + 0x9F, 0xC0, 0xAC, 0xB8, 0x28, 0xC2, 0xC8, 0x9D, 0xB9, 0x45, 0x9E, 0x4C, + 0xC6, 0x7F, 0x34, 0x15, 0x2F, 0x58, 0xE5, 0x10, 0x75, 0x5A, 0x44, 0xB2, + 0xB6, 0x2B, 0xF5, 0x1D, 0x8F, 0xF7, 0xD8, 0xF5, 0xB2, 0xF5, 0xAA, 0x88, + 0x16, 0xD0, 0x26, 0xF4, 0x32, 0xFC, 0x8E, 0x60, 0xE7, 0x41, 0x6F, 0x9A, + 0xCA, 0x51, 0x8E, 0x45, 0xF6, 0x39, 0xFF, 0x8C, 0x48, 0x61, 0x40, 0xE1, + 0xC9, 0x45, 0x82, 0x04, 0xEF, 0xB2, 0x59, 0x30, 0xA4, 0x2C, 0x62, 0xD9, + 0x2D, 0xDD, 0xAB, 0xAD, 0x18, 0x81, 0x19, 0x81, 0xCA, 0xCA, 0x75, 0xB3, + 0xD0, 0x37, 0x0F, 0xE9, 0x5D, 0x54, 0x8E, 0x0B, 0xB2, 0x55, 0x2A, 0x98, + 0xC0, 0x75, 0x5A, 0xEB, 0x9D, 0x11, 0x3F, 0x20, 0xE2, 0x3E, 0xB0, 0xB7, + 0xCA, 0xB1, 0xD8, 0x30, 0x66, 0x4C, 0xBC, 0xEA, 0x8F, 0x76, 0x30, 0xC4, + 0x9D, 0x03, 0x21, 0x93, 0xEF, 0x54, 0x06, 0xEC, 0x93, 0xFA, 0x89, 0x48, + 0xC7, 0x9C, 0x06, 0x22, 0x77, 0xBD, 0xD1, 0x5E, 0xCF, 0x60, 0xD6, 0xA5, + 0x17, 0x9A, 0x75, 0x50, 0xF3, 0x97, 0xD4, 0x8E, 0xE3, 0x17, 0x41, 0xFD, + 0xC0, 0x3B, 0xBB, 0x8A, 0xA7, 0x2B, 0x98, 0xF6, 0xBD, 0xE7, 0x14, 0x2D, + 0xE9, 0xEF, 0xC9, 0x0B, 0x6E, 0xCC, 0xE3, 0x17, 0xF3, 0xB8, 0xDF, 0x06, + 0x3A, 0xE1, 0xB3, 0x58, 0x22, 0x3D, 0xEF, 0xEA, 0xBA, 0xF1, 0x9D, 0x4F, + 0xDB, 0xCC, 0x0C, 0xED, 0x57, 0x39, 0x80, 0x3A, 0x3B, 0xBC, 0xEE, 0x29, + 0x04, 0x34, 0xA5, 0x08, 0xE9, 0xDF, 0x96, 0xD3, 0x53, 0xC5, 0x4E, 0xF6, + 0x38, 0xAD, 0xCA, 0x53, 0x77, 0x59, 0xF1, 0x80, 0x9F, 0xA8, 0xB6, 0xDA, + 0x5A, 0x56, 0xAA, 0x84, 0x6C, 0x0E, 0xA8, 0xB2, 0x10, 0x37, 0xC8, 0x6A, + 0xD8, 0x4D, 0x78, 0xAE, 0x36, 0xD0, 0xDC, 0xE7, 0x1D, 0x8E, 0x57, 0xAC, + 0xDD, 0x15, 0xAB, 0xB5, 0x30, 0x3C, 0xE7, 0xE6, 0x51, 0xD3, 0x26, 0xF6, + 0x13, 0x1D, 0xC8, 0xFC, 0x28, 0x83, 0x5E, 0x64, 0xA6, 0xCA, 0xA7, 0x67, + 0xE6, 0x34, 0x19, 0x66, 0xC8, 0x07, 0xB6, 0x74, 0xB2, 0x59, 0xAE, 0xDA, + 0x36, 0x3F, 0x1F, 0xF6, 0x81, 0xEB, 0xC7, 0xB3, 0x6D, 0x1F, 0x87, 0xA8, + 0x90, 0x37, 0xD5, 0x85, 0xC3, 0x17, 0xC5, 0xE5, 0xE8, 0xCE, 0x83, 0xB5, + 0x73, 0x49, 0xA7, 0x2B, 0x91, 0x28, 0x2D, 0x2A, 0xC2, 0x22, 0xA7, 0x31, + 0x18, 0xA6, 0xA4, 0x8C, 0x45, 0x68, 0xA5, 0x95, 0xA4, 0x91, 0xA3, 0xEE, + 0x4E, 0x2D, 0xE7, 0xEB, 0x20, 0x8E, 0xE5, 0xF6, 0x9E, 0x53, 0x15, 0xCE, + 0xA9, 0x21, 0x18, 0xE3, 0x9B, 0x75, 0x32, 0x02, 0x3D, 0xFC, 0x2C, 0x9D, + 0x85, 0x6A, 0xB2, 0xB9, 0x5D, 0x3A, 0xD1, 0x85, 0xFB, 0xD8, 0xB8, 0x8B, + 0x48, 0x09, 0xD3, 0xFD, 0xED, 0x11, 0xAA, 0x90, 0xB5, 0x25, 0xC8, 0xB9, + 0xA5, 0x49, 0xE9, 0x1E, 0xD0, 0x43, 0xBA, 0x7A, 0x49, 0xB7, 0xE3, 0x87, + 0xBE, 0xE0, 0xF4, 0x83, 0xDA, 0x82, 0x4F, 0x9E, 0xC1, 0x55, 0x57, 0xF2, + 0x58, 0x20, 0x63, 0xCF, 0x2C, 0x34, 0x61, 0x6C, 0x15, 0xEF, 0x11, 0xB3, + 0x7E, 0xA6, 0x13, 0xD9, 0x2F, 0xD1, 0xAD, 0x61, 0xDE, 0x69, 0xB9, 0x9D, + 0x1A, 0x24, 0x72, 0x5D, 0x4E, 0xA0, 0xB4, 0x7E, 0xE9, 0x14, 0x77, 0x4C, + 0xD6, 0xAE, 0xF6, 0x35, 0x69, 0x2D, 0x28, 0x98, 0x29, 0x73, 0xDE, 0x1D, + 0x3D, 0x10, 0x50, 0x8C, 0x55, 0x3D, 0x27, 0x89, 0x57, 0x1F, 0x7B, 0x62, + 0xD9, 0x12, 0xF7, 0x8D, 0xD3, 0x0F, 0x6B, 0x98, 0x6A, 0x64, 0xF7, 0x62, + 0xFB, 0x69, 0x6D, 0x14, 0xF1, 0xF5, 0x6D, 0x5E, 0xC1, 0x79, 0x3C, 0x1D, + 0xDE, 0x45, 0x95, 0xE4, 0x10, 0x70, 0x68, 0x78, 0x0F, 0x70, 0xBE, 0xAC, + 0xFE, 0xD3, 0x6E, 0x5B, 0x9F, 0x7E, 0x2C, 0xD3, 0x0E, 0xC2, 0x6A, 0x96, + 0x4D, 0x11, 0xEA, 0x62, 0x6F, 0xAC, 0xAB, 0xE7, 0x8E, 0x0F, 0xC4, 0xFB, + 0x23, 0x06, 0x7E, 0x0A, 0x87, 0x8E, 0x8D, 0xA8, 0xE9, 0x90, 0x2D, 0xA2, + 0xBF, 0x0B, 0x4C, 0x4C, 0x91, 0xE1, 0x7F, 0x55, 0x7C, 0x01, 0x94, 0xE3, + 0xA1, 0x08, 0xA0, 0x52, 0x8A, 0x2B, 0x0F, 0x5D, 0xD5, 0x70, 0x5F, 0x65, + 0x1C, 0xB9, 0x9B, 0x0C, 0x2B, 0xD6, 0x8E, 0x95, 0x29, 0x6C, 0x69, 0x63, + 0xEA, 0x50, 0xB1, 0x2F, 0xAE, 0x06, 0x14, 0xDD, 0x44, 0x38, 0x59, 0xF4, + 0x35, 0xC6, 0x5B, 0xE9, 0xA8, 0x42, 0x10, 0xB1, 0x3C, 0x56, 0x76, 0x33, + 0x81, 0x88, 0x9D, 0x5B, 0x71, 0xEB, 0xA8, 0x78, 0xA2, 0xC6, 0x37, 0x3E, + 0x75, 0xDB, 0x4F, 0xB5, 0xE6, 0x9E, 0x53, 0x6C, 0x66, 0x65, 0x4C, 0x9F, + 0xF7, 0x52, 0x7A, 0x24, 0x5B, 0x1C, 0xD1, 0x6B, 0xFE, 0xD4, 0x05, 0x22, + 0x5D, 0x4A, 0x85, 0x88, 0x82, 0xF6, 0xF7, 0x25, 0xF5, 0xED, 0xF0, 0xCC, + 0x47, 0xDE, 0x79, 0x9A, 0x88, 0xBE, 0xA1, 0x94, 0xF1, 0x4E, 0x2C, 0xFA, + 0x8C, 0xE5, 0xE0, 0x8C, 0xA1, 0x86, 0xFF, 0x2B, 0x0A, 0x84, 0x1C, 0xBB, + 0x38, 0x49, 0x94, 0x33, 0xBD, 0xBA, 0xAB, 0x8B, 0x66, 0x6D, 0x2C, 0x08, + 0x78, 0x21, 0xB7, 0xDF, 0xAD, 0x17, 0x23, 0xCF, 0x42, 0x4E, 0xBD, 0x4F, + 0x1B, 0x50, 0x9A, 0x55, 0x60, 0x1D, 0x1D, 0x52, 0xAC, 0x3A, 0x70, 0x8E, + 0x20, 0x4C, 0x74, 0x7F, 0xBE, 0xC1, 0xFB, 0xF7, 0x0E, 0x03, 0x90, 0x36, + 0x25, 0x08, 0x10, 0xAD, 0x02, 0xAB, 0x0E, 0xD0, 0x3E, 0xA3, 0xF8, 0x8D, + 0x06, 0x73, 0x09, 0x07, 0x81, 0x1B, 0x07, 0x15, 0x56, 0x13, 0xB4, 0x5A, + 0xBD, 0x88, 0xB5, 0xA8, 0x64, 0xC2, 0x8C, 0x20, 0xDD, 0xA5, 0xD1, 0x3F, + 0x43, 0xEA, 0xD1, 0x64, 0x70, 0x78, 0x66, 0x0F, 0x14, 0xC8, 0x13, 0x30, + 0x74, 0xEE, 0x2D, 0x8C, 0xD3, 0x39, 0x3B, 0xDA, 0x21, 0x64, 0x66, 0x0E, + 0xC0, 0xC2, 0xCF, 0xF9, 0x27, 0xDD, 0x95, 0xDC, 0xA7, 0x2A, 0x72, 0xE2, + 0x2C, 0x60, 0x6F, 0x93, 0x45, 0x36, 0x58, 0x7B, 0xD2, 0x47, 0x88, 0xDF, + 0xCD, 0xD7, 0x76, 0xEC, 0xA6, 0x2C, 0xE4, 0x5E, 0xD9, 0x74, 0xBD, 0x06, + 0xC7, 0xBD, 0xBB, 0x09, 0x87, 0x97, 0x2E, 0x2B, 0x55, 0x48, 0xC1, 0xCD, + 0x58, 0xB0, 0x33, 0x31, 0xD8, 0x19, 0x56, 0x4A, 0x57, 0x33, 0xEA, 0x86, + 0xA7, 0x68, 0x2A, 0xBB, 0x15, 0xC9, 0xB5, 0x9C, 0xCE, 0x77, 0x82, 0xD5, + 0x56, 0xE2, 0x8C, 0xA0, 0xC3, 0x86, 0x0A, 0x61, 0xE4, 0xF8, 0xF6, 0x1F, + 0xA6, 0xE1, 0xD7, 0x96, 0xC9, 0xD7, 0xD7, 0x12, 0xB8, 0x2E, 0xFB, 0x31, + 0x8D, 0xFA, 0x13, 0x4C, 0xE7, 0x82, 0x90, 0xBC, 0x41, 0xA5, 0x9B, 0x55, + 0x24, 0xF5, 0xCE, 0xA6, 0x3D, 0x24, 0xCF, 0xB1, 0x66, 0xF9, 0x51, 0x2C, + 0x86, 0xCD, 0x67, 0x82, 0x3F, 0xA9, 0x29, 0x6B, 0x33, 0x00, 0xD2, 0xBB, + 0x75, 0x12, 0xEC, 0x8F, 0x0E, 0x45, 0x2A, 0x5C, 0x2D, 0x79, 0xC8, 0xFD, + 0x84, 0xE8, 0x29, 0x61, 0x73, 0xFF, 0x9F, 0xB3, 0x23, 0x9C, 0xD5, 0x56, + 0x47, 0x72, 0x71, 0xF3, 0x69, 0xC5, 0xD5, 0x48, 0x6B, 0x12, 0xBF, 0x93, + 0xB0, 0x2F, 0x6F, 0x31, 0xF6, 0xCD, 0x53, 0xAB, 0x9F, 0xA3, 0x61, 0x60, + 0x09, 0x44, 0x27, 0x18, 0x75, 0x90, 0xFA, 0x72, 0x77, 0xC9, 0xC7, 0xFC, + 0x2F, 0x37, 0x9A, 0xC2, 0x94, 0xE9, 0xE0, 0x55, 0x44, 0x15, 0x8A, 0xFC, + 0xE2, 0x68, 0x93, 0x69, 0x68, 0x79, 0xC3, 0x49, 0xF7, 0x6B, 0xCA, 0xE3, + 0xF4, 0x51, 0xDB, 0x05, 0x66, 0xBF, 0x95, 0x80, 0x9B, 0xEA, 0xED, 0xE7, + 0x9A, 0xB6, 0xFF, 0xA1, 0xBB, 0x2D, 0x4B, 0xF9, 0xD1, 0xAC, 0x8C, 0x1B, + 0x8A, 0xF5, 0xEE, 0x37, 0xDF, 0xC8, 0xEA, 0x73, 0x23, 0x74, 0xAE, 0xCE, + 0x5F, 0x9B, 0x08, 0x3D, 0xD9, 0x40, 0xF2, 0x0B, 0x0D, 0x0D, 0x8D, 0x6D, + 0x5C, 0xAB, 0x7B, 0xB3, 0x12, 0x7E, 0xA1, 0xD5, 0xEA, 0xD5, 0xA8, 0x13, + 0xF9, 0x71, 0xE2, 0x3A, 0x5B, 0x35, 0x8C, 0x7A, 0x6F, 0x52, 0xB0, 0xB8, + 0x0F, 0x78, 0x30, 0xF3, 0xD5, 0x8A, 0x93, 0xF6, 0x24, 0x75, 0xBE, 0x18, + 0xB1, 0x81, 0x6A, 0xC3, 0xCC, 0x5B, 0x23, 0x55, 0x9D, 0xEB, 0x5F, 0x25, + 0x76, 0x5C, 0xCD, 0x9E, 0x58, 0x12, 0xFD, 0x49, 0xC5, 0x46, 0xD3, 0x5D, + 0x45, 0xAD, 0xCD, 0xC1, 0x4A, 0xA2, 0x7B, 0xF7, 0x5D, 0x13, 0x97, 0xCF, + 0xB4, 0x94, 0xAA, 0xCD, 0xC9, 0xDC, 0x9C, 0xE4, 0xB1, 0x67, 0xE1, 0x7D, + 0x11, 0x64, 0x2E, 0x13, 0x59, 0x70, 0xB9, 0x27, 0x33, 0x77, 0xB7, 0xC1, + 0xA6, 0x54, 0xAA, 0x43, 0x94, 0xA1, 0x06, 0xA4, 0xDE, 0x8F, 0x0A, 0x9B, + 0xD5, 0x40, 0xBF, 0x7E, 0x69, 0xAA, 0x5C, 0x0A, 0xDC, 0x93, 0xFD, 0x05, + 0x04, 0x6F, 0x9D, 0x1F, 0x42, 0x7D, 0x2A, 0x60, 0x77, 0x87, 0xF4, 0x52, + 0xAB, 0xC3, 0xD5, 0x88, 0xF5, 0x89, 0xA0, 0xC7, 0x6A, 0x48, 0xB9, 0x75, + 0xE5, 0x39, 0x7A, 0x39, 0xC1, 0x25, 0xC6, 0xF8, 0xF6, 0x96, 0x7B, 0x0F, + 0x4B, 0xBC, 0x37, 0x46, 0x9D, 0xA7, 0xA5, 0xDD, 0x71, 0x99, 0xDA, 0x12, + 0x88, 0x18, 0x80, 0x04, 0xF9, 0x5B, 0xDE, 0x01, 0x2C, 0xA2, 0x97, 0xDF, + 0xC9, 0xC3, 0xC8, 0xAB, 0x18, 0x80, 0x3D, 0xDA, 0xD0, 0xD6, 0x9C, 0xDC, + 0xE6, 0xA1, 0x08, 0xD8, 0x63, 0xC0, 0x28, 0x6E, 0x61, 0x33, 0x3F, 0x44, + 0xD0, 0x8B, 0xB9, 0x4D, 0xB5, 0x99, 0x53, 0xE9, 0x20, 0x02, 0x2F, 0x40, + 0xD6, 0x16, 0x32, 0x1E, 0xE7, 0x6D, 0x20, 0xCA, 0x73, 0xC7, 0xCA, 0x3A, + 0x3C, 0x0C, 0xFE, 0xBB, 0xE8, 0xB4, 0x5F, 0x85, 0xA6, 0x33, 0x9C, 0x3D, + 0x4B, 0xD9, 0x94, 0xAA, 0x5D, 0x23, 0xDE, 0xC7, 0x8F, 0xDE, 0xF3, 0x94, + 0x54, 0x56, 0x36, 0x9A, 0x52, 0x18, 0x6A, 0x91, 0x0E, 0x00, 0xD4, 0x2F, + 0xBB, 0x2A, 0x2E, 0xEB, 0x11, 0x05, 0xA5, 0xB3, 0xA9, 0x9A, 0xB1, 0x96, + 0xAB, 0xBB, 0x5F, 0x55, 0x9F, 0x9E, 0xDB, 0x44, 0x44, 0xE7, 0x19, 0x2F, + 0x42, 0xAA, 0x66, 0xA1, 0x8E, 0xFC, 0x4F, 0xD5, 0xBC, 0x6C, 0x70, 0x65, + 0x05, 0x4F, 0x0A, 0xD4, 0xD1, 0x11, 0xA8, 0x24, 0x4A, 0xDD, 0x6C, 0x70, + 0xA4, 0x62, 0xC6, 0x17, 0xB1, 0x55, 0xF1, 0x2D, 0x7B, 0x3D, 0x8F, 0xF9, + 0xB6, 0x86, 0xEF, 0xD7, 0xF2, 0x70, 0x2C, 0xF0, 0x82, 0x3F, 0x2E, 0x05, + 0xC6, 0xFE, 0xD6, 0x14, 0xFA, 0x43, 0xCE, 0x3A, 0xD9, 0xC3, 0x18, 0x42, + 0xF8, 0xE3, 0x92, 0x59, 0x90, 0x5C, 0xE1, 0xBE, 0x30, 0x36, 0xEF, 0x15, + 0x9E, 0xFB, 0x1F, 0xD0, 0x82, 0xCF, 0x34, 0xB8, 0x44, 0xF3, 0x6C, 0x98, + 0x13, 0x9A, 0x25, 0xEC, 0xD7, 0x8C, 0x1B, 0x7D, 0x92, 0x91, 0xBB, 0x39, + 0xD9, 0x5C, 0x76, 0xBA, 0x5D, 0x8B, 0xA3, 0xF3, 0x48, 0x72, 0x7D, 0xAE, + 0x6E, 0x2B, 0x41, 0x6D, 0xCA, 0xDC, 0xBA, 0xD4, 0x01, 0x47, 0x5E, 0x92, + 0xDA, 0x8F, 0x06, 0xAF, 0xB5, 0x76, 0xDE, 0xA2, 0xC0, 0x64, 0x1A, 0xB3, + 0x5F, 0xA1, 0x16, 0xCF, 0x77, 0x48, 0x1E, 0x5C, 0x7F, 0xCD, 0x03, 0xA1, + 0x2F, 0x83, 0x8C, 0x1B, 0x6B, 0xFD, 0x9B, 0x67, 0x32, 0x7E, 0xBE, 0x9E, + 0xE0, 0x82, 0x75, 0x7E, 0xAC, 0xD7, 0x3F, 0x26, 0x53, 0xB8, 0x83, 0x15, + 0x16, 0x49, 0x70, 0x01, 0x6F, 0x22, 0x3D, 0x9B, 0x56, 0x61, 0x96, 0x59, + 0x05, 0x98, 0x0F, 0xA5, 0x76, 0x26, 0x5D, 0xFE, 0x92, 0x0E, 0xF4, 0xAC, + 0x73, 0x40, 0xEF, 0xEB, 0x56, 0x14, 0xCD, 0x8D, 0x94, 0x8E, 0x34, 0xBF, + 0x5B, 0xA0, 0xD0, 0xE3, 0xBA, 0xF3, 0x1F, 0x0D, 0x40, 0xD0, 0xE4, 0x53, + 0x00, 0xCB, 0x30, 0x4A, 0x8C, 0xA2, 0x95, 0xCC, 0xB0, 0x36, 0xE3, 0x51, + 0x19, 0x00, 0xBE, 0x86, 0x91, 0x7F, 0x15, 0x1B, 0xF1, 0x9D, 0x37, 0x9C, + 0x24, 0xCB, 0x7F, 0xFB, 0x96, 0x22, 0x49, 0xC0, 0x5F, 0x12, 0xE8, 0x97, + 0x00, 0xCB, 0x09, 0x2B, 0x10, 0x82, 0x88, 0xEA, 0x83, 0x79, 0x50, 0xA5, + 0x78, 0x40, 0x61, 0xD3, 0xB7, 0x28, 0x55, 0xC9, 0x16, 0xFA, 0x31, 0xA0, + 0x38, 0xCE, 0x89, 0x36, 0xA3, 0x75, 0xC0, 0x13, 0xF0, 0xB1, 0xD9, 0x0B, + 0x83, 0x92, 0x84, 0xEC, 0xF8, 0x42, 0x26, 0xF8, 0xA1, 0xDE, 0x4F, 0xC1, + 0xE9, 0x22, 0x74, 0xA1, 0x11, 0x93, 0x3F, 0x98, 0x5C, 0x7D, 0x84, 0xC1, + 0x66, 0xD0, 0xDC, 0x7E, 0x5A, 0x9B, 0xF1, 0xBD, 0x46, 0xBA, 0x2B, 0xD9, + 0xCA, 0x80, 0xDA, 0x3D, 0x04, 0xE1, 0xBE, 0x74, 0x1F, 0x83, 0x6C, 0xD1, + 0x1C, 0xC5, 0x6F, 0x1D, 0x1E, 0xF3, 0x29, 0x93, 0x12, 0xFB, 0x19, 0xCF, + 0xB7, 0xA0, 0xF6, 0x21, 0x24, 0x5E, 0x1D, 0xD9, 0x1C, 0x66, 0x21, 0xE9, + 0xC8, 0x54, 0xDB, 0x5B, 0x81, 0x4B, 0xDB, 0xE0, 0x36, 0x88, 0xC5, 0x5F, + 0x0B, 0xA2, 0xBD, 0x8D, 0x6B, 0x14, 0x46, 0xA0, 0xE0, 0x37, 0x1D, 0x11, + 0xB0, 0x15, 0x53, 0xF5, 0xBF, 0xF8, 0x0F, 0x6E, 0xCB, 0x42, 0xE2, 0xFC, + 0xE5, 0xBB, 0xFB, 0x8F, 0x98, 0x23, 0x21, 0xC2, 0x69, 0x6D, 0x13, 0x2A, + 0x55, 0xEF, 0x32, 0xBF, 0x9E, 0xC3, 0x74, 0x55, 0x0D, 0xA3, 0xF8, 0x56, + 0xC0, 0xE1, 0x25, 0x91, 0x78, 0x79, 0x6D, 0xEA, 0xEB, 0xCF, 0x48, 0x82, + 0xB0, 0xEB, 0x44, 0x0C, 0xB6, 0xF6, 0x21, 0x9D, 0xD2, 0xF4, 0x67, 0xC1, + 0x93, 0x55, 0x48, 0x35, 0xB3, 0xE0, 0x62, 0x86, 0x9C, 0x5C, 0xF1, 0x4C, + 0xB5, 0x2A, 0xAF, 0x3D, 0x42, 0xFD, 0x6F, 0x95, 0x4F, 0x00, 0xE9, 0x42, + 0x20, 0x6E, 0x8B, 0x51, 0xFF, 0xD4, 0xD8, 0xCE, 0x76, 0xE4, 0xE8, 0x9F, + 0x2B, 0x0E, 0x47, 0x12, 0xC4, 0xEF, 0xAB, 0x91, 0xCF, 0x37, 0x4F, 0x52, + 0x29, 0x75, 0xC3, 0xC0, 0xB8, 0xF4, 0x04, 0x9E, 0xA9, 0x86, 0x6B, 0x93, + 0x21, 0x7A, 0x11, 0x26, 0x33, 0xC0, 0x0A, 0x7B, 0xED, 0x0F, 0x2B, 0x9F, + 0x91, 0xE3, 0x19, 0x47, 0xD8, 0xD8, 0x0D, 0xCB, 0x6D, 0xC0, 0xAC, 0xEB, + 0xEB, 0x59, 0xA6, 0x44, 0x56, 0xE3, 0x95, 0xB6, 0x2A, 0xBA, 0xBC, 0x65, + 0x5B, 0x0C, 0x9E, 0x04, 0xDE, 0x65, 0x8E, 0x29, 0x73, 0x18, 0x0B, 0xC7, + 0xA3, 0x76, 0x43, 0xD4, 0x07, 0xF0, 0x3B, 0x09, 0xCC, 0xF7, 0x10, 0x57, + 0x9C, 0x05, 0x2A, 0xC5, 0x8C, 0x53, 0xE3, 0xA9, 0xA6, 0x20, 0x0B, 0x71, + 0xAF, 0x4B, 0x95, 0x8F, 0xB1, 0xA6, 0x96, 0xDC, 0xFC, 0x85, 0xC5, 0x94, + 0xBF, 0x86, 0xA6, 0x88, 0xC9, 0xEB, 0x04, 0x2A, 0x3B, 0xF8, 0x17, 0x07, + 0x7D, 0x0F, 0x89, 0x44, 0x3D, 0x97, 0xA1, 0x8A, 0x4E, 0x2E, 0x8F, 0x9C, + 0xB8, 0x6C, 0xA0, 0x50, 0x5D, 0xC4, 0x22, 0xDF, 0xF0, 0x5A, 0xD2, 0xF4, + 0x3F, 0x20, 0xFD, 0xAA, 0x6E, 0x04, 0xF3, 0xFA, 0x2E, 0x5D, 0x6F, 0x6B, + 0x2A, 0xE9, 0x77, 0x16, 0x65, 0xB7, 0x1B, 0xDC, 0x8F, 0x58, 0x2F, 0x32, + 0x9D, 0x57, 0xB7, 0x64, 0xD0, 0x77, 0x6E, 0xE7, 0x03, 0x39, 0xB0, 0xDF, + 0x19, 0x97, 0x29, 0xCA, 0xFE, 0xFC, 0xB6, 0x21, 0xD0, 0x2C, 0x07, 0x36, + 0x1D, 0x72, 0x07, 0x9B, 0xEB, 0xED, 0x1B, 0xB9, 0xD3, 0x87, 0xF8, 0x33, + 0x94, 0x42, 0xAF, 0x91, 0x7C, 0x43, 0x91, 0xAF, 0x33, 0x22, 0x5E, 0x48, + 0xE6, 0x73, 0xF6, 0xB6, 0x00, 0xAC, 0x29, 0x88, 0xCB, 0x45, 0x31, 0x3D, + 0xF8, 0x24, 0x98, 0x3F, 0xD9, 0x21, 0xAA, 0x6D, 0xCA, 0x49, 0x53, 0xC5, + 0x20, 0x48, 0xA7, 0xCE, 0x5B, 0x9C, 0x23, 0x54, 0x51, 0xFC, 0xB6, 0x7A, + 0x61, 0x4E, 0xDE, 0xE2, 0x82, 0xE8, 0xE0, 0xEC, 0xE3, 0x65, 0xA6, 0xB5, + 0x5E, 0x0F, 0x5A, 0xDC, 0xB2, 0x9D, 0x4B, 0x5D, 0x35, 0x71, 0xDB, 0x9F, + 0x9D, 0x5F, 0xB6, 0x56, 0x17, 0x02, 0x69, 0x65, 0x1C, 0x5E, 0xC2, 0x81, + 0x0D, 0x5D, 0x4A, 0x0F, 0x25, 0x89, 0x60, 0x06, 0xEB, 0xEB, 0x1C, 0x8D, + 0x8C, 0x2F, 0xBD, 0xD2, 0x68, 0xB6, 0xE5, 0x86, 0xCA, 0xEC, 0x85, 0x3F, + 0x69, 0x90, 0x45, 0xC3, 0x70, 0x57, 0x72, 0x3E, 0xCD, 0xAA, 0xAE, 0xA2, + 0x46, 0xEE, 0x70, 0xBE, 0x30, 0xEC, 0x6F, 0xA5, 0xC2, 0xCD, 0x5B, 0x1C, + 0x9A, 0x4D, 0xAA, 0x23, 0xE4, 0xC7, 0x4F, 0x9B, 0xF2, 0x19, 0x67, 0x14, + 0x32, 0x66, 0xD8, 0xF2, 0x0D, 0xD6, 0x62, 0xEC, 0x95, 0xF5, 0x50, 0xF3, + 0x98, 0x75, 0xFA, 0xE2, 0xCA, 0x5D, 0x3F, 0x28, 0x7D, 0xD0, 0xE2, 0x34, + 0x40, 0x7B, 0xB5, 0x07, 0x1F, 0x52, 0xEF, 0x2C, 0x3D, 0xAB, 0x3A, 0x72, + 0x45, 0xC5, 0x47, 0x83, 0xFA, 0x5C, 0xE3, 0x66, 0x77, 0x4F, 0x89, 0x7C, + 0xFE, 0x9C, 0xDB, 0x4E, 0xA4, 0xB9, 0xE6, 0xE8, 0x78, 0x50, 0x43, 0x20, + 0x8B, 0x8C, 0x78, 0x27, 0x88, 0x9A, 0x40, 0x89, 0x36, 0x4B, 0x08, 0x2E, + 0xC2, 0x60, 0x51, 0x9C, 0xE8, 0x96, 0x93, 0x8B, 0x69, 0xF7, 0x2A, 0x7E, + 0x9E, 0xF7, 0x4C, 0xFC, 0xD2, 0xF5, 0x97, 0xC2, 0x49, 0x9D, 0x1B, 0xB0, + 0xAA, 0x61, 0x50, 0xD9, 0x06, 0xE7, 0x9E, 0x61, 0x06, 0xB7, 0xD6, 0xDE, + 0x64, 0x2A, 0x9D, 0x1E, 0xF3, 0xFB, 0xD4, 0xC1, 0x49, 0x13, 0x4C, 0xC8, + 0x1C, 0x84, 0x0C, 0xD9, 0xF8, 0x70, 0x7A, 0x57, 0x7B, 0xE5, 0xAA, 0xD7, + 0x0C, 0xD8, 0x90, 0xBB, 0x10, 0x7D, 0x68, 0x76, 0xD9, 0x70, 0xBE, 0x89, + 0x75, 0xF9, 0xE6, 0x67, 0x06, 0x1E, 0x43, 0xAF, 0x44, 0xB0, 0x0C, 0xC8, + 0x69, 0x9B, 0x07, 0x42, 0xAF, 0xB2, 0x87, 0xCE, 0x39, 0xC6, 0xFE, 0xCF, + 0xF9, 0x3F, 0xD0, 0xB6, 0xC5, 0x3C, 0xC4, 0xC9, 0x15, 0x04, 0xA7, 0x4B, + 0xB2, 0xC2, 0x1F, 0x52, 0x08, 0x5E, 0xBB, 0x1C, 0x87, 0x0C, 0xF3, 0xF2, + 0x3D, 0xE2, 0xC3, 0xEC, 0xFD, 0xA6, 0x99, 0x6B, 0x6D, 0x2F, 0xC6, 0xE0, + 0x24, 0xE5, 0xCD, 0xF5, 0x0C, 0x43, 0xDD, 0xDA, 0x85, 0xEF, 0xDD, 0x47, + 0xDD, 0xB0, 0xE5, 0x56, 0x8E, 0xC7, 0x3E, 0x20, 0x29, 0x0F, 0x36, 0x6C, + 0x5C, 0x39, 0x9C, 0x60, 0x9B, 0x42, 0xDE, 0x40, 0x6E, 0xC0, 0x27, 0x76, + 0x68, 0x5C, 0x35, 0xE5, 0x57, 0x1E, 0x27, 0x38, 0x3C, 0x59, 0x17, 0x3E, + 0xC1, 0x77, 0x06, 0x45, 0xBD, 0x5E, 0xFD, 0x13, 0x72, 0x2E, 0xCD, 0x62, + 0x28, 0x63, 0xAF, 0x61, 0x26, 0x67, 0x07, 0x0F, 0xC3, 0xFE, 0xBB, 0x99, + 0x17, 0x6F, 0xBB, 0x82, 0xCC, 0x6E, 0x99, 0xF1, 0x70, 0xAD, 0x4B, 0x78, + 0x1C, 0x44, 0x78, 0x36, 0x05, 0x01, 0x38, 0x1E, 0x8E, 0xB1, 0xCE, 0x2F, + 0xD2, 0x9F, 0x09, 0x4F, 0x01, 0xB1, 0x12, 0xDD, 0x8E, 0x94, 0x51, 0x43, + 0xCD, 0x48, 0xE4, 0x62, 0x71, 0xA5, 0x64, 0xDD, 0xB5, 0x25, 0x2B, 0x67, + 0x97, 0x17, 0xC8, 0xE5, 0xD1, 0x52, 0x0E, 0x2E, 0xD1, 0x7D, 0xA1, 0x0C, + 0x2E, 0x16, 0x91, 0xC2, 0x5D, 0xE0, 0x16, 0x41, 0x91, 0xA9, 0x27, 0x84, + 0x36, 0x1C, 0xC2, 0xAC, 0x10, 0x69, 0x1E, 0x5E, 0x83, 0xE4, 0xA2, 0x9B, + 0xEE, 0x4F, 0xAE, 0xE5, 0xAF, 0x83, 0x6C, 0xD7, 0xF8, 0x24, 0x41, 0x33, + 0x2B, 0x02, 0xD8, 0xBE, 0x77, 0x8D, 0xC4, 0x86, 0xBA, 0x2F, 0xE6, 0x0F, + 0x46, 0xE8, 0x83, 0x38, 0x8E, 0x17, 0x02, 0x98, 0xF7, 0x3B, 0xA0, 0x0C, + 0xDD, 0x34, 0x25, 0x0C, 0x19, 0x94, 0x18, 0xF9, 0xA7, 0xCD, 0x33, 0xED, + 0xD1, 0xA9, 0x8B, 0xB7, 0xEF, 0x6B, 0xF0, 0x1D, 0x71, 0x22, 0x6D, 0xC5, + 0x5B, 0xF0, 0xCA, 0x08, 0xE0, 0xBE, 0x75, 0x76, 0x5E, 0x50, 0x68, 0xA3, + 0xC1, 0x39, 0x08, 0x18, 0x85, 0xA8, 0xC6, 0xDE, 0x50, 0x0E, 0xF0, 0x38, + 0x8B, 0xA9, 0x16, 0xFB, 0x2D, 0x69, 0x16, 0xA2, 0x55, 0x3D, 0x48, 0x82, + 0xD3, 0x14, 0xCA, 0x76, 0x26, 0xA3, 0x61, 0x56, 0xC1, 0x0E, 0xF7, 0xAE, + 0x61, 0xC4, 0xEC, 0xB8, 0x1D, 0x7C, 0x8E, 0x4A, 0x9F, 0xC4, 0x62, 0xB8, + 0x5A, 0x42, 0x5E, 0xA9, 0x5E, 0x20, 0x06, 0x66, 0xBD, 0x53, 0x49, 0x84, + 0x8C, 0xE7, 0xA4, 0xB3, 0xF8, 0x25, 0xA3, 0xF8, 0x49, 0x8B, 0x8F, 0x66, + 0xEF, 0xC9, 0xBF, 0x88, 0x5A, 0xE9, 0x22, 0xDD, 0x38, 0xEE, 0xED, 0x7B, + 0xB7, 0x0C, 0x0A, 0xEC, 0x26, 0x72, 0x5A, 0xE8, 0xAF, 0x62, 0xAE, 0x01, + 0xFA, 0xA0, 0x91, 0x52, 0x55, 0x49, 0x09, 0x5A, 0x4E, 0xC4, 0xB4, 0x78, + 0x8C, 0xAE, 0x4F, 0xED, 0x32, 0x88, 0x55, 0xE1, 0x40, 0xDA, 0x77, 0x1A, + 0x17, 0x00, 0x9C, 0x14, 0xB9, 0x52, 0x94, 0xB3, 0x02, 0x91, 0x03, 0x90, + 0xF4, 0xF1, 0x4C, 0x52, 0x6C, 0x52, 0x39, 0xC5, 0x92, 0xCE, 0x91, 0x42, + 0x27, 0xAE, 0x16, 0x44, 0xCF, 0xE4, 0xB8, 0x51, 0x39, 0x03, 0xC0, 0xEE, + 0xCE, 0xAB, 0x9F, 0x76, 0x75, 0x53, 0xCD, 0x5E, 0x88, 0x54, 0x9F, 0x61, + 0x70, 0xFA, 0xDD, 0x36, 0xFA, 0x37, 0x35, 0x6D, 0xF4, 0x0F, 0x29, 0xC2, + 0x22, 0x40, 0x7B, 0x86, 0x7E, 0xCE, 0x9A, 0xED, 0x1A, 0xDC, 0x49, 0xDE, + 0x7A, 0xCD, 0xCB, 0x0F, 0xAB, 0xFC, 0x97, 0xC8, 0x8B, 0x3A, 0x0A, 0xAB, + 0x23, 0x6D, 0xFC, 0xE9, 0xC4, 0x30, 0x46, 0x30, 0x82, 0x14, 0xFB, 0xBA, + 0x77, 0x6F, 0x16, 0x32, 0xD7, 0xE8, 0xAA, 0x79, 0x3D, 0x0B, 0x91, 0x11, + 0x45, 0x57, 0x05, 0x79, 0x99, 0x12, 0x55, 0x36, 0x5B, 0x06, 0xCA, 0xAA, + 0x82, 0x51, 0x84, 0x8B, 0x20, 0xE9, 0x6A, 0x3A, 0x17, 0x30, 0x30, 0xFD, + 0x99, 0xEC, 0xBD, 0x54, 0xCC, 0x3A, 0xC0, 0xFF, 0x5C, 0x49, 0xE0, 0x6C, + 0x99, 0x0F, 0x48, 0xCD, 0x70, 0x62, 0x7B, 0x69, 0x92, 0x34, 0x2D, 0x44, + 0x63, 0x23, 0x9E, 0x1F, 0x17, 0x7B, 0x2A, 0xF5, 0x06, 0x02, 0x24, 0x21, + 0x51, 0x2E, 0x02, 0x2D, 0x23, 0x51, 0x7C, 0x8E, 0xD3, 0x32, 0xE2, 0x28, + 0x3B, 0x6B, 0x0E, 0x5B, 0x4B, 0xD5, 0x2B, 0x38, 0x1E, 0x5C, 0xC9, 0x31, + 0x88, 0x85, 0xB9, 0xD3, 0x6F, 0x37, 0xAF, 0x93, 0x80, 0xD6, 0x19, 0x31, + 0x9A, 0x98, 0x45, 0xF9, 0x74, 0x30, 0x99, 0x56, 0x29, 0xF3, 0xFA, 0x33, + 0x6A, 0xBB, 0x70, 0x58, 0x53, 0x0E, 0x17, 0x27, 0xDD, 0x3D, 0xE8, 0x07, + 0x85, 0x2A, 0xCB, 0x33, 0x60, 0x23, 0xB0, 0xE9, 0x60, 0x7C, 0xF1, 0x47, + 0x69, 0xE1, 0x69, 0x57, 0x3E, 0x8C, 0x49, 0x30, 0xA3, 0x7A, 0xD6, 0x79, + 0x1F, 0xF9, 0xCF, 0x1C, 0xE1, 0x56, 0xF1, 0x92, 0xC0, 0x66, 0xC7, 0x67, + 0xF0, 0xC6, 0x78, 0x6A, 0x48, 0x26, 0xD4, 0xE9, 0xFA, 0x50, 0x8B, 0xC4, + 0xB1, 0x19, 0x96, 0x1F, 0x0C, 0x67, 0x0A, 0xB0, 0x4B, 0x75, 0x1C, 0xBA, + 0x86, 0x42, 0xE3, 0x2E, 0x0C, 0xF8, 0xFC, 0x19, 0x66, 0x7B, 0x51, 0xDB, + 0x3E, 0xBB, 0xA2, 0xC0, 0xBF, 0x31, 0x9A, 0x8A, 0x3E, 0x4F, 0x24, 0xA0, + 0xD3, 0xDA, 0x15, 0x35, 0x91, 0x10, 0x3F, 0x1B, 0x40, 0x9A, 0x79, 0xB7, + 0xE4, 0x8B, 0x9E, 0xBB, 0xD8, 0x98, 0x31, 0x8C, 0x69, 0xDE, 0x25, 0xFD, + 0x0E, 0x87, 0xC3, 0xD9, 0x8C, 0xAD, 0xC0, 0x95, 0x19, 0x15, 0x18, 0xE1, + 0xBD, 0xB1, 0x4F, 0xD4, 0x94, 0x09, 0x3B, 0xD5, 0x07, 0xC1, 0x72, 0xEE, + 0x33, 0xA2, 0x9E, 0xAA, 0x05, 0x4E, 0xD3, 0xD3, 0x43, 0x43, 0xB9, 0xE6, + 0xBE, 0xCF, 0xE8, 0xE4, 0x00, 0x11, 0x5D, 0xA2, 0x97, 0xAE, 0x1F, 0x3C, + 0x3C, 0x0F, 0xA5, 0x06, 0xE5, 0xF8, 0xDE, 0x94, 0x00, 0xA0, 0x99, 0xD2, + 0x4C, 0x13, 0x05, 0x09, 0xB8, 0x08, 0x61, 0x3A, 0x67, 0xBB, 0x77, 0xA8, + 0x69, 0xA3, 0x8F, 0xF4, 0xF2, 0x2A, 0x6A, 0x88, 0x9E, 0xFD, 0x81, 0xF1, + 0x7B, 0xA7, 0xFA, 0x15, 0xCF, 0x32, 0x04, 0x22, 0xD3, 0x62, 0x4C, 0xF4, + 0x65, 0x76, 0x5C, 0x85, 0x5E, 0x98, 0x18, 0x6A, 0xF8, 0x95, 0xC1, 0x2A, + 0x8E, 0xFF, 0xCD, 0x48, 0x8E, 0x58, 0xE6, 0xCA, 0x8A, 0x8E, 0xA2, 0x0D, + 0x33, 0x35, 0xA0, 0xD3, 0xC6, 0x28, 0x72, 0x63, 0xB4, 0xCB, 0x0A, 0xB1, + 0x47, 0xF8, 0xFC, 0xF1, 0xC3, 0x7A, 0xAD, 0x56, 0x51, 0x4D, 0xE5, 0x53, + 0xB1, 0x3F, 0xC4, 0x2C, 0x7E, 0x93, 0xEB, 0x71, 0x91, 0x06, 0x7C, 0xC7, + 0x4E, 0x1F, 0xC0, 0x3C, 0x70, 0x7C, 0x54, 0x7A, 0xA7, 0x46, 0x92, 0x33, + 0x3C, 0x99, 0x32, 0x07, 0xAE, 0x7F, 0xD9, 0xF0, 0xEE, 0x4E, 0x26, 0xEE, + 0xD7, 0x67, 0xCD, 0xE6, 0x47, 0xD1, 0x1C, 0x17, 0x71, 0x68, 0xAA, 0x07, + 0xA4, 0xF4, 0xD0, 0x87, 0xA3, 0x65, 0x2D, 0xA8, 0x3A, 0x06, 0x7B, 0x23, + 0x6C, 0xA7, 0xD3, 0x4B, 0xE3, 0x46, 0x6C, 0x31, 0x5B, 0x4F, 0x8F, 0xBF, + 0xEB, 0x17, 0x68, 0x05, 0xF3, 0x3D, 0xD9, 0xA1, 0x7B, 0x05, 0x7E, 0x05, + 0x14, 0xEF, 0x00, 0xE2, 0xF6, 0xD3, 0xF1, 0x4C, 0x60, 0xC9, 0x71, 0xBD, + 0x8B, 0x47, 0x84, 0x24, 0x99, 0x94, 0x99, 0x03, 0xB7, 0xE7, 0x1E, 0x8A, + 0x56, 0xE0, 0xCB, 0xD8, 0x12, 0x73, 0x08, 0x3D, 0x31, 0xCF, 0xE2, 0x46, + 0xBF, 0x16, 0x62, 0x13, 0xA3, 0x3B, 0x62, 0x2A, 0x6C, 0xF4, 0x77, 0x90, + 0x04, 0x7A, 0x95, 0x2C, 0x61, 0xD0, 0xA4, 0x84, 0x3F, 0x32, 0x48, 0xBA, + 0xE5, 0xCD, 0x39, 0xF5, 0x5D, 0x5A, 0x3E, 0x0A, 0x4C, 0xBF, 0x0A, 0xEC, + 0xCF, 0x0B, 0xF2, 0xEA, 0x38, 0x17, 0x36, 0xDB, 0xD6, 0x2D, 0x48, 0x78, + 0xBB, 0x20, 0x5F, 0x5F, 0xDF, 0x63, 0x6D, 0xF5, 0x3D, 0x74, 0xA8, 0xE1, + 0xE4, 0x4C, 0x87, 0x65, 0x78, 0x1B, 0x5B, 0xC6, 0xEE, 0x37, 0x69, 0x39, + 0x8C, 0xD6, 0x3C, 0x24, 0x6B, 0xFE, 0x4A, 0xC9, 0x13, 0xF8, 0x33, 0x2C, + 0xDB, 0xA3, 0x7A, 0xE3, 0x6C, 0x76, 0x18, 0x01, 0x62, 0x95, 0x67, 0x4A, + 0xB5, 0xE7, 0xF4, 0xD7, 0x63, 0x74, 0x2F, 0xE0, 0x57, 0x3B, 0x3C, 0x33, + 0xC6, 0x06, 0x03, 0xD7, 0x93, 0x0F, 0x8D, 0xDD, 0x57, 0xC3, 0x0C, 0x50, + 0xBC, 0x08, 0xF6, 0x98, 0xA1, 0x04, 0x1D, 0xC8, 0x46, 0x02, 0x2E, 0x2D, + 0x3D, 0xF1, 0xCD, 0x4B, 0x9B, 0x3F, 0x0C, 0xBC, 0xD3, 0x2F, 0x87, 0xE7, + 0x50, 0xA1, 0x7B, 0x94, 0xC5, 0xCD, 0xEC, 0xE9, 0x29, 0xE7, 0x6C, 0xD4, + 0xC1, 0x18, 0xA4, 0xCA, 0x4F, 0x00, 0x4E, 0xF9, 0x36, 0x89, 0xFD, 0x07, + 0x47, 0xE6, 0xD5, 0xB7, 0xAA, 0x34, 0x7C, 0x16, 0x7B, 0xCB, 0x49, 0x92, + 0xF2, 0x03, 0x66, 0x8E, 0xEF, 0x11, 0xFC, 0x8F, 0x26, 0xA5, 0x78, 0x9A, + 0x4B, 0x29, 0xC7, 0x98, 0x15, 0xA1, 0x35, 0x58, 0x0C, 0xD5, 0xF8, 0x6F, + 0x50, 0x1C, 0xDC, 0x41, 0x20, 0xCC, 0x2A, 0x42, 0xE1, 0xEF, 0x28, 0x22, + 0x67, 0x89, 0x71, 0x5B, 0x9B, 0xBA, 0x92, 0xED, 0x1C, 0xB6, 0x9C, 0x89, + 0xD4, 0x00, 0x21, 0xD3, 0xF1, 0xD9, 0x3E, 0x9B, 0x55, 0x71, 0xF7, 0x75, + 0x26, 0x5A, 0x13, 0x65, 0xBF, 0x6E, 0x46, 0x90, 0x85, 0x7B, 0xD7, 0xD4, + 0xDC, 0x90, 0x23, 0x4C, 0x83, 0x12, 0x87, 0x7D, 0x8D, 0xF2, 0x39, 0x4E, + 0x9A, 0xA0, 0x4A, 0xDE, 0xAB, 0xCA, 0xA7, 0xCB, 0xBD, 0x1A, 0xA5, 0x3F, + 0x54, 0x12, 0x92, 0x6F, 0xEF, 0x37, 0x88, 0xDD, 0x52, 0xDB, 0xD0, 0x8F, + 0xEA, 0xCD, 0x88, 0x69, 0x8C, 0x44, 0x6A, 0xF3, 0xD0, 0x61, 0x8B, 0x20, + 0x91, 0x17, 0x32, 0x32, 0xBE, 0x39, 0x42, 0xE7, 0x1C, 0x3E, 0x8A, 0x02, + 0x58, 0x95, 0x76, 0x45, 0x3A, 0x06, 0x28, 0xE0, 0x7A, 0x47, 0x23, 0x87, + 0xB1, 0x5F, 0xF0, 0xE1, 0x2D, 0x18, 0xA4, 0x9B, 0xE7, 0x90, 0xB3, 0xFC, + 0x96, 0x2D, 0xAA, 0x04, 0x72, 0x39, 0xCA, 0xF6, 0x8B, 0xFE, 0x5D, 0xF8, + 0xAA, 0xFF, 0xBE, 0x94, 0xE3, 0xEF, 0xF2, 0x74, 0x22, 0xD4, 0x8C, 0x82, + 0x2C, 0x73, 0x8B, 0xB8, 0x39, 0x35, 0xCF, 0xCB, 0x48, 0xE8, 0xAC, 0x05, + 0x49, 0xEE, 0x08, 0x30, 0xFF, 0x99, 0x48, 0xE1, 0x66, 0xDD, 0x01, 0xD9, + 0x39, 0x22, 0xDE, 0x2C, 0x1C, 0x47, 0x08, 0xA3, 0x97, 0xFE, 0x02, 0x8C, + 0x6B, 0x9E, 0xBF, 0xC4, 0x46, 0xAB, 0x94, 0x6D, 0x86, 0xC2, 0x45, 0x95, + 0xB9, 0x1D, 0x15, 0x89, 0xA9, 0x76, 0x7A, 0xDD, 0x11, 0xDC, 0x54, 0x4E, + 0x37, 0x96, 0x1E, 0x37, 0xE2, 0xB4, 0xE0, 0xD8, 0xB6, 0xBC, 0xF8, 0xA4, + 0x47, 0xC5, 0x6E, 0x33, 0x8F, 0xC2, 0x5C, 0x3B, 0x8E, 0x51, 0x01, 0x10, + 0xF1, 0x08, 0x10, 0xD8, 0x47, 0x38, 0xF4, 0x28, 0x22, 0x0E, 0x21, 0x96, + 0x8B, 0x89, 0xA6, 0x43, 0x6B, 0xDA, 0xBC, 0xD5, 0xDC, 0x74, 0x74, 0xC6, + 0x64, 0xCA, 0x6A, 0x42, 0x7C, 0x24, 0x80, 0x40, 0x1F, 0x82, 0x19, 0x25, + 0xB7, 0x97, 0x40, 0x78, 0x16, 0x18, 0x71, 0x5C, 0x44, 0xCD, 0x1B, 0x9F, + 0xC9, 0xE0, 0xA6, 0x3F, 0xF4, 0xAA, 0x2B, 0x4E, 0xC2, 0x12, 0x24, 0x3F, + 0x98, 0xAD, 0x54, 0x84, 0xAF, 0x72, 0xA9, 0xBF, 0x61, 0x85, 0xA1, 0x95, + 0xD8, 0xC1, 0x72, 0x4B, 0x02, 0x21, 0x38, 0x7E, 0x29, 0xA8, 0x90, 0xBA, + 0x9A, 0xF9, 0x4D, 0xB4, 0xFC, 0xAC, 0xB8, 0x27, 0x77, 0xA0, 0xBE, 0x1E, + 0x45, 0xFE, 0x2B, 0x49, 0x8E, 0x48, 0x66, 0xD5, 0x97, 0x1B, 0x21, 0x65, + 0x4F, 0xA5, 0x7E, 0xF8, 0x7E, 0x89, 0xB6, 0x1B, 0x4F, 0xB1, 0x2E, 0xC2, + 0x84, 0x50, 0xB6, 0xC7, 0xD5, 0xBC, 0xEE, 0x86, 0xBE, 0xB7, 0x27, 0xDB, + 0xE8, 0xF3, 0x49, 0x02, 0xBF, 0xB1, 0x33, 0x71, 0x5D, 0xA3, 0x3D, 0x28, + 0x7E, 0x24, 0x76, 0x0E, 0x29, 0xAA, 0x65, 0xC8, 0x0B, 0xD2, 0xE1, 0xF1, + 0x36, 0x03, 0x2C, 0x28, 0x92, 0x3A, 0x42, 0x5A, 0xF8, 0x20, 0xEE, 0x43, + 0xB6, 0x56, 0x12, 0xA9, 0x2B, 0x8A, 0xC5, 0x5D, 0x7B, 0x77, 0x76, 0xC3, + 0x9B, 0x80, 0xD9, 0x30, 0x7F, 0xE5, 0x0F, 0x2B, 0x6A, 0x87, 0x29, 0xEF, + 0x51, 0xED, 0x8C, 0x27, 0x2D, 0xD3, 0x9E, 0xEC, 0x4D, 0x3A, 0xDA, 0x65, + 0xB6, 0x17, 0xD1, 0x73, 0xEE, 0xE7, 0x94, 0x07, 0x12, 0x79, 0x9F, 0xF4, + 0xA0, 0x0C, 0x7F, 0x95, 0xBB, 0x28, 0xF9, 0xE3, 0x5F, 0x46, 0xB5, 0xC6, + 0x0C, 0x4A, 0x18, 0xCB, 0x79, 0xA6, 0x90, 0x36, 0xC5, 0xF7, 0x08, 0x36, + 0xD2, 0xE7, 0x73, 0x21, 0x59, 0x8F, 0xF5, 0xC8, 0x89, 0xB1, 0x09, 0x11, + 0x03, 0xCD, 0xA4, 0xB7, 0x64, 0x04, 0x4A, 0xF4, 0x69, 0x06, 0x89, 0x66, + 0x9E, 0xB1, 0x96, 0x1C, 0x55, 0x22, 0x3F, 0x70, 0xBE, 0x72, 0x3D, 0x7C, + 0xBC, 0x18, 0x8F, 0xEF, 0x69, 0x91, 0x76, 0x75, 0x21, 0x20, 0x01, 0xAB, + 0x44, 0x60, 0x13, 0x6A, 0xBC, 0xB5, 0x0B, 0x95, 0x3E, 0xE4, 0xA3, 0x4E, + 0x18, 0xD6, 0xBC, 0x51, 0x3C, 0xE2, 0x3D, 0x71, 0x70, 0xFB, 0xBF, 0xAD, + 0x5F, 0x57, 0xB6, 0x6E, 0x9F, 0xBE, 0x70, 0x69, 0x53, 0xEE, 0x34, 0x53, + 0x9D, 0xE5, 0xBD, 0x51, 0x9D, 0x1D, 0xEA, 0xBC, 0xD8, 0x89, 0x98, 0xC1, + 0x26, 0xCF, 0x0F, 0x65, 0x71, 0xFE, 0x3B, 0x89, 0x9B, 0x5E, 0xAF, 0x6C, + 0xFD, 0xB2, 0x53, 0x88, 0x42, 0x7C, 0xFB, 0x87, 0x49, 0x69, 0x4D, 0x7D, + 0xC9, 0x76, 0xA7, 0x84, 0x10, 0xFF, 0xF8, 0x63, 0x64, 0xB1, 0xF2, 0x7D, + 0x72, 0x79, 0xD8, 0xF1, 0x8B, 0xB6, 0xA3, 0x80, 0xEF, 0x15, 0x92, 0x40, + 0xBE, 0x01, 0x05, 0xCB, 0xA8, 0x07, 0x0C, 0xE0, 0xEE, 0x8F, 0xEA, 0xF6, + 0x62, 0x9B, 0x4C, 0x89, 0xC4, 0x0D, 0xBC, 0x55, 0x32, 0x91, 0xCC, 0x68, + 0xD7, 0x40, 0x54, 0x13, 0x1D, 0xD9, 0x96, 0x49, 0xB6, 0x63, 0xCB, 0xF3, + 0x3E, 0x4C, 0xA1, 0xE3, 0xDA, 0xD1, 0x7C, 0x88, 0x2D, 0xB5, 0xED, 0x6F, + 0x9D, 0x85, 0x91, 0x3A, 0x5B, 0x80, 0xBB, 0xB8, 0x3B, 0x7E, 0xD2, 0x4B, + 0xE1, 0xDF, 0x2A, 0x32, 0x5B, 0x2C, 0xED, 0xB4, 0x39, 0xD2, 0x46, 0xB9, + 0x3F, 0x4F, 0x98, 0xB5, 0xB7, 0xB7, 0x16, 0xE9, 0xB1, 0x2A, 0xD5, 0x3A, + 0x1B, 0xC1, 0xC4, 0xA4, 0xEB, 0x15, 0x86, 0x86, 0x2E, 0x51, 0xA6, 0xCE, + 0x9D, 0xEB, 0x47, 0x15, 0x7F, 0x37, 0x1B, 0x3E, 0x26, 0xED, 0x17, 0xE4, + 0x23, 0xE2, 0x7E, 0xDA, 0x03, 0xC8, 0x94, 0xE0, 0x50, 0x6C, 0x8C, 0x68, + 0xCE, 0x04, 0x24, 0x7F, 0x67, 0x0D, 0x2F, 0x77, 0xF7, 0x07, 0x75, 0x33, + 0xFE, 0x4C, 0x1B, 0x2C, 0x53, 0x19, 0x47, 0xFA, 0x4E, 0x1F, 0x5D, 0x2E, + 0x80, 0x2E, 0x9E, 0xE5, 0xA6, 0x4E, 0x41, 0x45, 0x8C, 0x63, 0xA4, 0x4C, + 0x5E, 0x19, 0x04, 0x51, 0x6A, 0xAF, 0x6E, 0x4F, 0xBB, 0xA8, 0xAB, 0x87, + 0xD4, 0xD7, 0x99, 0x59, 0x77, 0x54, 0x0E, 0x10, 0xE8, 0x7B, 0xC5, 0x7B, + 0x6D, 0x13, 0xA8, 0x58, 0xB7, 0x67, 0xD6, 0x23, 0xF1, 0x97, 0xC6, 0xB1, + 0xFE, 0x83, 0xE8, 0xBB, 0xC1, 0xD2, 0x26, 0x83, 0xDD, 0x8E, 0x86, 0x4F, + 0x69, 0xE5, 0xC4, 0x72, 0x56, 0x98, 0x0A, 0xB1, 0x58, 0x03, 0x4E, 0x14, + 0xCD, 0x25, 0x65, 0xEF, 0x31, 0xD0, 0x68, 0x45, 0x9C, 0x42, 0x84, 0xB8, + 0xC9, 0x8F, 0xB0, 0xF8, 0xF1, 0xD2, 0x45, 0x75, 0xD3, 0x4F, 0x13, 0x52, + 0xD3, 0x8F, 0xF3, 0x8A, 0x3F, 0x73, 0xF0, 0x56, 0x24, 0x1B, 0x77, 0xFC, + 0xE4, 0xCC, 0x42, 0x57, 0x8F, 0xF8, 0xE8, 0x4C, 0x53, 0x5F, 0x22, 0x35, + 0xDD, 0x6E, 0x33, 0x11, 0xC8, 0xB2, 0xEB, 0xFF, 0x9B, 0x0F, 0xC7, 0x20, + 0xED, 0x6F, 0x70, 0xC8, 0x8D, 0x1E, 0xDE, 0x2F, 0x0E, 0x19, 0x50, 0xA2, + 0xF1, 0x4F, 0x90, 0x56, 0x07, 0x63, 0x0A, 0x8D, 0xE2, 0x6E, 0xAE, 0x95, + 0x68, 0xCA, 0xEA, 0x78, 0x0C, 0xB1, 0xA4, 0x30, 0x14, 0x77, 0x48, 0x0C, + 0x51, 0xD9, 0xE5, 0x30, 0x7C, 0xCE, 0x77, 0xBA, 0xC7, 0x34, 0x9D, 0x25, + 0x4D, 0xCF, 0x21, 0xE2, 0xCF, 0x50, 0xBA, 0x2A, 0x32, 0xC7, 0x66, 0x07, + 0xBA, 0x46, 0xE6, 0x69, 0xDE, 0x46, 0xDF, 0x03, 0x28, 0x51, 0xFE, 0x11, + 0x1C, 0x33, 0xBC, 0x4F, 0xD4, 0x2E, 0xC3, 0x7A, 0xED, 0x2A, 0xCE, 0xCA, + 0x34, 0xE8, 0x4F, 0x65, 0x8E, 0xF3, 0x77, 0x05, 0x67, 0xFB, 0xD5, 0x1D, + 0x5C, 0x94, 0xB5, 0x27, 0xA9, 0x61, 0xF7, 0x99, 0x15, 0x77, 0x2B, 0xA0, + 0xB1, 0xB4, 0x3B, 0x72, 0x33, 0x67, 0xA7, 0x70, 0xFB, 0x60, 0x72, 0x04, + 0xC4, 0x88, 0x4C, 0xA5, 0x1C, 0xEF, 0x17, 0x66, 0x74, 0xAE, 0xBC, 0x01, + 0xC3, 0x2F, 0x0D, 0xD6, 0x12, 0xDF, 0x4F, 0x2C, 0x63, 0xC1, 0x79, 0xF8, + 0x50, 0xC9, 0x52, 0x34, 0xA0, 0x6E, 0x73, 0xBA, 0x5A, 0x31, 0x22, 0xF3, + 0xC5, 0x98, 0xB0, 0x18, 0xD8, 0x7B, 0x2B, 0x06, 0x47, 0x9D, 0x50, 0xE6, + 0x16, 0xBF, 0x59, 0xC9, 0x34, 0xF0, 0x51, 0x58, 0x60, 0xD8, 0xEE, 0x83, + 0xC8, 0x8B, 0x1E, 0x92, 0x8F, 0xF0, 0xDF, 0x12, 0x61, 0xCC, 0x69, 0x21, + 0x68, 0xE8, 0x78, 0xB8, 0xF2, 0xF0, 0xDE, 0xE7, 0xAB, 0x8A, 0xA4, 0x38, + 0x32, 0x06, 0xAE, 0xCD, 0x53, 0x92, 0xE4, 0x9B, 0x2C, 0xC1, 0x63, 0x30, + 0x29, 0xB5, 0x12, 0x21, 0x99, 0xCA, 0x99, 0x94, 0x92, 0x71, 0xFB, 0x0A, + 0x31, 0xEF, 0xBF, 0xE2, 0x52, 0x2B, 0xA5, 0xCE, 0x16, 0x5D, 0x15, 0x4A, + 0x25, 0xCF, 0x74, 0x96, 0x9A, 0x95, 0x21, 0x2C, 0xEA, 0xB7, 0xA1, 0xAE, + 0xD4, 0x15, 0x29, 0x38, 0xF9, 0x7B, 0x6C, 0xD7, 0x3A, 0x52, 0xFD, 0x60, + 0xA2, 0xD0, 0xEE, 0xA5, 0xDF, 0x4C, 0xC6, 0xBF, 0x30, 0x82, 0x20, 0xB6, + 0x73, 0x58, 0xC8, 0x7B, 0xA8, 0xEA, 0x01, 0x9B, 0xEA, 0x02, 0x89, 0xD0, + 0x83, 0x71, 0x14, 0x98, 0xB0, 0x6E, 0x5B, 0x80, 0xB4, 0xBA, 0x4D, 0xC5, + 0x95, 0x77, 0x5A, 0x44, 0x56, 0x74, 0x12, 0x48, 0xBC, 0xAE, 0x92, 0xCF, + 0x5A, 0xF9, 0x62, 0xE8, 0x72, 0xA5, 0x72, 0x5B, 0x58, 0xC6, 0x14, 0x29, + 0xF1, 0xC4, 0xD6, 0xC6, 0x75, 0x71, 0x9C, 0xC4, 0x7D, 0xC5, 0x93, 0x26, + 0xA2, 0x9B, 0x1C, 0x30, 0xE8, 0x41, 0xC7, 0x03, 0x66, 0x98, 0x2C, 0x10, + 0x34, 0x6A, 0x0E, 0xC2, 0x35, 0x53, 0xAA, 0x17, 0x3E, 0xF4, 0xCB, 0x9C, + 0xC4, 0x1E, 0xB4, 0x79, 0x0B, 0xA0, 0x41, 0x4B, 0xC6, 0xB4, 0xAC, 0x5F, + 0xDA, 0x48, 0x01, 0x0D, 0xBF, 0xDF, 0x6A, 0x0E, 0x42, 0x16, 0xFC, 0x97, + 0x58, 0x98, 0x04, 0xDA, 0x46, 0x1E, 0x37, 0x55, 0x77, 0x2A, 0xB8, 0x58, + 0x6B, 0x9E, 0x55, 0x2E, 0xF6, 0x52, 0x17, 0x38, 0xE1, 0xA7, 0xD9, 0xA0, + 0x08, 0xF3, 0x3E, 0x0B, 0xE4, 0x10, 0x37, 0x2A, 0x16, 0x54, 0x63, 0x1E, + 0x5A, 0x43, 0xC7, 0xDE, 0xA3, 0xE9, 0x3B, 0x85, 0x3A, 0xFB, 0x03, 0xE9, + 0xDE, 0xD9, 0x1C, 0xDD, 0x9B, 0x56, 0x4F, 0x70, 0x77, 0xDD, 0xF3, 0xBA, + 0x0F, 0xA4, 0x0F, 0x12, 0x5A, 0x1C, 0xF4, 0x32, 0xE8, 0x58, 0x6C, 0x23, + 0xC5, 0x46, 0x2E, 0x1C, 0xCA, 0xE0, 0x99, 0x27, 0x77, 0xC8, 0x14, 0xD3, + 0x34, 0xA4, 0xEA, 0xDD, 0x76, 0x3C, 0x91, 0x39, 0x96, 0x2A, 0xEE, 0x63, + 0x05, 0x6A, 0x2D, 0x65, 0x48, 0x88, 0xE6, 0x9D, 0x26, 0xE3, 0x95, 0xD6, + 0xFC, 0x86, 0xC8, 0x41, 0xB5, 0x14, 0x99, 0x2C, 0x35, 0x8C, 0xBD, 0xA8, + 0x28, 0x1D, 0xF7, 0x74, 0x00, 0x36, 0xCA, 0xE8, 0xBB, 0x28, 0x35, 0x03, + 0x10, 0x23, 0xEC, 0x82, 0x4C, 0x32, 0x59, 0xAB, 0x6B, 0x01, 0x2B, 0x42, + 0xEB, 0x67, 0x4D, 0x49, 0x80, 0x47, 0x7C, 0xD0, 0xFE, 0x48, 0xB5, 0xC8, + 0xB3, 0xF3, 0x06, 0x37, 0x13, 0x65, 0xF1, 0x53, 0x9C, 0x24, 0x00, 0x29, + 0x41, 0x8E, 0x97, 0xE7, 0x47, 0x21, 0xF8, 0xB6, 0xEF, 0xC1, 0x08, 0xAC, + 0x8B, 0xF3, 0xDF, 0xD1, 0x9B, 0xED, 0x16, 0xEA, 0x5C, 0x3C, 0x39, 0xF6, + 0xB9, 0x0F, 0x0D, 0xC1, 0x0C, 0x79, 0xB4, 0xFA, 0xEC, 0x7F, 0xD2, 0xE0, + 0x80, 0xEC, 0xF1, 0x88, 0xBE, 0x68, 0xA8, 0xD1, 0x38, 0xB5, 0xFE, 0xB5, + 0xED, 0x1A, 0xB1, 0x8D, 0xBC, 0x50, 0x9B, 0xA5, 0x40, 0x45, 0xB4, 0x94, + 0x25, 0xF8, 0xA5, 0xEB, 0x88, 0x00, 0xC8, 0xCA, 0xBA, 0x86, 0xF6, 0xB6, + 0xDA, 0xC0, 0xF3, 0x42, 0xDA, 0xE4, 0x16, 0xB1, 0x3A, 0xC1, 0xAB, 0x29, + 0xF8, 0xD2, 0xCF, 0xB6, 0x24, 0xBD, 0xE9, 0xA7, 0x18, 0xA7, 0xED, 0x80, + 0x0B, 0x0A, 0x91, 0xD7, 0x8C, 0xC9, 0x60, 0x5F, 0x73, 0xBE, 0x7C, 0x12, + 0x26, 0xED, 0xC5, 0xA4, 0x55, 0x83, 0x55, 0x93, 0x74, 0xF7, 0x1B, 0x05, + 0x8B, 0xBA, 0x88, 0x1D, 0x42, 0x9A, 0x15, 0x78, 0x9F, 0xE9, 0x62, 0x95, + 0x65, 0xD5, 0x16, 0x02, 0x1F, 0xCA, 0x13, 0xA8, 0x52, 0x84, 0xBF, 0xAD, + 0xE5, 0xDD, 0xDB, 0x18, 0xB5, 0x37, 0x8D, 0x70, 0x5E, 0xF9, 0xE3, 0xC2, + 0x33, 0x1F, 0xCC, 0x97, 0x52, 0x35, 0x13, 0xD9, 0xD0, 0x29, 0x44, 0x0B, + 0xD8, 0xBD, 0xB2, 0x93, 0x6C, 0x2C, 0xAC, 0x7B, 0x14, 0x94, 0x67, 0xCC, + 0x65, 0x5E, 0x78, 0x53, 0x82, 0x72, 0xFE, 0xFB, 0xD9, 0x04, 0x5F, 0x90, + 0x6C, 0xB0, 0xFB, 0x80, 0x6C, 0x7D, 0x0B, 0x62, 0x8B, 0x7B, 0x73, 0x7D, + 0x1F, 0x6B, 0x93, 0x7D, 0x07, 0x66, 0x98, 0xBB, 0xB2, 0x49, 0xB3, 0x34, + 0x10, 0xBB, 0x23, 0x2B, 0x14, 0xA0, 0xB4, 0x4A, 0xC1, 0x56, 0x7B, 0x47, + 0xD4, 0x49, 0x97, 0x4D, 0x69, 0x9C, 0xFC, 0x7C, 0xF2, 0x87, 0xF4, 0x8B, + 0xA4, 0xD6, 0xF8, 0xAE, 0x3B, 0x8F, 0x9A, 0x5B, 0x90, 0x29, 0x9C, 0xD9, + 0xE2, 0xA9, 0xA2, 0x60, 0x52, 0x4A, 0x1F, 0xE5, 0x6E, 0x7C, 0x49, 0xEC, + 0x83, 0xA8, 0x0E, 0x79, 0x5B, 0x0A, 0x1F, 0x53, 0xDB, 0x6C, 0xEF, 0x78, + 0x2D, 0x52, 0xBA, 0x00, 0x3A, 0x49, 0xB2, 0xB1, 0x56, 0x1C, 0x3B, 0x7E, + 0x99, 0x9C, 0x20, 0xB7, 0xC7, 0x9E, 0x8B, 0x8C, 0x88, 0xF2, 0x15, 0xFF, + 0x4F, 0x06, 0xF4, 0x1B, 0x6F, 0x02, 0x1E, 0x3A, 0x29, 0xA0, 0x7B, 0xFA, + 0x2C, 0x26, 0x58, 0xE3, 0x75, 0x5F, 0xB8, 0x94, 0x27, 0x70, 0xF6, 0xA5, + 0x79, 0x51, 0x0F, 0x72, 0x52, 0x81, 0xDC, 0xDC, 0x74, 0x93, 0xAF, 0xB4, + 0xB5, 0x9F, 0xF2, 0x03, 0x4F, 0x79, 0x0A, 0xC5, 0xB9, 0xC7, 0x3E, 0x12, + 0x53, 0x3A, 0x63, 0x6A, 0x8A, 0x27, 0xB6, 0x9D, 0x4C, 0x84, 0x87, 0x92, + 0xBF, 0x7D, 0x49, 0x52, 0xAF, 0x10, 0xCD, 0x6C, 0x58, 0xC5, 0xF0, 0xFE, + 0x59, 0x5C, 0xA8, 0x5A, 0xDE, 0x0E, 0x19, 0x23, 0x3F, 0x01, 0x87, 0xFD, + 0x95, 0xA8, 0x61, 0x90, 0x06, 0x49, 0x77, 0xD8, 0xAD, 0xC4, 0x5D, 0x72, + 0x65, 0x5D, 0x2A, 0x48, 0x70, 0xE1, 0x37, 0x2C, 0x20, 0x50, 0x24, 0xC4, + 0xE7, 0x74, 0x91, 0x30, 0x91, 0x0E, 0xA3, 0x8B, 0x73, 0x6C, 0x31, 0xE1, + 0xAF, 0xC7, 0x8C, 0x37, 0xF8, 0x22, 0x71, 0x36, 0xCA, 0xE0, 0xE1, 0x41, + 0xF6, 0x74, 0x26, 0x17, 0x08, 0xC2, 0xD9, 0xB5, 0xCE, 0x4A, 0x67, 0x17, + 0xC2, 0x54, 0xA0, 0x1F, 0x22, 0xFF, 0x8D, 0xB6, 0x60, 0x26, 0x7B, 0x7B, + 0x05, 0x0D, 0x69, 0xAE, 0x6F, 0x09, 0x78, 0x9D, 0xD0, 0x2C, 0x59, 0xB1, + 0xE7, 0xAB, 0x9F, 0x5F, 0x0C, 0xB7, 0xB4, 0x98, 0x47, 0x85, 0x28, 0x24, + 0x74, 0x05, 0x79, 0xC8, 0x37, 0xDB, 0x2D, 0x71, 0xBA, 0x70, 0x24, 0x1D, + 0xC6, 0x4C, 0x23, 0xF6, 0xFE, 0xE5, 0x47, 0x33, 0xA2, 0xAE, 0x44, 0xB1, + 0x64, 0x5D, 0xAB, 0xA3, 0xD5, 0xF1, 0x91, 0x12, 0xA1, 0x12, 0x42, 0xFC, + 0xF5, 0xE7, 0x15, 0x57, 0x1F, 0x3F, 0x08, 0x7F, 0xD4, 0x5D, 0x0B, 0x97, + 0x43, 0x0B, 0xF3, 0x36, 0x54, 0xF6, 0x0A, 0x54, 0xE4, 0x77, 0xBE, 0xDF, + 0x8A, 0xCA, 0xC2, 0x43, 0x5F, 0x4A, 0x32, 0xBC, 0x9A, 0x20, 0x27, 0xB3, + 0xB9, 0x2F, 0xA7, 0x92, 0x8E, 0xDD, 0x12, 0x15, 0x27, 0x5A, 0x0D, 0xD6, + 0x5E, 0xC7, 0xDE, 0xFB, 0x78, 0xE6, 0x63, 0x5E, 0x07, 0x35, 0xC7, 0xAE, + 0x04, 0xC0, 0x14, 0xDB, 0x26, 0x45, 0x4D, 0x57, 0x91, 0x4A, 0xB5, 0xDE, + 0xF8, 0x40, 0xE1, 0xE4, 0x6C, 0x32, 0xCC, 0x37, 0x44, 0x34, 0x05, 0xC8, + 0xC3, 0x49, 0x28, 0xFA, 0xED, 0x93, 0x08, 0x10, 0xA8, 0x8B, 0x00, 0x8C, + 0x4D, 0xF5, 0x23, 0xB1, 0x47, 0x2E, 0x2E, 0x6B, 0xC8, 0x18, 0x89, 0x86, + 0x59, 0xBA, 0xC7, 0x3F, 0x1C, 0xD5, 0x24, 0x35, 0xBC, 0x37, 0x46, 0x7F, + 0xB3, 0x7E, 0xEF, 0x35, 0xA9, 0x1C, 0x2D, 0x8F, 0x10, 0x11, 0x07, 0x8B, + 0x5C, 0x1C, 0x4C, 0x42, 0xC6, 0xE6, 0x17, 0x32, 0xF1, 0xBF, 0x61, 0x7A, + 0x75, 0x3E, 0x02, 0x58, 0xE1, 0x6B, 0x59, 0x1E, 0xFF, 0x16, 0xC8, 0x65, + 0xAF, 0xF1, 0xB1, 0x14, 0x86, 0x84, 0xC1, 0x03, 0x7A, 0x75, 0x7B, 0x9E, + 0x6B, 0xD2, 0x4C, 0x39, 0xD0, 0x01, 0x71, 0xB7, 0xFA, 0x36, 0x78, 0x59, + 0xB5, 0xF0, 0x63, 0xF1, 0x24, 0xD1, 0x10, 0x37, 0x92, 0xF6, 0x0F, 0x58, + 0x7A, 0xC7, 0xCE, 0xB5, 0xC9, 0x79, 0x1C, 0x38, 0x36, 0x07, 0x34, 0x99, + 0xCE, 0xC4, 0x97, 0x98, 0x7C, 0xA0, 0xA7, 0xD0, 0x04, 0x2B, 0x5F, 0x10, + 0xC9, 0xE8, 0x7A, 0xF6, 0x5C, 0xFC, 0xAC, 0xF4, 0x6F, 0x2E, 0x6B, 0xB7, + 0xE8, 0xC5, 0x26, 0xC5, 0xB1, 0x38, 0x8E, 0x5B, 0x81, 0x90, 0x1C, 0x38, + 0xB8, 0x8F, 0xD0, 0x82, 0x1B, 0xF0, 0x4A, 0x0C, 0x46, 0x8B, 0xED, 0x49, + 0x21, 0xD9, 0x6D, 0x17, 0x29, 0xA1, 0xBB, 0x59, 0xDE, 0x98, 0x24, 0xDF, + 0xAE, 0x07, 0xC5, 0x92, 0xD2, 0xC9, 0x92, 0x00, 0x8F, 0xB0, 0xB0, 0x36, + 0x58, 0xFA, 0xB8, 0xB0, 0x43, 0x17, 0xB0, 0xA3, 0x3B, 0xAF, 0x39, 0xB8, + 0x31, 0x8A, 0x38, 0xBF, 0xD2, 0xEE, 0x06, 0x0B, 0xB6, 0x99, 0x00, 0x41, + 0xF5, 0x72, 0x9A, 0x9C, 0x1F, 0xBA, 0xFB, 0x22, 0xB3, 0xA5, 0x8A, 0x11, + 0x7B, 0xF2, 0x53, 0xEB, 0x90, 0x60, 0x72, 0x3C, 0xC3, 0x56, 0xAC, 0xBD, + 0xE2, 0xFA, 0xBF, 0x37, 0xB8, 0x9F, 0xDD, 0x4E, 0xF1, 0x05, 0x9E, 0x65, + 0x3B, 0x45, 0x89, 0xA5, 0xD3, 0xA3, 0xBA, 0xD4, 0x1C, 0xCA, 0x0C, 0xCE, + 0xDC, 0x5C, 0x66, 0xFE, 0x4B, 0x44, 0x1A, 0xC9, 0xB0, 0x52, 0x02, 0xCD, + 0x47, 0x89, 0x90, 0x2E, 0xA4, 0x3F, 0xEC, 0x90, 0xCD, 0x84, 0xF3, 0x58, + 0x6B, 0x24, 0xBA, 0x03, 0xBC, 0x57, 0x1B, 0xA2, 0xAC, 0xF2, 0x80, 0x0F, + 0x26, 0x04, 0x59, 0xA2, 0x74, 0x07, 0x03, 0xFD, 0xC4, 0x57, 0x29, 0xCF, + 0x90, 0xF7, 0xD3, 0x58, 0x4A, 0x71, 0x69, 0x7C, 0x7F, 0x52, 0x77, 0x1B, + 0x0D, 0xFF, 0x0A, 0x59, 0x80, 0x4E, 0x3F, 0xE8, 0x82, 0xB6, 0xA5, 0x68, + 0x9C, 0x62, 0x3A, 0x6C, 0x71, 0x3A, 0xCA, 0x23, 0x6E, 0x03, 0xB1, 0x50, + 0x32, 0x13, 0x27, 0x81, 0xCB, 0x68, 0x42, 0x7D, 0x32, 0x23, 0x4F, 0x85, + 0x39, 0x76, 0x8C, 0x8F, 0xB0, 0x73, 0xD3, 0xED, 0x56, 0xF0, 0xC6, 0x66, + 0x01, 0x13, 0xB4, 0x13, 0x95, 0x8E, 0x49, 0x22, 0x4F, 0x5D, 0xFF, 0xDB, + 0xAE, 0x50, 0x71, 0x6E, 0xC2, 0xA2, 0xA7, 0x70, 0xEE, 0xDB, 0xB5, 0x18, + 0x1E, 0x4C, 0x0F, 0x57, 0xC7, 0x4E, 0x46, 0xDD, 0x78, 0x5F, 0x1A, 0xEE, + 0x02, 0xAC, 0x80, 0xE4, 0xA8, 0x38, 0x67, 0xAD, 0x5C, 0xF7, 0x00, 0xC5, + 0xCA, 0x0B, 0x52, 0x49, 0x94, 0x43, 0x97, 0x90, 0x46, 0xF5, 0x1A, 0xA5, + 0x21, 0x7E, 0x05, 0xAC, 0xF1, 0x97, 0x66, 0x42, 0xFB, 0x5D, 0x4F, 0x71, + 0x4B, 0x8E, 0x3E, 0xC3, 0x9E, 0x14, 0xF7, 0xAD, 0xDE, 0x34, 0xEB, 0x9C, + 0x06, 0xB1, 0x8A, 0xE2, 0x9D, 0xA6, 0x25, 0xFD, 0x1B, 0x69, 0xDF, 0x41, + 0x60, 0xBF, 0xA4, 0x04, 0x5C, 0xF7, 0x76, 0xFD, 0x22, 0x30, 0x0C, 0x63, + 0xDB, 0xAD, 0x42, 0xA8, 0x0A, 0x97, 0xE7, 0xF0, 0x57, 0x9D, 0x17, 0x6B, + 0x37, 0x5D, 0x35, 0xC9, 0x5F, 0xAC, 0xF6, 0xB8, 0x89, 0x41, 0xB0, 0x6F, + 0x49, 0xA8, 0x47, 0x61, 0xB1, 0x63, 0x65, 0x40, 0x07, 0xD8, 0xC5, 0x5A, + 0x5D, 0x1D, 0x82, 0x7F, 0xCC, 0x6A, 0xF2, 0xA1, 0x36, 0x3C, 0xC0, 0x51, + 0x6E, 0xD3, 0x4B, 0x36, 0xE0, 0x07, 0xCE, 0xA3, 0x9B, 0xB1, 0x13, 0x04, + 0x32, 0x87, 0x75, 0x4A, 0x16, 0x34, 0xB4, 0x75, 0x0F, 0x75, 0x33, 0x7C, + 0xEC, 0x02, 0x35, 0xA9, 0x49, 0x39, 0xF6, 0x24, 0x03, 0x73, 0xCE, 0x54, + 0x45, 0x02, 0x6C, 0x0A, 0x53, 0x2B, 0x73, 0x38, 0x3C, 0x81, 0x56, 0xA7, + 0xBB, 0xF2, 0x73, 0x0F, 0xC7, 0xB7, 0x0E, 0xAA, 0x45, 0x62, 0xA6, 0x29, + 0x8C, 0xC9, 0x0D, 0x45, 0x0E, 0xBD, 0xDB, 0xD8, 0x71, 0x5C, 0xD7, 0x18, + 0xFC, 0xB0, 0x61, 0x89, 0xA2, 0x22, 0xF4, 0xF5, 0x48, 0x38, 0xE8, 0x7F, + 0x17, 0x5C, 0x82, 0xF6, 0x2D, 0x1F, 0x28, 0x85, 0xD9, 0xB7, 0x16, 0xA4, + 0x52, 0x6F, 0x3A, 0xF1, 0xEE, 0xA7, 0x2D, 0x99, 0x71, 0xAD, 0xAA, 0x15, + 0x24, 0xD8, 0x86, 0x1D, 0x78, 0x90, 0x0B, 0x4C, 0x4E, 0x78, 0xC1, 0xC2, + 0xD7, 0xED, 0xE6, 0xB4, 0xF0, 0xAC, 0x2A, 0xFD, 0xE6, 0x75, 0xBA, 0xCA, + 0x0C, 0xAD, 0xD6, 0x3D, 0x38, 0x4D, 0x1F, 0xE9, 0x7D, 0x87, 0xA8, 0xCA, + 0x13, 0x1A, 0xFA, 0x72, 0x53, 0x8E, 0xB2, 0x2F, 0xE3, 0xAD, 0xAA, 0x8E, + 0x7A, 0xBA, 0x6A, 0xBC, 0x2C, 0x8E, 0xBA, 0xD5, 0x0B, 0x3E, 0x2F, 0x4D, + 0xB3, 0xC4, 0xF6, 0x6F, 0x01, 0xEF, 0x90, 0x60, 0xC9, 0x3D, 0xD2, 0x93, + 0x45, 0x03, 0xCB, 0x65, 0x11, 0xE1, 0xAD, 0x7A, 0x90, 0xCE, 0xFA, 0x41, + 0x05, 0x45, 0x55, 0x10, 0xE9, 0x44, 0xBF, 0x59, 0x58, 0xC2, 0x71, 0xDB, + 0x00, 0xBA, 0x0C, 0x32, 0x08, 0xF9, 0xB1, 0x58, 0xFA, 0xE6, 0x45, 0xFD, + 0x0B, 0xBC, 0x23, 0xB7, 0x82, 0xE1, 0x89, 0x3A, 0x1F, 0xA1, 0xDA, 0xD2, + 0x27, 0x7A, 0x0C, 0x18, 0xA1, 0x1D, 0x02, 0xD0, 0x59, 0xEE, 0xA8, 0x42, + 0xF4, 0x67, 0x02, 0x0A, 0xC1, 0xB0, 0xC2, 0x3E, 0x8E, 0x86, 0xAD, 0xB5, + 0x3B, 0x78, 0x05, 0xBE, 0x51, 0x12, 0xBF, 0x50, 0x58, 0xBD, 0xF3, 0x94, + 0xFB, 0x02, 0x04, 0x38, 0x5F, 0xFD, 0xDC, 0x7D, 0xCB, 0xDA, 0x26, 0x36, + 0x79, 0x5C, 0x89, 0x52, 0xB8, 0xF8, 0x96, 0x4B, 0xA9, 0x49, 0x43, 0xB5, + 0x32, 0x22, 0x40, 0x27, 0x67, 0xFE, 0x46, 0xB9, 0x0B, 0x17, 0x75, 0x4B, + 0xEB, 0x08, 0xA1, 0xDE, 0xC6, 0x7E, 0xD5, 0xAF, 0x4A, 0x69, 0xAA, 0x8C, + 0xA1, 0x74, 0x33, 0x54, 0x33, 0x47, 0x62, 0x00, 0xE8, 0x63, 0x76, 0x4C, + 0xE7, 0x76, 0xEE, 0x78, 0x5A, 0xB8, 0x44, 0x4A, 0x8F, 0x0D, 0xD7, 0x32, + 0xC4, 0xB9, 0xB0, 0x1A, 0xF9, 0x58, 0x8F, 0x9E, 0x06, 0x9F, 0x87, 0x9D, + 0x29, 0x1E, 0xBF, 0xA5, 0xFD, 0xA6, 0xCD, 0xF9, 0xD8, 0x6D, 0x01, 0xCC, + 0x0F, 0xF6, 0x52, 0xCB, 0xFA, 0xE0, 0xA5, 0x2D, 0xCC, 0xB9, 0xA0, 0xB1, + 0x9D, 0xD3, 0x09, 0x24, 0x34, 0xD7, 0x01, 0x15, 0x3D, 0xEB, 0x0F, 0x07, + 0xAC, 0x3A, 0x94, 0xCC, 0xAA, 0x52, 0x1E, 0xBD, 0x4C, 0x49, 0xCD, 0x22, + 0x85, 0x89, 0x47, 0x27, 0x21, 0x4E, 0x96, 0x41, 0x94, 0x6F, 0xFF, 0x2E, + 0x69, 0x3A, 0x6B, 0xA7, 0x74, 0xBA, 0x9B, 0xEB, 0x25, 0x5E, 0xA9, 0x5A, + 0xE0, 0x66, 0x59, 0xF6, 0x18, 0x5B, 0x77, 0xDF, 0x8E, 0x56, 0x67, 0x52, + 0x2C, 0xDA, 0x0C, 0xB0, 0xF2, 0xF8, 0xB9, 0xE2, 0x80, 0xB4, 0x2A, 0x6E, + 0xFF, 0x81, 0xC2, 0x72, 0x7C, 0xEE, 0x71, 0xC7, 0x06, 0xF5, 0x61, 0xAC, + 0xFC, 0x77, 0x84, 0xD4, 0xEB, 0x41, 0x95, 0x7F, 0xEE, 0xD0, 0xDD, 0x91, + 0x20, 0xAE, 0xF9, 0xBE, 0xF8, 0x30, 0xF3, 0x25, 0x57, 0xA4, 0x1D, 0xDB, + 0x0F, 0xD3, 0x5A, 0xA7, 0x93, 0x1B, 0x83, 0x4B, 0x62, 0xD4, 0x4C, 0xA1, + 0xD6, 0x34, 0x0D, 0xBC, 0x36, 0x00, 0x35, 0x65, 0x61, 0x14, 0x48, 0x03, + 0x4B, 0xB5, 0xBB, 0xFA, 0x5D, 0xB0, 0x2D, 0xCA, 0x8E, 0x54, 0x2A, 0xBA, + 0x77, 0xA4, 0xE4, 0x94, 0x31, 0x21, 0x0B, 0xDB, 0x04, 0xA2, 0x6B, 0xEB, + 0x80, 0xF2, 0x71, 0xD9, 0x2E, 0xDA, 0x8C, 0x61, 0xA5, 0x79, 0x48, 0x7F, + 0x70, 0xFB, 0x04, 0xF5, 0xB8, 0xA0, 0xCD, 0x1D, 0xB0, 0xBF, 0x62, 0x29, + 0xC1, 0xAB, 0xB1, 0xA1, 0xD8, 0x6E, 0x48, 0xC7, 0x0B, 0x20, 0x1A, 0xF6, + 0xD6, 0xB2, 0x37, 0xD2, 0xA3, 0xCC, 0x84, 0x33, 0xBD, 0x90, 0xFE, 0x23, + 0x10, 0x9A, 0x41, 0x0A, 0xBA, 0xB3, 0xE6, 0x75, 0x62, 0x7D, 0x91, 0x82, + 0x1C, 0x45, 0xBB, 0x24, 0xD3, 0x67, 0xDA, 0xB2, 0xA5, 0xE5, 0x0F, 0xDF, + 0x0B, 0x58, 0xDA, 0x25, 0xEB, 0x02, 0x66, 0xE1, 0x5C, 0xEA, 0x3E, 0x6B, + 0x32, 0xFF, 0xFA, 0x8A, 0x6F, 0x91, 0x23, 0x3E, 0x52, 0xD5, 0x84, 0x30, + 0xA4, 0x15, 0xB5, 0x04, 0xCC, 0xCE, 0x10, 0x9F, 0x04, 0xD2, 0x53, 0x94, + 0xB9, 0x01, 0x71, 0x0D, 0xA2, 0xA0, 0xCB, 0x8F, 0x9C, 0xA3, 0x49, 0x6C, + 0x2A, 0x3E, 0x88, 0xC3, 0x39, 0x05, 0x99, 0x57, 0xAE, 0xEA, 0x38, 0x78, + 0xF9, 0x4C, 0x49, 0x1D, 0xCE, 0x32, 0x10, 0x4A, 0x10, 0x24, 0x5D, 0x16, + 0xBE, 0x82, 0x40, 0x28, 0xC5, 0xC4, 0xC9, 0x4E, 0xE0, 0xF9, 0x68, 0xB8, + 0x83, 0x68, 0xAC, 0x2F, 0x74, 0xB1, 0x9B, 0x52, 0xFC, 0x0D, 0x31, 0xBB, + 0xF2, 0xB0, 0x24, 0x94, 0x78, 0x8C, 0x39, 0xEC, 0xA7, 0xDE, 0x3F, 0xF4, + 0xC7, 0xC8, 0x4A, 0x3B, 0x37, 0x42, 0x41, 0x46, 0x4B, 0x5D, 0x53, 0x6C, + 0x45, 0xB2, 0x2A, 0x6E, 0x6A, 0x4A, 0x8F, 0xDD, 0x56, 0x1E, 0xAA, 0xB2, + 0x41, 0x60, 0xDC, 0xE7, 0x45, 0x86, 0xFD, 0xE2, 0xCE, 0xD9, 0x9B, 0x98, + 0x39, 0x4E, 0xBE, 0x2B, 0x89, 0x2E, 0xEF, 0xCB, 0xE4, 0x4D, 0xCD, 0x00, + 0x0A, 0x8E, 0x69, 0xAD, 0x36, 0x0A, 0xBB, 0xCC, 0x5E, 0x8F, 0x5D, 0x12, + 0x30, 0x6E, 0xEF, 0xAE, 0x4E, 0xAD, 0xFE, 0xF8, 0x3D, 0x71, 0x61, 0x75, + 0x37, 0x5B, 0x61, 0xC7, 0x1B, 0x38, 0xFB, 0x16, 0x19, 0xD7, 0x82, 0x5F, + 0x98, 0x4E, 0xDF, 0x7E, 0xAD, 0x24, 0x38, 0x6E, 0xCF, 0xA6, 0xD0, 0x93, + 0xBE, 0x70, 0x16, 0x1C, 0x01, 0x29, 0xA9, 0x67, 0xD9, 0x08, 0x22, 0x48, + 0xDD, 0x1E, 0x82, 0x13, 0xB7, 0xA7, 0xFD, 0x74, 0xAE, 0xA2, 0xE4, 0xEA, + 0x60, 0xB8, 0xD1, 0x43, 0xDA, 0x35, 0xFF, 0x76, 0xF8, 0xF5, 0x91, 0x5F, + 0xB7, 0xEF, 0x21, 0x81, 0xA1, 0x8B, 0x88, 0xE7, 0x4E, 0xA4, 0x12, 0xDC, + 0x3C, 0x35, 0xA8, 0x9D, 0x27, 0x78, 0x1F, 0x48, 0xE7, 0x54, 0x4C, 0x98, + 0x7B, 0x13, 0x1F, 0x42, 0xD4, 0x36, 0x55, 0xDB, 0x96, 0x74, 0xE4, 0xDA, + 0xF2, 0xE3, 0xCC, 0xC1, 0xC8, 0x23, 0x4D, 0x90, 0x51, 0x77, 0x0B, 0xA3, + 0x4D, 0x0C, 0xDD, 0x19, 0x87, 0x13, 0x15, 0xDB, 0x4F, 0x39, 0x8B, 0x48, + 0x25, 0x85, 0x3B, 0x02, 0x1E, 0x73, 0x83, 0xEF, 0xBD, 0x5A, 0x13, 0x06, + 0xAD, 0xAB, 0x90, 0xD9, 0x9F, 0xBC, 0x59, 0xE7, 0x0A, 0xA8, 0xB6, 0xEF, + 0xAD, 0xB5, 0x37, 0x7B, 0x9D, 0xAA, 0xAC, 0x9C, 0xC7, 0x0F, 0x7B, 0x34, + 0x78, 0x83, 0x51, 0xCB, 0x5B, 0xD3, 0xFE, 0x14, 0x0E, 0xB1, 0x31, 0xAB, + 0x78, 0x9F, 0xDE, 0x3F, 0xDF, 0x05, 0x96, 0xA4, 0xA3, 0x44, 0x3B, 0x5F, + 0x20, 0x80, 0x5C, 0xE5, 0x02, 0xFF, 0xD2, 0xD3, 0xB9, 0x0A, 0xFD, 0x39, + 0x97, 0x39, 0x68, 0x43, 0x2E, 0x73, 0x18, 0x29, 0xFC, 0x9B, 0x2D, 0x03, + 0x4B, 0x93, 0xD0, 0x57, 0x82, 0x82, 0x14, 0x4C, 0xD3, 0x87, 0x21, 0x39, + 0x9E, 0x2B, 0x15, 0x6C, 0xCE, 0xB6, 0xB4, 0x69, 0x17, 0xE9, 0xD5, 0xA0, + 0x67, 0xED, 0x47, 0xAF, 0xAE, 0xFD, 0xBC, 0xA6, 0xAA, 0xC3, 0xEA, 0x86, + 0xF5, 0x5E, 0x2A, 0xA9, 0x41, 0xF9, 0x4D, 0x70, 0x77, 0x43, 0xBF, 0x31, + 0xCC, 0x02, 0x06, 0x31, 0xCB, 0x9C, 0x47, 0xD6, 0xAF, 0x79, 0x5B, 0xE3, + 0x0B, 0xA9, 0xCB, 0xBF, 0x42, 0xC4, 0x3E, 0xC2, 0x13, 0x3D, 0x5B, 0x5C, + 0x23, 0x82, 0xF3, 0x57, 0x08, 0xA7, 0x0A, 0x06, 0x73, 0xC3, 0x13, 0x86, + 0xE0, 0x24, 0xAC, 0x45, 0xA6, 0x93, 0x2D, 0x69, 0xA4, 0x13, 0x28, 0x18, + 0x7D, 0x92, 0xFB, 0x51, 0x3F, 0x9B, 0x62, 0xFD, 0x51, 0xA9, 0xDA, 0xFC, + 0x4A, 0xA0, 0x9D, 0xFC, 0x15, 0xE1, 0xFA, 0x19, 0x08, 0xD3, 0xB7, 0xE3, + 0x1F, 0xA5, 0x53, 0xA1, 0xFE, 0xFF, 0xA5, 0xF3, 0x28, 0x9D, 0x26, 0x12, + 0xED, 0xD2, 0x3C, 0xFA, 0x7E, 0x7C, 0x20, 0x8D, 0x9D, 0x4E, 0xD8, 0x6A, + 0xBD, 0xEE, 0xF8, 0x31, 0x29, 0xDF, 0x36, 0xC7, 0x2B, 0x5F, 0x45, 0xB7, + 0x9B, 0xAE, 0x33, 0x95, 0xE3, 0xE3, 0x9F, 0x0C, 0x9C, 0xEB, 0xCE, 0xD3, + 0xF2, 0x05, 0x3D, 0xDC, 0x0A, 0xD5, 0x7C, 0xF8, 0x4A, 0xDA, 0xEB, 0xA9, + 0x47, 0x90, 0xA1, 0x2B, 0x3E, 0xE3, 0x46, 0xFE, 0x44, 0xE4, 0x90, 0x55, + 0xD7, 0x3C, 0x36, 0xAF, 0xCE, 0x42, 0x1C, 0xC8, 0xD7, 0xF2, 0xAB, 0x02, + 0x4E, 0x6F, 0x3F, 0xA5, 0x71, 0x9B, 0xB4, 0x67, 0x65, 0x17, 0x06, 0x4C, + 0x7A, 0x0E, 0xF5, 0x22, 0x46, 0x11, 0x55, 0x21, 0xD8, 0x27, 0x16, 0x1D, + 0xB4, 0xF1, 0xA8, 0x5B, 0x9D, 0xA4, 0x4B, 0xD6, 0xEC, 0xC7, 0x20, 0x37, + 0x93, 0x20, 0x40, 0x12, 0x88, 0x9A, 0xE9, 0xDA, 0x63, 0x1A, 0xA4, 0xA6, + 0xE1, 0x3E, 0x04, 0xE2, 0x9C, 0x74, 0xDF, 0x7C, 0x4C, 0x34, 0xED, 0x58, + 0xAC, 0x6B, 0x55, 0x85, 0x9A, 0xC6, 0x9E, 0x3F, 0x00, 0x2F, 0x2E, 0x03, + 0xED, 0x48, 0xDD, 0xC2, 0x49, 0xF5, 0x2B, 0x64, 0x76, 0xD7, 0xF5, 0x2F, + 0xC3, 0xE0, 0xE8, 0x56, 0x4D, 0xD4, 0x64, 0x1B, 0xBB, 0xD3, 0x1B, 0x21, + 0x1F, 0x01, 0x4C, 0x32, 0xD2, 0xCC, 0xFD, 0xF5, 0x38, 0x99, 0xBC, 0x40, + 0x05, 0xE2, 0x02, 0xCB, 0x28, 0x92, 0xE5, 0x5D, 0xFF, 0x2A, 0xBC, 0xFF, + 0x98, 0x01, 0x7C, 0xEF, 0x04, 0x36, 0x50, 0xFC, 0x61, 0x35, 0xC6, 0xC1, + 0xB2, 0x1B, 0xCD, 0x8C, 0x38, 0x42, 0xBD, 0x8F, 0x84, 0x06, 0xBE, 0x4C, + 0x3F, 0xBE, 0xF0, 0xA2, 0x0A, 0x92, 0x4E, 0xD4, 0x87, 0x7E, 0x8A, 0x11, + 0x0B, 0x75, 0xF6, 0x5A, 0xBD, 0x3B, 0xB5, 0x9B, 0xFF, 0x39, 0x5E, 0x7E, + 0x3C, 0xA1, 0xBD, 0x76, 0xAF, 0xCB, 0x1B, 0xA5, 0x48, 0x35, 0x83, 0x89, + 0xCF, 0xB4, 0x18, 0x37, 0xFB, 0x95, 0x34, 0x4F, 0x39, 0x29, 0x17, 0x9C, + 0xBB, 0xDC, 0xF7, 0x68, 0x1B, 0xFB, 0x95, 0x42, 0xED, 0xA6, 0xFE, 0xE2, + 0xBE, 0x06, 0xDB, 0xE1, 0x6B, 0xC9, 0x54, 0x2F, 0xA3, 0x75, 0x91, 0xBE, + 0xE0, 0x55, 0x6B, 0xA5, 0xD8, 0x0E, 0xD0, 0xD0, 0x08, 0x64, 0xEE, 0xFC, + 0xEE, 0x7E, 0x39, 0xAC, 0x94, 0x9C, 0x3F, 0x77, 0xF2, 0xDA, 0xF5, 0xBE, + 0x9F, 0x91, 0x63, 0x68, 0xB6, 0xE2, 0x06, 0xAD, 0x8B, 0x1B, 0xDB, 0xE9, + 0x0D, 0x87, 0x6F, 0x78, 0x6B, 0x51, 0x86, 0xE1, 0x44, 0x91, 0xD7, 0x62, + 0x1D, 0x7F, 0x88, 0xE8, 0x2A, 0xAD, 0x19, 0x01, 0x02, 0x76, 0x05, 0x43, + 0xBE, 0x1A, 0xB8, 0x36, 0xC2, 0x0D, 0x24, 0x90, 0x2E, 0x13, 0xCF, 0xFC, + 0x0C, 0x3E, 0x18, 0x9D, 0xBF, 0x16, 0x1E, 0xAB, 0x22, 0x5B, 0xF8, 0x72, + 0xE0, 0xDF, 0xF9, 0x51, 0x73, 0xB2, 0x54, 0x99, 0x32, 0x00, 0x4E, 0x06, + 0x3F, 0xAA, 0x1F, 0xE5, 0x6C, 0xF0, 0x1D, 0xF5, 0xA0, 0x10, 0x2B, 0x63, + 0x1C, 0x65, 0xAA, 0xC6, 0x8C, 0x8D, 0x7D, 0xE5, 0xA8, 0x98, 0xBD, 0x0E, + 0xE4, 0xCF, 0x06, 0x28, 0x8A, 0xC3, 0xFB, 0x16, 0x2A, 0x29, 0xE7, 0xCA, + 0xDC, 0xCC, 0xAB, 0xB3, 0xF1, 0x7B, 0x87, 0x76, 0xBA, 0xB3, 0xA2, 0x70, + 0x47, 0x08, 0x52, 0x2F, 0x3A, 0xA6, 0x30, 0x0F, 0xA8, 0x66, 0x32, 0xC3, + 0x0B, 0x7F, 0x19, 0x24, 0x0A, 0xE3, 0x69, 0x09, 0xD4, 0x90, 0x14, 0xE8, + 0xF5, 0xD3, 0xAB, 0x7C, 0xB4, 0xB4, 0x2B, 0x4C, 0xB8, 0x44, 0x90, 0xCF, + 0xE4, 0xB1, 0x5C, 0xEE, 0x0E, 0xC1, 0x19, 0xFF, 0x10, 0xC6, 0x9A, 0xD5, + 0x32, 0x90, 0x69, 0x9D, 0xCF, 0xD4, 0x7B, 0x65, 0x39, 0x59, 0x19, 0x97, + 0x30, 0xB8, 0x00, 0xD1, 0xE2, 0x82, 0x61, 0xBF, 0x9C, 0x6E, 0x05, 0x6A, + 0xB4, 0x36, 0x42, 0xC2, 0x7A, 0xB9, 0x96, 0x6E, 0x62, 0x9C, 0x68, 0x11, + 0x71, 0x87, 0x64, 0x87, 0x96, 0x80, 0x56, 0x67, 0xFC, 0xDB, 0x71, 0x51, + 0x87, 0x4C, 0x5C, 0xFD, 0xA2, 0x90, 0xD2, 0x0E, 0x9C, 0x52, 0xD2, 0xE7, + 0x49, 0x07, 0x56, 0x12, 0xA6, 0xD8, 0x8A, 0x1C, 0xAD, 0xAF, 0xA7, 0x20, + 0x56, 0x1F, 0xD0, 0xCD, 0x93, 0xBE, 0x4F, 0xFB, 0x60, 0xA3, 0x10, 0xB5, + 0x79, 0xB5, 0x7E, 0x79, 0xF5, 0x2F, 0x57, 0xC2, 0xDD, 0x23, 0x23, 0x4E, + 0x91, 0xC2, 0xBD, 0x81, 0xDA, 0x48, 0x88, 0xA3, 0xDC, 0x2A, 0xF0, 0xBE, + 0x08, 0x00, 0xE7, 0xC6, 0xA4, 0x66, 0x16, 0x30, 0x40, 0xA5, 0xF1, 0x40, + 0x1C, 0x57, 0x5F, 0x1D, 0x96, 0x76, 0xF2, 0xE3, 0x71, 0xD4, 0x2E, 0x76, + 0x90, 0x32, 0x4F, 0x2F, 0xF5, 0xED, 0x59, 0x2F, 0x20, 0x97, 0x7A, 0x1F, + 0xE1, 0xE0, 0xE4, 0x1E, 0x93, 0xF3, 0x79, 0x8B, 0xCD, 0x0B, 0x84, 0x91, + 0xDF, 0x35, 0x7C, 0x7F, 0xEE, 0xC9, 0x61, 0xF1, 0xFD, 0xBF, 0xFB, 0xA0, + 0x09, 0x7A, 0xA1, 0xFF, 0xD6, 0x13, 0x14, 0xD7, 0xEB, 0x37, 0x26, 0x31, + 0x98, 0x16, 0xD8, 0xA7, 0xCE, 0x6C, 0x64, 0x71, 0xE0, 0xE3, 0x5C, 0x33, + 0x97, 0x9E, 0x1A, 0x25, 0x13, 0xBF, 0x05, 0x04, 0x0D, 0x11, 0xF3, 0x19, + 0x20, 0x43, 0x7B, 0x7D, 0x8A, 0x5F, 0x89, 0x05, 0xAC, 0x59, 0xBC, 0xDA, + 0x45, 0x57, 0x30, 0xA3, 0x68, 0x9F, 0x18, 0x0B, 0x9A, 0x41, 0x7E, 0x7B, + 0x85, 0x8E, 0x37, 0xAE, 0x2D, 0xDE, 0x7C, 0xE8, 0xB5, 0x37, 0xA7, 0xB9, + 0xF0, 0xA9, 0xA4, 0x55, 0x83, 0x3F, 0x8F, 0x1E, 0x01, 0x0C, 0xF9, 0x9E, + 0x43, 0x5C, 0x60, 0x3F, 0x26, 0xE4, 0xBB, 0x8B, 0xAC, 0x61, 0xFF, 0x2F, + 0x43, 0x1E, 0x6B, 0x0B, 0xFB, 0xC9, 0x6A, 0x8C, 0x22, 0x36, 0xC1, 0x21, + 0x77, 0x44, 0xFF, 0x2C, 0xF8, 0xCF, 0x29, 0x9F, 0x6F, 0x3E, 0x43, 0x2B, + 0xE2, 0x3F, 0x8E, 0x0F, 0xC1, 0x38, 0x2E, 0x7D, 0x25, 0x76, 0x1A, 0x10, + 0x19, 0xEE, 0x37, 0x05, 0xEB, 0x7A, 0x4F, 0x07, 0xD8, 0x1D, 0x0F, 0xF3, + 0x50, 0x43, 0x4E, 0x67, 0x85, 0x26, 0x16, 0xE5, 0x38, 0x3D, 0x3F, 0xEB, + 0x4C, 0x87, 0x5E, 0xDE, 0x9E, 0xD2, 0x82, 0x04, 0x5B, 0x69, 0x12, 0xEA, + 0xB4, 0x8D, 0x73, 0xE0, 0xA9, 0x1A, 0xEB, 0x19, 0x89, 0xEA, 0xBF, 0x6E, + 0xBA, 0x6D, 0x9D, 0x2B, 0x0B, 0x6A, 0x64, 0x50, 0x9B, 0x79, 0x30, 0xB3, + 0x12, 0x30, 0x89, 0x92, 0x0B, 0xF8, 0x88, 0x31, 0x7E, 0xB7, 0xD0, 0x2D, + 0x84, 0xFD, 0x7D, 0xE0, 0x08, 0x39, 0x84, 0x45, 0xD2, 0x5E, 0x1F, 0x42, + 0xEE, 0x2C, 0xF3, 0xE5, 0xBA, 0xB5, 0xA5, 0x50, 0xAB, 0xD2, 0xEB, 0xEB, + 0x72, 0x9A, 0xE7, 0x18, 0x7A, 0x41, 0xFE, 0x8A, 0xBB, 0x4F, 0x0B, 0x2B, + 0xB7, 0xF0, 0x12, 0x12, 0x58, 0xCC, 0xC1, 0x88, 0x9E, 0x20, 0xF2, 0xFA, + 0x0F, 0xE5, 0x36, 0xAD, 0x64, 0x05, 0xB4, 0x1C, 0xA4, 0xD8, 0x60, 0x36, + 0x7C, 0xD8, 0x1F, 0xED, 0xAA, 0x51, 0x60, 0x2F, 0x1F, 0x76, 0x80, 0xB9, + 0x02, 0xAA, 0x2C, 0x14, 0x17, 0xE6, 0xD2, 0xFE, 0x26, 0xBA, 0xD2, 0xE5, + 0xCB, 0x0B, 0x7D, 0xBE, 0xCC, 0x09, 0xD9, 0xEE, 0x8D, 0x23, 0x52, 0xFB, + 0x54, 0xF4, 0x9E, 0x3B, 0x2A, 0xEA, 0x91, 0x40, 0x6E, 0x3B, 0x03, 0xC0, + 0x82, 0x3D, 0x35, 0x72, 0xAD, 0xC5, 0xB9, 0x53, 0xA1, 0x82, 0x4E, 0xE9, + 0xB6, 0x99, 0x16, 0xF7, 0xE4, 0x98, 0x93, 0x70, 0xAB, 0xEB, 0x91, 0xC6, + 0x7E, 0x70, 0x5D, 0x47, 0xCF, 0x71, 0x5C, 0xCB, 0x61, 0x90, 0xDA, 0xD8, + 0xF1, 0x41, 0xA5, 0x85, 0xA2, 0x4A, 0x9A, 0x15, 0xA3, 0x9D, 0x4A, 0xC9, + 0x42, 0x9A, 0x41, 0x67, 0x68, 0x02, 0xC1, 0x8D, 0x5F, 0xD5, 0x7F, 0xDF, + 0x8F, 0x08, 0xE9, 0x96, 0xF9, 0x8A, 0x43, 0x30, 0xA6, 0x2F, 0x46, 0x31, + 0xCC, 0x73, 0x16, 0x31, 0xF5, 0x56, 0x19, 0x7B, 0x99, 0xC1, 0xF0, 0xA3, + 0x54, 0x90, 0xFF, 0x1E, 0x81, 0xCB, 0x88, 0x50, 0x64, 0x9F, 0x23, 0xFC, + 0xB5, 0x12, 0x24, 0xDC, 0xD2, 0x6B, 0x22, 0x5C, 0xED, 0xA3, 0xF2, 0x8B, + 0x0E, 0xE9, 0xD4, 0x8B, 0xAF, 0x94, 0x0B, 0xA4, 0x7B, 0x25, 0x88, 0xD8, + 0x4A, 0x5E, 0x33, 0x85, 0x5B, 0xD0, 0xD4, 0x50, 0xA4, 0xB2, 0xE5, 0x18, + 0x7B, 0x7B, 0xEE, 0xCB, 0xF0, 0xDA, 0xF5, 0x18, 0xD8, 0x5C, 0x22, 0x0B, + 0x11, 0xDE, 0x02, 0x1F, 0xF8, 0xC6, 0x0D, 0x75, 0x36, 0xCA, 0x82, 0xCE, + 0x46, 0x31, 0x8C, 0x5E, 0x6A, 0x28, 0x3E, 0xD5, 0x3F, 0xB7, 0x16, 0x31, + 0x13, 0x6A, 0x14, 0x59, 0x88, 0x6A, 0x55, 0x65, 0x8A, 0x21, 0xD5, 0x48, + 0xD3, 0x4A, 0xD1, 0x70, 0xF4, 0x3B, 0x72, 0xC2, 0x8D, 0x1E, 0x28, 0xAF, + 0x41, 0x7B, 0xC2, 0x0C, 0x82, 0x6C, 0x3D, 0xD9, 0x25, 0x48, 0x6C, 0xD9, + 0x49, 0x0F, 0x8A, 0xDF, 0x27, 0x6E, 0x1E, 0x21, 0xB7, 0x65, 0x5A, 0x8F, + 0x89, 0x4E, 0x3F, 0x82, 0x47, 0xBF, 0x7C, 0x21, 0x91, 0x75, 0x10, 0x55, + 0x54, 0x21, 0x95, 0xE3, 0xDC, 0x4F, 0x12, 0x0C, 0x1B, 0x55, 0xC2, 0xBE, + 0x85, 0x60, 0x57, 0xB3, 0x70, 0x31, 0x54, 0xD3, 0x53, 0x84, 0xB6, 0x93, + 0xB5, 0x68, 0xC2, 0x14, 0x80, 0xC9, 0x91, 0x32, 0x87, 0x96, 0xFA, 0x20, + 0x03, 0xC2, 0xBE, 0xC2, 0x42, 0xDC, 0x4D, 0x28, 0xC4, 0xC1, 0x95, 0x5D, + 0xCF, 0x4D, 0xFE, 0xFA, 0x09, 0x43, 0x4F, 0xC2, 0x30, 0x65, 0xC4, 0x55, + 0xDE, 0x05, 0x6C, 0x29, 0xFA, 0xDD, 0x9C, 0x17, 0x9F, 0x05, 0x89, 0xD9, + 0xA8, 0x97, 0x46, 0x8C, 0x85, 0x81, 0xFC, 0x99, 0x72, 0x4F, 0x0A, 0xA0, + 0x8F, 0xF3, 0x25, 0x89, 0xBA, 0xDD, 0x63, 0x53, 0x6B, 0xA7, 0x15, 0x20, + 0x14, 0x92, 0x88, 0x51, 0x23, 0x82, 0xA3, 0x9D, 0x0D, 0xC2, 0x79, 0xB7, + 0xA3, 0x18, 0x88, 0xC9, 0xE0, 0xB0, 0x56, 0x8F, 0x16, 0x16, 0x36, 0xAA, + 0x40, 0xC9, 0x61, 0x41, 0x30, 0x82, 0x65, 0x2F, 0x81, 0x57, 0xD3, 0x86, + 0x90, 0x05, 0xC4, 0x44, 0x04, 0x12, 0xC8, 0x1B, 0xB8, 0x4D, 0x6A, 0x06, + 0x1B, 0x9F, 0xEF, 0xC0, 0xA3, 0xE9, 0x9B, 0xEA, 0x70, 0xC0, 0xCE, 0x73, + 0x89, 0x5F, 0x6D, 0x0C, 0x9B, 0x4C, 0x3B, 0x96, 0xB2, 0x8B, 0x6B, 0xF5, + 0x07, 0x00, 0xE4, 0x30, 0xED, 0xE0, 0xB6, 0xF0, 0xB5, 0xF8, 0x1D, 0xFB, + 0xCC, 0xC9, 0x10, 0x66, 0x5B, 0xE0, 0x15, 0xFB, 0x1D, 0xB7, 0x5C, 0x67, + 0x7F, 0x52, 0xD5, 0xA0, 0xF0, 0x9A, 0x6D, 0x37, 0xA7, 0x1B, 0xBD, 0x1F, + 0x7B, 0xF9, 0x82, 0x11, 0x98, 0x7D, 0x27, 0x0B, 0xF5, 0x31, 0x5F, 0x20, + 0x8D, 0x47, 0xA0, 0xB4, 0xD3, 0x59, 0x4B, 0x17, 0xF9, 0xA2, 0x38, 0x66, + 0x31, 0x3F, 0x02, 0xCD, 0x5D, 0xBE, 0x5B, 0x06, 0x17, 0xD7, 0xEC, 0xC4, + 0xD1, 0x67, 0x97, 0x49, 0xBA, 0x1D, 0xE5, 0xCD, 0x8E, 0xCF, 0x0D, 0xCD, + 0x6B, 0xAB, 0x9A, 0xDA, 0x2F, 0x3F, 0x62, 0xDF, 0xFA, 0xE5, 0xEC, 0x50, + 0x6D, 0x62, 0xCB, 0x0F, 0x53, 0xC7, 0x8A, 0x33, 0xF5, 0xB2, 0x8D, 0xFD, + 0x85, 0x31, 0x06, 0xE3, 0xCE, 0x77, 0xB6, 0x8B, 0x2A, 0xC7, 0xC2, 0x72, + 0xD5, 0xA9, 0x06, 0xBF, 0xAF, 0x76, 0x6F, 0xC2, 0x62, 0x31, 0x9A, 0x89, + 0x87, 0xE7, 0x54, 0xD4, 0x8F, 0x32, 0x31, 0x40, 0xE8, 0xAF, 0x82, 0x6C, + 0x69, 0x18, 0x19, 0x25, 0x74, 0xF0, 0xD1, 0xEB, 0x43, 0x71, 0x50, 0x20, + 0xCD, 0x84, 0xE9, 0x94, 0x86, 0x17, 0xA0, 0xF9, 0xB8, 0x65, 0xFE, 0x48, + 0x81, 0x57, 0xCE, 0x0F, 0xA7, 0xF3, 0x28, 0x3F, 0x02, 0x0D, 0xD9, 0x78, + 0x7A, 0x2F, 0x9F, 0x36, 0xAD, 0x8D, 0x47, 0x76, 0x51, 0xA7, 0x95, 0xF2, + 0xE3, 0x20, 0xDB, 0x57, 0x7F, 0xA9, 0x26, 0x29, 0xF1, 0x0F, 0xF7, 0xAB, + 0x2F, 0x7B, 0x2F, 0xEB, 0x96, 0x6C, 0xFD, 0xAA, 0x25, 0x21, 0x35, 0x38, + 0x89, 0xFF, 0xAE, 0xCD, 0x5F, 0xA0, 0xFE, 0x0F, 0x57, 0x70, 0xC0, 0x65, + 0x49, 0xA6, 0x5E, 0x3F, 0xB5, 0x24, 0x8A, 0x46, 0x32, 0xA1, 0x12, 0xC0, + 0x79, 0x0B, 0xD6, 0xE4, 0x26, 0x21, 0x90, 0x25, 0xB6, 0x81, 0xE5, 0x84, + 0xB9, 0x4E, 0x78, 0xFF, 0x44, 0xB7, 0xDB, 0xD5, 0xE2, 0x9B, 0x46, 0xBF, + 0xB9, 0x5F, 0xC5, 0x70, 0xCC, 0xD3, 0xA2, 0x77, 0xAE, 0xAC, 0xCE, 0x52, + 0x08, 0x52, 0x34, 0x6C, 0x41, 0xDA, 0xD6, 0x03, 0x87, 0x71, 0xFB, 0xD6, + 0x2B, 0xFC, 0x64, 0x89, 0x9F, 0x5D, 0x1C, 0x4E, 0xEE, 0x2F, 0xE5, 0xAC, + 0x01, 0x31, 0x46, 0x63, 0x12, 0x45, 0x79, 0x41, 0x93, 0x0C, 0x1A, 0x6B, + 0x3E, 0x73, 0x25, 0xCE, 0xD9, 0x35, 0x87, 0xBD, 0x9F, 0x30, 0xBC, 0x82, + 0xA8, 0x47, 0xCE, 0x8F, 0x48, 0x77, 0x26, 0x71, 0xCB, 0x9B, 0xD3, 0x1A, + 0x79, 0x2A, 0x29, 0x78, 0x7C, 0x6D, 0x5A, 0x72, 0x01, 0x0B, 0xE1, 0x46, + 0x32, 0x65, 0x9D, 0x2B, 0xD4, 0xD6, 0x28, 0x1F, 0xB2, 0x23, 0xA9, 0xF6, + 0x62, 0x2F, 0xCD, 0x99, 0x6C, 0x5D, 0x03, 0x5D, 0xA0, 0x7A, 0xC4, 0x05, + 0x82, 0x71, 0xB3, 0xC3, 0x2B, 0x9B, 0xC5, 0x47, 0x22, 0x84, 0x29, 0x23, + 0xB7, 0x7D, 0xAF, 0xFA, 0xB7, 0x00, 0x10, 0xC9, 0xAB, 0xCF, 0xD6, 0xEA, + 0x24, 0xE3, 0x4A, 0x29, 0xDE, 0xD4, 0x93, 0x95, 0x44, 0xC5, 0xD7, 0xEC, + 0xA9, 0x2C, 0x31, 0x82, 0x12, 0x7E, 0x21, 0x47, 0x1C, 0x5A, 0xD5, 0xA1, + 0x19, 0x9A, 0x57, 0x42, 0x46, 0x70, 0x94, 0x6A, 0xC0, 0xC6, 0x66, 0xA9, + 0x88, 0xB6, 0x52, 0x5E, 0xB8, 0xB3, 0x09, 0x84, 0xF5, 0x0B, 0xF1, 0x2E, + 0x89, 0x0B, 0x01, 0xD0, 0x40, 0xFC, 0x97, 0xC4, 0xE4, 0xF0, 0x99, 0x1E, + 0x48, 0xA5, 0x20, 0x0B, 0x4F, 0xF4, 0xA7, 0x6E, 0xB5, 0x78, 0xB8, 0x80, + 0xFB, 0x5C, 0x51, 0x6B, 0xE3, 0x4E, 0x94, 0xF3, 0x94, 0xAC, 0xCC, 0xBB, + 0xA4, 0x39, 0x78, 0x67, 0xF9, 0x43, 0x73, 0x63, 0x6E, 0xC0, 0x51, 0xFB, + 0xEA, 0xEE, 0x85, 0x57, 0xD4, 0x16, 0xEB, 0xB0, 0x36, 0x1E, 0x2A, 0x80, + 0x8A, 0x63, 0x7B, 0x91, 0xB0, 0x6A, 0xA7, 0xC5, 0x59, 0x93, 0x04, 0x1E, + 0x44, 0x52, 0x02, 0xB2, 0xBB, 0xEF, 0x23, 0x07, 0x2F, 0x41, 0x93, 0x80, + 0x4A, 0x3E, 0x2B, 0x4A, 0x83, 0x79, 0x65, 0x1E, 0x02, 0x58, 0xD5, 0x3E, + 0x51, 0xFF, 0x5F, 0x8A, 0x3E, 0x09, 0x90, 0x02, 0xAF, 0x57, 0xCF, 0x0F, + 0x30, 0x78, 0x2F, 0x0D, 0x50, 0x51, 0xA9, 0x24, 0xD2, 0x10, 0xB5, 0xE2, + 0x3E, 0xD5, 0x53, 0xA2, 0xD9, 0xC6, 0x9C, 0xBC, 0xEB, 0x26, 0xAB, 0xEE, + 0x3B, 0x0E, 0x26, 0x03, 0x54, 0x73, 0x0E, 0x58, 0xDA, 0x92, 0x00, 0xA7, + 0x2A, 0xDC, 0xA7, 0xD2, 0x4B, 0x78, 0x20, 0x88, 0x5D, 0x11, 0x43, 0x15, + 0x67, 0xB5, 0xC2, 0x31, 0x78, 0xD7, 0xCB, 0x5A, 0x1A, 0x04, 0x38, 0xAF, + 0x1A, 0xDB, 0x24, 0x90, 0x5F, 0xF0, 0xB3, 0x11, 0xB9, 0x68, 0x9A, 0x8B, + 0x1B, 0x28, 0xCA, 0x51, 0x63, 0x8C, 0xD2, 0x70, 0xA9, 0x8B, 0x42, 0x69, + 0x86, 0x2E, 0x46, 0x5F, 0x85, 0xA7, 0x80, 0x4D, 0x70, 0x1E, 0xAE, 0x08, + 0xD2, 0xFC, 0xCF, 0x5E, 0xDB, 0x41, 0x9F, 0x21, 0xEF, 0xA6, 0x64, 0x38, + 0xE7, 0x73, 0xEF, 0xEA, 0xF9, 0x31, 0x61, 0x67, 0xEF, 0xD5, 0x21, 0x44, + 0xD9, 0x28, 0xB0, 0x6D, 0xD6, 0x11, 0xF9, 0x28, 0x02, 0x99, 0x84, 0x11, + 0x8A, 0xFB, 0x56, 0xF8, 0x37, 0x98, 0xDC, 0x90, 0x22, 0x13, 0xE3, 0x37, + 0xBF, 0x9A, 0xD4, 0x05, 0xBF, 0x69, 0x76, 0xE1, 0x70, 0x90, 0x81, 0x72, + 0xA5, 0x7A, 0x19, 0x6B, 0x68, 0x13, 0xF1, 0x05, 0xA4, 0xFB, 0xBA, 0x6F, + 0x13, 0xCB, 0x15, 0xA4, 0x5D, 0x09, 0x47, 0x4A, 0xD0, 0x50, 0x34, 0x00, + 0x45, 0xB8, 0xDF, 0x5E, 0x89, 0x02, 0x50, 0x42, 0x65, 0xDF, 0xB7, 0x46, + 0x59, 0x35, 0x81, 0xD9, 0x7D, 0xB6, 0x1E, 0x84, 0x41, 0x08, 0xBA, 0xFA, + 0x2B, 0xBB, 0x85, 0x92, 0x0A, 0x9C, 0x9F, 0x9E, 0x8F, 0xE2, 0x7A, 0xF7, + 0x6F, 0x5D, 0x8D, 0x0B, 0xA8, 0xE1, 0x02, 0x94, 0x54, 0x76, 0xFB, 0xD0, + 0x80, 0xEA, 0x66, 0x17, 0xE5, 0x76, 0x96, 0xF9, 0xC1, 0xB1, 0xA6, 0x7B, + 0x3C, 0x7C, 0xA8, 0x0B, 0x4E, 0x28, 0x8B, 0x46, 0xFE, 0x0B, 0xCC, 0x57, + 0x41, 0x54, 0x37, 0x49, 0x28, 0x19, 0xD8, 0x43, 0xBF, 0x59, 0x76, 0x59, + 0x37, 0x71, 0xD5, 0x19, 0x99, 0xD2, 0xA3, 0xD8, 0x0A, 0x09, 0x58, 0xF4, + 0xEE, 0xC6, 0xF4, 0x47, 0xD7, 0xB3, 0xB4, 0x42, 0x74, 0x71, 0x23, 0xF8, + 0xE0, 0x76, 0xA1, 0x91, 0x28, 0xE8, 0xE6, 0xFD, 0x38, 0x13, 0x02, 0xD0, + 0x07, 0x4C, 0x06, 0x1B, 0xB8, 0x18, 0xA5, 0xB3, 0x0F, 0xBF, 0x06, 0xBB, + 0x40, 0xD7, 0xE2, 0xE1, 0x54, 0xAC, 0x3F, 0x40, 0x5E, 0x68, 0x08, 0xA6, + 0xF2, 0x7B, 0xA7, 0x97, 0xFE, 0x05, 0x75, 0x41, 0x99, 0xBB, 0xCB, 0x2D, + 0xC9, 0xE9, 0x41, 0x69, 0xA5, 0x69, 0x51, 0xC0, 0x85, 0xD9, 0x3D, 0x82, + 0x09, 0xF8, 0x91, 0xCB, 0xE1, 0x89, 0xA6, 0xD1, 0x30, 0xBF, 0xF7, 0xFC, + 0x5E, 0x23, 0xBB, 0x66, 0x65, 0x17, 0x2B, 0x96, 0xF2, 0xA0, 0xF3, 0xA0, + 0xDA, 0xF2, 0x5B, 0x2A, 0xDA, 0x20, 0x25, 0x1C, 0x7B, 0x3E, 0x42, 0xEC, + 0xFC, 0xA0, 0x75, 0x1C, 0xDA, 0x96, 0x37, 0x40, 0xF9, 0xD7, 0x6C, 0xA5, + 0x2D, 0xE1, 0x9C, 0x69, 0x7D, 0xB3, 0x07, 0x8E, 0xC7, 0xE8, 0x8A, 0x24, + 0xDF, 0x77, 0x18, 0x4C, 0xCC, 0xAE, 0x1A, 0x5F, 0xF9, 0xC4, 0x21, 0x77, + 0xFA, 0x2B, 0xA7, 0x2C, 0xC3, 0xB4, 0x85, 0x3B, 0x2D, 0x34, 0xF7, 0x2D, + 0xFA, 0xE8, 0x42, 0xDA, 0x7D, 0x4B, 0x18, 0x40, 0xC6, 0xC6, 0x4B, 0xE4, + 0xCE, 0x64, 0x97, 0x46, 0xC1, 0xA0, 0x32, 0x1C, 0xA4, 0xBB, 0xA0, 0x6C, + 0x49, 0xE9, 0x80, 0x46, 0x08, 0xA8, 0x1B, 0x30, 0x5E, 0x79, 0x54, 0x74, + 0xE2, 0x0C, 0xC3, 0xD5, 0x5C, 0x27, 0xD0, 0x0C, 0x30, 0xDC, 0x24, 0x47, + 0x51, 0x78, 0xF5, 0x42, 0x37, 0xE2, 0x13, 0x4D, 0x6B, 0x1C, 0x3B, 0x92, + 0xF6, 0x70, 0xEE, 0x29, 0x04, 0xDF, 0x61, 0x68, 0x7E, 0xC9, 0xF2, 0xA8, + 0x9B, 0x0A, 0xD3, 0xC8, 0x2E, 0x34, 0x9B, 0x35, 0xE1, 0xD4, 0x7F, 0x15, + 0x1B, 0x77, 0xDE, 0xF6, 0x17, 0x44, 0xE8, 0xDA, 0xDF, 0x5D, 0xE1, 0xEE, + 0xA2, 0x4B, 0xBE, 0x7E, 0x69, 0xFA, 0x01, 0x27, 0x3F, 0x2C, 0xA6, 0x59, + 0x4C, 0x63, 0x68, 0x48, 0x66, 0xC9, 0x43, 0xAB, 0x2A, 0x44, 0x20, 0xC7, + 0x04, 0x29, 0x0A, 0xA5, 0x83, 0x8C, 0xD7, 0x84, 0xE0, 0x87, 0xBB, 0x16, + 0xBF, 0xC3, 0xBD, 0xC9, 0x84, 0x41, 0x15, 0x9A, 0xDC, 0x67, 0xD8, 0x08, + 0xB1, 0x89, 0xE1, 0xDC, 0x4C, 0x66, 0xFA, 0x64, 0x1E, 0x21, 0xC8, 0x89, + 0x1F, 0xC3, 0x74, 0x82, 0xB9, 0x88, 0x2B, 0x05, 0xA4, 0x95, 0xB2, 0x50, + 0xE6, 0xC2, 0x85, 0xC6, 0x4B, 0xE1, 0x7E, 0xB0, 0x63, 0x29, 0x9C, 0x2E, + 0x51, 0x52, 0xB8, 0xB9, 0xC6, 0x00, 0xE1, 0x7C, 0xA8, 0xFD, 0x41, 0x6D, + 0xF0, 0x6E, 0x20, 0x53, 0xB6, 0x2E, 0x2A, 0x42, 0xD7, 0xDF, 0x0F, 0xA5, + 0x4E, 0x77, 0xC9, 0xEF, 0xBA, 0x71, 0xA7, 0x51, 0x39, 0xB1, 0xDB, 0xF6, + 0x81, 0x67, 0x0E, 0x87, 0x87, 0xE6, 0x47, 0x89, 0xC7, 0xF3, 0xDD, 0xB4, + 0x6C, 0xA5, 0x53, 0x83, 0xBF, 0xD7, 0xEC, 0xBE, 0xED, 0x8A, 0xAD, 0xE2, + 0x31, 0x43, 0x9E, 0x2C, 0xBE, 0xAD, 0x0F, 0x60, 0xA9, 0xEA, 0xB2, 0x95, + 0x0B, 0xBE, 0x13, 0x3C, 0x98, 0x9C, 0xED, 0x0A, 0x04, 0x36, 0xBD, 0x7A, + 0x9F, 0x21, 0x41, 0x17, 0xA4, 0x89, 0x01, 0x62, 0xD5, 0x3C, 0xCF, 0xF9, + 0xD7, 0x68, 0x4B, 0x3A, 0xF4, 0x89, 0x10, 0x08, 0x10, 0x0C, 0xC5, 0x7C, + 0xAD, 0x97, 0x24, 0x7C, 0xF5, 0x52, 0xB6, 0x65, 0xEE, 0x3F, 0x76, 0x81, + 0x41, 0xDF, 0x19, 0x8C, 0x75, 0x1D, 0x8E, 0x09, 0xCA, 0x60, 0xBD, 0x29, + 0x91, 0x68, 0x2C, 0x4C, 0x23, 0x90, 0x75, 0x27, 0x7F, 0xA5, 0x40, 0xB8, + 0xAC, 0xE8, 0xFC, 0xDB, 0xCB, 0xDD, 0x2A, 0xFA, 0x8A, 0x76, 0x3D, 0x9D, + 0xF7, 0x74, 0x16, 0x7C, 0x31, 0x6A, 0x88, 0x93, 0x95, 0xD6, 0x5F, 0xE8, + 0xBE, 0x1B, 0x0C, 0x4D, 0x65, 0xC1, 0xF6, 0x0D, 0x8E, 0xC9, 0x71, 0x13, + 0x61, 0x26, 0xBD, 0xB5, 0xFD, 0x16, 0xDF, 0xE1, 0x2E, 0x36, 0x8C, 0xA8, + 0x51, 0xB7, 0x9B, 0xB1, 0x69, 0x35, 0xD1, 0xF6, 0x09, 0x3D, 0x09, 0xB7, + 0xDD, 0xAC, 0x39, 0xBD, 0x3F, 0x1D, 0xA6, 0xB8, 0xA2, 0xE8, 0x70, 0x17, + 0x9F, 0x49, 0xF9, 0x29, 0x48, 0xDF, 0xA3, 0xBF, 0x95, 0x8C, 0xD2, 0x8E, + 0x32, 0xD1, 0xDD, 0x98, 0x49, 0xC8, 0xBC, 0xA2, 0xAD, 0x99, 0x5A, 0xB4, + 0x33, 0x51, 0x3D, 0xB8, 0x6E, 0xA3, 0x72, 0xDD, 0xEF, 0x45, 0x51, 0xEC, + 0x06, 0x8D, 0xFE, 0x15, 0xA9, 0x76, 0x69, 0xA1, 0xAF, 0x75, 0x1B, 0xE7, + 0x8E, 0xDE, 0x4B, 0xF7, 0x49, 0xDC, 0x66, 0xAA, 0xBE, 0xDA, 0x01, 0x18, + 0xA7, 0x2A, 0x11, 0xA3, 0x16, 0xF7, 0x29, 0x2C, 0x97, 0xCC, 0x2B, 0x54, + 0xBC, 0xEF, 0x9F, 0x94, 0xC8, 0xA4, 0xB8, 0x87, 0x01, 0x3F, 0x0C, 0x69, + 0xD5, 0xE9, 0xB9, 0x71, 0x30, 0x9B, 0xAC, 0x1B, 0x1F, 0xB2, 0xC0, 0x67, + 0x52, 0x78, 0x91, 0xBA, 0x3F, 0x2F, 0xC3, 0x5C, 0x80, 0x39, 0x70, 0x1C, + 0x7E, 0x07, 0x71, 0x70, 0x9D, 0x95, 0x6D, 0xE2, 0x0A, 0x5D, 0x1E, 0x19, + 0x06, 0x9A, 0x85, 0xE1, 0x2E, 0xD5, 0xFA, 0x02, 0x2E, 0x32, 0x53, 0xAD, + 0x05, 0x2F, 0xEC, 0x08, 0x7E, 0xDD, 0x71, 0x9D, 0x34, 0xFC, 0x9D, 0x0D, + 0x44, 0x4E, 0x3E, 0x20, 0x00, 0xA8, 0x76, 0x02, 0xF8, 0xBF, 0x6B, 0x9F, + 0x4A, 0x60, 0x99, 0xA1, 0x74, 0x4B, 0xB9, 0x91, 0x16, 0x4D, 0x41, 0xC5, + 0xA1, 0x33, 0xD3, 0x90, 0x8A, 0x2F, 0x83, 0x92, 0x8B, 0x53, 0x1D, 0x29, + 0x8F, 0x97, 0xD8, 0xA0, 0x48, 0x63, 0xB4, 0x43, 0x20, 0x82, 0xC7, 0xC2, + 0x0A, 0x7F, 0xFB, 0x07, 0x74, 0x31, 0x54, 0x2A, 0xCB, 0xCA, 0x7E, 0xD6, + 0x91, 0x6B, 0x82, 0x73, 0x51, 0x66, 0x7B, 0xDF, 0x63, 0x53, 0x08, 0xFC, + 0x17, 0x20, 0xA9, 0x87, 0x1D, 0x24, 0xD0, 0x44, 0x45, 0xBC, 0x80, 0x80, + 0x4B, 0x52, 0x90, 0x4E, 0xA5, 0xDF, 0xD1, 0x3F, 0xA9, 0xCC, 0xD7, 0xD9, + 0xAD, 0x1F, 0x65, 0x63, 0xA6, 0x57, 0x85, 0x39, 0x98, 0x33, 0xE8, 0xBC, + 0xF5, 0xE2, 0xD2, 0x4B, 0xF7, 0xEA, 0x61, 0xE3, 0xFA, 0xF3, 0x73, 0x6C, + 0xA2, 0x0A, 0x26, 0xCB, 0x09, 0x2E, 0xC4, 0x03, 0x38, 0x97, 0x7A, 0x3A, + 0xC7, 0xB0, 0x0C, 0x35, 0x6D, 0x73, 0x14, 0x70, 0x01, 0xF6, 0x8F, 0x67, + 0xBA, 0xD9, 0x4E, 0xAF, 0xEA, 0x96, 0x3D, 0xC6, 0x7E, 0xE7, 0x2B, 0x29, + 0x27, 0xAB, 0xFA, 0xA8, 0x08, 0xB1, 0x01, 0x20, 0xF3, 0xD1, 0x45, 0x35, + 0x33, 0x56, 0x26, 0x81, 0x00, 0xB2, 0x41, 0x01, 0x1A, 0x71, 0x28, 0x35, + 0xF4, 0x43, 0x2F, 0x48, 0x59, 0x69, 0x22, 0x5A, 0x89, 0x8D, 0xC7, 0x38, + 0x5F, 0x12, 0x40, 0x65, 0x7B, 0x89, 0x06, 0x76, 0x74, 0x08, 0xE5, 0xFC, + 0x83, 0x61, 0x2B, 0xAF, 0xB4, 0xE0, 0xE4, 0x51, 0x4D, 0xF7, 0x31, 0x09, + 0x0A, 0xC0, 0xB9, 0x47, 0x23, 0xCB, 0xF7, 0x90, 0x86, 0x65, 0x27, 0xF3, + 0x65, 0xBF, 0x52, 0xAF, 0x4A, 0x3E, 0xBF, 0x0C, 0x9E, 0xC9, 0x6D, 0x4D, + 0xD6, 0x64, 0x77, 0x59, 0x2B, 0x88, 0x6B, 0xD7, 0x7E, 0xBF, 0x8F, 0x53, + 0x48, 0xD8, 0x9E, 0x6E, 0x7E, 0x16, 0x60, 0x4C, 0xE9, 0x33, 0x83, 0x01, + 0x74, 0xCD, 0x1F, 0x8B, 0x4F, 0x3A, 0xEA, 0xCC, 0x45, 0xEE, 0x8F, 0xEA, + 0x0C, 0x40, 0x76, 0xA7, 0xDF, 0x69, 0xFE, 0xD4, 0xD3, 0x23, 0x93, 0x07, + 0x77, 0x8D, 0xCD, 0x20, 0xE9, 0x71, 0xB7, 0xFA, 0xFB, 0x27, 0x6D, 0x0A, + 0xBC, 0x1E, 0xFE, 0x49, 0x2B, 0x15, 0x68, 0x9B, 0x58, 0x3A, 0xA7, 0xC5, + 0xB8, 0x17, 0xA3, 0xAA, 0xCF, 0xF7, 0x91, 0x2E, 0xF2, 0xFC, 0xA4, 0xDC, + 0x50, 0xB3, 0x19, 0x5C, 0x85, 0xA2, 0x89, 0x8C, 0xBB, 0x9A, 0x12, 0x45, + 0xC9, 0x06, 0x36, 0xA3, 0x10, 0x3F, 0x4A, 0x0E, 0x08, 0x7F, 0xF9, 0x45, + 0x09, 0xBC, 0xD5, 0xAC, 0x56, 0x6F, 0xB4, 0xC1, 0x15, 0x4E, 0xD4, 0x55, + 0xD1, 0xF4, 0x97, 0x19, 0x7E, 0x88, 0x4E, 0xA7, 0x95, 0x5B, 0x89, 0xF9, + 0x4A, 0x7A, 0xDD, 0x69, 0xB9, 0xEF, 0xB6, 0x1D, 0x68, 0x98, 0xAB, 0xBE, + 0xF9, 0x10, 0x12, 0x79, 0xC0, 0x2E, 0x08, 0x8B, 0xD4, 0xFE, 0xFB, 0x33, + 0xF5, 0x17, 0x6F, 0x71, 0x71, 0xD9, 0x95, 0x08, 0xBC, 0x05, 0x71, 0x6A, + 0x54, 0x99, 0x80, 0x94, 0x8A, 0x92, 0x2B, 0x1A, 0x52, 0x60, 0x53, 0xAC, + 0xB0, 0x58, 0xE1, 0x97, 0xC6, 0xAB, 0x1A, 0x81, 0x89, 0xBE, 0x60, 0xB1, + 0x16, 0x79, 0xED, 0x3D, 0xE5, 0x31, 0xA2, 0x35, 0x74, 0x26, 0xAE, 0xFF, + 0xEB, 0x7D, 0x62, 0xD0, 0x08, 0x00, 0x44, 0x9C, 0xBA, 0x22, 0x1F, 0x4D, + 0x12, 0x1C, 0xF6, 0xEF, 0x43, 0x31, 0xBA, 0x80, 0xB7, 0x21, 0x2C, 0xAA, + 0x0C, 0x47, 0xAA, 0x50, 0xC9, 0xE5, 0x9B, 0x6F, 0xAF, 0x69, 0x92, 0xD6, + 0x72, 0x73, 0xAE, 0x2D, 0x7B, 0x60, 0x91, 0x0B, 0xC5, 0x48, 0x4D, 0xE4, + 0x1B, 0x92, 0xC5, 0x60, 0x81, 0xF5, 0x96, 0xD5, 0x19, 0x72, 0x39, 0xF6, + 0xC7, 0x47, 0x81, 0x3C, 0x2E, 0x5D, 0xDA, 0xBE, 0xAE, 0xF0, 0x04, 0x40, + 0x2C, 0x0F, 0x98, 0x91, 0x2A, 0xB3, 0x2B, 0x90, 0xCD, 0x31, 0x92, 0x75, + 0x9A, 0x93, 0x51, 0x83, 0x74, 0xCD, 0xFE, 0x53, 0x00, 0x99, 0xAE, 0x49, + 0x47, 0x4B, 0x4F, 0x04, 0x70, 0xEE, 0x58, 0x4D, 0x84, 0x97, 0x7C, 0x75, + 0x46, 0xBC, 0x64, 0xC7, 0x85, 0xA9, 0x0A, 0x7D, 0x5C, 0x6C, 0x9A, 0x21, + 0x0B, 0x2A, 0x16, 0xF6, 0x96, 0xE6, 0x35, 0x6B, 0x59, 0xB1, 0xBB, 0xF7, + 0xC2, 0x24, 0x33, 0x52, 0x79, 0x55, 0x33, 0x8D, 0xE6, 0xD0, 0xD8, 0xA7, + 0xE5, 0x18, 0x5F, 0xF3, 0xE1, 0xE4, 0x23, 0xFF, 0xBF, 0x16, 0xDC, 0xFE, + 0x5F, 0x32, 0x99, 0x2B, 0x22, 0x1A, 0x77, 0x2A, 0xAD, 0x04, 0x07, 0x3C, + 0x15, 0xBF, 0x99, 0x53, 0x9C, 0x29, 0x2B, 0x67, 0xAF, 0xDD, 0x51, 0x89, + 0x03, 0x85, 0xFF, 0x64, 0x2E, 0x1D, 0x0B, 0x03, 0x32, 0xB9, 0x51, 0xB8, + 0xE4, 0x9F, 0x54, 0x49, 0xC4, 0x32, 0x0F, 0x99, 0x34, 0xB3, 0x51, 0xE9, + 0x2D, 0x75, 0xF3, 0xF8, 0x04, 0x86, 0x6B, 0x84, 0xB0, 0x97, 0x95, 0xF4, + 0x38, 0x4C, 0x8C, 0x88, 0x49, 0x48, 0x9E, 0x59, 0x0E, 0x8B, 0xB1, 0xE1, + 0x41, 0x66, 0x10, 0x94, 0x59, 0xF9, 0x6E, 0x78, 0xCC, 0x11, 0x80, 0x92, + 0x33, 0x7E, 0x6A, 0xB8, 0xC9, 0x33, 0xE8, 0xDD, 0x1B, 0x3F, 0x74, 0x79, + 0x42, 0x5C, 0x93, 0x00, 0x4B, 0x68, 0xDA, 0x70, 0x8A, 0xB5, 0x24, 0xFD, + 0x6B, 0x14, 0xF8, 0x1A, 0x26, 0x6A, 0x21, 0x36, 0x7C, 0xF6, 0x49, 0x44, + 0xB4, 0xA6, 0x59, 0xF3, 0x00, 0x76, 0xC5, 0x8A, 0x30, 0xF4, 0x9C, 0x13, + 0xC9, 0xB2, 0xCE, 0xF1, 0x3F, 0xAB, 0x75, 0xD6, 0x4F, 0x36, 0xEA, 0x86, + 0x12, 0x7A, 0x9A, 0x54, 0x68, 0xEA, 0x13, 0xF4, 0x39, 0xC1, 0xC5, 0x70, + 0x22, 0x79, 0x21, 0x0D, 0x7B, 0x47, 0x02, 0x97, 0x14, 0xFF, 0xD2, 0xBE, + 0x99, 0x84, 0x0F, 0x3E, 0xDF, 0xA5, 0x64, 0x98, 0xDF, 0xF8, 0xAA, 0xA2, + 0xD2, 0xED, 0xE8, 0x6E, 0x41, 0xF4, 0x04, 0x3C, 0xE8, 0x39, 0x80, 0x07, + 0xBA, 0x7A, 0xCF, 0x69, 0x32, 0xDB, 0x7B, 0x72, 0x56, 0xE4, 0x1A, 0xA9, + 0x87, 0xB2, 0x32, 0x3F, 0xD9, 0xF4, 0x3F, 0x4B, 0x04, 0xF2, 0xE1, 0x55, + 0xD0, 0xED, 0x5D, 0xD9, 0x57, 0x7A, 0x04, 0x08, 0x05, 0x68, 0x15, 0x7B, + 0x41, 0x61, 0x73, 0x52, 0x7C, 0xC9, 0x23, 0x30, 0x7A, 0x2F, 0xA4, 0xDF, + 0x53, 0xEB, 0x99, 0xAF, 0x28, 0x89, 0x47, 0x10, 0xC5, 0xFD, 0xE0, 0x72, + 0xA3, 0x5D, 0xE1, 0x02, 0x22, 0x49, 0x25, 0xDF, 0x00, 0x71, 0x26, 0xE7, + 0xC5, 0x16, 0x6C, 0x5F, 0x24, 0x7F, 0xBF, 0x12, 0x2E, 0x71, 0xF1, 0x54, + 0x15, 0xE3, 0x76, 0xDA, 0x27, 0x41, 0x8E, 0xF8, 0xA0, 0xC0, 0xF9, 0x5F, + 0x6D, 0x4F, 0xC5, 0x4B, 0x58, 0xB5, 0xAB, 0xC4, 0x40, 0xA4, 0x89, 0x32, + 0x08, 0x63, 0x5F, 0x68, 0x93, 0x56, 0x1C, 0x1F, 0x6F, 0xDE, 0xF1, 0x63, + 0x28, 0x2E, 0x88, 0x52, 0x10, 0x3C, 0xFC, 0xEF, 0x03, 0x87, 0x91, 0xA5, + 0x22, 0x06, 0x58, 0x88, 0x4F, 0x2C, 0x0B, 0x11, 0xFC, 0x21, 0x23, 0xB8, + 0x6A, 0xBD, 0x21, 0x5B, 0x0C, 0x59, 0x2D, 0x6C, 0x83, 0x6F, 0x7C, 0xF8, + 0x4D, 0x7F, 0x62, 0xBC, 0xD1, 0x7D, 0x39, 0x6E, 0x78, 0xCB, 0x88, 0xF2, + 0x98, 0xDC, 0xBE, 0xCE, 0x38, 0x45, 0xF5, 0xE9, 0x3F, 0x58, 0x54, 0x62, + 0xB4, 0x15, 0xE6, 0xF7, 0xE3, 0xCA, 0x91, 0x05, 0x35, 0x8C, 0x6A, 0xE6, + 0x08, 0xFC, 0x05, 0x6D, 0x64, 0x31, 0x4B, 0xA4, 0x61, 0x21, 0x99, 0x4D, + 0x51, 0xF5, 0x98, 0x07, 0x65, 0x3F, 0xD0, 0x6A, 0x8F, 0xDB, 0x8B, 0xB2, + 0x0E, 0x43, 0x75, 0x49, 0x5D, 0x57, 0xAF, 0x98, 0x51, 0xA8, 0x28, 0x62, + 0x8B, 0xBA, 0x47, 0x60, 0x90, 0xCC, 0xC8, 0xC2, 0x8D, 0xA7, 0xC0, 0xD5, + 0x80, 0x6D, 0x54, 0x7F, 0xCD, 0xC6, 0xE6, 0x08, 0x23, 0x84, 0x69, 0x79, + 0x29, 0x8F, 0x47, 0xB7, 0x85, 0x78, 0x8F, 0x29, 0xE1, 0x53, 0x50, 0xE4, + 0x1B, 0x77, 0x66, 0x10, 0x63, 0xBF, 0xA4, 0xC2, 0xDF, 0xB3, 0x2C, 0x87, + 0x21, 0x34, 0xE4, 0xE6, 0xE4, 0x6F, 0x2F, 0x5D, 0x5E, 0x45, 0xCF, 0x31, + 0x7C, 0x4A, 0x5E, 0x99, 0xB9, 0x81, 0xAF, 0x9C, 0xCD, 0x24, 0x6B, 0x33, + 0xE6, 0x8D, 0xB8, 0xB8, 0xA0, 0xDE, 0x15, 0x41, 0xFA, 0xBA, 0x21, 0xFC, + 0x5D, 0xD0, 0x85, 0x3E, 0xD2, 0x06, 0x43, 0x3E, 0x93, 0xD6, 0x83, 0x58, + 0x74, 0x57, 0xE0, 0xBD, 0x11, 0x4E, 0xF4, 0x17, 0xEA, 0x1C, 0x8B, 0x22, + 0xB7, 0x6E, 0x89, 0x92, 0xC8, 0x48, 0xF9, 0x88, 0xEA, 0x46, 0x83, 0x54, + 0x76, 0x94, 0xFD, 0x58, 0xD3, 0xA7, 0xD3, 0x24, 0xAF, 0xC9, 0x05, 0x64, + 0x76, 0xC9, 0xC5, 0xA6, 0x41, 0x2E, 0xD7, 0xAA, 0x37, 0x72, 0x7A, 0x7C, + 0x1B, 0x69, 0xBD, 0xA4, 0xD2, 0x43, 0x9D, 0xC6, 0xE4, 0x20, 0x8F, 0x08, + 0x31, 0xE7, 0x6E, 0xD4, 0xFB, 0x2D, 0x85, 0x3D, 0x5A, 0x21, 0xEC, 0x03, + 0xB5, 0x66, 0xFE, 0xF0, 0x24, 0x2A, 0xBF, 0x32, 0x6D, 0x5C, 0x4D, 0x9C, + 0x4B, 0x22, 0x49, 0xEC, 0x72, 0x9B, 0x9A, 0x36, 0x03, 0x91, 0x8C, 0x7C, + 0xB9, 0xE9, 0x8D, 0x72, 0xE0, 0xB0, 0x52, 0x63, 0x2E, 0xDB, 0x9C, 0x0D, + 0x55, 0x33, 0xA5, 0x17, 0x7A, 0x2D, 0xAF, 0x75, 0x69, 0x50, 0x7D, 0xDC, + 0xEE, 0x26, 0xC6, 0xE3, 0x26, 0xF9, 0x59, 0xF9, 0x10, 0x42, 0x1E, 0xC7, + 0x3E, 0x11, 0xCB, 0xFA, 0x4E, 0xE6, 0xAB, 0x6E, 0xA9, 0x1C, 0xD1, 0x76, + 0x20, 0xB6, 0xD6, 0xBD, 0xD3, 0xCA, 0x9C, 0x82, 0x33, 0xB8, 0x5E, 0xED, + 0xCA, 0x2C, 0x50, 0xC3, 0x58, 0x13, 0x7A, 0xA7, 0xF0, 0x92, 0x89, 0x04, + 0xF8, 0x27, 0x98, 0xE2, 0x1C, 0xF2, 0xDA, 0xF6, 0x4D, 0xC0, 0x6A, 0x1C, + 0xC5, 0xA5, 0x79, 0x6B, 0x84, 0x37, 0x05, 0x90, 0x6A, 0x0E, 0x2B, 0xAF, + 0x96, 0x9E, 0x45, 0xDB, 0x79, 0xDA, 0x2F, 0x46, 0x5F, 0xE2, 0xE8, 0xA6, + 0xC6, 0x00, 0xF2, 0x8F, 0xC2, 0xA0, 0xF9, 0x32, 0x53, 0x63, 0xF9, 0xED, + 0x9C, 0x0F, 0x29, 0x8F, 0x5D, 0x6C, 0x56, 0xE9, 0xBF, 0x52, 0xB1, 0xB5, + 0xD3, 0x8A, 0xE4, 0xE6, 0x1D, 0xB2, 0xC9, 0x0E, 0x8F, 0x28, 0xB0, 0xBF, + 0x68, 0x91, 0x87, 0x8E, 0x30, 0x6A, 0xF6, 0x5E, 0x44, 0x81, 0x3E, 0xAA, + 0xC2, 0x93, 0x9D, 0x41, 0xAE, 0x54, 0xF1, 0x96, 0x40, 0x30, 0x5F, 0xAD, + 0x44, 0xCF, 0xB4, 0x34, 0x86, 0xE2, 0xF4, 0x97, 0x14, 0x21, 0x1D, 0xA5, + 0x58, 0xAF, 0x7B, 0x32, 0x5D, 0x63, 0x9A, 0x9D, 0x2A, 0x7C, 0xDA, 0xAD, + 0xD5, 0xB2, 0xA8, 0x0D, 0x8F, 0xDA, 0x44, 0xCE, 0xB6, 0xA0, 0xC3, 0x3C, + 0x73, 0xC5, 0x8C, 0x9B, 0x62, 0x0C, 0xF2, 0x79, 0x3C, 0x78, 0xF8, 0xC3, + 0xC4, 0x4B, 0xAE, 0x29, 0x5A, 0x30, 0xC9, 0xB9, 0x6A, 0xE4, 0x52, 0x09, + 0xE1, 0x09, 0x60, 0x8B, 0x56, 0x90, 0x84, 0xE2, 0x5A, 0x07, 0x88, 0x25, + 0x03, 0xB7, 0x5B, 0x86, 0x1E, 0x68, 0x2C, 0x25, 0x5D, 0xFE, 0xB9, 0x5A, + 0xF0, 0xDC, 0x81, 0x1F, 0xEE, 0xF7, 0x11, 0x94, 0x67, 0x85, 0x13, 0xEC, + 0x65, 0xEC, 0x83, 0x53, 0x81, 0x57, 0xEB, 0x95, 0xF5, 0xCE, 0xFF, 0x26, + 0xDE, 0x85, 0xDD, 0x7D, 0xA3, 0xFB, 0xA2, 0xB9, 0xD9, 0x33, 0x82, 0x0D, + 0x43, 0xC9, 0x1B, 0x72, 0x14, 0x39, 0x24, 0x57, 0x2A, 0x8E, 0x36, 0xA6, + 0x86, 0xCC, 0xE8, 0x1F, 0x6B, 0xAD, 0x7B, 0x0E, 0x89, 0xF9, 0x1C, 0xBB, + 0x6E, 0x43, 0x99, 0xD5, 0xAA, 0x59, 0xDF, 0x63, 0x12, 0x29, 0x56, 0xCD, + 0x55, 0x56, 0xFC, 0x3E, 0xC2, 0x38, 0xD4, 0x65, 0x59, 0xE8, 0x6E, 0x31, + 0xFE, 0xA8, 0x18, 0xAA, 0xB4, 0x4C, 0x72, 0x3C, 0xB2, 0xBD, 0xA7, 0x54, + 0x8B, 0x53, 0xF8, 0xF7, 0xB8, 0x80, 0xCE, 0x06, 0x89, 0x5E, 0x9D, 0x19, + 0x29, 0xDE, 0x73, 0x01, 0xCF, 0x0C, 0xD2, 0xF8, 0xE3, 0x2B, 0x3D, 0x7C, + 0x84, 0xFF, 0x4D, 0xE3, 0x2E, 0x33, 0x6F, 0x47, 0x1E, 0x97, 0xB3, 0x55, + 0x0B, 0x5C, 0xE3, 0xAB, 0x9C, 0xCB, 0x40, 0x82, 0xD6, 0xA3, 0x47, 0x8B, + 0xFF, 0xB1, 0x26, 0x44, 0xE3, 0x7E, 0x39, 0xDB, 0xDD, 0x1B, 0x35, 0xE6, + 0x6E, 0xF2, 0x48, 0x57, 0x09, 0x02, 0xB6, 0xA4, 0xD4, 0xB9, 0x7E, 0x20, + 0x93, 0x8F, 0x59, 0xE7, 0x2D, 0x0D, 0xB8, 0x82, 0x9A, 0xA4, 0xC7, 0xB2, + 0x2A, 0x31, 0x88, 0x52, 0x98, 0xDF, 0x4C, 0xF6, 0xD4, 0xB4, 0xD2, 0x71, + 0x41, 0xAA, 0x37, 0x52, 0x34, 0x70, 0x51, 0x9B, 0x33, 0x2D, 0xA3, 0x71, + 0x3E, 0xB4, 0xC2, 0x5B, 0xEC, 0xC4, 0xD4, 0x51, 0xF5, 0x8A, 0xD8, 0xB2, + 0x87, 0xAE, 0x41, 0xC2, 0xBA, 0x0B, 0x43, 0xEA, 0x83, 0xD8, 0x32, 0x97, + 0x5C, 0xCA, 0xF6, 0xBD, 0x65, 0x89, 0xF7, 0x92, 0x8E, 0xF9, 0x97, 0x7F, + 0xF7, 0x17, 0x28, 0x47, 0x45, 0xB3, 0xEB, 0x71, 0x86, 0x16, 0x40, 0x86, + 0x28, 0x43, 0x33, 0x92, 0x11, 0x06, 0xED, 0x26, 0x5D, 0x8F, 0x35, 0xAB, + 0xA7, 0xF6, 0x6C, 0xCE, 0x29, 0x62, 0xD6, 0xBE, 0x16, 0xA3, 0x6B, 0x34, + 0xAE, 0x40, 0xED, 0x25, 0x2A, 0xA7, 0x84, 0x1A, 0x7F, 0xB0, 0xBE, 0x2E, + 0x09, 0x8A, 0x06, 0x90, 0x11, 0x2D, 0x54, 0x88, 0x2C, 0x23, 0x78, 0x4A, + 0x79, 0x13, 0x39, 0xEA, 0xC5, 0x4F, 0x05, 0x30, 0x46, 0xBB, 0x38, 0xF1, + 0x47, 0x36, 0xBF, 0xAF, 0xD1, 0x7E, 0x3A, 0x7B, 0x31, 0x54, 0x22, 0x2F, + 0x3D, 0xA6, 0xAB, 0x10, 0x1A, 0x3B, 0x76, 0x9A, 0xED, 0xCC, 0xD2, 0xD3, + 0x29, 0xA5, 0x90, 0xEB, 0x57, 0x15, 0x1D, 0xC8, 0xB6, 0xCD, 0xD0, 0x11, + 0x44, 0x2C, 0x7B, 0xCF, 0x42, 0xA0, 0x76, 0xE2, 0x14, 0x43, 0xC0, 0xBD, + 0x53, 0x22, 0x37, 0x4E, 0x83, 0xD2, 0x91, 0x47, 0xDD, 0xCB, 0x8E, 0x5A, + 0xB0, 0xA6, 0xB0, 0x13, 0x84, 0x81, 0x6A, 0x59, 0xC4, 0xC9, 0x58, 0x1A, + 0x3B, 0x41, 0x09, 0x2B, 0xC1, 0xCB, 0x39, 0x98, 0xE8, 0xDD, 0x1B, 0x45, + 0x5F, 0xB6, 0x86, 0x6B, 0x41, 0x7C, 0x32, 0xDC, 0x0E, 0x03, 0xE7, 0xF3, + 0xB9, 0x65, 0x8E, 0x3A, 0x69, 0x67, 0x8E, 0xE2, 0x6D, 0x6F, 0xB7, 0xA7, + 0x2A, 0x93, 0x9D, 0xEA, 0xA7, 0x2E, 0x82, 0x88, 0x67, 0xC6, 0x91, 0x36, + 0xDC, 0x93, 0x47, 0x9A, 0xCD, 0xF9, 0xF6, 0xFA, 0x2A, 0x3A, 0x85, 0xD1, + 0x66, 0x48, 0xFC, 0x1A, 0x9E, 0x64, 0x6C, 0x20, 0xD4, 0x19, 0x07, 0xDA, + 0xE3, 0xC3, 0x54, 0xD2, 0x45, 0xB5, 0x47, 0x10, 0x2A, 0xB4, 0x00, 0xDF, + 0x06, 0xF6, 0xE4, 0xBF, 0x47, 0x6C, 0x61, 0xDD, 0xD7, 0x3C, 0xE2, 0x27, + 0x3A, 0x4E, 0xEE, 0xCA, 0x07, 0x03, 0x7E, 0xFC, 0x41, 0x94, 0x3B, 0xA8, + 0xD5, 0x28, 0x65, 0xBE, 0x55, 0x28, 0x69, 0x10, 0xF3, 0x91, 0xCE, 0xF8, + 0x84, 0x65, 0x45, 0xDC, 0xB0, 0x54, 0x79, 0x1A, 0x17, 0x60, 0x61, 0xBD, + 0xB6, 0x2C, 0x93, 0x21, 0x8E, 0x19, 0x35, 0x27, 0x9B, 0x5E, 0xFE, 0x8D, + 0xB4, 0x1A, 0xD6, 0xD1, 0xB2, 0xCE, 0xC6, 0x20, 0x6B, 0x92, 0xEC, 0x78, + 0xF8, 0x7D, 0x93, 0x22, 0xF0, 0xD5, 0xD4, 0x5B, 0x41, 0xF3, 0xC2, 0x32, + 0xB7, 0x58, 0x5E, 0x40, 0x9E, 0x0F, 0x93, 0x2A, 0xBC, 0xBC, 0xD5, 0x33, + 0x27, 0x13, 0x0E, 0x4B, 0x9B, 0x8F, 0x3D, 0x77, 0x02, 0x24, 0xA4, 0x72, + 0xAE, 0x77, 0xE4, 0x1A, 0xE8, 0xA3, 0x88, 0x7C, 0xDC, 0x15, 0x23, 0x62, + 0xD1, 0x53, 0xF8, 0x2F, 0x42, 0xAB, 0xC1, 0xF9, 0x43, 0x4F, 0x5E, 0xAD, + 0x44, 0xD3, 0x8B, 0x36, 0x39, 0x5C, 0xAB, 0x52, 0x3D, 0xEB, 0x86, 0x00, + 0x49, 0x18, 0x3C, 0x3C, 0x5A, 0x2B, 0xD0, 0xD4, 0xEF, 0xD9, 0xEA, 0xC5, + 0x51, 0x53, 0xBD, 0xBD, 0xBE, 0x42, 0x37, 0x37, 0x74, 0x89, 0xBB, 0x1D, + 0x6E, 0x2D, 0x42, 0xD3, 0x73, 0x28, 0x47, 0x2F, 0xFD, 0x2C, 0xC0, 0xE0, + 0xBE, 0xFD, 0x7D, 0x4E, 0x8A, 0xD8, 0xC6, 0xE0, 0xFE, 0xF5, 0xE0, 0x33, + 0x2D, 0xB2, 0x38, 0xAC, 0x83, 0xDF, 0x6D, 0x7F, 0x29, 0xAA, 0x0C, 0x12, + 0x74, 0xC0, 0x5B, 0xB6, 0x7E, 0x7F, 0x07, 0x83, 0xC9, 0x70, 0x2E, 0x89, + 0x86, 0x13, 0xE6, 0xBA, 0x83, 0xE6, 0x41, 0xA2, 0xC2, 0xFF, 0xE4, 0x33, + 0x77, 0xD8, 0x42, 0x80, 0x46, 0xDB, 0x0C, 0x02, 0xF1, 0x4D, 0xAD, 0x82, + 0x0E, 0x6F, 0xE2, 0x76, 0x3F, 0x5E, 0x16, 0x23, 0xF8, 0xC9, 0x8D, 0x55, + 0x91, 0xBA, 0x52, 0xEF, 0x8A, 0x49, 0x0E, 0x33, 0x7A, 0xF6, 0xB5, 0x62, + 0xD3, 0x79, 0xC4, 0x99, 0x49, 0xE9, 0x81, 0xC1, 0xF9, 0x3F, 0x75, 0x9E, + 0x24, 0x14, 0x9A, 0x9D, 0x70, 0x62, 0x04, 0x6A, 0xB4, 0x3C, 0xA9, 0xDB, + 0x46, 0x5C, 0x3C, 0xDE, 0xA3, 0xF4, 0xCE, 0x9D, 0x4C, 0x84, 0x69, 0xDA, + 0x0E, 0x29, 0x86, 0x8F, 0xF0, 0xD1, 0x3A, 0x33, 0xE4, 0xEE, 0xFC, 0x8D, + 0xA9, 0x51, 0x3C, 0x60, 0x27, 0x61, 0x3F, 0x90, 0xE4, 0xC9, 0x71, 0xE1, + 0xEB, 0xF9, 0x04, 0xEB, 0xA3, 0xB8, 0xAD, 0x04, 0x82, 0x2B, 0x40, 0x13, + 0x46, 0xC0, 0x47, 0x72, 0xC7, 0x37, 0xD5, 0xCF, 0x0E, 0x93, 0x58, 0x2C, + 0xED, 0x03, 0x68, 0xE2, 0x78, 0xFD, 0x70, 0xE8, 0x53, 0x27, 0x06, 0x70, + 0x7A, 0x7F, 0x85, 0xEF, 0x2B, 0x98, 0x7F, 0xFD, 0x34, 0x2B, 0xAC, 0xA0, + 0x46, 0x35, 0x56, 0x75, 0x96, 0x0B, 0xF9, 0xEC, 0xE4, 0x9B, 0xBD, 0x1E, + 0xE0, 0x94, 0x67, 0x86, 0xD3, 0xBB, 0xE4, 0x53, 0x82, 0x28, 0x29, 0xC2, + 0x1B, 0x3F, 0x79, 0x86, 0x44, 0x6A, 0x50, 0x1E, 0xCE, 0x1B, 0xCC, 0x8C, + 0x13, 0x49, 0x32, 0xE3, 0xE6, 0xD1, 0x5B, 0xDD, 0x59, 0x33, 0x75, 0x95, + 0xF2, 0xC1, 0xC5, 0x77, 0x08, 0x81, 0x47, 0x39, 0xCD, 0xBA, 0x78, 0xA1, + 0x47, 0xD4, 0x2C, 0xDE, 0x9F, 0xB0, 0x20, 0x55, 0xA1, 0x4B, 0xD9, 0x0A, + 0xA8, 0x9C, 0xFE, 0x8C, 0x5F, 0x80, 0x2B, 0x90, 0x5D, 0x86, 0xB5, 0x91, + 0x31, 0x5C, 0x34, 0x4A, 0xC8, 0x27, 0xFF, 0x2D, 0xDA, 0xA8, 0xA3, 0xBE, + 0x9A, 0xB3, 0x24, 0x8A, 0xB4, 0x1C, 0xCC, 0xC1, 0x80, 0x75, 0xEB, 0x88, + 0x79, 0xA2, 0x20, 0xD9, 0x7E, 0x13, 0xCC, 0x6E, 0xE9, 0x2E, 0xA0, 0x3A, + 0x46, 0x2F, 0xA1, 0x99, 0xDE, 0x57, 0xE4, 0x33, 0x10, 0xB2, 0xC8, 0xE5, + 0xCF, 0xC0, 0x75, 0x9E, 0xF7, 0xB9, 0x74, 0xA8, 0xD0, 0x56, 0xFF, 0x86, + 0x95, 0x73, 0xE1, 0x36, 0xF5, 0xED, 0x89, 0x0C, 0x35, 0x25, 0xDF, 0x05, + 0xDB, 0xAA, 0x09, 0x54, 0x29, 0xF4, 0x96, 0xD1, 0x82, 0x50, 0xC2, 0x60, + 0x2C, 0xE4, 0xCB, 0x86, 0xBE, 0xAB, 0xB1, 0x05, 0x1D, 0x85, 0xA6, 0x76, + 0xA3, 0xE2, 0x4E, 0x74, 0x71, 0xEB, 0x65, 0xA1, 0x53, 0xF6, 0x32, 0x67, + 0x3A, 0x56, 0x2A, 0xE3, 0xE1, 0x8E, 0x75, 0xCF, 0xE0, 0xB2, 0xBB, 0x40, + 0x0A, 0xD1, 0x93, 0x83, 0xA0, 0x21, 0x29, 0x77, 0xC1, 0x8D, 0x67, 0x67, + 0x27, 0xF0, 0xB1, 0x9B, 0x1C, 0xD2, 0x3F, 0x93, 0x63, 0x86, 0x38, 0x12, + 0xB6, 0x33, 0x6D, 0xAB, 0x5B, 0x16, 0xF2, 0xB5, 0xAD, 0x30, 0xD6, 0xDD, + 0xA7, 0xA1, 0x9F, 0xDD, 0x52, 0xEE, 0xEA, 0x50, 0xD4, 0x36, 0x1E, 0x9C, + 0x2B, 0xD0, 0x45, 0xEF, 0x7E, 0x43, 0xC7, 0x72, 0xBB, 0x55, 0xF7, 0xF6, + 0x32, 0xE8, 0xC4, 0xAE, 0x48, 0x1A, 0x6A, 0x8D, 0xE1, 0xA0, 0xBC, 0x83, + 0x0F, 0x4A, 0xAC, 0x9C, 0x6F, 0x98, 0x56, 0x8A, 0x66, 0x73, 0x15, 0x07, + 0xA6, 0x46, 0xD1, 0x6B, 0x07, 0x1C, 0x36, 0x1E, 0xC9, 0x48, 0x8A, 0x05, + 0xC2, 0x1D, 0x9D, 0x54, 0x37, 0x34, 0x8F, 0x4B, 0xD7, 0x63, 0x1F, 0xC3, + 0x02, 0xC2, 0x11, 0x70, 0x40, 0x61, 0x4F, 0xE1, 0x17, 0x63, 0xDF, 0x21, + 0x50, 0x7D, 0x08, 0x02, 0xB6, 0x97, 0x11, 0x2E, 0xF5, 0xE6, 0x0C, 0x94, + 0x10, 0x31, 0x5A, 0x51, 0x5D, 0x00, 0x84, 0xC2, 0x86, 0x90, 0xD4, 0xAE, + 0x34, 0xB7, 0x1E, 0x97, 0x80, 0x3F, 0x85, 0x52, 0x2D, 0x7A, 0xBD, 0x32, + 0x03, 0x2B, 0x9F, 0xF5, 0xCA, 0x85, 0x6D, 0x9A, 0xF3, 0x65, 0xAF, 0xE2, + 0x60, 0xDF, 0x8C, 0x4F, 0x18, 0xD1, 0x85, 0xD3, 0x01, 0x6B, 0x07, 0xA0, + 0x54, 0xB6, 0xCB, 0x25, 0xB3, 0x92, 0x96, 0xC5, 0x0B, 0xE8, 0xB4, 0xA4, + 0x60, 0x23, 0x81, 0x47, 0xBA, 0xAD, 0x31, 0x05, 0x58, 0x3D, 0xC4, 0xA9, + 0xF7, 0xAB, 0x9E, 0x9F, 0xAF, 0x7E, 0xAA, 0x20, 0xB5, 0xA4, 0xA5, 0x9A, + 0x46, 0xF7, 0xCC, 0xE8, 0xFE, 0x6B, 0x93, 0x07, 0x7B, 0x43, 0x9F, 0x79, + 0x55, 0x4E, 0xAB, 0xCD, 0xEF, 0x3A, 0xA1, 0x8E, 0xC4, 0xDE, 0x62, 0x5F, + 0x0A, 0xFF, 0xC7, 0x1B, 0x4E, 0x53, 0x50, 0x36, 0x93, 0x1C, 0x47, 0xF2, + 0x6A, 0x58, 0xD0, 0xBF, 0x70, 0x8B, 0x45, 0x34, 0x34, 0x33, 0x9E, 0x44, + 0xB9, 0x64, 0xED, 0x9B, 0x6D, 0x07, 0x5F, 0x8C, 0x12, 0xEF, 0xDC, 0x26, + 0xFF, 0x4C, 0xCE, 0xCE, 0x8D, 0xB9, 0x91, 0xC7, 0x82, 0xBF, 0x08, 0x23, + 0xA8, 0x9A, 0x8E, 0x21, 0x8C, 0xDE, 0x1C, 0x92, 0x5B, 0xB0, 0x70, 0x69, + 0x42, 0xD6, 0xB9, 0x94, 0x1A, 0xA2, 0x12, 0x91, 0xF1, 0x54, 0x80, 0x02, + 0x0C, 0xD2, 0x54, 0x17, 0x4C, 0x29, 0xEA, 0x31, 0xC1, 0x60, 0x94, 0x9F, + 0x44, 0xDF, 0x7B, 0x38, 0xFE, 0xD4, 0x32, 0x36, 0x6C, 0xD4, 0x6A, 0xD1, + 0x3D, 0x6C, 0x73, 0x77, 0x81, 0xDC, 0xE2, 0x9D, 0x48, 0x5A, 0xB2, 0x95, + 0x28, 0x40, 0x5F, 0xF5, 0x6C, 0x9A, 0x63, 0x4B, 0x24, 0xD5, 0xE3, 0x25, + 0x75, 0xD4, 0xAC, 0x87, 0xA4, 0x55, 0x97, 0xA7, 0xB0, 0xD7, 0x06, 0x10, + 0xD5, 0x0F, 0xC9, 0x8F, 0xC7, 0x6C, 0x63, 0x49, 0x81, 0x14, 0x24, 0xB0, + 0x2C, 0xAA, 0xDE, 0x01, 0xB0, 0x4E, 0x2C, 0xD8, 0xB7, 0xDF, 0x24, 0x21, + 0xF8, 0x07, 0xF6, 0x36, 0x93, 0x09, 0x66, 0x1D, 0xBF, 0x6D, 0x76, 0xA7, + 0xDC, 0xA2, 0x67, 0xAA, 0x9E, 0x04, 0xB4, 0x9C, 0xE9, 0xBC, 0x78, 0xDC, + 0xEC, 0x1D, 0x4D, 0xED, 0x5F, 0x9F, 0xAA, 0xFF, 0x75, 0x24, 0x3A, 0x95, + 0xF8, 0xA2, 0xC0, 0x38, 0x73, 0xEF, 0xFF, 0x11, 0x71, 0xDE, 0xBB, 0x76, + 0x19, 0xBA, 0xB9, 0xB0, 0xA6, 0x1B, 0x0F, 0x33, 0xFA, 0x3B, 0xB5, 0x4D, + 0x32, 0x9F, 0x15, 0x09, 0xC3, 0x22, 0xCE, 0x73, 0x31, 0xDD, 0x23, 0xBF, + 0x1E, 0x99, 0x57, 0x6D, 0x0B, 0xDF, 0xF8, 0xFD, 0xAC, 0x41, 0xA7, 0x91, + 0x8B, 0x70, 0x5C, 0x41, 0x02, 0x77, 0x52, 0x1D, 0xAC, 0xBF, 0xBD, 0x03, + 0xA3, 0x5A, 0xC4, 0x61, 0xA8, 0xE1, 0x00, 0xE1, 0x77, 0x14, 0x7E, 0x5F, + 0xDF, 0x11, 0x80, 0x40, 0xBA, 0xA1, 0x07, 0x9F, 0xC7, 0xED, 0xC6, 0x77, + 0xF4, 0x14, 0x55, 0x99, 0x56, 0x15, 0x6C, 0xF9, 0x34, 0x02, 0x28, 0x69, + 0x81, 0xDD, 0x0D, 0x9E, 0x5B, 0x35, 0xEA, 0x1D, 0x9C, 0xA9, 0xBB, 0x82, + 0x79, 0x1B, 0xE7, 0xF5, 0xF8, 0xFD, 0x14, 0xC8, 0xDC, 0xE8, 0x7A, 0x6D, + 0x7B, 0xA1, 0x35, 0x7C, 0x0B, 0x13, 0x1B, 0x08, 0x2E, 0x8B, 0x04, 0x27, + 0x16, 0x04, 0xFC, 0x6C, 0xE4, 0x1E, 0x29, 0x06, 0xF1, 0x05, 0xCD, 0x6C, + 0x10, 0xB1, 0xBA, 0xB9, 0x7F, 0x97, 0xDD, 0x8C, 0xA5, 0x51, 0xB8, 0xD5, + 0xE8, 0xE9, 0xEA, 0x23, 0x5D, 0x2C, 0x6A, 0xC2, 0x74, 0x7F, 0x81, 0xB6, + 0x47, 0xF9, 0xA5, 0x94, 0x57, 0x31, 0x3B, 0xCE, 0xCB, 0x13, 0xA7, 0xED, + 0x9A, 0x29, 0x33, 0x4F, 0xE2, 0xB5, 0xAA, 0x41, 0x37, 0x6F, 0xF4, 0x82, + 0x65, 0x5F, 0x5D, 0xAE, 0x4D, 0x92, 0xD9, 0x03, 0xCC, 0x71, 0xA7, 0x6D, + 0x68, 0x46, 0x87, 0xA0, 0x79, 0x28, 0x9C, 0x4A, 0x39, 0x7F, 0x5E, 0xA2, + 0xD5, 0xB4, 0x8B, 0x35, 0x07, 0x49, 0x66, 0x47, 0x08, 0xFB, 0xFF, 0xE4, + 0x44, 0x06, 0x3B, 0x7D, 0x99, 0xED, 0xE6, 0x9D, 0xDD, 0x9B, 0x86, 0x27, + 0x4D, 0x3A, 0x46, 0x42, 0xDA, 0xEC, 0xCD, 0xEA, 0x1E, 0x4F, 0xDA, 0x5F, + 0x5F, 0x0E, 0x0C, 0xCF, 0x65, 0x64, 0x34, 0x29, 0x4E, 0x14, 0x4B, 0x8A, + 0x9A, 0x2C, 0xF6, 0x80, 0xBC, 0x4B, 0xAD, 0xB9, 0x24, 0xC3, 0x56, 0x2E, + 0x5E, 0x3D, 0xBD, 0xE0, 0x48, 0x96, 0x30, 0x01, 0xD7, 0x4A, 0xEA, 0x0B, + 0xCD, 0xF2, 0xFA, 0x99, 0x67, 0xA3, 0x98, 0x01, 0xD5, 0x19, 0x0D, 0xD5, + 0x6E, 0xB3, 0x18, 0x05, 0x62, 0x5C, 0x75, 0xB3, 0xC2, 0x60, 0xCF, 0xF5, + 0x22, 0x42, 0x32, 0x73, 0x99, 0x1D, 0x31, 0x94, 0xE6, 0x37, 0xC8, 0x74, + 0x41, 0xF1, 0xBD, 0x46, 0xBA, 0x0B, 0x2A, 0xA7, 0x4A, 0x28, 0xB8, 0x25, + 0x48, 0x99, 0xEF, 0xE1, 0xE7, 0x4D, 0xEB, 0x53, 0xBA, 0x76, 0xA2, 0x15, + 0x1B, 0xFE, 0x80, 0x6F, 0x66, 0x81, 0x15, 0x99, 0x6B, 0x1C, 0x12, 0xB6, + 0x61, 0x52, 0xCD, 0xBA, 0x47, 0x79, 0x0D, 0x9A, 0xEE, 0xA9, 0x3E, 0xFB, + 0xBD, 0x56, 0xA7, 0xBC, 0x41, 0xF1, 0x17, 0x00, 0xC5, 0x0E, 0x58, 0xA7, + 0x71, 0x42, 0x7D, 0x4A, 0xAF, 0x3C, 0x8E, 0xA6, 0x77, 0x6F, 0x35, 0xEC, + 0x92, 0x8A, 0xC9, 0xCC, 0xB0, 0x58, 0x74, 0xCE, 0xD3, 0xBB, 0xA0, 0xC1, + 0xCD, 0x12, 0xF2, 0x81, 0x1C, 0xA4, 0x26, 0x7C, 0x92, 0x8A, 0x27, 0x19, + 0x3C, 0x44, 0x2A, 0x7D, 0x0E, 0xD3, 0xEA, 0x15, 0x3A, 0xF9, 0x4B, 0xBF, + 0x99, 0x8A, 0x7F, 0xAB, 0x13, 0x24, 0x65, 0x46, 0x94, 0x29, 0xBD, 0xB7, + 0x2A, 0xEE, 0x65, 0xEF, 0x02, 0x34, 0x20, 0xF4, 0xD2, 0xAF, 0xC4, 0x10, + 0x93, 0x05, 0xD5, 0x82, 0x71, 0x7C, 0xF8, 0x9D, 0x43, 0x72, 0x09, 0xBB, + 0x8C, 0xC3, 0x60, 0x21, 0x40, 0xCB, 0x97, 0xA3, 0x47, 0xE1, 0xDF, 0x18, + 0x5E, 0x22, 0x2F, 0x95, 0x49, 0x3F, 0x89, 0x50, 0xFD, 0x08, 0x3D, 0xC2, + 0xE2, 0x5D, 0x5A, 0xA3, 0xF2, 0x09, 0x4F, 0x0C, 0x55, 0x38, 0x69, 0xF8, + 0x39, 0xC3, 0x94, 0xF7, 0x55, 0x71, 0xA9, 0xC7, 0x0F, 0x2C, 0x8E, 0x3C, + 0x70, 0x86, 0x57, 0x6F, 0xCF, 0x5D, 0xE9, 0x4B, 0x4F, 0x80, 0x7E, 0x15, + 0x42, 0x43, 0x7B, 0xEC, 0xCD, 0x4E, 0x92, 0x8D, 0x5C, 0x89, 0xD2, 0x08, + 0x5A, 0x32, 0x0F, 0x6E, 0x0D, 0x09, 0x29, 0x02, 0x6F, 0xA0, 0x2E, 0x8E, + 0x5C, 0x10, 0x16, 0x1E, 0x82, 0xDF, 0xD3, 0xCD, 0xB5, 0x93, 0xD6, 0x21, + 0x7B, 0x96, 0xC5, 0xFC, 0x79, 0x21, 0x88, 0x99, 0xC9, 0x3C, 0x75, 0x98, + 0x13, 0x67, 0x62, 0xFD, 0x70, 0xB0, 0x58, 0xDA, 0xCF, 0xDC, 0x9E, 0x92, + 0x5F, 0x84, 0x3B, 0x0E, 0xD8, 0xE0, 0xCF, 0xF3, 0x90, 0x9E, 0xFC, 0x40, + 0xC7, 0x58, 0x2F, 0x11, 0x55, 0x9D, 0x7A, 0xE9, 0x9D, 0x5C, 0xD7, 0xDF, + 0xEF, 0xC5, 0x87, 0x7E, 0xC5, 0x14, 0xA7, 0xCE, 0xE6, 0xDB, 0x83, 0xD4, + 0x3A, 0xF7, 0x86, 0xD0, 0xE6, 0x2B, 0xFF, 0x8B, 0x80, 0xF8, 0xD6, 0xFE, + 0x55, 0x82, 0xD7, 0x5B, 0xEB, 0x29, 0x9C, 0x1D, 0xCD, 0x69, 0x1D, 0xF2, + 0xB5, 0x44, 0x09, 0xAD, 0x1D, 0x40, 0xDD, 0xC1, 0xFB, 0xDF, 0x79, 0xCA, + 0xA4, 0x61, 0xAC, 0x39, 0x80, 0x66, 0xB8, 0x37, 0x91, 0xF6, 0x23, 0xEB, + 0x82, 0x49, 0x05, 0x41, 0x72, 0x98, 0xA6, 0x1C, 0x21, 0xB1, 0x64, 0x90, + 0xDC, 0x68, 0x00, 0x2E, 0x61, 0x2A, 0x80, 0x91, 0xEB, 0xCA, 0x04, 0x3D, + 0x8E, 0x70, 0x21, 0x60, 0x1E, 0x11, 0x69, 0x4A, 0x3B, 0x09, 0x84, 0x90, + 0x98, 0x78, 0xF0, 0x9D, 0x5A, 0x92, 0x71, 0xC3, 0xB7, 0x4B, 0x42, 0x98, + 0x8E, 0xB6, 0x2B, 0x39, 0x59, 0x5F, 0xC1, 0x04, 0xC6, 0x8F, 0x6B, 0x33, + 0xF7, 0x9E, 0x0B, 0x32, 0x35, 0x60, 0x57, 0x23, 0xA1, 0xCB, 0x73, 0x82, + 0xEA, 0x05, 0x3D, 0xDC, 0xF5, 0x36, 0x1B, 0x5E, 0x18, 0x1F, 0x37, 0x14, + 0xD7, 0x06, 0xAE, 0xDD, 0x46, 0x15, 0x82, 0xA2, 0x9C, 0xAA, 0x41, 0xFE, + 0x28, 0xB8, 0x3E, 0x2A, 0x7D, 0x78, 0xB8, 0x27, 0xE7, 0x65, 0x52, 0x7D, + 0x93, 0x9F, 0x13, 0x9A, 0x22, 0xF1, 0xF5, 0xB3, 0x2A, 0x37, 0xB6, 0x81, + 0xF7, 0x5D, 0x4C, 0xA3, 0x65, 0x28, 0x13, 0x9E, 0x41, 0xD8, 0xC4, 0xA8, + 0x10, 0xD5, 0x5D, 0xB0, 0xBA, 0xE5, 0xDF, 0xF3, 0xFF, 0x49, 0xD1, 0xED, + 0x9D, 0x9E, 0xFA, 0x19, 0xF7, 0x41, 0xDB, 0xC1, 0xBE, 0x8E, 0x72, 0xAD, + 0xB2, 0xD5, 0x7A, 0x93, 0x6F, 0xF7, 0x25, 0xB9, 0x62, 0xB5, 0xA9, 0x3B, + 0x79, 0xF6, 0xA8, 0x56, 0x4A, 0x8F, 0x98, 0x9E, 0xC7, 0x4F, 0x42, 0x49, + 0xB3, 0x75, 0xFA, 0x73, 0xDD, 0x37, 0xCA, 0xCE, 0xEA, 0x5E, 0xF0, 0x84, + 0x88, 0x6F, 0x54, 0x54, 0xA5, 0xA0, 0x1D, 0xF9, 0xE7, 0x4E, 0xCB, 0xD6, + 0x0A, 0xB4, 0x84, 0xBF, 0xD0, 0x2E, 0x2C, 0xF9, 0x12, 0x33, 0x28, 0x91, + 0x40, 0x3E, 0xC9, 0x18, 0x9E, 0x84, 0x76, 0xDB, 0xEB, 0x21, 0x62, 0x35, + 0xAE, 0x98, 0x20, 0x97, 0x2B, 0x8D, 0x6B, 0x86, 0x73, 0x91, 0x00, 0x0C, + 0xA0, 0xF1, 0xAB, 0xB7, 0x65, 0x94, 0x7A, 0x80, 0x09, 0x28, 0x90, 0x0B, + 0xAF, 0x1C, 0x72, 0xCD, 0x93, 0x7C, 0xDA, 0xC7, 0xE0, 0x85, 0x72, 0x3F, + 0x0A, 0xAA, 0x1E, 0xE7, 0xBF, 0xEA, 0x84, 0xE1, 0xF9, 0xB8, 0x2B, 0x41, + 0x4E, 0x30, 0x23, 0x99, 0x47, 0xE4, 0x6C, 0x45, 0x86, 0x51, 0xB2, 0xB1, + 0x2A, 0x11, 0x1B, 0x3E, 0xD1, 0x5A, 0xC4, 0x6C, 0xEF, 0x37, 0xBC, 0xAE, + 0x10, 0x0C, 0x28, 0xB0, 0x14, 0x6B, 0xB7, 0x34, 0x12, 0x21, 0x12, 0x5D, + 0xFC, 0x19, 0x80, 0x72, 0x0B, 0xF3, 0x27, 0x8B, 0x3F, 0x14, 0x7B, 0xD5, + 0x66, 0xF2, 0x0F, 0xEF, 0x2E, 0xC6, 0x87, 0x49, 0x61, 0xD1, 0xE6, 0xA5, + 0x00, 0xF9, 0x1A, 0x11, 0xB2, 0x3B, 0xAC, 0x77, 0xBF, 0xFB, 0x6B, 0xB1, + 0x9C, 0x25, 0x0D, 0x68, 0x2C, 0x2C, 0xA8, 0xE8, 0x67, 0xE7, 0xAF, 0x32, + 0x03, 0x6C, 0xAB, 0xF2, 0x27, 0x55, 0xD6, 0xCA, 0x36, 0xC4, 0x2A, 0xD7, + 0x74, 0x7F, 0xD5, 0xE5, 0x4E, 0x2F, 0x97, 0xA8, 0x21, 0x71, 0xE0, 0xD7, + 0x96, 0xD3, 0x14, 0xA2, 0x3D, 0x6C, 0xC0, 0x86, 0x17, 0x80, 0xA0, 0x9B, + 0x96, 0x3F, 0x42, 0x45, 0xCF, 0x34, 0x24, 0x9C, 0xEF, 0x8A, 0xA2, 0x33, + 0xB7, 0xEB, 0xF7, 0xB1, 0xE1, 0xE9, 0x9F, 0xDB, 0xA9, 0x80, 0xD0, 0xA8, + 0xBC, 0x6A, 0x49, 0x86, 0x69, 0xAF, 0x21, 0x82, 0x9B, 0xF1, 0x90, 0x12, + 0x92, 0x7C, 0xCE, 0x56, 0xB7, 0x31, 0xFF, 0x68, 0xE1, 0x5D, 0x54, 0x17, + 0xBC, 0x06, 0x46, 0x56, 0xE3, 0x4A, 0x36, 0xAB, 0x7D, 0xBC, 0xE8, 0x34, + 0x32, 0x79, 0xEB, 0x96, 0xFC, 0xA5, 0x17, 0x72, 0x50, 0x63, 0xCB, 0x6C, + 0x4D, 0x0D, 0xBD, 0xEC, 0x78, 0xC7, 0x73, 0x97, 0x7F, 0xA6, 0xF5, 0xCE, + 0xFC, 0xC7, 0x28, 0x59, 0x62, 0xAF, 0xCC, 0x9F, 0xFB, 0x4F, 0x8D, 0xBE, + 0xC6, 0xEF, 0xCF, 0x92, 0xDE, 0x56, 0x06, 0xF0, 0xB6, 0xEE, 0x7F, 0xFE, + 0x90, 0x59, 0xFF, 0xF1, 0xB2, 0x7A, 0x67, 0xA9, 0x16, 0x0B, 0xB9, 0xDB, + 0xF8, 0x5B, 0xAB, 0x6C, 0xD0, 0x4F, 0x6A, 0xB1, 0x42, 0x39, 0x2D, 0x71, + 0x31, 0x30, 0x83, 0xC4, 0x3D, 0x5D, 0xB7, 0x6A, 0xE5, 0xE0, 0x1A, 0x07, + 0xC8, 0xA1, 0xCC, 0x5C, 0x8B, 0x0E, 0xDA, 0xBA, 0xC5, 0x0E, 0x1D, 0x6D, + 0x8C, 0x25, 0x56, 0xAA, 0xA2, 0xC3, 0x1C, 0xB1, 0xDE, 0x5E, 0xAA, 0xCA, + 0x53, 0xF8, 0x78, 0x69, 0x51, 0x69, 0x03, 0xA4, 0x0F, 0xB7, 0xA7, 0xAA, + 0xB6, 0x44, 0x59, 0x9F, 0xB8, 0x45, 0x48, 0x19, 0x5F, 0x29, 0x64, 0x66, + 0xA7, 0x7B, 0x7F, 0x79, 0xF8, 0x9D, 0x15, 0x48, 0x34, 0x57, 0xA1, 0x25, + 0x27, 0xCE, 0xBF, 0xD1, 0xC8, 0x5E, 0x96, 0xBF, 0xC9, 0xD2, 0xC7, 0x08, + 0x75, 0xDB, 0x8D, 0x55, 0x26, 0x92, 0x2C, 0xB2, 0x87, 0xB1, 0x15, 0x37, + 0x22, 0x9B, 0x61, 0xBC, 0xA8, 0xC7, 0x7E, 0xC3, 0x98, 0x89, 0xBC, 0x44, + 0x6B, 0x13, 0x93, 0x30, 0xCD, 0x5B, 0x35, 0xB4, 0x9F, 0x5C, 0xB5, 0x2E, + 0xB1, 0x23, 0x20, 0xA8, 0xF3, 0xA3, 0x5A, 0x01, 0x29, 0x24, 0x54, 0x20, + 0xEF, 0x27, 0xCD, 0xF3, 0x56, 0xE0, 0x6B, 0x02, 0x23, 0x0A, 0xD9, 0x6A, + 0xA6, 0x23, 0xE1, 0xC3, 0x96, 0xEE, 0x06, 0x11, 0x53, 0x9E, 0xD6, 0x80, + 0xC1, 0x68, 0x15, 0xA4, 0x24, 0x8F, 0xBF, 0xB2, 0x49, 0xC1, 0x2E, 0xE2, + 0x6B, 0xD2, 0x48, 0x45, 0x3C, 0xA6, 0xF8, 0x6C, 0xC0, 0x55, 0x51, 0xC4, + 0xAC, 0x52, 0x8D, 0x44, 0xEF, 0xBC, 0x04, 0x05, 0x69, 0x5C, 0x87, 0x99, + 0x0C, 0x27, 0xFB, 0x02, 0x6E, 0xD1, 0xF7, 0x5E, 0x07, 0x11, 0x26, 0x5A, + 0x59, 0x5A, 0xF8, 0x54, 0x12, 0x88, 0x20, 0xBB, 0x38, 0x92, 0x49, 0xF0, + 0xE5, 0x82, 0xA3, 0xF6, 0xEE, 0xBD, 0xD7, 0xCC, 0x58, 0xDC, 0x3B, 0x8A, + 0x13, 0xE8, 0x5F, 0x58, 0x0C, 0x12, 0x64, 0x3C, 0xAF, 0x92, 0xC0, 0xC9, + 0x11, 0xE9, 0xC1, 0xB8, 0xE7, 0xFA, 0x09, 0xAE, 0x61, 0xA3, 0x70, 0x4C, + 0x07, 0x45, 0x7C, 0x61, 0x82, 0x1B, 0x64, 0x4C, 0x0F, 0x7D, 0xC2, 0xC5, + 0xD9, 0x92, 0x00, 0x35, 0xCC, 0x34, 0x07, 0xBA, 0xDD, 0x52, 0xE3, 0x67, + 0x76, 0xC6, 0x8B, 0xD5, 0x51, 0xE7, 0xB3, 0x57, 0x7D, 0xF6, 0xA3, 0x82, + 0xEA, 0x7D, 0x88, 0x09, 0x67, 0x49, 0x2B, 0x37, 0x04, 0x1E, 0xBF, 0x83, + 0x76, 0xBA, 0x7F, 0xB4, 0xC1, 0x8F, 0xCD, 0xD3, 0x04, 0xD2, 0x89, 0x5F, + 0x0E, 0xA7, 0x43, 0x4F, 0x8A, 0x4A, 0x98, 0x48, 0x74, 0x83, 0x0B, 0x2E, + 0x6E, 0xC4, 0xAF, 0x29, 0x38, 0xBA, 0xD1, 0x67, 0xEA, 0x96, 0x10, 0x35, + 0x69, 0xFF, 0xD2, 0x43, 0x00, 0x2E, 0x9D, 0x60, 0x08, 0x04, 0xDF, 0xFB, + 0xCD, 0x6C, 0x98, 0xCE, 0x73, 0x9A, 0xF4, 0x46, 0x23, 0x22, 0x58, 0x0C, + 0x1F, 0xE1, 0x5A, 0x43, 0x76, 0x18, 0x81, 0xE3, 0xF4, 0xBE, 0x95, 0xBF, + 0x61, 0x88, 0x16, 0xF4, 0x7B, 0x01, 0xEB, 0xD4, 0x85, 0xB9, 0xC2, 0x0C, + 0x22, 0x02, 0x27, 0x8D, 0xB5, 0x7F, 0xC8, 0xA9, 0xAA, 0x8A, 0xF7, 0x91, + 0x7A, 0x4A, 0x20, 0x37, 0xB7, 0xBE, 0x15, 0x6E, 0x48, 0x2C, 0x50, 0xE3, + 0xAE, 0x2B, 0xAE, 0x1E, 0x5C, 0x59, 0x9A, 0x36, 0x46, 0x85, 0x04, 0xE8, + 0x51, 0xED, 0x1F, 0xB0, 0x38, 0xE3, 0xC7, 0x5D, 0x9A, 0xD1, 0x07, 0x85, + 0xED, 0xDC, 0x3C, 0x99, 0x35, 0x03, 0x57, 0x85, 0xE2, 0x83, 0xFB, 0x06, + 0x81, 0x08, 0xDA, 0xF2, 0xFA, 0xF4, 0x9E, 0x5F, 0x2F, 0x82, 0xC2, 0xBA, + 0xE3, 0x04, 0x42, 0x59, 0x4B, 0xBD, 0xEB, 0xFD, 0x8F, 0x5D, 0x34, 0x37, + 0x86, 0x06, 0x6B, 0xCC, 0x8C, 0x48, 0x7C, 0x14, 0xE9, 0x48, 0xF5, 0x28, + 0x51, 0xF3, 0x7E, 0xC9, 0xC8, 0x73, 0x88, 0x8B, 0x03, 0xAD, 0xEA, 0x37, + 0x3F, 0x02, 0x95, 0xB8, 0x6A, 0x28, 0xFC, 0x42, 0xD9, 0xAD, 0xFC, 0x4C, + 0xE8, 0xEA, 0xDC, 0x4B, 0xD3, 0x9C, 0x74, 0x09, 0x44, 0x74, 0x81, 0xB6, + 0x36, 0x96, 0x07, 0xFB, 0x48, 0xF5, 0xBA, 0x21, 0xA5, 0xD4, 0xCA, 0x48, + 0x1E, 0x63, 0xF4, 0x8C, 0x16, 0x4C, 0xDF, 0xC2, 0xAA, 0x11, 0x02, 0xCF, + 0xE8, 0x28, 0xEF, 0xB9, 0x57, 0x70, 0x6C, 0x2C, 0x43, 0x18, 0x6D, 0xBD, + 0x2D, 0xF4, 0x20, 0x54, 0x2A, 0xF3, 0xAE, 0x57, 0x46, 0xA4, 0x0E, 0xC8, + 0x18, 0xB3, 0x37, 0x6E, 0xFF, 0x99, 0x6A, 0x26, 0xF8, 0x7E, 0xCF, 0x8B, + 0xDB, 0x43, 0xF3, 0x10, 0x30, 0xA7, 0x27, 0x96, 0x07, 0x8F, 0x50, 0xE0, + 0x45, 0x41, 0x16, 0xA6, 0xC1, 0x1B, 0xCB, 0x97, 0x00, 0x81, 0x9D, 0x3A, + 0x1A, 0x1E, 0xA0, 0x11, 0xFA, 0xBC, 0x89, 0xF5, 0x07, 0x66, 0x93, 0x4E, + 0xC4, 0x90, 0xF7, 0xA1, 0x65, 0x00, 0xDE, 0x39, 0x9A, 0xED, 0xCC, 0xEA, + 0x70, 0x57, 0x83, 0x62, 0x68, 0xE0, 0x9C, 0x0A, 0xC5, 0x2F, 0x6E, 0x75, + 0xB9, 0x93, 0x15, 0x62, 0xAC, 0x7C, 0x8B, 0x23, 0x32, 0xF4, 0xC9, 0x97, + 0xBA, 0x7D, 0x7D, 0x9D, 0x19, 0x13, 0x4B, 0x6E, 0xEF, 0xDE, 0x2B, 0x9B, + 0x30, 0x9B, 0x30, 0xA8, 0x22, 0xBC, 0x7B, 0x63, 0xC8, 0x08, 0x84, 0xA6, + 0x66, 0xE0, 0x87, 0x0C, 0x4A, 0x1B, 0xC3, 0xE2, 0xE4, 0x3B, 0x45, 0x21, + 0x45, 0x36, 0x05, 0x98, 0x41, 0xE1, 0x03, 0x82, 0x95, 0x69, 0x0C, 0x6D, + 0x4A, 0x13, 0x94, 0x15, 0x66, 0x9C, 0x2F, 0xA5, 0x93, 0x3F, 0x59, 0xE0, + 0x86, 0xED, 0x13, 0xD5, 0x9A, 0x0A, 0xEB, 0x0C, 0x58, 0xD1, 0xBB, 0x9C, + 0xD9, 0x16, 0x3C, 0xC7, 0x47, 0x7A, 0x2B, 0x62, 0xC5, 0x29, 0x08, 0x03, + 0xC6, 0xCE, 0x7B, 0xAB, 0x9B, 0x96, 0x69, 0x42, 0x9A, 0x27, 0x23, 0x0E, + 0xAC, 0x69, 0xDA, 0x84, 0xD3, 0xCC, 0xFF, 0x55, 0x58, 0x30, 0x45, 0xFD, + 0xBE, 0xA2, 0x25, 0xE1, 0x66, 0xF9, 0x70, 0xAE, 0x1E, 0xC3, 0x3E, 0xC6, + 0xF8, 0xF2, 0x0D, 0xA6, 0x49, 0x1F, 0x73, 0x82, 0xBE, 0x74, 0x8C, 0x3B, + 0xD7, 0xF1, 0xDA, 0x94, 0x41, 0x20, 0xD4, 0x45, 0xD8, 0xB4, 0x44, 0x97, + 0x85, 0x12, 0xE9, 0xB4, 0x4A, 0xDF, 0xD4, 0xED, 0xA5, 0x7D, 0xCD, 0x15, + 0x08, 0xD2, 0x7C, 0x46, 0xF4, 0x34, 0x0C, 0x0C, 0x56, 0x4A, 0xFA, 0xDB, + 0x8B, 0xC2, 0xB3, 0x0F, 0xB4, 0xEB, 0x26, 0xB6, 0xA7, 0x0A, 0x0C, 0xB7, + 0x19, 0x0A, 0x2C, 0x27, 0xC9, 0x1B, 0x83, 0x4B, 0x32, 0xAE, 0xBE, 0x11, + 0xA3, 0xBC, 0x3D, 0x94, 0x2B, 0xC8, 0xCB, 0x5D, 0x1F, 0xA6, 0x7C, 0xB6, + 0x4C, 0x5E, 0xCF, 0xA4, 0x51, 0x90, 0xDB, 0xE2, 0xBA, 0x4D, 0x14, 0x9D, + 0x22, 0x1E, 0x82, 0x2E, 0x28, 0xB9, 0x94, 0x83, 0x46, 0x63, 0xD6, 0xEA, + 0x14, 0x03, 0xDE, 0x74, 0x09, 0xD4, 0x21, 0x07, 0xFA, 0xEB, 0x36, 0xB5, + 0x76, 0x7D, 0x98, 0xBC, 0x3A, 0x9E, 0xD4, 0xB3, 0x24, 0x35, 0x87, 0x0C, + 0x70, 0x09, 0x7C, 0xE4, 0x70, 0x46, 0x6C, 0x8C, 0x19, 0xD0, 0x42, 0xE9, + 0x24, 0x2F, 0xCA, 0x16, 0xAD, 0x21, 0xD1, 0x16, 0xDF, 0x01, 0xEC, 0x23, + 0xCA, 0xE3, 0x81, 0xD2, 0x53, 0x20, 0x7E, 0xA1, 0x99, 0x8E, 0x88, 0x5D, + 0x73, 0xF8, 0xD9, 0x0E, 0x37, 0xB4, 0xF3, 0xE9, 0x66, 0x7B, 0x2D, 0xA0, + 0x5B, 0x4B, 0x28, 0xE5, 0xE3, 0x6C, 0xA2, 0x82, 0x6C, 0xA9, 0xE7, 0x1C, + 0xD3, 0x33, 0x2C, 0xB4, 0x7D, 0x95, 0xEA, 0x9F, 0x20, 0xEF, 0x02, 0x38, + 0x26, 0x3C, 0x5F, 0x39, 0xBB, 0xFA, 0x75, 0x10, 0xBE, 0x00, 0x1A, 0x4B, + 0xE8, 0xBC, 0x1B, 0xCE, 0x02, 0x59, 0x97, 0x36, 0xD9, 0xE9, 0x03, 0x2B, + 0x1A, 0x54, 0x35, 0x31, 0x9E, 0x59, 0xDE, 0x46, 0x56, 0x5D, 0xF6, 0xB5, + 0x91, 0xBC, 0x52, 0xB6, 0xB5, 0x9A, 0xF6, 0x8B, 0x5B, 0xE4, 0x7D, 0x4F, + 0xD6, 0x74, 0x2A, 0x7D, 0xC3, 0x85, 0x50, 0xF4, 0xCD, 0x3A, 0x81, 0x3C, + 0x2C, 0xA5, 0xF5, 0xAF, 0xE2, 0xA9, 0x9F, 0x97, 0xE5, 0x7B, 0x67, 0x64, + 0x46, 0xD4, 0x7C, 0x1A, 0x41, 0xD4, 0x2D, 0x7C, 0xE3, 0xD9, 0xFA, 0x2A, + 0xDE, 0x83, 0x17, 0xEC, 0x78, 0x02, 0x7D, 0xAF, 0x4A, 0x06, 0x53, 0xE3, + 0x44, 0x0B, 0x06, 0xEC, 0xD4, 0xA7, 0xA5, 0x87, 0x09, 0x23, 0x44, 0x76, + 0x3D, 0xD4, 0xA5, 0xEF, 0x5C, 0x75, 0x3A, 0xF7, 0x99, 0xC8, 0x21, 0x6A, + 0xFB, 0xBF, 0x0D, 0x08, 0xF0, 0xEE, 0xD6, 0x7E, 0xF8, 0x67, 0x02, 0x87, + 0xCA, 0x94, 0x27, 0x4D, 0x0C, 0x5F, 0xA1, 0x94, 0xC9, 0x1F, 0xE1, 0x4B, + 0x93, 0x2D, 0x40, 0xE0, 0x25, 0x5A, 0xDB, 0x28, 0xBE, 0x7F, 0xFD, 0x0D, + 0x6D, 0x22, 0xF4, 0x31, 0xE5, 0x1C, 0x84, 0x71, 0x09, 0x5F, 0x1D, 0x78, + 0xE9, 0x64, 0xD9, 0xB9, 0x82, 0x7D, 0xF5, 0x9B, 0x73, 0x4F, 0x74, 0x8B, + 0xA1, 0xB3, 0xC2, 0x01, 0x30, 0x1E, 0x20, 0x72, 0xB9, 0xB8, 0x92, 0x1A, + 0xFE, 0x34, 0xF8, 0x5F, 0x69, 0xEC, 0x09, 0x41, 0x50, 0x77, 0x44, 0xF9, + 0x68, 0xE4, 0xEC, 0xC7, 0xB5, 0xA3, 0x45, 0x6B, 0x03, 0xC4, 0xE8, 0xA0, + 0x53, 0xF2, 0x94, 0xB9, 0x49, 0xA0, 0x6D, 0x11, 0xBA, 0x1C, 0x89, 0x87, + 0x08, 0x72, 0xC0, 0xE3, 0x7B, 0x0C, 0x8D, 0x18, 0xDD, 0xB0, 0x3B, 0x0E, + 0xC2, 0x0E, 0xBB, 0x4B, 0x61, 0x22, 0x48, 0x64, 0x69, 0x54, 0xE8, 0x29, + 0x94, 0x84, 0xE5, 0xD7, 0x1A, 0x5F, 0x4B, 0xBC, 0xAD, 0x35, 0x82, 0xF1, + 0xFD, 0x40, 0x14, 0xAE, 0xD0, 0x28, 0x0E, 0xE9, 0xEE, 0x2E, 0x88, 0xFF, + 0xD1, 0xC9, 0xC5, 0x36, 0x39, 0xFB, 0x9F, 0xC9, 0x85, 0x97, 0x2A, 0x58, + 0x07, 0xD9, 0x6E, 0x6E, 0x83, 0x09, 0x6D, 0xC6, 0x92, 0x1C, 0xBF, 0x50, + 0xE3, 0xCB, 0xAD, 0x50, 0x3C, 0xDB, 0xF9, 0xE3, 0x32, 0x51, 0x58, 0x20, + 0xE6, 0xD8, 0xCA, 0x50, 0xF7, 0x50, 0x05, 0xAF, 0xB6, 0xF7, 0xAB, 0x3E, + 0x48, 0xB7, 0xA4, 0xB1, 0x52, 0x32, 0x2A, 0xD6, 0xC2, 0x78, 0x62, 0x05, + 0x34, 0x96, 0x61, 0xF1, 0x21, 0x14, 0x69, 0x6F, 0x10, 0x96, 0xDD, 0xE2, + 0x1D, 0xEB, 0xE5, 0x4F, 0xA0, 0x67, 0xA8, 0x46, 0x52, 0xBD, 0x2F, 0xA5, + 0x59, 0xF8, 0xCB, 0xB2, 0x51, 0x09, 0xD3, 0x13, 0x9C, 0x37, 0xD3, 0x9B, + 0xD4, 0x5C, 0x8E, 0xF9, 0xF2, 0xE4, 0xBF, 0x69, 0xA2, 0xB2, 0x06, 0xC1, + 0xF5, 0x65, 0xB9, 0x0A, 0xC6, 0x73, 0x77, 0xEF, 0x4E, 0x50, 0x2D, 0x2C, + 0xEE, 0xFF, 0xE9, 0x61, 0x8A, 0x07, 0xC9, 0x64, 0x48, 0x27, 0x4B, 0xCE, + 0xE1, 0x80, 0xCC, 0x14, 0x8F, 0x42, 0x92, 0x4D, 0x6F, 0x87, 0x48, 0x90, + 0x29, 0xF4, 0x4E, 0x72, 0x2C, 0xCC, 0x1A, 0xDD, 0x96, 0xDA, 0xFE, 0xD7, + 0xCB, 0xEE, 0x6F, 0xA4, 0xA0, 0xCB, 0xEE, 0x7F, 0xB3, 0x21, 0x54, 0xBA, + 0x6F, 0xC9, 0x53, 0x66, 0x7B, 0x38, 0xEC, 0xF4, 0x5F, 0xA0, 0x99, 0x23, + 0x5F, 0x79, 0xD7, 0x08, 0xCC, 0x74, 0xDA, 0x02, 0xA1, 0xFC, 0x01, 0xF0, + 0xF6, 0xA9, 0x9C, 0xA5, 0x85, 0xC6, 0x7E, 0xF6, 0x0F, 0x53, 0x11, 0x91, + 0x92, 0x6D, 0x60, 0xC7, 0x63, 0xD5, 0x1C, 0x84, 0x7E, 0x91, 0xDA, 0x97, + 0x5B, 0xD8, 0x3D, 0xBF, 0x83, 0xC3, 0x42, 0xC1, 0xDB, 0xB6, 0xE3, 0xFB, + 0x9F, 0x40, 0x36, 0x6E, 0xB9, 0x8F, 0x44, 0xB8, 0x73, 0x2C, 0x14, 0xBD, + 0x6C, 0x5E, 0x71, 0x76, 0xD2, 0xB9, 0xA2, 0x0B, 0xEC, 0xD4, 0x97, 0x9A, + 0x1F, 0xCF, 0x0C, 0x3D, 0x5F, 0x49, 0x24, 0x08, 0x3C, 0xEC, 0xCE, 0xA3, + 0x16, 0xFC, 0x7B, 0xD9, 0x98, 0x73, 0xEF, 0x74, 0x76, 0x0E, 0x51, 0x94, + 0xBC, 0x18, 0x71, 0xAB, 0x43, 0xA8, 0x27, 0xA1, 0x5D, 0x69, 0x23, 0xB5, + 0x5C, 0xFB, 0xFB, 0xD1, 0xBE, 0x59, 0x9C, 0x35, 0x1B, 0x5D, 0x49, 0x58, + 0xEB, 0x06, 0xFB, 0x0E, 0xFC, 0x3B, 0x4B, 0x47, 0xF9, 0x80, 0xD2, 0x50, + 0x97, 0xA1, 0xFB, 0x2F, 0x0D, 0x65, 0x7A, 0x30, 0xA3, 0x33, 0x04, 0x44, + 0x0B, 0x4A, 0x88, 0xEB, 0x59, 0x1A, 0xA5, 0x96, 0x8C, 0x09, 0x1E, 0x26, + 0x6A, 0x89, 0x74, 0x0C, 0x97, 0xDE, 0x51, 0x1C, 0x49, 0x16, 0x99, 0xDE, + 0x80, 0x95, 0xDA, 0x0B, 0xD6, 0x0B, 0x85, 0x83, 0x13, 0x70, 0xCC, 0x60, + 0xE3, 0x24, 0xDA, 0xB1, 0xE9, 0x8E, 0x29, 0x04, 0x68, 0xE7, 0x85, 0x0F, + 0x78, 0x9D, 0x69, 0x9A, 0x3A, 0xFC, 0x1B, 0x34, 0x65, 0x9D, 0x0D, 0x84, + 0xF5, 0x21, 0x30, 0xF6, 0xDF, 0x4E, 0xC5, 0xEB, 0x8C, 0x9A, 0x5F, 0x00, + 0xDE, 0x19, 0x2B, 0x1F, 0x7C, 0x86, 0x7D, 0x43, 0xA2, 0x43, 0xC5, 0xA9, + 0xDD, 0x84, 0x18, 0x90, 0xAB, 0x4C, 0xD3, 0x0B, 0x01, 0xA6, 0xCC, 0x04, + 0x24, 0xF0, 0x0C, 0x3A, 0x8B, 0x20, 0x36, 0x1C, 0xBF, 0x40, 0x5E, 0x1F, + 0x70, 0x7D, 0x69, 0xAA, 0xF6, 0xA8, 0x7B, 0x0F, 0x55, 0x4C, 0x63, 0xB8, + 0x28, 0x8B, 0x9F, 0xB1, 0xF9, 0x84, 0x20, 0x7C, 0xFD, 0x41, 0x94, 0xAA, + 0x92, 0xE0, 0x4E, 0x66, 0x7B, 0x4D, 0xBF, 0x96, 0xA3, 0xE9, 0x9B, 0xEC, + 0xD5, 0x75, 0x8B, 0x08, 0x8A, 0x1A, 0xFF, 0x0C, 0xF3, 0x9D, 0xFC, 0x92, + 0x61, 0x19, 0x41, 0x5A, 0x52, 0x5E, 0xC2, 0x91, 0xFE, 0xD8, 0x8F, 0xF2, + 0xD6, 0x0B, 0x73, 0x4B, 0x1F, 0x63, 0x30, 0xC5, 0x8E, 0x85, 0x8C, 0xE2, + 0xEA, 0xE1, 0xDC, 0xBC, 0xDA, 0xF7, 0xA1, 0xBA, 0x3F, 0xCC, 0xD7, 0xAC, + 0xF8, 0xAD, 0xB8, 0x53, 0x82, 0x3B, 0xD3, 0x69, 0xC1, 0xDD, 0xB7, 0xD5, + 0x89, 0x89, 0x50, 0xF7, 0x73, 0x56, 0xA7, 0xC5, 0x05, 0xB5, 0xEE, 0xE6, + 0x4A, 0x22, 0xF8, 0x33, 0xEB, 0xED, 0xF2, 0xDE, 0x73, 0x02, 0x95, 0x3C, + 0x0E, 0x4E, 0x5B, 0x0B, 0xE7, 0x6C, 0xF7, 0xE1, 0xF8, 0x67, 0x8A, 0xDF, + 0x41, 0x3F, 0xCC, 0x5E, 0x0C, 0xD6, 0x6E, 0x96, 0xBF, 0x95, 0x71, 0x4C, + 0x79, 0x7C, 0x3B, 0x88, 0x46, 0x73, 0x96, 0xA2, 0xDA, 0x6C, 0x71, 0xEC, + 0x54, 0x14, 0x79, 0x1E, 0x47, 0xF8, 0x94, 0x63, 0x28, 0x4A, 0xFB, 0xBB, + 0x82, 0x66, 0x91, 0x99, 0x0E, 0xBE, 0xBB, 0x33, 0x4D, 0x55, 0xE2, 0x08, + 0xCA, 0xE7, 0x52, 0x4A, 0xED, 0x64, 0xFF, 0xDD, 0xF7, 0xF9, 0xEA, 0x7D, + 0xD0, 0xBD, 0xB9, 0xAC, 0x62, 0x3B, 0xBC, 0xC6, 0x47, 0xEF, 0xEC, 0xA0, + 0x6D, 0x7D, 0x0F, 0xD8, 0xC6, 0x10, 0x90, 0x29, 0xCB, 0xF3, 0xA1, 0xC2, + 0x2B, 0x1D, 0xDD, 0x43, 0x6A, 0x49, 0xCB, 0x1F, 0x8C, 0x29, 0xC4, 0x4A, + 0xAB, 0xCB, 0xD3, 0x89, 0xF6, 0x24, 0x73, 0xA3, 0xA0, 0x5C, 0x9E, 0xE2, + 0x93, 0x2C, 0x18, 0x6A, 0xA1, 0x07, 0x5A, 0x77, 0xAA, 0x26, 0x38, 0x2C, + 0xF0, 0xA9, 0xFC, 0x6C, 0x94, 0xBE, 0xAF, 0x20, 0xCA, 0x8B, 0xB1, 0x7B, + 0x9A, 0x3A, 0xBD, 0x0B, 0xF5, 0x03, 0x73, 0x6D, 0x6F, 0x15, 0xB1, 0x8F, + 0x85, 0xDE, 0x24, 0x47, 0x94, 0x1B, 0x94, 0x25, 0xA5, 0x85, 0x31, 0x33, + 0x75, 0xA9, 0x0E, 0x16, 0x90, 0x12, 0x91, 0x72, 0x0F, 0x1E, 0x47, 0x7B, + 0x42, 0xB4, 0x99, 0x9E, 0xDA, 0xD8, 0xD9, 0xB4, 0x2C, 0xA4, 0x06, 0x05, + 0x2F, 0x83, 0xF6, 0xE7, 0x6D, 0x7A, 0x9E, 0x40, 0xCE, 0x91, 0x37, 0x6C, + 0x2A, 0x90, 0x87, 0x5D, 0x3E, 0xAA, 0xDB, 0x45, 0x55, 0xEC, 0x79, 0x03, + 0x03, 0x22, 0x3B, 0x61, 0x73, 0xBD, 0x53, 0xF3, 0x5A, 0x9B, 0xD4, 0xB4, + 0x0E, 0x2C, 0x68, 0x5F, 0x5D, 0x1B, 0xCC, 0xD6, 0x11, 0x7B, 0xA0, 0x4A, + 0xB6, 0xD0, 0x56, 0xD0, 0x26, 0xC1, 0xFE, 0x3B, 0x05, 0x20, 0x05, 0xC0, + 0xBA, 0xF4, 0xB7, 0x2B, 0x55, 0xE7, 0x69, 0x67, 0xB2, 0x7A, 0xB5, 0x59, + 0x78, 0xB4, 0x3E, 0x80, 0x08, 0x20, 0xD8, 0x75, 0x28, 0xF1, 0x21, 0xFE, + 0xA3, 0x86, 0xD1, 0x21, 0x76, 0x1F, 0xA6, 0x95, 0x60, 0xA7, 0x5E, 0xB5, + 0x68, 0x25, 0xB7, 0x02, 0x56, 0xDA, 0xF8, 0x6D, 0xE3, 0x79, 0x31, 0x63, + 0x76, 0xC4, 0x9B, 0x16, 0x08, 0xCA, 0xA8, 0xBA, 0xA0, 0x5A, 0x9A, 0x76, + 0x3D, 0x09, 0x80, 0x54, 0x89, 0x50, 0xFC, 0x4F, 0x04, 0x52, 0x2C, 0xAB, + 0x01, 0x3B, 0x52, 0xA7, 0x7E, 0x4F, 0x0C, 0x08, 0xE2, 0x18, 0x6F, 0xC6, + 0xDF, 0x77, 0x09, 0xE4, 0x21, 0x5E, 0xD7, 0xE2, 0x4A, 0x15, 0x1C, 0xB5, + 0xFD, 0x6F, 0x4D, 0xC6, 0xC8, 0x97, 0x26, 0x9F, 0x7C, 0x97, 0xE8, 0x05, + 0x4C, 0x89, 0xC3, 0xA6, 0x89, 0x38, 0x11, 0xAB, 0xEC, 0x7E, 0xF4, 0x4C, + 0xE1, 0x3A, 0x37, 0x24, 0x57, 0xD9, 0x93, 0xCE, 0x9E, 0xC8, 0x22, 0x78, + 0xBB, 0xDB, 0x35, 0x99, 0xFB, 0x82, 0xF4, 0x56, 0x3B, 0x4B, 0x72, 0xE3, + 0xF1, 0x48, 0xF3, 0xFE, 0x4B, 0x08, 0xAB, 0x33, 0xF7, 0x30, 0x57, 0xB1, + 0x9E, 0xF0, 0xE1, 0xCD, 0x11, 0x7D, 0xD2, 0x1B, 0x33, 0xE8, 0x22, 0xF2, + 0xA4, 0x90, 0xB7, 0xD1, 0xFA, 0xA9, 0xB3, 0x23, 0x0F, 0x0F, 0xF4, 0x56, + 0x9C, 0x15, 0x31, 0x59, 0x2C, 0x6F, 0xE4, 0xD6, 0x3A, 0xB4, 0x06, 0xCF, + 0x80, 0xDD, 0xAE, 0x6F, 0x9B, 0x54, 0x74, 0x31, 0x66, 0xF5, 0x1F, 0x41, + 0x0B, 0x4B, 0x19, 0x11, 0xA7, 0x7B, 0x58, 0x29, 0x96, 0x83, 0x44, 0x54, + 0x63, 0xAF, 0x09, 0x6B, 0xA4, 0xFE, 0x03, 0xCC, 0xA8, 0xCA, 0x4A, 0xDC, + 0xD9, 0x95, 0x56, 0xEB, 0x2E, 0x79, 0x7C, 0xCE, 0xDC, 0x14, 0x26, 0xF5, + 0x94, 0x9D, 0x9D, 0xD1, 0x95, 0x09, 0x8B, 0x2E, 0x21, 0xA0, 0x96, 0xC5, + 0x4E, 0x09, 0xA0, 0x35, 0x92, 0xAA, 0x95, 0x3C, 0x30, 0xE7, 0xC7, 0x6A, + 0x7B, 0xB1, 0x62, 0x01, 0x7D, 0x62, 0x78, 0x77, 0x62, 0xE6, 0x08, 0x63, + 0x77, 0x5E, 0xE1, 0x0A, 0xFD, 0xB5, 0x08, 0xE1, 0xED, 0x79, 0x27, 0xD9, + 0xB8, 0x1D, 0xB6, 0xBA, 0x3D, 0x6C, 0xA0, 0xB5, 0xA6, 0xE1, 0x92, 0x18, + 0x15, 0xC9, 0x25, 0x25, 0xF6, 0x21, 0x7A, 0x4E, 0x2E, 0x18, 0x08, 0x8D, + 0x54, 0x79, 0x35, 0xED, 0x76, 0x2F, 0x39, 0xB1, 0x38, 0x38, 0x9F, 0xB6, + 0xF4, 0x2D, 0xBF, 0x55, 0x64, 0x3F, 0xEB, 0x49, 0x17, 0x5D, 0xEC, 0x07, + 0xC1, 0x08, 0x4E, 0x75, 0xE7, 0xE8, 0xF7, 0xA3, 0xB5, 0x63, 0x01, 0x27, + 0xCF, 0xF5, 0x39, 0xDD, 0x65, 0x38, 0x4C, 0xD4, 0xE3, 0xAA, 0xAD, 0x55, + 0xD3, 0x3C, 0x6E, 0xC4, 0x99, 0x09, 0x3E, 0xD1, 0xA5, 0x0B, 0xEF, 0xF2, + 0x08, 0xA1, 0xBE, 0xD8, 0xE0, 0x7C, 0x58, 0xB9, 0x9E, 0x2E, 0x95, 0x4A, + 0xAA, 0x1D, 0xEE, 0xE3, 0x2F, 0x6A, 0xE2, 0x94, 0x70, 0xC4, 0x1C, 0x07, + 0xCC, 0x76, 0xE0, 0x40, 0xEA, 0x6D, 0xB4, 0x83, 0xA0, 0x6A, 0x97, 0x76, + 0x84, 0x11, 0x40, 0x9F, 0xCA, 0x18, 0x00, 0x6F, 0x7D, 0x07, 0xBE, 0xC9, + 0xFC, 0x2D, 0xD7, 0xAF, 0x60, 0x76, 0xC9, 0xD8, 0x28, 0xC2, 0xC8, 0xA8, + 0xD7, 0x60, 0x90, 0x64, 0x6C, 0xED, 0xEE, 0xFD, 0x2C, 0xD1, 0x3F, 0x35, + 0xD4, 0xCB, 0xA0, 0x34, 0xAA, 0xB0, 0x3A, 0x91, 0x07, 0x1B, 0xD4, 0xB5, + 0x33, 0xD2, 0xD3, 0x9D, 0x08, 0xCD, 0x45, 0x01, 0x83, 0x04, 0xB1, 0xE7, + 0x0C, 0x1A, 0x57, 0x9F, 0xBB, 0xED, 0x37, 0x46, 0xB1, 0x16, 0x87, 0x3C, + 0x20, 0xDE, 0x63, 0x10, 0xAF, 0x2D, 0x77, 0x71, 0x56, 0xEF, 0x7C, 0x14, + 0xD0, 0xE3, 0x1E, 0xFB, 0x1F, 0x77, 0x18, 0x1E, 0xA8, 0xD3, 0x40, 0xA7, + 0xD7, 0x1F, 0x36, 0x7D, 0x87, 0x1C, 0x42, 0xF6, 0x2F, 0x51, 0xAF, 0x69, + 0x2C, 0xCF, 0x79, 0x11, 0xD1, 0x17, 0x47, 0xD3, 0x44, 0x86, 0x9D, 0x2B, + 0x44, 0xA3, 0x74, 0x1C, 0x83, 0x75, 0xAB, 0xD1, 0xA5, 0xFE, 0x14, 0x0A, + 0x41, 0x76, 0x89, 0x1B, 0x08, 0x4F, 0x29, 0x30, 0x82, 0xD1, 0xFE, 0xD6, + 0x0B, 0x71, 0xCD, 0x2C, 0x8E, 0x31, 0x69, 0xAF, 0xD8, 0x67, 0xA6, 0x1A, + 0x8E, 0x2A, 0xD4, 0xF1, 0x83, 0xC3, 0xEC, 0x08, 0x76, 0x27, 0xA3, 0xB5, + 0xF6, 0x7B, 0xC2, 0x6F, 0xEA, 0xD0, 0x52, 0x6C, 0x6E, 0x2F, 0x18, 0xBB, + 0x23, 0x10, 0x3E, 0x7F, 0x37, 0x90, 0x89, 0x7E, 0xF4, 0xBA, 0x47, 0x09, + 0xCE, 0x80, 0x34, 0x5D, 0x20, 0x87, 0x1F, 0x76, 0x30, 0xBF, 0xC3, 0xFC, + 0x3C, 0xB3, 0x88, 0x89, 0xC9, 0x3D, 0xA4, 0xF4, 0xCE, 0x7E, 0x93, 0xA6, + 0x88, 0xFA, 0xAC, 0x32, 0x64, 0x19, 0x76, 0xE7, 0xE0, 0xAE, 0x4B, 0x4F, + 0xC3, 0xAC, 0x82, 0xD9, 0xDB, 0x3D, 0xBE, 0x3E, 0x58, 0x4B, 0xBF, 0xD0, + 0x17, 0x43, 0xEC, 0x17, 0xEA, 0xFA, 0xA9, 0x6F, 0x9A, 0x33, 0xC2, 0xB9, + 0xDC, 0xFF, 0x80, 0x14, 0x9D, 0xD6, 0xA1, 0x41, 0x7F, 0xFE, 0x08, 0x57, + 0x21, 0xD6, 0xEB, 0xED, 0xEF, 0xA2, 0xAD, 0x5D, 0x9E, 0xC5, 0x31, 0xC6, + 0xBE, 0x73, 0xB9, 0x7D, 0x58, 0x12, 0x28, 0x35, 0x0A, 0xB7, 0x56, 0x9A, + 0x23, 0x61, 0x0B, 0x3B, 0x8D, 0x20, 0x35, 0xC7, 0xBF, 0xB1, 0xCE, 0x33, + 0x28, 0xEC, 0x2F, 0x71, 0x49, 0xE1, 0x90, 0x36, 0x53, 0x9D, 0x19, 0xB1, + 0xBB, 0xFF, 0xF4, 0x50, 0x89, 0xE8, 0x69, 0x88, 0xAF, 0xB6, 0x58, 0x46, + 0xDF, 0x73, 0xEC, 0x5B, 0x82, 0xA6, 0xDC, 0x18, 0x71, 0x81, 0xE3, 0x03, + 0x25, 0x71, 0x0E, 0x0B, 0xB5, 0x63, 0x67, 0x1A, 0xD1, 0x13, 0x0A, 0xE5, + 0xFF, 0x4B, 0x97, 0xEA, 0xBB, 0x75, 0xD7, 0x31, 0xCD, 0x4B, 0x06, 0xBD, + 0x6E, 0xB1, 0xA1, 0xD9, 0x30, 0x52, 0x8F, 0xF4, 0x4C, 0x51, 0x16, 0x72, + 0x73, 0x81, 0x48, 0x88, 0x3F, 0x9B, 0x80, 0x40, 0xDD, 0xE7, 0xA4, 0x98, + 0xC3, 0xB6, 0x7A, 0xF9, 0x91, 0xA1, 0xB1, 0xBB, 0x1D, 0x16, 0x3D, 0x13, + 0xF9, 0x7D, 0xD9, 0x31, 0xE6, 0x19, 0x83, 0xCF, 0xA6, 0x59, 0xC9, 0x8F, + 0xF7, 0x1E, 0xA3, 0x9C, 0x2B, 0x65, 0x9D, 0x21, 0x5B, 0x7C, 0xA4, 0x4D, + 0x07, 0x24, 0x99, 0xA2, 0x51, 0xDF, 0x4D, 0x5F, 0xB6, 0xB0, 0x17, 0xAA, + 0xEF, 0x16, 0xAB, 0x45, 0xAA, 0xD2, 0xA0, 0xBC, 0x09, 0x1B, 0x9A, 0x3C, + 0x27, 0x86, 0xE0, 0xAD, 0x9E, 0xE4, 0x4D, 0x73, 0x09, 0x88, 0xCC, 0x55, + 0x2A, 0x8A, 0x33, 0x29, 0x84, 0xD1, 0x8D, 0xF6, 0xE6, 0xDF, 0x27, 0x70, + 0xA0, 0xD6, 0x5B, 0x31, 0xEE, 0x7E, 0x7A, 0x31, 0x87, 0xF2, 0xCC, 0x4C, + 0xBE, 0x63, 0xC1, 0x41, 0xC6, 0x39, 0xFA, 0x3B, 0x9A, 0x60, 0x05, 0x29, + 0xDF, 0x91, 0x9E, 0x3B, 0x7B, 0xDB, 0x8F, 0x6E, 0xFB, 0x0F, 0xF1, 0x20, + 0xC7, 0x08, 0x47, 0x2A, 0x14, 0xB4, 0x7C, 0x93, 0xEB, 0x63, 0xE3, 0x03, + 0xC7, 0x4D, 0x9F, 0x7D, 0x29, 0x7F, 0xC3, 0x03, 0x44, 0x89, 0x22, 0x8D, + 0x2D, 0xF1, 0x86, 0xCB, 0x28, 0xBE, 0x39, 0xAC, 0x16, 0xBB, 0x73, 0xB2, + 0x44, 0xC6, 0xA5, 0x63, 0x06, 0xE2, 0xED, 0x76, 0x95, 0x73, 0x02, 0xCE, + 0x6A, 0x7E, 0x55, 0x2D, 0x2A, 0x1D, 0x78, 0x30, 0x3B, 0x0A, 0xAB, 0x3A, + 0xDB, 0x21, 0xD8, 0x6D, 0xA4, 0xBE, 0xAD, 0x07, 0xD1, 0x08, 0xAC, 0x26, + 0xBC, 0x4F, 0x50, 0x31, 0xA2, 0xDA, 0x18, 0x75, 0xA2, 0xE9, 0x1D, 0x93, + 0xB6, 0x34, 0x01, 0xA5, 0xE9, 0xBE, 0x94, 0x7B, 0x33, 0x61, 0x7C, 0x71, + 0xE3, 0x72, 0x78, 0x45, 0x3D, 0x2A, 0x7A, 0x87, 0x5B, 0x8D, 0x4E, 0xF8, + 0x79, 0x01, 0xF6, 0x49, 0x5B, 0x9B, 0xBD, 0xB8, 0xC8, 0xAE, 0xBD, 0xC2, + 0x5D, 0x14, 0x8B, 0x51, 0x4F, 0x86, 0x56, 0xB2, 0xD8, 0xF5, 0x5C, 0x0F, + 0x38, 0xDC, 0x30, 0x15, 0x2B, 0x6A, 0x15, 0x98, 0x08, 0x23, 0x5A, 0xEA, + 0x1E, 0xCA, 0xC7, 0xAC, 0x74, 0x26, 0xD0, 0x7C, 0xC6, 0x75, 0x1A, 0x67, + 0x1E, 0xD3, 0xD3, 0x26, 0x9F, 0x82, 0x2E, 0x90, 0x5D, 0x50, 0xD1, 0x4F, + 0x2B, 0x79, 0x5C, 0xCE, 0x4A, 0x8F, 0x9F, 0xBB, 0x60, 0xD4, 0x21, 0x92, + 0x63, 0x3E, 0xBC, 0x77, 0x57, 0x0E, 0xC0, 0x56, 0x62, 0x6F, 0x47, 0x75, + 0x88, 0xF0, 0x87, 0xA3, 0xCC, 0x1F, 0x12, 0xCC, 0xA2, 0x0B, 0x74, 0x19, + 0xEE, 0xD6, 0x2F, 0x5C, 0x34, 0x06, 0x50, 0x7D, 0xBB, 0xB6, 0x21, 0xDB, + 0xB4, 0xB1, 0x8C, 0x88, 0x42, 0x8E, 0x3B, 0xBF, 0x89, 0x5F, 0x89, 0x77, + 0x5A, 0x46, 0xE4, 0x02, 0xE4, 0x48, 0xBB, 0xA9, 0x3F, 0x09, 0xAA, 0x1F, + 0x62, 0x98, 0xF8, 0xE6, 0xCD, 0x62, 0xCB, 0xF7, 0xD0, 0x1D, 0xA4, 0x7A, + 0x18, 0x0A, 0x0D, 0x44, 0x6C, 0x14, 0xDB, 0x97, 0x94, 0xCA, 0x98, 0x7F, + 0x60, 0x36, 0x1E, 0x13, 0x52, 0xE8, 0x7F, 0x18, 0xEE, 0x99, 0xFA, 0xCB, + 0x23, 0x5D, 0xB1, 0x2B, 0xA1, 0xFE, 0xD6, 0xB0, 0x77, 0x13, 0xE4, 0x55, + 0xCC, 0x56, 0xFA, 0x8E, 0x29, 0x25, 0xA9, 0xDF, 0x81, 0x58, 0xEE, 0xB6, + 0x3B, 0xC2, 0x29, 0xB4, 0x1E, 0x72, 0xCA, 0x55, 0xD3, 0x7B, 0xA6, 0xDD, + 0x48, 0x96, 0x3B, 0x76, 0x3A, 0x41, 0xF3, 0x2A, 0x94, 0x13, 0xF3, 0x51, + 0xC3, 0x00, 0x09, 0x4F, 0x88, 0xBA, 0x24, 0xD1, 0x14, 0x12, 0x14, 0x2D, + 0xC1, 0xAB, 0x3B, 0x21, 0x54, 0x8B, 0x4C, 0xDC, 0x17, 0x08, 0x1E, 0xE8, + 0x83, 0x4A, 0x3E, 0x25, 0x0E, 0x7B, 0xBC, 0xD5, 0xC7, 0xCA, 0x13, 0x31, + 0x1B, 0xD8, 0x8F, 0xE2, 0x4A, 0x23, 0x24, 0xA9, 0x69, 0xF4, 0x8E, 0x65, + 0xB2, 0xEF, 0xA1, 0x83, 0xFF, 0xBF, 0x01, 0xE7, 0x8B, 0xFC, 0xD1, 0x92, + 0x91, 0xCF, 0x3D, 0xB7, 0x49, 0x3B, 0xF5, 0x81, 0x54, 0xB1, 0xFF, 0xB6, + 0xD9, 0x2C, 0x31, 0xA1, 0xC0, 0x8F, 0x56, 0x54, 0x52, 0x5B, 0x7D, 0x80, + 0x61, 0x44, 0x44, 0x8C, 0xC4, 0xFA, 0x8E, 0x59, 0xDE, 0xA1, 0xC5, 0xFB, + 0xF7, 0x40, 0xE7, 0xD6, 0x06, 0x55, 0xC3, 0x19, 0x73, 0x21, 0xFD, 0x86, + 0x8C, 0x68, 0x1B, 0x37, 0x7A, 0xC9, 0xC4, 0x70, 0x07, 0x38, 0x15, 0x03, + 0xA7, 0x2A, 0xBD, 0x37, 0x8A, 0xD0, 0x63, 0x13, 0x66, 0xEA, 0x9D, 0x65, + 0x67, 0x87, 0x78, 0xE8, 0xD2, 0x7E, 0xDB, 0x90, 0xA2, 0xAC, 0x9F, 0xAC, + 0x7A, 0x81, 0xF1, 0x5F, 0x4C, 0x6C, 0x53, 0x0C, 0xD5, 0x9E, 0x64, 0x1D, + 0xD1, 0x85, 0x5D, 0x65, 0x54, 0x9C, 0xE5, 0x20, 0xF7, 0xE5, 0x9C, 0x03, + 0x29, 0x71, 0x9A, 0xE4, 0xC7, 0xD1, 0x91, 0x07, 0x66, 0x60, 0x89, 0x37, + 0xF9, 0x3F, 0x58, 0x7D, 0x07, 0x06, 0xCC, 0xEE, 0x05, 0x49, 0xEA, 0x50, + 0xD7, 0x4A, 0x76, 0x63, 0x16, 0x66, 0xE3, 0x1D, 0xDC, 0xCA, 0x3B, 0x0B, + 0x89, 0x4C, 0xF8, 0x04, 0xD2, 0x50, 0x62, 0x2C, 0x1B, 0x7E, 0x62, 0x8B, + 0x7B, 0x55, 0x68, 0x3F, 0xAC, 0xD0, 0x5E, 0xB4, 0xF8, 0x25, 0xE5, 0xEA, + 0x40, 0xA4, 0x06, 0x7B, 0xA3, 0xC6, 0x8B, 0xE1, 0x4A, 0x83, 0x4B, 0xCC, + 0x9C, 0xDA, 0x7C, 0x9F, 0xF6, 0xE7, 0x7A, 0xC2, 0xDD, 0x9E, 0x2F, 0xB4, + 0x3A, 0x07, 0xBA, 0x47, 0x83, 0x43, 0x79, 0xBE, 0x69, 0x19, 0x02, 0x48, + 0x03, 0x22, 0x10, 0xAE, 0x99, 0x80, 0xEE, 0xB0, 0xDE, 0xBA, 0xC1, 0x51, + 0x4B, 0xF4, 0x2E, 0x61, 0xB0, 0xF9, 0x1B, 0x88, 0x6D, 0x92, 0x8B, 0x36, + 0x30, 0x92, 0x32, 0x0A, 0xE8, 0xA5, 0x79, 0xAC, 0x27, 0x18, 0xE9, 0x67, + 0x4B, 0xBC, 0x12, 0xE5, 0xB3, 0x66, 0x19, 0xD8, 0xFC, 0x62, 0x55, 0xF0, + 0x59, 0xFB, 0x58, 0x57, 0x15, 0xB9, 0x15, 0x89, 0x32, 0xAA, 0xA1, 0x0F, + 0xC7, 0xD8, 0xFB, 0xD5, 0x6E, 0x94, 0xB8, 0xE3, 0xC7, 0x7B, 0x76, 0x25, + 0x0D, 0xB1, 0xD7, 0x2D, 0x26, 0x5E, 0xCA, 0x88, 0xA3, 0x96, 0xD8, 0x1C, + 0xBC, 0x31, 0x34, 0x6A, 0xBA, 0x99, 0x64, 0x51, 0xEF, 0x4C, 0xB4, 0x6A, + 0x06, 0xEB, 0x4F, 0x98, 0x95, 0x56, 0x75, 0x6F, 0x74, 0x86, 0x22, 0x53, + 0x9C, 0x0A, 0x1E, 0x4D, 0xF0, 0xB0, 0xD5, 0x1B, 0x85, 0x8F, 0xD6, 0x37, + 0xE1, 0x25, 0x66, 0x5E, 0xE9, 0x89, 0x8F, 0x51, 0x51, 0x8D, 0x76, 0x99, + 0xD7, 0xBC, 0x17, 0xEE, 0xF6, 0x6B, 0x3F, 0xCF, 0x56, 0x31, 0x50, 0x77, + 0x84, 0x1E, 0xFB, 0x4D, 0x5A, 0x35, 0xBE, 0xE3, 0xAF, 0x88, 0xC3, 0xAC, + 0x22, 0xDF, 0x56, 0x58, 0x34, 0x52, 0x8A, 0xCA, 0xE7, 0x9D, 0x76, 0xD4, + 0xB8, 0x86, 0xFB, 0xD9, 0xBD, 0x59, 0xEC, 0x84, 0x29, 0x06, 0x0E, 0x65, + 0x65, 0x18, 0x50, 0x57, 0xE5, 0xCC, 0xA2, 0xBB, 0x1A, 0x85, 0xF6, 0xFD, + 0xBA, 0x40, 0xA8, 0x1E, 0x52, 0xAD, 0x36, 0x12, 0xC7, 0xF1, 0x9B, 0xEA, + 0x50, 0xA0, 0xFA, 0x99, 0x54, 0xF5, 0xD0, 0xFA, 0xDA, 0xEC, 0x70, 0xC8, + 0x21, 0xA0, 0xEA, 0xEF, 0xC0, 0x51, 0x26, 0x3A, 0x13, 0xD6, 0x4C, 0x95, + 0xC5, 0x07, 0xA1, 0xA8, 0x3B, 0x63, 0x8A, 0x4E, 0xAE, 0xE8, 0xA4, 0x68, + 0x8E, 0xA3, 0x13, 0xD9, 0x13, 0xDF, 0xA2, 0xB3, 0xEF, 0x9F, 0x4E, 0x0D, + 0x00, 0xB2, 0xC2, 0x40, 0xBE, 0x0D, 0xD1, 0x59, 0x20, 0x1F, 0x27, 0x2D, + 0x99, 0xEE, 0x1D, 0x05, 0xD7, 0x7D, 0x2A, 0xA3, 0x86, 0x44, 0x54, 0x28, + 0x8A, 0x31, 0x1C, 0x66, 0xFB, 0x9F, 0x68, 0xE8, 0xCA, 0xEB, 0x74, 0x9A, + 0xAC, 0x77, 0x2F, 0xF4, 0xCF, 0x9D, 0x48, 0xA9, 0x8F, 0xB2, 0x9F, 0x74, + 0x9F, 0x75, 0xE3, 0x88, 0x42, 0xB1, 0x5F, 0x7C, 0xEE, 0xED, 0x7E, 0x5A, + 0xB0, 0x62, 0xCD, 0x2F, 0x95, 0x68, 0x2F, 0xF2, 0x58, 0x29, 0x8A, 0x22, + 0x31, 0xC8, 0x82, 0x75, 0x51, 0x9B, 0xF7, 0xE3, 0x59, 0x52, 0xD9, 0x5B, + 0xDE, 0x49, 0x54, 0x22, 0xD1, 0xF2, 0xF6, 0xB0, 0x0B, 0xB8, 0x4E, 0x08, + 0x43, 0xF9, 0xEA, 0x98, 0xB4, 0xE3, 0x10, 0xB7, 0x8B, 0x79, 0x2C, 0x86, + 0xAC, 0x75, 0x80, 0x6A, 0xC2, 0x18, 0x43, 0x06, 0x5E, 0xB9, 0x80, 0xA9, + 0x87, 0x02, 0x9A, 0xF5, 0x57, 0x73, 0xA2, 0x68, 0x49, 0x4E, 0xEF, 0x2D, + 0x48, 0x7F, 0x0B, 0x0C, 0x91, 0x35, 0x8A, 0x20, 0x7F, 0xB2, 0xD8, 0x7A, + 0x88, 0x70, 0xC3, 0xA7, 0x37, 0xC4, 0x68, 0x21, 0x3E, 0x55, 0x91, 0x88, + 0x07, 0x2C, 0x0F, 0xC6, 0xB3, 0x49, 0x7F, 0x85, 0xFB, 0xFF, 0x2D, 0x7E, + 0x78, 0x13, 0xB7, 0xD5, 0x69, 0x21, 0xB7, 0x7C, 0xAF, 0x20, 0x14, 0xFD, + 0xD9, 0x9C, 0xA8, 0xB2, 0x2F, 0xFE, 0x28, 0x8B, 0xF3, 0x66, 0xF0, 0xA5, + 0xED, 0x8E, 0x1B, 0x1C, 0xF8, 0x24, 0x67, 0xB7, 0xE6, 0x06, 0x33, 0xC6, + 0x60, 0x28, 0x6A, 0xE6, 0xB8, 0xA1, 0xCF, 0x9B, 0x15, 0x41, 0xA4, 0x7A, + 0x7F, 0xAD, 0xF4, 0x8A, 0x1F, 0xE1, 0x77, 0x07, 0x51, 0x66, 0x8C, 0x6B, + 0x35, 0x81, 0x60, 0x66, 0x8D, 0x58, 0xA1, 0xDF, 0xAA, 0x0C, 0x3B, 0x9A, + 0x70, 0x0F, 0x1F, 0x06, 0x67, 0xC2, 0x0C, 0x6E, 0xD1, 0xFC, 0x93, 0x5C, + 0xC7, 0x1F, 0x19, 0x59, 0x70, 0x6C, 0x5C, 0xC8, 0xFA, 0x9C, 0xFB, 0xB2, + 0x46, 0x98, 0x5F, 0x1F, 0x80, 0x7B, 0x8D, 0x16, 0x2D, 0x2A, 0x03, 0xF6, + 0x27, 0xCB, 0x11, 0xAE, 0x9D, 0xE5, 0x36, 0xDD, 0x20, 0x52, 0x53, 0xD7, + 0x66, 0x22, 0x4F, 0x51, 0xE1, 0x2B, 0x7E, 0xF1, 0x9A, 0xAC, 0xBC, 0x8A, + 0x6D, 0x78, 0x60, 0x62, 0x20, 0xB3, 0xA2, 0x1E, 0xA5, 0x68, 0x1A, 0x29, + 0x45, 0x25, 0x7E, 0xF8, 0x50, 0x62, 0xED, 0x4E, 0x06, 0x44, 0x2A, 0x79, + 0xF4, 0x52, 0xD0, 0x4F, 0x2C, 0x2F, 0xC6, 0xFF, 0x74, 0xE2, 0x5B, 0x13, + 0x4C, 0x99, 0xB5, 0x7D, 0x0D, 0x01, 0x66, 0x77, 0x3C, 0x74, 0x38, 0x11, + 0xFE, 0x1F, 0x31, 0xAA, 0xF4, 0xAF, 0x42, 0x7D, 0xC7, 0x62, 0xA1, 0xA2, + 0xBB, 0xFE, 0xE9, 0x89, 0x8F, 0x3D, 0x0B, 0xE4, 0xA0, 0x5B, 0xA1, 0x18, + 0x87, 0x36, 0xA0, 0x75, 0x06, 0xA8, 0x83, 0x00, 0xF3, 0x5B, 0x83, 0x3E, + 0x42, 0xFA, 0x09, 0x4C, 0x35, 0x27, 0xA7, 0xB0, 0x00, 0xDA, 0x8C, 0x8E, + 0x1A, 0x51, 0x9B, 0x5A, 0x8F, 0x05, 0x9A, 0xBD, 0xCB, 0x10, 0x12, 0x4D, + 0x17, 0xE5, 0x78, 0xDF, 0xE7, 0x49, 0x5D, 0xB0, 0x78, 0x5F, 0x44, 0xE1, + 0xDB, 0xE9, 0x84, 0xD9, 0x90, 0xAD, 0xBE, 0x86, 0x95, 0x81, 0xC1, 0xCD, + 0x1B, 0xD4, 0xCE, 0x6D, 0x5E, 0xB3, 0x52, 0xB1, 0x67, 0x5E, 0xF2, 0xE4, + 0xC5, 0xCB, 0x5C, 0xC6, 0x57, 0xBE, 0x1C, 0x0E, 0xDE, 0x7B, 0xD3, 0xB3, + 0x01, 0xDC, 0x1F, 0x11, 0x12, 0xFC, 0x62, 0x9B, 0xFD, 0xF8, 0x8C, 0xDC, + 0xE4, 0x35, 0x22, 0x61, 0x0E, 0xA0, 0x80, 0xF9, 0x48, 0xFC, 0x1C, 0x36, + 0x2A, 0x02, 0x4A, 0xDC, 0x55, 0xE2, 0x35, 0xC8, 0xB4, 0x2E, 0xED, 0x43, + 0x11, 0x31, 0x6C, 0xFB, 0x77, 0x68, 0x5E, 0xC6, 0x72, 0x37, 0x08, 0x5A, + 0xC4, 0x98, 0x23, 0x9E, 0x0A, 0xE3, 0x82, 0x1B, 0xCA, 0xDE, 0x3F, 0xBE, + 0xF0, 0x74, 0x6C, 0x9E, 0x16, 0x9B, 0x41, 0xC9, 0x79, 0xB9, 0x82, 0x9D, + 0x66, 0x60, 0x09, 0xBD, 0x46, 0x2F, 0xDC, 0xF8, 0xC9, 0xB8, 0x0B, 0xB6, + 0xEB, 0x30, 0xD1, 0xAD, 0x93, 0xB4, 0xE3, 0xD1, 0xE6, 0x35, 0xE1, 0x6B, + 0xC7, 0x49, 0x47, 0xAE, 0xF1, 0x7A, 0x7A, 0x2E, 0xAE, 0xF8, 0xEC, 0x5D, + 0x62, 0x67, 0xFD, 0x9D, 0x18, 0x74, 0xBA, 0xA6, 0xA8, 0xA8, 0x6E, 0xD8, + 0xBF, 0x24, 0xCA, 0x74, 0x51, 0xE1, 0x6A, 0x8B, 0xAC, 0x96, 0x43, 0xC5, + 0x75, 0x60, 0xAE, 0xA9, 0xCC, 0x89, 0x06, 0xA9, 0x6C, 0xEA, 0x47, 0x53, + 0x60, 0x21, 0x7A, 0x38, 0xD4, 0xE4, 0x8A, 0xE6, 0x86, 0xAB, 0x36, 0x39, + 0x2F, 0xEA, 0x08, 0xC1, 0x32, 0xDA, 0xA2, 0xC4, 0xD5, 0xB2, 0xC0, 0x12, + 0x37, 0x9E, 0xDC, 0xBA, 0xC4, 0xF6, 0x8D, 0xDF, 0xA1, 0x9A, 0x3B, 0x70, + 0xE9, 0x9F, 0x4E, 0xD1, 0xE1, 0x27, 0x52, 0x27, 0x69, 0x57, 0xFF, 0x63, + 0xF6, 0x68, 0xF5, 0xF1, 0x42, 0x31, 0xE5, 0x05, 0xD2, 0xB7, 0xB5, 0x21, + 0xB9, 0xCE, 0x5D, 0xD4, 0xBB, 0xFE, 0xC5, 0x09, 0x8E, 0x98, 0xAA, 0xE7, + 0x9D, 0xE4, 0x92, 0x42, 0x7C, 0x2F, 0xC2, 0xC8, 0x05, 0xE0, 0xF7, 0xC5, + 0xD5, 0xFA, 0xC7, 0x9E, 0x75, 0x32, 0x7A, 0x7C, 0x18, 0x08, 0xB8, 0x90, + 0xDE, 0x09, 0xF1, 0x15, 0xA5, 0x6F, 0xFC, 0xE2, 0xAD, 0x97, 0x9A, 0x63, + 0x55, 0xDB, 0x2E, 0x0A, 0xFC, 0x2C, 0x3B, 0xD0, 0x47, 0xC4, 0xF1, 0x06, + 0x32, 0xF0, 0x5D, 0xC9, 0xC9, 0x87, 0x13, 0xC0, 0x67, 0xC4, 0x8B, 0x76, + 0x80, 0x62, 0x60, 0xC9, 0x3B, 0x0C, 0x81, 0x51, 0x00, 0xFD, 0xF6, 0x9B, + 0xE4, 0xF9, 0xC1, 0x03, 0xBB, 0x0F, 0x5D, 0xE3, 0xAC, 0xE6, 0x1F, 0x49, + 0xB5, 0x3C, 0x3E, 0x60, 0xC7, 0xC5, 0xD3, 0xB8, 0xAF, 0x07, 0xDF, 0x60, + 0x4B, 0x19, 0xB5, 0x90, 0x33, 0x41, 0x61, 0x75, 0xDB, 0x50, 0xD4, 0xB6, + 0x63, 0xFA, 0xF9, 0x83, 0x06, 0xBC, 0x4E, 0xF2, 0x53, 0xF0, 0xDC, 0xB8, + 0xD5, 0x9B, 0x63, 0xEE, 0xF3, 0x92, 0x68, 0xBB, 0xCB, 0xC3, 0x08, 0x7E, + 0x12, 0x4A, 0x8A, 0x48, 0xF9, 0xED, 0xA7, 0x6A, 0xCE, 0xDE, 0x0D, 0x7A, + 0xED, 0x2E, 0xA4, 0x75, 0x6C, 0x94, 0xB3, 0x0A, 0xF1, 0x3E, 0xA4, 0xE6, + 0x8F, 0x34, 0x13, 0x0E, 0xC7, 0xCE, 0x6B, 0x82, 0x5D, 0xD3, 0xD2, 0x79, + 0x7B, 0x6F, 0xB5, 0x00, 0x8B, 0xD6, 0x47, 0x95, 0x98, 0xDD, 0x56, 0xBC, + 0x8C, 0x40, 0x3B, 0x5A, 0x65, 0x88, 0x9F, 0xF5, 0x6F, 0x96, 0x32, 0x40, + 0x31, 0xAC, 0x3F, 0x18, 0x22, 0xE2, 0xDB, 0xD1, 0xF7, 0xAD, 0x48, 0x20, + 0x31, 0x8D, 0x3F, 0xD0, 0xC9, 0x88, 0x7F, 0x94, 0x34, 0x69, 0xBC, 0xEE, + 0xB2, 0x5B, 0x42, 0x82, 0x31, 0xBC, 0x83, 0xBD, 0x2C, 0x5A, 0x57, 0x74, + 0x94, 0x29, 0xC4, 0xD0, 0x18, 0x8B, 0x2C, 0xAA, 0x09, 0x14, 0x99, 0x33, + 0xD0, 0xDA, 0xD8, 0xCD, 0xED, 0x75, 0xBD, 0x69, 0xAA, 0x34, 0xD8, 0x4B, + 0x3D, 0xC2, 0xC0, 0x69, 0x7F, 0x2F, 0x0B, 0xDE, 0x23, 0xEE, 0xB1, 0x7C, + 0xD8, 0x5A, 0x7C, 0x0C, 0x45, 0x89, 0x08, 0x21, 0xE4, 0x23, 0x99, 0x75, + 0xFC, 0x0C, 0xF1, 0x59, 0x19, 0x07, 0xA9, 0xA9, 0x5E, 0x48, 0xEB, 0xCD, + 0x10, 0x61, 0xC2, 0xEB, 0x60, 0x74, 0x34, 0x80, 0xC2, 0xAA, 0xEF, 0x35, + 0x55, 0x19, 0x8A, 0x95, 0xE4, 0x4A, 0x88, 0x9E, 0x70, 0x73, 0x17, 0xA5, + 0x75, 0xB6, 0xBC, 0x5E, 0x5E, 0xAC, 0x88, 0xA8, 0x4E, 0x54, 0x71, 0x4F, + 0xB8, 0x84, 0xC2, 0xA3, 0xB5, 0x9D, 0x6C, 0xA2, 0x9B, 0x6C, 0x6F, 0xA6, + 0xD8, 0xE6, 0x83, 0x5D, 0xC3, 0x01, 0x2F, 0xB5, 0xE0, 0xFF, 0x62, 0x52, + 0xD4, 0x71, 0x8D, 0x2D, 0x72, 0x57, 0xF9, 0x90, 0xA7, 0x76, 0x3D, 0x47, + 0x76, 0xDE, 0x7E, 0x1B, 0xFB, 0xA4, 0x44, 0x7A, 0xE1, 0xBC, 0xB9, 0x72, + 0x3C, 0x42, 0xC6, 0x26, 0x0F, 0x70, 0xF1, 0xA6, 0x58, 0x91, 0xB1, 0xE7, + 0xA1, 0x70, 0x13, 0x75, 0xFE, 0x2C, 0xC2, 0x11, 0x48, 0x19, 0x72, 0xDF, + 0xD2, 0x1E, 0x5A, 0x35, 0xC9, 0x2B, 0xE6, 0x8E, 0xC6, 0x10, 0x9E, 0x6F, + 0x67, 0xCF, 0x40, 0xB8, 0x7D, 0x60, 0x8A, 0xD9, 0x09, 0x59, 0xFD, 0x04, + 0x51, 0xEB, 0xE7, 0x18, 0x8A, 0x77, 0x2C, 0x94, 0xA3, 0xA2, 0x82, 0xF2, + 0x50, 0xA6, 0xD9, 0x9C, 0x55, 0x65, 0x94, 0xE9, 0x67, 0xC4, 0xE1, 0x34, + 0x04, 0x22, 0x3F, 0x50, 0xAB, 0x1F, 0x0B, 0x94, 0xCC, 0x51, 0x35, 0x28, + 0xF9, 0x88, 0xA0, 0xA0, 0xA3, 0xF1, 0x97, 0x00, 0xC2, 0x9C, 0x35, 0x01, + 0xC1, 0x1B, 0x01, 0x49, 0x44, 0x4C, 0x06, 0xC9, 0x35, 0xA2, 0xEA, 0x93, + 0x26, 0xF0, 0xCA, 0x07, 0x7E, 0x1E, 0xBB, 0xCB, 0x03, 0x27, 0x35, 0x2D, + 0xF1, 0xE0, 0x15, 0x1D, 0xBE, 0xCE, 0x89, 0x3A, 0x65, 0xDA, 0x5B, 0xB8, + 0x3C, 0xF7, 0xF1, 0x3C, 0xDC, 0xFA, 0xAA, 0xD0, 0x43, 0x72, 0x73, 0x94, + 0x72, 0xD2, 0x10, 0x82, 0x32, 0x10, 0xB6, 0x05, 0x25, 0x16, 0x25, 0xD2, + 0x10, 0x73, 0xFD, 0x97, 0x7B, 0x7D, 0x31, 0x25, 0x89, 0x26, 0x83, 0xF8, + 0x78, 0x1B, 0x32, 0xFF, 0x35, 0x19, 0x91, 0x68, 0x3F, 0x1F, 0x78, 0x38, + 0x83, 0xA0, 0x49, 0x63, 0x4F, 0x70, 0x04, 0xAD, 0x57, 0xBC, 0x9D, 0x6F, + 0xBE, 0xDA, 0x56, 0xD1, 0xFF, 0xC2, 0x25, 0xA1, 0xF5, 0x39, 0xB3, 0xA8, + 0x69, 0x0A, 0xD2, 0xB1, 0xA0, 0x4F, 0x16, 0xB3, 0x15, 0xF4, 0xDD, 0x59, + 0x8C, 0xD3, 0x56, 0xDF, 0x11, 0x50, 0x33, 0x6D, 0x15, 0xB9, 0xCC, 0x89, + 0xC9, 0x81, 0xC2, 0x7A, 0xCD, 0x1F, 0x04, 0x17, 0xDB, 0x2B, 0x80, 0xFA, + 0xC8, 0x00, 0x94, 0xB1, 0x41, 0x42, 0xA8, 0x0F, 0x6D, 0x72, 0xCB, 0xA9, + 0xBA, 0xBC, 0x19, 0x5E, 0x42, 0x70, 0x94, 0x1B, 0xA4, 0x16, 0x86, 0x04, + 0xF7, 0x06, 0x6E, 0xC2, 0x4A, 0xBE, 0xD5, 0x27, 0x2A, 0x61, 0x1F, 0x56, + 0x34, 0x31, 0x8D, 0x59, 0x57, 0x2B, 0x86, 0x01, 0xC3, 0x94, 0x62, 0x8A, + 0x9C, 0x18, 0xB5, 0xDD, 0x52, 0xBC, 0x85, 0xB5, 0x09, 0x25, 0xBC, 0x36, + 0x05, 0x3F, 0xE4, 0xA8, 0xC9, 0x4A, 0xA1, 0x7C, 0xEB, 0xC1, 0x12, 0x64, + 0x05, 0xD4, 0x6A, 0x2D, 0x41, 0xBC, 0xC3, 0xF5, 0x57, 0x00, 0x4A, 0xB0, + 0xFF, 0xD3, 0xD2, 0x51, 0x76, 0x71, 0x0E, 0xC4, 0x78, 0x01, 0xD8, 0xC1, + 0xCA, 0xA4, 0x1B, 0xBB, 0xB5, 0x99, 0x50, 0xC7, 0xB9, 0xCD, 0x74, 0xAB, + 0x09, 0x89, 0x07, 0x54, 0x3A, 0xEA, 0x76, 0xA5, 0xA7, 0xE9, 0x96, 0x3D, + 0x8A, 0xFE, 0x24, 0x46, 0x7A, 0x4F, 0x57, 0x8B, 0x6D, 0x5B, 0xB2, 0x12, + 0xCA, 0x09, 0x7B, 0x45, 0x4D, 0xC1, 0x03, 0x7A, 0x27, 0xFB, 0x2C, 0xE2, + 0x95, 0xC6, 0x17, 0x46, 0x7B, 0x48, 0xFB, 0x8F, 0x78, 0x5B, 0xC8, 0x3E, + 0x54, 0x51, 0x99, 0x71, 0xE3, 0xC7, 0x92, 0xED, 0x99, 0xB4, 0x8A, 0x98, + 0x86, 0xA8, 0x91, 0x1D, 0x36, 0xB6, 0xB2, 0xC7, 0x9C, 0xD6, 0x68, 0x4D, + 0x45, 0x9B, 0x4D, 0x37, 0xB5, 0xA0, 0xCE, 0x30, 0x00, 0x13, 0x5A, 0x49, + 0xE4, 0x52, 0x45, 0x7D, 0x30, 0xEA, 0x74, 0xBE, 0xEE, 0x41, 0x43, 0xBC, + 0xB5, 0xC9, 0x0C, 0x40, 0x7F, 0x75, 0xC6, 0x57, 0x56, 0x9A, 0x90, 0xF6, + 0x56, 0x35, 0x83, 0x99, 0x80, 0x08, 0x69, 0x08, 0xB2, 0x59, 0x9F, 0x79, + 0x51, 0x5D, 0x9A, 0xE1, 0xCA, 0x16, 0x17, 0x28, 0xFE, 0x2B, 0xD1, 0x9F, + 0x1B, 0x25, 0x62, 0xC0, 0x5A, 0xF6, 0x26, 0x11, 0x6E, 0xD7, 0xE1, 0xBA, + 0x5C, 0xB8, 0x04, 0x7A, 0x55, 0xD3, 0x16, 0x59, 0x5C, 0x37, 0x26, 0xD0, + 0xB6, 0x09, 0xED, 0x57, 0x88, 0x56, 0x21, 0x5C, 0x91, 0xB6, 0xEB, 0xE4, + 0xC2, 0x70, 0x8D, 0x2F, 0x5A, 0x9F, 0x07, 0x5B, 0x57, 0x38, 0x9E, 0x3A, + 0x49, 0xDF, 0x67, 0x18, 0xA5, 0x50, 0x90, 0xDC, 0xBD, 0xA1, 0xA6, 0xE5, + 0x33, 0x25, 0xD7, 0xA0, 0x25, 0x71, 0x63, 0xD3, 0x8B, 0x89, 0xE2, 0xC0, + 0xC5, 0xC8, 0x51, 0xF1, 0x9B, 0x23, 0xD7, 0x35, 0xAC, 0x04, 0xD6, 0x8B, + 0x5A, 0xDF, 0x9A, 0x9D, 0x98, 0x5E, 0x5B, 0xD0, 0x2B, 0x28, 0xDF, 0x89, + 0x1B, 0x85, 0xC5, 0xB2, 0xDD, 0x43, 0xEF, 0x14, 0x99, 0x74, 0x8B, 0xAB, + 0x49, 0x45, 0xA7, 0x57, 0xBF, 0xCD, 0x7E, 0x80, 0xDF, 0x0C, 0x1B, 0x05, + 0xB2, 0x1E, 0xD0, 0xFD, 0x72, 0x3E, 0x25, 0xD2, 0xE1, 0x0B, 0x1C, 0x17, + 0x6C, 0x5B, 0x61, 0xC0, 0x84, 0xCD, 0xFA, 0xB6, 0x07, 0x0A, 0xBE, 0x2B, + 0xF7, 0x3E, 0xEA, 0x2B, 0x0B, 0x52, 0x33, 0x0A, 0x37, 0xC3, 0x48, 0x0A, + 0x93, 0x9C, 0xF7, 0x52, 0x45, 0x9B, 0xE5, 0x04, 0xED, 0x3B, 0x5A, 0xFF, + 0x8E, 0x4A, 0xFE, 0xD5, 0x76, 0x04, 0xED, 0xA2, 0xAE, 0x36, 0x6A, 0xCC, + 0x62, 0x7F, 0xB2, 0xBE, 0x3A, 0x30, 0x02, 0x59, 0xF3, 0x2F, 0xDF, 0x94, + 0x0D, 0x03, 0x22, 0xB6, 0x65, 0xDF, 0x26, 0x8A, 0xCE, 0x9F, 0x32, 0x4B, + 0x8D, 0x4E, 0x3B, 0x37, 0x24, 0x00, 0x0F, 0xB7, 0xF4, 0x4B, 0x2F, 0x0B, + 0xF9, 0x94, 0x14, 0x41, 0x94, 0xD0, 0x66, 0x80, 0x66, 0x9F, 0x04, 0x74, + 0xB8, 0x90, 0x35, 0xEE, 0xCC, 0x4B, 0xA7, 0xD4, 0x42, 0x7D, 0xD6, 0x23, + 0x3C, 0x2A, 0x8A, 0xB6, 0xAC, 0x19, 0x92, 0x37, 0xD9, 0x46, 0xDF, 0xE1, + 0x75, 0x2D, 0x05, 0x02, 0xB1, 0xCA, 0x34, 0x34, 0x1B, 0xB4, 0x67, 0x1F, + 0x56, 0xBD, 0x55, 0xCD, 0xEC, 0x9E, 0x3D, 0x4E, 0x83, 0x90, 0x5D, 0x66, + 0xBA, 0xA6, 0x76, 0x7E, 0x2E, 0xAA, 0x92, 0xD2, 0x80, 0xC5, 0x25, 0x0D, + 0x91, 0xF5, 0x9B, 0x54, 0x6F, 0x05, 0xCE, 0xE3, 0x4A, 0x55, 0xCB, 0xA6, + 0xDD, 0x4C, 0x91, 0x92, 0xA0, 0x1C, 0x83, 0xBD, 0x28, 0x05, 0xB9, 0xFC, + 0x75, 0x42, 0xEF, 0xB1, 0x7D, 0x2A, 0x17, 0x3E, 0x7A, 0xB3, 0xB5, 0xCB, + 0xD9, 0x43, 0x0F, 0xAD, 0x4D, 0x36, 0x70, 0x4E, 0x39, 0x3C, 0x91, 0xF6, + 0x05, 0xDB, 0x0A, 0x43, 0xDC, 0x5B, 0xAF, 0x4C, 0x34, 0x72, 0x9B, 0xF1, + 0x2D, 0x89, 0x0F, 0x85, 0x1C, 0x90, 0x8B, 0x90, 0x84, 0xCC, 0x1D, 0xD0, + 0xAE, 0xF6, 0x58, 0x20, 0x38, 0xE9, 0x44, 0x16, 0xB6, 0xCB, 0x90, 0x5C, + 0x76, 0x91, 0xB7, 0x1B, 0x15, 0xB6, 0xEF, 0xB1, 0x31, 0xAE, 0xD0, 0x9E, + 0x78, 0x37, 0xBC, 0x69, 0x3B, 0x2C, 0x22, 0x89, 0x10, 0xE5, 0xBF, 0xA5, + 0xAA, 0x32, 0x0F, 0x5F, 0xED, 0x7A, 0x85, 0xC2, 0x25, 0x0E, 0x8C, 0x8D, + 0xEB, 0x8D, 0xE7, 0x33, 0x84, 0x9B, 0x47, 0xC5, 0xD6, 0x49, 0xAB, 0x1D, + 0xA1, 0x0A, 0x84, 0x14, 0x1A, 0x90, 0xD8, 0x11, 0x78, 0x4A, 0x1A, 0x01, + 0xE2, 0x27, 0xC9, 0x49, 0x61, 0x82, 0x62, 0xA2, 0xE0, 0xE4, 0xDF, 0x99, + 0xC5, 0x5A, 0x7B, 0x54, 0x7B, 0x77, 0xC9, 0xF8, 0xA4, 0xB5, 0xA2, 0xA0, + 0x09, 0x42, 0x9F, 0x47, 0x82, 0x6C, 0x79, 0xED, 0x5F, 0x79, 0xBD, 0x0C, + 0x73, 0x84, 0x88, 0x05, 0x16, 0x17, 0x08, 0x9D, 0x3C, 0xCA, 0xCB, 0x55, + 0xD4, 0x14, 0x16, 0xD3, 0x83, 0xAE, 0x39, 0x1D, 0x3D, 0x19, 0x51, 0x1A, + 0x45, 0x32, 0x19, 0xA0, 0xF0, 0xC0, 0xB0, 0x27, 0x4D, 0xC6, 0x6F, 0x75, + 0x52, 0x59, 0x14, 0x50, 0xF7, 0xDF, 0x6A, 0x51, 0xE5, 0xB0, 0xDC, 0xE8, + 0x27, 0x2E, 0x49, 0x7A, 0x53, 0x96, 0x2C, 0x28, 0x9A, 0x65, 0x75, 0x65, + 0xBE, 0x35, 0x1B, 0x6D, 0x1C, 0x90, 0xCA, 0x80, 0x42, 0xBF, 0xA4, 0x45, + 0xA2, 0x5C, 0x93, 0xFC, 0xB5, 0x63, 0x30, 0xB2, 0xA7, 0x7B, 0x20, 0x3F, + 0x0F, 0x5E, 0xE1, 0x41, 0x61, 0x79, 0xBC, 0xB1, 0x07, 0x69, 0x2F, 0xA9, + 0x48, 0x99, 0xEE, 0xD3, 0x46, 0xFF, 0x51, 0x54, 0x31, 0xB5, 0xC1, 0xCE, + 0x87, 0x20, 0xB9, 0x0F, 0x47, 0x77, 0x46, 0xB3, 0x57, 0xAD, 0x3C, 0x1E, + 0x03, 0xD0, 0xA5, 0x3D, 0x66, 0xB3, 0xC5, 0x28, 0x2E, 0x06, 0xF6, 0x02, + 0x49, 0x9D, 0xF9, 0xF5, 0x29, 0x69, 0xF8, 0x16, 0x0A, 0x2F, 0xB7, 0xCD, + 0xE8, 0xDB, 0x5F, 0xA2, 0x12, 0xAB, 0x7C, 0x09, 0x24, 0x81, 0x9C, 0x04, + 0x27, 0x51, 0x66, 0x4D, 0xDC, 0xE5, 0x24, 0xE9, 0xE4, 0x53, 0xA9, 0x8B, + 0x41, 0x25, 0x47, 0x2B, 0x2B, 0xC6, 0xA0, 0x41, 0x81, 0xEB, 0xD1, 0xC6, + 0xB3, 0x77, 0x97, 0x90, 0x25, 0x15, 0xFA, 0xB2, 0x37, 0x9F, 0xE4, 0xE3, + 0xB2, 0x11, 0xEB, 0xF2, 0x72, 0x62, 0xC6, 0x8A, 0x00, 0xF3, 0x99, 0x83, + 0x11, 0x26, 0x64, 0x82, 0xA6, 0xA2, 0x8B, 0xF2, 0xB0, 0xCE, 0xAE, 0x49, + 0xE1, 0x16, 0xC1, 0x6F, 0x81, 0x89, 0x61, 0x6F, 0x9E, 0x0A, 0x07, 0xB3, + 0xDB, 0x62, 0x45, 0xEF, 0x54, 0x6C, 0x9F, 0x95, 0xC5, 0x50, 0xEF, 0xD7, + 0x81, 0x0B, 0x8F, 0x67, 0x15, 0xE4, 0xDF, 0xC6, 0xFB, 0xD5, 0x17, 0x8F, + 0x90, 0x27, 0xE5, 0x3B, 0x86, 0xF4, 0xBC, 0xF1, 0x9D, 0x1D, 0x07, 0xB1, + 0x3D, 0x45, 0xE4, 0x62, 0x76, 0x6B, 0xFC, 0x2C, 0xE5, 0x31, 0x7E, 0x1D, + 0x66, 0x0B, 0x85, 0x27, 0x80, 0xF8, 0xCB, 0xB8, 0x2A, 0xA4, 0x23, 0x4B, + 0x3D, 0xB7, 0xE3, 0x10, 0x4D, 0xB8, 0xD1, 0xA9, 0x10, 0x33, 0x84, 0xF1, + 0x07, 0x28, 0xE0, 0x89, 0x4D, 0x9C, 0x4F, 0xA3, 0x84, 0xFA, 0x30, 0xBC, + 0x38, 0x72, 0x91, 0x59, 0xD5, 0x66, 0x49, 0x2E, 0x62, 0x69, 0x7A, 0x6E, + 0xCB, 0x3F, 0x18, 0x9A, 0x24, 0x8A, 0x8A, 0x72, 0x1E, 0x2F, 0xF5, 0xD5, + 0x23, 0x5D, 0x85, 0x58, 0x22, 0x1D, 0x23, 0x44, 0x82, 0x94, 0x85, 0x66, + 0x07, 0x4C, 0x1C, 0x85, 0xF8, 0x1C, 0x28, 0x0A, 0x09, 0x39, 0x79, 0xFF, + 0xCC, 0xF0, 0x20, 0x84, 0xCA, 0x88, 0x77, 0x8F, 0xC3, 0x58, 0x56, 0xDD, + 0xB9, 0x06, 0x1C, 0x0D, 0xFB, 0x9B, 0x10, 0xE1, 0xDB, 0x23, 0x84, 0xF0, + 0xB0, 0x76, 0xC0, 0x0C, 0xF8, 0x28, 0x13, 0xE7, 0x4E, 0xDD, 0xC3, 0x1A, + 0xBD, 0x9F, 0x5B, 0x47, 0xEC, 0x22, 0x01, 0x0A, 0x8E, 0xFC, 0x4A, 0x36, + 0xF7, 0xC6, 0xFC, 0x33, 0x1E, 0x29, 0xBB, 0x34, 0xD0, 0xA9, 0x9A, 0x57, + 0x17, 0x8E, 0x02, 0x1C, 0x44, 0xB8, 0x33, 0x24, 0xD6, 0x8D, 0xB6, 0x3F, + 0xDB, 0x1B, 0xAD, 0xC5, 0x5A, 0x98, 0x88, 0xE6, 0x7D, 0x9C, 0x2F, 0xE7, + 0x0E, 0x14, 0xD3, 0xA1, 0x9A, 0x98, 0xB8, 0x54, 0xE2, 0x90, 0x97, 0x5E, + 0x48, 0xDE, 0xCF, 0x3B, 0x4F, 0x57, 0x92, 0x66, 0x2D, 0xB4, 0xA7, 0x71, + 0x4D, 0x08, 0xB7, 0xA3, 0xF1, 0x5A, 0xAA, 0x7E, 0xAD, 0xAD, 0xAC, 0xD2, + 0xBD, 0x27, 0x41, 0x51, 0xC1, 0xEA, 0x4F, 0xE0, 0x0D, 0xC7, 0x3B, 0x20, + 0x84, 0x18, 0x7B, 0xBB, 0x78, 0xB7, 0xCB, 0x6E, 0x5B, 0x83, 0xBF, 0x59, + 0x72, 0x2F, 0x74, 0x32, 0xA6, 0x55, 0x81, 0x6B, 0xFA, 0xE0, 0xA7, 0x68, + 0x0D, 0xB5, 0xCF, 0x02, 0xCB, 0xDD, 0xF0, 0x69, 0xB1, 0x74, 0x4A, 0x53, + 0x77, 0xF7, 0xD1, 0xC2, 0xCE, 0x2A, 0x59, 0xFD, 0x01, 0xBD, 0xD9, 0x50, + 0x3E, 0xC4, 0xE6, 0xE0, 0x0C, 0x62, 0x44, 0x64, 0xEE, 0x70, 0x9F, 0x69, + 0x81, 0x0D, 0xCE, 0x42, 0x87, 0x3A, 0xF2, 0x3A, 0x6B, 0x78, 0xDA, 0x42, + 0x99, 0x33, 0xC9, 0xEB, 0x3B, 0x9C, 0xED, 0x3B, 0xC7, 0xF2, 0x65, 0xD1, + 0x32, 0xB2, 0x3F, 0x9D, 0x80, 0xEC, 0xAC, 0x7D, 0x04, 0xF1, 0xE9, 0xBA, + 0x52, 0x4A, 0x74, 0x70, 0x8C, 0xCF, 0xB1, 0xB9, 0x91, 0x8C, 0x4F, 0x12, + 0x0D, 0xC2, 0x7A, 0x2F, 0xB8, 0x86, 0xF2, 0x9B, 0x4D, 0x58, 0xE0, 0xA0, + 0x2E, 0xEA, 0x82, 0x17, 0xC1, 0x7E, 0x48, 0xBE, 0x56, 0xA5, 0xC7, 0xB9, + 0x88, 0xF5, 0x26, 0xA6, 0xC1, 0x60, 0x83, 0xBC, 0x40, 0x7C, 0x36, 0x2B, + 0x32, 0x57, 0x25, 0xBE, 0x88, 0x38, 0x2B, 0x8D, 0xBE, 0xA0, 0xE0, 0x64, + 0x0D, 0x06, 0x2C, 0xD5, 0x88, 0x31, 0xCC, 0x79, 0x49, 0x81, 0x19, 0xE5, + 0x36, 0x43, 0x3D, 0x74, 0xA3, 0x20, 0x59, 0x3C, 0xFD, 0x5B, 0x5C, 0x35, + 0x4D, 0xF1, 0x90, 0x26, 0x8A, 0x06, 0xB5, 0x76, 0x87, 0x1D, 0xC6, 0x7D, + 0x93, 0x8A, 0x35, 0x62, 0x12, 0x23, 0x7E, 0xD7, 0x33, 0x4C, 0x73, 0xEB, + 0x01, 0x6D, 0xCB, 0xAF, 0xE5, 0xF2, 0x5D, 0x6C, 0x48, 0x73, 0x8E, 0x78, + 0xA6, 0xA1, 0x11, 0xAC, 0x91, 0xA1, 0x6D, 0x13, 0xAE, 0x2B, 0xA7, 0x7B, + 0x03, 0xDA, 0x16, 0x7A, 0xE3, 0x6A, 0x53, 0xF1, 0x82, 0x1F, 0xD0, 0x29, + 0xA6, 0x99, 0xB0, 0xC1, 0x1A, 0x28, 0xBC, 0x08, 0xC7, 0x6C, 0x3E, 0xD8, + 0x3B, 0x7D, 0x31, 0x4F, 0xB9, 0xCC, 0x1F, 0x8F, 0x06, 0x85, 0xDE, 0x97, + 0xBD, 0x7A, 0x02, 0xA4, 0x16, 0x0E, 0x8F, 0xF2, 0x61, 0xAE, 0x02, 0xA2, + 0x43, 0x84, 0xE0, 0x9E, 0x1E, 0xA9, 0xDB, 0xF0, 0x7A, 0xC3, 0xA0, 0xDD, + 0x93, 0xE9, 0x84, 0x8D, 0xC3, 0x79, 0x9C, 0xE5, 0x68, 0xBC, 0x63, 0xB8, + 0x82, 0xA0, 0x94, 0x7D, 0x7F, 0x5B, 0x73, 0x13, 0x0B, 0x7A, 0x46, 0xBE, + 0xEF, 0x70, 0x64, 0xB9, 0x26, 0xB0, 0x86, 0xBB, 0x33, 0x8A, 0xCC, 0x81, + 0x04, 0x8E, 0x62, 0x7A, 0x34, 0xFA, 0x25, 0x14, 0x0F, 0x0A, 0xD4, 0x0B, + 0xCF, 0xD6, 0x92, 0x05, 0x88, 0x2C, 0x2D, 0x26, 0xDF, 0x08, 0xD6, 0x19, + 0x6A, 0xAB, 0x74, 0x2C, 0xB0, 0x08, 0x6B, 0xAB, 0x87, 0xEA, 0x6A, 0x48, + 0xB8, 0x73, 0xB6, 0x16, 0x30, 0x33, 0xE7, 0x4B, 0x81, 0xBD, 0xEE, 0x67, + 0x31, 0x83, 0x4B, 0xCF, 0x83, 0x22, 0x05, 0x8A, 0x81, 0xEB, 0xFA, 0x75, + 0xBB, 0x54, 0x8E, 0x78, 0x5B, 0x76, 0x70, 0x3F, 0x7D, 0x3F, 0xAA, 0x6C, + 0x69, 0x7F, 0x19, 0x68, 0xB3, 0x68, 0x51, 0xD1, 0x61, 0xD5, 0x3C, 0x2C, + 0x6B, 0xC5, 0x96, 0xE0, 0xDA, 0x26, 0x63, 0xC5, 0x0E, 0xA1, 0xF5, 0x59, + 0xD5, 0x78, 0x87, 0x81, 0xEF, 0x87, 0x01, 0x88, 0xD4, 0xE1, 0xBD, 0xB8, + 0x96, 0x1D, 0x5D, 0x85, 0x1C, 0x6F, 0x53, 0xED, 0x6A, 0x6A, 0xC0, 0x2A, + 0xB2, 0xF1, 0x6C, 0x7A, 0x92, 0xF5, 0x70, 0x6D, 0x94, 0xD5, 0x87, 0x57, + 0xE3, 0x26, 0xCD, 0xDA, 0x52, 0x5C, 0x22, 0x03, 0xBD, 0xF6, 0x60, 0xA6, + 0xC9, 0x64, 0xF0, 0xC6, 0x11, 0xA4, 0x96, 0xB1, 0x27, 0x8B, 0x8E, 0x99, + 0x3E, 0xC2, 0xC1, 0x43, 0xD4, 0x10, 0x7D, 0xCC, 0x9F, 0xE4, 0x7C, 0xA6, + 0x10, 0x1E, 0xE5, 0x59, 0x37, 0x58, 0xF0, 0xB3, 0xF6, 0x4F, 0x8B, 0x41, + 0xDB, 0x65, 0x01, 0xDD, 0xE3, 0xAB, 0xBD, 0x4C, 0x4C, 0x69, 0x2B, 0x82, + 0xBA, 0x80, 0xDE, 0x9E, 0x4D, 0xAC, 0x86, 0xDF, 0x34, 0xDB, 0xDF, 0x1C, + 0xBA, 0x25, 0x03, 0xD0, 0x5E, 0x29, 0x29, 0x4E, 0xFC, 0xF6, 0xC0, 0x10, + 0x03, 0xCA, 0xB0, 0xA3, 0x22, 0xB0, 0x46, 0xAA, 0xC3, 0xBB, 0xF1, 0xC6, + 0x7C, 0xB1, 0xC2, 0x70, 0xCD, 0xAC, 0xE0, 0x6B, 0xDD, 0x14, 0xEC, 0xAD, + 0x80, 0x09, 0xF9, 0xBD, 0x1F, 0x4A, 0xD7, 0x20, 0xFA, 0x15, 0xCF, 0xDD, + 0xE5, 0x65, 0x2A, 0x06, 0xBD, 0x88, 0xC0, 0x12, 0x74, 0xC4, 0x8B, 0x3C, + 0x50, 0x8D, 0x73, 0xC3, 0xF0, 0x36, 0x40, 0x64, 0x39, 0x4C, 0x78, 0x92, + 0xD8, 0xDC, 0x93, 0x2A, 0xC0, 0x91, 0x16, 0xB0, 0x96, 0x88, 0x70, 0x85, + 0x86, 0xEF, 0x38, 0xF5, 0x8E, 0x70, 0x63, 0x3C, 0xE8, 0xDB, 0x26, 0xDF, + 0x3F, 0xEE, 0x01, 0xB1, 0xF6, 0xF6, 0x8E, 0x1A, 0xEE, 0x6F, 0x42, 0x9B, + 0x76, 0x08, 0xF2, 0xE4, 0xB5, 0xD8, 0x45, 0x55, 0xCE, 0xF3, 0x89, 0xEC, + 0x2D, 0x00, 0xF7, 0xC1, 0xED, 0x4D, 0xD0, 0x04, 0xC1, 0xB2, 0x92, 0xE1, + 0xE5, 0xEE, 0x44, 0xFD, 0x79, 0xC1, 0x45, 0xAD, 0x1F, 0x99, 0x49, 0xB9, + 0xC3, 0x79, 0xAF, 0xFC, 0x09, 0x31, 0x3F, 0xBE, 0x15, 0x37, 0xB7, 0x9B, + 0xA2, 0xD5, 0xD7, 0xDD, 0x1B, 0xBC, 0x69, 0xA3, 0x27, 0x8A, 0x7C, 0xAA, + 0xC6, 0x31, 0x2A, 0xA9, 0x6F, 0xA1, 0x3D, 0xFE, 0xB6, 0x40, 0xD0, 0x96, + 0xBF, 0xEC, 0x37, 0xB1, 0x5C, 0x8E, 0xA8, 0xF7, 0x4B, 0x9D, 0x62, 0x5C, + 0x33, 0x4E, 0x54, 0xDA, 0x66, 0xF2, 0xFF, 0xEE, 0xE2, 0x19, 0xF3, 0x47, + 0x74, 0xD2, 0xC8, 0x8D, 0xDB, 0x67, 0xEC, 0x77, 0xD7, 0xC0, 0x1F, 0xC7, + 0x4D, 0x7D, 0x03, 0xD1, 0xEB, 0xDD, 0x43, 0xD1, 0x25, 0xD8, 0x29, 0x18, + 0xCA, 0xE5, 0xF3, 0x89, 0x86, 0xA0, 0x09, 0xD1, 0x4E, 0x0C, 0x69, 0x47, + 0x1B, 0x89, 0x9B, 0xB2, 0xE9, 0xE3, 0x7E, 0x9C, 0xE4, 0xCD, 0xE8, 0x0A, + 0x70, 0xF0, 0x95, 0x81, 0x70, 0xF5, 0xAD, 0x6E, 0xD9, 0x41, 0x2D, 0xCD, + 0xEC, 0xA3, 0x10, 0x18, 0xF1, 0x34, 0xD3, 0xC1, 0x85, 0x5D, 0x07, 0xE5, + 0x8C, 0x6A, 0xEF, 0xCC, 0xB0, 0xA7, 0x00, 0xE8, 0x53, 0x5D, 0xD5, 0xE5, + 0x47, 0x60, 0x94, 0xAB, 0x43, 0x26, 0xCD, 0x0E, 0x02, 0xD3, 0x8C, 0xF1, + 0x8F, 0xAC, 0x23, 0x0F, 0xDF, 0xB1, 0x3A, 0x8F, 0x99, 0xAF, 0x89, 0xAC, + 0x5B, 0xAE, 0x6C, 0x40, 0x6D, 0xC1, 0x20, 0x2A, 0x01, 0xFB, 0xC6, 0x02, + 0x19, 0xC1, 0x89, 0x98, 0x41, 0x24, 0x9F, 0xCF, 0xA2, 0x43, 0x15, 0x3F, + 0xA7, 0x8F, 0x6F, 0xC6, 0x47, 0x91, 0x0A, 0xBA, 0x7B, 0xD3, 0x5E, 0xD2, + 0xB3, 0x70, 0x00, 0x86, 0xAD, 0xD6, 0xF4, 0xC4, 0x1D, 0x76, 0x90, 0x26, + 0x47, 0xE3, 0x69, 0xA5, 0x8E, 0x2E, 0xBF, 0xA8, 0x9D, 0x72, 0x84, 0x41, + 0xC3, 0x8E, 0x4A, 0x6B, 0xE5, 0xA5, 0xB3, 0x05, 0x67, 0xDC, 0x5F, 0xAF, + 0xF0, 0x06, 0x08, 0x9C, 0x8E, 0x10, 0xDC, 0x73, 0x98, 0x73, 0x9A, 0x9B, + 0xA6, 0x3D, 0xCF, 0xC2, 0x2E, 0x7F, 0x37, 0xF8, 0xC2, 0xC6, 0x45, 0x6D, + 0xD3, 0x01, 0x48, 0x55, 0x4E, 0x62, 0xEF, 0x67, 0xD6, 0xAC, 0x7F, 0x6E, + 0x9C, 0x0A, 0x1F, 0x5D, 0x9F, 0xB4, 0x55, 0x4F, 0xEB, 0x9D, 0xFC, 0xDD, + 0x92, 0x45, 0x1D, 0xAE, 0xBD, 0xCA, 0xCB, 0x04, 0xB9, 0x18, 0x3A, 0xBB, + 0x2B, 0x8C, 0x8A, 0x80, 0x4D, 0x1A, 0x24, 0x39, 0xDA, 0x10, 0x94, 0xDA, + 0xC9, 0x4B, 0x2F, 0x0F, 0x86, 0x24, 0x0B, 0x51, 0xF5, 0x57, 0xBA, 0x57, + 0x23, 0x4D, 0x03, 0xAA, 0xA4, 0xC0, 0x23, 0x7D, 0xF9, 0x13, 0x02, 0x30, + 0x42, 0x4D, 0xDA, 0xE0, 0x5E, 0x11, 0x8E, 0xA7, 0x21, 0x20, 0xEA, 0x1F, + 0x26, 0xF1, 0x5C, 0xCD, 0x9C, 0x6F, 0x1E, 0xCC, 0xE8, 0x23, 0xA4, 0xDD, + 0x40, 0x36, 0xFC, 0x8A, 0x95, 0x80, 0xFD, 0x91, 0xD3, 0x8F, 0x61, 0x75, + 0x6B, 0x09, 0xF8, 0x0A, 0xBE, 0x94, 0x25, 0x9C, 0x02, 0xFD, 0x65, 0x50, + 0x6F, 0x90, 0xA5, 0x9E, 0xDE, 0xD8, 0x98, 0x90, 0xBA, 0x06, 0xEF, 0xF6, + 0xDC, 0x37, 0x4F, 0x46, 0x3F, 0xF4, 0xD1, 0x91, 0xB2, 0x0D, 0xA7, 0x56, + 0x78, 0x76, 0x35, 0xE7, 0x2D, 0x66, 0x2A, 0xF8, 0x5B, 0xC5, 0x1F, 0x41, + 0xB1, 0x89, 0xB6, 0x7C, 0x43, 0x68, 0x8E, 0x19, 0x44, 0x03, 0x8C, 0xD0, + 0xCA, 0xEF, 0x64, 0x34, 0x87, 0xC4, 0xEB, 0xD4, 0xCD, 0x33, 0x07, 0x71, + 0x57, 0xA7, 0xDC, 0xE5, 0x65, 0x2E, 0xD9, 0xE1, 0x7F, 0xAA, 0xCA, 0x11, + 0xEC, 0xDF, 0x83, 0xAB, 0xBD, 0x9C, 0x27, 0xAB, 0x5C, 0x34, 0x6A, 0x49, + 0xDF, 0xAD, 0x68, 0xFA, 0x61, 0x39, 0xDC, 0x49, 0x7D, 0xF5, 0x76, 0xC2, + 0x3F, 0xD4, 0x48, 0xA2, 0x9C, 0x2D, 0x50, 0x94, 0x3E, 0xF7, 0xB3, 0xBA, + 0x71, 0x23, 0x9F, 0x63, 0x5F, 0x6D, 0x4D, 0x89, 0xA5, 0x37, 0x03, 0xDB, + 0x79, 0x87, 0x27, 0x9E, 0x15, 0x65, 0x1C, 0x9F, 0x61, 0x2B, 0x37, 0xFF, + 0x87, 0xF4, 0x18, 0xF8, 0xBE, 0xAA, 0x1D, 0x4E, 0xBC, 0x02, 0x26, 0x1A, + 0xA5, 0x3E, 0x52, 0x97, 0x21, 0xE1, 0xD2, 0xDA, 0xC0, 0x2D, 0x8D, 0x4B, + 0x57, 0xFC, 0x08, 0xAA, 0x7C, 0x59, 0xF9, 0xBF, 0x3A, 0xF1, 0x96, 0x83, + 0xA2, 0x59, 0x70, 0xA4, 0x06, 0x13, 0x6B, 0x15, 0xA8, 0xCB, 0xC8, 0x0B, + 0x85, 0x31, 0x42, 0x3E, 0x3E, 0x83, 0x0C, 0xAF, 0x40, 0xAC, 0xBE, 0x6C, + 0x6E, 0x17, 0x9A, 0xC6, 0x45, 0xCE, 0x1B, 0x1B, 0xBC, 0x94, 0xBF, 0xA2, + 0x53, 0x5B, 0xDF, 0x95, 0xEF, 0x6A, 0x41, 0x93, 0xC4, 0x58, 0xE9, 0x20, + 0x68, 0x28, 0xB1, 0xA3, 0x80, 0x80, 0x48, 0xEF, 0x7A, 0x7C, 0x11, 0x33, + 0x62, 0x18, 0xB7, 0x41, 0x52, 0x36, 0xD5, 0xB6, 0xC0, 0x95, 0xD7, 0x71, + 0x00, 0x0B, 0x0A, 0x86, 0xE7, 0x13, 0x8D, 0xE6, 0x73, 0x33, 0xB5, 0x8B, + 0xEE, 0xC3, 0xCA, 0x24, 0x12, 0x96, 0x89, 0x91, 0x90, 0x95, 0xCA, 0x24, + 0x30, 0xDB, 0x25, 0x9B, 0x1B, 0xF2, 0x13, 0xCA, 0xC3, 0x3A, 0x8A, 0x7E, + 0xEA, 0xF9, 0x7D, 0xB1, 0xF0, 0x69, 0xF8, 0xD9, 0xA0, 0xEE, 0x3C, 0xF8, + 0x02, 0x37, 0x93, 0xB5, 0xE3, 0xD9, 0x7B, 0x54, 0xF1, 0x3A, 0x9D, 0x20, + 0xB0, 0xD2, 0xC6, 0xAE, 0x61, 0x26, 0x90, 0x4C, 0xA5, 0x9D, 0x20, 0xE1, + 0xEF, 0x4A, 0x07, 0xF6, 0xAF, 0xE9, 0x28, 0xF5, 0x9B, 0x47, 0xDE, 0xD1, + 0x65, 0x76, 0x0C, 0x70, 0x40, 0xBC, 0xA6, 0xA4, 0xE1, 0xF2, 0xEE, 0x0B, + 0xAA, 0xF3, 0x3A, 0x8E, 0x4F, 0x7D, 0x9F, 0x97, 0xB6, 0x65, 0x54, 0x16, + 0x88, 0xAF, 0x5C, 0xCD, 0xE3, 0x66, 0xEB, 0xB2, 0xA2, 0xA2, 0x5B, 0xE9, + 0x0A, 0x54, 0x9B, 0x0E, 0x50, 0x4F, 0x89, 0xAD, 0x67, 0x11, 0x48, 0x33, + 0x08, 0x47, 0xA6, 0xE1, 0xB4, 0x03, 0xF5, 0x65, 0x2B, 0xD1, 0xF7, 0xC7, + 0x48, 0x3D, 0x1A, 0x33, 0xA6, 0x1E, 0x71, 0x1C, 0x02, 0x0A, 0x47, 0x9C, + 0xE1, 0x97, 0xB3, 0x14, 0xD4, 0xEA, 0xFA, 0xF9, 0xFF, 0x35, 0x67, 0xAA, + 0xC3, 0x2E, 0x78, 0x33, 0x3D, 0x03, 0x17, 0x78, 0x0B, 0xC7, 0x68, 0xC1, + 0x19, 0x4D, 0x21, 0xFE, 0xD7, 0x84, 0xB8, 0xA0, 0x50, 0x36, 0xE6, 0x98, + 0xE7, 0x5C, 0xF2, 0x0C, 0xAC, 0x8D, 0x9E, 0xB4, 0xC4, 0xFB, 0x29, 0x50, + 0x9F, 0xF7, 0x27, 0xEB, 0x22, 0xDB, 0xD1, 0x19, 0x8E, 0x1C, 0xC4, 0x8C, + 0x84, 0xF8, 0x0D, 0xB4, 0x1F, 0x80, 0x91, 0x70, 0xE1, 0xFC, 0x64, 0xE2, + 0x5B, 0xD8, 0x07, 0x67, 0x87, 0xA2, 0x7E, 0x37, 0xE4, 0x7A, 0xBF, 0x87, + 0xE4, 0x1F, 0x05, 0xAE, 0x25, 0xA5, 0x8C, 0xCE, 0xB5, 0x5F, 0x87, 0x77, + 0xCF, 0x8E, 0x18, 0xA7, 0xAB, 0x4E, 0x16, 0xB1, 0xFC, 0x70, 0x9C, 0x00, + 0x4D, 0xC6, 0x9F, 0x92, 0x3F, 0x42, 0xAF, 0xB4, 0xD0, 0x36, 0x13, 0xF0, + 0xA3, 0xFE, 0x0E, 0x4B, 0xA3, 0xB9, 0xD6, 0xF0, 0x5F, 0xD3, 0x29, 0xDD, + 0xB0, 0x27, 0x49, 0x13, 0x9F, 0x2B, 0xF8, 0xCB, 0x62, 0xC2, 0xBF, 0x80, + 0x1D, 0x62, 0x23, 0x5B, 0xCE, 0x19, 0x6F, 0xE1, 0xAA, 0xD9, 0x99, 0x0F, + 0x48, 0x72, 0xFE, 0xEF, 0x52, 0x58, 0x39, 0xF6, 0x4A, 0x98, 0x4A, 0xEF, + 0xCF, 0xA3, 0x71, 0x92, 0xC6, 0xC6, 0x8F, 0x39, 0xED, 0x7D, 0x0B, 0x6C, + 0x62, 0xE1, 0xA8, 0x0E, 0x62, 0xF7, 0x59, 0xD6, 0xB0, 0x67, 0x82, 0x12, + 0x5C, 0xA9, 0xBC, 0x52, 0x7F, 0xCF, 0xD3, 0x33, 0x7A, 0x98, 0xFE, 0x8E, + 0x70, 0x31, 0xB9, 0x82, 0x37, 0xD2, 0x37, 0xC9, 0xEE, 0x1C, 0xBC, 0x76, + 0x0B, 0xBD, 0x95, 0xD4, 0xD0, 0x9C, 0xEE, 0x9F, 0x8A, 0x9C, 0xA0, 0x34, + 0xFE, 0x8D, 0x64, 0xF0, 0xDA, 0x02, 0x17, 0xA3, 0x26, 0x68, 0x4B, 0xE8, + 0x54, 0xF7, 0xE1, 0x94, 0x6D, 0xA9, 0x5E, 0x8B, 0x86, 0x13, 0xDB, 0x5C, + 0x0C, 0xF0, 0x3C, 0x40, 0x4F, 0x0D, 0x15, 0xD7, 0xE7, 0x48, 0x3F, 0xC6, + 0x33, 0x24, 0x30, 0x83, 0x50, 0x30, 0xBC, 0xD7, 0xE5, 0x25, 0x32, 0x11, + 0xD0, 0xA7, 0xE3, 0x7C, 0x4D, 0xE4, 0x46, 0xE3, 0xCB, 0xF7, 0x04, 0x49, + 0xFF, 0x5F, 0x0C, 0xFE, 0x36, 0xEE, 0x39, 0x46, 0x5B, 0x41, 0x7D, 0x1B, + 0xF0, 0xCF, 0x90, 0xEF, 0x72, 0x6E, 0x61, 0xE5, 0x26, 0xC7, 0xC5, 0x6A, + 0xCA, 0x40, 0x7A, 0x30, 0x8E, 0x0A, 0x2F, 0xDD, 0x64, 0x95, 0xF7, 0x19, + 0x6D, 0x0F, 0xDB, 0x80, 0xFB, 0x9E, 0x6B, 0x36, 0xD6, 0x1E, 0x0A, 0x34, + 0x7A, 0x8B, 0x1B, 0xB9, 0xA8, 0xBB, 0x49, 0x67, 0xCA, 0x7E, 0xD6, 0x27, + 0x6F, 0xAC, 0xED, 0x25, 0x89, 0xFD, 0xB4, 0x11, 0x2F, 0x43, 0x74, 0x40, + 0x2D, 0x73, 0x20, 0xA1, 0x94, 0x9E, 0x79, 0x5D, 0x20, 0x88, 0xD5, 0x1F, + 0x13, 0x10, 0x35, 0x7A, 0x4C, 0xF0, 0x5B, 0x09, 0x96, 0x75, 0x6F, 0x5F, + 0xED, 0x9D, 0x68, 0xBD, 0x0D, 0x77, 0x5C, 0x85, 0x13, 0x3A, 0x11, 0x0D, + 0x0A, 0x90, 0x98, 0x8F, 0xCE, 0x4C, 0xE5, 0x46, 0x40, 0x86, 0x75, 0xA5, + 0x49, 0x5C, 0x12, 0x57, 0xF8, 0x48, 0x86, 0xD4, 0x81, 0xA4, 0x47, 0x39, + 0x19, 0x42, 0x23, 0x44, 0x7F, 0x57, 0x9C, 0x95, 0xA1, 0xFD, 0x3E, 0xA6, + 0x29, 0x84, 0xF6, 0x8F, 0x87, 0x79, 0x8B, 0xF6, 0x45, 0x5A, 0x9B, 0x7E, + 0xBB, 0xC1, 0xD3, 0xB7, 0xE4, 0x18, 0xB0, 0x61, 0x77, 0xB4, 0x12, 0x25, + 0xEE, 0x6C, 0x3D, 0x6C, 0xA9, 0xFE, 0x67, 0xDE, 0xCC, 0x8F, 0x11, 0xC1, + 0x8A, 0xD6, 0x72, 0xAC, 0x45, 0x77, 0xEF, 0xD3, 0x96, 0x41, 0xA7, 0xC1, + 0x92, 0x15, 0x93, 0x44, 0x18, 0x08, 0x14, 0x7C, 0xAB, 0xCE, 0xBF, 0xFA, + 0x89, 0xEF, 0xAD, 0x09, 0x9A, 0xB9, 0x8A, 0x7D, 0xD5, 0xA2, 0x82, 0x90, + 0x10, 0x4E, 0xD6, 0xCC, 0x04, 0x43, 0x21, 0x6B, 0xDF, 0xE4, 0x56, 0xE9, + 0x7D, 0x17, 0xCD, 0xC1, 0x3A, 0xC0, 0xA1, 0x83, 0xCE, 0xC8, 0x90, 0x2E, + 0xA6, 0x73, 0x44, 0x72, 0x10, 0x7B, 0x03, 0xDB, 0x2F, 0xCA, 0x9C, 0x71, + 0x44, 0x06, 0xAC, 0xCB, 0x4A, 0x09, 0xF0, 0x08, 0x1C, 0x99, 0x49, 0x13, + 0x19, 0x6E, 0xEE, 0x4C, 0xA2, 0xE4, 0xB8, 0xA0, 0x36, 0xE2, 0x9C, 0x13, + 0x7E, 0x6C, 0x9B, 0x3C, 0x74, 0x5A, 0x50, 0x90, 0x8C, 0xE1, 0x24, 0x76, + 0x14, 0xF7, 0x2E, 0x77, 0x24, 0x64, 0xFA, 0x37, 0x0C, 0xE1, 0x90, 0xDB, + 0xB4, 0x4C, 0x9E, 0xC5, 0x26, 0xA8, 0xED, 0x02, 0x72, 0x4D, 0xF4, 0x91, + 0x94, 0xDF, 0x77, 0x3B, 0x96, 0xB9, 0x42, 0x34, 0xD2, 0xB7, 0x1E, 0x49, + 0xBD, 0x29, 0xBB, 0x3C, 0xC6, 0x5B, 0x3F, 0x15, 0xE5, 0x8F, 0x0E, 0x23, + 0xA5, 0xD5, 0x73, 0x06, 0x6F, 0xEF, 0x73, 0x51, 0xB2, 0xC8, 0xD4, 0x44, + 0xFC, 0x25, 0x95, 0xA9, 0x44, 0x57, 0xB7, 0x80, 0x07, 0xB0, 0xCE, 0x58, + 0x12, 0xFF, 0xD3, 0xD9, 0x13, 0xDD, 0x11, 0x26, 0x5B, 0xC3, 0x5B, 0xEE, + 0xA9, 0x53, 0x19, 0xE9, 0x31, 0x9C, 0x1B, 0x3A, 0x2A, 0x9F, 0xD9, 0x7C, + 0x7A, 0x55, 0x52, 0x40, 0xE0, 0xEC, 0x11, 0x39, 0x7E, 0x09, 0xD7, 0xE7, + 0xCF, 0xC7, 0x67, 0xDB, 0xDE, 0x02, 0x92, 0xEF, 0x47, 0x2C, 0x54, 0xFD, + 0xE4, 0x37, 0xC6, 0x9F, 0x51, 0x66, 0x96, 0x84, 0x19, 0x94, 0x90, 0xE6, + 0x4E, 0x43, 0x2A, 0xB9, 0x13, 0x40, 0x9C, 0xE9, 0x89, 0xA2, 0x2B, 0x8E, + 0x8C, 0x39, 0x42, 0x42, 0xF8, 0xD9, 0x5A, 0x86, 0x0E, 0xA6, 0x3A, 0x9E, + 0xA8, 0xA5, 0x23, 0x19, 0x58, 0xDB, 0x4C, 0x46, 0xCA, 0x26, 0x50, 0x0B, + 0xD2, 0x6A, 0x9B, 0xBE, 0x63, 0x55, 0xF4, 0x42, 0xD8, 0x20, 0xCD, 0x55, + 0x01, 0xA0, 0x3D, 0xE3, 0x97, 0x23, 0x14, 0xF1, 0x6A, 0x2A, 0x5A, 0xA9, + 0xBD, 0x01, 0x5E, 0x56, 0x8F, 0xC7, 0x31, 0x6F, 0xBB, 0x78, 0x88, 0x01, + 0xF0, 0x00, 0xD2, 0x1B, 0x40, 0x6D, 0x50, 0xD0, 0xCB, 0x44, 0x35, 0x3A, + 0xBC, 0xBB, 0x6F, 0x6C, 0xF4, 0xDB, 0x6F, 0x54, 0x27, 0x8C, 0x0A, 0x5A, + 0xE8, 0x56, 0xC9, 0x28, 0x44, 0xBC, 0xF7, 0x70, 0xF0, 0x95, 0x17, 0xA1, + 0x0B, 0x91, 0xDF, 0x80, 0xF8, 0xF3, 0xF9, 0xB9, 0x1C, 0xEB, 0x81, 0x31, + 0x18, 0xE2, 0xB6, 0xF8, 0x80, 0x64, 0x61, 0x1F, 0xD9, 0x14, 0x6C, 0x64, + 0xE8, 0xDB, 0x45, 0x5E, 0x16, 0xD4, 0xDB, 0xC9, 0x13, 0x70, 0x4B, 0x0E, + 0x40, 0x80, 0xB9, 0xCA, 0x9E, 0xB7, 0x85, 0x88, 0xDA, 0xF8, 0x13, 0xFE, + 0x51, 0x28, 0xB9, 0x6E, 0x65, 0x92, 0xAA, 0x45, 0x68, 0xC6, 0x82, 0xCC, + 0xBA, 0x28, 0x6E, 0xCF, 0x54, 0x7A, 0xB4, 0x8A, 0x8A, 0x92, 0x3C, 0x2F, + 0x55, 0x6A, 0xE3, 0x23, 0x27, 0x4B, 0xFA, 0x13, 0x58, 0xB5, 0xAE, 0x9D, + 0xA3, 0x77, 0x25, 0xFA, 0x70, 0x59, 0x5A, 0x34, 0x4C, 0xF1, 0xA9, 0x9A, + 0x37, 0x2B, 0xEF, 0xA0, 0x85, 0xB7, 0x97, 0x74, 0x04, 0xD0, 0x08, 0xFE, + 0x01, 0x7B, 0x33, 0x44, 0xB8, 0x44, 0x12, 0xE6, 0x1D, 0xCF, 0xE0, 0x8D, + 0xDE, 0x92, 0x93, 0x49, 0xB8, 0x2B, 0x65, 0x0D, 0x38, 0x55, 0x3B, 0x90, + 0x89, 0x01, 0x40, 0xEB, 0xF1, 0x33, 0x5C, 0x36, 0xAA, 0xF7, 0x84, 0x75, + 0x8A, 0xB1, 0xE4, 0x68, 0x6F, 0x3C, 0x7C, 0x84, 0x71, 0x06, 0x57, 0xC4, + 0x83, 0x9F, 0x6A, 0x96, 0x8F, 0xEB, 0xA6, 0x59, 0xBB, 0x2D, 0x68, 0x35, + 0x8F, 0xBF, 0x8D, 0xFE, 0xC8, 0xBC, 0xA7, 0x41, 0x97, 0x17, 0x49, 0x82, + 0x6E, 0x4D, 0xB0, 0xE8, 0xC9, 0x10, 0x57, 0x7B, 0x9C, 0x03, 0xDD, 0x90, + 0xE3, 0x15, 0x30, 0x9A, 0x66, 0xAB, 0xF8, 0x9A, 0x69, 0xBE, 0x6E, 0x74, + 0x3C, 0xF4, 0xDD, 0x0D, 0x77, 0x77, 0x30, 0x2C, 0x3C, 0x2B, 0x7E, 0x01, + 0x90, 0xFD, 0xD7, 0xF1, 0x87, 0x03, 0x61, 0x87, 0x8B, 0x46, 0x5C, 0x02, + 0x20, 0x5C, 0xB0, 0x8C, 0x56, 0x51, 0xA3, 0xFE, 0x15, 0x28, 0x24, 0xC7, + 0x43, 0xE9, 0x15, 0x43, 0xA7, 0xD7, 0x21, 0x12, 0x88, 0xD5, 0x32, 0xAE, + 0x04, 0xC8, 0x3E, 0x28, 0x7E, 0x08, 0xD4, 0x97, 0x5E, 0xCF, 0x60, 0xF1, + 0x42, 0x96, 0x2B, 0xED, 0xAE, 0x71, 0x43, 0xD0, 0x04, 0x48, 0x65, 0x03, + 0x9A, 0xFA, 0x77, 0x45, 0x5A, 0xFC, 0x48, 0x12, 0x16, 0xCF, 0xAF, 0x13, + 0xE4, 0x03, 0xCC, 0x8F, 0xF4, 0xB5, 0x68, 0xB3, 0xF5, 0x53, 0x13, 0x42, + 0x26, 0x8F, 0xB5, 0x71, 0x8E, 0x9B, 0xB3, 0x2E, 0xF6, 0x9F, 0x1E, 0x4A, + 0xBC, 0xB9, 0xD8, 0xA5, 0x77, 0xCE, 0x95, 0x94, 0xE3, 0x9F, 0xD8, 0xAD, + 0x53, 0x79, 0x03, 0xA6, 0x57, 0xF7, 0x13, 0xD5, 0x66, 0x25, 0x66, 0x88, + 0x78, 0xF7, 0xF6, 0x35, 0xF9, 0xCC, 0x7F, 0xC6, 0x36, 0xAD, 0xC2, 0x70, + 0x34, 0x94, 0xAA, 0xED, 0xCA, 0x4A, 0x14, 0x16, 0xF6, 0x6E, 0x46, 0xE8, + 0x32, 0x63, 0xDF, 0x88, 0x66, 0x65, 0x6E, 0xA3, 0xCF, 0xDB, 0x1E, 0x5B, + 0xFD, 0xCB, 0xB1, 0x99, 0x4A, 0x65, 0xD3, 0x24, 0xD8, 0xC9, 0xA1, 0xAA, + 0x06, 0xA9, 0x4C, 0xF5, 0x7C, 0x9E, 0x98, 0x77, 0x12, 0xC2, 0xA9, 0xF9, + 0x8D, 0x5F, 0x43, 0x1B, 0x9D, 0xEB, 0xD2, 0x28, 0x2C, 0x54, 0x60, 0x97, + 0x5A, 0x70, 0x28, 0x78, 0xCA, 0x43, 0xD1, 0xBA, 0xA3, 0x5F, 0x49, 0x6A, + 0x0C, 0x2A, 0x53, 0x09, 0xF8, 0x5E, 0x89, 0x5C, 0x6A, 0x5D, 0x2A, 0x8B, + 0x58, 0x7D, 0x19, 0x1A, 0xF1, 0x1B, 0x5A, 0x12, 0xE7, 0x09, 0x9C, 0x88, + 0xD5, 0xD7, 0x15, 0xFB, 0xDF, 0x62, 0xA9, 0x54, 0xD7, 0xD5, 0x7A, 0x2B, + 0xBF, 0xCA, 0x0B, 0xB9, 0x07, 0xB4, 0xC9, 0x17, 0x81, 0x33, 0x07, 0x25, + 0xE2, 0x0A, 0x6C, 0xF4, 0xD1, 0xF7, 0xF7, 0x65, 0xDE, 0x71, 0x00, 0x72, + 0x9C, 0x2A, 0xBC, 0x31, 0xC0, 0x94, 0x85, 0x93, 0x9C, 0x65, 0xA6, 0xF1, + 0x2F, 0x01, 0x8B, 0xD8, 0x66, 0x3E, 0x96, 0xB6, 0x96, 0xA0, 0x78, 0xA3, + 0x85, 0x35, 0x6C, 0x3A, 0x37, 0x09, 0x76, 0x12, 0xB1, 0xA8, 0xC5, 0xE3, + 0x53, 0xFB, 0x17, 0xB4, 0x10, 0xD1, 0x0F, 0xFA, 0xE7, 0x42, 0x58, 0x20, + 0x72, 0x79, 0xC2, 0x94, 0xAF, 0xF7, 0x7D, 0x35, 0xD3, 0x48, 0x23, 0x67, + 0x0F, 0xD7, 0x65, 0xE0, 0x48, 0x05, 0x7E, 0x09, 0xE6, 0x0A, 0x4B, 0xD2, + 0xB0, 0xB9, 0x84, 0x12, 0xAF, 0x4B, 0x92, 0xDD, 0x30, 0x4B, 0x9F, 0xDC, + 0xD5, 0x5D, 0xD4, 0x5A, 0x13, 0xE6, 0xB7, 0x18, 0x18, 0xC0, 0x52, 0x18, + 0xBF, 0xC2, 0xB8, 0x7D, 0x2B, 0x2A, 0x36, 0x7A, 0x63, 0x6E, 0xF7, 0x59, + 0x61, 0xC3, 0x97, 0x31, 0xDD, 0x61, 0x15, 0x1B, 0x30, 0xC3, 0xDD, 0xF5, + 0x51, 0x2F, 0x77, 0xB4, 0x54, 0x6E, 0x4D, 0x98, 0x13, 0xDB, 0x3E, 0x4C, + 0xA9, 0xCF, 0x77, 0xC8, 0x2D, 0x8E, 0x49, 0xDA, 0x67, 0xBA, 0x6C, 0x37, + 0x54, 0xAB, 0x55, 0x80, 0x15, 0x94, 0x5F, 0xB6, 0x4D, 0x6B, 0xB3, 0xA3, + 0x13, 0xBD, 0x7C, 0x47, 0xE3, 0xA5, 0x70, 0x9B, 0xEC, 0x5C, 0x94, 0x60, + 0xC9, 0xEA, 0xD6, 0x64, 0xEE, 0x3B, 0x8F, 0x4E, 0xE2, 0x07, 0x61, 0xC6, + 0xA4, 0x64, 0x8A, 0xA1, 0xF9, 0x57, 0xC2, 0xEA, 0x89, 0x95, 0x12, 0x67, + 0xE0, 0xC6, 0xCF, 0x44, 0x40, 0x98, 0x8E, 0xB7, 0xDF, 0xFF, 0xCB, 0xAA, + 0xEF, 0xC5, 0x72, 0x8D, 0xD4, 0xC7, 0x58, 0x60, 0x9D, 0xE1, 0xD6, 0x1D, + 0x3A, 0x12, 0xBA, 0x5E, 0xA9, 0xAB, 0x21, 0xB9, 0x2E, 0xE0, 0x04, 0x47, + 0x1B, 0xB2, 0x37, 0x28, 0xED, 0x7F, 0x7D, 0x24, 0x63, 0x2D, 0x98, 0x04, + 0x4D, 0x1E, 0x6B, 0xE7, 0x11, 0x1C, 0xED, 0xB1, 0x02, 0x64, 0x63, 0x51, + 0x71, 0x6E, 0xB1, 0x3D, 0xAD, 0xE1, 0xEB, 0x3B, 0x23, 0x51, 0xE3, 0x45, + 0xA4, 0x83, 0xB2, 0x83, 0xD9, 0x43, 0x5C, 0xF6, 0x99, 0xDE, 0xC8, 0xD2, + 0xB7, 0x11, 0x26, 0xF3, 0xEA, 0x69, 0xFE, 0x54, 0x22, 0x33, 0xCD, 0xDE, + 0xE4, 0x2F, 0x65, 0x19, 0xA0, 0x3E, 0xDB, 0x4E, 0xB0, 0x4A, 0xFA, 0x57, + 0x47, 0x13, 0x84, 0x7B, 0x73, 0x3B, 0x8E, 0xB1, 0x8A, 0x1C, 0x80, 0x0C, + 0x9D, 0x67, 0xF3, 0xD5, 0x00, 0xD7, 0xDA, 0x92, 0xA5, 0xF7, 0xE4, 0x8D, + 0x60, 0x48, 0xD2, 0x5C, 0xF6, 0x9A, 0x0D, 0x94, 0xE4, 0x19, 0x75, 0xCF, + 0xE2, 0xCD, 0x22, 0xD5, 0x87, 0x9C, 0x36, 0x65, 0xC7, 0x36, 0x0D, 0x5B, + 0x5C, 0x7A, 0x08, 0xC7, 0x98, 0xF5, 0xAE, 0x04, 0x45, 0xCE, 0x32, 0x1A, + 0x25, 0xC9, 0x1F, 0x2E, 0x96, 0x95, 0x62, 0x97, 0x4C, 0x27, 0x82, 0xB9, + 0x0A, 0xFA, 0x0D, 0xE3, 0xF1, 0xEA, 0xD6, 0x59, 0x3A, 0x6C, 0x9B, 0x28, + 0xCA, 0x8A, 0x19, 0x79, 0x5C, 0xE9, 0xFF, 0xFD, 0x93, 0x54, 0x26, 0xF4, + 0x09, 0x58, 0xB9, 0x41, 0x90, 0x2C, 0x74, 0x98, 0x45, 0x9A, 0x71, 0x12, + 0x06, 0x52, 0xAA, 0x31, 0xAD, 0xEA, 0x97, 0x81, 0x33, 0xD6, 0xA3, 0x54, + 0xCA, 0x9D, 0x5E, 0xF1, 0x87, 0xDD, 0xAB, 0x1E, 0xF1, 0x1B, 0xA4, 0xFD, + 0x74, 0x60, 0x93, 0xD6, 0x01, 0x9F, 0x5C, 0x2D, 0x7D, 0xE7, 0xB8, 0x76, + 0x36, 0x80, 0xD0, 0x63, 0x27, 0xC8, 0x94, 0x15, 0x4B, 0x1C, 0xC2, 0x6B, + 0x67, 0x23, 0xEC, 0xAC, 0xD2, 0xEB, 0xC5, 0x5D, 0x78, 0x81, 0xD6, 0x30, + 0xDD, 0xA6, 0x2C, 0xEE, 0x16, 0xDA, 0x8B, 0xA0, 0x9D, 0x20, 0xF8, 0x62, + 0x87, 0x6D, 0xC2, 0x9C, 0x80, 0x53, 0x3C, 0x20, 0x06, 0x78, 0x71, 0xD7, + 0xA6, 0x0D, 0xEA, 0xA8, 0x58, 0xA6, 0x21, 0x77, 0xCB, 0xD0, 0x6F, 0x05, + 0x7A, 0x47, 0x1C, 0xFB, 0xA0, 0x4D, 0xD8, 0x22, 0xD1, 0xE3, 0x9B, 0x14, + 0x98, 0xF4, 0xAE, 0x20, 0xEC, 0x64, 0xD9, 0xC6, 0xBF, 0xB1, 0x40, 0x1A, + 0x4C, 0x66, 0xC3, 0x2B, 0xC0, 0xE7, 0xD3, 0x61, 0x4C, 0x6D, 0xF8, 0x5D, + 0xC9, 0x33, 0x92, 0xC4, 0x1D, 0xA3, 0xF5, 0x69, 0x10, 0xF3, 0x4B, 0x31, + 0x1C, 0x1D, 0x11, 0x8E, 0xB0, 0xF8, 0xD9, 0x3A, 0xBF, 0x06, 0xC1, 0xB0, + 0x27, 0x8B, 0xB6, 0x9E, 0x7C, 0x6E, 0x27, 0x15, 0xF1, 0xE0, 0xE7, 0x31, + 0x87, 0x10, 0x94, 0x2C, 0x0D, 0xC6, 0x75, 0x54, 0xD2, 0x5A, 0xE4, 0x25, + 0xA7, 0xB9, 0x16, 0x4A, 0x93, 0x8E, 0x1D, 0x84, 0x06, 0xDC, 0x84, 0xDE, + 0x57, 0x9D, 0xF7, 0xC1, 0x68, 0x08, 0x67, 0xFD, 0x5C, 0x38, 0x2A, 0xC9, + 0x99, 0x28, 0xEC, 0x5D, 0xB4, 0x2A, 0xCA, 0xB3, 0xBC, 0x92, 0x0C, 0xFC, + 0xC9, 0xED, 0x22, 0x52, 0x79, 0xC4, 0x04, 0x3F, 0xD0, 0x7D, 0x4B, 0xE0, + 0x0C, 0x0F, 0x82, 0x00, 0xB8, 0x38, 0x70, 0x06, 0xC5, 0x34, 0x1E, 0x0D, + 0x96, 0x7E, 0xDC, 0x94, 0x7E, 0x64, 0x47, 0xA9, 0x62, 0xAE, 0xA3, 0x8B, + 0x6E, 0x0B, 0x1D, 0xB9, 0x8F, 0xE8, 0xAA, 0x57, 0xD7, 0xE3, 0x65, 0x15, + 0x28, 0x88, 0xF5, 0x21, 0xF3, 0x38, 0xA4, 0xFC, 0xDB, 0x09, 0xC1, 0x7A, + 0x7B, 0xA7, 0xFF, 0x0B, 0xA3, 0x18, 0xA2, 0x42, 0x28, 0x22, 0xB2, 0x95, + 0x25, 0x56, 0x08, 0xFF, 0x3D, 0xB5, 0xF1, 0x41, 0x44, 0x34, 0x64, 0x67, + 0x2C, 0xD5, 0xF0, 0x40, 0x9B, 0x82, 0x18, 0xAE, 0x8E, 0x74, 0xFE, 0x6D, + 0xCC, 0x3E, 0x02, 0x13, 0x41, 0xC3, 0x32, 0x33, 0x76, 0x3A, 0x4A, 0x5B, + 0xED, 0xFC, 0x64, 0xFB, 0x17, 0x2A, 0xB1, 0x9B, 0xF6, 0xB9, 0x45, 0x83, + 0xBC, 0x42, 0x12, 0xAB, 0x91, 0xFD, 0x2A, 0x34, 0xE7, 0x56, 0xBA, 0xB8, + 0x69, 0x81, 0xBA, 0x30, 0x6C, 0x8C, 0x4B, 0xAB, 0x1D, 0x47, 0x57, 0xAA, + 0xE7, 0x3F, 0x25, 0x25, 0x7E, 0x6A, 0x2D, 0x35, 0x61, 0xB0, 0xC1, 0xAC, + 0x81, 0xFE, 0xB5, 0x28, 0x7E, 0xFF, 0x6B, 0x6B, 0x71, 0xBA, 0x60, 0x0C, + 0x56, 0xCC, 0x6D, 0xA2, 0x23, 0xB2, 0x2B, 0xFB, 0xCB, 0x16, 0x25, 0xFE, + 0x6C, 0xAC, 0x81, 0x2E, 0xAC, 0x11, 0xB2, 0x79, 0xC8, 0x7A, 0x44, 0x0B, + 0x82, 0xF8, 0xC6, 0xE0, 0x2D, 0x92, 0x58, 0x73, 0xAF, 0x8A, 0xD7, 0x3D, + 0x2C, 0x05, 0x09, 0x54, 0x2F, 0xDE, 0x12, 0x17, 0xC5, 0xB1, 0x32, 0xFA, + 0x58, 0xE4, 0x0F, 0x74, 0x1E, 0xAA, 0xAC, 0x3B, 0x35, 0xDF, 0x92, 0x9C, + 0xB2, 0xC2, 0xA6, 0x90, 0x6D, 0xD4, 0xEB, 0x13, 0xA8, 0xEA, 0xC2, 0x61, + 0xED, 0x67, 0x65, 0x44, 0xAD, 0x46, 0x28, 0x11, 0x0F, 0x46, 0x04, 0x49, + 0xE6, 0x2E, 0x1A, 0xD6, 0x67, 0x72, 0x7C, 0x0D, 0x6A, 0x8A, 0xFA, 0xDB, + 0x94, 0x66, 0x84, 0xF1, 0x31, 0x3F, 0x38, 0x1C, 0x04, 0xCF, 0x09, 0x52, + 0x2F, 0xDB, 0xF6, 0x6F, 0xEB, 0x69, 0x03, 0x10, 0x92, 0xA0, 0x95, 0x0A, + 0xE5, 0x52, 0x4A, 0x9B, 0xD7, 0x76, 0x05, 0x80, 0x07, 0x09, 0x4A, 0x3A, + 0x37, 0xCD, 0xB3, 0x73, 0x64, 0x1F, 0xAB, 0x14, 0x57, 0xA0, 0xFF, 0x9B, + 0x0D, 0x34, 0x56, 0x0A, 0x79, 0x79, 0x20, 0x7C, 0x4A, 0x52, 0xD8, 0xB4, + 0x22, 0x45, 0x88, 0x90, 0xA0, 0x35, 0x36, 0x71, 0x9B, 0xD8, 0x2E, 0xC5, + 0x89, 0x20, 0x54, 0x36, 0x7A, 0x47, 0x03, 0x45, 0xF8, 0xB2, 0x20, 0xD0, + 0xBC, 0x84, 0x05, 0x40, 0xDB, 0xD4, 0xD0, 0x1C, 0x9E, 0xF0, 0x37, 0x02, + 0x31, 0xD9, 0xDE, 0xBC, 0xBD, 0x87, 0x3E, 0xA7, 0x2A, 0xD9, 0x7E, 0x8B, + 0xBD, 0xEF, 0x67, 0xC4, 0x06, 0x00, 0x43, 0xA7, 0x89, 0xE6, 0xA8, 0x7B, + 0xBD, 0x03, 0xCB, 0xC8, 0x2F, 0x46, 0xEF, 0xA5, 0xEF, 0x16, 0x7D, 0xE3, + 0xE9, 0x63, 0xCC, 0x89, 0xFC, 0xE5, 0x14, 0x40, 0x3A, 0x5A, 0xC8, 0xBC, + 0xF6, 0xD9, 0x3D, 0xAC, 0x82, 0xB5, 0x7F, 0xB7, 0xE4, 0x8F, 0x5C, 0x0A, + 0x5F, 0x6E, 0x0C, 0xF1, 0x7E, 0xAD, 0x12, 0xFA, 0x4E, 0x01, 0xC5, 0x62, + 0xBF, 0x10, 0x27, 0xE7, 0x72, 0xC0, 0xC3, 0xA6, 0x8B, 0xF7, 0xD8, 0xA5, + 0x52, 0x20, 0xA3, 0xEE, 0x70, 0xB0, 0xF6, 0xE2, 0x6A, 0x8D, 0x29, 0x73, + 0x17, 0xBD, 0x68, 0x45, 0x25, 0x53, 0x68, 0xC5, 0x1B, 0xD5, 0xC1, 0xFF, + 0x38, 0x17, 0x25, 0x47, 0x0C, 0x2E, 0xD4, 0x3E, 0xF7, 0x91, 0x36, 0x35, + 0xAD, 0x72, 0xBE, 0x5A, 0x19, 0x04, 0x97, 0x77, 0x51, 0x5D, 0x2E, 0x51, + 0xA7, 0xC3, 0x22, 0xEE, 0xE6, 0xC9, 0x9A, 0x3B, 0x9D, 0xA2, 0x84, 0xDE, + 0x2B, 0x76, 0x62, 0x00, 0x2C, 0x4F, 0xA5, 0x12, 0xC5, 0x43, 0x8B, 0xD0, + 0x13, 0x9E, 0x88, 0x3D, 0x33, 0xC3, 0xF4, 0x41, 0x6D, 0x00, 0x3B, 0xC3, + 0xE1, 0xA1, 0x0A, 0x6A, 0x63, 0xE8, 0x42, 0x89, 0x05, 0xAF, 0xAA, 0x2B, + 0x07, 0x25, 0x5B, 0xE1, 0xAA, 0xC6, 0xA7, 0xBD, 0x72, 0xC5, 0x17, 0x75, + 0x53, 0x61, 0x20, 0x76, 0x14, 0xCC, 0x7A, 0x06, 0xF5, 0x21, 0xD2, 0x8F, + 0x8F, 0x18, 0x5C, 0x50, 0xAA, 0x98, 0xA4, 0xB9, 0x7E, 0xBF, 0xD6, 0xBA, + 0xEA, 0x9D, 0x64, 0xF3, 0x31, 0x4D, 0x48, 0x18, 0x58, 0xF0, 0x07, 0x23, + 0xD6, 0x3E, 0xCA, 0xB4, 0x54, 0xE6, 0x04, 0x19, 0x18, 0xD5, 0xC7, 0x54, + 0x85, 0x75, 0xA6, 0x58, 0x0E, 0xEB, 0x74, 0xD6, 0xF6, 0xAF, 0xB4, 0x9D, + 0x70, 0xF0, 0x7B, 0x88, 0x8B, 0x8B, 0x64, 0x2C, 0x20, 0x40, 0x98, 0x5E, + 0x2C, 0x64, 0xC6, 0x98, 0x26, 0x1D, 0x94, 0x90, 0x01, 0x03, 0x66, 0x5D, + 0x6D, 0xC0, 0xBB, 0x5A, 0xC4, 0xF0, 0x0B, 0x78, 0x4E, 0x2E, 0x89, 0xA2, + 0x86, 0x41, 0x90, 0x7B, 0x1D, 0x2C, 0x76, 0x17, 0xE5, 0x39, 0xE9, 0xF7, + 0x00, 0xC0, 0x6B, 0x1F, 0x7E, 0xC1, 0xC2, 0x15, 0xA8, 0xA3, 0xF6, 0x7C, + 0xF6, 0x19, 0x3F, 0xE0, 0xCE, 0xEF, 0x5C, 0x7B, 0x63, 0x63, 0xBE, 0x64, + 0x33, 0x0E, 0x03, 0xFE, 0xF9, 0x03, 0xD9, 0xF7, 0xDF, 0x99, 0x37, 0x70, + 0xAE, 0x6B, 0x90, 0x2A, 0x99, 0x14, 0x1D, 0x0C, 0x83, 0x6A, 0xC9, 0xEA, + 0x34, 0x8C, 0xAC, 0x51, 0x30, 0x04, 0x4A, 0x71, 0xA8, 0x8E, 0xC6, 0xD8, + 0x19, 0x70, 0xB0, 0xE4, 0x80, 0x55, 0x52, 0x09, 0x5E, 0x58, 0x22, 0xFF, + 0x80, 0xC1, 0xAE, 0x0A, 0x87, 0xC7, 0xBE, 0xC7, 0x95, 0xEA, 0x98, 0x5A, + 0xC0, 0x67, 0xA3, 0xDA, 0x68, 0xEF, 0xBA, 0x48, 0xF1, 0xA0, 0x2C, 0x33, + 0x56, 0x1A, 0x45, 0xB8, 0xA3, 0x70, 0xA8, 0xD3, 0xB2, 0xCF, 0x1C, 0xC0, + 0x02, 0x1E, 0xDA, 0x14, 0x0B, 0x2C, 0x03, 0xEA, 0xEC, 0x2E, 0x2B, 0x21, + 0x1C, 0xE1, 0x99, 0xDF, 0x46, 0xD1, 0xC1, 0xE9, 0x00, 0x90, 0xB6, 0x7D, + 0x79, 0xA2, 0x42, 0xF7, 0x0E, 0x67, 0xE3, 0x8B, 0xE1, 0x42, 0x26, 0x7A, + 0x69, 0x82, 0x9D, 0x5C, 0x26, 0xFE, 0xE2, 0x6D, 0x51, 0x48, 0x74, 0x4A, + 0xE1, 0xA7, 0x77, 0x07, 0x09, 0xA3, 0x30, 0x0B, 0x48, 0x4F, 0x64, 0xB1, + 0x84, 0x91, 0xFF, 0x81, 0xFF, 0x5C, 0x94, 0x08, 0x44, 0xA8, 0xD6, 0x80, + 0x5B, 0x26, 0xF7, 0x5A, 0xDC, 0xF0, 0xC1, 0x6D, 0xED, 0xAF, 0xC3, 0x8D, + 0xFA, 0x54, 0xE4, 0xB1, 0x8F, 0x03, 0x45, 0x01, 0x63, 0x72, 0x17, 0x81, + 0x21, 0x1D, 0x1E, 0xF3, 0x19, 0x2A, 0xD2, 0x43, 0x4C, 0x6E, 0xC8, 0x83, + 0x13, 0x13, 0x4A, 0x00, 0x7E, 0xEF, 0x2D, 0x06, 0x07, 0x40, 0x81, 0x0A, + 0xC3, 0xE8, 0x13, 0xF6, 0xDC, 0xD7, 0x2C, 0xEB, 0xEC, 0x7C, 0xF9, 0x7B, + 0xC9, 0xD1, 0x79, 0x3A, 0x18, 0x74, 0xFF, 0xE8, 0xB3, 0xAC, 0x06, 0xDC, + 0x68, 0x07, 0x35, 0x0A, 0x45, 0x67, 0x5B, 0xC8, 0x1C, 0x3D, 0x4F, 0x77, + 0xCD, 0x1D, 0xEF, 0x2E, 0xBD, 0xA7, 0x2E, 0xD4, 0xD7, 0x2E, 0x32, 0xEC, + 0x89, 0x42, 0x46, 0x4B, 0x68, 0x60, 0x86, 0x72, 0xA9, 0x9B, 0xC3, 0x36, + 0xDE, 0x00, 0xBF, 0xCF, 0x4A, 0xFD, 0x2C, 0x98, 0xEE, 0x98, 0x6F, 0xD7, + 0xA7, 0x7B, 0xE4, 0xDA, 0xF6, 0xE2, 0x6E, 0x33, 0x29, 0x7F, 0x7E, 0xA0, + 0xE9, 0x6A, 0x07, 0x69, 0xA8, 0xF3, 0x65, 0xC6, 0x8F, 0x9D, 0x43, 0x88, + 0xDB, 0xF9, 0x7A, 0x81, 0x7C, 0x8F, 0xF0, 0x99, 0xC7, 0x4A, 0x30, 0xC0, + 0x5C, 0x15, 0x21, 0x00, 0xC7, 0x19, 0x23, 0x48, 0xD7, 0x4E, 0x64, 0x8C, + 0xA4, 0x26, 0x94, 0x80, 0x24, 0xC1, 0xC1, 0x87, 0xC9, 0x55, 0x51, 0x90, + 0x7F, 0x9A, 0xDB, 0x2A, 0x7E, 0x56, 0xCA, 0xE1, 0xDF, 0x81, 0xD9, 0x8B, + 0x78, 0xAB, 0x7C, 0x65, 0x04, 0x69, 0x49, 0x6C, 0x42, 0x8D, 0x48, 0x24, + 0x1C, 0xB7, 0x8A, 0x58, 0xAA, 0x18, 0x8E, 0xF3, 0xD1, 0x73, 0xB2, 0x20, + 0xD9, 0x46, 0x0C, 0x5A, 0xBE, 0x76, 0x2E, 0x86, 0x9F, 0xD5, 0x15, 0xA9, + 0x7C, 0x24, 0x09, 0x05, 0x0F, 0xF0, 0x3E, 0xB9, 0x9A, 0x12, 0x1A, 0xDC, + 0x41, 0x5A, 0x9F, 0x50, 0x3C, 0x76, 0xE5, 0x21, 0x98, 0x33, 0x1A, 0xA1, + 0x90, 0x2C, 0xF0, 0x22, 0x1A, 0x3D, 0x20, 0x24, 0xC4, 0x96, 0xC9, 0x13, + 0xD5, 0x8D, 0x81, 0x89, 0xA1, 0x61, 0x88, 0xAA, 0xEC, 0x8C, 0xDC, 0x31, + 0x7E, 0x3A, 0xFD, 0x6A, 0xBF, 0x8F, 0x97, 0x03, 0x67, 0x58, 0x31, 0xD3, + 0x2D, 0x63, 0xFC, 0x67, 0x8D, 0x14, 0xC3, 0xEB, 0xB7, 0xF8, 0x3E, 0x85, + 0xD3, 0x8F, 0x9E, 0xD7, 0xB4, 0x86, 0x3C, 0xDB, 0xD2, 0x5F, 0x0D, 0xD2, + 0xB2, 0xD1, 0xFC, 0xA5, 0x95, 0x4E, 0x80, 0x9E, 0x4E, 0x8D, 0x93, 0xAD, + 0xB3, 0xCA, 0x8A, 0xE0, 0xBC, 0x54, 0x7F, 0xD6, 0xB1, 0x74, 0xC0, 0xE8, + 0x4A, 0xF5, 0xC7, 0x72, 0xA7, 0xB7, 0x42, 0x4D, 0xD9, 0x60, 0x15, 0xEB, + 0xB6, 0x29, 0x02, 0x1F, 0x83, 0x78, 0x58, 0x09, 0x9E, 0x50, 0xA3, 0x39, + 0xC6, 0x22, 0x1E, 0xD1, 0xE6, 0xB9, 0x5A, 0xA3, 0x6F, 0x80, 0x43, 0xA9, + 0x58, 0x0B, 0x8C, 0x60, 0xF4, 0xC2, 0xD2, 0x0F, 0x9C, 0x78, 0xFE, 0xB1, + 0x33, 0x01, 0x67, 0xFF, 0xEC, 0x93, 0xC1, 0x6C, 0x77, 0x04, 0x1E, 0xD7, + 0xD2, 0x65, 0xDD, 0xF5, 0xAF, 0x6D, 0xC2, 0x04, 0x33, 0xF9, 0x38, 0x8F, + 0xF3, 0xCF, 0x80, 0x7D, 0x46, 0xFA, 0x53, 0x58, 0x30, 0xA6, 0x0B, 0x47, + 0xAE, 0xF0, 0xCB, 0x31, 0xA2, 0xC2, 0xB4, 0xB9, 0xA3, 0x8C, 0xA3, 0xAA, + 0x48, 0xF5, 0x0E, 0x8E, 0x45, 0x92, 0x12, 0xFB, 0x17, 0x8F, 0xC3, 0x2C, + 0x8D, 0xA7, 0x93, 0x2A, 0xB3, 0x76, 0x7B, 0x8D, 0xE6, 0x66, 0xBF, 0x9A, + 0x88, 0x64, 0x91, 0x2C, 0xD5, 0x9D, 0xE6, 0x28, 0xD6, 0x91, 0x48, 0xAC, + 0x5D, 0xCB, 0xE1, 0x9B, 0x1E, 0x9C, 0x73, 0xF4, 0xCB, 0x54, 0x3D, 0x72, + 0xED, 0xA0, 0xFA, 0x97, 0x00, 0xCB, 0x32, 0x69, 0xCC, 0xB7, 0x00, 0x61, + 0xE8, 0x97, 0x78, 0x79, 0xBA, 0x3D, 0x7B, 0x98, 0xA8, 0xBF, 0xA0, 0xF2, + 0x3B, 0x23, 0x22, 0x02, 0x10, 0x16, 0xB2, 0x93, 0xE1, 0x74, 0x95, 0x65, + 0xE5, 0x5F, 0x53, 0xEC, 0x70, 0x9F, 0x9F, 0xB6, 0xDD, 0x0B, 0xFF, 0xB4, + 0x48, 0x34, 0x1F, 0xA1, 0xF6, 0xBF, 0x61, 0x36, 0x4B, 0xF2, 0xCD, 0xE4, + 0xD6, 0x88, 0x08, 0x4A, 0x17, 0xE9, 0x33, 0xC6, 0xCA, 0x44, 0xD6, 0x00, + 0xA1, 0x6D, 0x2C, 0xFD, 0x09, 0x80, 0x51, 0xB8, 0xDC, 0xA1, 0xF9, 0x7D, + 0x55, 0x87, 0xE1, 0x52, 0x66, 0xF3, 0xA5, 0xF7, 0x0E, 0x61, 0xFC, 0x7B, + 0xA5, 0xC0, 0x26, 0x82, 0x37, 0x7A, 0x2D, 0xBF, 0xEA, 0x0E, 0xBD, 0xF3, + 0xCD, 0x50, 0x4C, 0x7E, 0x0F, 0xD2, 0xCC, 0x90, 0x81, 0x25, 0x28, 0xAF, + 0xD5, 0x7E, 0x89, 0xA5, 0xA8, 0x18, 0x2C, 0x6B, 0x53, 0x07, 0x51, 0xE5, + 0x09, 0x07, 0x3E, 0xCF, 0x58, 0xB8, 0x49, 0xCA, 0xE7, 0xA3, 0x36, 0x88, + 0xAD, 0x46, 0xF4, 0x8F, 0xA9, 0x55, 0x53, 0x02, 0xED, 0x8D, 0xFE, 0x50, + 0x20, 0xD6, 0x5E, 0xD4, 0xEB, 0x2B, 0x34, 0x3D, 0x04, 0x84, 0x39, 0x20, + 0x16, 0xCD, 0xDF, 0x40, 0x06, 0x2E, 0xE1, 0xB7, 0x81, 0x13, 0xE3, 0xC2, + 0x94, 0x5A, 0xFF, 0xE4, 0x4D, 0xBC, 0x1A, 0x80, 0x9A, 0x17, 0xBD, 0x1C, + 0xD3, 0x2B, 0x3C, 0xDE, 0xE4, 0x77, 0xA6, 0x59, 0x48, 0x5A, 0x1C, 0xE1, + 0x81, 0x89, 0xAF, 0x34, 0xBC, 0x2F, 0xC2, 0x69, 0x39, 0x9E, 0xE9, 0xEF, + 0x9B, 0x72, 0x56, 0x19, 0x90, 0x5E, 0x54, 0x09, 0xF7, 0x5D, 0xBF, 0x04, + 0x4F, 0x4D, 0x9A, 0x0B, 0x93, 0x55, 0x09, 0xDB, 0x63, 0xB1, 0xF3, 0x7C, + 0xD8, 0xB0, 0x8A, 0x69, 0x43, 0x1E, 0x11, 0x3B, 0x57, 0x6C, 0x0B, 0x04, + 0xC8, 0x38, 0xFF, 0x1F, 0x11, 0x07, 0xF7, 0x05, 0x9E, 0x15, 0x3E, 0xF9, + 0x37, 0x34, 0x66, 0x33, 0x0B, 0x33, 0x01, 0xBE, 0x7B, 0xD6, 0xDA, 0x54, + 0x38, 0xA9, 0x5B, 0x82, 0x83, 0xCC, 0x91, 0xD4, 0x89, 0xA2, 0x3F, 0x88, + 0x46, 0x4A, 0x38, 0xE7, 0x23, 0x03, 0xCB, 0x80, 0x3B, 0xFA, 0xFE, 0xB9, + 0x1E, 0xE9, 0x2D, 0x3C, 0x64, 0x60, 0x2D, 0xB6, 0xAC, 0xBA, 0xAB, 0xD6, + 0x51, 0x15, 0xB2, 0x1A, 0xB6, 0x98, 0xBB, 0x67, 0x2D, 0x04, 0xBB, 0x78, + 0x6D, 0xE5, 0xFB, 0x95, 0x8B, 0xE5, 0xCC, 0xAD, 0xE4, 0x15, 0xBB, 0x5F, + 0xF0, 0x56, 0x41, 0x06, 0x4D, 0x21, 0x10, 0x61, 0x3C, 0x63, 0xAC, 0x59, + 0x83, 0x2D, 0x4F, 0x0E, 0x52, 0xDB, 0x0A, 0x9D, 0x3B, 0xCB, 0x61, 0xAA, + 0x4D, 0x84, 0xB2, 0xC2, 0xFC, 0x7E, 0x67, 0xD3, 0x86, 0x3E, 0x83, 0xF2, + 0x6B, 0x1C, 0x8D, 0xD2, 0x6C, 0x55, 0x80, 0x14, 0x54, 0xC9, 0x14, 0x7E, + 0x14, 0xD9, 0x2A, 0xEE, 0x53, 0xAE, 0xB8, 0x27, 0xB3, 0x34, 0x02, 0xD2, + 0xFE, 0xA3, 0xC8, 0x75, 0x81, 0x6E, 0xC7, 0xCE, 0x83, 0xD5, 0xCB, 0xDF, + 0x5C, 0xED, 0xD2, 0x5A, 0xCC, 0xA9, 0x4E, 0xD1, 0x0A, 0x50, 0x0C, 0x9D, + 0x84, 0x79, 0x84, 0x6D, 0xA4, 0x41, 0x53, 0x69, 0x0E, 0x6C, 0x7D, 0x19, + 0x66, 0x1D, 0x05, 0xCE, 0xF8, 0xBE, 0xCC, 0xF8, 0xC5, 0x22, 0x0B, 0x8A, + 0x12, 0xC1, 0xB6, 0xF1, 0x96, 0xC7, 0xEA, 0xDC, 0xAE, 0x8D, 0xE9, 0x4A, + 0x88, 0x8B, 0xC0, 0xA9, 0xBD, 0xE7, 0xA4, 0x61, 0x3C, 0xE7, 0x8A, 0xB5, + 0x60, 0x5C, 0xA3, 0x02, 0x63, 0x6A, 0x3D, 0xE3, 0xBB, 0x25, 0x62, 0xA6, + 0xC1, 0xFA, 0x37, 0x10, 0x51, 0x24, 0x85, 0x7A, 0x2F, 0x03, 0x07, 0x35, + 0x0E, 0xDF, 0xFE, 0xA1, 0x81, 0x06, 0xCC, 0xC4, 0xBA, 0xFA, 0xE7, 0x92, + 0x1E, 0xCA, 0xB2, 0x2C, 0x69, 0x92, 0xAD, 0x10, 0xDF, 0x14, 0xBA, 0xC0, + 0xD1, 0xE0, 0x80, 0x56, 0x63, 0xF7, 0x02, 0x63, 0x9B, 0x2C, 0xEA, 0xE6, + 0x07, 0x14, 0x77, 0x30, 0xD9, 0x9A, 0xA5, 0xEF, 0xE8, 0xF1, 0x69, 0xA9, + 0x8B, 0x74, 0xD6, 0xCB, 0x4A, 0xAB, 0x3E, 0xD0, 0x05, 0xCF, 0xC7, 0xCB, + 0x5F, 0x77, 0x61, 0x0B, 0xF3, 0xEF, 0x84, 0x42, 0x63, 0x1A, 0x08, 0x90, + 0x38, 0xCC, 0xCC, 0x77, 0x73, 0xF4, 0x10, 0x16, 0x3B, 0x88, 0x6A, 0x36, + 0x7F, 0x3D, 0x1B, 0x47, 0xA8, 0x43, 0x13, 0xDE, 0x0F, 0x3E, 0xF8, 0x32, + 0xEB, 0xE0, 0x13, 0x3F, 0xE9, 0x45, 0x64, 0x17, 0xAD, 0x1D, 0x94, 0x00, + 0x89, 0x5B, 0xDD, 0x1B, 0xD8, 0xCC, 0x3C, 0x2A, 0x48, 0xB3, 0xF8, 0xB8, + 0xF1, 0xC1, 0x3D, 0x36, 0x45, 0xB6, 0xDC, 0x29, 0x47, 0x8F, 0x1D, 0x5B, + 0x3C, 0x11, 0xF1, 0xEC, 0xA0, 0xB6, 0x74, 0xBF, 0xF0, 0x55, 0xC6, 0x52, + 0x65, 0x24, 0x6E, 0x75, 0xE5, 0xC0, 0x3D, 0xE1, 0x34, 0x50, 0xB2, 0xB1, + 0xD2, 0xC4, 0x69, 0xAB, 0x31, 0xB5, 0xFD, 0x10, 0xAD, 0x10, 0x00, 0x18, + 0x87, 0x0B, 0x63, 0xEC, 0x74, 0x72, 0x07, 0xCC, 0x6B, 0xD8, 0x46, 0x69, + 0x4A, 0x3A, 0xD1, 0x2B, 0x25, 0x6C, 0xF7, 0x45, 0x84, 0x1D, 0x97, 0x63, + 0x70, 0x68, 0xF4, 0x8B, 0x33, 0x4A, 0xE5, 0x16, 0x81, 0xD2, 0x50, 0x2B, + 0xD8, 0x51, 0xEC, 0x33, 0xDB, 0xC8, 0xC0, 0x50, 0xE3, 0xF0, 0x1B, 0x57, + 0xFC, 0xC9, 0x7D, 0x7A, 0xC4, 0xA4, 0xF3, 0x39, 0x73, 0xAB, 0xAE, 0x42, + 0x71, 0x4B, 0xF0, 0xD1, 0xAD, 0xF4, 0x67, 0x3A, 0x9E, 0xFD, 0xA9, 0xA7, + 0x22, 0xF9, 0x06, 0x93, 0xEE, 0xBA, 0x96, 0xB4, 0x31, 0x69, 0x41, 0x8A, + 0x6D, 0x8D, 0x7C, 0xBA, 0x03, 0xBB, 0x56, 0x91, 0xAA, 0x63, 0x58, 0xC0, + 0x99, 0x61, 0xF8, 0x83, 0x65, 0x9D, 0x0B, 0x95, 0x64, 0x6D, 0xD6, 0x24, + 0x9D, 0x52, 0x6F, 0x4A, 0x46, 0xDD, 0x77, 0x09, 0x10, 0x4B, 0x4F, 0x94, + 0x82, 0x3E, 0xA6, 0xB4, 0x48, 0xE9, 0x9D, 0x5E, 0x8D, 0x79, 0x36, 0xDD, + 0x4A, 0xF4, 0x23, 0x79, 0x10, 0x38, 0xF4, 0x4D, 0x53, 0xA4, 0xB9, 0xD1, + 0xC3, 0xF3, 0x79, 0x31, 0xC3, 0x63, 0xBD, 0x71, 0x0B, 0x6A, 0x0C, 0x5F, + 0x08, 0x6E, 0xB5, 0x36, 0x89, 0x03, 0x16, 0x5D, 0x26, 0xCE, 0x9C, 0xBF, + 0x8F, 0x7E, 0x8D, 0x9A, 0x0B, 0x01, 0x77, 0xD1, 0x94, 0xA9, 0x39, 0x04, + 0x20, 0x02, 0xF0, 0x90, 0x4A, 0x89, 0xF0, 0x6F, 0x22, 0xD9, 0xC5, 0x05, + 0xDD, 0x2A, 0xB7, 0xDA, 0x78, 0x9A, 0x2C, 0xEB, 0xA0, 0x43, 0xE8, 0xAB, + 0x82, 0xA4, 0xF2, 0x5F, 0xA2, 0xFA, 0xC3, 0x30, 0x3E, 0x75, 0xCE, 0x2A, + 0xFC, 0x5B, 0x46, 0x87, 0x94, 0xC8, 0x6E, 0x3A, 0x97, 0x07, 0x31, 0x1D, + 0x80, 0xE0, 0xD8, 0xC7, 0x80, 0x43, 0x47, 0xC5, 0xA3, 0xBD, 0xFA, 0x47, + 0x6B, 0x09, 0x21, 0xF8, 0x2D, 0xA0, 0xFE, 0x41, 0x78, 0xC1, 0x44, 0x54, + 0xE5, 0xAD, 0x1E, 0xCF, 0x9B, 0x67, 0xED, 0x27, 0x5C, 0x76, 0x1A, 0x16, + 0x08, 0x8A, 0x70, 0x7D, 0x74, 0x93, 0x0B, 0x01, 0x7A, 0x3E, 0x5E, 0x15, + 0xBD, 0x4B, 0xFC, 0x29, 0x34, 0x11, 0x43, 0x95, 0x0F, 0xE7, 0x50, 0xCC, + 0xAD, 0xE3, 0xD4, 0x1F, 0x53, 0x5B, 0x85, 0x52, 0x72, 0x3C, 0x65, 0x2F, + 0xFA, 0x34, 0xD7, 0x1C, 0xAF, 0x81, 0x74, 0x7F, 0xCD, 0x2C, 0x14, 0x08, + 0xD6, 0x72, 0xA6, 0xBF, 0x7F, 0x5B, 0x23, 0x74, 0x55, 0xFD, 0xBF, 0x58, + 0x4C, 0x1F, 0x26, 0x4C, 0x77, 0xDA, 0x0B, 0x11, 0xDD, 0x11, 0x99, 0x10, + 0xB6, 0x9A, 0xE5, 0x77, 0xA5, 0x63, 0x81, 0xF7, 0x2B, 0x9D, 0x8E, 0xD1, + 0xFE, 0xF8, 0x8D, 0x8E, 0x24, 0x12, 0x5B, 0x7D, 0x3A, 0xDD, 0x49, 0xAD, + 0x06, 0xEE, 0x1F, 0x8C, 0x95, 0x9A, 0x8F, 0x2C, 0xEF, 0xF5, 0x85, 0x61, + 0xAF, 0x09, 0xB0, 0x27, 0x16, 0x48, 0xC6, 0x37, 0x2D, 0x0A, 0x17, 0xC4, + 0xDA, 0x53, 0x51, 0xEB, 0x42, 0x95, 0xCA, 0x14, 0x32, 0x93, 0x5B, 0x40, + 0x92, 0x08, 0x6A, 0xE9, 0xB3, 0x66, 0x9D, 0xE0, 0x81, 0x57, 0x9A, 0x38, + 0x4A, 0x23, 0xFE, 0x8F, 0x02, 0x65, 0x33, 0x35, 0x55, 0xB8, 0xB2, 0x34, + 0x9D, 0xD2, 0xDC, 0xD7, 0xF4, 0x19, 0x1D, 0x83, 0x2A, 0x91, 0xF0, 0x84, + 0xD6, 0x7F, 0x45, 0x63, 0x6E, 0x4F, 0x0E, 0x7E, 0x59, 0xBC, 0x22, 0x92, + 0xD4, 0xC5, 0xCF, 0xE8, 0xED, 0x15, 0x8C, 0xB5, 0xAA, 0x43, 0x17, 0xE0, + 0x46, 0x04, 0x7A, 0x80, 0x15, 0x0A, 0x40, 0xE8, 0x6E, 0x4E, 0x53, 0x10, + 0x7E, 0xB1, 0x71, 0x43, 0x20, 0x14, 0xA3, 0xF5, 0xD2, 0x04, 0x37, 0x90, + 0xA8, 0xBF, 0x4C, 0x4E, 0x1E, 0xB7, 0xCE, 0x0F, 0x0C, 0xD1, 0x82, 0x64, + 0x4B, 0x79, 0x47, 0x12, 0xE6, 0x7A, 0x4E, 0xC1, 0xAD, 0xFD, 0xFE, 0x31, + 0x09, 0x36, 0x41, 0x24, 0x0A, 0xCF, 0x20, 0x0C, 0xC3, 0x04, 0x57, 0x39, + 0xDD, 0x9C, 0x3E, 0x2E, 0xED, 0xAD, 0x96, 0x20, 0xBD, 0xC6, 0xB7, 0x18, + 0xEC, 0x03, 0x2E, 0xFC, 0x45, 0x93, 0xD2, 0x09, 0x13, 0xAE, 0xB8, 0x22, + 0xFB, 0x4B, 0xB4, 0x7D, 0x0F, 0x5E, 0x9F, 0xE1, 0xFB, 0x94, 0xA4, 0xC7, + 0x07, 0x9E, 0x72, 0x48, 0x7F, 0xEC, 0xC5, 0x0A, 0x19, 0xD5, 0x54, 0x2B, + 0x77, 0x16, 0x0A, 0xDC, 0x22, 0xC7, 0x03, 0x12, 0x9E, 0x11, 0xAC, 0x70, + 0x44, 0x1D, 0xA4, 0xC5, 0xE2, 0x19, 0x9B, 0xE3, 0xDC, 0x05, 0x36, 0x30, + 0x92, 0xCC, 0xC3, 0xF7, 0xCF, 0xD5, 0x67, 0x3C, 0xF7, 0x99, 0x37, 0x16, + 0xB3, 0x38, 0x38, 0xEE, 0x66, 0x7C, 0x80, 0xFD, 0x02, 0x94, 0xFA, 0x1F, + 0x10, 0xD9, 0xA8, 0x45, 0x58, 0x91, 0x85, 0xDA, 0x1F, 0xF2, 0x6B, 0xE3, + 0x8F, 0x09, 0xB8, 0xA1, 0x17, 0xA2, 0xF0, 0x75, 0x5B, 0x5D, 0xEC, 0x39, + 0x86, 0x0C, 0x88, 0xAE, 0xF6, 0x99, 0x7F, 0x55, 0x70, 0x52, 0xF0, 0x63, + 0x66, 0x75, 0x80, 0xF4, 0x87, 0x13, 0x01, 0x26, 0x82, 0x39, 0xE3, 0x2F, + 0xE2, 0x5F, 0xCF, 0xFC, 0x22, 0x28, 0xE9, 0x75, 0x8F, 0xCD, 0x7A, 0x03, + 0x77, 0xB0, 0x4E, 0x19, 0x03, 0x73, 0x2B, 0xFB, 0x87, 0xF4, 0x94, 0x18, + 0xF8, 0xF7, 0xCB, 0x94, 0x7C, 0xB9, 0x54, 0xD5, 0xED, 0xC5, 0x47, 0x3B, + 0x12, 0xA1, 0x65, 0x05, 0x39, 0x45, 0x5A, 0x51, 0x75, 0x3B, 0xC8, 0x84, + 0x6F, 0x1F, 0x5D, 0x6C, 0x7E, 0xBE, 0xE2, 0x42, 0x1A, 0xD8, 0x74, 0x0D, + 0x17, 0x62, 0x9B, 0xBE, 0xDF, 0x55, 0x15, 0x50, 0xC4, 0xDF, 0x95, 0x92, + 0x9D, 0xCD, 0xA2, 0x3F, 0x38, 0x5C, 0x09, 0x51, 0xBB, 0xF4, 0xD8, 0xE9, + 0xEF, 0xB0, 0x88, 0x0C, 0x92, 0x7F, 0xCB, 0x01, 0x91, 0x13, 0x7A, 0x44, + 0xA1, 0x98, 0x2E, 0x0E, 0x12, 0x63, 0xA7, 0xBC, 0xD3, 0x0C, 0x07, 0xE0, + 0xD4, 0x72, 0xF5, 0x45, 0xCE, 0x44, 0x4D, 0xF8, 0x76, 0xF9, 0x1A, 0x1C, + 0xF5, 0x80, 0xB2, 0x93, 0x23, 0x93, 0x9B, 0xEE, 0x99, 0x35, 0xE4, 0xBB, + 0xE9, 0x4D, 0x72, 0xFC, 0xA0, 0xE6, 0x7B, 0x27, 0x67, 0x11, 0x88, 0x9B, + 0xAA, 0x38, 0x8D, 0x6C, 0x33, 0x52, 0x5D, 0xD6, 0x22, 0xF4, 0xBC, 0xD1, + 0xCD, 0x9C, 0x74, 0x3A, 0xEA, 0x2B, 0xB0, 0x20, 0x2E, 0xAA, 0x75, 0xF2, + 0xD6, 0xDA, 0xFB, 0x93, 0xDB, 0x71, 0xB6, 0x07, 0xD9, 0x85, 0xCA, 0xBB, + 0x45, 0x97, 0x00, 0x42, 0xA8, 0xD1, 0xA3, 0x44, 0x13, 0x66, 0xAF, 0x0A, + 0xA0, 0xEB, 0x2F, 0xA3, 0x27, 0x64, 0x78, 0x46, 0x9C, 0xE4, 0x99, 0xA5, + 0x47, 0x96, 0xC1, 0xD1, 0x99, 0x5C, 0x9A, 0x6A, 0xBA, 0x5E, 0xC6, 0xBA, + 0xEB, 0x63, 0x19, 0x6F, 0xC9, 0xDB, 0x36, 0xD8, 0xAD, 0x58, 0x44, 0x30, + 0x8F, 0x59, 0x19, 0x42, 0xAF, 0x6A, 0x1B, 0x8A, 0xC9, 0xA2, 0xAE, 0x00, + 0x5D, 0x5A, 0x09, 0x33, 0xAC, 0x02, 0xDA, 0x64, 0xAF, 0xDD, 0xDF, 0x15, + 0x2A, 0xA2, 0xD2, 0xA1, 0xA6, 0x93, 0x5C, 0xE1, 0x10, 0xC3, 0x6A, 0x10, + 0xA5, 0x97, 0x2D, 0x6D, 0xD9, 0xA9, 0xB5, 0x36, 0x71, 0x54, 0xC4, 0xEF, + 0xC8, 0xC6, 0x17, 0x30, 0xDD, 0xCF, 0x96, 0x86, 0xC8, 0x63, 0x60, 0x21, + 0xAB, 0x3D, 0xBA, 0x40, 0x8F, 0x30, 0x16, 0xBE, 0xD9, 0xDF, 0x7E, 0x13, + 0xCB, 0xBF, 0xF7, 0x0E, 0x33, 0x31, 0x18, 0xED, 0x1E, 0x47, 0xD8, 0xF2, + 0xCF, 0x42, 0xC8, 0xF3, 0x2C, 0x20, 0x00, 0xB1, 0x8F, 0xB9, 0x1F, 0xEA, + 0x82, 0x11, 0x03, 0x8D, 0xB5, 0x25, 0xB4, 0x84, 0x79, 0x97, 0xDC, 0x56, + 0x3C, 0x8B, 0x41, 0x9A, 0x01, 0x63, 0x7A, 0xF7, 0x66, 0x0F, 0x05, 0xF7, + 0x4A, 0xDC, 0x05, 0x03, 0x29, 0x5C, 0xF1, 0x89, 0x8D, 0x38, 0x19, 0x48, + 0x38, 0xBE, 0x82, 0xCD, 0x04, 0x16, 0xEC, 0xD6, 0x68, 0xB8, 0x00, 0x3D, + 0xC6, 0x6E, 0xDA, 0x10, 0x0F, 0x12, 0x19, 0x18, 0xAE, 0x24, 0x29, 0x2E, + 0xD1, 0x5D, 0xD3, 0xA2, 0x7A, 0x8A, 0x10, 0x20, 0xB5, 0x8A, 0xD4, 0x41, + 0x66, 0x8E, 0x00, 0x9E, 0x29, 0x11, 0x3A, 0xBD, 0xEA, 0x66, 0xA6, 0x18, + 0x87, 0xD3, 0xEE, 0x0F, 0x17, 0xE5, 0x5B, 0xB9, 0x16, 0x56, 0x22, 0xDD, + 0x9C, 0xB6, 0x02, 0xBD, 0x6C, 0x19, 0xBA, 0x85, 0x1F, 0x44, 0xB7, 0x88, + 0x43, 0x45, 0xBE, 0x29, 0x65, 0xA2, 0xBE, 0xC1, 0x4E, 0xCF, 0x25, 0x53, + 0xD6, 0xC2, 0x53, 0x59, 0xF9, 0xA3, 0xC3, 0x52, 0x9C, 0xEE, 0xE0, 0x92, + 0x39, 0x20, 0x97, 0xA0, 0xF7, 0x8C, 0x58, 0x8B, 0x7A, 0xEA, 0x05, 0x7B, + 0x6B, 0x92, 0x65, 0xAC, 0x63, 0x9C, 0x11, 0x06, 0xB5, 0x2F, 0xC2, 0x5D, + 0x97, 0x55, 0x88, 0x25, 0x3C, 0x37, 0xE8, 0x8D, 0xBE, 0xB2, 0x3C, 0xFB, + 0xC5, 0x0D, 0xD9, 0x6B, 0xA6, 0x7F, 0xD4, 0xD7, 0xB9, 0xB8, 0x56, 0xC3, + 0x9B, 0xA0, 0x75, 0x7B, 0x3D, 0x5D, 0xF4, 0x53, 0xED, 0xF7, 0xBF, 0xA7, + 0xD9, 0xD8, 0x0C, 0x14, 0x4F, 0xD6, 0xA4, 0xAC, 0xB3, 0x33, 0x44, 0x62, + 0x04, 0x52, 0xB4, 0xA2, 0xE3, 0x1E, 0x46, 0x73, 0x78, 0x92, 0x66, 0x24, + 0xEB, 0x43, 0x46, 0xEC, 0x6C, 0x1D, 0x7B, 0xA1, 0x0B, 0x55, 0xCB, 0xA1, + 0xF7, 0x7F, 0xCA, 0x78, 0x46, 0x22, 0x8F, 0xD7, 0xB2, 0x42, 0x86, 0x4A, + 0xE9, 0xCC, 0xFC, 0x77, 0x88, 0x84, 0x95, 0x0A, 0x24, 0x8B, 0xB5, 0xC2, + 0x66, 0x6B, 0xA3, 0x91, 0x47, 0xFD, 0x5B, 0x87, 0x9B, 0xE0, 0xBF, 0xB0, + 0x49, 0x38, 0xD9, 0x6D, 0x05, 0x7A, 0x53, 0xFF, 0xDC, 0xE8, 0x9C, 0xB9, + 0xAF, 0x59, 0xFD, 0xE5, 0xD4, 0xE3, 0x3A, 0x58, 0xCD, 0xA7, 0x9C, 0x6F, + 0xE0, 0x19, 0x17, 0xB4, 0x14, 0xFD, 0x16, 0xD5, 0x39, 0x77, 0x8F, 0xCE, + 0x7F, 0xC0, 0xF1, 0x5F, 0xE1, 0x69, 0x26, 0x89, 0x4C, 0x43, 0xCA, 0xD7, + 0x37, 0x51, 0x12, 0x6B, 0x45, 0x3D, 0x8B, 0xD9, 0xD7, 0x8B, 0xDB, 0x22, + 0x33, 0x79, 0x34, 0x56, 0xE7, 0xDC, 0x00, 0xBD, 0xD1, 0x98, 0x52, 0xAC, + 0x1D, 0x47, 0x69, 0xFF, 0x88, 0xBF, 0x15, 0x3F, 0x7D, 0xDF, 0x12, 0x26, + 0xF7, 0x1F, 0xBD, 0xD4, 0x13, 0x52, 0x86, 0xB5, 0x2F, 0x4F, 0x0F, 0xD2, + 0x44, 0x6A, 0xB7, 0x71, 0x67, 0x69, 0x2E, 0x76, 0x56, 0x82, 0xFA, 0x88, + 0x8B, 0xE2, 0x80, 0x45, 0x31, 0x4E, 0xE8, 0xEF, 0xFC, 0x48, 0xEA, 0x2E, + 0x10, 0x9C, 0x73, 0x12, 0x89, 0xA6, 0x17, 0x3A, 0xFE, 0x2E, 0x4C, 0x33, + 0x97, 0x54, 0x3C, 0x8D, 0x0F, 0xAC, 0xA5, 0xD0, 0x71, 0x62, 0x73, 0x97, + 0xF8, 0xED, 0xD5, 0xCF, 0xC5, 0x18, 0x67, 0x1A, 0x1C, 0xE2, 0xA6, 0x2E, + 0xD1, 0x51, 0x74, 0x57, 0xD3, 0xE8, 0x6E, 0x60, 0x00, 0x96, 0x2D, 0x3E, + 0x7F, 0xD3, 0x05, 0xB0, 0x22, 0xC2, 0x0F, 0xF4, 0x69, 0x73, 0xAF, 0xC2, + 0x02, 0x22, 0x40, 0xF9, 0x6F, 0x35, 0x13, 0x04, 0xA4, 0x48, 0xD3, 0xE7, + 0xEE, 0x88, 0xC4, 0x03, 0xD5, 0x0D, 0x90, 0x48, 0x97, 0x8A, 0x9D, 0x12, + 0x02, 0xE9, 0x04, 0xD4, 0x2A, 0xA6, 0x13, 0xF6, 0x04, 0x3C, 0x76, 0x0D, + 0x37, 0xBB, 0xF5, 0x8A, 0x12, 0x04, 0x3A, 0xFE, 0xAC, 0xA7, 0x8D, 0xB8, + 0x6E, 0xC4, 0xA5, 0x26, 0x84, 0xFF, 0xEA, 0x81, 0x8D, 0x33, 0x2D, 0xF0, + 0x9D, 0x0B, 0xFB, 0x04, 0x7B, 0x46, 0x71, 0x57, 0xA0, 0x24, 0xD9, 0xF6, + 0x8A, 0x44, 0x16, 0xE1, 0x7F, 0x28, 0xD2, 0xC5, 0xC2, 0xEF, 0x8D, 0xA9, + 0x63, 0x8B, 0x6B, 0x98, 0x50, 0x1A, 0xB4, 0x66, 0xFB, 0xCD, 0x3D, 0x1E, + 0x79, 0x86, 0x22, 0xA3, 0xB3, 0x78, 0xBF, 0x0D, 0x2E, 0x66, 0x45, 0x0A, + 0xA0, 0x58, 0xE9, 0x4D, 0x52, 0x5E, 0x9E, 0x07, 0xAD, 0x05, 0x3D, 0x35, + 0x17, 0xA2, 0x65, 0x0C, 0xFE, 0x80, 0x56, 0x81, 0x8C, 0x5D, 0x08, 0x0B, + 0x15, 0x75, 0x0E, 0x88, 0x19, 0x34, 0x2D, 0xB7, 0x88, 0x92, 0x6C, 0xC9, + 0xF3, 0xDF, 0x19, 0xB6, 0x6D, 0xAB, 0x58, 0x13, 0x6E, 0xCE, 0xC9, 0x9A, + 0x07, 0xF9, 0x34, 0x9C, 0x5C, 0x9E, 0x33, 0x8F, 0x11, 0xCA, 0xA5, 0x1D, + 0xD4, 0xDA, 0xC7, 0x8C, 0x3B, 0x61, 0xBF, 0x8D, 0xCB, 0x69, 0xFF, 0x36, + 0x8E, 0x0C, 0xAD, 0xF4, 0x32, 0xC3, 0x20, 0x57, 0xCE, 0x19, 0xAD, 0x61, + 0xB0, 0x2C, 0xB0, 0xCD, 0xA4, 0xBD, 0xE0, 0xFC, 0x73, 0x3F, 0xA6, 0xE9, + 0x72, 0x6E, 0xB8, 0x84, 0x2F, 0x6A, 0xE8, 0xAF, 0x58, 0xC6, 0x64, 0xD7, + 0xA0, 0x3F, 0x36, 0x63, 0x95, 0x72, 0x06, 0x8B, 0xA7, 0xE5, 0xB4, 0x25, + 0xC7, 0xB7, 0xB7, 0xBD, 0xFA, 0xF2, 0xCD, 0x28, 0xDD, 0xC2, 0x80, 0x7B, + 0x45, 0xFA, 0x8D, 0xCF, 0xD2, 0x5E, 0xB8, 0x0C, 0xA1, 0x40, 0xC7, 0x40, + 0xCB, 0x0D, 0xF4, 0x61, 0xAC, 0x20, 0x45, 0x58, 0xB7, 0x56, 0x2A, 0xE6, + 0x2E, 0x64, 0xFF, 0xC3, 0xC7, 0xE1, 0xF6, 0xB3, 0xE8, 0x42, 0x3F, 0xB5, + 0x26, 0x4F, 0x49, 0x02, 0x39, 0x91, 0x2C, 0x49, 0x70, 0xDA, 0x87, 0x86, + 0xA4, 0x29, 0x36, 0x62, 0xF8, 0x2F, 0xBD, 0xD0, 0xF1, 0x0B, 0xD3, 0xEB, + 0x8A, 0x68, 0x13, 0xD6, 0x9C, 0xC8, 0x78, 0x28, 0xBD, 0xAA, 0xDF, 0xEA, + 0x72, 0xCD, 0x03, 0x83, 0xE9, 0xBB, 0x3C, 0x6F, 0x75, 0x1F, 0xAF, 0x67, + 0x47, 0x5E, 0x01, 0xC1, 0x88, 0xE9, 0x9B, 0xB0, 0xF9, 0x65, 0xF6, 0x8D, + 0x79, 0x2A, 0xA9, 0xC9, 0x3C, 0xF3, 0x24, 0x19, 0x22, 0x81, 0x32, 0x9E, + 0xBE, 0xFA, 0xB4, 0x53, 0x17, 0x64, 0x02, 0x8C, 0x7C, 0x18, 0x21, 0x01, + 0xF2, 0x14, 0xE8, 0x6E, 0xAE, 0x3E, 0xAE, 0x60, 0xB1, 0x4C, 0x51, 0x9B, + 0xBA, 0x28, 0x24, 0xA0, 0xB9, 0xFC, 0xEA, 0xE5, 0x9C, 0xA7, 0x18, 0xE2, + 0x35, 0x05, 0x07, 0x19, 0xAD, 0xE8, 0x02, 0x71, 0x17, 0x53, 0x20, 0x4A, + 0xCD, 0x33, 0xC6, 0xB3, 0x70, 0x9F, 0x46, 0x24, 0xEB, 0xA8, 0x18, 0x24, + 0x99, 0xD4, 0x87, 0x16, 0x00, 0xBE, 0xF4, 0x41, 0x6C, 0xBF, 0x45, 0xE3, + 0xF7, 0x6F, 0xD1, 0x0A, 0x4A, 0x6A, 0x23, 0x5D, 0x0B, 0xFA, 0xB5, 0x71, + 0x97, 0xE2, 0x6B, 0xD3, 0x81, 0xB9, 0x49, 0xBC, 0xC4, 0x3C, 0xB2, 0x0C, + 0x15, 0x77, 0x8E, 0x5A, 0xC0, 0x89, 0x5F, 0x9A, 0x93, 0x9A, 0x75, 0xB2, + 0xA4, 0xE2, 0x7E, 0x5A, 0x9C, 0x0A, 0x7E, 0x8C, 0xDD, 0x9F, 0x31, 0x10, + 0x95, 0x8D, 0x57, 0x0E, 0xB7, 0xDD, 0x8B, 0xE7, 0x39, 0xAC, 0x79, 0x11, + 0x51, 0x3C, 0xBB, 0x21, 0x58, 0xD7, 0x23, 0xFA, 0x63, 0xFD, 0x21, 0x85, + 0x3F, 0x5F, 0x85, 0xF0, 0x3C, 0xF8, 0xE9, 0x40, 0x72, 0x92, 0x79, 0xCF, + 0x21, 0x14, 0xED, 0xAB, 0xB9, 0xC3, 0xCF, 0x10, 0x85, 0x28, 0x3B, 0x81, + 0xB6, 0x6E, 0x99, 0x18, 0x7C, 0xD9, 0x36, 0x11, 0x22, 0x6C, 0xF8, 0x83, + 0xB2, 0x51, 0xD3, 0xF7, 0x42, 0x37, 0xD4, 0xBA, 0x85, 0xB7, 0x9E, 0x6C, + 0x61, 0xB3, 0xDB, 0x6F, 0x79, 0xF2, 0x34, 0xA7, 0x29, 0x3C, 0xE9, 0x2B, + 0x2B, 0x0B, 0xF4, 0x5F, 0x47, 0x96, 0x14, 0x36, 0xA4, 0x2F, 0x67, 0x54, + 0x77, 0x48, 0x2B, 0x5F, 0x4A, 0x1F, 0xB2, 0xE5, 0xFF, 0x38, 0xE4, 0xE2, + 0xAE, 0x76, 0xB1, 0x66, 0x7F, 0x01, 0xE8, 0x31, 0xA4, 0x24, 0xBA, 0x95, + 0xAB, 0x0A, 0x9B, 0x1F, 0xC4, 0x04, 0x59, 0x9C, 0x0D, 0xD0, 0x3D, 0x2E, + 0x7F, 0xCE, 0xBE, 0xD2, 0x93, 0x2A, 0xB0, 0x95, 0x22, 0xA5, 0xE9, 0xE4, + 0xCA, 0xE2, 0x49, 0x15, 0xDF, 0x64, 0x65, 0xE4, 0xE5, 0xC8, 0x65, 0xA3, + 0x18, 0x53, 0x36, 0xD4, 0x8B, 0xC7, 0x97, 0xE1, 0x4E, 0xD9, 0x92, 0xE7, + 0x4A, 0x01, 0x2F, 0x93, 0xB0, 0x09, 0x40, 0x4E, 0x5A, 0x58, 0x7F, 0x2D, + 0xDB, 0x7E, 0xA5, 0xAB, 0x8A, 0xA1, 0xFD, 0x4C, 0x9C, 0x55, 0x0F, 0x47, + 0x64, 0x02, 0x80, 0xCB, 0x57, 0x50, 0xEC, 0xFE, 0xB7, 0xDC, 0xD2, 0x21, + 0xD7, 0x0B, 0xF5, 0x0F, 0xD3, 0xB2, 0x10, 0xDF, 0x8D, 0x8B, 0x91, 0xE0, + 0x9C, 0x44, 0x59, 0x0E, 0x08, 0xF2, 0xAB, 0x94, 0x75, 0xF3, 0x56, 0x96, + 0xF0, 0x3E, 0x65, 0xA0, 0xBA, 0x4C, 0x10, 0x20, 0xB7, 0xF4, 0x2E, 0xEC, + 0xE2, 0xC4, 0x03, 0x7D, 0xFB, 0xD9, 0x79, 0xCC, 0x88, 0x1F, 0x77, 0xE8, + 0x9D, 0x1B, 0x89, 0xCD, 0xBB, 0x3D, 0x63, 0x3D, 0xCC, 0x95, 0x8C, 0xFA, + 0x5C, 0x79, 0xC2, 0xE1, 0x83, 0x64, 0xE0, 0xB3, 0x52, 0x38, 0x90, 0x49, + 0x2A, 0x02, 0x1A, 0x9F, 0x85, 0xC4, 0x45, 0x59, 0xE2, 0xE1, 0xF6, 0x7B, + 0x61, 0xAF, 0x0A, 0xBA, 0xA3, 0x8F, 0xA0, 0x2D, 0xEE, 0x7C, 0xBE, 0x54, + 0x40, 0x15, 0xB5, 0x87, 0xA1, 0xEF, 0x7E, 0x09, 0x38, 0x51, 0xED, 0x2D, + 0xDE, 0xDB, 0x41, 0xC6, 0xEE, 0x88, 0xAD, 0x1F, 0x9C, 0x1C, 0xEC, 0x70, + 0x39, 0x38, 0x45, 0xB8, 0x01, 0xB6, 0x58, 0x85, 0x61, 0x48, 0x3A, 0xCB, + 0xE9, 0x97, 0xB3, 0x96, 0x8C, 0x0B, 0xD7, 0x33, 0x73, 0x73, 0x7F, 0x1D, + 0x85, 0xFF, 0xE9, 0x9E, 0xCE, 0xD1, 0x1E, 0xFD, 0x1B, 0x7A, 0x63, 0x33, + 0x10, 0x47, 0x96, 0xBA, 0x0A, 0x8E, 0xF6, 0x4C, 0x70, 0xC1, 0xE1, 0xFD, + 0x19, 0x5A, 0xE0, 0x19, 0xE8, 0xD9, 0x0C, 0x31, 0x8E, 0xA7, 0x42, 0x9D, + 0x50, 0xB2, 0xC9, 0x20, 0xE8, 0x62, 0xD2, 0x27, 0x67, 0x8E, 0xB6, 0x33, + 0x8C, 0xD9, 0x38, 0x85, 0xDC, 0x4D, 0xCF, 0x72, 0xF3, 0xCF, 0xAF, 0xB6, + 0x00, 0xF0, 0x54, 0xAE, 0x27, 0xEC, 0x80, 0x28, 0x4B, 0x4B, 0xA8, 0x57, + 0x5C, 0xC3, 0xEE, 0x3A, 0x1F, 0x77, 0xAC, 0x9E, 0xA9, 0x11, 0x71, 0x23, + 0x5B, 0xFB, 0xF6, 0x80, 0x0E, 0x80, 0xCB, 0xC7, 0xE8, 0x1F, 0x8B, 0x09, + 0x45, 0xA0, 0xF6, 0x70, 0xD1, 0x3D, 0x9D, 0x46, 0x00, 0x80, 0x3E, 0x79, + 0x1F, 0x4C, 0xF2, 0x4F, 0xCC, 0x8B, 0x9F, 0x63, 0xCC, 0x01, 0x62, 0xD3, + 0x30, 0x7D, 0xB1, 0x74, 0xB8, 0xF5, 0xB1, 0x0F, 0x13, 0x57, 0xF7, 0x70, + 0x7F, 0x16, 0x6C, 0x27, 0x17, 0x16, 0x49, 0xE6, 0x5F, 0x87, 0xA2, 0x52, + 0x0E, 0x9C, 0xF9, 0xA9, 0xEE, 0x91, 0xF0, 0xB1, 0x9C, 0x32, 0x13, 0x67, + 0x08, 0xFA, 0x0C, 0x62, 0xBF, 0x11, 0xB2, 0x81, 0x9F, 0xFF, 0xC1, 0x0C, + 0xF9, 0x84, 0xBA, 0x85, 0x2E, 0xC2, 0xBC, 0xC0, 0x59, 0x1E, 0x56, 0x62, + 0x58, 0x39, 0x38, 0x6B, 0xFC, 0xC5, 0xC4, 0x9A, 0x97, 0xBC, 0x15, 0xA3, + 0x2E, 0x90, 0xD2, 0x8E, 0x18, 0xDF, 0x51, 0x39, 0x61, 0x99, 0xE4, 0x2D, + 0xA9, 0x50, 0x70, 0x0B, 0x0F, 0x41, 0x20, 0x89, 0x37, 0xFC, 0xE5, 0xD7, + 0x3B, 0x57, 0xF5, 0x94, 0x69, 0x4C, 0xEC, 0x56, 0x1B, 0x9B, 0xA3, 0x73, + 0xC2, 0x6F, 0xA8, 0xFF, 0xF2, 0xEC, 0xD0, 0xD9, 0x79, 0x9F, 0x39, 0x0B, + 0x7C, 0xF2, 0xE2, 0x5E, 0x52, 0x7A, 0xE0, 0x81, 0xE3, 0x54, 0xC6, 0x2D, + 0x86, 0x27, 0x8D, 0x04, 0xC3, 0x63, 0x2E, 0x25, 0x6E, 0x05, 0x8F, 0xFB, + 0xCA, 0x89, 0x18, 0x4D, 0x9B, 0xB9, 0x20, 0xA1, 0x15, 0xA2, 0x33, 0x56, + 0xAB, 0x3F, 0x2D, 0x14, 0x5A, 0x04, 0x5D, 0xBB, 0x7E, 0xE8, 0xF7, 0x4B, + 0xD6, 0x49, 0xE8, 0xAF, 0xE5, 0x10, 0x1F, 0x91, 0x68, 0x7C, 0xA0, 0x55, + 0x24, 0x75, 0x46, 0xAF, 0xE1, 0xCD, 0x75, 0x0D, 0x36, 0xC7, 0xAB, 0x21, + 0xAC, 0xA8, 0x1C, 0xF0, 0x69, 0x6F, 0x38, 0x5E, 0x67, 0x7D, 0x99, 0x72, + 0xB9, 0x39, 0xE9, 0xFB, 0xCF, 0xCC, 0x24, 0x8C, 0x63, 0x6B, 0x6D, 0xBD, + 0x0C, 0xFF, 0x5A, 0x2D, 0xD0, 0x3F, 0x62, 0xE9, 0xFE, 0xC3, 0x50, 0x18, + 0xC1, 0xE9, 0x07, 0xE8, 0xE5, 0x2E, 0xA5, 0x98, 0x53, 0x27, 0x4A, 0x3D, + 0xC9, 0xAF, 0x1B, 0x5E, 0x41, 0x4F, 0x67, 0xFE, 0x84, 0xBB, 0x74, 0x0C, + 0x6C, 0x88, 0x02, 0xFA, 0x37, 0x6A, 0xAD, 0xBC, 0x08, 0xDB, 0xE8, 0xF2, + 0xCD, 0xA4, 0xF0, 0xFC, 0xCC, 0xAD, 0xB5, 0xE7, 0x95, 0x61, 0x93, 0x99, + 0xF1, 0xA3, 0x06, 0xCC, 0x01, 0x8D, 0x45, 0x9E, 0xE1, 0xA6, 0x15, 0xDC, + 0x4A, 0x99, 0x0F, 0x15, 0x34, 0x1E, 0x7E, 0x4F, 0xE5, 0x42, 0xEC, 0xE9, + 0xD3, 0xA3, 0xAD, 0xAB, 0x96, 0x5B, 0x89, 0x94, 0x12, 0xD3, 0xB1, 0x64, + 0x69, 0x5B, 0x55, 0xC6, 0x8C, 0x77, 0xD0, 0x9D, 0x0D, 0xF3, 0x36, 0x79, + 0x49, 0x50, 0xE9, 0xBC, 0x61, 0x62, 0xFA, 0x67, 0xDE, 0x00, 0x87, 0xC5, + 0x95, 0x02, 0xBD, 0xAC, 0x7F, 0x3C, 0x92, 0x49, 0x15, 0xFE, 0xB4, 0x9D, + 0x44, 0xD9, 0x19, 0x10, 0x88, 0xDE, 0xBB, 0xC9, 0xE1, 0xEF, 0xC0, 0xD6, + 0x60, 0xC7, 0x1D, 0x8B, 0xE8, 0xE3, 0xD1, 0xE8, 0x28, 0x5D, 0xEC, 0x49, + 0xEA, 0x79, 0xE4, 0x61, 0x61, 0x7C, 0x81, 0xBF, 0x6D, 0xA1, 0x89, 0x80, + 0x63, 0x83, 0x65, 0xF2, 0x5C, 0xF6, 0xBB, 0xAD, 0xD4, 0x3B, 0x2F, 0xFE, + 0x6F, 0x0A, 0xD6, 0x6E, 0x2D, 0x6E, 0x34, 0xB9, 0x0B, 0xE2, 0x12, 0x8B, + 0x40, 0xFE, 0x0E, 0x24, 0x6C, 0x67, 0xDE, 0x25, 0xCD, 0x48, 0x34, 0x8A, + 0x5B, 0x0D, 0x9B, 0xC4, 0xD3, 0x1C, 0xE6, 0x9D, 0x8C, 0x77, 0xB0, 0x2B, + 0x0C, 0x77, 0x2C, 0x0D, 0xBE, 0xAD, 0xE1, 0x9D, 0x9F, 0x10, 0x84, 0x34, + 0x39, 0x52, 0xB0, 0xB8, 0x1C, 0x02, 0x24, 0x3C, 0xD8, 0x80, 0xD4, 0x40, + 0x63, 0x59, 0xE6, 0x6C, 0x0F, 0xFA, 0xEB, 0xAE, 0xDC, 0x67, 0x47, 0x03, + 0x25, 0x80, 0xCD, 0x4B, 0x21, 0x77, 0x17, 0xBB, 0x19, 0x8C, 0xC1, 0x09, + 0x7E, 0x0F, 0x7D, 0xD7, 0x50, 0xF9, 0xC3, 0xAA, 0x05, 0x10, 0xDD, 0x6B, + 0xD2, 0x96, 0x46, 0x14, 0xC2, 0xA5, 0xD7, 0xF8, 0xED, 0xDA, 0x58, 0x53, + 0xC3, 0x8F, 0xAB, 0x47, 0x91, 0x95, 0x48, 0x0C, 0xDE, 0xED, 0x99, 0x04, + 0x3A, 0xC7, 0xCC, 0xB5, 0x1C, 0xAC, 0x29, 0xAE, 0xFA, 0xA6, 0xA5, 0x57, + 0x65, 0x12, 0x86, 0xBE, 0x72, 0xFB, 0x06, 0x93, 0x49, 0xD0, 0x53, 0x43, + 0xD0, 0xD4, 0xC7, 0x2F, 0x8A, 0x13, 0xEC, 0x95, 0x3B, 0x18, 0xD3, 0x67, + 0x2B, 0xA6, 0xCF, 0x0B, 0xE6, 0x47, 0xF9, 0x3A, 0x32, 0x41, 0x27, 0xC8, + 0xDB, 0xD7, 0xC7, 0xED, 0xB7, 0xCF, 0x75, 0xF1, 0x29, 0xC7, 0x28, 0x97, + 0x07, 0xBA, 0x74, 0x2C, 0x5A, 0xAE, 0x6E, 0x39, 0x51, 0xF3, 0xD2, 0x07, + 0xE2, 0x82, 0xFA, 0xE0, 0xD0, 0x22, 0x6B, 0xC7, 0xDA, 0x90, 0x0D, 0x1B, + 0xB5, 0x17, 0x8A, 0xFA, 0x9E, 0xB5, 0x1A, 0xBD, 0x6F, 0x64, 0x02, 0xF5, + 0x14, 0xB4, 0x63, 0x64, 0xFB, 0x42, 0x99, 0x42, 0xDE, 0x6A, 0x6C, 0xAB, + 0x5B, 0xE5, 0xC4, 0x62, 0x25, 0x66, 0x83, 0xC3, 0x6A, 0x64, 0x4A, 0xD0, + 0xA7, 0x4F, 0x66, 0x21, 0xF9, 0x7C, 0xCC, 0x15, 0x5F, 0x69, 0xB3, 0x2E, + 0x83, 0x26, 0x12, 0xC7, 0xE0, 0xE4, 0xAE, 0x92, 0x44, 0xA4, 0x1F, 0xEE, + 0xBC, 0x06, 0xAF, 0xC4, 0x5A, 0x14, 0x89, 0xCF, 0x46, 0xC2, 0xA8, 0x80, + 0x98, 0xF6, 0xCC, 0xA8, 0x7E, 0xDE, 0x94, 0x31, 0x36, 0xBF, 0x80, 0xA9, + 0x49, 0x62, 0xF9, 0x4B, 0x09, 0xFF, 0x29, 0xCC, 0xB6, 0x5A, 0x84, 0xBC, + 0xCB, 0xF4, 0xBB, 0x19, 0xC1, 0xA7, 0x09, 0x60, 0xF9, 0xD4, 0x0F, 0x84, + 0xE0, 0xDF, 0x9A, 0x0D, 0xCC, 0xCA, 0x14, 0x68, 0x39, 0x74, 0x10, 0x63, + 0x13, 0xC0, 0xAE, 0xD2, 0x2B, 0x3C, 0x6E, 0xC2, 0x29, 0x51, 0xC9, 0xAF, + 0x0E, 0x09, 0x87, 0xAD, 0x82, 0x8A, 0xA6, 0x0F, 0x02, 0x4B, 0xAD, 0x1F, + 0x63, 0xEE, 0xAE, 0x57, 0xE0, 0xE5, 0x51, 0xCC, 0x8C, 0x9A, 0x9E, 0x4F, + 0x67, 0xFB, 0xD4, 0x9F, 0xA5, 0x18, 0x13, 0x9F, 0x24, 0xF4, 0x9E, 0x2B, + 0x52, 0xC0, 0x08, 0xE8, 0x77, 0xEA, 0xBB, 0x01, 0x5A, 0x77, 0x46, 0xEF, + 0x10, 0xAC, 0xA4, 0x70, 0x56, 0x98, 0x5A, 0xBF, 0x4A, 0x82, 0x72, 0x96, + 0xB9, 0xB1, 0x61, 0x78, 0x6D, 0x6E, 0xAD, 0x66, 0x6C, 0x67, 0xB3, 0x45, + 0x8F, 0xF8, 0xFD, 0x1E, 0xAA, 0x7A, 0x13, 0x0C, 0x35, 0x1A, 0x9F, 0x69, + 0x5E, 0x13, 0x8A, 0xB5, 0xE7, 0x17, 0x58, 0x7A, 0xF5, 0xB3, 0x06, 0x48, + 0x16, 0x55, 0xDC, 0xD8, 0xB7, 0x70, 0x3D, 0xB1, 0x04, 0x13, 0xA1, 0x21, + 0x60, 0xF2, 0x15, 0xA8, 0x09, 0x2A, 0xD2, 0xBC, 0x67, 0xAD, 0x23, 0x01, + 0x8E, 0x91, 0xE2, 0x4C, 0x73, 0x41, 0xA4, 0x29, 0x9A, 0x09, 0xFD, 0xC6, + 0x8C, 0xC2, 0x0D, 0x62, 0xFE, 0x70, 0x53, 0x8B, 0x72, 0x07, 0x26, 0x73, + 0xC1, 0xED, 0x07, 0xE0, 0xD3, 0x02, 0x9C, 0x10, 0x30, 0x83, 0x83, 0x50, + 0xDA, 0x11, 0x36, 0x8B, 0x22, 0xE6, 0xF3, 0x90, 0xDE, 0x90, 0x87, 0x6F, + 0x10, 0x41, 0x3B, 0x6E, 0x41, 0x87, 0x0A, 0x56, 0x27, 0x95, 0xCA, 0xFE, + 0xC8, 0xE0, 0x15, 0xD2, 0xEE, 0xB8, 0xBF, 0x35, 0x4F, 0x8B, 0xF3, 0xBA, + 0x37, 0x6F, 0x16, 0x61, 0x80, 0x7E, 0x95, 0x50, 0x27, 0x7A, 0x46, 0x0F, + 0xBF, 0xDC, 0x74, 0xB1, 0x73, 0xE0, 0x50, 0x86, 0x6F, 0x92, 0xB6, 0x41, + 0x5B, 0x2E, 0xE1, 0xCA, 0x8E, 0xDB, 0x8E, 0xEC, 0xD1, 0x8C, 0xF4, 0x74, + 0x7C, 0x9C, 0x1E, 0x24, 0x60, 0xF4, 0xD3, 0x5B, 0xA0, 0x3B, 0xE2, 0x5B, + 0x17, 0xBB, 0x7D, 0x97, 0x57, 0x2A, 0x09, 0x9A, 0x1D, 0x5C, 0x02, 0x63, + 0x4A, 0xC0, 0x0E, 0xA1, 0xA0, 0x96, 0xE5, 0x4D, 0x6D, 0x91, 0x3C, 0x69, + 0x59, 0x80, 0x41, 0x7D, 0xF7, 0x53, 0x93, 0x52, 0x58, 0xF9, 0x11, 0x33, + 0xFF, 0xDB, 0x7F, 0x26, 0x5E, 0x90, 0x5B, 0xB5, 0x42, 0x16, 0xE0, 0x05, + 0x4E, 0x5B, 0x23, 0xAE, 0x35, 0x7D, 0x95, 0x79, 0x4C, 0xD1, 0x77, 0x47, + 0x77, 0x9B, 0x63, 0xED, 0x86, 0x6E, 0x6F, 0x76, 0x54, 0x7C, 0x4A, 0x9D, + 0x0F, 0xAE, 0xE7, 0x41, 0xBD, 0x20, 0x1F, 0x04, 0xF4, 0xA8, 0x90, 0x48, + 0xF7, 0x59, 0xF7, 0x14, 0xCF, 0x1D, 0x18, 0xE5, 0x54, 0x25, 0x4D, 0x87, + 0xE4, 0x61, 0x84, 0x7B, 0xB5, 0xCB, 0xF5, 0x70, 0x78, 0x80, 0xF1, 0x52, + 0x89, 0x2D, 0xEA, 0x72, 0xB3, 0xE7, 0x7D, 0x24, 0x59, 0xB7, 0x22, 0x49, + 0x9F, 0xDA, 0x7D, 0x81, 0x86, 0xAB, 0xD3, 0x80, 0x18, 0x55, 0xF5, 0x21, + 0xC6, 0xE4, 0x9E, 0xE5, 0xBB, 0x12, 0x8D, 0x3E, 0xD1, 0xEE, 0x33, 0x56, + 0xCF, 0x24, 0x37, 0x65, 0x73, 0x41, 0x63, 0xDD, 0x21, 0x4C, 0x85, 0xA3, + 0xB1, 0x74, 0x67, 0xFC, 0x60, 0xC9, 0x14, 0x0D, 0x4F, 0x31, 0x15, 0x87, + 0x70, 0xEA, 0x18, 0x9C, 0xE9, 0x13, 0x09, 0x6A, 0xC5, 0xE2, 0x01, 0x08, + 0xF3, 0x2A, 0xE0, 0x28, 0x42, 0x1B, 0x80, 0x30, 0xC3, 0x87, 0xF8, 0x31, + 0xBC, 0x0C, 0xC7, 0xBA, 0x61, 0x77, 0x85, 0xC7, 0x9B, 0x56, 0x29, 0x48, + 0xCF, 0x65, 0x18, 0x05, 0x2F, 0x8E, 0x23, 0x3D, 0xA3, 0x34, 0xB2, 0x17, + 0xAB, 0x42, 0xE6, 0x88, 0x8C, 0x96, 0xB5, 0x5F, 0x44, 0x20, 0x47, 0xAB, + 0x1F, 0x02, 0xE3, 0xDF, 0xF2, 0xEF, 0xBE, 0x5A, 0xA8, 0x87, 0x98, 0x57, + 0xCE, 0x73, 0x75, 0xAE, 0xA1, 0x51, 0x16, 0xEC, 0x5A, 0x0F, 0xFA, 0xF0, + 0xC6, 0x80, 0xFE, 0x7F, 0xE4, 0x3B, 0x02, 0x27, 0x9D, 0x75, 0xE3, 0x41, + 0x8C, 0x5C, 0x5B, 0x20, 0x40, 0x22, 0xBF, 0x09, 0x79, 0x63, 0xB4, 0xDC, + 0x06, 0x44, 0xE4, 0x5B, 0x09, 0x58, 0xC9, 0x51, 0x38, 0x9D, 0x07, 0x10, + 0x98, 0x75, 0x6A, 0x3B, 0x87, 0x00, 0x76, 0x9D, 0x6C, 0xE9, 0xB0, 0x94, + 0x1E, 0x50, 0x48, 0x26, 0x5E, 0xFB, 0x2D, 0x10, 0x54, 0x8E, 0xA2, 0x50, + 0x03, 0xC6, 0x78, 0x55, 0x86, 0x4E, 0xD4, 0x4B, 0xFC, 0x15, 0x61, 0x4C, + 0x72, 0xFB, 0xCE, 0x21, 0xC5, 0x89, 0x23, 0x00, 0x16, 0x63, 0x73, 0xAD, + 0xB0, 0xE1, 0x94, 0x36, 0x43, 0xFE, 0xA4, 0x37, 0x34, 0x3F, 0xE2, 0xB9, + 0x75, 0x2D, 0x95, 0x72, 0x2C, 0xC8, 0x8A, 0xC5, 0x4B, 0x03, 0x8C, 0xA4, + 0xE8, 0x79, 0x15, 0x38, 0x24, 0x8D, 0x92, 0x0B, 0x91, 0xA4, 0xF3, 0x94, + 0x58, 0x35, 0xD6, 0x6D, 0x14, 0x3E, 0x78, 0x4E, 0x17, 0x21, 0x80, 0x5D, + 0x95, 0xF0, 0x73, 0x7E, 0xA2, 0xDA, 0x3D, 0xD4, 0x33, 0xF4, 0x0A, 0x80, + 0x4A, 0x5C, 0x83, 0x91, 0x6E, 0xE7, 0x13, 0x73, 0x26, 0x94, 0x17, 0xD4, + 0x13, 0xBD, 0x8B, 0x74, 0x25, 0x06, 0x34, 0xA8, 0x98, 0x99, 0x94, 0x1F, + 0xC7, 0xDC, 0x3F, 0x36, 0xF8, 0x24, 0x57, 0x1E, 0xB7, 0x9D, 0x29, 0xA4, + 0xB6, 0x27, 0x1B, 0x31, 0xF3, 0x21, 0x80, 0x60, 0x51, 0xF1, 0x66, 0x10, + 0xBD, 0x15, 0xF5, 0xBB, 0x47, 0x50, 0xCD, 0xC7, 0xEC, 0x05, 0x48, 0xCB, + 0x84, 0x70, 0xB0, 0x58, 0x5F, 0x53, 0x2A, 0x2B, 0x02, 0x42, 0x5C, 0x78, + 0x1C, 0x7C, 0x56, 0xA2, 0xF2, 0x4B, 0xA0, 0x94, 0x8A, 0x84, 0xB0, 0x2D, + 0x9B, 0xF5, 0xA8, 0xC2, 0xE2, 0xE3, 0x20, 0xC5, 0xAE, 0xD6, 0x4F, 0x17, + 0xDF, 0x52, 0x47, 0x8E, 0x6F, 0x6D, 0x41, 0xDB, 0x59, 0xF0, 0xC5, 0x9D, + 0x6D, 0xBD, 0xA0, 0xC9, 0x9D, 0x72, 0x2D, 0x2E, 0x51, 0x10, 0xAC, 0x37, + 0x01, 0xA7, 0xD7, 0x4E, 0xF3, 0x96, 0xD6, 0x79, 0xFD, 0xA0, 0xC4, 0x3F, + 0x38, 0x68, 0xA4, 0x19, 0x01, 0xE6, 0x0B, 0x96, 0x32, 0xA3, 0x48, 0x8B, + 0x4F, 0x77, 0x56, 0x98, 0xB6, 0x85, 0x73, 0xA9, 0x2B, 0x04, 0xED, 0x2F, + 0x13, 0x6A, 0x32, 0x0C, 0xAB, 0x51, 0x54, 0xBE, 0x0B, 0x7F, 0xBD, 0x93, + 0x4E, 0xB1, 0xBB, 0xA9, 0xA8, 0xD4, 0x53, 0x64, 0x83, 0x49, 0x63, 0x64, + 0x5B, 0xD7, 0xB5, 0x02, 0xDD, 0x13, 0x3F, 0xFD, 0x64, 0xF5, 0xC3, 0x18, + 0x97, 0xC7, 0xCF, 0x96, 0x11, 0x63, 0xB3, 0x20, 0x15, 0x81, 0x3D, 0x9A, + 0x52, 0x99, 0xF2, 0xBE, 0x76, 0xD1, 0x1F, 0xF6, 0x0E, 0xD3, 0x7C, 0x55, + 0x42, 0x55, 0x94, 0x5E, 0x10, 0x96, 0x37, 0x4C, 0x2E, 0xAC, 0x9E, 0x30, + 0x40, 0xB9, 0xD0, 0xFC, 0x81, 0xA2, 0x87, 0x34, 0x74, 0x82, 0xA2, 0x88, + 0xDD, 0x30, 0x4D, 0x50, 0xA6, 0x0E, 0x0C, 0x50, 0x0C, 0xB7, 0xB6, 0xC2, + 0x33, 0x7D, 0x73, 0x8C, 0x66, 0x90, 0xC2, 0x42, 0x87, 0x35, 0xD5, 0x4D, + 0xB7, 0xEE, 0x1D, 0x0D, 0xB4, 0xFC, 0xD4, 0x3B, 0xD9, 0xA7, 0xF1, 0x2D, + 0x02, 0x16, 0x89, 0x1B, 0x32, 0xB2, 0x4D, 0x38, 0x61, 0x6C, 0xD3, 0x3B, + 0x53, 0xBF, 0x1E, 0x46, 0xA8, 0x6B, 0x1A, 0x83, 0xB8, 0x3A, 0x2C, 0xCD, + 0x6E, 0xBF, 0xBB, 0xDD, 0x42, 0x71, 0xB9, 0x71, 0x93, 0x4C, 0x3B, 0x24, + 0x3B, 0xBD, 0x6A, 0x78, 0x93, 0x42, 0x6B, 0x5A, 0x24, 0xCF, 0x41, 0x10, + 0xAD, 0x05, 0x3B, 0x7E, 0x90, 0x2C, 0xA7, 0x9C, 0x6B, 0xB5, 0xE0, 0x5E, + 0xB5, 0xA0, 0x3C, 0xCB, 0xD0, 0xCB, 0x48, 0x75, 0xE3, 0x17, 0x86, 0x42, + 0x5A, 0xF7, 0x2E, 0x4C, 0x6C, 0xF2, 0x21, 0x37, 0xEE, 0xB4, 0xE5, 0x30, + 0x6B, 0xA1, 0x4B, 0x31, 0xDB, 0x8C, 0x86, 0xF9, 0x5C, 0xDA, 0xDA, 0x44, + 0x95, 0xEA, 0x26, 0x96, 0xD6, 0x26, 0xAE, 0x23, 0x11, 0xEB, 0x21, 0x34, + 0xFF, 0xB2, 0x8C, 0x9E, 0x9B, 0xBD, 0x27, 0xFB, 0x09, 0x0F, 0xE3, 0x50, + 0x73, 0x8E, 0xAC, 0xE0, 0x05, 0x22, 0x20, 0xD5, 0xF7, 0x4E, 0x72, 0xD0, + 0x4E, 0xF7, 0xC5, 0xC9, 0xE7, 0x25, 0x7F, 0xF9, 0x91, 0x19, 0x68, 0x03, + 0x17, 0x04, 0xD2, 0xBA, 0x4D, 0x94, 0xAF, 0x95, 0xBC, 0x81, 0x57, 0xB6, + 0xD9, 0x56, 0x8F, 0x67, 0x40, 0x24, 0x6D, 0xEC, 0xD5, 0xD1, 0x1E, 0x2E, + 0xFC, 0xE8, 0xBA, 0xAB, 0x80, 0x63, 0x35, 0xC3, 0x38, 0x18, 0x98, 0x71, + 0x55, 0xA7, 0xC8, 0x09, 0xAE, 0xA3, 0xA3, 0x37, 0xA3, 0x96, 0xCE, 0x8F, + 0x0F, 0x12, 0x53, 0xF5, 0x8E, 0x02, 0xB1, 0xBC, 0x56, 0x1E, 0x67, 0x71, + 0xFE, 0xAB, 0xF0, 0x04, 0x5B, 0x87, 0x93, 0x92, 0xB2, 0xAC, 0x47, 0xB6, + 0xEF, 0xBD, 0x55, 0x1D, 0x30, 0xCB, 0xA6, 0x60, 0x13, 0x13, 0xFE, 0x82, + 0x4E, 0x06, 0xA8, 0xAB, 0x2B, 0x40, 0x2E, 0x7C, 0x66, 0x8F, 0xCC, 0x40, + 0x36, 0x20, 0xE9, 0xAF, 0xC6, 0x3A, 0xE2, 0xE2, 0xFE, 0x01, 0x97, 0x7E, + 0xCA, 0x82, 0x20, 0x58, 0x5E, 0xB5, 0x10, 0xE1, 0x99, 0xE3, 0x4F, 0x82, + 0xE3, 0x4D, 0x35, 0xB6, 0x7B, 0x28, 0x37, 0x02, 0x26, 0x00, 0xA1, 0x6C, + 0x7B, 0xA1, 0x48, 0x4F, 0xCB, 0x55, 0x25, 0xB8, 0x6B, 0xDD, 0xB1, 0xAE, + 0xA0, 0xD3, 0xA1, 0x8B, 0x84, 0x9E, 0xF2, 0xB8, 0x53, 0xDC, 0xE0, 0xE4, + 0x6C, 0x5C, 0x63, 0xA8, 0xD7, 0x4F, 0x1C, 0xB6, 0x73, 0xF9, 0x50, 0xA7, + 0x99, 0x30, 0x42, 0x3E, 0x60, 0x49, 0x6A, 0x7F, 0x6F, 0x0A, 0x83, 0xAD, + 0x99, 0x90, 0x00, 0xC3, 0x5A, 0xFD, 0x83, 0xDA, 0xDE, 0x0A, 0x37, 0xC0, + 0x7F, 0xC6, 0x96, 0x61, 0x9A, 0xF8, 0xBF, 0xBF, 0x45, 0x33, 0x3C, 0x17, + 0x48, 0x7B, 0x54, 0xB8, 0x38, 0xAD, 0x88, 0xD7, 0x7C, 0x1B, 0x08, 0x04, + 0xA9, 0x88, 0xDD, 0x1A, 0x7B, 0x53, 0xEF, 0x8F, 0x49, 0xBC, 0xBC, 0x64, + 0x98, 0x17, 0xA0, 0xB2, 0xAE, 0x63, 0x5B, 0x33, 0xE3, 0xED, 0x93, 0x88, + 0x5D, 0xB9, 0x3F, 0xF2, 0x8A, 0xD3, 0x38, 0xD9, 0xD6, 0xC9, 0xFE, 0x13, + 0x92, 0x3B, 0xF0, 0xA5, 0xE4, 0x1A, 0x09, 0x28, 0x70, 0x27, 0x1A, 0xB5, + 0x99, 0xBA, 0x39, 0x2A, 0xBA, 0x8E, 0xAE, 0x79, 0x6A, 0x21, 0xF7, 0xB7, + 0x7D, 0x16, 0x34, 0xA4, 0x5D, 0x0E, 0x97, 0xF5, 0xFC, 0x1A, 0x88, 0xEE, + 0x4A, 0x9E, 0xB9, 0x64, 0x2B, 0xFF, 0x89, 0xC2, 0x45, 0x34, 0xE7, 0xC4, + 0xE0, 0xFC, 0x9E, 0xF8, 0xF6, 0x89, 0x5E, 0x68, 0x53, 0xEC, 0xF0, 0x98, + 0x63, 0x5E, 0x53, 0xA0, 0xBE, 0x42, 0x8E, 0xD9, 0x70, 0x5D, 0x3C, 0xC5, + 0x11, 0x11, 0x20, 0xC1, 0x9B, 0xF4, 0x6E, 0x61, 0x63, 0x4A, 0xB3, 0xE7, + 0x5F, 0x91, 0xC9, 0x2C, 0xFF, 0x1E, 0xCE, 0x25, 0xFE, 0x26, 0x6A, 0xA4, + 0x06, 0xE3, 0x30, 0xCF, 0xFC, 0x9D, 0xE8, 0x0D, 0xFD, 0x41, 0xC6, 0x9F, + 0x20, 0x2E, 0xB0, 0x24, 0x9B, 0xA1, 0xB2, 0x30, 0x75, 0x3F, 0xFC, 0x33, + 0x68, 0x8E, 0x97, 0x33, 0xE5, 0xFE, 0xF8, 0xEC, 0x28, 0xAC, 0xD4, 0x52, + 0xA5, 0x97, 0x23, 0x9B, 0x89, 0xDF, 0x42, 0x38, 0xA2, 0xD9, 0x38, 0x7C, + 0x59, 0x58, 0x78, 0x2D, 0x64, 0x3E, 0xAC, 0xA4, 0x2F, 0x30, 0x55, 0xD2, + 0xE3, 0x4C, 0x4E, 0xA5, 0xEC, 0x4E, 0x5A, 0xF9, 0xAA, 0xB6, 0xB9, 0xBA, + 0xFA, 0x23, 0x41, 0x9D, 0xCA, 0x54, 0xDA, 0x90, 0xDD, 0xC4, 0x68, 0x16, + 0x2E, 0x4F, 0xB5, 0xDC, 0x9A, 0x25, 0xBF, 0x8B, 0xC0, 0x79, 0x0D, 0xCF, + 0xB7, 0xBE, 0xDE, 0x95, 0x59, 0xF0, 0x28, 0x8A, 0x14, 0xD9, 0x90, 0x66, + 0xAA, 0xEB, 0x5F, 0x64, 0x61, 0xD1, 0x7E, 0x4C, 0x45, 0x8E, 0x98, 0x11, + 0x7A, 0x84, 0x81, 0x0A, 0xD2, 0xBA, 0x5D, 0x72, 0x09, 0xA0, 0x05, 0x1E, + 0x16, 0xD4, 0x4A, 0x91, 0xEE, 0xD8, 0x4A, 0x06, 0x4B, 0x5C, 0xEC, 0x79, + 0x28, 0xA3, 0xB3, 0x81, 0x4C, 0x90, 0xF1, 0xB2, 0x29, 0x02, 0x2B, 0xF2, + 0x44, 0x9F, 0xD9, 0x6D, 0x66, 0x33, 0x78, 0x73, 0x23, 0x5D, 0x26, 0x2C, + 0x86, 0x43, 0x9E, 0x69, 0x0A, 0x97, 0x01, 0x8F, 0x64, 0xDA, 0xF9, 0xCC, + 0xC7, 0xA0, 0x59, 0xF0, 0x60, 0xD9, 0x46, 0xAA, 0x77, 0x9F, 0xFC, 0xF3, + 0xBA, 0x66, 0xD4, 0xBE, 0x69, 0x9B, 0xAE, 0x3C, 0xB6, 0x57, 0x8A, 0x30, + 0x53, 0xEC, 0xC6, 0xF8, 0x14, 0x76, 0x84, 0x76, 0x7F, 0x53, 0xA8, 0x14, + 0x8A, 0x55, 0xAE, 0x89, 0xE8, 0x4D, 0x8C, 0x69, 0xC2, 0x56, 0xB7, 0x64, + 0x2A, 0x57, 0x9A, 0x76, 0xC5, 0x77, 0x8A, 0xC8, 0x01, 0x29, 0xB6, 0xB2, + 0xA9, 0x50, 0x43, 0xCD, 0x22, 0xD0, 0xE8, 0xDE, 0x6B, 0xB9, 0x87, 0x18, + 0x70, 0xEF, 0xCB, 0x72, 0xAA, 0x18, 0xB6, 0x42, 0xCE, 0xBD, 0xC4, 0x34, + 0x7C, 0x6E, 0xA7, 0x6F, 0x63, 0x29, 0x16, 0x97, 0x3A, 0x19, 0x11, 0xEF, + 0xB6, 0x47, 0xF0, 0x01, 0xAA, 0x25, 0x4A, 0x50, 0x67, 0xCC, 0x60, 0xF2, + 0x36, 0x06, 0x85, 0x7A, 0x99, 0x50, 0x11, 0x24, 0xDD, 0xA5, 0xC1, 0x1A, + 0xA6, 0x76, 0x62, 0xBB, 0xB6, 0x34, 0xB8, 0x90, 0x37, 0x35, 0xAA, 0x96, + 0xF3, 0xC5, 0xA2, 0x5E, 0x5D, 0x4F, 0x9C, 0x9F, 0x95, 0x99, 0xEF, 0xDE, + 0xCC, 0x89, 0xC5, 0x2E, 0x73, 0xC7, 0xF7, 0xAC, 0xFB, 0x87, 0x95, 0xFE, + 0x20, 0x99, 0x2B, 0x62, 0x5D, 0xDC, 0x61, 0x3B, 0x10, 0x7A, 0x5C, 0xF5, + 0x09, 0xCB, 0xE0, 0xB1, 0x41, 0xB0, 0x7A, 0x90, 0x49, 0x65, 0x2D, 0x3F, + 0x7D, 0x10, 0x6C, 0xDD, 0x5F, 0x04, 0x21, 0x70, 0xCA, 0x13, 0x42, 0x2B, + 0x71, 0x30, 0xE9, 0x40, 0x80, 0xB4, 0xDD, 0xBF, 0xDF, 0x0D, 0x11, 0x21, + 0xC1, 0xE4, 0x51, 0xC8, 0x48, 0xAC, 0x37, 0xD3, 0xDE, 0x32, 0xBE, 0xCF, + 0x61, 0xF6, 0x8A, 0xEB, 0x8C, 0xE1, 0xF7, 0x1D, 0xCD, 0xAA, 0x24, 0x68, + 0x4C, 0xA1, 0x33, 0x8A, 0x0B, 0xA5, 0xA4, 0xC6, 0x94, 0xCD, 0x1E, 0x07, + 0x62, 0xB9, 0x3B, 0x3E, 0xD6, 0x13, 0x6F, 0x54, 0xD9, 0x93, 0x02, 0xD9, + 0x1E, 0x72, 0x9C, 0x6C, 0xC9, 0x97, 0xEF, 0xB6, 0x96, 0xDA, 0x93, 0x7E, + 0x8D, 0x4F, 0x88, 0x0B, 0xA4, 0x7E, 0xF9, 0x0A, 0x7E, 0xD3, 0x2D, 0x8D, + 0x15, 0xCA, 0xC4, 0x14, 0xDC, 0x0E, 0x1B, 0x93, 0x02, 0xC5, 0x7E, 0x31, + 0xC8, 0xCC, 0x59, 0x92, 0x9F, 0x66, 0x43, 0xA5, 0x51, 0xFA, 0x76, 0x92, + 0xDE, 0x20, 0xCF, 0x5D, 0x28, 0xAA, 0x4E, 0x80, 0x61, 0x6D, 0xE2, 0x3C, + 0xD3, 0xAE, 0x55, 0xEC, 0xD1, 0xC2, 0x30, 0xEA, 0xE3, 0xD7, 0x9D, 0xCE, + 0x01, 0x64, 0xD4, 0x85, 0x95, 0xC0, 0x91, 0xBD, 0xB7, 0xAF, 0x78, 0xDB, + 0xAC, 0x3C, 0xCF, 0x18, 0xE3, 0x07, 0x6C, 0xD4, 0x85, 0xD9, 0x04, 0xF5, + 0xFA, 0x43, 0x1C, 0x27, 0x85, 0x1A, 0xF1, 0x86, 0xE5, 0xEE, 0x36, 0x83, + 0x18, 0xE4, 0x40, 0x88, 0x67, 0xA4, 0xF9, 0x0E, 0x2C, 0x6F, 0xA9, 0xB2, + 0xD8, 0x58, 0x89, 0xC1, 0xF5, 0x5C, 0xC0, 0x79, 0xDB, 0xF0, 0xA3, 0x92, + 0xED, 0xBB, 0x7F, 0x76, 0xEE, 0x7D, 0x60, 0x5D, 0x05, 0xB5, 0xBA, 0x4C, + 0x6A, 0x58, 0x8A, 0xBD, 0xF3, 0x69, 0x68, 0x4F, 0xDE, 0xE3, 0x7F, 0xF2, + 0x05, 0x42, 0xC6, 0xDC, 0x7D, 0x04, 0x48, 0x3B, 0x1F, 0x99, 0x7E, 0x6C, + 0x1E, 0x91, 0x86, 0xC8, 0xDF, 0x10, 0x92, 0x3F, 0xBD, 0xC3, 0x43, 0x39, + 0xE3, 0xC1, 0x30, 0x7B, 0xBD, 0x02, 0x1F, 0x16, 0xEF, 0x72, 0x07, 0x99, + 0xB1, 0x3B, 0x6A, 0x2C, 0xBE, 0x41, 0x38, 0xC6, 0xBF, 0xA0, 0xA4, 0xF4, + 0xFF, 0x65, 0x4D, 0xF0, 0x76, 0xF2, 0x2F, 0x02, 0x87, 0x02, 0x13, 0xFD, + 0x19, 0xC6, 0x4F, 0x6B, 0x57, 0x45, 0xCE, 0xDE, 0xEC, 0x24, 0x9E, 0x29, + 0x0D, 0x9C, 0xF4, 0x16, 0x7A, 0x13, 0x33, 0xB9, 0x1C, 0x9E, 0xC1, 0x6B, + 0xE3, 0xAD, 0xFD, 0x06, 0x52, 0xDF, 0x8B, 0xAE, 0x35, 0xA6, 0x1B, 0xE7, + 0x93, 0x24, 0xB5, 0x5F, 0xD1, 0x77, 0xD5, 0x3E, 0xC4, 0x9F, 0x2F, 0x8A, + 0x5C, 0x1C, 0x35, 0xAE, 0x08, 0xBE, 0x22, 0x10, 0x54, 0xDD, 0x6C, 0xC4, + 0x1A, 0xDD, 0xD1, 0x04, 0x16, 0x04, 0x3D, 0x7B, 0x65, 0x92, 0xAC, 0x4B, + 0x51, 0x51, 0x12, 0x96, 0xAB, 0x10, 0x05, 0x78, 0xD8, 0x77, 0x6D, 0x46, + 0x3A, 0x50, 0x3B, 0xB8, 0xB9, 0xF5, 0x64, 0x13, 0xDA, 0xAD, 0x17, 0x2A, + 0xD5, 0xAA, 0x40, 0x56, 0x7F, 0xC5, 0xF4, 0x73, 0xE5, 0xFC, 0x77, 0x96, + 0xFD, 0xC5, 0x96, 0xCE, 0x68, 0x2C, 0x95, 0xDB, 0x0B, 0x98, 0xAC, 0x99, + 0x3F, 0xF9, 0x22, 0x3D, 0xA2, 0xDC, 0x59, 0x30, 0xBF, 0x40, 0x1F, 0x73, + 0xB9, 0xBA, 0xE3, 0x09, 0xF2, 0xDD, 0x51, 0x97, 0x46, 0x2E, 0xB5, 0x1E, + 0xA3, 0x4D, 0x62, 0x9F, 0x20, 0xCA, 0xF5, 0xC3, 0xF5, 0x14, 0xC4, 0xD5, + 0x5C, 0x06, 0x9A, 0xD7, 0x9B, 0x93, 0xD3, 0x0B, 0xA4, 0xDE, 0xCD, 0xAA, + 0xBC, 0xFA, 0x91, 0xD8, 0xF5, 0xA2, 0xC1, 0x31, 0xCD, 0x16, 0xE3, 0x5C, + 0xFB, 0x33, 0x4C, 0x33, 0x02, 0xD1, 0x17, 0x69, 0x29, 0xE1, 0x94, 0x97, + 0xC9, 0x6C, 0x0F, 0x73, 0x5D, 0xCE, 0xBC, 0xF1, 0x76, 0xCE, 0x22, 0xBC, + 0xB5, 0x11, 0xAF, 0x5D, 0x0F, 0x78, 0x54, 0x2E, 0x45, 0xDB, 0x02, 0x58, + 0x7C, 0xE3, 0x39, 0x99, 0x74, 0x9D, 0x11, 0xFD, 0xF6, 0x87, 0x10, 0x47, + 0xA9, 0xF3, 0x3B, 0x08, 0x6E, 0xBC, 0x0C, 0x8E, 0x54, 0x5E, 0x04, 0x58, + 0xF6, 0xD9, 0x66, 0xEC, 0xD9, 0x11, 0x6D, 0x35, 0xAB, 0xB4, 0xE5, 0xDC, + 0xF0, 0xB6, 0x1E, 0x71, 0xAC, 0x5D, 0x92, 0xC1, 0x5C, 0xB1, 0xC7, 0xD0, + 0x0B, 0x10, 0x6E, 0xE2, 0x32, 0xA6, 0x89, 0x42, 0xAD, 0xA6, 0x5C, 0xBA, + 0xAD, 0xB2, 0x0F, 0x47, 0x8C, 0xEF, 0xDD, 0x88, 0xEA, 0x04, 0x70, 0xB5, + 0xFA, 0xD7, 0x22, 0x78, 0xD8, 0xCB, 0x20, 0xDD, 0xE4, 0xFE, 0x84, 0x68, + 0xFD, 0x86, 0x1E, 0xE3, 0x87, 0x7B, 0x74, 0x61, 0xB2, 0x03, 0xC5, 0xA5, + 0x06, 0xED, 0x4E, 0x87, 0x4E, 0x31, 0x0C, 0x0A, 0x2B, 0x49, 0x25, 0xD1, + 0x33, 0xFF, 0xFE, 0xAC, 0x5E, 0x1F, 0xB2, 0x8D, 0xC0, 0x0D, 0x67, 0xAD, + 0x92, 0x64, 0x12, 0xCD, 0x4C, 0x80, 0x68, 0x8B, 0x91, 0xA3, 0xBD, 0x88, + 0xA6, 0x0F, 0xEC, 0x4D, 0x26, 0x1F, 0xD6, 0xB1, 0x8C, 0x5D, 0x6B, 0x25, + 0x7A, 0x98, 0xA7, 0x30, 0x57, 0x7D, 0x9D, 0x31, 0x8B, 0xE0, 0x61, 0xBC, + 0xA1, 0xB5, 0xB6, 0xD3, 0x21, 0xAF, 0x26, 0x7C, 0x53, 0xC2, 0xFB, 0x3E, + 0x82, 0xEC, 0xB3, 0x17, 0x02, 0x82, 0xD7, 0x00, 0x82, 0x0A, 0x28, 0x4B, + 0xDE, 0x55, 0x8E, 0x9E, 0x42, 0xB5, 0x93, 0xA6, 0x0C, 0x54, 0x09, 0x59, + 0xD0, 0x02, 0x68, 0xBE, 0x00, 0x0C, 0x8F, 0x50, 0x73, 0xE9, 0x19, 0x03, + 0xBB, 0x47, 0x65, 0xDE, 0x85, 0x23, 0x8C, 0xDC, 0xBB, 0x5A, 0xB5, 0x59, + 0xC7, 0xA3, 0x1A, 0xDF, 0x10, 0x1E, 0x2C, 0x10, 0xD7, 0x36, 0xAE, 0x1E, + 0x27, 0x78, 0x4D, 0xEE, 0xE6, 0xC0, 0x30, 0xC3, 0x57, 0x0B, 0x5F, 0xFF, + 0x5A, 0xB1, 0x05, 0x73, 0xF6, 0x4D, 0x1C, 0x3E, 0x18, 0x3F, 0x01, 0x43, + 0x47, 0x23, 0xE2, 0x0F, 0xA9, 0x1C, 0xDE, 0xC5, 0xAA, 0x2B, 0x24, 0xAB, + 0x8F, 0xE0, 0xEC, 0x3A, 0x57, 0xBD, 0xBD, 0x47, 0xF4, 0x86, 0x53, 0x7A, + 0xC3, 0x32, 0x20, 0x78, 0x3E, 0x0A, 0xDB, 0xBD, 0x33, 0xA4, 0x62, 0x57, + 0x55, 0x5B, 0xB3, 0x33, 0x48, 0x2E, 0x24, 0xCD, 0x54, 0xB9, 0xD6, 0x7B, + 0x73, 0x51, 0xDB, 0x45, 0xC5, 0x91, 0xDF, 0x49, 0xC0, 0x83, 0x22, 0x2C, + 0x08, 0x9A, 0xE7, 0x24, 0x31, 0xEF, 0xDA, 0x7E, 0x54, 0xE1, 0xAF, 0x43, + 0xB3, 0xBB, 0x57, 0x79, 0x4A, 0x07, 0xCC, 0x50, 0x6D, 0x2F, 0x32, 0x46, + 0x00, 0xE0, 0xCA, 0x4A, 0xE6, 0x2C, 0xE6, 0xCD, 0x41, 0x23, 0xE3, 0xB9, + 0x2F, 0x6A, 0x9B, 0xB7, 0xDE, 0x17, 0x50, 0xEA, 0x38, 0x58, 0x97, 0x40, + 0x34, 0x4A, 0x9A, 0x57, 0x5E, 0x68, 0x1A, 0xA3, 0xF9, 0x53, 0xB3, 0xC3, + 0x5F, 0xC5, 0x20, 0x37, 0xC9, 0x59, 0xFC, 0xE4, 0xFC, 0x3F, 0xD4, 0x5B, + 0xBA, 0xF8, 0xB4, 0xAD, 0x50, 0x65, 0xAE, 0xDC, 0x5D, 0xE6, 0xF9, 0x95, + 0xF2, 0xAC, 0x41, 0xC2, 0x96, 0x0F, 0x3F, 0x1F, 0xE3, 0x33, 0x7A, 0x0B, + 0x13, 0x2D, 0x68, 0x34, 0xAA, 0x23, 0x5B, 0xC9, 0x81, 0x9D, 0xD1, 0x97, + 0x4A, 0x5A, 0x55, 0xD6, 0xF9, 0xCE, 0x7F, 0xA2, 0x05, 0x00, 0x63, 0xF8, + 0xF8, 0xE2, 0xD4, 0x43, 0x2B, 0x92, 0x63, 0x49, 0x3B, 0xE0, 0x05, 0x60, + 0xBA, 0x29, 0x1F, 0x20, 0x09, 0x3E, 0xB9, 0x56, 0xF8, 0x8D, 0xBC, 0x23, + 0xAA, 0xC8, 0xDB, 0xAE, 0xF7, 0xED, 0x15, 0x6E, 0xFE, 0xA8, 0xBA, 0xFC, + 0xD5, 0x5B, 0x85, 0xCC, 0x78, 0xC6, 0x50, 0xA1, 0x96, 0xE8, 0x0D, 0x56, + 0xBD, 0x45, 0x35, 0xFB, 0xF3, 0xF0, 0x1F, 0x87, 0x90, 0xD8, 0x1B, 0x49, + 0x3B, 0x8B, 0xB6, 0x44, 0xF5, 0x08, 0xA7, 0xCB, 0xE6, 0x29, 0x72, 0x01, + 0xC5, 0x73, 0x07, 0xD3, 0x6F, 0x8A, 0x08, 0xBC, 0x35, 0x07, 0x7B, 0xE8, + 0x3F, 0x85, 0xE4, 0x63, 0x23, 0xF2, 0x99, 0x99, 0x52, 0x6D, 0x4F, 0xEC, + 0xAE, 0x92, 0x8A, 0xB1, 0x5D, 0x62, 0x20, 0xFE, 0xC6, 0x8B, 0x5B, 0xA1, + 0xD9, 0x21, 0x1E, 0xB5, 0x26, 0x6C, 0x53, 0x92, 0x9C, 0x82, 0x66, 0xCD, + 0xA0, 0x2E, 0xD2, 0x72, 0xE2, 0xEB, 0xB1, 0x21, 0xCD, 0xC6, 0xC2, 0xB0, + 0xB8, 0x13, 0x96, 0x1B, 0xF3, 0x5E, 0xF8, 0x46, 0xA2, 0xA7, 0x73, 0xFB, + 0x67, 0xCB, 0x5E, 0x24, 0x1E, 0x1A, 0x40, 0xA2, 0x96, 0x9E, 0x72, 0x44, + 0x3F, 0xFA, 0x4C, 0x03, 0x9B, 0x2B, 0x0E, 0x44, 0xDB, 0x0F, 0x2F, 0x55, + 0x82, 0xAF, 0x08, 0x27, 0x85, 0xFB, 0xFE, 0x55, 0x08, 0x28, 0x85, 0x04, + 0x92, 0x0D, 0xC7, 0x25, 0x48, 0x2C, 0x2A, 0x49, 0x31, 0x52, 0x65, 0xB4, + 0xB4, 0xF2, 0xC0, 0xD2, 0x64, 0x0C, 0xB0, 0xEB, 0xC3, 0x6F, 0x11, 0xF6, + 0xB3, 0x8B, 0xB1, 0xA8, 0x1F, 0xB2, 0x69, 0x46, 0x7E, 0x15, 0xFE, 0xCC, + 0xE2, 0x1A, 0xF9, 0x1F, 0x7B, 0x65, 0xDD, 0xA6, 0xD9, 0x10, 0x03, 0xD5, + 0x37, 0x8C, 0x25, 0x41, 0x0B, 0xFF, 0xFF, 0xF8, 0x46, 0xCE, 0x8A, 0x7A, + 0x9F, 0x74, 0x61, 0xD8, 0xD4, 0x64, 0xE6, 0xF1, 0x46, 0xC6, 0x04, 0xC0, + 0xEA, 0xDB, 0x10, 0x40, 0x6B, 0x9B, 0xD0, 0xC1, 0x45, 0x83, 0x1C, 0x74, + 0xA8, 0x3B, 0x5F, 0xC9, 0x45, 0x69, 0x70, 0x90, 0xBD, 0x93, 0x79, 0x82, + 0x71, 0x96, 0x75, 0x23, 0x01, 0x9A, 0x3B, 0x0E, 0xCA, 0x7D, 0xDE, 0x66, + 0x49, 0x57, 0x11, 0xB2, 0xBF, 0xB4, 0x7E, 0x33, 0xEB, 0xA4, 0x4E, 0xE0, + 0x33, 0xCC, 0x44, 0x6F, 0x89, 0xEC, 0xD0, 0x7D, 0x75, 0x79, 0x41, 0x96, + 0x37, 0x9D, 0x5A, 0x82, 0x7A, 0xAA, 0xE8, 0x1A, 0x43, 0xA3, 0xE8, 0x1A, + 0x24, 0x14, 0x29, 0x84, 0xE0, 0x2E, 0xD0, 0x7F, 0xAC, 0x35, 0x52, 0xF2, + 0xE5, 0xD5, 0xA9, 0x7B, 0x9F, 0x55, 0xF3, 0xF1, 0xCB, 0x31, 0x3C, 0xDF, + 0x22, 0x4A, 0x1A, 0x47, 0xB7, 0x5E, 0x3A, 0x8C, 0x1A, 0xF2, 0xE7, 0x0C, + 0x9A, 0xC8, 0xE4, 0xF9, 0xF9, 0x30, 0xC7, 0x00, 0x9F, 0x57, 0xEF, 0x67, + 0xB4, 0x36, 0x0A, 0xF9, 0xB4, 0x3F, 0xE6, 0x20, 0x66, 0x36, 0x88, 0x60, + 0x19, 0x74, 0x8B, 0x29, 0x55, 0x64, 0xF2, 0x6C, 0x9D, 0x3B, 0xF4, 0xE9, + 0xC8, 0x74, 0x48, 0x48, 0xCA, 0x56, 0xFF, 0x74, 0xE7, 0x39, 0x98, 0xD9, + 0x1D, 0xCE, 0x22, 0x98, 0x35, 0xB6, 0xF5, 0xA8, 0x70, 0x51, 0xA8, 0x53, + 0x6C, 0xEB, 0xB7, 0x99, 0xDF, 0x97, 0x34, 0x3C, 0x51, 0x74, 0x4E, 0x1E, + 0xB9, 0xF4, 0x11, 0xB6, 0x3B, 0xAC, 0x5F, 0x32, 0xA3, 0xB8, 0x3E, 0xB3, + 0x78, 0x45, 0xEB, 0x08, 0xB2, 0xAB, 0xA8, 0xD9, 0xBD, 0x32, 0x95, 0xD2, + 0x5C, 0xAE, 0xF2, 0x86, 0x82, 0x1A, 0x53, 0xBB, 0x97, 0xA4, 0x8E, 0x4E, + 0xD4, 0x1B, 0x3D, 0x5B, 0x70, 0x4A, 0xCE, 0x7A, 0x1A, 0xBD, 0xAE, 0xF0, + 0xE4, 0xF2, 0xC0, 0x9D, 0x00, 0xBA, 0xD7, 0xAF, 0xF6, 0x63, 0x7D, 0x7C, + 0xA0, 0x58, 0x29, 0x45, 0xBF, 0x96, 0x8F, 0x5D, 0xE1, 0x79, 0x75, 0x52, + 0x98, 0xBF, 0x8E, 0x2C, 0x9B, 0xAE, 0xA5, 0x1B, 0x2A, 0xB0, 0x8A, 0x89, + 0x25, 0xFE, 0x4D, 0xDA, 0x12, 0xFE, 0xA5, 0x11, 0xC3, 0x72, 0xEB, 0xE5, + 0x91, 0xE0, 0xD8, 0x7E, 0x9B, 0xD1, 0x2D, 0xA5, 0x25, 0x3D, 0x18, 0x53, + 0x68, 0x5C, 0x22, 0x7D, 0x18, 0x0A, 0x12, 0x3D, 0x40, 0x08, 0x40, 0x59, + 0xA6, 0x12, 0x5F, 0x1C, 0x3A, 0xC5, 0xF5, 0xDB, 0xF6, 0x8D, 0x04, 0x90, + 0xF9, 0xB7, 0x43, 0x6D, 0x88, 0x42, 0x0F, 0x5F, 0x97, 0xD0, 0x6E, 0x1B, + 0xA3, 0xED, 0x0E, 0xEA, 0x68, 0xDE, 0x9C, 0x42, 0x91, 0xE3, 0xC2, 0xFC, + 0xB3, 0x06, 0x7F, 0x55, 0x43, 0x07, 0x1B, 0x76, 0xC2, 0x8F, 0xFE, 0x55, + 0xA9, 0x08, 0x83, 0x7F, 0xC5, 0xD9, 0x69, 0xAB, 0x91, 0xCC, 0x68, 0x6C, + 0x7C, 0xCA, 0x45, 0x99, 0x72, 0x15, 0xF1, 0x50, 0x47, 0xC6, 0x10, 0xAD, + 0xB2, 0x91, 0x93, 0xEA, 0x02, 0x57, 0x73, 0x96, 0x91, 0xB3, 0xD1, 0x06, + 0x33, 0x2F, 0x73, 0xB0, 0x9F, 0xB1, 0xC3, 0x44, 0x48, 0x3F, 0xB0, 0x99, + 0xD4, 0xE5, 0x89, 0x03, 0xC6, 0x10, 0x31, 0xBA, 0xD4, 0xD0, 0x93, 0x91, + 0xBC, 0x21, 0xFA, 0xEA, 0x4B, 0xB1, 0x1A, 0x01, 0x88, 0x0C, 0x30, 0x03, + 0x78, 0x8D, 0xF6, 0xF5, 0x99, 0x57, 0x1B, 0x00, 0xBB, 0x08, 0x31, 0x23, + 0xA4, 0xAD, 0x68, 0x59, 0x80, 0xE5, 0x52, 0x59, 0x32, 0xE0, 0xC2, 0x93, + 0x3B, 0x99, 0xC2, 0x0E, 0x03, 0x46, 0x4A, 0x5E, 0x12, 0x24, 0x7F, 0xE8, + 0x35, 0xA5, 0xA3, 0x1A, 0xB6, 0xF6, 0xA5, 0xBE, 0xEA, 0x93, 0x04, 0xFA, + 0x06, 0x0A, 0x9B, 0xEB, 0x0D, 0x9C, 0x52, 0x57, 0xC7, 0x88, 0x59, 0xAF, + 0x2A, 0x72, 0x59, 0x7C, 0xB3, 0xFC, 0x92, 0x1B, 0x6E, 0xE4, 0x76, 0x1F, + 0xD5, 0xFC, 0x4A, 0xF1, 0x2B, 0xEF, 0x64, 0xF8, 0x48, 0x17, 0x43, 0x7E, + 0x1A, 0xC0, 0xAE, 0x3B, 0xC1, 0xC2, 0x37, 0x2E, 0xDC, 0x16, 0xAB, 0x8F, + 0xE7, 0x54, 0x9D, 0x7C, 0xFD, 0x38, 0xC0, 0xE7, 0x7F, 0xF9, 0x5E, 0x54, + 0x56, 0x51, 0xE9, 0x37, 0x95, 0x8A, 0x9E, 0xF0, 0x8F, 0x86, 0x57, 0xE8, + 0x49, 0x1C, 0xCE, 0x26, 0x29, 0x94, 0x8C, 0x31, 0x35, 0xB3, 0xD5, 0x7A, + 0x22, 0x36, 0xFB, 0x8A, 0x65, 0x21, 0xED, 0x02, 0x0D, 0x97, 0x92, 0xD5, + 0x37, 0x6E, 0x25, 0xAC, 0x23, 0xC2, 0x92, 0xCF, 0xF4, 0x11, 0x9B, 0x04, + 0x58, 0x31, 0x9C, 0xB6, 0xFA, 0xF8, 0x60, 0xDF, 0xA1, 0xE0, 0x53, 0x5F, + 0x78, 0x5D, 0x27, 0x02, 0xD7, 0x60, 0xD3, 0x78, 0xF6, 0xF8, 0x0D, 0xA7, + 0x9F, 0x07, 0x91, 0xAB, 0xDC, 0xB6, 0xB4, 0x8E, 0xD3, 0xCE, 0x44, 0x30, + 0xEE, 0xEC, 0x94, 0x32, 0xB0, 0x0C, 0x49, 0x07, 0x88, 0x76, 0x67, 0xC0, + 0xD7, 0x46, 0x84, 0x1F, 0x07, 0xBA, 0x1A, 0xD6, 0xB9, 0x3B, 0xBF, 0xD1, + 0x81, 0xF0, 0xE0, 0xB8, 0xB4, 0xE8, 0x00, 0x20, 0x74, 0xA2, 0x2D, 0x25, + 0x40, 0xE6, 0x97, 0x0C, 0xCA, 0xCF, 0xE6, 0xCD, 0x47, 0x9A, 0xAC, 0xD8, + 0x68, 0x96, 0x80, 0x3F, 0x1C, 0x2E, 0x22, 0x8F, 0x34, 0x37, 0xCC, 0x7A, + 0xC5, 0x30, 0x24, 0xB7, 0x98, 0x25, 0x62, 0x41, 0x6C, 0x9B, 0x38, 0x51, + 0x91, 0x99, 0x98, 0x61, 0x54, 0xE7, 0x56, 0xD0, 0x76, 0x4D, 0xFB, 0xEB, + 0xE3, 0x7A, 0x85, 0xCF, 0x18, 0x31, 0x6D, 0xD8, 0x58, 0x17, 0x40, 0x18, + 0x9F, 0xED, 0x01, 0xBF, 0x68, 0x6D, 0x5E, 0x3D, 0xE7, 0x02, 0x37, 0xF8, + 0x11, 0x71, 0x2D, 0x1A, 0xD4, 0x7E, 0xC6, 0xBD, 0x48, 0xB9, 0xE5, 0xF1, + 0xF5, 0x9C, 0x6B, 0x34, 0xC4, 0xB8, 0xB2, 0x24, 0x04, 0x9E, 0xFC, 0x02, + 0x99, 0x5E, 0xF6, 0x3B, 0x37, 0xAA, 0xA6, 0x54, 0xAB, 0x34, 0x46, 0x26, + 0xF5, 0xC7, 0x5E, 0x06, 0xFA, 0x6E, 0x6E, 0xB1, 0x6E, 0xBC, 0xF1, 0x64, + 0xDB, 0x86, 0x07, 0x69, 0x35, 0x51, 0x72, 0xCE, 0x8B, 0x3C, 0xE5, 0x1D, + 0xB0, 0x54, 0xCD, 0xDE, 0x29, 0x52, 0x72, 0x7F, 0xDF, 0xA0, 0xE7, 0x75, + 0xDA, 0xED, 0x05, 0xE9, 0x5E, 0xFE, 0x7F, 0xE5, 0xEF, 0x3B, 0x21, 0x0E, + 0xD0, 0x08, 0xE7, 0x7F, 0x77, 0x69, 0xF3, 0x5D, 0x00, 0xB1, 0x51, 0xC4, + 0x0C, 0xBA, 0x8D, 0xC2, 0x5E, 0x36, 0xE9, 0xF7, 0xCC, 0x50, 0xEE, 0xD8, + 0xF9, 0x5E, 0x53, 0x26, 0x49, 0x7B, 0xAD, 0xE2, 0x80, 0xDF, 0xBE, 0x0D, + 0xD1, 0x6A, 0x86, 0x35, 0x34, 0x6D, 0x35, 0x6D, 0x2F, 0xA9, 0xAC, 0x14, + 0xE7, 0x06, 0xB5, 0x75, 0xED, 0x5A, 0xF5, 0x5B, 0xE1, 0xA5, 0x64, 0x55, + 0x0F, 0x72, 0x1A, 0x43, 0x70, 0x48, 0x6B, 0x13, 0xC1, 0x18, 0x2C, 0x50, + 0xC7, 0xCF, 0x7D, 0x69, 0x2C, 0x20, 0xD3, 0xEE, 0xE0, 0xB7, 0x29, 0x97, + 0xB2, 0x89, 0xF8, 0xAF, 0x4B, 0x4D, 0xBB, 0x44, 0xFB, 0xC6, 0x28, 0x1D, + 0xD3, 0x05, 0xD2, 0xF5, 0x59, 0x2D, 0x92, 0x7D, 0xEC, 0xB0, 0x81, 0x76, + 0x76, 0x7A, 0xF8, 0x09, 0x8E, 0x67, 0x5A, 0xAC, 0x77, 0x4C, 0x64, 0x4D, + 0x6B, 0x61, 0xE9, 0x27, 0x85, 0x91, 0x57, 0xF9, 0x45, 0xF0, 0xFC, 0xCC, + 0x11, 0x0E, 0x6D, 0x84, 0x8F, 0x21, 0xE4, 0xB2, 0xA7, 0x7B, 0x9B, 0x31, + 0xF9, 0xEF, 0x45, 0xE1, 0x3F, 0x74, 0x10, 0xEA, 0xF5, 0xBF, 0x65, 0x7E, + 0xC8, 0xCF, 0x01, 0xBD, 0x40, 0x41, 0x32, 0x9D, 0x3E, 0xC0, 0x00, 0xC1, + 0x9E, 0x6A, 0xE2, 0x54, 0xA1, 0x0D, 0xB3, 0x84, 0x3A, 0xD4, 0x08, 0xC7, + 0x4D, 0x6A, 0x01, 0xC5, 0xD3, 0xB9, 0x80, 0xB9, 0x3C, 0xD1, 0x81, 0xB7, + 0x5D, 0x8D, 0x37, 0xD4, 0x3C, 0x5A, 0xDC, 0xC9, 0xDD, 0x84, 0x4F, 0x56, + 0xBC, 0xCC, 0xA5, 0x0D, 0x9A, 0x53, 0x9D, 0xCC, 0x7A, 0x52, 0xA7, 0xAE, + 0x3A, 0x7F, 0x4E, 0xE1, 0x63, 0xAE, 0xFF, 0x0E, 0xA7, 0x7A, 0x3B, 0x05, + 0x0A, 0x53, 0xC5, 0xAC, 0xD3, 0x58, 0xB5, 0xB6, 0xE1, 0xC1, 0x8B, 0x1C, + 0xEF, 0x77, 0xEB, 0x2A, 0xAF, 0x41, 0xDA, 0x4D, 0xBC, 0xC5, 0x37, 0x27, + 0xCD, 0x20, 0xBD, 0xA9, 0x83, 0x64, 0xA6, 0x28, 0xDE, 0x1C, 0xD7, 0x7A, + 0x98, 0xEA, 0x55, 0x3D, 0xE2, 0x59, 0x2F, 0x4E, 0x96, 0xEE, 0xB2, 0xAF, + 0xAA, 0xD3, 0xC7, 0x03, 0xEB, 0x47, 0x37, 0xF5, 0x3C, 0x6A, 0x07, 0x88, + 0x20, 0x9D, 0x2A, 0xD8, 0xED, 0x0F, 0x38, 0xB7, 0x55, 0x3E, 0x99, 0x67, + 0x8A, 0x80, 0x0F, 0x20, 0x38, 0xC2, 0x3E, 0x21, 0x65, 0x07, 0x62, 0x7D, + 0x56, 0xE2, 0x61, 0x3E, 0x1F, 0x29, 0x20, 0x06, 0x2E, 0xB4, 0xEA, 0x23, + 0x72, 0x91, 0xB6, 0x2B, 0x78, 0xB1, 0x01, 0xF0, 0x25, 0x0E, 0x6F, 0xD0, + 0x3A, 0x98, 0x14, 0x4B, 0xF7, 0x18, 0x27, 0x70, 0xBF, 0x89, 0x29, 0xF2, + 0x0C, 0xFA, 0xAC, 0x26, 0x73, 0xBC, 0xAA, 0x21, 0x5C, 0x0A, 0xC4, 0xF6, + 0x95, 0x10, 0xA3, 0x90, 0x46, 0x49, 0x5C, 0x53, 0x25, 0x95, 0x93, 0x80, + 0x0F, 0xF3, 0xB5, 0xA1, 0x7F, 0x27, 0xD5, 0xF2, 0x9D, 0x41, 0xA0, 0x34, + 0xAB, 0xDC, 0xD2, 0x8F, 0xA4, 0xBC, 0xE8, 0x54, 0x06, 0x60, 0x13, 0x6D, + 0x9B, 0x74, 0x57, 0x82, 0x1C, 0x0D, 0x1F, 0xDB, 0x54, 0xC3, 0x4F, 0x0C, + 0xC3, 0x99, 0x0F, 0xF6, 0x6B, 0x6A, 0x72, 0x4F, 0x2C, 0x01, 0x0C, 0x91, + 0xDC, 0x06, 0x05, 0xA7, 0xCC, 0xD4, 0x6C, 0xB3, 0x35, 0xAF, 0x10, 0xDE, + 0xEE, 0xE6, 0x42, 0x93, 0x11, 0x41, 0x66, 0x86, 0x2F, 0xD6, 0xCF, 0xC3, + 0xA7, 0x61, 0x24, 0xD0, 0xC8, 0x9D, 0x8B, 0x01, 0x68, 0xF7, 0x54, 0x10, + 0x5C, 0xE7, 0x01, 0x49, 0xA3, 0x4D, 0x5D, 0x97, 0xEA, 0x79, 0xA8, 0xFA, + 0x09, 0x0F, 0xAD, 0x93, 0x16, 0xCD, 0x75, 0x6B, 0x70, 0x79, 0xDB, 0xC3, + 0xC8, 0x04, 0xE1, 0xD6, 0xDA, 0x11, 0x8E, 0x4B, 0xB6, 0x6E, 0x60, 0x5D, + 0x21, 0xAA, 0xB0, 0xC0, 0xA0, 0xCD, 0xC7, 0x81, 0x92, 0x0F, 0xF3, 0xBC, + 0xA3, 0x80, 0x5C, 0x54, 0xCA, 0x05, 0x9C, 0x75, 0x5B, 0x80, 0x3E, 0x66, + 0x76, 0x65, 0xAA, 0x96, 0xE3, 0x6E, 0x9A, 0x6C, 0x09, 0xEC, 0x74, 0xF3, + 0x95, 0x7A, 0xA8, 0x0F, 0x4D, 0x08, 0x1B, 0x39, 0x7F, 0xA3, 0x27, 0xA3, + 0x50, 0x4F, 0xCA, 0x1A, 0xDA, 0x40, 0xFE, 0x6F, 0x63, 0xFB, 0xB6, 0xBC, + 0x03, 0x8F, 0xBD, 0x4A, 0x95, 0xE2, 0xA1, 0xCE, 0x1E, 0xFA, 0xE6, 0xF0, + 0x6D, 0x65, 0x7E, 0x03, 0x6C, 0xEF, 0x10, 0x88, 0x2F, 0xC3, 0x35, 0xFC, + 0x67, 0xDB, 0xEF, 0xF3, 0xA1, 0xBC, 0x5B, 0x12, 0x9C, 0x4C, 0xFF, 0xD9, + 0x5E, 0x53, 0x4E, 0xEC, 0x9C, 0x67, 0x9F, 0xED, 0x24, 0x75, 0x9D, 0xC5, + 0xE0, 0xCB, 0x74, 0x89, 0x0D, 0x0B, 0x3B, 0x85, 0x24, 0x12, 0xAA, 0xF8, + 0x22, 0x32, 0xAC, 0xDD, 0x3B, 0xC6, 0x90, 0x6F, 0xEF, 0xBB, 0x72, 0xEF, + 0xCA, 0x0D, 0xB1, 0x49, 0x30, 0x9B, 0xE3, 0xBC, 0x50, 0x8D, 0x8D, 0xE0, + 0x21, 0x79, 0x64, 0x89, 0x01, 0x59, 0xEF, 0xD6, 0x0C, 0x83, 0xED, 0xA4, + 0x23, 0xCB, 0x41, 0xC5, 0x4D, 0x10, 0xC4, 0xCF, 0xC2, 0x2F, 0xC7, 0xA3, + 0xD9, 0x03, 0xF5, 0x11, 0xD4, 0x2C, 0xC5, 0x31, 0x62, 0xF6, 0xAF, 0x90, + 0x39, 0x3D, 0xC8, 0xCB, 0x9F, 0x98, 0xCD, 0x00, 0xBD, 0x0E, 0x80, 0xE4, + 0xDF, 0xE7, 0x66, 0x00, 0x19, 0xA4, 0x8D, 0x40, 0x1A, 0x1E, 0xED, 0x2B, + 0xD2, 0xAB, 0xDC, 0x6E, 0x0F, 0x0A, 0xD4, 0xD7, 0x44, 0xC7, 0x74, 0x85, + 0xC2, 0xF2, 0x63, 0x96, 0x62, 0x90, 0x56, 0x0D, 0x3B, 0x27, 0x1A, 0xB1, + 0xBF, 0x9F, 0x58, 0x07, 0xF1, 0xF5, 0x3E, 0xAF, 0x07, 0x00, 0x76, 0xA9, + 0xB7, 0x38, 0x7A, 0xBC, 0xF8, 0xD7, 0x83, 0xF7, 0x17, 0x9F, 0xD5, 0xD5, + 0x0A, 0x34, 0xBE, 0x07, 0x28, 0xFB, 0xA9, 0x00, 0xC3, 0x2A, 0xD0, 0x32, + 0xC6, 0xAD, 0x4A, 0x58, 0x5E, 0xD9, 0xAD, 0x4D, 0x86, 0x14, 0x1D, 0x3E, + 0xEB, 0xE9, 0xE5, 0x7D, 0xD0, 0x95, 0x33, 0x54, 0xEC, 0xC1, 0x72, 0x8B, + 0xD1, 0x5A, 0x23, 0xBF, 0xB8, 0xD0, 0x85, 0x6E, 0x38, 0x93, 0xD7, 0xD4, + 0xE9, 0x7C, 0x03, 0xC7, 0x21, 0x3F, 0x38, 0x36, 0xFB, 0xF5, 0xAD, 0xF4, + 0xCA, 0x1A, 0x03, 0x82, 0x9B, 0x3B, 0xEB, 0xB0, 0x0F, 0xE1, 0xEF, 0x98, + 0x6D, 0x76, 0x8C, 0x1E, 0xDC, 0xBA, 0x45, 0xE0, 0xE9, 0xAE, 0xC7, 0xC9, + 0xAC, 0x91, 0xE7, 0xB5, 0xD1, 0x18, 0xFA, 0x56, 0x5A, 0xA1, 0x92, 0xF9, + 0x2C, 0x9C, 0x06, 0x4F, 0x34, 0xDD, 0x80, 0xB5, 0xF4, 0x5F, 0x7E, 0xE0, + 0xAF, 0xAB, 0xDE, 0x95, 0x72, 0x7F, 0xCD, 0x5D, 0x29, 0x54, 0x6A, 0xA8, + 0x13, 0x5B, 0xDB, 0xCB, 0x30, 0xEE, 0x56, 0xD3, 0x45, 0x8E, 0xCB, 0x59, + 0xDA, 0x07, 0xED, 0xEC, 0x43, 0x5E, 0x17, 0x44, 0xAF, 0xBC, 0x81, 0x5C, + 0x4B, 0xDB, 0xAE, 0xA0, 0x46, 0x19, 0xA8, 0x61, 0x35, 0x9F, 0x17, 0xB3, + 0xAF, 0xCC, 0x22, 0xC6, 0x0B, 0x78, 0x58, 0xE9, 0x87, 0xE2, 0x2D, 0x96, + 0xF0, 0xA9, 0x62, 0x12, 0x35, 0xD0, 0x46, 0x6C, 0x61, 0xAE, 0xB9, 0x5D, + 0x5A, 0xDE, 0x8B, 0x7F, 0xAC, 0x9E, 0x29, 0xA1, 0xEA, 0xC7, 0x1B, 0x24, + 0x9E, 0x08, 0x48, 0xBD, 0x23, 0xF6, 0xAB, 0x4E, 0xE9, 0xDE, 0xAF, 0x4C, + 0x79, 0xCC, 0x52, 0xB2, 0xAC, 0xF4, 0x01, 0xA9, 0xA8, 0x02, 0x9B, 0x14, + 0x86, 0x4B, 0xEE, 0x94, 0xA8, 0x34, 0x6C, 0x00, 0x4F, 0x4C, 0xE1, 0x6D, + 0xF9, 0x19, 0x8F, 0x36, 0x5E, 0x22, 0x5D, 0xB7, 0x03, 0x62, 0x7C, 0x4D, + 0xC4, 0xF0, 0x4C, 0x3C, 0x5F, 0xBD, 0x0E, 0xB0, 0x74, 0x14, 0x08, 0xEE, + 0x0E, 0x06, 0x65, 0xAB, 0x69, 0x7A, 0x70, 0x67, 0xC2, 0x12, 0x04, 0x45, + 0xF2, 0xC8, 0xD7, 0x80, 0x7F, 0xDB, 0xB5, 0xD0, 0xF7, 0xAB, 0x62, 0x7A, + 0xFA, 0xD6, 0x1A, 0x9E, 0x14, 0x4C, 0x4A, 0x6C, 0x75, 0x81, 0x37, 0xEF, + 0x68, 0x4A, 0x5D, 0x23, 0xDD, 0x7E, 0xF5, 0xDD, 0x9E, 0xEF, 0xB3, 0xC8, + 0x3F, 0x18, 0x65, 0x42, 0x14, 0x68, 0x77, 0x56, 0x24, 0x8C, 0xAD, 0x7A, + 0xC3, 0x1D, 0xB3, 0xAA, 0x3C, 0x90, 0x38, 0x65, 0xA2, 0x6A, 0x42, 0xD9, + 0x4D, 0xA1, 0xAA, 0x04, 0xA5, 0xE6, 0x36, 0xF4, 0xA3, 0x18, 0xA3, 0x9B, + 0x8C, 0x9A, 0x5E, 0xAF, 0x6D, 0xDC, 0x6A, 0xD3, 0x61, 0xB7, 0x59, 0x2C, + 0xF4, 0xE1, 0x16, 0xFF, 0xFC, 0x3D, 0xBC, 0x2F, 0xD6, 0xC1, 0xEE, 0xBD, + 0x9B, 0x48, 0x11, 0x90, 0x7B, 0xED, 0x58, 0x9B, 0x84, 0x57, 0x85, 0xB3, + 0xB3, 0x65, 0x14, 0x08, 0x14, 0x8F, 0x71, 0xF2, 0x50, 0x38, 0x7C, 0xCE, + 0xEE, 0x47, 0xBD, 0xFD, 0x27, 0x6B, 0x07, 0xB7, 0xB2, 0xBB, 0x05, 0xB0, + 0x4F, 0xB5, 0x94, 0xA0, 0x30, 0x89, 0x97, 0xD2, 0x2E, 0xE1, 0xCC, 0xAC, + 0xDA, 0x95, 0x2F, 0x2E, 0xDD, 0xA9, 0xA9, 0xD0, 0xC6, 0xC3, 0x77, 0xB8, + 0xBA, 0x19, 0xD2, 0x66, 0x91, 0xB6, 0xA8, 0x4D, 0x34, 0xC5, 0xE3, 0xC9, + 0x4B, 0x8C, 0x49, 0x68, 0xD2, 0x47, 0xC5, 0x8C, 0x10, 0xE4, 0xBB, 0x40, + 0x04, 0x7B, 0x26, 0x34, 0x75, 0x53, 0xC5, 0xA5, 0x57, 0x91, 0x11, 0x81, + 0x49, 0x79, 0x0F, 0xE9, 0x95, 0x33, 0x6C, 0xF2, 0x2F, 0x2A, 0x07, 0x43, + 0x71, 0xAD, 0x7B, 0x2C, 0x99, 0xFD, 0x4E, 0xC0, 0x8C, 0xC8, 0x69, 0x12, + 0xF9, 0x1F, 0x11, 0xFA, 0x28, 0x80, 0xC7, 0xEE, 0x50, 0x63, 0x6D, 0x08, + 0x88, 0x9D, 0x6C, 0x2E, 0x05, 0x54, 0xC2, 0x0B, 0x26, 0x69, 0xAB, 0xA5, + 0xAD, 0xC1, 0xFD, 0xD9, 0x1D, 0xE6, 0x85, 0xD5, 0x71, 0xB6, 0xA9, 0xE9, + 0x10, 0xB7, 0x2F, 0x1E, 0x12, 0x9C, 0x41, 0x14, 0xAF, 0xE0, 0x07, 0x8C, + 0xF2, 0xA3, 0x7F, 0xA4, 0x94, 0x91, 0xF9, 0x41, 0x62, 0x8B, 0xE9, 0xA4, + 0x11, 0x78, 0x9D, 0x75, 0x33, 0x01, 0xBD, 0x7F, 0x1E, 0x4F, 0x2F, 0x80, + 0x7A, 0xF9, 0x70, 0x84, 0xE6, 0x45, 0xDE, 0x76, 0xD8, 0x36, 0x5C, 0xC1, + 0xB9, 0x42, 0x59, 0x85, 0x9C, 0x60, 0x5F, 0x29, 0x03, 0x34, 0xE8, 0x65, + 0xEB, 0x99, 0x7B, 0xCD, 0x3A, 0x9C, 0xB6, 0x9E, 0xA9, 0xBA, 0x7D, 0x6D, + 0x9D, 0x27, 0xDD, 0xBE, 0xD4, 0xF9, 0xB5, 0xF8, 0x66, 0xD5, 0xAC, 0x27, + 0x9D, 0x8F, 0x72, 0x04, 0x1D, 0xA3, 0x91, 0x9E, 0x3C, 0xBA, 0x4B, 0xF7, + 0x58, 0x06, 0xBD, 0xE6, 0x8F, 0xB5, 0xA5, 0x8F, 0x7F, 0x1C, 0xF9, 0xD9, + 0x2E, 0xD6, 0xB0, 0x52, 0x2D, 0x23, 0x8B, 0x8E, 0xD7, 0xE8, 0xFF, 0x5E, + 0x04, 0x4A, 0xC4, 0xDA, 0x95, 0xA4, 0x91, 0xFF, 0xCB, 0x36, 0x38, 0xEE, + 0x47, 0xB7, 0x51, 0xCD, 0x80, 0x37, 0x0D, 0x06, 0xB6, 0x56, 0x19, 0xFB, + 0xAF, 0x4E, 0x94, 0x57, 0x12, 0xCC, 0x46, 0xD4, 0x16, 0x59, 0xF4, 0x83, + 0xEF, 0x3C, 0x7C, 0xE3, 0x50, 0x61, 0x69, 0xB3, 0xC7, 0xB5, 0x96, 0xDB, + 0x89, 0x6C, 0x27, 0xA6, 0x48, 0x67, 0x9F, 0xE8, 0x31, 0x01, 0x6D, 0x16, + 0xD4, 0x8A, 0xFF, 0x93, 0x47, 0x9D, 0xC6, 0x2C, 0x53, 0x18, 0x01, 0x09, + 0x09, 0x35, 0xFD, 0xAA, 0x43, 0x1B, 0xC0, 0xD7, 0x9D, 0x84, 0x01, 0x4D, + 0x08, 0x51, 0x76, 0xF0, 0x21, 0x21, 0x74, 0x1D, 0xB6, 0x97, 0x0C, 0xEE, + 0xC8, 0xCA, 0x00, 0x87, 0x52, 0xD9, 0x50, 0xD3, 0x84, 0xC9, 0xF6, 0xB3, + 0x3E, 0x69, 0xB8, 0x7A, 0xDF, 0x10, 0x02, 0xE9, 0xB1, 0x4E, 0xF7, 0x81, + 0x6D, 0x3A, 0x6E, 0x5B, 0x14, 0x78, 0xBF, 0x0E, 0x50, 0xB8, 0x63, 0x8B, + 0x1F, 0x5F, 0xEB, 0xEA, 0x5C, 0xBB, 0xE8, 0x87, 0x07, 0x60, 0x50, 0x13, + 0xE1, 0x36, 0xD9, 0x54, 0xEA, 0xDD, 0x9B, 0x9B, 0x53, 0xEF, 0xFD, 0xD6, + 0x92, 0x88, 0x90, 0x50, 0x18, 0xD2, 0xAA, 0x67, 0xFF, 0xF4, 0x95, 0x06, + 0xC4, 0x36, 0xB1, 0x38, 0x74, 0xAA, 0xFD, 0x05, 0xC8, 0x0E, 0x59, 0xB3, + 0xBA, 0xD3, 0x83, 0x84, 0x3B, 0x96, 0x9E, 0x8D, 0xF4, 0xE2, 0xCA, 0x2A, + 0x77, 0x0B, 0xD6, 0xE1, 0x2E, 0x37, 0x88, 0x0E, 0xD9, 0x13, 0xC8, 0xF8, + 0x6D, 0xFC, 0x70, 0x95, 0xF5, 0x83, 0x02, 0xA2, 0x0F, 0x75, 0xD4, 0xE0, + 0xEC, 0xFD, 0x4A, 0x82, 0xDD, 0x87, 0x1D, 0xC4, 0x57, 0x96, 0x54, 0xDB, + 0x36, 0x07, 0x11, 0x0C, 0x0B, 0x94, 0xD0, 0xF4, 0x97, 0x75, 0xF9, 0x1D, + 0xC4, 0x5D, 0x34, 0x19, 0x38, 0xE1, 0x2A, 0x23, 0xBD, 0x3B, 0xE6, 0x8F, + 0xC2, 0x0A, 0x2B, 0x1D, 0xFD, 0x2E, 0x68, 0xBC, 0x11, 0xA4, 0xA1, 0x87, + 0x98, 0x4E, 0x71, 0x1C, 0xBE, 0x19, 0x3F, 0xFC, 0x17, 0x24, 0x52, 0xA5, + 0xA3, 0x16, 0xD1, 0xAD, 0x0F, 0xF8, 0x57, 0x9F, 0x7B, 0x8E, 0xD0, 0xC2, + 0x3F, 0x78, 0x43, 0xDC, 0x58, 0xEA, 0xE2, 0x5B, 0x71, 0x66, 0x46, 0x20, + 0x28, 0x01, 0xFC, 0x41, 0xAF, 0x19, 0x55, 0xA8, 0x8F, 0xB0, 0x08, 0x91, + 0x9C, 0xA5, 0x4C, 0x10, 0xA1, 0xD5, 0x6C, 0x9E, 0x85, 0x68, 0x55, 0x5E, + 0x07, 0x7B, 0xF6, 0xA3, 0x91, 0xEC, 0x11, 0xA7, 0xE7, 0x2C, 0x6D, 0xF8, + 0x73, 0x26, 0x53, 0xB5, 0x44, 0x2C, 0x7E, 0x9B, 0xDD, 0x78, 0x24, 0xBA, + 0xB9, 0xE5, 0xB2, 0xD1, 0x0E, 0xE6, 0xC8, 0x4D, 0x1F, 0x14, 0x32, 0x76, + 0x1C, 0xBC, 0xE5, 0x1F, 0xC6, 0x81, 0x0E, 0x38, 0xD9, 0xB0, 0xC3, 0x89, + 0xE7, 0x51, 0xE2, 0x6D, 0xB5, 0x4C, 0x10, 0x3B, 0xAE, 0x9F, 0x07, 0x6C, + 0x88, 0x52, 0x09, 0x06, 0xA5, 0x5C, 0x1A, 0x2D, 0x2F, 0x3F, 0x90, 0x2D, + 0xB9, 0xB7, 0x85, 0x2F, 0xC0, 0xE0, 0x60, 0x4A, 0x7D, 0x24, 0xC3, 0xCD, + 0x9C, 0x15, 0x37, 0x5A, 0xF0, 0x56, 0x58, 0x9B, 0xA6, 0xB6, 0x0A, 0xED, + 0x9E, 0x21, 0xF3, 0xA8, 0x53, 0x78, 0x8C, 0xB4, 0x84, 0x41, 0x02, 0xC4, + 0xB7, 0xF5, 0x4B, 0xB2, 0x98, 0x9D, 0x89, 0xB8, 0xAD, 0xE3, 0x5E, 0x84, + 0xB9, 0xDB, 0xC7, 0xA8, 0xC9, 0x20, 0x91, 0x05, 0x8E, 0x4B, 0x6F, 0x74, + 0x1D, 0xC9, 0x6D, 0x2A, 0x4A, 0xF1, 0x5E, 0xD1, 0x6B, 0xFA, 0xF2, 0x4B, + 0xC6, 0x72, 0xB5, 0x99, 0x05, 0xEF, 0xFF, 0xE3, 0x00, 0x97, 0xE1, 0xB6, + 0x07, 0x1F, 0xBC, 0x95, 0xCD, 0x1F, 0xDC, 0xD5, 0x93, 0x62, 0x7C, 0xA0, + 0xEC, 0xCE, 0x9A, 0xC4, 0x55, 0x9C, 0x79, 0x23, 0x2A, 0x61, 0x17, 0x46, + 0x86, 0x9E, 0x81, 0xC5, 0x40, 0x0D, 0x63, 0xBC, 0xAC, 0x52, 0xE8, 0x69, + 0xBE, 0x7C, 0x76, 0xE8, 0x12, 0xB3, 0x66, 0x3F, 0xE7, 0xB9, 0x97, 0xF0, + 0x32, 0xD9, 0xC6, 0xBF, 0xF3, 0x12, 0xC9, 0x9E, 0x93, 0xD8, 0xF4, 0x2E, + 0x17, 0x54, 0xA7, 0x32, 0xE2, 0xF6, 0x6C, 0xBE, 0xCA, 0xBA, 0x8D, 0x76, + 0x11, 0xA2, 0x48, 0xB7, 0x4E, 0x84, 0x42, 0xE5, 0xF4, 0xAF, 0x12, 0x4F, + 0x56, 0x98, 0x7B, 0xF3, 0xE0, 0x22, 0x94, 0x1A, 0x64, 0xA3, 0xDD, 0x26, + 0x13, 0x73, 0x96, 0x84, 0x46, 0xB5, 0x98, 0xE4, 0x91, 0xEC, 0xF3, 0x06, + 0x37, 0x21, 0x79, 0x77, 0x91, 0x02, 0x2E, 0x18, 0xE0, 0x60, 0x75, 0xB8, + 0xC5, 0xAD, 0x9D, 0xB3, 0x56, 0x8B, 0x92, 0x0E, 0x01, 0xAB, 0x91, 0xF2, + 0xDC, 0x41, 0xBC, 0x25, 0xCE, 0x16, 0x31, 0x1B, 0x24, 0x52, 0xD9, 0x02, + 0x25, 0x4E, 0x64, 0x8A, 0x11, 0x15, 0xB9, 0x20, 0x33, 0x01, 0xD0, 0x4F, + 0x6B, 0x04, 0x67, 0x32, 0xB9, 0xEC, 0xD0, 0x77, 0xFC, 0x51, 0x0F, 0x9E, + 0x5C, 0xF5, 0x3C, 0x18, 0x0A, 0xF2, 0xD3, 0x4E, 0x2C, 0x3B, 0xA7, 0xC0, + 0x43, 0x33, 0xE8, 0x59, 0x40, 0xB7, 0xAF, 0x75, 0x38, 0xDC, 0x1D, 0xF3, + 0x77, 0xAD, 0xD9, 0xF7, 0x3A, 0x5D, 0xF4, 0xD4, 0xB5, 0x54, 0x15, 0x73, + 0x7B, 0xE7, 0xA3, 0x2B, 0x22, 0xE9, 0x09, 0x2C, 0xDE, 0x60, 0x2A, 0x5B, + 0xBB, 0xD9, 0xA1, 0xF6, 0x1E, 0x69, 0x38, 0xC2, 0x4B, 0xCD, 0xEC, 0xA2, + 0xA3, 0x1D, 0xBA, 0xBE, 0x0C, 0xA4, 0x42, 0x01, 0xE9, 0x1C, 0x4A, 0xC6, + 0xCF, 0xF8, 0x9A, 0x1B, 0x2B, 0x2B, 0x44, 0x81, 0x50, 0x69, 0x85, 0x08, + 0xDD, 0xE7, 0xBE, 0xF9, 0xBF, 0x65, 0x59, 0xB3, 0x80, 0x5C, 0x85, 0x5D, + 0x68, 0x05, 0xBA, 0xA1, 0xDC, 0x32, 0x9C, 0xA9, 0x98, 0x7D, 0x3B, 0x4E, + 0x03, 0xA4, 0x28, 0x0A, 0x3F, 0xB3, 0x09, 0xA8, 0x0C, 0x5A, 0x92, 0xA3, + 0xDF, 0xAE, 0x69, 0xBE, 0x5D, 0xFA, 0x75, 0x49, 0xA4, 0x5C, 0xE5, 0xBB, + 0xCD, 0x7C, 0xD8, 0x5A, 0xAA, 0x77, 0x7C, 0x81, 0xE3, 0xCA, 0xB9, 0x7C, + 0xC8, 0xF9, 0x83, 0x8B, 0x84, 0xB7, 0xE6, 0xEF, 0x52, 0xF0, 0xC5, 0xB8, + 0xAF, 0x7F, 0xA6, 0xA0, 0x4E, 0xE0, 0x1A, 0x41, 0x93, 0x01, 0xF7, 0xBE, + 0x0E, 0x58, 0x73, 0xFA, 0x43, 0xE7, 0xC0, 0x72, 0x2B, 0x4F, 0x4A, 0x80, + 0xBA, 0xC7, 0x2E, 0x19, 0x4C, 0xB5, 0xF1, 0xFD, 0x97, 0x11, 0x8A, 0xD3, + 0xB7, 0xC9, 0x73, 0x6D, 0x04, 0x9E, 0xAA, 0xC2, 0xD3, 0xEE, 0xB9, 0xC0, + 0x98, 0x06, 0x9D, 0xA5, 0x6B, 0x19, 0x5B, 0x95, 0x13, 0x6C, 0x27, 0x9E, + 0x77, 0xFB, 0x66, 0x7B, 0x7F, 0x1E, 0x9D, 0x5D, 0x38, 0x30, 0xB6, 0x7E, + 0xA9, 0x0D, 0xF6, 0x8B, 0xAE, 0x58, 0x94, 0xA3, 0x3B, 0x67, 0x95, 0xAD, + 0xCD, 0xEE, 0x37, 0xB6, 0x4A, 0xC1, 0x68, 0x2B, 0x69, 0x5F, 0x46, 0x9F, + 0x7D, 0x29, 0x52, 0xEF, 0x7A, 0xCF, 0xB2, 0x28, 0x8C, 0xCE, 0x3D, 0x71, + 0xBC, 0x0F, 0x46, 0x7F, 0xC2, 0xB9, 0x86, 0x84, 0x9B, 0x45, 0x21, 0x96, + 0x01, 0x1D, 0xD7, 0x03, 0x48, 0xC5, 0xBB, 0x55, 0x30, 0x18, 0x8A, 0xDA, + 0xE8, 0xFA, 0x72, 0x94, 0xE0, 0xD8, 0x13, 0xF1, 0x8B, 0x4C, 0xC3, 0xD5, + 0x6D, 0x74, 0x92, 0xD0, 0x21, 0xDE, 0xAF, 0x38, 0x99, 0xB3, 0x7D, 0xCB, + 0xB3, 0xF4, 0x3C, 0xC8, 0xC3, 0xFA, 0xB6, 0x3F, 0xF8, 0x3E, 0x30, 0x82, + 0x55, 0x7F, 0x64, 0x71, 0xEE, 0x62, 0x6B, 0xFA, 0x1D, 0x97, 0x7E, 0xBC, + 0x89, 0xCD, 0x3C, 0x72, 0x6A, 0xEA, 0xE0, 0xDE, 0xB7, 0x10, 0x62, 0x16, + 0x00, 0x2A, 0xD9, 0x02, 0x47, 0x51, 0xAA, 0x56, 0x8D, 0x1F, 0xC9, 0x04, + 0x33, 0x87, 0xE3, 0x1F, 0x0F, 0x19, 0xBC, 0x54, 0x17, 0x9A, 0x3A, 0x88, + 0x48, 0x81, 0xC0, 0x68, 0xC7, 0x96, 0xBB, 0xB7, 0x24, 0x7B, 0xF2, 0xA0, + 0x45, 0x65, 0x30, 0x4A, 0xDA, 0x70, 0x78, 0x77, 0xC8, 0x0E, 0x98, 0x7B, + 0x4E, 0xC3, 0x04, 0x41, 0xDD, 0x9B, 0xA3, 0xED, 0x1A, 0x88, 0x1E, 0x2A, + 0xCF, 0x8A, 0xB7, 0xD7, 0x86, 0x2F, 0xC1, 0xBF, 0x67, 0xC2, 0x65, 0x70, + 0xDC, 0x77, 0x7B, 0xC5, 0xFA, 0x03, 0x57, 0x42, 0xAD, 0x92, 0xCF, 0xCB, + 0xD0, 0x11, 0x11, 0x9E, 0x93, 0x5B, 0xCB, 0x78, 0xC2, 0x55, 0xD6, 0xAD, + 0x95, 0x3A, 0x45, 0x32, 0x42, 0x8F, 0xB1, 0x18, 0x17, 0xAF, 0xF2, 0x94, + 0x21, 0x08, 0x58, 0x13, 0x19, 0x8F, 0x12, 0x51, 0xB7, 0x95, 0x26, 0x8E, + 0xD6, 0x9A, 0x82, 0x78, 0x4D, 0x58, 0xEF, 0xC0, 0x89, 0x0D, 0xF7, 0xB6, + 0xCF, 0x46, 0x28, 0x3C, 0x97, 0x68, 0x32, 0xC5, 0x09, 0x25, 0x18, 0xE5, + 0x9E, 0x74, 0x0E, 0x73, 0xD8, 0x98, 0xC6, 0x2D, 0xCA, 0xE4, 0xDF, 0x2B, + 0x8A, 0xE1, 0x15, 0x8D, 0x9F, 0x70, 0xC0, 0x81, 0xCC, 0x9B, 0x4B, 0x0A, + 0xA5, 0x0A, 0x82, 0x5F, 0xC0, 0x55, 0x73, 0x47, 0x0D, 0xEE, 0x59, 0xFD, + 0xE5, 0xDD, 0x52, 0x74, 0xA2, 0x0F, 0xF1, 0xFC, 0xE9, 0x14, 0x9C, 0xF7, + 0x03, 0x3F, 0xC3, 0xF5, 0xFD, 0x7D, 0x1C, 0xB4, 0x62, 0x8E, 0xDD, 0x01, + 0x77, 0x96, 0x4D, 0x23, 0x5D, 0x37, 0x88, 0x83, 0x33, 0xB0, 0x75, 0x1E, + 0x9D, 0x15, 0xB5, 0x9F, 0x78, 0x04, 0x92, 0x9E, 0x54, 0x40, 0x10, 0x4E, + 0xFF, 0x5B, 0xF3, 0xF8, 0xFC, 0x67, 0xEF, 0x85, 0x1D, 0xFF, 0x0B, 0x2F, + 0x5D, 0x54, 0xE1, 0xEA, 0x8C, 0xB8, 0x41, 0x71, 0x91, 0x2D, 0xEB, 0x14, + 0x78, 0x78, 0x25, 0x95, 0x73, 0x70, 0xED, 0x24, 0x2F, 0x97, 0x51, 0xE0, + 0x8E, 0x6E, 0x43, 0x12, 0x2B, 0xCF, 0x88, 0xDE, 0xA1, 0xB0, 0xDB, 0x7F, + 0x1C, 0xA1, 0x75, 0xD9, 0x54, 0x1D, 0x9E, 0xE1, 0x95, 0x68, 0x7E, 0xD4, + 0x47, 0xD1, 0x42, 0x61, 0x60, 0xD9, 0xDE, 0x25, 0xC0, 0xD1, 0x5A, 0xB6, + 0x72, 0xF5, 0x37, 0xF8, 0x73, 0xC2, 0x05, 0xE3, 0xE1, 0x3B, 0x55, 0x29, + 0xCB, 0xB0, 0x2D, 0xBD, 0x6A, 0xF8, 0x67, 0xF6, 0xCD, 0x8B, 0xE3, 0x80, + 0x49, 0x24, 0x38, 0x22, 0x2E, 0xA6, 0x68, 0x25, 0x41, 0xCA, 0xEF, 0x0F, + 0x33, 0x53, 0xC0, 0xBB, 0x74, 0xEA, 0xC6, 0xC5, 0xA5, 0x5F, 0x07, 0xE6, + 0x3B, 0xB4, 0xA0, 0x43, 0xFC, 0xA9, 0x28, 0x9B, 0xD2, 0x11, 0x57, 0x61, + 0xD9, 0x79, 0x63, 0x5E, 0x7A, 0x7E, 0x9A, 0xDF, 0x77, 0x70, 0x0E, 0x0C, + 0xDA, 0xD6, 0xCE, 0x6B, 0x92, 0x71, 0x94, 0x9B, 0x2B, 0xEE, 0x3B, 0x99, + 0xCB, 0x82, 0x19, 0x55, 0x0E, 0x3E, 0xA3, 0xAF, 0x1D, 0xF4, 0x05, 0x1E, + 0x50, 0x8F, 0x0E, 0x72, 0x6E, 0x16, 0x28, 0xE3, 0xD1, 0xB2, 0x57, 0xBE, + 0x54, 0x9F, 0xE8, 0x7F, 0xBE, 0xC2, 0x07, 0x22, 0xD0, 0x3E, 0xE4, 0x1A, + 0x50, 0xB5, 0x78, 0x48, 0x93, 0xC3, 0x7E, 0xA8, 0x62, 0xD1, 0x92, 0x29, + 0x52, 0x70, 0xC5, 0x62, 0x5F, 0x44, 0xE8, 0xD5, 0x27, 0x5A, 0x07, 0xBE, + 0xE2, 0x01, 0xCB, 0x9F, 0xFF, 0xD4, 0x02, 0x15, 0xD8, 0x9E, 0xB6, 0x19, + 0x5A, 0x94, 0x2C, 0x74, 0xC9, 0xEE, 0x0B, 0x0D, 0x57, 0x32, 0x0E, 0x3C, + 0x75, 0xC3, 0xEE, 0xC4, 0x48, 0x13, 0xB3, 0xD1, 0x5F, 0xB4, 0xAA, 0xE4, + 0x6F, 0xE9, 0x98, 0xD8, 0x02, 0xF4, 0x00, 0xF5, 0xA5, 0x52, 0xED, 0x27, + 0x3E, 0x40, 0xB1, 0x84, 0x81, 0x3E, 0x79, 0xF0, 0xF4, 0x09, 0x34, 0x36, + 0x01, 0xF3, 0xD5, 0x5D, 0x68, 0xE8, 0xE0, 0xEF, 0x36, 0xA6, 0x67, 0xBA, + 0xD7, 0xE2, 0xC7, 0x06, 0x6A, 0x43, 0xCD, 0xC5, 0xD2, 0x78, 0x45, 0x8A, + 0xE8, 0x8D, 0x5F, 0x41, 0x10, 0xCA, 0x38, 0x8B, 0x6D, 0x91, 0xF1, 0x05, + 0x06, 0xDE, 0x51, 0xE8, 0xF9, 0xC3, 0x68, 0xEE, 0x2D, 0x48, 0x09, 0x58, + 0x2E, 0x08, 0x18, 0x0B, 0xD3, 0x64, 0x6B, 0xD3, 0xB3, 0xC4, 0x66, 0xB7, + 0x29, 0x4B, 0xDB, 0x47, 0x40, 0xB2, 0xC7, 0xBD, 0x48, 0x21, 0xA0, 0xCF, + 0xBC, 0x23, 0xA1, 0x31, 0x42, 0x48, 0x3E, 0xB2, 0xAF, 0x6F, 0x25, 0x95, + 0x89, 0xCC, 0x8F, 0xC0, 0x4F, 0xA6, 0x37, 0xCE, 0x0A, 0xF7, 0xF5, 0x93, + 0xBE, 0x98, 0x5E, 0x5C, 0x37, 0x2B, 0xBD, 0x14, 0xD3, 0xF7, 0x1F, 0x38, + 0x27, 0xA8, 0xD1, 0x55, 0x18, 0xDD, 0x16, 0xF1, 0x3B, 0xC1, 0x20, 0x75, + 0x21, 0x30, 0x0B, 0xC3, 0xC1, 0xD9, 0x78, 0x9E, 0x7A, 0xDD, 0xD0, 0x36, + 0xEF, 0x97, 0xFC, 0x61, 0x45, 0x9B, 0x49, 0x8D, 0x73, 0x70, 0xC5, 0xEC, + 0xB0, 0x45, 0x78, 0x09, 0x85, 0x42, 0x68, 0x9F, 0x7F, 0x50, 0x35, 0xE4, + 0x2A, 0x5F, 0xEB, 0x30, 0xB5, 0x01, 0x0F, 0x5B, 0x2B, 0x48, 0xAE, 0xD4, + 0x41, 0x00, 0x69, 0x58, 0x7D, 0xCA, 0x23, 0x0B, 0xC0, 0x32, 0xDC, 0x54, + 0xBA, 0x26, 0x22, 0xB5, 0xB1, 0xDB, 0xF9, 0x5E, 0x81, 0x6E, 0x48, 0xB8, + 0x70, 0x66, 0xAA, 0x7E, 0x6B, 0x42, 0xB4, 0x51, 0x25, 0xB5, 0x0D, 0x1B, + 0x45, 0x4B, 0x6C, 0x31, 0x45, 0xA3, 0x91, 0x56, 0x18, 0x2E, 0x34, 0x1A, + 0x67, 0x87, 0xA8, 0xC9, 0x6B, 0x72, 0xD8, 0xE5, 0x91, 0x2D, 0x71, 0xD8, + 0xC8, 0xA4, 0x95, 0xB1, 0xFD, 0xF8, 0x0F, 0xEA, 0x08, 0x4F, 0x11, 0x2A, + 0x39, 0xE7, 0xF6, 0x50, 0xCC, 0xF7, 0x64, 0xA1, 0x66, 0xE7, 0xA9, 0xDD, + 0x49, 0xAB, 0xBF, 0x5B, 0x99, 0x14, 0xE2, 0xD6, 0x91, 0x3A, 0x70, 0x08, + 0x67, 0x87, 0x7C, 0xB7, 0x76, 0x21, 0xE5, 0x23, 0x32, 0x9F, 0x6F, 0x88, + 0xBB, 0x10, 0xB6, 0xBE, 0xA2, 0xB1, 0x3E, 0xDA, 0x64, 0x5C, 0x25, 0x0B, + 0x0F, 0x94, 0x39, 0x0E, 0x21, 0x91, 0x01, 0x60, 0x8C, 0x9B, 0x3D, 0x9E, + 0xEB, 0x3C, 0x05, 0x28, 0x66, 0x58, 0x9A, 0x7D, 0xA3, 0x2C, 0x42, 0x13, + 0xD7, 0x52, 0x09, 0x0A, 0x12, 0x14, 0xB1, 0x05, 0x4D, 0x7C, 0xE4, 0x04, + 0x2C, 0xC8, 0x93, 0x98, 0xBB, 0x90, 0x7C, 0xDE, 0x31, 0xD1, 0x21, 0x5C, + 0x21, 0x75, 0x94, 0x64, 0x62, 0x33, 0xB9, 0xCF, 0xD1, 0x5C, 0x77, 0xC0, + 0xAB, 0x0A, 0xF8, 0x03, 0x00, 0x35, 0xA1, 0xE9, 0x8D, 0xB5, 0x43, 0x6F, + 0x94, 0x82, 0xAA, 0xCE, 0xB3, 0x5E, 0x6C, 0x13, 0x45, 0x6F, 0xD5, 0xE8, + 0x12, 0xFA, 0x4C, 0x68, 0x3D, 0x04, 0x57, 0x77, 0x87, 0x1D, 0xFC, 0xA6, + 0x19, 0xC2, 0x09, 0x5B, 0x65, 0xD7, 0x86, 0xE2, 0x8E, 0x14, 0x52, 0x92, + 0xA5, 0xC9, 0xCA, 0xFD, 0x42, 0x54, 0x12, 0xF3, 0xB9, 0x87, 0x11, 0x71, + 0x70, 0x8D, 0x98, 0x85, 0xBB, 0x92, 0x36, 0x42, 0x42, 0x4F, 0x2D, 0xDB, + 0x8A, 0x77, 0x2A, 0x93, 0x8D, 0xF6, 0x87, 0x5D, 0x8F, 0x52, 0x91, 0x5A, + 0x50, 0xC2, 0x9D, 0xE3, 0x8C, 0xA6, 0xD2, 0x4C, 0xDF, 0xE6, 0xEC, 0xF7, + 0x6E, 0x4C, 0xAF, 0x80, 0x28, 0xF1, 0x1A, 0x80, 0x25, 0x15, 0x27, 0xFF, + 0xB2, 0x6C, 0x3A, 0x49, 0xC1, 0xF4, 0x8F, 0xCD, 0x82, 0x8A, 0xC7, 0x9F, + 0x3D, 0x32, 0x6D, 0xDD, 0x36, 0xDB, 0x2F, 0x26, 0x60, 0x2F, 0x21, 0x91, + 0xBC, 0x8C, 0x53, 0x7C, 0x76, 0xEF, 0x8F, 0xE7, 0xE6, 0x1D, 0xA9, 0x32, + 0x2C, 0x23, 0x81, 0xF9, 0x07, 0x88, 0xB3, 0xD7, 0xBE, 0x83, 0x1A, 0xE4, + 0x02, 0x5A, 0x29, 0x72, 0x73, 0x2A, 0x6A, 0xBE, 0x57, 0x3A, 0x05, 0x89, + 0xD1, 0xD8, 0x26, 0x9B, 0xCF, 0x01, 0x9F, 0xA4, 0xAB, 0xC1, 0x53, 0x62, + 0x83, 0xE9, 0x3D, 0xE5, 0x7C, 0xA4, 0x2A, 0x98, 0x95, 0x57, 0x19, 0x45, + 0xE3, 0x54, 0x43, 0xD4, 0x39, 0x51, 0x3B, 0x27, 0x8E, 0xB9, 0x33, 0x90, + 0xEF, 0x0E, 0xAD, 0xD2, 0xE6, 0x7A, 0x2A, 0x00, 0xEB, 0x84, 0x3C, 0xE8, + 0x97, 0x1F, 0x0A, 0xAB, 0x56, 0x0F, 0x9D, 0xB7, 0xD1, 0x67, 0x64, 0x24, + 0xF9, 0x89, 0xE1, 0xB6, 0x1B, 0xEE, 0xB7, 0xA8, 0xDD, 0x03, 0x40, 0xB0, + 0xEB, 0x2D, 0x29, 0x53, 0x81, 0x8B, 0x0C, 0x67, 0x53, 0x5E, 0xD3, 0xD5, + 0xC5, 0xE6, 0x7C, 0x12, 0xE6, 0xBB, 0x34, 0x24, 0xF1, 0x5B, 0x05, 0xBA, + 0x6E, 0x16, 0xA7, 0xA9, 0x31, 0xFB, 0x47, 0xE1, 0xFE, 0x67, 0x07, 0xF9, + 0x96, 0x34, 0x5A, 0x3E, 0x95, 0xAD, 0x64, 0x16, 0xE9, 0xD8, 0x72, 0x58, + 0x90, 0x67, 0x52, 0xFE, 0x08, 0x83, 0x35, 0xEB, 0x8A, 0x8C, 0xF2, 0xD0, + 0xAA, 0x79, 0x42, 0x33, 0x13, 0x8D, 0x34, 0x76, 0xFD, 0x39, 0x2C, 0xEC, + 0xCA, 0x74, 0x07, 0xC1, 0xE2, 0x47, 0xF4, 0x5C, 0x65, 0x99, 0xE4, 0xBA, + 0xC9, 0x41, 0xA4, 0x48, 0x51, 0xEF, 0x99, 0x5E, 0x99, 0x4F, 0x74, 0x56, + 0x4C, 0xA6, 0xFA, 0xC7, 0x4C, 0xC2, 0xAD, 0xA4, 0x3C, 0xF6, 0xD4, 0x8C, + 0xB6, 0x91, 0x6B, 0xB4, 0xCE, 0xFB, 0x34, 0xF7, 0xE3, 0xF6, 0x11, 0xE2, + 0x56, 0x3E, 0xA2, 0x60, 0xA3, 0x47, 0x59, 0x3E, 0xDF, 0x6A, 0x13, 0xB8, + 0xED, 0x03, 0x8B, 0x54, 0x12, 0xD1, 0x29, 0xFD, 0x06, 0x26, 0x03, 0xF5, + 0x25, 0x69, 0x05, 0x6D, 0x73, 0xE6, 0x1D, 0x28, 0xC0, 0x6F, 0x75, 0x67, + 0xCE, 0xC4, 0xF7, 0x31, 0xBB, 0x21, 0x61, 0xB1, 0xC4, 0x5D, 0x36, 0x50, + 0xEC, 0xBE, 0x23, 0xEE, 0x47, 0x62, 0x82, 0x6B, 0xE9, 0x79, 0xCE, 0xAF, + 0x76, 0x6A, 0xD1, 0xFC, 0x79, 0x5E, 0xE8, 0x1E, 0xD8, 0x8F, 0xF9, 0x63, + 0x5F, 0x09, 0x1A, 0x21, 0x93, 0x09, 0x90, 0x15, 0x62, 0xDE, 0x69, 0x65, + 0x8D, 0xA3, 0xAC, 0x79, 0x71, 0xA1, 0xBB, 0xA9, 0xCF, 0x45, 0x89, 0x15, + 0x1B, 0x7D, 0x49, 0x37, 0x56, 0x2D, 0x52, 0xF1, 0x66, 0x8F, 0x03, 0xA1, + 0xE3, 0x93, 0x8C, 0xAC, 0xB3, 0x77, 0x89, 0x69, 0x41, 0x23, 0xE4, 0x17, + 0xEE, 0x8E, 0x73, 0x06, 0xE4, 0xDC, 0x95, 0x49, 0xA6, 0x30, 0xCD, 0x1B, + 0x30, 0x42, 0xD9, 0x06, 0xF9, 0x5C, 0x8A, 0x50, 0xBB, 0xA0, 0xA8, 0xEF, + 0xD3, 0xA1, 0x83, 0xF1, 0xC1, 0x77, 0x4C, 0x4B, 0x7B, 0xCC, 0xEF, 0xE4, + 0xB4, 0x4D, 0x50, 0x01, 0x1B, 0x44, 0x33, 0xFD, 0xEF, 0xB5, 0x10, 0x72, + 0x92, 0x3E, 0x96, 0x61, 0xAB, 0x20, 0x7C, 0x38, 0xCB, 0xD7, 0x79, 0xA3, + 0x7A, 0x35, 0x87, 0xFA, 0xC6, 0x5E, 0xB8, 0x9E, 0x2C, 0xE5, 0x96, 0xBA, + 0x6E, 0xF1, 0xC3, 0x63, 0x92, 0x65, 0xEE, 0x05, 0x5B, 0x13, 0xFA, 0xE8, + 0x8B, 0xE7, 0xCB, 0x73, 0xB9, 0xC9, 0x0F, 0x60, 0xC6, 0x36, 0x1D, 0x8F, + 0x9C, 0xC0, 0x83, 0x1A, 0xB4, 0x34, 0xDE, 0xF6, 0x13, 0x4E, 0x58, 0x15, + 0x3D, 0xD6, 0x21, 0x5F, 0xE6, 0x21, 0x25, 0x15, 0x07, 0xEF, 0xD7, 0x06, + 0x5D, 0x9A, 0x59, 0xC2, 0x9F, 0x2D, 0x5A, 0xE4, 0x21, 0x19, 0x02, 0xF2, + 0x01, 0x5E, 0xC2, 0x80, 0xAB, 0x8D, 0x96, 0x38, 0x0F, 0x43, 0x71, 0x61, + 0x17, 0x72, 0x1E, 0x16, 0x3E, 0x4B, 0xE1, 0xA0, 0xB5, 0x22, 0xFB, 0x74, + 0xED, 0x4F, 0xEF, 0x4E, 0x56, 0x8A, 0x52, 0x5D, 0x76, 0x60, 0x9D, 0xE2, + 0x8B, 0xC0, 0xEC, 0xF3, 0x05, 0x2F, 0x59, 0xE5, 0xC0, 0x68, 0x02, 0xE9, + 0x77, 0x17, 0x86, 0x7D, 0xC6, 0x71, 0xA7, 0xF1, 0x44, 0x50, 0xB3, 0xFB, + 0xB6, 0x27, 0x23, 0x57, 0x5E, 0xCA, 0x18, 0xAA, 0xA7, 0x7C, 0xCD, 0xE7, + 0xEA, 0xB9, 0xA9, 0xB8, 0xA0, 0x99, 0xF0, 0xED, 0xF1, 0xF8, 0x4D, 0x11, + 0xFA, 0x04, 0x75, 0xA7, 0x41, 0xC5, 0xB3, 0xFB, 0x37, 0x46, 0x14, 0xBF, + 0x89, 0xAB, 0x33, 0x55, 0x86, 0x92, 0x36, 0x2F, 0xF6, 0xF1, 0x7B, 0x60, + 0x8D, 0xA9, 0x85, 0x48, 0xF5, 0x49, 0x46, 0xD9, 0xB3, 0x18, 0xB9, 0x1E, + 0x3F, 0x09, 0x87, 0x33, 0x23, 0x72, 0xE8, 0x4F, 0x48, 0xC9, 0xD7, 0x30, + 0x1C, 0xF0, 0x7B, 0x88, 0xF9, 0xAE, 0x5C, 0x23, 0x42, 0xC8, 0x3D, 0xD4, + 0xA4, 0xA9, 0x8F, 0xBA, 0x9E, 0xFD, 0x6F, 0xC7, 0x10, 0x4F, 0xFD, 0xA5, + 0xAC, 0xA4, 0xBF, 0xDB, 0x1D, 0xFB, 0x67, 0xAA, 0x47, 0xE1, 0x8E, 0x47, + 0xCC, 0x51, 0xE3, 0xAD, 0x80, 0x63, 0x2A, 0x5A, 0xEF, 0x3B, 0x6B, 0x7E, + 0x5B, 0xC6, 0x6F, 0x84, 0x3E, 0xD9, 0xAE, 0x3A, 0x7B, 0x2F, 0xED, 0x23, + 0x57, 0x56, 0x59, 0x5A, 0x35, 0x11, 0x0D, 0xFD, 0x43, 0x06, 0x6C, 0xB3, + 0x26, 0xDA, 0xB4, 0xEA, 0x84, 0x94, 0xB8, 0x4F, 0x60, 0xAC, 0x3F, 0x2E, + 0x9D, 0xF0, 0x1B, 0xD5, 0xCA, 0xF6, 0x97, 0x82, 0x7A, 0x45, 0x76, 0xCC, + 0xF2, 0x63, 0x3E, 0xED, 0x80, 0x63, 0xB2, 0x1E, 0x18, 0x21, 0x85, 0x84, + 0x89, 0xF8, 0xB0, 0x31, 0x4F, 0x12, 0x76, 0x8E, 0x3B, 0x32, 0x54, 0x57, + 0x95, 0x26, 0x0E, 0xB0, 0x28, 0x65, 0xC3, 0x31, 0x18, 0x5B, 0xD1, 0x8E, + 0x32, 0x53, 0x40, 0x57, 0xD5, 0x90, 0x16, 0xE6, 0x23, 0xAE, 0xAF, 0x59, + 0xD1, 0x8B, 0xDC, 0x3D, 0x34, 0xA5, 0x56, 0xCA, 0x61, 0xF2, 0xEE, 0xF4, + 0xD2, 0x67, 0x82, 0x54, 0x5F, 0x5A, 0x05, 0x94, 0x24, 0xDF, 0xD9, 0xE3, + 0x72, 0x20, 0x30, 0x6C, 0x58, 0x25, 0x66, 0x12, 0x81, 0x75, 0x46, 0x51, + 0xAB, 0xCB, 0x0F, 0xEC, 0x77, 0x84, 0x3D, 0xB1, 0xA7, 0x4A, 0xF5, 0x35, + 0xAF, 0xF2, 0x01, 0x6C, 0x7F, 0x42, 0xA9, 0x28, 0x76, 0xE4, 0x6E, 0xF2, + 0x4B, 0x7E, 0xD0, 0x7D, 0x57, 0x2E, 0x25, 0x4F, 0x90, 0x8A, 0x74, 0xB2, + 0x87, 0x4C, 0x9C, 0x75, 0x5A, 0xBE, 0xEF, 0x46, 0xA1, 0x0D, 0x20, 0xF5, + 0x94, 0x7A, 0xA7, 0x72, 0x0A, 0x6E, 0xBC, 0x80, 0x01, 0x14, 0x02, 0x00, + 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x0D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, + 0x6D, 0x61, 0x72, 0x6B, 0x0D, 0x80, 0x03, +}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSerif.cpp b/core/fxge/fontdata/chromefontdata/FoxitSerif.cpp new file mode 100644 index 0000000000..5fa276de4e --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSerif.cpp @@ -0,0 +1,1632 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSerifFontData[19469] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xe, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x0, 0x1, + 0x1, 0x1, 0x26, 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, + 0xf8, 0x1d, 0x3, 0xf8, 0x18, 0x4, 0xfb, 0x3c, 0xfb, 0x8e, 0xfa, 0x7c, + 0xfa, 0x2, 0x5, 0x1c, 0x7, 0x9f, 0xf, 0x1c, 0x8, 0xf6, 0x11, 0xb6, + 0x1c, 0x44, 0xa3, 0x12, 0x0, 0x3, 0x1, 0x1, 0x5, 0x2f, 0x3e, 0x45, + 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, + 0x0, 0x7b, 0x2, 0x0, 0x1, 0x0, 0x9, 0x0, 0x11, 0x0, 0x24, 0x0, + 0x2c, 0x0, 0x4a, 0x0, 0x54, 0x0, 0x60, 0x0, 0x68, 0x0, 0x71, 0x0, + 0x86, 0x0, 0x91, 0x0, 0x9e, 0x0, 0xb9, 0x0, 0xc1, 0x0, 0xe2, 0x0, + 0xff, 0x1, 0xb, 0x1, 0x1d, 0x1, 0x25, 0x1, 0x33, 0x1, 0x4e, 0x1, + 0x55, 0x1, 0x68, 0x1, 0x7a, 0x1, 0x7f, 0x1, 0x90, 0x1, 0x94, 0x1, + 0x9d, 0x1, 0xa9, 0x1, 0xb9, 0x1, 0xc6, 0x1, 0xfb, 0x2, 0x14, 0x2, + 0x1a, 0x2, 0x34, 0x2, 0x3c, 0x2, 0x48, 0x2, 0x59, 0x2, 0x63, 0x2, + 0x71, 0x2, 0x84, 0x2, 0x89, 0x2, 0x92, 0x2, 0xac, 0x2, 0xb6, 0x2, + 0xc2, 0x2, 0xe6, 0x2, 0xf0, 0x2, 0xfe, 0x3, 0x11, 0x3, 0x19, 0x3, + 0x20, 0x3, 0x23, 0x3, 0x2a, 0x3, 0x49, 0x3, 0x53, 0x3, 0x71, 0x3, + 0x8e, 0x3, 0x9c, 0x3, 0xa2, 0x3, 0xa8, 0x3, 0xc0, 0x3, 0xd8, 0x3, + 0xef, 0x3, 0xf7, 0x3, 0xfe, 0x4, 0x2, 0x4, 0x17, 0x4, 0x2a, 0x4, + 0x30, 0x4, 0x44, 0x4, 0x57, 0x4, 0x62, 0x4, 0x69, 0x4, 0x7b, 0x4, + 0x87, 0x4, 0x98, 0x4, 0xa3, 0x4, 0xb3, 0x4, 0xb9, 0x4, 0xbf, 0x4, + 0xc5, 0x4, 0xcb, 0x4, 0xd8, 0x4, 0xe7, 0x4, 0xf1, 0x4, 0xfb, 0x5, + 0xa, 0x5, 0x19, 0x5, 0x22, 0x5, 0x28, 0x5, 0x2d, 0x5, 0x3b, 0x5, + 0x3f, 0x5, 0x4c, 0x5, 0x59, 0x5, 0x5e, 0x5, 0x62, 0x5, 0x6e, 0x5, + 0x74, 0x5, 0x77, 0x5, 0x82, 0x5, 0x8d, 0x5, 0x94, 0x5, 0x99, 0x5, + 0x9e, 0x5, 0xa3, 0x5, 0xad, 0x5, 0xb7, 0x5, 0xc1, 0x5, 0xcb, 0x5, + 0xd3, 0x5, 0xdc, 0x5, 0xe5, 0x5, 0xee, 0x5, 0xf7, 0x6, 0x0, 0x6, + 0x5, 0x6, 0xc, 0x6, 0x12, 0x6, 0x18, 0x6, 0x1d, 0x6, 0x21, 0x21, + 0xa, 0x78, 0x5f, 0x6c, 0x2a, 0x1d, 0xb, 0x15, 0xb3, 0x6, 0xf7, 0x2e, + 0x22, 0x1d, 0xb, 0xec, 0x5, 0x95, 0x91, 0x9f, 0x98, 0xa2, 0x1a, 0x8f, + 0x8a, 0xa7, 0x6b, 0x7d, 0x84, 0x8b, 0x74, 0x74, 0x1e, 0xb, 0x36, 0x1d, + 0x26, 0xa, 0x3e, 0x7a, 0xa, 0xb, 0x70, 0x1d, 0x88, 0x7f, 0x6c, 0x7c, + 0x1e, 0x86, 0x82, 0x6c, 0x74, 0x75, 0x1b, 0x66, 0x6e, 0xaa, 0xba, 0x1f, + 0x8d, 0x7, 0xad, 0x96, 0xc3, 0xf7, 0x2b, 0xbd, 0x1e, 0x2a, 0xa, 0xb, + 0x2b, 0x1d, 0xfb, 0x11, 0xf7, 0x3b, 0x5, 0x4d, 0x6, 0xb, 0x37, 0x1d, + 0x4e, 0xfb, 0x4d, 0xfb, 0x22, 0xd7, 0x39, 0x2b, 0xa, 0xb, 0x2d, 0xa, + 0x8a, 0x81, 0x1d, 0x9c, 0x57, 0xa, 0x24, 0x1d, 0x40, 0xa, 0xef, 0xfb, + 0x29, 0x1e, 0xb, 0x70, 0xa, 0xfb, 0x1f, 0x69, 0x1d, 0xf7, 0xf, 0x61, + 0x1d, 0xf7, 0x10, 0x34, 0xa, 0x32, 0x71, 0x1d, 0x3a, 0x5e, 0xa, 0xb, + 0x4c, 0x74, 0x72, 0x19, 0x79, 0x78, 0x7a, 0x7f, 0x2e, 0xa, 0xb, 0x15, + 0xad, 0x6, 0xf7, 0xd, 0xf2, 0xf7, 0xe, 0x24, 0x5, 0xad, 0x6, 0xb, + 0x6d, 0x1b, 0x49, 0x82, 0xc9, 0x99, 0x1f, 0xf7, 0xda, 0xfb, 0x26, 0x7d, + 0x7, 0xa9, 0x89, 0xab, 0x7f, 0x4f, 0x1a, 0xfb, 0x86, 0x7, 0x21, 0xd9, + 0x73, 0xb4, 0xb, 0x2e, 0x1d, 0x9e, 0xfb, 0x7c, 0x50, 0x1d, 0xb, 0x15, + 0xd7, 0x86, 0x99, 0x76, 0x41, 0x1a, 0xfb, 0xc2, 0x7, 0x4f, 0x8b, 0xfb, + 0x57, 0xf7, 0x8c, 0xf7, 0x97, 0x8b, 0xf7, 0x50, 0xdb, 0x1e, 0xf7, 0x8f, + 0x7, 0xf4, 0x9c, 0xa4, 0xd8, 0x93, 0x1e, 0xb, 0xa8, 0xf7, 0x78, 0x15, + 0xfb, 0x1b, 0xe5, 0x24, 0x65, 0x1d, 0xf7, 0x1f, 0xee, 0xf7, 0x25, 0x2d, + 0xe2, 0xfb, 0x17, 0xfb, 0x1a, 0x39, 0xfb, 0x1, 0xfb, 0xf, 0x1e, 0xe5, + 0xb, 0x5b, 0xa, 0xf7, 0x6a, 0x77, 0x85, 0xa, 0xf7, 0xe6, 0x29, 0x1d, + 0xb, 0x9b, 0x16, 0xf7, 0x81, 0x9a, 0x6, 0x46, 0x8f, 0x86, 0xa6, 0xcd, + 0x1a, 0xf7, 0xed, 0x7, 0x87, 0x8e, 0xb, 0x2d, 0x1d, 0x4f, 0x3f, 0xfb, + 0x13, 0x49, 0x1d, 0xa0, 0x1e, 0xf7, 0x1b, 0x4e, 0xa, 0x6, 0x88, 0xf7, + 0x23, 0x5, 0xfc, 0xa7, 0xb, 0x8c, 0xa, 0x86, 0x83, 0x70, 0x75, 0x1e, + 0x7f, 0x7c, 0x70, 0x7e, 0x75, 0x1b, 0x66, 0x6e, 0xaa, 0xba, 0xaf, 0x96, + 0xc3, 0xf7, 0x2b, 0xbd, 0x1f, 0x4d, 0xa, 0xb, 0x7d, 0x1d, 0xa1, 0xa1, + 0x3d, 0xa, 0xb, 0x39, 0x1d, 0x8b, 0xdc, 0x1f, 0xf7, 0x65, 0x7, 0xf7, + 0x24, 0x89, 0xde, 0x8a, 0xa4, 0x7d, 0x97, 0x3b, 0x19, 0xb, 0xe9, 0xf7, + 0x9f, 0x15, 0xf7, 0xcb, 0x6, 0xf7, 0x17, 0x80, 0x44, 0xc9, 0x2d, 0x1b, + 0x3b, 0xfb, 0x10, 0xb, 0x8d, 0x1b, 0x39, 0xa, 0xb, 0xb8, 0xf7, 0x3d, + 0x5, 0x6f, 0x6, 0x26, 0x5f, 0x59, 0x6d, 0xfb, 0x11, 0x1b, 0xfb, 0x29, + 0x8b, 0xb, 0x3b, 0x1d, 0xa2, 0xb, 0x15, 0xb3, 0x6, 0xfb, 0x27, 0xf7, + 0x28, 0x5, 0xb, 0xaa, 0xb1, 0x37, 0xa, 0xbf, 0x89, 0xa, 0xbd, 0xac, + 0xb0, 0x1e, 0xb, 0x8e, 0xab, 0x15, 0xe3, 0x9b, 0xb2, 0xb0, 0xc2, 0x1b, + 0xda, 0x95, 0x3e, 0x5b, 0x92, 0x1f, 0xb, 0xfb, 0x8, 0x5c, 0x44, 0x57, + 0x1d, 0x1f, 0x94, 0x86, 0x9a, 0x9a, 0x1a, 0xb, 0x3, 0x94, 0x16, 0xf8, + 0xc8, 0x6, 0xa3, 0xf7, 0x44, 0x5, 0x74, 0x6, 0x42, 0x75, 0x6e, 0x4a, + 0xfb, 0x17, 0x1b, 0xfb, 0x8b, 0x6, 0xf8, 0x44, 0xf8, 0xf5, 0x5, 0x9a, + 0xfc, 0xa2, 0x7, 0x77, 0xfb, 0x3f, 0x5, 0xa5, 0x6, 0xce, 0x98, 0xa1, + 0xcd, 0xf7, 0x23, 0x1b, 0xf7, 0x67, 0x6, 0xfc, 0x49, 0xfc, 0xf5, 0x5, + 0xb, 0xf7, 0xb3, 0xf7, 0x9, 0x15, 0x3b, 0xa, 0xf7, 0x6, 0xfb, 0x80, + 0x18, 0x99, 0x6c, 0xbb, 0x2f, 0x7c, 0x1a, 0x7b, 0x63, 0xfb, 0x1e, 0x57, + 0x1e, 0xb, 0xa7, 0xa7, 0x76, 0x55, 0x1d, 0xb, 0x15, 0x6d, 0xb9, 0xf7, + 0x2c, 0xfb, 0x38, 0x98, 0x1b, 0x91, 0x90, 0x8f, 0x92, 0x98, 0x6f, 0xb3, + 0x79, 0xa3, 0x1f, 0x75, 0xa9, 0x64, 0xb7, 0x75, 0xa9, 0xb, 0x65, 0xad, + 0x4d, 0x1d, 0x72, 0x99, 0xa, 0xb, 0xfb, 0x7a, 0x1e, 0xf7, 0x6, 0x8c, + 0x15, 0xf7, 0x78, 0xf7, 0x3, 0xb, 0x7a, 0xae, 0x1f, 0x7d, 0xa8, 0xa0, + 0x7c, 0x52, 0x1d, 0x63, 0x7a, 0x7d, 0x81, 0x70, 0x1b, 0x7c, 0xb, 0x3c, + 0xa, 0xae, 0x7e, 0xa5, 0x92, 0x91, 0x88, 0x1d, 0xb, 0xfc, 0x2a, 0x35, + 0xa, 0xfb, 0x87, 0x7, 0x6e, 0x73, 0x7c, 0x6e, 0x89, 0x1e, 0xb, 0x51, + 0xa, 0x6a, 0x98, 0x71, 0x84, 0x83, 0x87, 0x8a, 0x88, 0x1e, 0x8a, 0x87, + 0x88, 0x8a, 0x89, 0x64, 0xa, 0xb, 0x47, 0xa, 0x88, 0xa, 0xe, 0x15, + 0x43, 0xa, 0xf7, 0x5c, 0x16, 0x43, 0xa, 0xe, 0x9e, 0xfb, 0x6f, 0x78, + 0x7, 0xaa, 0xb1, 0x89, 0x75, 0x1d, 0xfb, 0x76, 0xfb, 0x28, 0xf7, 0x72, + 0x75, 0xa, 0x8c, 0xb9, 0x8d, 0x1e, 0x9e, 0xfb, 0xac, 0xb, 0x1, 0xa8, + 0xe5, 0xf7, 0x99, 0xe5, 0x3, 0x2f, 0x1d, 0xb, 0x7b, 0xa0, 0xa0, 0xae, + 0x9c, 0xb0, 0xaa, 0x71, 0xa5, 0x6d, 0x6d, 0xb, 0xb1, 0xa5, 0xa1, 0xa5, + 0xab, 0x1a, 0xa8, 0x6f, 0xbf, 0x37, 0x5f, 0x55, 0x75, 0x42, 0x69, 0x1e, + 0xa4, 0x79, 0x5, 0xa4, 0x9d, 0x9f, 0xab, 0xbb, 0x1b, 0xb5, 0x9a, 0x73, + 0x71, 0x65, 0x5c, 0x72, 0x50, 0x79, 0x1f, 0xe, 0xe2, 0x81, 0xc5, 0xf7, + 0x95, 0xf7, 0x2f, 0x73, 0xa3, 0xb, 0x78, 0x7, 0xd1, 0x87, 0xa3, 0x70, + 0x20, 0x1a, 0xfb, 0x98, 0x7, 0xfb, 0x1f, 0xb, 0x7e, 0x1b, 0x85, 0x86, + 0x87, 0x84, 0x7e, 0xa7, 0x63, 0x9d, 0x73, 0x1f, 0xa1, 0x6d, 0xb2, 0x5f, + 0xa1, 0x6d, 0xb, 0xaa, 0x1b, 0xd9, 0x9d, 0xd3, 0x65, 0xa, 0xb, 0x8d, + 0x99, 0x1b, 0x9b, 0x9e, 0x8a, 0xb, 0x33, 0xa, 0xe, 0xa1, 0x6f, 0x6f, + 0x76, 0x62, 0x1d, 0xb, 0x6, 0xf7, 0xa1, 0xf8, 0x29, 0x5, 0x9a, 0xfb, + 0xef, 0x7, 0x88, 0xfb, 0xa, 0x5, 0x9d, 0x6, 0xc1, 0x92, 0x99, 0xad, + 0xd4, 0x1b, 0xf7, 0x14, 0x6, 0xfb, 0x9e, 0xfc, 0x29, 0x5, 0xb, 0x63, + 0x7b, 0x97, 0x6f, 0xaa, 0xa5, 0x9e, 0xa1, 0xa0, 0xb, 0xf7, 0x1, 0x3, + 0x9b, 0x16, 0xf7, 0xb0, 0x6, 0xf7, 0xc6, 0xda, 0xf7, 0x58, 0xf7, 0x19, + 0xf7, 0x74, 0xfb, 0x33, 0xf7, 0x1, 0xfb, 0x84, 0x1f, 0xfb, 0xa2, 0x78, + 0x6, 0xd8, 0xb, 0x5, 0x76, 0x6, 0x6a, 0x83, 0x60, 0x8b, 0x86, 0x75, + 0x54, 0xac, 0x32, 0x1b, 0xfb, 0x40, 0xfb, 0x3c, 0xfb, 0xd, 0xfb, 0x74, + 0xfb, 0x8d, 0xf7, 0x41, 0x2b, 0xf7, 0x35, 0xb, 0x7b, 0xa, 0xf7, 0x17, + 0x77, 0xdd, 0x77, 0xf7, 0x8, 0xb4, 0xf7, 0x94, 0xb1, 0xb, 0x80, 0x1d, + 0xf7, 0x6c, 0xb4, 0xb, 0x5b, 0x1d, 0xf8, 0x35, 0x77, 0xb, 0xf1, 0x3, + 0x97, 0x16, 0xf8, 0xae, 0x6, 0xbb, 0xf7, 0x42, 0x5, 0x72, 0x6, 0xfb, + 0x17, 0x52, 0x4b, 0x87, 0xfb, 0x2a, 0x1b, 0x38, 0x79, 0xb, 0x78, 0x7, + 0xb8, 0x87, 0x9a, 0x88, 0xf1, 0xfb, 0x2a, 0xf7, 0x17, 0xfb, 0x54, 0x18, + 0xfb, 0x38, 0x7, 0x3f, 0x88, 0x6a, 0x29, 0x89, 0x1e, 0xb, 0x6b, 0xac, + 0xa7, 0x80, 0xb3, 0x1b, 0xf7, 0x1f, 0xd2, 0xf7, 0x20, 0xf7, 0x7, 0xf7, + 0x19, 0x3f, 0xdd, 0x32, 0x3e, 0x5d, 0x5a, 0x6f, 0xb, 0x9f, 0xd9, 0x1a, + 0xf8, 0x3c, 0x7, 0xdb, 0xb, 0xf7, 0x69, 0xf7, 0x7a, 0xfb, 0x37, 0xb, + 0x75, 0x6f, 0x1e, 0xb, 0x7d, 0x94, 0x5, 0x58, 0x69, 0x66, 0x60, 0x43, + 0x1b, 0x37, 0x46, 0xd7, 0xf7, 0x7, 0xf7, 0x27, 0xe7, 0xaa, 0xb0, 0xc0, + 0xb, 0x15, 0x6f, 0xa2, 0x74, 0xa7, 0xa7, 0xa2, 0xa2, 0xa7, 0xa7, 0x74, + 0xa2, 0x6f, 0x6f, 0x74, 0x74, 0x6f, 0x1e, 0xe, 0xf7, 0x15, 0xf7, 0x2c, + 0xd1, 0xb, 0x7, 0x89, 0xa3, 0x9e, 0x8a, 0xa3, 0x1b, 0xf4, 0xcb, 0x9d, + 0xb4, 0xb6, 0x1f, 0x9c, 0x9b, 0xb7, 0xb4, 0xd9, 0x1a, 0xb, 0x7, 0xd2, + 0x97, 0xa2, 0xd7, 0x91, 0x1e, 0x9e, 0xfb, 0xaa, 0x78, 0x7, 0xd5, 0x85, + 0x99, 0x77, 0x41, 0x1a, 0xb, 0x15, 0xbc, 0x6, 0xf8, 0x56, 0xf9, 0x46, + 0x5, 0x5d, 0x6, 0xb, 0xf7, 0x49, 0xf7, 0x49, 0xf7, 0x26, 0xb, 0x70, + 0xa1, 0x75, 0xa6, 0xa6, 0xa2, 0xa1, 0xa6, 0xa6, 0x74, 0xa2, 0x70, 0x70, + 0x75, 0x74, 0x70, 0x1e, 0xb, 0x5b, 0x7a, 0x5a, 0x7d, 0x5b, 0x6f, 0x1d, + 0x91, 0x95, 0x82, 0xa, 0xb, 0x6f, 0xa1, 0x7d, 0x1d, 0xa2, 0xa1, 0xa7, + 0xa7, 0x74, 0xa2, 0x6f, 0x6f, 0x75, 0x74, 0x6f, 0x1e, 0xb, 0x6f, 0xa0, + 0x76, 0x9a, 0x1d, 0x95, 0x1d, 0x74, 0x6f, 0x1e, 0xb, 0x6f, 0xa1, 0x7d, + 0x1d, 0x9f, 0xa1, 0xa7, 0xa7, 0x77, 0xa1, 0x6f, 0x6f, 0x75, 0x62, 0x1d, + 0xb, 0x7e, 0x19, 0x7b, 0x7, 0x8c, 0xb, 0x15, 0xfb, 0x1b, 0x7, 0x6d, + 0xb, 0xfb, 0x78, 0xfb, 0x70, 0x25, 0xb, 0xfb, 0x3, 0xfb, 0x3, 0x25, + 0xb, 0xa4, 0x9c, 0xcf, 0x8f, 0x1e, 0x9e, 0xfb, 0xae, 0x78, 0x7, 0x60, + 0xa, 0xb, 0xfb, 0x23, 0xfb, 0x2c, 0xfb, 0x1a, 0x8b, 0x66, 0x76, 0x77, + 0x8c, 0x8d, 0x78, 0x1e, 0xe, 0x6c, 0x7d, 0x84, 0x7f, 0x84, 0x80, 0x1f, + 0xfb, 0x23, 0xb, 0x81, 0xc7, 0xf8, 0x24, 0x77, 0xf7, 0x8c, 0x90, 0xa, + 0xb, 0x6d, 0x6c, 0x43, 0x44, 0xfb, 0xf, 0x1b, 0xfb, 0x12, 0xfb, 0xb, + 0xe2, 0xf7, 0x68, 0xb, 0xbc, 0xac, 0x69, 0xb7, 0x1b, 0xa6, 0x9e, 0x9c, + 0xa5, 0xa5, 0x78, 0x9c, 0x70, 0x1f, 0xb, 0xc2, 0xb8, 0xb7, 0xc2, 0xc2, + 0x5e, 0xb8, 0x54, 0xb, 0x76, 0xf9, 0x46, 0x77, 0x1, 0xb, 0x1, 0xad, + 0xf7, 0x6, 0xb, 0x8f, 0x78, 0x1b, 0x2a, 0x60, 0x49, 0x53, 0x41, 0xc2, + 0x66, 0xc9, 0x68, 0x1f, 0xb, 0x75, 0xa7, 0xa7, 0xb, 0x7, 0xf7, 0x28, + 0xf7, 0x76, 0xd0, 0xf5, 0xac, 0x8f, 0xaf, 0x8f, 0x19, 0xb, 0xb6, 0x1b, + 0xbd, 0xa1, 0x5c, 0x6d, 0x6d, 0x6c, 0x59, 0x59, 0x53, 0x1f, 0xb, 0xf8, + 0x1, 0xa0, 0x76, 0xb, 0x6e, 0x89, 0x76, 0xb, 0x66, 0x88, 0x1e, 0x7c, + 0xf7, 0x64, 0x9a, 0x7, 0x5a, 0x8f, 0x7f, 0xb, 0x15, 0xa8, 0x6, 0x9c, + 0x91, 0xb, 0x87, 0x1e, 0xe, 0xbb, 0xf7, 0xca, 0xc3, 0x12, 0xf7, 0x51, + 0xd7, 0x54, 0xdc, 0xb, 0xf7, 0x69, 0x5, 0x76, 0x6, 0x80, 0x89, 0x7c, + 0x74, 0x6f, 0xb, 0xe2, 0x81, 0xd0, 0xf7, 0x64, 0xab, 0xb, 0x8f, 0x8c, + 0x8e, 0x1e, 0xb, 0x1a, 0xfc, 0x3c, 0x7, 0xb, 0x76, 0xf9, 0x2a, 0x77, + 0xb, 0x2e, 0x6f, 0x1e, 0xa4, 0x7d, 0x5, 0xb2, 0x9b, 0xa7, 0xb, 0xf7, + 0x63, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xa7, 0xb, 0xb6, 0x28, 0xee, + 0xef, 0xb6, 0xee, 0xd9, 0xda, 0x60, 0xb, 0xfb, 0x58, 0x76, 0xf7, 0x63, + 0xab, 0xf8, 0xe, 0xc7, 0xb, 0x85, 0x1a, 0x84, 0x8e, 0x87, 0x93, 0x1e, + 0xe, 0x73, 0xfb, 0x30, 0x76, 0xf9, 0xe9, 0x77, 0x1, 0xb, 0x73, 0xf8, + 0x5a, 0x76, 0xf7, 0x87, 0x77, 0x1, 0xb, 0x73, 0xf8, 0xa4, 0x76, 0xf7, + 0x3f, 0x77, 0x1, 0xb, 0x73, 0xfb, 0x30, 0xa4, 0xf9, 0x94, 0xa4, 0x1, + 0xb, 0xa8, 0x73, 0xa3, 0x6e, 0x6e, 0x74, 0x73, 0x6e, 0xb, 0xa1, 0x3d, + 0xa, 0x77, 0xb, 0x1a, 0x92, 0x88, 0x8f, 0x83, 0x1e, 0xe, 0xf7, 0x1f, + 0xe8, 0xf7, 0x1f, 0xb, 0xfb, 0x13, 0xfb, 0x42, 0x8b, 0xb, 0xf7, 0x5b, + 0xa0, 0x76, 0xb, 0xa7, 0xa7, 0xa0, 0xb, 0x1, 0x0, 0x1, 0x6, 0x0, + 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, + 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, + 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, + 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, + 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, + 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, + 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, + 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, + 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, + 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, + 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, + 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, + 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, + 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, + 0xc8, 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, + 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, + 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, + 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, + 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, + 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x0, 0x91, 0x0, 0x0, + 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x94, 0x0, 0x0, + 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, + 0x65, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, 0x81, 0x1, 0x0, + 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x86, 0x0, 0x0, + 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, 0x8, 0x0, 0x0, + 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x76, 0x0, 0x0, + 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, 0x6b, 0x1, 0x0, + 0x63, 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, 0x0, 0x0, 0xa6, 0x0, 0x0, + 0x6d, 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x3, 0x0, 0x5, 0x0, + 0x47, 0x0, 0x61, 0x0, 0xcc, 0x1, 0x51, 0x1, 0xe0, 0x2, 0x97, 0x2, + 0xaa, 0x2, 0xdd, 0x3, 0x14, 0x3, 0xb8, 0x3, 0xdd, 0x4, 0x0, 0x4, + 0x10, 0x4, 0x1f, 0x4, 0x34, 0x4, 0x7e, 0x4, 0xb4, 0x5, 0x3, 0x5, + 0x71, 0x5, 0xa1, 0x6, 0x12, 0x6, 0x72, 0x6, 0x9b, 0x7, 0x10, 0x7, + 0x7d, 0x7, 0x98, 0x7, 0xf6, 0x8, 0x1a, 0x8, 0x3e, 0x8, 0x5d, 0x8, + 0xc5, 0x9, 0x7e, 0x9, 0xc2, 0xa, 0x4a, 0xa, 0x7e, 0xa, 0xb5, 0xa, + 0xfc, 0xb, 0x54, 0xb, 0xc1, 0xc, 0x9, 0xc, 0x11, 0xc, 0x5f, 0xc, + 0xd3, 0xc, 0xf4, 0xd, 0x4c, 0xd, 0x67, 0xd, 0x8f, 0xd, 0xc6, 0xe, + 0x30, 0xe, 0xa4, 0xe, 0xfe, 0xf, 0x44, 0xf, 0x58, 0xf, 0xa3, 0x10, + 0x30, 0x10, 0xb0, 0x10, 0xfa, 0x11, 0x6, 0x11, 0x27, 0x11, 0x3e, 0x11, + 0x60, 0x11, 0x7f, 0x11, 0x8f, 0x11, 0xab, 0x12, 0x4, 0x12, 0x54, 0x12, + 0x94, 0x13, 0x3, 0x13, 0x1c, 0x13, 0x6b, 0x14, 0x1a, 0x14, 0x87, 0x14, + 0xbb, 0x15, 0xd, 0x15, 0x90, 0x15, 0xb2, 0x16, 0x4c, 0x16, 0x6a, 0x16, + 0xa7, 0x16, 0xeb, 0x17, 0x55, 0x17, 0xb0, 0x18, 0x17, 0x18, 0x5f, 0x18, + 0x85, 0x18, 0xdb, 0x19, 0x6e, 0x19, 0xf4, 0x1a, 0x17, 0x1a, 0x28, 0x1a, + 0x79, 0x1a, 0x91, 0x1a, 0xdc, 0x1b, 0x1c, 0x1b, 0x5e, 0x1b, 0xe1, 0x1c, + 0x8e, 0x1d, 0x10, 0x1d, 0x94, 0x1d, 0xae, 0x1e, 0x5f, 0x1e, 0x75, 0x1e, + 0xce, 0x1f, 0x44, 0x1f, 0x5e, 0x1f, 0x81, 0x1f, 0xf9, 0x20, 0x9, 0x20, + 0x40, 0x20, 0x7b, 0x20, 0x99, 0x20, 0xb6, 0x20, 0xbd, 0x21, 0x2f, 0x21, + 0x5e, 0x21, 0x71, 0x21, 0xb4, 0x21, 0xcf, 0x22, 0x8, 0x22, 0x34, 0x22, + 0x59, 0x22, 0x8c, 0x22, 0xba, 0x23, 0x20, 0x23, 0x3d, 0x23, 0x58, 0x23, + 0x6b, 0x23, 0xb7, 0x23, 0xd5, 0x23, 0xff, 0x24, 0xb1, 0x25, 0xe, 0x25, + 0x27, 0x25, 0x3c, 0x25, 0x4f, 0x25, 0x83, 0x25, 0x96, 0x25, 0xc1, 0x25, + 0xf5, 0x26, 0x26, 0x26, 0x66, 0x26, 0x99, 0x26, 0xa1, 0x26, 0xa9, 0x26, + 0xbb, 0x26, 0xf3, 0x27, 0x23, 0x27, 0x5b, 0x27, 0xd6, 0x28, 0x32, 0x28, + 0x44, 0x28, 0x5a, 0x28, 0x93, 0x28, 0xac, 0x28, 0xf0, 0x29, 0x72, 0x29, + 0xab, 0x29, 0xf5, 0x2a, 0x6, 0x2a, 0x31, 0x2a, 0x5c, 0x2a, 0xc0, 0x2b, + 0x65, 0x2b, 0xc1, 0x2b, 0xdf, 0x2b, 0xf6, 0x2c, 0xe, 0x2c, 0x2d, 0x2c, + 0x39, 0x2c, 0x44, 0x2c, 0x50, 0x2c, 0x6a, 0x2c, 0xda, 0x2d, 0x29, 0x2d, + 0x5a, 0x2d, 0x9b, 0x2d, 0xbd, 0x2d, 0xfa, 0x2e, 0x2e, 0x2e, 0x60, 0x2e, + 0xd8, 0x2e, 0xec, 0x2e, 0xfa, 0x2f, 0xf, 0x2f, 0x36, 0x2f, 0x51, 0x2f, + 0x90, 0x2f, 0xae, 0x2f, 0xb5, 0x2f, 0xe8, 0x30, 0x22, 0x30, 0xda, 0x31, + 0x68, 0x31, 0xbd, 0x32, 0x2c, 0x32, 0x68, 0x32, 0x80, 0x32, 0x99, 0x33, + 0xc, 0x33, 0x1b, 0x33, 0x23, 0x33, 0x4a, 0x33, 0x5b, 0x33, 0x91, 0x33, + 0xc3, 0x33, 0xe9, 0x34, 0x4, 0x34, 0xd, 0x34, 0x18, 0x34, 0x37, 0x34, + 0x4e, 0x34, 0x6f, 0x34, 0x89, 0x34, 0xa1, 0x34, 0xdc, 0x35, 0x75, 0x36, + 0x33, 0x36, 0x51, 0x36, 0x85, 0x37, 0x3a, 0x37, 0x50, 0x37, 0x70, 0x37, + 0x8b, 0x38, 0x1a, 0x38, 0xbf, 0x38, 0xd2, 0x39, 0x5c, 0x39, 0xdd, 0x20, + 0xe, 0x20, 0xe, 0x73, 0x82, 0xf5, 0xf8, 0xd7, 0x77, 0x1, 0xf7, 0x16, + 0xf7, 0x0, 0x14, 0x20, 0xf7, 0x44, 0xf7, 0x44, 0x15, 0x9c, 0x6, 0xa1, + 0xf7, 0x50, 0xa2, 0xf7, 0xe, 0xd8, 0x1a, 0xca, 0x82, 0xbd, 0x5d, 0x5f, + 0x82, 0x58, 0x4e, 0x3d, 0xa3, 0xfb, 0x10, 0xa1, 0xfb, 0x4e, 0x1e, 0x5d, + 0xfb, 0x18, 0x15, 0x6e, 0xa3, 0x73, 0xa8, 0xa8, 0xa5, 0xa2, 0xa8, 0xa8, + 0x71, 0xa4, 0x6e, 0x6e, 0x73, 0x73, 0x6e, 0x1e, 0xe, 0xbe, 0xf8, 0x58, + 0x76, 0xf7, 0x89, 0x77, 0x1, 0xd8, 0xe0, 0xdf, 0xe0, 0x3, 0xf7, 0xaa, + 0xf8, 0x43, 0x15, 0x44, 0xa, 0xfb, 0x3d, 0x16, 0x44, 0xa, 0xe, 0xa0, + 0x76, 0xf7, 0x6d, 0xbd, 0xf7, 0x21, 0xbc, 0xf7, 0x61, 0x77, 0x12, 0x8d, + 0xf8, 0x85, 0x17, 0xde, 0x16, 0xbf, 0x6, 0xaf, 0xf7, 0x6d, 0x5, 0xf7, + 0x1b, 0x6, 0x6b, 0xfb, 0x6d, 0x5, 0xc1, 0x6, 0xab, 0xf7, 0x6d, 0x5, + 0xf7, 0x1, 0xbd, 0x26, 0x6, 0x9f, 0xf7, 0x21, 0x5, 0xf7, 0x3, 0xbc, + 0x25, 0x6, 0xab, 0xf7, 0x61, 0x5, 0x55, 0x6, 0x6c, 0xfb, 0x61, 0x5, + 0xfb, 0x1c, 0x6, 0xaa, 0xf7, 0x61, 0x5, 0x54, 0x6, 0x6b, 0xfb, 0x61, + 0x5, 0xfb, 0xc, 0x5a, 0xf7, 0x7, 0x6, 0x75, 0xfb, 0x21, 0x5, 0xfb, + 0xf, 0x59, 0xf7, 0x7, 0x6, 0x13, 0x60, 0xc8, 0xbd, 0x15, 0x9f, 0xf7, + 0x21, 0x5, 0xf7, 0x1c, 0x6, 0x78, 0xfb, 0x21, 0x5, 0xe, 0x49, 0x76, + 0xe3, 0xa7, 0xf8, 0xf4, 0xa6, 0xca, 0x77, 0x12, 0xb7, 0x9a, 0xf7, 0x3f, + 0xad, 0xf7, 0x26, 0x9a, 0x17, 0xb7, 0xbe, 0x15, 0x7a, 0xa6, 0xc7, 0x69, + 0xee, 0x1b, 0x34, 0xad, 0xe2, 0x7, 0xf4, 0x99, 0xe3, 0xb8, 0xf7, 0x7, + 0x1a, 0xf7, 0x0, 0x4b, 0xae, 0xfb, 0x15, 0xd5, 0x1e, 0xf7, 0x8a, 0x7, + 0xbe, 0xd5, 0x70, 0xfb, 0x2, 0xa0, 0x1f, 0x9a, 0xf7, 0x3, 0x6, 0xb2, + 0x5f, 0x45, 0x99, 0x5c, 0x1b, 0xca, 0x69, 0x4c, 0x7, 0xfb, 0x13, 0x58, + 0x39, 0x44, 0x29, 0xe2, 0x57, 0xe6, 0x58, 0x1f, 0xfb, 0xae, 0x7, 0x2d, + 0x54, 0xbf, 0xf0, 0x75, 0x1f, 0x7c, 0x6, 0xf7, 0x4d, 0xf7, 0x76, 0x15, + 0x13, 0x64, 0x4f, 0xb3, 0x60, 0xab, 0xc0, 0x1a, 0xa1, 0x91, 0xde, 0xec, + 0x1e, 0xae, 0xfc, 0xf5, 0x15, 0xf7, 0x9d, 0x7, 0x13, 0x44, 0xca, 0x64, + 0xbe, 0x6b, 0x44, 0x1a, 0x25, 0x3a, 0x7c, 0x6a, 0x85, 0x1e, 0xe, 0xf8, + 0x70, 0x7f, 0xa9, 0x6e, 0x76, 0xf7, 0xc4, 0xa9, 0x9f, 0xa9, 0xf7, 0x91, + 0xa9, 0x9c, 0x77, 0x12, 0xbc, 0xd4, 0xf7, 0x24, 0xd3, 0xde, 0xd4, 0xf7, + 0x23, 0xd4, 0x13, 0x77, 0xc0, 0xf7, 0x34, 0x82, 0x15, 0xa9, 0x74, 0xf8, + 0x28, 0xf9, 0x29, 0x6a, 0xa2, 0x5, 0x13, 0xbb, 0xc0, 0xfc, 0x94, 0xfb, + 0x5b, 0x15, 0x3c, 0xb6, 0x25, 0xf1, 0xf1, 0xb5, 0xf1, 0xdb, 0xdb, 0x60, + 0xf0, 0x27, 0x1e, 0x8a, 0x6, 0x25, 0x60, 0x26, 0x3a, 0x1f, 0xd4, 0x8c, + 0x15, 0xbe, 0x96, 0xef, 0xc8, 0x1e, 0x8c, 0x6, 0xc9, 0x94, 0x26, 0x58, + 0x5b, 0x82, 0x24, 0x4d, 0x4d, 0x80, 0xf0, 0xbe, 0x1f, 0xf7, 0xbf, 0xfb, + 0xb1, 0x15, 0x3c, 0xb6, 0x25, 0xf1, 0xf0, 0xb6, 0xf1, 0xdb, 0xdb, 0x60, + 0xf1, 0x27, 0x1e, 0x8a, 0x6, 0x25, 0x60, 0x25, 0x3a, 0x1f, 0xd4, 0x8c, + 0x15, 0xc0, 0x96, 0xee, 0xc7, 0x1e, 0x8c, 0x6, 0xc9, 0x94, 0x26, 0x58, + 0x5a, 0x82, 0x24, 0x4e, 0x4d, 0x80, 0xf1, 0xbd, 0x1f, 0xe, 0xf8, 0x39, + 0x7e, 0xbf, 0x57, 0xd2, 0xf8, 0x4, 0x77, 0xf7, 0x82, 0xab, 0x12, 0xb5, + 0xe7, 0xcf, 0xda, 0x8b, 0xf7, 0x31, 0x8b, 0xc0, 0x13, 0x7f, 0xf7, 0xd5, + 0xf8, 0x34, 0x15, 0x77, 0xb4, 0x77, 0xbf, 0xbb, 0x1a, 0xc9, 0xb0, 0xa4, + 0xb4, 0xb6, 0xaf, 0x69, 0x59, 0x38, 0x31, 0x5c, 0x70, 0x7d, 0x1e, 0xf7, + 0x0, 0xfb, 0xe6, 0x15, 0x6d, 0xa8, 0xc7, 0x4e, 0xdc, 0x1b, 0xf5, 0xb7, + 0xf7, 0x1, 0x8f, 0x8c, 0x1f, 0x7c, 0x96, 0x5, 0x6d, 0x73, 0x77, 0x74, + 0x57, 0x1b, 0x41, 0x47, 0xdc, 0x99, 0x82, 0x1f, 0xef, 0xf7, 0x2d, 0xaf, + 0xc3, 0xbe, 0xb1, 0xaf, 0x90, 0x19, 0xa0, 0xfb, 0x6c, 0x76, 0x7, 0xb0, + 0x88, 0xa6, 0x7c, 0x65, 0x1a, 0x55, 0x4d, 0x3c, 0x6e, 0x65, 0x1e, 0x58, + 0xc9, 0x5e, 0xd3, 0x67, 0xd3, 0x8, 0xcb, 0xa9, 0xe6, 0xb7, 0xed, 0x1a, + 0xd7, 0x4c, 0xb7, 0x42, 0x26, 0x57, 0x36, 0x43, 0x5b, 0x98, 0x6a, 0xa1, + 0x4e, 0x1e, 0x23, 0x4f, 0x30, 0x46, 0x23, 0x1a, 0xfb, 0x17, 0xf3, 0x71, + 0xc8, 0xf7, 0xb, 0xca, 0xc3, 0xae, 0xb3, 0x1e, 0x72, 0xa5, 0x15, 0x13, + 0xbf, 0x51, 0x46, 0x5a, 0x84, 0x74, 0x1b, 0x44, 0x51, 0xcb, 0xd8, 0xe3, + 0xd4, 0xb9, 0xb8, 0xa8, 0x1f, 0xb5, 0x3b, 0xbf, 0x32, 0xc5, 0x45, 0x8, + 0xe, 0xfb, 0x45, 0xf8, 0x58, 0x76, 0xf7, 0x89, 0x77, 0x1, 0xbb, 0xe0, + 0x3, 0xe5, 0xf8, 0x43, 0x15, 0x44, 0xa, 0xe, 0x90, 0x1d, 0xbb, 0xdc, + 0x3, 0xf7, 0xbb, 0xfb, 0x45, 0x15, 0x97, 0x9b, 0x5, 0xfb, 0x24, 0xf7, + 0x3, 0x69, 0xf7, 0x66, 0xf1, 0x1a, 0xf7, 0x92, 0xf0, 0xe0, 0xd5, 0xc6, + 0x1e, 0x82, 0x9b, 0x5, 0xfb, 0x2f, 0x2f, 0x2f, 0xfb, 0x2a, 0xfb, 0x40, + 0x1a, 0xfb, 0x73, 0xea, 0x27, 0xf7, 0x2c, 0xfb, 0x8, 0x1e, 0xe, 0x90, + 0x1d, 0xf7, 0x5e, 0xde, 0x3, 0xa8, 0xfb, 0x35, 0x15, 0x94, 0x7b, 0x5, + 0xf7, 0x2f, 0xf7, 0x1, 0xe7, 0xf7, 0x19, 0xf7, 0x40, 0x1a, 0xf7, 0x73, + 0x2f, 0xf7, 0x0, 0xfb, 0x2c, 0xf7, 0x0, 0x1e, 0x7f, 0x7b, 0x5, 0xf7, + 0x3e, 0xfb, 0xd, 0x8e, 0xfb, 0x5e, 0x25, 0x1a, 0xfb, 0x71, 0xfb, 0x27, + 0xfb, 0x31, 0x71, 0x79, 0x1e, 0xe, 0xf8, 0x65, 0x90, 0x8b, 0xf7, 0xf, + 0xfb, 0x8, 0x76, 0xa9, 0x77, 0xb7, 0xf7, 0x13, 0x12, 0xf7, 0x73, 0xa9, + 0x13, 0x2c, 0xf7, 0x84, 0xf8, 0x5c, 0x15, 0x8c, 0x84, 0x5, 0x94, 0x4f, + 0x67, 0x55, 0x6c, 0x1a, 0x72, 0x9d, 0x7d, 0x9c, 0xa4, 0x99, 0xa2, 0x9e, + 0x1e, 0xa9, 0x6f, 0x98, 0xee, 0x1a, 0x92, 0x7, 0x92, 0x88, 0x5, 0x71, + 0xc9, 0xa2, 0x3e, 0xb7, 0x1b, 0x9e, 0x9c, 0x97, 0xa3, 0x1f, 0x13, 0xc4, + 0xc6, 0x40, 0x6c, 0x3a, 0xbe, 0x1e, 0x83, 0x90, 0x5, 0xf2, 0xcc, 0xc7, + 0x61, 0xcb, 0x1a, 0xa7, 0x73, 0x93, 0x7f, 0x66, 0x71, 0x47, 0x66, 0x4a, + 0x1e, 0x84, 0x87, 0x5, 0x13, 0x1c, 0xa5, 0x7, 0xbf, 0xa6, 0xbb, 0xa6, + 0x1a, 0x98, 0x83, 0xa5, 0x71, 0x84, 0x6d, 0x8b, 0x64, 0x1e, 0x5f, 0xa4, + 0x7e, 0x3a, 0x1a, 0x7e, 0x7, 0xbe, 0x2c, 0x8c, 0xc1, 0x5e, 0x1b, 0x70, + 0x85, 0x70, 0x84, 0x51, 0xe1, 0xa1, 0xcf, 0x60, 0x1f, 0x96, 0x84, 0x5, + 0x37, 0x51, 0x3a, 0xac, 0x4c, 0x1a, 0x80, 0x93, 0x76, 0xa5, 0xa2, 0x90, + 0x91, 0xb0, 0xac, 0x1e, 0x13, 0x2c, 0xa4, 0xa7, 0x8b, 0x8b, 0xbe, 0xad, + 0x8, 0xe, 0xf7, 0x63, 0xa0, 0x76, 0xf7, 0x89, 0xb3, 0x1, 0xf7, 0x9a, + 0xb5, 0x3, 0xa9, 0xf7, 0x7c, 0x15, 0xf7, 0x7c, 0xfb, 0x7c, 0xb5, 0xf7, + 0x7c, 0xf7, 0x7a, 0xb3, 0xfb, 0x7a, 0xf7, 0x7e, 0x61, 0xfb, 0x7e, 0xfb, + 0x7c, 0x6, 0xe, 0x20, 0x7f, 0xf7, 0x6, 0x38, 0x76, 0x12, 0x13, 0x80, + 0xd5, 0xfb, 0xe, 0x15, 0x94, 0x78, 0x5, 0x3f, 0xa, 0x79, 0x60, 0x5f, + 0xb3, 0x78, 0xaa, 0x95, 0x1e, 0x13, 0x40, 0x8c, 0x8f, 0x94, 0x94, 0x38, + 0x1d, 0xe, 0x73, 0xf7, 0x56, 0xca, 0x1, 0xb2, 0xf7, 0x56, 0x15, 0xf7, + 0x8a, 0xca, 0xfb, 0x8a, 0x6, 0xe, 0x20, 0x80, 0xf7, 0x3, 0x1, 0xd1, + 0xf7, 0x3, 0x3, 0xd1, 0xb6, 0x15, 0x43, 0x1d, 0xe, 0x3c, 0x92, 0x7a, + 0x1d, 0x83, 0xf7, 0xbb, 0x3, 0x83, 0x7d, 0x15, 0xb3, 0x6, 0xf7, 0x93, + 0xf9, 0x46, 0x5, 0x66, 0x6, 0xe, 0x7d, 0xa5, 0xf9, 0x12, 0xa5, 0x1, + 0xa3, 0xeb, 0xf7, 0x98, 0xeb, 0x3, 0xf7, 0xc, 0xf7, 0xdf, 0x15, 0xcf, + 0x8d, 0xf7, 0x8f, 0xf7, 0x14, 0xf7, 0x14, 0x8d, 0xfb, 0x8f, 0x47, 0x3c, + 0x89, 0xfb, 0x84, 0xfb, 0x14, 0xfb, 0x14, 0x89, 0xf7, 0x82, 0xdc, 0x1e, + 0x2b, 0x16, 0xfb, 0xd, 0xb5, 0xfb, 0x74, 0xf7, 0x4c, 0xf7, 0x4c, 0xb5, + 0xf7, 0x74, 0xf7, 0xd, 0xf7, 0xa, 0x61, 0xf7, 0x77, 0xfb, 0x4c, 0xfb, + 0x4c, 0x61, 0xfb, 0x77, 0xfb, 0xa, 0x1e, 0xe, 0xa0, 0x76, 0xf9, 0x38, + 0x77, 0x1, 0xf7, 0x69, 0xe1, 0x3, 0xf7, 0x3, 0x16, 0xf7, 0xaf, 0x9a, + 0x6, 0x40, 0x77, 0x99, 0xd6, 0x1f, 0xf8, 0xce, 0x7, 0x83, 0x8d, 0xfb, + 0x48, 0x30, 0x5, 0x7d, 0x7, 0xa1, 0xc3, 0x8b, 0x8b, 0x97, 0x1b, 0xad, + 0x8b, 0x71, 0x76, 0x1f, 0xfc, 0x4f, 0x7, 0x41, 0x5f, 0x7f, 0x51, 0x89, + 0x1e, 0xe, 0x8b, 0xd7, 0xf8, 0xa2, 0xd5, 0x1, 0xf7, 0xe6, 0xe1, 0x3, + 0xa9, 0x16, 0xf8, 0x1a, 0x6, 0xc2, 0xf7, 0x1d, 0x7e, 0x90, 0x5, 0x4c, + 0x64, 0x6c, 0x88, 0x66, 0x1b, 0xfb, 0x77, 0x6, 0xf7, 0x3c, 0xf7, 0x44, + 0x5, 0xb7, 0xba, 0xdf, 0xe6, 0xf5, 0x1a, 0xf7, 0x4, 0x31, 0xcf, 0x30, + 0x33, 0x2c, 0x5b, 0xfb, 0x2b, 0x6d, 0x1e, 0xa1, 0x86, 0x5, 0xc1, 0xa1, + 0xa9, 0xd7, 0xe6, 0x1b, 0xf7, 0xa, 0xa4, 0x2f, 0x58, 0x40, 0x60, 0x31, + 0x34, 0x2e, 0x1f, 0xfb, 0x46, 0xfb, 0x51, 0x5, 0xe, 0x7d, 0xaf, 0xf8, + 0xe6, 0xc7, 0x12, 0xf7, 0xfb, 0xc5, 0x51, 0xd3, 0x13, 0xd0, 0xf7, 0x2d, + 0xf7, 0xdc, 0x15, 0xd0, 0x8d, 0xa4, 0x88, 0xaf, 0x78, 0x8, 0xcb, 0x6a, + 0x97, 0x2b, 0x72, 0x1a, 0x40, 0x62, 0x52, 0x2e, 0x6e, 0x73, 0x98, 0x99, + 0x75, 0x1e, 0x99, 0x74, 0x75, 0x9a, 0x74, 0x1b, 0x7b, 0x74, 0x84, 0x6f, + 0x57, 0xe2, 0x86, 0xa3, 0xf7, 0x31, 0xf7, 0xc, 0xcd, 0xf7, 0x22, 0xf7, + 0x18, 0x36, 0xc4, 0x61, 0x9d, 0x1f, 0x13, 0x60, 0xcd, 0xb6, 0xba, 0xb6, + 0xc1, 0x1a, 0xb4, 0x70, 0xe9, 0xfb, 0x15, 0x48, 0xfb, 0x3, 0x6c, 0xfb, + 0x17, 0x63, 0x1e, 0x9c, 0x87, 0x5, 0xa7, 0x9a, 0xcb, 0xd9, 0xe6, 0x1b, + 0xd5, 0xad, 0x56, 0x58, 0x2f, 0x2c, 0x63, 0x30, 0x6e, 0x1f, 0xe, 0xa0, + 0x76, 0xf7, 0x31, 0xcb, 0xf8, 0x5b, 0x77, 0x1, 0xf7, 0xb8, 0xd9, 0x3, + 0x97, 0xf7, 0x31, 0x15, 0xf7, 0xad, 0xfb, 0x31, 0xd8, 0xf7, 0x31, 0xf1, + 0xcb, 0x25, 0xf8, 0x5b, 0x5f, 0x6, 0xfb, 0xce, 0xfc, 0x5b, 0x5, 0xb3, + 0x16, 0xf7, 0x82, 0xf7, 0xf2, 0x5, 0x8d, 0xfb, 0xf2, 0x6, 0xe, 0x7d, + 0xb0, 0xf8, 0xcd, 0xda, 0x12, 0xf7, 0xf8, 0xd1, 0x17, 0xf7, 0x1f, 0xf8, + 0x79, 0x15, 0xb5, 0xe3, 0x5, 0xf7, 0x4e, 0x6, 0x96, 0x9e, 0x8b, 0x94, + 0x8e, 0x1f, 0xb1, 0xda, 0x82, 0x9c, 0x5, 0x7c, 0x80, 0x78, 0x80, 0x71, + 0x1b, 0xfb, 0x61, 0x6, 0x24, 0xfb, 0x84, 0x5, 0x84, 0x88, 0x8e, 0x85, + 0x91, 0x1b, 0xf7, 0x0, 0x87, 0xf7, 0x45, 0x69, 0xfb, 0x34, 0x1a, 0xfb, + 0xe, 0x41, 0x53, 0x4a, 0x70, 0x76, 0x9b, 0x9b, 0x75, 0x1e, 0x13, 0xc0, + 0x9a, 0x76, 0x74, 0x9a, 0x6c, 0x1b, 0x63, 0x8b, 0x6e, 0x81, 0x67, 0xba, + 0x73, 0xda, 0x1f, 0x13, 0x60, 0xf7, 0x32, 0xf7, 0x2, 0xf5, 0xf7, 0x19, + 0xe4, 0x80, 0x9e, 0x60, 0xbf, 0x1f, 0x13, 0x40, 0x50, 0xd3, 0x2d, 0x99, + 0x3b, 0x99, 0x8, 0xe, 0x7d, 0xa7, 0xf7, 0xe6, 0xb8, 0xf7, 0xb2, 0x77, + 0x1, 0xbe, 0xe8, 0xf7, 0x77, 0xe5, 0x3, 0xf7, 0x2e, 0xf8, 0xd, 0x15, + 0x9e, 0xf7, 0xe, 0xf6, 0xe6, 0xf7, 0x46, 0xa7, 0x89, 0xaf, 0x18, 0xfb, + 0x86, 0x83, 0xfb, 0x3e, 0xfb, 0x40, 0xfb, 0x5f, 0x1a, 0xfb, 0x66, 0xf1, + 0x40, 0xf7, 0xa, 0xf7, 0x46, 0xa8, 0xf7, 0x33, 0xd4, 0xf7, 0x1a, 0x44, + 0xcd, 0x21, 0x53, 0x64, 0x86, 0x67, 0x5e, 0x1e, 0x75, 0xfb, 0x21, 0x15, + 0xc7, 0x90, 0x9e, 0x97, 0x9c, 0x1e, 0xa7, 0x9f, 0xbc, 0x97, 0xad, 0x1b, + 0xf5, 0xa2, 0x31, 0x24, 0xfb, 0x5, 0x64, 0x57, 0x4c, 0x40, 0x43, 0xc1, + 0xf7, 0x3c, 0x1f, 0xe, 0x98, 0x76, 0xf8, 0xe8, 0xd5, 0x1, 0x9f, 0xf8, + 0x41, 0x3, 0xf7, 0x40, 0x83, 0x15, 0xcc, 0x6, 0xf7, 0x68, 0xf9, 0x22, + 0x5, 0x9b, 0xfc, 0x6, 0x7, 0x50, 0xfb, 0x27, 0x9c, 0x83, 0x5, 0xbf, + 0xac, 0xa7, 0xa8, 0xcc, 0x1b, 0xf7, 0x63, 0x6, 0xe, 0x7d, 0xa7, 0xf9, + 0xe, 0xa7, 0x12, 0xd6, 0xd7, 0x45, 0xd1, 0xf7, 0x60, 0xd0, 0x4c, 0xd7, + 0x13, 0xe4, 0xf7, 0x6c, 0xf7, 0xcc, 0x15, 0xf7, 0x7, 0x39, 0xbb, 0x6d, + 0x41, 0x1a, 0x45, 0x52, 0x61, 0x4c, 0x3a, 0x5d, 0xcc, 0xd8, 0xe6, 0xbf, + 0xb2, 0xab, 0xa5, 0x1e, 0x71, 0x9f, 0x15, 0x32, 0x47, 0x5e, 0x6c, 0x34, + 0x1a, 0x3d, 0xcd, 0x39, 0xf7, 0x10, 0xf7, 0x3a, 0xb6, 0xf7, 0x4, 0xbf, + 0xce, 0x7a, 0xc5, 0xfb, 0x1a, 0xeb, 0x1e, 0x13, 0xd8, 0xc1, 0xa8, 0xd7, + 0xb5, 0xe7, 0x1a, 0xd7, 0x43, 0xcd, 0xfb, 0x5, 0x35, 0x26, 0x55, 0x26, + 0x3a, 0xb7, 0x69, 0xdf, 0x41, 0x1e, 0xd6, 0xc4, 0x15, 0x67, 0xa2, 0x2e, + 0xc4, 0xd9, 0x1a, 0xbb, 0xab, 0xc0, 0xd6, 0xd8, 0xb8, 0x55, 0x54, 0x33, + 0x4d, 0x66, 0x65, 0x72, 0x1e, 0xe, 0x8b, 0x76, 0xf7, 0x74, 0xb6, 0xf8, + 0x19, 0xa7, 0x1, 0xa9, 0xe7, 0xf7, 0x88, 0xe8, 0x3, 0xc6, 0x75, 0x15, + 0xf7, 0x91, 0x9b, 0xf7, 0x27, 0xf7, 0x51, 0xf7, 0x69, 0x1a, 0xdf, 0x73, + 0xc7, 0x63, 0xbb, 0x1e, 0xbc, 0x64, 0x54, 0xa8, 0x4e, 0x1b, 0xfb, 0x17, + 0x89, 0x3c, 0x23, 0xfb, 0x11, 0x1a, 0x38, 0xba, 0x23, 0xf7, 0x19, 0xbe, + 0xbf, 0x92, 0xb0, 0xb7, 0x1e, 0x8c, 0x8a, 0x83, 0x73, 0x58, 0xfb, 0x78, + 0xfb, 0x87, 0x62, 0x19, 0xf7, 0xc7, 0xf7, 0xf9, 0x15, 0x54, 0x4a, 0x82, + 0x5b, 0x20, 0x76, 0xee, 0xd7, 0xa7, 0x93, 0xbb, 0x9c, 0xae, 0x1e, 0xaf, + 0x9e, 0xa6, 0xa4, 0xb6, 0x1b, 0xcd, 0xad, 0x5b, 0x52, 0x9b, 0x1f, 0x9a, + 0x56, 0x8c, 0x59, 0x89, 0x68, 0x8, 0xe, 0x3c, 0x80, 0xf7, 0x3, 0xf7, + 0x8c, 0xf7, 0x3, 0x8b, 0x77, 0x1, 0xdc, 0xf7, 0x3, 0x3, 0xdc, 0xf8, + 0x26, 0x15, 0x43, 0x1d, 0xfb, 0xfb, 0x4, 0x43, 0x1d, 0xe, 0x3c, 0xfb, + 0xc, 0x76, 0xf7, 0x28, 0x76, 0xf7, 0x8, 0x77, 0xf7, 0x9d, 0xf7, 0x4, + 0x12, 0xdb, 0xf7, 0x4, 0xfb, 0x4, 0xf7, 0x1f, 0x13, 0x94, 0xed, 0xfb, + 0xe, 0x15, 0x94, 0x78, 0x5, 0x13, 0x74, 0xac, 0x97, 0xda, 0xcc, 0xd1, + 0x1a, 0xdf, 0x50, 0x97, 0x76, 0x80, 0x5b, 0x85, 0x54, 0x66, 0xa3, 0x79, + 0xab, 0x92, 0x96, 0x94, 0x8c, 0x8e, 0x1e, 0x8c, 0x8f, 0x8e, 0x8c, 0x8d, + 0x1b, 0x13, 0x18, 0x39, 0xa, 0x79, 0xf8, 0xa1, 0x15, 0x13, 0x10, 0x6c, + 0xa4, 0x72, 0xaa, 0x1e, 0x13, 0x98, 0xaa, 0xa4, 0xa4, 0xaa, 0xaa, 0x72, + 0xa4, 0x6c, 0x6c, 0x72, 0x72, 0x6c, 0x1f, 0xe, 0x8c, 0x1d, 0xf8, 0x90, + 0xfc, 0x7e, 0xca, 0x3, 0xa7, 0xf7, 0x81, 0x15, 0xf8, 0x90, 0xfb, 0x89, + 0x5, 0xb8, 0x7, 0xfc, 0x51, 0xf7, 0x6c, 0xf8, 0x51, 0xf7, 0x6b, 0x5, + 0xb9, 0x7, 0xfc, 0x90, 0xfb, 0x8c, 0x5, 0xe, 0xf7, 0x63, 0xf7, 0xc, + 0xcd, 0xf7, 0x1a, 0xcd, 0x63, 0xb3, 0x12, 0x13, 0xa0, 0xa9, 0xf7, 0xee, + 0x15, 0xf8, 0x8c, 0xb3, 0xfc, 0x8c, 0x6, 0xfb, 0x9e, 0x4, 0xf8, 0x8c, + 0x6, 0x13, 0xc0, 0xb6, 0xfc, 0x8c, 0x7, 0xe, 0x8c, 0x1d, 0x8b, 0x3, + 0xa7, 0x83, 0x15, 0xf8, 0x90, 0xf7, 0x89, 0x5, 0xa8, 0x7, 0xfc, 0x90, + 0xf7, 0x8c, 0x5, 0x5d, 0x7, 0xf8, 0x51, 0xfb, 0x6b, 0xfc, 0x51, 0xfb, + 0x6c, 0x5, 0xe, 0xe2, 0x83, 0xf4, 0xf7, 0xfe, 0x77, 0xf7, 0x63, 0xa9, + 0x12, 0xcf, 0xbe, 0xf7, 0x5f, 0xe7, 0x17, 0xf7, 0x77, 0xf7, 0x38, 0x15, + 0x9c, 0x6, 0x99, 0xe1, 0xa5, 0xb3, 0xc2, 0xcb, 0x8, 0xa9, 0xae, 0xb8, + 0xd1, 0xbe, 0x1a, 0xf1, 0x44, 0xcb, 0xfb, 0x4, 0x46, 0x2d, 0x56, 0x26, + 0x69, 0x95, 0x6e, 0xb3, 0xa7, 0x96, 0xa3, 0x9c, 0x9c, 0x83, 0x97, 0x82, + 0x95, 0x1e, 0x81, 0x97, 0x80, 0x95, 0x99, 0x1a, 0xac, 0xbe, 0xb1, 0xb5, + 0xd8, 0xac, 0x48, 0x4f, 0x63, 0x78, 0x46, 0x79, 0x63, 0x1e, 0x69, 0x3d, + 0x73, 0x46, 0x50, 0x1a, 0x61, 0xfb, 0xc, 0x15, 0x6e, 0xa2, 0x74, 0xa8, + 0xa8, 0xa3, 0xa2, 0xa8, 0x1e, 0x13, 0x80, 0x94, 0x1d, 0x1e, 0xe, 0xf8, + 0xc8, 0x7d, 0xb2, 0xf7, 0xa, 0xac, 0x7f, 0xb7, 0xf7, 0x7a, 0xb7, 0xf7, + 0x37, 0xaa, 0x12, 0xf7, 0x8, 0xdf, 0xf7, 0xd, 0xd2, 0xf8, 0xd, 0xb3, + 0x13, 0xbf, 0xf8, 0x1c, 0xf7, 0xa3, 0x15, 0xf7, 0xd, 0xe4, 0xd3, 0xbb, + 0xa9, 0x94, 0x74, 0x61, 0x5a, 0x7d, 0x63, 0x7e, 0x6b, 0x1e, 0x4e, 0x72, + 0x6a, 0x6d, 0x6f, 0x1b, 0x68, 0x6f, 0xa3, 0xc7, 0x1f, 0xf7, 0x22, 0x52, + 0x15, 0x7e, 0x8a, 0xa3, 0x51, 0xcd, 0x1b, 0xf7, 0xb, 0xce, 0xf7, 0x1c, + 0xf1, 0xf7, 0x3d, 0xfb, 0x24, 0xf7, 0x12, 0xfb, 0x4c, 0xfb, 0x5a, 0xfb, + 0x3b, 0xfb, 0x25, 0xfb, 0x6c, 0xfb, 0x1a, 0xf7, 0x6, 0xfb, 0x57, 0xf7, + 0x99, 0xd9, 0xd9, 0xab, 0xa8, 0xca, 0x1f, 0x7f, 0xa9, 0x5, 0x71, 0x52, + 0x4d, 0x71, 0x32, 0x1b, 0xfb, 0x42, 0xfb, 0x8, 0xf7, 0x1d, 0xf7, 0x23, + 0xf7, 0x72, 0xf7, 0x14, 0xf7, 0xa, 0xf7, 0x2d, 0xf7, 0x4b, 0xf4, 0xfb, + 0x2b, 0xfb, 0x6, 0x1f, 0x13, 0xdf, 0x35, 0x5a, 0xfb, 0xa, 0x3a, 0x5e, + 0x91, 0xbc, 0x9a, 0x8e, 0x1e, 0xcd, 0xf7, 0x9c, 0x5, 0x46, 0x6, 0x80, + 0x5b, 0x5, 0x13, 0x32, 0xa3, 0x7e, 0x7f, 0xa7, 0x5d, 0x1b, 0xfb, 0x1b, + 0x4d, 0xfb, 0x3e, 0x45, 0xfb, 0x5, 0xcf, 0x80, 0xa7, 0xc5, 0xb9, 0xbf, + 0x9d, 0x96, 0x1f, 0xe, 0x5c, 0x1d, 0x1, 0x9a, 0x16, 0xf7, 0x5a, 0x9e, + 0x6, 0x76, 0x51, 0xa4, 0xb2, 0x9a, 0x1f, 0xbd, 0xf7, 0x19, 0x5, 0xf7, + 0x9a, 0x6, 0xba, 0x27, 0x93, 0x7d, 0x8f, 0x7b, 0x8, 0x5f, 0x96, 0x60, + 0x74, 0x66, 0x1b, 0x78, 0xf7, 0x93, 0x9e, 0x7, 0x73, 0x68, 0xa1, 0xb8, + 0x77, 0x1f, 0xfb, 0x98, 0xf8, 0xe0, 0x5, 0x77, 0x6, 0xfb, 0x77, 0xfc, + 0xab, 0x78, 0x71, 0x7c, 0x6d, 0x73, 0x5c, 0x6c, 0x7b, 0x2e, 0xa, 0xe, + 0xf7, 0xca, 0x8b, 0xb0, 0xf7, 0xb5, 0xb2, 0xf7, 0x98, 0xb0, 0x12, 0xf7, + 0x5, 0xf1, 0xf7, 0x86, 0xf1, 0x3a, 0xf7, 0x7, 0x13, 0xf4, 0x9c, 0x16, + 0xf7, 0xe2, 0x6, 0xf7, 0x72, 0x9f, 0xf7, 0x1e, 0xb1, 0xf4, 0x3b, 0xbb, + 0x34, 0x9d, 0x1f, 0x8d, 0x7, 0x13, 0xf8, 0xb8, 0x96, 0xe3, 0xa1, 0xf7, + 0x3, 0x1a, 0xf7, 0x2f, 0xfb, 0x43, 0x99, 0x34, 0x1e, 0xfb, 0xac, 0x78, + 0x6, 0xda, 0x9c, 0x66, 0x77, 0x1f, 0xfc, 0x86, 0x7, 0x6c, 0x7f, 0x67, + 0x37, 0x89, 0x1e, 0xf7, 0x5a, 0xf7, 0xc7, 0x15, 0xeb, 0xab, 0x86, 0x81, + 0xad, 0x1f, 0x13, 0xf4, 0xbf, 0x7b, 0xbc, 0x6a, 0x39, 0x1a, 0xfb, 0x1a, + 0xfb, 0xd, 0x82, 0x49, 0x51, 0x79, 0x99, 0xb0, 0x1e, 0xf7, 0xa9, 0x4, + 0xf7, 0x70, 0x7, 0x9a, 0x8d, 0xa3, 0x9f, 0x1e, 0x95, 0x99, 0x8c, 0xa0, + 0x1b, 0x13, 0xf8, 0xd2, 0xf3, 0x78, 0xfb, 0xb, 0xfb, 0xb, 0xfb, 0xb, + 0x89, 0x6f, 0x1f, 0xe, 0xf7, 0xca, 0x7d, 0xb7, 0xf8, 0x39, 0x77, 0xf7, + 0x61, 0xb3, 0x1, 0xa7, 0xf7, 0x8, 0x3, 0xf8, 0xfb, 0xf7, 0x17, 0x15, + 0x77, 0x1d, 0xf7, 0x57, 0xdb, 0xf7, 0x4, 0xf7, 0x2d, 0xf7, 0xf, 0xd3, + 0x3b, 0x22, 0xa4, 0x1f, 0xa2, 0x6, 0x82, 0xf7, 0x75, 0x59, 0x1d, 0xf7, + 0x4c, 0xe1, 0xf7, 0x11, 0x8d, 0x8c, 0x1f, 0xe, 0xf8, 0x1, 0x8b, 0xb0, + 0xf8, 0xe0, 0xb0, 0x1, 0xf3, 0xf1, 0xf7, 0xf3, 0x58, 0x1d, 0x85, 0x96, + 0x72, 0x67, 0x1a, 0xfc, 0x7c, 0x7, 0x6c, 0x7f, 0x69, 0x3f, 0x87, 0x1e, + 0xf7, 0x52, 0xd0, 0x15, 0xf8, 0x7c, 0x7, 0x9f, 0x8b, 0xa8, 0x8b, 0xa, + 0xfb, 0xa8, 0xfb, 0x8a, 0x7b, 0x4b, 0x8c, 0x1e, 0x5b, 0x8c, 0x7f, 0x9b, + 0xad, 0x1a, 0xe, 0x7b, 0xa, 0xf7, 0xb5, 0xb4, 0xf7, 0x9a, 0xb1, 0x12, + 0xee, 0xf1, 0xf7, 0x9c, 0xa2, 0x17, 0x62, 0xa, 0x96, 0xb4, 0x1f, 0xf7, + 0x82, 0x7, 0xf7, 0x2e, 0x89, 0xde, 0x8a, 0x9a, 0x7d, 0x97, 0x3b, 0x19, + 0x6f, 0xa, 0x44, 0x80, 0x81, 0x73, 0x32, 0x1b, 0xfb, 0x2e, 0xf7, 0x68, + 0x6, 0xad, 0x97, 0x95, 0x33, 0x1d, 0x6, 0x13, 0x10, 0x78, 0x7, 0xca, + 0x86, 0xa3, 0x71, 0x6b, 0x1a, 0xfc, 0x7d, 0x7, 0x64, 0x74, 0x6e, 0x4b, + 0x84, 0x1d, 0x99, 0x1d, 0xf7, 0x7b, 0x77, 0xf7, 0x8, 0xb4, 0xf7, 0x9a, + 0xb1, 0x1, 0xee, 0xf1, 0xf7, 0x8a, 0xa2, 0xb4, 0xa4, 0x3, 0x97, 0x16, + 0xf7, 0xac, 0x9e, 0x6, 0x44, 0x8e, 0x77, 0xa1, 0xd6, 0x1a, 0xf7, 0x65, + 0x7, 0xf7, 0x25, 0x89, 0xd6, 0x8a, 0xa3, 0x81, 0x96, 0x37, 0x19, 0x6f, + 0xa, 0x40, 0x81, 0x79, 0x77, 0x39, 0x1b, 0xfb, 0x25, 0xf7, 0x68, 0x6, + 0xa9, 0x92, 0x99, 0xa4, 0x1e, 0xf7, 0x1c, 0x4e, 0xa, 0xf7, 0x23, 0xfc, + 0xaa, 0x78, 0x6, 0xca, 0x86, 0xa3, 0x71, 0x6b, 0x1a, 0xfc, 0x61, 0x7, + 0x45, 0x7f, 0x71, 0x40, 0x84, 0x1d, 0xf8, 0x1, 0x7d, 0xb3, 0xf7, 0xca, + 0x9d, 0xf7, 0xae, 0xb3, 0x1, 0xab, 0xf7, 0x6, 0xf8, 0x17, 0xec, 0x3, + 0xf8, 0x5a, 0xf7, 0xe4, 0x15, 0xcf, 0x86, 0x9f, 0x7b, 0x49, 0x98, 0xa, + 0x67, 0x46, 0x74, 0x47, 0xfb, 0x2f, 0x23, 0xf7, 0x5, 0xf7, 0x49, 0xf7, + 0x91, 0xf7, 0x27, 0xca, 0xea, 0xf7, 0x20, 0xbf, 0x28, 0x43, 0xa6, 0x1e, + 0xa2, 0x6, 0x83, 0xf7, 0x67, 0x5, 0x75, 0x6, 0x6f, 0x85, 0x6a, 0x86, + 0x83, 0x6b, 0x5d, 0xac, 0x26, 0x1b, 0xfb, 0x68, 0xfb, 0x16, 0xfb, 0x3b, + 0xfb, 0x3c, 0xfb, 0x80, 0xf7, 0x2a, 0xfb, 0xb, 0xf7, 0x6a, 0xf7, 0x2, + 0xf7, 0x19, 0xc5, 0x99, 0x1f, 0xf7, 0x53, 0x7, 0xd2, 0xa5, 0x97, 0xb7, + 0x8f, 0x1e, 0x9d, 0xfb, 0x93, 0x7, 0xe, 0x80, 0x1d, 0xf7, 0xcf, 0xb7, + 0xf7, 0xc3, 0x77, 0x1, 0xf6, 0xf1, 0xf7, 0xc3, 0xf1, 0x3, 0x9e, 0x16, + 0xf7, 0xaa, 0x9e, 0x6, 0x3d, 0x90, 0x81, 0xb3, 0xcd, 0x1a, 0xf7, 0x4d, + 0xf7, 0xc3, 0xfb, 0x4d, 0x7, 0x40, 0x87, 0x6b, 0x37, 0x87, 0x1e, 0x78, + 0xf7, 0xaa, 0x9e, 0x7, 0x3d, 0x90, 0x81, 0xae, 0xcd, 0x1a, 0xf8, 0x36, + 0x67, 0x1d, 0xfb, 0x4c, 0xfb, 0xc3, 0xf7, 0x4c, 0x67, 0x1d, 0xfc, 0x31, + 0x7, 0x40, 0x87, 0x6b, 0x37, 0x84, 0x1d, 0x73, 0xa0, 0x76, 0xf9, 0x2a, + 0x42, 0xa, 0xe, 0xab, 0x6a, 0xf7, 0xe, 0xf8, 0xd4, 0x77, 0x1, 0xf7, + 0x44, 0xf1, 0x3, 0xde, 0xf9, 0x17, 0x15, 0xdc, 0x86, 0x97, 0x73, 0x44, + 0x1a, 0xfc, 0x53, 0x7, 0x57, 0x7c, 0x7d, 0x73, 0x75, 0x8a, 0xa8, 0xa3, + 0x81, 0x1e, 0x9c, 0x84, 0x7e, 0x99, 0x6f, 0x1b, 0x6e, 0x7a, 0x6d, 0x78, + 0x7d, 0x91, 0x7b, 0x9b, 0x79, 0x1f, 0x7f, 0x96, 0xa4, 0x7e, 0xb5, 0x1b, + 0xa6, 0xf7, 0x21, 0x8e, 0xf7, 0x56, 0x1f, 0xf7, 0xf6, 0x7, 0xd5, 0x99, + 0xa0, 0xd9, 0x90, 0x1e, 0x9e, 0xfb, 0xb3, 0x7, 0xe, 0xf8, 0x1, 0x83, + 0xa, 0x1, 0xf7, 0x10, 0xf1, 0x3, 0xad, 0x16, 0xf7, 0xae, 0x9e, 0x6, + 0x3d, 0x8f, 0x7f, 0xa5, 0xd1, 0x1a, 0xf7, 0x45, 0x7, 0xa5, 0xa0, 0xf5, + 0x22, 0x5, 0xad, 0x69, 0xeb, 0x24, 0x6c, 0x1a, 0x75, 0x7a, 0x8a, 0x56, + 0x89, 0x1e, 0x78, 0xf7, 0xc5, 0x9e, 0x7, 0x52, 0x89, 0x67, 0xbe, 0x4b, + 0xc6, 0xfb, 0x7d, 0xf7, 0x8e, 0x18, 0xf7, 0x52, 0xf7, 0x50, 0xd2, 0xd1, + 0xa0, 0x8e, 0xc7, 0x90, 0x19, 0x9e, 0xfb, 0x9a, 0x78, 0x7, 0xbc, 0x89, + 0x9e, 0x89, 0x70, 0x1a, 0x69, 0x6e, 0x70, 0xfb, 0x76, 0xfb, 0x5f, 0x1e, + 0xf7, 0x57, 0x7, 0xd5, 0x99, 0xa0, 0xd9, 0x90, 0x1e, 0x9e, 0xfb, 0xb0, + 0x78, 0x7, 0xcf, 0x86, 0xa1, 0x7a, 0x3d, 0x1a, 0xfc, 0x3a, 0x7, 0x43, + 0x7f, 0x71, 0x3d, 0x84, 0x1d, 0xf7, 0x92, 0x8b, 0xb2, 0xf7, 0x1b, 0x77, + 0xf8, 0x90, 0x77, 0x1, 0xf7, 0x13, 0x5d, 0x1d, 0x96, 0xb3, 0x1f, 0xf8, + 0x59, 0x7, 0xda, 0x73, 0x1d, 0xfc, 0x59, 0x7, 0x68, 0x74, 0x6b, 0x4b, + 0x84, 0x1d, 0xf8, 0xa8, 0x83, 0xa, 0x1, 0xf7, 0x1, 0xb7, 0xf8, 0x9d, + 0xf1, 0x3, 0x5f, 0xa, 0xf8, 0x19, 0x8d, 0x7, 0xf7, 0x8d, 0xfc, 0xb6, + 0x5, 0x99, 0x6, 0xf7, 0x92, 0xf8, 0xcd, 0x5, 0x8d, 0xfc, 0x57, 0x6, + 0x4e, 0x7e, 0x69, 0x3d, 0x87, 0x1e, 0x78, 0xf7, 0xac, 0x9e, 0x7, 0x4b, + 0x8f, 0x74, 0x9e, 0xd8, 0x1a, 0xf8, 0x46, 0x7, 0xda, 0xa3, 0x91, 0xca, + 0x90, 0x1e, 0x9e, 0xfb, 0x5b, 0x7, 0xfb, 0x71, 0xfc, 0x8d, 0xfb, 0x7b, + 0xf8, 0x8d, 0x5, 0xfb, 0x5c, 0x78, 0x6, 0xd5, 0x87, 0xa2, 0x83, 0x3d, + 0x1a, 0xfc, 0x20, 0x78, 0xa, 0xe, 0xf8, 0x1, 0x95, 0x76, 0xab, 0x8a, + 0x1d, 0x12, 0xf7, 0x1, 0xb7, 0xf8, 0x33, 0xb7, 0x13, 0x78, 0x5f, 0xa, + 0xf8, 0x10, 0x8d, 0x7, 0x13, 0xb8, 0x3a, 0xa, 0xe, 0x5b, 0xa, 0x85, + 0xa, 0xf7, 0xe4, 0x70, 0xa, 0xfb, 0x1d, 0x69, 0x1d, 0xf7, 0xf, 0x61, + 0x1d, 0xf7, 0x10, 0x61, 0xa, 0xfb, 0x2, 0x44, 0x1d, 0xd6, 0xf1, 0xf1, + 0xf7, 0x3, 0x32, 0x71, 0x1d, 0x3a, 0x72, 0x1d, 0xea, 0xf7, 0x70, 0x1e, + 0xe, 0x99, 0x1d, 0xf7, 0xb4, 0xb3, 0xf7, 0xbd, 0xb0, 0x6d, 0xa, 0xa5, + 0xdc, 0x1a, 0xf7, 0x37, 0x66, 0x1d, 0xf7, 0x13, 0xfb, 0x10, 0xc0, 0xfb, + 0x1e, 0x1e, 0xfb, 0x9c, 0x78, 0x6, 0xd4, 0x84, 0x96, 0x6d, 0x74, 0x1a, + 0xfc, 0x59, 0x8d, 0xa, 0xf7, 0xcc, 0x15, 0xf7, 0x8e, 0x7, 0xac, 0x96, + 0x96, 0xa9, 0xb7, 0xf7, 0x26, 0x89, 0x74, 0x1d, 0xf8, 0x1, 0xfb, 0x46, + 0x9e, 0xf7, 0x32, 0xa2, 0x8b, 0xf8, 0xfe, 0x8b, 0xaf, 0x1, 0xc4, 0xf7, + 0x6, 0xf8, 0x16, 0x9a, 0xa, 0xf7, 0x93, 0x8a, 0x15, 0xfb, 0x33, 0xf7, + 0x21, 0xf7, 0x27, 0x79, 0xf7, 0x32, 0x1b, 0x9e, 0x7, 0xfb, 0x22, 0x99, + 0x53, 0xb9, 0x3e, 0xe7, 0x8, 0xf7, 0x0, 0x98, 0xf7, 0x24, 0xf3, 0xf7, + 0x70, 0x1a, 0xf7, 0x7a, 0xfb, 0x2d, 0xf7, 0x8, 0xfb, 0x38, 0xfb, 0x38, + 0xfb, 0x2d, 0xfb, 0x9, 0xfb, 0x79, 0xfb, 0x69, 0xf7, 0xa, 0x2e, 0xe8, + 0x72, 0x1e, 0x2a, 0xf7, 0xdf, 0x15, 0xf7, 0x79, 0xf0, 0xdc, 0xf1, 0xf1, + 0xf0, 0x3a, 0xfb, 0x79, 0xfb, 0x6f, 0x2f, 0x32, 0xfb, 0x3, 0xfb, 0x3, + 0x2f, 0xe4, 0xf7, 0x6f, 0x1e, 0xe, 0xf7, 0xca, 0x8b, 0x9e, 0xf7, 0xb3, + 0xb0, 0xf7, 0xae, 0xb0, 0x1, 0xf1, 0xf1, 0xf7, 0x7e, 0xf7, 0x1, 0x3, + 0x9c, 0x16, 0xf7, 0xa9, 0x9e, 0x6, 0x3b, 0x8f, 0x81, 0xa8, 0xce, 0x1a, + 0xf7, 0x4f, 0x7, 0xc3, 0x8d, 0xf7, 0x82, 0xfb, 0xc8, 0x5, 0xf7, 0x35, + 0x9e, 0x6, 0x62, 0x8d, 0x73, 0x9d, 0x75, 0xa6, 0xfb, 0x62, 0xf7, 0x91, + 0x18, 0xbe, 0x95, 0xf7, 0x16, 0xa3, 0xf7, 0x1a, 0x1a, 0xf7, 0x2e, 0xfb, + 0x39, 0xa0, 0x32, 0x1e, 0xfb, 0xa8, 0x78, 0x6, 0xd1, 0x84, 0x9a, 0x6f, + 0x6f, 0x1a, 0xfc, 0x63, 0x7, 0x4f, 0x87, 0x6a, 0x3a, 0x86, 0x1e, 0xf7, + 0x4f, 0xf7, 0xd8, 0x15, 0xf7, 0x80, 0x7, 0xa8, 0x94, 0x9c, 0xc0, 0xb4, + 0xf7, 0x17, 0x88, 0xfb, 0x19, 0xfb, 0x23, 0xfb, 0x2a, 0x89, 0x37, 0x8a, + 0x1e, 0xe, 0xf7, 0x5b, 0x7d, 0xaf, 0xf8, 0xf4, 0xb4, 0x12, 0xb5, 0xa1, + 0x96, 0xe1, 0xf7, 0x79, 0xf0, 0x17, 0xb5, 0x7d, 0x15, 0xa1, 0x6, 0x9b, + 0xbd, 0x9d, 0xa0, 0x9c, 0x9f, 0x80, 0x81, 0xa8, 0x1e, 0x13, 0xf8, 0x84, + 0xa0, 0xa5, 0x85, 0xab, 0x1b, 0xf7, 0x23, 0xcf, 0xeb, 0xe0, 0xf1, 0x38, + 0xc4, 0x38, 0xbc, 0x1f, 0x37, 0xbd, 0x37, 0xb5, 0xd6, 0x1a, 0xc9, 0xbe, + 0xaa, 0xbd, 0xf4, 0xb8, 0x31, 0x39, 0x9c, 0x1e, 0xa4, 0x6, 0x88, 0x86, + 0x1d, 0x1b, 0x7d, 0x77, 0x96, 0x94, 0x71, 0x1f, 0x92, 0x77, 0x74, 0x92, + 0x71, 0x55, 0xa, 0x13, 0x70, 0x74, 0x6, 0xe, 0xf7, 0x92, 0xa0, 0x76, + 0xf9, 0x0, 0xb5, 0x1, 0xf7, 0x92, 0xf1, 0x3, 0xf7, 0x34, 0x16, 0xf7, + 0xb8, 0x9e, 0x6, 0x37, 0x8e, 0x7f, 0xa8, 0xcf, 0x1a, 0xf8, 0x89, 0xc1, + 0x7, 0xf7, 0x2, 0xa7, 0x79, 0xfb, 0x2, 0xa0, 0x1f, 0xa3, 0x6, 0x85, + 0xf7, 0x3e, 0x5, 0xfc, 0xc8, 0x6, 0x85, 0xfb, 0x3e, 0x5, 0xa3, 0x6, + 0xf7, 0x1, 0xa1, 0xa6, 0x9e, 0xf7, 0x2, 0x1b, 0xc1, 0xfc, 0x8b, 0x6, + 0x4d, 0x88, 0x6b, 0x30, 0x84, 0x1d, 0x6e, 0xa, 0x1, 0xf3, 0xf1, 0xf7, + 0xfd, 0xb7, 0x3, 0x99, 0xf9, 0x17, 0x2d, 0x1d, 0x63, 0x3f, 0xfb, 0x27, + 0x49, 0x1d, 0xf8, 0x1, 0x95, 0x76, 0xf9, 0x35, 0x77, 0x12, 0x9b, 0xf9, + 0x3d, 0x17, 0xf8, 0x4, 0x80, 0x15, 0x9a, 0x6, 0xf7, 0x86, 0xf8, 0xe9, + 0x5, 0x13, 0x60, 0x97, 0xa9, 0x97, 0xa3, 0xbb, 0x8e, 0x8, 0x9e, 0xfb, + 0x61, 0x78, 0x7, 0xb1, 0x89, 0xae, 0x7e, 0x62, 0x1a, 0xfb, 0x3a, 0xfc, + 0x3e, 0x5, 0xfb, 0x42, 0xf8, 0xf, 0x79, 0xb4, 0x9a, 0x1a, 0xab, 0x9e, + 0x97, 0xc3, 0x8e, 0x1e, 0x9e, 0xfb, 0x9e, 0x78, 0x7, 0xba, 0x89, 0x9f, + 0x77, 0x98, 0x6f, 0x8, 0xe, 0xf8, 0xdf, 0x95, 0x76, 0xf9, 0x35, 0x77, + 0x9f, 0x8b, 0x12, 0x90, 0xfa, 0x33, 0x17, 0xf7, 0xc1, 0x80, 0x15, 0x13, + 0xf0, 0x9a, 0x6, 0xf7, 0x2e, 0xf8, 0x3b, 0xb6, 0xfb, 0x1, 0xdd, 0xfb, + 0x66, 0xae, 0x23, 0x19, 0x9a, 0x6, 0xc6, 0xf7, 0x55, 0xd9, 0xf7, 0x60, + 0xd0, 0xf7, 0x4e, 0x99, 0xb2, 0x9d, 0xa3, 0xbc, 0x93, 0x8, 0x9e, 0xfb, + 0x5a, 0x78, 0x7, 0xad, 0x88, 0xac, 0x7d, 0x64, 0x1a, 0x76, 0x83, 0x6d, + 0x83, 0x76, 0x1e, 0xfb, 0xf, 0xfb, 0xdd, 0x5, 0xfb, 0x27, 0xf8, 0x10, + 0x7d, 0x97, 0x9c, 0x1a, 0xaf, 0xbb, 0x97, 0xaa, 0x1e, 0x9e, 0xfb, 0x9f, + 0x78, 0x7, 0xc0, 0x8a, 0x98, 0x7b, 0xac, 0x38, 0xae, 0x43, 0x18, 0x20, + 0xfb, 0xae, 0x5, 0xfb, 0x29, 0xf8, 0x19, 0x83, 0x92, 0x99, 0x1a, 0xa5, + 0xa1, 0x9b, 0xb8, 0x8d, 0x1e, 0x9e, 0xfb, 0x89, 0x78, 0x7, 0xc4, 0x86, + 0x97, 0x64, 0xab, 0x38, 0xb1, 0x27, 0xf5, 0xfb, 0xa6, 0xbe, 0xfb, 0x2d, + 0x8, 0xe, 0xf8, 0x1, 0x8b, 0x9e, 0xf9, 0x4, 0x9e, 0x1, 0x95, 0x16, + 0xf7, 0x7d, 0x9e, 0x6, 0x64, 0x66, 0x9a, 0xab, 0x9e, 0xaa, 0xb2, 0xa0, + 0xa5, 0x1f, 0xf7, 0xb, 0xf7, 0x1e, 0xea, 0xfb, 0x16, 0x5, 0x9b, 0x74, + 0xae, 0x55, 0x79, 0x1a, 0x6c, 0x70, 0x7e, 0x59, 0x1e, 0x78, 0xf7, 0xbd, + 0x9e, 0x7, 0x57, 0x77, 0xa8, 0xc2, 0x64, 0x1f, 0xfb, 0x54, 0xf7, 0x9c, + 0xf7, 0x26, 0xf7, 0x40, 0x5, 0xe2, 0xd1, 0xa5, 0x9c, 0xc0, 0x1b, 0x9e, + 0xfb, 0x82, 0x78, 0x7, 0xad, 0xaf, 0x7f, 0x6c, 0x78, 0x7a, 0x77, 0x74, + 0x6e, 0x1f, 0xfb, 0x5, 0xfb, 0x14, 0x5, 0xfb, 0x1, 0xf7, 0x24, 0x79, + 0xac, 0x9f, 0x1a, 0xa9, 0xa3, 0x97, 0xbf, 0x1e, 0x9e, 0xfb, 0xc2, 0x78, + 0x7, 0xc5, 0xa0, 0x7a, 0xfb, 0x2a, 0xf1, 0x1f, 0xf7, 0x1, 0xfb, 0x2a, + 0x5, 0xfb, 0xac, 0xfb, 0x80, 0x80, 0x70, 0x54, 0x1b, 0xe, 0xf8, 0x1, + 0xa0, 0x76, 0xf9, 0x2a, 0x72, 0xa, 0xa6, 0xd3, 0x1a, 0xf7, 0x4c, 0x7, + 0xf7, 0x28, 0xf7, 0x6c, 0xd0, 0xf5, 0xac, 0x99, 0xaf, 0x8f, 0x19, 0x9e, + 0xfb, 0x6f, 0x78, 0x7, 0xaa, 0xb1, 0x7f, 0x75, 0x1d, 0xfb, 0x6c, 0xfb, + 0x28, 0xf7, 0x68, 0x75, 0xa, 0x96, 0xb9, 0x8d, 0x1e, 0x9e, 0xfb, 0xac, + 0x78, 0x7, 0xb8, 0x87, 0x9a, 0x7e, 0xf1, 0xfb, 0x2a, 0xf7, 0x17, 0xfb, + 0x4a, 0x18, 0xfb, 0x44, 0x7, 0x46, 0x88, 0x6f, 0x29, 0x89, 0x1e, 0xe, + 0x7b, 0xa, 0xf8, 0xde, 0xb1, 0x1, 0x94, 0xf8, 0xe0, 0x3f, 0x1d, 0xe, + 0x93, 0x1d, 0xe3, 0xd7, 0x3, 0xe3, 0xfb, 0x30, 0x15, 0xf7, 0x67, 0xa4, + 0x3f, 0x6, 0x5a, 0x81, 0xb3, 0x97, 0x1f, 0xf9, 0x34, 0x7, 0x99, 0x95, + 0xa9, 0xb8, 0x1e, 0xdb, 0xa4, 0xfb, 0x67, 0x6, 0xe, 0x3c, 0xfb, 0x23, + 0x76, 0xf7, 0x3f, 0x7a, 0x1d, 0xf7, 0x7e, 0xfb, 0x38, 0x15, 0xb6, 0x6, + 0xfb, 0x7c, 0xf9, 0xdc, 0x5, 0x60, 0x6, 0xe, 0x93, 0x1d, 0xf7, 0x3d, + 0xd7, 0x3, 0xad, 0xfb, 0x17, 0x15, 0x72, 0xf7, 0x67, 0xf9, 0xc6, 0xfb, + 0x67, 0x72, 0xd7, 0x7, 0xbc, 0x95, 0x63, 0x7f, 0x1f, 0xfd, 0x34, 0x7, + 0x7d, 0x81, 0x6d, 0x5e, 0x1e, 0xe, 0xf7, 0x4, 0xf9, 0x2a, 0x77, 0x1, + 0xa3, 0xf7, 0xbd, 0x15, 0xcf, 0x6, 0xf7, 0x23, 0xf7, 0xb5, 0xf7, 0x23, + 0xfb, 0xb5, 0x5, 0xcf, 0x6, 0xfb, 0x48, 0xf8, 0x1, 0x5, 0x4d, 0x6, + 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x8b, 0xf8, 0x88, 0x3, 0x40, 0x4, 0x59, + 0xf8, 0x88, 0xbd, 0x7, 0xe, 0x92, 0x1d, 0x9e, 0xf7, 0x73, 0x3, 0xf7, + 0x5e, 0xf8, 0x8f, 0x15, 0xb3, 0x6, 0xfb, 0x1d, 0xf7, 0x24, 0x5, 0xa2, + 0x72, 0x7e, 0x94, 0xa, 0xa6, 0x79, 0x97, 0x7d, 0xa, 0x4f, 0x1d, 0x12, + 0xb0, 0xe3, 0x4a, 0xe3, 0xf7, 0x1f, 0xdc, 0x13, 0xd4, 0xf7, 0xb3, 0xf7, + 0xaa, 0x15, 0xfb, 0x2f, 0x7, 0x5d, 0x61, 0x6e, 0x55, 0x66, 0x6e, 0xaa, + 0xba, 0x1e, 0x8d, 0x7, 0xad, 0x96, 0xcd, 0xf7, 0x2b, 0xbd, 0x1e, 0x8c, + 0xfb, 0x6b, 0x15, 0x43, 0x90, 0xb5, 0x8a, 0x2f, 0xa, 0x40, 0xa, 0xef, + 0xfb, 0x29, 0x1e, 0x13, 0xcc, 0x3e, 0x1d, 0x13, 0xb4, 0xaa, 0xb1, 0x9d, + 0xac, 0xa9, 0xba, 0x80, 0x43, 0x1e, 0x58, 0x7, 0xfb, 0x37, 0x4b, 0x34, + 0x5f, 0x27, 0x1a, 0x48, 0xbf, 0x66, 0xc1, 0xc2, 0xc0, 0xb3, 0xac, 0xb0, + 0x1e, 0xe, 0x81, 0xab, 0xf8, 0xb, 0xca, 0xf7, 0x73, 0x77, 0x1, 0xd0, + 0xdf, 0xf7, 0x77, 0xe3, 0x3, 0xf7, 0x2d, 0xd1, 0x15, 0xf7, 0x90, 0x7, + 0xc4, 0xcf, 0x9d, 0xab, 0xe6, 0xaf, 0x24, 0x2e, 0x49, 0x7b, 0xfb, 0x5, + 0xfb, 0x7, 0x72, 0x44, 0x98, 0xae, 0x1e, 0xf7, 0xc9, 0x4, 0xf7, 0xc2, + 0x7, 0x86, 0x8d, 0x6b, 0x1d, 0x6c, 0x6d, 0x1f, 0xfc, 0x91, 0x7, 0x66, + 0xf4, 0x70, 0xbd, 0xf7, 0x4d, 0xc6, 0xf7, 0x32, 0xe5, 0xf6, 0x52, 0xf7, + 0x7, 0xfb, 0xd, 0x3f, 0x56, 0x51, 0x74, 0x85, 0x1e, 0xe, 0xe2, 0x81, + 0xd3, 0xf8, 0x5, 0xa8, 0x1, 0xa4, 0xd8, 0x3, 0xf8, 0x30, 0xf7, 0x27, + 0x15, 0x63, 0x1d, 0x93, 0x79, 0x6d, 0x93, 0x1f, 0x5f, 0x97, 0x99, 0x73, + 0xa5, 0x1b, 0xa9, 0x9b, 0xa0, 0xa2, 0x9d, 0x81, 0xaa, 0x6d, 0xa0, 0x1f, + 0x9b, 0x72, 0x5b, 0x9a, 0x67, 0x1b, 0xfb, 0x0, 0xfb, 0x8, 0x38, 0xfb, + 0x38, 0xfb, 0x32, 0xf6, 0x4a, 0xdb, 0xdc, 0xcc, 0xb6, 0xf7, 0x6, 0xc1, + 0x1f, 0xe, 0x81, 0xbf, 0xf8, 0x1a, 0xa7, 0xf7, 0x78, 0x77, 0x1, 0xa6, + 0xe1, 0xf7, 0x77, 0xdf, 0x3, 0xf7, 0xe8, 0xf1, 0x15, 0x67, 0x83, 0x64, + 0x73, 0x61, 0x1b, 0x49, 0x43, 0xc3, 0xf7, 0x29, 0xf7, 0x1c, 0xcf, 0xbc, + 0xc3, 0xba, 0xbc, 0x6b, 0x47, 0x92, 0x1f, 0xfb, 0xe7, 0x4, 0x8f, 0x88, + 0xc0, 0x9e, 0xb9, 0x9b, 0xbb, 0x9c, 0x19, 0x9b, 0x7, 0x48, 0x86, 0x8b, + 0xa9, 0xb4, 0x1a, 0xf8, 0xc1, 0x7, 0x86, 0x8d, 0x5b, 0x7a, 0x5a, 0x7d, + 0x59, 0x6f, 0x1d, 0x93, 0x95, 0x82, 0xa, 0x6c, 0x6d, 0x1f, 0xfb, 0x26, + 0x7, 0xa8, 0x6a, 0x6d, 0x99, 0x60, 0x1b, 0xfb, 0x4, 0x2c, 0xfb, 0x7, + 0xfb, 0x17, 0xfb, 0x60, 0xf7, 0x23, 0x77, 0xb2, 0xd5, 0xb0, 0xb0, 0xa6, + 0x9d, 0x1f, 0x8d, 0x6, 0xe, 0x87, 0x1d, 0xf6, 0xaf, 0x1, 0xae, 0xd0, + 0xf7, 0x5b, 0xf1, 0x3, 0x37, 0x1d, 0x58, 0xfb, 0x4d, 0xfb, 0x22, 0xd7, + 0x2f, 0x2b, 0xa, 0x3d, 0x1d, 0xe, 0x73, 0xa0, 0x76, 0xf8, 0x36, 0xab, + 0xf7, 0x61, 0xa7, 0x1, 0xf2, 0xdf, 0x3, 0x9f, 0x16, 0xf7, 0x98, 0x9a, + 0x6, 0x2f, 0x8d, 0x8a, 0xaf, 0xc8, 0x1a, 0xf7, 0xc4, 0xf7, 0xe, 0xab, + 0xfb, 0xf, 0xf7, 0x8, 0x7, 0xb0, 0x90, 0xbf, 0xc2, 0xa1, 0x98, 0x7a, + 0x79, 0x97, 0x1e, 0x77, 0x98, 0x97, 0x77, 0xa1, 0x1b, 0x9f, 0xa2, 0x98, + 0xa8, 0xad, 0x5f, 0xa6, 0x53, 0xfb, 0x48, 0x8b, 0xfb, 0x45, 0x53, 0x1f, + 0x38, 0x6b, 0xde, 0xfb, 0xc4, 0x6, 0x3e, 0x7a, 0x78, 0x49, 0x88, 0x1e, + 0xe, 0xfb, 0x6e, 0xc4, 0xf7, 0x26, 0xd4, 0xe6, 0xa4, 0xf7, 0x8c, 0xb2, + 0x6e, 0xa7, 0x1, 0xa7, 0xd1, 0x6e, 0xde, 0xf7, 0x45, 0xd8, 0xa6, 0xa7, + 0x3, 0xf7, 0x27, 0x89, 0x15, 0x6c, 0x66, 0x79, 0x77, 0x6c, 0x1a, 0x6b, + 0xa1, 0x64, 0xeb, 0xf7, 0x9, 0xef, 0xb8, 0xbf, 0xb8, 0x5a, 0x8c, 0x41, + 0x8e, 0x1e, 0x2d, 0x8e, 0x76, 0x8a, 0x5b, 0x96, 0x8, 0x90, 0xf7, 0xec, + 0x15, 0x3b, 0xa6, 0x33, 0xd8, 0xcf, 0x90, 0xcf, 0xbe, 0xbe, 0x7a, 0xe3, + 0x36, 0x67, 0x64, 0x75, 0x47, 0x1e, 0x71, 0xfb, 0xe9, 0x15, 0x70, 0x98, + 0x71, 0x97, 0xa7, 0x1a, 0x9d, 0x8b, 0x96, 0xe4, 0xdb, 0x1e, 0x4f, 0xa6, + 0x6a, 0xb7, 0xc6, 0x1a, 0xf7, 0xf, 0xe3, 0xb7, 0xe0, 0xae, 0xad, 0x83, + 0x7c, 0xa6, 0x1e, 0x80, 0x9f, 0x9e, 0x8c, 0x9b, 0x1b, 0xd8, 0x64, 0x38, + 0x6, 0x94, 0x74, 0x95, 0x77, 0x5a, 0x1a, 0xfb, 0x0, 0x24, 0x64, 0x53, + 0x1e, 0x7e, 0x68, 0x90, 0x85, 0x1b, 0x77, 0x88, 0x63, 0x62, 0x78, 0x1a, + 0x74, 0xbc, 0x87, 0xa8, 0x1e, 0xf7, 0x15, 0x85, 0x5, 0xf6, 0x86, 0x99, + 0x41, 0x6f, 0x1a, 0xfb, 0x5, 0xfb, 0x3a, 0x53, 0x31, 0x26, 0x3f, 0xb7, + 0xc0, 0xb9, 0xba, 0xb1, 0xbe, 0xb1, 0x1e, 0xe, 0xa0, 0x76, 0xf8, 0x2a, + 0xc1, 0xf7, 0x73, 0x77, 0x1, 0xd4, 0xdf, 0xf7, 0x4e, 0xdf, 0x3, 0x94, + 0x16, 0xf7, 0x6c, 0x9a, 0x6, 0x5a, 0x90, 0x78, 0x9a, 0xd8, 0x1a, 0xf7, + 0x7b, 0x7, 0xbb, 0xb4, 0xb2, 0x9a, 0xa8, 0x1b, 0xc2, 0xa1, 0x64, 0x48, + 0x1f, 0xfb, 0x50, 0x7, 0x3e, 0x78, 0x7c, 0x5a, 0x86, 0x1e, 0x7c, 0xf7, + 0x68, 0x9a, 0x7, 0x59, 0x94, 0x81, 0x9a, 0xd4, 0x1a, 0xf7, 0x51, 0x7, + 0xb3, 0x8a, 0xf7, 0xb, 0xfb, 0xf, 0x4f, 0x5a, 0x6b, 0x59, 0x68, 0x1e, + 0x89, 0xf7, 0xc2, 0x6, 0x86, 0x8e, 0x5b, 0x7a, 0x59, 0x7d, 0x5e, 0x7e, + 0x19, 0x71, 0x7, 0x8c, 0x8e, 0x96, 0x82, 0xa, 0x76, 0x6d, 0x1f, 0xfc, + 0x57, 0x7, 0x42, 0x81, 0x7a, 0x55, 0x84, 0x1e, 0xe, 0x8f, 0xa, 0xf8, + 0xd9, 0xf1, 0x12, 0xd9, 0xf0, 0x37, 0xdf, 0x13, 0xe0, 0x31, 0x1d, 0x57, + 0x78, 0x54, 0x78, 0x57, 0x7a, 0x19, 0x7c, 0x7, 0x8d, 0x98, 0x9c, 0x8d, + 0x99, 0x1b, 0x13, 0xd0, 0x9b, 0x9e, 0x80, 0x50, 0x1f, 0xfb, 0x68, 0x7, + 0x3d, 0x7a, 0x7b, 0x4d, 0x88, 0x1e, 0x13, 0xe0, 0xc9, 0xf8, 0xfd, 0x64, + 0x1d, 0x3c, 0xfb, 0x6e, 0xad, 0xf9, 0x91, 0xf1, 0x12, 0xf3, 0xf0, 0x2b, + 0xdf, 0x13, 0xd0, 0xab, 0xf8, 0x1a, 0x15, 0x8d, 0x9a, 0x98, 0x8d, 0x99, + 0x1b, 0x9b, 0x9e, 0x80, 0x50, 0x1f, 0xfc, 0x5, 0x7, 0x39, 0x8b, 0x52, + 0x59, 0x78, 0x80, 0x9b, 0x9b, 0x7e, 0x1e, 0x99, 0x7f, 0x7e, 0x99, 0x76, + 0x1b, 0x78, 0x76, 0x7c, 0x74, 0x66, 0xb9, 0x78, 0xba, 0xf7, 0x15, 0xb4, + 0xf0, 0xf7, 0x9, 0x1f, 0x8c, 0xf8, 0x5d, 0x85, 0x8e, 0x57, 0x77, 0x57, + 0x79, 0x57, 0x7b, 0x19, 0x13, 0xe0, 0xc7, 0xf7, 0x76, 0x64, 0x1d, 0xa0, + 0x76, 0xf8, 0x56, 0x77, 0xf7, 0x91, 0x77, 0x1, 0xdd, 0xdf, 0x3, 0x92, + 0x16, 0xf7, 0x7e, 0x9a, 0x6, 0x77, 0x8c, 0x5, 0x6a, 0x8d, 0x75, 0x9d, + 0xb4, 0x1a, 0xf7, 0x3f, 0x8d, 0x7, 0xf7, 0x1e, 0xfb, 0x4c, 0x5, 0x97, + 0x7a, 0x94, 0x82, 0x84, 0x1a, 0x7e, 0x7e, 0x88, 0x83, 0x1e, 0x78, 0x7c, + 0xf7, 0x6e, 0x9a, 0x6, 0x70, 0x8d, 0x64, 0x92, 0x58, 0xcb, 0xfb, 0x2d, + 0xf7, 0x56, 0x18, 0xa8, 0xa6, 0x5, 0xf7, 0x12, 0xf7, 0x1b, 0xa7, 0x8b, + 0xc0, 0x1b, 0x9a, 0xfb, 0x60, 0x7d, 0x7, 0xb5, 0x93, 0x83, 0x80, 0x82, + 0x83, 0x80, 0x7c, 0x7d, 0x1f, 0x63, 0x69, 0x50, 0x54, 0x67, 0x6c, 0x89, + 0x8d, 0x18, 0xf8, 0x34, 0x7, 0x87, 0x8d, 0x56, 0x7a, 0x56, 0x7d, 0x5a, + 0x6f, 0x1d, 0x93, 0x94, 0x8c, 0x98, 0x1b, 0xb2, 0x91, 0x71, 0x5e, 0x1f, + 0xfc, 0x70, 0x7, 0x69, 0x83, 0x79, 0x48, 0x80, 0x1e, 0xe, 0x8f, 0xa, + 0xf9, 0x3f, 0x77, 0x1, 0xed, 0xdf, 0x3, 0x9e, 0x16, 0xf7, 0x82, 0x9a, + 0x6, 0x51, 0x8e, 0x7a, 0x9d, 0xc5, 0x1a, 0xf8, 0xdf, 0x5d, 0xa, 0xfc, + 0x67, 0x7, 0x54, 0x77, 0x74, 0x50, 0x84, 0x1d, 0xf8, 0x39, 0xa0, 0x76, + 0xf8, 0x2c, 0xbf, 0x1, 0xe1, 0xdf, 0xf7, 0x4c, 0xdf, 0xf7, 0x4c, 0xdf, + 0x14, 0x38, 0x9b, 0x16, 0xf7, 0x72, 0x9a, 0x6, 0x68, 0x8c, 0x6a, 0x98, + 0xcb, 0x1a, 0xf7, 0x94, 0x7, 0x90, 0xb9, 0xc1, 0xd0, 0xbf, 0x9c, 0x64, + 0x49, 0x1e, 0xfb, 0x63, 0x7, 0x4a, 0x74, 0x7e, 0x5e, 0x88, 0x1e, 0x7c, + 0xf7, 0x74, 0x9a, 0x7, 0x62, 0x8c, 0x6c, 0x9c, 0xca, 0x1a, 0xf7, 0x8f, + 0x7, 0xad, 0xa1, 0xad, 0xa6, 0xc2, 0x1b, 0xd3, 0x8c, 0x50, 0x58, 0x1f, + 0xfb, 0x5d, 0x7, 0x4b, 0x7b, 0x7f, 0x59, 0x85, 0x1e, 0x7c, 0xf7, 0x6f, + 0x9a, 0x7, 0x71, 0x8d, 0x5, 0x5f, 0x92, 0x8c, 0xac, 0xb3, 0x1a, 0xf7, + 0x4d, 0x7, 0xd5, 0x7d, 0xf3, 0x23, 0x3c, 0x4e, 0x4f, 0x73, 0x76, 0x1e, + 0xb5, 0x80, 0x6c, 0xb5, 0x4a, 0x1b, 0x55, 0x62, 0x6b, 0x5e, 0x50, 0x1f, + 0xd6, 0x7, 0x84, 0x8d, 0x5d, 0x7a, 0x59, 0x7c, 0x5c, 0x7e, 0x19, 0x7a, + 0x7, 0x8d, 0x93, 0x98, 0x53, 0x1d, 0x4c, 0x1f, 0xfb, 0x87, 0x7, 0x48, + 0x6d, 0x7f, 0x63, 0x8a, 0x1e, 0xe, 0xa0, 0x76, 0xf8, 0x2a, 0xc2, 0x73, + 0xa, 0xa5, 0xbe, 0x1a, 0xf7, 0x91, 0x7e, 0xa, 0xfb, 0x6e, 0x7, 0x50, + 0x71, 0x7e, 0x82, 0x1d, 0xa4, 0xba, 0x1a, 0xf7, 0x6f, 0x46, 0xa, 0xe, + 0x7f, 0xa7, 0xf8, 0x35, 0xa7, 0x1, 0xb8, 0xe5, 0xf7, 0x82, 0xe5, 0x3, + 0xa8, 0xf7, 0x7a, 0x15, 0xfb, 0x1b, 0xe5, 0x22, 0x65, 0x1d, 0xf7, 0x1d, + 0xee, 0xf7, 0x25, 0x2d, 0xe4, 0xfb, 0x17, 0xfb, 0x1a, 0x39, 0x20, 0xfb, + 0xf, 0x1e, 0xe5, 0xa0, 0x15, 0xf3, 0xca, 0xd8, 0xca, 0xe7, 0xb6, 0x37, + 0x80, 0xa, 0x39, 0x4c, 0x58, 0xfb, 0xc, 0x83, 0xf7, 0x33, 0xd5, 0x1e, + 0xe, 0x8e, 0x1d, 0x1, 0xd6, 0xdf, 0xf7, 0x75, 0xe1, 0x3, 0xf7, 0x33, + 0xac, 0x15, 0x5f, 0x1d, 0x76, 0x1f, 0x89, 0x8d, 0x5, 0xd4, 0x7, 0x85, + 0x8d, 0x5b, 0x78, 0x5b, 0x7a, 0x5b, 0x7c, 0x19, 0x7b, 0x7, 0x8c, 0x94, + 0x95, 0x8b, 0x94, 0x1b, 0xae, 0x8e, 0x7a, 0x63, 0x1f, 0xfc, 0x5e, 0x7, + 0x60, 0x87, 0x6c, 0x49, 0x86, 0x1e, 0x7a, 0xf7, 0x86, 0x9d, 0x7, 0x43, + 0x7b, 0xa1, 0xc5, 0x1f, 0xf7, 0x63, 0x4, 0x5a, 0xa, 0xfb, 0x58, 0x76, + 0xf7, 0x63, 0xc8, 0xf8, 0x11, 0xa7, 0x1, 0xa3, 0xe1, 0xf7, 0x7b, 0xdf, + 0x3, 0xf7, 0x90, 0xfb, 0x5c, 0x15, 0x7a, 0xf7, 0x80, 0x99, 0x7, 0x5e, + 0x95, 0x79, 0x9b, 0xc7, 0x1a, 0xf8, 0xd1, 0x7, 0x84, 0x8f, 0x51, 0x68, + 0x5, 0xa1, 0x64, 0x74, 0x98, 0x58, 0x1b, 0xfb, 0x11, 0x29, 0xfb, 0x2, + 0xfb, 0x1e, 0xfb, 0x2b, 0xd6, 0x44, 0xe4, 0xc8, 0xd1, 0xb5, 0xa9, 0x9c, + 0x1f, 0x90, 0xfb, 0x44, 0x6, 0x59, 0x7d, 0x6a, 0x40, 0x88, 0x1e, 0xe4, + 0xf7, 0xdb, 0x15, 0x8a, 0x6b, 0x8b, 0x7b, 0x57, 0x78, 0x8, 0x84, 0x79, + 0x7a, 0x89, 0x7c, 0x1b, 0x32, 0x64, 0xea, 0xe7, 0xf7, 0xd, 0xc1, 0xd4, + 0xdc, 0xea, 0x8c, 0x44, 0x6f, 0x1f, 0xe, 0x73, 0xa0, 0x76, 0xf8, 0x21, + 0xca, 0x55, 0xc1, 0x12, 0xd7, 0xdf, 0x13, 0xd0, 0x90, 0x16, 0xf7, 0x84, + 0x9a, 0x6, 0x58, 0x8d, 0x69, 0x99, 0xd0, 0x1a, 0xf7, 0x6b, 0x7, 0xab, + 0xb7, 0xbd, 0xa3, 0x98, 0x94, 0x81, 0x82, 0x95, 0x1e, 0x83, 0x95, 0x95, + 0x83, 0x9c, 0x1b, 0x13, 0xb0, 0xa3, 0x99, 0x9e, 0xa4, 0xac, 0x77, 0xa0, + 0x69, 0x65, 0x69, 0x77, 0x44, 0x5c, 0x1f, 0x89, 0xe4, 0x6, 0x86, 0x8d, + 0x5a, 0x77, 0x59, 0x79, 0x5a, 0x7b, 0x19, 0x7b, 0x7, 0x8d, 0x94, 0x96, + 0x53, 0x1d, 0x50, 0x1f, 0xfb, 0x7e, 0x7, 0x4b, 0x7b, 0x80, 0x54, 0x81, + 0x1e, 0xe, 0xab, 0x7d, 0xa1, 0xf8, 0x3c, 0xa2, 0x87, 0x77, 0x12, 0xc9, + 0xc9, 0xf7, 0x2e, 0xd1, 0x57, 0x9a, 0x13, 0xd8, 0xbe, 0x81, 0x15, 0x99, + 0x91, 0x5, 0x94, 0x91, 0x99, 0x8e, 0x97, 0x1b, 0x9c, 0x8c, 0x9d, 0x84, + 0xa1, 0x86, 0x8, 0x87, 0x9a, 0x9b, 0x88, 0x9d, 0x1b, 0xcb, 0xdc, 0xb5, + 0xe2, 0xc7, 0x68, 0x66, 0xa, 0x1e, 0x13, 0xd4, 0xb7, 0xb4, 0x76, 0x25, + 0xa1, 0x1f, 0x9a, 0x6, 0x13, 0xb4, 0xf7, 0x1d, 0x80, 0x7, 0x87, 0x88, + 0x7c, 0x84, 0x82, 0x1b, 0x81, 0x80, 0x91, 0x91, 0x7b, 0x1f, 0x8f, 0x7f, + 0x7d, 0x7c, 0x1d, 0xc5, 0x6a, 0x5, 0x13, 0xd8, 0xab, 0x79, 0x9f, 0x73, + 0x6b, 0x1a, 0x52, 0x5c, 0x95, 0xa, 0x7a, 0x6, 0xe, 0x3c, 0x81, 0xbf, + 0xf8, 0x2, 0xab, 0x1, 0xd1, 0xdf, 0x3, 0xf7, 0x9e, 0xd8, 0x15, 0x7e, + 0x80, 0x79, 0x75, 0x6b, 0x1b, 0x58, 0x8b, 0xc6, 0xaa, 0x1f, 0xf7, 0xa8, + 0xf0, 0xab, 0x26, 0xf7, 0x12, 0x7, 0x93, 0x8b, 0x90, 0x84, 0x1e, 0x66, + 0x56, 0x7c, 0x6b, 0x65, 0x64, 0x8, 0x75, 0x75, 0x75, 0x85, 0x7f, 0x1a, + 0x88, 0x8d, 0x88, 0x8d, 0x8a, 0x1e, 0xc0, 0xfb, 0xb7, 0x6, 0x27, 0xb4, + 0x70, 0xbe, 0xb9, 0xba, 0xac, 0xb6, 0xa3, 0x1e, 0xe, 0x81, 0xc7, 0xf8, + 0x24, 0x90, 0xa, 0xf7, 0xe6, 0x84, 0x15, 0x8d, 0x89, 0xba, 0x9c, 0xb1, + 0x99, 0xc1, 0x99, 0x19, 0x32, 0xa, 0xfb, 0x75, 0x52, 0xa, 0x7d, 0x2c, + 0x1d, 0x9d, 0xbb, 0x8f, 0xb2, 0xb2, 0x1e, 0xb6, 0xb6, 0x5, 0xe, 0x92, + 0x76, 0xf8, 0x64, 0x77, 0x1, 0x9e, 0xf8, 0x47, 0x15, 0x9f, 0x8a, 0x9f, + 0x7b, 0x9a, 0x6d, 0xaf, 0x44, 0xeb, 0xfb, 0x72, 0xa3, 0x4d, 0x8, 0x60, + 0x9b, 0x8d, 0x87, 0x94, 0x1b, 0x92, 0x94, 0xa2, 0xa6, 0x96, 0x1f, 0xf7, + 0x14, 0xf7, 0xcb, 0xa3, 0xc6, 0x92, 0xa5, 0xad, 0x8e, 0x19, 0x9a, 0xfb, + 0x1f, 0x7c, 0x7, 0xa4, 0x8a, 0xa1, 0x78, 0x74, 0x1a, 0x67, 0x44, 0xfb, + 0x26, 0x69, 0x2b, 0x1e, 0x25, 0xf7, 0x8a, 0x5, 0x88, 0x93, 0x85, 0x9a, + 0x97, 0x1a, 0xa4, 0xa1, 0x98, 0xa3, 0x8d, 0x1e, 0x9a, 0xfb, 0x58, 0x7, + 0xe, 0xf8, 0x1, 0x92, 0x76, 0xf8, 0x64, 0x77, 0x12, 0xa0, 0xf7, 0x48, + 0xf8, 0x6, 0xf7, 0xf, 0x17, 0xa0, 0xf8, 0x47, 0x15, 0xa4, 0x89, 0x93, + 0x74, 0x9f, 0x5b, 0xf7, 0x1b, 0xfb, 0xe0, 0x18, 0x69, 0x99, 0x90, 0x81, + 0x92, 0x1b, 0x91, 0x90, 0x96, 0xa7, 0x99, 0x1f, 0xf7, 0x4, 0xf7, 0x84, + 0xe6, 0xfb, 0x80, 0x5, 0x67, 0x99, 0x8d, 0x84, 0x93, 0x1b, 0x93, 0x8f, + 0x95, 0xb2, 0x9b, 0x1f, 0xf7, 0x1e, 0xf7, 0xe4, 0x9a, 0xb0, 0x90, 0x9f, + 0xa0, 0x92, 0x19, 0x13, 0x70, 0x9a, 0xfb, 0xf, 0x7c, 0x7, 0xa3, 0x86, + 0x9f, 0x7d, 0x73, 0x1a, 0x7f, 0x85, 0x70, 0x80, 0x72, 0x1e, 0x31, 0xfb, + 0x68, 0x3b, 0xf7, 0x6a, 0x5, 0x7c, 0xb2, 0x85, 0x8c, 0x9d, 0x1a, 0xa8, + 0xa4, 0x98, 0xac, 0x90, 0x1e, 0x9a, 0xfb, 0x5f, 0x7c, 0x7, 0xb4, 0x86, + 0x96, 0x84, 0xb0, 0xfb, 0x5, 0x30, 0xfb, 0x5b, 0x18, 0x5d, 0xf7, 0x14, + 0x50, 0xf7, 0x9, 0xae, 0x1a, 0xa7, 0xa2, 0x99, 0xa2, 0x8d, 0x1e, 0x9a, + 0xfb, 0x48, 0x7, 0xe, 0xa0, 0x76, 0xf8, 0x59, 0x77, 0x12, 0x9c, 0xf7, + 0x25, 0xf7, 0x8, 0xf7, 0x5d, 0x17, 0x9c, 0x16, 0xf7, 0x25, 0x9a, 0x6, + 0x7a, 0x76, 0x95, 0x9d, 0x89, 0x1f, 0x96, 0x99, 0xa0, 0x91, 0x94, 0x1e, + 0x13, 0xf0, 0xda, 0xf7, 0x5, 0xdc, 0xfb, 0x6, 0x5, 0x8f, 0x86, 0x97, + 0x7f, 0x7c, 0x1a, 0x76, 0x82, 0x7d, 0x6c, 0x8a, 0x1e, 0x7c, 0xf7, 0x5d, + 0x9a, 0x7, 0x7a, 0x8c, 0x70, 0x96, 0x65, 0xc5, 0xfb, 0x14, 0xf7, 0x4e, + 0x18, 0xde, 0xf7, 0x2, 0x93, 0x98, 0xa9, 0xb3, 0xb6, 0x8c, 0x19, 0x9a, + 0xfb, 0x32, 0x7c, 0x7, 0x9c, 0x8a, 0xa2, 0x80, 0x76, 0x1a, 0x80, 0x85, + 0x82, 0x4e, 0x33, 0x1e, 0x78, 0xa8, 0x62, 0xc8, 0x9d, 0x1a, 0xa0, 0xa4, + 0x97, 0x9d, 0x1e, 0x9a, 0xfb, 0x63, 0x7c, 0x7, 0xac, 0x8c, 0x97, 0x81, + 0xb4, 0x4e, 0xe9, 0xfb, 0x1a, 0x18, 0xfb, 0x6, 0xfb, 0x2f, 0x6b, 0x5d, + 0x7d, 0x7f, 0x70, 0x88, 0x19, 0xe, 0x96, 0xa, 0xf8, 0xca, 0x77, 0x12, + 0x13, 0xa0, 0xf7, 0x86, 0xa1, 0x15, 0x68, 0x85, 0x68, 0xfb, 0xd, 0x57, + 0x1b, 0x13, 0x60, 0x45, 0xa, 0x9b, 0xb4, 0x9e, 0x4a, 0xa, 0x3d, 0xfb, + 0x68, 0x3b, 0xa, 0x8, 0xe, 0xe2, 0x61, 0xa9, 0xf8, 0x46, 0xa9, 0x6a, + 0xa, 0x7b, 0x6c, 0x21, 0x1b, 0xfb, 0x14, 0x56, 0x1d, 0xe, 0x92, 0xa, + 0x12, 0xf7, 0x47, 0xd5, 0x47, 0xd5, 0x13, 0xe0, 0xef, 0xf7, 0x8e, 0x15, + 0x13, 0xd0, 0xd0, 0x78, 0x9b, 0x5f, 0x4b, 0x98, 0xa, 0xfb, 0xc, 0xc9, + 0x77, 0xf2, 0x1e, 0x96, 0x7, 0x44, 0x9b, 0x77, 0xb5, 0xd0, 0x1a, 0xf7, + 0x38, 0x7, 0xd2, 0x7e, 0xb2, 0x3d, 0x9c, 0x1e, 0x8d, 0x7, 0xd9, 0x9d, + 0x98, 0xb2, 0xd2, 0x1a, 0xf7, 0x38, 0x7, 0xd0, 0x9f, 0xb5, 0xd2, 0x9b, + 0x1e, 0x96, 0x7, 0x24, 0x4d, 0x77, 0xfb, 0xb, 0x1f, 0xfb, 0x3b, 0x7, + 0x4b, 0x7b, 0x61, 0x46, 0x79, 0x1e, 0xe, 0xfb, 0x31, 0xfb, 0x2a, 0x76, + 0xf7, 0x46, 0x7a, 0x1d, 0xce, 0xcd, 0x55, 0xb4, 0x3, 0xda, 0xfb, 0x3f, + 0x15, 0xb4, 0xf9, 0xe3, 0x62, 0x6, 0xe, 0x92, 0xa, 0x1, 0xf7, 0x70, + 0xd5, 0x3, 0xf7, 0x16, 0xfb, 0x3e, 0x15, 0x80, 0x7, 0xf2, 0xc8, 0x9f, + 0xf7, 0xc, 0x1f, 0xf7, 0x38, 0x7, 0xcb, 0x9c, 0xb7, 0xd0, 0x9e, 0x1e, + 0x46, 0x9d, 0x7a, 0xb5, 0xcb, 0x1a, 0xf7, 0x3b, 0x7, 0xf7, 0xb, 0x4e, + 0x9f, 0x24, 0x1e, 0x80, 0x7, 0xd2, 0x7b, 0x9e, 0x61, 0x46, 0x98, 0xa, + 0x44, 0x98, 0x64, 0xd9, 0x79, 0x1e, 0x89, 0x7, 0x3d, 0x7a, 0x7e, 0x64, + 0x44, 0x98, 0xa, 0x46, 0x78, 0x61, 0x44, 0x7b, 0x1e, 0xe, 0xf7, 0x4c, + 0xf7, 0x4b, 0xcb, 0x97, 0xcb, 0x1, 0xd7, 0xf7, 0x4b, 0x15, 0xae, 0x9b, + 0xa3, 0xb4, 0xb7, 0x1b, 0xba, 0xa7, 0x79, 0x79, 0xa6, 0x1f, 0x77, 0xa8, + 0xa9, 0x77, 0xc3, 0x1b, 0xc9, 0xac, 0xbb, 0xb5, 0xa9, 0x1f, 0x67, 0xbd, + 0x5, 0x68, 0x74, 0x72, 0x62, 0x63, 0x1b, 0x6d, 0x6e, 0x9e, 0x9e, 0x69, + 0x1f, 0x9e, 0x69, 0x64, 0x9e, 0x5c, 0x1b, 0x48, 0x67, 0x5b, 0x61, 0x75, + 0x1f, 0xe, 0x73, 0xfb, 0x59, 0x76, 0xf8, 0xd5, 0xf7, 0x0, 0x1, 0xec, + 0xf7, 0x0, 0x3, 0xf7, 0x23, 0xf7, 0xac, 0x15, 0x98, 0x6, 0xa5, 0xfb, + 0x5d, 0xa2, 0xfb, 0x48, 0x73, 0x1a, 0x5a, 0x7f, 0x5f, 0x5f, 0x61, 0x81, + 0xb2, 0xbf, 0xa4, 0xa0, 0xf7, 0x49, 0xa4, 0xf7, 0x5d, 0x1e, 0x5d, 0xf7, + 0x19, 0x15, 0x6d, 0xa3, 0x73, 0xa9, 0xa9, 0xa3, 0xa3, 0xa9, 0xa9, 0x73, + 0xa3, 0x6d, 0x6d, 0x73, 0x73, 0x6d, 0x1e, 0xe, 0x87, 0xd4, 0x52, 0xbf, + 0xf7, 0xfc, 0xa9, 0x73, 0xa9, 0x12, 0xca, 0xd8, 0x13, 0xa8, 0xf7, 0xa, + 0xfb, 0x1e, 0x15, 0xad, 0x6, 0xbc, 0xf7, 0x1e, 0x5, 0x86, 0x9d, 0x99, + 0x87, 0xa1, 0x1b, 0xe2, 0xc6, 0xc8, 0xf3, 0xba, 0x1f, 0x7e, 0x93, 0x5, + 0x13, 0x68, 0x45, 0x5d, 0x62, 0x6d, 0x4d, 0x1b, 0x74, 0x7c, 0x90, 0x92, + 0x78, 0x1f, 0xf0, 0xf7, 0xb7, 0x5, 0x67, 0x9b, 0x9a, 0x7b, 0xa8, 0x1b, + 0xa2, 0x9d, 0x9e, 0xa5, 0xad, 0x6b, 0xaf, 0x60, 0x99, 0x1f, 0xba, 0xf7, + 0x1b, 0x5, 0x68, 0x6, 0x5f, 0xfb, 0x10, 0x5, 0x13, 0x98, 0x8e, 0x78, + 0x7b, 0x8d, 0x7b, 0x1b, 0xfb, 0x19, 0x34, 0xfb, 0x7, 0xfb, 0xe, 0x1f, + 0x13, 0x68, 0x3f, 0xac, 0x3c, 0xde, 0x53, 0x1e, 0xa8, 0xe1, 0x15, 0x5c, + 0xb1, 0x76, 0xbf, 0xce, 0x1a, 0x13, 0x98, 0xf7, 0x19, 0xde, 0xb5, 0xbf, + 0xa1, 0x98, 0x87, 0x86, 0x98, 0x1e, 0xe, 0x83, 0xa7, 0x6f, 0xdf, 0x37, + 0xf7, 0x1e, 0xf7, 0x5a, 0xb8, 0xf7, 0x31, 0xf7, 0x26, 0x70, 0xa6, 0x12, + 0xf7, 0xf, 0xe0, 0xf7, 0x2b, 0xe4, 0x13, 0x57, 0xf7, 0x46, 0xc1, 0x15, + 0x6c, 0xb7, 0xba, 0x6c, 0xbe, 0x1b, 0xd7, 0xe9, 0xda, 0xcc, 0x90, 0x88, + 0x8b, 0x88, 0x1f, 0x76, 0x75, 0x4a, 0x2f, 0x1b, 0x6b, 0x53, 0x92, 0xa7, + 0x4d, 0x1f, 0xa2, 0xed, 0x8e, 0xac, 0x89, 0xc6, 0x8a, 0xa6, 0x18, 0xf7, + 0x18, 0xb8, 0xfb, 0x1b, 0x6, 0x84, 0xc4, 0x87, 0xab, 0xbe, 0x1a, 0xae, + 0x93, 0xf0, 0xe2, 0x97, 0xb7, 0x8b, 0x57, 0x1e, 0x13, 0x3b, 0x6a, 0x8b, + 0x69, 0xb3, 0xa4, 0xa3, 0x9e, 0xad, 0xb9, 0x5d, 0xba, 0x37, 0x22, 0x31, + 0x42, 0xfb, 0x37, 0x6b, 0x8e, 0x7d, 0x8f, 0x76, 0x1e, 0x20, 0x5e, 0xf7, + 0x0, 0x6, 0x90, 0x60, 0x90, 0x69, 0x8f, 0x6e, 0x90, 0x64, 0x8f, 0x6d, + 0x86, 0x6f, 0x8, 0x8f, 0x7d, 0x7d, 0x8c, 0x7d, 0x1b, 0x59, 0x5e, 0x72, + 0x57, 0x60, 0xae, 0x79, 0xab, 0xb9, 0xa5, 0xa9, 0xab, 0xa6, 0x1f, 0xfb, + 0x20, 0x8d, 0x15, 0xa8, 0xab, 0x94, 0xa7, 0xa2, 0xa0, 0x83, 0x82, 0x1e, + 0x13, 0x9b, 0x81, 0x7b, 0x5c, 0x5b, 0x75, 0x79, 0x9a, 0xa0, 0x1e, 0xe, + 0xf7, 0x1d, 0xc4, 0xf7, 0xa4, 0xc4, 0x12, 0xaf, 0xce, 0x5d, 0xc8, 0xf7, + 0x9c, 0xc8, 0x5d, 0xce, 0x13, 0xd4, 0xf7, 0xa, 0xf7, 0xdf, 0x15, 0xd3, + 0xc4, 0xca, 0xd7, 0x1e, 0x13, 0xe8, 0xd6, 0xc3, 0x4c, 0x43, 0x41, 0x53, + 0x4c, 0x40, 0x1f, 0x13, 0xd4, 0x3f, 0x52, 0xca, 0xd5, 0x1f, 0x47, 0xfb, + 0x8a, 0x15, 0xe2, 0xe3, 0x5, 0x74, 0xa5, 0xb6, 0x7e, 0xb6, 0x1b, 0xb7, + 0xb7, 0x97, 0xa3, 0xa5, 0x1f, 0xe4, 0x33, 0xb6, 0xb8, 0x34, 0xe2, 0x5, + 0x13, 0xe8, 0xa4, 0xa7, 0x95, 0xbb, 0xb9, 0x1a, 0xb3, 0x7e, 0xb2, 0x75, + 0xa4, 0x1e, 0xe2, 0xe4, 0x60, 0xb6, 0x32, 0x34, 0x5, 0xa3, 0x71, 0x5f, + 0x96, 0x60, 0x1b, 0x60, 0x5f, 0x7f, 0x74, 0x71, 0x1f, 0x34, 0xe2, 0x5e, + 0x60, 0xe3, 0x32, 0x5, 0x13, 0xd4, 0x74, 0x72, 0x7e, 0x62, 0x60, 0x1a, + 0x5e, 0x96, 0x5e, 0xa4, 0x70, 0x1e, 0x33, 0x34, 0x5, 0xe, 0xa0, 0x76, + 0xf7, 0x4a, 0xb3, 0xe5, 0xb3, 0xf7, 0xca, 0x77, 0x1, 0xf7, 0x52, 0xe0, + 0x3, 0xf7, 0x3, 0x16, 0xf7, 0x88, 0x9e, 0x6, 0x52, 0x8c, 0x74, 0xa3, + 0xd6, 0x1a, 0xca, 0xf7, 0x41, 0xb3, 0xfb, 0x41, 0xd7, 0x7, 0x92, 0x99, + 0x5, 0xf7, 0x3a, 0xb3, 0xfb, 0x26, 0x6, 0xe7, 0xf7, 0x42, 0xad, 0xce, + 0xaf, 0xb4, 0xbb, 0x94, 0x19, 0x9e, 0xfb, 0x57, 0x78, 0x7, 0xae, 0x8e, + 0xa9, 0x77, 0x73, 0x1a, 0x7b, 0x85, 0x7e, 0x83, 0x7c, 0x1e, 0xfb, 0x4, + 0xfb, 0x66, 0xfb, 0xa, 0xf7, 0x67, 0x5, 0x83, 0x9a, 0x86, 0x9c, 0x97, + 0x1a, 0xa0, 0x9d, 0x9f, 0xba, 0x8a, 0x1e, 0x9e, 0xfb, 0x87, 0x78, 0x7, + 0xbe, 0x8a, 0xa0, 0x5f, 0xb9, 0x38, 0xea, 0xfb, 0x37, 0x18, 0xfb, 0x24, + 0x63, 0xf7, 0x3b, 0x6, 0x92, 0x7d, 0x5, 0x3f, 0xfb, 0x42, 0x63, 0xf7, + 0x42, 0x4e, 0x7, 0x53, 0x83, 0x5f, 0x44, 0x89, 0x1e, 0xe, 0xfb, 0x31, + 0x92, 0x7a, 0x1d, 0xd9, 0xb7, 0x3, 0xd9, 0xf8, 0x1d, 0x15, 0xb7, 0xf7, + 0xaf, 0x5f, 0x6, 0xfd, 0x46, 0x4, 0xb7, 0xf7, 0xa9, 0x5f, 0x6, 0xe, + 0xfb, 0x29, 0xa0, 0xf7, 0x74, 0xa0, 0xf8, 0xd0, 0x77, 0x12, 0xcb, 0xc0, + 0xf7, 0x67, 0xed, 0x2b, 0xc3, 0x13, 0xf8, 0xf7, 0xbc, 0xf7, 0x11, 0x15, + 0xe1, 0x83, 0xb7, 0xca, 0xce, 0x1a, 0xc6, 0x62, 0xc1, 0x5b, 0xb3, 0x1e, + 0xfb, 0x1d, 0xf7, 0x5, 0x5, 0x72, 0xa0, 0x82, 0xaa, 0x9f, 0x1a, 0xa2, + 0x9e, 0xba, 0xc7, 0xb9, 0xa1, 0x72, 0x79, 0x87, 0x7f, 0x84, 0x81, 0x7f, + 0x1e, 0x85, 0x83, 0x85, 0x81, 0x7e, 0x1a, 0x7d, 0x94, 0x6e, 0xb1, 0xae, + 0x9b, 0xa3, 0xa9, 0x1e, 0x13, 0xf4, 0xc5, 0x4e, 0xbc, 0x4b, 0x42, 0x46, + 0x65, 0x37, 0x48, 0xb5, 0x68, 0xc2, 0x5d, 0x1e, 0x89, 0x89, 0x5, 0x38, + 0x95, 0x57, 0x51, 0x41, 0x1a, 0x5a, 0xa8, 0x51, 0xd0, 0x56, 0x1e, 0xf7, + 0x26, 0xfb, 0x4, 0x9b, 0x7b, 0x61, 0x1a, 0x59, 0x68, 0x6e, 0x5a, 0x54, + 0x78, 0xad, 0x96, 0x1e, 0x98, 0xad, 0x95, 0xad, 0x1a, 0x9c, 0x7c, 0xa3, + 0x6a, 0x71, 0x6f, 0x79, 0x67, 0x52, 0xc8, 0x56, 0xda, 0xec, 0xb8, 0xca, + 0xca, 0xc3, 0x71, 0xac, 0x49, 0xc3, 0x1e, 0xfb, 0x3f, 0xf7, 0x56, 0x15, + 0xbb, 0xb2, 0x9d, 0xa9, 0xc2, 0xf7, 0x13, 0xfb, 0x0, 0x50, 0x5f, 0x69, + 0x71, 0x66, 0x4c, 0xfb, 0x9, 0xed, 0xd4, 0x1e, 0xe, 0x73, 0xf8, 0x9f, + 0xef, 0x1, 0x9d, 0xed, 0xf0, 0xed, 0x3, 0x9d, 0xf8, 0xd1, 0x15, 0x6e, + 0x1d, 0xf7, 0x5b, 0x16, 0x6e, 0x1d, 0xe, 0xf8, 0x27, 0x7d, 0xb5, 0xf7, + 0x2e, 0x9f, 0xf7, 0x9f, 0x9f, 0xf7, 0x25, 0xb5, 0x1, 0xb1, 0xc2, 0xf1, + 0xd8, 0xf7, 0x97, 0x9b, 0xf7, 0xc, 0xc2, 0x3, 0xb1, 0xf7, 0xde, 0x3e, + 0xa, 0x69, 0xa, 0xf8, 0x4a, 0x38, 0x15, 0x5d, 0x77, 0x68, 0x63, 0x49, + 0x1b, 0x25, 0x61, 0xd8, 0xf4, 0x8c, 0x1f, 0xec, 0x8c, 0xb6, 0xd3, 0xe8, + 0x1b, 0xd9, 0xa7, 0x52, 0x61, 0x8f, 0x1f, 0x9c, 0xdb, 0x6, 0xa9, 0x36, + 0x94, 0x64, 0xfb, 0x2c, 0x4a, 0xfb, 0x2, 0x38, 0xfb, 0x21, 0xea, 0x52, + 0xf7, 0x7, 0xcc, 0xb0, 0x95, 0xa5, 0xa8, 0x1e, 0x9b, 0xd1, 0x5, 0xe, + 0x3a, 0xf8, 0x33, 0x76, 0xf7, 0x92, 0xa7, 0x12, 0x9b, 0xca, 0xd9, 0xd3, + 0x17, 0xf7, 0x32, 0xf8, 0xbb, 0x15, 0x48, 0x7, 0x8a, 0x85, 0x8b, 0x84, + 0x81, 0x82, 0x8, 0x88, 0x85, 0x77, 0x79, 0x7d, 0x1b, 0x73, 0x7b, 0x9d, + 0xa8, 0x9e, 0xa2, 0xa1, 0xcf, 0xa1, 0x1f, 0x93, 0x24, 0x15, 0x5f, 0x92, + 0xa6, 0x81, 0x97, 0x1b, 0x96, 0x9f, 0x8c, 0xa8, 0xa6, 0x1f, 0x9d, 0x7, + 0x85, 0x84, 0x82, 0x85, 0x7f, 0x1b, 0x7e, 0x8b, 0x97, 0xa2, 0x1f, 0xf7, + 0x7, 0x7, 0xac, 0x84, 0xca, 0x2a, 0x40, 0x69, 0x68, 0x6b, 0x7d, 0x96, + 0x7a, 0x9f, 0x9f, 0x97, 0x98, 0x98, 0xa5, 0x89, 0x9d, 0xb8, 0xa2, 0x97, + 0x7a, 0x54, 0x1e, 0x2d, 0x69, 0x50, 0x76, 0x4f, 0x1a, 0x13, 0x80, 0x5e, + 0xb0, 0x75, 0xae, 0xae, 0xae, 0x9f, 0xad, 0x9f, 0x1e, 0xe, 0x79, 0xa, + 0xb5, 0xf7, 0x77, 0x50, 0xa, 0xa4, 0xaf, 0x92, 0x1a, 0x92, 0x89, 0x8f, + 0x83, 0x1e, 0x78, 0xfb, 0x51, 0x50, 0xa, 0xa5, 0xaf, 0x92, 0x96, 0x1d, + 0xf7, 0x63, 0xf7, 0x15, 0x76, 0xf7, 0x68, 0xcd, 0x63, 0xb3, 0x12, 0xf8, + 0x68, 0xcd, 0x5e, 0xb8, 0x13, 0xd0, 0x13, 0xa8, 0xa9, 0xf7, 0xee, 0x15, + 0xf8, 0x5f, 0xfb, 0x82, 0xb8, 0xf7, 0xaa, 0xfc, 0x8c, 0x6, 0xe, 0xf8, + 0x27, 0x7d, 0xb5, 0x7d, 0xf7, 0x49, 0xf7, 0xcd, 0xf7, 0x43, 0x12, 0xb1, + 0xc2, 0xf7, 0x43, 0xcb, 0xf7, 0x4, 0xce, 0xf7, 0x30, 0xc2, 0x13, 0x7e, + 0xf7, 0x6f, 0xf7, 0x2c, 0x15, 0xf7, 0x36, 0x9a, 0x6, 0x59, 0x90, 0x8c, + 0x95, 0xb6, 0x1a, 0xda, 0xbb, 0x7, 0x2d, 0xcb, 0xa4, 0x51, 0xab, 0x1b, + 0xcb, 0x93, 0x6, 0x78, 0x9a, 0x6c, 0xad, 0x71, 0xaf, 0x52, 0xd0, 0x18, + 0xb8, 0x9a, 0xad, 0xb1, 0xbf, 0x1a, 0xca, 0x53, 0xb1, 0x50, 0x1e, 0xfb, + 0x45, 0x7c, 0x6, 0xa1, 0x87, 0xa6, 0x8b, 0x70, 0x1a, 0xfb, 0x8d, 0x7, + 0x60, 0x8c, 0x81, 0x59, 0x86, 0x1e, 0xf7, 0x5, 0xf7, 0x30, 0x15, 0xf7, + 0x46, 0xb4, 0x7, 0xb2, 0xab, 0x6d, 0x52, 0x56, 0x77, 0x65, 0x5a, 0x1f, + 0xfb, 0xe5, 0x92, 0x3e, 0xa, 0x1e, 0x13, 0xbe, 0x69, 0xa, 0xe, 0x73, + 0xf8, 0xb7, 0xc1, 0x1, 0x96, 0xf8, 0xb7, 0x15, 0xf7, 0xcb, 0xc1, 0xfb, + 0xcb, 0x6, 0xe, 0xb6, 0xf8, 0x1a, 0xad, 0xf7, 0x6e, 0xad, 0x1, 0xc4, + 0xb2, 0xf7, 0x64, 0xb2, 0x3, 0xeb, 0xf8, 0xa9, 0x15, 0xc5, 0xb9, 0xbe, + 0xc5, 0xc5, 0xb9, 0x58, 0x51, 0x51, 0x5d, 0x58, 0x51, 0x51, 0x5d, 0xbe, + 0xc5, 0x1e, 0x64, 0x16, 0x3b, 0xca, 0x4c, 0xdb, 0xdb, 0xca, 0xca, 0xdb, + 0xdb, 0x4c, 0xca, 0x3b, 0x3b, 0x4c, 0x4c, 0x3b, 0x1e, 0xe, 0xf7, 0x63, + 0x8b, 0xcd, 0xc3, 0x77, 0xf7, 0x48, 0xcd, 0x54, 0xb6, 0xf7, 0x3e, 0x77, + 0x12, 0xf7, 0x8d, 0xcd, 0x55, 0xb3, 0x13, 0xec, 0xa9, 0x16, 0xf8, 0x8c, + 0xb5, 0xfc, 0x8c, 0x6, 0x13, 0xea, 0xf7, 0x7b, 0xdb, 0x15, 0xb3, 0x6, + 0x13, 0xda, 0xf7, 0x3f, 0xf7, 0x7d, 0xb6, 0xfb, 0x7d, 0xf7, 0x3e, 0x63, + 0xfb, 0x3e, 0xfb, 0x7b, 0x60, 0xf7, 0x7b, 0x7, 0xe, 0x52, 0xf7, 0xa2, + 0xcc, 0xf7, 0xaa, 0xca, 0x1, 0xf7, 0x4d, 0xe7, 0x3, 0x90, 0xf7, 0xa2, + 0x15, 0xf7, 0x92, 0x56, 0xa, 0x67, 0x8b, 0x1d, 0xb4, 0x7f, 0x1d, 0x28, + 0x20, 0x5, 0xe, 0x52, 0xf7, 0x9a, 0x85, 0x1d, 0x13, 0xd0, 0xdf, 0xf8, + 0x60, 0x77, 0xa, 0x79, 0x7c, 0x96, 0x95, 0x7d, 0x1e, 0x94, 0x7e, 0x7e, + 0x94, 0x7d, 0x63, 0xa, 0x13, 0xe0, 0x4e, 0x1d, 0x92, 0x1d, 0xe8, 0xf8, + 0x8f, 0x24, 0xa, 0xfb, 0x59, 0x76, 0xf7, 0x64, 0xc9, 0xf8, 0x22, 0x77, + 0x12, 0xaf, 0xe7, 0x47, 0xab, 0x6b, 0xe3, 0xf7, 0x56, 0xe3, 0x13, 0xea, + 0xe7, 0xc5, 0x15, 0x8d, 0x8d, 0x5, 0x4f, 0xab, 0xc1, 0x81, 0xaa, 0x1b, + 0xbe, 0xbf, 0xb9, 0xbe, 0xa8, 0x1f, 0x8d, 0x6, 0x62, 0x9c, 0x53, 0xbf, + 0xaf, 0xa7, 0x95, 0xba, 0xad, 0x1e, 0x93, 0x7, 0x77, 0x76, 0x7d, 0x83, + 0x7c, 0x1b, 0x6b, 0x8b, 0xb5, 0xa2, 0x1f, 0xf7, 0xfa, 0x33, 0xfb, 0xd9, + 0x7, 0x72, 0x7f, 0x60, 0x5b, 0x58, 0x1b, 0x13, 0xe6, 0x4f, 0x6f, 0xb1, + 0xc1, 0x1f, 0xf7, 0xc6, 0x33, 0xfc, 0x20, 0x7, 0x13, 0xf2, 0x4d, 0x73, + 0x3c, 0x4f, 0x1a, 0x5c, 0x95, 0x73, 0xaf, 0xaf, 0x95, 0xa3, 0xba, 0x1e, + 0x13, 0xea, 0xc7, 0x6d, 0xda, 0x85, 0xcd, 0x1e, 0xe, 0xeb, 0xfb, 0x57, + 0x76, 0xf9, 0xe7, 0xa6, 0x1, 0xf7, 0x7a, 0xaf, 0xe6, 0xaf, 0x3, 0xf7, + 0x7a, 0xfb, 0x6c, 0x15, 0xaf, 0xf9, 0xe7, 0xe6, 0xfd, 0xe7, 0xaf, 0xf9, + 0xe7, 0xcb, 0xa6, 0xfb, 0x87, 0x6, 0xfb, 0x20, 0x3d, 0x4f, 0xfb, 0x11, + 0xfb, 0x11, 0xd9, 0x50, 0xf7, 0x30, 0x1f, 0xe, 0x20, 0xf7, 0x70, 0x76, + 0xf7, 0x3, 0x77, 0x1, 0xd1, 0xf7, 0x3, 0x3, 0xd1, 0xf7, 0x91, 0x15, + 0x43, 0x1d, 0xe, 0x73, 0xfb, 0x6b, 0xf7, 0x2d, 0xc9, 0x77, 0x1, 0xf7, + 0x4e, 0xd6, 0x3, 0xeb, 0x23, 0x15, 0x92, 0x86, 0x5, 0x8f, 0x98, 0x9c, + 0x8d, 0x9a, 0x1b, 0xa0, 0x9c, 0x81, 0x75, 0x68, 0x70, 0x81, 0x6c, 0x76, + 0x74, 0x91, 0x91, 0x79, 0x1f, 0x7d, 0x6c, 0x5, 0x83, 0xac, 0x9e, 0x83, + 0xb5, 0x1b, 0xba, 0xcf, 0xb7, 0xb2, 0xb8, 0x68, 0xa4, 0x60, 0x80, 0x7f, + 0x8a, 0x89, 0x80, 0x1f, 0xa4, 0xcc, 0x5, 0x68, 0x6, 0xe, 0x52, 0xf7, + 0xa2, 0xa3, 0xf8, 0x12, 0x77, 0x1, 0xf7, 0x2, 0xdc, 0x3, 0xc4, 0xf7, + 0xa2, 0x35, 0xa, 0xfb, 0x86, 0x7, 0x69, 0x73, 0x80, 0x6e, 0x89, 0x1e, + 0xe, 0x5c, 0xf8, 0x1e, 0xac, 0xf7, 0x6c, 0xac, 0x1, 0x91, 0xd4, 0xf7, + 0x2c, 0xd4, 0x3, 0x91, 0xf8, 0xa8, 0x15, 0x3f, 0xc6, 0x4d, 0xdf, 0xf7, + 0x1, 0xb9, 0xde, 0xcc, 0xdd, 0x4d, 0xbf, 0x36, 0x2a, 0x55, 0x4a, 0x3c, + 0x1e, 0xd4, 0xa4, 0x15, 0xb7, 0xab, 0xb5, 0xb4, 0xbd, 0xa8, 0x67, 0x3f, + 0x4c, 0x62, 0x62, 0x6a, 0x47, 0x81, 0xe3, 0xb5, 0x1e, 0xe, 0x79, 0xa, + 0xf7, 0x8b, 0xac, 0x15, 0x58, 0xa, 0x7d, 0x79, 0x5c, 0x4d, 0x6a, 0x5d, + 0x8, 0x78, 0x70, 0x7c, 0x75, 0x86, 0x1a, 0x84, 0x8d, 0x87, 0x93, 0x1e, + 0xfb, 0x54, 0x16, 0x58, 0xa, 0x7e, 0x79, 0x5e, 0x52, 0x6a, 0x5e, 0x8, + 0x75, 0x6d, 0x7b, 0x73, 0x8f, 0x1d, 0xf8, 0x1d, 0x92, 0x76, 0xae, 0x76, + 0xe5, 0xc4, 0xf7, 0xf, 0xa3, 0xf8, 0x12, 0x77, 0x12, 0xe5, 0xdc, 0xf8, + 0x3a, 0xd1, 0x13, 0x7e, 0x53, 0xa, 0x13, 0xbe, 0xfc, 0x5b, 0xfb, 0x35, + 0x68, 0x1d, 0xfc, 0xbe, 0x47, 0x1d, 0xe, 0xf8, 0x1d, 0x8b, 0xcc, 0x51, + 0x76, 0xf7, 0xb0, 0xa3, 0xbc, 0xca, 0xf7, 0xa2, 0x77, 0x12, 0xdf, 0xdc, + 0xf8, 0x6a, 0xe7, 0x13, 0x7e, 0xf0, 0x7d, 0x68, 0x1d, 0xfc, 0x9f, 0x47, + 0x1d, 0x13, 0xbe, 0xf8, 0x3d, 0xfb, 0xba, 0x15, 0xf7, 0x91, 0x56, 0xa, + 0x71, 0x8b, 0x1d, 0xaa, 0x7f, 0x1d, 0x29, 0x20, 0x5, 0xe, 0xf8, 0x1d, + 0x92, 0x76, 0xf3, 0xc4, 0xf7, 0x7, 0x85, 0x1d, 0xf7, 0xc2, 0xd1, 0x13, + 0xf6, 0x53, 0xa, 0xfc, 0x5b, 0xfb, 0x35, 0x68, 0x1d, 0xfc, 0x8f, 0xfb, + 0x6c, 0x77, 0xa, 0x7a, 0x7c, 0x95, 0x95, 0x7d, 0x1e, 0x94, 0x7e, 0x7e, + 0x95, 0x7c, 0x63, 0xa, 0x13, 0xfa, 0x4e, 0x1d, 0xe2, 0xfb, 0x6e, 0xa9, + 0xf8, 0xb9, 0xf4, 0x12, 0xa9, 0xe7, 0xac, 0xf4, 0x17, 0xf7, 0x5c, 0xf7, + 0xba, 0x15, 0x4e, 0x64, 0x5a, 0x63, 0x59, 0x1e, 0x5f, 0x54, 0x5c, 0x53, + 0x40, 0x1a, 0x25, 0xd2, 0x4b, 0xf7, 0x4, 0xd0, 0xe9, 0xb6, 0xf0, 0xad, + 0x81, 0xa8, 0x63, 0x6f, 0x76, 0x73, 0x7a, 0x79, 0x94, 0x7f, 0x95, 0x80, + 0x1e, 0x94, 0x80, 0x95, 0x81, 0x7e, 0x1a, 0x6a, 0x62, 0x6f, 0x61, 0x3e, + 0x6a, 0xce, 0xc7, 0x1e, 0x13, 0x50, 0xb3, 0x9e, 0xd0, 0x9d, 0xb3, 0x1e, + 0xa7, 0xcb, 0x5, 0x91, 0x99, 0xa3, 0xd0, 0xc6, 0x1a, 0x4d, 0xf7, 0xb, + 0x15, 0x6e, 0xa2, 0x74, 0xa8, 0x1e, 0xa8, 0xa3, 0xa2, 0xa8, 0x94, 0x1d, + 0x1f, 0xe, 0xf8, 0x1, 0x99, 0x76, 0xf7, 0x73, 0xb4, 0xf8, 0x35, 0x77, + 0xf7, 0x80, 0x77, 0x1, 0x54, 0xf9, 0x47, 0xfd, 0x2, 0xf7, 0x5a, 0x3, + 0x20, 0x1d, 0x59, 0xf8, 0x62, 0x27, 0x1d, 0x5c, 0x1d, 0xf7, 0x80, 0x77, + 0x1, 0x4c, 0xf9, 0x47, 0xfb, 0x93, 0xf7, 0x93, 0x3, 0x21, 0xa, 0x79, + 0x5f, 0x6b, 0x2a, 0x1d, 0xfb, 0x33, 0xf8, 0x62, 0x24, 0xa, 0x5c, 0x1d, + 0xf7, 0x7c, 0x77, 0x1, 0x54, 0xf9, 0x47, 0x3, 0x20, 0x1d, 0xfb, 0x85, + 0xf8, 0x62, 0x25, 0x1d, 0xe, 0x5b, 0x1d, 0xf8, 0x7f, 0xf1, 0x5a, 0xbc, + 0x12, 0x90, 0xf9, 0x47, 0x13, 0xd0, 0x20, 0xa, 0x13, 0x58, 0x77, 0x6, + 0xfb, 0x64, 0xfc, 0x7f, 0x78, 0x5f, 0x6c, 0x2a, 0x1d, 0xfb, 0x8f, 0xf8, + 0x7b, 0x83, 0x1d, 0x9b, 0xb3, 0xb0, 0x1b, 0xa4, 0xa1, 0x80, 0x80, 0x9f, + 0x1f, 0x13, 0xe0, 0x7c, 0xa5, 0xa1, 0x7b, 0xa1, 0x1b, 0xd9, 0x9d, 0xcf, + 0x65, 0xa, 0x63, 0x7a, 0x6f, 0x81, 0x72, 0x1b, 0x7c, 0x75, 0x98, 0x98, + 0x73, 0x1f, 0x97, 0x75, 0x74, 0x97, 0x77, 0x54, 0xa, 0x5c, 0x1d, 0xdd, + 0xee, 0x12, 0x8b, 0xf7, 0x5a, 0x99, 0xee, 0xef, 0xee, 0x13, 0xfa, 0x20, + 0x1d, 0x67, 0xf8, 0xa4, 0x15, 0x6a, 0x1d, 0x13, 0xf6, 0xfb, 0x5b, 0x16, + 0x6a, 0x1d, 0xe, 0x5b, 0x1d, 0xf8, 0x6f, 0xf7, 0x3a, 0x12, 0xf7, 0xb1, + 0xf7, 0x18, 0xfb, 0x15, 0xf7, 0x3a, 0x13, 0xe8, 0x20, 0x1d, 0xfb, 0x57, + 0xf8, 0xb1, 0x67, 0xa, 0xac, 0x16, 0xaf, 0xa9, 0x93, 0xa, 0x6d, 0x67, + 0x1e, 0x13, 0xf0, 0x67, 0x6d, 0xa9, 0xaf, 0x1f, 0xe, 0xf8, 0xa8, 0x8b, + 0xb1, 0xf7, 0x72, 0xb2, 0xa9, 0xb0, 0xf7, 0x98, 0xaf, 0x77, 0x9f, 0x12, + 0x8b, 0xf7, 0x5b, 0xf7, 0x5b, 0xee, 0xf7, 0x87, 0xa0, 0xab, 0xa2, 0x13, + 0xf3, 0x0, 0x13, 0xeb, 0x0, 0x8b, 0x4, 0xf7, 0x5b, 0x9e, 0x6, 0x7e, + 0x8d, 0x49, 0x89, 0xa0, 0xd8, 0x93, 0xaa, 0xa5, 0xb7, 0xba, 0xe4, 0x8, + 0xf7, 0x44, 0xfb, 0x22, 0x6, 0x44, 0x7b, 0x78, 0x53, 0x84, 0x1e, 0x7a, + 0x89, 0x5, 0x78, 0xf8, 0x92, 0x7, 0xb7, 0xf7, 0x3c, 0x5, 0x73, 0x6, + 0xfb, 0x2, 0x52, 0x68, 0x77, 0x22, 0x1b, 0x3f, 0x6, 0x49, 0x88, 0x96, + 0xcc, 0x1f, 0xf7, 0x6b, 0xf7, 0x25, 0x7, 0xe2, 0x90, 0x5c, 0x56, 0x91, + 0x1f, 0xa0, 0xf7, 0x7e, 0x76, 0x6, 0x44, 0x85, 0x7c, 0x71, 0xfb, 0x3, + 0x1b, 0xfb, 0x3, 0xf7, 0x7a, 0x6, 0xa8, 0x9b, 0x8c, 0x96, 0x1e, 0xe2, + 0x6, 0xf7, 0x16, 0xb4, 0x84, 0x29, 0x96, 0x1f, 0xa2, 0xf7, 0x21, 0xfc, + 0xc8, 0x6, 0x13, 0xf7, 0x80, 0x77, 0x7, 0xc8, 0xa8, 0x80, 0x73, 0x83, + 0x86, 0x81, 0x87, 0x83, 0x1f, 0xfb, 0x89, 0xfc, 0x6e, 0x68, 0x46, 0x79, + 0x7e, 0x68, 0x85, 0x19, 0xf7, 0x83, 0xf7, 0xac, 0x15, 0xf7, 0x30, 0xf7, + 0xcd, 0x5, 0x8e, 0xfb, 0xcd, 0x6, 0xe, 0xf7, 0xca, 0xfb, 0x56, 0x76, + 0xf7, 0x5d, 0xb7, 0xf8, 0xf2, 0xb3, 0x1, 0xa7, 0xf7, 0x8, 0xf7, 0xa4, + 0xd6, 0xf5, 0xa2, 0x3, 0xf7, 0xae, 0x8e, 0xa, 0xcc, 0x8c, 0xce, 0xa9, + 0xbf, 0x1a, 0xc3, 0x54, 0xa2, 0x52, 0x7f, 0x1e, 0xa0, 0xc1, 0xf7, 0x32, + 0x9a, 0xd5, 0xf6, 0x8c, 0x8d, 0x19, 0x79, 0x9d, 0x5, 0x77, 0x1d, 0xf7, + 0x24, 0xb7, 0xcb, 0xb2, 0xb1, 0x1f, 0xb4, 0xb5, 0xc5, 0x9f, 0xbd, 0x1b, + 0xf7, 0xf, 0xd3, 0x31, 0x22, 0xa4, 0x1f, 0xa2, 0x6, 0x82, 0xf7, 0x7f, + 0x59, 0x1d, 0x1f, 0x8c, 0x6, 0x66, 0x33, 0x92, 0x86, 0x5, 0xab, 0x94, + 0xbe, 0x8c, 0x86, 0xa, 0x5a, 0x1d, 0xf7, 0x78, 0x77, 0x12, 0x7f, 0xa, + 0x17, 0x97, 0x16, 0xf8, 0xb0, 0x6, 0x13, 0xff, 0x80, 0x23, 0x1d, 0xf7, + 0xdd, 0xf9, 0x50, 0x27, 0x1d, 0x5a, 0x1d, 0xf7, 0x78, 0x77, 0x1, 0x7f, + 0xa, 0x3, 0xf7, 0x7c, 0xf9, 0x63, 0x21, 0x1d, 0xfc, 0x3, 0xfd, 0xf7, + 0x2c, 0xa, 0x5a, 0x1d, 0xf7, 0x74, 0x77, 0x1, 0x7f, 0xa, 0x3, 0xf7, + 0x2a, 0x38, 0xa, 0xfb, 0x9a, 0xfe, 0xa, 0x2c, 0xa, 0x7b, 0xa, 0xf7, + 0xb5, 0xb4, 0xf7, 0x94, 0xb1, 0xd3, 0xf0, 0x12, 0xee, 0xf1, 0x5d, 0xf0, + 0xee, 0xf0, 0x94, 0xa2, 0x13, 0xfa, 0x97, 0x16, 0xf8, 0xb0, 0x6, 0x36, + 0x1d, 0x13, 0x7b, 0x26, 0xa, 0x13, 0x16, 0x3e, 0x7a, 0xa, 0x13, 0xf6, + 0xf7, 0x23, 0xf9, 0x91, 0x15, 0x6c, 0x1d, 0xf7, 0x5c, 0x16, 0x6c, 0x1d, + 0xe, 0x73, 0x83, 0xa, 0xf7, 0x8c, 0x42, 0xa, 0xf7, 0x4c, 0xf9, 0x50, + 0x2d, 0xa, 0x89, 0x81, 0x1d, 0x9d, 0x57, 0xa, 0x73, 0x83, 0xa, 0xf7, + 0x8c, 0x77, 0x1, 0xf7, 0x7, 0xf1, 0x3, 0xe8, 0xf9, 0x63, 0x21, 0x1d, + 0xfb, 0x72, 0xfd, 0xf7, 0x15, 0xf7, 0xbf, 0x9e, 0x6, 0x41, 0x8d, 0x71, + 0x60, 0x1d, 0xa6, 0x9c, 0xd4, 0x8e, 0x1e, 0x9e, 0xfb, 0xbf, 0x78, 0x7, + 0x49, 0xa, 0xe, 0x73, 0x83, 0xa, 0xf7, 0x88, 0x77, 0x1, 0xf7, 0x7, + 0xf1, 0x3, 0x96, 0x38, 0xa, 0xfb, 0x10, 0xfe, 0xa, 0x15, 0xf7, 0xcb, + 0x9e, 0x6, 0x41, 0x8d, 0x6c, 0x60, 0x1d, 0xab, 0x9c, 0xd4, 0x8e, 0x1e, + 0x9e, 0xfb, 0xcb, 0x78, 0x7, 0xde, 0x87, 0xa0, 0x75, 0x41, 0x89, 0x1d, + 0x44, 0x78, 0x70, 0x36, 0x89, 0x1e, 0xe, 0x73, 0xa0, 0x76, 0xf9, 0x17, + 0x97, 0xa, 0x12, 0xad, 0xed, 0x7a, 0xf1, 0x13, 0xd0, 0x9d, 0x16, 0xf7, + 0xbd, 0x9e, 0x6, 0x13, 0xc8, 0x59, 0xa, 0x13, 0xb0, 0x9e, 0xfb, 0xbd, + 0x7, 0x13, 0xd0, 0x78, 0x7, 0x13, 0xc8, 0x49, 0xa, 0xf9, 0x91, 0x4, + 0x6d, 0x1d, 0xf7, 0x5b, 0x16, 0x6d, 0x1d, 0xe, 0xf8, 0x1, 0x8b, 0xb0, + 0xf7, 0xaa, 0xb7, 0xf7, 0x9e, 0xb0, 0x1, 0xf3, 0xf1, 0xf8, 0x6, 0x58, + 0x1d, 0x96, 0x71, 0x41, 0x1f, 0xfb, 0x4c, 0x34, 0x5f, 0xe2, 0xfb, 0x58, + 0x7, 0x45, 0x7f, 0x6d, 0x3f, 0x1e, 0xf7, 0x52, 0xf7, 0xbc, 0x15, 0xf7, + 0x26, 0xb7, 0xfb, 0x26, 0xf7, 0x4b, 0x6, 0xbe, 0x8b, 0xab, 0x8b, 0xa, + 0xfb, 0xb7, 0xfb, 0x8a, 0x8b, 0x4b, 0x5b, 0x7f, 0x9f, 0xc5, 0x1e, 0xe, + 0xf8, 0x1, 0x95, 0x76, 0xab, 0x76, 0xf7, 0x49, 0x77, 0xf8, 0x89, 0x77, + 0xf1, 0xf5, 0x12, 0xf7, 0x1, 0xb7, 0xf8, 0x33, 0xb7, 0x13, 0x7e, 0x5f, + 0xa, 0xf8, 0x10, 0x8d, 0x7, 0x13, 0xbe, 0x3a, 0xa, 0x13, 0x7e, 0xf7, + 0x4c, 0xf9, 0x69, 0x4c, 0xa, 0x9d, 0x67, 0x1f, 0x97, 0x74, 0x75, 0x91, + 0x76, 0x54, 0xa, 0x30, 0x1d, 0xf7, 0x8d, 0xf8, 0x10, 0x27, 0x1d, 0x30, + 0x1d, 0xf7, 0x20, 0xf8, 0x10, 0x24, 0xa, 0x5b, 0xa, 0xf7, 0x66, 0x77, + 0x74, 0xa, 0xf7, 0x62, 0x38, 0xa, 0xfb, 0xbc, 0xfc, 0xb8, 0x29, 0x1d, + 0xe, 0x5b, 0xa, 0xcf, 0xf5, 0x85, 0xa, 0xf7, 0xde, 0x70, 0xa, 0xfb, + 0x17, 0x69, 0x1d, 0xf7, 0x17, 0x61, 0x1d, 0xf7, 0x8, 0x61, 0xa, 0xfb, + 0x8, 0x44, 0x1d, 0xdc, 0xf1, 0xf1, 0xf7, 0x3, 0x3a, 0x71, 0x1d, 0x32, + 0x72, 0x1d, 0xe4, 0xf7, 0x70, 0x1e, 0xbb, 0xf8, 0x31, 0x4c, 0xa, 0x91, + 0x7f, 0x1f, 0xa3, 0x5c, 0x75, 0x91, 0x76, 0x54, 0xa, 0x5b, 0xa, 0xc6, + 0xef, 0x7b, 0x1d, 0xca, 0xef, 0xef, 0xef, 0xca, 0x9a, 0xa, 0xad, 0xf7, + 0xe6, 0x70, 0xa, 0xfb, 0x1f, 0x69, 0x1d, 0xf7, 0x10, 0x61, 0x1d, 0xf7, + 0xf, 0x34, 0xa, 0x33, 0x71, 0x1d, 0x39, 0x5e, 0xa, 0xca, 0xf8, 0x52, + 0x15, 0x30, 0xa, 0xf7, 0x5c, 0x16, 0x30, 0xa, 0xe, 0xf7, 0x63, 0xa8, + 0x76, 0xac, 0x76, 0xf8, 0x71, 0x77, 0x12, 0x13, 0xa0, 0xc5, 0xc3, 0x15, + 0xa6, 0x6f, 0xf7, 0x59, 0xf7, 0x59, 0x5, 0x13, 0x60, 0xf7, 0x61, 0xfb, + 0x61, 0xa7, 0xa6, 0xfb, 0x61, 0xf7, 0x62, 0xf7, 0x59, 0xf7, 0x58, 0x6f, + 0xa7, 0xfb, 0x59, 0xfb, 0x59, 0xfb, 0x58, 0xf7, 0x59, 0x70, 0x6e, 0xf7, + 0x57, 0xfb, 0x57, 0x5, 0xe, 0xf8, 0x1, 0x50, 0x76, 0xcd, 0xaf, 0xf8, + 0xfe, 0xaf, 0xc5, 0x77, 0x74, 0xa, 0xf7, 0x6f, 0xe3, 0x15, 0xf7, 0xc8, + 0xf8, 0x58, 0x5, 0xa8, 0x5a, 0x9d, 0x41, 0x2e, 0x1a, 0xfb, 0x70, 0x25, + 0x39, 0xfb, 0x3, 0x57, 0x57, 0x9f, 0xb9, 0x65, 0x1e, 0x72, 0xae, 0x15, + 0x6e, 0xbc, 0x7a, 0xd9, 0xe6, 0x1a, 0xf7, 0x78, 0xf7, 0x3, 0xd2, 0xf1, + 0xbc, 0xbf, 0x78, 0x5d, 0xb3, 0x1e, 0xfc, 0x52, 0xfd, 0x23, 0x15, 0xbc, + 0x6, 0xda, 0xf7, 0x8, 0x5, 0x6a, 0xbe, 0xc8, 0x7a, 0xcc, 0x1b, 0xf7, + 0x49, 0xf7, 0x26, 0xf7, 0x10, 0xf7, 0x69, 0xf7, 0x11, 0x5b, 0xed, 0x45, + 0xc5, 0x1f, 0xe3, 0xf7, 0x16, 0x5, 0x5a, 0x6, 0x43, 0x20, 0x5, 0xac, + 0x56, 0x4e, 0x9b, 0x4d, 0x1b, 0xfb, 0x38, 0xfb, 0x37, 0x21, 0xfb, 0x7a, + 0xfb, 0xb, 0xb8, 0x24, 0xd3, 0x50, 0x1f, 0xe, 0x7c, 0xa, 0xf7, 0xfd, + 0xb7, 0x3, 0x99, 0xf9, 0x17, 0x15, 0xd7, 0x99, 0x71, 0x41, 0x1f, 0xfb, + 0xc6, 0x7, 0x4a, 0x8b, 0xfb, 0x4e, 0xf7, 0x8c, 0xf7, 0x97, 0x8b, 0xf7, + 0x47, 0xe4, 0x1e, 0xf7, 0x8f, 0x7, 0xf4, 0x9c, 0xab, 0xd8, 0x8c, 0x1e, + 0x9e, 0xfb, 0x7c, 0x78, 0x7, 0xd1, 0x8a, 0xa3, 0x6d, 0x20, 0x1a, 0xfb, + 0x98, 0x7, 0xfb, 0x11, 0x4f, 0x31, 0x98, 0x1d, 0xf7, 0x22, 0xc8, 0x1e, + 0xf7, 0xca, 0x7, 0xd2, 0x97, 0xa7, 0xda, 0x8c, 0x1e, 0x88, 0xa, 0xf8, + 0x13, 0xc4, 0x3a, 0x1d, 0x73, 0x87, 0x8b, 0x7b, 0x1b, 0x6c, 0x8a, 0x81, + 0x1d, 0x9c, 0x57, 0xa, 0x7c, 0xa, 0xf7, 0xf6, 0xb7, 0x3, 0xf8, 0x4, + 0xf9, 0x63, 0x21, 0x1d, 0xfc, 0x89, 0xfb, 0x74, 0x32, 0x1d, 0x6e, 0xa, + 0xf7, 0x88, 0x77, 0x1, 0xf3, 0xf1, 0xf7, 0xf6, 0xb7, 0x3, 0xf7, 0x62, + 0x38, 0xa, 0xfb, 0xd0, 0xfb, 0x87, 0x32, 0x1d, 0xf8, 0x1, 0x7d, 0xb7, + 0xf8, 0xf9, 0x97, 0xa, 0xe9, 0xee, 0x12, 0xf7, 0x13, 0xf1, 0x7a, 0xee, + 0xf0, 0xee, 0xb4, 0xb7, 0x13, 0xcb, 0x99, 0xf9, 0x17, 0x2e, 0x1d, 0x13, + 0xbb, 0x9e, 0xfb, 0x7c, 0x7, 0x13, 0xcb, 0x50, 0x1d, 0x4f, 0x3f, 0xfb, + 0x13, 0x47, 0xa, 0x13, 0xbb, 0x88, 0xa, 0x13, 0xcb, 0x13, 0xb7, 0xf7, + 0x5a, 0xf7, 0xf, 0x4a, 0x1d, 0xf8, 0x1, 0x83, 0xa, 0xf7, 0x8c, 0x72, + 0xa, 0xa8, 0xde, 0x1a, 0xf7, 0x3f, 0x7e, 0x1d, 0x4b, 0x1d, 0x5e, 0x1d, + 0xf7, 0x6, 0xf9, 0x50, 0x24, 0xa, 0xf7, 0x5b, 0x93, 0x9e, 0xf7, 0x25, + 0xb3, 0xf7, 0x95, 0xb1, 0xf7, 0x34, 0x77, 0x6d, 0xa, 0x98, 0xe9, 0x1a, + 0xac, 0x66, 0x1d, 0xf7, 0x6, 0x21, 0xcd, 0xfb, 0x2e, 0x1e, 0x3b, 0x6, + 0x88, 0xe7, 0x9a, 0x97, 0xda, 0x92, 0x8, 0x9e, 0xfb, 0xa9, 0x78, 0x7, + 0xd4, 0x84, 0x96, 0x7f, 0x44, 0x1a, 0xfc, 0x3b, 0x8d, 0xa, 0xf7, 0x4a, + 0x15, 0xf7, 0x98, 0x7, 0xac, 0x96, 0x8b, 0xa9, 0xb7, 0xf7, 0x26, 0x8a, + 0x74, 0x1d, 0x82, 0xa8, 0x77, 0x9f, 0xf9, 0x10, 0xa6, 0x12, 0xd4, 0xdf, + 0xf7, 0x45, 0xe2, 0x5c, 0xe9, 0x13, 0x78, 0x97, 0x16, 0xf7, 0x25, 0xf8, + 0xb9, 0x6, 0x9b, 0x8d, 0xe6, 0xe2, 0xbb, 0xb3, 0x5f, 0x2d, 0x1e, 0xfb, + 0x38, 0xfb, 0x10, 0xc1, 0x69, 0x1a, 0x6e, 0xc4, 0xa5, 0xbb, 0x65, 0x1e, + 0x13, 0xb4, 0x9c, 0x7d, 0xb5, 0x60, 0x23, 0x1a, 0x38, 0x82, 0x46, 0x54, + 0x7a, 0x85, 0x92, 0x99, 0x87, 0x1e, 0x89, 0x93, 0x8a, 0x96, 0x8a, 0x97, + 0x8, 0x9f, 0x89, 0x7c, 0x9f, 0x72, 0x1b, 0x71, 0x78, 0x77, 0x6e, 0x75, + 0x9c, 0x59, 0xdd, 0xf7, 0x1, 0xcf, 0xef, 0xe6, 0xf7, 0x21, 0xfb, 0x4, + 0xbe, 0x46, 0x8d, 0x1f, 0x8d, 0x7, 0x13, 0x78, 0xf7, 0x3, 0xbb, 0xa2, + 0xb4, 0xd0, 0x1a, 0xf6, 0x2c, 0xb3, 0x43, 0xfb, 0x48, 0x8a, 0xfb, 0x3a, + 0x4c, 0x1e, 0xfb, 0xfc, 0x7, 0x4a, 0x73, 0x80, 0x66, 0x88, 0x1e, 0xe, + 0x4f, 0x1d, 0xf7, 0x6e, 0x77, 0x12, 0xb0, 0xe3, 0x39, 0xe3, 0xf7, 0x30, + 0xdc, 0x13, 0xda, 0x34, 0x1d, 0x1e, 0x13, 0xd6, 0xfb, 0x8, 0x67, 0x44, + 0x63, 0x7b, 0x8c, 0x6f, 0xaa, 0xa5, 0xa4, 0x97, 0xa0, 0x1f, 0x94, 0x80, + 0xa4, 0x9a, 0x1a, 0x13, 0xba, 0xaa, 0xb1, 0x37, 0xa, 0xcb, 0x89, 0xa, + 0xbe, 0xab, 0xa4, 0x1e, 0x6d, 0xf8, 0x46, 0x27, 0x1d, 0x4f, 0x1d, 0xf7, + 0x6e, 0x77, 0x1, 0xaa, 0xe3, 0xf7, 0x3c, 0xdc, 0x3, 0x34, 0x1d, 0xfb, + 0x8, 0x4f, 0x44, 0x63, 0x7b, 0xa4, 0x6f, 0xaa, 0xa5, 0x91, 0xa1, 0xa0, + 0x1e, 0xb2, 0x7, 0xaa, 0xb9, 0x37, 0xa, 0xb3, 0x66, 0xc1, 0xe9, 0xb1, + 0xbe, 0xab, 0xa4, 0x1e, 0xfb, 0x1f, 0xf8, 0x46, 0x15, 0xf7, 0x27, 0xf7, + 0x28, 0x5, 0xa2, 0xa2, 0x91, 0x8b, 0x9a, 0x1b, 0xab, 0x8c, 0x6f, 0x87, + 0x74, 0x78, 0x7f, 0x80, 0x84, 0x1f, 0xfb, 0x2e, 0x2a, 0x5, 0xe, 0x4f, + 0x1d, 0xf7, 0x6a, 0x77, 0x84, 0xa, 0xce, 0xf8, 0x8f, 0x25, 0x1d, 0xeb, + 0xfc, 0x2a, 0x29, 0xa, 0x4f, 0x1d, 0xd3, 0xf5, 0x84, 0xa, 0xc4, 0xf8, + 0xa8, 0x83, 0x1d, 0x96, 0xaf, 0xb1, 0x1b, 0x97, 0x98, 0x84, 0x45, 0x1d, + 0x74, 0x94, 0x91, 0x7f, 0x1f, 0xa3, 0x5c, 0x77, 0x96, 0x76, 0x1b, 0x48, + 0x6d, 0x4d, 0x5f, 0x83, 0x1f, 0xf7, 0x7a, 0xfb, 0x9c, 0x29, 0xa, 0x4f, + 0x1d, 0xcb, 0xee, 0x12, 0xb0, 0xe3, 0x46, 0xe3, 0x44, 0xee, 0xf0, 0xea, + 0x3a, 0xdc, 0x13, 0xd8, 0x80, 0xf7, 0xb3, 0xf7, 0xa0, 0x28, 0x1d, 0x13, + 0xd5, 0x0, 0x3e, 0x1d, 0x13, 0xb8, 0x80, 0x3c, 0x1d, 0x13, 0xd3, 0x0, + 0xfb, 0x6b, 0xf8, 0x88, 0x4a, 0x1d, 0xe2, 0x81, 0xc5, 0xf7, 0x95, 0xf7, + 0x2b, 0x77, 0xa3, 0xcd, 0xad, 0xf7, 0x17, 0xad, 0x12, 0xc3, 0xe3, 0x64, + 0xe3, 0x3d, 0xad, 0xf7, 0x7, 0xdc, 0x98, 0xae, 0x13, 0xda, 0x40, 0xf7, + 0xb3, 0xf7, 0xa0, 0x24, 0x1d, 0x13, 0xdc, 0x80, 0x40, 0xa, 0xeb, 0xfb, + 0x29, 0xfb, 0x8, 0x5c, 0x48, 0x57, 0x1d, 0x1e, 0x94, 0x86, 0x9a, 0x9a, + 0x1a, 0x13, 0xba, 0x40, 0xaa, 0xb1, 0x99, 0xac, 0xa9, 0xba, 0x57, 0x43, + 0x1e, 0x7b, 0x4f, 0xa, 0xbf, 0x89, 0xa, 0xbd, 0xac, 0xb0, 0x1e, 0x13, + 0xd9, 0x40, 0xfb, 0x39, 0xf8, 0xae, 0x67, 0xa, 0xad, 0x16, 0xaf, 0xa8, + 0x93, 0xa, 0x6e, 0x67, 0x67, 0x6e, 0xa8, 0xaf, 0x1e, 0xe, 0xf7, 0xca, + 0x81, 0xbb, 0x5b, 0xce, 0xf7, 0x70, 0xa9, 0x88, 0xf7, 0x30, 0x73, 0xa3, + 0x12, 0xb1, 0xe2, 0x4a, 0xe4, 0xf7, 0x10, 0xdc, 0x13, 0x6d, 0xf7, 0xc6, + 0xd4, 0x15, 0x71, 0x9c, 0xa9, 0x52, 0xe1, 0x1b, 0xb1, 0xe9, 0x98, 0xf7, + 0x26, 0xc8, 0x1f, 0x7f, 0x90, 0x5, 0x56, 0x6a, 0x59, 0x5f, 0x54, 0x1b, + 0xfb, 0x14, 0x8b, 0xf7, 0xd, 0xee, 0x1f, 0xf7, 0x9a, 0x6, 0x13, 0x93, + 0xbd, 0x7c, 0xf7, 0x19, 0xfb, 0x22, 0x58, 0x6d, 0x7f, 0x6a, 0x62, 0x1e, + 0xa0, 0x73, 0x6e, 0xa3, 0x49, 0x1b, 0x35, 0x43, 0x5e, 0x4d, 0x65, 0xa4, + 0x80, 0x9c, 0xba, 0x8b, 0xb5, 0xaf, 0x1f, 0x13, 0xad, 0xa8, 0x9e, 0xa4, + 0xb8, 0xcd, 0x89, 0x57, 0x24, 0x87, 0x1e, 0xfb, 0x35, 0x4a, 0x41, 0x6d, + 0x31, 0x1a, 0x61, 0xab, 0x4b, 0xde, 0xee, 0x92, 0xb7, 0xb2, 0xba, 0x1e, + 0x7e, 0xa4, 0x15, 0x7d, 0x52, 0x5d, 0x64, 0x54, 0x7a, 0xc2, 0xa5, 0xca, + 0xa4, 0xa7, 0xf7, 0xf, 0xb6, 0x1e, 0x8c, 0x57, 0x5, 0x8c, 0x44, 0x9d, + 0x72, 0x84, 0x1a, 0xc9, 0xf7, 0x65, 0x15, 0xb5, 0x8d, 0x8f, 0xdd, 0xde, + 0x1b, 0xd3, 0x90, 0x37, 0x63, 0x1f, 0xe, 0xe2, 0xfb, 0x56, 0x76, 0xf7, + 0x61, 0xd3, 0xf7, 0x91, 0xf7, 0x25, 0x6e, 0xa8, 0x12, 0xa4, 0xd8, 0xf7, + 0x31, 0xd6, 0x13, 0xdc, 0xf7, 0x11, 0x8e, 0xa, 0xcb, 0xcf, 0xaa, 0xbf, + 0xc3, 0x54, 0xa2, 0x52, 0x7f, 0x1f, 0xa1, 0xc5, 0xcd, 0x95, 0xc2, 0xb8, + 0xba, 0xee, 0x19, 0x63, 0x1d, 0x90, 0x79, 0x6d, 0x93, 0x1f, 0x13, 0xec, + 0x5f, 0x97, 0x9c, 0x73, 0xa5, 0x1b, 0xa9, 0x9b, 0xa0, 0xa2, 0xca, 0x33, + 0xb1, 0x4e, 0xfb, 0x0, 0xfb, 0x8, 0x38, 0xfb, 0x38, 0xfb, 0x30, 0xf3, + 0x4a, 0xda, 0x89, 0x1f, 0x65, 0x2e, 0x92, 0x86, 0x5, 0xab, 0x94, 0xbd, + 0x8d, 0x86, 0xa, 0xe2, 0x81, 0xd0, 0xf7, 0x4f, 0xab, 0xf7, 0xd, 0xaf, + 0xf7, 0x87, 0x77, 0x12, 0xa3, 0xd0, 0xf7, 0x68, 0xf1, 0x17, 0x26, 0x1d, + 0x13, 0x7c, 0x3d, 0x1d, 0x5e, 0xf7, 0x64, 0x27, 0x1d, 0x87, 0x1d, 0xf7, + 0x11, 0xaf, 0xf7, 0x6e, 0x77, 0x1, 0xac, 0xd0, 0xf7, 0x46, 0xf1, 0x3, + 0x28, 0xa, 0xfb, 0x6, 0xf7, 0x64, 0x24, 0xa, 0x87, 0x1d, 0xf7, 0x11, + 0xaf, 0xf7, 0x6a, 0x77, 0x1, 0xa4, 0xd0, 0xf7, 0x65, 0xf1, 0x3, 0x28, + 0xa, 0xfb, 0x80, 0xf7, 0x64, 0x25, 0x1d, 0xe, 0xe2, 0x81, 0xd0, 0xf7, + 0x58, 0xab, 0xf7, 0x1d, 0xaf, 0xca, 0xef, 0x12, 0xa4, 0xd0, 0x77, 0xed, + 0xf0, 0xed, 0x13, 0xfa, 0x28, 0xa, 0x13, 0xf6, 0xfb, 0x79, 0xf7, 0xa6, + 0x15, 0x4b, 0xa, 0x8f, 0xa, 0xf9, 0x3a, 0x27, 0xa, 0xf7, 0x33, 0xf8, + 0x80, 0x27, 0x1d, 0x8f, 0xa, 0xf9, 0x3a, 0x27, 0xa, 0xbd, 0xf8, 0x80, + 0x24, 0xa, 0x8f, 0xa, 0xf9, 0x36, 0x27, 0xa, 0x6b, 0xf8, 0x80, 0x25, + 0x1d, 0xe, 0x8f, 0xa, 0xf8, 0xa0, 0xee, 0x1, 0x82, 0xed, 0x91, 0xdf, + 0x96, 0xed, 0x23, 0xa, 0x72, 0xf8, 0xc2, 0x15, 0x6b, 0xa, 0xf7, 0x5b, + 0x16, 0x6b, 0xa, 0xe, 0x71, 0xa, 0xf7, 0x76, 0x77, 0x1, 0xa8, 0xe5, + 0xf7, 0x9a, 0xe5, 0x3, 0xf7, 0xb, 0xf7, 0xaa, 0x15, 0xf1, 0xc3, 0xbf, + 0xca, 0xd4, 0xd1, 0x3d, 0xfb, 0x2f, 0xfb, 0x23, 0x48, 0x65, 0x58, 0xfb, + 0xc, 0x73, 0xf7, 0x4c, 0xd7, 0x1e, 0xf7, 0x89, 0xf7, 0x11, 0x15, 0xb4, + 0x60, 0x69, 0x9b, 0x61, 0x1b, 0xfb, 0x19, 0x38, 0xfb, 0x1, 0xfb, 0x17, + 0xfb, 0x13, 0xe6, 0x24, 0x65, 0x1d, 0xf7, 0x32, 0xf7, 0x1c, 0xf7, 0xb, + 0x5e, 0xf7, 0xd, 0x2e, 0xd9, 0x1f, 0xe6, 0xbb, 0x6a, 0xa9, 0x2c, 0x59, + 0x62, 0xa5, 0x57, 0xa5, 0x50, 0x8f, 0x19, 0x61, 0x75, 0xbb, 0x84, 0xb8, + 0x6d, 0xb3, 0x6e, 0x19, 0xfb, 0xd, 0x4b, 0xac, 0x6d, 0xf7, 0xf, 0xcc, + 0xbe, 0x5a, 0xae, 0x54, 0x95, 0x4f, 0x19, 0xe, 0xa0, 0x76, 0xf8, 0x29, + 0xc2, 0xd6, 0xf2, 0x73, 0xa, 0xb2, 0xb6, 0x1a, 0xf7, 0x8c, 0x7e, 0xa, + 0xfb, 0x5b, 0x7, 0x3f, 0x71, 0x7c, 0x82, 0x1d, 0xa7, 0xce, 0x1a, 0xf7, + 0x58, 0x46, 0xa, 0xd0, 0xf8, 0x99, 0x15, 0xa8, 0x6, 0xb0, 0x8e, 0xac, + 0x9e, 0xa3, 0x1b, 0xa6, 0x9f, 0x79, 0x82, 0xa0, 0x1f, 0x7e, 0xaa, 0xa2, + 0x7e, 0x9e, 0x1b, 0xd9, 0x98, 0xd0, 0x65, 0xa, 0x5e, 0x83, 0x7a, 0x80, + 0x75, 0x1b, 0x77, 0x72, 0x98, 0x95, 0x74, 0x1f, 0x9b, 0x66, 0x76, 0x9c, + 0x74, 0x54, 0xa, 0x71, 0xa, 0xf7, 0x6e, 0x77, 0x1, 0xb9, 0xe5, 0xf7, + 0x8a, 0xe5, 0x3, 0x2f, 0x1d, 0xa6, 0x15, 0xf3, 0xc2, 0xd4, 0xca, 0xe7, + 0xbe, 0x34, 0x80, 0xa, 0x46, 0x4f, 0x58, 0xfb, 0xc, 0x76, 0xf7, 0x37, + 0xd5, 0x1e, 0xf7, 0x3b, 0xf7, 0x90, 0x3b, 0x1d, 0x9e, 0x74, 0x86, 0x94, + 0xa, 0x9c, 0x57, 0xa, 0x71, 0xa, 0xf7, 0x6e, 0x77, 0x1, 0xa8, 0xe5, + 0xf7, 0x99, 0xe5, 0x3, 0xa8, 0xf7, 0x7b, 0x15, 0xfb, 0x1b, 0xe5, 0x21, + 0x65, 0x1d, 0xf7, 0x1c, 0xee, 0xf7, 0x25, 0x2d, 0xe5, 0xfb, 0x17, 0xfb, + 0x1a, 0x39, 0x21, 0xfb, 0xf, 0x1e, 0xe5, 0xad, 0x15, 0xf3, 0xc9, 0xca, + 0xca, 0xe7, 0xb7, 0x30, 0x80, 0xa, 0x3b, 0x53, 0x58, 0xfb, 0xc, 0x81, + 0xf7, 0x41, 0xd5, 0x1e, 0xc5, 0xf7, 0x86, 0x24, 0xa, 0x71, 0xa, 0xf7, + 0x6a, 0x77, 0x4c, 0x1d, 0xa9, 0x15, 0xf3, 0xc2, 0xd1, 0xca, 0xe7, 0xbe, + 0x3a, 0x80, 0xa, 0x44, 0x49, 0x58, 0xfb, 0xc, 0x78, 0xf7, 0x3a, 0xd5, + 0x1e, 0x73, 0xf7, 0x8d, 0x25, 0x1d, 0xe, 0x71, 0xa, 0xd3, 0xf5, 0x4c, + 0x1d, 0xbb, 0x15, 0xf3, 0xc2, 0xbf, 0xca, 0xe7, 0xbe, 0xfb, 0x1, 0x80, + 0xa, 0x48, 0x65, 0x58, 0xfb, 0xc, 0x74, 0xf7, 0x4c, 0xd5, 0x1e, 0x69, + 0xf7, 0x94, 0x15, 0xa8, 0x6, 0x91, 0x9c, 0x9b, 0xbb, 0xaf, 0x7e, 0x8, + 0x71, 0xd1, 0xb0, 0x71, 0x52, 0x1d, 0x7a, 0x63, 0x7c, 0x7a, 0x71, 0x92, + 0x8, 0x9b, 0x51, 0x50, 0xad, 0x76, 0x54, 0xa, 0x71, 0xa, 0xca, 0xef, + 0x12, 0xa8, 0xe5, 0x79, 0xef, 0xee, 0xef, 0x77, 0xe5, 0x13, 0xf2, 0x2f, + 0x1d, 0xa4, 0x15, 0xf3, 0xc2, 0xd6, 0xca, 0xe7, 0xbe, 0x3d, 0x80, 0xa, + 0x48, 0x46, 0x58, 0xfb, 0xc, 0x74, 0xf7, 0x35, 0xd5, 0x1e, 0x13, 0xec, + 0x79, 0xf7, 0xd4, 0x15, 0x30, 0xa, 0xf7, 0x5b, 0x16, 0x30, 0xa, 0xe, + 0xf7, 0x63, 0x96, 0x76, 0xe1, 0x77, 0xb9, 0xf7, 0xa, 0x8b, 0xcd, 0x55, + 0xb6, 0xf7, 0x85, 0x77, 0x12, 0xf7, 0x76, 0xf7, 0x5, 0x27, 0xe1, 0x13, + 0xee, 0xa9, 0xf7, 0x7c, 0x15, 0xf8, 0x8c, 0xb6, 0xfc, 0x8c, 0x6, 0xf7, + 0x90, 0xfb, 0xb1, 0x15, 0x13, 0xf5, 0x6c, 0xa, 0xf8, 0x4c, 0x4, 0x6c, + 0xa, 0xe, 0x30, 0x76, 0xf1, 0xa7, 0xf8, 0x32, 0xa7, 0xe6, 0x77, 0x1, + 0xa8, 0xe5, 0xf7, 0x99, 0xe5, 0x3, 0xf7, 0x47, 0xc7, 0x15, 0xf7, 0x35, + 0xf7, 0xc6, 0x5, 0xa5, 0x60, 0x99, 0x4f, 0x4b, 0x1a, 0xfb, 0x23, 0x48, + 0x65, 0x58, 0x67, 0x70, 0x9b, 0xa5, 0x77, 0x1e, 0xfb, 0x13, 0xfb, 0x40, + 0x15, 0xb0, 0x6, 0xcc, 0xf7, 0xf, 0x5, 0x7d, 0xa8, 0xaa, 0x84, 0xad, + 0x1b, 0xf7, 0x2c, 0xd1, 0xf7, 0x1f, 0xee, 0xe7, 0x66, 0xcf, 0x4e, 0xb1, + 0x1f, 0xcc, 0xf7, 0x11, 0x5, 0x64, 0x6, 0x52, 0xfb, 0x1, 0x5, 0x97, + 0x6e, 0x6b, 0x91, 0x68, 0x1b, 0xfb, 0x1a, 0x39, 0xfb, 0x1, 0xfb, 0xf, + 0x36, 0xaf, 0x42, 0xc7, 0x61, 0x1f, 0xac, 0xcb, 0x15, 0x6c, 0xc6, 0x83, + 0xdd, 0xb6, 0x1a, 0xf3, 0xc2, 0xbf, 0xca, 0xab, 0xa5, 0x7e, 0x74, 0xa1, + 0x1e, 0xe, 0x76, 0x1d, 0xf7, 0xe6, 0xe1, 0x15, 0x2e, 0x7, 0x8d, 0x88, + 0x87, 0xa, 0x19, 0x22, 0xa, 0x57, 0xf8, 0x39, 0x27, 0x1d, 0x76, 0x1d, + 0xf7, 0x45, 0xf8, 0x8f, 0x21, 0x1d, 0x9b, 0xfd, 0x2d, 0x25, 0xa, 0xe, + 0x81, 0xc7, 0xf8, 0x24, 0x77, 0xf7, 0x88, 0x90, 0xa, 0xea, 0xf8, 0x8f, + 0x25, 0x1d, 0xf7, 0xd, 0xfd, 0x40, 0x25, 0xa, 0xe, 0x81, 0xc7, 0xf8, + 0x13, 0xf7, 0x52, 0x27, 0xef, 0x12, 0xd2, 0xdf, 0x55, 0xef, 0xed, 0xef, + 0x49, 0xdf, 0x13, 0xd2, 0xf7, 0xe8, 0x81, 0x25, 0xa, 0x13, 0xac, 0xfb, + 0x81, 0xf8, 0xd8, 0x15, 0x30, 0xa, 0xf7, 0x5a, 0x16, 0x30, 0xa, 0xe, + 0x96, 0xa, 0xf8, 0xc2, 0x9a, 0xf7, 0x71, 0x77, 0x12, 0xf7, 0xe8, 0xf7, + 0x1b, 0x13, 0x90, 0x40, 0x1d, 0x13, 0x78, 0x41, 0xa, 0xfb, 0x28, 0xf7, + 0x46, 0x24, 0xa, 0x8e, 0x1d, 0xf7, 0x73, 0x77, 0x1, 0xd6, 0xdf, 0xf7, + 0x75, 0xe1, 0x3, 0x90, 0xfb, 0x5b, 0x15, 0x79, 0xf7, 0x86, 0x9d, 0x7, + 0x43, 0x7b, 0xa0, 0xcb, 0x1f, 0xf7, 0x27, 0x7, 0x5f, 0x1d, 0x75, 0x1f, + 0x89, 0x8d, 0x5, 0x8c, 0xf7, 0xbb, 0x6, 0x86, 0x8e, 0x6b, 0x1d, 0x76, + 0x6d, 0x1f, 0xfd, 0x4a, 0x7, 0x60, 0x87, 0x6c, 0x49, 0x87, 0x1e, 0xf7, + 0x2e, 0xf7, 0xb3, 0x15, 0x5a, 0xa, 0x96, 0xa, 0xf8, 0xbb, 0xf7, 0x50, + 0x27, 0xef, 0x12, 0xf1, 0xed, 0xf0, 0xed, 0x13, 0xac, 0x40, 0x1d, 0x13, + 0x6c, 0x41, 0xa, 0xfb, 0x9b, 0xf7, 0x88, 0x15, 0x13, 0x9c, 0x4b, 0xa, + 0x8f, 0xa, 0xf8, 0x60, 0x27, 0xa, 0xe, 0xf7, 0x92, 0x8b, 0x9e, 0xf9, + 0x4, 0x9e, 0x1, 0xee, 0x5d, 0x1d, 0x9b, 0xd4, 0x1f, 0xf7, 0x40, 0x7, + 0xf7, 0x2f, 0xe9, 0x5, 0xbc, 0x7, 0xfb, 0x2f, 0x2c, 0x5, 0xf7, 0x50, + 0x7, 0xe1, 0x73, 0x1d, 0xfb, 0x88, 0x7, 0x34, 0x55, 0x5, 0x5a, 0x7, + 0xe2, 0xc0, 0x5, 0xfb, 0xb, 0x7, 0x33, 0x7a, 0xa, 0xe, 0x8f, 0xa, + 0xf9, 0x3, 0x9b, 0xb7, 0x77, 0x1, 0xe1, 0xdf, 0x3, 0x9e, 0x16, 0xf7, + 0x84, 0x9a, 0x6, 0x51, 0x8e, 0x78, 0x9d, 0xc5, 0x1a, 0xf7, 0xcd, 0x7, + 0xd8, 0xbf, 0x5, 0xb7, 0x7, 0x3e, 0x56, 0x5, 0xf7, 0x7b, 0x5d, 0xa, + 0xfb, 0x40, 0x7, 0x3c, 0x56, 0x5, 0x5f, 0x7, 0xda, 0xbf, 0x5, 0xfb, + 0x91, 0x7, 0x57, 0x77, 0x74, 0x50, 0x84, 0x1d, 0xf8, 0xa8, 0x85, 0xb0, + 0x6c, 0xb2, 0xf7, 0xb6, 0xb0, 0xf7, 0x9e, 0xa9, 0x6d, 0xaf, 0x6b, 0xaf, + 0x12, 0xa9, 0xf7, 0x4, 0xf7, 0xb5, 0xef, 0xf7, 0x7b, 0xa1, 0x13, 0xa7, + 0x0, 0xf8, 0xa7, 0xf7, 0xdd, 0x15, 0xf7, 0x2c, 0x88, 0x8a, 0x81, 0xa4, + 0x1f, 0xab, 0x81, 0x9f, 0x6d, 0x90, 0x5a, 0x8, 0x13, 0xa7, 0x80, 0xa1, + 0xf7, 0x7e, 0x75, 0x6, 0x2a, 0x7d, 0x85, 0x8b, 0xfb, 0x67, 0x1b, 0xf7, + 0x80, 0x7, 0x9e, 0x8f, 0x90, 0xf7, 0x4, 0xf7, 0x4, 0xb8, 0x84, 0x29, + 0x96, 0x1e, 0xa2, 0xf7, 0x21, 0xfb, 0xda, 0x6, 0x64, 0x66, 0x8d, 0x8c, + 0x6e, 0x1f, 0x13, 0xab, 0x0, 0x8d, 0x6e, 0x77, 0x8c, 0x84, 0x1b, 0xfb, + 0x4a, 0xfb, 0x1f, 0x24, 0xfb, 0x8f, 0xfb, 0x64, 0xf7, 0x18, 0xfb, 0x4, + 0xf7, 0x29, 0xa9, 0xa8, 0x8d, 0x8c, 0xa9, 0x1f, 0x13, 0x67, 0x0, 0x8d, + 0xa9, 0xaa, 0x8c, 0xa9, 0x1b, 0xf7, 0xf2, 0x6, 0xb7, 0xf7, 0x3c, 0x5, + 0x73, 0x6, 0x52, 0xfb, 0x2, 0x5e, 0x7b, 0x5b, 0x89, 0xfb, 0x10, 0x89, + 0x18, 0x67, 0x77, 0x8d, 0xb7, 0x1f, 0x27, 0xba, 0x15, 0x13, 0xb3, 0x0, + 0x56, 0x7d, 0x5c, 0x37, 0xfb, 0x23, 0x5b, 0xf7, 0x16, 0xf7, 0x3d, 0xf7, + 0x34, 0xbf, 0xf7, 0x22, 0xf7, 0x1e, 0xe3, 0x96, 0x54, 0x59, 0x1e, 0xe, + 0xf8, 0x1, 0x81, 0xa5, 0x71, 0xce, 0xf7, 0x66, 0xa9, 0xf7, 0x1a, 0xa8, + 0x12, 0xa9, 0xe5, 0xf7, 0x73, 0xd8, 0xf7, 0x33, 0xea, 0x13, 0x7e, 0xf8, + 0x13, 0xe0, 0x15, 0x4c, 0xa4, 0xb3, 0x6b, 0xcc, 0x1b, 0xec, 0xbc, 0xdd, + 0xce, 0xaa, 0x1f, 0x80, 0x91, 0x5, 0x6e, 0x76, 0x60, 0x50, 0x4b, 0x1b, + 0xfb, 0xf, 0x85, 0xf7, 0x32, 0xbf, 0x89, 0x1f, 0xf7, 0x92, 0x6, 0xf7, + 0x36, 0xfb, 0xa, 0xaa, 0x62, 0x40, 0x6a, 0x5e, 0x6c, 0x74, 0x1e, 0xd0, + 0x54, 0x4a, 0x92, 0x6e, 0x1b, 0xfb, 0x43, 0x6d, 0xfb, 0x48, 0x50, 0xfb, + 0x3e, 0xf7, 0x8, 0x4e, 0xe9, 0xa3, 0xd5, 0x8f, 0xe6, 0xb8, 0x1f, 0xfb, + 0x9b, 0xf7, 0x58, 0x15, 0xf7, 0xc, 0xcc, 0xa9, 0xb5, 0xf7, 0x1, 0x92, + 0xfb, 0x3c, 0x52, 0x1e, 0x13, 0xbe, 0xfb, 0x6, 0x71, 0x3f, 0x3d, 0xfb, + 0x7, 0x87, 0xf7, 0x4c, 0xdc, 0x1e, 0xf7, 0xbf, 0x9b, 0x15, 0xa8, 0x8d, + 0xf4, 0xdc, 0xbc, 0xa7, 0x50, 0x5b, 0x1e, 0x70, 0x7, 0xe, 0xf7, 0x5b, + 0x7d, 0xaf, 0x7d, 0x76, 0xf9, 0x1c, 0xb4, 0xf7, 0x66, 0x77, 0x12, 0xd2, + 0xe1, 0xf7, 0x7d, 0xf0, 0x13, 0x7c, 0xd3, 0x7e, 0x15, 0xa1, 0x6, 0x9b, + 0x9f, 0x9c, 0xa0, 0x1e, 0x13, 0xbc, 0xa9, 0xb2, 0x69, 0xd7, 0x1b, 0xf7, + 0x23, 0xcf, 0xeb, 0xe0, 0xf5, 0x32, 0xc4, 0x35, 0xbd, 0x1f, 0x3a, 0xba, + 0x3d, 0xb5, 0xd4, 0x1a, 0xc9, 0xbe, 0xaa, 0xbd, 0xf4, 0xcb, 0x31, 0x39, + 0x9c, 0x1e, 0xa4, 0x6, 0x75, 0x86, 0x1d, 0x72, 0x5f, 0xad, 0x4f, 0x55, + 0xa, 0x74, 0x6, 0x13, 0x7c, 0xf7, 0x61, 0xf8, 0x9c, 0x31, 0xa, 0xab, + 0x81, 0xa1, 0x90, 0x76, 0xf7, 0x30, 0x77, 0xf7, 0xb0, 0xa2, 0x97, 0x77, + 0xf7, 0x87, 0x77, 0x12, 0xf7, 0xac, 0xd1, 0x13, 0x76, 0xbf, 0x87, 0x15, + 0x98, 0x6, 0x94, 0x91, 0x99, 0x8e, 0x97, 0x1b, 0x9b, 0x8c, 0x9e, 0x84, + 0xa0, 0x86, 0x8, 0x13, 0xb6, 0x87, 0x9a, 0x9b, 0x88, 0x9e, 0x1b, 0xcb, + 0xde, 0xb5, 0xe2, 0xc7, 0x66, 0x66, 0xa, 0xb7, 0xb8, 0x76, 0x25, 0xa1, + 0x1e, 0x9a, 0x6, 0x13, 0xae, 0x87, 0xf7, 0x1d, 0x5, 0x80, 0x6, 0x87, + 0x88, 0x7c, 0x84, 0x82, 0x1b, 0x82, 0x80, 0x91, 0x91, 0x7c, 0x1f, 0x13, + 0xb6, 0x8f, 0x7f, 0x7b, 0x7c, 0x1d, 0xe5, 0x58, 0xa1, 0x73, 0x6b, 0x1a, + 0x52, 0x5a, 0x95, 0xa, 0x7b, 0x6, 0x13, 0x76, 0xf7, 0x3, 0xf7, 0xf7, + 0x31, 0xa, 0x80, 0x1d, 0xf9, 0x17, 0x97, 0xa, 0xe8, 0xef, 0x12, 0xf7, + 0x69, 0xed, 0x8f, 0xf1, 0x82, 0xed, 0x13, 0xcc, 0x68, 0xa, 0xa3, 0xdd, + 0x1a, 0xf7, 0x45, 0x7e, 0x1d, 0x13, 0x3c, 0x4b, 0x1d, 0x7, 0x13, 0x4c, + 0x5e, 0x1d, 0x8a, 0xf9, 0x92, 0x15, 0x13, 0x9a, 0x6f, 0x9f, 0x35, 0x1d, + 0x77, 0x62, 0x1d, 0xf7, 0x5b, 0x16, 0x6f, 0x9f, 0x35, 0x1d, 0x77, 0x62, + 0x1d, 0xe, 0x7b, 0xa, 0x8b, 0x77, 0xf8, 0xf2, 0xb1, 0xf7, 0x74, 0x77, + 0x1, 0xaa, 0xa5, 0xf8, 0x99, 0xa2, 0x3f, 0x1d, 0xf7, 0x9d, 0xf9, 0x54, + 0x31, 0xa, 0xe2, 0x8b, 0xa9, 0xf8, 0x1a, 0xa9, 0xf7, 0x74, 0x77, 0x6a, + 0xa, 0x7a, 0x6c, 0x21, 0x1b, 0xfb, 0x13, 0x56, 0x1d, 0xf7, 0x38, 0xf8, + 0x80, 0x31, 0xa, 0xfb, 0x51, 0xa3, 0xf8, 0xb1, 0xaa, 0xf7, 0x84, 0xa8, + 0x1, 0xeb, 0xf8, 0xc, 0x15, 0xf7, 0xd, 0x6, 0x63, 0xfc, 0x3, 0x5, + 0x38, 0x84, 0x79, 0x30, 0x50, 0x1b, 0x80, 0x83, 0x91, 0x92, 0x1f, 0x95, + 0x9a, 0x96, 0x9e, 0x1a, 0xa2, 0x7d, 0x99, 0x75, 0x7e, 0x6a, 0x83, 0x67, + 0x65, 0xa8, 0x6b, 0xbd, 0xeb, 0xba, 0xf1, 0xf7, 0x43, 0xac, 0x1e, 0x9a, + 0xda, 0x93, 0xe4, 0x9c, 0xf7, 0xc, 0x8, 0xf7, 0xc, 0x6, 0x95, 0xaa, + 0x5, 0xfb, 0x12, 0x6, 0xf7, 0x18, 0x97, 0x99, 0xf7, 0x0, 0xcc, 0x1b, + 0x96, 0x96, 0x89, 0x80, 0x1f, 0x82, 0x7e, 0x7f, 0x7b, 0x1a, 0x7f, 0x97, + 0x75, 0xa4, 0xa3, 0xa2, 0x9c, 0xa9, 0xa8, 0x6c, 0xb0, 0x57, 0xfb, 0x26, + 0x6c, 0xfb, 0x6f, 0x59, 0x84, 0x1e, 0xfb, 0x9, 0x6, 0xe, 0x91, 0xa, + 0x96, 0xf8, 0x8f, 0x2b, 0x1d, 0xfb, 0xf, 0xf7, 0x3b, 0x5, 0x49, 0x6, + 0xe, 0x91, 0xa, 0xf7, 0x1b, 0xf8, 0x8f, 0x31, 0xa, 0x73, 0xf8, 0x8f, + 0xc0, 0xf3, 0x77, 0x1, 0xa5, 0xf9, 0x2c, 0x15, 0x6e, 0x9b, 0xfb, 0x14, + 0xf7, 0xe, 0xf7, 0x14, 0x9a, 0xf7, 0x12, 0xaa, 0x1e, 0x6e, 0x6, 0x4e, + 0x82, 0x5c, 0x60, 0x53, 0x1b, 0x4b, 0x66, 0xb6, 0xc8, 0x81, 0x1f, 0xe, + 0x73, 0xf8, 0x9f, 0xef, 0x1, 0xf7, 0xa, 0xed, 0x3, 0xf7, 0xa, 0xf8, + 0xd1, 0x15, 0x36, 0xa, 0xe, 0x73, 0xf8, 0x94, 0xad, 0xf7, 0x17, 0xad, + 0x12, 0xce, 0xf7, 0x5b, 0x69, 0xad, 0x13, 0xe0, 0xce, 0xf8, 0xf7, 0x15, + 0x55, 0xb5, 0x5e, 0xc4, 0x79, 0x1d, 0x53, 0x60, 0x5d, 0x55, 0x1e, 0xad, + 0x8c, 0x15, 0xa3, 0x9f, 0xb4, 0xb8, 0x1e, 0x13, 0xd0, 0xb0, 0xa8, 0x6d, + 0x67, 0x67, 0x6e, 0x6e, 0x65, 0x5e, 0x78, 0xb4, 0xa4, 0x1f, 0xe, 0x73, + 0xfb, 0x24, 0x76, 0xf7, 0x39, 0x77, 0x1, 0xcb, 0xc0, 0x3, 0xf7, 0xc, + 0x16, 0x72, 0x7b, 0x6c, 0x61, 0x64, 0x1a, 0x6d, 0xa0, 0x65, 0xc5, 0xb4, + 0xbd, 0xa9, 0xc2, 0x9a, 0x1e, 0x7b, 0x92, 0x5, 0x6c, 0x81, 0x68, 0x7b, + 0x6e, 0x1b, 0x73, 0x79, 0x99, 0xa8, 0xab, 0xa8, 0xaa, 0x9d, 0x99, 0x1f, + 0xe, 0x73, 0xf8, 0xa8, 0xf5, 0x1, 0x8c, 0xf8, 0xa8, 0x15, 0xa8, 0x6, + 0x91, 0x9c, 0x98, 0xb9, 0xaf, 0x7f, 0x8, 0x6c, 0xe5, 0x9f, 0x77, 0x52, + 0x1d, 0x7a, 0x63, 0x7c, 0x79, 0x71, 0x93, 0x8, 0xa2, 0x43, 0x5e, 0xa6, + 0x76, 0x54, 0xa, 0x73, 0xf8, 0x8f, 0xf7, 0x3f, 0x1, 0x88, 0xf8, 0x8f, + 0x15, 0xb5, 0x6, 0xf7, 0x2c, 0x22, 0x1d, 0x94, 0xfb, 0x28, 0x15, 0xb5, + 0x6, 0xf7, 0x2c, 0x22, 0x1d, 0xe, 0x8a, 0xa, 0xf8, 0x88, 0xb4, 0xfc, + 0x88, 0x6, 0xe, 0xf9, 0x17, 0x8a, 0xa, 0xfa, 0x7c, 0xb4, 0xfe, 0x7c, + 0x6, 0xe, 0x91, 0x1d, 0xf7, 0x7, 0xf7, 0x1f, 0x3, 0xf7, 0x80, 0xf9, + 0x25, 0x15, 0x51, 0xa, 0x6b, 0x99, 0x71, 0x84, 0x87, 0x88, 0x89, 0x86, + 0x1e, 0x89, 0x87, 0x87, 0x8a, 0x87, 0x64, 0xa, 0xe, 0x91, 0x1d, 0xda, + 0xf7, 0x1f, 0x3, 0xf5, 0xf8, 0x45, 0x15, 0x3c, 0xa, 0xad, 0x7c, 0xa5, + 0x92, 0x92, 0x91, 0x8c, 0x8e, 0x1e, 0x54, 0x1d, 0x73, 0xfb, 0xc, 0x76, + 0xf7, 0x2d, 0x76, 0xa7, 0x76, 0xf3, 0x77, 0x12, 0xda, 0xf7, 0x1f, 0x13, + 0xd8, 0xec, 0xfb, 0xe, 0x15, 0x94, 0x78, 0x5, 0x3c, 0xa, 0xad, 0x7e, + 0xa5, 0x92, 0x92, 0x5c, 0xa, 0xe2, 0xf8, 0x45, 0xf7, 0x3, 0xf7, 0x18, + 0x77, 0x1, 0xb6, 0x97, 0x1d, 0x3, 0xf7, 0x38, 0xf9, 0x25, 0x15, 0x48, + 0x1d, 0xf7, 0x7c, 0x16, 0x48, 0x1d, 0xe, 0xe2, 0xf8, 0x5a, 0x76, 0xf7, + 0x18, 0xf7, 0x3, 0x1, 0xa9, 0x97, 0x1d, 0x3, 0xc4, 0xf8, 0x45, 0x48, + 0xa, 0xf7, 0x85, 0x78, 0x48, 0xa, 0xe, 0xe2, 0xfb, 0xc, 0x76, 0xf7, + 0x18, 0xf7, 0x3, 0x38, 0x76, 0x12, 0xb8, 0x97, 0x1d, 0x13, 0xd8, 0xca, + 0xfb, 0xe, 0x15, 0x94, 0x78, 0x5, 0x46, 0x1d, 0x13, 0xb8, 0x33, 0xa, + 0xf7, 0x7c, 0x16, 0x94, 0x78, 0x5, 0xa9, 0x95, 0xdd, 0xcd, 0xd2, 0x1a, + 0x13, 0xd8, 0xde, 0x51, 0x98, 0x74, 0x72, 0x6a, 0x7c, 0x60, 0x63, 0xae, + 0x7e, 0xa5, 0x92, 0x91, 0x5c, 0xa, 0xfb, 0x14, 0x76, 0xf8, 0xbd, 0xe2, + 0xf7, 0x4d, 0x77, 0x1, 0xf7, 0x84, 0xa2, 0x3, 0xf7, 0x85, 0xfb, 0x29, + 0x15, 0xa0, 0x6, 0x8c, 0xf7, 0x23, 0x5, 0xf7, 0xf, 0xa0, 0xec, 0x9e, + 0xb2, 0x1e, 0x61, 0xb6, 0x8b, 0xeb, 0xb9, 0x1a, 0xb2, 0x88, 0xa2, 0x84, + 0x9c, 0x84, 0x8, 0x82, 0xa0, 0x98, 0x83, 0xa4, 0x1b, 0x9d, 0xa4, 0x94, + 0xae, 0xaa, 0x74, 0x97, 0x79, 0x72, 0x7d, 0x81, 0x82, 0x76, 0x1f, 0x79, + 0x83, 0x75, 0x84, 0x63, 0x8a, 0x8, 0xc2, 0x92, 0xaa, 0x93, 0xa1, 0x1e, + 0x95, 0xa5, 0x96, 0x98, 0xa5, 0x1a, 0xa4, 0x75, 0xa1, 0x73, 0x71, 0x76, + 0x75, 0x72, 0x71, 0x96, 0x7e, 0x95, 0x71, 0x1e, 0x93, 0x75, 0x92, 0x6c, + 0x54, 0x1a, 0x5f, 0x8c, 0x73, 0x94, 0x78, 0x94, 0x8, 0x93, 0x79, 0x7e, + 0x93, 0x75, 0x1b, 0x79, 0x74, 0x7f, 0x6c, 0x68, 0xa2, 0x82, 0x9d, 0xa1, + 0x98, 0x91, 0x92, 0x9c, 0x1f, 0x9e, 0x93, 0xa2, 0x95, 0xb9, 0x8e, 0x8, + 0x5d, 0x8b, 0x2b, 0x61, 0x60, 0x1e, 0x9c, 0x64, 0xa2, 0x2a, 0x8d, 0xfb, + 0xf, 0x8, 0xe, 0xfb, 0x57, 0x76, 0xf7, 0x38, 0xe1, 0x7e, 0x76, 0xf8, + 0x50, 0xe1, 0xf7, 0x38, 0x77, 0x12, 0xcf, 0xf7, 0x54, 0x4f, 0xef, 0x4f, + 0x9f, 0x77, 0xf7, 0x54, 0x13, 0xd9, 0x0, 0xf7, 0x84, 0x16, 0x13, 0xda, + 0x0, 0x76, 0xa, 0x13, 0xd9, 0x0, 0xb7, 0xac, 0xad, 0xbc, 0x1b, 0x8c, + 0x5d, 0x62, 0x52, 0x63, 0x1a, 0x13, 0xdc, 0x0, 0x6d, 0xa0, 0x72, 0xa8, + 0xa8, 0xa0, 0xa4, 0xa9, 0x1e, 0x13, 0xb9, 0x0, 0xb3, 0x62, 0xc4, 0x8c, + 0xb9, 0x1e, 0x78, 0x1d, 0x5f, 0x6a, 0x69, 0x5a, 0x1b, 0x13, 0xdc, 0x0, + 0x8f, 0xb3, 0x98, 0xa1, 0xa9, 0xa0, 0x8, 0x67, 0xb6, 0x80, 0xc6, 0xc1, + 0x1a, 0xc1, 0x96, 0xc6, 0xaf, 0xb6, 0x1e, 0x13, 0xd9, 0x0, 0x6d, 0xa0, + 0x7e, 0xa1, 0x87, 0xb3, 0x8, 0x13, 0xda, 0x0, 0x78, 0x1d, 0x13, 0xdc, + 0x0, 0x5f, 0x6a, 0x69, 0x5a, 0x1b, 0x8a, 0xb9, 0xb4, 0xc4, 0xb3, 0x1a, + 0x13, 0xd8, 0x80, 0xa9, 0x76, 0xa4, 0x6e, 0x6e, 0x76, 0x72, 0x6d, 0x1e, + 0x13, 0xbc, 0x0, 0x63, 0xb4, 0x52, 0x8a, 0x5d, 0x1e, 0x76, 0xa, 0xb7, + 0xac, 0xad, 0xbc, 0x1b, 0x87, 0x63, 0x7e, 0x75, 0x6d, 0x76, 0x8, 0x13, + 0xd8, 0x80, 0xaf, 0x60, 0x96, 0x50, 0x55, 0x1a, 0x55, 0x80, 0x50, 0x67, + 0x60, 0x1e, 0x13, 0xd9, 0x0, 0xa9, 0x76, 0x98, 0x75, 0x8f, 0x63, 0x8, + 0xe, 0x84, 0xf7, 0x6d, 0x76, 0xf7, 0xa2, 0x77, 0x1, 0xb3, 0xf7, 0xdf, + 0x15, 0x40, 0xc7, 0x4f, 0xd6, 0xd6, 0xc7, 0xc8, 0xd5, 0xd6, 0x4f, 0xc7, + 0x40, 0x3f, 0x50, 0x4f, 0x40, 0x1e, 0xe, 0xf9, 0x17, 0x80, 0xf7, 0x3, + 0x1, 0xf7, 0x3, 0xf7, 0x4, 0xf7, 0x70, 0xf7, 0x5, 0xf7, 0x70, 0xf7, + 0x4, 0x14, 0x70, 0xf7, 0x3, 0xb6, 0x15, 0x65, 0xad, 0x81, 0xa, 0x72, + 0x99, 0xa, 0xf7, 0xe0, 0x16, 0x65, 0xae, 0x81, 0xa, 0x71, 0x99, 0xa, + 0xf7, 0xe1, 0x16, 0x65, 0xae, 0x4d, 0x1d, 0x71, 0x99, 0xa, 0xe, 0xf9, + 0x17, 0x7f, 0xa8, 0x6f, 0x76, 0xf7, 0xcd, 0xa7, 0x90, 0xa8, 0xf7, 0x9b, + 0xa8, 0x9c, 0x77, 0x12, 0xb2, 0xd4, 0xf7, 0x1f, 0xd4, 0xb7, 0xd4, 0xf7, + 0x1f, 0xd4, 0xa9, 0xd3, 0xf7, 0x20, 0xd4, 0x13, 0x77, 0xf0, 0xf7, 0xe, + 0x82, 0x15, 0xaa, 0x74, 0xf8, 0x27, 0xf9, 0x29, 0x6b, 0xa2, 0x5, 0x13, + 0xbb, 0xf0, 0xfc, 0x79, 0xfb, 0x57, 0x15, 0x3e, 0x8d, 0x1d, 0xed, 0x28, + 0x1e, 0x8a, 0x6, 0x28, 0x60, 0x29, 0x3b, 0x1f, 0xd4, 0x8c, 0x15, 0xbe, + 0x95, 0xec, 0xc7, 0x1e, 0x8c, 0x6, 0xc8, 0x92, 0x28, 0x59, 0x5d, 0x84, + 0x25, 0x4e, 0x50, 0x7f, 0xf0, 0xbb, 0x1f, 0xf7, 0x94, 0xfb, 0xb9, 0x15, + 0x3d, 0xb6, 0x28, 0xef, 0xee, 0xb6, 0xee, 0xd9, 0xda, 0x60, 0xee, 0x29, + 0x1e, 0x8a, 0x6, 0x27, 0x60, 0x28, 0x3c, 0x1f, 0xf7, 0xcf, 0x16, 0x3d, + 0x8d, 0x1d, 0xee, 0x28, 0x1e, 0x8a, 0x6, 0x28, 0x60, 0x28, 0x3c, 0x1f, + 0xfb, 0x86, 0x8c, 0x15, 0xbd, 0x94, 0xed, 0xc8, 0x1e, 0x8c, 0x6, 0xc8, + 0x92, 0x27, 0x5a, 0x5d, 0x83, 0x25, 0x4f, 0x4d, 0x82, 0xf0, 0xbb, 0x1f, + 0xf7, 0xce, 0x16, 0xbd, 0x96, 0xed, 0xc6, 0x1e, 0x8c, 0x6, 0xc9, 0x92, + 0x27, 0x5a, 0x5d, 0x83, 0x25, 0x4e, 0x4e, 0x81, 0xef, 0xbc, 0x1f, 0xe, + 0x73, 0x79, 0xa, 0xca, 0xf7, 0x77, 0x42, 0x1d, 0x97, 0x9b, 0xb1, 0xbc, + 0xab, 0xb6, 0x8, 0xa5, 0xae, 0xa0, 0xaa, 0x91, 0x96, 0x1d, 0x73, 0x79, + 0xa, 0xc6, 0xac, 0x15, 0xf7, 0x67, 0xf7, 0x51, 0x5, 0xaa, 0x5e, 0xfb, + 0x2d, 0xf7, 0x37, 0x51, 0x1d, 0x7e, 0x7a, 0x61, 0x55, 0x6a, 0x5e, 0x8, + 0x74, 0x6b, 0x79, 0x71, 0x8f, 0x1d, 0xfb, 0x52, 0x92, 0x7a, 0x1d, 0xfb, + 0x3c, 0xf8, 0x87, 0x3, 0xfb, 0xb, 0x7d, 0x15, 0xf8, 0x56, 0xf9, 0x46, + 0x5, 0x5d, 0x6, 0xfc, 0x59, 0xfd, 0x46, 0x5, 0xe, 0xf8, 0x1, 0x8b, + 0xc3, 0xf7, 0x57, 0xb3, 0xe4, 0xb3, 0xf7, 0x6c, 0xb1, 0x1, 0xf7, 0x26, + 0xf7, 0x4, 0x2f, 0xf7, 0x4, 0xf8, 0x14, 0xa5, 0x3, 0xf7, 0x3a, 0xf7, + 0x8f, 0x15, 0xfb, 0x2a, 0x9a, 0xf7, 0x1e, 0x26, 0xf7, 0x15, 0x1b, 0xf7, + 0xb, 0xdc, 0xc9, 0xd9, 0xc5, 0x1f, 0x77, 0x95, 0x5, 0x5f, 0x56, 0x59, + 0x59, 0x51, 0x1b, 0xfb, 0x6, 0xfb, 0x18, 0xc8, 0xf7, 0x1a, 0x8a, 0x1f, + 0xf7, 0xc3, 0x6, 0x99, 0xb3, 0x5, 0xfb, 0xd2, 0x6, 0x89, 0xab, 0x89, + 0xa5, 0x8f, 0xaa, 0x8, 0xf7, 0xe4, 0x6, 0x9a, 0xb3, 0x5, 0xfb, 0xee, + 0x6, 0xf7, 0x16, 0xf1, 0xe0, 0xf5, 0x8c, 0x1e, 0xf7, 0x11, 0xba, 0x51, + 0x2c, 0x1f, 0xa5, 0xf7, 0x26, 0x6, 0xa4, 0x49, 0x64, 0x9f, 0x23, 0x1b, + 0xfb, 0x18, 0xfb, 0x7, 0x68, 0xfb, 0x6f, 0x4d, 0x1f, 0xfb, 0xc, 0x6, + 0x7c, 0x63, 0x5, 0xf7, 0x16, 0x6, 0x88, 0x6d, 0x8a, 0x6e, 0x8d, 0x6d, + 0x8, 0xfb, 0x5, 0x6, 0x7c, 0x63, 0x5, 0xe, 0xf9, 0x3, 0xf7, 0x96, + 0x9f, 0x8a, 0x76, 0xf8, 0x16, 0x9f, 0x12, 0xf7, 0x3b, 0xd2, 0xf7, 0x8e, + 0xa5, 0xf7, 0xd0, 0xd2, 0x13, 0xbc, 0xf7, 0x9, 0xf7, 0x96, 0x15, 0xf7, + 0x3f, 0x9f, 0x6, 0x57, 0x91, 0x8d, 0x95, 0xbb, 0x1a, 0xf7, 0xc0, 0xbd, + 0x7, 0xb4, 0x9c, 0x6c, 0x66, 0x94, 0x1f, 0x9f, 0xe3, 0xfb, 0xed, 0x33, + 0x9f, 0x6, 0xb0, 0x94, 0x9c, 0xaa, 0xb5, 0x1b, 0xbc, 0xfb, 0xc0, 0x6, + 0x5b, 0x8d, 0x81, 0x57, 0x85, 0x1e, 0xf7, 0xd3, 0x77, 0x15, 0xf7, 0x17, + 0x9f, 0x6, 0x5e, 0x8f, 0x83, 0xa6, 0xb7, 0x1a, 0xf7, 0x65, 0x8d, 0x7, + 0x13, 0x7c, 0xf7, 0x29, 0xfb, 0xc6, 0x5, 0x96, 0x6, 0xf7, 0x2c, 0xf7, + 0xc8, 0x5, 0x8d, 0xfb, 0x72, 0x6, 0x13, 0xbc, 0x5b, 0x8e, 0x81, 0x57, + 0x85, 0x1e, 0x77, 0xf7, 0x3e, 0x9f, 0x7, 0x57, 0x91, 0x8d, 0x95, 0xbb, + 0x1a, 0xf7, 0x89, 0x7, 0xae, 0x97, 0x9d, 0xb7, 0x8d, 0x1e, 0x9f, 0x24, + 0x7, 0xfb, 0x34, 0xfb, 0xc9, 0xfb, 0x2e, 0xf7, 0xc9, 0x5, 0xfb, 0xd, + 0x77, 0x6, 0xa8, 0xa7, 0x77, 0x6d, 0x97, 0x1f, 0xfb, 0x83, 0x7, 0x5f, + 0x83, 0x70, 0x5f, 0x84, 0x1d, 0xf7, 0x63, 0xf7, 0x70, 0xcd, 0x12, 0x13, + 0x80, 0xa9, 0xf7, 0x70, 0x15, 0xf8, 0x8c, 0xba, 0xfc, 0x8c, 0x6, 0xe, + 0x99, 0x1d, 0xf8, 0x36, 0xab, 0xf7, 0x64, 0xa4, 0x1, 0xee, 0xdf, 0xf7, + 0x4f, 0xdf, 0x3, 0xaa, 0x16, 0xf7, 0x71, 0x9a, 0x6, 0x48, 0x8e, 0x89, + 0xb3, 0xb3, 0x1a, 0xf7, 0xd4, 0x7, 0xa0, 0xf7, 0x9, 0x89, 0x8a, 0x98, + 0x1f, 0xac, 0x86, 0x8e, 0x80, 0x65, 0x1a, 0xfb, 0x92, 0x7, 0x4f, 0x89, + 0x6f, 0x48, 0x87, 0x1e, 0x7c, 0xf7, 0x70, 0x9a, 0x7, 0x58, 0x8f, 0x7b, + 0x9f, 0xcf, 0x1a, 0xf7, 0x90, 0x7, 0xa4, 0x8c, 0xb4, 0x8c, 0xab, 0x1e, + 0x87, 0x8e, 0x5, 0x85, 0x6a, 0x60, 0x87, 0x66, 0x1b, 0xfb, 0x31, 0x6, + 0x8a, 0xce, 0x8b, 0xba, 0x97, 0xa9, 0x8, 0xa8, 0x97, 0xad, 0xae, 0xba, + 0x1b, 0xac, 0x9d, 0x7a, 0x78, 0x99, 0x1f, 0x74, 0x9c, 0x97, 0x72, 0xa8, + 0x1b, 0x9e, 0x9b, 0x9c, 0x9f, 0xbf, 0x4e, 0x9f, 0x4a, 0xfb, 0x20, 0x42, + 0x36, 0xfb, 0x28, 0x86, 0x1f, 0x46, 0x6b, 0xcf, 0xfb, 0xd5, 0x6, 0x51, + 0x78, 0x74, 0x5a, 0x8a, 0x1e, 0xe, 0x99, 0x1d, 0xf8, 0x36, 0xab, 0xf7, + 0x62, 0xa6, 0x1, 0xf0, 0xdf, 0xf7, 0x50, 0xdf, 0x3, 0xab, 0x16, 0xf7, + 0x74, 0x9a, 0x6, 0x61, 0x8f, 0x6e, 0x9a, 0xc2, 0x1a, 0xf7, 0xdd, 0xf7, + 0x50, 0xfb, 0xd8, 0x7, 0x4d, 0x6a, 0x7d, 0x69, 0x88, 0x1e, 0x7c, 0xf7, + 0x6b, 0x9a, 0x7, 0x51, 0x8e, 0x85, 0xa6, 0xb9, 0x1a, 0xf8, 0xe2, 0x7, + 0x86, 0x8d, 0x5, 0x8a, 0x7f, 0x5d, 0x73, 0x7d, 0x1b, 0x7c, 0x7e, 0x94, + 0x92, 0x76, 0x1f, 0x90, 0x7c, 0x78, 0x8f, 0x71, 0x1b, 0x61, 0xfb, 0x11, + 0x78, 0xfb, 0x6a, 0x8a, 0x1f, 0x44, 0x6b, 0xd0, 0xfb, 0xdd, 0x6, 0x69, + 0x78, 0x67, 0x59, 0x87, 0x1e, 0xf7, 0x2d, 0xf8, 0x47, 0x15, 0xe5, 0x89, + 0x89, 0xf7, 0x8, 0xd1, 0x1b, 0xa9, 0x96, 0x78, 0x79, 0x97, 0x1f, 0x79, + 0x97, 0x97, 0x7a, 0xa9, 0x1b, 0x94, 0x8e, 0x8f, 0x8e, 0x8e, 0x1f, 0xfb, + 0x21, 0x7, 0xe, 0x7d, 0x99, 0xf8, 0x56, 0x95, 0xf7, 0x5e, 0x99, 0x6, + 0xfb, 0x6e, 0x8c, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xa7, + 0xa, 0xdf, 0xb, 0xa7, 0x93, 0x8d, 0x8e, 0xc, 0xc, 0xdf, 0x91, 0x97, + 0xc, 0xd, 0xf8, 0x88, 0x14, 0xf7, 0xf9, 0x15, 0xb6, 0x13, 0x0, 0x7b, + 0x2, 0x0, 0x1, 0x0, 0x36, 0x0, 0x3f, 0x0, 0x4f, 0x0, 0x69, 0x0, + 0x6c, 0x0, 0x75, 0x0, 0x8f, 0x0, 0x96, 0x0, 0x9b, 0x0, 0xa6, 0x0, + 0xb1, 0x0, 0xcc, 0x0, 0xd3, 0x0, 0xdc, 0x0, 0xee, 0x0, 0xff, 0x1, + 0x7, 0x1, 0x1b, 0x1, 0x30, 0x1, 0x37, 0x1, 0x43, 0x1, 0x65, 0x1, + 0x6e, 0x1, 0x79, 0x1, 0x7e, 0x1, 0x89, 0x1, 0xbd, 0x1, 0xda, 0x1, + 0xe0, 0x1, 0xe7, 0x2, 0x1c, 0x2, 0x29, 0x2, 0x34, 0x2, 0x3c, 0x2, + 0x52, 0x2, 0x5f, 0x2, 0x78, 0x2, 0x91, 0x2, 0xbb, 0x2, 0xcc, 0x2, + 0xd2, 0x2, 0xe0, 0x2, 0xf6, 0x2, 0xfe, 0x3, 0xc, 0x3, 0x14, 0x3, + 0x1e, 0x3, 0x28, 0x3, 0x34, 0x3, 0x47, 0x3, 0x52, 0x3, 0x74, 0x3, + 0x7b, 0x3, 0x9b, 0x3, 0xba, 0x3, 0xbe, 0x3, 0xcc, 0x3, 0xd7, 0x3, + 0xf1, 0x3, 0xf9, 0x3, 0xff, 0x4, 0x14, 0x4, 0x1b, 0x4, 0x28, 0x4, + 0x2f, 0x4, 0x36, 0x4, 0x3e, 0x4, 0x53, 0x4, 0x5f, 0x4, 0x65, 0x4, + 0x78, 0x4, 0x85, 0x4, 0x90, 0x4, 0xa2, 0x4, 0xb4, 0x4, 0xbd, 0x4, + 0xcf, 0x4, 0xe1, 0x4, 0xe9, 0x4, 0xef, 0x4, 0xf5, 0x4, 0xfb, 0x5, + 0x4, 0x5, 0x15, 0x5, 0x1c, 0x5, 0x26, 0x5, 0x35, 0x5, 0x44, 0x5, + 0x4d, 0x5, 0x54, 0x5, 0x5a, 0x5, 0x5f, 0x5, 0x68, 0x5, 0x6b, 0x5, + 0x78, 0x5, 0x80, 0x5, 0x85, 0x5, 0x91, 0x5, 0x97, 0x5, 0x9b, 0x5, + 0xa6, 0x5, 0xaa, 0x5, 0xb3, 0x5, 0xba, 0x5, 0xbf, 0x5, 0xc4, 0x5, + 0xce, 0x5, 0xd8, 0x5, 0xdf, 0x5, 0xe9, 0x5, 0xf3, 0x5, 0xf7, 0x6, + 0x0, 0x6, 0x9, 0x6, 0x12, 0x6, 0x1b, 0x6, 0x23, 0x6, 0x2c, 0x6, + 0x32, 0x6, 0x38, 0x6, 0x3d, 0x6, 0x41, 0x6, 0x45, 0x9a, 0x16, 0xf7, + 0x5a, 0x9e, 0x6, 0x76, 0x5c, 0x95, 0xb5, 0x96, 0x8e, 0x99, 0x90, 0x98, + 0x1f, 0xb9, 0xf6, 0x5, 0xf7, 0x9a, 0x6, 0xb4, 0x35, 0x5, 0x91, 0x7d, + 0x98, 0x6a, 0x7b, 0x1a, 0x66, 0x6a, 0x80, 0x66, 0x1e, 0x78, 0xf7, 0x93, + 0x9e, 0x7, 0x5f, 0x8e, 0x7d, 0xa0, 0x6b, 0xd4, 0xfb, 0x8d, 0xf8, 0xc2, + 0x18, 0xb, 0x20, 0xa, 0x77, 0x6, 0xfb, 0x64, 0xfc, 0x7f, 0xb, 0x32, + 0xa, 0xfb, 0x6b, 0x52, 0xa, 0x73, 0x2c, 0x1d, 0xbc, 0xc7, 0xb9, 0xbd, + 0xb2, 0x1e, 0xb, 0x3, 0x31, 0x1d, 0xfb, 0x2f, 0x54, 0x5, 0x7c, 0x7, + 0x8d, 0x98, 0x98, 0x53, 0x1d, 0x50, 0x1f, 0xfb, 0x72, 0x7, 0x3d, 0x7a, + 0x7b, 0x4d, 0x88, 0x1e, 0xb, 0x21, 0x1d, 0xe, 0x15, 0x87, 0xa, 0x8, + 0x22, 0xa, 0x2e, 0x7, 0xb, 0x6f, 0xa, 0x44, 0x80, 0x77, 0x73, 0x32, + 0x1b, 0xfb, 0x24, 0xf7, 0x46, 0x6, 0xc2, 0x97, 0xa2, 0x33, 0x1d, 0x78, + 0x6, 0x60, 0xa, 0xfc, 0x3c, 0x7, 0xb, 0x77, 0x1, 0xea, 0xdf, 0x23, + 0xa, 0xb, 0x26, 0x1d, 0x3d, 0x1d, 0xb, 0x28, 0x1d, 0x13, 0xd6, 0x3e, + 0x1d, 0x13, 0xba, 0x3c, 0x1d, 0xe, 0x8c, 0xfb, 0x57, 0x15, 0x43, 0x90, + 0xb5, 0x80, 0x2f, 0xa, 0xb, 0xf7, 0x3, 0xf7, 0x24, 0xc5, 0xf7, 0x1c, + 0xaa, 0x95, 0x1f, 0x7b, 0x92, 0x5, 0x66, 0x74, 0x60, 0x47, 0x32, 0x1b, + 0x49, 0x3a, 0xaa, 0xf7, 0x45, 0x7f, 0x1f, 0xb, 0x15, 0xf8, 0xb0, 0x6, + 0x23, 0x1d, 0xe, 0x3a, 0x1d, 0x72, 0x88, 0x8b, 0x7b, 0x1b, 0x6c, 0xb, + 0x7b, 0x8a, 0x8, 0xf7, 0x5d, 0xf7, 0x82, 0x15, 0xf7, 0x7, 0xf7, 0xa7, + 0xf7, 0x8, 0xfb, 0xa7, 0x5, 0xb, 0x9d, 0x1b, 0x9b, 0xaa, 0x8c, 0xbc, + 0xb5, 0x1f, 0xa5, 0x7, 0x82, 0x80, 0x7e, 0x81, 0x76, 0x1b, 0xb, 0x6f, + 0xa1, 0x35, 0x1d, 0x75, 0x62, 0x1d, 0xb, 0x15, 0xc9, 0x6, 0xf7, 0x11, + 0xf7, 0x3b, 0x5, 0x69, 0x6, 0xfb, 0xe, 0x24, 0xfb, 0xd, 0xf2, 0x5, + 0x69, 0x6, 0xe, 0x99, 0x7, 0x4f, 0x89, 0x89, 0xa2, 0xaf, 0x1a, 0xf7, + 0xeb, 0xfb, 0x32, 0x7a, 0x7, 0xd1, 0x89, 0x8f, 0x6c, 0x63, 0x1a, 0xb, + 0x8c, 0x8f, 0x8e, 0x8c, 0x38, 0x1d, 0xb, 0x61, 0xa, 0xfb, 0x0, 0x44, + 0x1d, 0xd4, 0xf1, 0xf1, 0xf7, 0x3, 0xb, 0x15, 0xf7, 0x53, 0xa3, 0x6, + 0x65, 0x8d, 0x78, 0x9a, 0xa8, 0x1a, 0xf7, 0xe1, 0x7, 0x7d, 0x8e, 0xfb, + 0xa, 0x54, 0x5, 0x74, 0x7, 0x98, 0xaf, 0x8b, 0x8b, 0x93, 0x1b, 0x92, + 0x8b, 0x7c, 0x7e, 0x1f, 0xb, 0x6f, 0xa0, 0x75, 0x9a, 0x1d, 0xa1, 0x41, + 0x1d, 0xb, 0x9d, 0xac, 0xa9, 0xba, 0x80, 0x43, 0x1e, 0x4e, 0x4f, 0xa, + 0xb, 0xf9, 0x63, 0x25, 0x1d, 0xb, 0x92, 0x92, 0x86, 0x82, 0x78, 0x7b, + 0x5e, 0x49, 0x61, 0x1f, 0xb, 0xf8, 0x4c, 0xfc, 0xb8, 0x5, 0x9c, 0xf8, + 0x98, 0x6, 0xf7, 0x9, 0xab, 0x99, 0xca, 0x92, 0x1e, 0x9e, 0xfb, 0x7f, + 0x78, 0x7, 0xcf, 0x86, 0xa7, 0x79, 0xfb, 0x7, 0x1a, 0xfb, 0xd8, 0x89, + 0x7, 0xfc, 0x13, 0xf8, 0x75, 0x5, 0xfb, 0x3f, 0x78, 0x6, 0xb3, 0x9b, + 0x86, 0x59, 0xb4, 0x1f, 0xfc, 0x43, 0x78, 0xa, 0xb, 0xfb, 0x7, 0xf7, + 0x87, 0x5, 0x88, 0x92, 0x84, 0x9b, 0x98, 0x1a, 0xa6, 0xae, 0x96, 0xa2, + 0x8c, 0x1e, 0x9a, 0xfb, 0x62, 0x7d, 0x7, 0x98, 0x89, 0xa5, 0x7c, 0x97, + 0x72, 0xb, 0x3f, 0xa, 0x7c, 0x60, 0x63, 0xb, 0xa7, 0xa7, 0x75, 0xa1, + 0x6f, 0x6f, 0xb, 0x15, 0xfb, 0x53, 0xf7, 0x2a, 0xfb, 0x2d, 0xf7, 0x56, + 0xf7, 0x53, 0xf7, 0x29, 0xf7, 0x2d, 0xf7, 0x53, 0xf7, 0x53, 0xfb, 0x29, + 0xf7, 0x2f, 0xfb, 0x53, 0xfb, 0x56, 0xfb, 0x2a, 0xfb, 0x2f, 0xfb, 0x53, + 0x1e, 0xc2, 0x16, 0xf7, 0x35, 0xf7, 0x12, 0xf7, 0x23, 0xf7, 0x37, 0xf7, + 0x34, 0xf7, 0x11, 0xfb, 0x22, 0xfb, 0x36, 0xb, 0xa9, 0x95, 0xdd, 0xcd, + 0xd2, 0x1a, 0xde, 0x51, 0x98, 0x74, 0x72, 0x6a, 0xb, 0x6e, 0x8b, 0xa8, + 0xa8, 0x1f, 0xf7, 0x57, 0x7, 0xc7, 0x8b, 0xb, 0x45, 0xa, 0x9a, 0xb4, + 0x9f, 0x4a, 0xa, 0xb, 0x77, 0x1, 0xf7, 0x7, 0xf1, 0x3, 0x9d, 0x16, + 0xf7, 0xbd, 0x9e, 0x6, 0x59, 0xa, 0x9e, 0xfb, 0xbd, 0x78, 0x7, 0x49, + 0xa, 0xb, 0x6f, 0xa0, 0x76, 0xa7, 0xa7, 0xa1, 0xa0, 0xa7, 0xa7, 0x75, + 0x55, 0x1d, 0xb, 0xa0, 0x6, 0x95, 0xc2, 0xa1, 0xf7, 0x3, 0xa7, 0x1a, + 0xa6, 0x74, 0xa3, 0x78, 0x77, 0x74, 0x73, 0x70, 0x6f, 0xa1, 0xfb, 0x3, + 0x95, 0x54, 0x1e, 0xb, 0x7e, 0x6c, 0x9d, 0x70, 0x1b, 0x5d, 0x89, 0x65, + 0x85, 0x71, 0xa2, 0x6b, 0xbd, 0xd6, 0xb7, 0xcd, 0xf7, 0x1a, 0xbe, 0x1f, + 0xf7, 0x2e, 0xf8, 0x22, 0xb, 0x7, 0xf7, 0xf, 0x44, 0xa6, 0x5d, 0x50, + 0x65, 0x68, 0x5d, 0x5a, 0x1e, 0xda, 0x7, 0x84, 0x8d, 0x5d, 0x7a, 0x5c, + 0x7c, 0x5e, 0x7e, 0x19, 0x7a, 0x7, 0x8d, 0x8f, 0x96, 0x53, 0x1d, 0x4c, + 0x1f, 0xfb, 0x82, 0x7, 0x50, 0x7a, 0x74, 0x5c, 0x88, 0x1e, 0xb, 0xfb, + 0x42, 0x8b, 0xf7, 0x1f, 0xcb, 0x1e, 0xf7, 0xca, 0x7, 0xd2, 0x97, 0xa2, + 0xda, 0x91, 0x1e, 0xb, 0x15, 0x46, 0x1d, 0x33, 0xa, 0xb, 0xde, 0x87, + 0x99, 0x75, 0x41, 0x89, 0x1d, 0x44, 0x7f, 0x70, 0x36, 0x89, 0x1e, 0xb, + 0x97, 0x98, 0x8d, 0x19, 0x9a, 0xfb, 0x1b, 0x7c, 0x7, 0xab, 0x8c, 0x9b, + 0x77, 0x78, 0x1a, 0x82, 0x7e, 0x6b, 0x81, 0x70, 0x1e, 0xb, 0x36, 0xa, + 0xf7, 0x5b, 0x16, 0x36, 0xa, 0xe, 0x83, 0x1d, 0x96, 0xad, 0xb1, 0x1b, + 0x97, 0x98, 0x86, 0x45, 0x1d, 0x76, 0x99, 0xb, 0x2a, 0xa, 0x40, 0xa, + 0xef, 0xfb, 0x29, 0xb, 0x6, 0xf7, 0x3, 0xa5, 0x7b, 0x32, 0x9a, 0x1f, + 0xa4, 0xb, 0x7, 0xfb, 0x37, 0x4b, 0x34, 0x69, 0x27, 0x1a, 0x48, 0xb, + 0x42, 0x1d, 0x96, 0x9a, 0xac, 0xb6, 0xa9, 0xb3, 0x8, 0xa8, 0xb2, 0xb, + 0x82, 0x9e, 0x5, 0x6d, 0x81, 0x39, 0x49, 0x44, 0x1a, 0x38, 0xc5, 0x7e, + 0xa2, 0xa4, 0xac, 0x9a, 0xb6, 0xb3, 0xb, 0x7, 0x6a, 0x84, 0x81, 0x82, + 0x83, 0x1e, 0x75, 0x70, 0x6d, 0xb, 0xf8, 0x31, 0xe5, 0x15, 0xf7, 0x48, + 0x31, 0xd1, 0xe5, 0xc2, 0xc4, 0x54, 0xf7, 0x96, 0x5c, 0x6, 0xfb, 0x5f, + 0xfb, 0x9e, 0x5, 0xb8, 0x93, 0x15, 0xf7, 0x19, 0xf7, 0x44, 0x5, 0x8d, + 0xfb, 0x44, 0x6, 0xb, 0x1b, 0x48, 0x6d, 0x4d, 0x5f, 0x7d, 0xa, 0x1b, + 0x31, 0x30, 0x53, 0xfb, 0x6, 0x28, 0xcb, 0x5f, 0xe7, 0x56, 0x1f, 0xf7, + 0x27, 0x35, 0x9b, 0x69, 0x52, 0x1a, 0x55, 0x63, 0x52, 0x3b, 0xfb, 0x1b, + 0x58, 0xf7, 0x16, 0xba, 0x78, 0x1e, 0xb, 0x6, 0xb0, 0xe0, 0x7a, 0x92, + 0x7c, 0x73, 0x7f, 0x89, 0x73, 0x8a, 0x19, 0xfb, 0xd, 0x6, 0xe1, 0xe0, + 0x5, 0xa8, 0xa7, 0xc2, 0xc1, 0xcd, 0x1a, 0xce, 0x52, 0xb4, 0x48, 0x40, + 0x5a, 0xb, 0x7d, 0x97, 0x7d, 0xa, 0xf7, 0x67, 0xf7, 0x51, 0x5, 0xa9, + 0x5d, 0xfb, 0x2c, 0xf7, 0x38, 0x51, 0x1d, 0xb, 0x41, 0x8d, 0x73, 0x60, + 0x1d, 0xa4, 0x9c, 0xd4, 0x8e, 0x1e, 0xb, 0xf7, 0x8a, 0x7, 0xb1, 0x91, + 0xc3, 0xa7, 0xaf, 0x1b, 0xf7, 0xe, 0x90, 0xfb, 0x36, 0x74, 0xfb, 0x42, + 0x31, 0x78, 0x6a, 0x54, 0x5c, 0xb6, 0xa2, 0x1f, 0xe, 0xf8, 0x1, 0x7d, + 0xaf, 0xf8, 0xfe, 0xaf, 0xb, 0x88, 0x1d, 0x13, 0xb8, 0x54, 0x1d, 0x7, + 0x87, 0x8d, 0x56, 0x7a, 0x56, 0x7d, 0x56, 0x6f, 0x1d, 0x97, 0x94, 0x8c, + 0x98, 0x1b, 0xb2, 0x91, 0x7b, 0x5e, 0x1f, 0xb, 0x72, 0x1d, 0xec, 0xf7, + 0x70, 0x1e, 0xb, 0x97, 0x16, 0xf7, 0x7f, 0x9e, 0x6, 0x42, 0x8e, 0x76, + 0xab, 0xf2, 0x1a, 0xb, 0xca, 0x86, 0xa3, 0x7b, 0x3c, 0x1a, 0xb, 0xfb, + 0x38, 0xfb, 0x38, 0xfb, 0x37, 0xb, 0x97, 0x16, 0xf8, 0xb0, 0x6, 0x39, + 0x1d, 0xb, 0x1b, 0x75, 0x7e, 0x78, 0x7a, 0x5b, 0xc8, 0x88, 0x9a, 0xf7, + 0x29, 0xbe, 0xdd, 0xbc, 0xd7, 0x56, 0xa9, 0x6a, 0x97, 0x1f, 0xb, 0x1b, + 0x84, 0x84, 0x90, 0x94, 0x9e, 0x9b, 0xb8, 0xcd, 0xb5, 0x1f, 0xb, 0xad, + 0x94, 0x1f, 0x6e, 0x6, 0xb, 0xa7, 0x5a, 0xa9, 0x1f, 0xfb, 0x0, 0xcb, + 0x5, 0x66, 0xa1, 0x85, 0xa8, 0x9f, 0x1a, 0xa5, 0xa0, 0xb2, 0xc2, 0xb, + 0x15, 0x54, 0xb7, 0x5f, 0xc2, 0x79, 0x1d, 0x54, 0x5f, 0x5e, 0x54, 0x1e, + 0xb, 0xf7, 0x6a, 0x16, 0xf7, 0xc6, 0x9e, 0x6, 0x31, 0x8c, 0x7e, 0xb, + 0xfb, 0x34, 0xfb, 0x13, 0xfb, 0x22, 0xfb, 0x32, 0xfb, 0x36, 0xfb, 0x13, + 0xf7, 0x22, 0xf7, 0x34, 0x1e, 0xb, 0x1, 0xc0, 0x9d, 0x3, 0xa6, 0x16, + 0xf8, 0xd, 0x6, 0x99, 0xf7, 0x1b, 0x79, 0x8f, 0x5, 0x3d, 0x7b, 0xb, + 0x6f, 0xa0, 0x76, 0x9a, 0x1d, 0xa0, 0x41, 0x1d, 0xb, 0xa3, 0x9e, 0x9e, + 0xa3, 0xa3, 0x78, 0x9e, 0x73, 0x73, 0x78, 0x78, 0x73, 0x73, 0x9e, 0x78, + 0xa3, 0x1f, 0xb, 0x1, 0xef, 0xf1, 0xf7, 0x7b, 0xf7, 0x1, 0x3, 0x9b, + 0x16, 0xf7, 0xac, 0x9e, 0x6, 0x3e, 0x8d, 0x7a, 0xb, 0xf8, 0x1, 0x7d, + 0xb7, 0xf9, 0xc, 0x77, 0xb, 0xa2, 0xf7, 0x7c, 0x74, 0x6, 0xb, 0x15, + 0xfb, 0x69, 0xf7, 0x26, 0xb, 0x81, 0xa7, 0xf8, 0x32, 0xa7, 0xb, 0x77, + 0x1, 0xf7, 0xcf, 0xf1, 0x3, 0x68, 0xa, 0xb, 0x1, 0xdb, 0xdf, 0xf7, + 0x44, 0xdf, 0x3, 0x9b, 0x16, 0xf7, 0x6a, 0x9a, 0x6, 0x57, 0x8e, 0x7d, + 0xb, 0x7b, 0x1d, 0xf8, 0x3e, 0x9a, 0xa, 0xb, 0x5, 0x82, 0x98, 0x83, + 0x9e, 0x96, 0x1a, 0xa7, 0xa4, 0xb, 0x5a, 0x6a, 0xad, 0x5f, 0x1b, 0x70, + 0x78, 0x7a, 0x71, 0x71, 0x9e, 0x7a, 0xa6, 0x1f, 0xb, 0x15, 0xa2, 0x8e, + 0x5, 0xc6, 0x88, 0xb7, 0x6a, 0x58, 0x1a, 0x72, 0x7e, 0x62, 0x4f, 0xb, + 0x7, 0xfb, 0x0, 0x76, 0x72, 0x3f, 0x86, 0x1e, 0xb, 0xc1, 0x76, 0xf8, + 0x13, 0x77, 0x1, 0xb, 0x74, 0x78, 0x4b, 0x87, 0x1e, 0xb, 0xf7, 0x92, + 0x8b, 0xb1, 0xb, 0x6e, 0xa, 0xf7, 0x8c, 0x77, 0x1, 0xf3, 0xf1, 0xb, + 0x83, 0x1f, 0xe, 0x7, 0xb0, 0xb1, 0xaa, 0x9f, 0xa9, 0x1b, 0xc6, 0x9d, + 0x67, 0x4e, 0x1f, 0xb, 0xee, 0xf1, 0xf7, 0x9c, 0xa2, 0xac, 0xa4, 0xb, + 0xfb, 0x10, 0xfb, 0x23, 0xb, 0x7b, 0xa0, 0xa0, 0xaf, 0x9c, 0xb0, 0xaa, + 0x70, 0xa5, 0x6d, 0x6d, 0xb, 0x8b, 0x91, 0x1b, 0xb7, 0x8b, 0xb, 0xa0, + 0x8a, 0x1d, 0xb, 0x12, 0xb0, 0xe3, 0x46, 0xe3, 0xf7, 0x23, 0xdc, 0x13, + 0xda, 0xb, 0x74, 0xa, 0xad, 0xb, 0x65, 0x1a, 0x4f, 0x3e, 0x97, 0x60, + 0x9a, 0x1e, 0xe, 0xba, 0x9c, 0xb1, 0x9a, 0xc1, 0x99, 0xb, 0x9e, 0xfb, + 0xaf, 0x7, 0xb, 0x66, 0xc1, 0xe9, 0x99, 0xb, 0xf7, 0x5d, 0xbc, 0x12, + 0x13, 0x80, 0xf7, 0x5d, 0x4, 0xb, 0xba, 0xf7, 0x66, 0xf7, 0x5, 0xfb, + 0x2, 0xfb, 0x4f, 0xb, 0xf7, 0xb3, 0xf7, 0xa0, 0x70, 0x1d, 0xb, 0x7, + 0x43, 0x8b, 0x6a, 0x37, 0x85, 0x1e, 0xf7, 0x4e, 0xb, 0xfb, 0x5b, 0x15, + 0x80, 0xa0, 0xa7, 0x86, 0xa7, 0x1b, 0xb, 0x3c, 0xa0, 0x76, 0xb, 0x77, + 0x1, 0xd2, 0xdf, 0xf7, 0x46, 0xdf, 0x3, 0xb, 0x73, 0xf8, 0xa4, 0x76, + 0xf7, 0x3b, 0x77, 0x1, 0xb, 0xf7, 0xf, 0xfb, 0x34, 0x76, 0xf9, 0xf1, + 0x77, 0xb, 0xa9, 0xaf, 0xaf, 0xa9, 0x6d, 0x67, 0x67, 0x6d, 0xb, 0x8f, + 0x7b, 0x1b, 0x6c, 0x8a, 0x81, 0x1d, 0xb, 0x7b, 0x69, 0x29, 0x78, 0xe2, + 0xc0, 0x7f, 0x1e, 0xb, 0xfb, 0x6e, 0xdf, 0x37, 0xf1, 0xb, 0xf7, 0x54, + 0xfb, 0x41, 0x77, 0xb, 0x1a, 0xfb, 0x38, 0x7, 0xb, 0x72, 0x6b, 0x1e, + 0xb, 0xf7, 0x6, 0x3, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp b/core/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp new file mode 100644 index 0000000000..2875863037 --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp @@ -0,0 +1,1626 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSerifBoldFontData[19395] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x13, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x2d, 0x42, + 0x6f, 0x6c, 0x64, 0x0, 0x1, 0x1, 0x1, 0x26, 0xf8, 0x10, 0x0, 0xf8, + 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x14, 0x4, 0xfb, + 0x3c, 0xfb, 0x8e, 0xfa, 0x7c, 0xfa, 0xd, 0x5, 0x1c, 0x7, 0x67, 0xf, + 0x1c, 0x8, 0xbe, 0x11, 0xaf, 0x1c, 0x44, 0x8e, 0x12, 0x0, 0x4, 0x1, + 0x1, 0x5, 0x2f, 0x43, 0x52, 0x45, 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, + 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x43, + 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, + 0x54, 0x46, 0x0, 0x7b, 0x2, 0x0, 0x1, 0x0, 0xf, 0x0, 0x4f, 0x0, + 0x54, 0x0, 0x62, 0x0, 0x6d, 0x0, 0x78, 0x0, 0x96, 0x0, 0xbb, 0x0, + 0xbe, 0x0, 0xc7, 0x0, 0xd6, 0x0, 0xdc, 0x0, 0xef, 0x0, 0xf8, 0x1, + 0x5, 0x1, 0x12, 0x1, 0x38, 0x1, 0x45, 0x1, 0x53, 0x1, 0x5a, 0x1, + 0x6b, 0x1, 0x73, 0x1, 0x7e, 0x1, 0x87, 0x1, 0x8b, 0x1, 0x9b, 0x1, + 0xa6, 0x1, 0xab, 0x1, 0xb6, 0x1, 0xce, 0x1, 0xe8, 0x1, 0xf3, 0x1, + 0xfa, 0x2, 0x21, 0x2, 0x33, 0x2, 0x38, 0x2, 0x41, 0x2, 0x4b, 0x2, + 0x70, 0x2, 0x94, 0x2, 0xa2, 0x2, 0xad, 0x2, 0xcf, 0x2, 0xd5, 0x2, + 0xe0, 0x2, 0xec, 0x2, 0xf2, 0x3, 0x8, 0x3, 0x10, 0x3, 0x17, 0x3, + 0x20, 0x3, 0x29, 0x3, 0x30, 0x3, 0x37, 0x3, 0x3b, 0x3, 0x48, 0x3, + 0x53, 0x3, 0x61, 0x3, 0x79, 0x3, 0x7f, 0x3, 0x87, 0x3, 0x8f, 0x3, + 0x96, 0x3, 0x9d, 0x3, 0xb2, 0x3, 0xb6, 0x3, 0xc0, 0x3, 0xc6, 0x3, + 0xcf, 0x3, 0xd5, 0x3, 0xdb, 0x3, 0xef, 0x3, 0xfe, 0x4, 0x9, 0x4, + 0x14, 0x4, 0x1b, 0x4, 0x2d, 0x4, 0x35, 0x4, 0x41, 0x4, 0x47, 0x4, + 0x4d, 0x4, 0x5e, 0x4, 0x6f, 0x4, 0x79, 0x4, 0x89, 0x4, 0x98, 0x4, + 0xa5, 0x4, 0xae, 0x4, 0xb3, 0x4, 0xb8, 0x4, 0xc6, 0x4, 0xd4, 0x4, + 0xe1, 0x4, 0xee, 0x4, 0xf1, 0x4, 0xf5, 0x5, 0x1, 0x5, 0xb, 0x5, + 0x11, 0x5, 0x17, 0x5, 0x20, 0x5, 0x2b, 0x5, 0x36, 0x5, 0x41, 0x5, + 0x48, 0x5, 0x4d, 0x5, 0x51, 0x5, 0x54, 0x5, 0x5e, 0x5, 0x68, 0x5, + 0x72, 0x5, 0x7c, 0x5, 0x86, 0x5, 0x90, 0x5, 0x9a, 0x5, 0x9e, 0x5, + 0xa7, 0x5, 0xb0, 0x5, 0xb9, 0x5, 0xc0, 0x5, 0xc6, 0x5, 0xcb, 0x5, + 0xcf, 0x15, 0x3a, 0xa, 0x20, 0xa, 0x7f, 0x6d, 0x88, 0x86, 0x55, 0x83, + 0x19, 0x31, 0x1d, 0x3c, 0xa, 0x71, 0x29, 0x1b, 0x4a, 0x78, 0x97, 0xb7, + 0x1f, 0xf7, 0x86, 0x7, 0xee, 0xb4, 0x6d, 0xfb, 0x11, 0x97, 0x1f, 0xaf, + 0xf7, 0xe6, 0x67, 0x6, 0xfb, 0x10, 0x7c, 0x62, 0x72, 0x2b, 0x1b, 0xf7, + 0x6d, 0x7, 0xb6, 0x9d, 0x9e, 0xc2, 0xf7, 0x1b, 0xc8, 0x72, 0xfb, 0x22, + 0xa2, 0x1e, 0xae, 0xf7, 0x5d, 0xfc, 0xd5, 0x53, 0x1d, 0xfc, 0x81, 0x7, + 0x4d, 0x6c, 0x9b, 0x52, 0x85, 0x1e, 0xb, 0x15, 0xc3, 0x22, 0xa, 0xb, + 0x32, 0x1d, 0x31, 0xa, 0x2d, 0xb6, 0xfb, 0x3, 0xfb, 0x10, 0x51, 0x3a, + 0x1d, 0xb, 0x29, 0xa, 0x80, 0x7f, 0xa, 0x9a, 0x7c, 0xa4, 0x7c, 0x1f, + 0xb, 0x27, 0x1d, 0x69, 0x7, 0xb4, 0x84, 0x93, 0x7f, 0x38, 0xa, 0xb, + 0x3f, 0xc9, 0x6c, 0xbb, 0xa3, 0xd1, 0x90, 0xcc, 0xcc, 0x1e, 0x8a, 0xb7, + 0x15, 0x7b, 0x7d, 0x74, 0x70, 0x69, 0x1b, 0x67, 0x7c, 0xaf, 0xaa, 0xe2, + 0xee, 0xa8, 0xa2, 0x90, 0x1f, 0xb, 0x5e, 0x8c, 0x80, 0x9d, 0xb2, 0x1a, + 0xf7, 0xfc, 0xfb, 0x5d, 0x69, 0x7, 0xad, 0x88, 0xa7, 0x8a, 0x54, 0x1a, + 0xfb, 0xa5, 0x7, 0x78, 0x78, 0x72, 0x72, 0x65, 0x1b, 0x54, 0x8a, 0xb6, + 0xa7, 0x1f, 0xf7, 0xe7, 0xfb, 0x50, 0xb, 0x22, 0x1d, 0xe, 0x4e, 0xa, + 0xed, 0xf7, 0x4, 0x29, 0x2e, 0xa, 0xb, 0x67, 0xa8, 0x74, 0xa, 0xa8, + 0xa8, 0xaf, 0xaf, 0x6e, 0x61, 0xa, 0x6e, 0x61, 0x1d, 0xb, 0x34, 0xa, + 0x1f, 0x39, 0x1d, 0xb, 0x64, 0x8f, 0x83, 0xa1, 0xaa, 0x1a, 0xf8, 0x6, + 0xfb, 0x54, 0x69, 0x7, 0xb1, 0x84, 0x9a, 0x84, 0x5e, 0x1a, 0xb, 0x15, + 0x2e, 0x1d, 0xf7, 0x66, 0x16, 0x2e, 0x1d, 0xe, 0x67, 0xa7, 0x6f, 0xaf, + 0xaf, 0xa8, 0xa7, 0xaf, 0xaf, 0x6e, 0x6f, 0x1d, 0xb, 0xf7, 0xeb, 0xbf, + 0x15, 0x4a, 0x7, 0xc4, 0x9e, 0x99, 0x8c, 0x28, 0xa, 0xb, 0x33, 0xbc, + 0x31, 0xef, 0xef, 0xbc, 0xe5, 0xe3, 0xe3, 0x5a, 0xe5, 0x27, 0x27, 0x5a, + 0x31, 0x33, 0x1e, 0xf7, 0x6, 0x16, 0xd0, 0x8b, 0xe0, 0xae, 0xae, 0x8b, + 0x36, 0x46, 0x46, 0x8b, 0x36, 0x68, 0x68, 0x8b, 0xe0, 0xd0, 0x1e, 0xb, + 0xf7, 0x48, 0xf7, 0x5d, 0x15, 0xe9, 0xf7, 0x87, 0xf0, 0xfb, 0x87, 0x5, + 0xe, 0x15, 0x6f, 0x91, 0x93, 0x61, 0xd1, 0x1b, 0xb8, 0xb0, 0xa3, 0xac, + 0xa7, 0x1f, 0xb, 0xc0, 0xa9, 0xf7, 0x5, 0x3d, 0xa, 0xb, 0x54, 0x8f, + 0x63, 0x8e, 0xcb, 0x1a, 0xf8, 0x64, 0x7, 0xcf, 0xbb, 0x8c, 0xba, 0x8d, + 0x1e, 0xae, 0xb, 0x5c, 0xa, 0xf7, 0x8b, 0x77, 0x27, 0xa, 0xb, 0x94, + 0x1a, 0x13, 0xbc, 0x3b, 0xa, 0x13, 0x8c, 0x24, 0xa, 0xe, 0x2a, 0xa, + 0x85, 0x93, 0x85, 0x92, 0x94, 0x1a, 0xb, 0x16, 0x2a, 0x1d, 0xe, 0x73, + 0x99, 0x5, 0x74, 0x78, 0x68, 0x5f, 0x50, 0x1b, 0x2c, 0x75, 0xf1, 0xe0, + 0x88, 0x1f, 0xb, 0x4e, 0x4c, 0x47, 0xc1, 0x8b, 0x97, 0xbf, 0x9a, 0xb1, + 0x9d, 0xb, 0x3b, 0xa, 0x24, 0xa, 0xb, 0x65, 0x1d, 0xf7, 0x7f, 0x45, + 0xa, 0xfb, 0x25, 0x5f, 0x1d, 0xb, 0x9a, 0x1a, 0xa7, 0x97, 0x91, 0xd0, + 0x1e, 0xae, 0xfb, 0xe3, 0x68, 0x7, 0xbe, 0x88, 0xa3, 0x60, 0x90, 0x82, + 0xf7, 0x4b, 0xfb, 0xd6, 0x18, 0xb, 0xfc, 0x31, 0x15, 0xf7, 0x89, 0xa9, + 0x6, 0x4b, 0x85, 0x9b, 0xb3, 0x1f, 0xf7, 0xdb, 0x46, 0xa, 0xfb, 0x67, + 0x7, 0x65, 0x87, 0x74, 0x40, 0x8c, 0x1e, 0xb, 0x9f, 0xa1, 0x92, 0x70, + 0x53, 0x3a, 0x52, 0x6f, 0x78, 0x1f, 0xb, 0x15, 0x2a, 0x1d, 0xf7, 0x66, + 0x38, 0x1d, 0x15, 0x2e, 0xca, 0x36, 0xf0, 0xf0, 0xca, 0xe0, 0xe8, 0xe8, + 0x4c, 0xe0, 0x26, 0x26, 0x4c, 0x36, 0x2e, 0x1e, 0xf7, 0xe, 0x16, 0xbd, + 0x8b, 0xef, 0xb5, 0xb5, 0x8b, 0x27, 0x59, 0x59, 0x8b, 0x27, 0x61, 0x61, + 0x8b, 0xef, 0xbd, 0x1e, 0xb, 0xfb, 0x14, 0xf7, 0x8c, 0x7b, 0x9a, 0x3d, + 0x1d, 0xfb, 0x1d, 0x7, 0x38, 0x73, 0x89, 0x46, 0x84, 0x1e, 0xb, 0x33, + 0x1d, 0x5d, 0x67, 0xb, 0xfb, 0x22, 0x60, 0xfb, 0x13, 0x63, 0x23, 0x1a, + 0xb, 0x15, 0xb5, 0x6, 0x9d, 0x8c, 0x9b, 0xa8, 0xab, 0x1b, 0xb, 0x1b, + 0xfb, 0x52, 0x71, 0xfb, 0x1c, 0x4e, 0x5d, 0x8b, 0x35, 0xf7, 0x3f, 0x39, + 0x1f, 0xf7, 0x18, 0x4c, 0xba, 0x73, 0x48, 0x1a, 0x7e, 0x82, 0x28, 0xfb, + 0xc, 0xfb, 0x13, 0x5f, 0xf7, 0x5, 0xf0, 0x77, 0x1e, 0x64, 0x6, 0xb, + 0xf7, 0x4c, 0xcb, 0xf7, 0xd, 0xe3, 0xf7, 0x1, 0x3f, 0xc5, 0x69, 0x9c, + 0x1f, 0xfb, 0x7b, 0xf7, 0x7, 0x78, 0xa1, 0xc1, 0x1a, 0xcc, 0xc2, 0xa9, + 0xbf, 0xf7, 0xa, 0xbd, 0xfb, 0x7, 0x45, 0x9d, 0x1e, 0xb1, 0x6, 0xb, + 0x1e, 0xad, 0xfb, 0x8e, 0x69, 0x7, 0xa4, 0x87, 0x90, 0x8b, 0x97, 0x74, + 0x8, 0xb, 0xfb, 0x5f, 0x7d, 0xd3, 0xf7, 0x4f, 0xb0, 0xf7, 0x34, 0xaa, + 0xb, 0xa5, 0x9b, 0xb9, 0x1a, 0xc3, 0x5c, 0xa3, 0x4d, 0x3e, 0x59, 0x56, + 0x65, 0x78, 0x1e, 0x9f, 0x84, 0x5, 0x9a, 0x95, 0xa2, 0xae, 0xb1, 0x1b, + 0xbb, 0xa0, 0x71, 0x68, 0x54, 0x56, 0x7c, 0x6c, 0x82, 0x1f, 0xb, 0x54, + 0xa, 0xf8, 0x5a, 0x77, 0xb, 0x49, 0x1d, 0xf7, 0x84, 0x77, 0x98, 0xa, + 0x17, 0x4d, 0xa, 0xb, 0xad, 0xfb, 0x2b, 0x69, 0x7, 0xa4, 0x8a, 0xa9, + 0x8b, 0x6b, 0x1a, 0xb, 0x8b, 0xae, 0xf8, 0xf2, 0xae, 0xb, 0x96, 0x83, + 0x5, 0xa7, 0x94, 0xb9, 0x87, 0x66, 0x1a, 0x73, 0x1d, 0x1e, 0x7b, 0x66, + 0x5, 0x7b, 0xb4, 0xa1, 0x89, 0x97, 0x1b, 0xb, 0x1b, 0x2f, 0x78, 0x31, + 0x68, 0x84, 0x1f, 0xb, 0xf7, 0x17, 0x78, 0xac, 0x93, 0x1d, 0xb, 0x12, + 0xa4, 0xf7, 0x26, 0xf7, 0xe, 0xf7, 0x1e, 0xb, 0x68, 0x6, 0xb9, 0x88, + 0xb5, 0x93, 0x49, 0x1a, 0xb, 0x7a, 0x85, 0x81, 0x6b, 0x66, 0x1b, 0xb, + 0x51, 0xa, 0xf7, 0x8b, 0x72, 0xa, 0xb, 0x15, 0xc3, 0x6, 0xb, 0x5a, + 0xa, 0xf7, 0x68, 0xf7, 0xe9, 0x79, 0x1d, 0xf7, 0x3f, 0x66, 0x1d, 0xb, + 0x65, 0x1d, 0xf7, 0x84, 0x45, 0xa, 0xfb, 0x2a, 0x5f, 0x1d, 0xb, 0x5d, + 0x90, 0x88, 0xa8, 0xa2, 0x1a, 0xf7, 0x95, 0x7, 0x94, 0xb6, 0xbc, 0xb3, + 0xb, 0x1a, 0xe6, 0x3b, 0xa0, 0x63, 0x2f, 0x65, 0x33, 0x69, 0x7e, 0x1e, + 0xa3, 0x6, 0xbd, 0xa3, 0xae, 0x8f, 0x9a, 0x1b, 0xcd, 0x96, 0x4f, 0x7a, + 0xb, 0xae, 0xfb, 0x70, 0x68, 0x7, 0xb, 0xae, 0xf7, 0x45, 0xf7, 0xf6, + 0xf7, 0x45, 0xb, 0xa4, 0xf7, 0x27, 0xf7, 0x31, 0xf7, 0x27, 0xb, 0xfb, + 0x55, 0xfb, 0x55, 0xfb, 0x35, 0xb, 0xf7, 0x61, 0xf7, 0x61, 0xf7, 0x29, + 0xb, 0xae, 0x1, 0xf4, 0x7f, 0x1d, 0x9e, 0x16, 0xf8, 0xd6, 0x6, 0xb4, + 0xf7, 0x77, 0x5, 0x6e, 0x6, 0xfb, 0x5, 0x5d, 0x53, 0xb, 0x6e, 0x67, + 0x1e, 0xb, 0x63, 0x1d, 0xb2, 0x5c, 0x5b, 0x67, 0x63, 0x5e, 0x1e, 0xe, + 0x15, 0x5c, 0xaf, 0x64, 0x1d, 0xb, 0x66, 0xbb, 0xba, 0xb1, 0xaf, 0xbb, + 0xb9, 0x65, 0xb, 0xfb, 0x3f, 0xfb, 0x3f, 0x85, 0xb, 0xf7, 0x20, 0xf7, + 0x20, 0xb0, 0xb, 0xb9, 0xb4, 0x63, 0xba, 0x1b, 0xa4, 0xa5, 0xa2, 0xa6, + 0xa6, 0x71, 0xa2, 0x72, 0x1f, 0x5c, 0x62, 0x63, 0x5d, 0x1b, 0xb, 0x76, + 0xf7, 0x42, 0xf7, 0x35, 0x12, 0x99, 0x77, 0xa, 0xe1, 0x77, 0xa, 0x13, + 0xe8, 0xb, 0xf7, 0x4d, 0x16, 0xf7, 0xef, 0xae, 0x6, 0x45, 0x92, 0x75, + 0xb, 0xf7, 0x7e, 0x66, 0x7, 0x72, 0x81, 0x82, 0x76, 0x70, 0x1b, 0xb, + 0xf7, 0xf, 0x98, 0x8, 0xa2, 0x7, 0xb, 0x67, 0xa7, 0x6d, 0xaf, 0xaf, + 0xa6, 0xa9, 0xaf, 0xaf, 0x70, 0xa7, 0x67, 0x67, 0x6f, 0x6f, 0x67, 0x1e, + 0xb, 0x67, 0xa6, 0x81, 0x1d, 0x70, 0x61, 0x1d, 0xb, 0x67, 0xa7, 0x74, + 0xa, 0xa6, 0xa8, 0xaf, 0xaf, 0x70, 0x6f, 0x1d, 0xb, 0x61, 0xa, 0x6f, + 0x61, 0x1d, 0xb, 0xfb, 0x17, 0xfb, 0x1f, 0x34, 0xb, 0xa5, 0xf7, 0xe3, + 0x15, 0xfb, 0x5a, 0xf7, 0x2a, 0xfb, 0x30, 0xf7, 0x5a, 0xf7, 0x5a, 0xf7, + 0x29, 0xb, 0x9b, 0x16, 0xf7, 0x77, 0xae, 0x6, 0x41, 0x93, 0x76, 0x8b, + 0xd3, 0x1a, 0xf8, 0x2d, 0x8d, 0x7, 0xb, 0x62, 0x5d, 0x8b, 0x7f, 0x73, + 0x7b, 0x92, 0x92, 0x78, 0xb, 0x15, 0xf7, 0x35, 0x34, 0xe9, 0xe2, 0xb4, + 0xcd, 0x62, 0xf7, 0x98, 0x57, 0x6, 0x4f, 0x43, 0xb, 0x99, 0x16, 0xf7, + 0x87, 0xad, 0x6, 0x5d, 0x90, 0x8a, 0xa8, 0xa2, 0x1a, 0xf7, 0xda, 0xb, + 0xfc, 0x95, 0x15, 0xcd, 0x6, 0xf8, 0x60, 0xf9, 0x48, 0x5, 0x49, 0x6, + 0xe, 0xa9, 0x30, 0xf1, 0x70, 0xb4, 0x1f, 0xa9, 0xb1, 0xb, 0x15, 0xf7, + 0x6, 0x90, 0xb, 0x15, 0xf7, 0x26, 0xb0, 0xb, 0xfb, 0x57, 0xfb, 0xa6, + 0x15, 0x69, 0xf7, 0xa5, 0xaa, 0x7, 0x5c, 0x8d, 0x6c, 0xb, 0x8f, 0x85, + 0x80, 0x79, 0x7e, 0x82, 0x80, 0x1e, 0xfb, 0x5f, 0xfb, 0x38, 0x5, 0xb, + 0xae, 0x78, 0x15, 0xb2, 0x6, 0x9b, 0x8f, 0x90, 0x9d, 0xa0, 0x1b, 0x98, + 0xb, 0xc5, 0xbb, 0xba, 0xc6, 0xc5, 0x5b, 0xbc, 0x51, 0x51, 0x5a, 0x5b, + 0x50, 0xb, 0x2e, 0xa, 0xe, 0xf7, 0x36, 0x3, 0xb, 0xfb, 0x30, 0xfb, + 0x31, 0xfb, 0xc, 0xf7, 0x1e, 0xf7, 0x38, 0x1e, 0xb, 0x74, 0xa, 0xa7, + 0xa8, 0xaf, 0xaf, 0x6f, 0x61, 0xa, 0xb, 0x8b, 0xad, 0xf8, 0x8, 0xce, + 0xb, 0x76, 0xf7, 0x44, 0x77, 0x1, 0xb, 0xf7, 0x1f, 0x13, 0xe0, 0x9b, + 0x16, 0x99, 0xa, 0xb, 0xf7, 0x1f, 0xf7, 0xe, 0xf7, 0x1f, 0xfb, 0xf, + 0xf7, 0x1f, 0xb, 0xf7, 0x8b, 0xf7, 0x41, 0x6c, 0xaa, 0x12, 0xa4, 0xf7, + 0x21, 0xb, 0xfb, 0x5f, 0xa0, 0x76, 0xf7, 0xe8, 0x76, 0xf7, 0x2, 0xab, + 0xb, 0x89, 0xd3, 0xfb, 0x53, 0x69, 0x6, 0xb, 0xf7, 0xeb, 0xbf, 0x15, + 0xb, 0xd6, 0x8b, 0xae, 0xb, 0x85, 0x1e, 0xe, 0xa1, 0x8a, 0x8a, 0xaf, + 0xcb, 0x1b, 0xf7, 0x40, 0xa2, 0xb, 0xfb, 0x91, 0xfb, 0x2e, 0x76, 0xf9, + 0xfd, 0x77, 0x1, 0xb, 0x6, 0x84, 0x6c, 0x6f, 0x49, 0x54, 0x76, 0x69, + 0x80, 0xb, 0x55, 0x8b, 0x5a, 0xc3, 0x93, 0xc7, 0x8b, 0xcb, 0xd3, 0xb, + 0xd4, 0x90, 0x28, 0x37, 0x53, 0x88, 0xfb, 0x1b, 0x39, 0xb, 0xfb, 0xce, + 0xfb, 0x29, 0xb6, 0xf9, 0x79, 0xb6, 0x1, 0xb, 0xfb, 0xce, 0xfb, 0x27, + 0x76, 0xf9, 0xf2, 0x77, 0x1, 0xb, 0xf9, 0x18, 0xac, 0xb, 0x86, 0x84, + 0x9d, 0x1f, 0x81, 0xa5, 0xae, 0x7f, 0xb, 0xfb, 0xac, 0x1f, 0xfb, 0xc5, + 0x68, 0x6, 0xb2, 0xb, 0xfb, 0x2b, 0x1b, 0x48, 0x75, 0x93, 0xbb, 0x1f, + 0xb, 0x7, 0x73, 0x80, 0x67, 0x63, 0x1e, 0xe, 0x76, 0xf7, 0x4d, 0x77, + 0x1, 0xb, 0xf7, 0x8b, 0x77, 0x1, 0xb, 0xf7, 0x16, 0x12, 0xb, 0x1, + 0x0, 0x1, 0x6, 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, + 0x0, 0x42, 0x20, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, + 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, + 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, + 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, + 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, + 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, + 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, + 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, + 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, + 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, + 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, + 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, + 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, + 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, + 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, + 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, + 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, + 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, + 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, + 0x0, 0x91, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, + 0x0, 0x94, 0x0, 0x0, 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, + 0x0, 0xe4, 0x0, 0x0, 0x65, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, + 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, + 0x0, 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, + 0x0, 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, + 0x0, 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, + 0x0, 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, 0x0, + 0x0, 0xa6, 0x0, 0x0, 0x6d, 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, + 0x4, 0x0, 0x7, 0x0, 0x4b, 0x0, 0x78, 0x0, 0xec, 0x1, 0x74, 0x1, + 0xa0, 0x2, 0x61, 0x2, 0x8c, 0x2, 0xba, 0x2, 0xea, 0x3, 0xe4, 0x4, + 0x10, 0x4, 0x3e, 0x4, 0x51, 0x4, 0x59, 0x4, 0x74, 0x4, 0xc5, 0x4, + 0xfb, 0x5, 0x4c, 0x5, 0xb5, 0x5, 0xf3, 0x6, 0x51, 0x6, 0xb4, 0x6, + 0xda, 0x7, 0x5c, 0x7, 0xbb, 0x7, 0xe1, 0x8, 0x28, 0x8, 0x45, 0x8, + 0x67, 0x8, 0x83, 0x8, 0xf4, 0x9, 0xad, 0x9, 0xcd, 0xa, 0x4a, 0xa, + 0xa9, 0xa, 0xee, 0xb, 0x4c, 0xb, 0xab, 0xc, 0x23, 0xc, 0x8c, 0xc, + 0x91, 0xc, 0xe4, 0xd, 0x50, 0xd, 0x75, 0xd, 0xe6, 0xe, 0x0, 0xe, + 0x20, 0xe, 0x7d, 0xe, 0xd7, 0xf, 0x50, 0xf, 0x78, 0xf, 0xbb, 0x10, + 0x3, 0x10, 0x46, 0x10, 0xc0, 0x11, 0x3d, 0x11, 0x5f, 0x11, 0x65, 0x11, + 0x86, 0x11, 0xa1, 0x11, 0xc2, 0x11, 0xe3, 0x11, 0xef, 0x11, 0xf7, 0x12, + 0x36, 0x12, 0x9e, 0x12, 0xe2, 0x13, 0x49, 0x13, 0x76, 0x13, 0xcc, 0x14, + 0x91, 0x14, 0xc3, 0x14, 0xed, 0x15, 0x50, 0x15, 0xb9, 0x15, 0xd7, 0x16, + 0x64, 0x16, 0xac, 0x16, 0xeb, 0x17, 0x23, 0x17, 0x85, 0x17, 0xe0, 0x18, + 0x63, 0x18, 0xac, 0x18, 0xbf, 0x18, 0xef, 0x19, 0x6c, 0x19, 0xe6, 0x19, + 0xfa, 0x1a, 0x25, 0x1a, 0x74, 0x1a, 0x8f, 0x1a, 0xde, 0x1b, 0x21, 0x1b, + 0x70, 0x1b, 0xf8, 0x1c, 0xad, 0x1d, 0x20, 0x1d, 0x9f, 0x1d, 0xc1, 0x1e, + 0x93, 0x1e, 0x9e, 0x1f, 0x19, 0x1f, 0x90, 0x1f, 0xc5, 0x1f, 0xe5, 0x20, + 0x79, 0x20, 0x8a, 0x20, 0xc2, 0x20, 0xff, 0x21, 0x30, 0x21, 0x51, 0x21, + 0x6d, 0x21, 0xec, 0x22, 0x28, 0x22, 0x32, 0x22, 0x57, 0x22, 0x80, 0x22, + 0xb8, 0x22, 0xe4, 0x23, 0x18, 0x23, 0x60, 0x23, 0x98, 0x24, 0xb, 0x24, + 0x1d, 0x24, 0x2f, 0x24, 0x41, 0x24, 0x7c, 0x24, 0x9f, 0x24, 0xd9, 0x25, + 0x78, 0x26, 0x6, 0x26, 0x12, 0x26, 0x22, 0x26, 0x36, 0x26, 0x60, 0x26, + 0x68, 0x26, 0x6f, 0x26, 0x7c, 0x26, 0xae, 0x26, 0xfc, 0x27, 0x35, 0x27, + 0x57, 0x27, 0x6a, 0x27, 0x8a, 0x27, 0xe6, 0x28, 0x5, 0x28, 0x35, 0x28, + 0xa9, 0x28, 0xba, 0x28, 0xce, 0x28, 0xe2, 0x29, 0x6, 0x29, 0x3a, 0x29, + 0xdd, 0x2a, 0x81, 0x2a, 0x9c, 0x2a, 0xb8, 0x2a, 0xd8, 0x2b, 0x28, 0x2b, + 0x46, 0x2b, 0x8e, 0x2c, 0x43, 0x2c, 0x9f, 0x2c, 0xb4, 0x2c, 0xca, 0x2c, + 0xea, 0x2d, 0xf, 0x2d, 0x29, 0x2d, 0x48, 0x2d, 0x6d, 0x2d, 0x90, 0x2e, + 0x5, 0x2e, 0x51, 0x2e, 0xa3, 0x2e, 0xb1, 0x2e, 0xbe, 0x2e, 0xe9, 0x2f, + 0x6, 0x2f, 0x38, 0x2f, 0xc3, 0x2f, 0xde, 0x2f, 0xfe, 0x30, 0x15, 0x30, + 0x3b, 0x30, 0x78, 0x30, 0xa9, 0x30, 0xcd, 0x30, 0xd6, 0x31, 0x14, 0x31, + 0x46, 0x31, 0xe0, 0x32, 0x71, 0x32, 0xa1, 0x33, 0x19, 0x33, 0x4f, 0x33, + 0x61, 0x33, 0x93, 0x34, 0x16, 0x34, 0x21, 0x34, 0x39, 0x34, 0x64, 0x34, + 0x85, 0x34, 0xcc, 0x35, 0x0, 0x35, 0x39, 0x35, 0x52, 0x35, 0x60, 0x35, + 0x70, 0x35, 0x95, 0x35, 0xa1, 0x35, 0xb0, 0x35, 0xd9, 0x35, 0xf3, 0x36, + 0xc, 0x36, 0xb0, 0x37, 0x19, 0x37, 0x38, 0x37, 0x5b, 0x37, 0x96, 0x37, + 0xba, 0x37, 0xdf, 0x37, 0xf8, 0x38, 0x86, 0x39, 0x2f, 0x39, 0x3f, 0x39, + 0xa5, 0x3a, 0x0, 0xfc, 0x21, 0xe, 0xfc, 0x21, 0xe, 0xfb, 0xce, 0x7e, + 0xf7, 0x3d, 0xf8, 0xab, 0x77, 0x1, 0xdc, 0xf7, 0x3e, 0x3, 0xdc, 0xd2, + 0x15, 0x5c, 0xb0, 0x64, 0x1d, 0xb2, 0x5c, 0x5b, 0x66, 0x63, 0x5e, 0x1e, + 0xd1, 0xf7, 0x37, 0x15, 0xa8, 0x6, 0x94, 0xe5, 0x96, 0xc7, 0x96, 0xb7, + 0x8, 0x9f, 0xdd, 0x9f, 0xa5, 0xc2, 0x1a, 0xcb, 0x69, 0xaf, 0x58, 0x57, + 0x6a, 0x67, 0x4b, 0x54, 0x9f, 0x70, 0x9f, 0x38, 0x1e, 0x96, 0x5f, 0x95, + 0x4f, 0x94, 0x33, 0x8, 0xe, 0x2f, 0xf8, 0x3d, 0x76, 0xf7, 0xb3, 0x77, + 0x1, 0xde, 0xf7, 0x15, 0xf7, 0x17, 0xf7, 0x15, 0x3, 0xf7, 0x13, 0xf8, + 0x28, 0x15, 0x6e, 0xa, 0x74, 0xa6, 0xfb, 0xc, 0x9c, 0x43, 0x1e, 0xf7, + 0x98, 0x16, 0x6e, 0xa, 0x1e, 0x8a, 0x74, 0xa7, 0xfb, 0xc, 0x9c, 0x43, + 0x8, 0xe, 0xa0, 0x76, 0xf7, 0x66, 0xcc, 0x4a, 0xd4, 0xf7, 0x20, 0xd4, + 0x45, 0xcb, 0xf7, 0x66, 0x77, 0x12, 0x13, 0xb4, 0xb5, 0x16, 0xce, 0x6, + 0xbb, 0xf7, 0x66, 0x5, 0xf7, 0x21, 0x6, 0x5d, 0xfb, 0x66, 0x5, 0xce, + 0x6, 0xb9, 0xf7, 0x66, 0x5, 0xf0, 0x6, 0x13, 0xcc, 0x8c, 0xcc, 0x5, + 0x35, 0x6, 0xad, 0xf7, 0x2b, 0x5, 0xdb, 0x6, 0x8c, 0xcb, 0x5, 0x47, + 0x6, 0xba, 0xf7, 0x66, 0x5, 0x49, 0x6, 0x5b, 0xfb, 0x66, 0x5, 0xfb, + 0x22, 0x6, 0xb9, 0xf7, 0x66, 0x5, 0x49, 0x6, 0x5c, 0xfb, 0x66, 0x5, + 0xfb, 0xa, 0x6, 0x8a, 0x4b, 0x5, 0xf2, 0x6, 0x6b, 0xfb, 0x2b, 0x5, + 0x28, 0x6, 0x8a, 0x4a, 0x5, 0xe1, 0x6, 0xdc, 0xcc, 0x15, 0xab, 0xf7, + 0x2b, 0x5, 0xf7, 0x25, 0x6, 0x69, 0xfb, 0x2b, 0x5, 0xe, 0x3d, 0x76, + 0xf9, 0xe5, 0x77, 0x12, 0xdc, 0xea, 0xbc, 0xc3, 0xe9, 0xf7, 0x2, 0x17, + 0xf7, 0xa1, 0xa9, 0x15, 0xf7, 0x70, 0x7, 0xc5, 0x6a, 0xae, 0x78, 0x51, + 0x1a, 0x2e, 0x49, 0x7f, 0x70, 0x86, 0x1e, 0xfb, 0x73, 0x98, 0x15, 0xd3, + 0x6e, 0xa7, 0x80, 0xcf, 0x88, 0x8, 0x28, 0xc2, 0xee, 0x7, 0x13, 0x78, + 0xf0, 0x9c, 0xf1, 0xaf, 0xf7, 0x26, 0x1a, 0xf7, 0xe, 0x2c, 0xbd, 0xfb, + 0x0, 0xc2, 0x1e, 0xf7, 0x6b, 0x7, 0xeb, 0x7b, 0xa0, 0x22, 0x96, 0x64, + 0x8, 0xaa, 0xf7, 0x21, 0x6, 0x6f, 0x9c, 0x68, 0xa0, 0x2b, 0x99, 0x8, + 0xd7, 0x54, 0x3d, 0x7, 0x37, 0x87, 0x26, 0x54, 0xfb, 0x9, 0x1a, 0xfb, + 0xd, 0xf7, 0x5, 0x50, 0xd2, 0x68, 0x1e, 0xfb, 0x8f, 0x7, 0x54, 0x95, + 0x5e, 0xa8, 0x67, 0xf7, 0x14, 0x6c, 0x8d, 0x18, 0xf7, 0x3b, 0xf7, 0x93, + 0x15, 0x80, 0x8f, 0x3d, 0xa3, 0xd2, 0x1a, 0xc9, 0xbb, 0x9f, 0xb4, 0x94, + 0x1e, 0xe, 0xf7, 0xf5, 0x7d, 0xb9, 0xf7, 0x9a, 0xb9, 0x78, 0xbe, 0xf7, + 0x97, 0xba, 0x99, 0x77, 0x1, 0xf7, 0x10, 0xf7, 0x6, 0xf7, 0x56, 0xac, + 0xd1, 0xf7, 0x9, 0xf7, 0x54, 0xac, 0x3, 0xf8, 0xee, 0xf7, 0x38, 0x41, + 0x1d, 0xfd, 0x22, 0xf7, 0xe2, 0x41, 0x1d, 0xb9, 0x76, 0x1d, 0xf7, 0x4e, + 0x7b, 0xd8, 0x3e, 0xf0, 0xf8, 0xd1, 0xac, 0x12, 0xc9, 0xf7, 0x1f, 0xf7, + 0xe, 0xf7, 0x24, 0x8b, 0xf0, 0xd6, 0xf7, 0x24, 0x13, 0x7c, 0xf8, 0x6f, + 0xd3, 0x15, 0x5c, 0xb1, 0xc6, 0x62, 0xc9, 0x1b, 0xb0, 0xad, 0x9d, 0xb1, + 0xb1, 0x1f, 0x13, 0x7e, 0x9c, 0x9c, 0xa5, 0xc0, 0x8c, 0x8c, 0x77, 0x97, + 0x18, 0x75, 0x7f, 0x77, 0x7b, 0x72, 0x1b, 0x5c, 0x6c, 0xb0, 0xc1, 0x61, + 0x1f, 0xc1, 0xd0, 0x96, 0x96, 0xc2, 0xe4, 0x9c, 0xa6, 0x9a, 0x94, 0xb8, + 0x8f, 0x8, 0xad, 0xfb, 0x66, 0x69, 0x7, 0xbf, 0x85, 0x99, 0x89, 0x66, + 0x1a, 0x5b, 0x5f, 0x5f, 0x6b, 0x64, 0x1e, 0xfb, 0x2b, 0xf7, 0x6a, 0x5, + 0xcc, 0xa1, 0xe2, 0xb6, 0xdd, 0x1a, 0xc1, 0x61, 0xce, 0xfb, 0x12, 0xfb, + 0x34, 0x25, 0xfb, 0x2c, 0xfb, 0x2b, 0xf7, 0xc, 0x1e, 0x49, 0x6b, 0xfb, + 0x16, 0x4c, 0xfb, 0x17, 0x1a, 0xfb, 0xb, 0xea, 0x50, 0xeb, 0xf1, 0xdc, + 0xc5, 0xa9, 0xb2, 0x1e, 0x74, 0xa7, 0x15, 0x13, 0xbc, 0x77, 0x70, 0x6b, + 0x78, 0x6c, 0x1b, 0x2d, 0x48, 0xf7, 0x17, 0xcf, 0xb7, 0xa0, 0xa3, 0xc0, + 0xa9, 0x1f, 0xe3, 0xfb, 0x18, 0xbe, 0x3f, 0xb1, 0x59, 0x8, 0x54, 0xf7, + 0xf4, 0x15, 0x73, 0xa8, 0x59, 0xce, 0xbe, 0x1a, 0xbb, 0xa7, 0x96, 0xa4, + 0xc4, 0xad, 0x41, 0x59, 0x52, 0x60, 0x7b, 0x70, 0x82, 0x1e, 0xe, 0xfc, + 0x5, 0xf8, 0x3d, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0x5c, 0xf7, 0x15, 0x3, + 0xf7, 0xb, 0xf8, 0x28, 0x15, 0xb4, 0x6, 0x9c, 0xd3, 0xa6, 0xf7, 0x4, + 0xa2, 0x1a, 0xb6, 0x72, 0xb0, 0x63, 0x63, 0x73, 0x66, 0x60, 0x74, 0xa6, + 0xfb, 0x4, 0x9c, 0x43, 0x1e, 0xe, 0x92, 0x1d, 0xbf, 0xf7, 0x5, 0x3, + 0xf7, 0xc6, 0xfb, 0x20, 0x15, 0x2a, 0xc6, 0x59, 0xd3, 0xf7, 0xa4, 0x1a, + 0xf7, 0xc5, 0xcb, 0xb6, 0xde, 0xc3, 0x1e, 0xa6, 0x7, 0x54, 0x72, 0xfb, + 0x61, 0xfb, 0x6, 0xfb, 0xb8, 0x1a, 0x39, 0xa7, 0xfb, 0x74, 0xf7, 0x7c, + 0xfb, 0x11, 0x1e, 0xe, 0x92, 0x1d, 0xf7, 0x42, 0xf7, 0x5, 0x3, 0xa6, + 0xfb, 0x21, 0x15, 0x70, 0x7, 0xc2, 0xa4, 0xf7, 0x61, 0xf7, 0x11, 0xf7, + 0xb8, 0x1a, 0xdd, 0x6f, 0xf7, 0x69, 0xfb, 0x7c, 0xf7, 0x11, 0x1e, 0x6f, + 0x7, 0xec, 0x50, 0xbd, 0x4e, 0xfb, 0xa4, 0x1a, 0xfb, 0xc5, 0x4b, 0x55, + 0x38, 0x53, 0x1e, 0xe, 0xf7, 0xa8, 0x76, 0xf4, 0x76, 0xa3, 0x76, 0xf7, + 0xf, 0x76, 0xf7, 0x8b, 0x77, 0x12, 0xf7, 0x5d, 0xee, 0x13, 0xbc, 0xf7, + 0x85, 0xf8, 0x55, 0x15, 0x6f, 0x88, 0x78, 0x86, 0x7d, 0x1e, 0x80, 0x6a, + 0x76, 0x85, 0x64, 0x1a, 0x69, 0xa2, 0x76, 0xa4, 0xa3, 0xa6, 0xa0, 0xaa, + 0x1e, 0x8a, 0xa8, 0x7b, 0x98, 0x7e, 0xb3, 0x86, 0x9a, 0x87, 0x9f, 0x89, + 0xa4, 0x92, 0x90, 0x18, 0xa1, 0x80, 0x94, 0x85, 0x99, 0x7a, 0x93, 0x81, + 0x94, 0x7d, 0x9a, 0x76, 0x8, 0x76, 0x99, 0xa1, 0x7f, 0x9e, 0x1b, 0xa5, + 0xa2, 0x9a, 0xac, 0xc6, 0x56, 0x7f, 0x4e, 0x97, 0x1f, 0x79, 0x8f, 0x78, + 0x90, 0x79, 0x95, 0x8, 0x93, 0x7, 0xa2, 0x9b, 0x9e, 0x91, 0x9b, 0x8e, + 0xa5, 0x8f, 0xa0, 0x85, 0xa2, 0x94, 0x8, 0xa7, 0x95, 0x98, 0xa1, 0xa0, + 0x1a, 0xa4, 0x79, 0xa2, 0x6a, 0x63, 0x86, 0x6d, 0x64, 0x6b, 0x1e, 0x7f, + 0x7d, 0x7a, 0x7b, 0x75, 0x7b, 0x83, 0x8e, 0x18, 0x88, 0xb1, 0x94, 0xa0, + 0x94, 0x9c, 0x8, 0x96, 0xa0, 0x99, 0x99, 0xa8, 0x1a, 0xad, 0x71, 0x9f, + 0x71, 0x73, 0x73, 0x78, 0x6d, 0x6c, 0x9a, 0x7c, 0x97, 0x73, 0x1e, 0x94, + 0x7a, 0x90, 0x75, 0x67, 0x1a, 0x84, 0x88, 0x6f, 0x98, 0x7d, 0x9c, 0x7f, + 0x9b, 0x19, 0xac, 0x73, 0x86, 0xac, 0x58, 0x1b, 0x7e, 0x6c, 0x80, 0x66, + 0x68, 0x9a, 0x81, 0xa5, 0x86, 0x1f, 0x9d, 0x88, 0xa1, 0x8a, 0xa4, 0x87, + 0x9f, 0x87, 0xa0, 0x85, 0xa2, 0x80, 0x8a, 0x84, 0x18, 0x73, 0x79, 0x78, + 0x85, 0x7a, 0x89, 0x8, 0x89, 0x7e, 0x7b, 0x8b, 0x7b, 0x1b, 0x6e, 0x6a, + 0x7a, 0x67, 0x89, 0x1f, 0x13, 0xdc, 0x71, 0x8a, 0xa1, 0x71, 0xa6, 0x1b, + 0xb6, 0x8f, 0xab, 0xb2, 0xac, 0x1f, 0x97, 0x99, 0x9a, 0x9a, 0xa2, 0x9a, + 0x8, 0xe, 0x3e, 0xa0, 0x76, 0xf7, 0x74, 0xc6, 0xf7, 0x73, 0x77, 0x12, + 0xf7, 0x81, 0xe5, 0x3f, 0xcb, 0x13, 0xf0, 0xac, 0xf7, 0x76, 0x15, 0x13, + 0xe8, 0xf7, 0x6e, 0xfb, 0x76, 0xcb, 0xf7, 0x76, 0xf7, 0x72, 0xc6, 0xfb, + 0x72, 0xf7, 0x71, 0x4b, 0xfb, 0x71, 0xfb, 0x6e, 0x6, 0xe, 0xfc, 0x21, + 0xfb, 0x33, 0x83, 0xa, 0xb2, 0x77, 0xa, 0x13, 0xe0, 0xb6, 0xfb, 0x34, + 0x15, 0x97, 0x77, 0x5, 0xc0, 0xa9, 0xf7, 0x7, 0x3d, 0xa, 0x5d, 0x67, + 0x6d, 0x57, 0x4c, 0xb9, 0x7b, 0xa7, 0x1e, 0x13, 0xd0, 0x9f, 0xa1, 0x92, + 0x70, 0x53, 0x37, 0x50, 0x6f, 0x78, 0x1f, 0xe, 0xfb, 0xce, 0xf7, 0x3f, + 0xf7, 0x8, 0x1, 0xb7, 0xf7, 0x3f, 0x15, 0xf7, 0x87, 0xf7, 0x8, 0xfb, + 0x87, 0x6, 0xe, 0xfc, 0x21, 0x7e, 0x93, 0xa, 0xd2, 0x62, 0x1d, 0xfc, + 0x5, 0x8d, 0x76, 0xf9, 0x4b, 0x77, 0xae, 0x77, 0x12, 0x13, 0xc0, 0x84, + 0x78, 0x15, 0xd3, 0x6, 0x13, 0xa0, 0xf7, 0x78, 0xf9, 0x5a, 0x5, 0x3b, + 0x6, 0xe, 0x7e, 0xa7, 0xf9, 0x19, 0xa7, 0x1, 0xa3, 0xf7, 0x32, 0xf7, + 0x1c, 0xf7, 0x32, 0x3, 0xf7, 0x4a, 0xf7, 0x72, 0x15, 0xf7, 0x79, 0x7, + 0xde, 0x8b, 0xf7, 0x12, 0xce, 0xbb, 0xa0, 0x51, 0xfb, 0x2b, 0x1e, 0xfb, + 0x79, 0x7, 0x3c, 0x8f, 0xfb, 0x14, 0x43, 0x57, 0x7b, 0xcb, 0xf7, 0x23, + 0x1e, 0xfb, 0x32, 0xf7, 0x2, 0x15, 0xfb, 0x5d, 0xed, 0xfb, 0x24, 0xf7, + 0x14, 0xf7, 0x20, 0xe1, 0xf7, 0x39, 0xf7, 0x48, 0xf7, 0x84, 0xfb, 0xe, + 0xf7, 0x8, 0x22, 0x26, 0xfb, 0x10, 0x23, 0xfb, 0x90, 0x1e, 0xe, 0x8b, + 0xad, 0xf9, 0x22, 0x77, 0x1, 0xf7, 0x4e, 0xf7, 0x28, 0x3, 0xcc, 0x16, + 0xf8, 0xd, 0xad, 0x6, 0x28, 0x82, 0xa6, 0xce, 0x1f, 0xf8, 0xc4, 0x7a, + 0x7, 0xfb, 0x90, 0xfb, 0x1, 0x5, 0x71, 0x7, 0x98, 0xad, 0xad, 0x97, + 0x99, 0x1b, 0xb2, 0x8b, 0x5f, 0x72, 0x1f, 0xfc, 0xb, 0x7, 0x4d, 0x86, + 0x65, 0xfb, 0x8, 0x1e, 0xe, 0x8b, 0xf7, 0x19, 0xf8, 0x8, 0x76, 0xe5, + 0xf7, 0x6, 0x1, 0xf7, 0xc0, 0xf7, 0x1c, 0x3, 0x9c, 0x16, 0xf8, 0x34, + 0x6, 0xb8, 0xf7, 0x67, 0x5, 0x69, 0x6, 0x47, 0x6f, 0x82, 0x81, 0x21, + 0x1b, 0xfb, 0x21, 0x6, 0xf7, 0xa8, 0xf7, 0x9b, 0x8b, 0xd7, 0xa8, 0x1a, + 0xf7, 0x2c, 0xfb, 0xf, 0xae, 0x4d, 0xfb, 0x21, 0x50, 0xfb, 0x27, 0x52, + 0x77, 0x1e, 0xa7, 0x6, 0xdf, 0xb0, 0xc9, 0x91, 0xa2, 0x1b, 0xf2, 0x9b, + 0x27, 0x6f, 0xfb, 0xa, 0xfb, 0xd, 0xfb, 0x18, 0xfb, 0x36, 0xfb, 0x41, + 0x1f, 0xe, 0x7d, 0xbd, 0x59, 0xf7, 0x28, 0xf8, 0x6d, 0xdc, 0x12, 0xf7, + 0xf6, 0xf7, 0x6, 0x13, 0xb0, 0xf7, 0x2d, 0xf7, 0xf8, 0x15, 0xd7, 0x71, + 0xf7, 0x11, 0x61, 0xfb, 0x19, 0x1a, 0x31, 0x57, 0x6e, 0x5b, 0x6d, 0x74, + 0xa2, 0xa3, 0x72, 0x1e, 0x13, 0x70, 0xa4, 0x71, 0x6e, 0xa5, 0x60, 0x1b, + 0x6b, 0x6d, 0x74, 0x6a, 0x4c, 0xd2, 0x6e, 0xdb, 0xf7, 0x48, 0xf7, 0xd, + 0xf7, 0xe, 0xf7, 0x20, 0xd6, 0x60, 0xd3, 0x3c, 0xa8, 0x1f, 0xb7, 0xa6, + 0xb2, 0xa4, 0xd8, 0x1a, 0xe8, 0x43, 0xb5, 0x2b, 0xfb, 0xa, 0x3e, 0x31, + 0x4c, 0x6e, 0x1e, 0xa0, 0x7f, 0x5, 0xa3, 0x9a, 0xae, 0xc7, 0xd0, 0x1b, + 0xd4, 0xac, 0x5f, 0x50, 0x30, 0x39, 0x72, 0x5b, 0x7c, 0x1f, 0xe, 0xa0, + 0x76, 0xf7, 0x24, 0xf7, 0x3, 0xf7, 0xcf, 0x76, 0xf7, 0x1f, 0x77, 0x1, + 0xf7, 0xa1, 0xf7, 0x23, 0x3, 0x9e, 0xf7, 0x24, 0x15, 0xf7, 0x8c, 0xfb, + 0x24, 0xf7, 0x25, 0xf7, 0x24, 0xca, 0xf7, 0x3, 0x4c, 0xf8, 0x45, 0x31, + 0x6, 0x31, 0xfb, 0xe, 0xfb, 0x10, 0xfb, 0x3b, 0x32, 0xfb, 0x22, 0x8, + 0xb4, 0x89, 0x15, 0xf7, 0x63, 0xf7, 0xba, 0x5, 0x8d, 0xfb, 0xba, 0x6, + 0xe, 0x83, 0xc8, 0x4e, 0xf7, 0x28, 0xf7, 0x53, 0xf7, 0x1d, 0xdc, 0xf7, + 0x13, 0x12, 0xf8, 0x9, 0xd9, 0x13, 0xb8, 0xbe, 0xf7, 0xdf, 0x15, 0xd3, + 0x86, 0xd7, 0x86, 0xce, 0x6d, 0x8, 0xc0, 0x74, 0xc1, 0x59, 0x4e, 0x1a, + 0x39, 0x49, 0x75, 0x69, 0x6c, 0x6d, 0xa0, 0xa0, 0x6d, 0x1e, 0x13, 0x78, + 0xa1, 0x6c, 0x6b, 0xa2, 0x68, 0x1b, 0x60, 0x78, 0x6b, 0x6f, 0x52, 0xcd, + 0x6c, 0xd8, 0xf7, 0x4a, 0xf3, 0xf7, 0x2, 0xf7, 0x17, 0xed, 0x50, 0xca, + 0x5e, 0xa4, 0x1f, 0x48, 0xb1, 0x4d, 0x91, 0x30, 0x90, 0xa1, 0xe6, 0x18, + 0xf7, 0xaa, 0x6, 0xb6, 0xf7, 0x13, 0x5, 0xfb, 0xd6, 0x6, 0xe, 0x7e, + 0xa6, 0xf7, 0xfe, 0xb8, 0xf7, 0x9f, 0x77, 0x1, 0xa7, 0xf7, 0x31, 0xf7, + 0x1e, 0xf7, 0x2c, 0x3, 0xf8, 0x6a, 0xf9, 0x2a, 0x15, 0xa5, 0x7, 0xfb, + 0xc0, 0x6d, 0xfb, 0x22, 0xfb, 0x54, 0xfb, 0x4a, 0x1a, 0xfb, 0x84, 0xf7, + 0x1f, 0x52, 0xe5, 0xf7, 0x48, 0xb1, 0xf7, 0x3e, 0xc1, 0xf7, 0x40, 0xfb, + 0x4, 0xb1, 0x46, 0x5b, 0x79, 0x84, 0x81, 0x73, 0x1e, 0xb7, 0xf7, 0x4c, + 0xf7, 0xe, 0xc1, 0xef, 0x9f, 0x8, 0xfb, 0xa8, 0xfb, 0xbf, 0x15, 0x97, + 0x96, 0x9c, 0x8c, 0x9b, 0x1b, 0xd0, 0x9b, 0x3f, 0xfb, 0x24, 0x3c, 0x8b, + 0x4c, 0x4e, 0x4d, 0x7c, 0xc9, 0xf7, 0x59, 0xac, 0x93, 0xc3, 0x8c, 0x8c, + 0x1f, 0xe, 0xa0, 0x76, 0xf8, 0x6f, 0x76, 0xe0, 0xf7, 0x1d, 0x1, 0xf7, + 0x27, 0x16, 0xea, 0x6, 0xf7, 0x7f, 0xf9, 0x38, 0x5, 0xfc, 0x34, 0x6, + 0x5f, 0xfb, 0x72, 0x5, 0xae, 0x6, 0xe0, 0xa1, 0xbd, 0x8b, 0xa5, 0x1b, + 0xf7, 0x4f, 0x6, 0xe, 0x7e, 0xab, 0xf9, 0x14, 0xa8, 0x12, 0xa7, 0xf7, + 0xd, 0xfb, 0x2, 0xf7, 0x15, 0xf7, 0x39, 0xf7, 0x1f, 0xfb, 0x19, 0xf7, + 0xb, 0x13, 0xd4, 0xf7, 0xbe, 0xf8, 0x3a, 0x15, 0x81, 0x90, 0xfb, 0xc, + 0xc5, 0xe8, 0x1a, 0xb4, 0xb0, 0xb3, 0xbc, 0xd5, 0x96, 0x44, 0x58, 0x4f, + 0x79, 0x73, 0x74, 0x6c, 0x1e, 0xfb, 0xc, 0x29, 0x15, 0x13, 0xe8, 0x48, + 0x76, 0x38, 0x64, 0xfb, 0x1, 0x1a, 0xfb, 0x2, 0xf0, 0x51, 0xf7, 0x0, + 0xf7, 0x23, 0xe7, 0xd9, 0xf7, 0x11, 0xe8, 0x4b, 0xd1, 0x35, 0xbe, 0x1e, + 0x13, 0xd4, 0xc2, 0x9d, 0xdc, 0xa9, 0xe0, 0x1a, 0xc4, 0x57, 0xe9, 0xfb, + 0x2c, 0xfb, 0x34, 0x54, 0x36, 0x2e, 0x38, 0xcb, 0x4e, 0xd6, 0x61, 0x1e, + 0xa1, 0x79, 0x15, 0x13, 0xe8, 0xcf, 0x5e, 0xcc, 0x60, 0x39, 0x1a, 0x71, + 0x84, 0x30, 0x32, 0x4a, 0x74, 0xcd, 0xd3, 0xd4, 0xa0, 0xaa, 0xa9, 0xb8, + 0x1e, 0xe, 0x93, 0x76, 0xf7, 0x9f, 0xb8, 0xf7, 0xfe, 0xa6, 0x1, 0xa5, + 0xf7, 0x2c, 0xf7, 0x1e, 0xf7, 0x31, 0x3, 0xaa, 0x7e, 0x15, 0xf7, 0xc0, + 0xa9, 0xf7, 0x22, 0xf7, 0x54, 0xf7, 0x4a, 0x1a, 0xf7, 0x84, 0xfb, 0x1f, + 0xc4, 0x31, 0xfb, 0x48, 0x65, 0xfb, 0x3e, 0x55, 0xfb, 0x40, 0xf7, 0x4, + 0x65, 0xd0, 0xae, 0xa5, 0x8e, 0x9b, 0xaa, 0x1e, 0x58, 0xfb, 0x51, 0xfb, + 0x9, 0x58, 0x27, 0x77, 0x8, 0xf7, 0xa8, 0xf7, 0xbf, 0x15, 0x83, 0x8a, + 0x70, 0x86, 0x7b, 0x1b, 0x46, 0x7b, 0xd7, 0xf7, 0x24, 0xda, 0x90, 0xca, + 0xc8, 0xc9, 0x95, 0x42, 0xfb, 0x59, 0x74, 0x85, 0x63, 0x88, 0x7b, 0x1f, + 0xe, 0xfb, 0xce, 0x7e, 0xf7, 0x3a, 0xf7, 0x2f, 0xf7, 0x38, 0x1, 0xdd, + 0xf7, 0x3d, 0x3, 0xdd, 0xd2, 0x63, 0x1d, 0xaf, 0x5c, 0x5b, 0x67, 0x66, + 0x5e, 0x1e, 0xf7, 0xd6, 0x4, 0x86, 0xa, 0xac, 0x5c, 0x5b, 0x67, 0x69, + 0x5e, 0x1e, 0xe, 0xfb, 0xce, 0xfb, 0x33, 0x76, 0xf7, 0xe3, 0xf7, 0x2c, + 0x8b, 0xf7, 0x39, 0x12, 0xdd, 0xf7, 0x3d, 0x56, 0xcf, 0x13, 0xe8, 0xe4, + 0xfb, 0x32, 0x15, 0x96, 0x75, 0x5, 0x33, 0x1d, 0x1e, 0x13, 0xf0, 0x5d, + 0x67, 0x6d, 0x57, 0x3c, 0xd2, 0x8b, 0x8e, 0x1f, 0x13, 0xe8, 0xaf, 0x8d, + 0x91, 0x80, 0x80, 0x1a, 0x53, 0x3a, 0x52, 0x6f, 0x78, 0x1e, 0x13, 0xf0, + 0x84, 0xf8, 0xba, 0x15, 0x86, 0xa, 0xad, 0x5c, 0x5b, 0x67, 0x68, 0x5e, + 0x1e, 0xe, 0x95, 0xa, 0xf7, 0x6b, 0x15, 0xf8, 0x90, 0xfb, 0x73, 0x5, + 0xd4, 0x7, 0xfc, 0x38, 0xf7, 0x53, 0xf8, 0x38, 0xf7, 0x4d, 0x5, 0xd4, + 0x7, 0xfc, 0x90, 0xfb, 0x73, 0x5, 0xe, 0x3e, 0xf6, 0xdf, 0xf7, 0xe, + 0xe1, 0x47, 0xcf, 0x12, 0x13, 0xa0, 0xac, 0xf7, 0xdf, 0x15, 0xf8, 0x8c, + 0xcf, 0xfc, 0x8c, 0x6, 0xfb, 0xb8, 0x4, 0xf8, 0x8c, 0x6, 0x13, 0xc0, + 0xcc, 0xfc, 0x8c, 0x7, 0xe, 0x95, 0xa, 0x83, 0x15, 0xf8, 0x90, 0xf7, + 0x73, 0x5, 0xd7, 0x7, 0xfc, 0x90, 0xf7, 0x73, 0x5, 0x3f, 0x7, 0xf8, + 0x37, 0xfb, 0x4b, 0xfc, 0x37, 0xfb, 0x50, 0x5, 0xe, 0x7e, 0xf7, 0x3d, + 0xf8, 0x85, 0xaf, 0x12, 0xc4, 0xf7, 0x17, 0x69, 0xf7, 0x3d, 0x70, 0xf7, + 0x29, 0x13, 0xe8, 0xf7, 0x73, 0xf7, 0x7b, 0x15, 0xa9, 0x6, 0xe2, 0x9a, + 0x90, 0xde, 0xbe, 0x1e, 0xc0, 0xac, 0xb4, 0xbb, 0xcb, 0x1a, 0xf7, 0x33, + 0xfb, 0x37, 0x96, 0x6c, 0xfb, 0x38, 0x6d, 0x25, 0x62, 0x68, 0x9e, 0x61, + 0xbe, 0x9f, 0xb4, 0x97, 0xbf, 0xa7, 0x7f, 0x97, 0x81, 0x96, 0x1e, 0x83, + 0x93, 0x84, 0x93, 0x98, 0x1a, 0xb0, 0xbd, 0x8e, 0x94, 0xd9, 0x93, 0x2f, + 0x61, 0x51, 0x7b, 0x65, 0x7a, 0x6a, 0x1e, 0x71, 0x59, 0x6d, 0x65, 0x9b, + 0x44, 0x8, 0x13, 0xd0, 0x46, 0xfb, 0x34, 0x15, 0x5c, 0xb0, 0x66, 0xbb, + 0xb9, 0xb1, 0xaf, 0xbb, 0xb9, 0x65, 0xb2, 0x5d, 0x5b, 0x66, 0x63, 0x5e, + 0x1e, 0xe, 0xf7, 0xaf, 0x6d, 0xb9, 0xf7, 0x13, 0xb0, 0x66, 0xbb, 0xf7, + 0xa2, 0xbb, 0xf7, 0x23, 0xb2, 0x12, 0xeb, 0xe7, 0xf7, 0x25, 0xd8, 0xf8, + 0x1, 0xba, 0x13, 0xbf, 0xf8, 0x20, 0xf7, 0xac, 0x15, 0xf7, 0xd, 0xe3, + 0xd1, 0xbc, 0xa9, 0x99, 0x75, 0x60, 0x1e, 0x13, 0xaf, 0xfb, 0x25, 0x7d, + 0x4e, 0x45, 0x5f, 0x1b, 0x69, 0x6f, 0xa8, 0xc7, 0x1f, 0xf7, 0x23, 0x4b, + 0x15, 0x7e, 0x8a, 0xa3, 0x4f, 0xd0, 0x1b, 0xf7, 0xf, 0xcf, 0xf7, 0x1f, + 0xf4, 0xf7, 0x42, 0xfb, 0x28, 0xf7, 0x16, 0xfb, 0x52, 0xfb, 0x5f, 0xfb, + 0x41, 0xfb, 0x29, 0xfb, 0x72, 0xfb, 0x1e, 0xf7, 0xa, 0xfb, 0x5d, 0xf7, + 0xa1, 0xdb, 0xd1, 0xa7, 0xab, 0xcd, 0x1f, 0x7e, 0xae, 0x5, 0x70, 0x50, + 0x55, 0x75, 0x30, 0x1b, 0xfb, 0x41, 0xfb, 0xd, 0xf7, 0x25, 0xf7, 0x28, + 0xf7, 0x78, 0xf7, 0x1a, 0xf3, 0xf7, 0x2a, 0xf7, 0x4c, 0xf6, 0xfb, 0x28, + 0xfb, 0x9, 0x1f, 0x13, 0xdf, 0x33, 0x59, 0xfb, 0xb, 0x3d, 0x60, 0x8f, + 0xbc, 0x9c, 0x8e, 0x1e, 0xcd, 0xf7, 0x98, 0x5, 0x44, 0x6, 0x80, 0x63, + 0x5, 0xa5, 0x7d, 0x80, 0xa6, 0x5b, 0x1b, 0xfb, 0x1e, 0x4a, 0xfb, 0x36, + 0x3e, 0x1f, 0x13, 0x0, 0xfb, 0x4, 0xd1, 0x72, 0xa8, 0x8c, 0x1e, 0xc8, + 0x90, 0xba, 0xbd, 0x96, 0x9c, 0x8, 0xe, 0x4b, 0x1d, 0x12, 0x94, 0xf7, + 0x5f, 0x65, 0x9a, 0x13, 0xf0, 0x94, 0x16, 0x3a, 0xa, 0x13, 0xe8, 0x20, + 0xa, 0x5, 0x13, 0xf0, 0x7f, 0x6d, 0x88, 0x86, 0x55, 0x83, 0x8, 0x13, + 0xe8, 0x31, 0x1d, 0x9f, 0x8b, 0xb5, 0xf7, 0xc1, 0xa9, 0xf7, 0x9b, 0xb3, + 0x12, 0xf3, 0xf7, 0x34, 0xf7, 0x30, 0xf7, 0x39, 0xfb, 0x1e, 0xf7, 0x40, + 0x13, 0xf4, 0xf7, 0x9c, 0xf7, 0xeb, 0x15, 0xa9, 0x6, 0xcc, 0x88, 0xe3, + 0x7c, 0xfb, 0x23, 0x1a, 0x4e, 0x7e, 0x3c, 0xfb, 0x2, 0x61, 0x79, 0x9b, + 0xb8, 0x1e, 0xf7, 0xa2, 0x4, 0xf7, 0x63, 0x7, 0xa2, 0x8c, 0x8c, 0xac, + 0xbe, 0x1b, 0x13, 0xf8, 0xdc, 0xa1, 0x59, 0x45, 0x25, 0x75, 0x62, 0xfb, + 0x1a, 0x1f, 0xfb, 0x8c, 0xfc, 0x9, 0x15, 0xf7, 0xd6, 0x6, 0x13, 0xf4, + 0xf7, 0x67, 0xd1, 0xed, 0xdf, 0xf7, 0x6, 0x22, 0xc1, 0x37, 0x99, 0x1f, + 0x8d, 0x7, 0x13, 0xf8, 0xb5, 0x98, 0xf7, 0x5, 0xa5, 0xf7, 0x3, 0x1a, + 0xf7, 0x30, 0xfb, 0x60, 0x8f, 0x53, 0x1e, 0xfb, 0xc9, 0x53, 0x1d, 0xfc, + 0x71, 0x7, 0x4e, 0x6b, 0x8a, 0x53, 0x8b, 0x1d, 0xd6, 0x78, 0xbb, 0x7d, + 0xa, 0xfb, 0x44, 0xf7, 0x45, 0xf8, 0x2b, 0xae, 0x13, 0xe6, 0xf9, 0x25, + 0xf7, 0x2c, 0x15, 0x2e, 0x38, 0x38, 0x6d, 0x3d, 0x1b, 0x13, 0xea, 0xfb, + 0x28, 0x64, 0xf7, 0x46, 0xf7, 0x11, 0xf7, 0x3d, 0xb4, 0xf7, 0x31, 0xf7, + 0x26, 0xf7, 0x6, 0xd3, 0xfb, 0x9, 0x34, 0xae, 0x1f, 0xae, 0x6, 0x13, + 0xd6, 0x6a, 0x1d, 0x83, 0x80, 0x90, 0x92, 0x7c, 0x1f, 0x13, 0xe6, 0x99, + 0x6c, 0x5c, 0xa2, 0x4e, 0x1b, 0x13, 0xea, 0xfb, 0x66, 0xfb, 0x2e, 0xfb, + 0x30, 0xfb, 0x5f, 0xfb, 0x4f, 0xf7, 0x17, 0xfb, 0x38, 0xf7, 0x7d, 0xf7, + 0x14, 0xd4, 0xca, 0xde, 0xd4, 0x1f, 0xe, 0x8a, 0x1d, 0x68, 0xb8, 0xf8, + 0xdf, 0xb7, 0x12, 0xec, 0xf7, 0x36, 0xf7, 0x95, 0xf7, 0x42, 0x13, 0xb8, + 0x99, 0x16, 0xf7, 0xd0, 0x6, 0xf7, 0x90, 0xf7, 0x0, 0xf7, 0x38, 0xf7, + 0x4c, 0xf7, 0x2e, 0x30, 0xf7, 0x42, 0x95, 0x1d, 0x87, 0xb7, 0x89, 0x4e, + 0x1a, 0xfc, 0x6d, 0x7, 0x66, 0x77, 0x6e, 0x4c, 0x1e, 0xf7, 0x89, 0xcd, + 0x15, 0xf8, 0x6d, 0x7, 0x8c, 0x1d, 0xfb, 0x55, 0x30, 0x1f, 0x13, 0x78, + 0x84, 0xa, 0x1e, 0xe, 0x9f, 0x8b, 0xb4, 0xf7, 0xb4, 0xad, 0xf7, 0xa1, + 0xb7, 0x12, 0xf3, 0xf7, 0x36, 0xf7, 0x36, 0xa5, 0xf7, 0x6, 0xa4, 0x17, + 0x9b, 0x16, 0x3c, 0xa, 0x7b, 0x29, 0x1b, 0x4a, 0x78, 0x97, 0xb7, 0x1f, + 0xf7, 0x7c, 0x7, 0xee, 0xbe, 0x6d, 0xfb, 0x11, 0x97, 0x1f, 0xa5, 0xf7, + 0xe6, 0x71, 0x6, 0xfb, 0x10, 0x7c, 0x58, 0x72, 0x2b, 0x1b, 0xf7, 0x63, + 0x7, 0xb6, 0x9d, 0x9e, 0xc2, 0xf7, 0x1b, 0xd2, 0x7c, 0xfb, 0x22, 0xa2, + 0x1e, 0xa4, 0xf7, 0x5d, 0xfc, 0xd5, 0x6, 0x13, 0x10, 0x68, 0x7, 0xb9, + 0x88, 0xb5, 0x89, 0x49, 0x1a, 0xfc, 0x6d, 0x7, 0x4d, 0x6c, 0x91, 0x52, + 0x8b, 0x1d, 0x67, 0x8b, 0xae, 0xf7, 0xba, 0xad, 0xf7, 0x19, 0x76, 0xc5, + 0x76, 0xf7, 0xc, 0xb7, 0x1, 0xf3, 0xf7, 0x36, 0xf7, 0x2d, 0xa4, 0xf7, + 0x7, 0xa3, 0x3, 0x9b, 0x16, 0xf7, 0xfc, 0xae, 0x6, 0x45, 0x8e, 0x63, + 0x83, 0xcd, 0x1a, 0xf7, 0x7d, 0x7, 0xf7, 0x12, 0x9b, 0x42, 0x39, 0x96, + 0x1f, 0xa4, 0xf7, 0xe6, 0x72, 0x6, 0x3b, 0x7d, 0x7c, 0x46, 0xfb, 0x10, + 0x1b, 0xf7, 0x6d, 0x7, 0xb6, 0x9d, 0x94, 0xc1, 0xf7, 0x40, 0xa6, 0x56, + 0x23, 0xa1, 0x1e, 0xa3, 0xf7, 0x5d, 0xfc, 0xcb, 0x68, 0x6, 0xba, 0x88, + 0xb4, 0x93, 0x49, 0x1a, 0xfc, 0x78, 0x7, 0x4d, 0x6c, 0x92, 0x52, 0x8b, + 0x1d, 0xf7, 0x17, 0x78, 0xac, 0xf7, 0x82, 0xae, 0xf7, 0x50, 0x76, 0xf7, + 0x60, 0xac, 0x88, 0x77, 0x12, 0xb0, 0xf7, 0x45, 0xf7, 0xbf, 0xf7, 0x30, + 0x13, 0xf6, 0xf8, 0x30, 0xf7, 0x90, 0x15, 0xd0, 0x87, 0xab, 0x7d, 0x4b, + 0x1a, 0x38, 0x7, 0x60, 0x7b, 0x6d, 0x33, 0xfb, 0x51, 0x85, 0xf7, 0x8b, + 0xd2, 0xf7, 0x40, 0xb5, 0xf7, 0x2e, 0xf7, 0x25, 0xf7, 0x6, 0xd3, 0xfb, + 0x9, 0x34, 0xae, 0x1e, 0xae, 0x6, 0x13, 0xee, 0x6a, 0x1d, 0x84, 0x81, + 0x8f, 0x90, 0x7f, 0x1f, 0x13, 0xf6, 0x99, 0x6c, 0x5b, 0xa5, 0x4a, 0x1b, + 0xfb, 0x6c, 0xfb, 0x28, 0xfb, 0x36, 0xfb, 0x59, 0xfb, 0x42, 0xf7, 0xe, + 0xfb, 0x45, 0xf7, 0x8e, 0xe2, 0xf7, 0x11, 0xa7, 0xad, 0xbb, 0x1f, 0xf7, + 0x13, 0x7, 0xdd, 0xa3, 0x84, 0xc9, 0x92, 0x1e, 0xae, 0xfb, 0xeb, 0x7, + 0xe, 0xf7, 0x17, 0xa0, 0x76, 0xf7, 0xda, 0xba, 0xf7, 0xa0, 0xae, 0x1, + 0xf5, 0xf7, 0x36, 0xf7, 0x85, 0x7f, 0x1d, 0xa0, 0x16, 0xf7, 0xe5, 0xae, + 0x6, 0x56, 0x91, 0x66, 0x8f, 0xc8, 0x1a, 0xf7, 0x70, 0xf7, 0x85, 0xfb, + 0x70, 0x7, 0x4e, 0x66, 0x87, 0x56, 0x85, 0x1e, 0x68, 0xf7, 0xe8, 0xae, + 0x7, 0x56, 0x92, 0x68, 0x8f, 0xc7, 0x1a, 0xf8, 0x64, 0x7, 0xcc, 0xb8, + 0x8e, 0xb6, 0x8e, 0x1e, 0xae, 0xfb, 0xe8, 0x68, 0x7, 0xb7, 0x88, 0xb9, + 0x89, 0x49, 0x1a, 0xfb, 0x59, 0xfb, 0x85, 0xf7, 0x59, 0x7, 0xcd, 0xb9, + 0x8d, 0xb7, 0x8e, 0x1e, 0xae, 0xfb, 0xe5, 0x68, 0x7, 0xb5, 0x87, 0xb6, + 0x89, 0x4a, 0x7e, 0xa, 0x50, 0x6b, 0x86, 0x56, 0x8b, 0xa, 0x5c, 0xa, + 0x27, 0xa, 0xe, 0x2b, 0xac, 0xb7, 0xac, 0xf9, 0x7, 0xae, 0x1, 0x63, + 0xf7, 0x23, 0xf7, 0x11, 0x7f, 0x1d, 0xf7, 0x13, 0xf9, 0x15, 0x15, 0xc4, + 0x89, 0xb7, 0x7f, 0x47, 0x1a, 0xfc, 0x5e, 0x7, 0x6c, 0x8b, 0x53, 0x4a, + 0x6f, 0x7b, 0x99, 0x9c, 0x9b, 0x94, 0x92, 0x93, 0x95, 0x1e, 0x90, 0x92, + 0x90, 0x94, 0x9b, 0x1a, 0xc2, 0x59, 0x9f, 0x75, 0x6e, 0x61, 0x75, 0x54, + 0x7a, 0x95, 0xfb, 0x2, 0xf7, 0x2a, 0xf2, 0xf7, 0x10, 0x9a, 0xf4, 0x1e, + 0xf8, 0x5e, 0x7, 0xd0, 0xab, 0x94, 0xc4, 0x8f, 0x1e, 0xae, 0xfb, 0xf4, + 0x7, 0xe, 0xf7, 0x17, 0x4e, 0x1d, 0x1, 0xf7, 0x9, 0x7f, 0x1d, 0xa9, + 0x16, 0xf7, 0xe5, 0xae, 0x6, 0x56, 0x92, 0x68, 0x8f, 0xc7, 0x1a, 0xf7, + 0x4e, 0x7, 0xa6, 0xa4, 0xf7, 0x4a, 0xfb, 0x6d, 0xb5, 0x59, 0x84, 0x7b, + 0x31, 0x8c, 0x19, 0x68, 0xf7, 0xe4, 0xae, 0x7, 0x77, 0x8c, 0x7d, 0x8d, + 0x7c, 0x9d, 0xfb, 0xc5, 0xf8, 0x4, 0x18, 0xf7, 0x3c, 0xf7, 0x40, 0xbb, + 0xb2, 0xf4, 0x91, 0x8, 0xae, 0xfb, 0xb5, 0x68, 0x7, 0xf7, 0x0, 0x8a, + 0x86, 0x6a, 0x55, 0x55, 0xfb, 0x6d, 0xfb, 0x64, 0x18, 0xf7, 0x6a, 0x7, + 0xe1, 0xad, 0x83, 0xc2, 0x8f, 0x1e, 0xae, 0xfb, 0xe6, 0x68, 0x7, 0xb9, + 0x88, 0xb4, 0x7e, 0x49, 0x1a, 0xfc, 0x59, 0x7, 0x4e, 0x6b, 0x87, 0x54, + 0x8b, 0x1d, 0x9f, 0x8b, 0xb4, 0xf8, 0xec, 0x60, 0x1d, 0x42, 0x96, 0x1d, + 0xf8, 0x62, 0x7, 0xcf, 0xaa, 0x99, 0xd1, 0x1e, 0xae, 0xfb, 0xf1, 0x68, + 0x7, 0xb8, 0xb4, 0x7b, 0x49, 0x1f, 0xfc, 0x62, 0x7, 0x4e, 0x61, 0x91, + 0x5f, 0x8b, 0xa, 0xf7, 0xbd, 0x8b, 0xae, 0xf8, 0xf3, 0xae, 0x12, 0xb2, + 0xf7, 0x17, 0x4a, 0xb5, 0xf8, 0x8c, 0xf7, 0x2f, 0x13, 0xd8, 0x99, 0x16, + 0xf7, 0x7e, 0xae, 0x6, 0x38, 0x90, 0x79, 0x90, 0xd1, 0x1a, 0xf8, 0x64, + 0x8d, 0x7, 0x13, 0xe8, 0xf7, 0x8e, 0xfc, 0xd7, 0x5, 0xa6, 0x6, 0xf7, + 0x8e, 0xf8, 0xe6, 0x5, 0x8d, 0xfc, 0x78, 0x6, 0x49, 0x6e, 0x88, 0x4f, + 0x85, 0x1e, 0x68, 0xf7, 0xe0, 0xae, 0x7, 0x49, 0x94, 0x75, 0x7d, 0xdb, + 0x1a, 0xf8, 0x4b, 0x7, 0xe1, 0xab, 0x8d, 0xc3, 0x8f, 0x1e, 0xae, 0xfb, + 0x90, 0x7, 0x13, 0xd0, 0xfb, 0x5c, 0xfc, 0x6c, 0xfb, 0x5c, 0xf8, 0x6c, + 0x5, 0xfb, 0x91, 0x68, 0x6, 0xd2, 0x86, 0x9d, 0x7d, 0x57, 0x1a, 0xfc, + 0x5b, 0x7, 0x51, 0x7e, 0x7c, 0x3d, 0x8b, 0xa, 0xd6, 0x8e, 0x76, 0xb2, + 0x76, 0xf8, 0xb5, 0x76, 0xf7, 0x9, 0xae, 0x12, 0xf3, 0xb7, 0xf8, 0x43, + 0xb7, 0x13, 0x7c, 0x72, 0x1d, 0x13, 0xbc, 0x37, 0xa, 0xe, 0x51, 0x1d, + 0x1, 0xae, 0xf7, 0x45, 0xf7, 0xf6, 0x48, 0xa, 0xfb, 0x48, 0x78, 0xa, + 0xfb, 0x7b, 0x3c, 0x1d, 0xf7, 0x21, 0x5e, 0xa, 0xf7, 0x21, 0x5e, 0x1d, + 0xfb, 0x1d, 0xfb, 0x6e, 0x1e, 0xe, 0x67, 0xa0, 0x76, 0xf7, 0xc3, 0xae, + 0xf7, 0xb9, 0xb8, 0x1, 0xef, 0xf7, 0x36, 0xf7, 0x3a, 0xf7, 0x40, 0x3, + 0x9b, 0x16, 0xf7, 0xe2, 0xae, 0x6, 0x46, 0x94, 0x78, 0x83, 0xdc, 0x1a, + 0xf7, 0x4e, 0x7, 0xf7, 0x3a, 0xf7, 0x40, 0xb6, 0xf7, 0x23, 0xf7, 0x3d, + 0xfb, 0x4a, 0x9d, 0x3b, 0x1f, 0xfb, 0xd6, 0x68, 0x6, 0xc0, 0x86, 0xaa, + 0x86, 0x62, 0x1a, 0xfc, 0x6d, 0x7, 0x31, 0x64, 0x93, 0x5e, 0x1e, 0xf7, + 0x8a, 0xf7, 0xc3, 0x15, 0xf7, 0x96, 0x7, 0xa1, 0x8c, 0x98, 0x98, 0xad, + 0x1b, 0xdd, 0xaf, 0x6f, 0xfb, 0x6, 0xfb, 0x10, 0x5e, 0x6e, 0xfb, 0xd, + 0x8d, 0x1f, 0xe, 0xf7, 0x17, 0xfb, 0x44, 0xf7, 0x52, 0x93, 0x1d, 0x5a, + 0xa, 0xf7, 0xa5, 0x89, 0x15, 0xfb, 0x1f, 0xf7, 0x5, 0xf5, 0x68, 0xe1, + 0x1b, 0xcd, 0xc1, 0x9f, 0x9a, 0xb1, 0x1f, 0x85, 0xa3, 0x2d, 0x6d, 0x2f, + 0xa4, 0x55, 0xf7, 0x8, 0x19, 0xf7, 0x2b, 0xb2, 0xf1, 0xf7, 0x12, 0xf7, + 0x42, 0x1a, 0xf7, 0x6e, 0xfb, 0x35, 0xf7, 0x20, 0x5e, 0x1d, 0xfb, 0x13, + 0xfb, 0x7b, 0xfb, 0x14, 0xd8, 0xfb, 0x33, 0xf7, 0x35, 0x5b, 0x1e, 0x4e, + 0xf7, 0xe3, 0x79, 0x1d, 0xf7, 0x47, 0x66, 0x1d, 0xfb, 0x47, 0x78, 0xa, + 0xfb, 0x7c, 0x65, 0x1d, 0xf7, 0x7c, 0xe2, 0x1e, 0xe, 0xd6, 0xa0, 0x76, + 0xf9, 0xc, 0xb7, 0x68, 0xae, 0x12, 0xf7, 0x6, 0xf7, 0x36, 0xf7, 0x4b, + 0xf7, 0x3f, 0x13, 0xd8, 0xf7, 0xa8, 0xf7, 0xed, 0x15, 0xf7, 0x89, 0x7, + 0xaa, 0x90, 0x8d, 0x96, 0xc2, 0x1b, 0xdb, 0xb4, 0x6a, 0x26, 0xfb, 0x16, + 0x57, 0x75, 0xfb, 0x17, 0x8a, 0x1f, 0xfb, 0x8e, 0xfb, 0xed, 0x15, 0xf7, + 0xe6, 0xae, 0x6, 0x49, 0x94, 0x75, 0x8e, 0xdb, 0x1a, 0xf7, 0x4e, 0xa6, + 0x7, 0xf7, 0x63, 0xfb, 0xcd, 0x5, 0xf7, 0x61, 0xae, 0x6, 0x7f, 0x77, + 0x8c, 0x9d, 0x7d, 0x1f, 0xfb, 0x58, 0xf7, 0xa7, 0x5, 0xc1, 0x9c, 0xf2, + 0xa8, 0xf7, 0xf, 0x1a, 0xf7, 0x3c, 0xfb, 0x68, 0x95, 0x45, 0x1e, 0xfb, + 0xd6, 0x6, 0x13, 0xb8, 0x68, 0x7, 0xc4, 0x87, 0xaa, 0x86, 0x60, 0x1a, + 0xfc, 0x62, 0x7, 0x3a, 0x77, 0x88, 0x47, 0x83, 0x1e, 0xe, 0x30, 0x78, + 0xac, 0xf9, 0x1a, 0xaa, 0x8c, 0x8e, 0xa, 0x13, 0xd8, 0x7c, 0x1d, 0x97, + 0x94, 0x1d, 0xc4, 0x1b, 0x47, 0x1d, 0x13, 0xb8, 0x85, 0xa, 0x77, 0x75, + 0x92, 0x93, 0x73, 0x1f, 0x13, 0xd8, 0x94, 0x70, 0x6e, 0x94, 0x6e, 0x46, + 0x1d, 0xe, 0x9f, 0x8b, 0xae, 0xf8, 0x61, 0x76, 0xf7, 0x3d, 0xab, 0x1, + 0xf7, 0x91, 0x7f, 0x1d, 0xf7, 0x30, 0x16, 0xf7, 0xf9, 0xae, 0x6, 0x41, + 0x90, 0x73, 0x8d, 0xe0, 0x1a, 0xf8, 0x99, 0x7, 0xd0, 0x87, 0xf2, 0x86, + 0x9f, 0xfb, 0x34, 0x8, 0xa8, 0x6, 0x89, 0xf7, 0x5d, 0x5, 0xfc, 0xef, + 0xfb, 0x5d, 0xa8, 0x6, 0x9f, 0xf7, 0x34, 0xf2, 0x90, 0xd1, 0x8f, 0x8, + 0xfc, 0x99, 0x7, 0x37, 0x73, 0x89, 0x42, 0x8b, 0x1d, 0x6b, 0xa, 0x63, + 0xa, 0x9b, 0xf9, 0x15, 0x15, 0xc3, 0x85, 0xa5, 0x8c, 0x37, 0x1a, 0xfb, + 0xdb, 0x7, 0xfb, 0x4d, 0xf7, 0x1c, 0x50, 0xf7, 0x1c, 0xf7, 0x26, 0xf6, + 0xe6, 0xf7, 0x2d, 0x1e, 0xf7, 0xdb, 0x7, 0xcd, 0xa2, 0x9a, 0x43, 0xa, + 0x73, 0x4e, 0x1a, 0xfb, 0xdb, 0x7, 0x4b, 0x89, 0xfb, 0x17, 0xfb, 0x44, + 0xfb, 0x24, 0x8b, 0xf7, 0x1e, 0xc4, 0x1e, 0xf7, 0xdb, 0x7, 0xe3, 0xaa, + 0x89, 0xcd, 0x8e, 0x1e, 0xae, 0xfb, 0xe6, 0x7, 0xe, 0xd6, 0x8e, 0x76, + 0xf9, 0x27, 0xae, 0x1, 0xf7, 0xf8, 0x79, 0x15, 0xa6, 0x6, 0xf7, 0x78, + 0xf8, 0xd5, 0xa1, 0xc3, 0x98, 0x9e, 0xc2, 0x92, 0x19, 0xae, 0xfb, 0x69, + 0x68, 0x7, 0xc4, 0x88, 0xa8, 0x87, 0x64, 0x1a, 0xfb, 0x27, 0xfc, 0x18, + 0x5, 0xfb, 0x21, 0xf7, 0xe9, 0x77, 0xab, 0x9e, 0x1a, 0xb1, 0xa2, 0x8b, + 0xca, 0x8f, 0x1e, 0xae, 0xfb, 0xe4, 0x68, 0x7, 0xb6, 0x84, 0x9a, 0x88, + 0xa5, 0x4f, 0x8, 0xe, 0xf7, 0xf5, 0x91, 0x76, 0xf8, 0x7d, 0x76, 0xf7, + 0x50, 0xae, 0x1, 0xf7, 0xc0, 0x7c, 0x15, 0xa7, 0x6, 0xf7, 0x4a, 0xf8, + 0x68, 0x5, 0x92, 0x6, 0xf7, 0x3c, 0xfc, 0x68, 0x5, 0xa6, 0x6, 0xf7, + 0x5c, 0xf8, 0xe4, 0x97, 0xb0, 0xa1, 0xa3, 0xae, 0x8e, 0x19, 0xae, 0xfb, + 0x4a, 0x68, 0x7, 0xad, 0x89, 0xae, 0x8a, 0x62, 0x1a, 0xfb, 0xa, 0xfc, + 0x8, 0x5, 0x89, 0x6, 0xfb, 0x5, 0xf7, 0xf4, 0x83, 0x99, 0x97, 0x1a, + 0xad, 0xa8, 0x8c, 0xb6, 0x8e, 0x1e, 0xae, 0xfb, 0xcc, 0x68, 0x7, 0xbb, + 0x89, 0x96, 0x80, 0x98, 0x75, 0xae, 0x35, 0x18, 0xfb, 0x9, 0xfb, 0xc5, + 0x5, 0x89, 0x6, 0xfb, 0xf, 0xf8, 0x8, 0x88, 0x8c, 0x96, 0x1a, 0xb0, + 0xa7, 0x8d, 0xaf, 0x8e, 0x1e, 0xae, 0xfb, 0xba, 0x68, 0x7, 0xb5, 0x85, + 0x95, 0x81, 0x9c, 0x5b, 0x8, 0xe, 0xd6, 0x4e, 0x1d, 0x1, 0x9b, 0xf9, + 0x3f, 0x3, 0x9b, 0x16, 0xf7, 0x8e, 0xae, 0x6, 0x68, 0x8e, 0x55, 0x8f, + 0xae, 0x1a, 0xf7, 0x20, 0xf7, 0x56, 0x5, 0xf7, 0x3, 0xfb, 0x46, 0x96, + 0x7b, 0x81, 0x1a, 0x70, 0x6f, 0x89, 0x57, 0x88, 0x1e, 0x68, 0xf7, 0xe8, + 0xae, 0x7, 0x6f, 0x8d, 0x7b, 0x8d, 0x56, 0xdd, 0xfb, 0x4a, 0xf7, 0xa5, + 0x18, 0xf7, 0x32, 0xf7, 0x72, 0x9e, 0x9c, 0xe6, 0x93, 0x8, 0xae, 0xfb, + 0x8e, 0x68, 0x7, 0xb7, 0x88, 0xa7, 0x8a, 0x6c, 0x1a, 0x70, 0x8b, 0x95, + 0xfb, 0x6, 0xfb, 0x32, 0x1e, 0xfb, 0x1, 0xf7, 0x3c, 0x88, 0x87, 0x98, + 0x1a, 0xa8, 0x9f, 0x8b, 0xc6, 0x8f, 0x1e, 0xae, 0xfb, 0xee, 0x68, 0x7, + 0xb5, 0x89, 0x9c, 0x72, 0xa0, 0x6c, 0xf7, 0x5a, 0xfb, 0xad, 0x18, 0xfb, + 0x39, 0xfb, 0x67, 0x62, 0x55, 0x5b, 0x8b, 0x72, 0x89, 0x19, 0xe, 0xd6, + 0x4e, 0x1d, 0x1, 0xf7, 0xaa, 0xf7, 0x36, 0xf7, 0x1d, 0xf7, 0xe, 0x3, + 0x69, 0x1d, 0x8d, 0xde, 0x1a, 0xf7, 0x42, 0x66, 0xa, 0xcf, 0x7f, 0x7a, + 0x6e, 0xfb, 0x38, 0xfb, 0xa0, 0x18, 0x42, 0x1d, 0xe, 0x8c, 0xa, 0x1, + 0x39, 0xa, 0xe, 0x91, 0x1d, 0xce, 0xf3, 0x3, 0xce, 0xfb, 0x29, 0x15, + 0xf7, 0x7e, 0xb6, 0x3b, 0x6, 0x5a, 0x8a, 0xa0, 0xab, 0x1f, 0xf8, 0xfe, + 0x7, 0xc6, 0x96, 0x96, 0xc3, 0x1e, 0xca, 0xb6, 0xfb, 0x7e, 0x6, 0xe, + 0xfc, 0x5, 0xfb, 0xa, 0x76, 0xf7, 0x21, 0x76, 0xf9, 0x5a, 0x77, 0x1, + 0xf7, 0x56, 0xfb, 0x1f, 0x15, 0xcf, 0x6, 0xfb, 0x4e, 0xf9, 0xd2, 0x5, + 0x44, 0x6, 0xe, 0x91, 0x1d, 0xf7, 0x36, 0xf3, 0x3, 0xab, 0x21, 0x15, + 0x60, 0xf7, 0x7e, 0xf9, 0xcf, 0xfb, 0x7e, 0x60, 0xca, 0x7, 0xc3, 0x96, + 0x80, 0x50, 0x1f, 0xfc, 0xfe, 0x7, 0x6a, 0x8b, 0x77, 0x59, 0x1e, 0xe, + 0x49, 0xf7, 0xe0, 0x76, 0xf8, 0x1, 0x77, 0x1, 0xd4, 0xf7, 0xcb, 0x15, + 0xe4, 0x6, 0xf7, 0x15, 0xf7, 0xa0, 0xf7, 0x15, 0xfb, 0xa0, 0x5, 0xe4, + 0x6, 0xfb, 0x46, 0xf8, 0x1, 0x5, 0x3b, 0x6, 0xe, 0xfb, 0x11, 0xbd, + 0x1, 0x40, 0x4, 0x59, 0xf8, 0x88, 0xbd, 0x7, 0xe, 0x90, 0xa, 0xf7, + 0x52, 0xf8, 0xa4, 0x26, 0xa, 0x7d, 0xd1, 0x5a, 0x50, 0xa, 0x12, 0xa4, + 0xf7, 0x26, 0xfb, 0x13, 0xf7, 0x19, 0xf7, 0x8, 0xf7, 0x1e, 0x13, 0x66, + 0xf7, 0xba, 0xc3, 0x32, 0x1d, 0x13, 0x26, 0x31, 0xa, 0x23, 0xb6, 0xfb, + 0x3, 0xfb, 0x10, 0x5b, 0x3a, 0x1d, 0x1e, 0xb2, 0x6d, 0x93, 0xa0, 0x1a, + 0x13, 0x5a, 0x9b, 0xac, 0x9f, 0xaf, 0xd5, 0x8f, 0x55, 0x58, 0x1e, 0x53, + 0x7, 0x44, 0x1d, 0x13, 0x8a, 0x26, 0x1d, 0xe, 0x30, 0x7d, 0xab, 0x81, + 0x76, 0xf8, 0x44, 0xc1, 0xf7, 0x5f, 0x77, 0x12, 0xd3, 0xf7, 0x1f, 0xf7, + 0x37, 0xf7, 0x27, 0x13, 0x7c, 0xd3, 0x7e, 0x15, 0x97, 0x6, 0xda, 0xc3, + 0x5, 0x13, 0xbc, 0x5e, 0xb9, 0xb2, 0x7f, 0xaa, 0x1b, 0xf7, 0x39, 0xd8, + 0xf7, 0x5, 0xf7, 0x13, 0xf7, 0x17, 0x46, 0xf7, 0x8, 0xfb, 0xb, 0x46, + 0x67, 0x65, 0x79, 0x7a, 0x1f, 0xf7, 0x97, 0xfb, 0x56, 0x69, 0x7, 0xaf, + 0x84, 0x9e, 0x87, 0x5c, 0x1a, 0x13, 0x7c, 0xf7, 0x1f, 0xfc, 0x7b, 0x15, + 0xf7, 0x9b, 0x7, 0xa1, 0x94, 0x9a, 0xb0, 0xb9, 0x1b, 0xe2, 0x91, 0xfb, + 0x1a, 0x50, 0x1f, 0x13, 0xbc, 0xfb, 0x31, 0x68, 0x58, 0x4f, 0x54, 0x7e, + 0xbe, 0xa7, 0x1e, 0xe, 0xfb, 0x5f, 0x7d, 0xce, 0x86, 0x1d, 0xf7, 0x12, + 0xf7, 0x10, 0x13, 0xb8, 0xf8, 0x30, 0xf7, 0x1, 0x15, 0x70, 0x73, 0x71, + 0x6e, 0x52, 0x1b, 0x3d, 0x4d, 0xb5, 0xf7, 0x20, 0x8c, 0x1f, 0xf5, 0x8c, + 0x91, 0xf0, 0xd9, 0x1b, 0x9a, 0xa5, 0x82, 0x6d, 0x1f, 0x13, 0xd8, 0x8f, + 0x1d, 0x37, 0xb0, 0x44, 0x2d, 0xfb, 0x22, 0x62, 0xfb, 0x59, 0xfb, 0x1f, + 0xe1, 0xfb, 0x2, 0xf7, 0x14, 0xda, 0xcd, 0xb3, 0xcc, 0xb9, 0x1e, 0xe, + 0x30, 0x7d, 0xc3, 0xf8, 0xb, 0xc3, 0xf7, 0x3d, 0xad, 0x12, 0xa4, 0xf7, + 0x28, 0xf7, 0x37, 0xf7, 0x1f, 0x17, 0xf7, 0xe7, 0xbf, 0x15, 0x4a, 0x7, + 0xc9, 0x9c, 0x94, 0x8c, 0xf7, 0x10, 0x9a, 0x8, 0x13, 0xf8, 0xac, 0x7, + 0x52, 0x8d, 0x89, 0xa8, 0xa6, 0x1a, 0xf8, 0xc9, 0xfb, 0x6b, 0x69, 0x7, + 0xc2, 0x87, 0xa0, 0x8a, 0x56, 0x1a, 0xfb, 0x41, 0x7, 0xa5, 0x73, 0x69, + 0xaf, 0x4f, 0x1b, 0x2d, 0x28, 0x42, 0xfb, 0x42, 0xfb, 0x26, 0xe7, 0x2d, + 0xde, 0xd6, 0xa7, 0xa7, 0xb1, 0xaf, 0x1f, 0x13, 0xd8, 0x88, 0xc7, 0x15, + 0x80, 0x66, 0x50, 0x5d, 0x3b, 0x8b, 0xf7, 0x12, 0xc5, 0xec, 0x99, 0xe9, + 0xd2, 0xc3, 0xa1, 0x4e, 0x8a, 0x1e, 0xe, 0x49, 0x1d, 0x98, 0xa, 0x17, + 0xf7, 0x38, 0xf7, 0xae, 0x15, 0x13, 0xe0, 0xf7, 0x1e, 0xa9, 0xa1, 0xb0, + 0xdb, 0x7d, 0xfb, 0x6, 0x5d, 0x8c, 0x1e, 0xfb, 0x15, 0x66, 0x15, 0xf7, + 0x90, 0x6, 0x13, 0xf0, 0xc1, 0x7b, 0xf7, 0x42, 0xfb, 0x42, 0x1e, 0x13, + 0xd0, 0x2b, 0x1d, 0xe, 0xfb, 0xce, 0x8b, 0xad, 0xf8, 0x13, 0xb7, 0xcf, + 0xf7, 0x36, 0x6c, 0xaa, 0x12, 0xd2, 0xf7, 0x1f, 0x13, 0xd8, 0x99, 0x16, + 0xf7, 0xaa, 0xad, 0x6, 0x4a, 0x8d, 0x7a, 0x9a, 0xb6, 0x1a, 0xf7, 0xd7, + 0xe2, 0xb7, 0x34, 0xf7, 0xe, 0x7, 0xa6, 0x86, 0xbd, 0xbb, 0x97, 0xa3, + 0x88, 0x7b, 0x1e, 0x7c, 0x75, 0x7b, 0x70, 0x1a, 0x13, 0xe8, 0x77, 0x9c, + 0x69, 0xb5, 0xb3, 0xa2, 0xa6, 0xae, 0xd0, 0x40, 0xaa, 0x4e, 0xfb, 0x49, + 0x8a, 0xfb, 0x19, 0x2a, 0x1e, 0x52, 0x5f, 0xc4, 0xfb, 0xd7, 0x6, 0x56, + 0x74, 0x88, 0x69, 0x87, 0x1e, 0xe, 0xfb, 0x62, 0xf7, 0x3a, 0xfb, 0x2d, + 0xab, 0xf7, 0x1, 0xf7, 0xb, 0xe2, 0xa7, 0xf7, 0x6c, 0xc0, 0x82, 0xaa, + 0x12, 0xa7, 0xe3, 0x3c, 0xf7, 0x9, 0xfb, 0x9, 0xf7, 0x1d, 0xf7, 0x15, + 0xf7, 0x1b, 0x69, 0xda, 0x13, 0x7a, 0x20, 0xf7, 0xc, 0x63, 0x15, 0x53, + 0x86, 0x67, 0x71, 0x63, 0x1a, 0x13, 0x79, 0x20, 0x53, 0xd5, 0x64, 0xf7, + 0x10, 0xf7, 0x11, 0xf7, 0x18, 0xa6, 0xf7, 0x10, 0xf7, 0x3, 0xfb, 0x7, + 0x95, 0x5a, 0x8c, 0x1e, 0x13, 0x79, 0x40, 0xfb, 0x1f, 0x8d, 0x71, 0x8c, + 0xad, 0x1a, 0xa9, 0xb0, 0x9f, 0x9e, 0xec, 0x8b, 0x8b, 0x94, 0xa8, 0x1e, + 0xd3, 0xa2, 0xac, 0xc9, 0xc8, 0x1a, 0xc7, 0x6d, 0x9e, 0x81, 0x95, 0x1e, + 0x13, 0x7a, 0x20, 0xdd, 0xc0, 0xfb, 0x17, 0x6, 0x13, 0x94, 0xc0, 0x9b, + 0x63, 0x67, 0x91, 0x67, 0x1b, 0xfb, 0x1d, 0x49, 0x37, 0x3b, 0x43, 0xbb, + 0x5a, 0xd5, 0x70, 0x1f, 0x89, 0x7, 0x60, 0x7f, 0x41, 0x64, 0x4c, 0x1a, + 0x57, 0xac, 0x7c, 0xb8, 0x7b, 0x1e, 0x13, 0x7a, 0x20, 0xaa, 0x7d, 0x15, + 0xf7, 0x41, 0x6, 0xbf, 0xa7, 0x7c, 0x67, 0x44, 0xfb, 0x1e, 0x8b, 0x63, + 0x7a, 0x2e, 0x8a, 0xcb, 0xa1, 0x94, 0x9b, 0xa5, 0xa0, 0x1f, 0x13, 0x74, + 0xc0, 0xa2, 0xf7, 0xfd, 0x15, 0xca, 0x90, 0xd1, 0xc8, 0xcd, 0x8b, 0x33, + 0x5e, 0x52, 0x88, 0x45, 0x4c, 0x50, 0x84, 0xc5, 0xd0, 0x1e, 0xe, 0x30, + 0x82, 0x1d, 0xf7, 0x5f, 0x77, 0x1, 0xbb, 0xf7, 0x1f, 0xf7, 0x2c, 0x8a, + 0xa, 0x9b, 0x41, 0xa, 0x8b, 0xb3, 0x9c, 0x1f, 0x76, 0xa, 0x57, 0x60, + 0x75, 0x53, 0x5b, 0x1e, 0xf7, 0xad, 0xfb, 0x54, 0x69, 0x7, 0xb2, 0x83, + 0x99, 0x88, 0x5c, 0x1a, 0xfc, 0x81, 0x7, 0x5a, 0x7a, 0x8a, 0x67, 0x8b, + 0xa, 0x5d, 0xa, 0x12, 0xb5, 0xf7, 0x2f, 0xfb, 0x1d, 0xf7, 0x2f, 0xfb, + 0x26, 0x84, 0x1d, 0x13, 0xc8, 0x2d, 0xa, 0x13, 0xd0, 0xb7, 0xf8, 0xd7, + 0x15, 0x60, 0xab, 0x69, 0xb9, 0xb6, 0xad, 0xac, 0xb7, 0xb6, 0x69, 0xae, + 0x60, 0x5e, 0x6a, 0x67, 0x61, 0x1e, 0xe, 0xfb, 0xce, 0xfb, 0x5f, 0xf7, + 0x35, 0xf8, 0xd6, 0xf7, 0x2f, 0x12, 0xea, 0xf7, 0x2c, 0xfb, 0x27, 0xf7, + 0x1f, 0x13, 0xd0, 0xc5, 0xf8, 0x3f, 0x15, 0xae, 0x88, 0xa7, 0x8a, 0x54, + 0x7e, 0xa, 0x61, 0x83, 0x69, 0x63, 0x88, 0x6e, 0x8c, 0x9b, 0x93, 0x92, + 0x95, 0x91, 0x96, 0x1e, 0x90, 0x94, 0x90, 0x95, 0x96, 0x1a, 0xa0, 0x79, + 0xac, 0x62, 0x61, 0x77, 0x6c, 0x6f, 0x41, 0xd6, 0x6f, 0xc2, 0xf7, 0x4b, + 0x8f, 0xf7, 0x28, 0xc4, 0x1e, 0xf8, 0x5f, 0xfb, 0x5e, 0x7, 0x13, 0xe0, + 0xbd, 0xf7, 0x2c, 0x15, 0x60, 0xaa, 0x69, 0xb9, 0xb6, 0xae, 0xac, 0xb7, + 0xb6, 0x68, 0xae, 0x60, 0x5e, 0x6b, 0x67, 0x61, 0x1e, 0xe, 0x30, 0x8b, + 0xad, 0xf8, 0x3f, 0x77, 0xf7, 0x7f, 0x77, 0x1, 0xd1, 0x8a, 0xa, 0xa1, + 0x16, 0x99, 0xa, 0x5b, 0x92, 0x87, 0x94, 0xb7, 0x1a, 0xf3, 0x7, 0xa2, + 0xa3, 0x5, 0xf5, 0xfb, 0x1e, 0x98, 0x77, 0x80, 0x1a, 0x7b, 0x6f, 0x88, + 0x7d, 0x1e, 0x69, 0xf7, 0x7e, 0xad, 0x7, 0x83, 0x84, 0x8c, 0x99, 0x81, + 0x1f, 0xfb, 0x56, 0xf7, 0x96, 0xa5, 0xaa, 0xc1, 0xb1, 0xa1, 0x9d, 0x19, + 0xa7, 0xa2, 0x9e, 0x8f, 0xb3, 0x92, 0x8, 0xac, 0xfb, 0x6a, 0x6a, 0x7, + 0xbb, 0x84, 0x96, 0x89, 0x77, 0x1a, 0xfb, 0x29, 0xfb, 0x2e, 0x5, 0xf8, + 0x43, 0xfb, 0x4f, 0x69, 0x7, 0xbb, 0x8b, 0x5c, 0x80, 0x1f, 0xfc, 0x7e, + 0x7, 0x73, 0x83, 0x67, 0x63, 0x1e, 0xe, 0xfc, 0x5, 0x8b, 0xad, 0xf9, + 0x16, 0x77, 0x12, 0xc1, 0xf7, 0x1f, 0xfb, 0x12, 0x84, 0x1d, 0x13, 0xd0, + 0x64, 0x81, 0xaa, 0xa8, 0x1f, 0xf8, 0xda, 0x8d, 0xa, 0xfc, 0x7e, 0x97, + 0x1d, 0xf7, 0x4e, 0x82, 0x1d, 0x4c, 0x76, 0xd3, 0x77, 0x12, 0xd2, 0xf7, + 0x1f, 0xf7, 0x1e, 0x53, 0xa, 0x14, 0xe, 0x13, 0xce, 0x9b, 0x16, 0xf7, + 0x84, 0xad, 0x6, 0x64, 0x8f, 0x84, 0xa1, 0xaa, 0x1a, 0xf7, 0x95, 0x7, + 0x93, 0xb3, 0xbd, 0xb6, 0xc2, 0x8b, 0x58, 0x6b, 0x1e, 0xfb, 0x7c, 0x7, + 0x74, 0x8b, 0x6c, 0x5b, 0x88, 0x1e, 0x69, 0xf7, 0x7e, 0xad, 0x7, 0x65, + 0x8e, 0x82, 0xa1, 0xab, 0x1a, 0xf7, 0x95, 0x7, 0x93, 0xb5, 0xbd, 0xb5, + 0xc1, 0x8b, 0x57, 0x6c, 0x1e, 0xfb, 0x7c, 0x7, 0x73, 0x8b, 0x6c, 0x5a, + 0x89, 0x1e, 0x69, 0xf7, 0x82, 0xad, 0x7, 0x59, 0x8c, 0x8b, 0xaa, 0xa4, + 0x1a, 0xf7, 0x85, 0x7, 0xf7, 0x2, 0x3c, 0xaa, 0x54, 0x51, 0x5e, 0x6f, + 0x50, 0x5e, 0x1e, 0xab, 0x7c, 0x72, 0xc2, 0x30, 0x1b, 0x13, 0xbe, 0x37, + 0x5f, 0x4f, 0x73, 0x7d, 0x1f, 0x88, 0x1d, 0xa8, 0x87, 0xa5, 0x88, 0x57, + 0x1a, 0xfb, 0xa6, 0x7, 0x5a, 0x75, 0x86, 0x6a, 0x8b, 0x1d, 0x30, 0x82, + 0x1d, 0x4c, 0x76, 0xd3, 0x77, 0x12, 0xcd, 0xf7, 0x1f, 0xfb, 0x17, 0x85, + 0x1d, 0x13, 0xca, 0xa0, 0x16, 0xf7, 0x85, 0xad, 0x6, 0x13, 0xc6, 0x59, + 0x1d, 0x1e, 0x13, 0xc9, 0xc1, 0x8c, 0x54, 0x6f, 0x1f, 0x4f, 0xa, 0x8d, + 0x8b, 0xaa, 0xa3, 0x1a, 0x76, 0xa, 0x1e, 0x13, 0xba, 0x36, 0x60, 0x4f, + 0x73, 0x7d, 0x1f, 0x88, 0x1d, 0x13, 0xc6, 0xb3, 0x85, 0x98, 0x83, 0x5e, + 0x1a, 0xfb, 0xa6, 0x7, 0x5a, 0x7a, 0x87, 0x67, 0x8b, 0xa, 0x65, 0xa, + 0x12, 0xa4, 0xf7, 0x27, 0xf7, 0x25, 0xf7, 0x27, 0xfb, 0x1b, 0xf7, 0x27, + 0x13, 0xf0, 0xf7, 0x40, 0xf7, 0x7c, 0x78, 0x1d, 0xeb, 0xd5, 0x1e, 0x13, + 0xe8, 0xc8, 0x9c, 0x4d, 0x64, 0xa, 0x39, 0x46, 0x3b, 0x8b, 0xf6, 0xf7, + 0x0, 0x1f, 0xfb, 0x27, 0x16, 0xfb, 0x16, 0xe2, 0xfb, 0x8, 0x70, 0xa, + 0xf6, 0x6f, 0xa, 0xf7, 0x0, 0x70, 0x1d, 0xfb, 0x4, 0xfb, 0x15, 0x1e, + 0xe, 0x7c, 0xa, 0x7f, 0x77, 0x12, 0xd6, 0xf7, 0x1f, 0xf7, 0xc, 0xf7, + 0x28, 0x21, 0xf7, 0x28, 0x13, 0xf6, 0x81, 0xa, 0x1e, 0x13, 0xf5, 0x90, + 0x1d, 0x54, 0x75, 0xc8, 0x8b, 0x1f, 0x7a, 0x1d, 0x89, 0xc8, 0x58, 0xa, + 0x7a, 0x1f, 0x89, 0x6, 0x13, 0xee, 0xcd, 0xfb, 0x55, 0x69, 0x7, 0xb9, + 0x85, 0x95, 0x7c, 0x65, 0x1a, 0xfc, 0x75, 0x92, 0xa, 0x30, 0xfb, 0x4c, + 0x76, 0xf7, 0x53, 0xc1, 0xf8, 0x25, 0xab, 0x1, 0xad, 0xf7, 0x26, 0xf7, + 0x36, 0x8a, 0xa, 0xf7, 0xea, 0xed, 0x15, 0x8d, 0x7a, 0x51, 0x56, 0x1b, + 0x49, 0x6f, 0xc7, 0xf7, 0x16, 0xde, 0x91, 0xf7, 0x14, 0xde, 0xb9, 0xa6, + 0x63, 0x63, 0x1f, 0x42, 0xfc, 0xa7, 0x15, 0x68, 0xf7, 0x9f, 0xad, 0x7, + 0x67, 0x92, 0x78, 0x8e, 0xbb, 0x1a, 0xf8, 0xde, 0x7c, 0x7, 0x3d, 0x52, + 0x5, 0xab, 0x67, 0x6c, 0xa4, 0x57, 0x1b, 0xfb, 0x2a, 0x36, 0xfb, 0x11, + 0xfb, 0xa, 0xfb, 0x3f, 0xe4, 0x42, 0xef, 0xa8, 0xbc, 0x96, 0xb8, 0xb4, + 0x1f, 0xfb, 0x2f, 0x7, 0x5e, 0x79, 0x89, 0x54, 0x81, 0x1e, 0xe, 0xfb, + 0x5f, 0x8b, 0xad, 0xf7, 0xba, 0xf7, 0x25, 0x45, 0x76, 0xa5, 0x76, 0xd5, + 0x77, 0x12, 0xde, 0xf7, 0x1f, 0x13, 0x9c, 0xa8, 0x16, 0xf7, 0x9e, 0xad, + 0x6, 0x4e, 0x8e, 0x7f, 0x92, 0xbd, 0x1a, 0xf7, 0x5a, 0x7, 0xd4, 0xb7, + 0xa1, 0x9a, 0x9c, 0x93, 0x79, 0x7b, 0x98, 0x1e, 0x13, 0xc4, 0x7e, 0x96, + 0x99, 0x7f, 0xa5, 0x1b, 0xbd, 0x99, 0xb4, 0xa5, 0xa3, 0x7c, 0xc1, 0x47, + 0x1f, 0x13, 0xac, 0x4a, 0x5e, 0x4f, 0x6c, 0x76, 0x1f, 0x89, 0xda, 0xfb, + 0x51, 0x73, 0x6, 0xa9, 0x87, 0xa3, 0x86, 0x59, 0x1a, 0xfb, 0xb0, 0x7, + 0x59, 0x75, 0x87, 0x6b, 0x8b, 0x1d, 0xfb, 0x96, 0x7d, 0xad, 0x7f, 0x76, + 0xf7, 0xfc, 0x76, 0xf7, 0x6, 0xac, 0x89, 0x77, 0x12, 0xa4, 0xef, 0xf7, + 0x20, 0xeb, 0x13, 0x76, 0xa4, 0x7e, 0x15, 0xae, 0x6, 0x9f, 0x95, 0x91, + 0x93, 0x96, 0x1b, 0x8d, 0x90, 0x89, 0x88, 0x91, 0x1f, 0x13, 0xb6, 0x83, + 0x9e, 0xae, 0x7b, 0xb0, 0x1b, 0xe8, 0xd8, 0xc6, 0xea, 0xdb, 0x52, 0xaf, + 0x52, 0xa6, 0x1f, 0x4f, 0xa8, 0x4d, 0x9e, 0xbf, 0x1a, 0xaa, 0xa4, 0xa5, + 0xaf, 0xc4, 0xb4, 0x60, 0x44, 0xa0, 0x1e, 0xae, 0x6, 0x13, 0xae, 0xf7, + 0x25, 0x6b, 0x7, 0x83, 0x88, 0x87, 0x7f, 0x79, 0x1b, 0x83, 0x80, 0x8f, + 0x90, 0x7e, 0x1f, 0x13, 0xb6, 0x91, 0x7a, 0x75, 0x92, 0x71, 0x1b, 0x2f, + 0x46, 0x50, 0x33, 0x41, 0xc3, 0x66, 0xc5, 0x6e, 0x1f, 0xc9, 0x6c, 0xcb, + 0x76, 0x5b, 0x1a, 0x6d, 0x73, 0x67, 0x59, 0xfb, 0x3, 0x80, 0xf4, 0xa6, + 0x85, 0x1e, 0x65, 0x6, 0xe, 0xfb, 0xce, 0x7f, 0xd2, 0xf7, 0xfa, 0xb7, + 0xf7, 0x3d, 0x77, 0x12, 0xc0, 0xf7, 0x1f, 0xfb, 0xc, 0xf7, 0x1f, 0x13, + 0xf0, 0xf7, 0xc7, 0xf7, 0x3, 0x15, 0x76, 0x80, 0x7a, 0x6c, 0x6e, 0x1b, + 0x13, 0xe8, 0x63, 0x8c, 0xa7, 0x9b, 0x1f, 0xf7, 0xce, 0xe9, 0xb7, 0x2d, + 0xf7, 0x3d, 0x72, 0x7, 0x47, 0x2a, 0x5e, 0x5f, 0x56, 0x5e, 0x8, 0x70, + 0xbf, 0xfb, 0xce, 0x7, 0x76, 0x8c, 0x8f, 0x2d, 0xf7, 0x0, 0x1b, 0xe5, + 0xaf, 0xd0, 0xb6, 0xa0, 0x1f, 0xe, 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, + 0x12, 0xcc, 0x85, 0x1d, 0x13, 0xf0, 0x71, 0xa, 0x13, 0xe8, 0x25, 0x1d, + 0xe, 0x92, 0x76, 0xf8, 0x4d, 0xad, 0x1, 0xa0, 0xf8, 0x64, 0x3, 0xf7, + 0x85, 0x7d, 0x15, 0xa5, 0x6, 0xf7, 0x34, 0xf8, 0x16, 0x9f, 0xbd, 0x99, + 0x8d, 0xa3, 0x8e, 0x19, 0x4d, 0x1d, 0x38, 0xfb, 0x6d, 0x5, 0x33, 0xf7, + 0x6c, 0x8b, 0x8e, 0x8f, 0x1a, 0xa2, 0x9f, 0x8c, 0xac, 0x8e, 0x48, 0x1d, + 0xe, 0xd6, 0x92, 0x76, 0xf7, 0xd8, 0x76, 0xf7, 0x40, 0x77, 0x1, 0xf8, + 0xd0, 0xf7, 0x1b, 0x3, 0xf7, 0x78, 0x7d, 0x15, 0xa3, 0x6, 0xf7, 0xe, + 0xf7, 0xc3, 0x5, 0x90, 0x6, 0xef, 0xfb, 0xc3, 0x5, 0xa2, 0x6, 0xf7, + 0x2f, 0xf8, 0x1b, 0x9c, 0xb7, 0x99, 0x8d, 0x9e, 0x8f, 0x19, 0xad, 0xfb, + 0x1b, 0x69, 0x7, 0xa7, 0x88, 0x9f, 0x89, 0x6b, 0x1a, 0x75, 0x58, 0xfb, + 0x1, 0x70, 0x3f, 0x1e, 0x89, 0x6, 0x79, 0xd9, 0x61, 0xf7, 0xc, 0xa0, + 0x1a, 0xa0, 0xa1, 0x8d, 0xa5, 0x8d, 0x1e, 0xad, 0xfb, 0x7e, 0x69, 0x7, + 0xa3, 0x88, 0x96, 0x8b, 0x94, 0x76, 0x90, 0x7f, 0x91, 0x81, 0x95, 0x69, + 0x47, 0xfb, 0x3f, 0x18, 0x59, 0xf7, 0x1a, 0x69, 0xcd, 0xa0, 0x1a, 0xa5, + 0xa3, 0x8d, 0x99, 0x8d, 0x1e, 0xad, 0xfb, 0x72, 0x69, 0x7, 0xa5, 0x86, + 0x90, 0x8e, 0xa5, 0x4a, 0x8, 0xe, 0xa0, 0x76, 0xf8, 0x3f, 0xad, 0x1, + 0x99, 0xf8, 0x6a, 0x3, 0x99, 0x16, 0xf7, 0x3d, 0xad, 0x6, 0x7a, 0x8c, + 0x5b, 0x90, 0x9a, 0x9f, 0x8, 0x9a, 0xa0, 0xcc, 0xe5, 0x8b, 0x1a, 0x8b, + 0xc1, 0x36, 0xa0, 0x6c, 0x1e, 0x94, 0x7e, 0x6b, 0x84, 0x75, 0x8a, 0x8, + 0x69, 0xf7, 0x85, 0xad, 0x7, 0x7e, 0x8f, 0x83, 0x8e, 0x82, 0x98, 0xfb, + 0x28, 0xf7, 0x6e, 0x18, 0xf0, 0xf7, 0x8, 0x9d, 0xa2, 0xa3, 0x97, 0xa7, + 0x8f, 0x19, 0xad, 0xfb, 0x3c, 0x69, 0x7, 0xb2, 0x88, 0x97, 0x8a, 0x76, + 0x1a, 0x7d, 0x8b, 0x95, 0x41, 0x2c, 0x1e, 0x7c, 0x9e, 0x53, 0xcf, 0x9c, + 0x1a, 0x9b, 0xa2, 0x8f, 0xa3, 0x1e, 0xad, 0xfb, 0x8e, 0x69, 0x7, 0xa6, + 0x87, 0x93, 0x82, 0x9c, 0x71, 0xf7, 0x14, 0xfb, 0x4f, 0x18, 0xfb, 0x17, + 0xfb, 0x3f, 0x88, 0x94, 0x5f, 0x86, 0x8, 0xe, 0xfb, 0x61, 0xf7, 0x23, + 0xf8, 0x9f, 0x77, 0x1, 0xf7, 0x80, 0x7e, 0x15, 0x79, 0x56, 0x5, 0x75, + 0x84, 0x2b, 0xa, 0xe, 0x87, 0x1d, 0x1, 0xb1, 0xaf, 0x87, 0xa, 0x65, + 0x8e, 0x1d, 0x6b, 0x8b, 0x62, 0x8c, 0xf7, 0x7f, 0xf8, 0x27, 0x18, 0xa5, + 0xfc, 0xb, 0x7, 0x84, 0xfb, 0x22, 0x5, 0xaf, 0x6, 0xa5, 0xf7, 0x1, + 0xb0, 0x8b, 0xf7, 0xa, 0x8c, 0xfb, 0x7e, 0xfc, 0x28, 0x18, 0xe, 0x8d, + 0x1d, 0xf7, 0x15, 0xf4, 0x3, 0xa1, 0xf7, 0x99, 0x15, 0xe2, 0x78, 0x9f, + 0x5e, 0x49, 0x1a, 0xfb, 0x3f, 0x7, 0xfb, 0xd, 0xd9, 0x7d, 0xf7, 0x19, + 0x1e, 0x97, 0x7, 0x3a, 0x99, 0x72, 0xb3, 0xd0, 0x1a, 0xf7, 0x3f, 0x7, + 0xd2, 0x7a, 0xb3, 0x2a, 0x9d, 0x1e, 0x8d, 0x7, 0xec, 0x9d, 0x9c, 0xa5, + 0xd2, 0x1a, 0xf7, 0x47, 0x7, 0xd1, 0xa4, 0xb8, 0xdc, 0x9a, 0x1e, 0x97, + 0x7, 0xfb, 0x19, 0x3d, 0x77, 0xfb, 0xe, 0x1f, 0xfb, 0x47, 0x7, 0x49, + 0x77, 0x6c, 0x34, 0x78, 0x1e, 0xe, 0xfc, 0x3f, 0xfb, 0x29, 0x76, 0xf7, + 0x40, 0x76, 0xf9, 0x5a, 0x77, 0x1, 0xcd, 0xe3, 0x3e, 0xd0, 0x3, 0xd8, + 0xfb, 0x3e, 0x15, 0xd0, 0xf9, 0xf1, 0x46, 0x6, 0xe, 0x8d, 0x1d, 0xf7, + 0x34, 0xf4, 0x3, 0xc1, 0xfb, 0x37, 0x15, 0x7f, 0x7, 0xf7, 0x19, 0xd9, + 0x99, 0xf7, 0xe, 0x1f, 0xf7, 0x3f, 0x7, 0xcd, 0x9f, 0xb8, 0xe2, 0x9e, + 0x1e, 0x34, 0x9e, 0x77, 0xaa, 0xcd, 0x1a, 0xf7, 0x47, 0x7, 0xf7, 0xd, + 0x3d, 0x9f, 0xfb, 0x19, 0x1e, 0x7f, 0x7, 0xdc, 0x7d, 0xa4, 0x5d, 0x46, + 0x1a, 0xfb, 0x47, 0x7, 0x44, 0x9c, 0x71, 0xec, 0x79, 0x1e, 0x89, 0x7, + 0x2a, 0x79, 0x7a, 0x63, 0x44, 0x1a, 0xfb, 0x3f, 0x7, 0x45, 0x72, 0x64, + 0x3a, 0x7c, 0x1e, 0xe, 0xfb, 0x13, 0xf7, 0x41, 0xf7, 0x34, 0x1, 0xa8, + 0xf8, 0x62, 0x3, 0xcc, 0xf7, 0x41, 0x15, 0xae, 0x9b, 0xa3, 0xb0, 0xb7, + 0x1b, 0xb1, 0xaa, 0x7e, 0x7c, 0xa8, 0x1f, 0x78, 0xb1, 0xae, 0x76, 0xb9, + 0x1b, 0xc9, 0xac, 0xb7, 0xb5, 0xa9, 0x1f, 0x67, 0xd1, 0x5, 0x68, 0x74, + 0x72, 0x66, 0x63, 0x1b, 0x6e, 0x68, 0x9b, 0x9b, 0x66, 0x1f, 0x9d, 0x64, + 0x63, 0x9d, 0x6a, 0x1b, 0x48, 0x67, 0x5f, 0x61, 0x75, 0x1f, 0xe, 0xfb, + 0xce, 0xfb, 0x4a, 0x76, 0xf8, 0xab, 0xf7, 0x3d, 0x12, 0xdd, 0xf7, 0x3d, + 0x29, 0xa8, 0x13, 0xe0, 0xdd, 0xf8, 0x35, 0x15, 0x5d, 0xb1, 0x64, 0xba, + 0xbb, 0xaf, 0xb3, 0xb8, 0xba, 0x67, 0xb0, 0x5b, 0x5c, 0x65, 0x67, 0x5b, + 0x1e, 0x13, 0xd0, 0xd2, 0xfb, 0x37, 0x15, 0x84, 0x44, 0x83, 0x57, 0x82, + 0x62, 0x8, 0x75, 0x20, 0x73, 0x71, 0x4e, 0x1a, 0x4b, 0xac, 0x68, 0xbe, + 0xbf, 0xac, 0xae, 0xcb, 0xc8, 0x73, 0xa4, 0x75, 0xf5, 0x1e, 0x82, 0xb4, + 0x83, 0xc0, 0x84, 0xd3, 0x8, 0xe, 0xfb, 0xb, 0x76, 0xf7, 0x27, 0x76, + 0xf7, 0xe3, 0x76, 0xf7, 0x22, 0xaa, 0xf7, 0x7, 0x77, 0x1, 0xc0, 0xf7, + 0x21, 0xf7, 0x13, 0xf7, 0xf, 0x3, 0xf7, 0x75, 0xf7, 0x14, 0x15, 0x77, + 0xb1, 0x80, 0xbe, 0xc4, 0x1a, 0xab, 0x90, 0xf7, 0x1c, 0xdb, 0x9c, 0xa4, + 0x7f, 0x6d, 0x1e, 0x88, 0x7, 0xfb, 0x53, 0xfc, 0xad, 0x15, 0xb3, 0x6, + 0xba, 0xf7, 0x19, 0x5, 0x86, 0x9b, 0x9c, 0x89, 0x9d, 0x1b, 0xac, 0xe2, + 0x8b, 0xee, 0xd1, 0x1f, 0x79, 0x9d, 0x5, 0x74, 0x78, 0x6f, 0x70, 0x4f, + 0x1b, 0x6b, 0x70, 0x98, 0xa3, 0x75, 0x1f, 0xdd, 0xf7, 0x7a, 0x5, 0x7d, + 0x96, 0x9c, 0x85, 0x9b, 0x1b, 0x8f, 0xc9, 0x8b, 0xcb, 0xb4, 0x70, 0xa8, + 0x67, 0x9d, 0x1f, 0xbb, 0xf7, 0x1c, 0x5, 0x63, 0x6, 0x5f, 0xfb, 0xf, + 0x5, 0x90, 0x78, 0x77, 0x8e, 0x78, 0x1b, 0xfb, 0x2, 0xfb, 0x10, 0x39, + 0xfb, 0x3b, 0xfb, 0x7, 0xc3, 0x42, 0xd3, 0x6c, 0x1f, 0xe, 0x7d, 0xaa, + 0x6c, 0xf7, 0x12, 0x23, 0x76, 0xf7, 0x17, 0xb9, 0xf7, 0x24, 0xcc, 0xf7, + 0x12, 0xf7, 0x4d, 0x6d, 0xa9, 0x12, 0xa0, 0xab, 0xbf, 0xf7, 0x12, 0x13, + 0x5b, 0x80, 0xf7, 0x71, 0xbc, 0x15, 0x54, 0xc6, 0xad, 0x83, 0xaa, 0x1b, + 0xf7, 0x7, 0x96, 0xf7, 0xf, 0xd5, 0x91, 0x1f, 0x74, 0x6, 0x60, 0x80, + 0x7b, 0x6f, 0x3f, 0x1b, 0x7f, 0x6c, 0x8d, 0x9f, 0x58, 0x1f, 0xa2, 0xc6, + 0x8a, 0xc5, 0x87, 0xc4, 0x8, 0xf7, 0x1, 0xcc, 0xfb, 0x6, 0x6, 0x87, + 0x9a, 0x68, 0xf7, 0x3f, 0xa3, 0x1a, 0xac, 0x96, 0xb1, 0xb8, 0xb7, 0x8b, + 0x69, 0x7f, 0x1e, 0x13, 0x3d, 0x80, 0x37, 0x89, 0xa4, 0x72, 0xad, 0x1b, + 0xbf, 0x9e, 0xad, 0xb1, 0x97, 0x8b, 0xf0, 0xfb, 0x2e, 0xfb, 0x2d, 0x5c, + 0xfb, 0xa, 0x3c, 0x65, 0x92, 0x65, 0x92, 0x65, 0x1f, 0x3b, 0x4a, 0x6, + 0x13, 0x39, 0x0, 0xed, 0x6, 0x9b, 0x5d, 0xa3, 0x51, 0x8c, 0x5c, 0x8, + 0x8f, 0x7c, 0x80, 0x8e, 0x71, 0x1b, 0x26, 0x87, 0x46, 0x70, 0x43, 0xcc, + 0x82, 0x9d, 0xd2, 0xa9, 0xb4, 0xa0, 0x9b, 0x1f, 0x63, 0xb0, 0x15, 0x13, + 0x9d, 0x80, 0x71, 0x84, 0x7e, 0x60, 0x55, 0x1b, 0x7a, 0x66, 0x94, 0xb3, + 0x99, 0x93, 0xb1, 0xb8, 0xb2, 0x9e, 0x7a, 0x7c, 0x9c, 0x1f, 0xe, 0xf7, + 0x38, 0xd4, 0xf7, 0x5b, 0xd6, 0x1, 0xd8, 0xe3, 0xf7, 0x31, 0xe3, 0x3, + 0xf7, 0x1c, 0xf7, 0xe6, 0x15, 0xca, 0xbb, 0xbf, 0xcc, 0xce, 0xbb, 0x57, + 0x4c, 0x4a, 0x5b, 0x52, 0x48, 0x4a, 0x5b, 0xc4, 0xcc, 0x1e, 0x39, 0xfb, + 0x8d, 0x15, 0xe1, 0xe3, 0x5, 0x78, 0xa7, 0xb3, 0x7c, 0xb4, 0x1b, 0xb6, + 0xb3, 0x9a, 0x9e, 0xa7, 0x1f, 0xe1, 0x33, 0xbf, 0xbf, 0x33, 0xe3, 0x5, + 0xa0, 0xa5, 0x97, 0xb3, 0xb6, 0x1a, 0xb6, 0x7d, 0xb1, 0x78, 0xa7, 0x1e, + 0xe3, 0xe3, 0x57, 0xbd, 0x35, 0x35, 0x5, 0x9e, 0x6f, 0x65, 0x95, 0x5e, + 0x1b, 0x62, 0x63, 0x81, 0x78, 0x6f, 0x1f, 0x35, 0xe1, 0x57, 0x59, 0xe3, + 0x33, 0x5, 0x78, 0x71, 0x7c, 0x63, 0x60, 0x1a, 0x60, 0x98, 0x65, 0xa0, + 0x6f, 0x1e, 0x33, 0x33, 0x5, 0xe, 0x8b, 0xae, 0xf7, 0xb, 0xbd, 0xe8, + 0xbd, 0xf7, 0xb9, 0xaf, 0x1, 0xf7, 0x4d, 0xf7, 0x16, 0xe0, 0xf7, 0x13, + 0x3, 0xde, 0x16, 0xf7, 0xdf, 0xae, 0x6, 0x4b, 0x91, 0x68, 0x8d, 0xdd, + 0x1a, 0xb2, 0xf7, 0x1b, 0xbd, 0xfb, 0x1b, 0xce, 0x7, 0x8f, 0x96, 0x5, + 0xf7, 0x17, 0xbd, 0xfb, 0x3, 0x6, 0xf7, 0x10, 0xf7, 0x99, 0x9c, 0xac, + 0xaa, 0x8d, 0x9b, 0x8d, 0x19, 0xaf, 0xfb, 0x61, 0x67, 0x7, 0xb5, 0x89, + 0xaf, 0x8a, 0x64, 0x1a, 0x21, 0xfb, 0x92, 0x5, 0x89, 0x6, 0x55, 0xf7, + 0x2, 0x51, 0xf7, 0x14, 0xa5, 0x1a, 0xa3, 0x9d, 0x93, 0xc6, 0x1e, 0xaf, + 0xfb, 0xc1, 0x67, 0x7, 0xb8, 0x89, 0xa3, 0x74, 0x99, 0x6f, 0xf7, 0x2, + 0xfb, 0x89, 0x18, 0x28, 0x59, 0xf7, 0x10, 0x6, 0x96, 0x76, 0x5, 0x52, + 0xfb, 0x1b, 0x59, 0xf7, 0x1b, 0x64, 0x7, 0x39, 0x66, 0x89, 0x4a, 0x8b, + 0x1d, 0xfc, 0x3f, 0x8d, 0x76, 0xf8, 0x5d, 0x76, 0xf7, 0xa6, 0x77, 0x1, + 0xcd, 0xe3, 0x3e, 0xce, 0x3, 0xd8, 0xf8, 0x35, 0x15, 0xcd, 0xf7, 0xa6, + 0x49, 0x6, 0xfd, 0x5a, 0x4, 0xce, 0xf7, 0xae, 0x48, 0x6, 0xe, 0xfb, + 0xf, 0xa2, 0xf7, 0x93, 0xa4, 0xf7, 0x2d, 0x77, 0xea, 0xa2, 0xf7, 0x6a, + 0x77, 0x12, 0xb3, 0xd6, 0x56, 0xd6, 0x5c, 0xf7, 0x14, 0xf7, 0x0, 0xe0, + 0x13, 0x8c, 0x80, 0xf7, 0xc5, 0xf7, 0x24, 0x15, 0xb8, 0x8c, 0xe8, 0x8e, + 0xf7, 0x6, 0xf7, 0x38, 0xfb, 0xa2, 0xdc, 0xe4, 0x1a, 0xb9, 0xa7, 0xa5, + 0xb4, 0xb9, 0xa1, 0x7d, 0x84, 0x84, 0x80, 0x82, 0x80, 0x81, 0x1e, 0x81, + 0x82, 0x81, 0x7f, 0x7c, 0x1a, 0x71, 0xa8, 0x6c, 0xac, 0x9a, 0xbb, 0x9a, + 0xbf, 0xa6, 0x67, 0xd0, 0xfb, 0x7, 0x1e, 0x13, 0xfc, 0x80, 0x3f, 0x48, + 0x59, 0x38, 0x51, 0xbb, 0x64, 0xbd, 0x5f, 0x1f, 0x89, 0x89, 0x5, 0x13, + 0xea, 0x80, 0x62, 0x8e, 0x2a, 0x87, 0xfb, 0xf, 0x1a, 0x3d, 0xb9, 0x6b, + 0xf7, 0xe, 0x24, 0x1e, 0xd8, 0x4d, 0x9c, 0x7c, 0x62, 0x1a, 0x65, 0x71, + 0x6c, 0x53, 0x51, 0x84, 0xa2, 0x91, 0x91, 0x94, 0x90, 0x94, 0x91, 0x1e, + 0x98, 0x93, 0x9a, 0x95, 0xa2, 0x1a, 0x13, 0xf9, 0x80, 0xa1, 0x75, 0xac, + 0x5f, 0x5c, 0x7c, 0x5e, 0x79, 0x46, 0xe0, 0x6a, 0xc9, 0x1e, 0x13, 0xfa, + 0x80, 0xf6, 0xc7, 0xc6, 0xd0, 0xc8, 0x61, 0xba, 0x52, 0xb1, 0x1f, 0xfb, + 0x41, 0xf7, 0x57, 0x15, 0xb8, 0xb1, 0x95, 0x9d, 0x1e, 0x13, 0x8c, 0x80, + 0xba, 0xe2, 0x33, 0x89, 0x8d, 0x1f, 0xb1, 0x64, 0x90, 0x80, 0x70, 0x1a, + 0x72, 0x7d, 0x6a, 0x62, 0x6b, 0x6c, 0xa4, 0xa3, 0x6f, 0x1e, 0x48, 0xc3, + 0x75, 0x9f, 0xb8, 0x1a, 0xe, 0xfb, 0xce, 0xf8, 0xad, 0xf7, 0x16, 0x1, + 0x89, 0x3f, 0xa, 0xe, 0xef, 0x78, 0xbf, 0xf7, 0x5, 0xa2, 0xf7, 0xb0, + 0x76, 0xe0, 0xa2, 0xf6, 0xbf, 0x1, 0xae, 0xd2, 0xf7, 0x7, 0xf1, 0xf7, + 0x4a, 0x9e, 0xf7, 0x12, 0xd2, 0x3, 0x71, 0x1d, 0xf7, 0x30, 0xf7, 0x5a, + 0xf7, 0x5b, 0xfb, 0x29, 0xf7, 0x31, 0x55, 0xa, 0xfb, 0x1f, 0xfb, 0x39, + 0xfb, 0x38, 0xfb, 0xc, 0xfb, 0x1e, 0x80, 0x1d, 0xf8, 0x40, 0x3c, 0x15, + 0x58, 0x74, 0x64, 0x63, 0x4f, 0x1b, 0x2e, 0x6a, 0xd7, 0xf4, 0x8c, 0x1f, + 0xef, 0x8c, 0xb2, 0xd6, 0xdd, 0x1b, 0xd2, 0xa6, 0x5c, 0x61, 0x95, 0x1f, + 0x9e, 0xd3, 0x6, 0x94, 0x85, 0x92, 0x7b, 0x90, 0x1e, 0x94, 0x70, 0x71, + 0x95, 0x57, 0x1b, 0xfb, 0x3b, 0x52, 0xfb, 0x5, 0x36, 0xfb, 0x1e, 0xef, + 0x49, 0xf7, 0x13, 0xba, 0xaa, 0x99, 0x8f, 0x9e, 0x1f, 0x9c, 0x92, 0x95, + 0x8e, 0x8c, 0x97, 0x9b, 0xd5, 0x18, 0xe, 0xfb, 0xef, 0xf8, 0x36, 0x76, + 0xf7, 0xa0, 0xa2, 0x12, 0x8a, 0xed, 0x36, 0xe0, 0xd6, 0xeb, 0x13, 0xd8, + 0xf7, 0x43, 0xf8, 0x4a, 0x15, 0x7b, 0x8f, 0x90, 0x72, 0xb9, 0x1b, 0xa8, + 0xa3, 0x99, 0x9f, 0x9d, 0x1f, 0x81, 0x97, 0x5, 0x7a, 0x7a, 0x85, 0x9f, + 0x8f, 0x1a, 0xf7, 0x30, 0x7, 0xc4, 0x51, 0xa4, 0x43, 0x36, 0x62, 0x67, + 0x65, 0x62, 0xaf, 0x8b, 0x92, 0xb0, 0x95, 0xa2, 0x96, 0x1e, 0x9e, 0x77, + 0x90, 0x98, 0x1a, 0x94, 0x9a, 0x97, 0xa3, 0xb8, 0x92, 0x6b, 0x6d, 0x1e, + 0x6d, 0x7, 0x13, 0xe8, 0x31, 0x74, 0x37, 0x73, 0x4d, 0x1a, 0x13, 0xa8, + 0x5a, 0xb4, 0x79, 0xab, 0x9a, 0xb9, 0x8d, 0xb2, 0xb5, 0x1e, 0x88, 0xa6, + 0x15, 0x81, 0x84, 0x7c, 0x7b, 0x75, 0x1b, 0x76, 0x81, 0xa1, 0x9d, 0xbf, + 0xcb, 0x9d, 0x96, 0x8e, 0x1f, 0xe, 0x82, 0xa, 0x1, 0xf7, 0x6f, 0xf7, + 0x92, 0x3, 0xa2, 0xf7, 0x75, 0x88, 0xa, 0x82, 0x95, 0x9b, 0x7d, 0x96, + 0x1b, 0x91, 0x90, 0x8f, 0x99, 0x77, 0x1d, 0xe1, 0xf6, 0xa8, 0x1a, 0x95, + 0x88, 0x7b, 0x1d, 0xf7, 0x58, 0x87, 0x88, 0xa, 0x82, 0x95, 0x9c, 0x7d, + 0x96, 0x1b, 0x91, 0x8f, 0x75, 0xa, 0x95, 0x86, 0x7b, 0x1d, 0xe, 0x3e, + 0xf7, 0x15, 0x76, 0xf7, 0x73, 0xcf, 0x12, 0xf8, 0x54, 0xe6, 0x44, 0xd0, + 0x13, 0xe0, 0xac, 0xf7, 0xdf, 0x15, 0x13, 0xd0, 0xf8, 0x47, 0xfb, 0x73, + 0xd0, 0xf7, 0xb7, 0xfc, 0x8c, 0x6, 0xe, 0xef, 0x78, 0xbf, 0x57, 0xf7, + 0x52, 0x7e, 0xf7, 0x51, 0x85, 0x76, 0xf7, 0xef, 0xbf, 0x12, 0xa5, 0xd2, + 0xf7, 0x3e, 0xdb, 0xe4, 0xe0, 0xf7, 0x15, 0xd2, 0x13, 0xaf, 0x80, 0x71, + 0x1d, 0xf7, 0x34, 0xf7, 0x5a, 0xf7, 0x5b, 0xfb, 0x29, 0xf7, 0x2d, 0x55, + 0xa, 0xfb, 0x1b, 0xfb, 0x39, 0xfb, 0x38, 0xfb, 0xc, 0xfb, 0x22, 0x80, + 0x1d, 0xf7, 0x2, 0xfb, 0x4a, 0x15, 0xf7, 0x40, 0x6, 0x13, 0x5f, 0x80, + 0x9d, 0x7, 0x5c, 0x8e, 0x8c, 0x8f, 0xb0, 0x1a, 0xf4, 0xb0, 0x7, 0x13, + 0xaf, 0x80, 0x3a, 0xc0, 0xc9, 0x35, 0x88, 0x1b, 0xdc, 0x96, 0x6, 0xfb, + 0x14, 0xf7, 0x3b, 0x5, 0xbb, 0x9b, 0xab, 0xb0, 0xba, 0x1a, 0xcf, 0x56, + 0xac, 0x4d, 0x1e, 0xfb, 0x55, 0x79, 0x6, 0xba, 0x89, 0x8a, 0x87, 0x65, + 0x1a, 0xfb, 0x93, 0x7, 0x13, 0x5f, 0x80, 0x66, 0x8c, 0x87, 0x5c, 0x88, + 0x1e, 0x13, 0xaf, 0x80, 0xf7, 0x12, 0xf7, 0x3f, 0x15, 0xf7, 0x3c, 0xaf, + 0x7, 0xaf, 0xa4, 0x77, 0x50, 0x5d, 0x7c, 0x60, 0x5c, 0x1f, 0xe, 0xfb, + 0xce, 0xf8, 0xc9, 0xd3, 0x1, 0x8c, 0xf8, 0xc9, 0x15, 0xf7, 0xde, 0xd3, + 0xfb, 0xde, 0x6, 0xe, 0xfb, 0x8b, 0xf8, 0x26, 0xaf, 0xf7, 0x6a, 0xaf, + 0x1, 0xbb, 0xb4, 0xf7, 0x69, 0xb4, 0x3, 0xed, 0xf8, 0xb5, 0x15, 0xc4, + 0xb8, 0xbd, 0xc4, 0xc4, 0xb8, 0x59, 0x52, 0x52, 0x5e, 0x59, 0x52, 0x52, + 0x5e, 0xbd, 0xc4, 0x1e, 0x62, 0x16, 0x3b, 0xca, 0x4c, 0xdb, 0xdb, 0xca, + 0xca, 0xdb, 0xdb, 0x4c, 0xca, 0x3b, 0x3b, 0x4c, 0x4c, 0x3b, 0x1e, 0xe, + 0x3e, 0x8b, 0xe1, 0xf7, 0x51, 0xe3, 0x3b, 0xcd, 0xf7, 0x31, 0x77, 0x12, + 0xf7, 0x85, 0xe3, 0x3e, 0xcd, 0x13, 0xd4, 0xf7, 0x90, 0xf7, 0x12, 0x15, + 0xcd, 0x6, 0x13, 0xb4, 0xf7, 0x31, 0xf7, 0x6f, 0xcd, 0xfb, 0x6f, 0xf7, + 0x31, 0x49, 0xfb, 0x31, 0xfb, 0x6f, 0x49, 0xf7, 0x6f, 0x7, 0xfb, 0x6f, + 0xfb, 0xaf, 0x15, 0xf8, 0x8c, 0x6, 0x13, 0xd8, 0xcd, 0xfc, 0x8c, 0x7, + 0xe, 0xfb, 0xef, 0xf7, 0xa7, 0xdb, 0xf7, 0x9d, 0xcf, 0x12, 0xf7, 0x4c, + 0xe3, 0x17, 0xf7, 0xa7, 0x4, 0xf7, 0xa2, 0x6, 0xa9, 0xf7, 0x13, 0x5, + 0x7b, 0x6, 0x62, 0x79, 0x85, 0x85, 0x46, 0x1b, 0x2f, 0x6, 0xf7, 0x25, + 0xed, 0xa7, 0xe7, 0xaa, 0x5a, 0x1d, 0x1f, 0x44, 0x3c, 0x3c, 0x22, 0x23, + 0x1e, 0xe, 0xfb, 0xef, 0xf7, 0xb5, 0x76, 0xf8, 0x8, 0xbb, 0x12, 0xf7, + 0x44, 0xea, 0x5a, 0xd6, 0x13, 0xd0, 0xe7, 0xf8, 0x7e, 0x40, 0xa, 0x70, + 0xb6, 0x56, 0x9d, 0x1e, 0x13, 0x60, 0xa7, 0x9a, 0x4a, 0x1d, 0xe, 0x90, + 0xa, 0xe1, 0xf8, 0xa4, 0x56, 0x1d, 0xf7, 0x1e, 0xe1, 0x5, 0xa3, 0x9a, + 0x9f, 0x97, 0xa7, 0x1a, 0xaf, 0x71, 0x93, 0x79, 0x81, 0x73, 0x89, 0x71, + 0x74, 0x1e, 0xe, 0x30, 0xfb, 0x4d, 0x76, 0xf9, 0x2f, 0x77, 0x12, 0xac, + 0xf7, 0x14, 0x2c, 0xf7, 0x1f, 0xf7, 0x17, 0xf7, 0x1f, 0x13, 0xd8, 0xf7, + 0x15, 0x9d, 0x15, 0x8d, 0x8d, 0x5, 0x77, 0xa3, 0xab, 0x7e, 0xb9, 0x1b, + 0xb2, 0xaa, 0x9d, 0xad, 0xa5, 0x1f, 0x64, 0xa0, 0xb1, 0x7e, 0xb6, 0x1b, + 0xbd, 0xa2, 0x9f, 0xa8, 0xab, 0x1f, 0xa3, 0x7, 0x82, 0x86, 0x83, 0x89, + 0x83, 0x8c, 0x8, 0x7c, 0x8d, 0x76, 0x99, 0xaa, 0x1a, 0xf7, 0xfc, 0xfb, + 0x1f, 0xfb, 0xfb, 0x7, 0x7d, 0x77, 0x6a, 0x7e, 0x78, 0x1b, 0x6f, 0x6c, + 0x9f, 0xc1, 0x1f, 0xf7, 0xcc, 0xfb, 0x1f, 0xfc, 0x9, 0x7, 0x56, 0x85, + 0x62, 0x83, 0x6a, 0x1e, 0x13, 0xe8, 0x82, 0x64, 0x81, 0x70, 0x74, 0x1a, + 0x5d, 0x9e, 0x6b, 0xbc, 0xb4, 0x9e, 0xab, 0xb9, 0xa8, 0x7f, 0xa7, 0x82, + 0xab, 0x1e, 0x86, 0x9d, 0x87, 0x9e, 0x89, 0x9f, 0x8, 0xe, 0x20, 0xfb, + 0x54, 0x76, 0xf9, 0xd9, 0xb1, 0x75, 0xa1, 0x12, 0xf7, 0x9a, 0xbc, 0xe3, + 0xbc, 0x13, 0xd8, 0xf7, 0x98, 0xfb, 0x69, 0x15, 0xbc, 0xf9, 0xd9, 0xed, + 0xfd, 0xd9, 0x6, 0x13, 0xb8, 0xbc, 0xf9, 0x7a, 0x6, 0xe1, 0x97, 0xa4, + 0xd3, 0x1e, 0xa1, 0xfb, 0xb2, 0x7, 0xfb, 0x6, 0xfb, 0x20, 0x67, 0xfb, + 0x4e, 0xfb, 0x33, 0xf7, 0x6, 0x44, 0xf7, 0x26, 0x1f, 0xe, 0xfc, 0x21, + 0xf7, 0x8c, 0x93, 0xa, 0xf7, 0xe0, 0x62, 0x1d, 0xfb, 0xce, 0xfb, 0x59, + 0x76, 0xf7, 0x6e, 0x77, 0x12, 0xf7, 0x5d, 0xe8, 0x17, 0xf7, 0x33, 0x16, + 0x60, 0x2b, 0x4f, 0x1d, 0x13, 0x60, 0xb1, 0xf7, 0x5, 0x8c, 0xdc, 0xc8, + 0x4b, 0xa7, 0x52, 0x7a, 0x1f, 0xa7, 0xcb, 0x5, 0xe, 0xfb, 0xef, 0xf7, + 0xa7, 0xa9, 0xbd, 0xa9, 0xf7, 0xc3, 0x77, 0x1, 0xf6, 0xeb, 0x3, 0xa9, + 0xf7, 0xf7, 0x15, 0xf7, 0x87, 0xa9, 0x6, 0x4b, 0x85, 0x9b, 0xb3, 0x1f, + 0xf7, 0x8b, 0x46, 0xa, 0xfb, 0x17, 0x7, 0x65, 0x89, 0x74, 0x40, 0x8c, + 0x1e, 0xe, 0xfb, 0xd1, 0xf8, 0x21, 0x9f, 0xf7, 0x8e, 0xa0, 0x1, 0x9d, + 0xec, 0xee, 0xed, 0x3, 0xf7, 0x7, 0xf8, 0xb2, 0x15, 0xe7, 0x97, 0xac, + 0xb1, 0xb1, 0x96, 0x6a, 0x2f, 0x3e, 0x86, 0x5b, 0x5f, 0x5f, 0x85, 0xbb, + 0xd8, 0x1e, 0x2a, 0x16, 0x3b, 0xc5, 0x4a, 0xe4, 0xe4, 0xc5, 0xcc, 0xdb, + 0xde, 0x4e, 0xca, 0x35, 0x35, 0x4e, 0x4c, 0x38, 0x1e, 0xe, 0x82, 0xa, + 0x12, 0xf7, 0x25, 0xf7, 0x1c, 0x17, 0xf7, 0x25, 0x91, 0xa, 0x81, 0x91, + 0x87, 0x91, 0x97, 0x9f, 0x9b, 0x91, 0x92, 0x4c, 0xa, 0xf7, 0x58, 0x16, + 0x6d, 0x65, 0x35, 0x20, 0x6e, 0x1a, 0x80, 0x8f, 0x88, 0x91, 0x96, 0x9d, + 0x99, 0x93, 0x95, 0x4c, 0xa, 0xe, 0xf2, 0x94, 0x76, 0xac, 0x76, 0xe2, + 0xcd, 0xf7, 0xe, 0xa9, 0xb4, 0x76, 0xf7, 0x1, 0x76, 0xf7, 0xa7, 0x77, + 0x12, 0xf6, 0xeb, 0xf8, 0x2a, 0xe8, 0x13, 0x7f, 0x80, 0xf8, 0x53, 0xe2, + 0x74, 0x1d, 0x37, 0x23, 0x50, 0x38, 0x73, 0xa, 0x13, 0xbf, 0x80, 0xfb, + 0xc0, 0xfb, 0x39, 0x69, 0xa, 0xfc, 0xdf, 0x3e, 0x1d, 0xe, 0xf2, 0x8b, + 0xdb, 0x44, 0x76, 0xf7, 0xb3, 0xa9, 0xb3, 0xcf, 0xf7, 0xa7, 0x77, 0x12, + 0xd3, 0xeb, 0xf8, 0x7f, 0xe3, 0x13, 0x7e, 0xf7, 0x18, 0x7f, 0x69, 0xa, + 0xfc, 0xd8, 0x3e, 0x1d, 0x13, 0xbe, 0xf8, 0x76, 0xfb, 0xc5, 0x15, 0xf7, + 0xa2, 0x6, 0xa9, 0xf7, 0x13, 0x5, 0x71, 0x6, 0x62, 0x79, 0x85, 0x85, + 0x46, 0x1b, 0x3f, 0x90, 0x6, 0xe8, 0xe2, 0x5, 0xd5, 0xcd, 0x8b, 0xb8, + 0x9d, 0x5a, 0x1d, 0x44, 0x3c, 0x3c, 0x22, 0x23, 0x1f, 0xe, 0xf2, 0x94, + 0x76, 0xee, 0xcd, 0xf8, 0x7b, 0xbb, 0x12, 0xf7, 0x58, 0xea, 0x5a, 0xd6, + 0xf7, 0xae, 0xe8, 0x13, 0xec, 0xf7, 0x40, 0x7f, 0x69, 0xa, 0xfc, 0x89, + 0xfb, 0x5a, 0x40, 0xa, 0x6f, 0xb6, 0x5b, 0x9b, 0x1e, 0x8f, 0x7, 0x13, + 0xf4, 0xa3, 0x98, 0x4a, 0x1d, 0xf7, 0xd9, 0xfc, 0x31, 0x74, 0x1d, 0x35, + 0x26, 0x52, 0x35, 0x73, 0xa, 0xe, 0xfb, 0x5d, 0xaf, 0xf8, 0x88, 0xf7, + 0x3a, 0x12, 0xc2, 0xf7, 0x29, 0x70, 0xf7, 0x3d, 0x69, 0xf7, 0x17, 0x13, + 0xe8, 0x13, 0xd0, 0xf7, 0x8b, 0xf7, 0x95, 0x15, 0x99, 0x3e, 0x59, 0x6a, + 0x56, 0x68, 0x8, 0x58, 0x6a, 0x57, 0x68, 0x40, 0x1a, 0xfb, 0x33, 0xf7, + 0x37, 0x80, 0xaa, 0xf7, 0x38, 0xa9, 0xf1, 0xb4, 0xae, 0x78, 0xb5, 0x58, + 0x77, 0x62, 0x7f, 0x57, 0x70, 0x96, 0x7f, 0x95, 0x80, 0x1e, 0x93, 0x82, + 0x93, 0x83, 0x7e, 0x1a, 0x66, 0x59, 0x88, 0x82, 0x3d, 0x83, 0xe4, 0xb5, + 0xcf, 0xa1, 0xb5, 0x9f, 0xb1, 0x1e, 0xa2, 0xb6, 0xa4, 0xae, 0x7a, 0xcc, + 0x8, 0x13, 0xe8, 0x27, 0xf7, 0x37, 0x15, 0x5d, 0xb1, 0x64, 0xb9, 0xbb, + 0xb0, 0xb3, 0xb8, 0xba, 0x66, 0xad, 0x5b, 0x5d, 0x65, 0x6a, 0x5b, 0x1e, + 0xe, 0x4b, 0x1d, 0xf7, 0x91, 0x77, 0x1, 0xf8, 0xe, 0xf9, 0x76, 0x24, + 0x1d, 0xfb, 0x77, 0xfd, 0xce, 0x20, 0x1d, 0x4b, 0x1d, 0xf7, 0x91, 0x77, + 0x1, 0xf7, 0xa6, 0xf9, 0x76, 0x22, 0x1d, 0xfc, 0x26, 0xfe, 0x13, 0x20, + 0x1d, 0x4b, 0x1d, 0xf7, 0x88, 0x77, 0x1, 0xf7, 0x4e, 0xf9, 0x76, 0x29, + 0x1d, 0xfb, 0xbf, 0xfe, 0x26, 0x20, 0x1d, 0x54, 0xa, 0xf8, 0x9d, 0xd9, + 0x80, 0xd9, 0x12, 0x13, 0xd0, 0xf7, 0x40, 0xf9, 0x8b, 0x45, 0x1d, 0xa1, + 0xa5, 0x81, 0x80, 0xa3, 0x1f, 0x13, 0xe0, 0x7e, 0xa9, 0xa8, 0x7c, 0xa1, + 0x1b, 0x13, 0xd0, 0x44, 0xa, 0x13, 0xe0, 0x54, 0x1d, 0x6b, 0x77, 0x96, + 0x96, 0x77, 0x1f, 0x13, 0xd0, 0x98, 0x74, 0x75, 0x99, 0x69, 0x50, 0x1d, + 0xfb, 0x37, 0xfd, 0x8b, 0x20, 0x1d, 0x4b, 0x1d, 0xd8, 0xf7, 0x16, 0x1, + 0xf7, 0x4e, 0xf7, 0x13, 0x8b, 0xde, 0x8b, 0xf7, 0x13, 0x14, 0xe, 0xf7, + 0x4e, 0xf9, 0xc0, 0x15, 0x6e, 0x1d, 0xf7, 0x66, 0x16, 0x6e, 0x1d, 0xfc, + 0x17, 0xfd, 0xc0, 0x20, 0x1d, 0x54, 0xa, 0xf8, 0x5f, 0x77, 0xba, 0xbb, + 0xf7, 0x15, 0xbb, 0x1, 0xf7, 0x84, 0xbb, 0x8b, 0xf7, 0x9, 0x8b, 0xbb, + 0x14, 0x7, 0xf7, 0x84, 0xf9, 0xd0, 0x15, 0x4f, 0xbc, 0x5d, 0xc5, 0x7d, + 0x1d, 0x1e, 0xbb, 0x16, 0xac, 0xa4, 0xa5, 0xac, 0xac, 0xa5, 0x71, 0x6a, + 0x6a, 0x71, 0x72, 0x6a, 0x6a, 0x72, 0xa4, 0xac, 0x1e, 0xfb, 0xab, 0xfd, + 0xd0, 0x20, 0x1d, 0xf7, 0xf5, 0x8b, 0xae, 0x68, 0xb7, 0xf7, 0x97, 0xb3, + 0x7f, 0xab, 0xf7, 0xa0, 0xb8, 0x12, 0xf8, 0x44, 0xf7, 0x34, 0x13, 0xac, + 0x8f, 0x16, 0xf7, 0x62, 0xae, 0x6, 0x59, 0x91, 0x66, 0x8f, 0xac, 0x1a, + 0xf7, 0xb, 0xf7, 0x75, 0x5, 0xf7, 0x52, 0xfb, 0x60, 0x6, 0x64, 0x7d, + 0x75, 0x41, 0x88, 0x1e, 0x68, 0xf8, 0xca, 0x7, 0xb4, 0xf7, 0x67, 0x5, + 0x74, 0x6, 0x7e, 0x60, 0x44, 0x6b, 0x6c, 0x1e, 0x13, 0x5c, 0x61, 0x5e, + 0x62, 0x81, 0x21, 0x1b, 0x4f, 0x82, 0x9e, 0xae, 0x1f, 0xf7, 0x7d, 0x7, + 0xf7, 0x16, 0x86, 0x8a, 0x56, 0x9b, 0x28, 0x8, 0xac, 0xf7, 0xe6, 0x6a, + 0x6, 0x6f, 0xfb, 0x14, 0x8b, 0x81, 0xfb, 0x9, 0x80, 0x8, 0xf7, 0x82, + 0x7, 0x9e, 0x8b, 0x96, 0xdd, 0xf7, 0x44, 0x90, 0x49, 0x31, 0x9e, 0x1e, + 0xae, 0xf7, 0x5d, 0xfd, 0xe, 0x6b, 0x6, 0xbf, 0x89, 0xae, 0x85, 0x6c, + 0x1a, 0xfb, 0xbc, 0xfc, 0xac, 0x5, 0x13, 0xac, 0x78, 0x68, 0x84, 0x93, + 0x67, 0x84, 0x8, 0xf7, 0x98, 0xf7, 0xc8, 0x15, 0xf7, 0x35, 0xf7, 0xac, + 0x5, 0x92, 0xfb, 0xac, 0x6, 0xe, 0xd6, 0xfb, 0x59, 0x76, 0xf7, 0x33, + 0xb5, 0x8b, 0xb9, 0x7d, 0xa, 0xf7, 0x57, 0xe8, 0x13, 0xfb, 0xf7, 0xc4, + 0xfb, 0x37, 0x15, 0x7b, 0x66, 0x5, 0x7b, 0xb4, 0xb1, 0x89, 0x97, 0x1b, + 0xb1, 0xec, 0x93, 0xdc, 0xbc, 0x64, 0xa0, 0x58, 0x7e, 0x83, 0x89, 0x88, + 0x81, 0x1f, 0x9f, 0xb8, 0xf7, 0x11, 0x8c, 0xd8, 0xca, 0xd3, 0xdd, 0x19, + 0x6d, 0xa4, 0x5, 0x2e, 0x38, 0x40, 0x6d, 0x3d, 0x1b, 0xfb, 0x2a, 0x5e, + 0xf7, 0x45, 0xf7, 0x12, 0xf7, 0x3d, 0xaa, 0xf7, 0x31, 0xf7, 0x26, 0xf7, + 0x6, 0xdd, 0xfb, 0x9, 0x34, 0xae, 0x1f, 0xae, 0x6, 0x13, 0xf7, 0x6a, + 0x1d, 0x7b, 0x6c, 0x9d, 0x99, 0x61, 0x1f, 0x13, 0xfb, 0x94, 0x70, 0x6b, + 0x93, 0x68, 0x1b, 0xfb, 0x66, 0xfb, 0x24, 0xfb, 0x30, 0xfb, 0x5f, 0xfb, + 0x44, 0xf7, 0x4, 0xfb, 0x30, 0xf7, 0x66, 0x7a, 0x1f, 0x68, 0x3c, 0x96, + 0x83, 0x5, 0x8d, 0x93, 0x92, 0x8d, 0x98, 0x1b, 0xa5, 0x9f, 0x80, 0x72, + 0x73, 0x1d, 0x1f, 0xe, 0x55, 0x1d, 0x9b, 0x16, 0x21, 0x1d, 0xf7, 0xf0, + 0xf9, 0x53, 0x26, 0xa, 0x55, 0x1d, 0xf7, 0x98, 0xf9, 0x76, 0x22, 0x1d, + 0xfc, 0x11, 0xfe, 0x13, 0x15, 0x21, 0x1d, 0xe, 0x51, 0xa, 0xf7, 0x82, + 0x72, 0xa, 0xf7, 0x40, 0xf9, 0x76, 0x29, 0x1d, 0xfb, 0xaa, 0xfe, 0x26, + 0x15, 0x21, 0x1d, 0xe, 0x9f, 0x8b, 0xaa, 0xf7, 0xbe, 0xad, 0xf7, 0xab, + 0xad, 0xd2, 0x9a, 0x1d, 0xf3, 0xf7, 0x36, 0x2c, 0xf7, 0x16, 0xda, 0xf7, + 0x16, 0x2f, 0xaf, 0x13, 0xf9, 0x9b, 0x16, 0x21, 0x1d, 0x13, 0xf6, 0xf7, + 0x2f, 0xf9, 0x9d, 0x15, 0x2a, 0x1d, 0xf7, 0x65, 0x38, 0x1d, 0x35, 0x1d, + 0xf7, 0x5a, 0xf9, 0x53, 0x26, 0xa, 0x35, 0x1d, 0xe9, 0xf9, 0x53, 0x28, + 0x1d, 0x5c, 0xa, 0xf7, 0x82, 0x77, 0x27, 0xa, 0x91, 0xf9, 0x53, 0x29, + 0x1d, 0xe, 0x5c, 0xa, 0xd2, 0x9a, 0x1d, 0x9f, 0xf7, 0x1a, 0x62, 0xf7, + 0x36, 0x62, 0xf7, 0x16, 0x13, 0xf4, 0x9f, 0x16, 0xf7, 0xf2, 0xae, 0x6, + 0x13, 0xe8, 0x34, 0x1d, 0x7, 0x13, 0xf4, 0xfb, 0xf2, 0x68, 0x6, 0x13, + 0xe8, 0x4b, 0xa, 0x13, 0xf4, 0x4d, 0x64, 0x87, 0x55, 0x86, 0x1e, 0x8f, + 0xf9, 0x9d, 0x40, 0x1d, 0x8a, 0x1d, 0xf7, 0xb7, 0xba, 0xf7, 0xa1, 0xad, + 0x1, 0xec, 0xf7, 0x36, 0xf7, 0x95, 0xf7, 0x42, 0x3, 0xf7, 0x97, 0xf7, + 0xda, 0x15, 0xf7, 0x6, 0xba, 0xfb, 0x6, 0xf7, 0x67, 0x6, 0x8c, 0x1d, + 0xfb, 0x69, 0x30, 0x84, 0xa, 0x1f, 0xfb, 0x89, 0x30, 0x15, 0xf7, 0xd0, + 0x6, 0xf7, 0x90, 0xf7, 0x0, 0xf7, 0x2e, 0xf7, 0x4c, 0xf7, 0x2e, 0x30, + 0xf7, 0x4c, 0x95, 0x1d, 0xb7, 0x8f, 0x4e, 0x1f, 0xfb, 0x67, 0x30, 0x5c, + 0xe6, 0xfb, 0x7f, 0x7, 0x66, 0x77, 0x78, 0x4c, 0x1e, 0xe, 0xd6, 0x8e, + 0x76, 0xf9, 0x27, 0xae, 0xdc, 0xd9, 0x12, 0xf2, 0xb7, 0xf8, 0x44, 0xb7, + 0x17, 0x72, 0x1d, 0x37, 0xa, 0xf7, 0x37, 0xf9, 0x68, 0x45, 0x1d, 0x13, + 0x30, 0xa8, 0xa2, 0x81, 0x80, 0xa0, 0x1f, 0x7e, 0xa4, 0xa3, 0x7c, 0xaa, + 0x1b, 0x42, 0xa, 0x13, 0x10, 0x74, 0x76, 0x98, 0x98, 0x72, 0x1f, 0x97, + 0x74, 0x71, 0x96, 0x6a, 0x50, 0x1d, 0xe, 0x51, 0x1d, 0xf7, 0x7c, 0x77, + 0x57, 0x1d, 0xfb, 0x48, 0x78, 0xa, 0xfb, 0x7b, 0x58, 0x1d, 0xf7, 0x21, + 0x5e, 0xa, 0xf7, 0x21, 0x5e, 0x1d, 0xfb, 0x18, 0xfb, 0x6e, 0x1e, 0xf8, + 0xe, 0xf8, 0x21, 0x26, 0xa, 0x51, 0x1d, 0xf7, 0x7c, 0x77, 0x1, 0xae, + 0xf7, 0x45, 0xf7, 0xf6, 0x30, 0xa, 0xf7, 0xa6, 0xf8, 0x26, 0x28, 0x1d, + 0x51, 0x1d, 0x57, 0x1d, 0xfb, 0x49, 0x78, 0xa, 0xfb, 0x7a, 0x58, 0x1d, + 0xf7, 0x20, 0x5e, 0xa, 0xf7, 0x22, 0x5e, 0x1d, 0xfb, 0x18, 0xfb, 0x6e, + 0x1e, 0xf7, 0x4e, 0xf8, 0x21, 0x29, 0x1d, 0xe, 0x51, 0x1d, 0xcd, 0xd9, + 0x6e, 0xd9, 0x12, 0x5c, 0x1d, 0x13, 0xdc, 0xf7, 0x68, 0xf7, 0xea, 0x79, + 0x1d, 0xf7, 0x3e, 0x66, 0x1d, 0xfb, 0x49, 0x78, 0xa, 0xfb, 0x7a, 0x65, + 0x1d, 0xf7, 0x85, 0x45, 0xa, 0xfb, 0x2b, 0x5f, 0x1d, 0xf7, 0x20, 0x5e, + 0xa, 0xf7, 0x22, 0xfb, 0x55, 0x96, 0xa, 0x1e, 0xf7, 0x3a, 0xf8, 0x35, + 0x45, 0x1d, 0xa9, 0xa1, 0x80, 0x80, 0xa1, 0x1f, 0x13, 0xec, 0x7e, 0xa4, + 0xa2, 0x7d, 0xaa, 0x1b, 0x13, 0xdc, 0x44, 0xa, 0x13, 0xec, 0x54, 0x1d, + 0x75, 0x76, 0x98, 0x97, 0x73, 0x1f, 0x13, 0xdc, 0x97, 0x74, 0x70, 0x97, + 0x69, 0x50, 0x1d, 0xe, 0x51, 0x1d, 0xc3, 0xf7, 0x16, 0x1, 0xae, 0xf7, + 0x45, 0x94, 0xf7, 0x14, 0xdc, 0xf7, 0x14, 0x93, 0x30, 0xa, 0xf7, 0x4e, + 0xf8, 0x70, 0x15, 0x6d, 0xa, 0xf7, 0x65, 0x16, 0x6d, 0xa, 0xe, 0x3e, + 0xb0, 0x76, 0xf8, 0x6e, 0x77, 0x1, 0xbb, 0xca, 0x15, 0xb8, 0x5c, 0xf7, + 0x54, 0xf7, 0x56, 0xf7, 0x54, 0xfb, 0x56, 0xb8, 0xbb, 0xfb, 0x54, 0xf7, + 0x51, 0xf7, 0x54, 0xf7, 0x55, 0x5b, 0xb7, 0xfb, 0x51, 0xfb, 0x52, 0xfb, + 0x51, 0xf7, 0x52, 0x5b, 0x5e, 0xf7, 0x53, 0xfb, 0x54, 0x5, 0xe, 0xf7, + 0x17, 0x56, 0x76, 0xc2, 0xac, 0x93, 0x1d, 0xb9, 0x77, 0x5a, 0xa, 0xdc, + 0x41, 0x15, 0xbd, 0x6, 0xd2, 0xf3, 0x5, 0x6b, 0xc0, 0xca, 0x7a, 0xd2, + 0x1b, 0xf7, 0x61, 0xf7, 0x29, 0xf7, 0x1f, 0xf7, 0x66, 0xf7, 0x12, 0x55, + 0xf4, 0x39, 0xc8, 0x1f, 0xd9, 0xf7, 0x7, 0x5, 0x59, 0x6, 0x4c, 0x2e, + 0x5, 0xaa, 0x56, 0x4c, 0x9b, 0x48, 0x1b, 0x96, 0xa, 0xfb, 0xd, 0xbd, + 0x21, 0xdd, 0x4c, 0x1f, 0xce, 0xee, 0x15, 0x76, 0xcf, 0x8a, 0xdc, 0xb5, + 0x1a, 0xf7, 0x26, 0xb0, 0xf7, 0x3e, 0xf7, 0x20, 0xca, 0xb4, 0x68, 0x55, + 0xa6, 0x1e, 0xfb, 0x9f, 0xfc, 0x65, 0x15, 0xf7, 0xb3, 0xf8, 0x38, 0x5, + 0x9e, 0x53, 0x92, 0x40, 0x4c, 0x1a, 0x34, 0x85, 0xfb, 0x79, 0xfb, 0x3f, + 0x46, 0x61, 0xb1, 0xbf, 0x72, 0x1e, 0xe, 0x6b, 0xa, 0xf7, 0x8b, 0x77, + 0x63, 0xa, 0x9b, 0xf9, 0x15, 0x21, 0xa, 0xf8, 0x20, 0xc9, 0x26, 0xa, + 0x6b, 0xa, 0xf7, 0x8b, 0x77, 0x63, 0xa, 0xf7, 0xc8, 0xf9, 0x76, 0x22, + 0x1d, 0xfc, 0x41, 0xfb, 0x92, 0x21, 0xa, 0xe, 0x6b, 0xa, 0xf7, 0x82, + 0x77, 0x63, 0xa, 0xf7, 0x70, 0xf9, 0x76, 0x29, 0x1d, 0xfb, 0xda, 0xfb, + 0xa5, 0x21, 0xa, 0xe, 0x6b, 0xa, 0xd2, 0x9a, 0x1d, 0xed, 0xf7, 0x33, + 0x64, 0xf7, 0x16, 0xc8, 0xf7, 0x16, 0x9c, 0xb7, 0x13, 0xf6, 0x9b, 0xf9, + 0x15, 0x21, 0xa, 0x13, 0xee, 0xf7, 0x5e, 0xf7, 0x1c, 0x15, 0x2a, 0x1d, + 0xf7, 0x67, 0x38, 0x1d, 0xd6, 0x4e, 0x1d, 0xf7, 0x90, 0x77, 0x1, 0xf7, + 0xaa, 0x7f, 0x1d, 0x69, 0x1d, 0x83, 0xde, 0x1a, 0xf7, 0x4c, 0x66, 0xa, + 0xb8, 0x89, 0x64, 0x1a, 0xfb, 0x32, 0xfb, 0xa0, 0x5, 0xfb, 0x14, 0xf7, + 0x82, 0x7b, 0xa4, 0x3d, 0x1d, 0xfb, 0x27, 0x7, 0x38, 0x73, 0x93, 0x46, + 0x84, 0x1e, 0xf7, 0x3, 0xf9, 0x58, 0x28, 0x1d, 0x67, 0x8f, 0x76, 0xb1, + 0x76, 0xf7, 0x41, 0xae, 0x7d, 0xae, 0xf7, 0xa6, 0xae, 0x68, 0xf7, 0x41, + 0xfb, 0x3d, 0xf7, 0x39, 0x8f, 0x77, 0x12, 0xef, 0xf7, 0x36, 0xfb, 0x26, + 0xf7, 0x36, 0xf7, 0x29, 0xf7, 0x40, 0xfb, 0x3f, 0xf7, 0x40, 0x13, 0xa2, + 0xa0, 0xf7, 0x9a, 0xf7, 0x64, 0x15, 0xf7, 0x98, 0x7, 0x13, 0x99, 0x60, + 0xa1, 0x8c, 0x98, 0x98, 0xad, 0x1b, 0x13, 0x92, 0x50, 0xdd, 0xaf, 0x6d, + 0xfb, 0x6, 0x1f, 0x13, 0xa2, 0xa0, 0xfb, 0x10, 0x5e, 0x70, 0xfb, 0xd, + 0x1e, 0x13, 0x52, 0x60, 0xfb, 0x8a, 0xfb, 0x64, 0x15, 0xf7, 0xe2, 0xae, + 0x6, 0x13, 0x92, 0xa0, 0x46, 0x94, 0x78, 0x83, 0xdc, 0x1a, 0x13, 0xa2, + 0xa0, 0xc3, 0x7, 0x13, 0x92, 0x50, 0xf7, 0x3c, 0x8a, 0xf7, 0x3e, 0xb8, + 0xf7, 0x25, 0x1a, 0x13, 0x99, 0x60, 0xdf, 0x60, 0xe7, 0xfb, 0x79, 0x1e, + 0x13, 0x99, 0xa0, 0x49, 0x97, 0x6, 0xdc, 0x9e, 0x8b, 0xd0, 0x95, 0x1e, + 0x13, 0x94, 0x60, 0xae, 0xfb, 0xe2, 0x68, 0x7, 0x13, 0x92, 0xa0, 0xc0, + 0x86, 0xaa, 0x8a, 0x37, 0x1a, 0xfc, 0x46, 0x7, 0x31, 0x70, 0x9e, 0x52, + 0x80, 0x1e, 0xe, 0x30, 0x7f, 0xae, 0x6e, 0xf7, 0x12, 0x28, 0x76, 0xf8, + 0x9, 0xad, 0xf7, 0x94, 0xa7, 0x12, 0xd1, 0xf7, 0x1f, 0xf7, 0x16, 0xf7, + 0x1d, 0x22, 0xf7, 0x26, 0x13, 0x9e, 0x9e, 0x16, 0xad, 0x7, 0x13, 0x5d, + 0xb0, 0x91, 0x99, 0x91, 0xbe, 0x1a, 0xf8, 0x2e, 0x7, 0xf4, 0xdd, 0xda, + 0xf7, 0x8, 0xf7, 0x31, 0xbe, 0x2a, 0x55, 0x3b, 0x4b, 0x5a, 0x32, 0x7a, + 0x1e, 0x89, 0x7, 0xf7, 0x1a, 0x68, 0xc7, 0x53, 0xfb, 0x3, 0x1a, 0x36, + 0x5b, 0x51, 0x57, 0x68, 0x1e, 0x13, 0x9e, 0x7f, 0x83, 0x7d, 0x84, 0x7d, + 0x8a, 0x6e, 0x89, 0x18, 0x6e, 0x6e, 0x94, 0x9e, 0x79, 0x1f, 0x13, 0x3e, + 0x7f, 0x98, 0x83, 0x9b, 0xa0, 0x1a, 0xa8, 0x9f, 0x9e, 0xa7, 0xad, 0x97, + 0x72, 0x75, 0x1e, 0x7f, 0x88, 0x85, 0x81, 0x1a, 0x7d, 0x96, 0x88, 0x97, + 0x1e, 0xa4, 0x90, 0x88, 0xa4, 0x7e, 0xbb, 0x8, 0x85, 0xa3, 0x8d, 0xa7, + 0xab, 0x1a, 0xf7, 0x2e, 0x67, 0xa5, 0x49, 0x8e, 0x1e, 0xad, 0x7, 0x13, + 0x9d, 0xd6, 0x91, 0x86, 0xb6, 0xdf, 0x1a, 0xed, 0x6d, 0xa4, 0x62, 0x55, + 0x87, 0x57, 0x72, 0x8a, 0x1e, 0x13, 0x5e, 0xfc, 0xde, 0x7, 0xe, 0x92, + 0x50, 0xa, 0x52, 0x1d, 0x13, 0xd8, 0xf7, 0xba, 0xc3, 0x2a, 0xa, 0x84, + 0x93, 0x86, 0x92, 0x94, 0x1a, 0x13, 0xb8, 0x3b, 0x1d, 0x71, 0xf7, 0xaf, + 0x26, 0xa, 0x92, 0x50, 0xa, 0xd7, 0x76, 0xf7, 0x4d, 0x77, 0x52, 0x1d, + 0x13, 0xde, 0xf7, 0x37, 0xf8, 0xa4, 0x22, 0x1d, 0x85, 0xfd, 0x9, 0x37, + 0x1d, 0x13, 0xbe, 0x3b, 0x1d, 0xe, 0x92, 0x50, 0xa, 0xf7, 0x7b, 0x77, + 0x52, 0x1d, 0x13, 0xdc, 0xd6, 0xf8, 0xa4, 0x29, 0x1d, 0xec, 0xfd, 0x1c, + 0x23, 0x1d, 0xa2, 0x81, 0x97, 0x82, 0x96, 0x1e, 0x85, 0x92, 0x86, 0x91, + 0x36, 0x1d, 0x92, 0x50, 0xa, 0xd5, 0xd9, 0x6e, 0xd9, 0x52, 0x1d, 0x13, + 0xce, 0xc8, 0xf8, 0xb9, 0x45, 0x1d, 0xa7, 0xa2, 0x82, 0x80, 0xa1, 0x1f, + 0x13, 0xd6, 0x7d, 0xa7, 0xa5, 0x7c, 0xa5, 0x1b, 0x13, 0xce, 0x44, 0xa, + 0x13, 0xd6, 0x54, 0x1d, 0x71, 0x73, 0x96, 0x97, 0x73, 0x1f, 0x13, 0xce, + 0x98, 0x71, 0x72, 0x98, 0x71, 0x50, 0x1d, 0xf7, 0x7d, 0xfc, 0x81, 0x23, + 0x1d, 0xa2, 0x81, 0x98, 0x82, 0x95, 0x1e, 0x85, 0x92, 0x86, 0x91, 0x94, + 0x1a, 0x13, 0xb6, 0x3b, 0xa, 0x13, 0x86, 0x24, 0xa, 0xe, 0x92, 0x50, + 0xa, 0xcb, 0xf7, 0x16, 0x52, 0x1d, 0x13, 0xdc, 0xd6, 0x3f, 0xa, 0x94, + 0xfc, 0xb6, 0x23, 0x1d, 0xa2, 0x80, 0x97, 0x83, 0x95, 0x1e, 0x85, 0x92, + 0x86, 0x92, 0x36, 0x1d, 0x92, 0x76, 0xf7, 0xbb, 0xf7, 0x54, 0xc1, 0xbb, + 0x5b, 0xf7, 0x38, 0xfb, 0x8, 0xf7, 0x8, 0x8b, 0xbc, 0x12, 0xa4, 0xf7, + 0x26, 0x69, 0xf7, 0x38, 0xfb, 0x8, 0xf7, 0x39, 0x13, 0xd5, 0x0, 0xf7, + 0x1d, 0x94, 0xa, 0x13, 0xee, 0x80, 0x7d, 0x1d, 0x1f, 0xf7, 0x31, 0xfc, + 0xd5, 0x37, 0x1d, 0x3b, 0x1d, 0xfb, 0x0, 0xf8, 0x18, 0x15, 0xab, 0xa5, + 0xa5, 0xab, 0xab, 0xa5, 0x71, 0x6b, 0x6b, 0x71, 0x71, 0x6b, 0x6b, 0x71, + 0xa5, 0xab, 0x1e, 0xe, 0xd6, 0x7d, 0xca, 0x4c, 0xd1, 0xf7, 0x54, 0xb0, + 0x8a, 0xf7, 0x51, 0x6b, 0xab, 0x12, 0xac, 0xf7, 0x29, 0xfb, 0x18, 0xf7, + 0x18, 0xf7, 0x6, 0xf7, 0x1e, 0xf7, 0x1d, 0xf7, 0xd, 0x13, 0x6d, 0x80, + 0xf7, 0xe5, 0xd6, 0x15, 0x37, 0xba, 0xcf, 0x86, 0xb0, 0x1b, 0xde, 0xce, + 0xb1, 0xe4, 0xc1, 0x1f, 0x76, 0x9a, 0x5, 0x72, 0x77, 0x69, 0x5c, 0x42, + 0x1b, 0xfb, 0x3, 0x8b, 0xf7, 0xf, 0xb9, 0x1f, 0xa2, 0xf7, 0x96, 0x7, + 0x13, 0x93, 0x80, 0xf7, 0x41, 0x8c, 0xfb, 0x1, 0xbf, 0x39, 0x1b, 0x4b, + 0x65, 0x73, 0x70, 0x71, 0x1f, 0xa0, 0x76, 0x66, 0xa9, 0x29, 0x1b, 0x27, + 0x47, 0x52, 0x47, 0x5f, 0xae, 0x77, 0xa8, 0xb8, 0xa2, 0x9d, 0xb3, 0xa1, + 0x83, 0x95, 0x84, 0x93, 0x1f, 0x84, 0x92, 0x84, 0x91, 0x97, 0x1a, 0x13, + 0xad, 0x80, 0xa1, 0xaf, 0x97, 0xa8, 0xdb, 0x89, 0x57, 0x6e, 0x1e, 0x3b, + 0x7, 0xfb, 0x45, 0x52, 0x35, 0x6f, 0x23, 0x1a, 0x46, 0xb6, 0x67, 0xd7, + 0xe1, 0xc6, 0xbc, 0xad, 0xad, 0x1e, 0x68, 0x97, 0x15, 0x6c, 0x6e, 0x79, + 0x8a, 0x78, 0x1b, 0x5e, 0x83, 0xb7, 0xa7, 0xdb, 0xcb, 0xa7, 0xc2, 0x9e, + 0x1f, 0xf7, 0x1e, 0xb0, 0x15, 0xcb, 0x8b, 0xe9, 0xcf, 0xbf, 0x9c, 0x67, + 0x32, 0x1e, 0x6a, 0x7, 0xe, 0xfb, 0x5f, 0xfb, 0x59, 0x76, 0xf7, 0x63, + 0xcb, 0x86, 0x1d, 0xea, 0xe8, 0x4e, 0xf7, 0x10, 0x13, 0xdc, 0xf7, 0x44, + 0x2b, 0x15, 0x4f, 0x1d, 0xb1, 0xf7, 0x5, 0x8e, 0xda, 0xc7, 0x49, 0xa6, + 0x54, 0x7c, 0x1f, 0xa1, 0xbe, 0xd3, 0x8f, 0xc7, 0xb2, 0xb6, 0xc8, 0x19, + 0x79, 0x9d, 0x5, 0x70, 0x73, 0x71, 0x6e, 0x52, 0x1b, 0x3d, 0x4e, 0xdc, + 0xf7, 0x20, 0xb8, 0x98, 0xf7, 0xf, 0xd9, 0x1f, 0x13, 0xea, 0x9a, 0x9f, + 0x82, 0x6d, 0x8f, 0x1d, 0x33, 0xb0, 0x44, 0x1f, 0x13, 0x4a, 0x2d, 0xfb, + 0x1e, 0x4e, 0xfb, 0x59, 0xfb, 0x7, 0xd6, 0x27, 0xf7, 0x6, 0x80, 0x1f, + 0xe, 0x4c, 0x1d, 0x78, 0xfb, 0x4, 0x5b, 0x94, 0x1e, 0xfb, 0x1c, 0x79, + 0xa, 0x13, 0xd8, 0x2b, 0x1d, 0xde, 0xf7, 0xaf, 0x26, 0xa, 0x4c, 0x1d, + 0x86, 0xfb, 0x9, 0x60, 0x8d, 0x1e, 0xfb, 0x23, 0x80, 0xa, 0x1e, 0x13, + 0xd8, 0x2b, 0x1d, 0x76, 0xf7, 0xaf, 0x28, 0x1d, 0x49, 0x1d, 0xd7, 0x83, + 0x1d, 0xa4, 0x8a, 0xa, 0x4d, 0xa, 0x82, 0xfb, 0x4, 0x5b, 0x92, 0x1e, + 0xfb, 0x24, 0x80, 0xa, 0x34, 0xa, 0x1e, 0x39, 0x1d, 0xfb, 0x1, 0xf7, + 0xaf, 0x29, 0x1d, 0xe, 0x49, 0x1d, 0xcb, 0xf7, 0x16, 0x98, 0xa, 0x21, + 0xf7, 0x16, 0xdb, 0xf7, 0x16, 0x13, 0xfa, 0x4d, 0xa, 0x7d, 0xfb, 0x4, + 0x5b, 0x92, 0x1e, 0xfb, 0x1f, 0x79, 0xa, 0x2b, 0x1d, 0x13, 0xf6, 0xfb, + 0x3, 0xf7, 0xf9, 0x40, 0x1d, 0x3e, 0xa, 0xfb, 0xa6, 0x7, 0x5b, 0x7a, + 0x88, 0x67, 0x82, 0x1e, 0xf7, 0x1f, 0xf8, 0x82, 0x29, 0xa, 0x81, 0x7f, + 0xa, 0x99, 0x7c, 0xa4, 0x7c, 0x1f, 0xe, 0x3e, 0xa, 0xfb, 0xa9, 0x7, + 0x5b, 0x7a, 0x8b, 0x67, 0x82, 0x1e, 0xae, 0xf8, 0x82, 0x56, 0x1d, 0xf7, + 0x22, 0xe3, 0x5, 0xa3, 0x9a, 0x9c, 0x95, 0xa7, 0x1a, 0xaf, 0x6b, 0x2c, + 0xa, 0xe, 0x5d, 0xa, 0xf7, 0x0, 0x83, 0x1d, 0xd0, 0x8a, 0xa, 0x67, + 0xf8, 0xa4, 0x56, 0x1d, 0xf7, 0x3, 0xed, 0xf7, 0x5, 0x29, 0x5, 0xc4, + 0x6, 0xfb, 0x10, 0xf7, 0x44, 0x5, 0x2f, 0x6, 0x46, 0xfd, 0x54, 0x15, + 0x33, 0xa, 0xe, 0xfc, 0x5, 0xa0, 0x76, 0xf8, 0xad, 0x9a, 0x1d, 0x67, + 0xf7, 0x13, 0x75, 0xf7, 0x1f, 0x69, 0xf7, 0x13, 0x13, 0xd0, 0x49, 0xa, + 0x13, 0xe8, 0x57, 0xf8, 0xcd, 0x15, 0x6c, 0x1d, 0xf7, 0x66, 0x16, 0x6c, + 0x1d, 0xe, 0x65, 0xa, 0xf7, 0x6e, 0x77, 0x12, 0x5d, 0x1d, 0xfb, 0x1c, + 0xf7, 0x27, 0x13, 0xf8, 0xf7, 0x40, 0xf7, 0x83, 0x78, 0x1d, 0xe4, 0xd5, + 0xc8, 0x9c, 0x5a, 0x64, 0xa, 0x2c, 0x46, 0x3b, 0x8b, 0xf7, 0x6, 0xf7, + 0x0, 0x1e, 0x13, 0xf4, 0xf7, 0x3c, 0xf7, 0x55, 0x15, 0xab, 0x73, 0x6b, + 0x94, 0x6a, 0x1b, 0xfb, 0x1f, 0x34, 0x22, 0xfb, 0x15, 0xfb, 0x16, 0xe2, + 0xfb, 0xf, 0xf7, 0x1f, 0x1f, 0x13, 0xf8, 0xf7, 0x1c, 0xe4, 0xf6, 0xf7, + 0x26, 0xf7, 0x36, 0x4e, 0xf7, 0x2e, 0x3b, 0xc6, 0x1f, 0xe7, 0xba, 0x5a, + 0xa9, 0x31, 0x5d, 0x55, 0xa8, 0x51, 0x98, 0x5b, 0x8f, 0x19, 0x5d, 0x72, + 0xb8, 0x83, 0xb9, 0x78, 0xb5, 0x6c, 0x19, 0xfb, 0x9, 0x50, 0xbb, 0x6c, + 0xf7, 0x2, 0xc3, 0xb1, 0x66, 0xa9, 0x5c, 0x9d, 0x54, 0x19, 0xe, 0x30, + 0x82, 0x1d, 0xd5, 0xd9, 0x6e, 0xd9, 0x12, 0xd5, 0x53, 0xa, 0x13, 0xdc, + 0xa0, 0x41, 0xa, 0x8d, 0x8b, 0xaa, 0xa3, 0x1a, 0x76, 0xa, 0x36, 0x60, + 0x4f, 0x73, 0x7d, 0x1e, 0x88, 0x1d, 0xb3, 0x85, 0x98, 0x83, 0x5e, 0x1a, + 0xfb, 0xa9, 0x7, 0x5a, 0x7a, 0x8a, 0x67, 0x84, 0x1e, 0xd6, 0xf8, 0x97, + 0x45, 0x1d, 0xa6, 0xa3, 0x80, 0x80, 0xa3, 0x1f, 0x13, 0xec, 0x7e, 0xa6, + 0xa5, 0x7d, 0xa4, 0x1b, 0x13, 0x10, 0x42, 0xa, 0x6d, 0x8f, 0xa, 0x6d, + 0x50, 0x1d, 0xe, 0x65, 0xa, 0xd7, 0x98, 0x1d, 0x5d, 0x1d, 0x3, 0xf7, + 0x40, 0xf7, 0x90, 0x78, 0x1d, 0xd7, 0xd5, 0xc8, 0x9c, 0x5f, 0x64, 0xa, + 0x27, 0x46, 0x3b, 0x8b, 0xf7, 0x13, 0xf7, 0x0, 0x1e, 0xfb, 0x27, 0x75, + 0x15, 0xfb, 0x16, 0xe2, 0xfb, 0x6, 0x70, 0xa, 0xf7, 0x4, 0x6f, 0xa, + 0xf2, 0x70, 0x1d, 0xfb, 0x6, 0xfb, 0x15, 0x1e, 0xf7, 0x8d, 0xf7, 0xbe, + 0x56, 0x1d, 0x49, 0xd7, 0x64, 0xbd, 0x70, 0xa6, 0x8, 0xaa, 0x6c, 0x7c, + 0x8c, 0x80, 0x1b, 0x65, 0x80, 0x7f, 0xa, 0xa5, 0x75, 0xa4, 0x7b, 0x1f, + 0xe, 0x65, 0xa, 0xd7, 0x76, 0xf7, 0x4d, 0x32, 0xa, 0xf7, 0x27, 0xf7, + 0xbf, 0x28, 0x1d, 0x65, 0xa, 0xd7, 0x76, 0xf7, 0x44, 0x32, 0xa, 0xc4, + 0xf7, 0xbf, 0x60, 0xa, 0x65, 0xa, 0xd5, 0xd9, 0x6e, 0xd9, 0x12, 0x5d, + 0x1d, 0x13, 0xdc, 0x25, 0xa, 0xc0, 0xf7, 0xd4, 0x45, 0x1d, 0xa7, 0xa6, + 0x7f, 0x7f, 0xa4, 0x1f, 0x13, 0xec, 0x7f, 0xa4, 0xa3, 0x7e, 0xa3, 0x1b, + 0x13, 0x10, 0x42, 0xa, 0x6c, 0x8f, 0xa, 0x6e, 0x50, 0x1d, 0xe, 0x65, + 0xa, 0xcc, 0xf7, 0x15, 0x12, 0xa4, 0xf7, 0x27, 0x30, 0xf7, 0x15, 0xdc, + 0xf7, 0x15, 0x30, 0xf7, 0x27, 0x13, 0xf2, 0x25, 0xa, 0x13, 0xec, 0xc3, + 0xf8, 0x9, 0x2d, 0x1d, 0x3e, 0x6c, 0xef, 0x27, 0xf7, 0x2a, 0xe5, 0xe2, + 0x40, 0xcb, 0xef, 0xf7, 0x2c, 0x27, 0xef, 0x12, 0xf7, 0x65, 0xf7, 0x2d, + 0xfb, 0x13, 0xef, 0x13, 0x5a, 0xad, 0xf7, 0x71, 0x15, 0xf8, 0x8b, 0xcb, + 0xfc, 0x8b, 0x6, 0x13, 0xa5, 0xf7, 0x5d, 0xfb, 0x9e, 0x15, 0x6c, 0xa, + 0xf8, 0x68, 0x4, 0x6c, 0xa, 0xe, 0x44, 0x76, 0xd9, 0xaa, 0xf7, 0xd9, + 0x76, 0xf7, 0xd, 0xaa, 0xd7, 0x77, 0x12, 0xa2, 0xf7, 0x27, 0xfb, 0x25, + 0xf7, 0x27, 0xf7, 0x31, 0xf7, 0x27, 0x13, 0xfd, 0xf7, 0x41, 0xf7, 0x23, + 0x15, 0x13, 0xfb, 0x8a, 0xa5, 0x8b, 0xa4, 0xa9, 0x1a, 0xf7, 0x6, 0x90, + 0xf3, 0xd5, 0xad, 0x9f, 0x78, 0x62, 0x96, 0x1e, 0xfb, 0x21, 0xfb, 0x83, + 0x5, 0xfb, 0x21, 0xfb, 0x7f, 0x15, 0xba, 0x6, 0xca, 0xf4, 0x5, 0x7a, + 0xa9, 0xb0, 0x81, 0xb3, 0x1b, 0xf7, 0x1c, 0xe4, 0xf4, 0xf7, 0x19, 0xde, + 0x69, 0xd7, 0x55, 0xb6, 0x1f, 0xd4, 0xf7, 0xf, 0x5, 0x5d, 0x6, 0x4f, + 0x26, 0x5, 0x9b, 0x6e, 0x67, 0x94, 0x64, 0x1b, 0xfb, 0x1f, 0x34, 0xfb, + 0xc, 0xfb, 0x15, 0x3e, 0xaa, 0x49, 0xc1, 0x5e, 0x1f, 0xd4, 0xb7, 0x15, + 0xf7, 0x22, 0xf7, 0x85, 0x5, 0x8d, 0x6, 0x8c, 0x72, 0x8c, 0x67, 0x67, + 0x1a, 0xfb, 0x13, 0x83, 0x3b, 0x46, 0x64, 0x77, 0xa3, 0xb2, 0x81, 0x1e, + 0xe, 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, 0xf7, 0x0, 0x98, 0x1d, 0xcc, + 0x53, 0xa, 0x3, 0x89, 0x1d, 0x49, 0x89, 0xa, 0x8d, 0x28, 0xa, 0x5b, + 0xf8, 0x70, 0x26, 0xa, 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, 0xf7, 0x0, + 0x98, 0x1d, 0xcc, 0x53, 0xa, 0x3, 0x71, 0xa, 0x27, 0x1d, 0x6c, 0x7, + 0xb4, 0x84, 0x93, 0x7c, 0x38, 0xa, 0xfb, 0x2c, 0xf8, 0x70, 0x28, 0x1d, + 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, 0xf7, 0x0, 0x83, 0x1d, 0xcc, 0x53, + 0xa, 0x3, 0x2f, 0x1d, 0xfb, 0x84, 0xf8, 0x70, 0x29, 0x1d, 0xe, 0x30, + 0x7d, 0xcc, 0xf8, 0x7a, 0x9a, 0x1d, 0xcc, 0xf7, 0x1f, 0x26, 0xf7, 0x13, + 0xde, 0xf7, 0x13, 0x29, 0xf7, 0x1f, 0x13, 0xe4, 0x2f, 0x1d, 0x13, 0xd8, + 0xfb, 0x84, 0xf8, 0xba, 0x15, 0x6d, 0x1d, 0xf7, 0x66, 0x16, 0x6d, 0x1d, + 0xe, 0xfb, 0x61, 0xf7, 0x23, 0xf8, 0x9f, 0x77, 0xf7, 0x0, 0x76, 0xf7, + 0x4d, 0x77, 0x12, 0x9b, 0xf7, 0xe, 0xfb, 0xe, 0xf8, 0x64, 0xfb, 0x2b, + 0xf7, 0x2b, 0x13, 0x8a, 0x13, 0x4, 0xf7, 0x80, 0x7e, 0x15, 0x40, 0x72, + 0x2f, 0xa, 0x5, 0x13, 0x72, 0x9e, 0xbd, 0x9c, 0x8d, 0xa1, 0x8e, 0x8, + 0x13, 0x74, 0x4d, 0x1d, 0x13, 0xfa, 0x36, 0xa, 0xf7, 0x4, 0xf7, 0x14, + 0x28, 0x1d, 0x7c, 0xa, 0xf7, 0x5f, 0x77, 0x1, 0xd6, 0xf7, 0x1f, 0xf7, + 0x36, 0xf7, 0x28, 0x3, 0x81, 0xa, 0x90, 0x1d, 0x6f, 0x6a, 0xa0, 0xb3, + 0x7b, 0x1e, 0x7a, 0x1d, 0x93, 0xbe, 0x58, 0xa, 0x7c, 0x1f, 0x89, 0xf7, + 0xad, 0xfb, 0x56, 0x69, 0x6, 0xaf, 0x84, 0x9e, 0x87, 0x5c, 0x1a, 0xfd, + 0x4d, 0x92, 0xa, 0xfb, 0x61, 0xf7, 0x23, 0xf8, 0xec, 0xf7, 0x15, 0x12, + 0x9b, 0xf7, 0x56, 0xfb, 0x15, 0xf7, 0x15, 0xdc, 0xf7, 0x15, 0x13, 0xe8, + 0xf7, 0x80, 0x7e, 0x15, 0x40, 0x72, 0x2b, 0xa, 0x13, 0xd8, 0xa2, 0xf7, + 0x5e, 0x2d, 0x1d, 0x5d, 0xa, 0x1, 0xd0, 0x8a, 0xa, 0x49, 0xa, 0xe, + 0x9f, 0x8b, 0xaa, 0xf8, 0xf6, 0x60, 0x1d, 0x38, 0x96, 0x1d, 0xf7, 0x59, + 0x7, 0xf7, 0xf, 0xd7, 0x5, 0xc8, 0x7, 0xfb, 0xf, 0x3f, 0x5, 0xf7, + 0x6a, 0x7, 0xc7, 0xaa, 0x9e, 0xd1, 0x8e, 0x1e, 0xae, 0xfb, 0xf1, 0x68, + 0x7, 0xb8, 0x88, 0xb4, 0x7e, 0x49, 0x1a, 0xfb, 0xc9, 0x7, 0x3a, 0x5a, + 0x5, 0x4e, 0x7, 0xdc, 0xbc, 0x5, 0x25, 0x7, 0x62, 0x6d, 0x87, 0x53, + 0x8b, 0xa, 0xfc, 0x5, 0x8b, 0xad, 0xf9, 0x16, 0x77, 0x1, 0xce, 0x8a, + 0xa, 0x9b, 0x16, 0x99, 0xa, 0x64, 0x81, 0xaa, 0xa8, 0x1f, 0xf7, 0xd1, + 0x7, 0xec, 0xdb, 0x5, 0xbd, 0x7, 0x2a, 0x3b, 0x5, 0xf7, 0x6b, 0x8d, + 0xa, 0xfb, 0x68, 0x7, 0x32, 0x43, 0x5, 0x59, 0x7, 0xe4, 0xd3, 0x5, + 0xfb, 0x78, 0x97, 0x1d, 0xf7, 0xf5, 0x8b, 0xa6, 0x70, 0xae, 0x78, 0x76, + 0xf7, 0xe6, 0xac, 0xf7, 0xa7, 0xae, 0x73, 0xab, 0x12, 0xa1, 0xf7, 0x3e, + 0xf7, 0xac, 0xf7, 0x2f, 0x13, 0x97, 0xf8, 0x6c, 0xf7, 0x68, 0x15, 0xfb, + 0x14, 0x8b, 0x52, 0x21, 0x34, 0x34, 0xa7, 0xf7, 0xa1, 0xf7, 0x9, 0x9f, + 0xf7, 0x67, 0xf7, 0x35, 0xee, 0x8b, 0x51, 0x30, 0x1e, 0xf7, 0x2f, 0xfb, + 0x3e, 0x15, 0xf7, 0xc, 0x93, 0x46, 0x33, 0x98, 0x1f, 0xac, 0xf7, 0xe6, + 0x6a, 0x6, 0xfb, 0x2, 0x73, 0x8d, 0x65, 0xfb, 0xb, 0x1b, 0xf7, 0x8d, + 0x7, 0x13, 0x9b, 0xa3, 0x9b, 0x8d, 0xc4, 0xf7, 0x43, 0x99, 0x42, 0x2e, + 0x9a, 0x1e, 0xaf, 0xf7, 0x5d, 0xfc, 0x30, 0x6, 0x13, 0x37, 0x79, 0xfb, + 0x4, 0x93, 0x79, 0x1b, 0xfb, 0xc6, 0x57, 0xfb, 0x86, 0x2c, 0xfb, 0x79, + 0xf7, 0x19, 0xfb, 0xf, 0xf7, 0x5e, 0x1f, 0x13, 0x9b, 0xc3, 0xa7, 0x90, + 0xcf, 0x1b, 0xf8, 0x42, 0x6, 0xb5, 0xf7, 0x67, 0x5, 0x70, 0x6, 0x13, + 0x5b, 0xfb, 0x33, 0x47, 0x2c, 0x7a, 0x2b, 0x1b, 0x47, 0x8b, 0xa2, 0xa4, + 0x1f, 0xe, 0xd6, 0x7d, 0xa9, 0x6d, 0xd3, 0xf7, 0x4f, 0xb0, 0xf7, 0x36, + 0xa8, 0x12, 0xa1, 0xf7, 0x25, 0xf7, 0x1c, 0xf7, 0x1c, 0xf7, 0x18, 0xf7, + 0x11, 0x13, 0x7e, 0xf8, 0x50, 0xf7, 0xae, 0x15, 0xe0, 0x8c, 0x8b, 0xd8, + 0xc9, 0x1b, 0xc4, 0x8f, 0x4e, 0x26, 0x8e, 0x1f, 0xfb, 0x50, 0xfb, 0x8c, + 0x15, 0x7a, 0x9a, 0xa5, 0x6c, 0xda, 0x1b, 0xf6, 0xbe, 0xd4, 0xbd, 0xae, + 0x1f, 0x77, 0x9b, 0x5, 0x6a, 0x6e, 0x6e, 0x69, 0x4c, 0x1b, 0xfb, 0x1, + 0x87, 0xf7, 0xe, 0xcc, 0x8d, 0x1f, 0xf7, 0x90, 0x6, 0xf7, 0xe, 0x89, + 0x64, 0xf5, 0xfb, 0x28, 0x1b, 0x4e, 0x5d, 0x6f, 0x76, 0x70, 0x1f, 0x9b, + 0x7b, 0x6a, 0xac, 0x38, 0x1b, 0xfb, 0x19, 0x35, 0xfb, 0x2, 0xfb, 0x1c, + 0xfb, 0xd, 0xd9, 0xfb, 0xc, 0xf7, 0x21, 0xe2, 0xae, 0xaa, 0x9c, 0x9f, + 0x1f, 0x40, 0xf7, 0x7, 0x15, 0x13, 0xbe, 0x4b, 0x7c, 0x46, 0x57, 0x5e, + 0x6e, 0x8b, 0xf7, 0x67, 0xf7, 0x3e, 0xa5, 0xba, 0xbb, 0xc0, 0x99, 0x66, + 0x2b, 0x1e, 0xe, 0x30, 0x78, 0xac, 0xf8, 0x76, 0x76, 0xf7, 0x4d, 0xaa, + 0xf7, 0x73, 0x8e, 0xa, 0x17, 0x7c, 0x1d, 0x98, 0x94, 0x1d, 0xc3, 0x1b, + 0x13, 0xfc, 0x47, 0x1d, 0x13, 0xbc, 0x85, 0xa, 0x80, 0x7d, 0x90, 0x91, + 0x7b, 0x1f, 0x95, 0x71, 0x68, 0x97, 0x5a, 0x46, 0x1d, 0xf7, 0x59, 0xf8, + 0x92, 0x35, 0xa, 0xfb, 0x96, 0x7d, 0xad, 0x7f, 0x76, 0xf8, 0x59, 0xac, + 0x12, 0xa6, 0xef, 0xf7, 0x1e, 0xeb, 0x13, 0x78, 0xa4, 0x7e, 0x15, 0xa4, + 0x6, 0x9f, 0x95, 0x91, 0x93, 0x96, 0x1b, 0x90, 0x9f, 0x82, 0x83, 0xa4, + 0x1f, 0x13, 0xb8, 0x85, 0x9f, 0xa4, 0x85, 0xa1, 0x1b, 0xe8, 0xd5, 0xc6, + 0xea, 0x1f, 0xf7, 0x38, 0xfb, 0x7e, 0x74, 0xf1, 0x1a, 0xaa, 0xa2, 0xa5, + 0xaf, 0xc4, 0xbe, 0x60, 0x44, 0xa0, 0x1e, 0xa4, 0xf7, 0x25, 0x75, 0x6, + 0x83, 0x88, 0x87, 0x7f, 0x79, 0x1b, 0x81, 0x7b, 0x91, 0x91, 0x77, 0x1f, + 0x90, 0x79, 0x76, 0x90, 0x75, 0x1b, 0x2f, 0x48, 0x50, 0x33, 0x1f, 0xfb, + 0x2e, 0xf7, 0x82, 0x91, 0x2f, 0x1a, 0x6d, 0x76, 0x67, 0x59, 0xfb, 0x3, + 0x73, 0xf4, 0xa6, 0x85, 0x1e, 0x6f, 0x6, 0x13, 0x78, 0xf7, 0xf, 0xf8, + 0xc, 0x35, 0xa, 0xd6, 0x4e, 0x1d, 0xd3, 0xf7, 0x15, 0x12, 0xf7, 0x68, + 0xf7, 0x15, 0x4c, 0xf7, 0x36, 0x79, 0xf7, 0x15, 0x13, 0xe8, 0x69, 0x1d, + 0x8d, 0xde, 0x1a, 0xf7, 0x42, 0x7, 0xf7, 0x4b, 0xf7, 0xc1, 0x9f, 0xab, + 0xb0, 0x62, 0xa, 0xb0, 0x89, 0x64, 0x1a, 0xfb, 0x2a, 0xfb, 0xa0, 0x5, + 0x42, 0x1d, 0x13, 0xf4, 0xa6, 0xf9, 0x9d, 0x2d, 0x1d, 0x8c, 0xa, 0xf7, + 0x82, 0x77, 0x1, 0xa7, 0xf8, 0xf2, 0x3, 0x39, 0xa, 0xf7, 0x97, 0xf9, + 0x66, 0x35, 0xa, 0x87, 0x1d, 0xe3, 0x83, 0x1d, 0xb1, 0xa5, 0x87, 0xa, + 0x6f, 0x8e, 0x1d, 0x61, 0x8b, 0x62, 0x8c, 0xf7, 0x7b, 0xf8, 0x27, 0x18, + 0xa5, 0xfc, 0x7, 0x7, 0x84, 0xfb, 0x22, 0x5, 0xa5, 0x6, 0xa5, 0xf7, + 0x1, 0xba, 0x8b, 0xf7, 0xa, 0x8c, 0xfb, 0x7e, 0xfc, 0x25, 0x18, 0xf7, + 0x2f, 0xf8, 0x88, 0x35, 0xa, 0xfb, 0x1a, 0x76, 0xf8, 0xb9, 0xb9, 0xf7, + 0x13, 0xf7, 0x1f, 0x6d, 0xa9, 0x12, 0x8b, 0xf7, 0x0, 0xd6, 0xf7, 0x1f, + 0x13, 0xdc, 0xd5, 0xf8, 0x1e, 0x15, 0xf7, 0x8, 0x6, 0x7e, 0xfc, 0x2a, + 0x5, 0x31, 0x88, 0x65, 0x74, 0x73, 0x1b, 0x7f, 0x81, 0x93, 0x92, 0x1f, + 0x98, 0x9d, 0x8d, 0xa5, 0x1a, 0xad, 0x70, 0x9a, 0x70, 0x76, 0x6a, 0x7e, + 0x5e, 0x6a, 0xa0, 0x5f, 0xd3, 0x1e, 0x13, 0x54, 0xf7, 0x1c, 0xc4, 0xf7, + 0x23, 0xf7, 0x25, 0x9d, 0x1f, 0x96, 0xe2, 0x8a, 0xc6, 0x93, 0xf7, 0x7, + 0x8, 0xf7, 0xe, 0xb9, 0xfb, 0xe, 0xe5, 0x6, 0xae, 0x8b, 0xf7, 0x3, + 0xcc, 0x9e, 0x8e, 0x7e, 0x89, 0x1e, 0x85, 0x79, 0x77, 0x76, 0x1a, 0x13, + 0xec, 0x6f, 0xa5, 0x78, 0xa8, 0xa8, 0xa2, 0xa7, 0xab, 0x1e, 0x13, 0x60, + 0x9a, 0x7d, 0xcb, 0x2a, 0xfb, 0x31, 0x73, 0xfb, 0x54, 0x41, 0x7f, 0x1e, + 0xfb, 0xc, 0x6, 0xe, 0xfb, 0xce, 0xf8, 0xb9, 0x83, 0x1d, 0x89, 0xf8, + 0xa4, 0x60, 0xa, 0xfb, 0xce, 0xf8, 0xb9, 0x83, 0x1d, 0xf7, 0xc, 0xf8, + 0xa4, 0x52, 0xa, 0x51, 0x6, 0xfb, 0x3, 0x28, 0xfb, 0x3, 0xee, 0x5, + 0x52, 0x6, 0xe, 0xfb, 0xce, 0xf8, 0xa4, 0xd7, 0x3f, 0xf7, 0x37, 0x12, + 0x13, 0x40, 0x9a, 0xf9, 0x47, 0x15, 0x21, 0xc5, 0x52, 0xe8, 0xec, 0xc2, + 0xca, 0xef, 0x1e, 0x5f, 0x6, 0x13, 0x80, 0x6c, 0x83, 0x7c, 0x53, 0x37, + 0x1b, 0x13, 0x40, 0x30, 0x7f, 0xc6, 0xa7, 0x86, 0x1f, 0xe, 0xfb, 0xce, + 0xf8, 0xad, 0xf7, 0x16, 0x1, 0xf2, 0xf7, 0x13, 0x3, 0xf2, 0xf8, 0xef, + 0x15, 0x66, 0xa6, 0x6e, 0xb0, 0xae, 0xa7, 0xa8, 0xb0, 0xb0, 0x6f, 0xa6, + 0x68, 0x67, 0x6f, 0x6f, 0x67, 0x1e, 0xe, 0xfb, 0xce, 0xf8, 0xa3, 0xf7, + 0x39, 0xfb, 0x9, 0xf7, 0x9, 0xfb, 0x9, 0xf7, 0x39, 0x12, 0xc7, 0xf7, + 0x3a, 0xfb, 0x9, 0xf7, 0x9, 0xfb, 0x9, 0xf7, 0x38, 0x13, 0x90, 0xc7, + 0x94, 0xa, 0x13, 0x24, 0xc5, 0xbb, 0xba, 0xc6, 0xc5, 0x5c, 0xbc, 0x51, + 0x1f, 0x13, 0x90, 0x51, 0x59, 0x5b, 0x50, 0x1f, 0x13, 0x48, 0xbc, 0x16, + 0x6b, 0xa6, 0x71, 0xab, 0xab, 0xa5, 0xa5, 0xab, 0xab, 0x71, 0xa6, 0x6b, + 0x6b, 0x70, 0x70, 0x6b, 0x1e, 0xe, 0xfb, 0xce, 0xfb, 0x41, 0xd0, 0xf7, + 0x28, 0x77, 0x1, 0xe5, 0xdf, 0x3, 0xf7, 0x31, 0xb7, 0x15, 0x5b, 0x5f, + 0x78, 0x5e, 0x5e, 0x1a, 0x46, 0xd2, 0x7d, 0xb3, 0xad, 0xc9, 0xa6, 0xbb, + 0xa1, 0x1e, 0x75, 0xa1, 0x5, 0x7d, 0x75, 0x7e, 0x7d, 0x74, 0x1b, 0x63, + 0x72, 0x9d, 0xba, 0xa4, 0x98, 0xb2, 0x8f, 0x9e, 0x1f, 0xe, 0xfb, 0xce, + 0xf8, 0xb7, 0xd9, 0x6e, 0xd9, 0x12, 0x13, 0x80, 0x7b, 0xf8, 0xb7, 0x15, + 0xb5, 0x6, 0x13, 0x40, 0x9d, 0x8c, 0x9b, 0xaa, 0xab, 0x1b, 0xb5, 0xa4, + 0x7b, 0x7e, 0xa3, 0x1f, 0x80, 0x9e, 0x9d, 0x82, 0xa4, 0x1b, 0x42, 0xa, + 0x74, 0x74, 0x92, 0x94, 0x75, 0x1f, 0x99, 0x68, 0x6c, 0x9e, 0x7a, 0x1b, + 0x2f, 0x78, 0x2f, 0x68, 0x84, 0x1f, 0xe, 0xfb, 0xce, 0xf8, 0xa4, 0xf7, + 0x4d, 0x1, 0x7e, 0xf8, 0xa4, 0x15, 0xc0, 0x6, 0xf7, 0x25, 0x23, 0xa, + 0xcc, 0xfb, 0x31, 0x15, 0xc1, 0x22, 0xa, 0xe, 0xf7, 0x49, 0xe5, 0x1, + 0xf7, 0x49, 0x4, 0xf8, 0x88, 0xca, 0xfc, 0x88, 0x6, 0xe, 0xf7, 0xf5, + 0xf7, 0x49, 0xe5, 0x1, 0xf7, 0x49, 0x4, 0xfa, 0x7c, 0xc9, 0xfe, 0x7c, + 0x6, 0xe, 0xfb, 0xce, 0xf8, 0xd, 0x83, 0xa, 0xd1, 0xcf, 0x47, 0xf7, + 0x4c, 0x13, 0xd0, 0xf7, 0x8b, 0xf9, 0x31, 0x15, 0x5b, 0xa, 0xa5, 0x4d, + 0xd4, 0xb9, 0xb2, 0xa9, 0xbf, 0xca, 0x5d, 0x9b, 0x6f, 0x1e, 0x13, 0xe0, + 0x68, 0xa, 0xe, 0xfb, 0xce, 0xf8, 0xd, 0x7b, 0xa, 0xec, 0xf7, 0xf8, + 0x15, 0x47, 0xa, 0xfb, 0xce, 0xfb, 0x33, 0x7b, 0xa, 0xe1, 0xfb, 0x32, + 0x15, 0x96, 0x75, 0x5, 0x47, 0xa, 0xf7, 0xf8, 0xf7, 0x35, 0xf7, 0x42, + 0x77, 0x12, 0xab, 0xcf, 0x47, 0xf7, 0x4c, 0xe1, 0xcf, 0x47, 0xf7, 0x4c, + 0x13, 0xd8, 0xf7, 0x65, 0xf9, 0x31, 0x15, 0x57, 0xa, 0x13, 0xe4, 0x68, + 0xa, 0xf7, 0xa2, 0x16, 0x57, 0xa, 0x13, 0xe8, 0x68, 0xa, 0xe, 0xf8, + 0xd, 0x68, 0x1d, 0xf7, 0xc2, 0xf7, 0xf8, 0x15, 0x5f, 0xa, 0x13, 0xe4, + 0x3f, 0x1d, 0xfb, 0x97, 0x75, 0x15, 0x5f, 0xa, 0x13, 0xd8, 0x3f, 0x1d, + 0xe, 0xfb, 0x33, 0x68, 0x1d, 0xf7, 0xb7, 0xfb, 0x32, 0x15, 0x56, 0xa, + 0x13, 0xe4, 0x3f, 0x1d, 0xfb, 0xa2, 0x16, 0x56, 0xa, 0x13, 0xd8, 0x3f, + 0x1d, 0xe, 0xfb, 0x5, 0x76, 0xf8, 0xae, 0xf5, 0xf7, 0x49, 0x77, 0x12, + 0xf7, 0x56, 0xf7, 0x5, 0x46, 0xa7, 0x13, 0xe8, 0xf7, 0x84, 0xfb, 0x1a, + 0x15, 0xa0, 0x6, 0x90, 0xf7, 0x2e, 0x90, 0xf7, 0x14, 0xb4, 0xf6, 0x91, + 0x98, 0x19, 0x8e, 0x91, 0x4d, 0xa6, 0x8d, 0xf7, 0x25, 0x8, 0xa8, 0xa0, + 0x83, 0x83, 0x9d, 0x1f, 0x7f, 0xa4, 0x9f, 0x7d, 0xa7, 0x1b, 0xaa, 0x9f, + 0xa8, 0xa7, 0xa4, 0x7c, 0xa3, 0x66, 0x71, 0x79, 0x7d, 0x7f, 0x6f, 0x1f, + 0x7a, 0x84, 0x76, 0x84, 0x6d, 0x87, 0x8a, 0xb3, 0x91, 0xa4, 0x93, 0x9f, + 0x8, 0x13, 0xf0, 0x99, 0xad, 0x9e, 0x9b, 0xb1, 0x1a, 0xbb, 0x5f, 0x8f, + 0x7e, 0x61, 0x7d, 0x6a, 0x71, 0x67, 0xa0, 0x84, 0x98, 0x62, 0x1e, 0x13, + 0xe8, 0x91, 0x78, 0x8f, 0x72, 0x65, 0x1a, 0x6d, 0x8d, 0x78, 0x92, 0x7b, + 0x92, 0x8, 0x98, 0x70, 0x7c, 0x9a, 0x6b, 0x1b, 0x66, 0x7c, 0x72, 0x72, + 0x6f, 0x9f, 0x6e, 0xaa, 0xae, 0x96, 0x9a, 0x98, 0xa8, 0x1f, 0x9a, 0x92, + 0x9f, 0x91, 0xa9, 0x8d, 0x8, 0xfb, 0x26, 0x53, 0x72, 0x8d, 0x85, 0x1e, + 0x8e, 0x83, 0xb7, 0xfb, 0x5, 0x8f, 0xfb, 0x14, 0x8, 0xe, 0xf7, 0x83, + 0x8a, 0x15, 0x87, 0x60, 0x63, 0x55, 0x63, 0x1a, 0x6b, 0xa1, 0x6f, 0xac, + 0xac, 0xa1, 0xa7, 0xab, 0xb3, 0x63, 0xc1, 0x87, 0xb6, 0x1e, 0x67, 0x1d, + 0x8e, 0xad, 0xa0, 0xa9, 0xa7, 0x9e, 0x8, 0x5c, 0xaf, 0x87, 0xb9, 0xbb, + 0x1a, 0xbb, 0x8f, 0xb9, 0xba, 0xaf, 0x1e, 0x6f, 0x9e, 0x76, 0xa9, 0x88, + 0xad, 0x8, 0x67, 0x1d, 0x8f, 0xb6, 0xb3, 0xc1, 0xb3, 0x1a, 0xab, 0x75, + 0xa7, 0x6a, 0x6a, 0x75, 0x6f, 0x6b, 0x63, 0xb3, 0x55, 0x8f, 0x60, 0x1e, + 0x67, 0xa, 0x88, 0x69, 0x76, 0x6d, 0x6f, 0x78, 0x8, 0xba, 0x67, 0x8f, + 0x5d, 0x5b, 0x1a, 0x5b, 0x87, 0x5d, 0x5c, 0x67, 0x1e, 0xa7, 0x78, 0xa0, + 0x6d, 0x8e, 0x69, 0x8, 0x67, 0xa, 0xe, 0xfb, 0xbd, 0xf7, 0x6f, 0x76, + 0xf7, 0xac, 0x77, 0x1, 0xae, 0xf7, 0xe6, 0x15, 0x3c, 0xcb, 0x4e, 0xd7, + 0xda, 0xc8, 0xc8, 0xda, 0xd8, 0x4e, 0xca, 0x3c, 0x3f, 0x4b, 0x4c, 0x3e, + 0x1e, 0xe, 0xf7, 0xf5, 0x7e, 0xf7, 0x3d, 0x1, 0xdd, 0xf7, 0x3d, 0xf7, + 0x38, 0xf7, 0x3d, 0xf7, 0x38, 0xf7, 0x3d, 0x14, 0x70, 0xdd, 0xd4, 0x15, + 0x4a, 0xa, 0xf7, 0xe1, 0x16, 0x4a, 0xa, 0xf7, 0xe1, 0x16, 0x4a, 0xa, + 0xe, 0xf7, 0xf5, 0x7d, 0xa3, 0x87, 0x76, 0xf7, 0xe1, 0xa3, 0x8a, 0x76, + 0xb8, 0x76, 0xf7, 0xc8, 0xa3, 0x8c, 0x77, 0x12, 0xa3, 0x97, 0xa, 0xa1, + 0x97, 0xa, 0xaf, 0x97, 0xa, 0x13, 0xad, 0xf8, 0xf7, 0xec, 0xf7, 0x38, + 0x15, 0x30, 0x1d, 0xf7, 0x70, 0x16, 0x30, 0x1d, 0x13, 0x9d, 0xf8, 0xfd, + 0x94, 0xf7, 0xe2, 0x15, 0x30, 0x1d, 0x13, 0x6b, 0xf8, 0x47, 0x76, 0x1d, + 0xfb, 0xce, 0x82, 0xa, 0x1, 0xbe, 0xf7, 0x75, 0x88, 0xa, 0x81, 0x95, + 0x9b, 0x7e, 0x96, 0x1b, 0x91, 0x90, 0x75, 0xa, 0x96, 0x85, 0x8e, 0x85, + 0x80, 0x79, 0x7e, 0x82, 0x81, 0x1e, 0xfb, 0x5f, 0xfb, 0x38, 0x5, 0xe, + 0xfb, 0xce, 0x82, 0xa, 0x1, 0xf7, 0x26, 0x91, 0xa, 0x80, 0x91, 0x88, + 0x91, 0x96, 0x9d, 0x99, 0x93, 0x95, 0x59, 0xa, 0x95, 0x81, 0x7b, 0x98, + 0x80, 0x1b, 0x84, 0x87, 0x86, 0x7e, 0x6d, 0xe6, 0x25, 0xa6, 0x62, 0x1f, + 0xe, 0xfc, 0x74, 0x94, 0x76, 0xf9, 0x50, 0x77, 0x1, 0xfb, 0x2, 0x7f, + 0x15, 0xf8, 0x4b, 0xf9, 0x50, 0x5, 0x53, 0x6, 0xfc, 0x4d, 0xfd, 0x50, + 0x5, 0xe, 0xd6, 0x8b, 0xe7, 0xf7, 0x3e, 0xb3, 0xe4, 0xb3, 0xe3, 0x76, + 0xf7, 0x34, 0xab, 0x1, 0xf6, 0xf7, 0x3b, 0x3, 0x94, 0xf7, 0x9a, 0x15, + 0xed, 0x6, 0xfb, 0x2a, 0x9a, 0xf7, 0x31, 0xfb, 0x4, 0xf7, 0x15, 0x1b, + 0xf7, 0xb, 0xf3, 0xc0, 0xe2, 0xc5, 0x1f, 0x77, 0x95, 0x5, 0x64, 0x51, + 0x4c, 0x78, 0x51, 0x1b, 0xfb, 0x6, 0x2c, 0xca, 0xf6, 0x84, 0x1f, 0xf7, + 0xb8, 0x6, 0x99, 0xb3, 0x5, 0xfb, 0xc7, 0x6, 0x8a, 0x9c, 0x8a, 0x9a, + 0x9a, 0x1a, 0x99, 0x8b, 0x98, 0x8d, 0x9a, 0x1e, 0xf7, 0xd9, 0x6, 0x9a, + 0xb3, 0x5, 0xfb, 0xe3, 0x6, 0xf7, 0x20, 0x98, 0xc0, 0xe2, 0xf5, 0x1b, + 0xf7, 0x11, 0xc8, 0x4a, 0x2c, 0x96, 0x1f, 0xa5, 0xf7, 0x26, 0x6, 0xa4, + 0x49, 0x4b, 0xa0, 0x23, 0x1b, 0xfb, 0x18, 0xfb, 0x1a, 0x75, 0xfb, 0x81, + 0x4d, 0x1f, 0x34, 0x6, 0x7c, 0x63, 0x5, 0xeb, 0x6, 0x8a, 0x7d, 0x8a, + 0x7c, 0x7d, 0x1a, 0x7c, 0x8b, 0x7c, 0x8c, 0x7b, 0x1e, 0x3b, 0x6, 0xe, + 0xf7, 0xf5, 0xf7, 0xa4, 0xac, 0x7e, 0x76, 0xf8, 0x8, 0xac, 0x73, 0xa3, + 0x12, 0xf7, 0x32, 0xe8, 0xf7, 0x8a, 0xa8, 0xf7, 0xc4, 0xe8, 0x13, 0x9e, + 0xf7, 0x0, 0xf7, 0xa4, 0x15, 0xf7, 0x56, 0xac, 0x6, 0x57, 0x8f, 0x8c, + 0x8f, 0xb3, 0x1a, 0xf7, 0xbf, 0xb9, 0x7, 0xb3, 0x9d, 0x6e, 0x68, 0x93, + 0x1f, 0xa2, 0xe3, 0xfb, 0xfe, 0x33, 0xa2, 0x6, 0xae, 0x93, 0x9c, 0xa8, + 0xb3, 0x1b, 0xb9, 0xfb, 0xbf, 0x6, 0x63, 0x8c, 0x87, 0x58, 0x87, 0x1e, + 0xf7, 0xe5, 0x6a, 0x15, 0xf7, 0x19, 0xac, 0x6, 0x5c, 0x8e, 0x86, 0x91, + 0xbd, 0x1a, 0xf7, 0x5b, 0x8d, 0x7, 0x13, 0x6e, 0xf7, 0x20, 0xfb, 0xb8, + 0x5, 0x98, 0x6, 0xf7, 0x27, 0xf7, 0xba, 0x5, 0x8d, 0xfb, 0x68, 0x6, + 0x13, 0xae, 0x63, 0x8d, 0x87, 0x57, 0x87, 0x1e, 0x6a, 0xf7, 0x56, 0xac, + 0x7, 0x57, 0x8f, 0x8c, 0x8f, 0xb3, 0x1a, 0xf7, 0x86, 0x7, 0xab, 0x92, + 0x99, 0xba, 0x8d, 0x1e, 0xac, 0xfb, 0xa, 0x7, 0xfb, 0x2b, 0xfb, 0xb5, + 0xfb, 0x22, 0xf7, 0xb5, 0x5, 0xfb, 0x1f, 0x6a, 0x6, 0xa8, 0xa6, 0x81, + 0x6b, 0x99, 0x1f, 0xfb, 0x81, 0x7, 0x59, 0x86, 0x85, 0x5c, 0x88, 0x1e, + 0xe, 0x3e, 0xf7, 0x65, 0xcb, 0x1, 0xac, 0xf7, 0x65, 0x15, 0xf8, 0x8c, + 0xcb, 0xfc, 0x8c, 0x6, 0xe, 0x30, 0x8b, 0xad, 0xf8, 0x13, 0xb7, 0xf7, + 0x5c, 0xa9, 0x12, 0xd2, 0xf7, 0x1f, 0xf7, 0x1e, 0xf7, 0x10, 0xfb, 0x10, + 0xf7, 0x1f, 0x13, 0xf8, 0x75, 0x1d, 0xf3, 0x7, 0xa9, 0x8f, 0x7e, 0x76, + 0x1f, 0xfb, 0xb8, 0x7, 0x73, 0x8a, 0x6e, 0x5d, 0x87, 0x6a, 0xa, 0x13, + 0xf4, 0x65, 0x8c, 0x80, 0x9f, 0xaf, 0x1a, 0xf8, 0x12, 0x7, 0x86, 0x56, + 0x49, 0x84, 0x57, 0x1b, 0x21, 0x6, 0xf7, 0x15, 0x88, 0xd2, 0xe0, 0xb7, + 0x9b, 0x78, 0x82, 0x1e, 0x87, 0x82, 0x7f, 0x73, 0x1a, 0x5c, 0xbc, 0x84, + 0x99, 0x1e, 0x13, 0xf8, 0x90, 0xc8, 0x8c, 0xc7, 0xdf, 0xfb, 0x3a, 0x92, + 0x7d, 0xfb, 0x6c, 0x87, 0xfb, 0x38, 0x49, 0x8a, 0x7a, 0xa, 0xe, 0x30, + 0xa0, 0x76, 0xf8, 0x35, 0xb7, 0xf7, 0x59, 0xac, 0x8a, 0x77, 0x12, 0xd2, + 0x53, 0xa, 0x13, 0xdc, 0x75, 0x1d, 0xf7, 0x1e, 0xfb, 0xda, 0x7, 0x78, + 0x8a, 0x6b, 0x5d, 0x85, 0x6a, 0xa, 0x59, 0x8f, 0x8c, 0xb6, 0x95, 0x1a, + 0xf8, 0xeb, 0x78, 0x7, 0x5c, 0x6d, 0x5, 0x13, 0xec, 0xaa, 0x47, 0x4e, + 0x8b, 0x87, 0x1b, 0xfb, 0x52, 0x72, 0xfb, 0x1a, 0x2b, 0x89, 0x7a, 0xa, + 0xf7, 0x58, 0xf8, 0x3f, 0x15, 0xc9, 0x7, 0xc6, 0x87, 0xd7, 0xdd, 0xae, + 0x9c, 0x84, 0x7b, 0x1e, 0x83, 0x7e, 0x79, 0x7d, 0x1a, 0x78, 0x97, 0x7c, + 0x94, 0x89, 0x1e, 0x29, 0x7, 0xe, 0x78, 0x9e, 0xf8, 0x61, 0x97, 0xf7, + 0x5f, 0x9a, 0x6, 0xf7, 0xa0, 0x92, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, + 0xc, 0x9, 0xb5, 0xa, 0xf7, 0x1d, 0xb, 0x8c, 0xc, 0xe, 0xf8, 0x88, + 0x14, 0xf9, 0x1b, 0x15, 0xaf, 0x13, 0x0, 0x7a, 0x2, 0x0, 0x1, 0x0, + 0x2d, 0x0, 0x6e, 0x0, 0x74, 0x0, 0x81, 0x0, 0x86, 0x0, 0xb2, 0x0, + 0xb5, 0x0, 0xcf, 0x0, 0xd4, 0x0, 0xe3, 0x0, 0xec, 0x0, 0xfa, 0x1, + 0x3, 0x1, 0xf, 0x1, 0x1a, 0x1, 0x40, 0x1, 0x58, 0x1, 0x66, 0x1, + 0x6e, 0x1, 0x73, 0x1, 0x84, 0x1, 0x92, 0x1, 0xa5, 0x1, 0xdc, 0x1, + 0xec, 0x2, 0x21, 0x2, 0x2c, 0x2, 0x38, 0x2, 0x46, 0x2, 0x4f, 0x2, + 0x5f, 0x2, 0x88, 0x2, 0xb0, 0x2, 0xbf, 0x2, 0xc4, 0x2, 0xcd, 0x2, + 0xd6, 0x2, 0xe0, 0x2, 0xf4, 0x2, 0xfb, 0x3, 0x9, 0x3, 0xe, 0x3, + 0x20, 0x3, 0x28, 0x3, 0x3b, 0x3, 0x47, 0x3, 0x4c, 0x3, 0x58, 0x3, + 0x60, 0x3, 0x6f, 0x3, 0x78, 0x3, 0x7f, 0x3, 0x85, 0x3, 0x9f, 0x3, + 0xac, 0x3, 0xbb, 0x3, 0xd4, 0x3, 0xe2, 0x3, 0xe7, 0x3, 0xf4, 0x3, + 0xf9, 0x4, 0x1, 0x4, 0x8, 0x4, 0x12, 0x4, 0x1a, 0x4, 0x1e, 0x4, + 0x27, 0x4, 0x30, 0x4, 0x36, 0x4, 0x3c, 0x4, 0x47, 0x4, 0x5b, 0x4, + 0x66, 0x4, 0x71, 0x4, 0x78, 0x4, 0x7f, 0x4, 0x91, 0x4, 0x9a, 0x4, + 0xac, 0x4, 0xb2, 0x4, 0xb8, 0x4, 0xc1, 0x4, 0xcb, 0x4, 0xdb, 0x4, + 0xdf, 0x4, 0xe8, 0x4, 0xf1, 0x4, 0xf6, 0x4, 0xfb, 0x5, 0x9, 0x5, + 0x17, 0x5, 0x1f, 0x5, 0x2c, 0x5, 0x39, 0x5, 0x3e, 0x5, 0x42, 0x5, + 0x4e, 0x5, 0x5a, 0x5, 0x60, 0x5, 0x66, 0x5, 0x71, 0x5, 0x7c, 0x5, + 0x87, 0x5, 0x92, 0x5, 0x99, 0x5, 0x9e, 0x5, 0xa2, 0x5, 0xa5, 0x5, + 0xaf, 0x5, 0xb9, 0x5, 0xc3, 0x5, 0xcd, 0x5, 0xd4, 0x5, 0xde, 0x5, + 0xe5, 0x5, 0xee, 0x5, 0xf7, 0x6, 0x0, 0x6, 0x9, 0x6, 0xf, 0x6, + 0x14, 0x6, 0x19, 0x9b, 0x9b, 0xaa, 0xa7, 0xd3, 0x1e, 0xf7, 0x75, 0x6, + 0x99, 0x6b, 0xab, 0x4b, 0x70, 0x1a, 0x6a, 0x79, 0x8a, 0x4d, 0x86, 0x1e, + 0x68, 0xf7, 0xd8, 0xae, 0x7, 0x5b, 0x89, 0x87, 0x95, 0x7e, 0xaa, 0xfb, + 0x9f, 0xf8, 0xfc, 0x18, 0x6f, 0x6, 0xfb, 0x8f, 0xfc, 0xf8, 0xb, 0x15, + 0xc3, 0x85, 0xa5, 0x96, 0x37, 0x1a, 0xfb, 0xe5, 0x7, 0xfb, 0x4d, 0xf7, + 0x30, 0x50, 0xf7, 0x1c, 0xf7, 0x36, 0xd2, 0xdd, 0xf7, 0x36, 0x1e, 0xf7, + 0xe5, 0x7, 0xcd, 0xa2, 0x90, 0x43, 0xa, 0x7d, 0x4e, 0x1a, 0xfb, 0xe5, + 0x7, 0x4b, 0x7e, 0xfb, 0x17, 0xfb, 0x44, 0xfb, 0x24, 0x96, 0xf7, 0x1e, + 0xc4, 0x1e, 0xf7, 0xe5, 0x7, 0xe3, 0xaa, 0x7f, 0xcd, 0x8e, 0x1e, 0xae, + 0xfb, 0xe6, 0x7, 0xb, 0x6, 0xf7, 0x22, 0x23, 0xa, 0xb, 0xe3, 0x5, + 0xa3, 0x9a, 0x9b, 0x95, 0xa7, 0x1a, 0xaf, 0x6c, 0x2c, 0xa, 0xb, 0x44, + 0x1d, 0x26, 0x1d, 0xb, 0xf7, 0x40, 0xf7, 0x79, 0x78, 0x1d, 0xee, 0xd5, + 0xc8, 0x9c, 0x50, 0x64, 0xa, 0x36, 0x46, 0x3b, 0x8b, 0xf3, 0xf7, 0x0, + 0x1e, 0xfb, 0x27, 0x16, 0xfb, 0x16, 0xe2, 0xfb, 0x5, 0x70, 0xa, 0xf7, + 0x2, 0x6f, 0xa, 0xf4, 0x70, 0x1d, 0xfb, 0x7, 0xfb, 0x15, 0x1e, 0xb, + 0x24, 0x1d, 0xe, 0x1, 0xf7, 0x5, 0x7f, 0x1d, 0x9f, 0x16, 0xf7, 0xf2, + 0xae, 0x6, 0x34, 0x1d, 0xfb, 0xf2, 0x68, 0x7, 0x4b, 0xa, 0x4d, 0x64, + 0x87, 0x55, 0x86, 0x1e, 0xb, 0x6b, 0x1d, 0x25, 0x1d, 0xb, 0x56, 0x1d, + 0xfb, 0x1d, 0xf7, 0x31, 0x5, 0x98, 0x80, 0x77, 0x9a, 0x76, 0x1b, 0x65, + 0xb, 0x23, 0x1d, 0xa1, 0x81, 0x97, 0x83, 0x95, 0x1e, 0xb, 0x2f, 0xa, + 0x9e, 0xbd, 0x9c, 0x8d, 0xa1, 0x8e, 0x19, 0x4d, 0x1d, 0x36, 0xa, 0xb, + 0x93, 0x79, 0x81, 0x78, 0x89, 0x71, 0x74, 0x1e, 0xb, 0x2c, 0x1d, 0xfb, + 0xa9, 0x7, 0x5b, 0x7a, 0x8b, 0x67, 0x82, 0x1e, 0xb, 0x5, 0xc4, 0x6, + 0xfb, 0xf, 0xf7, 0x44, 0x5, 0x2f, 0x6, 0xb, 0x72, 0x4f, 0x69, 0x1b, + 0x7f, 0x86, 0x97, 0x90, 0x1f, 0x8f, 0x8e, 0x90, 0x94, 0x1a, 0x9d, 0x80, + 0xac, 0x5e, 0x4f, 0x85, 0x58, 0x7d, 0x6b, 0xa6, 0x5d, 0xcc, 0xe9, 0xa0, + 0xc4, 0xf7, 0x19, 0xbd, 0x1e, 0xf7, 0x29, 0xf8, 0x17, 0xb, 0x48, 0xa, + 0xfb, 0x44, 0x78, 0xa, 0xfb, 0x7f, 0x3c, 0x1d, 0xf7, 0x25, 0x5e, 0xa, + 0xf7, 0x1d, 0x5e, 0x1d, 0xfb, 0x1d, 0xfb, 0x6e, 0x1e, 0xb, 0x7c, 0xa0, + 0x5, 0x6c, 0x6c, 0x80, 0xb1, 0x8f, 0x1a, 0xf7, 0x99, 0x7, 0xe9, 0xb, + 0x77, 0x1, 0x5d, 0x1d, 0x3, 0x25, 0xa, 0xb, 0x99, 0xa, 0x2d, 0xa, + 0xb, 0xfb, 0x7, 0x30, 0x2d, 0xfb, 0x28, 0xfb, 0x3f, 0xf1, 0x41, 0xf0, + 0xdb, 0xc4, 0xab, 0xe8, 0xc8, 0xb, 0x52, 0xa, 0x52, 0x6, 0xfb, 0x4, + 0x28, 0xfb, 0x4, 0xee, 0x5, 0x53, 0x6, 0xe, 0x3c, 0xfb, 0x77, 0x5, + 0x3a, 0xf7, 0x63, 0x80, 0x9b, 0x95, 0x1a, 0xa3, 0xa6, 0x8c, 0xa5, 0x8d, + 0x48, 0x1d, 0xb, 0xf8, 0x51, 0xfc, 0xb2, 0x5, 0xa7, 0xf8, 0xce, 0x6, + 0xbb, 0x91, 0xab, 0xd3, 0x94, 0x1e, 0xae, 0xfb, 0x6b, 0x68, 0x7, 0xdc, + 0x85, 0x97, 0x74, 0x4f, 0x1a, 0xfb, 0xc3, 0x89, 0x7, 0xfb, 0xef, 0xf8, + 0x3f, 0x5, 0xfb, 0x67, 0x72, 0x6, 0x98, 0x9b, 0x88, 0x46, 0xc3, 0x1f, + 0xfc, 0x64, 0x7, 0x49, 0x6f, 0x84, 0x4f, 0x84, 0x1e, 0xb, 0x63, 0x1a, + 0xfb, 0x8a, 0x7, 0x44, 0xad, 0x4a, 0xf1, 0xce, 0xb9, 0xb4, 0xa4, 0xa8, + 0x1e, 0xb, 0xa7, 0x16, 0xf8, 0xd8, 0x6, 0xa5, 0xf7, 0x85, 0x5, 0x67, + 0x6, 0x57, 0xfb, 0x66, 0x29, 0x8c, 0xfb, 0x73, 0x8e, 0xf8, 0xf, 0xf9, + 0x5, 0x18, 0x9b, 0xfc, 0xa0, 0x7, 0x76, 0xfb, 0x62, 0x5, 0xb1, 0x6, + 0x9d, 0xbe, 0x9d, 0xdd, 0xd6, 0xa2, 0xac, 0x95, 0x8b, 0x8b, 0xf7, 0x3d, + 0x90, 0xfc, 0x12, 0xfd, 0x5, 0x18, 0xb, 0xf7, 0x5f, 0xae, 0x6, 0x69, + 0x8d, 0x5b, 0x8e, 0xb1, 0x1a, 0xb, 0x9b, 0xb6, 0x9f, 0xaf, 0xd5, 0x85, + 0x55, 0x58, 0x1e, 0x53, 0x7, 0xb, 0xf8, 0xdd, 0x6, 0xb3, 0xf7, 0x64, + 0x5, 0x6f, 0x6, 0xfb, 0x2b, 0x4c, 0x25, 0xb, 0xcc, 0xf7, 0x12, 0x1a, + 0xbf, 0x6e, 0xc9, 0x42, 0xb, 0x5d, 0xa, 0xf7, 0x0, 0x98, 0x1d, 0xd0, + 0x8a, 0xa, 0x9b, 0x16, 0x99, 0xa, 0x2c, 0x1d, 0xb, 0xf8, 0xee, 0x15, + 0x72, 0x9f, 0x63, 0xb6, 0xb0, 0xa6, 0xa8, 0xae, 0xaf, 0x6e, 0xa9, 0x68, + 0x61, 0x76, 0x63, 0x72, 0x1e, 0xf7, 0x66, 0x16, 0x72, 0x9e, 0x63, 0xb6, + 0xb0, 0xa7, 0xa8, 0xae, 0xaf, 0x6d, 0xa9, 0x68, 0x61, 0x77, 0x63, 0x72, + 0x1e, 0xb, 0x15, 0xbc, 0x7b, 0xdc, 0x72, 0x3b, 0x1a, 0x5b, 0x6a, 0x7a, + 0x6b, 0x76, 0x7c, 0x9b, 0x9a, 0x7a, 0x1e, 0x99, 0x7b, 0x78, 0x99, 0x71, + 0x1b, 0x76, 0x85, 0x78, 0x7d, 0x77, 0x1a, 0x55, 0xe4, 0x8a, 0x94, 0xf7, + 0x9, 0xda, 0xd4, 0xdf, 0xb8, 0xb, 0x16, 0xf7, 0x85, 0xad, 0x6, 0x59, + 0x1d, 0xc1, 0x8c, 0x54, 0x6f, 0x1e, 0x4f, 0xa, 0xb, 0x44, 0xa, 0x54, + 0x1d, 0xb, 0xc2, 0x93, 0x1e, 0x5b, 0x1d, 0xe1, 0x87, 0x97, 0xb, 0xe4, + 0xa2, 0xe7, 0xae, 0x94, 0x1f, 0x60, 0x6, 0xb, 0xe2, 0x1e, 0xfb, 0x45, + 0x16, 0xfb, 0x66, 0xf7, 0x29, 0xb, 0x80, 0x7, 0xfb, 0x38, 0x4a, 0x5, + 0x76, 0x7, 0x93, 0xa1, 0xa1, 0x92, 0x95, 0x1b, 0xa4, 0x8b, 0x71, 0x7c, + 0x1f, 0xb, 0x5f, 0xa, 0x13, 0xd0, 0x3f, 0x1d, 0xe, 0xf7, 0x45, 0x3, + 0xf7, 0x68, 0xf7, 0xe4, 0x79, 0x1d, 0xf7, 0x44, 0x66, 0x1d, 0xb, 0x9b, + 0x16, 0x33, 0xa, 0xb, 0x5c, 0xaf, 0x64, 0xbb, 0xba, 0xb1, 0xb1, 0xbb, + 0xb9, 0x65, 0xb0, 0x5c, 0x5b, 0x67, 0x65, 0x5e, 0x1e, 0xb, 0xb9, 0x88, + 0xba, 0x89, 0x49, 0x7e, 0xa, 0xb, 0x59, 0xa, 0x94, 0x81, 0x7b, 0x99, + 0x80, 0x1b, 0x85, 0x86, 0x87, 0x7d, 0x6d, 0xe6, 0x25, 0xa6, 0x62, 0x1f, + 0xb, 0xf7, 0x38, 0xf7, 0xae, 0x15, 0xf7, 0x1e, 0xad, 0xa1, 0xb0, 0xdb, + 0xb, 0x56, 0x1d, 0xf7, 0x4, 0xb, 0xfb, 0x7c, 0x7, 0x66, 0x7d, 0x7a, + 0x6a, 0x88, 0x6a, 0xa, 0x5a, 0xb, 0x76, 0xf7, 0xbb, 0xf7, 0x54, 0x6b, + 0xab, 0xb, 0x9f, 0x8b, 0xaa, 0xf7, 0xbe, 0xad, 0xf7, 0x19, 0x76, 0xc5, + 0x76, 0xf7, 0x16, 0xad, 0xb, 0x15, 0xe7, 0x6, 0xf7, 0xf, 0xf7, 0x44, + 0x5, 0xb, 0xf7, 0x1f, 0xf7, 0x1e, 0xf7, 0x1f, 0xb, 0x8a, 0x1d, 0xf7, + 0x36, 0xb2, 0xb, 0xfb, 0x5a, 0xfb, 0x5a, 0xfb, 0x2a, 0xfb, 0x31, 0xfb, + 0x5b, 0x1e, 0xd2, 0x16, 0xf7, 0x39, 0xf7, 0xc, 0xf7, 0x1f, 0xf7, 0x31, + 0xf7, 0x31, 0xf7, 0xb, 0xb, 0x96, 0x75, 0x5, 0x43, 0x1d, 0x6e, 0x57, + 0x4c, 0xb9, 0x7a, 0xa7, 0x1e, 0xb, 0x5b, 0xa, 0xa8, 0x4d, 0xd4, 0xb9, + 0xaf, 0xa9, 0xbf, 0xca, 0x5d, 0x9b, 0x6f, 0x1e, 0xb, 0x1a, 0xf7, 0x34, + 0x7, 0x6a, 0xad, 0xa7, 0x70, 0xc3, 0x1b, 0xf1, 0xe5, 0xdc, 0xf7, 0x39, + 0xf7, 0x36, 0x28, 0xd9, 0x37, 0x3b, 0x6d, 0x5e, 0x6a, 0xb, 0x1e, 0xf7, + 0x5f, 0xf7, 0x38, 0x5, 0x8f, 0x7, 0xfb, 0x62, 0xf7, 0x3a, 0x5, 0xb, + 0x1, 0x5c, 0x1d, 0x3, 0xb, 0x80, 0xa1, 0x5, 0x56, 0x6d, 0xfb, 0x5, + 0x4a, 0xfb, 0x12, 0x1a, 0x57, 0xb, 0xfb, 0x96, 0x4e, 0x1d, 0xb, 0xfc, + 0x5, 0xa0, 0x76, 0xf8, 0x61, 0x77, 0xb, 0xf7, 0x66, 0xf7, 0x6e, 0xfb, + 0x35, 0xb, 0x43, 0x1d, 0x6d, 0x57, 0x4c, 0xb9, 0x7b, 0xa7, 0x1e, 0xb, + 0x4e, 0xa, 0xf1, 0xf7, 0x4, 0x25, 0x7e, 0x1d, 0xa8, 0x67, 0x67, 0xb, + 0x8f, 0x9e, 0x8e, 0x19, 0x5b, 0x1d, 0xba, 0x88, 0xb, 0x1, 0xed, 0xf7, + 0x33, 0xf7, 0xd6, 0xb7, 0x3, 0xb, 0xfb, 0x2e, 0xfb, 0x13, 0x83, 0xb, + 0x7d, 0xaa, 0xf8, 0x3d, 0xaa, 0xb, 0x7, 0xf7, 0x53, 0xf7, 0xc1, 0x9f, + 0xab, 0xa8, 0x62, 0xa, 0xb, 0x5d, 0x62, 0xb3, 0x5c, 0x1b, 0x72, 0x71, + 0x74, 0x70, 0x70, 0xa5, 0x74, 0xa4, 0x1f, 0xba, 0xb4, 0xb3, 0xb9, 0x1b, + 0xb, 0x77, 0x75, 0x84, 0xa6, 0xc3, 0xdc, 0xc4, 0xa7, 0x9e, 0x1f, 0xb, + 0x15, 0xc5, 0x6, 0xf8, 0x4b, 0xf9, 0x50, 0x5, 0x53, 0x6, 0xb, 0x1e, + 0x69, 0xf7, 0x7f, 0xad, 0x7, 0xb, 0xd6, 0x78, 0xbc, 0xf8, 0xf7, 0xae, + 0xb, 0x6f, 0xa1, 0x75, 0xa7, 0xa7, 0xa1, 0xa1, 0xa7, 0xa7, 0x75, 0xa1, + 0x6f, 0x6f, 0x75, 0x75, 0x6f, 0x1e, 0xb, 0x67, 0xa7, 0x81, 0x1d, 0x6f, + 0x6e, 0x67, 0x1e, 0xb, 0xb4, 0x6, 0x9c, 0xd3, 0xa6, 0xf7, 0xc, 0xa2, + 0x1a, 0xb6, 0x72, 0xa8, 0x63, 0x63, 0x73, 0x6e, 0x60, 0xb, 0xf7, 0x19, + 0xf7, 0x1f, 0x2d, 0xb, 0xf7, 0x1f, 0xf7, 0x1c, 0xe4, 0xb, 0x89, 0x1d, + 0x4a, 0x89, 0xa, 0x8c, 0x6b, 0x1d, 0xb, 0x77, 0x1, 0xf3, 0xf7, 0x36, + 0xf7, 0x2c, 0xaf, 0x3, 0xb, 0x8, 0xa6, 0x8c, 0x15, 0xf7, 0x19, 0xf7, + 0x3e, 0x5, 0x8d, 0xfb, 0x40, 0xfb, 0x1b, 0x6, 0xb, 0x6e, 0xaf, 0xaf, + 0xb, 0x90, 0x98, 0x77, 0x1d, 0xe3, 0xf6, 0xa8, 0x1a, 0xb, 0xf7, 0x7c, + 0x7, 0xf7, 0x2, 0x3c, 0xb3, 0x54, 0xb, 0xf7, 0x4c, 0x47, 0xcf, 0xb, + 0xfb, 0x26, 0x34, 0x85, 0xb, 0x66, 0x15, 0xf7, 0x90, 0x6, 0xc1, 0x88, + 0x7e, 0xf7, 0x42, 0xfb, 0x42, 0x1b, 0xb, 0x1f, 0x52, 0x5f, 0xc4, 0xfb, + 0xd7, 0x6, 0x57, 0x76, 0x88, 0x67, 0x86, 0x1e, 0xb, 0x83, 0xa, 0xda, + 0x77, 0xa, 0x13, 0xe0, 0xb, 0x30, 0xfb, 0x4c, 0x76, 0xf7, 0x54, 0xc2, + 0xf8, 0xa, 0x76, 0xa0, 0xc4, 0xb, 0xf8, 0x52, 0x76, 0xf7, 0x60, 0xac, + 0x88, 0x77, 0x12, 0xbc, 0xf7, 0x45, 0xb, 0x1a, 0xfc, 0x64, 0x7, 0xb, + 0x6d, 0x7d, 0x74, 0xb, 0x66, 0x15, 0xf7, 0x95, 0x6, 0xc1, 0x76, 0xf7, + 0x42, 0xfb, 0x42, 0xb, 0xf7, 0x6a, 0xf2, 0x15, 0xf7, 0x87, 0x7, 0x99, + 0xb2, 0xc3, 0xb8, 0xb, 0xc4, 0x76, 0xf8, 0xf, 0x77, 0xb, 0x76, 0xf7, + 0xe3, 0x77, 0x12, 0xb, 0xfb, 0x83, 0x33, 0x4b, 0xfb, 0x4, 0x5b, 0x82, + 0x9b, 0xb3, 0xb, 0xf7, 0x6d, 0x63, 0x7, 0x78, 0x86, 0x86, 0x7c, 0x74, + 0x1b, 0xb, 0x5c, 0xaf, 0x65, 0xbb, 0xba, 0xb1, 0xb0, 0xbb, 0xb9, 0x65, + 0xb, 0x3, 0xa0, 0x16, 0xf8, 0x13, 0x6, 0x9b, 0xf7, 0x34, 0x5, 0xb, + 0x15, 0xf7, 0x62, 0xfb, 0x3a, 0x5, 0xb, 0x7, 0xc4, 0x9e, 0x99, 0xb, + 0xf7, 0x1f, 0x3, 0xb, 0x84, 0x1e, 0xe, 0x9f, 0x8b, 0xae, 0xf8, 0x47, + 0x77, 0xf7, 0x53, 0xae, 0xb, 0xfb, 0x52, 0x69, 0x7, 0xbc, 0x8d, 0x5c, + 0x80, 0x1f, 0xb, 0x77, 0x12, 0xb7, 0xf7, 0x1, 0xf7, 0x85, 0xf7, 0xb, + 0xb, 0x74, 0x93, 0x95, 0x78, 0x1f, 0x99, 0x6f, 0x76, 0x9c, 0xb, 0xfb, + 0xce, 0xf8, 0xb9, 0x98, 0x1d, 0xb, 0xf7, 0x74, 0x15, 0x6d, 0x65, 0x33, + 0x20, 0x6e, 0x1a, 0xb, 0x7, 0x62, 0x81, 0x81, 0x5d, 0x8b, 0xa, 0xf7, + 0x3d, 0x1, 0xb4, 0xf7, 0x3d, 0x3, 0xb4, 0xb, 0xf9, 0xd, 0x15, 0x4f, + 0xbc, 0x5d, 0xc5, 0x1e, 0xb, 0x3e, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, + 0xaa, 0xb, 0xfb, 0x55, 0xfb, 0x35, 0xfb, 0x17, 0xfb, 0x6e, 0xb, 0xf7, + 0x6, 0xd1, 0xf7, 0x6, 0xb, 0x12, 0xa4, 0xf7, 0x1f, 0xb, 0xf7, 0x83, + 0xad, 0x6, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp b/core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp new file mode 100644 index 0000000000..159e535246 --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp @@ -0,0 +1,1737 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSerifBoldItalicFontData[20733] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x19, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x2d, 0x42, + 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, + 0x1, 0x29, 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, + 0x1e, 0x3, 0xf8, 0x14, 0x4, 0x7d, 0xc, 0x2, 0xfb, 0x5c, 0xfb, 0x8e, + 0xfa, 0x6e, 0xf9, 0xf9, 0x5, 0x1c, 0x6, 0xf6, 0xf, 0x1c, 0x8, 0x4d, + 0x11, 0xb7, 0x1c, 0x4a, 0x64, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, + 0x4a, 0x59, 0x45, 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, + 0x4f, 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x20, 0x49, 0x74, 0x61, + 0x6c, 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x65, 0x72, + 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x71, 0x2, 0x0, 0x1, 0x0, + 0xf, 0x0, 0x18, 0x0, 0x1d, 0x0, 0x30, 0x0, 0x43, 0x0, 0x50, 0x0, + 0x5a, 0x0, 0x61, 0x0, 0x6d, 0x0, 0x84, 0x0, 0x87, 0x0, 0xc2, 0x0, + 0xe0, 0x0, 0xe3, 0x0, 0xf7, 0x1, 0xa, 0x1, 0x17, 0x1, 0x1f, 0x1, + 0x32, 0x1, 0x39, 0x1, 0x4a, 0x1, 0x6f, 0x1, 0x76, 0x1, 0x89, 0x1, + 0xab, 0x1, 0xb8, 0x1, 0xed, 0x1, 0xf4, 0x1, 0xfe, 0x2, 0xe, 0x2, + 0x1e, 0x2, 0x26, 0x2, 0x35, 0x2, 0x47, 0x2, 0x59, 0x2, 0x5f, 0x2, + 0x6c, 0x2, 0x75, 0x2, 0x7e, 0x2, 0x8d, 0x2, 0x96, 0x2, 0xa4, 0x2, + 0xb2, 0x2, 0xbd, 0x2, 0xca, 0x2, 0xd3, 0x2, 0xdb, 0x2, 0xfb, 0x3, + 0x5, 0x3, 0xb, 0x3, 0x12, 0x3, 0x2e, 0x3, 0x36, 0x3, 0x3e, 0x3, + 0x44, 0x3, 0x4b, 0x3, 0x52, 0x3, 0x6c, 0x3, 0x7a, 0x3, 0x80, 0x3, + 0x84, 0x3, 0x8b, 0x3, 0xa1, 0x3, 0xa4, 0x3, 0xad, 0x3, 0xb9, 0x3, + 0xbf, 0x3, 0xd3, 0x3, 0xe7, 0x3, 0xee, 0x3, 0xf3, 0x4, 0x5, 0x4, + 0xd, 0x4, 0x12, 0x4, 0x23, 0x4, 0x30, 0x4, 0x34, 0x4, 0x39, 0x4, + 0x49, 0x4, 0x59, 0x4, 0x68, 0x4, 0x71, 0x4, 0x78, 0x4, 0x7e, 0x4, + 0x83, 0x4, 0x88, 0x4, 0x96, 0x4, 0xa3, 0x4, 0xaa, 0x4, 0xb7, 0x4, + 0xbf, 0x4, 0xc4, 0x4, 0xd0, 0x4, 0xd6, 0x4, 0xd9, 0x4, 0xdf, 0x4, + 0xea, 0x4, 0xf5, 0x4, 0xfd, 0x5, 0x2, 0x5, 0xc, 0x5, 0x16, 0x5, + 0x20, 0x5, 0x2a, 0x5, 0x2e, 0x5, 0x37, 0x5, 0x40, 0x5, 0x49, 0x5, + 0x4d, 0x5, 0x53, 0x5, 0x57, 0x5, 0x5d, 0x5, 0x62, 0x66, 0xa9, 0x6d, + 0xb0, 0xb0, 0xa9, 0xa9, 0x36, 0x1d, 0x6d, 0x6d, 0x66, 0x1e, 0xb, 0xe2, + 0x5, 0xa2, 0x98, 0x9b, 0x96, 0x25, 0x1d, 0xb, 0x15, 0xbc, 0x21, 0xa, + 0xb, 0x5c, 0x79, 0x9c, 0xa2, 0x90, 0x8d, 0x91, 0x8e, 0x90, 0x3f, 0xa, + 0x5c, 0x69, 0x85, 0x5e, 0x88, 0x2c, 0xa, 0xb, 0x15, 0xf7, 0x58, 0xae, + 0x6, 0x23, 0x1d, 0xf7, 0x78, 0xf7, 0x69, 0x15, 0xf7, 0x28, 0xf7, 0x87, + 0x74, 0x1d, 0xe, 0xa2, 0x1a, 0xab, 0x6f, 0x9a, 0x76, 0x75, 0x76, 0x74, + 0x70, 0x71, 0x1e, 0xb, 0xf7, 0x27, 0x5, 0x98, 0x80, 0x79, 0xa0, 0x30, + 0x1d, 0xb, 0x7b, 0xa, 0xfb, 0x3, 0x26, 0x1d, 0xb, 0x44, 0xa, 0xfb, + 0x3, 0x8e, 0x7a, 0x4a, 0x6f, 0xa, 0x27, 0xa, 0xb, 0x15, 0xc9, 0x8b, + 0x60, 0x6b, 0x1f, 0x5d, 0x2e, 0xfb, 0xa5, 0x38, 0xa, 0xcd, 0xf7, 0x78, + 0xb3, 0xf7, 0x1f, 0x97, 0x84, 0x55, 0xa, 0xb, 0x27, 0x1d, 0xe, 0x15, + 0x43, 0xb2, 0x51, 0xd7, 0xf7, 0x6, 0xd9, 0xf7, 0xf, 0xf3, 0xd6, 0x63, + 0xc3, 0x3d, 0xfb, 0x0, 0x3a, 0xfb, 0xe, 0x21, 0x1e, 0xf7, 0x9, 0xe3, + 0x15, 0xac, 0x95, 0xa0, 0xdc, 0xb6, 0x1b, 0xa4, 0x92, 0x74, 0x76, 0x6b, + 0x6f, 0x32, 0x81, 0x69, 0x1f, 0x6c, 0x82, 0x79, 0x3f, 0x61, 0x1b, 0x75, + 0x81, 0x9e, 0x9e, 0xac, 0xa2, 0xe2, 0x95, 0xad, 0x1f, 0xb, 0xf7, 0xb2, + 0xf7, 0x2f, 0x15, 0x8d, 0x8a, 0x5, 0x81, 0x6d, 0x7f, 0x69, 0x60, 0x1a, + 0x53, 0xbf, 0x8b, 0x9a, 0xdf, 0xc3, 0xea, 0xad, 0x9e, 0x1e, 0x76, 0x98, + 0x5, 0x7f, 0x8d, 0xb, 0x2b, 0xa, 0xe, 0x83, 0x6e, 0x86, 0x79, 0x7b, + 0x1a, 0x57, 0xbb, 0x7d, 0x9e, 0xc8, 0xc4, 0xd5, 0xbf, 0xac, 0x1e, 0x76, + 0x9a, 0x5, 0xb, 0xfb, 0x5a, 0xfb, 0x27, 0x6a, 0x95, 0x2a, 0xee, 0xde, + 0xbe, 0xde, 0xb7, 0xa5, 0x1f, 0xfb, 0x26, 0x8c, 0x15, 0xb, 0x70, 0x1b, + 0x70, 0x79, 0x73, 0x76, 0x76, 0xa0, 0x7a, 0x98, 0x82, 0x1f, 0xb, 0x40, + 0x1d, 0x83, 0x96, 0x89, 0x43, 0xa, 0xb, 0xab, 0xc8, 0xf7, 0x67, 0xb2, + 0xf7, 0x23, 0x1f, 0x47, 0x7b, 0x2d, 0x82, 0x63, 0x88, 0x8, 0x70, 0x7, + 0xa8, 0xb, 0x65, 0x1d, 0xf7, 0x71, 0x25, 0xa, 0xb, 0x74, 0x3d, 0xfb, + 0x8e, 0x5f, 0x1a, 0x73, 0x96, 0x60, 0xc5, 0xd5, 0xb5, 0xc5, 0xd9, 0xbe, + 0x1e, 0xb, 0xf7, 0x85, 0xf7, 0x5, 0x15, 0x70, 0xf7, 0x2f, 0x6b, 0xf7, + 0x27, 0x78, 0xba, 0x66, 0x81, 0x55, 0x82, 0x51, 0x86, 0x8, 0x70, 0x7, + 0xb2, 0x95, 0x8b, 0xfb, 0x2c, 0xad, 0x1f, 0x93, 0x67, 0xb0, 0xfb, 0x48, + 0x5a, 0x1a, 0xb, 0xb0, 0xb0, 0x6d, 0xa9, 0x66, 0x66, 0xb, 0xf8, 0xbe, + 0x6, 0xc6, 0xf7, 0x56, 0x72, 0x90, 0x5, 0xfb, 0x12, 0x46, 0xfb, 0x4, + 0x62, 0xfb, 0xc, 0x1b, 0xb, 0x1b, 0x63, 0x7e, 0x66, 0x79, 0x70, 0xa1, + 0x6a, 0xb0, 0xee, 0xe3, 0xeb, 0xf7, 0x3d, 0xf1, 0x1f, 0x94, 0x9a, 0xf7, + 0x15, 0xf7, 0x64, 0xf7, 0x9, 0x1a, 0xac, 0x6d, 0xa8, 0x6a, 0x6b, 0x73, + 0x6c, 0x72, 0xb, 0x83, 0xba, 0x2b, 0xf8, 0xe4, 0x18, 0x72, 0x6, 0xfc, + 0x8, 0xfc, 0xe4, 0xb, 0xf7, 0x3f, 0xf7, 0x2d, 0x15, 0xe7, 0xe2, 0xf8, + 0x28, 0xf7, 0x4c, 0xf3, 0x8c, 0x20, 0x76, 0xfb, 0x8, 0x2d, 0xfc, 0x19, + 0xfb, 0x46, 0x50, 0x5e, 0xb0, 0x55, 0x1d, 0xd2, 0xfb, 0x17, 0xf7, 0x3b, + 0xf7, 0x8d, 0xf7, 0x45, 0xf7, 0x9b, 0xf7, 0x56, 0xf7, 0x42, 0xfb, 0x19, + 0xd1, 0x5d, 0x1d, 0xfb, 0x78, 0xfb, 0x89, 0x1e, 0xb, 0x5, 0xbe, 0x6, + 0x35, 0x4e, 0xa, 0xb, 0x6c, 0x1d, 0x53, 0x55, 0x73, 0x1b, 0x85, 0x32, + 0xa, 0xb, 0x1b, 0xe2, 0xa1, 0xdf, 0xae, 0x94, 0x1f, 0x62, 0x6, 0x78, + 0x82, 0x81, 0x74, 0x69, 0x1b, 0xb, 0x1f, 0xdd, 0xf7, 0xb6, 0x9c, 0xcb, + 0xa5, 0x90, 0xbe, 0x8e, 0x19, 0xae, 0xfb, 0xcb, 0x7, 0xb, 0x1b, 0x85, + 0x88, 0x90, 0x94, 0x28, 0x1d, 0xb, 0x3c, 0x41, 0x1f, 0xa6, 0x86, 0xb6, + 0xf7, 0x52, 0x5, 0xfc, 0xb0, 0x68, 0x6, 0xc9, 0xb, 0x71, 0x9e, 0x61, + 0xba, 0xb2, 0xa9, 0xa9, 0xaf, 0xb0, 0x6c, 0xaa, 0x65, 0x5e, 0x76, 0x61, + 0x73, 0x1e, 0xb, 0x65, 0xa8, 0x6e, 0xb1, 0xb1, 0xa9, 0xa8, 0xb1, 0xb1, + 0x6d, 0xa9, 0x65, 0x65, 0x6e, 0x6d, 0x65, 0x1e, 0xb, 0x15, 0x62, 0xa9, + 0x45, 0x1d, 0xb, 0xe9, 0xf7, 0xc8, 0x7d, 0x8a, 0x21, 0x74, 0x32, 0x87, + 0x6d, 0xa, 0xad, 0xb, 0x6a, 0xb7, 0xb4, 0xac, 0xab, 0xb5, 0xb4, 0x6a, + 0xb, 0x15, 0x42, 0x1d, 0xf7, 0x68, 0x16, 0x42, 0x1d, 0xe, 0x89, 0x7f, + 0x1f, 0xfb, 0x14, 0xfc, 0x5e, 0x7b, 0x52, 0x76, 0x82, 0x60, 0x85, 0x19, + 0xb, 0x1f, 0xd0, 0xf7, 0x9, 0x5, 0xf7, 0x6b, 0x6, 0xb, 0xf7, 0x77, + 0x70, 0xa, 0x8e, 0x88, 0x90, 0x9d, 0xb6, 0xb4, 0x9b, 0x4a, 0xa, 0xb, + 0x1f, 0x51, 0xfb, 0x65, 0x5, 0x21, 0x6e, 0x64, 0xfb, 0x1e, 0xfb, 0x23, + 0x1b, 0xb, 0x65, 0xfb, 0x32, 0xfb, 0x15, 0xfb, 0x3c, 0xfb, 0x2e, 0x1e, + 0xb, 0x15, 0xdd, 0x6, 0xf7, 0x36, 0xf7, 0x42, 0x5, 0x53, 0x6, 0xfb, + 0x1b, 0xb, 0x1, 0xf7, 0x6c, 0xf7, 0x21, 0x15, 0x72, 0x88, 0xb, 0x88, + 0xf7, 0xb, 0xf7, 0x62, 0xf7, 0xb, 0xb, 0x2a, 0x7d, 0x71, 0x92, 0xab, + 0x1f, 0x7f, 0x57, 0x15, 0x7b, 0xaa, 0x98, 0x85, 0xa4, 0x1b, 0xf7, 0x22, + 0xf7, 0x1a, 0xf7, 0x56, 0xf7, 0x2f, 0xe7, 0x58, 0xad, 0x4f, 0x60, 0x54, + 0x70, 0x3c, 0xb, 0xf7, 0x21, 0xf7, 0x4a, 0x15, 0xf7, 0x55, 0xa9, 0xcb, + 0xb, 0x56, 0xa, 0xf8, 0x47, 0x77, 0xb, 0x1, 0x4e, 0x1d, 0x3, 0xf7, + 0x8, 0xb, 0x58, 0x8b, 0xab, 0xf8, 0xee, 0xae, 0x1, 0x75, 0x16, 0xf8, + 0xbd, 0x6, 0xc6, 0xf7, 0x56, 0x73, 0x90, 0x5, 0xfb, 0x11, 0x46, 0xfb, + 0x4, 0x61, 0xfb, 0xc, 0x1b, 0xb, 0x1b, 0x29, 0x78, 0xfb, 0x8, 0x89, + 0x1f, 0xe, 0xef, 0x1e, 0xfb, 0x24, 0xc4, 0x15, 0x2a, 0xb, 0xb1, 0x90, + 0x19, 0x61, 0xa, 0xb, 0x19, 0xae, 0xfb, 0x64, 0x68, 0x7, 0xb, 0x7e, + 0xd2, 0x58, 0x76, 0xf8, 0x46, 0xb, 0x1, 0xf7, 0xd5, 0xf7, 0x11, 0x3, + 0xf7, 0x5, 0xc8, 0x15, 0xa4, 0xbd, 0xf7, 0x42, 0xa2, 0xbb, 0x1e, 0xb1, + 0x9d, 0xb1, 0xb8, 0xb2, 0x1b, 0xa1, 0x9d, 0xb, 0x77, 0x1, 0xf7, 0x77, + 0xf9, 0x67, 0x5b, 0xa, 0xea, 0xe3, 0x2c, 0x3b, 0x1d, 0xb, 0x58, 0x1d, + 0xb0, 0x90, 0x77, 0xb, 0x77, 0x52, 0x1d, 0xb, 0xfb, 0x1, 0xfb, 0x6f, + 0xfb, 0x5f, 0xb, 0x15, 0xf7, 0x82, 0x6, 0xbe, 0xf7, 0x6, 0x5, 0x7b, + 0x6, 0x69, 0x75, 0x7b, 0x80, 0x57, 0x1b, 0x34, 0x8d, 0x6, 0xf7, 0xf, + 0xb, 0x26, 0x1d, 0xe, 0x4c, 0x1d, 0x26, 0x30, 0xf0, 0x5, 0x59, 0x6, + 0xe, 0x15, 0xc5, 0x6, 0xf8, 0x47, 0xf9, 0x48, 0x5, 0x8d, 0x51, 0x7, + 0xb, 0xf7, 0x19, 0x1a, 0xdb, 0x50, 0xb, 0xce, 0xaa, 0x97, 0xad, 0xa4, + 0x1a, 0xc3, 0x54, 0xa5, 0x61, 0x47, 0x62, 0x62, 0x64, 0x71, 0x1e, 0x99, + 0x7e, 0x5, 0xb, 0x1f, 0x3b, 0xfb, 0xb3, 0xfb, 0x6b, 0xf8, 0x65, 0x5, + 0xfb, 0x57, 0x68, 0x6, 0xc0, 0x86, 0x96, 0x8f, 0x9e, 0x5f, 0xb, 0xc7, + 0x79, 0xad, 0xf9, 0xd, 0xad, 0xb, 0xfc, 0x14, 0x97, 0x76, 0xb, 0x1f, + 0xb1, 0x70, 0x7e, 0x94, 0x79, 0x1b, 0x73, 0x7e, 0x79, 0x70, 0x84, 0x90, + 0x64, 0xdd, 0xf0, 0xe4, 0xb, 0xfb, 0x6e, 0x7e, 0xcb, 0xf8, 0xe, 0xac, + 0xb, 0xf8, 0x1a, 0x62, 0xa, 0xb, 0x1e, 0xae, 0xfb, 0xaf, 0x68, 0x7, + 0xbb, 0x84, 0x92, 0x8a, 0x9d, 0x54, 0xe3, 0xfb, 0x96, 0x18, 0xb, 0x19, + 0xf7, 0x78, 0xf7, 0x69, 0x15, 0xf7, 0x28, 0xf7, 0x87, 0x74, 0x1d, 0xe, + 0x77, 0x4d, 0x1d, 0xb, 0xf7, 0x30, 0x35, 0xe1, 0xb, 0xef, 0xf7, 0xde, + 0x5e, 0x82, 0x66, 0x83, 0x2c, 0x7d, 0x19, 0x89, 0x76, 0x5, 0xa8, 0xb3, + 0xb, 0x15, 0xcb, 0xf7, 0x83, 0x5, 0xa0, 0x8f, 0x91, 0xa2, 0xb2, 0x1b, + 0xe0, 0x8b, 0x23, 0x76, 0xb, 0xa7, 0x88, 0x5, 0xa3, 0x94, 0x98, 0xb0, + 0xb4, 0x1b, 0xf7, 0x25, 0x6, 0xfb, 0xb8, 0xb, 0x15, 0xc1, 0x54, 0xc4, + 0x51, 0xbc, 0x56, 0x8, 0xb, 0xc0, 0x76, 0xf8, 0x13, 0x77, 0x1, 0xb, + 0x9b, 0xb5, 0x1b, 0xf7, 0x51, 0xb, 0xb0, 0xfb, 0x87, 0x5, 0xb, 0xf7, + 0xbc, 0xae, 0x6, 0xb, 0x4a, 0xc1, 0x8b, 0x9b, 0xd9, 0xba, 0xd8, 0xc1, + 0xab, 0x1e, 0x75, 0x98, 0x5, 0xb, 0x7d, 0x4e, 0x83, 0x41, 0x83, 0x6d, + 0xa, 0xad, 0x8c, 0xa8, 0x8b, 0x69, 0xb, 0x28, 0x30, 0xee, 0x5, 0x59, + 0x6, 0xe, 0xfb, 0x6e, 0xfb, 0x61, 0xf7, 0x7, 0xf7, 0x5f, 0x77, 0xf8, + 0x5, 0x77, 0xb, 0x1a, 0xc3, 0xee, 0xbe, 0x9e, 0x95, 0x1e, 0xb, 0xf7, + 0x0, 0xa5, 0xa1, 0xb, 0x1a, 0x86, 0x8b, 0x85, 0x89, 0x85, 0x1e, 0xfb, + 0x19, 0xfc, 0x65, 0xb, 0x45, 0x1d, 0xac, 0x62, 0x60, 0xb, 0x3b, 0x1d, + 0xe, 0xfb, 0xdd, 0xf8, 0xad, 0x76, 0xb, 0x5, 0xb4, 0x96, 0xab, 0x88, + 0x9a, 0x1b, 0xf7, 0x35, 0x8c, 0xb, 0x1f, 0xab, 0x85, 0xbe, 0xf7, 0x7e, + 0x5, 0x6d, 0x6, 0x7b, 0xb, 0x6d, 0xa, 0xac, 0xa9, 0x8d, 0x68, 0x1f, + 0xe, 0xf7, 0xb, 0x40, 0xd6, 0xb, 0x69, 0xa9, 0x79, 0xa6, 0xb1, 0xa4, + 0xa6, 0xb8, 0xb7, 0xb, 0x77, 0x12, 0xf1, 0xf7, 0xd, 0xf7, 0x10, 0xf7, + 0xd, 0xb, 0xe3, 0x8b, 0xf7, 0x29, 0xfb, 0x22, 0x76, 0xf1, 0xc8, 0xb, + 0xfb, 0x61, 0xb0, 0xf7, 0x2f, 0xae, 0xf8, 0x5, 0xd2, 0xb, 0x1b, 0x85, + 0x87, 0xb, 0x21, 0x97, 0x76, 0xa9, 0x76, 0xf8, 0x1a, 0xd3, 0xb, 0x83, + 0x93, 0x1b, 0x90, 0x8f, 0x8f, 0x97, 0x1f, 0xb, 0xc7, 0x8b, 0xae, 0x6e, + 0x76, 0xf9, 0x1d, 0xae, 0xb, 0x83, 0x1d, 0x12, 0xb, 0x76, 0xf9, 0x53, + 0x77, 0x1, 0xb, 0x15, 0x75, 0x1d, 0xb, 0x7e, 0xa8, 0xf8, 0x33, 0xa8, + 0xb, 0xa5, 0xaf, 0xa1, 0xa4, 0xb, 0x1, 0x0, 0x1, 0x6, 0x0, 0x68, + 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, 0x67, + 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, + 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, + 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, + 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, + 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, + 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, + 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, + 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, + 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, + 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, + 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, + 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, + 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, + 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, + 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, + 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, + 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, + 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, + 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x0, 0x91, 0x0, 0x0, 0x8c, + 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x94, 0x0, 0x0, 0xc0, + 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, 0x65, + 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, + 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x86, 0x0, 0x0, 0x6f, + 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, 0x8, 0x0, 0x0, 0x75, + 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x76, 0x0, 0x0, 0x70, + 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, 0x6b, 0x1, 0x0, 0x63, + 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, 0x0, 0x0, 0xa6, 0x0, 0x0, 0x6d, + 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, 0x7, 0x0, 0x5e, + 0x0, 0x9d, 0x1, 0x14, 0x1, 0xa9, 0x1, 0xe3, 0x2, 0xb8, 0x2, 0xe4, + 0x3, 0x17, 0x3, 0x49, 0x4, 0x25, 0x4, 0x51, 0x4, 0x80, 0x4, 0x96, + 0x4, 0xa4, 0x4, 0xb9, 0x5, 0x3, 0x5, 0x44, 0x5, 0x9a, 0x6, 0x2, + 0x6, 0x47, 0x6, 0x98, 0x7, 0x2, 0x7, 0x2e, 0x7, 0xae, 0x8, 0xe, + 0x8, 0x3a, 0x8, 0x8b, 0x8, 0xaf, 0x8, 0xd1, 0x8, 0xf2, 0x9, 0x57, + 0xa, 0x11, 0xa, 0x3b, 0xa, 0xc1, 0xb, 0x17, 0xb, 0x57, 0xb, 0x76, + 0xb, 0xd9, 0xc, 0x5a, 0xc, 0xda, 0xd, 0x15, 0xd, 0x74, 0xd, 0xed, + 0xe, 0x14, 0xe, 0x94, 0xe, 0xd1, 0xf, 0x14, 0xf, 0x6c, 0x10, 0x7, + 0x10, 0x7e, 0x10, 0xff, 0x11, 0x41, 0x11, 0x8c, 0x11, 0xdb, 0x12, 0x59, + 0x12, 0xd5, 0x13, 0x19, 0x13, 0x1f, 0x13, 0x4d, 0x13, 0x64, 0x13, 0x95, + 0x13, 0xb6, 0x13, 0xc2, 0x13, 0xe4, 0x14, 0x1c, 0x14, 0x6d, 0x14, 0xbc, + 0x15, 0x38, 0x15, 0x70, 0x15, 0xee, 0x16, 0x9b, 0x16, 0xff, 0x17, 0x1e, + 0x17, 0x72, 0x17, 0xd0, 0x18, 0x0, 0x18, 0xa0, 0x18, 0xd3, 0x19, 0x10, + 0x19, 0x45, 0x19, 0xb2, 0x19, 0xfd, 0x1a, 0x64, 0x1a, 0xab, 0x1a, 0xd9, + 0x1b, 0x2d, 0x1b, 0xa5, 0x1c, 0x31, 0x1c, 0x53, 0x1c, 0x97, 0x1c, 0xf5, + 0x1d, 0x10, 0x1d, 0x6a, 0x1d, 0xb5, 0x1e, 0x3, 0x1e, 0x79, 0x1f, 0x31, + 0x1f, 0xa7, 0x20, 0x30, 0x20, 0x5f, 0x21, 0x28, 0x21, 0x42, 0x21, 0xdf, + 0x22, 0x4d, 0x22, 0x81, 0x22, 0xa0, 0x23, 0x55, 0x23, 0x69, 0x23, 0x9c, + 0x23, 0xdb, 0x23, 0xff, 0x24, 0x32, 0x24, 0x44, 0x24, 0xc7, 0x25, 0x10, + 0x25, 0x20, 0x25, 0x57, 0x25, 0x90, 0x25, 0xca, 0x25, 0xf4, 0x26, 0x2e, + 0x26, 0x79, 0x26, 0xd3, 0x27, 0x34, 0x27, 0x51, 0x27, 0x63, 0x27, 0x6f, + 0x27, 0xcc, 0x27, 0xf5, 0x28, 0x20, 0x28, 0xc6, 0x29, 0x5d, 0x29, 0x9b, + 0x29, 0xdf, 0x2a, 0x7, 0x2a, 0x36, 0x2a, 0x58, 0x2a, 0x87, 0x2a, 0xab, + 0x2a, 0xd1, 0x2b, 0x29, 0x2b, 0x84, 0x2b, 0x8c, 0x2b, 0x94, 0x2b, 0xa5, + 0x2b, 0xd2, 0x2b, 0xf5, 0x2c, 0x25, 0x2c, 0xa4, 0x2c, 0xcc, 0x2c, 0xf7, + 0x2d, 0x24, 0x2d, 0x59, 0x2d, 0x9f, 0x2e, 0x13, 0x2e, 0xb5, 0x2e, 0xde, + 0x2e, 0xf5, 0x2f, 0xb, 0x2f, 0x45, 0x2f, 0x67, 0x2f, 0xd1, 0x30, 0x8a, + 0x31, 0xe, 0x31, 0x1b, 0x31, 0x24, 0x31, 0x3c, 0x31, 0x5f, 0x31, 0x6e, + 0x31, 0x82, 0x31, 0xa2, 0x31, 0xcb, 0x32, 0x31, 0x32, 0x85, 0x32, 0x94, + 0x32, 0xba, 0x32, 0xc7, 0x32, 0xf4, 0x33, 0x15, 0x33, 0x47, 0x33, 0xbe, + 0x33, 0xdc, 0x33, 0xf0, 0x34, 0x6, 0x34, 0x22, 0x34, 0x4d, 0x34, 0x7f, + 0x34, 0xbb, 0x34, 0xc2, 0x35, 0x4, 0x35, 0x50, 0x36, 0x3, 0x36, 0x9a, + 0x37, 0x2f, 0x37, 0x9c, 0x38, 0xb, 0x38, 0x19, 0x38, 0x65, 0x38, 0xee, + 0x38, 0xfe, 0x39, 0xa, 0x39, 0x35, 0x39, 0x49, 0x39, 0x70, 0x39, 0xa3, + 0x39, 0xf1, 0x3a, 0x9, 0x3a, 0x1a, 0x3a, 0x2c, 0x3a, 0x59, 0x3a, 0x7f, + 0x3a, 0xa9, 0x3a, 0xe2, 0x3b, 0x1b, 0x3b, 0x5b, 0x3b, 0xfb, 0x3c, 0xdb, + 0x3c, 0xfc, 0x3d, 0x34, 0x3d, 0x67, 0x3d, 0x7c, 0x3d, 0x90, 0x3d, 0xaa, + 0x3e, 0x30, 0x3e, 0xd6, 0x3e, 0xe8, 0x3f, 0x9b, 0x40, 0x47, 0xfc, 0x30, + 0xe, 0xfc, 0x30, 0xe, 0xfb, 0xa5, 0x72, 0xf7, 0x24, 0xfb, 0x18, 0xf7, + 0x24, 0xf8, 0xb0, 0x77, 0xac, 0x77, 0x12, 0xce, 0xf7, 0x28, 0x13, 0xa8, + 0xf7, 0x3b, 0xf7, 0x68, 0x15, 0xa8, 0x83, 0xd2, 0xf7, 0x39, 0xd8, 0xf7, + 0x2f, 0x97, 0xa9, 0x19, 0x93, 0xa0, 0x91, 0xa0, 0x9d, 0x1a, 0x13, 0x98, + 0xb4, 0x71, 0xa8, 0x6b, 0x50, 0x6b, 0x38, 0x61, 0x85, 0x1e, 0x7a, 0xfb, + 0x7, 0x80, 0xfb, 0x15, 0x77, 0x24, 0x8, 0x27, 0xfb, 0x2f, 0x15, 0x13, + 0x68, 0x64, 0xa8, 0x6c, 0xb7, 0xb8, 0xa9, 0xad, 0xaf, 0xb1, 0x6a, 0xaf, + 0x60, 0x6a, 0x64, 0x70, 0x5c, 0x1e, 0xe, 0x20, 0xf8, 0x37, 0x76, 0xf7, + 0xb3, 0x77, 0x1, 0xf7, 0x1c, 0xf8, 0x22, 0x15, 0xb3, 0x6, 0xde, 0xf7, + 0x4e, 0x5, 0x91, 0x99, 0x90, 0x9f, 0x9e, 0x1a, 0xa4, 0x7e, 0xa2, 0x66, + 0x65, 0x70, 0x68, 0x65, 0x88, 0x1e, 0xf7, 0x90, 0xfb, 0x6a, 0x15, 0xb1, + 0x6, 0xe0, 0xf7, 0x4e, 0x5, 0x91, 0x98, 0x8e, 0x9d, 0x9c, 0x1a, 0xa6, + 0x7b, 0xa5, 0x6b, 0x65, 0x70, 0x68, 0x65, 0x88, 0x1e, 0xe, 0xa0, 0x76, + 0xf7, 0x66, 0xca, 0x4c, 0xd4, 0xf7, 0x1a, 0xd4, 0x4c, 0xca, 0xf7, 0x66, + 0x77, 0x12, 0x13, 0xb4, 0x75, 0x16, 0xe0, 0xf7, 0x66, 0x5, 0x2b, 0x6, + 0x9f, 0xca, 0x5, 0xf1, 0x6, 0xcb, 0xf7, 0x2e, 0x5, 0x25, 0x6, 0x9f, + 0xca, 0x5, 0xf7, 0x3, 0x6, 0xdc, 0xf7, 0x66, 0x5, 0xd0, 0x6, 0x3b, + 0xfb, 0x66, 0x5, 0xf7, 0x14, 0x6, 0xdc, 0xf7, 0x66, 0x5, 0xd1, 0x6, + 0x3b, 0xfb, 0x66, 0x5, 0xdd, 0x6, 0x77, 0x4c, 0x5, 0x30, 0x6, 0x13, + 0xcc, 0x4b, 0xfb, 0x2e, 0x5, 0xe6, 0x6, 0x77, 0x4c, 0x5, 0x2a, 0x6, + 0x36, 0xfb, 0x66, 0x5, 0x44, 0x6, 0xe0, 0xf7, 0x66, 0x5, 0xfb, 0x14, + 0x6, 0x36, 0xfb, 0x66, 0x5, 0xf7, 0x3, 0xf7, 0xa5, 0x15, 0xf7, 0x14, + 0x6, 0xcb, 0xf7, 0x2e, 0x5, 0xfb, 0x14, 0x6, 0xe, 0x3c, 0x76, 0xf0, + 0xaa, 0xf8, 0xf1, 0xac, 0xca, 0x77, 0x1, 0xda, 0xee, 0xf7, 0x25, 0xf7, + 0x1, 0x3, 0xf7, 0x13, 0x92, 0x15, 0x62, 0x96, 0x62, 0x93, 0x4a, 0xc7, + 0xb5, 0xf7, 0x22, 0x18, 0xa1, 0x85, 0x8e, 0x2e, 0x98, 0x57, 0xd8, 0x68, + 0x19, 0xd5, 0xf7, 0x99, 0x5, 0x20, 0xd8, 0x72, 0xdd, 0xc7, 0x1a, 0xe7, + 0xcf, 0xc3, 0xf7, 0x19, 0x96, 0x94, 0x8a, 0x8a, 0x98, 0x1e, 0x9d, 0xcc, + 0x5, 0xbd, 0x6, 0x77, 0x43, 0xb5, 0x86, 0xcc, 0x69, 0xa8, 0x73, 0x19, + 0x61, 0xfb, 0x19, 0x76, 0x90, 0x8e, 0xb8, 0x8d, 0xe1, 0x33, 0xa3, 0x19, + 0x50, 0xfb, 0x79, 0x5, 0xdb, 0x46, 0xc7, 0x46, 0x32, 0x1a, 0xfb, 0x1, + 0x22, 0x50, 0xfb, 0x29, 0x1e, 0x6f, 0x26, 0x5, 0x57, 0x6, 0xf7, 0x2a, + 0xf8, 0x9e, 0x15, 0xc2, 0xf7, 0x69, 0x5, 0x8e, 0x84, 0x8d, 0x8a, 0x7c, + 0x1b, 0x45, 0x68, 0x48, 0x5b, 0x68, 0x9a, 0x71, 0xc2, 0x64, 0x1f, 0x4d, + 0xfc, 0x1a, 0x15, 0xe2, 0xbd, 0xc5, 0xda, 0xc6, 0x68, 0x9c, 0x68, 0xa8, + 0x1f, 0xe, 0xf7, 0x3f, 0x7d, 0xa5, 0x85, 0x76, 0xf7, 0xe3, 0xa1, 0xf7, + 0xc8, 0xa5, 0x8c, 0x77, 0x12, 0xf7, 0x0, 0xdf, 0xf7, 0x20, 0xdf, 0xc9, + 0xdf, 0xf7, 0x20, 0xdf, 0x13, 0xb7, 0x80, 0xf8, 0xe4, 0x7d, 0x3b, 0xa, + 0xfc, 0x9, 0xf7, 0xc8, 0x3b, 0xa, 0x13, 0x6f, 0x80, 0xf8, 0xba, 0xf7, + 0xdf, 0x15, 0x4f, 0x6, 0xfc, 0xe9, 0xfd, 0x48, 0x5, 0xc7, 0x6, 0xe, + 0xf7, 0x8, 0x79, 0xd1, 0x45, 0xdc, 0x4e, 0x76, 0xca, 0xaf, 0xc0, 0xaf, + 0xf8, 0x74, 0xac, 0x12, 0xa5, 0xf7, 0x19, 0xd6, 0xf7, 0xd, 0xf7, 0xe, + 0xdb, 0x75, 0xa1, 0x13, 0x3f, 0x80, 0xf8, 0x1a, 0xb7, 0x15, 0x13, 0x4f, + 0x80, 0x73, 0xa3, 0xb6, 0x65, 0xd4, 0x1b, 0x13, 0x3f, 0x80, 0xe3, 0xb9, + 0xc4, 0xb4, 0xae, 0x1f, 0x71, 0xa0, 0x5, 0x13, 0x4f, 0x40, 0x70, 0x7f, + 0x75, 0x80, 0x72, 0x1b, 0x5c, 0x52, 0xac, 0xb0, 0x73, 0x1f, 0xe3, 0xf7, + 0xa, 0x8a, 0x81, 0xa3, 0xa6, 0xb4, 0xba, 0x9b, 0x8e, 0xb0, 0x93, 0x8, + 0xae, 0xfb, 0x68, 0x68, 0x7, 0xa6, 0x86, 0xa8, 0x89, 0x6a, 0x1a, 0x68, + 0x61, 0x61, 0x6b, 0x63, 0x1e, 0x6e, 0xb5, 0x5c, 0xf3, 0x81, 0xdc, 0x8, + 0xb8, 0x9e, 0xf7, 0x1d, 0xc0, 0xf0, 0x1a, 0xc2, 0x5d, 0xc5, 0x2e, 0xfb, + 0xb, 0x4a, 0x2b, 0xfb, 0x2, 0x6a, 0x91, 0x6b, 0x90, 0x70, 0x1e, 0xfb, + 0x5, 0x4d, 0xfb, 0x13, 0x75, 0xfb, 0x24, 0x1a, 0x13, 0x3f, 0x80, 0xfb, + 0x30, 0xf7, 0x23, 0x78, 0xb7, 0xb8, 0xd9, 0x92, 0xc3, 0xd6, 0x1e, 0x6f, + 0xaf, 0x15, 0x13, 0x8f, 0x80, 0x80, 0x74, 0x6c, 0x7a, 0x60, 0x1b, 0x30, + 0x67, 0xdd, 0xc0, 0xe8, 0xc3, 0xac, 0xc6, 0xa9, 0x1f, 0x13, 0x3f, 0x80, + 0xab, 0xfb, 0x21, 0xb8, 0x43, 0xab, 0x59, 0x8, 0x8f, 0xf7, 0xf6, 0x15, + 0x84, 0xb6, 0x87, 0xa5, 0xa3, 0x1a, 0xc8, 0x92, 0xc8, 0xc3, 0xb4, 0x9d, + 0x5b, 0x6b, 0x66, 0x78, 0x59, 0x2f, 0x5b, 0x1e, 0xe, 0xfc, 0x14, 0xf8, + 0x37, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0xf7, 0x21, 0xf7, 0xb, 0x3, 0xf7, + 0x3b, 0xf8, 0x22, 0x15, 0xe4, 0xf7, 0x4e, 0x5, 0x92, 0x98, 0x90, 0x9c, + 0x9e, 0x1a, 0xa6, 0x7f, 0xa4, 0x64, 0x64, 0x71, 0x69, 0x64, 0x88, 0x1e, + 0x76, 0xfb, 0x6a, 0x5, 0xe, 0x84, 0xa, 0xa7, 0xe9, 0x3, 0xf7, 0x3e, + 0xfb, 0x47, 0x15, 0xa2, 0x9a, 0x5, 0x70, 0xbb, 0x5f, 0xf7, 0x26, 0xf7, + 0x15, 0x1a, 0xf7, 0xd0, 0xf7, 0x26, 0xf7, 0xe, 0xd7, 0xcf, 0x1e, 0x79, + 0x9f, 0x5, 0xfb, 0x9f, 0xfb, 0x4c, 0x6c, 0xfb, 0x6a, 0xfb, 0x14, 0x1a, + 0xfb, 0x51, 0xf0, 0x2f, 0xb4, 0x52, 0x1e, 0xe, 0x84, 0xa, 0xf7, 0x45, + 0xe9, 0x3, 0x5f, 0xfb, 0x33, 0x15, 0xf7, 0x1f, 0xf7, 0x1c, 0xdd, 0xf7, + 0x2, 0xf7, 0x65, 0x1a, 0xdf, 0x82, 0xf7, 0x57, 0x4c, 0xea, 0x1e, 0xa2, + 0x9a, 0x5, 0xdf, 0x22, 0xc6, 0xfb, 0x19, 0xfb, 0x2b, 0x1a, 0xfb, 0x5e, + 0xfb, 0xb, 0xfb, 0x30, 0xfb, 0x47, 0xfb, 0x9, 0x1e, 0xe, 0xf7, 0xa2, + 0x76, 0xdf, 0xf7, 0x0, 0xc1, 0xf5, 0xdf, 0x77, 0x1, 0xf7, 0x69, 0xee, + 0xe9, 0xbd, 0x3, 0xf7, 0x87, 0xf8, 0x54, 0x15, 0x6e, 0x78, 0x7c, 0x77, + 0x7c, 0x7a, 0x8, 0x76, 0x7b, 0x77, 0x65, 0x6b, 0x1b, 0x72, 0x72, 0x9b, + 0xaa, 0xbc, 0xaa, 0x92, 0xc7, 0x8e, 0x1f, 0xab, 0x8e, 0xaa, 0x8e, 0x9a, + 0x9e, 0x8, 0x94, 0x7, 0x7b, 0x96, 0x63, 0x94, 0x72, 0x8e, 0x8, 0x57, + 0x93, 0x66, 0x87, 0xbd, 0x1a, 0xa7, 0x97, 0xa2, 0xb6, 0xa7, 0x98, 0x6f, + 0x71, 0xa0, 0x1e, 0xa4, 0x6c, 0xa4, 0x70, 0x98, 0x8a, 0x92, 0x90, 0x18, + 0xb4, 0x81, 0xa0, 0x80, 0x9e, 0x1e, 0x80, 0x9e, 0x82, 0x9a, 0xa3, 0x1a, + 0xa3, 0x97, 0xa8, 0xb0, 0xa7, 0xa0, 0x75, 0x6c, 0x74, 0x82, 0x7d, 0x80, + 0x78, 0x1e, 0x80, 0x78, 0x82, 0x75, 0x60, 0x1a, 0x97, 0x86, 0xaa, 0xa0, + 0x99, 0x9f, 0x9b, 0xa2, 0x19, 0xa8, 0x9f, 0x96, 0xa0, 0xac, 0x1b, 0xae, + 0x9a, 0x6c, 0x7b, 0x5b, 0x5c, 0x83, 0x5e, 0x88, 0x1f, 0x70, 0x8a, 0x6e, + 0x85, 0x76, 0x7b, 0x8, 0x81, 0x7, 0x9c, 0x7f, 0xa1, 0x84, 0xaf, 0x88, + 0x8, 0xb7, 0x88, 0xbd, 0x7d, 0x63, 0x1a, 0x5f, 0x5e, 0x86, 0x86, 0x6c, + 0x7f, 0xa0, 0xb0, 0x70, 0x1e, 0x78, 0xa4, 0x7f, 0x9d, 0x70, 0x98, 0x83, + 0x85, 0x18, 0x68, 0x93, 0x76, 0x93, 0x78, 0x1e, 0x97, 0x70, 0x95, 0x7e, + 0x73, 0x1a, 0x6f, 0x7b, 0x71, 0x6c, 0x72, 0x72, 0x99, 0xb4, 0x8a, 0x1e, + 0x8a, 0xa2, 0x99, 0x9a, 0x96, 0xa2, 0x8, 0x94, 0x9e, 0x95, 0xa3, 0xaf, + 0x1a, 0xe, 0x2f, 0xa0, 0x76, 0xf7, 0x70, 0xcc, 0xf7, 0x71, 0x77, 0x12, + 0xf7, 0x83, 0xe5, 0x3b, 0xcb, 0x13, 0xf0, 0xac, 0xf7, 0x70, 0x15, 0x13, + 0xe8, 0xf7, 0x6c, 0xfb, 0x70, 0xcb, 0xf7, 0x70, 0xf7, 0x74, 0xcc, 0xfb, + 0x74, 0xf7, 0x71, 0x4b, 0xfb, 0x71, 0xfb, 0x6c, 0x6, 0xe, 0xfc, 0x30, + 0xfb, 0x35, 0x62, 0xa, 0x7f, 0x6d, 0x1d, 0x13, 0xd0, 0x4f, 0x81, 0xa, + 0xdf, 0x62, 0x1d, 0x9a, 0x70, 0x1e, 0x13, 0xe0, 0x62, 0x6e, 0x6c, 0x61, + 0x6d, 0x9a, 0x7d, 0x9b, 0x7f, 0x1f, 0x13, 0xd0, 0x9e, 0x7e, 0x9f, 0x81, + 0x75, 0x1a, 0x53, 0x28, 0x57, 0x78, 0x81, 0x1e, 0xe, 0xfb, 0xdd, 0xf7, + 0x3a, 0xf7, 0x8, 0x1, 0x8d, 0xf7, 0x3a, 0x15, 0xf7, 0x88, 0x6, 0xa4, + 0xf7, 0x8, 0x5, 0xfb, 0x87, 0x6, 0xe, 0xfc, 0x30, 0x7e, 0xf7, 0x28, + 0x1, 0x82, 0xf7, 0x28, 0x3, 0x82, 0xc8, 0x3c, 0xa, 0xfc, 0x14, 0x8e, + 0x8d, 0x1d, 0x8d, 0x79, 0x15, 0xf7, 0xe8, 0xf9, 0x53, 0x5, 0x45, 0x6, + 0xfb, 0xe4, 0xfd, 0x53, 0x5, 0xe, 0x7d, 0xa8, 0xf9, 0x13, 0xa8, 0x1, + 0xf8, 0xa, 0xf2, 0x3, 0x9c, 0xf7, 0x63, 0x15, 0x30, 0xa4, 0xfb, 0x16, + 0xf7, 0x13, 0xf7, 0x38, 0xf7, 0x24, 0xf7, 0x82, 0xf7, 0x7e, 0xf7, 0x15, + 0x4b, 0xeb, 0x32, 0xfb, 0x47, 0xfb, 0x14, 0xfb, 0xa2, 0xfb, 0x62, 0x1e, + 0xf7, 0x4c, 0xf7, 0x81, 0x15, 0xd5, 0xa2, 0xb6, 0xf7, 0x1c, 0xc4, 0x1b, + 0xb0, 0x98, 0x6b, 0x5a, 0x47, 0x32, 0xfc, 0x7e, 0xfb, 0x8, 0xfb, 0xb, + 0xf7, 0x25, 0xf8, 0x2d, 0x9f, 0x91, 0x1f, 0xe, 0x8b, 0xac, 0xf9, 0x1e, + 0x77, 0x1, 0x90, 0x16, 0xf7, 0xed, 0xac, 0x6, 0x53, 0x60, 0x8e, 0xa9, + 0x8f, 0x8c, 0x8f, 0x8c, 0x90, 0x1f, 0xf7, 0x3a, 0xf8, 0xf0, 0x49, 0x7b, + 0x52, 0x7d, 0xfb, 0x27, 0x75, 0x19, 0x89, 0x74, 0x5, 0x8e, 0x9f, 0xa6, + 0x8d, 0x9f, 0x1b, 0x93, 0xae, 0x8a, 0x74, 0x88, 0x8b, 0x87, 0x8a, 0x87, + 0x1f, 0xfb, 0x18, 0xfc, 0x87, 0x80, 0x61, 0x4c, 0x88, 0x5e, 0x8a, 0x19, + 0xe, 0x8b, 0xf7, 0x3, 0xdb, 0x77, 0xf8, 0x3a, 0xe5, 0x1, 0xf7, 0xcc, + 0xf7, 0x1a, 0x3, 0x70, 0x16, 0xf8, 0x3, 0x6, 0xda, 0xf7, 0x53, 0x5, + 0x72, 0x6, 0x4d, 0x69, 0x73, 0x79, 0x3a, 0x1b, 0xfb, 0x29, 0x6, 0xf7, + 0x58, 0xf7, 0x3b, 0x5, 0xcf, 0xc5, 0xd7, 0xd5, 0xda, 0x1a, 0xf7, 0x11, + 0x51, 0xd0, 0x22, 0xfb, 0x11, 0x49, 0x22, 0x50, 0x6f, 0x1e, 0xa1, 0x7f, + 0x5, 0xa0, 0x99, 0xb6, 0xcc, 0xd7, 0x1b, 0xe8, 0x8b, 0x36, 0x78, 0x3e, + 0x59, 0x3f, 0x52, 0x45, 0x1f, 0x5a, 0x50, 0x8b, 0x8b, 0xfb, 0x4b, 0xfb, + 0x4b, 0x8, 0xe, 0x7e, 0xb3, 0xeb, 0x77, 0xf8, 0x91, 0xd2, 0x12, 0xf7, + 0xb1, 0xf7, 0xf, 0x34, 0xf7, 0x15, 0x13, 0xf0, 0xf7, 0x14, 0xf7, 0xef, + 0x15, 0xef, 0xc4, 0x66, 0x27, 0x2e, 0x58, 0x31, 0x51, 0x68, 0x76, 0xa4, + 0xa4, 0x77, 0x1f, 0xa2, 0x78, 0x7b, 0xa2, 0x74, 0x1b, 0x7a, 0x63, 0x84, + 0x56, 0x80, 0x92, 0x4a, 0xf7, 0x14, 0xf7, 0x30, 0xf7, 0x18, 0xec, 0xf7, + 0x12, 0xf0, 0x6a, 0xc1, 0x5f, 0xab, 0x1f, 0x13, 0xe8, 0xf1, 0xbe, 0x9c, + 0xb7, 0xb5, 0x1a, 0xe7, 0x3a, 0xc4, 0x4a, 0x23, 0x4c, 0x46, 0x4b, 0x63, + 0x1e, 0xa0, 0x7e, 0x5, 0xae, 0xa6, 0xa6, 0xb3, 0xcb, 0x1b, 0xc9, 0xa2, + 0x65, 0x63, 0xfb, 0x9, 0xfb, 0x25, 0x63, 0x5f, 0x83, 0x1f, 0xe, 0xa0, + 0x76, 0xf7, 0x2a, 0xed, 0xf8, 0x47, 0x77, 0x1, 0xf7, 0x50, 0xf7, 0x14, + 0xf7, 0xd, 0xcd, 0x3, 0xf7, 0x79, 0xf7, 0x2a, 0x15, 0x62, 0xfb, 0x2a, + 0x5, 0xf7, 0x14, 0x6, 0xb5, 0xf7, 0x2a, 0x5, 0xcf, 0x6, 0xa6, 0xed, + 0x5, 0x46, 0x6, 0xf7, 0xb, 0xf8, 0x47, 0x5, 0x49, 0x6, 0xfc, 0x3c, + 0xfc, 0x40, 0x6f, 0x22, 0x5, 0xf7, 0xef, 0xf8, 0xb, 0x15, 0x8d, 0x89, + 0x3d, 0xfb, 0xa7, 0x5, 0xfb, 0x5f, 0x6, 0xe, 0x7e, 0xb3, 0x63, 0xf7, + 0x1c, 0xf7, 0x8d, 0xf7, 0x4, 0xd7, 0xf7, 0x1, 0x12, 0xf7, 0xc7, 0xf4, + 0x13, 0xb8, 0xd4, 0xf8, 0x8, 0x15, 0xf7, 0x2a, 0xdf, 0x38, 0x25, 0x40, + 0x52, 0x36, 0x3d, 0x6d, 0x7f, 0xa6, 0xa4, 0x7b, 0x1f, 0x13, 0x78, 0xa2, + 0x7d, 0x7a, 0xa0, 0x68, 0x1b, 0x6f, 0x6c, 0x7b, 0x5f, 0x6d, 0xac, 0x5d, + 0xeb, 0xf7, 0x29, 0xf7, 0x25, 0xed, 0xf7, 0x3c, 0xe6, 0x22, 0xf7, 0x20, + 0xfb, 0x24, 0x1f, 0xad, 0xd7, 0x5, 0xf7, 0x92, 0x6, 0xaf, 0xf7, 0x1, + 0x5, 0xfb, 0xaf, 0x6, 0xe, 0x7c, 0xab, 0xf8, 0x1, 0xb2, 0xf7, 0x96, + 0x77, 0x1, 0xa2, 0xf7, 0x4, 0xf7, 0x34, 0xf7, 0x10, 0x3, 0xf7, 0x7b, + 0xf8, 0x2d, 0x15, 0xbb, 0xee, 0xdd, 0xe8, 0xf7, 0x28, 0xc1, 0x85, 0xa3, + 0x18, 0xfb, 0xdd, 0x5b, 0xfb, 0x2b, 0xfb, 0x8c, 0xfb, 0x4a, 0x1a, 0x3f, + 0x9f, 0xfb, 0x20, 0xf7, 0x32, 0xf7, 0xf, 0xf7, 0xb, 0xf7, 0x1, 0xf7, + 0x30, 0xf7, 0x10, 0x4b, 0xba, 0x4a, 0x6e, 0x6d, 0x88, 0x82, 0x73, 0x1e, + 0x2b, 0xfb, 0xce, 0x15, 0xc7, 0xa1, 0xd8, 0xa0, 0xc6, 0x1e, 0xde, 0xab, + 0x8d, 0x93, 0xb7, 0x1b, 0xca, 0x8b, 0x58, 0x77, 0x3f, 0x59, 0xfb, 0x1c, + 0x88, 0x80, 0x1f, 0x5c, 0x79, 0x72, 0x73, 0x6c, 0x1b, 0x53, 0x8a, 0xc0, + 0xa4, 0x1f, 0xe, 0xa0, 0x76, 0xf8, 0xc0, 0xf7, 0x5, 0x1, 0xde, 0xf8, + 0x68, 0x3, 0xf7, 0x24, 0x16, 0xf8, 0x11, 0xf9, 0x31, 0x5, 0xfc, 0x11, + 0x6, 0x34, 0xfb, 0x52, 0x5, 0xa5, 0x6, 0xc8, 0xae, 0xa3, 0x9b, 0xf7, + 0x1, 0x1b, 0xf7, 0xf, 0x6, 0xfb, 0xd6, 0xfc, 0xc0, 0x5, 0xe, 0x7e, + 0xa9, 0xf9, 0xd, 0xac, 0x12, 0x8e, 0xec, 0x94, 0xf7, 0x3, 0xe1, 0xf7, + 0x5, 0x67, 0xe8, 0x13, 0xf8, 0xf7, 0x4b, 0xf7, 0xe8, 0x15, 0x59, 0x7a, + 0xfb, 0x16, 0x5e, 0xfb, 0x14, 0x1a, 0x6b, 0x9b, 0xfb, 0x17, 0xf7, 0x49, + 0xf7, 0x9, 0xf1, 0xdd, 0xf7, 0x11, 0xe5, 0x50, 0xca, 0x70, 0xa8, 0x1e, + 0x90, 0x7, 0x13, 0xf4, 0xd8, 0xaa, 0xcd, 0xb6, 0xe2, 0x1a, 0xf7, 0x1, + 0xfb, 0xc, 0xab, 0x55, 0xfb, 0x2, 0x38, 0x39, 0x43, 0x3e, 0xb4, 0x43, + 0xac, 0x68, 0x1e, 0xa5, 0x73, 0x15, 0x13, 0xf8, 0xd7, 0x31, 0xa0, 0x71, + 0x4f, 0x1a, 0x4c, 0x65, 0x4a, 0x47, 0x39, 0x79, 0xd7, 0xb7, 0xea, 0xbe, + 0xbd, 0xc5, 0xb2, 0x1e, 0xf0, 0xdd, 0x15, 0x5b, 0xb8, 0x61, 0xb7, 0xc8, + 0x1a, 0xb5, 0xa2, 0xc2, 0xc6, 0x1e, 0x13, 0xf4, 0xba, 0xad, 0x65, 0x45, + 0x4b, 0x65, 0x65, 0x68, 0x66, 0x1f, 0xe, 0x96, 0x76, 0xf7, 0x93, 0x77, + 0xf8, 0x3e, 0xab, 0x1, 0xf7, 0x45, 0xf7, 0xf8, 0x15, 0xa0, 0x9e, 0xf7, + 0x1c, 0xaf, 0xd1, 0x1e, 0xb2, 0x9f, 0xa6, 0xa8, 0xad, 0x1b, 0xbe, 0x8a, + 0x5c, 0x6e, 0x88, 0x88, 0x2e, 0x63, 0x25, 0x1f, 0x37, 0x6b, 0x7c, 0x86, + 0x6c, 0x1b, 0x7c, 0x59, 0x8c, 0xce, 0x1f, 0xfb, 0x4b, 0xfc, 0x2, 0x15, + 0xf7, 0xfc, 0xbe, 0xf7, 0xd, 0xf7, 0xa7, 0xf7, 0x2a, 0x1a, 0xf7, 0x18, + 0x57, 0xe0, 0xfb, 0x2, 0xfb, 0x41, 0x34, 0xfb, 0x2f, 0xfb, 0x8, 0x28, + 0xc7, 0x47, 0xe6, 0xa6, 0x9b, 0x91, 0x93, 0x9d, 0x1e, 0x55, 0xfb, 0x9, + 0x21, 0x2c, 0xfb, 0x9, 0x6b, 0x8, 0xe, 0xfb, 0xdd, 0x7e, 0xf7, 0x26, + 0xf7, 0x47, 0xf7, 0x27, 0x12, 0xa2, 0xf7, 0x28, 0x54, 0xf7, 0x28, 0x13, + 0xe0, 0xa2, 0xc8, 0x43, 0x1d, 0xaa, 0x62, 0x60, 0x6c, 0x6b, 0x63, 0x1e, + 0x13, 0xd0, 0xe8, 0xf7, 0xd9, 0x43, 0x1d, 0xab, 0x62, 0x60, 0x6c, 0x6a, + 0x63, 0x1e, 0xe, 0xfb, 0xdd, 0xfb, 0x36, 0x76, 0xf7, 0xd0, 0x77, 0xf7, + 0x5b, 0xf7, 0x27, 0x1, 0xa2, 0x6d, 0x1d, 0x4c, 0xf7, 0x28, 0x3, 0x72, + 0xfb, 0x33, 0x15, 0x9e, 0x96, 0xee, 0xbc, 0xc4, 0x1a, 0xa2, 0x79, 0x93, + 0x78, 0x98, 0x1e, 0x7a, 0x97, 0x7b, 0x99, 0xaa, 0x1a, 0xb6, 0xa8, 0xaa, + 0xb4, 0xa7, 0xc5, 0x7a, 0x3c, 0xfb, 0x18, 0xfb, 0x44, 0x37, 0x7c, 0x87, + 0x1e, 0xf7, 0x14, 0xf8, 0xcd, 0x15, 0xb3, 0xaa, 0xac, 0xb6, 0xb4, 0xac, + 0x6b, 0x62, 0x60, 0x6a, 0x6c, 0x62, 0x5f, 0x6d, 0xac, 0xb4, 0x1e, 0xe, + 0x2f, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xaa, 0xf8, 0x90, 0x3, 0xf8, + 0x7d, 0x83, 0x15, 0xcf, 0x7, 0xfc, 0x6, 0xf7, 0x55, 0xf8, 0x38, 0xf7, + 0x55, 0x5, 0xcf, 0x7, 0xfc, 0x90, 0xfb, 0x7d, 0x5, 0x53, 0x7, 0xe, + 0x2f, 0xf1, 0xe5, 0xdd, 0xe4, 0x67, 0xcf, 0x12, 0x13, 0xa0, 0xde, 0xf7, + 0xdf, 0x15, 0xf8, 0x5a, 0xcf, 0xfc, 0x5a, 0x6, 0x59, 0xfb, 0xb8, 0x15, + 0xf8, 0x5a, 0x6, 0x13, 0xc0, 0xcc, 0xfc, 0x5a, 0x7, 0xe, 0x2f, 0x98, + 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xf8, 0xaf, 0xf7, 0x75, 0x15, 0xc3, 0x7, + 0xfc, 0x5e, 0xf7, 0x7d, 0x5, 0x47, 0x7, 0xf8, 0x6, 0xfb, 0x55, 0xfc, + 0x38, 0xfb, 0x55, 0x5, 0x47, 0x7, 0xe, 0x7e, 0xf7, 0x28, 0xf7, 0xf5, + 0xf7, 0x58, 0x6c, 0xaa, 0x12, 0xda, 0xf7, 0x28, 0xfb, 0x0, 0xf7, 0xe, + 0xf1, 0xf7, 0x13, 0x13, 0xcc, 0xf7, 0x3b, 0xf7, 0x6b, 0x15, 0xa8, 0x84, + 0xa3, 0xc6, 0x9a, 0xaa, 0xb6, 0xa7, 0x19, 0xf7, 0x19, 0xe2, 0xc6, 0xbc, + 0xd9, 0x1a, 0xba, 0x65, 0xec, 0xfb, 0x29, 0xfb, 0x1, 0x54, 0x4d, 0x47, + 0x67, 0xa5, 0x6d, 0xae, 0xab, 0xa8, 0xa4, 0xad, 0x9f, 0x83, 0x98, 0x83, + 0x95, 0x1e, 0x84, 0x94, 0x85, 0x92, 0x94, 0x1a, 0x13, 0xb4, 0xa0, 0xb6, + 0x9c, 0xa7, 0xaa, 0xa8, 0x7b, 0x49, 0x55, 0x71, 0x59, 0x3c, 0x2e, 0x1e, + 0x4e, 0x3f, 0x84, 0x59, 0x88, 0x6a, 0x8, 0x33, 0xfb, 0x2e, 0x3c, 0xa, + 0xf7, 0x3e, 0x79, 0xb9, 0xf7, 0x6, 0xb0, 0x66, 0xbb, 0x5c, 0x77, 0xe7, + 0x77, 0xf7, 0xa4, 0xbb, 0xf7, 0x17, 0xb2, 0x12, 0xca, 0xe6, 0xf7, 0xa, + 0xd7, 0xf8, 0xc, 0xb9, 0x13, 0xaf, 0xc0, 0xf7, 0xf0, 0xf7, 0xaa, 0x15, + 0xf7, 0xc, 0xe3, 0xd0, 0xbb, 0xa8, 0x9a, 0x75, 0x60, 0xfb, 0x22, 0x40, + 0x45, 0x5f, 0x6a, 0x6f, 0xa7, 0xc7, 0x1e, 0xf7, 0x22, 0x4c, 0x15, 0x7e, + 0xa2, 0x4f, 0xcf, 0xf7, 0xd, 0xcf, 0xf7, 0x1e, 0xf3, 0xf7, 0x40, 0xfb, + 0x27, 0xf7, 0x15, 0xfb, 0x50, 0xfb, 0x5c, 0xfb, 0x40, 0xfb, 0x28, 0xfb, + 0x70, 0xfb, 0x1d, 0xf7, 0x8, 0xfb, 0x5a, 0xf7, 0x9e, 0xdb, 0xd1, 0xa7, + 0xaa, 0xcc, 0x1e, 0x7e, 0xae, 0x5, 0x70, 0x50, 0x57, 0x76, 0x30, 0x1b, + 0xfb, 0x3f, 0xfb, 0xc, 0xf7, 0x25, 0xf7, 0x24, 0xf7, 0x77, 0xf7, 0x19, + 0xf1, 0xf7, 0x28, 0xf7, 0x4b, 0xf5, 0xfb, 0x26, 0xfb, 0x8, 0x1f, 0x13, + 0xcf, 0xc0, 0x34, 0x59, 0xfb, 0xa, 0x3e, 0x6c, 0x85, 0xa4, 0x9f, 0x92, + 0x8c, 0x91, 0x8c, 0x92, 0x1e, 0xcc, 0xf7, 0x95, 0x5, 0x44, 0x6, 0x80, + 0x65, 0x5, 0xa4, 0x7d, 0x81, 0xa6, 0x5b, 0x1b, 0xfb, 0x1d, 0x4b, 0xfb, + 0x35, 0x3f, 0x1f, 0x13, 0x9f, 0xc0, 0xfb, 0x3, 0xd0, 0x73, 0xa8, 0xc7, + 0xba, 0xc3, 0x9b, 0x96, 0x1e, 0xe, 0x51, 0x1d, 0x1, 0x40, 0xf9, 0x28, + 0x3, 0xf7, 0x15, 0x16, 0xae, 0x7, 0x5f, 0x76, 0x9e, 0x9f, 0x90, 0x8d, + 0x90, 0x8e, 0x92, 0x3f, 0xa, 0x5b, 0x69, 0x83, 0x5e, 0x2c, 0xa, 0x68, + 0x7, 0xf8, 0xc, 0xf8, 0x7f, 0x15, 0x74, 0x1d, 0xfb, 0x4d, 0x6, 0xe, + 0x90, 0x8b, 0xab, 0xf7, 0xc6, 0xa9, 0xf7, 0xa1, 0xae, 0x12, 0xf8, 0x3e, + 0xf7, 0x2d, 0x25, 0xea, 0x2c, 0xf7, 0x27, 0x13, 0xf0, 0x73, 0x16, 0xf7, + 0xaf, 0x6, 0xf7, 0x27, 0xf7, 0x3a, 0xbe, 0xf7, 0x31, 0xf1, 0x38, 0xa7, + 0x58, 0x9b, 0x1f, 0x8d, 0x7, 0x13, 0xe4, 0xcd, 0x9b, 0xf7, 0xc, 0xaf, + 0xf7, 0xd, 0x1a, 0xf7, 0x1f, 0xfb, 0x45, 0x8c, 0x50, 0x1e, 0xfb, 0xa4, + 0x68, 0x6, 0xb5, 0xaa, 0x86, 0x63, 0x1f, 0xfb, 0x19, 0xfc, 0x76, 0x7a, + 0x4d, 0x6f, 0x86, 0x68, 0x86, 0x19, 0xf7, 0xb9, 0xf7, 0xc3, 0x15, 0x13, + 0xf0, 0xd3, 0xd9, 0x76, 0xfb, 0x1, 0x5f, 0x72, 0xfb, 0x18, 0xfb, 0x1b, + 0x65, 0x74, 0x95, 0xa4, 0x93, 0x8c, 0x93, 0x8f, 0x96, 0x1f, 0xd5, 0xf7, + 0xa6, 0x15, 0xc8, 0xf7, 0x75, 0x5, 0x9f, 0x90, 0x91, 0xa3, 0xb1, 0x1b, + 0x13, 0xe8, 0xd1, 0x9f, 0x55, 0x55, 0xfb, 0x38, 0xfb, 0xc, 0x8e, 0x3b, + 0x1f, 0xe, 0x90, 0x79, 0xc0, 0xf8, 0xfb, 0xae, 0x1, 0xab, 0xf7, 0x2e, + 0x3, 0xf8, 0xb6, 0xf7, 0x2d, 0x15, 0x2f, 0x42, 0x4b, 0x71, 0x3c, 0x1b, + 0x7d, 0xfb, 0x16, 0x9f, 0xf7, 0x47, 0xf7, 0x45, 0xf3, 0xf7, 0x83, 0xf7, + 0x35, 0xe3, 0xc5, 0x49, 0x32, 0x7f, 0x8a, 0x7e, 0x89, 0x7e, 0x81, 0x1d, + 0x81, 0x83, 0x7e, 0x75, 0x1b, 0x82, 0x7f, 0x8f, 0x90, 0x7c, 0x1f, 0x94, + 0x70, 0x65, 0x96, 0x54, 0x1b, 0xfb, 0x87, 0xfb, 0x44, 0xfb, 0x79, 0xfb, + 0x72, 0xfb, 0x49, 0xf7, 0x22, 0x44, 0xf7, 0x16, 0xf7, 0x16, 0xe6, 0xd3, + 0xd8, 0xbe, 0x1f, 0xe, 0xc7, 0x8b, 0xad, 0xf8, 0xf0, 0xaa, 0x1, 0xf8, + 0xae, 0xf7, 0x27, 0x3, 0xf7, 0x52, 0xf7, 0x12, 0x15, 0xf7, 0x14, 0xf8, + 0x6e, 0x80, 0x1d, 0xfb, 0x2c, 0x2c, 0x25, 0x60, 0xfb, 0x93, 0xfb, 0x97, + 0x61, 0x7d, 0x99, 0xa3, 0x9a, 0x8f, 0x9d, 0x77, 0xa, 0x8c, 0xf7, 0x13, + 0xf7, 0x73, 0x5d, 0xa, 0x77, 0x83, 0x72, 0xfb, 0xa, 0xfc, 0x37, 0x1e, + 0x75, 0x3d, 0x6b, 0x83, 0x6a, 0x86, 0x8, 0xe, 0x51, 0xa, 0x1, 0x70, + 0x16, 0x37, 0x1d, 0x55, 0x7d, 0x95, 0x9c, 0x98, 0x93, 0x9b, 0x90, 0x9e, + 0x7e, 0xa, 0xf7, 0x4, 0xab, 0x6f, 0x4c, 0x7e, 0x89, 0x7d, 0x89, 0x7b, + 0x2a, 0xa, 0xe, 0x90, 0xa0, 0x76, 0xf7, 0xe6, 0xab, 0xf7, 0x9f, 0xab, + 0x1, 0x7e, 0x16, 0xf7, 0xbb, 0x6, 0x90, 0xae, 0x5, 0x5d, 0x71, 0x96, + 0xa2, 0x8e, 0x8b, 0x8f, 0x8c, 0x8f, 0x1f, 0xcb, 0xf7, 0x96, 0x5, 0xf7, + 0x2, 0xa6, 0x6c, 0x4e, 0x7e, 0x89, 0x7d, 0x89, 0x7c, 0x4c, 0xa, 0x5, + 0x37, 0x5f, 0x7f, 0x75, 0xfb, 0x22, 0x1b, 0xc8, 0xf7, 0x73, 0x5, 0xab, + 0x94, 0x96, 0x97, 0xb2, 0x1b, 0xf7, 0x49, 0x8b, 0x36, 0x47, 0x1f, 0xa6, + 0x86, 0xb6, 0xf7, 0x52, 0x5, 0xfc, 0xa9, 0x68, 0x6, 0xbd, 0x85, 0xa4, + 0x87, 0x7a, 0x8b, 0xa, 0x85, 0x1e, 0xfb, 0x14, 0xfc, 0x94, 0x82, 0x67, + 0x6c, 0x89, 0x63, 0x84, 0x19, 0xe, 0xc7, 0x79, 0xb1, 0xf7, 0xa6, 0xaf, + 0xf7, 0xd3, 0xaf, 0x1, 0xa0, 0xf7, 0x30, 0x3, 0xf8, 0x37, 0xf7, 0xba, + 0x15, 0xb9, 0x87, 0xaa, 0x88, 0x65, 0x1a, 0x84, 0x8a, 0x81, 0x89, 0x81, + 0x1e, 0x84, 0x68, 0x60, 0xfb, 0x10, 0x87, 0x84, 0x8, 0x74, 0x7d, 0x60, + 0x7e, 0x5f, 0x1b, 0x6a, 0xfb, 0x14, 0xbd, 0xf7, 0x3f, 0xf7, 0x67, 0xf4, + 0xf7, 0x59, 0xf7, 0x34, 0xf7, 0x3, 0xbb, 0x3b, 0x26, 0x1f, 0xa8, 0x87, + 0xbe, 0xf7, 0x71, 0x5, 0x6c, 0x6, 0x81, 0x86, 0x82, 0x77, 0x6f, 0x1b, + 0x7e, 0x80, 0x90, 0x90, 0x7c, 0x1f, 0x94, 0x73, 0x68, 0x96, 0x47, 0x1b, + 0xfb, 0x99, 0xfb, 0x34, 0xfb, 0x88, 0xfb, 0x5c, 0xfb, 0x45, 0xf7, 0x1c, + 0x39, 0xf7, 0x39, 0xd7, 0xf7, 0x7, 0xa4, 0xa4, 0xc1, 0x1f, 0x97, 0x94, + 0xbb, 0xf7, 0x49, 0x9d, 0xd0, 0x93, 0x8a, 0xc0, 0x8f, 0x19, 0xaf, 0xfb, + 0xb3, 0x7, 0xe, 0xf7, 0x8, 0x8b, 0xae, 0xf7, 0xba, 0xb7, 0xf7, 0x99, + 0xae, 0x1, 0x73, 0x16, 0x75, 0x1d, 0x5e, 0x8e, 0x6e, 0x95, 0xa5, 0x1a, + 0x8f, 0x8c, 0x8f, 0x8c, 0x90, 0x1e, 0xcd, 0xf7, 0x86, 0x5, 0xf7, 0x83, + 0x6, 0x4c, 0xfb, 0x86, 0x83, 0x6b, 0x79, 0x7a, 0x3f, 0x88, 0x19, 0x68, + 0xf7, 0xd1, 0xae, 0x7, 0x69, 0x8c, 0x64, 0x97, 0xa7, 0x1a, 0x8e, 0x8b, + 0x8f, 0x8c, 0x8f, 0x1e, 0xf7, 0x19, 0xf8, 0x79, 0x9b, 0xc9, 0xa4, 0x85, + 0xb3, 0x91, 0x19, 0x61, 0xa, 0xc0, 0x83, 0xa1, 0x7b, 0x74, 0x1a, 0x86, + 0x8a, 0x86, 0x8a, 0x86, 0x1e, 0x52, 0xfb, 0x5b, 0x5, 0xfb, 0x83, 0x6, + 0xc1, 0xf7, 0x5b, 0x9b, 0xc7, 0xa8, 0x8b, 0xc3, 0x8d, 0x82, 0xa, 0xbe, + 0x84, 0xa3, 0x7b, 0x74, 0x1a, 0x86, 0x8a, 0x86, 0x8a, 0x85, 0x1e, 0xfb, + 0x18, 0xfc, 0x79, 0x80, 0x62, 0x6a, 0x86, 0x66, 0x85, 0x19, 0xe, 0xfb, + 0xa5, 0xa0, 0x76, 0xf9, 0xe, 0xae, 0x1, 0x6b, 0x16, 0x75, 0x1d, 0x60, + 0x8d, 0x6e, 0x9b, 0xa4, 0x1a, 0x90, 0x8b, 0x90, 0x8c, 0x90, 0x1e, 0xf7, + 0x21, 0xf8, 0x77, 0x9a, 0xbe, 0x9e, 0x8d, 0x56, 0x1d, 0xc5, 0x86, 0xa0, + 0x75, 0x88, 0x7a, 0x8a, 0x86, 0x8a, 0x86, 0x8a, 0x87, 0xfb, 0x18, 0xfc, + 0x77, 0x18, 0x80, 0x61, 0x70, 0x81, 0x60, 0x85, 0x8, 0xe, 0x45, 0xf7, + 0x3f, 0xf8, 0xcc, 0x77, 0x12, 0x5d, 0xf7, 0x13, 0xfb, 0x13, 0xf8, 0xce, + 0x13, 0xe0, 0xf7, 0x77, 0xf9, 0xe, 0x15, 0xbd, 0x84, 0xa4, 0x7c, 0x73, + 0x8b, 0xa, 0x84, 0x1e, 0x22, 0xfc, 0x2d, 0x5, 0xfb, 0xb, 0x6b, 0x5d, + 0x61, 0x73, 0x1b, 0x81, 0x86, 0x92, 0x99, 0x98, 0x8f, 0x8f, 0x92, 0x92, + 0x1f, 0x92, 0x92, 0x90, 0x92, 0x9e, 0x1a, 0xaf, 0x6e, 0xa5, 0x68, 0x68, + 0x6f, 0x6f, 0x60, 0x4e, 0xd1, 0x64, 0xdc, 0xf7, 0x18, 0xbe, 0xe5, 0xf1, + 0xa6, 0x1e, 0xf7, 0x0, 0xf8, 0x2d, 0x5, 0x13, 0xd0, 0x9e, 0xc4, 0x9a, + 0x88, 0xba, 0x93, 0x8, 0xae, 0xfb, 0xbd, 0x7, 0xe, 0x90, 0xa0, 0x76, + 0xf9, 0x31, 0x77, 0x1, 0x76, 0x16, 0xf7, 0xb5, 0xae, 0x6, 0x64, 0x70, + 0x98, 0xad, 0x90, 0x8c, 0x90, 0x8c, 0x91, 0x1f, 0xcb, 0xf7, 0x79, 0x93, + 0x89, 0x5, 0xf7, 0x1, 0xfb, 0x7d, 0x97, 0x74, 0x88, 0x1a, 0x74, 0x84, + 0x8a, 0x51, 0x84, 0x1e, 0x68, 0xf7, 0xac, 0xae, 0x7, 0x71, 0x8e, 0x74, + 0x8d, 0x7d, 0xa9, 0xfb, 0x31, 0xf7, 0xdc, 0x18, 0xf7, 0x6c, 0xf7, 0x50, + 0xb8, 0xb5, 0x98, 0x8c, 0xaf, 0x90, 0x19, 0xae, 0xfb, 0x67, 0x68, 0x7, + 0xb2, 0x87, 0x9c, 0x89, 0x75, 0x1a, 0x72, 0xfb, 0x78, 0xfb, 0x44, 0x64, + 0x54, 0x1e, 0x86, 0x8c, 0xc7, 0xf7, 0x71, 0x9b, 0xc5, 0xa7, 0x8b, 0xbd, + 0x8f, 0x19, 0xae, 0xfb, 0xca, 0x68, 0x7, 0xbd, 0x84, 0xa4, 0x7c, 0x74, + 0x7c, 0x1d, 0x79, 0x4b, 0x70, 0x88, 0x68, 0x86, 0x19, 0xe, 0x53, 0x1d, + 0x55, 0x7e, 0x96, 0x9d, 0x94, 0x8f, 0x96, 0x8e, 0x98, 0x1f, 0xf7, 0x15, + 0xf8, 0x72, 0x9b, 0xc7, 0xa8, 0x8a, 0xc3, 0x8e, 0x82, 0xa, 0xbf, 0x84, + 0xa2, 0x7b, 0x75, 0x7c, 0x1d, 0x7b, 0x52, 0x76, 0x82, 0x60, 0x85, 0x19, + 0xe, 0xf7, 0x77, 0x8b, 0xae, 0x71, 0x76, 0xf7, 0x60, 0x77, 0xf8, 0x85, + 0x77, 0x12, 0x13, 0xb0, 0x6e, 0x16, 0xf7, 0x63, 0xae, 0x6, 0x50, 0x79, + 0xa3, 0xac, 0xa5, 0x93, 0xab, 0x93, 0xa7, 0x1f, 0xef, 0xf8, 0x0, 0x5, + 0x8d, 0x6, 0x13, 0x70, 0xcd, 0xfc, 0xbe, 0x5, 0xa7, 0x6, 0xf8, 0x7, + 0xf8, 0xca, 0x8d, 0x89, 0xfb, 0xf, 0xfc, 0x47, 0x5, 0x13, 0xb0, 0x7b, + 0x50, 0x6f, 0x78, 0x53, 0x87, 0x8, 0x68, 0xf7, 0xcc, 0xae, 0x7, 0x55, + 0x7a, 0x96, 0xa0, 0x98, 0x8f, 0x9c, 0x90, 0x9f, 0x1f, 0xf7, 0xf, 0xf8, + 0x51, 0x9b, 0xc9, 0xa4, 0x8f, 0xb3, 0x91, 0x19, 0xae, 0xfb, 0x68, 0x7, + 0xfb, 0xc8, 0xfc, 0x71, 0x6f, 0xa, 0x55, 0xf8, 0x71, 0x5, 0xfb, 0x71, + 0x68, 0x6, 0xc0, 0x89, 0x9e, 0x89, 0x6c, 0x1a, 0xfb, 0xc, 0xfc, 0x39, + 0x63, 0xfb, 0x1e, 0x7f, 0x92, 0x5a, 0x7f, 0x19, 0xe, 0x8b, 0x1d, 0x12, + 0x13, 0xa0, 0x70, 0x16, 0xf7, 0x64, 0xae, 0x6, 0x51, 0x79, 0x9d, 0xb0, + 0x9a, 0x8e, 0x9b, 0x90, 0x9c, 0x1f, 0xf4, 0xf8, 0x20, 0x5, 0x13, 0x60, + 0x59, 0xa, 0x8d, 0x96, 0x94, 0x8a, 0x93, 0x1b, 0xaf, 0x97, 0x72, 0x6b, + 0x6f, 0x85, 0x6a, 0x83, 0x71, 0x64, 0x1d, 0xfb, 0x12, 0xfc, 0x57, 0x18, + 0x13, 0xa0, 0x6d, 0x21, 0x80, 0x9b, 0x55, 0x7e, 0x8, 0xe, 0xc7, 0x79, + 0xad, 0xf9, 0xf, 0xad, 0x1, 0x4d, 0xa, 0x3, 0xf7, 0x3f, 0xf7, 0x2a, + 0x15, 0xe7, 0xe0, 0xf8, 0x2d, 0xf7, 0x4c, 0xf3, 0x8e, 0x21, 0x76, 0xfb, + 0x8, 0x2f, 0xfc, 0x1c, 0xfb, 0x46, 0x50, 0x5c, 0xad, 0x55, 0x1d, 0xd4, + 0xfb, 0x14, 0xf7, 0x3b, 0xf7, 0x8d, 0xf7, 0x43, 0xf7, 0x9e, 0xf7, 0x56, + 0xf7, 0x42, 0xfb, 0x1b, 0xd0, 0xfb, 0x1, 0xfb, 0x6f, 0xfb, 0x5d, 0xfb, + 0x7d, 0xfb, 0x89, 0x1e, 0xe, 0x58, 0xa0, 0x76, 0xf7, 0xd6, 0xab, 0xf7, + 0xaf, 0xab, 0x1, 0xf8, 0x67, 0xf7, 0x26, 0x3, 0xf7, 0xa1, 0xf7, 0xf6, + 0x6f, 0x1d, 0x23, 0x54, 0x55, 0xfb, 0x23, 0x1f, 0xfb, 0xbc, 0xfb, 0xf6, + 0x15, 0xf7, 0xba, 0xae, 0x6, 0x5a, 0x78, 0xa3, 0xb2, 0x97, 0x8e, 0x98, + 0x8e, 0x99, 0x1f, 0xc1, 0xf7, 0x4d, 0x5, 0xf7, 0x27, 0xf7, 0x63, 0xa4, + 0xf7, 0x39, 0xf7, 0x12, 0x20, 0xaa, 0x21, 0x1f, 0xfb, 0xb3, 0x68, 0x6, + 0xbe, 0x84, 0xa3, 0x88, 0x79, 0x8b, 0xa, 0x86, 0x1e, 0xfb, 0xf, 0xfc, + 0x5b, 0x7a, 0x4d, 0x6a, 0x6a, 0x63, 0x84, 0x19, 0xe, 0xc7, 0xfb, 0x64, + 0xe8, 0x5d, 0xf7, 0x46, 0x69, 0xad, 0xf9, 0xe, 0xad, 0x12, 0x4d, 0xa, + 0x13, 0x5c, 0xf7, 0x3f, 0xf7, 0x2a, 0x15, 0xe7, 0xe2, 0xf8, 0x2d, 0xf7, + 0x4c, 0xf3, 0x8c, 0x23, 0x76, 0xfb, 0x8, 0x2d, 0xfc, 0x1d, 0xfb, 0x46, + 0x50, 0x5e, 0xac, 0xef, 0x1e, 0xfb, 0x23, 0xfb, 0xcf, 0x15, 0x99, 0x73, + 0x5, 0xa2, 0xc4, 0xad, 0x90, 0xa0, 0x1b, 0xbe, 0xae, 0x7b, 0x7e, 0xb6, + 0x1f, 0x13, 0xbc, 0x81, 0xab, 0xaf, 0x83, 0xbc, 0x1b, 0xf7, 0x20, 0xd2, + 0xe3, 0xc8, 0xb7, 0x1f, 0x76, 0x9e, 0x5, 0x58, 0x6b, 0x51, 0x73, 0x4e, + 0x1b, 0x6e, 0x6c, 0x8e, 0x94, 0x70, 0x1f, 0x57, 0x9b, 0x5e, 0x93, 0x69, + 0x8f, 0x8, 0x66, 0x90, 0x75, 0x8c, 0x8f, 0x1a, 0x90, 0xaa, 0xa8, 0x9a, + 0x99, 0x1e, 0xf7, 0x86, 0xf7, 0x59, 0xf7, 0x91, 0xf7, 0x64, 0xf7, 0x42, + 0xfb, 0x19, 0xce, 0x5d, 0x1d, 0xfb, 0x7d, 0xfb, 0x89, 0x38, 0xbc, 0x27, + 0xf7, 0x5, 0x6c, 0x1f, 0x95, 0x87, 0x8b, 0x8b, 0x8f, 0x86, 0x88, 0x85, + 0x8b, 0x8b, 0xfb, 0x40, 0xfb, 0x23, 0x8, 0xe, 0x90, 0xa0, 0x76, 0xf9, + 0x11, 0xab, 0x1, 0xf8, 0x6c, 0xf7, 0x2b, 0x3, 0xf7, 0xa5, 0xf7, 0xff, + 0x15, 0xc7, 0xf7, 0x7a, 0x5, 0xa2, 0x90, 0x92, 0xa0, 0xac, 0x1b, 0xcb, + 0xa9, 0x56, 0x4f, 0x25, 0x3b, 0x50, 0xfb, 0xb, 0x1f, 0xfb, 0xc2, 0xfb, + 0xff, 0x8e, 0x1d, 0x66, 0x71, 0x8e, 0xb0, 0x94, 0x8d, 0x95, 0x8e, 0x98, + 0x1f, 0xc2, 0xf7, 0x74, 0x5, 0xa8, 0x6, 0xf6, 0xfb, 0xdf, 0x5, 0xf7, + 0x5e, 0xae, 0x6, 0x5b, 0x90, 0x79, 0x8d, 0x75, 0xcc, 0x38, 0xf7, 0x80, + 0x18, 0xf7, 0x17, 0xa0, 0xc8, 0xdf, 0xd7, 0x1a, 0xf7, 0x25, 0xfb, 0x44, + 0x8b, 0x4f, 0x1e, 0xfb, 0xa8, 0x68, 0x6, 0xbf, 0x84, 0xa2, 0x82, 0x77, + 0x1a, 0x87, 0x8a, 0x87, 0x8a, 0x84, 0x1e, 0xfb, 0x19, 0xfc, 0x70, 0x7b, + 0x52, 0x77, 0x81, 0x5f, 0x86, 0x19, 0xe, 0x21, 0x79, 0xad, 0xf9, 0xe, + 0xae, 0x87, 0x85, 0x1d, 0x13, 0xd8, 0x8d, 0x79, 0x15, 0xa9, 0x6, 0xa2, + 0x96, 0x8f, 0x97, 0xa4, 0x1b, 0x98, 0x9a, 0x84, 0x83, 0xa2, 0x1f, 0x82, + 0xa6, 0xaa, 0x80, 0xb4, 0x1b, 0xf7, 0x30, 0xe5, 0xf7, 0x0, 0xf7, 0x18, + 0xd3, 0x54, 0xc2, 0x51, 0xb8, 0x1f, 0x4b, 0xbe, 0x47, 0xb6, 0xc2, 0x1a, + 0x97, 0x84, 0xea, 0xf1, 0xf7, 0x6, 0xa6, 0xfb, 0x2, 0x53, 0x1e, 0xa6, + 0x87, 0x5, 0x13, 0xb8, 0xb3, 0xf7, 0x5d, 0x5, 0x6d, 0x6, 0x72, 0x7e, + 0x70, 0x8a, 0x87, 0x1b, 0x7c, 0x7a, 0x92, 0x92, 0x74, 0x1f, 0x13, 0xd8, + 0x93, 0x74, 0x70, 0x93, 0x6e, 0x1b, 0xfb, 0x19, 0x38, 0x2b, 0x26, 0x3b, + 0xc8, 0x5e, 0xc8, 0x63, 0x1f, 0xc8, 0x63, 0xc9, 0x66, 0x4b, 0x1a, 0x77, + 0x7e, 0xfb, 0x26, 0xfb, 0x4, 0x61, 0xfb, 0x5, 0x9b, 0xf7, 0x40, 0x1e, + 0x6e, 0x8d, 0x5, 0xe, 0x58, 0x58, 0xa, 0x1, 0xbd, 0x16, 0xf7, 0xdf, + 0x6, 0x8d, 0xae, 0x5, 0x51, 0x76, 0x91, 0xa9, 0x94, 0x8e, 0x97, 0x8f, + 0x9a, 0x1f, 0xf7, 0x1e, 0xf8, 0xa3, 0x5, 0xc0, 0xe0, 0x85, 0xfb, 0x29, + 0x1f, 0xa6, 0x89, 0xaf, 0xf7, 0x54, 0x5, 0xfc, 0xbb, 0x6, 0x65, 0xfb, + 0x3f, 0xa4, 0x84, 0x5, 0xf1, 0xbe, 0xd2, 0xb4, 0xea, 0x1b, 0xfb, 0x26, + 0xfc, 0xa3, 0x78, 0x46, 0x62, 0x86, 0x5e, 0x8d, 0x19, 0xe, 0xc7, 0x79, + 0xc3, 0xf8, 0xe9, 0xad, 0x1, 0xce, 0xf7, 0x1e, 0x3, 0xed, 0xf9, 0xe, + 0x15, 0xc9, 0x83, 0x96, 0x6b, 0x6b, 0x5d, 0x23, 0xfb, 0xa8, 0x38, 0xa, + 0xe1, 0xf7, 0xbb, 0x99, 0xbc, 0x9d, 0x9b, 0x55, 0xa, 0x8c, 0x93, 0x93, + 0x8b, 0x92, 0x1b, 0xba, 0x98, 0x68, 0x72, 0x85, 0x8a, 0x85, 0x8a, 0x86, + 0x1f, 0x3b, 0xfb, 0xbb, 0x5, 0x21, 0x6f, 0x65, 0xfb, 0xb, 0xfb, 0x23, + 0x1b, 0x28, 0x73, 0xb7, 0xc5, 0xb3, 0x9b, 0xbb, 0x97, 0xb7, 0x3e, 0x1d, + 0xe, 0x90, 0x87, 0x76, 0xf7, 0x53, 0x77, 0xb2, 0x77, 0xf8, 0x5c, 0xae, + 0x12, 0xd3, 0xf9, 0x1e, 0x13, 0xd8, 0x13, 0xb8, 0xf7, 0x7b, 0x79, 0x15, + 0xab, 0x6, 0xf8, 0x1d, 0xf8, 0xf8, 0x91, 0x94, 0x9b, 0x9f, 0xb0, 0x96, + 0x19, 0xae, 0xfb, 0x54, 0x68, 0x7, 0xba, 0x87, 0x9d, 0x8a, 0x6c, 0x1a, + 0xfb, 0x8b, 0xfc, 0x31, 0x6f, 0xa, 0x58, 0xf8, 0x18, 0x5, 0x8a, 0x96, + 0x8b, 0x94, 0x92, 0x1a, 0xa7, 0xa7, 0x8d, 0xbb, 0x8f, 0x1e, 0x61, 0xa, + 0xc7, 0x89, 0x93, 0x82, 0x94, 0x51, 0x8, 0xe, 0xf7, 0x77, 0x8e, 0x76, + 0xf7, 0x8b, 0x77, 0xf8, 0x3d, 0xae, 0x1, 0xf7, 0x70, 0x79, 0x15, 0xa8, + 0x6, 0xf7, 0x7b, 0xf8, 0x7a, 0x5, 0x8d, 0x6, 0xc6, 0xfc, 0x7a, 0x5, + 0xa8, 0x6, 0xf7, 0xa8, 0xf8, 0xcf, 0xab, 0xcb, 0xaa, 0x98, 0xaa, 0x90, + 0x19, 0xad, 0xfb, 0x4f, 0x68, 0x7, 0xb8, 0x8e, 0x9d, 0x81, 0x74, 0x1a, + 0x7d, 0x86, 0x7a, 0x81, 0x77, 0x1e, 0xfb, 0x2e, 0xfb, 0xd8, 0x6f, 0xa, + 0x6a, 0xf7, 0xb8, 0x5, 0x88, 0xa4, 0x89, 0xa0, 0x9e, 0x1a, 0xaa, 0x99, + 0x9b, 0xbb, 0x8c, 0x1e, 0xae, 0xfb, 0xa1, 0x69, 0x7, 0xbe, 0x83, 0x9f, + 0x92, 0x2a, 0x1a, 0xfb, 0x28, 0xfb, 0xc8, 0x6f, 0xa, 0x64, 0xf7, 0xe0, + 0x5, 0x8a, 0x94, 0x8b, 0x93, 0x92, 0x1a, 0xb0, 0xa8, 0x94, 0xab, 0x8e, + 0x1e, 0xae, 0xfb, 0xa9, 0x69, 0x7, 0xcb, 0x80, 0x8d, 0x94, 0x96, 0x43, + 0x8, 0xe, 0x90, 0x58, 0xa, 0x1, 0x73, 0x16, 0xf7, 0x6a, 0xae, 0x6, + 0x74, 0x8d, 0x57, 0x90, 0xae, 0x1a, 0xf7, 0x42, 0xf7, 0x4f, 0x5, 0x95, + 0x63, 0xba, 0x20, 0x60, 0x1a, 0x69, 0x6b, 0x89, 0x67, 0x88, 0x1e, 0x68, + 0xf7, 0xc8, 0xae, 0x7, 0x3f, 0x92, 0x7e, 0xa2, 0x70, 0xe1, 0x41, 0xf7, + 0x77, 0x18, 0xf7, 0x5b, 0xf7, 0x57, 0xbf, 0xc1, 0xa3, 0x8e, 0xa2, 0x8f, + 0x19, 0xae, 0xfb, 0x5f, 0x68, 0x7, 0xac, 0x88, 0xa6, 0x7b, 0x7b, 0x1a, + 0x87, 0x8a, 0x87, 0x87, 0x87, 0x1e, 0xfb, 0x38, 0xfb, 0x3a, 0x5, 0x7c, + 0xbf, 0x67, 0xda, 0x9e, 0x1a, 0xad, 0x9a, 0xa2, 0xc6, 0x91, 0x1e, 0xae, + 0xfb, 0xc5, 0x68, 0x7, 0xbf, 0x86, 0xa3, 0x83, 0x9a, 0x59, 0xdf, 0xfb, + 0x9a, 0x18, 0x4f, 0x4c, 0xfb, 0x3, 0xfb, 0xc, 0x47, 0x50, 0x75, 0x78, + 0x84, 0x87, 0x6c, 0x82, 0x8, 0xe, 0x58, 0x58, 0xa, 0x1, 0xd4, 0x16, + 0xf7, 0xd6, 0xae, 0x6, 0x5d, 0x8d, 0x6c, 0x8c, 0xb4, 0x1a, 0xc7, 0xf7, + 0x79, 0x6a, 0xa, 0xc4, 0x88, 0xa3, 0x80, 0x78, 0x1a, 0x81, 0x87, 0x7f, + 0x81, 0x7e, 0x1e, 0xfb, 0x2f, 0xfb, 0x6a, 0x48, 0xf7, 0x5c, 0x8d, 0x83, + 0x81, 0xa5, 0x19, 0x87, 0x95, 0x88, 0x96, 0x92, 0x1a, 0xa6, 0xa8, 0x94, + 0xb9, 0x6a, 0x1d, 0x4f, 0xfb, 0x62, 0x79, 0x4b, 0x72, 0x88, 0x51, 0x86, + 0x19, 0xe, 0x58, 0x58, 0xa, 0x3e, 0xa, 0xe, 0xfb, 0xdd, 0xfb, 0x33, + 0xb8, 0xf9, 0x7b, 0xb8, 0x1, 0x66, 0xfb, 0x33, 0x15, 0xf7, 0x6f, 0x6, + 0x92, 0xb8, 0x5, 0x3b, 0x6, 0x7f, 0x76, 0x8b, 0xa3, 0x1f, 0xf7, 0x32, + 0xf9, 0x24, 0x5, 0xc6, 0x99, 0x8a, 0x8f, 0xb0, 0x1b, 0xd2, 0x6, 0x92, + 0xb8, 0x5, 0xfb, 0x5c, 0x6, 0xe, 0xfc, 0x14, 0xfb, 0x1c, 0x76, 0xf7, + 0x34, 0x8d, 0x1d, 0xf7, 0x1e, 0xfb, 0x31, 0x15, 0xc6, 0x6, 0x32, 0xf9, + 0xde, 0x5, 0x50, 0x6, 0xe, 0xfb, 0xdd, 0xfb, 0x31, 0xb8, 0xf9, 0x79, + 0xb8, 0x1, 0x64, 0xfb, 0x4, 0x15, 0x84, 0x5e, 0x5, 0xf7, 0x5b, 0x6, + 0xf7, 0x5c, 0xf9, 0xd3, 0x5, 0xfb, 0x70, 0x6, 0x84, 0x5e, 0x5, 0xd9, + 0x6, 0x96, 0xa3, 0x88, 0x75, 0x1f, 0xfb, 0x31, 0xfd, 0x21, 0x5, 0x51, + 0x7d, 0x89, 0x86, 0x66, 0x1b, 0xe, 0x2f, 0xf7, 0xd9, 0x76, 0xf8, 0x1, + 0x77, 0x1, 0xce, 0xf7, 0xc4, 0x15, 0xe4, 0x6, 0xf7, 0x15, 0xf7, 0xa1, + 0xf7, 0x15, 0xfb, 0xa1, 0x5, 0xe4, 0x6, 0xfb, 0x46, 0xf8, 0x1, 0x5, + 0x3b, 0x6, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, 0x88, + 0xbd, 0x7, 0xe, 0x7f, 0x1d, 0xf7, 0x49, 0x77, 0x1, 0xf7, 0x90, 0xf8, + 0x98, 0x7b, 0xa, 0xfb, 0x3, 0xf7, 0x27, 0x5, 0x98, 0x80, 0x7a, 0xa0, + 0x70, 0x1b, 0x70, 0x78, 0x75, 0x76, 0x76, 0xa0, 0x78, 0x98, 0x82, 0x1f, + 0xe, 0x58, 0x1d, 0xb5, 0x85, 0x77, 0x74, 0xa, 0x13, 0x68, 0xf7, 0x8e, + 0xf7, 0x7, 0x15, 0x2e, 0x1d, 0x13, 0x98, 0x71, 0xa, 0x90, 0x94, 0x44, + 0xa, 0x5, 0xfb, 0x3, 0x6, 0x7a, 0x4d, 0x6f, 0xa, 0x13, 0xa8, 0xa4, + 0x87, 0x8a, 0xb6, 0x4f, 0x1b, 0xfb, 0xe, 0xfb, 0x33, 0x2f, 0x1d, 0xcc, + 0xd5, 0xf7, 0x84, 0xdf, 0x94, 0xad, 0x39, 0xa, 0xe, 0x7e, 0xac, 0xf8, + 0xa, 0xcf, 0xf7, 0x81, 0x77, 0x1, 0xf7, 0xd3, 0xf7, 0x11, 0x3, 0xf7, + 0x5a, 0xf8, 0xc, 0x15, 0x89, 0x8d, 0xe3, 0xf7, 0xd5, 0x42, 0x77, 0x1d, + 0x65, 0xfb, 0x2d, 0xfc, 0x83, 0x6e, 0x1a, 0x77, 0xc1, 0x63, 0xe0, 0xf7, + 0x3b, 0xf7, 0x2c, 0xf7, 0x3e, 0xf7, 0x3d, 0xd9, 0x5b, 0xc5, 0x4d, 0x4c, + 0x64, 0x63, 0x5d, 0x69, 0x1e, 0x32, 0xfb, 0xd9, 0x15, 0x8c, 0xc7, 0xf7, + 0xea, 0xf3, 0xb9, 0x8b, 0x58, 0x7a, 0x36, 0x4a, 0xfb, 0x71, 0xfb, 0x5, + 0x86, 0x70, 0x8b, 0xaa, 0x1e, 0xe, 0xfb, 0x6e, 0x7e, 0xcb, 0xf7, 0x8f, + 0xf7, 0x34, 0x6a, 0xac, 0x12, 0x86, 0xf7, 0x14, 0x13, 0xb0, 0xf7, 0xd2, + 0xf7, 0x21, 0x15, 0x51, 0x63, 0x66, 0x6b, 0x5e, 0x1b, 0x6e, 0x5f, 0x95, + 0xdb, 0xd2, 0xc7, 0xf7, 0x6d, 0xe2, 0x94, 0x99, 0x87, 0x7e, 0x83, 0x85, + 0x83, 0x85, 0x81, 0x1f, 0x86, 0x82, 0x87, 0x81, 0x7e, 0x1a, 0x13, 0xd0, + 0x84, 0x1d, 0x67, 0xb7, 0x3c, 0xfb, 0x1e, 0xfb, 0x24, 0xfb, 0x3c, 0xfb, + 0x2d, 0xfb, 0x3, 0xde, 0x60, 0xcd, 0xf5, 0xbe, 0xd3, 0xcb, 0xb8, 0x1e, + 0xe, 0x7e, 0xd3, 0x5a, 0x76, 0xf8, 0x43, 0xb5, 0xf7, 0x81, 0x77, 0x12, + 0x76, 0xf7, 0x10, 0x13, 0x78, 0xf7, 0x8e, 0xf7, 0x7, 0x15, 0x84, 0x6c, + 0x88, 0x79, 0x7b, 0x1a, 0x4e, 0xc0, 0x8b, 0x92, 0xd1, 0xc2, 0xe2, 0xb2, + 0xa3, 0x1e, 0x75, 0x9b, 0x5, 0x84, 0x90, 0x55, 0x4b, 0x76, 0x1b, 0x86, + 0x88, 0x8f, 0x94, 0x1f, 0xf7, 0x3c, 0xf9, 0x6, 0x68, 0x83, 0x5d, 0x80, + 0xfb, 0x14, 0x81, 0x6d, 0xa, 0xb6, 0x9e, 0x85, 0x73, 0x7c, 0x72, 0x35, + 0x75, 0x38, 0x1f, 0x99, 0x7d, 0x83, 0x9e, 0x60, 0x1b, 0xfb, 0x8, 0xfb, + 0x37, 0xfb, 0x55, 0xfb, 0x2f, 0x1f, 0x13, 0xb8, 0x5f, 0xa2, 0x38, 0xde, + 0xe1, 0xbb, 0xd9, 0xbc, 0xa8, 0x1e, 0xfb, 0x25, 0x16, 0xd1, 0xcf, 0xf7, + 0x80, 0xe2, 0xb0, 0x98, 0x5d, 0x85, 0x6e, 0x47, 0xfb, 0xac, 0x2c, 0x63, + 0x89, 0xbd, 0x90, 0x1e, 0xe, 0xfb, 0x6e, 0x7e, 0xcb, 0xf8, 0x21, 0xac, + 0x1, 0x90, 0xf7, 0x16, 0xf7, 0x3f, 0xe7, 0x3, 0x50, 0x1d, 0xf7, 0x7, + 0xc2, 0x1a, 0xd3, 0x47, 0x93, 0x68, 0xfb, 0x37, 0xfb, 0x13, 0xfb, 0x55, + 0xfb, 0x1c, 0xfb, 0x4, 0xdf, 0x69, 0x35, 0xa, 0x8e, 0xda, 0x9e, 0x8d, + 0x97, 0x3d, 0xa, 0x65, 0x82, 0x57, 0x70, 0x3a, 0xfb, 0x17, 0x68, 0x1f, + 0xe, 0xfb, 0xdd, 0xfb, 0x61, 0xaa, 0xf8, 0xd9, 0xb5, 0xf7, 0x70, 0xa8, + 0x1, 0xb2, 0xf8, 0x2b, 0x15, 0xd4, 0x6, 0x76, 0x3b, 0x63, 0xfb, 0x57, + 0x70, 0xfb, 0x9, 0x8, 0xfb, 0x1c, 0x6e, 0x7c, 0x56, 0x5b, 0x1b, 0x80, + 0x86, 0x90, 0x92, 0x8e, 0x8f, 0x90, 0x8f, 0x92, 0x1f, 0x8f, 0x92, 0x8f, + 0x93, 0x96, 0x1a, 0xaf, 0x66, 0x98, 0x7e, 0x74, 0x6f, 0x79, 0x6c, 0x4f, + 0xb8, 0x73, 0xbf, 0xf7, 0x43, 0xb3, 0xf7, 0x67, 0xf8, 0x25, 0xe1, 0x1e, + 0xe5, 0x6, 0x94, 0xb5, 0x5, 0x2f, 0x6, 0xf7, 0x3, 0xa6, 0xaa, 0xf7, + 0x1, 0xbe, 0x1b, 0x93, 0x94, 0x88, 0x80, 0x88, 0x87, 0x87, 0x87, 0x84, + 0x1f, 0x87, 0x84, 0x87, 0x83, 0x80, 0x1a, 0x6e, 0xa0, 0x76, 0xa6, 0xa3, + 0xa7, 0x99, 0xb2, 0x9f, 0x81, 0xc7, 0x33, 0xfb, 0x12, 0x49, 0xfb, 0x5, + 0xfb, 0x1c, 0x68, 0x1e, 0x42, 0x6, 0xe, 0xfb, 0x5f, 0xad, 0xf7, 0x4c, + 0x76, 0xf7, 0x33, 0xaa, 0x74, 0x77, 0xf7, 0xb6, 0xaa, 0x12, 0x57, 0xe2, + 0xf7, 0x7b, 0xf7, 0x1, 0x40, 0xf7, 0x9, 0x13, 0xde, 0xd9, 0x93, 0x15, + 0x89, 0x7, 0x4c, 0x7b, 0x48, 0x7a, 0x42, 0x1a, 0x3f, 0xf3, 0x70, 0xdb, + 0xf7, 0x3f, 0xd3, 0xda, 0xd0, 0xda, 0x44, 0xa6, 0x3d, 0xa0, 0x1e, 0x30, + 0xa6, 0x7e, 0x97, 0x9b, 0x1a, 0x96, 0x99, 0xa2, 0x98, 0x1e, 0x13, 0xed, + 0x92, 0x92, 0x8a, 0x88, 0x92, 0x1f, 0x88, 0x93, 0x93, 0x8a, 0x96, 0x1b, + 0xf7, 0x1, 0xf7, 0x3, 0xcc, 0xf7, 0x4, 0x9f, 0x89, 0x93, 0x87, 0x9a, + 0x1f, 0xce, 0xc3, 0xfb, 0x3, 0x6, 0x9e, 0x73, 0x67, 0x99, 0x5b, 0x1b, + 0xfb, 0x28, 0x3f, 0x25, 0x3e, 0x54, 0xa8, 0x64, 0xbe, 0x78, 0x1f, 0x4b, + 0x68, 0x6b, 0x79, 0x5e, 0x1a, 0x60, 0xb7, 0x7b, 0x9a, 0x86, 0x1e, 0x13, + 0xee, 0xae, 0x7d, 0x15, 0xa7, 0xf7, 0x11, 0x63, 0x56, 0x4f, 0x32, 0x81, + 0x5e, 0x40, 0x75, 0xab, 0xb0, 0xbe, 0xd4, 0xb6, 0x90, 0x1f, 0xb1, 0xf7, + 0x92, 0x15, 0x13, 0xed, 0xac, 0xa7, 0xf7, 0x2a, 0xd6, 0xaf, 0x95, 0x68, + 0x70, 0x5b, 0x68, 0xfb, 0x1d, 0x45, 0x5f, 0x8b, 0xb9, 0x9d, 0x1e, 0xe, + 0x89, 0x1d, 0xf7, 0x81, 0x77, 0x12, 0x13, 0x70, 0x7e, 0x83, 0xa, 0xa4, + 0xe3, 0xae, 0xf7, 0xa, 0xb4, 0xc9, 0x8, 0xb6, 0xa7, 0xbe, 0xda, 0xb5, + 0x1b, 0x9e, 0x8f, 0x7c, 0x83, 0x7d, 0x70, 0x44, 0x73, 0x41, 0x1f, 0x78, + 0x4f, 0x79, 0x4e, 0x68, 0x1a, 0x13, 0xb0, 0x6a, 0xa1, 0x6f, 0xb6, 0xdd, + 0xb8, 0xd3, 0xcb, 0xb4, 0x1e, 0x75, 0x9a, 0x5, 0x77, 0x88, 0x53, 0x4d, + 0x8f, 0xa, 0x90, 0x96, 0x90, 0xa0, 0xc5, 0xa1, 0xcb, 0x1f, 0xa3, 0xd0, + 0xa3, 0xd6, 0x9f, 0x1a, 0xda, 0x53, 0x9b, 0x75, 0x59, 0x50, 0x6f, 0xfb, + 0x26, 0x29, 0x1e, 0x89, 0x8c, 0xf5, 0xf8, 0x2e, 0x40, 0x7c, 0x53, 0x83, + 0x3e, 0x84, 0x82, 0x1d, 0x66, 0x1d, 0xf8, 0xc3, 0xf7, 0x1a, 0x4d, 0x1d, + 0x53, 0x55, 0x73, 0x88, 0x1d, 0x8f, 0x95, 0x32, 0x1d, 0xa9, 0x8b, 0x6b, + 0x1f, 0x34, 0x1d, 0xfb, 0x2, 0xf8, 0x7f, 0x15, 0x41, 0x1d, 0xe, 0xfc, + 0x14, 0xfb, 0x4e, 0x76, 0xf9, 0x89, 0xf7, 0x1a, 0x1, 0xaa, 0xf8, 0x2b, + 0x15, 0xbb, 0x99, 0x85, 0x72, 0x1f, 0x23, 0xfc, 0x39, 0x5, 0x36, 0x75, + 0x7c, 0x5d, 0x67, 0x1b, 0x81, 0x7f, 0x92, 0x90, 0x8f, 0x8e, 0x90, 0x8f, + 0x90, 0x1f, 0x8f, 0x91, 0x8f, 0x91, 0x97, 0x1a, 0xb3, 0x65, 0x94, 0x80, + 0x73, 0x72, 0x76, 0x6b, 0x6f, 0xa0, 0x5a, 0xe0, 0xe4, 0xd6, 0xc9, 0xf7, + 0x3d, 0xb7, 0x1e, 0xf7, 0x6, 0xf8, 0x4a, 0x45, 0x7c, 0x7b, 0x89, 0xfb, + 0xe, 0x80, 0x19, 0xf7, 0x5, 0xf7, 0x4c, 0x15, 0x41, 0x1d, 0xe, 0x83, + 0xd2, 0x61, 0x76, 0xf8, 0x55, 0x77, 0xf7, 0xa2, 0x77, 0x12, 0x13, 0x70, + 0x74, 0x16, 0xf7, 0xe, 0x6, 0xbd, 0xf7, 0x50, 0xb2, 0xa6, 0x5, 0x13, + 0xb0, 0xfb, 0xe, 0xa1, 0xa3, 0x26, 0xd9, 0x1b, 0xd0, 0xb5, 0xdb, 0xb7, + 0xa3, 0x1f, 0x75, 0x96, 0x5, 0x76, 0x7f, 0x74, 0x60, 0x71, 0x1b, 0x69, + 0x7d, 0xd3, 0xf7, 0x32, 0x6c, 0x1f, 0xca, 0xc2, 0xd7, 0xce, 0xa2, 0x85, + 0xaf, 0x90, 0x19, 0xae, 0xfb, 0x63, 0x68, 0x7, 0xa5, 0xa4, 0x89, 0x74, + 0x68, 0xfb, 0xf, 0x39, 0x65, 0x6d, 0x1f, 0x89, 0x8d, 0xf7, 0xe, 0xf8, + 0x5b, 0x4c, 0x7f, 0x38, 0x7f, 0x4d, 0x85, 0x82, 0x1d, 0x66, 0x1d, 0xf9, + 0x58, 0x6c, 0x1d, 0x54, 0x55, 0x73, 0x1b, 0x84, 0x87, 0x8f, 0x95, 0x9f, + 0x9b, 0xc5, 0x91, 0xa1, 0x1f, 0xf7, 0x25, 0xf8, 0x9f, 0x7f, 0xa, 0xac, + 0x8d, 0x6c, 0x1f, 0x5c, 0xfb, 0x22, 0xfc, 0x54, 0x4f, 0x1a, 0x7d, 0x8b, + 0x56, 0xcf, 0xdb, 0xb7, 0xd0, 0xce, 0xb7, 0x1e, 0xe, 0xf7, 0x8, 0x97, + 0x76, 0xa9, 0x76, 0xf8, 0x19, 0xd4, 0x12, 0x13, 0x60, 0x7d, 0x83, 0xa, + 0xf8, 0x0, 0xe8, 0xf7, 0x3, 0xa4, 0x92, 0x1b, 0xb8, 0x4d, 0xfb, 0x2e, + 0xfb, 0x7f, 0x41, 0x1f, 0xf7, 0xc, 0x6, 0xbd, 0xf7, 0x38, 0x99, 0xb8, + 0xb0, 0xcb, 0x8e, 0x91, 0xde, 0xf7, 0x5, 0xad, 0x8c, 0x8, 0x94, 0x91, + 0x83, 0x78, 0x7d, 0x6b, 0x38, 0x72, 0x3c, 0x1f, 0x7a, 0x56, 0x7d, 0x57, + 0x6e, 0x1a, 0x13, 0xa0, 0x4a, 0xc0, 0x8b, 0x9c, 0xdb, 0xb9, 0xd9, 0xc0, + 0xaa, 0x1e, 0x75, 0x98, 0x5, 0x73, 0x88, 0x57, 0x58, 0x76, 0x1b, 0x86, + 0x87, 0x90, 0x94, 0x9d, 0x9f, 0xc3, 0xa0, 0xc7, 0x1f, 0xa2, 0xce, 0xa4, + 0xd4, 0xae, 0x1a, 0xb7, 0x73, 0xae, 0x54, 0x39, 0x50, 0x37, 0x3a, 0x58, + 0x1e, 0x8a, 0x8d, 0x5, 0x94, 0xa2, 0x99, 0xad, 0xb2, 0x1a, 0xce, 0x4e, + 0x8b, 0x86, 0x32, 0x4a, 0x27, 0x32, 0x51, 0x1e, 0x88, 0x8d, 0xc7, 0xf7, + 0x4e, 0x46, 0x7b, 0x72, 0x89, 0x21, 0x82, 0x6d, 0xa, 0x9a, 0xb2, 0x8e, + 0x6e, 0x1f, 0x13, 0x60, 0x6a, 0x5e, 0xfb, 0x1f, 0x52, 0xfb, 0x65, 0x1e, + 0xe, 0x89, 0x1d, 0x12, 0x13, 0x60, 0x78, 0xa, 0xaf, 0x6d, 0x2e, 0x30, + 0x6d, 0x1f, 0x77, 0x4f, 0x78, 0x50, 0x6c, 0x1a, 0x13, 0xa0, 0x76, 0x1d, + 0x6a, 0x81, 0x62, 0x61, 0x76, 0x1b, 0x84, 0x86, 0x90, 0x97, 0x99, 0x9f, + 0xc4, 0xa0, 0xc9, 0x1f, 0xa1, 0xcd, 0xa3, 0xd4, 0xad, 0x4f, 0xa, 0x13, + 0x60, 0x88, 0xa, 0xe, 0x7e, 0xa8, 0xf8, 0x35, 0xa8, 0x52, 0x1d, 0xe1, + 0x15, 0xcb, 0xbf, 0xf7, 0xaf, 0xf7, 0x0, 0xa5, 0x9f, 0x7d, 0x59, 0x40, + 0x4f, 0xfb, 0xaa, 0x2b, 0x57, 0x8d, 0xbd, 0x9f, 0x1e, 0xfb, 0xb, 0xbd, + 0x15, 0x2b, 0xd7, 0x56, 0xdd, 0xf7, 0x34, 0xf7, 0x12, 0xf7, 0x40, 0xf7, + 0x29, 0xf7, 0x1a, 0xfb, 0x9, 0x9f, 0x65, 0xfb, 0x32, 0xfb, 0x17, 0xfb, + 0x40, 0xfb, 0x2e, 0x1e, 0xe, 0x87, 0x1d, 0x59, 0x1d, 0x78, 0x6b, 0x43, + 0x44, 0xfb, 0x8a, 0x4f, 0x1d, 0x57, 0x1f, 0x88, 0x8e, 0xad, 0xf2, 0x44, + 0x7d, 0x64, 0x87, 0x38, 0x81, 0x6d, 0xa, 0xaf, 0x9d, 0x89, 0x72, 0x75, + 0x4a, 0xfb, 0x85, 0x4f, 0xfb, 0x8f, 0x1f, 0x69, 0x83, 0x6d, 0x87, 0xa, + 0x6d, 0x8d, 0xab, 0xa1, 0xa8, 0xe3, 0x93, 0xac, 0x1f, 0xe, 0xfb, 0x61, + 0xb0, 0xf7, 0x2f, 0xd3, 0xf7, 0xfc, 0xb6, 0x7e, 0x77, 0x12, 0x8c, 0xf7, + 0x11, 0x13, 0xd8, 0xf3, 0xfb, 0x3c, 0x15, 0x66, 0xf7, 0x9f, 0xb0, 0x7, + 0x68, 0x6d, 0x8b, 0xa9, 0xa0, 0xf7, 0x13, 0xf8, 0x37, 0xb1, 0xf7, 0x27, + 0x1f, 0xfb, 0x1, 0x6, 0x7d, 0x54, 0x6f, 0xa, 0x13, 0xe8, 0xab, 0x86, + 0x84, 0xaf, 0x4b, 0x1b, 0xfb, 0x13, 0xfb, 0x22, 0xfb, 0x60, 0xfb, 0x11, + 0x6a, 0x8b, 0xfb, 0x5, 0xf4, 0xd4, 0xb8, 0xc5, 0xb9, 0xa7, 0x1f, 0x8d, + 0x89, 0x4f, 0xfb, 0x77, 0x83, 0x6d, 0x6d, 0x8e, 0x57, 0x88, 0x19, 0xa1, + 0xf7, 0xc1, 0x15, 0xd6, 0xdc, 0xf7, 0x67, 0xdd, 0xa7, 0x93, 0x70, 0x74, + 0x54, 0x4a, 0xfb, 0x93, 0x2e, 0x62, 0x8b, 0xbc, 0xa4, 0x1e, 0xe, 0xfb, + 0xa5, 0xa0, 0x76, 0xf8, 0x62, 0x77, 0x1, 0x76, 0x83, 0xa, 0xab, 0xe8, + 0x95, 0xbb, 0xa5, 0xce, 0x8, 0xc0, 0xa1, 0xbf, 0xef, 0xa7, 0x1b, 0x91, + 0x91, 0x83, 0x83, 0x92, 0x1f, 0x81, 0x94, 0x98, 0x7f, 0x9e, 0x1b, 0xaa, + 0xa7, 0xa6, 0xb9, 0xcd, 0x55, 0x8b, 0x87, 0x49, 0x50, 0xfb, 0xc, 0x51, + 0x68, 0x1f, 0xc3, 0xf7, 0x46, 0x48, 0x7a, 0x6c, 0x89, 0x25, 0x82, 0x6d, + 0xa, 0xaf, 0x9d, 0x89, 0x72, 0x6b, 0x5a, 0xfb, 0x3c, 0x56, 0xfb, 0x48, + 0x1f, 0xe, 0xfb, 0xa5, 0x93, 0x76, 0xf8, 0x51, 0xac, 0x87, 0x77, 0x12, + 0x8e, 0xa6, 0xf7, 0x2d, 0xeb, 0xa4, 0xa8, 0x13, 0xdc, 0x85, 0xa, 0x96, + 0x95, 0x87, 0x86, 0x97, 0x1f, 0x86, 0x9a, 0x9c, 0x85, 0xa3, 0x1b, 0xcb, + 0xe4, 0xb0, 0xec, 0xba, 0x6f, 0xb6, 0x6c, 0xb3, 0x1f, 0x66, 0xbb, 0x62, + 0xb5, 0xad, 0x1a, 0x90, 0x87, 0xbc, 0xc0, 0xc6, 0xa4, 0x46, 0x59, 0x93, + 0x1e, 0xa6, 0x89, 0x5, 0x13, 0xbc, 0x79, 0xa, 0x7b, 0x82, 0x91, 0x90, + 0x80, 0x1f, 0x91, 0x80, 0x7e, 0x90, 0x72, 0x1b, 0x4a, 0x3c, 0x67, 0x32, + 0x62, 0xaa, 0x5f, 0xab, 0x60, 0x1f, 0xae, 0x5c, 0xb1, 0x5c, 0x60, 0x1a, + 0x72, 0x78, 0x6d, 0x65, 0x82, 0x43, 0x7c, 0xa, 0xe, 0x66, 0x1d, 0xf8, + 0x34, 0xb5, 0xf7, 0x25, 0x77, 0x1, 0xf7, 0x5f, 0xf7, 0x21, 0x15, 0x79, + 0x89, 0x55, 0x4e, 0x72, 0x1b, 0x84, 0x87, 0x8f, 0x95, 0xad, 0xc1, 0xf7, + 0x43, 0xac, 0xf7, 0xe, 0x1f, 0xde, 0xb5, 0x43, 0x6, 0xb2, 0xf7, 0x25, + 0x5, 0x68, 0x6, 0x47, 0x21, 0x3f, 0x6c, 0x64, 0x7c, 0x8, 0x68, 0xbe, + 0x7, 0x5f, 0xfb, 0x32, 0x5b, 0xfb, 0x2a, 0x62, 0x1a, 0x84, 0x8b, 0x4f, + 0xd3, 0xd9, 0xbc, 0xd9, 0xc5, 0xb0, 0x1e, 0xe, 0x64, 0xa, 0xac, 0x77, + 0x12, 0x13, 0xc0, 0x2c, 0x1d, 0x56, 0x4d, 0x73, 0x1b, 0x84, 0x87, 0x91, + 0x98, 0x31, 0xa, 0x63, 0xa0, 0xc2, 0xaf, 0x96, 0x1f, 0x13, 0xa0, 0x44, + 0x1d, 0xa1, 0x88, 0x71, 0x6e, 0x78, 0x50, 0x79, 0x4f, 0x1f, 0x78, 0x4d, + 0x78, 0x4b, 0x68, 0x47, 0xa, 0xe, 0xfb, 0x6e, 0x93, 0x76, 0xf8, 0x6f, + 0x77, 0x1, 0xda, 0xf7, 0xf, 0xdd, 0xf7, 0x9, 0x3, 0xe0, 0x7e, 0x15, + 0xa5, 0x6, 0xf7, 0x3e, 0xf7, 0x32, 0xf7, 0xc, 0xf7, 0x29, 0xef, 0x1a, + 0xb6, 0x68, 0xa4, 0x6f, 0x73, 0x6d, 0x73, 0x6a, 0x76, 0x95, 0x7d, 0x95, + 0x7f, 0x1e, 0x97, 0x7d, 0x97, 0x80, 0x79, 0x1a, 0x6f, 0x75, 0x60, 0x23, + 0xfb, 0x8, 0x1e, 0xf7, 0x4e, 0x82, 0xcf, 0x75, 0xdb, 0x1e, 0x4f, 0x7c, + 0x63, 0x86, 0x54, 0x83, 0x8, 0x70, 0x7, 0xaa, 0xa5, 0x87, 0x6a, 0x1f, + 0x86, 0x8c, 0x85, 0x84, 0x1a, 0xe, 0x90, 0x93, 0x76, 0xf7, 0x5f, 0x77, + 0xf7, 0xb8, 0x77, 0x1, 0xe0, 0xf7, 0xb, 0xf7, 0xe2, 0xd7, 0x3, 0xea, + 0x7e, 0x15, 0xa6, 0x6, 0xda, 0xf7, 0xd, 0xdb, 0xf7, 0x22, 0x94, 0x9e, + 0x8, 0x8d, 0x6, 0x8f, 0x5d, 0x9c, 0xfb, 0x67, 0x8d, 0x72, 0x8, 0xa6, + 0x6, 0xb5, 0xb7, 0xf7, 0x7a, 0xf7, 0x85, 0xf7, 0x11, 0x1a, 0xb9, 0x66, + 0x9e, 0x73, 0x6a, 0x74, 0x6b, 0x70, 0x77, 0x95, 0x7d, 0x95, 0x7d, 0x1e, + 0x95, 0x7d, 0x96, 0x7d, 0x79, 0x1a, 0x62, 0x37, 0x2a, 0x68, 0x62, 0x1e, + 0x6b, 0xf7, 0xe0, 0x5, 0x70, 0x6, 0x52, 0x30, 0x5d, 0x31, 0x58, 0x30, + 0x8, 0x89, 0x6, 0xf7, 0x12, 0x7e, 0xd3, 0x77, 0xd5, 0x1e, 0x5e, 0x82, + 0x5d, 0x81, 0x4b, 0x82, 0x8, 0x70, 0x7, 0xab, 0xa5, 0x8b, 0x69, 0x1f, + 0x85, 0x8c, 0x84, 0x83, 0x1a, 0xe, 0x93, 0x76, 0xe9, 0x77, 0xb4, 0x77, + 0xf8, 0x10, 0x77, 0x1, 0xf7, 0x41, 0xf7, 0x22, 0x15, 0xfb, 0xa, 0x9f, + 0xab, 0x66, 0xba, 0x1b, 0xcd, 0xc4, 0xdf, 0xb1, 0xa5, 0x1f, 0x76, 0x99, + 0x5, 0x68, 0x76, 0x75, 0x75, 0x78, 0x1b, 0x78, 0x7c, 0x99, 0xb0, 0x83, + 0x1f, 0x6b, 0xf7, 0x30, 0x5, 0x9f, 0x99, 0xb6, 0xd6, 0xae, 0x1b, 0x97, + 0x92, 0x86, 0x86, 0x93, 0x1f, 0x86, 0x92, 0x93, 0x86, 0x99, 0x1b, 0xac, + 0xa3, 0xa5, 0xa5, 0xa3, 0x74, 0xb1, 0x6a, 0x57, 0x69, 0x6a, 0x22, 0x41, + 0x1f, 0x7b, 0xd9, 0x82, 0xab, 0x77, 0xa7, 0xfb, 0x3b, 0x73, 0x18, 0x70, + 0x7, 0x8c, 0x95, 0x98, 0x8c, 0x96, 0x1b, 0x9e, 0xa4, 0x8b, 0x48, 0x98, + 0x1f, 0xa9, 0xfb, 0x2e, 0x5, 0x34, 0x55, 0x7c, 0x73, 0x75, 0x1b, 0x7f, + 0x85, 0x91, 0x91, 0x81, 0x1f, 0x8f, 0x83, 0x81, 0x90, 0x7b, 0x1b, 0x68, + 0x77, 0x6c, 0x73, 0x7b, 0x94, 0x5f, 0xc0, 0xc2, 0xcb, 0xd4, 0xdd, 0xb1, + 0x1f, 0xe, 0x79, 0x1d, 0x1, 0xf7, 0xdc, 0xcb, 0x3, 0x45, 0xa, 0x95, + 0x94, 0x7c, 0x1e, 0x93, 0x7e, 0x7d, 0x93, 0x79, 0x38, 0x1d, 0x6a, 0x99, + 0x80, 0x99, 0x81, 0x1e, 0x98, 0x82, 0x99, 0x83, 0x75, 0x7a, 0xa, 0xe, + 0xfb, 0xa5, 0x52, 0x76, 0xf8, 0x46, 0xe8, 0x1, 0x79, 0x74, 0x15, 0xa7, + 0xb1, 0x8b, 0x8b, 0x9a, 0x1b, 0xa4, 0xa4, 0x79, 0x78, 0xa8, 0x1f, 0x75, + 0xac, 0xb2, 0x73, 0xc0, 0x76, 0xa, 0x7f, 0x8e, 0x83, 0x8f, 0x85, 0x1f, + 0x91, 0x82, 0x92, 0x86, 0x82, 0x1a, 0x84, 0x83, 0x83, 0x7e, 0x6f, 0x81, + 0xa6, 0xac, 0x7a, 0x1e, 0x7a, 0xab, 0x72, 0xb1, 0x51, 0xa2, 0x80, 0xa, + 0xfb, 0x2b, 0x70, 0x1d, 0xfb, 0xf9, 0x5, 0xe, 0x8a, 0xa, 0x12, 0xa7, + 0xf3, 0x60, 0xf1, 0x13, 0xe0, 0xf7, 0x69, 0xfb, 0x43, 0x15, 0x47, 0x95, + 0x7e, 0xad, 0xaf, 0x1a, 0x13, 0xd0, 0xc5, 0xc6, 0xf7, 0x2f, 0xc0, 0x1a, + 0xb7, 0x77, 0x9b, 0x47, 0x9c, 0x1e, 0x8d, 0x7, 0xf1, 0x9d, 0xa6, 0xa5, + 0x9d, 0xd2, 0xb8, 0xf7, 0x47, 0x18, 0x9d, 0xd1, 0xae, 0xb8, 0xe0, 0x9a, + 0x8e, 0x97, 0x18, 0xfb, 0x19, 0x37, 0x77, 0xfb, 0xe, 0x6c, 0x1f, 0x5d, + 0xfb, 0x47, 0x7a, 0x49, 0x6f, 0x6c, 0x2f, 0x78, 0x19, 0xc4, 0x7d, 0xa6, + 0x79, 0x60, 0x1a, 0x13, 0xe0, 0x64, 0x4e, 0xfb, 0x41, 0x52, 0x1a, 0x4b, + 0xb2, 0x6f, 0xf7, 0x23, 0x1e, 0xe, 0xfc, 0x4e, 0xfb, 0x3b, 0x76, 0xf7, + 0x53, 0x8d, 0x1d, 0xb0, 0xe3, 0x3, 0xf7, 0x5d, 0xf9, 0x41, 0x15, 0xcf, + 0x6, 0xfb, 0x79, 0xfd, 0xfd, 0x5, 0x47, 0x6, 0xe, 0x8a, 0xa, 0x1, + 0xf7, 0x8, 0xf1, 0x6d, 0xf3, 0x3, 0xfb, 0x12, 0xfb, 0x43, 0x15, 0xe0, + 0x9b, 0xad, 0xb1, 0x9e, 0xd1, 0xb8, 0xf7, 0x3f, 0x18, 0x9e, 0xd3, 0xa6, + 0xb1, 0xf0, 0x9e, 0x8, 0x8d, 0x7, 0x47, 0x9b, 0x77, 0x9a, 0xb6, 0xc0, + 0xc6, 0xf7, 0x2f, 0xc6, 0x1a, 0xb0, 0x7e, 0xad, 0x47, 0x96, 0x1e, 0x8e, + 0x97, 0x5, 0xf7, 0x23, 0xb2, 0x6d, 0x4b, 0x1f, 0x52, 0x4e, 0xfb, 0x3e, + 0x63, 0x1a, 0x60, 0xa6, 0x7a, 0xc4, 0x7c, 0x1e, 0x2e, 0x78, 0x71, 0x5e, + 0x79, 0x49, 0x5d, 0xfb, 0x3f, 0x18, 0xfb, 0xd, 0x6b, 0x38, 0x7c, 0xfb, + 0x19, 0x1b, 0xe, 0x2f, 0xf7, 0x45, 0xdf, 0x48, 0x76, 0xa2, 0x76, 0xd1, + 0xdf, 0x8f, 0x77, 0x12, 0x13, 0x50, 0xef, 0xf7, 0x41, 0x15, 0xae, 0x9b, + 0xa3, 0xb0, 0xb7, 0x1b, 0xb4, 0xac, 0x7c, 0x7b, 0xaa, 0x1f, 0x13, 0x88, + 0x79, 0xae, 0xad, 0x78, 0xb6, 0x1b, 0xc9, 0xac, 0xb7, 0xb5, 0xa9, 0x1f, + 0x67, 0xd1, 0x5, 0x68, 0x74, 0x72, 0x66, 0x63, 0x1b, 0x6e, 0x68, 0x9b, + 0x9b, 0x67, 0x1f, 0x13, 0x30, 0x9d, 0x64, 0x63, 0x9d, 0x69, 0x1b, 0x48, + 0x67, 0x5f, 0x61, 0x75, 0x1f, 0xe, 0xfb, 0xa5, 0xfb, 0x4c, 0x76, 0xf8, + 0xbd, 0xf7, 0x24, 0x1, 0x9e, 0xf7, 0x29, 0x95, 0xf7, 0x24, 0x3, 0xf7, + 0x55, 0xf7, 0xa7, 0x15, 0x4c, 0xfb, 0x39, 0x3a, 0xfb, 0x2f, 0x7b, 0x6d, + 0x8, 0x82, 0x7a, 0x86, 0x7a, 0x7c, 0x1a, 0x5d, 0xac, 0x68, 0xae, 0xc6, + 0x9e, 0xc1, 0xb5, 0x8e, 0x1e, 0x94, 0xf7, 0x7, 0xa4, 0xf7, 0x32, 0x9f, + 0xf2, 0x8, 0x5f, 0xf7, 0x2d, 0x15, 0x63, 0xab, 0x6b, 0xb3, 0xb3, 0xab, + 0xab, 0xb3, 0xb3, 0x6b, 0xab, 0x63, 0x63, 0x6b, 0x6b, 0x63, 0x1e, 0xe, + 0xfb, 0xe, 0x76, 0xf7, 0x2b, 0x76, 0xf8, 0x4f, 0xac, 0xf7, 0x5, 0x77, + 0x1, 0x97, 0xf7, 0x13, 0x3, 0xf7, 0x6a, 0xc4, 0x15, 0x63, 0x9c, 0x86, + 0xbe, 0xa5, 0x1a, 0xce, 0xca, 0xf7, 0x68, 0xde, 0xa0, 0x8e, 0x82, 0x84, + 0x1e, 0xfb, 0x29, 0xfc, 0x3f, 0x15, 0x5d, 0xfb, 0x16, 0x5, 0xad, 0x6, + 0xba, 0xf7, 0x19, 0xdd, 0x98, 0xb6, 0xc8, 0xb5, 0xc6, 0x19, 0x70, 0x9d, + 0x6b, 0x5b, 0x64, 0x63, 0x5c, 0x8a, 0x19, 0xe7, 0xf7, 0x9a, 0x5, 0x85, + 0x92, 0x97, 0x86, 0x9d, 0x1b, 0xaa, 0xab, 0xa5, 0xb5, 0xab, 0x79, 0xa9, + 0x68, 0x9c, 0x1f, 0xb8, 0xf7, 0x12, 0x5, 0x68, 0x6, 0x62, 0xfb, 0x8, + 0x5, 0x8d, 0x81, 0x81, 0x8c, 0x7f, 0x1b, 0xfb, 0x1b, 0xfb, 0x26, 0xfb, + 0x2e, 0xfb, 0x32, 0xfb, 0xe, 0xe9, 0x61, 0xc1, 0x1f, 0xe, 0x7f, 0xaa, + 0x6c, 0xf3, 0x23, 0xf7, 0x42, 0xfb, 0x2c, 0x76, 0xf7, 0x17, 0x77, 0xc2, + 0x77, 0xf7, 0x43, 0xc7, 0xf7, 0xab, 0xad, 0x12, 0x6b, 0xa9, 0x13, 0x4f, + 0x80, 0xf7, 0x30, 0xbc, 0x15, 0x6e, 0xab, 0xb8, 0x6b, 0xb8, 0x1b, 0xe7, + 0xb9, 0xd0, 0xed, 0x9d, 0x1f, 0x72, 0x6, 0x67, 0x7b, 0x7f, 0x70, 0x46, + 0x1b, 0x65, 0x4a, 0xa5, 0x91, 0x7c, 0x1f, 0xad, 0xc0, 0xaa, 0xde, 0x95, + 0xbd, 0x8, 0xf7, 0x7, 0x6, 0x95, 0xc7, 0x5, 0xfb, 0x6, 0x6, 0xb2, + 0xf7, 0x5e, 0x5, 0xbc, 0x94, 0xa0, 0xa7, 0xaa, 0x1b, 0xa7, 0x87, 0x73, + 0x73, 0x86, 0x1f, 0x89, 0x82, 0x8a, 0x82, 0x83, 0x1a, 0x67, 0xab, 0x7c, + 0xa0, 0xa7, 0xac, 0xa2, 0xb7, 0xcc, 0x4f, 0xa6, 0x58, 0x67, 0xfb, 0x37, + 0x7d, 0xfb, 0xbf, 0x59, 0x1e, 0x22, 0x6, 0x81, 0x4f, 0x5, 0xf7, 0x1, + 0x6, 0x83, 0x56, 0x86, 0x4d, 0x85, 0x5c, 0x8, 0x13, 0x23, 0x80, 0x93, + 0x78, 0x7d, 0x91, 0x6b, 0x1b, 0x5d, 0x5d, 0x6d, 0x50, 0x1f, 0x13, 0x1f, + 0x80, 0x5e, 0xaf, 0x64, 0xbe, 0xca, 0xa2, 0xaf, 0xa3, 0x9a, 0x1e, 0x60, + 0xb4, 0x15, 0x13, 0x8f, 0x80, 0x6a, 0x85, 0x7b, 0x65, 0x66, 0x1b, 0x75, + 0x69, 0x99, 0xad, 0xb7, 0xaa, 0x94, 0x9f, 0xa9, 0xa0, 0x79, 0x7f, 0x98, + 0x1f, 0xe, 0xd2, 0x76, 0xdc, 0xd5, 0xf7, 0x65, 0xd5, 0xd4, 0x77, 0x1, + 0xd3, 0xdb, 0xf7, 0x5d, 0xda, 0x3, 0xf7, 0x1c, 0xf7, 0xcc, 0x15, 0xca, + 0xbe, 0xbf, 0xcb, 0xcd, 0xba, 0x55, 0x4c, 0x4a, 0x5b, 0x54, 0x48, 0x4a, + 0x5b, 0xc4, 0xcc, 0x1e, 0x39, 0xfb, 0x8e, 0x15, 0xe1, 0xe3, 0x5, 0x78, + 0xa7, 0xb3, 0x7c, 0xb6, 0x1b, 0xb6, 0xb1, 0x9a, 0x9e, 0xa7, 0x1f, 0xe1, + 0x33, 0xbf, 0xbf, 0x34, 0xe3, 0x5, 0xa0, 0xa6, 0x96, 0xb2, 0xb6, 0x1a, + 0xb6, 0x7d, 0xb1, 0x78, 0xa7, 0x1e, 0xe3, 0xe3, 0x57, 0xbd, 0x34, 0x35, + 0x5, 0x9e, 0x6e, 0x67, 0x95, 0x5f, 0x1b, 0x62, 0x62, 0x81, 0x78, 0x6f, + 0x1f, 0x35, 0xe1, 0x57, 0x59, 0xe3, 0x33, 0x5, 0x78, 0x70, 0x7c, 0x64, + 0x60, 0x1a, 0x60, 0x98, 0x65, 0xa0, 0x6f, 0x1e, 0x33, 0x33, 0x5, 0xe, + 0x8b, 0xa4, 0xf7, 0x1f, 0xbd, 0xd9, 0xbd, 0xf7, 0xc2, 0xa4, 0x1, 0xb9, + 0x16, 0xf7, 0xd6, 0xa4, 0x6, 0x59, 0x8d, 0x6c, 0x8c, 0xb4, 0x1a, 0xa8, + 0x98, 0xb6, 0x91, 0xa2, 0x1e, 0xf7, 0x2c, 0x6, 0x99, 0xbd, 0x5, 0xfb, + 0x2c, 0x6, 0xa0, 0xd9, 0x5, 0xf7, 0x2a, 0x6, 0x98, 0xbd, 0x5, 0xfb, + 0x1b, 0x6, 0xf7, 0x30, 0xf7, 0x7d, 0x90, 0x1d, 0xb8, 0x93, 0x19, 0xa4, + 0xfb, 0x5c, 0x72, 0x7, 0xc7, 0xa1, 0x7c, 0x79, 0x82, 0x86, 0x80, 0x84, + 0x80, 0x1f, 0xfb, 0x2b, 0xfb, 0x80, 0x5, 0x74, 0xc1, 0x56, 0xf7, 0x54, + 0x9d, 0x1a, 0xa2, 0x97, 0x98, 0xca, 0x1e, 0xa4, 0xfb, 0xac, 0x72, 0x7, + 0xc0, 0x84, 0x8a, 0x92, 0xa1, 0x64, 0xd8, 0xfb, 0x9b, 0x18, 0xfb, 0x11, + 0x6, 0x7d, 0x59, 0x5, 0xf7, 0x22, 0x6, 0x75, 0x3d, 0x5, 0xfb, 0x21, + 0x6, 0x7d, 0x59, 0x5, 0xf7, 0x21, 0x6, 0x70, 0x2c, 0x7f, 0x62, 0x71, + 0x8d, 0x4c, 0x86, 0x19, 0xe, 0xfc, 0x4e, 0x3e, 0x76, 0xf0, 0x76, 0xf7, + 0x96, 0x77, 0xad, 0x77, 0xf8, 0x57, 0x77, 0x12, 0xcd, 0xe3, 0x13, 0xdc, + 0xf5, 0xf7, 0xf5, 0x15, 0xcf, 0x6, 0xef, 0xf7, 0xe0, 0x5, 0x43, 0x6, + 0xfb, 0x78, 0xfd, 0xa3, 0x15, 0xd4, 0x6, 0x13, 0xec, 0xeb, 0xf7, 0xe6, + 0x5, 0x47, 0x6, 0xe, 0xfb, 0xe, 0x76, 0xa2, 0x77, 0xf7, 0x99, 0xa6, + 0xf7, 0x90, 0xa4, 0xf7, 0x78, 0xa1, 0x12, 0xaf, 0xf7, 0x6, 0x9d, 0xd1, + 0xa9, 0xd8, 0x9e, 0xd2, 0x13, 0x7f, 0x80, 0xf7, 0xb2, 0xf7, 0xd, 0x15, + 0x8d, 0x8f, 0x5, 0x88, 0x93, 0x95, 0x8a, 0x97, 0x1b, 0xc6, 0xc5, 0xbc, + 0xd6, 0xca, 0x62, 0xc1, 0x78, 0xa3, 0x1f, 0x26, 0xf7, 0xc, 0x67, 0xb5, + 0xb4, 0x1a, 0xb0, 0xa3, 0xb0, 0xc3, 0xaf, 0xa7, 0x7c, 0x7f, 0x82, 0x83, + 0x87, 0x83, 0x84, 0x1e, 0x80, 0x84, 0x82, 0x81, 0x77, 0x1a, 0x70, 0xa3, + 0x71, 0xaa, 0xa0, 0xb0, 0x99, 0xbb, 0xb7, 0x62, 0xc0, 0x27, 0x37, 0x49, + 0x55, 0x3a, 0x4b, 0xb7, 0x56, 0x96, 0x80, 0x1e, 0x89, 0x88, 0x5, 0x8f, + 0x7e, 0x6d, 0x8d, 0x86, 0x1b, 0xfb, 0x0, 0x6e, 0xfb, 0x2b, 0x28, 0xde, + 0x1f, 0xf7, 0x16, 0xfb, 0x34, 0x9e, 0x77, 0x63, 0x1a, 0x4e, 0x4f, 0x7d, + 0x70, 0x75, 0x5f, 0x95, 0x9d, 0x96, 0x93, 0x8f, 0x94, 0x93, 0x1e, 0x94, + 0x93, 0x94, 0x94, 0xa2, 0x1a, 0xb4, 0x66, 0x95, 0x77, 0x6f, 0x6e, 0x76, + 0x64, 0x1e, 0x13, 0xbf, 0x80, 0x52, 0xc4, 0x5b, 0xe3, 0xe2, 0xd8, 0xc4, + 0xd8, 0xc6, 0x64, 0xb9, 0x77, 0xa4, 0x1e, 0x3b, 0xec, 0x15, 0x88, 0x8e, + 0x4b, 0xcf, 0xbe, 0x1a, 0xb2, 0xa5, 0xa0, 0xab, 0xc2, 0xf7, 0x4, 0xfb, + 0x17, 0x50, 0x60, 0x69, 0x78, 0x72, 0x6e, 0x7a, 0x97, 0xc5, 0x56, 0x1e, + 0xe, 0xfb, 0xdd, 0xf8, 0xa1, 0xf7, 0x16, 0x1, 0xb8, 0xf7, 0x16, 0xdf, + 0xf7, 0x16, 0x3, 0xb8, 0xf8, 0xe2, 0x15, 0x4b, 0xa, 0xf7, 0x68, 0x16, + 0x4b, 0xa, 0xe, 0xe0, 0x79, 0xb9, 0xf7, 0x4, 0xa2, 0xe2, 0x77, 0xf7, + 0xb4, 0x9f, 0xf0, 0xb9, 0x1, 0x9f, 0xc8, 0x58, 0xc8, 0xe4, 0xe0, 0xf8, + 0x1c, 0xc8, 0x3, 0xa9, 0xf7, 0xe1, 0x15, 0xf7, 0x57, 0xf7, 0x2b, 0xf7, + 0x31, 0xf7, 0x55, 0xf7, 0x55, 0xf7, 0x2b, 0xfb, 0x31, 0xfb, 0x58, 0xfb, + 0x58, 0xfb, 0x2b, 0xfb, 0x2e, 0xfb, 0x55, 0xfb, 0x55, 0xfb, 0x2b, 0xf7, + 0x2f, 0xf7, 0x58, 0x1e, 0xc8, 0x16, 0xfb, 0x38, 0xf7, 0x12, 0xfb, 0x21, + 0xf7, 0x31, 0xf7, 0x31, 0xf7, 0x12, 0xf7, 0x20, 0xf7, 0x38, 0xf7, 0x38, + 0xfb, 0x12, 0xf7, 0x23, 0xfb, 0x31, 0xfb, 0x32, 0xfb, 0x11, 0xfb, 0x23, + 0xfb, 0x37, 0x1e, 0xf8, 0x59, 0x38, 0x15, 0x7a, 0x43, 0x5, 0x70, 0x6e, + 0x66, 0x80, 0x48, 0x1b, 0xfb, 0xc, 0x2d, 0xc8, 0xf7, 0x21, 0xe0, 0xc8, + 0xf7, 0x3, 0xf7, 0x32, 0xc0, 0xa5, 0x82, 0x82, 0xa6, 0x1f, 0x9a, 0x86, + 0x92, 0x84, 0x82, 0x1a, 0x44, 0x7a, 0x7, 0xb6, 0x83, 0x70, 0xba, 0x3f, + 0x1b, 0x2f, 0x61, 0x3e, 0x28, 0x20, 0xa8, 0x43, 0xef, 0xcc, 0xba, 0xb2, + 0xbb, 0x9f, 0x1f, 0xe, 0xfc, 0x20, 0xf8, 0x24, 0xb8, 0x72, 0x76, 0xf7, + 0x97, 0xa6, 0x12, 0x9b, 0xd9, 0x13, 0x70, 0xf7, 0x54, 0xf8, 0x6f, 0x15, + 0x87, 0x7b, 0x88, 0x81, 0x81, 0x1a, 0x6c, 0xaa, 0x82, 0x97, 0xb3, 0xb0, + 0xb8, 0xaa, 0xa0, 0x1e, 0x7e, 0x94, 0x5, 0x7f, 0x85, 0x6f, 0x6e, 0x7f, + 0x1b, 0x88, 0x89, 0x8d, 0x91, 0xa1, 0x98, 0xb2, 0x94, 0xa7, 0x1f, 0xb9, + 0xf7, 0x20, 0x3f, 0x88, 0x81, 0x6a, 0x6f, 0xa, 0x9a, 0x88, 0x84, 0xa5, + 0x64, 0x1b, 0x39, 0x2c, 0xfb, 0xb, 0x33, 0x1f, 0x13, 0xb0, 0x77, 0x92, + 0x51, 0xcc, 0xc1, 0xac, 0xbd, 0xa6, 0x9a, 0x1e, 0x2b, 0x16, 0xb8, 0xc5, + 0xf7, 0x1c, 0xba, 0x94, 0x95, 0x7f, 0x7a, 0x63, 0x5e, 0xfb, 0x24, 0x52, + 0x88, 0x78, 0x8f, 0xa7, 0x1e, 0xe, 0x72, 0x1d, 0x97, 0xf7, 0x6d, 0x71, + 0x1d, 0x81, 0x94, 0x96, 0x82, 0x93, 0x1b, 0x91, 0x8f, 0x8e, 0x98, 0x1f, + 0x41, 0x8d, 0xa, 0xe3, 0x5f, 0xa, 0xf7, 0x4d, 0x82, 0x71, 0x1d, 0x80, + 0x94, 0x97, 0x8a, 0x1d, 0x41, 0x8d, 0xa, 0xe3, 0xdc, 0xaf, 0x1a, 0x94, + 0x88, 0x8e, 0x86, 0x79, 0x60, 0x62, 0x7b, 0x6c, 0xa, 0xe, 0x53, 0xf7, + 0x15, 0x76, 0xf7, 0x5d, 0xce, 0x48, 0xe5, 0x1, 0xf8, 0x65, 0xe5, 0x43, + 0xd3, 0x3, 0xbe, 0xf7, 0xc9, 0x15, 0xf8, 0x44, 0xfb, 0x5d, 0xd3, 0xf7, + 0xa0, 0xfc, 0x8c, 0x6, 0xe, 0xe0, 0x79, 0xb9, 0xf7, 0xf, 0xf7, 0x4e, + 0xf7, 0x3d, 0xa0, 0xf7, 0x4, 0xb9, 0x1, 0xa9, 0xc8, 0xf7, 0x3a, 0xd2, + 0xf7, 0x1, 0xd4, 0xf7, 0x27, 0xc8, 0x3, 0xa9, 0xf7, 0xe3, 0x15, 0xfb, + 0x58, 0xf7, 0x2b, 0xfb, 0x31, 0xf7, 0x55, 0xf7, 0x55, 0xf7, 0x2b, 0xf7, + 0x2d, 0xf7, 0x58, 0xf7, 0x58, 0xfb, 0x2b, 0xf7, 0x32, 0xfb, 0x55, 0xfb, + 0x55, 0xfb, 0x2b, 0xfb, 0x2f, 0xfb, 0x57, 0x1e, 0xc8, 0x16, 0xf7, 0x38, + 0xf7, 0x11, 0xf7, 0x20, 0xf7, 0x32, 0xf7, 0x32, 0xf7, 0x11, 0xfb, 0x24, + 0xfb, 0x38, 0xfb, 0x38, 0xfb, 0x11, 0xfb, 0x1f, 0xfb, 0x32, 0xfb, 0x31, + 0xfb, 0x12, 0xf7, 0x23, 0xf7, 0x38, 0x1e, 0xf7, 0xb, 0xfb, 0x4c, 0x15, + 0xf7, 0x3a, 0x9b, 0x6, 0x5a, 0x90, 0x8c, 0x8c, 0xb5, 0x1a, 0xf1, 0xb7, + 0x7, 0x30, 0xc8, 0xc8, 0x40, 0x89, 0x1b, 0xd1, 0x6, 0x77, 0xa5, 0x6e, + 0xad, 0x37, 0xf7, 0x9, 0x8, 0xbb, 0x9a, 0xac, 0xb3, 0xbd, 0x1a, 0xcc, + 0x54, 0xa8, 0x4d, 0x1e, 0xfb, 0x4b, 0x7b, 0x6, 0xbc, 0x86, 0x89, 0x8a, + 0x62, 0x1a, 0xfb, 0x8d, 0x7, 0x61, 0x8d, 0x8a, 0x5a, 0x86, 0x1e, 0xf7, + 0xa, 0xf7, 0x3e, 0x15, 0xf7, 0x3d, 0xb3, 0x7, 0xb2, 0xa9, 0x78, 0x51, + 0x56, 0x77, 0x64, 0x5b, 0x1f, 0xe, 0xfb, 0xdd, 0xf8, 0xbd, 0xd1, 0x1, + 0xbe, 0xf8, 0xbd, 0x15, 0xf7, 0xd8, 0x6, 0x9d, 0xd1, 0x5, 0xfb, 0xd7, + 0x6, 0xe, 0xfb, 0x9a, 0xf8, 0x36, 0x76, 0xf7, 0xb2, 0x77, 0x1, 0xde, + 0xf8, 0xb2, 0x15, 0x3c, 0xcb, 0x49, 0xda, 0xda, 0xcb, 0xc9, 0xda, 0xda, + 0x4b, 0xcd, 0x3c, 0x3c, 0x4b, 0x4d, 0x3c, 0x1e, 0xb1, 0x8a, 0x15, 0x51, + 0xb9, 0x5b, 0xc5, 0xc5, 0xba, 0xb7, 0xc5, 0xc5, 0x5c, 0xbc, 0x51, 0x51, + 0x5d, 0x5e, 0x51, 0x1e, 0xe, 0x2f, 0x8b, 0xe4, 0xb2, 0x77, 0xf7, 0x36, + 0xe4, 0x3c, 0xc9, 0xf7, 0x38, 0x77, 0x12, 0xf7, 0x85, 0xe3, 0x3e, 0xcc, + 0x13, 0xea, 0xf7, 0x90, 0xf7, 0x14, 0x15, 0xcc, 0x6, 0x13, 0xda, 0xf7, + 0x2c, 0xf7, 0x70, 0xc9, 0xfb, 0x70, 0xf7, 0x38, 0x4a, 0xfb, 0x38, 0xfb, + 0x6f, 0x4d, 0xf7, 0x6f, 0x7, 0xfb, 0x6f, 0xfb, 0xac, 0x15, 0xf8, 0x8c, + 0x6, 0x13, 0xec, 0xcf, 0xfc, 0x8c, 0x7, 0xe, 0xfb, 0xfe, 0xf7, 0xa6, + 0xd0, 0xf7, 0xab, 0xc8, 0x1, 0x8d, 0xf7, 0xa6, 0x5e, 0x1d, 0xef, 0x5, + 0xb6, 0xaa, 0xbc, 0xbd, 0x52, 0xa, 0x6d, 0x66, 0x61, 0x1f, 0x6b, 0x68, + 0x8b, 0x84, 0xfb, 0x8, 0xfb, 0x2, 0x8, 0xe, 0xfb, 0xfe, 0xf7, 0xb2, + 0x76, 0xf8, 0x3, 0xbe, 0x12, 0xf7, 0x66, 0xdf, 0x4e, 0xe3, 0x13, 0xe0, + 0xf7, 0x2, 0xf8, 0x75, 0x15, 0xcc, 0xae, 0x69, 0x4f, 0x69, 0x66, 0x4f, + 0x69, 0x81, 0x82, 0x8f, 0x97, 0x83, 0x67, 0x1d, 0xcf, 0xe1, 0xbc, 0x74, + 0xa3, 0x6e, 0x9e, 0x1f, 0x13, 0xd0, 0x63, 0x1d, 0x69, 0xa, 0xe, 0x7f, + 0x1d, 0xf7, 0x49, 0x77, 0x1, 0xf7, 0x1f, 0xf8, 0x98, 0x15, 0xbd, 0x6, + 0xf7, 0x2b, 0x21, 0x1d, 0xe, 0x35, 0xfb, 0x4e, 0x76, 0xf7, 0x63, 0xd1, + 0x4d, 0x76, 0xf7, 0x11, 0x77, 0xf7, 0xf9, 0x77, 0x12, 0x4f, 0xf7, 0xb, + 0x13, 0xdc, 0xf7, 0xaf, 0xf7, 0x4, 0x15, 0x83, 0x6c, 0x89, 0x7c, 0x7a, + 0x1a, 0x6d, 0xa1, 0x6b, 0xb3, 0xda, 0xba, 0xd6, 0xc3, 0xb5, 0x1e, 0x76, + 0x9b, 0x5, 0x13, 0xbc, 0x71, 0x80, 0x6b, 0x67, 0x79, 0x1b, 0x80, 0x85, + 0x94, 0xab, 0x93, 0x1f, 0xf3, 0xf7, 0xe4, 0x5, 0xfb, 0x1b, 0x6, 0x58, + 0xfb, 0x38, 0x5, 0xfb, 0xe, 0x62, 0x42, 0x2e, 0x53, 0x1b, 0x6e, 0x95, + 0xb7, 0xa2, 0x91, 0x1f, 0xe8, 0xf7, 0xcc, 0x5, 0x13, 0xdc, 0xfb, 0x1b, + 0x6, 0xfb, 0x3, 0xfc, 0xb, 0x5, 0x5f, 0xfb, 0x12, 0x81, 0x54, 0x64, + 0x1a, 0x60, 0xa0, 0x79, 0xa9, 0xb3, 0xa7, 0xae, 0xbd, 0xb6, 0x87, 0xc0, + 0x9c, 0xbd, 0x1e, 0x7a, 0xa2, 0x94, 0x84, 0xae, 0x1b, 0xc0, 0xcd, 0xd2, + 0xb4, 0xa2, 0x1f, 0xe, 0xfb, 0x57, 0x76, 0xf9, 0xdc, 0xb1, 0x12, 0xb2, + 0xf7, 0x64, 0x42, 0xe4, 0xf7, 0x2c, 0xe4, 0x13, 0xd8, 0xf7, 0x11, 0xfb, + 0x6c, 0x15, 0xbc, 0x6, 0xf7, 0x85, 0xf9, 0xdc, 0x5, 0xe4, 0x6, 0xfb, + 0x85, 0xfd, 0xdc, 0x5, 0xbc, 0x6, 0xf7, 0x69, 0xf9, 0x7e, 0x5, 0xed, + 0xa7, 0x92, 0x9b, 0xe5, 0x1b, 0x90, 0x9d, 0x5, 0xfb, 0xbd, 0x6, 0x13, + 0xe8, 0xfb, 0x64, 0xfb, 0x3, 0xfb, 0x30, 0xfb, 0x1c, 0xfb, 0x13, 0xf0, + 0x6c, 0xf6, 0x89, 0x1f, 0xe, 0xfc, 0x30, 0xf7, 0x95, 0xf7, 0x28, 0x1, + 0xbe, 0xf7, 0x28, 0x3, 0xbe, 0xf7, 0xdf, 0x3c, 0xa, 0xfb, 0xdd, 0xfb, + 0x6e, 0xb4, 0x80, 0xd8, 0x49, 0xd8, 0xf4, 0x77, 0x12, 0x13, 0x50, 0xb4, + 0x90, 0x15, 0x49, 0x2a, 0x98, 0x7f, 0x5, 0x13, 0xb0, 0x7d, 0xa, 0x72, + 0x7c, 0x6c, 0x6e, 0x7b, 0x86, 0xa, 0x9f, 0x79, 0xbf, 0x1b, 0xc0, 0xe9, + 0xa3, 0xca, 0xbf, 0x5e, 0x9e, 0x67, 0x7d, 0x7e, 0x8b, 0x89, 0x83, 0x1f, + 0xb8, 0xce, 0x5, 0xe, 0xfb, 0xfe, 0xf7, 0xbb, 0x76, 0xf7, 0x17, 0x76, + 0xf7, 0xbf, 0x77, 0x1, 0xa9, 0xf8, 0x14, 0x8c, 0xa, 0x62, 0x71, 0x91, + 0xa0, 0x93, 0x1f, 0x9d, 0xb9, 0xc7, 0xf7, 0x21, 0xa7, 0xcd, 0x5e, 0x82, + 0x66, 0x83, 0x2c, 0x7d, 0x89, 0x76, 0x18, 0xa8, 0xb3, 0x93, 0x71, 0x7c, + 0x45, 0xfb, 0x1f, 0x7b, 0x6e, 0x1f, 0x70, 0x7d, 0x66, 0x8b, 0x73, 0x1b, + 0xe, 0xfb, 0xfe, 0xf8, 0x24, 0x9f, 0xf7, 0x89, 0x9f, 0x1, 0xf7, 0x9e, + 0xdc, 0x3, 0xf7, 0x1d, 0xf8, 0x5f, 0x15, 0xb2, 0xae, 0xf7, 0x3b, 0xd2, + 0x95, 0x98, 0x85, 0x6d, 0x5e, 0x64, 0xfb, 0x38, 0x4d, 0x6f, 0x8b, 0xa6, + 0x97, 0x1e, 0x3a, 0xa9, 0x15, 0x52, 0xbe, 0x6b, 0xc0, 0xf3, 0xde, 0xf2, + 0xe5, 0xdb, 0x3f, 0x97, 0x72, 0x24, 0x34, 0x24, 0x2e, 0x1e, 0xe, 0x72, + 0x1d, 0xf7, 0xeb, 0x49, 0x1d, 0x95, 0x82, 0x80, 0x94, 0x83, 0x88, 0x1d, + 0x88, 0x7e, 0x1f, 0xfb, 0x4, 0xfb, 0x40, 0x70, 0xa, 0x8f, 0x88, 0x90, + 0x9d, 0xb5, 0xb5, 0x9a, 0x4a, 0xa, 0x95, 0x82, 0x80, 0x94, 0x83, 0x88, + 0x1d, 0x88, 0x7e, 0x1f, 0xe, 0x86, 0x1d, 0xf8, 0xa7, 0x77, 0xa2, 0x77, + 0x12, 0x13, 0x70, 0xf8, 0x11, 0xe3, 0x15, 0xf7, 0x33, 0x6, 0x13, 0x90, + 0x70, 0x33, 0x5, 0xe1, 0x6, 0x13, 0x70, 0x48, 0xa, 0xfc, 0x39, 0xfb, + 0x37, 0x61, 0x1d, 0xfc, 0xc8, 0xfc, 0x2a, 0x8c, 0xa, 0x5d, 0x7e, 0x92, + 0xa2, 0x93, 0x8e, 0x95, 0x8e, 0x97, 0x1f, 0x13, 0x88, 0x6e, 0x1d, 0x94, + 0x70, 0x6b, 0xa, 0xe3, 0x8b, 0xd0, 0x4d, 0x76, 0xf7, 0x14, 0x77, 0xf7, + 0x92, 0xc8, 0xf7, 0xa3, 0x77, 0xa2, 0x77, 0x12, 0x13, 0x78, 0xf7, 0xd, + 0x7d, 0x61, 0x1d, 0x13, 0xb4, 0xfb, 0x24, 0xfd, 0x3c, 0x5e, 0x1d, 0xee, + 0x5, 0xb6, 0xaa, 0xbc, 0xbe, 0x52, 0xa, 0x63, 0x66, 0x61, 0x1f, 0x6b, + 0x68, 0x8b, 0x8b, 0xfb, 0x8, 0xfb, 0x2, 0x8, 0xfc, 0x39, 0xf7, 0x96, + 0x8c, 0xa, 0x5f, 0x7c, 0x90, 0xa0, 0x94, 0x8d, 0x96, 0x8f, 0x99, 0x1f, + 0x6e, 0x1d, 0x93, 0x71, 0x6b, 0xa, 0x86, 0x1d, 0xf7, 0x8, 0x77, 0xf7, + 0x80, 0xf7, 0x5b, 0x5b, 0xbb, 0x8e, 0x77, 0x12, 0xf7, 0x5c, 0xdf, 0x4e, + 0xe3, 0x13, 0x79, 0x0, 0xf7, 0x21, 0x7d, 0x61, 0x1d, 0xfc, 0x70, 0xfb, + 0x5b, 0x15, 0xcc, 0xae, 0x69, 0x4f, 0x5c, 0x6c, 0x61, 0x65, 0x7e, 0x80, + 0x8f, 0x92, 0x86, 0x67, 0x1d, 0xd1, 0xe1, 0xbc, 0x74, 0xa1, 0x6e, 0x9e, + 0x1f, 0x13, 0x92, 0x80, 0x63, 0x1d, 0x13, 0x94, 0x80, 0x69, 0xa, 0x13, + 0x79, 0x0, 0xf7, 0xb0, 0xfc, 0x2b, 0x15, 0xf7, 0x33, 0x6, 0x13, 0x99, + 0x0, 0x70, 0x33, 0x5, 0xe1, 0x6, 0x13, 0x79, 0x0, 0x48, 0xa, 0xe, + 0xfb, 0x61, 0xaa, 0x6c, 0xf7, 0x58, 0xf7, 0xf5, 0xf7, 0x28, 0x12, 0xa9, + 0xf7, 0x13, 0xf7, 0x8, 0xf7, 0x28, 0x13, 0x78, 0xf7, 0xc4, 0xf7, 0xa3, + 0x15, 0x73, 0x50, 0x7c, 0x6c, 0x60, 0x6f, 0x8, 0xfb, 0x19, 0x34, 0x50, + 0x5a, 0x3d, 0x1a, 0x5c, 0xa8, 0x2a, 0xf7, 0x29, 0xf7, 0x1, 0xcb, 0xc9, + 0xcf, 0xaf, 0x71, 0xa9, 0x68, 0x6b, 0x6e, 0x72, 0x69, 0x78, 0x93, 0x7f, + 0x92, 0x81, 0x1e, 0x92, 0x81, 0x92, 0x83, 0x82, 0x1a, 0x13, 0xb8, 0x76, + 0x6a, 0x7a, 0x6f, 0x6c, 0x64, 0x9b, 0xcd, 0xc1, 0xa9, 0xbd, 0xd6, 0xe8, + 0x1e, 0xc8, 0xd7, 0x92, 0xbd, 0x8e, 0xac, 0x8, 0x4f, 0xf7, 0x2e, 0x3c, + 0xa, 0x51, 0x1d, 0xf7, 0x85, 0x77, 0x1, 0xf8, 0x3c, 0xf9, 0x67, 0x7b, + 0xa, 0xfb, 0x2, 0xf7, 0x26, 0x5, 0x98, 0x80, 0x78, 0xa1, 0x30, 0x1d, + 0xfb, 0xfa, 0xfd, 0xc0, 0x33, 0xa, 0x51, 0x1d, 0xf7, 0x85, 0x77, 0x1, + 0xf7, 0xcb, 0xf9, 0x67, 0x22, 0x1d, 0xfc, 0x88, 0xfd, 0xea, 0x33, 0xa, + 0x51, 0x1d, 0xf7, 0x7e, 0x5a, 0x1d, 0xfc, 0x5a, 0xfe, 0x15, 0x24, 0x1d, + 0x56, 0xa, 0xf8, 0x4d, 0x77, 0xd5, 0x83, 0x1d, 0x5e, 0xd6, 0x12, 0x13, + 0xe4, 0xf7, 0x93, 0xf9, 0x7c, 0x15, 0x13, 0xe8, 0x9e, 0x93, 0x94, 0xa3, + 0xac, 0x1b, 0xac, 0xa2, 0x84, 0x80, 0xa0, 0x1f, 0x13, 0xf0, 0x7f, 0xa6, + 0x9f, 0x7d, 0xa6, 0x1b, 0xe1, 0xa3, 0xde, 0xaf, 0x93, 0x1f, 0x62, 0x6, + 0x78, 0x82, 0x82, 0x74, 0x68, 0x1b, 0x7c, 0x73, 0x96, 0x96, 0x70, 0x1f, + 0x96, 0x70, 0x6f, 0x94, 0x70, 0x1b, 0x28, 0x79, 0xfb, 0x7, 0x88, 0x1f, + 0x35, 0xfd, 0x7c, 0x15, 0xae, 0x7, 0x23, 0x1d, 0x68, 0x7, 0xf8, 0xc, + 0xf8, 0x7f, 0x15, 0x74, 0x1d, 0xfb, 0x4d, 0x6, 0xe, 0x56, 0xa, 0xf8, + 0x59, 0x77, 0xba, 0xf7, 0x1a, 0xfb, 0xd, 0xf7, 0x1a, 0x12, 0xf7, 0x80, + 0xf7, 0x1a, 0xbd, 0xf7, 0x1a, 0x13, 0xee, 0xf7, 0x73, 0xf9, 0xaf, 0x15, + 0x13, 0xf6, 0x20, 0x1d, 0xf7, 0x68, 0x2b, 0xa, 0xfc, 0x8a, 0xfd, 0xaf, + 0x24, 0x1d, 0x51, 0x1d, 0xb8, 0xbb, 0xf7, 0x1, 0xbc, 0x1, 0xf7, 0xb0, + 0xbb, 0xf7, 0x8, 0xbc, 0x3, 0xf7, 0xb0, 0xf9, 0xc2, 0x15, 0x4f, 0xb9, + 0x5d, 0xc7, 0xc6, 0xbb, 0xba, 0xc6, 0xc6, 0x5b, 0xbb, 0x50, 0x50, 0x5c, + 0x5b, 0x5e, 0xa, 0xfc, 0x23, 0xfd, 0xc2, 0x24, 0x1d, 0xf7, 0xae, 0x8b, + 0xab, 0xf7, 0x73, 0xb2, 0xb7, 0xab, 0xf7, 0x9f, 0xab, 0x1, 0x4b, 0xab, + 0x15, 0xac, 0x90, 0x8a, 0x8b, 0xc3, 0xd3, 0xf8, 0x2, 0xf8, 0x5b, 0x18, + 0x98, 0x9b, 0x92, 0x99, 0x98, 0x1a, 0xa0, 0x6d, 0x93, 0x58, 0x1e, 0xac, + 0xf8, 0xe1, 0x7, 0x5e, 0xfb, 0x52, 0x73, 0x90, 0x5, 0xf7, 0x14, 0x39, + 0xa4, 0x3c, 0x56, 0x87, 0x80, 0x76, 0x86, 0x1e, 0x4a, 0xfb, 0x7f, 0xf0, + 0x88, 0xc0, 0x98, 0xb3, 0xeb, 0x19, 0xa5, 0x87, 0x42, 0xfb, 0xa5, 0x72, + 0x90, 0x98, 0xe9, 0x77, 0xb6, 0xfb, 0xf, 0x88, 0x19, 0x4c, 0xfb, 0x85, + 0x5, 0x89, 0x82, 0x8a, 0x83, 0x85, 0x1a, 0x6f, 0x9d, 0x7d, 0xa7, 0xf7, + 0x2b, 0xcf, 0xba, 0xf7, 0xc, 0xd3, 0x1e, 0xa5, 0x88, 0x50, 0xfb, 0x58, + 0x5, 0xfc, 0xa3, 0xab, 0x6, 0xba, 0x93, 0x9a, 0x90, 0x9b, 0xc5, 0xb9, + 0xf7, 0x2c, 0x18, 0xfb, 0x54, 0x6, 0xfb, 0x6, 0xfb, 0x2a, 0x5, 0x82, + 0x7e, 0x86, 0x80, 0x81, 0x1a, 0x71, 0xa0, 0x7e, 0xb5, 0x1e, 0x6b, 0xfb, + 0x57, 0x7, 0xf8, 0x62, 0xf7, 0xba, 0x15, 0xe7, 0xf7, 0xd7, 0x5, 0x7f, + 0x6, 0xfb, 0x91, 0xfb, 0xd7, 0x5, 0xe, 0x90, 0xfb, 0x6e, 0xb4, 0xf7, + 0x6f, 0x76, 0xae, 0xbf, 0xf8, 0xaf, 0xae, 0x1, 0xab, 0xf7, 0x2e, 0xef, + 0xb8, 0xf7, 0xa1, 0xab, 0x98, 0xa9, 0x3, 0xf7, 0x7f, 0x2f, 0x15, 0x98, + 0x7f, 0x5, 0x8f, 0x94, 0x94, 0x8c, 0x93, 0x1b, 0xa8, 0xa1, 0x72, 0x7f, + 0x70, 0x74, 0x7d, 0x6c, 0x6e, 0x7a, 0x91, 0x96, 0x74, 0x1f, 0x75, 0x6a, + 0x5, 0x83, 0x9b, 0xa3, 0x7a, 0xbe, 0x1b, 0xc0, 0xe7, 0x9e, 0xca, 0xc3, + 0x58, 0xa0, 0x65, 0x80, 0x82, 0x8a, 0x89, 0x84, 0x1f, 0xaa, 0xb9, 0x5, + 0xf7, 0x9, 0xdb, 0xd6, 0xd3, 0xbb, 0x1f, 0x6d, 0xa1, 0x5, 0x2e, 0x43, + 0x49, 0x72, 0x3d, 0x1b, 0x7d, 0xfb, 0x16, 0x8b, 0xf7, 0x47, 0xf7, 0x45, + 0xf3, 0xf7, 0x97, 0xf7, 0x35, 0xe3, 0xc5, 0x4d, 0x2a, 0x7f, 0x8a, 0x80, + 0x89, 0x80, 0x81, 0x1d, 0x80, 0x85, 0x7e, 0x74, 0x1b, 0x7e, 0x77, 0x93, + 0x93, 0x6f, 0x1f, 0x92, 0x73, 0x6c, 0x91, 0x63, 0x1b, 0xfb, 0x87, 0xfb, + 0x44, 0xfb, 0x74, 0xfb, 0x71, 0xfb, 0x40, 0xf7, 0x15, 0x36, 0xf7, 0x11, + 0x1f, 0xe, 0x51, 0xa, 0x73, 0xa, 0xf8, 0x3c, 0xf9, 0x67, 0x27, 0x1d, + 0xfb, 0xd2, 0xfd, 0xc0, 0x15, 0x37, 0x1d, 0x57, 0x7b, 0x94, 0x9b, 0x98, + 0x93, 0x9c, 0x90, 0x9f, 0x7e, 0xa, 0xf7, 0x1, 0xae, 0x71, 0x4f, 0x7d, + 0x8a, 0x7b, 0x88, 0x79, 0x4c, 0xa, 0x5, 0x3a, 0x60, 0x7c, 0x72, 0xfb, + 0x27, 0x1b, 0x65, 0xa, 0x93, 0x73, 0x1d, 0x8b, 0x40, 0x1d, 0x85, 0x96, + 0x87, 0x43, 0xa, 0xe, 0x51, 0xa, 0x73, 0xa, 0xf7, 0xcb, 0xf9, 0x67, + 0x15, 0xbc, 0x6, 0xf7, 0x2b, 0xe1, 0x5, 0xa2, 0x98, 0x9c, 0x97, 0x25, + 0x1d, 0xfc, 0x60, 0xfd, 0xea, 0x15, 0x37, 0x1d, 0x55, 0x7d, 0x95, 0x9c, + 0x98, 0x93, 0x9b, 0x90, 0x9e, 0x7e, 0xa, 0xf7, 0x3, 0xac, 0x70, 0x4d, + 0x7e, 0x89, 0x7c, 0x89, 0x7a, 0x4c, 0xa, 0x60, 0x3a, 0x7c, 0x71, 0xfb, + 0x27, 0x8c, 0x19, 0x65, 0xa, 0x95, 0x73, 0x1d, 0x89, 0x31, 0x1d, 0xe, + 0x51, 0xa, 0xf7, 0x78, 0x5a, 0x1d, 0xfc, 0x32, 0xfe, 0x15, 0x15, 0x37, + 0x1d, 0x56, 0x7c, 0x95, 0x9c, 0x98, 0x91, 0x9b, 0x90, 0x9e, 0x1f, 0xca, + 0xf7, 0x7b, 0x5, 0xf7, 0x6, 0xa9, 0x6e, 0x49, 0x7f, 0x89, 0x7e, 0x89, + 0x7d, 0x2a, 0xa, 0xe, 0x51, 0xa, 0xc5, 0xf7, 0x1b, 0x1, 0xf7, 0x86, + 0xf7, 0x1b, 0xd8, 0xf7, 0x1b, 0x3, 0x70, 0x16, 0x37, 0x1d, 0x56, 0x7c, + 0x95, 0x9b, 0x98, 0x93, 0x9b, 0x90, 0x9f, 0x7e, 0xa, 0xf7, 0x3, 0xac, + 0x70, 0x4d, 0x7e, 0x89, 0x7c, 0x89, 0x7a, 0x2a, 0xa, 0xf7, 0xa1, 0xf9, + 0x8b, 0x46, 0x1d, 0x68, 0xa, 0x73, 0xa, 0x6b, 0x16, 0x75, 0x1d, 0x4a, + 0x7f, 0x9a, 0xa1, 0x97, 0x91, 0x98, 0x8e, 0x95, 0x41, 0xa, 0xc6, 0x9b, + 0x7e, 0x7a, 0x7f, 0x86, 0x7c, 0x47, 0x1d, 0xf7, 0xe5, 0xf9, 0x44, 0x2a, + 0x1d, 0x68, 0xa, 0x73, 0xa, 0xf7, 0x54, 0xf9, 0x67, 0x7b, 0xa, 0xf7, + 0x1a, 0xdc, 0x5, 0xa1, 0x98, 0x9e, 0x9c, 0x25, 0x1d, 0xfb, 0xda, 0xfd, + 0xea, 0x8e, 0x1d, 0x4e, 0x7b, 0x98, 0x9f, 0x98, 0x91, 0x9a, 0x8e, 0x96, + 0x41, 0xa, 0xc6, 0x9b, 0x7f, 0x79, 0x7f, 0x86, 0x7c, 0x47, 0x1d, 0xe, + 0x68, 0xa, 0xf7, 0x78, 0x77, 0x1, 0xf7, 0xb, 0xf9, 0x67, 0x15, 0xc4, + 0x6, 0xf4, 0xea, 0xe3, 0x2c, 0x3b, 0x1d, 0xfb, 0xb1, 0xfe, 0x15, 0x8e, + 0x1d, 0x4e, 0x7b, 0x98, 0x9f, 0x98, 0x91, 0x9a, 0x8e, 0x96, 0x46, 0xa, + 0x68, 0xa, 0xc6, 0xf7, 0x1a, 0x1, 0xf2, 0xf7, 0x1b, 0x3, 0xf2, 0xf9, + 0xb0, 0x15, 0x41, 0x1d, 0xf7, 0x63, 0x16, 0x41, 0x1d, 0xfb, 0xea, 0xfd, + 0xb0, 0x8e, 0x1d, 0x4a, 0x7f, 0x9a, 0xa1, 0x97, 0x91, 0x98, 0x8e, 0x95, + 0x46, 0xa, 0xc7, 0x8b, 0xad, 0xf7, 0xbb, 0xb7, 0xf7, 0x9d, 0xaa, 0x1, + 0xf8, 0xbd, 0xf7, 0x27, 0x3, 0xf7, 0x98, 0xf7, 0xdd, 0x15, 0xf7, 0xe, + 0x6, 0x97, 0xb7, 0x5, 0xfb, 0xe, 0x6, 0xc8, 0xf7, 0x77, 0x80, 0x1d, + 0xfb, 0x1d, 0x5b, 0x25, 0x60, 0xfb, 0xd1, 0xfb, 0x97, 0x61, 0x7d, 0x9a, + 0xa3, 0x9a, 0x8f, 0x9c, 0x77, 0xa, 0x91, 0xf7, 0x13, 0xf7, 0x6e, 0x5d, + 0xa, 0x7e, 0x82, 0x75, 0x5a, 0xfb, 0x4a, 0x1e, 0x25, 0x6, 0x7f, 0x5f, + 0x5, 0xf1, 0x6, 0x86, 0x78, 0x80, 0x5c, 0x67, 0xfb, 0xf, 0x6f, 0x2d, + 0x6d, 0x85, 0x6a, 0x86, 0x8, 0xe, 0x8b, 0x1d, 0xd5, 0x8c, 0x1d, 0x13, + 0xb0, 0x70, 0x16, 0xf7, 0x64, 0xae, 0x6, 0x52, 0x77, 0x9e, 0xaf, 0xa7, + 0x92, 0xac, 0x93, 0xa6, 0x1f, 0xee, 0xf7, 0xf8, 0x5, 0x13, 0x70, 0x59, + 0xa, 0xc2, 0xa0, 0x78, 0x6a, 0x6f, 0x85, 0x68, 0x83, 0x6f, 0x64, 0x1d, + 0xfb, 0xc, 0xfc, 0x2f, 0x18, 0x13, 0xa8, 0x63, 0xfb, 0x1f, 0x80, 0x93, + 0x59, 0x7f, 0x8, 0xf7, 0xb1, 0xf9, 0x59, 0x50, 0xa, 0xa8, 0xa2, 0x7f, + 0x80, 0xa2, 0x1f, 0x13, 0xb0, 0x80, 0xa1, 0xa2, 0x81, 0xaa, 0x3d, 0x1d, + 0x7c, 0x73, 0x96, 0x96, 0x70, 0x1f, 0x95, 0x71, 0x6e, 0x95, 0x70, 0x54, + 0x1d, 0x33, 0x1d, 0xf8, 0x3d, 0xf8, 0x96, 0x2a, 0x1d, 0x33, 0x1d, 0xf7, + 0xef, 0xf8, 0x96, 0x26, 0xa, 0x65, 0x1d, 0xf7, 0x6a, 0x25, 0xa, 0xf7, + 0x87, 0xf8, 0x96, 0x5b, 0xa, 0xec, 0xe3, 0x2a, 0x7e, 0x1d, 0x65, 0x1d, + 0xc7, 0x8c, 0x1d, 0x4d, 0xa, 0x13, 0xdc, 0x3a, 0x1d, 0xf7, 0x80, 0xf8, + 0xaa, 0x50, 0xa, 0xa4, 0xa2, 0x7f, 0x80, 0xa4, 0x1f, 0x13, 0xec, 0x80, + 0xa3, 0xa4, 0x81, 0xa8, 0x3d, 0x1d, 0x7c, 0x72, 0x96, 0x96, 0x70, 0x1f, + 0x95, 0x71, 0x6f, 0x95, 0x70, 0x54, 0x1d, 0x65, 0x1d, 0xb8, 0xf7, 0x1a, + 0x12, 0xa6, 0xf7, 0x24, 0xf7, 0xc, 0xf7, 0x1a, 0xd8, 0xf7, 0x1a, 0x32, + 0xf7, 0x24, 0x13, 0xfa, 0x3a, 0x1d, 0xf7, 0x9c, 0xf8, 0xdd, 0x2e, 0xa, + 0x13, 0xfc, 0xf7, 0x67, 0x2d, 0x1d, 0x2f, 0xb0, 0x76, 0xf8, 0x6e, 0x77, + 0x1, 0xbb, 0xc7, 0x15, 0xb7, 0x5f, 0xf7, 0x54, 0xf7, 0x54, 0xf7, 0x53, + 0xfb, 0x54, 0xba, 0xba, 0xfb, 0x55, 0xf7, 0x52, 0xf7, 0x55, 0xf7, 0x56, + 0x59, 0xb6, 0xfb, 0x50, 0xfb, 0x52, 0xfb, 0x52, 0xf7, 0x52, 0x5d, 0x5c, + 0xf7, 0x51, 0xfb, 0x51, 0x5, 0xe, 0xc7, 0x23, 0x76, 0xf6, 0xad, 0xf9, + 0xf, 0xad, 0xda, 0x77, 0x1, 0x4d, 0xa, 0x3, 0xf7, 0x4a, 0xd8, 0x15, + 0x83, 0x9f, 0x88, 0xa2, 0xa9, 0x1a, 0xeb, 0xe4, 0xf8, 0x29, 0xf7, 0x49, + 0xa8, 0xa0, 0x83, 0x7e, 0x9a, 0x1e, 0xfb, 0xbe, 0xfc, 0xe4, 0x15, 0xf7, + 0xd9, 0xf8, 0xbf, 0x5, 0x96, 0x74, 0x8e, 0x6f, 0x79, 0x1a, 0xfb, 0x2, + 0x2e, 0xfc, 0x22, 0xfb, 0x47, 0x72, 0x74, 0x91, 0x9b, 0x78, 0x1e, 0xfb, + 0x23, 0xfb, 0x37, 0x15, 0xbb, 0x6, 0xd1, 0xf7, 0xc, 0x5, 0x83, 0xa3, + 0xa6, 0x86, 0xaa, 0x1b, 0xf7, 0x8d, 0xf7, 0x45, 0xf7, 0xa0, 0xf7, 0x56, + 0xf7, 0x2, 0x56, 0xce, 0x47, 0xae, 0x1f, 0xca, 0xf7, 0x0, 0x5, 0x5a, + 0x6, 0x56, 0x2f, 0x5, 0x94, 0x70, 0x67, 0x8f, 0x70, 0x1b, 0xfb, 0x6f, + 0xfb, 0x57, 0xfb, 0x7d, 0xfb, 0x89, 0x46, 0xaf, 0x36, 0xdc, 0x61, 0x1f, + 0xe, 0x72, 0xa, 0x73, 0xa, 0xb0, 0xf7, 0x1e, 0x3, 0xed, 0xf9, 0xe, + 0x29, 0x1d, 0xc3, 0x9e, 0x7a, 0x68, 0x6e, 0x84, 0x68, 0x84, 0x70, 0x4a, + 0x1d, 0x2c, 0x6f, 0xb4, 0xc1, 0xb5, 0x9a, 0xbd, 0x98, 0xba, 0x3e, 0x1d, + 0xf7, 0xf6, 0xc1, 0x2a, 0x1d, 0x72, 0xa, 0x73, 0xa, 0xce, 0xf7, 0x1e, + 0x3, 0xf8, 0x32, 0xf9, 0x67, 0x22, 0x1d, 0xfc, 0x4a, 0xfb, 0x70, 0x29, + 0x1d, 0xc3, 0x9e, 0x79, 0x68, 0x6f, 0x84, 0x68, 0x84, 0x70, 0x4a, 0x1d, + 0x2f, 0x6c, 0xb1, 0xbf, 0xb6, 0x99, 0xbf, 0x99, 0xbc, 0x3e, 0x1d, 0xe, + 0x72, 0xa, 0xf7, 0x78, 0x77, 0x1, 0xce, 0xf7, 0x1e, 0x3, 0xf7, 0xa2, + 0xf9, 0x67, 0x42, 0xa, 0xfb, 0xe0, 0xfb, 0x9b, 0x29, 0x1d, 0xc0, 0xa1, + 0x7b, 0x6b, 0x6e, 0x85, 0x66, 0x83, 0x6e, 0x4a, 0x1d, 0x30, 0x6b, 0xb1, + 0xbe, 0xb6, 0x99, 0xc0, 0x99, 0xbc, 0x3e, 0x1d, 0xe, 0x72, 0xa, 0xc6, + 0xf7, 0x1a, 0x1, 0xf3, 0xf7, 0x1e, 0xca, 0xf7, 0x1a, 0xba, 0xf7, 0x1a, + 0x3, 0xed, 0xf9, 0xe, 0x29, 0x1d, 0xc4, 0x9d, 0x78, 0x67, 0x6f, 0x84, + 0x6a, 0x84, 0x70, 0x4a, 0x1d, 0x2d, 0x6e, 0xb3, 0xc1, 0xb5, 0x9a, 0xbe, + 0x98, 0xba, 0x3e, 0x1d, 0xf7, 0x63, 0xf7, 0x12, 0x2e, 0xa, 0xf7, 0x69, + 0x2d, 0x1d, 0x58, 0x58, 0xa, 0x73, 0xa, 0xd4, 0x16, 0xf7, 0xd6, 0xae, + 0x6, 0x58, 0x70, 0x98, 0xab, 0x99, 0x8d, 0x9b, 0x92, 0x9c, 0x1f, 0xbf, + 0xf7, 0x49, 0x6a, 0xa, 0xc2, 0xa6, 0x7e, 0x79, 0x81, 0x87, 0x7e, 0x80, + 0x7c, 0x1f, 0xfb, 0x2f, 0xfb, 0x69, 0x5, 0x4b, 0xf7, 0x5c, 0x81, 0x82, + 0xa7, 0x1a, 0xa2, 0x94, 0xb3, 0xc5, 0x6a, 0x1d, 0x55, 0xfb, 0x4e, 0x79, + 0x4b, 0x6c, 0x74, 0x51, 0x86, 0x19, 0xf7, 0xb1, 0xf9, 0x44, 0x26, 0xa, + 0x58, 0x8b, 0xae, 0xf7, 0x27, 0xab, 0xf7, 0xb4, 0xab, 0x6b, 0xf7, 0x3b, + 0x12, 0xf8, 0x3f, 0xf7, 0x26, 0x13, 0xe8, 0xf7, 0x79, 0xf7, 0x6f, 0x6f, + 0x1d, 0x33, 0x62, 0x40, 0x26, 0x7a, 0x78, 0x8c, 0x8f, 0x77, 0x1f, 0xfb, + 0x94, 0xfb, 0x6f, 0x15, 0xf7, 0xba, 0xae, 0x6, 0x4c, 0x7f, 0x9e, 0xa2, + 0x94, 0x8d, 0x94, 0x8d, 0x93, 0x1f, 0xa2, 0xdf, 0x5, 0x87, 0xb0, 0x9a, + 0x8a, 0xb4, 0x1b, 0xf7, 0x1a, 0xf7, 0x13, 0xce, 0xf7, 0x14, 0xf7, 0x12, + 0x20, 0xaa, 0x21, 0x1f, 0x5b, 0x6, 0xa9, 0xe5, 0xa3, 0x8f, 0xb3, 0x91, + 0x8, 0x13, 0xd8, 0x8c, 0xae, 0x5, 0xfb, 0xba, 0x68, 0x6, 0xbf, 0x9f, + 0x7f, 0x77, 0x7c, 0x88, 0x78, 0x85, 0x75, 0x1f, 0xfb, 0xf, 0xfc, 0x4b, + 0x7a, 0x4d, 0x74, 0x88, 0x63, 0x84, 0x19, 0xe, 0xfb, 0x5c, 0xf7, 0x16, + 0xca, 0xad, 0xf9, 0x1c, 0xa9, 0x12, 0xf7, 0xcf, 0xf7, 0xc, 0x42, 0xf7, + 0x3, 0x13, 0xf0, 0xf7, 0x22, 0x9a, 0x15, 0x82, 0x98, 0x96, 0x7e, 0xb6, + 0x1b, 0xf7, 0xb, 0xf6, 0xf7, 0x1a, 0xf7, 0x12, 0xe9, 0x4c, 0xb1, 0x3d, + 0x98, 0x1f, 0x8d, 0x7, 0x13, 0xe8, 0xca, 0xa2, 0xf7, 0x8, 0xbf, 0xf7, + 0x2, 0x1a, 0xd4, 0x4f, 0xba, 0x36, 0xfb, 0x2e, 0x43, 0xfb, 0x33, 0xfb, + 0x23, 0x71, 0x1e, 0x49, 0xfb, 0xff, 0x6d, 0xfb, 0x1c, 0x66, 0x5c, 0x8, + 0x80, 0x82, 0x71, 0x7a, 0x7c, 0x1b, 0x84, 0x87, 0x8f, 0x94, 0x96, 0x93, + 0x8c, 0x90, 0x95, 0x1f, 0x8d, 0x90, 0x8d, 0x91, 0x96, 0x1a, 0xb0, 0x6b, + 0x92, 0x7e, 0x55, 0x8b, 0x5c, 0x83, 0x67, 0xaa, 0x64, 0xcc, 0xf7, 0xa, + 0xcf, 0xf7, 0xd, 0xf7, 0x49, 0xb4, 0x1e, 0xe6, 0xf8, 0x2b, 0x5, 0xf7, + 0x3, 0xa4, 0xa8, 0xc2, 0xb9, 0x1b, 0xba, 0x8c, 0x47, 0x75, 0x4d, 0x79, + 0x21, 0x2b, 0x1f, 0x84, 0x6a, 0x5, 0x13, 0xf0, 0xb6, 0x85, 0xaa, 0x5f, + 0x3a, 0x1a, 0x5b, 0x6d, 0xfb, 0x46, 0x3f, 0x7a, 0x78, 0x93, 0x9a, 0x80, + 0x1e, 0xe, 0x58, 0x1d, 0xb5, 0x85, 0x77, 0xf7, 0x99, 0x34, 0xa, 0x6f, + 0x81, 0x62, 0x62, 0x76, 0x1b, 0x84, 0x86, 0x8f, 0x95, 0x44, 0xa, 0x5, + 0xfb, 0x1, 0x6, 0x78, 0x4d, 0x6f, 0xa, 0x13, 0xac, 0x27, 0xa, 0x30, + 0xa, 0xf7, 0x74, 0xf8, 0x25, 0x2a, 0x1d, 0x5b, 0x1d, 0xf7, 0x93, 0x34, + 0xa, 0x6e, 0x80, 0x5f, 0x63, 0x77, 0x3f, 0x1d, 0x13, 0xac, 0x30, 0xa, + 0xf7, 0xd, 0xf8, 0x25, 0x26, 0xa, 0x5b, 0x1d, 0xf7, 0x8c, 0x34, 0xa, + 0x71, 0xa, 0x8f, 0x95, 0x28, 0x1d, 0x13, 0xac, 0x30, 0xa, 0xa1, 0xf8, + 0x25, 0x42, 0xa, 0xe, 0x5b, 0x1d, 0xe9, 0x8c, 0x1d, 0x76, 0xf7, 0xf, + 0x13, 0x6a, 0x28, 0xa, 0x13, 0x9a, 0x6e, 0x80, 0x5e, 0x63, 0x78, 0x3f, + 0x1d, 0x13, 0xa6, 0x30, 0xa, 0xa9, 0xf8, 0x3a, 0x50, 0xa, 0xa5, 0xa2, + 0x82, 0x81, 0xa1, 0x1f, 0x13, 0xaa, 0x7f, 0xa6, 0xa6, 0x7e, 0xa5, 0x3d, + 0x1d, 0x7b, 0x71, 0x98, 0x96, 0x6e, 0x1f, 0x95, 0x72, 0x70, 0x93, 0x72, + 0x54, 0x1d, 0x5b, 0x1d, 0xda, 0xf7, 0x1a, 0x74, 0xa, 0xa6, 0x8e, 0xa, + 0x13, 0x6f, 0x28, 0xa, 0x13, 0x9f, 0x6e, 0x80, 0x5f, 0x63, 0x77, 0x3f, + 0x1d, 0x13, 0xaf, 0x30, 0xa, 0xa6, 0xf8, 0x6d, 0x2e, 0xa, 0x3a, 0xa, + 0x58, 0x1d, 0xb0, 0x66, 0xb5, 0xc1, 0xbc, 0x5a, 0xf7, 0x39, 0xfb, 0x8, + 0xf7, 0x8, 0xfb, 0x8, 0xf7, 0x38, 0x5b, 0xbb, 0x74, 0xa, 0xf7, 0x3, + 0xf7, 0x37, 0xfb, 0x8, 0xf7, 0x8, 0xfb, 0x8, 0xf7, 0x3a, 0x59, 0xbd, + 0x13, 0x64, 0xe4, 0x28, 0xa, 0x13, 0x99, 0x64, 0x71, 0xa, 0x8f, 0x95, + 0x28, 0x1d, 0x30, 0xa, 0xf7, 0x3, 0xf8, 0x8f, 0x15, 0xc6, 0xba, 0xbb, + 0xc6, 0x1e, 0x13, 0xaa, 0xc8, 0xc6, 0xbb, 0x5b, 0x50, 0x50, 0x5b, 0x5c, + 0x50, 0x1f, 0x13, 0xa4, 0xe4, 0x50, 0x5c, 0xba, 0xc6, 0x1f, 0x13, 0xaa, + 0xd4, 0xba, 0x8c, 0x15, 0x6b, 0xa5, 0x71, 0xab, 0xab, 0xa5, 0xa5, 0xab, + 0xab, 0x71, 0xa5, 0x6b, 0x6b, 0x71, 0x71, 0x6b, 0x1e, 0xe, 0xc7, 0x7e, + 0xca, 0x4c, 0xd2, 0x5a, 0x76, 0xf7, 0xa, 0x77, 0xf7, 0x14, 0x77, 0xf7, + 0x75, 0xb3, 0x6d, 0xa9, 0x8e, 0x77, 0x12, 0x86, 0xf7, 0x12, 0xf8, 0x62, + 0xe5, 0x13, 0x9c, 0xc0, 0xf7, 0xac, 0xf7, 0x8, 0x15, 0x8d, 0x6, 0x5b, + 0x94, 0x9a, 0x3a, 0xf7, 0x10, 0x1b, 0xf7, 0x17, 0xc4, 0xf7, 0x19, 0x8d, + 0x8c, 0x1f, 0x6f, 0x9c, 0x5, 0x7a, 0x82, 0x60, 0x43, 0x44, 0x1b, 0x51, + 0x82, 0xc5, 0xa4, 0x9b, 0x8d, 0x9c, 0x8e, 0x9a, 0x1f, 0xb2, 0x94, 0x5, + 0xf7, 0x35, 0xb0, 0xce, 0xd4, 0xd2, 0x1a, 0xc8, 0x60, 0xa6, 0x53, 0x68, + 0x63, 0x83, 0x56, 0x61, 0x1e, 0x89, 0x8d, 0x9d, 0xc6, 0x5, 0x13, 0x39, + 0xc0, 0x28, 0x8e, 0x76, 0x4d, 0x5, 0x88, 0x6, 0xa5, 0x82, 0x7f, 0xaf, + 0x4d, 0x1b, 0xfb, 0x10, 0xfb, 0x28, 0xfb, 0x5e, 0xfb, 0x21, 0x26, 0xc9, + 0x6d, 0xbe, 0xea, 0xbe, 0xdf, 0xb7, 0xa5, 0x1f, 0xfb, 0x33, 0x8d, 0x15, + 0x13, 0x5c, 0xc0, 0xe9, 0xe0, 0xf7, 0x63, 0xd7, 0xb0, 0x99, 0x71, 0x66, + 0x5a, 0x49, 0xfb, 0x8d, 0x2b, 0x67, 0x7d, 0xa8, 0xaa, 0x1e, 0xf7, 0xb8, + 0xeb, 0x15, 0x90, 0x9c, 0x5, 0x13, 0x9a, 0xc0, 0xc1, 0x9b, 0xb5, 0xf7, + 0x24, 0xd5, 0x1b, 0xac, 0x8b, 0x6f, 0x7d, 0xfb, 0xd, 0xfb, 0x22, 0x57, + 0x6f, 0x1f, 0xe, 0xfb, 0x6e, 0xfb, 0x6e, 0xb4, 0xd8, 0xf7, 0x2b, 0xfb, + 0x2, 0x77, 0xe3, 0x76, 0xf7, 0xce, 0xf7, 0x34, 0x6a, 0xac, 0x12, 0x73, + 0xf7, 0x14, 0x13, 0xba, 0xf7, 0x3, 0x7f, 0x15, 0x54, 0x3b, 0x98, 0x7f, + 0x5, 0x13, 0xca, 0x7d, 0xa, 0x74, 0x7c, 0x6c, 0x6e, 0x79, 0x86, 0xa, + 0xa1, 0x79, 0xbf, 0x1b, 0xc0, 0xe7, 0x9e, 0xca, 0x1f, 0x13, 0xba, 0xc7, + 0x49, 0x9c, 0x73, 0x82, 0x83, 0x8a, 0x89, 0x82, 0x1e, 0xae, 0xbf, 0xe0, + 0x96, 0xcb, 0xcb, 0xb4, 0xc5, 0x19, 0x6f, 0x9d, 0x5, 0x13, 0xc6, 0x51, + 0x63, 0x53, 0x6b, 0x5e, 0x1b, 0x6e, 0x5f, 0xaa, 0xdb, 0xd2, 0xda, 0xf7, + 0x58, 0xe2, 0x94, 0x99, 0x87, 0x7e, 0x86, 0x88, 0x85, 0x87, 0x84, 0x1f, + 0x85, 0x81, 0x83, 0x7e, 0x7a, 0x1a, 0x13, 0xba, 0x84, 0x1d, 0x60, 0xb7, + 0x3c, 0xfb, 0x1e, 0xfb, 0x30, 0xfb, 0x2e, 0xfb, 0x2d, 0x23, 0xd3, 0x4c, + 0xca, 0x1e, 0xe, 0x2f, 0xa, 0xf7, 0x2a, 0xf7, 0xc2, 0x15, 0xb6, 0x6, + 0xfb, 0x1, 0x5f, 0x1d, 0x2f, 0xa, 0xbe, 0xf7, 0xc2, 0x15, 0xb8, 0x5a, + 0xa, 0x68, 0x1d, 0xf7, 0x78, 0x22, 0xa, 0x5b, 0xf7, 0xc2, 0x15, 0xc0, + 0x6, 0xf7, 0x17, 0xe8, 0xe4, 0x2e, 0x5, 0xbd, 0x6, 0x35, 0x4e, 0xa, + 0xe, 0x68, 0x1d, 0xc7, 0xf7, 0x19, 0x12, 0x90, 0xf7, 0x16, 0x69, 0xf7, + 0x19, 0xd3, 0xe7, 0x2f, 0xf7, 0x1d, 0x13, 0xf4, 0x20, 0xa, 0x13, 0xea, + 0x5c, 0xf8, 0xa, 0x15, 0x67, 0xa, 0xf7, 0x65, 0x16, 0x67, 0xa, 0xe, + 0x66, 0x1d, 0xf9, 0x56, 0x3c, 0x1d, 0x74, 0xf8, 0x19, 0x7b, 0xa, 0xfb, + 0x4, 0x5f, 0x1d, 0x66, 0x1d, 0xf9, 0x56, 0x6c, 0x1d, 0x52, 0x55, 0x8f, + 0xa, 0x90, 0x94, 0x24, 0xa, 0xfb, 0x12, 0xf8, 0x19, 0x26, 0xa, 0x66, + 0x1d, 0xf9, 0x4f, 0x6c, 0x1d, 0x54, 0x55, 0x73, 0x1b, 0x84, 0x32, 0xa, + 0xfb, 0x84, 0xf8, 0x19, 0x15, 0xc4, 0x6, 0xf7, 0x16, 0xe8, 0xe4, 0x2e, + 0x5, 0xbe, 0x6, 0x34, 0x4e, 0xa, 0xe, 0x66, 0x1d, 0xf8, 0xa6, 0xf7, + 0x1a, 0x1, 0x9c, 0xf7, 0x1a, 0xd6, 0xf7, 0x1a, 0x3, 0xf7, 0x6c, 0xf7, + 0x21, 0x15, 0x71, 0x88, 0x51, 0x56, 0x74, 0x1b, 0x85, 0x88, 0x90, 0x94, + 0x24, 0xa, 0xfb, 0x71, 0xf8, 0x61, 0x2e, 0xa, 0xf7, 0x65, 0x2d, 0x1d, + 0x7e, 0xa8, 0xf8, 0x35, 0x6e, 0xa, 0xf7, 0x2e, 0x90, 0xa, 0xf7, 0x6b, + 0x7b, 0x1d, 0x7d, 0x59, 0x40, 0x51, 0xfb, 0xaa, 0x2b, 0x57, 0x8b, 0xf7, + 0xa, 0x9f, 0x1e, 0xf7, 0x77, 0xf7, 0x9e, 0x15, 0xa9, 0x7a, 0x6f, 0x97, + 0x73, 0x1b, 0xfb, 0x28, 0xfb, 0x15, 0xfb, 0x2e, 0xfb, 0x2e, 0x2b, 0xd9, + 0x44, 0xdd, 0xf7, 0x2f, 0xf7, 0x15, 0xf7, 0x45, 0xf7, 0x6c, 0xe0, 0x66, + 0xdd, 0x52, 0xc8, 0x1f, 0xf6, 0xc3, 0x69, 0xab, 0x20, 0x52, 0x64, 0xab, + 0x5d, 0xa1, 0x5c, 0x91, 0x19, 0x5f, 0x70, 0xb1, 0x85, 0xb5, 0x73, 0xaf, + 0x68, 0x19, 0xfb, 0xe, 0x4b, 0xac, 0x6c, 0xf7, 0xb, 0xc9, 0x5, 0xae, + 0x5f, 0xa6, 0x56, 0x56, 0x1a, 0xe, 0x21, 0x97, 0x76, 0xa9, 0x76, 0xf8, + 0x62, 0x77, 0xf7, 0x1e, 0xd6, 0x12, 0x13, 0x70, 0x78, 0xa, 0x98, 0x97, + 0x81, 0x7f, 0x1f, 0x75, 0x33, 0xfb, 0x6f, 0x44, 0x1a, 0x13, 0xb0, 0x76, + 0x1d, 0x68, 0x80, 0x60, 0x63, 0x77, 0x88, 0x1d, 0x91, 0x96, 0x1f, 0xa8, + 0xe2, 0xf7, 0x68, 0xcc, 0x4f, 0xa, 0x13, 0x70, 0x88, 0xa, 0xf7, 0x2b, + 0xf8, 0xad, 0x50, 0xa, 0xa9, 0xa1, 0x81, 0x81, 0xa1, 0x1f, 0x7f, 0xa4, + 0xa3, 0x7f, 0xa7, 0x3d, 0x1d, 0x7c, 0x74, 0x95, 0x96, 0x70, 0x1f, 0x95, + 0x71, 0x6d, 0x96, 0x70, 0x54, 0x1d, 0x7e, 0xa8, 0xf8, 0x33, 0xa8, 0xf7, + 0x81, 0x37, 0xa, 0xf7, 0xdd, 0xf8, 0xe, 0x2a, 0x1d, 0x7e, 0xa8, 0xf8, + 0x33, 0x6e, 0xa, 0xe3, 0x90, 0xa, 0xf7, 0xab, 0x7b, 0x1d, 0x7f, 0x59, + 0x40, 0x51, 0xfb, 0xaa, 0x36, 0xa, 0xf7, 0x40, 0xf7, 0x29, 0xf7, 0x1a, + 0xfb, 0xb, 0x9d, 0x4b, 0x1d, 0xf7, 0x76, 0xf8, 0xe, 0x26, 0xa, 0x8f, + 0x1d, 0xf7, 0x7a, 0x37, 0xa, 0xf7, 0x13, 0xf8, 0xe, 0x42, 0xa, 0xe, + 0x8f, 0x1d, 0xd7, 0x8c, 0x1d, 0x4e, 0x1d, 0x13, 0xdc, 0x23, 0xa, 0xf7, + 0x1b, 0xf8, 0x23, 0x50, 0xa, 0xa9, 0xa0, 0x81, 0x80, 0xa0, 0x1f, 0x13, + 0xec, 0x80, 0xa2, 0xa2, 0x7f, 0xac, 0x3d, 0x1d, 0x7c, 0x74, 0x95, 0x96, + 0x71, 0x1f, 0x95, 0x70, 0x6d, 0x96, 0x70, 0x54, 0x1d, 0x8f, 0x1d, 0xc8, + 0xf7, 0x1a, 0x12, 0x88, 0xf7, 0xb, 0x93, 0xf7, 0x1a, 0xcb, 0xf7, 0xb, + 0xfb, 0x1, 0xf7, 0x1a, 0x13, 0xfc, 0x23, 0xa, 0xf7, 0x13, 0xf8, 0x56, + 0x2e, 0xa, 0x13, 0xfa, 0x3a, 0xa, 0x2f, 0x6e, 0xef, 0x27, 0xf7, 0x28, + 0xe7, 0xe1, 0x36, 0xd0, 0xf5, 0xf7, 0x28, 0x27, 0xef, 0x12, 0xf7, 0x67, + 0xf7, 0x28, 0xfb, 0xc, 0xef, 0x13, 0x5a, 0xac, 0xf7, 0x68, 0x15, 0xf8, + 0x8c, 0xd0, 0xfc, 0x8c, 0x6, 0x13, 0xa5, 0xf7, 0x62, 0xfb, 0x98, 0x15, + 0x66, 0xa, 0xf8, 0x64, 0x4, 0x66, 0xa, 0xe, 0x29, 0x76, 0xf5, 0xa8, + 0xcd, 0x77, 0xf8, 0x8, 0xa8, 0xec, 0x5c, 0x1d, 0xe1, 0x90, 0xa, 0xf7, + 0xb0, 0xf7, 0x0, 0x98, 0x96, 0x86, 0x81, 0x94, 0x1e, 0xfb, 0x51, 0xfb, + 0xe5, 0x6f, 0xa, 0x61, 0x40, 0x15, 0x43, 0xfb, 0x12, 0x5, 0xb3, 0x6, + 0xcb, 0xf7, 0x6, 0x5, 0x86, 0x9b, 0x9d, 0x88, 0x9c, 0x1b, 0xf7, 0x34, + 0xf7, 0x10, 0xf7, 0x40, 0xf7, 0x29, 0xda, 0x62, 0xb2, 0x62, 0x9d, 0x1f, + 0xcc, 0xf7, 0x8, 0x5, 0x66, 0x6, 0x50, 0x23, 0x5, 0x90, 0x79, 0x71, + 0x8d, 0x81, 0x1b, 0xfb, 0x32, 0xfb, 0xb, 0xfb, 0x41, 0xfb, 0x2e, 0x4d, + 0xab, 0x5f, 0xb8, 0x74, 0x1f, 0xc1, 0xa6, 0x15, 0xf7, 0x55, 0xf7, 0xeb, + 0x5, 0x8c, 0x8a, 0x8b, 0x87, 0x88, 0x1a, 0x40, 0x51, 0xfb, 0xaa, 0x2b, + 0x77, 0x7f, 0x92, 0x96, 0x83, 0x1e, 0xe, 0x64, 0xa, 0xf7, 0xa0, 0x77, + 0x1, 0x2c, 0x1d, 0x54, 0x4e, 0x8f, 0xa, 0x91, 0x97, 0x31, 0xa, 0x79, + 0x86, 0x97, 0x9a, 0x9e, 0x94, 0xa4, 0x2d, 0xa, 0xcf, 0xf7, 0xfd, 0x2a, + 0x1d, 0x64, 0xa, 0xf7, 0xa0, 0x77, 0x1, 0x29, 0xa, 0x96, 0x9b, 0x9e, + 0x94, 0xa4, 0x2d, 0xa, 0x68, 0xf7, 0xfd, 0x26, 0xa, 0x64, 0xa, 0xf7, + 0x99, 0x77, 0x1, 0x29, 0xa, 0x95, 0x9a, 0x9e, 0x94, 0xa6, 0x2d, 0xa, + 0xfb, 0x1a, 0xf7, 0xfd, 0x42, 0xa, 0xe, 0x64, 0xa, 0xe7, 0xf7, 0x1a, + 0x1, 0xf7, 0x2c, 0x8e, 0xa, 0x3, 0x29, 0xa, 0x96, 0x9a, 0x9e, 0x94, + 0xa5, 0x2d, 0xa, 0xfb, 0x1a, 0xf8, 0x45, 0x2e, 0xa, 0x3a, 0xa, 0x79, + 0x1d, 0xf7, 0x93, 0x77, 0x1, 0x35, 0x1d, 0x55, 0x4b, 0x4a, 0x70, 0x7b, + 0x7e, 0x93, 0x93, 0x7e, 0x1e, 0x94, 0x7c, 0x7c, 0x95, 0x77, 0x38, 0x1d, + 0x6f, 0x96, 0x7e, 0x97, 0x82, 0x1e, 0x9a, 0x7f, 0x9c, 0x85, 0x72, 0x7a, + 0xa, 0x5b, 0xf8, 0x27, 0x26, 0xa, 0x87, 0x1d, 0xf7, 0x81, 0x77, 0x59, + 0x1d, 0x74, 0x6b, 0x43, 0x44, 0xfb, 0x86, 0x4f, 0x1d, 0x5a, 0x1f, 0x88, + 0x8e, 0xea, 0xf7, 0xe8, 0x44, 0x77, 0x1d, 0x1a, 0x7e, 0xfb, 0xe, 0xfc, + 0x5e, 0x4c, 0xfb, 0x88, 0x1e, 0x4d, 0x7b, 0x75, 0x87, 0xa, 0x77, 0xa9, + 0xab, 0xa1, 0x9e, 0xc7, 0x93, 0xac, 0x1f, 0xe, 0xfb, 0x6e, 0xfb, 0x61, + 0xf7, 0x7, 0xf7, 0x65, 0x77, 0xf7, 0xff, 0x77, 0xda, 0xf7, 0x1a, 0x12, + 0xeb, 0x8e, 0xa, 0xfb, 0x2, 0xcb, 0x13, 0xfa, 0x45, 0xa, 0x94, 0x94, + 0x7d, 0x1e, 0x94, 0x7d, 0x7e, 0x93, 0x78, 0x38, 0x1d, 0x6c, 0x98, 0x7e, + 0x98, 0x82, 0x1e, 0x99, 0x81, 0x9a, 0x84, 0x74, 0x7a, 0xa, 0xfb, 0x27, + 0xf8, 0x6f, 0x2e, 0xa, 0x13, 0xfc, 0x3a, 0xa, 0x66, 0x1d, 0xf8, 0x6b, + 0x3c, 0x1d, 0xe, 0x53, 0x1d, 0x56, 0x7d, 0x96, 0x9c, 0x94, 0x8e, 0x97, + 0x8f, 0x98, 0x1f, 0xbd, 0xf7, 0x4d, 0xf7, 0x28, 0xde, 0xa0, 0xd1, 0xfb, + 0x2a, 0x3a, 0xc7, 0xf7, 0x67, 0x9c, 0xc7, 0xa7, 0x94, 0xc3, 0x8e, 0x82, + 0xa, 0xba, 0x84, 0xa3, 0x79, 0x74, 0x1a, 0x83, 0x8b, 0x83, 0x89, 0x83, + 0x1e, 0x3e, 0xfb, 0xa8, 0x27, 0x56, 0x75, 0x45, 0xf3, 0xc3, 0x69, 0xfb, + 0xe, 0x7b, 0x52, 0x76, 0x8c, 0x60, 0x85, 0x19, 0xe, 0x66, 0x1d, 0xf9, + 0x58, 0x77, 0x1, 0xf7, 0x66, 0xf7, 0x21, 0x15, 0x71, 0x88, 0x52, 0x56, + 0x8f, 0xa, 0x90, 0x94, 0x9f, 0x9b, 0xc5, 0x91, 0xa1, 0x1f, 0xc4, 0xf7, + 0x61, 0xe1, 0xba, 0x9e, 0xcf, 0x35, 0x5c, 0xd0, 0xf7, 0x8e, 0x7f, 0xa, + 0x8d, 0xac, 0x8b, 0x6c, 0x1a, 0x76, 0x6f, 0x28, 0x71, 0x2f, 0x1e, 0x3d, + 0x60, 0x78, 0x45, 0xd8, 0xb6, 0x5, 0x65, 0xfb, 0x1d, 0x6d, 0xfb, 0x1, + 0x70, 0x1a, 0x7d, 0x85, 0x56, 0xcf, 0xdb, 0xbd, 0xd0, 0xce, 0xb7, 0x1e, + 0xe, 0xf7, 0xae, 0x83, 0xab, 0x73, 0xab, 0xf7, 0xc4, 0xad, 0xf7, 0x9f, + 0xab, 0x73, 0xab, 0x12, 0xa2, 0xf7, 0x21, 0x13, 0xb4, 0xf8, 0xe1, 0xf7, + 0xe4, 0x15, 0xde, 0x8a, 0xba, 0x80, 0x48, 0x1a, 0x83, 0x88, 0x6b, 0x8a, + 0x7d, 0x1e, 0xa6, 0x86, 0xd3, 0xf7, 0xa4, 0x70, 0x8e, 0x72, 0x54, 0x71, + 0x5a, 0xfb, 0x1e, 0x8c, 0x19, 0xc8, 0xf7, 0x70, 0x5, 0xac, 0x94, 0x8f, + 0x99, 0xb0, 0x1b, 0xf7, 0x44, 0x81, 0x30, 0x4d, 0x1f, 0xa4, 0x85, 0xb9, + 0xf7, 0x53, 0x5, 0xfb, 0xe3, 0x6, 0x78, 0x6d, 0x8d, 0x8d, 0x71, 0x1f, + 0x13, 0xac, 0x8d, 0x70, 0x73, 0x8d, 0x82, 0x1b, 0xfb, 0x24, 0xfb, 0xc9, + 0xfb, 0x6, 0xfb, 0xe0, 0xfb, 0xc, 0xeb, 0xfb, 0xb, 0xf7, 0x3c, 0x1f, + 0xf7, 0x35, 0x92, 0x5, 0x13, 0x74, 0xd5, 0x8c, 0x5, 0xf7, 0xbc, 0x6, + 0xc7, 0xf7, 0x56, 0x70, 0x90, 0x5, 0x46, 0x67, 0x40, 0x29, 0xfb, 0x14, + 0x1b, 0x4c, 0x70, 0x8e, 0xa9, 0x92, 0x8c, 0x94, 0x8d, 0x95, 0x1f, 0xfb, + 0x19, 0xab, 0x15, 0x13, 0xac, 0x4e, 0x7a, 0x73, 0x65, 0x4b, 0x1b, 0xfb, + 0x4, 0x80, 0xf2, 0xab, 0xf7, 0xe, 0xdf, 0xf7, 0xff, 0xf7, 0x50, 0x8c, + 0x1f, 0x9e, 0xc4, 0x8b, 0x4b, 0x74, 0x81, 0x67, 0x89, 0x83, 0x1f, 0xe, + 0xc7, 0x7e, 0xa8, 0x6e, 0xca, 0xf8, 0x13, 0xa8, 0x12, 0x91, 0xf7, 0x9, + 0x13, 0x70, 0xf8, 0x39, 0xf7, 0x6e, 0x15, 0xf7, 0x6a, 0xd2, 0xaf, 0x8b, + 0xa3, 0x1b, 0x9e, 0x9a, 0x7c, 0x70, 0x89, 0x8b, 0xfb, 0x17, 0xfb, 0x39, + 0x64, 0x1f, 0x20, 0xfb, 0x42, 0x15, 0x5c, 0xb3, 0xb8, 0x81, 0xa7, 0x1b, + 0xe6, 0xc5, 0xbd, 0xe2, 0xb6, 0x1f, 0x6f, 0x9a, 0x5, 0x58, 0x6a, 0x70, + 0x65, 0x4f, 0x1b, 0x60, 0x75, 0xb8, 0xbc, 0x98, 0x8e, 0x99, 0x90, 0x98, + 0x1f, 0xf1, 0xa2, 0xf7, 0x32, 0xb3, 0xf7, 0xd, 0x1a, 0xd5, 0x50, 0x9f, + 0x54, 0x49, 0x60, 0x69, 0x6f, 0x68, 0x1e, 0xa4, 0x7a, 0x70, 0xb0, 0x42, + 0x1b, 0xfb, 0x49, 0xfb, 0x4, 0xfb, 0x5c, 0x22, 0xfb, 0x39, 0xf7, 0x19, + 0x86, 0xa5, 0xaf, 0xd0, 0x96, 0xb9, 0xb7, 0x1f, 0xfb, 0x53, 0xc7, 0x15, + 0xea, 0xca, 0xf7, 0x1e, 0x8a, 0x87, 0x1e, 0xb9, 0x9f, 0xa6, 0xc1, 0xbb, + 0x1b, 0xc3, 0x8c, 0x56, 0x76, 0x1f, 0x13, 0xb0, 0x56, 0x51, 0xfb, 0xb6, + 0x28, 0x5d, 0x80, 0xb1, 0xbd, 0x1e, 0xe, 0x21, 0x79, 0xad, 0xf9, 0xe, + 0xae, 0x87, 0x77, 0xf7, 0x80, 0x85, 0x1d, 0x13, 0xdc, 0x8d, 0x79, 0x15, + 0xa9, 0x6, 0xa2, 0x95, 0x90, 0x97, 0xa4, 0x1b, 0x9c, 0xa3, 0x7e, 0x81, + 0xad, 0x1f, 0x84, 0xa1, 0xa6, 0x86, 0xa9, 0x1b, 0xf7, 0x2f, 0xe2, 0xdb, + 0xf7, 0x18, 0xd9, 0x4d, 0xc8, 0x4d, 0xc2, 0x1f, 0x4e, 0xc2, 0x4f, 0xbb, + 0xbf, 0x1a, 0x96, 0x83, 0xeb, 0xf1, 0xf7, 0x6, 0xa1, 0xfb, 0x2, 0x53, + 0x91, 0x1e, 0xa6, 0x87, 0x5, 0x13, 0xbc, 0xb3, 0xf7, 0x5d, 0x5, 0x6d, + 0x6, 0x71, 0x7f, 0x6f, 0x8b, 0x87, 0x1b, 0x7b, 0x76, 0x93, 0x93, 0x73, + 0x1f, 0x13, 0xdc, 0x92, 0x75, 0x72, 0x92, 0x70, 0x1b, 0xfb, 0x1a, 0x3a, + 0x2b, 0x26, 0x3e, 0xc2, 0x57, 0xc5, 0x5b, 0x1f, 0xcb, 0x56, 0xcf, 0x5b, + 0x47, 0x1a, 0x77, 0x82, 0x21, 0xfb, 0x4, 0x61, 0xfb, 0x8, 0x9b, 0xf7, + 0x40, 0x8a, 0x1e, 0x6e, 0x8d, 0x5, 0xf7, 0x94, 0xf8, 0x99, 0x15, 0xdd, + 0x6, 0xf7, 0x2a, 0xf7, 0x42, 0x5, 0x53, 0x6, 0xfb, 0xf, 0x78, 0x1d, + 0xfb, 0xa5, 0x93, 0x76, 0xf8, 0x4e, 0xac, 0x8a, 0x77, 0xf7, 0x8d, 0x77, + 0x12, 0xf7, 0x40, 0xf6, 0x13, 0xd8, 0x85, 0xa, 0x98, 0x96, 0x85, 0x85, + 0x9a, 0x1f, 0x87, 0x97, 0x99, 0x87, 0x9e, 0x1b, 0xcb, 0xe9, 0xb0, 0xec, + 0xba, 0x6e, 0xb7, 0x6c, 0xb3, 0x1f, 0x66, 0xba, 0x63, 0xb5, 0xad, 0x1a, + 0x90, 0x85, 0xbc, 0xc0, 0xc6, 0xa6, 0x46, 0x59, 0x93, 0x1e, 0xa6, 0x89, + 0x5, 0x13, 0xb8, 0x79, 0xa, 0x7a, 0x82, 0x90, 0x91, 0x7f, 0x1f, 0x13, + 0xd8, 0x90, 0x80, 0x7d, 0x91, 0x73, 0x1b, 0x4a, 0x3e, 0x67, 0x32, 0x4e, + 0xaa, 0x65, 0xbc, 0x4c, 0x1f, 0xa4, 0x6b, 0x9f, 0x5e, 0x69, 0x1a, 0x70, + 0x7d, 0x77, 0x66, 0x82, 0x48, 0x7c, 0xa, 0xf7, 0x6a, 0xf8, 0xa5, 0x60, + 0x1d, 0x58, 0x8b, 0xa4, 0xf8, 0xff, 0xa4, 0xc5, 0xf7, 0x1b, 0x1, 0xf7, + 0x74, 0xf7, 0x1b, 0xd8, 0xf7, 0x1b, 0x3, 0xd4, 0x16, 0xf7, 0xd6, 0xa4, + 0x6, 0x64, 0x67, 0x95, 0xac, 0x93, 0x8d, 0x95, 0x8f, 0x96, 0x1f, 0xbf, + 0xf7, 0x67, 0xf7, 0x52, 0xf7, 0x9f, 0x90, 0x1d, 0xb6, 0x93, 0x19, 0xa4, + 0xfb, 0x64, 0x72, 0x7, 0xbc, 0x89, 0x9f, 0x7c, 0x74, 0x1a, 0x79, 0x80, + 0x74, 0x7a, 0x72, 0x1e, 0xfb, 0x15, 0xfb, 0x4e, 0x5, 0x4b, 0xf7, 0x5c, + 0x7e, 0x96, 0xa7, 0x1a, 0xa2, 0x97, 0xa9, 0xc5, 0x1e, 0xa4, 0xfb, 0xaf, + 0x72, 0x7, 0xbb, 0x84, 0x92, 0x94, 0x9d, 0x54, 0xe3, 0xfb, 0xaa, 0x18, + 0x4f, 0xfb, 0x6c, 0x79, 0x4b, 0x72, 0x88, 0x51, 0x86, 0x19, 0xf7, 0x2b, + 0xf9, 0x95, 0x46, 0x1d, 0x58, 0x58, 0xa, 0xf7, 0x78, 0x77, 0x3e, 0xa, + 0xf7, 0xd1, 0xf9, 0x40, 0x60, 0xa, 0xfb, 0xa5, 0x52, 0x76, 0xf8, 0x43, + 0xeb, 0xf7, 0x85, 0x77, 0x1, 0x72, 0x75, 0x15, 0xa7, 0xb1, 0x92, 0x8a, + 0x9a, 0x1b, 0xa5, 0xa4, 0x78, 0x78, 0xa8, 0x1f, 0x75, 0xac, 0xb2, 0x74, + 0xbf, 0x76, 0xa, 0x7e, 0x8f, 0x82, 0x8f, 0x85, 0x1f, 0x90, 0x83, 0x92, + 0x86, 0x83, 0x1a, 0x84, 0x83, 0x83, 0x7e, 0x71, 0x81, 0xa2, 0xa8, 0x7c, + 0x1e, 0x7a, 0xad, 0x73, 0xb5, 0x4c, 0xa4, 0x80, 0xa, 0xfb, 0x2e, 0x70, + 0x1d, 0xfb, 0xf6, 0x5, 0xf7, 0x73, 0xf8, 0x99, 0x60, 0xa, 0xfb, 0x30, + 0xf7, 0x27, 0xf8, 0x29, 0xb7, 0xf7, 0xb, 0xf7, 0x28, 0x6d, 0xa9, 0x12, + 0xf8, 0x3c, 0xf7, 0x5, 0x13, 0xd8, 0xd9, 0xf8, 0x20, 0x15, 0xf4, 0x6, + 0x3f, 0xfc, 0x22, 0x8f, 0x3d, 0x55, 0x69, 0x8, 0x85, 0x82, 0x77, 0x85, + 0x7c, 0x1b, 0x81, 0x83, 0x8f, 0x94, 0x91, 0x94, 0x93, 0x93, 0x96, 0x1f, + 0x91, 0x93, 0x90, 0x95, 0x96, 0x1a, 0x9c, 0x7e, 0xac, 0x64, 0x5c, 0x80, + 0x62, 0x7d, 0x48, 0xc0, 0x72, 0xc3, 0xf7, 0x7, 0xef, 0xe5, 0xf7, 0xc8, + 0xc1, 0x1e, 0xa6, 0xf7, 0x2e, 0x5, 0xf7, 0x8, 0x6, 0x94, 0xb7, 0x5, + 0xfb, 0xa, 0x6, 0xf7, 0x1f, 0xa2, 0x9b, 0xed, 0xcc, 0x1b, 0x97, 0x97, + 0x86, 0x81, 0x86, 0x86, 0x86, 0x85, 0x86, 0x1f, 0x83, 0x83, 0x81, 0x81, + 0x77, 0x1a, 0x13, 0xe8, 0x66, 0xaa, 0x7e, 0x9d, 0xcb, 0x8b, 0xc0, 0x95, + 0xba, 0x5c, 0xb1, 0x4f, 0xfb, 0x41, 0x64, 0xfb, 0x54, 0x40, 0x72, 0x1e, + 0x20, 0x6, 0xe, 0x7f, 0x1d, 0xf7, 0x42, 0x77, 0x1, 0xb3, 0xf8, 0x98, + 0x5b, 0xa, 0xe6, 0xe3, 0x30, 0x7e, 0x1d, 0x7f, 0x1d, 0xf7, 0x42, 0x77, + 0x1, 0xf7, 0x3b, 0xf8, 0x98, 0x60, 0x1d, 0xfb, 0xdd, 0xf8, 0x98, 0xd3, + 0x43, 0xf7, 0x36, 0x1, 0xd3, 0xf9, 0x3a, 0x15, 0xb6, 0x6, 0x57, 0x90, + 0xaa, 0x65, 0xd3, 0x1b, 0xe5, 0x9e, 0xc3, 0xad, 0x9b, 0x1f, 0xb2, 0x6, + 0x85, 0x80, 0xfb, 0x30, 0xfb, 0x37, 0xfb, 0x1f, 0x89, 0xf7, 0xa, 0xb7, + 0x1e, 0xe, 0xfb, 0xdd, 0xf8, 0xa1, 0xf7, 0x16, 0x1, 0xf7, 0x57, 0xf7, + 0x16, 0x3, 0xf7, 0x37, 0xf8, 0xe2, 0x15, 0x4b, 0xa, 0xe, 0xfb, 0xdd, + 0xf8, 0x9d, 0xbc, 0xf7, 0xb, 0xbb, 0x1, 0xf7, 0x6, 0xbb, 0xf7, 0x15, + 0xbc, 0x3, 0xf7, 0x13, 0xf9, 0x3, 0x15, 0x4f, 0xbb, 0x5c, 0xc6, 0xc5, + 0xbb, 0xbb, 0xc6, 0xc5, 0x5b, 0xbb, 0x51, 0x50, 0x5b, 0x5c, 0x5e, 0xa, + 0xe, 0xfb, 0xdd, 0xfb, 0x41, 0xd0, 0xf7, 0x28, 0x77, 0x1, 0x63, 0xdf, + 0x3, 0xa7, 0xb7, 0x15, 0x63, 0x5f, 0x6f, 0x5e, 0x5e, 0x1a, 0x46, 0xd2, + 0x7d, 0xb3, 0xad, 0xc9, 0xa6, 0xbb, 0xa1, 0x1e, 0x71, 0x99, 0x5, 0x81, + 0x79, 0x7e, 0x81, 0x74, 0x1b, 0x63, 0x72, 0x9d, 0xba, 0xa4, 0x98, 0xb2, + 0x8f, 0x9e, 0x1f, 0xe, 0xfb, 0xdd, 0xf8, 0xb2, 0xf6, 0x30, 0x76, 0xa6, + 0x76, 0xb0, 0xd6, 0x41, 0xcf, 0x12, 0x13, 0x30, 0x87, 0xf8, 0xb3, 0x15, + 0xaf, 0x6, 0x13, 0x48, 0x9c, 0x92, 0x93, 0xa0, 0xa9, 0x1b, 0xa5, 0xa1, + 0x82, 0x81, 0x9f, 0x1f, 0x13, 0x80, 0x81, 0xa0, 0xa0, 0x81, 0xa5, 0x1b, + 0xd9, 0x9f, 0xd6, 0xab, 0x93, 0x1f, 0x66, 0x6, 0x7a, 0x83, 0x82, 0x76, + 0x6c, 0x1b, 0x7e, 0x74, 0x95, 0x95, 0x72, 0x1f, 0x94, 0x74, 0x72, 0x94, + 0x73, 0x1b, 0x13, 0x30, 0x33, 0x7a, 0x23, 0x89, 0x1f, 0xe, 0xfb, 0xdd, + 0xf8, 0x98, 0xf7, 0x49, 0x1, 0xd0, 0xf8, 0x98, 0x15, 0xbb, 0x6, 0xf7, + 0x2d, 0x21, 0x1d, 0xd0, 0xfb, 0x17, 0x15, 0xba, 0x5a, 0xa, 0xf7, 0x46, + 0xc7, 0x4f, 0xe6, 0x1, 0x80, 0xf7, 0x46, 0x15, 0xf8, 0x55, 0xc7, 0xfc, + 0x55, 0x6, 0xe, 0xf7, 0xe6, 0xf7, 0x46, 0xc8, 0x4e, 0xe6, 0x1, 0xf7, + 0x46, 0x4, 0xfa, 0x53, 0xc8, 0xfe, 0x53, 0x6, 0xe, 0xfb, 0xdd, 0x69, + 0x1d, 0xf7, 0x14, 0xe1, 0x35, 0xf7, 0x30, 0x13, 0xe0, 0xf7, 0xe0, 0xf9, + 0x29, 0x15, 0x5c, 0xa, 0xc6, 0x7b, 0xa6, 0x1e, 0x13, 0xd0, 0xb4, 0xa8, + 0xab, 0xb5, 0xa9, 0x7c, 0x9a, 0x7a, 0x97, 0x1f, 0x13, 0xe0, 0x79, 0x98, + 0x77, 0x94, 0xa1, 0x7a, 0x1d, 0xe, 0xfb, 0xdd, 0x69, 0x1d, 0xf7, 0x26, + 0x6d, 0x1d, 0x13, 0xd0, 0xf7, 0x3, 0xf8, 0x5, 0x15, 0x49, 0xa, 0x13, + 0xe0, 0x62, 0x6e, 0x6b, 0x61, 0x6b, 0x9c, 0x7d, 0x9c, 0x7f, 0x1f, 0x13, + 0xd0, 0x9d, 0x7f, 0x9d, 0x81, 0x89, 0xa, 0xe, 0xfb, 0xdd, 0xfb, 0x35, + 0x62, 0xa, 0xb6, 0x6d, 0x1d, 0x13, 0xd0, 0x86, 0xfb, 0x32, 0x15, 0x98, + 0x73, 0x5, 0x49, 0xa, 0x13, 0xe0, 0x62, 0x6e, 0x6b, 0x61, 0x6f, 0x98, + 0x7c, 0x9a, 0x80, 0x1f, 0x13, 0xd0, 0x9e, 0x7c, 0xa2, 0x83, 0x73, 0x54, + 0xa, 0xe, 0x69, 0x1d, 0xc0, 0xe1, 0x35, 0xf7, 0x30, 0xef, 0xe1, 0x35, + 0xf7, 0x30, 0x13, 0xd8, 0xf7, 0x95, 0xf9, 0x29, 0x15, 0x63, 0xa, 0xab, + 0x79, 0x9a, 0x7a, 0x97, 0x1e, 0x13, 0xe4, 0x79, 0x97, 0x7a, 0x94, 0xa0, + 0x7a, 0x1d, 0xf7, 0x94, 0x16, 0x63, 0xa, 0xa8, 0x7c, 0x9a, 0x7b, 0x97, + 0x1e, 0x13, 0xe8, 0x78, 0x99, 0x77, 0x93, 0xa2, 0x7a, 0x1d, 0xe, 0x69, + 0x1d, 0xf0, 0x6d, 0x1d, 0xef, 0x6d, 0x1d, 0x13, 0xe4, 0xf7, 0xd6, 0xf8, + 0x5, 0x15, 0x40, 0xa, 0x6d, 0x61, 0x6c, 0x9c, 0x7b, 0x9c, 0x7f, 0x1f, + 0x13, 0xd4, 0x9d, 0x7e, 0x9d, 0x81, 0x89, 0xa, 0xfb, 0x87, 0x73, 0x15, + 0x40, 0xa, 0x6d, 0x61, 0x6d, 0x9a, 0x7c, 0x9b, 0x7f, 0x1f, 0x13, 0xd8, + 0x9e, 0x7d, 0x9f, 0x81, 0x75, 0x54, 0xa, 0xe, 0xfb, 0x35, 0x62, 0xa, + 0x82, 0x6d, 0x1d, 0xef, 0x6d, 0x1d, 0x13, 0xe4, 0xf7, 0x5b, 0xfb, 0x32, + 0x15, 0x98, 0x73, 0x5, 0x40, 0xa, 0x6c, 0x61, 0x6a, 0x9d, 0x7c, 0x9d, + 0x7f, 0x1f, 0x13, 0xd4, 0x9c, 0x7f, 0x9c, 0x82, 0x89, 0xa, 0xfb, 0x94, + 0x16, 0x98, 0x73, 0x5, 0x40, 0xa, 0x6c, 0x61, 0x6c, 0x9b, 0x7c, 0x9c, + 0x7f, 0x1f, 0x13, 0xd8, 0x9d, 0x7e, 0x9e, 0x82, 0x75, 0x54, 0xa, 0xe, + 0xfb, 0x10, 0x76, 0xf8, 0xb7, 0xf3, 0x4c, 0xa3, 0xf7, 0x6e, 0x77, 0x12, + 0x13, 0xb0, 0xf7, 0x30, 0xfb, 0x25, 0x15, 0xa2, 0x6, 0xb1, 0xf7, 0x1e, + 0xb0, 0xf7, 0x4d, 0xd0, 0xe6, 0x8, 0x81, 0x99, 0x7b, 0xce, 0xbe, 0x1a, + 0x9b, 0x8d, 0x9a, 0x8f, 0x96, 0x1e, 0xa9, 0x8d, 0xa1, 0x84, 0x9d, 0x82, + 0x8, 0x13, 0xd0, 0x7f, 0xa2, 0x9d, 0x7c, 0xa2, 0x1b, 0x95, 0xba, 0x90, + 0xba, 0x90, 0x8b, 0xba, 0x54, 0x73, 0x7a, 0x7e, 0x80, 0x73, 0x1f, 0x13, + 0xb0, 0x83, 0x7a, 0x77, 0x84, 0x6e, 0x1b, 0x8f, 0x9d, 0x91, 0xac, 0x9e, + 0xa2, 0x8, 0xa6, 0xad, 0x9f, 0xa5, 0xa9, 0x1a, 0x9d, 0x80, 0xaf, 0x5d, + 0x69, 0x76, 0x73, 0x68, 0x6c, 0x96, 0x6f, 0x91, 0x71, 0x1e, 0x90, 0x72, + 0x8a, 0x73, 0x80, 0x72, 0x6a, 0x8a, 0x75, 0x94, 0x78, 0x94, 0x8, 0x13, + 0xd0, 0x96, 0x76, 0x79, 0x96, 0x70, 0x1b, 0x81, 0x62, 0x89, 0x57, 0x72, + 0x9e, 0x74, 0xaa, 0xab, 0x9c, 0x97, 0x96, 0x9f, 0x1f, 0x13, 0xb0, 0x9c, + 0x94, 0x9f, 0x93, 0xaa, 0x8a, 0x88, 0x67, 0x6c, 0x38, 0x56, 0x5f, 0x95, + 0xfb, 0xa, 0x18, 0xe, 0xfb, 0x57, 0x76, 0xf7, 0x57, 0xf4, 0xf7, 0xb9, + 0xf4, 0xf7, 0x57, 0x77, 0x1, 0xd9, 0xf7, 0x12, 0xaf, 0x9f, 0xaf, 0xf7, + 0x12, 0x14, 0xe, 0xf7, 0x4a, 0xa1, 0x15, 0x73, 0x40, 0x3b, 0x59, 0x51, + 0x1a, 0x6c, 0xa1, 0x73, 0xaa, 0xb9, 0xa6, 0xb8, 0xb5, 0x1e, 0xad, 0x80, + 0xac, 0xad, 0x1a, 0x9c, 0x8f, 0x9c, 0x8e, 0x9b, 0x1e, 0x8a, 0xc1, 0xb8, + 0x61, 0xc0, 0x1b, 0xa9, 0xa1, 0xa2, 0xa8, 0xaa, 0x71, 0xa1, 0x6e, 0x1f, + 0x8c, 0x6c, 0x50, 0x5e, 0x58, 0x1b, 0x9c, 0xbe, 0xab, 0xa3, 0xbb, 0xa0, + 0x8, 0x70, 0x9e, 0x79, 0xa1, 0xae, 0x1a, 0xc2, 0xb7, 0xa7, 0xb6, 0x9e, + 0x1e, 0x74, 0xa0, 0x7b, 0x9c, 0xad, 0x1a, 0x97, 0x8d, 0x96, 0x8e, 0x97, + 0x1e, 0xb4, 0xcd, 0x58, 0x92, 0xad, 0x1f, 0xac, 0xa0, 0x9e, 0xad, 0xac, + 0x70, 0x9e, 0x6b, 0x5d, 0x67, 0x5f, 0x8c, 0x5a, 0x1f, 0xa3, 0xd6, 0xdb, + 0xbd, 0xc5, 0x1a, 0xaa, 0x75, 0xa3, 0x6c, 0x5d, 0x70, 0x5e, 0x61, 0x1e, + 0x69, 0x96, 0x6a, 0x69, 0x1a, 0x7a, 0x87, 0x7a, 0x88, 0x7b, 0x1e, 0x8c, + 0x55, 0x5e, 0xb5, 0x56, 0x1b, 0x6d, 0x75, 0x74, 0x6e, 0x6c, 0xa5, 0x75, + 0xa8, 0x1f, 0x8a, 0xaa, 0xc6, 0xb8, 0xbe, 0x1b, 0x7a, 0x58, 0x6b, 0x73, + 0x5b, 0x76, 0x8, 0xa6, 0x78, 0x9d, 0x75, 0x68, 0x1a, 0x54, 0x5f, 0x6f, + 0x60, 0x78, 0x1e, 0xa2, 0x76, 0x9b, 0x7a, 0x69, 0x1a, 0x7f, 0x89, 0x80, + 0x88, 0x7f, 0x1e, 0x62, 0x49, 0xbe, 0x84, 0x69, 0x1f, 0x6a, 0x76, 0x78, + 0x69, 0x6a, 0xa6, 0x78, 0xab, 0xb9, 0xaf, 0xb7, 0x8a, 0xbc, 0x1f, 0xe, + 0xfb, 0xcc, 0xf7, 0x58, 0x76, 0xf7, 0xc4, 0x77, 0xcd, 0x77, 0x1, 0xac, + 0xf7, 0xe6, 0x15, 0x3c, 0xcb, 0x4c, 0xd9, 0xd9, 0xca, 0xc9, 0xd9, 0xd9, + 0x4a, 0xcc, 0x3d, 0x3c, 0x4e, 0x4c, 0x3d, 0x1e, 0xe, 0xf7, 0xe6, 0x7e, + 0xf7, 0x28, 0x1, 0xb3, 0xf7, 0x2a, 0xf7, 0x49, 0xf7, 0x2a, 0xf7, 0x49, + 0xf7, 0x2a, 0x14, 0x70, 0xb3, 0xc8, 0x15, 0x62, 0xab, 0x7d, 0x1d, 0x6a, + 0x69, 0x63, 0x1e, 0xf7, 0xdf, 0x16, 0x62, 0xab, 0x7d, 0x1d, 0x6a, 0x69, + 0x63, 0x1e, 0xf7, 0xdf, 0x16, 0x62, 0xa9, 0x6a, 0xb7, 0xb4, 0xae, 0xab, + 0xb5, 0xb4, 0x68, 0x53, 0xa, 0xf7, 0xe6, 0x7d, 0xa5, 0x85, 0x76, 0xf7, + 0xe1, 0xa5, 0xf7, 0xc6, 0xa5, 0x8c, 0x77, 0x12, 0x13, 0xb0, 0xf7, 0xe6, + 0xf7, 0x8, 0x2b, 0x1d, 0xf7, 0x74, 0x33, 0x2b, 0x1d, 0xfd, 0x69, 0xf7, + 0x88, 0x2b, 0x1d, 0x13, 0x68, 0xfb, 0x30, 0xfc, 0xbb, 0x15, 0xc7, 0x6, + 0xf8, 0xe9, 0xf9, 0x48, 0x5, 0x4f, 0x6, 0xe, 0xfb, 0xdd, 0x72, 0x1d, + 0xab, 0xf7, 0x6d, 0x71, 0x1d, 0x80, 0x95, 0x96, 0x8a, 0x1d, 0x42, 0x8d, + 0xa, 0xe2, 0x5f, 0xa, 0xe, 0xfb, 0xdd, 0x72, 0x1d, 0xf7, 0x30, 0x49, + 0x1d, 0x96, 0x82, 0x7f, 0x93, 0x83, 0x1b, 0x86, 0x87, 0x87, 0x7f, 0x1f, + 0xe, 0xfc, 0x83, 0x92, 0x76, 0xf9, 0x4d, 0x77, 0x1, 0xfb, 0x1, 0x7d, + 0x15, 0xf8, 0x45, 0xf9, 0x4b, 0x5, 0x8d, 0x4f, 0x7, 0xfc, 0x45, 0xfd, + 0x4d, 0x5, 0xe, 0x90, 0x8b, 0xba, 0xf7, 0x60, 0xb4, 0xef, 0xb4, 0xf7, + 0x69, 0xb0, 0x1, 0xf7, 0x4, 0xf7, 0x26, 0xf7, 0xa7, 0xae, 0x3, 0xb3, + 0xf7, 0x8f, 0x15, 0xfb, 0x41, 0xf7, 0x1a, 0x3d, 0xf7, 0x4, 0xf7, 0xb, + 0xf7, 0x16, 0xbb, 0xde, 0xc5, 0x1e, 0x6d, 0xa1, 0x5, 0x53, 0x63, 0xfb, + 0x2, 0x59, 0x57, 0x1b, 0xfb, 0xe, 0x55, 0xc3, 0xf7, 0x28, 0x8c, 0x1f, + 0xf7, 0xbd, 0x6, 0x97, 0xb4, 0x5, 0xfb, 0xc5, 0x6, 0xa5, 0x96, 0xb9, + 0x94, 0xa7, 0x1e, 0xf7, 0xc1, 0x6, 0x99, 0xb4, 0x5, 0xfb, 0xc2, 0x6, + 0xd5, 0x97, 0xe3, 0xf7, 0x1f, 0xf1, 0x1b, 0xf7, 0x6, 0x91, 0x51, 0x2e, + 0x1f, 0xae, 0xf7, 0x22, 0x6, 0x9e, 0x63, 0x79, 0xa6, 0x2c, 0x1b, 0x52, + 0xfb, 0x77, 0x55, 0xfb, 0x58, 0x49, 0x1f, 0xfb, 0x17, 0x6, 0x7e, 0x62, + 0x5, 0xf7, 0x14, 0x6, 0x83, 0x6e, 0x83, 0x61, 0x89, 0x6e, 0x8, 0x2a, + 0x6, 0x7e, 0x62, 0x5, 0xe, 0xf7, 0xe6, 0xf7, 0x9d, 0xa0, 0x89, 0x76, + 0xf8, 0x14, 0xa1, 0x12, 0xf7, 0x3c, 0xd9, 0xf7, 0x8d, 0xa6, 0xf7, 0xcc, + 0xd9, 0x13, 0xbc, 0xf7, 0xa, 0xf7, 0x9d, 0x15, 0xf7, 0x46, 0xa0, 0x6, + 0x58, 0x90, 0x8c, 0x8c, 0xb9, 0x1a, 0xf7, 0xc9, 0xbc, 0x7, 0xb3, 0x9d, + 0x6d, 0x67, 0x93, 0x1f, 0xa0, 0xe3, 0xfb, 0xf2, 0x33, 0xa0, 0x6, 0xaf, + 0x93, 0x9d, 0xa9, 0xb3, 0x1b, 0xbc, 0xfb, 0xc9, 0x6, 0x5d, 0x8c, 0x8a, + 0x58, 0x86, 0x1e, 0xf7, 0xd9, 0x76, 0x15, 0xf7, 0x17, 0xa0, 0x6, 0x5e, + 0x8f, 0x84, 0x8c, 0xba, 0x1a, 0xf7, 0x77, 0x8d, 0x7, 0x13, 0x7c, 0xf7, + 0x26, 0xfb, 0xc2, 0x5, 0x96, 0x6, 0xf7, 0x2b, 0xf7, 0xc4, 0x5, 0x8d, + 0xfb, 0x79, 0x6, 0x13, 0xbc, 0x5d, 0x8d, 0x8a, 0x57, 0x86, 0x1e, 0x76, + 0xf7, 0x46, 0xa0, 0x7, 0x58, 0x90, 0x8c, 0x8c, 0xb9, 0x1a, 0xf7, 0x95, + 0x7, 0xad, 0x96, 0x9f, 0xb8, 0x1e, 0x9f, 0xfb, 0x1, 0x7, 0xfb, 0x31, + 0xfb, 0xc2, 0xfb, 0x2a, 0xf7, 0xc2, 0x5, 0xfb, 0x13, 0x77, 0x6, 0xa8, + 0xa7, 0x76, 0x6c, 0x98, 0x1f, 0xfb, 0x97, 0x7, 0x5c, 0x84, 0x8a, 0x5e, + 0x87, 0x1e, 0xe, 0x53, 0xf7, 0x65, 0xc9, 0x4d, 0xe3, 0x1, 0xbe, 0xf7, + 0x65, 0x15, 0xf8, 0x8c, 0xc9, 0xfc, 0x8c, 0x6, 0xe, 0x21, 0xfb, 0x61, + 0xad, 0xf7, 0x4b, 0x76, 0xf8, 0x34, 0xb5, 0xf1, 0xf7, 0x2c, 0x6d, 0xa9, + 0x12, 0x13, 0xe8, 0x9c, 0xf8, 0x2b, 0x15, 0xd6, 0x6, 0x2f, 0xfc, 0x2f, + 0x5, 0xfb, 0x19, 0x6d, 0x7e, 0x69, 0x5d, 0x1b, 0x79, 0x8b, 0x91, 0x8e, + 0x93, 0x92, 0x8e, 0x90, 0x92, 0x1f, 0x8f, 0x90, 0x8e, 0x91, 0x96, 0x1a, + 0xa9, 0x73, 0x9e, 0x6e, 0x80, 0x67, 0x84, 0x59, 0x60, 0xb6, 0x6b, 0xc2, + 0xed, 0xdf, 0xf7, 0x13, 0xd5, 0x9c, 0x1e, 0xf1, 0xf8, 0x2f, 0x5, 0xf7, + 0x2a, 0x6, 0x46, 0xfb, 0xa1, 0x5, 0x85, 0x74, 0x86, 0x6f, 0x71, 0x1a, + 0x65, 0x9b, 0x6b, 0xbc, 0xcc, 0xb5, 0xb3, 0xeb, 0xc8, 0x1e, 0x75, 0x98, + 0x5, 0x7f, 0x83, 0x5f, 0x48, 0x74, 0x1b, 0x80, 0x87, 0x94, 0x99, 0xa8, + 0x9b, 0xbc, 0x8e, 0x99, 0x1f, 0xd4, 0xf7, 0xaf, 0x5, 0x8a, 0x76, 0xfb, + 0x1, 0x82, 0x72, 0x1b, 0xfb, 0xa, 0x6, 0xf7, 0x23, 0xb1, 0xaa, 0xdc, + 0xee, 0x1b, 0xa4, 0x8b, 0x7f, 0x86, 0x84, 0x82, 0x85, 0x85, 0x80, 0x1f, + 0x87, 0x84, 0x88, 0x83, 0x7f, 0x1a, 0x13, 0xf0, 0x71, 0xa0, 0x6f, 0xb0, + 0xa8, 0xa7, 0x9f, 0xb0, 0xc8, 0x48, 0xad, 0x47, 0xfb, 0x4a, 0x5c, 0xfb, + 0x1d, 0xfb, 0x9, 0x63, 0x1e, 0x3f, 0x6, 0xe, 0x21, 0xfb, 0x61, 0xae, + 0xf7, 0x4a, 0x76, 0xf8, 0x34, 0xb5, 0xf7, 0x76, 0xa8, 0x1, 0x9f, 0xf8, + 0x2b, 0x15, 0xd5, 0x6, 0x2f, 0xfc, 0x26, 0x5, 0xfb, 0x3, 0x72, 0x7c, + 0x4b, 0x61, 0x1b, 0x7a, 0x85, 0x91, 0x91, 0x91, 0x90, 0x90, 0x8f, 0x92, + 0x1f, 0x8f, 0x91, 0x8e, 0x91, 0x96, 0x1a, 0xa5, 0x79, 0x9f, 0x6f, 0x85, + 0x5c, 0x8b, 0x57, 0x41, 0xd7, 0x83, 0x9d, 0xf3, 0xd1, 0xba, 0xf7, 0x37, + 0xab, 0x1e, 0xee, 0xf8, 0x26, 0x5, 0xf7, 0x27, 0x6, 0x3c, 0xfb, 0xd5, + 0x5, 0x89, 0x81, 0x89, 0x80, 0x81, 0x1a, 0x68, 0x9c, 0x6e, 0xc1, 0xd7, + 0xb5, 0xcc, 0xd1, 0xb8, 0x1e, 0x77, 0x96, 0x5, 0x7a, 0x80, 0x64, 0x51, + 0x72, 0x1b, 0x7d, 0x87, 0x93, 0x95, 0x91, 0x8d, 0x92, 0x8d, 0x91, 0x1f, + 0xf7, 0x2b, 0xf8, 0xee, 0x28, 0x7f, 0x5, 0x87, 0x50, 0x9a, 0x6c, 0x1b, + 0xfb, 0x45, 0x61, 0xfb, 0x1d, 0xfb, 0xa, 0x66, 0x1f, 0x41, 0x6, 0xf7, + 0x53, 0x16, 0xe3, 0xa0, 0xab, 0xf7, 0x1e, 0xe9, 0x1b, 0xa2, 0x96, 0x7e, + 0x85, 0x87, 0x84, 0x84, 0x85, 0x81, 0x1f, 0x87, 0x84, 0x87, 0x82, 0x81, + 0x1a, 0x73, 0x98, 0x80, 0x93, 0x85, 0x1e, 0x6d, 0xfb, 0xb, 0x5, 0xe, + 0x79, 0x9d, 0xf8, 0x54, 0x99, 0xf7, 0x63, 0x9b, 0x98, 0x91, 0x6, 0xfb, + 0x62, 0x8d, 0xf7, 0x60, 0x8b, 0xf7, 0x9c, 0x94, 0x7, 0x1e, 0xa0, 0x39, + 0x63, 0xff, 0xc, 0x9, 0xb4, 0xa, 0xf7, 0xc, 0xb, 0x8c, 0xc, 0xe, + 0xf8, 0x88, 0x14, 0xf9, 0x2a, 0x15, 0xb7, 0x13, 0x0, 0x71, 0x2, 0x0, + 0x1, 0x0, 0x29, 0x0, 0x2f, 0x0, 0x3b, 0x0, 0x58, 0x0, 0x61, 0x0, + 0x9b, 0x0, 0x9e, 0x0, 0xab, 0x0, 0xb6, 0x0, 0xc3, 0x0, 0xd6, 0x0, + 0xda, 0x0, 0xea, 0x0, 0xfb, 0x0, 0xff, 0x1, 0x6, 0x1, 0x10, 0x1, + 0x28, 0x1, 0x2e, 0x1, 0x58, 0x1, 0x62, 0x1, 0x76, 0x1, 0x89, 0x1, + 0x96, 0x1, 0xa8, 0x1, 0xb5, 0x1, 0xb9, 0x1, 0xf3, 0x1, 0xfd, 0x2, + 0xd, 0x2, 0x41, 0x2, 0x4a, 0x2, 0x51, 0x2, 0x5d, 0x2, 0x65, 0x2, + 0x73, 0x2, 0x7d, 0x2, 0x86, 0x2, 0x92, 0x2, 0x9e, 0x2, 0xc4, 0x2, + 0xcd, 0x2, 0xe0, 0x2, 0xf2, 0x2, 0xfb, 0x3, 0x3, 0x3, 0x9, 0x3, + 0x28, 0x3, 0x32, 0x3, 0x3c, 0x3, 0x58, 0x3, 0x60, 0x3, 0x68, 0x3, + 0x6d, 0x3, 0x74, 0x3, 0x7b, 0x3, 0x81, 0x3, 0x9a, 0x3, 0x9d, 0x3, + 0xa3, 0x3, 0xb0, 0x3, 0xc6, 0x3, 0xdc, 0x3, 0xea, 0x3, 0xee, 0x3, + 0xf4, 0x3, 0xfa, 0x4, 0x4, 0x4, 0xb, 0x4, 0x12, 0x4, 0x24, 0x4, + 0x32, 0x4, 0x37, 0x4, 0x48, 0x4, 0x53, 0x4, 0x62, 0x4, 0x6c, 0x4, + 0x70, 0x4, 0x76, 0x4, 0x7a, 0x4, 0x83, 0x4, 0x8b, 0x4, 0x92, 0x4, + 0x97, 0x4, 0x9c, 0x4, 0xa1, 0x4, 0xaf, 0x4, 0xbd, 0x4, 0xc8, 0x4, + 0xd5, 0x4, 0xdd, 0x4, 0xe1, 0x4, 0xed, 0x4, 0xf9, 0x4, 0xff, 0x5, + 0x9, 0x5, 0x14, 0x5, 0x1d, 0x5, 0x24, 0x5, 0x29, 0x5, 0x33, 0x5, + 0x3d, 0x5, 0x47, 0x5, 0x51, 0x5, 0x5a, 0x5, 0x5e, 0x5, 0x67, 0x5, + 0x6d, 0x5, 0x73, 0x5, 0x79, 0x5, 0x7f, 0x5, 0x83, 0x5, 0x87, 0x50, + 0x1d, 0xf4, 0xc2, 0x1a, 0xd3, 0x47, 0x9d, 0x68, 0xfb, 0x37, 0xfb, 0x13, + 0xfb, 0x4b, 0xfb, 0x1c, 0xfb, 0x4, 0xdf, 0x5f, 0x35, 0xa, 0x98, 0xda, + 0x9e, 0x8d, 0x8d, 0x3d, 0xa, 0x72, 0x82, 0x57, 0x70, 0x2d, 0xfb, 0x17, + 0x68, 0x1f, 0xb, 0x6, 0xf7, 0x2c, 0x21, 0x1d, 0xb, 0x77, 0x1, 0x90, + 0xf7, 0x16, 0xf7, 0x3f, 0xe7, 0x3, 0x20, 0xa, 0xb, 0xf7, 0x8, 0xe3, + 0x90, 0xa, 0xf7, 0xab, 0x7b, 0x1d, 0x7b, 0x59, 0x40, 0x51, 0xfb, 0xa6, + 0x36, 0xa, 0xf7, 0x3c, 0xf7, 0x29, 0xf7, 0x1a, 0xfb, 0xb, 0xa1, 0x4b, + 0x1d, 0xb, 0x32, 0x1d, 0x8c, 0xa9, 0x8a, 0x6b, 0x34, 0x1d, 0xb, 0x77, + 0x1, 0x4d, 0xa, 0x3, 0xf7, 0x3f, 0xf7, 0x2c, 0x15, 0xe7, 0xe2, 0xf8, + 0x29, 0xf7, 0x4c, 0xf3, 0x8c, 0x21, 0x76, 0xfb, 0x8, 0x2d, 0xfc, 0x1a, + 0xfb, 0x46, 0x50, 0x5e, 0xaf, 0x55, 0x1d, 0xd2, 0xfb, 0x16, 0xf7, 0x3b, + 0xf7, 0x8d, 0xf7, 0x45, 0xf7, 0x9c, 0xf7, 0x56, 0xf7, 0x42, 0xfb, 0x19, + 0xd0, 0x5d, 0x1d, 0xfb, 0x79, 0xfb, 0x89, 0x1e, 0xb, 0x22, 0x1d, 0xe, + 0xa4, 0x87, 0x80, 0xb6, 0x4f, 0x1b, 0xfb, 0xe, 0xfb, 0x29, 0x2f, 0x1d, + 0xb, 0xf7, 0x8c, 0xf7, 0x6, 0x15, 0x8d, 0x8c, 0x5, 0x2e, 0x1d, 0xb, + 0x2c, 0x1d, 0x54, 0x4d, 0x8f, 0xa, 0x91, 0x98, 0x31, 0xa, 0x79, 0x86, + 0xb, 0x4c, 0xa, 0x60, 0x3a, 0x7c, 0x71, 0xfb, 0x27, 0x8c, 0x19, 0x65, + 0xa, 0x93, 0x73, 0x1d, 0x8b, 0x31, 0x1d, 0xb, 0x16, 0x20, 0x1d, 0xb, + 0x57, 0xa, 0x4e, 0x90, 0x7c, 0x8f, 0x39, 0x1d, 0x65, 0x50, 0x7b, 0x97, + 0x6e, 0x82, 0x19, 0xb, 0x91, 0x9f, 0x1f, 0x44, 0x1d, 0x89, 0xa1, 0x8a, + 0x71, 0x51, 0x40, 0xfb, 0x4a, 0x46, 0x47, 0xa, 0xb, 0x15, 0x20, 0x1d, + 0xb, 0x68, 0x1d, 0xf7, 0x7f, 0x22, 0xa, 0xb, 0xcc, 0xdb, 0xf7, 0x84, + 0xdf, 0x94, 0xa7, 0x39, 0xa, 0xb, 0xab, 0xde, 0xf7, 0xa1, 0x9f, 0xd1, + 0x1f, 0xfb, 0xa, 0x6, 0x6c, 0x20, 0x74, 0x3c, 0x5e, 0x3a, 0x8, 0x73, + 0x7e, 0x4e, 0x2c, 0x63, 0x1b, 0xb, 0x87, 0x8f, 0x95, 0x24, 0xa, 0xb, + 0x15, 0xf7, 0x58, 0xae, 0x6, 0x60, 0x75, 0x98, 0xa1, 0x92, 0x8c, 0x93, + 0x8f, 0x91, 0x48, 0x1d, 0x9a, 0x20, 0x8b, 0x95, 0x77, 0x1a, 0x5a, 0x69, + 0x84, 0x5e, 0x57, 0xa, 0x4d, 0x91, 0x7d, 0x8e, 0x39, 0x1d, 0x67, 0x50, + 0x78, 0x95, 0x6f, 0x84, 0x6b, 0x1d, 0x77, 0x74, 0xa, 0x13, 0x6c, 0x28, + 0xa, 0x13, 0x9c, 0xb, 0xcd, 0xf7, 0x0, 0xbf, 0xe2, 0xbe, 0xaa, 0x1e, + 0x6e, 0x9c, 0x5, 0x66, 0x72, 0x67, 0x55, 0x55, 0x1b, 0x77, 0x5c, 0xb, + 0x2b, 0x57, 0x8b, 0xbf, 0x9f, 0x1e, 0xfb, 0xb, 0xbd, 0x15, 0x2b, 0xd9, + 0x54, 0xdd, 0xf7, 0x34, 0xf7, 0x10, 0xb, 0x77, 0x1, 0x88, 0xf7, 0xb, + 0xf7, 0x62, 0xf7, 0xb, 0x3, 0x23, 0xa, 0xb, 0x35, 0x1a, 0xfb, 0xc, + 0xf7, 0x4, 0x57, 0xf6, 0xf7, 0x65, 0xb4, 0xf7, 0x22, 0xf7, 0x1f, 0xb3, + 0x1e, 0xb, 0x84, 0x61, 0x41, 0x45, 0xfb, 0x83, 0x34, 0x7d, 0x6d, 0x96, + 0xb9, 0x1e, 0xb, 0xf7, 0x64, 0x2d, 0x1d, 0x15, 0xf7, 0xa, 0xd7, 0xf7, + 0x12, 0xf6, 0xd1, 0x5f, 0xc0, 0x42, 0xfb, 0x8, 0x40, 0xfb, 0xc, 0x20, + 0x44, 0xb0, 0x51, 0xd8, 0x1f, 0x8e, 0xa5, 0x15, 0x72, 0x83, 0x9c, 0xa1, + 0xab, 0xa5, 0xe4, 0x95, 0xae, 0x1f, 0xad, 0x95, 0x9b, 0xd6, 0xb8, 0x1b, + 0xa0, 0x97, 0x7b, 0x76, 0x65, 0x70, 0x36, 0x7f, 0x63, 0x1f, 0x68, 0x81, + 0x7f, 0x46, 0x5d, 0x1b, 0xb, 0x15, 0x62, 0xa9, 0x7d, 0x1d, 0x6c, 0x69, + 0x63, 0x1e, 0xe, 0x8f, 0x9d, 0x1f, 0x92, 0xab, 0x15, 0xd4, 0x9b, 0xbe, + 0xf7, 0x22, 0xc9, 0x1b, 0xa8, 0x8b, 0xb, 0x1, 0x80, 0x16, 0xf8, 0x8e, + 0x6, 0xc6, 0xf7, 0x56, 0x70, 0x90, 0x5, 0xfb, 0x18, 0x4d, 0xfb, 0x1c, + 0x6b, 0x24, 0x1b, 0x45, 0x6, 0xf8, 0x46, 0xf8, 0xe7, 0x5, 0xb2, 0xfc, + 0x68, 0x7, 0x52, 0xfb, 0x46, 0xa7, 0x87, 0x5, 0xcd, 0xba, 0xc8, 0xdc, + 0xf7, 0x24, 0x1b, 0xd9, 0x6, 0xfc, 0x46, 0xfc, 0xe7, 0x5, 0xb, 0x48, + 0x1d, 0x9b, 0x21, 0x8a, 0x94, 0x77, 0x1a, 0xb, 0x49, 0xa, 0x13, 0xe8, + 0x62, 0x6e, 0xb, 0x1f, 0xf7, 0x14, 0xf8, 0x5b, 0x9c, 0xca, 0xa6, 0x8f, + 0x56, 0x1d, 0xb, 0x5b, 0xa, 0xe8, 0xe3, 0x2e, 0x3b, 0x1d, 0xb, 0x6b, + 0x1a, 0xfb, 0x19, 0xfc, 0x79, 0x7a, 0x4d, 0x74, 0x88, 0x63, 0x84, 0x19, + 0xb, 0xaf, 0x9f, 0xcc, 0x99, 0xba, 0x1f, 0xd2, 0xf7, 0x80, 0xb, 0x35, + 0x1d, 0x53, 0x4b, 0x4c, 0x70, 0x79, 0x7d, 0xb, 0x41, 0xa, 0xc7, 0x9a, + 0x7e, 0x79, 0x7f, 0x86, 0x7d, 0x47, 0x1d, 0xe, 0x1a, 0x74, 0x8b, 0x54, + 0xd8, 0xd7, 0xb5, 0xc5, 0xf5, 0xd7, 0x1e, 0xb, 0xa7, 0xe3, 0x5, 0xb7, + 0x6, 0x9c, 0xc8, 0x5, 0x5e, 0x6, 0xd9, 0xf7, 0x99, 0x5, 0x5d, 0x6, + 0xfb, 0xaa, 0xfb, 0x93, 0x5, 0xa7, 0x85, 0x15, 0xf7, 0x48, 0xf7, 0x3a, + 0x8d, 0x89, 0x5, 0x8c, 0x6, 0x58, 0xfb, 0x38, 0x5, 0xb, 0x75, 0xa, + 0xde, 0x62, 0x1d, 0x9b, 0x70, 0x1e, 0xb, 0xa0, 0x1e, 0xbd, 0xaf, 0xdc, + 0xc7, 0xbd, 0xaf, 0x8, 0x94, 0x7, 0x55, 0xc2, 0x52, 0xc5, 0x5a, 0xc0, + 0x8, 0xb, 0x67, 0xa8, 0x6e, 0xaf, 0xaf, 0xa8, 0xa8, 0xaf, 0xaf, 0x6e, + 0xa8, 0x67, 0x67, 0x6e, 0x6e, 0x67, 0x1e, 0xb, 0x1f, 0xa7, 0x86, 0xd5, + 0xf7, 0xa5, 0x6f, 0x8f, 0xb, 0xa6, 0xf7, 0x24, 0xf8, 0xc, 0xf7, 0x24, + 0xb, 0xf7, 0x42, 0x5, 0x3a, 0x6, 0xb, 0x1a, 0xd8, 0x57, 0x8d, 0x73, + 0x34, 0x55, 0x38, 0x21, 0x43, 0x1e, 0x88, 0x8d, 0xc7, 0xf7, 0x4e, 0x5, + 0x79, 0x3c, 0x28, 0x82, 0x75, 0x1b, 0x70, 0x7, 0xa6, 0xa6, 0x8b, 0x71, + 0x1f, 0xb, 0x15, 0xb3, 0x6, 0x9e, 0x93, 0x94, 0xa3, 0xac, 0x1b, 0xb, + 0x90, 0x8b, 0xab, 0xf7, 0xc6, 0xab, 0xf7, 0x9f, 0xab, 0xb, 0xc4, 0x1a, + 0xba, 0x65, 0xc0, 0x47, 0x36, 0x60, 0x4d, 0x67, 0x79, 0x1e, 0x9d, 0x80, + 0x5, 0x94, 0x94, 0xa5, 0xb2, 0xba, 0x1b, 0xc6, 0x8b, 0x52, 0x7f, 0x67, + 0x6a, 0xb, 0xac, 0x62, 0x60, 0x6c, 0x69, 0x63, 0x1e, 0xe, 0x1a, 0x53, + 0x28, 0x58, 0x78, 0x81, 0x1e, 0xb, 0xbd, 0x96, 0x57, 0x1d, 0xb, 0x90, + 0x8b, 0xae, 0xf7, 0x41, 0xb3, 0xb, 0x1e, 0x68, 0xf7, 0xc4, 0xae, 0x7, + 0xb, 0x8b, 0xae, 0xf8, 0xeb, 0xae, 0xb, 0xf7, 0x95, 0xfc, 0xb9, 0x5, + 0xa7, 0x6, 0xf7, 0x23, 0xf8, 0x8e, 0xb2, 0xf7, 0x1e, 0x95, 0x83, 0xc0, + 0x98, 0x19, 0xae, 0xfb, 0x65, 0x68, 0x7, 0xb, 0x21, 0xa, 0xe, 0x15, + 0xc4, 0x6, 0xf7, 0x17, 0xb, 0x7e, 0xa3, 0x5, 0x7c, 0x87, 0xfb, 0x44, + 0x38, 0xfb, 0x19, 0x1a, 0x3b, 0xb, 0xf7, 0x3b, 0x1a, 0xf7, 0x48, 0xfb, + 0x6, 0xed, 0xfb, 0x4f, 0x1e, 0xfb, 0xb6, 0x68, 0x6, 0xc9, 0x82, 0x96, + 0x89, 0x6a, 0x1a, 0xb, 0x50, 0x1e, 0xbb, 0x16, 0xab, 0xa5, 0xa5, 0xab, + 0xab, 0xa5, 0x71, 0x6b, 0x6b, 0x71, 0x71, 0x6b, 0x6b, 0x71, 0xa5, 0xab, + 0x1e, 0xb, 0xdc, 0xaf, 0x1a, 0x94, 0x87, 0x8e, 0x86, 0x79, 0x61, 0x61, + 0x7c, 0x6c, 0xa, 0xb, 0x4c, 0x1d, 0x78, 0x1d, 0xae, 0xfb, 0xbe, 0x68, + 0x7, 0xb, 0x76, 0xf7, 0xd0, 0x77, 0x12, 0xb, 0x5c, 0xa, 0xc3, 0x7b, + 0xa6, 0xb4, 0xab, 0xab, 0xb5, 0xb, 0x21, 0x82, 0xd3, 0xf8, 0x16, 0x77, + 0xb, 0xc8, 0xf7, 0x73, 0x5, 0xa7, 0x93, 0xb, 0x6f, 0xa1, 0x75, 0xa7, + 0xa7, 0xa1, 0xa1, 0xa7, 0xa7, 0x75, 0xa1, 0x6f, 0x6f, 0x75, 0x75, 0x6f, + 0x1e, 0xb, 0x66, 0xa8, 0x6e, 0xb0, 0xb0, 0xa9, 0xa8, 0x36, 0x1d, 0x6e, + 0x6d, 0x66, 0x1e, 0xb, 0xfb, 0xa5, 0x58, 0xa, 0xb, 0x9e, 0x9c, 0x9e, + 0xa2, 0xb4, 0x1b, 0xb3, 0x98, 0x6e, 0x74, 0x4c, 0x2f, 0x7a, 0x6e, 0x86, + 0x1f, 0xb, 0xf7, 0x52, 0xf7, 0x95, 0x90, 0x1d, 0xb6, 0x93, 0x57, 0x1d, + 0xb, 0x7c, 0x59, 0xfb, 0x2c, 0x67, 0xfb, 0x6, 0x1f, 0x65, 0x7b, 0x68, + 0x8a, 0x73, 0x1b, 0xe, 0x76, 0x1e, 0x59, 0x67, 0x3a, 0x4f, 0x59, 0x67, + 0x8, 0xb, 0x19, 0x70, 0x7, 0xb, 0xa8, 0xf7, 0x81, 0x5c, 0x1d, 0xb, + 0x5, 0x89, 0x6, 0xb, 0x15, 0x50, 0x49, 0x34, 0x3a, 0x67, 0x1a, 0x82, + 0xb, 0x6f, 0x80, 0x60, 0x62, 0x77, 0x88, 0x1d, 0xb, 0xc7, 0x79, 0xc3, + 0xf8, 0xe8, 0xae, 0xb, 0xf7, 0x7f, 0x77, 0x1, 0xb, 0x12, 0x76, 0xf7, + 0xf, 0xb, 0x9a, 0x8f, 0xf7, 0x44, 0xb, 0x1b, 0xd7, 0xaa, 0xc3, 0xac, + 0xb4, 0x67, 0x98, 0x79, 0x6f, 0x76, 0x70, 0x74, 0xb, 0x91, 0xa0, 0x1f, + 0xfb, 0x80, 0xfb, 0x12, 0x15, 0xf7, 0xb2, 0x6, 0xf7, 0xd2, 0xb, 0x85, + 0x83, 0xa, 0xf7, 0xe8, 0xe3, 0xf0, 0xbd, 0xa4, 0x1b, 0xb, 0xa2, 0xf7, + 0x2d, 0x5, 0x6e, 0x6, 0x7a, 0x81, 0x88, 0x87, 0x7c, 0x1b, 0xb, 0x1a, + 0x67, 0x62, 0x3c, 0x5f, 0x36, 0x1e, 0xb, 0x15, 0xb8, 0x6, 0xb, 0x8b, + 0xf7, 0x19, 0x7c, 0x1e, 0x70, 0x8e, 0x75, 0xfb, 0x3a, 0x5, 0xb, 0x8d, + 0x93, 0x94, 0x8d, 0x99, 0x1b, 0xb9, 0x8b, 0x6b, 0x87, 0x71, 0xb, 0x1f, + 0xc8, 0xf7, 0x7b, 0x5, 0xb, 0x3c, 0x7c, 0x59, 0x83, 0x3b, 0x84, 0x6d, + 0xa, 0xa9, 0xb, 0xf7, 0xad, 0xf7, 0xe3, 0x18, 0x95, 0xfb, 0xcc, 0x7, + 0x60, 0xb, 0xfb, 0x32, 0x15, 0x98, 0x73, 0x5, 0x75, 0xa, 0xb, 0x19, + 0xae, 0xfb, 0xd1, 0x68, 0x7, 0xb, 0x16, 0xf7, 0xd, 0x6, 0xb, 0xfb, + 0xdd, 0xfb, 0x32, 0x76, 0xf9, 0xf4, 0x77, 0x1, 0xb, 0x93, 0x7e, 0x15, + 0x9c, 0x90, 0x9f, 0x8e, 0x8f, 0x1b, 0xb, 0x92, 0x95, 0x75, 0x1f, 0x75, + 0x6a, 0x5, 0x84, 0x9c, 0xb, 0x8b, 0x69, 0x1b, 0x66, 0xf7, 0x8d, 0xb0, + 0x7, 0x68, 0xb, 0x72, 0x58, 0xfb, 0x39, 0x58, 0xfb, 0x53, 0x1e, 0xb, + 0x76, 0x54, 0xa, 0xb, 0xfb, 0xce, 0xfb, 0x3a, 0x76, 0xf9, 0xfd, 0x77, + 0xb, 0x1a, 0x87, 0x8a, 0x86, 0x8a, 0xb, 0x15, 0xf7, 0x74, 0x9e, 0x6, + 0xb, 0xf7, 0x40, 0x5, 0xc6, 0xcd, 0xb, 0xf7, 0x1a, 0xd5, 0xf7, 0x1a, + 0xb, 0x74, 0x88, 0x1d, 0xb, 0x15, 0xcb, 0xbd, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp b/core/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp new file mode 100644 index 0000000000..eec32d71d3 --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp @@ -0,0 +1,1778 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSerifItalicFontData[21227] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x15, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x2d, 0x49, + 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x2a, 0xf8, 0x10, + 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x18, + 0x4, 0x1e, 0xe1, 0x5a, 0x4f, 0xc, 0x2, 0xfb, 0x3c, 0xfb, 0x8e, 0xfa, + 0x71, 0xf9, 0xf8, 0x5, 0xf7, 0x3c, 0xf, 0xf8, 0x93, 0x11, 0xb0, 0x1c, + 0x46, 0xd6, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, 0x45, 0x54, 0x45, + 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, + 0x20, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, + 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, + 0x1, 0x0, 0x1, 0x6, 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, + 0x0, 0x0, 0x42, 0x20, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, + 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, + 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, + 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, + 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, + 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, + 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, + 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, + 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, + 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, + 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, + 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, + 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, + 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, + 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, + 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, + 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, + 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, + 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, + 0x0, 0x0, 0x91, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, + 0x0, 0x0, 0x94, 0x0, 0x0, 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, + 0x1, 0x0, 0xe4, 0x0, 0x0, 0x65, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, + 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, + 0x0, 0x0, 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, + 0x0, 0x0, 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, + 0x0, 0x0, 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, + 0x1, 0x0, 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, + 0x0, 0x0, 0xa6, 0x0, 0x0, 0x6d, 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, + 0x0, 0x3, 0x0, 0x5, 0x0, 0x4a, 0x0, 0x82, 0x0, 0xf8, 0x1, 0x8c, + 0x1, 0xb7, 0x2, 0x73, 0x2, 0xa0, 0x2, 0xd9, 0x3, 0x17, 0x3, 0xed, + 0x4, 0x1a, 0x4, 0x49, 0x4, 0x60, 0x4, 0x6d, 0x4, 0x88, 0x4, 0xcf, + 0x5, 0x1d, 0x5, 0x70, 0x5, 0xe3, 0x6, 0x2a, 0x6, 0x7a, 0x6, 0xd3, + 0x6, 0xff, 0x7, 0x7d, 0x7, 0xe1, 0x7, 0xfe, 0x8, 0x46, 0x8, 0x71, + 0x8, 0x95, 0x8, 0xb5, 0x9, 0x2c, 0x9, 0xe6, 0xa, 0x2e, 0xa, 0xb6, + 0xa, 0xe4, 0xb, 0x2e, 0xb, 0x8c, 0xb, 0xf5, 0xc, 0x6e, 0xc, 0xf7, + 0xd, 0x30, 0xd, 0x87, 0xe, 0xb, 0xe, 0x3a, 0xe, 0xb5, 0xf, 0x1f, + 0xf, 0x62, 0xf, 0xc8, 0x10, 0x4c, 0x10, 0xc6, 0x11, 0x2, 0x11, 0x4d, + 0x11, 0xa6, 0x11, 0xf6, 0x12, 0x75, 0x12, 0xf6, 0x13, 0x4f, 0x13, 0x59, + 0x13, 0x85, 0x13, 0xa3, 0x13, 0xd2, 0x13, 0xf9, 0x14, 0xa, 0x14, 0x26, + 0x14, 0x63, 0x14, 0xd3, 0x15, 0x11, 0x15, 0x9e, 0x15, 0xea, 0x16, 0x6e, + 0x17, 0x1a, 0x17, 0x8e, 0x17, 0xc6, 0x18, 0x33, 0x18, 0xa9, 0x18, 0xe1, + 0x19, 0x85, 0x19, 0xab, 0x19, 0xea, 0x1a, 0x2a, 0x1a, 0x95, 0x1a, 0xf1, + 0x1b, 0x53, 0x1b, 0xb1, 0x1b, 0xef, 0x1c, 0x56, 0x1c, 0xf1, 0x1d, 0x95, + 0x1d, 0xd7, 0x1e, 0x19, 0x1e, 0x75, 0x1e, 0x8b, 0x1e, 0xe9, 0x1f, 0x36, + 0x1f, 0x81, 0x1f, 0xf7, 0x20, 0x99, 0x21, 0xc, 0x21, 0xa1, 0x21, 0xc0, + 0x22, 0x97, 0x22, 0xa5, 0x23, 0x4c, 0x23, 0xc3, 0x24, 0x4, 0x24, 0x25, + 0x25, 0x13, 0x25, 0x2a, 0x25, 0x62, 0x25, 0x9a, 0x25, 0xb6, 0x25, 0xfd, + 0x26, 0x1c, 0x26, 0x98, 0x26, 0xd0, 0x26, 0xdf, 0x27, 0x21, 0x27, 0x73, + 0x27, 0xb1, 0x27, 0xc4, 0x28, 0x1c, 0x28, 0x88, 0x28, 0xd1, 0x29, 0x31, + 0x29, 0x65, 0x29, 0x8c, 0x29, 0xc3, 0x29, 0xfd, 0x2a, 0x29, 0x2a, 0x89, + 0x2b, 0x2f, 0x2b, 0x91, 0x2b, 0xd0, 0x2b, 0xf3, 0x2c, 0x12, 0x2c, 0x33, + 0x2c, 0x40, 0x2c, 0x5e, 0x2c, 0x74, 0x2c, 0x89, 0x2c, 0xec, 0x2d, 0x85, + 0x2d, 0x96, 0x2d, 0xa9, 0x2d, 0xc2, 0x2d, 0xfd, 0x2e, 0x1f, 0x2e, 0x61, + 0x2e, 0xdd, 0x2f, 0x5, 0x2f, 0x1c, 0x2f, 0x2f, 0x2f, 0x5c, 0x2f, 0xc8, + 0x30, 0x43, 0x30, 0xfb, 0x31, 0x9, 0x31, 0x1b, 0x31, 0x35, 0x31, 0x5d, + 0x31, 0x74, 0x31, 0xbd, 0x32, 0x62, 0x32, 0xd5, 0x32, 0xf4, 0x33, 0x2c, + 0x33, 0x50, 0x33, 0x73, 0x33, 0x92, 0x33, 0xaf, 0x33, 0xbe, 0x33, 0xdb, + 0x34, 0x4f, 0x34, 0x8b, 0x34, 0xa6, 0x34, 0xc0, 0x34, 0xda, 0x35, 0x13, + 0x35, 0x33, 0x35, 0x64, 0x35, 0xd5, 0x35, 0xf0, 0x35, 0xfe, 0x36, 0x24, + 0x36, 0x49, 0x36, 0x95, 0x36, 0xe0, 0x37, 0x3e, 0x37, 0x54, 0x37, 0x93, + 0x37, 0xdd, 0x38, 0x99, 0x39, 0x38, 0x39, 0x7d, 0x39, 0xe5, 0x3a, 0x66, + 0x3a, 0x78, 0x3a, 0xc8, 0x3b, 0x4c, 0x3b, 0x67, 0x3b, 0x83, 0x3b, 0xad, + 0x3b, 0xbd, 0x3c, 0xf, 0x3c, 0x41, 0x3c, 0x5e, 0x3c, 0x7e, 0x3c, 0x92, + 0x3c, 0xa8, 0x3c, 0xcd, 0x3c, 0xfd, 0x3d, 0x1e, 0x3d, 0x60, 0x3d, 0x99, + 0x3d, 0xd2, 0x3e, 0x75, 0x3f, 0x4e, 0x3f, 0x7a, 0x3f, 0xb5, 0x3f, 0xed, + 0x40, 0xb, 0x40, 0x27, 0x40, 0x3c, 0x40, 0xba, 0x41, 0x60, 0x41, 0x6d, + 0x42, 0x36, 0x43, 0x7, 0x20, 0xe, 0x20, 0xe, 0x73, 0x8e, 0xf4, 0xf8, + 0xc3, 0x77, 0x12, 0xb2, 0xf4, 0x17, 0xf7, 0xc, 0xf7, 0x49, 0x15, 0x9c, + 0x87, 0xc5, 0xf7, 0x32, 0xbe, 0xf7, 0x8, 0xb7, 0xf7, 0x10, 0x19, 0x92, + 0x9f, 0x90, 0x9b, 0x9a, 0x1a, 0xa6, 0x6e, 0x99, 0x7c, 0x1e, 0x13, 0xa0, + 0x71, 0x77, 0x6d, 0x64, 0x82, 0x1f, 0x6f, 0xfb, 0x10, 0x76, 0xfb, 0x18, + 0x69, 0xfb, 0x35, 0x8, 0x3a, 0xfb, 0x20, 0x15, 0x6e, 0xa2, 0x85, 0xa, + 0x74, 0x73, 0x6e, 0x1e, 0xe, 0xca, 0xf8, 0x4e, 0x76, 0xf7, 0x89, 0x77, + 0x1, 0xf7, 0x24, 0xa0, 0xf7, 0x32, 0xa0, 0x3, 0xf7, 0xd7, 0xf8, 0x39, + 0x15, 0xa0, 0x6, 0xa8, 0xd0, 0xc6, 0xf6, 0xac, 0x1a, 0x9c, 0x7f, 0x9e, + 0x76, 0x77, 0x71, 0xbc, 0xa, 0xfb, 0x47, 0x16, 0xa0, 0x6, 0xa7, 0xcc, + 0xc1, 0xee, 0xbb, 0x1a, 0x9a, 0x81, 0x9d, 0x7a, 0x72, 0x76, 0xbc, 0xa, + 0xe, 0xa0, 0x76, 0xf7, 0x5f, 0xb2, 0x64, 0xc1, 0xf7, 0x2d, 0xc1, 0x63, + 0xb3, 0xf7, 0x68, 0x77, 0x12, 0xe9, 0xf8, 0x64, 0x13, 0xb6, 0x9c, 0x16, + 0xb3, 0x6, 0xd6, 0xf7, 0x5f, 0x5, 0xf7, 0x42, 0x6, 0x40, 0xfb, 0x5f, + 0x5, 0xb2, 0x6, 0xd7, 0xf7, 0x5f, 0x5, 0xf4, 0x6, 0x13, 0xce, 0x96, + 0xb2, 0x5, 0x26, 0x6, 0xce, 0xf7, 0x4a, 0x5, 0xf0, 0x6, 0x96, 0xb3, + 0x5, 0x2b, 0x6, 0xdb, 0xf7, 0x68, 0x5, 0x62, 0x6, 0x3b, 0xfb, 0x68, + 0x5, 0xfb, 0x41, 0x6, 0xda, 0xf7, 0x68, 0x5, 0x66, 0x6, 0x3b, 0xfb, + 0x68, 0x5, 0x22, 0x6, 0x80, 0x63, 0x5, 0xee, 0x6, 0x49, 0xfb, 0x4a, + 0x5, 0x2b, 0x6, 0x80, 0x64, 0x5, 0xe7, 0x6, 0xc1, 0xb2, 0x15, 0xce, + 0xf7, 0x4a, 0x5, 0xf7, 0x42, 0x6, 0x47, 0xfb, 0x4a, 0x5, 0xe, 0x47, + 0x76, 0xf5, 0x76, 0xa4, 0x76, 0xf9, 0x15, 0xa6, 0xb9, 0x77, 0x12, 0xa2, + 0xd9, 0xf7, 0xab, 0xd6, 0x13, 0xde, 0xf7, 0xae, 0xf8, 0x38, 0x15, 0x61, + 0xa9, 0x64, 0xab, 0xc1, 0x1a, 0xd5, 0xc5, 0xaa, 0xd8, 0x1e, 0xfb, 0x7, + 0xfc, 0xfc, 0x15, 0xcf, 0xf7, 0xad, 0x5, 0xc2, 0x5d, 0xaf, 0x6d, 0x48, + 0x1a, 0xfb, 0x14, 0xfb, 0x14, 0x81, 0x6c, 0x1e, 0xfb, 0x52, 0xb5, 0x15, + 0x97, 0x80, 0xbf, 0x65, 0xe1, 0x7b, 0x75, 0x30, 0x18, 0xae, 0x6, 0x13, + 0xbe, 0xa0, 0xe4, 0x5, 0x13, 0x5e, 0xf7, 0x56, 0xb9, 0xf6, 0xe4, 0xdb, + 0x5e, 0xb9, 0x2a, 0xd5, 0x1f, 0xc3, 0xf7, 0x81, 0x5, 0xad, 0x7d, 0xbe, + 0x76, 0x29, 0x1a, 0x9a, 0x89, 0xa7, 0xf7, 0x6, 0x60, 0xaa, 0x50, 0x9b, + 0x78, 0x8f, 0x19, 0x9b, 0xcf, 0x5, 0x69, 0x6, 0x7a, 0x4c, 0x5, 0x13, + 0x44, 0xfb, 0xe, 0x2b, 0x58, 0xfb, 0x0, 0x44, 0xcc, 0x4d, 0xd1, 0x5c, + 0x1f, 0x46, 0xfb, 0xbd, 0x2a, 0xa1, 0x82, 0xcc, 0x82, 0xd5, 0x19, 0x7b, + 0x88, 0x5, 0xe, 0xf8, 0x70, 0xb0, 0xa, 0xd5, 0xd0, 0xa, 0xf7, 0x1e, + 0xd0, 0xa, 0x13, 0xb7, 0x80, 0xf8, 0x97, 0xf7, 0x9, 0x30, 0xa, 0xfc, + 0x8b, 0xf8, 0x11, 0x30, 0xa, 0x13, 0x6f, 0x80, 0x54, 0xfc, 0x33, 0x15, + 0xba, 0x6, 0xf9, 0x48, 0xf9, 0x48, 0x5, 0x5c, 0x6, 0xe, 0xf8, 0x39, + 0x79, 0xbc, 0x5b, 0xbc, 0xf8, 0x1, 0xaa, 0xf7, 0x62, 0xab, 0x12, 0xd7, + 0xe9, 0xf7, 0x2e, 0xdc, 0xf7, 0x4, 0xd0, 0x13, 0x7e, 0xf8, 0x5d, 0xc8, + 0x15, 0x13, 0xbe, 0x6d, 0xa3, 0xb3, 0x5a, 0xd5, 0x1b, 0xbe, 0xb6, 0xa5, + 0xb5, 0xad, 0x1f, 0x80, 0x96, 0x5, 0x7f, 0x7b, 0x76, 0x79, 0x69, 0x1b, + 0x62, 0x60, 0xa6, 0xce, 0x66, 0x1f, 0xc2, 0xd2, 0xa8, 0xbe, 0x9a, 0x9f, + 0x8, 0xb0, 0xa6, 0x9f, 0xa8, 0xbc, 0x1b, 0x9c, 0xfb, 0x4d, 0x78, 0x7, + 0xaa, 0x95, 0x7b, 0x70, 0x61, 0x71, 0x6a, 0x5f, 0x56, 0x1f, 0x60, 0xcd, + 0x6b, 0xf7, 0xb, 0x7f, 0xbf, 0x8, 0xc7, 0xa9, 0xf7, 0x4, 0xc3, 0xe6, + 0x1a, 0xbb, 0x61, 0xb7, 0x50, 0x30, 0x45, 0x3b, 0xfb, 0x11, 0x7e, 0x8c, + 0x82, 0x91, 0x4e, 0x1e, 0xfb, 0x17, 0x52, 0xfb, 0x10, 0x55, 0xfb, 0x15, + 0x1a, 0xfb, 0x1a, 0xf7, 0x14, 0x75, 0xbd, 0xdb, 0xb3, 0xa5, 0xc0, 0xde, + 0x1e, 0x78, 0xa8, 0x15, 0x61, 0x5d, 0x52, 0x7d, 0x68, 0x1b, 0x48, 0x4c, + 0xba, 0xe1, 0xf7, 0x9, 0xf7, 0x36, 0xc8, 0x8c, 0x1f, 0x9f, 0x45, 0xb2, + 0xfb, 0x13, 0xb9, 0x51, 0x8, 0x6f, 0xf7, 0xe6, 0x15, 0x88, 0xa5, 0x89, + 0x9c, 0xaf, 0x1a, 0xc2, 0x94, 0xd3, 0xc4, 0x9b, 0xa9, 0x8b, 0x53, 0x38, + 0x5c, 0x6e, 0x4f, 0x65, 0x1e, 0xe, 0xfb, 0x23, 0xf8, 0x4e, 0x76, 0xf7, + 0x89, 0x77, 0x1, 0xf7, 0x18, 0xa0, 0x3, 0xf7, 0x18, 0xf8, 0x39, 0x15, + 0xa0, 0x6, 0xb4, 0xe3, 0xba, 0xe5, 0xa8, 0x1a, 0x9c, 0x80, 0xa0, 0x75, + 0x77, 0x71, 0x7e, 0x72, 0x84, 0x1e, 0x82, 0x6b, 0x82, 0xfb, 0xc, 0x86, + 0x54, 0x8, 0xe, 0x73, 0xfb, 0x34, 0x76, 0xf9, 0xe6, 0x77, 0x1, 0xb5, + 0xd2, 0x3, 0xf7, 0x21, 0xfb, 0x49, 0x15, 0x9d, 0x91, 0x5, 0x4c, 0xf7, + 0x9, 0x9c, 0xf7, 0x53, 0xc4, 0x1a, 0xf7, 0x21, 0xeb, 0xf7, 0x7c, 0xf5, + 0xe6, 0x1e, 0x7e, 0x9a, 0x5, 0xfb, 0x4a, 0xfb, 0x2f, 0x3d, 0xfb, 0x30, + 0xfb, 0x39, 0x1a, 0x4b, 0x90, 0xfb, 0x2a, 0xe9, 0xfb, 0x34, 0x1e, 0xe, + 0x73, 0xfb, 0x36, 0x76, 0xf9, 0xe8, 0x77, 0x12, 0xf7, 0x6d, 0xd3, 0x17, + 0x9b, 0xfb, 0x39, 0x15, 0x98, 0x7c, 0x5, 0x13, 0x60, 0xf7, 0x28, 0xf7, + 0xb, 0xf7, 0x4, 0xf7, 0x3a, 0xf7, 0x51, 0x1a, 0xf7, 0x16, 0x70, 0xf7, + 0x14, 0x43, 0xf7, 0x9, 0x1e, 0x78, 0x86, 0xbd, 0x2b, 0x98, 0xfb, 0x1b, + 0x7a, 0xfb, 0x1f, 0x19, 0x75, 0xfb, 0x47, 0x43, 0xfb, 0x4a, 0x20, 0x29, + 0x8, 0xe, 0xf7, 0x37, 0xf7, 0x9, 0x66, 0x76, 0xf8, 0x10, 0x76, 0xe0, + 0x77, 0xa6, 0x77, 0x12, 0xf7, 0xc1, 0x9d, 0x13, 0xac, 0xf7, 0xc0, 0xf8, + 0x52, 0x15, 0x8c, 0x73, 0x8c, 0x71, 0x84, 0x73, 0x8, 0x82, 0x6c, 0x7e, + 0x6f, 0x7c, 0x1a, 0x13, 0x6c, 0x72, 0x9d, 0x79, 0x9d, 0x9d, 0x9e, 0x9c, + 0xa6, 0x8c, 0x1e, 0x8c, 0xa1, 0x7e, 0x99, 0x82, 0xb0, 0x8, 0x87, 0x9d, + 0x88, 0xa2, 0xac, 0x1a, 0xa2, 0x7e, 0x9c, 0x7e, 0x99, 0x7f, 0x8, 0x65, + 0xb6, 0x92, 0x6c, 0xab, 0x1b, 0x9d, 0x9e, 0x9a, 0xa3, 0xb1, 0x62, 0x87, + 0x4c, 0x9e, 0x1f, 0x79, 0x90, 0x76, 0x97, 0x76, 0x96, 0xa3, 0x9d, 0xa3, + 0x94, 0xa0, 0x91, 0x8, 0xc3, 0x9c, 0xb2, 0x82, 0xbb, 0x1a, 0x9e, 0x7a, + 0x9a, 0x78, 0x6f, 0x7b, 0x6f, 0x6f, 0x70, 0x1e, 0x70, 0x70, 0x66, 0x71, + 0x89, 0x1b, 0xb0, 0x8e, 0xa9, 0x90, 0x98, 0x1e, 0x95, 0xa7, 0x94, 0xa1, + 0xa0, 0x1a, 0x13, 0xb4, 0xa7, 0x7a, 0x99, 0x7a, 0x79, 0x78, 0x7b, 0x70, + 0x76, 0x95, 0x7a, 0x93, 0x6a, 0x1e, 0x8f, 0x78, 0x8f, 0x73, 0x6a, 0x1a, + 0x6f, 0x9b, 0x78, 0x9a, 0x7c, 0x99, 0x8, 0xae, 0x66, 0x83, 0xa4, 0x6b, + 0x1b, 0x74, 0x80, 0x77, 0x7d, 0x5e, 0xb3, 0x90, 0xc2, 0x7c, 0x1f, 0x9d, + 0x86, 0x9f, 0x84, 0xac, 0x78, 0x70, 0x79, 0x71, 0x81, 0x74, 0x85, 0x8, + 0x56, 0x7d, 0x66, 0x8f, 0x5f, 0x1a, 0x81, 0x96, 0x74, 0xa3, 0xa8, 0x9c, + 0xa7, 0xa8, 0xa5, 0x1e, 0xa4, 0xa6, 0xa7, 0x97, 0x97, 0x95, 0x8, 0xe, + 0xf7, 0xd2, 0xa0, 0x76, 0xf7, 0x86, 0xb4, 0xf7, 0x73, 0x77, 0x12, 0xf7, + 0xc5, 0xcd, 0x53, 0xb5, 0x13, 0xf0, 0xe1, 0xf7, 0x86, 0x15, 0x13, 0xe8, + 0xf7, 0x79, 0xfb, 0x86, 0xb5, 0xf7, 0x86, 0xf7, 0x7d, 0xb4, 0xfb, 0x7d, + 0xf7, 0x73, 0x61, 0xfb, 0x73, 0xfb, 0x79, 0x6, 0xe, 0x20, 0xfb, 0x0, + 0x76, 0xf7, 0x7a, 0x77, 0x12, 0xa2, 0xc0, 0xa, 0x13, 0xe0, 0x87, 0xfb, + 0x4, 0x15, 0x94, 0x7a, 0x5, 0xc8, 0xa, 0x83, 0x5e, 0x7f, 0x61, 0x75, + 0x97, 0x81, 0x97, 0x83, 0x1e, 0x13, 0xd0, 0x97, 0x83, 0x97, 0x84, 0x7a, + 0x1a, 0x66, 0x54, 0x66, 0x77, 0x7e, 0x1e, 0xe, 0x73, 0xf7, 0x54, 0xca, + 0x1, 0xbc, 0xf7, 0x7d, 0x3, 0xbc, 0xf7, 0x54, 0x15, 0xf7, 0x6e, 0x6, + 0x9a, 0xca, 0x5, 0xfb, 0x6d, 0x6, 0xe, 0x20, 0x80, 0xf7, 0x3, 0x1, + 0xa6, 0xf7, 0x3, 0x3, 0xa6, 0xb7, 0x84, 0xa, 0x3c, 0x8e, 0x76, 0xf9, + 0x40, 0x77, 0x1, 0x77, 0xf8, 0xb, 0x3, 0x77, 0x79, 0x15, 0xf8, 0x2a, + 0xf9, 0x40, 0x5, 0x5f, 0x6, 0xfc, 0x2b, 0xfd, 0x40, 0x5, 0xe, 0x84, + 0xa7, 0xf9, 0x7, 0xa7, 0x1, 0xab, 0xda, 0xf7, 0xc7, 0xda, 0x3, 0xf7, + 0x3, 0xf7, 0x30, 0x15, 0xec, 0xd3, 0xf8, 0x1f, 0xf7, 0x29, 0xe1, 0x8b, + 0x25, 0x6d, 0xfb, 0x43, 0x35, 0xfb, 0xd4, 0xfb, 0x1a, 0x6b, 0x54, 0x9e, + 0xf7, 0x8, 0x1e, 0x3c, 0xbb, 0x15, 0x23, 0xc4, 0x20, 0xf3, 0xf7, 0x3c, + 0xf7, 0x1c, 0xf7, 0x7c, 0xf7, 0x5a, 0xed, 0x70, 0xf7, 0x2f, 0xfb, 0x19, + 0xfb, 0x1f, 0xfb, 0x3a, 0xfb, 0x5e, 0xfb, 0xa2, 0x1e, 0xe, 0xa0, 0x76, + 0xf9, 0x38, 0x77, 0x1, 0xbc, 0xf7, 0xf8, 0x3, 0xbc, 0x16, 0xf7, 0xab, + 0x9a, 0x6, 0x5e, 0x6c, 0x96, 0xaf, 0x8f, 0x8b, 0x8f, 0x8c, 0x90, 0x1f, + 0xf7, 0x2a, 0xf8, 0xc9, 0x5, 0x8e, 0x95, 0x8e, 0x98, 0x92, 0x1a, 0x8f, + 0x8a, 0x8d, 0x88, 0x83, 0xfb, 0x1f, 0x6d, 0x83, 0x5c, 0x1e, 0x7c, 0x7, + 0x8c, 0xa1, 0x9e, 0x8c, 0x99, 0x1b, 0xa7, 0x97, 0x80, 0x76, 0x83, 0x87, + 0x7d, 0x88, 0x80, 0x1f, 0xfb, 0x1a, 0xfc, 0x76, 0x5, 0x5e, 0x7e, 0x52, + 0x79, 0x5d, 0x1b, 0xe, 0x8b, 0xd7, 0xf8, 0xa3, 0xd4, 0x1, 0xf8, 0x2, + 0xe1, 0x3, 0x97, 0x16, 0xf7, 0xf7, 0x6, 0xbd, 0xf7, 0x18, 0x7a, 0x92, + 0x5, 0x67, 0x7a, 0x71, 0x70, 0x49, 0x1b, 0xfb, 0x48, 0x90, 0x6, 0xf7, + 0x54, 0xf7, 0x54, 0x5, 0xf7, 0x10, 0xf7, 0x10, 0xa4, 0xb8, 0xce, 0x1a, + 0xd6, 0x53, 0xe7, 0x21, 0x72, 0xfb, 0x17, 0x87, 0xfb, 0x30, 0x55, 0x1e, + 0xa0, 0x84, 0x5, 0xa4, 0x99, 0xb1, 0xd0, 0xe5, 0x1b, 0xd8, 0xb9, 0x4f, + 0x4d, 0x6a, 0x87, 0x51, 0xfb, 0x20, 0xfb, 0x29, 0x1f, 0xfb, 0x66, 0xfb, + 0x6d, 0x5, 0xe, 0x84, 0xb1, 0x65, 0xf7, 0x0, 0xf7, 0x98, 0x9b, 0xf7, + 0x95, 0xb5, 0x12, 0xf7, 0xee, 0xdb, 0x5b, 0xe2, 0x13, 0x98, 0xf7, 0x20, + 0xf7, 0xfd, 0x15, 0xec, 0x92, 0xe3, 0x66, 0xfb, 0x20, 0x1a, 0xfb, 0x12, + 0x2d, 0x69, 0x69, 0x6f, 0x76, 0x9c, 0x9c, 0x76, 0x1e, 0x13, 0x74, 0x9d, + 0x76, 0x76, 0x9d, 0x74, 0x1b, 0x66, 0x81, 0x6f, 0x76, 0x5e, 0xc2, 0x7d, + 0xc6, 0x1f, 0x13, 0x34, 0xf7, 0x4d, 0xe6, 0xf7, 0x22, 0xf7, 0x3, 0xf7, + 0x2, 0x46, 0xa9, 0x71, 0x97, 0x1f, 0x8e, 0x7, 0xf4, 0xb2, 0xbd, 0xae, + 0xd7, 0x1a, 0xde, 0x43, 0xb5, 0x41, 0x52, 0x40, 0x5f, 0x4f, 0x72, 0x1e, + 0x9b, 0x86, 0x5, 0x9f, 0x9a, 0xae, 0xba, 0xca, 0x1b, 0xb1, 0xbc, 0x73, + 0x48, 0xfb, 0x0, 0xfb, 0x1f, 0x5f, 0x27, 0x7d, 0x1f, 0xe, 0xa0, 0x76, + 0xf7, 0x3c, 0xca, 0xf8, 0x51, 0x77, 0x12, 0x8c, 0xf8, 0x72, 0x17, 0xcc, + 0xf7, 0x7b, 0x15, 0x8f, 0x7, 0xf7, 0xc4, 0xf7, 0xdc, 0x5, 0x8f, 0x6, + 0x13, 0xf0, 0x28, 0xfb, 0xe0, 0x5, 0xfb, 0xa5, 0x4c, 0x15, 0xf7, 0x97, + 0x6, 0x5d, 0xfb, 0x3c, 0x5, 0xda, 0x6, 0xb6, 0xf7, 0x3a, 0x5, 0xef, + 0x6, 0x99, 0xcc, 0x5, 0x2c, 0x6, 0x13, 0x30, 0xf7, 0x10, 0xf8, 0x51, + 0x5, 0x62, 0x6, 0xfc, 0x35, 0xfc, 0x4d, 0x5, 0xe, 0x84, 0xb5, 0xf8, + 0xc4, 0xd2, 0x1, 0xf7, 0xf2, 0xd0, 0x3, 0xf7, 0x17, 0xf8, 0x3b, 0x15, + 0xf7, 0x8, 0x72, 0xf2, 0x7f, 0xfb, 0x2d, 0x1a, 0x34, 0x42, 0xfb, 0x3, + 0x29, 0x6f, 0x77, 0x9a, 0x99, 0x78, 0x1e, 0x98, 0x79, 0x7a, 0x98, 0x75, + 0x1b, 0x78, 0x76, 0x7f, 0x6e, 0x6f, 0xa9, 0x6f, 0xd3, 0xf7, 0x57, 0xf6, + 0xf7, 0x2e, 0xf7, 0x14, 0xf7, 0x1a, 0x31, 0xc9, 0xfb, 0x16, 0xa5, 0x1f, + 0xb2, 0xed, 0x5, 0xf7, 0x7a, 0x6, 0xa2, 0xd2, 0x5, 0xfb, 0x94, 0x6, + 0x23, 0xfb, 0x78, 0x5, 0xe, 0x84, 0xa5, 0xf8, 0x11, 0xaf, 0xf7, 0x8e, + 0x77, 0x1, 0xac, 0xd7, 0xf7, 0x9b, 0xe4, 0x3, 0xf7, 0x5b, 0xf8, 0x4a, + 0x15, 0xbd, 0xa3, 0xf7, 0xe, 0xf7, 0x4a, 0xf7, 0x44, 0x1b, 0x8a, 0x9b, + 0x5, 0xfb, 0xc5, 0xfb, 0x4d, 0xfb, 0xa2, 0xfb, 0x62, 0xfb, 0x38, 0xee, + 0x56, 0xdc, 0xf7, 0x3e, 0xdc, 0xf7, 0x3d, 0xf0, 0xf7, 0x22, 0x26, 0xbf, + 0x47, 0x6c, 0x6d, 0x83, 0x7e, 0x6f, 0x1f, 0x2a, 0xfb, 0xab, 0x15, 0x9b, + 0x95, 0xf7, 0x8c, 0xf7, 0x1e, 0xd7, 0xb5, 0x51, 0x39, 0x31, 0x55, 0xfb, + 0x40, 0xfb, 0x6, 0x29, 0x8b, 0xf7, 0x4, 0xa5, 0x1e, 0xe, 0x98, 0x76, + 0xf8, 0xed, 0xd4, 0x1, 0xd6, 0xf8, 0x5c, 0x3, 0xda, 0x83, 0x15, 0xd1, + 0x6, 0xf8, 0x18, 0xf9, 0x2c, 0x85, 0x95, 0x5, 0xfc, 0xb, 0x6, 0x3a, + 0xfb, 0x1c, 0x99, 0x82, 0x5, 0xb3, 0xad, 0xb0, 0xab, 0xd3, 0x1b, 0xf7, + 0x68, 0x6, 0x8d, 0x88, 0x5, 0xe, 0x84, 0xa1, 0xf9, 0x12, 0xa2, 0x12, + 0xa9, 0xcf, 0xb3, 0xd9, 0xf7, 0x2d, 0xd6, 0x78, 0xcf, 0x13, 0xf8, 0xf7, + 0x75, 0xf7, 0xfc, 0x15, 0x73, 0x84, 0xfb, 0x3f, 0x58, 0xfb, 0x25, 0x1a, + 0x6d, 0xa0, 0xfb, 0x1a, 0xf7, 0x47, 0xf7, 0x1a, 0xdb, 0xe1, 0xe1, 0xd9, + 0x63, 0xcb, 0x40, 0xd6, 0x1e, 0x13, 0xf4, 0xc2, 0x9d, 0xf7, 0x1, 0xb1, + 0xec, 0x1a, 0xf7, 0x2, 0xfb, 0x0, 0xaa, 0x49, 0x2d, 0x34, 0x5a, 0x24, + 0x57, 0xa5, 0x5c, 0xc8, 0x4a, 0x1e, 0xa1, 0x7b, 0x15, 0x13, 0xf8, 0xec, + 0x27, 0xa4, 0x6e, 0x4a, 0x1a, 0x2b, 0x3d, 0x64, 0x55, 0x35, 0x56, 0xc7, + 0xda, 0xf7, 0x13, 0xf7, 0xf, 0xc2, 0xa5, 0x93, 0x1e, 0xcb, 0xc2, 0x15, + 0x2c, 0xe1, 0x8b, 0xaa, 0xa5, 0x1a, 0xce, 0xb1, 0xb7, 0xcb, 0x1e, 0x13, + 0xf4, 0xdc, 0xa5, 0x48, 0x5b, 0x38, 0x50, 0x6d, 0x54, 0x71, 0x1f, 0xe, + 0x8f, 0x76, 0xf7, 0x93, 0xb9, 0xf8, 0x2, 0xa5, 0x1, 0xd0, 0xe3, 0xf7, + 0x98, 0xd6, 0x3, 0xa2, 0x8c, 0x15, 0x79, 0x7, 0xf7, 0x2e, 0xf7, 0xcf, + 0xf7, 0x42, 0xf7, 0xbd, 0xf7, 0x28, 0x3b, 0xd5, 0x24, 0xfb, 0x9, 0xfb, + 0xf, 0xfb, 0x10, 0xfb, 0x1d, 0xfb, 0xb, 0xcd, 0x3e, 0xe0, 0xb7, 0xb7, + 0x9e, 0xa5, 0xb3, 0x1f, 0x8f, 0x89, 0x5, 0x51, 0x80, 0xfb, 0x54, 0xfb, + 0x5f, 0xfb, 0x12, 0x1b, 0xf7, 0x1a, 0xf8, 0x2f, 0x15, 0xe8, 0xbb, 0xf7, + 0x25, 0xf7, 0x5, 0xee, 0x8b, 0xfb, 0x0, 0x64, 0x70, 0x7b, 0xfb, 0x4, + 0x72, 0x64, 0x1e, 0x60, 0x6f, 0x53, 0x7a, 0x6c, 0x1b, 0x27, 0x87, 0xf7, + 0x7, 0xab, 0x1f, 0xe, 0x73, 0x80, 0xf7, 0x2, 0xf7, 0x7c, 0xf7, 0x2, + 0x12, 0xbd, 0xf7, 0x2, 0x82, 0xf7, 0x2, 0x13, 0xe0, 0xbd, 0xb7, 0x8a, + 0xa, 0x13, 0xd0, 0xf0, 0xf7, 0xea, 0x8a, 0xa, 0xe, 0x73, 0xf7, 0xdd, + 0xf7, 0x4, 0x12, 0xf7, 0x29, 0xf7, 0x4, 0xfb, 0x3, 0xf7, 0x3, 0x13, + 0xa0, 0xa6, 0xfb, 0x4, 0x15, 0x94, 0x7a, 0x5, 0x13, 0xc0, 0xc8, 0xa, + 0x76, 0x6c, 0x7c, 0x61, 0x73, 0x99, 0x83, 0x98, 0x83, 0x1e, 0x95, 0x84, + 0x95, 0x84, 0x7c, 0x1a, 0x66, 0x54, 0x66, 0x77, 0x7e, 0x1e, 0xf7, 0xe, + 0xf8, 0x85, 0x15, 0x6c, 0xa4, 0x72, 0xaa, 0xaa, 0xa4, 0xa4, 0xaa, 0xaa, + 0x72, 0xa4, 0x6c, 0x6c, 0x72, 0x72, 0x6c, 0x1e, 0xe, 0xf7, 0xd2, 0x98, + 0x76, 0xb9, 0x76, 0xf8, 0x85, 0x77, 0x1, 0xf7, 0x33, 0xf8, 0x59, 0x3, + 0xdf, 0xf7, 0x88, 0x15, 0xf8, 0x90, 0xfb, 0x90, 0x5, 0xb5, 0x7, 0xfc, + 0x4e, 0xf7, 0x6f, 0xf8, 0x4e, 0xf7, 0x6f, 0x5, 0xb5, 0x7, 0xfc, 0x90, + 0xfb, 0x90, 0x5, 0xe, 0xf7, 0xd2, 0xf7, 0xc, 0xce, 0xf7, 0x18, 0xce, + 0x63, 0xb3, 0x12, 0x13, 0xa0, 0xe1, 0xf7, 0xee, 0x15, 0xf8, 0x8c, 0xb3, + 0xfc, 0x8c, 0x6, 0xfb, 0x9e, 0x4, 0xf8, 0x8c, 0x6, 0x13, 0xc0, 0xb0, + 0xfc, 0x8c, 0x7, 0xe, 0xf7, 0xd2, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, + 0xdf, 0x83, 0x15, 0xb5, 0x7, 0xf8, 0x4e, 0xf7, 0x6f, 0xfc, 0x4e, 0xf7, + 0x6f, 0x5, 0xb5, 0x7, 0xf8, 0x90, 0xfb, 0x90, 0x5, 0x79, 0x7, 0xe, + 0x7f, 0xf3, 0xf8, 0xba, 0xa1, 0x12, 0xf7, 0x18, 0xf3, 0x57, 0xcb, 0xf7, + 0x2a, 0xd5, 0x13, 0xd8, 0xf7, 0x5b, 0xf7, 0x44, 0x15, 0x9c, 0x89, 0x5, + 0xd3, 0xdb, 0xd6, 0xb5, 0xac, 0x1e, 0xbf, 0xb4, 0xdd, 0xc1, 0xe3, 0x1a, + 0xd5, 0x54, 0xc0, 0x2b, 0x44, 0x49, 0x64, 0x44, 0x6e, 0xa1, 0x77, 0xa3, + 0x95, 0xac, 0x94, 0xa9, 0x96, 0x85, 0x92, 0x85, 0x92, 0x1e, 0x85, 0x92, + 0x84, 0x92, 0x97, 0x1a, 0xba, 0xcc, 0x8b, 0x90, 0xd4, 0x92, 0x50, 0x72, + 0x44, 0x62, 0x5e, 0x5b, 0x58, 0x1e, 0x57, 0x55, 0x51, 0x34, 0x41, 0x1a, + 0x13, 0xe8, 0x48, 0xfb, 0x1c, 0x15, 0x13, 0xd8, 0x6e, 0xa2, 0x74, 0xa8, + 0x1e, 0x13, 0xe8, 0xa8, 0xa2, 0xa2, 0xa8, 0x1f, 0x13, 0xd8, 0xa8, 0x74, + 0xa2, 0x6e, 0x1e, 0x13, 0xe8, 0x6e, 0x74, 0x74, 0x6e, 0x1f, 0xe, 0xf8, + 0xc7, 0x79, 0xb2, 0xed, 0xac, 0x7d, 0xb6, 0xf7, 0xb3, 0xb7, 0xf7, 0xf, + 0xaa, 0x12, 0xf7, 0xa, 0xde, 0xf7, 0xc, 0xd2, 0xf8, 0xa, 0xb3, 0x13, + 0xbf, 0xf8, 0x1c, 0xf7, 0x9c, 0x15, 0xf7, 0xc, 0xe3, 0xd3, 0xbb, 0x1e, + 0x13, 0xaf, 0xa8, 0x98, 0x75, 0x61, 0x1f, 0x2a, 0x8c, 0x40, 0xfb, 0x6, + 0x61, 0x1b, 0x68, 0x70, 0xa3, 0xc6, 0x1f, 0xf7, 0x21, 0x53, 0x15, 0x7f, + 0x8a, 0xa2, 0x51, 0xcd, 0x1b, 0xf7, 0xa, 0xce, 0xf7, 0x1b, 0xf0, 0xf7, + 0x3b, 0xfb, 0x23, 0xf7, 0x11, 0xfb, 0x4b, 0xfb, 0x58, 0xfb, 0x3a, 0xfb, + 0x24, 0xfb, 0x69, 0xfb, 0x19, 0xf7, 0x5, 0xfb, 0x56, 0xf7, 0x97, 0xd8, + 0xd9, 0xab, 0xa9, 0xca, 0x1f, 0x7f, 0xa8, 0x5, 0x71, 0x52, 0x4d, 0x71, + 0x33, 0x1b, 0xfb, 0x41, 0xfb, 0x7, 0xf7, 0x1c, 0xf7, 0x21, 0xf7, 0x71, + 0xf7, 0x13, 0xf7, 0x8, 0xf7, 0x2c, 0xf7, 0x4a, 0xf3, 0xfb, 0x29, 0xfb, + 0x5, 0x1f, 0x13, 0xdf, 0x35, 0x5b, 0xfb, 0x8, 0x39, 0x5f, 0x90, 0xbb, + 0x9a, 0x8f, 0x1e, 0xcc, 0xf7, 0x9a, 0x5, 0x46, 0x6, 0x81, 0x5c, 0x5, + 0xa2, 0x7e, 0x80, 0xa7, 0x5c, 0x1b, 0xfb, 0x19, 0x4d, 0xfb, 0x3c, 0x45, + 0x1f, 0x13, 0x0, 0xfb, 0x5, 0xcf, 0x81, 0xa6, 0x1e, 0xc5, 0x8a, 0xb8, + 0xc0, 0x97, 0x9c, 0x8, 0xe, 0x5a, 0xa, 0x1, 0x58, 0xf7, 0x4f, 0xf7, + 0x98, 0xf7, 0x3c, 0x3, 0x58, 0x16, 0x9b, 0xa, 0x5d, 0x7e, 0x9e, 0xa5, + 0xa8, 0x91, 0x91, 0xd2, 0xf7, 0x16, 0x1f, 0xf7, 0x70, 0x6, 0xa1, 0xfb, + 0x12, 0x8b, 0x74, 0x8a, 0x1a, 0x63, 0x71, 0x77, 0x57, 0x1e, 0x7b, 0xf7, + 0x8a, 0x9b, 0x7, 0x51, 0x87, 0xa6, 0xc8, 0x80, 0x1f, 0x2a, 0xf8, 0xc8, + 0x5, 0x71, 0x6, 0xfb, 0xd9, 0xfc, 0xb7, 0x5, 0x59, 0x6e, 0x70, 0x54, + 0x65, 0x1b, 0x45, 0xa, 0xe, 0xf7, 0x92, 0x86, 0xa9, 0x72, 0xa9, 0xf7, + 0xc1, 0xab, 0xf7, 0x98, 0xa9, 0x12, 0xf7, 0x51, 0xf0, 0xf7, 0x21, 0xf7, + 0x0, 0x57, 0xf0, 0x13, 0x7c, 0x83, 0x16, 0xf7, 0xae, 0x6, 0xf7, 0x14, + 0xf7, 0x1d, 0xc9, 0xf7, 0x1d, 0xed, 0x45, 0xa9, 0x56, 0xa2, 0x1f, 0x8d, + 0x7, 0x13, 0xba, 0xe9, 0x9e, 0xd9, 0xb6, 0xe5, 0x1a, 0xf7, 0x7, 0x2b, + 0xad, 0x23, 0x1e, 0xfb, 0x96, 0x7b, 0x6, 0xdf, 0x81, 0x51, 0x52, 0x7c, + 0x1f, 0xfb, 0x5, 0xfc, 0x47, 0x7f, 0x5d, 0x67, 0x73, 0x67, 0x8a, 0x19, + 0x13, 0x7c, 0xf7, 0x4a, 0xd0, 0x15, 0x9e, 0xbc, 0xf7, 0x37, 0x9a, 0xcb, + 0x1e, 0xf7, 0x3a, 0xa6, 0x5e, 0x3d, 0x28, 0x52, 0x3c, 0xfb, 0x21, 0x6e, + 0x6d, 0x9c, 0xb1, 0x1f, 0xd5, 0xf7, 0xaa, 0x15, 0xb5, 0xf7, 0x33, 0x5, + 0xeb, 0xa2, 0x83, 0x90, 0xd1, 0x1b, 0x13, 0xba, 0xd6, 0xb0, 0x67, 0x47, + 0xfb, 0x20, 0xfb, 0xd, 0x7b, 0xfb, 0xa, 0x1f, 0xe, 0xf7, 0xca, 0x79, + 0xb8, 0xd4, 0xa, 0x13, 0xb0, 0xf9, 0x20, 0xf8, 0x65, 0x15, 0xb8, 0xa, + 0x7e, 0x74, 0x93, 0x92, 0x6d, 0x1f, 0x13, 0xd0, 0x90, 0x75, 0x70, 0x8f, + 0x6c, 0xd5, 0xa, 0xfb, 0x5c, 0xf7, 0x26, 0x45, 0xf7, 0x8, 0xf7, 0x26, + 0xe4, 0xf4, 0xb7, 0xb0, 0x6f, 0xa, 0xe, 0xf8, 0x1, 0x8b, 0xa9, 0xf8, + 0xe5, 0xa9, 0x12, 0xf8, 0xe1, 0xf7, 0x3, 0x17, 0xb1, 0xa, 0x1f, 0x13, + 0xe0, 0xf4, 0x4d, 0xf7, 0x35, 0xfb, 0x7a, 0x1e, 0xfb, 0xaa, 0x7b, 0x6, + 0xe3, 0x7e, 0x45, 0x59, 0x7d, 0x1f, 0xfb, 0x7, 0xfc, 0x35, 0x5, 0x4d, + 0x7a, 0x70, 0x75, 0x63, 0x1b, 0xf7, 0x5f, 0xf7, 0x30, 0x15, 0xf7, 0x4, + 0xf8, 0x30, 0x5, 0x99, 0x8f, 0x95, 0xa4, 0xc4, 0xb2, 0xa, 0x59, 0x79, + 0x9d, 0xa5, 0xa6, 0x97, 0xaf, 0x95, 0xae, 0x1f, 0xe, 0xf7, 0x92, 0x8b, + 0xac, 0xf7, 0xb9, 0xac, 0x6c, 0xe9, 0xa, 0x12, 0x8a, 0xf9, 0xf, 0x13, + 0xd8, 0x8b, 0xa, 0x74, 0x62, 0x92, 0xb4, 0x90, 0x8b, 0x96, 0x8d, 0x92, + 0x1f, 0x13, 0xb8, 0x8e, 0x96, 0x85, 0x79, 0xcb, 0xf7, 0x7b, 0x8, 0xf7, + 0x37, 0x8b, 0x7d, 0x63, 0x40, 0xa, 0x85, 0x80, 0xfb, 0x35, 0x1b, 0xb7, + 0xf7, 0x37, 0x5, 0xce, 0x9d, 0x81, 0xa8, 0xe9, 0x1b, 0xf7, 0x3e, 0x9a, + 0x6f, 0x67, 0x7c, 0x8b, 0x79, 0x89, 0x76, 0x63, 0xa, 0xc2, 0x9c, 0x70, + 0x75, 0x77, 0x87, 0x74, 0x84, 0x74, 0x1f, 0xfb, 0x7, 0xfc, 0x3a, 0x5, + 0x47, 0x79, 0x64, 0x7b, 0x70, 0x1b, 0xe, 0x7d, 0xa, 0xf7, 0xdc, 0xe9, + 0xa, 0x1, 0xf7, 0x64, 0xee, 0x3, 0x93, 0x16, 0xf7, 0x90, 0x9b, 0x6, + 0x49, 0x8a, 0x80, 0xb6, 0x9a, 0xc4, 0xc4, 0xf7, 0x69, 0x18, 0xe3, 0xd1, + 0x95, 0x4f, 0x76, 0x86, 0x74, 0x88, 0x7d, 0x1f, 0x9c, 0x86, 0xd7, 0xf7, + 0x7e, 0x79, 0x90, 0x5, 0x2c, 0x5d, 0x7a, 0x8d, 0xfb, 0x2d, 0x1b, 0xb6, + 0xf7, 0x35, 0x5, 0xe4, 0xa3, 0x8b, 0x94, 0xdb, 0x1b, 0xf7, 0x28, 0xaf, + 0x7e, 0x4c, 0x7d, 0x89, 0x7d, 0x8a, 0x7d, 0x1f, 0xa0, 0x89, 0xab, 0xf7, + 0x2d, 0x5, 0xfc, 0x86, 0x7b, 0x6, 0xc2, 0x9b, 0x75, 0x6d, 0x78, 0x87, + 0x74, 0x85, 0x76, 0x1f, 0xfb, 0x1, 0xfc, 0x2a, 0x75, 0x3a, 0x87, 0x84, + 0x4a, 0x7f, 0x19, 0xe, 0xb6, 0xa, 0xb0, 0xf8, 0xf9, 0xad, 0x1, 0xbf, + 0xf7, 0x2, 0x3, 0xf8, 0x5c, 0xf7, 0xc3, 0x15, 0xb9, 0xa0, 0x71, 0x69, + 0x85, 0x8b, 0x84, 0x8a, 0x84, 0x1f, 0x88, 0x7b, 0x76, 0xfb, 0x17, 0x6e, + 0x74, 0x8, 0x74, 0x6e, 0x72, 0x80, 0x58, 0x1b, 0xfb, 0x3e, 0x6b, 0xf7, + 0x10, 0xd9, 0xf7, 0x38, 0xed, 0xf7, 0x8b, 0xf7, 0x5d, 0xd2, 0xf7, 0x1, + 0x6a, 0xfb, 0x17, 0x1f, 0x9d, 0x88, 0xbc, 0xf7, 0x59, 0x7c, 0x8f, 0x5, + 0x7d, 0x81, 0x7d, 0x77, 0x64, 0x1b, 0x7c, 0x70, 0x96, 0x95, 0x67, 0x1f, + 0x92, 0x70, 0x6b, 0x91, 0x67, 0x1b, 0xfb, 0x6a, 0xfb, 0x53, 0xfb, 0x59, + 0xfb, 0x79, 0x60, 0xa8, 0xfb, 0x6b, 0xf7, 0x9c, 0xd4, 0xe9, 0xa1, 0xb3, + 0xcb, 0x1f, 0xb8, 0xf7, 0x45, 0x5, 0xcb, 0x9c, 0xaa, 0x9d, 0xc0, 0x1b, + 0x9b, 0xfb, 0x9e, 0x7, 0xe, 0xf8, 0x1, 0xa0, 0x76, 0xf7, 0xb9, 0xb5, + 0xf7, 0xd2, 0x77, 0x12, 0x83, 0xf7, 0x8a, 0xfb, 0x8a, 0xf9, 0x9b, 0xfb, + 0x8b, 0xf7, 0x8b, 0x13, 0xf4, 0x83, 0x16, 0xf7, 0x8a, 0x9b, 0x6, 0x68, + 0x6d, 0x9a, 0xb1, 0x92, 0x8c, 0x92, 0x8d, 0x94, 0x1f, 0x13, 0xe8, 0xc7, + 0xf7, 0x7e, 0x5, 0xf7, 0xb1, 0x6, 0x50, 0xfb, 0x76, 0x5, 0x4b, 0x79, + 0x55, 0x77, 0x68, 0x1b, 0xe6, 0xa, 0x64, 0x6b, 0x9b, 0xb4, 0x92, 0x8c, + 0x93, 0x8d, 0x93, 0x1f, 0xf7, 0x3, 0xf8, 0x3c, 0x5, 0xf7, 0x7, 0xa9, + 0xaa, 0x8d, 0xae, 0x1b, 0x93, 0xa, 0xbb, 0x9b, 0x73, 0x6c, 0x78, 0x87, + 0x76, 0x85, 0x77, 0x1f, 0x62, 0xfb, 0x2e, 0x5, 0xfb, 0xb1, 0x6, 0xb5, + 0xf7, 0x2e, 0x5, 0xf7, 0x5, 0xaa, 0xbf, 0x8d, 0xa9, 0x1b, 0xc4, 0xa, + 0xc1, 0x9d, 0x74, 0x6c, 0x78, 0x86, 0x76, 0x85, 0x76, 0x1f, 0xfb, 0x4, + 0xfc, 0x3a, 0x5, 0x4d, 0x7a, 0x67, 0x75, 0x69, 0x1b, 0xe, 0x73, 0xcb, + 0xa, 0x83, 0xf8, 0x1c, 0x3, 0x83, 0x16, 0xf7, 0x88, 0x9b, 0x6, 0x59, + 0x7d, 0xa4, 0xaa, 0x9e, 0x90, 0xa0, 0x90, 0x9d, 0x1f, 0xf7, 0x1, 0xf8, + 0x1c, 0x5, 0xec, 0xa6, 0xa2, 0x9d, 0xb6, 0x1b, 0x93, 0xa, 0xb9, 0x9d, + 0x76, 0x72, 0x76, 0x88, 0x72, 0x85, 0x74, 0x1f, 0x20, 0xfc, 0x1c, 0x5, + 0x28, 0x70, 0x78, 0x7c, 0x5c, 0x1b, 0xe, 0xe2, 0x79, 0xaa, 0x6c, 0xf7, + 0x22, 0xf8, 0xa5, 0x77, 0x12, 0x85, 0xe8, 0x13, 0xb0, 0xf7, 0x81, 0xf9, + 0x11, 0x15, 0xc3, 0x9d, 0x76, 0x6d, 0x78, 0x86, 0x74, 0x85, 0x75, 0x1f, + 0xfb, 0x15, 0xfc, 0x5b, 0x5, 0x77, 0x85, 0x82, 0x69, 0x69, 0x1b, 0x6a, + 0x88, 0xa1, 0xa2, 0x8c, 0x1f, 0x91, 0x8c, 0x92, 0x91, 0x1a, 0x13, 0x70, + 0xa4, 0x75, 0xa1, 0x71, 0x6e, 0x7a, 0x74, 0x6c, 0x4e, 0xc7, 0x70, 0xc0, + 0xf7, 0x17, 0xb2, 0xf3, 0xf5, 0xa8, 0x1e, 0xea, 0xf7, 0xde, 0x5, 0xd9, + 0xa2, 0x99, 0xb0, 0xc0, 0x1b, 0x9b, 0xfb, 0x92, 0x7, 0xe, 0xf7, 0xca, + 0xa0, 0x76, 0xf7, 0xe6, 0xb0, 0xf7, 0xaa, 0x77, 0x1, 0x92, 0xf9, 0x5f, + 0x3, 0x92, 0x16, 0xf7, 0x8c, 0x9b, 0x6, 0x52, 0x7e, 0x9d, 0xaa, 0x9a, + 0x91, 0x9e, 0x91, 0xa0, 0x1f, 0xc7, 0xf7, 0x6f, 0x93, 0x8a, 0xf7, 0x7, + 0xfb, 0x5a, 0x5, 0x9a, 0x70, 0x9f, 0x6c, 0x73, 0x1a, 0x73, 0x7b, 0x79, + 0x53, 0x1e, 0x7b, 0xf7, 0xa7, 0x9b, 0x7, 0x5d, 0x74, 0x92, 0xbc, 0x6f, + 0x1f, 0xfb, 0x42, 0xf7, 0xc3, 0xf7, 0xc0, 0xf7, 0x76, 0x5, 0x90, 0x92, + 0xb2, 0xaa, 0xa8, 0x1b, 0x9b, 0xfb, 0x72, 0x7b, 0x7, 0xbc, 0x97, 0x83, + 0x7a, 0x72, 0x3f, 0x4b, 0x47, 0x5b, 0x1f, 0xfb, 0x24, 0x26, 0x85, 0x8c, + 0xb7, 0xf7, 0x31, 0x5, 0xe0, 0xa3, 0xa5, 0x9f, 0xc5, 0x1b, 0xc4, 0xa, + 0xc3, 0xa0, 0x7b, 0x70, 0x7a, 0x87, 0x76, 0x84, 0x73, 0x1f, 0xfb, 0x7, + 0xfc, 0x2f, 0x5, 0x38, 0x74, 0x81, 0x75, 0x52, 0x1b, 0xe, 0x6e, 0xa, + 0x58, 0x59, 0x8b, 0xb2, 0x8f, 0x8b, 0x90, 0x8d, 0x91, 0x1f, 0xf7, 0xd, + 0xf8, 0x4f, 0x5, 0xcd, 0x9d, 0xa5, 0xb1, 0xcd, 0x1b, 0xc4, 0xa, 0xc7, + 0x9c, 0x79, 0x6e, 0x7b, 0x86, 0x77, 0x85, 0x75, 0x1f, 0xfb, 0xf, 0xfc, + 0x4e, 0x5, 0x4d, 0x7a, 0x6a, 0x7f, 0x6c, 0x1b, 0xe, 0xf8, 0x70, 0xcb, + 0xa, 0x79, 0xfa, 0xf, 0xfd, 0x61, 0xf7, 0x49, 0xf7, 0x20, 0xf7, 0xa5, + 0x3, 0x79, 0xe4, 0xa, 0x55, 0x7d, 0xa4, 0xab, 0xa1, 0x93, 0xa6, 0x92, + 0xa3, 0x1f, 0xf5, 0xf8, 0x1a, 0x5, 0x8f, 0x6, 0xc7, 0xfc, 0xac, 0x5, + 0x9c, 0x6, 0xf8, 0x8, 0xf8, 0xbd, 0x5, 0x8e, 0x6, 0xfb, 0xc, 0xfc, + 0x45, 0x5, 0x57, 0x7d, 0x86, 0x57, 0x32, 0x1b, 0xe6, 0xa, 0x4d, 0x7a, + 0x9d, 0xa6, 0x9c, 0x92, 0x9f, 0x91, 0xa1, 0x1f, 0xf7, 0xf, 0xf8, 0x4f, + 0x5, 0xca, 0x9c, 0xa8, 0x96, 0xaf, 0x1b, 0x9b, 0xfb, 0x3b, 0x7, 0xfb, + 0xe1, 0xfc, 0x7d, 0x5, 0x88, 0x6, 0x54, 0xf8, 0x7d, 0x5, 0xfb, 0x49, + 0x7b, 0x6, 0xc2, 0x9e, 0x79, 0x76, 0x82, 0x80, 0x6c, 0x80, 0x63, 0x1f, + 0x21, 0xfc, 0x8, 0x5, 0xfb, 0x8, 0x6a, 0x6b, 0x7d, 0x6a, 0x1b, 0xe, + 0xf7, 0xca, 0x91, 0x76, 0xaf, 0x76, 0xf7, 0x32, 0x77, 0xf8, 0x97, 0x77, + 0x12, 0xf7, 0x5a, 0xaa, 0x13, 0x78, 0x77, 0xe4, 0xa, 0x54, 0x7b, 0xa1, + 0xaa, 0xa9, 0x9a, 0xb0, 0x93, 0xaa, 0x1f, 0xee, 0xf7, 0xfe, 0x5, 0x8f, + 0x6, 0x13, 0xb8, 0xf7, 0x78, 0xfc, 0xb4, 0x5, 0x9d, 0x6, 0xf7, 0x24, + 0xf8, 0x8b, 0x5, 0xf7, 0xd, 0xae, 0xa0, 0xa7, 0xbb, 0x1b, 0xeb, 0xa, + 0x7b, 0x7, 0xc3, 0x9a, 0x77, 0x6d, 0x79, 0x7c, 0x5e, 0x81, 0x67, 0x1f, + 0x33, 0xfb, 0xde, 0x5, 0x88, 0x6, 0xfb, 0x62, 0xf8, 0x83, 0x5, 0xfb, + 0x35, 0x7b, 0x6, 0xb4, 0xa7, 0x78, 0x66, 0x9c, 0x1f, 0xfb, 0xb, 0xfc, + 0x35, 0x5, 0xfb, 0x16, 0x66, 0x75, 0x79, 0x5f, 0x1b, 0xe, 0xbf, 0xa, + 0x90, 0xa, 0xc7, 0xf7, 0x73, 0x15, 0xfb, 0x52, 0xf7, 0x1f, 0x58, 0xe0, + 0xf7, 0x74, 0xf7, 0x53, 0xf7, 0x86, 0xf7, 0x5d, 0xf7, 0x3c, 0x24, 0xd4, + 0xfb, 0xc, 0xfb, 0x47, 0xfb, 0x81, 0xfb, 0x72, 0xfb, 0x71, 0x1e, 0xf4, + 0x5d, 0x15, 0xf7, 0x16, 0xf7, 0x1, 0xf7, 0xda, 0xf7, 0x5a, 0xea, 0xa6, + 0x47, 0x30, 0xfb, 0xe, 0x30, 0xfb, 0xe5, 0xfb, 0x5f, 0xfb, 0x16, 0x86, + 0xf7, 0x1f, 0xa2, 0x1e, 0xe, 0x7d, 0xa, 0xf7, 0xc5, 0xaf, 0xf7, 0xae, + 0xa9, 0x1, 0xf8, 0x8a, 0xf2, 0x3, 0x8b, 0x4, 0xf7, 0x89, 0x9b, 0x6, + 0x59, 0x7d, 0x9d, 0xaa, 0x9d, 0x91, 0xa1, 0x92, 0xa4, 0x1f, 0xbb, 0xf7, + 0x4b, 0x5, 0x86, 0xa1, 0x99, 0x88, 0xd1, 0x1b, 0xf7, 0x5c, 0xc4, 0xf7, + 0xe, 0xd5, 0xf7, 0x2b, 0xfb, 0x3b, 0x8c, 0x5f, 0x1f, 0xfb, 0x8c, 0x7b, + 0x6, 0xc0, 0x9c, 0x79, 0x70, 0x76, 0x83, 0x6f, 0x83, 0x6f, 0x1f, 0x22, + 0xfc, 0x14, 0x5, 0x4b, 0x79, 0x7e, 0x58, 0x4b, 0x1b, 0xf7, 0x8f, 0xf7, + 0xdf, 0xd8, 0xa, 0x9b, 0xa9, 0x1b, 0xf7, 0x2, 0xa9, 0x61, 0x41, 0xfb, + 0x1f, 0x28, 0x70, 0x3a, 0x70, 0x72, 0x8e, 0x8e, 0x78, 0x1f, 0xe, 0xf8, + 0x1, 0xfb, 0x4a, 0xcf, 0x73, 0xf7, 0x2f, 0x6a, 0xac, 0xf8, 0xfc, 0xac, + 0x12, 0x86, 0xa, 0x13, 0x5c, 0xc6, 0xfb, 0x2e, 0x15, 0x95, 0x7c, 0x5, + 0xa4, 0xb2, 0xac, 0x91, 0xaa, 0x1b, 0xad, 0xac, 0x7e, 0x80, 0xb2, 0x1f, + 0x13, 0xbc, 0x81, 0xae, 0xb3, 0x81, 0xbc, 0x1b, 0xba, 0xf7, 0x28, 0xa5, + 0xf6, 0xd2, 0x1f, 0x7c, 0x96, 0x5, 0x62, 0x63, 0x4f, 0x68, 0x26, 0x1b, + 0x75, 0x72, 0x91, 0x92, 0x6f, 0x1f, 0x13, 0x3c, 0x5a, 0x98, 0x53, 0x9c, + 0x55, 0x89, 0xc8, 0xc4, 0x18, 0xae, 0xa, 0xf7, 0x82, 0x4f, 0xa, 0xfb, + 0x66, 0xfb, 0x71, 0xfb, 0x35, 0xeb, 0x44, 0xdb, 0x7c, 0x1f, 0x2a, 0x36, + 0x82, 0x85, 0x44, 0x58, 0x8, 0xf5, 0xf7, 0xeb, 0x15, 0xf7, 0x16, 0xef, + 0xf7, 0xce, 0xf7, 0x5a, 0xea, 0xaf, 0x45, 0x30, 0xfb, 0xe, 0x2b, 0xfb, + 0xe1, 0xfb, 0x5f, 0xfb, 0x16, 0x8b, 0xf7, 0x29, 0xa2, 0x1e, 0xe, 0x7d, + 0xa, 0xf7, 0xe1, 0xa7, 0xf7, 0x9a, 0xa9, 0x1, 0xf8, 0x77, 0xf4, 0x3, + 0x7e, 0x16, 0xf7, 0x88, 0x9b, 0x6, 0x5b, 0x78, 0x98, 0xaa, 0x9a, 0x8f, + 0xa0, 0x92, 0xa3, 0x1f, 0xc3, 0xf7, 0x65, 0xcc, 0x86, 0xf7, 0xf, 0xfb, + 0xd8, 0x5, 0xf7, 0x28, 0x9b, 0x6, 0x57, 0x74, 0xbb, 0xae, 0x7e, 0x1f, + 0x33, 0xf7, 0x7e, 0x5, 0xc1, 0xf7, 0x23, 0xc4, 0xf7, 0xb, 0xf7, 0x24, + 0xfb, 0x40, 0x8b, 0x67, 0x1f, 0xfb, 0x8c, 0x7b, 0x6, 0xbe, 0x9f, 0x7b, + 0x72, 0x79, 0x85, 0x74, 0x85, 0x74, 0x1f, 0xfb, 0x7, 0xfc, 0x30, 0x5, + 0x4c, 0x79, 0x80, 0x62, 0x4f, 0x1b, 0xf7, 0x94, 0xf7, 0xf2, 0x15, 0xcc, + 0xf7, 0x79, 0x5, 0x9d, 0x92, 0x8f, 0x95, 0xb8, 0x1b, 0xc4, 0xc9, 0x74, + 0x35, 0x40, 0x66, 0x3d, 0xfb, 0x24, 0x70, 0x83, 0x8c, 0x8f, 0x73, 0x1f, + 0xe, 0x79, 0xae, 0x76, 0xae, 0x72, 0x76, 0xf9, 0x1c, 0xac, 0x8c, 0x77, + 0x12, 0x13, 0x30, 0xb9, 0xa, 0x9c, 0x84, 0x83, 0x9f, 0x1f, 0x13, 0x90, + 0x81, 0xa4, 0xa8, 0x80, 0xb1, 0x6d, 0xa, 0x13, 0x48, 0xb3, 0xf7, 0x5b, + 0x5, 0x74, 0x6, 0x79, 0x7f, 0x78, 0x83, 0x74, 0x1b, 0x73, 0x7b, 0x94, + 0x92, 0x72, 0x1f, 0x13, 0x90, 0x90, 0x7b, 0x77, 0x8f, 0x70, 0x64, 0xa, + 0xe, 0xf7, 0x5b, 0xa0, 0x76, 0xf8, 0xfe, 0xae, 0x1, 0xcc, 0x16, 0xf7, + 0xb6, 0x9b, 0x6, 0x49, 0x77, 0x9e, 0xac, 0x9c, 0x91, 0xa0, 0x92, 0xa3, + 0x1f, 0xf7, 0x1a, 0xf8, 0x7c, 0x5, 0xf7, 0x12, 0xac, 0x85, 0x3c, 0x7f, + 0x8a, 0x7d, 0x89, 0x7c, 0x1f, 0x9c, 0x89, 0xb7, 0xf7, 0x37, 0x5, 0xfc, + 0xa8, 0x6, 0x61, 0xfb, 0x2e, 0x9d, 0x87, 0x5, 0xf7, 0xf, 0xc5, 0xbd, + 0x8b, 0xf7, 0x16, 0x1b, 0xfb, 0x17, 0xfc, 0x7c, 0x5, 0x49, 0x79, 0x60, + 0x5b, 0x51, 0x1b, 0xe, 0xaa, 0xa, 0x77, 0x1, 0xf1, 0xe5, 0xf8, 0xa, + 0xf7, 0x5b, 0x3, 0xf7, 0x13, 0xf9, 0x11, 0x15, 0xbe, 0xa2, 0x7b, 0x67, + 0x1f, 0x59, 0x28, 0xfb, 0xaf, 0x7c, 0xa, 0xf7, 0x3d, 0xc5, 0xf7, 0x0, + 0xf7, 0x29, 0xb7, 0x1e, 0xee, 0xf7, 0xe3, 0x5, 0x9d, 0x90, 0xa7, 0xb8, + 0xba, 0x1b, 0xeb, 0xa, 0x7b, 0x7, 0xae, 0xaa, 0x7a, 0x5f, 0x79, 0x3d, + 0xfb, 0xb2, 0x83, 0x6c, 0x1f, 0x26, 0x6f, 0x56, 0xfb, 0x9, 0xfb, 0x1a, + 0x1b, 0x4b, 0x40, 0xab, 0xe4, 0xc1, 0xef, 0xf7, 0xea, 0x9a, 0xb8, 0x1f, + 0xaf, 0x97, 0xb0, 0x9b, 0xb7, 0x1b, 0xd2, 0xa, 0xe, 0xf7, 0x92, 0x8e, + 0x76, 0xf9, 0x33, 0x77, 0x1, 0xd7, 0xf8, 0xf8, 0x3, 0xf7, 0x84, 0x79, + 0x15, 0x9e, 0x6, 0xf7, 0xca, 0xf8, 0x94, 0x5, 0x95, 0x91, 0xca, 0xf7, + 0x19, 0xbd, 0x1b, 0x9b, 0xfb, 0x4e, 0x7b, 0x7, 0xb4, 0x9c, 0x75, 0x79, + 0x69, 0x6e, 0x5b, 0x7d, 0x73, 0x1f, 0xfb, 0x62, 0xfb, 0xf8, 0x5, 0x86, + 0x6, 0x4e, 0xf7, 0xfb, 0x5, 0x87, 0xa1, 0x85, 0xa6, 0xa3, 0x1a, 0xb1, + 0x9c, 0xab, 0xcc, 0x1e, 0x9b, 0xfb, 0x85, 0x7b, 0x7, 0xbc, 0x8e, 0x75, + 0xfb, 0xf, 0x9f, 0x1f, 0xe, 0xf8, 0x70, 0x8e, 0x76, 0xf9, 0x33, 0x77, + 0x1, 0xd2, 0xf9, 0xd7, 0x3, 0xf7, 0x68, 0x79, 0x15, 0x9e, 0x6, 0xf7, + 0x72, 0xf8, 0x5a, 0x5, 0x90, 0x6, 0xbd, 0xfc, 0x5a, 0x5, 0x9f, 0x6, + 0xf7, 0xc0, 0xf8, 0xd1, 0x5, 0xbf, 0xa6, 0xa9, 0xa9, 0xa0, 0x1b, 0x9b, + 0xfb, 0x4d, 0x7b, 0x7, 0xbe, 0x99, 0x73, 0x75, 0x79, 0x84, 0x7a, 0x89, + 0x87, 0x1f, 0xfb, 0x58, 0xfc, 0x15, 0x5, 0x88, 0x6, 0x5c, 0xf8, 0x24, + 0x5, 0x8f, 0x8b, 0x90, 0x8f, 0x1a, 0xaa, 0xb2, 0xa5, 0xae, 0x1e, 0x9b, + 0xfb, 0x82, 0x7b, 0x7, 0xc7, 0x97, 0x74, 0x5e, 0x90, 0x1f, 0x92, 0x50, + 0xfb, 0x3e, 0xfb, 0xeb, 0x5, 0x88, 0x6, 0x87, 0xa9, 0x61, 0xf7, 0xfd, + 0x5, 0x8a, 0x93, 0x8b, 0x92, 0x91, 0x1a, 0xb4, 0xb8, 0x9c, 0xaa, 0x1e, + 0x9b, 0xfb, 0x80, 0x7b, 0x7, 0xc1, 0x98, 0x5f, 0x69, 0x8f, 0x1f, 0xe, + 0xf7, 0x92, 0xcb, 0xa, 0x6e, 0xf9, 0x40, 0x3, 0x6e, 0x16, 0xf7, 0x6a, + 0x9b, 0x6, 0x61, 0x75, 0x9a, 0xa0, 0x98, 0x91, 0x9a, 0x99, 0x9c, 0x1f, + 0xf7, 0x2b, 0xf7, 0x40, 0xd3, 0xfb, 0x47, 0x5, 0x8f, 0x81, 0x8d, 0x81, + 0x82, 0x1a, 0x73, 0x79, 0x76, 0x51, 0x1e, 0xe6, 0xa, 0x60, 0x67, 0x95, + 0xcb, 0x72, 0x1f, 0x25, 0xf7, 0x96, 0xf7, 0x4d, 0xf7, 0x68, 0x5, 0xbe, + 0xb8, 0xc0, 0xa5, 0x96, 0x1b, 0x9b, 0xfb, 0x64, 0x7b, 0x7, 0xb4, 0x9e, + 0x7d, 0x78, 0x7e, 0x85, 0x7b, 0x7e, 0x7c, 0x1f, 0xfb, 0x25, 0xfb, 0x3b, + 0x50, 0xf7, 0x27, 0x5, 0x82, 0xa0, 0x86, 0x9e, 0x9b, 0x1a, 0xa4, 0xa1, + 0x9b, 0xbb, 0x1e, 0x9b, 0xfb, 0x9c, 0x7b, 0x7, 0xc2, 0xa2, 0x76, 0x3f, + 0xa9, 0x1f, 0xe5, 0xfb, 0x77, 0xfb, 0x32, 0xfb, 0x4c, 0x7d, 0x7c, 0x7a, + 0x7a, 0x19, 0x53, 0x53, 0x62, 0x72, 0x7a, 0x1b, 0xe, 0xf7, 0x5b, 0xcb, + 0xa, 0xcf, 0xa, 0x58, 0x6d, 0x99, 0xb3, 0x94, 0x8c, 0x95, 0x8e, 0x97, + 0x1f, 0xc1, 0xf7, 0x61, 0xf7, 0x6f, 0xf7, 0xa2, 0x5, 0xb3, 0xab, 0xa9, + 0xa0, 0x93, 0x1b, 0xe8, 0xa, 0xaa, 0xa7, 0x7d, 0x72, 0x83, 0x89, 0x83, + 0x87, 0x81, 0x1f, 0x7a, 0x64, 0xfb, 0x2, 0xfb, 0x16, 0x5e, 0x53, 0x73, + 0xe7, 0x6a, 0xf5, 0x85, 0xa5, 0x8, 0x89, 0x92, 0x8b, 0x90, 0x91, 0x1a, + 0xaa, 0xaf, 0x9c, 0xad, 0xcd, 0xa, 0xaf, 0xa3, 0x82, 0x52, 0x9b, 0x1f, + 0xd8, 0xfb, 0xa1, 0x52, 0xfb, 0x5e, 0x5, 0x49, 0x78, 0x55, 0x79, 0x67, + 0x1b, 0xe, 0xf7, 0x5b, 0x8b, 0xaf, 0xf8, 0xd9, 0xaf, 0x50, 0xa, 0xe, + 0xe1, 0xa, 0xa0, 0xf8, 0x6, 0x3, 0xa0, 0xfb, 0x2d, 0x15, 0xf7, 0x50, + 0x6, 0x92, 0xa6, 0x5, 0x5d, 0x6, 0x6b, 0x68, 0x92, 0xb5, 0x97, 0x1f, + 0xf7, 0x34, 0xf9, 0x3a, 0x5, 0xa6, 0x91, 0xa3, 0x93, 0xa6, 0x1b, 0xbf, + 0x6, 0x92, 0xa6, 0x5, 0xfb, 0x41, 0x6, 0xe, 0x3c, 0xfb, 0x13, 0x76, + 0xf7, 0x20, 0x76, 0xf9, 0x4b, 0x77, 0x1, 0x54, 0xf8, 0xb, 0x3, 0xf7, + 0x6b, 0xfb, 0x28, 0x15, 0xad, 0x6, 0xfb, 0x41, 0xf9, 0xc2, 0x5, 0x66, + 0x6, 0xe, 0xe1, 0xa, 0x97, 0xf8, 0x6, 0x3, 0x9e, 0xfb, 0x12, 0x15, + 0x84, 0x70, 0x5, 0xf7, 0x41, 0x6, 0xf7, 0x59, 0xf9, 0xc4, 0x5, 0xfb, + 0x51, 0x6, 0x84, 0x70, 0x5, 0xba, 0x6, 0xaa, 0xad, 0x86, 0x60, 0x81, + 0x1f, 0xfb, 0x35, 0xfd, 0x3a, 0x5, 0x79, 0x87, 0x7d, 0x79, 0x65, 0x1b, + 0xe, 0xcc, 0xf9, 0x2e, 0x77, 0xa2, 0x76, 0x12, 0xf7, 0x49, 0xf7, 0x41, + 0x13, 0x60, 0xf7, 0xc1, 0x4, 0x13, 0xa0, 0xcf, 0x6, 0xf7, 0x23, 0xf7, + 0xb2, 0xf7, 0x23, 0xfb, 0xb2, 0x5, 0xcf, 0x6, 0xfb, 0x49, 0xf8, 0x1, + 0x5, 0x4f, 0x6, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x94, 0x40, 0x15, 0x82, + 0x59, 0x5, 0xf8, 0x80, 0x6, 0x93, 0xbd, 0x5, 0xe, 0x73, 0xf8, 0x95, + 0x76, 0xf7, 0x40, 0x77, 0x1, 0xf7, 0xac, 0xf8, 0x80, 0xb7, 0xa, 0xfb, + 0x3, 0xf7, 0x22, 0xc5, 0xa, 0x79, 0x92, 0x56, 0xa, 0x9e, 0x7a, 0x80, + 0xa, 0x80, 0xbc, 0xf8, 0x11, 0xa1, 0x12, 0x9c, 0xdf, 0xf7, 0x58, 0xd4, + 0x8b, 0x99, 0x17, 0xf7, 0xd2, 0xf7, 0x1f, 0x61, 0xa, 0x70, 0xb5, 0xb6, + 0xad, 0xb0, 0xd5, 0xc7, 0x1e, 0x13, 0xf8, 0x38, 0xa, 0x45, 0x8a, 0x7a, + 0x4f, 0x5, 0x89, 0x6, 0xa7, 0x6d, 0xaf, 0x5f, 0xa, 0x36, 0xa, 0xa8, + 0xa1, 0x6e, 0x5b, 0x29, 0x2f, 0xfb, 0x62, 0x21, 0x70, 0x6a, 0x9d, 0xc0, + 0x1e, 0xe, 0x80, 0xa2, 0x7f, 0xa2, 0xf8, 0x5, 0xbc, 0x91, 0xbc, 0xf7, + 0x4f, 0x77, 0x12, 0xa2, 0xe1, 0xf7, 0xab, 0xe0, 0x13, 0x7e, 0xf7, 0x1, + 0xb8, 0x15, 0xf4, 0xeb, 0xf7, 0x86, 0xf7, 0x2, 0xca, 0x95, 0x55, 0x6c, + 0x1e, 0x13, 0xbe, 0x37, 0x2c, 0xfb, 0x67, 0xfb, 0x1d, 0x5c, 0x8b, 0xa5, + 0x92, 0x1e, 0x8c, 0xf8, 0xea, 0x15, 0xb8, 0x9c, 0x7e, 0x76, 0x7b, 0x85, + 0x75, 0x84, 0x73, 0x1f, 0xfb, 0x1c, 0xfc, 0x89, 0x5, 0x87, 0x7, 0x75, + 0xd8, 0x6c, 0xc0, 0xf7, 0x2d, 0xf7, 0x3b, 0xf7, 0x41, 0xf7, 0x32, 0xd4, + 0x5a, 0xbb, 0x45, 0x31, 0x50, 0x38, 0x57, 0x6a, 0x1e, 0x89, 0x8c, 0xad, + 0xf7, 0x5, 0xb5, 0xf7, 0x44, 0xa1, 0xdd, 0x19, 0x86, 0x90, 0x57, 0x81, + 0x58, 0x84, 0x59, 0x85, 0x19, 0xe, 0xe2, 0x80, 0xaf, 0xf8, 0x1f, 0xa0, + 0x1, 0xa9, 0xe1, 0xf7, 0x72, 0xe2, 0x3, 0xf7, 0xf2, 0xf5, 0x15, 0x63, + 0x67, 0x5c, 0x62, 0x4f, 0x1b, 0x4e, 0x6d, 0xb8, 0xd8, 0xeb, 0xd0, 0xdb, + 0xa, 0x84, 0x89, 0x85, 0x88, 0x84, 0x1f, 0x87, 0x80, 0x85, 0x7f, 0x7b, + 0xa3, 0xa, 0xfb, 0x1e, 0xfb, 0x2d, 0xfb, 0x21, 0xfb, 0x19, 0xde, 0x72, + 0xcc, 0xf4, 0xc5, 0xd6, 0xab, 0xa4, 0x1e, 0xe, 0x7f, 0xbb, 0x6f, 0x76, + 0xf8, 0x8a, 0xa2, 0xd3, 0x77, 0x12, 0x9a, 0xe2, 0x13, 0xb8, 0xf1, 0xf7, + 0x3, 0x15, 0xe6, 0xea, 0xf7, 0x69, 0xf7, 0x4, 0xba, 0x8b, 0x62, 0x74, + 0xfb, 0x10, 0x29, 0xfb, 0x53, 0x2c, 0x4e, 0x8b, 0xc5, 0x9c, 0x1e, 0xf7, + 0x59, 0x8e, 0x15, 0x83, 0x68, 0x87, 0x74, 0x74, 0x1a, 0x13, 0x78, 0x76, + 0x93, 0x72, 0xb2, 0xac, 0xcc, 0xba, 0xce, 0xb6, 0x1e, 0x7f, 0x95, 0x5, + 0x5b, 0x61, 0x77, 0x74, 0x77, 0x1b, 0x81, 0x83, 0x92, 0x9a, 0x9b, 0xf7, + 0xd, 0xf8, 0x3e, 0xb6, 0xf7, 0x42, 0x1f, 0x86, 0x90, 0x58, 0x80, 0x58, + 0x84, 0x58, 0x86, 0x19, 0x7a, 0x7, 0xb3, 0x9a, 0x7c, 0x72, 0x79, 0x85, + 0x74, 0x84, 0x72, 0x1f, 0x65, 0xfb, 0x29, 0x89, 0x89, 0x5, 0xa1, 0x87, + 0x84, 0xa9, 0x53, 0x1b, 0x13, 0x38, 0xfb, 0xb, 0xfb, 0x3e, 0xfb, 0x48, + 0xfb, 0x2b, 0x1f, 0x13, 0xb8, 0x57, 0xa0, 0x48, 0xde, 0xbd, 0xc3, 0x9d, + 0xf7, 0x2, 0xd3, 0x1e, 0xe, 0xe2, 0x80, 0xb8, 0xf8, 0x14, 0xa2, 0x12, + 0xaa, 0xe2, 0xf7, 0x78, 0xcd, 0x17, 0xf7, 0x17, 0xf7, 0x5a, 0x15, 0xa0, + 0xc1, 0x5, 0xe5, 0xae, 0xd1, 0xd7, 0xc1, 0x1b, 0xa4, 0x95, 0x6e, 0x76, + 0x83, 0x82, 0xfb, 0xc, 0xfb, 0x62, 0x61, 0x1f, 0x84, 0x75, 0x15, 0xf7, + 0x52, 0xa0, 0xed, 0xe2, 0xda, 0x1a, 0xb7, 0x6c, 0xad, 0x58, 0x1e, 0x13, + 0xa0, 0xfb, 0x21, 0xfb, 0x32, 0x5c, 0xa, 0x1f, 0x73, 0xa, 0x61, 0x57, + 0xa2, 0xcf, 0x9f, 0x8c, 0x95, 0x90, 0xa0, 0x1f, 0xe, 0x3c, 0xfb, 0x63, + 0xa0, 0xf8, 0xd0, 0xab, 0xf7, 0x82, 0xa1, 0x12, 0xf7, 0xed, 0xda, 0x13, + 0xe0, 0xa9, 0xf8, 0x16, 0x15, 0xe5, 0x6, 0x38, 0xfc, 0x2e, 0x5, 0x63, + 0x83, 0x71, 0xfb, 0xe, 0x4b, 0x1b, 0x7f, 0x84, 0x93, 0x93, 0x8f, 0x8c, + 0x8e, 0x8d, 0x8e, 0x1f, 0x8e, 0x8f, 0x8e, 0x8f, 0x95, 0x1a, 0xa4, 0x71, + 0x97, 0x7d, 0x68, 0x8a, 0x63, 0x88, 0x1e, 0x13, 0xf0, 0x65, 0xb7, 0x76, + 0xad, 0xf7, 0x9, 0xc4, 0xf7, 0x35, 0xf7, 0xe, 0xa6, 0x1e, 0xce, 0xf7, + 0xca, 0x5, 0xf7, 0x1, 0x6, 0x91, 0xab, 0x5, 0xfb, 0x0, 0x6, 0xbe, + 0x94, 0xae, 0xf7, 0x4f, 0xdd, 0x1b, 0x98, 0x95, 0x87, 0x83, 0x86, 0x89, + 0x88, 0x89, 0x88, 0x1f, 0x88, 0x87, 0x88, 0x85, 0x7f, 0x1a, 0x80, 0x91, + 0x70, 0xab, 0xa2, 0x9d, 0x9f, 0x9f, 0x9f, 0x7b, 0xb8, 0x43, 0xfb, 0x12, + 0x54, 0xfb, 0x43, 0x36, 0x71, 0x1e, 0x2f, 0x6, 0xe, 0xfb, 0x52, 0xa1, + 0xf7, 0xd3, 0xa0, 0xf7, 0x8b, 0xa1, 0x12, 0x93, 0xcc, 0xa2, 0xd9, 0xf7, + 0x2b, 0xc7, 0x6a, 0xda, 0x13, 0xfc, 0xf7, 0x11, 0xb2, 0x15, 0x37, 0x54, + 0x6a, 0x75, 0x52, 0x1a, 0x54, 0xc0, 0x53, 0xf7, 0x1, 0xf7, 0x1d, 0xd9, + 0xc8, 0xe0, 0xc6, 0x64, 0xaa, 0x5f, 0x9f, 0x1e, 0x4f, 0xa6, 0x45, 0x93, + 0xa9, 0x1a, 0x98, 0xa1, 0xa6, 0x99, 0x1e, 0x98, 0x99, 0x87, 0x98, 0x1b, + 0x13, 0xfa, 0xe3, 0xea, 0xdd, 0xd5, 0x9f, 0x88, 0x9f, 0x85, 0x9e, 0x1f, + 0xbd, 0x6, 0x13, 0xa8, 0xb2, 0x4e, 0x7, 0x7c, 0x60, 0xaf, 0x50, 0x1b, + 0x39, 0xfb, 0x8, 0x51, 0xfb, 0x4, 0x46, 0xb6, 0x73, 0xaf, 0x7b, 0x1f, + 0x69, 0x74, 0x60, 0x6e, 0x6c, 0x1a, 0x78, 0x9a, 0x7f, 0x97, 0x82, 0x1e, + 0xa1, 0x80, 0x15, 0x92, 0x8e, 0xed, 0x63, 0x9d, 0x82, 0x8, 0x13, 0xfc, + 0x9e, 0x82, 0xaf, 0x7a, 0x5e, 0x1a, 0x59, 0x5a, 0x5e, 0x31, 0x7c, 0x2a, + 0x9a, 0xdd, 0x8a, 0x1e, 0xb1, 0x99, 0xbf, 0xc7, 0xa4, 0x1e, 0xa6, 0xf7, + 0x72, 0x15, 0x13, 0xa0, 0xce, 0xb7, 0xf1, 0xd8, 0x1e, 0x13, 0xfa, 0xb5, + 0x9a, 0x6e, 0x64, 0x38, 0x59, 0x2b, 0x49, 0x5e, 0x7a, 0xac, 0xb8, 0x1f, + 0xe, 0xbe, 0xa, 0xf7, 0x86, 0x77, 0x12, 0xf8, 0x6, 0xd9, 0x13, 0x70, + 0x9e, 0x16, 0xd6, 0x6, 0xac, 0xf7, 0x12, 0x99, 0xc2, 0xb9, 0xcf, 0x8, + 0xa7, 0x9e, 0xe0, 0xf7, 0x5, 0xbd, 0x1b, 0x9b, 0x98, 0x81, 0x7a, 0x1f, + 0x7e, 0x39, 0xfb, 0xb3, 0x71, 0x1a, 0x13, 0xb0, 0x70, 0x98, 0x78, 0xab, + 0xcd, 0xb6, 0xc9, 0xbf, 0xaf, 0x1e, 0x13, 0x10, 0x7e, 0x97, 0x5, 0x5b, + 0x65, 0x73, 0x6c, 0x77, 0x1b, 0x83, 0x83, 0x92, 0x97, 0x1f, 0x13, 0x38, + 0xa0, 0xdc, 0xf7, 0x94, 0xae, 0x1a, 0xcc, 0x5d, 0x92, 0x75, 0x31, 0x25, + 0xfb, 0x2e, 0x59, 0x6c, 0x1e, 0x89, 0x8d, 0xf7, 0xa, 0xf8, 0x4b, 0x86, + 0x90, 0x57, 0x7f, 0x56, 0x82, 0x57, 0x85, 0x19, 0x7b, 0x7, 0xb7, 0x9c, + 0x94, 0x4f, 0x81, 0x7a, 0x51, 0x83, 0x6d, 0x1f, 0xe, 0xd7, 0xa, 0xf8, + 0xc4, 0xf4, 0x12, 0xbc, 0xd6, 0xb0, 0xf2, 0x17, 0xf7, 0x72, 0xf7, 0x6, + 0x4a, 0xa, 0xe7, 0xf7, 0xe4, 0x1f, 0x88, 0x8d, 0x5, 0x84, 0x64, 0x32, + 0x79, 0x6b, 0x1b, 0x13, 0xf0, 0x7b, 0x7, 0xc2, 0x8f, 0x7c, 0x76, 0x1f, + 0x6f, 0x40, 0x4b, 0xa, 0x41, 0xf8, 0x86, 0x15, 0x6e, 0xa0, 0x85, 0xa, + 0x76, 0x73, 0x6e, 0x1e, 0xe, 0x3c, 0xfb, 0x63, 0xa2, 0x74, 0xf2, 0xf9, + 0x24, 0xf1, 0x12, 0xfb, 0x10, 0xdc, 0xf7, 0x6d, 0xf1, 0x13, 0xb8, 0xd4, + 0xf8, 0x24, 0x15, 0xc7, 0x8c, 0x99, 0x8c, 0x61, 0x1a, 0x33, 0xfb, 0xff, + 0x5, 0x3e, 0x78, 0x72, 0x23, 0x58, 0x1b, 0x82, 0x80, 0x8c, 0x95, 0x91, + 0x8e, 0x8e, 0x8e, 0x8f, 0x1f, 0x8e, 0x8f, 0x8f, 0x90, 0x96, 0x1a, 0x13, + 0x78, 0xa0, 0x77, 0x9a, 0x77, 0x66, 0x87, 0x68, 0x87, 0x5a, 0xb8, 0x7c, + 0xac, 0xe4, 0xc5, 0xd6, 0xf7, 0x34, 0xb4, 0x1e, 0xf3, 0xf8, 0x2f, 0x88, + 0x8d, 0x5, 0x84, 0x64, 0x2b, 0x79, 0x68, 0x1b, 0xf0, 0xf7, 0x4f, 0x15, + 0x6f, 0xa2, 0x74, 0xa7, 0xa7, 0xa2, 0xa2, 0xa7, 0xa7, 0x74, 0xa2, 0x6f, + 0x6f, 0x74, 0x74, 0x6f, 0x1e, 0xe, 0xe2, 0x95, 0x76, 0xab, 0x76, 0xf9, + 0x24, 0x77, 0xba, 0x77, 0x12, 0x99, 0xf8, 0x53, 0x13, 0x70, 0x99, 0x16, + 0xd6, 0x6, 0xbb, 0xf7, 0x48, 0xb5, 0xab, 0x95, 0x6d, 0xb1, 0x33, 0x97, + 0x74, 0x19, 0x13, 0xb0, 0x50, 0xa9, 0x9d, 0x74, 0xaa, 0x1b, 0xb7, 0xa8, + 0xb0, 0xd3, 0xb1, 0x1f, 0x7c, 0x96, 0x5, 0x59, 0x6e, 0x81, 0x79, 0x75, + 0x1b, 0x71, 0x78, 0xb9, 0xf7, 0x3f, 0x43, 0x1f, 0xf7, 0xe, 0xf7, 0x1e, + 0xb5, 0xab, 0xb8, 0x1b, 0x13, 0x38, 0x9b, 0xfb, 0x4b, 0x7b, 0x7, 0xa6, + 0xa7, 0x8b, 0x78, 0x6c, 0xfb, 0x14, 0x2b, 0x54, 0x60, 0x1f, 0x89, 0x8d, + 0xf7, 0xb, 0xf8, 0x59, 0x86, 0x90, 0x5, 0x7f, 0x57, 0x36, 0x7c, 0x78, + 0x1b, 0x13, 0x0, 0x7b, 0x7, 0xa5, 0xb2, 0x82, 0x71, 0x7c, 0x73, 0x3a, + 0x82, 0x67, 0x1f, 0xe, 0x3c, 0x8f, 0x76, 0xf9, 0x35, 0x77, 0xba, 0x77, + 0x12, 0xb4, 0xd8, 0x17, 0xf7, 0x78, 0xd3, 0xa, 0x7c, 0x8b, 0x99, 0x91, + 0x96, 0x93, 0xa6, 0x8d, 0x94, 0x1f, 0xf7, 0x2b, 0xf8, 0xd7, 0x86, 0x90, + 0x5, 0x7f, 0x57, 0x3d, 0x7c, 0x71, 0x1b, 0x13, 0x90, 0x7b, 0x7, 0xa5, + 0xb1, 0x82, 0x71, 0x1f, 0x76, 0xfb, 0x21, 0xfc, 0x94, 0x76, 0xb5, 0xa, + 0xf8, 0x1, 0x97, 0x76, 0xa9, 0x76, 0xf8, 0x19, 0xbf, 0x12, 0x13, 0x60, + 0x97, 0x16, 0xd6, 0x6, 0xb0, 0xf7, 0xe, 0x9f, 0xcd, 0xb3, 0xc7, 0x8, + 0xb3, 0xa6, 0xd7, 0xf0, 0xb8, 0x1b, 0x94, 0x98, 0x8b, 0x70, 0x78, 0x46, + 0xfb, 0x8a, 0x71, 0x2a, 0x1f, 0xd6, 0x6, 0xa8, 0xf7, 0x5, 0x9c, 0xca, + 0xbb, 0xd7, 0x8, 0xbc, 0xaa, 0xd3, 0xe3, 0xb4, 0x1b, 0x97, 0x94, 0x83, + 0x7c, 0x1f, 0x77, 0x3d, 0xfb, 0xab, 0x70, 0x1a, 0x13, 0xa0, 0x7d, 0x8b, + 0x68, 0xb5, 0xc3, 0xbd, 0xc3, 0xc5, 0xb4, 0x1e, 0x7c, 0x97, 0x5, 0x5c, + 0x65, 0x71, 0x6b, 0x78, 0x1b, 0x7f, 0x88, 0x8e, 0x9c, 0x1f, 0x99, 0xdc, + 0xf7, 0xa0, 0xad, 0x1a, 0xb3, 0x74, 0xa6, 0x67, 0x49, 0x3a, 0x33, 0xfb, + 0x8, 0x45, 0x1e, 0x89, 0x8d, 0x5, 0x99, 0xb3, 0xa2, 0xde, 0x99, 0x1a, + 0xb5, 0x76, 0xa2, 0x65, 0x37, 0x24, 0xfb, 0x2f, 0x5a, 0x6d, 0x1e, 0x89, + 0x8d, 0xc3, 0xf7, 0x5a, 0x88, 0x8f, 0x56, 0x80, 0x56, 0x81, 0x55, 0x81, + 0x19, 0x13, 0x0, 0x7b, 0x7, 0xbc, 0x96, 0x75, 0x75, 0x1f, 0x13, 0x60, + 0x75, 0x3d, 0xfb, 0x9a, 0x7b, 0x49, 0x1e, 0xe, 0xbe, 0xa, 0x12, 0xf7, + 0xfd, 0xdc, 0x13, 0x70, 0x89, 0xa, 0x13, 0x90, 0xc3, 0xa, 0x13, 0xb0, + 0x51, 0xa, 0x13, 0x0, 0x7b, 0x7, 0xc1, 0x93, 0x76, 0x7c, 0x1f, 0x13, + 0x70, 0x76, 0x4a, 0xfb, 0x74, 0x6c, 0xfb, 0x5, 0x1e, 0xe, 0x80, 0xa0, + 0xf8, 0x2e, 0xa0, 0x92, 0xa, 0xa6, 0xf7, 0x1b, 0x15, 0x38, 0xba, 0x4c, + 0xf5, 0xf7, 0x2d, 0xf7, 0x1b, 0xf7, 0x47, 0xf7, 0xf, 0xcd, 0x6a, 0xdf, + 0xfb, 0x8, 0xfb, 0x26, 0xfb, 0x26, 0xfb, 0x33, 0xfb, 0x27, 0x1e, 0xdf, + 0x6d, 0x15, 0xf7, 0xa, 0xe4, 0xf7, 0x59, 0xf7, 0x4, 0xbb, 0xa3, 0x5d, + 0x57, 0x20, 0x3e, 0xfb, 0x61, 0xfb, 0x6, 0x59, 0x6b, 0xb1, 0xc4, 0x1e, + 0xe, 0xfb, 0x48, 0x76, 0xf7, 0x67, 0x76, 0xf8, 0x2d, 0xb6, 0x48, 0xa, + 0x73, 0x1f, 0x89, 0x8d, 0xa6, 0xe8, 0x5, 0x96, 0x8e, 0x88, 0x8d, 0x88, + 0x1b, 0xfb, 0x2f, 0x75, 0x5, 0x13, 0x80, 0x8d, 0x7b, 0x5, 0xb9, 0x9e, + 0x81, 0x79, 0x76, 0x29, 0xfb, 0xfe, 0x70, 0xfb, 0x4, 0x1f, 0x6b, 0x83, + 0x81, 0xda, 0xa, 0x61, 0x75, 0x8b, 0xd1, 0x94, 0x1f, 0x8e, 0x9f, 0x9b, + 0xd3, 0x94, 0xad, 0x8, 0xe, 0xfb, 0x50, 0x76, 0xf7, 0x5a, 0xc0, 0xf8, + 0xd, 0xa1, 0x1, 0xa4, 0xe1, 0xf7, 0xa1, 0x99, 0x3, 0xf7, 0x2a, 0xfb, + 0x55, 0x15, 0x7b, 0xf7, 0x85, 0x9d, 0x7, 0x6e, 0x5c, 0x9a, 0xb5, 0x97, + 0x1f, 0xf7, 0x30, 0xf8, 0xc4, 0x5, 0x42, 0x6, 0x7d, 0x5f, 0x5, 0x89, + 0x6, 0xa5, 0x85, 0x7b, 0xac, 0x53, 0x1b, 0xfb, 0x16, 0xfb, 0x35, 0xfb, + 0x52, 0xfb, 0x1d, 0x47, 0xa5, 0x52, 0xd8, 0xe4, 0xc5, 0xdc, 0xd8, 0xc0, + 0x1f, 0x8d, 0x89, 0x3b, 0xfb, 0xa7, 0x5, 0x5e, 0x7d, 0x6c, 0x79, 0x54, + 0x1b, 0x64, 0xf7, 0xc9, 0x15, 0xf7, 0x8, 0xf7, 0x8, 0xf7, 0x4f, 0xe8, + 0xaa, 0xa8, 0x76, 0x5e, 0x29, 0xfb, 0x0, 0xfb, 0x69, 0x22, 0x68, 0x76, + 0xaa, 0xb6, 0x1e, 0xe, 0xab, 0xa0, 0x76, 0xf8, 0x4d, 0x77, 0x1, 0xb8, + 0xf8, 0x3, 0x3, 0xb8, 0x16, 0xd7, 0x6, 0xb4, 0xf7, 0x19, 0x99, 0xb8, + 0xb1, 0xd3, 0x8, 0x9a, 0x93, 0xc7, 0xf7, 0x3, 0xaa, 0x1b, 0x97, 0x8d, + 0x83, 0x82, 0x8f, 0x1f, 0x82, 0x90, 0x92, 0x81, 0xa1, 0x1b, 0x96, 0xaf, + 0x8b, 0xbf, 0xad, 0x72, 0x9a, 0x74, 0x4c, 0x39, 0xfb, 0x6, 0x46, 0x70, + 0x1f, 0x83, 0x77, 0x89, 0x8d, 0xbc, 0xf7, 0x5b, 0x88, 0x8d, 0x5, 0x84, + 0x5b, 0x2f, 0x77, 0x7c, 0x1b, 0x7a, 0x7, 0x8d, 0x96, 0x96, 0x8e, 0x96, + 0x1b, 0xa3, 0x94, 0x7a, 0x73, 0x73, 0x83, 0x6d, 0x84, 0x72, 0x1f, 0xe, + 0xab, 0x80, 0xa0, 0x89, 0x76, 0xf8, 0x43, 0xa2, 0x8c, 0x77, 0x12, 0xf7, + 0x1, 0xd4, 0xb9, 0xd7, 0x13, 0x6c, 0xc2, 0xa, 0x9a, 0x9a, 0x86, 0x86, + 0x9a, 0x1f, 0x13, 0xac, 0x86, 0x9a, 0x99, 0x87, 0x9a, 0x1b, 0xc3, 0xe8, + 0xa4, 0xf7, 0x1, 0xb3, 0x70, 0xb5, 0x6e, 0xb2, 0x1f, 0x6b, 0xb6, 0x69, + 0xb3, 0xac, 0x1a, 0xbc, 0xab, 0x94, 0xa1, 0xcc, 0xa8, 0x49, 0x5a, 0x1e, + 0x9b, 0x6, 0x13, 0x9c, 0xbb, 0xa, 0x7d, 0x82, 0x8e, 0x8f, 0x80, 0x1f, + 0x13, 0xac, 0x90, 0x7e, 0x7d, 0x90, 0x73, 0x1b, 0x21, 0x7d, 0x3b, 0x6c, + 0x65, 0xa8, 0x60, 0xa9, 0x61, 0x1f, 0xa9, 0x61, 0xa9, 0x62, 0x6a, 0xb4, + 0xa, 0xe, 0xd7, 0xa, 0xf8, 0x20, 0xab, 0xf7, 0x15, 0x77, 0x1, 0xb0, + 0xf7, 0x97, 0x3, 0xf7, 0x6a, 0xf7, 0x9, 0x15, 0x6b, 0x72, 0x68, 0x5c, + 0x77, 0x1b, 0x86, 0x80, 0x8e, 0x97, 0x97, 0xa6, 0xeb, 0xc7, 0xf7, 0x74, + 0x1f, 0xe1, 0x6, 0x90, 0xab, 0x5, 0x39, 0x6, 0xa9, 0xf7, 0x6, 0x5, + 0x93, 0x8d, 0x89, 0x92, 0x84, 0x1b, 0x82, 0x87, 0x84, 0x86, 0x87, 0x1f, + 0x6f, 0x68, 0x58, 0x53, 0x6b, 0x7a, 0x8, 0x6b, 0x7a, 0x75, 0x91, 0x6d, + 0x1a, 0xd6, 0x6, 0x45, 0xfb, 0x9c, 0x5, 0x87, 0x7b, 0x78, 0x4e, 0x7c, + 0x1a, 0x6d, 0xa7, 0x81, 0x9f, 0xbf, 0xb2, 0xb7, 0xd8, 0xbe, 0x1e, 0xe, + 0x82, 0xbe, 0x6b, 0x76, 0xf8, 0x58, 0xa9, 0xa, 0xd9, 0x13, 0xa0, 0xf7, + 0xe0, 0xf7, 0x77, 0x15, 0x13, 0xb8, 0x4d, 0xa, 0x72, 0xa, 0x80, 0x8a, + 0x96, 0x90, 0x9a, 0x99, 0xb7, 0x90, 0x9f, 0x42, 0xa, 0x84, 0x7c, 0x8f, + 0x9e, 0x97, 0xaa, 0xf7, 0xc, 0xc8, 0xf7, 0x86, 0x1f, 0x88, 0x8d, 0x5, + 0x7f, 0x59, 0x37, 0x7c, 0x7b, 0x1b, 0x13, 0x50, 0x5d, 0xa, 0x13, 0x60, + 0xa6, 0xa, 0xe2, 0x8e, 0x76, 0xf8, 0x5f, 0x77, 0x12, 0xf7, 0x1c, 0xd2, + 0xf7, 0x3c, 0xbe, 0x17, 0xf7, 0x63, 0xd1, 0x15, 0x8a, 0xc9, 0x83, 0xf7, + 0x32, 0x69, 0xf7, 0x17, 0x8, 0x9e, 0x86, 0x8a, 0x8c, 0x81, 0x87, 0xfb, + 0x1, 0x72, 0x7d, 0x1b, 0x7e, 0x7, 0xbc, 0xa2, 0x9e, 0xfb, 0x4, 0xa0, + 0x1f, 0x9b, 0x34, 0x91, 0xfb, 0x4a, 0x6e, 0x1a, 0x7a, 0x8b, 0x7e, 0x94, + 0x1e, 0x13, 0x50, 0x9a, 0x9d, 0x9f, 0xd2, 0xcd, 0x1f, 0xac, 0xae, 0xf7, + 0x29, 0xf7, 0x46, 0xe7, 0x1a, 0xb0, 0x73, 0xa5, 0x6a, 0x77, 0x7b, 0x7d, + 0x7c, 0x73, 0x93, 0x80, 0x94, 0x83, 0x1e, 0x97, 0x80, 0x98, 0x85, 0x75, + 0x1a, 0x59, 0x3b, 0xfb, 0xb, 0x52, 0x50, 0x1e, 0xe, 0xf7, 0xca, 0x8e, + 0x76, 0xf8, 0x5e, 0x77, 0xa0, 0x77, 0x12, 0xf7, 0xd, 0xd2, 0xf7, 0x38, + 0xca, 0xf7, 0x49, 0xbb, 0x13, 0xbc, 0xf7, 0x52, 0xf7, 0x15, 0x15, 0x9d, + 0x84, 0xf7, 0x13, 0x79, 0xf0, 0x1e, 0xc1, 0x81, 0x85, 0x97, 0x85, 0x82, + 0x29, 0x73, 0x77, 0x1b, 0x7d, 0x7, 0xc4, 0x9c, 0x8e, 0x30, 0x94, 0x1f, + 0x90, 0x54, 0x9c, 0x3f, 0xfb, 0x2f, 0x1a, 0x7d, 0x8c, 0x8a, 0x6a, 0x98, + 0x1b, 0x9a, 0x92, 0xa0, 0xf7, 0x40, 0xec, 0x1f, 0xb8, 0xda, 0xa3, 0xb5, + 0x9d, 0xab, 0x8, 0x8d, 0x6, 0xa8, 0xfb, 0xd0, 0x5, 0x7b, 0x8c, 0x8b, + 0x7d, 0x96, 0x1b, 0x96, 0x98, 0x9e, 0xbb, 0xb3, 0x1f, 0xb9, 0xc1, 0xf7, + 0x2f, 0xf7, 0x57, 0xe2, 0x1a, 0xa8, 0x7b, 0xa6, 0x66, 0x6e, 0x82, 0x79, + 0x7a, 0x7a, 0x96, 0x82, 0x96, 0x81, 0x1e, 0x96, 0x81, 0x95, 0x81, 0x79, + 0x1a, 0x57, 0x3e, 0x2a, 0x33, 0xfb, 0x1, 0x1e, 0x6b, 0xf7, 0xfb, 0x5, + 0x13, 0xdc, 0x8d, 0x8a, 0x8b, 0x90, 0x84, 0x1b, 0x85, 0x88, 0x87, 0x86, + 0x88, 0x1f, 0xfb, 0x53, 0xfb, 0xc2, 0x5, 0xe, 0xe2, 0x80, 0xc2, 0xf8, + 0x21, 0x77, 0x1, 0x70, 0xf8, 0x6e, 0x3, 0xf7, 0x62, 0xf7, 0x44, 0x15, + 0xa9, 0xfb, 0xc, 0x5, 0x56, 0x98, 0x9a, 0x7d, 0xa8, 0x1b, 0xa2, 0xa8, + 0x8b, 0xf7, 0x6, 0xd2, 0x1f, 0x7d, 0x93, 0x5, 0x6d, 0x70, 0x77, 0x66, + 0x76, 0x1b, 0x77, 0x84, 0xa4, 0x9b, 0x87, 0x1f, 0x85, 0xa4, 0x69, 0xf7, + 0x1c, 0x9d, 0x1a, 0x8b, 0xcf, 0xf7, 0xd, 0xa8, 0x96, 0x92, 0x87, 0x87, + 0x92, 0x1e, 0x87, 0x93, 0x93, 0x86, 0x97, 0x1b, 0xa3, 0x95, 0x9e, 0x9d, + 0xa3, 0x75, 0x97, 0x78, 0x57, 0x5c, 0x4e, 0x39, 0x57, 0x1f, 0x80, 0xc2, + 0x5, 0xe3, 0x79, 0x7c, 0x8b, 0x75, 0x1b, 0x6b, 0x49, 0x73, 0x82, 0x70, + 0x1f, 0x8f, 0x7c, 0x5, 0x93, 0xab, 0x99, 0x8e, 0x94, 0x1b, 0xa6, 0x97, + 0x73, 0x6c, 0x94, 0x1f, 0x8c, 0x86, 0xa5, 0xfb, 0xf, 0x82, 0x1a, 0xfb, + 0x17, 0x31, 0x71, 0x69, 0x7a, 0x1b, 0x82, 0x82, 0x90, 0x90, 0x81, 0x1f, + 0x90, 0x82, 0x81, 0x8f, 0x80, 0x1b, 0x75, 0x7f, 0x79, 0x7b, 0x73, 0x9b, + 0x78, 0xac, 0xaa, 0x97, 0x96, 0x9e, 0x9c, 0x1f, 0xad, 0xb0, 0xb5, 0xc1, + 0xbb, 0xcd, 0x8, 0xe, 0xe2, 0xfb, 0x4d, 0x76, 0xf9, 0x1b, 0x77, 0x12, + 0xf8, 0x1d, 0xc7, 0xa, 0xcf, 0x7e, 0x5d, 0xf7, 0x11, 0x7e, 0x7e, 0xfb, + 0x12, 0x73, 0x86, 0x1b, 0x13, 0xe0, 0x98, 0xa, 0x9f, 0x4c, 0xe2, 0xa, + 0xae, 0xfb, 0x2f, 0x7a, 0xa, 0x83, 0x85, 0x90, 0x91, 0x83, 0x1f, 0x93, + 0x81, 0x7f, 0x94, 0x7a, 0x96, 0xa, 0x70, 0xa, 0x76, 0x96, 0x83, 0x97, + 0x83, 0x1f, 0x9a, 0x82, 0x9b, 0x84, 0x74, 0xa7, 0xa, 0xe, 0xab, 0x4f, + 0x76, 0xf8, 0x55, 0xc7, 0x1, 0xba, 0xa, 0xb1, 0xb2, 0x71, 0x74, 0xb2, + 0x1f, 0x78, 0xac, 0xad, 0x79, 0xad, 0xaf, 0xa, 0x81, 0x8e, 0x83, 0x8e, + 0x85, 0x1f, 0x8f, 0x83, 0x8f, 0x85, 0x85, 0x1a, 0x7e, 0x7b, 0x88, 0x7f, + 0x81, 0x74, 0x8b, 0xac, 0x75, 0x1e, 0xce, 0x5f, 0x50, 0xac, 0x6b, 0x1b, + 0xf7, 0xb6, 0xf7, 0xec, 0x5, 0xca, 0xa, 0x8e, 0x94, 0xc3, 0xdd, 0x1e, + 0xf7, 0x1c, 0x6, 0xe, 0xdd, 0xa, 0xbe, 0xd6, 0x82, 0xd6, 0x13, 0xe0, + 0xf7, 0x47, 0xfb, 0x3a, 0x15, 0x6b, 0x93, 0x76, 0x9b, 0xb9, 0x1a, 0x13, + 0xd0, 0xb3, 0xcd, 0xf7, 0x61, 0xb4, 0x1a, 0xb3, 0x69, 0x9b, 0x78, 0x93, + 0x1e, 0x8c, 0x8d, 0xcf, 0x9c, 0xa2, 0xb2, 0x9e, 0xd3, 0x19, 0xb8, 0xf7, + 0x3c, 0x5, 0xe6, 0xa3, 0xc0, 0xac, 0xab, 0x1b, 0x8e, 0x96, 0x5, 0x2f, + 0x50, 0x7c, 0xfb, 0xc, 0x69, 0x1f, 0x5a, 0xfb, 0x3e, 0x79, 0x4b, 0x77, + 0x5e, 0x45, 0x79, 0x19, 0xb6, 0x7d, 0x94, 0x78, 0x6d, 0x1a, 0x13, 0xe0, + 0x52, 0x49, 0xfb, 0x49, 0x5a, 0x1a, 0x54, 0xaa, 0x70, 0xe9, 0x1e, 0xe, + 0x39, 0xfb, 0x27, 0x76, 0xf7, 0x3f, 0xe0, 0xa, 0x9a, 0xfb, 0x3c, 0x15, + 0xb6, 0x6, 0xf7, 0x6c, 0xf9, 0xd6, 0x5, 0x62, 0x6, 0xe, 0xdd, 0xa, + 0xf7, 0xa6, 0xd6, 0x42, 0xd6, 0x13, 0xd0, 0x87, 0xfb, 0x3a, 0x15, 0x88, + 0x80, 0x5, 0xe7, 0xc9, 0x9a, 0xf7, 0xc, 0xac, 0x1f, 0xba, 0xf7, 0x3e, + 0x9c, 0xcb, 0xa0, 0xb8, 0xd1, 0x9d, 0x19, 0x60, 0x99, 0x82, 0x9e, 0xa9, + 0x1a, 0x13, 0xe0, 0xc4, 0xcd, 0xf7, 0x49, 0xbc, 0x1a, 0xc2, 0x6c, 0xa6, + 0x2d, 0x1e, 0x88, 0x80, 0x5, 0xa1, 0xaa, 0x73, 0x5d, 0x1f, 0x13, 0xd0, + 0x63, 0x49, 0xfb, 0x61, 0x62, 0x1a, 0x63, 0xad, 0x7b, 0x9e, 0x83, 0x1e, + 0x8a, 0x89, 0x47, 0x7a, 0x74, 0x64, 0x78, 0x43, 0x19, 0x5e, 0xfb, 0x3c, + 0x5, 0x31, 0x73, 0x56, 0x69, 0x6b, 0x1b, 0xe, 0xf7, 0x4c, 0xf7, 0x4f, + 0xcb, 0x5c, 0x76, 0xd3, 0xcb, 0x8f, 0x77, 0x12, 0xb3, 0xf8, 0x62, 0x13, + 0x68, 0xd7, 0xf7, 0x4b, 0x15, 0xae, 0x9b, 0xa3, 0xb0, 0xb7, 0x1b, 0xb9, + 0xa9, 0x7d, 0x7b, 0xa7, 0x1f, 0x13, 0x98, 0x79, 0xac, 0xa9, 0x77, 0xbd, + 0x1b, 0xc9, 0xac, 0xb7, 0xb5, 0xa9, 0x1f, 0x67, 0xbd, 0x5, 0x68, 0x74, + 0x72, 0x66, 0x63, 0x1b, 0x69, 0x6c, 0x99, 0x9b, 0x6c, 0x1f, 0x13, 0x68, + 0x9d, 0x67, 0x66, 0x9f, 0x5f, 0x1b, 0x48, 0x67, 0x5f, 0x61, 0x75, 0x1f, + 0xe, 0xab, 0xfb, 0x4c, 0x76, 0xf8, 0xd0, 0xf5, 0x1, 0xf7, 0x6c, 0xf5, + 0x3, 0xf7, 0x6c, 0xf8, 0x38, 0x15, 0x6e, 0xa3, 0x73, 0xa8, 0xa8, 0xa3, + 0xa3, 0xa8, 0xa8, 0x73, 0xa3, 0x6e, 0x6e, 0x73, 0x73, 0x6e, 0x1e, 0x94, + 0xfb, 0x1a, 0x15, 0x51, 0xfb, 0x32, 0x58, 0xfb, 0xa, 0x5f, 0xfb, 0x10, + 0x8, 0x84, 0x78, 0x85, 0x7d, 0x7c, 0x1a, 0x75, 0x9e, 0x76, 0x9d, 0xb5, + 0x95, 0x9c, 0xc0, 0x96, 0x1e, 0xa5, 0xf7, 0x10, 0xa2, 0xf7, 0x18, 0xad, + 0xf7, 0x35, 0x8, 0xe, 0x81, 0xae, 0x80, 0x76, 0xf8, 0x3c, 0xa2, 0x12, + 0xd8, 0xe1, 0x13, 0xb0, 0xf7, 0x1d, 0xfb, 0x23, 0xb7, 0xa, 0xba, 0xf7, + 0x19, 0x5, 0xf7, 0x16, 0xb5, 0xdb, 0xa5, 0xa5, 0x1f, 0x7b, 0x95, 0x5, + 0x64, 0x69, 0x57, 0x61, 0x57, 0x1b, 0x13, 0x70, 0x81, 0x80, 0x8c, 0x8e, + 0x81, 0x1f, 0xf7, 0x1d, 0xf8, 0x1b, 0x5, 0x9c, 0x9d, 0x85, 0x7d, 0x82, + 0x87, 0x82, 0x87, 0x81, 0x1f, 0x88, 0x82, 0x87, 0x81, 0x7f, 0x97, 0xa, + 0xa9, 0x74, 0xbd, 0x3e, 0x1e, 0xb5, 0xf7, 0xc, 0x5, 0x6d, 0x6, 0x61, + 0xfb, 0xc, 0x5, 0x13, 0x50, 0xfb, 0x12, 0xfb, 0x1f, 0xfb, 0x32, 0xfb, + 0x1b, 0x1f, 0x13, 0x70, 0xfb, 0x6, 0xd3, 0x63, 0xaf, 0x1e, 0x9c, 0xbb, + 0x15, 0x71, 0x9e, 0x7e, 0xaf, 0xbe, 0x1a, 0xf2, 0xe2, 0xf7, 0x3b, 0xdf, + 0x1e, 0xe, 0x7b, 0xa1, 0x7f, 0xd3, 0xa9, 0xa7, 0xf7, 0x61, 0xb5, 0xf7, + 0xa2, 0xa8, 0x12, 0x13, 0xb8, 0xf7, 0x34, 0xf7, 0x7, 0x15, 0x96, 0x63, + 0x8b, 0x8b, 0x76, 0x1b, 0x49, 0x74, 0x5f, 0x79, 0x59, 0xa7, 0x77, 0xb2, + 0xb7, 0xa7, 0xaf, 0xa6, 0xa1, 0x1f, 0x4e, 0xd6, 0xb3, 0x89, 0xaa, 0x1b, + 0xf3, 0xad, 0xe5, 0x92, 0x8d, 0x1f, 0x80, 0x94, 0x5, 0x13, 0x78, 0x70, + 0x66, 0x66, 0x84, 0x68, 0x1b, 0x56, 0x55, 0x9d, 0x9f, 0x6a, 0x1f, 0xb8, + 0xec, 0x91, 0xa4, 0xa4, 0xf2, 0x8, 0xf7, 0x12, 0x6, 0x92, 0xb5, 0x5, + 0xfb, 0xf, 0x6, 0x9d, 0xed, 0x96, 0xc9, 0xa3, 0xc2, 0x8, 0xa1, 0x95, + 0x9b, 0xac, 0xb4, 0x1b, 0xa2, 0x97, 0x7e, 0x6c, 0x8f, 0x1f, 0x6d, 0x8e, + 0x93, 0x7d, 0xa4, 0x1b, 0x9e, 0x9f, 0x93, 0xad, 0xb1, 0x6b, 0xb0, 0x50, + 0xfb, 0x3e, 0x56, 0xfb, 0x76, 0x42, 0x82, 0x1f, 0xfb, 0x2, 0x6, 0x82, + 0x61, 0x5, 0xf7, 0x5, 0x6, 0x61, 0xfb, 0x94, 0x15, 0x13, 0xb8, 0x6c, + 0x83, 0x67, 0x71, 0x73, 0x1b, 0x69, 0x7f, 0xa0, 0x9b, 0x90, 0x8e, 0xb3, + 0xbd, 0xa5, 0x99, 0x81, 0x7c, 0xa0, 0x1f, 0xe, 0xf7, 0x18, 0xc4, 0xf7, + 0xa4, 0xc4, 0x1, 0xc4, 0xc8, 0xf7, 0x9c, 0xc8, 0x3, 0xf7, 0xa, 0xf7, + 0xda, 0x15, 0xd3, 0xc4, 0xca, 0xd7, 0xd6, 0xc3, 0x4c, 0x43, 0x41, 0x53, + 0x4c, 0x40, 0x3f, 0x52, 0xca, 0xd5, 0x1e, 0x47, 0xfb, 0x8a, 0x15, 0xe2, + 0xe3, 0x5, 0x73, 0xa5, 0xb9, 0x7f, 0xb7, 0x1b, 0xb6, 0xb5, 0x97, 0xa3, + 0xa4, 0x1f, 0xe4, 0x33, 0xb6, 0xb8, 0x34, 0xe2, 0x5, 0xa2, 0xa6, 0x97, + 0xb6, 0xb6, 0x1a, 0xb6, 0x80, 0xb6, 0x73, 0xa6, 0x1e, 0xe2, 0xe4, 0x60, + 0xb6, 0x32, 0x34, 0x5, 0xa3, 0x71, 0x5f, 0x96, 0x60, 0x1b, 0x60, 0x5f, + 0x7f, 0x74, 0x71, 0x1f, 0x34, 0xe2, 0x5e, 0x60, 0xe3, 0x32, 0x5, 0x73, + 0x71, 0x7f, 0x5f, 0x5f, 0x1a, 0x60, 0x97, 0x60, 0xa3, 0x71, 0x1e, 0x33, + 0x34, 0x5, 0xe, 0xa0, 0x76, 0xf7, 0x4a, 0xb3, 0xe5, 0xb3, 0xf7, 0xc1, + 0x77, 0x1, 0xbf, 0x16, 0xf7, 0xb1, 0x9b, 0x6, 0x53, 0x6a, 0xa0, 0xb7, + 0x91, 0x8c, 0x91, 0x8d, 0x91, 0x1f, 0x92, 0xa7, 0x8f, 0x96, 0x99, 0xb7, + 0x8, 0xf7, 0x48, 0x6, 0x97, 0xb3, 0x5, 0xfb, 0x48, 0x6, 0xa3, 0xdd, + 0x91, 0x93, 0x5, 0xf7, 0x3e, 0x6, 0x97, 0xb3, 0x5, 0xfb, 0x2b, 0x6, + 0xf7, 0x32, 0xf7, 0x74, 0x5, 0xb3, 0xab, 0xaa, 0xa0, 0x95, 0x1b, 0xe8, + 0xa, 0xa8, 0xab, 0x7c, 0x74, 0x84, 0x89, 0x83, 0x87, 0x83, 0x1f, 0x77, + 0x64, 0x35, 0xfb, 0x1a, 0x5c, 0x53, 0x72, 0xe7, 0x61, 0xf5, 0x86, 0xa5, + 0x8, 0x89, 0x95, 0x8a, 0x94, 0x93, 0x1a, 0xaa, 0x9f, 0x93, 0xbf, 0xcd, + 0xa, 0xa3, 0xb7, 0x8d, 0x47, 0x9f, 0x1f, 0xd4, 0xfb, 0x6f, 0x5, 0xfb, + 0x20, 0x6, 0x7f, 0x63, 0x5, 0xf7, 0x37, 0x6, 0x8e, 0x81, 0x74, 0x3b, + 0x5, 0xfb, 0x38, 0x6, 0x7f, 0x63, 0x5, 0xf7, 0x39, 0x6, 0x73, 0x39, + 0x5, 0x48, 0x77, 0x50, 0x7a, 0x6a, 0x1b, 0xe, 0x39, 0x8e, 0xe0, 0xa, + 0xf7, 0x36, 0xf8, 0x1c, 0x15, 0xb3, 0x6, 0xdd, 0xf7, 0xa6, 0x5, 0x65, + 0x6, 0xfb, 0x5d, 0xfd, 0x40, 0x15, 0xb5, 0x6, 0xd5, 0xf7, 0x93, 0x5, + 0x5e, 0x6, 0xe, 0xfb, 0x29, 0xa0, 0xf7, 0x78, 0xa0, 0xf7, 0x9f, 0xa0, + 0xe8, 0xf7, 0x38, 0x7c, 0xa0, 0x12, 0xc0, 0xf2, 0x49, 0xc4, 0xb0, 0xc8, + 0xb5, 0xc5, 0xab, 0xc5, 0x13, 0xed, 0xc0, 0xf7, 0xae, 0xf3, 0x15, 0x8d, + 0x8e, 0x5, 0x86, 0x96, 0x90, 0x89, 0xa0, 0x1b, 0xcf, 0xb9, 0xc2, 0xd1, + 0xc5, 0x70, 0xb3, 0x7d, 0x9c, 0x1f, 0xfb, 0xf, 0xf7, 0x2a, 0x5, 0x7c, + 0x9e, 0x80, 0xa3, 0xa7, 0x1a, 0xca, 0xba, 0xa0, 0xbb, 0xac, 0xa3, 0x7c, + 0x7b, 0x81, 0x80, 0x82, 0x82, 0x7f, 0x1e, 0x83, 0x81, 0x85, 0x80, 0x7b, + 0x1a, 0x13, 0xf3, 0xc0, 0x79, 0x98, 0x71, 0xac, 0xb6, 0x94, 0xb7, 0xa0, + 0xc0, 0x5c, 0xb9, 0x38, 0x41, 0x42, 0x61, 0x37, 0x5e, 0xa3, 0x60, 0xb6, + 0x58, 0x1e, 0x89, 0x88, 0x5, 0x95, 0x76, 0x70, 0x8c, 0x86, 0x1b, 0x55, + 0x57, 0x5a, 0x3d, 0x60, 0xa4, 0x56, 0xb9, 0x56, 0x1f, 0xd7, 0x34, 0x5, + 0xb6, 0x5a, 0x92, 0x76, 0x6f, 0x1a, 0x5a, 0x66, 0x63, 0x47, 0x67, 0x6b, + 0x9e, 0x9c, 0x95, 0x95, 0x92, 0x95, 0x94, 0x1e, 0x13, 0xed, 0xc0, 0x96, + 0x95, 0x96, 0x97, 0xa4, 0x1a, 0xad, 0x73, 0x95, 0x75, 0x52, 0x8b, 0x51, + 0x80, 0x5c, 0xba, 0x51, 0xe7, 0xd5, 0xda, 0xbe, 0xdf, 0xbe, 0x76, 0xa5, + 0x61, 0xc1, 0x1e, 0x13, 0xeb, 0xc0, 0xfb, 0x1b, 0xf7, 0x6e, 0x15, 0xb5, + 0xae, 0xa3, 0xa9, 0xa9, 0xa6, 0x80, 0x4a, 0xbe, 0x1e, 0xbf, 0x49, 0x90, + 0x6e, 0x71, 0x1a, 0x58, 0x5f, 0x78, 0x75, 0x52, 0x20, 0xf7, 0x17, 0xd1, + 0x1e, 0xe, 0x73, 0xf8, 0x90, 0xed, 0x1, 0xf6, 0xc6, 0xa, 0x3, 0xf6, + 0xf8, 0xc1, 0x23, 0xa, 0xf8, 0x27, 0x79, 0xb5, 0xf7, 0x4, 0x9f, 0xf7, + 0xef, 0x9f, 0xf0, 0xb5, 0x1, 0xb4, 0xc2, 0xea, 0xd8, 0xf7, 0x89, 0x9b, + 0xf7, 0x1b, 0xc2, 0x3, 0xb4, 0xf7, 0xd7, 0x15, 0xfb, 0x51, 0xf7, 0x29, + 0xfb, 0x2c, 0xf7, 0x54, 0xf7, 0x52, 0xf7, 0x27, 0xf7, 0x2c, 0xf7, 0x51, + 0xf7, 0x51, 0xfb, 0x27, 0xf7, 0x2e, 0xfb, 0x52, 0xfb, 0x54, 0xfb, 0x29, + 0xfb, 0x2e, 0xfb, 0x51, 0x1e, 0xc2, 0x16, 0xf7, 0x33, 0xf7, 0x11, 0xf7, + 0x22, 0xf7, 0x35, 0xf7, 0x32, 0xf7, 0x10, 0xfb, 0x21, 0xfb, 0x34, 0xfb, + 0x33, 0xfb, 0x11, 0xfb, 0x20, 0xfb, 0x31, 0xfb, 0x34, 0xfb, 0x12, 0xf7, + 0x20, 0xf7, 0x33, 0x1e, 0xf8, 0x47, 0x42, 0x15, 0x5e, 0x78, 0x66, 0x5a, + 0x49, 0x1b, 0x26, 0x62, 0xd7, 0xf3, 0x8c, 0x1f, 0xeb, 0x8c, 0xb5, 0xd2, + 0xe8, 0x1b, 0xd8, 0xa6, 0x5d, 0x61, 0x90, 0x1f, 0x9b, 0xd0, 0x6, 0x93, + 0x86, 0x93, 0x7b, 0x90, 0x1e, 0x93, 0x71, 0x72, 0x95, 0x59, 0x1b, 0xfb, + 0x2a, 0x49, 0xfb, 0x1, 0x39, 0xfb, 0x20, 0xea, 0x53, 0xf7, 0x6, 0xb9, + 0xb2, 0x95, 0x92, 0x9e, 0x1f, 0x9b, 0x8f, 0x94, 0x8e, 0x8c, 0x97, 0x9c, + 0xd9, 0x18, 0xe, 0x3a, 0xf8, 0x2a, 0xad, 0xf7, 0x80, 0x77, 0x12, 0xb5, + 0xd4, 0xf7, 0x26, 0xaf, 0x13, 0xe0, 0xf7, 0x87, 0xf8, 0x7a, 0x15, 0x80, + 0x70, 0x88, 0x7e, 0x7d, 0x1a, 0x81, 0x90, 0x7b, 0xa6, 0xa7, 0xa1, 0xa1, + 0xb7, 0xb2, 0x1e, 0x13, 0x70, 0x84, 0x95, 0x5, 0x6f, 0x71, 0x7e, 0x80, + 0x84, 0x1b, 0x86, 0x8e, 0x9a, 0x99, 0x8e, 0x1f, 0x13, 0xe0, 0x90, 0xa9, + 0xba, 0xf7, 0x3a, 0x8d, 0x92, 0x56, 0x8a, 0x18, 0x7f, 0x64, 0x5, 0x89, + 0x6, 0x9b, 0x89, 0x7a, 0xa4, 0x65, 0x1b, 0x35, 0x27, 0xfb, 0x3, 0x33, + 0x79, 0x92, 0x56, 0xd1, 0xb8, 0xac, 0x9d, 0xca, 0xb7, 0x1f, 0xfb, 0x12, + 0x89, 0x15, 0xbd, 0xcc, 0xf7, 0xf, 0xd2, 0x98, 0x90, 0x81, 0x64, 0x87, + 0x1e, 0x5a, 0x86, 0x57, 0xfb, 0xc, 0x4a, 0x1b, 0x83, 0x77, 0x95, 0xae, + 0x1f, 0xe, 0xce, 0xa, 0xc0, 0xf7, 0x6c, 0x68, 0xa, 0x93, 0x78, 0xbb, + 0x75, 0xbd, 0x1f, 0x81, 0xa2, 0x80, 0xa3, 0x81, 0x9e, 0xa1, 0xa2, 0x9e, + 0x9f, 0x9b, 0x9c, 0x8, 0xd6, 0xdc, 0x99, 0xa2, 0x99, 0x69, 0xa, 0xf7, + 0x36, 0x82, 0x68, 0xa, 0x93, 0x76, 0xc2, 0x73, 0xc0, 0x1f, 0x82, 0x9f, + 0x82, 0x9e, 0x82, 0x9c, 0xa2, 0xa3, 0x9f, 0xa0, 0x9c, 0x9d, 0x8, 0xd4, + 0xd9, 0x98, 0xa2, 0x99, 0x69, 0xa, 0xe, 0xf7, 0xd2, 0xf7, 0x15, 0x76, + 0xf7, 0x84, 0xb1, 0x12, 0xf8, 0x92, 0xcf, 0x6d, 0xb5, 0x13, 0xe0, 0xe1, + 0xf7, 0xf0, 0x15, 0x13, 0xd0, 0xf8, 0x62, 0xfb, 0x84, 0xb5, 0xf7, 0xaa, + 0xfc, 0x8c, 0x6, 0xe, 0xf8, 0x27, 0x79, 0xb5, 0xf7, 0xe, 0x9a, 0x7c, + 0xf7, 0x35, 0xfb, 0x35, 0xf7, 0x47, 0xfb, 0x3e, 0xf7, 0x3e, 0xf7, 0x3b, + 0xf7, 0x42, 0x51, 0xb5, 0x71, 0xb5, 0x12, 0xb4, 0xc2, 0x5f, 0xc2, 0xf7, + 0x36, 0xcb, 0xf3, 0xce, 0x4e, 0xce, 0xf7, 0x2e, 0xc2, 0x13, 0x92, 0x74, + 0xf7, 0xe1, 0xf7, 0xd9, 0x15, 0x13, 0x94, 0x74, 0xf7, 0x3b, 0xb4, 0x7, + 0x13, 0x92, 0x6c, 0xb1, 0xaa, 0x78, 0x52, 0x56, 0x78, 0x65, 0x5a, 0x1f, + 0x13, 0x92, 0xb4, 0xfb, 0xe2, 0x16, 0xfb, 0x51, 0xf7, 0x29, 0xfb, 0x2e, + 0xf7, 0x54, 0xf7, 0x52, 0xf7, 0x27, 0xf7, 0x2f, 0xf7, 0x51, 0x1e, 0x13, + 0x91, 0x74, 0xf7, 0x51, 0xfb, 0x27, 0xf7, 0x2b, 0xfb, 0x52, 0x1e, 0x13, + 0x92, 0xb4, 0xfb, 0x54, 0xfb, 0x29, 0xfb, 0x2c, 0xfb, 0x51, 0x1f, 0xc2, + 0x16, 0x13, 0x91, 0x74, 0xf7, 0x33, 0xf7, 0x11, 0xf7, 0x20, 0xf7, 0x35, + 0xf7, 0x32, 0xf7, 0x10, 0xfb, 0x1e, 0xfb, 0x34, 0xfb, 0x33, 0xfb, 0x11, + 0xfb, 0x23, 0xfb, 0x31, 0x1e, 0x13, 0x92, 0xb4, 0xfb, 0x34, 0xfb, 0x12, + 0xf7, 0x22, 0xf7, 0x33, 0x1f, 0xf7, 0x11, 0xfb, 0x47, 0x15, 0xf7, 0x34, + 0x6, 0x13, 0xc2, 0x74, 0x9a, 0x7, 0x59, 0x90, 0x8d, 0x8b, 0xb6, 0x1a, + 0x13, 0xa2, 0x74, 0xed, 0xba, 0x7, 0x2e, 0xca, 0xa4, 0x47, 0xab, 0x1b, + 0xca, 0x6, 0x13, 0x8a, 0x74, 0x94, 0x7, 0x78, 0x99, 0x6d, 0xad, 0x71, + 0xaf, 0x52, 0xd9, 0x18, 0x13, 0xc2, 0x6c, 0xb8, 0x9a, 0xad, 0xb1, 0xbe, + 0x1a, 0xc9, 0x54, 0xa7, 0x50, 0x1e, 0xfb, 0x43, 0x7c, 0x6, 0xbc, 0x86, + 0x8a, 0x8c, 0x5f, 0x1a, 0xfb, 0x83, 0x7, 0x60, 0x8c, 0x8b, 0x5a, 0x86, + 0x1e, 0xe, 0x73, 0xf8, 0xa8, 0xbe, 0x1, 0xee, 0xf7, 0xcc, 0x3, 0xee, + 0xf8, 0xa8, 0x15, 0xf7, 0xbf, 0x6, 0x98, 0xbe, 0x5, 0xfb, 0xbf, 0x6, + 0xe, 0xb6, 0xf8, 0x1a, 0xad, 0xf7, 0x6e, 0xad, 0x1, 0xf0, 0xb2, 0xf7, + 0x64, 0xb2, 0x3, 0xf7, 0x20, 0xf8, 0xab, 0x15, 0xc5, 0xb9, 0xbc, 0xc5, + 0xc5, 0xb9, 0x5c, 0x51, 0x51, 0x5d, 0x54, 0x51, 0x51, 0x5d, 0xc0, 0xc5, + 0x1e, 0x64, 0x16, 0x3b, 0xca, 0x4a, 0xdb, 0xdb, 0xca, 0xce, 0xdb, 0xdb, + 0x4c, 0xc6, 0x3b, 0x3b, 0x4c, 0x4e, 0x3b, 0x1e, 0xe, 0xf7, 0xd2, 0x8b, + 0xce, 0xf7, 0x69, 0xcf, 0x54, 0xb8, 0xf7, 0x3c, 0x77, 0x12, 0xf7, 0xc5, + 0xcf, 0x53, 0xb6, 0x13, 0xd8, 0xe1, 0x16, 0xf8, 0x8c, 0xb5, 0xfc, 0x8c, + 0x6, 0x13, 0xb8, 0xf7, 0x8f, 0x4, 0x13, 0xb4, 0xf7, 0x7b, 0xfb, 0x3f, + 0xb6, 0xf7, 0x3f, 0xf7, 0x7a, 0xb8, 0xfb, 0x7a, 0xf7, 0x3c, 0x60, 0xfb, + 0x3c, 0xfb, 0x7b, 0x6, 0xe, 0x52, 0xf7, 0xa3, 0xc0, 0xf7, 0xc1, 0xbe, + 0x1, 0xac, 0xf7, 0xa3, 0xc1, 0xa, 0x77, 0x7e, 0x60, 0x1b, 0x29, 0x95, + 0xa, 0xc2, 0x46, 0x79, 0x36, 0x89, 0x75, 0xa, 0xe, 0x52, 0xf7, 0xa0, + 0xb2, 0x64, 0xd8, 0xf7, 0x24, 0x94, 0x82, 0xf7, 0x4f, 0x6b, 0xab, 0x12, + 0xf7, 0x82, 0xca, 0x6e, 0xce, 0x13, 0x54, 0xf7, 0x11, 0xf8, 0x7d, 0x15, + 0xc3, 0xc4, 0x79, 0x37, 0x47, 0x4e, 0x77, 0x75, 0x7c, 0x84, 0x95, 0x95, + 0x83, 0x1f, 0x98, 0x81, 0x80, 0x98, 0x70, 0x1b, 0x13, 0xac, 0x6c, 0x88, + 0xa5, 0xa, 0x7b, 0x93, 0x1f, 0x87, 0x8d, 0x5, 0x13, 0x6a, 0xc9, 0xa, + 0x66, 0x5a, 0x72, 0x67, 0x7b, 0x1e, 0x83, 0xa, 0x73, 0xf8, 0x97, 0x76, + 0xf7, 0x3e, 0x77, 0x1, 0xf7, 0x48, 0xad, 0xa, 0xf7, 0x33, 0xeb, 0x9f, + 0xa, 0x9d, 0x9c, 0x9a, 0x1a, 0x9d, 0x7d, 0x9c, 0x76, 0x80, 0x76, 0x7d, + 0x9d, 0xa, 0xe, 0xfb, 0x50, 0x76, 0xf7, 0x5b, 0xc2, 0xf8, 0x13, 0x77, + 0x1, 0x6d, 0xf4, 0xf7, 0x99, 0xde, 0x3, 0xd9, 0xc7, 0x15, 0x4f, 0x9d, + 0xbf, 0x81, 0xaa, 0x1b, 0xbe, 0xcc, 0xb9, 0xbe, 0xb2, 0x1f, 0x8d, 0x6, + 0x89, 0x81, 0x85, 0x77, 0x81, 0x1a, 0x68, 0x9d, 0x75, 0xaf, 0xaf, 0xa9, + 0x95, 0xba, 0xb7, 0x1e, 0x8e, 0x94, 0x5, 0x76, 0x71, 0x7b, 0x86, 0x7c, + 0x1b, 0x67, 0x98, 0xb4, 0xa0, 0x8f, 0x1f, 0xd9, 0xf7, 0xe4, 0x5, 0x33, + 0x6, 0x47, 0xfb, 0xc3, 0x5, 0x72, 0x7a, 0x53, 0x54, 0x58, 0x1b, 0x4f, + 0x77, 0xb8, 0xc1, 0x96, 0x1f, 0xce, 0xf7, 0xb0, 0x5, 0x33, 0x6, 0x36, + 0xfc, 0xa, 0x84, 0x6b, 0x7f, 0x68, 0x7c, 0x6a, 0x19, 0x7d, 0x6c, 0x73, + 0x66, 0x5a, 0x1a, 0x72, 0x91, 0x76, 0xa7, 0xcb, 0x92, 0xf7, 0x0, 0xaf, + 0xb4, 0x87, 0xb4, 0x8f, 0xb6, 0x1e, 0xe, 0xf7, 0x3a, 0xfb, 0x57, 0x76, + 0xf9, 0xe7, 0xa6, 0x1, 0xf7, 0x17, 0xfb, 0x6c, 0x15, 0xaf, 0x6, 0xf7, + 0x88, 0xf9, 0xe7, 0x5, 0xe6, 0x6, 0xfb, 0x88, 0xfd, 0xe7, 0x5, 0xae, + 0x6, 0xf7, 0x88, 0xf9, 0xe7, 0x5, 0xcc, 0x6, 0x93, 0xa6, 0x5, 0xfb, + 0x7a, 0x6, 0xfb, 0x8a, 0x5c, 0xfb, 0x44, 0x4c, 0xfb, 0x4, 0xed, 0x7a, + 0xe7, 0x1f, 0xe, 0x20, 0xf7, 0x5b, 0xf7, 0x3, 0x1, 0xd1, 0xf7, 0x3, + 0x3, 0xd1, 0xf7, 0x92, 0x84, 0xa, 0x73, 0xfb, 0x6d, 0xaf, 0xf7, 0x49, + 0x77, 0x1, 0xf7, 0x0, 0xd5, 0x3, 0xdc, 0x16, 0x4c, 0x21, 0x94, 0x83, + 0x5, 0x91, 0x96, 0x9b, 0x8e, 0x99, 0x1b, 0xa0, 0x9e, 0x81, 0x74, 0x6f, + 0x6b, 0x7c, 0x68, 0x78, 0x77, 0x8f, 0x95, 0x7c, 0x1f, 0x7a, 0x6e, 0x5, + 0x7e, 0xa3, 0xaf, 0x83, 0xaf, 0x1b, 0xc6, 0xc4, 0xa2, 0xcb, 0xb5, 0x67, + 0xa4, 0x64, 0x80, 0x80, 0x8b, 0x88, 0x81, 0x1f, 0xb7, 0xcd, 0x5, 0xe, + 0x52, 0xf7, 0xa3, 0x9b, 0xf7, 0x6, 0x76, 0xf7, 0xbc, 0x77, 0x1, 0xb6, + 0xf7, 0x7f, 0x3, 0xb6, 0xf7, 0xa3, 0x15, 0xf7, 0x49, 0x9b, 0x6, 0x68, + 0x7e, 0x96, 0x9b, 0x9c, 0x96, 0xa4, 0x96, 0xae, 0x1f, 0xdd, 0xf7, 0x9c, + 0x5, 0x8e, 0x92, 0x8c, 0x90, 0x8f, 0x1a, 0x8e, 0x89, 0x8d, 0x87, 0x83, + 0x2e, 0x78, 0x88, 0x6e, 0x1e, 0x78, 0x7, 0x8c, 0x9b, 0x97, 0x8b, 0x93, + 0x1b, 0x97, 0x91, 0x86, 0x82, 0x83, 0x8a, 0x81, 0x88, 0x84, 0x1f, 0x4c, + 0xfb, 0x63, 0x73, 0x3b, 0x83, 0x84, 0x4f, 0x7b, 0x19, 0xe, 0x5c, 0xf7, + 0xb9, 0xa3, 0xe4, 0xa3, 0xf7, 0x5d, 0xa1, 0x8c, 0xa1, 0x1, 0xce, 0xd4, + 0xf7, 0x29, 0xd4, 0x3, 0xce, 0xf8, 0x82, 0x15, 0xe3, 0xe8, 0xe9, 0xef, + 0xd8, 0xa4, 0x59, 0x63, 0x40, 0x34, 0x22, 0x23, 0x43, 0x6b, 0xb0, 0xbe, + 0x1e, 0xd4, 0x81, 0x15, 0x6c, 0x97, 0x74, 0xa7, 0xcf, 0xb4, 0xf7, 0xb, + 0xbe, 0xa6, 0x84, 0xa6, 0x70, 0x48, 0x5b, 0xfb, 0x4, 0x51, 0x1e, 0xe, + 0xce, 0xa, 0xc2, 0xf8, 0x1c, 0x3, 0xf7, 0xff, 0xf7, 0x73, 0x15, 0x49, + 0xa, 0xfb, 0x36, 0x16, 0x49, 0xa, 0xe, 0xd9, 0xa, 0xf7, 0x10, 0x9b, + 0xf8, 0x19, 0x77, 0x12, 0xac, 0xf9, 0x53, 0x13, 0x68, 0x67, 0xa, 0x13, + 0xbc, 0x94, 0xa, 0x13, 0xa8, 0xfb, 0xb2, 0xfb, 0x31, 0x8c, 0xa, 0xfc, + 0xc9, 0xfc, 0x29, 0x15, 0xf7, 0x49, 0x6, 0x13, 0x10, 0x9b, 0x7, 0x13, + 0x1c, 0x71, 0x74, 0x95, 0x9d, 0x8d, 0x8b, 0x8d, 0xf4, 0xf7, 0xe4, 0x1f, + 0x8d, 0x92, 0x8d, 0x8f, 0x8f, 0x1a, 0x8e, 0x8a, 0x8e, 0x86, 0xdc, 0xa, + 0x8c, 0x9c, 0x97, 0x8b, 0x93, 0x1b, 0xa7, 0x80, 0x72, 0x7d, 0x87, 0x1f, + 0x32, 0xfb, 0xa7, 0x85, 0x78, 0x71, 0x7f, 0x69, 0x87, 0x19, 0xe, 0xf8, + 0x1d, 0x8b, 0xc0, 0x61, 0x76, 0xf8, 0x0, 0xbf, 0xf7, 0xa2, 0x77, 0x12, + 0xad, 0xf7, 0x83, 0xfb, 0x24, 0xbe, 0xf8, 0x8c, 0xcc, 0x13, 0x76, 0xf7, + 0x15, 0x81, 0x8c, 0xa, 0x13, 0xba, 0xfb, 0x12, 0xfd, 0x38, 0xc1, 0xa, + 0x81, 0x7e, 0x60, 0x1b, 0xfb, 0x0, 0x95, 0xa, 0xc3, 0x46, 0x79, 0x36, + 0x88, 0x75, 0xa, 0xfc, 0x3c, 0xf7, 0x91, 0x15, 0xf7, 0x48, 0x6, 0x13, + 0x0, 0x9b, 0x7, 0x13, 0x18, 0x72, 0x6e, 0x96, 0x9b, 0x90, 0x1f, 0xc8, + 0xf7, 0x5d, 0xba, 0xf7, 0x2d, 0x88, 0x1a, 0x8e, 0x8d, 0x93, 0x84, 0xdc, + 0xa, 0xb0, 0x8c, 0x5, 0x99, 0x8f, 0x86, 0x82, 0x7e, 0x89, 0x88, 0x2f, + 0xfb, 0xb0, 0x1f, 0x85, 0x78, 0x72, 0x7f, 0x69, 0x87, 0x8, 0xe, 0xd9, + 0xa, 0xf7, 0xea, 0xf7, 0x4f, 0x12, 0xf7, 0x6e, 0xca, 0x6e, 0xce, 0x13, + 0x78, 0x67, 0xa, 0x94, 0xa, 0x13, 0xb8, 0xfb, 0xb1, 0xfb, 0x31, 0x8c, + 0xa, 0xfc, 0x82, 0xfb, 0x4f, 0x15, 0xc3, 0xc4, 0x7e, 0x32, 0x47, 0x4e, + 0x77, 0x75, 0x7a, 0x7f, 0x98, 0x97, 0x7f, 0x1f, 0x96, 0x80, 0x80, 0x95, + 0x7d, 0x1b, 0x68, 0x8b, 0xa5, 0xa, 0x77, 0x95, 0x1f, 0x13, 0x74, 0xc9, + 0xa, 0x1e, 0x13, 0x4, 0x66, 0x5a, 0x72, 0x67, 0x7b, 0x1f, 0x83, 0xa, + 0xfb, 0x88, 0xa1, 0x12, 0xa5, 0xd5, 0xf7, 0x2c, 0xcb, 0x55, 0xf5, 0x13, + 0xe0, 0xf7, 0xb0, 0xf7, 0xb1, 0x15, 0x73, 0x26, 0x54, 0x5f, 0x60, 0x68, + 0x8, 0x26, 0x39, 0x6a, 0x6c, 0x45, 0x1a, 0x41, 0xc2, 0x56, 0xeb, 0x1e, + 0xd2, 0xcd, 0xb2, 0xd2, 0xa8, 0x7c, 0xa7, 0x73, 0x81, 0x6d, 0x86, 0x6d, + 0x80, 0x8f, 0x81, 0x8f, 0x81, 0x1f, 0x8f, 0x81, 0x8e, 0x81, 0x7f, 0x1a, + 0x5c, 0x4a, 0x8b, 0x86, 0x42, 0x84, 0xc6, 0xa4, 0xd6, 0xba, 0xba, 0xbc, + 0xc1, 0x1e, 0xba, 0xbf, 0xbb, 0xc6, 0x93, 0xea, 0x8, 0x13, 0xd0, 0x64, + 0xf7, 0x1b, 0x15, 0x6e, 0xa3, 0x85, 0xa, 0x73, 0x73, 0x6e, 0x1e, 0xe, + 0x88, 0xa, 0x58, 0x16, 0x9b, 0xa, 0x5f, 0x7d, 0xa0, 0xa3, 0x9d, 0x93, + 0xa8, 0xcf, 0xf7, 0xa, 0x1f, 0xf7, 0x70, 0x6, 0xa2, 0xfb, 0x18, 0x8b, + 0x82, 0x82, 0x1a, 0x66, 0x74, 0x74, 0x53, 0x27, 0xa, 0xc7, 0xf8, 0x4e, + 0xb7, 0xa, 0xfb, 0x3, 0xf7, 0x27, 0xc5, 0xa, 0x79, 0x8d, 0x56, 0xa, + 0x9e, 0x7f, 0x80, 0xa, 0x88, 0xa, 0xf7, 0xd3, 0xf9, 0x56, 0x7f, 0xa, + 0xfc, 0xa3, 0xfd, 0xf1, 0xe7, 0xa, 0x64, 0x78, 0x9f, 0xa3, 0x9e, 0x94, + 0xa2, 0x96, 0xa0, 0x81, 0xa, 0xa1, 0xfb, 0x11, 0x8c, 0x83, 0x82, 0x1a, + 0x61, 0x78, 0x71, 0x4f, 0x27, 0xa, 0xe, 0x5a, 0xa, 0xf7, 0x75, 0x77, + 0x1, 0x58, 0xf8, 0xfb, 0x3, 0xf7, 0x7f, 0x46, 0xa, 0xfc, 0x4f, 0xfd, + 0xfd, 0xe7, 0xa, 0x63, 0x79, 0x9f, 0xa4, 0x9e, 0x94, 0xa1, 0x96, 0xa0, + 0x81, 0xa, 0xa3, 0xfb, 0x16, 0x8a, 0x82, 0x83, 0x1a, 0x67, 0x71, 0x70, + 0x56, 0x35, 0xa, 0x82, 0x68, 0x7c, 0x19, 0xf7, 0x76, 0xf7, 0x8b, 0x4c, + 0xa, 0xe, 0x5a, 0xa, 0xdf, 0xac, 0xa, 0x13, 0xf4, 0xf7, 0x83, 0xf9, + 0x6d, 0x65, 0xa, 0x73, 0x97, 0x96, 0x71, 0x1f, 0x13, 0xe8, 0x95, 0x73, + 0x72, 0x95, 0x71, 0x6c, 0xa, 0xfb, 0xb6, 0xfd, 0x6d, 0xe7, 0xa, 0x64, + 0x78, 0x9d, 0xa4, 0x9e, 0x94, 0xa3, 0x96, 0xa0, 0x81, 0xa, 0xa1, 0xfb, + 0x12, 0x8c, 0x81, 0x84, 0x1a, 0x61, 0x70, 0x72, 0x57, 0x27, 0xa, 0xe, + 0x5a, 0xa, 0xd3, 0xed, 0x1, 0xf7, 0x8a, 0xc6, 0xa, 0x3, 0x58, 0x16, + 0x9b, 0xa, 0x65, 0x77, 0xa0, 0x9f, 0xa3, 0x94, 0x9f, 0x96, 0xa1, 0x81, + 0xa, 0xa1, 0xfb, 0xf, 0x8c, 0x7f, 0x84, 0x1a, 0x60, 0x72, 0x72, 0x55, + 0x27, 0xa, 0xfb, 0xf, 0xf8, 0x8f, 0x23, 0xa, 0x5a, 0xa, 0xae, 0xf7, + 0x3a, 0xab, 0xa, 0xf7, 0x39, 0x12, 0x58, 0xf7, 0x4f, 0xf7, 0x28, 0xad, + 0x69, 0xf7, 0x39, 0xab, 0xa, 0xf7, 0x3a, 0x13, 0xf2, 0x80, 0xf7, 0xb0, + 0xf9, 0xa3, 0x15, 0x54, 0xb8, 0x5e, 0xc2, 0x1e, 0x13, 0xe7, 0x20, 0xc2, + 0xb8, 0xb8, 0xc2, 0xc2, 0x5e, 0xb8, 0x54, 0x1f, 0x13, 0xf2, 0x80, 0x54, + 0x5e, 0x5e, 0x54, 0x1f, 0xad, 0x16, 0xb3, 0xa, 0x13, 0xeb, 0x40, 0xe5, + 0xa, 0xfc, 0x5, 0xfd, 0xa3, 0xe7, 0xa, 0x65, 0x77, 0xa0, 0x9f, 0xa3, + 0x94, 0x9f, 0x96, 0xa1, 0x81, 0xa, 0xa1, 0xfb, 0xf, 0x8c, 0x7f, 0x84, + 0x1a, 0x60, 0x72, 0x72, 0x55, 0x27, 0xa, 0xe, 0xf8, 0xa8, 0x8b, 0xac, + 0xf7, 0x5d, 0xb0, 0xc4, 0xe9, 0xa, 0x1, 0xf9, 0x88, 0x9d, 0x3, 0x70, + 0x16, 0x9b, 0xa, 0x6e, 0x6a, 0x9b, 0xa2, 0xb2, 0xe4, 0xe8, 0xad, 0xba, + 0x1f, 0xf7, 0x52, 0x6, 0x5d, 0xfb, 0x34, 0x7f, 0x63, 0x7b, 0x7f, 0x54, + 0x85, 0x19, 0x7b, 0xf8, 0x86, 0x7, 0xcb, 0xf7, 0x38, 0x79, 0x90, 0x5, + 0xfb, 0x3, 0x42, 0x49, 0x72, 0xfb, 0x21, 0x1b, 0x6d, 0x6, 0x65, 0x81, + 0x9f, 0x9f, 0x9d, 0xba, 0xf7, 0x36, 0xa0, 0xd6, 0x1f, 0xb3, 0x6, 0xeb, + 0xa1, 0x84, 0x5d, 0x7b, 0x88, 0x7a, 0x88, 0x7b, 0x1f, 0x9c, 0x87, 0xd0, + 0xf7, 0x7c, 0x79, 0x8f, 0x5, 0x2e, 0x60, 0x7c, 0x87, 0xfb, 0x2d, 0x1b, + 0xc8, 0xf7, 0x72, 0x5, 0xb0, 0x95, 0x94, 0x8b, 0xc7, 0x1b, 0xf7, 0x4e, + 0x81, 0x76, 0x2a, 0x1f, 0x9c, 0x89, 0xac, 0xf7, 0x2d, 0x5, 0xfc, 0x99, + 0x7c, 0x6, 0xbd, 0x87, 0x99, 0x8a, 0x72, 0x1a, 0x7d, 0x7a, 0x78, 0x7c, + 0x79, 0x1e, 0xfc, 0x16, 0xfc, 0x77, 0x71, 0x6b, 0x7a, 0x77, 0x73, 0x85, + 0x19, 0xf7, 0xa8, 0xf7, 0x93, 0x15, 0xf7, 0x97, 0xf7, 0xde, 0x5, 0x91, + 0x6, 0x2f, 0xfb, 0xde, 0x5, 0xe, 0xf7, 0xca, 0xfb, 0x58, 0x76, 0xf7, + 0x5d, 0xb6, 0xd4, 0xa, 0x13, 0xe8, 0xf7, 0x90, 0x21, 0x15, 0x93, 0x83, + 0x5, 0x91, 0x97, 0x9b, 0x8e, 0x9a, 0x1b, 0xa1, 0x9e, 0x81, 0x74, 0x6e, + 0x67, 0x7d, 0x67, 0x7a, 0x79, 0xde, 0xa, 0xa3, 0xb0, 0x83, 0xaf, 0x1b, + 0xc5, 0xc4, 0xa3, 0xca, 0xb5, 0x67, 0xa4, 0x64, 0x80, 0x81, 0x8b, 0x88, + 0x80, 0x1f, 0xac, 0xbd, 0x5, 0xf7, 0x1d, 0xde, 0xf4, 0xb5, 0xaf, 0x6f, + 0xa, 0x9d, 0x88, 0x5, 0x13, 0xd8, 0xb8, 0xa, 0x7f, 0x76, 0x92, 0x91, + 0x70, 0x1f, 0x13, 0xe8, 0x91, 0x73, 0x6e, 0x90, 0x6a, 0xd5, 0xa, 0xfb, + 0x4f, 0xf7, 0x14, 0x3a, 0xf7, 0x5, 0x1f, 0xe, 0x8d, 0xa, 0xf7, 0x73, + 0x77, 0x1, 0xf8, 0x24, 0x9f, 0xf7, 0x36, 0xa0, 0x3, 0x8b, 0xa, 0x68, + 0x6d, 0x98, 0xb2, 0x90, 0x8c, 0x90, 0x8c, 0x91, 0x1f, 0x8d, 0x97, 0x99, + 0x3c, 0xa, 0x7f, 0x80, 0xfb, 0x2f, 0x74, 0xa, 0xf7, 0x50, 0x86, 0x76, + 0x2a, 0x41, 0xa, 0xf8, 0x42, 0xf9, 0x44, 0xb7, 0xa, 0xfb, 0x1, 0xf7, + 0x22, 0xc5, 0xa, 0x77, 0x92, 0x56, 0xa, 0xa0, 0x7a, 0x80, 0xa, 0x8d, + 0xa, 0xf7, 0x73, 0x77, 0x1, 0xf8, 0xda, 0xa0, 0x3, 0xf7, 0xdd, 0xf9, + 0x56, 0x9e, 0xa, 0xf7, 0x38, 0xf0, 0x9f, 0xa, 0x98, 0x97, 0x47, 0xa, + 0x7c, 0x82, 0x9d, 0xa, 0xfc, 0x79, 0xfd, 0xf1, 0x34, 0xa, 0xf7, 0x92, + 0x8b, 0xac, 0xf7, 0xbb, 0xac, 0xf7, 0x99, 0xac, 0x89, 0xbe, 0xd1, 0xa, + 0xf8, 0x24, 0x9f, 0xf7, 0x36, 0xa0, 0x3, 0xf7, 0x98, 0x46, 0xa, 0xfc, + 0x36, 0xfd, 0xfd, 0x34, 0xa, 0x8d, 0xa, 0xce, 0xed, 0x1, 0xf7, 0x9e, + 0xc6, 0xa, 0x3, 0x8a, 0x16, 0x32, 0xa, 0x7f, 0x80, 0xfb, 0x2f, 0x74, + 0xa, 0xf7, 0x50, 0x86, 0x76, 0x2a, 0x41, 0xa, 0xf7, 0x9f, 0xf9, 0x85, + 0x23, 0xa, 0x73, 0x99, 0xa, 0x83, 0x16, 0x2a, 0xa, 0xf7, 0xbe, 0xf9, + 0x44, 0x77, 0xa, 0x73, 0x99, 0xa, 0xf7, 0x66, 0xf9, 0x56, 0x9e, 0xa, + 0xf7, 0x21, 0xee, 0x9f, 0xa, 0x9b, 0x99, 0x47, 0xa, 0x79, 0x80, 0x9d, + 0xa, 0xfb, 0xf2, 0xfd, 0xef, 0x15, 0x2a, 0xa, 0xe, 0x73, 0x9a, 0xa, + 0xbe, 0xd1, 0xa, 0x83, 0xf8, 0x45, 0x3, 0xf7, 0x17, 0x46, 0xa, 0xfb, + 0xbc, 0xfd, 0xfd, 0x15, 0x2a, 0xa, 0xe, 0x73, 0x87, 0xa, 0xe2, 0xed, + 0x1, 0xf7, 0x1d, 0xc6, 0xa, 0x3, 0x83, 0x16, 0x2a, 0xa, 0xf7, 0x25, + 0xf9, 0x85, 0x23, 0xa, 0xf8, 0x1, 0x8b, 0xa9, 0xf7, 0xbc, 0xb5, 0xf7, + 0x93, 0xa9, 0x1, 0xf7, 0x58, 0xee, 0xf7, 0xba, 0xf7, 0x3, 0x3, 0xb1, + 0xa, 0xf4, 0x4d, 0xf7, 0x35, 0xfb, 0x7a, 0x1f, 0xfb, 0xaa, 0x7b, 0x6, + 0xc4, 0x9d, 0x76, 0x6d, 0x7a, 0x87, 0x79, 0x86, 0x78, 0x1f, 0x5d, 0xfb, + 0x38, 0x5, 0x31, 0x6, 0x7f, 0x61, 0x5, 0xe5, 0x6, 0x5d, 0xfb, 0x38, + 0x5, 0x26, 0x6f, 0x86, 0x5e, 0x48, 0x1b, 0xf7, 0x8a, 0xf7, 0xca, 0x15, + 0xf7, 0x2d, 0x6, 0x97, 0xb5, 0x5, 0xfb, 0x2d, 0x6, 0xb8, 0xf7, 0x39, + 0x5, 0xc1, 0x9a, 0x8e, 0xaf, 0xcc, 0xb2, 0xa, 0x55, 0x7a, 0x9b, 0xa5, + 0xa2, 0x97, 0xaa, 0x95, 0xaf, 0x1f, 0xe, 0xf7, 0xca, 0x91, 0x76, 0xaf, + 0x76, 0xf9, 0x1e, 0xf7, 0x2f, 0xfb, 0x2c, 0x77, 0xee, 0xc7, 0x56, 0xf2, + 0x85, 0x77, 0x12, 0x13, 0x62, 0x77, 0xe4, 0xa, 0x56, 0x7c, 0xa0, 0xab, + 0x9c, 0x90, 0x9e, 0x91, 0xa1, 0x1f, 0xf7, 0x0, 0xf8, 0x26, 0x5, 0x8f, + 0x6, 0x13, 0xa2, 0xf7, 0x78, 0xfc, 0xb4, 0x5, 0x9d, 0x6, 0xf7, 0x2c, + 0xf8, 0xad, 0xa2, 0xdb, 0x9c, 0xa2, 0xc3, 0x97, 0x19, 0x13, 0x5a, 0xeb, + 0xa, 0x7, 0x13, 0x62, 0x7b, 0x7, 0xbd, 0x9b, 0x74, 0x6d, 0x78, 0x87, + 0x76, 0x85, 0x77, 0x1f, 0x29, 0xfc, 0x2, 0x5, 0x88, 0x6, 0x13, 0x5a, + 0xfb, 0x62, 0xf8, 0x83, 0x5, 0xfb, 0x35, 0x6, 0x13, 0x62, 0x7b, 0x7, + 0xbb, 0xa0, 0x78, 0x66, 0x9c, 0x1f, 0xfb, 0x13, 0xfc, 0x57, 0x76, 0x3f, + 0x78, 0x6d, 0x54, 0x83, 0x19, 0xf7, 0xbd, 0xf9, 0x5d, 0x60, 0xa, 0x9d, + 0xa9, 0x7f, 0x80, 0xa8, 0x1f, 0x13, 0x5a, 0x80, 0xa7, 0xa6, 0x81, 0x71, + 0xa, 0x77, 0x74, 0x96, 0x96, 0x71, 0x1f, 0x13, 0x54, 0x95, 0x73, 0x71, + 0x96, 0x71, 0xd6, 0xa, 0xbf, 0xa, 0xf7, 0x66, 0xa8, 0xa, 0xc7, 0xf7, + 0x77, 0x24, 0xa, 0xf7, 0xd4, 0xf8, 0x71, 0x77, 0xa, 0xbf, 0xa, 0xf7, + 0x66, 0xa8, 0xa, 0xf8, 0x33, 0xf9, 0x56, 0x5e, 0xa, 0xfc, 0x95, 0xfd, + 0xe, 0x24, 0xa, 0xe, 0xb6, 0xa, 0xac, 0xf8, 0xf7, 0xb1, 0x6c, 0xac, + 0x8b, 0xb1, 0xf7, 0x3d, 0xa8, 0xa, 0xf7, 0xd5, 0x46, 0xa, 0xfc, 0x36, + 0xfd, 0x1a, 0x24, 0xa, 0xe, 0xb6, 0xa, 0xac, 0xf8, 0xff, 0xac, 0xd0, + 0xf2, 0x88, 0x77, 0x12, 0x86, 0xa, 0x13, 0xec, 0xf7, 0xcf, 0xf9, 0x6d, + 0x60, 0xa, 0x9c, 0xa6, 0x81, 0x81, 0xa6, 0x1f, 0x7f, 0xa9, 0xa9, 0x7f, + 0x9e, 0x1b, 0x13, 0xdc, 0x43, 0xa, 0x78, 0x74, 0x96, 0x96, 0x72, 0x1f, + 0x13, 0xec, 0x96, 0x73, 0x70, 0x95, 0x70, 0x6c, 0xa, 0xfb, 0x93, 0xfc, + 0x8a, 0x24, 0xa, 0xe, 0xb6, 0xa, 0xac, 0xf8, 0xb8, 0xac, 0xf7, 0x14, + 0xed, 0x12, 0xc7, 0xf4, 0xf8, 0x8, 0xed, 0x62, 0xf4, 0x13, 0xf4, 0xc7, + 0xf7, 0x77, 0x24, 0xa, 0xf7, 0x40, 0xf8, 0xb2, 0x58, 0xa, 0x13, 0xf8, + 0x25, 0xa, 0xf7, 0xd2, 0xa8, 0x76, 0xb4, 0x76, 0xf8, 0x56, 0x77, 0xb2, + 0x77, 0x12, 0xf7, 0x1e, 0xf8, 0x26, 0x13, 0x98, 0xf7, 0x8, 0xc4, 0x15, + 0xa7, 0x70, 0xf7, 0x57, 0xf7, 0x53, 0x5, 0x13, 0x58, 0xf7, 0x57, 0xfb, + 0x55, 0xa7, 0xa8, 0xfb, 0x57, 0xf7, 0x56, 0xf7, 0x5c, 0xf7, 0x5a, 0x5, + 0x13, 0xa8, 0x6e, 0xa8, 0xfb, 0x5b, 0xfb, 0x5a, 0xfb, 0x58, 0xf7, 0x58, + 0x70, 0x6e, 0xf7, 0x56, 0xfb, 0x58, 0x5, 0xe, 0xf8, 0x1, 0x37, 0x76, + 0xe2, 0xac, 0xf8, 0xfe, 0xac, 0xc3, 0xa8, 0xa, 0xf7, 0x52, 0xd5, 0x15, + 0x72, 0xba, 0x8b, 0xe5, 0x98, 0x1a, 0xf7, 0x12, 0xf7, 0x16, 0xf7, 0xaf, + 0xf7, 0x3c, 0xaf, 0xa7, 0x81, 0x7b, 0x9e, 0x1e, 0xfb, 0xdf, 0xfc, 0xc7, + 0x15, 0xf7, 0xf7, 0xf8, 0xa6, 0x5, 0x9d, 0x6f, 0x91, 0x39, 0x62, 0x1a, + 0xfb, 0x1, 0xfb, 0xe, 0xfb, 0xbf, 0xfb, 0x44, 0x65, 0x71, 0x97, 0x9c, + 0x7a, 0x1e, 0xfb, 0x26, 0xfb, 0x29, 0x15, 0xb7, 0x6, 0xd5, 0xf7, 0x0, + 0x5, 0x7e, 0xa9, 0xad, 0x83, 0xa7, 0x1b, 0xae, 0xa, 0xf7, 0x84, 0xf7, + 0x5d, 0xed, 0x65, 0xcd, 0x53, 0xb2, 0x1f, 0xcb, 0xeb, 0x5, 0x5f, 0x6, + 0x57, 0x3d, 0x5, 0x9a, 0x6a, 0x67, 0x92, 0x66, 0x1b, 0xfb, 0x47, 0xfb, + 0x78, 0xfb, 0x6e, 0xfb, 0x71, 0x21, 0xb5, 0x4b, 0xc0, 0x68, 0x1f, 0xe, + 0xaa, 0xa, 0x77, 0xf7, 0x83, 0x77, 0xa3, 0x77, 0x12, 0xcc, 0xa, 0x13, + 0xec, 0xf7, 0x13, 0xf9, 0x11, 0x29, 0xa, 0xf8, 0x4, 0xbe, 0xb7, 0xa, + 0x20, 0xf7, 0x22, 0x5, 0x13, 0xdc, 0xa2, 0x79, 0x75, 0x92, 0x56, 0xa, + 0xa2, 0x7a, 0x80, 0xa, 0xaa, 0xa, 0x77, 0xf7, 0x87, 0x77, 0x1, 0xcc, + 0xa, 0x3, 0xf8, 0x33, 0xf9, 0x56, 0x5e, 0xa, 0xfc, 0x52, 0xfb, 0x74, + 0x29, 0xa, 0xe, 0xaa, 0xa, 0xbe, 0xd1, 0xa, 0xcc, 0xa, 0x3, 0xf7, + 0xc6, 0x46, 0xa, 0xfb, 0xe4, 0xfb, 0x80, 0x29, 0xa, 0xe, 0xb6, 0xa, + 0xb4, 0xf8, 0xfa, 0xdf, 0xa, 0xf1, 0xe5, 0xf7, 0x48, 0xc6, 0xa, 0x13, + 0xce, 0xf7, 0x13, 0xf9, 0x11, 0x3a, 0xa, 0x13, 0xbe, 0xeb, 0xa, 0x7, + 0x13, 0xce, 0x37, 0xa, 0x13, 0xbe, 0xd2, 0xa, 0x13, 0xce, 0xf7, 0x89, + 0xf7, 0x8, 0x15, 0x13, 0xbe, 0x21, 0xa, 0xf7, 0x5b, 0x99, 0xa, 0xcf, + 0xa, 0x59, 0x69, 0x9c, 0xba, 0x92, 0x8c, 0x91, 0x8d, 0x93, 0x1f, 0x91, + 0xa7, 0x92, 0xa1, 0xb8, 0xf7, 0x2f, 0xf7, 0x6f, 0xf7, 0xa2, 0x18, 0xab, + 0xb3, 0x96, 0x93, 0xa6, 0x98, 0x8, 0xe8, 0xa, 0xab, 0xac, 0x86, 0x67, + 0x62, 0xfb, 0x1f, 0xfb, 0x2c, 0x5e, 0x53, 0x1f, 0x73, 0xe7, 0x6c, 0xf5, + 0x85, 0xa5, 0x8, 0x89, 0x95, 0x8b, 0x93, 0x92, 0x1a, 0xa4, 0xaa, 0x98, + 0xb0, 0x8e, 0xcd, 0xa, 0xa9, 0xa7, 0x88, 0x4c, 0x9d, 0x1f, 0xd8, 0xfb, + 0xa1, 0x51, 0xfb, 0x5e, 0x5, 0x49, 0x78, 0x57, 0x79, 0x66, 0x1b, 0xf7, + 0xa6, 0xf9, 0x46, 0x9e, 0xa, 0xf7, 0x3f, 0xf5, 0x9f, 0xa, 0x91, 0x92, + 0x47, 0xa, 0x83, 0x87, 0x9d, 0xa, 0xe, 0x7d, 0xa, 0xf7, 0x3e, 0xb0, + 0xf7, 0xad, 0xa9, 0x6d, 0xf7, 0x39, 0x12, 0xf8, 0x66, 0xf2, 0x13, 0xe8, + 0x8b, 0x4, 0xf7, 0x89, 0x9b, 0x6, 0x55, 0x7e, 0x9d, 0xa5, 0x96, 0x8e, + 0x98, 0x8f, 0x99, 0x1f, 0xa0, 0xdd, 0x5, 0x84, 0xae, 0xad, 0x88, 0xab, + 0x1b, 0xf7, 0x2d, 0xf7, 0x1, 0xdb, 0xf7, 0x8, 0xf7, 0x2b, 0xfb, 0x3b, + 0x8c, 0x5f, 0x1f, 0x53, 0x6, 0x99, 0xc9, 0x94, 0xaf, 0xa6, 0x9b, 0xab, + 0x90, 0x19, 0x13, 0xd8, 0x9b, 0xfb, 0x82, 0x7b, 0x7, 0xb5, 0x86, 0xa5, + 0x7e, 0x66, 0x1a, 0x7d, 0x83, 0x6d, 0x85, 0x74, 0x1e, 0xfb, 0x7, 0xfc, + 0x33, 0x79, 0x4b, 0x7b, 0x7f, 0x58, 0x83, 0x19, 0xf7, 0x6b, 0xf7, 0x57, + 0xd8, 0xa, 0x9c, 0xa9, 0x1b, 0xf7, 0x2, 0xa9, 0x60, 0x41, 0xfb, 0x1f, + 0x30, 0x72, 0x38, 0x6f, 0x70, 0x8d, 0x8d, 0x75, 0x1f, 0xe, 0xfb, 0x63, + 0xa3, 0x73, 0xf3, 0xdb, 0xa1, 0xf9, 0x25, 0xa2, 0x12, 0xf8, 0x3, 0xe2, + 0x62, 0xdb, 0x13, 0xb4, 0xa2, 0x87, 0x15, 0x2c, 0x76, 0x75, 0x37, 0x4c, + 0x1b, 0x7d, 0x87, 0x8f, 0x90, 0x8e, 0x8e, 0x8f, 0x8e, 0x92, 0x1f, 0x8e, + 0x91, 0x8e, 0x93, 0x92, 0x1a, 0x13, 0x74, 0x94, 0x84, 0xa6, 0x6c, 0x74, + 0x79, 0x80, 0x6a, 0x65, 0xaf, 0x75, 0xb5, 0xf7, 0xe, 0xbf, 0xf7, 0x44, + 0xb6, 0x96, 0x1e, 0xf7, 0x3, 0xf8, 0x3e, 0x5, 0xb5, 0x96, 0xb9, 0xf7, + 0x44, 0xe1, 0x1b, 0xb4, 0xa2, 0x70, 0x5b, 0x4d, 0x7b, 0x3f, 0x4b, 0x6b, + 0x1f, 0x74, 0x80, 0x7a, 0x89, 0x7f, 0x8a, 0x8, 0x7c, 0x8a, 0x85, 0x8d, + 0x7c, 0x1a, 0x80, 0x95, 0x89, 0x99, 0x8a, 0x1e, 0x13, 0xb8, 0xab, 0x88, + 0xbe, 0x89, 0xfb, 0x1, 0x1a, 0x40, 0x61, 0xfb, 0x49, 0x3a, 0x7e, 0x86, + 0x94, 0x8f, 0x91, 0x8f, 0x8f, 0x8e, 0x92, 0x1e, 0x8e, 0x90, 0x8d, 0x91, + 0x95, 0x1a, 0xa0, 0x7f, 0x9e, 0x71, 0x73, 0x77, 0x7b, 0x6d, 0x58, 0xba, + 0x7b, 0xaa, 0xf7, 0x28, 0xd3, 0xf7, 0x4b, 0xd6, 0xdc, 0x5e, 0xc6, 0x3c, + 0x91, 0x1e, 0x8e, 0x7, 0x13, 0xb4, 0xc9, 0xa1, 0xf0, 0xb2, 0xf3, 0x1a, + 0xc7, 0x64, 0xd1, 0x28, 0xfb, 0x22, 0x48, 0xfb, 0x20, 0xfb, 0x74, 0x58, + 0x1e, 0xe, 0xa1, 0xa, 0x33, 0xa, 0x13, 0xb8, 0x28, 0xa, 0xf7, 0x9b, + 0xf8, 0x13, 0x78, 0xa, 0xa1, 0xa, 0xf7, 0x9c, 0xf8, 0x82, 0x7f, 0xa, + 0x24, 0xfc, 0x92, 0x22, 0xa, 0x13, 0xb8, 0x28, 0xa, 0xe, 0x76, 0xa, + 0x8b, 0xbe, 0xf7, 0x3d, 0x77, 0x12, 0x9c, 0xdf, 0x13, 0x7c, 0xf7, 0x43, + 0x55, 0xa, 0x7d, 0xfc, 0x9e, 0x22, 0xa, 0x13, 0xbc, 0x28, 0xa, 0xe, + 0x76, 0xa, 0xda, 0xac, 0xa, 0x9c, 0xdf, 0x13, 0xb6, 0xf7, 0x4c, 0xf8, + 0x99, 0x65, 0xa, 0x74, 0x97, 0x96, 0x71, 0x1f, 0x13, 0x6a, 0x95, 0x73, + 0x71, 0x95, 0x71, 0x6c, 0xa, 0xf7, 0x1a, 0xfc, 0xe, 0x22, 0xa, 0x13, + 0xb6, 0x28, 0xa, 0xe, 0x76, 0xa, 0xce, 0xed, 0x12, 0x9c, 0xdf, 0xe5, + 0xc6, 0xa, 0x13, 0x7e, 0x33, 0xa, 0x13, 0xbe, 0x28, 0xa, 0xe5, 0xf8, + 0x54, 0x23, 0xa, 0x76, 0xa, 0xbe, 0xac, 0x8b, 0xf7, 0x17, 0xfb, 0x17, + 0xf7, 0x3a, 0x12, 0x9c, 0xdf, 0xf7, 0x1f, 0xf7, 0x38, 0xab, 0xa, 0xf7, + 0x3a, 0x13, 0x76, 0x40, 0x33, 0xa, 0x13, 0xb7, 0x0, 0x28, 0xa, 0xf7, + 0x1f, 0xf8, 0x76, 0x15, 0x54, 0xb7, 0x5f, 0xc2, 0x1e, 0x13, 0xb6, 0x40, + 0xc2, 0xb8, 0xb7, 0xc2, 0xc2, 0x5e, 0xb8, 0x54, 0x1f, 0x13, 0xb7, 0x0, + 0x54, 0x5f, 0x5e, 0x54, 0x1f, 0xac, 0x8a, 0x15, 0xb3, 0xa, 0x13, 0xba, + 0x80, 0xe5, 0xa, 0xe, 0xf7, 0xca, 0x80, 0xbd, 0xf8, 0xd, 0xa4, 0x77, + 0x9f, 0x12, 0xa2, 0xe1, 0xf7, 0x53, 0xe3, 0xf7, 0x4e, 0xcd, 0x13, 0xbc, + 0xf7, 0xba, 0xf7, 0x20, 0x15, 0x90, 0x6, 0x89, 0x83, 0x8a, 0x85, 0x82, + 0x1a, 0x49, 0xab, 0x4d, 0xd9, 0xeb, 0xe5, 0xf1, 0x95, 0x91, 0x1e, 0x81, + 0x97, 0x5, 0x48, 0x48, 0x58, 0x81, 0x76, 0x1b, 0x42, 0x8b, 0xd6, 0xa8, + 0xa3, 0x8c, 0x8d, 0x90, 0xa1, 0x1f, 0xf7, 0xa, 0xad, 0xf7, 0x20, 0xb2, + 0xf1, 0x1a, 0xc7, 0x50, 0x9d, 0x75, 0x64, 0x62, 0x76, 0x64, 0x65, 0x1e, + 0x89, 0x8d, 0x9f, 0xc3, 0x44, 0x89, 0x78, 0x60, 0x5, 0xa3, 0x80, 0x81, + 0xa2, 0x5b, 0x1b, 0xfb, 0x12, 0xfb, 0x2b, 0xfb, 0x6a, 0xfb, 0x18, 0x5c, + 0x9a, 0x50, 0xd3, 0xd7, 0xc6, 0xda, 0xd3, 0xbc, 0x1f, 0xfb, 0x4d, 0x67, + 0x15, 0xed, 0xee, 0xf7, 0x6f, 0xe9, 0x99, 0xad, 0x88, 0x54, 0x27, 0x20, + 0xfb, 0x74, 0x29, 0x1e, 0x13, 0x58, 0x69, 0x89, 0xaa, 0xad, 0x1f, 0xf7, + 0xab, 0xf7, 0x1, 0x15, 0xf7, 0x1d, 0xb5, 0xc7, 0xcd, 0xbb, 0x1b, 0x13, + 0xc, 0x9b, 0x9f, 0x7c, 0x6b, 0x56, 0x59, 0x40, 0xfb, 0x1c, 0x6f, 0x1f, + 0xe, 0xe2, 0xfb, 0x6d, 0xaf, 0xdc, 0xad, 0xc3, 0xae, 0xf8, 0x1f, 0xa0, + 0x1, 0xa5, 0xe1, 0xd7, 0xd5, 0xd7, 0xe2, 0x3, 0xf0, 0x28, 0x15, 0x94, + 0x83, 0x5, 0x91, 0x95, 0x98, 0x8c, 0x97, 0x1b, 0xa1, 0xa0, 0x7e, 0x72, + 0x6e, 0x69, 0x7d, 0x67, 0x79, 0x78, 0xde, 0xa, 0xa2, 0xaf, 0x83, 0xaf, + 0x1b, 0xc6, 0xc5, 0xa2, 0xcb, 0xb4, 0x69, 0xa5, 0x65, 0x7f, 0x7f, 0x8b, + 0x88, 0x80, 0x1f, 0xb1, 0xc3, 0xeb, 0x91, 0xc0, 0xd1, 0xa3, 0xa9, 0x19, + 0x7b, 0x95, 0x5, 0x63, 0x67, 0x5c, 0x62, 0x4f, 0x1b, 0x4e, 0x69, 0xb8, + 0xd8, 0xeb, 0xd4, 0xdb, 0xa, 0x81, 0x86, 0x82, 0x87, 0x80, 0x1f, 0x88, + 0x83, 0x88, 0x81, 0x80, 0xa3, 0xa, 0xfb, 0x22, 0xfb, 0x2d, 0xfb, 0x21, + 0xfb, 0xa, 0xd0, 0x6a, 0xc7, 0x85, 0x1e, 0xe, 0xe2, 0x80, 0xb8, 0xf7, + 0xfc, 0xa2, 0x8c, 0xa2, 0xf7, 0x73, 0x77, 0x1, 0xaa, 0xe0, 0x3, 0xf7, + 0x17, 0xf7, 0x5a, 0x15, 0x9c, 0xb7, 0x5, 0x2d, 0xa, 0xf7, 0x68, 0xf7, + 0xd0, 0x78, 0xa, 0xe2, 0x80, 0xb8, 0xf8, 0xd, 0xa2, 0xf7, 0x7a, 0x77, + 0x12, 0xaa, 0xe0, 0xf7, 0x7b, 0xcc, 0x17, 0xf7, 0x80, 0xad, 0xa, 0xf7, + 0x3a, 0xee, 0x9f, 0xa, 0x96, 0x99, 0x47, 0xa, 0x7e, 0x80, 0x9d, 0xa, + 0xfb, 0x9a, 0xfc, 0x55, 0x15, 0x9c, 0xb7, 0x5, 0x3d, 0xa, 0x13, 0xd0, + 0xb7, 0x70, 0xad, 0x58, 0x1e, 0x5b, 0xa, 0x1f, 0x54, 0xa, 0xe, 0xe2, + 0x80, 0xb8, 0xf7, 0xf3, 0xa2, 0x95, 0xa2, 0x8b, 0xbe, 0xf3, 0xcc, 0x8b, + 0x77, 0x1, 0xaa, 0xe0, 0xf7, 0x7b, 0xcc, 0x3, 0xf7, 0x27, 0x55, 0xa, + 0xfb, 0x41, 0xfc, 0x63, 0x15, 0x9c, 0xb7, 0x5, 0x2d, 0xa, 0xe, 0xe2, + 0x80, 0xb8, 0xf8, 0xd, 0xa2, 0x7b, 0xa2, 0xce, 0xed, 0x12, 0xaa, 0xe0, + 0xb0, 0xc6, 0xa, 0x13, 0xde, 0xf7, 0x17, 0xf7, 0x5a, 0x15, 0x9c, 0xb7, + 0x5, 0x13, 0xbe, 0x2d, 0xa, 0xa8, 0xf8, 0x11, 0x23, 0xa, 0xd7, 0xa, + 0xf9, 0x37, 0xe3, 0xa, 0xf7, 0x72, 0xf7, 0x6, 0x2c, 0xa, 0x9d, 0xf8, + 0x19, 0xb7, 0xa, 0xfb, 0x3, 0xf7, 0x23, 0xc5, 0xa, 0x79, 0x91, 0x56, + 0xa, 0x9e, 0x7b, 0x80, 0xa, 0xd7, 0xa, 0xf9, 0x37, 0xe3, 0xa, 0xf7, + 0x18, 0xad, 0xa, 0xf7, 0x3a, 0xef, 0x9f, 0xa, 0x97, 0x98, 0x47, 0xa, + 0x7d, 0x81, 0x9d, 0xa, 0x48, 0xfc, 0xaa, 0x2c, 0xa, 0xe, 0xd7, 0xa, + 0xf9, 0x34, 0xe3, 0xa, 0xad, 0x55, 0xa, 0xaa, 0xfc, 0xb7, 0x2c, 0xa, + 0xe, 0xd7, 0xa, 0xf8, 0x9b, 0xed, 0x1, 0xbc, 0xf2, 0xf2, 0xed, 0x3, + 0xf7, 0x72, 0xf7, 0x6, 0x2c, 0xa, 0xfb, 0x49, 0xf8, 0x5a, 0x58, 0xa, + 0xf7, 0x5d, 0x16, 0x20, 0xa, 0xe, 0x80, 0xa0, 0xf7, 0x46, 0xa0, 0xf8, + 0x6e, 0x77, 0x12, 0xa6, 0xdf, 0xf7, 0xa5, 0xde, 0x17, 0xf7, 0x3, 0xf2, + 0x15, 0xf7, 0xa, 0xe6, 0xf7, 0x5b, 0xf7, 0x4, 0xbb, 0xa1, 0x5f, 0x57, + 0x20, 0x3c, 0xfb, 0x63, 0xfb, 0x6, 0x59, 0x6d, 0xaf, 0xc4, 0x1e, 0xf7, + 0xaf, 0xf7, 0xb5, 0x15, 0xa9, 0x7d, 0x6a, 0x9e, 0x66, 0x1b, 0xfb, 0x1b, + 0xfb, 0x28, 0xfb, 0x35, 0xfb, 0x27, 0x38, 0xb8, 0x4e, 0xf5, 0xf7, 0x2d, + 0xf7, 0x1c, 0xf7, 0x43, 0xf7, 0x5c, 0xec, 0x67, 0xce, 0x59, 0xc1, 0x1f, + 0xf0, 0xb8, 0x6b, 0xa7, 0x28, 0x60, 0x64, 0xac, 0x5b, 0xa9, 0x63, 0x93, + 0x19, 0x68, 0x7a, 0xaf, 0x7d, 0xb3, 0x6b, 0xab, 0x6c, 0x19, 0xfb, 0xf, + 0x55, 0xac, 0x6e, 0xf7, 0x9, 0xbe, 0xaf, 0x5e, 0xa6, 0x5a, 0x94, 0x45, + 0x19, 0xe, 0xbe, 0xa, 0xda, 0xac, 0xa, 0xf7, 0xfd, 0xdc, 0x13, 0x6a, + 0x89, 0xa, 0xc3, 0xa, 0x13, 0xaa, 0x51, 0xa, 0x7b, 0x7, 0xc1, 0x92, + 0x76, 0x7c, 0x1f, 0x13, 0x76, 0x76, 0x4b, 0xfb, 0x74, 0x6c, 0xfb, 0x5, + 0x1e, 0xf7, 0x1b, 0xa2, 0xa, 0xa7, 0x1f, 0x80, 0xa8, 0x57, 0xa, 0x77, + 0x72, 0x98, 0x96, 0x70, 0x1f, 0x13, 0x6a, 0x95, 0x74, 0x72, 0x94, 0x72, + 0xd6, 0xa, 0xa4, 0xa, 0xa6, 0xf7, 0x19, 0x26, 0xa, 0xf7, 0x91, 0xf7, + 0xfc, 0xb7, 0xa, 0xfb, 0x5, 0xf7, 0x26, 0xc5, 0xa, 0x7b, 0x8e, 0x56, + 0xa, 0x9c, 0x7e, 0x80, 0xa, 0xa4, 0xa, 0xf7, 0x9c, 0xad, 0xa, 0xf7, + 0x33, 0xed, 0x9f, 0xa, 0x9d, 0x9a, 0x47, 0xa, 0x77, 0x7f, 0x9d, 0xa, + 0xfc, 0x17, 0xfc, 0x95, 0x26, 0xa, 0xe, 0x80, 0xa0, 0xf8, 0x18, 0xa0, + 0x8c, 0xa0, 0x8b, 0xbe, 0xf3, 0xcc, 0x8b, 0x77, 0x92, 0xa, 0xf7, 0x39, + 0x55, 0xa, 0xfb, 0xbb, 0xfc, 0xa4, 0x26, 0xa, 0xe, 0x80, 0xa0, 0xf8, + 0x21, 0xa0, 0xe7, 0xac, 0xa, 0xa6, 0xdf, 0xf7, 0xa5, 0xdf, 0x13, 0xee, + 0xf7, 0x3d, 0xf8, 0x99, 0x60, 0xa, 0x9c, 0xa6, 0x81, 0x80, 0xa7, 0x1f, + 0x80, 0xa8, 0xa9, 0x7f, 0x9e, 0x1b, 0x43, 0xa, 0x77, 0x74, 0x97, 0x96, + 0x71, 0x1f, 0x13, 0xd6, 0x95, 0x73, 0x71, 0x95, 0x71, 0x6c, 0xa, 0xfb, + 0x22, 0xfc, 0x14, 0x26, 0xa, 0xe, 0x80, 0xa0, 0xf8, 0x25, 0xa0, 0xd7, + 0xed, 0x12, 0xa6, 0xdf, 0xdb, 0xed, 0xea, 0xdf, 0x3e, 0xed, 0x13, 0xfc, + 0xa6, 0xf7, 0x19, 0x26, 0xa, 0xdb, 0xf8, 0x3d, 0x58, 0xa, 0x13, 0xfa, + 0x25, 0xa, 0xf7, 0xd2, 0x80, 0xf7, 0x3, 0xf7, 0xc, 0xcd, 0x53, 0xb9, + 0xf7, 0x16, 0xf7, 0x3, 0x12, 0xf7, 0xaf, 0xf7, 0x3, 0x23, 0xe1, 0x13, + 0xb8, 0xe1, 0xf7, 0x7a, 0x15, 0xf8, 0x8c, 0xb9, 0xfc, 0x8c, 0x6, 0xf7, + 0x8b, 0xf7, 0x2f, 0x15, 0x13, 0xd4, 0x8e, 0xa, 0x8d, 0xfc, 0x4e, 0x15, + 0x8e, 0xa, 0xe, 0x82, 0xa2, 0xf8, 0x28, 0xa1, 0x12, 0xa7, 0xdf, 0xf7, + 0xa5, 0xdf, 0x17, 0xf7, 0x20, 0xa8, 0x15, 0x78, 0x9c, 0x82, 0x97, 0xd7, + 0x1a, 0xd9, 0xd8, 0xf7, 0x62, 0xf7, 0x1f, 0x1e, 0xfb, 0x35, 0xfc, 0x28, + 0x15, 0xf7, 0x52, 0xf8, 0x1c, 0x5, 0xaa, 0x67, 0x88, 0x71, 0x58, 0x1a, + 0x7c, 0x64, 0xfb, 0x9c, 0xfb, 0x47, 0x1e, 0x60, 0x79, 0x15, 0x4b, 0xfb, + 0x17, 0x5, 0xae, 0x6, 0x13, 0xf0, 0xc8, 0xf7, 0x12, 0x5, 0x13, 0x50, + 0xf7, 0x61, 0xf7, 0x0, 0xf7, 0x54, 0xf7, 0x0, 0xcf, 0x6f, 0xc6, 0x44, + 0x9c, 0x1f, 0xc5, 0xf7, 0xb, 0x5, 0x69, 0x6, 0x54, 0xfb, 0x6, 0x5, + 0x13, 0x20, 0xfb, 0x3b, 0xfb, 0x24, 0xfb, 0x34, 0xfb, 0x25, 0x1f, 0x13, + 0x0, 0x53, 0xa1, 0x4c, 0xd5, 0x77, 0x1e, 0xe, 0xa0, 0xa, 0xf7, 0xdd, + 0xf7, 0x77, 0x3b, 0xa, 0xae, 0xf7, 0x9d, 0xb7, 0xa, 0xfb, 0x4, 0xf7, + 0x25, 0xc5, 0xa, 0x7a, 0x8f, 0x56, 0xa, 0x9d, 0x7d, 0x80, 0xa, 0xa0, + 0xa, 0xf7, 0x92, 0xf8, 0x82, 0x7e, 0xa, 0x3b, 0xfc, 0x38, 0x3b, 0xa, + 0xe, 0x82, 0xba, 0x6f, 0x76, 0xf8, 0x4f, 0xc7, 0xf7, 0x3d, 0xa9, 0xa, + 0xe5, 0x13, 0xb0, 0xf7, 0x39, 0xf8, 0x80, 0x15, 0xb2, 0x6, 0x13, 0xbc, + 0x39, 0xa, 0x92, 0xfc, 0x46, 0x53, 0xa, 0x13, 0xac, 0x2e, 0xa, 0x13, + 0x70, 0xa6, 0xa, 0x82, 0xba, 0x6f, 0x76, 0xf8, 0x9b, 0xed, 0x12, 0xb5, + 0xd8, 0xc9, 0xc6, 0xa, 0x13, 0xac, 0xf7, 0xdd, 0xf7, 0x77, 0x53, 0xa, + 0x13, 0xbc, 0x2b, 0xa, 0x13, 0x7c, 0x5d, 0xa, 0x62, 0xa, 0xfb, 0x28, + 0xf7, 0xde, 0x23, 0xa, 0xe2, 0xfb, 0x62, 0xb8, 0xf8, 0xee, 0x77, 0xf7, + 0x87, 0x77, 0x12, 0xf8, 0x16, 0xc7, 0xa, 0xdb, 0x7c, 0x5f, 0xf7, 0x5, + 0x7e, 0x1b, 0x79, 0x3d, 0x7b, 0x83, 0x5b, 0x1f, 0x98, 0xa, 0x9e, 0x4f, + 0xe2, 0xa, 0xaf, 0xfb, 0x32, 0x7a, 0xa, 0x84, 0x84, 0x8f, 0x91, 0x84, + 0x1f, 0x93, 0x81, 0x7f, 0x95, 0x79, 0x96, 0xa, 0x1f, 0x13, 0x70, 0x70, + 0xa, 0x73, 0x99, 0x82, 0x99, 0x83, 0x1f, 0x98, 0x83, 0x98, 0x84, 0x77, + 0xa7, 0xa, 0x6f, 0xf8, 0x3a, 0x7e, 0xa, 0xe, 0xfb, 0x4c, 0x76, 0xf7, + 0x6b, 0x76, 0xf8, 0x2d, 0xb6, 0xf7, 0x86, 0x77, 0x48, 0xa, 0x77, 0x1f, + 0x89, 0x8d, 0x91, 0x9c, 0xdd, 0xf7, 0xce, 0x8e, 0x97, 0x19, 0x13, 0x90, + 0x86, 0x90, 0x58, 0x81, 0x58, 0x84, 0x59, 0x85, 0x19, 0x7a, 0x7, 0xba, + 0x9a, 0x7d, 0x75, 0x7a, 0x84, 0x76, 0x85, 0x75, 0x1f, 0x6a, 0xfb, 0x9, + 0xfb, 0xf, 0xfc, 0x64, 0x76, 0x35, 0x8, 0x6b, 0x83, 0x82, 0xda, 0xa, + 0x74, 0x66, 0x90, 0xb9, 0x9e, 0xa4, 0xe5, 0x93, 0xaf, 0x1f, 0xe, 0xe2, + 0xfb, 0x4d, 0x76, 0xf9, 0x1b, 0x77, 0xe2, 0xed, 0x12, 0xf7, 0x23, 0xc6, + 0xa, 0x54, 0xb3, 0x13, 0xf4, 0xf7, 0x9c, 0xd3, 0x15, 0x6a, 0xf7, 0x3f, + 0x5, 0xd6, 0x7d, 0x5e, 0xf7, 0xf, 0x7e, 0x1b, 0x79, 0x8a, 0x3d, 0x7c, + 0x5b, 0x83, 0x8, 0x13, 0xb8, 0x98, 0xa, 0x9f, 0x43, 0xe2, 0xa, 0xae, + 0xfb, 0x26, 0x7a, 0xa, 0x82, 0x83, 0x93, 0x92, 0x81, 0x1f, 0x92, 0x82, + 0x80, 0x91, 0x7d, 0x96, 0xa, 0x1f, 0x13, 0x74, 0x70, 0xa, 0x75, 0x97, + 0x83, 0x98, 0x83, 0x1f, 0x99, 0x82, 0x9a, 0x84, 0x75, 0xa7, 0xa, 0xfb, + 0xd, 0xf8, 0x79, 0x58, 0xa, 0x13, 0xf8, 0x25, 0xa, 0xd7, 0xa, 0xf8, + 0x58, 0xe3, 0xa, 0xf7, 0x72, 0xf7, 0x6, 0x3f, 0xa, 0x64, 0x84, 0x38, + 0x7b, 0x65, 0x89, 0x19, 0x3e, 0xa, 0xe, 0x6e, 0xa, 0x54, 0x5e, 0x8b, + 0xb7, 0xac, 0xac, 0xe4, 0xab, 0xf7, 0x11, 0x1f, 0xf7, 0x22, 0xde, 0x99, + 0xbc, 0xfb, 0x23, 0x36, 0xb9, 0xf7, 0x31, 0xaa, 0xf5, 0x9b, 0x82, 0xc8, + 0x94, 0x19, 0xc4, 0xa, 0xc3, 0x9f, 0x78, 0x6e, 0x7b, 0x87, 0x77, 0x85, + 0x76, 0x1f, 0x4f, 0xfb, 0x6a, 0x28, 0x50, 0x7e, 0x5b, 0xee, 0xc6, 0x5c, + 0xfb, 0x3e, 0x7a, 0x4d, 0x79, 0x7e, 0x5a, 0x82, 0x19, 0xe, 0xd7, 0xa, + 0xf9, 0x4a, 0x77, 0x1, 0xb0, 0xd7, 0x3, 0xf7, 0x74, 0xd3, 0xa, 0x7e, + 0x88, 0x95, 0x97, 0x9c, 0x94, 0xa0, 0x8d, 0x92, 0x1f, 0xd5, 0xf7, 0xaf, + 0xec, 0xbd, 0x97, 0xb9, 0x2a, 0x59, 0xcc, 0xf7, 0x8e, 0x86, 0x90, 0x57, + 0x7f, 0x57, 0x82, 0x57, 0x85, 0x19, 0x7b, 0x7, 0xa5, 0xb2, 0x82, 0x71, + 0x81, 0x6f, 0xfb, 0x0, 0x6e, 0xfb, 0x1, 0x1f, 0x43, 0x67, 0x7f, 0x5d, + 0xd3, 0xaf, 0x5, 0x62, 0xfb, 0x28, 0x6b, 0xfb, 0xf, 0x81, 0xb5, 0xa, + 0xf8, 0xdf, 0x83, 0xab, 0x73, 0xac, 0xf7, 0xbb, 0xe9, 0xa, 0x78, 0xab, + 0x12, 0xbc, 0xf7, 0x0, 0x13, 0xb4, 0xf9, 0x84, 0xf7, 0x74, 0x15, 0x9f, + 0x89, 0xcd, 0xf7, 0x7a, 0x79, 0x8f, 0x5, 0x37, 0x64, 0x7b, 0x80, 0xfb, + 0x39, 0x1b, 0xcb, 0xf7, 0x77, 0x5, 0x9a, 0x8f, 0x91, 0x9c, 0xa6, 0x1b, + 0xeb, 0x6, 0xf7, 0xc, 0x8b, 0x69, 0x38, 0x1f, 0x9b, 0x6, 0xaa, 0xf7, + 0x2a, 0x5, 0xfc, 0x5, 0x6, 0x7b, 0x71, 0x8f, 0x8e, 0x6f, 0x1f, 0x13, + 0xac, 0x8f, 0x6e, 0x6d, 0x8d, 0x73, 0x1b, 0xfb, 0x5e, 0xfb, 0x53, 0xfb, + 0x5e, 0xfb, 0x88, 0xfb, 0x14, 0xf0, 0x27, 0xf7, 0xc, 0xb2, 0xae, 0x8d, + 0x8d, 0xad, 0x1f, 0x13, 0x74, 0x8d, 0xae, 0xae, 0x8d, 0xb3, 0x1b, 0xf7, + 0xee, 0x6, 0xcc, 0xf7, 0x3a, 0x7b, 0x91, 0x5, 0x49, 0x5b, 0x56, 0x42, + 0xfb, 0x37, 0x1b, 0x46, 0x71, 0x8d, 0xae, 0x99, 0x95, 0xad, 0x90, 0x9f, + 0x1f, 0xbf, 0xf7, 0x52, 0x5, 0xf7, 0x1f, 0xa7, 0x7a, 0x5e, 0x1f, 0x87, + 0x71, 0x8f, 0xa0, 0x85, 0x66, 0x8, 0xfb, 0xba, 0x72, 0x15, 0x13, 0xac, + 0xfb, 0x3, 0x6d, 0x72, 0x4b, 0x21, 0x1b, 0xfb, 0x1f, 0x8a, 0xf7, 0x20, + 0xb6, 0xf7, 0x45, 0xf7, 0x7, 0xf7, 0x8e, 0xf7, 0x42, 0xca, 0xb5, 0x6c, + 0x58, 0x7a, 0x7e, 0x62, 0x84, 0x70, 0x1f, 0xe, 0xf7, 0xca, 0x7f, 0xa0, + 0x76, 0xb5, 0x77, 0x76, 0xf8, 0x41, 0xa2, 0x12, 0x9f, 0xde, 0x13, 0x58, + 0xf7, 0xc3, 0xc3, 0x15, 0x62, 0x9e, 0xb3, 0x70, 0xb8, 0x1b, 0xe0, 0xd6, + 0xcf, 0xb1, 0xb0, 0x1f, 0x80, 0x96, 0x5, 0x5f, 0x52, 0x63, 0x6c, 0x59, + 0x1b, 0x79, 0x54, 0x99, 0xcf, 0xa0, 0x8d, 0xaf, 0x94, 0x99, 0x1f, 0x93, + 0x97, 0xf0, 0x8a, 0xe5, 0xcc, 0x8, 0xb7, 0xab, 0x9e, 0xb6, 0xa6, 0x1a, + 0x92, 0x85, 0xd4, 0x49, 0x61, 0x5c, 0x86, 0x40, 0x3c, 0x1e, 0x93, 0x89, + 0x73, 0xd3, 0x32, 0x1b, 0xfb, 0xe, 0xfb, 0x29, 0xfb, 0x37, 0xfb, 0x1e, + 0x1f, 0x13, 0x38, 0xfb, 0x3, 0xdf, 0x63, 0xc2, 0xd5, 0xae, 0xac, 0xad, + 0xae, 0x1e, 0xfb, 0x5c, 0xc1, 0x15, 0xf7, 0x5, 0xe1, 0xf7, 0x57, 0xe6, + 0xc3, 0x92, 0x61, 0x6e, 0x1e, 0x13, 0x98, 0x66, 0x5a, 0xfb, 0xc1, 0xfb, + 0xe, 0x46, 0x8b, 0xd6, 0xa5, 0x1e, 0xf7, 0xb2, 0xea, 0x15, 0xf7, 0x8, + 0xa9, 0xd7, 0xea, 0xc1, 0x1b, 0xa2, 0x93, 0x70, 0x74, 0x7a, 0x83, 0x5c, + 0x54, 0x60, 0x1f, 0x6a, 0x72, 0x73, 0x84, 0x44, 0x75, 0x8, 0xe, 0x79, + 0xae, 0x80, 0x76, 0xf9, 0x1c, 0xac, 0x8c, 0x77, 0x12, 0xbe, 0x9f, 0xc7, + 0xe3, 0x13, 0x6c, 0xb9, 0xa, 0x9a, 0x85, 0x83, 0x9e, 0x1f, 0x13, 0xac, + 0x81, 0xa4, 0xaa, 0x7f, 0xb2, 0x6d, 0xa, 0x13, 0x9c, 0xb3, 0xf7, 0x5b, + 0x5, 0x74, 0x6, 0x78, 0x80, 0x7a, 0x85, 0x78, 0x1b, 0x78, 0x75, 0x91, + 0x91, 0x7a, 0x1f, 0x13, 0xac, 0x91, 0x79, 0x7d, 0x91, 0x5e, 0x64, 0xa, + 0x13, 0x6c, 0xf7, 0x98, 0xf8, 0x84, 0x52, 0xa, 0xab, 0x93, 0x76, 0xf8, + 0x43, 0xa2, 0xf7, 0x70, 0x77, 0x12, 0xf7, 0x1, 0xd4, 0x8b, 0xf7, 0x28, + 0x25, 0xd7, 0x13, 0xf4, 0xc2, 0xa, 0x99, 0x9a, 0x87, 0x86, 0x99, 0x1f, + 0x86, 0x9a, 0x9b, 0x86, 0x9a, 0x1b, 0xc3, 0xe8, 0xa4, 0xf7, 0x1, 0xb5, + 0x6d, 0xb6, 0x6d, 0xb3, 0x1f, 0x6c, 0xb4, 0x6c, 0xb2, 0xab, 0x1a, 0xbc, + 0xab, 0x94, 0xa1, 0x1e, 0x13, 0xf8, 0xcc, 0xa8, 0x51, 0x52, 0x1f, 0x9b, + 0x6, 0xbb, 0xa, 0x7b, 0x80, 0x90, 0x90, 0x7e, 0x1f, 0x8f, 0x80, 0x7e, + 0x8e, 0x76, 0x1b, 0x21, 0x7d, 0x3b, 0x6c, 0x63, 0xab, 0x5d, 0xaa, 0x60, + 0x1f, 0x13, 0xf4, 0xa8, 0x63, 0xa6, 0x65, 0x6b, 0xb4, 0xa, 0xf7, 0x65, + 0xf7, 0xee, 0x52, 0xa, 0xf7, 0x5b, 0xa0, 0x76, 0xf9, 0x11, 0xdf, 0xa, + 0xf7, 0x8d, 0xc6, 0xa, 0x13, 0xcc, 0xcf, 0xa, 0x51, 0x8f, 0x6c, 0x90, + 0xb6, 0x1a, 0x94, 0x8d, 0x96, 0x8f, 0x98, 0x1e, 0xc7, 0xf7, 0x61, 0xf7, + 0x6f, 0xf7, 0xa2, 0xab, 0xb3, 0x96, 0x93, 0xa6, 0x98, 0x19, 0x13, 0xbc, + 0x9b, 0xfb, 0x51, 0x7, 0x13, 0xcc, 0x7b, 0x7, 0xb3, 0x87, 0xa6, 0x86, + 0x73, 0x1a, 0x84, 0x89, 0x83, 0x87, 0x80, 0x1e, 0x7c, 0x64, 0xfb, 0xc, + 0xfb, 0x1c, 0x5e, 0x53, 0x73, 0xe7, 0x6e, 0xf0, 0x83, 0xad, 0x8, 0x88, + 0x96, 0x8b, 0x94, 0x93, 0x1a, 0xa4, 0xa3, 0x95, 0xb8, 0x1e, 0x13, 0xbc, + 0x9b, 0xfb, 0x83, 0x7, 0x13, 0xcc, 0x7b, 0x7, 0xbf, 0x83, 0x93, 0x8a, + 0x9b, 0x52, 0xd8, 0xfb, 0xa1, 0x18, 0x4b, 0xfb, 0x5e, 0x78, 0x49, 0x67, + 0x7d, 0x5c, 0x87, 0x19, 0xf7, 0x3f, 0xf9, 0x85, 0x15, 0x13, 0xbc, 0x21, + 0xa, 0xf7, 0x5b, 0x8b, 0xaf, 0xf8, 0xd9, 0xaf, 0xf7, 0x70, 0x77, 0x50, + 0xa, 0xf7, 0xe3, 0xf9, 0x46, 0x52, 0xa, 0xab, 0x54, 0x76, 0xf8, 0x50, + 0xc7, 0xf7, 0x7d, 0x77, 0x12, 0xf7, 0xd8, 0xd0, 0x17, 0xba, 0xa, 0xac, + 0xac, 0x79, 0x77, 0xac, 0x1f, 0x74, 0xb2, 0xb2, 0x72, 0xb3, 0xaf, 0xa, + 0x82, 0x8d, 0x85, 0x8e, 0x85, 0x1f, 0x8f, 0x82, 0x90, 0x84, 0x84, 0x1a, + 0x7e, 0x7b, 0x88, 0x7f, 0x81, 0x78, 0x8b, 0xac, 0x71, 0x1e, 0x57, 0xce, + 0x7a, 0x9e, 0x49, 0x99, 0xf7, 0xb6, 0xf7, 0xec, 0x18, 0xca, 0xa, 0xc3, + 0xa1, 0xaa, 0x8e, 0xb1, 0x1b, 0xf7, 0x1c, 0x6, 0x13, 0xa0, 0x38, 0xf7, + 0x10, 0x52, 0xa, 0xfb, 0x4a, 0xa2, 0xf8, 0xa7, 0xa9, 0xf7, 0x8f, 0xa8, + 0x1, 0xa4, 0xdf, 0xf7, 0xd1, 0xdc, 0x3, 0xf7, 0xe, 0xf8, 0x8, 0x15, + 0xf7, 0x4, 0x6, 0x67, 0xfb, 0xe1, 0x5, 0xfb, 0x8, 0x7e, 0x80, 0x39, + 0x4f, 0x1b, 0x85, 0x7e, 0x8f, 0x97, 0x91, 0x8f, 0x90, 0x8e, 0x91, 0x1f, + 0x8f, 0x91, 0x8e, 0x92, 0x93, 0x1a, 0x9c, 0x7c, 0xa0, 0x73, 0x85, 0x64, + 0x89, 0x5a, 0x6d, 0xa4, 0x69, 0xc2, 0xf7, 0x18, 0xb0, 0xf7, 0x72, 0xb2, + 0x90, 0x1e, 0xb2, 0xf7, 0xb9, 0x5, 0xf7, 0xe, 0x6, 0x92, 0xa9, 0x5, + 0xfb, 0x12, 0x6, 0xf7, 0x34, 0x9f, 0x99, 0xe6, 0xcc, 0x1b, 0x97, 0x92, + 0x84, 0x85, 0x85, 0x88, 0x85, 0x87, 0x85, 0x1f, 0x88, 0x86, 0x88, 0x86, + 0x84, 0x1a, 0x72, 0xa2, 0x7d, 0x9c, 0xa5, 0x9a, 0xa0, 0xa5, 0xbe, 0x59, + 0x9d, 0x6d, 0xfb, 0x2, 0x50, 0xfb, 0x20, 0xfb, 0x20, 0x77, 0x1e, 0xfb, + 0x1, 0x6, 0xe, 0x73, 0xf8, 0x95, 0x76, 0xd1, 0xa, 0xe6, 0xf8, 0x80, + 0x15, 0xb4, 0x6, 0xf7, 0x16, 0xf3, 0xe0, 0x23, 0x5, 0xb1, 0x6, 0x33, + 0xf7, 0x3d, 0x5, 0x5a, 0x6, 0xe, 0x73, 0xf8, 0x95, 0x76, 0xd1, 0xa, + 0xf7, 0xd, 0xf7, 0xc5, 0x3, 0xf7, 0x6d, 0xf8, 0x80, 0x7b, 0xa, 0x66, + 0x6, 0xfb, 0x1e, 0x22, 0x2f, 0xf4, 0x5, 0x65, 0x6, 0xe, 0x73, 0xf8, + 0x80, 0xc3, 0xf1, 0x77, 0x1, 0xf7, 0x9, 0xa9, 0x3, 0xf7, 0x9, 0xf9, + 0x1e, 0x15, 0x61, 0x8c, 0xfb, 0x8, 0xf7, 0x19, 0xe1, 0xce, 0xd2, 0xe2, + 0x99, 0x1e, 0x6d, 0x6, 0x87, 0x8a, 0x6b, 0x29, 0x28, 0x1b, 0x28, 0x81, + 0xe1, 0x9b, 0x1f, 0xe, 0x73, 0xf8, 0x90, 0xed, 0x1, 0xf7, 0x63, 0xed, + 0x3, 0xf7, 0x63, 0xf8, 0xc1, 0x58, 0xa, 0xe, 0x73, 0xf8, 0x80, 0xad, + 0x69, 0xf7, 0x39, 0xab, 0xa, 0xf7, 0x39, 0x12, 0xf7, 0x2f, 0xae, 0x68, + 0xf7, 0x3b, 0xfb, 0x18, 0xf7, 0x18, 0xfb, 0x18, 0xf7, 0x39, 0x6a, 0xac, + 0x13, 0xa4, 0x80, 0xf7, 0x2f, 0xf8, 0xe3, 0x15, 0x54, 0xb7, 0x5f, 0xc2, + 0x1e, 0x13, 0x99, 0x0, 0xc2, 0xb9, 0xb7, 0xc2, 0xc2, 0x5d, 0xb8, 0x54, + 0x1f, 0x13, 0x44, 0x80, 0x54, 0x5f, 0x5e, 0x54, 0x1f, 0xae, 0x16, 0xaf, + 0xa8, 0xa9, 0xaf, 0xaf, 0xaa, 0x6d, 0x67, 0x67, 0x6c, 0x6e, 0x67, 0x1e, + 0x13, 0xaa, 0x80, 0xe5, 0xa, 0xe, 0x73, 0xfb, 0x3d, 0xb7, 0xf7, 0x39, + 0x77, 0x1, 0x77, 0xc5, 0x3, 0xc5, 0xb3, 0x15, 0x6e, 0x71, 0x5a, 0x44, + 0x62, 0x1a, 0x59, 0xa3, 0x76, 0xaa, 0xbb, 0xe8, 0xb2, 0xb4, 0xa3, 0x1e, + 0x75, 0x9c, 0x5, 0x6f, 0x76, 0x43, 0x72, 0x74, 0x1b, 0x7d, 0x81, 0x94, + 0x9f, 0xb3, 0xa2, 0xc5, 0xa5, 0xb1, 0x1f, 0xe, 0x73, 0xf8, 0x9c, 0xf2, + 0x12, 0xef, 0xa2, 0xa, 0xa8, 0x1f, 0x13, 0x80, 0x80, 0xa7, 0x57, 0xa, + 0x78, 0x75, 0x95, 0x96, 0x72, 0x1f, 0x96, 0x72, 0x70, 0x96, 0x70, 0xd6, + 0xa, 0x73, 0xf8, 0x82, 0xf7, 0x3e, 0x1, 0xe8, 0xf8, 0x1d, 0x3, 0xe8, + 0xad, 0xa, 0xf7, 0x36, 0xee, 0x9f, 0xa, 0x9a, 0x99, 0x47, 0xa, 0x7a, + 0x80, 0x9d, 0xa, 0x9c, 0xfb, 0x2d, 0x5e, 0xa, 0xe, 0xf7, 0x59, 0xad, + 0x69, 0xb9, 0x1, 0x85, 0xf7, 0x59, 0x15, 0xf8, 0x89, 0x6, 0x95, 0xad, + 0x5, 0xfc, 0x89, 0x6, 0xe, 0xf8, 0xa8, 0xf7, 0x59, 0xb1, 0x65, 0xb9, + 0x1, 0x85, 0xf7, 0x59, 0x15, 0xfa, 0xd, 0x6, 0x96, 0xb1, 0x5, 0xfe, + 0xd, 0x6, 0xe, 0x73, 0x91, 0xa, 0xf7, 0x3f, 0xcb, 0x4b, 0xf7, 0x5, + 0x13, 0xd0, 0xf7, 0xca, 0xf9, 0x1d, 0x15, 0x79, 0xa, 0xb9, 0x93, 0xb5, + 0xa0, 0x80, 0x96, 0x7f, 0x95, 0x1e, 0x13, 0xe0, 0x7e, 0x96, 0x7e, 0x93, + 0x9d, 0xbd, 0xa, 0xe, 0x73, 0x91, 0xa, 0xf7, 0x44, 0xf7, 0x6, 0x4b, + 0xcb, 0x13, 0xe0, 0xf7, 0x34, 0xf8, 0x48, 0x15, 0xea, 0xa, 0xc8, 0x9c, + 0xa, 0xaa, 0x69, 0x83, 0x5c, 0x84, 0x61, 0x76, 0x96, 0x81, 0x97, 0x81, + 0x1e, 0x13, 0xd0, 0x98, 0x80, 0x99, 0x82, 0x79, 0x1a, 0x66, 0x54, 0x68, + 0x77, 0x7e, 0x1e, 0xe, 0x73, 0xfb, 0x15, 0xf7, 0x7a, 0x12, 0xd2, 0xc0, + 0xa, 0x13, 0xc0, 0xb7, 0xfb, 0x4, 0x15, 0x6b, 0xa, 0x74, 0x98, 0x7f, + 0x98, 0x81, 0x1e, 0x13, 0xa0, 0x96, 0x82, 0x96, 0x82, 0x7b, 0x82, 0xa, + 0xe, 0xf7, 0x5b, 0x91, 0xa, 0xf7, 0x3a, 0xcb, 0x4b, 0xf7, 0x4, 0xec, + 0xcb, 0x4b, 0xf7, 0x4, 0x13, 0xd4, 0xf7, 0xc5, 0xf9, 0x1d, 0x15, 0x79, + 0xa, 0xb8, 0x93, 0xb5, 0xa2, 0x7e, 0x97, 0x7e, 0x95, 0x1e, 0x13, 0xe4, + 0x80, 0x94, 0x80, 0x94, 0x9b, 0xbd, 0xa, 0xf7, 0x65, 0x16, 0x79, 0xa, + 0xb8, 0x93, 0xb5, 0xa3, 0x7d, 0x96, 0x7e, 0x96, 0x1e, 0x13, 0xd8, 0x80, + 0x94, 0x81, 0x93, 0x9b, 0xbd, 0xa, 0xe, 0xf7, 0x5b, 0x91, 0xa, 0xf7, + 0x46, 0xc0, 0xa, 0xec, 0xc0, 0xa, 0x13, 0xe4, 0xf7, 0x34, 0xf8, 0x48, + 0x15, 0x59, 0xa, 0x75, 0x96, 0x80, 0x97, 0x81, 0x1e, 0x13, 0xd8, 0x97, + 0x81, 0x98, 0x82, 0x7a, 0x82, 0xa, 0xf7, 0x6e, 0x7a, 0x15, 0x59, 0xa, + 0x77, 0x94, 0x80, 0x96, 0x82, 0x1e, 0x13, 0xd4, 0x98, 0x80, 0x9a, 0x82, + 0x78, 0x82, 0xa, 0xe, 0xf7, 0x5b, 0xfb, 0x15, 0xf7, 0x7a, 0x12, 0xdf, + 0xc0, 0xa, 0xec, 0xc0, 0xa, 0x13, 0xd0, 0xc4, 0xfb, 0x4, 0x15, 0x6b, + 0xa, 0x75, 0x97, 0x7f, 0x97, 0x81, 0x1e, 0x13, 0xb0, 0x97, 0x81, 0x97, + 0x83, 0x7a, 0x82, 0xa, 0xf7, 0x65, 0x16, 0x6b, 0xa, 0x73, 0x99, 0x80, + 0x98, 0x80, 0x1e, 0x13, 0xa8, 0x96, 0x82, 0x95, 0x83, 0x7b, 0x82, 0xa, + 0xe, 0xf8, 0x3e, 0xa0, 0xf7, 0x6f, 0x77, 0x12, 0xf7, 0xb2, 0xe4, 0x17, + 0xf7, 0x31, 0xfb, 0x33, 0x15, 0xa1, 0x6, 0xbb, 0xf7, 0x66, 0x97, 0xc1, + 0xb2, 0xf7, 0x1, 0xa9, 0xb7, 0x19, 0x81, 0x8e, 0x85, 0xb5, 0xb7, 0x1a, + 0xa7, 0x8e, 0xa9, 0x91, 0xa0, 0x1e, 0xbc, 0xa7, 0x82, 0x82, 0xa0, 0x1f, + 0x84, 0x9c, 0x97, 0x85, 0x9a, 0x1b, 0xa8, 0x9b, 0xa0, 0xa0, 0x1f, 0x13, + 0xe0, 0x9f, 0x7c, 0x9f, 0x6c, 0x72, 0x7e, 0x84, 0x83, 0x7a, 0x1e, 0x84, + 0x7a, 0x75, 0x83, 0x5f, 0x1b, 0x96, 0xc3, 0x9d, 0xa7, 0x9a, 0x9f, 0x8, + 0x9a, 0x9f, 0x97, 0x98, 0xa5, 0x1a, 0xb0, 0x77, 0x9e, 0x76, 0x74, 0x72, + 0x77, 0x67, 0x7a, 0x8e, 0x7f, 0x8d, 0x7e, 0x1e, 0x8d, 0x81, 0x8d, 0x7f, + 0x7c, 0x1a, 0x78, 0x88, 0x6f, 0x84, 0x66, 0x1e, 0x60, 0x75, 0x92, 0x93, + 0x79, 0x1f, 0x92, 0x7a, 0x7e, 0x93, 0x72, 0x1b, 0x6c, 0x7c, 0x77, 0x77, + 0x76, 0x9b, 0x76, 0xa8, 0x9c, 0x99, 0x93, 0x93, 0x9e, 0x1f, 0x93, 0x9e, + 0xa4, 0x92, 0xb3, 0x1b, 0x7f, 0x45, 0x73, 0x55, 0x65, 0x63, 0x99, 0xfb, + 0x20, 0x76, 0x56, 0x61, 0xfb, 0x78, 0x8, 0xe, 0xfb, 0x57, 0x76, 0xf7, + 0x3e, 0xd3, 0x74, 0x76, 0xb2, 0x76, 0xf8, 0x58, 0xd3, 0xf7, 0x3e, 0x77, + 0x12, 0xd8, 0xe0, 0xf7, 0x39, 0xe0, 0x13, 0x9f, 0xf7, 0x30, 0x79, 0x15, + 0x7b, 0x5b, 0x4c, 0x4a, 0x5b, 0x1a, 0x79, 0x99, 0x78, 0x9e, 0xaa, 0xa0, + 0xa3, 0xdb, 0xab, 0x8e, 0xab, 0x94, 0xa9, 0x1e, 0xc2, 0xb8, 0x6f, 0xaf, + 0x1b, 0xa0, 0x9e, 0x9a, 0xa0, 0x9f, 0x78, 0x9b, 0x78, 0x1f, 0x66, 0x67, + 0x71, 0x50, 0x1b, 0x9b, 0xb3, 0x9e, 0xb5, 0xb0, 0xa4, 0x8, 0x84, 0x9d, + 0x88, 0x9d, 0x9e, 0x1a, 0xd0, 0xb3, 0xee, 0xc3, 0xb4, 0x1e, 0x7f, 0x9e, + 0x85, 0x9a, 0xa2, 0x1a, 0x9c, 0x8f, 0x9c, 0x8f, 0x9b, 0x1e, 0xc9, 0xb1, + 0x71, 0xae, 0x1b, 0x9f, 0x9f, 0x9a, 0xa0, 0x9e, 0x77, 0x9c, 0x79, 0x1f, + 0x66, 0x5b, 0x6f, 0x5c, 0x1b, 0x9b, 0xbb, 0xca, 0xcc, 0xbb, 0x1a, 0x9d, + 0x7d, 0x9e, 0x78, 0x6c, 0x76, 0x73, 0x3b, 0x1e, 0x13, 0xcf, 0x6b, 0x88, + 0x6b, 0x82, 0x6d, 0x1e, 0x54, 0x5e, 0xa7, 0x67, 0x1b, 0x76, 0x78, 0x7c, + 0x76, 0x1f, 0x13, 0xaf, 0x77, 0x9e, 0x7b, 0x9e, 0x1e, 0xb0, 0xaf, 0xa5, + 0xc6, 0x1b, 0x7b, 0x63, 0x78, 0x61, 0x66, 0x72, 0x8, 0x92, 0x79, 0x8e, + 0x79, 0x78, 0x1a, 0x46, 0x63, 0x28, 0x53, 0x62, 0x1e, 0x13, 0xcf, 0x97, + 0x78, 0x91, 0x7c, 0x74, 0x1a, 0x7a, 0x87, 0x7a, 0x87, 0x7b, 0x1e, 0x4d, + 0x65, 0xa5, 0x68, 0x1b, 0x13, 0x9f, 0x77, 0x77, 0x7c, 0x76, 0x78, 0x9f, + 0x7a, 0x9d, 0x1f, 0xb0, 0xbb, 0xa7, 0xba, 0x1b, 0xe, 0x84, 0xf7, 0x68, + 0x76, 0xad, 0x76, 0xf7, 0x87, 0x77, 0xad, 0x77, 0x12, 0xbe, 0xf7, 0x8a, + 0x13, 0x98, 0xc0, 0xf7, 0xdb, 0x15, 0x13, 0x58, 0x47, 0xc1, 0x54, 0xcf, + 0xce, 0xc1, 0xc3, 0xce, 0x1e, 0x13, 0xa8, 0xce, 0x55, 0xc0, 0x47, 0x47, + 0x56, 0x56, 0x48, 0x1e, 0xe, 0xf8, 0xa8, 0x80, 0xef, 0x12, 0xc4, 0xf7, + 0x3, 0x35, 0xef, 0xf7, 0x3b, 0xef, 0x2c, 0xf7, 0x3, 0xf7, 0x2c, 0xef, + 0x49, 0xf7, 0x3, 0x13, 0xaa, 0xdd, 0xb2, 0x15, 0x8f, 0xa, 0x13, 0xd2, + 0xf7, 0x9f, 0x16, 0x8f, 0xa, 0x13, 0xcc, 0xf7, 0xa0, 0x16, 0x6f, 0xa0, + 0x75, 0xa7, 0xa7, 0xa2, 0xa1, 0xa7, 0xa7, 0x74, 0xa1, 0x6f, 0x6f, 0x76, + 0x75, 0x6f, 0x1e, 0xe, 0xf9, 0x17, 0xb0, 0xa, 0xcb, 0xd0, 0xa, 0x75, + 0xd0, 0xa, 0xb1, 0xd0, 0xa, 0x13, 0xb5, 0xe0, 0xf9, 0x42, 0xf7, 0x9, + 0x30, 0xa, 0xfc, 0x27, 0xbc, 0x30, 0xa, 0xfb, 0xeb, 0xf8, 0x11, 0x6a, + 0xa, 0x1e, 0x13, 0xb6, 0xe0, 0x2f, 0xa, 0x13, 0x6e, 0xe0, 0x53, 0xfc, + 0x33, 0x15, 0xb5, 0x6, 0xf8, 0xad, 0xf9, 0x48, 0x5, 0x61, 0x6, 0xe, + 0x73, 0xb0, 0xf8, 0x2, 0x1, 0xbe, 0xf7, 0x7a, 0x3, 0xbe, 0xf7, 0x6c, + 0x68, 0xa, 0x96, 0x63, 0xef, 0x6c, 0xc8, 0x1f, 0xf7, 0x12, 0xf7, 0x16, + 0x9e, 0xaa, 0x9c, 0x69, 0xa, 0xe, 0x73, 0xce, 0xa, 0xc7, 0xf7, 0x72, + 0x3, 0xf7, 0x5a, 0xf7, 0x73, 0x15, 0xfb, 0x12, 0xfb, 0x16, 0x77, 0x6c, + 0x7a, 0x44, 0xa, 0x80, 0xb4, 0x27, 0xaa, 0x4e, 0x1f, 0xe, 0xfb, 0x52, + 0x96, 0x76, 0xf9, 0x42, 0x77, 0x1, 0x82, 0x81, 0x15, 0xb7, 0x6, 0xf7, + 0x36, 0xf9, 0x42, 0x5, 0x5c, 0x6, 0xe, 0x8b, 0xb8, 0xf7, 0x65, 0xb1, + 0xe1, 0xb1, 0xf7, 0x6b, 0xb0, 0x1, 0xf7, 0x4e, 0xf7, 0x1, 0xf7, 0x8a, + 0xa2, 0x3, 0xce, 0xf7, 0x92, 0x15, 0xfb, 0x41, 0xf4, 0x3a, 0xf6, 0xf6, + 0xf7, 0x12, 0xba, 0xdf, 0xbf, 0x1e, 0x7a, 0x94, 0x5, 0x53, 0x63, 0x26, + 0x64, 0x57, 0x1b, 0xfb, 0x13, 0x58, 0xbf, 0xf7, 0x31, 0x1f, 0xf7, 0xac, + 0x6, 0x97, 0xb1, 0x5, 0xfb, 0xb7, 0x6, 0xa5, 0x94, 0xab, 0x94, 0xa7, + 0x1e, 0xf7, 0xb5, 0x6, 0x99, 0xb1, 0x5, 0xfb, 0xb5, 0x6, 0xd5, 0x97, + 0xe2, 0xf7, 0x21, 0xf1, 0x1b, 0xf7, 0x6, 0x91, 0x52, 0x2e, 0x1f, 0xa2, + 0xf7, 0x22, 0x6, 0x9e, 0x63, 0x79, 0xa5, 0x2c, 0x1b, 0x52, 0xfb, 0x44, + 0x53, 0xfb, 0x58, 0x49, 0x1f, 0x28, 0x6, 0x7e, 0x65, 0x5, 0xeb, 0x6, + 0x83, 0x6e, 0x83, 0x6f, 0x89, 0x6e, 0x8, 0x4a, 0x6, 0x7e, 0x65, 0x5, + 0xe, 0xf9, 0x3, 0xf7, 0x8d, 0x9f, 0x8a, 0x76, 0xf8, 0x16, 0x9f, 0x12, + 0xf7, 0x3b, 0xd2, 0xf7, 0x8e, 0xa5, 0xf7, 0xd0, 0xd2, 0x13, 0xbc, 0xf7, + 0x9, 0xf7, 0x8d, 0x15, 0xf7, 0x3f, 0x9f, 0x6, 0x57, 0x91, 0x8d, 0x95, + 0xbb, 0x1a, 0xf7, 0xc0, 0xbd, 0x7, 0xb4, 0x9c, 0x6c, 0x66, 0x94, 0x1f, + 0x9f, 0xe3, 0xfb, 0xed, 0x33, 0x9f, 0x6, 0xb0, 0x94, 0x9c, 0xaa, 0xb5, + 0x1b, 0xbc, 0xfb, 0xc0, 0x6, 0x5b, 0x8d, 0x81, 0x57, 0x85, 0x1e, 0xf7, + 0xd3, 0x77, 0x15, 0xf7, 0x17, 0x9f, 0x6, 0x5e, 0x8f, 0x83, 0xa6, 0xb7, + 0x1a, 0xf7, 0x65, 0x8d, 0x7, 0x13, 0x7c, 0xf7, 0x29, 0xfb, 0xc6, 0x5, + 0x96, 0x6, 0xf7, 0x2c, 0xf7, 0xc8, 0x5, 0x8d, 0xfb, 0x72, 0x6, 0x13, + 0xbc, 0x5b, 0x8e, 0x81, 0x57, 0x85, 0x1e, 0x77, 0xf7, 0x3e, 0x9f, 0x7, + 0x57, 0x91, 0x8d, 0x95, 0xbb, 0x1a, 0xf7, 0x89, 0x7, 0xae, 0x97, 0x9d, + 0xb7, 0x8d, 0x1e, 0x9f, 0x24, 0x7, 0xfb, 0x34, 0xfb, 0xc9, 0xfb, 0x2e, + 0xf7, 0xc9, 0x5, 0xfb, 0xd, 0x77, 0x6, 0xa8, 0xa7, 0x77, 0x6d, 0x97, + 0x1f, 0xfb, 0x83, 0x7, 0x5f, 0x83, 0x70, 0x5f, 0x87, 0x1e, 0xe, 0xf7, + 0xd2, 0xe1, 0xf7, 0x70, 0x15, 0xf8, 0x96, 0xb5, 0xfc, 0x96, 0x6, 0xe, + 0xfb, 0x63, 0xa3, 0x73, 0xf7, 0x4, 0xf3, 0x76, 0xf8, 0x2c, 0xab, 0xf7, + 0x7b, 0xa1, 0x12, 0x13, 0xb8, 0xb8, 0xf8, 0x20, 0x15, 0xe2, 0x6, 0x81, + 0x75, 0x53, 0xfb, 0xb3, 0x74, 0xfb, 0x3, 0x8, 0x55, 0x80, 0x70, 0x22, + 0x54, 0x1b, 0x77, 0x87, 0x8e, 0x95, 0x90, 0x8e, 0x92, 0x8e, 0x93, 0x1f, + 0x13, 0x78, 0x8d, 0x91, 0x8c, 0x91, 0x91, 0x1a, 0x98, 0x82, 0xa3, 0x70, + 0x70, 0x7e, 0x68, 0x7c, 0x7a, 0x98, 0x5e, 0xcc, 0xf7, 0x9, 0xc3, 0xf7, + 0x34, 0xf7, 0xf, 0xa7, 0x1e, 0xd3, 0xf7, 0xd4, 0x5, 0xf7, 0x2f, 0x6, + 0x97, 0x8f, 0x87, 0x86, 0x88, 0x8b, 0x87, 0x8a, 0x88, 0x1f, 0x6e, 0x20, + 0x53, 0xfb, 0x52, 0x66, 0x1a, 0x6c, 0x9d, 0x77, 0xaa, 0xb8, 0xb7, 0xb9, + 0xc6, 0xb5, 0x1e, 0x7b, 0x94, 0x5, 0x78, 0x7b, 0x61, 0x59, 0x78, 0x1b, + 0x86, 0x84, 0x8d, 0x94, 0x9a, 0xe3, 0xf7, 0xce, 0x92, 0xa7, 0x1f, 0x90, + 0x9e, 0x8c, 0x91, 0x8a, 0x8e, 0x86, 0x8e, 0x18, 0x85, 0x80, 0x89, 0x89, + 0x7b, 0x1f, 0x89, 0x7b, 0x75, 0x89, 0x6f, 0x1b, 0xfb, 0x2a, 0x6, 0xf7, + 0x16, 0xb0, 0xa7, 0xf0, 0xea, 0x1b, 0x9f, 0x9a, 0x86, 0x80, 0x86, 0x88, + 0x87, 0x88, 0x85, 0x1f, 0x88, 0x85, 0x87, 0x83, 0x7d, 0x1a, 0x70, 0x9b, + 0x7d, 0xa0, 0x9f, 0xa5, 0x99, 0xb2, 0xba, 0x55, 0xa1, 0x5d, 0xfb, 0x37, + 0x58, 0xfb, 0x31, 0x2b, 0x6f, 0x1e, 0x34, 0x6, 0xe, 0xfb, 0x60, 0xa4, + 0xf7, 0x53, 0x76, 0xf8, 0x29, 0xab, 0xf7, 0x7c, 0xa1, 0x12, 0xfb, 0x21, + 0xd3, 0x17, 0xf7, 0x6c, 0xf8, 0x40, 0x15, 0xd2, 0x9d, 0xb0, 0xf7, 0x35, + 0xf7, 0x1, 0x1b, 0x13, 0xf8, 0xa9, 0x97, 0x7d, 0x82, 0x1f, 0x86, 0x7f, + 0x81, 0x7d, 0x1a, 0x85, 0x8d, 0x86, 0x8e, 0x85, 0x1e, 0x8e, 0x85, 0x8e, + 0x84, 0x89, 0x85, 0x67, 0xfb, 0x24, 0x18, 0xfb, 0xea, 0x6b, 0x15, 0xe4, + 0x6, 0x87, 0x79, 0x5f, 0xfb, 0x69, 0x64, 0xfb, 0x4e, 0x8, 0x4e, 0x7e, + 0x70, 0x2a, 0x57, 0x1b, 0x75, 0x88, 0x8f, 0x94, 0x90, 0x8e, 0x92, 0x8d, + 0x92, 0x1f, 0x8d, 0x91, 0x8d, 0x91, 0x92, 0x1a, 0x9e, 0x7c, 0x9c, 0x77, + 0x6b, 0x82, 0x6c, 0x77, 0x7e, 0x94, 0x5b, 0xd1, 0xea, 0xce, 0xf7, 0x3, + 0xf7, 0x47, 0xb3, 0x1e, 0xd0, 0xf7, 0xca, 0x5, 0xf7, 0x3a, 0x6, 0x7a, + 0x35, 0x4c, 0xfb, 0x67, 0x53, 0x1a, 0x6a, 0x9e, 0x78, 0xa7, 0xad, 0xb0, + 0x9c, 0xe3, 0xc9, 0x1e, 0x7b, 0x94, 0x5, 0x70, 0x74, 0x67, 0x61, 0x79, + 0x1b, 0x86, 0x84, 0x8d, 0x95, 0x1f, 0x13, 0x30, 0xa1, 0xf7, 0x1d, 0xf8, + 0xc0, 0x94, 0xac, 0x1e, 0x8c, 0x90, 0x8c, 0x90, 0x8f, 0x1a, 0x90, 0x89, + 0x8f, 0x88, 0x87, 0x85, 0x88, 0x89, 0x84, 0x1e, 0x88, 0x84, 0x84, 0x88, + 0x83, 0x1b, 0x83, 0x7d, 0x8e, 0x8e, 0x7b, 0x1f, 0x8d, 0x7b, 0x7a, 0x8e, + 0x7d, 0x1b, 0xfb, 0x2e, 0x4a, 0xfb, 0x1e, 0xfb, 0x8, 0x6b, 0x1f, 0x30, + 0x6, 0xe, 0x79, 0x9d, 0xf8, 0x3f, 0x98, 0xf7, 0x68, 0x9c, 0x91, 0x92, + 0x6, 0xfb, 0x64, 0x8f, 0xf8, 0x6c, 0x8d, 0x7, 0x1e, 0xa0, 0x39, 0x63, + 0xff, 0xc, 0x9, 0xaa, 0xa, 0xd6, 0xb, 0xf8, 0x88, 0x14, 0xf7, 0xf9, + 0x15, 0xb0, 0x13, 0x0, 0xcd, 0x2, 0x0, 0x1, 0x0, 0x13, 0x0, 0x17, + 0x0, 0x31, 0x0, 0x34, 0x0, 0x61, 0x0, 0x67, 0x0, 0x9c, 0x0, 0xa5, + 0x0, 0xb6, 0x0, 0xbf, 0x0, 0xf3, 0x1, 0xf, 0x1, 0x1b, 0x1, 0x27, + 0x1, 0x2c, 0x1, 0x4e, 0x1, 0x53, 0x1, 0x59, 0x1, 0x6b, 0x1, 0x72, + 0x1, 0x88, 0x1, 0xa2, 0x1, 0xb8, 0x1, 0xdf, 0x1, 0xf3, 0x2, 0x2, + 0x2, 0x21, 0x2, 0x2a, 0x2, 0x37, 0x2, 0x57, 0x2, 0x63, 0x2, 0x6e, + 0x2, 0x85, 0x2, 0x99, 0x2, 0xae, 0x2, 0xbd, 0x2, 0xe3, 0x2, 0xea, + 0x2, 0xef, 0x2, 0xf7, 0x3, 0x37, 0x3, 0x53, 0x3, 0x62, 0x3, 0x71, + 0x3, 0x7e, 0x3, 0x8f, 0x3, 0xa0, 0x3, 0xae, 0x3, 0xe7, 0x4, 0x1f, + 0x4, 0x2c, 0x4, 0x32, 0x4, 0x3f, 0x4, 0x44, 0x4, 0x4c, 0x4, 0x51, + 0x4, 0x55, 0x4, 0x61, 0x4, 0x6a, 0x4, 0x71, 0x4, 0x7f, 0x4, 0x8d, + 0x4, 0x9d, 0x4, 0xa7, 0x4, 0xb1, 0x4, 0xbb, 0x4, 0xc8, 0x4, 0xd4, + 0x4, 0xf9, 0x5, 0x3, 0x5, 0xa, 0x5, 0x2d, 0x5, 0x40, 0x5, 0x53, + 0x5, 0x5e, 0x5, 0x64, 0x5, 0x6c, 0x5, 0x8c, 0x5, 0xac, 0x5, 0xcc, + 0x5, 0xdd, 0x5, 0xe2, 0x5, 0xec, 0x5, 0xf6, 0x6, 0x2, 0x6, 0x1e, + 0x6, 0x26, 0x6, 0x36, 0x6, 0x46, 0x6, 0x55, 0x6, 0x64, 0x6, 0x6d, + 0x6, 0x76, 0x6, 0x7b, 0x6, 0x8b, 0x6, 0x9b, 0x6, 0x9f, 0x6, 0xa7, + 0x6, 0xaf, 0x6, 0xc3, 0x6, 0xd6, 0x6, 0xe2, 0x6, 0xe8, 0x6, 0xec, + 0x6, 0xf7, 0x7, 0xa, 0x7, 0x1d, 0x7, 0x22, 0x7, 0x2d, 0x7, 0x36, + 0x7, 0x48, 0x7, 0x5a, 0x7, 0x5f, 0x7, 0x67, 0x7, 0x6f, 0x7, 0x75, + 0x7, 0x86, 0x7, 0x97, 0x7, 0xa1, 0x7, 0xab, 0x7, 0xb5, 0x7, 0xbc, + 0x7, 0xc1, 0x7, 0xc6, 0x7, 0xcb, 0x7, 0xcf, 0x7, 0xd3, 0x7, 0xd7, + 0x7, 0xe3, 0x7, 0xee, 0x7, 0xf3, 0x7, 0xfc, 0x8, 0x7, 0x8, 0x16, + 0x8, 0x19, 0x8, 0x22, 0x8, 0x26, 0x8, 0x2d, 0x8, 0x33, 0x8, 0x3a, + 0x8, 0x41, 0x8, 0x46, 0x8, 0x4b, 0x8, 0x59, 0x8, 0x67, 0x8, 0x75, + 0x8, 0x83, 0x8, 0x91, 0x8, 0x9f, 0x8, 0xab, 0x8, 0xaf, 0x8, 0xb3, + 0x8, 0xc0, 0x8, 0xcd, 0x8, 0xda, 0x8, 0xe7, 0x8, 0xf4, 0x8, 0xfc, + 0x9, 0x4, 0x9, 0xb, 0x9, 0x10, 0x9, 0x1c, 0x9, 0x28, 0x9, 0x34, + 0x9, 0x3a, 0x9, 0x3e, 0x9, 0x42, 0x9, 0x4d, 0x9, 0x55, 0x9, 0x60, + 0x9, 0x6b, 0x9, 0x6f, 0x9, 0x76, 0x9, 0x7d, 0x9, 0x84, 0x9, 0x8b, + 0x9, 0x90, 0x9, 0x95, 0x9, 0x9a, 0x9, 0xa4, 0x9, 0xae, 0x9, 0xb8, + 0x9, 0xbb, 0x9, 0xbf, 0x9, 0xc8, 0x9, 0xd1, 0x9, 0xda, 0x9, 0xe3, + 0x9, 0xec, 0x9, 0xf5, 0x9, 0xfe, 0xa, 0x7, 0xa, 0x10, 0xa, 0x19, + 0xa, 0x1f, 0xa, 0x25, 0xa, 0x2b, 0xa, 0x31, 0xa, 0x37, 0xa, 0x3b, + 0xa, 0x41, 0xa, 0x46, 0xa, 0x4a, 0xa, 0x4e, 0xa, 0x52, 0x70, 0xa1, + 0x75, 0xa6, 0xa6, 0xa1, 0xa1, 0xa6, 0xa6, 0x75, 0xa1, 0x70, 0x70, 0x75, + 0x75, 0x70, 0x1e, 0xb, 0x20, 0xa, 0x25, 0xa, 0x61, 0xa, 0x71, 0xb5, + 0xb6, 0xad, 0xaf, 0xd5, 0xc7, 0x1e, 0x38, 0xa, 0x47, 0x87, 0x7b, 0x52, + 0x5, 0x89, 0x6, 0xa4, 0x6a, 0xb2, 0x5f, 0xa, 0x1e, 0xb, 0x15, 0x21, + 0xa, 0x15, 0xfb, 0x52, 0xf7, 0x1a, 0x54, 0xe0, 0xae, 0xa, 0xf7, 0x84, + 0x4f, 0xa, 0xfb, 0x6e, 0xfb, 0x71, 0x1e, 0xf4, 0x16, 0xd8, 0xeb, 0xf7, + 0xdd, 0xf7, 0x5e, 0xef, 0xaa, 0x48, 0xfb, 0x17, 0x2e, 0x2b, 0xfb, 0xdb, + 0xfb, 0x5f, 0xfb, 0x16, 0x8b, 0xf7, 0x1a, 0xd9, 0x1e, 0xb, 0xf7, 0x5c, + 0x16, 0x20, 0xa, 0xe, 0x15, 0x38, 0xb8, 0x4e, 0xf5, 0xf7, 0x2d, 0xf7, + 0x1d, 0xf7, 0x49, 0xf7, 0xf, 0xcd, 0x6c, 0xdd, 0xfb, 0x8, 0xfb, 0x26, + 0xfb, 0x28, 0xfb, 0x35, 0xfb, 0x27, 0x1e, 0xdf, 0x8a, 0x15, 0xc9, 0xe6, + 0xf7, 0x76, 0xf7, 0x4, 0xb8, 0xa4, 0x7d, 0xfb, 0x5, 0x5a, 0x3c, 0xfb, + 0x7e, 0xfb, 0x6, 0x59, 0x6d, 0xaa, 0xe6, 0x1e, 0xb, 0x35, 0xa, 0x83, + 0x68, 0x7c, 0x19, 0x45, 0xa, 0xb, 0x36, 0xa, 0xaa, 0xa2, 0x7c, 0x4d, + 0x2e, 0x2c, 0xfb, 0x67, 0x21, 0x70, 0x6a, 0x9d, 0xc0, 0x1e, 0xb, 0x3a, + 0xa, 0xeb, 0xa, 0x37, 0xa, 0xd2, 0xa, 0xb, 0xf7, 0x88, 0x9b, 0x6, + 0x58, 0x8f, 0x7c, 0xa1, 0xa6, 0x1a, 0x9e, 0x92, 0xa1, 0x90, 0x9f, 0x1e, + 0xf5, 0xf8, 0x1b, 0xa3, 0xe1, 0x90, 0xa0, 0xce, 0x94, 0x19, 0x93, 0xa, + 0xbc, 0x85, 0x9c, 0x76, 0x6f, 0x1a, 0x79, 0x87, 0x76, 0x85, 0x76, 0x1e, + 0xfb, 0x0, 0xfc, 0x1b, 0x73, 0x36, 0x87, 0x77, 0x4a, 0x81, 0x19, 0xb, + 0x72, 0xa, 0x70, 0xa8, 0xd8, 0x9d, 0x90, 0x42, 0xa, 0x79, 0x87, 0x9a, + 0x97, 0x8d, 0x8c, 0x94, 0xe6, 0xf7, 0xfb, 0x1f, 0x56, 0x81, 0x59, 0x82, + 0x59, 0x85, 0x8, 0xb, 0x3f, 0xa, 0x5, 0x84, 0x64, 0x2c, 0x79, 0x71, + 0x1b, 0x3e, 0xa, 0xb, 0x3d, 0xa, 0xb7, 0x70, 0xad, 0x58, 0x5b, 0xa, + 0x1e, 0x54, 0xa, 0xb, 0x2b, 0xa, 0x5d, 0xa, 0xb, 0xe5, 0x4d, 0xb9, + 0x58, 0xfb, 0x1, 0x3a, 0xfb, 0x11, 0x27, 0x1e, 0xc9, 0x5a, 0x15, 0xd1, + 0xc0, 0xf7, 0x4c, 0xd6, 0xb5, 0x94, 0x65, 0x6f, 0x4e, 0x56, 0xfb, 0x4f, + 0x3e, 0x6a, 0x7b, 0xa9, 0xa9, 0x1e, 0xb, 0x6a, 0xa, 0x2f, 0xa, 0xb, + 0x15, 0xb2, 0x6, 0x39, 0xa, 0xb, 0x4e, 0xa, 0x69, 0x6c, 0x97, 0xb0, + 0x91, 0x8b, 0x91, 0x8d, 0x92, 0x1f, 0x8e, 0x97, 0x98, 0x3c, 0xa, 0xb, + 0xf7, 0xd2, 0xf7, 0x1f, 0x22, 0xa, 0xb, 0x15, 0x32, 0xa, 0x7e, 0x80, + 0xfb, 0x2e, 0x74, 0xa, 0xf7, 0x2f, 0xa9, 0x7d, 0x4f, 0x7e, 0x8a, 0x7d, + 0x8a, 0x7a, 0x41, 0xa, 0xe, 0x1e, 0x7b, 0xf7, 0x8a, 0x9b, 0x7, 0x51, + 0x90, 0x86, 0xa0, 0x7f, 0xd1, 0x2c, 0xf8, 0xc0, 0x18, 0x71, 0x6, 0xfb, + 0xce, 0xfc, 0xb3, 0x5a, 0x35, 0x76, 0xb, 0x6e, 0x8e, 0x32, 0xef, 0xc7, + 0xc0, 0xa9, 0xf7, 0xe, 0xde, 0x1e, 0xfb, 0x6b, 0x6b, 0x15, 0xe5, 0xe5, + 0xf7, 0x70, 0xf7, 0x9, 0xb, 0x7b, 0x7, 0xb1, 0xa9, 0x7a, 0x5f, 0x79, + 0x2f, 0xfb, 0xd6, 0x82, 0x6c, 0x1f, 0x5f, 0x7e, 0x58, 0xfb, 0x1e, 0xfb, + 0x1e, 0x1b, 0x4b, 0x40, 0xab, 0xe4, 0xc1, 0xf4, 0xf7, 0xe8, 0x97, 0xb9, + 0x1f, 0xa9, 0x93, 0xa4, 0xa2, 0xc5, 0x1b, 0xb, 0x7f, 0x95, 0x5, 0x5f, + 0x5e, 0x77, 0x72, 0x7c, 0xec, 0xa, 0x91, 0x92, 0xaa, 0xe7, 0xf7, 0xe9, + 0x8e, 0x97, 0x1f, 0xb, 0xf7, 0x1d, 0xf3, 0xdd, 0x23, 0x5, 0xaf, 0x6, + 0x33, 0xf7, 0x3d, 0x5, 0x5a, 0x6, 0xb, 0x15, 0xc5, 0x86, 0x9c, 0x7f, + 0x67, 0x59, 0x27, 0xfb, 0xae, 0x7c, 0xa, 0xf7, 0x2d, 0xd2, 0xe3, 0xf7, + 0x19, 0xb2, 0x1e, 0xf5, 0xf8, 0x7, 0x95, 0xae, 0x97, 0x9c, 0xc6, 0x96, + 0x19, 0xb, 0x53, 0xa, 0x2e, 0xa, 0x13, 0x78, 0x62, 0xa, 0xb, 0xb4, + 0xb9, 0xf7, 0x42, 0x8, 0xf7, 0x37, 0x8b, 0x86, 0x5a, 0x40, 0xa, 0xb, + 0xe5, 0xae, 0xd9, 0xe1, 0xc1, 0x1b, 0x9e, 0x98, 0x84, 0x64, 0x83, 0x81, + 0xfb, 0x10, 0xfb, 0x62, 0x61, 0x1f, 0x84, 0x75, 0x15, 0xa7, 0x8f, 0x5, + 0xf7, 0x36, 0xa2, 0xed, 0xdc, 0xda, 0x1a, 0xb, 0x7b, 0x7, 0xc2, 0x90, + 0x7c, 0x76, 0x1f, 0x6f, 0x3f, 0x4b, 0xa, 0xb, 0x4a, 0xa, 0x8f, 0x99, + 0x1f, 0xe3, 0xf7, 0xd6, 0x88, 0x8d, 0xb, 0x7b, 0x88, 0x7b, 0x87, 0x7c, + 0x1f, 0x9f, 0x86, 0xcf, 0xf7, 0x7c, 0x79, 0x8f, 0x81, 0x75, 0x82, 0x78, + 0x82, 0x7d, 0x19, 0x6c, 0x75, 0xb, 0x63, 0xa, 0xdb, 0x8f, 0x5d, 0x50, + 0x79, 0x1f, 0xfb, 0x9, 0xfc, 0x40, 0x7a, 0x4d, 0x76, 0x7a, 0x5a, 0x82, + 0x19, 0xb, 0x1f, 0xda, 0xf7, 0xbf, 0x5, 0x41, 0x6, 0x64, 0x20, 0x75, + 0x4c, 0x5a, 0x41, 0x8, 0x57, 0x69, 0x4c, 0x2d, 0x60, 0x1b, 0xb, 0xb8, + 0xb3, 0xb0, 0xce, 0x96, 0x1f, 0x6f, 0x6, 0x76, 0x84, 0x83, 0x74, 0x65, + 0x1b, 0xb, 0x1a, 0x86, 0x8d, 0x88, 0x91, 0x94, 0xd0, 0xc9, 0xa7, 0xab, + 0x1e, 0xaa, 0xa6, 0xbf, 0xb1, 0xa8, 0xa2, 0x8, 0x94, 0x7, 0x84, 0x97, + 0x5f, 0xc1, 0x7b, 0x9d, 0x8, 0x9c, 0x7c, 0x56, 0xd9, 0x7e, 0x1b, 0x83, + 0x8b, 0x85, 0x89, 0xb, 0xf7, 0x76, 0xf7, 0x8a, 0x4c, 0xa, 0xb, 0xf9, + 0x54, 0x31, 0xa, 0xb, 0x9a, 0x1a, 0x9d, 0x7c, 0x9c, 0x76, 0x80, 0xb, + 0x12, 0xf8, 0xf, 0xe5, 0x17, 0xf7, 0x9, 0xb8, 0x15, 0xb2, 0xb3, 0xf7, + 0x1c, 0xa4, 0xcb, 0x1e, 0xcf, 0xa5, 0xc5, 0xb9, 0xba, 0x1b, 0xcc, 0x8c, + 0x51, 0x70, 0xfb, 0xb, 0x31, 0xfb, 0x4e, 0xfb, 0xe, 0x72, 0x72, 0x96, + 0xa5, 0x1f, 0x7d, 0x64, 0x15, 0x7f, 0xa2, 0x9f, 0x86, 0xa4, 0x1b, 0xf7, + 0x1e, 0xf7, 0x34, 0xf7, 0x3a, 0xf7, 0x2f, 0xd3, 0x6d, 0xc6, 0x32, 0x39, + 0x52, 0x42, 0x68, 0xb, 0x75, 0x74, 0x78, 0x77, 0x7b, 0x7a, 0x8, 0x40, + 0x3a, 0x7d, 0x74, 0x7d, 0x44, 0xa, 0x84, 0x9d, 0x5a, 0xa1, 0x5a, 0x1f, + 0x95, 0x73, 0x97, 0x74, 0x95, 0x77, 0x8, 0xb, 0x15, 0x51, 0x62, 0x6e, + 0x77, 0x7f, 0x1b, 0x82, 0x84, 0x93, 0x92, 0x97, 0x97, 0xb3, 0xb, 0xfb, + 0x82, 0x5c, 0x1a, 0x79, 0x8b, 0x5f, 0xba, 0xc3, 0xb7, 0xc2, 0xc6, 0xb2, + 0x1e, 0xb, 0x15, 0xf7, 0x29, 0xf7, 0x97, 0x5, 0x8c, 0x6, 0xb7, 0xfb, + 0x97, 0x5, 0xb, 0x74, 0x39, 0x77, 0x37, 0x79, 0x1a, 0x7c, 0x8d, 0x66, + 0xb8, 0xbd, 0xa5, 0xa5, 0xe6, 0xca, 0x1e, 0xb, 0xf8, 0x8f, 0x6, 0xc9, + 0xf7, 0x36, 0x7b, 0x93, 0x5, 0x28, 0x44, 0x60, 0x65, 0xfb, 0x55, 0x1b, + 0xb, 0xf7, 0x5d, 0xf7, 0x3c, 0xfb, 0x4, 0xd6, 0xfb, 0xc, 0xfb, 0x47, + 0xfb, 0x78, 0xb, 0x1, 0x85, 0xf8, 0xf8, 0x3, 0x85, 0x16, 0xf8, 0x8d, + 0x6, 0xc1, 0xf7, 0x3c, 0x78, 0x8e, 0x5, 0x24, 0x5a, 0x5c, 0x6b, 0xfb, + 0x38, 0x1b, 0xfb, 0x2b, 0x6, 0xf8, 0x77, 0xf8, 0xef, 0x5, 0x99, 0xfc, + 0x7a, 0x7, 0x5d, 0xfb, 0x26, 0x9e, 0x86, 0x5, 0xd0, 0xad, 0xab, 0xb9, + 0xf7, 0x2d, 0x1b, 0xf7, 0x35, 0x6, 0xfc, 0x73, 0xfc, 0xef, 0x5, 0xb, + 0x6e, 0x8d, 0x6d, 0xb9, 0xc1, 0xae, 0xb9, 0xce, 0xbd, 0x1e, 0x7d, 0x98, + 0x5, 0x5c, 0x66, 0x72, 0x6b, 0x77, 0x1b, 0x89, 0x7d, 0x8d, 0x9a, 0x1f, + 0xa9, 0xdb, 0xf7, 0x8b, 0xb6, 0x1a, 0xb5, 0x74, 0xa3, 0x5d, 0x38, 0x2f, + 0xfb, 0x1f, 0x41, 0x5c, 0x1e, 0x89, 0x8d, 0xcb, 0xf7, 0x65, 0x88, 0x8d, + 0x55, 0x80, 0x55, 0x81, 0x55, 0x81, 0x19, 0xb, 0x7b, 0xa, 0x67, 0x6, + 0xfb, 0x22, 0x22, 0x31, 0xf4, 0x5, 0x66, 0x6, 0xe, 0x15, 0x8e, 0x6, + 0x4d, 0xa, 0xb, 0x73, 0xa, 0x57, 0x5f, 0xb4, 0xc8, 0x98, 0x8e, 0x98, + 0x90, 0x99, 0x1f, 0xb, 0xf8, 0x80, 0x31, 0xa, 0xb, 0x84, 0x1b, 0x75, + 0x7d, 0x7c, 0x77, 0x7a, 0xb, 0xa7, 0x80, 0x71, 0xa, 0xb, 0x15, 0x20, + 0xa, 0xb, 0xea, 0xa, 0xc7, 0x9c, 0xa, 0xab, 0x69, 0x83, 0x5e, 0x83, + 0x61, 0xb, 0x7d, 0xa, 0xf7, 0x76, 0xaf, 0xf8, 0x2a, 0x77, 0xb, 0xfb, + 0x21, 0xfb, 0x36, 0x5c, 0xa, 0xb, 0xfb, 0x3c, 0xfb, 0x23, 0x4c, 0xab, + 0x3d, 0xf4, 0xef, 0xe6, 0xe7, 0x9b, 0x96, 0xb, 0x7d, 0x7, 0xb4, 0x9b, + 0x81, 0x6e, 0x1f, 0x70, 0x42, 0xfb, 0x86, 0x5f, 0x1a, 0xb, 0x9e, 0xa, + 0xf7, 0x3b, 0xf0, 0x9f, 0xa, 0x95, 0x97, 0x47, 0xa, 0x7f, 0x82, 0x9d, + 0xa, 0xb, 0x60, 0xfb, 0x19, 0xfb, 0x2d, 0xfb, 0x4f, 0xfb, 0x27, 0xb, + 0x15, 0xa8, 0x6, 0xa7, 0x92, 0x9c, 0x9e, 0xa7, 0x1b, 0xb, 0x15, 0x7b, + 0x4e, 0x86, 0x75, 0x74, 0x1a, 0x7a, 0x8b, 0xb, 0x5f, 0x9e, 0x7c, 0xaf, + 0xe5, 0xd5, 0xf7, 0x11, 0xf7, 0x5, 0xcf, 0x1e, 0xb, 0x1f, 0xa0, 0x89, + 0xaa, 0xf7, 0x2d, 0x5, 0xfc, 0x85, 0x7b, 0x6, 0xb, 0x1b, 0x2e, 0x3c, + 0x48, 0x2a, 0x4a, 0x90, 0x80, 0xf7, 0x1e, 0xfb, 0x27, 0x1f, 0xac, 0x68, + 0xb0, 0x6c, 0x4b, 0x1a, 0x59, 0x68, 0x39, 0x2d, 0x31, 0x53, 0xda, 0xe4, + 0x93, 0x8c, 0x90, 0x8c, 0x93, 0x1e, 0x77, 0x8d, 0x5, 0xb, 0x66, 0xa, + 0xa8, 0x1f, 0x80, 0xa7, 0x57, 0xa, 0x77, 0xb, 0x60, 0xa, 0x9d, 0xa8, + 0x80, 0x80, 0xb, 0xf8, 0x64, 0xf7, 0x27, 0x15, 0xf7, 0x4c, 0xf7, 0x49, + 0x8d, 0x89, 0x8c, 0x8c, 0x51, 0xfb, 0x48, 0x5, 0xfb, 0x45, 0x61, 0x15, + 0xf7, 0x3c, 0x6, 0x6b, 0x22, 0x5, 0xca, 0x6, 0xa9, 0xf3, 0x5, 0xc5, + 0x6, 0xb, 0x15, 0x92, 0x7f, 0xb7, 0x55, 0x9b, 0x79, 0x8, 0x7a, 0x9a, + 0xc0, 0x3d, 0x98, 0x1b, 0x93, 0x8b, 0x91, 0x8d, 0xb, 0x1a, 0x90, 0x89, + 0x8e, 0x85, 0x82, 0x46, 0x4d, 0x6f, 0x6b, 0x1e, 0x6c, 0x70, 0x57, 0x65, + 0x6e, 0x74, 0x8, 0xb, 0x15, 0x45, 0xb9, 0x50, 0xd4, 0xde, 0xf0, 0xed, + 0xf7, 0xc, 0xb, 0x94, 0x7a, 0x5, 0x59, 0xa, 0xb, 0x1b, 0x41, 0x7a, + 0x47, 0x65, 0x81, 0x1f, 0xb, 0x1b, 0xf7, 0x19, 0xd1, 0xf3, 0xe9, 0xcd, + 0x77, 0xb3, 0x2e, 0xe6, 0x1f, 0x35, 0xe1, 0x7e, 0xa2, 0xba, 0x1a, 0xce, + 0xbe, 0xac, 0xc2, 0xf7, 0xd, 0x8f, 0x22, 0x52, 0x1e, 0x9d, 0x88, 0x5, + 0xb, 0xf7, 0x5b, 0x8b, 0xaf, 0xf8, 0xfd, 0x77, 0x1, 0x83, 0xf8, 0xcb, + 0x3, 0x83, 0x16, 0xf8, 0x91, 0x6, 0xc5, 0xf7, 0x47, 0x77, 0x91, 0x5, + 0xfb, 0x26, 0x49, 0x3a, 0x88, 0xfb, 0xd, 0x1b, 0xb, 0x1f, 0x7a, 0x99, + 0x5, 0x5c, 0x5b, 0x45, 0x44, 0xfb, 0x5, 0x1b, 0xfb, 0xb, 0x54, 0xde, + 0xf7, 0x17, 0xf7, 0x27, 0xf1, 0xf7, 0x86, 0xf7, 0x5c, 0xf7, 0x23, 0x96, + 0xfb, 0x1a, 0x6f, 0x1f, 0xb, 0xf7, 0xb, 0xf7, 0xac, 0xf8, 0x66, 0xf7, + 0xb, 0xaf, 0x77, 0xa5, 0x66, 0x71, 0x80, 0x76, 0x7d, 0xb, 0x9d, 0x1b, + 0x43, 0xa, 0xb, 0x7d, 0x94, 0x5, 0x5f, 0x68, 0x6f, 0x68, 0x78, 0x1b, + 0xb, 0x7f, 0x97, 0x5, 0x62, 0x59, 0x61, 0x69, 0x55, 0x1b, 0xb, 0x1b, + 0xbc, 0xf7, 0x40, 0x5, 0xd5, 0xa0, 0x82, 0x98, 0xe0, 0x1b, 0xb, 0x2d, + 0x68, 0x1e, 0x98, 0x83, 0x5, 0x96, 0x94, 0xa4, 0xb5, 0xc5, 0x1b, 0xba, + 0xa8, 0x67, 0x6d, 0x7c, 0x8a, 0x67, 0x2f, 0x32, 0x1f, 0xfb, 0x19, 0xfb, + 0x16, 0x5, 0xb, 0x80, 0xbc, 0x70, 0x76, 0xf8, 0x41, 0xa1, 0xb, 0xb7, + 0xa, 0xfb, 0x2, 0xf7, 0x22, 0xc5, 0xa, 0x78, 0x92, 0x56, 0xa, 0x9f, + 0x7a, 0x80, 0xa, 0xb7, 0xa, 0xfb, 0x2, 0xf7, 0x23, 0xc5, 0xa, 0x78, + 0x91, 0x56, 0xa, 0x9f, 0x7b, 0x80, 0xa, 0x82, 0x9c, 0x5, 0x52, 0x6f, + 0x42, 0x4f, 0x48, 0x1a, 0x60, 0xa4, 0x6b, 0xad, 0x93, 0xb, 0x65, 0x1a, + 0x70, 0x61, 0x5a, 0x72, 0x6e, 0x1e, 0x63, 0x69, 0x7e, 0x82, 0x7b, 0x1b, + 0xb, 0x15, 0xb9, 0x6, 0xf7, 0x37, 0xf7, 0x3d, 0x5, 0xb, 0x26, 0x1a, + 0xfb, 0x6, 0xf7, 0x3, 0x54, 0xf1, 0xb, 0xf7, 0x92, 0xa0, 0x76, 0xb, + 0x9e, 0xa, 0xf7, 0x38, 0xee, 0x9f, 0xa, 0x98, 0x99, 0x47, 0xa, 0x7c, + 0x80, 0x9d, 0xa, 0xb, 0x9e, 0xa, 0xf7, 0x3a, 0xf0, 0x9f, 0xa, 0x96, + 0x97, 0x47, 0xa, 0x7e, 0x82, 0x9d, 0xa, 0xb, 0x90, 0x87, 0x1f, 0xe, + 0x1f, 0xc3, 0xf2, 0x5, 0xf7, 0x70, 0x6, 0xb, 0x1a, 0x66, 0x54, 0x69, + 0x77, 0x7e, 0x1e, 0xb, 0x95, 0x84, 0x5, 0x94, 0x95, 0xa2, 0xa6, 0xb4, + 0x1b, 0x9d, 0xaa, 0x7e, 0x63, 0x51, 0x31, 0x71, 0x52, 0x82, 0x1f, 0xe, + 0x15, 0x6c, 0xa3, 0x73, 0xaa, 0xaa, 0xa4, 0xa3, 0xaa, 0xaa, 0x72, 0xa4, + 0x6c, 0x6c, 0x73, 0x72, 0x6c, 0x1e, 0xe, 0x74, 0xa8, 0xa8, 0xa3, 0xa2, + 0xa8, 0xa8, 0x73, 0xa3, 0x6e, 0x6e, 0xb, 0xc7, 0xf4, 0xf8, 0x41, 0xf4, + 0xb, 0x9a, 0xa, 0x77, 0xb, 0x5a, 0xa, 0xf7, 0x78, 0x77, 0x1, 0x58, + 0xf8, 0xfb, 0x3, 0xb, 0x99, 0x16, 0xd6, 0x6, 0xb4, 0xf7, 0x1c, 0x99, + 0xb6, 0xb8, 0xd0, 0x8, 0xc3, 0xb0, 0xc9, 0xe1, 0xbb, 0x1b, 0xb, 0x15, + 0x6d, 0xa4, 0x72, 0xa9, 0xa9, 0xa4, 0xa4, 0xa9, 0xa9, 0x72, 0xa4, 0x6d, + 0x6d, 0x72, 0x72, 0x6d, 0x1e, 0xb, 0x8a, 0x16, 0x4e, 0xa, 0xb, 0x15, + 0xbe, 0x6, 0xf8, 0x5b, 0xf9, 0x42, 0x5, 0x58, 0x6, 0xb, 0xf7, 0x92, + 0x8b, 0xac, 0xf7, 0xbb, 0xe9, 0xa, 0xb, 0xa3, 0x9e, 0x9e, 0xa3, 0xa3, + 0x78, 0x9e, 0x73, 0x73, 0x78, 0x78, 0x73, 0x73, 0x9e, 0x78, 0xa3, 0x1f, + 0xb, 0x6f, 0xa1, 0x75, 0xa7, 0xa7, 0xa1, 0xa1, 0xa7, 0xa7, 0x75, 0xa1, + 0x6f, 0x6f, 0x75, 0x75, 0x6f, 0x1e, 0xb, 0x1, 0x86, 0xa, 0x3, 0xb, + 0xf8, 0x5d, 0x76, 0xf7, 0x7a, 0x77, 0x12, 0xb, 0x1, 0xa6, 0xdf, 0xf7, + 0xa5, 0xdf, 0x3, 0xb, 0x9b, 0xfb, 0x8b, 0x7b, 0x7, 0xb, 0x94, 0xb6, + 0x5, 0x54, 0x6, 0xda, 0xf7, 0x97, 0x5, 0x67, 0x6, 0xfb, 0xa3, 0xfb, + 0x97, 0x5, 0xb, 0x6, 0x89, 0x90, 0xf7, 0x6, 0xf7, 0x2, 0x5, 0xdb, + 0xd8, 0x9e, 0xa3, 0xb3, 0x1a, 0xb4, 0x64, 0xb, 0x1b, 0x76, 0x7a, 0x7a, + 0x76, 0x61, 0xb6, 0x88, 0x93, 0xb, 0x1a, 0x74, 0x9a, 0x7d, 0xa4, 0xa4, + 0xa1, 0xa7, 0xa7, 0xb, 0x7a, 0x7, 0x8e, 0x97, 0x92, 0x8c, 0x9a, 0x1b, + 0xc4, 0xb, 0x87, 0xa, 0xf7, 0x87, 0x77, 0x1, 0xb, 0xa0, 0x76, 0xf9, + 0x21, 0xb, 0xf7, 0x4f, 0x9b, 0x6, 0xb, 0xce, 0x1a, 0xb6, 0x72, 0xb, + 0x85, 0x85, 0x1e, 0xb, 0x15, 0xae, 0x6, 0xb, 0x5, 0x96, 0x92, 0xb, + 0x82, 0xba, 0x6f, 0x76, 0xf9, 0x37, 0xa9, 0xa, 0xe5, 0x13, 0xb8, 0xb, + 0x76, 0xa, 0xf7, 0x73, 0x77, 0x12, 0x9c, 0xdf, 0x13, 0x78, 0xb, 0xf8, + 0x99, 0x66, 0xa, 0xb, 0x97, 0xa, 0xaa, 0x72, 0xbd, 0x37, 0xfb, 0x28, + 0xb, 0x80, 0xa0, 0xf8, 0x2e, 0xa0, 0xf7, 0x73, 0x77, 0x92, 0xa, 0xb, + 0x72, 0x7e, 0x6c, 0xaf, 0x83, 0xb2, 0xf7, 0x10, 0xc6, 0xe0, 0xce, 0xcd, + 0x60, 0x9c, 0xb, 0x62, 0xa, 0xe, 0x1a, 0x56, 0x3c, 0xfb, 0x1b, 0x60, + 0x45, 0x1e, 0xb, 0x77, 0x90, 0xa, 0xb, 0x77, 0x12, 0xb5, 0xd8, 0xf7, + 0x3e, 0xb, 0xb6, 0xa, 0xb4, 0xf9, 0xa, 0xb, 0xfb, 0x17, 0xf7, 0x17, + 0xfb, 0x17, 0xb, 0xc7, 0x4f, 0xf2, 0x8c, 0x77, 0x12, 0xb, 0xf8, 0x82, + 0x9e, 0xa, 0xb, 0xf7, 0x74, 0xf7, 0x58, 0xb, 0x1b, 0xbe, 0xb6, 0xb0, + 0xb1, 0xab, 0x72, 0x90, 0x82, 0x74, 0x7f, 0x7d, 0x7a, 0xb, 0x7f, 0x9f, + 0x89, 0x76, 0xf7, 0xe5, 0x9f, 0xf7, 0xcc, 0x9f, 0x8e, 0x77, 0x12, 0xb, + 0x83, 0x16, 0xf7, 0x91, 0x6, 0xf7, 0xba, 0xf7, 0x35, 0xf7, 0x4d, 0xf7, + 0x5e, 0xb, 0x1b, 0xf7, 0x45, 0xad, 0xfb, 0xf, 0x26, 0x4e, 0x6a, 0xfb, + 0xc8, 0xfb, 0xcf, 0xb, 0xaf, 0xa8, 0xa9, 0xaf, 0xaf, 0xa9, 0x6d, 0x67, + 0x67, 0x6d, 0x6e, 0x67, 0x1e, 0xb, 0x1a, 0x6a, 0x7b, 0x5b, 0x53, 0x3a, + 0x7b, 0xe7, 0xb7, 0x84, 0x1e, 0x7b, 0x6, 0xb, 0x1a, 0x6f, 0x8f, 0x69, + 0xb7, 0xc9, 0xb2, 0xbb, 0xd8, 0xbe, 0x1e, 0xe, 0xf8, 0x1, 0x79, 0xb, + 0x15, 0xaa, 0x6, 0xb, 0xb0, 0xf7, 0x5b, 0x5, 0x76, 0x6, 0x81, 0x86, + 0x7b, 0x7f, 0x6e, 0x1b, 0xb, 0x9c, 0x7c, 0x15, 0x9d, 0x6, 0x98, 0x8f, + 0x9c, 0x9f, 0xa7, 0x1b, 0x9a, 0xb, 0x89, 0x87, 0x15, 0x94, 0x82, 0x5, + 0x96, 0x98, 0x9a, 0x92, 0x9c, 0x1b, 0xb, 0x9f, 0xf7, 0x1f, 0x5, 0x7d, + 0x6, 0x83, 0x86, 0x7b, 0x81, 0x7a, 0x1b, 0xb, 0x7d, 0x72, 0x84, 0x1e, + 0x82, 0x6b, 0x82, 0xfb, 0xb, 0x86, 0x54, 0x8, 0xb, 0x1a, 0xb0, 0xc2, + 0xad, 0x9f, 0x98, 0x1e, 0xb, 0x97, 0x76, 0xa9, 0x76, 0xf8, 0x1a, 0xbe, + 0xb, 0xb6, 0xa, 0xac, 0xf8, 0xfe, 0xac, 0xb, 0xf7, 0x4, 0x4b, 0xcb, + 0xb, 0x15, 0xf7, 0x7b, 0x6, 0xac, 0xda, 0x80, 0x93, 0x5, 0x76, 0x7f, + 0xb, 0x9b, 0x7e, 0x15, 0x9b, 0x6, 0x96, 0x91, 0x99, 0x95, 0x99, 0x1b, + 0xb, 0x9e, 0x91, 0x7d, 0x79, 0x1f, 0x63, 0x41, 0xfb, 0x88, 0x73, 0x1a, + 0xb, 0x9b, 0xfb, 0xa5, 0x7b, 0x7, 0xb, 0x5, 0xa2, 0x79, 0xb, 0xed, + 0xf1, 0xed, 0xb, 0xb3, 0x17, 0xf7, 0x9c, 0xd3, 0x15, 0x6a, 0xf7, 0x44, + 0x5, 0xb, 0xea, 0xa, 0xca, 0x9c, 0xa, 0xa8, 0x69, 0xb, 0xcf, 0xa2, + 0xac, 0xa0, 0xb9, 0x1a, 0xbc, 0x59, 0xa3, 0x5b, 0xb, 0x96, 0xfb, 0xb0, + 0x7, 0x6c, 0xfb, 0x7, 0x9b, 0x87, 0x5, 0xb, 0x87, 0xa, 0x1, 0xb, + 0xf1, 0xe5, 0xf8, 0x4e, 0xf7, 0x17, 0xb, 0x1e, 0x9b, 0xfb, 0x83, 0x7b, + 0x7, 0xb, 0xc5, 0x76, 0xf8, 0x2, 0x77, 0x1, 0xb, 0xd9, 0x16, 0xf7, + 0xb5, 0x9b, 0x6, 0xb, 0xc9, 0xf7, 0x47, 0xc9, 0xb, 0xf7, 0x3d, 0x77, + 0x1, 0xb, 0x9b, 0xfb, 0xa5, 0x7, 0xb, 0xf7, 0xf, 0x15, 0x4c, 0x5a, + 0x76, 0x6f, 0x72, 0x1b, 0xb, 0xf8, 0xef, 0xaf, 0x89, 0x77, 0x12, 0xcd, + 0xf7, 0x4, 0xb, 0x1b, 0xfb, 0x79, 0xfb, 0x45, 0xfb, 0x71, 0xfb, 0x55, + 0xb, 0x6c, 0xa, 0xe, 0x3c, 0x95, 0x76, 0xb, 0x15, 0xd2, 0xf7, 0x8c, + 0x5, 0x97, 0x8e, 0x92, 0xb, 0xf8, 0x1d, 0x96, 0x76, 0xaa, 0x76, 0xf4, + 0xb5, 0xb, 0x66, 0x56, 0x1b, 0x7b, 0xf7, 0x61, 0x9a, 0x7, 0xb, 0xf7, + 0x45, 0xf7, 0x16, 0x9d, 0x9f, 0x86, 0x7c, 0xb, 0x82, 0x30, 0x79, 0x87, + 0x6d, 0x1e, 0x78, 0x7, 0xb, 0xb6, 0xfb, 0x30, 0x76, 0xf9, 0xf4, 0x77, + 0x12, 0xb, 0x90, 0x94, 0x7d, 0x1f, 0x7a, 0x6e, 0x5, 0x7e, 0xb, 0xf7, + 0x49, 0xfb, 0x39, 0x77, 0xe2, 0xed, 0x12, 0xb, 0x76, 0xf9, 0x40, 0x77, + 0x1, 0xf4, 0xcd, 0x3, 0xb, 0xab, 0xfb, 0x2d, 0xa6, 0xf9, 0x8e, 0xa6, + 0x1, 0xb, 0x30, 0xa7, 0x1f, 0x9b, 0x55, 0xb, 0x77, 0x1, 0xbc, 0xd6, + 0x3, 0xb, 0x16, 0xf7, 0x5a, 0x9b, 0x6, 0xb, 0x67, 0x6e, 0xa8, 0xaf, + 0x1f, 0xb, 0x7b, 0xf7, 0xa5, 0x9b, 0x7, 0xb, 0x15, 0x9b, 0xa, 0xb, + 0x9b, 0xfb, 0x51, 0x7b, 0x7, 0xb, 0xac, 0xf7, 0x97, 0xac, 0xb, 0xc4, + 0xa7, 0xd4, 0xb, 0x9b, 0xfb, 0x5b, 0xb, 0x1b, 0x83, 0x85, 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp b/core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp new file mode 100644 index 0000000000..4195e9cb4a --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp @@ -0,0 +1,9462 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSerifMMFontData[113417] = { + 0x80, 0x01, 0xD6, 0x29, 0x00, 0x00, 0x25, 0x21, 0x50, 0x53, 0x2D, 0x41, + 0x64, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x6E, 0x74, 0x2D, 0x31, 0x2E, 0x30, + 0x3A, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, + 0x66, 0x4D, 0x4D, 0x20, 0x30, 0x30, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x0D, + 0x25, 0x25, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x44, 0x61, + 0x74, 0x65, 0x3A, 0x20, 0x54, 0x75, 0x65, 0x20, 0x4F, 0x63, 0x74, 0x20, + 0x33, 0x31, 0x20, 0x30, 0x31, 0x3A, 0x33, 0x34, 0x3A, 0x32, 0x32, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x0D, 0x25, 0x25, 0x56, 0x4D, 0x75, 0x73, 0x61, + 0x67, 0x65, 0x3A, 0x20, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, + 0x35, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x31, 0x37, 0x20, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, + 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x31, 0x34, 0x20, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, + 0x2F, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x30, 0x30, + 0x31, 0x2E, 0x30, 0x30, 0x30, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, + 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x4E, 0x6F, 0x74, + 0x69, 0x63, 0x65, 0x20, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, + 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x75, 0x6C, 0x6C, + 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x28, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, + 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4D, 0x4D, 0x29, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x2F, 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x20, + 0x28, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x20, 0x53, 0x65, 0x72, 0x69, + 0x66, 0x20, 0x4D, 0x4D, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, + 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x49, 0x74, 0x61, 0x6C, + 0x69, 0x63, 0x41, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x30, 0x20, 0x64, 0x65, + 0x66, 0x0D, 0x2F, 0x69, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x69, + 0x74, 0x63, 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x64, 0x65, + 0x66, 0x0D, 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x65, + 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x2D, 0x31, 0x30, + 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, + 0x6C, 0x69, 0x6E, 0x65, 0x54, 0x68, 0x69, 0x63, 0x6B, 0x6E, 0x65, 0x73, + 0x73, 0x20, 0x35, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x41, 0x6C, 0x6C, 0x29, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, + 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x5B, 0x5B, + 0x30, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x30, 0x20, 0x5D, 0x5B, + 0x30, 0x20, 0x31, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x31, 0x20, 0x5D, 0x5D, + 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x44, + 0x65, 0x73, 0x69, 0x67, 0x6E, 0x4D, 0x61, 0x70, 0x20, 0x5B, 0x5B, 0x5B, + 0x31, 0x31, 0x30, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x37, 0x39, 0x30, 0x20, + 0x31, 0x20, 0x5D, 0x5D, 0x5B, 0x5B, 0x31, 0x30, 0x30, 0x20, 0x30, 0x20, + 0x5D, 0x5B, 0x39, 0x30, 0x30, 0x20, 0x31, 0x20, 0x5D, 0x5D, 0x5D, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, + 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x20, 0x5B, 0x2F, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x20, 0x2F, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, + 0x5D, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x65, 0x6E, 0x64, 0x20, 0x72, 0x65, + 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, + 0x20, 0x5B, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x31, + 0x30, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x34, 0x20, 0x30, + 0x2E, 0x31, 0x37, 0x34, 0x36, 0x20, 0x5D, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x2F, 0x43, + 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4D, 0x4D, + 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, + 0x6E, 0x67, 0x20, 0x32, 0x35, 0x36, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, + 0x0D, 0x30, 0x20, 0x31, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7B, 0x31, 0x20, + 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, + 0x2E, 0x6E, 0x6F, 0x74, 0x64, 0x65, 0x66, 0x20, 0x70, 0x75, 0x74, 0x20, + 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x32, + 0x20, 0x2F, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x33, 0x33, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x6C, + 0x61, 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, + 0x34, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x35, 0x20, 0x2F, + 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x69, 0x67, 0x6E, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x36, 0x20, 0x2F, 0x64, + 0x6F, 0x6C, 0x6C, 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x33, 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6E, + 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x38, + 0x20, 0x2F, 0x61, 0x6D, 0x70, 0x65, 0x72, 0x73, 0x61, 0x6E, 0x64, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x39, 0x20, 0x2F, + 0x71, 0x75, 0x6F, 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x30, 0x20, 0x2F, + 0x70, 0x61, 0x72, 0x65, 0x6E, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x31, 0x20, 0x2F, 0x70, 0x61, + 0x72, 0x65, 0x6E, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x32, 0x20, 0x2F, 0x61, 0x73, 0x74, + 0x65, 0x72, 0x69, 0x73, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x34, 0x33, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x34, 0x20, 0x2F, 0x63, + 0x6F, 0x6D, 0x6D, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x34, 0x35, 0x20, 0x2F, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6E, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x36, 0x20, 0x2F, + 0x70, 0x65, 0x72, 0x69, 0x6F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x34, 0x37, 0x20, 0x2F, 0x73, 0x6C, 0x61, 0x73, 0x68, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x38, 0x20, + 0x2F, 0x7A, 0x65, 0x72, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x34, 0x39, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x30, 0x20, 0x2F, 0x74, 0x77, + 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x31, + 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x35, 0x32, 0x20, 0x2F, 0x66, 0x6F, 0x75, 0x72, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x33, 0x20, + 0x2F, 0x66, 0x69, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x35, 0x34, 0x20, 0x2F, 0x73, 0x69, 0x78, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x35, 0x20, 0x2F, 0x73, 0x65, + 0x76, 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x35, 0x36, 0x20, 0x2F, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x37, 0x20, 0x2F, 0x6E, 0x69, + 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, + 0x38, 0x20, 0x2F, 0x63, 0x6F, 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x39, 0x20, 0x2F, 0x73, 0x65, 0x6D, + 0x69, 0x63, 0x6F, 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x36, 0x30, 0x20, 0x2F, 0x6C, 0x65, 0x73, 0x73, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x31, 0x20, 0x2F, + 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x36, 0x32, 0x20, 0x2F, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x33, + 0x20, 0x2F, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x34, 0x20, 0x2F, 0x61, + 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x35, + 0x20, 0x2F, 0x41, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x36, 0x36, 0x20, 0x2F, 0x42, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x36, 0x37, 0x20, 0x2F, 0x43, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x36, 0x38, 0x20, 0x2F, 0x44, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x39, 0x20, 0x2F, 0x45, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x30, 0x20, 0x2F, + 0x46, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x31, + 0x20, 0x2F, 0x47, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x37, 0x32, 0x20, 0x2F, 0x48, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x37, 0x33, 0x20, 0x2F, 0x49, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x37, 0x34, 0x20, 0x2F, 0x4A, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x35, 0x20, 0x2F, 0x4B, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x36, 0x20, 0x2F, + 0x4C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x37, + 0x20, 0x2F, 0x4D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x37, 0x38, 0x20, 0x2F, 0x4E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x37, 0x39, 0x20, 0x2F, 0x4F, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x38, 0x30, 0x20, 0x2F, 0x50, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x31, 0x20, 0x2F, 0x51, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x32, 0x20, 0x2F, + 0x52, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x33, + 0x20, 0x2F, 0x53, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x38, 0x34, 0x20, 0x2F, 0x54, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x38, 0x35, 0x20, 0x2F, 0x55, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x38, 0x36, 0x20, 0x2F, 0x56, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x37, 0x20, 0x2F, 0x57, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x38, 0x20, 0x2F, + 0x58, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x39, + 0x20, 0x2F, 0x59, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x39, 0x30, 0x20, 0x2F, 0x5A, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x39, 0x31, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, + 0x74, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x39, 0x32, 0x20, 0x2F, 0x62, 0x61, 0x63, 0x6B, 0x73, 0x6C, + 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x39, 0x33, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x39, 0x34, 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x63, 0x69, + 0x72, 0x63, 0x75, 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x39, 0x35, 0x20, 0x2F, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x73, 0x63, + 0x6F, 0x72, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x39, 0x36, 0x20, 0x2F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x37, 0x20, 0x2F, 0x61, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x38, 0x20, 0x2F, + 0x62, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x39, + 0x20, 0x2F, 0x63, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x30, 0x30, 0x20, 0x2F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x30, 0x31, 0x20, 0x2F, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x32, 0x20, 0x2F, 0x66, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x33, + 0x20, 0x2F, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x30, 0x34, 0x20, 0x2F, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x30, 0x35, 0x20, 0x2F, 0x69, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x36, 0x20, 0x2F, 0x6A, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x37, + 0x20, 0x2F, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x30, 0x38, 0x20, 0x2F, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x30, 0x39, 0x20, 0x2F, 0x6D, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x30, 0x20, 0x2F, 0x6E, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x31, + 0x20, 0x2F, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x31, 0x32, 0x20, 0x2F, 0x70, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x31, 0x33, 0x20, 0x2F, 0x71, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x34, 0x20, 0x2F, 0x72, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x35, + 0x20, 0x2F, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x31, 0x36, 0x20, 0x2F, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x31, 0x37, 0x20, 0x2F, 0x75, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x38, 0x20, 0x2F, 0x76, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x39, + 0x20, 0x2F, 0x77, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x32, 0x30, 0x20, 0x2F, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x32, 0x31, 0x20, 0x2F, 0x79, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x32, 0x20, 0x2F, 0x7A, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x33, + 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x34, 0x20, + 0x2F, 0x62, 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x32, 0x35, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x65, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x32, 0x36, 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x74, + 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x32, 0x38, 0x20, 0x2F, 0x45, 0x75, 0x72, 0x6F, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x30, 0x20, 0x2F, + 0x71, 0x75, 0x6F, 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x62, 0x61, + 0x73, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x33, 0x31, 0x20, 0x2F, 0x66, 0x6C, 0x6F, 0x72, 0x69, 0x6E, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x32, 0x20, 0x2F, + 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x62, 0x61, 0x73, 0x65, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x33, + 0x20, 0x2F, 0x65, 0x6C, 0x6C, 0x69, 0x70, 0x73, 0x69, 0x73, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x34, 0x20, 0x2F, + 0x64, 0x61, 0x67, 0x67, 0x65, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x33, 0x35, 0x20, 0x2F, 0x64, 0x61, 0x67, 0x67, + 0x65, 0x72, 0x64, 0x62, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x33, 0x36, 0x20, 0x2F, 0x63, 0x69, 0x72, 0x63, 0x75, + 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x33, 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x74, 0x68, + 0x6F, 0x75, 0x73, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x33, 0x38, 0x20, 0x2F, 0x53, 0x63, 0x61, 0x72, + 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x33, 0x39, 0x20, 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, 0x67, + 0x6C, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x34, 0x30, 0x20, 0x2F, 0x4F, 0x45, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x35, 0x20, 0x2F, 0x71, + 0x75, 0x6F, 0x74, 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x36, 0x20, 0x2F, 0x71, 0x75, + 0x6F, 0x74, 0x65, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x37, 0x20, 0x2F, 0x71, 0x75, + 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x38, 0x20, 0x2F, + 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, + 0x39, 0x20, 0x2F, 0x62, 0x75, 0x6C, 0x6C, 0x65, 0x74, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x30, 0x20, 0x2F, 0x65, + 0x6E, 0x64, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x35, 0x31, 0x20, 0x2F, 0x65, 0x6D, 0x64, 0x61, 0x73, + 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, + 0x32, 0x20, 0x2F, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x33, 0x20, 0x2F, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x34, 0x20, 0x2F, 0x73, 0x63, 0x61, + 0x72, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x35, 0x35, 0x20, 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, + 0x67, 0x6C, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x36, 0x20, 0x2F, 0x6F, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x39, 0x20, + 0x2F, 0x59, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x31, 0x20, 0x2F, + 0x65, 0x78, 0x63, 0x6C, 0x61, 0x6D, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x32, 0x20, 0x2F, + 0x63, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x36, 0x33, 0x20, 0x2F, 0x73, 0x74, 0x65, 0x72, 0x6C, 0x69, + 0x6E, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x36, 0x34, 0x20, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x79, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x35, + 0x20, 0x2F, 0x79, 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x36, 0x36, 0x20, 0x2F, 0x62, 0x72, 0x6F, 0x6B, 0x65, + 0x6E, 0x62, 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x36, 0x37, 0x20, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, + 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, + 0x38, 0x20, 0x2F, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x39, 0x20, + 0x2F, 0x63, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x30, 0x20, 0x2F, + 0x6F, 0x72, 0x64, 0x66, 0x65, 0x6D, 0x69, 0x6E, 0x69, 0x6E, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x31, 0x20, + 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x6C, 0x65, + 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x37, 0x32, 0x20, 0x2F, 0x6C, 0x6F, 0x67, 0x69, 0x63, 0x61, 0x6C, 0x6E, + 0x6F, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x37, 0x34, 0x20, 0x2F, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x65, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x37, 0x35, 0x20, 0x2F, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x6E, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x36, 0x20, 0x2F, + 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x37, 0x37, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, + 0x6D, 0x69, 0x6E, 0x75, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x37, 0x38, 0x20, 0x2F, 0x74, 0x77, 0x6F, 0x73, 0x75, + 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x37, 0x39, 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, + 0x65, 0x73, 0x75, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x30, 0x20, 0x2F, 0x61, + 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x38, 0x31, 0x20, 0x2F, 0x6D, 0x75, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x32, 0x20, 0x2F, 0x70, 0x61, + 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x33, 0x20, 0x2F, 0x70, 0x65, 0x72, + 0x69, 0x6F, 0x64, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x34, 0x20, + 0x2F, 0x63, 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x35, 0x20, 0x2F, 0x6F, 0x6E, + 0x65, 0x73, 0x75, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x36, 0x20, 0x2F, 0x6F, + 0x72, 0x64, 0x6D, 0x61, 0x73, 0x63, 0x75, 0x6C, 0x69, 0x6E, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x37, 0x20, + 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x38, 0x38, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x71, 0x75, 0x61, 0x72, + 0x74, 0x65, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x38, 0x39, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x68, 0x61, 0x6C, 0x66, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x30, + 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x65, 0x71, 0x75, 0x61, 0x72, 0x74, + 0x65, 0x72, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x31, 0x39, 0x31, 0x20, 0x2F, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, + 0x6E, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x39, 0x32, 0x20, 0x2F, 0x41, 0x67, 0x72, 0x61, 0x76, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, + 0x33, 0x20, 0x2F, 0x41, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x34, 0x20, 0x2F, 0x41, + 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x35, 0x20, 0x2F, + 0x41, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x31, 0x39, 0x36, 0x20, 0x2F, 0x41, 0x64, 0x69, 0x65, + 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x31, 0x39, 0x37, 0x20, 0x2F, 0x41, 0x72, 0x69, 0x6E, 0x67, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x38, + 0x20, 0x2F, 0x41, 0x45, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x39, 0x39, 0x20, 0x2F, 0x43, 0x63, 0x65, 0x64, 0x69, 0x6C, + 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x30, 0x30, 0x20, 0x2F, 0x45, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x31, 0x20, 0x2F, + 0x45, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x30, 0x32, 0x20, 0x2F, 0x45, 0x63, 0x69, 0x72, + 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x33, 0x20, 0x2F, 0x45, 0x64, 0x69, + 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x30, 0x34, 0x20, 0x2F, 0x49, 0x67, 0x72, 0x61, + 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x30, 0x35, 0x20, 0x2F, 0x49, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x36, 0x20, 0x2F, + 0x49, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x37, 0x20, + 0x2F, 0x49, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x38, 0x20, 0x2F, + 0x45, 0x74, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x30, 0x39, 0x20, 0x2F, 0x4E, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x30, 0x20, + 0x2F, 0x4F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x31, 0x20, 0x2F, 0x4F, 0x61, 0x63, + 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x31, 0x32, 0x20, 0x2F, 0x4F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, + 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x32, 0x31, 0x33, 0x20, 0x2F, 0x4F, 0x74, 0x69, 0x6C, 0x64, 0x65, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x34, + 0x20, 0x2F, 0x4F, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x35, 0x20, + 0x2F, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x79, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x36, 0x20, 0x2F, 0x4F, + 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x31, 0x37, 0x20, 0x2F, 0x55, 0x67, 0x72, 0x61, 0x76, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, + 0x38, 0x20, 0x2F, 0x55, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x39, 0x20, 0x2F, 0x55, + 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x30, 0x20, 0x2F, + 0x55, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x31, 0x20, 0x2F, 0x59, + 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x32, 0x32, 0x20, 0x2F, 0x54, 0x68, 0x6F, 0x72, 0x6E, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x33, + 0x20, 0x2F, 0x67, 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x64, 0x62, 0x6C, 0x73, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x34, + 0x20, 0x2F, 0x61, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x35, 0x20, 0x2F, 0x61, 0x61, + 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x32, 0x32, 0x36, 0x20, 0x2F, 0x61, 0x63, 0x69, 0x72, 0x63, 0x75, + 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x32, 0x37, 0x20, 0x2F, 0x61, 0x74, 0x69, 0x6C, 0x64, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, + 0x38, 0x20, 0x2F, 0x61, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x39, + 0x20, 0x2F, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x30, 0x20, 0x2F, 0x61, 0x65, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x31, 0x20, + 0x2F, 0x63, 0x63, 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x32, 0x20, 0x2F, 0x65, + 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x33, 0x33, 0x20, 0x2F, 0x65, 0x61, 0x63, 0x75, 0x74, + 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, + 0x34, 0x20, 0x2F, 0x65, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, + 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x33, 0x35, 0x20, 0x2F, 0x65, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, + 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, + 0x36, 0x20, 0x2F, 0x69, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, + 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x37, 0x20, 0x2F, 0x69, + 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x33, 0x38, 0x20, 0x2F, 0x69, 0x63, 0x69, 0x72, 0x63, + 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x33, 0x39, 0x20, 0x2F, 0x69, 0x64, 0x69, 0x65, + 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x34, 0x30, 0x20, 0x2F, 0x65, 0x74, 0x68, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x31, 0x20, 0x2F, + 0x6E, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x34, 0x32, 0x20, 0x2F, 0x6F, 0x67, 0x72, 0x61, + 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x34, 0x33, 0x20, 0x2F, 0x6F, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x34, 0x20, 0x2F, + 0x6F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, + 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x35, 0x20, + 0x2F, 0x6F, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, + 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x36, 0x20, 0x2F, 0x6F, 0x64, 0x69, + 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x34, 0x37, 0x20, 0x2F, 0x64, 0x69, 0x76, 0x69, + 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x34, 0x38, 0x20, 0x2F, 0x6F, 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x39, 0x20, 0x2F, + 0x75, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x32, 0x35, 0x30, 0x20, 0x2F, 0x75, 0x61, 0x63, 0x75, + 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x35, 0x31, 0x20, 0x2F, 0x75, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, + 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x32, 0x35, 0x32, 0x20, 0x2F, 0x75, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, + 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x35, 0x33, 0x20, 0x2F, 0x79, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, + 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x34, 0x20, 0x2F, + 0x74, 0x68, 0x6F, 0x72, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x32, 0x35, 0x35, 0x20, 0x2F, 0x79, 0x64, 0x69, 0x65, 0x72, + 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x72, 0x65, 0x61, + 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x50, + 0x61, 0x69, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x30, 0x20, 0x64, + 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x20, 0x31, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x24, 0x42, 0x6C, 0x65, + 0x6E, 0x64, 0x20, 0x7B, 0x20, 0x30, 0x2E, 0x31, 0x30, 0x34, 0x38, 0x20, + 0x6D, 0x75, 0x6C, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x30, 0x2E, 0x34, + 0x35, 0x30, 0x34, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x30, 0x2E, 0x31, 0x37, 0x34, 0x36, 0x20, + 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x64, 0x64, 0x20, + 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, + 0x46, 0x6F, 0x6E, 0x74, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x5B, + 0x20, 0x30, 0x2E, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, + 0x20, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, + 0x20, 0x30, 0x20, 0x30, 0x20, 0x5D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, + 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, + 0x74, 0x42, 0x42, 0x6F, 0x78, 0x20, 0x7B, 0x2D, 0x31, 0x35, 0x37, 0x20, + 0x2D, 0x32, 0x35, 0x37, 0x20, 0x31, 0x31, 0x39, 0x34, 0x20, 0x38, 0x37, + 0x32, 0x7D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x33, + 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, + 0x67, 0x69, 0x6E, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x42, 0x42, 0x6F, + 0x78, 0x20, 0x7B, 0x7B, 0x20, 0x2D, 0x31, 0x33, 0x35, 0x20, 0x2D, 0x32, + 0x33, 0x36, 0x20, 0x2D, 0x31, 0x33, 0x35, 0x20, 0x2D, 0x32, 0x30, 0x31, + 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, + 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, + 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x35, 0x38, 0x32, 0x20, 0x31, 0x32, 0x31, + 0x37, 0x20, 0x31, 0x32, 0x37, 0x34, 0x20, 0x31, 0x39, 0x32, 0x32, 0x20, + 0x7D, 0x20, 0x7B, 0x20, 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, + 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, 0x7D, 0x7D, 0x20, 0x64, + 0x65, 0x66, 0x0D, 0x2F, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, + 0x31, 0x34, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x64, 0x65, 0x66, 0x0D, + 0x65, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x25, 0x20, 0x43, 0x6F, + 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, + 0x31, 0x39, 0x39, 0x30, 0x2D, 0x31, 0x39, 0x39, 0x34, 0x20, 0x41, 0x64, + 0x6F, 0x62, 0x65, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, + 0x49, 0x6E, 0x63, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x65, 0x64, + 0x0D, 0x25, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D, + 0x2F, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x20, 0x7B, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x20, 0x7D, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x7B, 0x20, + 0x7D, 0x20, 0x75, 0x73, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x64, 0x75, 0x70, 0x0D, + 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, + 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, + 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, + 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, + 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x2F, 0x6F, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x6F, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, + 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, + 0x7D, 0x20, 0x7B, 0x20, 0x30, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, + 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x2F, 0x69, 0x6E, 0x74, 0x65, + 0x67, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6E, 0x65, 0x0D, 0x7B, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, + 0x20, 0x7B, 0x20, 0x31, 0x31, 0x20, 0x6C, 0x74, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, + 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, + 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, + 0x6F, 0x6E, 0x74, 0x20, 0x7B, 0x0D, 0x31, 0x31, 0x20, 0x70, 0x6F, 0x70, + 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6C, 0x65, 0x6E, 0x67, + 0x74, 0x68, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x67, 0x65, + 0x74, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x71, 0x0D, + 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x7B, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, + 0x61, 0x6C, 0x6C, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x61, 0x62, + 0x73, 0x20, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x67, 0x74, 0x20, 0x7D, 0x0D, + 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, + 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, + 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, + 0x20, 0x2F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, + 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, + 0x64, 0x75, 0x70, 0x20, 0x6D, 0x61, 0x78, 0x6C, 0x65, 0x6E, 0x67, 0x74, + 0x68, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, + 0x20, 0x7B, 0x0D, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x20, 0x2F, + 0x46, 0x49, 0x44, 0x20, 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x49, + 0x44, 0x20, 0x2F, 0x58, 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, 0x20, + 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, 0x6F, + 0x72, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7B, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, + 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x2F, + 0x58, 0x55, 0x49, 0x44, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, + 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, 0x20, + 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x32, + 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, + 0x68, 0x20, 0x73, 0x75, 0x62, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, + 0x67, 0x74, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, + 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x0D, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x36, + 0x35, 0x35, 0x33, 0x36, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x63, 0x76, 0x69, + 0x20, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, + 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x2F, + 0x58, 0x55, 0x49, 0x44, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x65, + 0x66, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, + 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, + 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x50, + 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, + 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, + 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6D, 0x61, + 0x78, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x64, 0x69, 0x63, 0x74, + 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x7B, 0x0D, 0x66, 0x61, 0x6C, + 0x73, 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, + 0x49, 0x44, 0x20, 0x2F, 0x58, 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, + 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, + 0x6F, 0x72, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, + 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, + 0x7B, 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, + 0x73, 0x65, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, + 0x65, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x7D, 0x20, 0x66, 0x6F, + 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x2F, 0x24, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x5B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, + 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, + 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, + 0x2D, 0x31, 0x20, 0x31, 0x20, 0x7B, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, + 0x68, 0x20, 0x33, 0x20, 0x2D, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, + 0x73, 0x75, 0x62, 0x20, 0x67, 0x65, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x30, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x31, + 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, + 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x2F, 0x70, + 0x6F, 0x70, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, + 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, + 0x20, 0x31, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x7D, 0x0D, 0x7B, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x7B, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6C, 0x6F, 0x61, 0x64, + 0x20, 0x34, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x0D, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, + 0x2F, 0x6D, 0x75, 0x6C, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, + 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x7B, 0x20, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, + 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, + 0x72, 0x75, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, + 0x70, 0x6F, 0x70, 0x20, 0x7B, 0x20, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6C, + 0x6F, 0x61, 0x64, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x5D, 0x20, 0x63, + 0x76, 0x78, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x7B, 0x20, 0x32, 0x20, 0x63, + 0x6F, 0x70, 0x79, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6E, + 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, + 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, + 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, + 0x74, 0x79, 0x70, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, + 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, + 0x30, 0x20, 0x30, 0x20, 0x31, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, + 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, + 0x75, 0x62, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, + 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, + 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x0D, 0x7D, 0x20, 0x66, 0x6F, + 0x72, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7B, 0x20, + 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, + 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, + 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x2F, 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, 0x6F, 0x6C, + 0x64, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x35, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x20, 0x33, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, + 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, + 0x34, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x67, 0x65, 0x74, 0x20, 0x7B, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, + 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x66, + 0x6F, 0x72, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x2F, 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, + 0x6F, 0x6C, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, + 0x20, 0x67, 0x65, 0x74, 0x20, 0x67, 0x74, 0x20, 0x33, 0x20, 0x63, 0x6F, + 0x70, 0x79, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x7B, 0x20, 0x6C, 0x65, 0x6E, + 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, + 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x20, 0x7B, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, + 0x7B, 0x0D, 0x74, 0x72, 0x75, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x7B, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, + 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, + 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x72, 0x65, 0x61, + 0x6C, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x7D, 0x20, 0x66, + 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, + 0x73, 0x65, 0x20, 0x7D, 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, + 0x38, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x35, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x35, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, + 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, + 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x31, + 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x78, 0x63, 0x68, 0x65, 0x63, + 0x6B, 0x20, 0x7B, 0x20, 0x63, 0x76, 0x78, 0x20, 0x7D, 0x20, 0x69, 0x66, + 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, + 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x31, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, + 0x72, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x36, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7B, 0x0D, 0x39, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x39, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x32, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x20, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x0D, 0x31, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x53, 0x74, + 0x65, 0x6D, 0x53, 0x6E, 0x61, 0x70, 0x48, 0x20, 0x65, 0x71, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x2F, 0x53, 0x74, 0x65, 0x6D, 0x53, 0x6E, 0x61, + 0x70, 0x56, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x64, + 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, + 0x73, 0x75, 0x62, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, + 0x6C, 0x65, 0x20, 0x7B, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x31, + 0x20, 0x73, 0x75, 0x62, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x32, 0x20, 0x63, 0x6F, + 0x70, 0x79, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, + 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x32, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x30, 0x20, 0x70, 0x75, 0x74, 0x20, 0x30, 0x20, + 0x7D, 0x20, 0x69, 0x66, 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x20, 0x31, 0x20, + 0x73, 0x75, 0x62, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, + 0x64, 0x75, 0x70, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x33, 0x20, + 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, + 0x65, 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, + 0x0D, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, + 0x73, 0x75, 0x62, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x75, 0x74, + 0x0D, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, + 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, + 0x20, 0x73, 0x75, 0x62, 0x20, 0x6C, 0x74, 0x20, 0x7B, 0x20, 0x31, 0x20, + 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x67, + 0x65, 0x74, 0x20, 0x30, 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x30, + 0x20, 0x67, 0x74, 0x20, 0x7B, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x20, 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, + 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, + 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, + 0x68, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x73, 0x75, 0x62, 0x20, 0x67, + 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x0D, + 0x7B, 0x20, 0x2F, 0x64, 0x69, 0x63, 0x74, 0x74, 0x79, 0x70, 0x65, 0x20, + 0x65, 0x71, 0x20, 0x7B, 0x20, 0x36, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, + 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x67, 0x65, 0x74, + 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, + 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x2F, + 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, + 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, + 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, 0x74, 0x79, 0x70, 0x65, 0x63, + 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x65, + 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, + 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x70, 0x6F, 0x70, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x42, 0x6C, 0x65, 0x6E, 0x64, + 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, + 0x63, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x65, 0x6E, 0x64, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, + 0x20, 0x70, 0x75, 0x74, 0x0D, 0x2F, 0x24, 0x66, 0x62, 0x66, 0x20, 0x7B, + 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, + 0x72, 0x79, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x74, 0x6F, 0x6D, 0x61, + 0x72, 0x6B, 0x20, 0x33, 0x20, 0x61, 0x64, 0x64, 0x20, 0x2D, 0x31, 0x20, + 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, + 0x0D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, + 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x5D, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, + 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, + 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6E, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x45, 0x6E, + 0x63, 0x6F, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x67, 0x65, 0x74, 0x20, 0x70, + 0x75, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x66, 0x6F, 0x6E, + 0x74, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, + 0x53, 0x63, 0x61, 0x6C, 0x65, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, + 0x67, 0x65, 0x74, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x66, 0x6F, 0x6E, 0x74, + 0x20, 0x73, 0x65, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x7D, 0x20, 0x62, + 0x69, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, + 0x65, 0x6C, 0x73, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x4E, + 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x44, 0x65, 0x73, 0x69, + 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x31, 0x31, 0x30, 0x20, 0x73, 0x75, 0x62, 0x20, + 0x36, 0x38, 0x30, 0x20, 0x64, 0x69, 0x76, 0x0D, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x31, 0x30, 0x30, 0x20, 0x73, 0x75, 0x62, 0x20, 0x38, 0x30, 0x30, + 0x20, 0x64, 0x69, 0x76, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, + 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, + 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, + 0x20, 0x7B, 0x0D, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, + 0x65, 0x78, 0x20, 0x73, 0x75, 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, + 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, + 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, + 0x78, 0x20, 0x73, 0x75, 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, + 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x32, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, + 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, + 0x78, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6D, 0x75, + 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x70, + 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x62, 0x69, 0x6E, + 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x24, 0x6D, 0x6D, 0x66, 0x66, + 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, + 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x0D, 0x70, 0x6F, + 0x70, 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, 0x7B, 0x20, 0x72, 0x65, 0x73, + 0x74, 0x6F, 0x72, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x7B, + 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x73, 0x65, 0x74, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, + 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x66, 0x69, 0x6E, 0x64, + 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x70, + 0x6F, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6D, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, + 0x6F, 0x70, 0x20, 0x7B, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, + 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, + 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x66, 0x61, + 0x6C, 0x73, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, + 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x0D, + 0x7D, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, + 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x7D, 0x20, 0x7B, 0x20, + 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x7B, 0x20, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, + 0x63, 0x6B, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, + 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x7B, 0x20, + 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x73, + 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, + 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, + 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x24, + 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, + 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, + 0x6F, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x69, + 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x66, + 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7B, 0x0D, 0x64, 0x75, + 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, + 0x77, 0x6E, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, + 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, + 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x2F, 0x46, 0x6F, 0x6E, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x67, 0x65, 0x74, 0x20, 0x33, 0x20, + 0x6E, 0x65, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, + 0x20, 0x67, 0x65, 0x74, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x20, 0x67, 0x65, 0x74, 0x20, 0x33, 0x20, 0x6E, 0x65, 0x20, + 0x7D, 0x0D, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, + 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, + 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, + 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, + 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, + 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, + 0x6E, 0x67, 0x20, 0x63, 0x76, 0x73, 0x20, 0x28, 0x5F, 0x29, 0x20, 0x73, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x7B, 0x0D, 0x63, 0x76, 0x6E, 0x20, + 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, + 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, + 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x6F, 0x72, 0x20, + 0x7B, 0x0D, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, + 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x37, 0x20, + 0x61, 0x64, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x64, + 0x75, 0x70, 0x20, 0x30, 0x20, 0x28, 0x25, 0x66, 0x6F, 0x6E, 0x74, 0x25, + 0x29, 0x20, 0x70, 0x75, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, + 0x78, 0x20, 0x36, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, + 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, + 0x6E, 0x67, 0x20, 0x63, 0x76, 0x73, 0x20, 0x70, 0x75, 0x74, 0x69, 0x6E, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x0D, 0x7B, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x20, 0x7D, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x70, 0x65, + 0x64, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, + 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, + 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, + 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, + 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, + 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, + 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x5B, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, + 0x7B, 0x20, 0x28, 0x5F, 0x29, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x63, 0x76, 0x72, 0x20, 0x7D, 0x20, 0x73, + 0x74, 0x6F, 0x70, 0x70, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, + 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, + 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, + 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, + 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, + 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, + 0x6F, 0x20, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, 0x69, 0x73, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, + 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, + 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x75, 0x6E, + 0x74, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x32, 0x20, 0x73, 0x75, + 0x62, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, + 0x70, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, + 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x20, 0x7B, 0x0D, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, + 0x69, 0x7A, 0x65, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, + 0x74, 0x6F, 0x72, 0x0D, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x44, + 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x0D, + 0x5D, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x62, + 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x32, + 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, + 0x46, 0x6F, 0x6E, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x63, + 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, + 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x63, 0x6C, 0x65, + 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x24, 0x6D, 0x6D, + 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, + 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, + 0x20, 0x65, 0x6E, 0x64, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, + 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, + 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, + 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, + 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, + 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, + 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, + 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, + 0x62, 0x69, 0x6E, 0x64, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, + 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, + 0x72, 0x79, 0x20, 0x64, 0x75, 0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, + 0x20, 0x7B, 0x20, 0x30, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x33, 0x20, + 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, + 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x65, 0x6E, 0x64, 0x20, + 0x65, 0x78, 0x65, 0x63, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x65, + 0x63, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, + 0x74, 0x20, 0x65, 0x6E, 0x64, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, + 0x74, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x65, 0x78, 0x65, 0x63, 0x0D, + 0x80, 0x02, 0x0B, 0x8F, 0x01, 0x00, 0xE8, 0xDC, 0x61, 0x72, 0x80, 0x71, + 0xAB, 0xD4, 0xD5, 0xBC, 0xD2, 0x30, 0xC4, 0xE1, 0x86, 0xDC, 0xE0, 0x96, + 0x54, 0x1C, 0x9C, 0x1F, 0x2E, 0x58, 0x69, 0x40, 0x4E, 0x33, 0xF9, 0xCE, + 0xFF, 0x7D, 0x2F, 0xBF, 0xEF, 0x5F, 0x26, 0xC7, 0xE1, 0x84, 0x89, 0x54, + 0xC7, 0x07, 0x55, 0x24, 0x4E, 0x73, 0x41, 0xB8, 0x26, 0x97, 0xE2, 0xE8, + 0xEA, 0x9C, 0xE9, 0x13, 0x1D, 0x00, 0x55, 0x78, 0xAB, 0x3D, 0xE1, 0x9F, + 0xA9, 0xF2, 0xFA, 0xFF, 0x3B, 0xEB, 0x53, 0x17, 0x4A, 0x8E, 0x2F, 0x33, + 0xE9, 0xDB, 0xE0, 0x38, 0x63, 0x42, 0xF4, 0x0E, 0x5D, 0xF2, 0x5B, 0x7A, + 0x88, 0x22, 0xEE, 0x2B, 0x6C, 0xDC, 0xAC, 0x58, 0xA9, 0x8F, 0x9B, 0x04, + 0x71, 0x44, 0xE3, 0xF6, 0xE7, 0x4A, 0xB6, 0x0C, 0x00, 0xE4, 0x42, 0xE8, + 0x30, 0xB1, 0x30, 0x30, 0x8A, 0x3F, 0x0E, 0xDF, 0x2C, 0xE6, 0x62, 0x35, + 0xF9, 0x21, 0x6D, 0x42, 0x0F, 0x23, 0xAC, 0xED, 0xEC, 0x60, 0xA8, 0x8A, + 0x73, 0x77, 0x14, 0x62, 0xE1, 0xB2, 0x04, 0x04, 0x29, 0x5D, 0x49, 0xBA, + 0x8A, 0x8B, 0xCB, 0xF2, 0x04, 0x2A, 0x8D, 0xEB, 0x9A, 0x65, 0xBA, 0xF1, + 0xC8, 0x24, 0x2F, 0x7E, 0x90, 0xD9, 0x49, 0x63, 0x23, 0x73, 0xF8, 0x43, + 0x8F, 0xC1, 0xE7, 0x37, 0x37, 0x0B, 0x91, 0x15, 0x08, 0x9D, 0xA7, 0x90, + 0xA8, 0x28, 0x50, 0xB6, 0x91, 0xE6, 0xE8, 0x3B, 0x37, 0x22, 0xC0, 0x07, + 0x14, 0xDC, 0xBC, 0xEA, 0xA1, 0xDC, 0x3D, 0x22, 0x98, 0x3B, 0x35, 0x61, + 0x6A, 0xD7, 0xF1, 0x03, 0x35, 0x0B, 0x4A, 0x40, 0xB2, 0xAA, 0xE5, 0x0E, + 0xF0, 0x94, 0x6C, 0x77, 0xC5, 0x67, 0x73, 0x0D, 0x0D, 0xE6, 0x76, 0xA6, + 0x95, 0x13, 0x0A, 0xBE, 0xC8, 0xC7, 0xB8, 0xC4, 0x6B, 0xFA, 0xBC, 0xDA, + 0xDD, 0x88, 0x2C, 0x74, 0x58, 0x58, 0x9B, 0x2B, 0xEA, 0x87, 0xE1, 0x23, + 0x2C, 0x60, 0x58, 0x0C, 0x62, 0x35, 0xB7, 0xD7, 0xE8, 0xC6, 0x6A, 0x2A, + 0x72, 0x90, 0x1F, 0x3D, 0x0D, 0x76, 0x59, 0x30, 0x0E, 0x7E, 0x04, 0xFF, + 0xDE, 0x4A, 0xA6, 0xD8, 0x88, 0x25, 0x75, 0x76, 0x30, 0xCF, 0x8C, 0x9E, + 0x8E, 0xA4, 0x14, 0x10, 0x7F, 0x2F, 0xC4, 0xA8, 0x0F, 0xCA, 0xAF, 0xCB, + 0x54, 0x39, 0x87, 0x1A, 0x81, 0x71, 0xFB, 0xA5, 0x08, 0x17, 0x4F, 0x53, + 0xB8, 0xEC, 0xE2, 0xD3, 0xBF, 0xBD, 0xBA, 0x93, 0x75, 0xFF, 0x8F, 0xB9, + 0x66, 0x12, 0x02, 0x21, 0x87, 0x6D, 0xB0, 0xDC, 0x2D, 0x37, 0x22, 0xB7, + 0x88, 0xB4, 0xD3, 0x8F, 0x8B, 0x24, 0xEF, 0x76, 0xF3, 0xB4, 0x91, 0x58, + 0x95, 0xFF, 0x41, 0xD8, 0xFA, 0xFA, 0xD8, 0xE8, 0x68, 0xA9, 0xA8, 0x5B, + 0x59, 0x2C, 0xF0, 0x30, 0xA1, 0xD0, 0x44, 0x8A, 0x81, 0xF5, 0xE6, 0x92, + 0x1E, 0xAE, 0xE8, 0x26, 0xA4, 0xD9, 0xB7, 0x05, 0x5A, 0x9C, 0xA1, 0xC7, + 0x98, 0xAA, 0xFA, 0x25, 0x91, 0x11, 0x4D, 0x61, 0xCB, 0x50, 0x2E, 0xFC, + 0xFC, 0x44, 0x63, 0x02, 0x08, 0xCB, 0xA9, 0x17, 0x10, 0x3B, 0xC3, 0xA1, + 0x2A, 0x60, 0xB1, 0x79, 0x84, 0x95, 0x83, 0xD0, 0xB1, 0xF1, 0xDC, 0x9F, + 0xBE, 0xB2, 0xBC, 0x90, 0xD1, 0xE4, 0xF2, 0x42, 0xD5, 0x08, 0x0B, 0xD4, + 0xB1, 0x4C, 0x73, 0x8D, 0x0C, 0xD1, 0x69, 0xC8, 0x1E, 0xB6, 0x84, 0x5F, + 0xD9, 0x2D, 0xAB, 0x2A, 0x6B, 0xBB, 0x48, 0x3F, 0xB6, 0xFB, 0x08, 0x2F, + 0x57, 0x11, 0xAB, 0x42, 0x54, 0xC9, 0xD7, 0xB1, 0xF8, 0x28, 0xBA, 0xCD, + 0x68, 0xF9, 0x0D, 0xE0, 0xD1, 0x26, 0xCE, 0xA0, 0x24, 0x56, 0x63, 0xB7, + 0xA1, 0xC6, 0x85, 0xD8, 0x55, 0x18, 0x60, 0x25, 0x55, 0x0B, 0xC6, 0x9B, + 0xC4, 0x28, 0x0C, 0x37, 0xE0, 0x9A, 0x74, 0x52, 0x0D, 0x76, 0x5F, 0x41, + 0xDC, 0xEA, 0xD8, 0x35, 0x1A, 0xB7, 0x49, 0xC3, 0x5C, 0x6D, 0xD0, 0x83, + 0x7A, 0x4F, 0xC1, 0xCB, 0x12, 0xAB, 0x27, 0x4B, 0xCF, 0x7F, 0xF8, 0x01, + 0xC1, 0x8D, 0x13, 0x34, 0x62, 0xFF, 0xE0, 0x5C, 0x56, 0xCE, 0x4E, 0x3D, + 0x34, 0x37, 0xAC, 0xFB, 0xB0, 0x3E, 0x05, 0xA6, 0x2B, 0xF6, 0x2C, 0xA2, + 0x46, 0x65, 0x6A, 0xAF, 0x3E, 0xD6, 0x5A, 0x92, 0x22, 0xFF, 0x51, 0xF3, + 0x19, 0x27, 0x39, 0xB3, 0x32, 0x7F, 0x94, 0x7A, 0x6B, 0x56, 0xF8, 0xB8, + 0xA5, 0x70, 0xB1, 0x3F, 0x15, 0x15, 0xF6, 0x61, 0x4B, 0x88, 0xB0, 0x12, + 0xE0, 0x4F, 0x6F, 0xE9, 0xCB, 0x2C, 0x72, 0x01, 0xB1, 0xDB, 0x85, 0x78, + 0x3C, 0x0F, 0xD2, 0x3B, 0x54, 0x8E, 0x29, 0x21, 0x66, 0xBA, 0x80, 0xC6, + 0x05, 0x5E, 0xD1, 0xD9, 0x93, 0xCD, 0x63, 0xA0, 0x95, 0xBB, 0x26, 0xA3, + 0x36, 0x12, 0x2D, 0x1C, 0xE4, 0xEA, 0x98, 0xE6, 0xDC, 0x9F, 0xD6, 0x61, + 0xF8, 0x71, 0x14, 0xFE, 0xF8, 0x10, 0xB9, 0x24, 0x36, 0xF9, 0xB3, 0x6C, + 0x0F, 0xC3, 0x28, 0x46, 0x43, 0x19, 0xAF, 0xA7, 0xB1, 0xEC, 0x4A, 0x88, + 0x7C, 0xE7, 0x85, 0x81, 0x23, 0x69, 0xF3, 0x21, 0x90, 0xEB, 0x3D, 0xB1, + 0x73, 0x4A, 0xB2, 0xF2, 0x55, 0x30, 0xF8, 0x02, 0x79, 0x76, 0x1D, 0xFB, + 0x0A, 0x40, 0x06, 0x61, 0xCC, 0xCB, 0x47, 0x94, 0x1A, 0x74, 0x70, 0x8F, + 0x1B, 0x93, 0x16, 0x24, 0xAA, 0x32, 0xD4, 0xB0, 0xEE, 0xCA, 0xEE, 0x0D, + 0x27, 0x71, 0x0D, 0xE8, 0xCC, 0xD7, 0x2A, 0x28, 0xA5, 0xC4, 0xD8, 0xDD, + 0x0B, 0x16, 0x74, 0xF7, 0xE3, 0x61, 0x06, 0x37, 0x24, 0x1C, 0x00, 0x14, + 0x0C, 0x32, 0x7F, 0x88, 0x75, 0xF9, 0x9B, 0xFA, 0x3B, 0xCA, 0xF6, 0x51, + 0xD2, 0xAB, 0xD5, 0x3F, 0x21, 0xCD, 0x51, 0x3D, 0x3D, 0xB4, 0x81, 0xF9, + 0x33, 0x79, 0xE9, 0x62, 0x9F, 0x93, 0x5F, 0xA8, 0x77, 0x26, 0x75, 0x01, + 0x40, 0xD3, 0xE3, 0xBD, 0x68, 0x8D, 0x1B, 0xCC, 0xE7, 0x79, 0xB2, 0x3E, + 0x61, 0xB6, 0x00, 0xF0, 0x0A, 0x58, 0xF2, 0xC1, 0x4C, 0x5A, 0xA4, 0x86, + 0xD4, 0xCA, 0xCB, 0x15, 0xCC, 0xD1, 0x16, 0x74, 0x70, 0xF3, 0xCB, 0xBA, + 0x0E, 0x8A, 0xDB, 0xEB, 0x4F, 0x3D, 0x0C, 0x3C, 0xFE, 0x40, 0x7D, 0x46, + 0xC0, 0x0E, 0x0E, 0x18, 0x64, 0x69, 0xAB, 0xEF, 0x00, 0x68, 0x83, 0x95, + 0xFF, 0x32, 0xF3, 0x13, 0x78, 0x8C, 0x1E, 0xF9, 0xA8, 0xE8, 0x2D, 0x5F, + 0x04, 0xB8, 0x15, 0x22, 0x76, 0xDD, 0x46, 0xCF, 0x69, 0xA4, 0xCE, 0x5B, + 0x20, 0x77, 0xA0, 0x22, 0x24, 0xE5, 0xDE, 0xB8, 0xF3, 0x44, 0x5B, 0xC9, + 0xEF, 0x47, 0xFD, 0x3A, 0x02, 0xAF, 0x31, 0x6C, 0x02, 0x4A, 0x02, 0x3C, + 0x65, 0x5A, 0x0B, 0x63, 0xB0, 0x11, 0xBB, 0x07, 0x3C, 0xFC, 0xFA, 0xAD, + 0x93, 0x46, 0x11, 0x6D, 0x68, 0xFF, 0xB7, 0xC7, 0x58, 0x2F, 0x7C, 0x23, + 0x62, 0xD7, 0xD9, 0xF9, 0x7A, 0x8A, 0xD3, 0x11, 0x58, 0xAC, 0x43, 0x0D, + 0xA0, 0x77, 0x8D, 0x88, 0xD5, 0x34, 0xD1, 0xB9, 0x2E, 0x4A, 0x8C, 0xDC, + 0xA0, 0x71, 0xB9, 0xB2, 0x18, 0xC5, 0x74, 0x1E, 0x48, 0x9E, 0x70, 0x0A, + 0x7E, 0x9B, 0x71, 0xFA, 0xC7, 0x4D, 0x3C, 0x6E, 0x19, 0x88, 0xF0, 0xE2, + 0xA5, 0x99, 0x3D, 0x85, 0xBB, 0xE1, 0xDA, 0x82, 0x7B, 0xA9, 0xBA, 0x59, + 0x0E, 0x03, 0x26, 0x3B, 0x83, 0xC8, 0x81, 0x36, 0x70, 0xA4, 0x11, 0x97, + 0x97, 0xB6, 0x47, 0x7D, 0x81, 0x02, 0x45, 0x1C, 0x76, 0x33, 0x98, 0x84, + 0xFE, 0xFE, 0x65, 0xDE, 0x37, 0x31, 0xE7, 0xD9, 0x6F, 0xDC, 0xAC, 0xC1, + 0x1C, 0x1F, 0xA4, 0x08, 0x98, 0x47, 0xD3, 0x53, 0xF9, 0x24, 0x6E, 0x26, + 0x99, 0x7C, 0xF2, 0xCF, 0x2A, 0xC8, 0xCC, 0xAD, 0x17, 0x09, 0xE3, 0x1B, + 0x66, 0xAC, 0x24, 0x6F, 0xE0, 0x88, 0x14, 0xC4, 0x8A, 0xF2, 0xFA, 0x93, + 0xE9, 0x48, 0xB5, 0xA4, 0x52, 0xF9, 0xDE, 0x54, 0xF5, 0xF4, 0x20, 0x95, + 0x45, 0xCE, 0x37, 0x2E, 0x9E, 0x0A, 0xC7, 0x89, 0xF2, 0x00, 0x64, 0x6D, + 0xBC, 0xAF, 0x9F, 0x52, 0xBC, 0xA0, 0x17, 0xE3, 0x20, 0x42, 0xAB, 0xBF, + 0xFB, 0x2A, 0x7F, 0x51, 0xAC, 0xCC, 0x40, 0xEF, 0x6D, 0xF2, 0xBC, 0x3D, + 0xE2, 0xDC, 0x99, 0x0C, 0x2D, 0xBC, 0x47, 0x1D, 0x98, 0x02, 0x0B, 0xB2, + 0xE2, 0xA2, 0x03, 0x47, 0x3C, 0x17, 0x69, 0xD6, 0x09, 0xA4, 0x8B, 0x9F, + 0x63, 0x40, 0xD8, 0x5F, 0x67, 0xB3, 0x95, 0x28, 0x16, 0xAF, 0x67, 0x97, + 0x3A, 0x67, 0x29, 0x67, 0x3C, 0xF1, 0x9D, 0x24, 0x34, 0xE3, 0x47, 0x14, + 0xC6, 0x94, 0xA0, 0x1F, 0xB7, 0x64, 0x9D, 0x7E, 0x38, 0xB8, 0x70, 0xD2, + 0x4A, 0x74, 0x54, 0xA4, 0x64, 0x34, 0x27, 0x3B, 0xB7, 0x98, 0x18, 0x07, + 0x1F, 0x4E, 0x00, 0x86, 0x91, 0x6A, 0x71, 0x09, 0x72, 0x6B, 0x42, 0x4F, + 0x11, 0x62, 0xDC, 0x0B, 0x15, 0x0C, 0x74, 0x0B, 0x6D, 0xFF, 0xC2, 0x28, + 0x98, 0x97, 0x33, 0x65, 0xD6, 0xBB, 0x83, 0x4E, 0x4B, 0xE2, 0xCF, 0x7E, + 0x98, 0x4B, 0xAD, 0x55, 0xF2, 0x1A, 0xEF, 0x15, 0x05, 0xA6, 0xB6, 0xF4, + 0xDD, 0x97, 0xAA, 0x81, 0x6D, 0x84, 0x86, 0x17, 0xA0, 0xA5, 0x1D, 0xC3, + 0x8C, 0xEA, 0x28, 0xCE, 0x69, 0xCC, 0x56, 0x15, 0xFA, 0xD3, 0xEC, 0x12, + 0xCD, 0x8A, 0x98, 0xD5, 0x13, 0xE9, 0x72, 0xBF, 0x01, 0xCE, 0xBA, 0xF7, + 0xCA, 0x85, 0x8C, 0x64, 0x55, 0x60, 0xBA, 0x61, 0xF0, 0xDE, 0x97, 0xD9, + 0x15, 0xCF, 0xE2, 0x9C, 0xA3, 0x9A, 0x5F, 0x9F, 0xFE, 0xD3, 0xC7, 0x5A, + 0xF4, 0x44, 0x69, 0x7F, 0x63, 0x41, 0x97, 0x33, 0xD7, 0x41, 0xDF, 0x9B, + 0x3F, 0x03, 0x23, 0x4A, 0x84, 0x7B, 0x4E, 0xB9, 0x94, 0x3D, 0xBD, 0x32, + 0x56, 0x1C, 0x47, 0x7A, 0xF0, 0xED, 0x9D, 0x99, 0x24, 0x09, 0xC6, 0x50, + 0xC0, 0x98, 0xEA, 0xFE, 0x70, 0x8B, 0xDF, 0xB8, 0x5E, 0x7D, 0x64, 0x2C, + 0xDC, 0xB5, 0x5F, 0xCA, 0xF6, 0x7B, 0x02, 0x88, 0xA2, 0x82, 0xD2, 0x14, + 0x0E, 0xA4, 0x14, 0x3B, 0x4A, 0x95, 0x14, 0x5E, 0xD9, 0xFB, 0x47, 0x5F, + 0x36, 0x9F, 0x85, 0xC2, 0x94, 0x15, 0xB9, 0xC0, 0x01, 0x08, 0x86, 0x75, + 0x1E, 0x88, 0x2D, 0x5A, 0x39, 0xC1, 0xDE, 0xC1, 0x8B, 0x32, 0xC4, 0xE7, + 0x19, 0xA6, 0xFE, 0xFC, 0x62, 0xE9, 0xCF, 0x3E, 0x11, 0xD1, 0x5E, 0x24, + 0x66, 0x23, 0x5B, 0x8F, 0x42, 0x83, 0xD6, 0x3E, 0x2A, 0xE5, 0xF2, 0xE3, + 0x6A, 0x69, 0x40, 0xBE, 0xD4, 0xFA, 0x83, 0xC6, 0xE8, 0x2B, 0x35, 0xFE, + 0x1A, 0xD1, 0xF3, 0x37, 0x9A, 0x88, 0xA0, 0xC9, 0x55, 0x13, 0x4B, 0xC0, + 0xEC, 0x45, 0xD7, 0x48, 0x16, 0x28, 0x99, 0xE4, 0x3B, 0x77, 0xF2, 0xB9, + 0x27, 0x34, 0x4F, 0xAB, 0x18, 0x87, 0x63, 0xE5, 0xF5, 0x68, 0x57, 0x9D, + 0x5C, 0xAD, 0x53, 0xD7, 0x25, 0xB3, 0x99, 0x5D, 0x70, 0xE0, 0xF6, 0x72, + 0xBE, 0xD9, 0x5E, 0x82, 0xFB, 0xD0, 0x72, 0xF5, 0x6E, 0x86, 0xEF, 0x7C, + 0xD8, 0x23, 0x1E, 0x85, 0x20, 0x7C, 0xEA, 0x2C, 0x8E, 0x09, 0x2A, 0x9B, + 0x73, 0x62, 0xD3, 0x96, 0xAA, 0xE0, 0x45, 0x1E, 0x63, 0x57, 0xB7, 0x6A, + 0xB7, 0xB8, 0xFE, 0x01, 0x85, 0x93, 0xEB, 0x7B, 0x25, 0x41, 0xE5, 0x7D, + 0xE5, 0x20, 0x50, 0x15, 0x92, 0x06, 0xFE, 0xFA, 0x3F, 0x93, 0x16, 0xC5, + 0x6F, 0x4A, 0xDF, 0xB3, 0xB9, 0x43, 0x17, 0x32, 0xAF, 0x81, 0x3B, 0x61, + 0x19, 0xDE, 0xCD, 0xBB, 0x7E, 0x24, 0x74, 0xDD, 0xEB, 0xAE, 0xEA, 0x64, + 0x34, 0x59, 0x30, 0x31, 0x84, 0x15, 0x77, 0x30, 0x0A, 0xB6, 0x5D, 0xD9, + 0x3A, 0x47, 0xD2, 0x9D, 0xA9, 0x57, 0x6F, 0x1D, 0x3E, 0x47, 0x82, 0xAD, + 0x80, 0x4C, 0x11, 0x64, 0x4A, 0xA5, 0x28, 0xAE, 0xD3, 0x52, 0x13, 0x23, + 0xEF, 0x74, 0x9D, 0x05, 0xBD, 0xCA, 0x9D, 0xAF, 0x69, 0x55, 0xE8, 0x96, + 0xDB, 0x35, 0x52, 0x75, 0x0D, 0x7A, 0x19, 0x3E, 0xE9, 0x11, 0xF1, 0x84, + 0x5E, 0xB5, 0x1F, 0xD8, 0xF4, 0xA3, 0x25, 0x2A, 0x7F, 0xAF, 0x44, 0xD0, + 0xAC, 0x7F, 0x9C, 0x87, 0xB1, 0x11, 0x48, 0x69, 0x9F, 0x3C, 0x60, 0xC4, + 0x38, 0x40, 0xBF, 0x43, 0xA2, 0xE4, 0x37, 0xC3, 0x7E, 0xB1, 0x51, 0x82, + 0x93, 0xFE, 0x7F, 0xD1, 0x30, 0xD8, 0xBF, 0xD8, 0x6D, 0x7A, 0xE8, 0x38, + 0xFA, 0xE5, 0x4B, 0x42, 0x2C, 0x24, 0xF3, 0xA1, 0x7D, 0xE3, 0xE7, 0x9A, + 0x6B, 0x53, 0x3C, 0xAC, 0x00, 0x6A, 0xB5, 0xF9, 0x10, 0xD5, 0x3D, 0x11, + 0xE4, 0x1D, 0x51, 0xA2, 0x40, 0xC4, 0x48, 0xDC, 0x1C, 0x30, 0xA8, 0x1F, + 0x89, 0xE2, 0x53, 0x25, 0xF2, 0xDA, 0xE3, 0xA4, 0xD6, 0xBB, 0x72, 0x5A, + 0x0F, 0x3F, 0x98, 0xE4, 0x27, 0xF2, 0xC6, 0x82, 0x5B, 0x64, 0x8A, 0x3D, + 0x29, 0x9A, 0xBF, 0x6A, 0x0D, 0x61, 0xA1, 0xCF, 0x4F, 0x00, 0xE0, 0xE2, + 0x9A, 0x45, 0xF7, 0xDB, 0x38, 0x0D, 0x38, 0x7C, 0x98, 0x20, 0xB6, 0xA8, + 0x00, 0xFE, 0xB5, 0xCD, 0xBB, 0xC2, 0x8A, 0xDF, 0xA3, 0x23, 0x87, 0x77, + 0x7F, 0x33, 0x36, 0xB2, 0xC3, 0x90, 0xAA, 0x49, 0x92, 0x71, 0xEB, 0xFE, + 0xCD, 0x32, 0xD1, 0xAB, 0x22, 0xB3, 0xC6, 0x4B, 0x12, 0x7E, 0x53, 0xAA, + 0xCF, 0xC7, 0x01, 0xDA, 0x38, 0x2A, 0x0A, 0x54, 0xFC, 0x88, 0x41, 0x15, + 0x04, 0x27, 0x02, 0x8C, 0x0F, 0x6D, 0xC2, 0xCF, 0xDA, 0xF8, 0x3C, 0xF7, + 0x58, 0xE2, 0x70, 0x1A, 0x7E, 0xBE, 0x39, 0xEE, 0xC2, 0x7A, 0xD5, 0x52, + 0x4B, 0x62, 0x84, 0xDE, 0x91, 0x46, 0xDC, 0x3A, 0x67, 0x4A, 0xE6, 0x4D, + 0x82, 0xFA, 0x60, 0xE2, 0x34, 0x26, 0x1A, 0xD8, 0x0D, 0xA1, 0x57, 0x62, + 0x04, 0x38, 0x52, 0x4D, 0xA6, 0x8B, 0xC2, 0x0E, 0xCE, 0x26, 0x28, 0x31, + 0x53, 0xC6, 0x63, 0x5A, 0x75, 0x45, 0x65, 0xDA, 0x4B, 0x8D, 0x77, 0xB0, + 0x06, 0x28, 0x36, 0x43, 0x1D, 0xA3, 0xC7, 0x33, 0x28, 0x8D, 0x70, 0xB5, + 0x0D, 0x24, 0x25, 0x50, 0xA2, 0xEB, 0x50, 0x61, 0x98, 0x3D, 0x8C, 0xCD, + 0xDC, 0x17, 0x3F, 0xE4, 0xDD, 0x46, 0x3A, 0xD0, 0xA6, 0x78, 0xD7, 0x85, + 0x63, 0xC8, 0x3A, 0x54, 0xDB, 0xD5, 0xB9, 0x7C, 0x4B, 0xFD, 0x1E, 0xA2, + 0xBD, 0x97, 0x22, 0x09, 0x06, 0x8F, 0xA5, 0x49, 0x06, 0x29, 0x71, 0x13, + 0x69, 0xCE, 0xEC, 0x75, 0xE9, 0x93, 0x58, 0x80, 0x05, 0xFF, 0xBF, 0x1D, + 0x48, 0xCE, 0x34, 0xDC, 0x03, 0x40, 0xB9, 0x6F, 0x40, 0x94, 0x2C, 0x30, + 0xD0, 0x6F, 0x35, 0xC0, 0x46, 0xE5, 0xD1, 0xFF, 0x44, 0x83, 0x2C, 0x6D, + 0x6C, 0xB2, 0x04, 0xD8, 0xB0, 0x1E, 0x2C, 0xF8, 0x71, 0xA4, 0xA1, 0x60, + 0x23, 0x8F, 0x19, 0xF7, 0x58, 0x29, 0x42, 0x9F, 0x24, 0x18, 0x2B, 0xD3, + 0xF0, 0x31, 0x45, 0xB1, 0xA3, 0x5E, 0xA1, 0xC9, 0x52, 0xEE, 0xE6, 0xF5, + 0x0A, 0xBB, 0xEB, 0x6B, 0x09, 0xE9, 0xA7, 0x84, 0xB6, 0x1C, 0xE3, 0xA3, + 0x0B, 0x7E, 0x8A, 0x0B, 0xD0, 0x4C, 0xE9, 0x50, 0x45, 0x34, 0x21, 0x1B, + 0x55, 0x0E, 0x12, 0x1A, 0x74, 0xDE, 0x28, 0xEB, 0x20, 0x66, 0x13, 0xBB, + 0xEA, 0xC7, 0xDA, 0xCF, 0xB4, 0x16, 0x57, 0x65, 0x0A, 0xAD, 0x98, 0xF7, + 0x03, 0x1E, 0xF5, 0xD9, 0xFC, 0x3E, 0x59, 0xEC, 0x7A, 0x2B, 0x46, 0xC0, + 0x13, 0x19, 0xD8, 0xFD, 0xF7, 0x0D, 0x61, 0xFC, 0x41, 0x2A, 0x5C, 0xC7, + 0x84, 0x95, 0xEF, 0x31, 0x9F, 0x1F, 0x84, 0x53, 0x7E, 0xA8, 0x37, 0x04, + 0x1D, 0x1D, 0x08, 0xD5, 0xE5, 0x4B, 0x0C, 0x06, 0xCC, 0x14, 0x19, 0xA9, + 0x4D, 0x75, 0x06, 0x49, 0x48, 0xC9, 0xDB, 0x3F, 0x1B, 0xB1, 0x0D, 0x19, + 0x71, 0xEB, 0x13, 0xE1, 0x26, 0xAF, 0xC0, 0xD9, 0x87, 0xC3, 0xD8, 0x68, + 0x8A, 0x3C, 0x96, 0x6B, 0xDE, 0x94, 0x3D, 0x60, 0x0B, 0x24, 0x8F, 0x0C, + 0xE1, 0xA3, 0xA7, 0x05, 0x40, 0xB7, 0x24, 0x35, 0x82, 0x45, 0xA0, 0xE0, + 0x26, 0xD2, 0xFA, 0xAB, 0x59, 0x33, 0x4E, 0x95, 0xD2, 0xFA, 0x72, 0x82, + 0x2C, 0x00, 0x2F, 0xE0, 0xE5, 0x49, 0x16, 0x30, 0x0C, 0x3A, 0xC1, 0xDC, + 0x11, 0x70, 0x59, 0xF9, 0x98, 0x81, 0xBB, 0x9F, 0x60, 0xEB, 0xB0, 0xAD, + 0x5B, 0x65, 0x7A, 0xC4, 0x3E, 0xE7, 0x6A, 0x3D, 0xD2, 0x7D, 0x02, 0xD3, + 0xA8, 0x98, 0xE5, 0xF1, 0xF5, 0xE1, 0xCF, 0xFA, 0x71, 0x50, 0xAA, 0x8A, + 0xB1, 0x43, 0xDC, 0x3A, 0x0E, 0xC2, 0x77, 0xF3, 0x95, 0x39, 0x82, 0x1D, + 0x4D, 0x88, 0xFD, 0xA6, 0x55, 0x02, 0x5C, 0x80, 0x1E, 0x84, 0x91, 0x5C, + 0x7D, 0x63, 0x36, 0x42, 0x68, 0xA8, 0x15, 0x72, 0x40, 0xC0, 0xF5, 0x52, + 0xC8, 0x9B, 0xB8, 0xAD, 0x00, 0xCB, 0x4B, 0x0A, 0x87, 0x54, 0x96, 0x48, + 0x47, 0x7D, 0x39, 0xCA, 0x1D, 0xF0, 0x83, 0x63, 0x9A, 0x7F, 0xE9, 0xB5, + 0x5A, 0x11, 0x2F, 0x94, 0x30, 0x9F, 0x1D, 0xD6, 0xD5, 0x98, 0xCB, 0x80, + 0x7B, 0x82, 0x2B, 0xC0, 0xA0, 0x73, 0xBD, 0x17, 0x33, 0xE4, 0x3B, 0xE0, + 0xE5, 0x20, 0x59, 0xE6, 0x94, 0xF8, 0xD5, 0x41, 0x21, 0x2D, 0xAD, 0xF0, + 0x10, 0x08, 0x79, 0x60, 0x2F, 0x7E, 0x26, 0x82, 0xE8, 0xA2, 0x41, 0x79, + 0xE7, 0xF6, 0x06, 0xC0, 0xB2, 0x59, 0xF9, 0x5B, 0x1B, 0x20, 0x12, 0xA0, + 0xF5, 0xD8, 0x0F, 0x1F, 0xA6, 0x96, 0x0A, 0x69, 0x3B, 0x2B, 0xD1, 0x95, + 0x18, 0x7F, 0xA4, 0x1B, 0x4B, 0xE4, 0x82, 0xDA, 0x50, 0x41, 0xA6, 0x30, + 0x0D, 0xC0, 0x68, 0xEC, 0xA9, 0x43, 0x2E, 0x17, 0x13, 0x0B, 0x21, 0x00, + 0x42, 0xF5, 0xCE, 0x2F, 0x10, 0x81, 0x3D, 0x6F, 0xDB, 0xDE, 0x81, 0xD1, + 0x10, 0xDE, 0x4E, 0x02, 0x98, 0x85, 0x29, 0x81, 0x59, 0xC4, 0x24, 0x82, + 0x25, 0xF0, 0x3D, 0x93, 0xB3, 0x08, 0xC9, 0xC5, 0x3D, 0xA1, 0x97, 0xAE, + 0x2D, 0xE3, 0x93, 0xAC, 0xBB, 0xB2, 0x06, 0xC6, 0x54, 0x58, 0x1C, 0x9A, + 0x37, 0x6B, 0xDE, 0xEA, 0x63, 0xDE, 0x3F, 0x07, 0x76, 0xFF, 0x8E, 0x41, + 0x4D, 0x2E, 0x04, 0x54, 0x7D, 0xDF, 0x7F, 0x26, 0x6A, 0xD2, 0x5D, 0xBB, + 0x19, 0x5F, 0x2B, 0x09, 0xF4, 0x15, 0x7D, 0x5E, 0xB5, 0x48, 0xEE, 0xF1, + 0x17, 0xC0, 0x32, 0xE6, 0x14, 0x2C, 0x2D, 0xF3, 0xDD, 0xDA, 0xFD, 0xC5, + 0x2D, 0x05, 0xB3, 0x7D, 0x69, 0x42, 0xF4, 0x4F, 0xDC, 0xEE, 0x27, 0x6C, + 0x10, 0x59, 0xCB, 0x63, 0xF6, 0xE9, 0xC2, 0x3B, 0x8A, 0xD0, 0xA8, 0x10, + 0x70, 0xF1, 0x35, 0x2B, 0x3D, 0x8E, 0xAE, 0xBD, 0xD3, 0xB7, 0xE2, 0x9E, + 0x3A, 0xD7, 0xBD, 0xF5, 0x38, 0x32, 0x90, 0x4F, 0xE2, 0x42, 0xB7, 0x73, + 0xE0, 0xFE, 0x83, 0xEA, 0x25, 0x87, 0xFB, 0xB7, 0xE7, 0x31, 0x66, 0xEB, + 0xAA, 0xCC, 0x40, 0x4F, 0x35, 0x18, 0x21, 0xFF, 0x31, 0x3C, 0x61, 0x8C, + 0xEC, 0xB4, 0x20, 0xD0, 0xFE, 0x1C, 0x81, 0x53, 0xB0, 0x6F, 0x76, 0xF7, + 0x0F, 0x7F, 0x51, 0x51, 0x40, 0xAE, 0x35, 0x84, 0x84, 0xA9, 0x35, 0x9C, + 0xC0, 0x3C, 0x0D, 0x7E, 0x73, 0x5B, 0xA7, 0xE6, 0x28, 0x62, 0x6C, 0x53, + 0x68, 0x2D, 0x72, 0xA1, 0x0F, 0x63, 0xCB, 0x79, 0x79, 0xE5, 0xA5, 0x24, + 0xCF, 0x6A, 0x60, 0x6C, 0x0E, 0xF3, 0x52, 0x5B, 0xDF, 0xA4, 0x26, 0x7C, + 0xC2, 0xF3, 0xD1, 0x20, 0x8A, 0x8C, 0x80, 0x04, 0x77, 0xCE, 0x0C, 0xE0, + 0xA3, 0x8C, 0xE5, 0xC2, 0xDE, 0x60, 0xC1, 0x35, 0x18, 0xA8, 0x94, 0xCF, + 0xEA, 0x81, 0xD8, 0xE9, 0x22, 0x93, 0xDB, 0x7A, 0xAA, 0x51, 0xAD, 0xE5, + 0x44, 0x6B, 0x31, 0xFF, 0x04, 0xE1, 0xB6, 0xE3, 0x55, 0xFA, 0xEF, 0x17, + 0xE7, 0x94, 0x37, 0xDF, 0x89, 0xD5, 0x29, 0x07, 0x96, 0xC7, 0x76, 0xE5, + 0x21, 0xD7, 0xE2, 0xB3, 0xA4, 0x77, 0x6F, 0xE4, 0x1E, 0xAD, 0x03, 0x64, + 0xF5, 0x38, 0x33, 0xC5, 0x74, 0x2E, 0xA1, 0xF1, 0xBB, 0xAF, 0x1B, 0x24, + 0x8B, 0xEE, 0x46, 0x86, 0x25, 0xAD, 0x95, 0x5E, 0x28, 0x1F, 0xE9, 0x2C, + 0xCD, 0xC9, 0x85, 0xFC, 0x5B, 0x74, 0x3F, 0xF3, 0xF9, 0x2B, 0x5C, 0x23, + 0x5C, 0xD0, 0xBA, 0xBA, 0x7E, 0x8C, 0xA0, 0xA9, 0x56, 0xA0, 0x55, 0xA5, + 0x36, 0x7D, 0xB8, 0x8B, 0xA6, 0x46, 0x62, 0x1C, 0x1E, 0x7E, 0x7C, 0xE3, + 0xC3, 0xEA, 0x33, 0x8E, 0x28, 0x9A, 0xA8, 0xB6, 0x8E, 0xC3, 0xA4, 0x0F, + 0x4A, 0x23, 0xFF, 0x6F, 0x3B, 0x2A, 0xBE, 0x65, 0x97, 0x10, 0x30, 0x12, + 0xC0, 0xA6, 0x3A, 0x34, 0xE3, 0x6C, 0xA8, 0x11, 0xED, 0x78, 0x60, 0xE2, + 0xAE, 0xC8, 0x2E, 0xE3, 0xEA, 0xB9, 0x3E, 0xAB, 0xBD, 0x15, 0x49, 0x9C, + 0x75, 0xD7, 0x49, 0xE3, 0x5C, 0xE9, 0xA2, 0x8A, 0x0C, 0xBE, 0x74, 0x81, + 0x1D, 0xE0, 0xCA, 0x12, 0x3E, 0x8A, 0x23, 0xF2, 0x7B, 0x5D, 0xF0, 0xF7, + 0x0E, 0x1B, 0x73, 0xF6, 0x5E, 0x8C, 0xE0, 0x8E, 0x57, 0xD5, 0x01, 0x56, + 0x5E, 0x3B, 0x7C, 0xC8, 0xF7, 0xE4, 0x61, 0x70, 0x5D, 0x4F, 0xC3, 0x01, + 0x26, 0x2A, 0x71, 0x26, 0x50, 0x9B, 0x65, 0xA1, 0x49, 0xBE, 0x50, 0x4C, + 0x44, 0x3C, 0x5B, 0x09, 0x3B, 0x39, 0x32, 0x34, 0x82, 0x3B, 0xBF, 0x74, + 0x6B, 0x37, 0x59, 0xF4, 0x13, 0x21, 0x30, 0x86, 0x6D, 0x94, 0xDE, 0x2F, + 0x5F, 0x69, 0x07, 0x32, 0xFF, 0x14, 0x88, 0x46, 0xA4, 0xB1, 0x9E, 0x69, + 0x5A, 0xB7, 0x91, 0x41, 0x2A, 0x62, 0x3C, 0x81, 0xE1, 0x4A, 0x47, 0x9D, + 0x61, 0xB2, 0x46, 0x2D, 0x04, 0x3F, 0xD9, 0x57, 0xF2, 0xAB, 0xC9, 0x4F, + 0xB3, 0xCE, 0x11, 0x2A, 0x77, 0x76, 0x49, 0x1B, 0x7E, 0x1D, 0xB7, 0xB3, + 0x1D, 0xB7, 0x84, 0x5A, 0xC5, 0xCC, 0x1F, 0x9C, 0x82, 0x6D, 0xE0, 0x62, + 0x03, 0xEE, 0xA9, 0x9A, 0x05, 0x26, 0x0A, 0xEB, 0x0D, 0x55, 0x01, 0x59, + 0x71, 0x10, 0xB9, 0x53, 0x20, 0x65, 0x7B, 0x42, 0x90, 0x37, 0x36, 0x5A, + 0xC2, 0xBA, 0x91, 0x20, 0xE0, 0x89, 0xA9, 0x65, 0x2D, 0x67, 0x83, 0x5D, + 0x5A, 0xB9, 0x6B, 0x27, 0x13, 0x51, 0xA8, 0x00, 0x9E, 0x98, 0xE9, 0x62, + 0xD1, 0x55, 0x7D, 0x37, 0x1E, 0xB5, 0xA3, 0x17, 0x9B, 0x45, 0xD8, 0x60, + 0x02, 0xAC, 0xFC, 0x2B, 0xA9, 0xAC, 0x66, 0x79, 0xF9, 0x0C, 0xBC, 0xD4, + 0x50, 0x15, 0x8B, 0x48, 0xB1, 0x6A, 0xB4, 0xED, 0xB7, 0xFE, 0xE8, 0x9E, + 0x3B, 0xE3, 0x1C, 0xA5, 0x21, 0x15, 0x06, 0x66, 0x2F, 0xBB, 0x05, 0x33, + 0xE4, 0x5A, 0x17, 0x5D, 0xF7, 0xB9, 0x2F, 0x3A, 0x2B, 0x83, 0xFF, 0xAC, + 0xB6, 0x65, 0x92, 0xEF, 0x6E, 0x1C, 0x8A, 0x6C, 0x72, 0x52, 0x32, 0xA6, + 0x5A, 0x16, 0x75, 0xEE, 0xA9, 0x95, 0x84, 0x33, 0x34, 0x5E, 0x71, 0x66, + 0x40, 0xB9, 0xFF, 0x8B, 0xD5, 0x50, 0x81, 0xAF, 0x27, 0xC8, 0x58, 0xEE, + 0x0D, 0xE7, 0x6D, 0xEB, 0x24, 0xA2, 0x3F, 0xDA, 0x1A, 0xD4, 0xBE, 0x3B, + 0x02, 0x7B, 0x1C, 0x5A, 0xAF, 0x1D, 0xE3, 0x4B, 0x9F, 0xBC, 0x78, 0x5B, + 0x0B, 0x91, 0x73, 0x78, 0x64, 0xD9, 0x77, 0xC7, 0x6E, 0x4B, 0x94, 0x5F, + 0xE9, 0x8D, 0x8F, 0x49, 0xDC, 0x48, 0xEE, 0x58, 0x86, 0x04, 0x63, 0xEB, + 0x0D, 0x39, 0x31, 0x81, 0xB4, 0xA8, 0x16, 0xB3, 0x7F, 0x60, 0x7F, 0x94, + 0xEE, 0x06, 0x53, 0x38, 0x10, 0x0F, 0x93, 0x7F, 0x12, 0x1F, 0x76, 0x28, + 0xA7, 0x3E, 0x46, 0x10, 0x8C, 0x28, 0x53, 0xCF, 0x9F, 0x83, 0x7F, 0x0C, + 0xD8, 0xD6, 0x52, 0xF3, 0xE8, 0xD2, 0x21, 0xA6, 0x4A, 0xEE, 0x8B, 0xF7, + 0x5B, 0x19, 0x90, 0x6D, 0x35, 0x83, 0xAF, 0x3F, 0x49, 0x71, 0xB1, 0x3E, + 0xD1, 0x98, 0x60, 0x77, 0x05, 0x36, 0xA5, 0xFF, 0x82, 0x37, 0x14, 0x49, + 0x62, 0x98, 0xB3, 0x05, 0xF5, 0xAC, 0xE2, 0xCC, 0x47, 0x09, 0x94, 0x8A, + 0x59, 0x00, 0x23, 0xF4, 0x6D, 0x08, 0xE2, 0xAD, 0x7A, 0xF0, 0xCC, 0x97, + 0x68, 0xF7, 0x21, 0x5C, 0x43, 0xD4, 0x1F, 0x16, 0x1A, 0xC6, 0x65, 0xFE, + 0x96, 0xB4, 0x7C, 0x2C, 0x79, 0x9E, 0xEC, 0xD4, 0x96, 0xAF, 0x0E, 0x35, + 0x24, 0x06, 0x03, 0x8E, 0x9A, 0x4E, 0xA5, 0xA7, 0xCD, 0x35, 0x32, 0xD2, + 0x30, 0x15, 0xAC, 0xED, 0xDF, 0xF1, 0x83, 0x39, 0x17, 0xBB, 0x9B, 0x90, + 0xED, 0xFB, 0x64, 0xE9, 0x55, 0x09, 0x49, 0x86, 0x7A, 0x9A, 0x43, 0x13, + 0xB1, 0xD2, 0xC7, 0xC7, 0xC6, 0xA1, 0x99, 0xC8, 0x51, 0x4A, 0x5F, 0x9D, + 0x6F, 0xA6, 0xCD, 0x97, 0x30, 0xE9, 0x55, 0x0B, 0x6F, 0x0F, 0x4A, 0x43, + 0x6E, 0x71, 0xE6, 0xCF, 0x3A, 0x7C, 0xC9, 0x78, 0x70, 0xFE, 0xBD, 0x0A, + 0x00, 0xEC, 0xA6, 0x7F, 0x83, 0xFA, 0xBE, 0xD4, 0xDF, 0xB0, 0x86, 0x41, + 0x12, 0x53, 0x1B, 0x4F, 0x7C, 0x1E, 0x60, 0x2A, 0xC1, 0x20, 0x7A, 0x00, + 0xED, 0x6C, 0x66, 0x23, 0x1F, 0x79, 0xC3, 0x3E, 0x01, 0x74, 0xA7, 0x60, + 0x7D, 0x1F, 0x29, 0x93, 0x03, 0xF0, 0x64, 0xF6, 0x6F, 0x56, 0x8E, 0x75, + 0x57, 0x25, 0x70, 0xDC, 0xD2, 0xD2, 0x28, 0x37, 0xA8, 0x05, 0x9B, 0xB0, + 0xAD, 0x1A, 0x2D, 0x86, 0xA9, 0x50, 0xB8, 0xE3, 0xF6, 0xA2, 0x3E, 0x17, + 0x5B, 0x78, 0x65, 0xC0, 0x61, 0x95, 0x0E, 0x27, 0x39, 0x72, 0x6A, 0x9E, + 0xCB, 0x8E, 0xAD, 0xEC, 0x0C, 0xFC, 0xDB, 0x9A, 0x9A, 0x12, 0x31, 0x16, + 0x68, 0x4F, 0x83, 0x79, 0x11, 0x3D, 0x75, 0xED, 0x2D, 0xEA, 0x92, 0x8E, + 0xDE, 0xAC, 0x07, 0x55, 0xF1, 0xE4, 0x30, 0x6C, 0xFC, 0x5C, 0x88, 0x1F, + 0x77, 0x94, 0xC8, 0x87, 0x73, 0xB2, 0xB6, 0x9F, 0x2A, 0x05, 0x71, 0xDE, + 0x8E, 0xF2, 0xEB, 0x3A, 0xDB, 0xBE, 0x46, 0xFA, 0x11, 0xA1, 0xCA, 0x1A, + 0xB3, 0x65, 0xAC, 0x42, 0x85, 0xD5, 0x0B, 0x23, 0x57, 0xA5, 0x53, 0xE9, + 0x58, 0x30, 0xE0, 0xF9, 0x23, 0xF0, 0x75, 0x2A, 0xF5, 0x2B, 0x9A, 0x25, + 0x96, 0xD7, 0x1E, 0x71, 0x31, 0xC7, 0xA7, 0xB0, 0x6B, 0x3F, 0x26, 0xF8, + 0x8D, 0xF9, 0x1E, 0x15, 0x83, 0xB8, 0xFF, 0xC6, 0xAA, 0xA6, 0x42, 0xAC, + 0x90, 0x82, 0xA2, 0x50, 0x7F, 0x1F, 0xC3, 0x99, 0xDC, 0x27, 0xD7, 0xAA, + 0x65, 0x13, 0x08, 0xA2, 0x66, 0x51, 0x7D, 0xC7, 0x7E, 0xAE, 0x1A, 0x33, + 0x2B, 0x72, 0xF3, 0xF4, 0x25, 0xD9, 0xEE, 0xF1, 0x07, 0x0F, 0xC3, 0x87, + 0xDF, 0x2B, 0x0C, 0xC8, 0x4D, 0x2E, 0xEB, 0xA3, 0x93, 0xB2, 0xBB, 0xAA, + 0x61, 0xE1, 0x71, 0x0D, 0x53, 0xE2, 0xF5, 0x7E, 0xF7, 0x08, 0x06, 0xAD, + 0x3E, 0xE7, 0xA6, 0xB9, 0x3B, 0xC9, 0x68, 0x5D, 0xB8, 0x7D, 0xC1, 0x31, + 0x9B, 0x70, 0xC2, 0x2B, 0x57, 0x26, 0x54, 0x67, 0x3D, 0x14, 0x26, 0xCF, + 0xB0, 0xEC, 0xD6, 0x00, 0xE3, 0x3F, 0x26, 0xCA, 0xEF, 0xB8, 0x1A, 0xFD, + 0xE4, 0x06, 0xE9, 0x41, 0xF2, 0xAD, 0x2E, 0x16, 0x11, 0x0A, 0x98, 0x4B, + 0x01, 0x67, 0x76, 0x99, 0xAE, 0x58, 0xF4, 0xAD, 0xC2, 0xC8, 0x56, 0x26, + 0x50, 0xB2, 0x77, 0x4B, 0x32, 0x71, 0x16, 0x13, 0xC7, 0xAE, 0xE3, 0xDE, + 0x1C, 0x6D, 0x54, 0x4C, 0x89, 0xA4, 0x81, 0x18, 0x53, 0xC3, 0x01, 0xCD, + 0xCF, 0x85, 0xFB, 0x3A, 0x97, 0xD5, 0x25, 0x56, 0x39, 0x89, 0xEF, 0x52, + 0xBB, 0x02, 0xC8, 0x23, 0xDD, 0x04, 0x36, 0x85, 0xA2, 0x33, 0xE4, 0x4F, + 0x41, 0xC8, 0xE9, 0x8B, 0xCE, 0xD5, 0xB0, 0xDB, 0xF3, 0xB4, 0xC3, 0x7C, + 0x70, 0x29, 0x0F, 0xB6, 0x3C, 0xB1, 0xD3, 0x0C, 0xD5, 0x06, 0x56, 0x2E, + 0x57, 0xD1, 0x90, 0xAB, 0x5D, 0xE8, 0xE6, 0xD6, 0x94, 0x58, 0xE2, 0xA8, + 0x92, 0x42, 0xF8, 0xD4, 0xD7, 0x2F, 0x1F, 0x16, 0x92, 0x0C, 0xD5, 0x8E, + 0x69, 0x98, 0xA9, 0x48, 0xA1, 0x6E, 0x94, 0x8C, 0x66, 0x30, 0xA3, 0x52, + 0x50, 0x7A, 0x29, 0x96, 0xB0, 0x2B, 0x16, 0x3E, 0x2C, 0x56, 0xA4, 0x9F, + 0x85, 0x96, 0x56, 0x25, 0x98, 0x56, 0xAA, 0xFB, 0xEE, 0x4A, 0x31, 0xD9, + 0xD7, 0xB3, 0x37, 0xE4, 0x1D, 0x49, 0x3D, 0xA7, 0xF7, 0x93, 0x31, 0x6D, + 0x99, 0x24, 0xE5, 0x30, 0x8F, 0xB4, 0x89, 0x56, 0x1F, 0xB7, 0x09, 0x4F, + 0x71, 0xDB, 0x4D, 0x02, 0x40, 0x7B, 0xEA, 0x75, 0x38, 0x2C, 0xCD, 0xE2, + 0x9F, 0x60, 0xC8, 0x4A, 0x84, 0x2F, 0x9D, 0xFF, 0x75, 0xED, 0x32, 0xBA, + 0xB7, 0xF4, 0xC8, 0x0E, 0xCF, 0xC5, 0x31, 0x8A, 0xA0, 0xF7, 0xC9, 0x07, + 0x54, 0x44, 0x90, 0xC1, 0x1C, 0x46, 0x49, 0xEE, 0x33, 0x0E, 0xB4, 0x87, + 0x4B, 0x9E, 0x3C, 0xF0, 0xAD, 0x0B, 0xA5, 0xA4, 0x28, 0x43, 0xE6, 0x34, + 0xD3, 0xD0, 0xF4, 0x88, 0x1E, 0xDE, 0x6E, 0x50, 0x81, 0x0E, 0x24, 0xE5, + 0x87, 0xA4, 0xAB, 0x67, 0xD1, 0x91, 0xD2, 0xB8, 0x57, 0xA6, 0x86, 0x4A, + 0x47, 0x45, 0x39, 0x6B, 0x1E, 0x2B, 0xCF, 0xCD, 0xE2, 0x1B, 0xBF, 0x75, + 0xC2, 0xD4, 0x5A, 0x68, 0x8F, 0xC6, 0xDC, 0x64, 0xBB, 0xBE, 0x71, 0x38, + 0x9D, 0x4B, 0xBE, 0x4E, 0xF6, 0x2D, 0xAC, 0x5D, 0x23, 0x6B, 0xC3, 0x96, + 0x51, 0x4D, 0x10, 0x70, 0x83, 0xCA, 0x69, 0x91, 0x52, 0x3E, 0x46, 0x03, + 0x93, 0xC3, 0xE0, 0x10, 0xDF, 0x24, 0x7F, 0x9B, 0x86, 0xD6, 0x5B, 0x95, + 0xD4, 0xCF, 0xED, 0x14, 0xCD, 0x53, 0x82, 0x97, 0x6C, 0x81, 0x9C, 0x3F, + 0x6B, 0xFA, 0x9B, 0x44, 0x1B, 0x29, 0xCA, 0x66, 0xD9, 0x22, 0xB1, 0xDE, + 0xFE, 0x3A, 0xE2, 0x0C, 0xD5, 0x62, 0xDB, 0x00, 0x12, 0x59, 0x74, 0xE6, + 0x8C, 0x22, 0x7B, 0x11, 0x7F, 0x59, 0xB3, 0x0A, 0x2C, 0x76, 0x5F, 0x71, + 0x31, 0xA2, 0xD8, 0x42, 0x28, 0xF3, 0x24, 0xC5, 0xF6, 0x85, 0x60, 0x32, + 0xC1, 0x91, 0xD7, 0x95, 0x61, 0x70, 0x51, 0x9A, 0x4E, 0x62, 0x8A, 0xCF, + 0xBD, 0x98, 0x00, 0xA0, 0x12, 0xB5, 0xB6, 0x90, 0xC7, 0x6E, 0xC3, 0x4A, + 0x8E, 0x2F, 0x50, 0xAD, 0xC0, 0x26, 0x12, 0xF4, 0x68, 0x1D, 0x51, 0x72, + 0x14, 0x06, 0xB7, 0x7A, 0xCA, 0x37, 0x8F, 0x39, 0x01, 0x76, 0xE5, 0xE4, + 0xF1, 0xCA, 0xDA, 0x6A, 0x6B, 0x7C, 0x7D, 0xD9, 0xA9, 0x39, 0xBB, 0x50, + 0x79, 0x02, 0xD6, 0xA1, 0x12, 0xE7, 0xE6, 0x9A, 0x1B, 0xF4, 0x89, 0x48, + 0x29, 0x88, 0xA7, 0xC8, 0xE9, 0xEF, 0xB1, 0x28, 0x18, 0x22, 0x4B, 0x6A, + 0x96, 0xAF, 0x06, 0x3B, 0xE0, 0x8E, 0x9B, 0x2C, 0xC1, 0x7B, 0xD9, 0x87, + 0x72, 0xA5, 0xC8, 0xFE, 0x30, 0x9C, 0x24, 0x79, 0xAD, 0x04, 0xBB, 0x38, + 0xA9, 0xB8, 0x29, 0x01, 0x41, 0xC3, 0x40, 0xD9, 0xE6, 0xE4, 0xD3, 0x97, + 0xE2, 0x42, 0xBF, 0x79, 0x59, 0x7B, 0xAF, 0x31, 0x0C, 0xF3, 0xD1, 0x72, + 0xA4, 0x9D, 0x36, 0xD9, 0xDB, 0x0C, 0x0F, 0xCC, 0x3A, 0x8C, 0xAF, 0x71, + 0xB7, 0x46, 0x2F, 0x26, 0x7D, 0x1E, 0x25, 0xC9, 0x8E, 0xA3, 0x9B, 0xCF, + 0x7F, 0xC4, 0x96, 0xB6, 0xC7, 0x05, 0x62, 0x08, 0x49, 0x3C, 0xFC, 0x24, + 0xAA, 0x16, 0xEB, 0x3C, 0xE6, 0x04, 0x57, 0xD1, 0xA3, 0x81, 0x6E, 0xD4, + 0x64, 0xF5, 0xC6, 0x24, 0x06, 0x9E, 0xA4, 0x76, 0x3E, 0x62, 0x31, 0x54, + 0xC8, 0xC7, 0xAA, 0x31, 0xC6, 0xF0, 0x71, 0x1B, 0xE7, 0x08, 0xFF, 0x3A, + 0x7A, 0xD3, 0x51, 0x5A, 0xE8, 0xA6, 0xD4, 0xAA, 0x6E, 0x20, 0x37, 0x28, + 0x0D, 0x0A, 0xCC, 0x25, 0x6C, 0x1E, 0x76, 0x8C, 0xC5, 0xCA, 0xDA, 0x6C, + 0x24, 0x17, 0xD4, 0xB0, 0x45, 0x3E, 0xD7, 0x25, 0xB8, 0x03, 0xED, 0xA2, + 0xDA, 0x82, 0x08, 0x8F, 0x10, 0x3F, 0x13, 0x43, 0x07, 0x3F, 0x8C, 0xF9, + 0xE5, 0xD5, 0xB0, 0x35, 0x01, 0x13, 0x61, 0x38, 0x97, 0xCA, 0xB4, 0xFE, + 0x1B, 0x1F, 0x44, 0xEC, 0xFB, 0xAB, 0x07, 0xB6, 0x3F, 0x21, 0x80, 0x6A, + 0x8D, 0xBA, 0x8A, 0x1D, 0xEA, 0xEF, 0xA0, 0xEB, 0xBC, 0x26, 0x37, 0x4F, + 0xA6, 0x16, 0xF8, 0xA2, 0x90, 0x3E, 0xF7, 0x06, 0xD8, 0x4C, 0x21, 0x94, + 0x2C, 0x5F, 0x49, 0x05, 0x12, 0xF8, 0xA8, 0xA5, 0x14, 0x40, 0xBE, 0x40, + 0x01, 0xF5, 0x23, 0xE1, 0xEE, 0xF6, 0x5B, 0xC0, 0xE6, 0x76, 0xEF, 0x1D, + 0x05, 0xA8, 0x77, 0xF2, 0x5D, 0x91, 0xBA, 0x62, 0xB8, 0xDD, 0xF0, 0xFC, + 0x5B, 0xA9, 0xB2, 0x25, 0xDD, 0x0E, 0x08, 0xFA, 0xE8, 0x5C, 0xCA, 0x43, + 0x0D, 0xD0, 0x65, 0x08, 0x23, 0xA7, 0x2A, 0x2C, 0xE6, 0x6F, 0xB6, 0x0A, + 0xE7, 0xED, 0x86, 0x80, 0x50, 0x94, 0x58, 0x0D, 0x11, 0x57, 0xED, 0xB9, + 0xD5, 0x7C, 0x33, 0xCD, 0x44, 0x9A, 0x17, 0xFB, 0x74, 0xF3, 0xB1, 0x2D, + 0x9F, 0x38, 0x5E, 0x6A, 0x9A, 0xAE, 0x5F, 0x7B, 0xAD, 0x4F, 0x9C, 0x8E, + 0x1E, 0x3A, 0x75, 0x4F, 0x30, 0xCF, 0xF7, 0x1C, 0x82, 0x34, 0xC6, 0x3E, + 0xE7, 0x5B, 0x8B, 0x2C, 0xD8, 0xFE, 0xDB, 0x33, 0x27, 0xBB, 0x2E, 0x24, + 0xB0, 0xDA, 0x74, 0xD3, 0x94, 0x85, 0x78, 0x36, 0x40, 0x2D, 0xEE, 0x40, + 0x4A, 0xED, 0x00, 0x4C, 0xDB, 0xF9, 0x49, 0x2F, 0xEC, 0x03, 0x99, 0x63, + 0xDD, 0x9E, 0xB7, 0xA3, 0x3B, 0xE1, 0xF2, 0x0E, 0x5D, 0x58, 0xD8, 0x33, + 0xE9, 0xE4, 0x0A, 0xD2, 0x83, 0xA0, 0x3F, 0x80, 0x9A, 0x01, 0xC5, 0x8D, + 0xF3, 0x14, 0xC8, 0x0F, 0xE4, 0xB8, 0xAD, 0xCD, 0x3E, 0x50, 0x43, 0x17, + 0xC1, 0x58, 0x8D, 0x64, 0x03, 0xB1, 0xE5, 0x42, 0xC8, 0x34, 0x6A, 0xFB, + 0x74, 0x18, 0xA0, 0xD9, 0x3D, 0x01, 0xD7, 0x2F, 0x51, 0x0F, 0xD8, 0x29, + 0x74, 0xB1, 0xF8, 0x99, 0xCA, 0x74, 0xB2, 0xF1, 0xB6, 0x7B, 0x53, 0x10, + 0xCE, 0x73, 0xF6, 0x32, 0x3F, 0x05, 0x6E, 0xC7, 0xAD, 0x27, 0x34, 0xD4, + 0xB9, 0x1D, 0x34, 0x5D, 0xEC, 0x88, 0x46, 0x22, 0x90, 0x94, 0xAF, 0x1A, + 0x51, 0x33, 0x10, 0xB7, 0xBF, 0xBE, 0x0A, 0xCD, 0x1E, 0xE8, 0x95, 0x78, + 0x61, 0x17, 0x63, 0x8F, 0x3A, 0xE2, 0x30, 0x59, 0x3F, 0xBF, 0xD8, 0xA3, + 0x85, 0xEF, 0x3D, 0x1D, 0xD2, 0x4F, 0x7B, 0xB3, 0xD7, 0x14, 0x91, 0x65, + 0xC2, 0x3A, 0x66, 0xBC, 0xFF, 0xFD, 0xC2, 0x12, 0x4A, 0xAF, 0xC4, 0xCC, + 0x78, 0x1F, 0xA1, 0xAB, 0x54, 0xB7, 0xDB, 0x3B, 0x07, 0x45, 0x09, 0x93, + 0x45, 0x40, 0x2F, 0xA0, 0x68, 0x73, 0x54, 0x27, 0x96, 0xB4, 0x2E, 0x88, + 0xC2, 0xF7, 0x98, 0x9E, 0xCA, 0xBF, 0xF4, 0xEC, 0x0A, 0xB6, 0x8F, 0x33, + 0x08, 0x5C, 0x91, 0x1B, 0x9F, 0x55, 0xDF, 0xF9, 0x04, 0x5D, 0xF0, 0x3A, + 0xE1, 0xFF, 0x93, 0x3A, 0xA7, 0xBB, 0x24, 0x75, 0xA3, 0x0D, 0x95, 0x7D, + 0x66, 0x11, 0x4D, 0x0C, 0xCD, 0x8A, 0x98, 0xA3, 0xC4, 0x38, 0x88, 0x00, + 0xD3, 0x7F, 0xA8, 0x7D, 0xE6, 0x14, 0xF0, 0xA5, 0xF2, 0x5E, 0xA0, 0xE2, + 0xD4, 0x3E, 0xFA, 0x00, 0xD4, 0x5D, 0x01, 0x5D, 0x55, 0xF9, 0xA4, 0xC8, + 0x49, 0x59, 0x16, 0xFA, 0xC5, 0x51, 0x15, 0xDC, 0xC3, 0x1E, 0xD5, 0xED, + 0xE4, 0xBB, 0x14, 0xA0, 0xF3, 0x68, 0xD5, 0x60, 0xE0, 0x42, 0xB4, 0x30, + 0x82, 0xD8, 0xD6, 0x3E, 0xEC, 0xE7, 0xAD, 0x3C, 0x69, 0x61, 0x28, 0x8E, + 0x8C, 0x04, 0xF1, 0xA0, 0x1E, 0xBD, 0xDF, 0xBE, 0xFD, 0xAE, 0xD9, 0x65, + 0x66, 0x33, 0x0F, 0xB0, 0x8D, 0xE9, 0x46, 0xFD, 0xD5, 0xF9, 0x20, 0x18, + 0x7F, 0xF7, 0x20, 0x3F, 0xE2, 0x7A, 0x38, 0x14, 0xBB, 0x1A, 0xC3, 0xCA, + 0xAB, 0x56, 0x5B, 0x17, 0x1B, 0x1A, 0xC3, 0x00, 0x97, 0x69, 0x9B, 0x5D, + 0xBD, 0x4D, 0x22, 0x77, 0x36, 0x65, 0xD7, 0x04, 0x8F, 0x5B, 0x76, 0xB2, + 0x6B, 0x23, 0x52, 0xA2, 0x02, 0xC4, 0x98, 0x16, 0xE3, 0xF7, 0x2B, 0xFC, + 0x36, 0x94, 0x91, 0x0B, 0x0B, 0x82, 0x7F, 0xC6, 0x70, 0x8C, 0x80, 0x36, + 0x48, 0x4F, 0x8C, 0x15, 0xB9, 0x06, 0x4C, 0x0B, 0x79, 0xA0, 0x37, 0x7D, + 0x18, 0xBB, 0x83, 0x8C, 0xA6, 0xF0, 0x02, 0x7D, 0xAE, 0xD1, 0x8D, 0xF7, + 0x11, 0x14, 0x69, 0x2D, 0xEE, 0x85, 0x47, 0x52, 0x44, 0x95, 0xD8, 0x8B, + 0x91, 0x04, 0x1A, 0x0D, 0x0A, 0xE9, 0x61, 0x35, 0x14, 0xB7, 0x3D, 0x77, + 0xD3, 0x7B, 0x97, 0xE2, 0x54, 0x37, 0xCD, 0x77, 0x49, 0x52, 0x2B, 0xF5, + 0x0A, 0xA2, 0xCD, 0x9A, 0x51, 0x17, 0x7F, 0xD2, 0x9D, 0x65, 0x0F, 0x0F, + 0x54, 0xEC, 0x00, 0x71, 0x89, 0x5B, 0xAC, 0x7C, 0x59, 0x55, 0xA3, 0xEA, + 0x27, 0xF1, 0x47, 0x79, 0xF5, 0xDD, 0x0F, 0xD9, 0x14, 0xDB, 0x00, 0xE1, + 0xA2, 0x4D, 0x92, 0xDA, 0x0B, 0xEF, 0x41, 0x29, 0x1E, 0xFB, 0x37, 0xAC, + 0x08, 0x5D, 0xB7, 0x75, 0x7B, 0x63, 0xC9, 0x47, 0x0B, 0x13, 0x66, 0x39, + 0xA1, 0x58, 0x82, 0xA3, 0x8D, 0x8B, 0xAF, 0xF9, 0x21, 0x84, 0xE1, 0xBD, + 0x49, 0xD4, 0xF4, 0x43, 0x7F, 0x9A, 0xCF, 0x59, 0xF2, 0xA5, 0x2C, 0x4D, + 0x85, 0xB5, 0xFD, 0x95, 0xE8, 0x45, 0xD2, 0xE8, 0x8A, 0xE4, 0xA9, 0x41, + 0x6B, 0x99, 0xBE, 0x0D, 0xF1, 0xB2, 0x57, 0x61, 0x7B, 0x6D, 0x09, 0x53, + 0x26, 0xCC, 0x28, 0x2C, 0x82, 0x08, 0xFB, 0xDC, 0xA9, 0x8A, 0xEC, 0x76, + 0xE3, 0x4D, 0xDE, 0xAC, 0x3E, 0x54, 0xAC, 0xC7, 0x50, 0x92, 0x8A, 0x19, + 0x3A, 0xF3, 0xFA, 0xF0, 0xC1, 0x7E, 0xEE, 0x69, 0x0E, 0xB5, 0x35, 0x9D, + 0x93, 0x4B, 0xAE, 0xA9, 0x97, 0x09, 0x34, 0x9B, 0x8E, 0x3C, 0xB4, 0x2A, + 0x1D, 0x59, 0xF9, 0x1C, 0x82, 0x25, 0x14, 0xCB, 0xC4, 0x89, 0xA5, 0xD5, + 0x62, 0xD9, 0xC4, 0xD5, 0xFF, 0xF5, 0xFF, 0x9A, 0xA8, 0x05, 0x95, 0xE1, + 0xAC, 0xAF, 0x61, 0x1B, 0x57, 0x77, 0xB0, 0x2C, 0x68, 0xE6, 0x3F, 0x1B, + 0x63, 0xFF, 0xC3, 0x33, 0x04, 0x8A, 0x0B, 0x54, 0x7D, 0x36, 0xAE, 0xAE, + 0x3F, 0xD3, 0xA6, 0x83, 0x65, 0xA4, 0xFE, 0x3C, 0x29, 0xDB, 0x81, 0x99, + 0xF9, 0x7A, 0x9B, 0xBB, 0xA7, 0x86, 0x6B, 0xDF, 0x67, 0x08, 0x23, 0x88, + 0x62, 0xE3, 0x08, 0x5C, 0x23, 0x73, 0x0C, 0x01, 0x96, 0xB0, 0x99, 0xC0, + 0x8D, 0xD5, 0xDB, 0xCE, 0x4C, 0x1F, 0xE4, 0xFD, 0x19, 0x2E, 0xD7, 0x20, + 0x81, 0x4E, 0x22, 0x4E, 0xAD, 0x02, 0x86, 0x1C, 0xEF, 0x2C, 0xEC, 0xCF, + 0xD0, 0x7E, 0xFB, 0x02, 0xE1, 0xE1, 0xFD, 0xE5, 0xB9, 0xBC, 0xE5, 0x12, + 0xA3, 0xCA, 0xE8, 0x88, 0x45, 0x03, 0x15, 0x0E, 0xA0, 0xC2, 0x1A, 0xB7, + 0x13, 0xB3, 0x52, 0x3C, 0x87, 0x18, 0x95, 0x3F, 0x56, 0x9C, 0x31, 0x52, + 0x2A, 0x5D, 0x57, 0xD3, 0xA1, 0x41, 0x2B, 0x82, 0x11, 0x23, 0xC2, 0x4D, + 0xE8, 0xE5, 0xC3, 0xBA, 0x59, 0x6B, 0x32, 0xBE, 0x22, 0x37, 0xB8, 0xC9, + 0x11, 0x88, 0x5C, 0x7E, 0x94, 0x5F, 0xDA, 0xB5, 0xC5, 0xAB, 0xA8, 0xD7, + 0x98, 0x2E, 0x4A, 0xBC, 0x5B, 0xD0, 0x7D, 0x3E, 0xA3, 0x43, 0xE8, 0xAB, + 0x9F, 0xA7, 0x44, 0x02, 0x07, 0xE9, 0x78, 0x50, 0xB4, 0x0A, 0xE9, 0x5D, + 0xDB, 0x23, 0x1E, 0x1D, 0x0A, 0xCB, 0x95, 0xE2, 0xDB, 0xCC, 0x42, 0x40, + 0x52, 0x6C, 0x5C, 0xF6, 0xBD, 0x80, 0x51, 0x4C, 0x56, 0x54, 0xB6, 0xC9, + 0xB2, 0x9F, 0x70, 0x66, 0xE6, 0x48, 0xD5, 0xC3, 0x7D, 0x94, 0x73, 0xAA, + 0x50, 0x10, 0x3D, 0x53, 0x04, 0x85, 0xC1, 0x4E, 0x77, 0x3A, 0x90, 0x3B, + 0xBA, 0x9F, 0x37, 0x80, 0xDA, 0xF2, 0x0B, 0xB1, 0xBC, 0x30, 0x94, 0xC6, + 0xB7, 0x39, 0x8D, 0xDD, 0x32, 0xA2, 0x71, 0x83, 0x74, 0xE8, 0x1F, 0xB6, + 0x92, 0xD5, 0xBE, 0xE6, 0x4B, 0x9F, 0xC5, 0x40, 0x5A, 0x23, 0xDB, 0x3C, + 0xB0, 0xAF, 0x14, 0x47, 0x9F, 0x66, 0x53, 0x0D, 0x3E, 0x43, 0x5D, 0xF3, + 0xE6, 0x18, 0x03, 0x47, 0xE3, 0x1A, 0xF5, 0x96, 0x53, 0xCA, 0xFE, 0x1B, + 0x07, 0x88, 0xBD, 0x6D, 0xE4, 0xF1, 0x86, 0x43, 0xEE, 0x09, 0x6E, 0x3A, + 0x81, 0xB7, 0x6B, 0x56, 0x6B, 0x04, 0x25, 0x57, 0x79, 0x5E, 0xD3, 0xAB, + 0xA1, 0xBB, 0x60, 0xB8, 0x4A, 0xDB, 0x09, 0xFA, 0x3F, 0x1A, 0x3F, 0x05, + 0x1A, 0xDA, 0xFA, 0x5E, 0xB8, 0x55, 0xDB, 0xDC, 0xD7, 0x0A, 0x10, 0x89, + 0xAF, 0x70, 0xA3, 0x70, 0xC6, 0xDA, 0xB6, 0x8C, 0x04, 0x27, 0xD8, 0xEF, + 0x44, 0x55, 0x8F, 0x07, 0xAF, 0xD5, 0x22, 0xDA, 0x3D, 0x67, 0x9C, 0xC8, + 0xE8, 0x2D, 0xE1, 0xF7, 0x2D, 0xFE, 0xFE, 0xA9, 0x27, 0x43, 0xAA, 0xB8, + 0x81, 0x78, 0xBC, 0x7F, 0x77, 0xBC, 0xC8, 0x83, 0x0D, 0xF8, 0x8D, 0x81, + 0xD8, 0xD4, 0x1E, 0xB9, 0x5C, 0x91, 0x19, 0x41, 0x13, 0xA5, 0x44, 0xC8, + 0x60, 0x1F, 0x08, 0xDF, 0x5E, 0xFA, 0xB1, 0xEA, 0x46, 0x01, 0x1E, 0xE2, + 0x6D, 0x63, 0xF8, 0x7E, 0xD6, 0xBB, 0x17, 0xC9, 0x80, 0x76, 0x40, 0x87, + 0xCF, 0x1A, 0x69, 0x53, 0x40, 0xA4, 0x44, 0xA1, 0x56, 0xD1, 0x28, 0x5F, + 0x60, 0x12, 0x7A, 0xBD, 0x02, 0xE3, 0xE1, 0xFF, 0xA4, 0xCB, 0xA0, 0x1E, + 0xDC, 0x5C, 0x6C, 0xDB, 0xF7, 0x05, 0x55, 0xC0, 0xE5, 0xAB, 0x57, 0xF8, + 0xB4, 0xFF, 0x20, 0xD9, 0x3D, 0xEB, 0x02, 0x1C, 0x67, 0x31, 0xC7, 0xB4, + 0x2D, 0x5C, 0x4A, 0x9F, 0xF1, 0x18, 0x97, 0x27, 0x5B, 0x1A, 0x72, 0xDD, + 0x6A, 0x8E, 0x29, 0xBB, 0x26, 0xE8, 0x3E, 0xCB, 0xF6, 0x48, 0x19, 0xC1, + 0xD2, 0x18, 0x28, 0x92, 0xCA, 0x30, 0xE6, 0x59, 0xBB, 0x34, 0xE4, 0x4C, + 0x3B, 0xD8, 0x7D, 0x06, 0xA0, 0xD8, 0x85, 0xD6, 0x06, 0x1F, 0xE9, 0x04, + 0x27, 0x78, 0x8F, 0xCA, 0xFC, 0x56, 0x68, 0xE4, 0xA5, 0x25, 0xE0, 0x4C, + 0xA0, 0xBC, 0x36, 0xED, 0xBF, 0xAD, 0xC3, 0xA0, 0x2E, 0x83, 0xB3, 0x79, + 0x80, 0x4F, 0xC2, 0x80, 0x93, 0xC7, 0xC4, 0x8C, 0xFE, 0x64, 0xEC, 0xFE, + 0x24, 0xF1, 0x5C, 0xC5, 0x51, 0x51, 0x13, 0xC0, 0x5E, 0x61, 0x61, 0x5D, + 0x5C, 0xAB, 0x50, 0x72, 0x79, 0x91, 0xA3, 0xB6, 0x17, 0x8D, 0x2F, 0xB5, + 0xA7, 0x3B, 0x19, 0x8A, 0x5E, 0x14, 0x13, 0xE4, 0xDC, 0x8E, 0x92, 0xE1, + 0x51, 0xFF, 0x98, 0xC5, 0xAC, 0xA2, 0x5F, 0xC0, 0xA5, 0x46, 0x77, 0x64, + 0x9F, 0xD8, 0x82, 0x0D, 0x54, 0x3A, 0xD7, 0x77, 0xC9, 0xBE, 0x0E, 0xF6, + 0x05, 0xF0, 0x17, 0xF1, 0x1E, 0xBF, 0x00, 0x57, 0xAE, 0xAA, 0xE8, 0xB3, + 0xEE, 0xF8, 0x2B, 0x4A, 0x02, 0x79, 0xC0, 0x3C, 0xF8, 0x7A, 0x56, 0xA8, + 0x69, 0xFF, 0x64, 0x7C, 0x02, 0x76, 0x26, 0x93, 0x95, 0x02, 0xD9, 0x1E, + 0xA6, 0x6A, 0x69, 0x3C, 0x00, 0x78, 0x8D, 0x71, 0x7C, 0x83, 0xD0, 0x38, + 0xD7, 0x65, 0x94, 0xBD, 0xD3, 0x7B, 0xF0, 0xC3, 0x26, 0x96, 0x27, 0x23, + 0xCA, 0xC0, 0x33, 0x74, 0xE1, 0x6D, 0x3E, 0x61, 0xF8, 0xF8, 0x49, 0x0B, + 0x79, 0x90, 0x90, 0xCA, 0xD4, 0x5B, 0x7D, 0x9B, 0x75, 0xF9, 0x08, 0x36, + 0x8B, 0x2E, 0xA5, 0x50, 0xB8, 0x7E, 0x3A, 0xED, 0x09, 0xED, 0x0C, 0x1C, + 0xB8, 0xDD, 0x5E, 0x13, 0x0A, 0x0B, 0x5C, 0xFB, 0x75, 0x41, 0x98, 0x2B, + 0xC9, 0xAB, 0xC9, 0x14, 0xDA, 0xFE, 0x34, 0x72, 0xB9, 0x7C, 0x86, 0x89, + 0x0E, 0x2E, 0x58, 0xC3, 0xC1, 0xD5, 0x2B, 0x66, 0x26, 0xD2, 0xBF, 0xBF, + 0x96, 0x33, 0x30, 0xCE, 0x5D, 0x87, 0x02, 0xE2, 0x20, 0x71, 0xEC, 0x24, + 0xAD, 0x40, 0xFE, 0xEF, 0x52, 0xD1, 0x84, 0x72, 0xCD, 0xCD, 0x3C, 0xDB, + 0xA7, 0x94, 0x0F, 0xAD, 0x4C, 0x67, 0x3F, 0x13, 0x16, 0x4B, 0x6B, 0x26, + 0x92, 0x3F, 0xB2, 0xAE, 0xA4, 0x5F, 0xBB, 0x65, 0x0B, 0x13, 0xE2, 0xB9, + 0x87, 0xA7, 0xB2, 0x14, 0xC0, 0x2A, 0x66, 0x5B, 0x99, 0x6C, 0xC6, 0x98, + 0xC2, 0xB6, 0x1B, 0x05, 0x14, 0xD6, 0xC9, 0x5B, 0x33, 0xE1, 0x14, 0x35, + 0x82, 0xF9, 0x50, 0xF6, 0xFD, 0xA0, 0x15, 0x6D, 0xB1, 0x59, 0x4A, 0x51, + 0x9D, 0x81, 0xD4, 0x1C, 0xE2, 0x31, 0xDD, 0xD0, 0xFF, 0xC8, 0x9A, 0x7B, + 0x9F, 0xED, 0xD4, 0x33, 0xDF, 0xBA, 0x58, 0x9E, 0x36, 0xC1, 0x69, 0xA2, + 0xE2, 0x93, 0xC7, 0x21, 0x8D, 0x07, 0xFD, 0xA2, 0x37, 0xA9, 0xDC, 0x28, + 0x7F, 0x16, 0xA1, 0x0E, 0x00, 0x5E, 0x0D, 0x01, 0xCB, 0x36, 0x97, 0xD5, + 0xC1, 0xF2, 0x93, 0xC7, 0x8A, 0xAE, 0xA7, 0xE6, 0xBE, 0x0B, 0xA8, 0x3E, + 0xA2, 0x26, 0xDF, 0x62, 0x13, 0xEF, 0xB8, 0x9A, 0xDA, 0xD4, 0x4D, 0xD0, + 0x78, 0x02, 0x54, 0x78, 0xEE, 0x5A, 0x6F, 0xAB, 0xD2, 0x6D, 0x94, 0xBC, + 0xE9, 0xD3, 0x71, 0x3B, 0x59, 0x73, 0xBE, 0x32, 0x7E, 0x7C, 0x69, 0x5C, + 0xFC, 0xA3, 0x86, 0x86, 0x59, 0x83, 0x34, 0xD8, 0xC9, 0x66, 0x8C, 0xEB, + 0x56, 0xE0, 0xD0, 0xC2, 0xD1, 0x08, 0x35, 0xAB, 0x6F, 0x04, 0xAA, 0xB4, + 0x5C, 0x4D, 0x41, 0x71, 0x0A, 0xB8, 0x3E, 0x8C, 0xAF, 0x73, 0xF0, 0xF7, + 0xD2, 0x28, 0x2A, 0x20, 0xD6, 0xC6, 0x21, 0x2E, 0xB8, 0xF3, 0xDE, 0x84, + 0xFD, 0x1C, 0x10, 0x36, 0x3A, 0x3B, 0x27, 0x97, 0x93, 0xBB, 0x0F, 0xBE, + 0x4E, 0xD4, 0x44, 0xA1, 0x3F, 0x53, 0x30, 0x68, 0x58, 0xA5, 0xF9, 0x27, + 0xF5, 0xFF, 0x3F, 0xC1, 0x9D, 0x89, 0x57, 0xE8, 0xF9, 0x3E, 0x66, 0x82, + 0x57, 0x7B, 0x00, 0xD6, 0x46, 0x6E, 0x42, 0x98, 0x6D, 0xCB, 0x99, 0x71, + 0x74, 0xB9, 0x2A, 0x65, 0x54, 0xCE, 0xDD, 0x10, 0xD3, 0xBB, 0xA6, 0x4D, + 0xCA, 0x3B, 0x4E, 0x4D, 0x5C, 0xF8, 0x80, 0x45, 0xED, 0x0D, 0xBB, 0x1F, + 0xC8, 0xDD, 0x69, 0x33, 0x13, 0x6D, 0x47, 0x3F, 0x29, 0x51, 0x1C, 0xF9, + 0xD9, 0x95, 0x64, 0x29, 0x5C, 0xEC, 0x7A, 0x8B, 0x14, 0x07, 0xA0, 0x43, + 0x1E, 0x5B, 0x7A, 0x5E, 0xDA, 0x7B, 0xA7, 0xC9, 0x7B, 0xDC, 0x72, 0xF5, + 0x90, 0xF2, 0x7D, 0xF9, 0x59, 0xE2, 0xE3, 0x74, 0xEE, 0x8B, 0xBC, 0x87, + 0x15, 0x24, 0x6D, 0x5C, 0x39, 0xA6, 0xE2, 0x1E, 0xA9, 0x4D, 0xB7, 0x39, + 0x39, 0x75, 0x50, 0xF9, 0x05, 0x88, 0xD2, 0xB5, 0x7C, 0xDB, 0x9A, 0x4D, + 0x75, 0x52, 0xAB, 0x45, 0x2F, 0x0B, 0x77, 0x11, 0xEF, 0xE6, 0x22, 0x86, + 0xA9, 0xB7, 0x14, 0x08, 0xA9, 0xB2, 0x52, 0x54, 0x2F, 0x01, 0x32, 0x89, + 0x3C, 0xBE, 0xC2, 0xF6, 0x7D, 0x34, 0xBE, 0xD1, 0xDB, 0xE3, 0x74, 0x6F, + 0x9B, 0x59, 0xF9, 0x86, 0x0F, 0xE1, 0xA8, 0x7F, 0x64, 0x2D, 0xE0, 0x73, + 0x9A, 0xCF, 0xB3, 0xF7, 0x7C, 0x7D, 0xE7, 0xF4, 0xFB, 0x70, 0xF4, 0xFF, + 0x82, 0x13, 0x31, 0x47, 0x66, 0xAC, 0x93, 0x3C, 0x5E, 0x59, 0x1B, 0xEE, + 0xEE, 0x63, 0x39, 0xF6, 0xED, 0x97, 0xAC, 0x17, 0x63, 0x90, 0xF2, 0x99, + 0xCB, 0xC1, 0x8C, 0x37, 0x42, 0xE1, 0x58, 0xF1, 0x91, 0xCA, 0x9E, 0x43, + 0x01, 0x17, 0xA4, 0xD5, 0xDB, 0x48, 0x26, 0x2B, 0xB9, 0x91, 0xE0, 0x42, + 0xC0, 0xB2, 0x9C, 0x55, 0xD6, 0x0B, 0xF2, 0xC4, 0x03, 0x3B, 0x8B, 0xD2, + 0x42, 0xFB, 0xDD, 0xDD, 0xB8, 0x22, 0x01, 0x10, 0xC4, 0xE9, 0xA8, 0x88, + 0xA4, 0x98, 0x5A, 0xBF, 0x20, 0xEB, 0x6B, 0x0D, 0x6C, 0xB5, 0x2C, 0x82, + 0xA8, 0xC5, 0xE4, 0xC2, 0x38, 0x77, 0x5E, 0x43, 0x73, 0x75, 0x03, 0x6D, + 0xDC, 0xD3, 0xE4, 0x01, 0xFD, 0x5A, 0x25, 0xD7, 0xF2, 0x7F, 0xC7, 0xF7, + 0x53, 0x94, 0x32, 0x11, 0xA1, 0x70, 0x46, 0x61, 0x33, 0x39, 0x73, 0xFB, + 0xB9, 0x93, 0xD1, 0x59, 0x92, 0xE8, 0xCB, 0x4A, 0x17, 0xB9, 0xB8, 0x75, + 0xA8, 0xCC, 0x14, 0xD9, 0xD6, 0x4D, 0xF7, 0x71, 0xB6, 0x3D, 0xDC, 0x56, + 0x1E, 0x5D, 0x53, 0x83, 0xEE, 0xEA, 0x5C, 0xCE, 0xA0, 0xDC, 0x73, 0x4D, + 0xE5, 0x6D, 0x1D, 0x8C, 0x6B, 0xE1, 0xD9, 0x27, 0xAE, 0x70, 0x61, 0xEE, + 0x8C, 0x3B, 0x83, 0x6A, 0x94, 0x70, 0x28, 0xB1, 0x83, 0x03, 0x6E, 0x0A, + 0xE9, 0xA7, 0x15, 0x42, 0x6F, 0x11, 0x95, 0x1D, 0x05, 0x63, 0x20, 0xA8, + 0xFA, 0x9A, 0x4F, 0x9B, 0xCD, 0xAF, 0xDA, 0xA2, 0x76, 0x12, 0x41, 0xB1, + 0x38, 0xCC, 0x43, 0xFB, 0x88, 0xB7, 0xB4, 0xAB, 0xC0, 0x60, 0x13, 0xC3, + 0x8D, 0x98, 0x67, 0x51, 0x35, 0xCE, 0x91, 0x8D, 0xF6, 0x06, 0xA1, 0xE5, + 0xB3, 0x36, 0x1C, 0xE2, 0xEA, 0x58, 0x75, 0x7A, 0xD1, 0x5A, 0xF2, 0xE6, + 0x97, 0x17, 0x82, 0x07, 0x8D, 0xBD, 0x73, 0xF0, 0x2B, 0x23, 0x37, 0xDA, + 0xF7, 0xE0, 0xCE, 0xF0, 0xFB, 0x52, 0xA5, 0x4E, 0x62, 0xF7, 0xDF, 0xC6, + 0x07, 0x56, 0xF0, 0x4B, 0x75, 0xD2, 0x05, 0xC2, 0xD8, 0xE2, 0x60, 0xDE, + 0x02, 0x21, 0x65, 0x68, 0x38, 0x5E, 0xA4, 0x4A, 0x91, 0x51, 0x12, 0x71, + 0xA4, 0x32, 0x52, 0xFD, 0x34, 0x5C, 0xC4, 0x0D, 0x38, 0x66, 0x22, 0xC5, + 0xD5, 0x28, 0xD2, 0xB2, 0x4A, 0x76, 0x9A, 0x04, 0xAD, 0x90, 0x34, 0xCF, + 0x44, 0x56, 0xF0, 0x10, 0x04, 0x16, 0x25, 0x3C, 0x05, 0x6F, 0x3D, 0xBD, + 0xDC, 0x56, 0x15, 0xE8, 0x51, 0xC4, 0xB3, 0x7E, 0xB6, 0xBC, 0x00, 0x20, + 0xEA, 0x21, 0x9D, 0x9B, 0x8F, 0xBB, 0x76, 0x70, 0x16, 0x45, 0x23, 0xDE, + 0xC3, 0xA5, 0xB7, 0x18, 0x2E, 0x93, 0x5B, 0x65, 0x53, 0x35, 0xDC, 0xED, + 0x55, 0x01, 0x89, 0xA6, 0x2A, 0x26, 0xDE, 0x31, 0x68, 0x6D, 0x65, 0xA3, + 0x40, 0xB0, 0xC9, 0xC9, 0x83, 0xEF, 0xB5, 0x95, 0x98, 0xC5, 0xD6, 0x35, + 0xE7, 0x25, 0x79, 0x5E, 0xFE, 0x5F, 0x5F, 0x32, 0x5F, 0xF8, 0x19, 0x41, + 0xB8, 0x97, 0x73, 0xEE, 0xAC, 0x6A, 0x8F, 0x7C, 0x48, 0xEC, 0x02, 0x48, + 0x17, 0x0C, 0x60, 0x87, 0x9A, 0x4E, 0xC5, 0xAE, 0x3C, 0xA5, 0xBE, 0x18, + 0x34, 0xC6, 0xDF, 0x79, 0x1B, 0x3D, 0x4E, 0xEC, 0x98, 0xE5, 0x59, 0x1B, + 0xAC, 0xBF, 0xC3, 0x4A, 0xF4, 0x84, 0x97, 0x21, 0xCA, 0xA2, 0xB3, 0xF3, + 0xE4, 0x2B, 0x78, 0xB9, 0x51, 0x43, 0x2A, 0x1C, 0x47, 0xC1, 0x54, 0x3B, + 0x0A, 0x75, 0x16, 0x58, 0x6E, 0x7B, 0x73, 0xBF, 0xAD, 0xEA, 0xD6, 0x86, + 0xF9, 0x1B, 0x06, 0x5B, 0x1C, 0x34, 0xC0, 0xEE, 0x41, 0x05, 0xB1, 0x8D, + 0xE6, 0x2B, 0x61, 0xB1, 0x24, 0x17, 0x89, 0xB1, 0x43, 0xCF, 0xAE, 0xC0, + 0x21, 0x76, 0x23, 0xC7, 0xA5, 0xE7, 0xDE, 0x44, 0x9F, 0x12, 0x8B, 0x6C, + 0xBC, 0x19, 0x82, 0xCA, 0x23, 0x39, 0x9E, 0xEC, 0x4E, 0xCE, 0x0F, 0x01, + 0x51, 0x0D, 0xFE, 0x62, 0x9E, 0x80, 0xF4, 0x69, 0xB3, 0x7A, 0xBC, 0x63, + 0x96, 0x60, 0xD3, 0xEA, 0xFB, 0xC4, 0xEE, 0x1B, 0x34, 0x86, 0xA0, 0x7C, + 0x2C, 0xAE, 0x6D, 0x71, 0x30, 0x59, 0x22, 0x2C, 0x24, 0xE3, 0x7B, 0x46, + 0x7D, 0x18, 0xE1, 0xBA, 0x5D, 0xC0, 0x15, 0x67, 0x0A, 0x04, 0x62, 0xC1, + 0x8C, 0x5C, 0xC5, 0x2E, 0x19, 0xB3, 0x8A, 0x41, 0xBE, 0x2A, 0x76, 0x22, + 0x8C, 0x76, 0xA2, 0x45, 0xDB, 0xB7, 0x7E, 0x1D, 0xB0, 0x76, 0x37, 0x59, + 0xDC, 0x22, 0x47, 0x7D, 0xAB, 0x34, 0x4D, 0x5F, 0x41, 0xCE, 0x89, 0x5D, + 0x84, 0xF1, 0xBE, 0x90, 0x25, 0xD3, 0xAC, 0xEE, 0x9F, 0x2A, 0x1E, 0x5C, + 0xE2, 0x19, 0x76, 0x6F, 0xA2, 0x5C, 0x28, 0xAC, 0x99, 0xBD, 0x59, 0x86, + 0x08, 0x36, 0x0C, 0xB8, 0x3E, 0xD1, 0x98, 0x5D, 0x62, 0x94, 0x8F, 0xB1, + 0xA3, 0xE4, 0xFD, 0x56, 0x09, 0x95, 0xCB, 0xFD, 0x79, 0x7C, 0x6A, 0x78, + 0x81, 0x19, 0x3C, 0x34, 0x8A, 0x3B, 0x47, 0x10, 0x48, 0xBC, 0x22, 0x3D, + 0xEB, 0x6A, 0xE7, 0x2E, 0xB0, 0xE1, 0x42, 0x55, 0xE4, 0x2D, 0x98, 0xD1, + 0x7B, 0x9C, 0xD2, 0x5E, 0x6F, 0x52, 0x33, 0x1E, 0xBB, 0x62, 0xBA, 0xB8, + 0xFB, 0x2B, 0x52, 0xE1, 0x3D, 0xA0, 0xB4, 0xDD, 0x05, 0xAC, 0xA6, 0xDC, + 0x3A, 0x07, 0x0F, 0xB0, 0x78, 0x5E, 0x93, 0xDE, 0xBD, 0x2A, 0x34, 0x92, + 0xE0, 0xF0, 0xBC, 0x32, 0xB1, 0xEC, 0xAE, 0xD6, 0x10, 0x37, 0x48, 0x89, + 0x50, 0x74, 0x24, 0xEF, 0xC2, 0x5A, 0xFA, 0xF1, 0xCA, 0x5D, 0x12, 0xF9, + 0x00, 0xCE, 0x95, 0xA5, 0x9A, 0xC1, 0x38, 0x42, 0x27, 0xE6, 0xD3, 0xD6, + 0xE1, 0x20, 0xDE, 0x6E, 0x96, 0x1D, 0x1A, 0x02, 0xC3, 0x0E, 0x10, 0x3E, + 0x55, 0x27, 0x78, 0xFA, 0xA1, 0x2B, 0x25, 0x6D, 0x30, 0x97, 0xA5, 0xA6, + 0xA0, 0x9D, 0xDE, 0x12, 0x2B, 0xDA, 0x82, 0xF9, 0xE9, 0xF5, 0x4F, 0xB9, + 0x30, 0x44, 0x57, 0x92, 0xC7, 0x64, 0xFE, 0x77, 0xF7, 0x0A, 0x4C, 0xC0, + 0x96, 0xDD, 0x79, 0xFD, 0xCC, 0xE7, 0xFE, 0x6A, 0x8F, 0x69, 0x34, 0x37, + 0xB4, 0x41, 0xAA, 0x72, 0x74, 0xC6, 0xDA, 0xCD, 0x7E, 0x72, 0x14, 0x92, + 0x2D, 0xA1, 0x77, 0xAD, 0x1C, 0xDF, 0x99, 0x79, 0x6C, 0xEE, 0xDA, 0x0F, + 0x4C, 0x45, 0x93, 0x52, 0xC9, 0x83, 0x07, 0x57, 0x1A, 0xE2, 0xE0, 0xE6, + 0x3F, 0x91, 0x7F, 0x72, 0x0E, 0x2F, 0xC9, 0x21, 0x09, 0xB6, 0x66, 0xEA, + 0xB2, 0x8D, 0xFB, 0x3E, 0xD2, 0x7C, 0xA4, 0xB5, 0xE9, 0xFF, 0x35, 0xFB, + 0x1A, 0x92, 0x81, 0xEA, 0x1D, 0x08, 0x01, 0x6F, 0x7E, 0x02, 0x55, 0x5E, + 0x11, 0x51, 0xD1, 0x37, 0x35, 0xD7, 0x96, 0xAD, 0xAC, 0xE4, 0x73, 0x3B, + 0x63, 0x1A, 0x57, 0xCB, 0xF8, 0xF7, 0x84, 0xC5, 0x10, 0x84, 0x1F, 0x30, + 0x4E, 0x8E, 0xDA, 0xA0, 0xBE, 0xD1, 0x38, 0xC5, 0x7B, 0x08, 0x3C, 0x9D, + 0xA3, 0x09, 0x9F, 0x64, 0xE4, 0x12, 0xBA, 0x54, 0x45, 0x2D, 0x32, 0x2A, + 0x14, 0xCC, 0x75, 0xF5, 0xE0, 0xEB, 0x05, 0x87, 0x9B, 0xE4, 0x83, 0x52, + 0x67, 0xC4, 0xB7, 0x9E, 0x97, 0x38, 0xC7, 0x35, 0x7F, 0xF6, 0x34, 0x08, + 0x3F, 0x12, 0x65, 0x88, 0x57, 0x8E, 0x60, 0x76, 0xCB, 0x00, 0x4D, 0xF4, + 0x88, 0x12, 0xF6, 0x3C, 0x2E, 0xA1, 0x8F, 0xD8, 0xA8, 0x29, 0x3B, 0xB0, + 0xE9, 0x5C, 0x32, 0x36, 0x9C, 0xAF, 0x90, 0x9F, 0x72, 0xA2, 0x96, 0x65, + 0x17, 0x61, 0x06, 0x63, 0x2B, 0x9E, 0x57, 0xA6, 0xA7, 0x1E, 0xB7, 0xD9, + 0xEB, 0xC2, 0x2A, 0x64, 0xA3, 0x0B, 0x2A, 0x9A, 0x9B, 0x87, 0x13, 0x25, + 0x2C, 0x7C, 0xED, 0x8F, 0x21, 0x04, 0x13, 0x4A, 0xF1, 0xB9, 0xD2, 0x0D, + 0xAF, 0x95, 0x85, 0x77, 0x0C, 0x94, 0x77, 0xAF, 0x03, 0xA6, 0xA7, 0x3B, + 0x06, 0xDF, 0x61, 0x08, 0x36, 0x01, 0x49, 0x6D, 0x7F, 0x34, 0x4F, 0x56, + 0x17, 0x50, 0xB5, 0xB4, 0xE7, 0xE7, 0xAE, 0xF5, 0x61, 0xB5, 0xEB, 0xFD, + 0x40, 0x15, 0x37, 0x9C, 0xF0, 0xA0, 0x47, 0x89, 0x45, 0x2B, 0x16, 0x49, + 0x98, 0xD0, 0xF7, 0x7F, 0x7A, 0xBC, 0x60, 0xA1, 0xBD, 0x7A, 0xB1, 0x75, + 0xBD, 0x55, 0xD6, 0x2D, 0x19, 0x5A, 0x51, 0x09, 0xA6, 0xA5, 0x19, 0x98, + 0xC2, 0xA3, 0xA0, 0x40, 0x4F, 0x1A, 0x23, 0x04, 0x55, 0x46, 0xA7, 0x1E, + 0xE8, 0x33, 0xE1, 0x90, 0x13, 0x74, 0x74, 0x15, 0xA1, 0xCE, 0x47, 0x9C, + 0x62, 0x7D, 0x46, 0x3E, 0xE6, 0x2A, 0x51, 0xC4, 0x12, 0xB3, 0x6B, 0x4A, + 0x1A, 0xBD, 0xE1, 0x10, 0x8D, 0x64, 0x8A, 0xA8, 0x1D, 0x5F, 0x2E, 0x2F, + 0x2F, 0x34, 0xD3, 0xEF, 0x48, 0x1C, 0x5E, 0xAE, 0xA1, 0x53, 0xDB, 0xD5, + 0x56, 0x8D, 0xD2, 0x10, 0xDB, 0x1B, 0x6A, 0x64, 0x86, 0x44, 0x27, 0xC5, + 0xD0, 0xE0, 0xD0, 0x94, 0x6F, 0xDC, 0x5A, 0x0D, 0x60, 0x93, 0xFA, 0x54, + 0x65, 0xE0, 0xA8, 0x14, 0xDB, 0xDF, 0x9F, 0x7B, 0xBB, 0xFA, 0xF7, 0xD5, + 0x49, 0x7E, 0xB1, 0x38, 0x2F, 0x49, 0x02, 0xF6, 0x15, 0xB7, 0x6F, 0x25, + 0xFA, 0xDB, 0xE4, 0x1A, 0xB9, 0xCF, 0x5F, 0xA1, 0x6C, 0x7D, 0x71, 0xED, + 0xCC, 0xAB, 0x76, 0x4E, 0xE2, 0xC8, 0x44, 0x1A, 0xF9, 0xAA, 0x63, 0x51, + 0xA0, 0x47, 0xE9, 0x62, 0xAD, 0x48, 0x25, 0x15, 0xBD, 0x6B, 0xA8, 0xF2, + 0x69, 0x10, 0x0A, 0xA9, 0x56, 0xCA, 0xCA, 0xF4, 0xCD, 0x7D, 0x55, 0x09, + 0xDB, 0x3C, 0x34, 0x9B, 0xED, 0x3A, 0x3A, 0xF9, 0xA4, 0xB2, 0xF4, 0xCE, + 0xD5, 0x46, 0x77, 0x34, 0xA3, 0x96, 0xA8, 0x0E, 0xA1, 0xB5, 0xD3, 0x69, + 0x68, 0xF5, 0xB3, 0x17, 0x99, 0x30, 0xBE, 0x03, 0xB0, 0x89, 0x1D, 0x75, + 0xA4, 0xF7, 0x79, 0xF6, 0x7D, 0xA0, 0x24, 0xCD, 0xE0, 0x0A, 0x92, 0x4D, + 0xE4, 0xF7, 0x28, 0xE7, 0x52, 0x0C, 0x28, 0x62, 0xBA, 0x24, 0xD6, 0xA4, + 0x02, 0xFF, 0xD1, 0x6B, 0xDE, 0x0C, 0xB9, 0xA1, 0xBC, 0xBD, 0x2C, 0x7D, + 0xF6, 0xFF, 0x2C, 0x8D, 0x83, 0x08, 0x62, 0xC5, 0x6B, 0x9F, 0x11, 0xA2, + 0x7D, 0xB7, 0x90, 0x38, 0x08, 0xB9, 0xDC, 0x46, 0xA3, 0xD1, 0xD1, 0xE5, + 0x36, 0xC3, 0xEE, 0x5F, 0x82, 0x63, 0x4E, 0x66, 0x30, 0x38, 0xC8, 0x40, + 0x2E, 0xB8, 0x82, 0xAE, 0x95, 0xCF, 0x45, 0x1A, 0xF9, 0x2A, 0x85, 0x9C, + 0x66, 0x96, 0x7D, 0x69, 0xC5, 0xE7, 0x13, 0xD6, 0x86, 0x39, 0x14, 0xE3, + 0x1B, 0xBF, 0x78, 0x5B, 0xFB, 0x6A, 0x88, 0x1A, 0xCA, 0x21, 0x6C, 0xE3, + 0x80, 0xCE, 0x61, 0x3F, 0x13, 0x7A, 0xFD, 0x16, 0x4F, 0x32, 0xE0, 0xB8, + 0x76, 0x6D, 0x1D, 0x46, 0xB9, 0xF4, 0xA1, 0x05, 0x53, 0x5E, 0x96, 0x42, + 0xF3, 0xF5, 0xA6, 0xAF, 0x87, 0x78, 0xCF, 0x3D, 0x84, 0xB1, 0xFC, 0x97, + 0x1F, 0x86, 0x79, 0x1E, 0xCE, 0xEF, 0x21, 0x13, 0x5F, 0xD3, 0x23, 0xD3, + 0x52, 0xE7, 0x31, 0x37, 0x40, 0x08, 0xB7, 0x6C, 0x50, 0xCA, 0x82, 0xB5, + 0x47, 0x04, 0x98, 0x5F, 0x28, 0xAA, 0x39, 0x76, 0xFA, 0x18, 0xAD, 0x08, + 0x57, 0x9F, 0xFE, 0x7B, 0x6F, 0x2B, 0x46, 0x83, 0x6C, 0xDE, 0x90, 0xCB, + 0x41, 0x40, 0x22, 0x24, 0x4B, 0x82, 0x23, 0x72, 0xC0, 0x28, 0x79, 0xAC, + 0xE8, 0xF5, 0x96, 0xC2, 0xC1, 0x76, 0x6C, 0x5B, 0xBA, 0xFB, 0x60, 0x12, + 0xA1, 0xF1, 0x59, 0xE9, 0x70, 0x97, 0x5C, 0xD3, 0x6D, 0x3C, 0xC2, 0x18, + 0xA4, 0x30, 0x37, 0xF0, 0xAC, 0x92, 0xB3, 0xC3, 0x1F, 0xAA, 0x73, 0x03, + 0x0A, 0x9F, 0x01, 0x5F, 0x4C, 0x68, 0x3A, 0xA5, 0xB0, 0xB9, 0xBB, 0x87, + 0xA4, 0x76, 0x9B, 0x36, 0xD0, 0x35, 0x68, 0x26, 0xEE, 0x76, 0x82, 0xDA, + 0x81, 0x16, 0xFB, 0x82, 0xD2, 0x9D, 0xCD, 0x4F, 0x3A, 0xAD, 0xA3, 0xC2, + 0xBD, 0x9E, 0x60, 0x39, 0x30, 0x1B, 0x9D, 0x4F, 0xAD, 0x0C, 0x88, 0x54, + 0x57, 0x64, 0xFD, 0xBB, 0x63, 0x37, 0x7A, 0xB0, 0x7E, 0x4C, 0x69, 0x4C, + 0x6D, 0x78, 0x84, 0x69, 0x59, 0xF2, 0xAF, 0xFD, 0x76, 0x67, 0x0D, 0x1A, + 0x40, 0xB4, 0x4A, 0xE7, 0xDB, 0x9D, 0xD7, 0xD8, 0x66, 0xC7, 0x8D, 0xAD, + 0x4C, 0xE2, 0x9D, 0x1A, 0x63, 0xA2, 0x56, 0xD9, 0x40, 0x6D, 0x7B, 0xE0, + 0x0F, 0x78, 0xAA, 0x88, 0xA7, 0xA8, 0x62, 0xE3, 0x7E, 0xE9, 0x8C, 0x65, + 0xB5, 0x56, 0x2A, 0x1E, 0x5C, 0xDF, 0xC4, 0x3C, 0xC3, 0x5D, 0x46, 0x00, + 0xF1, 0x8A, 0x0B, 0x7C, 0x58, 0x94, 0xA4, 0x5B, 0xAA, 0x3A, 0x72, 0x0D, + 0xE9, 0x59, 0x99, 0x87, 0x06, 0xE8, 0xC9, 0x4F, 0xC5, 0x54, 0x10, 0x00, + 0xAE, 0x45, 0xCF, 0xE7, 0x81, 0xE5, 0xC4, 0x85, 0x70, 0xD6, 0xD9, 0x60, + 0x9D, 0x19, 0x5F, 0xC9, 0xBE, 0x3D, 0xB7, 0x24, 0xB4, 0x7B, 0x08, 0xFB, + 0xA4, 0x9E, 0x36, 0x26, 0xA0, 0xF2, 0x86, 0xE9, 0x67, 0x10, 0xF6, 0x8E, + 0xE9, 0xEB, 0xA3, 0xB3, 0x75, 0x83, 0x38, 0xA7, 0x45, 0x81, 0xF0, 0xF3, + 0x62, 0x18, 0x02, 0xF1, 0x95, 0x8C, 0xEA, 0x39, 0xD2, 0xB7, 0x11, 0xC0, + 0x06, 0x11, 0x07, 0x42, 0x54, 0xE5, 0x2B, 0xC8, 0xD5, 0x8C, 0x08, 0x25, + 0xE1, 0xD0, 0x8D, 0x7E, 0x61, 0x28, 0x79, 0x6A, 0x2B, 0x33, 0xD9, 0xE9, + 0x6B, 0x04, 0x95, 0x1E, 0xE0, 0xA1, 0xA4, 0x32, 0x71, 0x0E, 0xCD, 0xCB, + 0x80, 0xB8, 0x38, 0x79, 0xF0, 0x9E, 0x58, 0x5E, 0xF6, 0x35, 0xCC, 0xC5, + 0xB9, 0xC7, 0x73, 0xCF, 0x13, 0xEA, 0x77, 0x18, 0xD4, 0x37, 0x46, 0x1B, + 0x66, 0xED, 0x68, 0xEA, 0x1B, 0x38, 0xCF, 0xAD, 0x64, 0x28, 0x1C, 0x04, + 0x81, 0x52, 0x03, 0x8F, 0xC7, 0x45, 0xAE, 0x52, 0xD4, 0x23, 0x27, 0xDB, + 0x2C, 0x98, 0xE8, 0x74, 0xE6, 0xA7, 0x1E, 0x6E, 0x31, 0x10, 0xF5, 0xBB, + 0x1A, 0xA0, 0x5F, 0x6C, 0xAE, 0x38, 0xD7, 0xC6, 0xA2, 0x77, 0x6A, 0x47, + 0x92, 0xC5, 0xC3, 0xE3, 0x12, 0xCE, 0x9A, 0xCB, 0x1F, 0x75, 0xED, 0x1C, + 0x16, 0x30, 0xB8, 0xCC, 0x4E, 0xB1, 0xA5, 0xCE, 0x85, 0xD3, 0x2E, 0xC1, + 0x13, 0x3D, 0x32, 0xBE, 0xBB, 0x22, 0x77, 0x9B, 0x13, 0x10, 0x2C, 0x53, + 0x96, 0x24, 0x02, 0xA1, 0x6B, 0xB1, 0xEF, 0xC8, 0xE9, 0xF0, 0x2A, 0x87, + 0xEF, 0xE3, 0xBF, 0xD8, 0xB3, 0x16, 0xC2, 0x6C, 0xFE, 0xC2, 0xAC, 0x91, + 0x28, 0x4F, 0x31, 0xA8, 0xAF, 0x51, 0x1C, 0xB7, 0x37, 0xA7, 0x6E, 0x77, + 0x37, 0x78, 0x2B, 0x74, 0x78, 0xEF, 0x09, 0x9B, 0x55, 0x30, 0x4E, 0x23, + 0xFE, 0xCE, 0x62, 0xCE, 0x92, 0x38, 0x49, 0x6F, 0x5D, 0xDD, 0xCD, 0x09, + 0x9E, 0xEB, 0xC5, 0xCC, 0x9B, 0xC2, 0xE4, 0xBF, 0x12, 0x47, 0xFA, 0xA5, + 0xB6, 0x89, 0x09, 0x25, 0xDA, 0x33, 0x3A, 0xFD, 0x77, 0xB2, 0x7A, 0xB3, + 0x77, 0xC1, 0x88, 0x88, 0x8E, 0xC5, 0x81, 0xA6, 0x5E, 0x69, 0xE1, 0xA4, + 0xB0, 0x4A, 0x99, 0x59, 0xA0, 0xC7, 0x11, 0x9E, 0xBC, 0x63, 0x62, 0x43, + 0xC0, 0x2C, 0x33, 0x63, 0x6B, 0x51, 0xCE, 0xDC, 0x15, 0x8C, 0x59, 0x46, + 0x6D, 0x91, 0x98, 0x1B, 0x59, 0xA5, 0x48, 0xF1, 0x04, 0x8E, 0x06, 0xA6, + 0x5D, 0x30, 0xB6, 0xAF, 0xBF, 0x84, 0x78, 0x06, 0x8B, 0x79, 0x69, 0xB5, + 0x19, 0x5A, 0x85, 0xD6, 0xF4, 0x6B, 0xD4, 0x0D, 0x80, 0xDB, 0xCF, 0xC6, + 0xCA, 0xE1, 0x48, 0x3C, 0x97, 0x19, 0x5E, 0x4B, 0xE6, 0x5C, 0x6D, 0xAF, + 0xA0, 0xBE, 0xF6, 0x50, 0x4C, 0xE2, 0x58, 0xDD, 0xE7, 0xCD, 0x28, 0x70, + 0x54, 0x3B, 0x50, 0x97, 0x20, 0xB1, 0x19, 0xF2, 0x09, 0x0B, 0xBB, 0xCF, + 0x35, 0xDA, 0x36, 0xAB, 0x12, 0xBA, 0xAF, 0xFF, 0xF4, 0x6C, 0x87, 0xA7, + 0xB9, 0x7C, 0x02, 0xB7, 0xC7, 0x16, 0x7E, 0x3E, 0xF1, 0x33, 0x9E, 0x60, + 0x9C, 0x3F, 0xCC, 0xAC, 0x01, 0x4C, 0x13, 0xF0, 0x43, 0xBF, 0x21, 0x60, + 0xE9, 0xBA, 0x34, 0x2B, 0x08, 0xD2, 0xFE, 0x0F, 0x73, 0x52, 0xAE, 0xA2, + 0x54, 0x51, 0x90, 0xD2, 0x9E, 0xE9, 0x62, 0xAC, 0x37, 0x39, 0x2A, 0xAD, + 0x0A, 0x1C, 0xFE, 0x09, 0x30, 0xDD, 0x9C, 0x2F, 0x52, 0xFD, 0x8F, 0x41, + 0xF9, 0xCE, 0xAE, 0xB8, 0x66, 0xB6, 0x44, 0x1A, 0x82, 0x53, 0x33, 0x48, + 0xA6, 0x8D, 0xEF, 0xE8, 0x80, 0xC3, 0x0E, 0xD7, 0x80, 0xC6, 0x13, 0x1F, + 0x4C, 0x99, 0x43, 0x56, 0x45, 0x35, 0x54, 0x33, 0x68, 0x1F, 0xEF, 0x7F, + 0xB2, 0xB1, 0xF5, 0x7E, 0x7E, 0x08, 0xDE, 0xD2, 0x5B, 0x52, 0x89, 0x20, + 0xDF, 0xD9, 0x5A, 0x64, 0x71, 0x37, 0x79, 0x98, 0x69, 0x10, 0xF6, 0xA2, + 0x5F, 0xBE, 0x71, 0x35, 0xE0, 0x88, 0x74, 0x7A, 0xB5, 0x81, 0x2E, 0x4E, + 0x71, 0x7F, 0x5A, 0x3A, 0x8A, 0xCE, 0xBE, 0xC5, 0x40, 0x8F, 0xC5, 0x2E, + 0xA5, 0x9A, 0x4D, 0x74, 0xE4, 0x73, 0xC7, 0x96, 0x97, 0x84, 0x7E, 0x90, + 0x44, 0x83, 0x24, 0xEE, 0x83, 0x42, 0xA3, 0xCC, 0x1C, 0x7A, 0x4D, 0x27, + 0x0B, 0x80, 0xD0, 0xA4, 0xAC, 0x9B, 0x1E, 0xCB, 0xFC, 0x7F, 0x12, 0x31, + 0x41, 0x3D, 0x06, 0x4A, 0xBC, 0xF6, 0x22, 0xF1, 0xC8, 0xF0, 0x9C, 0x1A, + 0x8D, 0x96, 0x5A, 0xA7, 0xB4, 0x6B, 0x45, 0xBC, 0x4D, 0x32, 0xC1, 0x9C, + 0xC6, 0xA0, 0xCE, 0xED, 0x7B, 0x97, 0x59, 0x7F, 0x42, 0x32, 0x22, 0xA3, + 0x18, 0xFD, 0x65, 0xBC, 0x2C, 0xC3, 0xEA, 0xE8, 0xBD, 0xC1, 0xFF, 0xE1, + 0x20, 0xAB, 0xC0, 0x6A, 0xDA, 0xF9, 0x3A, 0x85, 0x79, 0x7A, 0x10, 0xB9, + 0xA0, 0x7A, 0xAA, 0xAD, 0xF1, 0x8D, 0x67, 0x8F, 0x59, 0xE0, 0x10, 0x4A, + 0x62, 0xA7, 0xD1, 0x8D, 0xF9, 0x26, 0xBE, 0x00, 0x42, 0x81, 0xA0, 0x1F, + 0xFF, 0xCE, 0xAE, 0xAF, 0x1C, 0x56, 0x92, 0x48, 0x65, 0xE7, 0x2A, 0xC6, + 0xE2, 0x78, 0xDE, 0xA2, 0x87, 0x5C, 0x89, 0x3E, 0x38, 0xC4, 0x30, 0xB4, + 0x07, 0x75, 0x7A, 0x01, 0x76, 0xCD, 0x95, 0xD2, 0xA1, 0x4C, 0x37, 0xB5, + 0xA5, 0x2B, 0xE5, 0x09, 0x8B, 0x45, 0x5C, 0x77, 0x9F, 0xE8, 0xAB, 0xB9, + 0xD6, 0xB0, 0x91, 0x57, 0xA6, 0x9E, 0x5D, 0x01, 0xB5, 0xE2, 0xE5, 0x11, + 0xC5, 0x77, 0xC1, 0x11, 0x54, 0x97, 0x45, 0x4F, 0x8E, 0x75, 0xB4, 0xA3, + 0xD7, 0xF4, 0x0F, 0xCC, 0x69, 0xAA, 0xB2, 0xAC, 0xB4, 0x92, 0xD4, 0x66, + 0xB8, 0xA1, 0x91, 0xA2, 0x74, 0xEF, 0xBE, 0x1D, 0xDF, 0xBD, 0xF9, 0x26, + 0x34, 0x1D, 0x71, 0x7C, 0x54, 0x14, 0x42, 0x40, 0x94, 0x4B, 0xA2, 0xF2, + 0x1C, 0xD6, 0x86, 0x32, 0x22, 0x64, 0xE4, 0x13, 0x8D, 0x6A, 0xA2, 0x1C, + 0xB0, 0x3F, 0x78, 0xA9, 0x56, 0x61, 0xFB, 0x56, 0xEE, 0x3D, 0x26, 0x2A, + 0x1C, 0x7E, 0x4D, 0x22, 0xD4, 0xFA, 0xA6, 0xBA, 0x7E, 0x2D, 0x9B, 0x6C, + 0xF7, 0x64, 0x20, 0xCA, 0xD6, 0x89, 0x49, 0x92, 0xFF, 0x2A, 0xBB, 0xA8, + 0x8A, 0xE5, 0x90, 0xEA, 0x20, 0x07, 0xFF, 0xE7, 0xF5, 0xD6, 0x96, 0x77, + 0xE2, 0xEB, 0xC4, 0xD2, 0x51, 0x19, 0x74, 0x83, 0xE2, 0xA3, 0xC2, 0x77, + 0xF9, 0x2E, 0x73, 0x95, 0x86, 0x76, 0x82, 0x6F, 0xB6, 0x4A, 0x0B, 0x6A, + 0x95, 0xCA, 0xDD, 0x7F, 0x66, 0x17, 0x09, 0xE1, 0xD9, 0xD1, 0xA0, 0xE7, + 0x25, 0x64, 0xCB, 0xB6, 0x9A, 0x0F, 0x33, 0x0F, 0xFB, 0xB3, 0x52, 0x78, + 0x00, 0x4E, 0xFB, 0xFF, 0xC9, 0x55, 0x2A, 0x66, 0x8B, 0xC7, 0x9B, 0x4B, + 0x94, 0xFB, 0x5E, 0x77, 0x54, 0x08, 0x94, 0xC3, 0x7C, 0xFB, 0x63, 0xF0, + 0x7C, 0x7C, 0xD5, 0xC4, 0xE2, 0xAE, 0x9F, 0x8E, 0x7F, 0xA2, 0x43, 0x10, + 0x6E, 0x1C, 0x9C, 0xC7, 0x62, 0x1E, 0x58, 0x87, 0xFE, 0x80, 0x0F, 0x53, + 0x40, 0x1E, 0xC9, 0xA5, 0xE1, 0xCD, 0xFC, 0x65, 0x75, 0x5B, 0xC8, 0x4B, + 0x18, 0x0C, 0x71, 0x70, 0xF6, 0x0E, 0x70, 0xE6, 0x9C, 0xE0, 0xF3, 0xFE, + 0x2A, 0xA2, 0x58, 0x23, 0x80, 0x85, 0xAD, 0xA0, 0x65, 0xA2, 0x62, 0xB6, + 0xB5, 0x0A, 0x78, 0x3E, 0xF9, 0x46, 0x85, 0x22, 0xA5, 0xBD, 0x63, 0xB3, + 0x56, 0x75, 0x99, 0xD6, 0x87, 0xFB, 0x6A, 0xB6, 0xB1, 0x02, 0x3B, 0xB1, + 0x10, 0x32, 0x19, 0x71, 0x32, 0xD4, 0x12, 0xFB, 0x49, 0xBC, 0x51, 0x09, + 0xC7, 0x2F, 0xFF, 0xB8, 0xA2, 0xE3, 0x1D, 0xCA, 0x74, 0xC1, 0x41, 0xC3, + 0xEF, 0x3F, 0xDC, 0x4D, 0x40, 0xEA, 0xF7, 0xBB, 0x05, 0x91, 0x11, 0x78, + 0x99, 0xB4, 0xA4, 0xD9, 0x39, 0x17, 0x87, 0xDF, 0x25, 0xDB, 0xE0, 0x73, + 0xA6, 0xE9, 0x3D, 0x27, 0x44, 0xCD, 0x4F, 0xB1, 0x8E, 0x1A, 0x90, 0x94, + 0x07, 0xC9, 0x3E, 0x93, 0x46, 0xDB, 0x05, 0x06, 0xF8, 0x64, 0x5D, 0x78, + 0xBF, 0x7D, 0x73, 0x59, 0x69, 0x5C, 0x6C, 0x1A, 0xE1, 0x86, 0x9E, 0x69, + 0x3C, 0x3B, 0x51, 0x09, 0xE6, 0x43, 0xD3, 0x2B, 0xA8, 0x47, 0x37, 0xAE, + 0x9C, 0xBA, 0x6C, 0x3C, 0x2C, 0x46, 0x60, 0x24, 0x69, 0xE8, 0xCE, 0xF5, + 0x40, 0xCA, 0x72, 0x7E, 0x2E, 0xAA, 0x6F, 0x60, 0x7E, 0x79, 0x53, 0xFC, + 0x09, 0x30, 0x3E, 0x2D, 0x60, 0x21, 0xBA, 0x68, 0x54, 0x49, 0x91, 0x76, + 0x53, 0x60, 0x23, 0xE5, 0xC8, 0x9B, 0xA4, 0x4C, 0x64, 0xD5, 0x02, 0x46, + 0x95, 0xD9, 0x72, 0x3C, 0x30, 0xE8, 0xF1, 0x53, 0x53, 0xC7, 0x8E, 0x90, + 0xF4, 0x34, 0xF3, 0x0C, 0x3F, 0x72, 0xCA, 0x1D, 0x75, 0x72, 0xBE, 0x46, + 0x8A, 0xC0, 0xD3, 0x06, 0x93, 0x72, 0xB0, 0xBF, 0xD0, 0x77, 0x99, 0x06, + 0x7B, 0xDF, 0x6F, 0x10, 0xFB, 0xC6, 0x1D, 0x55, 0x66, 0x2F, 0x81, 0x83, + 0x72, 0x3F, 0x30, 0x60, 0xFA, 0x34, 0xE9, 0xCF, 0xB3, 0x0F, 0x95, 0xBD, + 0xE4, 0x9F, 0xDF, 0x53, 0x6E, 0x00, 0xC9, 0x07, 0x7E, 0x9B, 0x79, 0xBD, + 0xD2, 0xE2, 0x77, 0x80, 0xB4, 0xF3, 0x9A, 0x46, 0x20, 0x8C, 0x21, 0x0A, + 0xEA, 0xFE, 0x07, 0x61, 0x58, 0xB8, 0x38, 0x47, 0xF5, 0x75, 0x5B, 0x33, + 0x78, 0x9E, 0x66, 0xDF, 0x30, 0xAD, 0xD8, 0xED, 0x5D, 0x73, 0x75, 0x6D, + 0x4E, 0x63, 0x8B, 0x35, 0x4F, 0xCA, 0x75, 0x58, 0xDB, 0xEA, 0x2A, 0xE2, + 0xB1, 0xE1, 0x15, 0x6C, 0x69, 0x46, 0xC8, 0xD9, 0x67, 0x15, 0x4B, 0xCE, + 0xB4, 0x04, 0x9B, 0x9D, 0xCA, 0xB7, 0x5E, 0x4B, 0xA3, 0x6C, 0xD1, 0xFF, + 0x4A, 0x71, 0x71, 0x9C, 0x11, 0x87, 0x5E, 0x9E, 0x5D, 0xA9, 0x05, 0x1F, + 0xD8, 0x96, 0xA9, 0x3F, 0xFA, 0xEB, 0x0A, 0x91, 0x44, 0xDD, 0xCF, 0x93, + 0xD5, 0x0A, 0x80, 0x9C, 0xA8, 0xCB, 0x2A, 0x7F, 0x03, 0x45, 0x43, 0xA7, + 0xC3, 0x59, 0xFF, 0xFC, 0xFF, 0x44, 0x24, 0xB1, 0x02, 0xBB, 0x42, 0xCF, + 0x45, 0xC9, 0xF4, 0xAE, 0x23, 0x5D, 0xB2, 0x0B, 0xDE, 0xAD, 0x7E, 0xD6, + 0x1C, 0x75, 0xFE, 0x90, 0xCF, 0x49, 0xB1, 0x51, 0x36, 0x3A, 0x48, 0xD2, + 0xCE, 0xAA, 0x40, 0x2D, 0xE9, 0x70, 0x85, 0xCC, 0x66, 0xB5, 0x2A, 0x85, + 0xA2, 0x1E, 0x18, 0x18, 0xA7, 0x6A, 0x89, 0x39, 0x1E, 0x56, 0x7E, 0xA7, + 0xC7, 0x9F, 0x9B, 0xFA, 0x58, 0x4A, 0x08, 0x0E, 0x78, 0x81, 0x84, 0xB3, + 0x66, 0xA4, 0x8B, 0x20, 0xF2, 0xB0, 0x48, 0xA4, 0xE4, 0xA1, 0xC2, 0x05, + 0xB7, 0x19, 0xFE, 0x71, 0xEF, 0xCB, 0x30, 0x8C, 0xC2, 0x3B, 0xE4, 0x78, + 0x1C, 0x92, 0x51, 0x96, 0xC1, 0x89, 0xA3, 0x71, 0x9A, 0x6D, 0xF5, 0x35, + 0xA6, 0xEE, 0x71, 0xE2, 0x12, 0x55, 0x88, 0x61, 0x10, 0x50, 0x47, 0x53, + 0x3D, 0xBA, 0x0F, 0x6A, 0xE9, 0x5C, 0x8B, 0x0F, 0x8B, 0xAC, 0xCD, 0x20, + 0xAE, 0x5B, 0x9A, 0x80, 0xB4, 0x9C, 0x27, 0x5D, 0x47, 0xD6, 0x03, 0xFE, + 0x68, 0x38, 0xBC, 0x34, 0x1B, 0xFD, 0x62, 0xCF, 0x9A, 0xC0, 0xC9, 0x7C, + 0xAB, 0xF5, 0x85, 0x1D, 0x81, 0x41, 0x6D, 0xB3, 0x62, 0x72, 0x4A, 0x6F, + 0xDD, 0xA8, 0xB4, 0xAE, 0xEA, 0xE0, 0xED, 0x57, 0x82, 0x0A, 0x7E, 0xD1, + 0x3B, 0x7E, 0xA5, 0x43, 0x9E, 0x5F, 0x73, 0x92, 0xEF, 0xAA, 0xC5, 0xAB, + 0xA9, 0x07, 0xD5, 0xB5, 0x32, 0x9E, 0xD3, 0x66, 0xA3, 0x98, 0xDC, 0xF5, + 0x12, 0xB6, 0x89, 0xE0, 0x58, 0xE3, 0x26, 0x62, 0xDC, 0xA2, 0xB9, 0x58, + 0x7C, 0x42, 0xA7, 0xFB, 0x9E, 0x12, 0xD9, 0x50, 0x55, 0xFD, 0x64, 0xC7, + 0xFC, 0xA1, 0x12, 0x98, 0x43, 0xEE, 0x62, 0xBC, 0x75, 0x3B, 0x5D, 0xE1, + 0xFF, 0xAF, 0x29, 0x4D, 0x81, 0x6A, 0xB2, 0x13, 0x2D, 0xE9, 0x9C, 0x65, + 0x90, 0x1A, 0xBE, 0x06, 0x69, 0x9D, 0xC7, 0xF5, 0x98, 0xEB, 0xA4, 0x13, + 0x67, 0xDD, 0xA4, 0x7E, 0x23, 0x56, 0x92, 0x31, 0x62, 0xA3, 0xDD, 0x7B, + 0xB9, 0x1C, 0xD1, 0x0E, 0xEF, 0x1A, 0xB5, 0x94, 0xF4, 0x10, 0xD4, 0x21, + 0x76, 0x14, 0xC1, 0x2D, 0x5C, 0x2F, 0x71, 0x86, 0x94, 0x84, 0x41, 0x6A, + 0x1F, 0xA2, 0x75, 0xFF, 0x34, 0x0B, 0xCA, 0xD4, 0x11, 0x7F, 0xB7, 0xD0, + 0xAB, 0x7E, 0xB9, 0x13, 0x26, 0x1B, 0x60, 0x48, 0x62, 0x2A, 0xF7, 0x18, + 0x24, 0xDF, 0x51, 0x6B, 0x34, 0x61, 0x99, 0x27, 0x03, 0x95, 0x6C, 0xAA, + 0x81, 0xFA, 0x94, 0xAB, 0x9E, 0x34, 0xA5, 0xC5, 0x8C, 0xA6, 0x6A, 0x43, + 0x2D, 0x5F, 0x99, 0xE5, 0x00, 0xE5, 0x51, 0x71, 0x19, 0xA6, 0xF5, 0x36, + 0x1E, 0x21, 0xF2, 0x26, 0xE4, 0x7A, 0x18, 0x76, 0x10, 0xE9, 0xE0, 0x9E, + 0x54, 0x2D, 0xFA, 0x83, 0x9F, 0x41, 0x7C, 0x0E, 0xA7, 0xC9, 0xDD, 0x58, + 0x73, 0x18, 0xCB, 0x26, 0x60, 0xE8, 0x90, 0xC1, 0x4D, 0x0B, 0x01, 0x01, + 0xD8, 0x57, 0xED, 0x78, 0xF9, 0x28, 0x0D, 0xA7, 0x1F, 0x66, 0x99, 0x0A, + 0x17, 0x8C, 0xA7, 0xC1, 0xD2, 0x51, 0x4C, 0x2E, 0x7C, 0x3F, 0xE0, 0x2F, + 0x66, 0x6D, 0x68, 0x2B, 0xE0, 0x17, 0x2F, 0x21, 0xE5, 0x4A, 0xD9, 0x46, + 0x39, 0xA4, 0xD5, 0x2E, 0xF7, 0x6F, 0xAD, 0xA9, 0x13, 0xAE, 0x97, 0xF3, + 0xFC, 0xCE, 0xDA, 0x4C, 0x35, 0xF1, 0x19, 0xCC, 0x27, 0xA4, 0x5C, 0xF9, + 0xDD, 0x19, 0x84, 0xF2, 0x35, 0xDD, 0x3D, 0x7A, 0xD0, 0x9F, 0xA5, 0x81, + 0xFB, 0x66, 0x6E, 0x71, 0x83, 0x88, 0x47, 0xA5, 0xF7, 0xE8, 0x19, 0x5B, + 0x93, 0xE0, 0x1A, 0xE4, 0xED, 0x56, 0xC5, 0xCC, 0x8D, 0xCB, 0x50, 0x41, + 0x0B, 0xEA, 0x2D, 0x2F, 0xBA, 0x8A, 0xA3, 0x64, 0x46, 0x5F, 0x27, 0x22, + 0x17, 0xD9, 0xCC, 0xD6, 0xAD, 0x32, 0xE6, 0x19, 0x35, 0xD2, 0x3C, 0x54, + 0xB5, 0x14, 0xC8, 0x3C, 0x65, 0x9F, 0xA4, 0x2A, 0x44, 0xBA, 0xF3, 0xE5, + 0xBA, 0x10, 0x3B, 0xD6, 0x67, 0xFB, 0x94, 0x99, 0x9A, 0xD7, 0x37, 0x96, + 0xC6, 0x6B, 0xD7, 0xBA, 0x58, 0x82, 0xED, 0x49, 0xD8, 0x6A, 0x58, 0xDB, + 0x04, 0x78, 0x62, 0x8D, 0x30, 0xCA, 0xA0, 0xB8, 0xDE, 0xCD, 0x06, 0x7D, + 0xF3, 0xE8, 0xF8, 0x54, 0xD7, 0xD4, 0x8D, 0xFB, 0xD0, 0xB9, 0x08, 0xE3, + 0xCE, 0x81, 0x7C, 0xCF, 0x71, 0x41, 0x03, 0x1B, 0x9A, 0xED, 0x5C, 0x71, + 0xB5, 0x7B, 0x56, 0xDC, 0x0B, 0x1F, 0xF1, 0xAF, 0x55, 0xE2, 0x37, 0x44, + 0x42, 0x69, 0x27, 0xDB, 0xCE, 0x5E, 0xC1, 0x8A, 0x20, 0x30, 0xBD, 0x7F, + 0x71, 0x2C, 0x1A, 0x26, 0x7C, 0xF8, 0xEF, 0x72, 0x6B, 0x87, 0xB7, 0x13, + 0x9B, 0x39, 0xBC, 0xBD, 0x67, 0xEC, 0x54, 0xA9, 0xB0, 0x5C, 0x11, 0xC3, + 0x60, 0xA7, 0x2F, 0x6D, 0xBC, 0xEB, 0x99, 0x82, 0x47, 0xEE, 0xD4, 0xEE, + 0x85, 0xA5, 0xF6, 0xEB, 0x59, 0xA1, 0xC0, 0x0E, 0xC1, 0x1C, 0x1B, 0x9F, + 0xC7, 0xAD, 0xF1, 0x1C, 0x35, 0x77, 0x06, 0x42, 0xD7, 0xB2, 0x98, 0x0D, + 0x86, 0xF1, 0x71, 0x93, 0xED, 0x29, 0x10, 0xC1, 0x64, 0xA1, 0x0D, 0x5F, + 0x21, 0x8E, 0x9B, 0x7B, 0x16, 0xF8, 0xAA, 0x6E, 0x39, 0x38, 0x71, 0xB0, + 0xDA, 0x6F, 0xF7, 0x74, 0xBD, 0xAB, 0xF2, 0x4C, 0xB2, 0x9E, 0x1E, 0x1D, + 0xB0, 0x75, 0x97, 0xD3, 0x22, 0x03, 0x3D, 0xB9, 0x24, 0x16, 0x16, 0x88, + 0x95, 0x17, 0x9D, 0x67, 0x19, 0xC1, 0x6F, 0x40, 0xC2, 0x61, 0x52, 0xC8, + 0x27, 0x39, 0x75, 0xE5, 0x93, 0xD5, 0x71, 0x89, 0x3E, 0x79, 0x08, 0x49, + 0x4B, 0x02, 0xD9, 0x8D, 0xD8, 0x5B, 0x19, 0x35, 0x34, 0x5F, 0x32, 0x68, + 0x0A, 0xBA, 0xEA, 0x9C, 0xB3, 0x21, 0x25, 0x29, 0x3F, 0xA5, 0x11, 0xF8, + 0x78, 0xA9, 0x6E, 0xED, 0x7E, 0x20, 0xC3, 0xA5, 0xC7, 0x56, 0xCE, 0x29, + 0x4E, 0xC0, 0xA5, 0x04, 0x73, 0x2A, 0xE3, 0x22, 0xF8, 0x30, 0xE5, 0x1D, + 0x0C, 0x76, 0x00, 0xF6, 0x8F, 0xEC, 0x70, 0x65, 0x18, 0x64, 0xCD, 0x20, + 0x37, 0x35, 0x43, 0xA2, 0xF0, 0x67, 0x2D, 0xDE, 0x49, 0xE3, 0x7A, 0x66, + 0x5A, 0x01, 0x87, 0x31, 0xD8, 0x77, 0x85, 0x39, 0x6D, 0xBC, 0x5A, 0xF3, + 0x8B, 0x5C, 0x7C, 0x8F, 0xD8, 0x6A, 0x98, 0xE6, 0x8C, 0x80, 0x3A, 0x44, + 0x9B, 0x44, 0xFC, 0xA1, 0x13, 0xF9, 0xA6, 0x26, 0x1D, 0xC2, 0xF8, 0x49, + 0x98, 0x97, 0x49, 0xEF, 0x28, 0x55, 0x0A, 0x0B, 0x0B, 0x3E, 0x12, 0x20, + 0x3E, 0x25, 0x57, 0xC0, 0xB4, 0xB1, 0xD8, 0x87, 0x33, 0xB7, 0xB4, 0xD8, + 0x99, 0x86, 0x85, 0xB1, 0xCD, 0xB0, 0x36, 0xC1, 0xFD, 0x1D, 0x6E, 0x5E, + 0x6C, 0x65, 0x28, 0x34, 0x13, 0x2C, 0x65, 0x91, 0x98, 0x46, 0xCF, 0x26, + 0x66, 0x06, 0x35, 0x10, 0xE4, 0x82, 0x89, 0x2E, 0xE2, 0x62, 0x6C, 0xAA, + 0x2B, 0x97, 0xAC, 0x23, 0x67, 0x50, 0xE1, 0x88, 0xE2, 0xC2, 0x02, 0xCC, + 0x8C, 0x93, 0xAC, 0x46, 0xB1, 0x0D, 0x4B, 0x63, 0x53, 0xC6, 0x75, 0x17, + 0xA7, 0x68, 0x98, 0xA5, 0x8D, 0x44, 0x48, 0x9D, 0x7C, 0xEB, 0x78, 0x05, + 0x93, 0x30, 0x6E, 0x17, 0xDF, 0x1C, 0x35, 0xED, 0x6A, 0x7A, 0x52, 0x31, + 0x27, 0x2F, 0x82, 0xDD, 0x8D, 0x46, 0x18, 0xCE, 0xFF, 0x13, 0xF6, 0x62, + 0x3E, 0xB1, 0xBC, 0xE5, 0xF7, 0x8E, 0xA2, 0x04, 0x22, 0x3D, 0xFC, 0xA7, + 0x0D, 0xCE, 0x94, 0x2C, 0x48, 0xA2, 0x78, 0x7F, 0x22, 0xBF, 0x08, 0x69, + 0xDE, 0x89, 0x5F, 0x56, 0xE4, 0x88, 0xDB, 0xA1, 0x07, 0xD6, 0x6E, 0xCE, + 0x50, 0xF0, 0xEE, 0x31, 0x52, 0x69, 0xD3, 0x85, 0x22, 0x96, 0x91, 0xA4, + 0x71, 0xA5, 0xB8, 0x7C, 0x0A, 0x8D, 0x59, 0x1F, 0x48, 0x2A, 0xFA, 0xDC, + 0x94, 0x6E, 0x31, 0x92, 0x80, 0x4A, 0x05, 0xE4, 0x00, 0x02, 0x19, 0x23, + 0xDD, 0xA6, 0x10, 0x03, 0x6B, 0x3D, 0xC2, 0xAE, 0x3C, 0x84, 0x44, 0x84, + 0x9B, 0xC9, 0x7F, 0x6D, 0xA1, 0xBE, 0xE8, 0xE9, 0x8E, 0x43, 0x17, 0x18, + 0x85, 0x14, 0x6C, 0x3E, 0xB2, 0xB8, 0x83, 0xFF, 0xA8, 0xE0, 0xF3, 0x9C, + 0xA4, 0x74, 0xA2, 0x7D, 0x82, 0x58, 0xAB, 0x0B, 0xD2, 0xC8, 0x07, 0x29, + 0x8D, 0x66, 0xCD, 0x86, 0xFC, 0xF0, 0x71, 0x7A, 0x6A, 0xF4, 0xC4, 0xD7, + 0xEA, 0x34, 0xB8, 0xF7, 0xCC, 0xF7, 0x8F, 0x27, 0xB1, 0xA7, 0x3D, 0x33, + 0xFE, 0x2F, 0xA1, 0x80, 0x59, 0xE9, 0x0A, 0xF5, 0x3B, 0xEB, 0x84, 0x65, + 0x36, 0xCC, 0x16, 0x49, 0xD8, 0xCE, 0x64, 0x22, 0x12, 0xDA, 0x04, 0x20, + 0x16, 0x85, 0x82, 0xC3, 0x5D, 0x17, 0xE2, 0x01, 0xFB, 0xB9, 0x83, 0x52, + 0x52, 0x50, 0x3B, 0x70, 0x07, 0x87, 0xD5, 0x2E, 0xC1, 0x09, 0x06, 0x3B, + 0xCD, 0x5A, 0xF8, 0x93, 0xA0, 0xD6, 0x67, 0x72, 0xD3, 0x0A, 0x24, 0xB8, + 0x4D, 0x98, 0xE9, 0xB4, 0x3F, 0xDA, 0xB5, 0xA4, 0x32, 0x7D, 0x8B, 0x27, + 0xF3, 0xA0, 0x81, 0x73, 0x18, 0x2A, 0xE0, 0x5B, 0x09, 0x5F, 0x0D, 0xE6, + 0xE9, 0x30, 0x7F, 0x00, 0x33, 0xE5, 0xE3, 0x2B, 0x05, 0x5D, 0x29, 0x9B, + 0xA2, 0x90, 0xEE, 0x09, 0x04, 0x62, 0x07, 0x34, 0x8D, 0x95, 0x00, 0x17, + 0x56, 0x88, 0x05, 0xD2, 0x8E, 0x3F, 0x49, 0x74, 0xD7, 0x59, 0x69, 0x93, + 0xE2, 0x8C, 0xA1, 0xC9, 0x0D, 0xE7, 0x3B, 0x51, 0xB8, 0xE4, 0xA8, 0x77, + 0x58, 0x7A, 0xC2, 0xC7, 0x56, 0x01, 0x0C, 0x0D, 0x5C, 0x1F, 0x00, 0x4D, + 0x36, 0x74, 0x2A, 0xA1, 0xD8, 0x00, 0xC2, 0xAC, 0x61, 0xAC, 0xAC, 0xC8, + 0xA4, 0x0F, 0xE5, 0x8C, 0xCF, 0x9C, 0x2F, 0x93, 0x1A, 0x4A, 0xD9, 0x96, + 0x87, 0x31, 0x42, 0x5C, 0x59, 0x16, 0x89, 0xC4, 0xD5, 0x80, 0x0F, 0xD1, + 0x2E, 0x43, 0x4E, 0x8A, 0xEE, 0x55, 0x49, 0x32, 0x14, 0x31, 0xD4, 0x5E, + 0x58, 0x4E, 0xE9, 0x9A, 0xE3, 0xC2, 0x7C, 0x0E, 0x62, 0xFF, 0xD4, 0x93, + 0xFA, 0xF3, 0x16, 0x7D, 0x35, 0xF8, 0x7A, 0x1D, 0x2E, 0x4C, 0x14, 0xEC, + 0xE8, 0xFB, 0x2A, 0x77, 0x1D, 0x78, 0xCB, 0xE0, 0xC8, 0x50, 0xEB, 0x90, + 0x87, 0xEE, 0xA4, 0xFC, 0xB4, 0x1B, 0x10, 0x11, 0x45, 0x95, 0x26, 0x4F, + 0xCD, 0xDC, 0x3E, 0x16, 0x53, 0xBB, 0x84, 0x5C, 0x97, 0x5D, 0x72, 0xBB, + 0x96, 0xD1, 0x72, 0x08, 0x0E, 0xAB, 0xA2, 0x40, 0x61, 0x84, 0x4F, 0x09, + 0x1A, 0x53, 0xD8, 0x32, 0xEB, 0x48, 0xEC, 0x72, 0x6E, 0x5D, 0x59, 0x48, + 0x69, 0x57, 0xD4, 0x0F, 0xA9, 0xA0, 0x19, 0x4F, 0x3C, 0xBB, 0x5C, 0x97, + 0xF4, 0xF1, 0x48, 0x10, 0x4D, 0xC1, 0x74, 0xCB, 0x61, 0x4F, 0xDE, 0x8E, + 0x04, 0x28, 0xF2, 0xFC, 0x43, 0xDD, 0x7D, 0x1A, 0x30, 0xA5, 0xED, 0xF8, + 0x01, 0x70, 0x73, 0xAE, 0x5F, 0x40, 0xA6, 0x83, 0xF0, 0x59, 0xE2, 0xFB, + 0xE3, 0x43, 0xA2, 0x54, 0x7A, 0x9E, 0xE2, 0xED, 0xF1, 0xD4, 0x82, 0x14, + 0xB3, 0x89, 0x5A, 0xAE, 0xAB, 0x83, 0x37, 0x73, 0x14, 0xE0, 0x48, 0x37, + 0x38, 0xA2, 0x2B, 0x6D, 0x26, 0x9A, 0xD7, 0x40, 0x6E, 0x29, 0xB4, 0x1A, + 0xD4, 0x82, 0x07, 0x16, 0xC0, 0x0C, 0xAE, 0x4A, 0xA5, 0xB3, 0x08, 0xBD, + 0x3C, 0x78, 0xC9, 0x67, 0x3E, 0x3D, 0x85, 0x38, 0xC4, 0x49, 0x03, 0x1C, + 0xE6, 0x92, 0x77, 0x5D, 0xD3, 0xEC, 0x54, 0x7D, 0x18, 0x1F, 0x05, 0xF3, + 0xBB, 0x7D, 0xD2, 0xBC, 0xB8, 0x4D, 0xD0, 0x6E, 0xD5, 0x0A, 0x52, 0x4F, + 0x7A, 0x29, 0x4A, 0x2C, 0xDC, 0x61, 0x5D, 0x44, 0xEA, 0xD7, 0x89, 0x4D, + 0x89, 0xB0, 0x0D, 0x44, 0xC9, 0x4E, 0xCF, 0xD9, 0xE2, 0xFA, 0xC8, 0xA3, + 0xB8, 0x2A, 0x2D, 0x3D, 0x26, 0x63, 0x0D, 0xB5, 0x28, 0x2A, 0xA0, 0x2D, + 0x2F, 0xC5, 0x7B, 0xE8, 0xC4, 0x59, 0x7C, 0xEA, 0xFC, 0x2E, 0x3F, 0xE1, + 0x73, 0xF1, 0x38, 0xA6, 0xC0, 0x3E, 0x78, 0x69, 0xF6, 0x77, 0x64, 0x16, + 0x52, 0x3A, 0x0D, 0x1F, 0x33, 0x3E, 0xE6, 0x68, 0x9B, 0x32, 0x5E, 0xD6, + 0x04, 0xB1, 0x86, 0x0D, 0x61, 0x44, 0xB9, 0xF4, 0x2F, 0xFC, 0x53, 0x78, + 0xFA, 0xB9, 0x2E, 0x37, 0x42, 0x41, 0xC1, 0x2E, 0x3D, 0xBF, 0xA9, 0x2C, + 0x6D, 0x49, 0x44, 0x0D, 0x7D, 0x0C, 0xD1, 0x91, 0xFF, 0xE7, 0x02, 0x6C, + 0x20, 0xB8, 0xE3, 0xF5, 0xD7, 0x3F, 0x6A, 0x5A, 0xFB, 0xA9, 0x24, 0x38, + 0x06, 0x15, 0x22, 0xAE, 0xFA, 0x4C, 0xCD, 0x94, 0xDC, 0x1C, 0x3D, 0x74, + 0x15, 0x88, 0x3E, 0xD3, 0x40, 0x8D, 0x5E, 0xA1, 0xD5, 0x4B, 0x25, 0x5F, + 0xE6, 0x06, 0x91, 0x69, 0x1A, 0xB9, 0x70, 0x79, 0x0B, 0x67, 0xAD, 0xF9, + 0xB8, 0x0E, 0xCC, 0x6F, 0x2A, 0x3A, 0x89, 0x14, 0x48, 0x07, 0x69, 0x43, + 0x4E, 0xAA, 0x21, 0xB0, 0x55, 0xDC, 0xC1, 0x9F, 0x36, 0x39, 0x29, 0x36, + 0x4B, 0x33, 0x84, 0x35, 0x1D, 0x13, 0xF5, 0x4F, 0x46, 0x65, 0x30, 0xD9, + 0xFB, 0xC9, 0x43, 0xAB, 0x54, 0x27, 0x77, 0x4F, 0xC7, 0x70, 0x35, 0x75, + 0xBF, 0xF5, 0x69, 0x65, 0x93, 0xB8, 0x27, 0x07, 0x12, 0x6F, 0x34, 0xE5, + 0x6F, 0x31, 0x80, 0xD5, 0xCD, 0x0D, 0x26, 0x2E, 0xC7, 0xB3, 0xF4, 0x62, + 0x79, 0x5C, 0x20, 0x97, 0xB5, 0x17, 0x46, 0x8A, 0xFE, 0xC4, 0x11, 0xBC, + 0x7E, 0x6C, 0xFF, 0xF5, 0x5D, 0x08, 0x9F, 0xE8, 0x5A, 0x6D, 0x79, 0x22, + 0x0F, 0xFD, 0x0A, 0xB6, 0x76, 0xC7, 0x28, 0x43, 0x61, 0x74, 0x69, 0x7B, + 0x82, 0xCF, 0x3A, 0xB2, 0xC7, 0x56, 0x51, 0x6D, 0xE3, 0x6C, 0x5A, 0x7C, + 0x38, 0x52, 0xAF, 0x56, 0x71, 0xBD, 0x1E, 0xB6, 0x4D, 0x77, 0x43, 0xD9, + 0x76, 0x9B, 0xF7, 0xD2, 0x5E, 0xD5, 0xAF, 0x39, 0xAA, 0x14, 0x74, 0xAF, + 0xB1, 0x15, 0x5C, 0xA9, 0x11, 0x3C, 0x62, 0xA9, 0xA7, 0x92, 0xB6, 0x4F, + 0x95, 0xCD, 0x26, 0x1A, 0x75, 0x23, 0x4F, 0x55, 0x29, 0x7E, 0x5E, 0xDC, + 0x04, 0x57, 0x70, 0xC4, 0x4D, 0xEB, 0x7F, 0x51, 0xB7, 0x99, 0x0D, 0x20, + 0x92, 0xA4, 0xC8, 0x88, 0x7B, 0x6D, 0xB4, 0xC8, 0x1C, 0x19, 0x36, 0xC7, + 0xD2, 0xFA, 0xC1, 0x9B, 0x92, 0x16, 0x79, 0xAD, 0x88, 0x9A, 0xCB, 0x31, + 0xA4, 0x92, 0xA8, 0xBC, 0xF5, 0x46, 0xE3, 0x71, 0xC4, 0xE8, 0x63, 0xF5, + 0x89, 0x68, 0x2A, 0x21, 0x41, 0x46, 0x81, 0x7A, 0x99, 0xAC, 0x04, 0xDD, + 0x18, 0x91, 0x4E, 0x3D, 0x02, 0x06, 0x8B, 0x8A, 0x6F, 0x47, 0x3A, 0xA5, + 0xD5, 0x75, 0xE0, 0x8E, 0x81, 0xB8, 0x36, 0x3D, 0xA0, 0x35, 0x20, 0x5F, + 0x0B, 0x96, 0x8E, 0xD8, 0x1D, 0x56, 0x2F, 0x14, 0x81, 0xE1, 0x40, 0x30, + 0x79, 0x84, 0x7D, 0x49, 0x83, 0x71, 0xBA, 0xDC, 0x14, 0x0B, 0x64, 0xFC, + 0x52, 0xD8, 0xBE, 0x3F, 0x35, 0x74, 0x4C, 0x64, 0x15, 0x8D, 0x84, 0xF4, + 0xB5, 0x9D, 0xF9, 0x14, 0x35, 0xC9, 0x71, 0x69, 0x1C, 0x1A, 0x5D, 0x99, + 0xA4, 0x41, 0xFF, 0x3B, 0x98, 0x30, 0x64, 0xCE, 0xF3, 0xB3, 0xA9, 0xF7, + 0xF0, 0xAA, 0xB2, 0x73, 0xF2, 0x29, 0x01, 0x95, 0x6C, 0xF8, 0x14, 0x21, + 0x1B, 0x6E, 0x58, 0xD4, 0x9E, 0x7A, 0x62, 0x82, 0xB7, 0xD7, 0xB3, 0xEE, + 0xEB, 0x3F, 0x3D, 0x3D, 0x52, 0x9F, 0xA9, 0x15, 0x5D, 0xB4, 0xB0, 0x6D, + 0x17, 0xC8, 0x5C, 0x5F, 0xF7, 0x55, 0xB1, 0xA9, 0xA5, 0x25, 0xEF, 0x89, + 0xE2, 0x7F, 0xBA, 0xAA, 0xDD, 0x40, 0x54, 0x6F, 0x6E, 0x86, 0x27, 0x24, + 0x3B, 0x18, 0x49, 0xE6, 0xD3, 0x6B, 0xDD, 0x44, 0xC0, 0x94, 0xB0, 0x1D, + 0x32, 0xDE, 0x5B, 0x3E, 0xEA, 0x72, 0xB4, 0x01, 0xA1, 0xE4, 0x58, 0x52, + 0x26, 0xD7, 0x6F, 0xC7, 0x86, 0x7A, 0xB7, 0x41, 0xC2, 0xB0, 0x55, 0x55, + 0x8F, 0x1F, 0xA2, 0x43, 0x60, 0x2E, 0x5A, 0x53, 0xBF, 0xA8, 0xAC, 0xD6, + 0x63, 0xA8, 0x0E, 0x2A, 0xA0, 0x4F, 0x8A, 0xF3, 0xF9, 0xF6, 0x1C, 0xC1, + 0x1A, 0x0A, 0x3D, 0x16, 0x2F, 0xF5, 0x8A, 0x6F, 0xEF, 0x41, 0x08, 0xAA, + 0x5C, 0xFE, 0xFF, 0x4A, 0xFE, 0x9D, 0x36, 0x1B, 0xDE, 0x4C, 0x36, 0x9E, + 0x57, 0x0F, 0x4C, 0xD7, 0xFC, 0x8B, 0x03, 0x7E, 0xFB, 0x59, 0x34, 0xBB, + 0x1C, 0x8D, 0xCF, 0x59, 0x9D, 0x4C, 0xA4, 0x26, 0xD3, 0x68, 0x35, 0xCE, + 0x80, 0xCD, 0xDB, 0x6D, 0xE0, 0x02, 0x5A, 0xAE, 0x64, 0xD9, 0x9E, 0x44, + 0x74, 0x08, 0x71, 0x5E, 0x6D, 0x95, 0x0A, 0x60, 0x75, 0xAA, 0xA7, 0xB5, + 0xD7, 0x75, 0x5E, 0xD3, 0x05, 0xA3, 0x50, 0xA1, 0x32, 0x13, 0x8C, 0x29, + 0x81, 0x45, 0x7A, 0x38, 0x61, 0xB5, 0xD0, 0x4C, 0xB5, 0x95, 0xD7, 0x92, + 0x58, 0x8C, 0xF8, 0x0B, 0x9D, 0x7C, 0x33, 0x35, 0xAE, 0x8E, 0x69, 0x48, + 0x0F, 0x03, 0x75, 0x81, 0x78, 0xE8, 0x91, 0x0D, 0xEF, 0x84, 0x91, 0x53, + 0xF1, 0xE6, 0xED, 0xC1, 0xD7, 0x1D, 0xD3, 0xE0, 0x73, 0x9E, 0x94, 0xD5, + 0x68, 0xE9, 0xBD, 0x13, 0xA6, 0x22, 0x76, 0x19, 0x5F, 0x2D, 0xAC, 0xF9, + 0xD6, 0x06, 0x88, 0x1E, 0x5B, 0xA5, 0x00, 0x67, 0x6F, 0x0D, 0xD2, 0xF3, + 0x5D, 0x8D, 0x06, 0x90, 0xD1, 0xF7, 0xBE, 0x39, 0x19, 0xD5, 0x9E, 0x60, + 0x6B, 0xD4, 0x51, 0xE6, 0x46, 0xB2, 0x96, 0xC4, 0x01, 0xC3, 0xD2, 0xA5, + 0x3D, 0xCD, 0x4F, 0x9C, 0xBD, 0x3D, 0xC3, 0x0F, 0x1E, 0x94, 0xA8, 0xFD, + 0x26, 0xA9, 0x9C, 0x4C, 0xA4, 0xF8, 0xBC, 0xD8, 0xB1, 0xC7, 0xFE, 0x5F, + 0x8B, 0xF2, 0x60, 0x37, 0x6D, 0xF9, 0x62, 0xEF, 0xAE, 0xAD, 0x19, 0x69, + 0xAF, 0x20, 0x26, 0x41, 0x60, 0xEC, 0x8D, 0x32, 0x6B, 0x3B, 0xA3, 0xA2, + 0x67, 0xB0, 0x6D, 0xA3, 0x48, 0x8A, 0xAA, 0x03, 0xD3, 0xE4, 0xE7, 0x76, + 0xA0, 0x8C, 0xBE, 0x53, 0xF3, 0x2E, 0x96, 0x1A, 0xEB, 0x1E, 0x38, 0x47, + 0x29, 0x64, 0x8F, 0xDB, 0x15, 0xAA, 0xFF, 0xE6, 0xC0, 0x16, 0x22, 0xD8, + 0x95, 0x36, 0x56, 0x28, 0x5B, 0x90, 0x0C, 0x8C, 0xF3, 0x03, 0x01, 0xA3, + 0x53, 0x17, 0x62, 0x0C, 0xB6, 0xDC, 0x65, 0xE4, 0x70, 0x49, 0xD2, 0x76, + 0x85, 0x47, 0x90, 0x8B, 0x84, 0xF4, 0x00, 0x13, 0x0A, 0xB6, 0x3F, 0xF4, + 0x3E, 0x67, 0x1A, 0x11, 0xFF, 0xA5, 0x28, 0x0F, 0x1E, 0x0C, 0xD5, 0xE9, + 0x99, 0x3E, 0x09, 0xB5, 0x0B, 0x87, 0x9B, 0xF1, 0xB2, 0x8D, 0xFD, 0x24, + 0x95, 0x43, 0x52, 0x1D, 0x38, 0xA7, 0x1B, 0x98, 0x38, 0xEC, 0x68, 0x7C, + 0x69, 0x45, 0x17, 0x21, 0x63, 0x85, 0x16, 0xF8, 0xCE, 0x10, 0xA4, 0xE1, + 0xCE, 0xD8, 0x1A, 0x82, 0x6E, 0xC7, 0x06, 0xD4, 0xB0, 0x58, 0x09, 0x22, + 0x95, 0x84, 0x0E, 0xD6, 0x2E, 0x06, 0x74, 0x07, 0x5D, 0x01, 0x8B, 0x88, + 0x8D, 0x66, 0xF4, 0x0D, 0x36, 0x52, 0x41, 0xCD, 0xE6, 0x17, 0xBF, 0xF2, + 0x37, 0x50, 0x68, 0x3A, 0x5C, 0x7D, 0x4F, 0xD5, 0xE0, 0xE7, 0xB3, 0x24, + 0xD3, 0x2A, 0x07, 0x18, 0x9F, 0x53, 0x8D, 0x52, 0xD6, 0x98, 0x26, 0x30, + 0xA5, 0x43, 0x04, 0x7C, 0xB1, 0xF3, 0x93, 0xE2, 0xE6, 0x21, 0x1B, 0x94, + 0xDA, 0xEE, 0x29, 0xB1, 0xDB, 0x07, 0x3D, 0x9F, 0x9B, 0x14, 0x8F, 0x4E, + 0x9D, 0xCB, 0xCE, 0xA9, 0x5C, 0x60, 0xB1, 0xC0, 0x4C, 0xB7, 0x89, 0xBA, + 0xD2, 0x14, 0xEE, 0x94, 0xBC, 0xD4, 0x5D, 0x90, 0x3B, 0xC6, 0xC5, 0x7C, + 0xCB, 0x13, 0xB9, 0xDE, 0xA0, 0x06, 0x37, 0x94, 0x73, 0xBC, 0xC8, 0xA0, + 0xDB, 0xE3, 0x51, 0xD3, 0x36, 0xB5, 0x4E, 0x4F, 0xA0, 0xB0, 0x74, 0x38, + 0x76, 0xBC, 0x8A, 0x98, 0x4B, 0xFA, 0x00, 0x4F, 0x89, 0xA5, 0x59, 0x92, + 0xC4, 0xAD, 0x35, 0x67, 0x68, 0xE5, 0x7D, 0xDD, 0x5E, 0x1C, 0x50, 0x35, + 0x4E, 0xE1, 0xEB, 0x9C, 0x1A, 0xD2, 0x4C, 0x98, 0x25, 0x2A, 0x43, 0x7E, + 0x7C, 0x64, 0x45, 0x1B, 0x19, 0x97, 0xDE, 0xD0, 0xCB, 0x24, 0x5C, 0x40, + 0x95, 0x46, 0x0A, 0xEC, 0x14, 0x59, 0x55, 0x10, 0x12, 0x23, 0x1C, 0xF9, + 0x9E, 0xB5, 0xEF, 0xEA, 0x6E, 0xE4, 0x6B, 0xF7, 0xDD, 0x95, 0xD2, 0x8F, + 0x96, 0xBA, 0xDA, 0x04, 0x87, 0x47, 0x5B, 0x2A, 0xB6, 0x71, 0x2C, 0xE3, + 0xCA, 0xC6, 0x94, 0xC0, 0xA0, 0xB8, 0x17, 0x78, 0x0A, 0xFE, 0xB9, 0x1E, + 0xB3, 0xCB, 0x21, 0x7E, 0x90, 0x01, 0xB2, 0xBD, 0xEE, 0x81, 0xD0, 0x05, + 0xDE, 0xC2, 0xFB, 0x6E, 0x94, 0xDC, 0x22, 0xA0, 0x0F, 0x8A, 0xD5, 0xB5, + 0x56, 0xA5, 0xB4, 0x39, 0xCD, 0x1E, 0xDB, 0x5A, 0xF2, 0x92, 0xA8, 0x7B, + 0x1F, 0xDC, 0x44, 0xE7, 0xFF, 0xE3, 0x59, 0x69, 0x2D, 0x5E, 0x45, 0x53, + 0x99, 0xB6, 0xC2, 0x15, 0x21, 0x65, 0x32, 0x43, 0xFC, 0xAD, 0x6D, 0x91, + 0xC9, 0x09, 0x82, 0x6B, 0x2C, 0xA8, 0x0A, 0xE8, 0x4A, 0xD7, 0x19, 0x06, + 0x53, 0x9A, 0x00, 0x0A, 0x9E, 0x25, 0xA6, 0x6E, 0xE0, 0x98, 0xC2, 0xC9, + 0xD4, 0x98, 0x32, 0xE4, 0xEE, 0x37, 0x5D, 0x1F, 0x10, 0x22, 0xCD, 0x91, + 0xBD, 0x7B, 0xDA, 0x27, 0xB5, 0x06, 0x5A, 0x9E, 0x27, 0x6C, 0xBA, 0x53, + 0x20, 0x13, 0xA3, 0x2E, 0xAC, 0x05, 0x9A, 0x3C, 0xD1, 0xEB, 0xA2, 0xE8, + 0x7F, 0x4E, 0xB0, 0xE6, 0x5A, 0x73, 0x6B, 0x5D, 0x37, 0x80, 0x66, 0xD3, + 0x50, 0x21, 0xA6, 0x9E, 0x43, 0x15, 0x15, 0x77, 0xC7, 0x0B, 0x30, 0x16, + 0xB6, 0x8D, 0x38, 0x93, 0x53, 0xF5, 0x68, 0xF4, 0x34, 0x07, 0xD1, 0xBD, + 0x10, 0xDE, 0xDD, 0x4E, 0x87, 0x32, 0xB6, 0xB4, 0x37, 0xD1, 0xBB, 0x8A, + 0xD2, 0x4B, 0xBF, 0x04, 0x73, 0x3A, 0x36, 0x5C, 0x87, 0xF7, 0x0B, 0x41, + 0x11, 0xF6, 0x27, 0x2C, 0xB6, 0xC2, 0x8B, 0xBE, 0x6E, 0x5D, 0x17, 0xA6, + 0xEC, 0x74, 0xDF, 0xE4, 0x88, 0xDD, 0x9E, 0xEF, 0xFD, 0x2B, 0x25, 0xD9, + 0x3B, 0x42, 0xB1, 0x2F, 0x21, 0xE4, 0x29, 0xC8, 0x69, 0x48, 0xC8, 0xB8, + 0xB3, 0x8C, 0x2B, 0x4F, 0x31, 0xB9, 0x0C, 0xB2, 0xE1, 0xE9, 0xE1, 0xF4, + 0x7C, 0xE9, 0x78, 0x1F, 0xFF, 0xB7, 0x6D, 0xF9, 0x01, 0xF5, 0xDA, 0xCB, + 0x37, 0x20, 0xAE, 0x29, 0xED, 0xC7, 0x93, 0x25, 0xB7, 0x10, 0x47, 0x1E, + 0x07, 0x8A, 0x82, 0xDC, 0xB9, 0x93, 0x39, 0xA0, 0xD8, 0x24, 0x5F, 0xA2, + 0x8C, 0xE5, 0xB0, 0xAC, 0x8C, 0x63, 0x09, 0x50, 0x49, 0x04, 0x27, 0xD5, + 0x2B, 0xA5, 0xA1, 0x8C, 0x86, 0x8B, 0x3D, 0x19, 0xC6, 0x39, 0x88, 0xB8, + 0xB4, 0x2B, 0x4C, 0x5D, 0x6B, 0x9C, 0x36, 0xA6, 0x7A, 0x1A, 0xA7, 0x71, + 0xE8, 0x97, 0x78, 0x1C, 0x03, 0xDA, 0x0D, 0xA3, 0xE9, 0xF6, 0x5F, 0x63, + 0x2E, 0x9B, 0x6C, 0x86, 0xB9, 0x7C, 0x3D, 0xD2, 0xC9, 0x90, 0xCA, 0x5F, + 0x48, 0x5E, 0x1C, 0x11, 0x88, 0xCA, 0xBF, 0x79, 0xB5, 0xBF, 0x2D, 0xED, + 0xFE, 0x4D, 0xC6, 0x2C, 0xFB, 0x8E, 0x0E, 0x42, 0x53, 0x8C, 0xB2, 0x07, + 0x92, 0xFF, 0xEC, 0x6B, 0xAA, 0xC5, 0xAE, 0x25, 0x09, 0xEA, 0xBB, 0x82, + 0x5E, 0x86, 0x63, 0xD2, 0xF5, 0x59, 0x8F, 0x26, 0xF5, 0x98, 0x17, 0xE4, + 0x6A, 0x89, 0x28, 0x2B, 0xF5, 0x8A, 0x5E, 0x96, 0x1C, 0x8D, 0xBE, 0x30, + 0x47, 0xE6, 0x75, 0x84, 0x79, 0xFE, 0xF1, 0x35, 0xDD, 0x70, 0x7E, 0xCA, + 0xC9, 0x1F, 0xD8, 0x03, 0x26, 0xEA, 0x48, 0x39, 0x68, 0xFF, 0x34, 0x8B, + 0x58, 0xC6, 0x7C, 0x68, 0x54, 0x1A, 0x03, 0x17, 0x55, 0x23, 0xF9, 0xA8, + 0x66, 0x04, 0x6A, 0xB4, 0x3C, 0xA9, 0xDB, 0x46, 0x5C, 0x48, 0xEB, 0xB2, + 0x0D, 0x74, 0x67, 0x30, 0xD6, 0x2D, 0xFF, 0x30, 0x6D, 0xB5, 0x66, 0x66, + 0x7C, 0xE2, 0x8B, 0xB0, 0xB6, 0x08, 0xFE, 0x2F, 0x05, 0xC4, 0x26, 0x33, + 0x1F, 0x40, 0xC3, 0x07, 0x04, 0xAE, 0xFC, 0xC1, 0x23, 0xE5, 0x31, 0xEA, + 0x16, 0x63, 0xB5, 0x9C, 0xD8, 0x2D, 0xC1, 0xCE, 0x46, 0xBC, 0x4C, 0x88, + 0x7C, 0xBC, 0x86, 0xC5, 0x89, 0x69, 0x93, 0x13, 0x97, 0x0C, 0x05, 0xF3, + 0x7C, 0x9D, 0x23, 0xC2, 0x81, 0x2C, 0xB9, 0x98, 0x05, 0x3D, 0x1B, 0x67, + 0xDA, 0x50, 0x04, 0xD4, 0x79, 0x8A, 0x97, 0x63, 0xE5, 0xAF, 0xA4, 0xFD, + 0x3D, 0x4D, 0x17, 0x3D, 0x8B, 0x9C, 0xA8, 0xEF, 0xA1, 0x42, 0x62, 0xFE, + 0xD0, 0xD3, 0x86, 0xBE, 0x8D, 0xCB, 0x54, 0x02, 0xCD, 0x4D, 0xBF, 0xA9, + 0xC2, 0x74, 0xBC, 0x4C, 0x82, 0x5A, 0x0A, 0xF9, 0xC6, 0x6C, 0xD1, 0x59, + 0x2B, 0x8F, 0xED, 0x51, 0xAF, 0xA6, 0x17, 0x4A, 0xBB, 0xBD, 0xE4, 0x1B, + 0xA2, 0x40, 0xC9, 0xAB, 0x7F, 0xE0, 0x59, 0x19, 0x98, 0xCE, 0x84, 0x51, + 0x35, 0x3F, 0x49, 0x0E, 0x9F, 0x13, 0xD3, 0x43, 0xAF, 0x98, 0xD7, 0x8A, + 0x8E, 0x2E, 0x88, 0x02, 0x4C, 0x17, 0x08, 0x9F, 0xFD, 0x4C, 0xF7, 0x9F, + 0x38, 0x74, 0x4E, 0x39, 0xCF, 0x93, 0xC3, 0x0A, 0xB2, 0x9B, 0xBF, 0xE4, + 0xAE, 0xA5, 0x6D, 0x7F, 0x1A, 0x62, 0x16, 0x05, 0x9C, 0x10, 0xF4, 0x81, + 0x6F, 0xA7, 0xDF, 0xE8, 0x95, 0xC8, 0x88, 0x8A, 0x11, 0xEB, 0x56, 0xC6, + 0x27, 0xE0, 0x92, 0x45, 0x87, 0x6F, 0x63, 0x11, 0x1B, 0x5C, 0xD8, 0x4E, + 0x13, 0xAA, 0xB5, 0x04, 0x15, 0xCD, 0xF6, 0x66, 0x1C, 0x7C, 0x62, 0x3A, + 0x6F, 0x73, 0xCF, 0x8B, 0xAB, 0x3A, 0x42, 0x5E, 0x1F, 0x58, 0x3E, 0xF2, + 0x4C, 0xAF, 0xCB, 0x7A, 0x0E, 0x0C, 0xAB, 0xED, 0x04, 0xF6, 0xC2, 0x91, + 0xAC, 0x8D, 0x30, 0xF1, 0x2A, 0x43, 0x53, 0x02, 0x5C, 0xF5, 0x92, 0x21, + 0x50, 0x56, 0x2E, 0x38, 0x7C, 0x6E, 0x48, 0xDE, 0x81, 0x0E, 0x41, 0x3B, + 0xA0, 0x74, 0xFC, 0x63, 0xC3, 0x3D, 0x8E, 0xC9, 0x28, 0xA2, 0xA0, 0x57, + 0x4A, 0xDC, 0xB5, 0xAA, 0x1E, 0x86, 0xA2, 0x6C, 0x55, 0xF7, 0xC9, 0x1F, + 0x28, 0x6B, 0xB5, 0xD6, 0x98, 0x25, 0x32, 0xE0, 0xA5, 0x29, 0xC8, 0xA6, + 0xFE, 0x95, 0xC0, 0xA5, 0xFE, 0x82, 0x32, 0xD5, 0xC0, 0xFE, 0x63, 0x37, + 0xBD, 0x57, 0x42, 0x53, 0xF6, 0xF9, 0x6A, 0x2C, 0x88, 0x71, 0xDC, 0xB5, + 0x28, 0xF0, 0x18, 0x7E, 0x45, 0xF0, 0xB2, 0x19, 0x15, 0x1C, 0x2D, 0x1A, + 0xD2, 0xF4, 0xAD, 0xDB, 0xAF, 0x23, 0x07, 0xA1, 0x3F, 0xDE, 0x97, 0xA5, + 0x1A, 0xD2, 0x7E, 0x61, 0x8D, 0x23, 0x49, 0xC6, 0x22, 0x0E, 0xE0, 0xD9, + 0x40, 0xC5, 0xE2, 0xD7, 0x0C, 0xDC, 0xD1, 0x50, 0x45, 0xC3, 0x74, 0x64, + 0xD4, 0xCC, 0x11, 0xEC, 0x1F, 0x5E, 0x7E, 0x67, 0x76, 0x73, 0x3E, 0x55, + 0x43, 0x44, 0x31, 0x1B, 0xBD, 0xF3, 0xA9, 0x7C, 0x72, 0xCE, 0x83, 0x2E, + 0x5D, 0x2B, 0xF6, 0x2C, 0xA5, 0xB2, 0xC6, 0xB1, 0x71, 0x1E, 0xEA, 0x33, + 0xF1, 0x83, 0x2A, 0x21, 0x65, 0x13, 0xFE, 0xA0, 0x21, 0xB7, 0x44, 0x07, + 0x04, 0xF1, 0x46, 0x1D, 0xEF, 0x71, 0x80, 0x27, 0x42, 0x5F, 0x90, 0x55, + 0x54, 0x84, 0x60, 0x37, 0xCF, 0xFB, 0xFA, 0x36, 0x4D, 0x92, 0x63, 0x82, + 0x3D, 0xE8, 0xC2, 0x09, 0xE7, 0xBE, 0xC3, 0x7D, 0x4C, 0x17, 0xF1, 0x5C, + 0x0F, 0xB6, 0x57, 0x25, 0x5D, 0xC0, 0x0C, 0x63, 0xE1, 0xF2, 0x9F, 0x69, + 0xD6, 0x35, 0x73, 0xDC, 0xB3, 0x1D, 0xDA, 0x72, 0x5E, 0xB7, 0x12, 0x3B, + 0x43, 0xF7, 0xB4, 0xCC, 0x48, 0xAC, 0xE2, 0xB3, 0xFB, 0x15, 0x91, 0x03, + 0xFB, 0xDF, 0x2A, 0x4D, 0x70, 0x88, 0x75, 0x02, 0x18, 0x53, 0xF9, 0x9F, + 0xC1, 0x9C, 0x0C, 0x5B, 0x5A, 0x59, 0x1B, 0x5F, 0x4A, 0xE5, 0x39, 0x20, + 0xAD, 0x28, 0xC7, 0x80, 0x77, 0x13, 0x8E, 0x61, 0xBD, 0xE8, 0x80, 0x37, + 0x41, 0x6E, 0xE7, 0x75, 0xCA, 0x41, 0xC6, 0xA9, 0xCC, 0x1C, 0xAF, 0xFF, + 0x97, 0xCC, 0xFE, 0xF2, 0xED, 0x85, 0xD8, 0xB1, 0x4F, 0xF3, 0x7A, 0xE7, + 0xF9, 0x18, 0x41, 0xD7, 0x49, 0xA2, 0x1B, 0xBC, 0xE2, 0x89, 0x93, 0x54, + 0x5A, 0xF1, 0x5E, 0xA3, 0x66, 0x51, 0x8C, 0x66, 0x7A, 0xF7, 0x44, 0xD7, + 0xFD, 0x90, 0xF1, 0xEE, 0x3E, 0xF6, 0x0E, 0xA5, 0xE9, 0xDB, 0xD0, 0xDB, + 0x58, 0xA7, 0x45, 0xA9, 0x34, 0xD8, 0x44, 0xA3, 0x65, 0x29, 0xCB, 0x61, + 0x8E, 0xAD, 0x7F, 0x95, 0xBA, 0x71, 0xFB, 0xB6, 0x93, 0x5F, 0x6F, 0xFC, + 0xC1, 0xAA, 0xE6, 0x9F, 0x73, 0x55, 0x69, 0xE7, 0x35, 0x12, 0xCA, 0x26, + 0x56, 0x39, 0x79, 0xFB, 0xAB, 0x53, 0x00, 0xF0, 0x8F, 0x72, 0xBF, 0x2D, + 0x30, 0x05, 0x67, 0x65, 0x4B, 0xD3, 0x6A, 0xF7, 0x8B, 0x79, 0x41, 0xFA, + 0x89, 0x2A, 0xDB, 0x0C, 0xA1, 0x10, 0xFC, 0x3A, 0x12, 0x63, 0x55, 0xB0, + 0x3A, 0xB5, 0x30, 0xDB, 0x08, 0x76, 0xAF, 0xF6, 0x1A, 0xD9, 0xAE, 0x51, + 0x81, 0xE3, 0x84, 0x90, 0x70, 0x2C, 0x1B, 0xA7, 0x75, 0xA3, 0x44, 0xD2, + 0x9B, 0x71, 0x7C, 0x39, 0x0E, 0x1E, 0x32, 0x7D, 0x6B, 0x40, 0x90, 0xEE, + 0xEF, 0x85, 0xB3, 0x21, 0x86, 0x2B, 0xE7, 0x53, 0x70, 0x7B, 0xB4, 0xE2, + 0x2D, 0xBE, 0x1F, 0x61, 0xEA, 0x7D, 0x31, 0x4E, 0x07, 0xB6, 0xD3, 0x20, + 0x82, 0x2F, 0x7E, 0xEA, 0x63, 0x8E, 0x31, 0xD8, 0xCE, 0x3C, 0x50, 0x58, + 0x58, 0x99, 0x3D, 0x77, 0x18, 0x6C, 0xF6, 0x64, 0xB2, 0xB8, 0xBF, 0x39, + 0xE0, 0x2C, 0x47, 0xAF, 0xBC, 0xDF, 0xC9, 0xE3, 0x4A, 0x92, 0xB3, 0xAB, + 0x28, 0x4C, 0x07, 0x32, 0x53, 0xDC, 0x33, 0x25, 0xC8, 0xD6, 0xAC, 0xE9, + 0xFF, 0x17, 0xF1, 0x63, 0xD6, 0x03, 0x6A, 0x81, 0xEE, 0x3F, 0xDA, 0xAE, + 0xD1, 0x5D, 0xAD, 0x92, 0x51, 0x99, 0xA8, 0x5C, 0xDA, 0x47, 0x3A, 0xDB, + 0x94, 0x9D, 0x89, 0xA2, 0x24, 0x88, 0xB0, 0xBB, 0x22, 0x46, 0x8F, 0x03, + 0xB0, 0x9C, 0xB9, 0xDE, 0xD6, 0xCA, 0xEA, 0xDE, 0x6B, 0x97, 0xA9, 0xB0, + 0xB3, 0xDB, 0xA6, 0x5E, 0xAD, 0xEC, 0x12, 0x23, 0x04, 0x4D, 0x7B, 0xF2, + 0x7C, 0x0A, 0xE2, 0xB3, 0xA0, 0x81, 0x58, 0x8F, 0xC0, 0xA6, 0xE9, 0xDF, + 0x7F, 0xA7, 0x89, 0x6E, 0x2D, 0x68, 0x23, 0xF1, 0x29, 0xB7, 0xD7, 0xDC, + 0x63, 0x4A, 0xCB, 0x83, 0x24, 0xC0, 0xE4, 0x54, 0x5C, 0x67, 0x12, 0xB3, + 0xFB, 0x6A, 0x1E, 0x37, 0xE0, 0xBE, 0x85, 0xDA, 0x7C, 0xB4, 0x8B, 0xEC, + 0xE8, 0xBB, 0x08, 0x84, 0xD9, 0x90, 0x4B, 0x56, 0xFA, 0x2F, 0xA2, 0x36, + 0xC8, 0x97, 0xFC, 0x3E, 0xC0, 0x9C, 0x28, 0x5D, 0xFD, 0x54, 0xD8, 0x53, + 0x7D, 0x41, 0x4F, 0x15, 0x09, 0xA6, 0x3F, 0xAF, 0x13, 0x31, 0xE6, 0xE8, + 0x45, 0x8C, 0x64, 0xFC, 0xF6, 0x53, 0x1C, 0x2B, 0x25, 0xDF, 0x15, 0x93, + 0x06, 0xE1, 0x32, 0x45, 0x9A, 0x29, 0x6B, 0xD5, 0x11, 0x27, 0xA7, 0x2E, + 0x98, 0xA8, 0x30, 0xD7, 0x93, 0x37, 0xDE, 0xFE, 0xC2, 0xE7, 0xC0, 0xAE, + 0x5E, 0x26, 0x04, 0xA4, 0x57, 0x7A, 0x3F, 0xD7, 0x0E, 0xB6, 0x27, 0xE1, + 0xCF, 0xBA, 0x27, 0xC3, 0x84, 0xFE, 0xD5, 0x4A, 0x87, 0xF0, 0xB5, 0x1C, + 0x44, 0x3E, 0x17, 0xC9, 0x99, 0x8F, 0x85, 0xE6, 0xDA, 0x41, 0x94, 0xAB, + 0x71, 0xC9, 0x0B, 0x9E, 0xA8, 0xF0, 0x5A, 0x01, 0x14, 0x8E, 0x15, 0x05, + 0xB7, 0xE0, 0x90, 0xDD, 0x33, 0x9E, 0x82, 0x3B, 0x14, 0x57, 0xBD, 0xD1, + 0xC7, 0xC1, 0x6D, 0xDE, 0x3F, 0x4B, 0x4E, 0xD6, 0xF4, 0x49, 0xED, 0xAF, + 0x6C, 0x6C, 0xE3, 0x51, 0x0E, 0xDF, 0x15, 0xAF, 0xCD, 0x7F, 0xBF, 0x64, + 0xF4, 0x66, 0x0F, 0x25, 0x86, 0xDA, 0xEF, 0xDF, 0xBB, 0x75, 0x92, 0xAD, + 0x70, 0x42, 0x1E, 0xC7, 0x23, 0x2C, 0xC1, 0x49, 0x4B, 0x9B, 0xAC, 0x7C, + 0x3C, 0x7D, 0xFA, 0xA2, 0x80, 0xCC, 0x0E, 0xDC, 0xD2, 0xAD, 0xDA, 0xBD, + 0xF2, 0xFB, 0xAD, 0xCA, 0x96, 0x68, 0x19, 0xAE, 0x7E, 0xDB, 0x43, 0xF3, + 0xEF, 0x52, 0x3F, 0x95, 0x3E, 0x5C, 0x9A, 0x9E, 0x54, 0x8F, 0x47, 0x27, + 0xEC, 0xC1, 0xBF, 0x31, 0x7A, 0xDB, 0x6B, 0xBE, 0x40, 0x98, 0x8A, 0x33, + 0xD8, 0x42, 0x97, 0x0C, 0x51, 0x3B, 0xD7, 0xB1, 0x95, 0xF8, 0xEF, 0x3B, + 0xC8, 0xD8, 0x4C, 0x94, 0x0D, 0xDE, 0xC4, 0x09, 0x77, 0x52, 0x6E, 0xF2, + 0xEF, 0x50, 0x9A, 0x83, 0x48, 0x6D, 0x69, 0x91, 0x33, 0x1A, 0x56, 0x98, + 0xC0, 0x12, 0x86, 0xA8, 0xE3, 0xDE, 0x2E, 0xE9, 0x43, 0xB3, 0x7A, 0x71, + 0x40, 0xFA, 0x34, 0xF7, 0xA6, 0xC3, 0x2F, 0xBB, 0x16, 0x6B, 0x91, 0x01, + 0x58, 0xB0, 0x8D, 0x7A, 0x54, 0x62, 0x59, 0x3E, 0xC3, 0x2F, 0x3D, 0x48, + 0xFB, 0x6C, 0x85, 0xD3, 0xD7, 0xB0, 0xFD, 0x4E, 0xCA, 0x3A, 0xEE, 0x37, + 0xFF, 0xA1, 0xA8, 0xB0, 0x8F, 0xF8, 0x3F, 0xC7, 0x88, 0x07, 0x30, 0x1C, + 0x81, 0x56, 0x63, 0xC2, 0x97, 0x05, 0x8C, 0x7A, 0x01, 0xBF, 0x14, 0x50, + 0xA7, 0x87, 0x9A, 0x86, 0x79, 0x59, 0x45, 0x0F, 0x78, 0xD4, 0x0D, 0x1E, + 0x3B, 0xE0, 0xF1, 0x14, 0x11, 0x55, 0x04, 0xE8, 0x10, 0x34, 0xDC, 0xF8, + 0x3C, 0x12, 0xC5, 0x93, 0x64, 0x47, 0x70, 0x84, 0x89, 0x5F, 0xAF, 0xC3, + 0x6B, 0xB2, 0x89, 0xAE, 0xED, 0xF6, 0x6A, 0x55, 0xC5, 0x50, 0xC5, 0xDE, + 0x02, 0x70, 0xF9, 0x03, 0x67, 0xA4, 0x82, 0xDE, 0x0D, 0x38, 0x18, 0xDF, + 0x5D, 0x24, 0x8D, 0x00, 0x8A, 0xF5, 0xA3, 0x01, 0xC6, 0xE3, 0xA6, 0x17, + 0x16, 0xB9, 0xA1, 0x8E, 0x9C, 0x08, 0x9B, 0x2A, 0x20, 0x22, 0x69, 0x50, + 0x91, 0x10, 0x98, 0x2C, 0x19, 0x94, 0xE6, 0xE9, 0x2C, 0x0F, 0xDD, 0x0A, + 0x5A, 0xF8, 0xAD, 0xE5, 0xBE, 0x65, 0x3C, 0xD3, 0x75, 0x1C, 0x75, 0x77, + 0xC2, 0xF7, 0x23, 0x7E, 0x6E, 0x62, 0xAF, 0xD2, 0x5F, 0x00, 0xFC, 0xD0, + 0xF9, 0xF1, 0xCF, 0x7E, 0x11, 0xE6, 0xF5, 0x7E, 0xC0, 0x46, 0xCA, 0xEF, + 0x1C, 0x5F, 0x62, 0x2F, 0x6D, 0xF9, 0xF4, 0x88, 0x64, 0xD2, 0xE0, 0x1F, + 0x04, 0x33, 0xB9, 0xBA, 0x99, 0xC9, 0x9E, 0xD9, 0x48, 0x11, 0x6B, 0x2C, + 0x35, 0x79, 0x36, 0x40, 0xDF, 0xB8, 0x3C, 0x2F, 0xAA, 0x35, 0x91, 0x43, + 0xD2, 0x23, 0x8F, 0x1E, 0x24, 0x4E, 0x29, 0xA8, 0x9F, 0x3F, 0xF9, 0xF4, + 0x5E, 0xAC, 0xBF, 0x39, 0xE2, 0x7F, 0x12, 0x4C, 0x95, 0xBC, 0xCE, 0x61, + 0xF3, 0xEF, 0xD0, 0x30, 0x60, 0x6B, 0xFD, 0xD6, 0xF8, 0x15, 0x25, 0x56, + 0x57, 0xC2, 0xF5, 0x84, 0xE4, 0xDF, 0xE8, 0x28, 0xBF, 0x81, 0x98, 0x5D, + 0xFA, 0x28, 0x66, 0xF5, 0xD5, 0x43, 0x71, 0x17, 0xBF, 0x19, 0xA2, 0x5F, + 0xB6, 0xDB, 0x14, 0x93, 0xBC, 0x30, 0xC4, 0x3E, 0x11, 0x01, 0xC5, 0x04, + 0x30, 0x90, 0xBE, 0xA5, 0x85, 0xC4, 0x1B, 0xAD, 0x68, 0xCA, 0xBB, 0x7B, + 0x8B, 0x45, 0x29, 0xF4, 0xA3, 0xCE, 0x72, 0x36, 0x79, 0x1B, 0xE6, 0x4D, + 0xD7, 0x52, 0xBA, 0xD7, 0x2E, 0x61, 0x97, 0xDB, 0x5B, 0xA5, 0x47, 0x1F, + 0x6F, 0xE0, 0x29, 0x25, 0xBC, 0xA1, 0xCF, 0x17, 0xC5, 0x32, 0xAA, 0x2B, + 0xB2, 0x52, 0x89, 0x32, 0xCB, 0xFB, 0x1A, 0xCE, 0x4A, 0x2B, 0x98, 0x7F, + 0xB5, 0x9B, 0x72, 0x42, 0x08, 0xB4, 0x52, 0x83, 0xB5, 0x98, 0x9D, 0xA0, + 0x04, 0x50, 0x3B, 0xFD, 0x4B, 0x18, 0xAF, 0x9D, 0xE0, 0x70, 0xE7, 0x0B, + 0x84, 0x09, 0x93, 0x51, 0x35, 0xE1, 0xC0, 0xB2, 0xD3, 0xE1, 0x66, 0x17, + 0xB1, 0xDC, 0xE4, 0x1D, 0xBF, 0xE6, 0x76, 0x53, 0x1B, 0x05, 0xB2, 0x47, + 0x02, 0x0B, 0xAB, 0x70, 0x52, 0x1B, 0x1C, 0x5B, 0xAF, 0x84, 0x0F, 0x12, + 0xCD, 0xB9, 0x3F, 0xB9, 0x15, 0xC6, 0x56, 0xBB, 0xD7, 0x80, 0xBB, 0x94, + 0xFB, 0xFB, 0x7C, 0xB9, 0xCF, 0xBC, 0x0E, 0xCB, 0xA8, 0x7E, 0x4A, 0xF3, + 0xBA, 0x73, 0xCD, 0x9E, 0x14, 0x0D, 0x12, 0x17, 0x91, 0xF6, 0xF4, 0x9D, + 0x14, 0x13, 0x91, 0x8E, 0x6D, 0x62, 0xF3, 0x27, 0xA1, 0x01, 0x85, 0xD2, + 0x7A, 0xF5, 0x60, 0x13, 0xEE, 0xDC, 0x75, 0xF9, 0xFF, 0x23, 0x2D, 0xFE, + 0xE7, 0x69, 0x40, 0x8B, 0x0A, 0xA8, 0xFF, 0x86, 0x2A, 0x6D, 0x0D, 0xD3, + 0x9D, 0x14, 0xA3, 0xDF, 0xB8, 0x1C, 0x44, 0xE9, 0x7E, 0x9D, 0x73, 0x6B, + 0x0C, 0xF2, 0x0F, 0x45, 0xA5, 0xCF, 0x46, 0xDA, 0xDC, 0xF6, 0x24, 0xC6, + 0x72, 0xD0, 0x91, 0x6E, 0x38, 0x76, 0x1F, 0xA7, 0xF9, 0x8F, 0x9A, 0xFC, + 0x16, 0x1E, 0xF7, 0x6A, 0x82, 0x49, 0x1C, 0xC0, 0xDE, 0x8A, 0xDA, 0x62, + 0x86, 0x06, 0x6C, 0xF6, 0x8E, 0xA3, 0xE1, 0x65, 0x32, 0x7B, 0x65, 0x00, + 0x99, 0xEA, 0xAF, 0x86, 0x03, 0xDE, 0xCE, 0xF9, 0xE6, 0xAE, 0x16, 0x2D, + 0x9D, 0x90, 0xB4, 0x63, 0x96, 0xA6, 0x7E, 0xEE, 0x06, 0xE7, 0x69, 0x84, + 0x40, 0xDE, 0x94, 0x20, 0x7C, 0xCF, 0x37, 0x21, 0x6E, 0x3D, 0xB0, 0xED, + 0x9C, 0x9E, 0xAE, 0x56, 0x5D, 0xD7, 0x54, 0x51, 0x80, 0xA7, 0xCB, 0xB8, + 0xC2, 0x02, 0x45, 0xF3, 0x5B, 0x15, 0xA6, 0xEC, 0x5A, 0x10, 0xB2, 0xCC, + 0xC6, 0x4D, 0xCD, 0xE5, 0xF5, 0xB5, 0x86, 0xC3, 0x73, 0x00, 0xDB, 0x5B, + 0xE7, 0x0E, 0xF8, 0x51, 0x05, 0x4B, 0x93, 0xB3, 0xD0, 0x78, 0x12, 0x1E, + 0x86, 0xCD, 0xBB, 0xE4, 0x80, 0xF7, 0x72, 0xF5, 0xC7, 0x95, 0xF5, 0x62, + 0xFA, 0x27, 0x9B, 0x9A, 0x24, 0xDD, 0x7E, 0xE3, 0xCE, 0x7C, 0x96, 0x13, + 0x29, 0xD2, 0xCD, 0xB5, 0x31, 0xD8, 0x8D, 0xE9, 0x8D, 0x12, 0xD5, 0x49, + 0x76, 0xFD, 0xCC, 0xCC, 0x8B, 0x30, 0x6D, 0x7D, 0x33, 0xC1, 0x0B, 0x0B, + 0xC8, 0xD3, 0xA2, 0x3A, 0x98, 0xAB, 0x20, 0x50, 0x25, 0x44, 0xC4, 0x34, + 0xC0, 0x82, 0x64, 0x94, 0x44, 0x19, 0x33, 0xCB, 0x18, 0x5A, 0x7B, 0x33, + 0x38, 0xED, 0xC6, 0x5F, 0xD4, 0x85, 0xD1, 0x1D, 0xDD, 0x1C, 0xD7, 0x43, + 0xFF, 0x67, 0x28, 0xD2, 0xC1, 0x8E, 0x3D, 0x19, 0x21, 0xC1, 0x8D, 0x00, + 0xCE, 0x0C, 0x2C, 0x83, 0x89, 0x11, 0x14, 0xC1, 0x59, 0x29, 0x63, 0x2D, + 0xC6, 0x46, 0xD0, 0x52, 0xFB, 0x02, 0xEC, 0xF3, 0x9C, 0xF2, 0x64, 0xB4, + 0x37, 0x99, 0x5C, 0xF6, 0x57, 0xC9, 0x4A, 0x51, 0x18, 0x08, 0x6E, 0x8B, + 0x9D, 0xEB, 0xA5, 0x8F, 0xE4, 0x85, 0x29, 0x4C, 0x5F, 0xD8, 0x41, 0x2A, + 0x62, 0xAB, 0x25, 0x42, 0xEE, 0x90, 0x64, 0x8E, 0x93, 0x64, 0x87, 0x49, + 0x98, 0x7C, 0x0E, 0xDF, 0xAC, 0xC5, 0x79, 0x2D, 0xC8, 0x53, 0x45, 0x2B, + 0xCF, 0x2F, 0x0B, 0xB6, 0x5B, 0x4C, 0x45, 0x38, 0x96, 0xE3, 0x70, 0x91, + 0x8E, 0xAC, 0x51, 0x67, 0xA2, 0xDB, 0x83, 0x55, 0x4C, 0x9D, 0xEB, 0x49, + 0xE4, 0x37, 0x68, 0x9B, 0x58, 0xDC, 0x4B, 0xEC, 0xB5, 0xC4, 0xDC, 0x13, + 0xB1, 0x54, 0x92, 0xA5, 0x67, 0x75, 0x98, 0x43, 0x71, 0x27, 0xFF, 0xA5, + 0x6E, 0xE3, 0x12, 0x8C, 0xF6, 0xCB, 0x18, 0x21, 0x7C, 0x0A, 0x4B, 0xB3, + 0xA5, 0xF4, 0xEA, 0x09, 0x2C, 0x1C, 0x57, 0xBF, 0x8F, 0xA6, 0x94, 0xDD, + 0x19, 0x35, 0x4F, 0x17, 0xA7, 0x55, 0x45, 0xBD, 0xC8, 0x32, 0x72, 0x9E, + 0x05, 0xD6, 0xBA, 0x3C, 0x60, 0x2E, 0xE6, 0x83, 0x12, 0xC4, 0xE2, 0x80, + 0x03, 0xDE, 0xBB, 0x88, 0xFB, 0x7F, 0xAD, 0x3B, 0x9C, 0xD8, 0xD0, 0x8E, + 0x4C, 0x52, 0x4D, 0x7A, 0xB8, 0x89, 0xB0, 0xBC, 0x7F, 0x94, 0x81, 0xBB, + 0x6C, 0xE7, 0x5E, 0x1C, 0xFA, 0x69, 0x81, 0xB6, 0x46, 0xC2, 0x3B, 0x70, + 0xB8, 0x02, 0xA9, 0x9F, 0x17, 0x0F, 0xF2, 0x31, 0x17, 0x82, 0xFF, 0x17, + 0x02, 0xB9, 0x14, 0xBB, 0xE7, 0x1B, 0x1B, 0x4B, 0x92, 0x14, 0xE4, 0xE7, + 0x6D, 0x6D, 0x73, 0xB8, 0xCB, 0x5D, 0x92, 0x27, 0x7D, 0xDA, 0x00, 0x69, + 0x70, 0x15, 0x3C, 0x0F, 0xF0, 0xDE, 0x5F, 0xCD, 0x1A, 0x17, 0x86, 0x2A, + 0x58, 0xB5, 0x4B, 0x3E, 0xAB, 0x4D, 0x8D, 0x75, 0x4D, 0x40, 0x7F, 0x84, + 0x1D, 0x19, 0x17, 0x1E, 0x41, 0x4C, 0xB9, 0xEF, 0x61, 0x46, 0x80, 0xAD, + 0x5D, 0xDB, 0x01, 0x1E, 0x73, 0xED, 0x42, 0xDD, 0x35, 0x07, 0x8B, 0xD0, + 0xEC, 0x2E, 0x77, 0x35, 0xB8, 0xFC, 0x2E, 0xE5, 0x8D, 0x30, 0x96, 0x0D, + 0x88, 0x7F, 0x52, 0xE7, 0x6B, 0x11, 0xF0, 0xD2, 0x6A, 0x6F, 0x89, 0x66, + 0x3F, 0x3A, 0x94, 0x98, 0x64, 0x0F, 0x0E, 0x77, 0xF2, 0x04, 0x96, 0xD9, + 0xAA, 0x36, 0x0B, 0x39, 0xEE, 0x1F, 0x1D, 0x10, 0x23, 0xD0, 0xFA, 0x0B, + 0xE1, 0x88, 0xED, 0x97, 0x73, 0xFF, 0xCC, 0xC8, 0xD6, 0x49, 0x4A, 0x24, + 0xC1, 0x49, 0x78, 0x25, 0x7A, 0x26, 0xD4, 0x6A, 0x9E, 0x4C, 0x98, 0xFA, + 0x90, 0xB4, 0xD4, 0x07, 0xA4, 0xD2, 0x5E, 0x8B, 0x6D, 0xB1, 0x03, 0xBD, + 0xCE, 0x13, 0x3B, 0x3E, 0x78, 0x4F, 0xFE, 0xCB, 0xB6, 0x53, 0xB7, 0x27, + 0xAA, 0xC4, 0x35, 0xCD, 0xD8, 0xD9, 0x96, 0x78, 0x9A, 0x1D, 0xE5, 0x97, + 0xAC, 0xBE, 0x31, 0x8A, 0x77, 0x65, 0x67, 0x61, 0x3A, 0xF0, 0x0E, 0x04, + 0x54, 0x1C, 0xE4, 0x5F, 0xED, 0x06, 0xBA, 0xFB, 0x34, 0x59, 0xB2, 0x91, + 0x33, 0xED, 0xF4, 0x52, 0xFE, 0x42, 0xFB, 0xAE, 0xEF, 0x46, 0xE5, 0x01, + 0x95, 0x6F, 0xB7, 0xE6, 0x8A, 0xEE, 0x45, 0xE5, 0xAF, 0x13, 0x8B, 0x76, + 0x74, 0xC3, 0x31, 0x36, 0xD2, 0x84, 0x1C, 0xA9, 0x4D, 0xF1, 0x1E, 0xA7, + 0x97, 0xF4, 0x4B, 0xD6, 0xA2, 0xF8, 0x90, 0x31, 0x2F, 0xCC, 0x70, 0x9F, + 0x59, 0x98, 0x6F, 0x8F, 0x6F, 0x81, 0x44, 0x01, 0x70, 0x25, 0x6B, 0x6A, + 0x86, 0xF9, 0x76, 0x87, 0x37, 0xDB, 0x23, 0x5A, 0xE1, 0x1B, 0x83, 0x8C, + 0x87, 0x2C, 0x21, 0xC2, 0x8B, 0x76, 0x37, 0x1A, 0x5D, 0x96, 0xFB, 0x5B, + 0x9E, 0xF7, 0xA3, 0xFD, 0x11, 0x8F, 0x87, 0x0A, 0xD5, 0xE2, 0x13, 0x33, + 0xCC, 0x02, 0xB5, 0x9B, 0x31, 0x7F, 0x50, 0x4B, 0xED, 0x88, 0x74, 0xCF, + 0x0A, 0x04, 0x2C, 0x92, 0xE2, 0xE7, 0x79, 0x00, 0x68, 0xFF, 0xC2, 0x5B, + 0xA5, 0x76, 0x40, 0xD0, 0x63, 0x53, 0x39, 0x24, 0x48, 0xB2, 0x9F, 0x34, + 0x76, 0xD1, 0x68, 0x75, 0x47, 0x0E, 0x51, 0x90, 0x01, 0x53, 0x05, 0x3E, + 0x88, 0xE8, 0x1A, 0x10, 0x85, 0x52, 0x2D, 0x57, 0x12, 0x17, 0x83, 0x4D, + 0x11, 0xBB, 0x63, 0x0E, 0x59, 0x61, 0xCA, 0xAC, 0x3F, 0xE0, 0x18, 0x04, + 0x68, 0xDC, 0x7D, 0xC7, 0xD8, 0xF2, 0x5D, 0xB6, 0x7C, 0x86, 0x0C, 0x03, + 0xD6, 0x7E, 0xA6, 0x2C, 0x01, 0x5F, 0x7E, 0xFF, 0x9B, 0x0C, 0x26, 0xA9, + 0x9C, 0x5D, 0x9D, 0x00, 0xCD, 0x59, 0x4C, 0x3A, 0xD6, 0x82, 0x85, 0x8B, + 0x65, 0x41, 0x85, 0x40, 0xE0, 0xE9, 0x0B, 0x93, 0xE5, 0x32, 0x24, 0xDB, + 0x94, 0x74, 0x94, 0x07, 0x47, 0x1B, 0x01, 0x6E, 0x4B, 0x5D, 0x26, 0x31, + 0x42, 0xBE, 0x38, 0x08, 0x2B, 0x19, 0xC1, 0x51, 0xCC, 0x51, 0xFC, 0x62, + 0xFE, 0x09, 0x08, 0xD3, 0x58, 0x6C, 0x8A, 0x2D, 0x35, 0xDE, 0x82, 0xD6, + 0x4F, 0xEB, 0x65, 0x9F, 0xA1, 0xC9, 0xC3, 0x7A, 0x70, 0x9F, 0xAA, 0xF3, + 0x97, 0xF3, 0xE9, 0xFC, 0x3B, 0x84, 0x1D, 0xE5, 0x35, 0xA0, 0x05, 0xEE, + 0xAB, 0x78, 0xDB, 0xF0, 0xAD, 0xEC, 0x1E, 0xE9, 0x86, 0x96, 0x46, 0x45, + 0x44, 0xD5, 0x28, 0x7D, 0x83, 0xB0, 0x83, 0x69, 0xBC, 0x60, 0x5E, 0x14, + 0x28, 0xCA, 0xA7, 0x3C, 0xEF, 0xDE, 0x74, 0x89, 0x6D, 0xBF, 0x1B, 0x8F, + 0x59, 0x8E, 0x96, 0xD5, 0xCE, 0x19, 0x41, 0x92, 0x88, 0x2A, 0xE8, 0x1B, + 0x1D, 0x9E, 0xC1, 0x34, 0x2C, 0x3E, 0x3F, 0xBC, 0x4F, 0x72, 0x61, 0x44, + 0x21, 0xCA, 0x08, 0x26, 0x0D, 0x28, 0xDC, 0x3D, 0x6F, 0x33, 0x49, 0xE6, + 0x8B, 0xE6, 0xDD, 0x09, 0x6B, 0x29, 0x8B, 0xAB, 0xF6, 0x2C, 0x23, 0x7E, + 0x2B, 0x51, 0x63, 0x0F, 0x97, 0x25, 0xA1, 0x3C, 0x76, 0x39, 0x3B, 0xFB, + 0x75, 0x62, 0xA4, 0xF5, 0xC6, 0x72, 0x5E, 0xBF, 0x38, 0xA1, 0x8D, 0xB3, + 0x31, 0x0E, 0x02, 0x7A, 0x42, 0xDB, 0x92, 0xD0, 0x44, 0x85, 0x8F, 0x6E, + 0x7B, 0xCA, 0xD4, 0xE1, 0x8B, 0xC9, 0x6A, 0xC2, 0x20, 0xF7, 0x67, 0x00, + 0x39, 0xDA, 0xAA, 0xF9, 0x54, 0x77, 0xDB, 0x54, 0x76, 0x7B, 0x15, 0xBF, + 0xE3, 0x8F, 0x7E, 0x75, 0x09, 0x50, 0x1D, 0x8A, 0x82, 0x91, 0xCA, 0x7E, + 0xF3, 0x11, 0xB8, 0x1B, 0xA7, 0x11, 0x0F, 0x29, 0xA4, 0x32, 0xB7, 0xB4, + 0x66, 0x5A, 0xCE, 0xC3, 0x70, 0xCA, 0x19, 0xF1, 0x75, 0x32, 0x18, 0xCD, + 0x11, 0xCD, 0x29, 0x6F, 0x7D, 0x9D, 0x56, 0x17, 0x6F, 0xB2, 0x82, 0x75, + 0x9B, 0xE5, 0x60, 0x5F, 0x98, 0xAF, 0x2A, 0x9A, 0xBA, 0x97, 0x90, 0xC5, + 0x99, 0x73, 0xC0, 0xFD, 0x70, 0xA3, 0x14, 0xF7, 0xD8, 0xAF, 0xA4, 0x1C, + 0xEC, 0x04, 0x27, 0xD5, 0xCB, 0x95, 0xAB, 0x1E, 0x1D, 0x01, 0x33, 0xDA, + 0xC1, 0xF3, 0xF3, 0x14, 0x0E, 0xE9, 0x40, 0xCA, 0x8D, 0x16, 0xAF, 0x61, + 0x4C, 0x5B, 0x98, 0x11, 0xFE, 0x39, 0x84, 0x08, 0x29, 0x0B, 0x3C, 0xD1, + 0xC6, 0x80, 0xAB, 0x8B, 0x61, 0xD3, 0x36, 0x84, 0xAC, 0xBE, 0xD0, 0xC5, + 0x5D, 0xD8, 0x7B, 0x9B, 0xF0, 0x72, 0xC0, 0x0C, 0xFD, 0x57, 0x57, 0x75, + 0x31, 0x0D, 0x7D, 0x6E, 0xA4, 0xE8, 0xDC, 0x15, 0x73, 0x22, 0x00, 0x25, + 0xCB, 0xCA, 0x54, 0x5A, 0xB3, 0x1D, 0x27, 0x52, 0xE5, 0xF8, 0xEA, 0xA5, + 0xE7, 0x3E, 0x25, 0x8B, 0x58, 0x23, 0x93, 0xB6, 0x90, 0x62, 0x32, 0xD9, + 0xAA, 0xEC, 0x37, 0xB6, 0xC3, 0xA0, 0x92, 0xE4, 0xFB, 0xFF, 0xB3, 0xF4, + 0xBF, 0x90, 0x58, 0x51, 0x9F, 0xAC, 0xFD, 0xA7, 0x7B, 0xEA, 0x47, 0x67, + 0x5B, 0x5D, 0x1A, 0x1D, 0xED, 0xC8, 0x80, 0x19, 0x86, 0x97, 0x7D, 0x8E, + 0x70, 0x1E, 0x5B, 0xF1, 0x04, 0x21, 0xA0, 0x41, 0xBE, 0x6A, 0x6E, 0x0D, + 0x31, 0x62, 0xB7, 0xE9, 0x9F, 0xCF, 0x09, 0xC2, 0xC0, 0xC0, 0xA8, 0xE2, + 0x9A, 0x01, 0xDB, 0x0C, 0x8B, 0xC3, 0x04, 0xD3, 0xE6, 0xAE, 0x51, 0xCD, + 0xA8, 0x75, 0x51, 0xC9, 0x85, 0x87, 0x38, 0x5B, 0x6F, 0xD6, 0x7C, 0x2C, + 0x56, 0x7B, 0xE3, 0x90, 0x72, 0xC4, 0x17, 0x4D, 0x61, 0xE8, 0x82, 0x04, + 0xB4, 0x54, 0x27, 0xA1, 0xEA, 0x75, 0xB7, 0x3A, 0xA7, 0x51, 0x43, 0xB4, + 0x0C, 0xC8, 0xFB, 0x7D, 0xBD, 0x47, 0x43, 0xDC, 0xE1, 0x60, 0x09, 0x94, + 0xF1, 0xDA, 0x45, 0x6F, 0x57, 0xFB, 0x66, 0xEF, 0xA4, 0x14, 0x6F, 0x7A, + 0xAD, 0xAA, 0xE2, 0x85, 0x3D, 0xC5, 0xF5, 0x14, 0xEB, 0x7B, 0x68, 0xAE, + 0x41, 0xDF, 0xB6, 0xDD, 0x83, 0x14, 0x83, 0xAF, 0x54, 0xF8, 0x34, 0xEA, + 0x01, 0x61, 0x8D, 0x9B, 0xCC, 0xE9, 0xDB, 0x81, 0x68, 0xC2, 0x6F, 0xD2, + 0xAB, 0xF9, 0xF2, 0xC0, 0xF1, 0x29, 0x7A, 0x47, 0x4F, 0x52, 0x51, 0xDB, + 0xDA, 0x1C, 0xD3, 0x5C, 0xE8, 0x2A, 0x68, 0xFF, 0x99, 0xD1, 0x6D, 0xE8, + 0xA1, 0x90, 0x17, 0x1A, 0x2C, 0x7D, 0xB3, 0x1D, 0x8E, 0xF6, 0x84, 0xE2, + 0x3F, 0x1A, 0xD0, 0x3D, 0xE8, 0x51, 0x7B, 0xEA, 0x3E, 0xFF, 0x2B, 0x25, + 0xB7, 0x27, 0x3D, 0xA0, 0x2E, 0x10, 0xD8, 0x1C, 0x99, 0xA4, 0xE0, 0x78, + 0xA3, 0x30, 0x8E, 0x1E, 0xD2, 0xE4, 0xA1, 0x08, 0x0E, 0x9F, 0x60, 0x22, + 0xDE, 0xB3, 0x8C, 0x0F, 0xAE, 0x97, 0x21, 0x35, 0xDC, 0x8E, 0x0D, 0x65, + 0x99, 0xFA, 0xAC, 0x46, 0x79, 0x97, 0xEC, 0x58, 0x7E, 0x42, 0x45, 0x58, + 0x33, 0xAF, 0x2D, 0xE4, 0x45, 0x9F, 0x54, 0x93, 0x34, 0xCB, 0xAD, 0x10, + 0xD6, 0x61, 0x33, 0xB8, 0x5B, 0xCF, 0xB3, 0xF4, 0x68, 0x16, 0xA5, 0x98, + 0x54, 0x75, 0x95, 0x8C, 0xCD, 0xCF, 0x74, 0x29, 0x7F, 0xB5, 0xF7, 0xC9, + 0x56, 0x6E, 0x5B, 0xFF, 0xEA, 0xCB, 0x8A, 0x53, 0x1E, 0x78, 0xA3, 0x25, + 0x68, 0x15, 0xE4, 0xD3, 0xC4, 0xDF, 0x93, 0x6E, 0xC8, 0xAA, 0x53, 0xFA, + 0x3C, 0x60, 0xAC, 0x0D, 0xA2, 0x01, 0xF6, 0x36, 0x1E, 0x80, 0x61, 0xE1, + 0x89, 0x29, 0xDC, 0x0B, 0xC4, 0x0D, 0xB7, 0x8A, 0xD2, 0xB2, 0x7C, 0xAD, + 0x47, 0xB5, 0xE0, 0x1F, 0x48, 0x21, 0x55, 0xAA, 0x5F, 0x7D, 0x85, 0x48, + 0xE8, 0xD6, 0x19, 0xBE, 0xE6, 0x9C, 0x61, 0x8F, 0x89, 0x35, 0x49, 0x6D, + 0x2E, 0x8B, 0x46, 0x1B, 0xCB, 0xD8, 0x06, 0x83, 0x8B, 0x70, 0xED, 0x66, + 0x17, 0xAD, 0x2C, 0xF6, 0xC8, 0xF3, 0x1E, 0xE2, 0xCA, 0xDA, 0x04, 0xAA, + 0xD4, 0xA0, 0xA6, 0x8B, 0xCC, 0x19, 0xF1, 0x87, 0x93, 0x3A, 0x69, 0xEE, + 0x82, 0x75, 0x71, 0x8B, 0x8E, 0xFD, 0x39, 0x4A, 0x9D, 0x95, 0x07, 0x80, + 0x4E, 0xF6, 0x25, 0xFA, 0x9C, 0x68, 0xF1, 0xA6, 0x84, 0x28, 0x8C, 0x47, + 0xFB, 0xCC, 0xE5, 0x7A, 0x2B, 0xAC, 0x3B, 0x58, 0xEE, 0x51, 0x31, 0x18, + 0x6F, 0xFD, 0x5A, 0xE4, 0xFE, 0x80, 0x75, 0x92, 0x67, 0xF1, 0xF9, 0x78, + 0x73, 0xF1, 0x52, 0x4E, 0x9F, 0xFE, 0xA7, 0x18, 0x99, 0x48, 0x74, 0xE3, + 0x94, 0x70, 0x1A, 0x9F, 0xCD, 0x15, 0x31, 0xB3, 0x68, 0x4C, 0xFA, 0xED, + 0x44, 0xC2, 0x8D, 0x71, 0xC0, 0xC2, 0x1B, 0x39, 0x97, 0xE2, 0xFF, 0xA5, + 0x4E, 0x07, 0xF1, 0xA7, 0xFF, 0xBF, 0x85, 0x79, 0x00, 0x29, 0x62, 0xB7, + 0x0F, 0xF9, 0x6A, 0xE5, 0xFE, 0x09, 0xE2, 0x2B, 0x76, 0x74, 0xF6, 0x40, + 0xBE, 0x64, 0xE9, 0xD4, 0x27, 0x74, 0x6F, 0xEC, 0xDD, 0xBC, 0x53, 0xCD, + 0x9F, 0x16, 0x6B, 0x92, 0xAE, 0x59, 0x9E, 0x74, 0x72, 0x18, 0xA5, 0x68, + 0xE0, 0xA0, 0xAE, 0x06, 0xDB, 0xC4, 0xE5, 0x34, 0x37, 0x87, 0xAD, 0x80, + 0x2B, 0x0F, 0x84, 0x37, 0x99, 0x96, 0x9D, 0xEF, 0x87, 0x3C, 0xED, 0x7A, + 0xD9, 0xAA, 0xB8, 0xC8, 0x7A, 0xD4, 0xD0, 0x2A, 0xD7, 0xDA, 0xEC, 0x0B, + 0x85, 0x8A, 0x93, 0x84, 0x38, 0x2D, 0x3F, 0x6B, 0xE1, 0x8A, 0x88, 0x5D, + 0x4C, 0x26, 0x69, 0xF5, 0x43, 0x55, 0xB1, 0x32, 0xB2, 0x78, 0x67, 0x39, + 0xC3, 0x64, 0x4A, 0x6A, 0x5B, 0xA3, 0x7A, 0xBC, 0x8A, 0x0A, 0x76, 0xDB, + 0x69, 0x09, 0x66, 0x2C, 0x2F, 0xD9, 0x30, 0x0B, 0x4E, 0xB0, 0x71, 0x5E, + 0xDE, 0x48, 0x58, 0x6A, 0x10, 0x6B, 0xB1, 0x6D, 0xF8, 0xB3, 0xF9, 0xD9, + 0x24, 0x43, 0x0C, 0xB9, 0xAE, 0xB7, 0x9B, 0x76, 0x3A, 0xB3, 0xF1, 0x68, + 0x0A, 0xD4, 0xE5, 0xEC, 0x30, 0x8D, 0x19, 0xD0, 0x19, 0x42, 0x42, 0xF4, + 0xD2, 0xF0, 0x3D, 0x40, 0x4E, 0xF0, 0x52, 0x8C, 0x9D, 0x77, 0xE4, 0x5B, + 0x04, 0x12, 0x4C, 0x08, 0xC3, 0xF6, 0x9A, 0x58, 0x20, 0x40, 0x4B, 0x06, + 0x8B, 0x1C, 0xD6, 0x0E, 0x7D, 0x2C, 0x8A, 0x9F, 0xEC, 0x25, 0xF0, 0x66, + 0x91, 0x34, 0xBE, 0xB9, 0x27, 0x02, 0xFE, 0x9C, 0x1C, 0x3D, 0x8A, 0xD9, + 0x0C, 0x64, 0x98, 0xE1, 0x2C, 0x9F, 0x25, 0xE9, 0x0A, 0xB7, 0xA4, 0xE7, + 0xE1, 0x59, 0x51, 0x2A, 0xC0, 0xBF, 0x63, 0x80, 0xEE, 0x71, 0x25, 0xD2, + 0xCA, 0x3E, 0x23, 0xA2, 0x0A, 0x5D, 0x53, 0xD5, 0x38, 0xC6, 0x7E, 0xB2, + 0xD6, 0xA1, 0xB0, 0x1F, 0xD0, 0xDA, 0xA7, 0x59, 0x33, 0xF4, 0x43, 0x0A, + 0x9E, 0xCB, 0x95, 0x5C, 0x52, 0xD5, 0x34, 0x9E, 0x52, 0xAC, 0xC1, 0x36, + 0x84, 0x1F, 0x62, 0x1D, 0x86, 0xD6, 0xBD, 0x56, 0x9F, 0xCC, 0xAF, 0x30, + 0xC0, 0x39, 0x28, 0x22, 0xDB, 0xDA, 0xD5, 0x4C, 0x4F, 0x1B, 0x36, 0x1D, + 0x1D, 0xAC, 0xF4, 0x98, 0xF5, 0x46, 0x94, 0x32, 0x80, 0x2B, 0xF8, 0x14, + 0xF0, 0x68, 0x91, 0x1E, 0xF6, 0x72, 0x1C, 0x4A, 0xF9, 0xD6, 0xC2, 0xA6, + 0x3A, 0x85, 0xE9, 0xE1, 0x76, 0xB5, 0xA0, 0xEA, 0x46, 0x6A, 0x2C, 0xF8, + 0x8B, 0x8D, 0x0C, 0xD0, 0x1F, 0x4F, 0xD9, 0x38, 0x5B, 0xFE, 0x6E, 0x59, + 0xA3, 0xB8, 0xA4, 0x68, 0xED, 0x03, 0x4A, 0x06, 0xD3, 0xC1, 0xCD, 0x02, + 0x95, 0x24, 0x5C, 0x3D, 0x3B, 0xEC, 0x5A, 0x1C, 0x46, 0xD6, 0x1B, 0xA5, + 0x42, 0xFD, 0x2E, 0xE7, 0xEA, 0x42, 0x98, 0x42, 0x53, 0xB5, 0xD9, 0xCE, + 0x53, 0xC1, 0x8F, 0x83, 0x4D, 0xB2, 0xB6, 0x9F, 0x8F, 0xB1, 0x88, 0x4D, + 0x45, 0x3D, 0x08, 0x01, 0x9A, 0x28, 0x7B, 0x10, 0x97, 0x6C, 0x76, 0x44, + 0xE1, 0x07, 0x04, 0x51, 0x0E, 0x4A, 0xC7, 0x98, 0xED, 0x86, 0x17, 0x69, + 0x90, 0x14, 0xA9, 0xD8, 0xB7, 0x07, 0x28, 0x4A, 0x77, 0x0B, 0xF9, 0x3F, + 0x27, 0x4F, 0xCF, 0xA9, 0xDA, 0xCE, 0xC4, 0xDA, 0x30, 0x09, 0x56, 0x64, + 0x55, 0xCE, 0xD6, 0xEA, 0xE4, 0x85, 0x92, 0x95, 0x3E, 0x12, 0x5B, 0xF4, + 0x21, 0x91, 0xCB, 0xD9, 0xFB, 0xB7, 0x38, 0xBB, 0x1D, 0xFB, 0xAD, 0xE9, + 0x55, 0x40, 0x9D, 0xF3, 0x30, 0xC5, 0xA4, 0x9E, 0x02, 0xA8, 0x9B, 0x6E, + 0x30, 0x07, 0x32, 0x16, 0xD9, 0xEB, 0x85, 0x55, 0xC8, 0x38, 0xBC, 0x84, + 0x9A, 0x9D, 0x61, 0x1C, 0x0D, 0xF5, 0x07, 0x06, 0xC8, 0x0B, 0x73, 0xC1, + 0xB8, 0xD2, 0x84, 0xC2, 0xAF, 0xCA, 0xB2, 0x88, 0x0A, 0xE4, 0x79, 0x84, + 0x5C, 0x8B, 0xF7, 0xB6, 0xC4, 0x47, 0x92, 0xC9, 0xC1, 0xBD, 0xF6, 0x84, + 0x78, 0xC2, 0x74, 0xC3, 0xF8, 0x3C, 0x3F, 0xD6, 0x0E, 0x02, 0x5D, 0x22, + 0x42, 0x7D, 0xD3, 0xB8, 0xE9, 0xBB, 0x91, 0x36, 0x32, 0x81, 0xDD, 0x89, + 0xCD, 0x41, 0x00, 0x37, 0x4F, 0xA1, 0x48, 0x03, 0x2F, 0x3D, 0x54, 0x38, + 0x17, 0x7C, 0x51, 0x40, 0x9A, 0x41, 0x57, 0x3C, 0xF4, 0x5E, 0x0D, 0xF6, + 0xA4, 0xE4, 0xA2, 0x97, 0x30, 0x71, 0x40, 0xC3, 0x20, 0x88, 0xEE, 0x95, + 0x7A, 0xB9, 0x03, 0x9D, 0x54, 0x10, 0xD1, 0x5B, 0xBC, 0x6D, 0x79, 0xFE, + 0xF4, 0x44, 0x9C, 0xCB, 0x1E, 0xAF, 0x0C, 0x6B, 0xB7, 0x17, 0x60, 0x91, + 0x46, 0x1F, 0x9A, 0xA9, 0xD8, 0x84, 0x0D, 0x49, 0x60, 0x4A, 0x48, 0xDD, + 0x73, 0x1E, 0xDD, 0x17, 0xAD, 0xB8, 0x3C, 0x8A, 0xB3, 0xD3, 0x4C, 0x3C, + 0x97, 0xE3, 0xD0, 0x0A, 0x8D, 0x83, 0x7E, 0x3F, 0xE2, 0x03, 0xD1, 0xD3, + 0x93, 0xA3, 0xFF, 0x3B, 0x12, 0x65, 0x36, 0xF3, 0x27, 0xC1, 0x05, 0x27, + 0xA2, 0x03, 0x71, 0x7C, 0xBD, 0xEC, 0xDB, 0xE4, 0x3B, 0x33, 0x5F, 0x93, + 0xB5, 0x41, 0xAC, 0xF8, 0x6D, 0xD7, 0xCB, 0x06, 0x33, 0x9A, 0x25, 0x2E, + 0xF6, 0x2F, 0xF4, 0x34, 0x6F, 0x5A, 0x05, 0xDD, 0x04, 0x95, 0x33, 0x67, + 0x45, 0xD8, 0xD5, 0xD5, 0xEA, 0xC8, 0x2F, 0x9B, 0xC3, 0xBE, 0xED, 0xCA, + 0xC0, 0xCF, 0xB6, 0xFC, 0x7C, 0x88, 0x37, 0x1A, 0x7D, 0xDA, 0x9B, 0x0E, + 0xFC, 0x30, 0xD9, 0x17, 0xF3, 0x4C, 0x14, 0xF3, 0xDA, 0xF2, 0xCF, 0xCD, + 0x8A, 0x46, 0x23, 0xDA, 0x76, 0xC5, 0xF9, 0x06, 0xB9, 0x79, 0xD3, 0x1A, + 0xD2, 0xA8, 0x11, 0x03, 0x5D, 0x79, 0xA9, 0xA0, 0x93, 0x15, 0xC8, 0x27, + 0xC2, 0xD9, 0x7F, 0x78, 0x3E, 0x84, 0xD4, 0x37, 0x38, 0x52, 0x97, 0xD8, + 0x58, 0x67, 0x6A, 0x13, 0x00, 0x00, 0x20, 0xFB, 0xF2, 0xBD, 0x52, 0x71, + 0xE6, 0x1C, 0x6C, 0x99, 0xF6, 0xDE, 0x72, 0x89, 0xCC, 0x92, 0x57, 0x13, + 0x52, 0x04, 0x88, 0xE7, 0xA5, 0xBC, 0x36, 0x46, 0x3C, 0x03, 0x59, 0xFE, + 0x86, 0x99, 0xBC, 0x40, 0x70, 0xE9, 0xF1, 0xAA, 0xCC, 0x4E, 0x16, 0xD2, + 0x4B, 0x55, 0xC0, 0x42, 0x43, 0x3D, 0xF1, 0x1A, 0x38, 0xB9, 0x4F, 0x9E, + 0x31, 0x4E, 0x86, 0x08, 0x57, 0x95, 0x2D, 0xFB, 0xD7, 0x12, 0xC4, 0x11, + 0xC0, 0x5D, 0x00, 0xD0, 0xB5, 0x8D, 0xEA, 0x8F, 0x66, 0xD3, 0x00, 0x17, + 0x80, 0x1A, 0x54, 0x0F, 0xDE, 0x75, 0x40, 0xD5, 0x1B, 0x64, 0x89, 0x96, + 0xF9, 0x9A, 0x0D, 0x70, 0x26, 0x50, 0x31, 0x3A, 0x3C, 0x0F, 0x5E, 0xC8, + 0xA3, 0xB8, 0x5D, 0x72, 0xDC, 0xBA, 0xB2, 0xEF, 0x58, 0x89, 0x52, 0x55, + 0xF7, 0x9A, 0x17, 0xE7, 0x43, 0xC2, 0x0F, 0x3A, 0x16, 0x75, 0xEB, 0x48, + 0x87, 0x2A, 0xF8, 0x0E, 0xBA, 0xBB, 0x0D, 0xA2, 0x6C, 0x37, 0x71, 0x50, + 0xA4, 0xB8, 0x3F, 0x77, 0x2A, 0xDE, 0x12, 0x1B, 0x87, 0x39, 0x91, 0x40, + 0xA9, 0x62, 0x93, 0x87, 0x59, 0x8F, 0x1F, 0x9E, 0x27, 0xD6, 0x5F, 0xA9, + 0x45, 0x67, 0xBC, 0x8C, 0xE2, 0x84, 0x4C, 0x28, 0x0A, 0x7D, 0xBF, 0xC0, + 0x08, 0x1C, 0x72, 0x87, 0x93, 0xC4, 0xA5, 0x88, 0xFF, 0xD9, 0x29, 0x62, + 0xC9, 0x2F, 0x9D, 0x96, 0x44, 0x77, 0xC1, 0x9E, 0xF4, 0xDF, 0x37, 0x5D, + 0x05, 0x2F, 0xD8, 0x4A, 0x46, 0x5D, 0xB2, 0x0C, 0xBE, 0x28, 0xA4, 0x15, + 0x6B, 0xC0, 0xE4, 0x9A, 0xFB, 0xAE, 0xCB, 0x1F, 0x14, 0x3F, 0x63, 0x65, + 0x24, 0xD2, 0x49, 0x49, 0x90, 0x31, 0xBF, 0x6F, 0x4F, 0x83, 0xE0, 0xDB, + 0xF0, 0x0A, 0xA0, 0x7E, 0x45, 0x7F, 0x15, 0x86, 0x4A, 0x00, 0x06, 0x52, + 0xCE, 0x94, 0x81, 0x55, 0x48, 0x99, 0xF8, 0x2C, 0xD5, 0x18, 0x98, 0xF5, + 0xB7, 0x5C, 0x71, 0x11, 0x19, 0xAB, 0x7D, 0xAD, 0x35, 0x61, 0x2B, 0x00, + 0x00, 0x80, 0xF0, 0x33, 0xF2, 0x4A, 0x77, 0x44, 0xF2, 0x79, 0xA5, 0xE1, + 0x53, 0xEE, 0x84, 0x18, 0x8C, 0x1F, 0x43, 0xA5, 0xF6, 0xA7, 0x3E, 0x73, + 0x89, 0x42, 0x9B, 0x45, 0xA6, 0x23, 0x09, 0x8B, 0x28, 0x02, 0xF4, 0x52, + 0xBA, 0x2D, 0x9A, 0x3A, 0xBC, 0x50, 0x8A, 0x6D, 0xD4, 0x0D, 0x19, 0xAC, + 0x7F, 0x04, 0x99, 0xFC, 0x5C, 0x15, 0xD7, 0x30, 0x9E, 0xDE, 0xCB, 0x61, + 0x89, 0x54, 0x37, 0x6A, 0x9E, 0x21, 0x62, 0x5E, 0x28, 0x4E, 0xCE, 0x41, + 0x7D, 0x50, 0xFC, 0x99, 0xB0, 0x43, 0x86, 0x4A, 0xAD, 0x2C, 0x1C, 0xFC, + 0x36, 0xF4, 0x16, 0x8A, 0x23, 0x88, 0xB8, 0x32, 0xB0, 0x53, 0x3F, 0x50, + 0xDB, 0x04, 0x20, 0x91, 0x9C, 0xA9, 0x71, 0x57, 0xAB, 0x89, 0xE7, 0xA0, + 0xAF, 0x65, 0xE4, 0xDF, 0x19, 0x7D, 0x1C, 0x95, 0xEB, 0x76, 0x9A, 0x1E, + 0x89, 0xEE, 0x44, 0x2D, 0xCA, 0xAF, 0x63, 0x32, 0x1B, 0xA6, 0x0C, 0x0A, + 0xA0, 0x9D, 0x75, 0xFB, 0x98, 0x68, 0x44, 0xC7, 0x31, 0x4E, 0xA4, 0x39, + 0xE4, 0x74, 0xD6, 0xBB, 0xE4, 0x21, 0x6F, 0xAD, 0x57, 0x54, 0x2C, 0x9F, + 0x35, 0x01, 0xF1, 0x0A, 0xE1, 0x07, 0xF5, 0x61, 0x60, 0x0C, 0xF8, 0x9B, + 0x85, 0xE9, 0xC4, 0xBB, 0xBD, 0xEC, 0x45, 0x5B, 0xDD, 0x0B, 0xED, 0x0F, + 0x55, 0x54, 0x7B, 0x50, 0xDB, 0xC7, 0xAC, 0x05, 0x16, 0x5E, 0x55, 0x9C, + 0x83, 0xB2, 0x6D, 0x95, 0x59, 0x3B, 0xCA, 0xB5, 0x1B, 0x81, 0x4D, 0xC6, + 0xC3, 0x8B, 0x20, 0x95, 0x5C, 0xE6, 0x03, 0xBF, 0xF8, 0xA7, 0x16, 0x8B, + 0x49, 0x63, 0xDD, 0x71, 0x15, 0x8B, 0x66, 0xA2, 0xAB, 0x47, 0x06, 0x74, + 0xB5, 0xA8, 0xC4, 0x49, 0x31, 0x4F, 0xFF, 0x08, 0x08, 0xB2, 0x2F, 0x9E, + 0x6D, 0x13, 0xDD, 0xCB, 0x53, 0xB0, 0x47, 0x61, 0x49, 0x47, 0x10, 0xFF, + 0x87, 0xB0, 0x10, 0xD9, 0x21, 0xBD, 0x0F, 0x03, 0x98, 0x3B, 0x07, 0xC5, + 0xC4, 0x65, 0x39, 0x76, 0xCC, 0x44, 0x60, 0xCC, 0x79, 0x7B, 0x56, 0x37, + 0xFE, 0x31, 0xBB, 0xFB, 0x88, 0x82, 0xCD, 0xA4, 0xA0, 0xED, 0x2F, 0x0A, + 0xF8, 0x74, 0x4A, 0x6F, 0xC3, 0xB9, 0x11, 0x76, 0x0A, 0xEA, 0x0F, 0x1C, + 0xFC, 0x6A, 0x49, 0x6A, 0x39, 0x32, 0xF8, 0x5C, 0x40, 0x1A, 0xA5, 0xED, + 0x72, 0x58, 0x6B, 0xD6, 0xA3, 0x53, 0x11, 0x82, 0xB8, 0x78, 0x85, 0x38, + 0xD8, 0xFD, 0x18, 0x8B, 0xDF, 0x0E, 0x62, 0xAF, 0x6B, 0xE4, 0x5F, 0x43, + 0x55, 0x53, 0xB7, 0xAA, 0x43, 0x33, 0x89, 0xA8, 0x67, 0x6E, 0xD8, 0x0A, + 0xCC, 0x1F, 0x89, 0xDA, 0xA4, 0x16, 0xA2, 0xE0, 0xBA, 0xF5, 0x20, 0x10, + 0x05, 0x42, 0x00, 0xAD, 0x39, 0x49, 0xE9, 0x3D, 0x0A, 0xDF, 0x7E, 0x65, + 0x14, 0xAF, 0xA8, 0x5E, 0xD9, 0xC2, 0x16, 0x4F, 0x07, 0x18, 0xA0, 0xAD, + 0x2C, 0xD8, 0x19, 0x6D, 0x11, 0x93, 0x63, 0xD7, 0x6D, 0x05, 0xA9, 0xDB, + 0xBA, 0x02, 0xC8, 0x10, 0x6A, 0xA5, 0x4F, 0x35, 0xC4, 0x35, 0x74, 0xC5, + 0xBF, 0x40, 0x71, 0x92, 0xDB, 0x26, 0xB6, 0xEB, 0xD8, 0x17, 0x34, 0x95, + 0xEE, 0x3A, 0xF6, 0x30, 0x48, 0x6C, 0xAD, 0x88, 0x82, 0x22, 0x48, 0x9B, + 0xA3, 0xDE, 0x5A, 0x47, 0xEB, 0x80, 0x4C, 0x70, 0xFF, 0x7B, 0x7C, 0xD9, + 0xD7, 0x7E, 0x08, 0x74, 0x8F, 0xC5, 0x14, 0xBC, 0xC0, 0x4B, 0xF2, 0x3F, + 0xFF, 0x52, 0xBC, 0x23, 0xFB, 0x30, 0xA9, 0x2E, 0x7A, 0x93, 0x16, 0x73, + 0x99, 0xF4, 0xE5, 0xB7, 0x5F, 0x01, 0xDD, 0x96, 0x1A, 0xDB, 0x36, 0x74, + 0xBE, 0xD4, 0xAB, 0xE2, 0x16, 0x24, 0xB2, 0x0E, 0x36, 0x46, 0x36, 0x8C, + 0x92, 0xB7, 0x79, 0x5E, 0x83, 0x37, 0x6A, 0x1A, 0x15, 0xCE, 0x6D, 0x61, + 0xEA, 0x9D, 0xE6, 0x65, 0x27, 0xD7, 0xB3, 0xF4, 0x6D, 0x55, 0xB8, 0xC0, + 0x42, 0x4C, 0xE8, 0x36, 0x1A, 0x0A, 0x21, 0x68, 0xB3, 0x17, 0xB1, 0xEA, + 0x8D, 0x5C, 0x50, 0xBE, 0xC4, 0x49, 0xC5, 0x7D, 0x19, 0x83, 0xF8, 0x02, + 0x78, 0xAE, 0x3A, 0x5A, 0xB9, 0xA3, 0xA2, 0x0E, 0xCC, 0x10, 0x36, 0x49, + 0x84, 0x44, 0xA3, 0xFE, 0x5B, 0x56, 0x5C, 0x13, 0x43, 0xDD, 0x90, 0x29, + 0x67, 0x9B, 0x3E, 0xD3, 0x9B, 0x68, 0xA7, 0xAE, 0x52, 0x9C, 0x38, 0xF8, + 0xF1, 0x10, 0xB7, 0x19, 0x75, 0x43, 0x27, 0x75, 0x7F, 0x32, 0x40, 0x40, + 0xDB, 0xD2, 0x71, 0x35, 0x45, 0x6C, 0x5B, 0x47, 0x84, 0x57, 0x49, 0x75, + 0xEB, 0x75, 0xDE, 0x93, 0xB2, 0xA7, 0x99, 0x65, 0xB1, 0x34, 0xA7, 0xB7, + 0x67, 0x21, 0x95, 0x56, 0x28, 0xF4, 0x16, 0xF6, 0xA5, 0x86, 0x04, 0x65, + 0x44, 0x48, 0xDE, 0x02, 0xE4, 0x08, 0x6F, 0x57, 0xA3, 0xE1, 0x45, 0x68, + 0xC2, 0x9C, 0x96, 0xFD, 0xCB, 0x5B, 0x1D, 0xDF, 0xB5, 0x52, 0xAC, 0xB4, + 0xE4, 0x2D, 0x33, 0x76, 0x3C, 0x55, 0x8A, 0xD7, 0xD9, 0x65, 0xBD, 0x44, + 0x27, 0x4F, 0x7B, 0x48, 0x05, 0xD5, 0x3D, 0xB8, 0x87, 0x7E, 0x49, 0xE6, + 0x99, 0x12, 0x27, 0xDA, 0x8E, 0xC9, 0x49, 0x4F, 0xFC, 0x61, 0xD4, 0x8C, + 0x63, 0xD1, 0x25, 0x8B, 0x09, 0xA1, 0x21, 0x96, 0xDC, 0xFF, 0x7A, 0x5F, + 0x99, 0xBE, 0xBC, 0x04, 0x0B, 0xD1, 0x0E, 0x44, 0xCE, 0x2C, 0xA1, 0x3C, + 0x8F, 0x49, 0xD9, 0xA1, 0xD4, 0x4D, 0x8E, 0x2B, 0x3E, 0xB4, 0x2F, 0x59, + 0xDB, 0x71, 0x8A, 0xA5, 0x85, 0xD8, 0x31, 0x6A, 0xD3, 0xEE, 0xBD, 0x32, + 0x9D, 0xCA, 0x55, 0x19, 0x6A, 0x7F, 0x43, 0xE0, 0x5B, 0x91, 0x14, 0x4B, + 0x0C, 0xD2, 0xA1, 0xDA, 0xE8, 0x73, 0xF1, 0x24, 0xB9, 0xEA, 0x69, 0x77, + 0xE4, 0x2A, 0x7D, 0xC4, 0xD2, 0xB0, 0x7F, 0xAB, 0x28, 0xB1, 0xD0, 0x34, + 0xF1, 0x89, 0x18, 0x57, 0xB0, 0x65, 0x50, 0x3D, 0x5E, 0x81, 0xE5, 0xEE, + 0xBF, 0xD1, 0x58, 0x1E, 0xC6, 0xA1, 0xCF, 0xD7, 0x31, 0x4A, 0x5D, 0x78, + 0xC6, 0xED, 0x7F, 0xCC, 0xC4, 0xBD, 0xFB, 0x6D, 0xF6, 0xEE, 0x26, 0xF7, + 0xA6, 0xBE, 0x08, 0x6A, 0xAD, 0x03, 0x24, 0xE0, 0x79, 0x24, 0xD0, 0xC1, + 0xE9, 0x9A, 0xAF, 0x94, 0x3F, 0x10, 0x2E, 0xC8, 0x93, 0x34, 0x08, 0x70, + 0xFF, 0x2F, 0x32, 0x66, 0xAF, 0x19, 0xFD, 0xFE, 0xEC, 0x24, 0x44, 0x79, + 0x30, 0x41, 0x21, 0x49, 0xC0, 0xEF, 0x30, 0x59, 0xC5, 0x5B, 0xBA, 0x04, + 0xAB, 0x03, 0x2F, 0x50, 0x55, 0xF5, 0x48, 0x9F, 0x46, 0x98, 0xF3, 0xC1, + 0xDC, 0xFE, 0x8F, 0xE9, 0x59, 0x9F, 0x49, 0xB6, 0x6D, 0x53, 0x9F, 0x05, + 0x3E, 0xED, 0xCE, 0xAE, 0x4F, 0xE8, 0x38, 0xE6, 0x0F, 0x55, 0x96, 0xD2, + 0x53, 0x72, 0x6C, 0x80, 0x78, 0xFB, 0x7C, 0xDD, 0xD0, 0x2E, 0x23, 0x1B, + 0x65, 0x08, 0xF2, 0x76, 0x7C, 0x34, 0x6A, 0xDC, 0xA0, 0xFB, 0xEC, 0xDF, + 0x45, 0x1C, 0x53, 0x6B, 0xFD, 0x2C, 0x96, 0x3D, 0xF4, 0x29, 0x4C, 0xF8, + 0x92, 0x9E, 0xC4, 0x6B, 0x97, 0xCD, 0x16, 0x4D, 0xAB, 0xBC, 0x12, 0xED, + 0x32, 0x8C, 0xAA, 0x94, 0xEC, 0x3E, 0xF2, 0xEC, 0x24, 0x35, 0xD0, 0x97, + 0xC9, 0x1E, 0x4C, 0x57, 0xF3, 0xC5, 0x3D, 0xE9, 0x11, 0x6B, 0xB0, 0x66, + 0xB4, 0x45, 0xE4, 0x4C, 0xE3, 0x5C, 0xFA, 0x24, 0x0F, 0x70, 0x09, 0xB5, + 0xF5, 0x5B, 0x80, 0xBD, 0x0B, 0x14, 0xB4, 0xF5, 0x9B, 0x51, 0x10, 0x6D, + 0xB8, 0x29, 0x6F, 0x74, 0x89, 0x89, 0x0E, 0x26, 0x08, 0xBF, 0x3E, 0xC2, + 0xD5, 0x30, 0x1D, 0xAC, 0x33, 0x19, 0x10, 0x32, 0x5E, 0xCB, 0x9A, 0x50, + 0x52, 0xB4, 0x8F, 0xC8, 0xA1, 0x44, 0xB8, 0x2E, 0x8B, 0x0D, 0x67, 0x1E, + 0x8F, 0x31, 0x03, 0x99, 0x96, 0xB2, 0x76, 0xF2, 0xC7, 0xDF, 0xC3, 0x55, + 0x52, 0xE3, 0x17, 0xF1, 0xDF, 0x75, 0x60, 0xB0, 0x48, 0xF8, 0xC1, 0xDC, + 0xB2, 0xFC, 0x8A, 0x17, 0x6A, 0xED, 0x58, 0x33, 0x02, 0x24, 0x07, 0x86, + 0xD4, 0xC0, 0xD9, 0x96, 0x3E, 0x05, 0x10, 0x78, 0x5D, 0x69, 0x56, 0x7F, + 0x1D, 0x08, 0x20, 0x49, 0x6E, 0x4F, 0x2A, 0x0B, 0xE6, 0xFD, 0x1E, 0x32, + 0x08, 0x07, 0x62, 0xA7, 0x9C, 0xD5, 0x34, 0xF0, 0x37, 0x13, 0x8E, 0x43, + 0x10, 0x9D, 0xF9, 0x51, 0x38, 0xBB, 0x5F, 0x61, 0x0A, 0x18, 0xD4, 0xA4, + 0xFB, 0x60, 0x93, 0xED, 0x0A, 0x6F, 0x99, 0x89, 0xD6, 0x63, 0x5C, 0x15, + 0x6F, 0x93, 0xD8, 0xB1, 0xF2, 0x95, 0x11, 0xDE, 0x20, 0xA2, 0xEE, 0x1E, + 0x84, 0xDA, 0x3F, 0xF1, 0xE6, 0x10, 0xA4, 0xA8, 0x2F, 0xF1, 0x6E, 0x2A, + 0x07, 0x4D, 0x8D, 0xE6, 0x39, 0x96, 0x8A, 0xCC, 0x00, 0x33, 0x3F, 0x0C, + 0x77, 0x5F, 0x2A, 0x85, 0x25, 0x29, 0x1E, 0xF6, 0x65, 0x0F, 0x2D, 0x5E, + 0x05, 0xBF, 0x3C, 0x0E, 0x0A, 0x17, 0x98, 0xB8, 0xA4, 0x49, 0x28, 0xA9, + 0x3B, 0xED, 0xCE, 0xF3, 0x7E, 0xB6, 0x38, 0x66, 0x0A, 0x31, 0x42, 0xC7, + 0x2E, 0x40, 0x63, 0x16, 0xA7, 0x80, 0xE8, 0x19, 0x3A, 0x61, 0xC7, 0x84, + 0xBE, 0x89, 0x59, 0xD0, 0x23, 0xD9, 0xAA, 0x84, 0x2A, 0x26, 0x53, 0x32, + 0x0D, 0x6B, 0xBC, 0xBF, 0xAD, 0xE1, 0x03, 0x5F, 0x4A, 0xC7, 0x5F, 0x03, + 0x88, 0x0B, 0x8F, 0x7A, 0x53, 0xF8, 0xCC, 0x92, 0xAD, 0x57, 0x04, 0xD8, + 0xC9, 0x9F, 0x51, 0xB7, 0x9C, 0x6A, 0xAB, 0x45, 0x27, 0x0F, 0xC6, 0x21, + 0xBE, 0x01, 0x43, 0x8F, 0x0C, 0x54, 0xDD, 0xAF, 0xF6, 0xFB, 0x32, 0xA3, + 0x95, 0xCC, 0x09, 0xBC, 0x98, 0xAD, 0xEF, 0xA8, 0xC5, 0x3F, 0x47, 0xF7, + 0x46, 0xBF, 0x2C, 0xF6, 0x05, 0xFB, 0xC8, 0xE8, 0x56, 0x2C, 0x50, 0x89, + 0xDF, 0x14, 0x67, 0xE0, 0xD4, 0x41, 0x12, 0x82, 0xD1, 0x94, 0x75, 0x00, + 0x3E, 0xF9, 0x4F, 0xCB, 0x20, 0x9A, 0x62, 0x16, 0xB4, 0x50, 0xB6, 0x63, + 0x3A, 0x9C, 0x91, 0x3C, 0xBC, 0x0F, 0x6A, 0xB0, 0xE5, 0x2E, 0xD7, 0xEA, + 0xE7, 0x85, 0xA3, 0xD9, 0xB0, 0xAB, 0x8C, 0x83, 0x69, 0x62, 0x43, 0x56, + 0x1E, 0xDD, 0xA1, 0x55, 0x86, 0x7F, 0x1F, 0xCB, 0x1F, 0xA4, 0xF2, 0x57, + 0xCE, 0xB0, 0xA2, 0x1D, 0xFA, 0x17, 0x43, 0x46, 0xF7, 0xFD, 0xA3, 0x72, + 0xFC, 0x5C, 0xBC, 0x96, 0xA9, 0xB3, 0x39, 0xB9, 0x54, 0xD3, 0x75, 0x11, + 0x78, 0xAD, 0x05, 0x61, 0x0A, 0xB6, 0x7E, 0x94, 0xCB, 0x36, 0x2F, 0x00, + 0xEA, 0xCA, 0xEA, 0x5F, 0x09, 0xE8, 0xDF, 0x98, 0xA0, 0xFE, 0x8B, 0x9A, + 0xCB, 0x5E, 0xFC, 0x4E, 0xD8, 0x30, 0x91, 0x97, 0x95, 0x92, 0x9E, 0x55, + 0xAB, 0x45, 0x4A, 0x0F, 0xDD, 0xFF, 0x73, 0x4E, 0x0C, 0xC3, 0x62, 0x13, + 0x3A, 0xC9, 0xB5, 0xEF, 0x85, 0xD1, 0x4D, 0xB3, 0x7B, 0xD5, 0xA5, 0x33, + 0xAF, 0x9D, 0xBC, 0x47, 0xE3, 0x1E, 0xC8, 0x97, 0xF4, 0xAF, 0xE0, 0x96, + 0x82, 0x8D, 0x3E, 0xD9, 0xBE, 0x1E, 0xDB, 0x04, 0xA6, 0x38, 0xE7, 0x6F, + 0x8F, 0xC1, 0xC7, 0x67, 0x0F, 0x50, 0x42, 0xCE, 0x1F, 0x42, 0xCA, 0x2C, + 0x52, 0xA0, 0xEC, 0xB2, 0x02, 0x56, 0x37, 0x3B, 0x95, 0x70, 0x0F, 0x03, + 0x33, 0x61, 0xE7, 0xDD, 0x6A, 0x0A, 0x0A, 0x27, 0x8C, 0x0E, 0x18, 0xF0, + 0x39, 0x83, 0x87, 0x12, 0x18, 0x2B, 0x53, 0xF4, 0x41, 0x01, 0x52, 0xCF, + 0xC7, 0xBE, 0x4A, 0x1B, 0x3B, 0x77, 0xCD, 0xF2, 0xE1, 0x4D, 0xC5, 0x78, + 0x4E, 0x93, 0x9B, 0xBD, 0xD6, 0xFA, 0xBF, 0x60, 0x48, 0x76, 0x19, 0x3F, + 0x22, 0xAB, 0xA8, 0x84, 0xA0, 0xA7, 0x9E, 0x40, 0xE3, 0xA4, 0x86, 0xF1, + 0x4F, 0x35, 0x7F, 0xE9, 0xAD, 0x6F, 0x43, 0x62, 0x4E, 0x9B, 0x91, 0xD7, + 0x3B, 0x6C, 0x1A, 0x51, 0x67, 0xDB, 0x18, 0x51, 0x9C, 0x8E, 0xB0, 0xB2, + 0xE2, 0x45, 0xB5, 0x48, 0x11, 0x03, 0x5C, 0xF3, 0x3A, 0xCD, 0x43, 0x14, + 0x40, 0xFC, 0x72, 0x8E, 0x44, 0xF0, 0xE6, 0xF7, 0x69, 0xD3, 0xC2, 0xF9, + 0x5A, 0xC7, 0x68, 0xB3, 0xA0, 0x74, 0x94, 0x12, 0xEA, 0x5F, 0xF4, 0x93, + 0x2A, 0x9B, 0x71, 0xF5, 0x19, 0x87, 0x98, 0xC2, 0x04, 0xC0, 0x52, 0xC7, + 0x2C, 0x26, 0xC1, 0x93, 0xDD, 0xB1, 0xB2, 0xA8, 0x68, 0xF7, 0xE3, 0xCE, + 0x20, 0x8E, 0x02, 0xBF, 0x05, 0x08, 0xBD, 0x53, 0xD1, 0x31, 0x30, 0xD7, + 0xF2, 0x7B, 0x15, 0xCB, 0x10, 0x47, 0x7B, 0x66, 0xEE, 0x63, 0x44, 0x21, + 0xAD, 0xD7, 0xDC, 0xD9, 0x61, 0xCB, 0xC7, 0x71, 0x87, 0x06, 0xEB, 0xE0, + 0x6B, 0x7D, 0x4E, 0x01, 0x05, 0x0A, 0xDC, 0x8F, 0xF0, 0x40, 0xA7, 0xDF, + 0x18, 0xD6, 0x71, 0x2C, 0x2E, 0x81, 0x05, 0x95, 0x48, 0x26, 0x52, 0xBB, + 0x9F, 0x7D, 0xD0, 0x51, 0x28, 0xA5, 0x7F, 0x9F, 0xC5, 0x38, 0x39, 0x3A, + 0xDE, 0x1E, 0x53, 0x2F, 0x08, 0x19, 0xE0, 0x56, 0x83, 0x28, 0xB2, 0x5C, + 0xB4, 0xEF, 0x35, 0x90, 0xE0, 0xE0, 0x54, 0xCC, 0xE6, 0xA7, 0xB4, 0x83, + 0x5E, 0xC0, 0xC4, 0xBE, 0x46, 0x33, 0x14, 0xB1, 0x09, 0xBB, 0xD2, 0xB3, + 0xDB, 0xE9, 0xAC, 0x62, 0xEF, 0x52, 0x42, 0x82, 0x5D, 0x99, 0x8E, 0xFD, + 0x28, 0xA8, 0xB6, 0xAA, 0xC6, 0x68, 0x58, 0xDF, 0x87, 0x10, 0x32, 0xD9, + 0xB1, 0xA7, 0x49, 0x76, 0x2D, 0x40, 0xDD, 0x6D, 0xB3, 0x67, 0x4C, 0x59, + 0xC4, 0x5C, 0x66, 0x74, 0xBE, 0x13, 0xC5, 0x19, 0x92, 0x23, 0x3F, 0x81, + 0x74, 0xB1, 0x9A, 0x65, 0x5D, 0xDD, 0x24, 0x7E, 0x6F, 0x3B, 0xF1, 0x45, + 0x56, 0x9D, 0x66, 0xB2, 0x8B, 0xD6, 0x89, 0xE3, 0xF7, 0xD7, 0xDD, 0x44, + 0x6F, 0x41, 0x52, 0x43, 0x66, 0xE0, 0xB1, 0x18, 0x37, 0xFE, 0xE4, 0x95, + 0x26, 0x71, 0x29, 0x7D, 0xC5, 0x7A, 0x4A, 0x6B, 0xB0, 0xB1, 0x3B, 0xF2, + 0xFA, 0x67, 0x1D, 0x57, 0xBE, 0x51, 0xF0, 0x76, 0x37, 0x45, 0x65, 0xF3, + 0x30, 0x75, 0x0C, 0x26, 0xD5, 0x6E, 0x7A, 0xBD, 0xB5, 0x31, 0xE7, 0x30, + 0x14, 0x50, 0x64, 0xB8, 0x3C, 0x89, 0x43, 0xF1, 0x32, 0x7C, 0x45, 0xE3, + 0xD8, 0x52, 0xF2, 0x00, 0xD4, 0x8D, 0x76, 0xD4, 0xE6, 0x4C, 0x6D, 0x98, + 0x7D, 0x56, 0x37, 0x15, 0x1B, 0x0F, 0x75, 0x66, 0x88, 0x29, 0xDF, 0xFB, + 0xBF, 0x99, 0x51, 0x46, 0xDA, 0x20, 0xB4, 0xD1, 0xB8, 0x0D, 0xE1, 0xA8, + 0x82, 0x2C, 0x69, 0x7C, 0x93, 0xE7, 0x51, 0x3E, 0x0F, 0x25, 0xDE, 0x25, + 0x2F, 0x8D, 0x28, 0x4C, 0xAF, 0x35, 0x4F, 0x1C, 0x6B, 0x4B, 0x43, 0xC9, + 0x82, 0xAA, 0x5C, 0x31, 0xF6, 0x4D, 0x9F, 0x3B, 0x17, 0x25, 0x21, 0x0D, + 0xE4, 0x81, 0x49, 0xD3, 0x02, 0xED, 0xEE, 0x73, 0xCD, 0x54, 0xBD, 0xF1, + 0x0E, 0x31, 0x5E, 0x49, 0x13, 0xFE, 0xAA, 0xFF, 0x5D, 0x77, 0x65, 0x3D, + 0x9A, 0x62, 0xDE, 0x52, 0x4F, 0x4E, 0x5C, 0xA6, 0xA2, 0xEA, 0xA0, 0x85, + 0x69, 0x6F, 0x64, 0x30, 0x71, 0xD7, 0xE0, 0x5F, 0xF0, 0xDF, 0xB7, 0xFC, + 0x93, 0x08, 0xDA, 0x58, 0xAA, 0x53, 0x10, 0x3E, 0x2F, 0x47, 0x48, 0x11, + 0xC7, 0x02, 0xB1, 0xB0, 0x25, 0x46, 0x83, 0x88, 0x5D, 0xF8, 0xBB, 0x43, + 0x00, 0x91, 0x84, 0x8E, 0x80, 0xF1, 0xE8, 0xE8, 0x90, 0xE4, 0xC8, 0x4A, + 0x11, 0xA0, 0x92, 0xAA, 0x7E, 0xA5, 0xCA, 0xA7, 0xB6, 0x22, 0x9A, 0xB1, + 0x55, 0x8E, 0x6D, 0xE5, 0x47, 0xD6, 0x2E, 0x58, 0x42, 0xCB, 0xC4, 0x19, + 0xB5, 0xFF, 0xAB, 0xB1, 0x8F, 0x2A, 0x81, 0x94, 0x19, 0x91, 0xDA, 0x3A, + 0x3C, 0xBB, 0x74, 0x8E, 0x84, 0x07, 0xD3, 0x3B, 0x6A, 0x5E, 0xD0, 0x4D, + 0xD1, 0xA0, 0xD6, 0x5B, 0x32, 0x7F, 0x92, 0xCC, 0x5E, 0xDF, 0xCE, 0x88, + 0xCD, 0x2B, 0x6A, 0x4B, 0x3D, 0x68, 0x75, 0x7A, 0xB0, 0xF1, 0x36, 0x1B, + 0xCA, 0x96, 0xFB, 0xE3, 0x77, 0x9B, 0x38, 0x83, 0x2E, 0xDD, 0x4C, 0x53, + 0x35, 0x85, 0xC2, 0xE3, 0xCF, 0xA2, 0xF3, 0x85, 0x44, 0xA1, 0xB2, 0x9B, + 0x0F, 0xE9, 0x2A, 0x82, 0xD5, 0xB3, 0xC3, 0xF1, 0x2B, 0xE8, 0x1B, 0x2C, + 0xFF, 0x7D, 0x3C, 0xC9, 0x24, 0x24, 0x35, 0xC8, 0x43, 0x10, 0x2A, 0x92, + 0x53, 0x29, 0x1D, 0x71, 0xB8, 0xFD, 0x7E, 0x18, 0x9B, 0xBA, 0x5F, 0x43, + 0x9F, 0x8C, 0x35, 0xB6, 0x0D, 0x93, 0xC1, 0xA7, 0xB9, 0x2A, 0x05, 0xEB, + 0x59, 0xB4, 0xA1, 0x94, 0x6C, 0x8B, 0xD3, 0x82, 0xD3, 0xFF, 0xA7, 0x36, + 0x8C, 0x79, 0x8D, 0xB9, 0x11, 0x04, 0x78, 0x49, 0xA8, 0xBE, 0x76, 0x7C, + 0xAE, 0x9C, 0xD8, 0x26, 0x4C, 0x12, 0x07, 0x45, 0xE3, 0x39, 0x7A, 0xED, + 0xFD, 0x1E, 0xC1, 0xC2, 0xBB, 0x90, 0xB2, 0xA7, 0x7A, 0xDC, 0x65, 0x4E, + 0x99, 0x73, 0x80, 0xF8, 0x9B, 0x6F, 0x93, 0x76, 0x18, 0x7D, 0x69, 0x75, + 0xA9, 0xB0, 0x42, 0xD9, 0xEB, 0x21, 0xF5, 0x0B, 0x33, 0x47, 0xDD, 0xB4, + 0xC1, 0x36, 0xDA, 0x6B, 0x82, 0xE1, 0x5B, 0x21, 0xA1, 0xB7, 0x8A, 0x29, + 0x73, 0x64, 0x06, 0xC9, 0x0A, 0x67, 0x82, 0xCD, 0xD2, 0xC9, 0x5C, 0x62, + 0x75, 0x03, 0x1A, 0xD7, 0x32, 0xFE, 0x84, 0x4E, 0xB6, 0xCF, 0x97, 0x0D, + 0x6C, 0x12, 0x0A, 0x57, 0xC3, 0xF2, 0x87, 0x6C, 0x1D, 0x05, 0x39, 0x0C, + 0xC9, 0xDB, 0xA8, 0xE5, 0x2E, 0x6A, 0xE0, 0xAB, 0xD1, 0x1C, 0xCC, 0x16, + 0xFE, 0xB7, 0x49, 0x3C, 0xC0, 0xCB, 0x43, 0x63, 0x74, 0x89, 0xD8, 0xB6, + 0xC0, 0x69, 0x80, 0xF4, 0x8E, 0x84, 0xE0, 0x10, 0x61, 0x3E, 0xF4, 0x04, + 0xB5, 0x04, 0x37, 0xA4, 0x23, 0x33, 0xD8, 0x3C, 0x35, 0x26, 0xC9, 0xF6, + 0x06, 0x85, 0x5B, 0xC2, 0x8F, 0x53, 0xBA, 0x46, 0xDE, 0x4C, 0x7A, 0xCD, + 0x8F, 0xF9, 0x31, 0x8A, 0x21, 0xD9, 0xDF, 0x0C, 0x2A, 0xC4, 0xF0, 0x1F, + 0xF1, 0x37, 0xD1, 0x1F, 0xA5, 0x21, 0x27, 0xE8, 0x2B, 0xA6, 0xB6, 0x89, + 0x34, 0xF4, 0xF3, 0x7C, 0x24, 0x0E, 0xA6, 0xDB, 0xB3, 0x9D, 0x60, 0x29, + 0x3A, 0xC7, 0xD6, 0xAE, 0xE7, 0x95, 0xBF, 0x30, 0x11, 0xA4, 0x77, 0xCC, + 0x7C, 0xE7, 0x96, 0x7E, 0xAC, 0xFC, 0xFA, 0xFD, 0x41, 0xAA, 0x0C, 0x6C, + 0x53, 0x56, 0xB6, 0x55, 0x7E, 0xC3, 0xB4, 0x82, 0x4B, 0xC0, 0x4A, 0xFE, + 0xF7, 0x5F, 0xD1, 0xAB, 0xD8, 0x89, 0x00, 0x44, 0xAA, 0xB1, 0x62, 0xEF, + 0xD6, 0x7F, 0x1B, 0x7B, 0x22, 0x48, 0xEA, 0x00, 0x53, 0x49, 0xA7, 0xCD, + 0xA6, 0x7B, 0x61, 0xE3, 0xDD, 0xFC, 0xBF, 0xB7, 0xB0, 0xCB, 0xAE, 0xAC, + 0xDE, 0x9B, 0x98, 0xC8, 0x86, 0x7C, 0xB2, 0xFB, 0xED, 0x75, 0xA4, 0x30, + 0xBF, 0x8A, 0x52, 0x95, 0x7E, 0xCF, 0x4B, 0x28, 0xF2, 0xA2, 0x2F, 0xB9, + 0xA2, 0x24, 0x93, 0xA3, 0x84, 0xCB, 0x2C, 0xC0, 0x7D, 0x2F, 0x6E, 0x35, + 0x33, 0x1B, 0x0F, 0x6E, 0xFF, 0x32, 0x92, 0x09, 0x17, 0x31, 0xE4, 0xFC, + 0x2C, 0x6A, 0x93, 0x1B, 0xFA, 0xA4, 0x87, 0x04, 0x9D, 0x1E, 0xCC, 0xC1, + 0xD4, 0x40, 0x83, 0x21, 0xB3, 0x5F, 0x3F, 0x68, 0x9C, 0x37, 0x68, 0x47, + 0x6A, 0x21, 0x98, 0xBC, 0x95, 0x50, 0xBE, 0xF7, 0xD4, 0x72, 0x20, 0x70, + 0x12, 0x4F, 0xCB, 0x77, 0xBF, 0x68, 0x5A, 0xCE, 0xB5, 0x13, 0xC6, 0x25, + 0x30, 0x75, 0xA4, 0xF6, 0xE9, 0xDC, 0xF5, 0xC2, 0xB0, 0x57, 0x55, 0xC3, + 0x69, 0xE5, 0xF1, 0xB9, 0xAE, 0x55, 0x69, 0x56, 0x5A, 0xBC, 0xCE, 0x0F, + 0x11, 0x32, 0x2A, 0xE9, 0x7E, 0x40, 0x40, 0xCC, 0xDD, 0x04, 0x62, 0x8B, + 0x3B, 0x57, 0xE5, 0x45, 0xCB, 0xEE, 0xF0, 0x3D, 0x6A, 0xAC, 0xDD, 0x83, + 0x7C, 0x2F, 0x66, 0x9A, 0x6C, 0x3B, 0xD1, 0x80, 0x85, 0xE6, 0xE7, 0xEA, + 0xE0, 0x89, 0x19, 0x0E, 0x5A, 0xDE, 0x7E, 0x8F, 0x6C, 0x05, 0xB3, 0xA5, + 0x89, 0x08, 0x45, 0x60, 0xA5, 0xE0, 0xB8, 0xD1, 0x7D, 0x45, 0xB6, 0x23, + 0x19, 0x84, 0x6A, 0xC2, 0x33, 0xD2, 0xD8, 0x9A, 0x87, 0xD0, 0xF4, 0xED, + 0x06, 0x11, 0x08, 0xF1, 0xF2, 0x92, 0xA5, 0x4D, 0xF6, 0xE7, 0xBF, 0x8E, + 0x3D, 0x01, 0x60, 0x50, 0xC0, 0x4F, 0xBB, 0x37, 0xAA, 0x8E, 0xE4, 0x81, + 0x9F, 0xBD, 0xDD, 0xA0, 0xA1, 0x00, 0xD8, 0x5C, 0x55, 0xB0, 0xCF, 0x39, + 0xEF, 0xA0, 0xE1, 0x4F, 0xA7, 0x5D, 0x46, 0x85, 0x11, 0x98, 0x8F, 0x9E, + 0xEB, 0x16, 0x0D, 0xF7, 0x0F, 0xEE, 0x9F, 0xBD, 0x22, 0x87, 0x0B, 0x10, + 0x0B, 0x9E, 0x4D, 0xC1, 0x5F, 0x82, 0xFA, 0xED, 0xCC, 0xAC, 0xB4, 0x62, + 0xCA, 0x57, 0x8B, 0xE7, 0x60, 0x5B, 0xCF, 0x9B, 0x78, 0xFB, 0x8D, 0x10, + 0xCD, 0x33, 0x68, 0x19, 0x25, 0x00, 0xCB, 0xD1, 0x13, 0xB4, 0xA3, 0x21, + 0x07, 0x5C, 0xED, 0xC5, 0xBB, 0xFA, 0x60, 0x8C, 0xB7, 0xD4, 0x41, 0x39, + 0x2D, 0x9E, 0x69, 0x3E, 0xC8, 0x25, 0x34, 0xA4, 0x5B, 0x52, 0xB3, 0xBD, + 0x33, 0xC9, 0x74, 0x7B, 0x7D, 0x46, 0x61, 0x9D, 0x9F, 0x28, 0xBC, 0xE6, + 0x53, 0xD3, 0xEA, 0x5E, 0xEF, 0xE3, 0x2E, 0xE8, 0x76, 0x68, 0x75, 0x80, + 0x98, 0x78, 0x9F, 0x20, 0xF8, 0x50, 0xB7, 0xA1, 0x88, 0x0C, 0x0B, 0xD6, + 0xF4, 0x84, 0x7C, 0xA5, 0x7D, 0xEE, 0xBB, 0xD6, 0x47, 0x30, 0x89, 0x5C, + 0xF6, 0xF3, 0x9F, 0x83, 0x56, 0xB5, 0x47, 0xCD, 0x9F, 0xD6, 0x50, 0x7A, + 0xD2, 0xE5, 0x3C, 0x36, 0x36, 0xBE, 0xBB, 0xAD, 0xB5, 0xDE, 0x92, 0x9F, + 0xAF, 0x06, 0x5E, 0x3E, 0x36, 0xB9, 0xC2, 0x53, 0xCA, 0x35, 0x21, 0x3E, + 0x4F, 0x83, 0x4C, 0x6B, 0x5E, 0x80, 0x98, 0x05, 0x49, 0xE7, 0x17, 0xC6, + 0x6E, 0x29, 0x41, 0xF1, 0x51, 0xB6, 0xDF, 0x97, 0x9C, 0x37, 0xEB, 0xD1, + 0x28, 0x57, 0xDD, 0xD5, 0x64, 0x93, 0x31, 0x80, 0x67, 0x67, 0x4B, 0xF3, + 0x08, 0x38, 0x6D, 0x8A, 0x0D, 0x50, 0x5D, 0x22, 0x03, 0xF2, 0x5F, 0x79, + 0x98, 0x87, 0x2D, 0x2D, 0x32, 0x91, 0xD9, 0x7C, 0x07, 0x8B, 0xA5, 0x83, + 0xC0, 0x89, 0xE1, 0x9D, 0x78, 0xF5, 0xB8, 0x88, 0x5F, 0xF6, 0x5C, 0x35, + 0x13, 0x2B, 0x07, 0xEA, 0xAB, 0xED, 0x98, 0x1D, 0xC2, 0x51, 0x56, 0x41, + 0x90, 0xA3, 0x0D, 0xB5, 0x96, 0xCB, 0x34, 0x1C, 0x6E, 0x43, 0x8F, 0xBF, + 0xB5, 0x6F, 0x5D, 0x5E, 0x94, 0x99, 0xC1, 0xD9, 0x12, 0x0F, 0x1D, 0x1E, + 0x16, 0x01, 0xA7, 0x71, 0xB1, 0xF5, 0x49, 0xE3, 0x77, 0x3D, 0x02, 0xCF, + 0xE2, 0x7C, 0x96, 0x77, 0x8B, 0xA8, 0x01, 0xFD, 0xC0, 0xB5, 0x58, 0x6E, + 0xA2, 0x57, 0xFF, 0x31, 0x20, 0x5D, 0x90, 0x59, 0x55, 0x42, 0xB5, 0x5E, + 0x8F, 0x4C, 0x23, 0x55, 0x23, 0x21, 0x4A, 0x79, 0x30, 0x9C, 0xF8, 0xB8, + 0xD4, 0x5F, 0x23, 0x66, 0xF4, 0x01, 0x96, 0x43, 0xF8, 0x2A, 0x20, 0xFD, + 0x04, 0x7E, 0xE4, 0xC3, 0x4B, 0xC3, 0x57, 0x85, 0x61, 0x15, 0x44, 0x7D, + 0x8B, 0xDC, 0x29, 0xA4, 0xDB, 0xE6, 0x2D, 0xCC, 0x3E, 0x12, 0x03, 0xEB, + 0xC3, 0xB9, 0xDC, 0xE0, 0x13, 0x74, 0x41, 0x2B, 0xF6, 0xEF, 0x67, 0xDD, + 0x1D, 0xEE, 0x8B, 0x07, 0x30, 0x68, 0xF8, 0x56, 0x64, 0x2B, 0x4E, 0xB1, + 0x19, 0xE3, 0xE7, 0xBE, 0x72, 0xD9, 0x50, 0x69, 0x3C, 0x21, 0xDA, 0xEE, + 0x63, 0x89, 0x5D, 0xB3, 0x79, 0xD8, 0xEF, 0x26, 0xE2, 0x1F, 0x66, 0x17, + 0x4C, 0x70, 0xCF, 0xDF, 0xC0, 0x9F, 0xE9, 0x8F, 0xA2, 0x88, 0xDB, 0xD2, + 0x7F, 0xDF, 0x32, 0xEA, 0xEF, 0x83, 0x4F, 0xC3, 0x6F, 0x7F, 0x0D, 0x4F, + 0x63, 0x00, 0xBA, 0xDD, 0x60, 0x37, 0x21, 0x02, 0xAF, 0x99, 0xE6, 0xDC, + 0x12, 0xF5, 0x4F, 0xCE, 0x9A, 0xC2, 0x19, 0xB9, 0xB2, 0x9E, 0x87, 0x83, + 0xA8, 0x06, 0x56, 0x7D, 0xB7, 0x7F, 0x73, 0x38, 0xDC, 0xE9, 0xC7, 0x75, + 0x63, 0xCA, 0x3C, 0x07, 0x06, 0x6A, 0x9E, 0x97, 0x14, 0x2E, 0xED, 0x40, + 0x58, 0x3D, 0x9F, 0x52, 0x8F, 0x52, 0x40, 0x3A, 0x2A, 0xBB, 0x3B, 0xE1, + 0x8B, 0xEA, 0xD4, 0xCD, 0xC0, 0xE9, 0x68, 0x15, 0x53, 0x93, 0x59, 0xC1, + 0x3A, 0x50, 0xD6, 0x98, 0xF5, 0x4E, 0xBC, 0x87, 0x3E, 0x3A, 0x2E, 0xB0, + 0x03, 0x88, 0x40, 0x5B, 0x6A, 0x9B, 0x6D, 0x3D, 0xCB, 0x6C, 0x1B, 0x0A, + 0xAA, 0x7F, 0xBC, 0xE1, 0x56, 0xF0, 0x62, 0x09, 0xC4, 0x04, 0xFB, 0xE2, + 0x61, 0xAA, 0xDE, 0x73, 0xF3, 0x37, 0xA9, 0x49, 0x98, 0x29, 0x05, 0x67, + 0x7C, 0xB8, 0x78, 0xFE, 0xD6, 0xF8, 0xBF, 0x59, 0xD4, 0xF5, 0x20, 0x37, + 0xCC, 0x4C, 0x5A, 0xC5, 0x26, 0x17, 0x34, 0x8D, 0xB0, 0x30, 0x79, 0x92, + 0x64, 0xAD, 0xFB, 0x6D, 0x73, 0xD9, 0xD2, 0x5D, 0x4C, 0x52, 0x86, 0xB2, + 0x4A, 0xE5, 0xDE, 0xF0, 0x58, 0x72, 0xE5, 0xB5, 0xC3, 0x83, 0xD4, 0xFC, + 0x7E, 0x2F, 0x2D, 0xAD, 0x90, 0x36, 0xCC, 0xD6, 0x49, 0x93, 0xFE, 0xA0, + 0x7A, 0xED, 0x8B, 0x85, 0x73, 0x65, 0x1A, 0xAD, 0xB2, 0xD5, 0xA1, 0x86, + 0x8A, 0x43, 0x81, 0xD9, 0x4F, 0xA0, 0x09, 0x4B, 0xBF, 0x2C, 0xBB, 0x12, + 0x5C, 0xFF, 0xB6, 0x56, 0x26, 0x83, 0x98, 0x7A, 0x31, 0x10, 0x72, 0x8F, + 0x4F, 0x38, 0x75, 0xA4, 0x5D, 0xC3, 0x49, 0x88, 0x0B, 0x15, 0x86, 0x2D, + 0x30, 0x2F, 0x8B, 0xAD, 0xC2, 0x5B, 0xBE, 0xC7, 0x79, 0x04, 0x6A, 0x36, + 0x2F, 0xD8, 0x27, 0xE2, 0xD9, 0x58, 0x2A, 0x0A, 0xA2, 0x14, 0xCB, 0x59, + 0x0F, 0xDC, 0x3C, 0x7D, 0x57, 0x0F, 0x47, 0x53, 0x1E, 0x3E, 0x99, 0x6E, + 0xF6, 0x3B, 0xE8, 0xCF, 0xE3, 0x13, 0x57, 0x14, 0xF5, 0x7C, 0x2F, 0x8B, + 0xD8, 0x83, 0x3B, 0x1A, 0x7D, 0x15, 0x0A, 0x8A, 0x67, 0x0F, 0x18, 0x21, + 0x09, 0x8E, 0xE7, 0x4E, 0xC2, 0x66, 0xF9, 0x53, 0x82, 0x24, 0x58, 0xF8, + 0x3E, 0x41, 0x34, 0x71, 0x8E, 0x99, 0x87, 0x27, 0xB9, 0x1F, 0x8A, 0xAD, + 0x56, 0x56, 0x2D, 0x49, 0x00, 0xA4, 0xB2, 0x89, 0xFB, 0x8F, 0x50, 0x11, + 0xEB, 0x17, 0x6A, 0x51, 0x39, 0xD0, 0x23, 0x1F, 0x76, 0xD6, 0xF8, 0x41, + 0x5B, 0x09, 0xDF, 0xEA, 0x8B, 0x4E, 0x86, 0x56, 0x12, 0x56, 0x99, 0x8D, + 0x1D, 0xC2, 0x15, 0x7C, 0x3C, 0x27, 0xAB, 0x6A, 0x48, 0x5A, 0x14, 0x25, + 0x1E, 0x69, 0x91, 0x03, 0x26, 0xF3, 0x87, 0xA5, 0x66, 0x14, 0x9E, 0xEA, + 0x78, 0xC7, 0xEC, 0x9B, 0x0A, 0x40, 0x56, 0x94, 0x78, 0x5A, 0x9D, 0x99, + 0xAD, 0xD3, 0xFB, 0xC9, 0x5D, 0xCE, 0x05, 0xAC, 0x6E, 0x95, 0x57, 0x6C, + 0x4E, 0x04, 0xB5, 0xE4, 0x3B, 0xEF, 0x82, 0x70, 0x1B, 0xC4, 0x38, 0x63, + 0x0C, 0x66, 0x47, 0xB9, 0xDF, 0x4B, 0xF5, 0xB1, 0xAC, 0xB9, 0xB2, 0xB5, + 0xF1, 0xF2, 0xE0, 0x67, 0x39, 0x62, 0x1C, 0x0A, 0x4F, 0x10, 0xFA, 0xDA, + 0xEC, 0x5A, 0xBD, 0x55, 0x82, 0xB9, 0x5F, 0xB9, 0x1C, 0x7B, 0xC3, 0x88, + 0x7F, 0xB6, 0x4A, 0x41, 0xA2, 0x02, 0xF2, 0x3E, 0xE0, 0x0F, 0x1C, 0xD6, + 0xC9, 0xB5, 0x6F, 0xFB, 0xD7, 0x16, 0x49, 0xB2, 0x14, 0xC9, 0x2C, 0x2B, + 0xC6, 0x45, 0x19, 0x84, 0x17, 0x87, 0xE1, 0xDC, 0x49, 0x48, 0x0B, 0x65, + 0x47, 0x2B, 0xFE, 0x7C, 0x75, 0x30, 0xFA, 0xB9, 0x40, 0x1C, 0xC2, 0xA2, + 0x10, 0x43, 0xDE, 0x5E, 0xF1, 0x4D, 0xCE, 0x56, 0xA9, 0x59, 0x5C, 0x7C, + 0x37, 0x9A, 0x17, 0x8A, 0xEA, 0x2D, 0xFF, 0x32, 0xF7, 0xB7, 0x01, 0xEE, + 0xB6, 0xC6, 0xA1, 0xD7, 0xBB, 0x79, 0x88, 0x2B, 0xC6, 0x52, 0x7E, 0xCD, + 0x75, 0x19, 0x88, 0xAB, 0x51, 0x67, 0xFC, 0x5C, 0x11, 0x79, 0x49, 0x66, + 0xE8, 0xE6, 0x48, 0x6B, 0x79, 0x0E, 0x35, 0x93, 0x1E, 0xD4, 0x1E, 0xD7, + 0xC8, 0x7A, 0xCE, 0x24, 0xF5, 0x01, 0x69, 0x16, 0xC1, 0xFB, 0x8B, 0x36, + 0x9E, 0x4F, 0x42, 0x0D, 0x7C, 0xB5, 0x8E, 0xDA, 0x2A, 0x07, 0x7D, 0xFF, + 0xB3, 0x19, 0xB6, 0x33, 0xF4, 0x2B, 0x25, 0xED, 0x7E, 0x21, 0xA2, 0x9A, + 0x26, 0x0E, 0x0A, 0xE0, 0x98, 0x1F, 0xAD, 0x79, 0xA6, 0x4C, 0xF6, 0x2D, + 0xD1, 0xE2, 0x2C, 0x4B, 0xEA, 0xAB, 0x5E, 0xEB, 0x9E, 0xB0, 0xF4, 0xB5, + 0xFC, 0xCC, 0x68, 0xFF, 0x35, 0x1D, 0xBF, 0xEE, 0x3B, 0x22, 0xC1, 0x95, + 0x4C, 0x39, 0x55, 0xE8, 0xEA, 0x80, 0xD4, 0x9E, 0x9C, 0x8D, 0xFF, 0x22, + 0x60, 0xC6, 0x56, 0x96, 0x86, 0x47, 0x3C, 0xA5, 0xB8, 0xD5, 0x35, 0x97, + 0xF7, 0x35, 0xC7, 0x08, 0x47, 0xE1, 0xAD, 0xC5, 0x28, 0x54, 0xCE, 0xF3, + 0xA9, 0x6A, 0x08, 0x38, 0xE9, 0x42, 0x6A, 0x2E, 0xC5, 0xC0, 0xA0, 0xA4, + 0x62, 0x7D, 0xE0, 0x6F, 0x56, 0x25, 0xEE, 0x90, 0xD9, 0x17, 0x05, 0x1A, + 0x0C, 0xAB, 0xD3, 0xD2, 0xBA, 0xDE, 0xAB, 0xBA, 0x8F, 0x85, 0x3E, 0xAF, + 0x2E, 0xA1, 0x53, 0x02, 0x8A, 0x55, 0x91, 0x88, 0xB8, 0x92, 0x3E, 0x11, + 0xEF, 0xB4, 0x2B, 0x81, 0xE3, 0xCD, 0x0D, 0xEB, 0xC2, 0x5E, 0x34, 0xCB, + 0x27, 0x56, 0x79, 0x69, 0xD8, 0x3A, 0xC3, 0x91, 0x94, 0x47, 0xE9, 0xFC, + 0x98, 0xA6, 0x74, 0x7E, 0xBE, 0x8D, 0x09, 0xB6, 0x5C, 0x46, 0xA4, 0xD1, + 0x7B, 0xF8, 0x78, 0x33, 0x88, 0xEF, 0xD6, 0x56, 0x66, 0x8B, 0x27, 0xB3, + 0x55, 0x27, 0xCB, 0xF5, 0xD1, 0x25, 0x15, 0x97, 0x70, 0x13, 0x09, 0x72, + 0xEB, 0xE1, 0xD3, 0xF9, 0x89, 0x75, 0x27, 0xF5, 0xA3, 0xA3, 0x00, 0xD6, + 0x11, 0x1B, 0x09, 0xF9, 0xB9, 0x0B, 0x8C, 0xBA, 0x40, 0xC0, 0x3F, 0x87, + 0xCF, 0xC5, 0xAB, 0xB0, 0x50, 0x99, 0x72, 0x5E, 0xF6, 0x73, 0x48, 0xE8, + 0x0B, 0x4C, 0xDE, 0x49, 0xC0, 0xD7, 0x73, 0x21, 0x21, 0x2C, 0x22, 0x4D, + 0x9D, 0xF9, 0x48, 0xA0, 0x84, 0x1B, 0xCC, 0x34, 0x2F, 0x1C, 0x58, 0x7E, + 0xC4, 0x75, 0xB5, 0x75, 0x28, 0xBC, 0xF8, 0x9C, 0x5D, 0xEA, 0x3C, 0x94, + 0xF3, 0x5F, 0x0A, 0x90, 0x4C, 0x64, 0xE4, 0xC2, 0x70, 0x69, 0x79, 0xC4, + 0x28, 0xDF, 0x94, 0x10, 0x43, 0x6F, 0xAD, 0x9A, 0xCC, 0xF3, 0x74, 0x28, + 0xBA, 0xDB, 0x8F, 0xE5, 0x5D, 0x1F, 0x2D, 0xDB, 0x0A, 0x99, 0x36, 0xA4, + 0x50, 0x93, 0x53, 0xAC, 0x37, 0x71, 0x59, 0x64, 0xFC, 0xD1, 0x89, 0x4F, + 0x9E, 0x3A, 0xDC, 0x2C, 0xBB, 0x78, 0x1F, 0x19, 0x63, 0xD7, 0xB2, 0x55, + 0xF8, 0x96, 0xFC, 0x19, 0xA6, 0x46, 0xC5, 0xFB, 0xCC, 0x69, 0x97, 0xD4, + 0x08, 0x3F, 0xD3, 0xB7, 0x27, 0xD0, 0x52, 0x48, 0x0D, 0x42, 0xE3, 0x49, + 0xFE, 0xDE, 0x4C, 0x04, 0x3F, 0x81, 0x48, 0x44, 0x88, 0x29, 0x38, 0x11, + 0x2A, 0x1F, 0x2B, 0x33, 0x13, 0x0F, 0x0F, 0x44, 0xAC, 0xEB, 0xBA, 0xE1, + 0x83, 0x15, 0x83, 0x52, 0x50, 0xD2, 0x80, 0x28, 0xED, 0x76, 0xE3, 0x59, + 0xC8, 0xC1, 0x8C, 0x41, 0x22, 0xBC, 0xD9, 0x5F, 0x50, 0x40, 0xFF, 0x5F, + 0x66, 0x69, 0x1B, 0xD5, 0x47, 0x76, 0x44, 0xC0, 0x85, 0xB5, 0x55, 0x70, + 0x13, 0xAC, 0xEE, 0x11, 0x61, 0xAC, 0xFE, 0x1A, 0xA7, 0x43, 0xA9, 0x6D, + 0xB7, 0x94, 0x50, 0x81, 0x8D, 0xBE, 0xCC, 0xCE, 0xED, 0x62, 0xC4, 0x1B, + 0x97, 0xFD, 0x10, 0x14, 0xE6, 0x0E, 0x11, 0x16, 0x95, 0x6A, 0x5E, 0x0F, + 0x87, 0x88, 0x72, 0xA7, 0x32, 0x9A, 0x05, 0xA2, 0xC0, 0xD3, 0x23, 0x0C, + 0xC0, 0x34, 0x93, 0x80, 0x51, 0x40, 0x9A, 0x25, 0x4D, 0x5D, 0x70, 0x87, + 0x4C, 0xCE, 0x45, 0xE2, 0x2D, 0x42, 0x5A, 0x36, 0x5A, 0x2A, 0x69, 0xF2, + 0x81, 0xA0, 0x90, 0xFF, 0xEB, 0xB5, 0x5A, 0x6B, 0xB5, 0x9F, 0x15, 0x6A, + 0x0A, 0x39, 0xF0, 0x3A, 0x3F, 0xA7, 0x8F, 0xF5, 0x1B, 0x81, 0xA9, 0x7F, + 0xDF, 0x49, 0xEA, 0xC3, 0x6B, 0xC5, 0xC3, 0x23, 0xE5, 0x08, 0x8D, 0xFC, + 0xDE, 0x55, 0xEA, 0x65, 0xBE, 0x6E, 0x19, 0xB5, 0xAC, 0xD1, 0xE3, 0xC8, + 0x70, 0x41, 0x40, 0x29, 0xCC, 0xE1, 0xEA, 0x47, 0xC9, 0xB4, 0xB4, 0x86, + 0x4C, 0xCC, 0x50, 0x54, 0x46, 0xC1, 0x5A, 0xC0, 0x23, 0xEE, 0xF0, 0x4E, + 0x7C, 0xEA, 0x5C, 0x22, 0x3D, 0x6E, 0x0C, 0xA2, 0x34, 0x11, 0x69, 0x89, + 0x5A, 0x95, 0xEB, 0x2A, 0x75, 0x13, 0x81, 0x8A, 0x14, 0xD0, 0x9F, 0x78, + 0x90, 0x3F, 0xBC, 0xE6, 0x64, 0x82, 0x7B, 0xF3, 0x5E, 0x40, 0x11, 0x1B, + 0xF9, 0x21, 0x6A, 0x8F, 0x8B, 0x63, 0xCB, 0xD7, 0x1E, 0x02, 0x05, 0xC6, + 0x69, 0xAF, 0x0C, 0x3B, 0xAE, 0x7B, 0x53, 0x6F, 0x5B, 0x99, 0x1D, 0x46, + 0x81, 0x99, 0xF2, 0xC6, 0xEE, 0xDB, 0x2E, 0x23, 0xC3, 0xBB, 0x44, 0xB2, + 0xD3, 0xC5, 0x6D, 0x96, 0xBA, 0x7F, 0x70, 0x78, 0xC2, 0x31, 0xD8, 0xF5, + 0x40, 0xD8, 0xB0, 0x2A, 0x48, 0x09, 0xB5, 0x91, 0x77, 0x35, 0x9B, 0x2E, + 0x87, 0xEF, 0x9E, 0x37, 0xA3, 0x2B, 0x68, 0xC4, 0xA2, 0x01, 0x48, 0x51, + 0x5C, 0xEF, 0xE7, 0x47, 0x97, 0x55, 0x85, 0x24, 0xCE, 0x8C, 0x20, 0xFF, + 0x9D, 0x7E, 0x4D, 0x09, 0xC3, 0xDE, 0x50, 0xDA, 0x52, 0x41, 0xCE, 0x75, + 0x57, 0x2C, 0xDC, 0x45, 0x21, 0x33, 0xFB, 0x8C, 0x72, 0xA4, 0x03, 0xF1, + 0xEB, 0x86, 0x0D, 0x61, 0xA7, 0x95, 0xA4, 0xE7, 0xAD, 0x5A, 0x89, 0xCB, + 0x99, 0x02, 0xA1, 0xE9, 0x16, 0x64, 0x84, 0x18, 0xF6, 0x0F, 0x0E, 0x25, + 0x45, 0x22, 0x5C, 0x56, 0x59, 0x6D, 0x61, 0xAD, 0xC0, 0x05, 0x9A, 0x40, + 0xD3, 0xCE, 0xE7, 0xA3, 0x92, 0x38, 0x3A, 0xEF, 0xA9, 0xE0, 0x08, 0x35, + 0x6D, 0x5B, 0x38, 0x40, 0x15, 0x6D, 0xE0, 0x4A, 0x43, 0x4B, 0x63, 0xDA, + 0x6A, 0x07, 0x7E, 0xB1, 0xCD, 0x12, 0xDC, 0x05, 0xA2, 0x23, 0x57, 0x28, + 0x7A, 0x0D, 0xB4, 0x89, 0xBD, 0xA3, 0xDB, 0xF4, 0x70, 0x8B, 0x12, 0xFC, + 0xD0, 0x75, 0x40, 0x7D, 0x92, 0x8C, 0x5C, 0xD7, 0xA7, 0xE4, 0x6D, 0x7B, + 0x92, 0x89, 0x0C, 0xF4, 0xFA, 0xE5, 0x49, 0x15, 0x80, 0x68, 0x88, 0x25, + 0xC5, 0x93, 0xAF, 0x78, 0x8E, 0x92, 0x31, 0xE8, 0xBA, 0x9B, 0xEC, 0x93, + 0x2E, 0x06, 0xBC, 0x87, 0x30, 0x6E, 0x6F, 0x42, 0x31, 0xC6, 0xCD, 0xEA, + 0xE2, 0x43, 0xDF, 0xA6, 0x2C, 0xFE, 0x05, 0x4E, 0x63, 0xD6, 0x63, 0xD8, + 0x46, 0x56, 0xD8, 0xB2, 0x6E, 0x4F, 0xDC, 0xF5, 0x23, 0xDE, 0x49, 0xAD, + 0xE8, 0x2D, 0x00, 0xEA, 0xAD, 0xE6, 0xE4, 0x4A, 0x48, 0x78, 0x20, 0xCC, + 0xC0, 0x47, 0x22, 0xB4, 0xB3, 0xB8, 0xAF, 0x71, 0x1D, 0x89, 0x68, 0xD6, + 0x18, 0x70, 0x34, 0xAD, 0xFF, 0x99, 0xB3, 0x41, 0xD4, 0x6B, 0x93, 0xB5, + 0x47, 0x54, 0xB3, 0x7D, 0xF5, 0x5F, 0xA3, 0x6E, 0x54, 0x1A, 0x59, 0x11, + 0x53, 0x83, 0xAC, 0x23, 0xC2, 0x1F, 0x39, 0x64, 0x11, 0x67, 0x11, 0xBF, + 0x50, 0xDB, 0x5D, 0x1D, 0x74, 0x48, 0xDC, 0xF3, 0xBE, 0x55, 0xAA, 0x53, + 0xDB, 0xC8, 0x5C, 0x79, 0xEA, 0xB3, 0x28, 0x7A, 0xB6, 0xDB, 0x71, 0x7F, + 0xD7, 0xCF, 0x39, 0x77, 0xFD, 0xCE, 0x8B, 0x9F, 0x1A, 0x27, 0x14, 0x3C, + 0x78, 0x58, 0x18, 0xE5, 0x93, 0xDD, 0x81, 0x24, 0xF8, 0xFE, 0x97, 0x3C, + 0xA8, 0x8F, 0xFE, 0x6C, 0xA1, 0xDB, 0xE2, 0xCF, 0x59, 0x9B, 0x28, 0xC2, + 0xAB, 0x59, 0x13, 0x98, 0xDD, 0x2F, 0x03, 0xD0, 0x05, 0x93, 0x72, 0x97, + 0x07, 0xA0, 0xBC, 0xC3, 0x8B, 0x47, 0xDF, 0x55, 0x1C, 0x0E, 0x70, 0x6D, + 0xEF, 0x48, 0x0E, 0x33, 0x0D, 0x5F, 0x05, 0xF5, 0x98, 0xAC, 0xE3, 0xEE, + 0x8F, 0x9D, 0xBD, 0x84, 0xB7, 0x9C, 0x8C, 0x06, 0x60, 0x86, 0xB1, 0xDE, + 0x80, 0xB3, 0xAC, 0xD7, 0xE8, 0x35, 0xDC, 0x51, 0x57, 0x8F, 0xE8, 0x7A, + 0xC8, 0xC2, 0x46, 0x3A, 0x22, 0x4D, 0x15, 0x6B, 0x9E, 0x0A, 0xB3, 0xFF, + 0x11, 0xD9, 0x2D, 0xE0, 0x5A, 0x32, 0xBB, 0x0D, 0x72, 0x0F, 0x8B, 0xB2, + 0xD9, 0x86, 0x2D, 0x5F, 0x57, 0x92, 0xBF, 0xAF, 0x00, 0x5C, 0xE2, 0x54, + 0x91, 0x51, 0x22, 0xA9, 0x3A, 0x48, 0x9F, 0x8E, 0xF0, 0xA8, 0x04, 0x1F, + 0xD3, 0x58, 0x00, 0xB3, 0xDC, 0x7B, 0x99, 0x74, 0x18, 0x12, 0x44, 0x35, + 0x65, 0x1A, 0x1E, 0x95, 0xCC, 0x73, 0x53, 0xBB, 0xFC, 0x90, 0x07, 0x68, + 0x2B, 0x46, 0x69, 0xF2, 0x68, 0x6E, 0x62, 0x31, 0x5B, 0x11, 0x10, 0x9C, + 0x18, 0x70, 0x29, 0x0D, 0x1A, 0x88, 0xD8, 0xA5, 0xC6, 0x2C, 0xAA, 0xB7, + 0x80, 0xC6, 0x36, 0xB0, 0x4E, 0x3C, 0x68, 0x74, 0xB8, 0xFE, 0xF6, 0x82, + 0x5D, 0x74, 0x71, 0xBE, 0xD1, 0x3C, 0xE0, 0x2D, 0x20, 0x3A, 0x36, 0xA9, + 0x87, 0x76, 0xAA, 0x16, 0xB7, 0x6F, 0xB8, 0x66, 0x05, 0xEB, 0x63, 0x15, + 0xB6, 0xDE, 0x01, 0x49, 0xF5, 0x01, 0x37, 0xF0, 0x98, 0x11, 0xC9, 0x43, + 0x5D, 0xCB, 0x04, 0x48, 0x75, 0xD4, 0x73, 0x97, 0xE6, 0xD5, 0xEF, 0x97, + 0x8C, 0xF7, 0x37, 0xC8, 0xDA, 0xAB, 0x53, 0x12, 0x44, 0xF5, 0x72, 0xE7, + 0x58, 0xBD, 0x2A, 0x65, 0xE5, 0x79, 0x8D, 0xA5, 0x50, 0xBF, 0x3E, 0x3B, + 0x36, 0x9D, 0x48, 0x73, 0xA0, 0x17, 0x4C, 0x8E, 0x82, 0x98, 0xD0, 0xFD, + 0xB1, 0xDB, 0x16, 0xBE, 0x05, 0x70, 0xBE, 0xEF, 0x43, 0x8A, 0xE8, 0xB8, + 0x79, 0x83, 0xBC, 0x3B, 0x23, 0x94, 0xAD, 0xA8, 0xD9, 0x98, 0x74, 0x4C, + 0x91, 0x48, 0x22, 0x96, 0x7D, 0x0E, 0x78, 0xF9, 0x35, 0xC0, 0xAE, 0xFD, + 0x0A, 0xB0, 0xF0, 0x6C, 0xA7, 0x51, 0x4D, 0x44, 0xD9, 0xBD, 0x84, 0x76, + 0x48, 0x4A, 0x66, 0x41, 0x55, 0xA6, 0xBE, 0xA4, 0xA2, 0x3E, 0xDE, 0xA0, + 0xE4, 0x6F, 0xB9, 0xB2, 0xED, 0x74, 0xE2, 0x36, 0x2F, 0x54, 0x64, 0x9C, + 0x41, 0xE6, 0xE3, 0xC8, 0x35, 0x23, 0xD5, 0x61, 0x0E, 0x03, 0xCA, 0xFA, + 0x17, 0xED, 0x05, 0x69, 0x9C, 0x7A, 0x58, 0x4D, 0x16, 0x34, 0x15, 0xA3, + 0x5B, 0x0C, 0x87, 0x0F, 0x02, 0xD2, 0xB3, 0xAF, 0x00, 0xC2, 0x1D, 0x39, + 0x87, 0x21, 0xF3, 0x9F, 0x96, 0xD2, 0xA1, 0x8C, 0xBE, 0xFB, 0xF4, 0xAB, + 0x0B, 0x65, 0x3A, 0xF9, 0xB7, 0x00, 0x91, 0x53, 0xE6, 0xF8, 0x9E, 0xD3, + 0x65, 0xFE, 0xEB, 0x00, 0x6D, 0x15, 0x00, 0x7A, 0x4D, 0xE8, 0xD2, 0xF9, + 0xB7, 0xBC, 0x41, 0xBC, 0x90, 0x29, 0xEF, 0x72, 0xAE, 0x38, 0xE8, 0x25, + 0x77, 0xEC, 0x55, 0xFF, 0x1D, 0x71, 0x79, 0x8E, 0x7F, 0x32, 0x87, 0x39, + 0x46, 0x58, 0x06, 0x19, 0xBB, 0xC0, 0x77, 0x5A, 0x3E, 0xB5, 0xE2, 0x35, + 0x7C, 0x24, 0xB5, 0xCC, 0x68, 0xA3, 0x2C, 0xC2, 0xF4, 0x48, 0x39, 0x21, + 0x25, 0x46, 0xE1, 0x2B, 0x08, 0x8D, 0x5E, 0xDC, 0x85, 0x4E, 0x03, 0x59, + 0x21, 0x42, 0x2C, 0x0F, 0x65, 0xC8, 0xF9, 0x27, 0x7C, 0x28, 0x0A, 0xAF, + 0x2E, 0x88, 0x88, 0x0E, 0xB7, 0xB7, 0xB7, 0x01, 0xCA, 0xD8, 0x19, 0xC8, + 0x43, 0xE5, 0xCD, 0xBB, 0xBE, 0xC2, 0x74, 0xDE, 0x1F, 0xBA, 0x0B, 0x4C, + 0x40, 0x30, 0xEA, 0xC4, 0x76, 0xE7, 0x30, 0xE9, 0xDA, 0x19, 0x30, 0x33, + 0x86, 0xD8, 0xC7, 0x47, 0xB3, 0xBB, 0x7A, 0x0D, 0x5F, 0xF1, 0x44, 0x8A, + 0xE5, 0x2F, 0x86, 0xC9, 0xCF, 0x5A, 0xF5, 0x12, 0xA1, 0xC8, 0x7B, 0x5F, + 0x83, 0x98, 0x96, 0x2D, 0x6A, 0x99, 0xE8, 0xE5, 0xD7, 0x4E, 0x6D, 0x0A, + 0x51, 0xCA, 0x90, 0x8F, 0x17, 0x4A, 0x02, 0x94, 0xAF, 0xBC, 0xB9, 0x64, + 0x2A, 0xFD, 0x29, 0x84, 0x40, 0x53, 0x71, 0xD6, 0x85, 0xEF, 0x26, 0xD4, + 0x33, 0x6C, 0x18, 0x8C, 0x4F, 0x4A, 0xFB, 0xA9, 0xAC, 0x24, 0x63, 0xED, + 0x61, 0x20, 0x9C, 0x3A, 0xF0, 0xCF, 0x60, 0xDB, 0xA2, 0xB8, 0xB7, 0x61, + 0xB7, 0x0E, 0x68, 0xC3, 0xCB, 0x08, 0x69, 0xA2, 0x08, 0x7B, 0xB4, 0xCB, + 0xBA, 0x4A, 0x89, 0x26, 0x38, 0xED, 0x8D, 0x7B, 0x56, 0x27, 0xE1, 0x00, + 0xB9, 0x18, 0x7F, 0xDC, 0x42, 0x7C, 0x0D, 0xD6, 0x58, 0x93, 0xC9, 0x6F, + 0x56, 0x22, 0x9A, 0x8C, 0x80, 0x19, 0xBA, 0x0F, 0xE0, 0x52, 0x22, 0x1D, + 0x98, 0xA7, 0x98, 0x85, 0xCE, 0x21, 0xE2, 0x6E, 0x70, 0x9E, 0x4F, 0xE5, + 0x04, 0x35, 0xEA, 0x66, 0x88, 0x22, 0x63, 0xB9, 0x17, 0x1A, 0xFA, 0x56, + 0x35, 0x06, 0xB4, 0x27, 0x2C, 0x8F, 0xE3, 0x13, 0x47, 0xCC, 0xA8, 0xC6, + 0x46, 0x54, 0x57, 0xD8, 0x70, 0xFF, 0x86, 0x4C, 0xB3, 0xF2, 0x0E, 0x29, + 0x5E, 0xD8, 0x88, 0x4C, 0x5A, 0x16, 0x1A, 0x79, 0x41, 0x87, 0x70, 0x52, + 0x1E, 0xBA, 0x02, 0xCC, 0xA3, 0xC9, 0xEF, 0x53, 0x12, 0x56, 0x6D, 0x55, + 0xBF, 0x8B, 0xAF, 0xFD, 0x12, 0xE0, 0x2D, 0x27, 0x83, 0x9F, 0x8E, 0x2E, + 0x1B, 0x7A, 0x22, 0x6D, 0xF9, 0x59, 0xF9, 0x63, 0x7F, 0xB0, 0xBF, 0x05, + 0x97, 0x78, 0x2E, 0x67, 0xC3, 0xA8, 0x4B, 0x16, 0xCB, 0x72, 0x47, 0xFD, + 0x0C, 0x0F, 0xAE, 0xC9, 0xB4, 0xB6, 0xE8, 0x99, 0xAA, 0xA3, 0x60, 0xF4, + 0xD2, 0x07, 0xF5, 0x82, 0xDA, 0x7B, 0xE6, 0x6E, 0xCC, 0x85, 0xD3, 0x2E, + 0xC1, 0x13, 0x3D, 0x32, 0xBE, 0xBB, 0x25, 0xA5, 0x2E, 0x00, 0xAA, 0x28, + 0x63, 0x2B, 0x61, 0x3E, 0x7F, 0x34, 0xA0, 0x83, 0xCE, 0xEC, 0x44, 0x72, + 0x29, 0x1F, 0x81, 0x62, 0x8A, 0xED, 0x9D, 0x5F, 0xFD, 0xFE, 0x14, 0x52, + 0x9C, 0xFC, 0xB4, 0x04, 0x70, 0x0A, 0x27, 0x7E, 0x94, 0x69, 0x13, 0x80, + 0x97, 0xCC, 0xD2, 0x69, 0xDD, 0xD1, 0x38, 0xFA, 0x51, 0x88, 0xC0, 0x9D, + 0xB6, 0x14, 0xE3, 0x20, 0xEB, 0x69, 0x62, 0xF4, 0xB7, 0x07, 0xF2, 0x6F, + 0xFE, 0xDA, 0xE3, 0xF9, 0x7A, 0x64, 0x70, 0xAD, 0x11, 0x10, 0x54, 0x6B, + 0x9F, 0x8B, 0x48, 0x9C, 0x19, 0x27, 0x83, 0x20, 0x29, 0x3E, 0x7C, 0x57, + 0x0E, 0x6E, 0x4F, 0x0B, 0xB7, 0xB2, 0x6D, 0x61, 0x52, 0xE0, 0xE5, 0x67, + 0xDB, 0xF9, 0x96, 0xBA, 0xF2, 0xA6, 0x4D, 0x2A, 0x98, 0xDF, 0x2F, 0x03, + 0xD1, 0x78, 0xB4, 0xF9, 0x08, 0x2A, 0x7C, 0xBA, 0xD6, 0x53, 0x57, 0x6A, + 0x2C, 0x8D, 0xF4, 0xDC, 0xA9, 0x05, 0x00, 0xA6, 0x8C, 0xFB, 0xFF, 0x45, + 0x13, 0xF4, 0xE8, 0xBD, 0xB5, 0xF4, 0x1D, 0xF7, 0x5F, 0x32, 0xC8, 0x30, + 0x1F, 0xD5, 0x0A, 0xC7, 0xA4, 0x28, 0x06, 0xFF, 0x44, 0x18, 0x43, 0x1A, + 0x8C, 0x63, 0x81, 0x2B, 0x16, 0x4C, 0xE4, 0xB0, 0xF4, 0x9A, 0x49, 0x09, + 0x7B, 0x8B, 0x6F, 0x93, 0x2E, 0xEC, 0x8C, 0x4F, 0x71, 0x01, 0xFF, 0x54, + 0x90, 0x1B, 0x6C, 0xF1, 0x9B, 0xB1, 0x06, 0xDA, 0xFC, 0xD4, 0xD6, 0xFB, + 0x10, 0xDA, 0x46, 0x8C, 0x0E, 0xAF, 0xF8, 0x19, 0xC0, 0x35, 0xA5, 0xD2, + 0x74, 0xFD, 0x25, 0xEF, 0xDD, 0x2E, 0x9C, 0x0B, 0xE1, 0x17, 0xD5, 0x0C, + 0xFB, 0xC1, 0xA8, 0xE6, 0x4A, 0x44, 0x0A, 0xF2, 0x48, 0xA2, 0x07, 0x42, + 0x3C, 0x36, 0xC5, 0xD7, 0x45, 0x9D, 0xDB, 0xA6, 0x4B, 0x30, 0xC1, 0x3A, + 0xB0, 0x31, 0x88, 0x0E, 0xB1, 0x38, 0x4E, 0x34, 0xF9, 0x33, 0xE2, 0x8A, + 0x0B, 0xF7, 0x7C, 0xF1, 0xE3, 0x07, 0x5A, 0xA0, 0x63, 0x12, 0x22, 0xFD, + 0x44, 0x8A, 0xE7, 0x35, 0xF7, 0x24, 0xAD, 0x6F, 0xBA, 0xC1, 0xA3, 0x2F, + 0x6C, 0x58, 0xF3, 0xD3, 0x13, 0x4D, 0x21, 0x0A, 0xA1, 0x1C, 0x54, 0xAA, + 0x5E, 0x35, 0xEF, 0x00, 0x48, 0xE8, 0xDE, 0x56, 0xA4, 0xFF, 0xBB, 0xD9, + 0xF9, 0xA7, 0x0D, 0x83, 0x08, 0x8B, 0x41, 0xDC, 0x63, 0xA4, 0x40, 0x62, + 0x46, 0xAD, 0x57, 0x49, 0x43, 0x67, 0x6D, 0x43, 0x23, 0x19, 0x7E, 0x17, + 0xF6, 0xEF, 0xDE, 0x07, 0xF2, 0x5D, 0x11, 0x78, 0x42, 0x8D, 0x11, 0xEF, + 0x9F, 0x4A, 0xA6, 0xCE, 0x95, 0x92, 0x34, 0x20, 0x02, 0x95, 0xB9, 0xA8, + 0x16, 0xF5, 0x5E, 0x2F, 0x7C, 0xF8, 0xE2, 0x07, 0xB8, 0xF4, 0x07, 0x30, + 0x1C, 0x77, 0xD3, 0x46, 0x11, 0x07, 0x8D, 0x6D, 0x69, 0x87, 0xB4, 0x91, + 0xCB, 0x72, 0x8E, 0x2D, 0xAD, 0x0E, 0xCD, 0x97, 0x8C, 0xA4, 0x0D, 0x05, + 0x93, 0xAF, 0x42, 0xDE, 0x74, 0xF8, 0x97, 0x3B, 0x7F, 0xBF, 0x4D, 0x6A, + 0x12, 0xE4, 0xE2, 0xF2, 0xAF, 0x6D, 0x1F, 0x31, 0xCA, 0x81, 0x33, 0x2F, + 0x42, 0x42, 0xCE, 0x48, 0x31, 0xD9, 0x09, 0x2A, 0x70, 0xDF, 0x75, 0xE3, + 0x9C, 0x42, 0xEF, 0x8A, 0xB1, 0x96, 0x6B, 0xA1, 0xBC, 0x2C, 0x84, 0x77, + 0xE9, 0x3D, 0x13, 0x3C, 0x04, 0x9F, 0xC8, 0x70, 0xC3, 0x26, 0xF0, 0xE3, + 0xC5, 0x04, 0xD3, 0xEA, 0x02, 0x10, 0x7E, 0xD2, 0xB5, 0x32, 0x87, 0x8D, + 0x02, 0xA8, 0x1B, 0x19, 0x7D, 0x6A, 0x54, 0x45, 0x62, 0x06, 0xD3, 0x28, + 0x32, 0xAC, 0x2A, 0x1E, 0xA1, 0xC3, 0x56, 0x96, 0xCB, 0xA4, 0x3A, 0x6F, + 0xCB, 0x2B, 0xBC, 0xCF, 0x7F, 0x75, 0xE9, 0x05, 0x12, 0x24, 0xC0, 0xD4, + 0x97, 0xAB, 0xCF, 0x4D, 0x38, 0x23, 0x87, 0xE6, 0x3D, 0x22, 0xE6, 0x3D, + 0xE1, 0xE7, 0x45, 0xF6, 0x62, 0xF3, 0xAB, 0x9B, 0x0C, 0x11, 0x23, 0x57, + 0x56, 0x57, 0xB7, 0xD8, 0x58, 0x37, 0x5A, 0x8C, 0x1F, 0x31, 0xA8, 0x29, + 0x1A, 0x04, 0xE2, 0xA7, 0x4A, 0xC7, 0x27, 0xCC, 0x39, 0x0E, 0xEF, 0x7F, + 0xD4, 0xE1, 0x46, 0xCD, 0xCC, 0x96, 0x22, 0xBC, 0x0E, 0xDD, 0xDF, 0xCA, + 0xDB, 0x77, 0x65, 0x49, 0x7C, 0x2F, 0x2C, 0xC0, 0x94, 0x05, 0x71, 0xC2, + 0x23, 0x5E, 0x74, 0xC3, 0x4E, 0x59, 0xA9, 0xE2, 0xD1, 0x0F, 0x2B, 0x68, + 0x5E, 0x6C, 0x6B, 0x3C, 0xD4, 0x7C, 0x42, 0xE4, 0x26, 0x79, 0xAE, 0xFB, + 0x14, 0x65, 0x56, 0x75, 0x6F, 0xA6, 0x70, 0xB9, 0x2E, 0x28, 0x94, 0xF1, + 0xD2, 0xE3, 0xDA, 0x1C, 0x4B, 0xF2, 0x71, 0x8A, 0xED, 0xE6, 0x20, 0x1C, + 0xF4, 0xEE, 0x63, 0xBB, 0x74, 0x73, 0x61, 0xD9, 0x55, 0x84, 0xED, 0xD9, + 0x59, 0x1B, 0x47, 0x8B, 0xE5, 0xEF, 0xBF, 0xA5, 0x78, 0xB4, 0x99, 0x7E, + 0xF3, 0x31, 0x59, 0x2A, 0xC8, 0x23, 0xB9, 0x0A, 0x81, 0xE2, 0x4C, 0x8A, + 0x97, 0xBC, 0x74, 0x08, 0xE4, 0x35, 0x2D, 0xD1, 0x3C, 0xBA, 0xF2, 0x20, + 0x51, 0x76, 0xF8, 0xFD, 0x20, 0x5D, 0xD2, 0x63, 0x7D, 0xA3, 0xEF, 0x7D, + 0x56, 0x46, 0x44, 0x86, 0x29, 0x70, 0xC3, 0x5F, 0x1B, 0xC6, 0x3D, 0x42, + 0xD3, 0x69, 0x78, 0x5C, 0xD3, 0xD4, 0x79, 0x3B, 0x0B, 0x81, 0x48, 0x00, + 0xAA, 0xEA, 0x4C, 0x95, 0x56, 0x20, 0xE8, 0xB1, 0xB6, 0xE9, 0xA7, 0xD6, + 0x0F, 0x4F, 0x5B, 0xB1, 0xC3, 0xCD, 0xF6, 0x43, 0x83, 0x6C, 0x4C, 0xA3, + 0x17, 0x58, 0xAB, 0x06, 0x68, 0xBB, 0x14, 0x50, 0x07, 0xBC, 0x7B, 0x75, + 0x9B, 0x5F, 0x96, 0xC6, 0x79, 0xFF, 0x3C, 0x6A, 0x05, 0x5B, 0xA4, 0x63, + 0xA3, 0x93, 0x6F, 0x6F, 0x87, 0xE8, 0xAF, 0x44, 0x48, 0x02, 0x49, 0x4C, + 0xED, 0x8C, 0x3A, 0x51, 0x50, 0x43, 0x6F, 0xE6, 0x2A, 0x5E, 0x47, 0x25, + 0x05, 0xFB, 0x68, 0x17, 0x2D, 0x90, 0xEB, 0xE2, 0x76, 0xAB, 0x6B, 0x99, + 0xB3, 0x84, 0x59, 0xD0, 0xFD, 0x6A, 0x60, 0x6E, 0x4F, 0x46, 0xA0, 0x37, + 0xE7, 0x06, 0xB6, 0x15, 0xC9, 0x00, 0xEC, 0x00, 0x38, 0x0A, 0x8F, 0x81, + 0xDB, 0xAB, 0xBA, 0xE7, 0xD3, 0x88, 0xF0, 0x1B, 0x5D, 0xE9, 0x41, 0xAC, + 0xA0, 0xBC, 0x47, 0x93, 0x73, 0x04, 0x72, 0x88, 0x63, 0x91, 0xD8, 0x60, + 0x82, 0xAA, 0x2D, 0x49, 0xA4, 0xFF, 0xFF, 0x0C, 0xCF, 0x16, 0x73, 0x74, + 0xFE, 0x5F, 0x72, 0x90, 0x8C, 0x5E, 0x82, 0x2D, 0x6E, 0xDA, 0x8B, 0x30, + 0xA6, 0x39, 0xFB, 0x2A, 0x92, 0xC5, 0x0D, 0x49, 0x3A, 0x59, 0x3E, 0x0D, + 0xA7, 0xBB, 0x0B, 0x28, 0x46, 0x99, 0x6E, 0x7E, 0x6C, 0xD7, 0x6B, 0x89, + 0x8D, 0x1A, 0x85, 0x1D, 0x7E, 0x1A, 0xE8, 0xC8, 0xEF, 0x8F, 0xDD, 0x00, + 0xF8, 0x4F, 0xAE, 0x12, 0xF6, 0x88, 0x91, 0x36, 0xF9, 0xDB, 0x09, 0xDD, + 0xF7, 0xD5, 0xB3, 0xC8, 0x90, 0x0C, 0xC4, 0xB0, 0x45, 0xD2, 0x96, 0xBF, + 0x61, 0xE3, 0xD8, 0xD1, 0x4F, 0xDB, 0x1B, 0xF6, 0xA8, 0x0D, 0x40, 0xF0, + 0xEF, 0x23, 0x26, 0x2F, 0x25, 0xAB, 0x0E, 0x15, 0xB6, 0x90, 0x1F, 0xA3, + 0x6B, 0xEE, 0x93, 0xD4, 0x57, 0xA7, 0x78, 0x39, 0xB4, 0x79, 0x2B, 0x9E, + 0xE7, 0xFA, 0x2E, 0x1D, 0xAA, 0x41, 0xEB, 0x87, 0x99, 0x4E, 0x78, 0x42, + 0x47, 0x9D, 0x43, 0x80, 0x9F, 0x56, 0x13, 0x5E, 0x3D, 0x95, 0xF8, 0xB4, + 0x76, 0x9F, 0x72, 0x83, 0x81, 0xB1, 0x74, 0xDE, 0x43, 0xBE, 0x91, 0x57, + 0x71, 0x90, 0x3C, 0xA0, 0x1F, 0xA0, 0x87, 0x07, 0x47, 0xDF, 0x5C, 0xFD, + 0x21, 0xD6, 0x64, 0x4C, 0x72, 0xFB, 0xCE, 0x21, 0xC5, 0x89, 0x23, 0x0B, + 0xAE, 0x75, 0x72, 0x73, 0xA6, 0xA6, 0xB3, 0xCE, 0x9C, 0xB1, 0xAF, 0xAB, + 0xDF, 0x06, 0x55, 0x5F, 0x0C, 0x1D, 0x6D, 0x13, 0xD1, 0xD2, 0xF0, 0x54, + 0x00, 0xAE, 0xA6, 0x51, 0xF2, 0x8B, 0x50, 0xF5, 0x5D, 0x76, 0xC9, 0x4D, + 0x55, 0x3C, 0x6F, 0xC7, 0xCB, 0xD1, 0x43, 0xEB, 0x52, 0xCE, 0x84, 0x00, + 0x90, 0xEB, 0xBD, 0x54, 0xC9, 0x04, 0x3B, 0x4B, 0xA9, 0x5D, 0x53, 0x0D, + 0xB6, 0x13, 0x55, 0xD4, 0x36, 0xEB, 0x71, 0x23, 0x00, 0x98, 0xB3, 0xB9, + 0x73, 0x8B, 0x0B, 0xD3, 0xB9, 0x67, 0x50, 0x28, 0xBC, 0xCC, 0x16, 0xD5, + 0xDE, 0x72, 0x5B, 0x75, 0x7B, 0x12, 0xF6, 0x3C, 0x94, 0xAE, 0x3E, 0xEF, + 0x44, 0x3B, 0x9E, 0x8F, 0x80, 0x1C, 0x18, 0x5F, 0x9B, 0x43, 0x4F, 0xF5, + 0xB1, 0xD7, 0x8A, 0x42, 0xA0, 0x51, 0x74, 0x86, 0x0F, 0x31, 0x18, 0x6C, + 0x47, 0xF8, 0xB9, 0x97, 0x0F, 0x4B, 0x47, 0x18, 0xF6, 0x5C, 0x70, 0x49, + 0xBF, 0xF5, 0x00, 0x08, 0xC6, 0xD7, 0x04, 0x79, 0xE2, 0xE5, 0x05, 0xAA, + 0x00, 0x4A, 0xE0, 0xA8, 0x62, 0xDC, 0xD7, 0x17, 0x7C, 0x8D, 0x17, 0x14, + 0x0A, 0x16, 0x3B, 0x0B, 0x70, 0x50, 0xF0, 0xB8, 0x1A, 0xE0, 0xB9, 0x8C, + 0x04, 0xF0, 0xEB, 0xB1, 0xCB, 0x15, 0x3C, 0xF6, 0xCE, 0xED, 0x40, 0xA2, + 0x40, 0x36, 0x3A, 0xF0, 0xA8, 0x21, 0xF9, 0x31, 0x49, 0x8A, 0xC8, 0x1D, + 0x57, 0x63, 0xC3, 0x4E, 0x98, 0x3E, 0x2A, 0x0C, 0x41, 0xD9, 0x01, 0xF6, + 0xB5, 0xB4, 0xCD, 0x5C, 0xCE, 0x1A, 0x04, 0x81, 0xC4, 0x66, 0x38, 0xAA, + 0x06, 0xC9, 0xDA, 0x42, 0x8F, 0x26, 0x7D, 0xB3, 0x51, 0x43, 0x94, 0x1A, + 0xC6, 0x8E, 0x2C, 0x78, 0xC4, 0x4E, 0x88, 0x40, 0xF3, 0x38, 0x47, 0x4E, + 0x0F, 0xA4, 0x29, 0xBC, 0xC2, 0x02, 0x1F, 0x58, 0x44, 0xF4, 0x1B, 0x8D, + 0x2B, 0x82, 0x15, 0x92, 0x80, 0xA2, 0x65, 0xBD, 0x50, 0x93, 0xC5, 0xF9, + 0xEF, 0x18, 0x83, 0x45, 0x51, 0x4A, 0x5C, 0xCC, 0x9C, 0x69, 0xF6, 0x96, + 0x9E, 0xC0, 0x14, 0x2A, 0x48, 0x72, 0xBD, 0xEE, 0x93, 0x4B, 0x50, 0xFF, + 0xF4, 0x60, 0x62, 0x33, 0xE2, 0x0B, 0xD3, 0x63, 0xFE, 0xE6, 0xE5, 0xE9, + 0xB0, 0x1A, 0x25, 0x7F, 0x5B, 0xDC, 0xF7, 0xA0, 0x9A, 0x5B, 0x61, 0x76, + 0x61, 0x5D, 0x1F, 0xE3, 0x24, 0x02, 0x11, 0x28, 0x97, 0x0E, 0xCB, 0x95, + 0x08, 0x1B, 0xD1, 0xA8, 0xD9, 0xE7, 0x91, 0xC6, 0x47, 0x38, 0x10, 0xEC, + 0x33, 0xE0, 0x45, 0xF4, 0xE8, 0xAF, 0xBD, 0xCB, 0x5C, 0x32, 0x38, 0x3D, + 0x49, 0xC6, 0x36, 0x62, 0xE3, 0x7D, 0x94, 0xC4, 0x05, 0xAF, 0x47, 0x0B, + 0x01, 0x72, 0xF1, 0x76, 0x2B, 0x7C, 0xCC, 0x62, 0xB2, 0xF4, 0xD4, 0xE0, + 0x10, 0x02, 0x1D, 0xFD, 0x3B, 0xE3, 0x0F, 0x46, 0x45, 0x18, 0x11, 0xF5, + 0xBF, 0x15, 0xEB, 0xC7, 0xA4, 0x15, 0x96, 0x53, 0x02, 0xC1, 0xCD, 0xB0, + 0xC0, 0xD4, 0xE7, 0xBC, 0x47, 0x7F, 0xE3, 0xAD, 0x1F, 0x4A, 0xFF, 0x36, + 0xB2, 0x83, 0x5D, 0x1B, 0xF1, 0x2C, 0xE9, 0xE5, 0xDA, 0x17, 0x0F, 0x6C, + 0x68, 0x55, 0x23, 0xEC, 0x28, 0x4C, 0x2B, 0xC3, 0xC3, 0xC2, 0x26, 0x9D, + 0xF0, 0x61, 0x8C, 0xDC, 0xD6, 0xDB, 0xDB, 0x3E, 0xF0, 0x37, 0x67, 0xBC, + 0x67, 0xFA, 0xCD, 0x17, 0xBC, 0xBA, 0xAC, 0x05, 0xA1, 0x50, 0x41, 0x0B, + 0x18, 0x97, 0xE9, 0x7B, 0xE9, 0xE5, 0xA5, 0x70, 0x14, 0x24, 0x7B, 0x75, + 0x74, 0xCD, 0x9C, 0x9B, 0xA6, 0xC3, 0x6B, 0x10, 0x7F, 0x9C, 0x6F, 0x8A, + 0xE6, 0xDD, 0x30, 0xB0, 0x70, 0x7E, 0x46, 0xB5, 0xC5, 0xDE, 0x97, 0xE0, + 0x65, 0x64, 0x64, 0x3E, 0xAD, 0xA3, 0xA8, 0x0A, 0x69, 0xC7, 0x37, 0x5E, + 0xCE, 0x17, 0xFD, 0x2B, 0x0C, 0xAE, 0x04, 0xDE, 0xFB, 0x6A, 0x96, 0xD1, + 0x6C, 0x32, 0x00, 0xC8, 0xBD, 0x4B, 0xB6, 0x9A, 0xC5, 0xF7, 0xDA, 0xBC, + 0xED, 0xA7, 0x11, 0x0D, 0x91, 0x75, 0xC3, 0xFF, 0x7A, 0xC9, 0x06, 0x18, + 0x1C, 0x31, 0x92, 0xC2, 0x49, 0x7B, 0xB4, 0xC6, 0xF8, 0xA3, 0x42, 0xC0, + 0x37, 0xBE, 0xAD, 0x3C, 0x06, 0xF5, 0x73, 0x62, 0xBF, 0xDE, 0x08, 0x77, + 0x29, 0x52, 0x2E, 0x28, 0x57, 0xBF, 0xF9, 0x98, 0xFA, 0xC3, 0x9F, 0xC4, + 0xF4, 0xB2, 0xC2, 0x99, 0x4E, 0x45, 0x33, 0x50, 0xB4, 0x9A, 0x65, 0xC9, + 0xFB, 0x40, 0xC2, 0x77, 0xAC, 0xC8, 0x87, 0x1C, 0x9F, 0x7F, 0xD9, 0x1C, + 0xE7, 0xC1, 0x04, 0x44, 0xAB, 0xFA, 0x47, 0x5D, 0xE4, 0x89, 0x2D, 0xCF, + 0x52, 0xC1, 0x24, 0x30, 0x3D, 0xAD, 0x1B, 0x25, 0x34, 0xAF, 0x76, 0xBA, + 0xE0, 0x26, 0xF2, 0x63, 0xD0, 0x68, 0xFA, 0x18, 0x07, 0xA4, 0x39, 0xEE, + 0xF2, 0xF0, 0xEC, 0xDD, 0xB4, 0x95, 0x4E, 0xBF, 0x46, 0x31, 0x39, 0xC7, + 0x1D, 0xB6, 0xCB, 0x5F, 0xA2, 0xA2, 0x62, 0x83, 0x11, 0xA5, 0xE9, 0xED, + 0x92, 0xC2, 0xD8, 0x5B, 0x64, 0xD9, 0x65, 0xFE, 0x18, 0xE8, 0xB1, 0xBD, + 0xAD, 0xF2, 0xF9, 0xD0, 0x1D, 0xCB, 0x71, 0xDC, 0x49, 0x3F, 0x4F, 0xD9, + 0x9E, 0x17, 0x7F, 0xF6, 0x46, 0xA0, 0xFF, 0x99, 0x17, 0xA2, 0xE6, 0xEB, + 0xDE, 0xB7, 0xAF, 0x26, 0x4C, 0xFD, 0xDA, 0xE1, 0xFB, 0xEF, 0xAA, 0xC5, + 0x2F, 0xF9, 0x31, 0x5C, 0xF6, 0x91, 0x70, 0xDA, 0x66, 0xED, 0xB3, 0x51, + 0x72, 0x95, 0x29, 0x22, 0xA5, 0xE2, 0x82, 0x0C, 0x43, 0xFE, 0x92, 0xFF, + 0x72, 0xA8, 0xD9, 0xF5, 0x6F, 0xCF, 0x63, 0xFC, 0x75, 0xD2, 0x33, 0x47, + 0xAD, 0x01, 0x87, 0xC2, 0xE6, 0xDE, 0xBB, 0xB9, 0xCF, 0xE2, 0x17, 0x50, + 0x3A, 0x68, 0x31, 0xD1, 0xB6, 0xC9, 0x3F, 0x43, 0x25, 0xBC, 0xB5, 0xF3, + 0xC9, 0xF9, 0xF3, 0xB3, 0x11, 0x5E, 0xF6, 0xE0, 0xBF, 0xAF, 0x1B, 0x90, + 0xA3, 0x61, 0xA3, 0x36, 0xFB, 0xBF, 0x0E, 0x62, 0xDF, 0xCC, 0x9B, 0x51, + 0x59, 0xFE, 0xA4, 0xFA, 0xD1, 0x3A, 0x4B, 0xA5, 0x9A, 0xA8, 0x21, 0x01, + 0x1D, 0x52, 0xAF, 0xBE, 0x74, 0x2D, 0x8B, 0x91, 0x91, 0x98, 0xC9, 0xD1, + 0x9C, 0x5B, 0x38, 0x12, 0x00, 0x2B, 0x12, 0x6F, 0x92, 0x7A, 0xC7, 0x45, + 0x16, 0xB8, 0xA7, 0xB3, 0x9F, 0x46, 0xF9, 0xAE, 0xBD, 0x13, 0xFB, 0xDD, + 0xDB, 0x86, 0x8A, 0x94, 0xFB, 0x10, 0x3B, 0xA3, 0x4D, 0x4C, 0x4D, 0xDD, + 0xC2, 0x38, 0x22, 0x58, 0xC4, 0x34, 0xCE, 0x58, 0x78, 0x89, 0x7B, 0x77, + 0x28, 0x30, 0xD6, 0xC7, 0x44, 0x04, 0x52, 0x7A, 0x19, 0x1E, 0xF1, 0xFD, + 0xD3, 0x77, 0x5F, 0x50, 0x0D, 0xAE, 0xAE, 0xEF, 0x59, 0x06, 0xF4, 0x3D, + 0x18, 0x43, 0x38, 0x51, 0xD6, 0x3D, 0xC5, 0x23, 0x04, 0x1F, 0x5B, 0x25, + 0x4C, 0x74, 0xB0, 0xC6, 0xEB, 0x76, 0xBA, 0xE8, 0xB1, 0xA7, 0x44, 0xE2, + 0x5C, 0xD4, 0x18, 0x1D, 0x34, 0x8D, 0xA8, 0x05, 0x25, 0x03, 0xA2, 0xD7, + 0xA3, 0x3F, 0x50, 0x07, 0x52, 0x09, 0x2D, 0x88, 0xFC, 0x2C, 0xF3, 0xAF, + 0xB4, 0x89, 0x6A, 0xA0, 0x27, 0x5F, 0xD3, 0x2B, 0x63, 0x8D, 0xD9, 0x60, + 0x1B, 0xD3, 0x35, 0x18, 0x61, 0x93, 0xF6, 0x82, 0xD8, 0xBC, 0x9F, 0x90, + 0xB6, 0xB1, 0xCF, 0xFD, 0x3B, 0xD4, 0xA8, 0x07, 0x0D, 0x76, 0xF1, 0x44, + 0x4F, 0x45, 0x10, 0x4C, 0xFB, 0x92, 0x1A, 0x56, 0x48, 0x87, 0x15, 0x7B, + 0x55, 0x3D, 0x10, 0xCE, 0xD8, 0x07, 0x3A, 0x79, 0x72, 0x17, 0x5C, 0xF2, + 0x9C, 0x84, 0xE1, 0x72, 0x36, 0x2A, 0xEB, 0xBB, 0xEE, 0x3E, 0xC8, 0x1F, + 0x33, 0x2F, 0x53, 0xDF, 0x6B, 0xE8, 0x3E, 0x0A, 0x5C, 0x32, 0x36, 0x81, + 0x77, 0x4A, 0xD6, 0xD0, 0xA8, 0x14, 0xBB, 0x32, 0xDC, 0x8B, 0x55, 0xB2, + 0xEF, 0xD4, 0xE8, 0xCA, 0xFF, 0x50, 0xDC, 0xBD, 0x55, 0xB5, 0x5E, 0xBE, + 0x1B, 0x74, 0x8A, 0x57, 0x5B, 0xBC, 0xCC, 0x2F, 0xF6, 0x72, 0x0C, 0xAF, + 0x9F, 0x2A, 0x96, 0xBE, 0xDC, 0xBC, 0xFC, 0x3A, 0xA8, 0xDF, 0x3E, 0x2E, + 0x78, 0xA7, 0xD8, 0xA0, 0x2A, 0x95, 0x70, 0x24, 0xBC, 0x6C, 0x1A, 0xFA, + 0xAA, 0xE6, 0xE1, 0x38, 0xE4, 0x8A, 0xD8, 0x63, 0x03, 0x82, 0x3C, 0xFB, + 0xA6, 0x9E, 0xB9, 0x69, 0xF6, 0x04, 0x60, 0x37, 0x0B, 0xBC, 0xEF, 0x85, + 0x70, 0xD4, 0xCB, 0xBE, 0x3E, 0xD3, 0xF2, 0x81, 0x37, 0x45, 0x1A, 0x94, + 0xB4, 0x02, 0xD9, 0xA2, 0xC8, 0x1D, 0x92, 0xE0, 0x5C, 0xA4, 0x5D, 0x43, + 0xA5, 0xFA, 0x1D, 0xD3, 0x18, 0x14, 0x0B, 0x18, 0x86, 0x74, 0x8E, 0x16, + 0xB3, 0x65, 0xD3, 0x24, 0x45, 0x71, 0xA9, 0x28, 0x46, 0x25, 0x68, 0x21, + 0x94, 0x8D, 0xDB, 0xCA, 0x13, 0x3C, 0x0C, 0xB1, 0xBB, 0xF2, 0x6E, 0xC2, + 0x2D, 0x67, 0xBA, 0x0D, 0xA9, 0x5B, 0x3A, 0xD7, 0x45, 0xDC, 0x68, 0x94, + 0x41, 0x30, 0xC1, 0xAD, 0x0C, 0xEF, 0x7E, 0xB1, 0x66, 0x1E, 0xEE, 0x0E, + 0x23, 0xC0, 0x6B, 0x08, 0xF0, 0x3E, 0xD0, 0xA8, 0xEF, 0x60, 0x34, 0xA7, + 0xDB, 0x9A, 0x3C, 0xD5, 0xEE, 0x02, 0x4C, 0x3E, 0x1C, 0x94, 0x75, 0x8E, + 0x95, 0xD2, 0x91, 0xCD, 0xF0, 0x20, 0x49, 0xBC, 0x6A, 0xBC, 0x26, 0x0C, + 0x40, 0x55, 0x4F, 0xE4, 0x29, 0xC7, 0x2D, 0xB0, 0x55, 0x28, 0xB1, 0xB2, + 0x99, 0x2A, 0x87, 0x4A, 0x19, 0x58, 0x7D, 0xEE, 0x24, 0xE7, 0xEE, 0xA6, + 0x6A, 0xBE, 0xE1, 0x96, 0xBB, 0x80, 0xF0, 0x1B, 0x55, 0x71, 0x02, 0x9D, + 0xCA, 0x8A, 0x51, 0xE4, 0x1D, 0x34, 0x6C, 0x1D, 0x22, 0x91, 0x3C, 0x19, + 0xBC, 0x31, 0x59, 0xA0, 0xD4, 0x82, 0x96, 0xAE, 0xE9, 0x2B, 0x24, 0x8E, + 0xF4, 0x97, 0x3B, 0xF0, 0x06, 0xC3, 0x60, 0x18, 0x0A, 0x46, 0xA3, 0x69, + 0xA3, 0x9B, 0x35, 0xA8, 0x04, 0xBC, 0x5B, 0x60, 0xE5, 0xF5, 0x10, 0x22, + 0x03, 0x59, 0x12, 0x09, 0x1B, 0x28, 0x6B, 0xC4, 0xF1, 0x82, 0xB1, 0x72, + 0x43, 0x8B, 0x0A, 0x27, 0x84, 0x7A, 0x38, 0x72, 0x64, 0xFD, 0x74, 0x39, + 0x02, 0xB6, 0x19, 0xE2, 0xDD, 0x28, 0x85, 0x61, 0xDE, 0x4F, 0x15, 0x0B, + 0x90, 0xE3, 0x83, 0xB5, 0x82, 0xC6, 0xB9, 0xA6, 0xFD, 0x6B, 0x8A, 0xB1, + 0x9E, 0xEB, 0xA9, 0xFC, 0xAA, 0x10, 0xC9, 0x4D, 0x06, 0xAB, 0x53, 0x06, + 0x2F, 0xF5, 0x7A, 0x94, 0xFB, 0x45, 0x14, 0x52, 0x1D, 0xFD, 0xCD, 0x2C, + 0xC7, 0x7B, 0x6D, 0x89, 0xCB, 0x50, 0xC4, 0x6D, 0x89, 0x9D, 0x66, 0x66, + 0xFA, 0x17, 0xD7, 0x03, 0xB4, 0x62, 0xAA, 0x6F, 0xEC, 0xB9, 0x33, 0xF1, + 0x2A, 0x7E, 0x53, 0x2C, 0x86, 0x41, 0xF2, 0x73, 0xE1, 0xC6, 0xFB, 0x6E, + 0x0F, 0x5B, 0x31, 0x66, 0xB3, 0x6C, 0x89, 0xC7, 0x49, 0x26, 0xE6, 0x1B, + 0x22, 0xB1, 0x01, 0xC8, 0x00, 0x1D, 0xFF, 0xAF, 0x3C, 0x5F, 0x48, 0xB3, + 0x59, 0xCC, 0xAE, 0x96, 0x36, 0x30, 0xCB, 0xBF, 0x64, 0xEB, 0x7D, 0xC1, + 0xF0, 0x36, 0xA8, 0x0D, 0xD1, 0x5D, 0xAB, 0x31, 0x89, 0x8E, 0x40, 0x1D, + 0xED, 0x84, 0xC9, 0x08, 0x73, 0xB4, 0xFE, 0x20, 0xEF, 0x15, 0x25, 0xD1, + 0xF8, 0xAA, 0x24, 0xF9, 0xCE, 0xEC, 0x2B, 0x38, 0x30, 0x98, 0x97, 0x7A, + 0x43, 0xEE, 0xFC, 0xCE, 0x1C, 0x90, 0x87, 0x48, 0x7D, 0x7F, 0x97, 0xDF, + 0x72, 0x18, 0x16, 0xD7, 0xD3, 0xD7, 0x65, 0xA1, 0xB5, 0xEC, 0xC2, 0xFC, + 0x95, 0xC0, 0x34, 0x34, 0x51, 0x15, 0xE5, 0x72, 0xDC, 0x9A, 0x56, 0x67, + 0x01, 0xF8, 0x9C, 0x96, 0x12, 0x9E, 0xF4, 0xBD, 0x5B, 0xBE, 0x17, 0xC2, + 0xC2, 0x32, 0x6A, 0x0A, 0xD2, 0x4A, 0x0C, 0xF6, 0xAC, 0x33, 0x64, 0x48, + 0xE7, 0x36, 0x20, 0x99, 0x4A, 0xCA, 0xF2, 0xFC, 0xC7, 0x88, 0x34, 0x68, + 0x15, 0xFC, 0x28, 0x2E, 0xAC, 0xD2, 0x9E, 0xEE, 0x39, 0x7A, 0xC9, 0xB4, + 0x88, 0x64, 0xEA, 0x1F, 0x21, 0xA2, 0x5C, 0x5F, 0x29, 0xD1, 0x5B, 0xE9, + 0x7E, 0x76, 0x24, 0x7A, 0x05, 0x00, 0xCF, 0x49, 0x0D, 0x51, 0x28, 0x65, + 0x07, 0x82, 0xC2, 0x9E, 0x13, 0xED, 0x4A, 0x86, 0xB6, 0xCA, 0x78, 0x15, + 0xF0, 0x2C, 0x7A, 0xE5, 0x00, 0xF5, 0x74, 0xFF, 0x2E, 0x50, 0x85, 0xE0, + 0x72, 0xCA, 0xB1, 0x41, 0xC2, 0x88, 0x7F, 0x37, 0x9F, 0x46, 0xB2, 0x1F, + 0x20, 0x69, 0x7B, 0x1B, 0x44, 0xF6, 0x56, 0xD7, 0xDB, 0xDB, 0x58, 0x5D, + 0xF0, 0xDB, 0x11, 0x2B, 0x6E, 0x31, 0xE0, 0x95, 0x8C, 0xAC, 0x64, 0x7A, + 0xDE, 0x40, 0x6B, 0xA4, 0x78, 0x7A, 0xC1, 0xAB, 0x6A, 0x03, 0x4F, 0x88, + 0x96, 0x0E, 0xF1, 0x14, 0x6B, 0x66, 0xB7, 0x9F, 0x51, 0x25, 0x4F, 0x9A, + 0x25, 0x19, 0xBA, 0xE2, 0x31, 0xC5, 0x6D, 0xB0, 0x11, 0x28, 0x1D, 0xAF, + 0x8B, 0xEB, 0x75, 0x69, 0x85, 0xB9, 0x27, 0x47, 0xB1, 0x84, 0x35, 0x19, + 0xC6, 0xEB, 0xE9, 0x4E, 0x3F, 0x61, 0xFD, 0xA4, 0xEE, 0xD2, 0xC0, 0x31, + 0xEC, 0x22, 0x56, 0xE5, 0xB7, 0x22, 0x76, 0x34, 0x2A, 0x75, 0xC1, 0x5D, + 0x76, 0x7A, 0xFE, 0x4D, 0x48, 0x17, 0x53, 0xEA, 0xCD, 0x13, 0x09, 0xFF, + 0x04, 0x9D, 0xB1, 0x11, 0x70, 0xAF, 0x9B, 0x15, 0x1B, 0xB6, 0x81, 0xD4, + 0xF6, 0x38, 0x72, 0x65, 0xF5, 0xFB, 0x01, 0xF5, 0xB0, 0xD0, 0xBA, 0xCA, + 0xF0, 0x8E, 0x94, 0x81, 0xB1, 0x39, 0xBD, 0x7F, 0x3A, 0x33, 0x89, 0x04, + 0xE5, 0x96, 0x7E, 0xF6, 0xFC, 0x48, 0xE5, 0x96, 0xCF, 0x05, 0xAE, 0x8F, + 0x3E, 0xDE, 0x30, 0x92, 0xB8, 0xE0, 0x20, 0x1B, 0x86, 0xC3, 0x12, 0xA8, + 0xCA, 0xD8, 0xF3, 0xF5, 0xBF, 0x55, 0x0D, 0x8B, 0x20, 0xC8, 0x96, 0xB8, + 0x8E, 0x47, 0xCB, 0xC8, 0xE2, 0x73, 0xF9, 0x1A, 0xFD, 0x07, 0x90, 0x71, + 0xDB, 0xC4, 0xAF, 0xCE, 0xB4, 0xB6, 0x3A, 0x53, 0xCB, 0x1F, 0xCC, 0x67, + 0xE9, 0x9E, 0xD2, 0x82, 0x1F, 0xE0, 0x46, 0x46, 0xF8, 0xE6, 0x22, 0x01, + 0xE7, 0x54, 0x66, 0xB3, 0x66, 0x2E, 0xE3, 0x2B, 0x7E, 0x78, 0x6C, 0x68, + 0x81, 0xDC, 0x9E, 0x6F, 0xCA, 0xD3, 0x25, 0x94, 0x30, 0x84, 0x4F, 0x32, + 0xD5, 0x37, 0x21, 0x2C, 0xF6, 0xCE, 0x85, 0x83, 0x21, 0x6F, 0xC9, 0x09, + 0xE5, 0x0A, 0xE4, 0x8C, 0x22, 0x66, 0xB9, 0x50, 0xFB, 0xE6, 0x97, 0xCF, + 0x74, 0x8A, 0xC7, 0x67, 0xCB, 0x38, 0xDA, 0x85, 0x47, 0x8B, 0xF0, 0x64, + 0xF3, 0xFF, 0xA4, 0x91, 0x05, 0x7C, 0xE8, 0xED, 0x6F, 0x9F, 0x93, 0x3E, + 0x18, 0xA2, 0x4C, 0x68, 0x0C, 0x62, 0xEB, 0x6D, 0x3A, 0x45, 0x52, 0xBF, + 0x05, 0xC1, 0xB8, 0xB5, 0x0C, 0xBB, 0xCB, 0xF7, 0xA5, 0x88, 0xB4, 0x94, + 0x00, 0x77, 0x92, 0x9D, 0xA3, 0xFB, 0xC2, 0x04, 0x11, 0x4F, 0x8F, 0xA2, + 0x22, 0xFB, 0xEC, 0x71, 0xCA, 0x5E, 0x3A, 0xC2, 0x42, 0x1C, 0x2B, 0x74, + 0xCE, 0x9E, 0x46, 0xF7, 0xEF, 0x48, 0x24, 0xCF, 0xBA, 0xE1, 0x0A, 0x92, + 0xC9, 0x59, 0xF5, 0x10, 0xD7, 0x25, 0x6E, 0xAB, 0x9B, 0xAB, 0xD4, 0xC6, + 0x16, 0x98, 0x5B, 0x31, 0x87, 0x39, 0x21, 0xA9, 0x09, 0x7F, 0x47, 0x0B, + 0xF4, 0xFB, 0xA9, 0xFE, 0x60, 0x07, 0x1A, 0x31, 0xEC, 0x48, 0x64, 0x0D, + 0x73, 0x71, 0xDF, 0x78, 0xE6, 0xB1, 0x76, 0xD9, 0xE1, 0x4C, 0xCF, 0x80, + 0xBD, 0x58, 0x96, 0xAF, 0x3D, 0x3D, 0x82, 0x7B, 0xC0, 0x16, 0xD7, 0xD7, + 0x8C, 0xBC, 0x5F, 0x91, 0x30, 0xA3, 0x6C, 0x5D, 0x25, 0xCF, 0xAC, 0xA6, + 0xEC, 0xCF, 0x42, 0x41, 0x05, 0xA4, 0x74, 0x2E, 0x82, 0xBA, 0x21, 0x42, + 0x95, 0xDF, 0xF2, 0xD6, 0x29, 0x5B, 0x04, 0xBD, 0x47, 0x8E, 0x47, 0xBA, + 0x3F, 0x99, 0x20, 0x4D, 0x74, 0x56, 0xD6, 0x43, 0x42, 0xC4, 0x36, 0x7D, + 0x24, 0xE3, 0xC9, 0xD8, 0x66, 0xAB, 0x3D, 0x62, 0xE2, 0xA9, 0x51, 0x3C, + 0x9F, 0x1A, 0xA7, 0x6C, 0x7F, 0x4D, 0xC9, 0xEB, 0x21, 0x66, 0xBB, 0x46, + 0xA4, 0x97, 0x5E, 0x6D, 0xAD, 0xD4, 0x6F, 0xFB, 0xB1, 0xC6, 0x6F, 0x51, + 0x2F, 0x0A, 0x9A, 0x97, 0x8E, 0xBB, 0x80, 0xD7, 0x16, 0x70, 0xC4, 0x98, + 0xEE, 0xB9, 0x69, 0x48, 0x49, 0xA2, 0xBB, 0x93, 0x8B, 0xE6, 0x10, 0xCB, + 0xC3, 0x8D, 0x57, 0x17, 0x0A, 0xFE, 0x1B, 0xB5, 0x40, 0x06, 0x7D, 0xE4, + 0x89, 0x76, 0x13, 0x01, 0xB1, 0x2E, 0x01, 0xD7, 0x20, 0x1D, 0x5B, 0xE9, + 0x5C, 0x11, 0x24, 0x78, 0xF5, 0x9F, 0x02, 0xF8, 0x8B, 0xA9, 0x0B, 0x22, + 0x42, 0x66, 0x1A, 0xFE, 0x15, 0xF7, 0x51, 0x93, 0xB7, 0xDB, 0x00, 0x52, + 0x0A, 0xF0, 0x4A, 0xA8, 0xE1, 0xDF, 0xCE, 0x88, 0xBF, 0x47, 0x47, 0x73, + 0x48, 0x19, 0x89, 0x3B, 0xDD, 0xD2, 0x82, 0x14, 0xB4, 0x70, 0xF6, 0xF2, + 0xC1, 0x4D, 0x8B, 0x47, 0x74, 0x12, 0xC1, 0x42, 0x69, 0xE1, 0xFD, 0x25, + 0x6F, 0x62, 0xF6, 0x41, 0xF8, 0x60, 0x83, 0xB8, 0x91, 0x06, 0x09, 0x5D, + 0x90, 0x2E, 0x52, 0xB3, 0xFC, 0x34, 0x86, 0xD7, 0xC8, 0x27, 0x94, 0xA4, + 0xB9, 0x32, 0x7E, 0xA0, 0xA4, 0xB4, 0xE5, 0x2F, 0x14, 0x37, 0x7B, 0xFA, + 0x9C, 0x15, 0xD0, 0xE2, 0x13, 0x4C, 0x62, 0x24, 0xE8, 0x0C, 0xDC, 0x52, + 0x10, 0xC3, 0xCE, 0x6F, 0xE5, 0x21, 0x57, 0xF3, 0x17, 0xD0, 0x0F, 0x67, + 0x9D, 0x58, 0xEA, 0x84, 0x13, 0x9E, 0xE3, 0xEA, 0xF6, 0xBC, 0x5C, 0x40, + 0xCE, 0xCC, 0xAA, 0xE8, 0x5B, 0x41, 0x86, 0x68, 0xD7, 0xC3, 0x3B, 0x66, + 0xFB, 0x6B, 0xC1, 0xAE, 0x72, 0x29, 0xE6, 0x6C, 0x2A, 0x71, 0xB4, 0xC5, + 0x4F, 0x69, 0xBA, 0x40, 0x80, 0x58, 0x08, 0x4F, 0x8D, 0xE5, 0x69, 0x44, + 0x1B, 0xC0, 0x3D, 0x97, 0xAB, 0x7D, 0x23, 0xF3, 0x79, 0x40, 0x1A, 0x9D, + 0x04, 0x98, 0x31, 0x6A, 0x5E, 0x6C, 0x59, 0x17, 0xEA, 0x34, 0xEC, 0x29, + 0xA2, 0x7D, 0xC9, 0x2B, 0x5B, 0x76, 0x9C, 0x15, 0x22, 0x67, 0x6C, 0x08, + 0x33, 0x41, 0xC5, 0x46, 0xA7, 0xA6, 0x0E, 0xEB, 0xFB, 0x92, 0x17, 0x41, + 0xAF, 0x3B, 0x22, 0x96, 0xDE, 0x35, 0xD6, 0xB6, 0x7C, 0xEF, 0x6B, 0xF6, + 0x10, 0xFC, 0xE7, 0xBC, 0x38, 0xE2, 0xB7, 0xA6, 0x93, 0x1F, 0x12, 0x86, + 0xF7, 0x1F, 0xBE, 0x41, 0x42, 0xCC, 0xDB, 0xF8, 0x52, 0xCB, 0xFD, 0xFF, + 0x40, 0xC1, 0x38, 0x50, 0x6F, 0x72, 0x77, 0x2B, 0xB1, 0x27, 0xCD, 0x9A, + 0x0F, 0x6B, 0x5D, 0x1E, 0xE7, 0x9A, 0xB9, 0xA4, 0xA2, 0xC3, 0x8C, 0x2D, + 0x73, 0xC1, 0xF9, 0x6B, 0x5E, 0x08, 0xD8, 0x8B, 0x1E, 0x05, 0x0A, 0x04, + 0xBD, 0x29, 0xE2, 0x57, 0x52, 0xF7, 0x21, 0xEE, 0x10, 0x36, 0x7E, 0x90, + 0x09, 0x08, 0xA3, 0x44, 0xE1, 0xCA, 0xCF, 0x59, 0x53, 0xDB, 0x6E, 0x65, + 0x28, 0xEE, 0xF3, 0x60, 0xCB, 0x47, 0x83, 0x18, 0xDC, 0x05, 0xAD, 0xCC, + 0x04, 0x09, 0x91, 0x05, 0xAE, 0x96, 0x2F, 0x10, 0x0E, 0x50, 0x0C, 0xF0, + 0x57, 0xA8, 0xEE, 0x81, 0x89, 0x4C, 0x9B, 0x72, 0x13, 0xA1, 0xB9, 0x5A, + 0x9E, 0x31, 0xB2, 0xA9, 0x80, 0xA8, 0x51, 0xEA, 0x7E, 0x59, 0xA7, 0xB9, + 0x7C, 0xBE, 0x82, 0x13, 0xC7, 0x30, 0xAE, 0xF9, 0xF5, 0x22, 0x15, 0xE1, + 0xC6, 0xC2, 0x06, 0xD9, 0xC9, 0xD9, 0xF4, 0x4C, 0xBF, 0x0A, 0x02, 0xD3, + 0x4C, 0x38, 0x28, 0x60, 0x52, 0xB9, 0xF7, 0x3C, 0xD9, 0x1C, 0x28, 0x98, + 0x89, 0xAC, 0xBD, 0x81, 0x17, 0x5E, 0x59, 0xF5, 0x55, 0xC7, 0xED, 0x58, + 0x1F, 0x29, 0xE7, 0x57, 0xC1, 0x27, 0x0A, 0x7E, 0x67, 0x00, 0x56, 0xD5, + 0x93, 0x99, 0xA6, 0x8E, 0x7D, 0xB1, 0xA0, 0x17, 0x98, 0x88, 0xA8, 0x9D, + 0x2D, 0x27, 0x6B, 0x0C, 0x59, 0x5C, 0x0B, 0x3C, 0x6A, 0x3B, 0xFD, 0x44, + 0x37, 0x18, 0xAA, 0x49, 0xE7, 0xA1, 0xC1, 0x24, 0xCD, 0xB6, 0xA6, 0x2C, + 0x4D, 0x38, 0x1D, 0x3A, 0x0B, 0xA6, 0x42, 0x84, 0x48, 0x63, 0xCB, 0x5A, + 0x74, 0xBF, 0x62, 0x3B, 0x5E, 0x55, 0x94, 0xC7, 0x52, 0x7D, 0xD1, 0xA6, + 0xFE, 0x3B, 0x1A, 0xE8, 0x80, 0x3D, 0x57, 0x9E, 0x03, 0xE4, 0xA7, 0xB0, + 0x52, 0x84, 0x42, 0xC4, 0x95, 0x63, 0xC9, 0xD2, 0x6E, 0xA9, 0x51, 0xE8, + 0x51, 0x9C, 0xFB, 0x67, 0xD1, 0xF6, 0x37, 0xC2, 0x56, 0x64, 0x95, 0x70, + 0x07, 0x23, 0x0C, 0x79, 0x4C, 0x20, 0x52, 0x94, 0x68, 0x9B, 0xC3, 0x64, + 0x7A, 0xBC, 0xF6, 0x54, 0x97, 0xF0, 0xEB, 0x0F, 0x71, 0x8E, 0x69, 0x85, + 0xCC, 0x2F, 0x2B, 0x2F, 0xCF, 0x8D, 0xEA, 0x1A, 0x04, 0x37, 0x47, 0xDA, + 0xFE, 0xCF, 0xD2, 0x5E, 0xA8, 0xE7, 0x03, 0x21, 0xBA, 0xFE, 0x88, 0x21, + 0x33, 0x17, 0xE3, 0x78, 0xB0, 0xE4, 0x71, 0x47, 0x1A, 0x88, 0x9B, 0x4F, + 0x5F, 0x38, 0xF8, 0x0F, 0x8F, 0x82, 0x04, 0x72, 0xDC, 0x1E, 0x7B, 0xB6, + 0x90, 0x55, 0x19, 0xDE, 0xD7, 0x0E, 0xE6, 0xED, 0xEE, 0x9A, 0x47, 0x5A, + 0x63, 0xC4, 0xE6, 0x2A, 0x09, 0xB0, 0xC4, 0x0A, 0xBA, 0x70, 0xF8, 0x18, + 0x0F, 0xE1, 0x87, 0xAD, 0x41, 0xCE, 0xB9, 0x4B, 0x6E, 0xF1, 0x0B, 0x04, + 0xAC, 0x6A, 0x4F, 0x09, 0x40, 0xDE, 0x60, 0xF2, 0x10, 0xC7, 0xD8, 0x11, + 0xFB, 0x58, 0x4D, 0x8C, 0x6F, 0xD9, 0xF7, 0xA5, 0xC3, 0x13, 0x16, 0x39, + 0x25, 0x5A, 0x01, 0xE5, 0x92, 0x06, 0x8A, 0x4A, 0x89, 0xB5, 0x43, 0x7A, + 0x39, 0xC2, 0x12, 0xCD, 0x45, 0x8B, 0x8E, 0x59, 0x1C, 0x4F, 0x72, 0xA6, + 0xEE, 0xA4, 0x88, 0x6F, 0x04, 0xE8, 0x68, 0xD1, 0xDC, 0x90, 0x41, 0x28, + 0x8C, 0x2B, 0xC9, 0xF1, 0x92, 0x08, 0xAC, 0x7F, 0x7E, 0xEE, 0x7A, 0x3F, + 0x54, 0xFB, 0x45, 0x7F, 0x73, 0xF6, 0xE5, 0xE2, 0xE4, 0x8C, 0x05, 0xA4, + 0xAF, 0x63, 0x86, 0xB4, 0xA5, 0x6B, 0x33, 0x19, 0x00, 0x79, 0xB0, 0x73, + 0x2C, 0x89, 0xFC, 0x81, 0xDF, 0x7E, 0x5C, 0x59, 0x02, 0xF2, 0xFA, 0x52, + 0x9C, 0x1E, 0xD4, 0xE5, 0x56, 0x90, 0x56, 0x23, 0x3A, 0x7A, 0xFD, 0x6F, + 0xB4, 0x98, 0x8D, 0x47, 0xD7, 0x4D, 0x84, 0xB9, 0x2A, 0x09, 0xF2, 0x6C, + 0xAB, 0x1C, 0x70, 0xD1, 0x01, 0xD5, 0x63, 0xF0, 0xDF, 0x3F, 0xCD, 0x27, + 0x94, 0x36, 0xB8, 0xE8, 0xB9, 0xAF, 0xB7, 0xDD, 0x41, 0xE1, 0x43, 0xC7, + 0xE4, 0xF5, 0xA8, 0xB7, 0xF4, 0x59, 0x91, 0x84, 0x96, 0x0A, 0x6E, 0x13, + 0xA8, 0x43, 0x1C, 0xC1, 0x4A, 0xB6, 0x52, 0x6E, 0x36, 0x21, 0x02, 0x18, + 0x15, 0xB1, 0x65, 0xA5, 0xE1, 0x0F, 0xA5, 0x0C, 0xE1, 0xFF, 0xE2, 0x10, + 0xCC, 0xBB, 0xBD, 0x33, 0x91, 0x73, 0x7D, 0xA0, 0x16, 0x23, 0x39, 0x9B, + 0x36, 0xCF, 0x94, 0x2F, 0x7C, 0xA0, 0x63, 0xE8, 0x3C, 0xB8, 0xBE, 0xC5, + 0x03, 0x3D, 0x1A, 0x3D, 0x97, 0x10, 0x7F, 0x79, 0x7F, 0xCA, 0x94, 0x77, + 0x30, 0x1A, 0x5B, 0x3A, 0xF1, 0xAF, 0xF1, 0xF4, 0x4F, 0x69, 0xA8, 0x0C, + 0x7B, 0x87, 0xED, 0x30, 0x99, 0xEE, 0xEE, 0xD5, 0xEF, 0x29, 0x1B, 0xB9, + 0xC0, 0x4C, 0xF6, 0x46, 0x46, 0xD9, 0x12, 0x9E, 0x73, 0xF6, 0x5C, 0x8F, + 0x12, 0x14, 0xF1, 0xFC, 0x4C, 0x49, 0xE6, 0xDF, 0xCD, 0x92, 0x82, 0xDC, + 0xD6, 0xF1, 0x2D, 0x04, 0x27, 0x94, 0x55, 0xF5, 0x7E, 0xC5, 0x81, 0x4B, + 0x84, 0xB8, 0x6F, 0x43, 0xD4, 0x4E, 0x58, 0x44, 0x66, 0x31, 0xC8, 0xB4, + 0xD4, 0x64, 0x37, 0x72, 0xAA, 0x46, 0xD0, 0x7A, 0x49, 0x94, 0xEA, 0x1E, + 0xF6, 0xED, 0x31, 0xE2, 0xCF, 0xD0, 0x12, 0x53, 0x5F, 0xC4, 0xA9, 0xF4, + 0x79, 0xD5, 0xB2, 0x2E, 0xD2, 0x7C, 0xC9, 0x12, 0xDE, 0xFA, 0xED, 0x9E, + 0x6B, 0xFB, 0x08, 0xBE, 0x61, 0x53, 0x96, 0x1A, 0xB8, 0x71, 0x2C, 0x5E, + 0xE5, 0xF8, 0xAE, 0x68, 0xF5, 0x39, 0x11, 0x53, 0xDD, 0x30, 0x4F, 0x49, + 0xCB, 0x5E, 0x9C, 0x20, 0x2B, 0x99, 0x77, 0x8F, 0xA8, 0x46, 0x5F, 0xD2, + 0xBB, 0x31, 0x8E, 0x2C, 0x84, 0x60, 0x63, 0xEB, 0xE9, 0x0C, 0x20, 0x98, + 0xAA, 0x58, 0xF5, 0x75, 0xA0, 0x2E, 0xB2, 0x65, 0x79, 0xA2, 0xB9, 0xAB, + 0xD9, 0xE8, 0xA6, 0xF3, 0x1B, 0x34, 0x37, 0x75, 0xA4, 0xFF, 0x00, 0xF8, + 0xA6, 0xF6, 0x26, 0xA4, 0xFF, 0x63, 0x14, 0xB9, 0xA5, 0xD0, 0x12, 0x45, + 0x08, 0x8C, 0x6E, 0x78, 0x0C, 0xC5, 0x75, 0xB8, 0xEC, 0x77, 0x73, 0xEA, + 0x87, 0x6F, 0xAD, 0x4D, 0x98, 0xCD, 0xC7, 0xA5, 0x20, 0xC3, 0x4E, 0x31, + 0x79, 0x16, 0xB0, 0x2A, 0x9A, 0x84, 0x02, 0xAA, 0x00, 0x60, 0xBB, 0x58, + 0x84, 0xC6, 0x95, 0xF3, 0xF4, 0x6C, 0xEB, 0xD8, 0xEC, 0x1A, 0xC3, 0x92, + 0xD6, 0x09, 0x58, 0x56, 0xDB, 0x64, 0xF9, 0x00, 0x1A, 0x45, 0xF4, 0x2F, + 0x65, 0x71, 0x8C, 0xD0, 0x9B, 0xFA, 0x0B, 0x7E, 0xDF, 0x29, 0xF1, 0x91, + 0xD5, 0x33, 0xF2, 0x46, 0xC3, 0xBD, 0x30, 0xF8, 0x7E, 0x5A, 0xA7, 0x6A, + 0x19, 0x88, 0xC3, 0xE3, 0x5B, 0x37, 0xA9, 0x4C, 0x4F, 0xB3, 0xBD, 0xB8, + 0x65, 0x57, 0xCB, 0xBE, 0x79, 0x82, 0x88, 0xDA, 0xB5, 0xAA, 0x9A, 0xD3, + 0x05, 0xFA, 0x7A, 0x7B, 0xC0, 0xB9, 0x33, 0xD0, 0xCE, 0x34, 0xEF, 0x43, + 0x41, 0x36, 0x23, 0xD4, 0x9C, 0x1F, 0x35, 0x70, 0xC4, 0x18, 0x87, 0x51, + 0x7B, 0x9C, 0x8E, 0x24, 0x7C, 0x73, 0x9F, 0x6D, 0xD6, 0x4B, 0xFA, 0x22, + 0x1F, 0x99, 0x2E, 0x1F, 0xEE, 0x13, 0xB4, 0xA3, 0xE8, 0xCE, 0xF6, 0xF3, + 0x00, 0x9B, 0xE3, 0xDD, 0x0F, 0x8A, 0xCB, 0xC5, 0x49, 0xB1, 0xCA, 0x3F, + 0x83, 0x96, 0xB4, 0xA3, 0x37, 0x72, 0x43, 0xAD, 0x2A, 0x79, 0xAF, 0x7F, + 0x56, 0x18, 0xB3, 0x95, 0xA2, 0x3B, 0x15, 0x8A, 0x82, 0xFC, 0xED, 0xD1, + 0xA1, 0x81, 0x44, 0x23, 0x88, 0x39, 0x89, 0xD8, 0x11, 0x8F, 0xAC, 0x62, + 0xCB, 0xC9, 0x9F, 0x88, 0x3C, 0xDD, 0xE8, 0x4B, 0xB4, 0xF4, 0x99, 0xC7, + 0x9E, 0xD9, 0xB7, 0xBC, 0x5B, 0x81, 0xD9, 0x0C, 0x1C, 0xA2, 0x8B, 0x36, + 0x3C, 0xE2, 0xA9, 0xD4, 0x81, 0x2D, 0x5D, 0x72, 0x5A, 0xBF, 0xB2, 0x62, + 0x8E, 0x48, 0x74, 0x56, 0xB8, 0xB9, 0x48, 0x04, 0x53, 0xCA, 0x0F, 0x20, + 0x4E, 0x28, 0xD4, 0x0B, 0xC8, 0xE0, 0x3F, 0x09, 0xC5, 0x8F, 0x19, 0x99, + 0xB3, 0x5F, 0xC4, 0xC7, 0x5A, 0x65, 0xD6, 0x1F, 0x27, 0xB0, 0xD2, 0x28, + 0x03, 0x7B, 0xAB, 0x62, 0x6C, 0xAA, 0x78, 0xA0, 0x15, 0x00, 0xE8, 0x0E, + 0xA8, 0x28, 0xAF, 0x1B, 0xCD, 0x1E, 0x5B, 0x09, 0x0E, 0x47, 0x10, 0xA8, + 0x67, 0x32, 0x1D, 0x05, 0x7D, 0xBB, 0x57, 0x81, 0x2B, 0xDB, 0x4B, 0x6A, + 0x4F, 0xBF, 0x9E, 0x51, 0x45, 0xC3, 0xCC, 0x70, 0xC6, 0x9E, 0x70, 0x30, + 0x82, 0x65, 0xCE, 0x23, 0xCD, 0x6A, 0x4F, 0x3B, 0xA5, 0x58, 0x69, 0xFE, + 0x37, 0x27, 0xE6, 0x03, 0x0C, 0x99, 0x8D, 0x31, 0xF5, 0xC0, 0xC8, 0xAC, + 0x73, 0xCC, 0x48, 0x86, 0xC6, 0x4B, 0xC4, 0xE8, 0x13, 0x0A, 0xEE, 0xC0, + 0x18, 0xC8, 0xE3, 0x01, 0x9B, 0x2B, 0xB5, 0x64, 0x06, 0xA9, 0xB6, 0xFD, + 0xC4, 0xC1, 0x5D, 0x42, 0x49, 0xEC, 0x83, 0x53, 0x61, 0xAF, 0x7A, 0x8D, + 0x8C, 0x1F, 0x7C, 0xBE, 0xE5, 0xA1, 0x2B, 0x8E, 0x20, 0x31, 0x4F, 0x37, + 0x6A, 0x88, 0xF8, 0xBF, 0x0C, 0xD9, 0xBA, 0x1B, 0xCB, 0xC7, 0x23, 0x81, + 0x85, 0x47, 0x93, 0xD0, 0xC0, 0x03, 0xBE, 0x2E, 0x3D, 0x89, 0xE3, 0x75, + 0xAB, 0x5B, 0x32, 0x65, 0x83, 0x40, 0xBF, 0x16, 0xA9, 0x25, 0xE5, 0x4A, + 0xFD, 0x86, 0xD2, 0x5F, 0xA0, 0xCF, 0x1F, 0xFF, 0x63, 0xFF, 0x75, 0x2B, + 0xAF, 0x1A, 0x0B, 0x3A, 0x03, 0xE3, 0x2D, 0x04, 0x57, 0xDF, 0x56, 0x6D, + 0x83, 0x61, 0x81, 0xC5, 0xDB, 0x51, 0xDA, 0x70, 0x0B, 0x5D, 0x5B, 0x21, + 0xB6, 0xF4, 0x20, 0x0E, 0x44, 0xFD, 0x7D, 0xA0, 0xD8, 0x5A, 0xF4, 0x16, + 0xF1, 0x69, 0x11, 0x6B, 0x13, 0x8F, 0xB3, 0xEC, 0x1E, 0x0C, 0x7D, 0x63, + 0xBF, 0x96, 0xDD, 0xA2, 0x80, 0x8F, 0xE7, 0x47, 0x57, 0x4B, 0xCA, 0xE5, + 0xF1, 0xB2, 0x66, 0xB5, 0xDC, 0x27, 0x75, 0x72, 0x49, 0x0C, 0x1E, 0x69, + 0x6D, 0x3E, 0x31, 0xC4, 0x36, 0xCA, 0x3C, 0xE9, 0x5B, 0xC5, 0xDA, 0x4E, + 0x28, 0xBA, 0x12, 0x39, 0x40, 0x9E, 0x92, 0x3E, 0x77, 0x60, 0xC7, 0xDF, + 0x0F, 0xE7, 0xDC, 0x3B, 0x97, 0x39, 0xAF, 0x24, 0x49, 0xBA, 0xB0, 0xA2, + 0x44, 0x04, 0x20, 0x3C, 0xE6, 0x40, 0x87, 0x30, 0xC2, 0x27, 0x23, 0x69, + 0x4F, 0xDE, 0x13, 0x94, 0x09, 0x15, 0xDB, 0x39, 0xDC, 0x04, 0x07, 0xE3, + 0x1B, 0x0E, 0xAA, 0x80, 0x0D, 0xA7, 0x58, 0x87, 0xDC, 0x0C, 0xC0, 0xDE, + 0x43, 0x81, 0x70, 0x55, 0x11, 0xC8, 0x69, 0x42, 0xA2, 0x72, 0x35, 0xC4, + 0xB9, 0x51, 0x2A, 0xD9, 0x19, 0xEE, 0x68, 0xE1, 0x86, 0x02, 0x58, 0x24, + 0x8D, 0xE0, 0xF8, 0x0D, 0x19, 0x21, 0x24, 0xF7, 0x23, 0x3D, 0x07, 0xA0, + 0x52, 0xE3, 0xE4, 0x98, 0xA3, 0xFD, 0x25, 0x0C, 0x48, 0x26, 0xC2, 0x97, + 0xEB, 0x73, 0xFB, 0x00, 0x95, 0xF9, 0x12, 0x45, 0xD9, 0xA8, 0x41, 0xFE, + 0xF0, 0xD7, 0x18, 0x7E, 0x6E, 0x9A, 0xFA, 0x78, 0x15, 0xA6, 0x54, 0xB0, + 0x3A, 0x8A, 0xFA, 0x8F, 0xD1, 0xE5, 0x22, 0xB9, 0x19, 0x40, 0xC1, 0x19, + 0xBA, 0x6B, 0xD5, 0x04, 0x67, 0x4E, 0x1C, 0xDA, 0x81, 0x16, 0x22, 0xE8, + 0xB4, 0x7C, 0x99, 0xB7, 0xDD, 0x6E, 0x19, 0x16, 0xAE, 0x11, 0x58, 0xE4, + 0x03, 0xA1, 0xA2, 0x6C, 0xDF, 0xF3, 0x1A, 0x88, 0x4B, 0xAF, 0x3F, 0xA2, + 0xB0, 0x54, 0xE7, 0x68, 0xE1, 0x3B, 0xB7, 0x2F, 0xFC, 0xB3, 0xE6, 0x80, + 0x6F, 0x2B, 0x82, 0x7E, 0x15, 0x6E, 0x61, 0xD3, 0x5F, 0x25, 0xBB, 0xE2, + 0xF4, 0x41, 0xD1, 0xEB, 0x47, 0x8E, 0x50, 0x0F, 0x8E, 0x04, 0x80, 0xB5, + 0xA7, 0x9E, 0xBB, 0x55, 0x03, 0x69, 0x11, 0x98, 0xAD, 0x64, 0x4E, 0x65, + 0x9C, 0xB2, 0x17, 0x2E, 0x0A, 0xD6, 0x4C, 0xD9, 0x55, 0xF1, 0x12, 0x08, + 0xB4, 0xB4, 0x4C, 0xDE, 0xE1, 0x27, 0x15, 0x66, 0x28, 0x27, 0x8E, 0xDE, + 0xCE, 0xF0, 0x86, 0x28, 0x2B, 0x11, 0x0B, 0x45, 0x27, 0x31, 0xE3, 0x3D, + 0x01, 0x71, 0xBD, 0x20, 0x4F, 0xE4, 0x03, 0xBB, 0xFA, 0x1B, 0x63, 0x63, + 0x62, 0x4F, 0x0C, 0x9D, 0x47, 0x27, 0x97, 0x0B, 0x0A, 0x53, 0x4E, 0x08, + 0xDA, 0x55, 0xDD, 0x27, 0xEB, 0x7D, 0x3B, 0x04, 0x2E, 0x29, 0x8E, 0x40, + 0x2F, 0x6B, 0xCC, 0x05, 0xA8, 0x2A, 0x9E, 0x33, 0xF5, 0xB3, 0x82, 0x07, + 0x8D, 0x2B, 0x16, 0xA1, 0x8B, 0x6F, 0xB9, 0x06, 0x67, 0x8A, 0x4B, 0x9B, + 0x7F, 0x92, 0x21, 0x66, 0x5F, 0x83, 0x57, 0x81, 0xD1, 0x71, 0x02, 0x7C, + 0x9E, 0xA1, 0xFB, 0x69, 0xF7, 0x7F, 0x57, 0xA7, 0x49, 0xB3, 0x86, 0xA2, + 0x21, 0x9C, 0x71, 0xB8, 0x39, 0x45, 0x12, 0x42, 0x41, 0xA4, 0xF3, 0x89, + 0x80, 0xF5, 0x13, 0x2F, 0x79, 0xDB, 0xA0, 0x0E, 0xED, 0x9A, 0x6A, 0xA0, + 0x4C, 0x09, 0xC9, 0x92, 0xAC, 0x10, 0x2F, 0x10, 0xDF, 0xE8, 0xCB, 0x1D, + 0x0F, 0x0D, 0xE1, 0x2E, 0x62, 0x99, 0xAC, 0xCB, 0x52, 0xD2, 0x1B, 0xAF, + 0xB6, 0xB0, 0x78, 0xE0, 0x31, 0xDC, 0x6D, 0xBE, 0x7A, 0xF9, 0x02, 0xE1, + 0x48, 0xE5, 0x14, 0xD8, 0x90, 0x9C, 0xE6, 0xE3, 0xF6, 0x6D, 0x7B, 0xF3, + 0xDB, 0x60, 0x00, 0x39, 0x38, 0xAB, 0xE7, 0x17, 0xE9, 0x15, 0xC6, 0x3A, + 0x7D, 0x40, 0xDF, 0xD9, 0x02, 0xDC, 0x83, 0x50, 0x76, 0xB0, 0x12, 0x16, + 0x11, 0x57, 0x1D, 0xC1, 0x22, 0xBC, 0x88, 0x46, 0xCB, 0x13, 0x5D, 0x8F, + 0x8F, 0xED, 0xCD, 0xAE, 0x15, 0xC0, 0x2D, 0xB0, 0x2C, 0xDA, 0xD7, 0x38, + 0x35, 0x29, 0x2D, 0xF5, 0x0E, 0xF0, 0xD5, 0x96, 0x74, 0x80, 0x96, 0xAB, + 0x83, 0xAA, 0xA8, 0xA1, 0x55, 0xB4, 0x90, 0x35, 0x0F, 0x4F, 0x19, 0xF8, + 0x52, 0x8A, 0x81, 0x4A, 0xDB, 0x5F, 0x34, 0x25, 0xF9, 0xBB, 0x48, 0x8B, + 0x66, 0x18, 0x64, 0x32, 0xC2, 0xAE, 0x44, 0x8E, 0x7F, 0xB1, 0x7F, 0x3F, + 0x09, 0x83, 0xB4, 0x21, 0xEF, 0xF6, 0x70, 0xF8, 0xEB, 0xE6, 0x6A, 0xFB, + 0x0B, 0x46, 0x23, 0x05, 0xE8, 0x6D, 0x2B, 0x82, 0x87, 0x89, 0xA6, 0x6D, + 0x53, 0x86, 0xD6, 0xAC, 0x0C, 0xD3, 0x6C, 0x3A, 0x77, 0x4F, 0x7F, 0xDD, + 0x61, 0x47, 0x5C, 0x17, 0x02, 0x79, 0x49, 0x15, 0xCC, 0xE7, 0x33, 0xF8, + 0x01, 0x51, 0x64, 0x43, 0xD7, 0x00, 0x29, 0x15, 0x69, 0xD2, 0xDA, 0xF6, + 0x66, 0xE1, 0x65, 0xCA, 0x40, 0xB5, 0x8A, 0xE1, 0x0B, 0x1D, 0x54, 0x17, + 0xF6, 0x95, 0xD1, 0xFB, 0x21, 0xD9, 0x4B, 0x34, 0xD8, 0x0D, 0x44, 0xB7, + 0xEF, 0x5A, 0x94, 0xFC, 0xED, 0x74, 0x01, 0xED, 0x7B, 0x70, 0x52, 0x8D, + 0xC9, 0xF2, 0x33, 0x61, 0x74, 0x83, 0xC5, 0x4D, 0x72, 0x53, 0xFA, 0x68, + 0xCA, 0xA3, 0x85, 0xEF, 0x8A, 0x7E, 0xEF, 0xEC, 0xF8, 0xAA, 0x22, 0x2D, + 0x53, 0xB2, 0xA5, 0xCE, 0x74, 0x3D, 0xF1, 0x87, 0xCE, 0xE7, 0xA0, 0xAE, + 0xA6, 0x68, 0xB1, 0xA4, 0xE1, 0x3F, 0x60, 0xBC, 0x9A, 0x05, 0xFF, 0x1F, + 0xA4, 0x12, 0x7F, 0xC5, 0xE7, 0x86, 0x18, 0x8A, 0x64, 0x94, 0xDB, 0xFC, + 0xB2, 0x4C, 0xFB, 0x3E, 0x2A, 0xB0, 0xC5, 0x88, 0xFC, 0x00, 0x6A, 0x5E, + 0x33, 0x81, 0xD4, 0x40, 0x12, 0x44, 0xB0, 0x24, 0xA9, 0xE6, 0xFB, 0x95, + 0xEF, 0x56, 0xF2, 0x4B, 0xF0, 0x46, 0x8B, 0xBF, 0xE6, 0x8F, 0x77, 0x90, + 0x0E, 0x3B, 0xDA, 0xCD, 0xDC, 0x6F, 0x78, 0x25, 0x37, 0x23, 0x55, 0x3A, + 0xBA, 0x35, 0x74, 0x41, 0x31, 0xE0, 0x34, 0xFF, 0x89, 0x14, 0x92, 0xCD, + 0x65, 0x6E, 0x22, 0x00, 0x6C, 0xFE, 0x1E, 0x73, 0x5C, 0x59, 0xC6, 0x88, + 0x32, 0xFA, 0xC4, 0x9D, 0x8F, 0xF0, 0x54, 0x6F, 0x64, 0xBC, 0x13, 0x44, + 0x94, 0x04, 0x92, 0xDE, 0x30, 0xCA, 0x9E, 0xE8, 0x20, 0x3A, 0x03, 0x43, + 0xFD, 0xE1, 0x6B, 0x17, 0x09, 0xCC, 0xEC, 0x62, 0x3B, 0x10, 0x8E, 0x79, + 0x64, 0x15, 0x6C, 0x01, 0x09, 0x0F, 0x0D, 0x8E, 0x79, 0xBC, 0xD4, 0xE3, + 0x01, 0x2C, 0xAF, 0x0C, 0xF9, 0x5F, 0x53, 0xB8, 0xB0, 0x7E, 0x6D, 0xB9, + 0x8D, 0x29, 0xC9, 0x3F, 0x1E, 0x82, 0xB8, 0xF0, 0xEB, 0xDD, 0x6A, 0xB4, + 0xB4, 0xAE, 0x74, 0xC6, 0x0B, 0x45, 0x12, 0xEC, 0x9D, 0xDD, 0x79, 0x94, + 0xC1, 0x2D, 0x4D, 0x3C, 0x25, 0x75, 0xA6, 0x2E, 0x7A, 0x52, 0xE1, 0x31, + 0xA4, 0xDD, 0x4E, 0x1B, 0xBC, 0x54, 0x83, 0x50, 0x27, 0xA1, 0xF9, 0xB0, + 0xFF, 0xA1, 0x58, 0x71, 0xAD, 0x72, 0x05, 0xAB, 0x90, 0xEC, 0x99, 0x63, + 0x69, 0x7F, 0x81, 0xF3, 0xED, 0x31, 0x76, 0x52, 0x6C, 0x5D, 0x56, 0xFA, + 0x74, 0x29, 0xFA, 0x40, 0xD7, 0x78, 0x75, 0x29, 0x66, 0x28, 0x46, 0xB2, + 0x01, 0xF6, 0xAE, 0x63, 0x37, 0xA5, 0xF9, 0x9F, 0x0F, 0x08, 0x65, 0x27, + 0x7D, 0x68, 0xB7, 0x28, 0xD6, 0x5F, 0x04, 0x5F, 0xA8, 0x3F, 0x0D, 0x0B, + 0x4E, 0x4B, 0x60, 0x7D, 0xCA, 0xA4, 0x2A, 0x20, 0x5C, 0xD3, 0x0B, 0x58, + 0xFF, 0x65, 0x6F, 0xCF, 0x5A, 0x75, 0x1A, 0xB7, 0x75, 0x62, 0x0E, 0xBF, + 0xFA, 0xD0, 0xBF, 0xB9, 0x14, 0xE9, 0x56, 0xE7, 0x2C, 0x3D, 0x2C, 0x7C, + 0x5D, 0x7E, 0xA8, 0x4B, 0x7F, 0x6B, 0x94, 0x84, 0x17, 0x8C, 0x90, 0x24, + 0x06, 0xFD, 0xE0, 0xCE, 0xD7, 0x03, 0xAB, 0x29, 0x9A, 0xCE, 0x09, 0xAB, + 0xF0, 0x83, 0x20, 0x19, 0xC4, 0x08, 0xB5, 0x74, 0x45, 0x5C, 0xDB, 0x99, + 0xF5, 0x3D, 0x2A, 0x9F, 0x6A, 0xB6, 0x70, 0xBD, 0x6D, 0x9C, 0x8A, 0xF2, + 0x18, 0x64, 0x13, 0x5D, 0x92, 0x09, 0x78, 0xD6, 0x04, 0x2A, 0xFB, 0x75, + 0xF7, 0x0D, 0xDE, 0x95, 0x81, 0x52, 0xB3, 0x69, 0xF0, 0x0F, 0x84, 0xA2, + 0xED, 0x02, 0xB5, 0x79, 0x98, 0x51, 0x66, 0x0B, 0xBD, 0x72, 0x6F, 0xAA, + 0xFE, 0xAA, 0x1B, 0x03, 0x4B, 0x3D, 0x24, 0x52, 0xCA, 0x81, 0x78, 0xFE, + 0x91, 0xAF, 0x33, 0x90, 0x1D, 0x42, 0x9B, 0x1F, 0xE0, 0x26, 0x39, 0x09, + 0x2B, 0xBF, 0x41, 0xDD, 0xB4, 0x99, 0xF6, 0x39, 0x29, 0x5A, 0xF6, 0x20, + 0x46, 0xB2, 0x4C, 0x89, 0xF6, 0x87, 0xF0, 0x91, 0x2E, 0x3C, 0xE0, 0x91, + 0x1E, 0x4F, 0x4E, 0x3E, 0x49, 0xAB, 0x79, 0x55, 0xA5, 0x7D, 0xE7, 0xAA, + 0x35, 0x31, 0x1B, 0xB1, 0x6F, 0x76, 0x30, 0xBC, 0xC6, 0x3E, 0x6C, 0x9B, + 0xAB, 0x99, 0x82, 0xB5, 0xA2, 0x37, 0xBD, 0xAC, 0x37, 0x39, 0xAB, 0xA9, + 0xCC, 0xD9, 0x65, 0xC6, 0x3D, 0x5E, 0x8B, 0x08, 0x0B, 0x0E, 0xAE, 0xA8, + 0x44, 0xFC, 0x30, 0x26, 0x92, 0x3A, 0xAB, 0x9E, 0xB5, 0x16, 0x85, 0xD8, + 0xDA, 0x4E, 0x54, 0x36, 0x69, 0x8E, 0x4D, 0xB6, 0x61, 0x83, 0xAF, 0x46, + 0x5F, 0x17, 0x71, 0xF2, 0x7C, 0xD2, 0x53, 0xD0, 0xD7, 0xC3, 0x52, 0x6A, + 0x8A, 0x18, 0x40, 0xB6, 0x00, 0xD7, 0x0F, 0x41, 0x0B, 0xC1, 0xC5, 0xC0, + 0xA6, 0x98, 0x59, 0x7C, 0x45, 0x19, 0x11, 0xDA, 0x2C, 0xE3, 0xCE, 0x56, + 0x9E, 0xBF, 0x85, 0xCE, 0xFA, 0xE5, 0x68, 0x66, 0x06, 0xE6, 0x57, 0x58, + 0x76, 0xAD, 0xB6, 0xC7, 0xFE, 0x2E, 0x2F, 0xA1, 0x62, 0x7D, 0x8C, 0xB9, + 0xC6, 0xBC, 0xF9, 0x0A, 0x84, 0x1A, 0xB7, 0xF6, 0x5C, 0x75, 0x00, 0x1F, + 0xA0, 0x6B, 0xF9, 0x54, 0x51, 0xB6, 0xBD, 0xA4, 0xC3, 0xDF, 0x25, 0x07, + 0x93, 0x33, 0x6B, 0x8C, 0x7E, 0x7C, 0xC8, 0x16, 0x78, 0x1A, 0xDA, 0xCA, + 0x48, 0x4A, 0x7C, 0x61, 0xAD, 0xEE, 0x08, 0x51, 0xCB, 0xE4, 0x99, 0xB2, + 0x2A, 0x02, 0x6F, 0x0D, 0x86, 0x1C, 0xC1, 0xD5, 0x0C, 0x55, 0x91, 0xDE, + 0x77, 0xF2, 0xE2, 0x96, 0xEF, 0xD7, 0x39, 0x08, 0x42, 0x22, 0x6D, 0x2B, + 0xA0, 0xE4, 0xA1, 0x38, 0x86, 0x4F, 0xE4, 0x1A, 0xF2, 0x30, 0xCB, 0xD9, + 0x38, 0x1E, 0xF0, 0x27, 0xAA, 0x1A, 0xA3, 0xD6, 0x2B, 0xC8, 0xE8, 0x5E, + 0x31, 0xBF, 0xEB, 0x3A, 0x68, 0xF2, 0x98, 0x94, 0xA0, 0x8A, 0x6E, 0x07, + 0x2A, 0x81, 0xE7, 0x01, 0xD3, 0x7C, 0xD8, 0x58, 0x19, 0x96, 0x53, 0xA8, + 0x3C, 0x71, 0x0E, 0x4C, 0xFB, 0x24, 0x7D, 0x63, 0x47, 0x61, 0x90, 0x94, + 0x71, 0x18, 0x38, 0x35, 0x80, 0x03, 0x41, 0xD4, 0x3E, 0xA9, 0x27, 0xAE, + 0xB7, 0x0B, 0x9A, 0xD1, 0xDB, 0xC5, 0x1F, 0x38, 0x88, 0x73, 0xD2, 0x3C, + 0xB0, 0x72, 0x60, 0x5C, 0xFD, 0xF9, 0xD3, 0x3F, 0x90, 0x89, 0x2B, 0xE2, + 0x6C, 0x08, 0x4E, 0xB6, 0x4E, 0xF1, 0x4F, 0x5D, 0x82, 0x3C, 0xC6, 0x08, + 0x96, 0xA3, 0xEB, 0xFF, 0xEC, 0xF4, 0xC5, 0xB1, 0xC7, 0x1B, 0xF3, 0x5E, + 0x67, 0x6F, 0x11, 0xA3, 0xAC, 0x18, 0xF8, 0xF3, 0x0F, 0x6A, 0x64, 0x02, + 0x4F, 0xE2, 0xE4, 0x3A, 0x2A, 0x20, 0x28, 0x5B, 0x5E, 0xAC, 0x83, 0x8C, + 0xA3, 0xF1, 0x67, 0x0D, 0xBA, 0x8E, 0xEC, 0x25, 0xDE, 0x7D, 0xEF, 0xCF, + 0x2C, 0x06, 0x74, 0x9F, 0x9A, 0x38, 0x70, 0x8D, 0xD0, 0x3E, 0xEA, 0x90, + 0x5E, 0xD1, 0xAE, 0xDB, 0x03, 0xC7, 0x8A, 0xEF, 0x55, 0x54, 0x34, 0xB2, + 0x15, 0x6F, 0x17, 0x60, 0x31, 0xE4, 0x32, 0x27, 0xF3, 0x82, 0xAE, 0xFB, + 0x9E, 0x6E, 0x25, 0x4A, 0x96, 0xFE, 0x23, 0x4E, 0xFB, 0x46, 0xFC, 0xB8, + 0x02, 0xAB, 0xD4, 0xD3, 0x1F, 0x0B, 0x23, 0x72, 0x10, 0xAD, 0x6F, 0x13, + 0x56, 0xB4, 0x95, 0x20, 0xD3, 0x5A, 0x48, 0xE0, 0xC4, 0xBB, 0x96, 0x4C, + 0x52, 0xEA, 0x25, 0x9F, 0xAE, 0xFE, 0x49, 0x3A, 0xA2, 0x54, 0x98, 0x53, + 0x06, 0xD3, 0x1A, 0xC2, 0x6C, 0x5A, 0x6D, 0xD7, 0x28, 0xDE, 0x54, 0xDC, + 0xCC, 0x2D, 0x42, 0x48, 0x3D, 0x33, 0xA7, 0x9E, 0xEE, 0x9E, 0xAE, 0xAC, + 0x4D, 0x8B, 0x0D, 0x98, 0x03, 0xF0, 0x4D, 0xF9, 0x40, 0x62, 0x12, 0x38, + 0x34, 0xA4, 0x81, 0xA3, 0x51, 0xA2, 0xDB, 0x76, 0xDD, 0x33, 0xEA, 0x6B, + 0xB1, 0x54, 0x6F, 0xCF, 0x42, 0x6C, 0xAB, 0x9D, 0x15, 0x93, 0x3A, 0x0C, + 0xEA, 0xD0, 0x0B, 0xBB, 0x77, 0xB1, 0xA0, 0x23, 0xDA, 0x15, 0x10, 0xA9, + 0x3E, 0xE6, 0x2F, 0x52, 0x41, 0x57, 0xA8, 0x86, 0xEB, 0x43, 0x96, 0x63, + 0x8D, 0x98, 0xE2, 0xE3, 0x8F, 0x2B, 0xA3, 0xB4, 0xAD, 0x2D, 0xDE, 0x72, + 0xF0, 0x08, 0xBB, 0x19, 0x42, 0xFB, 0xA4, 0x56, 0x13, 0xEF, 0xF5, 0xE0, + 0x6D, 0x2F, 0x9D, 0x87, 0x81, 0x2C, 0xCB, 0xC9, 0x72, 0x21, 0x27, 0xB5, + 0x23, 0xB2, 0x9F, 0xC4, 0x0F, 0x4E, 0xBA, 0x9C, 0xF4, 0x86, 0xBE, 0xC7, + 0x9C, 0xF9, 0x53, 0xA7, 0xE1, 0x99, 0xB0, 0xF0, 0xF9, 0x35, 0x47, 0x00, + 0xB9, 0xC4, 0xED, 0x11, 0x21, 0x5A, 0x48, 0xAE, 0x71, 0xC7, 0xD3, 0xFC, + 0x78, 0xBB, 0x69, 0xEA, 0x9A, 0xEA, 0x60, 0x2A, 0x8D, 0xE8, 0x16, 0x33, + 0x80, 0x2F, 0x38, 0xEF, 0x9E, 0x09, 0x18, 0x2D, 0xCF, 0x0F, 0xD5, 0x23, + 0x8A, 0xF2, 0xE0, 0x2E, 0x68, 0x97, 0x4F, 0x24, 0xCE, 0xD9, 0xD8, 0xC4, + 0xAE, 0xCC, 0x97, 0x56, 0x01, 0x0A, 0x2B, 0x3A, 0x42, 0x6D, 0xB4, 0x04, + 0xA2, 0x4A, 0x78, 0x77, 0x9F, 0xC2, 0x1E, 0x25, 0x2C, 0x2F, 0x69, 0xC1, + 0x3D, 0x4C, 0xB2, 0x8C, 0x9A, 0x02, 0xB8, 0x20, 0x4E, 0xBD, 0x7B, 0x65, + 0xFC, 0x7A, 0xDE, 0x24, 0x30, 0x2A, 0xF2, 0x79, 0xD1, 0x5E, 0x45, 0x7D, + 0x6D, 0x6B, 0x93, 0xDC, 0xF3, 0x2A, 0xF4, 0x40, 0x6B, 0xE0, 0x08, 0x09, + 0xD0, 0x2E, 0x9A, 0xCA, 0x64, 0x42, 0x63, 0xF7, 0x7B, 0x8D, 0x16, 0x49, + 0x8F, 0x02, 0xEB, 0x22, 0xCB, 0x8B, 0xB3, 0xE1, 0x3F, 0x10, 0x89, 0xAE, + 0x02, 0x72, 0xA0, 0x1A, 0x5E, 0xE4, 0xDD, 0x82, 0x72, 0x50, 0x6A, 0x05, + 0xAB, 0x2A, 0xFE, 0xCA, 0x27, 0x4F, 0xF7, 0xC6, 0xBE, 0xDE, 0xC4, 0x7D, + 0x0F, 0xF4, 0x5C, 0x38, 0x50, 0xDC, 0x37, 0xF3, 0x13, 0xCA, 0x54, 0x56, + 0x30, 0x2F, 0xFF, 0xB1, 0xBC, 0xD1, 0xED, 0x19, 0xA4, 0xFC, 0x84, 0xB0, + 0x9E, 0xC3, 0x5A, 0xA7, 0x63, 0x43, 0x7C, 0x8A, 0x06, 0x4D, 0x04, 0x72, + 0x16, 0x6B, 0x22, 0xA6, 0x74, 0x0E, 0x12, 0x47, 0x5E, 0xA1, 0x74, 0x72, + 0xEE, 0x65, 0x95, 0x8E, 0x30, 0x6B, 0xBF, 0x92, 0xE6, 0x3E, 0xA0, 0xB8, + 0x86, 0x55, 0x54, 0xC8, 0x0A, 0x20, 0xA9, 0xE9, 0xAE, 0x5B, 0x47, 0x2E, + 0xCE, 0x0A, 0xD5, 0x4B, 0xAF, 0x22, 0xA0, 0x23, 0x3E, 0x4E, 0x77, 0xA7, + 0x64, 0x01, 0x15, 0x47, 0x28, 0x6A, 0xD1, 0x90, 0xCD, 0x32, 0x74, 0x7A, + 0x02, 0x80, 0xEA, 0x91, 0x2E, 0x6B, 0x22, 0x52, 0x68, 0xC2, 0x40, 0x19, + 0xCE, 0xB7, 0x9A, 0xA2, 0xB3, 0x8A, 0xF5, 0xD8, 0xD8, 0x7B, 0x3E, 0x23, + 0xA9, 0x33, 0x56, 0x06, 0x1C, 0x74, 0x73, 0x93, 0x3E, 0x97, 0x5C, 0x41, + 0x4D, 0x3F, 0xFF, 0x97, 0xD8, 0x94, 0x29, 0xAF, 0x06, 0xD9, 0xC3, 0xF1, + 0xD6, 0x8D, 0xA7, 0xEE, 0xAA, 0x26, 0xF7, 0x4F, 0x43, 0x5E, 0x60, 0x8D, + 0x0B, 0xD5, 0xAA, 0xD9, 0x89, 0x79, 0x04, 0x7B, 0xC3, 0x90, 0x1A, 0xDF, + 0xA7, 0xB1, 0xBA, 0xC5, 0xCA, 0xAB, 0x0C, 0xB8, 0xE8, 0xF0, 0x45, 0xDC, + 0x85, 0xB5, 0x3B, 0xAC, 0xA7, 0xB2, 0x5C, 0x25, 0x52, 0x90, 0x0D, 0x4C, + 0xEF, 0xFF, 0x06, 0x0F, 0xEE, 0x0F, 0x8A, 0xE9, 0x93, 0x60, 0x3D, 0x8D, + 0x47, 0xC7, 0x55, 0xD9, 0x23, 0xAF, 0x77, 0xDB, 0x01, 0x69, 0xBA, 0x3D, + 0x9B, 0x62, 0x74, 0x44, 0x8E, 0x65, 0x40, 0x66, 0x3E, 0xDF, 0x54, 0x45, + 0x8F, 0xF5, 0xA8, 0x8F, 0xD6, 0x51, 0x42, 0xDE, 0x9D, 0x02, 0xDB, 0x90, + 0xD3, 0x93, 0x8C, 0xE0, 0x0E, 0xFA, 0x11, 0xCF, 0xA9, 0xBD, 0x94, 0xDA, + 0x0F, 0x94, 0x33, 0xF7, 0xA8, 0x80, 0x62, 0x61, 0xAC, 0xE6, 0x1E, 0xC6, + 0x80, 0x55, 0x9D, 0x7C, 0x5B, 0xB8, 0xB3, 0x67, 0xBB, 0x69, 0xA6, 0x6D, + 0xE1, 0x42, 0xD6, 0x81, 0x4E, 0x13, 0x68, 0xC0, 0x6B, 0x01, 0xE8, 0x0F, + 0xFB, 0xD4, 0x07, 0x08, 0xC7, 0x33, 0xAB, 0x3A, 0x68, 0x23, 0x14, 0x86, + 0xC7, 0x76, 0x13, 0xD5, 0x38, 0xF6, 0x4C, 0x91, 0x3E, 0x4F, 0x10, 0xC3, + 0x7A, 0xD0, 0x9B, 0xF6, 0x58, 0x42, 0xD5, 0x12, 0x5A, 0xCE, 0x58, 0x1A, + 0xB0, 0xBF, 0x27, 0x96, 0xFA, 0xE5, 0x8C, 0x43, 0xF7, 0xDE, 0xBD, 0x5F, + 0xE3, 0x79, 0x69, 0xDC, 0x57, 0xA5, 0x12, 0x27, 0x77, 0x61, 0x5E, 0x97, + 0xD4, 0x6F, 0xF6, 0x6E, 0x5B, 0x46, 0x98, 0x8F, 0x06, 0xC9, 0x58, 0xAB, + 0x2D, 0x02, 0x8C, 0x93, 0x61, 0x7F, 0xDF, 0x14, 0xB1, 0xEC, 0xFD, 0x97, + 0xFE, 0x80, 0xD5, 0xCA, 0x08, 0x57, 0x23, 0x9F, 0x49, 0x3A, 0xE3, 0x56, + 0xD8, 0x5A, 0x3C, 0x52, 0x5A, 0x4B, 0xC0, 0x8C, 0xB3, 0x79, 0xD7, 0xC4, + 0xFD, 0x48, 0xF3, 0xEA, 0x4C, 0x40, 0xF9, 0x36, 0x15, 0x47, 0x3B, 0x14, + 0x48, 0x51, 0xF0, 0xC6, 0xBB, 0x30, 0xBB, 0x80, 0xA3, 0x5C, 0x6F, 0xBD, + 0xA1, 0x4E, 0xEC, 0x71, 0x52, 0x44, 0x98, 0xB2, 0x82, 0x49, 0x2D, 0xEB, + 0x61, 0x22, 0xEE, 0xFC, 0x60, 0xCB, 0x01, 0x53, 0xAA, 0xFD, 0x9A, 0xC8, + 0x1B, 0xE9, 0xE4, 0x8C, 0x2C, 0x3C, 0xC8, 0x0A, 0x82, 0xCA, 0x3C, 0x92, + 0xB5, 0x96, 0xDA, 0xF1, 0x41, 0x76, 0x8D, 0x19, 0xED, 0x3B, 0xEE, 0x44, + 0xB0, 0xD2, 0xB3, 0xE9, 0xD5, 0x8E, 0xD5, 0x70, 0x67, 0x72, 0xD0, 0x33, + 0x2B, 0xFC, 0x50, 0x83, 0x1A, 0x72, 0xAE, 0xFE, 0xF0, 0x87, 0x07, 0xD7, + 0x19, 0x97, 0xDB, 0x95, 0xEF, 0xDD, 0xBB, 0xEC, 0x3F, 0xC8, 0x08, 0xBB, + 0x87, 0x5C, 0xB2, 0x51, 0x3F, 0xEE, 0x27, 0xF4, 0xA8, 0x2C, 0x6C, 0x3B, + 0x0C, 0xB9, 0x7C, 0xFB, 0x75, 0xA3, 0xAE, 0x1C, 0xFD, 0x1F, 0x99, 0xF2, + 0x5F, 0x30, 0x16, 0x0B, 0x24, 0xB7, 0x02, 0xE5, 0xDD, 0x59, 0x8E, 0x98, + 0x92, 0x1E, 0xDB, 0x6C, 0x6E, 0xCF, 0x51, 0x81, 0xE0, 0xF5, 0x32, 0xAD, + 0x5F, 0xCC, 0xA1, 0x91, 0x5F, 0x2E, 0xAC, 0xA0, 0xB1, 0x9B, 0x2F, 0xAF, + 0x7E, 0x8E, 0x30, 0x76, 0x82, 0xE3, 0x74, 0x01, 0x2C, 0x2C, 0xB3, 0xB3, + 0xAD, 0xC3, 0x3B, 0x2C, 0x45, 0xB3, 0x40, 0x97, 0x4B, 0xEB, 0xFD, 0xC6, + 0x55, 0xD9, 0x66, 0x0A, 0x4F, 0x3F, 0xB4, 0xE6, 0x01, 0x68, 0x9F, 0x20, + 0xEC, 0x97, 0xBE, 0x6C, 0x09, 0xFF, 0x26, 0x09, 0x3D, 0x66, 0x0F, 0x19, + 0x2C, 0xAF, 0xBD, 0xA2, 0xF4, 0xEA, 0xD1, 0xF6, 0x37, 0x64, 0x8A, 0x9E, + 0x9A, 0x79, 0xFC, 0x20, 0xEC, 0x5B, 0x58, 0x74, 0x8A, 0xD7, 0x78, 0x8E, + 0x1F, 0xBF, 0xEC, 0x78, 0xC0, 0x65, 0xE8, 0xD8, 0x4A, 0x72, 0xEB, 0x13, + 0x4C, 0xD8, 0xE9, 0x7B, 0xEC, 0x48, 0x00, 0x33, 0x69, 0x92, 0xDC, 0xE9, + 0xBE, 0xE5, 0xC7, 0xCE, 0x56, 0x2E, 0x9B, 0xD3, 0x4D, 0xFD, 0xE7, 0x68, + 0xE1, 0xCE, 0x18, 0x8D, 0xD0, 0x92, 0x39, 0xE1, 0x69, 0x83, 0x55, 0x54, + 0x62, 0xE8, 0x26, 0x8B, 0xAB, 0xA0, 0xAC, 0xB2, 0xFD, 0xB2, 0xBB, 0xB0, + 0xD4, 0x1B, 0xC8, 0x2F, 0xA8, 0x9E, 0x9B, 0x24, 0x56, 0xB8, 0x6E, 0xEE, + 0x2F, 0x36, 0x2E, 0xD4, 0x2B, 0x9A, 0x2C, 0x00, 0xE1, 0x18, 0x67, 0xD6, + 0x13, 0x35, 0xF2, 0x8F, 0x77, 0x88, 0x36, 0x40, 0x1F, 0x7B, 0x18, 0x6C, + 0x2B, 0xE6, 0x0E, 0x26, 0x30, 0x98, 0x71, 0x20, 0xE1, 0xA5, 0xF4, 0x94, + 0x36, 0xEF, 0x73, 0x52, 0x59, 0xF2, 0x87, 0x67, 0xFD, 0xBA, 0x55, 0x40, + 0xBE, 0x3B, 0x3B, 0x25, 0x89, 0x40, 0x73, 0xBA, 0x60, 0xAF, 0x50, 0xBE, + 0xEA, 0xC3, 0x31, 0x34, 0x32, 0x71, 0xE4, 0xEC, 0x0E, 0x24, 0x9D, 0x46, + 0x56, 0x33, 0xC7, 0x01, 0x94, 0xA5, 0x51, 0xD1, 0xC6, 0xDB, 0xCA, 0x26, + 0x8D, 0x89, 0xAF, 0xA9, 0x89, 0x7F, 0x26, 0xFB, 0x67, 0x92, 0x73, 0x39, + 0x1A, 0x1A, 0x1C, 0x4E, 0xEB, 0x72, 0x68, 0x92, 0x9F, 0x71, 0x35, 0x13, + 0x38, 0x36, 0xF8, 0x0D, 0xBF, 0x95, 0x9F, 0x35, 0x00, 0x79, 0x47, 0x41, + 0x62, 0x23, 0xBA, 0xF4, 0xCA, 0xC6, 0x12, 0x7C, 0x96, 0x9D, 0xB8, 0x40, + 0x4F, 0x7E, 0x31, 0x01, 0x1E, 0xC7, 0xFD, 0x49, 0xB9, 0xC2, 0x2B, 0x35, + 0x24, 0x2A, 0x13, 0x89, 0x62, 0x63, 0xBA, 0x6C, 0xA8, 0x93, 0x6D, 0x99, + 0xED, 0x9C, 0xE9, 0xB0, 0xF1, 0x8C, 0x9D, 0xA9, 0xEF, 0xDE, 0xF0, 0x92, + 0x1A, 0x3B, 0xA9, 0x94, 0x38, 0x87, 0xA2, 0x53, 0x65, 0x31, 0xAE, 0x0C, + 0x96, 0x64, 0xAC, 0xC8, 0xF8, 0x03, 0x65, 0x59, 0x5A, 0xAF, 0xD7, 0x8B, + 0x0B, 0x31, 0xD9, 0x3A, 0x2F, 0x1C, 0xE3, 0x49, 0xF3, 0xFA, 0x80, 0x9D, + 0x34, 0x0D, 0xC0, 0xCE, 0xBB, 0x6E, 0x90, 0x6E, 0xA5, 0xA7, 0x0D, 0xB4, + 0xB8, 0x04, 0x6A, 0xD6, 0x0C, 0x95, 0x79, 0x9E, 0x27, 0x43, 0xDD, 0xD1, + 0x8E, 0x8F, 0xE0, 0x19, 0xB5, 0xBF, 0xD9, 0x25, 0xEE, 0xBB, 0x3E, 0x79, + 0x0D, 0x9E, 0x0B, 0x03, 0x3D, 0x09, 0x9C, 0xF1, 0x02, 0x0A, 0x81, 0x7B, + 0xCE, 0x95, 0x44, 0x99, 0x72, 0xC5, 0x18, 0x4B, 0xD4, 0x9E, 0x5E, 0x8B, + 0x2D, 0x5F, 0x1E, 0x13, 0xF1, 0x95, 0xCA, 0x37, 0x75, 0x49, 0x7D, 0x3A, + 0x1A, 0x22, 0x02, 0xAC, 0x3E, 0xFE, 0x62, 0xF9, 0x59, 0xB7, 0x11, 0x82, + 0xB6, 0x55, 0x82, 0xC7, 0x13, 0xB7, 0x83, 0x8C, 0x1E, 0x90, 0xB4, 0x3D, + 0x9B, 0x57, 0xE7, 0x1F, 0x4E, 0xB1, 0x70, 0xF4, 0x9E, 0x06, 0x3B, 0x97, + 0xF4, 0xC1, 0xBA, 0x3D, 0xAD, 0x50, 0x01, 0x21, 0xBB, 0x0F, 0xE1, 0x60, + 0x49, 0x25, 0x5A, 0x0F, 0xA3, 0x24, 0x33, 0x97, 0xA4, 0xA2, 0x8D, 0xFE, + 0x9E, 0x17, 0x7D, 0x42, 0x3D, 0x40, 0xBB, 0xE5, 0xFB, 0xB2, 0xCA, 0x2C, + 0x93, 0x38, 0x13, 0xEA, 0x5C, 0xEB, 0x53, 0xFD, 0xFE, 0xD1, 0x2C, 0xB8, + 0xF6, 0xE2, 0x0C, 0xDF, 0xFA, 0x93, 0x2C, 0x25, 0x5C, 0x63, 0x07, 0x27, + 0x11, 0x4E, 0x5E, 0xFA, 0xD0, 0x9D, 0x2E, 0xE3, 0x85, 0xA8, 0xC5, 0x8B, + 0x7B, 0xFE, 0xA0, 0x9C, 0xFE, 0xFE, 0xE5, 0x69, 0xD8, 0x59, 0xAA, 0x52, + 0x40, 0x71, 0x6B, 0x1D, 0x51, 0xDA, 0x13, 0x48, 0xEC, 0xCE, 0x1E, 0x2A, + 0xE5, 0x70, 0x66, 0xB1, 0x1F, 0xA6, 0x65, 0x3E, 0x99, 0x8E, 0x4B, 0x4D, + 0x7C, 0x75, 0xB1, 0x46, 0x51, 0x07, 0x6E, 0x31, 0x7E, 0xE7, 0x5D, 0xE7, + 0x66, 0xA6, 0x6F, 0x65, 0x4E, 0xBD, 0xEF, 0x1E, 0xEC, 0x90, 0x36, 0xFA, + 0xDB, 0x73, 0x5F, 0x54, 0x68, 0x9A, 0xFD, 0xD9, 0x3D, 0xF0, 0xDC, 0xD5, + 0xA3, 0xBF, 0x45, 0xBD, 0x24, 0x7D, 0xB5, 0xC4, 0xC5, 0x63, 0x5F, 0xBC, + 0x4C, 0x19, 0x1A, 0xA3, 0x84, 0x71, 0xBD, 0x63, 0x8B, 0x85, 0x71, 0x30, + 0x2C, 0x00, 0x76, 0x90, 0xDB, 0x44, 0xFC, 0x86, 0x40, 0x10, 0x4C, 0x4F, + 0x9E, 0xFB, 0xC9, 0xF3, 0x61, 0xED, 0x6A, 0x37, 0x7F, 0x76, 0x1E, 0x8D, + 0xB2, 0x30, 0x2B, 0xC1, 0x9F, 0x00, 0xF0, 0x54, 0x60, 0x13, 0x74, 0x87, + 0x83, 0x90, 0xCD, 0xF3, 0x78, 0xD7, 0x84, 0xA2, 0xCA, 0x47, 0x7F, 0x10, + 0xD8, 0xC5, 0xEA, 0xA4, 0xA7, 0x53, 0x47, 0xEF, 0x43, 0x44, 0xA4, 0xEB, + 0xD4, 0x73, 0xB9, 0x08, 0xB1, 0x06, 0xD5, 0xD1, 0xF5, 0x9D, 0x92, 0x2C, + 0xA2, 0x6C, 0x69, 0x68, 0xF6, 0xD2, 0xEF, 0x35, 0x1F, 0x91, 0xC8, 0x8F, + 0x78, 0xF5, 0x2D, 0xB4, 0x83, 0x2C, 0x97, 0x3F, 0xF3, 0x51, 0x42, 0xE7, + 0x8C, 0xE0, 0xDC, 0x01, 0x34, 0x66, 0x05, 0x9A, 0x61, 0x6E, 0x90, 0x5F, + 0x0C, 0xCD, 0xC9, 0x74, 0x8F, 0x5B, 0xA0, 0x40, 0xB6, 0xAF, 0x48, 0xAA, + 0xD9, 0xFA, 0x06, 0x6D, 0xCE, 0x4E, 0x0E, 0x62, 0x8E, 0xF3, 0x23, 0xEB, + 0xF5, 0xE5, 0x22, 0x50, 0x74, 0x06, 0x05, 0xA3, 0x00, 0xD7, 0x5C, 0x5E, + 0x68, 0x1B, 0x0F, 0xB1, 0x38, 0xB0, 0x46, 0xE1, 0x7B, 0xB7, 0xA1, 0x0F, + 0x7B, 0x9A, 0xC2, 0xA3, 0x78, 0x03, 0xD5, 0xA7, 0x93, 0xB1, 0x76, 0xE8, + 0xB5, 0x32, 0x8E, 0x5A, 0x2E, 0xA3, 0xCC, 0xC7, 0x6B, 0xAD, 0x88, 0xB1, + 0x7C, 0x68, 0xC8, 0x1A, 0x09, 0xAC, 0x19, 0xA1, 0x7F, 0x00, 0xB1, 0xC2, + 0xAB, 0x1F, 0x81, 0x29, 0x7A, 0x5C, 0xF1, 0x55, 0xF9, 0x96, 0x52, 0x5E, + 0x8C, 0x57, 0x65, 0xDA, 0x5B, 0xC6, 0x0E, 0xB1, 0xC6, 0x0F, 0x50, 0x9C, + 0x61, 0x20, 0x7A, 0x62, 0x68, 0x53, 0x4E, 0xF9, 0x40, 0xA4, 0xD4, 0x66, + 0xF8, 0xC7, 0x0B, 0xE6, 0x09, 0xA6, 0xBD, 0xBF, 0xA3, 0x57, 0x5E, 0xD6, + 0xA1, 0x84, 0x49, 0x05, 0x54, 0x69, 0xC7, 0xA4, 0x67, 0x08, 0x37, 0x3A, + 0xD3, 0xD3, 0x43, 0x8E, 0xD3, 0xD1, 0xBF, 0xBD, 0x6A, 0x8D, 0x3A, 0x14, + 0x76, 0x6F, 0x04, 0xDE, 0x69, 0x0D, 0xD5, 0x07, 0xF4, 0xEA, 0x36, 0x28, + 0x9E, 0x54, 0x47, 0x25, 0x7D, 0x02, 0x54, 0x53, 0xFC, 0x68, 0x72, 0x77, + 0xE4, 0x9E, 0x6B, 0xF7, 0xAC, 0xD2, 0xBF, 0xA7, 0xC5, 0x3C, 0xF6, 0x99, + 0xEB, 0xC7, 0xA3, 0x11, 0x33, 0xB6, 0xB6, 0x62, 0x4A, 0x3B, 0x93, 0xC2, + 0xF6, 0xC7, 0xF1, 0x7B, 0x3F, 0x6D, 0x2D, 0x12, 0x4B, 0x46, 0xC3, 0xC2, + 0xC7, 0x5F, 0xDE, 0xC0, 0xFD, 0x5E, 0xCD, 0x3B, 0xD1, 0x4C, 0x41, 0x77, + 0x0A, 0x77, 0x3A, 0xA8, 0xB1, 0xEF, 0x02, 0x49, 0x54, 0xA2, 0x3B, 0xA7, + 0x79, 0xEF, 0x2B, 0x56, 0x32, 0x7E, 0x81, 0x71, 0xA6, 0x99, 0x53, 0x8D, + 0xBF, 0x07, 0x9A, 0x4B, 0x70, 0x7F, 0x1D, 0x84, 0x99, 0xCE, 0x0C, 0x4F, + 0x7A, 0x99, 0xBA, 0x94, 0x52, 0xFE, 0x06, 0xDE, 0x2A, 0xF1, 0xDF, 0x75, + 0x45, 0x38, 0x25, 0xD9, 0xC4, 0x6A, 0xF1, 0x5B, 0x2B, 0xA3, 0x50, 0x00, + 0x68, 0xE7, 0x9C, 0xBC, 0x90, 0xDB, 0x38, 0xF7, 0xEC, 0xBD, 0xDB, 0x1B, + 0x77, 0xFF, 0xF8, 0xB8, 0xDB, 0xE8, 0xE5, 0x7F, 0x71, 0xF1, 0x9B, 0x83, + 0x98, 0xF3, 0xE2, 0x4E, 0xA6, 0xBD, 0xE7, 0xD7, 0xD2, 0xBF, 0xB1, 0x89, + 0x54, 0x3D, 0x36, 0xF0, 0x4E, 0x85, 0x5F, 0x14, 0xE3, 0x58, 0x5B, 0x24, + 0x86, 0x75, 0x8D, 0x98, 0x0C, 0xBA, 0x5D, 0x26, 0x62, 0xC4, 0xC2, 0x84, + 0xA6, 0xF9, 0x9B, 0x42, 0x0F, 0xA1, 0x8D, 0x39, 0xF1, 0x67, 0xCE, 0xE7, + 0xB8, 0x70, 0x24, 0xB8, 0xE6, 0x82, 0xE8, 0xC7, 0xF6, 0x7B, 0xFE, 0xD8, + 0x38, 0xCF, 0x1D, 0x0D, 0xEA, 0x7D, 0xBB, 0x65, 0x61, 0x9B, 0xFA, 0xA2, + 0xB8, 0xA7, 0x9B, 0xAD, 0x76, 0x0B, 0x93, 0x00, 0x5E, 0x43, 0x10, 0x4A, + 0x5F, 0x22, 0xCA, 0x74, 0x8E, 0xEC, 0x2B, 0xB4, 0x68, 0x44, 0x2C, 0x95, + 0x4A, 0xDA, 0xDA, 0xC5, 0xBE, 0x8B, 0xFF, 0x4C, 0xC2, 0x0A, 0x74, 0xE0, + 0x6E, 0x45, 0xBD, 0xD5, 0x0A, 0x50, 0xB1, 0x33, 0x8D, 0x57, 0xE8, 0xF0, + 0x78, 0x6D, 0x05, 0x2B, 0x9C, 0x56, 0xC7, 0xB7, 0xE4, 0x66, 0xB8, 0x72, + 0x90, 0x92, 0xC0, 0x07, 0x7B, 0x18, 0xB1, 0x14, 0x6A, 0x64, 0xEE, 0xC1, + 0x9F, 0x0D, 0xB4, 0x1D, 0xE7, 0xF1, 0x17, 0x49, 0xB1, 0x84, 0xD9, 0x26, + 0xA5, 0x9A, 0xFA, 0xF1, 0xA3, 0x55, 0xC2, 0xAA, 0xF5, 0xBE, 0x49, 0xF6, + 0x6C, 0x67, 0x93, 0x04, 0x0A, 0xE3, 0xC0, 0xA1, 0x72, 0x8B, 0xE7, 0x05, + 0xEA, 0x70, 0xEF, 0x27, 0xF4, 0xC0, 0xE3, 0xBE, 0x57, 0xA3, 0x66, 0xAF, + 0x83, 0x04, 0x0E, 0xAD, 0x08, 0x77, 0x1F, 0xA4, 0x1C, 0xA5, 0xF5, 0xED, + 0x03, 0xB4, 0x0E, 0xDA, 0xEC, 0xFD, 0x9D, 0x8B, 0x81, 0x5C, 0xDF, 0xAE, + 0x5D, 0xEC, 0x08, 0x94, 0x78, 0xA4, 0x0F, 0x1A, 0x75, 0x0B, 0x32, 0xE2, + 0x9F, 0x0B, 0xDF, 0xD4, 0x5D, 0xFE, 0xF8, 0x43, 0x5E, 0xC5, 0xC0, 0x8C, + 0xBC, 0xAB, 0xDE, 0x33, 0x38, 0xA0, 0x76, 0x86, 0x94, 0xF0, 0xF0, 0x40, + 0xD4, 0x3F, 0x82, 0xED, 0x3F, 0x2C, 0x5A, 0x6F, 0xB3, 0xE9, 0x4C, 0x5D, + 0xE5, 0xAB, 0xD5, 0xAB, 0x89, 0x9D, 0x0A, 0x37, 0x9F, 0xC0, 0x84, 0xF6, + 0x81, 0xB7, 0x9B, 0x5C, 0x1A, 0xC4, 0x40, 0x06, 0x29, 0xC6, 0x62, 0xCE, + 0x07, 0x1B, 0x13, 0xBA, 0x81, 0xDF, 0xEE, 0xF9, 0xD3, 0xE7, 0xC1, 0x9A, + 0x7C, 0x43, 0x0E, 0x83, 0xB0, 0x4E, 0xCD, 0x8E, 0xB4, 0x34, 0xBF, 0xEF, + 0x74, 0x4D, 0xE0, 0xF4, 0xB3, 0x25, 0x93, 0xAC, 0xCE, 0x20, 0x7B, 0x22, + 0x6E, 0xAA, 0x75, 0x14, 0xCA, 0xA8, 0x09, 0x2A, 0xCE, 0xE0, 0x57, 0x5E, + 0x3A, 0xCA, 0xF5, 0x11, 0x5D, 0xC6, 0x08, 0x6D, 0xB1, 0xD8, 0x4C, 0x90, + 0x4A, 0x5A, 0x4B, 0x1F, 0x98, 0xD6, 0x87, 0xF2, 0xD5, 0x82, 0x86, 0x16, + 0xA5, 0x01, 0xEA, 0xFC, 0x78, 0xF3, 0xF9, 0xE2, 0x3C, 0x74, 0xC4, 0xFC, + 0x9B, 0x8D, 0x2C, 0x36, 0x87, 0xE6, 0x57, 0x8C, 0x5D, 0xEA, 0x8F, 0x96, + 0x85, 0x9A, 0xEF, 0x18, 0x34, 0x36, 0xC0, 0x46, 0x7C, 0x77, 0xD6, 0xBF, + 0x25, 0xA2, 0xE7, 0x95, 0xFA, 0x82, 0xDD, 0x11, 0x2B, 0xAC, 0x9D, 0xB8, + 0x7B, 0x21, 0xB7, 0x51, 0xFC, 0x21, 0x24, 0xA5, 0x20, 0xD4, 0x89, 0xF0, + 0xFF, 0x31, 0x1B, 0x3E, 0x29, 0x10, 0x00, 0xFA, 0xEA, 0x6E, 0xA7, 0xA0, + 0x4E, 0x1E, 0x21, 0xDF, 0x7F, 0x84, 0x16, 0x77, 0x8B, 0xF1, 0xFE, 0xAB, + 0x4E, 0xBD, 0xF4, 0xA1, 0x2B, 0xA3, 0x8B, 0x7A, 0x46, 0xF2, 0xD3, 0x92, + 0x23, 0xBB, 0x23, 0x30, 0x10, 0x7A, 0x69, 0x38, 0x6C, 0xBA, 0xF3, 0xBD, + 0xDF, 0xF6, 0xCE, 0xC7, 0x9A, 0xA7, 0x20, 0xB8, 0xE9, 0xE6, 0x14, 0xEE, + 0xFD, 0x3E, 0x89, 0xF8, 0x93, 0x6F, 0x7B, 0xDE, 0xD9, 0xB4, 0x3A, 0xED, + 0xA9, 0x4B, 0x05, 0x2E, 0x4F, 0xE4, 0x07, 0x0F, 0x45, 0x3F, 0x95, 0x62, + 0x6C, 0x4B, 0x23, 0xA3, 0xBF, 0x74, 0x13, 0x16, 0xFD, 0x88, 0xDB, 0xF8, + 0xC6, 0xB1, 0xA6, 0x72, 0x20, 0xCC, 0xE2, 0x67, 0x92, 0x30, 0xE0, 0x2C, + 0xAF, 0xDA, 0xD9, 0x27, 0x92, 0x01, 0x97, 0xAB, 0xBE, 0xCB, 0x2C, 0x0D, + 0x01, 0x67, 0x3F, 0xE3, 0x7A, 0x5B, 0xE0, 0x06, 0x08, 0xB3, 0x25, 0x4E, + 0x78, 0x80, 0x76, 0x67, 0xFB, 0x4C, 0xD0, 0x5E, 0xFD, 0x5A, 0x64, 0xD7, + 0x0C, 0x09, 0xC2, 0x21, 0x57, 0x06, 0x63, 0x5A, 0x59, 0x2E, 0xF1, 0x3F, + 0x09, 0x0D, 0x60, 0xDF, 0xED, 0xDA, 0xA7, 0x75, 0x70, 0xB7, 0xD7, 0x0A, + 0x66, 0x2D, 0xAC, 0xB8, 0x2F, 0xA3, 0x96, 0x19, 0xB0, 0x5B, 0x29, 0x9C, + 0x6E, 0x50, 0xC0, 0x00, 0x14, 0xC5, 0x3B, 0xA3, 0x6C, 0x3A, 0x6A, 0xAB, + 0x97, 0x96, 0x47, 0x72, 0xE7, 0x21, 0x74, 0x8F, 0xD9, 0xB4, 0xCE, 0xDC, + 0x81, 0x6E, 0x48, 0x96, 0x59, 0xB7, 0xC9, 0xF3, 0x99, 0xD0, 0x8D, 0x10, + 0x3B, 0x69, 0xD0, 0xF5, 0xA7, 0x31, 0x9D, 0xA8, 0x36, 0x63, 0xB6, 0xBC, + 0x8A, 0xC9, 0x03, 0x3A, 0xCC, 0xDC, 0xFA, 0x9A, 0xAB, 0x47, 0xC4, 0x19, + 0x83, 0xD6, 0xD3, 0x1F, 0x6E, 0x60, 0xD9, 0xCC, 0x98, 0xE5, 0x53, 0xC6, + 0xC3, 0xE8, 0xA7, 0xF3, 0xB9, 0xF1, 0xAC, 0xA9, 0xB9, 0x05, 0x47, 0x46, + 0x21, 0x3F, 0x0C, 0xCC, 0x60, 0x5C, 0xF8, 0x9E, 0xA8, 0x42, 0x5D, 0xD9, + 0xC8, 0xF3, 0x9E, 0x75, 0xAD, 0x22, 0x68, 0x67, 0x37, 0xF2, 0x8F, 0xD1, + 0x7C, 0x5D, 0x07, 0xD8, 0x69, 0x6C, 0x34, 0xF0, 0x7E, 0x71, 0x47, 0x29, + 0xA1, 0x8D, 0x07, 0x3F, 0x60, 0x75, 0xC8, 0x16, 0xEF, 0x11, 0xE3, 0xFD, + 0x48, 0x35, 0xED, 0xCA, 0x2C, 0x37, 0xCF, 0xEA, 0x37, 0x6D, 0xA0, 0xFF, + 0x7A, 0x46, 0x15, 0x41, 0x6B, 0xE3, 0x40, 0x6F, 0x27, 0x02, 0xA4, 0x2B, + 0x34, 0x0B, 0x07, 0xE3, 0x69, 0x4E, 0xF3, 0xF3, 0xAC, 0x4A, 0xA7, 0xE4, + 0xBB, 0x4E, 0x8E, 0xAF, 0xC0, 0x76, 0x9B, 0xD3, 0xB1, 0x93, 0xF3, 0x87, + 0x38, 0x7B, 0x0B, 0x84, 0xFA, 0xDA, 0x85, 0x32, 0x06, 0x7C, 0xFD, 0x2E, + 0xF0, 0x90, 0x31, 0xAE, 0x3E, 0x9B, 0xBF, 0x0A, 0xDF, 0xA4, 0xA9, 0x3B, + 0x43, 0x16, 0x31, 0x04, 0xD6, 0x2F, 0x9F, 0x7A, 0x79, 0xD5, 0x79, 0x5D, + 0x1C, 0x4A, 0x6A, 0x19, 0x2A, 0xD0, 0x05, 0x69, 0xFE, 0xAC, 0x78, 0x41, + 0xE7, 0xEA, 0xE7, 0xDD, 0x23, 0xA7, 0x7C, 0x59, 0x7F, 0x6B, 0xDA, 0x30, + 0x77, 0x16, 0xE8, 0x02, 0x3D, 0xB4, 0x4D, 0xB3, 0xCC, 0x41, 0x56, 0x05, + 0x1F, 0xD7, 0x07, 0x0B, 0x5B, 0x30, 0x6C, 0x45, 0x7E, 0x41, 0xE4, 0x79, + 0x0B, 0x5A, 0x17, 0xF5, 0xD6, 0x30, 0x9E, 0xAC, 0x2F, 0x6F, 0x99, 0x18, + 0x4E, 0x11, 0x39, 0xF4, 0x29, 0x55, 0x82, 0x08, 0xF8, 0x2D, 0xE6, 0x06, + 0xE8, 0x2D, 0x62, 0xD5, 0x66, 0xB4, 0x5E, 0x62, 0x96, 0x16, 0xA6, 0xD8, + 0x69, 0x04, 0x23, 0x35, 0xD0, 0x4F, 0xA0, 0x7F, 0xC5, 0xE4, 0x49, 0x6C, + 0x64, 0x4A, 0xD8, 0xC3, 0x4D, 0x51, 0xBC, 0x49, 0x12, 0x76, 0x8A, 0xEC, + 0xB2, 0x03, 0x93, 0xB8, 0x2D, 0x42, 0x91, 0x09, 0xAE, 0xC2, 0x50, 0xD2, + 0x72, 0x3A, 0x11, 0x26, 0xF8, 0x43, 0x2A, 0xD5, 0x13, 0x4E, 0x4D, 0x1E, + 0x28, 0xE5, 0xAF, 0xCC, 0xCE, 0x6D, 0x4A, 0x06, 0xB4, 0x2E, 0xF7, 0x40, + 0x89, 0x33, 0x61, 0x11, 0x7A, 0x4C, 0x75, 0xC5, 0x7D, 0x2E, 0xDB, 0x1D, + 0xE7, 0xA0, 0xD7, 0x96, 0xDD, 0x37, 0xF3, 0x48, 0x62, 0xBB, 0xAF, 0xB2, + 0x2C, 0x56, 0x99, 0x20, 0x45, 0x1A, 0x20, 0x96, 0x6F, 0x5E, 0x74, 0x7B, + 0x04, 0xDA, 0x67, 0x05, 0x0F, 0x4D, 0xFC, 0x7E, 0xE0, 0x65, 0x13, 0xDB, + 0x06, 0x5E, 0x50, 0x93, 0xA4, 0xA2, 0x1D, 0x10, 0x7D, 0x61, 0x25, 0x3D, + 0x19, 0xCD, 0xC9, 0x51, 0xE2, 0xF1, 0x6A, 0xBC, 0xCF, 0x7D, 0xB3, 0x0F, + 0x77, 0x98, 0x7A, 0x09, 0x9C, 0x40, 0x03, 0x48, 0x17, 0xE2, 0x75, 0x10, + 0x59, 0xAC, 0x9F, 0x4A, 0xEC, 0x63, 0x0F, 0xD9, 0x3A, 0x75, 0x0D, 0xCD, + 0xD4, 0x4E, 0x7F, 0xA5, 0xE3, 0xFB, 0xA3, 0x5E, 0x0A, 0x6E, 0xD2, 0xD8, + 0x05, 0x3D, 0x84, 0x20, 0x5E, 0xCE, 0xBE, 0xFC, 0x9A, 0x29, 0x85, 0x08, + 0xD6, 0x07, 0x07, 0x4B, 0x01, 0x60, 0x07, 0xE7, 0xF5, 0x83, 0x9E, 0x35, + 0x12, 0xEF, 0xDD, 0xA6, 0x97, 0x51, 0xD1, 0x39, 0x11, 0x22, 0x45, 0xB0, + 0x5D, 0xCA, 0x29, 0x69, 0x12, 0xE3, 0x0C, 0xA7, 0x41, 0x57, 0x99, 0xF2, + 0xD9, 0x05, 0xAD, 0x87, 0xDE, 0xC7, 0x2C, 0xB3, 0x2B, 0x63, 0x87, 0x9F, + 0xC5, 0xEE, 0xAB, 0xF5, 0x2A, 0xF1, 0x9B, 0x54, 0xB6, 0x54, 0xC0, 0x41, + 0x88, 0x6E, 0x54, 0x63, 0x85, 0xD3, 0xFB, 0xED, 0xAD, 0x45, 0xEE, 0x91, + 0xD3, 0x65, 0x4E, 0x5D, 0xF7, 0xE1, 0xF9, 0x56, 0x29, 0x12, 0x9D, 0x3C, + 0xFE, 0x91, 0x76, 0xBE, 0x49, 0xD5, 0x62, 0x61, 0x24, 0x4F, 0x5C, 0x6B, + 0x9A, 0xFC, 0xD2, 0x31, 0x98, 0x24, 0xA5, 0x5A, 0x7A, 0x98, 0xF5, 0x0B, + 0xFE, 0xD4, 0x44, 0xF1, 0xE2, 0x88, 0xE7, 0x00, 0xA7, 0x56, 0xD6, 0xC9, + 0xC8, 0x0C, 0x66, 0x20, 0xCC, 0x92, 0x3B, 0x8A, 0x50, 0x65, 0x09, 0x61, + 0x54, 0x06, 0xA3, 0x7D, 0x73, 0xFB, 0x9E, 0x45, 0xD8, 0x67, 0x0F, 0x79, + 0xF6, 0xF9, 0xAB, 0x72, 0x61, 0xA0, 0x36, 0xE2, 0x95, 0x32, 0x58, 0xE6, + 0x47, 0xA6, 0x53, 0x27, 0x68, 0x36, 0xB5, 0x4B, 0x59, 0x61, 0x08, 0xEA, + 0xE9, 0xE8, 0x0A, 0x24, 0xFD, 0x96, 0x5A, 0x02, 0xDB, 0xC2, 0xB4, 0x88, + 0xF2, 0x15, 0x3C, 0xDC, 0xEF, 0x51, 0x34, 0x43, 0xD2, 0xF4, 0x9D, 0x9E, + 0xD4, 0x5C, 0x98, 0x5B, 0xB2, 0xB8, 0x70, 0x39, 0x26, 0x5E, 0x8D, 0xAD, + 0x9B, 0x37, 0x18, 0xB9, 0x74, 0xAC, 0xC6, 0xD0, 0x07, 0x1D, 0x13, 0x20, + 0x66, 0x36, 0x28, 0x52, 0x62, 0xD9, 0x36, 0x54, 0xAE, 0x14, 0xF4, 0x62, + 0x50, 0xA5, 0x96, 0x9B, 0xBE, 0xB8, 0x33, 0xFB, 0xD3, 0xDC, 0xB3, 0x74, + 0x90, 0x2B, 0x3B, 0xAC, 0x27, 0xD8, 0x83, 0x8E, 0xF9, 0x6D, 0x35, 0x42, + 0xD5, 0x60, 0x46, 0x33, 0x93, 0xF8, 0xB4, 0x77, 0xB0, 0xBF, 0xCD, 0xAE, + 0x33, 0x9C, 0x8A, 0x7A, 0x06, 0x33, 0x05, 0x0C, 0x27, 0x61, 0x30, 0x31, + 0x13, 0xD3, 0x15, 0xB1, 0x7C, 0x23, 0x22, 0x99, 0xFF, 0x47, 0xB4, 0xA2, + 0x1D, 0x39, 0x9A, 0xE1, 0x52, 0xCC, 0x1A, 0x53, 0xF3, 0xA4, 0xE7, 0x2A, + 0x4A, 0x12, 0xE5, 0xA4, 0x8D, 0x0D, 0xC4, 0xA6, 0xFE, 0x4F, 0x45, 0x2D, + 0x2C, 0xA2, 0x64, 0x39, 0x41, 0xA5, 0xC0, 0xB7, 0x84, 0xA5, 0x98, 0x67, + 0x2A, 0xA9, 0x2D, 0x7B, 0xAF, 0x8E, 0xDC, 0xE3, 0x58, 0xAA, 0x17, 0x5B, + 0xC3, 0x69, 0xE7, 0x88, 0x64, 0xB8, 0x72, 0x5A, 0xA5, 0xCD, 0x07, 0x27, + 0x1B, 0xC3, 0x37, 0x99, 0x9B, 0x57, 0xE7, 0x1F, 0x32, 0xED, 0xB5, 0xD6, + 0x39, 0x5C, 0x40, 0x03, 0x6A, 0x20, 0x51, 0xC3, 0x4E, 0x39, 0x9C, 0x5F, + 0x75, 0x2B, 0xFF, 0xCA, 0xA1, 0x43, 0x83, 0xC3, 0xA8, 0x5F, 0x0E, 0xC5, + 0xBD, 0x88, 0xE6, 0xA9, 0x89, 0x07, 0x60, 0xA1, 0x21, 0x76, 0xF7, 0xBE, + 0x65, 0xBC, 0x31, 0x59, 0x88, 0x00, 0xE5, 0xA7, 0xE3, 0x7A, 0x61, 0xE6, + 0x87, 0x5C, 0x4E, 0xD1, 0x29, 0xDE, 0xD6, 0x4B, 0xCF, 0x64, 0x93, 0x31, + 0xE9, 0x72, 0x91, 0x9F, 0xB3, 0x1E, 0x6E, 0x98, 0x1D, 0xF5, 0x8F, 0xFA, + 0xFD, 0x7C, 0xA1, 0x16, 0x39, 0x76, 0x15, 0x52, 0x99, 0x40, 0x5A, 0x2E, + 0x40, 0x71, 0x06, 0x53, 0xA9, 0x85, 0x98, 0x67, 0x5D, 0x38, 0x45, 0x50, + 0xAF, 0xA3, 0x27, 0x46, 0x12, 0xCF, 0x79, 0xC9, 0x20, 0x39, 0xE9, 0x37, + 0xBE, 0xD1, 0xC3, 0x8A, 0xFA, 0x7E, 0x6D, 0x34, 0x79, 0x64, 0x9F, 0x57, + 0x78, 0xF1, 0xD2, 0x61, 0x2E, 0xD4, 0x80, 0x3B, 0xF3, 0x13, 0x9E, 0x05, + 0x18, 0x0A, 0x5C, 0x7B, 0x2E, 0xAA, 0xB8, 0xA6, 0xCB, 0x11, 0x85, 0x48, + 0xBA, 0x78, 0x7B, 0x3A, 0x8E, 0x1A, 0x91, 0xB7, 0x97, 0x61, 0xB5, 0x8E, + 0xEB, 0xD4, 0x46, 0xE1, 0x68, 0x2E, 0x66, 0xC6, 0x8F, 0xF3, 0xCA, 0x29, + 0x5B, 0x7E, 0xAA, 0x22, 0x71, 0xCA, 0x8A, 0xBB, 0xD5, 0x0D, 0x14, 0xA5, + 0x98, 0xD7, 0x63, 0x60, 0xC2, 0x9A, 0x30, 0xD6, 0x5A, 0xE8, 0xCC, 0xFA, + 0xCC, 0x06, 0x08, 0x63, 0x1E, 0x16, 0x4C, 0x3D, 0xF5, 0x68, 0xDD, 0xDC, + 0xE2, 0xFB, 0xDE, 0x3F, 0x90, 0xD6, 0x7B, 0xC5, 0x09, 0xF7, 0x34, 0x5A, + 0x23, 0xA0, 0x45, 0x88, 0x5C, 0x86, 0xA6, 0x12, 0x70, 0x1D, 0xF4, 0x3D, + 0xAE, 0xFC, 0x44, 0xA7, 0xB2, 0xBE, 0x3F, 0xEA, 0xC0, 0xA2, 0x28, 0x6C, + 0x91, 0xA3, 0xB7, 0xE9, 0xF6, 0x8F, 0x60, 0x29, 0xDA, 0x89, 0xF5, 0x95, + 0x85, 0x2C, 0x4D, 0x09, 0xDF, 0x54, 0xC8, 0x96, 0xB5, 0xD4, 0x18, 0xA8, + 0xCC, 0xCD, 0x3F, 0xDF, 0x70, 0x2B, 0xD9, 0x28, 0xBC, 0x51, 0x44, 0x02, + 0x11, 0xE9, 0x5D, 0xDB, 0xF0, 0x25, 0x68, 0xD3, 0x2F, 0x7E, 0x17, 0x0B, + 0x76, 0x31, 0xF9, 0x8E, 0x46, 0x5B, 0x22, 0xB9, 0xB3, 0xBF, 0xDE, 0x24, + 0x06, 0x28, 0x37, 0x2A, 0xB6, 0x3D, 0xBA, 0x4D, 0xD8, 0x8F, 0xE0, 0x5D, + 0x39, 0x52, 0xA0, 0x2F, 0xE1, 0xDD, 0x8B, 0x91, 0x84, 0xC2, 0xDA, 0x38, + 0x2D, 0x61, 0xE0, 0x31, 0x03, 0x8D, 0xE5, 0xCF, 0xDC, 0x74, 0x88, 0x7C, + 0x0C, 0xF6, 0x89, 0x99, 0x73, 0xD1, 0x7C, 0x06, 0xC1, 0x4B, 0xDE, 0xC0, + 0x66, 0x53, 0xB5, 0xA8, 0x2E, 0xF7, 0x03, 0xE6, 0x88, 0x8D, 0xC3, 0x46, + 0x0C, 0xCA, 0xE3, 0x03, 0xA3, 0xEE, 0xA9, 0x4C, 0x3F, 0xAF, 0x81, 0x06, + 0x2C, 0xAF, 0x0D, 0x43, 0x2C, 0xF4, 0x9B, 0x42, 0xC0, 0x7B, 0x8B, 0xE5, + 0x89, 0xB7, 0x43, 0xA2, 0xBD, 0x4E, 0x98, 0x47, 0x74, 0x1B, 0x80, 0xC3, + 0x91, 0x47, 0x11, 0xAA, 0xC0, 0x60, 0x8D, 0x11, 0xFA, 0x5D, 0xC7, 0x1C, + 0x3A, 0x3D, 0xE3, 0xA4, 0x2A, 0xBE, 0x4A, 0xF1, 0x30, 0xD8, 0xCC, 0x66, + 0x14, 0x8D, 0xE1, 0xEF, 0xB5, 0xCE, 0xE7, 0x65, 0xDB, 0xCC, 0xDF, 0xE9, + 0x68, 0x61, 0x2C, 0x20, 0x49, 0x5B, 0xD5, 0x8D, 0x67, 0xAA, 0x32, 0xDF, + 0x12, 0x37, 0x53, 0x3E, 0x84, 0x25, 0xAB, 0x3C, 0x00, 0xD7, 0x71, 0x87, + 0x69, 0xEC, 0x73, 0x62, 0xED, 0x4D, 0x74, 0x1E, 0x1E, 0x28, 0x99, 0x4A, + 0x92, 0x48, 0x88, 0x61, 0x2E, 0x5B, 0x67, 0x0F, 0xA6, 0x43, 0xA7, 0x7F, + 0xE9, 0xC5, 0x87, 0xB5, 0x00, 0xE7, 0xE8, 0xF4, 0x9A, 0x51, 0x6A, 0xA6, + 0xFE, 0xCD, 0x49, 0xED, 0x63, 0x3C, 0x2D, 0x41, 0x31, 0xD0, 0x6D, 0x3E, + 0xCA, 0x31, 0x10, 0x0B, 0x8C, 0xB0, 0x84, 0xF9, 0x55, 0x23, 0x3E, 0x18, + 0x48, 0x7B, 0x93, 0xBF, 0x34, 0x9F, 0x2D, 0x20, 0x24, 0x5A, 0x40, 0x4C, + 0xDF, 0x97, 0xAB, 0xB9, 0xF1, 0x54, 0xCF, 0x35, 0x13, 0xE8, 0x60, 0x74, + 0x21, 0x64, 0xB1, 0xFE, 0xE2, 0x85, 0xD4, 0x4D, 0x4A, 0xA0, 0x74, 0xDD, + 0xC2, 0x03, 0xD7, 0x61, 0x4C, 0x77, 0x0F, 0x38, 0xFE, 0x43, 0xEB, 0xDE, + 0xEE, 0x32, 0x4D, 0x79, 0x50, 0xE6, 0x02, 0x2B, 0x97, 0x4C, 0xAA, 0x46, + 0x31, 0x3A, 0x8D, 0xBD, 0x7F, 0x54, 0x86, 0x0A, 0x51, 0x5D, 0x3D, 0x59, + 0xBB, 0x7B, 0x07, 0x99, 0x0F, 0xF0, 0x63, 0xAD, 0x39, 0x0B, 0x99, 0xDC, + 0x18, 0x2F, 0x01, 0x26, 0x1F, 0x29, 0xF1, 0x81, 0xD9, 0x46, 0x68, 0x13, + 0xC8, 0xE8, 0xC6, 0xE7, 0x7C, 0x66, 0x72, 0xDF, 0x31, 0xEA, 0x13, 0xDF, + 0x3E, 0x88, 0xF7, 0x35, 0xC0, 0x27, 0xF1, 0xC8, 0x04, 0x55, 0x8D, 0xC2, + 0xB3, 0x87, 0x98, 0x51, 0x54, 0x46, 0x0C, 0x63, 0xBE, 0xD0, 0xBA, 0x4D, + 0x6F, 0x1C, 0xDF, 0xD4, 0xB1, 0x76, 0xCA, 0xB2, 0x85, 0xFE, 0x65, 0xE6, + 0xC0, 0x0D, 0x56, 0xBA, 0x2D, 0x99, 0xFC, 0x9B, 0x6D, 0xC2, 0xFE, 0x28, + 0x53, 0xED, 0xE0, 0xF7, 0x20, 0x4D, 0xD7, 0x4D, 0xF6, 0x5D, 0xC6, 0x50, + 0x8D, 0xC1, 0x19, 0xC7, 0x12, 0xF5, 0x53, 0xE0, 0xE8, 0x07, 0xA5, 0x4E, + 0x18, 0xF7, 0x5F, 0xFE, 0x48, 0x00, 0x12, 0x5F, 0x23, 0x4B, 0x80, 0x0D, + 0x43, 0x11, 0xCA, 0xAC, 0xFF, 0x1F, 0xB5, 0x3C, 0x43, 0x23, 0x7D, 0x86, + 0xB3, 0x58, 0x40, 0xF4, 0x42, 0xC1, 0xFB, 0x28, 0xFD, 0x89, 0x6B, 0x9C, + 0x41, 0xE5, 0x60, 0xCA, 0x14, 0x76, 0xAB, 0x35, 0x09, 0x74, 0xF0, 0x89, + 0xBB, 0x47, 0x3C, 0xBC, 0xED, 0x90, 0x5C, 0x75, 0xFE, 0x24, 0xD9, 0x41, + 0x93, 0xE1, 0x98, 0x8D, 0xA7, 0x71, 0xDF, 0x54, 0x4C, 0x62, 0x02, 0x7C, + 0x20, 0x9E, 0xDB, 0x59, 0xBB, 0x90, 0x89, 0x2C, 0x4D, 0x8E, 0x21, 0x25, + 0x5E, 0x6C, 0xD8, 0x2F, 0x4D, 0x03, 0x92, 0xDF, 0xE0, 0xD3, 0x57, 0xAA, + 0x12, 0xA1, 0x84, 0x88, 0x65, 0x25, 0x4B, 0xD6, 0xA1, 0x5C, 0x9F, 0xC0, + 0x6E, 0xCE, 0xD8, 0x49, 0xF6, 0x54, 0x22, 0x99, 0xDD, 0x69, 0x3D, 0x97, + 0x57, 0x71, 0xB1, 0x8D, 0x94, 0xA2, 0x3A, 0x53, 0x6C, 0xEB, 0xB7, 0x90, + 0xEC, 0x4F, 0x9C, 0x35, 0xCC, 0x7B, 0xE1, 0xFD, 0x54, 0xE2, 0xE8, 0xBD, + 0x97, 0xDE, 0x5C, 0xE6, 0x2E, 0xEA, 0x1B, 0x72, 0xFF, 0x30, 0xD5, 0x6F, + 0x94, 0x60, 0x42, 0x52, 0xA7, 0x71, 0xE2, 0xEA, 0xA9, 0xDC, 0xD0, 0xC4, + 0x5A, 0x01, 0x70, 0xFA, 0x04, 0x85, 0x45, 0x30, 0xFF, 0x23, 0x0B, 0x38, + 0xFB, 0xBA, 0x63, 0xAB, 0xA4, 0x50, 0x8F, 0x6A, 0x73, 0xAC, 0xFE, 0x33, + 0x95, 0x23, 0x1C, 0xD8, 0x5F, 0xEF, 0x71, 0xCD, 0x73, 0xC2, 0x84, 0x9E, + 0x7D, 0x81, 0x3B, 0xAE, 0x4D, 0xA8, 0xB7, 0xA8, 0xE8, 0xF5, 0x1A, 0xF0, + 0x02, 0x8E, 0x1C, 0x5E, 0x3F, 0x06, 0xDD, 0x2B, 0xC8, 0x38, 0x07, 0x29, + 0xAF, 0x80, 0xDB, 0x9E, 0xCD, 0x8A, 0x9F, 0x96, 0xB4, 0x3A, 0x94, 0x53, + 0x2F, 0xDA, 0xD8, 0x54, 0x88, 0x73, 0x63, 0x46, 0x73, 0x95, 0xE2, 0xD8, + 0xC5, 0x32, 0x06, 0xE7, 0x7C, 0xB4, 0xC7, 0x04, 0x6B, 0x66, 0xE0, 0x18, + 0xCD, 0x57, 0x45, 0x5D, 0x62, 0x8A, 0x39, 0x4C, 0x5F, 0x6E, 0x2F, 0xFC, + 0x73, 0xFA, 0x9E, 0xBB, 0x23, 0x9E, 0xCB, 0x56, 0x15, 0x6D, 0xF1, 0xDD, + 0x98, 0x1E, 0x33, 0x8E, 0xCA, 0xB7, 0x63, 0x3B, 0x62, 0x69, 0x7B, 0x68, + 0x71, 0xDB, 0x80, 0xA1, 0xD3, 0x9E, 0xBB, 0xC9, 0x0E, 0x90, 0x4F, 0xFA, + 0x61, 0xFC, 0xA3, 0xE1, 0xFA, 0xC3, 0x1F, 0x69, 0xC8, 0x4D, 0xBF, 0xB0, + 0x1F, 0x0C, 0xB2, 0x37, 0x28, 0xEC, 0xF1, 0xF7, 0x42, 0x80, 0xD4, 0x9B, + 0x40, 0x7D, 0xDA, 0x8B, 0x07, 0x60, 0x18, 0x26, 0x5C, 0x42, 0x1B, 0x05, + 0x81, 0x8B, 0xD0, 0xA1, 0x72, 0x3D, 0xCD, 0x44, 0x66, 0xD4, 0xFD, 0x10, + 0xDF, 0x78, 0x4D, 0xF0, 0x61, 0x00, 0x05, 0xC1, 0xEC, 0xF0, 0xE8, 0x73, + 0x58, 0xDE, 0xCF, 0x97, 0xAF, 0x57, 0xFC, 0x07, 0x0B, 0x06, 0x0F, 0xBB, + 0xCD, 0x0F, 0x62, 0x0E, 0x38, 0x80, 0x93, 0x86, 0x95, 0x17, 0x52, 0x22, + 0xAE, 0x1A, 0x3B, 0x55, 0x42, 0xCE, 0xF3, 0xF0, 0xFD, 0x34, 0x2F, 0x7E, + 0x57, 0x71, 0xAF, 0x45, 0x59, 0x3E, 0x65, 0x4C, 0xA6, 0x04, 0x3A, 0x19, + 0x94, 0x00, 0xD4, 0xEE, 0xBB, 0x3F, 0x09, 0x86, 0x57, 0x51, 0xD6, 0x71, + 0x03, 0xA9, 0xDB, 0x56, 0xED, 0x94, 0x8D, 0x75, 0xBB, 0x5A, 0x8D, 0x35, + 0xBA, 0xEC, 0xDF, 0x13, 0x7A, 0xAF, 0x1D, 0x19, 0xBE, 0x2E, 0x60, 0xB8, + 0xED, 0x0A, 0xEA, 0x26, 0xA3, 0x48, 0xF4, 0x8A, 0x71, 0x05, 0x35, 0x5A, + 0x54, 0x74, 0xAA, 0xA9, 0x15, 0x93, 0xEF, 0x0E, 0x81, 0x23, 0xE9, 0x4E, + 0xD1, 0x4E, 0x88, 0xC2, 0x1D, 0xE6, 0x5C, 0xC4, 0x54, 0x2B, 0xAE, 0xB4, + 0xF0, 0xF0, 0x4C, 0x86, 0xBA, 0xB1, 0xDD, 0x00, 0xEC, 0xF6, 0x7E, 0x6F, + 0x3F, 0x45, 0xA7, 0xA7, 0x09, 0x58, 0x49, 0x22, 0xBC, 0xB4, 0x0C, 0x33, + 0x21, 0xD6, 0x07, 0x44, 0x3C, 0xBA, 0xFE, 0xF8, 0xF8, 0x2B, 0xAE, 0x33, + 0x5B, 0xE7, 0xF9, 0x67, 0x68, 0xE3, 0xED, 0x40, 0x28, 0xF5, 0xFD, 0x5C, + 0xE5, 0x25, 0x20, 0x04, 0x29, 0x9B, 0xC1, 0xDD, 0x51, 0xEC, 0x57, 0x56, + 0x16, 0xA7, 0x4C, 0x3D, 0x80, 0xAE, 0x62, 0xFE, 0xBB, 0x2D, 0x17, 0x51, + 0x00, 0x01, 0x79, 0x53, 0xD7, 0x70, 0xFA, 0x89, 0xEB, 0xB5, 0x37, 0x92, + 0x03, 0x9C, 0x88, 0xC0, 0xA6, 0x62, 0x14, 0xB2, 0x0D, 0x22, 0xC8, 0xDC, + 0x43, 0x17, 0xF8, 0x72, 0xFE, 0x0B, 0x88, 0xD6, 0x96, 0x7A, 0xB5, 0xF3, + 0xC4, 0x6F, 0xEF, 0xA5, 0x87, 0xB7, 0x8A, 0xAD, 0x46, 0xCD, 0xFF, 0xF2, + 0x38, 0x14, 0xD8, 0xD4, 0xD4, 0xC5, 0x9A, 0x5D, 0x38, 0x3D, 0x44, 0x53, + 0xF3, 0x43, 0x79, 0x3F, 0xCD, 0xC2, 0x93, 0xB5, 0x34, 0x4F, 0x5E, 0xFA, + 0x4D, 0x64, 0x61, 0x39, 0x0A, 0xDC, 0x8D, 0xB5, 0xD3, 0x82, 0xFD, 0x53, + 0xAD, 0x9B, 0xC6, 0x79, 0x24, 0x09, 0x91, 0x8F, 0x61, 0x25, 0x07, 0x21, + 0x97, 0x73, 0x98, 0x98, 0xB5, 0x46, 0xD1, 0xFB, 0xCE, 0x91, 0xF4, 0xC6, + 0x39, 0xC7, 0xBE, 0xBF, 0x65, 0x97, 0x59, 0x27, 0x08, 0xDA, 0x30, 0x7D, + 0x05, 0x6D, 0x04, 0xD8, 0xA2, 0xDA, 0x52, 0xFA, 0xC2, 0x6B, 0x37, 0x21, + 0xEC, 0x03, 0xEE, 0x4D, 0x89, 0xA7, 0x81, 0x54, 0x1A, 0xB0, 0x2B, 0x3E, + 0xA7, 0xE0, 0x54, 0xF6, 0x5A, 0xD6, 0x4E, 0xA2, 0x23, 0x1D, 0x1E, 0xE2, + 0x46, 0x89, 0x20, 0xB5, 0x63, 0x44, 0xF1, 0xF5, 0x50, 0x6E, 0x5E, 0xD1, + 0x6A, 0x34, 0xA8, 0xA1, 0xE8, 0xC4, 0x17, 0xE8, 0x4F, 0xC8, 0x2E, 0x64, + 0x37, 0xC6, 0xEC, 0xDC, 0x65, 0x88, 0x38, 0x4A, 0xBF, 0x61, 0xC0, 0x8D, + 0xC6, 0xEE, 0xFA, 0x77, 0x66, 0xE5, 0xD1, 0x0C, 0x92, 0xC8, 0xD8, 0xE9, + 0x9B, 0xD6, 0x96, 0xB9, 0x93, 0x86, 0xB7, 0x40, 0x02, 0x7F, 0xD5, 0x5D, + 0x63, 0x53, 0x59, 0xCF, 0xBB, 0xD1, 0xE9, 0x3D, 0xF1, 0x2C, 0xC0, 0xAE, + 0xAD, 0xFC, 0x66, 0xC2, 0x0E, 0x13, 0x76, 0x2B, 0xA6, 0xB0, 0xDB, 0x31, + 0x89, 0x7D, 0xFE, 0x79, 0xAA, 0x49, 0xB1, 0x9A, 0xC1, 0xF0, 0x39, 0x05, + 0x08, 0x1C, 0x1F, 0xFC, 0xA8, 0xDC, 0x19, 0x3F, 0xDA, 0x26, 0x09, 0x11, + 0x7D, 0xAD, 0x8D, 0x55, 0xC3, 0x53, 0x61, 0x17, 0x74, 0x21, 0x7B, 0x0E, + 0xFC, 0xBF, 0xB5, 0x5B, 0xDC, 0x2B, 0x8F, 0x05, 0x40, 0x31, 0x05, 0xB9, + 0xF5, 0x9E, 0x25, 0x3D, 0x92, 0x4E, 0xDD, 0x8B, 0x41, 0x63, 0xC1, 0x7A, + 0x48, 0xCA, 0x8A, 0xE2, 0xA4, 0xFA, 0xB0, 0x81, 0x2F, 0x2A, 0x57, 0x8D, + 0x18, 0xE3, 0x34, 0xCD, 0x3F, 0x16, 0x7D, 0x69, 0x4E, 0x27, 0x84, 0x62, + 0xDD, 0x0C, 0x37, 0x81, 0x79, 0xB0, 0x79, 0x38, 0x46, 0xEF, 0x8B, 0xA7, + 0x2A, 0xC1, 0xCA, 0x67, 0xB6, 0xF7, 0x8B, 0xB9, 0x77, 0x93, 0x8F, 0x55, + 0x76, 0x10, 0x1C, 0x27, 0x92, 0x94, 0xCA, 0x67, 0xD1, 0xD4, 0xB8, 0x96, + 0xEF, 0xD1, 0xD2, 0x32, 0xF4, 0xD7, 0x86, 0x9C, 0xBE, 0xBA, 0x8E, 0x05, + 0xDA, 0x4B, 0x3D, 0x4A, 0x7E, 0x09, 0xE8, 0x0C, 0xE7, 0x53, 0xCB, 0x16, + 0xA1, 0x9E, 0x56, 0xCD, 0xD8, 0x6C, 0x14, 0x4C, 0x19, 0x01, 0xEE, 0x5E, + 0x03, 0x34, 0xB0, 0x3E, 0x30, 0x6E, 0x97, 0x75, 0x7F, 0x2B, 0xF2, 0xBA, + 0xB1, 0x84, 0x76, 0x79, 0xC7, 0x6E, 0x46, 0x79, 0xC1, 0x3B, 0x2F, 0x18, + 0x18, 0xDF, 0xBC, 0xAE, 0xFC, 0x1D, 0xE2, 0xB6, 0x77, 0x72, 0x5D, 0x04, + 0x1E, 0x46, 0x20, 0xFF, 0x78, 0x9A, 0x64, 0xF9, 0xE8, 0x36, 0x19, 0x19, + 0xBC, 0xF6, 0x54, 0x84, 0xAA, 0x8F, 0xB9, 0x7E, 0x06, 0x40, 0xF6, 0x96, + 0x0A, 0xD9, 0x01, 0x1B, 0x6C, 0xCC, 0x0D, 0x63, 0x9C, 0x0A, 0x13, 0xF0, + 0xC6, 0x16, 0x4D, 0xC2, 0x9F, 0xAF, 0x6B, 0x07, 0x96, 0x94, 0x69, 0x5A, + 0x90, 0x43, 0x51, 0xAE, 0xD3, 0x90, 0x10, 0x66, 0xEE, 0x94, 0xA1, 0x6C, + 0x42, 0x9F, 0x67, 0x1C, 0x85, 0x86, 0xBC, 0x81, 0xF7, 0x88, 0x30, 0xB8, + 0xCA, 0x47, 0xA2, 0x08, 0xC1, 0x99, 0x9A, 0x86, 0x79, 0x51, 0x12, 0xCD, + 0xE1, 0x69, 0xAE, 0xD2, 0x2C, 0xF8, 0x81, 0x92, 0x68, 0x3B, 0xDB, 0xDA, + 0xFA, 0x98, 0x29, 0x84, 0x1C, 0xF0, 0xFD, 0xA1, 0xDA, 0x90, 0x6D, 0xB3, + 0x78, 0xD2, 0x04, 0x1D, 0xD1, 0x9B, 0xBF, 0x0C, 0x15, 0x36, 0x9D, 0xC6, + 0xB4, 0x4D, 0xB5, 0x93, 0xD9, 0xDF, 0xBC, 0x3A, 0x16, 0x2A, 0x07, 0x3C, + 0xB0, 0x43, 0x95, 0x6E, 0x1E, 0x65, 0x09, 0x8D, 0x0D, 0x34, 0x45, 0x0E, + 0xD9, 0x3E, 0x52, 0x69, 0x91, 0xC1, 0x90, 0xCA, 0x8E, 0x33, 0x02, 0xD3, + 0x54, 0xB5, 0x61, 0xE8, 0xC6, 0x53, 0x01, 0x49, 0x4D, 0x0B, 0xAC, 0x3A, + 0x95, 0x1B, 0x70, 0x43, 0x62, 0x6B, 0xD8, 0x37, 0x6C, 0xE7, 0xAE, 0x94, + 0xE5, 0xE0, 0x1D, 0xE8, 0x1B, 0xC1, 0x52, 0x2A, 0x6B, 0x50, 0x32, 0xDE, + 0xF7, 0xF8, 0xCE, 0x49, 0x3E, 0xE5, 0x74, 0x29, 0x33, 0x75, 0xF0, 0x63, + 0x8A, 0x40, 0xE3, 0x13, 0x8F, 0xEB, 0x08, 0x24, 0xB2, 0x5A, 0x7A, 0xA9, + 0xD0, 0x1F, 0xCE, 0x8A, 0x84, 0xBA, 0x8C, 0x4F, 0x10, 0x78, 0xAE, 0x64, + 0xC3, 0xC3, 0x9A, 0x88, 0x59, 0xD2, 0xCD, 0x6E, 0xC2, 0xBC, 0x71, 0xEF, + 0xDF, 0xAA, 0xD4, 0x52, 0xF9, 0x1B, 0xCC, 0x17, 0x51, 0x46, 0x7E, 0xB6, + 0x0F, 0x77, 0x25, 0x3F, 0x23, 0x3B, 0xD9, 0xA7, 0x82, 0x6A, 0xB4, 0x12, + 0x30, 0x96, 0x27, 0x47, 0x9D, 0x70, 0xD6, 0xE9, 0x86, 0xFA, 0xBD, 0x9D, + 0x96, 0xE3, 0x30, 0x0C, 0x1E, 0xBD, 0xD9, 0xEA, 0x1E, 0x50, 0x18, 0x7F, + 0x7E, 0xBE, 0xAE, 0x8E, 0x11, 0xEA, 0xDE, 0x17, 0x97, 0x9D, 0x60, 0x2B, + 0xA2, 0x44, 0x1B, 0xCE, 0xC5, 0x3E, 0x68, 0x88, 0x1B, 0xDE, 0x0E, 0xFB, + 0xD2, 0xDA, 0x30, 0x1E, 0x75, 0x70, 0x84, 0x19, 0xBD, 0x50, 0x8C, 0x9B, + 0x46, 0x7F, 0xF4, 0x27, 0x19, 0xBF, 0x5C, 0xFC, 0xE3, 0xCF, 0x18, 0x9D, + 0xD1, 0x32, 0x39, 0x28, 0x1E, 0xCD, 0x47, 0xD4, 0x38, 0xB1, 0xF8, 0x06, + 0x4B, 0xC7, 0x45, 0x0B, 0x09, 0xA4, 0xE2, 0xF1, 0xC4, 0xA9, 0x00, 0xEA, + 0x44, 0xF5, 0x75, 0xCA, 0x9F, 0xD1, 0x3F, 0xCE, 0x4D, 0xD0, 0x42, 0x79, + 0x95, 0x76, 0xD9, 0x7C, 0xEF, 0x0A, 0xC6, 0x31, 0x82, 0xCC, 0xEA, 0x59, + 0x4B, 0x43, 0xD5, 0xB6, 0x1D, 0x05, 0x5E, 0x59, 0xA7, 0x21, 0x45, 0x0D, + 0x65, 0x57, 0x38, 0x76, 0x22, 0x39, 0x8A, 0x5D, 0xC8, 0x94, 0xE0, 0x51, + 0x19, 0x68, 0x1E, 0x58, 0x5F, 0xB0, 0xBA, 0xC3, 0x55, 0xB4, 0x86, 0x18, + 0x24, 0xDE, 0x2C, 0x8E, 0xE2, 0xB6, 0x67, 0x04, 0xD0, 0x3B, 0x84, 0x22, + 0x50, 0xDB, 0x04, 0x1E, 0xE0, 0x17, 0x5F, 0xF0, 0xC7, 0xFE, 0x02, 0x17, + 0xD0, 0x0C, 0x9D, 0x49, 0x00, 0x54, 0x79, 0xA0, 0xD0, 0x9B, 0xBF, 0xC2, + 0xCE, 0x5E, 0xCC, 0xDE, 0x65, 0xF4, 0x62, 0x72, 0x7D, 0x33, 0x08, 0xF9, + 0x26, 0x22, 0x84, 0xEE, 0xC8, 0x35, 0xD7, 0x42, 0x31, 0x8F, 0x5C, 0x23, + 0xAA, 0x37, 0xC1, 0x79, 0xB0, 0xAD, 0x1E, 0x3A, 0xE3, 0x1C, 0x16, 0x49, + 0x4D, 0xEA, 0xB0, 0x0A, 0x06, 0xD3, 0x56, 0x33, 0xD6, 0xDE, 0x3E, 0xF3, + 0x64, 0xE2, 0xB6, 0xF2, 0xAC, 0xA5, 0x41, 0xDD, 0x8E, 0xDA, 0x3E, 0x56, + 0x91, 0x66, 0x1B, 0x80, 0xC3, 0x2D, 0xAB, 0x84, 0xC6, 0xBF, 0xDD, 0x10, + 0x36, 0x21, 0x65, 0xE5, 0xBE, 0x2B, 0x54, 0xCC, 0x6F, 0xE0, 0x70, 0xE5, + 0x7A, 0x73, 0xC7, 0xF9, 0x8F, 0xB2, 0xEC, 0x1E, 0xD6, 0x5E, 0x55, 0x74, + 0xC5, 0x19, 0x9D, 0x40, 0x13, 0x7C, 0xD4, 0x85, 0x10, 0xD5, 0x1D, 0x8C, + 0x8F, 0x27, 0x68, 0xBC, 0x76, 0x9E, 0x14, 0xFF, 0x5D, 0xEA, 0x8B, 0xCB, + 0x16, 0xBE, 0x4F, 0xFB, 0x02, 0xAC, 0x97, 0x0F, 0x3E, 0xBD, 0xD0, 0x1A, + 0xCB, 0x93, 0xD8, 0x98, 0xBD, 0x15, 0x26, 0x91, 0xB9, 0xD0, 0xC6, 0x8D, + 0x6B, 0x91, 0x82, 0x4A, 0x10, 0x77, 0xFA, 0x04, 0x60, 0xCC, 0xEB, 0x76, + 0x15, 0x5D, 0x96, 0xE6, 0x16, 0x19, 0x73, 0xD2, 0xB9, 0xDD, 0x25, 0xF7, + 0xFB, 0xFD, 0x7A, 0xEC, 0x1D, 0xA4, 0x5D, 0x3E, 0xAE, 0xBA, 0xEB, 0x84, + 0x1D, 0x73, 0xD4, 0xE4, 0xB5, 0xBC, 0x0D, 0x79, 0xC5, 0xF6, 0xA3, 0xE9, + 0x02, 0x64, 0x96, 0x65, 0x7A, 0x23, 0xDE, 0xFD, 0xEE, 0x22, 0x24, 0xFD, + 0x1A, 0x39, 0x37, 0xD0, 0x51, 0xEB, 0x35, 0x3D, 0x30, 0x90, 0xE4, 0x70, + 0x6A, 0x58, 0xB7, 0x9A, 0xE6, 0xB0, 0xAE, 0x7C, 0x64, 0x61, 0x42, 0x74, + 0x0C, 0xF3, 0x9D, 0xCC, 0x40, 0x92, 0x23, 0xC1, 0x25, 0x2E, 0x07, 0x0E, + 0x76, 0x0C, 0x4C, 0x3C, 0xA4, 0x2A, 0xE7, 0x1A, 0x91, 0xDE, 0x15, 0xF0, + 0xF4, 0x08, 0x95, 0x77, 0x58, 0x4B, 0xF2, 0x45, 0xBE, 0x7C, 0xE4, 0x51, + 0x57, 0x24, 0x92, 0x8D, 0x5F, 0x50, 0xA6, 0x77, 0xFA, 0x9E, 0xB4, 0xA2, + 0xF9, 0xBA, 0x31, 0x37, 0xD8, 0x2D, 0xAF, 0xCB, 0x47, 0x98, 0xB3, 0x68, + 0xA0, 0xB7, 0xCA, 0x2F, 0x79, 0xBA, 0xB7, 0x8D, 0x53, 0xB3, 0xAB, 0xDC, + 0x4E, 0x47, 0x2F, 0x35, 0x4B, 0xC7, 0xAA, 0x64, 0x49, 0x9B, 0xB2, 0x92, + 0x85, 0x43, 0x10, 0xE6, 0x84, 0x8B, 0xF5, 0xAE, 0x77, 0x28, 0x30, 0x46, + 0xF4, 0xFC, 0xEE, 0x46, 0x78, 0x71, 0xE1, 0xDA, 0xAA, 0x33, 0x23, 0x98, + 0x5E, 0xF0, 0xA5, 0x41, 0x75, 0x4B, 0xC9, 0xBD, 0x4B, 0x91, 0x38, 0xEF, + 0x5B, 0x5D, 0x29, 0x9F, 0xAE, 0x95, 0x5F, 0xDB, 0x60, 0xDD, 0xB9, 0xBE, + 0x4D, 0x7D, 0xA0, 0xA4, 0xAC, 0x9F, 0x65, 0x6A, 0xFA, 0x81, 0x01, 0xCF, + 0x8F, 0xE2, 0x2C, 0x27, 0x64, 0x3A, 0x4D, 0x23, 0xC7, 0x7B, 0x4F, 0xCF, + 0xA1, 0xDC, 0x0E, 0x21, 0x82, 0x2B, 0xD8, 0x51, 0x8B, 0x35, 0x81, 0x87, + 0x9F, 0xFD, 0x05, 0xC5, 0x17, 0xAF, 0x99, 0x3D, 0x2B, 0x28, 0x2D, 0x82, + 0x3A, 0x13, 0x68, 0x31, 0x21, 0x66, 0x53, 0xDB, 0x07, 0x45, 0xBD, 0x24, + 0x52, 0xAA, 0xC6, 0xD4, 0x70, 0x24, 0xB1, 0x67, 0x9A, 0x94, 0xEA, 0xF0, + 0x6B, 0x67, 0x99, 0xDD, 0x4F, 0x11, 0x73, 0xD2, 0x04, 0xBE, 0xB5, 0x77, + 0xFB, 0xA2, 0x31, 0xCC, 0xD4, 0x1E, 0x91, 0x02, 0xD2, 0x62, 0xF6, 0xB1, + 0x32, 0x36, 0x12, 0xF8, 0x4D, 0x1D, 0x47, 0x10, 0xA8, 0x65, 0x34, 0x71, + 0x48, 0x9E, 0x22, 0x2B, 0xA2, 0x4F, 0xF9, 0x2B, 0xEB, 0x0F, 0x31, 0x80, + 0x7E, 0xCA, 0x4A, 0xCF, 0x37, 0x08, 0x21, 0x1D, 0xBA, 0xD9, 0x32, 0x14, + 0x3E, 0xEF, 0x6C, 0xFE, 0xB7, 0xA3, 0x56, 0x07, 0x62, 0x50, 0xA5, 0x23, + 0xB4, 0x45, 0x9C, 0x51, 0xDF, 0xEB, 0x93, 0x1D, 0x4E, 0xFF, 0x29, 0xB2, + 0x50, 0xF0, 0x2A, 0xEF, 0xEE, 0x73, 0x9B, 0x51, 0x69, 0x34, 0xAE, 0xF7, + 0x4A, 0x4C, 0x06, 0x9D, 0x20, 0xC7, 0x12, 0x3F, 0x31, 0xBB, 0xBC, 0xD3, + 0x27, 0xA9, 0x89, 0xC7, 0x42, 0x1F, 0x2E, 0x60, 0xEC, 0x29, 0x0D, 0x11, + 0x88, 0xFC, 0xB4, 0x31, 0x08, 0xDD, 0x69, 0x15, 0xF1, 0x64, 0x25, 0x52, + 0x46, 0x07, 0xAE, 0x35, 0xAA, 0x46, 0x89, 0x3A, 0xEA, 0x7F, 0xDC, 0x69, + 0x9F, 0xD6, 0xF1, 0x3C, 0xDC, 0x6D, 0x00, 0x09, 0x95, 0x9D, 0x72, 0x50, + 0xE7, 0xD7, 0xAC, 0x7D, 0x3D, 0xFD, 0x1D, 0x06, 0x38, 0xAD, 0xD7, 0x7A, + 0xEC, 0x06, 0x0F, 0x2F, 0x3F, 0x4F, 0xD2, 0xC2, 0xAA, 0x30, 0x92, 0x18, + 0x93, 0xE0, 0x65, 0xD9, 0xD8, 0x01, 0x48, 0xFD, 0xC1, 0xA3, 0xE4, 0xBD, + 0x21, 0x05, 0x45, 0xA0, 0xCD, 0xDC, 0x87, 0x29, 0x6E, 0xE1, 0x77, 0x98, + 0x4D, 0x09, 0x79, 0xB2, 0x62, 0x51, 0x73, 0x7B, 0x61, 0x14, 0x1D, 0x41, + 0xA0, 0x92, 0xB9, 0x6E, 0x32, 0xA7, 0xD1, 0x68, 0xFB, 0x6D, 0x4C, 0x88, + 0x3D, 0x7A, 0x54, 0x85, 0x49, 0x7C, 0x24, 0xD9, 0xFF, 0xC7, 0x07, 0x9C, + 0xEF, 0xF6, 0x16, 0x6A, 0xB6, 0x1B, 0xB4, 0x23, 0x71, 0x40, 0x3B, 0x0F, + 0xE6, 0xC6, 0x35, 0x6E, 0x3B, 0xC7, 0x8F, 0xCE, 0x08, 0xFF, 0x6A, 0x94, + 0xCB, 0xB9, 0xA5, 0x21, 0x30, 0xAC, 0xE1, 0xE6, 0xB1, 0xDB, 0x31, 0x84, + 0xB3, 0x5A, 0x41, 0x9F, 0x10, 0x21, 0x68, 0xCF, 0xED, 0x6B, 0xB4, 0xCF, + 0xAB, 0x6E, 0xA2, 0x05, 0xF1, 0xF1, 0xEC, 0xE8, 0x29, 0xF4, 0xD9, 0x95, + 0x61, 0xC2, 0x2A, 0xCC, 0xFE, 0x9B, 0x8D, 0x5B, 0x94, 0x60, 0x96, 0x51, + 0x02, 0x3D, 0xB4, 0x0F, 0xC6, 0x51, 0x05, 0x7F, 0xFB, 0x4E, 0x4D, 0x21, + 0x38, 0xBF, 0xDD, 0x2E, 0x2A, 0xB0, 0x85, 0xC8, 0x16, 0xB9, 0x78, 0xAB, + 0xE1, 0xA0, 0x54, 0x0E, 0x19, 0x86, 0xCD, 0x39, 0xBF, 0x73, 0x38, 0xFF, + 0xD3, 0x2F, 0xF9, 0xEB, 0x21, 0xB7, 0x9F, 0x96, 0x8C, 0x15, 0x44, 0x06, + 0xEE, 0x04, 0x04, 0xAD, 0x3C, 0xCA, 0x2D, 0xB6, 0xAF, 0x8F, 0x6B, 0x11, + 0xE4, 0x12, 0x46, 0x2A, 0x4A, 0x9B, 0x2F, 0x8F, 0x66, 0xEB, 0x2B, 0xA1, + 0xF7, 0x65, 0x92, 0x14, 0x78, 0xF9, 0xA4, 0x5A, 0x8A, 0x33, 0x92, 0x87, + 0x75, 0x9F, 0x0A, 0x27, 0x53, 0xC8, 0xB1, 0xD5, 0xAB, 0xA2, 0x56, 0xB7, + 0x8D, 0xA4, 0xA7, 0x2F, 0x95, 0xA8, 0xC5, 0xC6, 0xB0, 0xBE, 0xAF, 0x68, + 0x99, 0x2D, 0x86, 0x01, 0x31, 0x6A, 0x7A, 0xE3, 0xDD, 0x87, 0x03, 0x31, + 0x57, 0x33, 0x31, 0x49, 0x12, 0x90, 0xEB, 0x1A, 0x3C, 0x67, 0x2C, 0x60, + 0xB8, 0xC4, 0x2C, 0x6A, 0xD2, 0x1C, 0xF5, 0x0E, 0x2E, 0x71, 0x1A, 0x14, + 0x25, 0xE0, 0xAA, 0xE2, 0xD7, 0xB7, 0x9D, 0xCE, 0xDA, 0x12, 0x0C, 0x9D, + 0x85, 0x37, 0x0E, 0xF3, 0x8B, 0x9D, 0xBF, 0xE7, 0xFB, 0xAC, 0x5D, 0x3D, + 0x00, 0x72, 0x4C, 0xB9, 0xEE, 0x7B, 0xF7, 0xA6, 0xC9, 0xD4, 0xE6, 0x27, + 0x24, 0x31, 0xD0, 0x56, 0x58, 0x4B, 0x00, 0x02, 0xA0, 0x2A, 0xDA, 0xBB, + 0x23, 0x43, 0x87, 0x8F, 0xC0, 0xB4, 0x87, 0x6F, 0xD4, 0xF8, 0x0F, 0x38, + 0x6E, 0x82, 0xFC, 0xE2, 0x1E, 0xD5, 0x96, 0x05, 0xD1, 0x1A, 0x95, 0x1B, + 0xE6, 0xC1, 0xF0, 0xA1, 0x8A, 0x0F, 0xF0, 0xD4, 0x2D, 0x03, 0x5D, 0x2F, + 0xCD, 0xF4, 0x0A, 0xFF, 0xBB, 0xD2, 0x79, 0x06, 0xAA, 0x65, 0xF1, 0x4D, + 0x8E, 0x6E, 0x24, 0x08, 0x6D, 0xA5, 0x66, 0x84, 0x28, 0x25, 0xE2, 0xC1, + 0xA8, 0xFB, 0x6F, 0x2E, 0x99, 0xC1, 0xA8, 0x99, 0x16, 0xF8, 0xCD, 0x5F, + 0xF5, 0x41, 0xFB, 0xD1, 0xC7, 0xA6, 0xF4, 0x2F, 0x4A, 0xAE, 0x36, 0xF8, + 0x9D, 0x23, 0x62, 0x5C, 0x3C, 0x62, 0xD4, 0xF5, 0x52, 0x46, 0xDE, 0x28, + 0xB5, 0x7D, 0xFD, 0x25, 0xB4, 0x51, 0x70, 0xB3, 0x5D, 0x56, 0x92, 0x51, + 0x8C, 0x4B, 0x69, 0xE8, 0x34, 0x66, 0x41, 0x4E, 0x22, 0x72, 0x82, 0x1A, + 0xEB, 0xDE, 0x59, 0x5B, 0x3C, 0x0E, 0x66, 0x7F, 0xB6, 0xC8, 0x07, 0x2F, + 0x82, 0x89, 0xDA, 0xC4, 0x8E, 0xC4, 0x70, 0xA1, 0xEA, 0xD3, 0xA9, 0x28, + 0xFE, 0x9B, 0xCA, 0xE8, 0x89, 0xD1, 0xE0, 0xC6, 0x36, 0x91, 0x09, 0x98, + 0x4F, 0x28, 0x9B, 0x10, 0x4B, 0x89, 0xDB, 0xC4, 0xCA, 0x60, 0x57, 0xA0, + 0x0F, 0x04, 0x3F, 0x1B, 0x75, 0xAE, 0x5A, 0x9F, 0x0A, 0xFB, 0xCC, 0x6F, + 0x46, 0xE8, 0xC1, 0xB0, 0x98, 0x1D, 0x6B, 0xC3, 0x3C, 0xEA, 0x83, 0x5E, + 0xBF, 0x21, 0x5E, 0x28, 0x3C, 0x8E, 0xF4, 0x6B, 0xAA, 0x3F, 0x0E, 0xBC, + 0xB5, 0xAD, 0x65, 0xEF, 0xA3, 0xB1, 0x73, 0x3C, 0x55, 0x52, 0xB6, 0xBC, + 0x5E, 0xA4, 0xC6, 0x27, 0x88, 0xEB, 0x34, 0xB1, 0x61, 0x5F, 0x03, 0x20, + 0x66, 0x95, 0x9B, 0xC6, 0x94, 0xC1, 0x65, 0xAA, 0x8E, 0x4E, 0x41, 0xB4, + 0xB2, 0x45, 0x04, 0x42, 0xA0, 0xC3, 0xB1, 0xD2, 0x46, 0x0A, 0xFE, 0x4A, + 0xDD, 0xC3, 0xC0, 0x01, 0x6A, 0x3F, 0xAF, 0xF5, 0xDE, 0x92, 0xC3, 0xF0, + 0xEC, 0xDF, 0x69, 0xEC, 0x25, 0x1F, 0x43, 0x4E, 0x87, 0x80, 0xF9, 0xD7, + 0x54, 0x92, 0x8E, 0x02, 0xCC, 0xF0, 0x46, 0x79, 0x9C, 0x2A, 0x5F, 0xCF, + 0x24, 0x3F, 0x7F, 0xD3, 0x2F, 0xBE, 0x71, 0x51, 0xCD, 0xAC, 0x73, 0xD5, + 0x60, 0x44, 0x7E, 0x96, 0xE6, 0x5F, 0xFD, 0x08, 0x46, 0x17, 0x10, 0x3A, + 0x71, 0xF6, 0x8E, 0xAF, 0x6E, 0xFC, 0x4E, 0x05, 0xD1, 0x43, 0xC0, 0xF1, + 0x77, 0xEE, 0x02, 0x94, 0x8D, 0x84, 0x32, 0xB5, 0x7E, 0x40, 0x3F, 0xF9, + 0x74, 0xF1, 0x5B, 0xCC, 0xDA, 0xB5, 0x48, 0xEC, 0x5A, 0xEC, 0xC0, 0x1D, + 0x50, 0x9D, 0x86, 0x6F, 0xBF, 0x42, 0xAE, 0xEE, 0x93, 0x46, 0xEF, 0xEC, + 0x0F, 0xFE, 0x13, 0x37, 0x7D, 0xD3, 0xF4, 0xAF, 0x7F, 0x6F, 0x62, 0x61, + 0xA3, 0x1A, 0xD1, 0xEF, 0x8D, 0xCF, 0x9E, 0xE3, 0x46, 0x8A, 0x9F, 0x35, + 0x3A, 0xB4, 0xBC, 0xA7, 0x9F, 0x3F, 0x90, 0x16, 0x66, 0xBB, 0x6B, 0x5B, + 0x47, 0xF9, 0xD5, 0x80, 0x53, 0x26, 0x69, 0x0F, 0x0E, 0x5D, 0xAD, 0x3E, + 0x42, 0x75, 0xD1, 0x65, 0x62, 0xDD, 0xBB, 0xBB, 0x0F, 0x2B, 0x11, 0xCC, + 0xEE, 0x1D, 0x47, 0x2E, 0xD7, 0x83, 0x71, 0xCE, 0x24, 0x1C, 0xA4, 0xC3, + 0xA1, 0x0C, 0x9F, 0x99, 0x51, 0x59, 0x39, 0x8F, 0x24, 0xDA, 0x16, 0xA1, + 0x1A, 0xE3, 0x69, 0x07, 0x27, 0x5B, 0xAA, 0xA7, 0x24, 0xA2, 0xEB, 0x2B, + 0x49, 0x29, 0x21, 0xA0, 0xA3, 0xC9, 0x0D, 0xC7, 0xB5, 0x0D, 0xDF, 0xA3, + 0xED, 0xD8, 0x37, 0x97, 0x47, 0x56, 0xAB, 0x6E, 0x8C, 0x64, 0xE3, 0xDC, + 0x2F, 0x1C, 0x0F, 0x44, 0x71, 0x23, 0xF7, 0x59, 0x26, 0xAB, 0xDA, 0x8C, + 0x7D, 0x5A, 0x80, 0x15, 0x2D, 0xA0, 0x92, 0x5C, 0x6A, 0x8F, 0x07, 0x88, + 0x14, 0xED, 0xAE, 0x56, 0x35, 0xF4, 0x3E, 0xBF, 0x69, 0x84, 0xE0, 0xAE, + 0x60, 0xB9, 0xF6, 0x8A, 0x2B, 0x53, 0x22, 0xCE, 0x1C, 0x95, 0x85, 0xBC, + 0xEC, 0xE4, 0xE3, 0xE2, 0x96, 0xC0, 0xCF, 0xA5, 0x5D, 0x25, 0x0C, 0x85, + 0x51, 0x2A, 0xC5, 0x38, 0x25, 0x97, 0xDC, 0x7C, 0x14, 0x39, 0x1F, 0xB4, + 0x3C, 0xBF, 0x65, 0x0F, 0x41, 0xD1, 0xE5, 0x81, 0xCA, 0xF3, 0xB7, 0x1C, + 0xC5, 0xC4, 0xC0, 0xB8, 0xBB, 0xCE, 0x39, 0x7C, 0x2E, 0x1F, 0x27, 0xAD, + 0x16, 0x8A, 0x69, 0x69, 0x1D, 0x3B, 0x89, 0x4E, 0xC3, 0x28, 0x1C, 0x1B, + 0x47, 0x98, 0xA3, 0xDB, 0xC9, 0x69, 0x6E, 0x11, 0xD6, 0xA0, 0x08, 0x74, + 0x8B, 0x37, 0x4B, 0x66, 0x7A, 0x12, 0x70, 0x35, 0x84, 0x38, 0x27, 0x8F, + 0xAC, 0xC9, 0xFF, 0xFC, 0xC2, 0x1A, 0x0F, 0x58, 0x8E, 0x7E, 0xF1, 0xCD, + 0x73, 0x74, 0x09, 0x57, 0x24, 0xBC, 0xA3, 0x0B, 0xBD, 0x6D, 0x8E, 0x63, + 0x09, 0x15, 0xBD, 0x7F, 0x09, 0xDA, 0xE1, 0x06, 0x34, 0x0B, 0x74, 0xB8, + 0xB8, 0x9D, 0x8A, 0xFA, 0x4E, 0x1E, 0xF4, 0x6A, 0x8C, 0x4C, 0xD6, 0x34, + 0x3F, 0x82, 0xD2, 0x84, 0xD5, 0xDA, 0x2D, 0xDB, 0xCD, 0x9F, 0x2A, 0x1D, + 0xE8, 0x24, 0x43, 0xEC, 0x94, 0xCF, 0x51, 0xBF, 0x48, 0x50, 0xC5, 0x71, + 0x73, 0x78, 0x35, 0xD9, 0x98, 0x1E, 0xCF, 0x96, 0x02, 0x74, 0x29, 0xE9, + 0x30, 0x02, 0x5B, 0xEC, 0x66, 0xD8, 0xD0, 0xB6, 0x4D, 0x33, 0x3F, 0x2A, + 0xF4, 0x2A, 0xC6, 0xAD, 0x82, 0x9A, 0x1D, 0x62, 0xE2, 0xDA, 0x05, 0xE7, + 0x8C, 0x69, 0xCB, 0xB4, 0xB8, 0xD9, 0xEB, 0x7D, 0x49, 0xD6, 0x5E, 0xDD, + 0xA5, 0x85, 0xB5, 0x3F, 0x08, 0xEB, 0x33, 0xA6, 0x2D, 0x68, 0x17, 0xF2, + 0x20, 0x3D, 0xEC, 0xAC, 0x71, 0x8C, 0x51, 0x7A, 0x20, 0x05, 0x63, 0xF3, + 0x7A, 0x98, 0x4A, 0x26, 0x2E, 0xEC, 0xD1, 0x9B, 0x50, 0x7D, 0xEB, 0x37, + 0xD3, 0xD9, 0x21, 0x6B, 0x97, 0x06, 0x9F, 0x10, 0x0A, 0x8B, 0x56, 0x6D, + 0x7B, 0x78, 0x9D, 0xF6, 0x89, 0x8B, 0xDF, 0x7B, 0x21, 0xF0, 0x55, 0x85, + 0xF8, 0x23, 0xAB, 0xEA, 0x5A, 0xF8, 0x0C, 0xB8, 0xB9, 0x13, 0xDA, 0xCC, + 0x0A, 0x35, 0x21, 0xAF, 0x78, 0x87, 0x33, 0x78, 0x89, 0x39, 0x1E, 0x15, + 0xD7, 0x14, 0x49, 0xC9, 0x14, 0x60, 0x39, 0xAC, 0x4C, 0x76, 0x64, 0xD7, + 0xCF, 0x8A, 0x4A, 0xDA, 0xF7, 0x20, 0xCD, 0x46, 0xB4, 0x3B, 0x20, 0x60, + 0x43, 0x6B, 0x52, 0xD9, 0x20, 0x10, 0x8A, 0xF9, 0xF7, 0x34, 0xDA, 0x5E, + 0xCF, 0xD1, 0xCC, 0x60, 0x31, 0xF8, 0xE5, 0x5C, 0xF5, 0xC8, 0xCB, 0x3C, + 0xF6, 0x63, 0xD4, 0x26, 0xA1, 0x41, 0x71, 0xCD, 0x73, 0x97, 0xBF, 0x27, + 0x2A, 0x2C, 0x0C, 0x75, 0x6D, 0x4A, 0xA0, 0x8A, 0x0D, 0x02, 0x53, 0xBA, + 0x72, 0xA3, 0xE0, 0xE6, 0x1A, 0x85, 0xC5, 0xD7, 0xF1, 0x49, 0x4F, 0x24, + 0x16, 0x35, 0x3F, 0x0C, 0x2B, 0xCE, 0x9C, 0x35, 0x0F, 0x23, 0xA3, 0x7C, + 0xCE, 0xC8, 0xED, 0x34, 0x2C, 0xCC, 0x33, 0x0A, 0x73, 0xA3, 0x58, 0x53, + 0x78, 0x55, 0xD1, 0xC2, 0x08, 0xCA, 0x03, 0xBE, 0x6E, 0x1D, 0x9C, 0xD2, + 0x67, 0x71, 0x4D, 0x77, 0x9A, 0x63, 0xA1, 0x7C, 0x31, 0x11, 0x3D, 0xDE, + 0xE0, 0xDC, 0x0D, 0x06, 0xDD, 0xAF, 0x16, 0x65, 0xF6, 0xF0, 0x27, 0x28, + 0x9A, 0xBA, 0xED, 0xE2, 0xC2, 0x27, 0x2B, 0x74, 0x2D, 0xF8, 0x6E, 0xE1, + 0x0C, 0xB2, 0xC7, 0xBF, 0xD3, 0x0A, 0x94, 0x0E, 0x3A, 0xE1, 0x04, 0x34, + 0x97, 0xA7, 0x7E, 0x01, 0xA0, 0x31, 0x89, 0x86, 0x05, 0x28, 0x84, 0x0C, + 0x3E, 0xB5, 0x22, 0x26, 0x6E, 0x52, 0xFD, 0x3B, 0x39, 0x5B, 0xB7, 0xEC, + 0x49, 0x50, 0x21, 0xA6, 0x58, 0x20, 0x50, 0x11, 0x5D, 0x9E, 0xFF, 0xF5, + 0x93, 0x74, 0x39, 0x24, 0xBD, 0xBA, 0x5A, 0xB5, 0x4E, 0x35, 0xEB, 0x13, + 0x31, 0x04, 0x3D, 0xAD, 0xBE, 0xBB, 0x43, 0x24, 0xC1, 0x8F, 0x2A, 0x43, + 0x6D, 0x85, 0x6C, 0x8E, 0x78, 0x6A, 0x7F, 0xE3, 0x5C, 0xE4, 0xC1, 0x4A, + 0x68, 0x46, 0xC4, 0xA4, 0xEB, 0x8A, 0xB0, 0xFB, 0x02, 0xE9, 0x76, 0x49, + 0x0C, 0x90, 0x3F, 0x4F, 0x79, 0x39, 0xA9, 0x93, 0x61, 0x66, 0x4F, 0x60, + 0x8A, 0x5C, 0x91, 0xCC, 0x2D, 0x2D, 0x43, 0xCD, 0x38, 0xE7, 0x6B, 0xE1, + 0xA5, 0xA9, 0x53, 0xC9, 0x0E, 0xBB, 0x36, 0x10, 0x2C, 0xDF, 0x2E, 0xB5, + 0xD1, 0x81, 0xCC, 0x4F, 0xAF, 0x77, 0x21, 0xFC, 0xA8, 0xFB, 0x78, 0x3D, + 0xF0, 0x16, 0x76, 0xCF, 0x97, 0x67, 0xE8, 0x2B, 0x29, 0x00, 0x93, 0xAF, + 0x60, 0x66, 0x38, 0x0C, 0x4A, 0xED, 0xAA, 0xA7, 0x89, 0x3F, 0xE8, 0x40, + 0x9D, 0x02, 0xA7, 0xB7, 0x95, 0x51, 0xBE, 0x57, 0x45, 0xC5, 0x7E, 0x1E, + 0xAD, 0x09, 0x6C, 0xD9, 0x81, 0x56, 0xA2, 0x92, 0x72, 0x17, 0xD2, 0x86, + 0x62, 0x7A, 0x62, 0x0A, 0xAE, 0xEC, 0x0D, 0x27, 0x35, 0x40, 0xFA, 0xAE, + 0x78, 0xEA, 0x70, 0xD4, 0xF0, 0xDA, 0xCD, 0x87, 0xF5, 0x9D, 0x5F, 0x83, + 0xCB, 0x3B, 0x07, 0x52, 0xD0, 0xA2, 0xB4, 0x22, 0x8E, 0xDF, 0xAA, 0xF6, + 0xAB, 0x31, 0x91, 0x90, 0xBE, 0x21, 0xF9, 0x7D, 0x87, 0x23, 0x1C, 0x59, + 0x00, 0x05, 0xF5, 0x4F, 0x9B, 0xBB, 0x6D, 0x50, 0x7E, 0x56, 0x6B, 0x3E, + 0xAE, 0x9B, 0x6F, 0xAB, 0x88, 0xEC, 0xAE, 0x0F, 0x6C, 0x89, 0xAB, 0x26, + 0x6B, 0x5A, 0xD9, 0x6D, 0xF1, 0x23, 0x9E, 0xB3, 0xEB, 0x97, 0x08, 0xF0, + 0x0E, 0x5C, 0x80, 0x00, 0xCD, 0x7A, 0x4F, 0x64, 0xF9, 0x1A, 0x80, 0x0D, + 0xFA, 0x3D, 0x42, 0x71, 0x39, 0x83, 0x15, 0x8A, 0xFF, 0x91, 0x9F, 0x80, + 0x0F, 0x67, 0xAA, 0xBB, 0xB0, 0x67, 0x45, 0x30, 0xDD, 0x86, 0x8C, 0x1D, + 0xF7, 0x7A, 0xB3, 0x28, 0xA1, 0xD6, 0x56, 0x63, 0xD2, 0x75, 0x10, 0xF0, + 0x77, 0x53, 0x1A, 0x95, 0x9A, 0x49, 0xD7, 0x3E, 0xAA, 0x24, 0x92, 0x02, + 0x92, 0xF5, 0x7D, 0x2F, 0x8F, 0x24, 0x36, 0x11, 0x59, 0xCF, 0x62, 0xA6, + 0x69, 0xCD, 0xB5, 0x66, 0x75, 0x20, 0x16, 0x41, 0xC1, 0x4F, 0xE5, 0x81, + 0xC4, 0xC2, 0x91, 0x69, 0xC0, 0xF1, 0xA3, 0x01, 0x6B, 0xA9, 0x0F, 0x55, + 0x2D, 0x29, 0xD7, 0x1D, 0xDD, 0x7D, 0x9E, 0xCF, 0xF5, 0x05, 0xFA, 0x7C, + 0x1F, 0x8B, 0xC9, 0xCA, 0x34, 0x66, 0xEF, 0x3C, 0x24, 0x9A, 0xAE, 0xCF, + 0xCB, 0x12, 0xB1, 0xE5, 0x59, 0xD9, 0x30, 0x90, 0xB3, 0xA7, 0xE9, 0x38, + 0x9A, 0x73, 0x1C, 0xDE, 0xBE, 0x62, 0x77, 0x5E, 0x75, 0xBF, 0x37, 0x39, + 0x27, 0xBA, 0x91, 0xEB, 0xED, 0xAB, 0xB5, 0xCE, 0x8E, 0x6E, 0xBD, 0xD4, + 0x64, 0x64, 0x47, 0x16, 0x14, 0x98, 0xC6, 0xF0, 0xB6, 0x4A, 0xE8, 0xB7, + 0x67, 0x86, 0xC5, 0xCB, 0xCE, 0xB1, 0x7B, 0xC0, 0xDE, 0x87, 0xF7, 0x8E, + 0xE7, 0x21, 0x3A, 0x86, 0xB5, 0x9C, 0x38, 0xBA, 0x60, 0x98, 0xFA, 0x93, + 0xBA, 0x63, 0xE3, 0x0F, 0x74, 0xB1, 0x6B, 0x39, 0x68, 0xB6, 0x53, 0xB1, + 0x8A, 0xBB, 0x76, 0x65, 0x74, 0x1D, 0x99, 0xBA, 0x01, 0x8A, 0xE3, 0x7C, + 0xC0, 0x73, 0x2A, 0x98, 0x13, 0x0E, 0x22, 0xB4, 0xF6, 0xC4, 0xF9, 0x89, + 0xAF, 0x9B, 0x52, 0x6F, 0x28, 0xEC, 0x8E, 0x13, 0xC4, 0xD4, 0x97, 0x74, + 0x2E, 0xDB, 0x6F, 0xA8, 0x41, 0xE3, 0xDC, 0x6A, 0xE4, 0xB8, 0x18, 0x2C, + 0x19, 0x59, 0xE1, 0x45, 0xC5, 0xED, 0x8F, 0xCA, 0x24, 0x2A, 0x3F, 0xAD, + 0xDA, 0x98, 0xC1, 0x70, 0x7F, 0xF3, 0x87, 0xE1, 0xB8, 0xBC, 0xF5, 0xFB, + 0x29, 0x7B, 0x12, 0x26, 0x22, 0x1A, 0x5B, 0x59, 0x21, 0x21, 0x79, 0x30, + 0xA7, 0x69, 0x13, 0xD9, 0x9E, 0x62, 0x02, 0x77, 0x84, 0xB9, 0x87, 0xD3, + 0xCB, 0x0E, 0xB0, 0x73, 0x58, 0x21, 0xFE, 0x18, 0x6A, 0x92, 0x94, 0x30, + 0xEC, 0x06, 0x11, 0xB9, 0xC8, 0x99, 0x6B, 0xE9, 0xFE, 0x44, 0x9D, 0x04, + 0xBA, 0xC9, 0x92, 0x7E, 0x46, 0x7B, 0x81, 0x4A, 0x70, 0x79, 0x56, 0x7F, + 0x39, 0x96, 0x58, 0xC6, 0x35, 0x8A, 0x8F, 0x98, 0x47, 0xF8, 0xD9, 0x16, + 0x81, 0xC1, 0x79, 0x43, 0x08, 0xF9, 0x4A, 0xC7, 0xBA, 0x31, 0xCA, 0xC3, + 0x0D, 0xEA, 0x71, 0x40, 0x42, 0x2E, 0x29, 0xF2, 0xB1, 0x96, 0xFB, 0xC0, + 0x98, 0x3B, 0x2F, 0xB2, 0x8D, 0x82, 0xBA, 0xB0, 0x8D, 0x3D, 0x78, 0x10, + 0xF2, 0x33, 0x55, 0xD2, 0x02, 0x98, 0x3A, 0xF3, 0x43, 0x8F, 0x8D, 0x27, + 0xD0, 0x1B, 0x50, 0x04, 0xB2, 0xA8, 0x42, 0x36, 0xE7, 0xD9, 0x2B, 0x4A, + 0x33, 0x9E, 0xBF, 0x46, 0x12, 0x17, 0x82, 0x89, 0xEA, 0xAA, 0x35, 0x7F, + 0x3C, 0x6B, 0xEC, 0xC2, 0x84, 0x33, 0xAB, 0x10, 0x25, 0x59, 0x0F, 0x2B, + 0x90, 0x3F, 0xF4, 0x2A, 0x97, 0x6F, 0xD5, 0x6C, 0xE3, 0x08, 0x07, 0xA9, + 0xFC, 0x84, 0x7B, 0x51, 0x2F, 0x23, 0x2A, 0x6E, 0xF1, 0x0F, 0xEF, 0x48, + 0x9F, 0x66, 0x8F, 0x5C, 0x9A, 0x21, 0x84, 0xD7, 0xB1, 0x14, 0x82, 0xA2, + 0xE4, 0xE6, 0x72, 0x56, 0x46, 0xCB, 0x26, 0x2F, 0xE2, 0x6D, 0x5B, 0x07, + 0xA6, 0xF3, 0x94, 0x24, 0x24, 0x58, 0x45, 0xF4, 0xB4, 0x54, 0x90, 0xFF, + 0x59, 0x17, 0x04, 0xC8, 0x9A, 0x4D, 0x82, 0xEF, 0x24, 0xBB, 0x2C, 0x11, + 0x9F, 0x2D, 0xD4, 0xE5, 0x0A, 0x2A, 0xF0, 0x94, 0x64, 0x48, 0xFF, 0xB4, + 0x7D, 0x01, 0x42, 0xBE, 0x8F, 0xB2, 0x2F, 0x2A, 0x0A, 0x17, 0xB0, 0xA2, + 0x0B, 0x5E, 0x32, 0x05, 0x2A, 0x0A, 0xE5, 0xF6, 0x3D, 0xA8, 0x12, 0xBD, + 0x5C, 0x4F, 0x59, 0x76, 0xAB, 0x9C, 0x89, 0x98, 0xFD, 0xCE, 0x0B, 0xA1, + 0x62, 0x4D, 0x3A, 0x16, 0xA5, 0x80, 0x62, 0x8B, 0x52, 0xD4, 0x2A, 0x8E, + 0xC0, 0x17, 0xE3, 0x42, 0xA6, 0x70, 0x40, 0x6B, 0xE8, 0xE7, 0xD7, 0xA7, + 0x43, 0x12, 0xF6, 0xB3, 0x7A, 0xE2, 0xFE, 0x42, 0xB0, 0xAF, 0x33, 0x56, + 0x10, 0xB1, 0x69, 0x3D, 0x7B, 0x7F, 0xDE, 0xC6, 0xE1, 0x0F, 0xCC, 0x5B, + 0xF9, 0x53, 0x08, 0x80, 0x05, 0x33, 0xD8, 0x09, 0x7B, 0x87, 0x71, 0xE0, + 0xF5, 0xCA, 0xB5, 0xFB, 0xB4, 0x3C, 0x4A, 0x6B, 0x10, 0xBA, 0xA6, 0xE6, + 0x69, 0xD6, 0x8E, 0x8C, 0x5B, 0x33, 0x07, 0xE8, 0x22, 0xB9, 0xF8, 0x3C, + 0xEF, 0xE0, 0xDA, 0x06, 0x54, 0xCB, 0x14, 0xDB, 0x2B, 0x50, 0x92, 0xB2, + 0x5C, 0xB8, 0xCB, 0xB6, 0x40, 0xB1, 0x91, 0xD4, 0xD7, 0xF9, 0xC2, 0x08, + 0x77, 0xC9, 0xB7, 0x00, 0x9B, 0x32, 0x20, 0xC4, 0x08, 0x39, 0xEE, 0xD6, + 0x32, 0xB8, 0x63, 0x0F, 0x1A, 0x73, 0x33, 0x73, 0xE1, 0xFB, 0x0E, 0x94, + 0x75, 0xCE, 0x37, 0xA4, 0xAF, 0xBC, 0x39, 0xAB, 0x25, 0x35, 0xA7, 0xDF, + 0xC2, 0x9B, 0xF5, 0xD7, 0x52, 0x44, 0xDE, 0x21, 0x50, 0x5F, 0x3E, 0xA6, + 0x37, 0x9E, 0x91, 0x56, 0x12, 0x82, 0xCB, 0xA0, 0xAE, 0x6F, 0xA8, 0x81, + 0x0C, 0x3B, 0xC0, 0x4C, 0xEE, 0x47, 0x57, 0x79, 0xC1, 0x49, 0x4B, 0x7A, + 0x92, 0xC7, 0x95, 0xA4, 0xD6, 0x3E, 0x25, 0xE5, 0xCF, 0x55, 0x65, 0x10, + 0x52, 0x58, 0xEA, 0x4F, 0xFC, 0x34, 0xB1, 0x0E, 0x0E, 0x2E, 0x45, 0x4C, + 0xD7, 0xB7, 0x92, 0xC4, 0x70, 0xE5, 0x33, 0xA1, 0x22, 0x49, 0x04, 0xF8, + 0xAF, 0x5E, 0x6D, 0x4B, 0xDE, 0x76, 0xCD, 0x50, 0x40, 0xFB, 0xFD, 0x7B, + 0xC3, 0xF2, 0xEA, 0x4B, 0xEA, 0xA7, 0x66, 0x44, 0x2B, 0x4D, 0x0C, 0xA3, + 0xC4, 0xAA, 0x9C, 0x50, 0x36, 0x5A, 0x4D, 0xB7, 0x04, 0x81, 0x5C, 0xBD, + 0x40, 0x62, 0x12, 0x6A, 0x4C, 0x13, 0x35, 0x4E, 0x47, 0x16, 0xD9, 0x43, + 0xE5, 0x8A, 0x44, 0x6D, 0x49, 0x71, 0x30, 0xA9, 0x4C, 0xDE, 0x31, 0x1E, + 0x2A, 0xE1, 0xDB, 0xBF, 0x1F, 0xB6, 0x7C, 0x36, 0xAA, 0x0F, 0x02, 0xBA, + 0x85, 0x87, 0xFC, 0x47, 0x90, 0x34, 0xD5, 0x13, 0x9E, 0x09, 0x2B, 0xC3, + 0xEC, 0x83, 0x80, 0x9D, 0xFE, 0x3D, 0x18, 0xBA, 0xFB, 0x51, 0x8D, 0x79, + 0xF6, 0xFA, 0x38, 0x48, 0x60, 0x14, 0xCC, 0x60, 0x81, 0x57, 0xEE, 0xA5, + 0x04, 0x1B, 0x4A, 0x0E, 0x43, 0x15, 0x00, 0x57, 0xE2, 0x0A, 0xBC, 0xF4, + 0x14, 0x3B, 0x96, 0x95, 0xF3, 0xFC, 0x4E, 0x13, 0x6F, 0x0D, 0x63, 0x85, + 0xD0, 0xB0, 0x3B, 0xCA, 0x0A, 0x80, 0x3D, 0x11, 0xD1, 0x7A, 0xCF, 0xB2, + 0x0B, 0xE1, 0x67, 0xDD, 0x45, 0x9B, 0xEC, 0x30, 0xD5, 0xE3, 0x06, 0xB3, + 0x94, 0xBB, 0xCB, 0x32, 0xBA, 0x17, 0xDF, 0x5F, 0x1F, 0x38, 0xAF, 0xC6, + 0xA9, 0xB5, 0x7F, 0xF6, 0x85, 0xC2, 0x99, 0x33, 0x0A, 0x3F, 0x7D, 0xB2, + 0x72, 0x7D, 0xF7, 0xF4, 0x1B, 0x11, 0xA1, 0x7D, 0xF7, 0x3D, 0x7F, 0x0F, + 0xFA, 0xB1, 0xEE, 0x6C, 0xAD, 0xA9, 0xE7, 0x43, 0x5D, 0xFE, 0xC9, 0x32, + 0xF6, 0xF1, 0x97, 0xE7, 0x87, 0x17, 0x85, 0xB9, 0xBC, 0xC1, 0xD5, 0x2F, + 0xC4, 0x5A, 0xBE, 0x03, 0xC3, 0x49, 0xAB, 0x9D, 0x40, 0xFA, 0xE1, 0xBD, + 0x1E, 0x44, 0xE8, 0x8A, 0x6E, 0x98, 0x99, 0x4C, 0xC6, 0x2B, 0xE0, 0x18, + 0x26, 0x83, 0xCA, 0x08, 0x0B, 0xDD, 0x69, 0xD1, 0x33, 0xD5, 0x8F, 0xAD, + 0xBD, 0x86, 0xFE, 0xC3, 0x0C, 0xC3, 0x99, 0x3D, 0x4B, 0xB0, 0x0C, 0x75, + 0x17, 0x89, 0x6E, 0x70, 0x0C, 0x23, 0xA9, 0x99, 0xD9, 0x59, 0x07, 0x7D, + 0x30, 0xFC, 0xC5, 0x98, 0xD0, 0xFF, 0x5D, 0x10, 0x99, 0xF4, 0xB7, 0xC5, + 0x56, 0xE8, 0xA7, 0x0D, 0x02, 0xB4, 0x04, 0xFB, 0x9E, 0x9C, 0x8B, 0x0C, + 0x03, 0x57, 0x48, 0x73, 0x51, 0x9A, 0x8E, 0xB6, 0xB9, 0x15, 0x57, 0xFD, + 0x52, 0x1E, 0x27, 0x87, 0x68, 0xCF, 0x1C, 0x2B, 0x18, 0x2D, 0xDA, 0x00, + 0x2F, 0x71, 0xB8, 0x66, 0x35, 0x3F, 0x50, 0xC0, 0xBC, 0xF6, 0xF1, 0x0E, + 0xD0, 0xAC, 0x1C, 0xFC, 0xAD, 0x7C, 0xD9, 0x36, 0x3F, 0x20, 0xC1, 0x96, + 0x83, 0xB1, 0x14, 0xAB, 0xC7, 0xD5, 0x0A, 0xF4, 0x41, 0x65, 0x7D, 0x4C, + 0x8D, 0x03, 0xB0, 0x4C, 0x3E, 0x16, 0x6B, 0xB7, 0xF7, 0x16, 0x6B, 0x2A, + 0x82, 0x27, 0x5A, 0x1A, 0x60, 0xFF, 0x21, 0x47, 0x0E, 0xF9, 0x66, 0x78, + 0x3D, 0x27, 0xE7, 0x22, 0x93, 0x3C, 0x39, 0x9D, 0xA1, 0xC1, 0x89, 0x6D, + 0x16, 0xCF, 0x12, 0x43, 0x24, 0x9A, 0x40, 0x7A, 0x5A, 0xBA, 0xA5, 0xD2, + 0x1A, 0x9E, 0x71, 0x1F, 0x22, 0x33, 0x22, 0xA5, 0xEA, 0xA0, 0xF9, 0x88, + 0x55, 0x05, 0x8D, 0xD9, 0x0A, 0x45, 0x21, 0x9F, 0xA2, 0xD7, 0x0B, 0xE1, + 0xC1, 0x3E, 0xDF, 0x89, 0xDE, 0x24, 0xF9, 0x3F, 0x9B, 0x1E, 0xA6, 0xB9, + 0x94, 0x67, 0x4D, 0xFB, 0x9E, 0x27, 0xA4, 0x6F, 0xF5, 0xCE, 0xEB, 0x97, + 0xDA, 0xB4, 0x8A, 0xFB, 0xF2, 0xAD, 0xD2, 0x2C, 0x0A, 0x76, 0xF2, 0xA7, + 0x13, 0x0B, 0x47, 0xE2, 0xF7, 0xDA, 0x56, 0xDF, 0x83, 0x86, 0x59, 0xE5, + 0x22, 0x58, 0x2F, 0x9E, 0x9F, 0x51, 0xDF, 0xA5, 0x35, 0xB1, 0xC1, 0xC6, + 0xCE, 0xAF, 0x2C, 0xF7, 0x5F, 0xE1, 0x39, 0x6A, 0x87, 0x67, 0xB6, 0x86, + 0xC7, 0x24, 0x93, 0xEA, 0x78, 0x80, 0xDD, 0x66, 0x96, 0x40, 0x4E, 0xD7, + 0x72, 0x14, 0x8F, 0x8E, 0x2B, 0x62, 0x72, 0x07, 0x2F, 0x14, 0x9B, 0x3D, + 0x7A, 0xB4, 0x90, 0x10, 0xF2, 0xDC, 0x1A, 0x0F, 0x68, 0xAC, 0x00, 0x21, + 0xA0, 0xF7, 0xE3, 0x31, 0x6F, 0xC8, 0x62, 0xDD, 0x16, 0x13, 0xDB, 0x5A, + 0x28, 0x56, 0xE5, 0x2A, 0x1D, 0x74, 0x7E, 0x9E, 0x33, 0xC2, 0xE2, 0x96, + 0x2C, 0x88, 0xF5, 0xA4, 0x46, 0x43, 0xE5, 0x90, 0x67, 0xE2, 0xC9, 0xF4, + 0xB9, 0xC6, 0x44, 0xAB, 0xA2, 0x90, 0x22, 0xD2, 0x7D, 0xF7, 0x23, 0x5F, + 0xF7, 0x98, 0x09, 0x2A, 0xB1, 0xF5, 0xDC, 0x63, 0x50, 0x68, 0xB5, 0x07, + 0x22, 0x82, 0x59, 0x44, 0x34, 0x7B, 0x8C, 0x0A, 0x15, 0x16, 0x45, 0x9F, + 0xAE, 0x25, 0x10, 0x94, 0xB7, 0xC5, 0x4A, 0xDC, 0x42, 0x1C, 0x8A, 0xBC, + 0x79, 0xD3, 0xB3, 0xA7, 0x57, 0x70, 0x52, 0xAB, 0x0A, 0x17, 0x3B, 0x8B, + 0xAE, 0x4B, 0x6D, 0x7C, 0x4D, 0x94, 0x30, 0x12, 0xAC, 0x9F, 0xF0, 0x2C, + 0xB7, 0x84, 0x4F, 0xAF, 0x54, 0x9E, 0x2A, 0x0B, 0x76, 0x65, 0xEB, 0x4C, + 0x09, 0x26, 0x51, 0xAC, 0x85, 0xC2, 0xD3, 0x27, 0xE8, 0x90, 0xB1, 0xBD, + 0x70, 0x00, 0xBB, 0xBE, 0x32, 0x8A, 0x06, 0x90, 0xB6, 0x7A, 0x28, 0x8C, + 0x18, 0xE0, 0xA7, 0x0A, 0x93, 0x4E, 0x3B, 0x91, 0x63, 0xB8, 0xF8, 0xCD, + 0x8D, 0xFD, 0x9C, 0x80, 0x22, 0x11, 0x60, 0x16, 0x47, 0xAE, 0x63, 0xD2, + 0xEA, 0x1E, 0xF6, 0x09, 0x1E, 0x8A, 0x9B, 0xB5, 0x77, 0xE4, 0x66, 0x2D, + 0x04, 0x89, 0xD8, 0xB6, 0xAB, 0x68, 0x70, 0x67, 0x4D, 0x15, 0x70, 0x6F, + 0x1C, 0xB0, 0xC0, 0x23, 0x27, 0xDB, 0xCA, 0x5A, 0x10, 0x34, 0x5A, 0x6C, + 0x2F, 0x89, 0x27, 0x45, 0x8D, 0xF4, 0xCD, 0x38, 0x28, 0x9B, 0x5C, 0x66, + 0xD4, 0x8F, 0x23, 0x08, 0xF9, 0x8F, 0x60, 0x58, 0x56, 0x92, 0xBB, 0xC2, + 0x8F, 0x6E, 0xC8, 0x15, 0x92, 0x92, 0x33, 0xAD, 0xB4, 0x50, 0x7C, 0x31, + 0x3D, 0x77, 0x9D, 0xCF, 0x01, 0x9E, 0x08, 0xA1, 0x63, 0xEE, 0x3B, 0xDD, + 0x79, 0x67, 0x61, 0xF0, 0xB3, 0x90, 0x00, 0x5F, 0x70, 0x58, 0x85, 0x97, + 0xED, 0x1F, 0x5C, 0x67, 0x96, 0x45, 0x31, 0xC5, 0xCF, 0xDC, 0x00, 0x48, + 0x34, 0xDF, 0x0B, 0x5B, 0xFB, 0xC0, 0xB3, 0x3F, 0x72, 0xFF, 0x0D, 0x05, + 0x4E, 0x4D, 0x42, 0x6F, 0x65, 0x75, 0x1B, 0xB5, 0xCA, 0xB5, 0xA6, 0x67, + 0x18, 0x77, 0x51, 0x21, 0x4D, 0x0B, 0xC3, 0x6B, 0xB7, 0x70, 0x78, 0x81, + 0xCC, 0xB1, 0xD8, 0xCD, 0xFA, 0xA4, 0x40, 0x80, 0xEF, 0x90, 0xE6, 0x64, + 0x4C, 0x7E, 0xC7, 0x5F, 0x90, 0xF1, 0xA0, 0x66, 0x7C, 0x06, 0x4F, 0xF9, + 0xD3, 0x96, 0x31, 0x96, 0x4B, 0x91, 0x8B, 0x94, 0x45, 0x59, 0xCB, 0xE1, + 0x5F, 0x45, 0xBD, 0xDD, 0x29, 0xED, 0x2D, 0xFE, 0xDD, 0x58, 0xBC, 0xED, + 0x4A, 0x8B, 0xEE, 0xF5, 0xEA, 0x9B, 0xDC, 0xCE, 0x55, 0xB6, 0x9A, 0x3E, + 0xE0, 0xD0, 0xE0, 0x1E, 0xDE, 0xB4, 0x33, 0xF1, 0xA5, 0x1B, 0x07, 0x2B, + 0x5F, 0xA2, 0x59, 0x28, 0xD7, 0xC3, 0x3B, 0x52, 0xBF, 0x4C, 0x2E, 0xD7, + 0x88, 0x22, 0x77, 0xD9, 0x51, 0x27, 0x08, 0xA4, 0xC7, 0xF3, 0x5B, 0xF2, + 0x7B, 0x6D, 0x34, 0x6E, 0x81, 0x53, 0xB2, 0xB8, 0x0F, 0xDE, 0x51, 0x75, + 0x20, 0x36, 0x1E, 0x86, 0xB5, 0x1D, 0xCF, 0xCA, 0x5D, 0xEF, 0x00, 0x3E, + 0x68, 0xD6, 0x8C, 0x09, 0xE6, 0x12, 0x2D, 0x97, 0x24, 0xFD, 0x6A, 0xB1, + 0xD5, 0x13, 0x18, 0x1A, 0xBF, 0x8D, 0xE5, 0x38, 0x7E, 0x57, 0x47, 0x09, + 0xEC, 0xA9, 0xDF, 0x97, 0xDA, 0x8C, 0x91, 0x2F, 0x29, 0x2D, 0xAC, 0x8B, + 0xCA, 0xC7, 0x03, 0xD8, 0x68, 0xF9, 0x77, 0x2E, 0x9F, 0x5F, 0xCE, 0xD8, + 0xA4, 0x39, 0x0E, 0x64, 0xB8, 0xD8, 0x21, 0x7D, 0xCE, 0x68, 0xA5, 0xD5, + 0x38, 0x79, 0x9F, 0x90, 0x49, 0x33, 0x72, 0x05, 0x72, 0x4C, 0x76, 0x83, + 0x35, 0xFC, 0x1A, 0xE2, 0xF4, 0x60, 0xC8, 0xA8, 0x54, 0xC3, 0xC1, 0x4D, + 0x17, 0xFD, 0xAE, 0xA9, 0xA9, 0x20, 0xFE, 0xF9, 0x25, 0x4A, 0xE3, 0x22, + 0xDC, 0x7D, 0xE0, 0xFC, 0x47, 0xF7, 0xA6, 0xF3, 0x3F, 0xCE, 0xC8, 0x2E, + 0x8B, 0xCE, 0xFA, 0x46, 0x8D, 0x38, 0x4B, 0x3C, 0xB6, 0x23, 0xA9, 0x2E, + 0x53, 0xD9, 0xC3, 0x60, 0x60, 0xFF, 0x10, 0xC7, 0x38, 0x54, 0x5C, 0xBD, + 0x3E, 0xB1, 0x52, 0x2C, 0x30, 0xB3, 0x6D, 0x14, 0x5B, 0x4D, 0xAD, 0x68, + 0x9E, 0xD6, 0x0A, 0x91, 0xFD, 0x40, 0x69, 0xE1, 0xB3, 0x76, 0x21, 0x9D, + 0x5D, 0x97, 0x9F, 0x01, 0x11, 0x55, 0x9A, 0x82, 0x57, 0x1D, 0xD6, 0x55, + 0xE7, 0x20, 0x5E, 0x12, 0x0A, 0xD9, 0xA8, 0x26, 0xB9, 0x1B, 0x0A, 0xE5, + 0xB0, 0x25, 0x79, 0xB2, 0x94, 0x9F, 0x43, 0xA6, 0xBA, 0x29, 0x7E, 0x61, + 0x4C, 0x48, 0xEA, 0xBE, 0xC1, 0x5D, 0xE8, 0xF0, 0xEB, 0x4B, 0xE1, 0xF5, + 0x4B, 0x2D, 0xD3, 0xAA, 0x1C, 0x51, 0x00, 0x15, 0x16, 0x64, 0xFC, 0xC3, + 0x2B, 0xF0, 0x91, 0xBC, 0xF9, 0xDB, 0xE9, 0x88, 0x70, 0xD3, 0x56, 0x47, + 0xA3, 0x65, 0xA3, 0x34, 0x74, 0xD8, 0x97, 0x14, 0x7B, 0xA5, 0x1E, 0x12, + 0xD7, 0xA6, 0x88, 0x00, 0x91, 0x49, 0xFE, 0xD8, 0xF1, 0x0F, 0x59, 0xE3, + 0xED, 0x5D, 0x8E, 0x39, 0x0D, 0x10, 0xB5, 0x42, 0x31, 0x31, 0x6A, 0x7A, + 0x56, 0xD0, 0x25, 0xB6, 0x47, 0x7D, 0xBB, 0xCE, 0x47, 0x0A, 0xA7, 0xFF, + 0xB9, 0xCB, 0xED, 0x79, 0xFF, 0xFE, 0x16, 0x0C, 0x5F, 0xC4, 0xAF, 0x31, + 0x2C, 0xAB, 0x23, 0xA9, 0xBB, 0x2E, 0x9B, 0x09, 0xFA, 0x52, 0xC6, 0x80, + 0xF8, 0xB7, 0x3A, 0xFD, 0xD2, 0xAC, 0xBF, 0x87, 0x77, 0x3B, 0x71, 0x25, + 0xCA, 0xDB, 0xC7, 0xE9, 0x90, 0xCC, 0x98, 0x42, 0x36, 0xCE, 0xF5, 0x9F, + 0x3D, 0x52, 0xDD, 0xE8, 0xB3, 0xFB, 0x46, 0x94, 0xAE, 0x17, 0xC8, 0xA4, + 0x84, 0xF7, 0xA7, 0xD3, 0xBD, 0x31, 0xCE, 0x90, 0xAF, 0xE7, 0x88, 0x59, + 0x06, 0x68, 0x7F, 0x05, 0xEB, 0x93, 0xDC, 0x17, 0x41, 0x1C, 0xE0, 0x8B, + 0x08, 0x98, 0xCE, 0x45, 0xF2, 0xE5, 0x8C, 0xF7, 0xBA, 0xBB, 0x2B, 0x0D, + 0x2D, 0x78, 0xC7, 0x37, 0xB2, 0xDD, 0xE9, 0x86, 0x75, 0x96, 0xB7, 0xB6, + 0x90, 0x14, 0x0E, 0xB8, 0x65, 0x74, 0xC9, 0x4A, 0xA7, 0x7B, 0x39, 0x88, + 0x61, 0x02, 0x24, 0x55, 0x21, 0x14, 0x9B, 0x29, 0xC3, 0xB1, 0x37, 0xE3, + 0x48, 0xCE, 0xAE, 0x42, 0x07, 0x2C, 0x08, 0xC8, 0x6E, 0xCE, 0x6F, 0xF6, + 0x40, 0x40, 0xBD, 0xC2, 0xC9, 0x76, 0x7B, 0x11, 0xF7, 0x81, 0xD9, 0xE7, + 0x6D, 0x4B, 0x1B, 0xDB, 0x9E, 0x13, 0x30, 0xDB, 0x55, 0xBB, 0x84, 0xE7, + 0x0F, 0xBA, 0x13, 0x72, 0x04, 0xBE, 0x94, 0x13, 0xB4, 0xA8, 0xF4, 0x23, + 0x89, 0x20, 0x1D, 0x5A, 0xC2, 0x23, 0xCF, 0x41, 0x38, 0xCD, 0xFF, 0x93, + 0x76, 0x7D, 0xF6, 0x95, 0x5A, 0x3C, 0x27, 0x27, 0xEC, 0x79, 0xA8, 0xF7, + 0x41, 0x5C, 0xA4, 0xD7, 0x37, 0x09, 0x6E, 0xBD, 0x1D, 0x2C, 0x59, 0xFE, + 0xD7, 0x6B, 0x73, 0xC1, 0x1F, 0x97, 0x5F, 0x9F, 0x1E, 0xDE, 0x23, 0x9D, + 0xFF, 0xE2, 0x83, 0x52, 0x9E, 0xB0, 0x80, 0x2D, 0x2E, 0xE4, 0x99, 0xB1, + 0x02, 0x28, 0x69, 0xEB, 0x0B, 0x5E, 0xD0, 0xEA, 0xB4, 0x77, 0x96, 0xBD, + 0x79, 0xE9, 0xCB, 0x1B, 0xBD, 0x4D, 0x39, 0x83, 0x4E, 0x2D, 0x62, 0x94, + 0xB2, 0x29, 0xFC, 0x9E, 0xC3, 0x18, 0x60, 0x8C, 0xE0, 0x60, 0x40, 0x10, + 0x97, 0x16, 0xAB, 0x3A, 0x85, 0x2D, 0xD5, 0x80, 0x0C, 0xDA, 0xB7, 0x41, + 0xE4, 0x6A, 0x07, 0x75, 0xC5, 0x43, 0x49, 0x6B, 0xBB, 0xA6, 0x12, 0x84, + 0xBF, 0xDD, 0x4D, 0x76, 0xC8, 0x0F, 0xEC, 0xC1, 0x1B, 0xFE, 0x24, 0x67, + 0x37, 0x08, 0x42, 0xA5, 0x61, 0x60, 0xC9, 0x2B, 0x32, 0x25, 0x88, 0xB4, + 0x99, 0x68, 0x40, 0xAD, 0x68, 0x49, 0xD5, 0x61, 0xF9, 0xBA, 0x5A, 0xDD, + 0xB1, 0x47, 0xB1, 0xA9, 0x61, 0x38, 0x87, 0xC4, 0x86, 0x88, 0x0B, 0x7B, + 0xA8, 0xCD, 0xB0, 0x35, 0x62, 0xA2, 0xDA, 0x7A, 0x3C, 0x85, 0x00, 0x66, + 0x79, 0x74, 0xFF, 0x79, 0x6F, 0x6C, 0x4B, 0x21, 0x65, 0x7E, 0x2F, 0xFF, + 0x8A, 0xD8, 0xE8, 0x69, 0x3D, 0x3D, 0xF5, 0xB8, 0xEF, 0x8B, 0x6D, 0xE8, + 0x6F, 0x69, 0x2F, 0x8B, 0x49, 0xD8, 0x10, 0xF5, 0x42, 0xB9, 0xA6, 0x2A, + 0xC8, 0xB2, 0xE7, 0x6A, 0x20, 0x84, 0x89, 0x07, 0xA0, 0xFF, 0xC8, 0x0D, + 0x8D, 0xEE, 0xB6, 0xED, 0x7B, 0x03, 0x46, 0x36, 0xC7, 0x69, 0x8A, 0x18, + 0x88, 0x5C, 0xBB, 0xA9, 0xC0, 0x40, 0x49, 0x16, 0xB4, 0x85, 0x50, 0x88, + 0x3D, 0x50, 0x7C, 0x50, 0x3B, 0x12, 0x19, 0xEB, 0x9E, 0x1F, 0x44, 0x11, + 0x8B, 0x1C, 0xF0, 0xCF, 0xE1, 0x76, 0xA4, 0xAB, 0x4F, 0x2E, 0x46, 0x43, + 0xA4, 0xB2, 0x6E, 0x79, 0x4A, 0x89, 0x19, 0x70, 0xD8, 0xBE, 0xF5, 0x8D, + 0xAA, 0x5B, 0x23, 0xB8, 0xBA, 0xFB, 0xE6, 0xA7, 0xF1, 0xE8, 0xA3, 0xF8, + 0xE7, 0x2D, 0x7F, 0x3B, 0x7D, 0x89, 0x48, 0x99, 0xAC, 0x5A, 0xC0, 0x5B, + 0xCD, 0xE3, 0xC1, 0x65, 0x52, 0xB0, 0xA5, 0xFC, 0x5C, 0xA2, 0xEB, 0xFB, + 0x61, 0x04, 0xE2, 0xC9, 0xD6, 0x24, 0x27, 0x12, 0x2F, 0x3A, 0x9E, 0xE6, + 0x97, 0x87, 0x19, 0x4F, 0xBB, 0x09, 0x80, 0x4A, 0xAD, 0x9B, 0x18, 0x8E, + 0x43, 0x91, 0xAF, 0x2C, 0x54, 0xE8, 0xDB, 0xB8, 0x0C, 0x11, 0xC7, 0x29, + 0xE7, 0x76, 0xCF, 0xAA, 0xCC, 0x83, 0x77, 0x4E, 0xE6, 0x4D, 0x78, 0xFD, + 0x1C, 0x14, 0xCA, 0x1F, 0x0F, 0xA3, 0x70, 0xDB, 0x33, 0x44, 0xF2, 0x34, + 0x3F, 0xDB, 0x5E, 0x1F, 0x9B, 0x25, 0x47, 0x44, 0x5F, 0x04, 0xCD, 0xBA, + 0x79, 0x2A, 0x21, 0xD0, 0x8B, 0x71, 0xF8, 0x9F, 0x16, 0x6D, 0xEE, 0x1A, + 0xE9, 0x6C, 0x52, 0xDB, 0x8D, 0x17, 0x28, 0xAD, 0xFD, 0xEF, 0x7B, 0xAC, + 0x53, 0x6B, 0xED, 0x11, 0x04, 0x83, 0xFD, 0x96, 0x2E, 0xB2, 0x31, 0xC6, + 0x0C, 0x13, 0x4C, 0x20, 0x58, 0x19, 0xDE, 0x2F, 0x8C, 0xF1, 0x63, 0x48, + 0x8C, 0x3A, 0xE9, 0xF8, 0x81, 0x75, 0x0D, 0x10, 0x1E, 0x74, 0xA5, 0x7E, + 0xF7, 0xC3, 0x11, 0xFB, 0x20, 0xF0, 0xF9, 0x72, 0x7B, 0x8B, 0xF4, 0x3C, + 0xCC, 0x54, 0x5F, 0xA6, 0xEF, 0xA8, 0x03, 0xB3, 0x7E, 0x72, 0xEB, 0xA0, + 0x93, 0x67, 0xAC, 0x38, 0x9F, 0xD6, 0xEF, 0x16, 0x1D, 0x33, 0x4B, 0xC5, + 0x80, 0x60, 0x70, 0xF1, 0xF8, 0x10, 0x91, 0x2D, 0xA7, 0x04, 0xDD, 0x0A, + 0xEB, 0xEC, 0x2F, 0xA3, 0xB9, 0x4B, 0x79, 0x96, 0x3C, 0xA4, 0xE8, 0x47, + 0xA5, 0xDA, 0xE2, 0x65, 0x94, 0xEA, 0xAA, 0x32, 0x78, 0xBD, 0x6F, 0xA2, + 0x78, 0x7D, 0x15, 0x7D, 0xC3, 0xE8, 0x28, 0x91, 0xE4, 0x3C, 0x91, 0x3C, + 0xC1, 0x42, 0xEA, 0x0A, 0x51, 0x3E, 0x40, 0x4B, 0xAF, 0xB5, 0xBF, 0x56, + 0x42, 0xDE, 0x98, 0xE5, 0xC5, 0xB7, 0xF5, 0x14, 0x22, 0xDB, 0xA6, 0xA4, + 0x7E, 0x88, 0xEA, 0xD1, 0x2F, 0x57, 0xD0, 0x3D, 0x17, 0x41, 0x7D, 0xD8, + 0x4C, 0x3D, 0x49, 0xC4, 0xF3, 0x0D, 0xC4, 0x80, 0xBE, 0x6C, 0x1A, 0x26, + 0xEB, 0xBF, 0xF6, 0x95, 0xE7, 0x9A, 0x44, 0x41, 0x90, 0x1F, 0xD1, 0x70, + 0x7B, 0x65, 0xA1, 0x0F, 0xA3, 0xAA, 0xB5, 0xF1, 0xC0, 0x3D, 0x31, 0x92, + 0xA7, 0x2F, 0xB4, 0x72, 0xAB, 0x7A, 0x61, 0xB5, 0x37, 0xBF, 0xC2, 0xE5, + 0x41, 0xBA, 0x75, 0x5D, 0xB3, 0x59, 0xFA, 0x96, 0x04, 0x59, 0x2B, 0x96, + 0x10, 0x79, 0x66, 0x76, 0xF7, 0x71, 0xCB, 0x37, 0xF7, 0x60, 0x19, 0x59, + 0x21, 0x5F, 0xEE, 0x8B, 0x2D, 0x91, 0x3D, 0xEB, 0x57, 0x65, 0xB4, 0x09, + 0x09, 0x38, 0xEB, 0x70, 0x96, 0x43, 0x87, 0x80, 0x07, 0x9F, 0x0B, 0x09, + 0x03, 0xF8, 0x5F, 0xF4, 0x5A, 0x53, 0x60, 0x86, 0x48, 0x8A, 0xB3, 0xB6, + 0x34, 0xE0, 0xFC, 0xE5, 0x95, 0x12, 0xE7, 0x7C, 0xE9, 0x14, 0x56, 0x2D, + 0x8D, 0x9C, 0xA8, 0x6F, 0x2F, 0x65, 0x29, 0xBC, 0xC2, 0xEB, 0xA8, 0xD2, + 0xA9, 0xD3, 0x3E, 0x7E, 0xED, 0x28, 0x9C, 0xFD, 0x15, 0x5D, 0x64, 0x21, + 0x30, 0xAB, 0xD3, 0x0C, 0x0D, 0x63, 0x5B, 0xC5, 0xBE, 0x03, 0xB1, 0x03, + 0x7E, 0x7E, 0xE5, 0xCC, 0x0C, 0x1C, 0xB8, 0x74, 0x57, 0x58, 0x0E, 0xA1, + 0xBE, 0xA7, 0x90, 0x3B, 0x9B, 0x98, 0xB2, 0xC0, 0xF3, 0x97, 0x41, 0xBD, + 0x1F, 0xD7, 0x31, 0x42, 0xB6, 0xFF, 0x6D, 0x4B, 0xEC, 0x4D, 0x98, 0x15, + 0x71, 0x46, 0x4C, 0x14, 0x7B, 0x59, 0xE2, 0x88, 0xE4, 0x4E, 0xF2, 0x74, + 0x6F, 0x64, 0x4A, 0xEE, 0x46, 0x46, 0x4F, 0xC6, 0xF5, 0x3C, 0x12, 0xC8, + 0xBE, 0x8C, 0x55, 0x19, 0xC5, 0xC0, 0x9F, 0x31, 0xC4, 0xDA, 0xCB, 0x3C, + 0xF3, 0xC6, 0x42, 0xBC, 0x3B, 0x96, 0x62, 0xB9, 0x77, 0x54, 0x41, 0xE6, + 0x74, 0x82, 0xBA, 0xCB, 0x32, 0x7A, 0x8D, 0x05, 0xBF, 0x3C, 0x4A, 0x97, + 0x2A, 0xF7, 0xEC, 0xCF, 0xA0, 0x3E, 0x5A, 0xDC, 0x41, 0x23, 0xB0, 0xB8, + 0x56, 0x55, 0xD8, 0xC2, 0xA7, 0x3F, 0x32, 0x37, 0xD3, 0x6F, 0x01, 0xA2, + 0x0E, 0x26, 0xD7, 0xB5, 0xA0, 0xA5, 0x34, 0x22, 0x47, 0xFD, 0xD1, 0x52, + 0xF3, 0xE1, 0xE0, 0xAB, 0xF9, 0xD0, 0x8E, 0x7C, 0x42, 0x1D, 0x11, 0xEA, + 0xA4, 0xCE, 0x38, 0x68, 0xDE, 0xBC, 0xBA, 0x6A, 0x50, 0x91, 0x54, 0x86, + 0x0E, 0x98, 0xAA, 0x2C, 0x57, 0x5C, 0x2A, 0x70, 0x57, 0x58, 0x6A, 0xD1, + 0x9C, 0xB9, 0xEB, 0x5E, 0xD2, 0x35, 0xD9, 0xC5, 0x2A, 0x6B, 0x0C, 0x60, + 0x39, 0xE4, 0x4C, 0xCD, 0xF0, 0xFB, 0xF7, 0x52, 0x86, 0x48, 0xCF, 0x27, + 0xB4, 0x9A, 0xC7, 0x20, 0xB2, 0xDD, 0x5E, 0x7D, 0x4F, 0x2B, 0xC5, 0x96, + 0xC5, 0xAE, 0x65, 0x26, 0xD9, 0x18, 0xC6, 0xBE, 0x59, 0xFF, 0x85, 0x51, + 0x6D, 0xE6, 0x4E, 0xED, 0x25, 0x7D, 0x8D, 0x86, 0xDD, 0xB9, 0x06, 0x7A, + 0x76, 0x66, 0x68, 0x42, 0x13, 0x6F, 0xC8, 0x7D, 0xF8, 0x9E, 0x9B, 0x51, + 0xFD, 0xEE, 0x2F, 0xF5, 0x19, 0x5E, 0x14, 0x4E, 0xFB, 0x69, 0x68, 0xE6, + 0x9D, 0xB7, 0xD5, 0x31, 0xBB, 0xB4, 0x96, 0x4F, 0x25, 0x86, 0x25, 0xDA, + 0x98, 0xC7, 0x3A, 0xD6, 0x10, 0xD0, 0xD4, 0x52, 0x5C, 0x5E, 0x4E, 0xFD, + 0xE5, 0x04, 0x6E, 0x37, 0xDE, 0x84, 0x55, 0x6A, 0xB4, 0xAA, 0xC3, 0x50, + 0xCB, 0x36, 0x3D, 0x0F, 0x68, 0x26, 0x2D, 0xA0, 0xBB, 0xC3, 0x58, 0x85, + 0x37, 0xC3, 0xD5, 0xC2, 0x13, 0x17, 0x15, 0x59, 0x77, 0x4D, 0xEE, 0x44, + 0xC2, 0x1E, 0x37, 0x10, 0x44, 0xC3, 0xCD, 0xB5, 0x9C, 0xD7, 0xE2, 0x82, + 0xA9, 0x77, 0x83, 0x83, 0xCC, 0xB8, 0xC1, 0xB0, 0xD5, 0x2D, 0xE2, 0xC2, + 0x0D, 0x1A, 0x40, 0xCE, 0xBF, 0x57, 0x33, 0x19, 0xFF, 0xB7, 0x9C, 0xC2, + 0xAF, 0x3B, 0x7A, 0x51, 0x16, 0x0B, 0x6C, 0xB1, 0x89, 0x49, 0x7D, 0x11, + 0x78, 0x79, 0x99, 0xAF, 0x68, 0xB9, 0xB7, 0xA8, 0xC2, 0x8C, 0xD4, 0x54, + 0x2A, 0xCB, 0xC1, 0xFA, 0xBA, 0x23, 0x18, 0x44, 0xFB, 0xF4, 0x0D, 0xA9, + 0xBD, 0x93, 0x33, 0x55, 0x85, 0xC6, 0xD9, 0xE9, 0xCA, 0x48, 0x4C, 0xBF, + 0xA8, 0xA2, 0x19, 0x9C, 0x38, 0xFD, 0x3E, 0xA6, 0x83, 0x9A, 0xFC, 0x94, + 0xF7, 0xF7, 0xCC, 0xD5, 0x61, 0xED, 0x3C, 0x02, 0x8B, 0xF4, 0x4E, 0xAF, + 0x8A, 0x34, 0xEA, 0x30, 0x4F, 0x65, 0x1A, 0x79, 0x8B, 0x64, 0xAB, 0x9D, + 0x3C, 0x90, 0x6B, 0x1D, 0x17, 0x9A, 0x05, 0x9D, 0x11, 0xF6, 0xC1, 0x45, + 0x86, 0x87, 0xC0, 0x79, 0xAB, 0x5D, 0x9B, 0x1F, 0xAA, 0x80, 0x7F, 0x7C, + 0x4C, 0xAD, 0x26, 0x47, 0x9B, 0xB8, 0x59, 0x79, 0x18, 0x61, 0xC7, 0x29, + 0x28, 0xCA, 0xB5, 0xC4, 0x5E, 0x18, 0xA4, 0x02, 0x91, 0x9C, 0xBB, 0x63, + 0xBB, 0xBA, 0xCE, 0xBC, 0xC4, 0xB8, 0x65, 0xDA, 0xC4, 0x33, 0xB2, 0x44, + 0xDC, 0x26, 0xB9, 0x91, 0x34, 0xA4, 0x69, 0x03, 0x4B, 0x55, 0x12, 0xAB, + 0x5E, 0x20, 0x49, 0xFB, 0x3F, 0xA4, 0x68, 0x23, 0x0F, 0xDF, 0xB6, 0xA1, + 0x56, 0x98, 0xDD, 0x8B, 0xE7, 0x33, 0xFD, 0x5C, 0x80, 0x69, 0x6E, 0x2E, + 0x81, 0xD4, 0x4A, 0x8F, 0x1A, 0xD2, 0x88, 0x8C, 0x1A, 0xB7, 0x41, 0xB4, + 0x93, 0x82, 0x4B, 0xC9, 0xED, 0xF0, 0xC7, 0x2F, 0x4B, 0xA4, 0xB3, 0xD5, + 0x70, 0x47, 0x3A, 0x6F, 0xBD, 0x45, 0x85, 0x4D, 0x91, 0xDA, 0x28, 0x83, + 0x6C, 0xDF, 0x24, 0xD5, 0xFC, 0x4A, 0xE2, 0xFD, 0xD5, 0xC2, 0x5F, 0xC3, + 0x69, 0xF4, 0x2A, 0x19, 0xD2, 0x2B, 0x13, 0xC3, 0x57, 0x0D, 0x29, 0xD6, + 0x6D, 0xB1, 0x1B, 0xA8, 0x38, 0x72, 0xBC, 0x09, 0x4E, 0x6B, 0x22, 0xF0, + 0x89, 0x6C, 0x19, 0x7A, 0x61, 0x0C, 0xC8, 0xE5, 0xCD, 0x7A, 0xA8, 0x44, + 0x15, 0xCF, 0x9A, 0x43, 0xA7, 0xF4, 0x75, 0x0B, 0xD1, 0x60, 0x57, 0xF6, + 0xF9, 0xE5, 0x18, 0xE8, 0x80, 0xCE, 0x07, 0x17, 0x17, 0x25, 0x1E, 0xA1, + 0x15, 0x8C, 0x77, 0x14, 0x4F, 0x4C, 0xA0, 0x22, 0x85, 0x13, 0x5F, 0x54, + 0x28, 0x98, 0x23, 0x5A, 0x95, 0xC1, 0xFB, 0x1F, 0x69, 0x4D, 0xD3, 0x4C, + 0x48, 0xAC, 0xD1, 0xF1, 0xC6, 0x24, 0xFE, 0x02, 0x15, 0xFE, 0x00, 0x22, + 0x14, 0x4A, 0x67, 0x5E, 0xD3, 0xE4, 0x36, 0x6B, 0x04, 0xCA, 0x98, 0xDA, + 0x97, 0x9E, 0x52, 0x9E, 0xE5, 0x94, 0xAA, 0x87, 0xEE, 0xCB, 0x08, 0xC8, + 0xA7, 0x24, 0x46, 0xF2, 0x23, 0x62, 0xD1, 0x9C, 0xA7, 0x7F, 0xCC, 0x93, + 0xC1, 0x58, 0xFF, 0xA8, 0x17, 0xAF, 0x56, 0x28, 0x1D, 0x9F, 0xFB, 0x28, + 0x95, 0xBE, 0x48, 0x30, 0xBB, 0xD4, 0x0B, 0x3F, 0xF3, 0x53, 0x34, 0xFC, + 0x50, 0x5F, 0x90, 0x89, 0x28, 0xFE, 0x4C, 0x7E, 0x08, 0xF9, 0x0C, 0x53, + 0xD8, 0x16, 0xF7, 0x44, 0x88, 0x17, 0xFD, 0xFD, 0x21, 0x0D, 0x52, 0xBF, + 0xD8, 0x74, 0xD8, 0xCF, 0x7E, 0xB8, 0x70, 0x8B, 0xA9, 0xBB, 0x5A, 0xC9, + 0x75, 0xF2, 0xC0, 0xD3, 0xC5, 0xE0, 0x61, 0x7B, 0xEF, 0xA5, 0x51, 0x70, + 0x37, 0xA1, 0xB8, 0x09, 0xAC, 0xF0, 0xF7, 0x43, 0xD5, 0xE8, 0xB5, 0x7C, + 0xE5, 0xE7, 0x97, 0xC8, 0x20, 0x88, 0x53, 0xA3, 0x8F, 0x2F, 0x6B, 0xB4, + 0xD2, 0xF9, 0x88, 0xDE, 0x15, 0xE3, 0x88, 0xA6, 0x94, 0xC3, 0x51, 0xCE, + 0xFF, 0x2F, 0xF5, 0x59, 0xB8, 0xB4, 0x49, 0x6A, 0xAE, 0x6E, 0x8B, 0x63, + 0x7B, 0x08, 0xB0, 0xD7, 0x00, 0x3A, 0xF6, 0xBF, 0x55, 0x63, 0xB1, 0x09, + 0x24, 0x14, 0x39, 0x56, 0x62, 0x18, 0x33, 0x64, 0x64, 0xEF, 0xAA, 0xA8, + 0xC9, 0x38, 0x2A, 0xA2, 0x70, 0x4A, 0x61, 0x66, 0x6F, 0xD7, 0x73, 0xF7, + 0xF0, 0x8B, 0x34, 0xC4, 0x92, 0xD1, 0x63, 0xFC, 0x05, 0xC6, 0xD4, 0xE4, + 0x9B, 0x8F, 0x4E, 0x2A, 0x58, 0x2A, 0xA7, 0x7C, 0x47, 0x34, 0x01, 0xF3, + 0x5D, 0x0F, 0x99, 0xF3, 0x21, 0x86, 0xB7, 0x52, 0x8F, 0x06, 0x60, 0x1D, + 0xC6, 0xBB, 0xC4, 0x5A, 0x8F, 0x9B, 0x5E, 0x43, 0x4A, 0xA4, 0x2C, 0x1A, + 0xAD, 0xB8, 0x74, 0x79, 0x2C, 0x2D, 0x3A, 0x31, 0x21, 0x7F, 0x63, 0x91, + 0x0C, 0xED, 0xFF, 0x33, 0xF4, 0x2D, 0x19, 0xB6, 0x83, 0xD3, 0x33, 0x7B, + 0xE7, 0x9C, 0xF1, 0x8E, 0xAF, 0x57, 0x91, 0x81, 0x3A, 0x86, 0x1D, 0xA8, + 0xC4, 0x58, 0x78, 0xA8, 0xE8, 0x34, 0xB9, 0xE6, 0x57, 0x89, 0x4E, 0xD3, + 0x72, 0xD3, 0xD2, 0x09, 0x8C, 0xF1, 0x5B, 0xFB, 0x64, 0xDB, 0xA5, 0x32, + 0x17, 0x99, 0x65, 0x08, 0x31, 0xAD, 0x89, 0x64, 0x60, 0x60, 0xB8, 0xFE, + 0x77, 0xE5, 0x33, 0x80, 0xF8, 0x41, 0x75, 0xF0, 0xAE, 0x04, 0xB3, 0x49, + 0x6C, 0x24, 0x33, 0xC8, 0x7A, 0x09, 0x43, 0x6D, 0x0F, 0x88, 0xE6, 0xCD, + 0x35, 0xA8, 0xF2, 0xBD, 0xEA, 0x39, 0xA6, 0x46, 0xB5, 0x21, 0xD4, 0xC0, + 0xF5, 0x91, 0xDD, 0x9C, 0x58, 0x68, 0x04, 0x99, 0x58, 0x1C, 0xC2, 0x03, + 0xED, 0x1D, 0xCA, 0x93, 0xBA, 0x18, 0x1D, 0xDD, 0xB4, 0xBB, 0xE2, 0x1E, + 0x38, 0x59, 0x04, 0x5E, 0x8E, 0xFF, 0x80, 0xEC, 0xBB, 0x57, 0xE4, 0xA8, + 0x9F, 0x4D, 0xC3, 0xE5, 0x15, 0x71, 0x57, 0xDD, 0x02, 0xB2, 0x67, 0x50, + 0xD2, 0xDB, 0x95, 0xFF, 0x03, 0x2C, 0xDE, 0xE3, 0x78, 0x4F, 0xFE, 0xA9, + 0xAC, 0xE7, 0xE9, 0xC9, 0xA6, 0xB0, 0xCF, 0x98, 0x5E, 0xF7, 0xD7, 0x2C, + 0x92, 0x78, 0x44, 0xB9, 0xA0, 0x1A, 0xA4, 0x17, 0xA3, 0x50, 0x5E, 0x7E, + 0x1A, 0x9F, 0x18, 0x3C, 0x53, 0x8A, 0xFC, 0x9C, 0xF1, 0x58, 0x5D, 0xA3, + 0xD5, 0x18, 0x6C, 0xC7, 0x55, 0x2F, 0x46, 0x5D, 0xFB, 0x33, 0x75, 0x50, + 0x0A, 0x28, 0x37, 0x99, 0xBD, 0x06, 0xAD, 0x14, 0x84, 0xB5, 0x9D, 0xDF, + 0x04, 0x3F, 0x33, 0x28, 0x1F, 0xD8, 0x57, 0xB7, 0x6A, 0x90, 0x18, 0xC7, + 0xA6, 0x1B, 0x56, 0xD1, 0xBF, 0x22, 0x4E, 0x33, 0x6A, 0x7F, 0x94, 0xB8, + 0xA6, 0x0C, 0xA0, 0xE0, 0x7C, 0xD1, 0xEE, 0xDA, 0xFF, 0xE0, 0x9B, 0x41, + 0x75, 0xD7, 0xCA, 0x96, 0x01, 0xA9, 0xAA, 0xAD, 0x75, 0x54, 0xBA, 0x86, + 0x14, 0xF1, 0x84, 0x66, 0xC3, 0xC8, 0x66, 0x71, 0x63, 0x0D, 0x4A, 0x2C, + 0x85, 0x4E, 0xD7, 0x6F, 0x9A, 0x59, 0x51, 0x8A, 0xB6, 0xAF, 0xF5, 0x5F, + 0x18, 0xA2, 0x49, 0xD0, 0x34, 0xD4, 0x51, 0xF9, 0x8D, 0xA3, 0x91, 0x59, + 0x7C, 0x87, 0x9D, 0x31, 0x14, 0xE0, 0xF0, 0x08, 0x95, 0x2C, 0x61, 0xCC, + 0x53, 0xE2, 0x15, 0x9D, 0xEE, 0xA1, 0xC2, 0xDE, 0x2B, 0x53, 0xB6, 0x21, + 0x88, 0xE0, 0x5B, 0x77, 0x1F, 0x50, 0xEF, 0xFA, 0xAA, 0x48, 0xCF, 0x97, + 0x40, 0x3B, 0xC1, 0x82, 0x34, 0x6D, 0xAB, 0xB4, 0xAD, 0x5A, 0xE3, 0x99, + 0x78, 0xB6, 0xBD, 0x16, 0x34, 0x32, 0xC9, 0xA2, 0xC2, 0xA1, 0xAB, 0xB3, + 0xFA, 0xA6, 0x62, 0x7D, 0xB5, 0xF7, 0x89, 0xAD, 0x9A, 0xA9, 0x7E, 0x1C, + 0x7F, 0x9C, 0x64, 0x30, 0x47, 0x9B, 0x6E, 0x48, 0x62, 0x2C, 0xDE, 0x9A, + 0xAF, 0x2A, 0xE2, 0xF1, 0x7B, 0xEA, 0xA2, 0xAA, 0x75, 0x3C, 0xB5, 0xB2, + 0xC5, 0x2F, 0x0F, 0x50, 0x36, 0x15, 0x12, 0x71, 0x48, 0x2A, 0xD2, 0x73, + 0x02, 0xB3, 0xA8, 0xBE, 0x24, 0x18, 0x79, 0xB0, 0xE0, 0x06, 0x07, 0x13, + 0xE5, 0xF6, 0x32, 0x96, 0x9C, 0x88, 0x6B, 0xF0, 0xFB, 0xA9, 0x04, 0x52, + 0x18, 0x41, 0x91, 0x5D, 0x4C, 0xDC, 0x96, 0x35, 0x45, 0x85, 0x1D, 0x1C, + 0xDF, 0x28, 0xCA, 0x07, 0xC5, 0x27, 0x47, 0xF7, 0x30, 0x6D, 0xDF, 0x28, + 0x12, 0xCA, 0x28, 0x31, 0x71, 0x77, 0xCC, 0x35, 0x0A, 0x2E, 0x81, 0xEE, + 0xD2, 0x6F, 0x01, 0x95, 0x5A, 0x97, 0x44, 0xCA, 0x18, 0x69, 0xD9, 0xA0, + 0xC8, 0x88, 0xF3, 0x2B, 0x7A, 0x7F, 0xFD, 0x5F, 0xA6, 0x42, 0x3D, 0x1A, + 0x36, 0x78, 0x4D, 0x1B, 0x56, 0x8F, 0x3A, 0xCB, 0x65, 0x77, 0x9E, 0x78, + 0x03, 0xDE, 0xA9, 0xE6, 0x0D, 0x06, 0xF6, 0x43, 0xC6, 0x94, 0xCB, 0x37, + 0xEA, 0xC1, 0x97, 0x01, 0x69, 0x41, 0x6D, 0x55, 0x7C, 0xC8, 0x9C, 0xD1, + 0x4A, 0x66, 0x9E, 0x90, 0x03, 0xCA, 0x29, 0x53, 0x68, 0x0F, 0x69, 0x6C, + 0x7D, 0xEB, 0xAD, 0xD9, 0x1A, 0xA4, 0x46, 0xB4, 0x92, 0x9C, 0x42, 0x0E, + 0x9F, 0x81, 0x29, 0xA2, 0xDF, 0xB0, 0x2C, 0x4C, 0x32, 0xA2, 0x57, 0x25, + 0x01, 0xB1, 0x9C, 0x12, 0x53, 0xC7, 0xF0, 0x0A, 0x60, 0xA6, 0x51, 0xC9, + 0x8F, 0xB4, 0x52, 0x20, 0x8A, 0x61, 0x17, 0x76, 0xA3, 0x85, 0xB9, 0x51, + 0x02, 0x0A, 0x2D, 0x81, 0x07, 0x90, 0x56, 0x96, 0xA7, 0xF9, 0x5A, 0x36, + 0x6E, 0x2A, 0xA8, 0x7E, 0xC1, 0xD8, 0x23, 0x0E, 0x81, 0xBA, 0x85, 0xDD, + 0x60, 0x61, 0x28, 0xEF, 0x93, 0x4E, 0x12, 0x9B, 0x1A, 0x0B, 0xC7, 0xEB, + 0x7C, 0xE0, 0xEF, 0x24, 0xA1, 0x0A, 0x7D, 0x98, 0xB8, 0x55, 0xF9, 0x88, + 0x42, 0xA2, 0x69, 0xC5, 0x8C, 0x24, 0xE1, 0xA1, 0xA4, 0xDE, 0x34, 0x6E, + 0x08, 0xFD, 0x1F, 0x25, 0x0C, 0x94, 0xEF, 0x08, 0x62, 0x63, 0x75, 0x08, + 0x3E, 0x71, 0xAF, 0xA6, 0xFA, 0x5D, 0x8E, 0xA8, 0x37, 0x00, 0xB7, 0xDF, + 0x4A, 0x4D, 0x6E, 0x92, 0x0A, 0x45, 0x02, 0xF8, 0xF0, 0x08, 0x77, 0x38, + 0x0C, 0x2B, 0xAE, 0x15, 0xF8, 0x40, 0x6C, 0x40, 0xCC, 0x08, 0x76, 0xB4, + 0xD5, 0x92, 0x59, 0x49, 0xA0, 0x98, 0xEC, 0x65, 0xCE, 0xCC, 0xAF, 0x8B, + 0xC4, 0xA9, 0xE8, 0x2B, 0x23, 0x90, 0xC0, 0x19, 0x12, 0x15, 0x23, 0xCE, + 0xD4, 0x80, 0x22, 0x82, 0x30, 0x6A, 0x50, 0xFA, 0x6D, 0x3A, 0xBD, 0x4B, + 0xE1, 0x5B, 0x1A, 0x07, 0x88, 0x4E, 0xD0, 0x42, 0xA6, 0xFD, 0x5E, 0x3C, + 0x7F, 0x53, 0x20, 0xDD, 0x9C, 0x46, 0xEA, 0xE8, 0x8D, 0x6F, 0x17, 0x57, + 0x41, 0x59, 0xEA, 0x27, 0xC7, 0x70, 0xFB, 0x12, 0x2D, 0x6C, 0xF7, 0xEF, + 0xA7, 0x6A, 0x5C, 0x15, 0x09, 0xE3, 0x63, 0xF1, 0x5B, 0xB8, 0xE4, 0x69, + 0x92, 0x7C, 0x13, 0x90, 0xBB, 0xA3, 0xE8, 0xF0, 0xC9, 0xF3, 0xD5, 0x27, + 0xB7, 0xC4, 0x2B, 0xEB, 0x66, 0x19, 0x36, 0x9B, 0x88, 0x88, 0xFD, 0xBA, + 0x0F, 0x2E, 0x66, 0x98, 0x94, 0x3C, 0x6F, 0x09, 0x0B, 0x89, 0x35, 0x3A, + 0x8A, 0x8A, 0x7B, 0xA5, 0x1F, 0x9B, 0x9D, 0x53, 0x67, 0xEE, 0xBC, 0x8C, + 0x63, 0x83, 0x11, 0x31, 0x87, 0x24, 0x36, 0xBA, 0x7F, 0xC5, 0xA2, 0x06, + 0x33, 0x10, 0x79, 0xEC, 0x01, 0x89, 0x48, 0x96, 0x2A, 0xC9, 0x25, 0x0F, + 0xF3, 0x92, 0x1E, 0x52, 0x93, 0xCD, 0x65, 0x71, 0x2B, 0x98, 0xE7, 0xC8, + 0x29, 0xA3, 0x21, 0x43, 0xF0, 0x37, 0x3C, 0x36, 0x8E, 0x7F, 0xDC, 0x95, + 0xA1, 0x56, 0xA1, 0x20, 0xA1, 0xBC, 0x5C, 0x30, 0xDE, 0x52, 0x54, 0xC8, + 0x73, 0xCE, 0xA6, 0x30, 0x44, 0x0F, 0x3F, 0xA0, 0x7B, 0x7E, 0x11, 0x66, + 0x2E, 0xD6, 0xD8, 0x85, 0x5B, 0x56, 0xC1, 0xD3, 0xEE, 0xF1, 0x7E, 0xBA, + 0x08, 0xF1, 0xA4, 0x49, 0xB3, 0x0C, 0x41, 0xA3, 0xFC, 0xAF, 0xA6, 0x9E, + 0x90, 0x25, 0x44, 0xC2, 0x36, 0x64, 0x74, 0x38, 0xC9, 0xBC, 0xA5, 0xE8, + 0x36, 0x2E, 0x84, 0xCD, 0xEA, 0x22, 0x8A, 0x09, 0x94, 0xB2, 0x38, 0x67, + 0xC3, 0xBD, 0x7C, 0x79, 0x12, 0x3D, 0xE2, 0xA0, 0x0A, 0x1F, 0xCE, 0xE7, + 0x1D, 0x7A, 0xB5, 0x2B, 0x4E, 0x62, 0x82, 0x37, 0xEC, 0xFB, 0x7B, 0x05, + 0xAC, 0xE5, 0x10, 0x60, 0x8B, 0x09, 0x7D, 0xC8, 0x16, 0xE0, 0xFA, 0x78, + 0x35, 0x13, 0xF6, 0x8D, 0xB0, 0x39, 0x5F, 0xC8, 0xF4, 0x08, 0xCF, 0x0D, + 0xA9, 0xA1, 0xC6, 0xE0, 0xDC, 0x0A, 0x4D, 0x54, 0x6C, 0x47, 0x16, 0xFD, + 0x61, 0x08, 0xD3, 0x90, 0xC3, 0x4A, 0xD2, 0xE0, 0x7E, 0xE9, 0xB1, 0x62, + 0xBD, 0x15, 0x61, 0xB8, 0x6A, 0xF2, 0x76, 0x66, 0xBB, 0x5C, 0xB6, 0x87, + 0x40, 0x8B, 0xFF, 0x90, 0x1F, 0xB7, 0x63, 0xF3, 0x73, 0xF4, 0xE9, 0xEB, + 0x96, 0xA9, 0x73, 0xA5, 0xF5, 0x94, 0x5E, 0x16, 0x9B, 0xB1, 0x9F, 0x2F, + 0x6B, 0x9D, 0x13, 0x6F, 0x01, 0xD6, 0xB6, 0x74, 0xA7, 0x86, 0x19, 0x82, + 0x6F, 0x50, 0x1A, 0x44, 0x5D, 0x47, 0xC5, 0xC5, 0x66, 0xEF, 0x24, 0xE3, + 0xA8, 0x16, 0xD3, 0xEB, 0x2B, 0x06, 0x54, 0xDB, 0x9B, 0x1F, 0xFE, 0x8D, + 0x03, 0x1C, 0x63, 0x4C, 0xFA, 0x7E, 0xB8, 0x5A, 0xA3, 0x50, 0x2D, 0xE1, + 0x04, 0xE1, 0x15, 0x31, 0xF7, 0xB3, 0x23, 0xD7, 0x0E, 0x78, 0x42, 0x4D, + 0x28, 0x1F, 0xF2, 0x9D, 0xFC, 0x4A, 0xEC, 0xA1, 0xF2, 0x6E, 0x40, 0xA2, + 0xD9, 0xEC, 0x67, 0xDB, 0x81, 0x7C, 0xEA, 0x72, 0x38, 0xAF, 0xA2, 0x06, + 0xCC, 0xAB, 0x22, 0xFA, 0x5C, 0xF9, 0xB7, 0x9D, 0xE5, 0x35, 0x11, 0xE8, + 0xB3, 0x01, 0xFB, 0xEF, 0xE8, 0xE4, 0x08, 0x36, 0xDB, 0xB3, 0x83, 0x8D, + 0xD0, 0xA9, 0xFD, 0xFB, 0x8A, 0x28, 0x60, 0xD3, 0xDC, 0x72, 0x52, 0x40, + 0x97, 0x53, 0xBB, 0xA2, 0xAF, 0x6F, 0x04, 0x2B, 0xBE, 0x8E, 0x16, 0x2D, + 0x0E, 0x7C, 0x2A, 0xEB, 0xC1, 0xC8, 0x6E, 0x96, 0x29, 0x1F, 0x64, 0x26, + 0xFF, 0x89, 0xF3, 0x2D, 0xF2, 0x26, 0xF0, 0x74, 0x0F, 0x4D, 0x7F, 0x2F, + 0x61, 0x3C, 0xE9, 0x03, 0x43, 0x82, 0x24, 0x2F, 0x80, 0x42, 0x5D, 0xBE, + 0xFA, 0x13, 0x06, 0x0F, 0xA8, 0x82, 0x44, 0x04, 0x97, 0xC4, 0x21, 0x21, + 0x4C, 0x4D, 0xB4, 0x37, 0xB3, 0x5D, 0xD8, 0xF7, 0xDB, 0xC3, 0xC6, 0x21, + 0x98, 0xF3, 0x11, 0x7A, 0x8D, 0xD9, 0xE3, 0xD9, 0x7F, 0xF6, 0xED, 0x44, + 0xCC, 0xCB, 0x2A, 0x2D, 0x22, 0x3C, 0x23, 0x64, 0x25, 0xA0, 0xCC, 0xDE, + 0x99, 0x01, 0xE8, 0xCB, 0xB4, 0xE6, 0x4D, 0xEB, 0x57, 0xEC, 0xDA, 0xB3, + 0x9A, 0x7E, 0xF5, 0xCC, 0x9B, 0x9D, 0x3A, 0xC8, 0xD4, 0xA9, 0x39, 0x7D, + 0x6A, 0x63, 0xC7, 0x48, 0xFF, 0x8E, 0x36, 0x81, 0x8C, 0x2B, 0x8F, 0x1E, + 0x52, 0x42, 0xEE, 0x1C, 0xBB, 0xB9, 0xE9, 0xC5, 0xB9, 0x27, 0x47, 0xA7, + 0x92, 0x39, 0x01, 0x3E, 0x35, 0xA9, 0x6C, 0x47, 0x55, 0x46, 0x07, 0x28, + 0x82, 0x5C, 0x0A, 0xC7, 0x07, 0x6A, 0xE0, 0x57, 0x9F, 0x3C, 0x08, 0xDA, + 0xA2, 0x5E, 0xE8, 0xA1, 0xBC, 0xB2, 0x4F, 0xD1, 0xB0, 0x2E, 0x71, 0xC2, + 0xAC, 0xA4, 0xF1, 0x8B, 0xE1, 0xF8, 0x30, 0xD6, 0x48, 0xBC, 0x79, 0x74, + 0xF6, 0xC3, 0x3F, 0x83, 0x75, 0xC4, 0xC5, 0x20, 0xED, 0x01, 0xB6, 0xA9, + 0x3B, 0x22, 0xC0, 0x1F, 0xC2, 0x49, 0xF0, 0xA9, 0x5F, 0x53, 0x6D, 0x6D, + 0xB8, 0xE1, 0x6D, 0x9E, 0xE8, 0xD5, 0x45, 0x34, 0x69, 0x87, 0xF8, 0x42, + 0x78, 0x1A, 0xD0, 0x07, 0x6A, 0xC6, 0x9E, 0x56, 0xEB, 0xA6, 0xF6, 0x71, + 0x88, 0x80, 0x3A, 0xDD, 0xDC, 0xC4, 0x8E, 0xA3, 0x74, 0x6D, 0x10, 0xBA, + 0x26, 0x98, 0xE1, 0x68, 0x49, 0x6A, 0x86, 0x0F, 0x62, 0xA5, 0x75, 0x83, + 0xD9, 0x5A, 0xD6, 0x34, 0x81, 0x65, 0x17, 0xA9, 0xD2, 0xF0, 0x35, 0x35, + 0x27, 0x9D, 0x81, 0x72, 0xAE, 0xA4, 0xC0, 0xFE, 0x09, 0x95, 0xFA, 0x3D, + 0x78, 0xEA, 0x3D, 0xA5, 0xA9, 0xB6, 0x4B, 0x91, 0xBA, 0x31, 0x44, 0xCD, + 0xD6, 0x94, 0x7A, 0x38, 0x40, 0x75, 0xD6, 0x4C, 0x6F, 0x30, 0x8A, 0x8E, + 0xF6, 0x75, 0x50, 0x70, 0x17, 0x28, 0xED, 0x0B, 0xDF, 0xEB, 0x8B, 0x94, + 0x05, 0x9B, 0x85, 0x7A, 0xAA, 0xE7, 0x76, 0xE4, 0x5D, 0x9D, 0x2A, 0x02, + 0x9A, 0x96, 0x70, 0xA4, 0xC5, 0x4D, 0x90, 0x18, 0x5D, 0x31, 0x2E, 0x49, + 0xFF, 0xA9, 0xBE, 0x9D, 0x9E, 0x7F, 0x6E, 0x0A, 0x08, 0x04, 0x83, 0x43, + 0xA1, 0x5B, 0x44, 0xA4, 0xAC, 0x66, 0xE1, 0x5A, 0xA3, 0x70, 0xED, 0x00, + 0x84, 0x53, 0x0E, 0x52, 0x22, 0x29, 0x3D, 0x14, 0x9D, 0x9C, 0x1C, 0xBC, + 0x0A, 0x19, 0xC0, 0x7B, 0xED, 0xBC, 0x4D, 0x15, 0x8B, 0xEC, 0x99, 0xF7, + 0x68, 0x76, 0xCD, 0x3C, 0x11, 0x57, 0x28, 0x49, 0xF1, 0x0F, 0x7F, 0x74, + 0x24, 0x40, 0x05, 0x98, 0xFF, 0xF4, 0xE7, 0xB7, 0x84, 0xDB, 0x55, 0x09, + 0xD6, 0x0B, 0xE4, 0x5B, 0xF9, 0xFF, 0xB1, 0x2E, 0x25, 0x00, 0x3C, 0x9A, + 0xEE, 0x1B, 0x24, 0x07, 0x3C, 0xE1, 0xA9, 0xB1, 0x90, 0x44, 0x73, 0x1E, + 0xD1, 0xFA, 0x00, 0x35, 0xF5, 0x79, 0xAB, 0xDE, 0xB3, 0x5E, 0x62, 0x56, + 0x0B, 0xCC, 0xA3, 0x49, 0x67, 0x44, 0x79, 0x85, 0x3A, 0x5D, 0x2B, 0x9D, + 0xA3, 0x57, 0x44, 0x97, 0x2A, 0x50, 0x34, 0xA9, 0x2F, 0x20, 0xE7, 0x58, + 0x49, 0xF9, 0x54, 0x8F, 0x9B, 0xE1, 0xCC, 0x44, 0xC2, 0x27, 0xBE, 0x60, + 0xDD, 0x6E, 0x4D, 0xFB, 0xA8, 0xB7, 0x5E, 0xFA, 0xBF, 0xDE, 0xF2, 0xB2, + 0xDE, 0xF9, 0x55, 0x40, 0xD3, 0xB7, 0x63, 0x56, 0x74, 0x2D, 0x12, 0x37, + 0x2D, 0xD6, 0x7E, 0x84, 0x63, 0x3E, 0xAD, 0x44, 0x69, 0x58, 0x8D, 0xEE, + 0x9A, 0xA2, 0xF7, 0xFD, 0x90, 0x05, 0xD3, 0x52, 0x2C, 0x53, 0xFF, 0xA0, + 0xC3, 0x42, 0xE9, 0x6E, 0x61, 0x68, 0xE9, 0x88, 0x39, 0x35, 0xD7, 0xA0, + 0x03, 0xDA, 0x49, 0x0E, 0x9C, 0x03, 0xE4, 0x87, 0x95, 0xA5, 0xD9, 0xD6, + 0x29, 0xA2, 0xFB, 0x63, 0x9E, 0xDE, 0x7C, 0x9E, 0x1E, 0xAF, 0x86, 0xC8, + 0xD0, 0x27, 0x5E, 0xE1, 0xD3, 0xC6, 0x3A, 0x60, 0xD8, 0x43, 0xD7, 0xDC, + 0xFB, 0xC5, 0x72, 0xBF, 0xCF, 0xBD, 0x3A, 0x16, 0xEF, 0x79, 0xC6, 0x3E, + 0xB4, 0x27, 0x4C, 0x60, 0x2B, 0x4C, 0xAF, 0x44, 0x26, 0x1E, 0xAB, 0xEC, + 0xB2, 0xCE, 0xD6, 0xD1, 0x71, 0xFE, 0x8A, 0xE2, 0xA5, 0x6C, 0x53, 0x89, + 0x84, 0x08, 0x8E, 0x79, 0x41, 0xE7, 0xBB, 0x36, 0x8F, 0xFA, 0x81, 0xED, + 0x6D, 0x7B, 0x4F, 0x4B, 0x52, 0xC9, 0x03, 0x83, 0x65, 0xC4, 0xF3, 0x28, + 0xC3, 0x44, 0x25, 0x85, 0x5D, 0x6D, 0x07, 0x38, 0xDE, 0xC3, 0x33, 0x6E, + 0x09, 0x16, 0x64, 0x3F, 0x2F, 0x8A, 0x22, 0x53, 0xEE, 0xDB, 0x1B, 0xF1, + 0x41, 0xD2, 0xE5, 0x26, 0xD2, 0xD5, 0x9F, 0x2B, 0x1E, 0x78, 0xFE, 0x81, + 0x03, 0x68, 0x79, 0x7C, 0xEB, 0x3E, 0x71, 0xF0, 0x64, 0x28, 0xA0, 0x3E, + 0x54, 0x44, 0x2B, 0x56, 0x21, 0x11, 0xD6, 0xD7, 0x35, 0xB3, 0xFD, 0xC1, + 0xE5, 0xE6, 0x10, 0xB3, 0xCC, 0xD5, 0x24, 0x25, 0xE0, 0xF6, 0x1A, 0x0F, + 0xF9, 0xD5, 0x34, 0x72, 0x26, 0xD1, 0x9F, 0xFA, 0xFA, 0x41, 0x1C, 0x22, + 0x97, 0x99, 0x16, 0x41, 0xA8, 0xDC, 0x3B, 0x59, 0xC6, 0xB1, 0x9E, 0xB6, + 0x10, 0xD1, 0xD3, 0x36, 0xC8, 0x12, 0x73, 0x4D, 0x7D, 0xD0, 0xFE, 0xF5, + 0x82, 0x0A, 0x4A, 0x20, 0x5C, 0xE1, 0x7F, 0x19, 0xFD, 0x1B, 0x34, 0x14, + 0xE1, 0x8A, 0xDB, 0x01, 0x9B, 0xF8, 0x68, 0x78, 0x2E, 0x9B, 0x6A, 0x3C, + 0xF5, 0x86, 0x67, 0xF7, 0x6D, 0x92, 0xF3, 0xD6, 0x00, 0x77, 0x6B, 0x5F, + 0x60, 0x16, 0xE6, 0x41, 0xAB, 0xF6, 0x51, 0xC5, 0x0D, 0xF0, 0x96, 0x13, + 0xBB, 0x14, 0x82, 0x44, 0xD1, 0xCC, 0x86, 0xDE, 0xC1, 0x51, 0x88, 0xE3, + 0x72, 0x02, 0x5B, 0x41, 0xA2, 0x43, 0x0E, 0xEC, 0x3B, 0xEE, 0xAB, 0xB7, + 0xEE, 0xAC, 0xCA, 0x84, 0x71, 0x3F, 0x9F, 0xB7, 0x59, 0x4F, 0x7B, 0x2C, + 0x76, 0x10, 0xF1, 0xF8, 0xDC, 0x88, 0x8D, 0x03, 0x76, 0x6D, 0x1D, 0x4B, + 0x98, 0x08, 0x74, 0x1D, 0x2E, 0xD5, 0xFC, 0xF3, 0x68, 0x27, 0xB3, 0xA1, + 0x89, 0x26, 0x5E, 0x8D, 0x5C, 0xE4, 0x86, 0x9B, 0x10, 0xF0, 0x86, 0xC3, + 0xE0, 0x76, 0xFF, 0x8B, 0x8C, 0x39, 0x32, 0x4E, 0xF8, 0xF3, 0x86, 0xE6, + 0x0C, 0x6A, 0x00, 0xEB, 0x7F, 0xBD, 0xDE, 0x7F, 0x0C, 0x80, 0xBA, 0x8B, + 0xEA, 0x8D, 0x20, 0xCB, 0x86, 0x81, 0x1B, 0x44, 0x49, 0x65, 0xD1, 0xFA, + 0x12, 0xD8, 0x1B, 0xD7, 0x6D, 0xA7, 0xF6, 0x53, 0x19, 0x8D, 0x9A, 0x04, + 0x34, 0xB2, 0x15, 0xDD, 0xE7, 0x46, 0x75, 0xAA, 0x90, 0xEC, 0x41, 0x9C, + 0x93, 0xBA, 0xFD, 0xFE, 0x08, 0xFD, 0x86, 0x73, 0x7C, 0x93, 0xB6, 0xD0, + 0x3E, 0x16, 0x82, 0x05, 0x01, 0xC4, 0xBE, 0x9C, 0x24, 0x05, 0x94, 0x53, + 0x25, 0xBD, 0x67, 0x48, 0x7C, 0x66, 0xDC, 0xB6, 0x9D, 0x28, 0x26, 0x22, + 0xFA, 0x5D, 0xF6, 0x39, 0x31, 0x1D, 0xDA, 0xAA, 0x1A, 0x04, 0x40, 0x33, + 0x67, 0xA5, 0x97, 0x48, 0xB1, 0x06, 0xFB, 0x9A, 0xEC, 0xF0, 0x04, 0x5F, + 0x11, 0x26, 0x23, 0x93, 0x90, 0x48, 0x72, 0x92, 0xBD, 0xB8, 0xA6, 0xD1, + 0xEE, 0x70, 0xFD, 0xB8, 0x53, 0x91, 0x62, 0xC1, 0x48, 0x0D, 0x70, 0xBB, + 0xCD, 0xD4, 0xC3, 0xA1, 0x3D, 0x24, 0x42, 0x59, 0xD6, 0x3B, 0xA0, 0xD0, + 0xAC, 0x89, 0x07, 0x45, 0x66, 0xC9, 0x1D, 0xBF, 0x66, 0xC4, 0xF9, 0x5D, + 0x90, 0x3D, 0x84, 0x10, 0x62, 0x21, 0x37, 0x78, 0x8D, 0x27, 0xF2, 0x01, + 0xA8, 0xD0, 0x2E, 0x81, 0xA0, 0xDB, 0x8D, 0x89, 0x78, 0x10, 0xBB, 0x49, + 0x60, 0xA0, 0x50, 0x11, 0x6B, 0x04, 0xF3, 0x2E, 0x41, 0xBF, 0x00, 0xC4, + 0xFA, 0xA8, 0x3B, 0x93, 0x9C, 0x90, 0x29, 0xD6, 0xBD, 0xC4, 0xE9, 0x26, + 0xE2, 0xDB, 0xE8, 0x7E, 0xD6, 0xA7, 0xE7, 0x55, 0x61, 0x5E, 0x46, 0x82, + 0x32, 0x8D, 0xD4, 0x96, 0xF5, 0x6B, 0xB3, 0x1D, 0x18, 0xA9, 0xAA, 0x8A, + 0x22, 0x49, 0xF7, 0xB7, 0x36, 0xF7, 0xD0, 0x96, 0x2E, 0xC6, 0x73, 0x99, + 0x93, 0x63, 0x12, 0x18, 0xF3, 0x82, 0x50, 0xE1, 0x96, 0x1B, 0x7E, 0xA9, + 0x29, 0xFF, 0xFA, 0x75, 0x07, 0x82, 0x7D, 0x94, 0x4C, 0x2D, 0xCC, 0x06, + 0xAD, 0x41, 0xF3, 0xB5, 0xF3, 0x6E, 0xAD, 0x8A, 0xDD, 0x7B, 0x7F, 0xE4, + 0x7D, 0x58, 0xA8, 0x6D, 0x7C, 0xED, 0x9C, 0x1B, 0x63, 0x94, 0xD6, 0x81, + 0x43, 0x1B, 0x8C, 0x1B, 0x7F, 0xB9, 0x1C, 0xB4, 0xD5, 0xB7, 0xBD, 0xED, + 0xAA, 0x8D, 0xE4, 0x06, 0xE8, 0x88, 0xDB, 0xB5, 0xCB, 0xE9, 0xA5, 0x30, + 0xA6, 0xD9, 0xA0, 0x99, 0x5F, 0x53, 0xC5, 0x9E, 0x4E, 0x29, 0xBB, 0xE5, + 0xC5, 0xA4, 0xD9, 0x99, 0x86, 0xF1, 0x11, 0xE1, 0x4A, 0x5D, 0xCB, 0xD4, + 0xF4, 0xBC, 0x66, 0x87, 0x33, 0x93, 0x76, 0xBC, 0x10, 0x4E, 0xC1, 0xB3, + 0x0B, 0x00, 0xF5, 0x0C, 0x57, 0x9A, 0xC5, 0x30, 0x45, 0xCC, 0xDE, 0x08, + 0xF0, 0x1C, 0x4C, 0x6D, 0xA9, 0xD8, 0x6C, 0x65, 0x7A, 0xC5, 0x0A, 0xE2, + 0x0A, 0x47, 0xB4, 0x2F, 0x82, 0x0A, 0x8B, 0x12, 0xF5, 0xF5, 0xC4, 0x08, + 0x17, 0x89, 0x4B, 0xEB, 0x11, 0x9E, 0x1F, 0x2E, 0x2A, 0x24, 0xDF, 0x15, + 0xC0, 0x1B, 0x04, 0xCE, 0x07, 0x10, 0xB5, 0x26, 0x81, 0xC4, 0x4C, 0xA5, + 0x14, 0x5B, 0x17, 0x57, 0x38, 0x61, 0xF9, 0x2A, 0x25, 0x0E, 0x51, 0x15, + 0x5B, 0xEB, 0x85, 0xFE, 0xAA, 0x3E, 0xB6, 0x10, 0x6E, 0x20, 0xAF, 0xAC, + 0xFA, 0xE7, 0x86, 0xFF, 0x96, 0xA9, 0xB3, 0xB7, 0x86, 0xAC, 0x2C, 0x53, + 0xD9, 0x0A, 0x7A, 0x01, 0xE1, 0x58, 0xBD, 0x8C, 0x7C, 0xB0, 0x7F, 0xBB, + 0x70, 0x9B, 0xE1, 0x9A, 0xB8, 0x0E, 0x5D, 0xC9, 0x5D, 0x90, 0xBE, 0x2F, + 0x94, 0xCE, 0x2E, 0x28, 0xFB, 0x09, 0xF8, 0xC0, 0x11, 0x31, 0x2F, 0xE2, + 0xFF, 0xE1, 0x63, 0xE8, 0x58, 0xB9, 0x4D, 0x27, 0x02, 0x7A, 0x05, 0xF0, + 0x61, 0x70, 0x34, 0xAA, 0xB6, 0xCC, 0xA1, 0xB8, 0xC3, 0x53, 0xAE, 0x1B, + 0x0D, 0xB6, 0x2B, 0x3D, 0x84, 0x5A, 0xC4, 0x12, 0xDF, 0x6C, 0x60, 0x73, + 0x28, 0xE1, 0x07, 0xFF, 0x2C, 0x04, 0xE8, 0xF1, 0x86, 0xCE, 0x38, 0x1E, + 0xDE, 0x06, 0x14, 0x59, 0x2A, 0x91, 0x24, 0x6C, 0x72, 0x7A, 0xB6, 0x2A, + 0x1A, 0x74, 0xB6, 0x5F, 0x88, 0xE3, 0xC0, 0xC9, 0x28, 0xDE, 0xE5, 0x4B, + 0x08, 0x7F, 0xD1, 0x75, 0x2D, 0xF6, 0x9E, 0x91, 0x8D, 0xF0, 0x79, 0x6A, + 0x0C, 0xA2, 0x19, 0xD4, 0xDE, 0xE6, 0x45, 0xFC, 0x66, 0xA0, 0xB8, 0x24, + 0x1D, 0x88, 0xDD, 0x31, 0x2C, 0x99, 0x02, 0x86, 0xC7, 0xF7, 0xA9, 0xFF, + 0x19, 0x61, 0x2E, 0xFA, 0xCE, 0xD2, 0x46, 0xD5, 0x89, 0xD1, 0xBC, 0x3E, + 0x03, 0x21, 0x13, 0x14, 0x65, 0x1C, 0x15, 0x54, 0xAB, 0x22, 0xA0, 0x52, + 0xEA, 0xEC, 0xB5, 0x8D, 0x7B, 0xC7, 0xFC, 0x9A, 0x1C, 0x30, 0x1D, 0x50, + 0x6A, 0xB6, 0xA4, 0x0F, 0x57, 0xE4, 0x6B, 0xBD, 0x69, 0x79, 0xF8, 0x75, + 0x43, 0xBE, 0xDC, 0x5C, 0xAD, 0xC0, 0xB8, 0xEF, 0xF1, 0x57, 0xB7, 0xEE, + 0xAB, 0xBA, 0x94, 0xBD, 0xEE, 0x62, 0x0C, 0x99, 0xC8, 0xC1, 0x7C, 0x07, + 0xCE, 0xE0, 0x51, 0x34, 0x67, 0x8D, 0xFD, 0x89, 0x7E, 0xFD, 0x56, 0xBC, + 0xD1, 0x3E, 0x4C, 0x30, 0x11, 0xA4, 0x2C, 0x4E, 0x98, 0xA3, 0xAC, 0xD4, + 0x34, 0xE4, 0xD2, 0x30, 0xA5, 0xC6, 0xD5, 0xBE, 0xE9, 0x93, 0x20, 0x2E, + 0xD0, 0xD3, 0x27, 0x6C, 0x18, 0xB3, 0xE4, 0x38, 0x09, 0x93, 0x49, 0xE7, + 0xB3, 0x25, 0xDF, 0x5F, 0x80, 0x36, 0xC4, 0x74, 0x03, 0x3B, 0x12, 0x0C, + 0x4E, 0xA3, 0x79, 0x42, 0x15, 0xC8, 0x7D, 0xE3, 0xCD, 0xED, 0x30, 0x3F, + 0x23, 0x11, 0x15, 0x37, 0xB5, 0x03, 0x04, 0x1D, 0xD3, 0x9E, 0x6B, 0x68, + 0x78, 0xE7, 0xBF, 0xB6, 0x3D, 0x89, 0x21, 0xF9, 0xAA, 0xC4, 0xD7, 0x54, + 0x17, 0xD6, 0xF3, 0x3E, 0xDC, 0xE9, 0xB3, 0x87, 0xA0, 0x3B, 0x6A, 0x54, + 0xB0, 0x6D, 0x9E, 0xB0, 0xC2, 0x48, 0xA7, 0xE9, 0x29, 0xEB, 0xDF, 0x88, + 0xE6, 0x9F, 0x4B, 0x83, 0xAF, 0x29, 0x4F, 0x30, 0x62, 0x37, 0xC5, 0x23, + 0xFB, 0x19, 0x08, 0x1D, 0xFF, 0xA3, 0x19, 0xB2, 0xEB, 0xBF, 0x68, 0x88, + 0xBC, 0x1F, 0x9A, 0xE5, 0x2A, 0x24, 0x46, 0xC0, 0x87, 0x82, 0x7F, 0x49, + 0x7F, 0x71, 0x50, 0x69, 0xD6, 0x57, 0x27, 0x58, 0x64, 0xFD, 0x06, 0xB8, + 0x05, 0x5D, 0x74, 0xD0, 0x33, 0xFC, 0x5A, 0x34, 0x6F, 0x1E, 0xB3, 0x0E, + 0xFE, 0x6B, 0x27, 0xCE, 0x3A, 0x51, 0x2D, 0xF5, 0x48, 0x4C, 0x27, 0x36, + 0x26, 0x87, 0xE7, 0x3B, 0xB6, 0x64, 0x95, 0x5C, 0x73, 0x3D, 0xD4, 0x2C, + 0x4C, 0x03, 0x02, 0x9F, 0x0E, 0xBD, 0xF0, 0xA3, 0x4C, 0xE6, 0xC9, 0xE1, + 0xBE, 0x4C, 0x1A, 0xBD, 0xE8, 0x39, 0x75, 0xEC, 0xAA, 0x0A, 0x3D, 0xED, + 0x77, 0x57, 0x44, 0x92, 0xF3, 0xE6, 0x86, 0xFA, 0x11, 0x75, 0x7C, 0xA2, + 0x1A, 0xF3, 0x36, 0x95, 0xA5, 0xE4, 0xAB, 0x77, 0x8A, 0xA5, 0xCF, 0x72, + 0xAB, 0x7B, 0xBC, 0xB7, 0x4F, 0x9A, 0xB3, 0xD6, 0xE6, 0xA7, 0x76, 0x8E, + 0x44, 0xD3, 0x4B, 0x2D, 0xC7, 0xC9, 0xCA, 0x1C, 0xE4, 0x94, 0x86, 0x60, + 0xF9, 0x9E, 0xEC, 0xA9, 0xD8, 0x47, 0xF1, 0xAB, 0xD7, 0x08, 0x89, 0x63, + 0xA4, 0x1D, 0x6C, 0xC7, 0xCC, 0x62, 0xB5, 0xC6, 0x92, 0x1C, 0x12, 0x49, + 0x3E, 0x35, 0x01, 0x44, 0x64, 0x3F, 0xEC, 0x73, 0x79, 0x88, 0xC2, 0x57, + 0x34, 0x41, 0x49, 0x9D, 0xF6, 0xE9, 0x4D, 0xCC, 0xE1, 0x96, 0xCF, 0x21, + 0xA6, 0xFA, 0x9E, 0x1C, 0xDC, 0x6A, 0x0A, 0x97, 0x46, 0x9A, 0x4B, 0x97, + 0x7C, 0x24, 0x10, 0x85, 0x83, 0xE7, 0x17, 0x36, 0xB9, 0xE6, 0x5D, 0xA0, + 0x56, 0xAD, 0xBE, 0xB5, 0x8B, 0x30, 0xD0, 0xC0, 0x67, 0x0E, 0x7D, 0x85, + 0xD1, 0x8A, 0x3B, 0x9F, 0xF4, 0x63, 0x67, 0xC1, 0x37, 0xEC, 0xFF, 0x5F, + 0x61, 0x4A, 0x98, 0xDC, 0xF4, 0x01, 0x59, 0x5F, 0xBC, 0xF0, 0x7D, 0x3A, + 0xD3, 0x2F, 0x19, 0x4F, 0xB1, 0x85, 0x18, 0x3D, 0x4F, 0x99, 0xA0, 0x61, + 0x3B, 0x7C, 0x56, 0x56, 0x00, 0x5C, 0x4E, 0xD9, 0x49, 0x66, 0xDF, 0xF5, + 0x28, 0xA3, 0x83, 0x9E, 0xAA, 0xC7, 0x6D, 0xE1, 0xF6, 0xEB, 0x7D, 0x61, + 0xFF, 0xFA, 0xDC, 0x26, 0x46, 0x69, 0x66, 0x77, 0x2B, 0x68, 0xA9, 0x63, + 0xD0, 0x55, 0xA1, 0xFF, 0xFB, 0xC6, 0x87, 0xF1, 0x01, 0x83, 0x4D, 0x1D, + 0xD6, 0x26, 0x51, 0x36, 0x7F, 0x85, 0x73, 0xF7, 0x77, 0xD5, 0x03, 0xCF, + 0x76, 0x40, 0xA9, 0xDC, 0x7C, 0x03, 0xFE, 0x59, 0x8C, 0xF7, 0x93, 0x64, + 0x7A, 0x0E, 0xA3, 0xB6, 0x6B, 0xAD, 0xBD, 0xD3, 0xB0, 0x43, 0xC6, 0xCA, + 0x9D, 0x10, 0x04, 0x96, 0xB1, 0xCE, 0xEF, 0x1B, 0x8D, 0xE2, 0x67, 0x20, + 0x4F, 0x96, 0x2E, 0x6C, 0x6D, 0x21, 0xEC, 0x74, 0x0F, 0x23, 0xAE, 0x60, + 0x92, 0xB6, 0x19, 0x51, 0xFF, 0x96, 0xA9, 0xC5, 0xF1, 0x04, 0x50, 0x02, + 0xCE, 0xB1, 0x5E, 0x83, 0x06, 0x5C, 0x41, 0xB5, 0x2E, 0xBE, 0xDE, 0xB7, + 0x39, 0x4C, 0x22, 0xBB, 0x92, 0x4C, 0x74, 0x76, 0x9C, 0xDD, 0xE8, 0xF4, + 0xDF, 0xFF, 0xD3, 0x8F, 0x4D, 0xE8, 0xAF, 0xEA, 0xA1, 0xEC, 0x02, 0x32, + 0x37, 0xF0, 0xD5, 0xA4, 0x0A, 0x4C, 0x1C, 0x60, 0xE6, 0x95, 0x84, 0x9C, + 0xF8, 0xC0, 0x16, 0x7B, 0x88, 0xE6, 0x97, 0x82, 0x0C, 0x6A, 0xEC, 0xE5, + 0x8C, 0x9B, 0xFF, 0x96, 0x6D, 0xD5, 0x04, 0xE7, 0x59, 0xD0, 0xB0, 0xCE, + 0x6F, 0x9D, 0xBB, 0x7E, 0x09, 0x82, 0xDD, 0xC0, 0xE5, 0x37, 0xB9, 0x07, + 0xF0, 0x6E, 0xBA, 0x8C, 0x19, 0x77, 0xA4, 0x21, 0xCB, 0xE1, 0xFA, 0x14, + 0xC2, 0x68, 0xBF, 0x86, 0xC0, 0xEE, 0xB3, 0xED, 0x17, 0x8D, 0x99, 0x70, + 0x01, 0x61, 0xBF, 0x92, 0x18, 0xA9, 0x2C, 0xEE, 0x94, 0xB4, 0x88, 0x35, + 0x21, 0x56, 0xD1, 0x02, 0xA8, 0xC4, 0x12, 0x34, 0x69, 0x7E, 0x1A, 0xFC, + 0x64, 0x66, 0x32, 0x8E, 0xA4, 0x1C, 0xB9, 0xDD, 0x37, 0xF0, 0x52, 0xC6, + 0x76, 0x5A, 0xEA, 0x4F, 0x49, 0xD3, 0x1C, 0x83, 0x90, 0x96, 0x35, 0x67, + 0x65, 0x38, 0x86, 0xE2, 0x45, 0xA9, 0xC4, 0x07, 0x59, 0xAE, 0xCC, 0xD5, + 0xDD, 0x88, 0xDE, 0xF2, 0x52, 0xD9, 0x88, 0x02, 0x10, 0x13, 0x62, 0x8C, + 0x5A, 0x32, 0x76, 0x80, 0x31, 0xD0, 0xF2, 0x91, 0x22, 0x51, 0x26, 0x3C, + 0xD6, 0xA4, 0x1A, 0x61, 0x5A, 0xB2, 0x7D, 0xE7, 0xCD, 0x71, 0x0B, 0x28, + 0xB2, 0x3F, 0xA6, 0x38, 0xDC, 0xD9, 0x61, 0xD0, 0xE5, 0xC8, 0x0F, 0xF1, + 0xC9, 0x04, 0x09, 0x4A, 0x9F, 0x91, 0x7C, 0xEA, 0x88, 0x74, 0xC0, 0x32, + 0xB2, 0xCE, 0xBB, 0xA7, 0xE1, 0x95, 0x4E, 0xEF, 0xA0, 0x6F, 0xE0, 0x75, + 0xC3, 0x9F, 0x44, 0x02, 0xF1, 0x06, 0x0B, 0xFD, 0xC8, 0x11, 0x0B, 0xCB, + 0xCF, 0x19, 0xE1, 0x64, 0xDE, 0x8D, 0xEE, 0x97, 0x37, 0x48, 0x5F, 0xF6, + 0xE7, 0xCE, 0x5C, 0x7A, 0xB7, 0xC6, 0xAB, 0x4F, 0x9A, 0x33, 0x2C, 0xBF, + 0x7A, 0x2F, 0xEE, 0x28, 0x90, 0xD6, 0x6E, 0x8A, 0x6D, 0xE0, 0xDE, 0x0E, + 0x2B, 0x2B, 0xE1, 0x36, 0xBA, 0xD6, 0xE7, 0x1A, 0x3C, 0x2F, 0x34, 0xF3, + 0x39, 0xE2, 0x22, 0x33, 0x91, 0xEB, 0xFF, 0x1C, 0x00, 0x09, 0x82, 0xFE, + 0xAB, 0x1E, 0x1F, 0x40, 0x5E, 0x05, 0xF5, 0x6B, 0xCD, 0x52, 0xAB, 0xEA, + 0x52, 0x91, 0x23, 0x26, 0x91, 0x6F, 0xEF, 0xA3, 0x46, 0x70, 0xD9, 0x00, + 0x79, 0xE6, 0x06, 0x2F, 0x31, 0x2A, 0x35, 0x5F, 0x29, 0xDA, 0x7A, 0xF6, + 0xE2, 0x5B, 0xFA, 0x50, 0x5F, 0x27, 0xD9, 0x5E, 0x3D, 0x72, 0x2C, 0xE5, + 0x6F, 0x6C, 0xFA, 0x73, 0x2D, 0x5C, 0x02, 0xFF, 0x64, 0xF7, 0xBB, 0xC0, + 0x4D, 0x72, 0xCD, 0x3A, 0x68, 0xA8, 0xD0, 0xD4, 0xB4, 0x36, 0x25, 0x4D, + 0xD2, 0xF2, 0x72, 0x2E, 0x29, 0x6A, 0x5C, 0xAE, 0x53, 0x36, 0x26, 0x24, + 0x2D, 0x40, 0x7B, 0xE2, 0x95, 0xB1, 0x38, 0xCC, 0x98, 0xC3, 0xCA, 0xFD, + 0xD2, 0x14, 0x20, 0x67, 0x69, 0xFE, 0xA8, 0x3F, 0xE7, 0xA4, 0xF5, 0x12, + 0x72, 0x45, 0x35, 0x09, 0xFB, 0x41, 0x5E, 0xF7, 0x14, 0xC7, 0x6B, 0xF6, + 0x14, 0x1B, 0x3D, 0xB6, 0x30, 0xE2, 0x9E, 0xDA, 0xCE, 0x71, 0xF1, 0x7E, + 0xAB, 0xD6, 0xE3, 0xFE, 0x81, 0xFB, 0x0B, 0x46, 0xDB, 0x92, 0xBF, 0x0C, + 0x78, 0x48, 0x26, 0xD7, 0x06, 0xD2, 0x25, 0x24, 0x07, 0x94, 0xBD, 0x4B, + 0x1F, 0xC4, 0x97, 0x13, 0x45, 0xD3, 0x34, 0x7C, 0x6B, 0x6F, 0x2A, 0xD7, + 0x4B, 0x2C, 0xF3, 0x4D, 0x30, 0x8E, 0x6F, 0x08, 0x59, 0x23, 0xAD, 0x3C, + 0xE0, 0xF8, 0xF1, 0xC5, 0x6D, 0xF2, 0xB2, 0x8C, 0x1B, 0xB4, 0x0D, 0x06, + 0xAE, 0xBC, 0x9A, 0x26, 0xE8, 0x1B, 0xB1, 0x69, 0x57, 0xE9, 0x61, 0x9A, + 0xDF, 0xF2, 0xEA, 0x46, 0xC8, 0x1D, 0x49, 0xA1, 0x0F, 0x7A, 0x0D, 0xFC, + 0xC7, 0x45, 0xC5, 0x8B, 0xBC, 0xF7, 0x0B, 0x7E, 0x27, 0x60, 0x42, 0xD5, + 0x5C, 0x7F, 0x99, 0x77, 0x57, 0x3A, 0x9F, 0x7B, 0xC2, 0xE1, 0xDF, 0x96, + 0xD4, 0x70, 0x25, 0x5A, 0xBB, 0xC0, 0xEC, 0xB4, 0xC6, 0x93, 0x21, 0x29, + 0x96, 0xEC, 0x47, 0x41, 0x6C, 0xE3, 0x60, 0xFC, 0x40, 0x7F, 0x47, 0x1D, + 0x8A, 0x19, 0x2C, 0xE9, 0x10, 0x1B, 0x3B, 0x1A, 0x35, 0x29, 0xE4, 0xA6, + 0xBC, 0x6B, 0x35, 0x37, 0xF5, 0x39, 0xCD, 0x03, 0x4E, 0x9A, 0x88, 0xF8, + 0x88, 0xE1, 0x20, 0x6A, 0xA2, 0x77, 0xD0, 0xF0, 0x82, 0x3E, 0x23, 0x95, + 0x1C, 0x72, 0x06, 0xF6, 0x08, 0x0A, 0x79, 0x0C, 0x96, 0x0B, 0x6A, 0x19, + 0x13, 0x66, 0x3F, 0xA3, 0xC4, 0xBB, 0x63, 0x21, 0x8E, 0x83, 0xF9, 0x61, + 0x82, 0xC5, 0x0E, 0x47, 0x79, 0x9C, 0x09, 0x7C, 0xD2, 0xEE, 0x52, 0x06, + 0xDA, 0xAF, 0x4A, 0x69, 0xAA, 0x8C, 0xA1, 0x74, 0x33, 0x7E, 0x58, 0x0A, + 0x5C, 0xA9, 0x08, 0x8A, 0x9F, 0x89, 0x3D, 0x72, 0xC4, 0x6B, 0x26, 0xED, + 0xCB, 0x46, 0xFA, 0x0A, 0x5C, 0x6E, 0x3C, 0x66, 0x36, 0xC7, 0x5B, 0xEF, + 0xCE, 0x59, 0x9F, 0xF1, 0x41, 0xED, 0xA5, 0x70, 0x97, 0xF4, 0xD7, 0xB5, + 0x56, 0xFC, 0xBC, 0x50, 0xB6, 0xB4, 0x61, 0xED, 0x8E, 0x5E, 0xF0, 0x50, + 0xF0, 0x96, 0xF7, 0x81, 0xAD, 0xE2, 0x8C, 0xA7, 0xB8, 0xC7, 0x17, 0xD5, + 0x0C, 0x80, 0xB7, 0x7B, 0xA4, 0xD9, 0x89, 0x04, 0xF2, 0x7B, 0xF8, 0x89, + 0x8F, 0x58, 0x8B, 0x88, 0xEF, 0x6E, 0x9A, 0xCB, 0x67, 0xBA, 0x32, 0xA7, + 0x68, 0x92, 0x0A, 0xD7, 0xC9, 0xB9, 0x8B, 0xE6, 0x44, 0x0C, 0x38, 0x39, + 0x14, 0xBF, 0x0C, 0xE4, 0x68, 0x13, 0xB2, 0x2A, 0x0D, 0x2E, 0xA8, 0x53, + 0x46, 0x3D, 0xF5, 0xC6, 0x67, 0x8B, 0x2C, 0x50, 0x94, 0xD5, 0x4A, 0xB3, + 0xDA, 0xB0, 0x1F, 0xDD, 0x17, 0xED, 0xF9, 0xF5, 0xDB, 0x1F, 0x96, 0x33, + 0xE9, 0x81, 0x28, 0x86, 0x04, 0xAA, 0x0E, 0xEF, 0x8B, 0x6D, 0xE0, 0xA2, + 0x26, 0x34, 0xFF, 0x6D, 0xFE, 0x57, 0xB1, 0x0A, 0xE7, 0xE5, 0x7D, 0xD4, + 0x13, 0xEF, 0xC8, 0xDC, 0xFE, 0xFA, 0x0A, 0xF7, 0x34, 0x75, 0x37, 0xDC, + 0xA3, 0x96, 0xDA, 0x18, 0x75, 0xA3, 0x2D, 0x93, 0xD4, 0x2F, 0xD7, 0xDE, + 0x4B, 0xA2, 0x9C, 0x6A, 0x15, 0x36, 0xC5, 0x1F, 0x69, 0x82, 0x0C, 0x65, + 0x8C, 0x5E, 0x96, 0x07, 0xF7, 0x5D, 0x7B, 0x22, 0x7C, 0xAB, 0x0D, 0x91, + 0xD7, 0xAC, 0xB4, 0x9F, 0x46, 0x82, 0x81, 0xF8, 0xCC, 0xA6, 0x88, 0x6D, + 0xEA, 0x36, 0xB3, 0x0B, 0xA7, 0xC8, 0xB6, 0xBD, 0xC8, 0x74, 0x26, 0x09, + 0x57, 0xE4, 0xBD, 0x39, 0x86, 0xD9, 0xED, 0x2A, 0xA9, 0x77, 0x6B, 0xD3, + 0x77, 0xF9, 0x92, 0xEB, 0x1C, 0xF1, 0xB8, 0x97, 0xBD, 0x8E, 0xCB, 0xCB, + 0xF7, 0x1A, 0xBC, 0x12, 0x98, 0x79, 0x56, 0xD4, 0x0D, 0x31, 0xDE, 0xBF, + 0xB9, 0x12, 0x82, 0xA2, 0x69, 0x7A, 0x55, 0x23, 0x73, 0xF6, 0xF8, 0xA6, + 0x12, 0xCC, 0x51, 0x65, 0xD4, 0x00, 0xDF, 0x46, 0xA0, 0x37, 0xB8, 0x1C, + 0x39, 0xD8, 0x73, 0x66, 0xCB, 0x5F, 0xAE, 0x69, 0x3D, 0xFF, 0x9B, 0x13, + 0x33, 0xCF, 0xE0, 0x15, 0xD6, 0x78, 0x6B, 0xF1, 0x0F, 0x77, 0xEF, 0x33, + 0x64, 0x1C, 0xD8, 0x60, 0x2A, 0xC6, 0x62, 0xFB, 0xC9, 0x84, 0x10, 0xC2, + 0x76, 0x24, 0x4C, 0x6F, 0xAF, 0x23, 0x68, 0x3C, 0x71, 0xB1, 0x80, 0x71, + 0x0C, 0x86, 0xE0, 0x15, 0xBF, 0xC0, 0xAA, 0xB0, 0x18, 0x61, 0x48, 0x93, + 0xFD, 0xAD, 0xC8, 0xC4, 0x23, 0x18, 0x87, 0x21, 0x10, 0x55, 0x7A, 0x35, + 0xCC, 0x08, 0xBE, 0x2E, 0xE2, 0xA5, 0x99, 0xAB, 0x55, 0x90, 0x42, 0x19, + 0x6E, 0x62, 0x79, 0x4A, 0xE5, 0xE3, 0x70, 0xED, 0x91, 0x3F, 0x85, 0x02, + 0xB4, 0x0B, 0xF4, 0x84, 0x89, 0x6D, 0x95, 0xA4, 0x2A, 0x8A, 0x9E, 0x53, + 0xCE, 0x5D, 0xCA, 0xE7, 0x58, 0xB2, 0xB0, 0x40, 0x15, 0x5B, 0xA8, 0x79, + 0x02, 0xB5, 0x0F, 0xCA, 0x19, 0x8A, 0x3F, 0x2B, 0xA4, 0xE8, 0x66, 0x1D, + 0x70, 0x95, 0xF7, 0xE7, 0x4B, 0x1B, 0x37, 0x18, 0xFB, 0x4F, 0xEF, 0x93, + 0xDE, 0xCB, 0x2F, 0x5E, 0xD3, 0xA4, 0x56, 0x95, 0xA7, 0x0F, 0x89, 0xB8, + 0xE2, 0xC5, 0x35, 0xE0, 0x88, 0xD4, 0x30, 0x05, 0x56, 0xCC, 0x9F, 0x6B, + 0x58, 0xA3, 0x12, 0x98, 0x91, 0x99, 0xD8, 0x9B, 0x10, 0xFA, 0xF5, 0x58, + 0xD6, 0xD1, 0x7A, 0xBF, 0x16, 0x6E, 0x45, 0x74, 0xF1, 0x7A, 0xC5, 0x08, + 0x35, 0x5E, 0xB2, 0x89, 0x93, 0xFA, 0x30, 0xE0, 0x13, 0x94, 0xA1, 0x45, + 0xDF, 0x24, 0x59, 0x3B, 0xE7, 0xBA, 0x15, 0x5E, 0x32, 0x49, 0x37, 0x25, + 0xC2, 0x32, 0x07, 0x05, 0x5D, 0x35, 0x9C, 0x8E, 0x8A, 0x53, 0x56, 0xF7, + 0x53, 0xCD, 0xE5, 0x9D, 0xEF, 0x1E, 0x49, 0xC3, 0x24, 0x67, 0x96, 0x1C, + 0x94, 0xDF, 0x8F, 0x98, 0x1F, 0x8A, 0xF6, 0x8E, 0x8F, 0xED, 0xFD, 0xEE, + 0x4E, 0xBC, 0x00, 0xE8, 0x95, 0x53, 0xEF, 0x11, 0xD6, 0x65, 0xD0, 0x52, + 0xDC, 0x08, 0x7C, 0xB0, 0x32, 0x01, 0xBF, 0xB3, 0x1D, 0x0F, 0x62, 0x32, + 0xA3, 0x7D, 0x18, 0x9E, 0x9E, 0x19, 0x9B, 0xF6, 0x68, 0xFF, 0x63, 0xB3, + 0x97, 0x61, 0xD6, 0x31, 0xFF, 0x42, 0x7A, 0xE8, 0xCA, 0x87, 0xFA, 0xD7, + 0xF0, 0x6C, 0x3C, 0x13, 0x6B, 0x3E, 0x31, 0x10, 0xA9, 0x55, 0x46, 0x64, + 0xAA, 0xF6, 0xA0, 0x3A, 0x16, 0x28, 0xBE, 0x71, 0xDE, 0xE0, 0x44, 0x78, + 0x5B, 0xE6, 0xF6, 0xAB, 0x2F, 0x9B, 0xE7, 0x61, 0x0A, 0xA4, 0x04, 0x2D, + 0xFD, 0xFB, 0x2E, 0x5D, 0xD7, 0x36, 0xC8, 0x30, 0xA8, 0x93, 0xD8, 0x17, + 0x4F, 0x8F, 0x4D, 0x8C, 0x98, 0x57, 0x8C, 0x6F, 0x46, 0x57, 0xA0, 0x4A, + 0x1A, 0xDB, 0xE7, 0x3F, 0x96, 0xC7, 0x56, 0x41, 0x0D, 0x55, 0x5B, 0x3F, + 0x67, 0xD2, 0xAB, 0xEC, 0x4A, 0x66, 0x67, 0x9A, 0xF2, 0x2D, 0x63, 0xC4, + 0xB6, 0x50, 0x86, 0xB7, 0x70, 0xAA, 0x19, 0x05, 0x9A, 0xA5, 0x3E, 0x7B, + 0x89, 0x64, 0xF9, 0x97, 0x0C, 0xDB, 0x3D, 0x99, 0x92, 0xF0, 0x9A, 0x5C, + 0x63, 0x46, 0x6E, 0x57, 0x15, 0xF2, 0xC1, 0x24, 0x09, 0xB0, 0x94, 0xB6, + 0x22, 0xA0, 0x23, 0x32, 0x53, 0x9B, 0x24, 0x4B, 0xC7, 0x83, 0x6D, 0xA9, + 0xDB, 0x1E, 0x1A, 0xBD, 0x56, 0xB7, 0x13, 0xD8, 0x92, 0x2E, 0x0C, 0x17, + 0xA5, 0xEF, 0x4B, 0x53, 0x36, 0xC9, 0xC4, 0xE8, 0xFA, 0x4D, 0xD8, 0xA1, + 0x81, 0xE5, 0x9C, 0xE8, 0x65, 0x62, 0xEF, 0x65, 0xA6, 0xA9, 0x1C, 0xBA, + 0x33, 0xE2, 0x3F, 0xE7, 0xB7, 0xD6, 0x1A, 0x07, 0xBE, 0x5D, 0xF6, 0x5C, + 0x3E, 0xC4, 0x40, 0xF7, 0x3F, 0x8A, 0xE0, 0x77, 0xC0, 0x61, 0x73, 0x86, + 0x26, 0x2D, 0x71, 0x54, 0x51, 0xE5, 0x57, 0x5E, 0xB7, 0x46, 0x57, 0x2A, + 0xD3, 0x22, 0x90, 0x2E, 0x3E, 0x75, 0xF8, 0x87, 0xB1, 0xD2, 0x29, 0xC2, + 0xDD, 0x93, 0x94, 0xD2, 0x5E, 0xAC, 0xCC, 0x90, 0xD2, 0xD8, 0x2E, 0xD3, + 0x9B, 0xE5, 0x10, 0x5B, 0xE5, 0x7F, 0x8E, 0x34, 0x64, 0x97, 0xB9, 0xA0, + 0x7E, 0xD9, 0x0E, 0x7F, 0xB4, 0x6B, 0x0C, 0xE7, 0x31, 0xA4, 0x35, 0x46, + 0x82, 0x7B, 0xDB, 0x6F, 0x0C, 0x7D, 0xE7, 0x21, 0x37, 0x10, 0x54, 0x03, + 0x0E, 0x83, 0x77, 0xCB, 0xD9, 0xBB, 0x23, 0x87, 0xF3, 0xA0, 0x68, 0x06, + 0x67, 0xF0, 0x0A, 0x6B, 0xE5, 0x98, 0x05, 0x06, 0xB1, 0xDC, 0xB7, 0xE8, + 0xDC, 0x7B, 0x2D, 0x9A, 0xF7, 0x1E, 0x53, 0xBE, 0xBB, 0x9D, 0x90, 0xD0, + 0x80, 0xA3, 0x02, 0x53, 0xDD, 0x3B, 0x97, 0xF2, 0xC9, 0x1A, 0x5A, 0xAB, + 0x9F, 0x53, 0xFB, 0xED, 0x1C, 0x44, 0xEA, 0x13, 0xE6, 0xFF, 0x03, 0xB1, + 0xAB, 0x21, 0x94, 0x7A, 0x58, 0x5F, 0x2E, 0x0C, 0xFF, 0xC1, 0x6A, 0xA8, + 0xD6, 0xE3, 0x11, 0xC6, 0x9C, 0x88, 0xE5, 0xEB, 0x90, 0x50, 0x6F, 0x34, + 0x59, 0x63, 0xD6, 0xAC, 0xFB, 0x1C, 0x70, 0xEC, 0x7E, 0x50, 0xA6, 0xD3, + 0x7E, 0xF5, 0x98, 0x4B, 0x26, 0xEE, 0x0B, 0xB4, 0x04, 0xF6, 0x72, 0x77, + 0x4A, 0x72, 0x70, 0xE3, 0x8B, 0xE2, 0x55, 0xD2, 0x31, 0x39, 0xF8, 0xB6, + 0x8D, 0x97, 0x57, 0x54, 0xAE, 0x02, 0xC8, 0x00, 0x65, 0x49, 0xF7, 0xF2, + 0x88, 0xD1, 0x07, 0x46, 0x58, 0x7A, 0x52, 0x66, 0x32, 0xE4, 0xF4, 0x4B, + 0xD8, 0xFA, 0xFB, 0x1D, 0xF5, 0xAF, 0x61, 0x60, 0x52, 0x4D, 0x87, 0xC3, + 0xBB, 0x71, 0x60, 0x42, 0x1D, 0xA3, 0x8C, 0x59, 0xF3, 0x48, 0xB7, 0x9D, + 0x7E, 0xE3, 0xC5, 0x91, 0x20, 0xDE, 0x82, 0xFD, 0xA3, 0xDE, 0xFF, 0x0B, + 0x12, 0x6C, 0x9A, 0xD4, 0x37, 0x97, 0xA1, 0x10, 0x2C, 0x1A, 0x84, 0x1A, + 0x65, 0xE0, 0xBB, 0xED, 0x31, 0xD9, 0x9E, 0x63, 0x48, 0x3F, 0x73, 0xCD, + 0x9D, 0x9C, 0x1A, 0x89, 0x01, 0x89, 0x95, 0xA0, 0x01, 0xFF, 0x15, 0x2E, + 0xFD, 0x5B, 0xB7, 0x56, 0x54, 0x9B, 0x1A, 0xD9, 0xD8, 0x6B, 0x4D, 0x2B, + 0xEE, 0x65, 0x82, 0xF4, 0x18, 0xC0, 0x8F, 0x92, 0x0F, 0xA9, 0x85, 0x36, + 0xE0, 0xFF, 0x5C, 0x67, 0xBC, 0x1C, 0x4C, 0x04, 0x00, 0x1A, 0xFF, 0x33, + 0xF3, 0x3C, 0xB9, 0x01, 0x85, 0xF5, 0x9C, 0x42, 0x48, 0x98, 0xD1, 0x1C, + 0x12, 0x12, 0x36, 0x69, 0x9F, 0x00, 0x9D, 0x91, 0x55, 0xF2, 0x3B, 0x3C, + 0x65, 0x1F, 0x08, 0x56, 0x48, 0x57, 0x6B, 0xE3, 0x88, 0xED, 0x2A, 0x13, + 0x48, 0xC4, 0x2C, 0xD5, 0x46, 0x54, 0x8A, 0xBC, 0x1C, 0x4B, 0xCF, 0x27, + 0x88, 0xC9, 0x74, 0xCF, 0xD5, 0x82, 0x76, 0x57, 0x76, 0x83, 0x2C, 0xA6, + 0x4E, 0xD6, 0xEB, 0xD0, 0xEB, 0x8C, 0x0D, 0x04, 0xD6, 0xAD, 0x88, 0xE3, + 0x7C, 0x3C, 0x9C, 0xB1, 0xCA, 0x4E, 0xEF, 0x8A, 0x57, 0x3B, 0x6C, 0x68, + 0x2C, 0xEE, 0xA9, 0xEA, 0x71, 0xBB, 0x84, 0x2A, 0xCF, 0x68, 0xBE, 0x7F, + 0x16, 0x77, 0x4A, 0x6D, 0x2F, 0x9B, 0x23, 0xA7, 0x65, 0x1D, 0x3A, 0x43, + 0xE1, 0xEA, 0xF8, 0x0B, 0x4E, 0xA7, 0x6A, 0x9C, 0x68, 0x65, 0x80, 0x34, + 0xBF, 0x92, 0x35, 0x52, 0x47, 0xA3, 0xD1, 0x19, 0x54, 0xD4, 0x61, 0xB2, + 0x59, 0xCB, 0x98, 0x01, 0x2A, 0x03, 0xA3, 0x26, 0x13, 0xF4, 0x8D, 0x2E, + 0xA5, 0xF5, 0x89, 0xA1, 0x27, 0x5F, 0x08, 0x9E, 0xDF, 0x24, 0xB6, 0x1F, + 0x88, 0x0F, 0xA9, 0xA7, 0x3F, 0x8B, 0x14, 0xD6, 0xAE, 0x50, 0x43, 0x73, + 0x7F, 0xE5, 0x47, 0xFA, 0xF6, 0xA8, 0xC6, 0x85, 0x03, 0x20, 0x5C, 0x91, + 0x13, 0xB4, 0xDF, 0xD0, 0xDE, 0xD5, 0xA3, 0x7A, 0x6F, 0x85, 0xE4, 0x92, + 0x9B, 0xED, 0x3D, 0xE9, 0x03, 0x08, 0x45, 0x21, 0x12, 0x0E, 0x5A, 0xEB, + 0x12, 0xDF, 0x07, 0x71, 0xD4, 0x96, 0x06, 0x0A, 0xCA, 0xA5, 0x2D, 0x7C, + 0x6D, 0xC8, 0x23, 0xAD, 0xB9, 0x7C, 0xCB, 0x0A, 0xEA, 0x29, 0x77, 0x8C, + 0x5E, 0x9D, 0xE2, 0x64, 0xFE, 0x41, 0x89, 0x3A, 0xEA, 0x26, 0x6F, 0x2C, + 0x1C, 0x73, 0x72, 0x9A, 0xA7, 0x46, 0x69, 0xC6, 0x4D, 0x0B, 0x7F, 0x30, + 0x33, 0x1C, 0x73, 0x8D, 0x46, 0xC0, 0xA2, 0xD6, 0x4C, 0x8E, 0x99, 0xB2, + 0x0D, 0xC8, 0xD6, 0x41, 0x05, 0xAE, 0x29, 0xB2, 0xEE, 0x1C, 0x58, 0x2E, + 0xBB, 0xE3, 0xC1, 0x79, 0x40, 0x3F, 0xA7, 0x15, 0xC9, 0xBB, 0xA7, 0xE4, + 0xAF, 0x7E, 0xB3, 0x43, 0x5F, 0xF8, 0xD0, 0x78, 0x01, 0x68, 0x46, 0xFA, + 0x82, 0x03, 0x77, 0x72, 0x21, 0x9A, 0x51, 0x1D, 0x5D, 0xB5, 0xC5, 0x29, + 0x5D, 0x75, 0xC6, 0x3B, 0x6B, 0x68, 0x7B, 0x6F, 0xF3, 0xD2, 0x9D, 0xE4, + 0x8E, 0x69, 0xA2, 0x63, 0x8B, 0xEE, 0xFF, 0xB5, 0x1A, 0xBF, 0xFE, 0xFD, + 0x59, 0x18, 0x4D, 0xFC, 0x86, 0xEB, 0x9A, 0xBF, 0x52, 0xC7, 0x4B, 0x77, + 0x15, 0x2A, 0xF7, 0x20, 0x37, 0xFE, 0x70, 0x43, 0xE7, 0x26, 0x91, 0xC9, + 0xF8, 0x17, 0xA3, 0x96, 0xAD, 0x52, 0xFC, 0x42, 0xCB, 0x0D, 0x2D, 0x16, + 0xC7, 0x23, 0xE2, 0x1A, 0x54, 0x8D, 0xF1, 0xAD, 0x1F, 0xAB, 0x7A, 0x10, + 0x72, 0x2D, 0x3A, 0xD6, 0xF4, 0x93, 0x50, 0x5F, 0xF0, 0x90, 0xD0, 0x5D, + 0xE6, 0xC7, 0x8C, 0x22, 0xA8, 0xAE, 0x9A, 0x87, 0x35, 0x4D, 0x1D, 0x66, + 0x2C, 0x2C, 0x4C, 0x6F, 0x8F, 0x6B, 0x10, 0xE9, 0x66, 0xB2, 0xA6, 0xE9, + 0x92, 0xCF, 0xC7, 0x6A, 0x87, 0xA3, 0x5F, 0x13, 0x1A, 0x36, 0x69, 0x6A, + 0x94, 0xA4, 0xCA, 0xB8, 0xB2, 0xD1, 0xFC, 0x97, 0x62, 0x14, 0x50, 0x2B, + 0xD6, 0xEA, 0x9B, 0xDC, 0xE2, 0xD6, 0xC9, 0x17, 0x7B, 0xD7, 0xAF, 0x0E, + 0x62, 0x66, 0x5E, 0x67, 0x58, 0xE4, 0x09, 0x68, 0x63, 0x26, 0xF0, 0x23, + 0x3A, 0x18, 0xAE, 0x4E, 0xAE, 0x03, 0x6D, 0xA0, 0xBA, 0xB4, 0xE5, 0x20, + 0x0B, 0x8B, 0xB0, 0x0E, 0xC1, 0x09, 0x5F, 0xAA, 0xD7, 0x2B, 0xD2, 0x3E, + 0xCD, 0xE6, 0xBE, 0xFE, 0x11, 0x11, 0x4B, 0x55, 0x01, 0xEF, 0x0C, 0xFF, + 0xF4, 0x4A, 0xBC, 0x87, 0x0F, 0x76, 0x73, 0x5E, 0xCD, 0x4B, 0x3D, 0xA9, + 0xAF, 0x3E, 0x96, 0x8D, 0x49, 0xDC, 0x16, 0x18, 0x76, 0x8C, 0x93, 0xB2, + 0x6F, 0x72, 0x8F, 0xE0, 0xBD, 0xF5, 0xFA, 0x01, 0xEF, 0x2F, 0x47, 0xD9, + 0x6C, 0xAE, 0xE2, 0x37, 0xA2, 0x45, 0x1F, 0xFB, 0xA2, 0xB4, 0xAF, 0x74, + 0xFC, 0xE3, 0x6A, 0xC8, 0x4C, 0x9E, 0xAA, 0xFE, 0x86, 0x23, 0xE7, 0xFD, + 0x51, 0x32, 0x25, 0xAE, 0x57, 0xAB, 0xE2, 0x44, 0xEE, 0x6A, 0x1B, 0x61, + 0x0F, 0x0E, 0x8C, 0xA0, 0x87, 0x1B, 0x5F, 0x66, 0x2E, 0x97, 0x11, 0x29, + 0xBD, 0x7D, 0xD9, 0x40, 0x92, 0x7B, 0xF8, 0x1D, 0xCB, 0x97, 0xE8, 0x7B, + 0xE8, 0x5C, 0x07, 0x61, 0x19, 0xD6, 0xEE, 0x99, 0xD1, 0xBE, 0x36, 0x1F, + 0x42, 0xF7, 0x33, 0x94, 0x01, 0xA4, 0xE0, 0x0C, 0x99, 0x1F, 0x21, 0x31, + 0x5A, 0xF9, 0xA1, 0x98, 0xFD, 0x85, 0x44, 0xBB, 0x82, 0xB7, 0x9D, 0xE9, + 0x4F, 0x4A, 0xD9, 0xBC, 0x8D, 0xDD, 0x2E, 0xF6, 0x75, 0x38, 0xC0, 0x12, + 0x36, 0xA8, 0x1F, 0x57, 0x37, 0x9F, 0x64, 0xB3, 0xF3, 0xFA, 0x5B, 0xA9, + 0x81, 0x8B, 0x5E, 0x25, 0x34, 0x38, 0x28, 0x74, 0x4E, 0x58, 0xA1, 0x6C, + 0xC2, 0x57, 0x58, 0x40, 0x22, 0x3E, 0xE8, 0x48, 0xBA, 0x6F, 0x4F, 0xC9, + 0xC5, 0x06, 0x4D, 0x12, 0xDC, 0x48, 0x68, 0xDB, 0xC2, 0x6A, 0x20, 0xA2, + 0x99, 0x4E, 0x08, 0x05, 0xB2, 0x8E, 0xB1, 0x61, 0x2E, 0x25, 0x67, 0x27, + 0x69, 0xB9, 0x04, 0xDB, 0x3A, 0x73, 0xEC, 0xA0, 0xB7, 0x73, 0x88, 0x7E, + 0x25, 0x4B, 0x33, 0x3B, 0xAC, 0x7F, 0x11, 0x12, 0x3A, 0x49, 0xB5, 0x3A, + 0x36, 0x39, 0xD3, 0xCA, 0x02, 0xA0, 0xE4, 0xD8, 0x12, 0x5C, 0x98, 0x29, + 0x57, 0x69, 0x39, 0x8E, 0x35, 0x12, 0x07, 0x83, 0xFE, 0x77, 0xD8, 0x30, + 0xB4, 0x34, 0xD2, 0xE6, 0xB1, 0x9A, 0xFF, 0xAC, 0xFC, 0x0D, 0x3B, 0x8A, + 0x18, 0x1F, 0xF4, 0xE8, 0xBF, 0xE8, 0xE4, 0x26, 0xE5, 0x07, 0xB0, 0xB2, + 0x2B, 0xCB, 0x14, 0xFA, 0x53, 0x39, 0x64, 0x43, 0xCB, 0x3D, 0xFC, 0x61, + 0x90, 0x3A, 0xF6, 0xE8, 0x7B, 0x13, 0xCD, 0x6E, 0xA9, 0xA5, 0x66, 0xD0, + 0x9E, 0xE2, 0x50, 0xC6, 0xCF, 0xFC, 0x03, 0xB1, 0xD5, 0x7D, 0x0A, 0x62, + 0x7F, 0xE2, 0x3D, 0x9F, 0x0F, 0x9F, 0x29, 0x99, 0x65, 0x13, 0x69, 0xF2, + 0x85, 0x58, 0x07, 0x1D, 0x00, 0x66, 0x9D, 0x4B, 0xA8, 0xC9, 0x07, 0x1A, + 0x8F, 0x3E, 0xD7, 0x81, 0xA6, 0xDB, 0xE9, 0x32, 0xB3, 0xD4, 0x29, 0x6D, + 0xB8, 0xBA, 0x41, 0x0F, 0x51, 0xCB, 0x50, 0x74, 0x48, 0x07, 0x97, 0x27, + 0xC9, 0x23, 0x3C, 0xBD, 0x5B, 0x0F, 0x46, 0x04, 0x38, 0xB5, 0xC0, 0xB6, + 0x20, 0x03, 0xFA, 0x56, 0x52, 0x9E, 0x27, 0xAC, 0xF1, 0xE7, 0x32, 0x25, + 0x72, 0xFC, 0xAB, 0xE5, 0x1F, 0xF0, 0x55, 0x7D, 0xED, 0xB8, 0x28, 0x96, + 0x47, 0xED, 0x86, 0x45, 0xC9, 0xBA, 0xD1, 0xF6, 0xFA, 0xFC, 0xC6, 0xF6, + 0x67, 0x45, 0xC4, 0xA9, 0x25, 0xDE, 0xC7, 0x3F, 0x8A, 0xD8, 0x31, 0x3C, + 0xB6, 0xE4, 0x0D, 0x7B, 0xBE, 0x89, 0x5A, 0x69, 0x80, 0xEB, 0x62, 0xDE, + 0xAF, 0x02, 0x6E, 0xD1, 0x4B, 0x2C, 0x7B, 0xCD, 0x4D, 0xF1, 0xDF, 0x58, + 0x82, 0xD0, 0xE6, 0x6F, 0xB7, 0x45, 0x8E, 0xDF, 0xE6, 0x30, 0x84, 0xC4, + 0x5D, 0x26, 0xC0, 0x4C, 0x39, 0xC5, 0x2C, 0x99, 0x34, 0x13, 0xF5, 0x32, + 0xA3, 0xEE, 0xCF, 0x54, 0x5C, 0x58, 0x2B, 0x5D, 0x54, 0xEF, 0xFA, 0x11, + 0xC4, 0xBB, 0x1F, 0x34, 0x7C, 0xE6, 0x2F, 0xE4, 0xA9, 0xD3, 0x95, 0x8B, + 0x58, 0xC7, 0xB5, 0xE2, 0x27, 0xCE, 0xF0, 0xF8, 0xD1, 0x9E, 0x0F, 0x88, + 0x93, 0x3D, 0x90, 0x0D, 0x15, 0x9A, 0xC3, 0xEA, 0x91, 0xF5, 0xF6, 0xE4, + 0x3E, 0x89, 0x01, 0x8A, 0x4E, 0x6F, 0xE3, 0x21, 0xB1, 0x93, 0x04, 0x36, + 0x30, 0x22, 0x7B, 0x92, 0x7F, 0xCF, 0x06, 0x6B, 0xA5, 0x60, 0x8E, 0x15, + 0x77, 0x8F, 0x7E, 0x9E, 0xB1, 0xE6, 0xFA, 0x30, 0x4D, 0xD1, 0xC7, 0x20, + 0xEA, 0xAF, 0xD5, 0xB2, 0x58, 0xD3, 0xAA, 0x74, 0xBC, 0xDD, 0x10, 0x6F, + 0x54, 0xFF, 0x15, 0xD4, 0xB0, 0x20, 0xD5, 0xDC, 0xF3, 0x89, 0x28, 0x04, + 0x4C, 0x69, 0x7E, 0xE9, 0xBF, 0xE5, 0x83, 0x33, 0x81, 0x69, 0xE4, 0xB8, + 0x46, 0xD8, 0x26, 0x24, 0x51, 0xEE, 0x5B, 0x1D, 0x8E, 0xA0, 0x2B, 0xA2, + 0xD6, 0x6B, 0x4C, 0x7F, 0xA3, 0xDA, 0xDF, 0x64, 0x4B, 0x79, 0xF8, 0xEA, + 0x0D, 0x53, 0x20, 0xB6, 0x67, 0xE4, 0x9F, 0xB5, 0xB6, 0x63, 0x1D, 0x6E, + 0xDA, 0x91, 0x1C, 0x9C, 0xE1, 0x96, 0x0D, 0x67, 0xD4, 0xFE, 0xE9, 0x80, + 0xEA, 0x43, 0xF3, 0x6C, 0x7F, 0x9D, 0x1E, 0xCB, 0x9A, 0xB0, 0x29, 0x60, + 0x68, 0x8C, 0xB9, 0x1B, 0x23, 0x8E, 0x87, 0xBD, 0x27, 0x1A, 0x93, 0xCB, + 0xD5, 0x3B, 0x8F, 0x9B, 0xF7, 0x5F, 0xF8, 0x5D, 0xA0, 0x90, 0xC8, 0xEC, + 0xDB, 0x2E, 0xCC, 0xBB, 0xDA, 0x4A, 0x8E, 0x7E, 0xD9, 0x80, 0xC9, 0x7C, + 0xEA, 0x17, 0x31, 0x51, 0x0E, 0xB0, 0x3E, 0xC2, 0x45, 0x40, 0x70, 0x7B, + 0xA4, 0x1B, 0x26, 0x9C, 0xC4, 0x35, 0x38, 0x24, 0x21, 0x6A, 0x33, 0x57, + 0x10, 0x7B, 0xE1, 0x00, 0x51, 0x24, 0x22, 0x46, 0xC1, 0x95, 0x0F, 0x9C, + 0xC1, 0x38, 0x48, 0xD5, 0x19, 0x09, 0x75, 0xBA, 0x85, 0x8A, 0x7B, 0x55, + 0xD5, 0x8C, 0xD3, 0x51, 0x4D, 0x9B, 0x49, 0xCD, 0xA4, 0xCB, 0x14, 0x11, + 0xBF, 0x78, 0x52, 0xB1, 0x58, 0x28, 0x50, 0x9B, 0x81, 0x9C, 0xB4, 0x6D, + 0xD1, 0xE4, 0x67, 0xED, 0x13, 0x47, 0xE9, 0xC4, 0xDE, 0xB2, 0xC2, 0x38, + 0x06, 0x58, 0x40, 0x20, 0x85, 0x80, 0x81, 0xF2, 0x7A, 0xCF, 0xFC, 0x22, + 0x31, 0x27, 0x31, 0x0A, 0x3C, 0xF5, 0xAE, 0xBE, 0x8D, 0xDD, 0x94, 0x80, + 0x25, 0x73, 0xC5, 0xFD, 0xEB, 0xFA, 0x0C, 0xA8, 0x25, 0x2D, 0xD5, 0x48, + 0xF3, 0x48, 0x59, 0x84, 0x4C, 0x71, 0x8D, 0x28, 0xA1, 0x7A, 0x19, 0xF7, + 0x45, 0xAA, 0x83, 0x15, 0xEA, 0x40, 0x8F, 0x0F, 0x90, 0xEF, 0x1F, 0x4E, + 0x81, 0xAB, 0xEB, 0x03, 0x4F, 0xD4, 0x59, 0xC5, 0xFB, 0x1E, 0xFA, 0x3E, + 0x44, 0xB5, 0x48, 0xE2, 0x71, 0x88, 0x18, 0xF3, 0x73, 0x5F, 0xF3, 0x9B, + 0x7B, 0xBF, 0x18, 0x17, 0xEB, 0x48, 0x5A, 0x5C, 0xCE, 0x54, 0xDA, 0x84, + 0xE8, 0xDC, 0x9C, 0x03, 0xC1, 0xD6, 0x70, 0xBF, 0x5F, 0x3F, 0xC2, 0x3E, + 0x05, 0x73, 0x82, 0x2C, 0xB0, 0x19, 0xCF, 0xDC, 0x7D, 0xD8, 0xF4, 0x27, + 0x1B, 0xBE, 0x28, 0x9A, 0x0C, 0x22, 0x90, 0x94, 0x60, 0x5A, 0x30, 0x1A, + 0xBA, 0xD3, 0x2D, 0xEE, 0xFF, 0x1A, 0x7A, 0x4C, 0xC9, 0x7C, 0xB4, 0x4C, + 0xB1, 0x88, 0xB9, 0xF9, 0xFC, 0xE7, 0x62, 0x0F, 0x54, 0xBC, 0x7A, 0x4E, + 0xA6, 0xC6, 0x73, 0xE2, 0x4D, 0x49, 0x59, 0x8B, 0x2A, 0x69, 0x0A, 0x62, + 0x1D, 0xA4, 0x6B, 0x9C, 0x90, 0x80, 0x82, 0x02, 0x29, 0xBD, 0xF4, 0x04, + 0x3A, 0x52, 0x27, 0x85, 0x16, 0x81, 0xB5, 0xB9, 0x4E, 0xB5, 0xA4, 0xD7, + 0x3B, 0x22, 0x02, 0x71, 0x87, 0xF5, 0x42, 0x8D, 0x95, 0x13, 0xF2, 0xB5, + 0xD2, 0xDE, 0xC6, 0xC4, 0xD8, 0xB9, 0x09, 0x3D, 0x89, 0x7E, 0xFD, 0x71, + 0x96, 0x0B, 0x2C, 0xBF, 0xD2, 0xDC, 0x12, 0xE3, 0xE8, 0xD3, 0x4B, 0xE2, + 0xA8, 0x99, 0x7A, 0x0E, 0xAA, 0xD8, 0x89, 0x34, 0x6B, 0x8B, 0xF9, 0x56, + 0x12, 0x23, 0x5C, 0x80, 0xCC, 0x85, 0x13, 0x0D, 0x9F, 0x4D, 0xBA, 0xBB, + 0x66, 0xE4, 0x44, 0x6D, 0x37, 0xF2, 0x26, 0x57, 0x4C, 0x21, 0xE1, 0x99, + 0x96, 0xEE, 0x61, 0x80, 0xC3, 0x22, 0x51, 0x2A, 0xD8, 0x70, 0x4B, 0x10, + 0x0B, 0x03, 0xF9, 0x13, 0x72, 0x5E, 0xD8, 0x85, 0x81, 0x33, 0x66, 0x97, + 0x7D, 0xAC, 0x18, 0x08, 0xE8, 0x24, 0xC1, 0x6C, 0x5F, 0xD6, 0xA3, 0x99, + 0xC6, 0x50, 0x54, 0x61, 0x90, 0xF0, 0x3B, 0xBF, 0xF3, 0x12, 0x74, 0x8C, + 0x24, 0x38, 0xEB, 0xC5, 0x7A, 0xF1, 0x14, 0x33, 0x59, 0x8E, 0x57, 0x0F, + 0x66, 0xF7, 0x9C, 0xC2, 0xE5, 0x2A, 0x39, 0x88, 0xE6, 0x5F, 0x5C, 0x80, + 0xD9, 0xDB, 0x1D, 0x80, 0xF5, 0xCF, 0xA9, 0xFC, 0x2F, 0x81, 0x37, 0x11, + 0x90, 0x8D, 0x91, 0xD7, 0x7A, 0x76, 0x18, 0x31, 0x80, 0x97, 0xA1, 0x24, + 0xB2, 0x86, 0x7F, 0x01, 0x28, 0xB2, 0xA0, 0x78, 0x4F, 0x30, 0xCA, 0x37, + 0xC4, 0xFC, 0xCA, 0xC2, 0xC4, 0xE1, 0xD0, 0x62, 0x9E, 0x11, 0x00, 0x12, + 0x29, 0xD2, 0x1A, 0x5B, 0x7D, 0x50, 0x69, 0xBF, 0x32, 0xA3, 0xFF, 0x13, + 0x26, 0x30, 0x6D, 0xB7, 0xB2, 0x26, 0xAC, 0xE4, 0x74, 0x94, 0x92, 0xA0, + 0xFB, 0x8F, 0xF4, 0xB0, 0x9D, 0xAA, 0xA4, 0x00, 0x7F, 0x3B, 0xCC, 0xC9, + 0xD4, 0x67, 0xCA, 0xAD, 0xB7, 0xB8, 0xB9, 0xD4, 0x01, 0x27, 0x6C, 0x8E, + 0x8F, 0x16, 0x41, 0x13, 0xE5, 0xB5, 0x81, 0x3A, 0x29, 0x3C, 0x21, 0x16, + 0x3E, 0x49, 0x8B, 0x15, 0x59, 0x21, 0x8B, 0x14, 0xAB, 0x53, 0x58, 0x8A, + 0xC6, 0x02, 0x15, 0x41, 0x38, 0x9A, 0x25, 0x45, 0xBC, 0xF7, 0x84, 0x0B, + 0xD7, 0x2F, 0x98, 0x4D, 0xBA, 0x56, 0x9F, 0x3C, 0x0D, 0x86, 0x1F, 0xDC, + 0x40, 0x2D, 0x31, 0xA9, 0xB0, 0xBE, 0x84, 0x51, 0x58, 0xEC, 0x2F, 0xFB, + 0x4E, 0x36, 0x09, 0xAE, 0x5A, 0x7E, 0xAA, 0x1D, 0xFC, 0xF5, 0x91, 0x9A, + 0x28, 0xA2, 0x58, 0x3B, 0xB6, 0x9D, 0xB5, 0x12, 0xB7, 0x70, 0x7D, 0x64, + 0x52, 0xB3, 0xC4, 0x07, 0xFA, 0x3A, 0xAA, 0x85, 0xA4, 0x1A, 0x4E, 0x47, + 0xB0, 0xD0, 0x44, 0x75, 0x77, 0xA2, 0xFB, 0xB3, 0xE3, 0x27, 0x55, 0xD0, + 0x1F, 0x3C, 0x9E, 0x2A, 0xB9, 0x41, 0x1D, 0x50, 0x98, 0x7E, 0xE9, 0xC9, + 0xA7, 0x3C, 0x0B, 0xB1, 0x96, 0x74, 0xFC, 0xDB, 0xB6, 0x35, 0xAC, 0xD3, + 0x89, 0xCA, 0x3B, 0x79, 0x32, 0x81, 0x70, 0x5C, 0xEE, 0x35, 0x79, 0x55, + 0xDC, 0x77, 0x85, 0x01, 0x68, 0xE7, 0xA4, 0xB9, 0x9E, 0xDA, 0x55, 0xA1, + 0xDF, 0x9A, 0xF5, 0xEA, 0xF0, 0xE1, 0x4F, 0x59, 0xB4, 0x13, 0xD7, 0xAC, + 0x12, 0xF5, 0x06, 0xA2, 0x82, 0x01, 0xA1, 0xB5, 0x04, 0x9B, 0x00, 0x62, + 0x11, 0xEF, 0xF9, 0x82, 0x8E, 0x00, 0x4D, 0x0C, 0x16, 0x4C, 0x0C, 0x80, + 0xC7, 0x33, 0xCB, 0x0A, 0x43, 0xC3, 0x90, 0x47, 0x79, 0xCD, 0xEA, 0x96, + 0xDC, 0xDE, 0x7C, 0xB9, 0x1D, 0x0C, 0xB1, 0xBC, 0x0F, 0x8B, 0x76, 0xE5, + 0xBD, 0xD0, 0x59, 0x76, 0x08, 0x79, 0xE4, 0xF3, 0xE1, 0xB3, 0x12, 0xF1, + 0x94, 0x14, 0x79, 0xBF, 0xAC, 0x22, 0x4E, 0x57, 0x7B, 0xCB, 0x5B, 0xBF, + 0xE4, 0x9D, 0x16, 0x18, 0xA2, 0xB3, 0x2D, 0x04, 0x3A, 0x11, 0xC9, 0x18, + 0x6D, 0xCC, 0x99, 0xB5, 0xB5, 0x36, 0xF5, 0x49, 0x4B, 0xEC, 0x60, 0x3E, + 0x22, 0x9A, 0x73, 0x60, 0x91, 0x2F, 0x4F, 0x70, 0xB7, 0xA4, 0x48, 0x61, + 0xCB, 0x0D, 0x17, 0x84, 0x61, 0xF1, 0xAD, 0x7F, 0xEE, 0xEC, 0x72, 0x18, + 0x60, 0x6D, 0xAC, 0xEE, 0xDB, 0xC1, 0xC2, 0x81, 0xF1, 0x03, 0x74, 0xA2, + 0x5A, 0xA9, 0xC8, 0x0E, 0x52, 0x85, 0xDD, 0x1D, 0x12, 0xBE, 0x1C, 0xC4, + 0x58, 0x0F, 0x62, 0xEE, 0x17, 0xD4, 0xF5, 0x7F, 0xDB, 0xF4, 0x1B, 0xDF, + 0x2D, 0x18, 0x6D, 0x0B, 0x47, 0xDB, 0xFF, 0xAF, 0x70, 0xE6, 0xA1, 0x52, + 0x60, 0x9E, 0xFC, 0x83, 0xCC, 0x76, 0xB3, 0xAF, 0xED, 0x23, 0x21, 0xBB, + 0x7D, 0xBE, 0x7E, 0x59, 0x7F, 0x3A, 0x22, 0x10, 0x8F, 0x43, 0x4E, 0x65, + 0xC6, 0xBC, 0xEB, 0xE0, 0x63, 0x82, 0x78, 0xB8, 0xD5, 0xD0, 0xE7, 0xDA, + 0x44, 0xF2, 0x1A, 0xBD, 0x75, 0x46, 0xF7, 0x2A, 0xFE, 0x5F, 0x2A, 0x95, + 0xB3, 0x4F, 0x51, 0xC2, 0xD1, 0x24, 0xEA, 0x88, 0x06, 0x88, 0x8E, 0xCB, + 0x33, 0xA8, 0x71, 0xC3, 0x89, 0x4E, 0xD4, 0x25, 0xBC, 0x87, 0x1C, 0x05, + 0x87, 0x74, 0xF5, 0x99, 0x90, 0x58, 0xA1, 0x2E, 0x14, 0x13, 0x25, 0xD6, + 0xCB, 0x5C, 0xE5, 0xA8, 0x46, 0xA6, 0x71, 0x68, 0x72, 0x66, 0x48, 0xD8, + 0x92, 0x8F, 0x75, 0xAC, 0xB7, 0x14, 0x32, 0x42, 0xB9, 0x9D, 0x57, 0xF9, + 0xD2, 0x8E, 0x85, 0x27, 0x92, 0xA8, 0xCC, 0x1A, 0x26, 0x33, 0x76, 0x06, + 0x1A, 0xB6, 0x27, 0x56, 0x5D, 0x8E, 0xDC, 0x1F, 0xFC, 0xBA, 0x3F, 0x6A, + 0x67, 0xFF, 0x9B, 0x14, 0xFF, 0x90, 0xE7, 0x8E, 0xED, 0x2D, 0x8B, 0x5E, + 0x22, 0x84, 0xA2, 0x06, 0x8F, 0xFD, 0x25, 0x02, 0xFD, 0x3D, 0x92, 0x41, + 0xE5, 0x49, 0x2D, 0x43, 0x6A, 0x9B, 0x1E, 0xA5, 0x46, 0xC9, 0xA9, 0xDC, + 0x2D, 0x8E, 0x75, 0xE2, 0x1B, 0x8D, 0x8F, 0x23, 0x59, 0x2E, 0x21, 0x5D, + 0x3C, 0x0A, 0x41, 0xC5, 0x27, 0xD2, 0x76, 0x9A, 0xCA, 0x7D, 0xAC, 0x65, + 0x31, 0xC8, 0xAD, 0xB6, 0xBD, 0x19, 0x88, 0x08, 0x7A, 0x91, 0x74, 0xAD, + 0x23, 0x14, 0x60, 0xC3, 0x93, 0xCE, 0xF2, 0x10, 0xCF, 0xE3, 0xF1, 0xF7, + 0x3F, 0xD2, 0x1F, 0xD1, 0x91, 0x9B, 0x9C, 0xE9, 0xB9, 0xD7, 0xE5, 0xFA, + 0x8F, 0xAD, 0xB1, 0x95, 0x03, 0x28, 0xB4, 0x20, 0x46, 0xA2, 0xBD, 0x23, + 0x1A, 0x32, 0xB0, 0x23, 0x65, 0x54, 0x93, 0x87, 0x4F, 0xF1, 0x3A, 0xA7, + 0x8A, 0xD5, 0x0F, 0x59, 0xC7, 0xD6, 0x7E, 0xBE, 0x6B, 0xFB, 0x66, 0x8A, + 0x1E, 0x48, 0xD3, 0xCB, 0xC3, 0x78, 0xBC, 0x2A, 0x07, 0x57, 0x66, 0xD4, + 0x83, 0x95, 0xE1, 0x67, 0xDA, 0xE8, 0x0D, 0x68, 0x86, 0xE8, 0xF7, 0xBF, + 0x05, 0x4F, 0xB0, 0x41, 0x0C, 0xE6, 0x72, 0x9C, 0xB4, 0xBF, 0x93, 0x59, + 0xE5, 0x97, 0xAC, 0x7B, 0xB0, 0x93, 0x0E, 0xEC, 0xE6, 0xC2, 0xC1, 0x0E, + 0x06, 0x81, 0x69, 0xF6, 0x27, 0xE4, 0xCA, 0x2D, 0xE0, 0x76, 0x9E, 0x0A, + 0x03, 0xE3, 0x60, 0xD1, 0xAB, 0x4C, 0x63, 0xCC, 0x03, 0x7E, 0xBC, 0x4A, + 0x58, 0x74, 0x94, 0xEF, 0x96, 0xB7, 0x33, 0xE8, 0x80, 0x56, 0xBD, 0xEC, + 0x3F, 0xD6, 0x75, 0x6F, 0xF6, 0xFE, 0x85, 0x0B, 0x0A, 0x30, 0x30, 0xBE, + 0x0D, 0x7F, 0x5B, 0x15, 0xD2, 0x0B, 0x7D, 0xA3, 0x2B, 0xB7, 0xE7, 0xE9, + 0x17, 0x4C, 0x94, 0xE1, 0x70, 0xED, 0xF7, 0x40, 0x94, 0x3B, 0x3A, 0xCA, + 0xCE, 0xF5, 0xB2, 0xF3, 0x8A, 0x69, 0x61, 0x57, 0x5F, 0x64, 0xC5, 0xBC, + 0x0F, 0x78, 0x15, 0x9C, 0xF8, 0x30, 0x3A, 0xA4, 0xC2, 0xD8, 0x35, 0xA8, + 0x1B, 0xFA, 0x65, 0xAE, 0x78, 0x2A, 0x2B, 0x0E, 0x8C, 0xF7, 0x7E, 0x81, + 0x43, 0x0E, 0x15, 0x05, 0xC6, 0x76, 0x7B, 0x29, 0xA6, 0x26, 0xDE, 0xA0, + 0xF0, 0x38, 0x39, 0x8B, 0x33, 0x8D, 0x38, 0xD6, 0x84, 0x69, 0x55, 0xF6, + 0x5A, 0x6E, 0xBE, 0x7E, 0x18, 0x41, 0x4A, 0x4D, 0xF5, 0x7A, 0x86, 0x8B, + 0xCE, 0x48, 0xDD, 0xF5, 0x80, 0xEE, 0x57, 0x05, 0x99, 0x97, 0xA9, 0xCE, + 0x26, 0x68, 0x20, 0xA4, 0x9C, 0x84, 0x00, 0x88, 0x0A, 0x7F, 0x7B, 0x74, + 0x12, 0xE6, 0x60, 0xF7, 0xD9, 0xE7, 0xB4, 0x46, 0x59, 0x1A, 0x84, 0x1E, + 0x08, 0x20, 0x2E, 0x74, 0x51, 0xAE, 0x95, 0xD7, 0x77, 0x5A, 0x6A, 0x9B, + 0x0B, 0xFF, 0xB5, 0x5D, 0x65, 0xDC, 0x35, 0x6E, 0x00, 0xAF, 0x01, 0x73, + 0x41, 0x82, 0x92, 0x29, 0x9B, 0x67, 0x38, 0x86, 0xE4, 0x1A, 0x2A, 0xDA, + 0xBF, 0x23, 0xEC, 0x17, 0x97, 0x13, 0x1B, 0x32, 0x58, 0x31, 0x2F, 0x4E, + 0x6D, 0x8E, 0x39, 0x99, 0x7B, 0x9D, 0xEB, 0xBE, 0x47, 0xC5, 0x22, 0x81, + 0x64, 0xAE, 0x0B, 0x0D, 0xBC, 0x33, 0x6C, 0x0B, 0x30, 0xDE, 0xD0, 0xA4, + 0x8D, 0xB2, 0x9E, 0xFB, 0x02, 0x6C, 0xDC, 0xD3, 0x3E, 0xCF, 0xD6, 0x49, + 0x76, 0x22, 0xF2, 0x21, 0x76, 0x26, 0xDE, 0x32, 0x65, 0xAC, 0x1E, 0x68, + 0x2F, 0xC5, 0xF3, 0x78, 0x07, 0x15, 0x08, 0xAF, 0x74, 0xD0, 0x81, 0x13, + 0x45, 0xAB, 0x14, 0xD4, 0x59, 0x46, 0x24, 0x9F, 0x75, 0x12, 0x0E, 0xBB, + 0xDC, 0x6E, 0x4D, 0x44, 0xD3, 0x28, 0x2D, 0x64, 0xA8, 0xD6, 0x71, 0xE2, + 0xE0, 0x8B, 0xD2, 0xF4, 0xBD, 0xFC, 0x97, 0x30, 0x0C, 0xAC, 0x52, 0x3A, + 0x06, 0xE6, 0x3A, 0x24, 0x09, 0xF5, 0xEE, 0xDB, 0x6C, 0x0A, 0x34, 0xCC, + 0xF4, 0xEF, 0x97, 0x39, 0x4B, 0x0E, 0x51, 0xC4, 0x3F, 0x04, 0xC6, 0x79, + 0xFC, 0xFC, 0x2C, 0x66, 0x7C, 0x74, 0x9C, 0xF6, 0x42, 0x98, 0x57, 0xE2, + 0x78, 0x24, 0x72, 0x0A, 0xF2, 0x3B, 0x82, 0x22, 0xE6, 0x33, 0x80, 0xBC, + 0x9A, 0xF5, 0x0D, 0x59, 0x5D, 0xEC, 0x04, 0xD1, 0x63, 0x37, 0x61, 0xB6, + 0xBA, 0x30, 0x50, 0x1D, 0xC8, 0x3B, 0xF9, 0x41, 0xC1, 0x4A, 0x70, 0xEF, + 0x01, 0x8C, 0xFD, 0x8C, 0xCF, 0xE3, 0xE1, 0x00, 0x94, 0xA0, 0xB7, 0xE8, + 0xFA, 0xB9, 0x29, 0x36, 0xFD, 0x8B, 0x39, 0x86, 0x32, 0x48, 0xE6, 0xA1, + 0x3B, 0x2C, 0xB7, 0xDB, 0xF3, 0x81, 0xAA, 0x06, 0x45, 0x7F, 0x2F, 0x2B, + 0x82, 0xC7, 0xEB, 0x4A, 0x24, 0x35, 0x4F, 0x77, 0x9E, 0xCE, 0xF1, 0xDE, + 0x01, 0xCB, 0x43, 0x5B, 0x39, 0x3F, 0x48, 0xDF, 0xEB, 0x6E, 0x16, 0xFA, + 0x3B, 0x9D, 0x76, 0x7E, 0xEA, 0xB6, 0x1B, 0x49, 0x21, 0x35, 0x3C, 0xEC, + 0x9B, 0x22, 0x65, 0x23, 0x8C, 0x1C, 0xA5, 0xF2, 0xD9, 0xA1, 0x9C, 0xE0, + 0x5D, 0x9A, 0xFC, 0xE0, 0x6B, 0x78, 0x45, 0xEF, 0xBC, 0xCC, 0x8A, 0x7C, + 0xE0, 0x70, 0xDB, 0xD6, 0xB1, 0x9A, 0xB3, 0x9D, 0x45, 0x3B, 0x9D, 0xE0, + 0x23, 0x82, 0xF6, 0x9D, 0x6F, 0x0C, 0xF5, 0x7D, 0xB7, 0x41, 0x51, 0x4C, + 0x02, 0xB7, 0x8D, 0xB5, 0x30, 0x9F, 0xF8, 0xD7, 0x50, 0x72, 0xF8, 0xAD, + 0x2A, 0x54, 0x0F, 0xF9, 0x2D, 0x08, 0x1C, 0x32, 0x3C, 0xEE, 0xB3, 0x06, + 0x73, 0x2B, 0x27, 0xEC, 0x81, 0xB6, 0x73, 0xC2, 0xAE, 0xF0, 0xE0, 0x16, + 0x58, 0x55, 0x56, 0xC1, 0x0E, 0x89, 0xC2, 0xA7, 0xCA, 0xFD, 0x9A, 0x02, + 0xC6, 0xB7, 0x68, 0xBD, 0x10, 0xFF, 0x82, 0x81, 0x58, 0x77, 0x9F, 0x55, + 0x62, 0xC9, 0x80, 0xE9, 0x68, 0xE4, 0xBE, 0x8B, 0xDD, 0xAC, 0x28, 0xF8, + 0xE5, 0xC6, 0xC4, 0x6C, 0x77, 0xA3, 0x4F, 0xB4, 0x3F, 0xDC, 0x64, 0x70, + 0xF8, 0x32, 0x87, 0x19, 0x97, 0x2F, 0xEE, 0x04, 0xE1, 0x92, 0x4E, 0x73, + 0x28, 0x6F, 0x1B, 0x62, 0xCD, 0xD6, 0xD9, 0x7C, 0x6C, 0x5D, 0x09, 0x1F, + 0x9C, 0x0A, 0x72, 0x6D, 0xE7, 0x78, 0xA4, 0xA8, 0xEE, 0xF0, 0xA1, 0x3B, + 0x03, 0x9E, 0xDF, 0x19, 0x46, 0xD7, 0x0B, 0x8F, 0x1B, 0xCC, 0x9C, 0xD6, + 0x3A, 0xB6, 0x98, 0x42, 0x4C, 0x7C, 0xD4, 0x59, 0xC4, 0xBD, 0x86, 0x9E, + 0x79, 0x01, 0x05, 0x7C, 0xA7, 0xC4, 0xD5, 0xC4, 0xA4, 0xD7, 0xB2, 0x8A, + 0x15, 0x3C, 0x08, 0x12, 0xFF, 0x0E, 0xF1, 0x20, 0x9A, 0x5C, 0x57, 0x2A, + 0xDE, 0xF2, 0x21, 0xA7, 0xFB, 0xF2, 0xA7, 0xE9, 0x37, 0xA8, 0x73, 0x45, + 0xE8, 0xD4, 0xAC, 0x2F, 0x06, 0xC8, 0x6E, 0x04, 0xDE, 0xF7, 0xE2, 0xF6, + 0xD1, 0xA3, 0xC0, 0x7B, 0xD9, 0x77, 0xEF, 0x53, 0x74, 0xEA, 0xBE, 0x23, + 0xD2, 0x7E, 0xF0, 0xF0, 0x56, 0xAC, 0x95, 0x80, 0xF3, 0x53, 0xEE, 0x47, + 0x1D, 0x76, 0x30, 0x21, 0xC8, 0xAD, 0x46, 0x73, 0x8B, 0x1F, 0x4A, 0xB1, + 0x48, 0x4F, 0xE7, 0x3B, 0x92, 0xC0, 0xA7, 0x68, 0xF3, 0x53, 0xC7, 0xD4, + 0x51, 0xA8, 0xF6, 0xC9, 0x85, 0xAD, 0xBF, 0xB9, 0x6A, 0x31, 0x0E, 0x0C, + 0x7E, 0x64, 0x6F, 0x50, 0x99, 0x31, 0xE4, 0x13, 0xA6, 0xBF, 0xEA, 0xFF, + 0x09, 0x1A, 0xA7, 0xD8, 0xD6, 0x42, 0xA7, 0x62, 0x4F, 0xAC, 0x87, 0x4B, + 0xBA, 0xB7, 0xBE, 0x50, 0x5A, 0x09, 0x43, 0xD7, 0x4F, 0x9B, 0x27, 0x05, + 0x78, 0xEB, 0xB2, 0x16, 0x6C, 0xCA, 0x18, 0x41, 0x58, 0xF2, 0x24, 0xF9, + 0xED, 0xBB, 0xF6, 0x96, 0x2F, 0xF3, 0xCB, 0x4A, 0xE9, 0xF8, 0x25, 0x4A, + 0x6E, 0x8E, 0x32, 0xB6, 0x51, 0x17, 0x29, 0x98, 0x9B, 0x41, 0xE7, 0x23, + 0x80, 0xEA, 0x17, 0x84, 0xAB, 0xF1, 0x94, 0x81, 0xFE, 0xB4, 0x30, 0xA8, + 0xF8, 0x59, 0x33, 0x28, 0xAE, 0xF5, 0x24, 0x20, 0x7E, 0x78, 0x54, 0x7C, + 0xD5, 0xE9, 0xBA, 0xC1, 0x12, 0xA2, 0x71, 0xD6, 0x1D, 0x5E, 0xE2, 0x5B, + 0xF3, 0x26, 0xAA, 0x0B, 0x96, 0x68, 0x46, 0x63, 0x1D, 0x71, 0x38, 0x8C, + 0xB4, 0x29, 0x18, 0x92, 0x22, 0x6A, 0x0A, 0x67, 0x70, 0xC2, 0x14, 0xEC, + 0x4F, 0x0F, 0x3B, 0x43, 0x27, 0x6F, 0xF5, 0x1B, 0xE0, 0x7B, 0xEB, 0x35, + 0x3A, 0x6F, 0x7C, 0xA5, 0x9C, 0xBC, 0x17, 0x2D, 0xF5, 0xC0, 0x7D, 0x67, + 0xE2, 0xF1, 0x0D, 0x00, 0x04, 0xD4, 0x68, 0x9F, 0xB8, 0x48, 0xFE, 0xB6, + 0xA8, 0x6F, 0xFD, 0xCB, 0x34, 0x94, 0xFA, 0x2D, 0xFA, 0x46, 0x3E, 0x11, + 0x2D, 0xF5, 0xBB, 0x2B, 0xD2, 0x92, 0x92, 0x0E, 0x37, 0xEB, 0x7E, 0x84, + 0xF9, 0xFD, 0x3B, 0x22, 0xD3, 0xCD, 0xFC, 0x46, 0xEF, 0x21, 0x35, 0x91, + 0x19, 0xCF, 0x1F, 0xE0, 0xFE, 0x5C, 0x1A, 0x49, 0x38, 0x95, 0xE0, 0x40, + 0x1D, 0x4A, 0xB8, 0xB7, 0xBB, 0xB8, 0x52, 0x08, 0x37, 0x72, 0xE4, 0xF6, + 0xE8, 0x42, 0x0A, 0xAB, 0x1E, 0xF0, 0x74, 0x7B, 0xFB, 0x9E, 0x94, 0x4C, + 0x87, 0xF5, 0xEE, 0x0D, 0x9E, 0x07, 0x10, 0x79, 0x0C, 0x02, 0xA7, 0xE6, + 0x4A, 0xBF, 0xAB, 0xAD, 0x71, 0x5F, 0x31, 0xE1, 0xD5, 0x39, 0x1E, 0x72, + 0x53, 0x93, 0xA4, 0x38, 0xB4, 0x04, 0x79, 0xA3, 0x72, 0xCD, 0xBC, 0x29, + 0x3E, 0x9F, 0x63, 0xF4, 0x87, 0xB5, 0xB8, 0x99, 0xFC, 0x4E, 0x9D, 0xD2, + 0xD9, 0x6F, 0xD5, 0x16, 0x1D, 0x01, 0xF8, 0x43, 0x22, 0x6B, 0xF9, 0xF8, + 0xF8, 0x7E, 0x03, 0xD1, 0xF0, 0xC9, 0x8B, 0x97, 0x78, 0x12, 0xF1, 0xE8, + 0x23, 0x88, 0x53, 0xD3, 0x73, 0x8D, 0x8D, 0x5D, 0x64, 0x7F, 0xD8, 0x5E, + 0x15, 0xA6, 0x4E, 0x31, 0xE5, 0x8F, 0x1E, 0x7C, 0x8F, 0xC7, 0x60, 0x86, + 0x2B, 0x4F, 0x69, 0x0E, 0x2C, 0x39, 0x8B, 0xFC, 0xF4, 0x5C, 0xF4, 0x0A, + 0x63, 0x4E, 0xE5, 0xCA, 0x46, 0x6B, 0x15, 0xF3, 0x9B, 0x7E, 0xBB, 0xD9, + 0xA1, 0x87, 0x50, 0x36, 0x23, 0xEF, 0x37, 0x88, 0xE3, 0x89, 0xAB, 0x5F, + 0x0A, 0x07, 0xB4, 0x5F, 0xF8, 0x45, 0xBB, 0xE8, 0x12, 0x10, 0xE8, 0x95, + 0xB6, 0x13, 0xEF, 0x51, 0xA2, 0x24, 0x12, 0x7F, 0x6D, 0x05, 0x0E, 0x94, + 0xF9, 0x92, 0xB8, 0x2E, 0x64, 0x40, 0xDC, 0xDA, 0xDC, 0xDE, 0x82, 0x81, + 0x9C, 0xE0, 0x0A, 0x27, 0xC6, 0x06, 0xB5, 0x01, 0xBF, 0x36, 0x76, 0xF8, + 0xB1, 0xE5, 0x3C, 0x42, 0xC3, 0x07, 0xE7, 0xBD, 0xFC, 0x7B, 0xFD, 0x70, + 0x4C, 0x17, 0x8F, 0x21, 0x9B, 0xBA, 0x06, 0xFC, 0x34, 0x56, 0xDD, 0x23, + 0x7E, 0x2C, 0x8D, 0xF8, 0x99, 0xD6, 0x69, 0xDA, 0x75, 0x42, 0x84, 0x43, + 0xDB, 0x51, 0x12, 0xA0, 0x78, 0xEC, 0x95, 0x87, 0x86, 0x84, 0xC9, 0x21, + 0xEF, 0x8C, 0x0D, 0xEA, 0xBC, 0xE7, 0x5A, 0x23, 0x01, 0xB1, 0xBD, 0x6A, + 0x23, 0x49, 0x1C, 0x42, 0xED, 0x39, 0x5D, 0x26, 0xEF, 0x54, 0x36, 0x5E, + 0xE8, 0xA8, 0xB0, 0xC9, 0xF2, 0x39, 0xD0, 0x49, 0x10, 0x89, 0x2A, 0xF3, + 0x4F, 0x3B, 0x3F, 0xF3, 0x6F, 0x98, 0xC0, 0xA2, 0x37, 0xC5, 0x98, 0xCB, + 0x7A, 0xE6, 0x78, 0x11, 0x15, 0x97, 0x77, 0x7D, 0x34, 0xE5, 0x67, 0x61, + 0x8B, 0xC7, 0x2B, 0xA2, 0xE8, 0x67, 0x3F, 0xBA, 0xD6, 0xEC, 0xC1, 0x5B, + 0xF7, 0x4E, 0x70, 0xC3, 0x1A, 0x98, 0x20, 0x05, 0xBA, 0x2D, 0x2B, 0x79, + 0xB8, 0x10, 0xA3, 0x74, 0xC9, 0x50, 0xEC, 0x90, 0x3C, 0xA9, 0xF8, 0xF7, + 0xF9, 0x9F, 0xF9, 0xE1, 0x8E, 0x92, 0x40, 0xEE, 0x62, 0xCE, 0x36, 0x70, + 0x90, 0xAA, 0x3D, 0x17, 0xDF, 0x78, 0x8D, 0x49, 0xC1, 0x77, 0x9F, 0xF0, + 0xBC, 0x8A, 0xF6, 0x06, 0x90, 0xF5, 0x13, 0x51, 0xA7, 0x1B, 0xB8, 0x7B, + 0x15, 0xAE, 0xBA, 0x54, 0x90, 0xCA, 0x01, 0x0C, 0xB0, 0x82, 0xF1, 0xA6, + 0x36, 0x0E, 0x1F, 0x40, 0x38, 0x19, 0xE5, 0x3D, 0x22, 0x12, 0x0A, 0xB7, + 0x17, 0x5D, 0x47, 0x46, 0x85, 0xE9, 0x40, 0xC3, 0x90, 0x6D, 0xAE, 0xBE, + 0x95, 0xCA, 0xA1, 0x00, 0x47, 0x6C, 0x6E, 0xCE, 0xBF, 0xAB, 0x0A, 0x9B, + 0x73, 0x86, 0x4C, 0x64, 0x73, 0x7D, 0xF4, 0x01, 0xCF, 0x4F, 0x4F, 0xBD, + 0xFB, 0xC5, 0x37, 0xC1, 0x95, 0xAC, 0xCE, 0x58, 0x0A, 0x58, 0x26, 0x67, + 0xF2, 0x0B, 0x10, 0x13, 0xC5, 0x8D, 0x72, 0xAC, 0xCE, 0xC2, 0x7B, 0x74, + 0xB6, 0x4A, 0xB6, 0x0A, 0x8B, 0xD9, 0x27, 0x3A, 0x3D, 0x15, 0x42, 0xA4, + 0xF5, 0xC3, 0x04, 0x91, 0x64, 0x05, 0xF1, 0x44, 0x27, 0x9D, 0xBE, 0xB6, + 0x24, 0xDA, 0x68, 0x7B, 0xDB, 0x5C, 0xF7, 0x02, 0x72, 0xF4, 0xBC, 0x88, + 0xF6, 0x8A, 0xE1, 0x45, 0xE8, 0x9D, 0x06, 0x5F, 0x37, 0x61, 0xF5, 0xD4, + 0xE8, 0x37, 0xAA, 0xE7, 0x79, 0xAA, 0x7C, 0x21, 0x93, 0x0C, 0x66, 0x95, + 0x63, 0xE8, 0x25, 0xAD, 0xCB, 0xBD, 0x29, 0x96, 0x7A, 0x87, 0x76, 0x18, + 0xC4, 0x97, 0x74, 0x24, 0xF4, 0x00, 0x00, 0x0E, 0x7E, 0xB1, 0xAD, 0x5D, + 0xF1, 0x63, 0x3C, 0xF0, 0xA3, 0x21, 0x91, 0x04, 0x15, 0x5C, 0xCD, 0xEC, + 0xA3, 0xDC, 0x39, 0x7A, 0x85, 0x12, 0xFC, 0x4C, 0x7B, 0xF6, 0x01, 0x9D, + 0xBC, 0x64, 0x31, 0x27, 0xFB, 0x20, 0x69, 0xB2, 0x95, 0x8A, 0xB8, 0x53, + 0x15, 0x0D, 0xE8, 0x12, 0x44, 0xA5, 0x96, 0x91, 0x19, 0xA1, 0xB5, 0x77, + 0xA2, 0xD2, 0x91, 0x63, 0xB2, 0x3B, 0x8C, 0x29, 0x5A, 0x77, 0xCB, 0x9A, + 0x82, 0x17, 0x7C, 0xEB, 0x9A, 0x8D, 0x1D, 0x38, 0xFD, 0x0D, 0x33, 0x62, + 0xD3, 0xF1, 0x90, 0xA1, 0x41, 0x90, 0x85, 0x10, 0x28, 0x1C, 0x73, 0x77, + 0xD6, 0x64, 0xAE, 0xDE, 0x21, 0x5D, 0xE6, 0xD0, 0xBE, 0x59, 0xA8, 0x04, + 0xB1, 0xF1, 0x70, 0xA3, 0xDA, 0xD6, 0xB0, 0xBC, 0x7F, 0x3D, 0x60, 0x91, + 0x38, 0xA3, 0xC9, 0xC1, 0xBE, 0xA0, 0xD6, 0x4A, 0x8E, 0x33, 0xF6, 0x1A, + 0x99, 0x20, 0xBF, 0xFC, 0x38, 0x9F, 0xD6, 0x66, 0x6A, 0x61, 0xF7, 0xB0, + 0x09, 0xC3, 0xB2, 0xD3, 0xC1, 0xA1, 0xB3, 0xB4, 0x6A, 0xE3, 0x94, 0xF5, + 0x92, 0xD3, 0xC0, 0xB6, 0x12, 0x53, 0x7A, 0xAC, 0x1E, 0x69, 0x58, 0x3B, + 0x1C, 0x0F, 0x69, 0x9E, 0x0E, 0xAA, 0xF4, 0xF2, 0x12, 0xAE, 0x66, 0x3B, + 0x40, 0x4A, 0xC3, 0x19, 0x15, 0xDA, 0x08, 0x58, 0x73, 0x1A, 0x9D, 0x18, + 0xAD, 0xA7, 0xA3, 0x66, 0xD1, 0x5D, 0x9A, 0x36, 0x4E, 0xF0, 0xA5, 0x69, + 0x33, 0xD0, 0x8A, 0x11, 0x2E, 0xBA, 0x33, 0xCB, 0xBE, 0x4F, 0x63, 0x9D, + 0x97, 0x50, 0x26, 0x96, 0x8F, 0x6F, 0x4D, 0x30, 0x80, 0x72, 0x28, 0x5E, + 0xA8, 0x74, 0x8E, 0x42, 0x9D, 0x15, 0xDA, 0xAC, 0x36, 0x74, 0x91, 0xFA, + 0x29, 0x8F, 0x54, 0xF5, 0x06, 0xCC, 0x80, 0x78, 0xED, 0x76, 0xDA, 0x3D, + 0x86, 0x9D, 0x9D, 0x3D, 0xA4, 0xA4, 0x7E, 0x9A, 0x80, 0xCC, 0x90, 0x7C, + 0x90, 0x14, 0x8D, 0x33, 0x30, 0x8B, 0xCB, 0x17, 0x36, 0xBB, 0xAF, 0xA7, + 0xE6, 0x7C, 0xA3, 0xE1, 0x7D, 0xB0, 0xA1, 0x9A, 0xA6, 0x28, 0xFE, 0x13, + 0xA3, 0xFF, 0xE5, 0xE9, 0xC9, 0xBD, 0x1E, 0xEF, 0x2C, 0xB6, 0xFE, 0x6F, + 0x6E, 0xDD, 0x94, 0xAB, 0x1C, 0xCE, 0x6E, 0x2A, 0x30, 0x08, 0x82, 0xD3, + 0xD1, 0xFB, 0xE3, 0xC8, 0x63, 0x25, 0xB2, 0xF6, 0x67, 0x1D, 0x72, 0x57, + 0x8B, 0xEE, 0x9F, 0x56, 0x2F, 0x16, 0x3E, 0x9B, 0xEC, 0x27, 0xDE, 0x2E, + 0x84, 0x97, 0x67, 0xA9, 0x69, 0x0D, 0xC5, 0x59, 0xC3, 0xC8, 0x74, 0xEE, + 0x04, 0x89, 0xEF, 0xF6, 0x4B, 0xB9, 0xA2, 0xE5, 0x82, 0x78, 0x1F, 0x49, + 0xDB, 0x02, 0xC6, 0x56, 0x4B, 0xD6, 0x25, 0xDB, 0xBD, 0xF9, 0x9C, 0xFD, + 0x2E, 0xF3, 0x05, 0x5A, 0x73, 0x69, 0x2A, 0xE9, 0x62, 0xD2, 0x10, 0x82, + 0x9D, 0xC8, 0x6C, 0xDC, 0xC6, 0xF2, 0x18, 0x17, 0xEB, 0x2F, 0x91, 0xDC, + 0x30, 0x55, 0xDF, 0xD8, 0x7C, 0xA4, 0x79, 0xE0, 0xC5, 0x37, 0x9D, 0x23, + 0xD5, 0xDF, 0xA4, 0xF2, 0x1B, 0x60, 0xB6, 0xC7, 0x6F, 0x20, 0x5C, 0xFC, + 0xF2, 0x6D, 0x01, 0x75, 0xFB, 0x50, 0x01, 0x5D, 0x24, 0x48, 0x53, 0xBF, + 0x27, 0x99, 0x73, 0x3A, 0x47, 0xD4, 0xDD, 0xBF, 0xE7, 0x41, 0xD3, 0x15, + 0x09, 0x21, 0x29, 0xDA, 0xFE, 0x6A, 0x8E, 0x20, 0xB8, 0x86, 0xC1, 0x8D, + 0x54, 0x74, 0xC7, 0xD6, 0x66, 0xA7, 0xE5, 0x67, 0xB9, 0xE8, 0x0A, 0x74, + 0x3A, 0xF9, 0x4D, 0xAF, 0x54, 0x2D, 0xF0, 0x44, 0x79, 0x04, 0x01, 0x54, + 0x49, 0xF9, 0x04, 0x2A, 0xEF, 0xDD, 0x50, 0x19, 0xF6, 0x56, 0x0A, 0x34, + 0x58, 0x20, 0x90, 0x23, 0x94, 0x70, 0x43, 0xBC, 0xF3, 0x1E, 0xC0, 0x7D, + 0xB5, 0xBD, 0xF0, 0xBF, 0xC9, 0x1F, 0x93, 0x17, 0x1D, 0x56, 0xDF, 0xA0, + 0x42, 0x9C, 0xAA, 0x31, 0xD1, 0xE0, 0x74, 0x0D, 0x42, 0x02, 0x3B, 0x06, + 0xF6, 0xC5, 0xA8, 0xBB, 0x17, 0x5C, 0xCD, 0x56, 0x71, 0x9E, 0xAA, 0x1E, + 0xE8, 0x96, 0x4E, 0x0D, 0x55, 0x4E, 0xA0, 0x9E, 0xDC, 0x30, 0x3E, 0x58, + 0xD3, 0x62, 0xB6, 0xAB, 0x3B, 0xCF, 0x4D, 0x2B, 0x4A, 0x17, 0x25, 0xFB, + 0xCA, 0x5E, 0x0A, 0x3B, 0x82, 0x36, 0xCC, 0x6D, 0x5D, 0x64, 0x86, 0x5C, + 0x73, 0x1E, 0x86, 0xDC, 0x32, 0x5F, 0xF5, 0x2A, 0x2D, 0x58, 0x89, 0xDA, + 0x23, 0x1A, 0xAB, 0x0A, 0x6E, 0x5F, 0xD3, 0x84, 0x33, 0x33, 0xC7, 0xFD, + 0x42, 0xE9, 0xD3, 0xBD, 0x56, 0xE3, 0x70, 0x8A, 0xBA, 0x95, 0xAF, 0xF6, + 0x0A, 0xA6, 0x22, 0x50, 0x3B, 0xCB, 0x1A, 0xE8, 0x88, 0xDF, 0xD3, 0xE8, + 0x94, 0x8C, 0xBF, 0xC7, 0x32, 0x4C, 0x31, 0x0F, 0x1E, 0x14, 0x95, 0x9C, + 0x2E, 0x08, 0x5B, 0x8B, 0x63, 0x62, 0x51, 0x5B, 0xAB, 0x8B, 0x81, 0x6E, + 0xA2, 0x9B, 0xE3, 0x56, 0x9B, 0x78, 0x44, 0x09, 0xCC, 0xD4, 0x69, 0xC4, + 0xF0, 0x4F, 0x7D, 0xA9, 0x1B, 0xE1, 0xD7, 0xFB, 0xD4, 0x44, 0x3F, 0xFF, + 0x3E, 0xDB, 0xEC, 0xB7, 0x52, 0x91, 0x0E, 0xE6, 0xF7, 0xEF, 0x2F, 0x32, + 0x15, 0xC5, 0x25, 0xA6, 0x10, 0xDF, 0xD2, 0x2F, 0x5E, 0xD0, 0x50, 0x28, + 0x47, 0xA2, 0x93, 0x37, 0x42, 0x33, 0xC2, 0x3E, 0x2E, 0x1C, 0x1A, 0x52, + 0xE5, 0x2C, 0x71, 0x6C, 0xB5, 0x4A, 0x78, 0xD2, 0x60, 0xDE, 0x9D, 0x26, + 0x8E, 0xAA, 0x3C, 0x31, 0xFA, 0x55, 0x78, 0x41, 0xD1, 0xBC, 0x9D, 0x19, + 0x85, 0x8B, 0x4C, 0xF9, 0x10, 0x95, 0x0E, 0x43, 0x8A, 0x34, 0x66, 0x4A, + 0x5A, 0x4D, 0xD9, 0x4A, 0xD6, 0x19, 0x23, 0xC9, 0x67, 0x6A, 0x81, 0x36, + 0x87, 0xC2, 0x79, 0x89, 0xE7, 0x17, 0x90, 0x7E, 0x5B, 0x61, 0x49, 0xD8, + 0x05, 0xA0, 0x4F, 0x08, 0x9A, 0x77, 0x53, 0x6D, 0x8C, 0xD5, 0x36, 0x4F, + 0xE7, 0x4E, 0x56, 0xB4, 0xE1, 0xC0, 0x53, 0xD3, 0xB8, 0xBE, 0xB7, 0x90, + 0xCA, 0xFE, 0xB9, 0x80, 0x0E, 0x13, 0xB2, 0x7C, 0x8F, 0x66, 0x40, 0xCC, + 0x8B, 0xB0, 0x7C, 0x32, 0x89, 0xDE, 0x2C, 0x5D, 0x6A, 0xC5, 0xE9, 0x4B, + 0x36, 0x38, 0xCD, 0x51, 0xE2, 0x97, 0x9F, 0x12, 0x45, 0x92, 0x68, 0x38, + 0xED, 0x62, 0x6A, 0xB6, 0x9A, 0x36, 0x82, 0x72, 0x43, 0x58, 0x0F, 0xA9, + 0xB0, 0x4F, 0x12, 0xC9, 0x32, 0x2C, 0xC0, 0xAF, 0xF6, 0xE5, 0x4D, 0x48, + 0xBF, 0xDD, 0xEC, 0xDB, 0x28, 0xC9, 0xD3, 0x5B, 0xE3, 0xFC, 0x7E, 0xAD, + 0x76, 0x28, 0xD4, 0x23, 0x71, 0x85, 0xA5, 0x22, 0xE9, 0x93, 0x5E, 0x43, + 0xB5, 0x0F, 0xAE, 0xDF, 0x8B, 0x51, 0x41, 0x86, 0xC3, 0x55, 0xE4, 0x68, + 0x43, 0x27, 0x7C, 0x0C, 0x8F, 0x7F, 0xA0, 0x5A, 0x7A, 0xD7, 0x88, 0xC3, + 0x8E, 0xF8, 0xC0, 0xF3, 0xB3, 0xC9, 0x15, 0x34, 0x80, 0x16, 0x34, 0x13, + 0x17, 0x6A, 0xD1, 0x59, 0x03, 0x94, 0x59, 0x7B, 0xA0, 0xE8, 0xE0, 0xA4, + 0x16, 0xFC, 0x76, 0xF0, 0x7C, 0x5A, 0x00, 0x01, 0x50, 0xE8, 0x56, 0xEF, + 0x18, 0xC8, 0xDA, 0xBC, 0xCD, 0xB8, 0x92, 0xB8, 0x22, 0xE3, 0xB5, 0x16, + 0x05, 0x25, 0xE7, 0x65, 0x3D, 0x1C, 0x0F, 0x23, 0xC5, 0x24, 0x16, 0x9E, + 0x75, 0xCC, 0xF0, 0xF9, 0x19, 0x47, 0x83, 0xA0, 0x42, 0xBC, 0x36, 0x99, + 0x76, 0xE0, 0x27, 0xA9, 0xDB, 0x4A, 0x6E, 0x50, 0x22, 0x99, 0x4D, 0xDF, + 0x43, 0x69, 0xA3, 0x95, 0x48, 0x97, 0xC7, 0xC5, 0x4F, 0x1B, 0x2A, 0x32, + 0xBA, 0x9F, 0xB9, 0x2D, 0x1D, 0xE3, 0x6E, 0x46, 0x1F, 0xBD, 0x7A, 0x4F, + 0x2A, 0x07, 0xB4, 0xA2, 0xC2, 0x31, 0xA9, 0x93, 0xE9, 0x98, 0x39, 0x93, + 0x89, 0x51, 0x82, 0x10, 0x99, 0xD5, 0x65, 0x25, 0x27, 0x37, 0xB1, 0x7E, + 0x98, 0x50, 0xEC, 0xA7, 0x29, 0xE0, 0xBE, 0xA4, 0x0C, 0xD5, 0x9B, 0x3D, + 0xAD, 0x02, 0x4D, 0x81, 0x93, 0x0F, 0xA4, 0xD7, 0xF4, 0x48, 0xCC, 0x4E, + 0xF6, 0x6F, 0xF3, 0x5C, 0xF6, 0x5A, 0x2E, 0x05, 0xFA, 0xFB, 0x04, 0x8D, + 0x95, 0x29, 0x94, 0x03, 0x34, 0xF2, 0x33, 0xD9, 0x5B, 0x47, 0x96, 0x6C, + 0x0C, 0xE6, 0x8E, 0xF2, 0xD1, 0xF2, 0x83, 0x6A, 0xF2, 0x95, 0x4C, 0xBF, + 0x46, 0xB4, 0x42, 0x95, 0xDA, 0x59, 0xBE, 0x32, 0x2F, 0xFB, 0x7A, 0x33, + 0xA0, 0x09, 0xB6, 0x34, 0x49, 0x4B, 0xA7, 0x9B, 0xF6, 0x56, 0xA9, 0xB7, + 0x5A, 0x98, 0xCD, 0x74, 0xF9, 0xBB, 0xD9, 0x1A, 0x46, 0x87, 0x5D, 0xA4, + 0x81, 0x25, 0xB9, 0x9E, 0x58, 0xF7, 0xBE, 0x19, 0x6E, 0x84, 0x50, 0x7D, + 0x94, 0x3B, 0x57, 0x0A, 0x05, 0x81, 0x42, 0x2F, 0x42, 0x90, 0x9B, 0xF1, + 0xA7, 0x66, 0xD0, 0xD4, 0xF6, 0xD0, 0xB7, 0xE0, 0xDF, 0x2D, 0x6D, 0x60, + 0x11, 0xBE, 0xC8, 0xB3, 0x65, 0xEB, 0x71, 0x33, 0x74, 0xAD, 0xD0, 0x3B, + 0x5D, 0x06, 0x79, 0x9B, 0xD8, 0x03, 0xB7, 0x28, 0xEC, 0x2D, 0x3F, 0x82, + 0xE5, 0xD4, 0x73, 0x01, 0xE8, 0x51, 0xD5, 0x04, 0x46, 0x0D, 0xA9, 0x48, + 0x83, 0x75, 0x88, 0x87, 0x4F, 0xA3, 0xC5, 0xCC, 0x0E, 0x39, 0x46, 0x9E, + 0xE8, 0xC7, 0x7C, 0xC2, 0xA1, 0xEA, 0x89, 0x08, 0xE4, 0x37, 0xAC, 0xC6, + 0x2B, 0x50, 0x7D, 0x78, 0x4F, 0x72, 0xC8, 0x96, 0xDC, 0x48, 0xB0, 0xEF, + 0x69, 0x70, 0xDF, 0x85, 0x0A, 0xE8, 0xEF, 0x14, 0xF9, 0x8C, 0xFE, 0x9E, + 0xB1, 0xA4, 0x9B, 0x58, 0xC1, 0x77, 0x5E, 0x88, 0x3D, 0xB1, 0x39, 0xC9, + 0xE1, 0x8B, 0x4C, 0x16, 0xC2, 0x10, 0xD7, 0x4D, 0x11, 0x11, 0x3E, 0xD9, + 0x60, 0xD1, 0xAB, 0x18, 0x9D, 0x85, 0x8E, 0xFF, 0xFA, 0xB6, 0x09, 0x2B, + 0xD2, 0x9A, 0xFD, 0x6F, 0x5C, 0x05, 0x51, 0x04, 0x03, 0x25, 0x38, 0x12, + 0xCD, 0xF1, 0x0B, 0x10, 0x28, 0x8A, 0x09, 0x2E, 0x2C, 0x38, 0x43, 0x19, + 0x40, 0xF8, 0x45, 0xFF, 0x80, 0x5D, 0xD4, 0xDB, 0x52, 0x2C, 0x51, 0x77, + 0xD7, 0xB1, 0xFF, 0xED, 0x06, 0x99, 0x56, 0x48, 0x53, 0x40, 0xF7, 0x80, + 0xFB, 0x9C, 0x0E, 0x6F, 0x1D, 0x25, 0xAA, 0x4C, 0x8E, 0x91, 0xE7, 0xC5, + 0x0A, 0xDB, 0x3F, 0xEA, 0x48, 0xB9, 0xB2, 0xFA, 0x39, 0x46, 0x9E, 0x3A, + 0xC3, 0xDC, 0x15, 0xF9, 0xCF, 0x8C, 0xA7, 0x14, 0xFD, 0x16, 0x11, 0x69, + 0xC7, 0xD9, 0x2B, 0x00, 0xBA, 0xE7, 0x47, 0xB5, 0xF3, 0x74, 0x14, 0x11, + 0xC5, 0x29, 0x5F, 0xA0, 0xF2, 0x0B, 0xB5, 0x45, 0xEB, 0x88, 0x96, 0x1F, + 0x26, 0xCC, 0x47, 0xD7, 0x5A, 0x96, 0x1A, 0xB5, 0xD7, 0x66, 0x98, 0xD0, + 0x65, 0xDC, 0xE2, 0x15, 0xAF, 0xAC, 0x7E, 0x60, 0xBE, 0x9E, 0x2D, 0xB5, + 0x9B, 0xD9, 0x19, 0x36, 0x53, 0x2F, 0xE4, 0x40, 0xD7, 0xDC, 0x82, 0x16, + 0x8B, 0x99, 0x1B, 0xB3, 0x5C, 0xBB, 0x6A, 0x3F, 0x90, 0xE4, 0xF8, 0x57, + 0xDE, 0x9E, 0x63, 0xFD, 0x78, 0x4F, 0x0A, 0x26, 0x73, 0x0E, 0xD9, 0x47, + 0x8B, 0x52, 0xBF, 0x77, 0x75, 0x15, 0xD2, 0x70, 0xDC, 0x4B, 0x47, 0x1D, + 0x6A, 0x7A, 0x5F, 0xFE, 0x64, 0x89, 0xAB, 0xA1, 0x95, 0x8F, 0x27, 0xD1, + 0xAD, 0x5C, 0x6D, 0xAB, 0xAF, 0x53, 0xA5, 0x7E, 0xFC, 0x14, 0x02, 0xE0, + 0xEA, 0x14, 0x60, 0x71, 0x20, 0xB5, 0x2B, 0x33, 0x47, 0xE8, 0x05, 0x82, + 0x4B, 0x85, 0xE3, 0xFE, 0x9D, 0x21, 0x95, 0x7F, 0x18, 0x11, 0xB4, 0x0D, + 0x7F, 0xB6, 0xAB, 0xF4, 0xF4, 0xE7, 0x43, 0x20, 0x50, 0x28, 0x72, 0x8B, + 0x11, 0x83, 0xA5, 0xB6, 0x1E, 0x94, 0xF9, 0x25, 0x94, 0x2B, 0xBC, 0xD6, + 0x55, 0x41, 0xE4, 0xF0, 0xD9, 0xF5, 0x4D, 0x30, 0x4A, 0xD4, 0x9D, 0x3B, + 0x23, 0xE3, 0x95, 0x2E, 0xB6, 0x60, 0x0D, 0xAD, 0x28, 0xE5, 0xF9, 0x6E, + 0x6A, 0x74, 0xB5, 0x6C, 0x88, 0x59, 0x87, 0x30, 0x4A, 0x54, 0xE0, 0x80, + 0xAA, 0x1E, 0x76, 0x02, 0x16, 0x55, 0xC5, 0xF2, 0xC8, 0x38, 0xE3, 0x22, + 0x12, 0x7A, 0x16, 0x51, 0xDB, 0x5B, 0x38, 0xF3, 0xE0, 0xC1, 0x45, 0x56, + 0x6A, 0xD3, 0xD3, 0x25, 0x59, 0x9A, 0x7A, 0x1F, 0x8A, 0xF4, 0xAF, 0x98, + 0x4E, 0xC8, 0x1D, 0x6A, 0x7E, 0x34, 0x4B, 0xD7, 0x85, 0x2F, 0xBB, 0x0F, + 0x7B, 0xD4, 0x76, 0x44, 0x83, 0x8A, 0x76, 0x01, 0x39, 0xAE, 0x88, 0xA5, + 0xB0, 0xFC, 0xBF, 0xEA, 0xD1, 0xFD, 0x44, 0x25, 0x72, 0xD9, 0xBC, 0x3F, + 0xD9, 0xC1, 0x29, 0x44, 0x22, 0x0E, 0x6A, 0x49, 0xE1, 0x32, 0x23, 0xB3, + 0x45, 0x80, 0x81, 0x9C, 0x38, 0x88, 0xE7, 0x27, 0x66, 0x09, 0x90, 0xF2, + 0xBD, 0x3C, 0x4B, 0x10, 0x98, 0x52, 0x4D, 0x81, 0x26, 0x25, 0xD3, 0xE3, + 0x66, 0x00, 0x27, 0x39, 0xBF, 0x6A, 0x40, 0x1D, 0x8F, 0x6F, 0x21, 0x16, + 0x22, 0x73, 0x1E, 0x9E, 0x11, 0xFF, 0xB8, 0xC9, 0x9A, 0x56, 0x35, 0x14, + 0x78, 0xBD, 0x1F, 0x7B, 0x89, 0x47, 0xB6, 0x6A, 0x51, 0xBC, 0x08, 0x9F, + 0x3D, 0xCF, 0x1C, 0xC5, 0x2C, 0x82, 0x88, 0x72, 0xCC, 0x35, 0x9B, 0xD7, + 0x31, 0xFE, 0xAE, 0x40, 0x2D, 0xBF, 0x21, 0xC3, 0xF1, 0xA8, 0x39, 0xC0, + 0x59, 0xB4, 0x29, 0x7C, 0x5D, 0x5C, 0x0A, 0x7C, 0xD6, 0xA2, 0xB9, 0x5A, + 0x69, 0x3A, 0xF2, 0xA5, 0xB5, 0x40, 0x5D, 0x84, 0x1E, 0x8A, 0x93, 0x2B, + 0x75, 0x8C, 0xF0, 0x7F, 0x57, 0x12, 0xB6, 0xF9, 0xBB, 0xBE, 0x28, 0x20, + 0x4B, 0xB1, 0xA8, 0x90, 0xE6, 0x6A, 0xE9, 0xB3, 0xB2, 0x14, 0xCE, 0xA0, + 0xCD, 0x9B, 0xD2, 0x8D, 0xEB, 0x34, 0xB2, 0x71, 0x86, 0x96, 0xFB, 0x88, + 0x5E, 0x9F, 0x0D, 0xE6, 0x99, 0x87, 0xAB, 0xAA, 0xF4, 0xEA, 0xD3, 0xFE, + 0xCE, 0x6D, 0x2C, 0x93, 0x8A, 0x06, 0x16, 0x47, 0xBB, 0xFF, 0xE0, 0xC5, + 0x31, 0xF1, 0x46, 0x31, 0xB4, 0x6D, 0xFE, 0x9A, 0x62, 0xC0, 0xD9, 0x17, + 0xC2, 0x38, 0x18, 0x5C, 0xBA, 0x00, 0xCE, 0x10, 0x89, 0x96, 0x36, 0x82, + 0x95, 0xD4, 0x76, 0x90, 0x7D, 0x5D, 0x79, 0x59, 0x20, 0x63, 0xA4, 0x5F, + 0x10, 0x5C, 0x08, 0xF4, 0x53, 0x39, 0xC7, 0x16, 0xB7, 0xE7, 0x37, 0xC6, + 0x67, 0x2D, 0x75, 0xA9, 0x86, 0x96, 0x3D, 0x55, 0x45, 0xFE, 0xFA, 0xC4, + 0xFE, 0x66, 0xEA, 0x53, 0xD3, 0x3C, 0x40, 0xA1, 0x96, 0x31, 0x0F, 0x2C, + 0x56, 0x82, 0xF5, 0xAD, 0x4B, 0x56, 0x1A, 0x04, 0x5E, 0xC0, 0x92, 0xED, + 0x74, 0xF1, 0x9D, 0x11, 0x0F, 0x8F, 0x69, 0x90, 0x53, 0x78, 0x71, 0x0D, + 0x8A, 0x6C, 0x8E, 0xB0, 0xA2, 0x33, 0x38, 0x7E, 0x18, 0xC5, 0x28, 0xEE, + 0x4F, 0xE5, 0x57, 0xC5, 0x5E, 0x42, 0xDE, 0xA8, 0xB7, 0x77, 0xE5, 0x5D, + 0xDD, 0xD9, 0xFE, 0xFF, 0x69, 0xF6, 0x0A, 0xBF, 0xE1, 0x22, 0xEC, 0x09, + 0xF3, 0x05, 0x61, 0x31, 0x71, 0x31, 0x06, 0x36, 0x76, 0x34, 0xB4, 0x5B, + 0x46, 0x4C, 0x7F, 0x26, 0x0F, 0x97, 0x75, 0x34, 0x75, 0x2B, 0x88, 0x1B, + 0xEC, 0xF7, 0x65, 0xF7, 0x92, 0x30, 0x04, 0xBA, 0x56, 0xBE, 0x44, 0xF8, + 0x0C, 0x3A, 0x27, 0xD9, 0xE1, 0x70, 0x10, 0x18, 0xE8, 0xE0, 0xB5, 0xC6, + 0x1E, 0x0E, 0x11, 0x7C, 0xB8, 0x7C, 0x3E, 0xD1, 0xDD, 0xEB, 0xA4, 0x14, + 0x2F, 0xC1, 0xAB, 0x77, 0x0E, 0x51, 0x23, 0xCC, 0x5E, 0x34, 0x19, 0xC9, + 0xBD, 0x81, 0x96, 0x00, 0xD6, 0xE9, 0xAA, 0x82, 0xD3, 0xE6, 0x00, 0x09, + 0x3E, 0xC0, 0xB6, 0x4F, 0xF1, 0x39, 0x00, 0xF0, 0xD6, 0xB1, 0x7A, 0xA2, + 0xD3, 0xD6, 0x08, 0x65, 0xE5, 0x4A, 0x84, 0xDA, 0x85, 0x17, 0xAC, 0x17, + 0x03, 0x35, 0x07, 0x8F, 0xF9, 0xB3, 0xCC, 0xC9, 0x3E, 0xF9, 0x4E, 0xA4, + 0x30, 0xE3, 0xC9, 0x96, 0x8B, 0x6B, 0x53, 0x4E, 0x11, 0xAF, 0x53, 0xAC, + 0x92, 0x8E, 0xCC, 0xFE, 0xCA, 0x12, 0x7F, 0x92, 0x0A, 0x62, 0x7A, 0x38, + 0xCA, 0xAA, 0x89, 0x0C, 0x00, 0x91, 0xA1, 0x9F, 0x96, 0x13, 0x2B, 0x46, + 0x0E, 0x59, 0xC0, 0xF3, 0x49, 0xDC, 0xF0, 0xFA, 0xBF, 0x4D, 0xE7, 0xF3, + 0x0A, 0x82, 0x12, 0x05, 0xDE, 0xA5, 0xA9, 0x8B, 0x67, 0xD0, 0xF5, 0x0B, + 0xEE, 0xA1, 0x73, 0x8F, 0xCC, 0x47, 0x67, 0x7E, 0x83, 0x79, 0x56, 0x19, + 0x49, 0x5B, 0xE0, 0x30, 0x5F, 0xE6, 0xCB, 0x6E, 0xEC, 0x69, 0x31, 0xB8, + 0x87, 0x6E, 0xC0, 0xEA, 0x76, 0x79, 0x3A, 0x1A, 0x05, 0x8B, 0xD3, 0xB1, + 0x56, 0x57, 0x13, 0xDF, 0x3A, 0x6F, 0x38, 0xFF, 0x3A, 0xFB, 0x59, 0x35, + 0x37, 0xFA, 0x93, 0xBB, 0xA3, 0x13, 0x69, 0xC1, 0xCA, 0x3B, 0x9C, 0x73, + 0x51, 0x81, 0x38, 0x57, 0x12, 0x55, 0xA7, 0x7F, 0x27, 0x87, 0x8B, 0x4A, + 0x0C, 0x7F, 0x2D, 0x6C, 0x6E, 0xED, 0x69, 0xDD, 0xC3, 0x29, 0xDA, 0x67, + 0xDF, 0x2E, 0x9B, 0x3D, 0xB1, 0xA7, 0xFA, 0x1E, 0xF0, 0x09, 0xE2, 0x69, + 0x4A, 0x97, 0xE0, 0x63, 0x92, 0x16, 0xF1, 0x7C, 0x70, 0x50, 0x72, 0xFE, + 0x96, 0x94, 0xE4, 0xAB, 0x5A, 0xCA, 0xEB, 0x69, 0x3C, 0x12, 0xE5, 0x1A, + 0xB8, 0x2C, 0x8C, 0x24, 0xA2, 0xF3, 0x2A, 0xFF, 0xA0, 0xEC, 0xE8, 0xDE, + 0xAF, 0x4C, 0xA0, 0xEB, 0x4D, 0x13, 0x77, 0x19, 0x23, 0xE3, 0xE2, 0x72, + 0xC3, 0xD4, 0x3A, 0x70, 0x1D, 0xA7, 0xE0, 0x92, 0x38, 0x98, 0x68, 0xBB, + 0x82, 0x98, 0xC7, 0x30, 0x38, 0x50, 0x2A, 0xDF, 0xAF, 0x9C, 0x7F, 0xAB, + 0x8A, 0xBB, 0x98, 0x6A, 0x48, 0x4A, 0xE4, 0x29, 0x3F, 0x5A, 0xBE, 0x7D, + 0x3D, 0xC8, 0xCB, 0x13, 0x9E, 0x9D, 0x86, 0xC5, 0x96, 0x1C, 0xB4, 0xD6, + 0xBF, 0x32, 0xE2, 0x4D, 0x1B, 0x86, 0x1A, 0xFA, 0xD0, 0xFB, 0x25, 0xA2, + 0xBA, 0x6F, 0xEE, 0x36, 0xF6, 0x24, 0xEC, 0x7D, 0x8E, 0x96, 0xA4, 0x95, + 0x4B, 0x3F, 0x5D, 0x1F, 0x11, 0x9B, 0xAD, 0x4B, 0xC5, 0x5C, 0x87, 0x58, + 0xA4, 0x56, 0xEB, 0xEA, 0x99, 0xC3, 0x85, 0x11, 0x01, 0x7B, 0xFD, 0x39, + 0x33, 0xB9, 0xD7, 0xDC, 0x26, 0x99, 0xCD, 0xB7, 0x7E, 0x7E, 0x60, 0xE7, + 0x44, 0x29, 0x6C, 0x0C, 0xFB, 0x13, 0x71, 0x2B, 0x5C, 0x13, 0x88, 0xFD, + 0xB9, 0xF4, 0x53, 0x20, 0xD6, 0xBB, 0xEF, 0xF0, 0xDB, 0x53, 0x4A, 0xD0, + 0x1B, 0xF3, 0x6F, 0xDB, 0x8E, 0xF6, 0xB0, 0x46, 0x5C, 0x2A, 0xAD, 0xFB, + 0x27, 0x52, 0xE5, 0xFD, 0x3D, 0x9B, 0x56, 0x9F, 0x47, 0xBA, 0xA9, 0xB7, + 0xAA, 0x5C, 0xB2, 0xFD, 0x4F, 0xA8, 0xAD, 0xA9, 0xDB, 0xB2, 0x34, 0xE5, + 0x86, 0xCB, 0x5F, 0xE7, 0x65, 0xEE, 0x92, 0x9D, 0x3E, 0x35, 0x42, 0x35, + 0x48, 0x03, 0x52, 0x31, 0x71, 0xCE, 0x72, 0xEC, 0x1F, 0x88, 0xCE, 0xDC, + 0xB2, 0x38, 0x32, 0xEA, 0x1B, 0x71, 0x22, 0xFC, 0x14, 0x53, 0xD8, 0x2E, + 0x6B, 0xF3, 0xDB, 0xF9, 0x3F, 0x01, 0xDC, 0xEF, 0xFE, 0x74, 0xE4, 0xE1, + 0x7B, 0x55, 0x21, 0xB5, 0x40, 0x78, 0x87, 0x76, 0xFC, 0xFA, 0x36, 0x25, + 0x45, 0xB9, 0x47, 0x2A, 0x65, 0x56, 0x75, 0x8E, 0xDC, 0x6E, 0x27, 0x2D, + 0x43, 0x82, 0xCC, 0x76, 0xA0, 0x48, 0x33, 0x88, 0x5B, 0x58, 0xF3, 0x83, + 0x6D, 0x8C, 0x1E, 0xFC, 0xA3, 0x1A, 0xAC, 0x74, 0xB4, 0x38, 0x47, 0xCA, + 0x20, 0x06, 0x14, 0xAB, 0x5A, 0xBD, 0x5E, 0x38, 0x5A, 0x1E, 0x88, 0xC7, + 0xF9, 0x69, 0x7D, 0xBF, 0x91, 0x2C, 0x51, 0x18, 0x95, 0xF6, 0x19, 0x98, + 0x79, 0xFC, 0x69, 0xFD, 0xF7, 0xA9, 0x21, 0xA1, 0xD4, 0xBF, 0xC5, 0x21, + 0xF5, 0xBA, 0xD2, 0x9B, 0xF8, 0xA5, 0x40, 0x57, 0xD1, 0x10, 0x47, 0x0F, + 0x93, 0x50, 0x0F, 0x5D, 0x97, 0x96, 0x14, 0x2B, 0x71, 0x63, 0x88, 0xEC, + 0xA1, 0x92, 0xF0, 0x76, 0x86, 0x5C, 0xCC, 0x37, 0x86, 0x04, 0xD2, 0xB0, + 0xDD, 0x53, 0x82, 0xD6, 0x28, 0xCC, 0x05, 0x60, 0xE1, 0x3F, 0x27, 0xD2, + 0x1C, 0x80, 0x68, 0xAA, 0xA9, 0x16, 0xCD, 0xF5, 0x82, 0x55, 0x11, 0xDD, + 0x05, 0x2D, 0x56, 0x9F, 0xC9, 0x92, 0xA2, 0xB8, 0xDF, 0xD9, 0x32, 0x28, + 0xD4, 0xE9, 0xEA, 0x7E, 0x93, 0x5D, 0x33, 0x96, 0x77, 0x81, 0xCF, 0x63, + 0xE2, 0xC5, 0xC4, 0x41, 0x89, 0x0A, 0x64, 0xCC, 0x68, 0xD3, 0x3A, 0x80, + 0x1A, 0xAC, 0x36, 0xDC, 0x50, 0x95, 0x5B, 0x8A, 0xE7, 0x24, 0xAD, 0x65, + 0xC9, 0x86, 0x2A, 0xC2, 0x0C, 0x48, 0xB0, 0xDD, 0x33, 0x53, 0x1F, 0x08, + 0x35, 0x9B, 0x91, 0x52, 0xBB, 0xA8, 0x85, 0xE2, 0xA9, 0x0D, 0x22, 0x80, + 0x1D, 0xCA, 0x57, 0xA5, 0x52, 0xE4, 0xDA, 0x10, 0x7C, 0x31, 0xDB, 0xAA, + 0x27, 0x98, 0x85, 0xB7, 0xC7, 0x4E, 0xFC, 0x9D, 0x39, 0x8A, 0x10, 0x30, + 0x78, 0x4B, 0xB3, 0x3C, 0xAF, 0xAB, 0xE7, 0xD9, 0xBB, 0xB4, 0x11, 0x3E, + 0x59, 0x32, 0x2A, 0xD8, 0x89, 0xD8, 0xF5, 0xEB, 0x45, 0xFC, 0xEF, 0x8B, + 0x78, 0xCF, 0x10, 0x1B, 0xCF, 0x4A, 0x2C, 0x24, 0x57, 0xED, 0x82, 0x2E, + 0x4B, 0xC9, 0x1A, 0xC8, 0x1C, 0xD0, 0x5D, 0xE1, 0x87, 0x6E, 0xEA, 0xED, + 0xD9, 0x0D, 0xC9, 0x1C, 0x59, 0x14, 0x85, 0xFB, 0x60, 0xFE, 0x62, 0x06, + 0x4A, 0xB9, 0x0F, 0x0E, 0x83, 0xFE, 0x14, 0x1A, 0x7F, 0x6F, 0xFB, 0xC0, + 0xBF, 0x76, 0x02, 0x3C, 0xAB, 0x58, 0x86, 0xB0, 0xDA, 0x69, 0xE7, 0xFD, + 0x2B, 0x4C, 0x47, 0x66, 0xAB, 0xAB, 0xFF, 0x5D, 0xA0, 0xF2, 0x95, 0x47, + 0xC8, 0x23, 0xB8, 0x58, 0xA2, 0x74, 0x9D, 0x65, 0x6D, 0x3F, 0xC9, 0xD9, + 0xC0, 0xE9, 0x8A, 0x62, 0x0A, 0x6E, 0x1F, 0xE7, 0xD2, 0x86, 0x97, 0x26, + 0xA4, 0x0A, 0x9C, 0x54, 0x44, 0xC8, 0x8C, 0x4E, 0x3B, 0xA9, 0xE6, 0x97, + 0xBE, 0xBE, 0x16, 0x09, 0xE3, 0xC7, 0xCA, 0x68, 0x47, 0x24, 0x80, 0x22, + 0x27, 0x0D, 0xC7, 0xE4, 0x11, 0x68, 0xD2, 0x1A, 0x79, 0x61, 0x89, 0x59, + 0xD5, 0xA3, 0x99, 0xDF, 0x9C, 0x5B, 0x10, 0x58, 0x36, 0x6D, 0xDE, 0x9F, + 0xB5, 0xC2, 0xF2, 0x9F, 0x68, 0x99, 0x95, 0xD1, 0x79, 0x08, 0x8F, 0xE4, + 0xEC, 0x82, 0x7D, 0x70, 0xCF, 0xEA, 0x77, 0x00, 0x0A, 0x0A, 0xE6, 0x39, + 0x45, 0x96, 0xB6, 0xA1, 0xC0, 0xA3, 0xAA, 0x64, 0xF8, 0x3B, 0xD2, 0xF7, + 0x5C, 0xAD, 0xC0, 0x62, 0x93, 0xDA, 0xAE, 0x08, 0x5F, 0xB5, 0x10, 0x7F, + 0x14, 0xB6, 0x91, 0xC3, 0xEC, 0xBB, 0x0F, 0x18, 0x4B, 0x88, 0xBE, 0xFF, + 0xA2, 0xF1, 0x02, 0x48, 0x03, 0x6C, 0x6A, 0x5C, 0xAE, 0x7F, 0xBB, 0xA3, + 0x02, 0x25, 0x6E, 0x13, 0x9B, 0x64, 0x8C, 0x6B, 0x3D, 0xC1, 0xC6, 0xC7, + 0xB6, 0xA8, 0xF2, 0x85, 0x12, 0x87, 0xEA, 0xE0, 0x07, 0x3A, 0xEE, 0x2F, + 0xC2, 0x68, 0xB8, 0x05, 0xB5, 0x55, 0x15, 0xDF, 0x21, 0x78, 0x9D, 0x21, + 0x80, 0xE8, 0x91, 0xA4, 0x97, 0x1C, 0x08, 0xDB, 0x68, 0xA8, 0xEF, 0x25, + 0x00, 0xEE, 0xAC, 0xD7, 0x87, 0x26, 0xD6, 0x27, 0xB8, 0xE5, 0x85, 0x79, + 0x3F, 0xA4, 0xE9, 0xC8, 0x51, 0x44, 0xAF, 0xAE, 0x32, 0x08, 0x57, 0x1D, + 0xC6, 0xB7, 0x4D, 0x43, 0xDC, 0x3D, 0x27, 0xD4, 0x34, 0x53, 0xEA, 0x1A, + 0xFA, 0x57, 0x11, 0x04, 0xC1, 0x70, 0x7D, 0x88, 0x9B, 0x35, 0xAA, 0xBE, + 0x23, 0xD4, 0x10, 0xFB, 0xEA, 0x9C, 0x4A, 0xBC, 0xA5, 0xC0, 0x4E, 0xE1, + 0x2C, 0x30, 0x15, 0x1B, 0xA6, 0xFA, 0x7C, 0x27, 0x78, 0xA3, 0x2B, 0xF7, + 0x90, 0x20, 0x4B, 0xB2, 0xBD, 0xEE, 0x11, 0xD1, 0x53, 0xEB, 0xBC, 0x33, + 0xAD, 0x87, 0xD5, 0x15, 0x6B, 0x69, 0xFD, 0x20, 0x3E, 0x74, 0xF3, 0x9D, + 0x24, 0x9A, 0xC7, 0x39, 0xEB, 0xD2, 0x81, 0x24, 0x7A, 0x75, 0x20, 0x20, + 0xA3, 0x2B, 0xB6, 0x59, 0x62, 0x54, 0xE4, 0x6F, 0x03, 0x41, 0xCD, 0x3A, + 0x13, 0x69, 0x5C, 0xDA, 0xD6, 0xE1, 0x64, 0x14, 0x4F, 0x05, 0x03, 0x04, + 0x4F, 0x1A, 0x38, 0xF8, 0x40, 0x9E, 0xA1, 0x38, 0xDA, 0x20, 0xB5, 0x54, + 0xC6, 0x0D, 0x1D, 0x58, 0xE4, 0x45, 0x10, 0xF5, 0x9C, 0xA6, 0xA4, 0x90, + 0x64, 0x35, 0xE6, 0xF0, 0xFE, 0x58, 0x47, 0xC6, 0x84, 0xA6, 0x69, 0x62, + 0xCC, 0xFA, 0x50, 0xFA, 0xAC, 0x24, 0x5E, 0x72, 0xCF, 0x4C, 0xAF, 0xCF, + 0xF1, 0x12, 0xB8, 0x62, 0xA0, 0xF1, 0xB6, 0x36, 0xF7, 0x3E, 0xD5, 0x3F, + 0x2B, 0xD5, 0xC3, 0x57, 0xE7, 0x84, 0x9E, 0xCE, 0x48, 0x21, 0x90, 0x09, + 0x5D, 0x62, 0xBB, 0xDC, 0x5A, 0x93, 0x20, 0x6D, 0xF3, 0x8F, 0x9C, 0x51, + 0x97, 0x74, 0xC7, 0x55, 0x08, 0xD9, 0x42, 0x11, 0x70, 0x55, 0x08, 0x96, + 0x2D, 0xC2, 0x5C, 0x0B, 0x02, 0x6D, 0xFC, 0x3A, 0xCD, 0x21, 0xF2, 0x72, + 0xD6, 0x78, 0x3B, 0xD5, 0x52, 0xC9, 0xE9, 0x94, 0x51, 0x2F, 0xBA, 0x27, + 0x99, 0x6B, 0xF1, 0xF2, 0xFA, 0xBF, 0x15, 0x68, 0xD1, 0xC6, 0x8A, 0x86, + 0x3A, 0x51, 0x45, 0xB2, 0xE9, 0x5D, 0xD1, 0x82, 0xC3, 0x32, 0x28, 0xD3, + 0x8B, 0xFB, 0x90, 0x6D, 0x96, 0x9E, 0x65, 0x07, 0xE1, 0x05, 0x28, 0x52, + 0xE6, 0x93, 0x93, 0x4B, 0xB1, 0x44, 0xE1, 0xD5, 0xB5, 0x65, 0x1D, 0x1D, + 0x5C, 0xFA, 0xB0, 0xCA, 0xC3, 0x9D, 0xCD, 0xAC, 0x11, 0xFF, 0x81, 0x44, + 0x91, 0xB0, 0x1C, 0xC8, 0x6F, 0x21, 0xC2, 0x61, 0x95, 0x61, 0x49, 0x19, + 0x3F, 0x67, 0x9A, 0xC0, 0x7F, 0xEE, 0xCF, 0xE8, 0x5E, 0x75, 0x03, 0x56, + 0x4D, 0x24, 0x61, 0xF9, 0xD8, 0x98, 0xA1, 0x2B, 0xD1, 0x8C, 0x40, 0x9B, + 0xDC, 0xB6, 0x5C, 0xC0, 0xD6, 0x84, 0x67, 0x2E, 0x00, 0x2A, 0x89, 0xCE, + 0x0A, 0x6D, 0x06, 0x23, 0x64, 0x10, 0xD5, 0xD2, 0x17, 0xC5, 0xF9, 0x98, + 0xEE, 0xE6, 0xFC, 0x16, 0x6B, 0x0E, 0xAD, 0x40, 0x4D, 0x2D, 0x78, 0x9C, + 0x75, 0x60, 0xDD, 0x55, 0x5B, 0x9F, 0xDF, 0xE0, 0x70, 0x2A, 0x72, 0xF3, + 0x10, 0x31, 0x0F, 0xB9, 0xA6, 0xDC, 0x3E, 0x0C, 0x9D, 0x20, 0x91, 0xA6, + 0x0F, 0x4E, 0x49, 0x0D, 0x3D, 0x2C, 0x2D, 0x33, 0x32, 0x31, 0x1E, 0xF6, + 0x89, 0xD6, 0x66, 0xF0, 0x98, 0x1E, 0x11, 0x36, 0xE2, 0xF2, 0xDE, 0x09, + 0x5F, 0x7B, 0x29, 0xA2, 0x51, 0x47, 0xA6, 0xAC, 0x2B, 0xE2, 0x5A, 0xAE, + 0x7F, 0x38, 0xA5, 0xF6, 0xFE, 0x61, 0x42, 0x70, 0xB9, 0xCC, 0xCC, 0xD7, + 0x23, 0x0F, 0xBF, 0xCC, 0x87, 0x48, 0x31, 0x38, 0x1B, 0x7A, 0x4B, 0x9E, + 0xEB, 0x1F, 0x3D, 0x16, 0x55, 0xFA, 0xDB, 0xC2, 0xA0, 0xFF, 0xDC, 0x34, + 0x4B, 0x0D, 0x3C, 0x33, 0x55, 0x87, 0x7E, 0x73, 0xCD, 0x66, 0x8A, 0x5D, + 0x3F, 0xE4, 0xFE, 0xF1, 0x56, 0xFE, 0xB1, 0xB1, 0x09, 0x4E, 0x1D, 0xA5, + 0xEE, 0xD5, 0x6D, 0x9F, 0xA3, 0xA9, 0xCB, 0x16, 0xE4, 0x62, 0x87, 0x1F, + 0xB5, 0x88, 0xFB, 0x2B, 0x77, 0xA0, 0xB8, 0x9D, 0x51, 0x1F, 0x88, 0x60, + 0x45, 0x69, 0x2A, 0x46, 0x1E, 0x7B, 0x7F, 0x63, 0x98, 0x59, 0x8A, 0x75, + 0x6C, 0x4E, 0xFE, 0xFD, 0xC1, 0xCB, 0x68, 0x10, 0x71, 0x38, 0x8F, 0x1A, + 0x50, 0xF5, 0x4A, 0xE3, 0x82, 0x28, 0x46, 0x4A, 0x72, 0x0A, 0x86, 0xF9, + 0xE0, 0xF4, 0x7E, 0xCB, 0x3A, 0xB5, 0x6C, 0x6A, 0x6B, 0x14, 0x1B, 0x0E, + 0xAD, 0x60, 0xCE, 0x39, 0x8F, 0x62, 0x3F, 0x2A, 0x33, 0xBC, 0xF3, 0x03, + 0x90, 0x40, 0x3B, 0x5E, 0x30, 0x77, 0xE0, 0xA4, 0xAA, 0x5D, 0xC3, 0xCF, + 0x43, 0x0F, 0xF7, 0x1C, 0x4E, 0x60, 0x87, 0x82, 0xB6, 0x5A, 0xF3, 0x35, + 0x17, 0x48, 0xFB, 0x8F, 0x34, 0xCB, 0xED, 0x6F, 0xFC, 0xB8, 0x73, 0xBB, + 0x09, 0xCE, 0x07, 0x89, 0x58, 0xEB, 0xC4, 0x82, 0x67, 0x45, 0xAD, 0xCA, + 0xD9, 0x49, 0xE4, 0x00, 0xAA, 0x5A, 0xED, 0x61, 0xA6, 0x49, 0x1A, 0xB6, + 0xC8, 0x09, 0xDE, 0xAA, 0x65, 0x1A, 0x0C, 0xF5, 0xDF, 0xA9, 0x2B, 0xB6, + 0x91, 0xE9, 0xF0, 0x08, 0x2A, 0xBB, 0x4A, 0x04, 0x30, 0x0C, 0x71, 0x64, + 0xE2, 0xCF, 0xF3, 0xD4, 0x1E, 0x99, 0x9A, 0x2B, 0x11, 0x5D, 0x29, 0x61, + 0xC6, 0x2C, 0xC1, 0xA7, 0x05, 0xE8, 0x9B, 0xD0, 0xE4, 0xD2, 0x56, 0x96, + 0x5E, 0xA9, 0x25, 0x96, 0x25, 0xBC, 0xBC, 0x12, 0xE5, 0x50, 0x47, 0x4C, + 0x8D, 0xBF, 0xA6, 0xDA, 0x0A, 0x88, 0x70, 0x2F, 0x74, 0x2D, 0xE9, 0xCD, + 0xD8, 0xF6, 0xD9, 0x76, 0x37, 0x9A, 0x1F, 0x1D, 0x3D, 0x10, 0xBA, 0xD0, + 0x3C, 0x13, 0x56, 0x73, 0x79, 0x97, 0xB9, 0x55, 0x9D, 0x8B, 0xF3, 0xD5, + 0x87, 0x0B, 0x1D, 0x97, 0x53, 0xD0, 0xF9, 0xA9, 0x76, 0x3B, 0xDE, 0x18, + 0x3C, 0xE8, 0xF0, 0x81, 0x13, 0x16, 0x5A, 0x7D, 0x59, 0xF1, 0x9E, 0xE3, + 0xC5, 0xBA, 0xFC, 0xB7, 0x7E, 0x5F, 0x05, 0xF4, 0x38, 0x6C, 0xA1, 0x09, + 0xAA, 0x15, 0x4C, 0xC5, 0xF6, 0xE7, 0x25, 0x72, 0xC4, 0xAA, 0x82, 0xFE, + 0xEB, 0x3F, 0xBC, 0x6B, 0x26, 0xB2, 0xAD, 0x85, 0x83, 0xFB, 0xFA, 0xD9, + 0x2D, 0x78, 0x50, 0xBE, 0xF6, 0x70, 0xB4, 0x8A, 0xDB, 0x71, 0xA2, 0x60, + 0x80, 0x7A, 0x91, 0xB2, 0x74, 0x54, 0x81, 0xB5, 0xF7, 0x48, 0x77, 0x96, + 0x05, 0xD6, 0x34, 0xC1, 0x06, 0x0E, 0x35, 0x20, 0x39, 0x28, 0x2D, 0x57, + 0xC1, 0x75, 0xA2, 0x26, 0x0B, 0xEB, 0x59, 0x12, 0x07, 0x46, 0x35, 0x1B, + 0x7D, 0x2A, 0x5B, 0x0D, 0x19, 0x1A, 0xBD, 0x09, 0x5D, 0xEF, 0x7A, 0x79, + 0x7F, 0xB1, 0xD6, 0x45, 0x00, 0xC3, 0x3E, 0xB2, 0xA9, 0x03, 0x19, 0x43, + 0xC3, 0x53, 0x73, 0x24, 0xA2, 0xEC, 0x9B, 0x88, 0x09, 0xF4, 0x5C, 0xB5, + 0xC0, 0x69, 0x00, 0xB6, 0xB4, 0x80, 0xDE, 0x9A, 0x7A, 0x85, 0x1D, 0xA7, + 0x85, 0x81, 0x3D, 0x83, 0x41, 0x85, 0xA5, 0x32, 0x7B, 0x7D, 0x47, 0xEB, + 0x35, 0x07, 0x3C, 0xED, 0xBC, 0x6B, 0xEF, 0xB0, 0x1A, 0x6F, 0x33, 0x0A, + 0x2C, 0xBA, 0x54, 0xF8, 0xEE, 0xA9, 0xB4, 0x2A, 0x17, 0x8A, 0x1E, 0x6C, + 0x58, 0xFB, 0x09, 0xF0, 0x76, 0x0F, 0x03, 0xD3, 0x34, 0xC1, 0xC2, 0xA1, + 0xCD, 0x96, 0x21, 0xFC, 0x9C, 0x21, 0x3D, 0xB6, 0xA2, 0xD1, 0xA2, 0x0F, + 0x24, 0xF6, 0x33, 0xB4, 0xB4, 0x36, 0xCA, 0x12, 0x25, 0x52, 0x85, 0x5B, + 0x07, 0x82, 0xAF, 0xB8, 0x8B, 0xB1, 0x36, 0x67, 0x32, 0xAF, 0x51, 0x74, + 0xDE, 0x15, 0x9B, 0xE7, 0xD9, 0x6D, 0x2C, 0xEA, 0xDE, 0x68, 0x99, 0x66, + 0x31, 0x87, 0x7D, 0xEA, 0xA8, 0x4D, 0xF4, 0x06, 0xB5, 0x28, 0xD8, 0x93, + 0xB8, 0x38, 0xB3, 0x2D, 0xA2, 0xA8, 0xCD, 0x03, 0x96, 0x61, 0xD1, 0x7B, + 0x49, 0x11, 0xE8, 0xEE, 0x25, 0xCE, 0x44, 0xA7, 0x77, 0xED, 0x72, 0xA3, + 0xF4, 0xA7, 0xCB, 0x2D, 0x9D, 0xC5, 0xBA, 0x89, 0xBD, 0x9A, 0xC0, 0x84, + 0xDD, 0x14, 0x09, 0x1C, 0x11, 0x17, 0x4F, 0x99, 0x23, 0xDA, 0xD2, 0xD4, + 0x68, 0x4E, 0x7B, 0xFC, 0x85, 0x24, 0xE7, 0x1A, 0x79, 0xA5, 0x91, 0x9E, + 0xD8, 0xBB, 0x0E, 0xFA, 0xC4, 0x99, 0x31, 0xFB, 0x02, 0x4C, 0x15, 0xEC, + 0x38, 0x6E, 0xBC, 0xF8, 0xA1, 0xCB, 0xAD, 0x8D, 0x12, 0x66, 0x91, 0x61, + 0xAF, 0xA8, 0x01, 0x86, 0xF7, 0x8A, 0x54, 0x30, 0x40, 0xDE, 0x3F, 0x83, + 0xA4, 0x9C, 0x43, 0x98, 0x50, 0x21, 0x12, 0xB3, 0x20, 0x53, 0xE5, 0x46, + 0x82, 0x7E, 0xDF, 0x59, 0x1E, 0x19, 0x0C, 0x2B, 0xFF, 0x77, 0x92, 0x25, + 0xF4, 0x31, 0xDA, 0x82, 0xDA, 0x3A, 0x73, 0xF8, 0x2E, 0x83, 0x30, 0xBF, + 0x1E, 0x47, 0x46, 0x2C, 0x62, 0xBA, 0xA7, 0x95, 0x5D, 0xE2, 0xB8, 0x7A, + 0xE2, 0x3F, 0xD9, 0x6C, 0xEF, 0xC8, 0x47, 0xA7, 0x19, 0x60, 0x56, 0xC0, + 0x8F, 0xB4, 0x8E, 0x1F, 0x33, 0xAD, 0x2A, 0x08, 0xDA, 0x53, 0x52, 0x2D, + 0x86, 0x14, 0x6A, 0xB5, 0x94, 0xD0, 0xFC, 0xEE, 0xE6, 0xDD, 0x76, 0xC6, + 0x91, 0xCA, 0x3D, 0x00, 0xA4, 0x63, 0x3A, 0x38, 0xE4, 0x79, 0xDE, 0x44, + 0x48, 0x41, 0x50, 0x9C, 0x1A, 0xCB, 0x15, 0x68, 0xD5, 0xE5, 0xE8, 0x00, + 0x69, 0x3E, 0x2B, 0x82, 0x3B, 0x3D, 0x0A, 0x8F, 0x8B, 0xBE, 0x98, 0x08, + 0xD9, 0x66, 0xC3, 0xF2, 0xC9, 0x6E, 0xDF, 0xD0, 0xDC, 0xB1, 0x24, 0x91, + 0xA8, 0x70, 0xFA, 0xD2, 0xD7, 0x43, 0x25, 0xE1, 0x04, 0xDA, 0xED, 0x5D, + 0xBF, 0xD0, 0x1A, 0x8B, 0xBD, 0x22, 0xA1, 0xEC, 0x90, 0x76, 0xBF, 0x07, + 0xE2, 0xA5, 0xB4, 0x4D, 0xEA, 0x39, 0xDA, 0x95, 0x2F, 0xE0, 0x77, 0x23, + 0x07, 0x48, 0x28, 0x57, 0x35, 0xD7, 0x30, 0xC0, 0xB2, 0xFC, 0x6E, 0x2B, + 0x2F, 0xF3, 0x44, 0x9C, 0xD8, 0xBF, 0xD9, 0x44, 0x2D, 0x92, 0xDF, 0x51, + 0x7A, 0x6E, 0xBB, 0x69, 0xC9, 0xA8, 0xC2, 0x27, 0x15, 0x8F, 0x88, 0xE3, + 0xFD, 0x96, 0xD4, 0x1D, 0x1A, 0xF9, 0xB7, 0x2C, 0x54, 0xE5, 0xA6, 0x4B, + 0xBC, 0xC3, 0x89, 0xFD, 0x09, 0xAB, 0xB9, 0xB2, 0xC2, 0xF1, 0xB6, 0x9E, + 0xFA, 0x2E, 0xF1, 0x6A, 0x2A, 0x3F, 0x3A, 0xDC, 0x21, 0x66, 0x76, 0xB5, + 0x7C, 0xEA, 0xE5, 0xE0, 0xD9, 0xA9, 0x14, 0x92, 0xD6, 0x0D, 0x04, 0xB4, + 0x04, 0x8A, 0xF6, 0xF1, 0x85, 0x69, 0xF4, 0x1F, 0x8D, 0xBC, 0x6A, 0x9B, + 0x7F, 0x0D, 0x7C, 0xC7, 0x4C, 0x26, 0x60, 0x4F, 0xB0, 0x08, 0x5D, 0x15, + 0x72, 0x02, 0x2E, 0xD1, 0xF1, 0xD1, 0xED, 0x8F, 0x0A, 0x8B, 0x8A, 0xD1, + 0x18, 0x18, 0x77, 0x40, 0x40, 0x35, 0x2B, 0xDB, 0x28, 0x9B, 0x0B, 0x32, + 0xBF, 0x17, 0x54, 0x3B, 0xF5, 0xEF, 0xED, 0x6A, 0x6C, 0x4D, 0x8C, 0x27, + 0xF5, 0x36, 0xD2, 0x97, 0x20, 0x3E, 0x72, 0x50, 0x91, 0x79, 0x93, 0x53, + 0x53, 0xA3, 0x50, 0xD3, 0x09, 0xAF, 0x36, 0x90, 0x0A, 0xAA, 0xE6, 0x19, + 0x05, 0x5D, 0x5D, 0x6D, 0x04, 0x9A, 0x08, 0x7A, 0xD9, 0x06, 0x9C, 0x03, + 0xD9, 0x12, 0xFA, 0x36, 0x10, 0xEB, 0x9C, 0x4C, 0x74, 0xEC, 0x69, 0x36, + 0xB3, 0x8A, 0x0C, 0x22, 0xA6, 0xB3, 0xF1, 0xAE, 0x70, 0x8B, 0xA8, 0x38, + 0x08, 0x0F, 0x42, 0x40, 0x89, 0x6D, 0x09, 0xEC, 0x71, 0x44, 0x8F, 0xD1, + 0xC7, 0xCB, 0x8F, 0x4C, 0xEC, 0xC8, 0x5B, 0x7D, 0xB1, 0x77, 0x36, 0x66, + 0xA6, 0xDF, 0x29, 0x2B, 0x2F, 0x5E, 0x8D, 0x3D, 0xE6, 0x38, 0xC1, 0x32, + 0x0B, 0x64, 0x90, 0xB1, 0xA7, 0x03, 0x4A, 0x41, 0x94, 0xE6, 0xFF, 0x37, + 0x1E, 0x75, 0xD4, 0x1C, 0x71, 0x63, 0xB4, 0x64, 0x9B, 0x1B, 0x4C, 0x7B, + 0xFB, 0x16, 0x95, 0x95, 0xDB, 0xB6, 0x08, 0x93, 0x9B, 0x7B, 0x86, 0xA0, + 0x53, 0x24, 0x40, 0x7F, 0x2F, 0xF0, 0x86, 0xE4, 0x89, 0x02, 0x88, 0xBA, + 0x25, 0xE9, 0xD9, 0x46, 0x08, 0x1C, 0xBD, 0x73, 0x81, 0xBB, 0x48, 0x55, + 0x65, 0x46, 0x9D, 0x06, 0x75, 0x99, 0x75, 0x7A, 0x06, 0x3E, 0x4B, 0x25, + 0x8D, 0x7B, 0x78, 0x81, 0xC6, 0x98, 0xAA, 0x20, 0x22, 0x8B, 0x74, 0x6B, + 0x01, 0x1E, 0x7A, 0x36, 0x39, 0xC7, 0x53, 0x09, 0x53, 0x92, 0xF0, 0x1A, + 0x49, 0x2E, 0x91, 0x26, 0x02, 0xEB, 0x14, 0xEE, 0x8D, 0x48, 0xC1, 0x79, + 0x01, 0x1B, 0x03, 0x33, 0x7B, 0xD1, 0xAE, 0x99, 0xD9, 0xDE, 0x17, 0xAB, + 0xBE, 0xA8, 0x38, 0xAD, 0x8B, 0x82, 0x60, 0x4E, 0xF3, 0xF0, 0xB2, 0xFB, + 0x51, 0x14, 0x57, 0x9A, 0xE3, 0xDC, 0xB0, 0x5C, 0x66, 0xDD, 0xFE, 0x2A, + 0x5A, 0x10, 0x23, 0x2F, 0xBA, 0x07, 0x3C, 0x48, 0x37, 0x6A, 0x29, 0xA5, + 0x6C, 0xC5, 0x1E, 0xCF, 0x36, 0x1C, 0x0B, 0x4B, 0x1F, 0x39, 0x8C, 0xAF, + 0x16, 0x50, 0xEB, 0x42, 0x30, 0x5F, 0x23, 0x74, 0x85, 0x94, 0xFA, 0x69, + 0x53, 0x95, 0xF8, 0xAF, 0x78, 0xDD, 0x88, 0x82, 0xC6, 0xEA, 0xBB, 0xB1, + 0xAF, 0x12, 0xE8, 0x97, 0x9A, 0xBB, 0x70, 0x8C, 0x5D, 0x0B, 0x89, 0xB1, + 0x86, 0x2F, 0x7C, 0x8B, 0x59, 0x57, 0x2D, 0xC9, 0xC8, 0x8A, 0xDC, 0xA1, + 0xCD, 0xE1, 0x5D, 0x15, 0x2E, 0x6C, 0x9C, 0xAA, 0x22, 0x0A, 0x93, 0x6B, + 0x8B, 0x9A, 0xDF, 0xE7, 0xBE, 0xD9, 0x29, 0x02, 0x09, 0x8A, 0x7B, 0x14, + 0xA4, 0x86, 0xF2, 0x50, 0xFC, 0x64, 0xAA, 0x69, 0xC8, 0x8B, 0xB7, 0xA9, + 0x55, 0xFB, 0x1F, 0xD4, 0x35, 0x91, 0xCE, 0x81, 0xBC, 0xC6, 0x54, 0x2A, + 0x86, 0x2F, 0x02, 0x90, 0xB7, 0x01, 0x15, 0x31, 0x69, 0x67, 0x18, 0xA0, + 0x2B, 0x90, 0x3A, 0xA9, 0xA1, 0x38, 0xDD, 0xA7, 0x42, 0x92, 0xE8, 0x71, + 0xCE, 0x32, 0x18, 0x73, 0xCB, 0x1D, 0xC3, 0xA2, 0xF8, 0x1C, 0x6B, 0x60, + 0xED, 0xCA, 0x0F, 0xF6, 0xB5, 0x80, 0x7A, 0x7A, 0x33, 0x6D, 0xD1, 0x6D, + 0xD1, 0x8C, 0xD1, 0x58, 0x3E, 0xA7, 0x7A, 0x95, 0x30, 0x65, 0xBD, 0x07, + 0x15, 0xC1, 0xFC, 0xFF, 0x41, 0x93, 0x5F, 0x7C, 0x7F, 0x30, 0x66, 0x52, + 0x44, 0x16, 0x39, 0x6D, 0x42, 0x9D, 0x0D, 0xF1, 0x72, 0x69, 0x11, 0x53, + 0xC3, 0xA0, 0x9B, 0x89, 0xB6, 0xE4, 0x8C, 0x4B, 0x87, 0x80, 0x9A, 0xB4, + 0x3E, 0x33, 0x8D, 0xAB, 0x81, 0x15, 0x05, 0x19, 0x87, 0xB1, 0xDA, 0x05, + 0x4B, 0x60, 0xBA, 0x1D, 0xE7, 0x3B, 0x7E, 0x42, 0xAB, 0x5A, 0xD0, 0x21, + 0x30, 0xB5, 0x78, 0xB5, 0xC0, 0x8F, 0x83, 0x39, 0x7A, 0x7A, 0xAF, 0x4F, + 0x9B, 0xCC, 0xD9, 0xDA, 0x01, 0x9C, 0xFE, 0xAD, 0xAB, 0xE7, 0xF7, 0x2F, + 0xC1, 0xE6, 0x32, 0xC4, 0x9F, 0xCD, 0x10, 0xF2, 0xA5, 0x0F, 0xDD, 0x54, + 0x98, 0xEA, 0x57, 0x7C, 0x43, 0x39, 0xAA, 0x95, 0x83, 0x7E, 0x1B, 0x34, + 0x3A, 0x29, 0xF7, 0x07, 0xC0, 0x8B, 0xAF, 0x48, 0x71, 0xED, 0xEA, 0x7F, + 0x73, 0xD6, 0x0E, 0x6D, 0x96, 0xC3, 0x0F, 0x9F, 0xA9, 0x5C, 0x98, 0x00, + 0x16, 0xC4, 0xC6, 0x72, 0xEF, 0x00, 0x27, 0x01, 0x31, 0x75, 0x18, 0x28, + 0x75, 0xE5, 0xCB, 0x4D, 0x9E, 0x25, 0xCD, 0x72, 0xD8, 0xAA, 0x1B, 0x0B, + 0x35, 0x6A, 0xDC, 0x0A, 0x11, 0x85, 0x01, 0x7B, 0x94, 0x29, 0xA8, 0x41, + 0x29, 0xD4, 0xCE, 0xBE, 0x7B, 0x14, 0x45, 0x52, 0x56, 0xEB, 0x4E, 0x45, + 0x14, 0x62, 0x87, 0xA4, 0x29, 0x24, 0xF6, 0xF8, 0x70, 0x77, 0x29, 0x6A, + 0xB6, 0x56, 0x46, 0x20, 0x5A, 0x9C, 0x45, 0x3A, 0x54, 0x6B, 0xF8, 0x2B, + 0x4A, 0xCA, 0x8E, 0xBB, 0x97, 0x15, 0xAC, 0x6B, 0x60, 0x34, 0x73, 0x6F, + 0x26, 0xEA, 0x1F, 0x1F, 0x8C, 0x10, 0x40, 0x46, 0x10, 0x09, 0x16, 0x37, + 0x26, 0x86, 0xB1, 0xCF, 0x29, 0x28, 0x9F, 0x14, 0x75, 0x6C, 0xEE, 0x7F, + 0x92, 0xFB, 0x95, 0xD6, 0xFA, 0x8F, 0x13, 0x75, 0x37, 0xA5, 0xCC, 0x8A, + 0x8E, 0xD0, 0x50, 0x9D, 0x80, 0x3B, 0xD8, 0x1E, 0x5A, 0xA4, 0x66, 0xA9, + 0x5D, 0xC7, 0xB2, 0x25, 0x3D, 0xCB, 0x36, 0x82, 0x36, 0x9F, 0xCD, 0x11, + 0x07, 0x6B, 0x94, 0xED, 0x1D, 0xB2, 0x5A, 0xD8, 0x39, 0xEE, 0xC9, 0x5F, + 0x5A, 0xDC, 0x2D, 0xDE, 0x75, 0x9D, 0x3C, 0x6E, 0xA0, 0xD3, 0x61, 0x96, + 0x08, 0x44, 0x37, 0x31, 0x62, 0xDB, 0xC1, 0xEC, 0x72, 0x7A, 0xDF, 0x29, + 0xD7, 0x94, 0x10, 0x42, 0xA0, 0x77, 0xC4, 0x3E, 0xA2, 0x6D, 0x4D, 0x0D, + 0x3F, 0xFA, 0x9A, 0x3B, 0x3D, 0x7D, 0x86, 0xD1, 0x91, 0x96, 0x3F, 0x6C, + 0x9C, 0xEF, 0x83, 0xE7, 0x31, 0xC9, 0xEB, 0x7B, 0xDA, 0x82, 0x7A, 0xAA, + 0xF9, 0xD7, 0xB2, 0x55, 0x39, 0xE8, 0xF4, 0xEC, 0x06, 0xE8, 0x1C, 0x22, + 0x68, 0x18, 0x10, 0x8F, 0xF9, 0x13, 0x0C, 0x0E, 0xEC, 0x26, 0xDB, 0x0D, + 0x03, 0xE1, 0x24, 0xC1, 0x97, 0xDB, 0x13, 0xA1, 0x2C, 0xFC, 0x61, 0x32, + 0xC6, 0x1B, 0xFB, 0x4F, 0x7C, 0x18, 0xD4, 0x85, 0x1E, 0x14, 0xEE, 0x45, + 0x1A, 0x0C, 0xA3, 0xD0, 0x2A, 0x8F, 0x44, 0x10, 0x7F, 0x32, 0xC3, 0x6E, + 0xF9, 0x57, 0x6D, 0x59, 0x49, 0xAA, 0xD0, 0x5D, 0xBA, 0xB7, 0xA5, 0x28, + 0xD3, 0xE9, 0x1E, 0x99, 0xB1, 0x46, 0x4B, 0xF5, 0x8D, 0x4A, 0xE1, 0x11, + 0xAF, 0x9F, 0xBE, 0x3A, 0x21, 0xE1, 0x3F, 0x8F, 0x83, 0xF0, 0x2F, 0x30, + 0xB6, 0x59, 0x4F, 0x03, 0x17, 0xDA, 0x32, 0x7F, 0x01, 0x0F, 0x58, 0xB1, + 0xAC, 0x04, 0xA5, 0xC3, 0x4D, 0x5C, 0x13, 0xFD, 0x14, 0x58, 0x8D, 0xEE, + 0x78, 0x82, 0xBD, 0xD4, 0xFE, 0xA3, 0x7F, 0xDC, 0x78, 0x44, 0x07, 0x3A, + 0x4A, 0x64, 0x31, 0x1A, 0x7F, 0xBD, 0x5E, 0x7D, 0x20, 0x99, 0x3B, 0xE3, + 0x2B, 0x99, 0x89, 0xDA, 0xEA, 0x73, 0x13, 0x5E, 0x53, 0x5C, 0x93, 0x93, + 0xE9, 0x8B, 0xEA, 0x7E, 0xB5, 0xAA, 0xDD, 0xA0, 0x63, 0x0C, 0xB1, 0x2F, + 0x2C, 0xD7, 0xAA, 0x13, 0x51, 0x5D, 0xA8, 0x5C, 0x97, 0x9A, 0x9B, 0xF2, + 0x70, 0x0D, 0xA6, 0x1C, 0x6E, 0xD1, 0xA5, 0xBA, 0xB8, 0x62, 0x78, 0x00, + 0xB1, 0xE5, 0x5D, 0xB5, 0x9F, 0xD0, 0x0C, 0x06, 0x51, 0x9E, 0x41, 0xF0, + 0xE3, 0xBA, 0x46, 0x39, 0x83, 0x39, 0xAF, 0x7A, 0xDF, 0x5C, 0x0E, 0xDB, + 0xE4, 0xEB, 0x4C, 0x0E, 0x99, 0xC3, 0xD7, 0x95, 0x31, 0xBF, 0xDB, 0x2D, + 0xB1, 0x21, 0xA8, 0xDD, 0xB6, 0xB8, 0xAE, 0x08, 0x0A, 0x71, 0x23, 0xF9, + 0xE1, 0x57, 0xAD, 0xB8, 0x19, 0xBA, 0x39, 0xB6, 0x65, 0xAC, 0xC3, 0x42, + 0x6F, 0xB9, 0x4A, 0xD9, 0xB5, 0xB9, 0xA9, 0x1E, 0xE5, 0xA7, 0x3F, 0xE6, + 0x40, 0x63, 0x02, 0x2F, 0xF2, 0x01, 0x0D, 0x07, 0xA1, 0x2F, 0xC3, 0x65, + 0xC0, 0x58, 0x2D, 0x21, 0xBC, 0x4C, 0x6E, 0x51, 0xF4, 0xB0, 0xF4, 0x87, + 0x79, 0xA5, 0x74, 0x08, 0xF7, 0xFB, 0xF6, 0xF9, 0x13, 0x49, 0x11, 0xBC, + 0x36, 0x14, 0x87, 0x20, 0x06, 0x74, 0xBA, 0x1E, 0xCF, 0x92, 0xBC, 0xC3, + 0x26, 0x6D, 0xD9, 0x05, 0xC6, 0x08, 0x91, 0x97, 0x8F, 0x0F, 0xC1, 0x9A, + 0x3A, 0x91, 0x9C, 0x5F, 0xBE, 0x51, 0x9D, 0x01, 0xA4, 0xF3, 0xAA, 0x26, + 0x5E, 0x25, 0xDE, 0xF2, 0x01, 0x6B, 0x84, 0x85, 0x46, 0xBF, 0x8C, 0xCB, + 0xBC, 0x24, 0x39, 0x88, 0xB7, 0x2E, 0x5B, 0xD4, 0x36, 0x12, 0xD4, 0xFD, + 0xAE, 0x81, 0xA3, 0x9E, 0xD6, 0xE8, 0xA2, 0x40, 0xBD, 0x22, 0xBA, 0x0D, + 0x51, 0x8C, 0x67, 0xBC, 0x54, 0x13, 0x3C, 0x1D, 0x05, 0x20, 0xA8, 0x9D, + 0x61, 0x0A, 0x74, 0x73, 0x99, 0x5E, 0xBD, 0xB3, 0x10, 0xD9, 0xC7, 0x7C, + 0x58, 0x24, 0xF5, 0x9F, 0xFA, 0x13, 0x35, 0x83, 0x1A, 0x14, 0x13, 0x7B, + 0x3B, 0xB6, 0xF5, 0x16, 0xB2, 0x75, 0xC2, 0x9E, 0x41, 0x83, 0xC5, 0x68, + 0x8C, 0xDF, 0xFC, 0xC1, 0x2E, 0xAC, 0xFC, 0x08, 0x1C, 0xE5, 0x2D, 0x15, + 0x0D, 0xB8, 0xE2, 0x3F, 0xD7, 0xA1, 0x46, 0x9E, 0xCB, 0x46, 0x4A, 0x4A, + 0x71, 0x88, 0x4E, 0x61, 0x0F, 0x82, 0x34, 0xF0, 0xC5, 0xEA, 0xD0, 0x08, + 0x9A, 0xCF, 0xAE, 0x93, 0xEB, 0x69, 0x06, 0x2D, 0x96, 0x1F, 0x96, 0x70, + 0xDE, 0x1A, 0x87, 0xA0, 0x24, 0x7E, 0x1F, 0x8E, 0x9C, 0xDB, 0x77, 0xC1, + 0x95, 0xDC, 0xDE, 0x9E, 0xE7, 0xEE, 0x85, 0xD9, 0xB4, 0xEC, 0xD5, 0x2A, + 0xDF, 0xF7, 0xCD, 0xA6, 0x2B, 0x81, 0xFA, 0xE6, 0x10, 0xB1, 0x3B, 0x03, + 0x23, 0xE0, 0xBD, 0xA1, 0xA4, 0x7F, 0x89, 0x69, 0x55, 0x78, 0x14, 0xB1, + 0x86, 0x07, 0x6E, 0xB0, 0xB2, 0xB3, 0x96, 0xFD, 0xA0, 0x03, 0x00, 0xC1, + 0xF5, 0x60, 0xAA, 0x62, 0xD4, 0xB2, 0xC7, 0xA3, 0x9E, 0x25, 0xF5, 0xF5, + 0xB3, 0x85, 0x1D, 0xD2, 0x47, 0xDB, 0xF3, 0x1E, 0x70, 0x85, 0xAC, 0x30, + 0x02, 0x87, 0xF4, 0xEB, 0xB8, 0x99, 0xFB, 0x65, 0xAA, 0x56, 0x3F, 0xDC, + 0x5C, 0x52, 0x2C, 0x2A, 0xDE, 0x23, 0xEA, 0xE7, 0xD0, 0x20, 0x9C, 0xF3, + 0x9A, 0xA9, 0x16, 0x4C, 0xCE, 0x29, 0x87, 0x08, 0x52, 0xA4, 0x5D, 0x3A, + 0x4C, 0xC6, 0x2C, 0x13, 0x16, 0x94, 0x3E, 0x14, 0x5B, 0x50, 0x92, 0x34, + 0xC2, 0x64, 0x7A, 0x95, 0x89, 0x5C, 0xCA, 0x82, 0xF8, 0x59, 0x7B, 0x27, + 0xAA, 0x0F, 0x64, 0x45, 0xBB, 0xFA, 0x61, 0x30, 0x30, 0x57, 0x6E, 0x3A, + 0x69, 0x1A, 0x8F, 0x3E, 0xB7, 0x63, 0xCB, 0x86, 0xF6, 0xE2, 0xC6, 0xDF, + 0xFB, 0xE5, 0xB7, 0xEA, 0x3B, 0xF5, 0x28, 0x31, 0x6C, 0x44, 0x54, 0xD3, + 0xEC, 0x37, 0x77, 0xB9, 0xF7, 0x08, 0xF1, 0x05, 0xDA, 0x16, 0xB8, 0x95, + 0x69, 0x5E, 0x84, 0x49, 0x31, 0xC5, 0xEC, 0x06, 0x30, 0x82, 0x52, 0xC2, + 0x46, 0xB2, 0xE3, 0x47, 0xE6, 0x60, 0x12, 0x1C, 0x96, 0xDC, 0xBB, 0x08, + 0x60, 0x4A, 0xC3, 0x01, 0x4D, 0xBC, 0x1A, 0x4E, 0xF8, 0x3C, 0x06, 0x66, + 0xF0, 0x78, 0xB9, 0x6D, 0x04, 0x66, 0x60, 0xDF, 0x7E, 0x5F, 0x2C, 0x07, + 0x2A, 0x5A, 0x4F, 0x13, 0x59, 0x40, 0x26, 0x6F, 0xC6, 0x4A, 0x37, 0xE9, + 0x5E, 0x58, 0x41, 0xEF, 0xCD, 0xCE, 0x89, 0xAD, 0xAB, 0x72, 0xEF, 0x16, + 0x8B, 0x7D, 0x66, 0x1A, 0x98, 0xFC, 0x8B, 0xC2, 0xF7, 0xFD, 0xC3, 0xF9, + 0x51, 0xCF, 0x26, 0x06, 0xC6, 0x28, 0x2C, 0x2E, 0x8D, 0x53, 0xBE, 0xD8, + 0xA7, 0x26, 0xC3, 0xD6, 0xD8, 0x05, 0xCD, 0x19, 0xCC, 0xA3, 0x23, 0x14, + 0x74, 0xC2, 0x97, 0x01, 0x1C, 0x0B, 0x96, 0x22, 0xE2, 0x94, 0x23, 0xD8, + 0xC2, 0x1B, 0xF7, 0x03, 0xB5, 0x1E, 0x35, 0x2C, 0x9A, 0x9B, 0xCC, 0x7A, + 0x1F, 0x04, 0x52, 0x26, 0x69, 0xD7, 0x6A, 0x21, 0xEA, 0xA8, 0x3A, 0x62, + 0x51, 0xA2, 0x02, 0xB2, 0x37, 0x13, 0xC0, 0x57, 0xCC, 0x1D, 0xC4, 0xFF, + 0xE6, 0x90, 0xC1, 0x86, 0x20, 0x5B, 0x03, 0xED, 0x6F, 0x32, 0x77, 0x9A, + 0x86, 0xB1, 0x1C, 0x89, 0xFB, 0x9B, 0x2B, 0xF4, 0x86, 0xE9, 0xB9, 0xF0, + 0x39, 0xF9, 0x85, 0x51, 0x0C, 0x62, 0x95, 0x01, 0x28, 0xD7, 0x6F, 0xB7, + 0xBF, 0xC7, 0x2F, 0x2F, 0xF8, 0xAC, 0x31, 0xD1, 0xF8, 0x5D, 0x37, 0xDC, + 0xBE, 0x98, 0x2D, 0x76, 0xC4, 0x9C, 0x20, 0xDA, 0xB6, 0xF3, 0xC3, 0xC0, + 0x31, 0x14, 0xBF, 0x2B, 0x87, 0x00, 0x66, 0x4A, 0xE2, 0x50, 0x49, 0x84, + 0x1E, 0x97, 0x85, 0xB8, 0xED, 0x33, 0x2B, 0xF8, 0x59, 0xC9, 0x03, 0x3F, + 0x5A, 0x28, 0xA7, 0xB8, 0xFB, 0x9F, 0x2E, 0x44, 0xFA, 0x2E, 0x6D, 0xFF, + 0x40, 0x9E, 0x21, 0xE4, 0x05, 0xB6, 0x31, 0x76, 0xAE, 0xDB, 0x76, 0x96, + 0x88, 0x4D, 0x96, 0xCE, 0x1E, 0xD4, 0x22, 0x91, 0xE4, 0xA8, 0x91, 0x5B, + 0xED, 0xA4, 0x03, 0x10, 0x06, 0x8C, 0x24, 0xE4, 0xC4, 0x80, 0x16, 0x4D, + 0x50, 0xAF, 0xC1, 0x64, 0x4A, 0xA4, 0xB9, 0x79, 0xE3, 0x37, 0x38, 0x7D, + 0x8A, 0x85, 0x90, 0xB7, 0x1C, 0x7D, 0x24, 0x26, 0x7F, 0x5F, 0x0C, 0x9D, + 0xB3, 0x2D, 0x4D, 0xB0, 0xEE, 0xAC, 0x95, 0x8F, 0x2E, 0x5A, 0xA2, 0x78, + 0x7D, 0x0D, 0xDA, 0x99, 0x47, 0x93, 0x13, 0xF9, 0x0C, 0xFF, 0x5E, 0x71, + 0x99, 0x8D, 0xE3, 0x21, 0x03, 0x44, 0xF7, 0x4D, 0x61, 0xD0, 0x1D, 0x47, + 0xCB, 0x3D, 0x57, 0x4D, 0x43, 0x3C, 0x01, 0xBB, 0x33, 0xC2, 0x04, 0x91, + 0x66, 0xC9, 0xA1, 0xF2, 0x18, 0x47, 0x0D, 0x60, 0x61, 0x9F, 0xA7, 0x27, + 0x99, 0xB5, 0x27, 0x88, 0x60, 0x2B, 0x8D, 0x3C, 0x8F, 0xD5, 0x53, 0xDD, + 0x64, 0xC5, 0x14, 0xB3, 0x77, 0x5C, 0xDE, 0xA9, 0x91, 0x2E, 0x23, 0x83, + 0x24, 0xE3, 0xE6, 0x38, 0xC5, 0xCB, 0x9B, 0x4E, 0xC4, 0xEE, 0x3D, 0x7D, + 0x58, 0x6C, 0x60, 0x16, 0x97, 0xBC, 0xF6, 0x47, 0x77, 0x83, 0xCE, 0xF1, + 0xA9, 0x8F, 0xDA, 0xFF, 0xB3, 0xE4, 0x52, 0x50, 0x67, 0xBA, 0x13, 0x2A, + 0xAB, 0xB4, 0x32, 0xC0, 0x4C, 0xAE, 0xBC, 0x92, 0x3C, 0x65, 0x97, 0xA4, + 0xD8, 0x10, 0xDF, 0x60, 0x95, 0xCA, 0x74, 0x17, 0x3F, 0x8A, 0xC5, 0x2A, + 0x9F, 0xAF, 0xDB, 0xA4, 0x3C, 0x77, 0x01, 0xA6, 0x02, 0x66, 0x0C, 0x15, + 0x0F, 0x00, 0x90, 0xBD, 0x9B, 0x77, 0x53, 0xFD, 0x93, 0x44, 0x6F, 0x86, + 0x50, 0x54, 0x11, 0x40, 0xBE, 0x72, 0xD2, 0xE5, 0x4B, 0xA4, 0x13, 0x88, + 0x0D, 0xAA, 0x87, 0xFB, 0xED, 0x6E, 0x66, 0x59, 0xFB, 0xB8, 0xA0, 0xFE, + 0xD1, 0x08, 0x27, 0x07, 0xC4, 0x31, 0x31, 0x8C, 0x6F, 0xE2, 0x0B, 0x23, + 0x95, 0x96, 0xF6, 0x3B, 0xD9, 0xD4, 0xB6, 0x5D, 0x84, 0xC2, 0xC4, 0x23, + 0xE9, 0xF2, 0xB6, 0x96, 0x9E, 0xD0, 0x4A, 0xE2, 0x2D, 0xAB, 0xBB, 0xB0, + 0xAA, 0xEC, 0xFE, 0x67, 0x3A, 0xF9, 0x1A, 0xA8, 0x30, 0xDA, 0x9A, 0x17, + 0xD5, 0x46, 0xCC, 0xBA, 0xF7, 0xDA, 0x8E, 0x54, 0x49, 0x58, 0xBE, 0x9C, + 0x3B, 0x7E, 0x4E, 0xE4, 0x06, 0x8E, 0x32, 0xB4, 0x7A, 0xEA, 0xF8, 0x40, + 0x78, 0xD4, 0x62, 0xBD, 0xAC, 0xA7, 0x9F, 0x0B, 0x27, 0xC4, 0x90, 0xA1, + 0xDF, 0x15, 0x64, 0xBA, 0xEC, 0xCB, 0x69, 0xF7, 0xBF, 0xE6, 0x0D, 0x89, + 0x6E, 0x5D, 0x62, 0x5D, 0xEA, 0x04, 0x37, 0x1B, 0x40, 0x04, 0x37, 0x3B, + 0xD0, 0xC6, 0xE0, 0xFC, 0x63, 0xA6, 0xA1, 0xC8, 0xAB, 0x45, 0xA4, 0xFD, + 0x05, 0xFA, 0x57, 0x01, 0x5F, 0x34, 0x76, 0x0B, 0xCF, 0xB0, 0xD3, 0xFD, + 0xED, 0x66, 0xAC, 0xFB, 0x63, 0x89, 0x53, 0x46, 0x61, 0xFF, 0x22, 0x64, + 0xEB, 0x20, 0x60, 0x02, 0x0B, 0x78, 0xA4, 0xEC, 0xF9, 0x1D, 0x34, 0xAB, + 0x98, 0x33, 0xB7, 0x76, 0x4D, 0xDA, 0x4C, 0x33, 0x57, 0xD6, 0x23, 0x84, + 0x25, 0x76, 0x4A, 0x0B, 0xDD, 0xC5, 0xCD, 0x8B, 0xFF, 0xB8, 0x22, 0x37, + 0x16, 0xAB, 0xCE, 0xDD, 0x92, 0xDB, 0xD1, 0x12, 0xB3, 0x52, 0xD0, 0xE5, + 0x4E, 0xBE, 0x69, 0xA8, 0xDF, 0x2F, 0xAF, 0x22, 0x29, 0xD0, 0x28, 0xD3, + 0x80, 0xA1, 0x39, 0x57, 0x88, 0x17, 0xBA, 0x63, 0x75, 0xD7, 0xB9, 0x05, + 0xBC, 0x4E, 0x60, 0x02, 0xAC, 0x84, 0x96, 0xD9, 0x23, 0x1E, 0xE3, 0xDA, + 0xD6, 0x74, 0xC2, 0xCD, 0xA4, 0x22, 0x65, 0x82, 0x50, 0x10, 0xFE, 0x76, + 0xF5, 0xE7, 0x61, 0x0D, 0x86, 0xD9, 0x8D, 0x56, 0x10, 0x43, 0x9C, 0xFE, + 0x05, 0x3A, 0x51, 0x93, 0x81, 0x74, 0xD2, 0x11, 0x10, 0x82, 0xFC, 0x4C, + 0xA1, 0x83, 0x64, 0x21, 0x4B, 0xEB, 0xA9, 0x8E, 0x9A, 0xB8, 0xAB, 0x95, + 0x15, 0x96, 0x9D, 0x49, 0x9D, 0xFE, 0xEC, 0xC8, 0xC3, 0x6B, 0xBB, 0x4C, + 0x8E, 0x75, 0xBB, 0x8C, 0x42, 0x76, 0x18, 0x8E, 0x6F, 0xE0, 0xD6, 0x7C, + 0x19, 0xDA, 0x08, 0xD7, 0xE1, 0x73, 0x6C, 0x18, 0x1B, 0x90, 0xCF, 0x6E, + 0x18, 0xE4, 0x61, 0xC7, 0x1B, 0xE3, 0x93, 0x22, 0x80, 0xB0, 0xE6, 0x66, + 0xA0, 0xF7, 0x06, 0xA9, 0x1E, 0xD8, 0x62, 0xC5, 0xE3, 0x52, 0x59, 0xF1, + 0x71, 0x2A, 0x3C, 0xC0, 0xBC, 0x37, 0xF4, 0x51, 0x8C, 0x81, 0xB4, 0x65, + 0x95, 0x4A, 0x9D, 0xB5, 0xDF, 0x59, 0x2A, 0x06, 0xA6, 0xB1, 0x05, 0xCE, + 0xF3, 0x24, 0x7A, 0x59, 0x37, 0x76, 0x79, 0xAB, 0x84, 0x23, 0xF9, 0x5C, + 0xFD, 0x48, 0xA3, 0xED, 0x75, 0xB8, 0x58, 0x2F, 0x8A, 0xE7, 0xAD, 0x71, + 0x94, 0x62, 0x27, 0x1C, 0xAC, 0x5F, 0xE3, 0x92, 0x12, 0x6F, 0xAE, 0xAC, + 0x12, 0xDA, 0xA9, 0x02, 0x45, 0xD7, 0x62, 0x53, 0xE0, 0xB8, 0xB9, 0xA8, + 0x02, 0xD7, 0xED, 0xA9, 0x26, 0x8C, 0x8F, 0x82, 0x78, 0x93, 0x8D, 0x1E, + 0x8F, 0x8D, 0xEC, 0x89, 0xBA, 0x37, 0x6A, 0x35, 0x21, 0x61, 0xD9, 0xE1, + 0x52, 0x95, 0x46, 0xD5, 0x3A, 0xDF, 0x8B, 0xBD, 0x9F, 0x36, 0x71, 0x95, + 0x09, 0x28, 0x88, 0xB1, 0xF0, 0x70, 0xC2, 0x01, 0xA1, 0x4E, 0x0A, 0xF8, + 0xF2, 0x25, 0x1C, 0x60, 0x3C, 0xA3, 0xA0, 0xFB, 0x5C, 0x3E, 0xF4, 0x11, + 0xCC, 0x54, 0xDA, 0xD7, 0x80, 0x80, 0xCC, 0xC2, 0xB0, 0x81, 0xDF, 0xC8, + 0x1C, 0x96, 0x01, 0x95, 0x17, 0x4E, 0x01, 0x7E, 0x76, 0xF4, 0x1C, 0x61, + 0x98, 0x58, 0x2A, 0xBD, 0x04, 0x7E, 0x14, 0x8A, 0x88, 0x77, 0xB6, 0xAD, + 0x05, 0x54, 0xC7, 0xDA, 0xDD, 0x08, 0xBA, 0x5C, 0x9F, 0xC8, 0x3C, 0x87, + 0x24, 0xB5, 0xA0, 0x53, 0xC7, 0xBD, 0x92, 0x77, 0x5F, 0xE8, 0x22, 0x34, + 0x27, 0x98, 0x10, 0xD7, 0x4B, 0x76, 0x77, 0x26, 0x2D, 0xD0, 0x24, 0x03, + 0x8E, 0x15, 0x57, 0xF2, 0xC6, 0xED, 0x39, 0xB7, 0xAD, 0xE9, 0xFA, 0x14, + 0xED, 0xCF, 0x50, 0x9E, 0x8D, 0xAC, 0x87, 0x4B, 0x26, 0x28, 0xE4, 0x02, + 0xBE, 0x24, 0x6A, 0x39, 0x17, 0xBE, 0x9B, 0x79, 0xB7, 0x7E, 0xDF, 0xA6, + 0x6E, 0x7B, 0x52, 0xE6, 0x1C, 0xD2, 0xAD, 0xCE, 0x30, 0xB9, 0x91, 0xE7, + 0x64, 0x8B, 0xBD, 0x1E, 0x8E, 0x40, 0xE3, 0x69, 0xA6, 0xD4, 0xB2, 0x18, + 0x42, 0x53, 0x6C, 0xE6, 0x1C, 0x69, 0xF9, 0x26, 0x84, 0x4E, 0x6F, 0x16, + 0xD5, 0x39, 0xB5, 0x4C, 0x86, 0xC9, 0x0D, 0x07, 0x6D, 0x25, 0x61, 0x9E, + 0x7D, 0xDA, 0xB7, 0x13, 0x73, 0x7B, 0xC6, 0xF9, 0xF8, 0x25, 0x9D, 0x44, + 0xA6, 0x70, 0xFE, 0x5F, 0xC0, 0xFA, 0x64, 0xEE, 0x85, 0x6D, 0xA5, 0x0C, + 0x28, 0x68, 0x8C, 0x17, 0xCE, 0x3E, 0x38, 0x86, 0x83, 0x24, 0x97, 0xA3, + 0xC2, 0x54, 0xF9, 0x3C, 0xE7, 0x3A, 0xE8, 0xBC, 0x6D, 0xB8, 0x17, 0x7D, + 0xF0, 0x6C, 0xEF, 0xFB, 0xBB, 0xC9, 0xD7, 0x5B, 0xBF, 0xBB, 0x99, 0x83, + 0x94, 0x29, 0xE9, 0x9F, 0xFC, 0x6D, 0xD7, 0xA8, 0x6C, 0x62, 0x42, 0x18, + 0x95, 0x2D, 0x44, 0xFF, 0xB4, 0x48, 0x30, 0x88, 0x29, 0x25, 0x41, 0x83, + 0x0F, 0xAE, 0x9D, 0xE3, 0xEC, 0xB2, 0x18, 0x0F, 0xBF, 0x4F, 0x11, 0x1F, + 0xDA, 0xF2, 0xEC, 0x54, 0xE3, 0xCF, 0xE9, 0xAD, 0x4A, 0x7E, 0xF0, 0xDE, + 0xD4, 0x65, 0x21, 0x6F, 0x3A, 0xA8, 0x2E, 0xD5, 0x02, 0x39, 0x11, 0x4C, + 0xA5, 0x0A, 0xF1, 0xE4, 0x04, 0xFE, 0xC7, 0xFA, 0xE2, 0x2B, 0x74, 0xD3, + 0xBD, 0xB2, 0x8D, 0xAB, 0x18, 0x6B, 0x22, 0x3B, 0x79, 0x67, 0x88, 0x0F, + 0x05, 0xB2, 0xA5, 0x26, 0x9B, 0x5A, 0x4E, 0x96, 0xBE, 0xE4, 0x60, 0x9F, + 0xD5, 0x8C, 0x0F, 0x81, 0x12, 0xEE, 0x5E, 0xAA, 0x63, 0x10, 0x0C, 0x87, + 0x42, 0x73, 0xA7, 0x16, 0x97, 0x7D, 0x8A, 0x3E, 0x6C, 0xAC, 0xB8, 0xAF, + 0x70, 0xC2, 0xCA, 0x95, 0xD5, 0x01, 0x9A, 0x3B, 0xB0, 0x36, 0xBF, 0xEE, + 0xF9, 0x7D, 0x0B, 0xA1, 0x21, 0xA6, 0x6D, 0x85, 0x12, 0xB1, 0xCF, 0x14, + 0xE8, 0xCC, 0xFC, 0xC3, 0xA2, 0x1A, 0x09, 0x28, 0x48, 0xEB, 0xA8, 0xB2, + 0x8B, 0x4D, 0x17, 0xCD, 0x5C, 0x47, 0x70, 0xB9, 0x82, 0xB0, 0xFF, 0xEA, + 0xE8, 0x3F, 0x64, 0xDB, 0x9A, 0x0E, 0xFC, 0xED, 0x1D, 0xD2, 0xDE, 0x03, + 0x92, 0x91, 0x17, 0xF1, 0x6F, 0x38, 0x14, 0xEC, 0x79, 0x14, 0xCF, 0xA0, + 0x2B, 0x63, 0x65, 0x84, 0x28, 0xD3, 0xB8, 0x77, 0x4C, 0x0B, 0x55, 0x4D, + 0xF5, 0x89, 0xEF, 0xE7, 0x41, 0xC1, 0x5F, 0x18, 0xAE, 0x06, 0x7F, 0xA9, + 0x37, 0x84, 0x34, 0x6F, 0x7C, 0xC3, 0x9B, 0x96, 0x68, 0x88, 0x91, 0x99, + 0x35, 0x2B, 0xFF, 0x62, 0xD8, 0xC5, 0xE0, 0x4D, 0x40, 0x79, 0x1D, 0x18, + 0x30, 0x58, 0x4B, 0xF9, 0x48, 0xA7, 0x27, 0x02, 0xF5, 0x67, 0xB3, 0x17, + 0x4C, 0x22, 0x46, 0x2B, 0x39, 0x20, 0x79, 0x22, 0xE9, 0x25, 0x13, 0x1D, + 0x28, 0x20, 0x3E, 0xDA, 0x49, 0x53, 0xA6, 0x3D, 0x7F, 0x70, 0x7B, 0xA6, + 0x75, 0xA9, 0x45, 0xEB, 0x3B, 0x8F, 0xFE, 0x36, 0xAD, 0xBA, 0xBE, 0x5B, + 0x5A, 0x5B, 0x9E, 0x2A, 0xEA, 0x28, 0xFE, 0xD5, 0x2D, 0x4A, 0x89, 0x7B, + 0x6C, 0xBE, 0xF6, 0xEF, 0x19, 0xCD, 0xA1, 0x90, 0xD1, 0x44, 0x10, 0x58, + 0x58, 0xD8, 0x39, 0x53, 0x13, 0xA9, 0xBF, 0x02, 0xBC, 0x7A, 0xD3, 0xBC, + 0xD1, 0x61, 0xA4, 0xCC, 0x64, 0x0C, 0xF3, 0x51, 0x7C, 0x8B, 0x03, 0x67, + 0xBC, 0xA4, 0x0C, 0x20, 0x5C, 0xD5, 0xF1, 0xCA, 0xF3, 0x7B, 0x93, 0x5D, + 0x1D, 0x5B, 0x2C, 0xF2, 0x92, 0x3D, 0xF5, 0x0B, 0x90, 0x4C, 0x0C, 0xB6, + 0x1C, 0x4D, 0x8D, 0x15, 0x9C, 0x9B, 0x46, 0xDC, 0xC0, 0x7D, 0x01, 0x92, + 0x2B, 0x7D, 0xED, 0xCA, 0x27, 0xF3, 0xA2, 0x0F, 0x46, 0x62, 0x09, 0xEA, + 0x4B, 0xB1, 0x70, 0x6C, 0x24, 0x96, 0x93, 0xFB, 0xA5, 0x95, 0xD6, 0xF6, + 0xDD, 0x04, 0x39, 0x05, 0x58, 0x5C, 0xAC, 0xE2, 0x12, 0xAC, 0x9C, 0x7F, + 0x69, 0xBB, 0x0D, 0xD1, 0xD8, 0xE7, 0x26, 0x6D, 0x32, 0xCF, 0xB7, 0x12, + 0xC5, 0x21, 0x49, 0x64, 0xCC, 0x31, 0x72, 0x33, 0x8E, 0x2F, 0xC5, 0x9F, + 0x4C, 0x92, 0x5E, 0xDB, 0x03, 0x8F, 0x1F, 0x2A, 0xBB, 0xA6, 0x9C, 0xA0, + 0x1F, 0xC2, 0x89, 0xB1, 0xA6, 0x70, 0x32, 0x17, 0x74, 0x35, 0x14, 0xE2, + 0xF8, 0x83, 0x9D, 0x1E, 0x04, 0xD7, 0x05, 0x34, 0x8E, 0xAE, 0xA8, 0x0A, + 0x34, 0x74, 0xA7, 0x42, 0x1B, 0x1F, 0x90, 0x31, 0xA7, 0x9A, 0xFA, 0xC7, + 0xD3, 0x6C, 0x45, 0xBA, 0x49, 0x3C, 0x4E, 0xBA, 0x85, 0xFC, 0x0B, 0x8A, + 0x89, 0xEF, 0x6A, 0xD2, 0x88, 0xF1, 0xA9, 0xA4, 0x55, 0x54, 0xA0, 0x38, + 0x4D, 0xEC, 0x1B, 0x9D, 0x70, 0x7F, 0x98, 0x9E, 0xE0, 0x7E, 0xC0, 0x4F, + 0xD3, 0xA5, 0xC5, 0x78, 0x86, 0xDD, 0x92, 0xB5, 0x8A, 0xA5, 0xFB, 0x75, + 0x64, 0x06, 0x66, 0xAF, 0x06, 0xF2, 0xEF, 0x7C, 0x82, 0x61, 0xE3, 0x81, + 0x64, 0xBC, 0x53, 0x03, 0x8B, 0x62, 0x61, 0xE7, 0xFD, 0x75, 0x3A, 0x63, + 0x9C, 0x03, 0x84, 0x00, 0xA0, 0x90, 0x27, 0xAA, 0xF3, 0xA7, 0xF8, 0xB4, + 0xB5, 0xF5, 0xC7, 0x22, 0xDE, 0x35, 0x95, 0x3A, 0x35, 0xE6, 0x6D, 0x89, + 0x58, 0x0D, 0xBC, 0xC2, 0xC6, 0x97, 0xB1, 0xD4, 0xA6, 0xF0, 0x65, 0x66, + 0x7F, 0x19, 0xAF, 0x50, 0x88, 0xB9, 0x58, 0x8C, 0xC2, 0xED, 0x6E, 0x4A, + 0xF8, 0xB3, 0xC7, 0x06, 0x1A, 0xCF, 0x92, 0xC4, 0x98, 0x43, 0x27, 0x0D, + 0xA2, 0x01, 0x5B, 0x85, 0x98, 0x8C, 0x9C, 0x5E, 0x82, 0x19, 0xA8, 0x4E, + 0xA8, 0x60, 0xB1, 0xEE, 0x14, 0x73, 0xC7, 0x70, 0xA9, 0x6E, 0x2A, 0x39, + 0x4F, 0xF6, 0x4C, 0x77, 0x1F, 0xB3, 0x7A, 0x4B, 0xAB, 0xA8, 0x14, 0x8D, + 0xF2, 0xC5, 0xBC, 0xE2, 0xF1, 0x7E, 0xB8, 0xC3, 0x6B, 0xA2, 0xF5, 0x61, + 0x79, 0x93, 0x98, 0xBB, 0x13, 0x5F, 0x7F, 0x62, 0xAE, 0x74, 0xC6, 0xF8, + 0x23, 0x4F, 0xA6, 0x41, 0x0D, 0x23, 0xF6, 0x3F, 0xF5, 0x23, 0xD9, 0xE4, + 0xCC, 0x87, 0xA5, 0x3E, 0xF8, 0xCC, 0xBC, 0x4F, 0x8F, 0xC8, 0x5C, 0xC8, + 0x7D, 0xC1, 0xC4, 0x23, 0x66, 0x62, 0xA5, 0x75, 0xC7, 0x44, 0x15, 0x84, + 0xC3, 0xFC, 0x16, 0x81, 0x7F, 0xE5, 0x0C, 0xDA, 0xAC, 0xD8, 0x53, 0x71, + 0x5D, 0xBE, 0x91, 0xB8, 0xFC, 0x3B, 0x8F, 0x88, 0x2D, 0x67, 0xA4, 0x1D, + 0x9F, 0xFB, 0x12, 0xD7, 0x1D, 0xF0, 0x6C, 0x2F, 0x2D, 0xA3, 0x36, 0x97, + 0x1A, 0xA5, 0x5D, 0xE7, 0x18, 0x21, 0x31, 0xFB, 0xAB, 0x1E, 0x75, 0x41, + 0x70, 0x4C, 0xC4, 0xBB, 0x01, 0x7B, 0x72, 0x51, 0xAE, 0x0B, 0xB3, 0x59, + 0x6D, 0xA4, 0x1F, 0xCB, 0x69, 0x7C, 0x72, 0x28, 0xF6, 0x85, 0xC2, 0xA1, + 0x88, 0x4A, 0x82, 0xEA, 0xCF, 0xBA, 0x87, 0xB7, 0x13, 0x5B, 0xD0, 0xFC, + 0x5E, 0x77, 0x4F, 0x3D, 0x92, 0x9E, 0x3F, 0xB0, 0xE0, 0xDC, 0x9B, 0xB8, + 0x67, 0x13, 0xCE, 0x5D, 0x2F, 0xE8, 0x96, 0xF6, 0x18, 0x24, 0x52, 0x87, + 0x6E, 0x46, 0x51, 0x80, 0x37, 0x56, 0xE2, 0xE2, 0x3D, 0x33, 0x82, 0x31, + 0xEF, 0x0E, 0xA2, 0xB2, 0x56, 0xF9, 0x3F, 0xBA, 0x22, 0x26, 0x96, 0x3E, + 0x3D, 0xE6, 0x35, 0x8E, 0x24, 0x19, 0x7D, 0x0E, 0x0B, 0x10, 0x4C, 0xFE, + 0x74, 0x59, 0x32, 0x9C, 0x65, 0xA7, 0xB1, 0xEF, 0x08, 0xF8, 0x07, 0x1C, + 0x11, 0x52, 0xC0, 0x8F, 0xE3, 0x93, 0x9E, 0x53, 0x23, 0x13, 0xA6, 0x3E, + 0xB3, 0xB1, 0x20, 0x24, 0xB6, 0xE1, 0x22, 0xD1, 0xED, 0x36, 0xD3, 0x5C, + 0x18, 0xC4, 0xE4, 0x09, 0x7F, 0x60, 0x45, 0x9D, 0xCE, 0xAE, 0xDF, 0xE2, + 0xD4, 0xC6, 0xBA, 0x53, 0x6B, 0x97, 0xAD, 0x2B, 0x60, 0x54, 0x60, 0x22, + 0x3C, 0x4C, 0x25, 0x2C, 0x87, 0xF9, 0x64, 0x51, 0x60, 0x2E, 0xE1, 0x90, + 0xAE, 0xCC, 0x70, 0xC1, 0xCA, 0x62, 0x07, 0xEF, 0x63, 0x40, 0x80, 0x7B, + 0xC2, 0x35, 0x56, 0xC6, 0xB8, 0x12, 0x0E, 0x34, 0xF4, 0x54, 0x28, 0x53, + 0x52, 0xD4, 0x4F, 0x0F, 0x98, 0x78, 0x74, 0x9A, 0x4A, 0x1E, 0x77, 0x31, + 0x4D, 0xAB, 0x7D, 0xDD, 0x07, 0x4E, 0x57, 0x24, 0xAE, 0x3F, 0xF1, 0x30, + 0x19, 0xA8, 0x2E, 0x66, 0xB1, 0x4D, 0x30, 0x5B, 0x28, 0xB4, 0x9F, 0x48, + 0xFF, 0x59, 0x19, 0xED, 0xA1, 0x47, 0x5F, 0xBF, 0xC0, 0x6C, 0x50, 0xCA, + 0x7C, 0xF3, 0x01, 0x40, 0xAE, 0xD2, 0x06, 0x29, 0x68, 0xAF, 0xDA, 0xD5, + 0x42, 0x5B, 0x75, 0xA3, 0xD0, 0xC1, 0x95, 0x6D, 0xB5, 0xB5, 0x1C, 0x63, + 0x7D, 0x3F, 0x8F, 0x37, 0x84, 0x67, 0x69, 0xF9, 0xF4, 0x17, 0x03, 0xAB, + 0xD8, 0x79, 0x0B, 0x8F, 0xB8, 0x78, 0x6C, 0x7B, 0xE6, 0x43, 0xA4, 0x87, + 0x39, 0x3E, 0x57, 0xC6, 0x69, 0x13, 0x41, 0x8A, 0x14, 0x53, 0xBD, 0x1B, + 0x44, 0x51, 0x96, 0x87, 0x4A, 0xEB, 0xD4, 0xCB, 0xE1, 0x65, 0x4A, 0x2F, + 0xF6, 0xAC, 0x8A, 0x58, 0x94, 0x87, 0xC0, 0xB8, 0x19, 0x7F, 0x88, 0xC2, + 0xDE, 0x9A, 0x8E, 0x57, 0xD7, 0xD5, 0xDB, 0x92, 0x8C, 0x16, 0xB7, 0x85, + 0x93, 0xE1, 0x7E, 0x16, 0x80, 0x23, 0x2B, 0x5C, 0x83, 0x63, 0xB0, 0xDD, + 0x82, 0xDB, 0x21, 0x17, 0x22, 0x51, 0x35, 0xE3, 0x22, 0x36, 0x2B, 0xDA, + 0x5E, 0xE5, 0x48, 0xEA, 0xC5, 0x23, 0x05, 0x8E, 0xD1, 0xFF, 0xE6, 0x81, + 0xC5, 0x0B, 0xE1, 0x06, 0x0E, 0xD0, 0x2C, 0xA6, 0x43, 0xF3, 0x89, 0x5A, + 0x67, 0xBD, 0x33, 0xE6, 0xC8, 0x5E, 0xAC, 0x83, 0xB5, 0xDC, 0x0E, 0x98, + 0xAB, 0x32, 0x5A, 0x25, 0xFD, 0xE4, 0x77, 0x48, 0x11, 0xE6, 0x81, 0x22, + 0x26, 0x2C, 0x95, 0x3E, 0xDB, 0x5E, 0x74, 0x6C, 0x5E, 0x3B, 0x58, 0x09, + 0x89, 0x3F, 0x4A, 0xB8, 0xAF, 0x53, 0xE2, 0x45, 0x3B, 0x63, 0xB5, 0xEE, + 0x15, 0xDF, 0x0B, 0x3E, 0x29, 0xF1, 0xAF, 0x54, 0x69, 0xB2, 0x89, 0xF3, + 0x42, 0x92, 0x14, 0xF0, 0xC0, 0xC5, 0x25, 0x7F, 0xDF, 0x42, 0xDE, 0xC1, + 0x29, 0x60, 0x1A, 0x62, 0xFB, 0x0C, 0xF8, 0xC6, 0x57, 0x8B, 0x1E, 0x82, + 0x06, 0x35, 0xA9, 0x06, 0x41, 0xAC, 0x76, 0x7E, 0x8C, 0x84, 0xE2, 0xF9, + 0x18, 0x69, 0xC4, 0xD2, 0xB7, 0xB1, 0xBE, 0xDB, 0x83, 0x92, 0xA8, 0x7F, + 0x32, 0xC7, 0xF4, 0x08, 0xE0, 0x26, 0xBE, 0x2D, 0x6B, 0x76, 0x9D, 0x68, + 0xE3, 0x4B, 0xC9, 0x1A, 0x0A, 0xE4, 0x77, 0x19, 0xB8, 0xB2, 0xBE, 0x46, + 0x2A, 0x3C, 0x76, 0xB7, 0x54, 0x6F, 0x41, 0x59, 0x21, 0x7A, 0xA6, 0x44, + 0xCE, 0x74, 0xA9, 0xD4, 0x13, 0x47, 0xD1, 0x55, 0xA0, 0xF0, 0x85, 0x20, + 0x80, 0xDF, 0x4E, 0x7D, 0xF4, 0xB2, 0xBE, 0x75, 0x9A, 0xA2, 0x10, 0xC2, + 0xFD, 0xB1, 0xB9, 0x8E, 0x14, 0x80, 0xB6, 0x5B, 0x8A, 0x6A, 0x81, 0x37, + 0x8C, 0x03, 0x51, 0x85, 0x25, 0xD7, 0x85, 0x6A, 0xC8, 0x0A, 0x1F, 0x24, + 0xB6, 0x2C, 0xB0, 0x1A, 0x20, 0x23, 0xCB, 0xB5, 0xF8, 0x19, 0x88, 0x63, + 0x67, 0xB7, 0xCD, 0x5B, 0x4F, 0x3C, 0xAA, 0xE6, 0x90, 0xCC, 0x6A, 0xDD, + 0xE0, 0x51, 0x29, 0x22, 0xFF, 0x17, 0x53, 0x62, 0x40, 0xF4, 0xB6, 0x5F, + 0x55, 0x65, 0x67, 0x79, 0x5B, 0x98, 0xA3, 0x58, 0x35, 0xB2, 0x21, 0xDB, + 0x0C, 0x6C, 0x20, 0x07, 0x3A, 0x58, 0xE5, 0x96, 0x7F, 0xB9, 0x1F, 0x31, + 0x7A, 0x8A, 0x64, 0xA8, 0x06, 0xAA, 0x56, 0x55, 0x2D, 0x0B, 0x8B, 0x71, + 0x78, 0x8B, 0x9F, 0xC1, 0x12, 0x54, 0x00, 0x5E, 0x2E, 0x76, 0x98, 0x99, + 0x77, 0xE3, 0x4D, 0x08, 0x47, 0xC2, 0xF1, 0xFB, 0xF9, 0xE1, 0x8D, 0x40, + 0x71, 0x67, 0xF9, 0x15, 0x34, 0xED, 0x10, 0x63, 0x63, 0xA2, 0x2A, 0x59, + 0x0B, 0x3E, 0xA2, 0xB6, 0xC2, 0x03, 0x19, 0x8B, 0x7C, 0x76, 0x17, 0xEF, + 0x6B, 0xE3, 0x1F, 0xBF, 0x32, 0xDC, 0xF4, 0x2E, 0x69, 0x15, 0x54, 0x40, + 0x78, 0x97, 0x13, 0x2D, 0xB5, 0x7D, 0x18, 0x91, 0x40, 0x84, 0x8F, 0x92, + 0x44, 0x32, 0x42, 0x9F, 0xD1, 0x2D, 0xEA, 0x82, 0x48, 0x39, 0x49, 0x19, + 0x07, 0xC6, 0x32, 0x9F, 0xD5, 0x87, 0x80, 0x92, 0x78, 0xDA, 0x9A, 0x93, + 0x90, 0x71, 0xDD, 0xC4, 0x6D, 0xC3, 0x74, 0xA6, 0xC9, 0x88, 0x98, 0xFF, + 0x8A, 0x81, 0x50, 0xAC, 0x73, 0x49, 0x0A, 0x75, 0x27, 0x02, 0xAF, 0x81, + 0xB8, 0xAD, 0x83, 0xA9, 0x08, 0x29, 0xF0, 0x78, 0x4A, 0x32, 0xDB, 0x10, + 0xA4, 0x5E, 0xFA, 0x3B, 0x49, 0xBD, 0xA5, 0xE1, 0xE6, 0x0B, 0xDB, 0x6F, + 0x31, 0x18, 0xDC, 0xA7, 0x63, 0xD0, 0xBA, 0xC7, 0xA3, 0x0A, 0x88, 0x76, + 0xA8, 0x6C, 0x4B, 0xBE, 0x3A, 0xD6, 0x81, 0x20, 0xEF, 0xD4, 0x36, 0x4C, + 0x2E, 0xBD, 0x22, 0x56, 0x5E, 0xE9, 0xBB, 0x25, 0x75, 0x54, 0x33, 0xF6, + 0x1B, 0x7F, 0xD8, 0x95, 0x49, 0x9B, 0xB1, 0x30, 0x3E, 0x6F, 0x17, 0x91, + 0x42, 0x82, 0x42, 0x81, 0x16, 0x56, 0xCF, 0x2D, 0xC2, 0x34, 0x6C, 0x38, + 0xA0, 0x42, 0x14, 0x7A, 0x13, 0x9D, 0x38, 0xC1, 0x6D, 0x3A, 0x3D, 0x0E, + 0x24, 0x2C, 0x23, 0xE3, 0xBC, 0x36, 0x2A, 0x97, 0x05, 0x9E, 0x31, 0x9A, + 0xF2, 0x88, 0x84, 0xA2, 0x28, 0xB8, 0xB3, 0x40, 0x3E, 0xE8, 0x5F, 0x44, + 0x32, 0x7E, 0xD7, 0x64, 0xFE, 0x37, 0x51, 0x32, 0xD1, 0x59, 0x4E, 0xB8, + 0x98, 0xC4, 0x87, 0x50, 0xB0, 0x0C, 0xAD, 0xE8, 0x98, 0x20, 0xA2, 0xAA, + 0xFC, 0x94, 0xCF, 0x87, 0xFB, 0x60, 0xDB, 0xBF, 0x93, 0x7E, 0xBD, 0x5F, + 0x13, 0x6C, 0xC9, 0x06, 0x34, 0xD5, 0x8A, 0xED, 0x5D, 0xAC, 0x77, 0xC9, + 0x84, 0xD5, 0x05, 0x61, 0x71, 0x4E, 0x69, 0xE1, 0xC6, 0xFD, 0x12, 0x3F, + 0x37, 0x3F, 0xEE, 0x1D, 0x93, 0x6E, 0xF3, 0x32, 0x18, 0x26, 0x87, 0x2A, + 0x7C, 0x0F, 0x75, 0x1A, 0x06, 0x61, 0x76, 0x22, 0x18, 0x39, 0x24, 0x49, + 0xA7, 0xF7, 0x81, 0x51, 0x1E, 0x8F, 0x86, 0x76, 0xE3, 0xF2, 0xF0, 0xCF, + 0x8B, 0xB1, 0x5E, 0xFA, 0xA7, 0xF3, 0x0F, 0x63, 0x6B, 0x4D, 0x0B, 0x71, + 0x3A, 0xAB, 0x60, 0x76, 0x01, 0xA5, 0x28, 0x4D, 0xB4, 0xBF, 0xDB, 0x8E, + 0x2B, 0xE1, 0xD6, 0xE6, 0xC8, 0x8F, 0xE6, 0x79, 0xD6, 0x19, 0xD9, 0x3A, + 0x6F, 0x0C, 0xDC, 0xC0, 0x31, 0x61, 0x70, 0x21, 0xE4, 0xFA, 0x43, 0x43, + 0x03, 0xFC, 0x88, 0xA8, 0x77, 0xCA, 0xE6, 0x79, 0x59, 0x84, 0x5D, 0x2B, + 0x0A, 0xB7, 0x13, 0x1B, 0x2C, 0xEC, 0xDD, 0x8A, 0x26, 0xE9, 0xB3, 0x69, + 0x4F, 0x72, 0xCB, 0x82, 0x2E, 0x54, 0x00, 0xD1, 0x19, 0xA5, 0x0F, 0xB2, + 0x5F, 0xCA, 0x3C, 0xB6, 0x5F, 0x8B, 0xC8, 0xD4, 0x21, 0xCF, 0x26, 0x83, + 0x5A, 0xD2, 0xCA, 0xFF, 0x26, 0x46, 0x5E, 0xE8, 0x2C, 0x0F, 0xA7, 0xBA, + 0x8E, 0xCD, 0xBB, 0xB0, 0x70, 0x78, 0xA2, 0xF4, 0x8F, 0x9D, 0x0F, 0x23, + 0x29, 0xF4, 0xBC, 0xFC, 0x54, 0x22, 0x00, 0x7B, 0x88, 0x0F, 0x87, 0x08, + 0xF2, 0x37, 0x3E, 0x07, 0x4E, 0xEF, 0xF3, 0x4F, 0x96, 0x7B, 0xB3, 0xA4, + 0x1D, 0x45, 0x3D, 0x88, 0x5D, 0xC2, 0xA8, 0xFA, 0x71, 0xBE, 0xA6, 0x1F, + 0x7E, 0x77, 0xD5, 0x48, 0x23, 0x73, 0x1C, 0x62, 0xF5, 0x98, 0x8E, 0xB7, + 0x67, 0xB1, 0xC8, 0xFA, 0xD7, 0xCB, 0x08, 0x0A, 0x64, 0x57, 0x93, 0x7E, + 0x8E, 0xF2, 0x20, 0xAA, 0xB5, 0x06, 0x8D, 0x12, 0xE2, 0xB8, 0x4D, 0xFC, + 0xC8, 0x23, 0xAB, 0x61, 0x05, 0xE4, 0x46, 0x87, 0x15, 0x25, 0x23, 0x43, + 0x15, 0x32, 0x63, 0x9E, 0x79, 0xFA, 0xBE, 0x10, 0x2B, 0xA3, 0x49, 0xA0, + 0x80, 0xB0, 0x3F, 0x50, 0x68, 0xF5, 0xC0, 0x7C, 0x55, 0xA2, 0x58, 0x92, + 0xD4, 0xF3, 0xA0, 0xEE, 0x83, 0x33, 0x71, 0xE6, 0xAB, 0x77, 0x44, 0x25, + 0x5D, 0xBF, 0x57, 0x91, 0x25, 0x14, 0x0C, 0x5D, 0x07, 0xA0, 0x8F, 0x82, + 0x9C, 0xA8, 0x33, 0x05, 0x25, 0x5F, 0x6B, 0x20, 0xB1, 0x92, 0xDC, 0x4E, + 0xDA, 0x6D, 0xC4, 0x85, 0xE7, 0xDE, 0x00, 0xAD, 0x0E, 0x45, 0x9A, 0x3E, + 0xBF, 0x1E, 0x7B, 0xF1, 0x94, 0x11, 0x77, 0xCE, 0xE2, 0xF0, 0x7B, 0x9A, + 0x85, 0x46, 0x98, 0x27, 0x44, 0xCC, 0xC7, 0x3F, 0x2D, 0x6F, 0xE2, 0xD3, + 0xDF, 0x6E, 0x6D, 0x74, 0xFD, 0xC0, 0xEF, 0x8C, 0xA3, 0x71, 0xEA, 0xA4, + 0x56, 0x59, 0x57, 0x23, 0x78, 0x87, 0x16, 0x8C, 0x1E, 0x63, 0x9C, 0xE2, + 0xA7, 0x28, 0x2A, 0x64, 0xC0, 0x97, 0x34, 0xB0, 0xD5, 0x78, 0x4C, 0xC3, + 0xB2, 0x5D, 0x9B, 0x89, 0x3F, 0xD3, 0x7E, 0xD2, 0x8A, 0x78, 0x8C, 0x1A, + 0x82, 0xB2, 0xA5, 0xFD, 0x37, 0xE6, 0x64, 0x32, 0xF0, 0xC9, 0xDE, 0xAF, + 0xA6, 0xBD, 0xB9, 0xDD, 0xE1, 0xF6, 0x2D, 0xC1, 0x17, 0x15, 0xF1, 0x73, + 0xA4, 0x4C, 0x65, 0x11, 0x92, 0xDC, 0x61, 0xFD, 0x0C, 0x60, 0x49, 0x43, + 0x54, 0xAC, 0xC9, 0xD7, 0xD5, 0x85, 0x09, 0xD4, 0x57, 0x74, 0x18, 0xD6, + 0x53, 0xEB, 0x26, 0xAE, 0x13, 0xCE, 0x0C, 0x6F, 0x7C, 0x11, 0x90, 0x02, + 0xB9, 0x46, 0xB8, 0xEC, 0x25, 0x31, 0xE2, 0xBA, 0xD4, 0xE4, 0x19, 0x1F, + 0xF8, 0xB9, 0x6D, 0xA6, 0x7A, 0xE8, 0x03, 0x9A, 0x94, 0x9F, 0x26, 0x3B, + 0xE0, 0x1A, 0x32, 0xAD, 0x73, 0x3C, 0xB7, 0xE4, 0x32, 0x6F, 0x51, 0x3B, + 0x3D, 0x83, 0x86, 0xD7, 0x62, 0x6D, 0xF8, 0xDF, 0x5C, 0xB2, 0x59, 0x92, + 0xAE, 0x52, 0xA7, 0xFE, 0xA9, 0x9B, 0x0F, 0xD8, 0x5C, 0xCA, 0x50, 0xC3, + 0xD7, 0x7C, 0x8E, 0x80, 0x1E, 0xCE, 0xC9, 0x8E, 0x6B, 0x7A, 0x4F, 0x1B, + 0x3A, 0x1E, 0x91, 0x18, 0x4C, 0x01, 0x50, 0x47, 0x54, 0x65, 0xF2, 0x72, + 0xA1, 0x83, 0xE2, 0x86, 0x9B, 0x93, 0x07, 0x75, 0xE4, 0x33, 0x47, 0xB5, + 0xBD, 0x42, 0xB2, 0x30, 0x6B, 0x69, 0x1F, 0xE9, 0xB3, 0x58, 0x91, 0x95, + 0x7B, 0xED, 0xC3, 0xF2, 0x46, 0x28, 0xB5, 0x18, 0x21, 0x27, 0x57, 0xF2, + 0x39, 0xE6, 0x8A, 0x28, 0xA7, 0x7D, 0xFB, 0x01, 0xF2, 0x7B, 0x56, 0x5A, + 0xC4, 0x85, 0x5A, 0x41, 0x96, 0xF7, 0xF7, 0xC5, 0x91, 0xA4, 0x89, 0x9A, + 0x09, 0x91, 0xBB, 0xE9, 0x29, 0x92, 0x7F, 0xE6, 0x5B, 0x94, 0x8E, 0x93, + 0x43, 0x90, 0x53, 0x0F, 0x10, 0xD7, 0x7E, 0x04, 0x28, 0xB7, 0xF7, 0x14, + 0xB3, 0x42, 0x5E, 0xDF, 0xB5, 0xAA, 0xE4, 0xF7, 0xED, 0x98, 0x43, 0xC6, + 0x8C, 0xFA, 0x7C, 0xB0, 0x71, 0xB1, 0xE9, 0x64, 0x65, 0xBB, 0x58, 0xCC, + 0x73, 0x5F, 0x6A, 0x5A, 0x86, 0x2D, 0x2E, 0x89, 0xB4, 0x5A, 0xFE, 0x16, + 0x5B, 0x64, 0x56, 0x27, 0x38, 0xC2, 0x1D, 0x1C, 0xF0, 0xC5, 0x0B, 0x80, + 0x8D, 0x6F, 0x2E, 0x0C, 0x7B, 0x56, 0xEF, 0x23, 0xE5, 0xFC, 0xD2, 0x55, + 0xF6, 0x9C, 0xF7, 0x5F, 0xB5, 0xEC, 0xB7, 0xEE, 0xC4, 0xEC, 0xFE, 0xD6, + 0xAA, 0xEC, 0x24, 0xB8, 0xB7, 0x98, 0x8D, 0x0B, 0x12, 0x36, 0xAC, 0x5B, + 0x3E, 0x87, 0x29, 0x21, 0x9C, 0xFD, 0x84, 0xFD, 0xF5, 0x10, 0xA4, 0xE8, + 0x1C, 0x4F, 0x16, 0x45, 0xBF, 0xC9, 0x18, 0x9F, 0xDE, 0xF1, 0x96, 0x64, + 0x58, 0x61, 0xF1, 0x41, 0x82, 0xE2, 0xDA, 0xA3, 0xE4, 0x86, 0x0F, 0xB7, + 0xCA, 0x17, 0x17, 0x2A, 0x7D, 0xAC, 0x9F, 0xB3, 0x8E, 0x65, 0x63, 0x80, + 0x64, 0x8E, 0x6F, 0xDB, 0xD4, 0x05, 0x65, 0xEE, 0x13, 0x1C, 0xE6, 0x51, + 0x53, 0x01, 0xA1, 0xE2, 0xA1, 0x3E, 0x46, 0x82, 0xBB, 0x4A, 0x7E, 0xC1, + 0x4A, 0x12, 0xBB, 0x56, 0xA2, 0x2F, 0x81, 0xC0, 0x0F, 0x47, 0x7F, 0xA1, + 0xD9, 0x8F, 0x21, 0xC5, 0x48, 0x34, 0xF0, 0x7F, 0x07, 0xE8, 0xB4, 0x0C, + 0x37, 0xEA, 0x4A, 0x76, 0x5E, 0x98, 0xA0, 0x87, 0x08, 0xC1, 0x51, 0x3D, + 0xED, 0xC6, 0xA2, 0x75, 0x90, 0xB4, 0x23, 0xFC, 0x3E, 0x36, 0x4A, 0x9A, + 0xEA, 0x25, 0x1F, 0x62, 0x41, 0x69, 0xCC, 0x8C, 0xB0, 0xB7, 0xAA, 0x6B, + 0x67, 0xC9, 0x85, 0x7F, 0x92, 0xC0, 0x7A, 0x30, 0x18, 0x35, 0xCD, 0xFD, + 0x85, 0xC4, 0x70, 0x23, 0x75, 0x45, 0x67, 0x79, 0xAB, 0xFE, 0x83, 0x4B, + 0xC9, 0x09, 0x78, 0xF1, 0x7F, 0xFA, 0xCC, 0xF2, 0x0A, 0x03, 0x0E, 0x43, + 0x9A, 0xD1, 0xBF, 0x53, 0xA8, 0x1E, 0x0F, 0x75, 0xC9, 0x14, 0x54, 0x07, + 0x6D, 0xCD, 0xC7, 0xB3, 0x5D, 0x14, 0x87, 0x29, 0x0C, 0x43, 0xED, 0x91, + 0xE3, 0x0A, 0xD0, 0x6F, 0xAE, 0x3B, 0xB5, 0xA8, 0x29, 0x3C, 0xA5, 0x5E, + 0x0A, 0x51, 0xB4, 0x7F, 0x3D, 0x15, 0xCC, 0x1A, 0x35, 0xFB, 0xA4, 0x70, + 0xDC, 0x4B, 0x98, 0xD4, 0xBF, 0x28, 0xE6, 0x29, 0x42, 0x60, 0x71, 0xA7, + 0xAE, 0x02, 0xC0, 0xE4, 0xEE, 0x61, 0x48, 0x07, 0x84, 0x87, 0xAD, 0x5E, + 0x70, 0xA8, 0x03, 0x30, 0x81, 0xE3, 0xE3, 0x53, 0x28, 0xFC, 0x06, 0xF8, + 0x37, 0x19, 0x69, 0xA1, 0xD2, 0x7A, 0xDB, 0x91, 0xAD, 0xB2, 0x8E, 0x51, + 0xE1, 0xC0, 0x0A, 0xEE, 0x70, 0x3B, 0xB7, 0x37, 0x96, 0x07, 0xBC, 0x66, + 0x3B, 0x10, 0x6F, 0x18, 0xCC, 0xA8, 0x8F, 0xDD, 0x6C, 0x30, 0x18, 0xEF, + 0x96, 0x09, 0xE5, 0x89, 0x47, 0x8E, 0xBA, 0x57, 0x8D, 0x8F, 0x63, 0x8A, + 0xAB, 0x30, 0xA0, 0x45, 0x1C, 0x4C, 0x0D, 0xB0, 0x72, 0x09, 0x0A, 0xC8, + 0x56, 0xD8, 0x45, 0x71, 0xD3, 0xB8, 0x03, 0xD3, 0xCD, 0x9E, 0x86, 0x53, + 0xA5, 0xD5, 0x58, 0xA5, 0x03, 0xE3, 0xFC, 0x5E, 0x1C, 0x63, 0x65, 0xE9, + 0x70, 0x53, 0xF4, 0x99, 0x71, 0x7A, 0x76, 0x2C, 0x2C, 0x38, 0xBE, 0x5A, + 0x20, 0xFF, 0xC0, 0x25, 0x16, 0x46, 0xA8, 0x65, 0x9B, 0xE0, 0xB1, 0x10, + 0x7D, 0xB2, 0x90, 0xBC, 0xE4, 0xB5, 0x22, 0xC7, 0xD6, 0x8A, 0xBB, 0x19, + 0x9F, 0xCD, 0x11, 0x62, 0x82, 0xFC, 0x8D, 0x36, 0xE2, 0x08, 0xF0, 0xDD, + 0x68, 0x60, 0x48, 0x09, 0x1F, 0xF0, 0xC5, 0x54, 0xE9, 0x47, 0x7D, 0x79, + 0xE6, 0xC4, 0xC1, 0xF1, 0xFF, 0x2D, 0x5C, 0xA3, 0xFD, 0xF2, 0xB1, 0xA7, + 0x89, 0xB7, 0xB9, 0x7C, 0x44, 0x28, 0xE5, 0x82, 0x36, 0x4D, 0x48, 0x34, + 0x01, 0x5B, 0x43, 0x36, 0x2D, 0x05, 0x93, 0xEE, 0xF5, 0x92, 0x73, 0xDF, + 0xA6, 0xBA, 0x3D, 0x5B, 0x96, 0x49, 0x73, 0xDF, 0x70, 0x9B, 0x7A, 0x70, + 0x5C, 0x30, 0x14, 0xB8, 0xB7, 0x46, 0xE0, 0xD7, 0xFF, 0x5C, 0x8E, 0x27, + 0x39, 0x0E, 0xEE, 0x99, 0x2F, 0x08, 0x1E, 0x95, 0xD4, 0x70, 0xB0, 0xC4, + 0x28, 0x83, 0x78, 0x92, 0x93, 0x46, 0xB9, 0xF9, 0xFF, 0x8C, 0x16, 0xA9, + 0x63, 0x71, 0xAF, 0xBD, 0x84, 0x1A, 0x25, 0xBE, 0xE8, 0xE3, 0xB2, 0x33, + 0x51, 0xB9, 0xB6, 0x0E, 0x12, 0xB8, 0xA7, 0x6E, 0x28, 0xBC, 0xA3, 0x66, + 0x24, 0x49, 0x4D, 0x45, 0xA4, 0x5C, 0xCD, 0x4D, 0x2E, 0x17, 0xFB, 0xC0, + 0xB5, 0xA7, 0x55, 0x34, 0x08, 0xD7, 0xC7, 0x54, 0x0A, 0xFE, 0xE6, 0x98, + 0x85, 0x6D, 0xAF, 0x42, 0x79, 0xED, 0x0A, 0xFA, 0xCF, 0xD3, 0xE2, 0x7C, + 0xB8, 0x24, 0xA5, 0xE1, 0x01, 0xA5, 0x94, 0x55, 0x61, 0xA0, 0x49, 0x1B, + 0x7C, 0x71, 0xA8, 0x96, 0x5A, 0x4C, 0xF5, 0xC5, 0x1E, 0x8D, 0xD9, 0x2E, + 0xBE, 0xC4, 0x13, 0x27, 0xD0, 0xC0, 0x67, 0xA7, 0x77, 0x86, 0x61, 0xAE, + 0x7E, 0x69, 0x53, 0xB4, 0x70, 0xC6, 0x1E, 0x62, 0x1A, 0x8B, 0xB3, 0x0A, + 0xC5, 0xDF, 0xF4, 0xFA, 0xEB, 0xC5, 0x50, 0x7E, 0xDE, 0xD5, 0x15, 0xB1, + 0x2E, 0x09, 0x75, 0xD7, 0x9E, 0xB1, 0x58, 0x76, 0x2F, 0xFE, 0x86, 0x0A, + 0xC2, 0x10, 0x1D, 0x84, 0xDF, 0x94, 0x11, 0xD0, 0x86, 0x06, 0xFA, 0x9E, + 0x00, 0xF0, 0x27, 0x51, 0x00, 0x43, 0xAF, 0xEA, 0x13, 0x4E, 0xC8, 0x48, + 0x5A, 0x57, 0xDB, 0x5C, 0x20, 0xDC, 0xF3, 0x7D, 0x2B, 0x77, 0x35, 0x20, + 0xBD, 0x17, 0x0C, 0x3A, 0x2C, 0x3B, 0x58, 0x7D, 0x9D, 0x40, 0xA0, 0xDF, + 0xD5, 0xBA, 0x84, 0xA2, 0x9E, 0x4C, 0x87, 0xA5, 0xF9, 0xED, 0xEA, 0xEB, + 0x98, 0x0D, 0x81, 0xD9, 0xCB, 0xE3, 0xD5, 0xA0, 0xF7, 0xFF, 0x2A, 0x28, + 0xE9, 0x6F, 0x08, 0xE4, 0xBA, 0x76, 0x16, 0x0A, 0xF5, 0x3C, 0x01, 0x11, + 0xB3, 0xBA, 0x4C, 0x7E, 0xC3, 0x1F, 0x0B, 0x91, 0x62, 0x82, 0xDD, 0x29, + 0x7C, 0x60, 0x5F, 0x56, 0xE5, 0x48, 0x7D, 0xB8, 0x4A, 0xC7, 0x1F, 0x7D, + 0xD5, 0xB7, 0x17, 0x9F, 0x91, 0xDD, 0xE3, 0xE0, 0x04, 0x14, 0xF3, 0x4C, + 0xD2, 0xB3, 0xC3, 0xAC, 0x7F, 0x63, 0x67, 0xFA, 0x1B, 0x14, 0x0E, 0x2A, + 0x8C, 0x82, 0xD8, 0x49, 0x8B, 0x24, 0x4B, 0xF3, 0x21, 0x86, 0x06, 0x91, + 0xC9, 0x81, 0xF9, 0x84, 0xC6, 0x2B, 0x12, 0xCF, 0x95, 0x32, 0x7A, 0xFD, + 0x9C, 0x1C, 0xFC, 0x3B, 0x3B, 0x06, 0xBA, 0x2C, 0x45, 0x88, 0xDA, 0x5B, + 0x5D, 0x90, 0xDC, 0x07, 0xBD, 0xEC, 0xAF, 0xB2, 0x06, 0x98, 0x05, 0xAC, + 0x1D, 0x41, 0xA1, 0xD5, 0x76, 0x9D, 0x7B, 0x59, 0x82, 0x9C, 0x46, 0x02, + 0xF4, 0x03, 0xB4, 0xFB, 0x70, 0x48, 0x73, 0xB2, 0x4C, 0x8B, 0xA6, 0xDB, + 0x11, 0xC5, 0x7E, 0xFE, 0x23, 0x4E, 0xC2, 0x2B, 0x0F, 0x95, 0x51, 0x2A, + 0x3B, 0x46, 0x1C, 0xB7, 0xBF, 0x51, 0xF0, 0xA4, 0xF8, 0xAD, 0x16, 0x96, + 0xAA, 0x6D, 0xBE, 0xFE, 0x45, 0x46, 0xEF, 0x8B, 0x96, 0xED, 0xE1, 0xE5, + 0xB5, 0xEF, 0x22, 0x8C, 0xBA, 0x3A, 0xB0, 0x2F, 0x9A, 0x34, 0x16, 0x52, + 0x56, 0x5A, 0x36, 0x8B, 0x50, 0x89, 0xBD, 0xC0, 0xFE, 0xAE, 0x2B, 0xBB, + 0x53, 0xAE, 0x76, 0x8D, 0xB6, 0x91, 0x9D, 0x32, 0x18, 0xF5, 0xD7, 0x1A, + 0xE5, 0x04, 0x05, 0xFD, 0xDC, 0x5B, 0x67, 0xBE, 0x34, 0x05, 0x03, 0x90, + 0xD5, 0xBF, 0xAA, 0x35, 0x8D, 0xB7, 0x63, 0x76, 0xC9, 0x98, 0x2B, 0x99, + 0xD6, 0x5A, 0xB4, 0x39, 0x4A, 0xAA, 0xDF, 0xEC, 0x82, 0x83, 0xC6, 0x80, + 0xA1, 0x86, 0x74, 0xC8, 0x8E, 0x37, 0xAB, 0x7A, 0xC2, 0x35, 0x99, 0x62, + 0xAD, 0x30, 0xD2, 0x4E, 0x30, 0xA4, 0x3F, 0xC6, 0x16, 0x9C, 0xBF, 0xD5, + 0x5C, 0x08, 0xF8, 0xF4, 0x35, 0x20, 0x86, 0xF4, 0x0C, 0x12, 0x56, 0xD4, + 0xDB, 0x73, 0xDB, 0x82, 0x30, 0x73, 0xD2, 0x60, 0xCF, 0xF7, 0xA8, 0xF6, + 0xC8, 0x71, 0xB2, 0x6E, 0xC3, 0x65, 0x05, 0x07, 0x6C, 0x9C, 0x3F, 0xD7, + 0xC9, 0x6E, 0x09, 0xFF, 0x9E, 0xF0, 0x68, 0xB6, 0xE0, 0xDB, 0x6A, 0x1F, + 0xE9, 0xBC, 0x8C, 0xC1, 0xEB, 0xC5, 0x2A, 0x8B, 0x99, 0x23, 0xFC, 0x35, + 0xAF, 0xC1, 0x4A, 0xD8, 0x62, 0x28, 0x95, 0x4C, 0xD5, 0x93, 0x21, 0xBC, + 0x19, 0x52, 0xA0, 0x71, 0x3C, 0x2B, 0x3F, 0x88, 0x68, 0xA0, 0xE0, 0x16, + 0x10, 0x85, 0xCA, 0xDB, 0x45, 0x96, 0xBD, 0x44, 0xB3, 0x24, 0xE2, 0xCB, + 0xE6, 0xE7, 0xC9, 0xDD, 0x7A, 0x78, 0x9B, 0x7C, 0x1E, 0x28, 0x2B, 0xC2, + 0x2B, 0x53, 0x12, 0xB2, 0xD7, 0xB8, 0x59, 0x41, 0x19, 0x3D, 0xF9, 0x6F, + 0x34, 0xDB, 0x76, 0x43, 0x8C, 0x21, 0x2A, 0xC2, 0xAB, 0x4B, 0x0D, 0xC5, + 0x0A, 0x92, 0x41, 0xD2, 0xD2, 0xEB, 0x40, 0x7C, 0x14, 0x5D, 0x73, 0x3D, + 0x6C, 0x42, 0xAC, 0xF1, 0xC8, 0x37, 0xCD, 0xC3, 0xC0, 0xDD, 0xC0, 0x42, + 0x35, 0x6A, 0x99, 0xF3, 0x7F, 0x63, 0xE1, 0x17, 0xB5, 0x8F, 0xC3, 0x2C, + 0xF5, 0x67, 0x4A, 0x96, 0x25, 0xDD, 0xC9, 0x06, 0x3A, 0x86, 0x3C, 0x2B, + 0x23, 0x04, 0xB0, 0x53, 0x3C, 0x82, 0xDD, 0x7E, 0xAE, 0x1A, 0xF4, 0x76, + 0x65, 0x57, 0xF1, 0x7F, 0xBC, 0x5C, 0xFC, 0xB0, 0xBB, 0x04, 0x13, 0x9B, + 0x81, 0x9C, 0x70, 0x87, 0xFE, 0x6C, 0xC2, 0x9B, 0x88, 0x83, 0x3C, 0x4D, + 0x43, 0x0B, 0x64, 0xE3, 0x8C, 0x79, 0x25, 0x5D, 0xF7, 0x20, 0xCF, 0xAB, + 0x65, 0xC3, 0x9F, 0x17, 0xDA, 0x5A, 0x6F, 0x02, 0x81, 0xEC, 0x8A, 0x20, + 0x56, 0x09, 0x31, 0xE2, 0x0E, 0x80, 0x68, 0xE5, 0xA7, 0xFF, 0x70, 0x92, + 0x68, 0x09, 0x70, 0x93, 0x98, 0xD1, 0x73, 0xD4, 0x47, 0xA2, 0xD3, 0x91, + 0x00, 0xAB, 0xF0, 0x35, 0xD1, 0xBE, 0xB8, 0xC9, 0x9E, 0x82, 0x39, 0x17, + 0x2E, 0xB7, 0x8B, 0x0C, 0x7B, 0xAF, 0x84, 0x5C, 0xB5, 0x0A, 0xCE, 0x31, + 0x30, 0xE7, 0x38, 0x06, 0xAA, 0x10, 0x48, 0x2C, 0xA8, 0xE1, 0xBD, 0xBD, + 0xEE, 0x3D, 0xDA, 0x11, 0xA0, 0x0C, 0x07, 0xFA, 0xD0, 0x5B, 0xA5, 0x91, + 0xE5, 0x1D, 0x54, 0x6A, 0xBF, 0x53, 0x56, 0x55, 0x11, 0xC9, 0x5C, 0x89, + 0xFE, 0x72, 0x5A, 0xA7, 0x15, 0x9C, 0xBB, 0x37, 0x4E, 0x18, 0x89, 0xED, + 0xF2, 0x82, 0x83, 0xF1, 0x5B, 0x9D, 0x27, 0x3D, 0xCF, 0xF3, 0x0B, 0x0C, + 0xCB, 0x53, 0xF3, 0x13, 0xA8, 0xA1, 0x5A, 0x0E, 0xB2, 0x21, 0x8B, 0x16, + 0xD7, 0x5E, 0xAE, 0xD2, 0x7B, 0x3A, 0x2A, 0xCD, 0x23, 0x14, 0x0F, 0xE7, + 0x0D, 0x81, 0x82, 0xF2, 0x41, 0x8B, 0x77, 0x53, 0x16, 0xAE, 0xC7, 0xDF, + 0xF7, 0xD1, 0x91, 0x8B, 0x73, 0xA5, 0x0E, 0x9F, 0xC3, 0xBF, 0x2C, 0xC3, + 0xE4, 0xB7, 0x60, 0x60, 0xF7, 0xCA, 0x95, 0x6D, 0xFA, 0x4F, 0x66, 0xC2, + 0x98, 0xA0, 0x72, 0xC9, 0x0C, 0x9E, 0x6B, 0xFD, 0x5D, 0x14, 0x8B, 0x9E, + 0x7F, 0xA1, 0x20, 0x48, 0x99, 0x09, 0xDC, 0xAA, 0xAB, 0xB4, 0x46, 0x10, + 0xAB, 0x1B, 0x77, 0x98, 0x2F, 0x7D, 0xE0, 0xD4, 0x18, 0x64, 0x4A, 0x5C, + 0xBA, 0x23, 0x3C, 0x7E, 0x2F, 0x96, 0x13, 0xC6, 0x4D, 0x38, 0xED, 0xCE, + 0x4D, 0xB3, 0x02, 0x23, 0xAE, 0x9E, 0xD8, 0x8A, 0xC0, 0x17, 0x39, 0x91, + 0x75, 0x33, 0x6A, 0xA9, 0x75, 0x12, 0xE3, 0x65, 0x19, 0x30, 0x98, 0x00, + 0x4D, 0x82, 0xDB, 0xA3, 0xA2, 0xE7, 0x11, 0x51, 0x7A, 0xA1, 0xFE, 0xD2, + 0x4E, 0xEA, 0xBB, 0xCD, 0xA1, 0x29, 0xB0, 0xB3, 0x63, 0x23, 0x54, 0x11, + 0x0B, 0xF3, 0xBD, 0x82, 0xA4, 0x60, 0xC2, 0xFE, 0xE9, 0x5C, 0xD7, 0xB5, + 0xDA, 0x7D, 0x6C, 0x3D, 0x57, 0xD1, 0xF9, 0x90, 0x03, 0x0B, 0xE8, 0xC1, + 0x20, 0xEE, 0x46, 0x68, 0x18, 0x95, 0x66, 0x3C, 0x01, 0x2A, 0xE8, 0x84, + 0xC1, 0x26, 0x3B, 0x15, 0xBB, 0x20, 0x5E, 0x3B, 0x57, 0x0E, 0x59, 0xEA, + 0x1C, 0xD3, 0x6C, 0xC7, 0x35, 0xE7, 0x23, 0xFE, 0x40, 0x37, 0x84, 0x2D, + 0x70, 0x0F, 0xE9, 0x2F, 0xB2, 0x22, 0xEA, 0xB9, 0xB6, 0x93, 0xDC, 0x67, + 0xE1, 0xFB, 0x0E, 0x34, 0x91, 0x35, 0x76, 0x52, 0x03, 0x27, 0x79, 0x42, + 0x55, 0x1D, 0x5B, 0x8D, 0xAA, 0x17, 0x5C, 0x64, 0x3D, 0x8D, 0xA1, 0x04, + 0xBE, 0x3E, 0x6D, 0x92, 0x6E, 0xE6, 0x2C, 0x0B, 0x6E, 0x9B, 0x8A, 0x5D, + 0x18, 0x05, 0xB8, 0xE4, 0x18, 0x6E, 0x9E, 0x90, 0x74, 0xD3, 0x1D, 0x33, + 0x4D, 0x72, 0xF5, 0x99, 0xE3, 0x2B, 0x2A, 0x0C, 0x11, 0x5C, 0x94, 0xB7, + 0x66, 0xCC, 0xAC, 0xF1, 0x0D, 0x8D, 0x20, 0xC5, 0x75, 0x20, 0x4C, 0x0A, + 0xB8, 0xBA, 0xCD, 0x0F, 0xD9, 0xF1, 0x59, 0x6E, 0xC8, 0x63, 0x5C, 0x9E, + 0xE5, 0xBB, 0x85, 0x93, 0xFE, 0x1F, 0xD9, 0x8C, 0x89, 0xB4, 0x7E, 0xD8, + 0xB5, 0xC6, 0x62, 0x03, 0xD1, 0xAB, 0x5F, 0xD2, 0xB4, 0x47, 0xC0, 0xC5, + 0xC9, 0x75, 0x14, 0x91, 0x37, 0xFE, 0x3B, 0x78, 0x1F, 0x56, 0x87, 0x13, + 0xF4, 0xCC, 0x3A, 0xBD, 0x2C, 0xC1, 0x61, 0xF5, 0xAB, 0x3A, 0xE8, 0x9C, + 0x97, 0xCA, 0xAA, 0xA3, 0x12, 0xC4, 0x70, 0x8F, 0x32, 0xDD, 0xEA, 0xE8, + 0xF8, 0x8A, 0x03, 0x65, 0x89, 0x99, 0x53, 0x45, 0x28, 0xF3, 0xA8, 0xF3, + 0x14, 0x80, 0xB4, 0xD6, 0x44, 0xD4, 0x02, 0xEE, 0x9C, 0x58, 0x46, 0xC1, + 0x4F, 0xEE, 0xFA, 0xCD, 0x63, 0x4D, 0x87, 0xE6, 0x22, 0x9F, 0xF9, 0xDA, + 0x77, 0xD0, 0x51, 0xAA, 0x1F, 0x2A, 0x2F, 0x48, 0x66, 0x55, 0xE0, 0x2A, + 0x5F, 0xEC, 0x12, 0xA6, 0x14, 0xAD, 0x7D, 0xDD, 0xC2, 0x7B, 0x3E, 0xE9, + 0x8F, 0x2C, 0xB8, 0x60, 0x7E, 0x03, 0x76, 0x28, 0x7C, 0x22, 0x18, 0x6B, + 0x53, 0x39, 0x21, 0x6A, 0xB2, 0x05, 0x75, 0x58, 0xB7, 0xB1, 0x49, 0x1B, + 0x11, 0x1D, 0xD6, 0xFA, 0xC8, 0x01, 0x77, 0x12, 0x16, 0x17, 0xB8, 0x71, + 0xC2, 0x6F, 0x12, 0xE0, 0xFA, 0xBF, 0x7A, 0xB3, 0xE3, 0xDB, 0xB6, 0x19, + 0x78, 0xAF, 0x25, 0x18, 0x4F, 0x7A, 0x21, 0x63, 0xF6, 0x68, 0x33, 0xCC, + 0xD9, 0x12, 0x4A, 0x36, 0x73, 0x3D, 0x7C, 0xA4, 0x6E, 0x5E, 0xFD, 0x5E, + 0x0D, 0x45, 0xDF, 0x68, 0x66, 0xC6, 0x3F, 0x42, 0xEF, 0xD5, 0x0A, 0x7D, + 0x41, 0x3E, 0x1B, 0x4E, 0x3F, 0x93, 0x4F, 0xAA, 0x0B, 0xB4, 0x34, 0x67, + 0xEC, 0xEF, 0x23, 0x6B, 0x87, 0x8A, 0xF9, 0x66, 0x48, 0x19, 0xF5, 0x92, + 0x57, 0xA8, 0x60, 0x53, 0xC3, 0x37, 0xF3, 0x61, 0x82, 0x42, 0xC3, 0x09, + 0x95, 0xBE, 0xE9, 0x1F, 0xBA, 0x1F, 0x01, 0xB6, 0x37, 0xC7, 0xD9, 0x65, + 0xAF, 0x2D, 0xB4, 0x42, 0x22, 0xC0, 0x54, 0x1A, 0x3B, 0x13, 0x07, 0x30, + 0x94, 0x15, 0x01, 0x17, 0x21, 0x36, 0x3A, 0x4F, 0xC3, 0x76, 0xC4, 0xA9, + 0x64, 0x0D, 0xE0, 0x4F, 0x93, 0xCD, 0x5D, 0x7D, 0xD4, 0xB6, 0xDE, 0xAC, + 0x9C, 0xB6, 0x79, 0x3B, 0xCE, 0x49, 0x35, 0x21, 0xE2, 0x20, 0xC2, 0x36, + 0x9E, 0xCF, 0x51, 0x4D, 0x1D, 0x41, 0x32, 0x05, 0xB0, 0x45, 0x85, 0xEF, + 0x68, 0x94, 0xE2, 0x56, 0x61, 0x7A, 0x08, 0xE7, 0x46, 0x3E, 0xBA, 0xEC, + 0x9E, 0x82, 0x17, 0x1B, 0xE4, 0xE1, 0x32, 0xCD, 0x9C, 0xF8, 0xC1, 0xE5, + 0x1C, 0x9E, 0x84, 0xBB, 0x20, 0x71, 0xF5, 0x6F, 0x0B, 0x55, 0x6F, 0x4C, + 0x96, 0x28, 0x08, 0x6E, 0x5D, 0xF2, 0xFE, 0xF9, 0xE2, 0xBB, 0xEF, 0x58, + 0xFC, 0x34, 0xEF, 0xD6, 0xF5, 0xB2, 0x77, 0x5F, 0x62, 0x4F, 0x8F, 0x32, + 0xD7, 0xAD, 0x14, 0x07, 0xFC, 0xAB, 0x53, 0x06, 0xC9, 0x65, 0x8A, 0x0F, + 0xDA, 0xDF, 0x4F, 0xA4, 0x88, 0x45, 0xFC, 0x17, 0x74, 0x1C, 0xE0, 0x9F, + 0xBC, 0x91, 0xF3, 0x7A, 0x9D, 0xE8, 0x92, 0xD6, 0x3C, 0x8E, 0x71, 0x65, + 0x34, 0x64, 0x4B, 0xAE, 0x41, 0x04, 0x37, 0x3E, 0xE3, 0x79, 0xA1, 0xD4, + 0x4F, 0x89, 0xE8, 0x3C, 0x1C, 0x36, 0x41, 0x66, 0x14, 0xA4, 0xCF, 0xC5, + 0x38, 0x59, 0xE6, 0x8C, 0x75, 0xE7, 0x6F, 0x3B, 0x20, 0x11, 0x41, 0x55, + 0x28, 0x67, 0x12, 0xD5, 0x67, 0x81, 0xC5, 0x76, 0x02, 0xC3, 0xC7, 0x03, + 0x1C, 0xC0, 0x2E, 0xDC, 0x7E, 0xD9, 0xAD, 0x24, 0xE0, 0x7A, 0x07, 0x8D, + 0xC7, 0xE5, 0x2B, 0x27, 0x13, 0xAC, 0x76, 0x46, 0x93, 0x4B, 0x3B, 0x1C, + 0xC7, 0xD2, 0x9E, 0xEF, 0x32, 0xEA, 0x3A, 0x43, 0xDC, 0x79, 0xD6, 0xE8, + 0x52, 0x89, 0xAB, 0xEE, 0x9F, 0x22, 0xAA, 0x02, 0xD7, 0x08, 0xE2, 0x50, + 0x94, 0x16, 0x09, 0x49, 0x5C, 0x70, 0x61, 0x97, 0xEA, 0x99, 0x42, 0xAC, + 0xFB, 0x97, 0xFA, 0x35, 0xA1, 0x80, 0xFD, 0x06, 0x44, 0xA3, 0x6F, 0xFC, + 0x39, 0x7A, 0xA2, 0x37, 0x87, 0x3B, 0x72, 0xC2, 0x7A, 0x2A, 0xBA, 0x54, + 0x6B, 0xF9, 0xFA, 0x75, 0x46, 0xE6, 0x1B, 0x3C, 0xE7, 0x21, 0xA0, 0xDE, + 0xC1, 0x26, 0xC7, 0x3F, 0x8C, 0xA1, 0x8A, 0xC5, 0xBD, 0x7D, 0xC6, 0x70, + 0xF7, 0xB6, 0x6B, 0x84, 0xCB, 0x20, 0x4B, 0x34, 0x4D, 0x50, 0xA5, 0xD8, + 0xF3, 0x50, 0xF2, 0xE7, 0xE0, 0xE0, 0x32, 0x07, 0x5F, 0xF6, 0x86, 0x06, + 0x9D, 0x31, 0x7A, 0xB0, 0x63, 0xB7, 0xB3, 0x04, 0x5B, 0x31, 0xA6, 0x9B, + 0x29, 0x27, 0x96, 0xB1, 0x5A, 0x41, 0x09, 0xE3, 0x13, 0x39, 0x8E, 0x0C, + 0x94, 0xFF, 0xD2, 0x2D, 0x8F, 0x91, 0x73, 0x43, 0xC7, 0xFA, 0x65, 0x56, + 0x70, 0x94, 0x0B, 0x5F, 0xA3, 0xD1, 0xCB, 0x4C, 0x95, 0x5F, 0x64, 0x8D, + 0xD2, 0x7C, 0x68, 0xBA, 0x31, 0x0D, 0x1C, 0x55, 0xB6, 0x2F, 0x96, 0xB7, + 0xB1, 0x79, 0xDE, 0x50, 0xB5, 0x8D, 0x4C, 0xC4, 0xD5, 0x3A, 0xE2, 0x13, + 0x80, 0x37, 0x68, 0x51, 0xDA, 0x33, 0x70, 0x95, 0x49, 0x57, 0xB5, 0x3F, + 0x3F, 0x2F, 0xDA, 0xC5, 0xE3, 0x63, 0x95, 0x63, 0x29, 0x96, 0x4A, 0xED, + 0xB5, 0x2F, 0x7D, 0xC2, 0xCC, 0x4C, 0x87, 0xDE, 0x49, 0xE2, 0xCA, 0x46, + 0x60, 0x38, 0x31, 0xB4, 0x65, 0x86, 0x3F, 0x91, 0x61, 0x8C, 0x11, 0x0F, + 0xAF, 0x6F, 0xED, 0xED, 0x4B, 0x9F, 0x32, 0xAB, 0x7A, 0xBB, 0x83, 0xCD, + 0xE9, 0x36, 0x58, 0x7E, 0x3D, 0xCD, 0xD1, 0x00, 0x41, 0x80, 0x41, 0x14, + 0xD3, 0xF1, 0xEA, 0x24, 0xF2, 0xD7, 0x79, 0x71, 0x71, 0x0B, 0x24, 0x5E, + 0x2B, 0xA8, 0x15, 0xCA, 0x20, 0x35, 0xF5, 0x8B, 0xED, 0xC6, 0xD7, 0x7B, + 0xAB, 0xF5, 0x74, 0x7E, 0x55, 0xEE, 0xCC, 0x92, 0xF0, 0xBB, 0x0D, 0xE4, + 0xF7, 0xD9, 0xD4, 0x74, 0x89, 0x87, 0xF2, 0xE2, 0xAA, 0x73, 0xDF, 0xCD, + 0x5C, 0xE1, 0x0D, 0xF1, 0xDA, 0xA9, 0x62, 0x33, 0x20, 0x61, 0x5B, 0xC4, + 0x17, 0x8A, 0xDA, 0xA3, 0xD1, 0xA7, 0xB1, 0x27, 0xA1, 0xD7, 0x41, 0x02, + 0x06, 0x4A, 0x18, 0xC7, 0xDE, 0x2B, 0xD2, 0xF9, 0xD2, 0x16, 0x43, 0x4B, + 0x02, 0x0E, 0xD6, 0x2F, 0x16, 0x28, 0xCA, 0x9C, 0x19, 0xAE, 0x27, 0x61, + 0xC8, 0x09, 0xD6, 0xAE, 0x89, 0x90, 0x52, 0x04, 0xC2, 0x17, 0x7D, 0x3D, + 0x41, 0x18, 0x20, 0x70, 0xB4, 0xBA, 0x83, 0x51, 0xE1, 0xF0, 0x23, 0x7E, + 0x9B, 0x4B, 0x56, 0xC7, 0x9F, 0x3D, 0x0D, 0xE6, 0x92, 0xED, 0xC0, 0xAD, + 0x46, 0xC3, 0x35, 0x94, 0xFB, 0xDB, 0x3C, 0xB3, 0x95, 0x9C, 0xFD, 0xA2, + 0x9E, 0x23, 0x49, 0xA6, 0xDC, 0xA0, 0x63, 0xC3, 0x5D, 0x37, 0xF1, 0x9C, + 0x57, 0xE7, 0x58, 0xD5, 0x28, 0xC4, 0x73, 0x2B, 0xE3, 0xBF, 0x14, 0xD3, + 0x83, 0xEC, 0x49, 0x03, 0x42, 0xD1, 0x3F, 0xE6, 0x22, 0xEE, 0xC5, 0x23, + 0x50, 0x64, 0x5F, 0xA6, 0x9F, 0x92, 0x5A, 0x69, 0xC5, 0x7D, 0x76, 0x81, + 0xB9, 0x0F, 0x43, 0x24, 0x94, 0x20, 0xF1, 0x51, 0xF7, 0x30, 0xF7, 0x6A, + 0x3A, 0x73, 0xEF, 0x5B, 0x39, 0xD8, 0x75, 0x0F, 0x78, 0xFB, 0x7A, 0xFD, + 0xEB, 0x80, 0xE8, 0xF0, 0x98, 0x4C, 0xE2, 0xDE, 0xA9, 0x5F, 0x75, 0x36, + 0x62, 0x3F, 0x7B, 0x66, 0xF1, 0xA8, 0xA7, 0x55, 0xD4, 0x6C, 0x03, 0xE8, + 0xFF, 0xD6, 0xBB, 0x50, 0x0E, 0x38, 0xFB, 0xD5, 0xD9, 0xB2, 0x4B, 0xFD, + 0xC5, 0x05, 0x08, 0x88, 0xBC, 0x90, 0x47, 0x15, 0xE1, 0x92, 0x04, 0x18, + 0x06, 0x4B, 0x13, 0x12, 0x12, 0xCE, 0xF6, 0xA4, 0x9A, 0xBC, 0x1B, 0x60, + 0x9E, 0x49, 0xBA, 0xC5, 0x56, 0x9D, 0x47, 0x21, 0x5F, 0xE5, 0x19, 0xFC, + 0x71, 0xCB, 0x8D, 0x6F, 0x9E, 0x91, 0x18, 0x6F, 0x6E, 0xF8, 0x07, 0xE9, + 0x6C, 0xB3, 0x6B, 0x94, 0x2C, 0xCF, 0xAC, 0x5F, 0x1C, 0x1A, 0xA1, 0xD7, + 0x8F, 0x9A, 0x1B, 0x49, 0x28, 0x22, 0xEA, 0x52, 0xDE, 0x0D, 0xB5, 0xF9, + 0x0E, 0x08, 0xA4, 0x78, 0x3B, 0x7F, 0x31, 0x1C, 0x75, 0x91, 0x0A, 0xC4, + 0x35, 0x68, 0x0D, 0xDF, 0x00, 0xEB, 0x31, 0x0C, 0x84, 0x62, 0xEC, 0xAF, + 0x82, 0xAD, 0x52, 0xA2, 0xE2, 0x1F, 0xFE, 0xAC, 0xBE, 0x4D, 0xFB, 0xCE, + 0x0C, 0x82, 0xE5, 0x4A, 0x4D, 0xD8, 0x98, 0x57, 0xFD, 0xE6, 0x83, 0x21, + 0x95, 0x25, 0xF3, 0xAD, 0x2E, 0xAD, 0x69, 0xB9, 0x4E, 0x1E, 0x4A, 0x29, + 0xF0, 0x75, 0xB2, 0xE2, 0x05, 0x7A, 0x4E, 0xF2, 0x7D, 0x1A, 0xFB, 0x03, + 0xB4, 0xEE, 0xA2, 0x69, 0x44, 0x42, 0x5C, 0x96, 0xFB, 0xE9, 0xC7, 0x42, + 0x74, 0x7A, 0x2F, 0xDE, 0xCC, 0xA4, 0x5C, 0x29, 0xA9, 0x8C, 0xB6, 0x18, + 0xBD, 0x0F, 0xB5, 0xB4, 0x79, 0x63, 0x87, 0xAA, 0x60, 0xCA, 0xE9, 0x7C, + 0x6A, 0xA9, 0x94, 0x0F, 0x7A, 0x5B, 0xEB, 0x4D, 0x14, 0x27, 0xC5, 0x27, + 0xDB, 0x98, 0x7A, 0xB4, 0x6A, 0x79, 0xCB, 0x27, 0xEB, 0x6E, 0x51, 0x9E, + 0x6C, 0x55, 0xFC, 0x40, 0xAF, 0xBF, 0x2F, 0x66, 0xED, 0xE1, 0xB0, 0x46, + 0x29, 0xCE, 0x04, 0x92, 0xF1, 0xF2, 0x9C, 0xA4, 0x9D, 0x0C, 0xFC, 0x85, + 0x57, 0xC4, 0x1D, 0x85, 0x28, 0x8A, 0xFD, 0xA7, 0xF1, 0x3E, 0x24, 0x10, + 0x90, 0xBE, 0x97, 0xCE, 0x15, 0x78, 0x7C, 0x46, 0x13, 0xB2, 0x5E, 0x42, + 0x4D, 0x67, 0x5D, 0x1F, 0x71, 0x7A, 0xB0, 0xAD, 0xB8, 0xAA, 0x8E, 0xA2, + 0x8E, 0x1E, 0x3F, 0xD1, 0x7C, 0xE4, 0x66, 0xCA, 0x06, 0xD7, 0xC8, 0xDC, + 0x9B, 0xC5, 0x87, 0x11, 0x99, 0x8D, 0xEF, 0xE9, 0xDA, 0xB3, 0x2F, 0x20, + 0x8D, 0x9F, 0xB0, 0x4B, 0xF8, 0xDE, 0x68, 0xC5, 0x88, 0xC2, 0x5D, 0x84, + 0xB9, 0xB5, 0x90, 0x7A, 0x41, 0x0C, 0x31, 0x33, 0x55, 0x9D, 0xD6, 0xBE, + 0x86, 0x15, 0xA9, 0xE3, 0xFD, 0xB0, 0xB9, 0x79, 0xF8, 0x5C, 0xF4, 0x4B, + 0x49, 0x74, 0x27, 0x81, 0xC1, 0xEC, 0xB4, 0x2B, 0x91, 0x7E, 0xF3, 0xC2, + 0x9D, 0x62, 0x35, 0x49, 0xF4, 0xE3, 0x8E, 0x4D, 0xEE, 0x44, 0xB7, 0xE2, + 0x20, 0xB1, 0x38, 0xC5, 0x30, 0xFD, 0x01, 0x6C, 0xCC, 0x6E, 0x76, 0xF9, + 0x6C, 0x27, 0xD1, 0x0F, 0x67, 0x04, 0xCF, 0xF1, 0x00, 0xB5, 0x6A, 0xD4, + 0xCD, 0x58, 0x76, 0xAF, 0x1C, 0xFF, 0x74, 0xD7, 0xA7, 0x77, 0x45, 0xCD, + 0x33, 0x4E, 0x45, 0xBD, 0xCC, 0x38, 0x5C, 0x6C, 0xF7, 0x7C, 0xF7, 0x2B, + 0xCF, 0x45, 0x2C, 0xC4, 0x73, 0xB1, 0x2D, 0x2B, 0xE6, 0x06, 0x0F, 0x4B, + 0xAB, 0x48, 0x1E, 0xF2, 0x58, 0x0C, 0x8B, 0x47, 0x4D, 0x81, 0x32, 0x23, + 0x7F, 0x7D, 0x2F, 0xF4, 0x80, 0x43, 0x3E, 0x8A, 0xDC, 0x5D, 0x1F, 0x27, + 0xE6, 0xA2, 0xDC, 0xC8, 0xB6, 0xF7, 0x63, 0x0E, 0x6D, 0xEB, 0xE8, 0x16, + 0x52, 0x69, 0x97, 0xF2, 0x61, 0x7B, 0x2C, 0x8A, 0x15, 0xD8, 0xE1, 0xE9, + 0x28, 0xFF, 0x54, 0x92, 0xF3, 0xCB, 0x72, 0x72, 0xB5, 0x23, 0x48, 0xE9, + 0x52, 0xA3, 0xC7, 0x3B, 0x1D, 0x05, 0x90, 0x26, 0x10, 0xA4, 0x42, 0x9B, + 0xA5, 0xAF, 0x7F, 0x99, 0x3B, 0x5A, 0x70, 0xA4, 0x6C, 0xF8, 0xB5, 0xC3, + 0x42, 0x46, 0x47, 0xEA, 0x62, 0xA0, 0x8F, 0x34, 0x5F, 0x5F, 0x0A, 0x88, + 0xB9, 0x19, 0x47, 0xFD, 0x94, 0x04, 0x05, 0x7C, 0x8B, 0x65, 0xC4, 0x1D, + 0xD2, 0xFC, 0xDD, 0x0E, 0x3A, 0x92, 0x8B, 0xE0, 0xCE, 0xBD, 0xF9, 0x1B, + 0xFB, 0x91, 0xD3, 0x90, 0x80, 0x08, 0x6B, 0x94, 0x20, 0xCC, 0xC8, 0xC9, + 0xF9, 0x60, 0x28, 0x7D, 0x6F, 0xDA, 0x5E, 0x64, 0xE0, 0x1C, 0x5F, 0xE9, + 0xB8, 0xC3, 0x33, 0x18, 0xA5, 0x60, 0xE4, 0xE1, 0x45, 0x1B, 0xEE, 0x20, + 0xFF, 0x40, 0x52, 0xFB, 0x3F, 0xD2, 0x03, 0x0A, 0x71, 0xD2, 0xCE, 0xC5, + 0x84, 0x98, 0x21, 0xE1, 0xF8, 0x13, 0xD6, 0x78, 0x21, 0x75, 0x3C, 0x22, + 0x1A, 0xCC, 0x67, 0x12, 0x9B, 0x31, 0x06, 0xB7, 0x5E, 0xE6, 0x4B, 0xC2, + 0x7E, 0x12, 0xCA, 0x6D, 0xD6, 0x95, 0x67, 0xDC, 0xF1, 0x7C, 0xC8, 0xAD, + 0x95, 0x53, 0x25, 0x7B, 0x16, 0xD3, 0x0B, 0xE4, 0xF4, 0x17, 0x86, 0xC6, + 0xA1, 0x2B, 0x28, 0xA9, 0x02, 0x1D, 0x48, 0x14, 0x42, 0x0A, 0x76, 0x95, + 0x3D, 0xC4, 0x2D, 0x77, 0x5A, 0x67, 0x6F, 0xDB, 0x81, 0xA4, 0xA4, 0x74, + 0x19, 0xA0, 0xFC, 0x2F, 0x9D, 0x26, 0x4D, 0x44, 0x44, 0xDD, 0xAE, 0xCB, + 0x85, 0xBC, 0x21, 0xBB, 0xFC, 0xDF, 0xDB, 0x54, 0xAA, 0x21, 0x95, 0x0C, + 0xFF, 0x2C, 0x17, 0x37, 0x5A, 0xFC, 0x4A, 0x39, 0x34, 0xED, 0xE4, 0x71, + 0x84, 0x5C, 0x28, 0xEB, 0x0A, 0x25, 0x16, 0xA4, 0xA1, 0x8B, 0x63, 0xB0, + 0xFB, 0x26, 0xF3, 0xD1, 0x37, 0x0E, 0x52, 0xF9, 0x77, 0x3D, 0xAA, 0x66, + 0xC7, 0xB9, 0xED, 0x84, 0x88, 0xFE, 0xEF, 0x33, 0x5A, 0x61, 0x87, 0x03, + 0x2A, 0x83, 0xDB, 0x4C, 0x73, 0xBE, 0xF9, 0x6A, 0x04, 0x3F, 0xEC, 0x6E, + 0xCC, 0x5D, 0xA5, 0x8F, 0xA1, 0xCB, 0x53, 0x86, 0x80, 0xC4, 0x21, 0xBA, + 0xC2, 0x2D, 0x65, 0xE7, 0xE2, 0x35, 0x97, 0x2C, 0xA6, 0xE2, 0x09, 0x76, + 0x10, 0xA2, 0xC0, 0x30, 0xDF, 0x9A, 0xDC, 0x38, 0x06, 0x3D, 0x05, 0x26, + 0x16, 0x4D, 0xA8, 0xA9, 0x1E, 0x07, 0x1D, 0x62, 0x6C, 0xA5, 0xCC, 0xEB, + 0x05, 0x21, 0x64, 0xD4, 0x3E, 0x4B, 0xB3, 0x96, 0x14, 0x75, 0xFC, 0x5C, + 0xCA, 0xDB, 0x1F, 0xDC, 0x41, 0x9D, 0x60, 0x05, 0xF8, 0x89, 0xC9, 0x7E, + 0x3B, 0x74, 0x75, 0x49, 0x34, 0x3A, 0x74, 0x79, 0xDF, 0x16, 0x3D, 0x6F, + 0xA1, 0xF3, 0x26, 0x29, 0x61, 0x5F, 0xBB, 0xEB, 0x62, 0x42, 0x3A, 0x7F, + 0x2F, 0xC5, 0x19, 0xD6, 0x77, 0x9E, 0x1D, 0xF5, 0x15, 0x71, 0x6F, 0x74, + 0x1E, 0xE5, 0xBA, 0x08, 0x21, 0x07, 0x64, 0x9F, 0x78, 0x5A, 0x11, 0x20, + 0xFB, 0x43, 0x4F, 0x4A, 0xFD, 0x6A, 0x2F, 0xB7, 0x66, 0x7A, 0xA5, 0x27, + 0xF7, 0x6F, 0x05, 0x85, 0xCC, 0xC2, 0xC5, 0xDE, 0x18, 0x43, 0xB9, 0x9F, + 0x84, 0xBA, 0x09, 0x1A, 0x0E, 0x7E, 0xBE, 0xBA, 0xE4, 0xD6, 0x1E, 0x9E, + 0x83, 0x7D, 0x1D, 0xED, 0xDE, 0x4D, 0x96, 0x91, 0x50, 0x2D, 0x54, 0x46, + 0x98, 0xC5, 0xE2, 0xE6, 0xE7, 0x6F, 0xB4, 0x06, 0xF0, 0x56, 0x4C, 0x2B, + 0xB1, 0xEC, 0xC4, 0x98, 0x87, 0x76, 0x00, 0xF8, 0x47, 0x70, 0x4F, 0x13, + 0x2C, 0xDE, 0x79, 0x9B, 0xB5, 0x90, 0xFA, 0xC3, 0xAA, 0x0D, 0xB6, 0xCC, + 0x37, 0xB2, 0x5D, 0xB7, 0x8B, 0x19, 0x96, 0x20, 0xFF, 0x0C, 0x21, 0x23, + 0x41, 0xA8, 0x15, 0x3F, 0x03, 0x01, 0x57, 0xA2, 0x7F, 0xF1, 0xE6, 0x4B, + 0x50, 0xC3, 0xD6, 0xF3, 0xEF, 0xE0, 0x7A, 0xEE, 0x76, 0xA0, 0x67, 0x22, + 0x09, 0x45, 0x91, 0x07, 0x87, 0x1E, 0xC6, 0x2A, 0x13, 0x45, 0x10, 0x0E, + 0x72, 0x9E, 0xFB, 0xA0, 0x9C, 0xA4, 0xA3, 0xE7, 0x17, 0xC5, 0x90, 0x30, + 0x42, 0x87, 0x1B, 0x3A, 0xC0, 0xD9, 0xA7, 0x9A, 0xEE, 0xDE, 0x42, 0xFE, + 0x96, 0xD3, 0x7A, 0x3E, 0xBE, 0xAF, 0xE9, 0xCD, 0xEF, 0xA6, 0xD9, 0xC6, + 0x0E, 0x2C, 0xA9, 0xC1, 0x6B, 0x99, 0x11, 0xC2, 0x91, 0x45, 0x0B, 0xC4, + 0xD0, 0xC3, 0xD7, 0xF9, 0x0B, 0x9A, 0x1E, 0x2E, 0xC7, 0x01, 0x22, 0x6A, + 0x75, 0x50, 0x89, 0x79, 0x07, 0x21, 0x8C, 0xF9, 0xA6, 0x15, 0x95, 0xC0, + 0xE3, 0xFC, 0x20, 0x65, 0x36, 0x2D, 0x5F, 0xAE, 0xFE, 0xCE, 0x97, 0x71, + 0xF5, 0x3A, 0xBD, 0xCB, 0xA1, 0x9F, 0x46, 0xA6, 0x3A, 0xA7, 0x7A, 0x26, + 0xA2, 0xDE, 0x36, 0x19, 0x15, 0xDE, 0x17, 0x7E, 0xD7, 0x5E, 0x4A, 0xEE, + 0xE2, 0xC9, 0x53, 0x25, 0x77, 0xC3, 0x18, 0xBB, 0xB4, 0xAA, 0x43, 0xFD, + 0x5C, 0x21, 0x8A, 0x37, 0xDB, 0x1C, 0x3D, 0x36, 0x2E, 0x6D, 0xEA, 0x61, + 0x72, 0x9E, 0xF1, 0x6F, 0xD1, 0x14, 0xF6, 0x29, 0x4E, 0xFD, 0xFD, 0x3D, + 0x4D, 0xB9, 0x25, 0x4B, 0x38, 0xA2, 0x00, 0xEB, 0x14, 0xBA, 0xEE, 0xB1, + 0x03, 0x84, 0x98, 0xF4, 0xCF, 0x05, 0x9E, 0x1C, 0x7A, 0x8F, 0xAE, 0x85, + 0x76, 0x57, 0xF4, 0x8E, 0x16, 0x06, 0x35, 0x77, 0xBB, 0x90, 0x41, 0x9E, + 0xCB, 0x52, 0x97, 0xCA, 0xC1, 0x7F, 0xA9, 0x01, 0x8B, 0x7D, 0xC4, 0xB8, + 0xD9, 0xDC, 0x01, 0x3D, 0x58, 0xF8, 0x10, 0xD1, 0xDF, 0x1A, 0x6A, 0x27, + 0xE2, 0x65, 0x47, 0x1A, 0xC3, 0x8C, 0xDB, 0xE4, 0xC5, 0x5C, 0x72, 0x0D, + 0xAB, 0x84, 0x71, 0x54, 0xE2, 0x0F, 0xBB, 0xDE, 0xE0, 0x1F, 0xB1, 0x70, + 0x08, 0x09, 0x6B, 0x43, 0x72, 0x76, 0x71, 0x7C, 0xA5, 0x87, 0x65, 0x11, + 0x7F, 0xA3, 0x17, 0x93, 0x1C, 0x88, 0x4C, 0x6D, 0x9E, 0x36, 0x17, 0x37, + 0x7F, 0x18, 0xDE, 0x6B, 0xC9, 0xEF, 0x04, 0x95, 0xE6, 0x0A, 0x20, 0xEF, + 0x30, 0x53, 0xED, 0x09, 0x1F, 0x08, 0xA3, 0x42, 0x1B, 0xA5, 0x5F, 0x21, + 0x9D, 0xFF, 0xE1, 0x13, 0x23, 0xC9, 0x36, 0xB4, 0x43, 0x1F, 0x34, 0x2A, + 0x18, 0xC5, 0x26, 0x42, 0xCB, 0xFB, 0xF3, 0x67, 0xA8, 0x5E, 0xF6, 0x14, + 0x50, 0x68, 0xA6, 0xF9, 0x6D, 0x78, 0xB5, 0xF3, 0x8A, 0x14, 0xE3, 0xFE, + 0xB5, 0x7C, 0x88, 0x11, 0x56, 0xDA, 0x9A, 0x62, 0x30, 0x46, 0x34, 0xFB, + 0x9D, 0x99, 0xE0, 0xA6, 0xB2, 0x2F, 0xA6, 0xF3, 0x7F, 0x2D, 0xAC, 0x71, + 0x29, 0x0A, 0x3D, 0x86, 0xB0, 0x75, 0x97, 0xA4, 0xC3, 0x28, 0x9D, 0x6D, + 0x0F, 0xA1, 0x3A, 0xB1, 0xC7, 0xEB, 0xC5, 0x3D, 0x38, 0xE5, 0xED, 0xA6, + 0xD9, 0xDF, 0x25, 0x38, 0x81, 0xBC, 0xBA, 0x73, 0x80, 0x09, 0xED, 0x98, + 0x59, 0xB9, 0xD9, 0x71, 0xD1, 0xD8, 0x6B, 0xF7, 0x08, 0xF8, 0x8E, 0x0A, + 0xD2, 0x57, 0x66, 0xEA, 0x02, 0x5F, 0x8B, 0xF3, 0xAD, 0x62, 0xCA, 0x25, + 0x83, 0xD3, 0xA4, 0x0C, 0x3A, 0x68, 0x8E, 0xFC, 0x8A, 0xDE, 0xD8, 0x42, + 0x47, 0x6C, 0x38, 0x57, 0xE6, 0xD2, 0x6B, 0x42, 0xDD, 0x68, 0x8E, 0xBA, + 0xCD, 0xC7, 0xFB, 0x1C, 0x72, 0x6E, 0xE8, 0x2C, 0x16, 0xCF, 0xB1, 0xEB, + 0x1F, 0x07, 0xF4, 0xEB, 0x56, 0x44, 0xD2, 0xA5, 0xC8, 0xCB, 0x97, 0xD5, + 0x71, 0xA1, 0xAE, 0x11, 0x38, 0x2F, 0x2E, 0xB8, 0x06, 0x80, 0x73, 0xA2, + 0x82, 0xC6, 0x0F, 0x24, 0x58, 0xD9, 0xDB, 0x5A, 0x1A, 0xAC, 0xCA, 0xCA, + 0x6C, 0xB3, 0x74, 0x59, 0x4A, 0xBC, 0x42, 0x80, 0x8D, 0x2A, 0xF7, 0x5E, + 0x12, 0x7F, 0x01, 0x01, 0x6B, 0xF4, 0x0B, 0xFE, 0x83, 0xD1, 0xC9, 0x9C, + 0x11, 0xFE, 0x7C, 0x18, 0xBD, 0xF0, 0xB9, 0x93, 0xEA, 0x5E, 0x6F, 0x95, + 0xA1, 0x06, 0x90, 0xA2, 0xEA, 0xAD, 0xA5, 0x87, 0x23, 0x78, 0x9A, 0x20, + 0x50, 0xAF, 0x38, 0x17, 0x6D, 0x14, 0xBB, 0x68, 0x5C, 0xCB, 0x6E, 0xC7, + 0xD3, 0x11, 0x81, 0x43, 0xD5, 0xE5, 0x87, 0xE4, 0x4E, 0xFB, 0xEE, 0x3E, + 0x3A, 0x6D, 0xEC, 0x79, 0xE5, 0x90, 0x68, 0xCB, 0xF7, 0x01, 0xFF, 0x26, + 0x3B, 0x82, 0xB1, 0x67, 0x04, 0xB7, 0x32, 0x52, 0xA0, 0xFF, 0x60, 0x97, + 0x8D, 0xA9, 0x8C, 0xDC, 0xF3, 0x37, 0xE1, 0x87, 0x1F, 0x95, 0xAD, 0x16, + 0x69, 0x4B, 0xF2, 0x26, 0xE4, 0x79, 0x1C, 0x3C, 0xA8, 0x87, 0x4D, 0x9D, + 0x0D, 0xB2, 0x01, 0x29, 0x22, 0xB6, 0x20, 0x8B, 0x66, 0x8A, 0x1A, 0x09, + 0xF4, 0xE1, 0xAF, 0x52, 0xBA, 0x63, 0xA9, 0x35, 0xD1, 0x1D, 0x4B, 0xDD, + 0xBE, 0x30, 0x11, 0x4E, 0xFE, 0xCD, 0x57, 0x54, 0xFA, 0x39, 0xB4, 0x8C, + 0x2B, 0x0D, 0x83, 0x36, 0x18, 0x81, 0xE5, 0xBA, 0x18, 0xDF, 0x41, 0x5F, + 0x21, 0x25, 0xCE, 0x47, 0x11, 0x56, 0x20, 0x5D, 0x72, 0xFA, 0x54, 0x1E, + 0xF5, 0x0A, 0x31, 0x92, 0x85, 0x95, 0x26, 0x11, 0x26, 0x24, 0x67, 0x84, + 0x1A, 0xA2, 0x71, 0xFB, 0xAE, 0x7E, 0xAE, 0x27, 0xB5, 0x64, 0xF0, 0xF3, + 0x40, 0x55, 0x7D, 0xDB, 0xF3, 0x28, 0x62, 0xDD, 0xF0, 0xFA, 0x41, 0xD7, + 0xCA, 0x38, 0x73, 0x25, 0xD9, 0x13, 0x3E, 0xCB, 0xC2, 0x49, 0x79, 0x10, + 0xE9, 0x43, 0xCD, 0xEA, 0x78, 0x6C, 0x61, 0x36, 0x87, 0xF3, 0x37, 0x80, + 0x08, 0x3C, 0x5B, 0x41, 0x1A, 0x59, 0x3E, 0xA0, 0x2D, 0x07, 0x03, 0x9B, + 0xEE, 0x47, 0xEC, 0xB4, 0xB8, 0xB5, 0x5C, 0x5F, 0x70, 0xAB, 0x04, 0x12, + 0xF7, 0x5A, 0x89, 0xB7, 0x00, 0x6A, 0x2A, 0x37, 0x14, 0x56, 0xA8, 0x03, + 0x45, 0x38, 0xBB, 0xC5, 0x70, 0xAB, 0x4B, 0xBE, 0x6D, 0xEA, 0xA6, 0x27, + 0x1F, 0x19, 0x5A, 0x02, 0x12, 0xE0, 0x9E, 0x83, 0xD9, 0x78, 0x27, 0x34, + 0x6B, 0x81, 0x2A, 0x82, 0x73, 0x80, 0x06, 0x7E, 0x9C, 0xE2, 0xFB, 0x6E, + 0x12, 0xAE, 0xA6, 0x7E, 0x8D, 0xBF, 0xAC, 0x5A, 0x6C, 0x49, 0x81, 0xE7, + 0x03, 0x8C, 0x3C, 0x05, 0x01, 0x61, 0x96, 0xD8, 0x05, 0x62, 0xFA, 0x36, + 0xBC, 0x26, 0x8E, 0xB3, 0x2D, 0x49, 0x80, 0x6B, 0x4D, 0xF1, 0x63, 0x42, + 0x56, 0x53, 0xA8, 0x8E, 0x63, 0xB2, 0xCF, 0x38, 0x31, 0xF0, 0x56, 0x6D, + 0x58, 0x6A, 0xEB, 0x59, 0x07, 0x27, 0x08, 0x1D, 0x64, 0xE2, 0x5A, 0x69, + 0xBE, 0x47, 0xE8, 0xCA, 0xEE, 0x66, 0x3D, 0x95, 0xE3, 0x00, 0x24, 0xAF, + 0xEA, 0xF6, 0xE8, 0x30, 0xB2, 0x24, 0x85, 0x30, 0x28, 0xFB, 0x46, 0x7A, + 0xDC, 0xC1, 0x11, 0xF6, 0xBE, 0xBB, 0x12, 0x92, 0x9E, 0x7A, 0x85, 0x24, + 0x25, 0xF1, 0xFB, 0xDE, 0xD1, 0x1E, 0x46, 0xCE, 0x4D, 0xCC, 0xB4, 0x5D, + 0xD2, 0x41, 0x7F, 0x47, 0x92, 0x1A, 0xAE, 0xB3, 0xB5, 0x26, 0x96, 0xB2, + 0x38, 0x92, 0x33, 0x67, 0x52, 0x3D, 0xA9, 0x3C, 0xA0, 0x46, 0x43, 0xE8, + 0xEE, 0x22, 0x82, 0xD7, 0xEC, 0xBC, 0x79, 0x9E, 0x0F, 0x47, 0x20, 0x32, + 0x48, 0x7E, 0x79, 0x2C, 0x82, 0xD7, 0x57, 0x31, 0xD8, 0xE8, 0xEC, 0x4D, + 0x44, 0x7E, 0x92, 0xB8, 0xA2, 0xE3, 0xC5, 0x09, 0x6C, 0x13, 0xFF, 0xF0, + 0x35, 0x12, 0x63, 0x46, 0x46, 0x35, 0x3F, 0xC7, 0x7C, 0xB8, 0xEA, 0xA7, + 0x96, 0x9D, 0x19, 0xAC, 0x72, 0x44, 0xA5, 0xBC, 0x41, 0xD0, 0x4D, 0xA2, + 0xD7, 0x00, 0x19, 0xFF, 0xD7, 0x3F, 0x09, 0xEB, 0x58, 0xAC, 0x81, 0x9D, + 0xBB, 0x80, 0x74, 0xFA, 0x2E, 0xBC, 0x6D, 0xE6, 0xEB, 0x91, 0x80, 0x5F, + 0x67, 0x03, 0x14, 0x54, 0x65, 0x0A, 0x7D, 0x6C, 0xC1, 0xC9, 0xC0, 0xF4, + 0xE0, 0x7B, 0x6A, 0x45, 0xCF, 0x13, 0x3E, 0x37, 0x07, 0x03, 0x42, 0xCA, + 0xE0, 0xA2, 0xD1, 0x00, 0x00, 0x10, 0xDE, 0xE5, 0x81, 0x9A, 0xD0, 0x14, + 0xF7, 0x98, 0xA5, 0xE1, 0xD3, 0x84, 0xAC, 0x70, 0xC6, 0x75, 0xB4, 0x27, + 0xF5, 0xEB, 0x08, 0x4C, 0x64, 0xC1, 0x74, 0x45, 0xB1, 0x30, 0x48, 0xE4, + 0xAA, 0x99, 0xBD, 0xC0, 0x27, 0xDE, 0x54, 0xA4, 0xC4, 0xFE, 0xDF, 0x69, + 0xF2, 0x46, 0xF8, 0x7E, 0x79, 0x99, 0xFE, 0xD1, 0x4A, 0x77, 0x6C, 0xFA, + 0x13, 0x2C, 0xD3, 0x9B, 0x45, 0x2F, 0x86, 0x0F, 0xB6, 0xAA, 0x76, 0x42, + 0xE7, 0x11, 0x3D, 0xE9, 0x52, 0xC1, 0x3B, 0x17, 0x66, 0x60, 0x1C, 0x67, + 0xA9, 0xF0, 0x83, 0xFF, 0x80, 0x59, 0x4F, 0xAA, 0xC7, 0xE7, 0x95, 0x81, + 0xA0, 0xEE, 0x5D, 0x3D, 0x36, 0xA6, 0x0B, 0x81, 0xFD, 0xD0, 0xF3, 0xE7, + 0x76, 0x7C, 0x11, 0xB4, 0x4F, 0x62, 0xD6, 0x3A, 0x1E, 0x5D, 0xED, 0x91, + 0xB3, 0x55, 0x2D, 0x83, 0xD3, 0xF4, 0xC9, 0x52, 0x59, 0x6B, 0xD2, 0xCA, + 0x22, 0xC4, 0x8D, 0x74, 0xEC, 0x15, 0x47, 0x03, 0x0B, 0xDD, 0x1E, 0x83, + 0x6A, 0xD7, 0x3C, 0x6F, 0x57, 0x67, 0x6B, 0x77, 0x8D, 0x67, 0x98, 0x88, + 0x5D, 0x3C, 0x4C, 0x52, 0x6B, 0xC5, 0x8F, 0x82, 0x10, 0x18, 0x13, 0x3F, + 0xD4, 0x65, 0x18, 0xFC, 0xFA, 0xD7, 0x97, 0xFD, 0x89, 0xC4, 0x82, 0x4E, + 0xB6, 0x40, 0xC0, 0x62, 0x60, 0xB9, 0x95, 0xAB, 0x86, 0xB8, 0xE1, 0x10, + 0xBD, 0xB3, 0xEC, 0x58, 0xDF, 0x13, 0xF4, 0x4D, 0x0A, 0x1D, 0xB8, 0x78, + 0x2C, 0x0D, 0x70, 0xC2, 0xF9, 0xB8, 0x78, 0x10, 0x0E, 0x4D, 0xC6, 0x7B, + 0xED, 0x1D, 0xBF, 0x64, 0x4E, 0xBC, 0xEA, 0x0A, 0x61, 0x49, 0xCE, 0x20, + 0xD1, 0x21, 0x31, 0xEC, 0x30, 0xF9, 0x34, 0x94, 0x46, 0xF0, 0xFF, 0x4E, + 0xFE, 0xB8, 0x6D, 0x78, 0xA5, 0x2C, 0x95, 0xDD, 0x45, 0x1E, 0x73, 0xA1, + 0xC1, 0x7B, 0x60, 0xBD, 0x62, 0x2F, 0x31, 0x59, 0x6D, 0x3D, 0x00, 0x09, + 0x0D, 0x2A, 0xA4, 0x86, 0xF3, 0x5A, 0x12, 0xAA, 0x50, 0x72, 0x8F, 0xA6, + 0x96, 0xFD, 0x27, 0xA5, 0x52, 0xE3, 0xD1, 0x87, 0x8C, 0x00, 0xAE, 0xF9, + 0x98, 0x98, 0x05, 0xD6, 0x89, 0x54, 0x71, 0x7E, 0x8F, 0xA7, 0xFE, 0x40, + 0xAB, 0xEE, 0x04, 0xE2, 0xB2, 0xB5, 0x89, 0xFD, 0x38, 0xF0, 0xF9, 0x63, + 0xAD, 0xBA, 0x2F, 0xF2, 0xF2, 0xC4, 0x7B, 0xF4, 0xE4, 0x10, 0x25, 0x8C, + 0xBD, 0x6A, 0xF3, 0x23, 0x4B, 0xAE, 0xB1, 0x9B, 0x83, 0xF4, 0x1D, 0x12, + 0x54, 0x72, 0xB5, 0xD4, 0xA0, 0xED, 0x4F, 0xA0, 0xBB, 0xBD, 0xEF, 0x4E, + 0xC7, 0xDC, 0x5F, 0x04, 0x8B, 0x4F, 0x28, 0x02, 0x6D, 0x57, 0xE5, 0xD1, + 0x44, 0x86, 0x26, 0xBB, 0x8E, 0x20, 0xC2, 0xCD, 0xD2, 0x1E, 0x49, 0x0E, + 0x71, 0x36, 0xD8, 0x38, 0x7F, 0x18, 0x08, 0x16, 0x98, 0x13, 0x84, 0x39, + 0x1C, 0x17, 0xED, 0x52, 0xE8, 0x43, 0x48, 0x44, 0x00, 0x7C, 0x9C, 0xE8, + 0x80, 0xF3, 0x71, 0xD0, 0x2D, 0xF8, 0x6D, 0xFF, 0x6E, 0x0B, 0xF5, 0x86, + 0xE8, 0x68, 0x25, 0x90, 0xC2, 0x04, 0x0C, 0x30, 0x6B, 0x31, 0x3E, 0x71, + 0x51, 0x98, 0xD6, 0xD8, 0x50, 0xB4, 0xAA, 0xDF, 0x02, 0x0C, 0x78, 0x8F, + 0x5E, 0x29, 0x02, 0xC8, 0xB5, 0xAD, 0x43, 0x9E, 0x59, 0x7D, 0xF1, 0xBB, + 0x1E, 0xCC, 0xA0, 0x78, 0x53, 0xB1, 0x1C, 0x77, 0xAC, 0x55, 0xE1, 0x8C, + 0xE3, 0x65, 0x27, 0x06, 0x79, 0x61, 0x95, 0x9D, 0x93, 0x05, 0xBA, 0x35, + 0xCF, 0xAA, 0x96, 0x4F, 0x9A, 0xD1, 0x4C, 0x71, 0x27, 0xC4, 0x06, 0x5A, + 0xBD, 0x39, 0x26, 0x87, 0x5F, 0x3C, 0x61, 0x94, 0xB9, 0x55, 0x48, 0x03, + 0x06, 0x47, 0x8F, 0x81, 0x88, 0x19, 0x63, 0xE9, 0x3D, 0x8E, 0x6C, 0x5F, + 0x72, 0xDE, 0x48, 0x1B, 0xFF, 0x8C, 0xEC, 0x2B, 0xF1, 0x75, 0x64, 0x03, + 0xE7, 0xA3, 0xB4, 0xCC, 0x19, 0x44, 0x42, 0x96, 0x5C, 0xC4, 0x17, 0x6C, + 0x7A, 0x20, 0xFF, 0xE3, 0xD5, 0x2C, 0xB6, 0x5C, 0x27, 0x97, 0xB3, 0x5B, + 0x7B, 0xBC, 0x65, 0x76, 0xB5, 0xFD, 0x05, 0xD2, 0xA3, 0xC5, 0x79, 0x77, + 0xBF, 0x77, 0x00, 0x7D, 0xA0, 0x0E, 0x53, 0x15, 0x2B, 0xC1, 0xB7, 0x40, + 0xEA, 0xBC, 0x37, 0xE0, 0x52, 0x28, 0xAE, 0x03, 0x4D, 0x3E, 0x95, 0x03, + 0x61, 0x2B, 0x5C, 0x7D, 0x6E, 0x51, 0xCA, 0x49, 0x37, 0xA2, 0xCF, 0xEA, + 0x4C, 0x4B, 0x4D, 0x43, 0xCD, 0xF7, 0xBC, 0xCE, 0xEE, 0x4D, 0xE2, 0x96, + 0x6D, 0xD6, 0xE2, 0x82, 0x92, 0xFE, 0x4C, 0x3E, 0x97, 0xD5, 0xDA, 0x45, + 0xA3, 0xB0, 0xE0, 0x8C, 0x7E, 0x45, 0xF7, 0xE5, 0x9E, 0xB5, 0xA0, 0x63, + 0xE6, 0xC4, 0x0C, 0x02, 0x91, 0x17, 0x4A, 0xC2, 0xD3, 0xB1, 0xDB, 0x85, + 0xD1, 0x90, 0x7F, 0x21, 0x4B, 0x8E, 0xEA, 0x13, 0x55, 0xEE, 0xD5, 0xA2, + 0xA6, 0xB9, 0x09, 0x96, 0xA2, 0xF8, 0xCB, 0xCE, 0xC4, 0x3B, 0x1C, 0x05, + 0xEB, 0x00, 0x13, 0xFC, 0xFC, 0x9F, 0xC0, 0xCD, 0x2C, 0xB0, 0xC5, 0x8F, + 0x38, 0xD7, 0xAB, 0xE4, 0x86, 0xB4, 0xA3, 0x78, 0x1F, 0x36, 0x22, 0xD2, + 0x81, 0x6A, 0xBD, 0xA0, 0x9F, 0x61, 0x92, 0xF8, 0x6A, 0x27, 0x75, 0x72, + 0x06, 0x16, 0x66, 0x76, 0x90, 0x93, 0x29, 0xBD, 0xEB, 0x9D, 0xA5, 0x81, + 0xEF, 0xEB, 0x69, 0x93, 0x8E, 0xE8, 0x17, 0x8F, 0x42, 0x0A, 0x4D, 0xA0, + 0x2D, 0x20, 0xB3, 0x1F, 0x6A, 0xDB, 0x22, 0xE9, 0x24, 0x64, 0x52, 0x06, + 0x65, 0xA5, 0xC5, 0x82, 0x59, 0x47, 0xF4, 0xE9, 0xB9, 0xA3, 0xB1, 0x02, + 0xFC, 0x60, 0x8B, 0x42, 0xF5, 0x23, 0xD8, 0xD8, 0x35, 0x70, 0x38, 0xEB, + 0x5D, 0x15, 0xEF, 0xD6, 0xD3, 0x75, 0x80, 0x6E, 0xBA, 0x2E, 0xD6, 0x11, + 0x54, 0x6E, 0x24, 0xC1, 0xC7, 0x7A, 0xE1, 0xCB, 0xAE, 0x62, 0x27, 0x48, + 0xB7, 0x9C, 0xA7, 0x9E, 0x15, 0xFD, 0xDE, 0xC0, 0xBE, 0xBB, 0xC2, 0x2E, + 0x4A, 0x5C, 0xD4, 0x81, 0xC0, 0x93, 0x58, 0x00, 0x9C, 0xFB, 0x36, 0x27, + 0xD7, 0x72, 0x46, 0x9D, 0xAC, 0xEF, 0xD8, 0x14, 0x1C, 0x58, 0xC0, 0x4E, + 0xD4, 0x16, 0xE1, 0x58, 0x56, 0x25, 0xA9, 0x38, 0xCF, 0x06, 0xAA, 0xA3, + 0x4F, 0x52, 0x70, 0x09, 0x41, 0x44, 0xD0, 0x98, 0x73, 0xED, 0x18, 0xB4, + 0xDB, 0x07, 0xC9, 0xB7, 0xBB, 0x5A, 0xD6, 0x08, 0xE5, 0x89, 0x19, 0xD8, + 0x1A, 0xB6, 0x84, 0x72, 0x1B, 0xEA, 0x14, 0x78, 0x96, 0xB4, 0x2D, 0x61, + 0x20, 0x8D, 0x9A, 0xD2, 0x87, 0x23, 0x18, 0x7A, 0xA3, 0x70, 0x4D, 0xA6, + 0xBB, 0xEE, 0x99, 0x78, 0xD8, 0x94, 0xF1, 0x35, 0x91, 0x45, 0xDB, 0x2A, + 0x8A, 0xDD, 0x8F, 0xC5, 0x05, 0x17, 0xB6, 0x69, 0x4E, 0xD2, 0xF0, 0x16, + 0x09, 0x14, 0x65, 0xE0, 0x76, 0x6B, 0x33, 0xE8, 0x4D, 0xDF, 0xAF, 0x5A, + 0x0C, 0xF6, 0xB0, 0x29, 0xEF, 0xB9, 0x85, 0x96, 0x16, 0xED, 0x03, 0x45, + 0xFA, 0x6F, 0x03, 0x64, 0x62, 0x6D, 0x32, 0x75, 0x82, 0x32, 0x14, 0x23, + 0x5A, 0x85, 0xFF, 0xFE, 0x65, 0x52, 0xBC, 0xAD, 0x99, 0xC2, 0xDA, 0x8B, + 0x86, 0xC0, 0x2E, 0x78, 0x38, 0xDF, 0x5E, 0x83, 0xDE, 0xE0, 0x72, 0xD5, + 0x91, 0x6B, 0xDB, 0xDF, 0x7F, 0xA7, 0x8B, 0xA4, 0x5B, 0x10, 0x93, 0x4D, + 0xA4, 0xB4, 0x22, 0xC1, 0xB3, 0xBE, 0x8B, 0x56, 0x82, 0xB9, 0x33, 0x85, + 0x01, 0xFA, 0xF5, 0x95, 0x9D, 0x0C, 0xBC, 0xD4, 0xB0, 0x2F, 0x94, 0xD9, + 0x2E, 0xDA, 0xB9, 0x49, 0xC5, 0x53, 0xA2, 0xE9, 0x4D, 0x81, 0xDE, 0xC0, + 0xF8, 0x01, 0x60, 0xEA, 0xAA, 0x57, 0x66, 0xA5, 0x5D, 0x4B, 0x6D, 0xEC, + 0x85, 0xBF, 0x10, 0x18, 0x43, 0xD1, 0xD7, 0xA2, 0xBA, 0x72, 0x09, 0x63, + 0x71, 0xB2, 0xA2, 0x14, 0x52, 0x94, 0xFD, 0x40, 0xA6, 0x89, 0x1B, 0xD5, + 0x16, 0x7D, 0xB1, 0x22, 0x00, 0xF7, 0x62, 0x12, 0x5E, 0xBB, 0xA1, 0x03, + 0x6C, 0x3D, 0x32, 0x1C, 0xD8, 0x3A, 0xB5, 0x24, 0xF6, 0x64, 0x67, 0xCD, + 0x47, 0xEB, 0x6A, 0xFB, 0x94, 0xCE, 0xA6, 0xF4, 0x9D, 0x2B, 0xBD, 0x50, + 0x2A, 0x53, 0x63, 0xEF, 0x7B, 0x94, 0x68, 0x26, 0xE2, 0xD8, 0x13, 0x5A, + 0xD2, 0xE3, 0x1D, 0x01, 0xE4, 0xB8, 0x3C, 0x42, 0x07, 0x3B, 0x14, 0x01, + 0xEB, 0x18, 0xBF, 0x39, 0xD9, 0xC4, 0xD6, 0x41, 0xB2, 0xE7, 0xCD, 0x02, + 0x86, 0x8B, 0xA7, 0x77, 0x5D, 0xC9, 0x5C, 0xC0, 0xBE, 0xDE, 0x3D, 0x67, + 0xA3, 0xD7, 0xDA, 0xB5, 0x88, 0x39, 0xEA, 0x9D, 0x7A, 0xF7, 0x99, 0x3E, + 0xDE, 0xF9, 0x36, 0x1E, 0xBB, 0xAB, 0x61, 0x8C, 0xB2, 0xB9, 0x61, 0x18, + 0x7D, 0x4A, 0x32, 0x7E, 0xCC, 0x71, 0xBC, 0xC6, 0xAA, 0xDE, 0x08, 0xFF, + 0xEE, 0x44, 0x4B, 0xD7, 0xC1, 0xDB, 0xCE, 0xFE, 0x89, 0x56, 0x03, 0xDA, + 0x3A, 0xF5, 0xD3, 0x9D, 0x39, 0x63, 0x92, 0x33, 0x50, 0x13, 0x8B, 0x7B, + 0x5A, 0xC0, 0x79, 0xED, 0x40, 0xAD, 0x1B, 0x53, 0x50, 0x74, 0x0A, 0xA0, + 0xA7, 0x5D, 0x5B, 0x61, 0x85, 0x93, 0x8A, 0xB9, 0xA9, 0x2C, 0x0F, 0xA2, + 0xBD, 0x7A, 0x33, 0xF3, 0xD6, 0xD6, 0x64, 0x60, 0xCF, 0x12, 0x88, 0x08, + 0x13, 0x0B, 0xC2, 0x76, 0xEC, 0x4B, 0x75, 0x74, 0xCC, 0x60, 0xF8, 0x9E, + 0xAD, 0x40, 0xFD, 0x5E, 0x58, 0x2D, 0x08, 0xB7, 0x6C, 0xB6, 0x27, 0x73, + 0x4B, 0x31, 0x03, 0x1D, 0x7A, 0xC5, 0x59, 0x67, 0x1F, 0x5C, 0xDE, 0x08, + 0x24, 0x0D, 0xB9, 0x33, 0x97, 0x51, 0xC6, 0xC3, 0x13, 0xE0, 0xFC, 0x45, + 0xDA, 0x5F, 0xFC, 0xA9, 0x8E, 0x71, 0x54, 0x1C, 0x3A, 0x4D, 0xFB, 0x7B, + 0x06, 0xFB, 0x65, 0xB1, 0x27, 0x0B, 0x8C, 0xAF, 0xF2, 0xA0, 0x12, 0xA6, + 0xD7, 0xAC, 0x27, 0xC1, 0x55, 0xE7, 0x17, 0x81, 0xFD, 0xA2, 0xF8, 0xC3, + 0x17, 0x55, 0x9B, 0x00, 0xFE, 0x91, 0xA9, 0xDC, 0xDE, 0xB0, 0xD7, 0x5D, + 0x2A, 0xE8, 0x87, 0xF2, 0x1B, 0x28, 0x19, 0x20, 0x63, 0x9E, 0xD8, 0x7E, + 0x85, 0xF3, 0x87, 0x0D, 0xAF, 0x35, 0xA5, 0x9F, 0x3B, 0xE7, 0x44, 0x8D, + 0x63, 0xDE, 0xEB, 0x7E, 0xC7, 0xD2, 0x0F, 0x09, 0x30, 0xE3, 0xE2, 0x7B, + 0xEA, 0x74, 0xAD, 0x46, 0x7D, 0xB4, 0xB8, 0x0C, 0xF1, 0xD3, 0xFA, 0x07, + 0xF3, 0xDD, 0xC5, 0xB1, 0x00, 0xF2, 0xD6, 0xBD, 0x4B, 0xBD, 0xAC, 0xC8, + 0xBB, 0xA7, 0xD4, 0x53, 0xDE, 0x73, 0x0D, 0xED, 0xFB, 0x84, 0x4C, 0x82, + 0x47, 0x0D, 0x2D, 0x9D, 0x2B, 0x0C, 0x4A, 0x4D, 0x4B, 0xD4, 0x3A, 0x4D, + 0x64, 0x27, 0xD8, 0x59, 0x27, 0xD3, 0x41, 0x73, 0xA5, 0xCB, 0xF5, 0x31, + 0xA2, 0x88, 0x99, 0x79, 0xFB, 0x2B, 0x9A, 0xBA, 0x68, 0x88, 0x35, 0x12, + 0x15, 0x11, 0xF6, 0xEA, 0x9A, 0x1B, 0x2A, 0xE1, 0x95, 0x5B, 0x15, 0xAB, + 0x79, 0xE2, 0x5A, 0x4A, 0x6E, 0xE2, 0xF7, 0x63, 0x74, 0x52, 0xB5, 0x9B, + 0xA9, 0x58, 0x5D, 0x78, 0xAB, 0x61, 0x40, 0xA5, 0x6F, 0x99, 0x80, 0x06, + 0xCA, 0x73, 0x82, 0x78, 0x64, 0x8F, 0xE4, 0xA7, 0x2F, 0x9F, 0x6D, 0x50, + 0x80, 0x11, 0xF4, 0xE9, 0xE3, 0x63, 0x2A, 0x96, 0x0C, 0xFC, 0x3C, 0xE0, + 0xAA, 0xF7, 0x05, 0x55, 0x28, 0xB0, 0x76, 0x24, 0x87, 0xDA, 0x29, 0x28, + 0x05, 0xA9, 0x61, 0x0B, 0x66, 0x3C, 0xA0, 0x51, 0x5E, 0xCE, 0xF5, 0x80, + 0x0F, 0x1C, 0x90, 0xDD, 0x56, 0x52, 0x07, 0xDF, 0xB4, 0xE6, 0x92, 0x4A, + 0x57, 0x97, 0x71, 0xAB, 0x58, 0xF3, 0x03, 0x43, 0x99, 0x49, 0x1A, 0xFC, + 0x96, 0x29, 0x31, 0x15, 0x30, 0x6D, 0xCA, 0x92, 0x39, 0x68, 0xF6, 0xAE, + 0xDE, 0x56, 0x74, 0x53, 0xC5, 0xCA, 0xBE, 0x09, 0x0C, 0x88, 0xEE, 0xEC, + 0xE9, 0xE8, 0xD0, 0x6A, 0x55, 0x6A, 0xB2, 0xDF, 0x41, 0x79, 0xC8, 0x44, + 0xD1, 0x2B, 0x6B, 0x5F, 0xB4, 0x27, 0x02, 0xFE, 0x9E, 0x70, 0x48, 0xE9, + 0xE8, 0x9B, 0x44, 0x5D, 0x19, 0xB7, 0x24, 0x47, 0x42, 0x0D, 0x1D, 0xA9, + 0x26, 0x07, 0x70, 0xC4, 0x36, 0x6A, 0x03, 0xA2, 0xBD, 0x60, 0x65, 0x9A, + 0x92, 0x6F, 0x0A, 0x1B, 0xE6, 0x36, 0x7B, 0xA4, 0x55, 0x79, 0xBF, 0x7B, + 0x27, 0xBE, 0x6D, 0x67, 0x01, 0x6D, 0xB7, 0x49, 0x7C, 0x3F, 0x99, 0x1B, + 0x4E, 0xFB, 0x32, 0x3A, 0xE5, 0x76, 0x0B, 0x96, 0xC6, 0x55, 0xC5, 0x90, + 0x5F, 0x80, 0x19, 0x77, 0xAD, 0xB1, 0x5F, 0x6C, 0x75, 0x41, 0x1E, 0x07, + 0x58, 0x6F, 0x6D, 0xB5, 0xDA, 0x2E, 0x3E, 0x2B, 0x76, 0xAA, 0x4D, 0xF5, + 0x3F, 0x9A, 0x56, 0x31, 0x53, 0x74, 0x1F, 0xA6, 0xC3, 0x97, 0xAE, 0x8A, + 0x3E, 0x8B, 0x76, 0xE1, 0x2C, 0x77, 0x6C, 0x70, 0xEC, 0xBB, 0xD5, 0xA5, + 0xA7, 0x30, 0x4B, 0xE8, 0xA6, 0x29, 0xAC, 0xE6, 0x6F, 0x8E, 0xC7, 0xFF, + 0xBA, 0xD9, 0xCB, 0x62, 0xE8, 0x2E, 0xD7, 0xCF, 0xA3, 0x02, 0xD4, 0x55, + 0x88, 0x2D, 0x12, 0x9D, 0x6A, 0x19, 0x50, 0xB4, 0x98, 0xFA, 0x29, 0xF5, + 0x2E, 0xFF, 0xF2, 0xD4, 0xAD, 0x04, 0x85, 0xF4, 0xB6, 0x22, 0x56, 0x03, + 0x50, 0x3F, 0x96, 0x5D, 0xDE, 0xCD, 0x0D, 0xB3, 0xC5, 0xFB, 0xDB, 0xAC, + 0x7F, 0xBD, 0xC1, 0xB6, 0xD0, 0x20, 0xCF, 0x30, 0x5E, 0x62, 0xD6, 0xF9, + 0x44, 0x19, 0xF3, 0x96, 0x0D, 0x72, 0xF8, 0xFB, 0x71, 0xB1, 0x9D, 0xA7, + 0x77, 0x6E, 0xDD, 0xD2, 0x1B, 0xD9, 0x39, 0xAB, 0x10, 0x26, 0x18, 0xB8, + 0x56, 0x92, 0x6E, 0x9B, 0xC2, 0x3D, 0x9B, 0x94, 0x88, 0x9E, 0x2B, 0x4D, + 0x79, 0xF6, 0x8D, 0xC6, 0x23, 0x0B, 0x8D, 0xF4, 0xB3, 0x00, 0x8C, 0xD4, + 0x4F, 0xE1, 0xA1, 0x2B, 0x9F, 0xE7, 0x3D, 0xE9, 0x04, 0x65, 0xD4, 0x21, + 0x87, 0x44, 0xDB, 0x00, 0x30, 0x23, 0x7A, 0x94, 0xC1, 0xE7, 0x4B, 0xC4, + 0xA0, 0xA6, 0x90, 0x20, 0x99, 0xE6, 0x98, 0x48, 0x67, 0xB6, 0x49, 0x90, + 0x20, 0xB4, 0xA0, 0xA8, 0x90, 0x1E, 0x1B, 0x49, 0x50, 0x41, 0x7B, 0xC5, + 0x02, 0xF3, 0xFF, 0xB1, 0x6D, 0x39, 0x79, 0x1C, 0x3C, 0x5E, 0xC7, 0x98, + 0x1F, 0xD9, 0x52, 0x49, 0x75, 0x59, 0x01, 0x1A, 0xC1, 0x82, 0xBD, 0xDB, + 0x1A, 0x86, 0xD8, 0x9F, 0x12, 0x93, 0xD2, 0x80, 0x13, 0xDE, 0x79, 0x3D, + 0xB6, 0xEB, 0xC5, 0x47, 0x75, 0x24, 0xE3, 0x70, 0x8E, 0x20, 0xBE, 0x78, + 0x26, 0x15, 0xBD, 0xD4, 0x5B, 0x9D, 0x6D, 0x7B, 0x02, 0x80, 0x73, 0x44, + 0xA2, 0xC7, 0x22, 0x8D, 0xAD, 0x19, 0xD0, 0x38, 0x2B, 0xEA, 0x4F, 0xDE, + 0x68, 0x84, 0x3C, 0x77, 0x6B, 0xA2, 0x6C, 0x9A, 0x56, 0x13, 0x75, 0x66, + 0x8A, 0x91, 0x87, 0xDA, 0xC4, 0x24, 0xE6, 0xC5, 0x14, 0xE7, 0x91, 0x0B, + 0x40, 0xBD, 0x7D, 0x8A, 0x3A, 0x0D, 0x39, 0xB5, 0x65, 0x1A, 0xF6, 0x0F, + 0x79, 0x4D, 0xED, 0x07, 0x8F, 0xE4, 0x48, 0xA3, 0x7A, 0xE8, 0x9F, 0x09, + 0x5B, 0x9E, 0x30, 0x46, 0xA8, 0x63, 0x89, 0x9E, 0xAF, 0xD1, 0x8F, 0xBE, + 0x53, 0x20, 0x07, 0xDE, 0x54, 0x8B, 0x8B, 0x98, 0xED, 0x76, 0xD7, 0x3A, + 0xE9, 0x40, 0xEC, 0x27, 0x64, 0xDC, 0x66, 0xD4, 0x32, 0x22, 0x43, 0x7E, + 0xE0, 0x3E, 0xF8, 0x15, 0xAB, 0xDE, 0xAA, 0xC4, 0x13, 0x7F, 0x56, 0x4E, + 0x57, 0xC8, 0x69, 0x27, 0xD4, 0xC6, 0x6B, 0x72, 0x71, 0xB8, 0xA4, 0x7A, + 0x2F, 0x82, 0x7D, 0xEE, 0x0C, 0x21, 0xCE, 0xDF, 0xA5, 0x56, 0x01, 0xFC, + 0xD2, 0xE7, 0x48, 0x35, 0xD6, 0x8C, 0x87, 0xEF, 0xD8, 0xE1, 0xDC, 0xFC, + 0x60, 0x1D, 0xD7, 0x81, 0xE5, 0xE2, 0x83, 0x83, 0xF7, 0x14, 0xDA, 0xC8, + 0x64, 0xA1, 0xDC, 0xBF, 0x6A, 0x0D, 0xB4, 0x5D, 0xCB, 0x1E, 0xDF, 0xA7, + 0xE7, 0x37, 0xDE, 0xCD, 0x35, 0x27, 0xAF, 0x18, 0xD3, 0xB3, 0xC5, 0xF1, + 0x69, 0x57, 0xCD, 0xE4, 0x64, 0x07, 0x50, 0x08, 0x80, 0x80, 0x6A, 0x2F, + 0xD3, 0x1E, 0xA8, 0xC9, 0xA7, 0x6C, 0xFD, 0xA1, 0x91, 0xF3, 0x06, 0x12, + 0x97, 0x56, 0x9E, 0x37, 0x6A, 0x3D, 0x30, 0x0E, 0x0D, 0x88, 0x1D, 0x47, + 0xCC, 0x95, 0x53, 0xAA, 0xF4, 0xDC, 0x11, 0x9C, 0xD5, 0xBA, 0xDA, 0xA6, + 0xAC, 0xE3, 0xC6, 0x14, 0x54, 0x75, 0xA9, 0x22, 0x31, 0x0E, 0x58, 0x6B, + 0xF6, 0x3E, 0x42, 0x54, 0x81, 0xF1, 0x26, 0x60, 0x42, 0x7E, 0xD7, 0x15, + 0x7C, 0x1A, 0xB3, 0x48, 0x74, 0x7E, 0x2A, 0xBC, 0x32, 0xEA, 0x37, 0x98, + 0x56, 0x7C, 0x06, 0x44, 0xD3, 0xC6, 0x91, 0x8D, 0x8A, 0xA0, 0xF6, 0x8E, + 0x84, 0x11, 0xC1, 0xEB, 0x9A, 0x39, 0x1A, 0xF2, 0xA7, 0x78, 0x17, 0x21, + 0x3B, 0xBF, 0x32, 0x5B, 0x9C, 0x61, 0x6A, 0xDD, 0x96, 0x55, 0x62, 0x38, + 0x57, 0x6F, 0xA8, 0x7A, 0xB3, 0x44, 0x85, 0x6C, 0x4B, 0x06, 0xD6, 0x8E, + 0xAF, 0x6F, 0x30, 0x03, 0xBA, 0x88, 0xE4, 0x2A, 0x61, 0x58, 0x33, 0x34, + 0xC9, 0xBF, 0x52, 0xC4, 0x11, 0x71, 0xD1, 0x65, 0xEC, 0x07, 0x40, 0x92, + 0x4A, 0x39, 0x4A, 0xF1, 0x6A, 0x37, 0x25, 0x82, 0x91, 0x4A, 0x68, 0x98, + 0xAA, 0x25, 0xDC, 0xD4, 0xCB, 0x51, 0x15, 0x46, 0xE4, 0xF0, 0x06, 0xA1, + 0x5B, 0x7F, 0xCA, 0xC9, 0xC9, 0xD7, 0x91, 0xF3, 0x9F, 0x0E, 0xC0, 0x69, + 0x37, 0x48, 0x81, 0x0C, 0xF4, 0x15, 0x51, 0x9E, 0xE3, 0x73, 0xAC, 0xDF, + 0x57, 0x49, 0x2A, 0xF6, 0x98, 0x72, 0x5C, 0x43, 0x2A, 0x63, 0x40, 0x94, + 0xF1, 0xB4, 0x0B, 0xBD, 0x79, 0x67, 0xB8, 0xAB, 0xAE, 0xD4, 0x9C, 0xFA, + 0x2F, 0x64, 0x0D, 0x33, 0xB7, 0x7F, 0x9E, 0xC4, 0xB7, 0xE6, 0xCB, 0x5E, + 0x61, 0x60, 0x29, 0x6D, 0xB7, 0xC9, 0xCA, 0x7D, 0xE2, 0x43, 0x1E, 0x95, + 0x04, 0xE1, 0xA9, 0x6B, 0xBD, 0x5F, 0xB2, 0xBF, 0x07, 0x1C, 0xFF, 0x30, + 0x74, 0x9A, 0xBC, 0xC4, 0xD5, 0x5C, 0x00, 0x32, 0x76, 0xA6, 0xDD, 0x25, + 0x3D, 0x53, 0xD0, 0x38, 0x34, 0x53, 0x7B, 0xD6, 0xBF, 0x0E, 0x84, 0xA0, + 0x96, 0xF9, 0x8A, 0x82, 0x8D, 0x94, 0x60, 0x57, 0xE2, 0x54, 0xBE, 0x44, + 0x96, 0xF7, 0x86, 0xF5, 0x39, 0x0D, 0x05, 0xA7, 0xB6, 0x74, 0xA5, 0x41, + 0xB3, 0x0A, 0xB0, 0x5D, 0x91, 0xCB, 0x85, 0x79, 0x83, 0x4B, 0xC6, 0x55, + 0x57, 0x68, 0x8C, 0x91, 0x2F, 0x2A, 0xB8, 0x4A, 0x08, 0x82, 0x1F, 0xEC, + 0x9A, 0x68, 0x11, 0x4C, 0x22, 0x2C, 0x90, 0x86, 0x7E, 0xA5, 0x71, 0x46, + 0xB5, 0xE0, 0x2B, 0x3F, 0x21, 0x8E, 0xCD, 0x41, 0xA3, 0x96, 0xA5, 0x9E, + 0x88, 0x9D, 0xC0, 0x06, 0x64, 0x4A, 0x4B, 0x3A, 0xD4, 0xA1, 0xE7, 0x16, + 0xD4, 0x3E, 0x57, 0xD2, 0x0C, 0xDA, 0xE1, 0x34, 0xD8, 0xD6, 0x58, 0xF7, + 0x86, 0xBD, 0xF6, 0xC4, 0xBC, 0xDA, 0x21, 0x74, 0xCA, 0x8A, 0xA6, 0xAA, + 0x30, 0xEF, 0x25, 0x1F, 0x32, 0x7B, 0x49, 0xA6, 0xEF, 0x9B, 0x95, 0x51, + 0x83, 0x34, 0xB8, 0xB8, 0x3E, 0xCE, 0xF6, 0x85, 0x21, 0x3F, 0xE2, 0x93, + 0x5E, 0x52, 0xBF, 0x8D, 0xE7, 0xDD, 0xCE, 0xDF, 0x0B, 0x99, 0xB4, 0xB3, + 0x89, 0x31, 0x70, 0xAE, 0x82, 0x4D, 0xF5, 0xD1, 0x31, 0xF7, 0x04, 0xB2, + 0x8A, 0x6A, 0xD8, 0xAD, 0x36, 0x50, 0x7D, 0x5B, 0xD5, 0xD1, 0x26, 0x07, + 0xB0, 0x40, 0xF0, 0x93, 0x4C, 0x17, 0xCD, 0x3F, 0xC3, 0x65, 0x95, 0x25, + 0xF4, 0x58, 0x12, 0xEE, 0xAA, 0xE6, 0x86, 0xAB, 0x92, 0x90, 0x18, 0xCD, + 0xBD, 0x9A, 0x98, 0xFB, 0x64, 0x17, 0x61, 0xF7, 0x04, 0x8B, 0x26, 0xD6, + 0x13, 0xA2, 0x0C, 0x7C, 0xB7, 0x98, 0x35, 0xD0, 0x47, 0x2C, 0x44, 0xB0, + 0xA6, 0x5E, 0x96, 0xAE, 0x60, 0x54, 0x15, 0x1C, 0x1F, 0xEF, 0x95, 0x2A, + 0x7F, 0xF5, 0x11, 0x8B, 0xD2, 0xFA, 0x9D, 0x2B, 0x80, 0xD7, 0xA3, 0x0E, + 0x25, 0xFD, 0x61, 0xA1, 0x59, 0xEF, 0xFA, 0xC6, 0x7D, 0x8C, 0xE2, 0x0E, + 0xD5, 0x3B, 0x7F, 0x0A, 0x9B, 0x07, 0x66, 0x2A, 0x10, 0xF7, 0x58, 0x97, + 0x78, 0xB5, 0x9E, 0x8C, 0x17, 0x10, 0x36, 0x8F, 0x7E, 0xB5, 0x62, 0xDD, + 0xBA, 0x53, 0x62, 0x20, 0x86, 0x69, 0x0B, 0x44, 0xDF, 0x3A, 0xEA, 0x0B, + 0xB6, 0xD8, 0xDD, 0x3E, 0x0F, 0x0D, 0xD0, 0x37, 0xDC, 0x2D, 0xD7, 0xEF, + 0xB6, 0xD7, 0x4E, 0x2B, 0xFE, 0xA1, 0x4B, 0xDC, 0xC2, 0x69, 0xEA, 0x04, + 0x79, 0x6E, 0xC2, 0xD4, 0xD6, 0xC7, 0x3D, 0x21, 0x7C, 0xBD, 0x12, 0x4C, + 0x3A, 0x0F, 0xA6, 0xB9, 0xA8, 0x64, 0xF0, 0x13, 0x24, 0x9C, 0xD9, 0xC8, + 0x97, 0xBB, 0xAD, 0x31, 0x3D, 0x74, 0x6C, 0x6D, 0x62, 0xE7, 0x4E, 0x54, + 0xC9, 0xEA, 0x0C, 0x65, 0xA5, 0xF8, 0x4A, 0xC1, 0x7C, 0x26, 0x6B, 0x3F, + 0x71, 0x06, 0xA8, 0xE6, 0xD5, 0x41, 0xCF, 0xD3, 0xFB, 0x6C, 0x88, 0xBC, + 0x82, 0xE1, 0x4D, 0x5F, 0x3C, 0x48, 0x61, 0xB4, 0xA1, 0x17, 0x43, 0x18, + 0x8E, 0xA3, 0xD2, 0xDE, 0xF5, 0x11, 0xE7, 0x6F, 0xBA, 0x9D, 0x00, 0x8E, + 0x59, 0x6D, 0xC5, 0x1C, 0x59, 0x38, 0xD5, 0x3D, 0x1F, 0xB9, 0x20, 0xDA, + 0x91, 0xF3, 0xA6, 0x79, 0x91, 0xD4, 0x6A, 0x96, 0xB6, 0xDE, 0xF6, 0xD9, + 0xB7, 0x43, 0xD9, 0x14, 0x03, 0x61, 0x69, 0x6B, 0xF1, 0x96, 0x91, 0x5B, + 0xA6, 0x47, 0xA5, 0x87, 0x07, 0x5C, 0xB7, 0x33, 0xE1, 0x35, 0xFA, 0x71, + 0x0B, 0xF0, 0x15, 0x96, 0x1D, 0xA7, 0x01, 0x88, 0xEC, 0x94, 0xC5, 0xD1, + 0x62, 0x53, 0x0F, 0xD9, 0x37, 0x88, 0x7B, 0x83, 0x9F, 0x59, 0x19, 0xB6, + 0xC3, 0x6F, 0x98, 0xF7, 0x40, 0x34, 0x10, 0x84, 0xB3, 0x66, 0x72, 0x4E, + 0x9B, 0x5B, 0xD5, 0xCE, 0x84, 0x47, 0x6C, 0xBB, 0x89, 0xC0, 0xD7, 0x07, + 0x11, 0x20, 0xD8, 0x2E, 0x27, 0x52, 0x3C, 0x33, 0x9E, 0xC9, 0x9F, 0x9F, + 0x4A, 0x5F, 0x73, 0xC9, 0xBE, 0xC9, 0x63, 0xD9, 0xF1, 0xDA, 0xE6, 0x3B, + 0x09, 0xC0, 0xAA, 0x55, 0xD1, 0xA6, 0x31, 0xF6, 0xB4, 0x3D, 0xED, 0x79, + 0x56, 0xE8, 0xB9, 0x04, 0xC6, 0x5D, 0x10, 0x81, 0x86, 0xB8, 0xD4, 0x32, + 0xF8, 0x7B, 0xC4, 0x9C, 0x89, 0x68, 0x26, 0x8C, 0xA1, 0xC2, 0x40, 0x34, + 0x4B, 0xAD, 0x06, 0xC9, 0x31, 0xD1, 0xDD, 0xE6, 0xB8, 0x77, 0x82, 0xA4, + 0xFE, 0x8F, 0x74, 0x69, 0x8E, 0xFF, 0x33, 0xB8, 0xAE, 0x29, 0x99, 0x92, + 0x37, 0x8B, 0x82, 0x73, 0x51, 0xE3, 0x0D, 0x5A, 0x88, 0xBE, 0x20, 0x12, + 0x7E, 0x04, 0x1A, 0xDA, 0x76, 0x79, 0x34, 0x15, 0xA3, 0x52, 0x5D, 0x77, + 0x90, 0x41, 0xFD, 0x32, 0xA5, 0x43, 0x27, 0x03, 0xEC, 0xD6, 0x05, 0x49, + 0x6E, 0x0F, 0x21, 0xD2, 0xBD, 0x5E, 0x2C, 0x46, 0x8C, 0x07, 0xAB, 0x64, + 0xA3, 0x00, 0x52, 0x6F, 0x65, 0x87, 0x91, 0x2A, 0x88, 0x3F, 0x93, 0x5C, + 0xC6, 0x2F, 0xD2, 0xF6, 0x7E, 0x6D, 0x48, 0xC8, 0x7E, 0x29, 0x37, 0x3E, + 0xA5, 0xA6, 0x04, 0x3B, 0x55, 0x65, 0xB5, 0x9B, 0x49, 0x72, 0x9C, 0xB7, + 0xE6, 0xC4, 0x6D, 0x6A, 0xBD, 0x71, 0x60, 0x6B, 0xBD, 0x60, 0x2E, 0x43, + 0xFE, 0x84, 0x88, 0xD8, 0x8C, 0x81, 0xD1, 0xB0, 0x8F, 0xAA, 0xA0, 0x91, + 0x9B, 0x1E, 0xE2, 0xA7, 0x1D, 0x56, 0x89, 0x72, 0xE7, 0xD3, 0xE1, 0x58, + 0x4E, 0x07, 0x30, 0x75, 0xDE, 0xCD, 0x00, 0xD2, 0xF6, 0xFB, 0x2D, 0x5D, + 0xAA, 0x29, 0xF7, 0xEB, 0x84, 0x16, 0x28, 0x17, 0xEB, 0xC9, 0x6D, 0x18, + 0xE9, 0x22, 0xF2, 0xED, 0x11, 0xBC, 0xDC, 0x33, 0x91, 0x01, 0xC9, 0x6F, + 0x96, 0xD1, 0x89, 0xEB, 0xEF, 0x47, 0x55, 0x93, 0xF1, 0x94, 0x2D, 0xDE, + 0x40, 0x2B, 0x9E, 0xDB, 0x02, 0x9E, 0xB8, 0xA9, 0x7E, 0x9D, 0xB6, 0xBF, + 0x96, 0x87, 0x3F, 0x07, 0x8D, 0x43, 0x58, 0x70, 0x92, 0xB8, 0x41, 0x7A, + 0x05, 0x3F, 0x1F, 0xA7, 0x0B, 0x5B, 0x29, 0xB1, 0x6C, 0x76, 0xB3, 0x44, + 0x6C, 0x6F, 0x82, 0x74, 0x10, 0xAB, 0xF0, 0x29, 0x20, 0x6D, 0x00, 0x1E, + 0x42, 0x89, 0x8B, 0x79, 0x4B, 0x6A, 0xF0, 0x9D, 0x5E, 0x1C, 0x05, 0x7B, + 0x2B, 0x57, 0xB3, 0x45, 0xBF, 0x5A, 0x72, 0x46, 0x01, 0xFB, 0xF6, 0x03, + 0x14, 0xBB, 0x1A, 0x1C, 0x62, 0xCA, 0x9B, 0x40, 0xB9, 0xAE, 0x48, 0x4A, + 0xC9, 0x0E, 0x0A, 0x26, 0x85, 0x2C, 0x01, 0x92, 0x3F, 0xE1, 0x22, 0x3B, + 0xBC, 0x25, 0xF6, 0x08, 0xB7, 0x7E, 0x94, 0x45, 0x18, 0x9B, 0x48, 0xEE, + 0x5E, 0xD0, 0xC6, 0x74, 0x34, 0xAF, 0x6E, 0x66, 0xBC, 0x0C, 0xAA, 0x6D, + 0xD6, 0x1A, 0xC1, 0x0F, 0xAC, 0xF6, 0x97, 0x20, 0xCF, 0xF3, 0x9A, 0x78, + 0xCA, 0x1B, 0x9F, 0x25, 0x52, 0x3D, 0xA9, 0x35, 0x0D, 0xEA, 0x12, 0xCF, + 0x0C, 0x32, 0x53, 0x5A, 0x55, 0x4B, 0x99, 0x05, 0x80, 0x56, 0xB6, 0xE2, + 0x59, 0xC8, 0x37, 0x0F, 0x4C, 0x79, 0xEF, 0xE5, 0xE0, 0x41, 0x0A, 0x4C, + 0x1E, 0x5F, 0x85, 0x90, 0xC7, 0x66, 0x28, 0xAB, 0xD7, 0xF1, 0x91, 0x60, + 0xE7, 0x77, 0x28, 0x01, 0x7C, 0xA8, 0x2A, 0x23, 0x84, 0x76, 0x91, 0xAA, + 0x65, 0xA4, 0xFF, 0xEC, 0xA2, 0x02, 0x36, 0x9A, 0x43, 0x18, 0xAA, 0x0F, + 0x81, 0x26, 0x8F, 0x8B, 0x9C, 0x46, 0x2C, 0x53, 0x63, 0x01, 0x5C, 0x44, + 0x4B, 0xBC, 0x28, 0xEA, 0x2F, 0x4E, 0x57, 0x72, 0x35, 0xA3, 0x85, 0x4F, + 0x27, 0x22, 0xB5, 0x92, 0x5F, 0x5B, 0xD0, 0x78, 0x49, 0xAF, 0x42, 0x1F, + 0x0B, 0x19, 0x9E, 0x17, 0xB0, 0xA6, 0xFB, 0x2F, 0xD7, 0x82, 0x60, 0x11, + 0xB6, 0x63, 0x4C, 0x65, 0x44, 0xD1, 0xB4, 0x9A, 0xDA, 0x7A, 0xF8, 0x6E, + 0xA5, 0xAE, 0x55, 0x32, 0x46, 0xDD, 0xE5, 0xB8, 0xC3, 0xC6, 0xDC, 0xC4, + 0x49, 0x2C, 0x35, 0x2A, 0x2F, 0xFE, 0x85, 0xEE, 0xD0, 0xD7, 0x5E, 0xF1, + 0xD9, 0xE9, 0x23, 0xCB, 0x96, 0xAE, 0x30, 0x22, 0x54, 0x80, 0x93, 0x9A, + 0xD5, 0x7C, 0x0A, 0xF9, 0x47, 0x1F, 0x02, 0x80, 0x21, 0xFF, 0x53, 0x39, + 0xC6, 0xB7, 0x73, 0xDE, 0x4B, 0x03, 0xC8, 0xB7, 0xBF, 0x34, 0x0F, 0xCB, + 0x37, 0xD1, 0x5F, 0x53, 0x5F, 0x05, 0x62, 0x2D, 0x62, 0xC4, 0xB6, 0xED, + 0x82, 0xC3, 0x19, 0x09, 0xFD, 0xC8, 0x93, 0xAB, 0x63, 0xB2, 0xA5, 0x6B, + 0x97, 0x82, 0x37, 0x29, 0xBF, 0x97, 0x54, 0xFE, 0x9B, 0x32, 0xFD, 0x51, + 0xE9, 0x14, 0xE1, 0x74, 0x07, 0x2B, 0xFA, 0x39, 0x1C, 0x6A, 0x5B, 0xA3, + 0x5B, 0x7E, 0xB6, 0xD9, 0x66, 0x82, 0x0D, 0xF9, 0xD7, 0x9C, 0x64, 0xE8, + 0x2A, 0x73, 0x98, 0x95, 0x31, 0xCF, 0xAE, 0xBE, 0x6D, 0x57, 0x69, 0x34, + 0x4E, 0x58, 0x0A, 0xD1, 0x5A, 0x94, 0x8F, 0xFE, 0xF5, 0xD6, 0x4E, 0x73, + 0xC0, 0x96, 0x4E, 0xFD, 0x21, 0x25, 0xC4, 0xB6, 0x11, 0xFA, 0xA7, 0x41, + 0x7E, 0xB2, 0xFC, 0x42, 0x14, 0x16, 0x90, 0xC9, 0x74, 0x5D, 0x4A, 0x25, + 0x73, 0xE1, 0x63, 0x7E, 0x81, 0xF9, 0x3F, 0x8E, 0x24, 0x4C, 0x61, 0x02, + 0xD5, 0xF8, 0xB2, 0x2E, 0xF3, 0x80, 0x79, 0xBF, 0x13, 0xA0, 0x38, 0xC7, + 0x0E, 0x4E, 0x2C, 0x22, 0x46, 0x0E, 0x29, 0xEE, 0x2A, 0x8C, 0xDD, 0x86, + 0x33, 0xB7, 0xF0, 0xCC, 0x0F, 0x13, 0x7E, 0x03, 0x07, 0xB3, 0x3E, 0x97, + 0xC5, 0x6F, 0xDC, 0xFF, 0x96, 0x23, 0xCB, 0x69, 0x8B, 0x86, 0x94, 0x6D, + 0x86, 0xEF, 0x2F, 0x5C, 0x31, 0x7F, 0xF7, 0x22, 0x96, 0x61, 0x88, 0x75, + 0x3C, 0x76, 0x97, 0x12, 0x1A, 0xEF, 0x70, 0x7D, 0x6A, 0x17, 0xF5, 0xB1, + 0xB5, 0x68, 0x50, 0x91, 0xDD, 0x88, 0x0F, 0xCB, 0x33, 0x73, 0xB9, 0xBF, + 0xC6, 0x65, 0xAE, 0x15, 0x6B, 0x20, 0xCF, 0x8A, 0xDF, 0xDF, 0x5D, 0xAD, + 0xE8, 0x45, 0x69, 0x7D, 0x1C, 0x1B, 0xF2, 0xAC, 0xCD, 0x9D, 0x9F, 0xB8, + 0x6D, 0x57, 0x16, 0x92, 0xCC, 0x1A, 0xF2, 0xC2, 0x62, 0xEE, 0xE2, 0x71, + 0x2D, 0x58, 0xAB, 0xB7, 0x60, 0x4D, 0xDB, 0xEF, 0x88, 0xC2, 0x2B, 0x39, + 0x8B, 0x4C, 0x0F, 0xEF, 0xEB, 0x86, 0x16, 0x34, 0x49, 0x9E, 0x1E, 0x24, + 0xFC, 0xE9, 0x77, 0x2A, 0xD2, 0x75, 0x76, 0x96, 0x24, 0xD3, 0x33, 0x4D, + 0x8B, 0xDD, 0x92, 0xBE, 0xBF, 0xE5, 0xB0, 0x12, 0x92, 0x0C, 0x89, 0xD8, + 0x73, 0xE2, 0xA6, 0xD7, 0xF3, 0x15, 0x59, 0x76, 0x9F, 0x3B, 0x10, 0xC1, + 0xA4, 0x9B, 0x64, 0xC8, 0x4B, 0xD4, 0xEE, 0x63, 0xA7, 0xF7, 0xE9, 0xB4, + 0x43, 0x50, 0xC4, 0x7B, 0xE1, 0x7A, 0x53, 0x6D, 0xC8, 0x17, 0x82, 0x31, + 0xE4, 0x53, 0xF3, 0x20, 0xF0, 0xE9, 0x78, 0xAF, 0x8F, 0x95, 0x96, 0xA8, + 0xE9, 0x0E, 0xFE, 0x10, 0x51, 0x8E, 0xF1, 0x64, 0x89, 0x2B, 0x0B, 0xE1, + 0xCE, 0xA1, 0xA9, 0xCA, 0xF0, 0xD4, 0xD3, 0xAA, 0x49, 0xE3, 0x68, 0x76, + 0xDE, 0x20, 0x77, 0xCB, 0x92, 0x60, 0x36, 0x66, 0x82, 0x06, 0x6D, 0xDF, + 0x11, 0xF7, 0xA3, 0x07, 0x43, 0x18, 0x48, 0x89, 0x40, 0x19, 0x72, 0xAD, + 0xF5, 0x06, 0x0B, 0x61, 0x87, 0xD9, 0x48, 0x17, 0x8A, 0x0D, 0xC8, 0x6C, + 0xD9, 0xC9, 0x9D, 0xEE, 0x08, 0x16, 0x1F, 0x0D, 0x88, 0xB5, 0xEF, 0x5B, + 0x2F, 0x40, 0xAE, 0x71, 0x0F, 0x02, 0x96, 0xAF, 0x2C, 0xC8, 0x8E, 0x86, + 0x64, 0x58, 0xF1, 0x7C, 0xE9, 0x86, 0xDB, 0xCF, 0x57, 0x5E, 0xF9, 0x57, + 0x7E, 0x85, 0xAE, 0x8B, 0x6A, 0x1E, 0x9B, 0x2B, 0x0D, 0xE2, 0x07, 0xDE, + 0x42, 0x76, 0x79, 0x72, 0x25, 0xBB, 0xD6, 0xDA, 0xD8, 0x8D, 0xE4, 0x34, + 0xF6, 0xC6, 0xBB, 0x00, 0x62, 0x22, 0x4D, 0x0F, 0x90, 0xD1, 0x35, 0x20, + 0x6B, 0x3C, 0x43, 0xB2, 0xBF, 0xED, 0xCA, 0x5D, 0xC2, 0x0F, 0x5A, 0x94, + 0x87, 0xE3, 0x61, 0x94, 0x85, 0xE4, 0x24, 0x63, 0xEF, 0x8C, 0xD9, 0x7B, + 0xEE, 0x24, 0x5C, 0x51, 0x4A, 0xF1, 0x6B, 0xEB, 0xD6, 0x5A, 0x0F, 0xCE, + 0x3B, 0x29, 0xAE, 0x86, 0xAA, 0xFF, 0xEC, 0x66, 0x54, 0x45, 0xA4, 0x86, + 0xD1, 0x3F, 0x2C, 0xEF, 0xF1, 0x71, 0x33, 0x4E, 0xB8, 0x16, 0x1A, 0xB2, + 0x18, 0x6E, 0xCD, 0xBA, 0x59, 0xDB, 0x52, 0xE8, 0x49, 0x78, 0x75, 0x5C, + 0x9F, 0x97, 0xB7, 0x00, 0x57, 0x11, 0xB1, 0x9D, 0x99, 0x0C, 0xA2, 0x54, + 0xDD, 0x0A, 0x03, 0xF5, 0xAA, 0x0D, 0xBF, 0x47, 0x2D, 0xC0, 0x41, 0x3A, + 0x29, 0x0A, 0xA5, 0x8C, 0x77, 0x38, 0xA5, 0x4F, 0xE9, 0x9C, 0x7E, 0x23, + 0x7E, 0xEF, 0x8F, 0xB3, 0x45, 0x96, 0xA5, 0xDC, 0xAC, 0x1A, 0x44, 0xEE, + 0xE4, 0x1C, 0x17, 0x01, 0x7E, 0x26, 0x9D, 0xA0, 0x90, 0xD8, 0x4F, 0x5A, + 0x14, 0x99, 0x46, 0x51, 0x1F, 0x29, 0xFA, 0xE2, 0xB6, 0xEB, 0x71, 0x1A, + 0xF4, 0xE2, 0x59, 0x32, 0x18, 0x66, 0x31, 0x73, 0x58, 0x23, 0xF3, 0xDC, + 0xCB, 0x73, 0xBF, 0x04, 0xB5, 0xBD, 0xAD, 0x4D, 0x67, 0x96, 0x84, 0xFA, + 0x60, 0x48, 0x97, 0x32, 0xED, 0x55, 0xB1, 0x90, 0xD3, 0x15, 0xFA, 0xD9, + 0xE4, 0x9E, 0x65, 0x72, 0x8D, 0xC5, 0x16, 0x99, 0xC9, 0xE7, 0xF7, 0x29, + 0xAD, 0xF7, 0xDB, 0x4C, 0x0A, 0xD0, 0x40, 0xBE, 0x26, 0xF4, 0xC3, 0x89, + 0x70, 0xE1, 0x82, 0xF1, 0x95, 0xB3, 0xB8, 0x64, 0xE4, 0xBA, 0x2E, 0x4C, + 0x4A, 0x93, 0x41, 0x21, 0xF1, 0xBD, 0x2C, 0x8E, 0x15, 0xFC, 0xC2, 0x33, + 0x9E, 0x76, 0xAD, 0xCE, 0x93, 0xED, 0x4D, 0x04, 0x27, 0x71, 0xDB, 0x21, + 0x0A, 0xDE, 0x48, 0xAD, 0x43, 0x6F, 0xF7, 0x97, 0x7B, 0xBC, 0xCD, 0x5A, + 0xDE, 0x60, 0x07, 0x07, 0x2A, 0x83, 0xF4, 0x25, 0x6A, 0xD1, 0xBF, 0xB2, + 0x3B, 0xF7, 0x4E, 0x46, 0xB0, 0x34, 0xC2, 0x93, 0x45, 0xB9, 0xE6, 0x32, + 0x8E, 0x75, 0x67, 0x12, 0x06, 0x46, 0x7B, 0xB1, 0xD6, 0xEC, 0x91, 0x73, + 0x87, 0x99, 0x3E, 0x9E, 0xBB, 0xAC, 0x0C, 0x94, 0xCC, 0xBD, 0x33, 0xCF, + 0x27, 0x65, 0x70, 0x18, 0x49, 0x27, 0xD9, 0xAF, 0x17, 0x43, 0x16, 0x99, + 0xD3, 0x0A, 0xB9, 0xE9, 0xD6, 0x4A, 0xDE, 0x9C, 0x9C, 0x3F, 0xE8, 0x25, + 0xB8, 0xB9, 0xAE, 0xB6, 0x5B, 0xD5, 0x9E, 0x5E, 0x41, 0x41, 0xDE, 0xC8, + 0x8E, 0xE3, 0xEC, 0x88, 0xE8, 0xD6, 0x09, 0x16, 0xAB, 0x5C, 0x93, 0xC5, + 0xAC, 0xA8, 0x70, 0x14, 0x8B, 0x9D, 0x87, 0x27, 0xC9, 0x07, 0x83, 0x94, + 0xD3, 0xBD, 0x38, 0xF8, 0x92, 0xB9, 0xB0, 0xFB, 0xC2, 0xCF, 0x69, 0x0A, + 0x6E, 0x39, 0xB4, 0x11, 0xD7, 0x54, 0xCF, 0x2C, 0x87, 0x94, 0x7E, 0xD8, + 0x6D, 0xED, 0x54, 0xDF, 0xBA, 0xF6, 0x57, 0x2E, 0xE6, 0x5B, 0x26, 0x3E, + 0xD2, 0xA3, 0xE6, 0xB3, 0x9B, 0x75, 0xD5, 0xBD, 0x76, 0x9E, 0xE5, 0x82, + 0xA8, 0x4A, 0x2B, 0xC5, 0x45, 0x80, 0xC5, 0x55, 0x0A, 0x72, 0x78, 0x58, + 0x3E, 0x88, 0x9D, 0x7D, 0x7C, 0x23, 0xE8, 0xCD, 0x1C, 0xAF, 0x7C, 0x43, + 0xB1, 0xE0, 0x19, 0x96, 0x5C, 0xBC, 0xF7, 0x2A, 0x60, 0xF2, 0x50, 0x54, + 0xCC, 0xE7, 0xF4, 0xD7, 0x2D, 0xDF, 0x03, 0xBB, 0x77, 0xCE, 0x9C, 0xB3, + 0x9F, 0xC0, 0xBC, 0xC3, 0xBB, 0x47, 0xC6, 0xAE, 0x1A, 0x0A, 0x57, 0x52, + 0xA5, 0x75, 0xB5, 0x32, 0x62, 0x9A, 0x11, 0xD6, 0x45, 0x03, 0xFC, 0xAA, + 0x43, 0x55, 0x4D, 0xDC, 0xE8, 0x0F, 0xBC, 0x46, 0x5B, 0x57, 0x37, 0x9F, + 0xD4, 0x5E, 0xFC, 0xD4, 0x7A, 0x1B, 0x67, 0xB7, 0x2A, 0xBE, 0x6A, 0x58, + 0xF6, 0x21, 0x20, 0x29, 0x90, 0xC9, 0xB1, 0x25, 0x05, 0xF2, 0x95, 0x5F, + 0xA2, 0x3E, 0x39, 0xFC, 0xF0, 0x08, 0x61, 0xE5, 0xB2, 0x9A, 0xFB, 0xE0, + 0x9D, 0x40, 0x5D, 0xE4, 0x2D, 0x62, 0x37, 0x8E, 0x02, 0x5A, 0xA1, 0xD5, + 0x63, 0x9A, 0xE2, 0x77, 0x46, 0xC6, 0xD1, 0x10, 0xAA, 0x46, 0x1D, 0x22, + 0x46, 0x2F, 0xE9, 0x95, 0xF4, 0xD5, 0x69, 0xE6, 0x70, 0xDC, 0x09, 0x4E, + 0x0D, 0xA6, 0xD6, 0x16, 0x97, 0xD1, 0x4C, 0xD3, 0xD7, 0x0B, 0x4C, 0x97, + 0x66, 0xC0, 0x3F, 0x91, 0xB0, 0x9E, 0x2F, 0x00, 0xF1, 0x10, 0x78, 0x50, + 0x9F, 0xC6, 0x38, 0xC5, 0x46, 0xB0, 0x45, 0x53, 0x4F, 0x01, 0x7C, 0x46, + 0xB2, 0x85, 0xBE, 0x89, 0xB3, 0x99, 0x33, 0xCB, 0x84, 0x07, 0x45, 0x40, + 0x16, 0x0E, 0x2F, 0xE7, 0x5D, 0x0E, 0xFE, 0xF7, 0x68, 0xF3, 0x70, 0xED, + 0x8C, 0x82, 0x2F, 0x48, 0x65, 0xD2, 0xCD, 0x3E, 0x65, 0xC3, 0xCD, 0x7A, + 0x3D, 0xAD, 0xA0, 0xB4, 0x29, 0x57, 0x26, 0xF1, 0xFF, 0xA1, 0x92, 0x9F, + 0x64, 0xAF, 0x1D, 0xB4, 0xF1, 0xDD, 0x4F, 0xC8, 0x1C, 0x1A, 0x8A, 0x26, + 0x3D, 0xBC, 0xC8, 0x57, 0x92, 0xDB, 0xAA, 0x5D, 0x5B, 0x7F, 0x77, 0xC5, + 0x47, 0x02, 0x34, 0x25, 0x60, 0xC5, 0x7B, 0x8C, 0x84, 0x30, 0x9D, 0xF2, + 0x8A, 0x14, 0x6D, 0x55, 0x14, 0xA4, 0xA2, 0x56, 0xFC, 0x26, 0x9F, 0x1B, + 0x66, 0xCC, 0x5F, 0x69, 0xF5, 0x9B, 0x43, 0xA0, 0xFC, 0x84, 0x00, 0x1F, + 0x85, 0x6A, 0x9C, 0x23, 0x99, 0x6F, 0xF1, 0xFC, 0x8E, 0x07, 0xC4, 0x62, + 0x73, 0xEA, 0xFD, 0x7F, 0x92, 0x28, 0xE1, 0xC1, 0x51, 0x5B, 0xDC, 0x2D, + 0xB1, 0x88, 0xE5, 0x8C, 0x69, 0x18, 0xF3, 0xD7, 0xFF, 0x76, 0x35, 0x83, + 0x0A, 0x54, 0x59, 0x22, 0x31, 0x83, 0x26, 0xB8, 0x5F, 0x26, 0xA7, 0x73, + 0x50, 0xB1, 0xB7, 0x53, 0x82, 0x2C, 0x15, 0x65, 0xDF, 0xF9, 0x5E, 0x2A, + 0x9A, 0x7E, 0x19, 0xEE, 0xBE, 0xDE, 0xA8, 0xB2, 0x82, 0x58, 0x06, 0xE1, + 0xD1, 0xAB, 0xE6, 0x15, 0x7A, 0x31, 0x1B, 0x4B, 0xF6, 0xEE, 0x49, 0x25, + 0xB3, 0x68, 0xFE, 0x25, 0x6C, 0x46, 0x9B, 0x88, 0xFA, 0x4C, 0xFC, 0x90, + 0xA5, 0x6B, 0x40, 0x07, 0xDB, 0xA5, 0xE5, 0x97, 0x20, 0xD5, 0xE3, 0x0A, + 0xC9, 0xB8, 0x55, 0xDD, 0x9B, 0xBA, 0x11, 0x06, 0x4C, 0x3D, 0x34, 0x09, + 0xD1, 0xAA, 0x87, 0x5B, 0x95, 0xDD, 0xF9, 0x5D, 0x7E, 0x53, 0xE3, 0x31, + 0x46, 0xAB, 0x33, 0x12, 0x0B, 0xB8, 0xEB, 0x4C, 0x2F, 0x95, 0x0D, 0x39, + 0xD5, 0xB4, 0xED, 0x96, 0xCE, 0xC0, 0x5A, 0xA3, 0x16, 0xB8, 0x9A, 0x68, + 0xDC, 0xE9, 0x3B, 0xC6, 0x36, 0x75, 0x8C, 0x8E, 0x25, 0x97, 0xF7, 0x81, + 0xC2, 0xAC, 0x3F, 0x5E, 0x6B, 0x4C, 0x7E, 0x95, 0xAE, 0xD1, 0x50, 0x91, + 0x15, 0x67, 0x8E, 0xC8, 0xF2, 0x81, 0x8A, 0x6B, 0xBF, 0x4B, 0xC6, 0xAF, + 0xCD, 0x04, 0xCC, 0x16, 0xA2, 0x43, 0x7A, 0x78, 0x56, 0xC1, 0x7E, 0xC8, + 0xBE, 0x91, 0x9D, 0x7B, 0x9C, 0xAC, 0x7E, 0x18, 0xFA, 0xEB, 0xAD, 0x1F, + 0x28, 0xE0, 0x61, 0x81, 0xC3, 0xD3, 0x24, 0x78, 0x08, 0xE6, 0xD5, 0x91, + 0x83, 0x36, 0xA4, 0x1A, 0xB8, 0xCF, 0x93, 0x4F, 0x26, 0x6C, 0xC1, 0x7F, + 0x48, 0x93, 0xD2, 0xD6, 0xC2, 0x33, 0x5C, 0x9D, 0x3F, 0x84, 0x7C, 0xD7, + 0x8B, 0xBC, 0x9A, 0xDC, 0x46, 0x84, 0xCC, 0x72, 0xF7, 0x7C, 0xEE, 0xA8, + 0x37, 0x54, 0x77, 0xD8, 0x21, 0x44, 0xA3, 0x3A, 0xBD, 0xCF, 0x65, 0xF3, + 0xDB, 0xD0, 0x6F, 0xCA, 0x19, 0xCD, 0xAC, 0xBD, 0x66, 0x92, 0x89, 0xDF, + 0x2B, 0xFE, 0x8D, 0x28, 0xBA, 0x79, 0x5B, 0xBF, 0x66, 0x67, 0x05, 0xE9, + 0xA6, 0xFD, 0x56, 0xD6, 0x63, 0x8A, 0x23, 0x01, 0x24, 0x5A, 0x6D, 0x43, + 0xCD, 0x26, 0x13, 0x2E, 0x48, 0x46, 0x01, 0x20, 0x52, 0x5A, 0xD8, 0x34, + 0x75, 0xF5, 0x4E, 0x63, 0x56, 0x17, 0x35, 0x10, 0x29, 0x4B, 0xDD, 0x0B, + 0xA5, 0xAF, 0x95, 0x92, 0xEE, 0x11, 0x99, 0xD2, 0xEA, 0x30, 0x80, 0x16, + 0xB3, 0xF8, 0x96, 0x24, 0xED, 0x98, 0x5F, 0x4F, 0x02, 0xBB, 0x69, 0xDD, + 0x30, 0x1C, 0xBE, 0x3F, 0x1B, 0x33, 0x2A, 0xA7, 0x83, 0xD7, 0x0E, 0x3D, + 0x49, 0x58, 0xEF, 0x61, 0x0D, 0x1C, 0x6B, 0x1B, 0x41, 0xB7, 0xB3, 0x64, + 0xF9, 0xE1, 0x1F, 0xF2, 0x4B, 0xC8, 0xED, 0xC7, 0xEE, 0x3A, 0xCB, 0xCD, + 0x18, 0x40, 0x28, 0x2F, 0x1C, 0x41, 0x02, 0x31, 0x7A, 0xC3, 0x71, 0x75, + 0x21, 0x49, 0x65, 0x6D, 0x32, 0xAC, 0x06, 0x42, 0x11, 0x96, 0xB2, 0xEC, + 0xD9, 0x5D, 0xD3, 0xB4, 0xB1, 0x21, 0xFF, 0x98, 0x9F, 0xD6, 0x77, 0x70, + 0x6B, 0xA4, 0x6E, 0x45, 0x69, 0x8C, 0xDB, 0x77, 0x92, 0x80, 0xF3, 0x82, + 0x95, 0x2E, 0x73, 0xA6, 0x7E, 0xAA, 0x6F, 0xE2, 0x78, 0x82, 0x9E, 0x78, + 0x3C, 0xB7, 0x5A, 0x90, 0xA0, 0xE8, 0xB4, 0x5D, 0x7A, 0xA8, 0xCE, 0xAC, + 0xBA, 0x00, 0xEA, 0x0F, 0xDF, 0x6B, 0x75, 0x4C, 0x0D, 0x1C, 0x30, 0x7F, + 0x6E, 0xFA, 0x03, 0xDC, 0x6B, 0x48, 0xE0, 0x74, 0xD9, 0xB9, 0x67, 0x9D, + 0x0B, 0x55, 0xD3, 0xFE, 0x68, 0x79, 0xF7, 0x10, 0x7F, 0x9E, 0xE1, 0xB9, + 0x60, 0xE7, 0x54, 0x13, 0x67, 0x2C, 0x04, 0x48, 0xDF, 0xD9, 0x85, 0x2C, + 0xFF, 0x1E, 0x01, 0x61, 0x0F, 0x74, 0x2C, 0x21, 0x69, 0x3F, 0xE6, 0x7A, + 0xF3, 0xD7, 0xE6, 0xD3, 0xBF, 0x77, 0x83, 0xC8, 0xF5, 0x5D, 0xF4, 0x4D, + 0xC6, 0x0B, 0xEC, 0x46, 0x39, 0xDA, 0xBD, 0x39, 0x51, 0xB9, 0xF2, 0xC3, + 0x48, 0x41, 0xDA, 0x1E, 0x2F, 0xD8, 0xFB, 0x7F, 0x9E, 0x9C, 0x10, 0xF1, + 0xB2, 0x2A, 0x14, 0xD1, 0x3C, 0x38, 0x0F, 0x21, 0x9D, 0xAF, 0x64, 0x95, + 0x46, 0x6A, 0xD2, 0x28, 0x14, 0x16, 0xF0, 0x28, 0x43, 0xC9, 0x81, 0x1D, + 0x1E, 0xB7, 0x0D, 0x84, 0x8B, 0x30, 0xFD, 0xE3, 0xBB, 0x46, 0x5E, 0xFD, + 0xEA, 0x0A, 0x9E, 0x02, 0x3F, 0x5E, 0xE5, 0x00, 0x97, 0xFB, 0x0D, 0xEA, + 0xF8, 0x66, 0x7F, 0xB3, 0x6D, 0x2E, 0xFD, 0xC8, 0x15, 0x97, 0xE0, 0xDB, + 0x44, 0x59, 0xBC, 0x32, 0xB7, 0x70, 0x61, 0x88, 0xC9, 0x81, 0x21, 0xA4, + 0x82, 0x8D, 0x27, 0x67, 0x33, 0x31, 0xE5, 0x6B, 0x94, 0x26, 0xB9, 0xC3, + 0xB8, 0x45, 0x69, 0x5D, 0x0B, 0xD2, 0xB1, 0x3A, 0x03, 0x40, 0x8B, 0x06, + 0x79, 0x76, 0x63, 0x24, 0x61, 0xB9, 0x26, 0x64, 0x14, 0xC3, 0x9C, 0x9A, + 0xFA, 0xD9, 0xBF, 0x7B, 0x6A, 0xB3, 0x2B, 0x9C, 0x9A, 0x8D, 0x9A, 0x11, + 0x9B, 0xF7, 0x9D, 0xD2, 0xF8, 0xE4, 0x74, 0x6D, 0x5E, 0x12, 0xD9, 0xC2, + 0xE3, 0x7D, 0xDE, 0xDA, 0x57, 0xD6, 0xEF, 0x9A, 0xB1, 0x13, 0xF0, 0xC5, + 0x99, 0x5B, 0x88, 0xE2, 0x9B, 0xDF, 0x3B, 0x62, 0x9F, 0x3C, 0x10, 0x38, + 0x91, 0xFA, 0x97, 0x82, 0x44, 0x36, 0x65, 0x8C, 0xA2, 0x47, 0x9B, 0x10, + 0x12, 0x96, 0xA1, 0x4E, 0x0E, 0x57, 0x42, 0x62, 0xF4, 0xE6, 0xAF, 0x23, + 0xC0, 0xB4, 0xA0, 0x49, 0x5A, 0x33, 0xA9, 0x4D, 0xB1, 0xB0, 0x5B, 0x0C, + 0x6A, 0x67, 0x47, 0xFB, 0x03, 0x7C, 0x1F, 0x15, 0xA1, 0x72, 0x99, 0xBE, + 0x84, 0x58, 0x68, 0x36, 0x13, 0x34, 0x0C, 0x20, 0x11, 0xDB, 0x68, 0x30, + 0x9F, 0xEA, 0x05, 0x99, 0xDC, 0x30, 0xF3, 0xA7, 0xA9, 0x3C, 0x7D, 0xA8, + 0x3C, 0x0D, 0x43, 0xCB, 0xCC, 0xA5, 0x40, 0xCF, 0x0F, 0xF4, 0x34, 0x91, + 0x79, 0x36, 0xB8, 0x4D, 0x25, 0x3E, 0xF7, 0x69, 0xC7, 0x31, 0x9D, 0x45, + 0xEC, 0x3C, 0x3D, 0x99, 0x13, 0x54, 0x19, 0x3D, 0xDD, 0x2B, 0xE9, 0x6B, + 0xE0, 0xCE, 0xB7, 0xBF, 0x8F, 0x47, 0x0F, 0x1A, 0x43, 0x14, 0x4C, 0xAB, + 0xD4, 0xEE, 0xAC, 0x55, 0x0C, 0x4D, 0x7E, 0xA5, 0x40, 0xE9, 0xD0, 0x0A, + 0xC0, 0xCD, 0xB8, 0xB4, 0x31, 0x63, 0xEB, 0x78, 0xE9, 0x32, 0x19, 0xE3, + 0xFB, 0xA4, 0xCF, 0x48, 0x39, 0x92, 0xA5, 0xAA, 0xA0, 0x4E, 0xA1, 0xF3, + 0x2E, 0x1A, 0x59, 0x62, 0xA4, 0xC0, 0x7B, 0xAC, 0xCA, 0xAD, 0x52, 0xA4, + 0xB7, 0x6F, 0x4B, 0x67, 0x5E, 0x5E, 0x2A, 0xE0, 0xEC, 0x9B, 0xA7, 0xD6, + 0x65, 0xD4, 0x60, 0xF3, 0x48, 0xDF, 0x45, 0xF3, 0xFD, 0xB5, 0x0F, 0xC9, + 0xE6, 0x10, 0x78, 0x4D, 0xAD, 0x30, 0xD1, 0x07, 0xEA, 0x38, 0x6A, 0xE3, + 0x3B, 0x10, 0x99, 0x1A, 0xA6, 0xDE, 0x2D, 0x9D, 0x1D, 0xCE, 0x5D, 0x26, + 0x76, 0x25, 0x87, 0x43, 0xA1, 0xBD, 0xE9, 0xA9, 0xB8, 0xA0, 0x1E, 0x88, + 0x1A, 0x6A, 0x99, 0x79, 0x01, 0x32, 0x3A, 0x4C, 0x3B, 0xC1, 0xB5, 0x18, + 0x72, 0x32, 0x0F, 0x7B, 0x91, 0x38, 0x66, 0x8A, 0x16, 0x12, 0xAF, 0xBE, + 0x5F, 0x73, 0xA3, 0x0A, 0x1D, 0x97, 0x35, 0x87, 0x53, 0x27, 0xB6, 0x5B, + 0x43, 0x12, 0xB4, 0xEC, 0xF0, 0x2F, 0x16, 0x59, 0x6E, 0x11, 0x2C, 0x20, + 0x11, 0xAB, 0x84, 0x2B, 0x7F, 0x9C, 0x82, 0x19, 0x5D, 0xD3, 0x9A, 0x18, + 0xA2, 0xFF, 0x38, 0x7A, 0x07, 0xD3, 0xBE, 0x23, 0x5C, 0x33, 0x00, 0x99, + 0xFE, 0xE0, 0xFC, 0xC0, 0x35, 0x05, 0x89, 0xFF, 0x58, 0x93, 0x20, 0x41, + 0xDC, 0xD0, 0x27, 0x31, 0xA0, 0xD5, 0xAC, 0xBF, 0x78, 0x87, 0x23, 0x33, + 0xBF, 0x52, 0xE2, 0xDB, 0x24, 0xB8, 0x83, 0xE1, 0x26, 0x42, 0x8C, 0x1D, + 0xD4, 0xD4, 0xFC, 0xE3, 0x34, 0xF4, 0x5D, 0x98, 0x17, 0xA1, 0xC4, 0x2A, + 0x48, 0x3C, 0x4E, 0x89, 0x7D, 0x03, 0x38, 0xE3, 0x13, 0x66, 0xD4, 0x76, + 0xB2, 0x93, 0xD2, 0x9C, 0x75, 0x3F, 0xD3, 0x91, 0x34, 0xAF, 0x61, 0x55, + 0x1D, 0xE8, 0x4C, 0x2F, 0x59, 0x2A, 0x64, 0x05, 0xB9, 0x1D, 0xC1, 0x0B, + 0x1F, 0x4B, 0xFF, 0x83, 0xAB, 0xBE, 0xB7, 0xB5, 0xF2, 0x23, 0x78, 0xD1, + 0xA3, 0x81, 0x8F, 0xF2, 0x7C, 0xC6, 0xE7, 0x9F, 0x29, 0xD2, 0x81, 0xFE, + 0x50, 0x1C, 0xE7, 0xEF, 0xBF, 0x7F, 0x1C, 0x2A, 0x3F, 0x1A, 0x7C, 0x5E, + 0xF7, 0xF5, 0x1B, 0x11, 0x8D, 0xB1, 0xF3, 0xC7, 0xE3, 0x38, 0x43, 0x56, + 0x1A, 0x1E, 0x26, 0xE6, 0xD4, 0x15, 0x84, 0x03, 0x04, 0x49, 0xBD, 0xA0, + 0xC0, 0x21, 0xC8, 0x8E, 0xC9, 0x96, 0x9B, 0xFA, 0xCA, 0x98, 0xAE, 0x2F, + 0xE2, 0x9A, 0x9B, 0xEC, 0x29, 0x8F, 0xF2, 0x04, 0xEA, 0x94, 0xB9, 0x70, + 0xED, 0xB1, 0x4E, 0x2B, 0x5C, 0x65, 0x00, 0x79, 0x41, 0x53, 0x4B, 0x9D, + 0xFA, 0x90, 0x22, 0x52, 0x76, 0x51, 0xEC, 0xC2, 0x50, 0xCC, 0x6C, 0xA1, + 0x5B, 0x4A, 0xAC, 0x58, 0x8F, 0x97, 0x0D, 0xFE, 0xE5, 0x3C, 0x24, 0x34, + 0xDC, 0xF2, 0x7A, 0x81, 0xA7, 0x9D, 0x3D, 0x28, 0x87, 0xCF, 0xF3, 0xD2, + 0x51, 0x0D, 0xF1, 0x5C, 0x01, 0xD5, 0x58, 0x72, 0x33, 0xD7, 0x48, 0x4A, + 0x75, 0xF5, 0x1A, 0x10, 0xF1, 0x12, 0x76, 0x70, 0xD2, 0x0E, 0x3A, 0x9B, + 0x09, 0x23, 0x66, 0xED, 0x15, 0xB7, 0xEB, 0x5D, 0xEF, 0x66, 0xEB, 0x8F, + 0xAF, 0xD7, 0xDC, 0xF6, 0x5E, 0xA5, 0xED, 0xA8, 0x77, 0xE2, 0xC0, 0xF6, + 0x19, 0xFE, 0x38, 0xEC, 0x2D, 0xCC, 0x82, 0xC6, 0x21, 0x22, 0x69, 0x67, + 0xE4, 0x86, 0x26, 0x0E, 0xCC, 0x88, 0x55, 0x6A, 0x17, 0xC6, 0xD0, 0x5F, + 0x1C, 0x68, 0x72, 0x08, 0x2D, 0x8B, 0xB7, 0xD7, 0xAF, 0x85, 0x0C, 0xC5, + 0x9F, 0x4F, 0x6D, 0x0B, 0x34, 0xA2, 0x8D, 0x6D, 0x92, 0x31, 0x6C, 0x92, + 0x91, 0xFE, 0x3F, 0xC0, 0xA5, 0x4A, 0x58, 0xA7, 0x23, 0x06, 0xA7, 0xE3, + 0xAF, 0xC6, 0xF5, 0x4C, 0x9D, 0x2A, 0x74, 0x4D, 0xAA, 0xD3, 0xA5, 0xD9, + 0xB9, 0x4D, 0xDE, 0x2F, 0xA4, 0x69, 0x24, 0x56, 0x5F, 0xCA, 0x0F, 0x43, + 0x1E, 0x58, 0xD4, 0x70, 0xD9, 0x11, 0x53, 0xE7, 0xB6, 0x9E, 0x8F, 0x06, + 0xCA, 0xBF, 0x20, 0x59, 0xE9, 0x51, 0xAE, 0xBA, 0x68, 0x30, 0xDE, 0x5E, + 0x9C, 0x4D, 0x0A, 0xD1, 0xF7, 0xFB, 0x1E, 0xEF, 0xE3, 0x71, 0xFC, 0x9E, + 0x12, 0x96, 0xEF, 0xB7, 0xC1, 0xD5, 0x44, 0x48, 0x5E, 0x44, 0x32, 0xED, + 0x52, 0xFA, 0x18, 0xA1, 0xAE, 0x6F, 0xCD, 0xDB, 0x83, 0x38, 0x8E, 0xD0, + 0xEC, 0x8E, 0x3A, 0xEF, 0x43, 0x03, 0xF2, 0x68, 0x14, 0xE2, 0xD3, 0x7D, + 0xF8, 0x2E, 0x23, 0xBC, 0x54, 0x52, 0x60, 0xE4, 0x89, 0xED, 0x87, 0x78, + 0x21, 0x07, 0xF8, 0x24, 0x12, 0x1E, 0x99, 0x21, 0x36, 0x3F, 0x6B, 0xB1, + 0xE5, 0x62, 0x46, 0x82, 0xC9, 0x44, 0x67, 0x33, 0x3E, 0x38, 0x62, 0x02, + 0xA0, 0x48, 0x1B, 0xD7, 0xBD, 0x21, 0xAB, 0x2E, 0x62, 0x9E, 0x35, 0x8E, + 0x3E, 0xDA, 0x2D, 0xA4, 0xDC, 0x7E, 0x43, 0x57, 0x45, 0x13, 0xD4, 0x62, + 0x45, 0xAB, 0x95, 0x57, 0x4C, 0x56, 0x4C, 0xAD, 0x5F, 0xBF, 0xA0, 0x24, + 0x23, 0x53, 0x71, 0xE5, 0xA1, 0x5C, 0x6C, 0xD3, 0xFD, 0xE6, 0x43, 0xFD, + 0x28, 0x86, 0xA6, 0x63, 0xA7, 0x73, 0x35, 0xF0, 0xFD, 0xFF, 0xC7, 0x7B, + 0x16, 0x38, 0x73, 0x9C, 0xFC, 0x65, 0x50, 0x94, 0x2D, 0x57, 0xE5, 0xDD, + 0x8C, 0x3B, 0x68, 0x81, 0xEA, 0x90, 0xA5, 0x3F, 0xC2, 0x2F, 0x9C, 0xD6, + 0x9F, 0xBA, 0x01, 0xD7, 0x8E, 0xA1, 0x71, 0xE2, 0xA5, 0x2A, 0x6A, 0xA5, + 0xFA, 0xE1, 0x6F, 0x44, 0x13, 0x56, 0x16, 0x3A, 0x1A, 0xBA, 0xBE, 0x5D, + 0xA6, 0xFA, 0x73, 0xEB, 0x05, 0xE0, 0x88, 0x8A, 0xEB, 0x5A, 0x50, 0xF5, + 0xFC, 0x86, 0xA2, 0x35, 0x41, 0x03, 0x72, 0x92, 0x4A, 0x8F, 0x73, 0xF0, + 0x05, 0x2A, 0xA4, 0x8C, 0x5C, 0x46, 0xEB, 0xE9, 0xE3, 0x3C, 0x6F, 0xB2, + 0x23, 0x6B, 0xA0, 0x77, 0xED, 0xA9, 0x95, 0x5C, 0x50, 0xA3, 0x01, 0xB0, + 0x8D, 0xE9, 0x5B, 0x5C, 0x0B, 0x91, 0xF5, 0x32, 0x9D, 0x52, 0xA1, 0x45, + 0x21, 0x45, 0x4A, 0xEA, 0x42, 0x8A, 0x7A, 0x91, 0xA0, 0x34, 0x95, 0x85, + 0xEC, 0x84, 0x21, 0xEB, 0x9E, 0x6C, 0xC8, 0xE5, 0x5C, 0x5F, 0xAF, 0x0C, + 0xC8, 0x17, 0xC8, 0x87, 0x3C, 0x10, 0xD2, 0x20, 0x03, 0x08, 0xD3, 0x3E, + 0xC6, 0x70, 0x33, 0xFE, 0x9E, 0x11, 0x85, 0xDC, 0xB2, 0xD6, 0xEA, 0x83, + 0xD2, 0xE2, 0x41, 0x1E, 0x70, 0x0E, 0xED, 0xE5, 0x64, 0xBC, 0x83, 0x6F, + 0x1F, 0xEF, 0xC4, 0xFE, 0x20, 0x99, 0x87, 0xF6, 0x76, 0x76, 0x4B, 0xC2, + 0xEF, 0x9C, 0xA9, 0xED, 0x33, 0xF8, 0x6A, 0x64, 0x83, 0x76, 0xAE, 0x5D, + 0x48, 0xAA, 0x08, 0x64, 0x95, 0xB8, 0x8F, 0x33, 0xB3, 0x88, 0x07, 0x55, + 0xDB, 0x6C, 0xA5, 0x1E, 0x3B, 0xCA, 0x76, 0xDC, 0x0D, 0x85, 0x02, 0xA2, + 0xEC, 0xB5, 0x0F, 0xC4, 0x52, 0x11, 0x57, 0xF5, 0x2D, 0x8D, 0xFB, 0x3C, + 0x49, 0xC7, 0x59, 0x68, 0x3A, 0x62, 0xC9, 0x28, 0xCD, 0x81, 0x98, 0x10, + 0xB0, 0x71, 0x3B, 0x96, 0xB9, 0xC2, 0x16, 0x14, 0x88, 0xCC, 0x56, 0x1A, + 0xD2, 0x78, 0xBC, 0x53, 0x4A, 0xA8, 0x27, 0xDE, 0x8A, 0x5B, 0xEF, 0x58, + 0x97, 0x95, 0x02, 0xF3, 0x76, 0xC1, 0xA2, 0x01, 0xB8, 0xD2, 0xB8, 0xAC, + 0xC5, 0xB3, 0x36, 0x33, 0x7C, 0x1A, 0xCA, 0x06, 0x4C, 0x09, 0xBC, 0x3C, + 0x0B, 0x0A, 0xD8, 0xAC, 0x74, 0x25, 0xA4, 0x91, 0xDB, 0x13, 0xE5, 0x2B, + 0x09, 0xC7, 0x3D, 0x99, 0xFB, 0x4F, 0xFF, 0xB4, 0x9C, 0x9E, 0x89, 0xF8, + 0xD3, 0xAC, 0xCF, 0x37, 0xEA, 0x3F, 0xAC, 0x3E, 0x8F, 0x7E, 0xFD, 0x66, + 0x97, 0xF1, 0x8A, 0x94, 0xE0, 0x36, 0x2A, 0x48, 0x1C, 0xA9, 0x5B, 0x1E, + 0x4D, 0xCC, 0xB0, 0xF6, 0xA6, 0x26, 0x2E, 0x6D, 0x29, 0x6E, 0x89, 0x30, + 0x6C, 0x2B, 0xA3, 0x04, 0xD4, 0x8F, 0x8C, 0xCB, 0xA7, 0xA2, 0x05, 0x94, + 0x93, 0xE9, 0x9B, 0x03, 0x18, 0x91, 0x76, 0x25, 0x42, 0xF6, 0xC1, 0xE1, + 0xE8, 0x6B, 0x56, 0xEF, 0x61, 0xED, 0xDB, 0xF7, 0xD6, 0xD3, 0x50, 0xB1, + 0x59, 0xAE, 0x79, 0x22, 0xEB, 0xCC, 0x39, 0x3E, 0x10, 0xD7, 0x21, 0x04, + 0x7D, 0xEF, 0x96, 0x73, 0xBC, 0x6C, 0xE5, 0x0D, 0x15, 0x8A, 0x94, 0x07, + 0x14, 0x96, 0x86, 0x31, 0x68, 0xD6, 0xC0, 0xE7, 0xE5, 0xEE, 0x6C, 0x77, + 0xBD, 0x9E, 0xD9, 0x27, 0xE7, 0x68, 0x1E, 0x57, 0x1A, 0x0D, 0x01, 0xDD, + 0x3B, 0xAF, 0x85, 0x5A, 0xA3, 0x49, 0x4A, 0xCB, 0x1D, 0x2E, 0xC4, 0xFE, + 0x39, 0x50, 0x36, 0x5C, 0xF8, 0xE4, 0xC4, 0x0D, 0x6A, 0x84, 0xCC, 0xC1, + 0x5C, 0xF1, 0x72, 0x34, 0x1B, 0xAE, 0x8E, 0xFB, 0x45, 0x23, 0xBE, 0xC5, + 0x4B, 0xAE, 0xC2, 0xC9, 0x74, 0xF5, 0x83, 0x84, 0x26, 0x7A, 0xFA, 0x8D, + 0xFF, 0x34, 0x68, 0xDE, 0x39, 0xB3, 0xDB, 0x15, 0xDB, 0x13, 0xC2, 0x59, + 0xDE, 0x5F, 0x78, 0xD2, 0x04, 0x1D, 0x3A, 0x45, 0x7B, 0xCD, 0xB5, 0xC4, + 0x51, 0xCF, 0x8F, 0xAD, 0x2E, 0x61, 0x23, 0xEC, 0x66, 0x37, 0x2D, 0x4A, + 0xB3, 0xD4, 0xCA, 0x8C, 0x37, 0x3F, 0xAE, 0x15, 0x3F, 0xBE, 0xE7, 0x5E, + 0x2D, 0xAD, 0x95, 0x30, 0xFB, 0x35, 0x42, 0xC9, 0xFB, 0xF1, 0x5A, 0xD0, + 0x20, 0x3A, 0x06, 0xF5, 0x1D, 0x2D, 0xDB, 0xAC, 0x4C, 0xEB, 0x02, 0xF0, + 0x11, 0x4D, 0xC9, 0x24, 0x46, 0x5E, 0x1A, 0xAA, 0x24, 0xE8, 0x0B, 0xAC, + 0x83, 0xAD, 0x12, 0x9D, 0xD1, 0x79, 0xBC, 0xE0, 0xF7, 0x56, 0x21, 0x90, + 0x71, 0x7D, 0x6D, 0x36, 0x59, 0xC3, 0xF8, 0x4C, 0x60, 0xBF, 0x0B, 0xF4, + 0x29, 0x60, 0x65, 0xF3, 0xC7, 0x48, 0xAC, 0x8F, 0x7C, 0x5D, 0x4B, 0xF8, + 0x75, 0x5E, 0x94, 0x97, 0x1C, 0x02, 0x70, 0xED, 0xA3, 0xC4, 0x22, 0xB6, + 0x10, 0xFA, 0x74, 0x00, 0x8C, 0x73, 0x6C, 0xC7, 0xB2, 0xFA, 0x6E, 0x0F, + 0x42, 0x8B, 0xF5, 0xB7, 0xF0, 0xE9, 0x29, 0xE8, 0x48, 0xB3, 0x1C, 0xD2, + 0xAB, 0xA1, 0xA5, 0x8B, 0x1C, 0x43, 0x44, 0xEF, 0xE9, 0x95, 0xC8, 0xA6, + 0xE9, 0x48, 0x8C, 0x73, 0xFA, 0x6C, 0x9C, 0xC4, 0xAE, 0x2B, 0xB3, 0xC9, + 0x11, 0x06, 0x20, 0xA9, 0x00, 0xFB, 0x50, 0x1D, 0x73, 0x68, 0xD5, 0xC0, + 0x4D, 0x38, 0x4C, 0xAA, 0x93, 0xC0, 0x24, 0x25, 0xE0, 0x55, 0x0C, 0x6F, + 0xE8, 0xA2, 0x66, 0x3C, 0xE0, 0x5E, 0x5C, 0x2F, 0xBC, 0x27, 0x66, 0x99, + 0x0E, 0xF6, 0xFE, 0xCF, 0x14, 0x19, 0x0E, 0x9D, 0x75, 0xCF, 0xE9, 0x29, + 0xC1, 0x77, 0x26, 0xF5, 0x78, 0xA5, 0x4E, 0x7D, 0x7F, 0x3F, 0x33, 0x11, + 0x5F, 0x26, 0xCD, 0xCB, 0x5B, 0x47, 0xD4, 0x37, 0x4C, 0xBA, 0x38, 0x59, + 0x23, 0x80, 0x84, 0xEF, 0x3C, 0xCC, 0xD6, 0xA9, 0x71, 0xA3, 0xFE, 0x5B, + 0xD5, 0x3B, 0x21, 0x52, 0xC2, 0xD6, 0x1B, 0x71, 0x3B, 0x06, 0x55, 0x5C, + 0x1B, 0x77, 0xAB, 0x80, 0x0B, 0x17, 0xCB, 0x14, 0x72, 0x87, 0xFB, 0x81, + 0xD4, 0xFB, 0xB7, 0xD0, 0x84, 0x65, 0x9B, 0x6F, 0x2B, 0xD5, 0x7A, 0x12, + 0xA8, 0x2A, 0xBE, 0xA5, 0xE7, 0xE2, 0x8F, 0x05, 0x1A, 0x54, 0x10, 0xAA, + 0x72, 0x34, 0xF6, 0xE9, 0x08, 0x6B, 0xB4, 0xFC, 0x69, 0xAF, 0x26, 0x5F, + 0xC5, 0x72, 0x61, 0x96, 0x3A, 0xD6, 0xE4, 0x5B, 0xBA, 0xCB, 0x0C, 0xD1, + 0xAE, 0xF8, 0x19, 0xFA, 0xB6, 0xCF, 0x0C, 0xCC, 0xFC, 0xCD, 0x82, 0x15, + 0xAC, 0x36, 0x04, 0x80, 0x75, 0x3D, 0x8D, 0xF9, 0x36, 0x57, 0x4F, 0x7C, + 0x55, 0x60, 0xE0, 0x2F, 0xB4, 0x89, 0x9E, 0x77, 0xED, 0xCB, 0x19, 0x96, + 0xB4, 0xC0, 0x5E, 0xBE, 0x4E, 0xEF, 0xB9, 0xA7, 0xCB, 0x92, 0x68, 0x74, + 0xF0, 0x9A, 0x38, 0xE1, 0x15, 0x67, 0x64, 0xE0, 0x70, 0x08, 0x36, 0xED, + 0xC4, 0x47, 0x11, 0xD6, 0x79, 0x5E, 0x12, 0x4A, 0x50, 0xD8, 0xFE, 0x7D, + 0x09, 0x67, 0x11, 0x53, 0x2B, 0x2E, 0x6F, 0x5B, 0x91, 0xF5, 0x1A, 0xAA, + 0x0C, 0x0C, 0x50, 0x45, 0x0B, 0x94, 0x01, 0x16, 0xB7, 0x83, 0x9A, 0xF6, + 0xCC, 0x45, 0x79, 0x7C, 0xD0, 0x9C, 0xFD, 0x66, 0xB1, 0xBD, 0xCF, 0x70, + 0xBC, 0x77, 0xF4, 0xA2, 0xEE, 0x6F, 0x13, 0x28, 0x48, 0x39, 0x81, 0xCB, + 0x80, 0x52, 0xED, 0x49, 0xEE, 0x54, 0xFD, 0x59, 0x27, 0x51, 0x68, 0x8E, + 0xFA, 0x46, 0x89, 0x9A, 0xCF, 0x48, 0x45, 0x9F, 0xA5, 0x6F, 0x16, 0x6C, + 0x3C, 0x36, 0x41, 0xF7, 0x06, 0xAA, 0x3A, 0x7D, 0xFF, 0x4E, 0x37, 0xE6, + 0x7D, 0x83, 0x9F, 0xDE, 0x6E, 0xBC, 0x7C, 0x95, 0xEF, 0x93, 0x82, 0x42, + 0x43, 0xAA, 0xC2, 0x85, 0xBA, 0x7E, 0x9C, 0xB6, 0xD4, 0xE1, 0x11, 0xB2, + 0x44, 0xDC, 0xFF, 0xC7, 0x5C, 0x92, 0xCE, 0xC0, 0xBC, 0xA7, 0xB2, 0x41, + 0x75, 0x05, 0x4F, 0x00, 0xB9, 0x23, 0xF2, 0xCA, 0xE9, 0x65, 0x23, 0x24, + 0x49, 0xA4, 0x15, 0x8E, 0x10, 0xB1, 0xC1, 0x2F, 0xCA, 0xB4, 0xAF, 0x86, + 0xF7, 0x80, 0x3D, 0xF2, 0xC1, 0x5A, 0x42, 0x2F, 0xC7, 0x39, 0xFD, 0x06, + 0x74, 0xEF, 0x15, 0xEB, 0xE0, 0x24, 0x8F, 0x7B, 0xEE, 0xE0, 0xE4, 0x1D, + 0x5F, 0x2A, 0x88, 0xDC, 0x9E, 0xB5, 0xA9, 0x9F, 0xDE, 0x73, 0x2C, 0x7A, + 0xF3, 0x9B, 0x32, 0xF3, 0xF4, 0x5F, 0x3C, 0x5E, 0xBE, 0xBA, 0xA0, 0xEA, + 0xB6, 0x0B, 0x00, 0x10, 0xE5, 0xBA, 0x6C, 0x62, 0x26, 0x27, 0x62, 0x3B, + 0x48, 0x5C, 0x60, 0xEE, 0xEB, 0xFA, 0xEE, 0xB1, 0x6C, 0x0A, 0x46, 0xF3, + 0x1E, 0xED, 0xA3, 0x1B, 0xF3, 0x60, 0x02, 0xF3, 0x60, 0x6A, 0x1A, 0x8A, + 0x33, 0x70, 0x13, 0x7C, 0x5F, 0xC6, 0xEF, 0x8A, 0x15, 0xCB, 0xC1, 0x44, + 0xDD, 0xEF, 0x73, 0x9D, 0x01, 0x70, 0xAF, 0xAA, 0x60, 0x34, 0xB4, 0x2D, + 0x4B, 0xA1, 0xBB, 0x5B, 0xF2, 0x54, 0x0F, 0x10, 0xDD, 0xA4, 0xBB, 0xA4, + 0xE5, 0xC4, 0x3D, 0xAE, 0xEF, 0x70, 0xF9, 0xED, 0x9A, 0x60, 0x2E, 0x22, + 0xAB, 0xF5, 0xA8, 0x8A, 0xEA, 0x62, 0x05, 0x2A, 0x32, 0x31, 0x29, 0xDE, + 0x4C, 0x8E, 0x8C, 0x6C, 0x4B, 0x70, 0xB0, 0x9C, 0x0A, 0x95, 0x52, 0xC6, + 0x90, 0x0D, 0x2A, 0xAA, 0xAC, 0x07, 0x54, 0xCE, 0xFE, 0xF6, 0x95, 0xBB, + 0xCD, 0xF3, 0xE4, 0x69, 0xC7, 0x44, 0x75, 0x63, 0x72, 0x84, 0x0E, 0xD5, + 0x13, 0xE4, 0xFA, 0x48, 0xC1, 0x42, 0xD5, 0x5F, 0x6B, 0x88, 0x3D, 0x8E, + 0x09, 0x67, 0x42, 0x61, 0x69, 0x72, 0xEE, 0xE3, 0xDF, 0x37, 0x75, 0x30, + 0xCE, 0x9D, 0xE3, 0x0C, 0xF9, 0x16, 0x0C, 0xD2, 0x6F, 0x3C, 0x69, 0x8D, + 0x8F, 0x1D, 0x78, 0x1C, 0x8B, 0x3A, 0x6C, 0xDF, 0x28, 0x5E, 0x76, 0x79, + 0x89, 0x75, 0x82, 0xB7, 0x46, 0x97, 0xB3, 0xF2, 0x60, 0x98, 0x96, 0x5E, + 0x5C, 0x24, 0x35, 0xA7, 0x0B, 0xA7, 0xB6, 0x96, 0x80, 0xD3, 0x9C, 0x38, + 0xE2, 0xF3, 0x9B, 0x76, 0x86, 0x68, 0xC9, 0xA4, 0x08, 0x46, 0x8D, 0x1D, + 0x5C, 0xF7, 0x68, 0x62, 0xBC, 0x6B, 0x7B, 0x1C, 0xE5, 0x72, 0x94, 0x4A, + 0xAF, 0x2C, 0x74, 0x4D, 0x9A, 0x05, 0x90, 0xA6, 0xD9, 0x2C, 0xDF, 0x20, + 0x2A, 0xE9, 0x0D, 0x8B, 0xDD, 0xD9, 0x97, 0x1D, 0x30, 0x8B, 0xC0, 0x23, + 0xCD, 0x1E, 0xF4, 0x3C, 0x06, 0xA2, 0xDC, 0xE9, 0x13, 0xDA, 0xC7, 0x82, + 0xC0, 0x5F, 0x08, 0x12, 0x7C, 0xEE, 0x7A, 0x3D, 0x95, 0xE9, 0xCB, 0xA2, + 0xBC, 0xA0, 0x55, 0x18, 0x49, 0x83, 0x86, 0x62, 0xCF, 0x8F, 0xA6, 0xF1, + 0x14, 0xAA, 0x0A, 0x5A, 0xE1, 0x96, 0xF7, 0x13, 0x0C, 0xC1, 0x09, 0xFD, + 0xBF, 0x84, 0xEE, 0x6D, 0x0A, 0x34, 0x73, 0x88, 0xD8, 0x54, 0x61, 0x9A, + 0x1F, 0x2B, 0x34, 0x36, 0x44, 0x34, 0x41, 0x7F, 0x09, 0x8F, 0x08, 0x08, + 0x40, 0xA1, 0x70, 0x24, 0x30, 0x23, 0x02, 0x2D, 0x76, 0x39, 0xC0, 0xCA, + 0xF1, 0xAC, 0xA2, 0xFA, 0x09, 0x07, 0xE0, 0x5D, 0xE2, 0x44, 0x0C, 0x2C, + 0xAB, 0x77, 0x4C, 0xE7, 0x7E, 0xFA, 0xAB, 0xF3, 0x43, 0xAF, 0x6F, 0x5D, + 0xC1, 0xE3, 0x81, 0x28, 0x9A, 0x47, 0xD4, 0xE5, 0x4B, 0x04, 0x0A, 0x47, + 0xFD, 0xF6, 0x31, 0x6D, 0x54, 0xAD, 0x3B, 0x19, 0xF7, 0x28, 0x1D, 0x42, + 0x7C, 0x3A, 0x4C, 0xCC, 0xB3, 0x66, 0xE2, 0x9F, 0x8C, 0x18, 0x0F, 0x77, + 0xC4, 0xA3, 0xF4, 0x22, 0x75, 0x83, 0x65, 0xFB, 0x4F, 0x02, 0x71, 0xE6, + 0x4A, 0x2D, 0x2F, 0xE2, 0x46, 0xB4, 0x0C, 0x39, 0x29, 0xAB, 0xC7, 0x3E, + 0x38, 0xC3, 0x0B, 0xA5, 0xE8, 0xB5, 0xE6, 0x0E, 0xEC, 0x77, 0x7C, 0xD0, + 0xBF, 0x2F, 0xB1, 0x27, 0x4F, 0x56, 0x73, 0xCA, 0x70, 0xA5, 0x35, 0x71, + 0x4A, 0x42, 0xA5, 0x37, 0x0A, 0xA7, 0xAD, 0x27, 0x18, 0x02, 0x8C, 0x4B, + 0x3A, 0xB1, 0x6D, 0x17, 0xC1, 0x81, 0x76, 0x70, 0x8D, 0xAC, 0xAD, 0x4A, + 0xDD, 0x3D, 0x27, 0x18, 0x66, 0x63, 0x3A, 0x0D, 0xFC, 0xA2, 0x9F, 0xC5, + 0x2E, 0x29, 0xD9, 0xA5, 0x0C, 0x4C, 0xA3, 0x6F, 0xA9, 0x3F, 0xFF, 0xB5, + 0x83, 0x6B, 0x00, 0x93, 0x57, 0x39, 0x26, 0x6D, 0x40, 0x81, 0x89, 0x4A, + 0xAE, 0x55, 0x06, 0x58, 0x75, 0x6F, 0x49, 0xC2, 0xFF, 0xA0, 0x92, 0x7B, + 0xB6, 0x60, 0x80, 0x72, 0x52, 0xE5, 0x8D, 0x33, 0xC0, 0xB6, 0x3F, 0xF2, + 0x2A, 0x81, 0x11, 0x8F, 0xF5, 0xA2, 0x98, 0x84, 0x59, 0x7C, 0xA8, 0xD5, + 0x9C, 0xDE, 0x69, 0x4C, 0x67, 0xD9, 0xFB, 0xBC, 0x68, 0x29, 0x92, 0x25, + 0x7D, 0xFD, 0x01, 0x8D, 0x60, 0xBC, 0xAE, 0x34, 0x00, 0x77, 0x06, 0x99, + 0xD2, 0x9B, 0xFD, 0x69, 0xD5, 0x56, 0x00, 0xB0, 0x76, 0x71, 0x38, 0xCE, + 0xBE, 0xAE, 0xA2, 0xA4, 0x8C, 0xA4, 0xE6, 0x78, 0x9E, 0x96, 0x2F, 0x92, + 0xF3, 0x13, 0x22, 0x50, 0xE9, 0x0F, 0xB2, 0x0F, 0x31, 0x4E, 0xC7, 0x2E, + 0xF0, 0x70, 0x21, 0x33, 0x41, 0xCA, 0xFA, 0xF0, 0x4D, 0xF8, 0xCD, 0x1E, + 0x41, 0x42, 0xED, 0xAA, 0xA0, 0x49, 0x30, 0x2D, 0xBA, 0x1E, 0x11, 0x09, + 0x14, 0x0E, 0x39, 0x32, 0x32, 0x22, 0x48, 0x93, 0xCF, 0x1A, 0xF8, 0xC1, + 0x91, 0x6A, 0x0B, 0xCC, 0x76, 0x98, 0xD1, 0x2B, 0x9A, 0x40, 0xBF, 0x12, + 0xD6, 0xFF, 0x20, 0x7E, 0x54, 0xB8, 0x4E, 0x65, 0xEB, 0xB3, 0x46, 0xD1, + 0x44, 0x6A, 0x80, 0x19, 0x72, 0xFD, 0x39, 0x11, 0xD7, 0x7A, 0x7C, 0x03, + 0x7D, 0x76, 0xE0, 0xB2, 0x30, 0x02, 0xAA, 0xEC, 0x29, 0xA7, 0x90, 0x08, + 0xC8, 0x16, 0x12, 0xA0, 0x30, 0x2C, 0xA1, 0x4E, 0xC1, 0x7C, 0x5F, 0xB7, + 0x5A, 0x17, 0xF7, 0xA7, 0xFC, 0xFA, 0xCB, 0x5D, 0xC2, 0xDC, 0x2C, 0x86, + 0xF7, 0xCD, 0x2A, 0x0A, 0xA7, 0x22, 0x47, 0x48, 0xC2, 0x75, 0x1E, 0x24, + 0xC6, 0x26, 0x98, 0x84, 0x15, 0xAD, 0xB9, 0xBA, 0xC9, 0xAF, 0x7D, 0xA2, + 0x5D, 0xDD, 0x8E, 0xE0, 0xEE, 0xEF, 0x74, 0xCE, 0x3F, 0xBC, 0xFC, 0xA0, + 0x26, 0x09, 0x15, 0x30, 0xEC, 0x3B, 0xBB, 0x0A, 0xC4, 0x43, 0x9F, 0x27, + 0x90, 0x1F, 0xCC, 0x2D, 0x8B, 0x7F, 0xDA, 0x51, 0xCB, 0xF7, 0x27, 0xAC, + 0xE5, 0xD7, 0x7D, 0xAA, 0xB0, 0xD9, 0x7C, 0xBF, 0x17, 0xD0, 0x42, 0x57, + 0xC0, 0xF9, 0xE3, 0xF0, 0x0E, 0x7B, 0x5F, 0xE4, 0x4B, 0xA0, 0xC1, 0xEE, + 0xF1, 0xF2, 0xEB, 0x33, 0xDA, 0x25, 0xFB, 0x08, 0xAE, 0x6F, 0x4B, 0xFB, + 0x5E, 0x98, 0x91, 0xD7, 0x91, 0x9A, 0x62, 0x76, 0xC6, 0x51, 0xAA, 0x64, + 0x6A, 0xF2, 0xCD, 0xAD, 0x24, 0x42, 0x87, 0x05, 0xD3, 0x39, 0xE1, 0xC5, + 0xA8, 0x30, 0x79, 0xD8, 0xC0, 0x03, 0x42, 0x84, 0x5A, 0x75, 0xB4, 0x8C, + 0x0D, 0xE3, 0xB4, 0xCB, 0x00, 0xFD, 0x51, 0xDC, 0xE1, 0xA8, 0xDE, 0xE7, + 0x33, 0x6D, 0x74, 0x62, 0x2A, 0xAE, 0x99, 0x79, 0x9E, 0xFC, 0x0E, 0x19, + 0x35, 0xDD, 0xA1, 0x75, 0xE4, 0x2B, 0x0C, 0xC5, 0x37, 0xCB, 0x70, 0x3E, + 0x00, 0x0B, 0x28, 0x37, 0x03, 0x23, 0x4D, 0xF0, 0x85, 0xFB, 0xF5, 0x3B, + 0x8D, 0xC1, 0xB9, 0xB2, 0x7D, 0x15, 0x4C, 0xC0, 0x86, 0x78, 0x74, 0x01, + 0xDB, 0xB0, 0xC3, 0x01, 0x25, 0x4D, 0x56, 0x70, 0x60, 0x66, 0xCC, 0xC0, + 0x1A, 0xD7, 0x77, 0x90, 0x42, 0xDE, 0xE1, 0x09, 0xA9, 0x14, 0xB8, 0xB9, + 0x78, 0xAF, 0x64, 0x1F, 0x50, 0x02, 0xF9, 0xAF, 0x2C, 0x43, 0x9A, 0xF3, + 0xD9, 0x00, 0x56, 0x81, 0xC9, 0xC6, 0xC8, 0xAF, 0x1D, 0x49, 0x5A, 0xC5, + 0xFB, 0x80, 0xF6, 0x3E, 0xD1, 0x03, 0x5B, 0x8B, 0xF4, 0xFA, 0x8B, 0x81, + 0xB8, 0x87, 0xD3, 0xEE, 0x40, 0x17, 0xB0, 0x39, 0xE5, 0x20, 0xF4, 0x96, + 0xEE, 0x8E, 0xA3, 0x71, 0xCE, 0x05, 0xD4, 0x3C, 0x71, 0x46, 0x91, 0xEA, + 0x89, 0xC5, 0x9F, 0xD3, 0x07, 0x77, 0x1E, 0x1C, 0x4B, 0x28, 0xA1, 0xA4, + 0x5F, 0xE3, 0xC3, 0x9A, 0xF5, 0x2A, 0xF8, 0xC3, 0x68, 0x4C, 0x76, 0x7B, + 0x8B, 0x62, 0x49, 0x8C, 0x7C, 0x31, 0x9D, 0x41, 0x07, 0x29, 0xE9, 0xD9, + 0xF1, 0x58, 0x6F, 0x20, 0x31, 0x06, 0x45, 0xEA, 0xAB, 0x5E, 0x94, 0x21, + 0xEC, 0xB2, 0xC0, 0xA9, 0xD3, 0x23, 0x54, 0x09, 0x32, 0x95, 0xF7, 0x50, + 0x41, 0x13, 0x7E, 0x9D, 0x7C, 0xEB, 0xB8, 0x49, 0x87, 0xD2, 0xF9, 0x55, + 0xDC, 0xE5, 0x57, 0x5E, 0x45, 0x3C, 0xA0, 0xE7, 0xF2, 0x70, 0x2B, 0x7A, + 0x08, 0x38, 0x1D, 0xCC, 0x34, 0x55, 0xF3, 0x79, 0x99, 0xD8, 0x3A, 0x6C, + 0xEA, 0xFD, 0x18, 0xE6, 0xA8, 0x8C, 0x22, 0xE6, 0x24, 0x02, 0xC6, 0x71, + 0xFE, 0x09, 0x01, 0x63, 0xD9, 0x13, 0xD6, 0x82, 0xE7, 0x86, 0x9C, 0x08, + 0xDC, 0xC5, 0x2A, 0x83, 0x13, 0x3A, 0x03, 0x52, 0x25, 0x71, 0x8B, 0x9E, + 0xB5, 0xCC, 0x08, 0x05, 0x98, 0xBC, 0xFF, 0xF0, 0xB8, 0x22, 0xF1, 0x87, + 0x6B, 0xE7, 0x0A, 0xB0, 0xF1, 0x77, 0xAC, 0x70, 0xA5, 0x34, 0x22, 0x46, + 0xD0, 0x53, 0xB5, 0xE8, 0x77, 0x04, 0x9D, 0x90, 0x8D, 0xE8, 0x57, 0x47, + 0x5D, 0xE7, 0x91, 0x41, 0xA5, 0x2B, 0xD2, 0xF0, 0xBE, 0x7B, 0xFE, 0x03, + 0xF4, 0x81, 0x73, 0x2F, 0xA4, 0x39, 0x21, 0x3D, 0x24, 0x35, 0xAE, 0xCE, + 0xE3, 0x9C, 0x36, 0x5B, 0x45, 0xC4, 0xA0, 0xD4, 0x46, 0x02, 0x38, 0xF7, + 0x9E, 0xC3, 0x11, 0x01, 0x31, 0xB8, 0xAC, 0xE8, 0xFC, 0xDB, 0xC5, 0xB4, + 0xC4, 0xD5, 0x2A, 0xFB, 0x0D, 0xF7, 0x29, 0xB5, 0xCC, 0xE7, 0xD1, 0xF5, + 0x1F, 0x53, 0xDF, 0xD7, 0x7D, 0x71, 0xED, 0x0C, 0xB4, 0xDA, 0xFE, 0xA5, + 0x28, 0x5D, 0x5A, 0x4D, 0x54, 0x9D, 0x04, 0x40, 0x92, 0xBD, 0xC4, 0xD7, + 0x38, 0x4B, 0xBC, 0xF5, 0x1F, 0x58, 0xAE, 0xD8, 0x0D, 0xA6, 0x92, 0xE8, + 0xEF, 0x43, 0xEF, 0xDF, 0x0F, 0xCD, 0x22, 0xFA, 0x61, 0x24, 0x77, 0x6A, + 0x60, 0x8D, 0x42, 0xFA, 0x8A, 0x0D, 0x6C, 0x47, 0xDB, 0xC2, 0x57, 0x9F, + 0x12, 0x0E, 0x32, 0xD4, 0x12, 0xD7, 0x05, 0x1F, 0xDF, 0x7A, 0xEC, 0xE2, + 0x79, 0xEB, 0xC4, 0x8B, 0xC4, 0x71, 0x47, 0xB8, 0xE2, 0xA6, 0xF7, 0x55, + 0x7D, 0x6D, 0xC7, 0x93, 0xDB, 0x11, 0xED, 0x70, 0xDE, 0xCD, 0xD9, 0x87, + 0x14, 0xDA, 0x69, 0x00, 0x63, 0xFF, 0x5E, 0x0F, 0x9A, 0x38, 0xE7, 0xA2, + 0x2F, 0xA6, 0x38, 0x0E, 0xA8, 0x88, 0x38, 0xD4, 0xF5, 0xF3, 0x26, 0x27, + 0x33, 0x2A, 0xF0, 0xA1, 0xC8, 0x01, 0x7E, 0xF3, 0xB1, 0xEB, 0x59, 0xCE, + 0x3F, 0xE0, 0xC4, 0x86, 0x25, 0xDD, 0xCA, 0x55, 0x58, 0x4F, 0x4B, 0x4F, + 0x5D, 0x8A, 0x01, 0xAB, 0x82, 0x3E, 0x48, 0x9F, 0x14, 0x4B, 0x9E, 0x05, + 0x6C, 0x3E, 0xEE, 0xF6, 0x84, 0x59, 0x76, 0x56, 0x69, 0x10, 0x6B, 0x4B, + 0x79, 0xB6, 0x90, 0x0F, 0x2E, 0x04, 0x45, 0x5C, 0x5A, 0x35, 0x7C, 0x4A, + 0x8D, 0xEA, 0xC3, 0xA8, 0x35, 0xD2, 0xCD, 0x0B, 0xE1, 0x37, 0xF3, 0x83, + 0xCB, 0x65, 0x8B, 0x65, 0x73, 0xEC, 0xA9, 0x80, 0x11, 0xA2, 0xA5, 0x97, + 0x83, 0xC2, 0x0D, 0xF0, 0x23, 0x27, 0x6C, 0xA7, 0xFE, 0xD3, 0x01, 0x1A, + 0x1A, 0x60, 0x1C, 0x82, 0x09, 0xE6, 0xB7, 0x7E, 0xE3, 0xE5, 0x9E, 0xF3, + 0xEC, 0x7F, 0x76, 0x23, 0xCD, 0xF5, 0xCD, 0xA7, 0x21, 0xD5, 0xCF, 0x7C, + 0x56, 0x56, 0x1E, 0xF2, 0x25, 0x36, 0x81, 0x81, 0xE8, 0x33, 0x39, 0xFC, + 0x93, 0xE7, 0xC8, 0x4A, 0x39, 0xB5, 0x1C, 0x86, 0x13, 0xC9, 0xD2, 0xAA, + 0xC6, 0x31, 0x46, 0xDE, 0xEF, 0x35, 0x26, 0x5A, 0x09, 0x42, 0x0F, 0x24, + 0xA5, 0x6A, 0x82, 0x84, 0x17, 0x95, 0x35, 0x7C, 0xB7, 0x99, 0x60, 0x6E, + 0x54, 0xE1, 0x43, 0xDC, 0xDD, 0x2A, 0x17, 0x06, 0xB9, 0xF2, 0x34, 0xAE, + 0xDB, 0xE9, 0xF3, 0xAB, 0x6C, 0xAA, 0x1A, 0x5E, 0x65, 0xCF, 0x45, 0x3B, + 0xB2, 0x6C, 0x47, 0xE5, 0x26, 0x7B, 0x43, 0xD0, 0x58, 0x0A, 0x74, 0xE3, + 0xEC, 0xDD, 0x7C, 0xB8, 0x3B, 0xE6, 0xCC, 0x72, 0xD3, 0x35, 0x63, 0xB5, + 0x26, 0x7A, 0xBE, 0x71, 0x21, 0x82, 0x75, 0x35, 0x20, 0x11, 0x7F, 0x1D, + 0xFE, 0xD4, 0x19, 0xD0, 0xB7, 0xC1, 0xF3, 0xF4, 0xE6, 0x9A, 0xE0, 0x7D, + 0x02, 0x60, 0xF0, 0xC8, 0x41, 0xC9, 0x36, 0x14, 0xDE, 0xF5, 0x03, 0x91, + 0xE6, 0xFE, 0xAD, 0x1F, 0x50, 0xA7, 0x95, 0xFB, 0x09, 0x26, 0x21, 0x23, + 0xA4, 0xF8, 0x84, 0xD2, 0xAB, 0x02, 0x88, 0x62, 0xDD, 0xB9, 0x7A, 0x57, + 0xF0, 0x57, 0x92, 0x6E, 0xA5, 0xDD, 0x6D, 0xCF, 0xEF, 0x30, 0x0B, 0xC3, + 0xD3, 0xE1, 0xDF, 0xB4, 0x39, 0x35, 0x73, 0x19, 0xED, 0xAE, 0x1A, 0x8A, + 0x0D, 0xC8, 0x31, 0x94, 0x3C, 0xB5, 0xEF, 0x2C, 0x67, 0xBA, 0xFD, 0x34, + 0x13, 0x95, 0x5B, 0x00, 0x0B, 0xDF, 0x23, 0xBC, 0x7D, 0xDE, 0x1C, 0x30, + 0x72, 0x81, 0x9C, 0x34, 0xB7, 0x60, 0x0E, 0x4C, 0x96, 0x64, 0x5C, 0x93, + 0x61, 0x53, 0x12, 0x20, 0xD3, 0xA2, 0xBB, 0x9F, 0x1F, 0x26, 0x7F, 0xD5, + 0xD7, 0xDE, 0x4C, 0x20, 0x8F, 0x1D, 0x43, 0xAB, 0x2C, 0x7F, 0x50, 0xED, + 0x9C, 0x7C, 0x2B, 0x44, 0x2C, 0x22, 0xBF, 0xD6, 0x56, 0xB2, 0x56, 0xE4, + 0x74, 0x8A, 0x78, 0x5F, 0x21, 0xB9, 0xD2, 0xDB, 0x9D, 0x7D, 0x42, 0x54, + 0x92, 0x8F, 0x55, 0x9E, 0x85, 0xE8, 0x28, 0x92, 0xF0, 0x27, 0x77, 0xCF, + 0xFD, 0xE0, 0xB6, 0x2F, 0xBD, 0xC6, 0x4B, 0x8E, 0x3E, 0x90, 0xBB, 0x52, + 0xED, 0xF6, 0xAA, 0x22, 0x6F, 0x50, 0xDF, 0xFC, 0x65, 0x7B, 0x0D, 0xE9, + 0x27, 0x03, 0x7E, 0x4A, 0x38, 0xDD, 0x0E, 0x7A, 0x27, 0x66, 0x65, 0xDF, + 0xD4, 0xDC, 0x62, 0x41, 0x4F, 0xBE, 0x74, 0xBB, 0xCE, 0x45, 0x98, 0xBC, + 0x78, 0xC4, 0x58, 0xCB, 0x8B, 0xD7, 0x6E, 0xDE, 0x47, 0xE7, 0x62, 0xE5, + 0xE4, 0x83, 0xC4, 0x88, 0x07, 0xE8, 0x59, 0xA8, 0x45, 0x66, 0xE7, 0x2E, + 0xC0, 0xC6, 0x34, 0x56, 0x9B, 0x6E, 0xC8, 0x7A, 0x79, 0xE1, 0x67, 0x1A, + 0x02, 0x00, 0xC9, 0x0D, 0x4F, 0xFE, 0x10, 0x39, 0x18, 0x01, 0xF4, 0xB9, + 0x07, 0x10, 0x72, 0xC7, 0xCF, 0x39, 0xE4, 0xFE, 0x7C, 0x90, 0x2E, 0x29, + 0x27, 0x7E, 0x6A, 0x64, 0x8E, 0xC6, 0x52, 0x49, 0x00, 0x15, 0x54, 0xFB, + 0x17, 0x73, 0x19, 0x22, 0x24, 0x47, 0x9C, 0x90, 0xA3, 0xC2, 0x16, 0xAC, + 0x33, 0x93, 0x1B, 0x3F, 0x3D, 0x7C, 0xC2, 0xB1, 0x73, 0xC4, 0xD4, 0xB5, + 0xB3, 0xE0, 0x3D, 0x10, 0x8C, 0x1C, 0x93, 0xE0, 0xAC, 0x24, 0xB0, 0xBE, + 0x45, 0xF3, 0xE6, 0x44, 0xD8, 0xEB, 0x82, 0x6D, 0x13, 0x73, 0x71, 0x2A, + 0x56, 0xD6, 0x7C, 0x25, 0xFB, 0xD6, 0xC2, 0xE9, 0xB0, 0x8A, 0xE9, 0xEB, + 0x1D, 0xA5, 0x6F, 0x19, 0xDD, 0x66, 0x6C, 0x24, 0xCF, 0x44, 0x06, 0x12, + 0xF3, 0xC0, 0xAE, 0x21, 0x8B, 0xA1, 0xDF, 0x04, 0xC2, 0x1B, 0xF1, 0xA7, + 0x3C, 0xF3, 0x68, 0xB9, 0xB2, 0xAF, 0x8C, 0x24, 0xBF, 0x75, 0x72, 0x60, + 0x18, 0x06, 0x1C, 0x3F, 0x26, 0x4D, 0x3B, 0x1B, 0xFD, 0x76, 0xC6, 0x91, + 0xB0, 0xB6, 0xD2, 0x5F, 0x67, 0xFA, 0x7D, 0xFF, 0xEC, 0xC7, 0x93, 0x7A, + 0x15, 0x4F, 0xE1, 0x1C, 0x46, 0x71, 0x1E, 0x96, 0xBE, 0xAD, 0x2F, 0x31, + 0x28, 0x71, 0xCB, 0x04, 0x21, 0xFA, 0x47, 0xB4, 0x4D, 0x8B, 0xEC, 0xD0, + 0x78, 0xA1, 0x2B, 0x1B, 0x39, 0xDB, 0x41, 0x27, 0x14, 0x28, 0xE2, 0xA8, + 0xFE, 0xAC, 0x68, 0x47, 0xFD, 0x7B, 0x4F, 0xE0, 0xA2, 0xC8, 0x7E, 0x83, + 0x86, 0xBD, 0x73, 0x03, 0x18, 0x37, 0xDB, 0x46, 0x1F, 0x6B, 0x17, 0x19, + 0x11, 0x0C, 0xA2, 0x14, 0x8B, 0x75, 0xB8, 0xB9, 0xEB, 0xC9, 0xD6, 0x0E, + 0x8D, 0x78, 0x62, 0xEB, 0x51, 0x9F, 0xE7, 0xAE, 0x96, 0x83, 0x50, 0x75, + 0x36, 0xF6, 0x7F, 0x30, 0x9B, 0x52, 0x57, 0x5B, 0x4D, 0xBC, 0x95, 0x70, + 0xCA, 0x2C, 0x8E, 0x3F, 0x59, 0xE0, 0x1C, 0x21, 0x3F, 0x81, 0x07, 0x5B, + 0x0D, 0xEB, 0x35, 0xA3, 0x04, 0x10, 0x48, 0xE8, 0x1D, 0x82, 0xEB, 0x3C, + 0x5A, 0xCF, 0xA7, 0x96, 0x6C, 0x04, 0x80, 0x38, 0x94, 0x8A, 0x5A, 0x20, + 0xDD, 0xE0, 0x84, 0x23, 0xEB, 0x88, 0x31, 0x1E, 0x75, 0xD5, 0x1B, 0x35, + 0xE0, 0xE6, 0x79, 0xDF, 0x97, 0xCF, 0x5D, 0x9A, 0xDA, 0x22, 0x55, 0xD3, + 0x37, 0xDC, 0x09, 0x4D, 0xE4, 0x06, 0x00, 0x4F, 0xA1, 0xD3, 0x8D, 0xFA, + 0xDF, 0x99, 0x67, 0x10, 0x46, 0x61, 0x1D, 0x54, 0x73, 0x7D, 0x5F, 0xF6, + 0x5C, 0x38, 0x67, 0xB4, 0x31, 0x59, 0xFF, 0xD2, 0x09, 0x28, 0x2F, 0x7C, + 0x2A, 0x95, 0xA2, 0x10, 0x55, 0xED, 0xE3, 0xBA, 0x9D, 0x8F, 0x34, 0xB8, + 0xC0, 0xC8, 0x25, 0x4D, 0xF2, 0x1C, 0x50, 0x2A, 0x60, 0xF7, 0x0D, 0x1D, + 0x29, 0xD3, 0x26, 0xF9, 0x88, 0xDD, 0xA2, 0x62, 0x1E, 0x9E, 0x84, 0xC3, + 0xB9, 0x5A, 0xAD, 0x5F, 0xA9, 0xAA, 0xC9, 0x00, 0xDA, 0xCD, 0x89, 0xB5, + 0x33, 0xEB, 0x3B, 0x02, 0xBC, 0x86, 0xD5, 0x46, 0x95, 0x43, 0xC7, 0xD7, + 0x5E, 0x19, 0x99, 0xD7, 0xB5, 0x5F, 0x9D, 0x60, 0x11, 0x84, 0xA0, 0xDB, + 0x24, 0x13, 0xBD, 0x88, 0xAC, 0xBE, 0x04, 0x0E, 0x43, 0xF0, 0x6F, 0x2D, + 0x28, 0xBF, 0x23, 0xA0, 0x27, 0xF4, 0xDF, 0xA5, 0xAD, 0x51, 0x77, 0xE3, + 0x17, 0x8A, 0x4C, 0x74, 0x32, 0x70, 0x91, 0x39, 0xB2, 0xE6, 0xA8, 0x55, + 0x87, 0xF5, 0xDD, 0x6D, 0xA6, 0x7B, 0x53, 0x1F, 0xFF, 0xFD, 0xB2, 0x97, + 0x59, 0x8E, 0x5F, 0xB3, 0x54, 0xDB, 0xF7, 0x5C, 0x57, 0x4E, 0xDD, 0xF6, + 0x36, 0x23, 0xBF, 0xBE, 0xB9, 0xD0, 0x2C, 0x9E, 0xDA, 0x4B, 0x33, 0x38, + 0x5A, 0x25, 0xED, 0xFE, 0x00, 0x08, 0xE5, 0x64, 0xC3, 0x95, 0x00, 0xAA, + 0x96, 0xD3, 0xA9, 0x39, 0xB8, 0xE4, 0x47, 0x72, 0x6C, 0xEB, 0x1A, 0x93, + 0x37, 0x9E, 0xD6, 0x1E, 0x5C, 0x6D, 0xDB, 0x74, 0x42, 0x16, 0x95, 0x44, + 0x7E, 0x3B, 0xAE, 0xBC, 0x02, 0x15, 0x93, 0xB9, 0x07, 0xBF, 0xFD, 0x4B, + 0xD2, 0x94, 0xF2, 0x35, 0xFD, 0xA1, 0x44, 0x37, 0x74, 0xFB, 0x45, 0x46, + 0x83, 0x39, 0x1D, 0xA8, 0xE9, 0xE8, 0x9C, 0x67, 0x55, 0xEC, 0x2C, 0x59, + 0xF8, 0x3E, 0x6A, 0x54, 0x75, 0x23, 0x1F, 0x90, 0xCE, 0x6A, 0xAA, 0x5C, + 0x80, 0x93, 0x6E, 0x6D, 0x2C, 0xC3, 0x5A, 0xF2, 0xA2, 0x93, 0x97, 0xAA, + 0x7F, 0xAA, 0x76, 0x0B, 0x59, 0x6D, 0x39, 0x38, 0x32, 0x00, 0xA1, 0xF5, + 0x39, 0x94, 0x60, 0x9D, 0xD3, 0xE6, 0xF8, 0xF8, 0x14, 0xC4, 0x6D, 0x47, + 0x21, 0x66, 0x43, 0xE4, 0xCB, 0x07, 0x0D, 0xBD, 0xD9, 0x55, 0xDD, 0x03, + 0x75, 0x90, 0x91, 0x38, 0x3F, 0x32, 0xE6, 0x73, 0x34, 0xC9, 0xC0, 0x87, + 0x3A, 0xC5, 0x62, 0x25, 0x1D, 0x74, 0xB8, 0x0D, 0xA5, 0xED, 0xAF, 0x20, + 0xC1, 0x0D, 0xA6, 0x2C, 0x78, 0xC2, 0x46, 0xEA, 0x05, 0xDE, 0x06, 0x47, + 0x8D, 0xE2, 0x42, 0x1B, 0x4F, 0x44, 0xEE, 0x83, 0x1A, 0xD7, 0x66, 0x49, + 0xBE, 0xD0, 0x8C, 0x58, 0x73, 0xF1, 0x9F, 0x97, 0x74, 0x11, 0xA6, 0x4A, + 0x07, 0xDA, 0xA5, 0x75, 0x3D, 0x4A, 0x0F, 0x0D, 0x06, 0x56, 0xB2, 0x5F, + 0x5A, 0x8E, 0x2A, 0x1C, 0x38, 0x72, 0xBF, 0xC4, 0xD1, 0x06, 0x55, 0xB2, + 0x73, 0xC0, 0x9D, 0x5F, 0x2F, 0x9B, 0x07, 0x17, 0xA7, 0x44, 0xA0, 0x0A, + 0x0E, 0xE4, 0x72, 0xB7, 0x70, 0x2E, 0x1E, 0x82, 0x76, 0x63, 0xB5, 0xC1, + 0x8F, 0x03, 0x6C, 0xEE, 0x80, 0x3C, 0x86, 0xE1, 0x8E, 0x56, 0xD7, 0x14, + 0x37, 0x77, 0x93, 0x9C, 0xB6, 0xE0, 0xFC, 0x49, 0x64, 0x56, 0x77, 0xAE, + 0x4E, 0xB0, 0x28, 0xBA, 0x5B, 0x49, 0x5A, 0xB8, 0x83, 0xD8, 0x6B, 0xE5, + 0x41, 0x7A, 0x65, 0x8C, 0xC1, 0x71, 0xDD, 0x97, 0x01, 0xA8, 0x9A, 0xAD, + 0xC8, 0x43, 0xAB, 0xA6, 0xDC, 0x71, 0xD7, 0x9A, 0xCB, 0x99, 0x5F, 0xCA, + 0x4D, 0x75, 0xC7, 0xE4, 0x20, 0x0A, 0x12, 0xE5, 0x45, 0x64, 0x19, 0x7E, + 0x32, 0x50, 0x67, 0x22, 0x5C, 0x88, 0xA4, 0xAB, 0x30, 0x97, 0x42, 0xF7, + 0xE6, 0x17, 0x35, 0xD5, 0xFE, 0xF3, 0x51, 0xD3, 0x6F, 0x2A, 0xB6, 0x01, + 0x9B, 0x80, 0x4F, 0x86, 0x1F, 0xA7, 0x2B, 0xF5, 0x84, 0xD9, 0xBB, 0x0E, + 0xE6, 0x2A, 0x05, 0x22, 0xBE, 0xFF, 0x21, 0xCD, 0xFD, 0xCD, 0x85, 0x62, + 0xAC, 0xC3, 0xC1, 0x99, 0xDD, 0x8F, 0xDB, 0xCD, 0xDC, 0xD5, 0xA7, 0x08, + 0x75, 0x9B, 0x3F, 0x44, 0xB9, 0x91, 0xE9, 0xF0, 0x56, 0x59, 0x33, 0x9F, + 0xC3, 0xBD, 0x08, 0x04, 0x17, 0x93, 0x3C, 0x41, 0x66, 0x14, 0x20, 0x44, + 0x01, 0x46, 0xEB, 0x05, 0x10, 0xBF, 0x6A, 0xAF, 0x4E, 0x44, 0x8C, 0xE1, + 0xBB, 0xB9, 0x86, 0x64, 0x64, 0xB4, 0xDE, 0x7C, 0x17, 0x92, 0xD3, 0x9B, + 0x98, 0x23, 0xAA, 0x8C, 0x15, 0xE8, 0xBC, 0xEC, 0xDA, 0x58, 0x3D, 0x8F, + 0x53, 0x66, 0x66, 0xA1, 0x87, 0xD1, 0x75, 0x56, 0xFD, 0x9F, 0x6C, 0x72, + 0x65, 0xDF, 0x2D, 0x48, 0x58, 0x44, 0xD4, 0x6D, 0xD4, 0x47, 0xFD, 0x4C, + 0xF1, 0xBA, 0x76, 0x55, 0xD5, 0x35, 0x76, 0x97, 0x1D, 0x25, 0x8B, 0x20, + 0xEA, 0x70, 0x6B, 0x7B, 0x8A, 0x44, 0xA0, 0xC6, 0x04, 0x14, 0xD1, 0x91, + 0x50, 0x5E, 0x8E, 0xDC, 0xBC, 0xF9, 0xEA, 0xC2, 0xF7, 0x08, 0x0B, 0x20, + 0x46, 0x8F, 0x44, 0x2F, 0xD8, 0xAF, 0x16, 0xD8, 0x9A, 0xEA, 0x7A, 0x93, + 0x22, 0xAB, 0x3D, 0x6B, 0x82, 0x81, 0x3D, 0xE8, 0x3B, 0x33, 0xA4, 0x2E, + 0x6D, 0x4B, 0x24, 0xFD, 0x00, 0x9C, 0xA6, 0x6F, 0x84, 0xC0, 0xE8, 0xDE, + 0x66, 0x8C, 0xDF, 0x10, 0xE0, 0x13, 0xF1, 0x6C, 0xC6, 0x2E, 0x29, 0xD9, + 0xB3, 0x77, 0xB4, 0x5E, 0xFB, 0xE9, 0x10, 0x89, 0xC5, 0x23, 0x36, 0x1C, + 0x59, 0xD8, 0xE4, 0x78, 0x45, 0x00, 0xCB, 0xC8, 0x31, 0xE1, 0x5A, 0x78, + 0x6E, 0x05, 0x56, 0x82, 0xF0, 0x66, 0x4A, 0x40, 0xA4, 0x49, 0xA8, 0x3A, + 0xF0, 0x32, 0x55, 0xAD, 0x21, 0xE8, 0x56, 0xDB, 0x4C, 0xB5, 0xD4, 0x45, + 0x89, 0x57, 0x53, 0xFC, 0x65, 0x23, 0xA7, 0xF0, 0x78, 0x61, 0xC6, 0x4A, + 0x32, 0x1F, 0x95, 0xAE, 0x69, 0x46, 0x28, 0xBF, 0xB4, 0x88, 0xD7, 0x18, + 0xF6, 0xD3, 0xBE, 0xD4, 0x00, 0x8C, 0x44, 0x17, 0xDC, 0xA1, 0x65, 0x06, + 0xF4, 0xE4, 0x9D, 0x51, 0x40, 0x49, 0x30, 0xD1, 0x5A, 0x09, 0xE6, 0xBD, + 0x2A, 0x16, 0x47, 0xDD, 0x14, 0x68, 0xF4, 0xED, 0xEB, 0xD5, 0xF2, 0xF5, + 0xF3, 0x1C, 0xEC, 0xCF, 0x89, 0x10, 0x9C, 0xDF, 0x26, 0x4C, 0xD7, 0x50, + 0xE6, 0x0F, 0x8B, 0x64, 0x86, 0x36, 0x05, 0x35, 0x6C, 0xED, 0x80, 0x9E, + 0x68, 0x1E, 0x44, 0x1D, 0xF7, 0x4C, 0xD9, 0xC2, 0xEB, 0x81, 0x6A, 0xB3, + 0xA0, 0xE4, 0xFC, 0x06, 0x84, 0x5B, 0xFE, 0x8A, 0x82, 0xE4, 0xD0, 0x20, + 0x11, 0x78, 0x0F, 0xD5, 0xDC, 0x4B, 0x6F, 0xCA, 0xCE, 0x2B, 0xB4, 0x0A, + 0x67, 0x1A, 0x19, 0x19, 0xA0, 0x06, 0x5C, 0x56, 0xC1, 0x45, 0xA7, 0x3E, + 0xDC, 0xD2, 0x41, 0x59, 0x75, 0x59, 0x7E, 0xCB, 0xB7, 0x0B, 0x9C, 0x44, + 0xA8, 0x81, 0x6C, 0xF7, 0x89, 0x49, 0x67, 0x11, 0xCF, 0xB8, 0x0D, 0x44, + 0x87, 0x97, 0x97, 0xDC, 0x44, 0xF8, 0x37, 0x93, 0xE4, 0x14, 0xAC, 0xF7, + 0xB1, 0x64, 0xA4, 0x2C, 0xDF, 0xC5, 0x04, 0xB1, 0x99, 0x9B, 0x6F, 0x85, + 0x7F, 0x77, 0x11, 0xF6, 0x70, 0x6A, 0xF6, 0xE4, 0x54, 0xE7, 0xEC, 0xBC, + 0x29, 0xE8, 0x11, 0x0A, 0x24, 0x8F, 0xB6, 0xC7, 0xE8, 0x76, 0x65, 0x54, + 0x05, 0x54, 0x80, 0x46, 0x4D, 0xA9, 0x8A, 0xF8, 0x6E, 0x46, 0x01, 0x7B, + 0xD6, 0x42, 0x74, 0x54, 0x43, 0xE9, 0xC7, 0xE5, 0x1E, 0xAB, 0x28, 0x66, + 0xF7, 0x0A, 0xF0, 0x86, 0x71, 0x7B, 0x05, 0x50, 0xDF, 0xAB, 0x7D, 0x19, + 0x04, 0x5D, 0x48, 0x31, 0xD2, 0xE1, 0x75, 0x3C, 0xFF, 0xDB, 0x4A, 0xC1, + 0xAA, 0x63, 0xEE, 0x2C, 0xF9, 0x79, 0x11, 0x1E, 0x09, 0xCF, 0x86, 0x86, + 0x0B, 0x4E, 0xD1, 0x94, 0x13, 0x3F, 0x29, 0xE5, 0x81, 0xA8, 0x12, 0x41, + 0xF3, 0xF3, 0x83, 0x2B, 0x2F, 0xF4, 0x18, 0x10, 0x43, 0x16, 0x95, 0xD7, + 0xF8, 0x3E, 0x32, 0x9E, 0x2E, 0x93, 0x08, 0xE3, 0x80, 0xD0, 0x52, 0xDD, + 0x68, 0x71, 0x82, 0x2A, 0x16, 0x02, 0xBF, 0xE1, 0x45, 0x93, 0x2A, 0x98, + 0x49, 0x87, 0x2A, 0x3C, 0xDF, 0xA0, 0xCD, 0x4C, 0x64, 0x8A, 0xAE, 0xBC, + 0x39, 0x71, 0xF8, 0xBA, 0xE6, 0xAB, 0x21, 0x60, 0x34, 0x74, 0x54, 0x99, + 0xCD, 0x9F, 0x94, 0xB6, 0xE7, 0x62, 0x3A, 0xB7, 0x4D, 0xCB, 0x27, 0xE4, + 0xC8, 0x92, 0xF5, 0x45, 0x6E, 0x32, 0x91, 0x15, 0x8C, 0x4E, 0x10, 0x76, + 0x1A, 0x93, 0x2C, 0x4E, 0xBD, 0xDA, 0x27, 0x3F, 0x99, 0xAA, 0xB7, 0x3D, + 0xF0, 0xFB, 0x34, 0xB2, 0xD2, 0x7A, 0x23, 0xBA, 0xCF, 0xF4, 0xDE, 0xDB, + 0xCC, 0x8C, 0xB1, 0x2D, 0x4A, 0xD6, 0xCA, 0xC0, 0xD8, 0x70, 0x58, 0xBC, + 0x9E, 0x22, 0x92, 0xAB, 0xD8, 0xFB, 0xE7, 0xBC, 0xEB, 0x81, 0xB3, 0x77, + 0x70, 0x31, 0x86, 0xE1, 0x79, 0xD8, 0x52, 0xD0, 0x6D, 0x39, 0x14, 0x78, + 0x73, 0x52, 0x96, 0xE5, 0xBC, 0x2E, 0x42, 0x90, 0x43, 0x2D, 0x81, 0x31, + 0x01, 0xE1, 0xA4, 0x59, 0x83, 0x6E, 0xB5, 0x02, 0x8F, 0x53, 0xD0, 0x04, + 0x82, 0x0B, 0x60, 0xF0, 0xC6, 0x5F, 0xE4, 0x07, 0x6C, 0x8E, 0xF3, 0xC9, + 0x15, 0x15, 0x38, 0xB6, 0x1A, 0x17, 0x0A, 0x52, 0xEF, 0xEF, 0xDC, 0x03, + 0x4E, 0x62, 0x5E, 0xF6, 0x7E, 0xAD, 0xCA, 0x52, 0xA6, 0xBC, 0x21, 0xC9, + 0x0A, 0x15, 0xAB, 0xA6, 0xDF, 0x6C, 0xB1, 0xF9, 0xC6, 0xF3, 0x53, 0x3B, + 0xA9, 0x87, 0x06, 0x62, 0x18, 0xBA, 0x06, 0x23, 0xC8, 0xA8, 0x72, 0xC7, + 0x89, 0x1E, 0x1D, 0xEC, 0x5E, 0x46, 0xB9, 0xBE, 0x38, 0x04, 0x0B, 0x29, + 0x69, 0x60, 0x97, 0x2E, 0x6F, 0x6A, 0x7F, 0x7A, 0xDD, 0x9C, 0x4A, 0x60, + 0x2D, 0x19, 0x16, 0x1A, 0xD6, 0x25, 0xAB, 0x17, 0x44, 0x5E, 0x51, 0x5B, + 0xC3, 0x4D, 0x36, 0xC0, 0xEE, 0xA3, 0x8B, 0x10, 0x78, 0x4D, 0xC3, 0x00, + 0xB5, 0x07, 0x19, 0xA4, 0xC0, 0x3C, 0x99, 0x4B, 0x70, 0x48, 0xBB, 0x53, + 0xFB, 0x21, 0x4D, 0x9B, 0x2B, 0x4C, 0x75, 0x6D, 0x0B, 0x86, 0x49, 0x27, + 0x76, 0x61, 0x1D, 0xBB, 0x8C, 0x9F, 0xCB, 0x3B, 0xF6, 0x2F, 0x63, 0x64, + 0x65, 0x2C, 0x38, 0x9E, 0xE7, 0x12, 0x85, 0xA7, 0x29, 0x48, 0xE9, 0xC6, + 0xDB, 0x2D, 0xA6, 0x54, 0x5A, 0xD5, 0xE0, 0xB6, 0x77, 0xA1, 0x78, 0x84, + 0x52, 0xD7, 0xC1, 0x5B, 0x9D, 0x0D, 0x8A, 0x70, 0x3E, 0x72, 0x6A, 0x5D, + 0x63, 0x0D, 0xEF, 0x97, 0x68, 0x78, 0x1F, 0x35, 0xDA, 0x98, 0x6E, 0x25, + 0x05, 0xCC, 0xF3, 0xC0, 0x1E, 0x4F, 0xD2, 0x29, 0xE4, 0x26, 0xC2, 0x32, + 0xE6, 0xA0, 0x65, 0xFE, 0x3E, 0xDB, 0x71, 0xAB, 0x85, 0x79, 0xAB, 0xC9, + 0x8D, 0xD1, 0x8A, 0xF2, 0xA2, 0x62, 0xE7, 0x4F, 0xC5, 0xCD, 0x09, 0x94, + 0xFD, 0xF0, 0x0E, 0xA2, 0x3D, 0x98, 0x8E, 0x65, 0x35, 0x5F, 0xC8, 0xD5, + 0xCC, 0xE2, 0xED, 0x3B, 0x50, 0xB5, 0x52, 0x57, 0xB1, 0x04, 0xA1, 0x6E, + 0x48, 0x58, 0xE5, 0x61, 0x75, 0x8D, 0xD2, 0x34, 0x21, 0x62, 0xC3, 0xD2, + 0x0C, 0x51, 0xF1, 0x2B, 0xD4, 0xF7, 0xA7, 0x04, 0xE7, 0x22, 0x7B, 0xC0, + 0xF0, 0x14, 0xFF, 0x3F, 0xAD, 0x46, 0xED, 0xF3, 0xC1, 0xC6, 0x4D, 0xE7, + 0x95, 0x86, 0x60, 0xE3, 0x6E, 0x01, 0xE8, 0x96, 0xEF, 0x85, 0xF3, 0xC0, + 0x8C, 0xF1, 0x7D, 0x70, 0x4E, 0x69, 0x5C, 0x06, 0xD0, 0xF9, 0x71, 0x0D, + 0x9C, 0x6F, 0x5F, 0xC9, 0xFC, 0x27, 0x32, 0x13, 0x0A, 0xA2, 0x79, 0x31, + 0x91, 0x19, 0xFE, 0x50, 0xA5, 0x49, 0xC5, 0x39, 0x9E, 0x7C, 0xD6, 0x89, + 0xF9, 0x85, 0x1D, 0x08, 0x1A, 0xD1, 0xF1, 0xA5, 0x9C, 0x35, 0xE9, 0x24, + 0x12, 0xDC, 0x15, 0x89, 0x30, 0xB9, 0x99, 0xEF, 0x54, 0x79, 0xCC, 0x68, + 0x78, 0xFE, 0x77, 0xDE, 0x51, 0xAD, 0x89, 0x7A, 0x4C, 0x31, 0x29, 0x1D, + 0x70, 0x45, 0x80, 0xC6, 0x7D, 0xA4, 0xFD, 0xE4, 0x86, 0xA0, 0xA2, 0x4A, + 0x31, 0x17, 0xA9, 0xD0, 0x08, 0xCC, 0xF9, 0xEF, 0x3C, 0x71, 0x1A, 0xEE, + 0xFA, 0x94, 0x83, 0x1D, 0x2B, 0xEF, 0x19, 0x00, 0xD0, 0x43, 0xB8, 0x10, + 0x35, 0x63, 0x06, 0x9D, 0xA8, 0xFC, 0xF9, 0xC3, 0x07, 0x39, 0x48, 0x0E, + 0x86, 0x95, 0x80, 0xD2, 0x9E, 0xB0, 0x9E, 0x89, 0x96, 0x2D, 0x58, 0x5D, + 0xD6, 0x88, 0x77, 0xEB, 0x64, 0xC0, 0xA2, 0xB6, 0xCD, 0x96, 0x7D, 0xE2, + 0xC8, 0x21, 0x93, 0x65, 0x51, 0xF1, 0x17, 0xAE, 0xB7, 0xF8, 0xBF, 0x90, + 0x54, 0x40, 0xE0, 0x9C, 0xD0, 0xDE, 0xD7, 0xFC, 0x18, 0x55, 0x6B, 0x58, + 0x0C, 0x17, 0xC7, 0xA3, 0x06, 0x93, 0x9B, 0x2F, 0x68, 0x7E, 0x7D, 0x0F, + 0x0C, 0xC8, 0x6F, 0xC5, 0xDB, 0x37, 0xA1, 0x46, 0xE4, 0xDA, 0x1E, 0x66, + 0x06, 0xF3, 0x24, 0xB0, 0x05, 0xA2, 0x16, 0x76, 0x2D, 0xA4, 0xA2, 0x27, + 0x18, 0x56, 0x63, 0x92, 0xD8, 0xED, 0x9D, 0xA7, 0x3A, 0xC0, 0xA8, 0xFE, + 0x24, 0x0F, 0x06, 0xC4, 0x05, 0x74, 0xA5, 0x31, 0xA0, 0x42, 0xFC, 0x59, + 0xD0, 0xC3, 0x79, 0x6E, 0x1D, 0x6E, 0x35, 0xFC, 0xBB, 0x58, 0x20, 0x0D, + 0x5B, 0xA6, 0xAF, 0xBD, 0x07, 0x81, 0xBC, 0xBE, 0x52, 0x37, 0x20, 0x4C, + 0x0D, 0x6A, 0x28, 0xE6, 0x12, 0x3D, 0x0B, 0x84, 0xE1, 0xBE, 0x4F, 0x93, + 0x56, 0x5A, 0xCB, 0x82, 0x23, 0x8C, 0xF1, 0xF9, 0xB1, 0xEB, 0xAC, 0x5C, + 0x88, 0xB4, 0xC0, 0xF8, 0x6A, 0x78, 0x40, 0x13, 0x43, 0xA3, 0xB9, 0xE3, + 0x65, 0xE8, 0xAA, 0x0A, 0xC3, 0xCB, 0x19, 0x9A, 0x7B, 0x76, 0xBA, 0x2A, + 0xBF, 0x48, 0xAF, 0xFA, 0x9A, 0xFD, 0x69, 0x46, 0x27, 0x7F, 0x34, 0xF8, + 0x9F, 0x89, 0x87, 0xB8, 0x5E, 0x34, 0xCE, 0x40, 0x9E, 0xE7, 0x0E, 0xC1, + 0x29, 0x27, 0x5F, 0xD4, 0xEB, 0x5F, 0x3A, 0xD3, 0x20, 0xD7, 0xCC, 0x4B, + 0x04, 0x22, 0xD5, 0x48, 0x3B, 0x87, 0x7E, 0x80, 0x31, 0xD0, 0xCF, 0xEB, + 0x9E, 0xAB, 0xAE, 0xF0, 0x98, 0x5B, 0x50, 0xC3, 0xED, 0x5A, 0xF9, 0xF8, + 0xC6, 0xA2, 0xF9, 0x6E, 0x32, 0x22, 0x46, 0x74, 0x01, 0x55, 0xE2, 0x40, + 0xA2, 0x0D, 0x15, 0xEA, 0x4B, 0x67, 0x9A, 0x61, 0x5E, 0x10, 0x40, 0x43, + 0xE8, 0xDF, 0x81, 0xB3, 0x4C, 0x0C, 0x27, 0x1F, 0x04, 0x74, 0x5F, 0x49, + 0x3E, 0x81, 0x6F, 0x52, 0xC8, 0x4A, 0xD7, 0x0F, 0xD8, 0xCB, 0x6F, 0x0B, + 0x76, 0xBE, 0xB2, 0x64, 0xE0, 0x02, 0x08, 0xC6, 0x9E, 0x17, 0xDC, 0x37, + 0x76, 0xD4, 0x94, 0xE4, 0xAC, 0xA0, 0x7A, 0x06, 0x4A, 0x48, 0x30, 0x16, + 0x54, 0x5B, 0xB8, 0x03, 0x4D, 0x83, 0x67, 0x56, 0x2F, 0x37, 0xFD, 0xC7, + 0xC3, 0x60, 0xCC, 0xF9, 0x9D, 0x71, 0x9F, 0x0F, 0xE4, 0xDE, 0x4F, 0xE1, + 0xE0, 0x4A, 0xF5, 0xEB, 0xB1, 0x19, 0x92, 0xDF, 0x20, 0x9D, 0x7E, 0x99, + 0x0A, 0x06, 0xB6, 0x90, 0x25, 0x3A, 0x6E, 0x21, 0x10, 0x8F, 0x71, 0xAF, + 0x7B, 0x26, 0xB3, 0x48, 0x85, 0x1E, 0x37, 0x14, 0x16, 0x6C, 0x71, 0x2A, + 0xED, 0x0A, 0x73, 0xFB, 0x9B, 0x8B, 0x30, 0xC6, 0x6B, 0xE5, 0xCD, 0x29, + 0x4B, 0xE3, 0x16, 0xC7, 0x8B, 0x97, 0x24, 0xE6, 0xD6, 0x5D, 0x4C, 0x66, + 0xAE, 0xE6, 0x28, 0xC3, 0x79, 0x93, 0xE5, 0x38, 0xE9, 0x83, 0x9C, 0x3B, + 0xAC, 0x90, 0x8F, 0x7C, 0x73, 0x4E, 0xA7, 0xC9, 0x56, 0x39, 0x75, 0x20, + 0xE1, 0x94, 0x4A, 0x34, 0x99, 0xF1, 0x6D, 0x47, 0xD5, 0x51, 0x24, 0x0A, + 0xD3, 0x3B, 0xB6, 0x4F, 0x87, 0xD2, 0x8C, 0x3E, 0xAE, 0xCD, 0xC0, 0xBA, + 0xCA, 0x51, 0xAC, 0x56, 0xBD, 0xB5, 0xAA, 0xAC, 0xA4, 0xB0, 0xC5, 0x7E, + 0xD8, 0x7B, 0x50, 0xC2, 0x8B, 0x0F, 0xCE, 0x14, 0xEB, 0xB6, 0x0C, 0x0A, + 0x0F, 0x2D, 0xE0, 0xFF, 0x8D, 0x3C, 0xCE, 0x0E, 0x98, 0xF3, 0x97, 0x44, + 0x28, 0xE8, 0x6C, 0x0B, 0x90, 0x7F, 0xAB, 0xD1, 0xB6, 0xA2, 0xDE, 0x7F, + 0x49, 0x30, 0x52, 0x45, 0x90, 0x8F, 0xB2, 0x3E, 0x50, 0x3E, 0x24, 0x72, + 0x11, 0xB8, 0xB6, 0x20, 0x69, 0xC1, 0x85, 0x54, 0xD4, 0x33, 0x46, 0xEC, + 0x99, 0xDD, 0x21, 0xB9, 0x37, 0x2A, 0x81, 0xD0, 0xC2, 0xC8, 0x19, 0xEC, + 0x95, 0x7B, 0x5E, 0xC5, 0xBC, 0x08, 0x53, 0x36, 0xD9, 0xE1, 0x51, 0x50, + 0xD3, 0x7B, 0xB2, 0xDA, 0xF9, 0x33, 0x92, 0xBF, 0x17, 0x28, 0xF4, 0x1C, + 0x5E, 0x35, 0x4C, 0x74, 0xD4, 0x82, 0xFA, 0xBA, 0xBE, 0x89, 0x81, 0x44, + 0x10, 0xBE, 0x9D, 0x2E, 0xBA, 0x40, 0xF0, 0x83, 0xE3, 0x42, 0xF4, 0x5F, + 0x4D, 0x2A, 0xFD, 0xC5, 0x5D, 0xF1, 0xCE, 0x83, 0x20, 0xD6, 0xEF, 0xBF, + 0xB1, 0xBB, 0xC4, 0xC7, 0x53, 0x69, 0x10, 0x80, 0x65, 0x73, 0xBF, 0xCE, + 0x0A, 0x41, 0x03, 0xEF, 0x4A, 0xB4, 0xA7, 0x23, 0x7D, 0x6C, 0xE8, 0x5F, + 0x2F, 0x44, 0x96, 0xD9, 0xD3, 0x10, 0xA5, 0xF7, 0xAA, 0x5C, 0x18, 0xA0, + 0x31, 0x00, 0xB9, 0xB2, 0xD9, 0x12, 0x1C, 0x4B, 0x22, 0x66, 0xCF, 0xED, + 0xB8, 0xC3, 0xF7, 0xE6, 0x1A, 0xF5, 0xCE, 0xA4, 0xEB, 0xED, 0x69, 0xE8, + 0x38, 0xA0, 0x9F, 0x47, 0x3E, 0x4C, 0x51, 0xDC, 0xFB, 0x4B, 0x34, 0xBC, + 0xFA, 0xD4, 0x52, 0xFC, 0x11, 0x6F, 0xBA, 0x3E, 0x06, 0x82, 0x4B, 0x06, + 0x8F, 0x8A, 0x66, 0x2C, 0xAE, 0x9B, 0x5F, 0x1D, 0x74, 0x46, 0xBF, 0x9B, + 0xB3, 0x94, 0x7A, 0xE2, 0xEE, 0x68, 0xB4, 0x91, 0x37, 0x44, 0x8A, 0xF6, + 0x2C, 0xC5, 0x99, 0x7E, 0x68, 0x3A, 0xED, 0x2E, 0x05, 0x0B, 0xBF, 0xCB, + 0x99, 0x31, 0xBC, 0xBD, 0x96, 0x26, 0x2F, 0x11, 0xA3, 0xEC, 0x67, 0x3D, + 0xBF, 0x08, 0x02, 0xAB, 0x12, 0x43, 0x39, 0x60, 0xCE, 0xCF, 0x35, 0xE8, + 0x88, 0xC6, 0x57, 0xA4, 0x7A, 0x35, 0x80, 0x48, 0x3C, 0x6C, 0xC9, 0x9B, + 0xDA, 0xE5, 0xB3, 0x48, 0x51, 0x92, 0x7B, 0x8B, 0x45, 0xFB, 0x5F, 0x88, + 0xDB, 0x95, 0x73, 0xC2, 0x43, 0xD2, 0x92, 0xA3, 0x34, 0x0F, 0xCB, 0x83, + 0x90, 0x78, 0xE6, 0x7A, 0x45, 0x9C, 0xEA, 0xD5, 0x03, 0xCC, 0xEB, 0xB3, + 0x74, 0xE2, 0x0E, 0x9A, 0xB5, 0xFB, 0xF2, 0x48, 0x5C, 0x3E, 0xB1, 0x67, + 0x0C, 0xB8, 0x6C, 0x36, 0x08, 0x84, 0xC6, 0x4C, 0x82, 0x98, 0xE4, 0xD8, + 0x1D, 0x58, 0x15, 0xAC, 0xC4, 0x41, 0xF7, 0x9D, 0x08, 0x64, 0x4A, 0xE9, + 0x74, 0x7E, 0x3B, 0x91, 0xC1, 0xE3, 0x9A, 0x0E, 0x81, 0x5C, 0xD1, 0x5C, + 0x7A, 0x95, 0x02, 0xD4, 0x28, 0x30, 0xD4, 0xE0, 0xAE, 0xB8, 0xF1, 0x7B, + 0xCF, 0xAC, 0x50, 0x90, 0xEF, 0x8F, 0x18, 0xD1, 0x9A, 0x19, 0x6F, 0x41, + 0x65, 0xCB, 0x28, 0xBD, 0x9C, 0xB6, 0x27, 0x65, 0x8B, 0xB5, 0xB8, 0x08, + 0xC7, 0x41, 0xBC, 0xF2, 0x63, 0x6D, 0x9C, 0xD7, 0x69, 0x03, 0xBF, 0xB0, + 0x7B, 0x04, 0xCC, 0xFD, 0x74, 0xA0, 0xBD, 0x81, 0x08, 0x86, 0x4F, 0x42, + 0x25, 0xD2, 0x4A, 0x66, 0x49, 0x3E, 0xD0, 0x7A, 0x3D, 0x54, 0xCB, 0x50, + 0x94, 0xF3, 0x7F, 0x3A, 0xF2, 0x91, 0xE6, 0x5E, 0x11, 0xC6, 0xA4, 0x76, + 0x97, 0xC3, 0x6C, 0x21, 0x0E, 0xB6, 0xBA, 0x10, 0x4A, 0xE3, 0xDC, 0xDC, + 0x43, 0x3B, 0xF0, 0x0B, 0x47, 0x65, 0xB9, 0xD7, 0x0B, 0x32, 0xFD, 0xF5, + 0x51, 0x03, 0xEA, 0x8C, 0x01, 0x65, 0xC4, 0x6B, 0x25, 0xF1, 0xC2, 0x3A, + 0x09, 0x65, 0x1D, 0x58, 0xDE, 0xF4, 0x2B, 0xC7, 0x67, 0x30, 0x04, 0x08, + 0x0A, 0x7A, 0x3A, 0x4B, 0xE4, 0xE7, 0xE8, 0xBE, 0xFF, 0x05, 0x42, 0xFC, + 0xE0, 0x1F, 0xAE, 0xA8, 0x75, 0xBA, 0xE9, 0xDC, 0x8C, 0xBD, 0x30, 0xB8, + 0x1D, 0x04, 0x57, 0xD3, 0x93, 0x1A, 0x43, 0x93, 0xFE, 0x5D, 0x6A, 0x28, + 0xBE, 0xE0, 0x39, 0xB2, 0xCC, 0xF0, 0x7D, 0x06, 0x4C, 0x95, 0xFC, 0x62, + 0xC7, 0x05, 0xEB, 0x16, 0x88, 0x2B, 0x0E, 0x96, 0xF1, 0xC7, 0x43, 0xC2, + 0xB7, 0xE9, 0x2F, 0xEC, 0xA0, 0x5C, 0x9A, 0xD7, 0x26, 0x64, 0x69, 0xDB, + 0x13, 0x25, 0xD8, 0x43, 0xE0, 0x5B, 0x0B, 0xA1, 0xE4, 0xB0, 0xF2, 0x4E, + 0x6A, 0x9C, 0xF4, 0x7B, 0x9E, 0xE3, 0xB7, 0xD4, 0xC6, 0x10, 0xF2, 0x37, + 0x45, 0x8A, 0x6B, 0x97, 0x28, 0x2E, 0x0E, 0xA0, 0x93, 0x13, 0xF7, 0x0B, + 0x8A, 0xB9, 0x9F, 0xC0, 0xE4, 0x4A, 0xED, 0xE1, 0x79, 0x32, 0x31, 0x97, + 0x2B, 0xB7, 0x09, 0xB5, 0xB9, 0xE3, 0x57, 0x56, 0x5F, 0x81, 0x28, 0x85, + 0xAA, 0xF8, 0x69, 0x77, 0x40, 0x74, 0xD6, 0x4B, 0x7A, 0xAC, 0xD5, 0x2D, + 0x74, 0xB4, 0x67, 0x89, 0xE1, 0xF1, 0xD9, 0x1F, 0xB8, 0xDC, 0xDF, 0x0D, + 0x8D, 0xA6, 0xA7, 0x8D, 0xF1, 0x59, 0x30, 0xD6, 0x00, 0x26, 0xD1, 0x21, + 0x2E, 0xE7, 0xB7, 0x91, 0x2E, 0xA9, 0xF6, 0xD0, 0x5A, 0xB6, 0x8A, 0x34, + 0x59, 0x92, 0x9E, 0x37, 0x1E, 0xD9, 0x38, 0x2A, 0xAE, 0x12, 0xD4, 0x95, + 0x8B, 0xE8, 0xA7, 0x5D, 0x8C, 0x92, 0xA1, 0x8A, 0x4D, 0x9E, 0x64, 0x20, + 0xA2, 0x7E, 0xCC, 0x39, 0x50, 0xA4, 0x01, 0xEC, 0xA7, 0xF5, 0x6D, 0x88, + 0x8E, 0xB6, 0xCE, 0xA4, 0x58, 0xAA, 0xFB, 0xCA, 0xC5, 0x67, 0x26, 0x07, + 0xBB, 0xEC, 0xFB, 0x73, 0x5D, 0x48, 0x9B, 0x49, 0xFE, 0x99, 0x25, 0x6D, + 0x82, 0x1F, 0x6E, 0x6E, 0x1E, 0x21, 0xBF, 0x94, 0x52, 0xB7, 0xAC, 0x8E, + 0x74, 0x22, 0x10, 0x27, 0x14, 0x6F, 0xDC, 0x80, 0xBD, 0xB3, 0xD6, 0xAD, + 0x1F, 0x17, 0x59, 0x6B, 0x42, 0x68, 0xBD, 0x37, 0xCF, 0xC6, 0x46, 0x11, + 0x64, 0x9E, 0xEB, 0xF5, 0xCD, 0xA2, 0x5F, 0x3F, 0xC8, 0x0E, 0x1F, 0xCC, + 0xFA, 0xE0, 0x59, 0xC4, 0x82, 0x8B, 0x8E, 0xC4, 0x8C, 0x96, 0x56, 0xF5, + 0x16, 0x2A, 0x53, 0x0E, 0x36, 0xC9, 0x61, 0x34, 0x3F, 0x0F, 0x73, 0xC3, + 0xD9, 0x0C, 0x3B, 0x74, 0xD5, 0x97, 0x3F, 0x2D, 0x1B, 0xCF, 0x1F, 0xD2, + 0xFC, 0xFF, 0xBC, 0xFB, 0x9E, 0xE7, 0x5D, 0x30, 0x5D, 0x9C, 0x66, 0x06, + 0x26, 0xD3, 0x0A, 0x4E, 0x4C, 0x45, 0xA8, 0xE6, 0x23, 0x0A, 0xE1, 0x3A, + 0x31, 0x39, 0xC0, 0x01, 0x9D, 0x19, 0xD3, 0x2A, 0x28, 0xD7, 0x43, 0x40, + 0x38, 0xC5, 0xA9, 0xCC, 0x80, 0x71, 0xAF, 0xDC, 0xEF, 0x4E, 0x85, 0xC0, + 0xBE, 0x56, 0xC1, 0x54, 0xA6, 0xDE, 0x30, 0xE4, 0xF9, 0xD0, 0x1B, 0x40, + 0x6A, 0x61, 0x2B, 0x5C, 0x2B, 0xF6, 0x16, 0x99, 0xD7, 0x62, 0xC2, 0x59, + 0x81, 0x87, 0xFB, 0x93, 0x45, 0xEE, 0x38, 0xB8, 0xE7, 0xDD, 0x37, 0xC0, + 0x76, 0xC9, 0x0D, 0x17, 0x06, 0x34, 0xD3, 0xB3, 0x6E, 0x88, 0x26, 0x99, + 0x48, 0x0E, 0x67, 0x46, 0xE3, 0xE4, 0x22, 0x97, 0xFA, 0xD3, 0xC3, 0x66, + 0xD1, 0x08, 0x17, 0x93, 0xDD, 0xC9, 0xC6, 0x41, 0xC7, 0x12, 0x4F, 0x83, + 0xB8, 0xCC, 0x60, 0xA0, 0x24, 0xB7, 0x17, 0x16, 0x31, 0xC6, 0x42, 0xEB, + 0xEC, 0x48, 0xE1, 0xEB, 0x75, 0x54, 0x75, 0xE8, 0x01, 0xF6, 0x42, 0x67, + 0xF1, 0x46, 0xF7, 0xB7, 0x2A, 0x22, 0x88, 0x20, 0xAC, 0xCF, 0xA3, 0x27, + 0x36, 0x38, 0xD0, 0x70, 0x99, 0xD5, 0x63, 0xA3, 0xF7, 0x05, 0x25, 0x52, + 0x82, 0x04, 0x02, 0xED, 0xBD, 0x13, 0x9F, 0xCE, 0x89, 0xD0, 0x6E, 0xE2, + 0x85, 0xBB, 0xEC, 0x7B, 0xFA, 0x6C, 0x88, 0x4B, 0x57, 0xD4, 0xC7, 0xCA, + 0x5A, 0x01, 0x6A, 0x6C, 0xD9, 0x75, 0x1E, 0x89, 0x26, 0xFA, 0x4A, 0x0E, + 0x1F, 0x2B, 0xA9, 0x97, 0xDB, 0x19, 0x4E, 0xD4, 0x55, 0x5C, 0x3D, 0xF2, + 0xDB, 0xD7, 0x5B, 0x60, 0x9E, 0x12, 0x4A, 0x62, 0x45, 0xE7, 0xBB, 0x0E, + 0xEF, 0x67, 0x99, 0x68, 0xAA, 0x0E, 0x2B, 0x49, 0x82, 0x8D, 0x7E, 0x4C, + 0xA4, 0x78, 0x08, 0xC3, 0xAE, 0x79, 0xF4, 0x39, 0xC1, 0xEC, 0x00, 0xB4, + 0x9D, 0x7C, 0x40, 0xFC, 0x6B, 0xBC, 0x16, 0xDB, 0xD8, 0xC4, 0x48, 0x5B, + 0x63, 0x16, 0xF6, 0xCE, 0xAA, 0x99, 0xC8, 0xF2, 0x87, 0x2A, 0x05, 0xAD, + 0x31, 0xB8, 0xA0, 0x1D, 0xA0, 0xA2, 0x03, 0x0C, 0x54, 0xD5, 0x7B, 0x0C, + 0xBF, 0x35, 0x70, 0x57, 0xCD, 0xE3, 0xB0, 0x57, 0xE8, 0xBE, 0x7A, 0x95, + 0xDF, 0xDF, 0xAB, 0x11, 0x55, 0x86, 0xA3, 0x27, 0x6E, 0x0B, 0x7B, 0xF0, + 0xAD, 0x2E, 0xEE, 0xF8, 0xD6, 0x10, 0xC8, 0x4D, 0x68, 0xCE, 0xA7, 0x86, + 0xFC, 0x45, 0xC1, 0x1E, 0x4E, 0x56, 0x61, 0x1E, 0xE8, 0x2C, 0xCA, 0x0D, + 0x51, 0xD2, 0x2C, 0xC3, 0x7E, 0xCF, 0xB3, 0x96, 0x1B, 0xEA, 0xD6, 0x0B, + 0x2D, 0x86, 0xDD, 0x8C, 0xAA, 0xAF, 0x1B, 0x4C, 0x4A, 0xA7, 0xA1, 0x53, + 0x5F, 0x8D, 0xB6, 0x0A, 0x3F, 0x5C, 0xA8, 0x23, 0x33, 0xCB, 0x92, 0xEA, + 0x1A, 0xEF, 0xBD, 0x2F, 0x89, 0xA1, 0x5C, 0x73, 0x3D, 0xDE, 0x51, 0x64, + 0xC5, 0x52, 0xA7, 0x92, 0xBC, 0x1D, 0xCA, 0xBA, 0xC8, 0xFC, 0x2C, 0x1A, + 0x69, 0x44, 0x71, 0xFE, 0xAB, 0x2A, 0x2E, 0xBB, 0x02, 0x92, 0xED, 0x90, + 0x01, 0xBC, 0x44, 0x7F, 0x6F, 0x76, 0x1E, 0x30, 0xDC, 0x4D, 0x3D, 0xBC, + 0x01, 0xD1, 0x1E, 0xE5, 0x71, 0x0E, 0xA6, 0x7D, 0xE1, 0xD5, 0xA6, 0x08, + 0xA6, 0x66, 0x9F, 0x0F, 0xAC, 0x11, 0x96, 0x66, 0x13, 0x03, 0x9F, 0x4C, + 0x0E, 0x8A, 0x2A, 0x4C, 0x39, 0xF0, 0xC6, 0x8E, 0x41, 0x9B, 0x23, 0xDD, + 0xDB, 0x7B, 0x94, 0x71, 0x6C, 0x78, 0x1B, 0xA6, 0xC1, 0xA8, 0x9B, 0xA5, + 0x86, 0x0E, 0x02, 0x97, 0x72, 0x2F, 0xE8, 0xE0, 0x01, 0x64, 0x39, 0x8C, + 0x6C, 0x4F, 0x64, 0x24, 0x34, 0x81, 0x33, 0x6D, 0xC6, 0x56, 0x60, 0x23, + 0x8C, 0xB1, 0xA3, 0x11, 0x94, 0x37, 0xEF, 0xE4, 0x3E, 0x4D, 0xAF, 0x61, + 0x2C, 0xF8, 0x86, 0x03, 0xFB, 0x25, 0xA3, 0x0F, 0xFA, 0x04, 0x3F, 0x72, + 0x10, 0xF1, 0xE6, 0x71, 0x13, 0x8A, 0xD7, 0xD3, 0x04, 0x92, 0x46, 0x4A, + 0x31, 0xAB, 0x5A, 0x1D, 0x16, 0x68, 0x77, 0x26, 0x9C, 0x28, 0x86, 0x27, + 0xD9, 0x60, 0xCA, 0x74, 0x41, 0x90, 0xB6, 0x0C, 0x91, 0xB1, 0x1E, 0x82, + 0xD9, 0x81, 0x63, 0x00, 0x2A, 0xA0, 0x07, 0x74, 0x62, 0x3B, 0xBD, 0x5B, + 0x9C, 0xA0, 0x6E, 0xE0, 0x55, 0x9B, 0x0A, 0x60, 0x84, 0x92, 0x7E, 0xB1, + 0xF1, 0xFC, 0x36, 0x97, 0xF8, 0x92, 0xAF, 0x3B, 0xD1, 0x2A, 0xBF, 0x4E, + 0xFD, 0x68, 0xC2, 0xF5, 0x89, 0xED, 0xE8, 0x4A, 0x44, 0xA0, 0x66, 0x50, + 0xDF, 0x4F, 0x6B, 0x9D, 0x1C, 0x98, 0xA4, 0xF4, 0x22, 0x9F, 0x51, 0x17, + 0x46, 0x4F, 0xFC, 0x07, 0xAD, 0xE6, 0x24, 0xF9, 0x5F, 0x9F, 0x56, 0x49, + 0x6A, 0x15, 0x39, 0xCA, 0x68, 0x98, 0xAF, 0xF1, 0x3F, 0xFB, 0x60, 0x36, + 0xDC, 0xB7, 0xD4, 0x27, 0x1F, 0x98, 0xDD, 0x6B, 0x21, 0x72, 0x1C, 0x4F, + 0x4C, 0x93, 0xC4, 0x01, 0xA4, 0x9C, 0xB7, 0x02, 0xC3, 0xFE, 0xCA, 0xC0, + 0x8D, 0xD5, 0xBA, 0x09, 0xB9, 0xAF, 0x1C, 0xB0, 0x08, 0x09, 0x36, 0x70, + 0x91, 0x08, 0xF5, 0x1B, 0x14, 0xE9, 0x81, 0xB1, 0xD1, 0xA0, 0x94, 0x4C, + 0x73, 0x46, 0xBB, 0x7C, 0xFA, 0xB9, 0xE7, 0x31, 0x94, 0xFD, 0xCE, 0x97, + 0xDB, 0x52, 0x32, 0x11, 0x72, 0xD7, 0x1C, 0xDE, 0x97, 0xBE, 0x19, 0xD9, + 0xCB, 0xCC, 0xEF, 0x0F, 0x2C, 0x90, 0xEA, 0xED, 0x1F, 0x07, 0x10, 0xD4, + 0x4E, 0xDF, 0x3F, 0x92, 0x29, 0x57, 0x22, 0x7A, 0x18, 0xB0, 0xE1, 0xDE, + 0x76, 0x61, 0xF3, 0xBA, 0x84, 0xD4, 0x7D, 0x9C, 0x92, 0x7B, 0x0B, 0xC2, + 0x7F, 0x6A, 0xF5, 0x5E, 0x77, 0xD6, 0xBB, 0xF5, 0x23, 0x1D, 0xCE, 0x52, + 0xFA, 0x21, 0x33, 0xD1, 0x33, 0x38, 0x65, 0x34, 0xCE, 0x8C, 0x25, 0x9D, + 0xF4, 0x95, 0xF1, 0x71, 0x17, 0xE6, 0x08, 0x96, 0xEA, 0x54, 0xA1, 0xA1, + 0xEB, 0xFD, 0x90, 0xAE, 0x63, 0x42, 0xC0, 0x8B, 0x57, 0xD4, 0x64, 0xDF, + 0xB9, 0xF1, 0xB2, 0x8A, 0xAD, 0x42, 0x64, 0x99, 0xF4, 0x3E, 0x72, 0xDB, + 0xE1, 0x18, 0xF2, 0x28, 0x0A, 0xDD, 0xB9, 0x8D, 0x66, 0xC2, 0xB1, 0x02, + 0xDC, 0xAB, 0x31, 0x2E, 0x42, 0xC8, 0x7A, 0xC0, 0xD2, 0x82, 0x7B, 0x2E, + 0xBA, 0x25, 0x07, 0x51, 0xB6, 0xC2, 0xDC, 0x75, 0x84, 0x5B, 0xB5, 0x43, + 0x36, 0x37, 0x26, 0x8B, 0x89, 0x77, 0x50, 0xC3, 0x49, 0xC0, 0xA1, 0x41, + 0xDC, 0xAA, 0x84, 0x32, 0x4E, 0x77, 0xE5, 0xC3, 0xF2, 0x2E, 0xD8, 0xA0, + 0x29, 0x64, 0xAA, 0x4A, 0x43, 0x90, 0xBA, 0xB1, 0x84, 0xFB, 0x9D, 0x40, + 0x82, 0x97, 0x01, 0xFE, 0x22, 0x40, 0x54, 0x06, 0x68, 0x9A, 0x9E, 0xB6, + 0x29, 0x21, 0xFB, 0x9F, 0xD4, 0x3A, 0x23, 0xDC, 0xAC, 0xB6, 0x7F, 0x19, + 0xC8, 0x01, 0x12, 0x40, 0xDB, 0xFB, 0xA1, 0x93, 0xAD, 0xD2, 0x03, 0xFA, + 0xB3, 0xA1, 0x47, 0x49, 0x8E, 0x8E, 0xA2, 0xF8, 0xDA, 0xB8, 0xDA, 0xF8, + 0x55, 0x2E, 0x8D, 0x91, 0x8E, 0x8C, 0x03, 0x1C, 0x6D, 0x9F, 0x09, 0x41, + 0x4B, 0x0A, 0x20, 0xDF, 0x6C, 0x1E, 0x07, 0x33, 0x39, 0xDC, 0xFE, 0x4F, + 0xD1, 0xC9, 0xFE, 0xC1, 0x44, 0x38, 0x95, 0x88, 0xE6, 0xAA, 0x20, 0x43, + 0x3A, 0x23, 0xBB, 0x05, 0x47, 0x34, 0x26, 0x19, 0xD0, 0x9F, 0x7B, 0x3F, + 0x6D, 0x10, 0x36, 0xBD, 0xC1, 0x96, 0x4B, 0xB2, 0x2B, 0x25, 0x36, 0xD3, + 0x79, 0x74, 0x1D, 0xDD, 0x88, 0x8D, 0x05, 0x4A, 0xF1, 0xA6, 0xC6, 0x62, + 0xE7, 0x28, 0x06, 0xD7, 0x34, 0x73, 0x2F, 0xB8, 0xDE, 0x3C, 0xB3, 0xAA, + 0x69, 0xBD, 0xDA, 0x1A, 0x30, 0xE8, 0x59, 0x44, 0x81, 0xCB, 0xCF, 0xAA, + 0xE0, 0xD0, 0x1B, 0x7C, 0xC6, 0x0E, 0xD7, 0x24, 0x12, 0xA9, 0x86, 0xB7, + 0xC3, 0x73, 0xA4, 0x87, 0x35, 0xC5, 0x6D, 0x44, 0x41, 0x30, 0xC0, 0x53, + 0xF3, 0x15, 0x12, 0x12, 0xEA, 0xA0, 0x50, 0x95, 0xA4, 0x8A, 0xC3, 0x4B, + 0xB1, 0xC1, 0xA8, 0xB6, 0x20, 0x63, 0x00, 0x8B, 0x77, 0x29, 0x30, 0x51, + 0x60, 0x87, 0x7C, 0x0E, 0x80, 0x3C, 0x7A, 0xB3, 0x56, 0x82, 0x99, 0xEC, + 0xA2, 0x9D, 0x87, 0xE0, 0x8A, 0x7B, 0xF9, 0x88, 0x74, 0xEF, 0xE6, 0x95, + 0xC4, 0x58, 0xFD, 0x85, 0xAF, 0xBD, 0x16, 0xFD, 0xAD, 0x5D, 0x5F, 0xFB, + 0xE7, 0xCC, 0xD0, 0x50, 0x59, 0x80, 0x2B, 0x12, 0x2F, 0xB2, 0x2E, 0xC0, + 0xEB, 0x6C, 0xF9, 0xE9, 0x95, 0xA7, 0x7E, 0xD5, 0xBD, 0x07, 0x68, 0xFB, + 0x09, 0xF3, 0xF9, 0x6F, 0xF2, 0xE1, 0x40, 0x78, 0x9D, 0xD1, 0xA4, 0x85, + 0xFF, 0x8F, 0x2E, 0x85, 0x87, 0xF2, 0xAA, 0x77, 0xD8, 0xFC, 0xF9, 0x96, + 0x74, 0xB0, 0xB4, 0x1E, 0x3C, 0x2C, 0x17, 0x63, 0x3B, 0x03, 0xF0, 0xF0, + 0xC9, 0x29, 0x57, 0x11, 0x81, 0xF8, 0x1B, 0x68, 0x03, 0x40, 0x53, 0x0C, + 0x75, 0x4C, 0x93, 0x6D, 0xC4, 0x5D, 0x40, 0xD0, 0x91, 0xAC, 0xA1, 0x6E, + 0x5F, 0xDD, 0x0F, 0x51, 0xB8, 0x77, 0x2D, 0x0E, 0x71, 0x45, 0x53, 0x2A, + 0x10, 0x83, 0x4A, 0xFA, 0x1B, 0xE7, 0x51, 0x8E, 0xE0, 0xDF, 0x54, 0xBF, + 0xBF, 0xA8, 0x6E, 0xC2, 0xA9, 0x15, 0x1D, 0x15, 0x15, 0x21, 0x9A, 0x9F, + 0x72, 0x00, 0x0C, 0xB3, 0xD6, 0xF6, 0xF6, 0x25, 0x73, 0xE6, 0x27, 0xFD, + 0x24, 0xF4, 0x06, 0x63, 0x21, 0x40, 0x0F, 0x38, 0x24, 0xDC, 0x78, 0x7A, + 0x5A, 0x60, 0x50, 0xA6, 0xAD, 0x1D, 0x02, 0x27, 0x60, 0xC5, 0x2B, 0x11, + 0x6B, 0xD3, 0x44, 0x52, 0x25, 0xAC, 0x90, 0x8C, 0x8E, 0xBD, 0x77, 0xC7, + 0xB7, 0x14, 0x8D, 0xDB, 0xF4, 0xBD, 0xD0, 0xED, 0x4F, 0x76, 0xFE, 0x0C, + 0x5E, 0x81, 0x63, 0x49, 0xDD, 0x27, 0x79, 0xD3, 0xEF, 0x12, 0x64, 0xD5, + 0x84, 0x99, 0xA4, 0x16, 0x25, 0xC6, 0xE2, 0xAC, 0xD5, 0xC4, 0x8C, 0xBA, + 0x42, 0x12, 0x21, 0x96, 0x53, 0xFF, 0xC2, 0xCB, 0x12, 0x98, 0xEB, 0xEC, + 0x0E, 0x72, 0xE3, 0x4A, 0x15, 0x5F, 0x61, 0xAF, 0xA4, 0x60, 0x43, 0x3F, + 0x79, 0x17, 0xC6, 0xCF, 0x9B, 0x48, 0x4C, 0x49, 0x74, 0xC6, 0x64, 0x92, + 0x6C, 0x41, 0xD4, 0xBB, 0xB9, 0x9D, 0x17, 0xA1, 0x68, 0xF1, 0x6E, 0xD5, + 0x5E, 0xD6, 0xD9, 0xF6, 0xDA, 0xD8, 0x36, 0xC1, 0x3E, 0xC2, 0xF2, 0x85, + 0xBC, 0x9B, 0x05, 0xE0, 0xD5, 0x15, 0xCF, 0x00, 0xBC, 0xD1, 0x1F, 0xCE, + 0x50, 0x47, 0x37, 0xFE, 0x57, 0x7A, 0xCB, 0x1C, 0x2E, 0x36, 0x79, 0xC4, + 0xDC, 0x1C, 0x11, 0x84, 0xDF, 0xD0, 0xF2, 0x7A, 0x02, 0xDD, 0x37, 0x5E, + 0xD0, 0x4A, 0x11, 0x0D, 0x59, 0x8F, 0xDD, 0xEB, 0xF6, 0x1D, 0xE6, 0x0D, + 0x58, 0x18, 0x7D, 0xD4, 0x4D, 0x3D, 0x1B, 0xD5, 0x13, 0xB1, 0xD4, 0xBB, + 0x50, 0x56, 0x29, 0xB1, 0x78, 0xCA, 0xC9, 0xC3, 0xA4, 0x10, 0x67, 0xFA, + 0x48, 0x13, 0x12, 0xAB, 0xB5, 0xDA, 0x45, 0x72, 0x6A, 0x41, 0x11, 0x6B, + 0xA9, 0xBF, 0x93, 0xFA, 0x47, 0x6D, 0x46, 0xE4, 0xAE, 0x58, 0xED, 0x5D, + 0xF3, 0x38, 0x57, 0xED, 0x49, 0xB7, 0x6A, 0x15, 0xC9, 0xBA, 0x05, 0xF2, + 0xA5, 0x9D, 0xC0, 0x0A, 0x31, 0x02, 0xC4, 0x70, 0x33, 0x4E, 0x5D, 0x29, + 0x02, 0x5B, 0x99, 0xEF, 0x2A, 0x1B, 0xD6, 0x90, 0xA9, 0xF1, 0x9A, 0x52, + 0x09, 0xD4, 0xFD, 0xF7, 0x5F, 0x50, 0xA1, 0x78, 0xD5, 0xA0, 0x69, 0xBE, + 0xD7, 0x61, 0x5E, 0x97, 0x16, 0x33, 0xBD, 0x25, 0x2B, 0x9F, 0x25, 0x49, + 0x6C, 0x9B, 0x5B, 0xB7, 0x8A, 0x9F, 0x54, 0x46, 0x2C, 0x3F, 0xC9, 0xFA, + 0xB8, 0xD0, 0xA3, 0x35, 0xBB, 0xF1, 0x7D, 0x4A, 0x74, 0xEC, 0x6F, 0xD3, + 0x14, 0xB3, 0x5E, 0x92, 0xFB, 0xF2, 0xE8, 0x41, 0x0A, 0xD2, 0x33, 0xF0, + 0x73, 0x5B, 0x36, 0x9A, 0x70, 0x97, 0x6E, 0x60, 0x54, 0xFD, 0x27, 0x79, + 0xC0, 0x4B, 0x1C, 0x86, 0x22, 0xAA, 0xA0, 0x14, 0x9D, 0xF6, 0x79, 0x3A, + 0xC3, 0x5C, 0xC4, 0xAC, 0xB2, 0xBC, 0x4D, 0xCC, 0xDC, 0xE0, 0x48, 0xB7, + 0x8E, 0xBD, 0x49, 0x08, 0x15, 0xB2, 0xA7, 0x05, 0xF9, 0x15, 0x18, 0x79, + 0xF1, 0x5F, 0xEA, 0xB8, 0x53, 0x5B, 0xA2, 0xD8, 0x7E, 0xA7, 0x0A, 0x28, + 0x1B, 0x0E, 0x21, 0x10, 0x02, 0xB9, 0xAA, 0x62, 0x1E, 0x17, 0x12, 0x31, + 0x8A, 0x60, 0x70, 0x90, 0x66, 0xFF, 0x83, 0x3F, 0x39, 0x97, 0x75, 0xE3, + 0x8D, 0x51, 0xA8, 0x0A, 0xA4, 0x9C, 0x1F, 0x73, 0x91, 0x8F, 0x8A, 0x9D, + 0x17, 0x7C, 0x43, 0x33, 0x1C, 0xE8, 0x29, 0x73, 0xA2, 0x3D, 0x2C, 0x43, + 0x07, 0x9B, 0x6D, 0xB2, 0x7F, 0x4E, 0x16, 0x6D, 0x94, 0x5D, 0x3F, 0xC4, + 0x0E, 0xEF, 0xEB, 0x0F, 0x71, 0x04, 0x2F, 0x99, 0xCD, 0x50, 0x81, 0x23, + 0x2A, 0x9C, 0xB0, 0x74, 0x63, 0x94, 0x8E, 0x41, 0x29, 0x93, 0x2B, 0x20, + 0x8B, 0xC8, 0x75, 0x34, 0xEB, 0x11, 0x4C, 0x4F, 0xDA, 0x1A, 0x8B, 0xE5, + 0x87, 0xA6, 0xB0, 0x57, 0xE2, 0x3F, 0x58, 0x68, 0xA3, 0xC0, 0x2E, 0x48, + 0x92, 0x4B, 0x9A, 0xE1, 0xFD, 0xF3, 0x22, 0x66, 0x8B, 0xF6, 0xCA, 0x10, + 0xBA, 0x83, 0x0C, 0x50, 0x68, 0x73, 0xD0, 0x21, 0x06, 0x2E, 0xAD, 0x68, + 0x2F, 0x11, 0x1E, 0x31, 0x38, 0x8D, 0xCF, 0x3E, 0xD7, 0x68, 0x08, 0xE3, + 0xD2, 0x47, 0x7B, 0x71, 0x68, 0xF6, 0x4F, 0x11, 0x36, 0x97, 0xD9, 0x2A, + 0xCF, 0x87, 0x0A, 0xCB, 0x5E, 0xE7, 0x1C, 0x1B, 0x02, 0x7F, 0x58, 0x4F, + 0x16, 0x3E, 0x5E, 0x28, 0x9E, 0xB4, 0x3B, 0x20, 0x5C, 0x9B, 0x6D, 0x25, + 0x4B, 0x72, 0xE1, 0xA5, 0x38, 0xC1, 0x7F, 0x69, 0x0A, 0x60, 0x42, 0xAB, + 0x24, 0x86, 0x09, 0xAA, 0x5D, 0x9E, 0x65, 0xF8, 0xC7, 0x6A, 0xCD, 0x31, + 0x14, 0xBC, 0xC0, 0x45, 0x80, 0x68, 0x09, 0xA2, 0x77, 0xD6, 0x4B, 0x95, + 0xD4, 0xF4, 0x58, 0xF0, 0xAB, 0x2F, 0x79, 0x77, 0x59, 0x74, 0x38, 0xD5, + 0x69, 0xB8, 0x77, 0x32, 0x92, 0x2A, 0x49, 0x96, 0xBE, 0x40, 0x31, 0x4F, + 0xC5, 0xCD, 0x9B, 0xA1, 0xD6, 0xB9, 0xCE, 0xF6, 0x4B, 0x01, 0x87, 0xE1, + 0x0E, 0x55, 0x40, 0x13, 0xE5, 0x42, 0x01, 0xC8, 0x78, 0x90, 0x6F, 0xA9, + 0x5B, 0x65, 0x79, 0xA0, 0x84, 0x85, 0x3B, 0x42, 0x73, 0x2D, 0x7C, 0xBA, + 0x2B, 0x7F, 0x19, 0xEB, 0x8D, 0x9D, 0x82, 0xA6, 0xE5, 0x10, 0x0A, 0x5A, + 0xAB, 0xA1, 0x1B, 0xD8, 0x87, 0xAB, 0xC5, 0x70, 0x78, 0xC1, 0xBC, 0xF6, + 0x5C, 0xFC, 0x60, 0x69, 0x5A, 0xD7, 0xE1, 0x20, 0x50, 0xCB, 0xDD, 0x55, + 0x1E, 0x80, 0x1F, 0x0A, 0x97, 0x65, 0x86, 0x02, 0xD4, 0x6C, 0x2E, 0x08, + 0xB8, 0xB0, 0x26, 0x78, 0xB9, 0xB3, 0x6D, 0x57, 0x9E, 0x21, 0x37, 0x01, + 0xDB, 0xEF, 0x49, 0x4D, 0x66, 0xE0, 0x7C, 0xCB, 0xCC, 0xD9, 0xAC, 0xEE, + 0xF2, 0xCE, 0xA5, 0x8E, 0x15, 0x4F, 0x1C, 0x83, 0x3C, 0xC8, 0xD0, 0x88, + 0x7E, 0x66, 0xCE, 0xA9, 0xBA, 0x32, 0x97, 0x15, 0x5F, 0x8B, 0xBC, 0x9E, + 0x1C, 0x14, 0x55, 0x9A, 0xBC, 0x4E, 0x4A, 0x6B, 0xB0, 0xE0, 0xF0, 0xDB, + 0x3A, 0x64, 0x14, 0x75, 0xAC, 0x14, 0x36, 0xE8, 0x6A, 0xB0, 0x3D, 0x7E, + 0xD9, 0xB4, 0x2B, 0x1F, 0xE9, 0x50, 0xB1, 0x7C, 0x18, 0x05, 0xA6, 0xE2, + 0x44, 0xF3, 0xCE, 0xE6, 0x4C, 0x21, 0x9E, 0x69, 0xAA, 0x22, 0x7E, 0xE2, + 0x35, 0x76, 0x3A, 0xAE, 0x6E, 0x4E, 0x72, 0x25, 0xB5, 0x4D, 0xA4, 0xF7, + 0x47, 0x82, 0x9C, 0xD5, 0xA0, 0x08, 0x53, 0x17, 0x74, 0xB5, 0xB4, 0xA2, + 0x6F, 0x10, 0x40, 0x62, 0x47, 0xB9, 0xCE, 0x00, 0xC8, 0x68, 0x94, 0x9F, + 0xD6, 0x7C, 0x0D, 0xD5, 0xB7, 0x8A, 0x13, 0xDE, 0x8C, 0x5B, 0x0B, 0x33, + 0xB7, 0x15, 0xD5, 0x43, 0xAE, 0xC0, 0x87, 0x0A, 0x13, 0xF3, 0xB5, 0x1C, + 0x00, 0xC7, 0xA4, 0x36, 0x05, 0xE4, 0xFF, 0xE2, 0x18, 0x6E, 0xF5, 0xF9, + 0x0D, 0xDE, 0xDA, 0x4D, 0xC6, 0x1B, 0x0D, 0x89, 0xD7, 0xD5, 0x5E, 0x84, + 0xDA, 0xC2, 0xAF, 0x42, 0x2D, 0x89, 0xD3, 0x69, 0x38, 0x25, 0xDB, 0xE0, + 0xC3, 0x17, 0xCF, 0x3A, 0xB1, 0x8F, 0x60, 0x74, 0xC4, 0x3C, 0x20, 0x1B, + 0xE3, 0x0C, 0x91, 0x93, 0xDC, 0xCB, 0x39, 0x45, 0x0E, 0xB3, 0x78, 0x52, + 0xBF, 0x6A, 0x79, 0x10, 0x93, 0x67, 0x25, 0x87, 0xD7, 0xA6, 0x55, 0xEB, + 0xC0, 0xE2, 0x04, 0x43, 0xF9, 0x25, 0x3B, 0x10, 0x95, 0xEF, 0xD5, 0x34, + 0xB0, 0xA6, 0x67, 0x24, 0x26, 0x94, 0x71, 0x4C, 0xA5, 0x7F, 0x4E, 0xAC, + 0xA7, 0x58, 0x89, 0xA1, 0x47, 0x47, 0x76, 0x17, 0xC0, 0x79, 0x21, 0xFE, + 0x53, 0xB8, 0x55, 0xC3, 0x73, 0xF7, 0x07, 0x4C, 0x76, 0xEE, 0x45, 0x92, + 0x72, 0x75, 0x07, 0xAE, 0x18, 0x44, 0xC0, 0x96, 0x20, 0x9F, 0xE6, 0x54, + 0x04, 0xEE, 0x16, 0xBA, 0x4B, 0x29, 0xA9, 0x27, 0x35, 0xBE, 0x58, 0xA6, + 0x32, 0x00, 0xEE, 0x7C, 0x8D, 0x3F, 0x4D, 0xB2, 0x1D, 0xB2, 0x0C, 0x6D, + 0xC9, 0xFE, 0x26, 0x92, 0xCF, 0x50, 0xD8, 0x0F, 0x27, 0x00, 0xDA, 0x4A, + 0xB6, 0xD5, 0xD7, 0x03, 0x8E, 0x09, 0xCA, 0x9D, 0xA8, 0xC0, 0x95, 0x6D, + 0x7E, 0xC8, 0x36, 0x43, 0x9C, 0x41, 0x30, 0x92, 0xC6, 0x97, 0x0D, 0x6C, + 0x87, 0x9F, 0xBC, 0x41, 0x72, 0x83, 0x6F, 0x7E, 0xCA, 0x29, 0x9B, 0x9B, + 0x43, 0x7F, 0x1A, 0x1B, 0xE3, 0xEF, 0x48, 0x3B, 0x22, 0x3F, 0x18, 0xDA, + 0x3B, 0xE6, 0xE0, 0x10, 0xCA, 0xD4, 0x0E, 0xAF, 0x56, 0xD4, 0x17, 0x20, + 0xD8, 0x80, 0xB7, 0xCF, 0xB1, 0xE5, 0x3B, 0xE8, 0x9A, 0x5F, 0xD0, 0x16, + 0x44, 0xEE, 0x3A, 0x8B, 0xB3, 0x23, 0x75, 0x1F, 0xBD, 0xDF, 0xE1, 0xF0, + 0xFD, 0xB9, 0xEB, 0x21, 0x49, 0x16, 0x00, 0xEE, 0xFD, 0x87, 0x45, 0x97, + 0x45, 0x68, 0xDA, 0x57, 0x01, 0x60, 0x33, 0x1A, 0x01, 0x43, 0xB2, 0x1C, + 0xB7, 0xA6, 0xCD, 0x67, 0xFD, 0x38, 0x00, 0x44, 0x04, 0xFD, 0xA4, 0x35, + 0x63, 0x58, 0x79, 0x47, 0x6A, 0x1B, 0x6F, 0x65, 0x7A, 0x49, 0x2E, 0xA4, + 0xCE, 0xEE, 0x44, 0x78, 0xA7, 0xCB, 0x0C, 0xF1, 0x9E, 0x8B, 0x3E, 0xC8, + 0x4E, 0xDA, 0x4F, 0x90, 0xF6, 0xA6, 0x38, 0x1C, 0x14, 0x64, 0x21, 0x16, + 0x7C, 0x09, 0xAA, 0x52, 0x03, 0xC7, 0xBE, 0x62, 0x9E, 0xBD, 0xC6, 0x3F, + 0x6A, 0x0A, 0x79, 0x24, 0xFD, 0x00, 0xDF, 0xCB, 0x9E, 0xC9, 0x8D, 0x56, + 0xC6, 0x58, 0x81, 0x78, 0xCD, 0xA6, 0x36, 0x63, 0xE4, 0x78, 0x2F, 0xC8, + 0xAF, 0x6E, 0xD5, 0xB4, 0xDD, 0x31, 0xE4, 0x84, 0x33, 0x4E, 0x6F, 0x4D, + 0xE1, 0xD2, 0x87, 0x2A, 0xE3, 0xBA, 0x11, 0xBC, 0x0A, 0x4E, 0x28, 0xC9, + 0x8B, 0x50, 0x6E, 0xCF, 0x55, 0x06, 0x63, 0x89, 0x6B, 0x45, 0x83, 0x36, + 0x08, 0xA2, 0x67, 0x61, 0xBB, 0x72, 0x2F, 0xD1, 0xA4, 0x45, 0xD7, 0x1C, + 0x1A, 0x76, 0x47, 0x43, 0xED, 0x72, 0xA7, 0x68, 0x2F, 0xEA, 0xCB, 0x04, + 0xD0, 0x70, 0x00, 0xE9, 0xB5, 0xCA, 0xF0, 0x47, 0x5E, 0x5C, 0x28, 0x5E, + 0x03, 0x88, 0xB4, 0xD6, 0x52, 0x6A, 0xFE, 0xFF, 0x88, 0x9C, 0x2B, 0x32, + 0xD1, 0x3D, 0x9E, 0x4F, 0xD3, 0xD4, 0xA7, 0xE1, 0xB6, 0xB9, 0x89, 0xE7, + 0xE2, 0xF7, 0xBC, 0x57, 0xD7, 0xC4, 0x20, 0xFB, 0x91, 0xC0, 0x87, 0x5E, + 0xC4, 0x4F, 0xB7, 0x0B, 0xD4, 0x34, 0x30, 0xAC, 0x02, 0x1F, 0xC7, 0x7A, + 0xBE, 0x64, 0x25, 0x34, 0x92, 0x12, 0x22, 0x66, 0xB5, 0x81, 0x7F, 0x6E, + 0x89, 0xA6, 0x49, 0x07, 0xFA, 0xA6, 0x14, 0x80, 0x7A, 0x5D, 0x4D, 0x06, + 0x9D, 0x57, 0x17, 0x82, 0x1B, 0x70, 0xBE, 0xFA, 0x50, 0x1A, 0x5E, 0x7B, + 0x48, 0x11, 0xF8, 0x2F, 0xFD, 0xC0, 0xE4, 0x75, 0x57, 0xCD, 0x81, 0x57, + 0xDA, 0x84, 0x1A, 0x92, 0x18, 0x40, 0x8A, 0xC3, 0x66, 0xCC, 0xE0, 0x93, + 0x8A, 0x19, 0x30, 0x2F, 0xD5, 0x9A, 0xAD, 0x24, 0x8A, 0x39, 0x03, 0x45, + 0xCF, 0x8E, 0xF9, 0x8C, 0x8D, 0xE1, 0x29, 0x2D, 0xDD, 0xB6, 0xA0, 0x33, + 0xCD, 0x75, 0x99, 0x27, 0xBA, 0x20, 0x10, 0x6C, 0xEE, 0xC5, 0xFE, 0xDB, + 0x86, 0x53, 0xD6, 0xCE, 0x48, 0x24, 0xEF, 0xB3, 0x27, 0x99, 0xFC, 0x51, + 0x25, 0x52, 0x76, 0x6F, 0xCD, 0x75, 0x68, 0x7E, 0xD2, 0xC8, 0xB7, 0x82, + 0x55, 0x5D, 0x2F, 0x30, 0xD0, 0xBF, 0x0C, 0xC6, 0xD6, 0xAB, 0xC8, 0x3A, + 0x48, 0x76, 0x26, 0x24, 0x08, 0xBF, 0x44, 0xA2, 0x27, 0xC8, 0x3F, 0xE7, + 0xD8, 0xBB, 0xD5, 0xED, 0x5D, 0xE4, 0xFE, 0x94, 0x9F, 0xE0, 0x13, 0xFC, + 0x1B, 0xB8, 0x0D, 0xED, 0x68, 0x33, 0xE5, 0x38, 0xFC, 0x7C, 0x05, 0xB1, + 0x74, 0xEA, 0x8E, 0xA2, 0x2F, 0x53, 0x5B, 0x9D, 0xD3, 0x53, 0x55, 0x18, + 0x01, 0x4C, 0xFE, 0x84, 0x00, 0xF7, 0x66, 0x11, 0x4E, 0xEF, 0x45, 0xF1, + 0xAE, 0xCF, 0x6B, 0x5C, 0x40, 0x76, 0x8B, 0xE3, 0xE0, 0x3F, 0x10, 0x14, + 0x07, 0x22, 0x9C, 0xBD, 0xE0, 0xFF, 0x56, 0x2F, 0x62, 0xEA, 0x50, 0x50, + 0xF6, 0x73, 0xA9, 0x2D, 0x3D, 0xED, 0x2B, 0x1A, 0x10, 0xB8, 0xAC, 0x07, + 0x69, 0xB0, 0x7D, 0x42, 0x9A, 0x58, 0x18, 0xA9, 0x87, 0x04, 0x63, 0xE0, + 0x64, 0x81, 0x9B, 0x17, 0xB1, 0x42, 0x36, 0x00, 0xA1, 0xA9, 0x1C, 0x9F, + 0x03, 0xC2, 0x6E, 0xB8, 0x40, 0xC4, 0xB1, 0x40, 0xDB, 0x45, 0xD3, 0x47, + 0xB6, 0x1A, 0x55, 0xB0, 0x91, 0x6B, 0xAE, 0xE4, 0x8C, 0x75, 0x9F, 0x6A, + 0x1F, 0xFA, 0xD2, 0x4B, 0x7B, 0x34, 0xE3, 0xAC, 0x77, 0x66, 0x1E, 0x88, + 0x2A, 0x89, 0x2E, 0x19, 0xF3, 0x21, 0xC5, 0xEA, 0x09, 0x99, 0xB2, 0x30, + 0x9F, 0xA5, 0x6B, 0x75, 0xF0, 0xE8, 0xCB, 0x9F, 0xB0, 0x3E, 0x17, 0x59, + 0x10, 0xDD, 0x0B, 0xA7, 0x97, 0xB4, 0x7E, 0x68, 0x26, 0x46, 0xE8, 0xA4, + 0x88, 0x4B, 0x0C, 0xE8, 0x5F, 0x4A, 0x2F, 0x67, 0xFE, 0x70, 0x33, 0xA4, + 0x55, 0x35, 0xC3, 0x85, 0x20, 0xBC, 0x12, 0x18, 0x85, 0x6B, 0x8D, 0x53, + 0x70, 0x1F, 0xF3, 0x8E, 0x1A, 0x56, 0x6F, 0x2E, 0xAD, 0xC9, 0x67, 0x00, + 0x28, 0x11, 0x72, 0x2D, 0xAF, 0x8D, 0x45, 0xC3, 0x86, 0xC7, 0xE9, 0xA8, + 0xC0, 0xBB, 0x26, 0x97, 0xD5, 0xE4, 0xB7, 0xCF, 0x57, 0x01, 0x00, 0x1E, + 0xBF, 0x11, 0xE2, 0xE4, 0x1E, 0x4D, 0xB6, 0x52, 0xC6, 0x69, 0xDE, 0xA0, + 0x3A, 0xD6, 0x97, 0x38, 0x63, 0x39, 0x60, 0x17, 0xAC, 0xD6, 0xED, 0xFB, + 0x10, 0xA9, 0xE0, 0x5E, 0x6D, 0x43, 0xC2, 0x24, 0xA8, 0xAC, 0xB8, 0xC5, + 0xE1, 0xF5, 0xBD, 0x4B, 0x89, 0x47, 0x50, 0x9F, 0x02, 0xB4, 0x40, 0xB1, + 0xFA, 0xCD, 0x48, 0x52, 0x68, 0xE5, 0x25, 0xE0, 0x74, 0xA2, 0x64, 0xC4, + 0x7B, 0xE5, 0xF1, 0x61, 0x21, 0xA6, 0x39, 0x42, 0x26, 0xC1, 0x87, 0x1F, + 0x6F, 0x3D, 0x68, 0x96, 0xC4, 0x74, 0xCD, 0x5E, 0xEE, 0x43, 0x6F, 0x99, + 0x91, 0x1D, 0x30, 0x97, 0xBA, 0x7E, 0xA5, 0xA6, 0x08, 0x3B, 0x8D, 0x40, + 0x61, 0xAF, 0x1B, 0xA2, 0x37, 0x63, 0x48, 0xD1, 0x70, 0xF6, 0xFC, 0x6A, + 0xDF, 0x09, 0x82, 0x4E, 0x00, 0xD6, 0xAA, 0x31, 0x76, 0x98, 0x24, 0x78, + 0xE3, 0x18, 0x91, 0xF6, 0x88, 0x3E, 0xA8, 0x54, 0xA1, 0x3F, 0xAD, 0xE1, + 0x67, 0xCE, 0x3E, 0x9E, 0x82, 0x62, 0x99, 0x18, 0xF8, 0x40, 0x60, 0x22, + 0x92, 0x55, 0xF6, 0xA1, 0x6D, 0x80, 0x69, 0xB9, 0x77, 0x40, 0xBA, 0xAC, + 0x3C, 0x31, 0x32, 0xAA, 0xE8, 0x09, 0x26, 0x64, 0x2B, 0xE7, 0x6D, 0x19, + 0x31, 0xF3, 0x88, 0xFF, 0x45, 0xF2, 0xA9, 0xD7, 0xBF, 0xDA, 0x50, 0x33, + 0xD7, 0x83, 0x55, 0x08, 0xCA, 0xFE, 0xF6, 0x3B, 0x2A, 0x5A, 0xC4, 0xBD, + 0x26, 0x35, 0xF5, 0x9D, 0xE8, 0xA8, 0xFE, 0x9C, 0x43, 0x0F, 0x2C, 0xFD, + 0x33, 0x81, 0x08, 0x11, 0x4D, 0xE6, 0x5B, 0xB1, 0x96, 0xE7, 0x3A, 0x83, + 0xCB, 0xEF, 0x18, 0xDE, 0xF8, 0x5B, 0x09, 0x4D, 0x61, 0x3D, 0xB5, 0xB7, + 0xE4, 0xC9, 0x73, 0xFE, 0x5C, 0xD3, 0x57, 0x4F, 0x46, 0x6F, 0x42, 0x56, + 0x85, 0xC1, 0x4A, 0x8A, 0xD8, 0x61, 0xA3, 0x15, 0x49, 0x66, 0xA6, 0x1C, + 0xC0, 0x1F, 0xB7, 0xA9, 0x88, 0x06, 0xA4, 0x2F, 0xE4, 0x9A, 0xCC, 0x38, + 0xE0, 0x90, 0x64, 0xB6, 0x0F, 0xE5, 0xAE, 0xB5, 0x87, 0x64, 0x1C, 0x42, + 0x5C, 0x11, 0x01, 0xB5, 0xC2, 0x90, 0x3D, 0xAB, 0x26, 0x4B, 0x2A, 0x67, + 0x9F, 0x5B, 0x5B, 0xE3, 0x21, 0xA0, 0xB9, 0x7D, 0x64, 0xD3, 0xF8, 0xB3, + 0x77, 0x91, 0x2D, 0x34, 0x78, 0x8E, 0xB8, 0x1D, 0x30, 0x4B, 0xE1, 0x31, + 0xFE, 0x3D, 0xE6, 0xAB, 0xDA, 0xA6, 0xB4, 0xDF, 0xB0, 0x67, 0x25, 0x57, + 0x4A, 0x30, 0x8F, 0x86, 0x58, 0x13, 0xE6, 0xEA, 0xEE, 0x91, 0x86, 0xD2, + 0x0D, 0xCD, 0x19, 0xDC, 0x26, 0x18, 0x86, 0x52, 0xD2, 0x77, 0x79, 0x31, + 0xDA, 0xF9, 0x9A, 0xCA, 0x7B, 0xBE, 0xF6, 0x96, 0x61, 0xAE, 0x32, 0xC8, + 0x68, 0x17, 0xFF, 0xB8, 0xF4, 0xF5, 0xE5, 0xA4, 0x20, 0xC9, 0x44, 0x8A, + 0xD6, 0x8D, 0xB0, 0x0D, 0x3D, 0x2B, 0x47, 0x4B, 0xA5, 0x49, 0x37, 0x11, + 0x18, 0x2C, 0x94, 0x37, 0xEB, 0x7D, 0xD6, 0x49, 0x59, 0xFD, 0x75, 0xC7, + 0x6C, 0x11, 0x83, 0xBD, 0x92, 0xF4, 0xA0, 0xFD, 0x5D, 0x2D, 0x24, 0x42, + 0x8D, 0x3E, 0x96, 0xDA, 0x4B, 0xCD, 0x85, 0xDA, 0xF4, 0x11, 0x27, 0x0F, + 0x5B, 0xE1, 0xB4, 0x62, 0x51, 0xC6, 0x04, 0x22, 0xCD, 0x8D, 0x3D, 0x26, + 0x59, 0xC9, 0xF3, 0xBF, 0xBD, 0x07, 0xEB, 0x3D, 0xDD, 0x41, 0x3A, 0xAE, + 0x35, 0xB6, 0x9C, 0x76, 0xE6, 0xE9, 0x5E, 0x98, 0xF6, 0x9F, 0x9B, 0x6D, + 0x9A, 0x0F, 0xF3, 0xA2, 0x5E, 0xD0, 0x37, 0x0F, 0xA7, 0xB9, 0xC1, 0xC2, + 0xFF, 0x26, 0x59, 0x51, 0xC6, 0x27, 0x15, 0x25, 0xFD, 0x8E, 0xA0, 0xAA, + 0x72, 0xD4, 0xA8, 0x13, 0x61, 0xE0, 0x4C, 0xD0, 0xD2, 0xCA, 0xA8, 0x85, + 0x98, 0x95, 0x26, 0x68, 0x7A, 0x1D, 0xBC, 0x6D, 0x87, 0xF8, 0x8C, 0xEC, + 0x31, 0xA7, 0x8E, 0x98, 0x1C, 0xEC, 0x51, 0xCA, 0xF7, 0x38, 0x5A, 0x03, + 0xF1, 0x7B, 0x84, 0x9D, 0x96, 0x75, 0x30, 0x96, 0x92, 0xDD, 0x4F, 0xCD, + 0xD8, 0x00, 0xA0, 0xAB, 0x7B, 0x52, 0x42, 0x2F, 0x0A, 0x9F, 0x28, 0x18, + 0x12, 0xD7, 0x47, 0xF5, 0x83, 0xB4, 0x27, 0xA6, 0x5D, 0x8C, 0xB1, 0xD7, + 0xC2, 0xB5, 0x3F, 0xCC, 0x31, 0xCA, 0x7C, 0xB5, 0xB5, 0x37, 0xAA, 0xCB, + 0xA5, 0x8A, 0x2D, 0x21, 0x72, 0x24, 0xCE, 0xD6, 0x05, 0xDA, 0x32, 0x2A, + 0xA9, 0x92, 0x57, 0x07, 0x24, 0x7C, 0x53, 0x92, 0xBA, 0x4A, 0x3D, 0xF8, + 0xA9, 0xCB, 0xEC, 0x7A, 0x34, 0x4A, 0xFD, 0x2E, 0x3D, 0x22, 0xA1, 0x8B, + 0xC4, 0x8B, 0x39, 0x8F, 0x11, 0x8E, 0x75, 0x85, 0xB3, 0x1C, 0xB3, 0x2E, + 0x5B, 0xF6, 0xF7, 0x03, 0x88, 0x11, 0x14, 0x7A, 0x42, 0xDA, 0x25, 0x0C, + 0xAD, 0x88, 0xE7, 0xC9, 0xE6, 0x90, 0x65, 0x13, 0x2B, 0x40, 0x20, 0xC3, + 0x03, 0xCC, 0x38, 0x71, 0x5C, 0x32, 0x54, 0xFE, 0x42, 0x2A, 0xC8, 0x4D, + 0xDB, 0x4F, 0x0F, 0x9D, 0x53, 0xEA, 0xBE, 0xA8, 0x84, 0x87, 0x63, 0x8F, + 0xC7, 0xC5, 0xC7, 0xD9, 0x41, 0xDF, 0x53, 0x72, 0x50, 0x61, 0x9A, 0x81, + 0x6B, 0x70, 0x6F, 0xE4, 0x98, 0xBB, 0x46, 0xEF, 0x24, 0xA6, 0xA0, 0xCB, + 0x49, 0x05, 0x13, 0xA6, 0xC2, 0x1F, 0x2D, 0x1A, 0x2B, 0xBD, 0xA9, 0x97, + 0xB4, 0xEC, 0x6C, 0x0C, 0x1C, 0xA1, 0x9E, 0xDB, 0x5E, 0x55, 0x95, 0xE0, + 0xE1, 0xC5, 0x4E, 0x97, 0x89, 0x69, 0xDA, 0xB6, 0x5C, 0xAA, 0xF2, 0x96, + 0x28, 0x7A, 0xCB, 0xA9, 0xCE, 0x46, 0x5E, 0x07, 0xFE, 0x73, 0x4F, 0x2C, + 0x46, 0xAF, 0xFB, 0x2F, 0xC5, 0xD1, 0xB6, 0xB2, 0x85, 0x65, 0x1C, 0x7F, + 0x72, 0xBC, 0xF9, 0x51, 0x1B, 0x02, 0xAE, 0x6A, 0x46, 0xB5, 0x39, 0x1A, + 0x8D, 0x34, 0x84, 0x40, 0xE5, 0x1B, 0x91, 0x11, 0xE9, 0x42, 0x44, 0x56, + 0x64, 0x01, 0xF5, 0xC0, 0x7D, 0x64, 0x37, 0x72, 0xA4, 0x7A, 0xE5, 0xD6, + 0x19, 0xA6, 0xDB, 0x78, 0x23, 0x47, 0x68, 0xE5, 0x8D, 0x7D, 0x8C, 0xE5, + 0x63, 0xF3, 0x3E, 0x07, 0xEE, 0x4E, 0x8D, 0xF1, 0x56, 0x37, 0xA4, 0x27, + 0xDC, 0x67, 0x45, 0x84, 0x41, 0x89, 0xD2, 0x77, 0x67, 0x3C, 0x76, 0x27, + 0x6B, 0x8B, 0xD2, 0x65, 0x6A, 0x65, 0x2B, 0xB1, 0xA6, 0x73, 0x3F, 0xD2, + 0xC6, 0x78, 0x5D, 0xF9, 0xDA, 0xBD, 0x8B, 0x9F, 0xC0, 0x5B, 0xF2, 0xF4, + 0xA6, 0x46, 0xF4, 0x5A, 0xCD, 0xDC, 0x40, 0x0E, 0x48, 0x28, 0xA2, 0x98, + 0x87, 0xE7, 0x4F, 0x46, 0xD4, 0x6E, 0xFB, 0x6F, 0x11, 0xC5, 0x85, 0xCF, + 0xDF, 0xA9, 0xBB, 0xE1, 0x61, 0x80, 0x41, 0xFC, 0x69, 0x8F, 0xD7, 0xDD, + 0xD9, 0x8B, 0x63, 0xE2, 0x60, 0x1A, 0x0A, 0xFF, 0x56, 0x85, 0x6C, 0x4C, + 0x0D, 0x19, 0x9E, 0xE1, 0xCB, 0xF3, 0xEB, 0x9C, 0xBF, 0x11, 0x4A, 0x0B, + 0x23, 0xFD, 0x88, 0x93, 0x1A, 0x8B, 0xA2, 0x68, 0xD2, 0x07, 0x90, 0x11, + 0xC6, 0x3D, 0xEF, 0x2C, 0x3C, 0x02, 0x41, 0x1F, 0x41, 0x93, 0x2B, 0x83, + 0xAB, 0x2D, 0x35, 0xA4, 0x6E, 0xD7, 0x36, 0x51, 0x09, 0x7C, 0x23, 0x4F, + 0xAD, 0xF8, 0x38, 0xF0, 0x1D, 0x98, 0x2E, 0xEA, 0x20, 0xAF, 0x10, 0x9B, + 0x03, 0x96, 0xE0, 0x68, 0xCB, 0x01, 0xC2, 0xAF, 0x4B, 0x70, 0xB0, 0x6F, + 0xB6, 0xBC, 0x71, 0xA8, 0x57, 0x32, 0x26, 0x98, 0x23, 0xAD, 0xC6, 0x07, + 0xE8, 0xDF, 0xB6, 0xC8, 0x83, 0xF6, 0x17, 0xFD, 0x4C, 0xDA, 0xB7, 0x1D, + 0xA4, 0x92, 0xCE, 0xAD, 0x4B, 0xB8, 0xD2, 0xBB, 0xC4, 0x2E, 0x9C, 0xE3, + 0x40, 0x31, 0xF1, 0xF8, 0x1A, 0xC7, 0x55, 0x99, 0x08, 0xAE, 0xFF, 0xD1, + 0x39, 0x74, 0x4F, 0x87, 0x6A, 0x26, 0xBC, 0x36, 0x5D, 0x2C, 0x25, 0x53, + 0x0B, 0x18, 0x15, 0x7F, 0xA3, 0x2A, 0x45, 0xC4, 0x9A, 0xE2, 0xEF, 0xDC, + 0xDC, 0xF1, 0x9D, 0xE9, 0x5E, 0xD9, 0xD5, 0x54, 0x89, 0x6D, 0x5A, 0xCE, + 0x8D, 0x22, 0x16, 0xF1, 0xD7, 0x36, 0xB9, 0x9A, 0xB0, 0xF4, 0xCD, 0xEF, + 0xE6, 0x0C, 0x3A, 0x5D, 0x09, 0x22, 0xF6, 0x45, 0xD7, 0x02, 0x55, 0x01, + 0x02, 0x7A, 0x4F, 0xBB, 0x22, 0x6A, 0x87, 0x66, 0x62, 0xD0, 0x1D, 0x54, + 0x72, 0xB2, 0xD8, 0x0A, 0x7E, 0x60, 0xC1, 0x1D, 0x68, 0xEA, 0xFB, 0x6A, + 0xE3, 0x5F, 0x97, 0xC5, 0xFD, 0xEB, 0x08, 0x2C, 0x50, 0x96, 0xB8, 0xC1, + 0x9D, 0x5E, 0x1E, 0x3E, 0x46, 0xA6, 0x49, 0x57, 0xC8, 0xBD, 0xB1, 0xD6, + 0xD5, 0x21, 0x2A, 0x03, 0x84, 0x65, 0x24, 0x11, 0xB0, 0xF0, 0x0F, 0xF4, + 0x04, 0x52, 0x43, 0xBA, 0xEA, 0x93, 0xBA, 0x9F, 0x34, 0x26, 0x1F, 0xD7, + 0x1F, 0x7B, 0xC0, 0x30, 0x01, 0x69, 0x68, 0x9B, 0x21, 0x13, 0xA5, 0xD4, + 0x87, 0x30, 0xDC, 0xEB, 0x35, 0x39, 0x76, 0x35, 0xB9, 0xE3, 0xDF, 0xCD, + 0xB5, 0xE5, 0x89, 0xEA, 0x54, 0x1F, 0x3E, 0xDB, 0x90, 0xCF, 0x5C, 0x4A, + 0x96, 0x97, 0x32, 0x3F, 0x6F, 0xB4, 0xE5, 0x28, 0xDF, 0xE4, 0xCA, 0xB1, + 0x1B, 0x78, 0x65, 0x2C, 0x99, 0x3D, 0x77, 0x32, 0x5F, 0x6C, 0x6D, 0xD3, + 0x53, 0x67, 0x15, 0x39, 0xFD, 0xE1, 0x2A, 0xB0, 0x48, 0x24, 0x4D, 0x36, + 0x4D, 0x90, 0x9F, 0xF3, 0x1D, 0x4F, 0x9D, 0x3B, 0xBE, 0x64, 0xFE, 0xF0, + 0xF2, 0xAE, 0x31, 0xB2, 0xBE, 0x35, 0x8E, 0x34, 0xD6, 0x56, 0xAB, 0xF2, + 0x45, 0xC4, 0x37, 0x65, 0xA0, 0x08, 0x66, 0x5D, 0x9F, 0x0D, 0x96, 0x0B, + 0x58, 0xC2, 0x18, 0x00, 0x43, 0xBA, 0xC4, 0xFE, 0xD3, 0x6C, 0x96, 0x78, + 0xAE, 0x10, 0x2D, 0x86, 0x4D, 0x8F, 0x87, 0x44, 0xCF, 0x8E, 0x1D, 0x23, + 0x00, 0x8D, 0x8A, 0x91, 0x28, 0xDE, 0x13, 0xF1, 0x2B, 0xBC, 0x75, 0x32, + 0xB3, 0x50, 0xDB, 0xD3, 0x5A, 0xA5, 0x2A, 0x28, 0x82, 0x70, 0x4B, 0xF9, + 0x77, 0x70, 0xC5, 0x5D, 0x4A, 0x52, 0x43, 0x4C, 0x1D, 0x6E, 0xB5, 0x6A, + 0x41, 0x65, 0xFF, 0xF2, 0x67, 0xC2, 0x86, 0x85, 0x0C, 0x95, 0x25, 0xAB, + 0x61, 0x3E, 0x79, 0x0A, 0x2F, 0x3F, 0xBB, 0x4A, 0xC7, 0x33, 0xEE, 0x2E, + 0x04, 0xD6, 0x44, 0xCE, 0x40, 0xB9, 0xFA, 0xF4, 0x8A, 0x7B, 0xA2, 0xE0, + 0x43, 0xFE, 0x80, 0x88, 0xA5, 0xB1, 0x47, 0x51, 0xFF, 0x48, 0xE4, 0x13, + 0xA1, 0x6D, 0x6D, 0x1E, 0x4F, 0x14, 0x5C, 0x32, 0x05, 0x73, 0x4E, 0x1B, + 0x9E, 0xB2, 0xEB, 0xF1, 0xC7, 0x42, 0x84, 0x3A, 0xAA, 0xE0, 0x6D, 0xEC, + 0x3E, 0x79, 0x60, 0x00, 0x36, 0x01, 0x2F, 0xBC, 0xB7, 0x82, 0x03, 0x6D, + 0x26, 0x6F, 0x28, 0x6E, 0x4C, 0xB7, 0xD7, 0x93, 0xCB, 0xF2, 0xFC, 0x58, + 0x2B, 0x3F, 0x5A, 0x2F, 0x88, 0x36, 0xCB, 0x7A, 0xEF, 0xF2, 0xC6, 0x63, + 0xC1, 0x60, 0x20, 0x71, 0x1F, 0xE4, 0xA6, 0x8A, 0x14, 0x16, 0x7D, 0x9F, + 0xD3, 0x83, 0x8D, 0x0C, 0x8D, 0xC4, 0x8A, 0x5D, 0x1F, 0xE2, 0x05, 0x07, + 0xC7, 0x1D, 0x2B, 0x4F, 0xAF, 0x20, 0x33, 0x60, 0x43, 0x6D, 0x60, 0x5F, + 0xEC, 0x57, 0x2F, 0xF5, 0x8A, 0xC4, 0xC7, 0x8E, 0x2B, 0x6B, 0xE8, 0xF0, + 0xA2, 0x4E, 0x66, 0xBA, 0x55, 0xEF, 0x67, 0x78, 0x20, 0x70, 0x1D, 0x57, + 0x25, 0x1C, 0xC8, 0x0C, 0x7F, 0x1D, 0x88, 0x4D, 0x28, 0xCE, 0x90, 0xDE, + 0xE5, 0xBE, 0x9B, 0xCC, 0x28, 0x38, 0x52, 0xA5, 0xB4, 0xE0, 0x86, 0x7F, + 0x73, 0x22, 0x75, 0x9D, 0xCA, 0x1F, 0xCB, 0x31, 0x35, 0xC7, 0x55, 0xA7, + 0xD2, 0xCD, 0x56, 0xC7, 0x22, 0xA6, 0xD3, 0x37, 0x02, 0x2E, 0xBE, 0x08, + 0x00, 0x26, 0x9A, 0x99, 0x62, 0x46, 0x1B, 0x25, 0xED, 0x6A, 0xD5, 0x61, + 0x20, 0xB9, 0xDD, 0xF7, 0xBE, 0xDD, 0x64, 0x5D, 0x61, 0xE5, 0x2F, 0x87, + 0x81, 0x47, 0x7E, 0xC2, 0x7D, 0x45, 0xB7, 0x2A, 0x0C, 0xB0, 0x0C, 0x5F, + 0x4C, 0x93, 0x02, 0xEE, 0x96, 0x55, 0xAF, 0x7C, 0x06, 0xA8, 0x74, 0x64, + 0x61, 0x6A, 0xA1, 0x41, 0x69, 0x55, 0x63, 0x15, 0x5B, 0x50, 0xA9, 0x8A, + 0xC5, 0x02, 0x3E, 0x5E, 0xFF, 0x4D, 0xD7, 0xE4, 0xE0, 0x88, 0xFE, 0xB5, + 0x53, 0x72, 0xA0, 0x52, 0xCE, 0x3C, 0x25, 0x98, 0xFF, 0x05, 0xFC, 0xE4, + 0x0C, 0x57, 0xE7, 0x4C, 0xD0, 0xEB, 0x1B, 0x4C, 0xEC, 0x89, 0xCE, 0x88, + 0x15, 0x6A, 0x9B, 0x7B, 0xDD, 0x0C, 0x53, 0x72, 0x0D, 0x0C, 0xD2, 0xE0, + 0x6E, 0x20, 0xF5, 0x30, 0xCE, 0xD2, 0xF6, 0x11, 0x0D, 0xCC, 0x85, 0x4C, + 0x9A, 0xD3, 0xBF, 0xF2, 0x39, 0xFF, 0x26, 0x4F, 0x4D, 0xAE, 0x25, 0x4A, + 0x72, 0xD9, 0x22, 0x8B, 0xE1, 0x07, 0xA9, 0xBD, 0x53, 0x45, 0x7C, 0xEB, + 0xFE, 0x56, 0xAE, 0x01, 0x7F, 0x12, 0x4E, 0x18, 0xE7, 0x96, 0xB1, 0x0E, + 0x9C, 0x89, 0xA8, 0xB4, 0x1C, 0xDA, 0x3E, 0xFE, 0x8C, 0x1C, 0xEF, 0xB4, + 0x50, 0xE5, 0x46, 0x1B, 0x56, 0xCE, 0x01, 0x53, 0xB2, 0x6D, 0xB0, 0xD0, + 0x8E, 0x08, 0x89, 0x2A, 0x5B, 0xC8, 0xFC, 0x9B, 0x6B, 0x4B, 0x6D, 0xDC, + 0x2E, 0x2E, 0x74, 0xAB, 0xE1, 0xAE, 0xA6, 0x74, 0x8F, 0x31, 0x74, 0x5F, + 0x34, 0x45, 0xE4, 0x88, 0xCE, 0x66, 0x24, 0xE9, 0x93, 0x68, 0x76, 0xD6, + 0xB9, 0x10, 0xA9, 0xBA, 0x6A, 0x3A, 0xCD, 0xB8, 0x95, 0x44, 0x7D, 0x75, + 0x13, 0x64, 0x7B, 0xD2, 0x29, 0xB9, 0x3A, 0x75, 0x98, 0x26, 0xFC, 0x2B, + 0x46, 0x8A, 0xFD, 0x5C, 0x2B, 0xB5, 0x6C, 0x48, 0x20, 0x5F, 0xAA, 0x09, + 0xAD, 0xBA, 0x7B, 0xE3, 0x13, 0x55, 0x3D, 0xBD, 0x43, 0xEA, 0xC7, 0xA7, + 0x3E, 0xDD, 0xF3, 0xEB, 0xBB, 0x7D, 0xFE, 0x2A, 0x9B, 0xC4, 0xFB, 0x44, + 0x1D, 0xD1, 0x72, 0x33, 0x88, 0x65, 0xFE, 0xE7, 0xD1, 0xD7, 0x55, 0xDC, + 0x2F, 0x17, 0xC0, 0x8A, 0xE2, 0xDA, 0x5E, 0xA4, 0x68, 0x9C, 0xA2, 0x5C, + 0xA0, 0xE7, 0x1F, 0x02, 0xFB, 0xC3, 0xEE, 0x63, 0xB7, 0xBD, 0x29, 0xEF, + 0xCB, 0xA5, 0x47, 0x5A, 0x79, 0x4D, 0x5E, 0x9D, 0x44, 0x5A, 0xF9, 0xC6, + 0xDE, 0x0A, 0x71, 0x58, 0xB6, 0xA0, 0x02, 0xE5, 0xAA, 0x62, 0x15, 0xF4, + 0x39, 0x28, 0x9A, 0xF8, 0x59, 0xF1, 0x92, 0x17, 0x45, 0x27, 0x6A, 0x1D, + 0x11, 0x3E, 0x08, 0xA2, 0xCD, 0x31, 0x0E, 0xEE, 0xD4, 0xFC, 0xF9, 0x3C, + 0x1F, 0x87, 0x00, 0xE2, 0x5F, 0xB8, 0x35, 0xBB, 0xC5, 0x97, 0x32, 0xCE, + 0x7F, 0x1D, 0xD6, 0x05, 0xEE, 0xD7, 0x0D, 0xB9, 0x3C, 0x6B, 0xAF, 0x23, + 0x0B, 0x86, 0x3C, 0x40, 0x66, 0xCD, 0x65, 0x8A, 0xF8, 0xEB, 0x6B, 0xAB, + 0x2F, 0x98, 0x6C, 0x40, 0x8E, 0x54, 0x90, 0xB5, 0x1C, 0x79, 0x7B, 0x83, + 0x12, 0xA4, 0x0B, 0x20, 0xD5, 0x95, 0x30, 0x2C, 0x8A, 0x6E, 0x94, 0xD2, + 0xAB, 0x78, 0xF5, 0x71, 0x38, 0x4F, 0xB2, 0x93, 0x50, 0xDB, 0x16, 0x94, + 0xC4, 0xA9, 0x7D, 0x9D, 0x2F, 0x48, 0x98, 0xEB, 0x74, 0xE2, 0xD7, 0x97, + 0x91, 0xBC, 0xF8, 0x90, 0xAF, 0x74, 0x71, 0x38, 0x94, 0xFE, 0xA6, 0xC7, + 0x89, 0x63, 0x0D, 0x9B, 0xF1, 0x81, 0x28, 0x4A, 0x75, 0x85, 0x53, 0x83, + 0x34, 0x99, 0xE6, 0xF4, 0xAA, 0xF4, 0xF0, 0x1D, 0x92, 0xBE, 0x12, 0x8E, + 0x20, 0xBF, 0xCA, 0x41, 0x30, 0x08, 0x9B, 0x47, 0xD0, 0x23, 0x45, 0x67, + 0x38, 0x2B, 0x0F, 0xD3, 0xBA, 0x59, 0xEB, 0x7C, 0x39, 0xCF, 0xA8, 0xB7, + 0xA9, 0xEF, 0xF4, 0xC7, 0xD9, 0x1B, 0x5B, 0xC4, 0xC3, 0xA3, 0x92, 0xA2, + 0xF9, 0x1F, 0xC1, 0x99, 0x57, 0xE6, 0xD8, 0x22, 0xF8, 0xA5, 0xC8, 0x4B, + 0xCE, 0xAD, 0xBD, 0x19, 0x71, 0xC3, 0x1A, 0xEB, 0x25, 0xFD, 0xA7, 0x7F, + 0xA8, 0x7A, 0xEC, 0x54, 0x0A, 0x97, 0x3E, 0x85, 0x29, 0xAF, 0x85, 0xDE, + 0x14, 0x10, 0x3C, 0xBD, 0x66, 0xBE, 0x59, 0xE4, 0x71, 0xD8, 0x7E, 0xEA, + 0xF6, 0x8A, 0x8F, 0xF1, 0x3A, 0x03, 0x41, 0x99, 0x27, 0x45, 0xB6, 0x05, + 0x2F, 0x6B, 0x11, 0x61, 0xB4, 0x40, 0x40, 0x3A, 0xD2, 0xE9, 0x90, 0xDD, + 0x0C, 0x19, 0x3B, 0x01, 0xF2, 0xA4, 0xF5, 0x3B, 0x9C, 0x18, 0x32, 0x26, + 0xCB, 0xDB, 0x20, 0x5B, 0xE2, 0x43, 0x70, 0xCB, 0x37, 0xA6, 0xEC, 0x34, + 0x85, 0x33, 0xD6, 0x8B, 0x1F, 0x5F, 0x10, 0xCC, 0x86, 0xAB, 0x04, 0x31, + 0x5D, 0x07, 0xD6, 0x7C, 0x5F, 0x71, 0x08, 0xAC, 0x3F, 0x08, 0xC6, 0xCF, + 0xAC, 0x50, 0xCF, 0xA2, 0xFC, 0xDB, 0x02, 0x01, 0xD5, 0x33, 0x9E, 0x57, + 0xDC, 0x88, 0xBC, 0x51, 0x71, 0x95, 0x9A, 0x86, 0x99, 0xBB, 0xFC, 0x5A, + 0x3C, 0xB8, 0xC0, 0xA5, 0x12, 0xA4, 0x26, 0x55, 0xE7, 0x8A, 0xD0, 0x6F, + 0x2C, 0x52, 0x21, 0xA4, 0x0A, 0xBE, 0xC9, 0xA7, 0x87, 0x4B, 0xBD, 0x47, + 0x44, 0xFA, 0x7A, 0xE5, 0xDF, 0x07, 0x54, 0xC8, 0xA3, 0xF3, 0x73, 0x28, + 0xE5, 0x52, 0x36, 0x04, 0x42, 0xAB, 0x9C, 0x6E, 0x80, 0x5B, 0x44, 0xF0, + 0xA7, 0xC6, 0x00, 0xC3, 0x69, 0x14, 0xE9, 0x01, 0xD2, 0xE4, 0x69, 0x7D, + 0x32, 0xAC, 0x78, 0x70, 0x76, 0x81, 0x9A, 0x19, 0x7D, 0x80, 0x82, 0xB5, + 0xCE, 0x11, 0xBD, 0xF1, 0x15, 0x36, 0x49, 0xB1, 0x84, 0xCB, 0x15, 0x46, + 0x87, 0xF4, 0x83, 0x3D, 0x82, 0x9A, 0x84, 0xB7, 0x86, 0x47, 0x06, 0x72, + 0xE9, 0xE5, 0xFE, 0x4C, 0x11, 0xAE, 0xD1, 0x0D, 0xA7, 0xBE, 0xFD, 0xE2, + 0xF7, 0xAD, 0xC2, 0x47, 0xA5, 0x72, 0x4A, 0x96, 0x38, 0xCC, 0x6B, 0xE7, + 0x94, 0xA3, 0x91, 0x6B, 0x3D, 0x20, 0x86, 0xA4, 0x70, 0x84, 0xDB, 0x35, + 0x78, 0xC9, 0x50, 0x89, 0x57, 0xE6, 0xB1, 0xA7, 0x60, 0xD7, 0x89, 0x13, + 0x8C, 0x04, 0xEC, 0x19, 0x40, 0x0C, 0xFB, 0x5D, 0x73, 0xAB, 0x2B, 0x58, + 0xEF, 0xD2, 0x9C, 0x2C, 0x8F, 0x11, 0x5F, 0x86, 0x43, 0xD3, 0x68, 0xE3, + 0x7C, 0xB6, 0x6B, 0xEF, 0x88, 0xC6, 0x64, 0x69, 0x32, 0x0C, 0x86, 0x30, + 0xCC, 0x25, 0x0B, 0x5A, 0x74, 0x64, 0x5C, 0xCC, 0xAC, 0xEF, 0x61, 0xFD, + 0x06, 0xEE, 0x95, 0xC6, 0xEB, 0xB8, 0xD1, 0x46, 0x7B, 0x50, 0xD1, 0x1D, + 0x82, 0x4C, 0xE5, 0xA2, 0xB2, 0xAC, 0x24, 0x49, 0xE0, 0xFB, 0x14, 0x29, + 0xC9, 0x39, 0x93, 0x9C, 0x35, 0x61, 0xD4, 0x29, 0xD3, 0x1A, 0x21, 0x6C, + 0xD4, 0x89, 0x84, 0x47, 0xF6, 0xE2, 0x00, 0x3A, 0x40, 0xB2, 0xC1, 0x39, + 0xFE, 0x79, 0x18, 0xC8, 0x5A, 0x41, 0x1C, 0xAD, 0x8A, 0xB6, 0x79, 0x3F, + 0x32, 0xFD, 0x8F, 0x3E, 0x57, 0x22, 0x5F, 0xDE, 0xE0, 0x90, 0x9B, 0xB7, + 0xF7, 0x80, 0xA2, 0x42, 0x33, 0x4E, 0x64, 0xD2, 0xB4, 0x25, 0x77, 0x62, + 0xA2, 0x48, 0x80, 0x06, 0x17, 0xBB, 0xC8, 0x04, 0x35, 0x94, 0x1A, 0xD7, + 0x64, 0xA4, 0xE6, 0xB6, 0xE6, 0x43, 0x30, 0x46, 0x78, 0xB6, 0x98, 0x1B, + 0x0F, 0x90, 0xE6, 0xF7, 0x9A, 0x6A, 0xEC, 0x96, 0x7F, 0x46, 0xD8, 0x1E, + 0x62, 0xA6, 0x56, 0x54, 0x63, 0x44, 0x62, 0x18, 0x75, 0x61, 0xB4, 0x11, + 0x0F, 0x6D, 0x5E, 0xE3, 0x45, 0xD4, 0x80, 0xC1, 0xAF, 0x98, 0xF6, 0x48, + 0x15, 0xDF, 0xD5, 0x3C, 0xD3, 0xE9, 0xD2, 0x17, 0x7E, 0x1A, 0x18, 0x3A, + 0xA1, 0xFF, 0xF0, 0x46, 0x9C, 0x48, 0xBA, 0x72, 0xFF, 0x21, 0x66, 0x63, + 0x8D, 0xB7, 0xA5, 0x17, 0x42, 0x4F, 0x2E, 0xCA, 0xEA, 0x8E, 0xD9, 0x6F, + 0xBD, 0x4B, 0x80, 0x4C, 0x73, 0x4F, 0x85, 0x3D, 0x0B, 0x80, 0x32, 0x1A, + 0xAD, 0x93, 0x83, 0x82, 0x0B, 0xA6, 0x5E, 0x76, 0x5B, 0x60, 0x51, 0x81, + 0x53, 0x9D, 0x82, 0x5F, 0x65, 0xAD, 0x93, 0x80, 0x81, 0x2C, 0x8A, 0x0B, + 0x7D, 0x58, 0x67, 0xE5, 0xAD, 0xB9, 0x94, 0xF7, 0x11, 0x58, 0xE9, 0x7D, + 0xE0, 0xC6, 0x92, 0xC9, 0x7D, 0x4C, 0xDC, 0x4C, 0x88, 0x22, 0x31, 0x68, + 0xC3, 0x37, 0xE3, 0x1E, 0xE5, 0xA4, 0x6B, 0x41, 0xEA, 0x9D, 0xE8, 0xFC, + 0xF1, 0xF3, 0x78, 0xF4, 0x54, 0x40, 0x53, 0x9D, 0x7D, 0x4C, 0x70, 0x56, + 0xBE, 0xB0, 0x74, 0x67, 0xAC, 0x7D, 0xE0, 0x4F, 0x67, 0x28, 0x71, 0xDD, + 0xCE, 0x78, 0xDB, 0xB5, 0xFF, 0x54, 0x22, 0xBD, 0x89, 0x74, 0x38, 0x14, + 0x1A, 0x10, 0x2C, 0xDF, 0x30, 0x24, 0xB0, 0xC1, 0x85, 0x09, 0x4D, 0xB5, + 0xE2, 0x02, 0x5E, 0x85, 0x9E, 0x6E, 0x6A, 0xB7, 0xE0, 0x6C, 0xF3, 0x91, + 0x42, 0xE7, 0x08, 0x07, 0x95, 0x00, 0xD9, 0x7F, 0x2C, 0xD0, 0xA1, 0x2A, + 0xB1, 0x52, 0x18, 0x62, 0x57, 0x51, 0xA0, 0xF2, 0xC9, 0x8B, 0xAA, 0x01, + 0x08, 0x74, 0xA6, 0x7C, 0x60, 0x3D, 0x3C, 0x4B, 0xED, 0x45, 0xFE, 0xCE, + 0x00, 0x9E, 0x6E, 0x99, 0xDA, 0x0B, 0xC6, 0xB6, 0xC5, 0xCF, 0xAA, 0x03, + 0xEE, 0x7F, 0x41, 0xAE, 0x83, 0xAB, 0x23, 0xAA, 0x67, 0x1E, 0x20, 0x42, + 0x55, 0x54, 0x95, 0xAE, 0xAE, 0x82, 0x2A, 0x3F, 0xAA, 0x14, 0x66, 0xF4, + 0xAB, 0x01, 0xAD, 0x5F, 0xA7, 0x76, 0xFA, 0x21, 0xF4, 0x82, 0x22, 0x67, + 0x8F, 0xDC, 0xA2, 0x1A, 0xBC, 0x01, 0x75, 0x8D, 0x66, 0x8C, 0xD5, 0x46, + 0x90, 0x4D, 0xD8, 0xC0, 0xBC, 0x0F, 0x61, 0xB2, 0xE9, 0xE2, 0xD0, 0x32, + 0x27, 0x4B, 0x39, 0x43, 0x50, 0xD0, 0xF7, 0xF2, 0x32, 0x24, 0xE8, 0x32, + 0x19, 0x31, 0x57, 0x04, 0x5B, 0xAB, 0x54, 0xC7, 0x44, 0x6B, 0x5F, 0x6C, + 0x14, 0xB2, 0x83, 0xA2, 0xEC, 0x5F, 0x04, 0x8A, 0x78, 0x0D, 0xF8, 0x8F, + 0x61, 0xFA, 0x32, 0xC9, 0xB4, 0x60, 0xCC, 0xCB, 0x35, 0x92, 0xB3, 0x23, + 0x29, 0x28, 0x4D, 0x48, 0x6C, 0x00, 0x9F, 0xF9, 0x8D, 0x26, 0x44, 0xC9, + 0x0B, 0xB2, 0x73, 0x94, 0xF3, 0x7A, 0x9C, 0x4E, 0x7E, 0xC3, 0xB7, 0x7E, + 0x87, 0x98, 0x18, 0x83, 0x35, 0x93, 0xDD, 0x35, 0xF7, 0xD1, 0x3D, 0xF1, + 0x40, 0x48, 0x89, 0xAC, 0xEE, 0x98, 0xE7, 0x5A, 0x77, 0xED, 0x3A, 0xED, + 0x5A, 0xE7, 0x38, 0x74, 0xF7, 0xD6, 0xB6, 0x40, 0x76, 0xAE, 0xBD, 0x99, + 0x93, 0x02, 0xB3, 0xFF, 0xDE, 0x14, 0x70, 0xC3, 0xBF, 0x77, 0x00, 0x4F, + 0xC6, 0x7E, 0x7A, 0x1E, 0x39, 0xD3, 0x00, 0xDC, 0xC2, 0x35, 0x01, 0x25, + 0x8C, 0x9C, 0x34, 0x79, 0xA0, 0x47, 0xD4, 0xD4, 0x3B, 0xFF, 0x89, 0x7D, + 0x79, 0x8B, 0xBF, 0x9A, 0x64, 0x4E, 0xB7, 0xE5, 0x79, 0x31, 0xB8, 0x45, + 0x03, 0xD0, 0xCC, 0xA6, 0xE5, 0x22, 0xBC, 0xF1, 0x40, 0x24, 0xBA, 0xF6, + 0x2B, 0xE0, 0x21, 0xE3, 0xA5, 0x4D, 0xBE, 0xBB, 0x45, 0x12, 0x5A, 0x10, + 0x1B, 0x28, 0xC2, 0xD6, 0x85, 0xBE, 0xBD, 0xD0, 0xDD, 0xA3, 0xA0, 0x7B, + 0x2F, 0x98, 0xE2, 0x9D, 0x62, 0xB1, 0xB6, 0xE2, 0x1E, 0x1D, 0x7E, 0x69, + 0x6F, 0x39, 0x92, 0xF2, 0x97, 0x3D, 0x02, 0xE1, 0x17, 0x25, 0x03, 0x63, + 0x20, 0x39, 0xEF, 0xBD, 0x56, 0xFD, 0x66, 0xD5, 0x40, 0x31, 0x9A, 0xA7, + 0x45, 0x00, 0xD0, 0x01, 0x60, 0x30, 0xA2, 0xD5, 0x6C, 0x5A, 0x56, 0x67, + 0x11, 0x57, 0xC8, 0x09, 0x9D, 0x96, 0xB0, 0xD1, 0x88, 0x9F, 0xE7, 0xE3, + 0xAC, 0xD0, 0x0C, 0x39, 0x13, 0xB8, 0xF5, 0xFA, 0xDB, 0xFE, 0x5C, 0x52, + 0x4A, 0x8D, 0xA2, 0x8C, 0xA8, 0x7E, 0xAB, 0xEC, 0x22, 0x7F, 0x23, 0x04, + 0x16, 0x0E, 0x8F, 0x99, 0xD7, 0x83, 0x13, 0xDF, 0x40, 0x3F, 0xB7, 0xF1, + 0xA9, 0x2A, 0x04, 0x62, 0xD3, 0xC1, 0x2F, 0x4B, 0x5D, 0xE8, 0xB8, 0x0E, + 0xD2, 0x46, 0xF3, 0x13, 0x92, 0x9A, 0x63, 0x03, 0x54, 0xEC, 0x9E, 0xD3, + 0x30, 0x00, 0x03, 0x8A, 0x77, 0x8B, 0xCD, 0x8C, 0x3D, 0x6B, 0x9E, 0xBB, + 0x72, 0x7B, 0xB8, 0x72, 0xB9, 0xCD, 0x98, 0x69, 0xFB, 0x20, 0xB8, 0xC5, + 0x3F, 0xA0, 0x9C, 0xD1, 0x29, 0x89, 0xE0, 0x55, 0xDF, 0x87, 0x5D, 0x90, + 0x28, 0x99, 0xE6, 0x39, 0x63, 0x6A, 0x19, 0xE8, 0x0D, 0x50, 0xB1, 0x2C, + 0xF3, 0x31, 0xC1, 0x68, 0x23, 0xE3, 0x70, 0xFF, 0x7E, 0x1F, 0x4D, 0xF5, + 0xC5, 0x90, 0xE9, 0x81, 0x17, 0x66, 0x17, 0x40, 0x44, 0xDF, 0x2F, 0x63, + 0x50, 0x82, 0x72, 0x87, 0x23, 0x93, 0x6B, 0x7E, 0xAD, 0x53, 0x6F, 0xD7, + 0x78, 0x31, 0x25, 0x9F, 0x9E, 0xC3, 0xC9, 0x42, 0x18, 0x40, 0xE9, 0x4C, + 0xFC, 0xAA, 0xC7, 0xF5, 0x51, 0x93, 0x24, 0xE2, 0xFD, 0x69, 0x72, 0x68, + 0xE1, 0x8D, 0x59, 0x42, 0x1A, 0x14, 0x48, 0x6A, 0xDD, 0x59, 0xC3, 0xA7, + 0x34, 0x73, 0x37, 0xAE, 0x82, 0xB9, 0xEB, 0x46, 0xD2, 0xB6, 0x31, 0xB4, + 0x3E, 0x82, 0x49, 0x4B, 0x0F, 0x13, 0xB5, 0x98, 0x47, 0x26, 0xD4, 0x45, + 0x8C, 0xE2, 0x04, 0xD4, 0xC6, 0x8B, 0x7B, 0x7D, 0x0E, 0x7D, 0x3C, 0x63, + 0x39, 0xD7, 0xDF, 0xB2, 0x68, 0x34, 0xD4, 0xB4, 0x70, 0x6A, 0x98, 0x15, + 0xDF, 0x16, 0xEF, 0xAF, 0x1E, 0xC5, 0x1F, 0x5C, 0x3D, 0x85, 0x74, 0xC6, + 0xCF, 0x44, 0x01, 0xD3, 0xC3, 0x61, 0x93, 0xBF, 0x23, 0x9F, 0x99, 0x44, + 0x54, 0x2A, 0x32, 0xB9, 0x75, 0x21, 0x1B, 0x2C, 0xE1, 0xFB, 0xFF, 0xAF, + 0x62, 0x6F, 0x86, 0x23, 0xFE, 0xCD, 0x68, 0x38, 0xB6, 0xAC, 0x49, 0xF6, + 0x4A, 0x0C, 0xA1, 0xF5, 0x19, 0xD1, 0x5A, 0xA8, 0xF0, 0xB4, 0x9B, 0x4E, + 0x0F, 0x6B, 0x65, 0x46, 0x44, 0x16, 0x2F, 0x7E, 0x6E, 0xDC, 0x5F, 0x5E, + 0x6F, 0x31, 0x99, 0x43, 0xA0, 0x27, 0xBD, 0x2A, 0x58, 0x6E, 0xB2, 0x82, + 0x29, 0x78, 0xED, 0xA6, 0x83, 0x4D, 0x1B, 0xCD, 0x9C, 0x0F, 0xE5, 0xE7, + 0x1A, 0xE4, 0x63, 0xD6, 0x6A, 0xD5, 0x03, 0x39, 0xB8, 0x48, 0x77, 0x80, + 0xF7, 0xF3, 0xFE, 0x64, 0x8B, 0x98, 0x72, 0xBE, 0x31, 0x28, 0xF0, 0x48, + 0x2A, 0x65, 0x37, 0xDA, 0xD1, 0x9A, 0x18, 0x37, 0xBB, 0x23, 0x59, 0xB3, + 0x24, 0x75, 0xF7, 0xF5, 0x79, 0x4E, 0xF0, 0xCA, 0x85, 0x13, 0x3C, 0x93, + 0xD0, 0xC6, 0xD9, 0xEA, 0xAE, 0xDF, 0x7E, 0xAC, 0xE4, 0xAB, 0x88, 0x0E, + 0x78, 0x80, 0x1D, 0x26, 0x2A, 0x5C, 0x95, 0x23, 0x6B, 0x70, 0x99, 0x6C, + 0x15, 0xC4, 0x86, 0xC0, 0x29, 0x9D, 0x55, 0xE4, 0xC1, 0x84, 0x37, 0x6B, + 0xA7, 0x26, 0x82, 0xCC, 0x9C, 0xDA, 0xEB, 0x54, 0x17, 0x67, 0xD3, 0x74, + 0x4B, 0x4F, 0x7C, 0x63, 0x4D, 0xE7, 0xE4, 0x93, 0x34, 0xDB, 0xDE, 0x9D, + 0x17, 0x28, 0x06, 0xEA, 0x09, 0x2A, 0x63, 0x8D, 0x1A, 0x32, 0xD8, 0xC9, + 0x66, 0xE2, 0x77, 0xE6, 0x19, 0x59, 0x44, 0x13, 0x2A, 0x7E, 0x4E, 0xF4, + 0x5A, 0xC7, 0xBB, 0x43, 0xDC, 0xC8, 0x6A, 0x56, 0x5D, 0x2F, 0x55, 0xFD, + 0x7E, 0x5A, 0x37, 0x1F, 0x99, 0xE3, 0xF8, 0xEC, 0x50, 0x0B, 0xE3, 0x94, + 0xC4, 0xF5, 0xCD, 0xC1, 0x03, 0x96, 0x76, 0xB3, 0x34, 0x01, 0xF9, 0x5C, + 0xE6, 0xC9, 0x99, 0x40, 0xB7, 0xCD, 0x5C, 0xF8, 0xE6, 0xF7, 0x3F, 0x7B, + 0x13, 0x19, 0x22, 0x02, 0xEF, 0x59, 0x45, 0x48, 0x61, 0x2B, 0xED, 0xCD, + 0xB5, 0x90, 0x2C, 0xD0, 0x49, 0xB4, 0x39, 0x76, 0x51, 0xBE, 0x51, 0xD7, + 0x3D, 0xD7, 0xDD, 0x55, 0x98, 0xC5, 0x0F, 0xBD, 0xF6, 0xE0, 0x96, 0xAA, + 0xB8, 0x19, 0x97, 0x7F, 0x35, 0x2C, 0x50, 0x69, 0xE8, 0xEE, 0x6A, 0x2F, + 0x00, 0x18, 0x65, 0x1B, 0xD6, 0xB8, 0x2A, 0xC3, 0x0A, 0x37, 0xEA, 0x7E, + 0x95, 0x8B, 0x60, 0xA5, 0x2E, 0xC0, 0x55, 0x24, 0x3B, 0x3D, 0xB1, 0x40, + 0x22, 0x8A, 0x56, 0xAB, 0x04, 0x6B, 0x31, 0x0E, 0xB6, 0xD7, 0x17, 0xF1, + 0xEA, 0x9B, 0x91, 0x0E, 0xEE, 0xCE, 0x0A, 0xFE, 0x37, 0x46, 0xAC, 0x15, + 0xF9, 0x60, 0xFF, 0x73, 0x54, 0xC9, 0xE1, 0x8C, 0x42, 0xFA, 0x39, 0x51, + 0xD4, 0x77, 0xAC, 0x62, 0xF3, 0x15, 0x8D, 0xC5, 0xEC, 0x46, 0x75, 0x97, + 0x50, 0xED, 0x10, 0xF5, 0xC7, 0x81, 0xEC, 0x1D, 0x7C, 0x40, 0x7B, 0x9F, + 0x4F, 0x37, 0xA4, 0xED, 0x3C, 0x35, 0x68, 0xDB, 0xDB, 0x7F, 0xF2, 0xF3, + 0xDC, 0x39, 0xA0, 0x40, 0xE8, 0x17, 0x9C, 0xD8, 0x26, 0x92, 0xF2, 0x57, + 0x5E, 0xE7, 0x56, 0xDA, 0x4F, 0x3F, 0x4C, 0xF4, 0x90, 0x4A, 0x89, 0x33, + 0x49, 0xBB, 0x99, 0xE9, 0xCA, 0x6F, 0x5F, 0x51, 0xAE, 0xFF, 0x83, 0x90, + 0x83, 0x53, 0xFF, 0x00, 0x7F, 0x2F, 0x84, 0xD7, 0xD8, 0xE8, 0xB1, 0xAB, + 0xF9, 0x56, 0x65, 0x93, 0xA7, 0xC2, 0xB4, 0xD7, 0x6B, 0xB4, 0xCF, 0x65, + 0xC8, 0xCA, 0x20, 0x15, 0x91, 0x74, 0x30, 0x4D, 0x72, 0x5B, 0xBD, 0x70, + 0xC5, 0x8B, 0xD3, 0xC7, 0xD4, 0x7B, 0xFB, 0xDF, 0x6B, 0x7B, 0x19, 0x6B, + 0x8B, 0x83, 0x47, 0x83, 0xC6, 0x44, 0xBA, 0xA8, 0xEA, 0xB8, 0x38, 0x67, + 0x6B, 0x58, 0xF3, 0x4E, 0xC8, 0xA8, 0xF4, 0xDD, 0x30, 0xDD, 0x59, 0x4D, + 0x55, 0x27, 0x1E, 0x14, 0x3A, 0x71, 0xD5, 0xFD, 0x59, 0x0B, 0xC2, 0x17, + 0x2F, 0x08, 0x53, 0x27, 0x07, 0xEE, 0xA0, 0xC6, 0xE9, 0xF8, 0x31, 0xDD, + 0x97, 0xC4, 0xAD, 0xC1, 0x9A, 0x60, 0x5C, 0xE4, 0x27, 0x0A, 0x03, 0x35, + 0x10, 0x9C, 0xE8, 0x70, 0xE3, 0xF3, 0xD8, 0xE6, 0x72, 0xA5, 0x31, 0xC6, + 0xFE, 0x46, 0xA8, 0x46, 0x6E, 0x74, 0x90, 0xD6, 0x8F, 0x27, 0x3C, 0x39, + 0x24, 0x5E, 0x31, 0x3C, 0xCC, 0x9A, 0xDD, 0xFE, 0xE9, 0xDA, 0x84, 0xE8, + 0xA1, 0xCC, 0x4B, 0xE1, 0x1B, 0xAA, 0x7D, 0xF6, 0x7C, 0xA8, 0x4C, 0xD5, + 0xFC, 0x3C, 0x4C, 0xFC, 0x62, 0x32, 0xAE, 0x5D, 0xBA, 0x65, 0xDC, 0xC3, + 0x1D, 0x8C, 0x9D, 0x0E, 0x2A, 0x46, 0x64, 0x8D, 0xCD, 0x6E, 0xBC, 0x86, + 0x16, 0x15, 0xA2, 0x26, 0xD1, 0x3E, 0x5F, 0x0A, 0x81, 0x86, 0x0F, 0xE8, + 0xA1, 0x28, 0xA3, 0x5F, 0xFF, 0xE4, 0x68, 0x2C, 0xE6, 0x30, 0x16, 0xB8, + 0x2E, 0xCD, 0x41, 0x52, 0xE3, 0x81, 0xFB, 0x1D, 0x1C, 0xA2, 0x17, 0xC3, + 0xF1, 0x24, 0x02, 0x94, 0xB9, 0x59, 0xEC, 0x4A, 0x6D, 0xE3, 0x27, 0x18, + 0x2C, 0xDA, 0x75, 0x17, 0x42, 0xAA, 0xF7, 0x61, 0x50, 0x29, 0x8C, 0x0A, + 0xCA, 0x8E, 0xCA, 0x59, 0x82, 0x1F, 0x1D, 0x0B, 0x00, 0x36, 0xE4, 0x78, + 0x25, 0x01, 0xF7, 0xFB, 0x0E, 0x65, 0x4E, 0x07, 0x5E, 0xD8, 0x23, 0xC6, + 0x49, 0x76, 0x06, 0x0B, 0xA5, 0xC2, 0x30, 0x55, 0x82, 0xF6, 0x60, 0x69, + 0xAE, 0x1B, 0x37, 0xC1, 0x02, 0xE8, 0x23, 0x9B, 0x15, 0x70, 0x7B, 0xF8, + 0xF9, 0x5E, 0x50, 0x69, 0x2F, 0x28, 0x7E, 0xDB, 0x35, 0x2F, 0x6C, 0x87, + 0xCC, 0xFD, 0x23, 0x1A, 0x3B, 0x32, 0x9C, 0xFC, 0xE2, 0x6A, 0x24, 0x2A, + 0x0C, 0x5E, 0x4D, 0x19, 0x7E, 0xDA, 0xCA, 0x95, 0x61, 0xE1, 0xC6, 0x60, + 0x4E, 0x62, 0xCB, 0x6A, 0x09, 0x83, 0x02, 0xEF, 0xC8, 0x7E, 0x36, 0x79, + 0x14, 0x24, 0x35, 0x01, 0xCF, 0xCB, 0x95, 0xF5, 0x08, 0x5E, 0x0A, 0x46, + 0xD2, 0x5B, 0x46, 0x43, 0x54, 0x3B, 0x4F, 0x96, 0xD5, 0x53, 0x81, 0x8D, + 0x0E, 0xDE, 0x7A, 0x94, 0xB8, 0x09, 0x11, 0x47, 0x8F, 0x38, 0xFE, 0x47, + 0x00, 0xFA, 0x76, 0x73, 0x96, 0xDA, 0x1C, 0x55, 0xE9, 0x9E, 0x73, 0x1E, + 0x75, 0xCF, 0x7A, 0x4D, 0xB0, 0x44, 0x6E, 0x2A, 0x6D, 0x98, 0x2B, 0x39, + 0xDC, 0xBA, 0x17, 0x50, 0x06, 0xEA, 0xA6, 0x62, 0x33, 0xD9, 0xD2, 0x66, + 0x78, 0x05, 0xE5, 0x52, 0x2B, 0x9F, 0x34, 0xAE, 0xDF, 0xE9, 0x9D, 0x44, + 0xBA, 0x93, 0xD8, 0x29, 0x02, 0xC6, 0xED, 0x5A, 0x59, 0x0A, 0xD0, 0xD9, + 0x6D, 0xBE, 0x97, 0x25, 0x5E, 0xDA, 0x95, 0x44, 0xCE, 0x73, 0xFD, 0xE5, + 0x98, 0xFD, 0x75, 0x38, 0x88, 0x1E, 0x42, 0x2A, 0x3F, 0x65, 0x96, 0x7C, + 0xF1, 0x86, 0x51, 0xBE, 0x51, 0xB1, 0x1E, 0xD1, 0x76, 0x64, 0x08, 0x85, + 0x49, 0xD7, 0xDD, 0xDD, 0xD4, 0xFA, 0xFE, 0xCA, 0x67, 0xDB, 0x36, 0x90, + 0x07, 0xEB, 0x86, 0xF6, 0x07, 0x7A, 0x21, 0xDB, 0xEE, 0x57, 0x24, 0x55, + 0x87, 0x2C, 0xD2, 0xA4, 0xEE, 0x45, 0x51, 0xE8, 0x05, 0xD1, 0x24, 0x08, + 0xD0, 0x3B, 0x7D, 0xCA, 0x0E, 0x5D, 0x03, 0x57, 0x44, 0xF7, 0x76, 0x0A, + 0xCD, 0x20, 0x9B, 0x93, 0xE0, 0x7D, 0x86, 0x3E, 0x48, 0x8D, 0xF0, 0x4C, + 0x28, 0x32, 0x77, 0xD8, 0xA3, 0x48, 0xA0, 0x93, 0x36, 0x05, 0xA0, 0x19, + 0xF2, 0x98, 0x6C, 0x17, 0x5E, 0x2C, 0x5E, 0xE4, 0xAD, 0x36, 0x96, 0x10, + 0x1B, 0xE5, 0xB7, 0x6B, 0x84, 0x0C, 0xED, 0xE3, 0xDC, 0x4B, 0xA4, 0xE7, + 0x0A, 0xDA, 0xD4, 0xE7, 0xD9, 0x1E, 0xEE, 0xF9, 0xD5, 0x06, 0xAF, 0x3F, + 0x51, 0x1D, 0x98, 0x42, 0x77, 0x11, 0x02, 0x57, 0x10, 0x3C, 0x5C, 0x98, + 0xDA, 0x7D, 0x64, 0x6B, 0xEC, 0x6B, 0x51, 0xFB, 0x77, 0x31, 0x79, 0xCE, + 0x9C, 0x58, 0x03, 0xEA, 0x2A, 0xDF, 0x92, 0x5D, 0xED, 0x0F, 0x20, 0xCC, + 0x0A, 0x70, 0x42, 0x94, 0x37, 0xFA, 0xDF, 0xA1, 0xAF, 0x70, 0x1B, 0x0E, + 0x80, 0x5B, 0x3E, 0xA9, 0xBF, 0x0F, 0x2B, 0x5D, 0xD8, 0x2F, 0xEF, 0xF9, + 0xF3, 0x53, 0xC5, 0xE7, 0x93, 0x87, 0x49, 0x54, 0xE4, 0x48, 0x74, 0xD2, + 0xDC, 0x2A, 0x9A, 0xE2, 0x18, 0x61, 0xD7, 0xAC, 0x4C, 0x1A, 0x2E, 0x72, + 0x83, 0x8D, 0xDA, 0xCE, 0x16, 0xD1, 0x3F, 0x90, 0x62, 0xCA, 0xA7, 0x06, + 0x22, 0x66, 0xF3, 0x67, 0xB0, 0xA3, 0xD4, 0xDD, 0xB1, 0xA4, 0xF3, 0x22, + 0xB3, 0x02, 0x4D, 0xD4, 0x2C, 0x84, 0xF5, 0x75, 0x87, 0x7D, 0x56, 0x04, + 0xC1, 0xC1, 0x62, 0x12, 0x59, 0xCF, 0x04, 0xA4, 0x20, 0x1F, 0xF5, 0xC5, + 0x8D, 0xB6, 0x88, 0x54, 0x61, 0xF3, 0x5A, 0x88, 0x3F, 0x6E, 0x5C, 0xE9, + 0x8B, 0x81, 0x56, 0xE6, 0x10, 0xC7, 0xED, 0x5F, 0x03, 0x67, 0x3E, 0x2E, + 0xBD, 0x6A, 0xC3, 0x4D, 0x33, 0xB7, 0xD4, 0x87, 0x46, 0x0B, 0x27, 0x86, + 0xFC, 0x65, 0x6F, 0xDF, 0x5A, 0x3D, 0x77, 0x49, 0x5A, 0xFB, 0x3A, 0x81, + 0xCE, 0xA1, 0xAC, 0x02, 0x18, 0x7E, 0x5B, 0x58, 0x75, 0xFB, 0x64, 0x7C, + 0xAA, 0x50, 0xE6, 0xE6, 0xA2, 0x7E, 0xFC, 0xC7, 0x67, 0x25, 0x5D, 0xE5, + 0x24, 0x28, 0x1F, 0x3B, 0xE6, 0x31, 0x6D, 0x43, 0x93, 0xD3, 0xC4, 0xB4, + 0x6F, 0x89, 0x02, 0x9B, 0x54, 0xC7, 0x6B, 0x97, 0xD3, 0x85, 0x06, 0xE1, + 0x4E, 0x15, 0xD2, 0xE8, 0xF3, 0x94, 0x37, 0x40, 0x30, 0x2C, 0xA0, 0x25, + 0x77, 0xA8, 0xC0, 0x23, 0x3F, 0x5F, 0x55, 0x71, 0x21, 0xD3, 0x33, 0x0B, + 0x7A, 0x2F, 0xDF, 0xB9, 0x39, 0x0D, 0xAE, 0x65, 0xCF, 0x53, 0x9C, 0x82, + 0xA2, 0xE5, 0x40, 0xF9, 0xF6, 0xDF, 0xBA, 0x33, 0x96, 0xF3, 0x55, 0x25, + 0x35, 0x9E, 0x5F, 0x9B, 0x25, 0x39, 0x94, 0x2F, 0x03, 0xA6, 0x28, 0xB0, + 0x6A, 0xFF, 0xFA, 0x14, 0xD6, 0xE7, 0x02, 0x07, 0x8F, 0x1A, 0xC4, 0xF0, + 0x51, 0x34, 0x3D, 0xD3, 0xDF, 0xCB, 0x57, 0xC3, 0xF5, 0x04, 0xE2, 0x4C, + 0x58, 0x18, 0xA5, 0xE2, 0x39, 0xB4, 0xA3, 0xE2, 0xE6, 0x25, 0xC5, 0xAC, + 0xFD, 0x75, 0xB2, 0x2B, 0x5B, 0x93, 0xC5, 0xFF, 0x56, 0xDB, 0xAA, 0x6E, + 0xCC, 0x18, 0x98, 0x90, 0x8A, 0x2C, 0x85, 0x84, 0xE7, 0xCF, 0xB0, 0xC5, + 0x18, 0x1F, 0x59, 0xC7, 0xA4, 0xCE, 0xAD, 0xB2, 0x04, 0x41, 0xBD, 0x56, + 0xD3, 0x12, 0xD5, 0x0A, 0x19, 0x83, 0x6D, 0xED, 0x87, 0xB0, 0xAB, 0xAE, + 0x8F, 0x79, 0xE5, 0x51, 0x30, 0xE9, 0x90, 0xBB, 0x91, 0x38, 0x2A, 0x17, + 0xDE, 0x3F, 0x53, 0x54, 0x34, 0x1E, 0x3F, 0x20, 0xE1, 0xA5, 0x17, 0xD5, + 0xCD, 0x64, 0x62, 0x1C, 0x60, 0xD2, 0xFC, 0xC1, 0x86, 0xA1, 0x55, 0x62, + 0x29, 0x58, 0x33, 0xD6, 0x1D, 0x3F, 0xD2, 0x70, 0xD6, 0x79, 0x09, 0x35, + 0x23, 0x6B, 0xEA, 0x8E, 0x80, 0xEB, 0x43, 0xAF, 0xBF, 0x86, 0xE8, 0xD6, + 0xBB, 0x1F, 0x75, 0x7A, 0x43, 0xAC, 0xC7, 0x84, 0x85, 0xAD, 0xE1, 0x72, + 0x4A, 0xF8, 0x97, 0xBE, 0xC6, 0x11, 0xCD, 0xAD, 0x99, 0xAE, 0xD4, 0x78, + 0x4F, 0xFA, 0x76, 0x5F, 0x95, 0xEF, 0x0E, 0x0C, 0x86, 0x2F, 0x45, 0x6F, + 0xB0, 0xED, 0x35, 0x87, 0x55, 0x79, 0x0B, 0x39, 0x0E, 0x13, 0x4A, 0x67, + 0x9A, 0xC5, 0x27, 0xC7, 0x5C, 0x99, 0x84, 0x75, 0xE6, 0xD1, 0x66, 0x2F, + 0x2F, 0x47, 0xA9, 0xE6, 0xDD, 0x9C, 0xCF, 0x10, 0x64, 0x33, 0xDE, 0xBB, + 0x35, 0x54, 0x9F, 0xBB, 0x40, 0x1B, 0xF1, 0x53, 0x48, 0xA1, 0x68, 0x42, + 0x39, 0x92, 0x52, 0xAE, 0xAC, 0xA5, 0x6E, 0xA4, 0x09, 0x96, 0x1A, 0xE8, + 0x88, 0x59, 0x38, 0xF3, 0xCA, 0x72, 0x52, 0xCC, 0xB0, 0x4F, 0x2B, 0x86, + 0xA9, 0xA9, 0x7D, 0xBF, 0x6F, 0x6A, 0x07, 0x89, 0x52, 0x99, 0xF8, 0x06, + 0xE5, 0x28, 0xC5, 0x74, 0xEC, 0x81, 0xE1, 0xE8, 0x25, 0x66, 0xD7, 0x7F, + 0xEA, 0x51, 0x56, 0xF7, 0xA8, 0x06, 0x44, 0xE9, 0xE0, 0x2F, 0x33, 0x19, + 0x4A, 0xD1, 0xCD, 0x92, 0x19, 0x2A, 0x1F, 0x03, 0x07, 0xD1, 0x46, 0x05, + 0x0D, 0x64, 0x23, 0xEC, 0x4D, 0x4E, 0x03, 0x2A, 0xED, 0xA5, 0xF4, 0x9F, + 0xC3, 0x93, 0xAB, 0xA3, 0xE2, 0x8C, 0x3F, 0xC4, 0xA5, 0xE1, 0x47, 0x0D, + 0x1A, 0x37, 0x52, 0x9D, 0x45, 0x96, 0xE2, 0x4D, 0x7F, 0xFD, 0x06, 0x28, + 0xE3, 0xEE, 0xE4, 0x57, 0x5D, 0x7B, 0x72, 0xA7, 0x8A, 0xCE, 0x77, 0x26, + 0xCF, 0x98, 0x06, 0x31, 0xB7, 0x28, 0x73, 0x1D, 0xA3, 0x4F, 0xB5, 0x01, + 0xE5, 0x4C, 0x14, 0xAD, 0xDB, 0x3F, 0xE6, 0xD1, 0xDA, 0xF7, 0x58, 0xBC, + 0x54, 0x76, 0x9E, 0x99, 0xD4, 0xFC, 0x7F, 0xE9, 0x6D, 0xF9, 0xAE, 0xC2, + 0x7B, 0x45, 0x32, 0x7D, 0x29, 0x22, 0xB2, 0xF3, 0x7D, 0x08, 0x37, 0x49, + 0x0C, 0xB7, 0xC4, 0x0E, 0xE7, 0x6C, 0x1E, 0xA7, 0xBE, 0x75, 0x4E, 0x4C, + 0x1A, 0xBD, 0x2F, 0xC6, 0x70, 0xD7, 0x38, 0xAE, 0x61, 0x3C, 0x01, 0xEB, + 0x07, 0x25, 0xEA, 0x45, 0x21, 0x06, 0x99, 0xBF, 0xD0, 0xAC, 0xD1, 0xDB, + 0x69, 0xF4, 0x64, 0x9F, 0xEB, 0xB3, 0xCF, 0xD8, 0xB1, 0x90, 0xAA, 0xAF, + 0x80, 0x50, 0xA0, 0x92, 0xBA, 0x7E, 0xA2, 0x7B, 0x2D, 0x13, 0x7E, 0x9F, + 0x4F, 0xFD, 0x0F, 0x40, 0xEC, 0x2D, 0x0E, 0x85, 0xB7, 0xDA, 0x01, 0x64, + 0x95, 0x95, 0x66, 0x91, 0x15, 0x3F, 0x09, 0x77, 0xAC, 0xBF, 0x0D, 0x6F, + 0x7C, 0xC1, 0xB7, 0x5F, 0xBD, 0xDA, 0xE9, 0xF7, 0xCC, 0x83, 0x17, 0x3B, + 0x14, 0x20, 0x81, 0xE5, 0x9A, 0xA5, 0x4A, 0x40, 0xD7, 0x4A, 0x7A, 0x94, + 0xE1, 0x6F, 0x3B, 0x27, 0xEA, 0x13, 0x7E, 0x5E, 0xE7, 0x4D, 0x96, 0xF1, + 0x47, 0x8F, 0xD4, 0x79, 0x3D, 0x98, 0xD7, 0xCD, 0x3C, 0x35, 0x3A, 0x3F, + 0x54, 0x3A, 0x48, 0x73, 0x66, 0xC3, 0xFD, 0x11, 0x87, 0x76, 0x0C, 0xF0, + 0xC5, 0x08, 0x97, 0xA6, 0xC5, 0x88, 0x3F, 0x4F, 0xC7, 0x32, 0x72, 0x5C, + 0xD4, 0x17, 0x8D, 0x45, 0x91, 0x62, 0xB2, 0xC3, 0x4A, 0xA4, 0x58, 0x88, + 0x5C, 0x9C, 0xB5, 0x72, 0xFE, 0xE9, 0xB7, 0x73, 0x55, 0x7B, 0xD5, 0x91, + 0x66, 0x02, 0x4C, 0xF7, 0x11, 0x77, 0x9D, 0x68, 0x4E, 0x1A, 0xC5, 0x6B, + 0xB9, 0x0A, 0xC3, 0x7F, 0xB0, 0x48, 0x87, 0xC4, 0xC9, 0x29, 0x73, 0x1A, + 0x25, 0xDA, 0x46, 0x3E, 0x10, 0x02, 0x9A, 0xCE, 0x23, 0xD9, 0x77, 0xC6, + 0x0D, 0xA3, 0xD5, 0xF8, 0x6B, 0xE2, 0x10, 0x90, 0x01, 0xE7, 0xF7, 0xAF, + 0x35, 0x59, 0x8D, 0x1D, 0xA7, 0x3B, 0xD2, 0x5A, 0x33, 0x33, 0xAF, 0xB0, + 0xAC, 0xD1, 0x2A, 0x43, 0x79, 0x13, 0x5C, 0x2A, 0x55, 0x37, 0x52, 0xA1, + 0x69, 0x17, 0x7F, 0xE9, 0x7C, 0xD7, 0x6D, 0x43, 0x57, 0xC3, 0x1B, 0x2E, + 0x5D, 0xA0, 0x5B, 0x3D, 0x75, 0x4E, 0xF4, 0xA1, 0x24, 0xDE, 0x50, 0x18, + 0x90, 0xB9, 0x89, 0xF1, 0x47, 0x4C, 0x61, 0xDB, 0xD8, 0xF0, 0x66, 0xD6, + 0x1F, 0xB3, 0x9F, 0x91, 0x4D, 0x91, 0xFD, 0x6E, 0xB9, 0x4B, 0x47, 0xC9, + 0xF6, 0x48, 0x07, 0xFB, 0xC6, 0x64, 0x48, 0x33, 0x5F, 0x92, 0x19, 0x22, + 0xB7, 0x69, 0xE2, 0x9D, 0x69, 0x02, 0xE7, 0x47, 0x97, 0xAC, 0x52, 0xAA, + 0xB6, 0x50, 0xC7, 0x9B, 0x16, 0x29, 0x15, 0x1F, 0x12, 0x46, 0xE0, 0xC0, + 0x3F, 0xA9, 0xB0, 0x30, 0x47, 0xE7, 0x6F, 0x73, 0x62, 0xB0, 0xD6, 0x50, + 0x20, 0x40, 0x47, 0x4C, 0x5D, 0x5C, 0xA1, 0xBA, 0x05, 0x8E, 0x06, 0x22, + 0xEA, 0xDF, 0x4C, 0x52, 0xFE, 0x21, 0x72, 0x6B, 0xD4, 0xB1, 0xEF, 0x38, + 0x74, 0xF5, 0xB3, 0x4D, 0x38, 0x91, 0x5F, 0x21, 0x74, 0x4B, 0x18, 0x27, + 0xBD, 0x70, 0x4A, 0x6A, 0xBD, 0x62, 0x2A, 0xEE, 0xCE, 0xAE, 0x6B, 0x23, + 0xA2, 0x97, 0x7E, 0x06, 0x24, 0xAE, 0x09, 0xD6, 0xC3, 0xEE, 0x10, 0x6D, + 0x8D, 0x04, 0xF2, 0xAE, 0x09, 0x10, 0xB0, 0x54, 0xD0, 0x1C, 0x84, 0x55, + 0xCF, 0xED, 0xFD, 0xB8, 0xDE, 0xF5, 0xA4, 0x5B, 0xFA, 0x7D, 0x7C, 0xAC, + 0xC0, 0x85, 0x48, 0xB2, 0x05, 0x45, 0x05, 0x36, 0xDD, 0x9A, 0xD9, 0x43, + 0x75, 0x94, 0xAF, 0xD5, 0xDF, 0x70, 0xE4, 0x7D, 0x37, 0x49, 0x0E, 0xE6, + 0xD1, 0xC2, 0x1A, 0xBD, 0xCD, 0xC6, 0xD8, 0xC5, 0xAA, 0xD8, 0x90, 0x6E, + 0xD7, 0x5D, 0xA4, 0x6B, 0x19, 0xB1, 0x7A, 0x18, 0xF1, 0x29, 0x4D, 0x20, + 0xF7, 0x7A, 0x7F, 0x7C, 0xE6, 0x8A, 0x54, 0x05, 0xB7, 0xA0, 0xD9, 0x32, + 0xDB, 0x53, 0xF6, 0x48, 0x65, 0x89, 0x86, 0x5B, 0x85, 0x7F, 0x11, 0x61, + 0x0A, 0x99, 0xBE, 0x01, 0x56, 0xA3, 0xA7, 0x3A, 0xE6, 0xAB, 0xDF, 0x6B, + 0xB4, 0x11, 0x24, 0xFC, 0x36, 0x30, 0x8C, 0x85, 0x06, 0xFB, 0x0C, 0xB9, + 0xB2, 0x50, 0x51, 0xF8, 0xDD, 0x3B, 0xB3, 0xC7, 0x4E, 0x7A, 0x4A, 0x8E, + 0x42, 0x01, 0xCB, 0xA9, 0xE5, 0x21, 0xD5, 0xDF, 0x8E, 0x59, 0x53, 0x82, + 0xA8, 0xA0, 0x25, 0x9F, 0xCE, 0x99, 0x17, 0x9F, 0xC6, 0xD7, 0xDB, 0x67, + 0xA7, 0x72, 0xC8, 0x22, 0x43, 0x32, 0x8E, 0x75, 0xE7, 0x29, 0xAC, 0x7A, + 0x0A, 0x95, 0xC3, 0x32, 0xA9, 0x56, 0xE6, 0xD7, 0xFE, 0x29, 0xC1, 0x5C, + 0x02, 0xB6, 0xD7, 0x16, 0x06, 0xC7, 0x86, 0x33, 0x68, 0x41, 0x64, 0xAE, + 0x1D, 0xD6, 0xEC, 0x9F, 0x4D, 0x2A, 0x79, 0x01, 0xDB, 0x48, 0x52, 0xB7, + 0x62, 0x36, 0x2B, 0x47, 0x2C, 0x0C, 0x9F, 0x10, 0xB0, 0x16, 0x34, 0x13, + 0xAA, 0xF8, 0x18, 0xC5, 0xAA, 0xAF, 0x57, 0x03, 0xC9, 0x48, 0xE4, 0x75, + 0x94, 0xCB, 0xDA, 0xC2, 0xDF, 0xDE, 0x92, 0x23, 0x1E, 0x07, 0xF8, 0x04, + 0xFC, 0x90, 0x34, 0xCE, 0xC3, 0x9C, 0x87, 0xBF, 0xA6, 0x45, 0x1B, 0xFC, + 0x73, 0x2B, 0xF8, 0x4E, 0x96, 0x82, 0xDA, 0xE8, 0x98, 0x87, 0x0D, 0x37, + 0xCD, 0xD1, 0x3E, 0x31, 0x15, 0x72, 0x87, 0x3B, 0x67, 0xAF, 0x5D, 0x0B, + 0x88, 0xFF, 0x44, 0xC1, 0xAB, 0xD1, 0x1E, 0x5F, 0xE6, 0x8B, 0xAD, 0x0F, + 0x95, 0xFC, 0x9F, 0x8F, 0x91, 0xED, 0x36, 0xE2, 0xD6, 0x2E, 0xC3, 0x2D, + 0x9E, 0x80, 0x6A, 0x78, 0x4A, 0xCA, 0x04, 0xCD, 0x64, 0x73, 0x7A, 0x81, + 0x2D, 0x45, 0x53, 0xC8, 0xED, 0x68, 0x74, 0x36, 0x85, 0x83, 0xD9, 0x6F, + 0x8C, 0xAF, 0xEC, 0xE5, 0xC1, 0xF1, 0x65, 0x0C, 0x45, 0xB4, 0xE7, 0xD1, + 0xF8, 0x3C, 0xAA, 0xF3, 0x1E, 0xC7, 0x99, 0x78, 0x13, 0xC9, 0x55, 0x2B, + 0xA8, 0x5C, 0x24, 0xE2, 0xDF, 0x43, 0x46, 0x09, 0xAD, 0xAB, 0x1D, 0xED, + 0xAA, 0xE0, 0xE6, 0x09, 0xE2, 0x52, 0xE0, 0x5E, 0x78, 0xF8, 0x26, 0x88, + 0x66, 0xB9, 0x98, 0x68, 0x52, 0x7A, 0xB4, 0xDF, 0x34, 0xAA, 0xF6, 0x1A, + 0x4C, 0x3D, 0x36, 0x8D, 0xB7, 0x05, 0x5B, 0x0B, 0x00, 0xF8, 0x3B, 0xDD, + 0x95, 0xB7, 0x47, 0x3A, 0xB0, 0x5A, 0x0A, 0xA8, 0x85, 0x17, 0xCB, 0x4E, + 0x92, 0x47, 0x72, 0x92, 0x73, 0x6A, 0xAB, 0xB5, 0x7D, 0x99, 0xBC, 0x8B, + 0xAC, 0x1B, 0xE8, 0x1A, 0xE6, 0x32, 0x11, 0x79, 0x2C, 0x6B, 0x88, 0x56, + 0x70, 0x41, 0xED, 0xC3, 0x7E, 0x0A, 0xA8, 0xDF, 0xCA, 0xA8, 0xD4, 0x3E, + 0x1A, 0xE0, 0x9E, 0x6D, 0x7C, 0xBD, 0x32, 0xB1, 0x7F, 0x7D, 0x32, 0x18, + 0x4D, 0x18, 0x5E, 0xF3, 0x19, 0x30, 0xCA, 0x8C, 0x66, 0xB5, 0x77, 0x57, + 0x5B, 0x98, 0x8F, 0x6D, 0x6B, 0x2D, 0x8D, 0xC4, 0x0B, 0x76, 0xE0, 0x37, + 0x42, 0x02, 0xC4, 0x61, 0xFE, 0x43, 0x5F, 0x41, 0xA7, 0x40, 0x64, 0x45, + 0xD6, 0x09, 0x99, 0x3F, 0x95, 0x73, 0x0D, 0x9F, 0xC4, 0xBE, 0x22, 0x2A, + 0xE5, 0x4C, 0xAD, 0x32, 0xC2, 0xF3, 0x49, 0xC4, 0xCF, 0x9C, 0xD1, 0x63, + 0x3E, 0xBA, 0xD3, 0x9B, 0x24, 0x2F, 0x52, 0xF3, 0xBA, 0x21, 0x2E, 0xEC, + 0xDF, 0x8D, 0xAD, 0x3F, 0xF3, 0xE1, 0x23, 0x8C, 0x0D, 0x76, 0xDD, 0xCB, + 0x36, 0xB9, 0x7A, 0x13, 0x78, 0xB2, 0x6D, 0xDB, 0x16, 0xAD, 0x2A, 0x94, + 0xAC, 0xF9, 0x86, 0x8B, 0x2D, 0x75, 0x33, 0x86, 0x43, 0x18, 0xCF, 0x65, + 0x4F, 0x08, 0x22, 0x88, 0x6E, 0x38, 0xBF, 0xF7, 0x12, 0x3F, 0x8A, 0xC3, + 0x49, 0xA0, 0xC6, 0x03, 0xAB, 0x1C, 0xD5, 0x3D, 0xA2, 0x43, 0xFF, 0x93, + 0xD4, 0x80, 0xDA, 0xDC, 0x77, 0x6D, 0xF8, 0xE1, 0xD3, 0x88, 0xA4, 0xCF, + 0x82, 0xE0, 0x08, 0xB2, 0x6E, 0x98, 0xBA, 0x6C, 0x0A, 0x84, 0xA0, 0x94, + 0x51, 0xFE, 0x17, 0x96, 0xF1, 0xBC, 0xD0, 0xFB, 0x6B, 0x50, 0x13, 0xA6, + 0x8E, 0x42, 0xFA, 0x01, 0x8C, 0xF4, 0x04, 0x02, 0xB1, 0xA8, 0x53, 0x5D, + 0x9B, 0x15, 0x48, 0xC3, 0x81, 0xCB, 0xAF, 0x4B, 0x4E, 0x61, 0xB6, 0x86, + 0x5C, 0xB1, 0x83, 0x44, 0x5C, 0xB9, 0x3F, 0x31, 0x84, 0xEF, 0x75, 0x20, + 0x66, 0x4C, 0x77, 0x66, 0x73, 0x04, 0x45, 0xB8, 0xE7, 0xBD, 0x14, 0xF9, + 0x93, 0xC7, 0x17, 0x60, 0xE5, 0x63, 0xAE, 0x6A, 0xD6, 0x99, 0xCD, 0x10, + 0x4F, 0x6B, 0xC1, 0x44, 0x63, 0x37, 0x79, 0x9C, 0x9C, 0xAA, 0xBC, 0x64, + 0x19, 0x61, 0xB5, 0xC1, 0x52, 0x09, 0x6E, 0x6B, 0x6B, 0x90, 0x8B, 0xA6, + 0x23, 0xDC, 0xE4, 0xE1, 0xB4, 0x82, 0x47, 0x11, 0x86, 0x9B, 0x9F, 0xE0, + 0x24, 0xC0, 0x19, 0xAE, 0x7D, 0x9A, 0x8C, 0x49, 0x6C, 0x42, 0x6D, 0x4E, + 0x1F, 0xC7, 0x66, 0x20, 0x19, 0xCA, 0xA0, 0xF0, 0x44, 0x1A, 0x61, 0x1E, + 0x67, 0x58, 0x4B, 0xA4, 0x15, 0x8F, 0x26, 0x2C, 0xAC, 0xE8, 0xBA, 0x1D, + 0x33, 0x77, 0x22, 0x83, 0xBB, 0xE1, 0x18, 0xBD, 0x45, 0x1A, 0xB4, 0x9F, + 0x4F, 0x1F, 0x80, 0xE8, 0x99, 0x14, 0xB2, 0x1C, 0x1E, 0x4E, 0xBB, 0x04, + 0xD6, 0x57, 0x50, 0x6F, 0x79, 0x60, 0xAA, 0xC1, 0xFD, 0x5D, 0xC7, 0x72, + 0xA7, 0xBC, 0xD0, 0x29, 0x29, 0x32, 0xD9, 0xDF, 0x9D, 0xF4, 0xC6, 0xF6, + 0x54, 0x67, 0xF4, 0x16, 0x3C, 0xB7, 0xA9, 0x06, 0x9D, 0xDC, 0xD9, 0x69, + 0x4C, 0xD7, 0xC2, 0x8B, 0xF7, 0x7E, 0xAD, 0x7E, 0xD8, 0xC7, 0x23, 0x90, + 0x1F, 0xD6, 0xC4, 0xD3, 0xBB, 0xD4, 0x57, 0x35, 0xF6, 0xD3, 0x52, 0x32, + 0x18, 0x20, 0xEC, 0x33, 0x97, 0x01, 0xB5, 0x91, 0x7C, 0xCF, 0xB4, 0x6B, + 0x55, 0x0C, 0x5C, 0x73, 0xE9, 0x8D, 0x9E, 0xDD, 0xCF, 0xF8, 0xDF, 0xB8, + 0x21, 0x13, 0x62, 0x2B, 0x66, 0x6E, 0x76, 0x03, 0x04, 0x75, 0xAA, 0x56, + 0xDF, 0x91, 0x5F, 0x26, 0x9B, 0xF9, 0x72, 0x25, 0x81, 0x63, 0x5B, 0xFE, + 0xE4, 0x2A, 0x8E, 0x14, 0x03, 0xFD, 0x8D, 0x23, 0x35, 0x82, 0x64, 0x70, + 0x30, 0x91, 0x3F, 0xBB, 0x19, 0x2C, 0x04, 0x9E, 0x44, 0xDC, 0x79, 0x9A, + 0x7B, 0x69, 0x52, 0x08, 0xC3, 0x9E, 0x2A, 0xB9, 0x02, 0xD4, 0x19, 0xF2, + 0x3A, 0x4A, 0x4C, 0x47, 0x08, 0x38, 0x4B, 0x2E, 0x75, 0xF8, 0x86, 0x7C, + 0x09, 0x72, 0xEC, 0xB2, 0xAC, 0x9C, 0xEC, 0x42, 0x5C, 0x61, 0x7F, 0xD8, + 0x24, 0x05, 0x88, 0x55, 0x3D, 0xB7, 0x79, 0x90, 0x73, 0x7D, 0x0A, 0x10, + 0xF5, 0xB3, 0x5C, 0xC8, 0x8D, 0x5E, 0x59, 0x51, 0xD2, 0xDB, 0x4E, 0x5D, + 0x4B, 0x39, 0x16, 0x14, 0xF2, 0xA2, 0x75, 0x28, 0x66, 0x45, 0xBF, 0x73, + 0x60, 0xD3, 0xFD, 0x53, 0xDA, 0x8D, 0x5C, 0x94, 0x2E, 0x91, 0x14, 0xE2, + 0xAA, 0xEF, 0x93, 0x82, 0x68, 0x0A, 0x69, 0x1F, 0xE2, 0x10, 0x26, 0xEB, + 0x69, 0xD6, 0x35, 0x9B, 0x62, 0x05, 0x97, 0x7D, 0x04, 0x6D, 0x6C, 0x22, + 0x3E, 0x7C, 0xAB, 0x13, 0xC0, 0xEF, 0x4C, 0xE1, 0x96, 0x5B, 0xB7, 0xA3, + 0x80, 0xC2, 0x89, 0x1A, 0x2F, 0x47, 0x0B, 0xD9, 0x76, 0x6C, 0xD3, 0x03, + 0x08, 0xA3, 0x8E, 0x9B, 0xAE, 0xA1, 0x55, 0x73, 0x7B, 0x9F, 0xAE, 0x40, + 0xB6, 0x0C, 0x0A, 0x8A, 0x83, 0x7A, 0x88, 0x6B, 0x3E, 0xD7, 0x98, 0x7F, + 0x43, 0x40, 0x01, 0xE4, 0x3A, 0xFF, 0x26, 0xEC, 0x91, 0x68, 0x71, 0xD8, + 0x84, 0x18, 0xC1, 0xD5, 0xAB, 0xA2, 0xBB, 0xCC, 0xEA, 0x43, 0x79, 0x73, + 0x97, 0x4C, 0x9B, 0x03, 0xD0, 0x10, 0x7C, 0x09, 0x84, 0x32, 0x04, 0x0A, + 0x35, 0xA6, 0x29, 0xAB, 0x6E, 0x26, 0x9A, 0xCF, 0x49, 0x8F, 0x15, 0xC2, + 0xAC, 0x56, 0xD6, 0x82, 0xB9, 0x3C, 0xD2, 0xDD, 0x68, 0xB7, 0x43, 0xBC, + 0xBC, 0xFD, 0xA4, 0xC5, 0xCE, 0x5C, 0xC0, 0xD3, 0x93, 0xD6, 0x40, 0xAF, + 0xDA, 0x23, 0x55, 0x83, 0x3A, 0xE6, 0x6C, 0x64, 0xA0, 0x37, 0xC0, 0x47, + 0xBA, 0xAA, 0x62, 0x79, 0x56, 0x85, 0x55, 0xC1, 0xEA, 0x80, 0xD5, 0x3C, + 0xBB, 0x9F, 0x89, 0xEA, 0x45, 0xFC, 0x59, 0x6C, 0x26, 0xF0, 0x07, 0x72, + 0x31, 0xCC, 0x5F, 0x8F, 0xA5, 0x61, 0x20, 0x16, 0x55, 0x4D, 0x87, 0x72, + 0x13, 0xE6, 0xA9, 0xB3, 0xAF, 0xBD, 0x42, 0x08, 0x39, 0xD5, 0xCF, 0x81, + 0xCA, 0x5E, 0xD0, 0xAB, 0x77, 0xB0, 0x05, 0x7E, 0x73, 0x87, 0xFE, 0xF4, + 0xA7, 0x7F, 0x00, 0xBE, 0xF9, 0x67, 0x83, 0x64, 0x61, 0x19, 0x4F, 0x23, + 0x21, 0xD9, 0x37, 0xB7, 0x54, 0xD3, 0x2F, 0x0C, 0x39, 0xD2, 0xA4, 0x78, + 0xFD, 0x3C, 0x9F, 0x5C, 0xC5, 0x16, 0x55, 0x9B, 0xBB, 0x96, 0x72, 0x13, + 0x1D, 0xCC, 0xAF, 0xB4, 0xC1, 0xEB, 0x7D, 0xF9, 0xA1, 0x37, 0x93, 0x13, + 0xC3, 0xDB, 0x58, 0xF8, 0x7C, 0xFB, 0x2E, 0x91, 0x7B, 0x6D, 0x21, 0xE2, + 0xCE, 0xB1, 0xAF, 0x8A, 0x55, 0x25, 0x5A, 0x08, 0x35, 0xAD, 0xF6, 0x1E, + 0x54, 0x56, 0xB9, 0x52, 0xA8, 0x9F, 0x9F, 0x06, 0x9B, 0x30, 0x7B, 0x5F, + 0x25, 0x13, 0x7C, 0xD4, 0xA7, 0x56, 0xE3, 0x48, 0x55, 0x40, 0xB8, 0x3E, + 0x11, 0x7B, 0x81, 0x89, 0x2E, 0x40, 0x76, 0x1D, 0x4C, 0x30, 0xCF, 0xBE, + 0xA6, 0x66, 0x25, 0x69, 0x9B, 0xE7, 0x85, 0x36, 0x71, 0x45, 0xD4, 0x54, + 0x24, 0x3B, 0x2D, 0x16, 0x9B, 0xD6, 0xE6, 0x91, 0x13, 0x53, 0x6E, 0x56, + 0x21, 0xB6, 0x3C, 0x12, 0x23, 0x20, 0xC9, 0xB7, 0xDD, 0xF1, 0x04, 0x1C, + 0x49, 0x58, 0x44, 0x97, 0x4A, 0x21, 0x36, 0x0C, 0x7D, 0xDE, 0x3F, 0x2F, + 0xE6, 0x8E, 0x05, 0x42, 0x28, 0x2A, 0xA5, 0x0F, 0xF1, 0x31, 0x7B, 0x9A, + 0x1B, 0x36, 0x40, 0x48, 0xC3, 0xC4, 0x59, 0x8F, 0xFF, 0x82, 0x2F, 0xE2, + 0x75, 0xEF, 0x54, 0x39, 0x31, 0xC8, 0x5F, 0xD2, 0xDA, 0x74, 0x50, 0x47, + 0x45, 0x16, 0xC9, 0xF8, 0x2B, 0xAE, 0x07, 0x6B, 0x18, 0xF6, 0x22, 0x1F, + 0xF4, 0x39, 0x6D, 0x13, 0x83, 0x0C, 0xCB, 0xF3, 0x12, 0x1B, 0xB4, 0x27, + 0xB6, 0xB1, 0x67, 0x79, 0x29, 0xD7, 0xAF, 0x00, 0xF1, 0xE4, 0x14, 0xB4, + 0xA1, 0x95, 0x54, 0x47, 0x19, 0x7B, 0xB0, 0xF6, 0x81, 0x42, 0x94, 0xE4, + 0xD3, 0xA3, 0x9D, 0x74, 0xE5, 0x93, 0xEE, 0x02, 0x5A, 0x44, 0x9F, 0x25, + 0xCB, 0xB2, 0x8E, 0xEE, 0xD8, 0xE7, 0x02, 0x5D, 0x83, 0x94, 0x68, 0xDD, + 0xA4, 0x3E, 0x6A, 0x86, 0xE6, 0x2E, 0xFC, 0x1C, 0xC5, 0xAE, 0x91, 0x7D, + 0x34, 0x12, 0xD5, 0x10, 0xD8, 0x4E, 0x34, 0x18, 0x6B, 0x72, 0x0D, 0x8F, + 0x28, 0x17, 0xE2, 0x81, 0xD6, 0xE4, 0x70, 0xBB, 0x20, 0x0C, 0xE9, 0xA9, + 0x65, 0xEC, 0xDC, 0x80, 0x41, 0x13, 0xB4, 0x53, 0x67, 0x1F, 0xF4, 0xB0, + 0xA6, 0x4D, 0xB1, 0x43, 0x29, 0x00, 0xAD, 0x51, 0xE8, 0x4C, 0x6A, 0x62, + 0x8B, 0xB9, 0xEE, 0x05, 0x53, 0xE5, 0xBE, 0xCC, 0xDD, 0x08, 0xA9, 0x89, + 0x84, 0x04, 0xF3, 0xC4, 0xA9, 0x4E, 0x40, 0x18, 0xE4, 0xF8, 0xEC, 0xB0, + 0xF4, 0x7B, 0x69, 0x6D, 0xD1, 0xB3, 0x5F, 0x53, 0x85, 0x14, 0xF5, 0xC9, + 0xBE, 0x9D, 0x8E, 0x7B, 0x9A, 0x8C, 0x77, 0xA2, 0xD6, 0x97, 0xA3, 0x35, + 0x48, 0x47, 0x93, 0x5C, 0x2D, 0xB7, 0xBA, 0x80, 0xC0, 0xB5, 0xD5, 0x24, + 0x40, 0xA8, 0xB6, 0xA6, 0x4E, 0x4C, 0x4C, 0xE8, 0x60, 0xE4, 0xF7, 0xDC, + 0x24, 0xD9, 0x0F, 0x3C, 0xC7, 0x86, 0xC9, 0xEB, 0xEA, 0xD9, 0xDC, 0x12, + 0x50, 0x30, 0xB2, 0x7D, 0x28, 0x2E, 0x9D, 0x7C, 0xC3, 0x72, 0x6D, 0x22, + 0x40, 0x81, 0x1A, 0x5B, 0xED, 0x16, 0xDD, 0x6D, 0x15, 0x83, 0xD1, 0xC6, + 0x35, 0xBD, 0x11, 0x1F, 0x0F, 0x60, 0x89, 0x22, 0xCD, 0x63, 0x39, 0x42, + 0x2B, 0x05, 0xE5, 0x40, 0x89, 0xC3, 0x64, 0xBC, 0xB2, 0x7B, 0x1E, 0xBF, + 0x37, 0x68, 0x0A, 0x82, 0xD8, 0x71, 0x10, 0xE7, 0xD3, 0xEB, 0xF9, 0x24, + 0xBD, 0x5F, 0x62, 0x7F, 0xAA, 0xF0, 0x5B, 0xE5, 0x75, 0xCB, 0x84, 0xA4, + 0x66, 0x78, 0x80, 0xE4, 0xD5, 0x04, 0x02, 0xE4, 0xE6, 0x79, 0x67, 0xC2, + 0x79, 0x92, 0x3C, 0x32, 0x8C, 0xB6, 0x1D, 0x21, 0xDB, 0xB8, 0x91, 0x88, + 0x76, 0xBD, 0x20, 0x30, 0x8A, 0x87, 0x49, 0x7F, 0x54, 0x32, 0x95, 0x3D, + 0x1F, 0x44, 0xDE, 0xA0, 0xE6, 0x4D, 0x00, 0xE9, 0x1F, 0x12, 0x49, 0x2A, + 0x73, 0x58, 0x55, 0xB2, 0x22, 0x36, 0x46, 0x37, 0x6E, 0x89, 0xCF, 0x8E, + 0x17, 0x91, 0x8C, 0xD3, 0xAE, 0x40, 0x75, 0x66, 0xAA, 0xAD, 0x37, 0x77, + 0x00, 0x9B, 0x56, 0x98, 0x52, 0x1F, 0x41, 0x01, 0x60, 0x6A, 0x3D, 0xB1, + 0x07, 0x5F, 0x57, 0x72, 0xE6, 0x69, 0x0B, 0x93, 0xE7, 0x1B, 0xB1, 0x54, + 0x26, 0xB0, 0x52, 0xA1, 0xB1, 0x0A, 0x1A, 0x59, 0xBD, 0xA5, 0x70, 0x98, + 0x21, 0xCD, 0x09, 0x35, 0x1A, 0x29, 0x03, 0x10, 0xAC, 0x40, 0x90, 0x47, + 0xFB, 0xA3, 0x07, 0xB4, 0x43, 0xCC, 0x37, 0x14, 0xC9, 0xA8, 0xD4, 0x5A, + 0xD0, 0x70, 0xF9, 0x85, 0xAC, 0xF3, 0xFA, 0xA5, 0x5A, 0x9A, 0xF1, 0xC3, + 0x54, 0xDC, 0xE1, 0x00, 0x2D, 0xD6, 0xCF, 0x7A, 0x02, 0x87, 0x8B, 0x49, + 0x6C, 0x19, 0xF4, 0x68, 0xDE, 0x5F, 0x11, 0x91, 0xF1, 0x7A, 0xF2, 0x34, + 0xA5, 0xDF, 0x42, 0x01, 0x2E, 0x2F, 0x12, 0x91, 0xA9, 0x5E, 0x23, 0x6E, + 0xFC, 0x1C, 0x96, 0xFA, 0xE8, 0xBB, 0x4A, 0x42, 0x7F, 0xB7, 0xEE, 0x12, + 0x3C, 0x25, 0xDB, 0x7B, 0x95, 0xED, 0xF6, 0xAB, 0xBC, 0x59, 0xE4, 0xF3, + 0x15, 0x71, 0xAB, 0xAB, 0x1B, 0x27, 0x6B, 0x48, 0x44, 0x52, 0xC3, 0xA3, + 0xB0, 0xC1, 0x49, 0xCE, 0x74, 0xD9, 0x9D, 0xC8, 0xAC, 0x71, 0xB5, 0xB9, + 0x1B, 0xA6, 0xD3, 0xF9, 0x84, 0x30, 0xAE, 0x9E, 0x69, 0x31, 0xB8, 0xB4, + 0x64, 0xE8, 0xD9, 0x47, 0xBD, 0x63, 0xB5, 0x25, 0x30, 0x1A, 0xD7, 0xB2, + 0xC0, 0xBD, 0x75, 0x30, 0x55, 0x02, 0x5B, 0xC6, 0xE6, 0x63, 0x69, 0x65, + 0xAF, 0xE7, 0x7B, 0xAB, 0x5D, 0xA6, 0xA5, 0xC4, 0xAF, 0xDE, 0xAC, 0x67, + 0x1E, 0x7F, 0x73, 0x55, 0x2C, 0x33, 0x25, 0x83, 0x24, 0x3F, 0xB0, 0x48, + 0xFC, 0x08, 0xB9, 0x60, 0xBB, 0xFB, 0x3D, 0xFD, 0xA3, 0xF6, 0xF2, 0x1B, + 0x89, 0x82, 0x87, 0xD1, 0x10, 0xE5, 0xBD, 0xEF, 0x16, 0xA7, 0x3F, 0x15, + 0x32, 0x11, 0x50, 0xB9, 0x7D, 0x77, 0x15, 0x0F, 0xBA, 0xFE, 0x76, 0x0A, + 0x4F, 0xF2, 0xA0, 0xFB, 0x2D, 0xF1, 0xCE, 0x5E, 0xE7, 0x50, 0x6A, 0xA0, + 0xB2, 0xB4, 0xEE, 0x2B, 0xD5, 0x3B, 0x03, 0x07, 0xB0, 0x40, 0x4A, 0x26, + 0xF4, 0x3E, 0x1F, 0xC4, 0x58, 0x80, 0x8A, 0x3B, 0x00, 0x52, 0x2B, 0x53, + 0xBF, 0xD4, 0x8F, 0xEE, 0x6D, 0xA4, 0x0D, 0xF7, 0x82, 0xF8, 0x53, 0xDA, + 0xF6, 0x53, 0xAF, 0xF8, 0xD2, 0xD8, 0xFB, 0x1F, 0x2D, 0x98, 0x87, 0xDA, + 0x19, 0xAC, 0x48, 0x6B, 0xEA, 0xDE, 0x08, 0xA6, 0x13, 0x37, 0x1B, 0x2C, + 0x15, 0x60, 0xB2, 0xDB, 0x28, 0x0E, 0x2E, 0xA3, 0x4A, 0xB1, 0xF2, 0x5C, + 0x48, 0x69, 0x46, 0xFA, 0x08, 0x9F, 0xE9, 0x65, 0x2F, 0x3A, 0x29, 0xB0, + 0x88, 0xB5, 0x13, 0x44, 0x41, 0x92, 0x30, 0x74, 0x9C, 0x9C, 0xD8, 0xC8, + 0xB1, 0x59, 0x42, 0x67, 0xAC, 0xC8, 0x0D, 0xFF, 0x8E, 0x52, 0x4C, 0xED, + 0x86, 0xFF, 0x4E, 0x45, 0xBE, 0xC4, 0xAF, 0x32, 0xE4, 0xBC, 0x41, 0xC5, + 0xDC, 0x3F, 0x71, 0x8C, 0x2C, 0xAD, 0x78, 0x7E, 0x79, 0x47, 0xB2, 0x02, + 0xA6, 0x11, 0xDE, 0x0F, 0x5D, 0xAD, 0xFE, 0x8D, 0x6B, 0x09, 0xEA, 0x28, + 0x4B, 0xB1, 0x9F, 0xD3, 0x09, 0x4A, 0x77, 0x52, 0x58, 0xA2, 0x31, 0xC1, + 0x48, 0xF1, 0x35, 0x48, 0x46, 0x93, 0xDB, 0x22, 0xFD, 0x06, 0x49, 0xEB, + 0x22, 0xE8, 0xB3, 0x9C, 0xCF, 0x40, 0x8B, 0xC7, 0x35, 0x07, 0xBD, 0x2C, + 0x21, 0xFB, 0x15, 0x53, 0x38, 0x0B, 0x61, 0x10, 0x75, 0x11, 0x17, 0x1F, + 0xE1, 0x76, 0x10, 0x53, 0x66, 0x2E, 0x36, 0x65, 0xF6, 0x62, 0x19, 0xAC, + 0x68, 0x63, 0x1D, 0x17, 0x6C, 0x49, 0x6C, 0xA8, 0x40, 0x49, 0xFC, 0xBA, + 0x63, 0x25, 0x5E, 0x79, 0x07, 0x10, 0xC3, 0x3C, 0xC5, 0x81, 0x14, 0xBB, + 0xCD, 0xC3, 0x63, 0x36, 0x9F, 0xB9, 0x68, 0x54, 0x8D, 0x31, 0x66, 0xC8, + 0xF7, 0x4A, 0xA0, 0x68, 0x8A, 0xCC, 0xE2, 0xB8, 0x50, 0x88, 0x7B, 0xFF, + 0x38, 0xE0, 0x8B, 0x90, 0x0C, 0x98, 0xF1, 0xC5, 0x5F, 0xFA, 0x2A, 0x37, + 0x6A, 0x3C, 0x39, 0xC0, 0xF1, 0x29, 0x0F, 0xC1, 0xA6, 0xCE, 0xCC, 0x98, + 0xD7, 0x9C, 0xAE, 0x71, 0xAB, 0xFE, 0xA1, 0xC6, 0x0E, 0xF7, 0xE7, 0x60, + 0x9B, 0x63, 0x50, 0x00, 0x8B, 0x1A, 0xC4, 0xF2, 0xDB, 0xFF, 0xCB, 0xC8, + 0xDC, 0x23, 0x49, 0xA9, 0xFB, 0xF3, 0x1A, 0x09, 0xA5, 0x27, 0xD5, 0x18, + 0x4C, 0x84, 0x2E, 0x6E, 0x56, 0x39, 0x3F, 0xD3, 0x08, 0xDE, 0x76, 0x90, + 0xC1, 0x43, 0x33, 0x32, 0xF8, 0x76, 0x59, 0x48, 0x14, 0xCD, 0x2E, 0x19, + 0xDF, 0x8B, 0x72, 0xAF, 0xB2, 0x2F, 0xD9, 0x5C, 0x5C, 0x87, 0x8C, 0x3A, + 0x66, 0x86, 0xBD, 0xEA, 0x82, 0xFC, 0x36, 0xFA, 0x05, 0xE8, 0xE0, 0x07, + 0x53, 0xD8, 0x68, 0xD4, 0x86, 0x3A, 0xA4, 0x64, 0xD5, 0x13, 0x16, 0x3F, + 0x9B, 0x1D, 0x60, 0x3A, 0x46, 0xAF, 0x99, 0x89, 0xBF, 0x1A, 0xD2, 0x45, + 0xF8, 0xD7, 0x86, 0x6E, 0x0C, 0x3A, 0xCD, 0x69, 0x05, 0x1A, 0x07, 0x7D, + 0x52, 0x96, 0xE1, 0xB6, 0x84, 0xE9, 0x63, 0x5B, 0x3D, 0xEE, 0xF6, 0xDC, + 0x8A, 0xE2, 0xDC, 0xFA, 0xDD, 0xD6, 0x5F, 0xA3, 0x17, 0xD3, 0xE6, 0x3C, + 0xC6, 0xEE, 0x7C, 0x84, 0x6F, 0x82, 0x9A, 0x01, 0xF7, 0xC4, 0x71, 0x69, + 0x0B, 0x56, 0xEB, 0x48, 0xB3, 0x09, 0x23, 0x05, 0x26, 0x47, 0xD5, 0x8B, + 0x2D, 0x8B, 0x91, 0x73, 0xF8, 0x14, 0xAC, 0xE6, 0xEE, 0xB3, 0x40, 0x6D, + 0x43, 0x70, 0x18, 0x8A, 0xA4, 0xA9, 0x9A, 0x66, 0x77, 0x85, 0x7E, 0x0F, + 0x48, 0x24, 0x0B, 0xF1, 0x15, 0xEF, 0xBB, 0x25, 0xB8, 0x44, 0x43, 0x8E, + 0x91, 0x29, 0x74, 0x43, 0xEC, 0xF9, 0x31, 0x48, 0x97, 0xFC, 0xDF, 0x5A, + 0xA9, 0x3B, 0x50, 0xAB, 0x9E, 0xE5, 0x93, 0xF3, 0x39, 0xD8, 0x4E, 0xAB, + 0x7F, 0xAD, 0x2E, 0x83, 0x7F, 0x85, 0x46, 0x24, 0xE7, 0x76, 0xF4, 0x64, + 0xFF, 0x6A, 0xDA, 0x79, 0x2F, 0x49, 0x16, 0xD8, 0xF1, 0x54, 0xD6, 0x37, + 0xCB, 0x50, 0x13, 0xA0, 0xB2, 0x4E, 0xDC, 0x1E, 0xF0, 0x59, 0xB4, 0x4F, + 0xB4, 0x9B, 0x6D, 0x17, 0xA1, 0x4C, 0x25, 0x24, 0x71, 0x3C, 0x06, 0x6D, + 0xEE, 0x35, 0x8D, 0xA7, 0x6E, 0x1C, 0x59, 0x17, 0x7A, 0xA5, 0xB4, 0x14, + 0x9F, 0x12, 0x8D, 0xE0, 0xC1, 0xEE, 0xAA, 0xE5, 0xF6, 0x9D, 0x2F, 0x81, + 0x75, 0x9F, 0xCC, 0xE4, 0xE1, 0x87, 0x85, 0x65, 0x86, 0x08, 0xD4, 0xC2, + 0xC5, 0xE1, 0x87, 0x4C, 0x76, 0x25, 0xFC, 0x9F, 0x70, 0x08, 0x5C, 0x69, + 0xB2, 0xEF, 0xDD, 0x2E, 0x41, 0xAF, 0x8E, 0x8A, 0x51, 0x0F, 0x1E, 0x7D, + 0xD2, 0x24, 0x8C, 0x70, 0x4D, 0xB9, 0x22, 0x8B, 0x39, 0x51, 0xEF, 0xCB, + 0x19, 0x16, 0xDC, 0x38, 0xF2, 0x95, 0xE6, 0x39, 0xD0, 0x2A, 0x59, 0x2D, + 0xD0, 0xFA, 0xC3, 0x7E, 0xC7, 0x43, 0xF1, 0x74, 0x11, 0x1D, 0x4D, 0xA2, + 0x35, 0x35, 0xCA, 0x97, 0x05, 0x02, 0x2B, 0xA2, 0x82, 0x23, 0x36, 0xEF, + 0xFC, 0xEC, 0xA9, 0x0A, 0x1B, 0xCA, 0x55, 0x77, 0x11, 0xAC, 0x3F, 0xCC, + 0xA7, 0xF5, 0x12, 0x1D, 0x7C, 0x4C, 0xA3, 0xF9, 0x14, 0x85, 0x1D, 0x8E, + 0x5E, 0xD3, 0x49, 0x52, 0x9D, 0x37, 0x6D, 0x8E, 0x35, 0x8C, 0xA9, 0xFE, + 0x37, 0x23, 0x56, 0xB8, 0x05, 0x65, 0x54, 0x07, 0xF2, 0xC6, 0xED, 0x70, + 0x10, 0xA1, 0x97, 0x77, 0xD4, 0xD7, 0x77, 0x50, 0x50, 0x16, 0x8C, 0x6E, + 0x45, 0xED, 0x9D, 0xB4, 0xF3, 0xE5, 0x82, 0x37, 0x99, 0x67, 0x53, 0x68, + 0xC6, 0x22, 0x33, 0xFD, 0x0C, 0xAD, 0x18, 0x24, 0x76, 0x06, 0x26, 0x5D, + 0x9B, 0x14, 0xF6, 0xCC, 0xB8, 0x48, 0x7E, 0x85, 0x15, 0x35, 0xC7, 0x16, + 0x1F, 0xE5, 0x3A, 0x41, 0x9B, 0xB6, 0xA8, 0x64, 0x48, 0x57, 0x32, 0x60, + 0x91, 0xE5, 0xC1, 0x41, 0xEC, 0x4C, 0x97, 0xEF, 0xD4, 0xF8, 0x84, 0x41, + 0x61, 0x47, 0x17, 0x08, 0x96, 0xC3, 0xBB, 0xF3, 0xB7, 0x2C, 0xF6, 0xB9, + 0xA1, 0x89, 0x78, 0x79, 0x73, 0x89, 0x4C, 0x07, 0x34, 0x4E, 0x75, 0x88, + 0xA8, 0x18, 0x54, 0x3C, 0xF3, 0x8F, 0xED, 0x04, 0xE7, 0x86, 0xD7, 0x8B, + 0xED, 0x34, 0x6B, 0xCF, 0x29, 0x1F, 0x7A, 0x54, 0x7E, 0x8A, 0xE1, 0x81, + 0x4C, 0xEE, 0xEA, 0x23, 0x7B, 0x3F, 0x16, 0x24, 0x71, 0x9D, 0x97, 0xF8, + 0x5B, 0xD0, 0x73, 0x86, 0xFA, 0x21, 0x27, 0x3E, 0x73, 0x1F, 0x0C, 0x36, + 0x87, 0x56, 0x2F, 0x21, 0x10, 0x38, 0xFD, 0x14, 0xB4, 0x1E, 0xAB, 0x3B, + 0xC1, 0x54, 0xE2, 0xDB, 0xB5, 0x76, 0xF2, 0x61, 0x14, 0xBA, 0x19, 0x23, + 0x7C, 0x53, 0x30, 0xC8, 0x0C, 0x62, 0x61, 0x93, 0x41, 0x83, 0x1C, 0xA7, + 0x2D, 0x15, 0xD5, 0x67, 0x95, 0xEE, 0xBD, 0xDB, 0x27, 0x31, 0x16, 0x81, + 0xC9, 0x3A, 0x78, 0xFC, 0xB2, 0x26, 0x10, 0x3F, 0xCA, 0x89, 0x11, 0xB0, + 0x03, 0xE1, 0xB9, 0x7E, 0xDE, 0x0C, 0x34, 0xD1, 0xAA, 0x72, 0x34, 0x90, + 0xD8, 0x62, 0x74, 0xAE, 0xA7, 0x63, 0x96, 0xCD, 0xBA, 0x58, 0x60, 0x6E, + 0xD1, 0x6C, 0x6B, 0xAE, 0xB2, 0x15, 0x7E, 0x12, 0x1A, 0x29, 0x03, 0x2E, + 0x28, 0x98, 0x59, 0x52, 0xE2, 0x94, 0xAC, 0x18, 0x00, 0x1B, 0x2D, 0xCC, + 0xE0, 0xDC, 0x71, 0xA0, 0x97, 0xAF, 0xA1, 0xD3, 0x9D, 0xA6, 0xEE, 0x62, + 0xB4, 0x51, 0xBE, 0xE9, 0xF0, 0x23, 0xBD, 0x5A, 0xED, 0x16, 0xEC, 0x01, + 0x70, 0x8F, 0x39, 0xF2, 0xF9, 0xD8, 0x6D, 0x54, 0x6A, 0xD3, 0x70, 0x7B, + 0xE4, 0x6E, 0x1D, 0x40, 0xF4, 0x4A, 0x04, 0xA6, 0x3A, 0x2B, 0x76, 0x62, + 0x7F, 0x04, 0xC2, 0x0B, 0xB0, 0xAC, 0xB6, 0xE1, 0x85, 0x8A, 0xD5, 0x35, + 0xCA, 0xDF, 0xDE, 0x8A, 0x57, 0x34, 0x51, 0xD0, 0x44, 0xC0, 0xBB, 0x51, + 0x16, 0x44, 0x3F, 0xC7, 0xC4, 0x10, 0x3B, 0x06, 0xB2, 0xB7, 0xA1, 0xF4, + 0x9C, 0x2F, 0xFA, 0xD3, 0x46, 0x51, 0xC3, 0x25, 0x9A, 0x94, 0xB8, 0x78, + 0xE3, 0x3B, 0x63, 0x64, 0x61, 0xF6, 0x1D, 0x4C, 0x9C, 0xFF, 0x68, 0x18, + 0xCC, 0x51, 0xD0, 0xC3, 0x0B, 0x67, 0x0D, 0xED, 0x78, 0xF4, 0xD7, 0x26, + 0x41, 0x0C, 0xEE, 0xB7, 0x35, 0x72, 0xDA, 0x39, 0x3D, 0x20, 0x35, 0xF0, + 0xC8, 0xF2, 0x6A, 0x29, 0xE3, 0x03, 0x90, 0x80, 0xE7, 0x76, 0xBA, 0x78, + 0x5E, 0x5C, 0x9A, 0x35, 0x05, 0x9C, 0x2E, 0xB8, 0xA8, 0x86, 0x2F, 0xD3, + 0xEA, 0x37, 0x7D, 0xED, 0x66, 0xA8, 0x4E, 0xEF, 0xA3, 0xBF, 0x3F, 0x85, + 0x21, 0x94, 0x59, 0x23, 0x3A, 0xB5, 0x42, 0x6D, 0x95, 0x3D, 0x9A, 0xE2, + 0x2A, 0x08, 0xC9, 0xD5, 0x6D, 0xC3, 0x6C, 0x09, 0x09, 0xAC, 0x48, 0x4A, + 0x7A, 0x46, 0xB7, 0x34, 0x03, 0xF0, 0x8A, 0x33, 0x3E, 0xAE, 0x27, 0xFD, + 0x2D, 0xF8, 0xAB, 0xE4, 0x82, 0x81, 0x93, 0x65, 0x4E, 0xC2, 0x0D, 0x6D, + 0xD0, 0xEA, 0xDF, 0x8D, 0xA5, 0xD6, 0xA1, 0x45, 0x7F, 0x08, 0xE1, 0x93, + 0x7E, 0x87, 0x50, 0x84, 0xDE, 0x7D, 0x03, 0x9F, 0x3C, 0xD9, 0x81, 0x31, + 0x1B, 0x1E, 0xA1, 0x82, 0x17, 0x76, 0xE4, 0x3F, 0x45, 0xC9, 0x2E, 0x8E, + 0x72, 0xE3, 0x43, 0xF1, 0x84, 0xF2, 0xFC, 0x0B, 0x8E, 0x6E, 0xB4, 0x5F, + 0x10, 0xF2, 0x3E, 0xC0, 0x7D, 0x57, 0xC2, 0x3E, 0xE9, 0x15, 0x4F, 0xC8, + 0x0B, 0x65, 0x53, 0xBB, 0xD9, 0x50, 0xA2, 0x5C, 0xCB, 0x11, 0x14, 0x77, + 0xDF, 0x2A, 0x18, 0x43, 0x3E, 0xE0, 0x1D, 0x30, 0x6E, 0xF3, 0xFE, 0xB7, + 0x3D, 0x7B, 0x22, 0x7A, 0x73, 0xF4, 0x62, 0xBA, 0x82, 0x51, 0x5D, 0x42, + 0x0B, 0x27, 0x0E, 0x13, 0x27, 0xB4, 0xB5, 0xB4, 0x29, 0xDA, 0x94, 0xB3, + 0x99, 0x9B, 0x3B, 0x37, 0x6E, 0xB2, 0x28, 0x26, 0x52, 0xCF, 0x5C, 0xCB, + 0x74, 0x95, 0x30, 0x50, 0x48, 0xC9, 0xAD, 0xEE, 0x8B, 0xC6, 0x72, 0x55, + 0xEC, 0x28, 0x14, 0x00, 0x78, 0xC4, 0x42, 0x61, 0xBF, 0x96, 0x81, 0x06, + 0xFA, 0x45, 0x4F, 0xC0, 0x1F, 0xC0, 0x4F, 0xCA, 0xEE, 0xBC, 0xCC, 0xF5, + 0xAA, 0xC4, 0x78, 0x0A, 0x16, 0xF5, 0xD2, 0x65, 0x6D, 0xCD, 0x74, 0x2D, + 0x87, 0x93, 0xBC, 0x51, 0x02, 0x68, 0xE0, 0x72, 0xE0, 0x5F, 0x98, 0x1E, + 0x7D, 0x2B, 0x9F, 0xCD, 0x1D, 0xC7, 0x20, 0x34, 0xF5, 0x95, 0x82, 0x7A, + 0x04, 0x80, 0x35, 0x96, 0x88, 0xB8, 0x1C, 0x26, 0x16, 0x62, 0xD9, 0x32, + 0x91, 0xD0, 0x0F, 0x87, 0x23, 0x4E, 0x44, 0x25, 0x7C, 0x2A, 0xD4, 0x8E, + 0x43, 0x0B, 0xEC, 0xA4, 0xD0, 0x92, 0x46, 0xEE, 0xB1, 0xC3, 0xC4, 0x61, + 0xE5, 0xA9, 0x90, 0x0D, 0x03, 0x00, 0xBD, 0xA5, 0xEB, 0x81, 0xB0, 0x2B, + 0xAB, 0xEF, 0x5F, 0x70, 0x6A, 0x80, 0x2F, 0xA1, 0xDC, 0xB3, 0x47, 0x7F, + 0xF4, 0x8A, 0x41, 0xB2, 0x94, 0xEA, 0x06, 0x91, 0x92, 0x1D, 0xEF, 0x4A, + 0xF1, 0x81, 0xAE, 0x8E, 0xA6, 0xE8, 0x7B, 0xC1, 0x46, 0xDD, 0x33, 0xBE, + 0x14, 0x1C, 0x24, 0x27, 0xD8, 0xE0, 0xE7, 0x69, 0x9E, 0xFC, 0x53, 0x7E, + 0x40, 0x2C, 0x13, 0xA7, 0xD6, 0x5A, 0x82, 0xD6, 0xFF, 0x09, 0xA8, 0x6B, + 0xB1, 0x60, 0x82, 0x0A, 0xDD, 0x90, 0x1C, 0xE4, 0x6A, 0xA3, 0x18, 0xFB, + 0x66, 0xD4, 0x4F, 0x9B, 0x28, 0xB2, 0x5B, 0xE7, 0x73, 0xCA, 0x33, 0x2F, + 0x75, 0x57, 0x9B, 0xEA, 0x36, 0x03, 0xC4, 0x06, 0x22, 0x4D, 0xDE, 0x30, + 0x57, 0x4C, 0x7C, 0x90, 0xE5, 0xCF, 0x88, 0x39, 0xF5, 0x19, 0x18, 0x18, + 0x2A, 0x1A, 0x16, 0x11, 0xD8, 0x49, 0xCF, 0x5A, 0x4A, 0x51, 0x1B, 0x78, + 0x1D, 0xF1, 0x65, 0xB2, 0x7C, 0xC7, 0xD4, 0xF1, 0xB1, 0x3D, 0xA3, 0x5C, + 0x0A, 0xB5, 0x3E, 0x72, 0x4B, 0xE3, 0x28, 0xEA, 0xC9, 0x73, 0x9F, 0x36, + 0xC1, 0x50, 0x4F, 0x19, 0x33, 0x47, 0xAB, 0x46, 0x71, 0x60, 0x0E, 0xE8, + 0x1D, 0xD2, 0xDB, 0xD3, 0xD8, 0xF3, 0xA9, 0xD7, 0xE5, 0x25, 0x2B, 0xA2, + 0x75, 0x36, 0x77, 0x55, 0x00, 0x8E, 0x67, 0xF1, 0xF9, 0xDE, 0x38, 0x45, + 0x24, 0x84, 0x01, 0x15, 0xA6, 0xD2, 0x30, 0x91, 0x71, 0xE3, 0xA6, 0xA7, + 0xF4, 0x52, 0x77, 0x76, 0x74, 0xC8, 0x43, 0x76, 0x3E, 0xBF, 0x61, 0xB1, + 0xBD, 0x1C, 0x68, 0x10, 0x8B, 0x69, 0xCD, 0x90, 0x1C, 0x2D, 0x76, 0xD4, + 0x4B, 0x3F, 0xF4, 0x3F, 0xC0, 0x8F, 0xB2, 0x13, 0x2D, 0x07, 0xC0, 0x9A, + 0x03, 0x74, 0x11, 0x0A, 0xAA, 0x74, 0x61, 0xB7, 0x5F, 0x64, 0xE8, 0x0D, + 0xE7, 0x57, 0x4C, 0x46, 0x36, 0xAE, 0x54, 0x71, 0xFD, 0x02, 0xD1, 0x6E, + 0x18, 0x06, 0xCA, 0x74, 0x7F, 0xA8, 0xF4, 0xDF, 0x1A, 0x37, 0xF2, 0xD6, + 0x43, 0xD3, 0xF5, 0x70, 0x22, 0xFD, 0x78, 0x24, 0x65, 0xF1, 0x90, 0x79, + 0xE2, 0x12, 0x31, 0xBD, 0xAA, 0xFF, 0xA1, 0x89, 0x05, 0xBE, 0xAE, 0xCA, + 0x1A, 0x4B, 0x9A, 0x6D, 0x24, 0xF3, 0xDF, 0x4E, 0xB2, 0xB9, 0x71, 0x10, + 0x96, 0xCD, 0xA5, 0xEB, 0x99, 0xDA, 0x5D, 0xB1, 0xF4, 0x50, 0x30, 0x8F, + 0x51, 0x6F, 0xDF, 0xF5, 0x7F, 0xB5, 0x8B, 0xD9, 0x58, 0xD2, 0x0C, 0x72, + 0x00, 0xB2, 0x32, 0x62, 0x18, 0x78, 0xBD, 0x8A, 0x2B, 0x07, 0xB4, 0x5E, + 0x4E, 0xB5, 0x1B, 0xE4, 0x4D, 0xD4, 0x59, 0x29, 0x8E, 0xAA, 0x97, 0x71, + 0x66, 0x7F, 0x9E, 0x3B, 0x57, 0xE0, 0x35, 0x03, 0x6B, 0xF7, 0x12, 0x3C, + 0x5A, 0xAD, 0x1A, 0xF1, 0xC6, 0xC9, 0x5A, 0xF0, 0x1D, 0x25, 0x15, 0xE4, + 0x3B, 0x45, 0x88, 0x70, 0x77, 0x7F, 0x33, 0xC0, 0xA7, 0x50, 0x6F, 0x22, + 0x9B, 0xB6, 0xAF, 0x35, 0xF4, 0xC1, 0xEC, 0xEC, 0xF7, 0x7B, 0x59, 0x45, + 0x2E, 0x8C, 0x45, 0x94, 0xCF, 0xF2, 0x64, 0xD4, 0x99, 0x78, 0xB6, 0xD3, + 0x20, 0x42, 0x49, 0xF4, 0x8E, 0xC4, 0x4E, 0xC9, 0x63, 0x10, 0xE7, 0x57, + 0xA8, 0x33, 0xBB, 0xE3, 0xF2, 0xDF, 0x38, 0x24, 0xF4, 0xC5, 0xEA, 0x86, + 0xAF, 0xB7, 0xB1, 0x34, 0x46, 0x74, 0xAD, 0x96, 0x84, 0x5F, 0x44, 0x16, + 0xE2, 0x54, 0xCA, 0x6A, 0x93, 0xE1, 0x59, 0xBD, 0x56, 0xCF, 0x8C, 0x3A, + 0x3C, 0x1B, 0xAB, 0xBE, 0x6A, 0x0E, 0xCA, 0x56, 0x20, 0x1C, 0xDE, 0xDF, + 0x0A, 0x5D, 0x7F, 0x55, 0xF9, 0x9E, 0x21, 0x9D, 0x98, 0x37, 0xFD, 0xFE, + 0xE7, 0xD7, 0xDC, 0x87, 0xD1, 0xC5, 0x60, 0xF5, 0x91, 0xD9, 0x10, 0x95, + 0x6C, 0x24, 0x5B, 0x0F, 0x59, 0x54, 0x4D, 0x04, 0xE8, 0xF8, 0x33, 0x94, + 0x1D, 0x00, 0x72, 0xCE, 0x6B, 0xCD, 0x90, 0xC7, 0x6A, 0x9F, 0xF4, 0xE7, + 0x5B, 0x67, 0x52, 0xBB, 0xB6, 0x58, 0x19, 0xBB, 0xD5, 0x09, 0x0B, 0x8C, + 0x30, 0xBE, 0x21, 0xDA, 0xCB, 0xE7, 0x67, 0xDC, 0x24, 0x00, 0xDD, 0x1A, + 0x43, 0x13, 0x71, 0x44, 0x11, 0xA1, 0xA5, 0x9D, 0x9E, 0xD1, 0x19, 0xE4, + 0x9D, 0x59, 0x2D, 0xF9, 0x9F, 0x8D, 0x2D, 0x09, 0x01, 0x32, 0x35, 0xC7, + 0x2E, 0x12, 0x15, 0x84, 0x88, 0x9F, 0xA7, 0xA2, 0x48, 0x72, 0xA6, 0xB2, + 0xE0, 0x81, 0x8A, 0xB1, 0x07, 0x21, 0x5D, 0x9D, 0x74, 0x1D, 0x3D, 0x98, + 0x24, 0x1E, 0x4C, 0x45, 0xBD, 0x45, 0x3F, 0x1E, 0x31, 0x5D, 0xBE, 0x8C, + 0x4F, 0xDD, 0x1D, 0x0C, 0xA7, 0xFC, 0x5C, 0xA3, 0x20, 0x13, 0x71, 0x9F, + 0xB8, 0x0E, 0x50, 0xFA, 0x27, 0x5A, 0xA0, 0x91, 0x28, 0xCA, 0xDF, 0x43, + 0x39, 0x18, 0xA2, 0x9F, 0x60, 0xAB, 0xEC, 0x2B, 0x89, 0x03, 0x03, 0x58, + 0xB0, 0xA0, 0x76, 0x46, 0xBB, 0x2A, 0x37, 0xEF, 0xD9, 0xD7, 0xDD, 0x93, + 0x40, 0x0A, 0x13, 0x7E, 0xF6, 0x84, 0xB7, 0x34, 0x10, 0xB2, 0x31, 0x83, + 0x09, 0x66, 0x78, 0xA1, 0x60, 0xD5, 0x30, 0xC4, 0x82, 0xD4, 0x2E, 0x6D, + 0xFD, 0x8B, 0x01, 0x84, 0x91, 0x78, 0x4A, 0x4E, 0x2A, 0x85, 0x82, 0xC9, + 0x92, 0x0D, 0x28, 0x32, 0x26, 0xE5, 0x25, 0x35, 0x09, 0x79, 0x04, 0xA5, + 0xE4, 0xFA, 0x35, 0xE0, 0xB3, 0x87, 0x8B, 0x18, 0x02, 0xED, 0xEC, 0x7B, + 0x34, 0x56, 0xAE, 0x6C, 0x00, 0x3C, 0x8F, 0xEF, 0xA6, 0x06, 0xFC, 0xBD, + 0xD9, 0x35, 0x47, 0x79, 0x0F, 0xB4, 0x49, 0x7D, 0x9A, 0x1B, 0xB9, 0xEE, + 0xB4, 0xFB, 0xDA, 0xAA, 0xCD, 0xEF, 0xA1, 0xD6, 0xD4, 0xCA, 0x7F, 0xE8, + 0x1D, 0x91, 0x72, 0x83, 0xB6, 0x4B, 0x86, 0xE4, 0xEC, 0x27, 0xD9, 0xEF, + 0xDC, 0x0D, 0xA0, 0x25, 0xE8, 0xD8, 0xEA, 0xC0, 0xD1, 0x5C, 0x58, 0x00, + 0xFD, 0x31, 0x48, 0x69, 0xD7, 0x09, 0xFD, 0xD4, 0x1A, 0x8D, 0x5B, 0xE7, + 0xA6, 0xE1, 0x9A, 0xF6, 0x1A, 0x03, 0xF9, 0x2D, 0x2E, 0x42, 0xC9, 0x93, + 0xCA, 0x31, 0xAA, 0xF1, 0xBB, 0x52, 0xCF, 0x20, 0x01, 0x67, 0xE0, 0x7D, + 0x80, 0x69, 0xBA, 0x81, 0xF5, 0x3A, 0x55, 0x40, 0x4E, 0x4F, 0x9B, 0xDD, + 0x0F, 0xF9, 0x20, 0xB8, 0x4A, 0x16, 0x58, 0x21, 0x6D, 0x71, 0x42, 0x78, + 0xC4, 0x25, 0x3D, 0x6F, 0x9C, 0xC5, 0xE1, 0x2B, 0x39, 0xE0, 0x52, 0x07, + 0x4A, 0xFF, 0x62, 0x2C, 0xD2, 0xAB, 0xF3, 0x5B, 0x20, 0xB3, 0x85, 0x44, + 0x24, 0x84, 0x8C, 0x3C, 0x38, 0x09, 0x9A, 0x3A, 0x4E, 0xAF, 0xBC, 0xAB, + 0x6E, 0x0D, 0x60, 0x30, 0xBA, 0x04, 0xAA, 0x74, 0x93, 0x15, 0x14, 0xB8, + 0xD4, 0x20, 0xD6, 0x2F, 0x2B, 0x23, 0x7F, 0x03, 0xC1, 0x3F, 0xF0, 0xE2, + 0xBA, 0x77, 0x9C, 0xF3, 0x83, 0xE5, 0x61, 0x11, 0xA2, 0x77, 0x9D, 0xB8, + 0x65, 0xB5, 0x87, 0xC2, 0xFD, 0xEA, 0x9E, 0x6E, 0xBA, 0x5D, 0x5E, 0x76, + 0x46, 0x49, 0x4E, 0x5A, 0x5F, 0x4C, 0x96, 0xB1, 0x5F, 0x6A, 0xE5, 0xA2, + 0xC2, 0xDB, 0xC6, 0x66, 0x92, 0xD7, 0xD4, 0x80, 0x6F, 0x63, 0x01, 0x1C, + 0x0D, 0x13, 0xB5, 0xA9, 0x72, 0x8B, 0x6B, 0xA6, 0xF0, 0x98, 0xE4, 0xC6, + 0xF8, 0x46, 0x23, 0x61, 0x1E, 0x4C, 0xFD, 0xFF, 0x3E, 0x4C, 0x78, 0xE8, + 0x49, 0xCE, 0xA6, 0xD0, 0x5C, 0x2B, 0x85, 0x7D, 0xB4, 0xF5, 0x7D, 0x71, + 0x1C, 0x89, 0x57, 0x42, 0x6A, 0x7A, 0x71, 0x44, 0x75, 0x01, 0x90, 0xC3, + 0xBF, 0x95, 0x7B, 0x0A, 0x4E, 0x01, 0x0A, 0x52, 0xF4, 0xA0, 0x21, 0x94, + 0x7C, 0xEB, 0xA9, 0xEB, 0xAD, 0x1B, 0xBE, 0x78, 0x98, 0x04, 0xC4, 0x26, + 0x20, 0x73, 0x5F, 0xB5, 0x45, 0x6C, 0xE2, 0xC7, 0x04, 0xD2, 0xEB, 0x67, + 0xE5, 0x8F, 0x2F, 0xA0, 0x66, 0x4C, 0xBD, 0x36, 0x2C, 0xFE, 0x8E, 0x40, + 0x46, 0xB6, 0xAB, 0x2F, 0xCF, 0x1F, 0xA1, 0x3E, 0xBF, 0x96, 0x61, 0x74, + 0x68, 0xD6, 0x82, 0x1D, 0x12, 0xD5, 0xFD, 0xB9, 0x45, 0xDA, 0x8D, 0x2B, + 0x76, 0xDE, 0x9C, 0x65, 0xA0, 0x2D, 0x76, 0x2F, 0x49, 0x2E, 0xEC, 0x27, + 0xD4, 0x40, 0x26, 0xA3, 0x06, 0x01, 0x2E, 0x60, 0x04, 0x94, 0x43, 0xA4, + 0x79, 0x5D, 0xEA, 0xD8, 0xD1, 0x5B, 0x95, 0xF2, 0x2E, 0x13, 0x17, 0x9E, + 0xED, 0x7A, 0x7E, 0x83, 0x86, 0xDF, 0xD1, 0xD4, 0xE9, 0x00, 0x55, 0x8D, + 0xCA, 0x4F, 0x18, 0x74, 0x4E, 0x5E, 0x7C, 0xAC, 0xE9, 0x4A, 0x25, 0xA7, + 0x3A, 0x84, 0x43, 0xF5, 0x77, 0x74, 0x1E, 0xDC, 0x32, 0xDB, 0x50, 0xCF, + 0xF8, 0xAC, 0x01, 0x37, 0x33, 0x59, 0xBE, 0xF5, 0xC2, 0x98, 0xE7, 0x09, + 0x29, 0xE3, 0x6E, 0xBC, 0x22, 0x1D, 0x20, 0x06, 0x89, 0x90, 0x95, 0xCC, + 0xC7, 0x3F, 0x2B, 0x48, 0x5F, 0x23, 0x0B, 0xCB, 0xD5, 0xA2, 0x4E, 0x52, + 0x5A, 0x1E, 0x1A, 0x4C, 0x51, 0x75, 0x67, 0x33, 0xD6, 0xF1, 0xBE, 0x9B, + 0x8D, 0x31, 0x0F, 0xBA, 0x2A, 0x67, 0x58, 0xF5, 0x62, 0xC3, 0x80, 0x48, + 0x89, 0x5C, 0x3F, 0x81, 0xFF, 0x27, 0x6E, 0x0B, 0x79, 0x6A, 0xD0, 0x33, + 0xD6, 0x2D, 0x6A, 0xF1, 0x36, 0xCC, 0x96, 0x6C, 0xA6, 0x6D, 0xA0, 0x92, + 0x04, 0x5B, 0x27, 0xC9, 0x05, 0x1D, 0xCA, 0xB2, 0x8D, 0x4F, 0x20, 0xB6, + 0xEA, 0xE4, 0x57, 0xAE, 0xAF, 0x77, 0xF7, 0xA8, 0xA5, 0xCD, 0xFF, 0x5C, + 0xB9, 0x7F, 0x29, 0x98, 0x2C, 0x5E, 0xDA, 0x69, 0x3E, 0x99, 0x21, 0x25, + 0x49, 0x1F, 0xEA, 0xD4, 0x91, 0x63, 0x89, 0xB8, 0xEC, 0xCF, 0x8B, 0x1D, + 0xF6, 0x33, 0x3C, 0x29, 0x26, 0xEF, 0xAC, 0x81, 0x12, 0xC5, 0x1B, 0x44, + 0xAC, 0x18, 0x90, 0x20, 0xBB, 0x03, 0x5B, 0x3F, 0x3E, 0xD3, 0xD3, 0xC5, + 0x47, 0xAF, 0x7F, 0x44, 0x9E, 0x32, 0xC5, 0x06, 0xE9, 0xB6, 0x7D, 0xB3, + 0xA1, 0xF6, 0x77, 0x29, 0x7F, 0xA9, 0xA9, 0x10, 0x20, 0xCE, 0x2E, 0x18, + 0xC8, 0xAA, 0x68, 0x65, 0x64, 0x11, 0x57, 0x4F, 0xE9, 0xA2, 0xE3, 0xD1, + 0xEA, 0x03, 0x40, 0xAC, 0x68, 0x04, 0xC8, 0x36, 0x69, 0xE9, 0xB5, 0x6D, + 0x77, 0x93, 0xFA, 0xD6, 0xB8, 0xA5, 0x71, 0x63, 0x70, 0xE8, 0xA0, 0x27, + 0x39, 0xD7, 0x33, 0x52, 0x76, 0x59, 0xF1, 0xEF, 0xE2, 0x76, 0x83, 0xC5, + 0x4D, 0xC5, 0xA3, 0xF2, 0x10, 0x4C, 0xB3, 0x35, 0x6E, 0x12, 0x5B, 0x26, + 0x7C, 0x4A, 0x8B, 0xFB, 0x02, 0x2B, 0xBE, 0xF4, 0x0A, 0x91, 0xF5, 0x7C, + 0x82, 0x08, 0x62, 0x70, 0xD8, 0xA4, 0x29, 0xE0, 0xF8, 0x97, 0x19, 0x1D, + 0x06, 0xD3, 0x46, 0x90, 0xEB, 0xB5, 0x89, 0x5B, 0x6C, 0x50, 0xB5, 0xB6, + 0x70, 0x58, 0xA0, 0x30, 0x05, 0xF5, 0x40, 0x51, 0x4E, 0x30, 0xDF, 0x64, + 0x6F, 0x7A, 0x4E, 0x54, 0x64, 0xE3, 0x20, 0xD3, 0x93, 0xE3, 0x79, 0x28, + 0x39, 0xB1, 0x18, 0xDF, 0xCC, 0xF1, 0x98, 0xD1, 0x2D, 0x86, 0x34, 0x84, + 0xA1, 0x83, 0x4A, 0xE5, 0xA9, 0x61, 0x6B, 0x09, 0xA2, 0x3B, 0xCE, 0x5E, + 0xF7, 0x6B, 0xFF, 0xC2, 0x20, 0xFC, 0xF3, 0xAC, 0x2E, 0x7C, 0x63, 0x55, + 0x11, 0x24, 0xEE, 0xE3, 0x51, 0xE6, 0x18, 0xB0, 0xD6, 0x6E, 0x85, 0xF5, + 0xE5, 0x00, 0x91, 0x21, 0xD4, 0x88, 0xF1, 0x50, 0x31, 0x39, 0x0A, 0x08, + 0x23, 0xA9, 0x01, 0xB3, 0xEF, 0xE8, 0xAF, 0xDF, 0xAE, 0x2B, 0xAF, 0xF9, + 0x0D, 0xE2, 0x4D, 0x00, 0xE3, 0x5B, 0x56, 0x80, 0x90, 0xB8, 0xD4, 0x76, + 0xEA, 0x14, 0x68, 0x40, 0x53, 0x9A, 0x3B, 0x82, 0xFC, 0x63, 0x9F, 0x9A, + 0x4C, 0xFF, 0xE3, 0x10, 0x49, 0xCB, 0xA8, 0x1D, 0x59, 0x98, 0x3F, 0x4C, + 0xDD, 0x2C, 0xB2, 0x8D, 0x11, 0xB5, 0x23, 0xF4, 0x90, 0x87, 0xE3, 0x85, + 0x24, 0xD4, 0x0A, 0xE9, 0x79, 0xBB, 0x1F, 0x56, 0xC3, 0x62, 0x35, 0xDF, + 0xE0, 0xAA, 0x51, 0x02, 0x93, 0xAE, 0x11, 0x21, 0xCF, 0xE4, 0xF3, 0x84, + 0x08, 0x64, 0x06, 0x8B, 0x8A, 0x32, 0xB0, 0xF0, 0xC5, 0xD3, 0x5E, 0x1E, + 0xF1, 0x69, 0x48, 0x46, 0xEC, 0x61, 0xA2, 0x7F, 0x28, 0xB6, 0xF8, 0xC9, + 0x78, 0x35, 0x9B, 0x4D, 0x8C, 0xFE, 0xB7, 0xC9, 0xBC, 0xE9, 0x6E, 0x17, + 0xCB, 0xFB, 0x00, 0x91, 0xE8, 0x27, 0x77, 0x7C, 0x96, 0xD6, 0xAF, 0x8D, + 0xE4, 0x18, 0x8F, 0xEB, 0x7B, 0x9F, 0x01, 0x9C, 0x2E, 0x77, 0xF5, 0x40, + 0x7C, 0x6D, 0x85, 0xA5, 0x17, 0x8F, 0x40, 0xB7, 0x9D, 0xBB, 0x68, 0x96, + 0x22, 0x17, 0x0A, 0x75, 0xA3, 0x1D, 0x07, 0xE4, 0x93, 0x8A, 0xBB, 0xAD, + 0x7E, 0x2E, 0xAA, 0x21, 0xDA, 0x62, 0xBF, 0xE8, 0xBB, 0x28, 0xB2, 0xCE, + 0xE3, 0x0F, 0xCB, 0x3C, 0x2C, 0x4A, 0x3D, 0xAA, 0xFC, 0x4B, 0xB5, 0x6A, + 0x04, 0x05, 0xA4, 0x63, 0x98, 0xD8, 0xA2, 0x5E, 0x96, 0xD5, 0x52, 0x7B, + 0xCB, 0xED, 0xA3, 0x72, 0x3E, 0x2A, 0x3F, 0xE2, 0x79, 0x3D, 0xFE, 0x8A, + 0xA0, 0xD4, 0x32, 0x60, 0x10, 0xBE, 0xF2, 0xE5, 0xF9, 0x03, 0xE2, 0x66, + 0x76, 0x7A, 0x48, 0xEF, 0x33, 0x63, 0xA0, 0x93, 0x99, 0x28, 0x97, 0x40, + 0xB9, 0xAD, 0xEC, 0xB4, 0xD7, 0x98, 0x9D, 0x87, 0x6A, 0x6C, 0x9D, 0xD5, + 0xF6, 0xAA, 0x64, 0xE4, 0xD6, 0x73, 0x92, 0xA9, 0xC2, 0xB4, 0x80, 0x0F, + 0x58, 0x7B, 0x01, 0x17, 0xAD, 0x7C, 0x3E, 0x5C, 0xDE, 0x7D, 0x77, 0xF2, + 0x35, 0x4E, 0x6F, 0x0D, 0xE1, 0x4E, 0xAD, 0x4E, 0x82, 0x36, 0x87, 0x89, + 0x43, 0x13, 0x50, 0x08, 0x22, 0x3D, 0x14, 0x3D, 0x85, 0x50, 0xBC, 0x17, + 0x18, 0x66, 0xE1, 0x85, 0xEF, 0xCA, 0xF1, 0x12, 0x9B, 0xA1, 0xC0, 0x95, + 0x14, 0x2E, 0x2C, 0xB6, 0x1B, 0x25, 0x9F, 0x4C, 0xF2, 0x49, 0xAE, 0x8A, + 0xD4, 0xE7, 0x1A, 0x05, 0xFB, 0x6F, 0x75, 0x42, 0xC6, 0x14, 0xD8, 0xE5, + 0x03, 0x04, 0x80, 0xEB, 0x58, 0x8F, 0x92, 0xAF, 0xD1, 0x15, 0x00, 0x63, + 0xB7, 0xFF, 0xF8, 0xD7, 0xE3, 0xC0, 0x37, 0xEF, 0x68, 0xF9, 0xC8, 0x5A, + 0x03, 0x6D, 0x4A, 0x56, 0xAE, 0xDF, 0x8E, 0xBD, 0x52, 0x5F, 0x7D, 0x22, + 0x4A, 0xFA, 0xFE, 0xA2, 0x3F, 0xCE, 0x45, 0xD8, 0x41, 0x94, 0x70, 0x21, + 0x48, 0xF7, 0x95, 0xE5, 0xE4, 0x22, 0x52, 0x7E, 0x15, 0xAE, 0xC7, 0x34, + 0xA8, 0xF9, 0x15, 0x4B, 0x15, 0x11, 0x19, 0x19, 0xDC, 0x4A, 0x3D, 0x3D, + 0x33, 0x79, 0x0E, 0x8A, 0x34, 0x11, 0xEB, 0x4A, 0x8B, 0xAF, 0x0F, 0xE8, + 0xBA, 0x3E, 0x94, 0xA6, 0x2C, 0xF8, 0xF8, 0xA9, 0xD1, 0xE7, 0x3A, 0x3D, + 0x44, 0xC8, 0x08, 0x47, 0x5E, 0xD8, 0xF1, 0x6C, 0xCD, 0x8C, 0x60, 0xD7, + 0xF6, 0xA5, 0x57, 0xF2, 0x0C, 0xD6, 0x9E, 0x0C, 0x90, 0xCB, 0xAE, 0xC0, + 0xC1, 0x62, 0xD4, 0xC6, 0x6C, 0x7F, 0xED, 0x38, 0x23, 0x48, 0x0B, 0x53, + 0x64, 0xBE, 0xD2, 0x6C, 0xE2, 0xAB, 0x71, 0x9E, 0x51, 0x87, 0xBF, 0x54, + 0xC1, 0x36, 0xC0, 0x5B, 0x0E, 0xD0, 0x63, 0xE9, 0x1C, 0x0C, 0x07, 0x3B, + 0xAE, 0xEE, 0xA5, 0x51, 0x1E, 0xE6, 0x8E, 0x01, 0x1E, 0x59, 0xEA, 0x6C, + 0x25, 0x63, 0x33, 0x08, 0x08, 0x2C, 0x21, 0xF5, 0xEA, 0x01, 0x56, 0x44, + 0x7D, 0xE0, 0x85, 0x1C, 0xD5, 0x4D, 0x8D, 0xC2, 0xB7, 0xEE, 0x54, 0x51, + 0xCA, 0x8B, 0xA6, 0xCF, 0x47, 0x85, 0x02, 0x29, 0xDD, 0x60, 0x42, 0xE4, + 0x17, 0x8E, 0x42, 0x5D, 0xFF, 0x10, 0x91, 0x25, 0x46, 0x93, 0x6B, 0xDA, + 0xAD, 0xDA, 0x01, 0x0F, 0x31, 0x85, 0x53, 0x9E, 0x7A, 0x3C, 0x14, 0xF5, + 0xF0, 0xA4, 0x12, 0x9B, 0xED, 0xC7, 0x83, 0x73, 0xA4, 0x6B, 0xC8, 0xAA, + 0x7B, 0xD4, 0x64, 0xF7, 0xF5, 0xD3, 0x07, 0x2F, 0x41, 0x8B, 0x09, 0xBF, + 0xC7, 0xBD, 0x00, 0x2A, 0xBC, 0xBA, 0xFC, 0x9A, 0xE2, 0x58, 0x64, 0xFD, + 0xE1, 0x60, 0x4E, 0x3C, 0x60, 0xE3, 0x84, 0xCD, 0xD3, 0xAE, 0xB4, 0x0D, + 0xF8, 0xA3, 0xAA, 0x74, 0xE1, 0x42, 0x18, 0x56, 0xA6, 0x72, 0x65, 0xD1, + 0x14, 0xCC, 0xFE, 0x1F, 0xD0, 0x91, 0x84, 0xA1, 0x6A, 0x33, 0x76, 0x97, + 0x5B, 0x72, 0x3F, 0xB3, 0xB8, 0xDF, 0xD9, 0x3E, 0x1D, 0x1E, 0xFD, 0x35, + 0xDF, 0x4B, 0xD7, 0x50, 0xE7, 0x2D, 0x1B, 0xC8, 0xCA, 0xB3, 0x89, 0xE4, + 0x56, 0xA9, 0x81, 0x4A, 0xED, 0x96, 0xE3, 0x0C, 0xE5, 0x9F, 0x60, 0xF5, + 0xB4, 0x9A, 0xCD, 0xAD, 0xBA, 0x63, 0x8B, 0x54, 0x39, 0xD0, 0x0A, 0xE9, + 0x98, 0x5E, 0xC1, 0xC9, 0x40, 0xB7, 0xA4, 0x10, 0x32, 0x7D, 0x9E, 0x00, + 0x68, 0x69, 0xB8, 0x23, 0xDF, 0xBE, 0xC0, 0x45, 0x33, 0xF1, 0x8E, 0x27, + 0xED, 0xA1, 0xD9, 0x38, 0x74, 0xF2, 0x8A, 0xBE, 0x85, 0x1E, 0xF0, 0x5B, + 0x1A, 0x34, 0x93, 0x72, 0xDE, 0x37, 0xD7, 0x83, 0xEB, 0x7B, 0x28, 0x5E, + 0x14, 0x2A, 0xBC, 0xC7, 0xE2, 0xB3, 0x06, 0x29, 0x76, 0x37, 0xD3, 0xC4, + 0x47, 0x8A, 0xDB, 0xC7, 0x30, 0x02, 0x66, 0xC9, 0x53, 0x5E, 0xBA, 0xDB, + 0x07, 0x60, 0x0D, 0x6B, 0x54, 0xCB, 0x0C, 0xC1, 0x27, 0x54, 0xDE, 0x12, + 0xED, 0x7D, 0x8E, 0x76, 0xCD, 0x57, 0x52, 0x88, 0xF0, 0x16, 0x9C, 0x80, + 0xE1, 0x00, 0x50, 0x95, 0x61, 0x8E, 0x55, 0xEE, 0xE1, 0xC9, 0x8F, 0xD4, + 0x1C, 0x74, 0xDD, 0x85, 0xCB, 0xE5, 0x7C, 0x8B, 0x24, 0x4C, 0x4B, 0xDA, + 0x16, 0x98, 0xA0, 0x70, 0x58, 0x13, 0x5D, 0x05, 0x0C, 0x3F, 0x61, 0xE3, + 0x14, 0xE2, 0xEF, 0x92, 0xC8, 0x3A, 0xDA, 0xFF, 0x0E, 0x1A, 0xB3, 0x7D, + 0x02, 0x43, 0xDD, 0xE5, 0xE3, 0x8C, 0xE9, 0xFC, 0xD1, 0x66, 0xA2, 0x8E, + 0x4D, 0x81, 0xA4, 0x4C, 0xBF, 0x4D, 0x9B, 0x67, 0x53, 0x63, 0x11, 0x86, + 0x78, 0x54, 0xF0, 0x9E, 0x70, 0x56, 0x1C, 0x5F, 0xBA, 0xC9, 0x1C, 0xAB, + 0xC8, 0x39, 0x8B, 0xC9, 0xE4, 0xB1, 0x07, 0xEA, 0xB5, 0xD4, 0x75, 0xF2, + 0x91, 0x83, 0x1C, 0x2F, 0x73, 0xEC, 0xFB, 0x56, 0x68, 0xA1, 0xC8, 0xAC, + 0xCA, 0x20, 0x3F, 0x6A, 0xE9, 0xBF, 0xC1, 0x1D, 0x00, 0xBC, 0x23, 0x1F, + 0x1E, 0xF8, 0xC3, 0x08, 0xBD, 0x66, 0xA5, 0xF6, 0x5D, 0x77, 0xD5, 0x5A, + 0x6D, 0x04, 0xEB, 0x76, 0x9E, 0xDB, 0x0C, 0x8C, 0x28, 0x9F, 0xCC, 0x4E, + 0x77, 0xFC, 0x00, 0x36, 0xEC, 0xCE, 0x4B, 0x72, 0x06, 0xD1, 0x73, 0x1A, + 0xD8, 0x91, 0x45, 0x55, 0xB8, 0xA7, 0x8C, 0x40, 0xCA, 0xF7, 0xCF, 0x39, + 0x6A, 0x74, 0x63, 0xD3, 0x71, 0x76, 0xA4, 0x59, 0xB8, 0x8C, 0xB5, 0x4E, + 0xCA, 0x12, 0x35, 0xB5, 0x87, 0x9F, 0xA9, 0x94, 0x07, 0x67, 0x4D, 0xF0, + 0xDF, 0x97, 0x0F, 0x53, 0x68, 0xCC, 0x67, 0x26, 0xF8, 0xF5, 0xBE, 0xAD, + 0x1E, 0x95, 0xD0, 0x90, 0x88, 0x27, 0xA8, 0x3D, 0x4F, 0xA1, 0x58, 0xDE, + 0x8F, 0xBC, 0x36, 0x2F, 0x36, 0x0B, 0x38, 0x9A, 0x51, 0x95, 0xA2, 0xE5, + 0x8F, 0xC5, 0x1D, 0xE4, 0x2E, 0x27, 0x9D, 0xEA, 0x43, 0xD7, 0x07, 0x02, + 0x0B, 0x26, 0x85, 0xD3, 0xEC, 0xA3, 0x67, 0xA9, 0xC3, 0x23, 0xFA, 0x46, + 0x5F, 0x9C, 0x64, 0xD5, 0xCC, 0x7D, 0x75, 0xE3, 0x51, 0x32, 0x31, 0x1F, + 0x51, 0x99, 0xF0, 0x57, 0x30, 0xC9, 0x22, 0xA0, 0x2B, 0xA3, 0xA7, 0x7A, + 0x26, 0x21, 0x91, 0xD1, 0x75, 0xD4, 0xB7, 0x0B, 0xC5, 0x96, 0x71, 0x66, + 0x2D, 0x5E, 0xDA, 0x71, 0x48, 0xEA, 0xAC, 0x97, 0x8B, 0x23, 0xD5, 0x49, + 0xC2, 0x66, 0x1D, 0x62, 0xFC, 0x06, 0x17, 0xA1, 0xEC, 0x71, 0x17, 0xA0, + 0x3B, 0xE3, 0xF0, 0xF7, 0x0D, 0xCB, 0x84, 0xB6, 0x7C, 0xC0, 0x42, 0x0E, + 0xB8, 0xA3, 0x8C, 0x31, 0x4A, 0x9A, 0xAA, 0x97, 0xFC, 0x67, 0xB1, 0x75, + 0xC6, 0x51, 0xFC, 0x28, 0x69, 0xD0, 0x43, 0x28, 0x54, 0xB9, 0xAE, 0xBE, + 0x44, 0x7A, 0x18, 0x36, 0x39, 0x26, 0x46, 0x29, 0x33, 0x0E, 0x15, 0xAF, + 0x03, 0x21, 0x07, 0x87, 0xDE, 0x30, 0xE3, 0xE5, 0xDA, 0x34, 0x81, 0xE5, + 0xE2, 0xCD, 0x6B, 0xEE, 0xEF, 0x95, 0xD3, 0x2C, 0x7B, 0x31, 0x15, 0x56, + 0xB4, 0x77, 0xDA, 0x40, 0xFD, 0x59, 0xB9, 0xDF, 0xEC, 0x39, 0x2B, 0x6C, + 0x18, 0x7E, 0xCA, 0x99, 0x5E, 0x55, 0xF2, 0x61, 0x45, 0x74, 0x2C, 0x50, + 0xB7, 0x42, 0x31, 0xD9, 0x58, 0xAE, 0x75, 0x17, 0x4D, 0xFA, 0xF1, 0x18, + 0x26, 0x6B, 0x2C, 0xD9, 0xE8, 0x98, 0x75, 0xE7, 0x8A, 0xC9, 0x07, 0x63, + 0x6D, 0x55, 0xFD, 0xEE, 0x2D, 0x24, 0x4D, 0x0F, 0x11, 0x7C, 0x0B, 0x48, + 0x99, 0xC0, 0x06, 0x83, 0xC3, 0xF5, 0x90, 0xBD, 0x12, 0xE7, 0xC6, 0x86, + 0x16, 0x8A, 0x63, 0xD7, 0xF8, 0x1E, 0x54, 0xCD, 0x06, 0x20, 0x4C, 0x5C, + 0xC6, 0x15, 0x76, 0x56, 0xE0, 0xE1, 0xDD, 0xE4, 0xC1, 0x63, 0x75, 0x53, + 0xBC, 0xE1, 0x8C, 0xBF, 0x26, 0x41, 0xF9, 0xA9, 0xCC, 0xEE, 0x69, 0xEA, + 0x7D, 0x0E, 0x9F, 0xF2, 0x70, 0x0C, 0x4A, 0xD0, 0x2D, 0x17, 0x47, 0xB0, + 0x66, 0xD4, 0xDF, 0x9A, 0xDC, 0xAD, 0x94, 0xE6, 0x66, 0x3F, 0x0D, 0x57, + 0xB3, 0xAD, 0x90, 0xD0, 0xD7, 0x72, 0x3D, 0x1E, 0x9C, 0xAF, 0x1A, 0x46, + 0x20, 0x8B, 0x48, 0xEA, 0x3A, 0x10, 0x42, 0x32, 0x3D, 0xB9, 0xEB, 0x61, + 0x47, 0x29, 0x61, 0xED, 0xB6, 0x8C, 0x1D, 0x9E, 0xD4, 0x00, 0x34, 0xD9, + 0xAB, 0x16, 0x16, 0x84, 0xAF, 0xC5, 0x79, 0x37, 0xE4, 0xC9, 0xBE, 0x91, + 0x57, 0x4F, 0xFE, 0x87, 0xF7, 0x47, 0x62, 0x99, 0x4F, 0xFA, 0xAE, 0x51, + 0x68, 0x1A, 0xE2, 0x90, 0xB5, 0x62, 0x21, 0xE4, 0x06, 0x14, 0x3D, 0xB5, + 0xC2, 0x34, 0xB0, 0xF3, 0x6B, 0x0D, 0xF7, 0x0F, 0x3C, 0x54, 0xD6, 0x2B, + 0xCF, 0xD8, 0xD1, 0x9B, 0x54, 0x8B, 0x93, 0xBB, 0x15, 0xF1, 0xC5, 0x9F, + 0x24, 0x53, 0x02, 0x94, 0xDE, 0x66, 0x4F, 0x2F, 0x77, 0xF6, 0xE4, 0x4C, + 0x58, 0x19, 0xBB, 0x08, 0x0A, 0x9B, 0xAC, 0x4C, 0xA5, 0xAC, 0x4A, 0x66, + 0x72, 0x01, 0x45, 0x41, 0xDA, 0x86, 0xF9, 0x7C, 0x0A, 0x8E, 0xA6, 0xFD, + 0x10, 0x18, 0x4F, 0x2F, 0xEA, 0x5A, 0xD9, 0x79, 0xD2, 0xD8, 0x3F, 0x02, + 0x11, 0x5F, 0x43, 0x79, 0x3A, 0x40, 0x75, 0x6C, 0xFC, 0x3A, 0x24, 0xEB, + 0xBF, 0xD2, 0xC0, 0xF3, 0xD0, 0xD1, 0x21, 0xA9, 0x84, 0xFB, 0x9D, 0xA3, + 0xF1, 0x0F, 0x57, 0xAE, 0x99, 0xCB, 0x3B, 0xBC, 0x55, 0x88, 0xE6, 0xE1, + 0x7D, 0xC6, 0xDB, 0xA9, 0x35, 0x59, 0x11, 0x26, 0x05, 0x0E, 0x8E, 0x5D, + 0xBE, 0xF1, 0x32, 0x5A, 0xBF, 0xBE, 0xE8, 0x07, 0xB8, 0x80, 0x61, 0x70, + 0xEA, 0x8C, 0x05, 0xC0, 0x4D, 0xBF, 0xE9, 0x63, 0xA1, 0x11, 0xFC, 0x0A, + 0x4B, 0x6D, 0x03, 0x11, 0x86, 0x7A, 0x69, 0x49, 0x15, 0xDA, 0x23, 0x67, + 0xC5, 0x51, 0x3A, 0x5A, 0xAD, 0xCA, 0xAC, 0xF7, 0xD7, 0x6C, 0x0E, 0x2D, + 0xC5, 0x88, 0xD9, 0x95, 0x48, 0x58, 0x70, 0x37, 0xBE, 0x8E, 0xBC, 0xF6, + 0x14, 0x4C, 0xA0, 0x13, 0x9C, 0x8D, 0x58, 0x9F, 0x02, 0xAB, 0x65, 0xCA, + 0x66, 0x73, 0x84, 0x3B, 0xC6, 0xD5, 0x43, 0x9E, 0x1C, 0xCE, 0xA0, 0x00, + 0x59, 0xEC, 0x4A, 0xC0, 0x9D, 0x31, 0x5A, 0xB2, 0x0A, 0x86, 0x23, 0x2A, + 0xCD, 0xCF, 0x18, 0x96, 0xE2, 0xE5, 0xFF, 0x36, 0xBC, 0x66, 0x8A, 0xA7, + 0x8A, 0xE0, 0xF4, 0x06, 0x39, 0x7C, 0xCF, 0x21, 0xEE, 0x17, 0x39, 0x87, + 0x74, 0xA0, 0x73, 0x38, 0xA9, 0x90, 0x6C, 0xC2, 0x1B, 0xF0, 0x69, 0xD8, + 0xBF, 0x6E, 0x44, 0x6F, 0x77, 0x75, 0x1E, 0x45, 0xB5, 0x65, 0xAD, 0xDF, + 0x56, 0x66, 0xFD, 0xA0, 0x59, 0x85, 0xC5, 0x06, 0x0C, 0xBF, 0xD5, 0x17, + 0xA1, 0x48, 0x99, 0x63, 0xEE, 0xF0, 0x7D, 0xAE, 0x3A, 0x7C, 0x6A, 0x7C, + 0xB4, 0xDA, 0xDB, 0x1A, 0xED, 0x70, 0xF9, 0x4D, 0xD2, 0xA4, 0x09, 0xE4, + 0xFA, 0x4B, 0x95, 0xDD, 0x95, 0x7B, 0x3D, 0xD1, 0x52, 0xDB, 0x59, 0x68, + 0xFF, 0xE5, 0x13, 0x39, 0xE5, 0x01, 0x12, 0x7F, 0x9A, 0x0E, 0xFF, 0x35, + 0x75, 0x6A, 0x56, 0xEA, 0x66, 0x91, 0xF7, 0x3E, 0x71, 0x86, 0x6C, 0xC3, + 0x11, 0x1B, 0x04, 0x4C, 0x98, 0x13, 0xA1, 0x35, 0x23, 0x96, 0xC9, 0x8C, + 0xFB, 0x43, 0x96, 0x4B, 0xC0, 0x1F, 0x30, 0x95, 0xAA, 0x8B, 0x27, 0x16, + 0x6C, 0x91, 0x0D, 0x62, 0xAB, 0x87, 0x1A, 0xDA, 0x61, 0xB1, 0x2E, 0xBC, + 0x19, 0xA8, 0xF0, 0x32, 0xD7, 0x06, 0x6F, 0x82, 0xFD, 0x5F, 0xF1, 0x08, + 0x5E, 0x97, 0x83, 0xEF, 0xB0, 0x91, 0xC2, 0xE6, 0x37, 0x47, 0xFC, 0xD1, + 0xE7, 0x6C, 0xC1, 0x1A, 0xAF, 0x91, 0xDF, 0x5C, 0x2D, 0x1B, 0xBC, 0x6A, + 0x10, 0xAC, 0xAE, 0x2C, 0x34, 0xCD, 0xD2, 0x6B, 0x15, 0x07, 0xEA, 0xD0, + 0x6C, 0x3E, 0x19, 0x14, 0xEF, 0x35, 0xA4, 0x2B, 0x17, 0xF8, 0x2F, 0x48, + 0x0D, 0x5C, 0x70, 0xE2, 0xFF, 0x94, 0x2B, 0x59, 0x3C, 0xDE, 0x2F, 0x14, + 0x84, 0x5F, 0x0F, 0xF3, 0xA0, 0xFC, 0x40, 0xBE, 0xFA, 0xAE, 0x97, 0xC7, + 0xC6, 0xF3, 0xB5, 0xC2, 0x50, 0xBB, 0xA3, 0xB8, 0xC1, 0x7D, 0x6B, 0xE9, + 0x87, 0x98, 0x8B, 0xBE, 0x19, 0xA5, 0xAC, 0xB1, 0x8D, 0x6C, 0x67, 0x94, + 0x95, 0x7C, 0x60, 0xCC, 0x0B, 0x75, 0x24, 0xB9, 0x54, 0x7D, 0xD4, 0x4D, + 0x9B, 0xF2, 0xA6, 0xFB, 0xC0, 0x78, 0x38, 0x90, 0x19, 0x5A, 0x62, 0x85, + 0x3A, 0x34, 0xD8, 0xCD, 0xA1, 0xA5, 0xD9, 0xC0, 0xC5, 0xB3, 0x6E, 0x26, + 0x13, 0xCF, 0x7C, 0xC1, 0x50, 0x6D, 0x80, 0xCE, 0xF9, 0xA7, 0xFE, 0x2F, + 0x14, 0x53, 0x03, 0x0E, 0xFE, 0xB4, 0xA2, 0x75, 0x0A, 0xB4, 0xD9, 0xDB, + 0xEA, 0xBC, 0xF1, 0xB0, 0x8E, 0xE5, 0x33, 0x49, 0x16, 0xCD, 0x3B, 0x7C, + 0x3B, 0x31, 0x51, 0x8D, 0xF2, 0x12, 0xDB, 0x09, 0xA7, 0x06, 0x7E, 0x66, + 0x09, 0x77, 0xA2, 0x3E, 0xB9, 0xA2, 0xA2, 0xEE, 0xFB, 0x9E, 0x84, 0xF1, + 0x77, 0x28, 0xB1, 0x02, 0xF4, 0xE9, 0x74, 0x56, 0x3D, 0x6F, 0x83, 0x2F, + 0xDE, 0x50, 0x4F, 0xAA, 0x2C, 0xC9, 0x8A, 0x71, 0x45, 0xE1, 0x79, 0x4D, + 0x9B, 0xC0, 0xC0, 0x8B, 0x33, 0x7D, 0x3F, 0x07, 0x2B, 0x4C, 0x16, 0x4F, + 0xD1, 0xFB, 0x28, 0xB8, 0x7B, 0xF2, 0x4F, 0xA8, 0x56, 0x84, 0xDF, 0x61, + 0xEC, 0x1F, 0x4D, 0x95, 0xC5, 0xD7, 0x90, 0x4D, 0x38, 0x35, 0xE5, 0x96, + 0xBA, 0x6D, 0x31, 0xAE, 0xE7, 0xAC, 0xE6, 0xDD, 0x05, 0x5E, 0xD4, 0xF5, + 0x47, 0x5B, 0xEA, 0xA3, 0x36, 0x7C, 0x58, 0x04, 0x41, 0x3C, 0xEC, 0xC6, + 0x70, 0x59, 0xEC, 0x4D, 0xE3, 0x80, 0x59, 0x6D, 0xA1, 0x3A, 0x31, 0xA1, + 0x50, 0xB7, 0x10, 0xC0, 0xC4, 0x47, 0x87, 0xAB, 0xEA, 0x4B, 0xFD, 0xF6, + 0x5C, 0xA8, 0x62, 0x40, 0x3E, 0x89, 0x1D, 0xE1, 0x9B, 0x04, 0x1F, 0x22, + 0x2B, 0xAF, 0x0B, 0xFC, 0xD1, 0x64, 0x4B, 0xCE, 0xC4, 0xF9, 0x19, 0xF4, + 0x21, 0x95, 0xBA, 0xC0, 0x77, 0x4B, 0xFC, 0x15, 0xC7, 0x6F, 0xF7, 0x70, + 0x8E, 0xE2, 0xDF, 0xFE, 0x48, 0xA9, 0x17, 0xA2, 0xAB, 0xA5, 0xFC, 0x2A, + 0x72, 0x08, 0xFF, 0xBC, 0x56, 0xFC, 0xAF, 0xFF, 0x47, 0xEC, 0xCE, 0x29, + 0x17, 0xAE, 0x2D, 0xB3, 0xB3, 0x5F, 0x93, 0x9D, 0x57, 0x2A, 0xF4, 0xDE, + 0xDD, 0xE4, 0xE6, 0x43, 0x73, 0xCA, 0x00, 0x16, 0xB8, 0xD7, 0x15, 0x67, + 0xEB, 0x33, 0x6C, 0xCE, 0x0C, 0xFA, 0x8F, 0xF1, 0x08, 0x6E, 0xC0, 0x3F, + 0xAF, 0x30, 0x9F, 0x2A, 0x98, 0x4C, 0x03, 0x1C, 0x88, 0x7D, 0xBF, 0x7A, + 0xB1, 0xAE, 0x51, 0x69, 0x6D, 0xE9, 0x67, 0x8F, 0x73, 0x3A, 0xB9, 0x58, + 0x9B, 0xB0, 0xE6, 0x14, 0xB2, 0x04, 0x57, 0x85, 0x6E, 0x09, 0x84, 0x53, + 0x1F, 0x6D, 0xAA, 0xD1, 0x42, 0xCA, 0xFA, 0x8D, 0xB5, 0xAA, 0xD6, 0xDC, + 0x9A, 0xC1, 0x90, 0x69, 0x5A, 0xB7, 0xB8, 0x75, 0xD4, 0xD8, 0x5E, 0x2B, + 0x5E, 0xB5, 0x73, 0x4B, 0x42, 0x2D, 0x5C, 0x4C, 0x58, 0x9E, 0xF1, 0xE0, + 0x18, 0x51, 0x5B, 0x68, 0xEA, 0x4E, 0x92, 0x98, 0x62, 0x6C, 0xF8, 0x68, + 0xA8, 0x92, 0x48, 0x8E, 0x2B, 0x11, 0xC7, 0xC5, 0x8E, 0x3A, 0x3C, 0xFF, + 0xB3, 0x93, 0x32, 0xA8, 0x55, 0x94, 0x0E, 0xA1, 0x78, 0x7E, 0x3D, 0xD2, + 0xF0, 0xA2, 0x27, 0x1B, 0x8F, 0x14, 0x73, 0x0B, 0xE7, 0xC9, 0xBE, 0xE5, + 0x49, 0xCF, 0x26, 0xE2, 0xC0, 0x5E, 0x51, 0xE5, 0xAC, 0x32, 0x45, 0x37, + 0x6A, 0x4C, 0xF9, 0xCC, 0x6C, 0x0A, 0x0B, 0xEE, 0x1C, 0x5B, 0x7D, 0xE8, + 0xDF, 0x83, 0x96, 0x0E, 0x7D, 0x6E, 0x87, 0x2D, 0x4A, 0xA8, 0x00, 0x7C, + 0xE9, 0xE2, 0x1A, 0xE7, 0x9E, 0x9D, 0x09, 0x99, 0xA5, 0xB6, 0x46, 0x4D, + 0xDE, 0xD7, 0xA9, 0x9B, 0x13, 0xA5, 0xC9, 0xB1, 0x6E, 0xDC, 0xF6, 0x42, + 0x20, 0x08, 0x86, 0xFE, 0x8A, 0x3E, 0x42, 0x42, 0x33, 0x0B, 0x54, 0xD1, + 0xB9, 0x97, 0x86, 0x03, 0xC9, 0xA7, 0x20, 0x0B, 0x09, 0x46, 0x0C, 0xCF, + 0x6B, 0x7B, 0x74, 0x95, 0xFE, 0xC0, 0x24, 0x8D, 0x12, 0xBD, 0xC9, 0x60, + 0x48, 0x2F, 0x02, 0x77, 0x5C, 0x5F, 0x86, 0xA9, 0x39, 0xB3, 0x7C, 0x77, + 0x10, 0xCE, 0xE9, 0xB4, 0x61, 0x63, 0x63, 0x39, 0x86, 0x89, 0x97, 0x4A, + 0xD3, 0x16, 0x51, 0x1F, 0x8E, 0xFC, 0xF0, 0x51, 0xF4, 0x5D, 0x62, 0x73, + 0xF3, 0x47, 0x82, 0x04, 0xF0, 0xD8, 0xD8, 0xD5, 0x16, 0x63, 0x96, 0xBE, + 0xF5, 0xB5, 0x4A, 0x70, 0xCB, 0x8B, 0x23, 0xF5, 0xB0, 0xEE, 0x0F, 0xFA, + 0xC7, 0x9A, 0xA5, 0xB1, 0x6B, 0x39, 0x53, 0x90, 0xAF, 0xF8, 0x9F, 0xCC, + 0x99, 0xE4, 0x65, 0x7A, 0x69, 0xBD, 0x2B, 0x1F, 0x27, 0x3F, 0x87, 0x69, + 0x2D, 0x1E, 0x9F, 0xC2, 0x96, 0xE9, 0x64, 0xEC, 0xF8, 0x34, 0x30, 0xA1, + 0xC3, 0xAF, 0x77, 0x55, 0x42, 0x30, 0xA7, 0x8E, 0x35, 0x12, 0xBF, 0x1C, + 0xA3, 0x1F, 0x74, 0x43, 0x41, 0xD5, 0x35, 0xC9, 0x02, 0x6E, 0xB9, 0x3C, + 0x12, 0x6D, 0x23, 0x3B, 0xD6, 0xCB, 0x2D, 0x01, 0xCA, 0x96, 0xCB, 0x36, + 0xCD, 0x65, 0x81, 0x04, 0xDA, 0x83, 0xB2, 0x8E, 0x32, 0xB7, 0x85, 0xAE, + 0x7F, 0xC2, 0x2F, 0x05, 0xFE, 0x0C, 0x29, 0x9D, 0x21, 0x8D, 0x9E, 0xED, + 0x9A, 0x45, 0xCD, 0xD6, 0xC1, 0xC5, 0x22, 0xAF, 0x4B, 0xFD, 0xED, 0xEE, + 0x34, 0xA4, 0xD7, 0x51, 0xFE, 0x05, 0x20, 0xE0, 0x25, 0xBF, 0x4D, 0xCE, + 0xCE, 0x8B, 0xC6, 0xBA, 0xF2, 0x8C, 0x13, 0xF2, 0xA5, 0x50, 0xC9, 0xC7, + 0x69, 0x64, 0xA7, 0x9F, 0x42, 0xD4, 0x82, 0xA8, 0x1A, 0x65, 0x36, 0xBD, + 0xF8, 0x42, 0x98, 0x41, 0x76, 0x32, 0x34, 0x19, 0x1C, 0xC9, 0x3E, 0x08, + 0x43, 0xB2, 0x1F, 0xE4, 0x3B, 0x17, 0x75, 0x8F, 0x6A, 0x66, 0xFA, 0xF0, + 0x63, 0xC5, 0xA0, 0x96, 0x0B, 0x9C, 0xB8, 0xA1, 0x76, 0xDE, 0xEC, 0xB2, + 0x8B, 0x28, 0xC0, 0xAC, 0x99, 0x7E, 0x4B, 0x36, 0x50, 0xD1, 0xBC, 0xE6, + 0xBA, 0xEE, 0x8B, 0x4C, 0x5A, 0xD7, 0xD4, 0x59, 0x4B, 0xE2, 0x96, 0xC5, + 0x29, 0xFC, 0xE2, 0x22, 0xE1, 0x90, 0x64, 0x4F, 0xBA, 0x52, 0x20, 0x11, + 0x96, 0x5B, 0x1D, 0x92, 0xC9, 0x6F, 0x32, 0x8E, 0x2D, 0x21, 0xEC, 0xA0, + 0xDE, 0x49, 0xBA, 0x44, 0xB7, 0x86, 0xCE, 0xA8, 0x5D, 0xB0, 0xB2, 0x80, + 0x14, 0x64, 0x2E, 0xA0, 0x3D, 0xB2, 0x17, 0xE2, 0xD3, 0x83, 0x09, 0x30, + 0x26, 0x32, 0x90, 0x8D, 0x41, 0x1F, 0x18, 0x47, 0xC0, 0xC2, 0x35, 0x47, + 0xA1, 0xE5, 0x83, 0x68, 0x96, 0x4E, 0x84, 0x9C, 0x2F, 0x0E, 0x64, 0xBA, + 0x07, 0x18, 0x50, 0xFE, 0x1B, 0xF2, 0xD7, 0xED, 0x05, 0x3A, 0x1A, 0xE8, + 0xC9, 0x89, 0xCE, 0xC0, 0x45, 0x19, 0xB4, 0x3F, 0x98, 0x08, 0xAB, 0x2D, + 0x32, 0xE8, 0x36, 0x58, 0x14, 0xBA, 0xF1, 0x28, 0x37, 0x4D, 0xA0, 0x51, + 0x53, 0xA6, 0xAE, 0xDA, 0x5D, 0xF0, 0xEC, 0x51, 0xDA, 0x22, 0xDB, 0xEB, + 0x6A, 0x79, 0xC6, 0x63, 0x3B, 0x03, 0x1A, 0xF7, 0x8F, 0x87, 0xBB, 0x7B, + 0x85, 0x56, 0x5E, 0x99, 0xCD, 0xFA, 0x4A, 0x6C, 0x13, 0xCF, 0x55, 0x8E, + 0x90, 0xE7, 0xB1, 0x6B, 0x73, 0xF3, 0x44, 0xAF, 0xDB, 0x05, 0xAB, 0x6B, + 0xEF, 0x34, 0x56, 0xF8, 0xAC, 0x76, 0xC4, 0xD0, 0xF7, 0xE9, 0x12, 0xF6, + 0xF1, 0x7B, 0xB9, 0x27, 0x4D, 0xF6, 0xBF, 0x3A, 0xC9, 0x25, 0xD1, 0x08, + 0xF0, 0xE1, 0x0F, 0xF0, 0x0E, 0x1D, 0xBC, 0x31, 0x09, 0x2A, 0x58, 0x37, + 0xC1, 0x25, 0x45, 0x7E, 0x9D, 0x15, 0xEA, 0x53, 0x8B, 0xE9, 0x27, 0x7C, + 0xB1, 0xEC, 0x0A, 0xC0, 0x36, 0x64, 0xBB, 0xC3, 0x2F, 0xB7, 0xD3, 0x95, + 0x24, 0x7D, 0xEA, 0x35, 0x42, 0xDF, 0x48, 0xF5, 0x23, 0x2E, 0xF1, 0x7F, + 0xE8, 0x4A, 0x4E, 0x7B, 0x38, 0xB5, 0xD8, 0x13, 0xE4, 0x73, 0x31, 0x50, + 0x9D, 0x21, 0xE1, 0xD9, 0xDC, 0xF5, 0x87, 0x6F, 0xC1, 0xBC, 0x9F, 0xF5, + 0x1A, 0xEB, 0x61, 0x92, 0xD8, 0x10, 0x88, 0x2B, 0xC7, 0x48, 0x3E, 0xC6, + 0x2E, 0x9B, 0xF4, 0x20, 0x4D, 0x10, 0x5C, 0x45, 0xA2, 0x82, 0x87, 0xBE, + 0x96, 0x54, 0xEA, 0xE7, 0x53, 0xDC, 0x35, 0x36, 0xAD, 0x48, 0x98, 0xD8, + 0xD2, 0x37, 0x0A, 0x82, 0xF7, 0x55, 0x8C, 0x28, 0x01, 0x68, 0x9C, 0x8E, + 0xE0, 0x44, 0x2A, 0xD5, 0x09, 0x95, 0x8F, 0x2D, 0xD7, 0xE7, 0x26, 0xB9, + 0xDC, 0x7D, 0x00, 0x0B, 0x5A, 0xDB, 0x30, 0xDC, 0x58, 0x3F, 0x53, 0x6D, + 0x14, 0xBA, 0x5C, 0x4B, 0x3E, 0xB1, 0x7F, 0x3C, 0xF8, 0x2E, 0x49, 0xB3, + 0x7F, 0x05, 0x44, 0xC6, 0x44, 0x5D, 0x83, 0xFC, 0xD7, 0x15, 0x3F, 0xA3, + 0x55, 0x60, 0x15, 0x13, 0x38, 0xBD, 0x9C, 0x3B, 0xFE, 0xF3, 0x68, 0x06, + 0xD8, 0xF1, 0x7C, 0x19, 0xB4, 0x01, 0xAB, 0x5C, 0x81, 0xBC, 0x69, 0xAD, + 0xF5, 0xB2, 0xF6, 0x58, 0xFB, 0x03, 0xE3, 0x79, 0xE5, 0xC3, 0x63, 0xDB, + 0x23, 0xA5, 0xD8, 0xE9, 0x32, 0xCE, 0xA0, 0x56, 0xD6, 0xFD, 0x53, 0xA0, + 0xA5, 0xB4, 0x1D, 0xE9, 0x44, 0x19, 0x27, 0xEE, 0x3C, 0xE7, 0x5D, 0x11, + 0x14, 0x7B, 0x56, 0xEA, 0x16, 0xB8, 0x2A, 0x4B, 0x7E, 0x7C, 0x6D, 0x7D, + 0xD1, 0x8F, 0x72, 0xFB, 0x75, 0x8F, 0x12, 0x5C, 0x6D, 0x1C, 0xBF, 0x40, + 0xD7, 0x8E, 0x30, 0x09, 0xAB, 0xAE, 0xB3, 0x7D, 0x34, 0x23, 0xCD, 0xA8, + 0x69, 0xB7, 0xD7, 0x78, 0x75, 0x14, 0x82, 0xD5, 0x36, 0x12, 0x9B, 0x70, + 0x3E, 0x94, 0xE7, 0xA5, 0x2E, 0xF4, 0x44, 0x48, 0x82, 0x47, 0xCF, 0xE9, + 0xA1, 0x21, 0x28, 0x60, 0x4C, 0x60, 0x4A, 0xDB, 0xC6, 0x25, 0x0B, 0xF3, + 0x5B, 0x5C, 0x34, 0x7B, 0x6B, 0x8F, 0x1D, 0x6C, 0xCD, 0xA5, 0x03, 0x62, + 0x24, 0xB5, 0x4E, 0x8F, 0x1B, 0x80, 0x61, 0x19, 0x52, 0x95, 0xC8, 0x46, + 0xEF, 0x57, 0xB6, 0x8F, 0x0C, 0xE3, 0xA1, 0xD6, 0x08, 0x16, 0xC8, 0x20, + 0x3C, 0x13, 0x93, 0x42, 0xDE, 0xE4, 0xE2, 0x28, 0xAC, 0x62, 0xA4, 0xCC, + 0x28, 0x83, 0xB0, 0xF9, 0xEB, 0xD8, 0x51, 0xA9, 0x13, 0x3C, 0x53, 0x73, + 0x7A, 0x9D, 0xB5, 0xC4, 0xFA, 0xC8, 0x0D, 0xB8, 0x66, 0x15, 0x8E, 0x65, + 0x79, 0x08, 0xC9, 0x6E, 0x65, 0xC5, 0x09, 0x9B, 0x20, 0x7D, 0xC0, 0xBE, + 0xCC, 0xC3, 0x60, 0xA5, 0x10, 0xBD, 0xC9, 0x50, 0xCE, 0xE2, 0xAF, 0x16, + 0xD7, 0xE0, 0xAC, 0x17, 0x78, 0x35, 0x2A, 0x0A, 0xAF, 0x4C, 0x2C, 0x78, + 0x78, 0x3E, 0xF4, 0x7A, 0xB2, 0x63, 0xD4, 0xBD, 0x4B, 0xC2, 0x8C, 0x0C, + 0x5C, 0x57, 0xBA, 0x90, 0x5C, 0x2D, 0xDB, 0x79, 0xCE, 0x4B, 0x83, 0xB6, + 0x3C, 0xB0, 0x7B, 0xFA, 0x7B, 0x05, 0xAD, 0x0B, 0xA0, 0xF5, 0xBD, 0x24, + 0x42, 0x69, 0x2D, 0xE4, 0x9B, 0x67, 0xB9, 0xBD, 0x6E, 0x18, 0x61, 0xE6, + 0x30, 0x62, 0x01, 0xBB, 0x88, 0xB6, 0xC2, 0x6A, 0x09, 0x87, 0x2C, 0xB9, + 0xC6, 0x11, 0x54, 0xC5, 0x19, 0xA3, 0xBC, 0x54, 0xDD, 0x2C, 0x13, 0xDD, + 0xA1, 0xD2, 0x4D, 0x79, 0x2A, 0xE0, 0x89, 0xB0, 0x3B, 0xC1, 0xF4, 0xB8, + 0xCC, 0x7A, 0xF8, 0x90, 0xC2, 0xEF, 0x2F, 0x1E, 0xEC, 0xBB, 0xDC, 0x8A, + 0x82, 0x9E, 0x94, 0x04, 0x30, 0x1E, 0x33, 0x66, 0x8F, 0x22, 0x47, 0xE4, + 0x80, 0x6A, 0x70, 0x87, 0x47, 0x95, 0x5D, 0x7F, 0x10, 0x66, 0x7D, 0x94, + 0xDB, 0xB2, 0xD2, 0xA6, 0x10, 0xE0, 0xBE, 0x01, 0xB2, 0x5A, 0xB2, 0x66, + 0x01, 0xA2, 0xA1, 0x4E, 0xB5, 0xD5, 0xBE, 0x52, 0x88, 0x11, 0xB0, 0x45, + 0xB6, 0xA4, 0x0B, 0xEE, 0x50, 0x45, 0x0C, 0x9D, 0x3F, 0xA3, 0x4C, 0xEC, + 0x63, 0x6D, 0x99, 0x6C, 0x30, 0x7F, 0xB1, 0x27, 0x38, 0xB7, 0xBC, 0x41, + 0x49, 0x08, 0x7E, 0xBE, 0x84, 0x9C, 0x3C, 0x5C, 0xBA, 0x19, 0xA3, 0x00, + 0xB1, 0x1F, 0xD4, 0x1B, 0x80, 0x9D, 0xA2, 0xFC, 0xCA, 0x70, 0xFF, 0x15, + 0x02, 0x60, 0x69, 0x12, 0x64, 0x40, 0x1D, 0xF1, 0x65, 0x12, 0x52, 0x64, + 0x3A, 0xAC, 0x44, 0xE2, 0x9D, 0xE3, 0x8C, 0x50, 0xD5, 0x59, 0x7E, 0x1A, + 0xE0, 0x26, 0x72, 0xB5, 0x52, 0xB4, 0x79, 0xB9, 0x93, 0x41, 0xA2, 0xC9, + 0x5D, 0x9E, 0x65, 0x70, 0x83, 0x2D, 0x3A, 0x93, 0xE4, 0xDE, 0xC3, 0x40, + 0x35, 0xA2, 0x86, 0x3D, 0x9D, 0x0A, 0x9E, 0x11, 0xEA, 0x81, 0xDB, 0x3B, + 0x99, 0xCB, 0x46, 0xD3, 0x6B, 0x49, 0xB6, 0xDA, 0xE8, 0xF1, 0xB5, 0xA4, + 0x52, 0x15, 0x39, 0xAE, 0xBF, 0xA7, 0xDB, 0xEE, 0xDF, 0x41, 0x24, 0x98, + 0xED, 0xF3, 0x0D, 0x12, 0xBE, 0x59, 0x4E, 0x09, 0xF8, 0x50, 0xDE, 0xE2, + 0x36, 0x9A, 0x12, 0xC4, 0x12, 0xF2, 0xF1, 0xF8, 0x58, 0xC8, 0x86, 0x14, + 0xE1, 0x39, 0x3B, 0x9A, 0xFB, 0x46, 0x7B, 0x98, 0x0D, 0x26, 0xBC, 0xA3, + 0x54, 0xEA, 0x01, 0x72, 0x68, 0x73, 0x2F, 0xD5, 0x08, 0x3B, 0xF3, 0x7B, + 0x7A, 0x9F, 0xDB, 0x29, 0x11, 0x3B, 0xF0, 0x07, 0x4C, 0x46, 0x10, 0xDF, + 0xA0, 0x9D, 0x0A, 0xD8, 0x08, 0x1A, 0x7B, 0xD1, 0xE1, 0x9A, 0x83, 0x77, + 0x1A, 0x2F, 0x1A, 0x16, 0x77, 0x22, 0x75, 0x98, 0xED, 0x70, 0x40, 0x54, + 0x9A, 0x15, 0x56, 0x32, 0x93, 0xC9, 0xA2, 0xD1, 0x48, 0x54, 0x8F, 0xEF, + 0x07, 0x43, 0x4D, 0x9E, 0xC7, 0x07, 0x32, 0x6C, 0x6E, 0xAC, 0x79, 0x8C, + 0x6E, 0x1A, 0x48, 0x99, 0xBC, 0x6A, 0x0D, 0x19, 0x47, 0x5B, 0x1C, 0x3E, + 0x18, 0xCA, 0x54, 0x6A, 0x7F, 0xA4, 0xAB, 0xD3, 0x2B, 0x86, 0xD1, 0x1B, + 0x32, 0xCB, 0x8C, 0x12, 0x1C, 0x0D, 0x28, 0x52, 0xD1, 0x02, 0x47, 0x22, + 0xD2, 0xD4, 0x79, 0xDD, 0xB9, 0x8C, 0x49, 0xD0, 0x26, 0x94, 0xAE, 0x0E, + 0xC1, 0xA3, 0x27, 0x6F, 0x87, 0x5D, 0x30, 0xED, 0xFB, 0x30, 0x13, 0x23, + 0x9C, 0xC3, 0x10, 0x5D, 0x8F, 0x8A, 0x9D, 0xD8, 0x91, 0xC2, 0xA5, 0x70, + 0x8C, 0xC4, 0x56, 0xD0, 0x43, 0xE7, 0xAB, 0x40, 0xD4, 0x8F, 0xBE, 0x1B, + 0xE4, 0xD5, 0xD2, 0xC5, 0x83, 0x8C, 0x27, 0xE9, 0x3B, 0x4F, 0xDB, 0xF4, + 0x79, 0xCA, 0x91, 0x89, 0xF3, 0x78, 0xEB, 0x40, 0x25, 0x80, 0x73, 0xB6, + 0x49, 0x8F, 0x76, 0x74, 0x70, 0xD4, 0x70, 0xDC, 0x77, 0x2F, 0xDD, 0xC2, + 0x1B, 0x12, 0xB1, 0xA1, 0x3F, 0xC5, 0xAC, 0x70, 0x22, 0x1F, 0xB4, 0x8E, + 0x36, 0xC2, 0x5E, 0x93, 0x51, 0x42, 0x93, 0xEB, 0x26, 0x13, 0xDC, 0x38, + 0x03, 0x68, 0xF6, 0xE1, 0x77, 0x3C, 0x81, 0x07, 0xD4, 0x55, 0x70, 0x56, + 0x25, 0x0A, 0x08, 0x36, 0x6F, 0x99, 0xFE, 0x12, 0xDC, 0xA1, 0x35, 0x19, + 0x30, 0xAA, 0x84, 0xB5, 0xE6, 0xF6, 0x23, 0x81, 0xC4, 0x7D, 0x95, 0x35, + 0x4C, 0xD5, 0xFA, 0x12, 0xB4, 0x09, 0x20, 0x00, 0x5C, 0x15, 0xB2, 0xDD, + 0x8B, 0x77, 0x2F, 0x97, 0xDD, 0xFD, 0x4E, 0xEF, 0x20, 0x3F, 0x0F, 0x0C, + 0xA6, 0xE3, 0x40, 0x12, 0xA3, 0xD1, 0x18, 0x0F, 0x88, 0x16, 0x97, 0x48, + 0x6B, 0x76, 0x10, 0xE8, 0x4A, 0x91, 0xA4, 0x9C, 0x05, 0x88, 0xA8, 0xC7, + 0x2B, 0x3A, 0xAB, 0x87, 0xE1, 0x51, 0x21, 0xE5, 0x7B, 0xD4, 0x78, 0xB7, + 0x4C, 0x35, 0x7C, 0x0A, 0x27, 0x63, 0xA8, 0x15, 0xCF, 0xB8, 0xEE, 0x00, + 0x5C, 0xD5, 0x9F, 0x40, 0x5B, 0x8A, 0xEC, 0xA3, 0xFA, 0x64, 0x73, 0xE2, + 0x8E, 0x5E, 0x1F, 0x69, 0x0C, 0xD4, 0x0A, 0x95, 0x2E, 0x62, 0xD6, 0xB1, + 0x7B, 0x51, 0x3E, 0x54, 0x7C, 0x51, 0x00, 0xF2, 0xF0, 0x49, 0xD2, 0xB2, + 0x13, 0xF6, 0x1E, 0x37, 0xC4, 0xE8, 0x2A, 0xC2, 0x5D, 0x50, 0xCE, 0x31, + 0xDD, 0x4F, 0x5E, 0x94, 0x8A, 0x33, 0xF3, 0x52, 0xDC, 0x9E, 0xBE, 0x1B, + 0xE9, 0xA2, 0x97, 0xF4, 0x4A, 0xC0, 0xCA, 0x26, 0x24, 0x2B, 0x94, 0xA3, + 0xBF, 0x41, 0xD5, 0x1E, 0x06, 0xFC, 0x74, 0x34, 0xCA, 0x2A, 0x61, 0x3C, + 0xB2, 0x22, 0xD9, 0x24, 0xF9, 0x8C, 0x37, 0x3E, 0x48, 0x1D, 0xAA, 0xBE, + 0x9F, 0x0F, 0x93, 0x14, 0x94, 0x3A, 0x44, 0x7F, 0x47, 0x7A, 0x1D, 0x07, + 0x33, 0x4F, 0x86, 0x39, 0xF3, 0xD5, 0x23, 0xAF, 0x83, 0xF0, 0xCC, 0xFA, + 0xDA, 0x86, 0x5F, 0x6B, 0x28, 0x77, 0xF2, 0x28, 0x78, 0xFF, 0x7B, 0xB9, + 0xB9, 0x9B, 0xF7, 0x45, 0x46, 0x86, 0x12, 0xED, 0xB0, 0x93, 0x89, 0x7B, + 0xFF, 0xE8, 0x93, 0xB7, 0xAD, 0x08, 0xBC, 0xB2, 0xE9, 0x53, 0xFB, 0x78, + 0xD6, 0xAD, 0xB3, 0x0D, 0x9F, 0xEC, 0x97, 0x49, 0xA6, 0x43, 0xAB, 0xBE, + 0x5E, 0xF9, 0x9D, 0xA0, 0xAE, 0x1D, 0x7C, 0x05, 0xB7, 0x2B, 0x60, 0x3A, + 0x61, 0xE3, 0x69, 0xA8, 0xBA, 0x6F, 0xD5, 0x9E, 0x23, 0x8E, 0x0C, 0x99, + 0x03, 0x24, 0xE9, 0xDC, 0x52, 0xC5, 0x74, 0xE9, 0x14, 0x1F, 0x71, 0x5C, + 0x91, 0x61, 0x6D, 0x2F, 0xB2, 0xA8, 0xCE, 0x88, 0xBE, 0x8E, 0x73, 0x44, + 0xF4, 0x53, 0x9B, 0x19, 0x0A, 0xEC, 0xBE, 0x54, 0xF6, 0x31, 0x00, 0x91, + 0xE9, 0x39, 0x72, 0x0E, 0x07, 0x6A, 0xE9, 0x46, 0x5E, 0xF8, 0xF8, 0x3B, + 0x30, 0x60, 0x8E, 0xD0, 0xBC, 0x05, 0x1E, 0xF5, 0xEE, 0x33, 0x6A, 0xFA, + 0x54, 0xCD, 0x4E, 0x8B, 0xCF, 0xEC, 0xD9, 0x9F, 0x53, 0x3A, 0xEF, 0x21, + 0xC3, 0x6F, 0x09, 0xF8, 0x67, 0xFD, 0x3E, 0x70, 0xE6, 0x6F, 0x63, 0x99, + 0xE5, 0x4F, 0xD6, 0x70, 0xED, 0xFB, 0x3B, 0xD9, 0xFF, 0xAA, 0x30, 0x5C, + 0xBE, 0xB2, 0x28, 0x78, 0xE4, 0xB5, 0x26, 0x82, 0x03, 0x86, 0xB9, 0xDB, + 0x9D, 0xBD, 0x99, 0xD8, 0xF2, 0x70, 0x9C, 0x9D, 0x6C, 0x81, 0xFC, 0xF8, + 0x2B, 0x5E, 0xD4, 0x85, 0x95, 0x62, 0xEB, 0xFA, 0xEB, 0x5A, 0x09, 0xC6, + 0x14, 0x51, 0xE2, 0x43, 0x62, 0xE9, 0x69, 0x31, 0xB1, 0x7B, 0x8F, 0xA6, + 0x4D, 0x76, 0xD5, 0x8C, 0xF1, 0xB2, 0xD5, 0x07, 0x17, 0x21, 0x64, 0x23, + 0xCA, 0x68, 0xF8, 0x60, 0xFF, 0x15, 0x7D, 0xB8, 0xCE, 0xBA, 0xF3, 0x92, + 0x77, 0x04, 0x2F, 0x38, 0x99, 0x1A, 0xF7, 0x91, 0xC9, 0x0C, 0x99, 0x0F, + 0x3A, 0x58, 0x7D, 0x31, 0x01, 0xCB, 0x10, 0xBD, 0xC0, 0xAD, 0x4D, 0x37, + 0x6C, 0x87, 0x3E, 0x9B, 0x4B, 0xE2, 0x68, 0x72, 0x8C, 0x40, 0xED, 0x6F, + 0xD6, 0xC1, 0x8B, 0xA0, 0x82, 0xA7, 0x72, 0x73, 0x79, 0x8A, 0xC9, 0xFB, + 0x57, 0xEE, 0xFA, 0x5D, 0x15, 0x53, 0x2F, 0x81, 0x66, 0x7E, 0xC1, 0x4E, + 0xEF, 0x23, 0xC2, 0xB5, 0x76, 0x61, 0xC1, 0xAC, 0x55, 0x01, 0x72, 0xB6, + 0x2E, 0xC9, 0x56, 0x30, 0x73, 0x77, 0xFE, 0x6F, 0x0F, 0x4F, 0xD4, 0xA3, + 0xA0, 0x51, 0xC1, 0xEC, 0xE9, 0xF8, 0x16, 0x7A, 0x22, 0x9F, 0x55, 0xDA, + 0xA9, 0xC0, 0x31, 0x84, 0xC0, 0x3F, 0x3A, 0x57, 0x9D, 0x41, 0x9B, 0x4A, + 0x5E, 0x84, 0x19, 0xE5, 0x93, 0xC8, 0xAE, 0xFA, 0x91, 0xD8, 0xB8, 0x98, + 0x67, 0xB2, 0x8C, 0x37, 0x4B, 0x4C, 0xAA, 0xF9, 0x7C, 0xCD, 0x67, 0x50, + 0xB2, 0x83, 0x19, 0x88, 0x89, 0xE9, 0xD1, 0xD1, 0x29, 0xA8, 0x9C, 0x94, + 0x24, 0x65, 0x1D, 0xF4, 0x67, 0x9A, 0xF3, 0x91, 0xB2, 0x3B, 0xAB, 0x94, + 0xE9, 0x8C, 0x16, 0xD6, 0x58, 0x17, 0x18, 0x72, 0xB2, 0xBD, 0xCD, 0x1B, + 0x4B, 0x8A, 0x32, 0x70, 0xDC, 0xFC, 0x97, 0x54, 0x73, 0x25, 0x74, 0x9B, + 0xF3, 0x90, 0x0C, 0x04, 0xDD, 0x7C, 0x1A, 0xA8, 0xD7, 0x33, 0xCD, 0xE6, + 0x88, 0xAF, 0x8E, 0x96, 0xD1, 0xE9, 0xFF, 0xCE, 0xEE, 0x3C, 0x1A, 0x42, + 0xA5, 0xB2, 0x56, 0xB3, 0x99, 0xA3, 0x8E, 0xED, 0x2D, 0xE7, 0xAE, 0xB0, + 0x2E, 0x3C, 0xC6, 0x7C, 0xAA, 0xA3, 0x3F, 0xC7, 0xD2, 0x79, 0x04, 0x98, + 0x9A, 0xC0, 0xA4, 0x6A, 0xDC, 0x64, 0x49, 0x24, 0x4F, 0x8B, 0xFA, 0x86, + 0x45, 0x17, 0xE8, 0x7E, 0xF5, 0xD3, 0x8A, 0x56, 0x76, 0xBF, 0x95, 0x50, + 0xE2, 0x4A, 0xE1, 0x3F, 0xF2, 0x50, 0x5E, 0x8F, 0x99, 0x2C, 0xE7, 0xB9, + 0x10, 0x6C, 0x99, 0x7C, 0x39, 0x6C, 0xA3, 0x39, 0xAB, 0x0B, 0xF0, 0x84, + 0x82, 0x7C, 0xD6, 0x59, 0x21, 0x5B, 0x85, 0xFD, 0xFC, 0xF9, 0x15, 0xC2, + 0x35, 0x02, 0x52, 0xD2, 0x16, 0x20, 0x3B, 0x6F, 0x27, 0xFB, 0x7F, 0x11, + 0xBF, 0x05, 0xA1, 0xF1, 0x7C, 0xA1, 0x73, 0x34, 0xFD, 0x40, 0x3D, 0xF0, + 0x36, 0xEE, 0xC8, 0x4B, 0xC7, 0x4F, 0x35, 0x04, 0x1C, 0x69, 0x49, 0x65, + 0x0B, 0xCD, 0x4E, 0x3B, 0xED, 0x5C, 0xA6, 0x42, 0x11, 0xB8, 0xFC, 0x8F, + 0xA9, 0x44, 0x04, 0x55, 0x19, 0x12, 0xA8, 0xAC, 0xE0, 0x4F, 0x13, 0xB5, + 0xA0, 0xBA, 0xAD, 0xFA, 0x84, 0x5E, 0x11, 0x95, 0x4B, 0xC1, 0x19, 0x57, + 0x45, 0x3E, 0x3C, 0x46, 0x92, 0x0C, 0xAD, 0x54, 0xD2, 0xDD, 0x47, 0x6F, + 0xF0, 0x77, 0x0E, 0xAD, 0xD2, 0x5D, 0xEF, 0x39, 0xF3, 0x67, 0xD7, 0x8D, + 0x31, 0x3C, 0xCD, 0x5B, 0xB0, 0x3A, 0x47, 0x4C, 0xD1, 0x16, 0xBB, 0xB2, + 0xDA, 0x65, 0xF0, 0x9B, 0x82, 0x75, 0x3B, 0xF7, 0x46, 0xD3, 0x12, 0xBA, + 0xFD, 0x04, 0x9D, 0x2E, 0x8A, 0x3E, 0x75, 0x88, 0x9A, 0xC7, 0xF3, 0x20, + 0x6B, 0x9E, 0xD7, 0xD3, 0xD3, 0x39, 0x75, 0xF9, 0x76, 0x47, 0xB0, 0xEB, + 0xD1, 0x3E, 0xEA, 0xD9, 0xF4, 0x7F, 0x0B, 0x6C, 0xF6, 0x8B, 0x04, 0xD3, + 0x6F, 0x1F, 0x6D, 0x30, 0xA0, 0xA3, 0x09, 0x45, 0x57, 0x6E, 0xE2, 0x3A, + 0x0E, 0xE7, 0x07, 0x98, 0x24, 0xED, 0xCB, 0x6D, 0x73, 0xB9, 0x4E, 0x09, + 0xE7, 0xA9, 0xDD, 0xF7, 0x28, 0xBE, 0xA6, 0x94, 0x4E, 0x58, 0x92, 0x88, + 0x74, 0x91, 0x85, 0x20, 0x3C, 0x78, 0xBB, 0xA4, 0x13, 0x65, 0xA6, 0x82, + 0x2A, 0xCF, 0x1F, 0x2F, 0x43, 0x78, 0x43, 0x36, 0x32, 0x8B, 0x99, 0xE9, + 0x7E, 0xC3, 0x73, 0x39, 0x3E, 0xC3, 0xFF, 0x42, 0x29, 0x76, 0xD7, 0x99, + 0x3B, 0x7A, 0x0A, 0xCF, 0x7F, 0x40, 0xB7, 0x54, 0x92, 0x23, 0x18, 0x64, + 0xD8, 0xD1, 0x12, 0xC4, 0x91, 0xBF, 0xA1, 0x90, 0x5E, 0x03, 0xB3, 0x1D, + 0xC5, 0xF4, 0xD7, 0xC7, 0x9A, 0x6C, 0x87, 0x90, 0xB8, 0xD2, 0x0C, 0x66, + 0x04, 0x20, 0x73, 0xA9, 0x6A, 0x73, 0xD4, 0xC5, 0x76, 0x5A, 0xBA, 0x4D, + 0xD1, 0x56, 0xFA, 0x99, 0xF6, 0x32, 0x90, 0x5E, 0xFD, 0x19, 0xA4, 0xCD, + 0x85, 0x1F, 0x13, 0x39, 0x0D, 0x2D, 0x6B, 0x01, 0xA4, 0x48, 0x59, 0x0F, + 0x6E, 0x4B, 0xC2, 0xD4, 0xF4, 0x03, 0x71, 0x92, 0x91, 0x0E, 0xCD, 0x5B, + 0x0A, 0x48, 0xB4, 0xA2, 0x1A, 0xA4, 0xF1, 0x93, 0x6F, 0x1B, 0x90, 0x33, + 0xCF, 0x05, 0xF5, 0xB4, 0x0D, 0x7F, 0xE3, 0x88, 0xD7, 0x8F, 0xB6, 0x34, + 0xBD, 0xEC, 0x0B, 0xA2, 0x45, 0xCA, 0x3B, 0xFD, 0xB2, 0x74, 0x10, 0xC0, + 0x16, 0x03, 0x77, 0x1B, 0x0C, 0xBC, 0xFB, 0x36, 0x93, 0x8A, 0x95, 0x52, + 0x14, 0x4A, 0x52, 0x42, 0x4E, 0x8C, 0x5E, 0x59, 0xEC, 0x68, 0xC7, 0xCE, + 0x8F, 0xFB, 0x15, 0x10, 0xA1, 0xDB, 0xA2, 0x6A, 0x6D, 0x49, 0x65, 0x3C, + 0x7C, 0x71, 0xE9, 0x91, 0xD5, 0x25, 0x08, 0x19, 0x66, 0xFD, 0x67, 0xF7, + 0xC3, 0x4C, 0x1A, 0x4D, 0x6E, 0x31, 0xA0, 0x2A, 0x49, 0x57, 0x97, 0xB0, + 0x8E, 0xB4, 0xB6, 0x0D, 0xCE, 0xA5, 0x26, 0x52, 0x6C, 0xA3, 0xB3, 0x0E, + 0xC6, 0x1E, 0x28, 0xA6, 0x4B, 0xEF, 0x20, 0xD1, 0x58, 0x86, 0x64, 0xEF, + 0x49, 0x40, 0x62, 0x43, 0x58, 0x2A, 0x65, 0x5D, 0x8C, 0x91, 0xFE, 0xDB, + 0x85, 0x2D, 0x9D, 0x66, 0x0B, 0x5B, 0xDF, 0xCA, 0xFC, 0xA4, 0x35, 0x01, + 0xA4, 0x0C, 0x3E, 0x82, 0xF6, 0xD0, 0xB6, 0xEB, 0x38, 0x6F, 0x6F, 0xD6, + 0xB0, 0x6D, 0xD5, 0xC8, 0x37, 0x2D, 0xD4, 0x3F, 0x7F, 0xA9, 0xCD, 0x95, + 0xD0, 0xE0, 0xBA, 0x56, 0xF2, 0xF5, 0x2F, 0x38, 0xDA, 0x23, 0x3C, 0x62, + 0xC1, 0x96, 0xAC, 0xE4, 0xA5, 0xAB, 0xD3, 0xE4, 0x42, 0xD6, 0x06, 0x7D, + 0x2F, 0x64, 0xBC, 0x8E, 0xD7, 0x49, 0xF1, 0xA8, 0x08, 0xC0, 0xD4, 0xED, + 0x10, 0x53, 0x99, 0x3F, 0x7E, 0x66, 0xC8, 0x24, 0xDB, 0x12, 0x1E, 0x15, + 0x30, 0x8E, 0x76, 0xD7, 0xCD, 0x65, 0xD4, 0x97, 0xCB, 0xC7, 0xDD, 0x89, + 0x1E, 0x28, 0x7B, 0x08, 0xED, 0x16, 0xBD, 0x78, 0x21, 0x5A, 0xBD, 0x37, + 0x98, 0xD8, 0xE3, 0x81, 0x6B, 0x5C, 0x96, 0x51, 0x45, 0x95, 0xED, 0x2A, + 0x53, 0x4B, 0xDB, 0x96, 0x66, 0xB4, 0xBF, 0x54, 0x55, 0xBC, 0x82, 0xB0, + 0x31, 0x75, 0xA0, 0xA7, 0x5F, 0x4D, 0xED, 0x89, 0xBB, 0x47, 0x87, 0x40, + 0x68, 0xCA, 0x74, 0x3A, 0xD9, 0x3A, 0xC3, 0x10, 0xBA, 0x18, 0xAF, 0xC7, + 0x67, 0x0A, 0x86, 0x31, 0x08, 0xE6, 0x8A, 0xD6, 0x0C, 0xD6, 0xDE, 0xB6, + 0x4A, 0xD7, 0x99, 0xC6, 0x28, 0xBF, 0xD2, 0x82, 0xF6, 0x8C, 0xFA, 0xC9, + 0x0F, 0x81, 0x1A, 0x9B, 0xD1, 0xE5, 0x7C, 0x3B, 0x31, 0x30, 0x14, 0x27, + 0x23, 0x69, 0xD6, 0x3E, 0xB2, 0x94, 0x0A, 0xC4, 0xD0, 0x6F, 0x98, 0x4A, + 0x42, 0xE5, 0x81, 0x51, 0x00, 0xD4, 0x46, 0x1F, 0x6A, 0x96, 0x3B, 0xB1, + 0x03, 0x2F, 0x81, 0x2B, 0xD8, 0xC8, 0x79, 0xCF, 0x3E, 0x3F, 0x53, 0xDC, + 0x88, 0x1A, 0xF8, 0xAF, 0x1C, 0xF5, 0x71, 0x0A, 0xCF, 0xE2, 0x06, 0x29, + 0x76, 0xBD, 0xAA, 0x55, 0x9E, 0x87, 0x72, 0x47, 0x7C, 0x74, 0x36, 0x17, + 0xC7, 0xDF, 0x90, 0xA4, 0x92, 0x2C, 0x72, 0x17, 0x4B, 0xAB, 0x41, 0x7B, + 0xA2, 0xEC, 0x60, 0x0A, 0xB9, 0x25, 0xAF, 0xAC, 0x0F, 0x66, 0x60, 0x92, + 0xC1, 0xA8, 0x5F, 0xD4, 0x67, 0x3F, 0x9D, 0xF4, 0x63, 0x3A, 0x28, 0x21, + 0x2A, 0x8C, 0x4A, 0x4E, 0x89, 0x0B, 0x23, 0x46, 0x81, 0x8D, 0xC1, 0xE0, + 0x0F, 0x87, 0x60, 0xFA, 0xA1, 0xC1, 0x71, 0x1F, 0x10, 0x37, 0xDA, 0xCC, + 0x65, 0xF5, 0xA0, 0x33, 0x84, 0x84, 0x36, 0x0A, 0xED, 0x28, 0x3F, 0x5A, + 0xBE, 0x76, 0x95, 0xB6, 0xA4, 0xBA, 0xE3, 0x92, 0xF8, 0x4B, 0x55, 0x78, + 0x23, 0xBF, 0xAD, 0x7B, 0x39, 0x72, 0xAF, 0xE8, 0xAC, 0xEE, 0x27, 0x69, + 0x0E, 0x8C, 0x57, 0x29, 0x08, 0xDA, 0xCB, 0x35, 0x07, 0x6D, 0xA4, 0x66, + 0xC5, 0xF6, 0xF0, 0x73, 0x3A, 0xDC, 0xD3, 0x08, 0x79, 0x9A, 0x28, 0xCC, + 0xD0, 0xCC, 0x45, 0x7C, 0xED, 0x82, 0x5A, 0x14, 0x29, 0xEF, 0x7E, 0x1E, + 0x80, 0x42, 0x5E, 0x36, 0xD3, 0x21, 0x48, 0x8C, 0xE6, 0xBA, 0x91, 0x42, + 0x54, 0xC6, 0xCF, 0x36, 0x4D, 0x68, 0xE5, 0xC3, 0x18, 0xEF, 0xCE, 0x92, + 0x47, 0xE7, 0x2E, 0x8F, 0xB1, 0x67, 0x88, 0xC6, 0xB4, 0xB3, 0x98, 0xF8, + 0x44, 0x51, 0x6D, 0x44, 0xC5, 0x11, 0xFB, 0x2E, 0xA5, 0x67, 0x48, 0xDE, + 0xED, 0x7E, 0x9C, 0x6F, 0x53, 0x5D, 0xA0, 0xFF, 0x9F, 0x4D, 0x2E, 0x3F, + 0xB6, 0x0D, 0x61, 0x41, 0x35, 0xB7, 0x0B, 0x28, 0x8F, 0x6A, 0x29, 0xD5, + 0xFC, 0x25, 0x42, 0xBF, 0x04, 0x0E, 0xA7, 0xC0, 0xE9, 0xD4, 0xD0, 0x99, + 0x26, 0x0C, 0x3B, 0xEE, 0xE0, 0x66, 0xFB, 0x66, 0x0E, 0xEC, 0x37, 0x13, + 0xE2, 0xD8, 0x2F, 0x90, 0x6B, 0x0D, 0x4E, 0x9C, 0x14, 0xCB, 0xBA, 0xF0, + 0xD6, 0x49, 0x55, 0xAB, 0xFE, 0x96, 0x74, 0x48, 0x07, 0xA2, 0x0B, 0x6F, + 0x91, 0x0B, 0x7D, 0x75, 0x60, 0xB9, 0x11, 0x1B, 0x8F, 0x48, 0x6D, 0x66, + 0xED, 0xDD, 0xCC, 0x83, 0x57, 0x1A, 0x2B, 0x81, 0x7F, 0xC5, 0x7B, 0x3B, + 0x16, 0x92, 0x93, 0x6C, 0xC7, 0xB2, 0xC5, 0x48, 0xAE, 0xB2, 0x2E, 0x4C, + 0x22, 0xE8, 0xF9, 0xD4, 0x91, 0x95, 0xA9, 0xA1, 0x97, 0x48, 0x80, 0x4D, + 0x4D, 0x5E, 0xEF, 0x3E, 0x87, 0xD5, 0x3C, 0xF7, 0xDF, 0xFA, 0x36, 0x4A, + 0xC4, 0x72, 0x0C, 0x2E, 0x0E, 0xA2, 0xC6, 0x61, 0xB1, 0x3D, 0xEC, 0x5A, + 0x6C, 0x9D, 0x16, 0x81, 0x13, 0x61, 0x8E, 0x7E, 0x28, 0xA0, 0x3D, 0xEB, + 0x8E, 0x97, 0x59, 0x0E, 0x24, 0xCF, 0x5B, 0x4D, 0x98, 0xDE, 0x01, 0xC9, + 0x48, 0x97, 0x8F, 0x1C, 0xCC, 0xF9, 0x6B, 0xA8, 0xC0, 0x44, 0x73, 0xEB, + 0x06, 0x17, 0xB2, 0x8D, 0xA5, 0xD4, 0x25, 0x87, 0x0E, 0xE2, 0x6E, 0x0D, + 0x99, 0x7E, 0xCE, 0x06, 0x83, 0x99, 0x3A, 0x8C, 0xE6, 0xC7, 0x99, 0xAC, + 0x3C, 0xF3, 0x0C, 0x50, 0x8F, 0xA7, 0xB2, 0x2B, 0x3C, 0xCA, 0x56, 0x06, + 0x63, 0xA0, 0x9A, 0xB6, 0xF8, 0x84, 0x43, 0x03, 0x04, 0x07, 0x8A, 0xEC, + 0x43, 0xA1, 0x3E, 0x5F, 0xE2, 0x2A, 0x50, 0x02, 0xBA, 0x62, 0xDA, 0x77, + 0x7A, 0xC9, 0x06, 0x50, 0xF5, 0xEE, 0xE0, 0xD0, 0x85, 0xDA, 0x15, 0x54, + 0x36, 0x83, 0x44, 0xC5, 0x14, 0xBD, 0x98, 0xB4, 0x37, 0x27, 0x56, 0x4B, + 0xB2, 0x19, 0x59, 0xEB, 0xD5, 0x95, 0x27, 0xAD, 0x94, 0x2F, 0x36, 0x8D, + 0x61, 0x26, 0x95, 0xEF, 0x4B, 0x05, 0x9E, 0x22, 0xDB, 0x76, 0x06, 0x67, + 0xA0, 0x0D, 0x28, 0x90, 0x5D, 0x6D, 0xFF, 0xA6, 0x2F, 0x2F, 0x8F, 0x1F, + 0x72, 0xEA, 0x88, 0x79, 0xE2, 0xC8, 0x8B, 0xA1, 0x19, 0xC3, 0x09, 0xA3, + 0x21, 0x93, 0xB4, 0x74, 0xB1, 0xDF, 0x53, 0x78, 0x08, 0x25, 0x01, 0xC6, + 0x83, 0x2D, 0x17, 0xD4, 0x6C, 0x44, 0x1C, 0xAE, 0xFD, 0x3D, 0xE8, 0xF0, + 0xA7, 0x93, 0x59, 0x3B, 0x96, 0x01, 0x5F, 0xC1, 0xA4, 0x5F, 0x82, 0xA7, + 0x1D, 0x9C, 0xB9, 0x60, 0x00, 0xF4, 0x02, 0x9A, 0xD0, 0xCF, 0xA7, 0x8F, + 0x25, 0x9E, 0x21, 0xD7, 0x47, 0x9A, 0x18, 0x9E, 0x7F, 0x39, 0x1A, 0x7E, + 0x5E, 0x52, 0x44, 0x11, 0x1A, 0xF0, 0xD6, 0x4D, 0x3E, 0x98, 0x2D, 0x88, + 0x45, 0xDA, 0xC4, 0xBF, 0x51, 0x9F, 0x34, 0xC0, 0xEA, 0x0E, 0xD1, 0x32, + 0xCD, 0xB9, 0x7E, 0x16, 0x01, 0xF2, 0xD4, 0x81, 0x9E, 0x40, 0xC9, 0xBA, + 0xC0, 0x93, 0xFB, 0x88, 0x14, 0x8E, 0x79, 0x2F, 0x85, 0x54, 0x12, 0x29, + 0x54, 0x8E, 0x4F, 0x72, 0x6C, 0x3F, 0x0D, 0xB6, 0xD4, 0x27, 0x91, 0xCE, + 0xAC, 0xC7, 0x7B, 0x9A, 0x77, 0xEA, 0xCB, 0xBE, 0x0C, 0x53, 0xCB, 0x2E, + 0x8E, 0x45, 0x3E, 0xC0, 0x95, 0x76, 0x35, 0x96, 0xF0, 0xAF, 0xA1, 0x91, + 0x7E, 0x64, 0xE8, 0x82, 0xA2, 0x27, 0x3F, 0x90, 0xC6, 0xE3, 0x78, 0x75, + 0xC6, 0x32, 0x3B, 0xDD, 0x91, 0xE4, 0x7C, 0xFD, 0x18, 0x16, 0xAC, 0xEF, + 0x93, 0xEF, 0x76, 0xC4, 0x4C, 0xC8, 0x1F, 0x61, 0xEF, 0xD0, 0x40, 0x0D, + 0xD9, 0x9B, 0x13, 0xB8, 0xAA, 0x6E, 0xFC, 0x9F, 0x1D, 0x5E, 0x7C, 0x7F, + 0xB6, 0x2B, 0xCA, 0x06, 0xF6, 0xDA, 0x06, 0xE0, 0x94, 0x81, 0x8C, 0x49, + 0x75, 0xD6, 0x8A, 0xA3, 0xC0, 0x7A, 0x59, 0xCE, 0xFC, 0x85, 0xB4, 0xCA, + 0xE5, 0xA3, 0x58, 0x64, 0x31, 0xA8, 0x41, 0x2D, 0xF4, 0xCD, 0x56, 0x10, + 0x2A, 0x18, 0x4C, 0x15, 0xBE, 0xD5, 0x1B, 0xAC, 0xC7, 0x68, 0xB4, 0x3C, + 0x60, 0x4D, 0xD0, 0xC2, 0x7A, 0xE4, 0xE1, 0x59, 0x84, 0x95, 0x5D, 0x0C, + 0x1D, 0x74, 0x4E, 0x5A, 0xCC, 0xBB, 0x85, 0xAA, 0xFC, 0x91, 0x81, 0x50, + 0xFC, 0x05, 0xC7, 0x77, 0xC5, 0xE3, 0xCE, 0x70, 0xA1, 0x35, 0xBD, 0xAF, + 0x9C, 0x17, 0xB3, 0x52, 0xD0, 0xE1, 0xC4, 0x6B, 0x12, 0x00, 0x4E, 0xA3, + 0x2E, 0xC2, 0x45, 0xB3, 0x85, 0x1E, 0xBF, 0x4C, 0x1C, 0xC5, 0x49, 0x7A, + 0xB4, 0x9D, 0xCB, 0xB9, 0x2D, 0x93, 0xAF, 0xB3, 0x98, 0x30, 0xA1, 0x17, + 0x93, 0x31, 0xE8, 0x79, 0xBE, 0xFB, 0xE3, 0xF6, 0x8E, 0x8F, 0xBE, 0x11, + 0x43, 0xCB, 0x06, 0x38, 0xDD, 0x33, 0x5A, 0x27, 0x77, 0xF7, 0x59, 0xF9, + 0x12, 0x8E, 0x9E, 0xAA, 0xA6, 0x99, 0x54, 0x9C, 0x26, 0xD8, 0x55, 0x39, + 0x8C, 0xD0, 0x62, 0xC7, 0x2B, 0xE7, 0xAD, 0x43, 0xDC, 0xFA, 0xA4, 0xB7, + 0xB3, 0xB2, 0xEE, 0xDB, 0xC1, 0x1F, 0x37, 0x44, 0x89, 0x30, 0xBC, 0xE6, + 0x6A, 0x17, 0xEC, 0x31, 0xBB, 0x52, 0x52, 0x36, 0x99, 0x49, 0x45, 0x59, + 0x6A, 0x55, 0xD0, 0xC6, 0x5C, 0xAD, 0x1B, 0xE6, 0x2F, 0x1B, 0x71, 0x6A, + 0x3D, 0x78, 0x3C, 0xFD, 0x63, 0x6F, 0x41, 0x6B, 0x4D, 0xA7, 0x83, 0x65, + 0x01, 0xFF, 0x82, 0x0E, 0x0E, 0x04, 0xFC, 0x8B, 0x24, 0xD1, 0x65, 0x3B, + 0xF0, 0x61, 0x78, 0x2A, 0x43, 0x4A, 0xD5, 0xDE, 0xE2, 0x7E, 0x41, 0x15, + 0x76, 0x08, 0xB8, 0x9B, 0x24, 0x2D, 0x2A, 0xD9, 0x3C, 0xA7, 0x17, 0x47, + 0xF7, 0x88, 0xA0, 0xCF, 0xDD, 0x5B, 0x08, 0xB6, 0x05, 0x25, 0x54, 0x80, + 0x93, 0x83, 0x9E, 0x8D, 0xE1, 0x1F, 0xE6, 0x8E, 0x08, 0x4C, 0x06, 0x26, + 0xE2, 0x0B, 0xE5, 0xEE, 0xDD, 0x4D, 0xAB, 0xD0, 0x43, 0x15, 0x95, 0x66, + 0x8F, 0xB6, 0xF8, 0x54, 0xF2, 0xF5, 0x9F, 0x79, 0xB5, 0x08, 0x2E, 0x94, + 0x8D, 0x1F, 0x00, 0x86, 0xEF, 0xF2, 0xB7, 0x1C, 0x9A, 0x01, 0xA9, 0x00, + 0xE2, 0x61, 0x39, 0x47, 0x52, 0xF1, 0x25, 0xA6, 0xA2, 0xCC, 0x82, 0xB4, + 0xE1, 0x93, 0xBE, 0xC4, 0xBF, 0x2E, 0xBA, 0x02, 0x5D, 0x65, 0x09, 0x50, + 0x2F, 0x36, 0x58, 0x82, 0x49, 0x9C, 0xC3, 0x78, 0xD8, 0x1D, 0xD5, 0xBC, + 0xE8, 0x18, 0xA7, 0xD8, 0x9C, 0xB0, 0x15, 0x7D, 0xF9, 0xE1, 0x58, 0xD3, + 0x59, 0xEA, 0x13, 0xEC, 0x9F, 0xD7, 0xF3, 0x35, 0x90, 0xF7, 0x29, 0xC0, + 0x21, 0x7C, 0x55, 0xD4, 0x11, 0x48, 0xF7, 0x6F, 0x6A, 0x00, 0xC5, 0x25, + 0xE5, 0x00, 0x64, 0xC4, 0xB0, 0x31, 0xE5, 0xF2, 0x03, 0x92, 0x9A, 0x07, + 0x47, 0x5E, 0xA0, 0x94, 0x65, 0xAF, 0x5A, 0xB6, 0xFC, 0x4B, 0x48, 0xB6, + 0x4A, 0xCF, 0x4D, 0xCA, 0x8C, 0x16, 0x77, 0x6C, 0xF7, 0x99, 0xBD, 0xCC, + 0x1E, 0x40, 0x55, 0xE2, 0xAA, 0xCB, 0xBF, 0xCC, 0x74, 0x92, 0xA2, 0x8A, + 0x64, 0xC3, 0xE6, 0x17, 0x60, 0x10, 0x72, 0xD1, 0xA0, 0x62, 0xD3, 0x06, + 0xCF, 0x12, 0xAD, 0xE6, 0xBE, 0xC4, 0x76, 0xD7, 0x34, 0x8E, 0xA7, 0xB4, + 0x76, 0xD5, 0x9D, 0xC3, 0xA1, 0x4A, 0xCE, 0xA9, 0xC0, 0x4F, 0x70, 0x15, + 0x91, 0xAD, 0x41, 0x23, 0x44, 0xB8, 0x65, 0x8C, 0x44, 0x49, 0x4F, 0xB8, + 0xBE, 0x45, 0x49, 0xA5, 0xAF, 0x02, 0x66, 0x71, 0x58, 0xB6, 0x8D, 0x40, + 0xAD, 0x4F, 0x89, 0xF4, 0x6F, 0x25, 0x14, 0xB0, 0x62, 0x9A, 0xA6, 0xE8, + 0x72, 0x01, 0x66, 0x02, 0xC9, 0xF2, 0xCE, 0xCA, 0xBD, 0xA1, 0x3A, 0x12, + 0xE4, 0xD4, 0x3A, 0x4B, 0x40, 0xC6, 0xB6, 0x29, 0x00, 0xC9, 0x92, 0x04, + 0x3B, 0xBC, 0xA9, 0x2E, 0xAD, 0x63, 0x7C, 0xC5, 0x84, 0xAE, 0x3D, 0x91, + 0x64, 0x28, 0xB1, 0xA2, 0xA7, 0x7E, 0x67, 0xD5, 0xBF, 0x8B, 0x00, 0x23, + 0x37, 0x87, 0x57, 0x83, 0xA8, 0x2C, 0x13, 0x12, 0x5A, 0x86, 0x67, 0x79, + 0x3A, 0xF7, 0xFA, 0x2B, 0xCB, 0xC2, 0xB6, 0x20, 0xF0, 0xD2, 0x3F, 0x39, + 0x1B, 0x23, 0xA2, 0x11, 0x74, 0x9C, 0xA2, 0x8E, 0x91, 0x4E, 0x70, 0xB3, + 0xE1, 0x85, 0x18, 0xC6, 0x16, 0x4B, 0x25, 0x93, 0xF1, 0x76, 0x74, 0x4C, + 0xA8, 0x9C, 0x81, 0x73, 0xE4, 0x97, 0x54, 0x2A, 0x74, 0x45, 0xD7, 0x3A, + 0x80, 0x36, 0x43, 0x68, 0x91, 0xAE, 0x99, 0x3B, 0xE6, 0x64, 0x28, 0xC1, + 0xFD, 0xE6, 0xD3, 0xFA, 0xCE, 0xE2, 0x63, 0xA2, 0x27, 0xA0, 0x50, 0x83, + 0x9E, 0x90, 0xE9, 0x47, 0x95, 0x27, 0x20, 0x6F, 0x82, 0x4A, 0x88, 0x46, + 0xBB, 0xC6, 0xBA, 0x55, 0x72, 0xA8, 0xBD, 0x21, 0xD7, 0xE7, 0xFC, 0xC2, + 0xCF, 0x30, 0x43, 0x09, 0x80, 0x15, 0xDC, 0x61, 0xFA, 0xE3, 0x46, 0x03, + 0xD6, 0x28, 0x05, 0xC4, 0x24, 0xD3, 0xC6, 0x90, 0x36, 0x4B, 0x58, 0xE0, + 0x32, 0x3A, 0x6B, 0xDD, 0x95, 0xEF, 0x4A, 0xDB, 0x72, 0x8A, 0x85, 0xFD, + 0x1B, 0x72, 0x48, 0xAF, 0xE1, 0x75, 0x0B, 0xAF, 0x65, 0xAA, 0xDC, 0xD1, + 0xBA, 0xB5, 0x6F, 0x15, 0x95, 0xE6, 0x2B, 0x9B, 0x78, 0xE3, 0xCF, 0xB8, + 0xB6, 0x1D, 0xE6, 0xB9, 0xB9, 0xA5, 0x20, 0x53, 0xC4, 0x50, 0xDC, 0xD2, + 0x4A, 0x4D, 0x80, 0x44, 0xF5, 0xFD, 0x68, 0xB0, 0x78, 0x75, 0x79, 0x08, + 0x19, 0xCE, 0x4C, 0xA1, 0x85, 0x51, 0xFA, 0xCB, 0xB6, 0xE6, 0x4B, 0x81, + 0x42, 0x5D, 0xEA, 0xF3, 0x97, 0xC6, 0x68, 0xD1, 0x56, 0x51, 0x52, 0x48, + 0x3D, 0x61, 0xD2, 0x1C, 0x0D, 0x68, 0x4A, 0xC4, 0xDE, 0x06, 0x04, 0x34, + 0x1C, 0xE4, 0xD1, 0x36, 0xED, 0x6D, 0xA7, 0x70, 0x38, 0x89, 0x64, 0x34, + 0xC3, 0xBB, 0x93, 0xA2, 0x75, 0xE6, 0x39, 0xF7, 0x97, 0x1C, 0xBD, 0x8F, + 0xD1, 0xAF, 0x4C, 0x98, 0xF4, 0x7D, 0xD7, 0x71, 0xEE, 0x50, 0x78, 0x72, + 0x86, 0xB0, 0xD4, 0xB9, 0xD0, 0xCB, 0x5B, 0xB1, 0x50, 0x55, 0xFC, 0xC2, + 0xB3, 0x0B, 0x2F, 0xAF, 0x54, 0x32, 0x7C, 0x77, 0x6E, 0xC8, 0x2A, 0x57, + 0xBB, 0x99, 0x8E, 0xB3, 0x93, 0x37, 0x11, 0xFE, 0x23, 0x2C, 0x4B, 0x33, + 0x48, 0x9D, 0x13, 0x05, 0xD9, 0x90, 0xF3, 0x4D, 0xBB, 0x3C, 0x3C, 0xBE, + 0xF2, 0x29, 0x6A, 0xFB, 0xC9, 0x77, 0x21, 0x64, 0x3A, 0xA7, 0xA4, 0x8D, + 0xC8, 0x62, 0x4D, 0xE7, 0x97, 0x96, 0x2D, 0x88, 0xF7, 0xF1, 0x0D, 0x99, + 0x35, 0x09, 0x2B, 0x34, 0xAF, 0x19, 0xB4, 0xBC, 0x0C, 0xBA, 0x35, 0x13, + 0x9F, 0x85, 0x27, 0x98, 0xD7, 0x5A, 0x98, 0x76, 0x41, 0x3D, 0xE3, 0xDC, + 0xB1, 0x57, 0x2F, 0x84, 0xA7, 0xAC, 0x60, 0x28, 0x0A, 0x41, 0xCA, 0xA1, + 0xB6, 0xB4, 0x68, 0xA9, 0x4F, 0xC8, 0xDA, 0x4A, 0x43, 0x89, 0x25, 0x36, + 0xC9, 0xCF, 0x6E, 0x3F, 0x04, 0x73, 0xCB, 0xE7, 0x9E, 0x2A, 0xB6, 0x04, + 0xFF, 0x9F, 0x4B, 0x42, 0x7D, 0x2D, 0x74, 0xAC, 0x3D, 0x6D, 0x78, 0xC7, + 0xA5, 0x34, 0x9C, 0xD2, 0x8A, 0x09, 0x06, 0xF0, 0x80, 0xA9, 0x69, 0x60, + 0xEC, 0x52, 0x70, 0x6B, 0x34, 0x0C, 0x7E, 0xAF, 0x17, 0xA7, 0x48, 0x5E, + 0xAF, 0x85, 0xF7, 0x29, 0xE4, 0x33, 0x54, 0xA2, 0x44, 0x8B, 0xA0, 0x30, + 0xF0, 0xAA, 0xE5, 0xAD, 0x87, 0x5E, 0xF6, 0xA8, 0x67, 0xBA, 0x4A, 0x4E, + 0xA8, 0x85, 0xED, 0x50, 0x2C, 0x4D, 0xBA, 0xC2, 0x89, 0x2F, 0x39, 0x64, + 0x62, 0x9F, 0x4B, 0x8E, 0x60, 0x5B, 0x2C, 0x5F, 0x4A, 0xFA, 0x65, 0xB3, + 0xCD, 0x52, 0x93, 0x43, 0xC1, 0x71, 0x3E, 0xE7, 0xFB, 0x78, 0xAD, 0x32, + 0xEC, 0xF0, 0xB8, 0x2C, 0x72, 0xEF, 0xD8, 0x37, 0xCA, 0x80, 0xFB, 0x4F, + 0x2C, 0x18, 0xF4, 0x6D, 0x88, 0x5E, 0xCB, 0x07, 0xB7, 0xB3, 0x9C, 0x05, + 0x58, 0x84, 0x71, 0xB1, 0xE1, 0x11, 0xD4, 0xC9, 0x63, 0xAE, 0x23, 0x82, + 0xEB, 0xF9, 0x48, 0x97, 0xCA, 0x26, 0x30, 0xC2, 0xF1, 0x37, 0x8E, 0xE6, + 0x53, 0x08, 0x16, 0x5E, 0x2A, 0x24, 0x95, 0xFB, 0x92, 0x68, 0xF5, 0xFC, + 0x34, 0x70, 0x98, 0x6E, 0x2C, 0x54, 0x97, 0x81, 0x11, 0xFC, 0x95, 0xEF, + 0xCA, 0xD3, 0xBF, 0xC3, 0xB5, 0xB5, 0xC0, 0xC7, 0xCE, 0xF3, 0x22, 0x8C, + 0x9F, 0xD7, 0xC7, 0xA2, 0xFC, 0x95, 0xEE, 0x69, 0x94, 0x20, 0x16, 0x5B, + 0x55, 0xA4, 0x48, 0x66, 0x2A, 0x70, 0x91, 0xD5, 0x61, 0x32, 0xBB, 0x34, + 0x61, 0x13, 0x00, 0x59, 0xEA, 0xB7, 0xDE, 0xAE, 0xE0, 0xA2, 0xEF, 0x3B, + 0xF0, 0x1C, 0xA9, 0xC2, 0xFC, 0x02, 0xE3, 0x69, 0x8E, 0xBA, 0xED, 0xAD, + 0xBA, 0x37, 0x52, 0x71, 0x4E, 0x8A, 0xC3, 0xA1, 0x77, 0xA8, 0xDF, 0xA5, + 0x3E, 0x95, 0xF7, 0xEE, 0xEF, 0xD7, 0xBE, 0x46, 0x4F, 0x65, 0x7A, 0xB5, + 0x8C, 0xBB, 0xB7, 0x45, 0xB9, 0x36, 0xA2, 0xD1, 0x44, 0xBE, 0x10, 0x8F, + 0x9F, 0x29, 0xDF, 0xFC, 0x4E, 0xC0, 0x69, 0x49, 0x8E, 0x05, 0x07, 0x7D, + 0x9E, 0xA2, 0x0B, 0x6E, 0x92, 0x47, 0x18, 0x99, 0xF2, 0xF7, 0x62, 0x5C, + 0x38, 0xD9, 0xE6, 0x92, 0x82, 0x37, 0x44, 0xB7, 0xAB, 0x8B, 0x7D, 0xB5, + 0x4D, 0x3E, 0xA4, 0xF3, 0x8F, 0x6B, 0x0B, 0x8B, 0x60, 0xDD, 0x55, 0x2D, + 0x9E, 0xB7, 0xF8, 0x79, 0x9B, 0xCA, 0x8F, 0x76, 0x78, 0x7B, 0x1B, 0xE7, + 0xDB, 0x55, 0xBA, 0x71, 0x0B, 0x7F, 0x7D, 0xEC, 0xF4, 0x2A, 0x7D, 0x7E, + 0xA6, 0xD5, 0xE6, 0x7C, 0x50, 0x6E, 0x11, 0x3A, 0x00, 0x33, 0xA5, 0xB7, + 0xF1, 0x40, 0xF5, 0xDE, 0x62, 0xD5, 0xC9, 0x18, 0x76, 0x70, 0x7C, 0x09, + 0x5A, 0x88, 0x2F, 0x0F, 0x5C, 0xC9, 0x80, 0xB1, 0xEA, 0x55, 0x05, 0x4F, + 0x7E, 0x51, 0x25, 0xF8, 0x82, 0x76, 0xF6, 0x0B, 0x5E, 0xC5, 0x7E, 0xCE, + 0xB8, 0x59, 0x2B, 0x2C, 0x8B, 0x0B, 0x43, 0xDC, 0xC7, 0x74, 0x96, 0x13, + 0xBA, 0x34, 0xD7, 0x69, 0x11, 0x6C, 0x01, 0x4E, 0xC2, 0x8A, 0xD7, 0x38, + 0x10, 0x20, 0xB8, 0xAB, 0x20, 0xA1, 0xA7, 0x10, 0x20, 0xD3, 0x61, 0x07, + 0x01, 0x5C, 0x48, 0x89, 0x87, 0x93, 0xFE, 0x36, 0x05, 0x28, 0x52, 0x07, + 0x35, 0xF0, 0x05, 0x75, 0x0D, 0x26, 0x95, 0x77, 0xEC, 0x41, 0x99, 0xBF, + 0xEB, 0xC4, 0xD8, 0xD1, 0x0A, 0x08, 0x78, 0xC6, 0x6A, 0xEA, 0x52, 0x05, + 0x1D, 0x45, 0x5D, 0x87, 0x80, 0x94, 0x42, 0xD9, 0x5A, 0x1F, 0xBA, 0xAE, + 0x11, 0x86, 0xA1, 0xCC, 0xF9, 0xBA, 0x29, 0xE4, 0xF2, 0x07, 0x91, 0xF1, + 0xDF, 0x17, 0x61, 0x56, 0xF5, 0xEC, 0x19, 0xCC, 0x1F, 0xB0, 0xF5, 0x22, + 0x9F, 0xD1, 0x06, 0x93, 0x6B, 0xE5, 0x98, 0xF6, 0xBE, 0xE1, 0x3C, 0x0E, + 0x62, 0xF5, 0x77, 0xF6, 0x27, 0x7E, 0xDB, 0xB2, 0x96, 0x13, 0xCE, 0x0E, + 0x43, 0x41, 0x14, 0x52, 0x35, 0xAF, 0x63, 0x36, 0xAE, 0x97, 0x2E, 0xB0, + 0x22, 0xCA, 0xC1, 0xEC, 0xC9, 0x98, 0x93, 0xBD, 0xCD, 0x8E, 0x90, 0x6B, + 0x12, 0x30, 0x1D, 0xAA, 0x6C, 0xB4, 0xEF, 0x3B, 0x0D, 0x24, 0xBE, 0x28, + 0xB0, 0xD1, 0xAD, 0x06, 0xDA, 0x82, 0x16, 0x0F, 0xB2, 0xD4, 0xDB, 0x2A, + 0xAC, 0x7B, 0x94, 0x62, 0xF3, 0x3F, 0x29, 0xA6, 0xF3, 0x6F, 0xC5, 0xD6, + 0xBB, 0x81, 0x53, 0xAB, 0x86, 0xE5, 0xA5, 0x63, 0x02, 0xDA, 0xF3, 0x88, + 0x8E, 0xBF, 0xB5, 0x56, 0x1A, 0x79, 0x4D, 0x39, 0xCA, 0xDB, 0xC9, 0xD4, + 0x78, 0xFD, 0x4C, 0xDB, 0x03, 0x10, 0x84, 0x83, 0xAD, 0x4A, 0x13, 0xCF, + 0xB8, 0xD7, 0x58, 0x34, 0x51, 0xD8, 0x13, 0x25, 0x99, 0x46, 0x9E, 0xD6, + 0xD7, 0xDB, 0xE6, 0x2F, 0x6F, 0xAC, 0x12, 0xF1, 0x08, 0xB1, 0x07, 0xB9, + 0x73, 0x61, 0xDB, 0x68, 0xAE, 0x3A, 0xC3, 0xBC, 0x74, 0x02, 0xD3, 0x55, + 0x8F, 0x69, 0x8A, 0x2E, 0x51, 0x84, 0xEA, 0x19, 0x6B, 0xA9, 0x52, 0xC7, + 0x06, 0x47, 0x79, 0xFB, 0xD0, 0x98, 0xC6, 0x7D, 0xF2, 0xBA, 0xF6, 0xE4, + 0xEC, 0x10, 0x69, 0xE0, 0xB8, 0x52, 0x2C, 0x7F, 0xB8, 0x9C, 0x4F, 0xB2, + 0x5A, 0x48, 0x39, 0x05, 0x81, 0xA8, 0x5E, 0x91, 0xD6, 0xFA, 0x84, 0xC9, + 0xE6, 0x12, 0xC6, 0x09, 0x44, 0x3A, 0x69, 0xE9, 0x9C, 0x20, 0x9C, 0x4B, + 0x6E, 0x39, 0xC8, 0x0A, 0xC8, 0x65, 0x28, 0x96, 0xA6, 0x6F, 0x3B, 0x07, + 0x5E, 0xB0, 0xF1, 0x91, 0x27, 0x99, 0x38, 0x23, 0xF9, 0x0B, 0xF1, 0xE1, + 0xC6, 0x01, 0xFB, 0x64, 0xA1, 0x41, 0x4D, 0x49, 0xEA, 0xC6, 0x35, 0xF4, + 0x6A, 0x73, 0xE9, 0x9E, 0x6A, 0x2F, 0xA0, 0x00, 0x06, 0xF7, 0xF6, 0x8C, + 0xD7, 0x3D, 0x7A, 0xC5, 0xEF, 0xBD, 0x91, 0xFD, 0x76, 0x8D, 0x78, 0xAA, + 0x2D, 0x14, 0x0F, 0x01, 0xC8, 0x70, 0x96, 0xF9, 0x8F, 0x83, 0x61, 0xC7, + 0xE4, 0xB2, 0xA6, 0x52, 0xBB, 0xE5, 0x1B, 0x49, 0x16, 0xCC, 0xBE, 0xD7, + 0xAF, 0x76, 0xA7, 0x38, 0x44, 0x4D, 0xF2, 0xAC, 0x23, 0xD2, 0x50, 0x2C, + 0xE7, 0x4E, 0xDC, 0xBA, 0xFD, 0xCB, 0x0C, 0x8A, 0xEA, 0xE7, 0x7A, 0x00, + 0xEE, 0x14, 0xAB, 0xC9, 0x52, 0xCE, 0xA4, 0x38, 0x40, 0xE0, 0x75, 0x5E, + 0x33, 0xCA, 0xA5, 0x20, 0xB7, 0x5D, 0xF9, 0x09, 0x1A, 0xA8, 0xBD, 0xBE, + 0x34, 0xBF, 0xD8, 0x12, 0xF9, 0xF0, 0xC2, 0x63, 0xEE, 0xFF, 0xA9, 0xBF, + 0x5C, 0xD7, 0xD3, 0x3A, 0x40, 0xEC, 0xE6, 0x32, 0x86, 0xA7, 0xA7, 0x0B, + 0xA8, 0x87, 0x7A, 0x3E, 0x5E, 0x53, 0x4B, 0x85, 0x53, 0xFA, 0x9F, 0xA2, + 0xAB, 0xC7, 0x88, 0x16, 0x77, 0x4D, 0x35, 0x06, 0xFE, 0xDA, 0x4A, 0x47, + 0x4F, 0x1C, 0x7C, 0xFF, 0x4C, 0xB2, 0x84, 0x2D, 0x4F, 0x51, 0x7F, 0x65, + 0x4E, 0x1C, 0xA7, 0x92, 0xE6, 0xCD, 0x80, 0x0A, 0xA3, 0xE8, 0xB8, 0x7A, + 0x42, 0xBC, 0x3A, 0x09, 0xEC, 0xE4, 0x7D, 0x2F, 0xBC, 0x27, 0x2A, 0xBD, + 0x8C, 0x6E, 0xE4, 0x48, 0x54, 0x73, 0x6D, 0x1F, 0x15, 0xCD, 0x37, 0x39, + 0x64, 0x12, 0xE3, 0xE4, 0x49, 0x35, 0xCA, 0x83, 0x84, 0xE3, 0xE2, 0x58, + 0xEB, 0xEB, 0x8D, 0xC7, 0x3B, 0x9E, 0xB0, 0xD4, 0x74, 0xF9, 0xC9, 0x09, + 0x58, 0x15, 0xC4, 0x43, 0x18, 0x1E, 0x1D, 0x6D, 0xE2, 0xB1, 0xE7, 0x2A, + 0x50, 0xC6, 0x4F, 0x32, 0x39, 0xAE, 0xC8, 0x9E, 0x6C, 0xFF, 0xF7, 0xD2, + 0xD9, 0xA6, 0x13, 0x85, 0x82, 0xA2, 0xF7, 0x0A, 0xF7, 0x2E, 0x52, 0x96, + 0x41, 0xCE, 0x84, 0x1E, 0x54, 0x53, 0x4A, 0x63, 0x34, 0xA2, 0x56, 0x3A, + 0xD1, 0xAF, 0x52, 0xDF, 0x33, 0x39, 0x37, 0xBD, 0x78, 0x52, 0x01, 0x95, + 0x52, 0xA1, 0x39, 0xE0, 0xEB, 0x33, 0xC5, 0x05, 0x5B, 0x02, 0xB7, 0xFE, + 0xA7, 0x89, 0x7F, 0xE2, 0x30, 0x27, 0xF4, 0xD4, 0xBF, 0x07, 0x44, 0xF8, + 0x6A, 0x56, 0x82, 0xE1, 0x87, 0xE1, 0xFB, 0xBA, 0x06, 0xD1, 0x75, 0xBB, + 0x32, 0x69, 0x61, 0x6B, 0x45, 0x68, 0x87, 0x2C, 0x4C, 0xF2, 0xBE, 0xAD, + 0x27, 0xB7, 0x7B, 0x9E, 0xB2, 0x24, 0x15, 0x44, 0x89, 0x2D, 0x2A, 0xF2, + 0x10, 0xE5, 0x0D, 0x60, 0x44, 0xC8, 0x25, 0x03, 0xAD, 0xC9, 0x64, 0xAA, + 0xD6, 0x90, 0x05, 0x14, 0xD7, 0xFE, 0xBF, 0x3B, 0x0F, 0xD8, 0x76, 0xD9, + 0x76, 0x24, 0xE8, 0xA5, 0xF1, 0x0C, 0xAA, 0x78, 0x4D, 0xF1, 0x43, 0x8A, + 0x5E, 0x8B, 0x40, 0xC2, 0x15, 0xD9, 0x3E, 0x29, 0x75, 0x8F, 0x8D, 0x63, + 0x32, 0x4B, 0xC4, 0xFD, 0x4F, 0x7C, 0x9C, 0x33, 0x6A, 0x21, 0x17, 0xE6, + 0xF7, 0xA5, 0x03, 0x3D, 0x68, 0x3E, 0xC9, 0x2A, 0x46, 0xCB, 0xB1, 0x5F, + 0x69, 0x67, 0xDC, 0x28, 0xD7, 0xA9, 0x0D, 0x08, 0xAA, 0x55, 0x9B, 0xB1, + 0x52, 0x7B, 0x20, 0x28, 0xC2, 0x67, 0x77, 0xBA, 0xB1, 0xC4, 0x81, 0x70, + 0x5E, 0xDD, 0x46, 0x89, 0x16, 0xC9, 0x16, 0x5E, 0x79, 0x16, 0xEC, 0x7C, + 0x5C, 0x5B, 0x6B, 0x15, 0x74, 0x28, 0xE4, 0xB7, 0xFC, 0x59, 0xB7, 0x22, + 0xB7, 0x5C, 0x8D, 0x7A, 0xB2, 0x4F, 0xE4, 0x29, 0x2D, 0xD1, 0x10, 0xBF, + 0xCA, 0x92, 0x90, 0x85, 0x51, 0x76, 0x48, 0x1D, 0x4F, 0x7B, 0x40, 0xC1, + 0xB2, 0xED, 0x91, 0x20, 0x96, 0xD3, 0xD4, 0x46, 0x10, 0xD0, 0xA6, 0xF4, + 0x3F, 0x0B, 0x7D, 0x6D, 0x6C, 0x04, 0xC9, 0x94, 0x23, 0x97, 0x2F, 0xBD, + 0x75, 0x06, 0x68, 0x85, 0xCB, 0x2D, 0xFD, 0xA9, 0xD1, 0xD5, 0xD2, 0x98, + 0x60, 0x74, 0xC8, 0x1D, 0xAD, 0x8A, 0x21, 0xD3, 0x54, 0x8F, 0x20, 0xBE, + 0x06, 0x3D, 0x34, 0xE4, 0x95, 0x78, 0x55, 0x8E, 0x70, 0xC5, 0xB5, 0x3B, + 0x68, 0x58, 0x2F, 0xC2, 0x16, 0xEC, 0x7F, 0x85, 0xC0, 0x05, 0x28, 0xB7, + 0xBF, 0x33, 0x3F, 0x0D, 0x83, 0xC7, 0x93, 0x36, 0x97, 0x24, 0x18, 0x0A, + 0x43, 0x28, 0xFF, 0x90, 0xA1, 0x38, 0xF5, 0xCE, 0x27, 0xCA, 0xD7, 0x47, + 0x46, 0xBD, 0x40, 0x7A, 0xF2, 0x49, 0x2D, 0x56, 0x1B, 0xAD, 0xDA, 0x00, + 0x51, 0x74, 0x44, 0xA3, 0x09, 0x25, 0xE7, 0xB9, 0x13, 0xA8, 0x51, 0xED, + 0xED, 0xDB, 0xB1, 0x54, 0xFB, 0x5F, 0x38, 0x30, 0x0D, 0x4B, 0x4B, 0x92, + 0xB5, 0x2B, 0x45, 0x5E, 0x41, 0xFB, 0x27, 0xC4, 0x17, 0xDF, 0x82, 0x3D, + 0x9C, 0xD3, 0xF9, 0x8A, 0x0E, 0x4A, 0x2F, 0xA1, 0x4D, 0xF4, 0x7C, 0x26, + 0xFB, 0x8A, 0xA9, 0xBC, 0xB3, 0xE8, 0x3D, 0x11, 0x5A, 0x2B, 0x9D, 0x7D, + 0xDA, 0xE7, 0x85, 0x19, 0x9F, 0x78, 0x70, 0x5A, 0x5C, 0xDE, 0x88, 0x40, + 0x8C, 0x09, 0x5A, 0x0A, 0x2E, 0x0C, 0x6E, 0xF2, 0xFA, 0x9A, 0x00, 0xAC, + 0x2A, 0x29, 0xB1, 0x30, 0xB1, 0x19, 0x0A, 0x1E, 0x01, 0x6C, 0x02, 0x2F, + 0x6F, 0x1D, 0xDF, 0x77, 0x45, 0xF6, 0x81, 0x1F, 0xBC, 0x2D, 0x55, 0x2D, + 0x31, 0xC9, 0x34, 0x9A, 0xE3, 0x04, 0xC7, 0xD1, 0x1D, 0xA2, 0xE1, 0x5D, + 0xD4, 0xFF, 0x2F, 0xD5, 0x74, 0x1B, 0xAF, 0x49, 0xA3, 0x2A, 0xE2, 0x31, + 0x8D, 0x7E, 0x3B, 0x21, 0x64, 0x54, 0x8D, 0x52, 0x64, 0x58, 0x96, 0xFF, + 0x83, 0x4F, 0x43, 0xA8, 0x4A, 0xDD, 0xB0, 0xFE, 0xC7, 0x4F, 0x8C, 0xDD, + 0xA3, 0x02, 0x30, 0xCA, 0xC2, 0xB2, 0x59, 0x17, 0x5D, 0xB3, 0xD7, 0x0A, + 0x66, 0x4D, 0xF6, 0x7B, 0x38, 0xA2, 0x67, 0xDA, 0x37, 0x3C, 0x69, 0xF0, + 0x89, 0xE5, 0x57, 0xBA, 0xAF, 0x7C, 0x0C, 0x64, 0x3A, 0x5B, 0x8D, 0xD5, + 0x33, 0xE4, 0xBC, 0xFD, 0x45, 0x44, 0x04, 0x23, 0xDB, 0x03, 0x3D, 0xCD, + 0xA1, 0xA8, 0x6A, 0xE6, 0x9E, 0xDB, 0x1D, 0xBF, 0x10, 0xBB, 0x32, 0xD8, + 0x6A, 0x47, 0xDB, 0x83, 0x24, 0xE4, 0x1B, 0x4C, 0xC3, 0xDE, 0x5B, 0x3D, + 0xD5, 0x1E, 0x69, 0x51, 0xA3, 0x94, 0xFF, 0x97, 0x54, 0x44, 0xDF, 0x20, + 0x41, 0xD8, 0xE2, 0xFE, 0x72, 0xC7, 0x0B, 0x99, 0x0B, 0x1D, 0x49, 0x09, + 0xA9, 0xBE, 0xE4, 0x66, 0xD1, 0x16, 0x49, 0x8A, 0xE9, 0xBD, 0x7D, 0xEF, + 0xCF, 0xE2, 0x69, 0x2A, 0x51, 0x28, 0xCC, 0xD6, 0x80, 0xC7, 0xCE, 0x9C, + 0x9E, 0x20, 0x1D, 0x42, 0x00, 0x5F, 0x3C, 0xCC, 0x0B, 0x10, 0x40, 0xE3, + 0x7A, 0xB6, 0x2A, 0x34, 0xB6, 0x44, 0x50, 0x6F, 0x9B, 0x6E, 0xC5, 0xE5, + 0xE1, 0x94, 0x0D, 0x0C, 0x9B, 0xF7, 0x35, 0x91, 0xFD, 0xCE, 0x65, 0x1A, + 0x79, 0xE1, 0x20, 0x69, 0xAD, 0xB4, 0x92, 0xC2, 0x58, 0x85, 0xF9, 0x45, + 0x1C, 0x98, 0x46, 0xC7, 0x23, 0xA4, 0xDD, 0x81, 0x7C, 0x93, 0x81, 0x55, + 0x1D, 0x47, 0x7B, 0x23, 0x18, 0xB4, 0x7D, 0xFF, 0x03, 0xA5, 0xE0, 0x78, + 0xE3, 0x57, 0xA3, 0x17, 0xB3, 0xB1, 0x01, 0x88, 0x03, 0xA9, 0x10, 0x0B, + 0x35, 0xFE, 0x67, 0xFA, 0x67, 0x6F, 0xD3, 0xF5, 0x25, 0xCB, 0x75, 0xA0, + 0x4F, 0x39, 0xD6, 0x5B, 0xD0, 0x65, 0xD7, 0xA8, 0x77, 0xBB, 0xD8, 0x60, + 0xAF, 0x2B, 0x9D, 0x37, 0x19, 0xFA, 0x83, 0xF8, 0x52, 0x57, 0xDA, 0x2D, + 0xEF, 0xBC, 0x17, 0xAA, 0xC6, 0x97, 0xF4, 0xC5, 0xEF, 0x16, 0x81, 0xA7, + 0xBF, 0x27, 0x49, 0xEA, 0x7A, 0x23, 0x6F, 0x31, 0x6D, 0x62, 0x5B, 0xB6, + 0xF3, 0x61, 0xE1, 0xFA, 0x87, 0x72, 0xE8, 0xE1, 0x0C, 0x89, 0x6B, 0x53, + 0xF0, 0x7F, 0x09, 0x9D, 0x7E, 0x1D, 0x8C, 0x02, 0xFE, 0x29, 0xAA, 0xBD, + 0x6C, 0xB1, 0x68, 0x67, 0xCC, 0xA6, 0xEA, 0xAE, 0xA9, 0x84, 0xDD, 0xC4, + 0x44, 0xF7, 0x2E, 0x22, 0x8C, 0xA5, 0x07, 0xE7, 0xEE, 0xE5, 0xC6, 0xB5, + 0xF3, 0x5A, 0x41, 0xD4, 0x02, 0x2A, 0xE6, 0x1E, 0x79, 0x5C, 0x4B, 0x1B, + 0xED, 0x9F, 0x2A, 0xBA, 0xB6, 0x0E, 0x9B, 0xAB, 0x83, 0x2D, 0xF0, 0x84, + 0x35, 0x83, 0xA2, 0xF4, 0x2C, 0xB6, 0x2F, 0x4C, 0xE9, 0x8B, 0xF6, 0xA4, + 0x5C, 0x8A, 0xEC, 0x01, 0x9A, 0x2E, 0x80, 0xC0, 0x6C, 0x5B, 0xAC, 0x92, + 0x07, 0xAB, 0x93, 0x2D, 0x5D, 0x77, 0x7A, 0xA3, 0xA1, 0xDB, 0x8F, 0x05, + 0x51, 0xD9, 0x92, 0x98, 0x1E, 0xD1, 0x23, 0x01, 0xEC, 0x7E, 0xB7, 0xB8, + 0x4F, 0xA7, 0xCD, 0xCC, 0x5F, 0x76, 0x64, 0xDD, 0x06, 0xA9, 0xC9, 0x98, + 0xD2, 0x3C, 0xB8, 0x06, 0x4B, 0x79, 0x28, 0x9E, 0x14, 0x10, 0xFB, 0x39, + 0xDC, 0xF9, 0xE1, 0xE5, 0x27, 0xFB, 0x89, 0x8C, 0x66, 0xB6, 0xFE, 0xC1, + 0x13, 0x0F, 0x7C, 0xAA, 0x6A, 0x02, 0x45, 0xB1, 0x18, 0xD8, 0x3A, 0x2C, + 0x94, 0x09, 0x8B, 0x66, 0xED, 0xE9, 0xD7, 0x5E, 0xA2, 0x48, 0x01, 0x8D, + 0x8D, 0xC7, 0x05, 0x6A, 0xD3, 0x67, 0x07, 0xFC, 0x22, 0x28, 0xE8, 0x0F, + 0xCD, 0xFF, 0x12, 0xD5, 0xED, 0x64, 0x3F, 0xE5, 0x89, 0x08, 0x41, 0x2C, + 0x49, 0x4D, 0x07, 0x7D, 0xF8, 0x2C, 0x28, 0xB5, 0x2F, 0xCB, 0xF6, 0xC0, + 0x68, 0xDB, 0x0E, 0xFF, 0x92, 0x06, 0xCC, 0x15, 0x17, 0xDD, 0xA7, 0xF4, + 0xA9, 0x7C, 0x49, 0xFF, 0x91, 0x8B, 0xBE, 0xA5, 0xDC, 0x43, 0x5B, 0xD9, + 0x17, 0x17, 0x4A, 0xBC, 0x27, 0xAC, 0x90, 0xC4, 0xC7, 0x68, 0x9F, 0x84, + 0x29, 0x4E, 0x52, 0xF4, 0x6D, 0x29, 0x30, 0xA7, 0xB4, 0x87, 0x42, 0x4F, + 0x93, 0x1D, 0x71, 0x7A, 0xC4, 0x97, 0x7C, 0xEB, 0xB1, 0x55, 0xDA, 0x95, + 0xA5, 0x48, 0xC8, 0xA3, 0xFF, 0x2E, 0xE0, 0x2F, 0x5B, 0xE1, 0xA3, 0x2A, + 0x93, 0x2A, 0x34, 0x30, 0x19, 0x63, 0x45, 0xB1, 0x7D, 0x68, 0x95, 0x23, + 0xCD, 0xE1, 0x79, 0x1B, 0x4D, 0x10, 0x45, 0x0C, 0x9B, 0xF3, 0x7A, 0x13, + 0x78, 0xC1, 0x06, 0x09, 0x7E, 0x24, 0xAE, 0xDE, 0xB7, 0xE0, 0x91, 0x12, + 0x4C, 0x0C, 0xA3, 0x0F, 0xA9, 0xFE, 0xB5, 0x2E, 0x13, 0x16, 0x87, 0x9F, + 0x89, 0xBD, 0x33, 0x72, 0xF9, 0x34, 0xBC, 0x50, 0xA3, 0x60, 0x49, 0xED, + 0x65, 0x04, 0xD3, 0xB7, 0x94, 0x95, 0x8D, 0xFA, 0xE9, 0xE5, 0x8C, 0x6F, + 0x72, 0xEB, 0xE6, 0x21, 0x77, 0x6E, 0xCE, 0x77, 0xEE, 0xFC, 0xDA, 0x4E, + 0x93, 0xDA, 0x1E, 0xCD, 0xA3, 0xB0, 0xB1, 0x40, 0x37, 0xC8, 0x7B, 0x3E, + 0xFF, 0x8D, 0x99, 0xAF, 0xB7, 0x79, 0x18, 0x6D, 0xF6, 0xB0, 0x7E, 0xA1, + 0xFD, 0x0F, 0x55, 0x98, 0x65, 0xCD, 0x74, 0x64, 0x4C, 0x97, 0x63, 0x48, + 0xC1, 0x0C, 0x24, 0xBE, 0xC9, 0x92, 0x8E, 0x8F, 0x15, 0x66, 0x0A, 0x02, + 0x13, 0xC2, 0x5B, 0x9F, 0xB2, 0x03, 0xD1, 0xC3, 0x0A, 0xCE, 0x56, 0x6E, + 0x26, 0xD1, 0x55, 0x4E, 0xFA, 0xE9, 0xCB, 0x48, 0xA5, 0x74, 0xCC, 0x59, + 0x54, 0x92, 0x40, 0x15, 0x07, 0x5D, 0x92, 0xAD, 0xCF, 0x7C, 0x75, 0x2D, + 0x0C, 0xEE, 0x5B, 0x75, 0x99, 0xB5, 0x66, 0x9B, 0xC6, 0x62, 0xAC, 0x84, + 0xC8, 0x69, 0x53, 0xA3, 0xD3, 0xAC, 0x64, 0x1F, 0x3C, 0x6B, 0xD4, 0xB8, + 0x57, 0x79, 0x20, 0xDB, 0x28, 0xD8, 0x0B, 0xB0, 0x40, 0x72, 0x76, 0x40, + 0x51, 0xEC, 0xBC, 0x36, 0x4A, 0xC7, 0x01, 0x55, 0x1D, 0x76, 0xE8, 0xB3, + 0xF6, 0x5B, 0x38, 0x9A, 0x01, 0xFE, 0x00, 0xE0, 0x5B, 0xF6, 0x3F, 0x5D, + 0xC2, 0x55, 0x0E, 0x1A, 0xB6, 0xC1, 0x88, 0x43, 0xB9, 0xB8, 0xE5, 0xDA, + 0xF9, 0x6D, 0xBC, 0x96, 0x3F, 0xC5, 0xB3, 0xC2, 0x14, 0xFF, 0xB8, 0x24, + 0x70, 0x4D, 0x8F, 0xF2, 0x65, 0xD9, 0x52, 0xE2, 0x6F, 0x95, 0x47, 0x0F, + 0xEF, 0xD3, 0xBD, 0xF0, 0x93, 0xF6, 0x77, 0x7C, 0x4B, 0xDD, 0x09, 0xA1, + 0x9D, 0x14, 0xB7, 0x09, 0x75, 0x5A, 0xD5, 0xE7, 0xCD, 0xB4, 0x4E, 0xC9, + 0xB2, 0xCC, 0xEB, 0xA7, 0x13, 0x8D, 0xF1, 0xBE, 0x7B, 0xF1, 0x3C, 0x03, + 0xDC, 0xAE, 0x73, 0x50, 0xC1, 0x79, 0xDC, 0x1E, 0xC1, 0x3A, 0xD1, 0x23, + 0x9D, 0xF1, 0xF3, 0x87, 0x18, 0x5B, 0x97, 0x09, 0x53, 0xF2, 0x61, 0x89, + 0x2D, 0xD7, 0x20, 0x3F, 0x40, 0x85, 0x83, 0x1F, 0x69, 0xB0, 0xF7, 0x07, + 0x48, 0x50, 0x2D, 0x2D, 0xEF, 0xA8, 0x1A, 0x9F, 0x0B, 0xC1, 0xA5, 0x3C, + 0xAD, 0x43, 0x59, 0x8A, 0xAA, 0x64, 0x6C, 0x60, 0x50, 0x67, 0x3B, 0x52, + 0x61, 0x3D, 0x8B, 0x7B, 0xA5, 0x2D, 0x04, 0x7E, 0xE5, 0xEB, 0xE7, 0x79, + 0x69, 0xD1, 0x05, 0xAE, 0xA2, 0x20, 0x7A, 0xC7, 0x68, 0x8A, 0xCA, 0xBE, + 0xBF, 0x27, 0x0C, 0xB3, 0x49, 0x05, 0x16, 0x83, 0x7F, 0x29, 0x87, 0x1E, + 0x58, 0x94, 0x76, 0xEA, 0xEA, 0xC5, 0x43, 0x3B, 0xB3, 0x17, 0xB6, 0x41, + 0x3C, 0x59, 0x03, 0x20, 0x83, 0x78, 0x57, 0xD8, 0x9A, 0x69, 0x2C, 0xEE, + 0x27, 0xCC, 0xC1, 0xAA, 0x7F, 0x52, 0x3A, 0x81, 0x04, 0xC3, 0xCD, 0x64, + 0xC0, 0xAF, 0xCF, 0xF8, 0xB2, 0x34, 0x8A, 0x94, 0xBD, 0xF7, 0x83, 0x0D, + 0x16, 0xE7, 0xB0, 0x47, 0xA2, 0xFA, 0xD6, 0xA7, 0x3E, 0xDF, 0xE1, 0x3A, + 0xBA, 0x87, 0xA7, 0xF3, 0x8C, 0x5B, 0xB2, 0x28, 0x88, 0x4A, 0x13, 0x69, + 0x1C, 0xEF, 0x07, 0xAE, 0xC4, 0xCE, 0x95, 0x0D, 0x49, 0x1E, 0x11, 0x96, + 0x79, 0x72, 0xEB, 0xA5, 0x3E, 0x86, 0x6B, 0x80, 0xF8, 0xE2, 0xAF, 0x28, + 0x70, 0x22, 0xE0, 0x07, 0x98, 0xD9, 0xE5, 0x0A, 0x45, 0xD1, 0x9A, 0xD9, + 0x86, 0x85, 0xEE, 0x92, 0xCC, 0x9B, 0x3A, 0xB6, 0xFE, 0x3F, 0x17, 0x59, + 0x53, 0xE1, 0xDA, 0xF0, 0x7A, 0x3B, 0x28, 0xD6, 0x28, 0xFD, 0xA2, 0xE6, + 0x49, 0xBA, 0x68, 0x99, 0x32, 0x89, 0x73, 0xB1, 0x87, 0xA8, 0x3E, 0x84, + 0x70, 0xE9, 0xD4, 0x22, 0x24, 0x89, 0x20, 0x01, 0xAF, 0x1B, 0xD9, 0xB5, + 0x51, 0xA6, 0xFB, 0x67, 0x26, 0x9A, 0x89, 0x47, 0x85, 0x52, 0xB6, 0x0B, + 0xD4, 0x6B, 0xEE, 0xF4, 0xEF, 0x44, 0xD8, 0x27, 0x74, 0xBA, 0x1E, 0x3C, + 0x45, 0x68, 0xFF, 0x93, 0xDE, 0x4F, 0x03, 0xA7, 0xC1, 0xB9, 0x11, 0xD3, + 0x27, 0xEB, 0x78, 0x40, 0x68, 0xF5, 0x1D, 0x78, 0xE9, 0x24, 0x47, 0x3E, + 0x80, 0x87, 0xF7, 0xE1, 0x87, 0xDA, 0xA0, 0xE3, 0x79, 0xA6, 0x61, 0x80, + 0xFD, 0x1A, 0xEB, 0x03, 0x7F, 0xE9, 0x50, 0x00, 0xD3, 0x1E, 0xBC, 0x6D, + 0x65, 0xA2, 0xD5, 0x09, 0x53, 0x3E, 0x60, 0x54, 0x6D, 0xD0, 0x2E, 0x01, + 0x04, 0xA6, 0x13, 0xEE, 0xC0, 0x72, 0x8A, 0x66, 0x09, 0x91, 0x56, 0x84, + 0x40, 0xFC, 0x8D, 0x35, 0x01, 0xE2, 0x13, 0x76, 0x4E, 0x63, 0xCE, 0xE8, + 0xF0, 0xD9, 0x0F, 0x09, 0xBA, 0x19, 0x44, 0x4B, 0x44, 0x79, 0xAB, 0xF5, + 0xE2, 0x48, 0x92, 0x3F, 0xD9, 0x16, 0x57, 0xCA, 0x94, 0x82, 0x9E, 0xFE, + 0x02, 0x24, 0x93, 0xAE, 0xF2, 0xF3, 0x2B, 0xCE, 0x0A, 0x17, 0x91, 0x5D, + 0x90, 0x97, 0x74, 0x13, 0x59, 0x8B, 0x16, 0xB4, 0x65, 0xD2, 0xFF, 0x5C, + 0x91, 0x35, 0xB8, 0x6D, 0xA0, 0xEA, 0xCB, 0x07, 0xD2, 0x88, 0x6E, 0x8C, + 0xF1, 0xC3, 0x9C, 0x6E, 0x25, 0xDC, 0xC4, 0x16, 0x73, 0x2B, 0xEA, 0x87, + 0xAC, 0x60, 0x7B, 0x0D, 0x50, 0xFF, 0xE8, 0x24, 0xB2, 0x77, 0xEF, 0xFD, + 0x5D, 0x93, 0x16, 0x62, 0xF5, 0x47, 0x17, 0x5B, 0x3E, 0x0B, 0x55, 0x93, + 0xCD, 0x04, 0xCD, 0xB2, 0x51, 0xFC, 0x78, 0x0A, 0x4E, 0xAD, 0x07, 0x46, + 0xC3, 0x66, 0xE5, 0xA6, 0xB7, 0xE4, 0xE2, 0x71, 0x99, 0xA8, 0x44, 0x5B, + 0xD6, 0x3D, 0x63, 0x7A, 0x3A, 0x4F, 0x15, 0x6E, 0x3E, 0x07, 0x23, 0xDB, + 0xBF, 0xD6, 0x78, 0x2B, 0x51, 0x73, 0xCF, 0x48, 0xB3, 0x2C, 0x6A, 0xB6, + 0x8A, 0x3D, 0x5D, 0x25, 0xA7, 0x70, 0x8D, 0x5A, 0x44, 0x2D, 0x1B, 0x24, + 0x4C, 0x27, 0xAA, 0x02, 0xE3, 0x57, 0x79, 0xA1, 0x74, 0x0F, 0x73, 0x5F, + 0xD2, 0x09, 0x64, 0xE7, 0x26, 0xE6, 0xC3, 0xA4, 0x15, 0x90, 0x12, 0x68, + 0x54, 0x4A, 0xAF, 0xA5, 0x01, 0x0C, 0x10, 0x1D, 0x22, 0xF3, 0x79, 0xAF, + 0xED, 0xA4, 0x68, 0x58, 0x4B, 0x97, 0x6F, 0xE9, 0x2B, 0x59, 0x4B, 0x61, + 0x91, 0x87, 0x0D, 0x33, 0x2C, 0x75, 0xAA, 0x19, 0x93, 0x81, 0xC1, 0xD0, + 0x5D, 0xA6, 0xA4, 0xE4, 0x85, 0x1C, 0xBC, 0x32, 0xA7, 0xB5, 0x36, 0x3F, + 0x26, 0x57, 0xAB, 0xAA, 0xEC, 0x9F, 0xC8, 0x74, 0x08, 0x83, 0x4B, 0x09, + 0xE1, 0x22, 0x94, 0xD5, 0xD8, 0xB4, 0xAA, 0x90, 0xFD, 0x34, 0x14, 0x27, + 0xCA, 0x6B, 0x9A, 0x5A, 0x30, 0x2D, 0x75, 0x6D, 0x01, 0x6D, 0x17, 0xCB, + 0xEF, 0xA6, 0x3F, 0x36, 0xE2, 0xB2, 0x6B, 0x81, 0x3E, 0xAF, 0x8C, 0x92, + 0x70, 0x43, 0xA1, 0x1D, 0x09, 0x61, 0x71, 0x6B, 0x0E, 0x53, 0x0F, 0x6B, + 0x00, 0x32, 0xAC, 0x78, 0xCC, 0x2D, 0xC9, 0x42, 0x0C, 0x70, 0x3F, 0xDF, + 0x52, 0x5C, 0xD4, 0x43, 0xC7, 0xAC, 0x1C, 0x17, 0xE2, 0xC0, 0x75, 0x8B, + 0xF8, 0xC8, 0xD2, 0xE1, 0x69, 0xB1, 0x86, 0x07, 0x82, 0x37, 0xB9, 0x4A, + 0x5F, 0xC6, 0x4F, 0x95, 0x86, 0x1B, 0x6D, 0x2B, 0xEB, 0x21, 0xD2, 0x84, + 0xD6, 0x4B, 0xFA, 0xBF, 0x54, 0x41, 0x34, 0xA8, 0x5C, 0x86, 0x23, 0x3A, + 0x3D, 0xB6, 0x0C, 0x97, 0x28, 0x8B, 0xBB, 0xE8, 0xF6, 0xC0, 0x68, 0xE5, + 0x83, 0x21, 0x60, 0xF0, 0xE8, 0x8D, 0x80, 0xFA, 0x1F, 0xAC, 0x32, 0xC6, + 0x1D, 0x17, 0xD2, 0x3E, 0x57, 0xEB, 0x81, 0x68, 0x28, 0x0B, 0x36, 0x6F, + 0x3C, 0x08, 0xA3, 0xEB, 0xEE, 0xF0, 0x25, 0x24, 0xB2, 0x70, 0xC5, 0x62, + 0xA9, 0xC8, 0x48, 0xDC, 0xA1, 0x02, 0x49, 0x0E, 0xE8, 0x19, 0xBE, 0xFC, + 0x8C, 0x8E, 0xC4, 0xBE, 0x9D, 0x6A, 0xDB, 0x70, 0xDC, 0x78, 0xE1, 0xD4, + 0xD1, 0xA4, 0xC8, 0x57, 0x3E, 0xC7, 0x40, 0xA6, 0xF0, 0xA9, 0x83, 0x12, + 0x76, 0x52, 0x4D, 0xB0, 0xBB, 0xBA, 0xE4, 0x85, 0x93, 0xBF, 0x6D, 0x71, + 0x2C, 0x18, 0x57, 0xDE, 0x57, 0x24, 0x8E, 0x33, 0xD7, 0xF9, 0x36, 0xE6, + 0x3B, 0x63, 0x3B, 0x71, 0xB6, 0xF5, 0x9C, 0x4D, 0x2C, 0xC3, 0x55, 0x7B, + 0xDB, 0xD9, 0x1F, 0x7D, 0xC7, 0x2B, 0x4E, 0x65, 0x3C, 0xD4, 0xFD, 0xEC, + 0x01, 0xA6, 0xD8, 0xDB, 0x4F, 0x0A, 0x76, 0xF2, 0x3E, 0x3E, 0x16, 0xB5, + 0xE9, 0xBB, 0xE7, 0x8B, 0xDF, 0x8D, 0x60, 0x80, 0x79, 0xB5, 0xC6, 0x79, + 0x1E, 0x9A, 0xDB, 0x53, 0xB4, 0x80, 0x6C, 0x9C, 0xC9, 0x97, 0x7C, 0x0E, + 0xAF, 0x41, 0xF9, 0x4C, 0x5E, 0xA4, 0xA4, 0x46, 0x85, 0xF2, 0x9A, 0xAE, + 0xFE, 0xC5, 0xB0, 0xB7, 0x16, 0x07, 0x03, 0x89, 0x27, 0x3F, 0x53, 0x92, + 0x3E, 0x85, 0xE3, 0x23, 0xE4, 0x72, 0x1F, 0xD7, 0x77, 0xCF, 0x3E, 0x57, + 0xB3, 0x1F, 0xD8, 0x5D, 0x0C, 0xE2, 0xD1, 0xD6, 0xCF, 0x20, 0xB0, 0xE1, + 0x80, 0x38, 0xF6, 0xEF, 0x91, 0xD3, 0xD7, 0x2E, 0xDE, 0xA3, 0xEA, 0x77, + 0x44, 0xAF, 0xDC, 0x9A, 0x13, 0x19, 0x75, 0x28, 0x85, 0x61, 0xE5, 0x40, + 0x8C, 0xE3, 0xF9, 0x5A, 0xEC, 0x2A, 0x5C, 0x29, 0x12, 0x7B, 0x13, 0xBC, + 0x21, 0x4D, 0x79, 0xF8, 0xEF, 0xD4, 0xEB, 0xA2, 0x95, 0x43, 0xC5, 0xB5, + 0x9E, 0x5B, 0x11, 0xAB, 0xE1, 0x9E, 0xB3, 0x76, 0xFF, 0x05, 0xD5, 0x42, + 0x4F, 0x92, 0x47, 0x58, 0x7A, 0xE2, 0x4D, 0x58, 0x8F, 0x95, 0xC4, 0xDC, + 0xC3, 0xD4, 0x4A, 0x78, 0x8A, 0xB7, 0x9B, 0x5D, 0x2D, 0x51, 0xFA, 0x4B, + 0x10, 0x7B, 0x92, 0xF0, 0x66, 0xEC, 0x7C, 0x01, 0xCA, 0xEE, 0x5F, 0xB8, + 0x45, 0x78, 0x54, 0x87, 0xB8, 0xDF, 0xDE, 0x80, 0xE8, 0xAD, 0x3A, 0xB7, + 0xA6, 0xB2, 0x60, 0xC4, 0xA0, 0xE0, 0x42, 0x13, 0x38, 0xED, 0xFF, 0xB4, + 0x77, 0xA8, 0xF4, 0xE7, 0xF7, 0xE8, 0x71, 0xAE, 0x93, 0x3D, 0xA0, 0xCE, + 0xB5, 0x55, 0xC9, 0x5F, 0xE0, 0x65, 0x4F, 0x2C, 0xD6, 0x31, 0x7B, 0x61, + 0x8E, 0x45, 0x00, 0x02, 0x97, 0x4F, 0x0F, 0xB9, 0x05, 0x03, 0xC4, 0xC2, + 0xBE, 0x3C, 0x4C, 0x2C, 0xB5, 0x04, 0x22, 0x7F, 0x7E, 0x16, 0x3E, 0xC1, + 0xC7, 0xBD, 0x6A, 0xEB, 0x10, 0xA6, 0x15, 0x78, 0x6C, 0x66, 0x55, 0x7D, + 0xFA, 0xE0, 0x2B, 0xD0, 0x88, 0xAB, 0x80, 0x71, 0x6D, 0x2B, 0xD9, 0xC3, + 0x39, 0x7A, 0x6F, 0x39, 0xCC, 0xC0, 0x17, 0x73, 0xC8, 0x58, 0x21, 0x63, + 0xF5, 0x7F, 0x99, 0xF7, 0xC7, 0x46, 0xFC, 0x2B, 0xE3, 0x3B, 0x66, 0x73, + 0x0E, 0x90, 0x4A, 0xC3, 0x48, 0xCE, 0xDB, 0x39, 0x46, 0xF9, 0xE9, 0x7B, + 0x33, 0xCD, 0x9B, 0x8B, 0x3E, 0x21, 0x55, 0x35, 0xAE, 0x71, 0xFE, 0xA4, + 0x2E, 0xC9, 0xC8, 0xA0, 0x1E, 0x97, 0x10, 0x6A, 0x29, 0x95, 0xFC, 0xCD, + 0xE0, 0xEC, 0x37, 0x95, 0xFA, 0x61, 0xB5, 0x62, 0x5C, 0xC5, 0xEA, 0xDF, + 0x8D, 0xA7, 0xC2, 0xF7, 0x4A, 0xC9, 0x34, 0x15, 0xA4, 0x8C, 0x63, 0xA5, + 0x16, 0x25, 0x4F, 0xA9, 0x89, 0xD7, 0x2D, 0x77, 0x0D, 0x5E, 0xC1, 0x32, + 0x2A, 0x86, 0x55, 0x80, 0x97, 0xD1, 0x8C, 0x98, 0x04, 0x5A, 0x89, 0xC9, + 0xD1, 0x5F, 0x00, 0x5E, 0x29, 0x2C, 0xEB, 0x17, 0x96, 0x6A, 0xEB, 0x9A, + 0xEA, 0x5F, 0x2D, 0x99, 0x3D, 0x47, 0xCD, 0xFA, 0xA7, 0x8B, 0xFA, 0xB8, + 0x16, 0x1A, 0xE7, 0x07, 0x85, 0x47, 0xB6, 0x3F, 0xBD, 0x96, 0x4C, 0xD2, + 0xE8, 0xBE, 0x78, 0xE0, 0xFE, 0xF8, 0xD7, 0x9F, 0x05, 0xC2, 0xDF, 0x2F, + 0x1D, 0x8C, 0xDC, 0xDF, 0x4C, 0x36, 0x06, 0xF5, 0xD3, 0xAD, 0xFC, 0x82, + 0xB3, 0x7D, 0x47, 0xE3, 0xE6, 0x26, 0xD7, 0xA8, 0xC1, 0xA8, 0xD7, 0x73, + 0x55, 0x0D, 0x99, 0x81, 0xE8, 0x97, 0x84, 0x22, 0x5D, 0x93, 0x7B, 0x83, + 0xE3, 0x27, 0xEA, 0x60, 0x03, 0x2E, 0xC9, 0x71, 0xBB, 0x31, 0xF1, 0x4A, + 0x4D, 0xEA, 0x5B, 0xAD, 0x29, 0x37, 0xAA, 0x4F, 0x6D, 0xEC, 0xBB, 0x00, + 0x6A, 0xD9, 0x98, 0xDB, 0x08, 0x72, 0x8A, 0x94, 0xC8, 0x9C, 0x03, 0xC5, + 0x02, 0x54, 0x46, 0xB5, 0x1E, 0x25, 0xD1, 0x50, 0x3C, 0x3E, 0xE0, 0x55, + 0x89, 0x28, 0xC0, 0xE3, 0x08, 0x1A, 0x26, 0x9C, 0x4D, 0x74, 0x57, 0x09, + 0x34, 0xB3, 0x2D, 0x21, 0xA0, 0x4E, 0x9B, 0xB2, 0x93, 0xC0, 0x7A, 0x52, + 0xAC, 0x0D, 0x2B, 0xAA, 0x5F, 0xCF, 0x9E, 0x94, 0x88, 0x0D, 0xCB, 0x30, + 0x74, 0xC7, 0x6B, 0x78, 0x5E, 0xEE, 0x24, 0xC4, 0xA8, 0x0B, 0x84, 0x2D, + 0xD7, 0xEC, 0x31, 0xA8, 0xE3, 0x62, 0xC8, 0x43, 0x6A, 0x12, 0x0E, 0x46, + 0xEE, 0x86, 0x33, 0x4B, 0xF9, 0xA6, 0x52, 0x96, 0x6D, 0xA1, 0xD2, 0x1C, + 0x50, 0xEC, 0xEE, 0x53, 0xE8, 0x7E, 0xD4, 0xE1, 0x41, 0x76, 0x6E, 0xF7, + 0x66, 0x89, 0x46, 0xA6, 0xC9, 0x06, 0x32, 0xCC, 0x13, 0x23, 0x80, 0xE8, + 0x3E, 0x93, 0x52, 0x05, 0x78, 0x1A, 0x02, 0xAA, 0x5C, 0x11, 0xD7, 0xF0, + 0x39, 0x77, 0x06, 0x4F, 0xB3, 0x4B, 0x8E, 0x9D, 0x84, 0x00, 0x3A, 0xEE, + 0x03, 0xFD, 0x48, 0xBA, 0xA7, 0x23, 0x59, 0xBE, 0x43, 0x7B, 0x2F, 0xA0, + 0x23, 0x6F, 0x9A, 0xE9, 0xB0, 0xC2, 0x84, 0x1A, 0x9F, 0x5A, 0x39, 0x22, + 0xB6, 0x78, 0x21, 0x86, 0xDD, 0xEC, 0x37, 0x24, 0x1C, 0xB1, 0xD8, 0x7C, + 0x88, 0xAB, 0xC3, 0x9F, 0xA1, 0x3C, 0xBA, 0xF8, 0x1C, 0x43, 0x41, 0xB2, + 0x12, 0x3C, 0x16, 0x38, 0xD6, 0x58, 0xFF, 0xBF, 0x73, 0xEA, 0xFE, 0x63, + 0xE0, 0x36, 0xA4, 0xE7, 0x38, 0xA2, 0xA5, 0xB2, 0xEF, 0xE0, 0x7B, 0x32, + 0xCC, 0x34, 0x0A, 0x32, 0x23, 0x14, 0xCE, 0xE9, 0xDC, 0xC7, 0xF1, 0x85, + 0x79, 0x19, 0x4B, 0xC2, 0x39, 0xC8, 0x57, 0x2A, 0xDD, 0x19, 0x6D, 0x10, + 0xC9, 0x3E, 0x39, 0x13, 0x5A, 0xC3, 0x33, 0xC5, 0xB1, 0x6D, 0xD8, 0x8B, + 0x35, 0x14, 0x9C, 0x67, 0xE6, 0x58, 0xC9, 0x0C, 0xE6, 0xC7, 0x59, 0xCA, + 0xA7, 0xB6, 0x10, 0x8B, 0x44, 0x2D, 0x8D, 0x12, 0xC3, 0xC3, 0xEE, 0x58, + 0xB9, 0xFA, 0x60, 0xBD, 0xAB, 0x29, 0xD4, 0xB9, 0x86, 0xA1, 0x2D, 0x8F, + 0x62, 0xE4, 0x19, 0x9A, 0x71, 0xC2, 0xF4, 0xA5, 0x93, 0x04, 0xBB, 0x8D, + 0x64, 0xB5, 0x40, 0x8C, 0x8B, 0xA6, 0x52, 0xCE, 0xE3, 0x95, 0x53, 0xEA, + 0x14, 0x21, 0x7C, 0x64, 0xCE, 0xCA, 0x69, 0xE9, 0x3F, 0xD9, 0xB7, 0xD4, + 0xB3, 0xB3, 0xC2, 0x82, 0x64, 0xA2, 0x23, 0xC6, 0xE6, 0x8A, 0x5F, 0xFE, + 0xFA, 0x06, 0xE6, 0x5F, 0xA2, 0x82, 0x3B, 0x4E, 0x89, 0xAA, 0xCF, 0xCB, + 0x18, 0xA1, 0x69, 0x65, 0x93, 0xA8, 0x19, 0xC7, 0x78, 0x6F, 0x94, 0x9A, + 0x2F, 0x1F, 0x5B, 0x47, 0x30, 0x06, 0xBE, 0x59, 0x5D, 0x84, 0xDB, 0xDF, + 0xAC, 0xAF, 0x91, 0x8A, 0x39, 0x28, 0xB4, 0xA1, 0x68, 0x2D, 0x4F, 0x39, + 0x64, 0xC3, 0x92, 0xB7, 0x31, 0x38, 0xAE, 0x87, 0xD1, 0xCD, 0xB8, 0x11, + 0xD4, 0xF6, 0xEA, 0x06, 0xB6, 0xB2, 0x22, 0xE8, 0x46, 0x7C, 0xB3, 0xC4, + 0x93, 0xD1, 0x19, 0x2D, 0xEE, 0x9B, 0xAC, 0x1E, 0x9C, 0xEE, 0x6C, 0x85, + 0x6F, 0x35, 0xAC, 0x97, 0x3E, 0x97, 0xD0, 0x50, 0x38, 0x59, 0xF8, 0x5E, + 0xB0, 0x3D, 0xAA, 0x9E, 0x8F, 0x78, 0x51, 0x04, 0xE0, 0x01, 0x8C, 0xF3, + 0xE3, 0x9F, 0x59, 0x11, 0x7D, 0x5F, 0xC9, 0xDB, 0xA3, 0x99, 0xA6, 0xE2, + 0x65, 0x90, 0x75, 0xDD, 0xEC, 0x59, 0x60, 0x19, 0x70, 0x66, 0x12, 0x0B, + 0x27, 0x26, 0xC2, 0x3B, 0x5B, 0xDB, 0x6F, 0x11, 0x39, 0x08, 0xDC, 0xF4, + 0x14, 0x51, 0x06, 0xFE, 0x9B, 0xDB, 0x22, 0x25, 0x1E, 0x25, 0x43, 0x8D, + 0xD5, 0xD0, 0xFB, 0x68, 0xF3, 0x65, 0xEA, 0x97, 0x20, 0xDD, 0x60, 0x7B, + 0xB4, 0xE0, 0x90, 0x24, 0x62, 0xF6, 0x84, 0xF0, 0x47, 0xD6, 0xB9, 0xE3, + 0xB8, 0x16, 0x6A, 0xDB, 0xA7, 0xF7, 0xFD, 0xFC, 0x74, 0x1F, 0x8C, 0xFD, + 0x88, 0x4A, 0xE9, 0xEE, 0xFE, 0xCC, 0xE5, 0xA0, 0x2C, 0x1D, 0xAE, 0xD0, + 0xF3, 0x56, 0xBE, 0xD8, 0x45, 0xC4, 0x44, 0xEA, 0xD7, 0x71, 0x34, 0x7C, + 0x2A, 0x0A, 0x3F, 0xD1, 0xA8, 0xCA, 0xF1, 0x7E, 0x9C, 0x39, 0x6B, 0x51, + 0xBD, 0xDB, 0x56, 0x87, 0xAC, 0xDF, 0x31, 0xF9, 0xC0, 0x73, 0xDB, 0xBC, + 0x0D, 0x1D, 0xD7, 0x8B, 0xBB, 0x50, 0x3B, 0xE7, 0xB5, 0xE9, 0x6A, 0x3B, + 0x83, 0xF8, 0x27, 0xE8, 0x7C, 0xD1, 0x8D, 0x14, 0xDD, 0x5A, 0xDF, 0xD1, + 0xBE, 0xBA, 0xFD, 0x3E, 0xF8, 0xA4, 0x8A, 0xED, 0xAD, 0x82, 0xFD, 0x28, + 0x3F, 0x46, 0x1C, 0x56, 0x71, 0x71, 0x71, 0xFB, 0x1F, 0xEB, 0xE6, 0x72, + 0x10, 0x40, 0xDB, 0xA3, 0x40, 0xEA, 0x06, 0x63, 0x74, 0xE7, 0xC3, 0xA9, + 0xE4, 0x07, 0xFD, 0xA8, 0x5C, 0x83, 0x16, 0x69, 0xB4, 0x6A, 0xAE, 0x85, + 0xFC, 0x32, 0xDF, 0x59, 0x71, 0xBB, 0x7A, 0xC1, 0xC2, 0x0E, 0xC0, 0x5A, + 0xA1, 0x1F, 0x88, 0x6E, 0xF4, 0x79, 0xF2, 0x4F, 0xA5, 0x84, 0x8B, 0xA7, + 0x39, 0xCC, 0x6D, 0x44, 0x33, 0xD8, 0x1A, 0x9B, 0xAD, 0x8F, 0x12, 0x49, + 0x63, 0x93, 0xBB, 0x70, 0xA7, 0x9D, 0x4A, 0x69, 0xDC, 0x18, 0x09, 0xB8, + 0xED, 0xB1, 0x50, 0x13, 0x59, 0xEA, 0xDC, 0x7B, 0xBF, 0x7F, 0x83, 0x4F, + 0xC7, 0xFA, 0x3B, 0x44, 0xEF, 0xF9, 0x4C, 0xE9, 0x72, 0x70, 0xD7, 0x27, + 0xEC, 0x80, 0x18, 0x2A, 0x45, 0x71, 0x87, 0x99, 0x9F, 0xE0, 0x74, 0x3E, + 0xE0, 0xE1, 0xCD, 0xF6, 0x76, 0xD9, 0x82, 0x6D, 0xF5, 0x01, 0x9C, 0x33, + 0x19, 0xB7, 0x0A, 0x1E, 0x07, 0xC7, 0x11, 0x4B, 0xC2, 0x64, 0x16, 0x14, + 0x9F, 0xE6, 0xD2, 0x65, 0x64, 0x9E, 0xCA, 0x29, 0xB9, 0xC1, 0xA1, 0x64, + 0x4A, 0x39, 0x36, 0xD7, 0xED, 0xC4, 0xCA, 0x4D, 0x93, 0xB7, 0xE7, 0x52, + 0x6E, 0xC4, 0x2A, 0x89, 0x16, 0x14, 0xC2, 0x26, 0xF9, 0xD6, 0x69, 0xA6, + 0x8B, 0x52, 0x04, 0xA3, 0xF9, 0xB5, 0x34, 0x97, 0x98, 0x0F, 0x77, 0x01, + 0x02, 0xD7, 0x3D, 0x75, 0x08, 0xE7, 0x90, 0x1B, 0x0A, 0xA4, 0x1D, 0x27, + 0xBB, 0xC3, 0xF5, 0x9A, 0x3A, 0x75, 0xC2, 0x85, 0x12, 0x98, 0x59, 0x90, + 0x92, 0x99, 0x15, 0x73, 0xA2, 0x1D, 0x8A, 0xC0, 0x68, 0x39, 0x69, 0x93, + 0x2C, 0xCF, 0xE1, 0x43, 0x99, 0xD6, 0x68, 0xEB, 0xBD, 0xB1, 0xF2, 0xA4, + 0xB4, 0x84, 0x78, 0x62, 0xCA, 0xF7, 0xE3, 0xC8, 0x5B, 0x12, 0x92, 0xA4, + 0x93, 0xAA, 0x04, 0x07, 0x45, 0x26, 0x09, 0x77, 0x6E, 0x30, 0x47, 0x26, + 0x9D, 0x24, 0x8B, 0xED, 0xDC, 0xFB, 0xFF, 0x23, 0x3A, 0xFD, 0x6B, 0xCB, + 0xA0, 0x88, 0x08, 0x76, 0x66, 0x0A, 0xF9, 0x7B, 0x4F, 0xE2, 0x23, 0x5C, + 0x4E, 0xE9, 0x16, 0x29, 0xA0, 0x9E, 0xE2, 0x7B, 0xB7, 0xD6, 0xDB, 0xD9, + 0xC5, 0xCF, 0x68, 0x4A, 0x9F, 0x08, 0x22, 0xA0, 0xEC, 0xF2, 0x3F, 0x95, + 0xAE, 0x25, 0x95, 0xED, 0x10, 0x6F, 0x35, 0x1A, 0xCA, 0x58, 0xB2, 0xC6, + 0x72, 0xA1, 0x03, 0x7E, 0x58, 0x70, 0x59, 0x24, 0x6A, 0x39, 0x00, 0x8B, + 0x4A, 0x27, 0xBC, 0xB9, 0x00, 0x92, 0x6A, 0xA5, 0xC8, 0x1D, 0xBA, 0xFB, + 0x24, 0x7F, 0x91, 0x3D, 0xF3, 0x4D, 0x7D, 0xB5, 0xF8, 0xB8, 0x76, 0x27, + 0x0A, 0x50, 0x10, 0x98, 0xD3, 0xFE, 0xD8, 0xCD, 0x55, 0xDD, 0xC3, 0x70, + 0x38, 0x23, 0x75, 0x44, 0xA1, 0x16, 0x01, 0xC4, 0xFB, 0x7A, 0x31, 0xBD, + 0xC1, 0x1B, 0x51, 0x7F, 0xAB, 0xC0, 0xAE, 0x0C, 0x43, 0xA5, 0x07, 0x35, + 0x88, 0xAF, 0x8D, 0x5F, 0xF6, 0xE0, 0xFA, 0x6C, 0x83, 0x05, 0xEC, 0xFC, + 0x85, 0xDD, 0x66, 0x11, 0x64, 0x77, 0xE7, 0xCA, 0xF4, 0xE5, 0xC8, 0x11, + 0xC2, 0xAE, 0x06, 0x94, 0x40, 0xF7, 0xA4, 0x00, 0x6F, 0xDD, 0x99, 0xBD, + 0x3A, 0xA3, 0x69, 0x5B, 0xFF, 0x09, 0xC8, 0xC7, 0xF5, 0xFD, 0xA7, 0xE3, + 0x6D, 0x0D, 0x81, 0xC4, 0x70, 0xA1, 0x86, 0x35, 0xEF, 0x76, 0x58, 0x4F, + 0xD8, 0x91, 0xD2, 0x34, 0xF6, 0x48, 0x86, 0x20, 0x95, 0xA2, 0x39, 0xDD, + 0x4A, 0x63, 0xC4, 0xFD, 0xAC, 0x12, 0x61, 0xCC, 0xF9, 0x08, 0x15, 0x17, + 0x4D, 0x94, 0x9B, 0x03, 0xFF, 0x27, 0x06, 0xDC, 0x2A, 0x6B, 0xC6, 0x45, + 0x8C, 0xBE, 0x6B, 0x2E, 0x21, 0x9A, 0xDE, 0xBE, 0x17, 0x3A, 0x91, 0xA8, + 0xA4, 0x09, 0x94, 0x70, 0x22, 0x62, 0x06, 0xDD, 0x65, 0x5E, 0x81, 0x8C, + 0xB0, 0x2D, 0xA7, 0xA6, 0x6B, 0xD9, 0x9C, 0x75, 0xA1, 0x4C, 0x55, 0x96, + 0x67, 0x6C, 0xF7, 0xFB, 0x34, 0xA6, 0x4C, 0x53, 0x10, 0x5A, 0xDB, 0x54, + 0x7E, 0xAC, 0x67, 0xEA, 0x12, 0xF0, 0x29, 0x2A, 0x49, 0x89, 0xFF, 0xC5, + 0xF3, 0xD4, 0x1D, 0xBA, 0xFB, 0xEF, 0xCE, 0xA3, 0x58, 0x33, 0x7C, 0xFA, + 0xC0, 0x30, 0x45, 0x70, 0x15, 0xB0, 0xDE, 0x85, 0xD7, 0x66, 0xCA, 0x00, + 0x87, 0x93, 0x85, 0x6B, 0xD0, 0x2E, 0x94, 0x80, 0x30, 0x24, 0x69, 0xC5, + 0xD9, 0xD8, 0x00, 0xA7, 0xBF, 0x4E, 0xF7, 0x5C, 0xDE, 0x10, 0xBE, 0x0A, + 0xAE, 0xDA, 0x8D, 0xFD, 0xCB, 0xD0, 0xAF, 0x6F, 0xBB, 0xD2, 0xEB, 0xEB, + 0x05, 0xA4, 0xF7, 0x3B, 0x0B, 0xC1, 0x0E, 0x50, 0xE4, 0x80, 0x65, 0xF6, + 0xEE, 0x78, 0xDB, 0xFA, 0xCD, 0x96, 0xDA, 0xB7, 0x47, 0xDD, 0x95, 0x0D, + 0xEC, 0x65, 0x4F, 0x2A, 0x51, 0x8A, 0xC6, 0xA9, 0x25, 0xCE, 0x3D, 0x2D, + 0xC2, 0x06, 0xB9, 0x26, 0xE1, 0x68, 0xA4, 0x68, 0x23, 0xB9, 0x0B, 0x12, + 0x7D, 0x79, 0xD3, 0x48, 0x0E, 0xA6, 0x2A, 0x2B, 0xA3, 0x23, 0x64, 0x10, + 0xBA, 0xA3, 0x92, 0x83, 0xF0, 0x91, 0xB9, 0xF7, 0x12, 0x4A, 0x08, 0xFA, + 0xE3, 0x10, 0xAE, 0x69, 0xDD, 0x93, 0x1C, 0xC6, 0xCC, 0x32, 0x78, 0x85, + 0x15, 0x84, 0xBE, 0x0E, 0x9B, 0x21, 0xB0, 0xE7, 0x0B, 0xC0, 0x25, 0xCA, + 0xE3, 0xA3, 0xC0, 0x6A, 0x96, 0xC4, 0x98, 0x51, 0x9B, 0xF6, 0x5B, 0x09, + 0xAD, 0x67, 0x03, 0xA1, 0x4A, 0x51, 0x1B, 0xC0, 0x4B, 0x0B, 0x1C, 0x23, + 0x0A, 0x2B, 0xBA, 0x9F, 0xAE, 0x74, 0xED, 0xFA, 0xA1, 0xC4, 0x30, 0xAB, + 0x00, 0xED, 0x7A, 0x17, 0xCC, 0x15, 0xC5, 0xBF, 0xCC, 0x49, 0x41, 0x97, + 0x3D, 0xBE, 0x2A, 0xE7, 0xED, 0x33, 0x02, 0x5B, 0x42, 0xF3, 0x18, 0x10, + 0xD3, 0xD5, 0x27, 0x08, 0x4A, 0xFD, 0xFB, 0xA5, 0x19, 0x43, 0xE6, 0x38, + 0x26, 0xAA, 0xC3, 0xE6, 0x7B, 0xF1, 0xD5, 0x02, 0x96, 0x27, 0x86, 0xAC, + 0x38, 0x86, 0x4E, 0xD0, 0x8B, 0xD7, 0x2B, 0xCC, 0x97, 0x96, 0x24, 0x6D, + 0x66, 0x7D, 0x2B, 0xC8, 0xF7, 0x49, 0xEA, 0x26, 0x74, 0xED, 0x29, 0x50, + 0x03, 0x72, 0x2E, 0x3D, 0x52, 0x3D, 0x1C, 0x63, 0x38, 0x67, 0x47, 0x3B, + 0x07, 0xF8, 0x5C, 0x54, 0x98, 0x0A, 0xEA, 0xB9, 0x0E, 0xB7, 0x7E, 0x78, + 0xF6, 0xD5, 0x8E, 0xC1, 0x1C, 0x36, 0x2A, 0x17, 0x17, 0x0A, 0x3E, 0x90, + 0xA4, 0x77, 0x27, 0x47, 0xBA, 0xC9, 0x03, 0x6A, 0x3C, 0x88, 0x17, 0xF5, + 0xEC, 0x7A, 0x94, 0x3D, 0xD3, 0x06, 0x00, 0xEE, 0xB2, 0x31, 0x36, 0xB5, + 0xCA, 0x53, 0x52, 0xC9, 0x4C, 0xA6, 0x54, 0x12, 0xC6, 0x58, 0xB7, 0x2F, + 0xD1, 0xD1, 0xF5, 0x8A, 0x96, 0x3E, 0x44, 0x61, 0x4B, 0xA0, 0x9D, 0xF1, + 0x54, 0x4A, 0xE7, 0x27, 0x8B, 0x02, 0x8B, 0x8E, 0xC3, 0xF2, 0xAF, 0x01, + 0xDE, 0x38, 0xE9, 0x7A, 0x15, 0xAE, 0x0D, 0xA2, 0xF2, 0x43, 0x2C, 0x2D, + 0x2E, 0xCD, 0xD9, 0x61, 0x72, 0xD2, 0x34, 0x7E, 0x07, 0x2C, 0x2A, 0x00, + 0x2D, 0x56, 0x6A, 0x9C, 0xFF, 0x13, 0xBE, 0xF2, 0x60, 0xCD, 0xBA, 0xFA, + 0xB5, 0xBA, 0x95, 0x7F, 0x3B, 0xE1, 0x6F, 0x86, 0x83, 0xAF, 0x52, 0xD3, + 0x86, 0xBE, 0xDF, 0x71, 0xFD, 0x39, 0x1B, 0x49, 0x23, 0xE8, 0x82, 0x3D, + 0x98, 0xE7, 0x6A, 0x7E, 0xE4, 0x76, 0xB0, 0x2C, 0xBD, 0xAE, 0x26, 0xC5, + 0xB5, 0x6F, 0x9A, 0xA2, 0x7E, 0x95, 0x84, 0x2A, 0x74, 0x4A, 0xEC, 0x70, + 0x4D, 0xC1, 0xA9, 0xEB, 0x30, 0xD9, 0xAE, 0x8D, 0x7A, 0xA3, 0xF7, 0x5F, + 0x3F, 0xDE, 0xC2, 0xCD, 0x8B, 0xB0, 0xD6, 0xD0, 0xC5, 0x71, 0x7C, 0xC7, + 0xF9, 0x97, 0x98, 0x51, 0x52, 0x7E, 0x0D, 0x50, 0xB4, 0xC9, 0x29, 0x79, + 0x65, 0xC8, 0x43, 0x7B, 0x46, 0x9B, 0x57, 0xF8, 0x74, 0xF7, 0x8B, 0x58, + 0xE8, 0xB3, 0x22, 0x43, 0xEB, 0x06, 0xCD, 0xED, 0x0C, 0xC9, 0x86, 0x2B, + 0x5E, 0xF9, 0xBA, 0xF5, 0xA3, 0x01, 0x46, 0xE5, 0xE7, 0x99, 0x17, 0x83, + 0xA2, 0x4F, 0x2C, 0xEA, 0x9B, 0x12, 0xDB, 0xC9, 0x0B, 0x51, 0x79, 0x65, + 0x6F, 0x3A, 0xC6, 0x1D, 0x35, 0x3B, 0xCB, 0xC2, 0xA1, 0x27, 0xA0, 0xE0, + 0xC8, 0xCB, 0xBF, 0xA0, 0x7E, 0x9D, 0x7B, 0x8A, 0x6F, 0x38, 0x1D, 0x6A, + 0xDA, 0x14, 0xF6, 0x00, 0xA4, 0xEA, 0x18, 0x71, 0x48, 0x3D, 0x05, 0x03, + 0x42, 0x42, 0xE7, 0x50, 0x3C, 0x3F, 0x21, 0x2F, 0x7C, 0x18, 0x65, 0x3F, + 0xDE, 0xDC, 0x65, 0x9D, 0xB2, 0x8E, 0x92, 0xA1, 0xC7, 0x0B, 0xAD, 0x3C, + 0x22, 0x3C, 0x07, 0x62, 0x1D, 0x3C, 0x8F, 0x57, 0xF0, 0x50, 0x21, 0x5C, + 0xC2, 0x6A, 0xA9, 0x72, 0x3B, 0x9F, 0xB0, 0x51, 0xEF, 0x1F, 0x5C, 0x83, + 0x27, 0x1F, 0xAA, 0x81, 0x50, 0xDC, 0xB2, 0x80, 0x94, 0xE2, 0x69, 0x66, + 0x4B, 0x7E, 0xBD, 0xCA, 0x8B, 0x5F, 0xD0, 0xE8, 0x69, 0x63, 0x6D, 0xE4, + 0xDA, 0xF7, 0x83, 0x45, 0xCB, 0xFC, 0x33, 0xDB, 0x43, 0x99, 0x7E, 0x41, + 0x86, 0x3F, 0x95, 0xDC, 0xB2, 0x58, 0x8F, 0x8E, 0x7F, 0xAA, 0xC8, 0x37, + 0x80, 0x08, 0x1C, 0xAE, 0x22, 0x03, 0xF1, 0x98, 0x73, 0x47, 0x75, 0x38, + 0x5B, 0x1F, 0x99, 0x70, 0xE4, 0x48, 0x15, 0x48, 0xCE, 0x24, 0x15, 0xE4, + 0x0B, 0xCA, 0x01, 0x8E, 0x8B, 0xE7, 0x9B, 0x4E, 0x5B, 0x56, 0x11, 0x14, + 0x31, 0x78, 0x8F, 0xA9, 0x9A, 0xDA, 0x41, 0x52, 0x21, 0xBB, 0x34, 0x10, + 0x74, 0x55, 0x87, 0x4B, 0x7A, 0x65, 0xBA, 0x53, 0xFB, 0x06, 0xB3, 0x82, + 0x3F, 0xEC, 0x43, 0x84, 0xF4, 0xC9, 0xAF, 0x11, 0x7F, 0x25, 0x7A, 0x7A, + 0x2F, 0x33, 0x93, 0x10, 0x9B, 0x7D, 0xA0, 0xAB, 0x35, 0x54, 0x61, 0x85, + 0x3A, 0x08, 0x6B, 0x38, 0x45, 0x35, 0xCB, 0xAC, 0x71, 0x07, 0x43, 0x5C, + 0x38, 0x79, 0x28, 0xFB, 0x9E, 0x30, 0xDC, 0x69, 0xBE, 0x28, 0x25, 0x52, + 0x1A, 0xCF, 0x0C, 0x67, 0x9E, 0x20, 0xF9, 0x18, 0xE2, 0x48, 0x4B, 0xD3, + 0x2D, 0x78, 0xF5, 0xFC, 0xB0, 0xCF, 0x03, 0xC8, 0x9B, 0x4D, 0x82, 0xF5, + 0xEE, 0x4A, 0x87, 0x45, 0xEC, 0x49, 0x32, 0x59, 0x15, 0x32, 0xEC, 0x63, + 0x0B, 0x44, 0x9F, 0x03, 0xAD, 0x0C, 0x4B, 0xC4, 0xCE, 0x74, 0xF0, 0xBA, + 0x8D, 0xE6, 0x4A, 0xBC, 0x69, 0xB7, 0xF5, 0xAE, 0xCB, 0x54, 0x43, 0xE8, + 0x5A, 0x61, 0xF9, 0x4D, 0x04, 0xAA, 0xCE, 0x99, 0xF4, 0x67, 0x60, 0x63, + 0x70, 0x3A, 0x98, 0x3C, 0x42, 0x48, 0x38, 0x9B, 0x90, 0xB4, 0x2F, 0xD7, + 0xE1, 0xCF, 0x15, 0x63, 0x1F, 0x9C, 0xDC, 0x3C, 0x1A, 0xE7, 0x43, 0x2A, + 0x54, 0xE7, 0x95, 0x16, 0x12, 0xE9, 0x93, 0xAE, 0x89, 0x21, 0x0B, 0xAD, + 0xFB, 0x05, 0x50, 0x5A, 0x70, 0x02, 0xD0, 0xCC, 0xDA, 0x66, 0x25, 0x68, + 0x11, 0x1F, 0x42, 0x07, 0x10, 0x56, 0x47, 0xCC, 0xA2, 0x3A, 0xAA, 0x44, + 0x5B, 0x10, 0xA0, 0x0F, 0x25, 0x44, 0x70, 0x3E, 0x72, 0x3A, 0x58, 0x7C, + 0x82, 0x03, 0x3B, 0x8B, 0xFF, 0x5E, 0x6C, 0x06, 0x5A, 0xFC, 0x23, 0x1B, + 0x78, 0xD1, 0xCE, 0xC6, 0xC0, 0x3A, 0xAA, 0x07, 0x0F, 0xC0, 0xAC, 0xB7, + 0x88, 0x31, 0x31, 0x9A, 0x67, 0x3C, 0xDA, 0x7F, 0xE6, 0x48, 0xAB, 0xE8, + 0x30, 0xC0, 0xB4, 0xBF, 0x0B, 0x14, 0x97, 0x81, 0x8F, 0x5E, 0x65, 0x5D, + 0xC9, 0x80, 0xDC, 0x85, 0x76, 0x84, 0x90, 0x7B, 0xC0, 0x2E, 0x59, 0x03, + 0xB2, 0x19, 0x2C, 0x5B, 0x98, 0xA7, 0xA9, 0xDC, 0xE9, 0x4A, 0x02, 0xE3, + 0x80, 0x0D, 0x08, 0x57, 0x03, 0x1D, 0xBB, 0xB0, 0x88, 0x32, 0xCA, 0xF0, + 0x4C, 0xD3, 0xF9, 0xBD, 0x25, 0x56, 0x86, 0xBC, 0x99, 0x92, 0xFC, 0xAE, + 0x66, 0xF2, 0x9B, 0x43, 0xF9, 0xCF, 0xEE, 0xD4, 0xEF, 0xF9, 0xFE, 0xB6, + 0x26, 0x5D, 0x47, 0x07, 0x94, 0x1F, 0xE9, 0xD9, 0xA0, 0x78, 0xF9, 0x57, + 0x26, 0x6E, 0xF9, 0xEB, 0x02, 0x01, 0x9E, 0xB0, 0x75, 0x43, 0x0C, 0x6D, + 0x82, 0x54, 0xFC, 0xE2, 0xFA, 0x1B, 0x3C, 0x31, 0x64, 0xD5, 0x66, 0x22, + 0x45, 0x1F, 0x35, 0x74, 0x8A, 0x70, 0x9A, 0xD8, 0xEC, 0xE8, 0x44, 0x0C, + 0x9D, 0x10, 0xFD, 0x5A, 0xB3, 0x53, 0x21, 0x6A, 0x64, 0xD5, 0x15, 0x6A, + 0x96, 0x48, 0x1A, 0xA3, 0x4E, 0x97, 0xB8, 0xCF, 0xB2, 0xA3, 0x14, 0x23, + 0x83, 0xC1, 0x1A, 0x07, 0x6B, 0x89, 0x64, 0x16, 0x02, 0x9B, 0x04, 0x17, + 0xA4, 0xE3, 0xF3, 0xDB, 0x1C, 0x8F, 0x9E, 0x0D, 0x0A, 0x6D, 0xB4, 0xA2, + 0xA7, 0x76, 0x49, 0xBB, 0xBA, 0x79, 0x2D, 0x6F, 0xCE, 0xD9, 0x5C, 0x24, + 0xC7, 0xDD, 0xF1, 0x22, 0xCC, 0x7D, 0xDF, 0xED, 0x97, 0x93, 0x60, 0xDD, + 0x0B, 0x99, 0xBD, 0x58, 0x0B, 0x06, 0x77, 0x91, 0x82, 0x1F, 0xE2, 0xFE, + 0xCF, 0x14, 0xF8, 0x51, 0x12, 0x2B, 0xBE, 0xFF, 0x68, 0xE7, 0xD9, 0xA5, + 0xA4, 0x2E, 0xD5, 0xAA, 0xE2, 0xFA, 0x80, 0x58, 0xAC, 0xD1, 0x6C, 0xDD, + 0xB6, 0x40, 0xB6, 0xCE, 0x39, 0x6B, 0x95, 0x5C, 0xFF, 0x46, 0x7D, 0x2F, + 0x03, 0xCA, 0xE1, 0x92, 0x5E, 0x2D, 0xD5, 0x58, 0x56, 0x82, 0xE1, 0x7D, + 0x13, 0x21, 0xB0, 0x76, 0x1A, 0x92, 0xDE, 0x77, 0xB4, 0x05, 0xD0, 0xBC, + 0xC9, 0xE3, 0xCE, 0xD2, 0xB9, 0x2B, 0x70, 0xBD, 0xF4, 0x79, 0x3C, 0xFA, + 0xF3, 0x91, 0x51, 0xAA, 0xF4, 0xF0, 0x14, 0x0C, 0x4E, 0xD1, 0x66, 0x60, + 0x90, 0x16, 0x5B, 0xEF, 0x34, 0xE8, 0xB1, 0x5A, 0x2B, 0x8E, 0x2C, 0x11, + 0x39, 0x2D, 0x37, 0x43, 0x4F, 0xA3, 0x9C, 0x0B, 0x19, 0x19, 0x3D, 0x30, + 0xCA, 0x51, 0x07, 0x67, 0x5A, 0xD2, 0xE0, 0x1D, 0x6C, 0xDD, 0xB2, 0xF8, + 0x9E, 0x32, 0x07, 0x7A, 0x33, 0x26, 0x2F, 0x3A, 0x71, 0x25, 0xB0, 0x26, + 0xDF, 0xAB, 0xEE, 0xCC, 0xAD, 0xA9, 0x46, 0x40, 0x65, 0xD6, 0x51, 0xD2, + 0x12, 0x5D, 0x27, 0x4F, 0xBB, 0x95, 0x51, 0x87, 0x55, 0xB2, 0xF7, 0xEB, + 0x89, 0x65, 0xDF, 0xCA, 0xDF, 0xA2, 0x55, 0xAD, 0xA0, 0x19, 0x6A, 0xE5, + 0x88, 0x0A, 0xCE, 0x24, 0xA2, 0xA7, 0xEB, 0x0C, 0x29, 0xDC, 0x24, 0x09, + 0x93, 0x99, 0x50, 0x2C, 0xB7, 0x0F, 0x21, 0xB7, 0x71, 0xF6, 0x8B, 0x3F, + 0x69, 0x0C, 0x32, 0xA1, 0x18, 0x3A, 0x81, 0xEE, 0x42, 0x67, 0x82, 0x5E, + 0xE1, 0x7B, 0x1C, 0x6F, 0x57, 0xA9, 0x60, 0x38, 0x53, 0x42, 0x04, 0x65, + 0x21, 0x31, 0x8B, 0xB8, 0xEA, 0x9F, 0x0D, 0xA6, 0xAE, 0xD8, 0x4D, 0x9B, + 0xCB, 0x36, 0x53, 0xC4, 0x60, 0x2F, 0x84, 0x0E, 0x64, 0xBF, 0xCE, 0x08, + 0x89, 0xD0, 0x2B, 0xB9, 0xE3, 0x87, 0xEC, 0x10, 0xA8, 0x61, 0x70, 0xF7, + 0xE5, 0x23, 0xAA, 0x2E, 0x7A, 0x70, 0x64, 0x5D, 0x04, 0xD6, 0xC6, 0xA2, + 0xA9, 0x3B, 0x79, 0xD6, 0x9A, 0x9A, 0x15, 0x39, 0xDF, 0xF4, 0x4A, 0x2A, + 0xE0, 0x2C, 0x67, 0xC7, 0x01, 0xF3, 0x02, 0x6B, 0xE4, 0xF4, 0xE0, 0x77, + 0x17, 0xA2, 0xEC, 0x93, 0xD3, 0x61, 0x49, 0xB4, 0xAC, 0x52, 0x3A, 0x84, + 0xFA, 0x3E, 0x2C, 0xD8, 0xAB, 0xD9, 0xE6, 0xDD, 0x59, 0x1C, 0x1E, 0x41, + 0x97, 0xEF, 0x29, 0x13, 0xF2, 0x2D, 0x1D, 0x21, 0x5F, 0x6F, 0x16, 0xF2, + 0x7C, 0x72, 0x69, 0xB6, 0x93, 0xC9, 0xE5, 0x7A, 0x1B, 0x4E, 0x10, 0x78, + 0x6C, 0x79, 0x4B, 0x23, 0x73, 0x02, 0x9B, 0xF2, 0xE0, 0xC3, 0xDB, 0x58, + 0xF3, 0x23, 0x37, 0xC9, 0x06, 0x20, 0xF1, 0x08, 0x34, 0x47, 0x91, 0xB0, + 0x8E, 0xF3, 0xFF, 0xFE, 0x83, 0x4A, 0x97, 0xA4, 0x55, 0x22, 0x55, 0xF3, + 0x9F, 0x41, 0x7F, 0xE1, 0xF5, 0xE3, 0x42, 0xAE, 0x54, 0xF0, 0x83, 0x68, + 0x08, 0x09, 0x2C, 0x95, 0x6C, 0x23, 0x11, 0x7E, 0x9F, 0x7D, 0x53, 0x78, + 0xA1, 0x6B, 0x02, 0x14, 0x8C, 0xDD, 0xF2, 0x34, 0x35, 0x7D, 0xF7, 0xCB, + 0xEF, 0x68, 0x04, 0x07, 0x2C, 0xC2, 0x36, 0x1E, 0x15, 0x17, 0x15, 0x6B, + 0x74, 0x56, 0xC4, 0x12, 0xB7, 0xBF, 0xC8, 0xDB, 0x66, 0xF2, 0x88, 0xFA, + 0xEB, 0xD3, 0xA3, 0x99, 0xBE, 0xD3, 0x21, 0x35, 0x05, 0xED, 0x73, 0x9A, + 0xA0, 0x14, 0x3C, 0x24, 0x0A, 0xDF, 0x97, 0x0F, 0x1B, 0xA2, 0x9A, 0xB0, + 0x0F, 0x01, 0xAD, 0x1D, 0x87, 0xED, 0x21, 0x8F, 0x2F, 0xA8, 0x4D, 0xFD, + 0x02, 0x5E, 0x4B, 0xEA, 0xAD, 0x44, 0x2D, 0x58, 0xB4, 0xC8, 0x8F, 0x40, + 0x38, 0x9D, 0x93, 0x3D, 0x32, 0x28, 0x6C, 0x50, 0xE2, 0x10, 0xC1, 0x7C, + 0xDD, 0x10, 0x08, 0x22, 0xB1, 0x1C, 0xB2, 0x2C, 0xA2, 0x33, 0xB5, 0x91, + 0x55, 0x3C, 0xDA, 0xAA, 0xF2, 0xDA, 0xBF, 0x97, 0xA8, 0xB0, 0x81, 0x21, + 0xD8, 0x5E, 0xBE, 0xCE, 0x21, 0x55, 0xD7, 0xBE, 0xC0, 0xAF, 0xDE, 0xF3, + 0xB7, 0x5E, 0xDB, 0x98, 0x40, 0x71, 0x8D, 0xB0, 0xDD, 0xAB, 0x7D, 0xEB, + 0x68, 0x9C, 0xAD, 0x24, 0xA6, 0xE1, 0xB0, 0x90, 0x79, 0xAC, 0xEB, 0xD4, + 0x9D, 0x69, 0x09, 0xE8, 0xE1, 0x7E, 0xFD, 0xE5, 0xAD, 0x59, 0xD2, 0x3A, + 0xBD, 0x83, 0x96, 0xC8, 0x04, 0xF4, 0x8E, 0x55, 0x56, 0xBC, 0x95, 0xC9, + 0x0D, 0x9E, 0xC6, 0x6F, 0xA3, 0x4F, 0x68, 0xD2, 0x78, 0x16, 0x57, 0x5D, + 0x09, 0xE0, 0x61, 0xC5, 0xAD, 0x3F, 0xD1, 0xE0, 0xFA, 0xE8, 0x1D, 0x77, + 0x70, 0x42, 0xF7, 0x53, 0x47, 0xAA, 0xBB, 0x7D, 0xF3, 0xBA, 0xC9, 0x26, + 0xB2, 0xC9, 0xC3, 0x0A, 0x17, 0x4C, 0x2A, 0x1B, 0xB6, 0x12, 0x32, 0x54, + 0x9A, 0xB1, 0xEA, 0xC7, 0xB5, 0x28, 0x5F, 0x59, 0xD9, 0x19, 0x4E, 0xFF, + 0x0D, 0xB1, 0x67, 0x40, 0xD3, 0x76, 0xA7, 0x0A, 0x94, 0xD9, 0x75, 0x71, + 0xCE, 0x6E, 0xE5, 0xFB, 0xD8, 0x9F, 0xB6, 0x5F, 0x91, 0x74, 0x68, 0x9F, + 0x7C, 0xA3, 0x99, 0x3A, 0xD9, 0x0C, 0x83, 0x64, 0xFB, 0x7E, 0xB2, 0x9B, + 0x1A, 0x5F, 0xDA, 0x85, 0xB5, 0xB9, 0x4C, 0xB1, 0x72, 0xA2, 0x1B, 0x92, + 0x20, 0x7A, 0x77, 0xD3, 0x41, 0x8E, 0x1B, 0xF1, 0xC3, 0x5A, 0x6B, 0xF0, + 0x66, 0x16, 0x94, 0x1F, 0x57, 0x5A, 0xC1, 0x16, 0xB3, 0xF9, 0xE9, 0xFA, + 0x0C, 0x28, 0xC5, 0x32, 0x6F, 0x04, 0xF1, 0xAF, 0x66, 0x9F, 0xF8, 0x72, + 0xD6, 0x91, 0x5F, 0x4C, 0xE9, 0x9A, 0xA8, 0x38, 0x47, 0x6C, 0x8C, 0x00, + 0xB4, 0x47, 0x20, 0x41, 0x68, 0x12, 0x54, 0x51, 0x1A, 0x56, 0x66, 0x56, + 0x4B, 0xC3, 0x59, 0xC7, 0x9C, 0x49, 0x74, 0x06, 0xAB, 0x45, 0x1D, 0x7B, + 0x01, 0xA0, 0xF5, 0x34, 0x9E, 0xE3, 0xAD, 0x5B, 0x3A, 0x12, 0x33, 0x3E, + 0x03, 0xB7, 0xA6, 0x92, 0x62, 0x11, 0x75, 0x5D, 0xE4, 0xB9, 0x78, 0x43, + 0xCC, 0x4D, 0xF7, 0x03, 0x0C, 0x5A, 0xED, 0x74, 0x55, 0x96, 0x91, 0x29, + 0xFA, 0xBA, 0xC6, 0x38, 0xCB, 0x22, 0xF2, 0x90, 0x6B, 0x7B, 0x3D, 0xFF, + 0xEF, 0x94, 0x29, 0x59, 0x33, 0x8B, 0x60, 0x66, 0xE7, 0x32, 0xFD, 0x6B, + 0xE1, 0x19, 0x68, 0x2F, 0xD3, 0x71, 0xA0, 0x70, 0xE9, 0xAF, 0xE6, 0x25, + 0x4E, 0xE8, 0x46, 0x08, 0x1C, 0xF1, 0xE3, 0x60, 0x75, 0x63, 0xF2, 0xAC, + 0xAE, 0x25, 0x45, 0x6E, 0xB7, 0x43, 0x71, 0xFD, 0xF9, 0x0B, 0x34, 0x2F, + 0xDA, 0xBD, 0x6B, 0x27, 0x68, 0x0D, 0x27, 0x8D, 0xDE, 0xC7, 0x7C, 0x8D, + 0x24, 0xC4, 0xCB, 0x9B, 0xED, 0x80, 0x01, 0x14, 0x02, 0x00, 0x00, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x0D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, + 0x72, 0x6B, 0x0D, 0x80, 0x03, +}; diff --git a/core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp b/core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp new file mode 100644 index 0000000000..37ce309f58 --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp @@ -0,0 +1,1404 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" + +const unsigned char g_FoxitSymbolFontData[16729] = { + 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xf, 0x43, 0x68, 0x72, + 0x6f, 0x6d, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x4f, 0x54, 0x46, 0x0, + 0x1, 0x1, 0x1, 0x26, 0xf8, 0x10, 0x0, 0xf8, 0xad, 0x1, 0xf8, 0xae, + 0x2, 0xf8, 0xae, 0x3, 0xf8, 0x18, 0x4, 0xfb, 0x48, 0xfb, 0xba, 0xfa, + 0xd6, 0xfa, 0x86, 0x5, 0x1c, 0x6, 0x3d, 0xf, 0x1c, 0x6, 0x89, 0x11, + 0xab, 0x1c, 0x3e, 0xa2, 0x12, 0x0, 0x94, 0x2, 0x0, 0x1, 0x0, 0x6, + 0x0, 0xa, 0x0, 0xf, 0x0, 0x16, 0x0, 0x1a, 0x0, 0x1d, 0x0, 0x22, + 0x0, 0x26, 0x0, 0x2b, 0x0, 0x31, 0x0, 0x33, 0x0, 0x35, 0x0, 0x37, + 0x0, 0x3e, 0x0, 0x40, 0x0, 0x43, 0x0, 0x48, 0x0, 0x4b, 0x0, 0x52, + 0x0, 0x55, 0x0, 0x58, 0x0, 0x5b, 0x0, 0x60, 0x0, 0x64, 0x0, 0x69, + 0x0, 0x6e, 0x0, 0x75, 0x0, 0x79, 0x0, 0x7c, 0x0, 0x81, 0x0, 0x85, + 0x0, 0x8a, 0x0, 0x90, 0x0, 0x92, 0x0, 0x94, 0x0, 0x9b, 0x0, 0x9d, + 0x0, 0xa0, 0x0, 0xa6, 0x0, 0xab, 0x0, 0xae, 0x0, 0xb5, 0x0, 0xb8, + 0x0, 0xbb, 0x0, 0xbe, 0x0, 0xc3, 0x0, 0xc9, 0x0, 0xd1, 0x0, 0xd5, + 0x0, 0xdb, 0x0, 0xe1, 0x0, 0xe7, 0x0, 0xeb, 0x0, 0xf3, 0x0, 0xfe, + 0x1, 0x6, 0x1, 0xb, 0x1, 0x10, 0x1, 0x19, 0x1, 0x20, 0x1, 0x2a, + 0x1, 0x33, 0x1, 0x3c, 0x1, 0x4a, 0x1, 0x56, 0x1, 0x60, 0x1, 0x6d, + 0x1, 0x79, 0x1, 0x85, 0x1, 0x8e, 0x1, 0x99, 0x1, 0xa4, 0x1, 0xac, + 0x1, 0xb1, 0x1, 0xb9, 0x1, 0xc0, 0x1, 0xca, 0x1, 0xd2, 0x1, 0xd9, + 0x1, 0xe2, 0x1, 0xee, 0x1, 0xf5, 0x2, 0x1, 0x2, 0x9, 0x2, 0xe, + 0x2, 0x18, 0x2, 0x21, 0x2, 0x2d, 0x2, 0x32, 0x2, 0x3a, 0x2, 0x43, + 0x2, 0x4a, 0x2, 0x53, 0x2, 0x5e, 0x2, 0x66, 0x2, 0x71, 0x2, 0x7a, + 0x2, 0x86, 0x2, 0x92, 0x2, 0xa0, 0x2, 0xa9, 0x2, 0xb5, 0x2, 0xc3, + 0x2, 0xcd, 0x2, 0xdb, 0x2, 0xe8, 0x2, 0xef, 0x2, 0xf9, 0x3, 0x3, + 0x3, 0xc, 0x3, 0x16, 0x3, 0x1d, 0x3, 0x22, 0x3, 0x26, 0x3, 0x2b, + 0x3, 0x32, 0x3, 0x40, 0x3, 0x4d, 0x3, 0x5b, 0x3, 0x64, 0x3, 0x6f, + 0x3, 0x7b, 0x3, 0x87, 0x3, 0x94, 0x3, 0xa1, 0x3, 0xac, 0x3, 0xb7, + 0x3, 0xc2, 0x3, 0xcf, 0x3, 0xdc, 0x3, 0xe9, 0x3, 0xf4, 0x4, 0x0, + 0x4, 0xb, 0x4, 0x12, 0x4, 0x1c, 0x4, 0x28, 0x4, 0x34, 0x4, 0x40, + 0x4, 0x4e, 0x4, 0x5c, 0x4, 0x6a, 0x4, 0x76, 0x4, 0x83, 0x4, 0x8f, + 0x4, 0x94, 0x4, 0xbe, 0x4, 0xce, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x42, + 0x65, 0x74, 0x61, 0x47, 0x61, 0x6d, 0x6d, 0x61, 0x45, 0x70, 0x73, 0x69, + 0x6c, 0x6f, 0x6e, 0x5a, 0x65, 0x74, 0x61, 0x45, 0x74, 0x61, 0x54, 0x68, + 0x65, 0x74, 0x61, 0x49, 0x6f, 0x74, 0x61, 0x4b, 0x61, 0x70, 0x70, 0x61, + 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x4d, 0x75, 0x4e, 0x75, 0x58, 0x69, + 0x4f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x50, 0x69, 0x52, 0x68, 0x6f, + 0x53, 0x69, 0x67, 0x6d, 0x61, 0x54, 0x61, 0x75, 0x55, 0x70, 0x73, 0x69, + 0x6c, 0x6f, 0x6e, 0x50, 0x68, 0x69, 0x43, 0x68, 0x69, 0x50, 0x73, 0x69, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x61, 0x67, 0x61, 0x6d, + 0x6d, 0x61, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x65, 0x70, 0x73, 0x69, 0x6c, + 0x6f, 0x6e, 0x7a, 0x65, 0x74, 0x61, 0x65, 0x74, 0x61, 0x74, 0x68, 0x65, + 0x74, 0x61, 0x69, 0x6f, 0x74, 0x61, 0x6b, 0x61, 0x70, 0x70, 0x61, 0x6c, + 0x61, 0x6d, 0x62, 0x64, 0x61, 0x6e, 0x75, 0x78, 0x69, 0x6f, 0x6d, 0x69, + 0x63, 0x72, 0x6f, 0x6e, 0x70, 0x69, 0x72, 0x68, 0x6f, 0x73, 0x69, 0x67, + 0x6d, 0x61, 0x31, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x74, 0x61, 0x75, 0x75, + 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x70, 0x68, 0x69, 0x63, 0x68, 0x69, + 0x70, 0x73, 0x69, 0x6f, 0x6d, 0x65, 0x67, 0x61, 0x74, 0x68, 0x65, 0x74, + 0x61, 0x31, 0x55, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x31, 0x70, 0x68, + 0x69, 0x31, 0x6f, 0x6d, 0x65, 0x67, 0x61, 0x31, 0x6d, 0x69, 0x6e, 0x75, + 0x74, 0x65, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x45, 0x75, 0x72, 0x6f, + 0x49, 0x66, 0x72, 0x61, 0x6b, 0x74, 0x75, 0x72, 0x77, 0x65, 0x69, 0x65, + 0x72, 0x73, 0x74, 0x72, 0x61, 0x73, 0x73, 0x52, 0x66, 0x72, 0x61, 0x6b, + 0x74, 0x75, 0x72, 0x4f, 0x6d, 0x65, 0x67, 0x61, 0x61, 0x6c, 0x65, 0x70, + 0x68, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, 0x74, 0x61, 0x72, + 0x72, 0x6f, 0x77, 0x75, 0x70, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x64, 0x6f, 0x77, 0x6e, + 0x61, 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x63, 0x61, 0x72, + 0x72, 0x69, 0x61, 0x67, 0x65, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x61, + 0x72, 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x6c, 0x65, 0x66, 0x74, 0x61, + 0x72, 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x75, 0x70, 0x61, 0x72, 0x72, + 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x72, 0x69, 0x67, 0x68, 0x74, 0x61, 0x72, + 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x61, 0x72, + 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x62, 0x6f, 0x74, 0x68, 0x75, 0x6e, + 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x61, 0x6c, 0x64, 0x69, 0x66, 0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x73, 0x65, + 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, + 0x6e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x6e, 0x6f, 0x74, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x75, 0x63, 0x68, 0x74, + 0x68, 0x61, 0x74, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x73, 0x74, 0x65, 0x72, + 0x69, 0x73, 0x6b, 0x6d, 0x61, 0x74, 0x68, 0x72, 0x61, 0x64, 0x69, 0x63, + 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x61, 0x6e, + 0x67, 0x6c, 0x65, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x61, 0x6e, + 0x64, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6f, 0x72, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x75, 0x6e, + 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x73, 0x69, 0x6d, 0x69, + 0x6c, 0x61, 0x72, 0x63, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x65, 0x6e, 0x74, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x6e, + 0x6f, 0x74, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x65, 0x71, 0x75, 0x69, 0x76, + 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x65, 0x71, + 0x75, 0x61, 0x6c, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x65, 0x71, + 0x75, 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x75, 0x62, + 0x73, 0x65, 0x74, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x75, 0x70, + 0x65, 0x72, 0x73, 0x65, 0x74, 0x6e, 0x6f, 0x74, 0x73, 0x75, 0x62, 0x73, + 0x65, 0x74, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x78, 0x73, 0x75, 0x62, 0x73, + 0x65, 0x74, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x78, 0x73, 0x75, 0x70, 0x65, + 0x72, 0x73, 0x65, 0x74, 0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x70, 0x6c, + 0x75, 0x73, 0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x70, 0x6c, 0x79, 0x70, 0x65, 0x72, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x63, 0x75, 0x6c, 0x61, 0x72, 0x64, 0x6f, 0x74, 0x6d, 0x61, 0x74, 0x68, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x74, 0x70, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x62, 0x74, 0x61, 0x6e, 0x67, 0x6c, + 0x65, 0x6c, 0x65, 0x66, 0x74, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x6c, 0x6f, 0x7a, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x70, + 0x61, 0x64, 0x65, 0x63, 0x6c, 0x75, 0x62, 0x68, 0x65, 0x61, 0x72, 0x74, + 0x64, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x63, 0x6f, 0x70, 0x79, 0x72, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x72, 0x69, 0x66, 0x72, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x65, 0x72, 0x69, 0x66, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x65, 0x72, 0x69, 0x66, + 0x72, 0x61, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x65, 0x78, 0x61, 0x72, 0x72, + 0x6f, 0x77, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x61, 0x72, 0x72, 0x6f, + 0x77, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x78, 0x72, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x73, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x70, 0x79, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x61, 0x6e, 0x73, 0x74, 0x72, 0x61, + 0x64, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x61, 0x6e, 0x73, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x74, 0x70, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x65, 0x78, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x62, 0x74, 0x62, 0x72, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x6c, 0x65, 0x66, 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x6c, 0x65, 0x66, 0x74, 0x65, 0x78, 0x62, 0x72, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x6c, 0x65, 0x66, 0x74, 0x62, 0x74, 0x62, 0x72, + 0x61, 0x63, 0x65, 0x6c, 0x65, 0x66, 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, + 0x63, 0x65, 0x6c, 0x65, 0x66, 0x74, 0x6d, 0x69, 0x64, 0x62, 0x72, 0x61, + 0x63, 0x65, 0x6c, 0x65, 0x66, 0x74, 0x62, 0x74, 0x62, 0x72, 0x61, 0x63, + 0x65, 0x65, 0x78, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x65, + 0x78, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x74, + 0x70, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x65, + 0x78, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x62, + 0x74, 0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x72, 0x69, 0x67, 0x68, + 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x65, 0x78, 0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x62, 0x74, 0x62, 0x72, 0x61, 0x63, 0x65, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, 0x63, 0x65, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x6d, 0x69, 0x64, 0x62, 0x72, 0x61, 0x63, + 0x65, 0x72, 0x69, 0x67, 0x68, 0x74, 0x62, 0x74, 0x61, 0x70, 0x70, 0x6c, + 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, + 0x20, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x4f, 0x54, 0x46, 0x0, + 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x4, 0x0, 0x0, 0x6, 0x1, 0x0, + 0x9, 0x1, 0x0, 0xc, 0x1, 0x0, 0xf, 0x11, 0x0, 0x3c, 0x0, 0x0, + 0x3e, 0x0, 0x0, 0x40, 0x0, 0x0, 0x5c, 0x2, 0x0, 0x97, 0x0, 0x0, + 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0x98, 0x0, 0x0, 0xa8, 0x0, 0x0, + 0x9f, 0x0, 0x0, 0x65, 0x0, 0x1, 0x87, 0x31, 0x0, 0x74, 0x0, 0x0, + 0x79, 0x0, 0x1, 0xb9, 0x1, 0x0, 0x63, 0x0, 0x1, 0xbb, 0x1b, 0x0, + 0xa6, 0x0, 0x1, 0xd7, 0x41, 0x0, 0xbf, 0x2, 0x0, 0x1, 0x0, 0x4, + 0x0, 0x7, 0x0, 0x3b, 0x0, 0xad, 0x1, 0x68, 0x2, 0x26, 0x2, 0x5c, + 0x2, 0x8f, 0x2, 0xb0, 0x3, 0x4, 0x3, 0x13, 0x3, 0x27, 0x3, 0x73, + 0x3, 0xa3, 0x3, 0xf5, 0x4, 0x65, 0x4, 0x99, 0x4, 0xf2, 0x5, 0x53, + 0x5, 0x7a, 0x5, 0xf1, 0x6, 0x56, 0x6, 0x6d, 0x6, 0xd9, 0x6, 0xf0, + 0x7, 0x3, 0x7, 0x1c, 0x7, 0x79, 0x7, 0x9a, 0x7, 0xbc, 0x7, 0xcc, + 0x8, 0x17, 0x8, 0x2d, 0x8, 0x79, 0x8, 0x91, 0x8, 0xc9, 0x8, 0xf8, + 0x9, 0x6e, 0x9, 0x9d, 0x9, 0xbd, 0xa, 0x3c, 0xa, 0xa0, 0xb, 0xa, + 0xb, 0x4c, 0xb, 0xa9, 0xb, 0xe8, 0xc, 0x18, 0xc, 0xb5, 0xc, 0xc4, + 0xd, 0x1e, 0xd, 0x6f, 0xd, 0xca, 0xe, 0x11, 0xe, 0x88, 0xe, 0xdd, + 0xf, 0x1c, 0xf, 0x69, 0xf, 0xa5, 0xf, 0xde, 0x10, 0x2e, 0x10, 0xab, + 0x11, 0x40, 0x11, 0xab, 0x12, 0x1a, 0x12, 0xa8, 0x13, 0x2, 0x13, 0x87, + 0x14, 0xa, 0x14, 0x90, 0x14, 0xf6, 0x15, 0x4d, 0x15, 0x89, 0x16, 0x4, + 0x16, 0x61, 0x16, 0xac, 0x17, 0x62, 0x17, 0xa8, 0x18, 0x10, 0x18, 0x71, + 0x18, 0xe3, 0x19, 0x2e, 0x19, 0x80, 0x19, 0xe3, 0x1a, 0x47, 0x1a, 0xa3, + 0x1b, 0x18, 0x1b, 0x93, 0x1c, 0x24, 0x1c, 0x85, 0x1c, 0xf2, 0x1d, 0x87, + 0x1d, 0xab, 0x1d, 0xd0, 0x1d, 0xf2, 0x1e, 0x1f, 0x1e, 0x38, 0x1e, 0xc3, + 0x1f, 0x58, 0x20, 0xc, 0x20, 0xe9, 0x21, 0x72, 0x22, 0x1a, 0x22, 0x4b, + 0x22, 0x79, 0x22, 0xa5, 0x22, 0xd4, 0x23, 0x31, 0x23, 0x53, 0x23, 0x96, + 0x23, 0xd5, 0x24, 0xf, 0x24, 0x4e, 0x24, 0xad, 0x24, 0xde, 0x25, 0x46, + 0x25, 0x6b, 0x25, 0xea, 0x26, 0xe, 0x26, 0x33, 0x26, 0x74, 0x26, 0xe6, + 0x27, 0x31, 0x27, 0x80, 0x27, 0xd8, 0x27, 0xe3, 0x28, 0xf3, 0x29, 0x16, + 0x29, 0x88, 0x29, 0xf3, 0x2a, 0xa, 0x2a, 0x26, 0x2a, 0x49, 0x2a, 0x7f, + 0x2a, 0xb5, 0x2b, 0xc, 0x2b, 0x54, 0x2b, 0xa0, 0x2b, 0xfb, 0x2c, 0x46, + 0x2c, 0x84, 0x2c, 0xa1, 0x2c, 0xb3, 0x2c, 0xc8, 0x2c, 0xfa, 0x2d, 0x24, + 0x2d, 0x7a, 0x2d, 0xb6, 0x2d, 0xef, 0x2e, 0x31, 0x2e, 0x7d, 0x2e, 0x98, + 0x2e, 0xb7, 0x2e, 0xf1, 0x2f, 0x2d, 0x2f, 0x45, 0x2f, 0x5f, 0x2f, 0x95, + 0x2f, 0xff, 0x30, 0x8e, 0x30, 0xda, 0x30, 0xf9, 0x31, 0x55, 0x31, 0xeb, + 0x32, 0x87, 0x32, 0x99, 0x32, 0xab, 0x32, 0xc0, 0x33, 0x45, 0x33, 0x92, + 0x33, 0xdb, 0x34, 0x6, 0x34, 0x12, 0x34, 0x3a, 0x34, 0x57, 0x34, 0x68, + 0x34, 0x84, 0x34, 0xa7, 0x34, 0xd5, 0x34, 0xf4, 0x34, 0xfb, 0x35, 0xe, + 0x35, 0x35, 0x35, 0x43, 0x35, 0x6b, 0x35, 0x8a, 0x35, 0x9e, 0x35, 0xbb, + 0x35, 0xd7, 0x36, 0x5, 0x36, 0x21, 0x36, 0x97, 0xfc, 0x45, 0xe, 0xfc, + 0x45, 0xe, 0xfb, 0xf2, 0x7a, 0xf7, 0x4, 0xf8, 0xd5, 0x77, 0x1, 0xf7, + 0x14, 0xf7, 0x4, 0x3, 0xf7, 0x42, 0xf7, 0x64, 0x15, 0x7f, 0x8c, 0x90, + 0x85, 0x8f, 0x1b, 0x8f, 0x8f, 0x91, 0x97, 0x8d, 0x1f, 0xb0, 0xf7, 0xb8, + 0x94, 0xc1, 0xb6, 0x1a, 0xcb, 0x69, 0x96, 0x75, 0x75, 0x69, 0x81, 0x4a, + 0x1e, 0xfc, 0xc2, 0x4, 0x22, 0xa, 0xfb, 0x4b, 0x90, 0x76, 0xf7, 0x64, + 0xb9, 0xf7, 0x4a, 0xb9, 0xf7, 0x63, 0x77, 0x1, 0x9f, 0xf8, 0x61, 0x3, + 0xe9, 0x7b, 0x15, 0xba, 0x6, 0xa8, 0xf7, 0x64, 0x5, 0xf7, 0x10, 0x6, + 0x6f, 0xfb, 0x64, 0x5, 0xba, 0x6, 0xa7, 0xf7, 0x64, 0x5, 0xf3, 0x6, + 0x91, 0xb9, 0x5, 0x24, 0x6, 0xa3, 0xf7, 0x4a, 0x5, 0xf2, 0x6, 0x91, + 0xb9, 0x5, 0x25, 0x6, 0xa7, 0xf7, 0x63, 0x5, 0x5c, 0x6, 0x6f, 0xfb, + 0x63, 0x5, 0xfb, 0x11, 0x6, 0xa8, 0xf7, 0x63, 0x5, 0x5c, 0x6, 0x6e, + 0xfb, 0x63, 0x5, 0x27, 0x6, 0x85, 0x5d, 0x5, 0xef, 0x6, 0x72, 0xfb, + 0x4a, 0x5, 0x24, 0x6, 0x85, 0x5d, 0x5, 0xf2, 0x6, 0xc0, 0xb9, 0x15, + 0xa4, 0xf7, 0x4a, 0x5, 0xf7, 0x10, 0x6, 0x73, 0xfb, 0x4a, 0x5, 0xe, + 0xf7, 0x2a, 0x5d, 0xb1, 0xf7, 0xa6, 0xbc, 0x7c, 0xb1, 0xf7, 0x70, 0xa7, + 0xd0, 0x77, 0x12, 0xca, 0xdc, 0xf7, 0x70, 0xa8, 0xb7, 0xd6, 0xf7, 0x79, + 0xaa, 0x13, 0xdf, 0x80, 0xf7, 0x3f, 0x67, 0x15, 0xc2, 0x6, 0xf8, 0x4d, + 0xf9, 0x47, 0x5, 0x54, 0x6, 0x66, 0x82, 0x33, 0x6b, 0x5c, 0x1b, 0x53, + 0x8a, 0x6c, 0xa4, 0x83, 0x8f, 0x8, 0xa0, 0x71, 0x79, 0x9f, 0x63, 0x1b, + 0xfb, 0x4, 0xfb, 0x6, 0xfb, 0x23, 0xfb, 0x19, 0x40, 0xb9, 0x65, 0xc7, + 0xf7, 0x1a, 0xe4, 0xf7, 0x25, 0xef, 0x8c, 0x1f, 0xa0, 0x8b, 0xa0, 0x88, + 0x9f, 0x1e, 0x9c, 0x81, 0xaa, 0x85, 0xac, 0x8c, 0xb0, 0x8c, 0xb3, 0x93, + 0xa4, 0x9b, 0x8, 0xfb, 0x69, 0x87, 0x15, 0x8d, 0x76, 0x8d, 0x80, 0x6f, + 0x1a, 0x3a, 0x45, 0xfb, 0xf, 0x27, 0x66, 0x7e, 0xb3, 0xad, 0xe3, 0xda, + 0xf7, 0x14, 0xcd, 0x95, 0x1e, 0x9b, 0x7e, 0xac, 0x7d, 0xa1, 0x82, 0x8, + 0xd8, 0xfc, 0x7e, 0x15, 0x3b, 0xbc, 0x5e, 0xd8, 0xf7, 0xc, 0xe4, 0xf7, + 0x2a, 0xf2, 0x1e, 0x13, 0xbf, 0x80, 0xc2, 0x76, 0xcd, 0x35, 0xfb, 0x18, + 0x2b, 0xfb, 0x20, 0xfb, 0x1, 0x1e, 0xd6, 0x80, 0x15, 0xe8, 0xdf, 0xf7, + 0x16, 0xd3, 0x8a, 0x1e, 0xc6, 0x99, 0x5c, 0x60, 0x38, 0x38, 0xfb, 0x11, + 0x26, 0x6c, 0x7d, 0xb0, 0xb2, 0x1f, 0xe, 0xea, 0x79, 0xc6, 0x50, 0xd6, + 0xf7, 0xed, 0x9d, 0xf7, 0x5d, 0xb3, 0x12, 0xb4, 0xe8, 0xc9, 0xd7, 0x8b, + 0xf7, 0x38, 0x8b, 0xbd, 0x13, 0x7f, 0xf8, 0x3e, 0xdd, 0x15, 0x76, 0xa0, + 0xd2, 0x3c, 0xdb, 0x1b, 0x13, 0xbf, 0xdb, 0xb2, 0xb4, 0xd8, 0xac, 0x1f, + 0x7b, 0x99, 0x5, 0x66, 0x61, 0x64, 0x77, 0x73, 0x1b, 0x4f, 0x56, 0xc2, + 0xaa, 0x6c, 0x1f, 0xcc, 0xd7, 0x9f, 0xb7, 0xb2, 0xc8, 0x8, 0xaf, 0xa2, + 0xa3, 0xb5, 0xbd, 0x1b, 0x9d, 0xfb, 0x67, 0x79, 0x7, 0xae, 0xa2, 0x7d, + 0x71, 0x52, 0x48, 0xfb, 0xa, 0x75, 0x7b, 0x1f, 0x4d, 0xd3, 0x60, 0xd6, + 0x69, 0xc9, 0x8, 0xe2, 0xb1, 0xd5, 0xab, 0xe8, 0x1a, 0xc9, 0x4d, 0xc3, + 0x49, 0x27, 0x4d, 0x54, 0x24, 0x1e, 0x13, 0x9f, 0x56, 0x9e, 0x6f, 0x9c, + 0x5b, 0x1e, 0xfb, 0x2, 0x44, 0x3a, 0x5f, 0xfb, 0xd, 0x1a, 0xfb, 0x0, + 0xe2, 0x5b, 0xe4, 0xf7, 0x11, 0xc2, 0xd0, 0xaa, 0xa8, 0x1e, 0xfb, 0xd, + 0xf7, 0xdc, 0x15, 0x7c, 0xb0, 0x79, 0xbc, 0xb8, 0x1a, 0xb6, 0xb1, 0xb0, + 0xba, 0xaf, 0xb6, 0x6a, 0x52, 0x51, 0x3c, 0x6a, 0x57, 0x6d, 0x1e, 0xe8, + 0xfb, 0xc4, 0x15, 0x13, 0xbf, 0x82, 0x83, 0x4e, 0x53, 0x48, 0x1b, 0x44, + 0x52, 0xc9, 0xda, 0xe4, 0xd2, 0xb1, 0xb4, 0xaa, 0x1f, 0xba, 0x3b, 0xa2, + 0x5b, 0xde, 0x24, 0x8, 0xe, 0x50, 0xa, 0xc0, 0xdd, 0x3, 0xf7, 0xb6, + 0xfb, 0x53, 0x15, 0x95, 0x9c, 0x5, 0xfb, 0xe, 0xe6, 0x60, 0xf7, 0x35, + 0xf7, 0x3a, 0x1a, 0xf7, 0x40, 0xad, 0xf7, 0x2f, 0xf7, 0x17, 0xe0, 0x1e, + 0x81, 0x9c, 0x5, 0xfb, 0x0, 0x72, 0xfb, 0x15, 0xfb, 0x2a, 0xfb, 0x95, + 0x1a, 0xfb, 0x7a, 0xf7, 0x22, 0xfb, 0x48, 0xea, 0x75, 0x1e, 0xe, 0x50, + 0xa, 0xf7, 0x58, 0xdd, 0x3, 0xb4, 0xfb, 0x53, 0x15, 0xea, 0xa1, 0xf7, + 0x22, 0xf7, 0x48, 0xf7, 0x7a, 0x1a, 0xf7, 0x95, 0xfb, 0x15, 0xf7, 0x2a, + 0xfb, 0x0, 0xa4, 0x1e, 0x81, 0x7a, 0x5, 0xf7, 0x17, 0x36, 0xad, 0xfb, + 0x2f, 0xfb, 0x40, 0x1a, 0xfb, 0x3a, 0x60, 0xfb, 0x35, 0xfb, 0xe, 0x30, + 0x1e, 0xe, 0xf7, 0xbe, 0x8b, 0x1, 0xf7, 0x8b, 0xc2, 0x3, 0x95, 0xf7, + 0x87, 0x15, 0xf7, 0x81, 0xfb, 0x87, 0xc2, 0xf7, 0x87, 0xf7, 0x81, 0xc2, + 0xfb, 0x81, 0xf7, 0x7f, 0x54, 0xfb, 0x7f, 0xfb, 0x81, 0x6, 0xe, 0xfc, + 0x45, 0xfb, 0x17, 0x76, 0xf7, 0x24, 0xf7, 0x4, 0x22, 0xf4, 0x12, 0xc3, + 0xf7, 0x1e, 0x13, 0xd0, 0xc3, 0xb8, 0x15, 0x6b, 0x9e, 0x76, 0xaf, 0x1e, + 0x13, 0xb0, 0x97, 0x99, 0x93, 0x8a, 0x93, 0x1f, 0x8f, 0x8a, 0x8d, 0x89, + 0x84, 0x1a, 0x54, 0x51, 0x62, 0x73, 0x79, 0x1e, 0x86, 0x87, 0x83, 0x86, + 0x84, 0x1a, 0x84, 0x90, 0x87, 0x92, 0x8f, 0x92, 0x8c, 0x90, 0x92, 0x1e, + 0x9c, 0x95, 0xac, 0xa4, 0x9f, 0xa4, 0x8, 0xaf, 0xb9, 0x8d, 0xb4, 0xa7, + 0x1a, 0xba, 0x65, 0xa7, 0x67, 0x5f, 0x77, 0x6c, 0x6f, 0x1e, 0xe, 0xfc, + 0x45, 0x7a, 0xf7, 0x4, 0x1, 0xd0, 0xf7, 0x4, 0x3, 0xd0, 0xb2, 0x15, + 0x22, 0xa, 0xfc, 0x29, 0x8e, 0x76, 0xf9, 0x2c, 0x77, 0x1, 0x79, 0x4, + 0xb7, 0x6, 0xf7, 0x66, 0xf9, 0x2c, 0x5, 0x5f, 0x6, 0xe, 0xfb, 0x4b, + 0x7a, 0xab, 0xf9, 0x14, 0xa9, 0x1, 0xa2, 0xee, 0xf7, 0x93, 0xe9, 0x3, + 0xf7, 0xe, 0xf7, 0xe3, 0x15, 0xd4, 0x8b, 0xf7, 0x8b, 0xf7, 0x14, 0xf7, + 0x14, 0x8a, 0xfb, 0x8b, 0x42, 0x38, 0x8c, 0xfb, 0x81, 0xfb, 0x14, 0xfb, + 0x14, 0x8b, 0xf7, 0x7f, 0xe0, 0x1e, 0x28, 0x16, 0xfb, 0x11, 0xb6, 0xfb, + 0x77, 0xf7, 0x4c, 0xf7, 0x4c, 0xb0, 0xf7, 0x77, 0xf7, 0x11, 0xf7, 0xf, + 0x66, 0xf7, 0x77, 0xfb, 0x4c, 0xfb, 0x4c, 0x60, 0xfb, 0x77, 0xfb, 0xf, + 0x1e, 0xe, 0xfb, 0x4b, 0x3b, 0xa, 0xf7, 0x69, 0xdf, 0x3, 0xf7, 0x9, + 0x16, 0xf7, 0xa5, 0x9d, 0x6, 0x7e, 0x3b, 0x96, 0xd2, 0x1f, 0xf8, 0xd1, + 0x79, 0x7, 0xfb, 0x36, 0x32, 0x5, 0x79, 0x7, 0xc4, 0xa0, 0x5, 0xa7, + 0x95, 0x96, 0x7e, 0x77, 0x1a, 0xfc, 0x64, 0x7, 0x44, 0x38, 0x80, 0x7e, + 0x1e, 0xe, 0xfb, 0x4b, 0x8b, 0xd7, 0xf8, 0x1c, 0x9d, 0xf7, 0xc, 0xdb, + 0x1, 0xf7, 0xe0, 0xe5, 0x3, 0xa4, 0x16, 0xf8, 0x1d, 0x6, 0xc4, 0xf7, + 0x1d, 0x7e, 0x90, 0x5, 0x4c, 0x64, 0x6e, 0x88, 0x64, 0x1b, 0xfb, 0x77, + 0x6, 0xf7, 0x58, 0xf7, 0x5c, 0xed, 0xf7, 0x6, 0xf5, 0x1a, 0xf7, 0xd, + 0x41, 0xd0, 0x22, 0x33, 0x2d, 0x5a, 0xfb, 0x2b, 0x6d, 0x1e, 0xa0, 0x86, + 0x5, 0xc1, 0xa1, 0xa9, 0xd2, 0xe6, 0x1b, 0xf7, 0x7, 0xa1, 0x30, 0x5c, + 0x37, 0x5d, 0x34, 0x46, 0x40, 0x1f, 0xfb, 0x54, 0xfb, 0x66, 0x5, 0xe, + 0xfb, 0x4b, 0x7a, 0xb2, 0xf8, 0xef, 0xc7, 0x12, 0xf7, 0xcf, 0xdd, 0x65, + 0xd7, 0x13, 0xd0, 0xf7, 0x25, 0xf7, 0xe8, 0x15, 0xf1, 0x8c, 0xf7, 0x4, + 0x5c, 0xfb, 0x1, 0x1a, 0x37, 0x62, 0x3c, 0x2e, 0x6e, 0x74, 0x97, 0x9c, + 0x76, 0x1e, 0x9c, 0x76, 0x77, 0x98, 0x74, 0x1b, 0x68, 0x7d, 0x7e, 0x6e, + 0x58, 0xf7, 0x10, 0x86, 0x9e, 0xf7, 0x20, 0xf7, 0x5, 0xe5, 0xf7, 0x27, + 0xf7, 0x16, 0x36, 0xb5, 0x5d, 0x9b, 0x1f, 0x13, 0xe0, 0xcd, 0xb8, 0xa6, + 0xb6, 0xc1, 0x1a, 0xb4, 0x70, 0xe9, 0xfb, 0x15, 0x48, 0x2c, 0x6b, 0xfb, + 0x17, 0x63, 0x1e, 0x9a, 0x87, 0x5, 0xa7, 0x9a, 0xbb, 0xda, 0xe6, 0x1b, + 0xd5, 0xac, 0x56, 0x58, 0x2f, 0x40, 0x5b, 0x2c, 0x71, 0x1f, 0x86, 0x8b, + 0x86, 0x86, 0x1a, 0xe, 0xfb, 0x4b, 0xa0, 0x76, 0xf7, 0x33, 0xd1, 0xf8, + 0x5c, 0x77, 0x1, 0x9b, 0xb8, 0xf7, 0x81, 0xdf, 0x3, 0x9b, 0xf7, 0x33, + 0x15, 0xf7, 0xae, 0xfb, 0x33, 0xdf, 0xf7, 0x33, 0xe2, 0xd1, 0x34, 0xf8, + 0x5c, 0x59, 0x6, 0xfb, 0xd0, 0xfc, 0x5b, 0x5, 0xb8, 0x8a, 0x15, 0xf7, + 0x81, 0xf7, 0xe4, 0x5, 0xfb, 0xe4, 0x7, 0xe, 0xfb, 0x4b, 0x7a, 0xb3, + 0xf8, 0x1c, 0xe0, 0xe9, 0xda, 0x1, 0xf7, 0xf7, 0xd2, 0x3, 0xc7, 0xf8, + 0x33, 0x15, 0xf7, 0x7, 0x86, 0xf7, 0x48, 0x59, 0xfb, 0x34, 0x1a, 0xfb, + 0xe, 0x42, 0x54, 0x4a, 0x70, 0x78, 0x9d, 0x9d, 0x77, 0x1e, 0x9d, 0x78, + 0x77, 0x9d, 0x6d, 0x1b, 0x6c, 0x75, 0x7a, 0x6b, 0x57, 0xe5, 0x80, 0xbd, + 0xf7, 0x32, 0xee, 0xf7, 0x1, 0xf7, 0x19, 0xf7, 0x2d, 0x30, 0xf7, 0x4, + 0xfb, 0x57, 0x95, 0x1f, 0xaf, 0xe9, 0x5, 0xf7, 0x79, 0x6, 0xb1, 0xe1, + 0x7c, 0x90, 0x5, 0x81, 0x81, 0x6e, 0x89, 0x64, 0x1b, 0xfb, 0x48, 0x6, + 0xe, 0xfb, 0x4b, 0x7d, 0xa7, 0xf8, 0x4, 0xb9, 0xf7, 0x95, 0x77, 0x1, + 0xad, 0xe8, 0xf7, 0x8f, 0xe5, 0x3, 0xf8, 0x51, 0xf9, 0x41, 0x15, 0xfb, + 0x85, 0x82, 0xfb, 0x3e, 0xfb, 0x4a, 0xfb, 0x5f, 0x1a, 0xfb, 0x66, 0xf1, + 0x2c, 0xf7, 0xa, 0xf7, 0x46, 0xaf, 0xf7, 0x33, 0xd4, 0xf7, 0x1a, 0x3d, + 0xd7, 0x22, 0x54, 0x74, 0x7f, 0x6c, 0x52, 0x1e, 0xa0, 0xf7, 0xc, 0xee, + 0xf7, 0x1b, 0xf7, 0x48, 0xa7, 0x8, 0xfb, 0xce, 0xfb, 0xdc, 0x15, 0xad, + 0xaf, 0xaf, 0x93, 0xb0, 0x1b, 0xf2, 0xa9, 0x27, 0x24, 0xfb, 0x5, 0x5d, + 0x57, 0x4c, 0x40, 0x48, 0xd5, 0xf7, 0x3c, 0xad, 0x8c, 0xa5, 0x93, 0xa3, + 0x1f, 0xe, 0xfb, 0x4b, 0x92, 0x76, 0xf8, 0xe9, 0xe5, 0x1, 0xf7, 0x43, + 0x7b, 0x15, 0xc7, 0x6, 0xf7, 0x69, 0xf9, 0x25, 0x5, 0xab, 0xfb, 0xff, + 0x7, 0x4e, 0xfb, 0x34, 0xa1, 0x82, 0x5, 0xb3, 0xa3, 0xa6, 0xb2, 0xc3, + 0x1b, 0xf7, 0x6d, 0x6, 0xe, 0xfb, 0x4b, 0x79, 0xab, 0xf9, 0xe, 0xb0, + 0x12, 0xc1, 0xd9, 0x45, 0xd1, 0xf7, 0x72, 0xcc, 0x55, 0xd6, 0x13, 0xe4, + 0xf7, 0x63, 0xf7, 0xcd, 0x15, 0xf7, 0x4, 0x38, 0xb9, 0x6d, 0x41, 0x1a, + 0x45, 0x5d, 0x61, 0x4c, 0x3a, 0x60, 0xcc, 0xd8, 0xe6, 0xb3, 0xb2, 0xae, + 0xa6, 0x1e, 0x6f, 0xa6, 0x15, 0x34, 0x4a, 0x65, 0x61, 0x34, 0x1a, 0x3d, + 0xcf, 0x35, 0xf7, 0x10, 0xf7, 0x3a, 0xa7, 0xf7, 0x8, 0xbf, 0xce, 0x7c, + 0xc8, 0xfb, 0x16, 0xe1, 0x1e, 0x13, 0xd8, 0xc1, 0xb1, 0xd1, 0xbc, 0xe7, + 0x1a, 0xd7, 0x4c, 0xcd, 0xfb, 0x5, 0x35, 0x2c, 0x55, 0x26, 0x3a, 0xab, + 0x69, 0xe0, 0x40, 0x1e, 0xde, 0xbd, 0x15, 0x68, 0xa1, 0x30, 0xc4, 0xd9, + 0x1a, 0xbb, 0xab, 0xc0, 0xd6, 0xd8, 0xad, 0x55, 0x54, 0x33, 0x56, 0x66, + 0x64, 0x73, 0x1e, 0xe, 0xfb, 0x4b, 0x8e, 0x76, 0xf7, 0x8d, 0xb6, 0xf8, + 0xe, 0xac, 0x1, 0xaa, 0xe6, 0xf7, 0x84, 0xed, 0x3, 0xc2, 0x8d, 0x15, + 0x90, 0x77, 0x5, 0xf7, 0x8e, 0x98, 0xf7, 0x2a, 0xf7, 0x48, 0xf7, 0x75, + 0x1a, 0xf7, 0x3b, 0x2a, 0xf7, 0xa, 0xfb, 0xf, 0xfb, 0x16, 0x3c, 0xfb, + 0x5, 0xfb, 0x19, 0x39, 0xb8, 0xfb, 0x12, 0xf7, 0x1a, 0xbd, 0xc0, 0x9d, + 0xb0, 0xb7, 0x1e, 0x87, 0x70, 0x54, 0xfb, 0x6d, 0xfb, 0x87, 0x63, 0x8, + 0xf7, 0xc3, 0xf7, 0xd8, 0x15, 0x69, 0x6a, 0x61, 0x79, 0x6a, 0x1b, 0x21, + 0x75, 0xf7, 0x13, 0xd7, 0xdd, 0xa2, 0xe8, 0xdf, 0xf7, 0x17, 0x8d, 0xfb, + 0x4f, 0x4a, 0x76, 0x89, 0x69, 0x89, 0x78, 0x1f, 0xe, 0xfc, 0x29, 0x7a, + 0xf7, 0x4, 0xf7, 0x91, 0xf7, 0x4, 0x1, 0xdc, 0xf7, 0x4, 0x3, 0xdc, + 0xb2, 0x37, 0xa, 0xf8, 0x1, 0x4, 0x22, 0xa, 0xfc, 0x29, 0xfb, 0x17, + 0x76, 0xf7, 0x3b, 0x76, 0xa6, 0x76, 0xf7, 0xf0, 0xf7, 0x4, 0x12, 0xde, + 0xf7, 0x1e, 0xfb, 0x15, 0xf7, 0x4, 0x13, 0xd8, 0xde, 0xb5, 0x15, 0x72, + 0x9b, 0x74, 0xb0, 0x90, 0x91, 0x8c, 0x8d, 0x90, 0x1e, 0x13, 0xb8, 0x8d, + 0x91, 0x91, 0x8c, 0x8f, 0x1b, 0x91, 0x8f, 0x87, 0x80, 0x6f, 0x7b, 0x71, + 0x7b, 0x7a, 0x1f, 0x7c, 0x7c, 0x7a, 0x7f, 0x7f, 0x83, 0x8, 0x7e, 0x82, + 0x85, 0x88, 0x80, 0x1a, 0x86, 0x8d, 0x88, 0x91, 0x8e, 0x8f, 0x8b, 0x8c, + 0x90, 0x1e, 0x95, 0x8d, 0xb7, 0xab, 0xa5, 0xaa, 0x8, 0xa8, 0xae, 0x94, + 0xb7, 0xab, 0x1a, 0xb2, 0x6a, 0xaf, 0x5d, 0x6a, 0x71, 0x75, 0x67, 0x1e, + 0x13, 0xd4, 0x94, 0xf7, 0xfe, 0x15, 0x22, 0xa, 0xa0, 0x76, 0xf8, 0x9e, + 0x77, 0x1, 0xa5, 0xf7, 0x7a, 0x15, 0xf8, 0x85, 0xfb, 0x7a, 0x5, 0xc9, + 0x7, 0xfc, 0x45, 0xf7, 0x5b, 0x3e, 0xa, 0xf7, 0x21, 0xc2, 0xf7, 0x1f, + 0xc2, 0x1, 0x96, 0xf7, 0xe3, 0x15, 0x3a, 0xa, 0xfb, 0x8d, 0x4, 0x3a, + 0xa, 0xe, 0xa0, 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xf8, 0x9f, 0xf7, 0x7a, + 0x15, 0x51, 0xa, 0xf8, 0x44, 0xfb, 0x5b, 0xfc, 0x44, 0xfb, 0x5b, 0x5, + 0x4d, 0x7, 0xe, 0xfb, 0x83, 0x7a, 0xf7, 0x4, 0xf8, 0xc3, 0xab, 0x1, + 0xf7, 0x42, 0xf7, 0x4, 0xa6, 0xeb, 0x3, 0xf7, 0x74, 0xf7, 0x3b, 0x15, + 0xa0, 0x6, 0x98, 0xe7, 0xb1, 0xc3, 0xad, 0xb3, 0x8, 0x9f, 0xa3, 0xc6, + 0xd6, 0xd6, 0x1a, 0xbd, 0x77, 0xf6, 0xfb, 0x32, 0xfb, 0x5, 0x5b, 0x32, + 0x4a, 0x69, 0x9f, 0x68, 0xa8, 0xa1, 0x9b, 0x97, 0xa5, 0x9e, 0x80, 0x99, + 0x81, 0x9a, 0x1e, 0x82, 0x98, 0x82, 0x99, 0x9e, 0x1a, 0xb2, 0xb9, 0x9f, + 0xbe, 0xc1, 0xb7, 0x56, 0x41, 0x4b, 0x76, 0x56, 0x75, 0x51, 0x1e, 0x77, + 0x53, 0x77, 0x48, 0x85, 0x4d, 0x8, 0x59, 0xfb, 0x14, 0x15, 0x22, 0xa, + 0x4e, 0xa, 0xe1, 0xd8, 0x3, 0xe1, 0xfb, 0x2f, 0x15, 0xf7, 0x69, 0xa4, + 0x3c, 0x6, 0x64, 0x79, 0xa3, 0xb0, 0x1f, 0xf9, 0x25, 0x7, 0xb0, 0x9d, + 0xa3, 0xb2, 0x1e, 0xda, 0xa4, 0xfb, 0x69, 0x6, 0xe, 0x4e, 0xa, 0xf7, + 0x3d, 0xd8, 0x3, 0xac, 0xfb, 0x16, 0x15, 0x72, 0xf7, 0x69, 0xf9, 0xd1, + 0xfb, 0x69, 0x72, 0xda, 0x7, 0xb2, 0x9d, 0x73, 0x66, 0x1f, 0xfd, 0x25, + 0x7, 0x66, 0x79, 0x73, 0x64, 0x1e, 0xe, 0xfb, 0x4b, 0xfb, 0x90, 0xb9, + 0x1, 0x89, 0xfb, 0x62, 0x15, 0x5d, 0xf8, 0x8c, 0xb9, 0x7, 0xe, 0x4d, + 0xa, 0xf7, 0x4e, 0xd6, 0x3, 0xc5, 0xf7, 0x7c, 0x15, 0xc4, 0x7f, 0xd2, + 0x8b, 0x27, 0x1a, 0xfb, 0x53, 0x7, 0x39, 0xac, 0x6d, 0xd8, 0x1e, 0xf0, + 0xa4, 0x5a, 0x6, 0x52, 0x6d, 0xaa, 0xc3, 0x1f, 0xf7, 0x53, 0x7, 0xdb, + 0x28, 0xb4, 0x5b, 0x8e, 0x1e, 0xb8, 0x93, 0xf1, 0xaf, 0xdd, 0x1a, 0xf7, + 0x53, 0x7, 0xc5, 0xa9, 0xa8, 0xc4, 0x1e, 0xbc, 0xa4, 0x26, 0x6, 0x3f, + 0x69, 0x71, 0x35, 0x1f, 0xfb, 0x53, 0x7, 0x27, 0x44, 0x8b, 0x52, 0x7f, + 0x1e, 0xe, 0xfc, 0x77, 0xfb, 0x30, 0x76, 0xf9, 0xe6, 0x77, 0x1, 0xcc, + 0xd1, 0x3, 0xcc, 0xfb, 0x45, 0x15, 0xd1, 0xf9, 0xe6, 0x45, 0x6, 0xe, + 0x4d, 0xa, 0xf7, 0x6b, 0xd6, 0x3, 0xda, 0xfb, 0x32, 0x15, 0x72, 0xf0, + 0x7, 0xd8, 0xac, 0xa7, 0xdf, 0x1f, 0xf7, 0x53, 0x7, 0xef, 0xd2, 0x8b, + 0xc4, 0x97, 0x1e, 0xa5, 0x7, 0x52, 0x97, 0x44, 0x8b, 0xef, 0x1a, 0xf7, + 0x53, 0x7, 0xdd, 0x6b, 0xa9, 0x3d, 0x1e, 0x26, 0x72, 0xbc, 0x6, 0xbd, + 0xb0, 0x74, 0x4b, 0x1f, 0xfb, 0x53, 0x7, 0x39, 0xf3, 0x65, 0xb6, 0x83, + 0x1e, 0x5e, 0x89, 0x25, 0x63, 0x3b, 0x1a, 0xfb, 0x53, 0x7, 0x4b, 0x66, + 0x74, 0x59, 0x1e, 0xe, 0xa9, 0xf7, 0x7d, 0xc2, 0x1, 0xf8, 0xf1, 0xc2, + 0x3, 0xae, 0xf7, 0xb4, 0x15, 0xf9, 0x5, 0xfb, 0xb4, 0x54, 0xf7, 0x7d, + 0xfc, 0xce, 0x6, 0xe, 0xfb, 0xaf, 0xf8, 0x15, 0xb4, 0xf7, 0x6e, 0xb4, + 0x1, 0xbd, 0xb6, 0xf7, 0x6b, 0xb5, 0x3, 0xbd, 0xf8, 0xab, 0x15, 0x38, + 0xce, 0x48, 0xde, 0xdd, 0xcf, 0xce, 0xde, 0xdd, 0x47, 0xcf, 0x39, 0x38, + 0x48, 0x49, 0x37, 0x1e, 0xb6, 0x16, 0xc7, 0xb9, 0xbc, 0xc7, 0xc8, 0xbb, + 0x5a, 0x4f, 0x4e, 0x5b, 0x5b, 0x4f, 0x4e, 0x5d, 0xbb, 0xc8, 0x1e, 0xe, + 0x8b, 0xc2, 0xf7, 0xbe, 0xc2, 0xf7, 0x81, 0x77, 0x1, 0xf7, 0x8b, 0xc2, + 0x3, 0x95, 0xf7, 0xf5, 0x15, 0xf7, 0x81, 0xfb, 0x82, 0xc2, 0xf7, 0x82, + 0xf7, 0x81, 0xc2, 0xfb, 0x81, 0xf7, 0x81, 0x54, 0xfb, 0x81, 0xfb, 0x81, + 0x6, 0xfc, 0x2c, 0x4, 0xf8, 0xa5, 0xc2, 0xfc, 0xa5, 0x6, 0xe, 0x20, + 0xfb, 0x5e, 0x76, 0xf7, 0x61, 0xbd, 0x59, 0xd2, 0xf8, 0x53, 0x77, 0x12, + 0xc8, 0xe1, 0xf7, 0x63, 0xe1, 0x13, 0xdc, 0xec, 0xaa, 0x15, 0x6c, 0x9c, + 0xbd, 0x79, 0xb4, 0x1b, 0xca, 0xd3, 0xd2, 0xb1, 0x9a, 0x1f, 0x52, 0x8c, + 0xb8, 0x57, 0xcf, 0x1b, 0xd1, 0xa7, 0xc6, 0xc7, 0x1f, 0x77, 0x6, 0x72, + 0x81, 0x80, 0x5f, 0x67, 0x1b, 0x69, 0x7b, 0xbd, 0xad, 0x1f, 0xf8, 0x14, + 0x35, 0xfb, 0xfe, 0x7, 0x13, 0xbc, 0x5d, 0x6f, 0x62, 0x64, 0x5c, 0x1b, + 0x4a, 0x71, 0xbf, 0xc9, 0x1f, 0xf7, 0xe1, 0x35, 0xfc, 0x80, 0x7, 0x73, + 0x88, 0x78, 0x87, 0x7b, 0x1e, 0x83, 0x6b, 0x7e, 0x72, 0x63, 0x1a, 0x66, + 0x9e, 0x65, 0xa8, 0xa6, 0x9e, 0xb2, 0xb0, 0xb0, 0x7e, 0xa1, 0x82, 0xaf, + 0x1e, 0x87, 0x9b, 0x88, 0x9f, 0x8a, 0xa3, 0x8, 0xe, 0xa8, 0x76, 0xf8, + 0x98, 0x77, 0x1, 0x9c, 0xb8, 0x15, 0xaf, 0x66, 0xf7, 0x72, 0xf7, 0x72, + 0xf7, 0x72, 0xfb, 0x72, 0xaf, 0xb0, 0xfb, 0x70, 0xf7, 0x71, 0xf7, 0x70, + 0xf7, 0x71, 0x68, 0xb0, 0xfb, 0x73, 0xfb, 0x72, 0xfb, 0x72, 0xf7, 0x72, + 0x67, 0x66, 0xf7, 0x70, 0xfb, 0x71, 0x5, 0xe, 0xd2, 0xf7, 0x4, 0xc0, + 0xc2, 0xc0, 0xf7, 0x4, 0x1, 0xf7, 0x68, 0xf7, 0x4, 0x14, 0xe0, 0x95, + 0xf7, 0x80, 0x15, 0x3a, 0xa, 0xf7, 0x5e, 0xf7, 0x1, 0x37, 0xa, 0xfb, + 0xa5, 0x4, 0x22, 0xa, 0xfb, 0x4b, 0xf8, 0xa, 0xac, 0xf7, 0x91, 0xa5, + 0x1, 0x8d, 0xdf, 0xf7, 0xdc, 0xdb, 0x3, 0xf0, 0xf8, 0xa, 0x15, 0xf7, + 0x9, 0x6, 0x6d, 0xfb, 0xab, 0x85, 0x4f, 0x84, 0x53, 0x8, 0x6a, 0x87, + 0x76, 0xfb, 0x5, 0x53, 0x1b, 0x82, 0x80, 0x8d, 0x90, 0x1f, 0x9a, 0x97, + 0x8b, 0xb0, 0x1a, 0x9f, 0x78, 0x9e, 0x78, 0x76, 0x72, 0x7d, 0x65, 0x5a, + 0xb6, 0x74, 0xb5, 0x1e, 0xe8, 0x8c, 0xb0, 0xe6, 0x9c, 0xd7, 0xa7, 0xf7, + 0x1c, 0x9c, 0xf7, 0x16, 0xa2, 0xf7, 0x19, 0x8, 0xf7, 0xe, 0x6, 0x95, + 0xac, 0x5, 0xfb, 0x14, 0x6, 0xf7, 0x3d, 0xa0, 0x9c, 0xdf, 0xbe, 0x1b, + 0x9b, 0x94, 0x87, 0x83, 0x1f, 0x84, 0x85, 0x7b, 0x81, 0x1a, 0x76, 0x9c, + 0x73, 0xa4, 0xa5, 0x97, 0x9e, 0xa8, 0xb3, 0x67, 0xa7, 0x6b, 0xfb, 0x26, + 0x65, 0xfb, 0x30, 0xfb, 0xf, 0x7b, 0x1e, 0xfb, 0x4, 0x6, 0xe, 0xb2, + 0xa0, 0x76, 0xf7, 0x6e, 0xb5, 0xf8, 0x31, 0x77, 0x1, 0x8f, 0xf7, 0x13, + 0xf8, 0x4, 0xf7, 0x4d, 0x3, 0x8f, 0x16, 0xf7, 0x54, 0x9d, 0x6, 0x7c, + 0x59, 0x90, 0xb5, 0x94, 0x8d, 0x95, 0x8f, 0x97, 0x1f, 0xbb, 0xf7, 0xe, + 0x5, 0xf7, 0x97, 0x6, 0xbc, 0xfb, 0xe, 0x5, 0x8f, 0x7f, 0x8d, 0x81, + 0x82, 0x1a, 0x61, 0x59, 0x86, 0x7c, 0x1e, 0x79, 0xf7, 0x8e, 0x9d, 0x7, + 0x5d, 0x7d, 0xaf, 0xb1, 0x7a, 0x1f, 0xfb, 0x8f, 0xf8, 0xd9, 0x5, 0x71, + 0x6, 0xfb, 0x8d, 0xfc, 0xd9, 0x5, 0x67, 0x7b, 0x79, 0x65, 0x60, 0x1b, + 0xf7, 0x5c, 0xf7, 0x86, 0x15, 0xf7, 0x5, 0xf7, 0xa0, 0xf7, 0x5, 0xfb, + 0xa0, 0x5, 0xe, 0x7b, 0x8b, 0xb5, 0xf7, 0xb2, 0xb5, 0xf7, 0x98, 0xb6, + 0x12, 0xf7, 0xb, 0xf3, 0xf7, 0x81, 0xf2, 0x36, 0xf7, 0x6, 0x13, 0xf4, + 0xa8, 0x16, 0xf7, 0xe7, 0x6, 0xf7, 0x10, 0xef, 0xd5, 0xf7, 0x2, 0xd6, + 0x5d, 0xd0, 0xfb, 0x2, 0xa3, 0x1f, 0x8d, 0x7, 0x13, 0xf8, 0xe3, 0xa5, + 0xb2, 0xbb, 0xd3, 0x1a, 0xf7, 0x32, 0xfb, 0x32, 0x9a, 0x28, 0x33, 0xa, + 0xf7, 0xf4, 0x15, 0x13, 0x78, 0xf7, 0x8f, 0x7, 0x99, 0xd2, 0x86, 0x97, + 0xf7, 0xc, 0xad, 0x42, 0x4e, 0xfb, 0xd, 0xfb, 0xa, 0x86, 0x63, 0x1e, + 0x3c, 0x61, 0x15, 0xde, 0x6, 0x13, 0xf4, 0xf1, 0xd1, 0x68, 0xfb, 0x9, + 0x3a, 0x4f, 0x56, 0x4b, 0x1f, 0x33, 0x6, 0x61, 0x8a, 0xab, 0xa3, 0x1f, + 0xe, 0x3b, 0xa0, 0x76, 0xf9, 0x8, 0xb8, 0x77, 0x9f, 0x12, 0xf7, 0x11, + 0xf3, 0xf7, 0xf7, 0xa4, 0x13, 0xd0, 0xa3, 0x16, 0xf7, 0xbb, 0x9d, 0x6, + 0x2a, 0xa, 0x13, 0x58, 0xf8, 0xac, 0xf7, 0x54, 0x7, 0xea, 0xcc, 0x6a, + 0x37, 0x8e, 0x1f, 0xa4, 0x6, 0x7a, 0xf7, 0x36, 0x5, 0xfc, 0xcc, 0x6, + 0x13, 0xb0, 0x77, 0x7, 0x9f, 0x8a, 0xdc, 0x86, 0x23, 0x1a, 0xfc, 0x57, + 0x7, 0x54, 0x5d, 0x78, 0x54, 0x1e, 0xe, 0x43, 0x8b, 0xb9, 0xf7, 0xb3, + 0xb5, 0xf7, 0x8e, 0xbb, 0x79, 0x9d, 0x12, 0xf7, 0xe, 0xf3, 0xf7, 0x96, + 0xa2, 0xa8, 0xa6, 0x13, 0xee, 0xab, 0x16, 0xf8, 0xa9, 0x6, 0xb9, 0xf7, + 0x3e, 0x5, 0x6c, 0x6, 0x58, 0x73, 0x72, 0x42, 0x21, 0x1b, 0xfb, 0x33, + 0x6, 0x76, 0x78, 0x99, 0xae, 0x1f, 0xf7, 0x82, 0xf7, 0x30, 0x7, 0xdb, + 0xa1, 0x69, 0x4f, 0x1f, 0xa2, 0xf7, 0x7a, 0x74, 0x6, 0x4f, 0x75, 0x69, + 0x3b, 0x1e, 0xfb, 0x30, 0xf7, 0x8e, 0xf7, 0x6b, 0x6, 0xe1, 0x87, 0x55, + 0x5d, 0x98, 0x1f, 0xa6, 0xf7, 0x28, 0xfc, 0xa7, 0x6, 0x13, 0xdc, 0x79, + 0x7, 0x25, 0xa, 0xe, 0x43, 0x8b, 0xb5, 0xf8, 0xe1, 0xb5, 0x1, 0xb7, + 0xf8, 0xe4, 0x3, 0xb7, 0x16, 0xf8, 0xcb, 0x6, 0xa4, 0xf7, 0x49, 0x5, + 0x6e, 0x6, 0x5c, 0x7d, 0x78, 0x2f, 0xfb, 0x1f, 0x1b, 0xfb, 0x87, 0x6, + 0xf8, 0x31, 0xf8, 0xf0, 0x5, 0xa6, 0xfc, 0x9e, 0x7, 0x7c, 0xfb, 0x43, + 0x5, 0xa4, 0x6, 0xd1, 0x9f, 0x9a, 0xca, 0xf7, 0x12, 0x1b, 0xf7, 0x6f, + 0x6, 0xfc, 0x41, 0xfc, 0xf8, 0x5, 0xe, 0xb2, 0xa0, 0x76, 0xf7, 0xd7, + 0xb5, 0xf7, 0xc8, 0x77, 0x1, 0xf7, 0x15, 0xf3, 0xf7, 0xc2, 0xf3, 0x3, + 0xb2, 0x24, 0xa, 0xf7, 0x7b, 0xf7, 0xc2, 0xfb, 0x7b, 0x27, 0xa, 0x79, + 0xf7, 0xb0, 0x9d, 0x7, 0x2a, 0xa, 0xf8, 0x7d, 0x7, 0x3c, 0xa, 0xfb, + 0x6c, 0xfb, 0xc2, 0xf7, 0x6c, 0x26, 0xa, 0xc5, 0x7a, 0xb2, 0xf7, 0xae, + 0xce, 0xf7, 0xa5, 0xb2, 0x1, 0xb4, 0xf7, 0x6, 0xf8, 0x50, 0xf7, 0x8, + 0x3, 0xb4, 0xf7, 0xe6, 0x15, 0xfb, 0x42, 0xf7, 0x14, 0xfb, 0x49, 0xf7, + 0x63, 0xf7, 0x63, 0xf7, 0x18, 0xf7, 0x49, 0xf7, 0x42, 0xf7, 0x3e, 0xfb, + 0x1b, 0xf7, 0x43, 0xfb, 0x60, 0xfb, 0x60, 0xfb, 0x17, 0xfb, 0x43, 0xfb, + 0x3e, 0x1e, 0xf7, 0x6, 0x16, 0xf7, 0x22, 0xbc, 0xf7, 0x38, 0xf7, 0x40, + 0xf7, 0x41, 0xbd, 0xfb, 0x38, 0xfb, 0x22, 0xfb, 0x1a, 0x50, 0xfb, 0x4a, + 0xfb, 0x38, 0xfb, 0x3d, 0x57, 0xf7, 0x4a, 0xf7, 0x1a, 0x1e, 0xd9, 0x35, + 0x15, 0x9a, 0x8a, 0x5, 0xad, 0x96, 0x9e, 0x9e, 0xb0, 0x1b, 0xf7, 0x12, + 0x6, 0xb0, 0x9e, 0x78, 0x69, 0x96, 0x1f, 0x9a, 0x8c, 0x5, 0x87, 0xac, + 0x89, 0xa7, 0xa4, 0x1a, 0xa4, 0x8d, 0xa7, 0x8f, 0xab, 0x1e, 0x7c, 0x8c, + 0x5, 0x6a, 0x80, 0x78, 0x77, 0x66, 0x1b, 0xfb, 0x12, 0x6, 0x66, 0x78, + 0x9f, 0xac, 0x80, 0x1f, 0x7c, 0x8a, 0x5, 0x8f, 0x6b, 0x8d, 0x6f, 0x72, + 0x1a, 0x72, 0x89, 0x6f, 0x87, 0x6a, 0x1e, 0xe, 0xfb, 0xf2, 0x3b, 0xa, + 0xf7, 0xe, 0xf3, 0x3, 0xab, 0x24, 0xa, 0xf8, 0x7d, 0x26, 0xa, 0xb2, + 0x3b, 0xa, 0xf7, 0x11, 0xf3, 0xf7, 0x9a, 0xf7, 0x42, 0x3, 0xae, 0x24, + 0xa, 0xf7, 0x61, 0x7, 0xac, 0xa9, 0xf7, 0x66, 0xfb, 0x81, 0x5, 0x9a, + 0x79, 0x93, 0x7d, 0x80, 0x1a, 0x77, 0x72, 0x82, 0x57, 0x1e, 0x79, 0xf7, + 0xc4, 0x9d, 0x7, 0x6a, 0x91, 0x73, 0x88, 0x43, 0xdc, 0xfb, 0x95, 0xf7, + 0xb6, 0x18, 0xd5, 0xd0, 0xbd, 0xbb, 0xcd, 0xd0, 0x8, 0xc5, 0xc6, 0xae, + 0x9e, 0xb8, 0x1b, 0x9d, 0xfb, 0x98, 0x79, 0x7, 0xbd, 0xaf, 0x81, 0x74, + 0x80, 0x84, 0x7c, 0x79, 0x79, 0x1f, 0x3f, 0x3d, 0x3d, 0x43, 0x38, 0x47, + 0x8, 0xf7, 0x71, 0x26, 0xa, 0x8e, 0x8b, 0x9d, 0xf9, 0x28, 0x77, 0x1, + 0x91, 0xf7, 0x28, 0xf7, 0xdd, 0xf7, 0x59, 0x3, 0x91, 0x16, 0xf7, 0x6b, + 0x9d, 0x6, 0x6d, 0x66, 0x91, 0xb4, 0x97, 0x8e, 0x9a, 0x92, 0x9e, 0x1f, + 0xf7, 0x26, 0xf8, 0x15, 0xf7, 0x36, 0xfc, 0x17, 0x5, 0x91, 0x7c, 0x90, + 0x75, 0x81, 0x1a, 0x5f, 0x51, 0x8b, 0x7a, 0x1e, 0x79, 0xf7, 0xa4, 0x9d, + 0x7, 0x80, 0x53, 0xa1, 0xd0, 0x6d, 0x1f, 0xfb, 0x87, 0xf8, 0xcd, 0x5, + 0x83, 0x6, 0xfb, 0x6c, 0xfc, 0xcb, 0x5, 0x52, 0x74, 0x46, 0x67, 0x79, + 0x1b, 0xe, 0xf7, 0x62, 0x3b, 0xa, 0xf7, 0xd, 0xbc, 0xf8, 0x9f, 0xf3, + 0x3, 0xa7, 0x16, 0xf7, 0x7c, 0x9d, 0x6, 0x58, 0x64, 0xa6, 0xba, 0x1f, + 0xf8, 0x57, 0x7, 0xf7, 0x98, 0xfc, 0xb3, 0x5, 0x9d, 0x6, 0xf7, 0x89, + 0xf8, 0xd0, 0x5, 0xfc, 0x74, 0x27, 0xa, 0x79, 0xf7, 0xb0, 0x9d, 0x7, + 0x54, 0x68, 0x94, 0xcc, 0x1f, 0xf8, 0x76, 0x7, 0xd2, 0xc8, 0x95, 0xa8, + 0x1e, 0x9d, 0xfb, 0x5c, 0x7, 0xfb, 0x74, 0xfc, 0x92, 0xfb, 0x7e, 0xf8, + 0x92, 0x5, 0xfb, 0x5d, 0x79, 0x6, 0xda, 0x85, 0x99, 0x65, 0x49, 0x1a, + 0xfc, 0x59, 0x7, 0x5c, 0x61, 0x70, 0x58, 0x1e, 0xe, 0xb2, 0x98, 0x76, + 0xf9, 0x3d, 0x77, 0x1, 0xf7, 0xb, 0xbc, 0xf8, 0x31, 0xbc, 0x3, 0xa8, + 0x83, 0x15, 0xf7, 0x79, 0x9d, 0x6, 0x58, 0x64, 0xa6, 0xba, 0x1f, 0xf8, + 0x5b, 0x7, 0xf8, 0x4c, 0xfc, 0xb7, 0x5, 0xa1, 0xf8, 0xe1, 0x6, 0x31, + 0xa, 0xfb, 0x79, 0x45, 0xa, 0xfc, 0x20, 0x7, 0xfc, 0x13, 0xf8, 0x7c, + 0x5, 0xfb, 0x3d, 0x79, 0x6, 0xbe, 0x94, 0x79, 0x69, 0xa9, 0x1f, 0xfc, + 0x9b, 0x7, 0x5c, 0x64, 0x70, 0x58, 0x1e, 0xe, 0x65, 0x8b, 0xe8, 0xf7, + 0x69, 0xea, 0xf7, 0x4a, 0xe5, 0x1, 0xaf, 0x9d, 0xe8, 0x9d, 0xf7, 0xc9, + 0x9d, 0xe4, 0x9d, 0x3, 0xc7, 0xf8, 0x9e, 0x15, 0x9b, 0x6, 0x9d, 0x8e, + 0x8d, 0xb6, 0xcd, 0x1b, 0xf7, 0xec, 0x6, 0xcd, 0x8e, 0x60, 0x79, 0x8e, + 0x1f, 0x9b, 0xf7, 0x2b, 0xfc, 0x9b, 0x6, 0xe2, 0xfc, 0x3b, 0x15, 0x9d, + 0x6, 0xbb, 0x8e, 0xa3, 0x93, 0xae, 0x1b, 0xf7, 0x4d, 0x6, 0xae, 0xa3, + 0x83, 0x5b, 0x8e, 0x1f, 0x9d, 0xf7, 0x63, 0x79, 0x6, 0x5b, 0x88, 0x73, + 0x83, 0x68, 0x1b, 0xfb, 0x4d, 0x6, 0x68, 0x73, 0x93, 0xbb, 0x88, 0x1f, + 0x79, 0x6, 0xfb, 0x3, 0xfc, 0x5d, 0x15, 0xf8, 0xc7, 0xf7, 0x56, 0x79, + 0x6, 0x47, 0x82, 0x7b, 0x6a, 0x43, 0x1b, 0xfb, 0xdd, 0x6, 0x43, 0x77, + 0xac, 0xcf, 0x82, 0x1f, 0x79, 0x6, 0xe, 0xb2, 0x7a, 0xb2, 0xf9, 0x4, + 0xb2, 0x1, 0xb4, 0xf7, 0x8, 0xf8, 0x4f, 0xf7, 0x7, 0x3, 0xb4, 0xf7, + 0xe4, 0x15, 0xfb, 0x42, 0xf7, 0x16, 0xfb, 0x47, 0xf7, 0x63, 0xf7, 0x63, + 0xf7, 0x16, 0xf7, 0x47, 0xf7, 0x42, 0xf7, 0x3e, 0xfb, 0x19, 0xf7, 0x47, + 0xfb, 0x60, 0xfb, 0x60, 0xfb, 0x19, 0xfb, 0x47, 0xfb, 0x3e, 0x1e, 0xf7, + 0x8, 0x16, 0xf7, 0x1b, 0xc6, 0xf7, 0x43, 0xf7, 0x36, 0xf7, 0x3b, 0xc2, + 0xfb, 0x3f, 0xfb, 0x20, 0xfb, 0x1b, 0x53, 0xfb, 0x46, 0xfb, 0x3a, 0xfb, + 0x3c, 0x56, 0xf7, 0x48, 0xf7, 0x1a, 0x1e, 0xe, 0xe0, 0xa0, 0x76, 0xf9, + 0xc, 0xb4, 0x79, 0x9d, 0x12, 0xf7, 0x7, 0xf2, 0xf7, 0xe1, 0xf2, 0x13, + 0xd8, 0xa4, 0x24, 0xa, 0x8a, 0xf8, 0xb0, 0x5, 0xf7, 0xe1, 0xfc, 0xb0, + 0x6, 0x28, 0xa, 0x79, 0xf7, 0xb0, 0x9d, 0x7, 0x2a, 0xa, 0x8a, 0xf8, + 0x6f, 0x5, 0x13, 0xb8, 0xd4, 0xcc, 0x9a, 0xa5, 0x1e, 0x9d, 0xfd, 0x64, + 0x79, 0x7, 0xa5, 0xcb, 0x7c, 0x42, 0x1f, 0xfc, 0x6f, 0x39, 0xa, 0xfb, + 0x13, 0xa0, 0x76, 0xf7, 0xc0, 0xb4, 0xf7, 0xb8, 0xb3, 0x79, 0x9d, 0x12, + 0xf7, 0xa, 0xf3, 0xf7, 0x6a, 0xf6, 0x13, 0xdc, 0xa7, 0x24, 0xa, 0xf7, + 0x64, 0x7, 0xf7, 0xbe, 0x8a, 0xa2, 0xd5, 0xf7, 0xf, 0x1a, 0xf7, 0x5, + 0x6a, 0xcb, 0xfb, 0x61, 0x33, 0xa, 0xf7, 0xe3, 0x15, 0xf7, 0x94, 0x7, + 0x13, 0xec, 0x9e, 0x9d, 0x90, 0x9c, 0x1e, 0xf7, 0x9, 0x8c, 0xc9, 0x77, + 0xfb, 0xa, 0x1a, 0xfb, 0x12, 0x6b, 0x6e, 0xfb, 0x2d, 0x7f, 0x81, 0x92, + 0x90, 0x84, 0x1e, 0xe, 0x30, 0x8b, 0xe9, 0xf8, 0xa9, 0xb9, 0x1, 0x90, + 0x16, 0xf8, 0xb7, 0x6, 0xb0, 0xf7, 0x61, 0x5, 0x77, 0x6, 0x2a, 0x6d, + 0x5c, 0x7d, 0x4b, 0x1b, 0xfb, 0xaf, 0x6, 0xf7, 0x80, 0xf7, 0xa7, 0xfb, + 0x5d, 0xf7, 0x96, 0x5, 0xf7, 0x66, 0x6, 0xee, 0xa6, 0x48, 0x65, 0x95, + 0x1f, 0x9e, 0x6, 0x81, 0xf7, 0x2b, 0x5, 0xfc, 0x9a, 0x6, 0xf7, 0xa1, + 0xfb, 0xee, 0x5, 0xe, 0x43, 0xa0, 0x76, 0xf9, 0xe, 0xb2, 0x1, 0xae, + 0xa3, 0xf7, 0x65, 0xf3, 0xf7, 0x65, 0xa2, 0x3, 0xf7, 0x46, 0x24, 0xa, + 0xf8, 0xb2, 0x7, 0xf7, 0xc, 0x8c, 0xe5, 0x6f, 0x8a, 0x20, 0xa5, 0x8d, + 0x18, 0x86, 0xf7, 0x3f, 0x5, 0xfc, 0xc8, 0x6, 0x86, 0xfb, 0x3f, 0xa5, + 0x89, 0x8c, 0xf6, 0xdb, 0xa7, 0xf7, 0x14, 0x8a, 0x19, 0xfc, 0xb2, 0x39, + 0xa, 0x92, 0x3b, 0xa, 0xf7, 0xba, 0xf3, 0x3, 0xf7, 0x60, 0x24, 0xa, + 0xf7, 0x60, 0x7, 0xf7, 0x4d, 0xf7, 0xbe, 0x5, 0xca, 0xb2, 0xb0, 0x89, + 0xae, 0x1b, 0x9d, 0xfb, 0x7c, 0x79, 0x7, 0xbf, 0x9b, 0x7f, 0x7c, 0x81, + 0x84, 0x7e, 0x84, 0x80, 0x1f, 0xfb, 0x20, 0xfb, 0x7b, 0xfb, 0x30, 0xf7, + 0x83, 0x5, 0x85, 0x95, 0x88, 0x94, 0x92, 0x1a, 0x9d, 0xa5, 0x94, 0xbf, + 0x1e, 0x9d, 0xfb, 0xbd, 0x79, 0x7, 0xc0, 0xac, 0x64, 0x7b, 0x97, 0x1f, + 0xf7, 0x60, 0xfb, 0xc0, 0x5, 0xfb, 0x64, 0x39, 0xa, 0xdb, 0x8b, 0x9d, + 0xe2, 0xae, 0xf8, 0x21, 0xaa, 0xe2, 0x9d, 0x1, 0xa5, 0xf7, 0xd, 0xf7, + 0x4f, 0xf1, 0xf7, 0x4f, 0xf7, 0xa, 0x3, 0xf7, 0x7c, 0x16, 0xf7, 0xc6, + 0x9d, 0x6, 0x32, 0x7e, 0xb4, 0xb9, 0x1f, 0xf7, 0x21, 0x8a, 0xf7, 0x38, + 0xd5, 0xf7, 0x2d, 0x1a, 0xf7, 0x23, 0xfb, 0x2b, 0xe9, 0xfb, 0x2e, 0x1e, + 0xb9, 0x97, 0xb4, 0xe4, 0x1e, 0x9d, 0xfb, 0xc4, 0x79, 0x7, 0xe4, 0x97, + 0x62, 0x5d, 0x1f, 0xfb, 0x37, 0xfb, 0x25, 0x2f, 0xfb, 0x25, 0xfb, 0x2f, + 0xf7, 0x35, 0x43, 0xf7, 0x27, 0x8c, 0x1f, 0x5d, 0x7e, 0x62, 0x32, 0x1e, + 0xf7, 0x60, 0xf7, 0xe, 0x15, 0xf8, 0x21, 0x7, 0xf7, 0x4, 0xd6, 0x31, + 0xfb, 0x8, 0x3d, 0x5a, 0xfb, 0x5, 0xfb, 0x1e, 0x1f, 0x25, 0x16, 0xfb, + 0x1c, 0x58, 0xf7, 0x4, 0xda, 0xf7, 0x1, 0xce, 0xeb, 0xf7, 0xc, 0x8c, + 0x1f, 0xe, 0xb2, 0xa0, 0x76, 0xf9, 0x35, 0x77, 0x12, 0x82, 0xf7, 0x38, + 0xfb, 0x38, 0xf9, 0x5d, 0xfb, 0x46, 0xf7, 0x35, 0x13, 0xe8, 0x82, 0x16, + 0xf7, 0x7a, 0x9d, 0x6, 0x59, 0x7b, 0x9f, 0xa0, 0x95, 0x90, 0x96, 0x92, + 0x94, 0x1f, 0xf7, 0x39, 0xf7, 0x5f, 0xf7, 0x21, 0xfb, 0x67, 0x5, 0x91, + 0x81, 0x8e, 0x82, 0x83, 0x1a, 0x76, 0x72, 0x7c, 0x56, 0x1e, 0x79, 0x7, + 0x13, 0xd0, 0xf7, 0xc0, 0x9d, 0x6, 0x62, 0x5f, 0xb9, 0x9b, 0x7f, 0x1f, + 0xfb, 0x67, 0xf7, 0xbb, 0xf7, 0x42, 0xf7, 0x65, 0x5, 0x13, 0xf0, 0xae, + 0xa9, 0xc7, 0xaf, 0xa6, 0x1b, 0x9d, 0xfb, 0x7c, 0x79, 0x7, 0xc0, 0x9d, + 0x7e, 0x7a, 0x7d, 0x83, 0x7c, 0x82, 0x7f, 0x1f, 0xfb, 0x20, 0xfb, 0x3f, + 0xfb, 0xf, 0xf7, 0x47, 0x5, 0x84, 0x96, 0x89, 0x95, 0x94, 0x1a, 0x9f, + 0xa4, 0x98, 0xc0, 0x1e, 0x9d, 0xfb, 0xc0, 0x79, 0x7, 0xb8, 0xb7, 0x5b, + 0x7b, 0x97, 0x1f, 0xf7, 0x51, 0xfb, 0x96, 0xfb, 0x5d, 0xfb, 0x88, 0x5, + 0x66, 0x6c, 0x51, 0x69, 0x73, 0x1b, 0xe, 0xf7, 0x4, 0xa0, 0x76, 0xf7, + 0xb6, 0xb3, 0xf7, 0xd9, 0x9d, 0x96, 0x77, 0x12, 0xd2, 0xf7, 0x7, 0xf7, + 0x34, 0xf3, 0xf7, 0x34, 0xf7, 0x7, 0x14, 0xe, 0x13, 0xde, 0xf7, 0x94, + 0x24, 0xa, 0xf7, 0x5a, 0x7, 0xf7, 0x1b, 0xf7, 0x20, 0xad, 0xf7, 0x20, + 0xf7, 0x5, 0x82, 0xe4, 0xcc, 0x1f, 0x9d, 0x7, 0xfb, 0x19, 0x65, 0x3a, + 0xfb, 0x1b, 0xfb, 0x12, 0x29, 0x80, 0x4d, 0x8a, 0x1f, 0xf7, 0x8f, 0x7, + 0x13, 0xee, 0x3c, 0xa, 0xfb, 0x8f, 0x7, 0x4d, 0x8c, 0x29, 0x96, 0xf7, + 0x12, 0x1a, 0x13, 0xde, 0xf7, 0x1e, 0x6c, 0xd9, 0xfb, 0x20, 0x1e, 0x79, + 0x7, 0xd2, 0x7c, 0x33, 0xfb, 0x6, 0xfb, 0x21, 0xf7, 0x1f, 0x6a, 0xf7, + 0x1c, 0x1f, 0xfb, 0x5a, 0x39, 0xa, 0x57, 0x79, 0xad, 0x69, 0xd1, 0xf8, + 0x26, 0xb9, 0x12, 0xb4, 0xf5, 0x13, 0x70, 0xf8, 0x4e, 0xf6, 0x15, 0x49, + 0xae, 0xa5, 0x50, 0xb7, 0x1b, 0xd4, 0x8d, 0xf7, 0x4, 0xb6, 0x1f, 0x79, + 0x6, 0x7d, 0x8c, 0x76, 0x44, 0x6b, 0x1b, 0x69, 0x6b, 0xcb, 0xc1, 0x7d, + 0x1f, 0xf7, 0x7, 0xf7, 0xde, 0x5, 0x33, 0x6, 0x4b, 0xfb, 0x53, 0x5, + 0xdc, 0x7c, 0x55, 0xf7, 0x2, 0xfb, 0x2, 0x1b, 0xfb, 0x22, 0x42, 0xfb, + 0x0, 0xfb, 0x13, 0xfb, 0x35, 0xaf, 0xfb, 0xe, 0xf7, 0x3b, 0xea, 0xe1, + 0xeb, 0xa8, 0x9c, 0x1f, 0x68, 0xf7, 0x8, 0x15, 0x13, 0xb0, 0x20, 0x70, + 0x40, 0x27, 0x4f, 0x1b, 0x2b, 0x89, 0xf7, 0x42, 0xd4, 0xf4, 0x92, 0xe1, + 0xf3, 0xd1, 0xcc, 0xfb, 0x28, 0x38, 0x99, 0x1f, 0xe, 0xfb, 0x5e, 0x76, + 0xf7, 0x61, 0xbb, 0xf8, 0x5, 0xc2, 0xf7, 0x91, 0xad, 0x12, 0xd8, 0xd9, + 0xf7, 0x61, 0xf2, 0x56, 0xf4, 0x13, 0xfa, 0xf7, 0x32, 0xb0, 0x15, 0xbd, + 0x65, 0xc9, 0x79, 0xc6, 0x8c, 0x8, 0xe8, 0x8c, 0xe8, 0xda, 0xf7, 0x1e, + 0x1a, 0xf2, 0x55, 0xe1, 0x2f, 0xb6, 0x1e, 0x13, 0xfc, 0xc8, 0xa2, 0xac, + 0xc7, 0xc8, 0x1a, 0xf7, 0x7, 0x34, 0xbd, 0xfb, 0x0, 0x3c, 0xfb, 0x4, + 0x51, 0x28, 0x1e, 0xfd, 0x23, 0x7, 0x58, 0x80, 0x59, 0x86, 0x58, 0x1e, + 0xe2, 0x6, 0x8e, 0xa4, 0x90, 0xa4, 0xa4, 0x1a, 0x8a, 0xf7, 0x85, 0x15, + 0xf8, 0x8c, 0x7, 0xc7, 0xbc, 0xbd, 0xc0, 0xd6, 0xa6, 0x4f, 0x49, 0x8c, + 0x1e, 0x5c, 0x8c, 0x7b, 0x3b, 0x65, 0x7a, 0x77, 0x91, 0x74, 0x1b, 0x77, + 0x78, 0x81, 0x74, 0x73, 0x9e, 0x81, 0xa0, 0x1f, 0xa3, 0x9e, 0x91, 0x9f, + 0x1b, 0x13, 0xfa, 0xc0, 0xb9, 0xfb, 0x3a, 0x4b, 0x40, 0x6a, 0x4b, 0x31, + 0x59, 0x54, 0xa6, 0xaf, 0x70, 0x1f, 0xe, 0xfb, 0xa4, 0xfb, 0x60, 0x76, + 0xf9, 0x1b, 0xd8, 0x1, 0x90, 0x9b, 0xf7, 0x32, 0xf7, 0xb, 0x3, 0xf7, + 0x83, 0xc7, 0x15, 0x78, 0x5a, 0x62, 0x2b, 0x45, 0x1a, 0x63, 0x9e, 0x6d, + 0xa7, 0xbd, 0xa1, 0xca, 0xc1, 0xcf, 0x7c, 0xd4, 0x88, 0xa4, 0x1e, 0xf7, + 0x60, 0xf8, 0x4d, 0x5, 0x23, 0x6, 0xfb, 0x5, 0xfb, 0xf9, 0x5, 0x89, + 0x6, 0xe8, 0x79, 0x6c, 0xf7, 0x9c, 0xfb, 0x0, 0x1b, 0x4c, 0x65, 0x54, + 0x3d, 0x8a, 0x1f, 0x74, 0x8b, 0x77, 0x8a, 0x7b, 0x1e, 0x9b, 0x6, 0xb3, + 0x8e, 0x9a, 0xd6, 0xc0, 0x1b, 0xef, 0xad, 0xfb, 0x9f, 0x2c, 0x98, 0x1f, + 0xe, 0xfb, 0x51, 0x78, 0xba, 0xf9, 0x34, 0xb3, 0x12, 0xb3, 0xee, 0x61, + 0xbc, 0xf7, 0x82, 0xec, 0x13, 0xe8, 0xf7, 0x93, 0xf8, 0x53, 0x15, 0xfb, + 0x2b, 0x68, 0x4b, 0x34, 0xfb, 0x17, 0x1a, 0x25, 0xe7, 0xfb, 0x3, 0xf7, + 0x18, 0xf7, 0xb, 0xed, 0xf7, 0x0, 0xf7, 0x8, 0xf7, 0xf, 0x54, 0xcf, + 0x43, 0xc4, 0x1e, 0x13, 0xd8, 0x21, 0xde, 0x25, 0xb9, 0xcf, 0x1a, 0xa7, + 0xb1, 0xa1, 0xad, 0xb2, 0xa4, 0x7b, 0x77, 0x9d, 0x1e, 0x6b, 0xa9, 0x9a, + 0x60, 0xb5, 0x1b, 0xa8, 0xa3, 0x9c, 0xaa, 0xcf, 0xfb, 0xa, 0xae, 0x3d, + 0x4b, 0x38, 0x78, 0x40, 0x33, 0xf7, 0x2, 0x58, 0xbb, 0x4f, 0x1f, 0xaa, + 0x6e, 0x15, 0x97, 0x88, 0xe6, 0x24, 0x86, 0xfb, 0x2, 0x8, 0x32, 0x87, + 0x5f, 0x36, 0x41, 0x1b, 0x66, 0x6d, 0xa4, 0xad, 0x77, 0x1f, 0x13, 0xe8, + 0x76, 0xae, 0x7c, 0xb7, 0xb1, 0x1a, 0xef, 0xb0, 0xe0, 0xf7, 0x2, 0xa8, + 0x1e, 0xe, 0xfb, 0x88, 0x78, 0xb9, 0xf7, 0x58, 0xba, 0x64, 0xbc, 0xf7, + 0x4e, 0xaf, 0x12, 0xa1, 0xf3, 0x30, 0xe6, 0x13, 0xb8, 0xf7, 0x19, 0xf7, + 0x90, 0x15, 0x65, 0x86, 0x42, 0x66, 0x30, 0x1a, 0x28, 0xf7, 0x4, 0x64, + 0xe6, 0xf7, 0x4, 0xe5, 0xa7, 0xed, 0x1e, 0x71, 0x92, 0x5, 0x49, 0x77, + 0x63, 0x76, 0x4f, 0x1b, 0x4d, 0x8a, 0x2e, 0xa6, 0xdb, 0x1a, 0xc5, 0xb0, + 0xb3, 0xce, 0x1e, 0x13, 0xd8, 0xa6, 0x97, 0x83, 0xb0, 0x1b, 0x9d, 0x9b, + 0x94, 0xa2, 0x1f, 0x13, 0xb8, 0x9d, 0x79, 0x92, 0x79, 0x1e, 0x13, 0xd4, + 0x67, 0x7c, 0x81, 0x6f, 0x1b, 0x5a, 0x5a, 0xb1, 0xcf, 0xb2, 0xb3, 0xbe, + 0xc0, 0x1f, 0xaf, 0x8c, 0xab, 0x76, 0x92, 0x6e, 0x8, 0x5c, 0x96, 0xa8, + 0x86, 0x9e, 0x1b, 0xa4, 0x9c, 0xa2, 0xa5, 0xc5, 0x30, 0xa9, 0x53, 0x37, + 0xfb, 0x16, 0x67, 0x20, 0x1f, 0x8c, 0x55, 0xb7, 0x69, 0xc0, 0x78, 0x8, + 0xe, 0xfb, 0x51, 0xfb, 0x75, 0xef, 0xf7, 0x17, 0xed, 0xf9, 0x20, 0x77, + 0x12, 0xc7, 0xbb, 0x85, 0xc6, 0xf7, 0x9c, 0xb5, 0x13, 0xf4, 0xf7, 0x59, + 0xf8, 0xdc, 0x15, 0x3c, 0x33, 0x51, 0xfb, 0x35, 0x2d, 0x1a, 0xfb, 0x54, + 0xf7, 0x0, 0x60, 0xf7, 0x44, 0xb8, 0xaf, 0x77, 0x62, 0x70, 0x76, 0x43, + 0x51, 0x98, 0x1e, 0x8e, 0x7c, 0x68, 0x98, 0x72, 0x1b, 0x63, 0x7d, 0x6f, + 0x77, 0x63, 0xc0, 0x7f, 0xaa, 0xf1, 0xcb, 0xd9, 0xf7, 0xd, 0xf7, 0x12, + 0xfb, 0x13, 0x8f, 0xfb, 0x2, 0xfb, 0x2, 0x7f, 0xec, 0xb7, 0xf7, 0x20, + 0xce, 0xf7, 0x2, 0xcc, 0xe2, 0x1f, 0xbe, 0x86, 0xf7, 0x23, 0xbc, 0xc5, + 0x1a, 0xab, 0x77, 0x9a, 0x73, 0x4f, 0x27, 0x25, 0x7c, 0x7f, 0x1e, 0x13, + 0xec, 0x72, 0x8e, 0x6b, 0xa2, 0xae, 0x1a, 0xb2, 0xb5, 0x9e, 0x96, 0x90, + 0x1e, 0x89, 0x9d, 0x5, 0x67, 0x41, 0x58, 0x5d, 0x72, 0xa1, 0x66, 0xd4, + 0x7e, 0x1f, 0xe, 0x3b, 0xfb, 0x49, 0x76, 0xf7, 0x73, 0x76, 0xf8, 0x4f, + 0xd2, 0x62, 0x76, 0x12, 0x8b, 0x9d, 0xf2, 0xe0, 0xf7, 0x61, 0xe4, 0x13, + 0xee, 0xf7, 0xd, 0x16, 0xe0, 0xf7, 0xeb, 0x6, 0xb7, 0x9e, 0xac, 0xc3, + 0xbe, 0x1b, 0xc6, 0xb3, 0x74, 0x41, 0x8e, 0x1f, 0x99, 0xfc, 0x5c, 0x8d, + 0x56, 0x92, 0x7c, 0x8f, 0x73, 0x19, 0xe4, 0x6, 0x82, 0x9e, 0x84, 0xb7, + 0x97, 0x1a, 0x80, 0xf8, 0x85, 0x5, 0xda, 0x89, 0x5b, 0xcc, 0x39, 0x1b, + 0x40, 0x4f, 0x6f, 0x33, 0x6d, 0x1f, 0xbf, 0x8e, 0x6c, 0xc3, 0x53, 0x1b, + 0x36, 0x69, 0x39, 0x4b, 0x1f, 0x9d, 0x6, 0x13, 0xde, 0xa9, 0x8c, 0xa0, + 0xc9, 0xae, 0x1b, 0xb3, 0x91, 0x52, 0x58, 0x1f, 0xe, 0xfb, 0x36, 0x7a, + 0xb1, 0xf7, 0xbb, 0xbf, 0xf7, 0xb4, 0xad, 0x1, 0xb6, 0xf1, 0xf7, 0x86, + 0xed, 0x3, 0xf7, 0x9f, 0x7a, 0x15, 0xf7, 0x3f, 0xba, 0xf7, 0x71, 0xf7, + 0x1d, 0xf7, 0x24, 0x4f, 0xf7, 0x61, 0xfb, 0x34, 0xfb, 0x35, 0x4e, 0xfb, + 0x70, 0xfb, 0x11, 0xfb, 0x18, 0xc5, 0xfb, 0x7a, 0xf7, 0x3a, 0x1f, 0xfb, + 0xe, 0xf8, 0x15, 0x15, 0xf7, 0x1d, 0xae, 0xf7, 0x2b, 0xe1, 0xf0, 0x9e, + 0xfb, 0x49, 0x20, 0x8c, 0x1e, 0xfb, 0x85, 0x57, 0x15, 0xf7, 0x84, 0x6, + 0x32, 0x71, 0xfb, 0x62, 0x2e, 0x2c, 0x71, 0xf7, 0x65, 0xe1, 0x1e, 0xe, + 0xfb, 0xf6, 0x7a, 0xbd, 0xf8, 0x6a, 0x77, 0x1, 0xe3, 0xe0, 0x3, 0xf7, + 0xd5, 0xf0, 0x15, 0x78, 0x6, 0x6e, 0x89, 0x7e, 0x64, 0x61, 0x1b, 0x5a, + 0x88, 0xce, 0xae, 0x1f, 0xf8, 0x4, 0x7, 0x57, 0x78, 0x6c, 0x7b, 0x31, + 0x79, 0x8, 0x77, 0x7, 0xab, 0xc3, 0x8f, 0xfb, 0x17, 0x1f, 0xfb, 0x78, + 0x7, 0x5f, 0xa7, 0x5b, 0xcd, 0xf5, 0x93, 0xe8, 0xa4, 0x90, 0x1e, 0xe, + 0xa0, 0x76, 0xf8, 0x41, 0xd3, 0x48, 0xa0, 0x12, 0xf7, 0xb, 0xd6, 0x13, + 0xd0, 0xf7, 0xb, 0x16, 0xd6, 0xf7, 0x96, 0x6, 0xf7, 0x2f, 0xfb, 0x55, + 0x5, 0x92, 0x82, 0x90, 0x81, 0x83, 0x1a, 0x80, 0x81, 0x82, 0x6f, 0x1e, + 0x79, 0xf7, 0x7f, 0x9d, 0x7, 0x50, 0x71, 0xaf, 0xb0, 0x6c, 0x1f, 0xfb, + 0x3c, 0xf7, 0x6a, 0xbe, 0xbe, 0xaa, 0xa6, 0xab, 0xa6, 0x19, 0x99, 0x9c, + 0x96, 0x90, 0x95, 0x1b, 0x97, 0x8a, 0x95, 0x81, 0x9e, 0x7e, 0x93, 0x84, + 0x9b, 0x87, 0x9b, 0x8c, 0x8, 0xa4, 0x8c, 0xa5, 0x98, 0xb0, 0x1a, 0xaf, + 0x62, 0x9e, 0x6a, 0x6f, 0x6d, 0x80, 0x7b, 0x78, 0x1e, 0x41, 0x4f, 0x48, + 0x49, 0x43, 0x4b, 0x8, 0x13, 0x50, 0xf7, 0x6d, 0x7, 0x13, 0xb0, 0x39, + 0x69, 0x65, 0x82, 0x62, 0x88, 0x8, 0x76, 0x7, 0xae, 0x8a, 0xbe, 0x85, + 0x35, 0x1a, 0xe, 0x7a, 0xe2, 0xf8, 0xe5, 0xd7, 0x1, 0xc6, 0x9e, 0xf7, + 0x67, 0xb1, 0xf7, 0x5e, 0x9e, 0x3, 0xa3, 0x7a, 0x15, 0xe7, 0x6, 0xf7, + 0x3f, 0xf8, 0x12, 0x5, 0x8d, 0x6, 0xfb, 0x24, 0xaa, 0x89, 0xfb, 0x82, + 0xf7, 0xf, 0x1b, 0xe1, 0xa0, 0xf6, 0xd4, 0x1f, 0x78, 0x6, 0x70, 0x8a, + 0x77, 0x41, 0x57, 0x1b, 0x62, 0x6e, 0xba, 0xb6, 0x7f, 0x1f, 0x5f, 0xf7, + 0x30, 0x65, 0xf7, 0x51, 0x60, 0xf7, 0x3a, 0x8, 0xb5, 0x80, 0x6b, 0xad, + 0x5a, 0x1b, 0x45, 0x6d, 0xfb, 0x12, 0x56, 0x8d, 0x1f, 0x9e, 0x6, 0xa3, + 0x8a, 0xa3, 0xda, 0xc1, 0x1b, 0xbf, 0xaa, 0x2f, 0x42, 0x9c, 0x1f, 0xe, + 0xfb, 0x36, 0x90, 0x76, 0xf8, 0x9f, 0x77, 0x1, 0xf7, 0x7c, 0x7b, 0x15, + 0xb0, 0x6, 0xa1, 0xb7, 0xe2, 0xf7, 0x44, 0xc1, 0xf7, 0x2, 0x8, 0xa5, + 0xc0, 0x9c, 0xb5, 0xb5, 0x1a, 0xa6, 0x82, 0xa8, 0x5d, 0x58, 0x89, 0x50, + 0x5a, 0x94, 0x1e, 0x8f, 0x75, 0x8e, 0x7a, 0x7c, 0x1a, 0x6d, 0x83, 0x74, + 0x78, 0x66, 0x1e, 0x3f, 0xfb, 0x2c, 0xfb, 0x32, 0xf8, 0x28, 0x51, 0x72, + 0x88, 0x8c, 0x45, 0x84, 0x19, 0x78, 0x7, 0xb4, 0x86, 0xa4, 0x87, 0x99, + 0x67, 0x8, 0xe, 0xfb, 0x52, 0xfb, 0x5f, 0x76, 0xf7, 0x70, 0xeb, 0xf7, + 0xb8, 0xe7, 0xf7, 0xb6, 0x77, 0x12, 0xa6, 0xbc, 0x7f, 0xc0, 0x74, 0xb2, + 0xf7, 0xb3, 0xbc, 0x13, 0xfb, 0xf7, 0x2d, 0xf8, 0x2e, 0x15, 0x42, 0x50, + 0x56, 0x53, 0x31, 0x1a, 0xfb, 0x43, 0xf7, 0x37, 0x69, 0xf7, 0x28, 0xa7, + 0xc1, 0x89, 0x51, 0x53, 0x64, 0x6d, 0x68, 0x97, 0x1e, 0x6a, 0x96, 0x72, + 0x90, 0x79, 0x89, 0x8, 0x6d, 0x89, 0x7c, 0x7b, 0x6e, 0x1a, 0x60, 0xc0, + 0x81, 0xa6, 0xf4, 0xc6, 0xdc, 0xf7, 0xd, 0xd7, 0x43, 0xb1, 0x3d, 0xfb, + 0x3d, 0x41, 0xc8, 0xce, 0xe1, 0xe1, 0xd5, 0xb2, 0x9b, 0x1e, 0x85, 0x8c, + 0xb8, 0x85, 0xbb, 0x1b, 0xc6, 0xc1, 0x97, 0xb9, 0xa6, 0x6b, 0x92, 0x72, + 0x51, 0x39, 0x6c, 0x7c, 0x71, 0x1f, 0x64, 0xa3, 0x7e, 0xac, 0xab, 0x1a, + 0xb5, 0xa8, 0xb3, 0xaa, 0x98, 0x1e, 0xad, 0x85, 0xf7, 0x19, 0xb0, 0xc0, + 0x1a, 0xa1, 0x7e, 0x9b, 0x6f, 0x5a, 0x45, 0x4f, 0x73, 0x6e, 0x1e, 0x13, + 0xf5, 0x6e, 0x8d, 0x72, 0x9c, 0xa7, 0x1a, 0xac, 0x9e, 0x96, 0x97, 0x90, + 0x1e, 0x89, 0x9d, 0x5, 0x58, 0x6c, 0x6c, 0x62, 0x64, 0xb6, 0x6e, 0xa9, + 0x83, 0x1f, 0x13, 0xfb, 0x6f, 0x6b, 0x7c, 0x68, 0x68, 0x1a, 0x66, 0x9d, + 0x66, 0xb4, 0x6b, 0x1e, 0xe, 0x78, 0xb7, 0xf8, 0x4f, 0xaa, 0x1, 0xae, + 0xea, 0xf7, 0xad, 0xe5, 0x3, 0xae, 0xf7, 0x80, 0x15, 0xfb, 0xe, 0xef, + 0xfb, 0x19, 0xf7, 0x21, 0xf7, 0x23, 0xdd, 0xf7, 0x17, 0xf7, 0x2a, 0xf7, + 0x24, 0x20, 0xe8, 0xfb, 0x1b, 0xfb, 0x1d, 0x34, 0xfb, 0x1b, 0xfb, 0x14, + 0x1e, 0xea, 0xaa, 0x15, 0xde, 0xa1, 0xf7, 0xa, 0xf0, 0xf7, 0xd, 0xb0, + 0xfb, 0x34, 0x29, 0x33, 0x68, 0x2a, 0x30, 0xfb, 0x2, 0x5e, 0xf7, 0x28, + 0xe9, 0x1e, 0xe, 0x78, 0xe9, 0xf7, 0xda, 0xe1, 0x1, 0x95, 0xf7, 0xdc, + 0x15, 0x9c, 0x6, 0xc4, 0xab, 0x9c, 0x9b, 0xa7, 0x1b, 0xc4, 0x6, 0x6e, + 0xfb, 0x6c, 0x8b, 0x6d, 0x7c, 0x73, 0x8, 0x77, 0x6b, 0x64, 0x72, 0x63, + 0x1a, 0x7d, 0x95, 0x64, 0xb8, 0xb2, 0x9a, 0xa7, 0xb4, 0x94, 0x1e, 0x97, + 0xc1, 0x9d, 0xf7, 0x2, 0x9b, 0xf7, 0x4f, 0x8, 0xf7, 0x5, 0x6, 0x7a, + 0xfb, 0x35, 0x5, 0x3a, 0x82, 0x87, 0xfb, 0x46, 0xf7, 0x9, 0x1b, 0xd3, + 0xaf, 0xd8, 0xf2, 0x1f, 0x76, 0x6, 0x76, 0x78, 0x4a, 0x5c, 0x66, 0x75, + 0xbf, 0xb2, 0xb1, 0x8b, 0xdb, 0x97, 0xf7, 0x9, 0x1e, 0xf7, 0x1a, 0xe1, + 0xfc, 0x11, 0x6, 0x33, 0x63, 0xfb, 0x0, 0x58, 0x80, 0x1f, 0xe, 0xfb, + 0x65, 0x76, 0xf9, 0x36, 0xc2, 0x1, 0xc6, 0xe3, 0xf7, 0x91, 0xe5, 0x3, + 0xf7, 0x27, 0xb3, 0x15, 0xb0, 0x69, 0xab, 0x6f, 0xca, 0x8c, 0x8, 0xf7, + 0x2b, 0x8d, 0xc7, 0xef, 0xf7, 0x4a, 0x1a, 0xf7, 0x4f, 0x45, 0xbc, 0xfb, + 0x2d, 0xfb, 0x1c, 0x40, 0x26, 0xfb, 0xa, 0x8c, 0x1e, 0x8f, 0xfc, 0x3b, + 0x5, 0x6d, 0x87, 0x69, 0x84, 0x74, 0x1e, 0xe2, 0x6, 0x95, 0xb3, 0x8b, + 0xae, 0xb3, 0x1a, 0x88, 0xf7, 0x70, 0x15, 0x85, 0xf7, 0x7b, 0x5, 0xc2, + 0x8a, 0xab, 0xc0, 0xc2, 0x1b, 0xf7, 0x18, 0xb7, 0x4f, 0xfb, 0x22, 0xfb, + 0x7, 0x6d, 0x30, 0xfb, 0xd, 0x64, 0x5d, 0xa2, 0xb9, 0x77, 0x1f, 0xe, + 0xfb, 0x88, 0xfb, 0x68, 0x76, 0xf7, 0x75, 0xf4, 0xf7, 0xbe, 0xf4, 0x3b, + 0xdb, 0x12, 0xb3, 0xb5, 0xf7, 0xd0, 0xb1, 0x13, 0xdc, 0xb3, 0xf7, 0x66, + 0x15, 0xfb, 0x15, 0xd4, 0x32, 0xf7, 0x1b, 0xf7, 0xa, 0xab, 0x74, 0x62, + 0x68, 0x78, 0x66, 0x65, 0x8a, 0x1e, 0x7d, 0x7c, 0x90, 0x91, 0x7b, 0x1f, + 0x91, 0x7b, 0x7a, 0x92, 0x7b, 0x1b, 0x72, 0x71, 0x78, 0x68, 0x6c, 0xaa, + 0x70, 0xbe, 0xd3, 0xe1, 0xd2, 0xf7, 0x5, 0xf1, 0x50, 0xb7, 0x34, 0x20, + 0x26, 0x88, 0xf7, 0x1f, 0xf1, 0xca, 0xdf, 0xdc, 0x8c, 0x1f, 0x9f, 0xa0, + 0x84, 0x84, 0xa0, 0x1f, 0x13, 0xec, 0x85, 0x9c, 0x9c, 0x86, 0x9a, 0x1b, + 0xb9, 0xa9, 0x9c, 0xa7, 0xbe, 0x52, 0x94, 0x62, 0xfb, 0x38, 0xfb, 0x3, + 0xfb, 0x14, 0xfb, 0x36, 0x1f, 0xe, 0x3b, 0x76, 0xb7, 0xf8, 0x1b, 0xe1, + 0x1, 0xa9, 0xf0, 0xf7, 0xc2, 0xe9, 0x3, 0xf8, 0xe0, 0xf8, 0x32, 0x15, + 0xe1, 0xfb, 0x97, 0x7, 0xfb, 0x14, 0xfb, 0x3f, 0x42, 0xfb, 0x31, 0xfb, + 0x17, 0xd9, 0xfb, 0x34, 0xf7, 0x43, 0xf7, 0x4e, 0xc5, 0xf7, 0xc, 0xec, + 0xee, 0x46, 0xd1, 0x34, 0xba, 0x1f, 0x8d, 0x7, 0x56, 0x16, 0xe0, 0x40, + 0xa9, 0x48, 0xfb, 0x0, 0x1a, 0x3e, 0x60, 0x4b, 0x3b, 0x2b, 0x38, 0xf7, + 0xd, 0xf7, 0xa, 0xf1, 0xe7, 0xbd, 0xea, 0x1e, 0xe, 0xfb, 0x88, 0x78, + 0xe8, 0xf7, 0xe1, 0xe8, 0x1, 0xf7, 0x4a, 0xd5, 0x3, 0xa7, 0xf7, 0xc1, + 0x15, 0xaf, 0x98, 0xb0, 0xd1, 0xad, 0x1b, 0xe6, 0x6, 0x85, 0x56, 0x7c, + 0xfb, 0x11, 0x28, 0x1a, 0x23, 0xb5, 0x5e, 0xc6, 0xe8, 0x9d, 0xf7, 0x7, + 0xcd, 0x87, 0x1e, 0x79, 0x6, 0x84, 0x62, 0x7d, 0x5b, 0x5d, 0x8c, 0x58, + 0x8c, 0x81, 0xca, 0x8f, 0xbd, 0x9b, 0xf7, 0x70, 0x18, 0xf7, 0x2e, 0x8a, + 0x5, 0xe8, 0xfb, 0x7f, 0x7, 0x66, 0x60, 0x7b, 0x6f, 0x72, 0x1f, 0x6b, + 0x67, 0x7c, 0x62, 0x76, 0x3d, 0x8, 0xe, 0x20, 0x79, 0xbb, 0xf8, 0x71, + 0x77, 0x1, 0xf7, 0x21, 0xe1, 0xf7, 0x79, 0xda, 0x3, 0x92, 0xf7, 0xee, + 0x15, 0xa1, 0x6, 0x97, 0xac, 0x9e, 0xbd, 0xaf, 0x8c, 0x8, 0x98, 0x96, + 0x7b, 0x7f, 0x8d, 0x1f, 0x92, 0x66, 0x97, 0xfb, 0x2, 0x40, 0x1a, 0x26, + 0xc7, 0x2a, 0xf7, 0xc, 0xf7, 0x21, 0xd4, 0xf7, 0x9, 0xf7, 0x26, 0xf7, + 0x3, 0x65, 0xe2, 0xfb, 0x2c, 0xcb, 0x1e, 0x85, 0x7a, 0x5, 0x9d, 0x89, + 0xee, 0x4f, 0xfb, 0x47, 0x1a, 0x28, 0x73, 0xfb, 0xc, 0x2f, 0x4b, 0x5a, + 0xcb, 0xd9, 0xc7, 0x82, 0xf7, 0x14, 0x81, 0xd3, 0x1e, 0xbc, 0x84, 0x6e, + 0xa5, 0x65, 0x1b, 0x38, 0x69, 0x2f, 0x46, 0x81, 0x1f, 0xe, 0xfb, 0x36, + 0xfb, 0x5f, 0x76, 0xfa, 0x13, 0x77, 0x1, 0xa6, 0xe6, 0xf7, 0x8, 0xbb, + 0x5e, 0xb8, 0xf7, 0xc, 0xe3, 0x3, 0xf7, 0x85, 0x7e, 0x15, 0x8d, 0xfb, + 0x5b, 0xb2, 0x7f, 0x5, 0xf7, 0x67, 0x7, 0xb5, 0xf7, 0x3a, 0xaa, 0xf7, + 0x7c, 0xf7, 0x46, 0xfb, 0x2a, 0xd3, 0x51, 0x1f, 0xf7, 0x2e, 0x7, 0x5a, + 0x9c, 0x8d, 0xfb, 0x3f, 0x5, 0x68, 0xfb, 0x41, 0x63, 0xfb, 0x70, 0xfb, + 0x52, 0xf7, 0x24, 0x4c, 0xd1, 0x1f, 0xb4, 0xb0, 0x15, 0xf8, 0x4c, 0x7, + 0x9b, 0xf3, 0x55, 0xfb, 0x3c, 0xfb, 0x48, 0x28, 0x67, 0x76, 0x89, 0x1f, + 0x61, 0x16, 0x72, 0x2a, 0xb8, 0xf7, 0x40, 0xf7, 0x3e, 0xe9, 0xc0, 0xa2, + 0x1f, 0xe, 0xfb, 0x7b, 0xe3, 0xf8, 0xca, 0xd7, 0x1, 0x98, 0xfb, 0x7b, + 0x15, 0xf1, 0x6, 0xf7, 0x2e, 0xf7, 0xae, 0x5, 0x8d, 0x6, 0x3a, 0x9a, + 0xa1, 0xfb, 0x5d, 0xe9, 0x1b, 0xe7, 0xa5, 0xf7, 0x1f, 0xbf, 0x8d, 0x1f, + 0x78, 0x6, 0x6f, 0x8a, 0x6c, 0x40, 0x4e, 0x1b, 0x3c, 0x71, 0xf7, 0x5c, + 0xb5, 0x82, 0x1f, 0xf7, 0x76, 0xf8, 0x24, 0x5, 0x25, 0x6, 0xfb, 0x2f, + 0xfb, 0xa1, 0x5, 0xf7, 0x20, 0x73, 0x79, 0xf7, 0x15, 0x25, 0x1b, 0x34, + 0x7b, 0xfb, 0x1f, 0x5a, 0x85, 0x1f, 0x9d, 0x6, 0xa8, 0x90, 0xa3, 0xde, + 0xbe, 0x1b, 0xdb, 0xa8, 0xfb, 0x43, 0x46, 0x9e, 0x1f, 0xe, 0x8e, 0xfb, + 0x63, 0x76, 0xf9, 0x6c, 0x77, 0x1, 0xf7, 0xd9, 0xca, 0x3, 0xf7, 0xd9, + 0x70, 0x15, 0xfb, 0x5d, 0xca, 0xf7, 0x5d, 0x7, 0xc0, 0x96, 0xcd, 0xa3, + 0xba, 0xca, 0xaa, 0xb5, 0xa3, 0xbe, 0x97, 0xf7, 0x81, 0x8e, 0xc2, 0xaa, + 0x8f, 0xb9, 0x95, 0x8, 0x9d, 0x7, 0x97, 0x75, 0x69, 0x8b, 0x7f, 0x1b, + 0xfb, 0x17, 0x8b, 0xfb, 0x8b, 0xfb, 0x11, 0x7d, 0x1f, 0x83, 0x3f, 0x57, + 0x6d, 0x63, 0x81, 0x8, 0xf8, 0x6f, 0x4c, 0xfc, 0x6f, 0x7, 0x63, 0x95, + 0x57, 0xa9, 0x83, 0xd7, 0x8, 0xf7, 0x11, 0x7e, 0x95, 0xf7, 0x8b, 0xfb, + 0x22, 0x1b, 0x7f, 0x69, 0x8b, 0x7f, 0x75, 0x1f, 0x79, 0x7, 0xb9, 0x81, + 0xaa, 0x87, 0x8e, 0x54, 0x97, 0xfb, 0x81, 0xa3, 0x58, 0xaa, 0x61, 0xba, + 0x4c, 0xcd, 0x73, 0xc0, 0x80, 0x8, 0xe, 0x8e, 0x7a, 0xb9, 0xf8, 0x6b, + 0x77, 0x1, 0xb5, 0xf2, 0xf7, 0x39, 0xf5, 0xf7, 0x38, 0xf3, 0x3, 0xf7, + 0xff, 0xd3, 0x15, 0x5c, 0xa9, 0xc3, 0x61, 0xc5, 0x1b, 0xf7, 0x5, 0xcb, + 0xf7, 0x9, 0xf6, 0xf7, 0x2a, 0x36, 0xf7, 0x23, 0xfb, 0x3e, 0x1f, 0x7a, + 0x7, 0xf7, 0x7, 0x74, 0xaf, 0xfb, 0x8, 0x26, 0x1a, 0x46, 0x83, 0xfb, + 0x25, 0x39, 0x41, 0x6b, 0xe2, 0xa4, 0x8e, 0x1e, 0x97, 0x98, 0x9c, 0xd4, + 0xce, 0x1a, 0xc9, 0x7f, 0xc4, 0x62, 0x62, 0x7f, 0x52, 0x4d, 0x48, 0x9c, + 0x42, 0x97, 0x7e, 0x1e, 0x73, 0x8d, 0x6e, 0x33, 0x41, 0x1b, 0x3d, 0x7c, + 0xf7, 0x18, 0xd0, 0xf3, 0xab, 0xf7, 0x11, 0xf7, 0xc, 0xa3, 0x1f, 0x9c, + 0x7, 0xfb, 0x3a, 0x32, 0xfb, 0x15, 0xfb, 0x26, 0xfb, 0x2, 0xc6, 0xfb, + 0x18, 0xf7, 0x10, 0xc3, 0xc0, 0xb7, 0xb8, 0xa8, 0x1f, 0xe, 0x57, 0x79, + 0xa7, 0xf8, 0x15, 0xd1, 0xf7, 0x43, 0xb4, 0x12, 0xf7, 0x1d, 0xdd, 0x48, + 0xe5, 0x92, 0xad, 0xf7, 0x50, 0xd9, 0x13, 0xee, 0x9d, 0xf7, 0xd6, 0x15, + 0x90, 0x89, 0x90, 0x8a, 0x90, 0x89, 0x8, 0xb1, 0xa1, 0xa4, 0xb3, 0xaf, + 0x1b, 0xa4, 0x94, 0x78, 0x77, 0x8d, 0x1f, 0x13, 0xf6, 0x8f, 0x4f, 0x78, + 0x42, 0x4e, 0x1a, 0xfb, 0x6, 0xc4, 0x49, 0xf2, 0xf7, 0x37, 0xe4, 0xf7, + 0x28, 0xf7, 0x51, 0x1e, 0xd5, 0x5d, 0x5, 0xc0, 0x7, 0x41, 0xb0, 0x5, + 0xf2, 0x66, 0xf7, 0x6b, 0xfb, 0x3a, 0x48, 0x6d, 0x60, 0x55, 0xfb, 0xa, + 0xf0, 0x56, 0xf7, 0xd, 0x49, 0x1e, 0x37, 0x8c, 0x7e, 0xfb, 0x91, 0xfb, + 0x26, 0x1b, 0x47, 0x71, 0xc4, 0xcc, 0x1f, 0x13, 0xee, 0xdb, 0xa2, 0xda, + 0xdb, 0x1a, 0xbf, 0x62, 0xb5, 0x5c, 0x53, 0x4c, 0x42, 0x45, 0x7a, 0x1e, + 0xf8, 0x58, 0xcf, 0x15, 0x63, 0x9f, 0xfb, 0x27, 0xcd, 0xf0, 0x1a, 0xad, + 0x9f, 0xa8, 0xb3, 0xf7, 0xa, 0x94, 0xfb, 0x73, 0x70, 0x1e, 0xe, 0x4c, + 0xa0, 0x76, 0xf8, 0x8b, 0xf7, 0x4a, 0x66, 0xb0, 0x12, 0xf7, 0x84, 0xf3, + 0x13, 0xb0, 0xf7, 0x2b, 0x24, 0xa, 0x8a, 0xf7, 0x6a, 0x5, 0xda, 0x91, + 0xb1, 0xf7, 0x9b, 0xf7, 0x4, 0x1b, 0x9d, 0x9a, 0x81, 0x7d, 0x1f, 0x75, + 0x65, 0x72, 0x6d, 0x1a, 0x13, 0xd0, 0x6b, 0xa5, 0x7f, 0xa6, 0xad, 0xa7, + 0xb4, 0xb4, 0xcc, 0x6d, 0xae, 0x56, 0xfb, 0x1d, 0x58, 0xfb, 0x2a, 0x2a, + 0x76, 0x1e, 0xf7, 0x31, 0x7d, 0xfb, 0x1d, 0xe1, 0xfb, 0x27, 0x1b, 0x7e, + 0x82, 0x83, 0x84, 0x87, 0x8f, 0x87, 0x92, 0x89, 0x1f, 0xf7, 0x59, 0x5e, + 0xac, 0x2e, 0x8c, 0xfb, 0x6b, 0x8c, 0xfb, 0x67, 0x18, 0x28, 0xa, 0xe, + 0x3b, 0xfb, 0x5f, 0x76, 0xf7, 0x68, 0xb1, 0xf8, 0x21, 0xd7, 0x1, 0xaf, + 0xf4, 0xf7, 0x1a, 0xcc, 0xf7, 0x27, 0xef, 0x3, 0xf7, 0xa9, 0x7f, 0x15, + 0xfb, 0x68, 0xca, 0xf7, 0x68, 0x7, 0xf7, 0x1b, 0x8a, 0xf7, 0x4, 0xee, + 0xf7, 0x27, 0x1a, 0xf7, 0x27, 0x49, 0xf7, 0xb, 0xfb, 0x10, 0x26, 0x73, + 0x48, 0x3e, 0x8d, 0x1e, 0x8e, 0xfb, 0xdd, 0x5, 0x28, 0x66, 0xf7, 0x7, + 0xf0, 0xd7, 0x9b, 0xf7, 0x15, 0xe6, 0xad, 0x1f, 0x9d, 0x7, 0xfb, 0x10, + 0x33, 0xfb, 0x1d, 0xfb, 0x10, 0xfb, 0x36, 0xf7, 0x4, 0x32, 0xf7, 0x15, + 0x8c, 0x1f, 0xca, 0xb1, 0x15, 0xf7, 0xde, 0x7, 0xa5, 0x8c, 0x8a, 0xb4, + 0xb7, 0x1b, 0xd8, 0xa5, 0x28, 0x32, 0xfb, 0x8, 0x53, 0x2e, 0x30, 0x1f, + 0xe, 0xa9, 0x79, 0xb4, 0xf8, 0x6f, 0xe0, 0x1, 0xae, 0xf5, 0xf7, 0x37, + 0xec, 0xf7, 0x40, 0xed, 0x3, 0xf7, 0xf8, 0xd0, 0x15, 0x61, 0x9b, 0xbc, + 0x5e, 0xd6, 0x1b, 0xf7, 0xc, 0xc2, 0xf7, 0x1d, 0xf7, 0x11, 0xec, 0x3e, + 0xf7, 0x17, 0x24, 0xa5, 0x1f, 0xf7, 0x48, 0x8c, 0x5, 0xdf, 0xfc, 0x9d, + 0x7, 0x6b, 0x47, 0x66, 0x25, 0x65, 0x1f, 0x9d, 0x87, 0xc6, 0xb7, 0xab, + 0x94, 0xe4, 0x92, 0x19, 0x26, 0x4e, 0x41, 0x36, 0xfb, 0x6, 0x1a, 0xfb, + 0x14, 0xb7, 0xfb, 0x16, 0xf7, 0x1b, 0xc5, 0xca, 0xbb, 0xb2, 0xa0, 0x1e, + 0x72, 0xd4, 0x15, 0x62, 0x8d, 0x5e, 0x3d, 0x52, 0x1b, 0x36, 0x86, 0xf7, + 0x2c, 0xd1, 0xf7, 0xa, 0xc2, 0xf0, 0xed, 0xad, 0x1f, 0xf7, 0x10, 0x6, + 0xf0, 0x6d, 0xc1, 0xfb, 0x9, 0x23, 0x1a, 0x3d, 0x8b, 0xfb, 0x22, 0x30, + 0x4e, 0x5e, 0xcf, 0xba, 0x8d, 0x1e, 0x98, 0xc5, 0x95, 0xd1, 0xad, 0x1a, + 0xab, 0x8d, 0xdc, 0x5a, 0x57, 0x8e, 0x3f, 0x67, 0x8a, 0x1e, 0x8a, 0x60, + 0x95, 0x41, 0x9d, 0x5d, 0x8, 0xe, 0xfb, 0x73, 0xf7, 0x1a, 0x76, 0xf7, + 0xfc, 0x77, 0x1, 0xbd, 0xf7, 0xfc, 0x3, 0xf7, 0x7a, 0xf7, 0x5, 0x15, + 0xee, 0xdc, 0xdb, 0xef, 0xee, 0x3a, 0xdc, 0x28, 0x27, 0x3b, 0x3a, 0x28, + 0x27, 0xdb, 0x3b, 0xef, 0x1f, 0xe, 0xf7, 0xd1, 0x7a, 0xf7, 0x4, 0x1, + 0xf7, 0x3, 0xf7, 0x4, 0xf7, 0x71, 0xf7, 0x4, 0xf7, 0x71, 0xf7, 0x4, + 0x14, 0x70, 0xf7, 0x3, 0xb1, 0x15, 0x29, 0xa, 0xf7, 0xe1, 0x16, 0x29, + 0xa, 0xf7, 0xe1, 0x16, 0x29, 0xa, 0xe, 0xfc, 0x48, 0xf8, 0x74, 0x76, + 0xf7, 0xa8, 0x77, 0x1, 0xa9, 0xf8, 0x7d, 0x15, 0x38, 0xa, 0x59, 0xa, + 0x1e, 0xf7, 0x31, 0xf7, 0x5a, 0x40, 0xa, 0x6d, 0xa1, 0x6c, 0x7b, 0x7d, + 0x85, 0x81, 0x87, 0x1e, 0xe, 0xfb, 0xa4, 0xf8, 0x74, 0x76, 0xf7, 0xaa, + 0x77, 0x1, 0xb9, 0xf8, 0x5f, 0x15, 0x59, 0xa, 0x1f, 0xf7, 0x32, 0x36, + 0xa, 0x23, 0xfb, 0x7c, 0x5, 0x38, 0xa, 0x1e, 0xf7, 0x54, 0x16, 0x59, + 0xa, 0x1f, 0xf7, 0x31, 0x36, 0xa, 0x24, 0xfb, 0x7c, 0x5, 0x38, 0xa, + 0x1e, 0xe, 0xfc, 0x98, 0x94, 0x76, 0xf9, 0x45, 0x77, 0x1, 0xfb, 0x10, + 0x7f, 0x15, 0xf8, 0x64, 0xf9, 0x45, 0x5, 0x53, 0x6, 0xfc, 0x64, 0xfd, + 0x45, 0x5, 0xe, 0xce, 0x7f, 0xca, 0xf7, 0x54, 0xca, 0xca, 0xca, 0xf7, + 0x52, 0xca, 0x1, 0xf7, 0x7, 0xce, 0x3, 0x9f, 0xf7, 0x87, 0x15, 0xf7, + 0x0, 0x6, 0xfb, 0x26, 0xb0, 0xf7, 0x1b, 0xfb, 0x1, 0xf7, 0x39, 0x1b, + 0xea, 0xd6, 0xb0, 0xb3, 0xbd, 0x1f, 0xe5, 0x7, 0x4b, 0x57, 0x39, 0x63, + 0x35, 0x1b, 0xfb, 0x11, 0x25, 0xdb, 0xf7, 0x4, 0x64, 0x1f, 0xf7, 0xf8, + 0x6, 0xa9, 0xca, 0x5, 0xfc, 0x25, 0x6, 0x8a, 0x96, 0x8a, 0x94, 0x95, + 0x1a, 0x95, 0x8c, 0x95, 0x8c, 0x98, 0x1e, 0xf8, 0x42, 0x6, 0xa9, 0xca, + 0x5, 0xfc, 0x51, 0x6, 0xf7, 0x0, 0xad, 0xf6, 0xdd, 0xf7, 0x11, 0x1b, + 0xe5, 0xdc, 0x61, 0x4f, 0xbc, 0x1f, 0xa8, 0xc8, 0x5, 0xcb, 0x4b, 0x31, + 0xb3, 0x2c, 0x1b, 0xfb, 0x35, 0xfb, 0x1f, 0x22, 0xfb, 0x28, 0x66, 0x1f, + 0x3d, 0x6, 0x6d, 0x4c, 0x5, 0xeb, 0x6, 0x8a, 0x7e, 0x8b, 0x82, 0x81, + 0x1a, 0x82, 0x8b, 0x82, 0x8c, 0x7e, 0x1e, 0x49, 0x6, 0xe, 0x8e, 0x56, + 0xde, 0xad, 0xcf, 0xf7, 0x70, 0xa2, 0xf7, 0xa9, 0xe3, 0x1, 0xc4, 0xb2, + 0xf7, 0xac, 0xd1, 0xc3, 0xd7, 0x3, 0xa5, 0xb7, 0x15, 0x98, 0xa6, 0x9b, + 0x92, 0x9b, 0x1b, 0x99, 0xc2, 0x6f, 0x6e, 0xc3, 0x1f, 0x6d, 0xc5, 0xc6, + 0x6d, 0x99, 0x1b, 0xac, 0xf7, 0x60, 0xf7, 0x3e, 0xcd, 0xb0, 0x5d, 0xd0, + 0x65, 0xcf, 0x1f, 0x71, 0xba, 0x75, 0xb9, 0xaf, 0x1a, 0x9f, 0xda, 0xe7, + 0xb3, 0xc3, 0x1e, 0xb1, 0x42, 0x25, 0xbb, 0x32, 0x1b, 0xfb, 0x5, 0xfb, + 0x17, 0x44, 0xfb, 0x14, 0xfb, 0x6, 0xef, 0x3f, 0xf7, 0x0, 0x8c, 0x1f, + 0x8d, 0xa2, 0x5, 0x41, 0x8a, 0x2a, 0xcd, 0xdc, 0x1a, 0xdf, 0xd0, 0xb8, + 0xdd, 0x8d, 0x1e, 0xcd, 0x8d, 0xf1, 0x64, 0xbe, 0x71, 0x8, 0x39, 0x23, + 0x83, 0x75, 0x74, 0x1a, 0x63, 0xa2, 0x5c, 0xa5, 0x5d, 0x1e, 0xae, 0x4d, + 0xb5, 0x4d, 0x5c, 0x1a, 0x5f, 0x4b, 0x4d, 0x5b, 0x77, 0x57, 0xa7, 0xa6, + 0x57, 0x1e, 0xa5, 0x59, 0x5c, 0xa0, 0x77, 0x1b, 0x72, 0x2d, 0x50, 0x7f, + 0x77, 0x1f, 0xe, 0xf7, 0xc4, 0xfb, 0x67, 0xac, 0xf7, 0x39, 0xaf, 0xf8, + 0x4b, 0xb5, 0xd0, 0x77, 0x1, 0xf7, 0x33, 0xab, 0x9e, 0xdb, 0xb8, 0xd3, + 0xac, 0xb9, 0xf7, 0xb2, 0xed, 0x3, 0xf7, 0x8c, 0xf7, 0x10, 0x15, 0x67, + 0x4b, 0x56, 0x50, 0x40, 0x1a, 0x45, 0xa8, 0x48, 0xe5, 0xee, 0xa9, 0xdb, + 0xd8, 0xee, 0x64, 0xbf, 0x6a, 0xde, 0x1e, 0xef, 0xd6, 0xf7, 0x5c, 0xf7, + 0x4a, 0xf0, 0x1b, 0xb0, 0xa3, 0x6b, 0x46, 0xfb, 0x26, 0x26, 0xfb, 0x54, + 0x2f, 0x48, 0x71, 0xac, 0xae, 0xa2, 0x9e, 0x91, 0x97, 0x1f, 0xa7, 0x8c, + 0xa0, 0xa7, 0xa3, 0x1a, 0xa3, 0x76, 0x9e, 0x73, 0x8a, 0x1e, 0x5b, 0x8a, + 0x6a, 0x5e, 0x58, 0x1a, 0x43, 0xbe, 0x50, 0xe4, 0xf7, 0x41, 0xf7, 0x9, + 0xf7, 0x87, 0xf7, 0x6, 0xd9, 0x5a, 0xdd, 0x33, 0xfb, 0x3e, 0xfb, 0x1f, + 0xfb, 0x50, 0x21, 0x25, 0x1e, 0x75, 0xb5, 0x81, 0xa6, 0xa5, 0x1a, 0xda, + 0xf7, 0x16, 0xf7, 0x1, 0xc9, 0xcb, 0x1e, 0x82, 0x9b, 0x5, 0x27, 0x48, + 0xfb, 0x37, 0xfb, 0x8, 0xfb, 0x11, 0x1a, 0x8a, 0x56, 0xa4, 0x58, 0x99, + 0x66, 0x8, 0x9a, 0x6d, 0x15, 0xc1, 0xfb, 0x0, 0x9d, 0x5d, 0x65, 0x1a, + 0x63, 0x7f, 0x63, 0x5c, 0x5c, 0x65, 0xb7, 0xcb, 0xbc, 0xaf, 0xc5, 0xaf, + 0xc4, 0x1e, 0xe, 0xf7, 0x4, 0x91, 0x76, 0xc2, 0xdf, 0xf8, 0xa4, 0xdd, + 0x52, 0xc4, 0x12, 0xa5, 0xac, 0xf7, 0x24, 0xc0, 0xe5, 0xe3, 0x13, 0xee, + 0xd1, 0xac, 0x15, 0x92, 0x86, 0x90, 0x86, 0x92, 0x86, 0x8, 0x9a, 0x9e, + 0x9b, 0x92, 0x97, 0x1b, 0xaa, 0xa7, 0x64, 0x7b, 0xa4, 0x1f, 0xf7, 0x2c, + 0xc3, 0xc8, 0xf7, 0x42, 0xf7, 0x19, 0x1a, 0x13, 0xae, 0xd0, 0x8b, 0xe5, + 0x7c, 0xe3, 0x1e, 0xb6, 0xce, 0x98, 0x99, 0xa0, 0x1b, 0xa2, 0xf3, 0x2a, + 0x84, 0x92, 0x1f, 0xfb, 0x55, 0xfb, 0x24, 0x96, 0x77, 0x5, 0xd3, 0x9e, + 0x39, 0x21, 0xfb, 0xd, 0x9a, 0x4c, 0xd3, 0x70, 0x1f, 0xf7, 0x2, 0xe3, + 0x7c, 0xa2, 0x5, 0x86, 0x7f, 0x6f, 0x79, 0x7c, 0x1b, 0x69, 0x86, 0xb4, + 0xed, 0xef, 0x82, 0xf7, 0x1, 0x46, 0xa3, 0x1f, 0xf7, 0x4a, 0xf7, 0x1f, + 0x5, 0x13, 0x1e, 0xf7, 0x26, 0xfb, 0x38, 0x8a, 0x8f, 0x7b, 0x1b, 0x79, + 0xfb, 0xe, 0x2f, 0x78, 0x71, 0x1f, 0xce, 0x76, 0x41, 0xb7, 0x44, 0x1b, + 0xfb, 0x1d, 0x3d, 0x47, 0xfb, 0x11, 0x2e, 0xdd, 0x5b, 0xd3, 0x63, 0x1f, + 0x9a, 0x82, 0x93, 0x81, 0x81, 0x1a, 0x78, 0x77, 0x7f, 0x85, 0x82, 0x1e, + 0xa2, 0x7b, 0x5, 0xb6, 0xb8, 0x98, 0xa0, 0x9e, 0x1a, 0xa9, 0x60, 0xa9, + 0x5e, 0xa6, 0x1e, 0x57, 0xa8, 0x52, 0xa9, 0xcc, 0x1a, 0x13, 0xde, 0xc8, + 0xd5, 0xb8, 0xc4, 0xf7, 0x1c, 0x9e, 0xfb, 0x29, 0xfb, 0x1f, 0xfb, 0x15, + 0x64, 0xfb, 0x25, 0x60, 0x50, 0x1e, 0xc6, 0x35, 0x9d, 0x94, 0x7a, 0x1b, + 0x75, 0x88, 0x40, 0x36, 0x80, 0x88, 0x8, 0xe, 0xe0, 0x8b, 0xf0, 0xf8, + 0xbf, 0xab, 0x12, 0xad, 0x9a, 0x91, 0xf7, 0x8, 0xf8, 0x40, 0xf7, 0x9, + 0x90, 0x9a, 0x17, 0xad, 0x16, 0x13, 0xdc, 0xf7, 0xb8, 0x6, 0x7b, 0xf7, + 0x2c, 0x5, 0xfb, 0x1, 0xa9, 0x6d, 0xf7, 0xf, 0xf4, 0x1a, 0xf7, 0x16, + 0xdb, 0xf7, 0x8, 0xf7, 0x1a, 0xf7, 0x20, 0xd5, 0xfb, 0x8, 0xfb, 0x1a, + 0x27, 0x65, 0xfb, 0x14, 0x26, 0x71, 0x1e, 0x7b, 0xfb, 0x2c, 0x5, 0x13, + 0xfc, 0xf7, 0xb8, 0xf7, 0x36, 0x6, 0x13, 0xdc, 0x7c, 0x6, 0x5a, 0x7f, + 0x75, 0x7f, 0x61, 0x1b, 0xfb, 0x28, 0x6, 0x8d, 0xa7, 0x5, 0xf7, 0x1e, + 0xa1, 0xda, 0xf7, 0x18, 0xf7, 0x10, 0x1a, 0xf7, 0x52, 0xfb, 0x3f, 0xe6, + 0xfb, 0x34, 0xfb, 0x33, 0xfb, 0x3e, 0x2f, 0xfb, 0x4d, 0x8a, 0x1e, 0x8a, + 0xfb, 0x12, 0xd6, 0xfb, 0x1b, 0xf7, 0x22, 0x76, 0x8d, 0x6f, 0x18, 0x13, + 0xa0, 0xfb, 0x28, 0x6, 0x61, 0x75, 0x97, 0xbc, 0x7f, 0x1f, 0x7c, 0x6, + 0xe, 0xf7, 0x20, 0x8e, 0x76, 0xb2, 0x76, 0xf8, 0x69, 0xf7, 0x18, 0xc4, + 0x77, 0x12, 0xf7, 0x43, 0xe6, 0x13, 0x78, 0xf7, 0x43, 0x16, 0xf7, 0x47, + 0x6, 0x9b, 0xb6, 0x86, 0x9e, 0x99, 0x1a, 0xac, 0x6e, 0xb0, 0x70, 0xb1, + 0x1e, 0x75, 0xab, 0x76, 0xac, 0xac, 0x1a, 0xaa, 0xa6, 0xa1, 0xa0, 0xa1, + 0x1e, 0x13, 0xb8, 0xf7, 0x7c, 0xfb, 0xa1, 0xbb, 0x4f, 0x97, 0x5d, 0x8, + 0x9e, 0x93, 0xaf, 0xab, 0xcd, 0x1a, 0xc3, 0x6a, 0xb1, 0x6b, 0xac, 0x1e, + 0x6b, 0xab, 0x6c, 0xa6, 0xac, 0x1a, 0xd9, 0xd0, 0xe0, 0xc1, 0x7e, 0x1e, + 0x90, 0xe0, 0x5, 0xad, 0x86, 0x74, 0xa4, 0x6a, 0x1b, 0x7a, 0x7d, 0x8b, + 0x8c, 0x7f, 0x1f, 0x55, 0x8e, 0x87, 0x96, 0x90, 0xb5, 0x8, 0x5c, 0x84, + 0x76, 0x54, 0x5b, 0x1a, 0x47, 0xcb, 0x7d, 0xc2, 0x8e, 0x1e, 0x62, 0x5d, + 0x7f, 0x61, 0x77, 0x5d, 0xfb, 0x6c, 0xf7, 0x92, 0x79, 0x99, 0x83, 0xbb, + 0x8, 0x70, 0x82, 0x65, 0x5a, 0x60, 0x1a, 0x64, 0xd0, 0x40, 0xb4, 0x5d, + 0x1e, 0x4b, 0x4a, 0x5d, 0x6f, 0x3e, 0x1a, 0x74, 0xa0, 0x71, 0x9b, 0x6a, + 0x1e, 0x95, 0x76, 0x94, 0x73, 0x6f, 0x1a, 0x6e, 0x67, 0x8c, 0x77, 0x1e, + 0xe, 0x46, 0xa, 0xab, 0xfa, 0x22, 0x3, 0xab, 0xf7, 0x8c, 0x15, 0xe9, + 0x31, 0xd1, 0x45, 0xe2, 0x24, 0xae, 0xae, 0x18, 0x5b, 0xc7, 0x2d, 0xf1, + 0x64, 0xb1, 0x8, 0xf9, 0xb9, 0xc3, 0xfd, 0xb9, 0x6, 0xb2, 0xb1, 0xe9, + 0xf1, 0xbb, 0xc7, 0x68, 0xae, 0x18, 0x34, 0x24, 0x45, 0x45, 0x2d, 0x31, + 0x8, 0xe, 0x3b, 0xa0, 0x76, 0xfa, 0x22, 0x49, 0xa, 0xf7, 0xac, 0x16, + 0xc3, 0xf9, 0xb9, 0x6, 0xb1, 0x64, 0xf1, 0x2d, 0xc7, 0x5b, 0xae, 0xae, + 0x18, 0x24, 0xe2, 0x45, 0xd1, 0x31, 0xe9, 0x31, 0x2d, 0x45, 0x45, 0x24, + 0x34, 0xae, 0x68, 0x18, 0xc7, 0xbb, 0xf1, 0xe9, 0xb1, 0xb2, 0x8, 0xe, + 0x46, 0xa, 0xbc, 0xf7, 0x70, 0x15, 0xf9, 0xb9, 0x6, 0x64, 0x65, 0x2d, + 0x25, 0x5b, 0x4f, 0xae, 0x68, 0x18, 0xe2, 0xf2, 0xd1, 0xd1, 0xe9, 0xe5, + 0x2d, 0xe5, 0x45, 0xd1, 0x34, 0xf2, 0x68, 0x68, 0x18, 0xbb, 0x4f, 0xe9, + 0x25, 0xb2, 0x65, 0x8, 0xfd, 0xb9, 0x6, 0xe, 0x3b, 0x8a, 0x76, 0xfa, + 0x22, 0x49, 0xa, 0xb8, 0xf7, 0x79, 0x15, 0xf2, 0x34, 0xd1, 0x45, 0xe5, + 0x2d, 0xe5, 0xe9, 0xd1, 0xd1, 0xf2, 0xe2, 0x68, 0xae, 0x18, 0x4f, 0x5b, + 0x25, 0x2d, 0x65, 0x64, 0x8, 0xf9, 0xb9, 0x53, 0xfd, 0xb9, 0x7, 0x65, + 0xb2, 0x25, 0xe9, 0x4f, 0xbb, 0x8, 0xe, 0xf7, 0xfb, 0x91, 0x76, 0xf7, + 0x81, 0xbf, 0xf7, 0x81, 0x77, 0x1, 0xa3, 0xfa, 0x7c, 0x3, 0xa3, 0xf7, + 0x8c, 0x15, 0xf7, 0x7, 0x25, 0xc2, 0x48, 0xda, 0x2d, 0xb0, 0xab, 0x18, + 0x47, 0xea, 0x6f, 0xa0, 0x36, 0xe4, 0x8, 0xf9, 0xaa, 0x6, 0x36, 0x32, + 0x70, 0x75, 0x46, 0x2d, 0xb0, 0x6b, 0x18, 0xda, 0xe9, 0xc2, 0xce, 0xf7, + 0x7, 0xf1, 0xfb, 0x7, 0xf1, 0x54, 0xce, 0x3c, 0xe9, 0x66, 0x6b, 0x18, + 0xd0, 0x2e, 0xa5, 0x73, 0xe1, 0x33, 0x8, 0xfd, 0xaa, 0x6, 0xe0, 0xe4, + 0xa7, 0xa0, 0xcf, 0xea, 0x66, 0xab, 0x18, 0x3c, 0x2d, 0x54, 0x48, 0xfb, + 0x7, 0x25, 0x8, 0xe, 0x72, 0x90, 0x76, 0xe9, 0xc2, 0xf8, 0x84, 0x77, + 0x1, 0xf8, 0xb7, 0xc2, 0x3, 0x9a, 0xf5, 0x15, 0xf7, 0x3a, 0xfb, 0xe, + 0x5, 0xe9, 0xf8, 0x39, 0xf8, 0xbb, 0x54, 0xfc, 0x84, 0xfc, 0x2, 0xe9, + 0x7, 0xe, 0xf7, 0xc4, 0xeb, 0xc0, 0xf7, 0x5c, 0xc0, 0xd9, 0xac, 0x8b, + 0x77, 0x1, 0xa9, 0xfa, 0x21, 0x3, 0xa9, 0xf7, 0x8d, 0x15, 0xf7, 0xa, + 0xfb, 0x3, 0xb4, 0x61, 0xe5, 0xfb, 0x3, 0xb4, 0xac, 0x18, 0x4d, 0xd9, + 0x5, 0xf9, 0x3d, 0xc0, 0xfd, 0x65, 0x6, 0x23, 0xef, 0xf3, 0xef, 0x5, + 0xf9, 0x65, 0xc0, 0xfd, 0x3d, 0x6, 0xc9, 0xd9, 0x62, 0xac, 0x31, 0xfb, + 0x3, 0x62, 0x61, 0xfb, 0xa, 0xfb, 0x3, 0x19, 0xe, 0x3b, 0xa2, 0x76, + 0xfa, 0x21, 0x77, 0x1, 0xf7, 0x3e, 0xc0, 0xf7, 0x34, 0xc0, 0x3, 0xf7, + 0x3e, 0x8d, 0x15, 0xc0, 0xf9, 0x7c, 0x6, 0xdb, 0xdc, 0xdb, 0x3a, 0x5, + 0xfd, 0x7c, 0xc0, 0xf9, 0x4c, 0x7, 0xed, 0x3e, 0xac, 0xb4, 0xfb, 0x3, + 0xe5, 0x61, 0xb4, 0xfb, 0x3, 0xf7, 0xa, 0x19, 0xfb, 0x3, 0xfb, 0xa, + 0x61, 0x62, 0xfb, 0x3, 0x31, 0xac, 0x62, 0x18, 0xed, 0xd8, 0x5, 0xe, + 0xf7, 0xc4, 0xee, 0xc0, 0xf7, 0x51, 0xc0, 0x1, 0xb8, 0xee, 0x15, 0xf9, + 0x3d, 0x6, 0x48, 0x35, 0xb9, 0x6a, 0xe5, 0xf7, 0x3, 0xb4, 0xb5, 0xf7, + 0xa, 0xf7, 0x3, 0x19, 0xfb, 0xa, 0xf7, 0x3, 0x62, 0xb5, 0x31, 0xf7, + 0x3, 0x5d, 0x6a, 0x18, 0xce, 0x3a, 0x5, 0xfd, 0x3d, 0x56, 0xf9, 0x68, + 0x6, 0xf0, 0x2a, 0x26, 0x2f, 0x5, 0xfd, 0x68, 0x6, 0xe, 0x3b, 0x8d, + 0x76, 0xfa, 0x21, 0x77, 0x1, 0xf7, 0x43, 0xc0, 0xf7, 0x34, 0xc0, 0x3, + 0xb7, 0xf7, 0x7a, 0x15, 0xf7, 0x3, 0x31, 0xb5, 0x62, 0xf7, 0x3, 0xfb, + 0xa, 0xf7, 0x3, 0xf7, 0xa, 0xb5, 0xb4, 0xf7, 0x3, 0xe5, 0x6a, 0xb4, + 0x18, 0x29, 0x3e, 0x5, 0xf9, 0x4c, 0x56, 0xfd, 0x7c, 0x7, 0x3b, 0x3a, + 0x3b, 0xdc, 0x5, 0xf9, 0x7c, 0x56, 0xfd, 0x4c, 0x7, 0x29, 0xd8, 0x5, + 0xe, 0xf7, 0xfb, 0xf7, 0x1, 0xbd, 0xf7, 0x40, 0xbd, 0x1, 0xa6, 0xfa, + 0x78, 0x3, 0xa6, 0xf7, 0x89, 0x15, 0xf7, 0x8, 0x21, 0xb2, 0x61, 0xed, + 0xfb, 0x9, 0xb3, 0xad, 0x18, 0x3f, 0xea, 0x5, 0xf8, 0xc6, 0x6, 0x3f, + 0x2c, 0xb3, 0x69, 0xed, 0xf7, 0x9, 0xb2, 0xb5, 0xf7, 0x8, 0xf5, 0x19, + 0xfb, 0x8, 0xf5, 0x64, 0xb5, 0x29, 0xf7, 0x9, 0x63, 0x69, 0x18, 0xd7, + 0x2c, 0x5, 0xfc, 0xc6, 0x6, 0xd7, 0xea, 0x63, 0xad, 0x29, 0xfb, 0x9, + 0x64, 0x61, 0xfb, 0x8, 0x21, 0x19, 0xf7, 0x41, 0x35, 0x15, 0x34, 0xe1, + 0xe2, 0xe1, 0x5, 0xf9, 0x1f, 0x6, 0xe2, 0x35, 0x34, 0x35, 0x5, 0xe, + 0xa9, 0xa0, 0x76, 0xf8, 0x5d, 0xc2, 0xf7, 0x55, 0x77, 0x1, 0xf7, 0xdd, + 0x16, 0xc6, 0x6, 0xf7, 0xb9, 0xf9, 0x55, 0x5, 0x52, 0x6, 0x39, 0xfb, + 0x55, 0x5, 0xfc, 0x5, 0x6, 0x36, 0xf7, 0x55, 0x5, 0x52, 0x6, 0xf7, + 0xde, 0xfd, 0xf, 0x15, 0xfb, 0x38, 0xf8, 0x17, 0x5, 0xf7, 0xd6, 0x6, + 0xe, 0xfb, 0x51, 0x77, 0xa8, 0xf8, 0x0, 0xb2, 0xf7, 0xb2, 0xbb, 0x1, + 0xa5, 0xe1, 0xf7, 0x9f, 0xde, 0x3, 0xf8, 0xf, 0xf7, 0xec, 0x15, 0xbf, + 0x48, 0x6e, 0x9b, 0x50, 0x1b, 0xfb, 0xa, 0x3b, 0x27, 0xfb, 0xe, 0xfb, + 0x10, 0xdf, 0x35, 0xf6, 0xf7, 0x56, 0xbe, 0xf7, 0xb4, 0xf7, 0x11, 0xf7, + 0x30, 0x48, 0xf7, 0x59, 0xfb, 0x59, 0x57, 0x58, 0x7b, 0x7e, 0x6d, 0x1f, + 0xb2, 0x59, 0x5, 0xa0, 0xb4, 0xa4, 0x95, 0xd2, 0x1b, 0xf1, 0xb6, 0xfb, + 0x36, 0xfb, 0x54, 0x84, 0x1f, 0x83, 0x68, 0x15, 0x2b, 0x77, 0x7a, 0xfb, + 0x60, 0xfb, 0x1b, 0x1b, 0x40, 0x7f, 0xea, 0xb7, 0xd9, 0xb1, 0xf7, 0x27, + 0xf7, 0x0, 0xc8, 0xaa, 0x62, 0x74, 0xa0, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, + 0xb3, 0xc2, 0xf7, 0x93, 0xc2, 0x1, 0xf8, 0x3b, 0xc2, 0x3, 0xa4, 0x16, + 0xf8, 0x59, 0xf9, 0x57, 0xfc, 0x59, 0x54, 0xf8, 0x22, 0xfb, 0x93, 0xfb, + 0xf6, 0x54, 0xf7, 0xf6, 0xfb, 0xb3, 0xfc, 0x22, 0x6, 0xe, 0xf7, 0x20, + 0x73, 0xc0, 0xf9, 0x14, 0xbd, 0x1, 0xb2, 0xc3, 0xf9, 0xb, 0xc2, 0x3, + 0xf7, 0x6c, 0xf7, 0x0, 0x15, 0xf8, 0x42, 0xf8, 0x56, 0x5, 0xba, 0x55, + 0xac, 0x40, 0x3c, 0x1a, 0xfb, 0x40, 0xfb, 0x20, 0xfb, 0x29, 0xfb, 0x40, + 0x3c, 0x48, 0xad, 0xb8, 0x57, 0x1e, 0x66, 0xb1, 0x15, 0x73, 0xa8, 0x4f, + 0xc5, 0xf7, 0xe, 0x1a, 0xf7, 0x2e, 0xf7, 0x24, 0xf7, 0x34, 0xf7, 0x3f, + 0xd7, 0xd0, 0x6d, 0x5d, 0xc2, 0x1e, 0xfc, 0xcb, 0xfc, 0xdc, 0x15, 0xac, + 0x6a, 0xee, 0xe5, 0x5, 0x53, 0xca, 0xde, 0x69, 0xe8, 0x1b, 0xf7, 0x5f, + 0xf7, 0x38, 0xf7, 0x3f, 0xf7, 0x5f, 0xe8, 0x65, 0xe4, 0x51, 0xcc, 0x1f, + 0xe4, 0xe3, 0x67, 0xad, 0x33, 0x34, 0x5, 0xc2, 0x4b, 0x37, 0xab, 0x2f, + 0x1b, 0xfb, 0x5f, 0xfb, 0x3c, 0xfb, 0x3f, 0xfb, 0x55, 0xfb, 0x10, 0xbc, + 0x3b, 0xbd, 0x5b, 0x1f, 0xe, 0x44, 0x8b, 0xbc, 0xf9, 0x13, 0x77, 0x1, + 0x91, 0xf8, 0xee, 0x3, 0x91, 0x16, 0xf8, 0xee, 0x6, 0xfb, 0xc3, 0xf9, + 0x44, 0x5, 0xfb, 0x88, 0xfd, 0x13, 0x15, 0xf7, 0x6e, 0xf8, 0x68, 0xf7, + 0x5b, 0xfc, 0x68, 0x5, 0xe, 0xa9, 0x8d, 0x76, 0xf9, 0x42, 0xbe, 0x1, + 0xaf, 0xf9, 0x19, 0x3, 0xf7, 0xe5, 0x78, 0x15, 0xf7, 0xec, 0xf9, 0x75, + 0x5, 0xfd, 0x19, 0x6, 0xf7, 0xe9, 0xfc, 0xc0, 0x15, 0xfb, 0x62, 0xf8, + 0x8d, 0x5, 0xf8, 0x47, 0x6, 0xe, 0xa9, 0x8b, 0xc1, 0xf7, 0x2d, 0xc1, + 0xf7, 0x2d, 0xc1, 0x1, 0xb8, 0xf8, 0x60, 0x14, 0xe0, 0xef, 0xf7, 0x63, + 0x15, 0xf8, 0x29, 0xc1, 0xfc, 0x29, 0x6, 0xe2, 0x95, 0xd7, 0xcd, 0xdd, + 0x1b, 0xf7, 0x81, 0xc1, 0xfb, 0x81, 0x6, 0xfb, 0x2a, 0x42, 0xfb, 0xd, + 0xfb, 0x5, 0xfb, 0x6, 0xd7, 0xfb, 0xc, 0xf7, 0x27, 0x1f, 0xf7, 0x81, + 0xc1, 0xfb, 0x81, 0x6, 0x39, 0x3f, 0xcd, 0xe2, 0x81, 0x1f, 0xe, 0xa9, + 0x66, 0x76, 0xc5, 0xc1, 0xf7, 0x2d, 0xc1, 0xf7, 0x2d, 0xc1, 0xe2, 0x77, + 0x1, 0xb8, 0xc2, 0x3, 0xe9, 0x6a, 0x15, 0xb7, 0x72, 0xb8, 0xd8, 0x5, + 0x80, 0x9a, 0xa9, 0x83, 0xa1, 0x1b, 0xf7, 0x93, 0xc1, 0xfb, 0x89, 0x6, + 0x7f, 0x73, 0x8d, 0x95, 0x7c, 0x1f, 0xdb, 0xf7, 0x21, 0x5, 0xf7, 0x6c, + 0xc1, 0xfb, 0x4e, 0x6, 0xe2, 0xf7, 0x2d, 0x5, 0xee, 0xc1, 0x47, 0x6, + 0xae, 0xc9, 0x5d, 0xa4, 0x5a, 0x34, 0x5, 0xfb, 0x8, 0x6, 0x29, 0xfb, + 0xa, 0x2e, 0xfb, 0x1b, 0x38, 0xa7, 0x57, 0xcc, 0x4f, 0x1f, 0x65, 0xf7, + 0x6c, 0x15, 0xd2, 0x91, 0xd6, 0xdf, 0xd5, 0x1b, 0xe8, 0x6, 0x32, 0xfb, + 0x2f, 0x5, 0x2e, 0xfb, 0x3b, 0x15, 0x6e, 0xa6, 0x70, 0xb3, 0x83, 0xb9, + 0x8, 0xf7, 0x14, 0x6, 0xe, 0xfb, 0x88, 0x7a, 0xba, 0xf7, 0x4b, 0xc2, + 0xf7, 0x4a, 0xbd, 0x1, 0xf7, 0xd4, 0xe9, 0x3, 0xbb, 0x8e, 0x15, 0x85, + 0x9d, 0xab, 0x7d, 0xbe, 0x1b, 0xf7, 0x22, 0xf7, 0xf, 0xf7, 0x1, 0xf7, + 0x3d, 0xe3, 0x50, 0xf7, 0x2b, 0xfb, 0x43, 0x6c, 0x69, 0x88, 0x82, 0x64, + 0x1f, 0x60, 0x7, 0x8e, 0x98, 0x99, 0x8d, 0x98, 0x1b, 0xf0, 0xf2, 0x45, + 0xfb, 0x4, 0x1f, 0xfb, 0x5c, 0x54, 0xf7, 0x5a, 0x6, 0x24, 0x2f, 0x3b, + 0x25, 0x72, 0x71, 0x8f, 0x94, 0x72, 0x1e, 0xe, 0xf7, 0x20, 0x26, 0xa2, + 0xf9, 0xba, 0xa2, 0x1, 0xf7, 0xe, 0xf7, 0x5, 0xf7, 0xfa, 0xf7, 0x5, + 0x3, 0xa4, 0x3d, 0x15, 0x74, 0xf7, 0xc7, 0xa2, 0x7, 0x50, 0x65, 0xa0, + 0xd1, 0x1f, 0xf9, 0x43, 0xf7, 0xfa, 0xfd, 0x43, 0x7, 0x45, 0x65, 0x76, + 0x51, 0x1e, 0x74, 0xf7, 0xc6, 0xa2, 0x7, 0x50, 0x65, 0xa0, 0xd1, 0x1f, + 0xf8, 0xf2, 0x7, 0xe8, 0xd0, 0x9b, 0xa7, 0x1e, 0xa2, 0xfd, 0x9e, 0x74, + 0x7, 0xa7, 0xd0, 0x7b, 0x2e, 0x1f, 0xfc, 0xf2, 0x7, 0x45, 0x66, 0x76, + 0x4f, 0x1e, 0xe, 0xa9, 0x27, 0xf2, 0xf9, 0x4d, 0xb8, 0x1, 0xf8, 0xef, + 0x9f, 0x3, 0x99, 0xfb, 0x0, 0x15, 0x9f, 0xa6, 0x93, 0x9f, 0x1b, 0xf8, + 0x78, 0x8e, 0x5, 0xa4, 0xaf, 0x84, 0x87, 0xa5, 0x1f, 0x98, 0xf1, 0x90, + 0x9f, 0xa4, 0xf1, 0x8, 0x74, 0x6, 0x32, 0x68, 0x6b, 0x73, 0x3d, 0x1b, + 0xfb, 0xfd, 0x6, 0xf7, 0xba, 0xf7, 0xe7, 0xfb, 0xa5, 0xf7, 0xfa, 0x5, + 0xf7, 0x91, 0x6, 0xf7, 0x14, 0x9a, 0x5a, 0x4a, 0x9f, 0x1f, 0x9f, 0x6, + 0x85, 0xf7, 0x33, 0x5, 0xfc, 0x85, 0x6, 0x69, 0x65, 0x90, 0x8d, 0x69, + 0x1f, 0xf7, 0xf1, 0xfc, 0x5a, 0x5, 0xe, 0xf7, 0x7d, 0xc2, 0x1, 0x96, + 0xf7, 0x7d, 0x15, 0x42, 0xa, 0xe, 0xfb, 0x4b, 0xf7, 0x2f, 0x76, 0xf7, + 0x4f, 0xb9, 0x9e, 0xdb, 0xe0, 0x77, 0x1, 0xf7, 0x81, 0x9d, 0x3, 0xcc, + 0xf7, 0x94, 0x15, 0x75, 0x9e, 0x7f, 0x9f, 0xa2, 0x93, 0xa0, 0xa1, 0x9f, + 0x1e, 0x9e, 0xa0, 0x97, 0x96, 0xab, 0x9f, 0x8, 0x8e, 0x90, 0x92, 0x8c, + 0x8d, 0x1b, 0x91, 0x8a, 0x7f, 0x87, 0x76, 0x86, 0x7a, 0x86, 0x7c, 0x1f, + 0x83, 0x73, 0x80, 0x77, 0x6d, 0x1a, 0x74, 0x96, 0x76, 0xa6, 0xa5, 0x95, + 0xa2, 0xa0, 0x8c, 0x1e, 0xa9, 0x81, 0x9f, 0x83, 0xa4, 0x1e, 0x86, 0x9a, + 0x87, 0x9b, 0xa0, 0x1a, 0x8f, 0x89, 0x96, 0x91, 0x8e, 0x8e, 0x8a, 0x87, + 0x92, 0x1e, 0xa6, 0x7a, 0x9e, 0x7a, 0x98, 0x7e, 0x8, 0x73, 0xa3, 0x99, + 0x75, 0xa6, 0x1b, 0x9b, 0x99, 0x97, 0xa1, 0xaa, 0x68, 0x94, 0x6e, 0x93, + 0x1f, 0x6f, 0x93, 0x6b, 0x93, 0x74, 0x97, 0x8, 0x84, 0x8f, 0x85, 0x8e, + 0x90, 0x1a, 0x8e, 0x8f, 0x8f, 0x94, 0x90, 0x1e, 0xcd, 0xaa, 0x8d, 0x82, + 0xb3, 0x95, 0x8, 0x97, 0x8e, 0xa6, 0x98, 0xa3, 0x1a, 0xa4, 0x7a, 0x97, + 0x78, 0x6e, 0x79, 0x6b, 0x6f, 0x70, 0x1e, 0x7f, 0x7f, 0x7a, 0x7f, 0x7d, + 0x83, 0x8, 0x88, 0x85, 0x86, 0x88, 0x88, 0x1b, 0x87, 0x8a, 0x90, 0x98, + 0xa6, 0x92, 0x9e, 0x92, 0x9f, 0x1f, 0x91, 0x9c, 0x91, 0x9d, 0xa4, 0x1a, + 0x9d, 0x83, 0xa1, 0x70, 0x70, 0x83, 0x76, 0x79, 0x73, 0x91, 0x79, 0x91, + 0x78, 0x1e, 0x92, 0x77, 0x92, 0x77, 0x71, 0x1a, 0x7f, 0x8a, 0x85, 0x87, + 0x88, 0x87, 0x8d, 0x8f, 0x84, 0x1e, 0x75, 0x96, 0x7d, 0x97, 0x80, 0x96, + 0x8, 0xa3, 0x75, 0x80, 0xae, 0x6a, 0x1b, 0x73, 0x7b, 0x7a, 0x75, 0x71, + 0x9f, 0x83, 0xb3, 0x84, 0x1f, 0xa8, 0x86, 0x8b, 0x8d, 0xc5, 0x70, 0x8, + 0x96, 0x86, 0x90, 0x87, 0x88, 0x1a, 0x88, 0x87, 0x87, 0x82, 0x86, 0x1e, + 0x70, 0x7b, 0x71, 0x84, 0x72, 0x86, 0x8, 0x6b, 0x86, 0x63, 0x7f, 0x6c, + 0x1a, 0xe, 0x65, 0xfa, 0x4f, 0x1, 0x95, 0xf8, 0x8d, 0x3, 0xf8, 0x1, + 0x65, 0x15, 0xf7, 0x2a, 0xfa, 0x4a, 0x68, 0x90, 0xfb, 0x13, 0xfd, 0xb2, + 0xfb, 0x59, 0xf8, 0x31, 0xfb, 0x26, 0x43, 0x9b, 0x6a, 0xeb, 0xba, 0x5, + 0xe, 0xa9, 0xf7, 0xf, 0xbe, 0xf7, 0x46, 0xbf, 0x1, 0xa6, 0xc0, 0x3, + 0xf8, 0x1, 0xf7, 0x81, 0x15, 0x60, 0xb6, 0xda, 0x44, 0xd0, 0x1b, 0xad, + 0xa8, 0x9b, 0x9f, 0x9f, 0x1f, 0x6b, 0xad, 0x5, 0x7f, 0x7d, 0x7b, 0x84, + 0x7a, 0x1b, 0x5d, 0x59, 0xb2, 0xc4, 0x50, 0x1f, 0xbc, 0xbf, 0xba, 0xb0, + 0xb8, 0x1b, 0xa0, 0x9f, 0x85, 0x7b, 0x9f, 0x1f, 0xa8, 0xb1, 0x5, 0x93, + 0x7e, 0x72, 0xa3, 0x63, 0x1b, 0x37, 0x68, 0x64, 0x4e, 0x3f, 0x1f, 0xc6, + 0x44, 0x51, 0xb4, 0x47, 0x1b, 0x33, 0x55, 0x3f, 0x51, 0x3e, 0xc3, 0x45, + 0xde, 0xd6, 0xc7, 0xbf, 0xc9, 0xcb, 0x1f, 0x62, 0xab, 0x15, 0x73, 0x7d, + 0x3b, 0x45, 0x4f, 0x1b, 0x56, 0x66, 0xc2, 0xb2, 0xa5, 0xa3, 0xc4, 0xcf, + 0xbe, 0xe1, 0x4c, 0x77, 0x9a, 0x1f, 0xe, 0xa9, 0xf7, 0x10, 0xbe, 0xf7, + 0x48, 0xbc, 0x1, 0xa5, 0xbe, 0xf8, 0xc2, 0xc0, 0x3, 0xf7, 0xf9, 0xf7, + 0x80, 0x15, 0x76, 0xa3, 0xcf, 0x30, 0xdf, 0x1b, 0xf4, 0xbd, 0xd2, 0xd5, + 0xd1, 0x4a, 0xcc, 0x31, 0x36, 0x67, 0x5a, 0x56, 0x54, 0x1f, 0xc5, 0x4d, + 0x61, 0xb7, 0x34, 0x1b, 0x42, 0x8a, 0x48, 0x4f, 0x41, 0x1a, 0x41, 0xba, + 0x44, 0xe8, 0xf2, 0xcb, 0xe6, 0xa0, 0xa3, 0x1e, 0x69, 0xac, 0x15, 0x58, + 0x5d, 0x5a, 0x60, 0x4d, 0x1b, 0x5c, 0x61, 0xae, 0xc6, 0xb0, 0xa6, 0xbc, + 0xc9, 0xbf, 0xb3, 0x6b, 0x55, 0xcc, 0x1f, 0xce, 0x16, 0xc2, 0xca, 0xa1, + 0xa8, 0xc5, 0x1b, 0xd6, 0xa6, 0x51, 0x71, 0x49, 0x56, 0x6d, 0x5a, 0x61, + 0x61, 0xb2, 0xc4, 0x50, 0x1f, 0xe, 0xe0, 0x8b, 0xc2, 0xf8, 0xfe, 0x77, + 0x1, 0xa5, 0x16, 0xf9, 0x5c, 0xc2, 0xfc, 0xd6, 0x6, 0xf8, 0xd6, 0xf8, + 0xd9, 0x62, 0xb0, 0x5, 0xe, 0x3b, 0xa0, 0x76, 0xf8, 0x5a, 0x77, 0x1, + 0xa2, 0x16, 0xcc, 0x6, 0xf7, 0x6b, 0xf7, 0xf2, 0xf7, 0x6b, 0xfb, 0xf2, + 0x5, 0xcc, 0x6, 0xfb, 0xac, 0xf8, 0x5a, 0x5, 0xe, 0x3b, 0xa0, 0x76, + 0xf8, 0x71, 0x77, 0x1, 0xa9, 0xf8, 0xb8, 0x3, 0xa9, 0xf8, 0x54, 0x15, + 0xf7, 0xa6, 0xfc, 0x54, 0xf7, 0xa6, 0xf8, 0x54, 0x5f, 0xa8, 0xfb, 0x7a, + 0xfc, 0xb, 0xfb, 0x7a, 0xf8, 0xb, 0x5, 0xe, 0xe0, 0xa0, 0x76, 0xf8, + 0x61, 0xbb, 0x55, 0xa, 0x16, 0xc2, 0xf7, 0x51, 0x6, 0xf7, 0x23, 0xf7, + 0x27, 0xf7, 0x15, 0xf7, 0x24, 0xf7, 0x32, 0xf7, 0x19, 0xfb, 0x27, 0xfb, + 0x11, 0x1e, 0xfb, 0x51, 0xc2, 0xf7, 0x51, 0x7, 0xf7, 0x41, 0xfb, 0x2f, + 0xf7, 0x27, 0xfb, 0x53, 0xfb, 0x53, 0xfb, 0x2f, 0xfb, 0x27, 0xfb, 0x41, + 0x1e, 0xe, 0xe0, 0x7a, 0xba, 0xf8, 0x62, 0x77, 0x55, 0xa, 0xf7, 0xc1, + 0x15, 0xfb, 0x41, 0xf7, 0x2f, 0xfb, 0x25, 0x4b, 0xa, 0xf7, 0x2f, 0xf7, + 0x25, 0xf7, 0x41, 0x1e, 0xf7, 0x53, 0x54, 0xfb, 0x52, 0x7, 0xfb, 0x11, + 0xfb, 0x19, 0xfb, 0x27, 0xfb, 0x32, 0xfb, 0x24, 0xfb, 0x27, 0xf7, 0x15, + 0xf7, 0x23, 0x1e, 0xf7, 0x52, 0x54, 0x7, 0xe, 0xfc, 0x2d, 0x20, 0xf7, + 0x4, 0xf9, 0xb8, 0xf6, 0x1, 0xf7, 0xc, 0xd1, 0x3, 0x8d, 0x58, 0x15, + 0x6a, 0xaa, 0x74, 0xae, 0xf7, 0x27, 0x6e, 0xf8, 0x5d, 0xf7, 0x1e, 0x8f, + 0x1e, 0xf7, 0x1c, 0x76, 0xf7, 0x31, 0x8d, 0xb0, 0x1e, 0x95, 0x8c, 0x8e, + 0x92, 0x94, 0x9b, 0x9a, 0x71, 0xac, 0x1b, 0xa4, 0x9d, 0x9d, 0xa6, 0xb2, + 0x72, 0xa2, 0x67, 0xfb, 0xb, 0x94, 0xfb, 0x8a, 0xfb, 0x27, 0x1f, 0x8a, + 0xfb, 0xca, 0x90, 0x2e, 0x8d, 0x41, 0x8, 0x5c, 0x8d, 0x8a, 0x73, 0x7c, + 0x7c, 0x7a, 0xa9, 0x71, 0x1b, 0x6f, 0x73, 0x7e, 0x60, 0x1f, 0xe, 0xf7, + 0x48, 0x8b, 0xf7, 0x15, 0xf7, 0x6f, 0xf7, 0x16, 0x1, 0xf7, 0x37, 0xf7, + 0x15, 0xd6, 0xf7, 0x16, 0xd6, 0xf7, 0x15, 0x14, 0x38, 0xf7, 0x37, 0xcc, + 0x15, 0x52, 0xa, 0x6f, 0xa7, 0x67, 0x67, 0x6e, 0x6f, 0x67, 0x1e, 0xf8, + 0x2d, 0x16, 0x52, 0xa, 0x6d, 0xa7, 0x67, 0x67, 0x70, 0x6f, 0x67, 0x1e, + 0xfb, 0x61, 0xf7, 0xf0, 0x15, 0x67, 0xa8, 0x6e, 0xaf, 0xaf, 0xa8, 0xa8, + 0xaf, 0xaf, 0x6e, 0xa8, 0x67, 0x67, 0x6e, 0x6e, 0x67, 0x1e, 0xe, 0xf7, + 0x5f, 0xbf, 0x8b, 0xbf, 0x12, 0x9c, 0xf8, 0x94, 0x17, 0x13, 0x60, 0xbc, + 0xf7, 0x5f, 0x15, 0xa9, 0xa6, 0xaa, 0xa1, 0xb8, 0x1b, 0xa9, 0xaa, 0x7f, + 0x7c, 0xba, 0x1f, 0x7f, 0xb1, 0xc0, 0x7e, 0xba, 0x1b, 0xa2, 0xa1, 0x92, + 0x94, 0x9f, 0x1f, 0xaa, 0x9a, 0xa5, 0xa0, 0x94, 0x9d, 0x6a, 0xad, 0x18, + 0x7c, 0x7d, 0x6f, 0x66, 0x53, 0x1b, 0x63, 0x5f, 0x96, 0x98, 0x65, 0x1f, + 0x13, 0xe0, 0x99, 0x63, 0x66, 0x99, 0x5c, 0x1b, 0x40, 0x6a, 0x61, 0x73, + 0x70, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, 0x15, 0xc2, 0xf7, 0x1b, 0xba, 0x90, + 0xbb, 0x12, 0x96, 0xf7, 0x4c, 0x15, 0x3a, 0xa, 0xfb, 0x83, 0x4, 0x3a, + 0xa, 0x13, 0x30, 0xba, 0xf7, 0xcf, 0x15, 0xab, 0xa8, 0xa2, 0xa3, 0xbe, + 0x1b, 0xa5, 0xad, 0x84, 0x7b, 0xb9, 0x1f, 0x13, 0x20, 0x78, 0xc0, 0xb4, + 0x81, 0xaf, 0x1b, 0xa4, 0xa1, 0x90, 0x96, 0xa2, 0x1f, 0xb7, 0xa0, 0x96, + 0xa4, 0x93, 0x9a, 0x66, 0xa3, 0x18, 0x7b, 0x7d, 0x73, 0x65, 0x4b, 0x1b, + 0x72, 0x63, 0x94, 0x97, 0x6c, 0x1f, 0x13, 0x10, 0x66, 0x99, 0x60, 0x9c, + 0x5e, 0x8c, 0x8, 0x34, 0x5e, 0x5d, 0x6b, 0x77, 0x1f, 0xe, 0xf7, 0x1b, + 0xbe, 0xf4, 0xbe, 0x12, 0x99, 0xf8, 0x96, 0x17, 0xb9, 0xf7, 0xb7, 0x57, + 0xa, 0xb3, 0x7b, 0x7d, 0xbc, 0x1f, 0x80, 0xb0, 0xb6, 0x32, 0xa, 0x97, + 0x98, 0x65, 0x1f, 0x98, 0x63, 0x62, 0x99, 0x5c, 0x1b, 0x40, 0x68, 0x63, + 0x72, 0x6d, 0x1f, 0xab, 0xfb, 0x56, 0x57, 0xa, 0xb5, 0x7b, 0x7d, 0xbc, + 0x1f, 0x13, 0xa0, 0x80, 0xb0, 0xb4, 0x32, 0xa, 0x98, 0x98, 0x64, 0x1f, + 0x98, 0x63, 0x63, 0x98, 0x5c, 0x1b, 0x40, 0x68, 0x62, 0x72, 0x6d, 0x1f, + 0xe, 0x87, 0x76, 0xf7, 0x35, 0xc2, 0xf7, 0x1f, 0xc2, 0xf7, 0x38, 0x77, + 0x1, 0xe9, 0x16, 0xbd, 0x72, 0xe6, 0xf7, 0x35, 0x5, 0xf7, 0xc5, 0xc2, + 0xfb, 0xa7, 0x6, 0xd8, 0xf7, 0x1f, 0x5, 0xf7, 0x5a, 0xc2, 0xfb, 0x3c, + 0x6, 0xd7, 0xf7, 0x1c, 0x5a, 0xa7, 0x30, 0xfb, 0x38, 0x5, 0xfb, 0xb9, + 0x54, 0xf7, 0x9a, 0x6, 0x3e, 0xfb, 0x1f, 0x5, 0xfb, 0x4d, 0x54, 0xf7, + 0x2f, 0x6, 0xe, 0xdd, 0xc2, 0xed, 0xc2, 0xed, 0xc2, 0x1, 0x99, 0xf8, + 0xa0, 0x14, 0xe0, 0x99, 0xf8, 0x18, 0x15, 0x42, 0xa, 0xfb, 0x64, 0x4, + 0x42, 0xa, 0xfb, 0x64, 0x4, 0x42, 0xa, 0xe, 0x3d, 0xa, 0xf7, 0xb8, + 0x4, 0xf8, 0x85, 0xfb, 0x76, 0x5, 0xc9, 0x7, 0xfc, 0x45, 0xf7, 0x57, + 0x3e, 0xa, 0x3d, 0xa, 0xcd, 0x4, 0xf8, 0x85, 0xf7, 0x76, 0x5, 0x51, + 0xa, 0xf8, 0x45, 0xfb, 0x5b, 0xfc, 0x45, 0xfb, 0x57, 0x5, 0xe, 0xa9, + 0x8b, 0x47, 0xa, 0xb1, 0xc5, 0x3, 0xf9, 0x46, 0x16, 0xc2, 0xfc, 0x29, + 0x7, 0x21, 0x8c, 0x39, 0xe3, 0xe2, 0x1a, 0xf0, 0xe1, 0xde, 0xf3, 0x1e, + 0xf8, 0x27, 0xc2, 0xfc, 0x28, 0x6, 0xfb, 0x33, 0x34, 0xfb, 0x11, 0xfb, + 0x6, 0x8a, 0x1f, 0xfb, 0x19, 0x8a, 0xf7, 0x6, 0x29, 0xf7, 0x16, 0x1b, + 0xe, 0xa9, 0x8b, 0x47, 0xa, 0xf8, 0xfb, 0xc5, 0x3, 0xf8, 0x40, 0x16, + 0xf7, 0x16, 0xf7, 0x7, 0xed, 0xf7, 0x19, 0xf7, 0x6, 0x31, 0xf7, 0x11, + 0xfb, 0x33, 0x1f, 0xfc, 0x28, 0x54, 0xf8, 0x27, 0x6, 0xf3, 0xe3, 0x38, + 0x26, 0x34, 0x37, 0x33, 0x21, 0x58, 0xa, 0xa9, 0x5a, 0x76, 0xd1, 0xc2, + 0xf7, 0xfb, 0xc2, 0xd2, 0x77, 0x1, 0xaf, 0xc5, 0x3, 0xf7, 0x8d, 0x45, + 0x15, 0xc7, 0x6, 0xaf, 0xd1, 0x5, 0xf7, 0xed, 0xc2, 0xfb, 0xd0, 0x6, + 0xf7, 0x44, 0xf7, 0xfb, 0x5, 0xf7, 0x20, 0xc2, 0xfb, 0x4, 0x6, 0xb0, + 0xd2, 0x5, 0x4f, 0x6, 0x67, 0x44, 0x5, 0xfb, 0x8a, 0x6, 0xfb, 0x4, + 0xfb, 0x11, 0x36, 0xfb, 0x2b, 0xfb, 0x31, 0xf7, 0x11, 0x3f, 0xf7, 0x10, + 0x8a, 0x1f, 0xa7, 0xc2, 0x15, 0xfb, 0x14, 0x8c, 0x30, 0xdc, 0xee, 0x1a, + 0xe2, 0xd9, 0xe7, 0xf5, 0x1e, 0xf7, 0x68, 0x6, 0xe, 0xa9, 0xfb, 0x11, + 0xc2, 0xd1, 0x47, 0xa, 0xb0, 0xc3, 0x3, 0xb0, 0x45, 0x15, 0x54, 0xf9, + 0x21, 0xc2, 0x7, 0xd1, 0x4, 0xc2, 0xfc, 0x29, 0x7, 0xfb, 0x10, 0x8c, + 0x46, 0xee, 0x8c, 0xdc, 0x8, 0xf7, 0x0, 0x8c, 0xea, 0xd2, 0xed, 0x1b, + 0xf8, 0x27, 0xc2, 0xfc, 0x28, 0x6, 0xfb, 0x40, 0x3e, 0xfb, 0x16, 0xfb, + 0x1, 0xfb, 0x19, 0xf3, 0x29, 0xf7, 0x21, 0x1f, 0xe, 0xa9, 0xfb, 0x11, + 0xc2, 0xd1, 0x47, 0xa, 0xf8, 0xfd, 0xc3, 0x3, 0x9f, 0xfb, 0x11, 0x15, + 0xf9, 0x21, 0xc2, 0xfd, 0x21, 0x6, 0xf8, 0x2c, 0xd1, 0x15, 0xf7, 0x21, + 0xf3, 0xed, 0xf7, 0x19, 0xf7, 0x1, 0x3e, 0xf7, 0x16, 0xfb, 0x40, 0x1f, + 0xfc, 0x28, 0x54, 0xf8, 0x27, 0x6, 0xed, 0xeb, 0x44, 0xfb, 0x0, 0x3a, + 0x47, 0x28, 0xfb, 0x10, 0x58, 0xa, 0xe0, 0x7c, 0xc0, 0xf7, 0x9d, 0xc1, + 0xf7, 0x9d, 0xc0, 0x1, 0xb6, 0xc4, 0xf7, 0x99, 0xc1, 0xf7, 0x9d, 0xc0, + 0x14, 0xe0, 0xf7, 0x24, 0xf7, 0xc3, 0x15, 0xf7, 0x6d, 0xfb, 0x71, 0xc1, + 0xf7, 0x71, 0xf7, 0x6e, 0xc1, 0xfb, 0x6e, 0xf7, 0x6f, 0x55, 0xfb, 0x6f, + 0xfb, 0x6d, 0x6, 0x5f, 0x70, 0x15, 0xf7, 0x35, 0xf7, 0x13, 0x30, 0xa, + 0xfb, 0x13, 0xf7, 0x17, 0xf7, 0x35, 0x1e, 0x52, 0x16, 0x21, 0xa, 0xe, + 0xe0, 0x7a, 0xc0, 0xf8, 0xdc, 0xc0, 0x1, 0xb6, 0xc0, 0xf8, 0xdc, 0xc0, + 0x3, 0xf7, 0x54, 0xf7, 0x3f, 0x15, 0xb2, 0x64, 0xf7, 0x31, 0xf7, 0x32, + 0xf7, 0x32, 0xfb, 0x33, 0xb2, 0xb1, 0xfb, 0x32, 0xf7, 0x33, 0xf7, 0x30, + 0xf7, 0x30, 0x64, 0xb1, 0xfb, 0x30, 0xfb, 0x30, 0xfb, 0x31, 0xf7, 0x32, + 0x64, 0x64, 0xf7, 0x31, 0xfb, 0x31, 0x5, 0xfb, 0xc6, 0x16, 0x21, 0xa, + 0xc0, 0x16, 0xf7, 0x35, 0xf7, 0x17, 0x30, 0xa, 0xfb, 0x17, 0xf7, 0x17, + 0xf7, 0x35, 0x1e, 0xe, 0x72, 0x8b, 0xc2, 0xf8, 0xff, 0x77, 0x1, 0xf7, + 0xc6, 0xc2, 0x3, 0x9a, 0x16, 0xf9, 0x11, 0xc2, 0xfb, 0xb7, 0xf8, 0xff, + 0x54, 0xfc, 0xff, 0xfb, 0xb7, 0x6, 0xe, 0xfc, 0x45, 0xf7, 0x66, 0xef, + 0x1, 0xd0, 0xef, 0x3, 0xd0, 0xf7, 0x98, 0x15, 0x6f, 0xa1, 0x75, 0xa7, + 0xa6, 0xa2, 0xa1, 0xa7, 0xa6, 0x74, 0xa2, 0x70, 0x6f, 0x75, 0x74, 0x70, + 0x1e, 0xe, 0x8e, 0x4d, 0x76, 0xf9, 0xe9, 0xf7, 0x2b, 0x1, 0xf7, 0xe0, + 0xd1, 0x3, 0xf7, 0xe0, 0x38, 0x15, 0xd1, 0xf8, 0x13, 0x6, 0xf8, 0x88, + 0xf7, 0x33, 0xd0, 0xae, 0x93, 0x92, 0x89, 0x89, 0x8f, 0x1e, 0x82, 0x86, + 0x80, 0x79, 0x78, 0x1a, 0x73, 0x9d, 0x6e, 0xb1, 0xb7, 0x9f, 0xb3, 0xb2, + 0xaf, 0x68, 0xaf, 0x5e, 0x4f, 0xfb, 0x87, 0x59, 0xfc, 0xd3, 0x1e, 0xe, + 0x8e, 0x3a, 0xf7, 0x29, 0xf9, 0xe9, 0x77, 0x1, 0xf7, 0xee, 0xd0, 0x3, + 0xf7, 0x1e, 0x70, 0x15, 0x94, 0x90, 0x96, 0x9d, 0x9e, 0x1a, 0xa3, 0x79, + 0xa8, 0x65, 0x5f, 0x78, 0x64, 0x64, 0x67, 0xad, 0x68, 0xb8, 0xc7, 0xf7, + 0x81, 0xbb, 0xf8, 0xd3, 0x1e, 0xf8, 0xf, 0x46, 0xfc, 0x13, 0x7, 0xfc, + 0x88, 0xfb, 0x2e, 0x46, 0x68, 0x83, 0x84, 0x8d, 0x8d, 0x87, 0x1e, 0xe, + 0x4c, 0xa, 0xa4, 0xf7, 0xa6, 0x15, 0xf7, 0x7a, 0xfc, 0x6c, 0xbe, 0xa4, + 0xfb, 0x6e, 0xf8, 0x53, 0xf7, 0x6e, 0xf8, 0x54, 0x58, 0xa3, 0x5, 0xe, + 0x4c, 0xa, 0xd3, 0xfb, 0x5a, 0x15, 0xf7, 0x7a, 0xf8, 0x6c, 0xfb, 0x7a, + 0xf8, 0x6c, 0x58, 0x73, 0xf7, 0x6e, 0xfc, 0x54, 0xfb, 0x6e, 0xfc, 0x53, + 0x5, 0xe, 0xfb, 0x51, 0xa0, 0x76, 0xf9, 0x7d, 0x77, 0x1, 0x9d, 0xc7, + 0xf7, 0xde, 0xc7, 0x3, 0xf7, 0x68, 0x16, 0xc7, 0x6, 0xf7, 0x58, 0xf8, + 0xd, 0xfb, 0x58, 0xf8, 0x4, 0x5, 0x4f, 0x6, 0xfb, 0x56, 0xfc, 0x4, + 0x5, 0xf7, 0x74, 0xfb, 0xd6, 0x15, 0xfb, 0x38, 0xf7, 0xd6, 0xf7, 0x38, + 0xf7, 0xce, 0xf7, 0x3a, 0xfb, 0xce, 0x5, 0xe, 0xd1, 0x7c, 0x76, 0xf8, + 0xdc, 0x77, 0x1, 0xf7, 0xec, 0xc1, 0x3, 0xf7, 0xbb, 0x67, 0x15, 0xf7, + 0x2c, 0x6, 0x84, 0x95, 0x62, 0xac, 0x8a, 0xce, 0x8, 0xaf, 0x8a, 0x94, + 0xa0, 0x9d, 0x1b, 0x91, 0x8f, 0x86, 0x81, 0x90, 0x1f, 0x5d, 0xa2, 0xa2, + 0x5e, 0xcc, 0x1b, 0xbb, 0xaa, 0xc4, 0xbb, 0xc0, 0x74, 0xb2, 0x61, 0xc2, + 0x1f, 0x2d, 0xf7, 0x10, 0x6f, 0xae, 0x44, 0xf7, 0x4, 0x44, 0xfb, 0x4, + 0x6f, 0x68, 0x2d, 0xfb, 0x10, 0x8, 0x61, 0x54, 0x74, 0x64, 0x56, 0x1a, + 0x5f, 0xa1, 0x4c, 0xcb, 0xc8, 0xa6, 0xc6, 0xb1, 0x9c, 0x1e, 0x92, 0x8e, + 0x8f, 0x90, 0x94, 0x1b, 0x98, 0x97, 0x77, 0x65, 0x8a, 0x1f, 0x8a, 0x48, + 0x62, 0x6a, 0x84, 0x81, 0x8, 0xe, 0xd1, 0x86, 0x76, 0xf7, 0x3c, 0xf7, + 0x17, 0x12, 0xf7, 0xe5, 0xd2, 0x4f, 0xbd, 0x13, 0xd0, 0xf7, 0xbf, 0x71, + 0x15, 0xf7, 0x28, 0x6, 0x70, 0xac, 0x75, 0x9f, 0xcd, 0x1a, 0xaa, 0x8e, + 0x9e, 0x99, 0x95, 0x9a, 0x7e, 0x6f, 0xa2, 0x1e, 0x6b, 0xa6, 0xab, 0x81, + 0xb2, 0x1b, 0xc5, 0xb4, 0xc7, 0xc9, 0xd1, 0x67, 0xc6, 0x47, 0x5f, 0x5e, + 0x6d, 0x83, 0x7c, 0x1f, 0x13, 0xe0, 0x70, 0x7d, 0x7a, 0x92, 0x9a, 0x1a, + 0x92, 0x8f, 0x92, 0x90, 0x90, 0x1e, 0x9d, 0x9e, 0xcd, 0xb0, 0xd1, 0x1a, + 0xd9, 0x4b, 0xa8, 0x4b, 0x4a, 0x4b, 0x6c, 0x38, 0x48, 0xd1, 0x67, 0x9a, + 0x7b, 0x1e, 0x90, 0x85, 0x8e, 0x85, 0x84, 0x1a, 0x7c, 0x79, 0x86, 0x72, + 0x97, 0x1e, 0x93, 0x7c, 0x64, 0xa9, 0x5f, 0x1b, 0x46, 0x62, 0x53, 0x46, + 0x47, 0xb5, 0x50, 0xcc, 0xaf, 0xa8, 0x98, 0xa9, 0xa5, 0x1f, 0xa7, 0xa4, + 0x9b, 0x97, 0x94, 0x1b, 0x13, 0xd0, 0x99, 0x8b, 0x71, 0x74, 0x49, 0x74, + 0x76, 0x71, 0x6b, 0x1f, 0xe, 0xd1, 0x7f, 0x76, 0xf8, 0xc9, 0x77, 0x1, + 0xf8, 0xa, 0x6a, 0x15, 0xd9, 0xf7, 0x7, 0x9a, 0xa7, 0xe6, 0xf7, 0x9, + 0x8, 0xb4, 0xc0, 0xab, 0xc0, 0xc4, 0x1a, 0xf7, 0x8, 0x43, 0xa5, 0x61, + 0x5d, 0x5d, 0x76, 0x48, 0x72, 0x1e, 0x78, 0x83, 0x88, 0x75, 0x7c, 0x1b, + 0x7c, 0x88, 0xa1, 0x9e, 0x83, 0x1f, 0xce, 0x72, 0x5d, 0xa0, 0x5d, 0x1b, + 0x61, 0x43, 0x71, 0xfb, 0x8, 0x52, 0xab, 0x56, 0xb4, 0x56, 0x1f, 0xe6, + 0xfb, 0x9, 0x9a, 0x6f, 0xd9, 0xfb, 0x7, 0x8, 0xe, 0xd1, 0x7c, 0x76, + 0xf8, 0xde, 0x77, 0x1, 0xf7, 0x22, 0xf8, 0x5e, 0x3, 0xf7, 0x22, 0xf7, + 0x95, 0x15, 0xf7, 0x7c, 0xfb, 0xb9, 0xf7, 0x76, 0xf7, 0xb9, 0xfb, 0x76, + 0xf7, 0xb9, 0x5, 0xe, 0xf6, 0x7c, 0xb3, 0xf3, 0xb1, 0xf7, 0xdb, 0xa5, + 0xf7, 0x7, 0xb3, 0x1, 0xbe, 0xb3, 0xf7, 0xa, 0xcc, 0xf7, 0x92, 0x9f, + 0xf7, 0x2d, 0xb3, 0x3, 0xf8, 0xaf, 0xf7, 0x70, 0x15, 0x62, 0x59, 0x6a, + 0x7f, 0x5e, 0x1b, 0x40, 0x4d, 0xc7, 0xf1, 0xd5, 0xb8, 0xe6, 0xdc, 0xc6, + 0xc6, 0x6c, 0x42, 0x95, 0x1f, 0x9f, 0x6, 0x87, 0xf7, 0x14, 0x5, 0x78, + 0x6, 0x88, 0x7d, 0x7c, 0x86, 0x79, 0x8f, 0x8, 0x90, 0x76, 0x6b, 0x97, + 0x64, 0x1b, 0x24, 0x36, 0x31, 0x23, 0xfb, 0x9, 0xdb, 0x3b, 0xf7, 0xb, + 0xd7, 0xb7, 0xbd, 0xa2, 0xa1, 0x1f, 0xfc, 0x87, 0xf7, 0x14, 0x23, 0xa, + 0xf6, 0x7a, 0xb3, 0xf7, 0x18, 0x9d, 0xf7, 0x31, 0xa2, 0xf7, 0x32, 0xa3, + 0xed, 0xb3, 0x1, 0xbd, 0xb3, 0xf7, 0x51, 0xcb, 0xf7, 0x17, 0xcf, 0xf7, + 0x32, 0xb3, 0x3, 0xbd, 0xf7, 0xdc, 0x4f, 0xa, 0xf7, 0x52, 0xf7, 0x2f, + 0xf7, 0x2e, 0xf7, 0x53, 0x48, 0xa, 0xfb, 0x2f, 0xfb, 0x2f, 0xfb, 0x52, + 0x8c, 0x2c, 0xa, 0x1e, 0xfb, 0x3d, 0x8a, 0xfb, 0x1c, 0x43, 0xa, 0x1a, + 0xf7, 0x20, 0xfb, 0x40, 0x15, 0xf7, 0x34, 0x9d, 0x6, 0x75, 0x72, 0x9a, + 0xa3, 0x1f, 0xf7, 0xa, 0xa5, 0x7, 0xf7, 0x19, 0xfb, 0x43, 0x5, 0xea, + 0x9d, 0x6, 0x7e, 0x7f, 0x8b, 0x99, 0x80, 0x1f, 0xfb, 0xc, 0xf7, 0x2c, + 0x5, 0xc5, 0x9c, 0xb6, 0xa2, 0xc9, 0x1a, 0xd8, 0x3b, 0x9c, 0x4f, 0x1e, + 0xfb, 0x3b, 0x79, 0x6, 0xb3, 0x8f, 0x80, 0x6e, 0x1f, 0xfb, 0xa0, 0x7, + 0x78, 0x71, 0x7a, 0x74, 0x1e, 0xf7, 0x5, 0xf7, 0x48, 0x15, 0xf7, 0x12, + 0x7, 0x9c, 0x95, 0x9a, 0x95, 0xcf, 0xb5, 0x79, 0x58, 0x8c, 0x1e, 0x39, + 0x43, 0x85, 0x50, 0x8a, 0x1e, 0xe, 0xf7, 0x63, 0xf7, 0xce, 0x76, 0xf7, + 0xf9, 0xa2, 0x79, 0x9d, 0x12, 0x9d, 0x9d, 0xf7, 0x6, 0xc6, 0xf7, 0x6, + 0x9d, 0xdd, 0xa6, 0xf7, 0xbc, 0xc6, 0x13, 0xdf, 0xee, 0xf7, 0xb9, 0x15, + 0xf7, 0x34, 0x9d, 0x6, 0x6c, 0x78, 0x9a, 0xa2, 0x1f, 0xf7, 0xc2, 0x7, + 0xb0, 0x8a, 0xc3, 0x89, 0xa2, 0x6e, 0x89, 0x5f, 0x19, 0x9d, 0x8c, 0x88, + 0xec, 0x5, 0xfb, 0xd1, 0x6, 0x88, 0x2a, 0x9d, 0x8a, 0x89, 0xb7, 0xa2, + 0xa8, 0xc3, 0x8d, 0x19, 0xb0, 0x8c, 0x5, 0xfb, 0xc2, 0x4a, 0xa, 0xf7, + 0xa5, 0x79, 0x15, 0xf7, 0x15, 0x9d, 0x6, 0x6c, 0x77, 0x9a, 0xa2, 0x1f, + 0xf7, 0x8f, 0x7, 0xf7, 0x24, 0xfb, 0xc7, 0x5, 0x9d, 0x6, 0xf7, 0x1a, + 0xf7, 0xd7, 0x5, 0xfb, 0x9f, 0x4a, 0xa, 0x79, 0xf7, 0x34, 0x9d, 0x7, + 0x6c, 0x78, 0x9a, 0xa2, 0x1f, 0xf7, 0xad, 0x7, 0x13, 0xbf, 0xa6, 0xa8, + 0x89, 0xa0, 0x1e, 0x9d, 0xfb, 0x5, 0x7, 0xfb, 0x12, 0xfb, 0xb4, 0xfb, + 0x18, 0xf7, 0xb4, 0x5, 0xfb, 0x6, 0x79, 0x6, 0xab, 0xa0, 0x8e, 0x65, + 0x1f, 0xfb, 0xa3, 0x4a, 0xa, 0xe, 0xfb, 0x4b, 0xfa, 0x5, 0xaf, 0x1, + 0xf8, 0x74, 0xfa, 0x5, 0x15, 0xf8, 0xf6, 0xaf, 0xfc, 0xf6, 0x6, 0xe, + 0x3b, 0x28, 0x76, 0xfa, 0xfe, 0x49, 0xa, 0xf7, 0xac, 0xfb, 0xc, 0x15, + 0xc3, 0xfa, 0xfe, 0x53, 0x6, 0xe, 0xf7, 0xd1, 0xf7, 0x70, 0xc3, 0x1, + 0x4f, 0xfa, 0xea, 0x3, 0x4f, 0xf7, 0x70, 0x15, 0xfa, 0xea, 0xc3, 0xfe, + 0xea, 0x6, 0xe, 0xf6, 0x77, 0xb3, 0xf7, 0xb4, 0xb6, 0xf7, 0x17, 0xb6, + 0xf4, 0xb3, 0x1, 0xbd, 0xb3, 0xf7, 0x44, 0xbc, 0xf7, 0x54, 0xb9, 0xf7, + 0x27, 0xb3, 0x3, 0xbd, 0xf7, 0xd9, 0x4f, 0xa, 0x1e, 0xf7, 0x52, 0x8c, + 0xf7, 0x2f, 0xf7, 0x2d, 0xf7, 0x53, 0x1a, 0x48, 0xa, 0xfb, 0x2e, 0xfb, + 0x2f, 0xfb, 0x52, 0x2c, 0xa, 0xfb, 0x3d, 0xfb, 0x1c, 0xf7, 0x1c, 0xf7, + 0x3c, 0x1e, 0xf7, 0x44, 0xfb, 0x50, 0x15, 0xbc, 0xf7, 0x40, 0xf7, 0x11, + 0x6, 0xd2, 0x82, 0x3c, 0x67, 0x8c, 0x1f, 0x8c, 0x6f, 0x93, 0x89, 0x94, + 0x79, 0x8, 0x9e, 0xa1, 0x8b, 0x9e, 0x1b, 0x73, 0xa7, 0x87, 0xa3, 0xb0, + 0x1a, 0xbe, 0x7c, 0xa6, 0x6c, 0xa0, 0x1e, 0xb0, 0xa7, 0x98, 0x9d, 0xbc, + 0x1a, 0xe1, 0x4d, 0x96, 0x50, 0x1e, 0xfb, 0x3e, 0x6, 0xbc, 0xfb, 0x42, + 0x15, 0xf7, 0x17, 0xf7, 0xe, 0x7, 0xa9, 0xb3, 0x83, 0x4a, 0x5a, 0x66, + 0x82, 0x6a, 0x1f, 0xe, 0xf6, 0x7c, 0xb3, 0xef, 0xb9, 0xf7, 0xcc, 0xb6, + 0xf7, 0x1, 0xb3, 0x1, 0xbc, 0xb3, 0xf7, 0x1e, 0xbc, 0xf7, 0x80, 0xb8, + 0xf7, 0x22, 0xb3, 0x3, 0xf8, 0x94, 0xf7, 0xa6, 0x15, 0x52, 0x59, 0x5d, + 0x52, 0x35, 0x60, 0xe5, 0xd6, 0xdd, 0xb7, 0xcc, 0xd8, 0xce, 0xb3, 0x6f, + 0x58, 0x8d, 0x1e, 0xbe, 0x6, 0xe5, 0x89, 0x44, 0xab, 0x33, 0x1b, 0xfb, + 0x0, 0x4e, 0x33, 0x23, 0xfb, 0x4, 0xcd, 0x2a, 0xf7, 0x4, 0xf7, 0x0, + 0xb9, 0xe7, 0xc4, 0x1f, 0xfc, 0x92, 0xc3, 0x23, 0xa, 0xf2, 0xf7, 0xce, + 0x76, 0xf7, 0xe5, 0xb6, 0x1, 0xf7, 0x16, 0xbc, 0xf7, 0x50, 0xbc, 0xf7, + 0x98, 0xbc, 0x3, 0xf7, 0x16, 0xf7, 0xb9, 0x15, 0xbc, 0xf7, 0xe5, 0xf7, + 0x11, 0xb6, 0xfb, 0xbf, 0x60, 0xf7, 0x11, 0x6, 0xf7, 0x81, 0xfb, 0xe5, + 0x15, 0xbc, 0xf7, 0xc9, 0x6, 0xf4, 0xfb, 0xc4, 0x5, 0xbd, 0x6, 0xf4, + 0xf7, 0xc4, 0x5, 0xfb, 0xc9, 0xbc, 0xf8, 0x10, 0x44, 0x7, 0xfb, 0x0, + 0xfb, 0xd2, 0xfb, 0x0, 0xf7, 0xd2, 0x5, 0x44, 0x6, 0xe, 0xfb, 0xbf, + 0xfb, 0xb9, 0x1c, 0x4, 0xb9, 0x1, 0xa3, 0xdf, 0x3, 0xa3, 0xfb, 0xb9, + 0x15, 0xdf, 0xf8, 0x2e, 0x6, 0xf7, 0xf3, 0xf5, 0xf7, 0xc9, 0xf7, 0x72, + 0xf7, 0x1f, 0x1e, 0x7e, 0x95, 0x5, 0xfb, 0x57, 0x2a, 0xfb, 0x60, 0xfb, + 0x62, 0xfc, 0x8e, 0x1a, 0xe, 0xfb, 0xbf, 0xfa, 0x31, 0x8b, 0x1, 0xa3, + 0xdf, 0x3, 0xa3, 0x54, 0xa, 0x3f, 0xa, 0xa3, 0xdf, 0x3, 0xf8, 0x41, + 0xfb, 0xb9, 0x15, 0x92, 0x95, 0x5, 0xfb, 0x72, 0xf7, 0x29, 0x21, 0xf7, + 0xbf, 0xf7, 0xf3, 0x1a, 0xf8, 0x2e, 0x37, 0xfc, 0x2e, 0x7, 0xfc, 0x8e, + 0xf7, 0x65, 0xfb, 0x58, 0xf7, 0x57, 0x20, 0x1e, 0xe, 0xfb, 0xbf, 0xfa, + 0x9, 0xb4, 0x1, 0x8b, 0xd8, 0x3, 0x3b, 0x4, 0xd8, 0xf9, 0xd2, 0x6, + 0xf7, 0x11, 0x9b, 0x95, 0xf7, 0x11, 0x1e, 0xf7, 0x17, 0xb4, 0xfb, 0xf1, + 0x6, 0xe, 0xfb, 0xbf, 0x3c, 0xfa, 0x80, 0x1, 0x8b, 0xd8, 0x3, 0x3c, + 0x4, 0xd8, 0xfa, 0x80, 0x3e, 0x6, 0xe, 0xfb, 0xbf, 0x3b, 0xb4, 0x1, + 0x8b, 0xd8, 0x3, 0x3b, 0x4, 0xf7, 0xe8, 0xb4, 0xfb, 0xe, 0x6, 0xfb, + 0x11, 0x7b, 0x95, 0xf7, 0x11, 0x1f, 0xf9, 0xd2, 0x3e, 0x7, 0xe, 0xfb, + 0x51, 0xfa, 0x13, 0xa9, 0x35, 0xa, 0xf7, 0xb0, 0x36, 0x15, 0xf9, 0xc8, + 0x7, 0xf7, 0x2, 0x91, 0xbd, 0xdb, 0x1e, 0xd6, 0xa9, 0x40, 0x6, 0xfb, + 0x2, 0x58, 0x6e, 0xfb, 0x35, 0x1f, 0xfd, 0xc8, 0x7, 0xe, 0x2d, 0xa, + 0xf7, 0x7f, 0x6, 0xf7, 0x2d, 0x4c, 0xde, 0xfb, 0x1c, 0xb2, 0x1e, 0xf7, + 0x1c, 0xb2, 0xca, 0xde, 0xf7, 0x2d, 0x1a, 0xf7, 0x7f, 0x40, 0xfb, 0x7f, + 0x7, 0x27, 0x67, 0xfb, 0x7, 0xfb, 0x2d, 0x5e, 0x1e, 0x6d, 0x7, 0xf7, + 0x2d, 0x5e, 0xaf, 0xfb, 0x7, 0x27, 0x1a, 0xe, 0x53, 0xa, 0xf7, 0x65, + 0xfa, 0x3b, 0x15, 0xfd, 0xcc, 0x7, 0xfb, 0x35, 0xb4, 0x72, 0xf7, 0x2, + 0x1e, 0xe0, 0xa9, 0x36, 0x6, 0x3b, 0x8f, 0xb9, 0xf7, 0x2, 0x1f, 0xf9, + 0xcc, 0x7, 0xe, 0x2d, 0xa, 0xfa, 0x90, 0x40, 0x6, 0xe, 0x8e, 0x33, + 0xfa, 0xbb, 0x1, 0xf7, 0xc8, 0xd1, 0x3, 0xf7, 0xc8, 0x33, 0x15, 0xd1, + 0xfa, 0xbb, 0x45, 0x6, 0xe, 0x3f, 0xa, 0xf8, 0x12, 0xdf, 0x3, 0xf8, + 0x12, 0xfb, 0xb9, 0x15, 0xdf, 0xf8, 0x38, 0x6, 0xf8, 0x8e, 0xfb, 0x60, + 0xf7, 0x58, 0xfb, 0x57, 0xec, 0x1e, 0x7e, 0x81, 0x5, 0xf7, 0x72, 0xfb, + 0x1f, 0xf5, 0xfb, 0xbf, 0xfb, 0xf3, 0x1a, 0xe, 0xfb, 0xbf, 0x36, 0xfa, + 0x86, 0x1, 0xf8, 0x12, 0xdf, 0x3, 0xf8, 0x12, 0x54, 0xa, 0x3f, 0xa, + 0xf8, 0x12, 0xdf, 0x3, 0xc1, 0xfb, 0xaf, 0x15, 0x98, 0x81, 0x5, 0xf7, + 0x57, 0xec, 0xf7, 0x60, 0xf7, 0x5d, 0xf8, 0x8e, 0x1a, 0xf8, 0x33, 0x37, + 0xfc, 0x33, 0x7, 0xfb, 0xf3, 0x21, 0xfb, 0xc4, 0xfb, 0x72, 0xfb, 0x1f, + 0x1e, 0xe, 0xfb, 0xbf, 0xfa, 0x9, 0xb4, 0x1, 0xf7, 0xb9, 0xd9, 0x3, + 0xf7, 0xb9, 0x3b, 0x15, 0xd9, 0xfa, 0x82, 0xfb, 0xf1, 0x62, 0xf7, 0x1b, + 0x6, 0xf7, 0x11, 0x96, 0x80, 0xfb, 0x11, 0x1f, 0xe, 0xfb, 0xbf, 0x3c, + 0xfa, 0x80, 0x1, 0xf7, 0xba, 0xd8, 0x3, 0xf7, 0xba, 0x3c, 0x15, 0xd8, + 0xfa, 0x80, 0x3e, 0x6, 0xe, 0xfb, 0xbf, 0x3b, 0xb4, 0x1, 0xf7, 0xba, + 0xd8, 0x3, 0xa1, 0x64, 0x15, 0x62, 0xf7, 0xf1, 0xfa, 0x82, 0x3e, 0xfd, + 0xcf, 0x7, 0xfb, 0x13, 0x79, 0x80, 0xfb, 0x11, 0x1e, 0xe, 0xfb, 0x51, + 0xfa, 0x13, 0xa9, 0x2e, 0xa, 0xf9, 0xc8, 0x6, 0xf7, 0x2c, 0x74, 0xb1, + 0xfb, 0x19, 0x1e, 0x3b, 0x6d, 0xdb, 0x6, 0xd1, 0x96, 0x5f, 0xfb, 0x8, + 0x1f, 0xe, 0x2d, 0xa, 0xf7, 0x80, 0x6, 0xef, 0xaf, 0xf7, 0x6, 0xf7, + 0x2d, 0xb8, 0x1e, 0xa9, 0x7, 0xfb, 0x2d, 0xb8, 0x67, 0xf7, 0x6, 0xef, + 0x1a, 0xf7, 0x80, 0x40, 0xfb, 0x80, 0x7, 0xfb, 0x2d, 0xca, 0x39, 0xf7, + 0x1c, 0x64, 0x1e, 0xfb, 0x1c, 0x64, 0x4c, 0x39, 0xfb, 0x2d, 0x1a, 0xe, + 0x53, 0xa, 0xbb, 0x5e, 0x15, 0x6d, 0xdb, 0x7, 0xf7, 0x16, 0xa5, 0xb3, + 0xf7, 0x2b, 0x1f, 0xf9, 0xc7, 0x40, 0xfd, 0xc7, 0x7, 0xfb, 0x16, 0x80, + 0x6c, 0x45, 0x1e, 0xe, 0xf6, 0x9d, 0x76, 0xf8, 0xff, 0xf7, 0x54, 0x1, + 0xf9, 0x71, 0xf7, 0x69, 0x15, 0x3f, 0xa0, 0x65, 0xd3, 0xd4, 0x1a, 0xce, + 0xa9, 0xcd, 0xca, 0xa9, 0x1e, 0xbf, 0x6e, 0x41, 0xa4, 0x52, 0x1b, 0x6e, + 0x76, 0x84, 0x83, 0x76, 0x1f, 0x83, 0x76, 0x75, 0x83, 0x6e, 0x1b, 0x72, + 0x75, 0x93, 0x93, 0x76, 0x1f, 0x94, 0x74, 0x75, 0x94, 0x70, 0x1b, 0xfb, + 0x3, 0x25, 0x2b, 0xfb, 0x21, 0xfb, 0x1a, 0xd2, 0xfb, 0x92, 0xf7, 0x37, + 0xa5, 0x9e, 0x96, 0x94, 0xa0, 0x1f, 0x92, 0x9b, 0x9b, 0x91, 0xa0, 0x1b, + 0xa1, 0x9b, 0x85, 0x85, 0x9a, 0x1f, 0x82, 0xa1, 0x9d, 0x7f, 0xa7, 0x1b, + 0xe1, 0xb5, 0xe2, 0xf7, 0x15, 0xd6, 0x1f, 0xfb, 0xdb, 0xf8, 0x27, 0x15, + 0xe6, 0x88, 0xe5, 0xf0, 0x76, 0xe9, 0x8, 0x3c, 0x35, 0x2b, 0x2b, 0x90, + 0x1f, 0xe, 0x78, 0x9e, 0xf8, 0x7b, 0x98, 0xf7, 0x41, 0x9a, 0x6, 0x1e, + 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xe7, 0xa, 0xe0, 0xb, 0x9f, 0xd3, + 0xc, 0xc, 0xf8, 0xb9, 0x14, 0xf9, 0x3f, 0x15, 0xab, 0x13, 0x0, 0x3a, + 0x2, 0x0, 0x1, 0x0, 0x13, 0x0, 0x2d, 0x0, 0x30, 0x0, 0x47, 0x0, + 0x4f, 0x0, 0x56, 0x0, 0x5d, 0x0, 0x61, 0x0, 0x67, 0x0, 0x7c, 0x0, + 0x82, 0x0, 0x8b, 0x0, 0xa6, 0x0, 0xae, 0x0, 0xb4, 0x0, 0xba, 0x0, + 0xc7, 0x0, 0xce, 0x0, 0xe3, 0x0, 0xed, 0x0, 0xf6, 0x0, 0xfc, 0x1, + 0xa, 0x1, 0xe, 0x1, 0x19, 0x1, 0x1c, 0x1, 0x23, 0x1, 0x2a, 0x1, + 0x31, 0x1, 0x40, 0x1, 0x4d, 0x1, 0x56, 0x1, 0x5f, 0x1, 0x66, 0x1, + 0x6d, 0x1, 0x72, 0x1, 0x77, 0x1, 0x7c, 0x1, 0x88, 0x1, 0x8e, 0x1, + 0x99, 0x1, 0xa0, 0x1, 0xa7, 0x1, 0xac, 0x1, 0xb6, 0x1, 0xc0, 0x1, + 0xca, 0x1, 0xce, 0x1, 0xd8, 0x1, 0xe2, 0x1, 0xec, 0x1, 0xf3, 0x1, + 0xfb, 0x2, 0x4, 0x2, 0x9, 0x2, 0x12, 0x2, 0x19, 0x2, 0x1f, 0x6c, + 0xa4, 0x72, 0xaa, 0xaa, 0xa4, 0xa4, 0xaa, 0xaa, 0x72, 0xa4, 0x6c, 0x6c, + 0x72, 0x72, 0x6c, 0x1e, 0xb, 0x2b, 0xa, 0xf7, 0x53, 0xf7, 0x2e, 0xf7, + 0x2e, 0x4b, 0xa, 0xfb, 0x2e, 0xf7, 0x2e, 0xfb, 0x53, 0xfb, 0x53, 0xfb, + 0x2e, 0xfb, 0x2e, 0xfb, 0x53, 0x1e, 0xb, 0x20, 0xa, 0xe, 0x15, 0x21, + 0xa, 0xb3, 0x16, 0xf7, 0x3c, 0xf7, 0x1d, 0x43, 0xa, 0xf7, 0x3c, 0xf7, + 0x1d, 0x34, 0xa, 0x34, 0xa, 0x43, 0xa, 0x1e, 0xe, 0x16, 0xf7, 0xb0, + 0x9d, 0x6, 0x2a, 0xa, 0xb, 0x2f, 0xa, 0xfc, 0x7d, 0x27, 0xa, 0xb, + 0x7, 0x3c, 0xa, 0xfc, 0x7d, 0x39, 0xa, 0x7, 0x28, 0xa, 0xb, 0x54, + 0x68, 0x78, 0x54, 0x1e, 0xb, 0x6d, 0xa4, 0x72, 0xaa, 0x1e, 0xa9, 0x8c, + 0xa5, 0xa3, 0xaa, 0x1a, 0xa9, 0x71, 0xa5, 0x6d, 0x6c, 0x72, 0x71, 0x6c, + 0x1e, 0xb, 0x54, 0x68, 0x9e, 0xc2, 0x1f, 0xb, 0xfb, 0x53, 0xf7, 0x2e, + 0xfb, 0x2e, 0xf7, 0x53, 0xb, 0x1e, 0xb3, 0x8a, 0x15, 0xf7, 0x3d, 0xf7, + 0x1c, 0x43, 0xa, 0xf7, 0x3d, 0xf7, 0x1d, 0xfb, 0x1d, 0xfb, 0x3c, 0xfb, + 0x3d, 0xfb, 0x1d, 0xfb, 0x1c, 0xfb, 0x3c, 0xb, 0xfb, 0x51, 0x36, 0xfa, + 0x90, 0x2e, 0xa, 0xb, 0x44, 0xa, 0x36, 0x15, 0xd6, 0xb, 0xc2, 0xae, + 0x78, 0x54, 0x1f, 0xb, 0xf7, 0x17, 0xf7, 0x35, 0xf7, 0x35, 0xf7, 0x17, + 0x56, 0xa, 0x41, 0xa, 0xb, 0xc2, 0xae, 0x9e, 0xc2, 0x1e, 0x9d, 0xb, + 0x82, 0xb9, 0x1b, 0xc5, 0xc7, 0xb4, 0xa8, 0x9a, 0x1f, 0x68, 0xac, 0x5, + 0x7c, 0x7d, 0x72, 0x66, 0x53, 0x1b, 0x62, 0x66, 0xb, 0x1e, 0xfb, 0xa9, + 0x79, 0x6, 0x25, 0xa, 0xf7, 0x56, 0xb, 0xfb, 0x1d, 0xfb, 0x3c, 0xfb, + 0x3c, 0xfb, 0x1d, 0xb, 0x1, 0xf7, 0x65, 0xd6, 0x3, 0xb, 0xf7, 0x5c, + 0x40, 0xa, 0x6f, 0xa1, 0x6c, 0x7b, 0x7b, 0x85, 0x81, 0x87, 0x1e, 0xb, + 0x15, 0x20, 0xa, 0xb, 0x88, 0x85, 0x8b, 0x89, 0x8a, 0x1a, 0x7c, 0x9a, + 0x85, 0x96, 0xb, 0x27, 0xa, 0xe, 0xf8, 0xa2, 0xc2, 0xfc, 0xa2, 0x6, + 0xb, 0xa0, 0x76, 0xf9, 0x35, 0x77, 0x1, 0xb, 0x31, 0xa, 0xfb, 0xb0, + 0x45, 0xa, 0xb, 0x8b, 0xc2, 0xf8, 0xdc, 0x77, 0x1, 0xa8, 0x16, 0xf8, + 0x85, 0xc2, 0xfc, 0x85, 0x6, 0xb, 0xf8, 0x45, 0xf7, 0x5b, 0x5, 0xc9, + 0x7, 0xfc, 0x85, 0xfb, 0x7a, 0x5, 0xe, 0xfb, 0xbf, 0xfb, 0xb9, 0x1c, + 0x4, 0xc3, 0x1, 0xb, 0x5, 0x8f, 0x8f, 0x8d, 0x95, 0x91, 0x1a, 0xa8, + 0xb, 0xfb, 0x17, 0xfb, 0x35, 0xfb, 0x35, 0xb, 0xf8, 0xa0, 0xc2, 0xfc, + 0xa0, 0x6, 0xb, 0xf7, 0x1d, 0xf7, 0x3c, 0xb, 0x35, 0xa, 0xf7, 0x65, + 0xb, 0x79, 0x7, 0x2f, 0xa, 0xb, 0xf7, 0xc4, 0x91, 0x76, 0xf7, 0x7f, + 0xc3, 0xf7, 0x7f, 0x77, 0x1, 0xb, 0xc2, 0xf7, 0xfc, 0xc2, 0x1, 0xb, + 0xf7, 0x52, 0xfb, 0x2f, 0xf7, 0x2f, 0xfb, 0x52, 0xfb, 0x53, 0xb, 0x77, + 0x1, 0xf7, 0xac, 0xc3, 0x3, 0xb, 0x7, 0x74, 0x77, 0x7c, 0x6c, 0x1e, + 0xb, 0xf7, 0x53, 0xf7, 0x53, 0xb, 0xfb, 0xf6, 0xfb, 0x45, 0x76, 0xfa, + 0x44, 0x77, 0x1, 0xb, 0xfb, 0x5f, 0xfb, 0x4b, 0xa4, 0xf9, 0xba, 0xa4, + 0x1, 0xb, 0xfb, 0xf2, 0xfb, 0x2f, 0xa4, 0xf9, 0x9f, 0xa4, 0x1, 0xb, + 0x15, 0x2b, 0xa, 0xb, 0xfb, 0xf2, 0xfb, 0x3e, 0x76, 0xf9, 0xf4, 0x77, + 0x1, 0xb, 0xc9, 0x7, 0xfc, 0x85, 0xf7, 0x7a, 0x5, 0x4d, 0x7, 0xb, + 0x67, 0xa8, 0x6e, 0xaf, 0xaf, 0xa7, 0xa8, 0xaf, 0xaf, 0xb, 0xfb, 0x51, + 0x40, 0xa9, 0x35, 0xa, 0xb, 0x36, 0x15, 0xdf, 0xfa, 0x86, 0x37, 0x6, + 0xe, 0x1, 0xb3, 0xc2, 0xf8, 0xda, 0xc2, 0x3, 0xb3, 0xb, 0x41, 0xa, + 0xfb, 0x17, 0xb, 0x15, 0xa9, 0xa6, 0xaa, 0x9f, 0xb8, 0x1b, 0xaa, 0xb, + 0x8a, 0x1f, 0xfc, 0x29, 0x54, 0x6, 0xe, 0x90, 0x90, 0x8f, 0x8e, 0x8d, + 0xb}; diff --git a/core/fxge/fontdata/chromefontdata/chromefontdata.h b/core/fxge/fontdata/chromefontdata/chromefontdata.h new file mode 100644 index 0000000000..3cd8d1a8ca --- /dev/null +++ b/core/fxge/fontdata/chromefontdata/chromefontdata.h @@ -0,0 +1,35 @@ +// Copyright 2015 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_FONTDATA_CHROMEFONTDATA_CHROMEFONTDATA_H_ +#define CORE_FXGE_FONTDATA_CHROMEFONTDATA_CHROMEFONTDATA_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +extern const unsigned char g_FoxitFixedItalicFontData[18746]; +extern const unsigned char g_FoxitFixedFontData[17597]; +extern const unsigned char g_FoxitSansItalicFontData[16339]; +extern const unsigned char g_FoxitSansFontData[15025]; +extern const unsigned char g_FoxitSerifItalicFontData[21227]; +extern const unsigned char g_FoxitSerifFontData[19469]; +extern const unsigned char g_FoxitFixedBoldItalicFontData[19151]; +extern const unsigned char g_FoxitFixedBoldFontData[18055]; +extern const unsigned char g_FoxitSansBoldItalicFontData[16418]; +extern const unsigned char g_FoxitSansBoldFontData[16344]; +extern const unsigned char g_FoxitSerifBoldItalicFontData[20733]; +extern const unsigned char g_FoxitSerifBoldFontData[19395]; +extern const unsigned char g_FoxitSymbolFontData[16729]; +extern const unsigned char g_FoxitDingbatsFontData[29513]; +extern const unsigned char g_FoxitSerifMMFontData[113417]; +extern const unsigned char g_FoxitSansMMFontData[66919]; + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // CORE_FXGE_FONTDATA_CHROMEFONTDATA_CHROMEFONTDATA_H_ diff --git a/core/fxge/freetype/fx_freetype.cpp b/core/fxge/freetype/fx_freetype.cpp new file mode 100644 index 0000000000..2fc60e913e --- /dev/null +++ b/core/fxge/freetype/fx_freetype.cpp @@ -0,0 +1,171 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_freetype.h" + +#include "third_party/freetype/src/psnames/pstables.h" + +static int xyq_search_node(char* glyph_name, + int name_offset, + int table_offset, + wchar_t unicode) { + int i, count; + + // copy letters + while (1) { + glyph_name[name_offset] = ft_adobe_glyph_list[table_offset] & 0x7f; + name_offset++; + table_offset++; + if (!(ft_adobe_glyph_list[table_offset - 1] & 0x80)) + break; + } + glyph_name[name_offset] = 0; + + // get child count + count = ft_adobe_glyph_list[table_offset] & 0x7f; + + // check if we have value for this node + if (ft_adobe_glyph_list[table_offset] & 0x80) { + unsigned short thiscode = ft_adobe_glyph_list[table_offset + 1] * 256 + + ft_adobe_glyph_list[table_offset + 2]; + if (thiscode == (unsigned short)unicode) // found it! + return 1; + table_offset += 3; + } else { + table_offset++; + } + + // now search in sub-nodes + if (count == 0) + return 0; + for (i = 0; i < count; i++) { + int child_offset = ft_adobe_glyph_list[table_offset + i * 2] * 256 + + ft_adobe_glyph_list[table_offset + i * 2 + 1]; + if (xyq_search_node(glyph_name, name_offset, child_offset, unicode)) + // found in child + return 1; + } + return 0; +} + +#define VARIANT_BIT 0x80000000UL + +int FXFT_unicode_from_adobe_name(const char* glyph_name) { + /* If the name begins with `uni', then the glyph name may be a */ + /* hard-coded unicode character code. */ + if (glyph_name[0] == 'u' && glyph_name[1] == 'n' && glyph_name[2] == 'i') { + /* determine whether the next four characters following are */ + /* hexadecimal. */ + + /* XXX: Add code to deal with ligatures, i.e. glyph names like */ + /* `uniXXXXYYYYZZZZ'... */ + + FT_Int count; + FT_UInt32 value = 0; + const char* p = glyph_name + 3; + + for (count = 4; count > 0; count--, p++) { + char c = *p; + unsigned int d; + + d = (unsigned char)c - '0'; + if (d >= 10) { + d = (unsigned char)c - 'A'; + if (d >= 6) + d = 16; + else + d += 10; + } + + /* Exit if a non-uppercase hexadecimal character was found */ + /* -- this also catches character codes below `0' since such */ + /* negative numbers cast to `unsigned int' are far too big. */ + if (d >= 16) + break; + + value = (value << 4) + d; + } + + /* there must be exactly four hex digits */ + if (count == 0) { + if (*p == '\0') + return value; + if (*p == '.') + return (FT_UInt32)(value | VARIANT_BIT); + } + } + + /* If the name begins with `u', followed by four to six uppercase */ + /* hexadecimal digits, it is a hard-coded unicode character code. */ + if (glyph_name[0] == 'u') { + FT_Int count; + FT_UInt32 value = 0; + const char* p = glyph_name + 1; + + for (count = 6; count > 0; count--, p++) { + char c = *p; + unsigned int d; + + d = (unsigned char)c - '0'; + if (d >= 10) { + d = (unsigned char)c - 'A'; + if (d >= 6) + d = 16; + else + d += 10; + } + + if (d >= 16) + break; + + value = (value << 4) + d; + } + + if (count <= 2) { + if (*p == '\0') + return value; + if (*p == '.') + return (FT_UInt32)(value | VARIANT_BIT); + } + } + + /* Look for a non-initial dot in the glyph name in order to */ + /* find variants like `A.swash', `e.final', etc. */ + { + const char* p = glyph_name; + const char* dot = NULL; + + for (; *p; p++) { + if (*p == '.' && p > glyph_name) { + dot = p; + break; + } + } + + /* now look up the glyph in the Adobe Glyph List */ + if (!dot) + return (FT_UInt32)ft_get_adobe_glyph_index(glyph_name, p); + else + return (FT_UInt32)(ft_get_adobe_glyph_index(glyph_name, dot) | + VARIANT_BIT); + } +} + +void FXFT_adobe_name_from_unicode(char* glyph_name, wchar_t unicode) { + int i, count; + + // start from top level node + count = ft_adobe_glyph_list[1]; + for (i = 0; i < count; i++) { + int child_offset = + ft_adobe_glyph_list[i * 2 + 2] * 256 + ft_adobe_glyph_list[i * 2 + 3]; + if (xyq_search_node(glyph_name, 0, child_offset, unicode)) + return; + } + + // failed, clear the buffer + glyph_name[0] = 0; +} diff --git a/core/fxge/ge/fx_ge.cpp b/core/fxge/ge/fx_ge.cpp new file mode 100644 index 0000000000..7ae9942dec --- /dev/null +++ b/core/fxge/ge/fx_ge.cpp @@ -0,0 +1,60 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +#include "core/fxge/ge/fx_text_int.h" + +static CFX_GEModule* g_pGEModule = NULL; +CFX_GEModule::CFX_GEModule(const char** pUserFontPaths) { + m_pFontCache = NULL; + m_pFontMgr = NULL; + m_FTLibrary = NULL; + m_pCodecModule = NULL; + m_pPlatformData = NULL; + m_pUserFontPaths = pUserFontPaths; +} +CFX_GEModule::~CFX_GEModule() { + delete m_pFontCache; + m_pFontCache = NULL; + delete m_pFontMgr; + m_pFontMgr = NULL; + DestroyPlatform(); +} +CFX_GEModule* CFX_GEModule::Get() { + return g_pGEModule; +} +void CFX_GEModule::Create(const char** userFontPaths) { + g_pGEModule = new CFX_GEModule(userFontPaths); + g_pGEModule->m_pFontMgr = new CFX_FontMgr; + g_pGEModule->InitPlatform(); + g_pGEModule->SetTextGamma(2.2f); +} +void CFX_GEModule::Use(CFX_GEModule* pModule) { + g_pGEModule = pModule; +} +void CFX_GEModule::Destroy() { + delete g_pGEModule; + g_pGEModule = NULL; +} +CFX_FontCache* CFX_GEModule::GetFontCache() { + if (!m_pFontCache) { + m_pFontCache = new CFX_FontCache(); + } + return m_pFontCache; +} +void CFX_GEModule::SetTextGamma(FX_FLOAT gammaValue) { + gammaValue /= 2.2f; + int i = 0; + while (i < 256) { + m_GammaValue[i] = + (uint8_t)(FXSYS_pow((FX_FLOAT)i / 255, gammaValue) * 255.0f + 0.5f); + i++; + } +} +const uint8_t* CFX_GEModule::GetTextGammaTable() { + return m_GammaValue; +} diff --git a/core/fxge/ge/fx_ge_device.cpp b/core/fxge/ge/fx_ge_device.cpp new file mode 100644 index 0000000000..b8ddfec841 --- /dev/null +++ b/core/fxge/ge/fx_ge_device.cpp @@ -0,0 +1,474 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +CFX_RenderDevice::CFX_RenderDevice() { + m_pDeviceDriver = NULL; + m_pBitmap = NULL; +} +CFX_RenderDevice::~CFX_RenderDevice() { + delete m_pDeviceDriver; +} +void CFX_RenderDevice::SetDeviceDriver(IFX_RenderDeviceDriver* pDriver) { + delete m_pDeviceDriver; + m_pDeviceDriver = pDriver; + InitDeviceInfo(); +} +void CFX_RenderDevice::InitDeviceInfo() { + m_Width = m_pDeviceDriver->GetDeviceCaps(FXDC_PIXEL_WIDTH); + m_Height = m_pDeviceDriver->GetDeviceCaps(FXDC_PIXEL_HEIGHT); + m_bpp = m_pDeviceDriver->GetDeviceCaps(FXDC_BITS_PIXEL); + m_RenderCaps = m_pDeviceDriver->GetDeviceCaps(FXDC_RENDER_CAPS); + m_DeviceClass = m_pDeviceDriver->GetDeviceCaps(FXDC_DEVICE_CLASS); + if (!m_pDeviceDriver->GetClipBox(&m_ClipBox)) { + m_ClipBox.left = 0; + m_ClipBox.top = 0; + m_ClipBox.right = m_Width; + m_ClipBox.bottom = m_Height; + } +} +FX_BOOL CFX_RenderDevice::StartRendering() { + return m_pDeviceDriver->StartRendering(); +} +void CFX_RenderDevice::EndRendering() { + m_pDeviceDriver->EndRendering(); +} +void CFX_RenderDevice::SaveState() { + m_pDeviceDriver->SaveState(); +} +void CFX_RenderDevice::RestoreState(FX_BOOL bKeepSaved) { + m_pDeviceDriver->RestoreState(bKeepSaved); + UpdateClipBox(); +} +int CFX_RenderDevice::GetDeviceCaps(int caps_id) const { + return m_pDeviceDriver->GetDeviceCaps(caps_id); +} +CFX_Matrix CFX_RenderDevice::GetCTM() const { + return m_pDeviceDriver->GetCTM(); +} +FX_BOOL CFX_RenderDevice::CreateCompatibleBitmap(CFX_DIBitmap* pDIB, + int width, + int height) const { + if (m_RenderCaps & FXRC_CMYK_OUTPUT) { + return pDIB->Create(width, height, m_RenderCaps & FXRC_ALPHA_OUTPUT + ? FXDIB_Cmyka + : FXDIB_Cmyk); + } + if (m_RenderCaps & FXRC_BYTEMASK_OUTPUT) { + return pDIB->Create(width, height, FXDIB_8bppMask); + } +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + return pDIB->Create(width, height, m_RenderCaps & FXRC_ALPHA_OUTPUT + ? FXDIB_Argb + : FXDIB_Rgb32); +#else + return pDIB->Create( + width, height, m_RenderCaps & FXRC_ALPHA_OUTPUT ? FXDIB_Argb : FXDIB_Rgb); +#endif +} +FX_BOOL CFX_RenderDevice::SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) { + if (!m_pDeviceDriver->SetClip_PathFill(pPathData, pObject2Device, + fill_mode)) { + return FALSE; + } + UpdateClipBox(); + return TRUE; +} +FX_BOOL CFX_RenderDevice::SetClip_PathStroke( + const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) { + if (!m_pDeviceDriver->SetClip_PathStroke(pPathData, pObject2Device, + pGraphState)) { + return FALSE; + } + UpdateClipBox(); + return TRUE; +} +FX_BOOL CFX_RenderDevice::SetClip_Rect(const FX_RECT& rect) { + CFX_PathData path; + path.AppendRect(rect.left, rect.bottom, rect.right, rect.top); + if (!SetClip_PathFill(&path, nullptr, FXFILL_WINDING)) + return FALSE; + + UpdateClipBox(); + return TRUE; +} +void CFX_RenderDevice::UpdateClipBox() { + if (m_pDeviceDriver->GetClipBox(&m_ClipBox)) { + return; + } + m_ClipBox.left = 0; + m_ClipBox.top = 0; + m_ClipBox.right = m_Width; + m_ClipBox.bottom = m_Height; +} +FX_BOOL CFX_RenderDevice::DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) { + uint8_t fill_alpha, stroke_alpha; + if (FXGETFLAG_COLORTYPE(alpha_flag)) { + fill_alpha = FXGETFLAG_ALPHA_FILL(alpha_flag); + stroke_alpha = FXGETFLAG_ALPHA_STROKE(alpha_flag); + } else { + fill_alpha = FXARGB_A(fill_color); + stroke_alpha = FXARGB_A(stroke_color); + } + if ((fill_mode & 3) == 0) { + fill_alpha = 0; + } + if (!pGraphState) { + stroke_alpha = 0; + } + if (stroke_alpha == 0 && pPathData->GetPointCount() == 2) { + FX_PATHPOINT* pPoints = pPathData->GetPoints(); + FX_FLOAT x1, x2, y1, y2; + if (pObject2Device) { + pObject2Device->Transform(pPoints[0].m_PointX, pPoints[0].m_PointY, x1, + y1); + pObject2Device->Transform(pPoints[1].m_PointX, pPoints[1].m_PointY, x2, + y2); + } else { + x1 = pPoints[0].m_PointX; + y1 = pPoints[0].m_PointY; + x2 = pPoints[1].m_PointX; + y2 = pPoints[1].m_PointY; + } + DrawCosmeticLine(x1, y1, x2, y2, fill_color, fill_mode, alpha_flag, + pIccTransform, blend_type); + return TRUE; + } + if ((pPathData->GetPointCount() == 5 || pPathData->GetPointCount() == 4) && + stroke_alpha == 0) { + CFX_FloatRect rect_f; + if (!(fill_mode & FXFILL_RECT_AA) && + pPathData->IsRect(pObject2Device, &rect_f)) { + FX_RECT rect_i = rect_f.GetOutterRect(); + int width = (int)FXSYS_ceil(rect_f.right - rect_f.left); + if (width < 1) { + width = 1; + if (rect_i.left == rect_i.right) { + rect_i.right++; + } + } + int height = (int)FXSYS_ceil(rect_f.top - rect_f.bottom); + if (height < 1) { + height = 1; + if (rect_i.bottom == rect_i.top) { + rect_i.bottom++; + } + } + if (rect_i.Width() >= width + 1) { + if (rect_f.left - (FX_FLOAT)(rect_i.left) > + (FX_FLOAT)(rect_i.right) - rect_f.right) { + rect_i.left++; + } else { + rect_i.right--; + } + } + if (rect_i.Height() >= height + 1) { + if (rect_f.top - (FX_FLOAT)(rect_i.top) > + (FX_FLOAT)(rect_i.bottom) - rect_f.bottom) { + rect_i.top++; + } else { + rect_i.bottom--; + } + } + if (FillRect(&rect_i, fill_color, alpha_flag, pIccTransform, + blend_type)) { + return TRUE; + } + } + } + if ((fill_mode & 3) && stroke_alpha == 0 && !(fill_mode & FX_FILL_STROKE) && + !(fill_mode & FX_FILL_TEXT_MODE)) { + CFX_PathData newPath; + FX_BOOL bThin = FALSE; + if (pPathData->GetZeroAreaPath(newPath, (CFX_Matrix*)pObject2Device, bThin, + m_pDeviceDriver->GetDriverType())) { + CFX_GraphStateData graphState; + graphState.m_LineWidth = 0.0f; + FX_DWORD strokecolor = fill_color; + if (bThin) { + if (FXGETFLAG_COLORTYPE(alpha_flag)) { + FXSETFLAG_ALPHA_STROKE(alpha_flag, fill_alpha >> 2); + } else { + strokecolor = + (((fill_alpha >> 2) << 24) | (strokecolor & 0x00ffffff)); + } + } + CFX_Matrix* pMatrix = NULL; + if (pObject2Device && !pObject2Device->IsIdentity()) { + pMatrix = (CFX_Matrix*)pObject2Device; + } + int smooth_path = FX_ZEROAREA_FILL; + if (fill_mode & FXFILL_NOPATHSMOOTH) { + smooth_path |= FXFILL_NOPATHSMOOTH; + } + m_pDeviceDriver->DrawPath(&newPath, pMatrix, &graphState, 0, strokecolor, + smooth_path, alpha_flag, pIccTransform, + blend_type); + } + } + if ((fill_mode & 3) && fill_alpha && stroke_alpha < 0xff && + (fill_mode & FX_FILL_STROKE)) { + if (!(m_RenderCaps & FXRC_GET_BITS)) { + return FALSE; + } + CFX_FloatRect bbox; + if (pGraphState) { + bbox = pPathData->GetBoundingBox(pGraphState->m_LineWidth, + pGraphState->m_MiterLimit); + } else { + bbox = pPathData->GetBoundingBox(); + } + if (pObject2Device) { + bbox.Transform(pObject2Device); + } + CFX_Matrix ctm = GetCTM(); + FX_FLOAT fScaleX = FXSYS_fabs(ctm.a); + FX_FLOAT fScaleY = FXSYS_fabs(ctm.d); + FX_RECT rect = bbox.GetOutterRect(); + CFX_DIBitmap bitmap, Backdrop; + if (!CreateCompatibleBitmap(&bitmap, FXSYS_round(rect.Width() * fScaleX), + FXSYS_round(rect.Height() * fScaleY))) { + return FALSE; + } + if (bitmap.HasAlpha()) { + bitmap.Clear(0); + Backdrop.Copy(&bitmap); + } else { + if (!m_pDeviceDriver->GetDIBits(&bitmap, rect.left, rect.top, NULL)) { + return FALSE; + } + Backdrop.Copy(&bitmap); + } + CFX_FxgeDevice bitmap_device; + bitmap_device.Attach(&bitmap, 0, FALSE, &Backdrop, TRUE); + CFX_Matrix matrix; + if (pObject2Device) { + matrix = *pObject2Device; + } + matrix.TranslateI(-rect.left, -rect.top); + matrix.Concat(fScaleX, 0, 0, fScaleY, 0, 0); + if (!bitmap_device.GetDeviceDriver()->DrawPath( + pPathData, &matrix, pGraphState, fill_color, stroke_color, + fill_mode, alpha_flag, pIccTransform, blend_type)) { + return FALSE; + } + FX_RECT src_rect(0, 0, FXSYS_round(rect.Width() * fScaleX), + FXSYS_round(rect.Height() * fScaleY)); + return m_pDeviceDriver->SetDIBits(&bitmap, 0, &src_rect, rect.left, + rect.top, FXDIB_BLEND_NORMAL); + } + return m_pDeviceDriver->DrawPath(pPathData, pObject2Device, pGraphState, + fill_color, stroke_color, fill_mode, + alpha_flag, pIccTransform, blend_type); +} +FX_BOOL CFX_RenderDevice::SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + if (m_pDeviceDriver->SetPixel(x, y, color, alpha_flag, pIccTransform)) { + return TRUE; + } + FX_RECT rect(x, y, x + 1, y + 1); + return FillRect(&rect, color, alpha_flag, pIccTransform); +} +FX_BOOL CFX_RenderDevice::FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (m_pDeviceDriver->FillRect(pRect, fill_color, alpha_flag, pIccTransform, + blend_type)) { + return TRUE; + } + if (!(m_RenderCaps & FXRC_GET_BITS)) { + return FALSE; + } + CFX_DIBitmap bitmap; + if (!CreateCompatibleBitmap(&bitmap, pRect->Width(), pRect->Height())) { + return FALSE; + } + if (!m_pDeviceDriver->GetDIBits(&bitmap, pRect->left, pRect->top)) { + return FALSE; + } + if (!bitmap.CompositeRect(0, 0, pRect->Width(), pRect->Height(), fill_color, + alpha_flag, pIccTransform)) { + return FALSE; + } + FX_RECT src_rect(0, 0, pRect->Width(), pRect->Height()); + m_pDeviceDriver->SetDIBits(&bitmap, 0, &src_rect, pRect->left, pRect->top, + FXDIB_BLEND_NORMAL); + return TRUE; +} +FX_BOOL CFX_RenderDevice::DrawCosmeticLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_DWORD color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (((m_RenderCaps & FXRC_ALPHA_PATH) && + (FXGETFLAG_COLORTYPE(alpha_flag) && + FXGETFLAG_ALPHA_FILL(alpha_flag) == 0xff)) || + color >= 0xff000000) { + if (m_pDeviceDriver->DrawCosmeticLine(x1, y1, x2, y2, color, alpha_flag, + pIccTransform, blend_type)) { + return TRUE; + } + } + CFX_GraphStateData graph_state; + CFX_PathData path; + path.SetPointCount(2); + path.SetPoint(0, x1, y1, FXPT_MOVETO); + path.SetPoint(1, x2, y2, FXPT_LINETO); + return m_pDeviceDriver->DrawPath(&path, NULL, &graph_state, 0, color, + fill_mode, alpha_flag, pIccTransform, + blend_type); +} +FX_BOOL CFX_RenderDevice::GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform) { + if (!(m_RenderCaps & FXRC_GET_BITS)) { + return FALSE; + } + return m_pDeviceDriver->GetDIBits(pBitmap, left, top, pIccTransform); +} +CFX_DIBitmap* CFX_RenderDevice::GetBackDrop() { + return m_pDeviceDriver->GetBackDrop(); +} +FX_BOOL CFX_RenderDevice::SetDIBits(const CFX_DIBSource* pBitmap, + int left, + int top, + int blend_mode, + void* pIccTransform) { + ASSERT(!pBitmap->IsAlphaMask()); + CFX_Matrix ctm = GetCTM(); + FX_FLOAT fScaleX = FXSYS_fabs(ctm.a); + FX_FLOAT fScaleY = FXSYS_fabs(ctm.d); + FX_RECT dest_rect(left, top, + FXSYS_round(left + pBitmap->GetWidth() / fScaleX), + FXSYS_round(top + pBitmap->GetHeight() / fScaleY)); + dest_rect.Intersect(m_ClipBox); + if (dest_rect.IsEmpty()) { + return TRUE; + } + FX_RECT src_rect(dest_rect.left - left, dest_rect.top - top, + dest_rect.left - left + dest_rect.Width(), + dest_rect.top - top + dest_rect.Height()); + src_rect.left = FXSYS_round(src_rect.left * fScaleX); + src_rect.top = FXSYS_round(src_rect.top * fScaleY); + src_rect.right = FXSYS_round(src_rect.right * fScaleX); + src_rect.bottom = FXSYS_round(src_rect.bottom * fScaleY); + if ((blend_mode != FXDIB_BLEND_NORMAL && !(m_RenderCaps & FXRC_BLEND_MODE)) || + (pBitmap->HasAlpha() && !(m_RenderCaps & FXRC_ALPHA_IMAGE))) { + if (!(m_RenderCaps & FXRC_GET_BITS)) { + return FALSE; + } + int bg_pixel_width = FXSYS_round(dest_rect.Width() * fScaleX); + int bg_pixel_height = FXSYS_round(dest_rect.Height() * fScaleY); + CFX_DIBitmap background; + if (!background.Create( + bg_pixel_width, bg_pixel_height, + (m_RenderCaps & FXRC_CMYK_OUTPUT) ? FXDIB_Cmyk : FXDIB_Rgb32)) { + return FALSE; + } + if (!m_pDeviceDriver->GetDIBits(&background, dest_rect.left, + dest_rect.top)) { + return FALSE; + } + if (!background.CompositeBitmap(0, 0, bg_pixel_width, bg_pixel_height, + pBitmap, src_rect.left, src_rect.top, + blend_mode, NULL, FALSE, pIccTransform)) { + return FALSE; + } + FX_RECT src_rect(0, 0, bg_pixel_width, bg_pixel_height); + return m_pDeviceDriver->SetDIBits(&background, 0, &src_rect, dest_rect.left, + dest_rect.top, FXDIB_BLEND_NORMAL); + } + return m_pDeviceDriver->SetDIBits(pBitmap, 0, &src_rect, dest_rect.left, + dest_rect.top, blend_mode, 0, + pIccTransform); +} +FX_BOOL CFX_RenderDevice::StretchDIBits(const CFX_DIBSource* pBitmap, + int left, + int top, + int dest_width, + int dest_height, + FX_DWORD flags, + void* pIccTransform, + int blend_mode) { + FX_RECT dest_rect(left, top, left + dest_width, top + dest_height); + FX_RECT clip_box = m_ClipBox; + clip_box.Intersect(dest_rect); + if (clip_box.IsEmpty()) { + return TRUE; + } + return m_pDeviceDriver->StretchDIBits(pBitmap, 0, left, top, dest_width, + dest_height, &clip_box, flags, 0, + pIccTransform, blend_mode); +} +FX_BOOL CFX_RenderDevice::SetBitMask(const CFX_DIBSource* pBitmap, + int left, + int top, + FX_DWORD argb, + int alpha_flag, + void* pIccTransform) { + FX_RECT src_rect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); + return m_pDeviceDriver->SetDIBits(pBitmap, argb, &src_rect, left, top, + FXDIB_BLEND_NORMAL, alpha_flag, + pIccTransform); +} +FX_BOOL CFX_RenderDevice::StretchBitMask(const CFX_DIBSource* pBitmap, + int left, + int top, + int dest_width, + int dest_height, + FX_DWORD argb, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform) { + FX_RECT dest_rect(left, top, left + dest_width, top + dest_height); + FX_RECT clip_box = m_ClipBox; + clip_box.Intersect(dest_rect); + return m_pDeviceDriver->StretchDIBits(pBitmap, argb, left, top, dest_width, + dest_height, &clip_box, flags, + alpha_flag, pIccTransform); +} +FX_BOOL CFX_RenderDevice::StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD argb, + const CFX_Matrix* pMatrix, + FX_DWORD flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_mode) { + return m_pDeviceDriver->StartDIBits(pBitmap, bitmap_alpha, argb, pMatrix, + flags, handle, alpha_flag, pIccTransform, + blend_mode); +} +FX_BOOL CFX_RenderDevice::ContinueDIBits(void* handle, IFX_Pause* pPause) { + return m_pDeviceDriver->ContinueDIBits(handle, pPause); +} +void CFX_RenderDevice::CancelDIBits(void* handle) { + m_pDeviceDriver->CancelDIBits(handle); +} diff --git a/core/fxge/ge/fx_ge_font.cpp b/core/fxge/ge/fx_ge_font.cpp new file mode 100644 index 0000000000..14783085ac --- /dev/null +++ b/core/fxge/ge/fx_ge_font.cpp @@ -0,0 +1,545 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge.h" + +#define EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em) + +#ifdef PDF_ENABLE_XFA +extern void _FPDFAPI_GetInternalFontData(int id1, + const uint8_t*& data, + FX_DWORD& size); +#endif // PDF_ENABLE_XFA + +namespace { + +#ifdef PDF_ENABLE_XFA +const FX_DWORD g_EncodingID[] = { + FXFM_ENCODING_MS_SYMBOL, FXFM_ENCODING_UNICODE, + FXFM_ENCODING_MS_SJIS, FXFM_ENCODING_MS_GB2312, + FXFM_ENCODING_MS_BIG5, FXFM_ENCODING_MS_WANSUNG, + FXFM_ENCODING_MS_JOHAB, FXFM_ENCODING_ADOBE_STANDARD, + FXFM_ENCODING_ADOBE_EXPERT, FXFM_ENCODING_ADOBE_CUSTOM, + FXFM_ENCODING_ADOBE_LATIN_1, FXFM_ENCODING_OLD_LATIN_2, + FXFM_ENCODING_APPLE_ROMAN, +}; + +CFX_UnicodeEncodingEx* _FXFM_CreateFontEncoding(CFX_Font* pFont, + FX_DWORD nEncodingID) { + if (FXFT_Select_Charmap(pFont->GetFace(), nEncodingID)) + return nullptr; + return new CFX_UnicodeEncodingEx(pFont, nEncodingID); +} +#endif // PDF_ENABLE_XFA + +FXFT_Face FT_LoadFont(const uint8_t* pData, int size) { + return CFX_GEModule::Get()->GetFontMgr()->GetFixedFace(pData, size, 0); +} + +} // namespace + +CFX_Font::CFX_Font() { + m_pSubstFont = NULL; + m_Face = NULL; + m_bEmbedded = FALSE; + m_bVertical = FALSE; + m_pFontData = NULL; + m_pFontDataAllocation = NULL; + m_dwSize = 0; + m_pGsubData = NULL; + m_pPlatformFont = NULL; + m_pPlatformFontCollection = NULL; + m_pDwFont = NULL; + m_hHandle = NULL; + m_bDwLoaded = FALSE; +#ifdef PDF_ENABLE_XFA + m_bLogic = FALSE; + m_pOwnedStream = NULL; +#endif // PDF_ENABLE_XFA +} + +#ifdef PDF_ENABLE_XFA +FX_BOOL CFX_Font::LoadClone(const CFX_Font* pFont) { + if (pFont == NULL) { + return FALSE; + } + m_bLogic = TRUE; + if (pFont->m_pSubstFont) { + m_pSubstFont = new CFX_SubstFont; + m_pSubstFont->m_Charset = pFont->m_pSubstFont->m_Charset; + m_pSubstFont->m_ExtHandle = pFont->m_pSubstFont->m_ExtHandle; + m_pSubstFont->m_SubstFlags = pFont->m_pSubstFont->m_SubstFlags; + m_pSubstFont->m_Weight = pFont->m_pSubstFont->m_Weight; + m_pSubstFont->m_Family = pFont->m_pSubstFont->m_Family; + m_pSubstFont->m_ItalicAngle = pFont->m_pSubstFont->m_ItalicAngle; + } + if (pFont->m_OtfFontData.GetSize()) { + m_OtfFontData.AttachData(pFont->m_OtfFontData.GetBuffer(), + pFont->m_OtfFontData.GetSize()); + } + m_Face = pFont->m_Face; + m_bEmbedded = pFont->m_bEmbedded; + m_bVertical = pFont->m_bVertical; + m_dwSize = pFont->m_dwSize; + m_pFontData = pFont->m_pFontData; + m_pGsubData = pFont->m_pGsubData; + m_pPlatformFont = pFont->m_pPlatformFont; + m_pPlatformFontCollection = pFont->m_pPlatformFontCollection; + m_pDwFont = pFont->m_pDwFont; + m_hHandle = pFont->m_hHandle; + m_bDwLoaded = pFont->m_bDwLoaded; + m_pOwnedStream = pFont->m_pOwnedStream; + return TRUE; +} +#endif // PDF_ENABLE_XFA + +CFX_Font::~CFX_Font() { + delete m_pSubstFont; + FX_Free(m_pFontDataAllocation); +#ifdef PDF_ENABLE_XFA + if (m_bLogic) { + m_OtfFontData.DetachBuffer(); + return; + } +#endif // PDF_ENABLE_XFA + if (m_Face) { +#ifndef PDF_ENABLE_XFA + if (FXFT_Get_Face_External_Stream(m_Face)) { + FXFT_Clear_Face_External_Stream(m_Face); + } +#endif // PDF_ENABLE_XFA + if (m_bEmbedded) { + DeleteFace(); + } else { + CFX_GEModule::Get()->GetFontMgr()->ReleaseFace(m_Face); + } + } +#ifdef PDF_ENABLE_XFA + FX_Free(m_pOwnedStream); +#endif // PDF_ENABLE_XFA + FX_Free(m_pGsubData); +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + ReleasePlatformResource(); +#endif +} +void CFX_Font::DeleteFace() { + FXFT_Done_Face(m_Face); + m_Face = NULL; +} +void CFX_Font::LoadSubst(const CFX_ByteString& face_name, + FX_BOOL bTrueType, + FX_DWORD flags, + int weight, + int italic_angle, + int CharsetCP, + FX_BOOL bVertical) { + m_bEmbedded = FALSE; + m_bVertical = bVertical; + m_pSubstFont = new CFX_SubstFont; + m_Face = CFX_GEModule::Get()->GetFontMgr()->FindSubstFont( + face_name, bTrueType, flags, weight, italic_angle, CharsetCP, + m_pSubstFont); +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if (m_pSubstFont->m_ExtHandle) { + m_pPlatformFont = m_pSubstFont->m_ExtHandle; + m_pSubstFont->m_ExtHandle = NULL; + } +#endif + if (m_Face) { + m_pFontData = FXFT_Get_Face_Stream_Base(m_Face); + m_dwSize = FXFT_Get_Face_Stream_Size(m_Face); + } +} +#ifdef PDF_ENABLE_XFA +extern "C" { +unsigned long _FTStreamRead(FXFT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count) { + if (count == 0) { + return 0; + } + IFX_FileRead* pFile = (IFX_FileRead*)stream->descriptor.pointer; + int res = pFile->ReadBlock(buffer, offset, count); + if (res) { + return count; + } + return 0; +} +void _FTStreamClose(FXFT_Stream stream) {} +}; +FX_BOOL _LoadFile(FXFT_Library library, + FXFT_Face* Face, + IFX_FileRead* pFile, + FXFT_Stream* stream, + int32_t faceIndex = 0) { + FXFT_Stream stream1 = (FXFT_Stream)FX_Alloc(uint8_t, sizeof(FXFT_StreamRec)); + stream1->base = NULL; + stream1->size = (unsigned long)pFile->GetSize(); + stream1->pos = 0; + stream1->descriptor.pointer = pFile; + stream1->close = _FTStreamClose; + stream1->read = _FTStreamRead; + FXFT_Open_Args args; + args.flags = FT_OPEN_STREAM; + args.stream = stream1; + if (FXFT_Open_Face(library, &args, faceIndex, Face)) { + FX_Free(stream1); + return FALSE; + } + if (stream) { + *stream = stream1; + } + return TRUE; +} + +FX_BOOL CFX_Font::LoadFile(IFX_FileRead* pFile, + int nFaceIndex, + int* pFaceCount) { + m_bEmbedded = FALSE; + + CFX_FontMgr* pFontMgr = CFX_GEModule::Get()->GetFontMgr(); + pFontMgr->InitFTLibrary(); + FXFT_Library library = pFontMgr->GetFTLibrary(); + + FXFT_Stream stream = nullptr; + if (!_LoadFile(library, &m_Face, pFile, &stream, nFaceIndex)) + return FALSE; + + if (pFaceCount) + *pFaceCount = (int)m_Face->num_faces; + m_pOwnedStream = stream; + FXFT_Set_Pixel_Sizes(m_Face, 0, 64); + return TRUE; +} +#endif // PDF_ENABLE_XFA + +int CFX_Font::GetGlyphWidth(FX_DWORD glyph_index) { + if (!m_Face) { + return 0; + } + if (m_pSubstFont && (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM)) { + AdjustMMParams(glyph_index, 0, 0); + } + int err = FXFT_Load_Glyph( + m_Face, glyph_index, + FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + if (err) { + return 0; + } + int width = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Glyph_HoriAdvance(m_Face)); + return width; +} + +FX_BOOL CFX_Font::LoadEmbedded(const uint8_t* data, FX_DWORD size) { + m_pFontDataAllocation = FX_Alloc(uint8_t, size); + FXSYS_memcpy(m_pFontDataAllocation, data, size); + m_Face = FT_LoadFont(m_pFontDataAllocation, size); + m_pFontData = m_pFontDataAllocation; + m_bEmbedded = TRUE; + m_dwSize = size; + return m_Face != NULL; +} + +FX_BOOL CFX_Font::IsTTFont() const { + if (!m_Face) + return FALSE; + return FXFT_Is_Face_TT_OT(m_Face) == FXFT_FACE_FLAG_SFNT; +} + +int CFX_Font::GetAscent() const { + if (!m_Face) + return 0; + return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_Ascender(m_Face)); +} + +int CFX_Font::GetDescent() const { + if (!m_Face) + return 0; + return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_Descender(m_Face)); +} + +FX_BOOL CFX_Font::GetGlyphBBox(FX_DWORD glyph_index, FX_RECT& bbox) { + if (!m_Face) + return FALSE; + + if (FXFT_Is_Face_Tricky(m_Face)) { + int error = FXFT_Set_Char_Size(m_Face, 0, 1000 * 64, 72, 72); + if (error) { + return FALSE; + } + error = FXFT_Load_Glyph(m_Face, glyph_index, + FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + if (error) { + return FALSE; + } + FXFT_BBox cbox; + FT_Glyph glyph; + error = FXFT_Get_Glyph(((FXFT_Face)m_Face)->glyph, &glyph); + if (error) { + return FALSE; + } + FXFT_Glyph_Get_CBox(glyph, FXFT_GLYPH_BBOX_PIXELS, &cbox); + int pixel_size_x = ((FXFT_Face)m_Face)->size->metrics.x_ppem, + pixel_size_y = ((FXFT_Face)m_Face)->size->metrics.y_ppem; + if (pixel_size_x == 0 || pixel_size_y == 0) { + bbox.left = cbox.xMin; + bbox.right = cbox.xMax; + bbox.top = cbox.yMax; + bbox.bottom = cbox.yMin; + } else { + bbox.left = cbox.xMin * 1000 / pixel_size_x; + bbox.right = cbox.xMax * 1000 / pixel_size_x; + bbox.top = cbox.yMax * 1000 / pixel_size_y; + bbox.bottom = cbox.yMin * 1000 / pixel_size_y; + } + if (bbox.top > FXFT_Get_Face_Ascender(m_Face)) { + bbox.top = FXFT_Get_Face_Ascender(m_Face); + } + if (bbox.bottom < FXFT_Get_Face_Descender(m_Face)) { + bbox.bottom = FXFT_Get_Face_Descender(m_Face); + } + FT_Done_Glyph(glyph); + return FXFT_Set_Pixel_Sizes(m_Face, 0, 64) == 0; + } + if (FXFT_Load_Glyph( + m_Face, glyph_index, + FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { + return FALSE; + } + int em = FXFT_Get_Face_UnitsPerEM(m_Face); + if (em == 0) { + bbox.left = FXFT_Get_Glyph_HoriBearingX(m_Face); + bbox.bottom = FXFT_Get_Glyph_HoriBearingY(m_Face); + bbox.top = bbox.bottom - FXFT_Get_Glyph_Height(m_Face); + bbox.right = bbox.left + FXFT_Get_Glyph_Width(m_Face); + } else { + bbox.left = FXFT_Get_Glyph_HoriBearingX(m_Face) * 1000 / em; + bbox.top = + (FXFT_Get_Glyph_HoriBearingY(m_Face) - FXFT_Get_Glyph_Height(m_Face)) * + 1000 / em; + bbox.right = + (FXFT_Get_Glyph_HoriBearingX(m_Face) + FXFT_Get_Glyph_Width(m_Face)) * + 1000 / em; + bbox.bottom = (FXFT_Get_Glyph_HoriBearingY(m_Face)) * 1000 / em; + } + return TRUE; +} + +FX_BOOL CFX_Font::IsItalic() const { + if (!m_Face) + return FALSE; + + FX_BOOL ret = FXFT_Is_Face_Italic(m_Face) == FXFT_STYLE_FLAG_ITALIC; + if (!ret) { + CFX_ByteString str(FXFT_Get_Face_Style_Name(m_Face)); + str.MakeLower(); + if (str.Find("italic") != -1) { + ret = TRUE; + } + } + return ret; +} + +FX_BOOL CFX_Font::IsBold() const { + if (!m_Face) + return FALSE; + return FXFT_Is_Face_Bold(m_Face) == FXFT_STYLE_FLAG_BOLD; +} + +FX_BOOL CFX_Font::IsFixedWidth() const { + if (!m_Face) + return FALSE; + return FXFT_Is_Face_fixedwidth(m_Face); +} + +CFX_WideString CFX_Font::GetPsName() const { + if (!m_Face) { + return CFX_WideString(); + } + CFX_WideString psName = + CFX_WideString::FromLocal(FXFT_Get_Postscript_Name(m_Face)); + if (psName.IsEmpty()) { + psName = CFX_WideString::FromLocal("Untitled"); + } + return psName; +} +CFX_ByteString CFX_Font::GetFamilyName() const { + if (!m_Face && !m_pSubstFont) { + return CFX_ByteString(); + } + if (m_Face) { + return CFX_ByteString(FXFT_Get_Face_Family_Name(m_Face)); + } + return m_pSubstFont->m_Family; +} +CFX_ByteString CFX_Font::GetFaceName() const { + if (!m_Face && !m_pSubstFont) { + return CFX_ByteString(); + } + if (m_Face) { + CFX_ByteString facename; + CFX_ByteString style = CFX_ByteString(FXFT_Get_Face_Style_Name(m_Face)); + facename = GetFamilyName(); + if (facename.IsEmpty()) { + facename = "Untitled"; + } + if (!style.IsEmpty() && style != "Regular") { + facename += " " + style; + } + return facename; + } + return m_pSubstFont->m_Family; +} +FX_BOOL CFX_Font::GetBBox(FX_RECT& bbox) { + if (!m_Face) { + return FALSE; + } + int em = FXFT_Get_Face_UnitsPerEM(m_Face); + if (em == 0) { + bbox.left = FXFT_Get_Face_xMin(m_Face); + bbox.bottom = FXFT_Get_Face_yMax(m_Face); + bbox.top = FXFT_Get_Face_yMin(m_Face); + bbox.right = FXFT_Get_Face_xMax(m_Face); + } else { + bbox.left = FXFT_Get_Face_xMin(m_Face) * 1000 / em; + bbox.top = FXFT_Get_Face_yMin(m_Face) * 1000 / em; + bbox.right = FXFT_Get_Face_xMax(m_Face) * 1000 / em; + bbox.bottom = FXFT_Get_Face_yMax(m_Face) * 1000 / em; + } + return TRUE; +} + +int CFX_Font::GetHeight() const { + if (!m_Face) + return 0; + + return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_Height(m_Face)); +} + +int CFX_Font::GetMaxAdvanceWidth() const { + if (!m_Face) + return 0; + + return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_MaxAdvanceWidth(m_Face)); +} + +int CFX_Font::GetULPos() const { + if (!m_Face) + return 0; + + return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_UnderLinePosition(m_Face)); +} + +int CFX_Font::GetULthickness() const { + if (!m_Face) + return 0; + + return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), + FXFT_Get_Face_UnderLineThickness(m_Face)); +} + +CFX_UnicodeEncoding::CFX_UnicodeEncoding(CFX_Font* pFont) : m_pFont(pFont) {} + +CFX_UnicodeEncoding::~CFX_UnicodeEncoding() {} + +FX_DWORD CFX_UnicodeEncoding::GlyphFromCharCode(FX_DWORD charcode) { + FXFT_Face face = m_pFont->GetFace(); + if (!face) + return charcode; + + if (FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE) == 0) + return FXFT_Get_Char_Index(face, charcode); + + if (m_pFont->GetSubstFont() && m_pFont->GetSubstFont()->m_Charset == 2) { + FX_DWORD index = 0; + if (FXFT_Select_Charmap(face, FXFT_ENCODING_MS_SYMBOL) == 0) + index = FXFT_Get_Char_Index(face, charcode); + if (!index && !FXFT_Select_Charmap(face, FXFT_ENCODING_APPLE_ROMAN)) + return FXFT_Get_Char_Index(face, charcode); + } + return charcode; +} + +#ifdef PDF_ENABLE_XFA +CFX_UnicodeEncodingEx::CFX_UnicodeEncodingEx(CFX_Font* pFont, + FX_DWORD EncodingID) + : CFX_UnicodeEncoding(pFont), m_nEncodingID(EncodingID) {} + +CFX_UnicodeEncodingEx::~CFX_UnicodeEncodingEx() {} + +FX_DWORD CFX_UnicodeEncodingEx::GlyphFromCharCode(FX_DWORD charcode) { + FXFT_Face face = m_pFont->GetFace(); + FT_UInt nIndex = FXFT_Get_Char_Index(face, charcode); + if (nIndex > 0) { + return nIndex; + } + int nmaps = FXFT_Get_Face_CharmapCount(face); + int m = 0; + while (m < nmaps) { + int nEncodingID = + FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[m++]); + if (m_nEncodingID == nEncodingID) { + continue; + } + int error = FXFT_Select_Charmap(face, nEncodingID); + if (error) { + continue; + } + nIndex = FXFT_Get_Char_Index(face, charcode); + if (nIndex > 0) { + m_nEncodingID = nEncodingID; + return nIndex; + } + } + FXFT_Select_Charmap(face, m_nEncodingID); + return 0; +} + +FX_DWORD CFX_UnicodeEncodingEx::CharCodeFromUnicode(FX_WCHAR Unicode) const { + if (m_nEncodingID == FXFM_ENCODING_UNICODE || + m_nEncodingID == FXFM_ENCODING_MS_SYMBOL) { + return Unicode; + } + FXFT_Face face = m_pFont->GetFace(); + int nmaps = FXFT_Get_Face_CharmapCount(face); + for (int i = 0; i < nmaps; i++) { + int nEncodingID = + FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]); + if (nEncodingID == FXFM_ENCODING_UNICODE || + nEncodingID == FXFM_ENCODING_MS_SYMBOL) { + return Unicode; + } + } + return -1; +} + +CFX_UnicodeEncodingEx* FX_CreateFontEncodingEx(CFX_Font* pFont, + FX_DWORD nEncodingID) { + if (!pFont || !pFont->GetFace()) + return nullptr; + + if (nEncodingID != FXFM_ENCODING_NONE) + return _FXFM_CreateFontEncoding(pFont, nEncodingID); + + for (size_t i = 0; i < FX_ArraySize(g_EncodingID); ++i) { + CFX_UnicodeEncodingEx* pFontEncoding = + _FXFM_CreateFontEncoding(pFont, g_EncodingID[i]); + if (pFontEncoding) { + return pFontEncoding; + } + } + return NULL; +} +#endif // PDF_ENABLE_XFA diff --git a/core/fxge/ge/fx_ge_fontmap.cpp b/core/fxge/ge/fx_ge_fontmap.cpp new file mode 100644 index 0000000000..1dc61a210f --- /dev/null +++ b/core/fxge/ge/fx_ge_fontmap.cpp @@ -0,0 +1,1623 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include +#include +#include + +#include "core/fxge/fontdata/chromefontdata/chromefontdata.h" +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge.h" +#include "third_party/base/stl_util.h" + +#define GET_TT_SHORT(w) (FX_WORD)(((w)[0] << 8) | (w)[1]) +#define GET_TT_LONG(w) \ + (FX_DWORD)(((w)[0] << 24) | ((w)[1] << 16) | ((w)[2] << 8) | (w)[3]) + +#define FX_FONT_STYLE_None 0x00 +#define FX_FONT_STYLE_Bold 0x01 +#define FX_FONT_STYLE_Italic 0x02 +#define FX_FONT_STYLE_BoldBold 0x04 + +namespace { + +struct BuiltinFont { + const uint8_t* m_pFontData; + FX_DWORD m_dwSize; +}; + +const BuiltinFont g_FoxitFonts[14] = { + {g_FoxitFixedFontData, 17597}, + {g_FoxitFixedBoldFontData, 18055}, + {g_FoxitFixedBoldItalicFontData, 19151}, + {g_FoxitFixedItalicFontData, 18746}, + {g_FoxitSansFontData, 15025}, + {g_FoxitSansBoldFontData, 16344}, + {g_FoxitSansBoldItalicFontData, 16418}, + {g_FoxitSansItalicFontData, 16339}, + {g_FoxitSerifFontData, 19469}, + {g_FoxitSerifBoldFontData, 19395}, + {g_FoxitSerifBoldItalicFontData, 20733}, + {g_FoxitSerifItalicFontData, 21227}, + {g_FoxitSymbolFontData, 16729}, + {g_FoxitDingbatsFontData, 29513}, +}; + +const BuiltinFont g_MMFonts[2] = { + {g_FoxitSerifMMFontData, 113417}, + {g_FoxitSansMMFontData, 66919}, +}; + +const FX_CHAR* const g_Base14FontNames[14] = { + "Courier", + "Courier-Bold", + "Courier-BoldOblique", + "Courier-Oblique", + "Helvetica", + "Helvetica-Bold", + "Helvetica-BoldOblique", + "Helvetica-Oblique", + "Times-Roman", + "Times-Bold", + "Times-BoldItalic", + "Times-Italic", + "Symbol", + "ZapfDingbats", +}; + +const struct AltFontName { + const FX_CHAR* m_pName; + int m_Index; +} g_AltFontNames[] = { + {"Arial", 4}, + {"Arial,Bold", 5}, + {"Arial,BoldItalic", 6}, + {"Arial,Italic", 7}, + {"Arial-Bold", 5}, + {"Arial-BoldItalic", 6}, + {"Arial-BoldItalicMT", 6}, + {"Arial-BoldMT", 5}, + {"Arial-Italic", 7}, + {"Arial-ItalicMT", 7}, + {"ArialBold", 5}, + {"ArialBoldItalic", 6}, + {"ArialItalic", 7}, + {"ArialMT", 4}, + {"ArialMT,Bold", 5}, + {"ArialMT,BoldItalic", 6}, + {"ArialMT,Italic", 7}, + {"ArialRoundedMTBold", 5}, + {"Courier", 0}, + {"Courier,Bold", 1}, + {"Courier,BoldItalic", 2}, + {"Courier,Italic", 3}, + {"Courier-Bold", 1}, + {"Courier-BoldOblique", 2}, + {"Courier-Oblique", 3}, + {"CourierBold", 1}, + {"CourierBoldItalic", 2}, + {"CourierItalic", 3}, + {"CourierNew", 0}, + {"CourierNew,Bold", 1}, + {"CourierNew,BoldItalic", 2}, + {"CourierNew,Italic", 3}, + {"CourierNew-Bold", 1}, + {"CourierNew-BoldItalic", 2}, + {"CourierNew-Italic", 3}, + {"CourierNewBold", 1}, + {"CourierNewBoldItalic", 2}, + {"CourierNewItalic", 3}, + {"CourierNewPS-BoldItalicMT", 2}, + {"CourierNewPS-BoldMT", 1}, + {"CourierNewPS-ItalicMT", 3}, + {"CourierNewPSMT", 0}, + {"CourierStd", 0}, + {"CourierStd-Bold", 1}, + {"CourierStd-BoldOblique", 2}, + {"CourierStd-Oblique", 3}, + {"Helvetica", 4}, + {"Helvetica,Bold", 5}, + {"Helvetica,BoldItalic", 6}, + {"Helvetica,Italic", 7}, + {"Helvetica-Bold", 5}, + {"Helvetica-BoldItalic", 6}, + {"Helvetica-BoldOblique", 6}, + {"Helvetica-Italic", 7}, + {"Helvetica-Oblique", 7}, + {"HelveticaBold", 5}, + {"HelveticaBoldItalic", 6}, + {"HelveticaItalic", 7}, + {"Symbol", 12}, + {"SymbolMT", 12}, + {"Times-Bold", 9}, + {"Times-BoldItalic", 10}, + {"Times-Italic", 11}, + {"Times-Roman", 8}, + {"TimesBold", 9}, + {"TimesBoldItalic", 10}, + {"TimesItalic", 11}, + {"TimesNewRoman", 8}, + {"TimesNewRoman,Bold", 9}, + {"TimesNewRoman,BoldItalic", 10}, + {"TimesNewRoman,Italic", 11}, + {"TimesNewRoman-Bold", 9}, + {"TimesNewRoman-BoldItalic", 10}, + {"TimesNewRoman-Italic", 11}, + {"TimesNewRomanBold", 9}, + {"TimesNewRomanBoldItalic", 10}, + {"TimesNewRomanItalic", 11}, + {"TimesNewRomanPS", 8}, + {"TimesNewRomanPS-Bold", 9}, + {"TimesNewRomanPS-BoldItalic", 10}, + {"TimesNewRomanPS-BoldItalicMT", 10}, + {"TimesNewRomanPS-BoldMT", 9}, + {"TimesNewRomanPS-Italic", 11}, + {"TimesNewRomanPS-ItalicMT", 11}, + {"TimesNewRomanPSMT", 8}, + {"TimesNewRomanPSMT,Bold", 9}, + {"TimesNewRomanPSMT,BoldItalic", 10}, + {"TimesNewRomanPSMT,Italic", 11}, + {"ZapfDingbats", 13}, +}; + +const struct { + const FX_CHAR* m_pName; + const FX_CHAR* m_pSubstName; +} Base14Substs[] = { + {"Courier", "Courier New"}, + {"Courier-Bold", "Courier New Bold"}, + {"Courier-BoldOblique", "Courier New Bold Italic"}, + {"Courier-Oblique", "Courier New Italic"}, + {"Helvetica", "Arial"}, + {"Helvetica-Bold", "Arial Bold"}, + {"Helvetica-BoldOblique", "Arial Bold Italic"}, + {"Helvetica-Oblique", "Arial Italic"}, + {"Times-Roman", "Times New Roman"}, + {"Times-Bold", "Times New Roman Bold"}, + {"Times-BoldItalic", "Times New Roman Bold Italic"}, + {"Times-Italic", "Times New Roman Italic"}, +}; + +const struct AltFontFamily { + const FX_CHAR* m_pFontName; + const FX_CHAR* m_pFontFamily; +} g_AltFontFamilies[] = { + {"AGaramondPro", "Adobe Garamond Pro"}, + {"BankGothicBT-Medium", "BankGothic Md BT"}, + {"ForteMT", "Forte"}, +}; + +const struct FX_FontStyle { + const FX_CHAR* style; + int32_t len; +} g_FontStyles[] = { + {"Bold", 4}, {"Italic", 6}, {"BoldItalic", 10}, {"Reg", 3}, {"Regular", 7}, +}; + +const struct CODEPAGE_MAP { + FX_WORD codepage; + uint8_t charset; +} g_Codepage2CharsetTable[] = { + {0, 1}, {42, 2}, {437, 254}, {850, 255}, {874, 222}, + {932, 128}, {936, 134}, {949, 129}, {950, 136}, {1250, 238}, + {1251, 204}, {1252, 0}, {1253, 161}, {1254, 162}, {1255, 177}, + {1256, 178}, {1257, 186}, {1258, 163}, {1361, 130}, {10000, 77}, + {10001, 78}, {10002, 81}, {10003, 79}, {10004, 84}, {10005, 83}, + {10006, 85}, {10007, 89}, {10008, 80}, {10021, 87}, {10029, 88}, + {10081, 86}, +}; + +const FX_DWORD kTableNAME = FXDWORD_GET_MSBFIRST("name"); +const FX_DWORD kTableTTCF = FXDWORD_GET_MSBFIRST("ttcf"); + +int CompareFontFamilyString(const void* key, const void* element) { + CFX_ByteString str_key((const FX_CHAR*)key); + if (str_key.Find(((AltFontFamily*)element)->m_pFontName) != -1) { + return 0; + } + return FXSYS_stricmp((const FX_CHAR*)key, + ((AltFontFamily*)element)->m_pFontName); +} + +int CompareString(const void* key, const void* element) { + return FXSYS_stricmp((const FX_CHAR*)key, ((AltFontName*)element)->m_pName); +} + +CFX_ByteString KeyNameFromFace(const CFX_ByteString& face_name, + int weight, + FX_BOOL bItalic) { + CFX_ByteString key(face_name); + key += ','; + key += CFX_ByteString::FormatInteger(weight); + key += bItalic ? 'I' : 'N'; + return key; +} + +CFX_ByteString KeyNameFromSize(int ttc_size, FX_DWORD checksum) { + CFX_ByteString key; + key.Format("%d:%d", ttc_size, checksum); + return key; +} + +CFX_ByteString TT_NormalizeName(const FX_CHAR* family) { + CFX_ByteString norm(family); + norm.Remove(' '); + norm.Remove('-'); + norm.Remove(','); + int pos = norm.Find('+'); + if (pos > 0) { + norm = norm.Left(pos); + } + norm.MakeLower(); + return norm; +} + +CFX_ByteString FPDF_ReadStringFromFile(FXSYS_FILE* pFile, FX_DWORD size) { + CFX_ByteString buffer; + if (!FXSYS_fread(buffer.GetBuffer(size), size, 1, pFile)) { + return CFX_ByteString(); + } + buffer.ReleaseBuffer(size); + return buffer; +} + +CFX_ByteString FPDF_LoadTableFromTT(FXSYS_FILE* pFile, + const uint8_t* pTables, + FX_DWORD nTables, + FX_DWORD tag) { + for (FX_DWORD i = 0; i < nTables; i++) { + const uint8_t* p = pTables + i * 16; + if (GET_TT_LONG(p) == tag) { + FX_DWORD offset = GET_TT_LONG(p + 8); + FX_DWORD size = GET_TT_LONG(p + 12); + FXSYS_fseek(pFile, offset, FXSYS_SEEK_SET); + return FPDF_ReadStringFromFile(pFile, size); + } + } + return CFX_ByteString(); +} + +uint8_t GetCharsetFromCodePage(FX_WORD codepage) { + const CODEPAGE_MAP* pEnd = + g_Codepage2CharsetTable + FX_ArraySize(g_Codepage2CharsetTable); + const CODEPAGE_MAP* pCharmap = + std::lower_bound(g_Codepage2CharsetTable, pEnd, codepage, + [](const CODEPAGE_MAP& charset, FX_WORD page) { + return charset.codepage < page; + }); + if (pCharmap < pEnd && codepage == pCharmap->codepage) + return pCharmap->charset; + return 1; +} + +CFX_ByteString GetFontFamily(CFX_ByteString fontName, int nStyle) { + if (fontName.Find("Script") >= 0) { + if ((nStyle & FX_FONT_STYLE_Bold) == FX_FONT_STYLE_Bold) { + fontName = "ScriptMTBold"; + } else if (fontName.Find("Palace") >= 0) { + fontName = "PalaceScriptMT"; + } else if (fontName.Find("French") >= 0) { + fontName = "FrenchScriptMT"; + } else if (fontName.Find("FreeStyle") >= 0) { + fontName = "FreeStyleScript"; + } + return fontName; + } + AltFontFamily* found = (AltFontFamily*)FXSYS_bsearch( + fontName.c_str(), g_AltFontFamilies, + sizeof g_AltFontFamilies / sizeof(AltFontFamily), sizeof(AltFontFamily), + CompareFontFamilyString); + return found ? CFX_ByteString(found->m_pFontFamily) : fontName; +} + +CFX_ByteString ParseStyle(const FX_CHAR* pStyle, int iLen, int iIndex) { + CFX_ByteTextBuf buf; + if (!iLen || iLen <= iIndex) { + return buf.GetByteString(); + } + while (iIndex < iLen) { + if (pStyle[iIndex] == ',') { + break; + } + buf.AppendChar(pStyle[iIndex]); + ++iIndex; + } + return buf.GetByteString(); +} + +int32_t GetStyleType(const CFX_ByteString& bsStyle, FX_BOOL bRevert) { + int32_t iLen = bsStyle.GetLength(); + if (!iLen) { + return -1; + } + int iSize = sizeof(g_FontStyles) / sizeof(FX_FontStyle); + const FX_FontStyle* pStyle = NULL; + for (int i = iSize - 1; i >= 0; --i) { + pStyle = g_FontStyles + i; + if (!pStyle || pStyle->len > iLen) { + continue; + } + if (!bRevert) { + if (bsStyle.Left(pStyle->len).Compare(pStyle->style) == 0) { + return i; + } + } else { + if (bsStyle.Right(pStyle->len).Compare(pStyle->style) == 0) { + return i; + } + } + } + return -1; +} + +FX_BOOL CheckSupportThirdPartFont(CFX_ByteString name, int& PitchFamily) { + if (name == "MyriadPro") { + PitchFamily &= ~FXFONT_FF_ROMAN; + return TRUE; + } + return FALSE; +} + +FX_DWORD GetCharset(int charset) { + switch (charset) { + case FXFONT_SHIFTJIS_CHARSET: + return CHARSET_FLAG_SHIFTJIS; + case FXFONT_GB2312_CHARSET: + return CHARSET_FLAG_GB; + case FXFONT_CHINESEBIG5_CHARSET: + return CHARSET_FLAG_BIG5; + case FXFONT_HANGEUL_CHARSET: + return CHARSET_FLAG_KOREAN; + case FXFONT_SYMBOL_CHARSET: + return CHARSET_FLAG_SYMBOL; + case FXFONT_ANSI_CHARSET: + return CHARSET_FLAG_ANSI; + default: + break; + } + return 0; +} + +int32_t GetSimilarValue(int weight, + FX_BOOL bItalic, + int pitch_family, + FX_DWORD style) { + int32_t iSimilarValue = 0; + if (!!(style & FXFONT_BOLD) == (weight > 400)) { + iSimilarValue += 16; + } + if (!!(style & FXFONT_ITALIC) == bItalic) { + iSimilarValue += 16; + } + if (!!(style & FXFONT_SERIF) == !!(pitch_family & FXFONT_FF_ROMAN)) { + iSimilarValue += 16; + } + if (!!(style & FXFONT_SCRIPT) == !!(pitch_family & FXFONT_FF_SCRIPT)) { + iSimilarValue += 8; + } + if (!!(style & FXFONT_FIXED_PITCH) == + !!(pitch_family & FXFONT_FF_FIXEDPITCH)) { + iSimilarValue += 8; + } + return iSimilarValue; +} + +} // namespace + +CFX_SubstFont::CFX_SubstFont() { + m_ExtHandle = NULL; + m_Charset = 0; + m_SubstFlags = 0; + m_Weight = 0; + m_ItalicAngle = 0; + m_bSubstOfCJK = FALSE; + m_WeightCJK = 0; + m_bItlicCJK = FALSE; +} +CTTFontDesc::~CTTFontDesc() { + if (m_Type == 1) { + if (m_SingleFace.m_pFace) { + FXFT_Done_Face(m_SingleFace.m_pFace); + } + } else if (m_Type == 2) { + for (int i = 0; i < 16; i++) + if (m_TTCFace.m_pFaces[i]) { + FXFT_Done_Face(m_TTCFace.m_pFaces[i]); + } + } + FX_Free(m_pFontData); +} +int CTTFontDesc::ReleaseFace(FXFT_Face face) { + if (m_Type == 1) { + if (m_SingleFace.m_pFace != face) { + return -1; + } + } else if (m_Type == 2) { + int i; + for (i = 0; i < 16; i++) + if (m_TTCFace.m_pFaces[i] == face) { + break; + } + if (i == 16) { + return -1; + } + } + m_RefCount--; + if (m_RefCount) { + return m_RefCount; + } + delete this; + return 0; +} + +CFX_FontMgr::CFX_FontMgr() : m_FTLibrary(nullptr) { + m_pBuiltinMapper.reset(new CFX_FontMapper(this)); +} + +CFX_FontMgr::~CFX_FontMgr() { + for (const auto& pair : m_FaceMap) + delete pair.second; + + // |m_pBuiltinMapper| references |m_FTLibrary|, so it has to be destroyed + // first. + m_pBuiltinMapper.reset(); + FXFT_Done_FreeType(m_FTLibrary); +} + +void CFX_FontMgr::InitFTLibrary() { + if (m_FTLibrary) + return; + FXFT_Init_FreeType(&m_FTLibrary); +} + +void CFX_FontMgr::SetSystemFontInfo(IFX_SystemFontInfo* pFontInfo) { + m_pBuiltinMapper->SetSystemFontInfo(pFontInfo); +} + +FXFT_Face CFX_FontMgr::FindSubstFont(const CFX_ByteString& face_name, + FX_BOOL bTrueType, + FX_DWORD flags, + int weight, + int italic_angle, + int CharsetCP, + CFX_SubstFont* pSubstFont) { + InitFTLibrary(); + return m_pBuiltinMapper->FindSubstFont(face_name, bTrueType, flags, weight, + italic_angle, CharsetCP, pSubstFont); +} + +FXFT_Face CFX_FontMgr::GetCachedFace(const CFX_ByteString& face_name, + int weight, + FX_BOOL bItalic, + uint8_t*& pFontData) { + auto it = m_FaceMap.find(KeyNameFromFace(face_name, weight, bItalic)); + if (it == m_FaceMap.end()) + return nullptr; + + CTTFontDesc* pFontDesc = it->second; + pFontData = pFontDesc->m_pFontData; + pFontDesc->m_RefCount++; + return pFontDesc->m_SingleFace.m_pFace; +} +FXFT_Face CFX_FontMgr::AddCachedFace(const CFX_ByteString& face_name, + int weight, + FX_BOOL bItalic, + uint8_t* pData, + FX_DWORD size, + int face_index) { + CTTFontDesc* pFontDesc = new CTTFontDesc; + pFontDesc->m_Type = 1; + pFontDesc->m_SingleFace.m_pFace = NULL; + pFontDesc->m_SingleFace.m_bBold = weight; + pFontDesc->m_SingleFace.m_bItalic = bItalic; + pFontDesc->m_pFontData = pData; + pFontDesc->m_RefCount = 1; + + InitFTLibrary(); + FXFT_Library library = m_FTLibrary; + int ret = FXFT_New_Memory_Face(library, pData, size, face_index, + &pFontDesc->m_SingleFace.m_pFace); + if (ret) { + delete pFontDesc; + return NULL; + } + ret = FXFT_Set_Pixel_Sizes(pFontDesc->m_SingleFace.m_pFace, 64, 64); + if (ret) { + delete pFontDesc; + return NULL; + } + m_FaceMap[KeyNameFromFace(face_name, weight, bItalic)] = pFontDesc; + return pFontDesc->m_SingleFace.m_pFace; +} + +int GetTTCIndex(const uint8_t* pFontData, + FX_DWORD ttc_size, + FX_DWORD font_offset) { + int face_index = 0; + const uint8_t* p = pFontData + 8; + FX_DWORD nfont = GET_TT_LONG(p); + FX_DWORD index; + for (index = 0; index < nfont; index++) { + p = pFontData + 12 + index * 4; + if (GET_TT_LONG(p) == font_offset) { + break; + } + } + if (index >= nfont) { + face_index = 0; + } else { + face_index = index; + } + return face_index; +} +FXFT_Face CFX_FontMgr::GetCachedTTCFace(int ttc_size, + FX_DWORD checksum, + int font_offset, + uint8_t*& pFontData) { + auto it = m_FaceMap.find(KeyNameFromSize(ttc_size, checksum)); + if (it == m_FaceMap.end()) + return nullptr; + + CTTFontDesc* pFontDesc = it->second; + pFontData = pFontDesc->m_pFontData; + pFontDesc->m_RefCount++; + int face_index = GetTTCIndex(pFontDesc->m_pFontData, ttc_size, font_offset); + if (!pFontDesc->m_TTCFace.m_pFaces[face_index]) { + pFontDesc->m_TTCFace.m_pFaces[face_index] = + GetFixedFace(pFontDesc->m_pFontData, ttc_size, face_index); + } + return pFontDesc->m_TTCFace.m_pFaces[face_index]; +} +FXFT_Face CFX_FontMgr::AddCachedTTCFace(int ttc_size, + FX_DWORD checksum, + uint8_t* pData, + FX_DWORD size, + int font_offset) { + CTTFontDesc* pFontDesc = new CTTFontDesc; + pFontDesc->m_Type = 2; + pFontDesc->m_pFontData = pData; + for (int i = 0; i < 16; i++) { + pFontDesc->m_TTCFace.m_pFaces[i] = NULL; + } + pFontDesc->m_RefCount++; + m_FaceMap[KeyNameFromSize(ttc_size, checksum)] = pFontDesc; + int face_index = GetTTCIndex(pFontDesc->m_pFontData, ttc_size, font_offset); + pFontDesc->m_TTCFace.m_pFaces[face_index] = + GetFixedFace(pFontDesc->m_pFontData, ttc_size, face_index); + return pFontDesc->m_TTCFace.m_pFaces[face_index]; +} + +FXFT_Face CFX_FontMgr::GetFixedFace(const uint8_t* pData, + FX_DWORD size, + int face_index) { + InitFTLibrary(); + FXFT_Library library = m_FTLibrary; + FXFT_Face face = nullptr; + if (FXFT_New_Memory_Face(library, pData, size, face_index, &face)) + return nullptr; + return FXFT_Set_Pixel_Sizes(face, 64, 64) ? nullptr : face; +} + +FXFT_Face CFX_FontMgr::GetFileFace(const FX_CHAR* filename, int face_index) { + InitFTLibrary(); + FXFT_Library library = m_FTLibrary; + FXFT_Face face = nullptr; + if (FXFT_New_Face(library, filename, face_index, &face)) + return nullptr; + return FXFT_Set_Pixel_Sizes(face, 64, 64) ? nullptr : face; +} + +void CFX_FontMgr::ReleaseFace(FXFT_Face face) { + if (!face) { + return; + } + FX_BOOL bNeedFaceDone = TRUE; + auto it = m_FaceMap.begin(); + while (it != m_FaceMap.end()) { + auto temp = it++; + int nRet = temp->second->ReleaseFace(face); + if (nRet == -1) + continue; + bNeedFaceDone = FALSE; + if (nRet == 0) + m_FaceMap.erase(temp); + break; + } + if (bNeedFaceDone && !m_pBuiltinMapper->IsBuiltinFace(face)) + FXFT_Done_Face(face); +} + +bool CFX_FontMgr::GetBuiltinFont(size_t index, + const uint8_t** pFontData, + FX_DWORD* size) { + if (index < FX_ArraySize(g_FoxitFonts)) { + *pFontData = g_FoxitFonts[index].m_pFontData; + *size = g_FoxitFonts[index].m_dwSize; + return true; + } + index -= FX_ArraySize(g_FoxitFonts); + if (index < FX_ArraySize(g_MMFonts)) { + *pFontData = g_MMFonts[index].m_pFontData; + *size = g_MMFonts[index].m_dwSize; + return true; + } + return false; +} + +CFX_FontMapper::CFX_FontMapper(CFX_FontMgr* mgr) + : m_bListLoaded(FALSE), + m_pFontInfo(nullptr), + m_pFontEnumerator(nullptr), + m_pFontMgr(mgr) { + m_MMFaces[0] = nullptr; + m_MMFaces[1] = nullptr; + FXSYS_memset(m_FoxitFaces, 0, sizeof(m_FoxitFaces)); +} +CFX_FontMapper::~CFX_FontMapper() { + for (size_t i = 0; i < FX_ArraySize(m_FoxitFaces); ++i) { + if (m_FoxitFaces[i]) + FXFT_Done_Face(m_FoxitFaces[i]); + } + if (m_MMFaces[0]) { + FXFT_Done_Face(m_MMFaces[0]); + } + if (m_MMFaces[1]) { + FXFT_Done_Face(m_MMFaces[1]); + } + if (m_pFontInfo) { + m_pFontInfo->Release(); + } +} +void CFX_FontMapper::SetSystemFontInfo(IFX_SystemFontInfo* pFontInfo) { + if (!pFontInfo) { + return; + } + if (m_pFontInfo) { + m_pFontInfo->Release(); + } + m_pFontInfo = pFontInfo; +} + +CFX_ByteString GetNameFromTT(const uint8_t* name_table, FX_DWORD name_id) { + const uint8_t* ptr = name_table + 2; + int name_count = GET_TT_SHORT(ptr); + int string_offset = GET_TT_SHORT(ptr + 2); + const uint8_t* string_ptr = name_table + string_offset; + ptr += 4; + for (int i = 0; i < name_count; i++) { + if (GET_TT_SHORT(ptr + 6) == name_id && GET_TT_SHORT(ptr) == 1 && + GET_TT_SHORT(ptr + 2) == 0) { + return CFX_ByteStringC(string_ptr + GET_TT_SHORT(ptr + 10), + GET_TT_SHORT(ptr + 8)); + } + ptr += 12; + } + return CFX_ByteString(); +} + +CFX_ByteString CFX_FontMapper::GetPSNameFromTT(void* hFont) { + if (!m_pFontInfo) + return CFX_ByteString(); + + FX_DWORD size = m_pFontInfo->GetFontData(hFont, kTableNAME, nullptr, 0); + if (!size) + return CFX_ByteString(); + + std::vector buffer(size); + uint8_t* buffer_ptr = buffer.data(); + FX_DWORD bytes_read = + m_pFontInfo->GetFontData(hFont, kTableNAME, buffer_ptr, size); + return (bytes_read == size) ? GetNameFromTT(buffer_ptr, 6) : CFX_ByteString(); +} + +void CFX_FontMapper::AddInstalledFont(const CFX_ByteString& name, int charset) { + if (!m_pFontInfo) { + return; + } + if (m_CharsetArray.Find((FX_DWORD)charset) == -1) { + m_CharsetArray.Add((FX_DWORD)charset); + m_FaceArray.push_back(name); + } + if (name == m_LastFamily) { + return; + } + const uint8_t* ptr = name; + FX_BOOL bLocalized = FALSE; + for (int i = 0; i < name.GetLength(); i++) + if (ptr[i] > 0x80) { + bLocalized = TRUE; + break; + } + if (bLocalized) { + void* hFont = m_pFontInfo->GetFont(name); + if (!hFont) { + int iExact; + hFont = + m_pFontInfo->MapFont(0, 0, FXFONT_DEFAULT_CHARSET, 0, name, iExact); + if (!hFont) { + return; + } + } + CFX_ByteString new_name = GetPSNameFromTT(hFont); + if (!new_name.IsEmpty()) { + new_name.Insert(0, ' '); + m_InstalledTTFonts.push_back(new_name); + } + m_pFontInfo->DeleteFont(hFont); + } + m_InstalledTTFonts.push_back(name); + m_LastFamily = name; +} +void CFX_FontMapper::LoadInstalledFonts() { + if (!m_pFontInfo) { + return; + } + if (m_bListLoaded) { + return; + } + if (m_bListLoaded) { + return; + } + m_pFontInfo->EnumFontList(this); + m_bListLoaded = TRUE; +} +CFX_ByteString CFX_FontMapper::MatchInstalledFonts( + const CFX_ByteString& norm_name) { + LoadInstalledFonts(); + int i; + for (i = pdfium::CollectionSize(m_InstalledTTFonts) - 1; i >= 0; i--) { + CFX_ByteString norm1 = TT_NormalizeName(m_InstalledTTFonts[i]); + if (norm1 == norm_name) { + break; + } + } + if (i < 0) { + return CFX_ByteString(); + } + CFX_ByteString match = m_InstalledTTFonts[i]; + if (match[0] == ' ') { + match = m_InstalledTTFonts[i + 1]; + } + return match; +} + +FXFT_Face CFX_FontMapper::UseInternalSubst(CFX_SubstFont* pSubstFont, + int iBaseFont, + int italic_angle, + int weight, + int picthfamily) { + if (iBaseFont < 12) { + if (m_FoxitFaces[iBaseFont]) { + return m_FoxitFaces[iBaseFont]; + } + const uint8_t* pFontData = NULL; + FX_DWORD size = 0; + if (m_pFontMgr->GetBuiltinFont(iBaseFont, &pFontData, &size)) { + m_FoxitFaces[iBaseFont] = m_pFontMgr->GetFixedFace(pFontData, size, 0); + return m_FoxitFaces[iBaseFont]; + } + } + pSubstFont->m_SubstFlags |= FXFONT_SUBST_MM; + pSubstFont->m_ItalicAngle = italic_angle; + if (weight) { + pSubstFont->m_Weight = weight; + } + if (picthfamily & FXFONT_FF_ROMAN) { + pSubstFont->m_Weight = pSubstFont->m_Weight * 4 / 5; + pSubstFont->m_Family = "Chrome Serif"; + if (m_MMFaces[1]) { + return m_MMFaces[1]; + } + const uint8_t* pFontData = NULL; + FX_DWORD size = 0; + m_pFontMgr->GetBuiltinFont(14, &pFontData, &size); + m_MMFaces[1] = m_pFontMgr->GetFixedFace(pFontData, size, 0); + return m_MMFaces[1]; + } + pSubstFont->m_Family = "Chrome Sans"; + if (m_MMFaces[0]) { + return m_MMFaces[0]; + } + const uint8_t* pFontData = NULL; + FX_DWORD size = 0; + m_pFontMgr->GetBuiltinFont(15, &pFontData, &size); + m_MMFaces[0] = m_pFontMgr->GetFixedFace(pFontData, size, 0); + return m_MMFaces[0]; +} + +FXFT_Face CFX_FontMapper::FindSubstFont(const CFX_ByteString& name, + FX_BOOL bTrueType, + FX_DWORD flags, + int weight, + int italic_angle, + int WindowCP, + CFX_SubstFont* pSubstFont) { + if (!(flags & FXFONT_USEEXTERNATTR)) { + weight = FXFONT_FW_NORMAL; + italic_angle = 0; + } + CFX_ByteString SubstName = name; + SubstName.Remove(0x20); + if (bTrueType) { + if (name[0] == '@') { + SubstName = name.Mid(1); + } + } + PDF_GetStandardFontName(&SubstName); + if (SubstName == "Symbol" && !bTrueType) { + pSubstFont->m_Family = "Chrome Symbol"; + pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; + pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; + if (m_FoxitFaces[12]) { + return m_FoxitFaces[12]; + } + const uint8_t* pFontData = NULL; + FX_DWORD size = 0; + m_pFontMgr->GetBuiltinFont(12, &pFontData, &size); + m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0); + return m_FoxitFaces[12]; + } + if (SubstName == "ZapfDingbats") { + pSubstFont->m_Family = "Chrome Dingbats"; + pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; + pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; + if (m_FoxitFaces[13]) { + return m_FoxitFaces[13]; + } + const uint8_t* pFontData = NULL; + FX_DWORD size = 0; + m_pFontMgr->GetBuiltinFont(13, &pFontData, &size); + m_FoxitFaces[13] = m_pFontMgr->GetFixedFace(pFontData, size, 0); + return m_FoxitFaces[13]; + } + int iBaseFont = 0; + CFX_ByteString family, style; + FX_BOOL bHasComma = FALSE; + FX_BOOL bHasHypen = FALSE; + int find = SubstName.Find(",", 0); + if (find >= 0) { + family = SubstName.Left(find); + PDF_GetStandardFontName(&family); + style = SubstName.Mid(find + 1); + bHasComma = TRUE; + } else { + family = SubstName; + } + for (; iBaseFont < 12; iBaseFont++) + if (family == CFX_ByteStringC(g_Base14FontNames[iBaseFont])) { + break; + } + int PitchFamily = 0; + FX_BOOL bItalic = FALSE; + FX_DWORD nStyle = 0; + FX_BOOL bStyleAvail = FALSE; + if (iBaseFont < 12) { + family = g_Base14FontNames[iBaseFont]; + if ((iBaseFont % 4) == 1 || (iBaseFont % 4) == 2) { + nStyle |= FX_FONT_STYLE_Bold; + } + if ((iBaseFont % 4) / 2) { + nStyle |= FX_FONT_STYLE_Italic; + } + if (iBaseFont < 4) { + PitchFamily |= FXFONT_FF_FIXEDPITCH; + } + if (iBaseFont >= 8) { + PitchFamily |= FXFONT_FF_ROMAN; + } + } else { + if (!bHasComma) { + find = family.ReverseFind('-'); + if (find >= 0) { + style = family.Mid(find + 1); + family = family.Left(find); + bHasHypen = TRUE; + } + } + if (!bHasHypen) { + int nLen = family.GetLength(); + int32_t nRet = GetStyleType(family, TRUE); + if (nRet > -1) { + family = family.Left(nLen - g_FontStyles[nRet].len); + if (nRet == 0) { + nStyle |= FX_FONT_STYLE_Bold; + } + if (nRet == 1) { + nStyle |= FX_FONT_STYLE_Italic; + } + if (nRet == 2) { + nStyle |= (FX_FONT_STYLE_Bold | FX_FONT_STYLE_Italic); + } + } + } + if (flags & FXFONT_SERIF) { + PitchFamily |= FXFONT_FF_ROMAN; + } + if (flags & FXFONT_SCRIPT) { + PitchFamily |= FXFONT_FF_SCRIPT; + } + if (flags & FXFONT_FIXED_PITCH) { + PitchFamily |= FXFONT_FF_FIXEDPITCH; + } + } + if (!style.IsEmpty()) { + int nLen = style.GetLength(); + const FX_CHAR* pStyle = style; + int i = 0; + FX_BOOL bFirstItem = TRUE; + CFX_ByteString buf; + while (i < nLen) { + buf = ParseStyle(pStyle, nLen, i); + int32_t nRet = GetStyleType(buf, FALSE); + if ((i && !bStyleAvail) || (!i && nRet < 0)) { + family = SubstName; + iBaseFont = 12; + break; + } else if (nRet >= 0) { + bStyleAvail = TRUE; + } + if (nRet == 0) { + if (nStyle & FX_FONT_STYLE_Bold) { + nStyle |= FX_FONT_STYLE_BoldBold; + } else { + nStyle |= FX_FONT_STYLE_Bold; + } + bFirstItem = FALSE; + } + if (nRet == 1) { + if (bFirstItem) { + nStyle |= FX_FONT_STYLE_Italic; + } else { + family = SubstName; + iBaseFont = 12; + } + break; + } + if (nRet == 2) { + nStyle |= FX_FONT_STYLE_Italic; + if (nStyle & FX_FONT_STYLE_Bold) { + nStyle |= FX_FONT_STYLE_BoldBold; + } else { + nStyle |= FX_FONT_STYLE_Bold; + } + bFirstItem = FALSE; + } + i += buf.GetLength() + 1; + } + } + weight = weight ? weight : FXFONT_FW_NORMAL; + int old_weight = weight; + if (nStyle) { + weight = + nStyle & FX_FONT_STYLE_BoldBold + ? 900 + : (nStyle & FX_FONT_STYLE_Bold ? FXFONT_FW_BOLD : FXFONT_FW_NORMAL); + } + if (nStyle & FX_FONT_STYLE_Italic) { + bItalic = TRUE; + } + FX_BOOL bCJK = FALSE; + int iExact = 0; + int Charset = FXFONT_ANSI_CHARSET; + if (WindowCP) { + Charset = GetCharsetFromCodePage(WindowCP); + } else if (iBaseFont == 12 && (flags & FXFONT_SYMBOLIC)) { + Charset = FXFONT_SYMBOL_CHARSET; + } + if (Charset == FXFONT_SHIFTJIS_CHARSET || Charset == FXFONT_GB2312_CHARSET || + Charset == FXFONT_HANGEUL_CHARSET || + Charset == FXFONT_CHINESEBIG5_CHARSET) { + bCJK = TRUE; + } + if (!m_pFontInfo) { + pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; + return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, + PitchFamily); + } + family = GetFontFamily(family, nStyle); + CFX_ByteString match = MatchInstalledFonts(TT_NormalizeName(family)); + if (match.IsEmpty() && family != SubstName && + (!bHasComma && (!bHasHypen || (bHasHypen && !bStyleAvail)))) { + match = MatchInstalledFonts(TT_NormalizeName(SubstName)); + } + if (match.IsEmpty() && iBaseFont >= 12) { + if (!bCJK) { + if (!CheckSupportThirdPartFont(family, PitchFamily)) { + if (italic_angle != 0) { + bItalic = TRUE; + } else { + bItalic = FALSE; + } + weight = old_weight; + } + } else { + pSubstFont->m_bSubstOfCJK = TRUE; + if (nStyle) { + pSubstFont->m_WeightCJK = weight; + } else { + pSubstFont->m_WeightCJK = FXFONT_FW_NORMAL; + } + if (nStyle & FX_FONT_STYLE_Italic) { + pSubstFont->m_bItlicCJK = TRUE; + } + } + } else { + italic_angle = 0; + weight = + nStyle & FX_FONT_STYLE_BoldBold + ? 900 + : (nStyle & FX_FONT_STYLE_Bold ? FXFONT_FW_BOLD : FXFONT_FW_NORMAL); + } + if (!match.IsEmpty() || iBaseFont < 12) { + if (!match.IsEmpty()) { + family = match; + } + if (iBaseFont < 12) { + if (nStyle && !(iBaseFont % 4)) { + if ((nStyle & 0x3) == 1) { + iBaseFont += 1; + } + if ((nStyle & 0x3) == 2) { + iBaseFont += 3; + } + if ((nStyle & 0x3) == 3) { + iBaseFont += 2; + } + } + family = g_Base14FontNames[iBaseFont]; + pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; + } + } else { + if (flags & FXFONT_ITALIC) { + bItalic = TRUE; + } + } + iExact = !match.IsEmpty(); + void* hFont = m_pFontInfo->MapFont(weight, bItalic, Charset, PitchFamily, + family, iExact); + if (iExact) { + pSubstFont->m_SubstFlags |= FXFONT_SUBST_EXACT; + } + if (!hFont) { +#ifdef PDF_ENABLE_XFA + if (flags & FXFONT_EXACTMATCH) { + return NULL; + } +#endif // PDF_ENABLE_XFA + if (bCJK) { + if (italic_angle != 0) { + bItalic = TRUE; + } else { + bItalic = FALSE; + } + weight = old_weight; + } + if (!match.IsEmpty()) { + hFont = m_pFontInfo->GetFont(match); + if (!hFont) { + return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, + PitchFamily); + } + } else { + if (Charset == FXFONT_SYMBOL_CHARSET) { +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ + _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ + if (SubstName == "Symbol") { + pSubstFont->m_Family = "Chrome Symbol"; + pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; + pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; + if (m_FoxitFaces[12]) { + return m_FoxitFaces[12]; + } + const uint8_t* pFontData = NULL; + FX_DWORD size = 0; + m_pFontMgr->GetBuiltinFont(12, &pFontData, &size); + m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0); + return m_FoxitFaces[12]; + } +#endif + pSubstFont->m_SubstFlags |= FXFONT_SUBST_NONSYMBOL; + return FindSubstFont(family, bTrueType, flags & ~FXFONT_SYMBOLIC, + weight, italic_angle, 0, pSubstFont); + } + if (Charset == FXFONT_ANSI_CHARSET) { + pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; + return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, + PitchFamily); + } + int index = m_CharsetArray.Find(Charset); + if (index < 0) { + return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, + PitchFamily); + } + hFont = m_pFontInfo->GetFont(m_FaceArray[index]); + } + } + pSubstFont->m_ExtHandle = m_pFontInfo->RetainFont(hFont); + if (!hFont) + return nullptr; + + m_pFontInfo->GetFaceName(hFont, SubstName); + if (Charset == FXFONT_DEFAULT_CHARSET) { + m_pFontInfo->GetFontCharset(hFont, Charset); + } + FX_DWORD ttc_size = m_pFontInfo->GetFontData(hFont, kTableTTCF, nullptr, 0); + FX_DWORD font_size = m_pFontInfo->GetFontData(hFont, 0, nullptr, 0); + if (font_size == 0 && ttc_size == 0) { + m_pFontInfo->DeleteFont(hFont); + return nullptr; + } + FXFT_Face face = nullptr; + if (ttc_size) { + uint8_t temp[1024]; + m_pFontInfo->GetFontData(hFont, kTableTTCF, temp, 1024); + FX_DWORD checksum = 0; + for (int i = 0; i < 256; i++) { + checksum += ((FX_DWORD*)temp)[i]; + } + uint8_t* pFontData; + face = m_pFontMgr->GetCachedTTCFace(ttc_size, checksum, + ttc_size - font_size, pFontData); + if (!face) { + pFontData = FX_Alloc(uint8_t, ttc_size); + m_pFontInfo->GetFontData(hFont, kTableTTCF, pFontData, ttc_size); + face = m_pFontMgr->AddCachedTTCFace(ttc_size, checksum, pFontData, + ttc_size, ttc_size - font_size); + } + } else { + uint8_t* pFontData; + face = m_pFontMgr->GetCachedFace(SubstName, weight, bItalic, pFontData); + if (!face) { + pFontData = FX_Alloc(uint8_t, font_size); + m_pFontInfo->GetFontData(hFont, 0, pFontData, font_size); + face = m_pFontMgr->AddCachedFace(SubstName, weight, bItalic, pFontData, + font_size, + m_pFontInfo->GetFaceIndex(hFont)); + } + } + if (!face) { + m_pFontInfo->DeleteFont(hFont); + return NULL; + } + pSubstFont->m_Family = SubstName; + pSubstFont->m_Charset = Charset; + FX_BOOL bNeedUpdateWeight = FALSE; + if (FXFT_Is_Face_Bold(face)) { + if (weight == FXFONT_FW_BOLD) { + bNeedUpdateWeight = FALSE; + } else { + bNeedUpdateWeight = TRUE; + } + } else { + if (weight == FXFONT_FW_NORMAL) { + bNeedUpdateWeight = FALSE; + } else { + bNeedUpdateWeight = TRUE; + } + } + if (bNeedUpdateWeight) { + pSubstFont->m_Weight = weight; + } + if (bItalic && !FXFT_Is_Face_Italic(face)) { + if (italic_angle == 0) { + italic_angle = -12; + } else if (FXSYS_abs(italic_angle) < 5) { + italic_angle = 0; + } + pSubstFont->m_ItalicAngle = italic_angle; + } + m_pFontInfo->DeleteFont(hFont); + return face; +} +#ifdef PDF_ENABLE_XFA +FXFT_Face CFX_FontMapper::FindSubstFontByUnicode(FX_DWORD dwUnicode, + FX_DWORD flags, + int weight, + int italic_angle) { + if (m_pFontInfo == NULL) { + return NULL; + } + FX_BOOL bItalic = (flags & FXFONT_ITALIC) != 0; + int PitchFamily = 0; + if (flags & FXFONT_SERIF) { + PitchFamily |= FXFONT_FF_ROMAN; + } + if (flags & FXFONT_SCRIPT) { + PitchFamily |= FXFONT_FF_SCRIPT; + } + if (flags & FXFONT_FIXED_PITCH) { + PitchFamily |= FXFONT_FF_FIXEDPITCH; + } + void* hFont = + m_pFontInfo->MapFontByUnicode(dwUnicode, weight, bItalic, PitchFamily); + if (hFont == NULL) { + return NULL; + } + FX_DWORD ttc_size = m_pFontInfo->GetFontData(hFont, 0x74746366, NULL, 0); + FX_DWORD font_size = m_pFontInfo->GetFontData(hFont, 0, NULL, 0); + if (font_size == 0 && ttc_size == 0) { + m_pFontInfo->DeleteFont(hFont); + return NULL; + } + FXFT_Face face = NULL; + if (ttc_size) { + uint8_t temp[1024]; + m_pFontInfo->GetFontData(hFont, 0x74746366, temp, 1024); + FX_DWORD checksum = 0; + for (int i = 0; i < 256; i++) { + checksum += ((FX_DWORD*)temp)[i]; + } + uint8_t* pFontData; + face = m_pFontMgr->GetCachedTTCFace(ttc_size, checksum, + ttc_size - font_size, pFontData); + if (face == NULL) { + pFontData = FX_Alloc(uint8_t, ttc_size); + if (pFontData) { + m_pFontInfo->GetFontData(hFont, 0x74746366, pFontData, ttc_size); + face = m_pFontMgr->AddCachedTTCFace(ttc_size, checksum, pFontData, + ttc_size, ttc_size - font_size); + } + } + } else { + CFX_ByteString SubstName; + m_pFontInfo->GetFaceName(hFont, SubstName); + uint8_t* pFontData; + face = m_pFontMgr->GetCachedFace(SubstName, weight, bItalic, pFontData); + if (face == NULL) { + pFontData = FX_Alloc(uint8_t, font_size); + if (!pFontData) { + m_pFontInfo->DeleteFont(hFont); + return NULL; + } + m_pFontInfo->GetFontData(hFont, 0, pFontData, font_size); + face = m_pFontMgr->AddCachedFace(SubstName, weight, bItalic, pFontData, + font_size, + m_pFontInfo->GetFaceIndex(hFont)); + } + } + m_pFontInfo->DeleteFont(hFont); + return face; +} + +void* IFX_SystemFontInfo::MapFontByUnicode(FX_DWORD dwUnicode, + int weight, + FX_BOOL bItalic, + int pitch_family) { + return nullptr; +} +#endif // PDF_ENABLE_XFA + +int IFX_SystemFontInfo::GetFaceIndex(void* hFont) { + return 0; +} + +void* IFX_SystemFontInfo::RetainFont(void* hFont) { + return NULL; +} + +int CFX_FontMapper::GetFaceSize() const { + return pdfium::CollectionSize(m_FaceArray); +} + +FX_BOOL CFX_FontMapper::IsBuiltinFace(const FXFT_Face face) const { + for (int i = 0; i < MM_FACE_COUNT; ++i) { + if (m_MMFaces[i] == face) { + return TRUE; + } + } + for (int i = 0; i < FOXIT_FACE_COUNT; ++i) { + if (m_FoxitFaces[i] == face) { + return TRUE; + } + } + return FALSE; +} + +extern "C" { +unsigned long _FTStreamRead(FXFT_Stream stream, + unsigned long offset, + unsigned char* buffer, + unsigned long count); +void _FTStreamClose(FXFT_Stream stream); +}; + +#if _FX_OS_ == _FX_ANDROID_ +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { + return NULL; +} +#endif + +CFX_FolderFontInfo::CFX_FolderFontInfo() {} +CFX_FolderFontInfo::~CFX_FolderFontInfo() { + for (const auto& pair : m_FontList) { + delete pair.second; + } +} +void CFX_FolderFontInfo::AddPath(const CFX_ByteStringC& path) { + m_PathList.push_back(path); +} +void CFX_FolderFontInfo::Release() { + delete this; +} +FX_BOOL CFX_FolderFontInfo::EnumFontList(CFX_FontMapper* pMapper) { + m_pMapper = pMapper; + for (const auto& path : m_PathList) { + ScanPath(path); + } + return TRUE; +} +void CFX_FolderFontInfo::ScanPath(const CFX_ByteString& path) { + void* handle = FX_OpenFolder(path); + if (!handle) { + return; + } + CFX_ByteString filename; + FX_BOOL bFolder; + while (FX_GetNextFile(handle, filename, bFolder)) { + if (bFolder) { + if (filename == "." || filename == "..") { + continue; + } + } else { + CFX_ByteString ext = filename.Right(4); + ext.MakeUpper(); + if (ext != ".TTF" && ext != ".OTF" && ext != ".TTC") { + continue; + } + } + CFX_ByteString fullpath = path; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ + fullpath += "\\"; +#else + fullpath += "/"; +#endif + fullpath += filename; + if (bFolder) { + ScanPath(fullpath); + } else { + ScanFile(fullpath); + } + } + FX_CloseFolder(handle); +} +void CFX_FolderFontInfo::ScanFile(const CFX_ByteString& path) { + FXSYS_FILE* pFile = FXSYS_fopen(path, "rb"); + if (!pFile) { + return; + } + FXSYS_fseek(pFile, 0, FXSYS_SEEK_END); + FX_DWORD filesize = FXSYS_ftell(pFile); + uint8_t buffer[16]; + FXSYS_fseek(pFile, 0, FXSYS_SEEK_SET); + size_t readCnt = FXSYS_fread(buffer, 12, 1, pFile); + if (readCnt != 1) { + FXSYS_fclose(pFile); + return; + } + + if (GET_TT_LONG(buffer) == kTableTTCF) { + FX_DWORD nFaces = GET_TT_LONG(buffer + 8); + if (nFaces > std::numeric_limits::max() / 4) { + FXSYS_fclose(pFile); + return; + } + FX_DWORD face_bytes = nFaces * 4; + uint8_t* offsets = FX_Alloc(uint8_t, face_bytes); + readCnt = FXSYS_fread(offsets, 1, face_bytes, pFile); + if (readCnt != face_bytes) { + FX_Free(offsets); + FXSYS_fclose(pFile); + return; + } + for (FX_DWORD i = 0; i < nFaces; i++) { + uint8_t* p = offsets + i * 4; + ReportFace(path, pFile, filesize, GET_TT_LONG(p)); + } + FX_Free(offsets); + } else { + ReportFace(path, pFile, filesize, 0); + } + FXSYS_fclose(pFile); +} +void CFX_FolderFontInfo::ReportFace(const CFX_ByteString& path, + FXSYS_FILE* pFile, + FX_DWORD filesize, + FX_DWORD offset) { + FXSYS_fseek(pFile, offset, FXSYS_SEEK_SET); + char buffer[16]; + if (!FXSYS_fread(buffer, 12, 1, pFile)) { + return; + } + FX_DWORD nTables = GET_TT_SHORT(buffer + 4); + CFX_ByteString tables = FPDF_ReadStringFromFile(pFile, nTables * 16); + if (tables.IsEmpty()) { + return; + } + CFX_ByteString names = + FPDF_LoadTableFromTT(pFile, tables, nTables, 0x6e616d65); + if (names.IsEmpty()) { + return; + } + CFX_ByteString facename = GetNameFromTT(names, 1); + CFX_ByteString style = GetNameFromTT(names, 2); + if (style != "Regular") { + facename += " " + style; + } + if (pdfium::ContainsKey(m_FontList, facename)) + return; + + CFX_FontFaceInfo* pInfo = + new CFX_FontFaceInfo(path, facename, tables, offset, filesize); + CFX_ByteString os2 = FPDF_LoadTableFromTT(pFile, tables, nTables, 0x4f532f32); + if (os2.GetLength() >= 86) { + const uint8_t* p = (const uint8_t*)os2 + 78; + FX_DWORD codepages = GET_TT_LONG(p); + if (codepages & (1 << 17)) { + m_pMapper->AddInstalledFont(facename, FXFONT_SHIFTJIS_CHARSET); + pInfo->m_Charsets |= CHARSET_FLAG_SHIFTJIS; + } + if (codepages & (1 << 18)) { + m_pMapper->AddInstalledFont(facename, FXFONT_GB2312_CHARSET); + pInfo->m_Charsets |= CHARSET_FLAG_GB; + } + if (codepages & (1 << 20)) { + m_pMapper->AddInstalledFont(facename, FXFONT_CHINESEBIG5_CHARSET); + pInfo->m_Charsets |= CHARSET_FLAG_BIG5; + } + if ((codepages & (1 << 19)) || (codepages & (1 << 21))) { + m_pMapper->AddInstalledFont(facename, FXFONT_HANGEUL_CHARSET); + pInfo->m_Charsets |= CHARSET_FLAG_KOREAN; + } + if (codepages & (1 << 31)) { + m_pMapper->AddInstalledFont(facename, FXFONT_SYMBOL_CHARSET); + pInfo->m_Charsets |= CHARSET_FLAG_SYMBOL; + } + } + m_pMapper->AddInstalledFont(facename, FXFONT_ANSI_CHARSET); + pInfo->m_Charsets |= CHARSET_FLAG_ANSI; + pInfo->m_Styles = 0; + if (style.Find("Bold") > -1) { + pInfo->m_Styles |= FXFONT_BOLD; + } + if (style.Find("Italic") > -1 || style.Find("Oblique") > -1) { + pInfo->m_Styles |= FXFONT_ITALIC; + } + if (facename.Find("Serif") > -1) { + pInfo->m_Styles |= FXFONT_SERIF; + } + m_FontList[facename] = pInfo; +} + +void* CFX_FolderFontInfo::GetSubstFont(const CFX_ByteString& face) { + for (size_t iBaseFont = 0; iBaseFont < FX_ArraySize(Base14Substs); + iBaseFont++) { + if (face == Base14Substs[iBaseFont].m_pName) { + return GetFont(Base14Substs[iBaseFont].m_pSubstName); + } + } + return nullptr; +} + +void* CFX_FolderFontInfo::FindFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* family, + FX_BOOL bMatchName) { + CFX_FontFaceInfo* pFind = nullptr; + if (charset == FXFONT_ANSI_CHARSET && (pitch_family & FXFONT_FF_FIXEDPITCH)) { + return GetFont("Courier New"); + } + FX_DWORD charset_flag = GetCharset(charset); + int32_t iBestSimilar = 0; + for (const auto& it : m_FontList) { + const CFX_ByteString& bsName = it.first; + CFX_FontFaceInfo* pFont = it.second; + if (!(pFont->m_Charsets & charset_flag) && + charset != FXFONT_DEFAULT_CHARSET) { + continue; + } + int32_t index = bsName.Find(family); + if (bMatchName && index < 0) { + continue; + } + int32_t iSimilarValue = + GetSimilarValue(weight, bItalic, pitch_family, pFont->m_Styles); + if (iSimilarValue > iBestSimilar) { + iBestSimilar = iSimilarValue; + pFind = pFont; + } + } + return pFind; +} +void* CFX_FolderFontInfo::MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* family, + int& iExact) { + return NULL; +} + +#ifdef PDF_ENABLE_XFA +void* CFX_FolderFontInfo::MapFontByUnicode(FX_DWORD dwUnicode, + int weight, + FX_BOOL bItalic, + int pitch_family) { + return NULL; +} +#endif // PDF_ENABLE_XFA + +void* CFX_FolderFontInfo::GetFont(const FX_CHAR* face) { + auto it = m_FontList.find(face); + return it != m_FontList.end() ? it->second : nullptr; +} + +FX_DWORD CFX_FolderFontInfo::GetFontData(void* hFont, + FX_DWORD table, + uint8_t* buffer, + FX_DWORD size) { + if (!hFont) + return 0; + + const CFX_FontFaceInfo* pFont = static_cast(hFont); + FX_DWORD datasize = 0; + FX_DWORD offset = 0; + if (table == 0) { + datasize = pFont->m_FontOffset ? 0 : pFont->m_FileSize; + } else if (table == kTableTTCF) { + datasize = pFont->m_FontOffset ? pFont->m_FileSize : 0; + } else { + FX_DWORD nTables = pFont->m_FontTables.GetLength() / 16; + for (FX_DWORD i = 0; i < nTables; i++) { + const uint8_t* p = + static_cast(pFont->m_FontTables) + i * 16; + if (GET_TT_LONG(p) == table) { + offset = GET_TT_LONG(p + 8); + datasize = GET_TT_LONG(p + 12); + } + } + } + + if (!datasize || size < datasize) + return datasize; + + FXSYS_FILE* pFile = FXSYS_fopen(pFont->m_FilePath, "rb"); + if (!pFile) + return 0; + + if (FXSYS_fseek(pFile, offset, FXSYS_SEEK_SET) < 0 || + FXSYS_fread(buffer, datasize, 1, pFile) != 1) { + datasize = 0; + } + FXSYS_fclose(pFile); + return datasize; +} + +void CFX_FolderFontInfo::DeleteFont(void* hFont) {} +FX_BOOL CFX_FolderFontInfo::GetFaceName(void* hFont, CFX_ByteString& name) { + if (!hFont) { + return FALSE; + } + CFX_FontFaceInfo* pFont = (CFX_FontFaceInfo*)hFont; + name = pFont->m_FaceName; + return TRUE; +} +FX_BOOL CFX_FolderFontInfo::GetFontCharset(void* hFont, int& charset) { + return FALSE; +} + +int PDF_GetStandardFontName(CFX_ByteString* name) { + AltFontName* found = static_cast( + FXSYS_bsearch(name->c_str(), g_AltFontNames, FX_ArraySize(g_AltFontNames), + sizeof(AltFontName), CompareString)); + if (!found) + return -1; + + *name = g_Base14FontNames[found->m_Index]; + return found->m_Index; +} diff --git a/core/fxge/ge/fx_ge_linux.cpp b/core/fxge/ge/fx_ge_linux.cpp new file mode 100644 index 0000000000..af731f78da --- /dev/null +++ b/core/fxge/ge/fx_ge_linux.cpp @@ -0,0 +1,147 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/agg/fx_agg_driver.h" +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxge/fx_ge.h" + +#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ +class CFX_LinuxFontInfo : public CFX_FolderFontInfo { + public: + void* MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* family, + int& iExact) override; + FX_BOOL ParseFontCfg(const char** pUserPaths); +}; +#define LINUX_GPNAMESIZE 6 +static const struct { + const FX_CHAR* NameArr[LINUX_GPNAMESIZE]; +} LinuxGpFontList[] = { + {{"TakaoPGothic", "VL PGothic", "IPAPGothic", "VL Gothic", "Kochi Gothic", + "VL Gothic regular"}}, + {{"TakaoGothic", "VL Gothic", "IPAGothic", "Kochi Gothic", NULL, + "VL Gothic regular"}}, + {{"TakaoPMincho", "IPAPMincho", "VL Gothic", "Kochi Mincho", NULL, + "VL Gothic regular"}}, + {{"TakaoMincho", "IPAMincho", "VL Gothic", "Kochi Mincho", NULL, + "VL Gothic regular"}}, +}; +static const FX_CHAR* const g_LinuxGbFontList[] = { + "AR PL UMing CN Light", "WenQuanYi Micro Hei", "AR PL UKai CN", +}; +static const FX_CHAR* const g_LinuxB5FontList[] = { + "AR PL UMing TW Light", "WenQuanYi Micro Hei", "AR PL UKai TW", +}; +static const FX_CHAR* const g_LinuxHGFontList[] = { + "UnDotum", +}; +static int32_t GetJapanesePreference(const FX_CHAR* facearr, + int weight, + int picth_family) { + CFX_ByteString face = facearr; + if (face.Find("Gothic") >= 0 || + face.Find("\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { + if (face.Find("PGothic") >= 0 || + face.Find("\x82\x6f\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { + return 0; + } + return 1; + } + if (face.Find("Mincho") >= 0 || face.Find("\x96\xbe\x92\xa9") >= 0) { + if (face.Find("PMincho") >= 0 || + face.Find("\x82\x6f\x96\xbe\x92\xa9") >= 0) { + return 2; + } + return 3; + } + if (!(picth_family & FXFONT_FF_ROMAN) && weight > 400) { + return 0; + } + return 2; +} +void* CFX_LinuxFontInfo::MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* cstr_face, + int& iExact) { + void* font = GetSubstFont(cstr_face); + if (font) { + iExact = 1; + return font; + } + FX_BOOL bCJK = TRUE; + switch (charset) { + case FXFONT_SHIFTJIS_CHARSET: { + int32_t index = GetJapanesePreference(cstr_face, weight, pitch_family); + if (index < 0) { + break; + } + for (int32_t i = 0; i < LINUX_GPNAMESIZE; i++) { + auto it = m_FontList.find(LinuxGpFontList[index].NameArr[i]); + if (it != m_FontList.end()) { + return it->second; + } + } + } break; + case FXFONT_GB2312_CHARSET: { + for (size_t i = 0; i < FX_ArraySize(g_LinuxGbFontList); ++i) { + auto it = m_FontList.find(g_LinuxGbFontList[i]); + if (it != m_FontList.end()) { + return it->second; + } + } + } break; + case FXFONT_CHINESEBIG5_CHARSET: { + for (size_t i = 0; i < FX_ArraySize(g_LinuxB5FontList); ++i) { + auto it = m_FontList.find(g_LinuxB5FontList[i]); + if (it != m_FontList.end()) { + return it->second; + } + } + } break; + case FXFONT_HANGEUL_CHARSET: { + for (size_t i = 0; i < FX_ArraySize(g_LinuxHGFontList); ++i) { + auto it = m_FontList.find(g_LinuxHGFontList[i]); + if (it != m_FontList.end()) { + return it->second; + } + } + } break; + default: + bCJK = FALSE; + break; + } + return FindFont(weight, bItalic, charset, pitch_family, cstr_face, !bCJK); +} +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUserPaths) { + CFX_LinuxFontInfo* pInfo = new CFX_LinuxFontInfo; + if (!pInfo->ParseFontCfg(pUserPaths)) { + pInfo->AddPath("/usr/share/fonts"); + pInfo->AddPath("/usr/share/X11/fonts/Type1"); + pInfo->AddPath("/usr/share/X11/fonts/TTF"); + pInfo->AddPath("/usr/local/share/fonts"); + } + return pInfo; +} +FX_BOOL CFX_LinuxFontInfo::ParseFontCfg(const char** pUserPaths) { + if (!pUserPaths) { + return FALSE; + } + for (const char** pPath = pUserPaths; *pPath; ++pPath) { + AddPath(*pPath); + } + return TRUE; +} +void CFX_GEModule::InitPlatform() { + m_pFontMgr->SetSystemFontInfo( + IFX_SystemFontInfo::CreateDefault(m_pUserFontPaths)); +} +void CFX_GEModule::DestroyPlatform() {} +#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ diff --git a/core/fxge/ge/fx_ge_path.cpp b/core/fxge/ge/fx_ge_path.cpp new file mode 100644 index 0000000000..0b52cdf9e4 --- /dev/null +++ b/core/fxge/ge/fx_ge_path.cpp @@ -0,0 +1,656 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxcrt/fx_system.h" +#include "core/include/fxge/fx_ge.h" +#include "third_party/base/numerics/safe_math.h" + +CFX_ClipRgn::CFX_ClipRgn(int width, int height) { + m_Type = RectI; + m_Box.left = m_Box.top = 0; + m_Box.right = width; + m_Box.bottom = height; +} +CFX_ClipRgn::CFX_ClipRgn(const FX_RECT& rect) { + m_Type = RectI; + m_Box = rect; +} +CFX_ClipRgn::CFX_ClipRgn(const CFX_ClipRgn& src) { + m_Type = src.m_Type; + m_Box = src.m_Box; + m_Mask = src.m_Mask; +} +CFX_ClipRgn::~CFX_ClipRgn() {} +void CFX_ClipRgn::Reset(const FX_RECT& rect) { + m_Type = RectI; + m_Box = rect; + m_Mask.SetNull(); +} +void CFX_ClipRgn::IntersectRect(const FX_RECT& rect) { + if (m_Type == RectI) { + m_Box.Intersect(rect); + return; + } + if (m_Type == MaskF) { + IntersectMaskRect(rect, m_Box, m_Mask); + return; + } +} +void CFX_ClipRgn::IntersectMaskRect(FX_RECT rect, + FX_RECT mask_rect, + CFX_DIBitmapRef Mask) { + const CFX_DIBitmap* mask_dib = Mask; + m_Type = MaskF; + m_Box = rect; + m_Box.Intersect(mask_rect); + if (m_Box.IsEmpty()) { + m_Type = RectI; + return; + } + if (m_Box == mask_rect) { + m_Mask = Mask; + return; + } + CFX_DIBitmap* new_dib = m_Mask.New(); + if (!new_dib) { + return; + } + new_dib->Create(m_Box.Width(), m_Box.Height(), FXDIB_8bppMask); + for (int row = m_Box.top; row < m_Box.bottom; row++) { + uint8_t* dest_scan = + new_dib->GetBuffer() + new_dib->GetPitch() * (row - m_Box.top); + uint8_t* src_scan = + mask_dib->GetBuffer() + mask_dib->GetPitch() * (row - mask_rect.top); + for (int col = m_Box.left; col < m_Box.right; col++) { + dest_scan[col - m_Box.left] = src_scan[col - mask_rect.left]; + } + } +} +void CFX_ClipRgn::IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask) { + const CFX_DIBitmap* mask_dib = Mask; + ASSERT(mask_dib->GetFormat() == FXDIB_8bppMask); + FX_RECT mask_box(left, top, left + mask_dib->GetWidth(), + top + mask_dib->GetHeight()); + if (m_Type == RectI) { + IntersectMaskRect(m_Box, mask_box, Mask); + return; + } + if (m_Type == MaskF) { + FX_RECT new_box = m_Box; + new_box.Intersect(mask_box); + if (new_box.IsEmpty()) { + m_Type = RectI; + m_Mask.SetNull(); + m_Box = new_box; + return; + } + CFX_DIBitmapRef new_mask; + CFX_DIBitmap* new_dib = new_mask.New(); + if (!new_dib) { + return; + } + new_dib->Create(new_box.Width(), new_box.Height(), FXDIB_8bppMask); + const CFX_DIBitmap* old_dib = m_Mask; + for (int row = new_box.top; row < new_box.bottom; row++) { + uint8_t* old_scan = + old_dib->GetBuffer() + (row - m_Box.top) * old_dib->GetPitch(); + uint8_t* mask_scan = + mask_dib->GetBuffer() + (row - top) * mask_dib->GetPitch(); + uint8_t* new_scan = + new_dib->GetBuffer() + (row - new_box.top) * new_dib->GetPitch(); + for (int col = new_box.left; col < new_box.right; col++) { + new_scan[col - new_box.left] = + old_scan[col - m_Box.left] * mask_scan[col - left] / 255; + } + } + m_Box = new_box; + m_Mask = new_mask; + return; + } + ASSERT(FALSE); +} +CFX_PathData::CFX_PathData() { + m_PointCount = m_AllocCount = 0; + m_pPoints = NULL; +} +CFX_PathData::~CFX_PathData() { + FX_Free(m_pPoints); +} +void CFX_PathData::SetPointCount(int nPoints) { + m_PointCount = nPoints; + if (m_AllocCount < nPoints) { + FX_Free(m_pPoints); + m_pPoints = FX_Alloc(FX_PATHPOINT, nPoints); + m_AllocCount = nPoints; + } +} +void CFX_PathData::AllocPointCount(int nPoints) { + if (m_AllocCount < nPoints) { + FX_PATHPOINT* pNewBuf = FX_Alloc(FX_PATHPOINT, nPoints); + if (m_PointCount) { + FXSYS_memcpy(pNewBuf, m_pPoints, m_PointCount * sizeof(FX_PATHPOINT)); + } + FX_Free(m_pPoints); + m_pPoints = pNewBuf; + m_AllocCount = nPoints; + } +} +CFX_PathData::CFX_PathData(const CFX_PathData& src) { + m_PointCount = m_AllocCount = src.m_PointCount; + m_pPoints = FX_Alloc(FX_PATHPOINT, src.m_PointCount); + FXSYS_memcpy(m_pPoints, src.m_pPoints, sizeof(FX_PATHPOINT) * m_PointCount); +} +void CFX_PathData::TrimPoints(int nPoints) { + if (m_PointCount <= nPoints) { + return; + } + SetPointCount(nPoints); +} +void CFX_PathData::AddPointCount(int addPoints) { + pdfium::base::CheckedNumeric safe_new_count = m_PointCount; + safe_new_count += addPoints; + int new_count = safe_new_count.ValueOrDie(); + AllocPointCount(new_count); + m_PointCount = new_count; +} +void CFX_PathData::Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix) { + int old_count = m_PointCount; + AddPointCount(pSrc->m_PointCount); + FXSYS_memcpy(m_pPoints + old_count, pSrc->m_pPoints, + pSrc->m_PointCount * sizeof(FX_PATHPOINT)); + if (pMatrix) { + for (int i = 0; i < pSrc->m_PointCount; i++) { + pMatrix->Transform(m_pPoints[old_count + i].m_PointX, + m_pPoints[old_count + i].m_PointY); + } + } +} +void CFX_PathData::SetPoint(int index, FX_FLOAT x, FX_FLOAT y, int flag) { + ASSERT(index < m_PointCount); + m_pPoints[index].m_PointX = x; + m_pPoints[index].m_PointY = y; + m_pPoints[index].m_Flag = flag; +} +void CFX_PathData::AppendRect(FX_FLOAT left, + FX_FLOAT bottom, + FX_FLOAT right, + FX_FLOAT top) { + int old_count = m_PointCount; + AddPointCount(5); + FX_PATHPOINT* pPoints = m_pPoints + old_count; + pPoints[0].m_PointX = pPoints[1].m_PointX = pPoints[4].m_PointX = left; + pPoints[2].m_PointX = pPoints[3].m_PointX = right; + pPoints[0].m_PointY = pPoints[3].m_PointY = pPoints[4].m_PointY = bottom; + pPoints[1].m_PointY = pPoints[2].m_PointY = top; + pPoints[0].m_Flag = FXPT_MOVETO; + pPoints[1].m_Flag = pPoints[2].m_Flag = pPoints[3].m_Flag = FXPT_LINETO; + pPoints[4].m_Flag = FXPT_LINETO | FXPT_CLOSEFIGURE; +} +CFX_FloatRect CFX_PathData::GetBoundingBox() const { + CFX_FloatRect rect; + if (m_PointCount) { + rect.InitRect(m_pPoints[0].m_PointX, m_pPoints[0].m_PointY); + for (int i = 1; i < m_PointCount; i++) { + rect.UpdateRect(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY); + } + } + return rect; +} +static void _UpdateLineEndPoints(CFX_FloatRect& rect, + FX_FLOAT start_x, + FX_FLOAT start_y, + FX_FLOAT end_x, + FX_FLOAT end_y, + FX_FLOAT hw) { + if (start_x == end_x) { + if (start_y == end_y) { + rect.UpdateRect(end_x + hw, end_y + hw); + rect.UpdateRect(end_x - hw, end_y - hw); + return; + } + FX_FLOAT point_y; + if (end_y < start_y) { + point_y = end_y - hw; + } else { + point_y = end_y + hw; + } + rect.UpdateRect(end_x + hw, point_y); + rect.UpdateRect(end_x - hw, point_y); + return; + } + if (start_y == end_y) { + FX_FLOAT point_x; + if (end_x < start_x) { + point_x = end_x - hw; + } else { + point_x = end_x + hw; + } + rect.UpdateRect(point_x, end_y + hw); + rect.UpdateRect(point_x, end_y - hw); + return; + } + FX_FLOAT dx = end_x - start_x; + FX_FLOAT dy = end_y - start_y; + FX_FLOAT ll = FXSYS_sqrt2(dx, dy); + FX_FLOAT mx = end_x + hw * dx / ll; + FX_FLOAT my = end_y + hw * dy / ll; + FX_FLOAT dx1 = hw * dy / ll; + FX_FLOAT dy1 = hw * dx / ll; + rect.UpdateRect(mx - dx1, my + dy1); + rect.UpdateRect(mx + dx1, my - dy1); +} +static void _UpdateLineJoinPoints(CFX_FloatRect& rect, + FX_FLOAT start_x, + FX_FLOAT start_y, + FX_FLOAT middle_x, + FX_FLOAT middle_y, + FX_FLOAT end_x, + FX_FLOAT end_y, + FX_FLOAT half_width, + FX_FLOAT miter_limit) { + FX_FLOAT start_k = 0, start_c = 0, end_k = 0, end_c = 0, start_len = 0, + start_dc = 0, end_len = 0, end_dc = 0; + FX_BOOL bStartVert = FXSYS_fabs(start_x - middle_x) < 1.0f / 20; + FX_BOOL bEndVert = FXSYS_fabs(middle_x - end_x) < 1.0f / 20; + if (bStartVert && bEndVert) { + int start_dir = middle_y > start_y ? 1 : -1; + FX_FLOAT point_y = middle_y + half_width * start_dir; + rect.UpdateRect(middle_x + half_width, point_y); + rect.UpdateRect(middle_x - half_width, point_y); + return; + } + if (!bStartVert) { + start_k = (middle_y - start_y) / (middle_x - start_x); + start_c = middle_y - (start_k * middle_x); + start_len = FXSYS_sqrt2(start_x - middle_x, start_y - middle_y); + start_dc = + (FX_FLOAT)FXSYS_fabs(half_width * start_len / (start_x - middle_x)); + } + if (!bEndVert) { + end_k = (end_y - middle_y) / (end_x - middle_x); + end_c = middle_y - (end_k * middle_x); + end_len = FXSYS_sqrt2(end_x - middle_x, end_y - middle_y); + end_dc = (FX_FLOAT)FXSYS_fabs(half_width * end_len / (end_x - middle_x)); + } + if (bStartVert) { + FX_FLOAT outside_x = start_x; + if (end_x < start_x) { + outside_x += half_width; + } else { + outside_x -= half_width; + } + FX_FLOAT outside_y; + if (start_y < (end_k * start_x) + end_c) { + outside_y = (end_k * outside_x) + end_c + end_dc; + } else { + outside_y = (end_k * outside_x) + end_c - end_dc; + } + rect.UpdateRect(outside_x, outside_y); + return; + } + if (bEndVert) { + FX_FLOAT outside_x = end_x; + if (start_x < end_x) { + outside_x += half_width; + } else { + outside_x -= half_width; + } + FX_FLOAT outside_y; + if (end_y < (start_k * end_x) + start_c) { + outside_y = (start_k * outside_x) + start_c + start_dc; + } else { + outside_y = (start_k * outside_x) + start_c - start_dc; + } + rect.UpdateRect(outside_x, outside_y); + return; + } + if (FXSYS_fabs(start_k - end_k) < 1.0f / 20) { + int start_dir = middle_x > start_x ? 1 : -1; + int end_dir = end_x > middle_x ? 1 : -1; + if (start_dir == end_dir) { + _UpdateLineEndPoints(rect, middle_x, middle_y, end_x, end_y, half_width); + } else { + _UpdateLineEndPoints(rect, start_x, start_y, middle_x, middle_y, + half_width); + } + return; + } + FX_FLOAT start_outside_c = start_c; + if (end_y < (start_k * end_x) + start_c) { + start_outside_c += start_dc; + } else { + start_outside_c -= start_dc; + } + FX_FLOAT end_outside_c = end_c; + if (start_y < (end_k * start_x) + end_c) { + end_outside_c += end_dc; + } else { + end_outside_c -= end_dc; + } + FX_FLOAT join_x = (end_outside_c - start_outside_c) / (start_k - end_k); + FX_FLOAT join_y = (start_k * join_x) + start_outside_c; + rect.UpdateRect(join_x, join_y); +} +CFX_FloatRect CFX_PathData::GetBoundingBox(FX_FLOAT line_width, + FX_FLOAT miter_limit) const { + CFX_FloatRect rect(100000 * 1.0f, 100000 * 1.0f, -100000 * 1.0f, + -100000 * 1.0f); + int iPoint = 0; + FX_FLOAT half_width = line_width; + int iStartPoint, iEndPoint, iMiddlePoint; + FX_BOOL bJoin; + while (iPoint < m_PointCount) { + if (m_pPoints[iPoint].m_Flag == FXPT_MOVETO) { + iStartPoint = iPoint + 1; + iEndPoint = iPoint; + bJoin = FALSE; + } else { + if (m_pPoints[iPoint].m_Flag == FXPT_BEZIERTO) { + rect.UpdateRect(m_pPoints[iPoint].m_PointX, m_pPoints[iPoint].m_PointY); + rect.UpdateRect(m_pPoints[iPoint + 1].m_PointX, + m_pPoints[iPoint + 1].m_PointY); + iPoint += 2; + } + if (iPoint == m_PointCount - 1 || + m_pPoints[iPoint + 1].m_Flag == FXPT_MOVETO) { + iStartPoint = iPoint - 1; + iEndPoint = iPoint; + bJoin = FALSE; + } else { + iStartPoint = iPoint - 1; + iMiddlePoint = iPoint; + iEndPoint = iPoint + 1; + bJoin = TRUE; + } + } + FX_FLOAT start_x = m_pPoints[iStartPoint].m_PointX; + FX_FLOAT start_y = m_pPoints[iStartPoint].m_PointY; + FX_FLOAT end_x = m_pPoints[iEndPoint].m_PointX; + FX_FLOAT end_y = m_pPoints[iEndPoint].m_PointY; + if (bJoin) { + FX_FLOAT middle_x = m_pPoints[iMiddlePoint].m_PointX; + FX_FLOAT middle_y = m_pPoints[iMiddlePoint].m_PointY; + _UpdateLineJoinPoints(rect, start_x, start_y, middle_x, middle_y, end_x, + end_y, half_width, miter_limit); + } else { + _UpdateLineEndPoints(rect, start_x, start_y, end_x, end_y, half_width); + } + iPoint++; + } + return rect; +} +void CFX_PathData::Transform(const CFX_Matrix* pMatrix) { + if (!pMatrix) { + return; + } + for (int i = 0; i < m_PointCount; i++) { + pMatrix->Transform(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY); + } +} +FX_BOOL CFX_PathData::GetZeroAreaPath(CFX_PathData& NewPath, + CFX_Matrix* pMatrix, + FX_BOOL& bThin, + FX_BOOL bAdjust) const { + if (m_PointCount < 3) { + return FALSE; + } + if (m_PointCount == 3 && (m_pPoints[0].m_Flag & FXPT_TYPE) == FXPT_MOVETO && + (m_pPoints[1].m_Flag & FXPT_TYPE) == FXPT_LINETO && + (m_pPoints[2].m_Flag & FXPT_TYPE) == FXPT_LINETO && + m_pPoints[0].m_PointX == m_pPoints[2].m_PointX && + m_pPoints[0].m_PointY == m_pPoints[2].m_PointY) { + NewPath.AddPointCount(2); + if (bAdjust) { + if (pMatrix) { + FX_FLOAT x = m_pPoints[0].m_PointX, y = m_pPoints[0].m_PointY; + pMatrix->TransformPoint(x, y); + x = (int)x + 0.5f; + y = (int)y + 0.5f; + NewPath.SetPoint(0, x, y, FXPT_MOVETO); + x = m_pPoints[1].m_PointX, y = m_pPoints[1].m_PointY; + pMatrix->TransformPoint(x, y); + x = (int)x + 0.5f; + y = (int)y + 0.5f; + NewPath.SetPoint(1, x, y, FXPT_LINETO); + pMatrix->SetIdentity(); + } else { + FX_FLOAT x = (int)m_pPoints[0].m_PointX + 0.5f, + y = (int)m_pPoints[0].m_PointY + 0.5f; + NewPath.SetPoint(0, x, y, FXPT_MOVETO); + x = (int)m_pPoints[1].m_PointX + 0.5f, + y = (int)m_pPoints[1].m_PointY + 0.5f; + NewPath.SetPoint(1, x, y, FXPT_LINETO); + } + } else { + NewPath.SetPoint(0, m_pPoints[0].m_PointX, m_pPoints[0].m_PointY, + FXPT_MOVETO); + NewPath.SetPoint(1, m_pPoints[1].m_PointX, m_pPoints[1].m_PointY, + FXPT_LINETO); + } + if (m_pPoints[0].m_PointX != m_pPoints[1].m_PointX && + m_pPoints[0].m_PointY != m_pPoints[1].m_PointY) { + bThin = TRUE; + } + return TRUE; + } + if (((m_PointCount > 3) && (m_PointCount % 2))) { + int mid = m_PointCount / 2; + FX_BOOL bZeroArea = FALSE; + CFX_PathData t_path; + for (int i = 0; i < mid; i++) { + if (!(m_pPoints[mid - i - 1].m_PointX == + m_pPoints[mid + i + 1].m_PointX && + m_pPoints[mid - i - 1].m_PointY == + m_pPoints[mid + i + 1].m_PointY && + ((m_pPoints[mid - i - 1].m_Flag & FXPT_TYPE) != FXPT_BEZIERTO && + (m_pPoints[mid + i + 1].m_Flag & FXPT_TYPE) != FXPT_BEZIERTO))) { + bZeroArea = TRUE; + break; + } + int new_count = t_path.GetPointCount(); + t_path.AddPointCount(2); + t_path.SetPoint(new_count, m_pPoints[mid - i].m_PointX, + m_pPoints[mid - i].m_PointY, FXPT_MOVETO); + t_path.SetPoint(new_count + 1, m_pPoints[mid - i - 1].m_PointX, + m_pPoints[mid - i - 1].m_PointY, FXPT_LINETO); + } + if (!bZeroArea) { + NewPath.Append(&t_path, NULL); + bThin = TRUE; + return TRUE; + } + } + int stratPoint = 0; + int next = 0, i; + for (i = 0; i < m_PointCount; i++) { + int point_type = m_pPoints[i].m_Flag & FXPT_TYPE; + if (point_type == FXPT_MOVETO) { + stratPoint = i; + } else if (point_type == FXPT_LINETO) { + next = (i + 1 - stratPoint) % (m_PointCount - stratPoint) + stratPoint; + if ((m_pPoints[next].m_Flag & FXPT_TYPE) != FXPT_BEZIERTO && + (m_pPoints[next].m_Flag & FXPT_TYPE) != FXPT_MOVETO) { + if ((m_pPoints[i - 1].m_PointX == m_pPoints[i].m_PointX && + m_pPoints[i].m_PointX == m_pPoints[next].m_PointX) && + ((m_pPoints[i].m_PointY - m_pPoints[i - 1].m_PointY) * + (m_pPoints[i].m_PointY - m_pPoints[next].m_PointY) > + 0)) { + int pre = i; + if (FXSYS_fabs(m_pPoints[i].m_PointY - m_pPoints[i - 1].m_PointY) < + FXSYS_fabs(m_pPoints[i].m_PointY - m_pPoints[next].m_PointY)) { + pre--; + next--; + } + int new_count = NewPath.GetPointCount(); + NewPath.AddPointCount(2); + NewPath.SetPoint(new_count, m_pPoints[pre].m_PointX, + m_pPoints[pre].m_PointY, FXPT_MOVETO); + NewPath.SetPoint(new_count + 1, m_pPoints[next].m_PointX, + m_pPoints[next].m_PointY, FXPT_LINETO); + } else if ((m_pPoints[i - 1].m_PointY == m_pPoints[i].m_PointY && + m_pPoints[i].m_PointY == m_pPoints[next].m_PointY) && + ((m_pPoints[i].m_PointX - m_pPoints[i - 1].m_PointX) * + (m_pPoints[i].m_PointX - m_pPoints[next].m_PointX) > + 0)) { + int pre = i; + if (FXSYS_fabs(m_pPoints[i].m_PointX - m_pPoints[i - 1].m_PointX) < + FXSYS_fabs(m_pPoints[i].m_PointX - m_pPoints[next].m_PointX)) { + pre--; + next--; + } + int new_count = NewPath.GetPointCount(); + NewPath.AddPointCount(2); + NewPath.SetPoint(new_count, m_pPoints[pre].m_PointX, + m_pPoints[pre].m_PointY, FXPT_MOVETO); + NewPath.SetPoint(new_count + 1, m_pPoints[next].m_PointX, + m_pPoints[next].m_PointY, FXPT_LINETO); + } else if ((m_pPoints[i - 1].m_Flag & FXPT_TYPE) == FXPT_MOVETO && + (m_pPoints[next].m_Flag & FXPT_TYPE) == FXPT_LINETO && + m_pPoints[i - 1].m_PointX == m_pPoints[next].m_PointX && + m_pPoints[i - 1].m_PointY == m_pPoints[next].m_PointY && + m_pPoints[next].m_Flag & FXPT_CLOSEFIGURE) { + int new_count = NewPath.GetPointCount(); + NewPath.AddPointCount(2); + NewPath.SetPoint(new_count, m_pPoints[i - 1].m_PointX, + m_pPoints[i - 1].m_PointY, FXPT_MOVETO); + NewPath.SetPoint(new_count + 1, m_pPoints[i].m_PointX, + m_pPoints[i].m_PointY, FXPT_LINETO); + bThin = TRUE; + } + } + } else if (point_type == FXPT_BEZIERTO) { + i += 2; + continue; + } + } + if (m_PointCount > 3 && NewPath.GetPointCount()) { + bThin = TRUE; + } + if (NewPath.GetPointCount() == 0) { + return FALSE; + } + return TRUE; +} +FX_BOOL CFX_PathData::IsRect() const { + if (m_PointCount != 5 && m_PointCount != 4) { + return FALSE; + } + if ((m_PointCount == 5 && (m_pPoints[0].m_PointX != m_pPoints[4].m_PointX || + m_pPoints[0].m_PointY != m_pPoints[4].m_PointY)) || + (m_pPoints[0].m_PointX == m_pPoints[2].m_PointX && + m_pPoints[0].m_PointY == m_pPoints[2].m_PointY) || + (m_pPoints[1].m_PointX == m_pPoints[3].m_PointX && + m_pPoints[1].m_PointY == m_pPoints[3].m_PointY)) { + return FALSE; + } + if (m_pPoints[0].m_PointX != m_pPoints[3].m_PointX && + m_pPoints[0].m_PointY != m_pPoints[3].m_PointY) { + return FALSE; + } + for (int i = 1; i < 4; i++) { + if ((m_pPoints[i].m_Flag & FXPT_TYPE) != FXPT_LINETO) { + return FALSE; + } + if (m_pPoints[i].m_PointX != m_pPoints[i - 1].m_PointX && + m_pPoints[i].m_PointY != m_pPoints[i - 1].m_PointY) { + return FALSE; + } + } + return m_PointCount == 5 || (m_pPoints[3].m_Flag & FXPT_CLOSEFIGURE); +} +FX_BOOL CFX_PathData::IsRect(const CFX_Matrix* pMatrix, + CFX_FloatRect* pRect) const { + if (!pMatrix) { + if (!IsRect()) { + return FALSE; + } + if (pRect) { + pRect->left = m_pPoints[0].m_PointX; + pRect->right = m_pPoints[2].m_PointX; + pRect->bottom = m_pPoints[0].m_PointY; + pRect->top = m_pPoints[2].m_PointY; + pRect->Normalize(); + } + return TRUE; + } + if (m_PointCount != 5 && m_PointCount != 4) { + return FALSE; + } + if ((m_PointCount == 5 && (m_pPoints[0].m_PointX != m_pPoints[4].m_PointX || + m_pPoints[0].m_PointY != m_pPoints[4].m_PointY)) || + (m_pPoints[1].m_PointX == m_pPoints[3].m_PointX && + m_pPoints[1].m_PointY == m_pPoints[3].m_PointY)) { + return FALSE; + } + if (m_PointCount == 4 && m_pPoints[0].m_PointX != m_pPoints[3].m_PointX && + m_pPoints[0].m_PointY != m_pPoints[3].m_PointY) { + return FALSE; + } + FX_FLOAT x[5], y[5]; + for (int i = 0; i < m_PointCount; i++) { + pMatrix->Transform(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY, x[i], + y[i]); + if (i) { + if ((m_pPoints[i].m_Flag & FXPT_TYPE) != FXPT_LINETO) { + return FALSE; + } + if (x[i] != x[i - 1] && y[i] != y[i - 1]) { + return FALSE; + } + } + } + if (pRect) { + pRect->left = x[0]; + pRect->right = x[2]; + pRect->bottom = y[0]; + pRect->top = y[2]; + pRect->Normalize(); + } + return TRUE; +} +void CFX_PathData::Copy(const CFX_PathData& src) { + SetPointCount(src.m_PointCount); + FXSYS_memcpy(m_pPoints, src.m_pPoints, sizeof(FX_PATHPOINT) * m_PointCount); +} +CFX_GraphStateData::CFX_GraphStateData() { + m_LineCap = LineCapButt; + m_DashCount = 0; + m_DashArray = NULL; + m_DashPhase = 0; + m_LineJoin = LineJoinMiter; + m_MiterLimit = 10 * 1.0f; + m_LineWidth = 1.0f; +} +CFX_GraphStateData::CFX_GraphStateData(const CFX_GraphStateData& src) { + m_DashArray = NULL; + Copy(src); +} +void CFX_GraphStateData::Copy(const CFX_GraphStateData& src) { + m_LineCap = src.m_LineCap; + m_DashCount = src.m_DashCount; + FX_Free(m_DashArray); + m_DashArray = NULL; + m_DashPhase = src.m_DashPhase; + m_LineJoin = src.m_LineJoin; + m_MiterLimit = src.m_MiterLimit; + m_LineWidth = src.m_LineWidth; + if (m_DashCount) { + m_DashArray = FX_Alloc(FX_FLOAT, m_DashCount); + FXSYS_memcpy(m_DashArray, src.m_DashArray, m_DashCount * sizeof(FX_FLOAT)); + } +} +CFX_GraphStateData::~CFX_GraphStateData() { + FX_Free(m_DashArray); +} +void CFX_GraphStateData::SetDashCount(int count) { + FX_Free(m_DashArray); + m_DashArray = NULL; + m_DashCount = count; + if (count == 0) { + return; + } + m_DashArray = FX_Alloc(FX_FLOAT, count); +} diff --git a/core/fxge/ge/fx_ge_ps.cpp b/core/fxge/ge/fx_ge_ps.cpp new file mode 100644 index 0000000000..2470025852 --- /dev/null +++ b/core/fxge/ge/fx_ge_ps.cpp @@ -0,0 +1,700 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxcodec/fx_codec.h" + +struct PSGlyph { + CFX_Font* m_pFont; + FX_DWORD m_GlyphIndex; + FX_BOOL m_bGlyphAdjust; + FX_FLOAT m_AdjustMatrix[4]; +}; +class CPSFont { + public: + PSGlyph m_Glyphs[256]; + int m_nGlyphs; +}; +CFX_PSRenderer::CFX_PSRenderer() { + m_pOutput = NULL; + m_bColorSet = m_bGraphStateSet = FALSE; + m_bInited = FALSE; +} +CFX_PSRenderer::~CFX_PSRenderer() { + for (int i = 0; i < (int)m_PSFontList.GetSize(); i++) { + CPSFont* pFont = m_PSFontList[i]; + delete pFont; + } +} +#define OUTPUT_PS(str) m_pOutput->OutputPS(str, sizeof str - 1) +void CFX_PSRenderer::Init(IFX_PSOutput* pOutput, + int pslevel, + int width, + int height, + FX_BOOL bCmykOutput) { + m_PSLevel = pslevel; + m_pOutput = pOutput; + m_ClipBox.left = m_ClipBox.top = 0; + m_ClipBox.right = width; + m_ClipBox.bottom = height; + m_bCmykOutput = bCmykOutput; +} +FX_BOOL CFX_PSRenderer::StartRendering() { + if (m_bInited) { + return TRUE; + } + static const char init_str[] = + "\nsave\n/im/initmatrix load def\n" + "/n/newpath load def/m/moveto load def/l/lineto load def/c/curveto load " + "def/h/closepath load def\n" + "/f/fill load def/F/eofill load def/s/stroke load def/W/clip load " + "def/W*/eoclip load def\n" + "/rg/setrgbcolor load def/k/setcmykcolor load def\n" + "/J/setlinecap load def/j/setlinejoin load def/w/setlinewidth load " + "def/M/setmiterlimit load def/d/setdash load def\n" + "/q/gsave load def/Q/grestore load def/iM/imagemask load def\n" + "/Tj/show load def/Ff/findfont load def/Fs/scalefont load def/Sf/setfont " + "load def\n" + "/cm/concat load def/Cm/currentmatrix load def/mx/matrix load " + "def/sm/setmatrix load def\n"; + OUTPUT_PS(init_str); + m_bInited = TRUE; + return TRUE; +} +void CFX_PSRenderer::EndRendering() { + if (m_bInited) { + OUTPUT_PS("\nrestore\n"); + } + m_bInited = FALSE; +} +void CFX_PSRenderer::SaveState() { + StartRendering(); + OUTPUT_PS("q\n"); + m_ClipBoxStack.Add(m_ClipBox); +} +void CFX_PSRenderer::RestoreState(FX_BOOL bKeepSaved) { + StartRendering(); + if (bKeepSaved) { + OUTPUT_PS("Q\nq\n"); + } else { + OUTPUT_PS("Q\n"); + } + m_bColorSet = m_bGraphStateSet = FALSE; + m_ClipBox = m_ClipBoxStack.GetAt(m_ClipBoxStack.GetSize() - 1); + if (!bKeepSaved) { + m_ClipBoxStack.RemoveAt(m_ClipBoxStack.GetSize() - 1); + } +} +void CFX_PSRenderer::OutputPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device) { + int nPoints = pPathData->GetPointCount(); + CFX_ByteTextBuf buf; + buf.EstimateSize(nPoints * 10); + for (int i = 0; i < nPoints; i++) { + uint8_t flag = pPathData->GetFlag(i); + FX_FLOAT x = pPathData->GetPointX(i); + FX_FLOAT y = pPathData->GetPointY(i); + if (pObject2Device) { + pObject2Device->Transform(x, y); + } + buf << x << " " << y; + switch (flag & FXPT_TYPE) { + case FXPT_MOVETO: + buf << " m "; + break; + case FXPT_LINETO: + if (flag & FXPT_CLOSEFIGURE) { + buf << " l h "; + } else { + buf << " l "; + } + break; + case FXPT_BEZIERTO: { + FX_FLOAT x1 = pPathData->GetPointX(i + 1); + FX_FLOAT x2 = pPathData->GetPointX(i + 2); + FX_FLOAT y1 = pPathData->GetPointY(i + 1); + FX_FLOAT y2 = pPathData->GetPointY(i + 2); + if (pObject2Device) { + pObject2Device->Transform(x1, y1); + pObject2Device->Transform(x2, y2); + } + buf << " " << x1 << " " << y1 << " " << x2 << " " << y2; + if (flag & FXPT_CLOSEFIGURE) { + buf << " c h\n"; + } else { + buf << " c\n"; + } + i += 2; + break; + } + } + } + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); +} +void CFX_PSRenderer::SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) { + StartRendering(); + OutputPath(pPathData, pObject2Device); + CFX_FloatRect rect = pPathData->GetBoundingBox(); + if (pObject2Device) { + rect.Transform(pObject2Device); + } + m_ClipBox.Intersect(rect.GetOutterRect()); + if ((fill_mode & 3) == FXFILL_WINDING) { + OUTPUT_PS("W n\n"); + } else { + OUTPUT_PS("W* n\n"); + } +} +void CFX_PSRenderer::SetClip_PathStroke(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) { + StartRendering(); + SetGraphState(pGraphState); + if (pObject2Device) { + CFX_ByteTextBuf buf; + buf << "mx Cm [" << pObject2Device->a << " " << pObject2Device->b << " " + << pObject2Device->c << " " << pObject2Device->d << " " + << pObject2Device->e << " " << pObject2Device->f << "]cm "; + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + } + OutputPath(pPathData, NULL); + CFX_FloatRect rect = pPathData->GetBoundingBox(pGraphState->m_LineWidth, + pGraphState->m_MiterLimit); + rect.Transform(pObject2Device); + m_ClipBox.Intersect(rect.GetOutterRect()); + if (pObject2Device) { + OUTPUT_PS("strokepath W n sm\n"); + } else { + OUTPUT_PS("strokepath W n\n"); + } +} +FX_BOOL CFX_PSRenderer::DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform) { + StartRendering(); + int fill_alpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? FXGETFLAG_ALPHA_FILL(alpha_flag) + : FXARGB_A(fill_color); + int stroke_alpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? FXGETFLAG_ALPHA_STROKE(alpha_flag) + : FXARGB_A(stroke_color); + if (fill_alpha && fill_alpha < 255) { + return FALSE; + } + if (stroke_alpha && stroke_alpha < 255) { + return FALSE; + } + if (fill_alpha == 0 && stroke_alpha == 0) { + return FALSE; + } + if (stroke_alpha) { + SetGraphState(pGraphState); + if (pObject2Device) { + CFX_ByteTextBuf buf; + buf << "mx Cm [" << pObject2Device->a << " " << pObject2Device->b << " " + << pObject2Device->c << " " << pObject2Device->d << " " + << pObject2Device->e << " " << pObject2Device->f << "]cm "; + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + } + } + OutputPath(pPathData, stroke_alpha ? NULL : pObject2Device); + if (fill_mode && fill_alpha) { + SetColor(fill_color, alpha_flag, pIccTransform); + if ((fill_mode & 3) == FXFILL_WINDING) { + if (stroke_alpha) { + OUTPUT_PS("q f Q "); + } else { + OUTPUT_PS("f"); + } + } else if ((fill_mode & 3) == FXFILL_ALTERNATE) { + if (stroke_alpha) { + OUTPUT_PS("q F Q "); + } else { + OUTPUT_PS("F"); + } + } + } + if (stroke_alpha) { + SetColor(stroke_color, alpha_flag, pIccTransform); + if (pObject2Device) { + OUTPUT_PS("s sm"); + } else { + OUTPUT_PS("s"); + } + } + OUTPUT_PS("\n"); + return TRUE; +} +void CFX_PSRenderer::SetGraphState(const CFX_GraphStateData* pGraphState) { + CFX_ByteTextBuf buf; + if (!m_bGraphStateSet || + m_CurGraphState.m_LineCap != pGraphState->m_LineCap) { + buf << pGraphState->m_LineCap << " J\n"; + } + if (!m_bGraphStateSet || + m_CurGraphState.m_DashCount != pGraphState->m_DashCount || + FXSYS_memcmp(m_CurGraphState.m_DashArray, pGraphState->m_DashArray, + sizeof(FX_FLOAT) * m_CurGraphState.m_DashCount)) { + buf << "["; + for (int i = 0; i < pGraphState->m_DashCount; i++) { + buf << pGraphState->m_DashArray[i] << " "; + } + buf << "]" << pGraphState->m_DashPhase << " d\n"; + } + if (!m_bGraphStateSet || + m_CurGraphState.m_LineJoin != pGraphState->m_LineJoin) { + buf << pGraphState->m_LineJoin << " j\n"; + } + if (!m_bGraphStateSet || + m_CurGraphState.m_LineWidth != pGraphState->m_LineWidth) { + buf << pGraphState->m_LineWidth << " w\n"; + } + if (!m_bGraphStateSet || + m_CurGraphState.m_MiterLimit != pGraphState->m_MiterLimit) { + buf << pGraphState->m_MiterLimit << " M\n"; + } + m_CurGraphState.Copy(*pGraphState); + m_bGraphStateSet = TRUE; + if (buf.GetSize()) { + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + } +} +static void FaxCompressData(uint8_t* src_buf, + int width, + int height, + uint8_t*& dest_buf, + FX_DWORD& dest_size) { + CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); + if (width * height > 128 && pEncoders && + pEncoders->GetFaxModule()->Encode(src_buf, width, height, (width + 7) / 8, + dest_buf, dest_size)) { + FX_Free(src_buf); + } else { + dest_buf = src_buf; + dest_size = (width + 7) / 8 * height; + } +} +static void PSCompressData(int PSLevel, + uint8_t* src_buf, + FX_DWORD src_size, + uint8_t*& output_buf, + FX_DWORD& output_size, + const FX_CHAR*& filter) { + output_buf = src_buf; + output_size = src_size; + filter = ""; + if (src_size < 1024) { + return; + } + CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); + uint8_t* dest_buf = NULL; + FX_DWORD dest_size = src_size; + if (PSLevel >= 3) { + if (pEncoders && + pEncoders->GetFlateModule()->Encode(src_buf, src_size, dest_buf, + dest_size)) { + filter = "/FlateDecode filter "; + } + } else { + if (pEncoders && + pEncoders->GetBasicModule()->RunLengthEncode(src_buf, src_size, + dest_buf, dest_size)) { + filter = "/RunLengthDecode filter "; + } + } + if (dest_size < src_size) { + output_buf = dest_buf; + output_size = dest_size; + } else { + filter = NULL; + FX_Free(dest_buf); + } +} +FX_BOOL CFX_PSRenderer::SetDIBits(const CFX_DIBSource* pSource, + FX_DWORD color, + int left, + int top, + int alpha_flag, + void* pIccTransform) { + StartRendering(); + CFX_Matrix matrix((FX_FLOAT)(pSource->GetWidth()), 0.0f, 0.0f, + -(FX_FLOAT)(pSource->GetHeight()), (FX_FLOAT)(left), + (FX_FLOAT)(top + pSource->GetHeight())); + return DrawDIBits(pSource, color, &matrix, 0, alpha_flag, pIccTransform); +} +FX_BOOL CFX_PSRenderer::StretchDIBits(const CFX_DIBSource* pSource, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform) { + StartRendering(); + CFX_Matrix matrix((FX_FLOAT)(dest_width), 0.0f, 0.0f, + (FX_FLOAT)(-dest_height), (FX_FLOAT)(dest_left), + (FX_FLOAT)(dest_top + dest_height)); + return DrawDIBits(pSource, color, &matrix, flags, alpha_flag, pIccTransform); +} +FX_BOOL CFX_PSRenderer::DrawDIBits(const CFX_DIBSource* pSource, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform) { + StartRendering(); + if ((pMatrix->a == 0 && pMatrix->b == 0) || + (pMatrix->c == 0 && pMatrix->d == 0)) { + return TRUE; + } + if (pSource->HasAlpha()) { + return FALSE; + } + int alpha = FXGETFLAG_COLORTYPE(alpha_flag) ? FXGETFLAG_ALPHA_FILL(color) + : FXARGB_A(color); + if (pSource->IsAlphaMask() && (alpha < 255 || pSource->GetBPP() != 1)) { + return FALSE; + } + OUTPUT_PS("q\n"); + CFX_ByteTextBuf buf; + buf << "[" << pMatrix->a << " " << pMatrix->b << " " << pMatrix->c << " " + << pMatrix->d << " " << pMatrix->e << " " << pMatrix->f << "]cm "; + int width = pSource->GetWidth(); + int height = pSource->GetHeight(); + buf << width << " " << height; + if (pSource->GetBPP() == 1 && !pSource->GetPalette()) { + int pitch = (width + 7) / 8; + FX_DWORD src_size = height * pitch; + uint8_t* src_buf = FX_Alloc(uint8_t, src_size); + for (int row = 0; row < height; row++) { + const uint8_t* src_scan = pSource->GetScanline(row); + FXSYS_memcpy(src_buf + row * pitch, src_scan, pitch); + } + uint8_t* output_buf; + FX_DWORD output_size; + FaxCompressData(src_buf, width, height, output_buf, output_size); + if (pSource->IsAlphaMask()) { + SetColor(color, alpha_flag, pIccTransform); + m_bColorSet = FALSE; + buf << " true["; + } else { + buf << " 1["; + } + buf << width << " 0 0 -" << height << " 0 " << height + << "]currentfile/ASCII85Decode filter "; + if (output_buf != src_buf) + buf << "<>/CCITTFaxDecode filter "; + if (pSource->IsAlphaMask()) { + buf << "iM\n"; + } else { + buf << "false 1 colorimage\n"; + } + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + WritePSBinary(output_buf, output_size); + FX_Free(output_buf); + } else { + CFX_DIBSource* pConverted = (CFX_DIBSource*)pSource; + if (pIccTransform) { + FXDIB_Format format = m_bCmykOutput ? FXDIB_Cmyk : FXDIB_Rgb; + pConverted = pSource->CloneConvert(format, NULL, pIccTransform); + } else { + switch (pSource->GetFormat()) { + case FXDIB_1bppRgb: + case FXDIB_Rgb32: + pConverted = pSource->CloneConvert(FXDIB_Rgb); + break; + case FXDIB_8bppRgb: + if (pSource->GetPalette()) { + pConverted = pSource->CloneConvert(FXDIB_Rgb); + } + break; + case FXDIB_1bppCmyk: + pConverted = pSource->CloneConvert(FXDIB_Cmyk); + break; + case FXDIB_8bppCmyk: + if (pSource->GetPalette()) { + pConverted = pSource->CloneConvert(FXDIB_Cmyk); + } + break; + default: + break; + } + } + if (!pConverted) { + OUTPUT_PS("\nQ\n"); + return FALSE; + } + int Bpp = pConverted->GetBPP() / 8; + uint8_t* output_buf = NULL; + FX_STRSIZE output_size = 0; + const FX_CHAR* filter = NULL; + if (flags & FXRENDER_IMAGE_LOSSY) { + CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); + if (pEncoders && + pEncoders->GetJpegModule()->Encode(pConverted, output_buf, + output_size)) { + filter = "/DCTDecode filter "; + } + } + if (!filter) { + int src_pitch = width * Bpp; + output_size = height * src_pitch; + output_buf = FX_Alloc(uint8_t, output_size); + for (int row = 0; row < height; row++) { + const uint8_t* src_scan = pConverted->GetScanline(row); + uint8_t* dest_scan = output_buf + row * src_pitch; + if (Bpp == 3) { + for (int col = 0; col < width; col++) { + *dest_scan++ = src_scan[2]; + *dest_scan++ = src_scan[1]; + *dest_scan++ = *src_scan; + src_scan += 3; + } + } else { + FXSYS_memcpy(dest_scan, src_scan, src_pitch); + } + } + uint8_t* compressed_buf; + FX_DWORD compressed_size; + PSCompressData(m_PSLevel, output_buf, output_size, compressed_buf, + compressed_size, filter); + if (output_buf != compressed_buf) { + FX_Free(output_buf); + } + output_buf = compressed_buf; + output_size = compressed_size; + } + if (pConverted != pSource) { + delete pConverted; + pConverted = NULL; + } + buf << " 8["; + buf << width << " 0 0 -" << height << " 0 " << height << "]"; + buf << "currentfile/ASCII85Decode filter "; + if (filter) { + buf << filter; + } + buf << "false " << Bpp; + buf << " colorimage\n"; + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + WritePSBinary(output_buf, output_size); + FX_Free(output_buf); + } + OUTPUT_PS("\nQ\n"); + return TRUE; +} +void CFX_PSRenderer::SetColor(FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + if (!CFX_GEModule::Get()->GetCodecModule() || + !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + pIccTransform = NULL; + } + FX_BOOL bCMYK = FALSE; + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + color = FXGETFLAG_COLORTYPE(alpha_flag) ? FXCMYK_TODIB(color) + : FXARGB_TODIB(color); + uint8_t* pColor = (uint8_t*)&color; + pIccModule->TranslateScanline(pIccTransform, pColor, pColor, 1); + color = m_bCmykOutput ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); + bCMYK = m_bCmykOutput; + } else { + bCMYK = FXGETFLAG_COLORTYPE(alpha_flag); + } + if (bCMYK != m_bCmykOutput || !m_bColorSet || m_LastColor != color) { + CFX_ByteTextBuf buf; + if (bCMYK) { + buf << FXSYS_GetCValue(color) / 255.0 << " " + << FXSYS_GetMValue(color) / 255.0 << " " + << FXSYS_GetYValue(color) / 255.0 << " " + << FXSYS_GetKValue(color) / 255.0 << " k\n"; + } else { + buf << FXARGB_R(color) / 255.0 << " " << FXARGB_G(color) / 255.0 << " " + << FXARGB_B(color) / 255.0 << " rg\n"; + } + if (bCMYK == m_bCmykOutput) { + m_bColorSet = TRUE; + m_LastColor = color; + } + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + } +} +void CFX_PSRenderer::FindPSFontGlyph(CFX_FaceCache* pFaceCache, + CFX_Font* pFont, + const FXTEXT_CHARPOS& charpos, + int& ps_fontnum, + int& ps_glyphindex) { + for (int i = 0; i < (int)m_PSFontList.GetSize(); i++) { + CPSFont* pPSFont = m_PSFontList[i]; + for (int j = 0; j < pPSFont->m_nGlyphs; j++) + if (pPSFont->m_Glyphs[j].m_pFont == pFont && + pPSFont->m_Glyphs[j].m_GlyphIndex == charpos.m_GlyphIndex) { + if ((!pPSFont->m_Glyphs[j].m_bGlyphAdjust && !charpos.m_bGlyphAdjust) || + (pPSFont->m_Glyphs[j].m_bGlyphAdjust && charpos.m_bGlyphAdjust && + (FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[0] - + charpos.m_AdjustMatrix[0]) < 0.01 && + FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[1] - + charpos.m_AdjustMatrix[1]) < 0.01 && + FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[2] - + charpos.m_AdjustMatrix[2]) < 0.01 && + FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[3] - + charpos.m_AdjustMatrix[3]) < 0.01))) { + ps_fontnum = i; + ps_glyphindex = j; + return; + } + } + } + if (m_PSFontList.GetSize() == 0 || + m_PSFontList[m_PSFontList.GetSize() - 1]->m_nGlyphs == 256) { + CPSFont* pPSFont = new CPSFont; + pPSFont->m_nGlyphs = 0; + m_PSFontList.Add(pPSFont); + CFX_ByteTextBuf buf; + buf << "8 dict begin/FontType 3 def/FontMatrix[1 0 0 1 0 0]def\n" + "/FontBBox[0 0 0 0]def/Encoding 256 array def 0 1 255{Encoding " + "exch/.notdef put}for\n" + "/CharProcs 1 dict def CharProcs begin/.notdef {} def end\n" + "/BuildGlyph{1 0 -10 -10 10 10 setcachedevice exch/CharProcs get " + "exch 2 copy known not{pop/.notdef}if get exec}bind def\n" + "/BuildChar{1 index/Encoding get exch get 1 index/BuildGlyph get " + "exec}bind def\n" + "currentdict end\n"; + buf << "/X" << m_PSFontList.GetSize() - 1 << " exch definefont pop\n"; + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + buf.Clear(); + } + ps_fontnum = m_PSFontList.GetSize() - 1; + CPSFont* pPSFont = m_PSFontList[ps_fontnum]; + ps_glyphindex = pPSFont->m_nGlyphs; + pPSFont->m_Glyphs[ps_glyphindex].m_GlyphIndex = charpos.m_GlyphIndex; + pPSFont->m_Glyphs[ps_glyphindex].m_pFont = pFont; + pPSFont->m_Glyphs[ps_glyphindex].m_bGlyphAdjust = charpos.m_bGlyphAdjust; + if (charpos.m_bGlyphAdjust) { + pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[0] = + charpos.m_AdjustMatrix[0]; + pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[1] = + charpos.m_AdjustMatrix[1]; + pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[2] = + charpos.m_AdjustMatrix[2]; + pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[3] = + charpos.m_AdjustMatrix[3]; + } + pPSFont->m_nGlyphs++; + CFX_Matrix matrix; + if (charpos.m_bGlyphAdjust) + matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], + charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); + matrix.Concat(1.0f, 0, 0, 1.0f, 0, 0); + const CFX_PathData* pPathData = pFaceCache->LoadGlyphPath( + pFont, charpos.m_GlyphIndex, charpos.m_FontCharWidth); + if (!pPathData) { + return; + } + CFX_PathData TransformedPath(*pPathData); + if (charpos.m_bGlyphAdjust) { + TransformedPath.Transform(&matrix); + } + CFX_ByteTextBuf buf; + buf << "/X" << ps_fontnum << " Ff/CharProcs get begin/" << ps_glyphindex + << "{n "; + for (int p = 0; p < TransformedPath.GetPointCount(); p++) { + FX_FLOAT x = TransformedPath.GetPointX(p), y = TransformedPath.GetPointY(p); + switch (TransformedPath.GetFlag(p) & FXPT_TYPE) { + case FXPT_MOVETO: { + buf << x << " " << y << " m\n"; + break; + } + case FXPT_LINETO: { + buf << x << " " << y << " l\n"; + break; + } + case FXPT_BEZIERTO: { + buf << x << " " << y << " " << TransformedPath.GetPointX(p + 1) << " " + << TransformedPath.GetPointY(p + 1) << " " + << TransformedPath.GetPointX(p + 2) << " " + << TransformedPath.GetPointY(p + 2) << " c\n"; + p += 2; + break; + } + } + } + buf << "f}bind def end\n"; + buf << "/X" << ps_fontnum << " Ff/Encoding get " << ps_glyphindex << "/" + << ps_glyphindex << " put\n"; + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); +} +FX_BOOL CFX_PSRenderer::DrawText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + StartRendering(); + int alpha = FXGETFLAG_COLORTYPE(alpha_flag) ? FXGETFLAG_ALPHA_FILL(alpha_flag) + : FXARGB_A(color); + if (alpha < 255) { + return FALSE; + } + if ((pObject2Device->a == 0 && pObject2Device->b == 0) || + (pObject2Device->c == 0 && pObject2Device->d == 0)) { + return TRUE; + } + SetColor(color, alpha_flag, pIccTransform); + CFX_ByteTextBuf buf; + buf << "q[" << pObject2Device->a << " " << pObject2Device->b << " " + << pObject2Device->c << " " << pObject2Device->d << " " + << pObject2Device->e << " " << pObject2Device->f << "]cm\n"; + if (!pCache) { + pCache = CFX_GEModule::Get()->GetFontCache(); + } + CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); + FX_FONTCACHE_DEFINE(pCache, pFont); + int last_fontnum = -1; + for (int i = 0; i < nChars; i++) { + int ps_fontnum, ps_glyphindex; + FindPSFontGlyph(pFaceCache, pFont, pCharPos[i], ps_fontnum, ps_glyphindex); + if (last_fontnum != ps_fontnum) { + buf << "/X" << ps_fontnum << " Ff " << font_size << " Fs Sf "; + last_fontnum = ps_fontnum; + } + buf << pCharPos[i].m_OriginX << " " << pCharPos[i].m_OriginY << " m"; + CFX_ByteString hex; + hex.Format("<%02X>", ps_glyphindex); + buf << hex << "Tj\n"; + } + buf << "Q\n"; + m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); + return TRUE; +} +void CFX_PSRenderer::WritePSBinary(const uint8_t* data, int len) { + uint8_t* dest_buf; + FX_DWORD dest_size; + CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); + if (pEncoders && + pEncoders->GetBasicModule()->A85Encode(data, len, dest_buf, dest_size)) { + m_pOutput->OutputPS((const FX_CHAR*)dest_buf, dest_size); + FX_Free(dest_buf); + } else { + m_pOutput->OutputPS((const FX_CHAR*)data, len); + } +} diff --git a/core/fxge/ge/fx_ge_text.cpp b/core/fxge/ge/fx_ge_text.cpp new file mode 100644 index 0000000000..3f001d2f96 --- /dev/null +++ b/core/fxge/ge/fx_ge_text.cpp @@ -0,0 +1,1872 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/ge/fx_text_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge.h" + +#undef FX_GAMMA +#undef FX_GAMMA_INVERSE +#define FX_GAMMA(value) (value) +#define FX_GAMMA_INVERSE(value) (value) + +namespace { + +void ResetTransform(FT_Face face) { + FXFT_Matrix matrix; + matrix.xx = 0x10000L; + matrix.xy = 0; + matrix.yx = 0; + matrix.yy = 0x10000L; + FXFT_Set_Transform(face, &matrix, 0); +} + +// Sets the given transform on the font, and resets it to the identity when it +// goes out of scope. +class ScopedFontTransform { + public: + ScopedFontTransform(FT_Face face, FXFT_Matrix* matrix) : m_Face(face) { + FXFT_Set_Transform(m_Face, matrix, 0); + } + + ~ScopedFontTransform() { ResetTransform(m_Face); } + + private: + FT_Face m_Face; +}; + +} // namespace + +FX_RECT FXGE_GetGlyphsBBox(FXTEXT_GLYPHPOS* pGlyphAndPos, + int nChars, + int anti_alias, + FX_FLOAT retinaScaleX, + FX_FLOAT retinaScaleY) { + FX_RECT rect(0, 0, 0, 0); + FX_BOOL bStarted = FALSE; + for (int iChar = 0; iChar < nChars; iChar++) { + FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; + const CFX_GlyphBitmap* pGlyph = glyph.m_pGlyph; + if (!pGlyph) { + continue; + } + int char_left = glyph.m_OriginX + pGlyph->m_Left; + int char_width = (int)(pGlyph->m_Bitmap.GetWidth() / retinaScaleX); + if (anti_alias == FXFT_RENDER_MODE_LCD) { + char_width /= 3; + } + int char_right = char_left + char_width; + int char_top = glyph.m_OriginY - pGlyph->m_Top; + int char_bottom = + char_top + (int)(pGlyph->m_Bitmap.GetHeight() / retinaScaleY); + if (!bStarted) { + rect.left = char_left; + rect.right = char_right; + rect.top = char_top; + rect.bottom = char_bottom; + bStarted = TRUE; + } else { + if (rect.left > char_left) { + rect.left = char_left; + } + if (rect.right < char_right) { + rect.right = char_right; + } + if (rect.top > char_top) { + rect.top = char_top; + } + if (rect.bottom < char_bottom) { + rect.bottom = char_bottom; + } + } + } + return rect; +} +static void _AdjustGlyphSpace(FXTEXT_GLYPHPOS* pGlyphAndPos, int nChars) { + ASSERT(nChars > 1); + FX_BOOL bVertical = FALSE; + if (pGlyphAndPos[nChars - 1].m_OriginX == pGlyphAndPos[0].m_OriginX) { + bVertical = TRUE; + } else if (pGlyphAndPos[nChars - 1].m_OriginY != pGlyphAndPos[0].m_OriginY) { + return; + } + int i = nChars - 1; + int* next_origin = + bVertical ? &pGlyphAndPos[i].m_OriginY : &pGlyphAndPos[i].m_OriginX; + FX_FLOAT next_origin_f = + bVertical ? pGlyphAndPos[i].m_fOriginY : pGlyphAndPos[i].m_fOriginX; + for (i--; i > 0; i--) { + int* this_origin = + bVertical ? &pGlyphAndPos[i].m_OriginY : &pGlyphAndPos[i].m_OriginX; + FX_FLOAT this_origin_f = + bVertical ? pGlyphAndPos[i].m_fOriginY : pGlyphAndPos[i].m_fOriginX; + int space = (*next_origin) - (*this_origin); + FX_FLOAT space_f = next_origin_f - this_origin_f; + FX_FLOAT error = + (FX_FLOAT)(FXSYS_fabs(space_f) - FXSYS_fabs((FX_FLOAT)(space))); + if (error > 0.5f) { + *this_origin += space > 0 ? -1 : 1; + } + next_origin = this_origin; + next_origin_f = this_origin_f; + } +} +static const uint8_t g_TextGammaAdjust[256] = { + 0, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 18, + 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, + 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 250, 251, 252, 253, 254, + 255, +}; +#define ADJUST_ALPHA(background, foreground, src_alpha, text_flags, a) \ + src_alpha = g_TextGammaAdjust[(uint8_t)src_alpha]; +void _Color2Argb(FX_ARGB& argb, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + if (!pIccTransform && !FXGETFLAG_COLORTYPE(alpha_flag)) { + argb = color; + return; + } + if (!CFX_GEModule::Get()->GetCodecModule() || + !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + pIccTransform = NULL; + } + uint8_t bgra[4]; + if (pIccTransform) { + ICodec_IccModule* pIccModule = + CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); + color = FXGETFLAG_COLORTYPE(alpha_flag) ? FXCMYK_TODIB(color) + : FXARGB_TODIB(color); + pIccModule->TranslateScanline(pIccTransform, bgra, (const uint8_t*)&color, + 1); + bgra[3] = FXGETFLAG_COLORTYPE(alpha_flag) + ? (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) + : FXGETFLAG_ALPHA_STROKE(alpha_flag) + : FXARGB_A(color); + argb = FXARGB_MAKE(bgra[3], bgra[2], bgra[1], bgra[0]); + return; + } + AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), + FXSYS_GetYValue(color), FXSYS_GetKValue(color), bgra[2], + bgra[1], bgra[0]); + bgra[3] = (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) + : FXGETFLAG_ALPHA_STROKE(alpha_flag); + argb = FXARGB_MAKE(bgra[3], bgra[2], bgra[1], bgra[0]); +} +FX_BOOL CFX_RenderDevice::DrawNormalText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + FX_FLOAT font_size, + const CFX_Matrix* pText2Device, + FX_DWORD fill_color, + FX_DWORD text_flags, + int alpha_flag, + void* pIccTransform) { + int nativetext_flags = text_flags; + if (m_DeviceClass != FXDC_DISPLAY) { + if (!(text_flags & FXTEXT_PRINTGRAPHICTEXT)) { + bool should_call_draw_device_text = true; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if ((text_flags & FXFONT_CIDFONT) || + (pFont->GetPsName().Find(CFX_WideString::FromLocal("+ZJHL")) != -1) || + (pFont->GetPsName() == CFX_WideString::FromLocal("CNAAJI+cmex10"))) { + should_call_draw_device_text = false; + } +#endif + if (should_call_draw_device_text && + m_pDeviceDriver->DrawDeviceText(nChars, pCharPos, pFont, pCache, + pText2Device, font_size, fill_color, + alpha_flag, pIccTransform)) { + return TRUE; + } + } + int alpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? FXGETFLAG_ALPHA_FILL(alpha_flag) + : FXARGB_A(fill_color); + if (alpha < 255) { + return FALSE; + } + } else if (!(text_flags & FXTEXT_NO_NATIVETEXT)) { + bool should_call_draw_device_text = true; +#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ + if ((text_flags & FXFONT_CIDFONT) || + (pFont->GetPsName() == CFX_WideString::FromLocal("CNAAJI+cmex10"))) { + should_call_draw_device_text = false; + } +#endif + if (should_call_draw_device_text && + m_pDeviceDriver->DrawDeviceText(nChars, pCharPos, pFont, pCache, + pText2Device, font_size, fill_color, + alpha_flag, pIccTransform)) { + return TRUE; + } + } + CFX_Matrix char2device, deviceCtm, text2Device; + if (pText2Device) { + char2device = *pText2Device; + text2Device = *pText2Device; + } + char2device.Scale(font_size, -font_size); + if (FXSYS_fabs(char2device.a) + FXSYS_fabs(char2device.b) > 50 * 1.0f || + ((m_DeviceClass == FXDC_PRINTER && !m_pDeviceDriver->IsPSPrintDriver()) && + !(text_flags & FXTEXT_PRINTIMAGETEXT))) { + if (pFont->GetFace() || + (pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) { + int nPathFlags = + (text_flags & FXTEXT_NOSMOOTH) == 0 ? 0 : FXFILL_NOPATHSMOOTH; + return DrawTextPath(nChars, pCharPos, pFont, pCache, font_size, + pText2Device, NULL, NULL, fill_color, 0, NULL, + nPathFlags, alpha_flag, pIccTransform); + } + } + int anti_alias = FXFT_RENDER_MODE_MONO; + FX_BOOL bNormal = FALSE; + if ((text_flags & FXTEXT_NOSMOOTH) == 0) { + if (m_DeviceClass == FXDC_DISPLAY && m_bpp > 1) { + FX_BOOL bClearType; + if (!pFont->GetFace() && + !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_CLEARTYPE)) { + bClearType = FALSE; + } else { + bClearType = text_flags & FXTEXT_CLEARTYPE; + } + if ((m_RenderCaps & (FXRC_ALPHA_OUTPUT | FXRC_CMYK_OUTPUT))) { + anti_alias = FXFT_RENDER_MODE_LCD; + bNormal = TRUE; + } else if (m_bpp < 16) { + anti_alias = FXFT_RENDER_MODE_NORMAL; + } else { + if (bClearType == FALSE) { + anti_alias = FXFT_RENDER_MODE_LCD; + bNormal = TRUE; + } else { + anti_alias = FXFT_RENDER_MODE_LCD; + } + } + } + } + if (!pCache) { + pCache = CFX_GEModule::Get()->GetFontCache(); + } + CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); + FX_FONTCACHE_DEFINE(pCache, pFont); + FXTEXT_GLYPHPOS* pGlyphAndPos = FX_Alloc(FXTEXT_GLYPHPOS, nChars); + int iChar; + deviceCtm = char2device; + CFX_Matrix matrixCTM = GetCTM(); + FX_FLOAT scale_x = FXSYS_fabs(matrixCTM.a); + FX_FLOAT scale_y = FXSYS_fabs(matrixCTM.d); + deviceCtm.Concat(scale_x, 0, 0, scale_y, 0, 0); + text2Device.Concat(scale_x, 0, 0, scale_y, 0, 0); + for (iChar = 0; iChar < nChars; iChar++) { + FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; + const FXTEXT_CHARPOS& charpos = pCharPos[iChar]; + glyph.m_fOriginX = charpos.m_OriginX; + glyph.m_fOriginY = charpos.m_OriginY; + text2Device.Transform(glyph.m_fOriginX, glyph.m_fOriginY); + if (anti_alias < FXFT_RENDER_MODE_LCD) { + glyph.m_OriginX = FXSYS_round(glyph.m_fOriginX); + } else { + glyph.m_OriginX = (int)FXSYS_floor(glyph.m_fOriginX); + } + glyph.m_OriginY = FXSYS_round(glyph.m_fOriginY); + if (charpos.m_bGlyphAdjust) { + CFX_Matrix new_matrix( + charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], + charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); + new_matrix.Concat(deviceCtm); + glyph.m_pGlyph = pFaceCache->LoadGlyphBitmap( + pFont, charpos.m_GlyphIndex, charpos.m_bFontStyle, &new_matrix, + charpos.m_FontCharWidth, anti_alias, nativetext_flags); + } else { + glyph.m_pGlyph = pFaceCache->LoadGlyphBitmap( + pFont, charpos.m_GlyphIndex, charpos.m_bFontStyle, &deviceCtm, + charpos.m_FontCharWidth, anti_alias, nativetext_flags); + } + } + if (anti_alias < FXFT_RENDER_MODE_LCD && nChars > 1) { + _AdjustGlyphSpace(pGlyphAndPos, nChars); + } + FX_RECT bmp_rect1 = FXGE_GetGlyphsBBox(pGlyphAndPos, nChars, anti_alias); + if (scale_x > 1 && scale_y > 1) { + bmp_rect1.left--; + bmp_rect1.top--; + bmp_rect1.right++; + bmp_rect1.bottom++; + } + FX_RECT bmp_rect(FXSYS_round((FX_FLOAT)(bmp_rect1.left) / scale_x), + FXSYS_round((FX_FLOAT)(bmp_rect1.top) / scale_y), + FXSYS_round((FX_FLOAT)bmp_rect1.right / scale_x), + FXSYS_round((FX_FLOAT)bmp_rect1.bottom / scale_y)); + bmp_rect.Intersect(m_ClipBox); + if (bmp_rect.IsEmpty()) { + FX_Free(pGlyphAndPos); + return TRUE; + } + int pixel_width = FXSYS_round(bmp_rect.Width() * scale_x); + int pixel_height = FXSYS_round(bmp_rect.Height() * scale_y); + int pixel_left = FXSYS_round(bmp_rect.left * scale_x); + int pixel_top = FXSYS_round(bmp_rect.top * scale_y); + if (anti_alias == FXFT_RENDER_MODE_MONO) { + CFX_DIBitmap bitmap; + if (!bitmap.Create(pixel_width, pixel_height, FXDIB_1bppMask)) { + FX_Free(pGlyphAndPos); + return FALSE; + } + bitmap.Clear(0); + for (iChar = 0; iChar < nChars; iChar++) { + FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; + if (!glyph.m_pGlyph) { + continue; + } + const CFX_DIBitmap* pGlyph = &glyph.m_pGlyph->m_Bitmap; + bitmap.TransferBitmap( + glyph.m_OriginX + glyph.m_pGlyph->m_Left - pixel_left, + glyph.m_OriginY - glyph.m_pGlyph->m_Top - pixel_top, + pGlyph->GetWidth(), pGlyph->GetHeight(), pGlyph, 0, 0); + } + FX_Free(pGlyphAndPos); + return SetBitMask(&bitmap, bmp_rect.left, bmp_rect.top, fill_color); + } + CFX_DIBitmap bitmap; + if (m_bpp == 8) { + if (!bitmap.Create(pixel_width, pixel_height, FXDIB_8bppMask)) { + FX_Free(pGlyphAndPos); + return FALSE; + } + } else { + if (!CreateCompatibleBitmap(&bitmap, pixel_width, pixel_height)) { + FX_Free(pGlyphAndPos); + return FALSE; + } + } + if (!bitmap.HasAlpha() && !bitmap.IsAlphaMask()) { + bitmap.Clear(0xFFFFFFFF); + if (!GetDIBits(&bitmap, bmp_rect.left, bmp_rect.top)) { + FX_Free(pGlyphAndPos); + return FALSE; + } + } else { + bitmap.Clear(0); + if (bitmap.m_pAlphaMask) { + bitmap.m_pAlphaMask->Clear(0); + } + } + int dest_width = pixel_width; + uint8_t* dest_buf = bitmap.GetBuffer(); + int dest_pitch = bitmap.GetPitch(); + int Bpp = bitmap.GetBPP() / 8; + int a, r, g, b; + if (anti_alias == FXFT_RENDER_MODE_LCD) { + _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransform); + ArgbDecode(fill_color, a, r, g, b); + r = FX_GAMMA(r); + g = FX_GAMMA(g); + b = FX_GAMMA(b); + } + for (iChar = 0; iChar < nChars; iChar++) { + FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; + if (!glyph.m_pGlyph) { + continue; + } + const CFX_DIBitmap* pGlyph = &glyph.m_pGlyph->m_Bitmap; + int left = glyph.m_OriginX + glyph.m_pGlyph->m_Left - pixel_left; + int top = glyph.m_OriginY - glyph.m_pGlyph->m_Top - pixel_top; + int ncols = pGlyph->GetWidth(); + int nrows = pGlyph->GetHeight(); + if (anti_alias == FXFT_RENDER_MODE_NORMAL) { + if (!bitmap.CompositeMask(left, top, ncols, nrows, pGlyph, fill_color, 0, + 0, FXDIB_BLEND_NORMAL, NULL, FALSE, alpha_flag, + pIccTransform)) { + FX_Free(pGlyphAndPos); + return FALSE; + } + continue; + } + FX_BOOL bBGRStripe = text_flags & FXTEXT_BGR_STRIPE; + ncols /= 3; + int x_subpixel = (int)(glyph.m_fOriginX * 3) % 3; + uint8_t* src_buf = pGlyph->GetBuffer(); + int src_pitch = pGlyph->GetPitch(); + int start_col = left; + if (start_col < 0) { + start_col = 0; + } + int end_col = left + ncols; + if (end_col > dest_width) { + end_col = dest_width; + } + if (start_col >= end_col) { + continue; + } + if (bitmap.GetFormat() == FXDIB_Argb) { + for (int row = 0; row < nrows; row++) { + int dest_row = row + top; + if (dest_row < 0 || dest_row >= bitmap.GetHeight()) { + continue; + } + uint8_t* src_scan = src_buf + row * src_pitch + (start_col - left) * 3; + uint8_t* dest_scan = + dest_buf + dest_row * dest_pitch + (start_col << 2); + if (bBGRStripe) { + if (x_subpixel == 0) { + for (int col = start_col; col < end_col; col++) { + int src_alpha = src_scan[2]; + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[1]; + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[0]; + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + } else if (x_subpixel == 1) { + int src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + if (start_col > left) { + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + } + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + for (int col = start_col + 1; col < end_col - 1; col++) { + int src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + } else { + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + if (start_col > left) { + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + } + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + for (int col = start_col + 1; col < end_col - 1; col++) { + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + } + } else { + if (x_subpixel == 0) { + for (int col = start_col; col < end_col; col++) { + if (bNormal) { + int src_alpha1 = (src_scan[0] + src_scan[1] + src_scan[2]) / 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); + dest_scan += 4; + src_scan += 3; + continue; + } + if (src_alpha1 == 0) { + dest_scan += 4; + src_scan += 3; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha1 * 255 / dest_alpha; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, alpha_ratio)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, alpha_ratio)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, alpha_ratio)); + dest_scan += 4; + src_scan += 3; + continue; + } + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[2]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + } else if (x_subpixel == 1) { + if (bNormal) { + int src_alpha1 = + start_col > left + ? ((src_scan[-1] + src_scan[0] + src_scan[1]) / 3) + : ((src_scan[0] + src_scan[1]) / 3); + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + if (src_alpha1 == 0) { + dest_scan += 4; + src_scan += 3; + } else { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); + } else { + uint8_t dest_alpha = + back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha1 * 255 / dest_alpha; + dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[2]), r, alpha_ratio)); + dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[1]), g, alpha_ratio)); + dest_scan[0] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[0]), b, alpha_ratio)); + } + dest_scan += 4; + src_scan += 3; + } + } else { + if (start_col > left) { + int src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + } + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + for (int col = start_col + 1; col < end_col; col++) { + if (bNormal) { + int src_alpha1 = (src_scan[-1] + src_scan[0] + src_scan[1]) / 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); + dest_scan += 4; + src_scan += 3; + continue; + } + if (src_alpha1 == 0) { + dest_scan += 4; + src_scan += 3; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha1 * 255 / dest_alpha; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, alpha_ratio)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, alpha_ratio)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, alpha_ratio)); + dest_scan += 4; + src_scan += 3; + continue; + } + int src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + } else { + if (bNormal) { + int src_alpha1 = + start_col > left + ? ((src_scan[-2] + src_scan[-1] + src_scan[0]) / 3) + : ((src_scan[0]) / 3); + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + if (src_alpha1 == 0) { + dest_scan += 4; + src_scan += 3; + } else { + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); + } else { + uint8_t dest_alpha = + back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha1 * 255 / dest_alpha; + dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[2]), r, alpha_ratio)); + dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[1]), g, alpha_ratio)); + dest_scan[0] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( + FX_GAMMA(dest_scan[0]), b, alpha_ratio)); + } + dest_scan += 4; + src_scan += 3; + } + } else { + if (start_col > left) { + int src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + } + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + for (int col = start_col + 1; col < end_col; col++) { + if (bNormal) { + int src_alpha1 = + (src_scan[-2] + src_scan[-1] + src_scan[0]) / 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + uint8_t back_alpha = dest_scan[3]; + if (back_alpha == 0) { + FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); + dest_scan += 4; + src_scan += 3; + continue; + } + if (src_alpha1 == 0) { + dest_scan += 4; + src_scan += 3; + continue; + } + uint8_t dest_alpha = + back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; + dest_scan[3] = dest_alpha; + int alpha_ratio = src_alpha1 * 255 / dest_alpha; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, alpha_ratio)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, alpha_ratio)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, alpha_ratio)); + dest_scan += 4; + src_scan += 3; + continue; + } + int src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan[3] = 255; + dest_scan += 4; + src_scan += 3; + } + } + } + } + } else { + for (int row = 0; row < nrows; row++) { + int dest_row = row + top; + if (dest_row < 0 || dest_row >= bitmap.GetHeight()) { + continue; + } + uint8_t* src_scan = src_buf + row * src_pitch + (start_col - left) * 3; + uint8_t* dest_scan = dest_buf + dest_row * dest_pitch + start_col * Bpp; + if (bBGRStripe) { + if (x_subpixel == 0) { + for (int col = start_col; col < end_col; col++) { + int src_alpha = src_scan[2]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + } else if (x_subpixel == 1) { + int src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + if (start_col > left) { + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + } + dest_scan += Bpp; + src_scan += 3; + for (int col = start_col + 1; col < end_col - 1; col++) { + int src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + } else { + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + if (start_col > left) { + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + } + dest_scan += Bpp; + src_scan += 3; + for (int col = start_col + 1; col < end_col - 1; col++) { + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + } + } else { + if (x_subpixel == 0) { + for (int col = start_col; col < end_col; col++) { + if (bNormal) { + int src_alpha1 = (src_scan[0] + src_scan[1] + src_scan[2]) / 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + if (src_alpha1 == 0) { + dest_scan += Bpp; + src_scan += 3; + continue; + } + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); + dest_scan += Bpp; + src_scan += 3; + continue; + } + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[2]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + } else if (x_subpixel == 1) { + if (bNormal) { + int src_alpha1 = + start_col > left + ? (src_scan[0] + src_scan[1] + src_scan[-1]) / 3 + : (src_scan[0] + src_scan[1]) / 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); + dest_scan += Bpp; + src_scan += 3; + } else { + if (start_col > left) { + int src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + } + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + for (int col = start_col + 1; col < end_col; col++) { + if (bNormal) { + int src_alpha1 = (src_scan[0] + src_scan[1] + src_scan[-1]) / 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + if (src_alpha1 == 0) { + dest_scan += Bpp; + src_scan += 3; + continue; + } + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); + dest_scan += Bpp; + src_scan += 3; + continue; + } + int src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[1]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + } else { + if (bNormal) { + int src_alpha1 = + start_col > left + ? (src_scan[0] + src_scan[-2] + src_scan[-1]) / 3 + : src_scan[0] / 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); + dest_scan += Bpp; + src_scan += 3; + } else { + if (start_col > left) { + int src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + } + int src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + for (int col = start_col + 1; col < end_col; col++) { + if (bNormal) { + int src_alpha1 = ((int)(src_scan[0]) + (int)(src_scan[-2]) + + (int)(src_scan[-1])) / + 3; + ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); + src_alpha1 = src_alpha1 * a / 255; + if (src_alpha1 == 0) { + dest_scan += Bpp; + src_scan += 3; + continue; + } + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); + dest_scan += Bpp; + src_scan += 3; + continue; + } + int src_alpha = src_scan[-2]; + ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[2] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); + src_alpha = src_scan[-1]; + ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[1] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); + src_alpha = src_scan[0]; + ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); + src_alpha = src_alpha * a / 255; + dest_scan[0] = FX_GAMMA_INVERSE( + FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); + dest_scan += Bpp; + src_scan += 3; + } + } + } + } + } + } + if (bitmap.IsAlphaMask()) { + SetBitMask(&bitmap, bmp_rect.left, bmp_rect.top, fill_color, alpha_flag, + pIccTransform); + } else { + SetDIBits(&bitmap, bmp_rect.left, bmp_rect.top); + } + FX_Free(pGlyphAndPos); + return TRUE; +} +FX_BOOL CFX_RenderDevice::DrawTextPath(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + FX_FLOAT font_size, + const CFX_Matrix* pText2User, + const CFX_Matrix* pUser2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_ARGB stroke_color, + CFX_PathData* pClippingPath, + int nFlag, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (!pCache) { + pCache = CFX_GEModule::Get()->GetFontCache(); + } + CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); + FX_FONTCACHE_DEFINE(pCache, pFont); + for (int iChar = 0; iChar < nChars; iChar++) { + const FXTEXT_CHARPOS& charpos = pCharPos[iChar]; + CFX_Matrix matrix; + if (charpos.m_bGlyphAdjust) + matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], + charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); + matrix.Concat(font_size, 0, 0, font_size, charpos.m_OriginX, + charpos.m_OriginY); + const CFX_PathData* pPath = pFaceCache->LoadGlyphPath( + pFont, charpos.m_GlyphIndex, charpos.m_FontCharWidth); + if (!pPath) { + continue; + } + matrix.Concat(*pText2User); + CFX_PathData TransformedPath(*pPath); + TransformedPath.Transform(&matrix); + FX_BOOL bHasAlpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? (FXGETFLAG_ALPHA_FILL(alpha_flag) || + FXGETFLAG_ALPHA_STROKE(alpha_flag)) + : (fill_color || stroke_color); + if (bHasAlpha) { + int fill_mode = nFlag; + if (FXGETFLAG_COLORTYPE(alpha_flag)) { + if (FXGETFLAG_ALPHA_FILL(alpha_flag)) { + fill_mode |= FXFILL_WINDING; + } + } else { + if (fill_color) { + fill_mode |= FXFILL_WINDING; + } + } + fill_mode |= FX_FILL_TEXT_MODE; + if (!DrawPath(&TransformedPath, pUser2Device, pGraphState, fill_color, + stroke_color, fill_mode, alpha_flag, pIccTransform, + blend_type)) { + return FALSE; + } + } + if (pClippingPath) { + pClippingPath->Append(&TransformedPath, pUser2Device); + } + } + return TRUE; +} + +CFX_FontCache::CFX_FontCache() {} + +CFX_FontCache::~CFX_FontCache() { + FreeCache(TRUE); +} + +CFX_FaceCache* CFX_FontCache::GetCachedFace(CFX_Font* pFont) { + FXFT_Face internal_face = pFont->GetFace(); + const bool bExternal = !internal_face; + FXFT_Face face = + bExternal ? (FXFT_Face)pFont->GetSubstFont()->m_ExtHandle : internal_face; + CFX_FTCacheMap& map = bExternal ? m_ExtFaceMap : m_FTFaceMap; + auto it = map.find(face); + if (it != map.end()) { + CFX_CountedFaceCache* counted_face_cache = it->second; + counted_face_cache->m_nCount++; + return counted_face_cache->m_Obj; + } + + CFX_FaceCache* face_cache = new CFX_FaceCache(bExternal ? nullptr : face); + CFX_CountedFaceCache* counted_face_cache = new CFX_CountedFaceCache; + counted_face_cache->m_nCount = 2; + counted_face_cache->m_Obj = face_cache; + map[face] = counted_face_cache; + return face_cache; +} + +void CFX_FontCache::ReleaseCachedFace(CFX_Font* pFont) { + FXFT_Face internal_face = pFont->GetFace(); + const bool bExternal = !internal_face; + FXFT_Face face = + bExternal ? (FXFT_Face)pFont->GetSubstFont()->m_ExtHandle : internal_face; + CFX_FTCacheMap& map = bExternal ? m_ExtFaceMap : m_FTFaceMap; + + auto it = map.find(face); + if (it == map.end()) + return; + + CFX_CountedFaceCache* counted_face_cache = it->second; + if (counted_face_cache->m_nCount > 1) { + counted_face_cache->m_nCount--; + } +} + +void CFX_FontCache::FreeCache(FX_BOOL bRelease) { + for (auto it = m_FTFaceMap.begin(); it != m_FTFaceMap.end();) { + auto curr_it = it++; + CFX_CountedFaceCache* cache = curr_it->second; + if (bRelease || cache->m_nCount < 2) { + delete cache->m_Obj; + delete cache; + m_FTFaceMap.erase(curr_it); + } + } + + for (auto it = m_ExtFaceMap.begin(); it != m_ExtFaceMap.end();) { + auto curr_it = it++; + CFX_CountedFaceCache* cache = curr_it->second; + if (bRelease || cache->m_nCount < 2) { + delete cache->m_Obj; + delete cache; + m_ExtFaceMap.erase(curr_it); + } + } +} + +CFX_FaceCache::CFX_FaceCache(FXFT_Face face) : m_Face(face) {} + +CFX_FaceCache::~CFX_FaceCache() { + for (const auto& pair : m_SizeMap) { + delete pair.second; + } + m_SizeMap.clear(); + for (const auto& pair : m_PathMap) { + delete pair.second; + } + m_PathMap.clear(); +} +#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ +void CFX_FaceCache::InitPlatform() {} +#endif +CFX_GlyphBitmap* CFX_FaceCache::LookUpGlyphBitmap( + CFX_Font* pFont, + const CFX_Matrix* pMatrix, + CFX_ByteStringC& FaceGlyphsKey, + FX_DWORD glyph_index, + FX_BOOL bFontStyle, + int dest_width, + int anti_alias) { + CFX_SizeGlyphCache* pSizeCache; + auto it = m_SizeMap.find(FaceGlyphsKey); + if (it == m_SizeMap.end()) { + pSizeCache = new CFX_SizeGlyphCache; + m_SizeMap[FaceGlyphsKey] = pSizeCache; + } else { + pSizeCache = it->second; + } + auto it2 = pSizeCache->m_GlyphMap.find(glyph_index); + if (it2 != pSizeCache->m_GlyphMap.end()) + return it2->second; + + CFX_GlyphBitmap* pGlyphBitmap = RenderGlyph(pFont, glyph_index, bFontStyle, + pMatrix, dest_width, anti_alias); + if (!pGlyphBitmap) + return nullptr; + + pSizeCache->m_GlyphMap[glyph_index] = pGlyphBitmap; + return pGlyphBitmap; +} +const CFX_GlyphBitmap* CFX_FaceCache::LoadGlyphBitmap(CFX_Font* pFont, + FX_DWORD glyph_index, + FX_BOOL bFontStyle, + const CFX_Matrix* pMatrix, + int dest_width, + int anti_alias, + int& text_flags) { + if (glyph_index == (FX_DWORD)-1) { + return NULL; + } + _CFX_UniqueKeyGen keygen; +#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ + if (pFont->GetSubstFont()) + keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, + pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical()); + else + keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias); +#else + if (text_flags & FXTEXT_NO_NATIVETEXT) { + if (pFont->GetSubstFont()) + keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, + pFont->GetSubstFont()->m_ItalicAngle, + pFont->IsVertical()); + else + keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias); + } else { + if (pFont->GetSubstFont()) + keygen.Generate(10, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, + pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical(), + 3); + else + keygen.Generate(7, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias, 3); + } +#endif + CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen); +#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ + return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, + bFontStyle, dest_width, anti_alias); +#else + if (text_flags & FXTEXT_NO_NATIVETEXT) { + return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, + bFontStyle, dest_width, anti_alias); + } + CFX_GlyphBitmap* pGlyphBitmap; + auto it = m_SizeMap.find(FaceGlyphsKey); + if (it != m_SizeMap.end()) { + CFX_SizeGlyphCache* pSizeCache = it->second; + auto it2 = pSizeCache->m_GlyphMap.find(glyph_index); + if (it2 != pSizeCache->m_GlyphMap.end()) + return it2->second; + + pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, + dest_width, anti_alias); + if (pGlyphBitmap) { + pSizeCache->m_GlyphMap[glyph_index] = pGlyphBitmap; + return pGlyphBitmap; + } + } else { + pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, + dest_width, anti_alias); + if (pGlyphBitmap) { + CFX_SizeGlyphCache* pSizeCache = new CFX_SizeGlyphCache; + m_SizeMap[FaceGlyphsKey] = pSizeCache; + pSizeCache->m_GlyphMap[glyph_index] = pGlyphBitmap; + return pGlyphBitmap; + } + } + if (pFont->GetSubstFont()) + keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, + pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical()); + else + keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), + (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), + dest_width, anti_alias); + CFX_ByteStringC FaceGlyphsKey2(keygen.m_Key, keygen.m_KeyLen); + text_flags |= FXTEXT_NO_NATIVETEXT; + return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey2, glyph_index, + bFontStyle, dest_width, anti_alias); +#endif +} +CFX_SizeGlyphCache::~CFX_SizeGlyphCache() { + for (const auto& pair : m_GlyphMap) { + delete pair.second; + } + m_GlyphMap.clear(); +} +#define CONTRAST_RAMP_STEP 1 +void CFX_Font::AdjustMMParams(int glyph_index, int dest_width, int weight) { + FXFT_MM_Var pMasters = NULL; + FXFT_Get_MM_Var(m_Face, &pMasters); + if (!pMasters) { + return; + } + long coords[2]; + if (weight == 0) { + coords[0] = FXFT_Get_MM_Axis_Def(FXFT_Get_MM_Axis(pMasters, 0)) / 65536; + } else { + coords[0] = weight; + } + if (dest_width == 0) { + coords[1] = FXFT_Get_MM_Axis_Def(FXFT_Get_MM_Axis(pMasters, 1)) / 65536; + } else { + int min_param = FXFT_Get_MM_Axis_Min(FXFT_Get_MM_Axis(pMasters, 1)) / 65536; + int max_param = FXFT_Get_MM_Axis_Max(FXFT_Get_MM_Axis(pMasters, 1)) / 65536; + coords[1] = min_param; + (void)FXFT_Set_MM_Design_Coordinates(m_Face, 2, coords); + (void)FXFT_Load_Glyph( + m_Face, glyph_index, + FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + int min_width = FXFT_Get_Glyph_HoriAdvance(m_Face) * 1000 / + FXFT_Get_Face_UnitsPerEM(m_Face); + coords[1] = max_param; + (void)FXFT_Set_MM_Design_Coordinates(m_Face, 2, coords); + (void)FXFT_Load_Glyph( + m_Face, glyph_index, + FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + int max_width = FXFT_Get_Glyph_HoriAdvance(m_Face) * 1000 / + FXFT_Get_Face_UnitsPerEM(m_Face); + if (max_width == min_width) { + FXFT_Free(m_Face, pMasters); + return; + } + int param = min_param + + (max_param - min_param) * (dest_width - min_width) / + (max_width - min_width); + coords[1] = param; + } + FXFT_Free(m_Face, pMasters); + FXFT_Set_MM_Design_Coordinates(m_Face, 2, coords); +} +static const size_t ANGLESKEW_ARRAY_SIZE = 30; +static const char g_AngleSkew[ANGLESKEW_ARRAY_SIZE] = { + 0, 2, 3, 5, 7, 9, 11, 12, 14, 16, 18, 19, 21, 23, 25, + 27, 29, 31, 32, 34, 36, 38, 40, 42, 45, 47, 49, 51, 53, 55, +}; +static const size_t WEIGHTPOW_ARRAY_SIZE = 100; +static const uint8_t g_WeightPow[WEIGHTPOW_ARRAY_SIZE] = { + 0, 3, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 35, 36, 36, 37, + 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, + 42, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, + 47, 47, 47, 48, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 50, + 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, +}; +static const uint8_t g_WeightPow_11[WEIGHTPOW_ARRAY_SIZE] = { + 0, 4, 7, 8, 9, 10, 12, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 39, 40, 40, 41, + 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, 46, + 46, 43, 47, 47, 48, 48, 48, 48, 45, 50, 50, 50, 46, 51, 51, 51, 52, + 52, 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 55, + 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, +}; +static const uint8_t g_WeightPow_SHIFTJIS[WEIGHTPOW_ARRAY_SIZE] = { + 0, 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 21, + 22, 24, 26, 28, 30, 32, 33, 35, 37, 39, 41, 43, 45, 48, 48, 48, 48, + 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, + 53, 53, 53, 53, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 56, + 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, + 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, +}; +static void _GammaAdjust(uint8_t* pData, + int nWid, + int nHei, + int src_pitch, + const uint8_t* gammaTable) { + int count = nHei * src_pitch; + for (int i = 0; i < count; i++) { + pData[i] = gammaTable[pData[i]]; + } +} +static void _ContrastAdjust(uint8_t* pDataIn, + uint8_t* pDataOut, + int nWid, + int nHei, + int nSrcRowBytes, + int nDstRowBytes) { + int col, row, temp; + int max = 0, min = 255; + FX_FLOAT rate; + for (row = 0; row < nHei; row++) { + uint8_t* pRow = pDataIn + row * nSrcRowBytes; + for (col = 0; col < nWid; col++) { + temp = *pRow++; + if (temp > max) { + max = temp; + } + if (temp < min) { + min = temp; + } + } + } + temp = max - min; + if (0 == temp || 255 == temp) { + int rowbytes = FXSYS_abs(nSrcRowBytes) > nDstRowBytes + ? nDstRowBytes + : FXSYS_abs(nSrcRowBytes); + for (row = 0; row < nHei; row++) { + FXSYS_memcpy(pDataOut + row * nDstRowBytes, pDataIn + row * nSrcRowBytes, + rowbytes); + } + return; + } + rate = 255.f / temp; + for (row = 0; row < nHei; row++) { + uint8_t* pSrcRow = pDataIn + row * nSrcRowBytes; + uint8_t* pDstRow = pDataOut + row * nDstRowBytes; + for (col = 0; col < nWid; col++) { + temp = (int)((*(pSrcRow++) - min) * rate + 0.5); + if (temp > 255) { + temp = 255; + } else if (temp < 0) { + temp = 0; + } + *pDstRow++ = (uint8_t)temp; + } + } +} +CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph(CFX_Font* pFont, + FX_DWORD glyph_index, + FX_BOOL bFontStyle, + const CFX_Matrix* pMatrix, + int dest_width, + int anti_alias) { + if (!m_Face) { + return NULL; + } + FXFT_Matrix ft_matrix; + ft_matrix.xx = (signed long)(pMatrix->GetA() / 64 * 65536); + ft_matrix.xy = (signed long)(pMatrix->GetC() / 64 * 65536); + ft_matrix.yx = (signed long)(pMatrix->GetB() / 64 * 65536); + ft_matrix.yy = (signed long)(pMatrix->GetD() / 64 * 65536); + FX_BOOL bUseCJKSubFont = FALSE; + const CFX_SubstFont* pSubstFont = pFont->GetSubstFont(); + if (pSubstFont) { + bUseCJKSubFont = pSubstFont->m_bSubstOfCJK && bFontStyle; + int skew = 0; + if (bUseCJKSubFont) { + skew = pSubstFont->m_bItlicCJK ? -15 : 0; + } else { + skew = pSubstFont->m_ItalicAngle; + } + if (skew) { + skew = skew <= -ANGLESKEW_ARRAY_SIZE ? -58 : -g_AngleSkew[-skew]; + if (pFont->IsVertical()) { + ft_matrix.yx += ft_matrix.yy * skew / 100; + } else { + ft_matrix.xy += -ft_matrix.xx * skew / 100; + } + } + if (pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) { + pFont->AdjustMMParams(glyph_index, dest_width, + pFont->GetSubstFont()->m_Weight); + } + } + ScopedFontTransform scoped_transform(m_Face, &ft_matrix); + int load_flags = (m_Face->face_flags & FT_FACE_FLAG_SFNT) + ? FXFT_LOAD_NO_BITMAP + : (FXFT_LOAD_NO_BITMAP | FT_LOAD_NO_HINTING); + int error = FXFT_Load_Glyph(m_Face, glyph_index, load_flags); + if (error) { + // if an error is returned, try to reload glyphs without hinting. + if (load_flags & FT_LOAD_NO_HINTING || load_flags & FT_LOAD_NO_SCALE) { + return NULL; + } + + load_flags |= FT_LOAD_NO_HINTING; + error = FXFT_Load_Glyph(m_Face, glyph_index, load_flags); + + if (error) { + return NULL; + } + } + int weight = 0; + if (bUseCJKSubFont) { + weight = pSubstFont->m_WeightCJK; + } else { + weight = pSubstFont ? pSubstFont->m_Weight : 0; + } + if (pSubstFont && !(pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) && + weight > 400) { + int index = (weight - 400) / 10; + if (index >= WEIGHTPOW_ARRAY_SIZE) { + return NULL; + } + int level = 0; + if (pSubstFont->m_Charset == FXFONT_SHIFTJIS_CHARSET) { + level = + g_WeightPow_SHIFTJIS[index] * 2 * + (FXSYS_abs((int)(ft_matrix.xx)) + FXSYS_abs((int)(ft_matrix.xy))) / + 36655; + } else { + level = g_WeightPow_11[index] * (FXSYS_abs((int)(ft_matrix.xx)) + + FXSYS_abs((int)(ft_matrix.xy))) / + 36655; + } + FXFT_Outline_Embolden(FXFT_Get_Glyph_Outline(m_Face), level); + } + FXFT_Library_SetLcdFilter(CFX_GEModule::Get()->GetFontMgr()->GetFTLibrary(), + FT_LCD_FILTER_DEFAULT); + error = FXFT_Render_Glyph(m_Face, anti_alias); + if (error) { + return NULL; + } + int bmwidth = FXFT_Get_Bitmap_Width(FXFT_Get_Glyph_Bitmap(m_Face)); + int bmheight = FXFT_Get_Bitmap_Rows(FXFT_Get_Glyph_Bitmap(m_Face)); + if (bmwidth > 2048 || bmheight > 2048) { + return NULL; + } + int dib_width = bmwidth; + CFX_GlyphBitmap* pGlyphBitmap = new CFX_GlyphBitmap; + pGlyphBitmap->m_Bitmap.Create( + dib_width, bmheight, + anti_alias == FXFT_RENDER_MODE_MONO ? FXDIB_1bppMask : FXDIB_8bppMask); + pGlyphBitmap->m_Left = FXFT_Get_Glyph_BitmapLeft(m_Face); + pGlyphBitmap->m_Top = FXFT_Get_Glyph_BitmapTop(m_Face); + int dest_pitch = pGlyphBitmap->m_Bitmap.GetPitch(); + int src_pitch = FXFT_Get_Bitmap_Pitch(FXFT_Get_Glyph_Bitmap(m_Face)); + uint8_t* pDestBuf = pGlyphBitmap->m_Bitmap.GetBuffer(); + uint8_t* pSrcBuf = + (uint8_t*)FXFT_Get_Bitmap_Buffer(FXFT_Get_Glyph_Bitmap(m_Face)); + if (anti_alias != FXFT_RENDER_MODE_MONO && + FXFT_Get_Bitmap_PixelMode(FXFT_Get_Glyph_Bitmap(m_Face)) == + FXFT_PIXEL_MODE_MONO) { + int bytes = anti_alias == FXFT_RENDER_MODE_LCD ? 3 : 1; + for (int i = 0; i < bmheight; i++) + for (int n = 0; n < bmwidth; n++) { + uint8_t data = + (pSrcBuf[i * src_pitch + n / 8] & (0x80 >> (n % 8))) ? 255 : 0; + for (int b = 0; b < bytes; b++) { + pDestBuf[i * dest_pitch + n * bytes + b] = data; + } + } + } else { + FXSYS_memset(pDestBuf, 0, dest_pitch * bmheight); + if (anti_alias == FXFT_RENDER_MODE_MONO && + FXFT_Get_Bitmap_PixelMode(FXFT_Get_Glyph_Bitmap(m_Face)) == + FXFT_PIXEL_MODE_MONO) { + int rowbytes = + FXSYS_abs(src_pitch) > dest_pitch ? dest_pitch : FXSYS_abs(src_pitch); + for (int row = 0; row < bmheight; row++) { + FXSYS_memcpy(pDestBuf + row * dest_pitch, pSrcBuf + row * src_pitch, + rowbytes); + } + } else { + _ContrastAdjust(pSrcBuf, pDestBuf, bmwidth, bmheight, src_pitch, + dest_pitch); + _GammaAdjust(pDestBuf, bmwidth, bmheight, dest_pitch, + CFX_GEModule::Get()->GetTextGammaTable()); + } + } + return pGlyphBitmap; +} +const CFX_PathData* CFX_FaceCache::LoadGlyphPath(CFX_Font* pFont, + FX_DWORD glyph_index, + int dest_width) { + if (!m_Face || glyph_index == (FX_DWORD)-1) + return nullptr; + + FX_DWORD key = glyph_index; + if (pFont->GetSubstFont()) { + key += (((pFont->GetSubstFont()->m_Weight / 16) << 15) + + ((pFont->GetSubstFont()->m_ItalicAngle / 2) << 21) + + ((dest_width / 16) << 25) + (pFont->IsVertical() << 31)); + } + auto it = m_PathMap.find(key); + if (it != m_PathMap.end()) + return it->second; + + CFX_PathData* pGlyphPath = pFont->LoadGlyphPath(glyph_index, dest_width); + m_PathMap[key] = pGlyphPath; + return pGlyphPath; +} +typedef struct { + FX_BOOL m_bCount; + int m_PointCount; + FX_PATHPOINT* m_pPoints; + int m_CurX; + int m_CurY; + FX_FLOAT m_CoordUnit; +} OUTLINE_PARAMS; +void _Outline_CheckEmptyContour(OUTLINE_PARAMS* param) { + if (param->m_PointCount >= 2 && + param->m_pPoints[param->m_PointCount - 2].m_Flag == FXPT_MOVETO && + param->m_pPoints[param->m_PointCount - 2].m_PointX == + param->m_pPoints[param->m_PointCount - 1].m_PointX && + param->m_pPoints[param->m_PointCount - 2].m_PointY == + param->m_pPoints[param->m_PointCount - 1].m_PointY) { + param->m_PointCount -= 2; + } + if (param->m_PointCount >= 4 && + param->m_pPoints[param->m_PointCount - 4].m_Flag == FXPT_MOVETO && + param->m_pPoints[param->m_PointCount - 3].m_Flag == FXPT_BEZIERTO && + param->m_pPoints[param->m_PointCount - 3].m_PointX == + param->m_pPoints[param->m_PointCount - 4].m_PointX && + param->m_pPoints[param->m_PointCount - 3].m_PointY == + param->m_pPoints[param->m_PointCount - 4].m_PointY && + param->m_pPoints[param->m_PointCount - 2].m_PointX == + param->m_pPoints[param->m_PointCount - 4].m_PointX && + param->m_pPoints[param->m_PointCount - 2].m_PointY == + param->m_pPoints[param->m_PointCount - 4].m_PointY && + param->m_pPoints[param->m_PointCount - 1].m_PointX == + param->m_pPoints[param->m_PointCount - 4].m_PointX && + param->m_pPoints[param->m_PointCount - 1].m_PointY == + param->m_pPoints[param->m_PointCount - 4].m_PointY) { + param->m_PointCount -= 4; + } +} +extern "C" { +static int _Outline_MoveTo(const FXFT_Vector* to, void* user) { + OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; + if (!param->m_bCount) { + _Outline_CheckEmptyContour(param); + param->m_pPoints[param->m_PointCount].m_PointX = to->x / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_PointY = to->y / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_Flag = FXPT_MOVETO; + param->m_CurX = to->x; + param->m_CurY = to->y; + if (param->m_PointCount) { + param->m_pPoints[param->m_PointCount - 1].m_Flag |= FXPT_CLOSEFIGURE; + } + } + param->m_PointCount++; + return 0; +} +}; +extern "C" { +static int _Outline_LineTo(const FXFT_Vector* to, void* user) { + OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; + if (!param->m_bCount) { + param->m_pPoints[param->m_PointCount].m_PointX = to->x / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_PointY = to->y / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_Flag = FXPT_LINETO; + param->m_CurX = to->x; + param->m_CurY = to->y; + } + param->m_PointCount++; + return 0; +} +}; +extern "C" { +static int _Outline_ConicTo(const FXFT_Vector* control, + const FXFT_Vector* to, + void* user) { + OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; + if (!param->m_bCount) { + param->m_pPoints[param->m_PointCount].m_PointX = + (param->m_CurX + (control->x - param->m_CurX) * 2 / 3) / + param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_PointY = + (param->m_CurY + (control->y - param->m_CurY) * 2 / 3) / + param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_Flag = FXPT_BEZIERTO; + param->m_pPoints[param->m_PointCount + 1].m_PointX = + (control->x + (to->x - control->x) / 3) / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 1].m_PointY = + (control->y + (to->y - control->y) / 3) / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 1].m_Flag = FXPT_BEZIERTO; + param->m_pPoints[param->m_PointCount + 2].m_PointX = + to->x / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 2].m_PointY = + to->y / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 2].m_Flag = FXPT_BEZIERTO; + param->m_CurX = to->x; + param->m_CurY = to->y; + } + param->m_PointCount += 3; + return 0; +} +}; +extern "C" { +static int _Outline_CubicTo(const FXFT_Vector* control1, + const FXFT_Vector* control2, + const FXFT_Vector* to, + void* user) { + OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; + if (!param->m_bCount) { + param->m_pPoints[param->m_PointCount].m_PointX = + control1->x / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_PointY = + control1->y / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount].m_Flag = FXPT_BEZIERTO; + param->m_pPoints[param->m_PointCount + 1].m_PointX = + control2->x / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 1].m_PointY = + control2->y / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 1].m_Flag = FXPT_BEZIERTO; + param->m_pPoints[param->m_PointCount + 2].m_PointX = + to->x / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 2].m_PointY = + to->y / param->m_CoordUnit; + param->m_pPoints[param->m_PointCount + 2].m_Flag = FXPT_BEZIERTO; + param->m_CurX = to->x; + param->m_CurY = to->y; + } + param->m_PointCount += 3; + return 0; +} +}; +CFX_PathData* CFX_Font::LoadGlyphPath(FX_DWORD glyph_index, int dest_width) { + if (!m_Face) { + return NULL; + } + FXFT_Set_Pixel_Sizes(m_Face, 0, 64); + FXFT_Matrix ft_matrix = {65536, 0, 0, 65536}; + if (m_pSubstFont) { + if (m_pSubstFont->m_ItalicAngle) { + int skew = m_pSubstFont->m_ItalicAngle; + skew = skew <= -ANGLESKEW_ARRAY_SIZE ? -58 : -g_AngleSkew[-skew]; + if (m_bVertical) { + ft_matrix.yx += ft_matrix.yy * skew / 100; + } else { + ft_matrix.xy += -ft_matrix.xx * skew / 100; + } + } + if (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) { + AdjustMMParams(glyph_index, dest_width, m_pSubstFont->m_Weight); + } + } + ScopedFontTransform scoped_transform(m_Face, &ft_matrix); + int load_flags = FXFT_LOAD_NO_BITMAP; + if (!(m_Face->face_flags & FT_FACE_FLAG_SFNT) || !FT_IS_TRICKY(m_Face)) { + load_flags |= FT_LOAD_NO_HINTING; + } + int error = FXFT_Load_Glyph(m_Face, glyph_index, load_flags); + if (error) { + return NULL; + } + if (m_pSubstFont && !(m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) && + m_pSubstFont->m_Weight > 400) { + int index = (m_pSubstFont->m_Weight - 400) / 10; + if (index >= WEIGHTPOW_ARRAY_SIZE) + index = WEIGHTPOW_ARRAY_SIZE - 1; + int level = 0; + if (m_pSubstFont->m_Charset == FXFONT_SHIFTJIS_CHARSET) { + level = g_WeightPow_SHIFTJIS[index] * 2 * 65536 / 36655; + } else { + level = g_WeightPow[index] * 2; + } + FXFT_Outline_Embolden(FXFT_Get_Glyph_Outline(m_Face), level); + } + FXFT_Outline_Funcs funcs; + funcs.move_to = _Outline_MoveTo; + funcs.line_to = _Outline_LineTo; + funcs.conic_to = _Outline_ConicTo; + funcs.cubic_to = _Outline_CubicTo; + funcs.shift = 0; + funcs.delta = 0; + OUTLINE_PARAMS params; + params.m_bCount = TRUE; + params.m_PointCount = 0; + FXFT_Outline_Decompose(FXFT_Get_Glyph_Outline(m_Face), &funcs, ¶ms); + if (params.m_PointCount == 0) { + return NULL; + } + CFX_PathData* pPath = new CFX_PathData; + pPath->SetPointCount(params.m_PointCount); + params.m_bCount = FALSE; + params.m_PointCount = 0; + params.m_pPoints = pPath->GetPoints(); + params.m_CurX = params.m_CurY = 0; + params.m_CoordUnit = 64 * 64.0; + FXFT_Outline_Decompose(FXFT_Get_Glyph_Outline(m_Face), &funcs, ¶ms); + _Outline_CheckEmptyContour(¶ms); + pPath->TrimPoints(params.m_PointCount); + if (params.m_PointCount) { + pPath->GetPoints()[params.m_PointCount - 1].m_Flag |= FXPT_CLOSEFIGURE; + } + return pPath; +} +void _CFX_UniqueKeyGen::Generate(int count, ...) { + va_list argList; + va_start(argList, count); + for (int i = 0; i < count; i++) { + int p = va_arg(argList, int); + ((FX_DWORD*)m_Key)[i] = p; + } + va_end(argList); + m_KeyLen = count * sizeof(FX_DWORD); +} diff --git a/core/fxge/ge/fx_text_int.h b/core/fxge/ge/fx_text_int.h new file mode 100644 index 0000000000..d88b2a7cb9 --- /dev/null +++ b/core/fxge/ge/fx_text_int.h @@ -0,0 +1,84 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_GE_FX_TEXT_INT_H_ +#define CORE_FXGE_GE_FX_TEXT_INT_H_ + +#include + +#include "core/include/fxge/fx_font.h" +#include "core/include/fxge/fx_freetype.h" + +struct _CFX_UniqueKeyGen { + void Generate(int count, ...); + FX_CHAR m_Key[128]; + int m_KeyLen; +}; +class CFX_SizeGlyphCache { + public: + CFX_SizeGlyphCache() {} + ~CFX_SizeGlyphCache(); + std::map m_GlyphMap; +}; +class CTTFontDesc { + public: + CTTFontDesc() { + m_Type = 0; + m_pFontData = NULL; + m_RefCount = 0; + } + ~CTTFontDesc(); + // ret < 0, releaseface not appropriate for this object. + // ret == 0, object released + // ret > 0, object still alive, other referrers. + int ReleaseFace(FXFT_Face face); + int m_Type; + union { + struct { + FX_BOOL m_bItalic; + FX_BOOL m_bBold; + FXFT_Face m_pFace; + } m_SingleFace; + struct { + FXFT_Face m_pFaces[16]; + } m_TTCFace; + }; + uint8_t* m_pFontData; + int m_RefCount; +}; + +#define CHARSET_FLAG_ANSI 1 +#define CHARSET_FLAG_SYMBOL 2 +#define CHARSET_FLAG_SHIFTJIS 4 +#define CHARSET_FLAG_BIG5 8 +#define CHARSET_FLAG_GB 16 +#define CHARSET_FLAG_KOREAN 32 + +class CFX_FontFaceInfo { + public: + CFX_FontFaceInfo(CFX_ByteString filePath, + CFX_ByteString faceName, + CFX_ByteString fontTables, + FX_DWORD fontOffset, + FX_DWORD fileSize) + : m_FilePath(filePath), + m_FaceName(faceName), + m_FontTables(fontTables), + m_FontOffset(fontOffset), + m_FileSize(fileSize), + m_Styles(0), + m_Charsets(0) {} + + const CFX_ByteString m_FilePath; + const CFX_ByteString m_FaceName; + const CFX_ByteString m_FontTables; + const FX_DWORD m_FontOffset; + const FX_DWORD m_FileSize; + FX_DWORD m_Styles; + FX_DWORD m_Charsets; +}; + +#endif // CORE_FXGE_GE_FX_TEXT_INT_H_ diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp new file mode 100644 index 0000000000..10eebe496c --- /dev/null +++ b/core/fxge/skia/fx_skia_device.cpp @@ -0,0 +1,425 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "core/include/fxge/fx_ge.h" + +#if defined(_SKIA_SUPPORT_) +#include "core/include/fxcodec/fx_codec.h" + +#include "core/fxge/agg/fx_agg_driver.h" +#include "core/fxge/skia/fx_skia_device.h" + +#include "SkCanvas.h" +#include "SkDashPathEffect.h" +#include "SkPaint.h" +#include "SkPath.h" + +static SkPath BuildPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device) { + SkPath skPath; + const CFX_PathData* pFPath = pPathData; + int nPoints = pFPath->GetPointCount(); + FX_PATHPOINT* pPoints = pFPath->GetPoints(); + for (int i = 0; i < nPoints; i++) { + FX_FLOAT x = pPoints[i].m_PointX; + FX_FLOAT y = pPoints[i].m_PointY; + if (pObject2Device) + pObject2Device->Transform(x, y); + int point_type = pPoints[i].m_Flag & FXPT_TYPE; + if (point_type == FXPT_MOVETO) { + skPath.moveTo(x, y); + } else if (point_type == FXPT_LINETO) { + skPath.lineTo(x, y); + } else if (point_type == FXPT_BEZIERTO) { + FX_FLOAT x2 = pPoints[i + 1].m_PointX, y2 = pPoints[i + 1].m_PointY; + FX_FLOAT x3 = pPoints[i + 2].m_PointX, y3 = pPoints[i + 2].m_PointY; + if (pObject2Device) { + pObject2Device->Transform(x2, y2); + pObject2Device->Transform(x3, y3); + } + skPath.cubicTo(x, y, x2, y2, x3, y3); + i += 2; + } + if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE) + skPath.close(); + } + return skPath; +} + +// convert a stroking path to scanlines +void CFX_SkiaDeviceDriver::PaintStroke(SkPaint* spaint, + const CFX_GraphStateData* pGraphState) { + SkPaint::Cap cap; + switch (pGraphState->m_LineCap) { + case CFX_GraphStateData::LineCapRound: + cap = SkPaint::kRound_Cap; + break; + case CFX_GraphStateData::LineCapSquare: + cap = SkPaint::kSquare_Cap; + break; + default: + cap = SkPaint::kButt_Cap; + break; + } + SkPaint::Join join; + switch (pGraphState->m_LineJoin) { + case CFX_GraphStateData::LineJoinRound: + join = SkPaint::kRound_Join; + break; + case CFX_GraphStateData::LineJoinBevel: + join = SkPaint::kBevel_Join; + break; + default: + join = SkPaint::kMiter_Join; + break; + } + FX_FLOAT width = pGraphState->m_LineWidth; + + if (pGraphState->m_DashArray) { + int count = (pGraphState->m_DashCount + 1) / 2; + SkScalar* intervals = FX_Alloc2D(SkScalar, count, sizeof(SkScalar)); + // Set dash pattern + for (int i = 0; i < count; i++) { + FX_FLOAT on = pGraphState->m_DashArray[i * 2]; + if (on <= 0.000001f) + on = 1.f / 10; + FX_FLOAT off = i * 2 + 1 == pGraphState->m_DashCount + ? on + : pGraphState->m_DashArray[i * 2 + 1]; + if (off < 0) + off = 0; + intervals[i * 2] = on; + intervals[i * 2 + 1] = off; + } + spaint->setPathEffect(SkDashPathEffect::Create(intervals, count * 2, + pGraphState->m_DashPhase)) + ->unref(); + } + spaint->setStyle(SkPaint::kStroke_Style); + spaint->setAntiAlias(TRUE); + spaint->setStrokeWidth(width); + spaint->setStrokeMiter(pGraphState->m_MiterLimit); + spaint->setStrokeCap(cap); + spaint->setStrokeJoin(join); +} + +CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap, + int dither_bits, + FX_BOOL bRgbByteOrder, + CFX_DIBitmap* pOriDevice, + FX_BOOL bGroupKnockout) { + m_pAggDriver = new CFX_AggDeviceDriver(pBitmap, dither_bits, bRgbByteOrder, + pOriDevice, bGroupKnockout); + SkBitmap skBitmap; + const CFX_DIBitmap* bitmap = m_pAggDriver->m_pBitmap; + SkImageInfo imageInfo = + SkImageInfo::Make(bitmap->GetWidth(), bitmap->GetHeight(), + kN32_SkColorType, kOpaque_SkAlphaType); + skBitmap.installPixels(imageInfo, bitmap->GetBuffer(), bitmap->GetPitch(), + nullptr, /* to do : set color table */ + nullptr, nullptr); + m_canvas = new SkCanvas(skBitmap); +} + +CFX_SkiaDeviceDriver::~CFX_SkiaDeviceDriver() { +#if 0 // TODO(caryclark) : mismatch on allocator ? + delete m_canvas; +#endif + delete m_pAggDriver; +} + +FX_BOOL CFX_SkiaDeviceDriver::DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + return m_pAggDriver->DrawDeviceText(nChars, pCharPos, pFont, pCache, + pObject2Device, font_size, color, + alpha_flag, pIccTransform); +} + +int CFX_SkiaDeviceDriver::GetDeviceCaps(int caps_id) { + return m_pAggDriver->GetDeviceCaps(caps_id); +} + +void CFX_SkiaDeviceDriver::SaveState() { + m_canvas->save(); + m_pAggDriver->SaveState(); +} + +void CFX_SkiaDeviceDriver::RestoreState(FX_BOOL bKeepSaved) { + m_pAggDriver->RestoreState(bKeepSaved); + m_canvas->restore(); +} + +void CFX_SkiaDeviceDriver::SetClipMask( + agg::rasterizer_scanline_aa& rasterizer) { + m_pAggDriver->SetClipMask(rasterizer); +} + +FX_BOOL CFX_SkiaDeviceDriver::SetClip_PathFill( + const CFX_PathData* pPathData, // path info + const CFX_Matrix* pObject2Device, // optional transformation + int fill_mode // fill mode, WINDING or ALTERNATE + ) { + if (!m_pAggDriver->m_pClipRgn) { + m_pAggDriver->m_pClipRgn = new CFX_ClipRgn( + GetDeviceCaps(FXDC_PIXEL_WIDTH), GetDeviceCaps(FXDC_PIXEL_HEIGHT)); + } + + if (pPathData->GetPointCount() == 5 || pPathData->GetPointCount() == 4) { + CFX_FloatRect rectf; + if (pPathData->IsRect(pObject2Device, &rectf)) { + rectf.Intersect( + CFX_FloatRect(0, 0, (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_WIDTH), + (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_HEIGHT))); + FX_RECT rect = rectf.GetOutterRect(); + m_pAggDriver->m_pClipRgn->IntersectRect(rect); + return TRUE; + } + } + SkPath clip = BuildPath(pPathData, pObject2Device); + clip.setFillType((fill_mode & 3) == FXFILL_WINDING + ? SkPath::kWinding_FillType + : SkPath::kEvenOdd_FillType); + const CFX_Matrix& m = *pObject2Device; +#if 0 + // TODO(caryclark) : don't clip quite yet + // need to understand how to save/restore to balance the clip + printf("m:(%g,%g,%g) (%g,%g,%g)\n", m.a, m.b, m.c, m.d, m.e, m.f); + clip.dump(); + SkMatrix skMatrix; + skMatrix.setAll(m.a, m.b, m.c, m.d, m.e, m.f, 0, 0, 1); + m_canvas->setMatrix(skMatrix); + m_canvas->clipPath(clip, SkRegion::kReplace_Op); +#endif + + return TRUE; +} + +FX_BOOL CFX_SkiaDeviceDriver::SetClip_PathStroke( + const CFX_PathData* pPathData, // path info + const CFX_Matrix* pObject2Device, // optional transformation + const CFX_GraphStateData* pGraphState // graphic state, for pen attributes + ) { + if (!m_pAggDriver->m_pClipRgn) { + m_pAggDriver->m_pClipRgn = new CFX_ClipRgn( + GetDeviceCaps(FXDC_PIXEL_WIDTH), GetDeviceCaps(FXDC_PIXEL_HEIGHT)); + } + + // build path data + SkPath skPath = BuildPath(pPathData, NULL); + skPath.setFillType(SkPath::kWinding_FillType); + + SkPaint spaint; + PaintStroke(&spaint, pGraphState); + SkPath dst_path; + spaint.getFillPath(skPath, &dst_path); +#if 01 + SkMatrix skMatrix; + const CFX_Matrix& m = *pObject2Device; + skMatrix.setAll(m.a, m.b, m.c, m.d, m.e, m.f, 0, 0, 1); + m_canvas->setMatrix(skMatrix); + // TODO(caryclark) : don't clip quite yet + // need to understand how to save/restore so that clip is later undone + m_canvas->clipPath(dst_path, SkRegion::kReplace_Op); +#endif + return TRUE; +} + +FX_BOOL CFX_SkiaDeviceDriver::RenderRasterizer( + agg::rasterizer_scanline_aa& rasterizer, + FX_DWORD color, + FX_BOOL bFullCover, + FX_BOOL bGroupKnockout, + int alpha_flag, + void* pIccTransform) { + return m_pAggDriver->RenderRasterizer( + rasterizer, color, bFullCover, bGroupKnockout, alpha_flag, pIccTransform); +} + +FX_BOOL CFX_SkiaDeviceDriver::DrawPath( + const CFX_PathData* pPathData, // path info + const CFX_Matrix* pObject2Device, // optional transformation + const CFX_GraphStateData* pGraphState, // graphic state, for pen attributes + FX_DWORD fill_color, // fill color + FX_DWORD stroke_color, // stroke color + int fill_mode, // fill mode, WINDING or ALTERNATE. 0 for not filled + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (!GetBuffer()) + return TRUE; + SkIRect rect; + rect.set(0, 0, GetDeviceCaps(FXDC_PIXEL_WIDTH), + GetDeviceCaps(FXDC_PIXEL_HEIGHT)); + SkPath skPath = BuildPath(pPathData, pObject2Device); + SkPaint spaint; + spaint.setAntiAlias(TRUE); + if ((fill_mode & 3) && fill_color) { + skPath.setFillType((fill_mode & 3) == FXFILL_WINDING + ? SkPath::kWinding_FillType + : SkPath::kEvenOdd_FillType); + + spaint.setStyle(SkPaint::kFill_Style); + spaint.setColor(fill_color); + m_canvas->drawPath(skPath, spaint); + } + int stroke_alpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? FXGETFLAG_ALPHA_STROKE(alpha_flag) + : FXARGB_A(stroke_color); + + if (pGraphState && stroke_alpha) { + spaint.setColor(stroke_color); + PaintStroke(&spaint, pGraphState); + m_canvas->drawPath(skPath, spaint); + } + + return TRUE; +} + +FX_BOOL CFX_SkiaDeviceDriver::SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + return m_pAggDriver->SetPixel(x, y, color, alpha_flag, pIccTransform); +} + +FX_BOOL CFX_SkiaDeviceDriver::FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag, + void* pIccTransform, + int blend_type) { + SkPaint spaint; + spaint.setAntiAlias(true); + spaint.setColor(fill_color); + + m_canvas->drawRect( + SkRect::MakeLTRB(pRect->left, pRect->top, pRect->right, pRect->bottom), + spaint); + return TRUE; +} + +FX_BOOL CFX_SkiaDeviceDriver::GetClipBox(FX_RECT* pRect) { + return m_pAggDriver->GetClipBox(pRect); +} + +FX_BOOL CFX_SkiaDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform, + FX_BOOL bDEdge) { + return m_pAggDriver->GetDIBits(pBitmap, left, top, pIccTransform, bDEdge); +} + +FX_BOOL CFX_SkiaDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD argb, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform) { + return m_pAggDriver->SetDIBits(pBitmap, argb, pSrcRect, left, top, blend_type, + alpha_flag, pIccTransform); +} + +FX_BOOL CFX_SkiaDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource, + FX_DWORD argb, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type) { + return m_pAggDriver->StretchDIBits(pSource, argb, dest_left, dest_top, + dest_width, dest_height, pClipRect, flags, + alpha_flag, pIccTransform, blend_type); +} + +FX_BOOL CFX_SkiaDeviceDriver::StartDIBits(const CFX_DIBSource* pSource, + int bitmap_alpha, + FX_DWORD argb, + const CFX_Matrix* pMatrix, + FX_DWORD render_flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type) { + return m_pAggDriver->StartDIBits(pSource, bitmap_alpha, argb, pMatrix, + render_flags, handle, alpha_flag, + pIccTransform, blend_type); +} + +FX_BOOL CFX_SkiaDeviceDriver::ContinueDIBits(void* pHandle, IFX_Pause* pPause) { + return m_pAggDriver->ContinueDIBits(pHandle, pPause); +} + +void CFX_SkiaDeviceDriver::CancelDIBits(void* pHandle) { + m_pAggDriver->CancelDIBits(pHandle); +} + +CFX_SkiaDevice::CFX_SkiaDevice() { + m_bOwnedBitmap = FALSE; +} + +FX_BOOL CFX_SkiaDevice::Attach(CFX_DIBitmap* pBitmap, + int dither_bits, + FX_BOOL bRgbByteOrder, + CFX_DIBitmap* pOriDevice, + FX_BOOL bGroupKnockout) { + if (!pBitmap) + return FALSE; + SetBitmap(pBitmap); + CFX_SkiaDeviceDriver* pDriver = new CFX_SkiaDeviceDriver( + pBitmap, dither_bits, bRgbByteOrder, pOriDevice, bGroupKnockout); + SetDeviceDriver(pDriver); + return TRUE; +} + +FX_BOOL CFX_SkiaDevice::Create(int width, + int height, + FXDIB_Format format, + int dither_bits, + CFX_DIBitmap* pOriDevice) { + m_bOwnedBitmap = TRUE; + CFX_DIBitmap* pBitmap = new CFX_DIBitmap; + if (!pBitmap->Create(width, height, format)) { + delete pBitmap; + return FALSE; + } + SetBitmap(pBitmap); + CFX_SkiaDeviceDriver* pDriver = + new CFX_SkiaDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); + SetDeviceDriver(pDriver); + return TRUE; +} + +CFX_SkiaDevice::~CFX_SkiaDevice() { + if (m_bOwnedBitmap && GetBitmap()) + delete GetBitmap(); +} + +#if 0 +#include +#include + +void SkDebugf(const char format[], ...) { + va_list args; + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); +} + +#endif + +#endif diff --git a/core/fxge/skia/fx_skia_device.h b/core/fxge/skia/fx_skia_device.h new file mode 100644 index 0000000000..1a36fbe85b --- /dev/null +++ b/core/fxge/skia/fx_skia_device.h @@ -0,0 +1,149 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CORE_FXGE_SKIA_FX_SKIA_DEVICE_H_ +#define CORE_FXGE_SKIA_FX_SKIA_DEVICE_H_ + +#if defined(_SKIA_SUPPORT_) + +class SkCanvas; +class SkPaint; +class SkPath; +struct SkIRect; + +class CFX_SkiaDeviceDriver : public IFX_RenderDeviceDriver { + public: + CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap, + int dither_bits, + FX_BOOL bRgbByteOrder, + CFX_DIBitmap* pOriDevice, + FX_BOOL bGroupKnockout); + ~CFX_SkiaDeviceDriver() override; + + /** Options */ + virtual int GetDeviceCaps(int caps_id); + + /** Save and restore all graphic states */ + virtual void SaveState(); + virtual void RestoreState(FX_BOOL bKeepSaved); + + /** Set clipping path using filled region */ + virtual FX_BOOL SetClip_PathFill( + const CFX_PathData* pPathData, // path info + const CFX_Matrix* pObject2Device, // optional transformation + int fill_mode); // fill mode, WINDING or ALTERNATE + + /** Set clipping path using stroked region */ + virtual FX_BOOL SetClip_PathStroke( + const CFX_PathData* pPathData, // path info + const CFX_Matrix* pObject2Device, // optional transformation + const CFX_GraphStateData* + pGraphState); // graphic state, for pen attributes + + /** Draw a path */ + virtual FX_BOOL DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL); + + virtual FX_BOOL SetPixel(int x, + int y, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL); + + virtual FX_BOOL FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL); + + /** Draw a single pixel (device dependant) line */ + virtual FX_BOOL DrawCosmeticLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL) { + return FALSE; + } + + virtual FX_BOOL GetClipBox(FX_RECT* pRect); + + /** Load device buffer into a DIB */ + virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform = NULL, + FX_BOOL bDEdge = FALSE); + + virtual CFX_DIBitmap* GetBackDrop() { return m_pAggDriver->GetBackDrop(); } + + virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const FX_RECT* pSrcRect, + int dest_left, + int dest_top, + int blend_type, + int alpha_flag = 0, + void* pIccTransform = NULL); + virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL); + + virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD flags, + void*& handle, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL); + virtual FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause); + virtual void CancelDIBits(void* handle); + + virtual FX_BOOL DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag = 0, + void* pIccTransform = NULL); + + virtual FX_BOOL RenderRasterizer(agg::rasterizer_scanline_aa& rasterizer, + FX_DWORD color, + FX_BOOL bFullCover, + FX_BOOL bGroupKnockout, + int alpha_flag, + void* pIccTransform); + void SetClipMask(agg::rasterizer_scanline_aa& rasterizer); + void SetClipMask(SkPath& skPath, SkPaint* spaint); + virtual uint8_t* GetBuffer() const { return m_pAggDriver->GetBuffer(); } + void PaintStroke(SkPaint* spaint, const CFX_GraphStateData* pGraphState); + + private: + CFX_AggDeviceDriver* m_pAggDriver; + SkCanvas* m_canvas; +}; +#endif // defined(_SKIA_SUPPORT_) + +#endif // CORE_FXGE_SKIA_FX_SKIA_DEVICE_H_ diff --git a/core/fxge/win32/dwrite_int.h b/core/fxge/win32/dwrite_int.h new file mode 100644 index 0000000000..62672b2387 --- /dev/null +++ b/core/fxge/win32/dwrite_int.h @@ -0,0 +1,66 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_WIN32_DWRITE_INT_H_ +#define CORE_FXGE_WIN32_DWRITE_INT_H_ + +#ifndef DECLSPEC_UUID +#if (_MSC_VER >= 1100) && defined(__cplusplus) +#define DECLSPEC_UUID(x) __declspec(uuid(x)) +#else +#define DECLSPEC_UUID(x) +#endif +#endif +#ifndef DECLSPEC_NOVTABLE +#if (_MSC_VER >= 1100) && defined(__cplusplus) +#define DECLSPEC_NOVTABLE __declspec(novtable) +#else +#define DECLSPEC_NOVTABLE +#endif +#endif +#if (WINVER < 0x0500) +#ifndef _MAC +DECLARE_HANDLE(HMONITOR); +#endif +#endif +class CDWriteExt { + public: + CDWriteExt(); + ~CDWriteExt(); + + void Load(); + void Unload(); + + FX_BOOL IsAvailable() { return m_pDWriteFactory != NULL; } + + void* DwCreateFontFaceFromStream(uint8_t* pData, + FX_DWORD size, + int simulation_style); + FX_BOOL DwCreateRenderingTarget(CFX_DIBitmap* pSrc, void** renderTarget); + void DwDeleteRenderingTarget(void* renderTarget); + FX_BOOL DwRendingString(void* renderTarget, + CFX_ClipRgn* pClipRgn, + FX_RECT& stringRect, + CFX_Matrix* pMatrix, + void* font, + FX_FLOAT font_size, + FX_ARGB text_color, + int glyph_count, + unsigned short* glyph_indices, + FX_FLOAT baselineOriginX, + FX_FLOAT baselineOriginY, + void* glyph_offsets, + FX_FLOAT* glyph_advances); + void DwDeleteFont(void* pFont); + + protected: + void* m_hModule; + void* m_pDWriteFactory; + void* m_pDwFontContext; + void* m_pDwTextRenderer; +}; + +#endif // CORE_FXGE_WIN32_DWRITE_INT_H_ diff --git a/core/fxge/win32/fx_win32_device.cpp b/core/fxge/win32/fx_win32_device.cpp new file mode 100644 index 0000000000..c7afab39a7 --- /dev/null +++ b/core/fxge/win32/fx_win32_device.cpp @@ -0,0 +1,1372 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ +#include + +#include "core/fxge/agg/fx_agg_driver.h" +#include "core/fxge/dib/dib_int.h" +#include "core/fxge/ge/fx_text_int.h" +#include "core/fxge/win32/dwrite_int.h" +#include "core/fxge/win32/win32_int.h" +#include "core/include/fxcodec/fx_codec.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge_win32.h" +#include "third_party/base/stl_util.h" + +class CFX_Win32FallbackFontInfo final : public CFX_FolderFontInfo { + public: + void* MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* family, + int& iExact) override; +}; +class CFX_Win32FontInfo final : public IFX_SystemFontInfo { + public: + CFX_Win32FontInfo(); + ~CFX_Win32FontInfo() override; + + // IFX_SystemFontInfo + void Release() override; + FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override; + void* MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* face, + int& iExact) override; + void* GetFont(const FX_CHAR* face) override { return NULL; } + FX_DWORD GetFontData(void* hFont, + FX_DWORD table, + uint8_t* buffer, + FX_DWORD size) override; + FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) override; + FX_BOOL GetFontCharset(void* hFont, int& charset) override; + void DeleteFont(void* hFont) override; + + FX_BOOL IsOpenTypeFromDiv(const LOGFONTA* plf); + FX_BOOL IsSupportFontFormDiv(const LOGFONTA* plf); + void AddInstalledFont(const LOGFONTA* plf, FX_DWORD FontType); + void GetGBPreference(CFX_ByteString& face, int weight, int picth_family); + void GetJapanesePreference(CFX_ByteString& face, + int weight, + int picth_family); + CFX_ByteString FindFont(const CFX_ByteString& name); + HDC m_hDC; + CFX_FontMapper* m_pMapper; + CFX_ByteString m_LastFamily; + CFX_ByteString m_KaiTi, m_FangSong; +}; + +CFX_Win32FontInfo::CFX_Win32FontInfo() { + m_hDC = CreateCompatibleDC(NULL); +} +CFX_Win32FontInfo::~CFX_Win32FontInfo() { + m_pMapper = NULL; +} +void CFX_Win32FontInfo::Release() { + DeleteDC(m_hDC); + delete this; +} +#define TT_MAKE_TAG(x1, x2, x3, x4) \ + (((FX_DWORD)x1 << 24) | ((FX_DWORD)x2 << 16) | ((FX_DWORD)x3 << 8) | \ + (FX_DWORD)x4) +FX_BOOL CFX_Win32FontInfo::IsOpenTypeFromDiv(const LOGFONTA* plf) { + HFONT hFont = CreateFontIndirectA(plf); + FX_BOOL ret = FALSE; + FX_DWORD font_size = GetFontData(hFont, 0, NULL, 0); + if (font_size != GDI_ERROR && font_size >= sizeof(FX_DWORD)) { + FX_DWORD lVersion = 0; + GetFontData(hFont, 0, (uint8_t*)(&lVersion), sizeof(FX_DWORD)); + lVersion = (((FX_DWORD)(uint8_t)(lVersion)) << 24) | + ((FX_DWORD)((uint8_t)(lVersion >> 8))) << 16 | + ((FX_DWORD)((uint8_t)(lVersion >> 16))) << 8 | + ((uint8_t)(lVersion >> 24)); + if (lVersion == TT_MAKE_TAG('O', 'T', 'T', 'O') || lVersion == 0x00010000 || + lVersion == TT_MAKE_TAG('t', 't', 'c', 'f') || + lVersion == TT_MAKE_TAG('t', 'r', 'u', 'e') || lVersion == 0x00020000) { + ret = TRUE; + } + } + DeleteFont(hFont); + return ret; +} +FX_BOOL CFX_Win32FontInfo::IsSupportFontFormDiv(const LOGFONTA* plf) { + HFONT hFont = CreateFontIndirectA(plf); + FX_BOOL ret = FALSE; + FX_DWORD font_size = GetFontData(hFont, 0, NULL, 0); + if (font_size != GDI_ERROR && font_size >= sizeof(FX_DWORD)) { + FX_DWORD lVersion = 0; + GetFontData(hFont, 0, (uint8_t*)(&lVersion), sizeof(FX_DWORD)); + lVersion = (((FX_DWORD)(uint8_t)(lVersion)) << 24) | + ((FX_DWORD)((uint8_t)(lVersion >> 8))) << 16 | + ((FX_DWORD)((uint8_t)(lVersion >> 16))) << 8 | + ((uint8_t)(lVersion >> 24)); + if (lVersion == TT_MAKE_TAG('O', 'T', 'T', 'O') || lVersion == 0x00010000 || + lVersion == TT_MAKE_TAG('t', 't', 'c', 'f') || + lVersion == TT_MAKE_TAG('t', 'r', 'u', 'e') || lVersion == 0x00020000) { + ret = TRUE; + } else if ((lVersion & 0xFFFF0000) == TT_MAKE_TAG(0x80, 0x01, 0x00, 0x00) || + (lVersion & 0xFFFF0000) == TT_MAKE_TAG('%', '!', 0, 0)) { + ret = TRUE; + } + } + DeleteFont(hFont); + return ret; +} +void CFX_Win32FontInfo::AddInstalledFont(const LOGFONTA* plf, + FX_DWORD FontType) { + CFX_ByteString name(plf->lfFaceName); + if (name[0] == '@') { + return; + } + if (name == m_LastFamily) { + m_pMapper->AddInstalledFont(name, plf->lfCharSet); + return; + } + if (!(FontType & TRUETYPE_FONTTYPE) && !(FontType & DEVICE_FONTTYPE)) { + return; + } + if (!(FontType & TRUETYPE_FONTTYPE)) { + if (!IsSupportFontFormDiv(plf)) { + return; + } + } + m_pMapper->AddInstalledFont(name, plf->lfCharSet); + m_LastFamily = name; +} +static int CALLBACK FontEnumProc(const LOGFONTA* plf, + const TEXTMETRICA* lpntme, + FX_DWORD FontType, + LPARAM lParam) { + CFX_Win32FontInfo* pFontInfo = (CFX_Win32FontInfo*)lParam; + if (pFontInfo->m_pMapper->GetFontEnumerator()) { + pFontInfo->m_pMapper->GetFontEnumerator()->HitFont(); + } + pFontInfo->AddInstalledFont(plf, FontType); + return 1; +} +FX_BOOL CFX_Win32FontInfo::EnumFontList(CFX_FontMapper* pMapper) { + m_pMapper = pMapper; + LOGFONTA lf; + FXSYS_memset(&lf, 0, sizeof(LOGFONTA)); + lf.lfCharSet = DEFAULT_CHARSET; + lf.lfFaceName[0] = 0; + lf.lfPitchAndFamily = 0; + EnumFontFamiliesExA(m_hDC, &lf, (FONTENUMPROCA)FontEnumProc, (uintptr_t) this, + 0); + if (pMapper->GetFontEnumerator()) { + pMapper->GetFontEnumerator()->Finish(); + } + return TRUE; +} +static const struct { + const FX_CHAR* m_pFaceName; + const FX_CHAR* m_pVariantName; +} VariantNames[] = { + {"DFKai-SB", "\x19\x6A\x77\x69\xD4\x9A"}, +}; +static const struct { + const FX_CHAR* m_pName; + const FX_CHAR* m_pWinName; + FX_BOOL m_bBold; + FX_BOOL m_bItalic; +} Base14Substs[] = { + {"Courier", "Courier New", FALSE, FALSE}, + {"Courier-Bold", "Courier New", TRUE, FALSE}, + {"Courier-BoldOblique", "Courier New", TRUE, TRUE}, + {"Courier-Oblique", "Courier New", FALSE, TRUE}, + {"Helvetica", "Arial", FALSE, FALSE}, + {"Helvetica-Bold", "Arial", TRUE, FALSE}, + {"Helvetica-BoldOblique", "Arial", TRUE, TRUE}, + {"Helvetica-Oblique", "Arial", FALSE, TRUE}, + {"Times-Roman", "Times New Roman", FALSE, FALSE}, + {"Times-Bold", "Times New Roman", TRUE, FALSE}, + {"Times-BoldItalic", "Times New Roman", TRUE, TRUE}, + {"Times-Italic", "Times New Roman", FALSE, TRUE}, +}; +CFX_ByteString CFX_Win32FontInfo::FindFont(const CFX_ByteString& name) { + if (!m_pMapper) { + return name; + } + int nFonts = pdfium::CollectionSize(m_pMapper->m_InstalledTTFonts); + for (int i = 0; i < nFonts; i++) { + CFX_ByteString thisname = m_pMapper->m_InstalledTTFonts[i]; + if (thisname[0] == ' ') { + if (thisname.Mid(1, name.GetLength()) == name) { + return m_pMapper->m_InstalledTTFonts[i + 1]; + } + } else if (thisname.Left(name.GetLength()) == name) { + return m_pMapper->m_InstalledTTFonts[i]; + } + } + return CFX_ByteString(); +} +void* CFX_Win32FallbackFontInfo::MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* cstr_face, + int& iExact) { + void* font = GetSubstFont(cstr_face); + if (font) { + iExact = 1; + return font; + } + FX_BOOL bCJK = TRUE; + switch (charset) { + case FXFONT_SHIFTJIS_CHARSET: + case FXFONT_GB2312_CHARSET: + case FXFONT_CHINESEBIG5_CHARSET: + case FXFONT_HANGEUL_CHARSET: + default: + bCJK = FALSE; + break; + } + return FindFont(weight, bItalic, charset, pitch_family, cstr_face, !bCJK); +} +struct _FontNameMap { + const FX_CHAR* m_pSubFontName; + const FX_CHAR* m_pSrcFontName; +}; +const _FontNameMap g_JpFontNameMap[] = { + {"MS Mincho", "Heiseimin-W3"}, + {"MS Gothic", "Jun101-Light"}, +}; +extern "C" { +static int compareString(const void* key, const void* element) { + return FXSYS_stricmp((const FX_CHAR*)key, + ((_FontNameMap*)element)->m_pSrcFontName); +} +} +FX_BOOL _GetSubFontName(CFX_ByteString& name) { + int size = sizeof g_JpFontNameMap; + void* pFontnameMap = (void*)g_JpFontNameMap; + _FontNameMap* found = (_FontNameMap*)FXSYS_bsearch( + name.c_str(), pFontnameMap, size / sizeof(_FontNameMap), + sizeof(_FontNameMap), compareString); + if (!found) { + return FALSE; + } + name = found->m_pSubFontName; + return TRUE; +} +void CFX_Win32FontInfo::GetGBPreference(CFX_ByteString& face, + int weight, + int picth_family) { + if (face.Find("KaiTi") >= 0 || face.Find("\xbf\xac") >= 0) { + if (m_KaiTi.IsEmpty()) { + m_KaiTi = FindFont("KaiTi"); + if (m_KaiTi.IsEmpty()) { + m_KaiTi = "SimSun"; + } + } + face = m_KaiTi; + } else if (face.Find("FangSong") >= 0 || face.Find("\xb7\xc2\xcb\xce") >= 0) { + if (m_FangSong.IsEmpty()) { + m_FangSong = FindFont("FangSong"); + if (m_FangSong.IsEmpty()) { + m_FangSong = "SimSun"; + } + } + face = m_FangSong; + } else if (face.Find("SimSun") >= 0 || face.Find("\xcb\xce") >= 0) { + face = "SimSun"; + } else if (face.Find("SimHei") >= 0 || face.Find("\xba\xda") >= 0) { + face = "SimHei"; + } else if (!(picth_family & FF_ROMAN) && weight > 550) { + face = "SimHei"; + } else { + face = "SimSun"; + } +} +void CFX_Win32FontInfo::GetJapanesePreference(CFX_ByteString& face, + int weight, + int picth_family) { + if (face.Find("Gothic") >= 0 || + face.Find("\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { + if (face.Find("PGothic") >= 0 || + face.Find("\x82\x6f\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { + face = "MS PGothic"; + } else if (face.Find("UI Gothic") >= 0) { + face = "MS UI Gothic"; + } else { + if (face.Find("HGSGothicM") >= 0 || face.Find("HGMaruGothicMPRO") >= 0) { + face = "MS PGothic"; + } else { + face = "MS Gothic"; + } + } + return; + } + if (face.Find("Mincho") >= 0 || face.Find("\x96\xbe\x92\xa9") >= 0) { + if (face.Find("PMincho") >= 0 || + face.Find("\x82\x6f\x96\xbe\x92\xa9") >= 0) { + face = "MS PMincho"; + } else { + face = "MS Mincho"; + } + return; + } + if (_GetSubFontName(face)) { + return; + } + if (!(picth_family & FF_ROMAN) && weight > 400) { + face = "MS PGothic"; + } else { + face = "MS PMincho"; + } +} +void* CFX_Win32FontInfo::MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* cstr_face, + int& iExact) { + CFX_ByteString face = cstr_face; + int iBaseFont; + for (iBaseFont = 0; iBaseFont < 12; iBaseFont++) + if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) { + face = Base14Substs[iBaseFont].m_pWinName; + weight = Base14Substs[iBaseFont].m_bBold ? FW_BOLD : FW_NORMAL; + bItalic = Base14Substs[iBaseFont].m_bItalic; + iExact = TRUE; + break; + } + if (charset == ANSI_CHARSET || charset == SYMBOL_CHARSET) { + charset = DEFAULT_CHARSET; + } + int subst_pitch_family = pitch_family; + switch (charset) { + case SHIFTJIS_CHARSET: + subst_pitch_family = FF_ROMAN; + break; + case CHINESEBIG5_CHARSET: + case HANGUL_CHARSET: + case GB2312_CHARSET: + subst_pitch_family = 0; + break; + } + HFONT hFont = + ::CreateFontA(-10, 0, 0, 0, weight, bItalic, 0, 0, charset, + OUT_TT_ONLY_PRECIS, 0, 0, subst_pitch_family, face); + char facebuf[100]; + HFONT hOldFont = (HFONT)::SelectObject(m_hDC, hFont); + ::GetTextFaceA(m_hDC, 100, facebuf); + ::SelectObject(m_hDC, hOldFont); + if (face.EqualNoCase(facebuf)) { + return hFont; + } + int iCount = sizeof(VariantNames) / sizeof(VariantNames[0]); + for (int i = 0; i < iCount; ++i) { + if (face == VariantNames[i].m_pFaceName) { + CFX_WideString wsFace = CFX_WideString::FromLocal(facebuf); + const unsigned short* pName = + (const unsigned short*)VariantNames[i].m_pVariantName; + FX_STRSIZE len = CFX_WideString::WStringLength(pName); + CFX_WideString wsName = CFX_WideString::FromUTF16LE(pName, len); + if (wsFace == wsName) { + return hFont; + } + } + } + ::DeleteObject(hFont); + if (charset == DEFAULT_CHARSET) { + return NULL; + } + switch (charset) { + case SHIFTJIS_CHARSET: + GetJapanesePreference(face, weight, pitch_family); + break; + case GB2312_CHARSET: + GetGBPreference(face, weight, pitch_family); + break; + case HANGUL_CHARSET: + face = "Gulim"; + break; + case CHINESEBIG5_CHARSET: + if (face.Find("MSung") >= 0) { + face = "MingLiU"; + } else { + face = "PMingLiU"; + } + break; + } + hFont = ::CreateFontA(-10, 0, 0, 0, weight, bItalic, 0, 0, charset, + OUT_TT_ONLY_PRECIS, 0, 0, subst_pitch_family, face); + return hFont; +} +void CFX_Win32FontInfo::DeleteFont(void* hFont) { + ::DeleteObject(hFont); +} +FX_DWORD CFX_Win32FontInfo::GetFontData(void* hFont, + FX_DWORD table, + uint8_t* buffer, + FX_DWORD size) { + HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); + table = FXDWORD_FROM_MSBFIRST(table); + size = ::GetFontData(m_hDC, table, 0, buffer, size); + ::SelectObject(m_hDC, hOldFont); + if (size == GDI_ERROR) { + return 0; + } + return size; +} +FX_BOOL CFX_Win32FontInfo::GetFaceName(void* hFont, CFX_ByteString& name) { + char facebuf[100]; + HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); + int ret = ::GetTextFaceA(m_hDC, 100, facebuf); + ::SelectObject(m_hDC, hOldFont); + if (ret == 0) { + return FALSE; + } + name = facebuf; + return TRUE; +} +FX_BOOL CFX_Win32FontInfo::GetFontCharset(void* hFont, int& charset) { + TEXTMETRIC tm; + HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); + ::GetTextMetrics(m_hDC, &tm); + ::SelectObject(m_hDC, hOldFont); + charset = tm.tmCharSet; + return TRUE; +} +static FX_BOOL IsGDIEnabled() { + // If GDI is disabled then GetDC for the desktop will fail. + HDC hdc = ::GetDC(NULL); + if (hdc) { + ::ReleaseDC(NULL, hdc); + return TRUE; + } + return FALSE; +} +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { + if (IsGDIEnabled()) { + return new CFX_Win32FontInfo; + } + // Select the fallback font information class if GDI is disabled. + CFX_Win32FallbackFontInfo* pInfoFallback = new CFX_Win32FallbackFontInfo; + // Construct the font path manually, SHGetKnownFolderPath won't work under + // a restrictive sandbox. + CHAR windows_path[MAX_PATH] = {}; + DWORD path_len = ::GetWindowsDirectoryA(windows_path, MAX_PATH); + if (path_len > 0 && path_len < MAX_PATH) { + CFX_ByteString fonts_path(windows_path); + fonts_path += "\\Fonts"; + pInfoFallback->AddPath(fonts_path); + } + return pInfoFallback; +} +void CFX_GEModule::InitPlatform() { + CWin32Platform* pPlatformData = new CWin32Platform; + OSVERSIONINFO ver; + ver.dwOSVersionInfoSize = sizeof(ver); + GetVersionEx(&ver); + pPlatformData->m_bHalfTone = ver.dwMajorVersion >= 5; + if (IsGDIEnabled()) { + pPlatformData->m_GdiplusExt.Load(); + } + m_pPlatformData = pPlatformData; + m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); +} +void CFX_GEModule::DestroyPlatform() { + delete (CWin32Platform*)m_pPlatformData; + m_pPlatformData = NULL; +} +CGdiDeviceDriver::CGdiDeviceDriver(HDC hDC, int device_class) { + m_hDC = hDC; + m_DeviceClass = device_class; + CWin32Platform* pPlatform = + (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); + SetStretchBltMode(hDC, pPlatform->m_bHalfTone ? HALFTONE : COLORONCOLOR); + if (GetObjectType(m_hDC) == OBJ_MEMDC) { + HBITMAP hBitmap = CreateBitmap(1, 1, 1, 1, NULL); + hBitmap = (HBITMAP)SelectObject(m_hDC, hBitmap); + BITMAP bitmap; + GetObject(hBitmap, sizeof bitmap, &bitmap); + m_nBitsPerPixel = bitmap.bmBitsPixel; + m_Width = bitmap.bmWidth; + m_Height = abs(bitmap.bmHeight); + hBitmap = (HBITMAP)SelectObject(m_hDC, hBitmap); + DeleteObject(hBitmap); + } else { + m_nBitsPerPixel = ::GetDeviceCaps(m_hDC, BITSPIXEL); + m_Width = ::GetDeviceCaps(m_hDC, HORZRES); + m_Height = ::GetDeviceCaps(m_hDC, VERTRES); + } + if (m_DeviceClass != FXDC_DISPLAY) { + m_RenderCaps = FXRC_BIT_MASK; + } else { + m_RenderCaps = FXRC_GET_BITS | FXRC_BIT_MASK; + } +} +int CGdiDeviceDriver::GetDeviceCaps(int caps_id) { + switch (caps_id) { + case FXDC_DEVICE_CLASS: + return m_DeviceClass; + case FXDC_PIXEL_WIDTH: + return m_Width; + case FXDC_PIXEL_HEIGHT: + return m_Height; + case FXDC_BITS_PIXEL: + return m_nBitsPerPixel; + case FXDC_RENDER_CAPS: + return m_RenderCaps; + } + return 0; +} +void* CGdiDeviceDriver::GetClipRgn() { + HRGN hClipRgn = CreateRectRgn(0, 0, 1, 1); + if (::GetClipRgn(m_hDC, hClipRgn) == 0) { + DeleteObject(hClipRgn); + hClipRgn = NULL; + } + return (void*)hClipRgn; +} +FX_BOOL CGdiDeviceDriver::GDI_SetDIBits(const CFX_DIBitmap* pBitmap1, + const FX_RECT* pSrcRect, + int left, + int top, + void* pIccTransform) { + if (m_DeviceClass == FXDC_PRINTER) { + CFX_DIBitmap* pBitmap = pBitmap1->FlipImage(FALSE, TRUE); + if (!pBitmap) { + return FALSE; + } + if ((pBitmap->IsCmykImage() || pIccTransform) && + !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) { + return FALSE; + } + int width = pSrcRect->Width(), height = pSrcRect->Height(); + LPBYTE pBuffer = pBitmap->GetBuffer(); + CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); + ((BITMAPINFOHEADER*)info.c_str())->biHeight *= -1; + FX_RECT dst_rect(0, 0, width, height); + dst_rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); + int dst_width = dst_rect.Width(); + int dst_height = dst_rect.Height(); + ::StretchDIBits(m_hDC, left, top, dst_width, dst_height, 0, 0, dst_width, + dst_height, pBuffer, (BITMAPINFO*)info.c_str(), + DIB_RGB_COLORS, SRCCOPY); + delete pBitmap; + } else { + CFX_DIBitmap* pBitmap = (CFX_DIBitmap*)pBitmap1; + if ((pBitmap->IsCmykImage() || pIccTransform) && + (pBitmap = pBitmap->CloneConvert(FXDIB_Rgb, NULL, pIccTransform)) == + NULL) { + return FALSE; + } + int width = pSrcRect->Width(), height = pSrcRect->Height(); + LPBYTE pBuffer = pBitmap->GetBuffer(); + CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); + ::SetDIBitsToDevice(m_hDC, left, top, width, height, pSrcRect->left, + pBitmap->GetHeight() - pSrcRect->bottom, 0, + pBitmap->GetHeight(), pBuffer, + (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); + if (pBitmap != pBitmap1) { + delete pBitmap; + } + } + return TRUE; +} +FX_BOOL CGdiDeviceDriver::GDI_StretchDIBits(const CFX_DIBitmap* pBitmap1, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD flags, + void* pIccTransform) { + CFX_DIBitmap* pBitmap = (CFX_DIBitmap*)pBitmap1; + if (!pBitmap || dest_width == 0 || dest_height == 0) { + return FALSE; + } + if ((pBitmap->IsCmykImage() || pIccTransform) && + !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) { + return FALSE; + } + CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); + if ((int64_t)abs(dest_width) * abs(dest_height) < + (int64_t)pBitmap1->GetWidth() * pBitmap1->GetHeight() * 4 || + (flags & FXDIB_INTERPOL) || (flags & FXDIB_BICUBIC_INTERPOL)) { + SetStretchBltMode(m_hDC, HALFTONE); + } else { + SetStretchBltMode(m_hDC, COLORONCOLOR); + } + CFX_DIBitmap* pToStrechBitmap = pBitmap; + bool del = false; + if (m_DeviceClass == FXDC_PRINTER && + ((int64_t)pBitmap->GetWidth() * pBitmap->GetHeight() > + (int64_t)abs(dest_width) * abs(dest_height))) { + pToStrechBitmap = pBitmap->StretchTo(dest_width, dest_height); + del = true; + } + CFX_ByteString toStrechBitmapInfo = + CFX_WindowsDIB::GetBitmapInfo(pToStrechBitmap); + ::StretchDIBits(m_hDC, dest_left, dest_top, dest_width, dest_height, 0, 0, + pToStrechBitmap->GetWidth(), pToStrechBitmap->GetHeight(), + pToStrechBitmap->GetBuffer(), + (BITMAPINFO*)toStrechBitmapInfo.c_str(), DIB_RGB_COLORS, + SRCCOPY); + if (del) { + delete pToStrechBitmap; + } + return TRUE; +} +FX_BOOL CGdiDeviceDriver::GDI_StretchBitMask(const CFX_DIBitmap* pBitmap1, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD bitmap_color, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform) { + CFX_DIBitmap* pBitmap = (CFX_DIBitmap*)pBitmap1; + if (!pBitmap || dest_width == 0 || dest_height == 0) { + return FALSE; + } + _Color2Argb(bitmap_color, bitmap_color, alpha_flag | (1 << 24), + pIccTransform); + int width = pBitmap->GetWidth(), height = pBitmap->GetHeight(); + struct { + BITMAPINFOHEADER bmiHeader; + FX_DWORD bmiColors[2]; + } bmi; + FXSYS_memset(&bmi.bmiHeader, 0, sizeof(BITMAPINFOHEADER)); + bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bmi.bmiHeader.biBitCount = 1; + bmi.bmiHeader.biCompression = BI_RGB; + bmi.bmiHeader.biHeight = -height; + bmi.bmiHeader.biPlanes = 1; + bmi.bmiHeader.biWidth = width; + if (m_nBitsPerPixel != 1) { + SetStretchBltMode(m_hDC, HALFTONE); + } + bmi.bmiColors[0] = 0xffffff; + bmi.bmiColors[1] = 0; + + HBRUSH hPattern = CreateSolidBrush(bitmap_color & 0xffffff); + HBRUSH hOld = (HBRUSH)SelectObject(m_hDC, hPattern); + + // In PDF, when image mask is 1, use device bitmap; when mask is 0, use brush + // bitmap. + // A complete list of the boolen operations is as follows: + + /* P(bitmap_color) S(ImageMask) D(DeviceBitmap) Result + * 0 0 0 0 + * 0 0 1 0 + * 0 1 0 0 + * 0 1 1 1 + * 1 0 0 1 + * 1 0 1 1 + * 1 1 0 0 + * 1 1 1 1 + */ + // The boolen codes is B8. Based on + // http://msdn.microsoft.com/en-us/library/aa932106.aspx, the ROP3 code is + // 0xB8074A + + ::StretchDIBits(m_hDC, dest_left, dest_top, dest_width, dest_height, 0, 0, + width, height, pBitmap->GetBuffer(), (BITMAPINFO*)&bmi, + DIB_RGB_COLORS, 0xB8074A); + + SelectObject(m_hDC, hOld); + DeleteObject(hPattern); + + return TRUE; +} +FX_BOOL CGdiDeviceDriver::GetClipBox(FX_RECT* pRect) { + return ::GetClipBox(m_hDC, (RECT*)pRect); +} +FX_BOOL CGdiDeviceDriver::SetClipRgn(void* hRgn) { + ::SelectClipRgn(m_hDC, (HRGN)hRgn); + return TRUE; +} +static HPEN _CreatePen(const CFX_GraphStateData* pGraphState, + const CFX_Matrix* pMatrix, + FX_DWORD argb) { + FX_FLOAT width; + FX_FLOAT scale = 1.f; + if (pMatrix) + scale = FXSYS_fabs(pMatrix->a) > FXSYS_fabs(pMatrix->b) + ? FXSYS_fabs(pMatrix->a) + : FXSYS_fabs(pMatrix->b); + if (pGraphState) { + width = scale * pGraphState->m_LineWidth; + } else { + width = 1.0f; + } + FX_DWORD PenStyle = PS_GEOMETRIC; + if (width < 1) { + width = 1; + } + if (pGraphState->m_DashCount) { + PenStyle |= PS_USERSTYLE; + } else { + PenStyle |= PS_SOLID; + } + switch (pGraphState->m_LineCap) { + case 0: + PenStyle |= PS_ENDCAP_FLAT; + break; + case 1: + PenStyle |= PS_ENDCAP_ROUND; + break; + case 2: + PenStyle |= PS_ENDCAP_SQUARE; + break; + } + switch (pGraphState->m_LineJoin) { + case 0: + PenStyle |= PS_JOIN_MITER; + break; + case 1: + PenStyle |= PS_JOIN_ROUND; + break; + case 2: + PenStyle |= PS_JOIN_BEVEL; + break; + } + int a; + FX_COLORREF rgb; + ArgbDecode(argb, a, rgb); + LOGBRUSH lb; + lb.lbColor = rgb; + lb.lbStyle = BS_SOLID; + lb.lbHatch = 0; + FX_DWORD* pDash = NULL; + if (pGraphState->m_DashCount) { + pDash = FX_Alloc(FX_DWORD, pGraphState->m_DashCount); + for (int i = 0; i < pGraphState->m_DashCount; i++) { + pDash[i] = FXSYS_round( + pMatrix ? pMatrix->TransformDistance(pGraphState->m_DashArray[i]) + : pGraphState->m_DashArray[i]); + if (pDash[i] < 1) { + pDash[i] = 1; + } + } + } + HPEN hPen = ExtCreatePen(PenStyle, (DWORD)FXSYS_ceil(width), &lb, + pGraphState->m_DashCount, (const DWORD*)pDash); + FX_Free(pDash); + return hPen; +} +static HBRUSH _CreateBrush(FX_DWORD argb) { + int a; + FX_COLORREF rgb; + ArgbDecode(argb, a, rgb); + return CreateSolidBrush(rgb); +} +static void _SetPathToDC(HDC hDC, + const CFX_PathData* pPathData, + const CFX_Matrix* pMatrix) { + BeginPath(hDC); + int nPoints = pPathData->GetPointCount(); + FX_PATHPOINT* pPoints = pPathData->GetPoints(); + for (int i = 0; i < nPoints; i++) { + FX_FLOAT posx = pPoints[i].m_PointX, posy = pPoints[i].m_PointY; + if (pMatrix) { + pMatrix->Transform(posx, posy); + } + int screen_x = FXSYS_round(posx), screen_y = FXSYS_round(posy); + int point_type = pPoints[i].m_Flag & FXPT_TYPE; + if (point_type == PT_MOVETO) { + MoveToEx(hDC, screen_x, screen_y, NULL); + } else if (point_type == PT_LINETO) { + if (pPoints[i].m_PointY == pPoints[i - 1].m_PointY && + pPoints[i].m_PointX == pPoints[i - 1].m_PointX) { + screen_x++; + } + LineTo(hDC, screen_x, screen_y); + } else if (point_type == PT_BEZIERTO) { + POINT lppt[3]; + lppt[0].x = screen_x; + lppt[0].y = screen_y; + posx = pPoints[i + 1].m_PointX; + posy = pPoints[i + 1].m_PointY; + if (pMatrix) { + pMatrix->Transform(posx, posy); + } + lppt[1].x = FXSYS_round(posx); + lppt[1].y = FXSYS_round(posy); + posx = pPoints[i + 2].m_PointX; + posy = pPoints[i + 2].m_PointY; + if (pMatrix) { + pMatrix->Transform(posx, posy); + } + lppt[2].x = FXSYS_round(posx); + lppt[2].y = FXSYS_round(posy); + PolyBezierTo(hDC, lppt, 3); + i += 2; + } + if (pPoints[i].m_Flag & PT_CLOSEFIGURE) { + CloseFigure(hDC); + } + } + EndPath(hDC); +} +void CGdiDeviceDriver::DrawLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2) { + int flag1 = (x1 < 0) | ((x1 > m_Width) << 1) | ((y1 < 0) << 2) | + ((y1 > m_Height) << 3); + int flag2 = (x2 < 0) | ((x2 > m_Width) << 1) | ((y2 < 0) << 2) | + ((y2 > m_Height) << 3); + if (flag1 & flag2) { + return; + } + if (flag1 || flag2) { + agg::rect_base rect(0.0f, 0.0f, (FX_FLOAT)(m_Width), + (FX_FLOAT)(m_Height)); + FX_FLOAT x[2], y[2]; + int np = agg::clip_liang_barsky(x1, y1, x2, y2, rect, x, y); + if (np == 0) { + return; + } + if (np == 1) { + x2 = x[0]; + y2 = y[0]; + } else { + x1 = x[0]; + y1 = y[0]; + x2 = x[np - 1]; + y2 = y[np - 1]; + } + } + MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), NULL); + LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2)); +} +static FX_BOOL _MatrixNoScaled(const CFX_Matrix* pMatrix) { + return pMatrix->GetA() == 1.0f && pMatrix->GetB() == 0 && + pMatrix->GetC() == 0 && pMatrix->GetD() == 1.0f; +} +FX_BOOL CGdiDeviceDriver::DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pMatrix, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransform); + _Color2Argb(stroke_color, stroke_color, alpha_flag, pIccTransform); + CWin32Platform* pPlatform = + (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); + if (!(pGraphState || stroke_color == 0) && + !pPlatform->m_GdiplusExt.IsAvailable()) { + CFX_FloatRect bbox_f = pPathData->GetBoundingBox(); + if (pMatrix) { + bbox_f.Transform(pMatrix); + } + FX_RECT bbox = bbox_f.GetInnerRect(); + if (bbox.Width() <= 0) { + return DrawCosmeticLine((FX_FLOAT)(bbox.left), (FX_FLOAT)(bbox.top), + (FX_FLOAT)(bbox.left), + (FX_FLOAT)(bbox.bottom + 1), fill_color, + alpha_flag, pIccTransform, FXDIB_BLEND_NORMAL); + } else if (bbox.Height() <= 0) { + return DrawCosmeticLine((FX_FLOAT)(bbox.left), (FX_FLOAT)(bbox.top), + (FX_FLOAT)(bbox.right + 1), (FX_FLOAT)(bbox.top), + fill_color, alpha_flag, pIccTransform, + FXDIB_BLEND_NORMAL); + } + } + int fill_alpha = FXARGB_A(fill_color); + int stroke_alpha = FXARGB_A(stroke_color); + FX_BOOL bDrawAlpha = (fill_alpha > 0 && fill_alpha < 255) || + (stroke_alpha > 0 && stroke_alpha < 255 && pGraphState); + if (!pPlatform->m_GdiplusExt.IsAvailable() && bDrawAlpha) { + return FALSE; + } + if (pPlatform->m_GdiplusExt.IsAvailable()) { + if (bDrawAlpha || + ((m_DeviceClass != FXDC_PRINTER && !(fill_mode & FXFILL_FULLCOVER)) || + (pGraphState && pGraphState->m_DashCount))) { + if (!((NULL == pMatrix || _MatrixNoScaled(pMatrix)) && pGraphState && + pGraphState->m_LineWidth == 1.f && + (pPathData->GetPointCount() == 5 || + pPathData->GetPointCount() == 4) && + pPathData->IsRect())) { + if (pPlatform->m_GdiplusExt.DrawPath(m_hDC, pPathData, pMatrix, + pGraphState, fill_color, + stroke_color, fill_mode)) { + return TRUE; + } + } + } + } + int old_fill_mode = fill_mode; + fill_mode &= 3; + HPEN hPen = NULL; + HBRUSH hBrush = NULL; + if (pGraphState && stroke_alpha) { + SetMiterLimit(m_hDC, pGraphState->m_MiterLimit, NULL); + hPen = _CreatePen(pGraphState, pMatrix, stroke_color); + hPen = (HPEN)SelectObject(m_hDC, hPen); + } + if (fill_mode && fill_alpha) { + SetPolyFillMode(m_hDC, fill_mode); + hBrush = _CreateBrush(fill_color); + hBrush = (HBRUSH)SelectObject(m_hDC, hBrush); + } + if (pPathData->GetPointCount() == 2 && pGraphState && + pGraphState->m_DashCount) { + FX_FLOAT x1 = pPathData->GetPointX(0), y1 = pPathData->GetPointY(0); + if (pMatrix) { + pMatrix->Transform(x1, y1); + } + FX_FLOAT x2 = pPathData->GetPointX(1), y2 = pPathData->GetPointY(1); + if (pMatrix) { + pMatrix->Transform(x2, y2); + } + DrawLine(x1, y1, x2, y2); + } else { + _SetPathToDC(m_hDC, pPathData, pMatrix); + if (pGraphState && stroke_alpha) { + if (fill_mode && fill_alpha) { + if (old_fill_mode & FX_FILL_TEXT_MODE) { + StrokeAndFillPath(m_hDC); + } else { + FillPath(m_hDC); + _SetPathToDC(m_hDC, pPathData, pMatrix); + StrokePath(m_hDC); + } + } else { + StrokePath(m_hDC); + } + } else if (fill_mode && fill_alpha) { + FillPath(m_hDC); + } + } + if (hPen) { + hPen = (HPEN)SelectObject(m_hDC, hPen); + DeleteObject(hPen); + } + if (hBrush) { + hBrush = (HBRUSH)SelectObject(m_hDC, hBrush); + DeleteObject(hBrush); + } + return TRUE; +} +FX_BOOL CGdiDeviceDriver::FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransform); + int alpha; + FX_COLORREF rgb; + ArgbDecode(fill_color, alpha, rgb); + if (alpha == 0) { + return TRUE; + } + if (alpha < 255) { + return FALSE; + } + HBRUSH hBrush = CreateSolidBrush(rgb); + ::FillRect(m_hDC, (RECT*)pRect, hBrush); + DeleteObject(hBrush); + return TRUE; +} +FX_BOOL CGdiDeviceDriver::SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pMatrix, + int fill_mode) { + if (pPathData->GetPointCount() == 5) { + CFX_FloatRect rectf; + if (pPathData->IsRect(pMatrix, &rectf)) { + FX_RECT rect = rectf.GetOutterRect(); + IntersectClipRect(m_hDC, rect.left, rect.top, rect.right, rect.bottom); + return TRUE; + } + } + _SetPathToDC(m_hDC, pPathData, pMatrix); + SetPolyFillMode(m_hDC, fill_mode & 3); + SelectClipPath(m_hDC, RGN_AND); + return TRUE; +} +FX_BOOL CGdiDeviceDriver::SetClip_PathStroke( + const CFX_PathData* pPathData, + const CFX_Matrix* pMatrix, + const CFX_GraphStateData* pGraphState) { + HPEN hPen = _CreatePen(pGraphState, pMatrix, 0xff000000); + hPen = (HPEN)SelectObject(m_hDC, hPen); + _SetPathToDC(m_hDC, pPathData, pMatrix); + WidenPath(m_hDC); + SetPolyFillMode(m_hDC, WINDING); + FX_BOOL ret = SelectClipPath(m_hDC, RGN_AND); + hPen = (HPEN)SelectObject(m_hDC, hPen); + DeleteObject(hPen); + return ret; +} +FX_BOOL CGdiDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_DWORD color, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + _Color2Argb(color, color, alpha_flag | (1 << 24), pIccTransform); + int a; + FX_COLORREF rgb; + ArgbDecode(color, a, rgb); + if (a == 0) { + return TRUE; + } + HPEN hPen = CreatePen(PS_SOLID, 1, rgb); + hPen = (HPEN)SelectObject(m_hDC, hPen); + MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), NULL); + LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2)); + hPen = (HPEN)SelectObject(m_hDC, hPen); + DeleteObject(hPen); + return TRUE; +} +FX_BOOL CGdiDeviceDriver::DeleteDeviceRgn(void* pRgn) { + DeleteObject((HGDIOBJ)pRgn); + return TRUE; +} +CGdiDisplayDriver::CGdiDisplayDriver(HDC hDC) + : CGdiDeviceDriver(hDC, FXDC_DISPLAY) { + CWin32Platform* pPlatform = + (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); + if (pPlatform->m_GdiplusExt.IsAvailable()) { + m_RenderCaps |= FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE; + } +} +FX_BOOL CGdiDisplayDriver::GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform, + FX_BOOL bDEdge) { + FX_BOOL ret = FALSE; + int width = pBitmap->GetWidth(); + int height = pBitmap->GetHeight(); + HBITMAP hbmp = CreateCompatibleBitmap(m_hDC, width, height); + HDC hDCMemory = CreateCompatibleDC(m_hDC); + HBITMAP holdbmp = (HBITMAP)SelectObject(hDCMemory, hbmp); + BitBlt(hDCMemory, 0, 0, width, height, m_hDC, left, top, SRCCOPY); + SelectObject(hDCMemory, holdbmp); + BITMAPINFO bmi; + FXSYS_memset(&bmi, 0, sizeof bmi); + bmi.bmiHeader.biSize = sizeof bmi.bmiHeader; + bmi.bmiHeader.biBitCount = pBitmap->GetBPP(); + bmi.bmiHeader.biHeight = -height; + bmi.bmiHeader.biPlanes = 1; + bmi.bmiHeader.biWidth = width; + if (!CFX_GEModule::Get()->GetCodecModule() || + !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { + pIccTransform = NULL; + } + if (pBitmap->GetBPP() > 8 && !pBitmap->IsCmykImage() && !pIccTransform) { + ret = ::GetDIBits(hDCMemory, hbmp, 0, height, pBitmap->GetBuffer(), &bmi, + DIB_RGB_COLORS) == height; + } else { + CFX_DIBitmap bitmap; + if (bitmap.Create(width, height, FXDIB_Rgb)) { + bmi.bmiHeader.biBitCount = 24; + ::GetDIBits(hDCMemory, hbmp, 0, height, bitmap.GetBuffer(), &bmi, + DIB_RGB_COLORS); + ret = pBitmap->TransferBitmap(0, 0, width, height, &bitmap, 0, 0, + pIccTransform); + } else { + ret = FALSE; + } + } + if (pBitmap->HasAlpha() && ret) { + pBitmap->LoadChannel(FXDIB_Alpha, 0xff); + } + DeleteObject(hbmp); + DeleteObject(hDCMemory); + return ret; +} +FX_BOOL CGdiDisplayDriver::SetDIBits(const CFX_DIBSource* pSource, + FX_DWORD color, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform) { + ASSERT(blend_type == FXDIB_BLEND_NORMAL); + if (pSource->IsAlphaMask()) { + int width = pSource->GetWidth(), height = pSource->GetHeight(); + int alpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? FXGETFLAG_ALPHA_FILL(alpha_flag) + : FXARGB_A(color); + if (pSource->GetBPP() != 1 || alpha != 255) { + CFX_DIBitmap background; + if (!background.Create(width, height, FXDIB_Rgb32) || + !GetDIBits(&background, left, top, NULL) || + !background.CompositeMask(0, 0, width, height, pSource, color, 0, 0, + FXDIB_BLEND_NORMAL, NULL, FALSE, alpha_flag, + pIccTransform)) { + return FALSE; + } + FX_RECT src_rect(0, 0, width, height); + return SetDIBits(&background, 0, &src_rect, left, top, FXDIB_BLEND_NORMAL, + 0, NULL); + } + FX_RECT clip_rect(left, top, left + pSrcRect->Width(), + top + pSrcRect->Height()); + return StretchDIBits(pSource, color, left - pSrcRect->left, + top - pSrcRect->top, width, height, &clip_rect, 0, + alpha_flag, pIccTransform, FXDIB_BLEND_NORMAL); + } + int width = pSrcRect->Width(), height = pSrcRect->Height(); + if (pSource->HasAlpha()) { + CFX_DIBitmap bitmap; + if (!bitmap.Create(width, height, FXDIB_Rgb) || + !GetDIBits(&bitmap, left, top, NULL) || + !bitmap.CompositeBitmap(0, 0, width, height, pSource, pSrcRect->left, + pSrcRect->top, FXDIB_BLEND_NORMAL, NULL, FALSE, + pIccTransform)) { + return FALSE; + } + FX_RECT src_rect(0, 0, width, height); + return SetDIBits(&bitmap, 0, &src_rect, left, top, FXDIB_BLEND_NORMAL, 0, + NULL); + } + CFX_DIBExtractor temp(pSource); + CFX_DIBitmap* pBitmap = temp; + if (pBitmap) { + return GDI_SetDIBits(pBitmap, pSrcRect, left, top, pIccTransform); + } + return FALSE; +} +FX_BOOL CGdiDisplayDriver::UseFoxitStretchEngine(const CFX_DIBSource* pSource, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + int render_flags, + int alpha_flag, + void* pIccTransform, + int blend_type) { + FX_RECT bitmap_clip = *pClipRect; + if (dest_width < 0) { + dest_left += dest_width; + } + if (dest_height < 0) { + dest_top += dest_height; + } + bitmap_clip.Offset(-dest_left, -dest_top); + CFX_DIBitmap* pStretched = + pSource->StretchTo(dest_width, dest_height, render_flags, &bitmap_clip); + if (!pStretched) { + return TRUE; + } + FX_RECT src_rect(0, 0, pStretched->GetWidth(), pStretched->GetHeight()); + FX_BOOL ret = + SetDIBits(pStretched, color, &src_rect, pClipRect->left, pClipRect->top, + FXDIB_BLEND_NORMAL, alpha_flag, pIccTransform); + delete pStretched; + return ret; +} +FX_BOOL CGdiDisplayDriver::StretchDIBits(const CFX_DIBSource* pSource, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type) { + ASSERT(pSource && pClipRect); + if (flags || dest_width > 10000 || dest_width < -10000 || + dest_height > 10000 || dest_height < -10000) { + return UseFoxitStretchEngine(pSource, color, dest_left, dest_top, + dest_width, dest_height, pClipRect, flags, + alpha_flag, pIccTransform, blend_type); + } + if (pSource->IsAlphaMask()) { + FX_RECT image_rect; + image_rect.left = dest_width > 0 ? dest_left : dest_left + dest_width; + image_rect.right = dest_width > 0 ? dest_left + dest_width : dest_left; + image_rect.top = dest_height > 0 ? dest_top : dest_top + dest_height; + image_rect.bottom = dest_height > 0 ? dest_top + dest_height : dest_top; + FX_RECT clip_rect = image_rect; + clip_rect.Intersect(*pClipRect); + clip_rect.Offset(-image_rect.left, -image_rect.top); + int clip_width = clip_rect.Width(), clip_height = clip_rect.Height(); + CFX_DIBitmap* pStretched = + pSource->StretchTo(dest_width, dest_height, flags, &clip_rect); + if (!pStretched) { + return TRUE; + } + CFX_DIBitmap background; + if (!background.Create(clip_width, clip_height, FXDIB_Rgb32) || + !GetDIBits(&background, image_rect.left + clip_rect.left, + image_rect.top + clip_rect.top, NULL) || + !background.CompositeMask(0, 0, clip_width, clip_height, pStretched, + color, 0, 0, FXDIB_BLEND_NORMAL, NULL, FALSE, + alpha_flag, pIccTransform)) { + delete pStretched; + return FALSE; + } + FX_RECT src_rect(0, 0, clip_width, clip_height); + FX_BOOL ret = + SetDIBits(&background, 0, &src_rect, image_rect.left + clip_rect.left, + image_rect.top + clip_rect.top, FXDIB_BLEND_NORMAL, 0, NULL); + delete pStretched; + return ret; + } + if (pSource->HasAlpha()) { + CWin32Platform* pPlatform = + (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); + if (pPlatform->m_GdiplusExt.IsAvailable() && !pIccTransform && + !pSource->IsCmykImage()) { + CFX_DIBExtractor temp(pSource); + CFX_DIBitmap* pBitmap = temp; + if (!pBitmap) { + return FALSE; + } + return pPlatform->m_GdiplusExt.StretchDIBits( + m_hDC, pBitmap, dest_left, dest_top, dest_width, dest_height, + pClipRect, flags); + } + return UseFoxitStretchEngine(pSource, color, dest_left, dest_top, + dest_width, dest_height, pClipRect, flags, + alpha_flag, pIccTransform, blend_type); + } + CFX_DIBExtractor temp(pSource); + CFX_DIBitmap* pBitmap = temp; + if (pBitmap) { + return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width, + dest_height, flags, pIccTransform); + } + return FALSE; +} +#define GET_PS_FEATURESETTING 4121 +#define FEATURESETTING_PSLEVEL 2 +int GetPSLevel(HDC hDC) { + int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); + if (device_type != DT_RASPRINTER) { + return 0; + } + FX_DWORD esc = GET_PS_FEATURESETTING; + if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL)) { + int param = FEATURESETTING_PSLEVEL; + if (ExtEscape(hDC, GET_PS_FEATURESETTING, sizeof(int), (char*)¶m, + sizeof(int), (char*)¶m) > 0) { + return param; + } + } + esc = POSTSCRIPT_IDENTIFY; + if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL) == 0) { + esc = POSTSCRIPT_DATA; + if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL)) { + return 2; + } + return 0; + } + esc = PSIDENT_GDICENTRIC; + if (ExtEscape(hDC, POSTSCRIPT_IDENTIFY, sizeof(FX_DWORD), (char*)&esc, 0, + NULL) <= 0) { + return 2; + } + esc = GET_PS_FEATURESETTING; + if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL)) { + int param = FEATURESETTING_PSLEVEL; + if (ExtEscape(hDC, GET_PS_FEATURESETTING, sizeof(int), (char*)¶m, + sizeof(int), (char*)¶m) > 0) { + return param; + } + } + return 2; +} +int CFX_WindowsDevice::m_psLevel = 2; +CFX_WindowsDevice::CFX_WindowsDevice(HDC hDC, + FX_BOOL bCmykOutput, + FX_BOOL bForcePSOutput, + int psLevel) { + m_bForcePSOutput = bForcePSOutput; + m_psLevel = psLevel; + if (bForcePSOutput) { + IFX_RenderDeviceDriver* pDriver = new CPSPrinterDriver; + ((CPSPrinterDriver*)pDriver)->Init(hDC, psLevel, bCmykOutput); + SetDeviceDriver(pDriver); + return; + } + SetDeviceDriver(CreateDriver(hDC, bCmykOutput)); +} +HDC CFX_WindowsDevice::GetDC() const { + IFX_RenderDeviceDriver* pRDD = GetDeviceDriver(); + if (!pRDD) { + return NULL; + } + return (HDC)pRDD->GetPlatformSurface(); +} +IFX_RenderDeviceDriver* CFX_WindowsDevice::CreateDriver(HDC hDC, + FX_BOOL bCmykOutput) { + int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); + int obj_type = ::GetObjectType(hDC); + int device_class; + if (device_type == DT_RASPRINTER || device_type == DT_PLOTTER || + obj_type == OBJ_ENHMETADC) { + device_class = FXDC_PRINTER; + } else { + device_class = FXDC_DISPLAY; + } + if (device_class == FXDC_PRINTER) { + return new CGdiPrinterDriver(hDC); + } + return new CGdiDisplayDriver(hDC); +} +CFX_WinBitmapDevice::CFX_WinBitmapDevice(int width, + int height, + FXDIB_Format format) { + BITMAPINFOHEADER bmih; + FXSYS_memset(&bmih, 0, sizeof(BITMAPINFOHEADER)); + bmih.biSize = sizeof(BITMAPINFOHEADER); + bmih.biBitCount = format & 0xff; + bmih.biHeight = -height; + bmih.biPlanes = 1; + bmih.biWidth = width; + uint8_t* pBuffer; + m_hBitmap = CreateDIBSection(NULL, (BITMAPINFO*)&bmih, DIB_RGB_COLORS, + (void**)&pBuffer, NULL, 0); + if (!m_hBitmap) { + return; + } + CFX_DIBitmap* pBitmap = new CFX_DIBitmap; + pBitmap->Create(width, height, format, pBuffer); + SetBitmap(pBitmap); + m_hDC = ::CreateCompatibleDC(NULL); + m_hOldBitmap = (HBITMAP)SelectObject(m_hDC, m_hBitmap); + IFX_RenderDeviceDriver* pDriver = new CGdiDisplayDriver(m_hDC); + SetDeviceDriver(pDriver); +} +CFX_WinBitmapDevice::~CFX_WinBitmapDevice() { + if (m_hDC) { + SelectObject(m_hDC, m_hOldBitmap); + DeleteDC(m_hDC); + } + if (m_hBitmap) { + DeleteObject(m_hBitmap); + } + delete GetBitmap(); +} + +#endif // _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ diff --git a/core/fxge/win32/fx_win32_dib.cpp b/core/fxge/win32/fx_win32_dib.cpp new file mode 100644 index 0000000000..cd48d07554 --- /dev/null +++ b/core/fxge/win32/fx_win32_dib.cpp @@ -0,0 +1,289 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ +#include + +#include "core/fxge/win32/win32_int.h" +#include "core/include/fxge/fx_ge_win32.h" + +CFX_ByteString CFX_WindowsDIB::GetBitmapInfo(const CFX_DIBitmap* pBitmap) { + CFX_ByteString result; + int len = sizeof(BITMAPINFOHEADER); + if (pBitmap->GetBPP() == 1 || pBitmap->GetBPP() == 8) { + len += sizeof(DWORD) * (int)(1 << pBitmap->GetBPP()); + } + BITMAPINFOHEADER* pbmih = (BITMAPINFOHEADER*)result.GetBuffer(len); + FXSYS_memset(pbmih, 0, sizeof(BITMAPINFOHEADER)); + pbmih->biSize = sizeof(BITMAPINFOHEADER); + pbmih->biBitCount = pBitmap->GetBPP(); + pbmih->biCompression = BI_RGB; + pbmih->biHeight = -(int)pBitmap->GetHeight(); + pbmih->biPlanes = 1; + pbmih->biWidth = pBitmap->GetWidth(); + if (pBitmap->GetBPP() == 8) { + FX_DWORD* pPalette = (FX_DWORD*)(pbmih + 1); + if (pBitmap->GetPalette()) { + for (int i = 0; i < 256; i++) { + pPalette[i] = pBitmap->GetPalette()[i]; + } + } else { + for (int i = 0; i < 256; i++) { + pPalette[i] = i * 0x010101; + } + } + } + if (pBitmap->GetBPP() == 1) { + FX_DWORD* pPalette = (FX_DWORD*)(pbmih + 1); + if (pBitmap->GetPalette()) { + pPalette[0] = pBitmap->GetPalette()[0]; + pPalette[1] = pBitmap->GetPalette()[1]; + } else { + pPalette[0] = 0; + pPalette[1] = 0xffffff; + } + } + result.ReleaseBuffer(len); + return result; +} +CFX_DIBitmap* _FX_WindowsDIB_LoadFromBuf(BITMAPINFO* pbmi, + LPVOID pData, + FX_BOOL bAlpha) { + int width = pbmi->bmiHeader.biWidth; + int height = pbmi->bmiHeader.biHeight; + BOOL bBottomUp = TRUE; + if (height < 0) { + height = -height; + bBottomUp = FALSE; + } + int pitch = (width * pbmi->bmiHeader.biBitCount + 31) / 32 * 4; + CFX_DIBitmap* pBitmap = new CFX_DIBitmap; + FXDIB_Format format = bAlpha + ? (FXDIB_Format)(pbmi->bmiHeader.biBitCount + 0x200) + : (FXDIB_Format)pbmi->bmiHeader.biBitCount; + FX_BOOL ret = pBitmap->Create(width, height, format); + if (!ret) { + delete pBitmap; + return NULL; + } + FXSYS_memcpy(pBitmap->GetBuffer(), pData, pitch * height); + if (bBottomUp) { + uint8_t* temp_buf = FX_Alloc(uint8_t, pitch); + int top = 0, bottom = height - 1; + while (top < bottom) { + FXSYS_memcpy(temp_buf, pBitmap->GetBuffer() + top * pitch, pitch); + FXSYS_memcpy(pBitmap->GetBuffer() + top * pitch, + pBitmap->GetBuffer() + bottom * pitch, pitch); + FXSYS_memcpy(pBitmap->GetBuffer() + bottom * pitch, temp_buf, pitch); + top++; + bottom--; + } + FX_Free(temp_buf); + temp_buf = NULL; + } + if (pbmi->bmiHeader.biBitCount == 1) { + for (int i = 0; i < 2; i++) { + pBitmap->SetPaletteEntry(i, ((FX_DWORD*)pbmi->bmiColors)[i] | 0xff000000); + } + } else if (pbmi->bmiHeader.biBitCount == 8) { + for (int i = 0; i < 256; i++) { + pBitmap->SetPaletteEntry(i, ((FX_DWORD*)pbmi->bmiColors)[i] | 0xff000000); + } + } + return pBitmap; +} +CFX_DIBitmap* CFX_WindowsDIB::LoadFromBuf(BITMAPINFO* pbmi, LPVOID pData) { + return _FX_WindowsDIB_LoadFromBuf(pbmi, pData, FALSE); +} +HBITMAP CFX_WindowsDIB::GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC) { + CFX_ByteString info = GetBitmapInfo(pBitmap); + HBITMAP hBitmap = NULL; + hBitmap = CreateDIBitmap(hDC, (BITMAPINFOHEADER*)info.c_str(), CBM_INIT, + pBitmap->GetBuffer(), (BITMAPINFO*)info.c_str(), + DIB_RGB_COLORS); + return hBitmap; +} +void GetBitmapSize(HBITMAP hBitmap, int& w, int& h) { + BITMAP bmp; + GetObject(hBitmap, sizeof bmp, &bmp); + w = bmp.bmWidth; + h = bmp.bmHeight; +} +CFX_DIBitmap* CFX_WindowsDIB::LoadFromFile(const FX_WCHAR* filename) { + CWin32Platform* pPlatform = + (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); + if (pPlatform->m_GdiplusExt.IsAvailable()) { + WINDIB_Open_Args_ args; + args.flags = WINDIB_OPEN_PATHNAME; + args.path_name = filename; + return pPlatform->m_GdiplusExt.LoadDIBitmap(args); + } + HBITMAP hBitmap = (HBITMAP)LoadImageW(NULL, (wchar_t*)filename, IMAGE_BITMAP, + 0, 0, LR_LOADFROMFILE); + if (!hBitmap) { + return NULL; + } + HDC hDC = CreateCompatibleDC(NULL); + int width, height; + GetBitmapSize(hBitmap, width, height); + CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; + if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) { + delete pDIBitmap; + DeleteDC(hDC); + return NULL; + } + CFX_ByteString info = GetBitmapInfo(pDIBitmap); + int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), + (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); + if (!ret) { + delete pDIBitmap; + pDIBitmap = NULL; + } + DeleteDC(hDC); + return pDIBitmap; +} +CFX_DIBitmap* CFX_WindowsDIB::LoadDIBitmap(WINDIB_Open_Args_ args) { + CWin32Platform* pPlatform = + (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); + if (pPlatform->m_GdiplusExt.IsAvailable()) { + return pPlatform->m_GdiplusExt.LoadDIBitmap(args); + } + if (args.flags == WINDIB_OPEN_MEMORY) { + return NULL; + } + HBITMAP hBitmap = (HBITMAP)LoadImageW(NULL, (wchar_t*)args.path_name, + IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); + if (!hBitmap) { + return NULL; + } + HDC hDC = CreateCompatibleDC(NULL); + int width, height; + GetBitmapSize(hBitmap, width, height); + CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; + if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) { + delete pDIBitmap; + DeleteDC(hDC); + return NULL; + } + CFX_ByteString info = GetBitmapInfo(pDIBitmap); + int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), + (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); + if (!ret) { + delete pDIBitmap; + pDIBitmap = NULL; + } + DeleteDC(hDC); + return pDIBitmap; +} +CFX_DIBitmap* CFX_WindowsDIB::LoadFromDDB(HDC hDC, + HBITMAP hBitmap, + FX_DWORD* pPalette, + FX_DWORD palsize) { + FX_BOOL bCreatedDC = !hDC; + if (bCreatedDC) { + hDC = CreateCompatibleDC(NULL); + } + BITMAPINFOHEADER bmih; + FXSYS_memset(&bmih, 0, sizeof bmih); + bmih.biSize = sizeof bmih; + GetDIBits(hDC, hBitmap, 0, 0, NULL, (BITMAPINFO*)&bmih, DIB_RGB_COLORS); + int width = bmih.biWidth; + int height = abs(bmih.biHeight); + bmih.biHeight = -height; + bmih.biCompression = BI_RGB; + CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; + int ret = 0; + if (bmih.biBitCount == 1 || bmih.biBitCount == 8) { + int size = sizeof(BITMAPINFOHEADER) + 8; + if (bmih.biBitCount == 8) { + size += sizeof(FX_DWORD) * 254; + } + BITMAPINFO* pbmih = (BITMAPINFO*)FX_Alloc(uint8_t, size); + pbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + pbmih->bmiHeader.biBitCount = bmih.biBitCount; + pbmih->bmiHeader.biCompression = BI_RGB; + pbmih->bmiHeader.biHeight = -height; + pbmih->bmiHeader.biPlanes = 1; + pbmih->bmiHeader.biWidth = bmih.biWidth; + if (!pDIBitmap->Create(bmih.biWidth, height, bmih.biBitCount == 1 + ? FXDIB_1bppRgb + : FXDIB_8bppRgb)) { + delete pDIBitmap; + FX_Free(pbmih); + if (bCreatedDC) { + DeleteDC(hDC); + } + return NULL; + } + ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), + (BITMAPINFO*)pbmih, DIB_RGB_COLORS); + FX_Free(pbmih); + pbmih = NULL; + pDIBitmap->CopyPalette(pPalette, palsize); + } else { + if (bmih.biBitCount <= 24) { + bmih.biBitCount = 24; + } else { + bmih.biBitCount = 32; + } + if (!pDIBitmap->Create(bmih.biWidth, height, + bmih.biBitCount == 24 ? FXDIB_Rgb : FXDIB_Rgb32)) { + delete pDIBitmap; + if (bCreatedDC) { + DeleteDC(hDC); + } + return NULL; + } + ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), + (BITMAPINFO*)&bmih, DIB_RGB_COLORS); + if (ret != 0 && bmih.biBitCount == 32) { + int pitch = pDIBitmap->GetPitch(); + for (int row = 0; row < height; row++) { + uint8_t* dest_scan = (uint8_t*)(pDIBitmap->GetBuffer() + row * pitch); + for (int col = 0; col < width; col++) { + dest_scan[3] = 255; + dest_scan += 4; + } + } + } + } + if (ret == 0) { + delete pDIBitmap; + pDIBitmap = NULL; + } + if (bCreatedDC) { + DeleteDC(hDC); + } + return pDIBitmap; +} +CFX_WindowsDIB::CFX_WindowsDIB(HDC hDC, int width, int height) { + Create(width, height, FXDIB_Rgb, (uint8_t*)1); + BITMAPINFOHEADER bmih; + FXSYS_memset(&bmih, 0, sizeof bmih); + bmih.biSize = sizeof bmih; + bmih.biBitCount = 24; + bmih.biHeight = -height; + bmih.biPlanes = 1; + bmih.biWidth = width; + m_hBitmap = CreateDIBSection(hDC, (BITMAPINFO*)&bmih, DIB_RGB_COLORS, + (LPVOID*)&m_pBuffer, NULL, 0); + m_hMemDC = CreateCompatibleDC(hDC); + m_hOldBitmap = (HBITMAP)SelectObject(m_hMemDC, m_hBitmap); +} +CFX_WindowsDIB::~CFX_WindowsDIB() { + SelectObject(m_hMemDC, m_hOldBitmap); + DeleteDC(m_hMemDC); + DeleteObject(m_hBitmap); +} +void CFX_WindowsDIB::LoadFromDevice(HDC hDC, int left, int top) { + ::BitBlt(m_hMemDC, 0, 0, m_Width, m_Height, hDC, left, top, SRCCOPY); +} +void CFX_WindowsDIB::SetToDevice(HDC hDC, int left, int top) { + ::BitBlt(hDC, left, top, m_Width, m_Height, m_hMemDC, 0, 0, SRCCOPY); +} +#endif diff --git a/core/fxge/win32/fx_win32_dwrite.cpp b/core/fxge/win32/fx_win32_dwrite.cpp new file mode 100644 index 0000000000..972295c5cc --- /dev/null +++ b/core/fxge/win32/fx_win32_dwrite.cpp @@ -0,0 +1,410 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ +#include + +#include "core/fxge/win32/dwrite_int.h" +#include "core/include/fxge/fx_ge_win32.h" + +typedef HRESULT(__stdcall* FuncType_DWriteCreateFactory)( + __in DWRITE_FACTORY_TYPE, + __in REFIID, + __out IUnknown**); +template +inline void SafeRelease(InterfaceType** currentObject) { + if (*currentObject) { + (*currentObject)->Release(); + *currentObject = NULL; + } +} +template +inline InterfaceType* SafeAcquire(InterfaceType* newObject) { + if (newObject) { + newObject->AddRef(); + } + return newObject; +} +class CDwFontFileStream final : public IDWriteFontFileStream { + public: + explicit CDwFontFileStream(void const* fontFileReferenceKey, + UINT32 fontFileReferenceKeySize); + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, + void** ppvObject); + virtual ULONG STDMETHODCALLTYPE AddRef(); + virtual ULONG STDMETHODCALLTYPE Release(); + virtual HRESULT STDMETHODCALLTYPE + ReadFileFragment(void const** fragmentStart, + UINT64 fileOffset, + UINT64 fragmentSize, + OUT void** fragmentContext); + virtual void STDMETHODCALLTYPE ReleaseFileFragment(void* fragmentContext); + virtual HRESULT STDMETHODCALLTYPE GetFileSize(OUT UINT64* fileSize); + virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(OUT UINT64* lastWriteTime); + bool IsInitialized() { return resourcePtr_ != NULL; } + + private: + ULONG refCount_; + void const* resourcePtr_; + DWORD resourceSize_; +}; +class CDwFontFileLoader final : public IDWriteFontFileLoader { + public: + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, + void** ppvObject); + virtual ULONG STDMETHODCALLTYPE AddRef(); + virtual ULONG STDMETHODCALLTYPE Release(); + virtual HRESULT STDMETHODCALLTYPE + CreateStreamFromKey(void const* fontFileReferenceKey, + UINT32 fontFileReferenceKeySize, + OUT IDWriteFontFileStream** fontFileStream); + + static IDWriteFontFileLoader* GetLoader() { + if (!instance_) { + instance_ = new CDwFontFileLoader(); + } + return instance_; + } + static bool IsLoaderInitialized() { return instance_ != NULL; } + + private: + CDwFontFileLoader(); + ULONG refCount_; + static IDWriteFontFileLoader* instance_; +}; +class CDwFontContext { + public: + CDwFontContext(IDWriteFactory* dwriteFactory); + ~CDwFontContext(); + HRESULT Initialize(); + + private: + CDwFontContext(CDwFontContext const&); + void operator=(CDwFontContext const&); + HRESULT hr_; + IDWriteFactory* dwriteFactory_; +}; +class CDwGdiTextRenderer { + public: + CDwGdiTextRenderer(CFX_DIBitmap* pBitmap, + IDWriteBitmapRenderTarget* bitmapRenderTarget, + IDWriteRenderingParams* renderingParams); + ~CDwGdiTextRenderer(); + HRESULT STDMETHODCALLTYPE DrawGlyphRun(const FX_RECT& text_bbox, + __in_opt CFX_ClipRgn* pClipRgn, + __in_opt DWRITE_MATRIX const* pMatrix, + FLOAT baselineOriginX, + FLOAT baselineOriginY, + DWRITE_MEASURING_MODE measuringMode, + __in DWRITE_GLYPH_RUN const* glyphRun, + const COLORREF& textColor); + + private: + CFX_DIBitmap* pBitmap_; + IDWriteBitmapRenderTarget* pRenderTarget_; + IDWriteRenderingParams* pRenderingParams_; +}; +CDWriteExt::CDWriteExt() { + m_hModule = NULL; + m_pDWriteFactory = NULL; + m_pDwFontContext = NULL; + m_pDwTextRenderer = NULL; +} +void CDWriteExt::Load() {} +void CDWriteExt::Unload() { + if (m_pDwFontContext) { + delete (CDwFontContext*)m_pDwFontContext; + m_pDwFontContext = NULL; + } + SafeRelease((IDWriteFactory**)&m_pDWriteFactory); +} +CDWriteExt::~CDWriteExt() { + Unload(); +} +LPVOID CDWriteExt::DwCreateFontFaceFromStream(uint8_t* pData, + FX_DWORD size, + int simulation_style) { + IDWriteFactory* pDwFactory = (IDWriteFactory*)m_pDWriteFactory; + IDWriteFontFile* pDwFontFile = NULL; + IDWriteFontFace* pDwFontFace = NULL; + BOOL isSupportedFontType = FALSE; + DWRITE_FONT_FILE_TYPE fontFileType; + DWRITE_FONT_FACE_TYPE fontFaceType; + UINT32 numberOfFaces; + DWRITE_FONT_SIMULATIONS fontStyle = + (DWRITE_FONT_SIMULATIONS)(simulation_style & 3); + HRESULT hr = S_OK; + hr = pDwFactory->CreateCustomFontFileReference( + (void const*)pData, (UINT32)size, CDwFontFileLoader::GetLoader(), + &pDwFontFile); + if (FAILED(hr)) { + goto failed; + } + hr = pDwFontFile->Analyze(&isSupportedFontType, &fontFileType, &fontFaceType, + &numberOfFaces); + if (FAILED(hr) || !isSupportedFontType || + fontFaceType == DWRITE_FONT_FACE_TYPE_UNKNOWN) { + goto failed; + } + hr = pDwFactory->CreateFontFace(fontFaceType, 1, &pDwFontFile, 0, fontStyle, + &pDwFontFace); + if (FAILED(hr)) { + goto failed; + } + SafeRelease(&pDwFontFile); + return pDwFontFace; +failed: + SafeRelease(&pDwFontFile); + return NULL; +} +FX_BOOL CDWriteExt::DwCreateRenderingTarget(CFX_DIBitmap* pBitmap, + void** renderTarget) { + if (pBitmap->GetFormat() > FXDIB_Argb) { + return FALSE; + } + IDWriteFactory* pDwFactory = (IDWriteFactory*)m_pDWriteFactory; + IDWriteGdiInterop* pGdiInterop = NULL; + IDWriteBitmapRenderTarget* pBitmapRenderTarget = NULL; + IDWriteRenderingParams* pRenderingParams = NULL; + HRESULT hr = S_OK; + hr = pDwFactory->GetGdiInterop(&pGdiInterop); + if (FAILED(hr)) { + goto failed; + } + hr = pGdiInterop->CreateBitmapRenderTarget( + NULL, pBitmap->GetWidth(), pBitmap->GetHeight(), &pBitmapRenderTarget); + if (FAILED(hr)) { + goto failed; + } + hr = pDwFactory->CreateCustomRenderingParams( + 1.0f, 0.0f, 1.0f, DWRITE_PIXEL_GEOMETRY_RGB, + DWRITE_RENDERING_MODE_DEFAULT, &pRenderingParams); + if (FAILED(hr)) { + goto failed; + } + hr = pBitmapRenderTarget->SetPixelsPerDip(1.0f); + if (FAILED(hr)) { + goto failed; + } + *(CDwGdiTextRenderer**)renderTarget = + new CDwGdiTextRenderer(pBitmap, pBitmapRenderTarget, pRenderingParams); + SafeRelease(&pGdiInterop); + SafeRelease(&pBitmapRenderTarget); + SafeRelease(&pRenderingParams); + return TRUE; +failed: + SafeRelease(&pGdiInterop); + SafeRelease(&pBitmapRenderTarget); + SafeRelease(&pRenderingParams); + return FALSE; +} +FX_BOOL CDWriteExt::DwRendingString(void* renderTarget, + CFX_ClipRgn* pClipRgn, + FX_RECT& stringRect, + CFX_Matrix* pMatrix, + void* font, + FX_FLOAT font_size, + FX_ARGB text_color, + int glyph_count, + unsigned short* glyph_indices, + FX_FLOAT baselineOriginX, + FX_FLOAT baselineOriginY, + void* glyph_offsets, + FX_FLOAT* glyph_advances) { + if (!renderTarget) { + return TRUE; + } + CDwGdiTextRenderer* pTextRenderer = (CDwGdiTextRenderer*)renderTarget; + DWRITE_MATRIX transform; + DWRITE_GLYPH_RUN glyphRun; + HRESULT hr = S_OK; + if (pMatrix) { + transform.m11 = pMatrix->a; + transform.m12 = pMatrix->b; + transform.m21 = pMatrix->c; + transform.m22 = pMatrix->d; + transform.dx = pMatrix->e; + transform.dy = pMatrix->f; + } + glyphRun.fontFace = (IDWriteFontFace*)font; + glyphRun.fontEmSize = font_size; + glyphRun.glyphCount = glyph_count; + glyphRun.glyphIndices = glyph_indices; + glyphRun.glyphAdvances = glyph_advances; + glyphRun.glyphOffsets = (DWRITE_GLYPH_OFFSET*)glyph_offsets; + glyphRun.isSideways = FALSE; + glyphRun.bidiLevel = 0; + hr = pTextRenderer->DrawGlyphRun( + stringRect, pClipRgn, pMatrix ? &transform : NULL, baselineOriginX, + baselineOriginY, DWRITE_MEASURING_MODE_NATURAL, &glyphRun, + RGB(FXARGB_R(text_color), FXARGB_G(text_color), FXARGB_B(text_color))); + return SUCCEEDED(hr); +} +void CDWriteExt::DwDeleteRenderingTarget(void* renderTarget) { + delete (CDwGdiTextRenderer*)renderTarget; +} +void CDWriteExt::DwDeleteFont(void* pFont) { + if (pFont) { + SafeRelease((IDWriteFontFace**)&pFont); + } +} +CDwFontFileStream::CDwFontFileStream(void const* fontFileReferenceKey, + UINT32 fontFileReferenceKeySize) { + refCount_ = 0; + resourcePtr_ = fontFileReferenceKey; + resourceSize_ = fontFileReferenceKeySize; +} +HRESULT STDMETHODCALLTYPE CDwFontFileStream::QueryInterface(REFIID iid, + void** ppvObject) { + if (iid == IID_IUnknown || iid == __uuidof(IDWriteFontFileStream)) { + *ppvObject = this; + AddRef(); + return S_OK; + } + *ppvObject = NULL; + return E_NOINTERFACE; +} +ULONG STDMETHODCALLTYPE CDwFontFileStream::AddRef() { + return InterlockedIncrement((long*)(&refCount_)); +} +ULONG STDMETHODCALLTYPE CDwFontFileStream::Release() { + ULONG newCount = InterlockedDecrement((long*)(&refCount_)); + if (newCount == 0) { + delete this; + } + return newCount; +} +HRESULT STDMETHODCALLTYPE +CDwFontFileStream::ReadFileFragment(void const** fragmentStart, + UINT64 fileOffset, + UINT64 fragmentSize, + OUT void** fragmentContext) { + if (fileOffset <= resourceSize_ && + fragmentSize <= resourceSize_ - fileOffset) { + *fragmentStart = static_cast(resourcePtr_) + + static_cast(fileOffset); + *fragmentContext = NULL; + return S_OK; + } + *fragmentStart = NULL; + *fragmentContext = NULL; + return E_FAIL; +} +void STDMETHODCALLTYPE +CDwFontFileStream::ReleaseFileFragment(void* fragmentContext) {} +HRESULT STDMETHODCALLTYPE CDwFontFileStream::GetFileSize(OUT UINT64* fileSize) { + *fileSize = resourceSize_; + return S_OK; +} +HRESULT STDMETHODCALLTYPE +CDwFontFileStream::GetLastWriteTime(OUT UINT64* lastWriteTime) { + *lastWriteTime = 0; + return E_NOTIMPL; +} +IDWriteFontFileLoader* CDwFontFileLoader::instance_ = NULL; +CDwFontFileLoader::CDwFontFileLoader() : refCount_(0) {} +HRESULT STDMETHODCALLTYPE CDwFontFileLoader::QueryInterface(REFIID iid, + void** ppvObject) { + if (iid == IID_IUnknown || iid == __uuidof(IDWriteFontFileLoader)) { + *ppvObject = this; + AddRef(); + return S_OK; + } + *ppvObject = NULL; + return E_NOINTERFACE; +} +ULONG STDMETHODCALLTYPE CDwFontFileLoader::AddRef() { + return InterlockedIncrement((long*)(&refCount_)); +} +ULONG STDMETHODCALLTYPE CDwFontFileLoader::Release() { + ULONG newCount = InterlockedDecrement((long*)(&refCount_)); + if (newCount == 0) { + instance_ = NULL; + delete this; + } + return newCount; +} +HRESULT STDMETHODCALLTYPE CDwFontFileLoader::CreateStreamFromKey( + void const* fontFileReferenceKey, + UINT32 fontFileReferenceKeySize, + OUT IDWriteFontFileStream** fontFileStream) { + *fontFileStream = NULL; + CDwFontFileStream* stream = + new CDwFontFileStream(fontFileReferenceKey, fontFileReferenceKeySize); + if (!stream->IsInitialized()) { + delete stream; + return E_FAIL; + } + *fontFileStream = SafeAcquire(stream); + return S_OK; +} +CDwFontContext::CDwFontContext(IDWriteFactory* dwriteFactory) + : hr_(S_FALSE), dwriteFactory_(SafeAcquire(dwriteFactory)) {} +CDwFontContext::~CDwFontContext() { + if (dwriteFactory_ && hr_ == S_OK) { + dwriteFactory_->UnregisterFontFileLoader(CDwFontFileLoader::GetLoader()); + } + SafeRelease(&dwriteFactory_); +} +HRESULT CDwFontContext::Initialize() { + if (hr_ == S_FALSE) { + return hr_ = dwriteFactory_->RegisterFontFileLoader( + CDwFontFileLoader::GetLoader()); + } + return hr_; +} +CDwGdiTextRenderer::CDwGdiTextRenderer( + CFX_DIBitmap* pBitmap, + IDWriteBitmapRenderTarget* bitmapRenderTarget, + IDWriteRenderingParams* renderingParams) + : pBitmap_(pBitmap), + pRenderTarget_(SafeAcquire(bitmapRenderTarget)), + pRenderingParams_(SafeAcquire(renderingParams)) {} +CDwGdiTextRenderer::~CDwGdiTextRenderer() { + SafeRelease(&pRenderTarget_); + SafeRelease(&pRenderingParams_); +} +STDMETHODIMP CDwGdiTextRenderer::DrawGlyphRun( + const FX_RECT& text_bbox, + __in_opt CFX_ClipRgn* pClipRgn, + __in_opt DWRITE_MATRIX const* pMatrix, + FLOAT baselineOriginX, + FLOAT baselineOriginY, + DWRITE_MEASURING_MODE measuringMode, + __in DWRITE_GLYPH_RUN const* glyphRun, + const COLORREF& textColor) { + HRESULT hr = S_OK; + if (pMatrix) { + hr = pRenderTarget_->SetCurrentTransform(pMatrix); + if (FAILED(hr)) { + return hr; + } + } + HDC hDC = pRenderTarget_->GetMemoryDC(); + HBITMAP hBitmap = (HBITMAP)::GetCurrentObject(hDC, OBJ_BITMAP); + BITMAP bitmap; + GetObject(hBitmap, sizeof bitmap, &bitmap); + CFX_DIBitmap dib; + dib.Create(bitmap.bmWidth, bitmap.bmHeight, + bitmap.bmBitsPixel == 24 ? FXDIB_Rgb : FXDIB_Rgb32, + (uint8_t*)bitmap.bmBits); + dib.CompositeBitmap(text_bbox.left, text_bbox.top, text_bbox.Width(), + text_bbox.Height(), pBitmap_, text_bbox.left, + text_bbox.top, FXDIB_BLEND_NORMAL, NULL); + hr = pRenderTarget_->DrawGlyphRun(baselineOriginX, baselineOriginY, + measuringMode, glyphRun, pRenderingParams_, + textColor); + if (FAILED(hr)) { + return hr; + } + pBitmap_->CompositeBitmap(text_bbox.left, text_bbox.top, text_bbox.Width(), + text_bbox.Height(), &dib, text_bbox.left, + text_bbox.top, FXDIB_BLEND_NORMAL, pClipRgn); + return hr; +} +#endif diff --git a/core/fxge/win32/fx_win32_gdipext.cpp b/core/fxge/win32/fx_win32_gdipext.cpp new file mode 100644 index 0000000000..ce181bb448 --- /dev/null +++ b/core/fxge/win32/fx_win32_gdipext.cpp @@ -0,0 +1,1518 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ +#include +#include + +namespace Gdiplus { +using std::min; +using std::max; +} // namespace Gdiplus + +#include + +#include "core/fxge/win32/win32_int.h" +#include "core/include/fxge/fx_ge_win32.h" + +using namespace Gdiplus; // NOLINT +using namespace Gdiplus::DllExports; // NOLINT + +#define GdiFillType2Gdip(fill_type) \ + (fill_type == ALTERNATE ? FillModeAlternate : FillModeWinding) + +enum { + FuncId_GdipCreatePath2, + FuncId_GdipSetPenDashStyle, + FuncId_GdipSetPenDashArray, + FuncId_GdipSetPenDashCap197819, + FuncId_GdipSetPenLineJoin, + FuncId_GdipSetPenWidth, + FuncId_GdipCreateFromHDC, + FuncId_GdipSetPageUnit, + FuncId_GdipSetSmoothingMode, + FuncId_GdipCreateSolidFill, + FuncId_GdipFillPath, + FuncId_GdipDeleteBrush, + FuncId_GdipCreatePen1, + FuncId_GdipSetPenMiterLimit, + FuncId_GdipDrawPath, + FuncId_GdipDeletePen, + FuncId_GdipDeletePath, + FuncId_GdipDeleteGraphics, + FuncId_GdipCreateBitmapFromFileICM, + FuncId_GdipCreateBitmapFromStreamICM, + FuncId_GdipGetImageHeight, + FuncId_GdipGetImageWidth, + FuncId_GdipGetImagePixelFormat, + FuncId_GdipBitmapLockBits, + FuncId_GdipGetImagePaletteSize, + FuncId_GdipGetImagePalette, + FuncId_GdipBitmapUnlockBits, + FuncId_GdipDisposeImage, + FuncId_GdipFillRectangle, + FuncId_GdipCreateBitmapFromScan0, + FuncId_GdipSetImagePalette, + FuncId_GdipSetInterpolationMode, + FuncId_GdipDrawImagePointsI, + FuncId_GdipCreateBitmapFromGdiDib, + FuncId_GdiplusStartup, + FuncId_GdipDrawLineI, + FuncId_GdipResetClip, + FuncId_GdipCreatePath, + FuncId_GdipAddPathPath, + FuncId_GdipSetPathFillMode, + FuncId_GdipSetClipPath, + FuncId_GdipGetClip, + FuncId_GdipCreateRegion, + FuncId_GdipGetClipBoundsI, + FuncId_GdipSetClipRegion, + FuncId_GdipWidenPath, + FuncId_GdipAddPathLine, + FuncId_GdipAddPathRectangle, + FuncId_GdipDeleteRegion, + FuncId_GdipGetDC, + FuncId_GdipReleaseDC, + FuncId_GdipSetPenLineCap197819, + FuncId_GdipSetPenDashOffset, + FuncId_GdipResetPath, + FuncId_GdipCreateRegionPath, + FuncId_GdipCreateFont, + FuncId_GdipGetFontSize, + FuncId_GdipCreateFontFamilyFromName, + FuncId_GdipSetTextRenderingHint, + FuncId_GdipDrawDriverString, + FuncId_GdipCreateMatrix2, + FuncId_GdipDeleteMatrix, + FuncId_GdipSetWorldTransform, + FuncId_GdipResetWorldTransform, + FuncId_GdipDeleteFontFamily, + FuncId_GdipDeleteFont, + FuncId_GdipNewPrivateFontCollection, + FuncId_GdipDeletePrivateFontCollection, + FuncId_GdipPrivateAddMemoryFont, + FuncId_GdipGetFontCollectionFamilyList, + FuncId_GdipGetFontCollectionFamilyCount, + FuncId_GdipSetTextContrast, + FuncId_GdipSetPixelOffsetMode, + FuncId_GdipGetImageGraphicsContext, + FuncId_GdipDrawImageI, + FuncId_GdipDrawImageRectI, + FuncId_GdipDrawString, + FuncId_GdipSetPenTransform, +}; +static LPCSTR g_GdipFuncNames[] = { + "GdipCreatePath2", + "GdipSetPenDashStyle", + "GdipSetPenDashArray", + "GdipSetPenDashCap197819", + "GdipSetPenLineJoin", + "GdipSetPenWidth", + "GdipCreateFromHDC", + "GdipSetPageUnit", + "GdipSetSmoothingMode", + "GdipCreateSolidFill", + "GdipFillPath", + "GdipDeleteBrush", + "GdipCreatePen1", + "GdipSetPenMiterLimit", + "GdipDrawPath", + "GdipDeletePen", + "GdipDeletePath", + "GdipDeleteGraphics", + "GdipCreateBitmapFromFileICM", + "GdipCreateBitmapFromStreamICM", + "GdipGetImageHeight", + "GdipGetImageWidth", + "GdipGetImagePixelFormat", + "GdipBitmapLockBits", + "GdipGetImagePaletteSize", + "GdipGetImagePalette", + "GdipBitmapUnlockBits", + "GdipDisposeImage", + "GdipFillRectangle", + "GdipCreateBitmapFromScan0", + "GdipSetImagePalette", + "GdipSetInterpolationMode", + "GdipDrawImagePointsI", + "GdipCreateBitmapFromGdiDib", + "GdiplusStartup", + "GdipDrawLineI", + "GdipResetClip", + "GdipCreatePath", + "GdipAddPathPath", + "GdipSetPathFillMode", + "GdipSetClipPath", + "GdipGetClip", + "GdipCreateRegion", + "GdipGetClipBoundsI", + "GdipSetClipRegion", + "GdipWidenPath", + "GdipAddPathLine", + "GdipAddPathRectangle", + "GdipDeleteRegion", + "GdipGetDC", + "GdipReleaseDC", + "GdipSetPenLineCap197819", + "GdipSetPenDashOffset", + "GdipResetPath", + "GdipCreateRegionPath", + "GdipCreateFont", + "GdipGetFontSize", + "GdipCreateFontFamilyFromName", + "GdipSetTextRenderingHint", + "GdipDrawDriverString", + "GdipCreateMatrix2", + "GdipDeleteMatrix", + "GdipSetWorldTransform", + "GdipResetWorldTransform", + "GdipDeleteFontFamily", + "GdipDeleteFont", + "GdipNewPrivateFontCollection", + "GdipDeletePrivateFontCollection", + "GdipPrivateAddMemoryFont", + "GdipGetFontCollectionFamilyList", + "GdipGetFontCollectionFamilyCount", + "GdipSetTextContrast", + "GdipSetPixelOffsetMode", + "GdipGetImageGraphicsContext", + "GdipDrawImageI", + "GdipDrawImageRectI", + "GdipDrawString", + "GdipSetPenTransform", +}; +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreatePath2)(GDIPCONST GpPointF*, + GDIPCONST BYTE*, + INT, + GpFillMode, + GpPath** path); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashStyle)( + GpPen* pen, + GpDashStyle dashstyle); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashArray)(GpPen* pen, + GDIPCONST REAL* dash, + INT count); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashCap197819)( + GpPen* pen, + GpDashCap dashCap); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenLineJoin)(GpPen* pen, + GpLineJoin lineJoin); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenWidth)(GpPen* pen, REAL width); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateFromHDC)(HDC hdc, + GpGraphics** graphics); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPageUnit)(GpGraphics* graphics, + GpUnit unit); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetSmoothingMode)( + GpGraphics* graphics, + SmoothingMode smoothingMode); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateSolidFill)(ARGB color, + GpSolidFill** brush); +typedef GpStatus(WINGDIPAPI* FuncType_GdipFillPath)(GpGraphics* graphics, + GpBrush* brush, + GpPath* path); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteBrush)(GpBrush* brush); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreatePen1)(ARGB color, + REAL width, + GpUnit unit, + GpPen** pen); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenMiterLimit)(GpPen* pen, + REAL miterLimit); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawPath)(GpGraphics* graphics, + GpPen* pen, + GpPath* path); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeletePen)(GpPen* pen); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeletePath)(GpPath* path); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteGraphics)(GpGraphics* graphics); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromFileICM)( + GDIPCONST WCHAR* filename, + GpBitmap** bitmap); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromStreamICM)( + IStream* stream, + GpBitmap** bitmap); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImageWidth)(GpImage* image, + UINT* width); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImageHeight)(GpImage* image, + UINT* height); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImagePixelFormat)( + GpImage* image, + PixelFormat* format); +typedef GpStatus(WINGDIPAPI* FuncType_GdipBitmapLockBits)( + GpBitmap* bitmap, + GDIPCONST GpRect* rect, + UINT flags, + PixelFormat format, + BitmapData* lockedBitmapData); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImagePalette)( + GpImage* image, + ColorPalette* palette, + INT size); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImagePaletteSize)(GpImage* image, + INT* size); +typedef GpStatus(WINGDIPAPI* FuncType_GdipBitmapUnlockBits)( + GpBitmap* bitmap, + BitmapData* lockedBitmapData); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDisposeImage)(GpImage* image); +typedef GpStatus(WINGDIPAPI* FuncType_GdipFillRectangle)(GpGraphics* graphics, + GpBrush* brush, + REAL x, + REAL y, + REAL width, + REAL height); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromScan0)( + INT width, + INT height, + INT stride, + PixelFormat format, + BYTE* scan0, + GpBitmap** bitmap); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetImagePalette)( + GpImage* image, + GDIPCONST ColorPalette* palette); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetInterpolationMode)( + GpGraphics* graphics, + InterpolationMode interpolationMode); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawImagePointsI)( + GpGraphics* graphics, + GpImage* image, + GDIPCONST GpPoint* dstpoints, + INT count); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromGdiDib)( + GDIPCONST BITMAPINFO* gdiBitmapInfo, + VOID* gdiBitmapData, + GpBitmap** bitmap); +typedef Status(WINAPI* FuncType_GdiplusStartup)( + OUT uintptr_t* token, + const GdiplusStartupInput* input, + OUT GdiplusStartupOutput* output); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawLineI)(GpGraphics* graphics, + GpPen* pen, + int x1, + int y1, + int x2, + int y2); +typedef GpStatus(WINGDIPAPI* FuncType_GdipResetClip)(GpGraphics* graphics); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreatePath)(GpFillMode brushMode, + GpPath** path); +typedef GpStatus(WINGDIPAPI* FuncType_GdipAddPathPath)( + GpPath* path, + GDIPCONST GpPath* addingPath, + BOOL connect); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPathFillMode)(GpPath* path, + GpFillMode fillmode); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetClipPath)(GpGraphics* graphics, + GpPath* path, + CombineMode combineMode); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetClip)(GpGraphics* graphics, + GpRegion* region); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateRegion)(GpRegion** region); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetClipBoundsI)(GpGraphics* graphics, + GpRect* rect); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetClipRegion)( + GpGraphics* graphics, + GpRegion* region, + CombineMode combineMode); +typedef GpStatus(WINGDIPAPI* FuncType_GdipWidenPath)(GpPath* nativePath, + GpPen* pen, + GpMatrix* matrix, + REAL flatness); +typedef GpStatus(WINGDIPAPI* FuncType_GdipAddPathLine)(GpPath* path, + REAL x1, + REAL y1, + REAL x2, + REAL y2); +typedef GpStatus(WINGDIPAPI* FuncType_GdipAddPathRectangle)(GpPath* path, + REAL x, + REAL y, + REAL width, + REAL height); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteRegion)(GpRegion* region); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetDC)(GpGraphics* graphics, + HDC* hdc); +typedef GpStatus(WINGDIPAPI* FuncType_GdipReleaseDC)(GpGraphics* graphics, + HDC hdc); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenLineCap197819)( + GpPen* pen, + GpLineCap startCap, + GpLineCap endCap, + GpDashCap dashCap); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashOffset)(GpPen* pen, + REAL offset); +typedef GpStatus(WINGDIPAPI* FuncType_GdipResetPath)(GpPath* path); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateRegionPath)(GpPath* path, + GpRegion** region); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateFont)( + GDIPCONST GpFontFamily* fontFamily, + REAL emSize, + INT style, + Unit unit, + GpFont** font); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetFontSize)(GpFont* font, + REAL* size); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateFontFamilyFromName)( + GDIPCONST WCHAR* name, + GpFontCollection* fontCollection, + GpFontFamily** FontFamily); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetTextRenderingHint)( + GpGraphics* graphics, + TextRenderingHint mode); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawDriverString)( + GpGraphics* graphics, + GDIPCONST UINT16* text, + INT length, + GDIPCONST GpFont* font, + GDIPCONST GpBrush* brush, + GDIPCONST PointF* positions, + INT flags, + GDIPCONST GpMatrix* matrix); +typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateMatrix2)(REAL m11, + REAL m12, + REAL m21, + REAL m22, + REAL dx, + REAL dy, + GpMatrix** matrix); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteMatrix)(GpMatrix* matrix); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetWorldTransform)( + GpGraphics* graphics, + GpMatrix* matrix); +typedef GpStatus(WINGDIPAPI* FuncType_GdipResetWorldTransform)( + GpGraphics* graphics); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteFontFamily)( + GpFontFamily* FontFamily); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteFont)(GpFont* font); +typedef GpStatus(WINGDIPAPI* FuncType_GdipNewPrivateFontCollection)( + GpFontCollection** fontCollection); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDeletePrivateFontCollection)( + GpFontCollection** fontCollection); +typedef GpStatus(WINGDIPAPI* FuncType_GdipPrivateAddMemoryFont)( + GpFontCollection* fontCollection, + GDIPCONST void* memory, + INT length); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetFontCollectionFamilyList)( + GpFontCollection* fontCollection, + INT numSought, + GpFontFamily* gpfamilies[], + INT* numFound); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetFontCollectionFamilyCount)( + GpFontCollection* fontCollection, + INT* numFound); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetTextContrast)(GpGraphics* graphics, + UINT contrast); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPixelOffsetMode)( + GpGraphics* graphics, + PixelOffsetMode pixelOffsetMode); +typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImageGraphicsContext)( + GpImage* image, + GpGraphics** graphics); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawImageI)(GpGraphics* graphics, + GpImage* image, + INT x, + INT y); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawImageRectI)(GpGraphics* graphics, + GpImage* image, + INT x, + INT y, + INT width, + INT height); +typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawString)( + GpGraphics* graphics, + GDIPCONST WCHAR* str, + INT length, + GDIPCONST GpFont* font, + GDIPCONST RectF* layoutRect, + GDIPCONST GpStringFormat* stringFormat, + GDIPCONST GpBrush* brush); +typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenTransform)(GpPen* pen, + GpMatrix* matrix); +#define CallFunc(funcname) \ + ((FuncType_##funcname)GdiplusExt.m_Functions[FuncId_##funcname]) +typedef HANDLE(__stdcall* FuncType_GdiAddFontMemResourceEx)(PVOID pbFont, + DWORD cbFont, + PVOID pdv, + DWORD* pcFonts); +typedef BOOL(__stdcall* FuncType_GdiRemoveFontMemResourceEx)(HANDLE handle); +void* CGdiplusExt::GdiAddFontMemResourceEx(void* pFontdata, + FX_DWORD size, + void* pdv, + FX_DWORD* num_face) { + if (m_pGdiAddFontMemResourceEx) { + return ((FuncType_GdiAddFontMemResourceEx)m_pGdiAddFontMemResourceEx)( + (PVOID)pFontdata, (DWORD)size, (PVOID)pdv, (DWORD*)num_face); + } + return NULL; +} +FX_BOOL CGdiplusExt::GdiRemoveFontMemResourceEx(void* handle) { + if (m_pGdiRemoveFontMemResourseEx) { + return ((FuncType_GdiRemoveFontMemResourceEx)m_pGdiRemoveFontMemResourseEx)( + (HANDLE)handle); + } + return FALSE; +} +static GpBrush* _GdipCreateBrush(DWORD argb) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + GpSolidFill* solidBrush = NULL; + CallFunc(GdipCreateSolidFill)((ARGB)argb, &solidBrush); + return solidBrush; +} +static CFX_DIBitmap* _StretchMonoToGray(int dest_width, + int dest_height, + const CFX_DIBitmap* pSource, + FX_RECT* pClipRect) { + FX_BOOL bFlipX = dest_width < 0; + if (bFlipX) { + dest_width = -dest_width; + } + FX_BOOL bFlipY = dest_height < 0; + if (bFlipY) { + dest_height = -dest_height; + } + int result_width = pClipRect->Width(); + int result_height = pClipRect->Height(); + int result_pitch = (result_width + 3) / 4 * 4; + CFX_DIBitmap* pStretched = new CFX_DIBitmap; + if (!pStretched->Create(result_width, result_height, FXDIB_8bppRgb)) { + delete pStretched; + return NULL; + } + LPBYTE dest_buf = pStretched->GetBuffer(); + int src_width = pSource->GetWidth(); + int src_height = pSource->GetHeight(); + int y_unit = src_height / dest_height; + int x_unit = src_width / dest_width; + int area_unit = y_unit * x_unit; + LPBYTE src_buf = pSource->GetBuffer(); + int src_pitch = pSource->GetPitch(); + for (int dest_y = 0; dest_y < result_height; dest_y++) { + LPBYTE dest_scan = dest_buf + dest_y * result_pitch; + int src_y_start = bFlipY ? (dest_height - 1 - dest_y - pClipRect->top) + : (dest_y + pClipRect->top); + src_y_start = src_y_start * src_height / dest_height; + LPBYTE src_scan = src_buf + src_y_start * src_pitch; + for (int dest_x = 0; dest_x < result_width; dest_x++) { + int sum = 0; + int src_x_start = bFlipX ? (dest_width - 1 - dest_x - pClipRect->left) + : (dest_x + pClipRect->left); + src_x_start = src_x_start * src_width / dest_width; + int src_x_end = src_x_start + x_unit; + LPBYTE src_line = src_scan; + for (int src_y = 0; src_y < y_unit; src_y++) { + for (int src_x = src_x_start; src_x < src_x_end; src_x++) { + if (!(src_line[src_x / 8] & (1 << (7 - src_x % 8)))) { + sum += 255; + } + } + src_line += src_pitch; + } + dest_scan[dest_x] = 255 - sum / area_unit; + } + } + return pStretched; +} +static void OutputImageMask(GpGraphics* pGraphics, + BOOL bMonoDevice, + const CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_ARGB argb, + const FX_RECT* pClipRect) { + ASSERT(pBitmap->GetBPP() == 1); + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + int src_width = pBitmap->GetWidth(), src_height = pBitmap->GetHeight(); + int src_pitch = pBitmap->GetPitch(); + uint8_t* scan0 = pBitmap->GetBuffer(); + if (src_width == 1 && src_height == 1) { + if ((scan0[0] & 0x80) == 0) { + return; + } + GpSolidFill* solidBrush; + CallFunc(GdipCreateSolidFill)((ARGB)argb, &solidBrush); + if (dest_width < 0) { + dest_width = -dest_width; + dest_left -= dest_width; + } + if (dest_height < 0) { + dest_height = -dest_height; + dest_top -= dest_height; + } + CallFunc(GdipFillRectangle)(pGraphics, solidBrush, (float)dest_left, + (float)dest_top, (float)dest_width, + (float)dest_height); + CallFunc(GdipDeleteBrush)(solidBrush); + return; + } + if (!bMonoDevice && abs(dest_width) < src_width && + abs(dest_height) < src_height) { + FX_RECT image_rect(dest_left, dest_top, dest_left + dest_width, + dest_top + dest_height); + image_rect.Normalize(); + FX_RECT image_clip = image_rect; + image_clip.Intersect(*pClipRect); + if (image_clip.IsEmpty()) { + return; + } + image_clip.Offset(-image_rect.left, -image_rect.top); + CFX_DIBitmap* pStretched = NULL; + if (src_width * src_height > 10000) { + pStretched = + _StretchMonoToGray(dest_width, dest_height, pBitmap, &image_clip); + } else { + pStretched = + pBitmap->StretchTo(dest_width, dest_height, FALSE, &image_clip); + } + GpBitmap* bitmap; + CallFunc(GdipCreateBitmapFromScan0)(image_clip.Width(), image_clip.Height(), + (image_clip.Width() + 3) / 4 * 4, + PixelFormat8bppIndexed, + pStretched->GetBuffer(), &bitmap); + int a, r, g, b; + ArgbDecode(argb, a, r, g, b); + UINT pal[258]; + pal[0] = 0; + pal[1] = 256; + for (int i = 0; i < 256; i++) { + pal[i + 2] = ArgbEncode(i * a / 255, r, g, b); + } + CallFunc(GdipSetImagePalette)(bitmap, (ColorPalette*)pal); + CallFunc(GdipDrawImageI)(pGraphics, bitmap, + image_rect.left + image_clip.left, + image_rect.top + image_clip.top); + CallFunc(GdipDisposeImage)(bitmap); + delete pStretched; + return; + } + GpBitmap* bitmap; + CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, + PixelFormat1bppIndexed, scan0, &bitmap); + UINT palette[4] = {PaletteFlagsHasAlpha, 2, 0, argb}; + CallFunc(GdipSetImagePalette)(bitmap, (ColorPalette*)palette); + Point destinationPoints[] = {Point(dest_left, dest_top), + Point(dest_left + dest_width, dest_top), + Point(dest_left, dest_top + dest_height)}; + CallFunc(GdipDrawImagePointsI)(pGraphics, bitmap, destinationPoints, 3); + CallFunc(GdipDisposeImage)(bitmap); +} +static void OutputImage(GpGraphics* pGraphics, + const CFX_DIBitmap* pBitmap, + const FX_RECT* pSrcRect, + int dest_left, + int dest_top, + int dest_width, + int dest_height) { + int src_width = pSrcRect->Width(), src_height = pSrcRect->Height(); + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + if (pBitmap->GetBPP() == 1 && (pSrcRect->left % 8)) { + FX_RECT new_rect(0, 0, src_width, src_height); + CFX_DIBitmap* pCloned = pBitmap->Clone(pSrcRect); + if (!pCloned) { + return; + } + OutputImage(pGraphics, pCloned, &new_rect, dest_left, dest_top, dest_width, + dest_height); + delete pCloned; + return; + } + int src_pitch = pBitmap->GetPitch(); + uint8_t* scan0 = pBitmap->GetBuffer() + pSrcRect->top * src_pitch + + pBitmap->GetBPP() * pSrcRect->left / 8; + GpBitmap* bitmap = NULL; + switch (pBitmap->GetFormat()) { + case FXDIB_Argb: + CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, + PixelFormat32bppARGB, scan0, &bitmap); + break; + case FXDIB_Rgb32: + CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, + PixelFormat32bppRGB, scan0, &bitmap); + break; + case FXDIB_Rgb: + CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, + PixelFormat24bppRGB, scan0, &bitmap); + break; + case FXDIB_8bppRgb: { + CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, + PixelFormat8bppIndexed, scan0, + &bitmap); + UINT pal[258]; + pal[0] = 0; + pal[1] = 256; + for (int i = 0; i < 256; i++) { + pal[i + 2] = pBitmap->GetPaletteEntry(i); + } + CallFunc(GdipSetImagePalette)(bitmap, (ColorPalette*)pal); + break; + } + case FXDIB_1bppRgb: { + CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, + PixelFormat1bppIndexed, scan0, + &bitmap); + break; + } + } + if (dest_height < 0) { + dest_height--; + } + if (dest_width < 0) { + dest_width--; + } + Point destinationPoints[] = {Point(dest_left, dest_top), + Point(dest_left + dest_width, dest_top), + Point(dest_left, dest_top + dest_height)}; + CallFunc(GdipDrawImagePointsI)(pGraphics, bitmap, destinationPoints, 3); + CallFunc(GdipDisposeImage)(bitmap); +} +CGdiplusExt::CGdiplusExt() { + m_hModule = NULL; + m_GdiModule = NULL; + for (int i = 0; i < sizeof g_GdipFuncNames / sizeof(LPCSTR); i++) { + m_Functions[i] = NULL; + } + m_pGdiAddFontMemResourceEx = NULL; + m_pGdiRemoveFontMemResourseEx = NULL; +} +void CGdiplusExt::Load() { + CFX_ByteString strPlusPath = ""; + FX_CHAR buf[MAX_PATH]; + GetSystemDirectoryA(buf, MAX_PATH); + strPlusPath += buf; + strPlusPath += "\\"; + strPlusPath += "GDIPLUS.DLL"; + m_hModule = LoadLibraryA(strPlusPath); + if (!m_hModule) { + return; + } + for (int i = 0; i < sizeof g_GdipFuncNames / sizeof(LPCSTR); i++) { + m_Functions[i] = GetProcAddress(m_hModule, g_GdipFuncNames[i]); + if (!m_Functions[i]) { + m_hModule = NULL; + return; + } + } + uintptr_t gdiplusToken; + GdiplusStartupInput gdiplusStartupInput; + ((FuncType_GdiplusStartup)m_Functions[FuncId_GdiplusStartup])( + &gdiplusToken, &gdiplusStartupInput, NULL); + m_GdiModule = LoadLibraryA("GDI32.DLL"); + if (!m_GdiModule) { + return; + } + m_pGdiAddFontMemResourceEx = + GetProcAddress(m_GdiModule, "AddFontMemResourceEx"); + m_pGdiRemoveFontMemResourseEx = + GetProcAddress(m_GdiModule, "RemoveFontMemResourceEx"); +} +CGdiplusExt::~CGdiplusExt() {} +LPVOID CGdiplusExt::LoadMemFont(LPBYTE pData, FX_DWORD size) { + GpFontCollection* pCollection = NULL; + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipNewPrivateFontCollection)(&pCollection); + GpStatus status = + CallFunc(GdipPrivateAddMemoryFont)(pCollection, pData, size); + if (status == Ok) { + return pCollection; + } + CallFunc(GdipDeletePrivateFontCollection)(&pCollection); + return NULL; +} +void CGdiplusExt::DeleteMemFont(LPVOID pCollection) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipDeletePrivateFontCollection)((GpFontCollection**)&pCollection); +} +FX_BOOL CGdiplusExt::GdipCreateBitmap(CFX_DIBitmap* pBitmap, void** bitmap) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + PixelFormat format; + switch (pBitmap->GetFormat()) { + case FXDIB_Rgb: + format = PixelFormat24bppRGB; + break; + case FXDIB_Rgb32: + format = PixelFormat32bppRGB; + break; + case FXDIB_Argb: + format = PixelFormat32bppARGB; + break; + default: + return FALSE; + } + GpStatus status = CallFunc(GdipCreateBitmapFromScan0)( + pBitmap->GetWidth(), pBitmap->GetHeight(), pBitmap->GetPitch(), format, + pBitmap->GetBuffer(), (GpBitmap**)bitmap); + if (status == Ok) { + return TRUE; + } + return FALSE; +} +FX_BOOL CGdiplusExt::GdipCreateFromImage(void* bitmap, void** graphics) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + GpStatus status = CallFunc(GdipGetImageGraphicsContext)( + (GpBitmap*)bitmap, (GpGraphics**)graphics); + if (status == Ok) { + return TRUE; + } + return FALSE; +} +FX_BOOL CGdiplusExt::GdipCreateFontFamilyFromName(const FX_WCHAR* name, + void* pFontCollection, + void** pFamily) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + GpStatus status = CallFunc(GdipCreateFontFamilyFromName)( + (GDIPCONST WCHAR*)name, (GpFontCollection*)pFontCollection, + (GpFontFamily**)pFamily); + if (status == Ok) { + return TRUE; + } + return FALSE; +} +FX_BOOL CGdiplusExt::GdipCreateFontFromFamily(void* pFamily, + FX_FLOAT font_size, + int fontstyle, + int flag, + void** pFont) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + GpStatus status = + CallFunc(GdipCreateFont)((GpFontFamily*)pFamily, font_size, fontstyle, + Unit(flag), (GpFont**)pFont); + if (status == Ok) { + return TRUE; + } + return FALSE; +} +void CGdiplusExt::GdipGetFontSize(void* pFont, FX_FLOAT* size) { + REAL get_size; + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + GpStatus status = CallFunc(GdipGetFontSize)((GpFont*)pFont, (REAL*)&get_size); + if (status == Ok) { + *size = (FX_FLOAT)get_size; + } else { + *size = 0; + } +} +void CGdiplusExt::GdipSetTextRenderingHint(void* graphics, int mode) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipSetTextRenderingHint)((GpGraphics*)graphics, + (TextRenderingHint)mode); +} +void CGdiplusExt::GdipSetPageUnit(void* graphics, FX_DWORD unit) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipSetPageUnit)((GpGraphics*)graphics, (GpUnit)unit); +} +FX_BOOL CGdiplusExt::GdipDrawDriverString(void* graphics, + unsigned short* text, + int length, + void* font, + void* brush, + void* positions, + int flags, + const void* matrix) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + GpStatus status = CallFunc(GdipDrawDriverString)( + (GpGraphics*)graphics, (GDIPCONST UINT16*)text, (INT)length, + (GDIPCONST GpFont*)font, (GDIPCONST GpBrush*)brush, + (GDIPCONST PointF*)positions, (INT)flags, (GDIPCONST GpMatrix*)matrix); + if (status == Ok) { + return TRUE; + } + return FALSE; +} +void CGdiplusExt::GdipCreateBrush(FX_DWORD fill_argb, void** pBrush) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipCreateSolidFill)((ARGB)fill_argb, (GpSolidFill**)pBrush); +} +void CGdiplusExt::GdipDeleteBrush(void* pBrush) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipDeleteBrush)((GpSolidFill*)pBrush); +} +void* CGdiplusExt::GdipCreateFontFromCollection(void* pFontCollection, + FX_FLOAT font_size, + int fontstyle) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + int numFamilies = 0; + GpStatus status = CallFunc(GdipGetFontCollectionFamilyCount)( + (GpFontCollection*)pFontCollection, &numFamilies); + if (status != Ok) { + return NULL; + } + GpFontFamily* family_list[1]; + status = CallFunc(GdipGetFontCollectionFamilyList)( + (GpFontCollection*)pFontCollection, 1, family_list, &numFamilies); + if (status != Ok) { + return NULL; + } + GpFont* pFont = NULL; + status = CallFunc(GdipCreateFont)(family_list[0], font_size, fontstyle, + UnitPixel, &pFont); + if (status != Ok) { + return NULL; + } + return pFont; +} +void CGdiplusExt::GdipCreateMatrix(FX_FLOAT a, + FX_FLOAT b, + FX_FLOAT c, + FX_FLOAT d, + FX_FLOAT e, + FX_FLOAT f, + void** matrix) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipCreateMatrix2)(a, b, c, d, e, f, (GpMatrix**)matrix); +} +void CGdiplusExt::GdipDeleteMatrix(void* matrix) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipDeleteMatrix)((GpMatrix*)matrix); +} +void CGdiplusExt::GdipDeleteFontFamily(void* pFamily) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipDeleteFontFamily)((GpFontFamily*)pFamily); +} +void CGdiplusExt::GdipDeleteFont(void* pFont) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipDeleteFont)((GpFont*)pFont); +} +void CGdiplusExt::GdipSetWorldTransform(void* graphics, void* pMatrix) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipSetWorldTransform)((GpGraphics*)graphics, (GpMatrix*)pMatrix); +} +void CGdiplusExt::GdipDisposeImage(void* bitmap) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipDisposeImage)((GpBitmap*)bitmap); +} +void CGdiplusExt::GdipDeleteGraphics(void* graphics) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipDeleteGraphics)((GpGraphics*)graphics); +} +FX_BOOL CGdiplusExt::StretchBitMask(HDC hDC, + BOOL bMonoDevice, + const CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD argb, + const FX_RECT* pClipRect, + int flags) { + ASSERT(pBitmap->GetBPP() == 1); + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + GpGraphics* pGraphics = NULL; + CallFunc(GdipCreateFromHDC)(hDC, &pGraphics); + CallFunc(GdipSetPageUnit)(pGraphics, UnitPixel); + if (flags & FXDIB_NOSMOOTH) { + CallFunc(GdipSetInterpolationMode)(pGraphics, + InterpolationModeNearestNeighbor); + } else { + CallFunc(GdipSetInterpolationMode)(pGraphics, InterpolationModeHighQuality); + } + OutputImageMask(pGraphics, bMonoDevice, pBitmap, dest_left, dest_top, + dest_width, dest_height, argb, pClipRect); + CallFunc(GdipDeleteGraphics)(pGraphics); + return TRUE; +} +FX_BOOL CGdiplusExt::StretchDIBits(HDC hDC, + const CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + int flags) { + GpGraphics* pGraphics; + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipCreateFromHDC)(hDC, &pGraphics); + CallFunc(GdipSetPageUnit)(pGraphics, UnitPixel); + if (flags & FXDIB_NOSMOOTH) { + CallFunc(GdipSetInterpolationMode)(pGraphics, + InterpolationModeNearestNeighbor); + } else if (pBitmap->GetWidth() > abs(dest_width) / 2 || + pBitmap->GetHeight() > abs(dest_height) / 2) { + CallFunc(GdipSetInterpolationMode)(pGraphics, InterpolationModeHighQuality); + } else { + CallFunc(GdipSetInterpolationMode)(pGraphics, InterpolationModeBilinear); + } + FX_RECT src_rect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); + OutputImage(pGraphics, pBitmap, &src_rect, dest_left, dest_top, dest_width, + dest_height); + CallFunc(GdipDeleteGraphics)(pGraphics); + CallFunc(GdipDeleteGraphics)(pGraphics); + return TRUE; +} +static GpPen* _GdipCreatePen(const CFX_GraphStateData* pGraphState, + const CFX_Matrix* pMatrix, + DWORD argb, + FX_BOOL bTextMode = FALSE) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + FX_FLOAT width = pGraphState ? pGraphState->m_LineWidth : 1.0f; + if (!bTextMode) { + FX_FLOAT unit = + pMatrix ? 1.0f / ((pMatrix->GetXUnit() + pMatrix->GetYUnit()) / 2) + : 1.0f; + if (width < unit) { + width = unit; + } + } + GpPen* pPen = NULL; + CallFunc(GdipCreatePen1)((ARGB)argb, width, UnitWorld, &pPen); + LineCap lineCap; + DashCap dashCap = DashCapFlat; + FX_BOOL bDashExtend = FALSE; + switch (pGraphState->m_LineCap) { + case CFX_GraphStateData::LineCapButt: + lineCap = LineCapFlat; + break; + case CFX_GraphStateData::LineCapRound: + lineCap = LineCapRound; + dashCap = DashCapRound; + bDashExtend = TRUE; + break; + case CFX_GraphStateData::LineCapSquare: + lineCap = LineCapSquare; + bDashExtend = TRUE; + break; + } + CallFunc(GdipSetPenLineCap197819)(pPen, lineCap, lineCap, dashCap); + LineJoin lineJoin; + switch (pGraphState->m_LineJoin) { + case CFX_GraphStateData::LineJoinMiter: + lineJoin = LineJoinMiterClipped; + break; + case CFX_GraphStateData::LineJoinRound: + lineJoin = LineJoinRound; + break; + case CFX_GraphStateData::LineJoinBevel: + lineJoin = LineJoinBevel; + break; + } + CallFunc(GdipSetPenLineJoin)(pPen, lineJoin); + if (pGraphState->m_DashCount) { + FX_FLOAT* pDashArray = FX_Alloc( + FX_FLOAT, pGraphState->m_DashCount + pGraphState->m_DashCount % 2); + int nCount = 0; + FX_FLOAT on_leftover = 0, off_leftover = 0; + for (int i = 0; i < pGraphState->m_DashCount; i += 2) { + FX_FLOAT on_phase = pGraphState->m_DashArray[i]; + FX_FLOAT off_phase; + if (i == pGraphState->m_DashCount - 1) { + off_phase = on_phase; + } else { + off_phase = pGraphState->m_DashArray[i + 1]; + } + on_phase /= width; + off_phase /= width; + if (on_phase + off_phase <= 0.00002f) { + on_phase = 1.0f / 10; + off_phase = 1.0f / 10; + } + if (bDashExtend) { + if (off_phase < 1) { + off_phase = 0; + } else { + off_phase -= 1; + } + on_phase += 1; + } + if (on_phase == 0 || off_phase == 0) { + if (nCount == 0) { + on_leftover += on_phase; + off_leftover += off_phase; + } else { + pDashArray[nCount - 2] += on_phase; + pDashArray[nCount - 1] += off_phase; + } + } else { + pDashArray[nCount++] = on_phase + on_leftover; + on_leftover = 0; + pDashArray[nCount++] = off_phase + off_leftover; + off_leftover = 0; + } + } + CallFunc(GdipSetPenDashArray)(pPen, pDashArray, nCount); + FX_FLOAT phase = pGraphState->m_DashPhase; + if (bDashExtend) { + if (phase < 0.5f) { + phase = 0; + } else { + phase -= 0.5f; + } + } + CallFunc(GdipSetPenDashOffset)(pPen, phase); + FX_Free(pDashArray); + pDashArray = NULL; + } + CallFunc(GdipSetPenMiterLimit)(pPen, pGraphState->m_MiterLimit); + return pPen; +} +static FX_BOOL IsSmallTriangle(PointF* points, + const CFX_Matrix* pMatrix, + int& v1, + int& v2) { + int pairs[] = {1, 2, 0, 2, 0, 1}; + for (int i = 0; i < 3; i++) { + int pair1 = pairs[i * 2]; + int pair2 = pairs[i * 2 + 1]; + FX_FLOAT x1 = points[pair1].X, x2 = points[pair2].X; + FX_FLOAT y1 = points[pair1].Y, y2 = points[pair2].Y; + if (pMatrix) { + pMatrix->Transform(x1, y1); + pMatrix->Transform(x2, y2); + } + FX_FLOAT dx = x1 - x2; + FX_FLOAT dy = y1 - y2; + FX_FLOAT distance_square = (dx * dx) + (dy * dy); + if (distance_square < (1.0f * 2 + 1.0f / 4)) { + v1 = i; + v2 = pair1; + return TRUE; + } + } + return FALSE; +} +FX_BOOL CGdiplusExt::DrawPath(HDC hDC, + const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_argb, + FX_DWORD stroke_argb, + int fill_mode) { + int nPoints = pPathData->GetPointCount(); + if (nPoints == 0) { + return TRUE; + } + FX_PATHPOINT* pPoints = pPathData->GetPoints(); + GpGraphics* pGraphics = NULL; + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipCreateFromHDC)(hDC, &pGraphics); + CallFunc(GdipSetPageUnit)(pGraphics, UnitPixel); + CallFunc(GdipSetPixelOffsetMode)(pGraphics, PixelOffsetModeHalf); + GpMatrix* pMatrix = NULL; + if (pObject2Device) { + CallFunc(GdipCreateMatrix2)(pObject2Device->a, pObject2Device->b, + pObject2Device->c, pObject2Device->d, + pObject2Device->e, pObject2Device->f, &pMatrix); + CallFunc(GdipSetWorldTransform)(pGraphics, pMatrix); + } + PointF* points = FX_Alloc(PointF, nPoints); + BYTE* types = FX_Alloc(BYTE, nPoints); + int nSubPathes = 0; + FX_BOOL bSubClose = FALSE; + int pos_subclose = 0; + FX_BOOL bSmooth = FALSE; + int startpoint = 0; + for (int i = 0; i < nPoints; i++) { + points[i].X = pPoints[i].m_PointX; + points[i].Y = pPoints[i].m_PointY; + FX_FLOAT x, y; + if (pObject2Device) { + pObject2Device->Transform(pPoints[i].m_PointX, pPoints[i].m_PointY, x, y); + } else { + x = pPoints[i].m_PointX; + y = pPoints[i].m_PointY; + } + if (x > 50000 * 1.0f) { + points[i].X = 50000 * 1.0f; + } + if (x < -50000 * 1.0f) { + points[i].X = -50000 * 1.0f; + } + if (y > 50000 * 1.0f) { + points[i].Y = 50000 * 1.0f; + } + if (y < -50000 * 1.0f) { + points[i].Y = -50000 * 1.0f; + } + int point_type = pPoints[i].m_Flag & FXPT_TYPE; + if (point_type == FXPT_MOVETO) { + types[i] = PathPointTypeStart; + nSubPathes++; + bSubClose = FALSE; + startpoint = i; + } else if (point_type == FXPT_LINETO) { + types[i] = PathPointTypeLine; + if (pPoints[i - 1].m_Flag == FXPT_MOVETO && + (i == nPoints - 1 || pPoints[i + 1].m_Flag == FXPT_MOVETO) && + points[i].Y == points[i - 1].Y && points[i].X == points[i - 1].X) { + points[i].X += 0.01f; + continue; + } + if (!bSmooth && points[i].X != points[i - 1].X && + points[i].Y != points[i - 1].Y) { + bSmooth = TRUE; + } + } else if (point_type == FXPT_BEZIERTO) { + types[i] = PathPointTypeBezier; + bSmooth = TRUE; + } + if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE) { + if (bSubClose) { + types[pos_subclose] &= ~PathPointTypeCloseSubpath; + } else { + bSubClose = TRUE; + } + pos_subclose = i; + types[i] |= PathPointTypeCloseSubpath; + if (!bSmooth && points[i].X != points[startpoint].X && + points[i].Y != points[startpoint].Y) { + bSmooth = TRUE; + } + } + } + if (fill_mode & FXFILL_NOPATHSMOOTH) { + bSmooth = FALSE; + CallFunc(GdipSetSmoothingMode)(pGraphics, SmoothingModeNone); + } else if (!(fill_mode & FXFILL_FULLCOVER)) { + if (!bSmooth && (fill_mode & 3)) { + bSmooth = TRUE; + } + if (bSmooth || (pGraphState && pGraphState->m_LineWidth > 2)) { + CallFunc(GdipSetSmoothingMode)(pGraphics, SmoothingModeAntiAlias); + } + } + int new_fill_mode = fill_mode & 3; + if (nPoints == 4 && !pGraphState) { + int v1, v2; + if (IsSmallTriangle(points, pObject2Device, v1, v2)) { + GpPen* pPen = NULL; + CallFunc(GdipCreatePen1)(fill_argb, 1.0f, UnitPixel, &pPen); + CallFunc(GdipDrawLineI)( + pGraphics, pPen, FXSYS_round(points[v1].X), FXSYS_round(points[v1].Y), + FXSYS_round(points[v2].X), FXSYS_round(points[v2].Y)); + CallFunc(GdipDeletePen)(pPen); + return TRUE; + } + } + GpPath* pGpPath = NULL; + CallFunc(GdipCreatePath2)(points, types, nPoints, + GdiFillType2Gdip(new_fill_mode), &pGpPath); + if (!pGpPath) { + if (pMatrix) { + CallFunc(GdipDeleteMatrix)(pMatrix); + } + FX_Free(points); + FX_Free(types); + CallFunc(GdipDeleteGraphics)(pGraphics); + return FALSE; + } + if (new_fill_mode) { + GpBrush* pBrush = _GdipCreateBrush(fill_argb); + CallFunc(GdipSetPathFillMode)(pGpPath, GdiFillType2Gdip(new_fill_mode)); + CallFunc(GdipFillPath)(pGraphics, pBrush, pGpPath); + CallFunc(GdipDeleteBrush)(pBrush); + } + if (pGraphState && stroke_argb) { + GpPen* pPen = _GdipCreatePen(pGraphState, pObject2Device, stroke_argb, + fill_mode & FX_STROKE_TEXT_MODE); + if (nSubPathes == 1) { + CallFunc(GdipDrawPath)(pGraphics, pPen, pGpPath); + } else { + int iStart = 0; + for (int i = 0; i < nPoints; i++) { + if (i == nPoints - 1 || types[i + 1] == PathPointTypeStart) { + GpPath* pSubPath; + CallFunc(GdipCreatePath2)(points + iStart, types + iStart, + i - iStart + 1, + GdiFillType2Gdip(new_fill_mode), &pSubPath); + iStart = i + 1; + CallFunc(GdipDrawPath)(pGraphics, pPen, pSubPath); + CallFunc(GdipDeletePath)(pSubPath); + } + } + } + CallFunc(GdipDeletePen)(pPen); + } + if (pMatrix) { + CallFunc(GdipDeleteMatrix)(pMatrix); + } + FX_Free(points); + FX_Free(types); + CallFunc(GdipDeletePath)(pGpPath); + CallFunc(GdipDeleteGraphics)(pGraphics); + return TRUE; +} +class GpStream final : public IStream { + LONG m_RefCount; + int m_ReadPos; + CFX_ByteTextBuf m_InterStream; + + public: + GpStream() { + m_RefCount = 1; + m_ReadPos = 0; + } + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, + void** ppvObject) { + if (iid == __uuidof(IUnknown) || iid == __uuidof(IStream) || + iid == __uuidof(ISequentialStream)) { + *ppvObject = static_cast(this); + AddRef(); + return S_OK; + } + return E_NOINTERFACE; + } + virtual ULONG STDMETHODCALLTYPE AddRef(void) { + return (ULONG)InterlockedIncrement(&m_RefCount); + } + virtual ULONG STDMETHODCALLTYPE Release(void) { + ULONG res = (ULONG)InterlockedDecrement(&m_RefCount); + if (res == 0) { + delete this; + } + return res; + } + + public: + virtual HRESULT STDMETHODCALLTYPE Read(void* Output, + ULONG cb, + ULONG* pcbRead) { + size_t bytes_left; + size_t bytes_out; + if (pcbRead) { + *pcbRead = 0; + } + if (m_ReadPos == m_InterStream.GetLength()) { + return HRESULT_FROM_WIN32(ERROR_END_OF_MEDIA); + } + bytes_left = m_InterStream.GetLength() - m_ReadPos; + bytes_out = std::min(pdfium::base::checked_cast(cb), bytes_left); + FXSYS_memcpy(Output, m_InterStream.GetBuffer() + m_ReadPos, bytes_out); + m_ReadPos += (int32_t)bytes_out; + if (pcbRead) { + *pcbRead = (ULONG)bytes_out; + } + return S_OK; + } + virtual HRESULT STDMETHODCALLTYPE Write(void const* Input, + ULONG cb, + ULONG* pcbWritten) { + if (cb <= 0) { + if (pcbWritten) { + *pcbWritten = 0; + } + return S_OK; + } + m_InterStream.InsertBlock(m_InterStream.GetLength(), Input, cb); + if (pcbWritten) { + *pcbWritten = cb; + } + return S_OK; + } + + public: + virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER) { + return E_NOTIMPL; + } + virtual HRESULT STDMETHODCALLTYPE CopyTo(IStream*, + ULARGE_INTEGER, + ULARGE_INTEGER*, + ULARGE_INTEGER*) { + return E_NOTIMPL; + } + virtual HRESULT STDMETHODCALLTYPE Commit(DWORD) { return E_NOTIMPL; } + virtual HRESULT STDMETHODCALLTYPE Revert(void) { return E_NOTIMPL; } + virtual HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER, + ULARGE_INTEGER, + DWORD) { + return E_NOTIMPL; + } + virtual HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER, + ULARGE_INTEGER, + DWORD) { + return E_NOTIMPL; + } + virtual HRESULT STDMETHODCALLTYPE Clone(IStream** stream) { + return E_NOTIMPL; + } + virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove, + DWORD dwOrigin, + ULARGE_INTEGER* lpNewFilePointer) { + long start = 0; + long new_read_position; + switch (dwOrigin) { + case STREAM_SEEK_SET: + start = 0; + break; + case STREAM_SEEK_CUR: + start = m_ReadPos; + break; + case STREAM_SEEK_END: + start = m_InterStream.GetLength(); + break; + default: + return STG_E_INVALIDFUNCTION; + break; + } + new_read_position = start + (long)liDistanceToMove.QuadPart; + if (new_read_position < 0 || + new_read_position > m_InterStream.GetLength()) { + return STG_E_SEEKERROR; + } + m_ReadPos = new_read_position; + if (lpNewFilePointer) { + lpNewFilePointer->QuadPart = m_ReadPos; + } + return S_OK; + } + virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg, DWORD grfStatFlag) { + if (!pStatstg) { + return STG_E_INVALIDFUNCTION; + } + ZeroMemory(pStatstg, sizeof(STATSTG)); + pStatstg->cbSize.QuadPart = m_InterStream.GetLength(); + return S_OK; + } +}; +typedef struct { + BITMAPINFO* pbmi; + int Stride; + LPBYTE pScan0; + GpBitmap* pBitmap; + BitmapData* pBitmapData; + GpStream* pStream; +} PREVIEW3_DIBITMAP; +static PREVIEW3_DIBITMAP* LoadDIBitmap(WINDIB_Open_Args_ args) { + GpBitmap* pBitmap; + GpStream* pStream = NULL; + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + Status status = Ok; + if (args.flags == WINDIB_OPEN_PATHNAME) { + status = CallFunc(GdipCreateBitmapFromFileICM)((wchar_t*)args.path_name, + &pBitmap); + } else { + if (args.memory_size == 0 || !args.memory_base) { + return NULL; + } + pStream = new GpStream; + pStream->Write(args.memory_base, (ULONG)args.memory_size, NULL); + status = CallFunc(GdipCreateBitmapFromStreamICM)(pStream, &pBitmap); + } + if (status != Ok) { + if (pStream) { + pStream->Release(); + } + return NULL; + } + UINT height, width; + CallFunc(GdipGetImageHeight)(pBitmap, &height); + CallFunc(GdipGetImageWidth)(pBitmap, &width); + PixelFormat pixel_format; + CallFunc(GdipGetImagePixelFormat)(pBitmap, &pixel_format); + int info_size = sizeof(BITMAPINFOHEADER); + int bpp = 24; + int dest_pixel_format = PixelFormat24bppRGB; + if (pixel_format == PixelFormat1bppIndexed) { + info_size += 8; + bpp = 1; + dest_pixel_format = PixelFormat1bppIndexed; + } else if (pixel_format == PixelFormat8bppIndexed) { + info_size += 1024; + bpp = 8; + dest_pixel_format = PixelFormat8bppIndexed; + } else if (pixel_format == PixelFormat32bppARGB) { + bpp = 32; + dest_pixel_format = PixelFormat32bppARGB; + } + LPBYTE buf = FX_Alloc(BYTE, info_size); + BITMAPINFOHEADER* pbmih = (BITMAPINFOHEADER*)buf; + pbmih->biBitCount = bpp; + pbmih->biCompression = BI_RGB; + pbmih->biHeight = -(int)height; + pbmih->biPlanes = 1; + pbmih->biWidth = width; + Rect rect(0, 0, width, height); + BitmapData* pBitmapData = FX_Alloc(BitmapData, 1); + CallFunc(GdipBitmapLockBits)(pBitmap, &rect, ImageLockModeRead, + dest_pixel_format, pBitmapData); + if (pixel_format == PixelFormat1bppIndexed || + pixel_format == PixelFormat8bppIndexed) { + DWORD* ppal = (DWORD*)(buf + sizeof(BITMAPINFOHEADER)); + struct { + UINT flags; + UINT Count; + DWORD Entries[256]; + } pal; + int size = 0; + CallFunc(GdipGetImagePaletteSize)(pBitmap, &size); + CallFunc(GdipGetImagePalette)(pBitmap, (ColorPalette*)&pal, size); + int entries = pixel_format == PixelFormat1bppIndexed ? 2 : 256; + for (int i = 0; i < entries; i++) { + ppal[i] = pal.Entries[i] & 0x00ffffff; + } + } + PREVIEW3_DIBITMAP* pInfo = FX_Alloc(PREVIEW3_DIBITMAP, 1); + pInfo->pbmi = (BITMAPINFO*)buf; + pInfo->pScan0 = (LPBYTE)pBitmapData->Scan0; + pInfo->Stride = pBitmapData->Stride; + pInfo->pBitmap = pBitmap; + pInfo->pBitmapData = pBitmapData; + pInfo->pStream = pStream; + return pInfo; +} +static void FreeDIBitmap(PREVIEW3_DIBITMAP* pInfo) { + CGdiplusExt& GdiplusExt = + ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; + CallFunc(GdipBitmapUnlockBits)(pInfo->pBitmap, pInfo->pBitmapData); + CallFunc(GdipDisposeImage)(pInfo->pBitmap); + FX_Free(pInfo->pBitmapData); + FX_Free((LPBYTE)pInfo->pbmi); + if (pInfo->pStream) { + pInfo->pStream->Release(); + } + FX_Free(pInfo); +} +CFX_DIBitmap* _FX_WindowsDIB_LoadFromBuf(BITMAPINFO* pbmi, + LPVOID pData, + FX_BOOL bAlpha); +CFX_DIBitmap* CGdiplusExt::LoadDIBitmap(WINDIB_Open_Args_ args) { + PREVIEW3_DIBITMAP* pInfo = ::LoadDIBitmap(args); + if (!pInfo) { + return NULL; + } + int height = abs(pInfo->pbmi->bmiHeader.biHeight); + int width = pInfo->pbmi->bmiHeader.biWidth; + int dest_pitch = (width * pInfo->pbmi->bmiHeader.biBitCount + 31) / 32 * 4; + LPBYTE pData = FX_Alloc2D(BYTE, dest_pitch, height); + if (dest_pitch == pInfo->Stride) { + FXSYS_memcpy(pData, pInfo->pScan0, dest_pitch * height); + } else { + for (int i = 0; i < height; i++) { + FXSYS_memcpy(pData + dest_pitch * i, pInfo->pScan0 + pInfo->Stride * i, + dest_pitch); + } + } + CFX_DIBitmap* pDIBitmap = _FX_WindowsDIB_LoadFromBuf( + pInfo->pbmi, pData, pInfo->pbmi->bmiHeader.biBitCount == 32); + FX_Free(pData); + FreeDIBitmap(pInfo); + return pDIBitmap; +} +#endif diff --git a/core/fxge/win32/fx_win32_print.cpp b/core/fxge/win32/fx_win32_print.cpp new file mode 100644 index 0000000000..c8529098eb --- /dev/null +++ b/core/fxge/win32/fx_win32_print.cpp @@ -0,0 +1,473 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/include/fxge/fx_ge.h" + +#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ + +#include + +#include "core/fxge/dib/dib_int.h" +#include "core/fxge/ge/fx_text_int.h" +#include "core/fxge/win32/win32_int.h" +#include "core/include/fxge/fx_freetype.h" +#include "core/include/fxge/fx_ge_win32.h" + +#define SIZETHRESHOLD 1000 +#define OUTPUTPSLEN 4096 +CGdiPrinterDriver::CGdiPrinterDriver(HDC hDC) + : CGdiDeviceDriver(hDC, FXDC_PRINTER) { + m_HorzSize = ::GetDeviceCaps(m_hDC, HORZSIZE); + m_VertSize = ::GetDeviceCaps(m_hDC, VERTSIZE); + m_bSupportROP = TRUE; +} +int CGdiPrinterDriver::GetDeviceCaps(int caps_id) { + if (caps_id == FXDC_HORZ_SIZE) { + return m_HorzSize; + } + if (caps_id == FXDC_VERT_SIZE) { + return m_VertSize; + } + return CGdiDeviceDriver::GetDeviceCaps(caps_id); +} +FX_BOOL CGdiPrinterDriver::SetDIBits(const CFX_DIBSource* pSource, + FX_DWORD color, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform) { + if (pSource->IsAlphaMask()) { + FX_RECT clip_rect(left, top, left + pSrcRect->Width(), + top + pSrcRect->Height()); + return StretchDIBits(pSource, color, left - pSrcRect->left, + top - pSrcRect->top, pSource->GetWidth(), + pSource->GetHeight(), &clip_rect, 0, alpha_flag, + pIccTransform, FXDIB_BLEND_NORMAL); + } + ASSERT(pSource && !pSource->IsAlphaMask() && pSrcRect); + ASSERT(blend_type == FXDIB_BLEND_NORMAL); + if (pSource->HasAlpha()) { + return FALSE; + } + CFX_DIBExtractor temp(pSource); + CFX_DIBitmap* pBitmap = temp; + if (!pBitmap) { + return FALSE; + } + return GDI_SetDIBits(pBitmap, pSrcRect, left, top, pIccTransform); +} +FX_BOOL CGdiPrinterDriver::StretchDIBits(const CFX_DIBSource* pSource, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (pSource->IsAlphaMask()) { + int alpha = FXGETFLAG_COLORTYPE(alpha_flag) + ? FXGETFLAG_ALPHA_FILL(alpha_flag) + : FXARGB_A(color); + if (pSource->GetBPP() != 1 || alpha != 255 || !m_bSupportROP) { + return FALSE; + } + if (dest_width < 0 || dest_height < 0) { + CFX_DIBitmap* pFlipped = + pSource->FlipImage(dest_width < 0, dest_height < 0); + if (!pFlipped) { + return FALSE; + } + if (dest_width < 0) { + dest_left += dest_width; + } + if (dest_height < 0) { + dest_top += dest_height; + } + FX_BOOL ret = GDI_StretchBitMask(pFlipped, dest_left, dest_top, + abs(dest_width), abs(dest_height), color, + flags, alpha_flag, pIccTransform); + delete pFlipped; + return ret; + } + CFX_DIBExtractor temp(pSource); + CFX_DIBitmap* pBitmap = temp; + if (!pBitmap) { + return FALSE; + } + return GDI_StretchBitMask(pBitmap, dest_left, dest_top, dest_width, + dest_height, color, flags, alpha_flag, + pIccTransform); + } + if (pSource->HasAlpha()) { + return FALSE; + } + if (dest_width < 0 || dest_height < 0) { + CFX_DIBitmap* pFlipped = + pSource->FlipImage(dest_width < 0, dest_height < 0); + if (!pFlipped) { + return FALSE; + } + if (dest_width < 0) { + dest_left += dest_width; + } + if (dest_height < 0) { + dest_top += dest_height; + } + FX_BOOL ret = + GDI_StretchDIBits(pFlipped, dest_left, dest_top, abs(dest_width), + abs(dest_height), flags, pIccTransform); + delete pFlipped; + return ret; + } + CFX_DIBExtractor temp(pSource); + CFX_DIBitmap* pBitmap = temp; + if (!pBitmap) { + return FALSE; + } + return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width, + dest_height, flags, pIccTransform); +} +static CFX_DIBitmap* Transform1bppBitmap(const CFX_DIBSource* pSrc, + const CFX_Matrix* pDestMatrix) { + ASSERT(pSrc->GetFormat() == FXDIB_1bppRgb || + pSrc->GetFormat() == FXDIB_1bppMask || + pSrc->GetFormat() == FXDIB_1bppCmyk); + CFX_DIBExtractor src_bitmap(pSrc); + CFX_DIBitmap* pSrcBitmap = src_bitmap; + if (!pSrcBitmap) { + return NULL; + } + int src_width = pSrcBitmap->GetWidth(), src_height = pSrcBitmap->GetHeight(); + uint8_t* src_buf = pSrcBitmap->GetBuffer(); + FX_DWORD src_pitch = pSrcBitmap->GetPitch(); + FX_FLOAT dest_area = pDestMatrix->GetUnitArea(); + FX_FLOAT area_scale = ((FX_FLOAT)(src_width * src_height)) / dest_area; + FX_FLOAT size_scale = FXSYS_sqrt(area_scale); + CFX_Matrix adjusted_matrix(*pDestMatrix); + adjusted_matrix.Scale(size_scale, size_scale); + CFX_FloatRect result_rect_f = adjusted_matrix.GetUnitRect(); + FX_RECT result_rect = result_rect_f.GetOutterRect(); + CFX_Matrix src2result; + src2result.e = adjusted_matrix.c + adjusted_matrix.e; + src2result.f = adjusted_matrix.d + adjusted_matrix.f; + src2result.a = adjusted_matrix.a / pSrcBitmap->GetWidth(); + src2result.b = adjusted_matrix.b / pSrcBitmap->GetWidth(); + src2result.c = -adjusted_matrix.c / pSrcBitmap->GetHeight(); + src2result.d = -adjusted_matrix.d / pSrcBitmap->GetHeight(); + src2result.TranslateI(-result_rect.left, -result_rect.top); + CFX_Matrix result2src; + result2src.SetReverse(src2result); + CPDF_FixedMatrix result2src_fix(result2src, 8); + int result_width = result_rect.Width(); + int result_height = result_rect.Height(); + CFX_DIBitmap* pTempBitmap = new CFX_DIBitmap; + if (!pTempBitmap->Create(result_width, result_height, pSrc->GetFormat())) { + delete pTempBitmap; + if (pSrcBitmap != src_bitmap) { + delete pSrcBitmap; + } + return NULL; + } + pTempBitmap->CopyPalette(pSrc->GetPalette()); + uint8_t* dest_buf = pTempBitmap->GetBuffer(); + int dest_pitch = pTempBitmap->GetPitch(); + FXSYS_memset(dest_buf, pSrc->IsAlphaMask() ? 0 : 0xff, + dest_pitch * result_height); + if (pSrcBitmap->IsAlphaMask()) { + for (int dest_y = 0; dest_y < result_height; dest_y++) { + uint8_t* dest_scan = dest_buf + dest_y * dest_pitch; + for (int dest_x = 0; dest_x < result_width; dest_x++) { + int src_x, src_y; + result2src_fix.Transform(dest_x, dest_y, src_x, src_y); + if (src_x < 0 || src_x >= src_width || src_y < 0 || + src_y >= src_height) { + continue; + } + if (!((src_buf + src_pitch * src_y)[src_x / 8] & + (1 << (7 - src_x % 8)))) { + continue; + } + dest_scan[dest_x / 8] |= 1 << (7 - dest_x % 8); + } + } + } else { + for (int dest_y = 0; dest_y < result_height; dest_y++) { + uint8_t* dest_scan = dest_buf + dest_y * dest_pitch; + for (int dest_x = 0; dest_x < result_width; dest_x++) { + int src_x, src_y; + result2src_fix.Transform(dest_x, dest_y, src_x, src_y); + if (src_x < 0 || src_x >= src_width || src_y < 0 || + src_y >= src_height) { + continue; + } + if ((src_buf + src_pitch * src_y)[src_x / 8] & (1 << (7 - src_x % 8))) { + continue; + } + dest_scan[dest_x / 8] &= ~(1 << (7 - dest_x % 8)); + } + } + } + if (pSrcBitmap != src_bitmap) { + delete pSrcBitmap; + } + return pTempBitmap; +} +FX_BOOL CGdiPrinterDriver::StartDIBits(const CFX_DIBSource* pSource, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD render_flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (bitmap_alpha < 255 || pSource->HasAlpha() || + (pSource->IsAlphaMask() && (pSource->GetBPP() != 1 || !m_bSupportROP))) { + return FALSE; + } + CFX_FloatRect unit_rect = pMatrix->GetUnitRect(); + FX_RECT full_rect = unit_rect.GetOutterRect(); + if (FXSYS_fabs(pMatrix->b) < 0.5f && pMatrix->a != 0 && + FXSYS_fabs(pMatrix->c) < 0.5f && pMatrix->d != 0) { + FX_BOOL bFlipX = pMatrix->a < 0; + FX_BOOL bFlipY = pMatrix->d > 0; + return StretchDIBits(pSource, color, + bFlipX ? full_rect.right : full_rect.left, + bFlipY ? full_rect.bottom : full_rect.top, + bFlipX ? -full_rect.Width() : full_rect.Width(), + bFlipY ? -full_rect.Height() : full_rect.Height(), + NULL, 0, alpha_flag, pIccTransform, blend_type); + } + if (FXSYS_fabs(pMatrix->a) < 0.5f && FXSYS_fabs(pMatrix->d) < 0.5f) { + CFX_DIBitmap* pTransformed = + pSource->SwapXY(pMatrix->c > 0, pMatrix->b < 0); + if (!pTransformed) { + return FALSE; + } + FX_BOOL ret = StretchDIBits( + pTransformed, color, full_rect.left, full_rect.top, full_rect.Width(), + full_rect.Height(), NULL, 0, alpha_flag, pIccTransform, blend_type); + delete pTransformed; + return ret; + } + if (pSource->GetBPP() == 1) { + CFX_DIBitmap* pTransformed = Transform1bppBitmap(pSource, pMatrix); + if (!pIccTransform) { + return FALSE; + } + SaveState(); + CFX_PathData path; + path.AppendRect(0, 0, 1.0f, 1.0f); + SetClip_PathFill(&path, pMatrix, WINDING); + FX_BOOL ret = StretchDIBits( + pTransformed, color, full_rect.left, full_rect.top, full_rect.Width(), + full_rect.Height(), NULL, 0, alpha_flag, pIccTransform, blend_type); + RestoreState(); + delete pTransformed; + handle = NULL; + return ret; + } + return FALSE; +} +CPSOutput::CPSOutput(HDC hDC) { + m_hDC = hDC; + m_pBuf = NULL; +} +CPSOutput::~CPSOutput() { + FX_Free(m_pBuf); +} +void CPSOutput::Init() { + m_pBuf = FX_Alloc(FX_CHAR, 1026); +} +void CPSOutput::OutputPS(const FX_CHAR* str, int len) { + if (len < 0) { + len = (int)FXSYS_strlen(str); + } + int sent_len = 0; + while (len > 0) { + int send_len = len > 1024 ? 1024 : len; + *(FX_WORD*)m_pBuf = send_len; + FXSYS_memcpy(m_pBuf + 2, str + sent_len, send_len); + ExtEscape(m_hDC, PASSTHROUGH, send_len + 2, m_pBuf, 0, NULL); + sent_len += send_len; + len -= send_len; + } +} +CPSPrinterDriver::CPSPrinterDriver() { + m_pPSOutput = NULL; + m_bCmykOutput = FALSE; +} +CPSPrinterDriver::~CPSPrinterDriver() { + EndRendering(); + delete m_pPSOutput; +} +FX_BOOL CPSPrinterDriver::Init(HDC hDC, int pslevel, FX_BOOL bCmykOutput) { + m_hDC = hDC; + m_HorzSize = ::GetDeviceCaps(m_hDC, HORZSIZE); + m_VertSize = ::GetDeviceCaps(m_hDC, VERTSIZE); + m_Width = ::GetDeviceCaps(m_hDC, HORZRES); + m_Height = ::GetDeviceCaps(m_hDC, VERTRES); + m_nBitsPerPixel = ::GetDeviceCaps(m_hDC, BITSPIXEL); + m_pPSOutput = new CPSOutput(hDC); + ((CPSOutput*)m_pPSOutput)->Init(); + m_PSRenderer.Init(m_pPSOutput, pslevel, m_Width, m_Height, bCmykOutput); + m_bCmykOutput = bCmykOutput; + HRGN hRgn = ::CreateRectRgn(0, 0, 1, 1); + int ret = ::GetClipRgn(hDC, hRgn); + if (ret == 1) { + ret = ::GetRegionData(hRgn, 0, NULL); + if (ret) { + RGNDATA* pData = (RGNDATA*)FX_Alloc(uint8_t, ret); + ret = ::GetRegionData(hRgn, ret, pData); + if (ret) { + CFX_PathData path; + path.AllocPointCount(pData->rdh.nCount * 5); + for (FX_DWORD i = 0; i < pData->rdh.nCount; i++) { + RECT* pRect = (RECT*)(pData->Buffer + pData->rdh.nRgnSize * i); + path.AppendRect((FX_FLOAT)pRect->left, (FX_FLOAT)pRect->bottom, + (FX_FLOAT)pRect->right, (FX_FLOAT)pRect->top); + } + m_PSRenderer.SetClip_PathFill(&path, NULL, FXFILL_WINDING); + } + FX_Free(pData); + } + } + ::DeleteObject(hRgn); + return TRUE; +} +int CPSPrinterDriver::GetDeviceCaps(int caps_id) { + switch (caps_id) { + case FXDC_DEVICE_CLASS: + return FXDC_PRINTER; + case FXDC_PIXEL_WIDTH: + return m_Width; + case FXDC_PIXEL_HEIGHT: + return m_Height; + case FXDC_BITS_PIXEL: + return m_nBitsPerPixel; + case FXDC_RENDER_CAPS: + return m_bCmykOutput ? FXRC_BIT_MASK | FXRC_CMYK_OUTPUT : FXRC_BIT_MASK; + case FXDC_HORZ_SIZE: + return m_HorzSize; + case FXDC_VERT_SIZE: + return m_VertSize; + } + return 0; +} +FX_BOOL CPSPrinterDriver::StartRendering() { + return m_PSRenderer.StartRendering(); +} +void CPSPrinterDriver::EndRendering() { + m_PSRenderer.EndRendering(); +} +void CPSPrinterDriver::SaveState() { + m_PSRenderer.SaveState(); +} +void CPSPrinterDriver::RestoreState(FX_BOOL bKeepSaved) { + m_PSRenderer.RestoreState(bKeepSaved); +} +FX_BOOL CPSPrinterDriver::SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) { + m_PSRenderer.SetClip_PathFill(pPathData, pObject2Device, fill_mode); + return TRUE; +} +FX_BOOL CPSPrinterDriver::SetClip_PathStroke( + const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) { + m_PSRenderer.SetClip_PathStroke(pPathData, pObject2Device, pGraphState); + return TRUE; +} +FX_BOOL CPSPrinterDriver::DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_ARGB fill_color, + FX_ARGB stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + return m_PSRenderer.DrawPath(pPathData, pObject2Device, pGraphState, + fill_color, stroke_color, fill_mode & 3, + alpha_flag, pIccTransform); +} +FX_BOOL CPSPrinterDriver::GetClipBox(FX_RECT* pRect) { + *pRect = m_PSRenderer.GetClipBox(); + return TRUE; +} +FX_BOOL CPSPrinterDriver::SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + return m_PSRenderer.SetDIBits(pBitmap, color, left, top, alpha_flag, + pIccTransform); +} +FX_BOOL CPSPrinterDriver::StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + return m_PSRenderer.StretchDIBits(pBitmap, color, dest_left, dest_top, + dest_width, dest_height, flags, alpha_flag, + pIccTransform); +} +FX_BOOL CPSPrinterDriver::StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD render_flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type) { + if (blend_type != FXDIB_BLEND_NORMAL) { + return FALSE; + } + if (bitmap_alpha < 255) { + return FALSE; + } + handle = NULL; + return m_PSRenderer.DrawDIBits(pBitmap, color, pMatrix, render_flags, + alpha_flag, pIccTransform); +} +FX_BOOL CPSPrinterDriver::DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) { + return m_PSRenderer.DrawText(nChars, pCharPos, pFont, pCache, pObject2Device, + font_size, color, alpha_flag, pIccTransform); +} +#endif diff --git a/core/fxge/win32/win32_int.h b/core/fxge/win32/win32_int.h new file mode 100644 index 0000000000..bdba9547b3 --- /dev/null +++ b/core/fxge/win32/win32_int.h @@ -0,0 +1,369 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_WIN32_WIN32_INT_H_ +#define CORE_FXGE_WIN32_WIN32_INT_H_ + +#include "core/fxge/win32/dwrite_int.h" +#include "core/include/fxge/fx_ge.h" + +struct WINDIB_Open_Args_; +class CGdiplusExt { + public: + CGdiplusExt(); + ~CGdiplusExt(); + void Load(); + FX_BOOL IsAvailable() { return m_hModule != NULL; } + FX_BOOL StretchBitMask(HDC hDC, + BOOL bMonoDevice, + const CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD argb, + const FX_RECT* pClipRect, + int flags); + FX_BOOL StretchDIBits(HDC hDC, + const CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + int flags); + FX_BOOL DrawPath(HDC hDC, + const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_argb, + FX_DWORD stroke_argb, + int fill_mode); + + void* LoadMemFont(uint8_t* pData, FX_DWORD size); + void DeleteMemFont(void* pFontCollection); + FX_BOOL GdipCreateFromImage(void* bitmap, void** graphics); + void GdipDeleteGraphics(void* graphics); + void GdipSetTextRenderingHint(void* graphics, int mode); + void GdipSetPageUnit(void* graphics, FX_DWORD unit); + void GdipSetWorldTransform(void* graphics, void* pMatrix); + FX_BOOL GdipDrawDriverString(void* graphics, + unsigned short* text, + int length, + void* font, + void* brush, + void* positions, + int flags, + const void* matrix); + void GdipCreateBrush(FX_DWORD fill_argb, void** pBrush); + void GdipDeleteBrush(void* pBrush); + void GdipCreateMatrix(FX_FLOAT a, + FX_FLOAT b, + FX_FLOAT c, + FX_FLOAT d, + FX_FLOAT e, + FX_FLOAT f, + void** matrix); + void GdipDeleteMatrix(void* matrix); + FX_BOOL GdipCreateFontFamilyFromName(const FX_WCHAR* name, + void* pFontCollection, + void** pFamily); + void GdipDeleteFontFamily(void* pFamily); + FX_BOOL GdipCreateFontFromFamily(void* pFamily, + FX_FLOAT font_size, + int fontstyle, + int flag, + void** pFont); + void* GdipCreateFontFromCollection(void* pFontCollection, + FX_FLOAT font_size, + int fontstyle); + void GdipDeleteFont(void* pFont); + FX_BOOL GdipCreateBitmap(CFX_DIBitmap* pBitmap, void** bitmap); + void GdipDisposeImage(void* bitmap); + void GdipGetFontSize(void* pFont, FX_FLOAT* size); + void* GdiAddFontMemResourceEx(void* pFontdata, + FX_DWORD size, + void* pdv, + FX_DWORD* num_face); + FX_BOOL GdiRemoveFontMemResourceEx(void* handle); + void* m_Functions[100]; + void* m_pGdiAddFontMemResourceEx; + void* m_pGdiRemoveFontMemResourseEx; + CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args); + + protected: + HMODULE m_hModule; + HMODULE m_GdiModule; +}; +class CWin32Platform { + public: + FX_BOOL m_bHalfTone; + CGdiplusExt m_GdiplusExt; + CDWriteExt m_DWriteExt; +}; + +class CGdiDeviceDriver : public IFX_RenderDeviceDriver { + protected: + // IFX_RenderDeviceDriver + int GetDeviceCaps(int caps_id) override; + void SaveState() override { SaveDC(m_hDC); } + void RestoreState(FX_BOOL bKeepSaved = FALSE) override { + RestoreDC(m_hDC, -1); + if (bKeepSaved) { + SaveDC(m_hDC); + } + } + FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) override; + FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) override; + FX_BOOL DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL FillRect(const FX_RECT* pRect, + FX_DWORD fill_color, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL DrawCosmeticLine(FX_FLOAT x1, + FX_FLOAT y1, + FX_FLOAT x2, + FX_FLOAT y2, + FX_DWORD color, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL GetClipBox(FX_RECT* pRect) override; + void* GetPlatformSurface() override { return (void*)m_hDC; } + + virtual void* GetClipRgn(); + virtual FX_BOOL SetClipRgn(void* pRgn); + virtual FX_BOOL DeleteDeviceRgn(void* pRgn); + virtual void DrawLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2); + + FX_BOOL GDI_SetDIBits(const CFX_DIBitmap* pBitmap, + const FX_RECT* pSrcRect, + int left, + int top, + void* pIccTransform); + FX_BOOL GDI_StretchDIBits(const CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD flags, + void* pIccTransform); + FX_BOOL GDI_StretchBitMask(const CFX_DIBitmap* pBitmap, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + FX_DWORD bitmap_color, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform); + HDC m_hDC; + int m_Width, m_Height, m_nBitsPerPixel; + int m_DeviceClass, m_RenderCaps; + CGdiDeviceDriver(HDC hDC, int device_class); + ~CGdiDeviceDriver() override {} +}; + +class CGdiDisplayDriver : public CGdiDeviceDriver { + public: + CGdiDisplayDriver(HDC hDC); + + protected: + virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, + int left, + int top, + void* pIccTransform = NULL, + FX_BOOL bDEdge = FALSE); + virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform); + virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type); + virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD render_flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type) { + return FALSE; + } + FX_BOOL UseFoxitStretchEngine(const CFX_DIBSource* pSource, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + int render_flags, + int alpha_flag = 0, + void* pIccTransform = NULL, + int blend_type = FXDIB_BLEND_NORMAL); +}; +class CGdiPrinterDriver : public CGdiDeviceDriver { + public: + CGdiPrinterDriver(HDC hDC); + + protected: + virtual int GetDeviceCaps(int caps_id); + virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform); + virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type); + virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD render_flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type); + int m_HorzSize, m_VertSize; + FX_BOOL m_bSupportROP; +}; + +class CPSOutput : public IFX_PSOutput { + public: + explicit CPSOutput(HDC hDC); + ~CPSOutput() override; + + // IFX_PSOutput + void Release() override { delete this; } + void OutputPS(const FX_CHAR* str, int len) override; + + void Init(); + + HDC m_hDC; + FX_CHAR* m_pBuf; +}; + +class CPSPrinterDriver : public IFX_RenderDeviceDriver { + public: + CPSPrinterDriver(); + FX_BOOL Init(HDC hDC, int ps_level, FX_BOOL bCmykOutput); + ~CPSPrinterDriver() override; + + protected: + // IFX_RenderDeviceDriver + int GetDeviceCaps(int caps_id); + FX_BOOL IsPSPrintDriver() override { return TRUE; } + FX_BOOL StartRendering() override; + void EndRendering() override; + void SaveState() override; + void RestoreState(FX_BOOL bKeepSaved = FALSE) override; + FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + int fill_mode) override; + FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState) override; + FX_BOOL DrawPath(const CFX_PathData* pPathData, + const CFX_Matrix* pObject2Device, + const CFX_GraphStateData* pGraphState, + FX_DWORD fill_color, + FX_DWORD stroke_color, + int fill_mode, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL GetClipBox(FX_RECT* pRect) override; + FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + const FX_RECT* pSrcRect, + int left, + int top, + int blend_type, + int alpha_flag, + void* pIccTransform) override; + FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, + FX_DWORD color, + int dest_left, + int dest_top, + int dest_width, + int dest_height, + const FX_RECT* pClipRect, + FX_DWORD flags, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, + int bitmap_alpha, + FX_DWORD color, + const CFX_Matrix* pMatrix, + FX_DWORD render_flags, + void*& handle, + int alpha_flag, + void* pIccTransform, + int blend_type) override; + FX_BOOL DrawDeviceText(int nChars, + const FXTEXT_CHARPOS* pCharPos, + CFX_Font* pFont, + CFX_FontCache* pCache, + const CFX_Matrix* pObject2Device, + FX_FLOAT font_size, + FX_DWORD color, + int alpha_flag, + void* pIccTransform) override; + void* GetPlatformSurface() override { return (void*)m_hDC; } + + HDC m_hDC; + FX_BOOL m_bCmykOutput; + int m_Width, m_Height, m_nBitsPerPixel; + int m_HorzSize, m_VertSize; + CPSOutput* m_pPSOutput; + CFX_PSRenderer m_PSRenderer; +}; +void _Color2Argb(FX_ARGB& argb, + FX_DWORD color, + int alpha_flag, + void* pIccTransform); + +#endif // CORE_FXGE_WIN32_WIN32_INT_H_ diff --git a/core/src/fdrm/crypto/fx_crypt.cpp b/core/src/fdrm/crypto/fx_crypt.cpp deleted file mode 100644 index c1016cdcd9..0000000000 --- a/core/src/fdrm/crypto/fx_crypt.cpp +++ /dev/null @@ -1,260 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fdrm/fx_crypt.h" - -#ifdef __cplusplus -extern "C" { -#endif -struct rc4_state { - int x, y, m[256]; -}; -void CRYPT_ArcFourSetup(void* context, const uint8_t* key, FX_DWORD length) { - rc4_state* s = (rc4_state*)context; - int i, j, k, *m, a; - s->x = 0; - s->y = 0; - m = s->m; - for (i = 0; i < 256; i++) { - m[i] = i; - } - j = k = 0; - for (i = 0; i < 256; i++) { - a = m[i]; - j = (j + a + key[k]) & 0xFF; - m[i] = m[j]; - m[j] = a; - if (++k >= (int)length) { - k = 0; - } - } -} -void CRYPT_ArcFourCrypt(void* context, unsigned char* data, FX_DWORD length) { - struct rc4_state* s = (struct rc4_state*)context; - int i, x, y, *m, a, b; - x = s->x; - y = s->y; - m = s->m; - for (i = 0; i < (int)length; i++) { - x = (x + 1) & 0xFF; - a = m[x]; - y = (y + a) & 0xFF; - m[x] = b = m[y]; - m[y] = a; - data[i] ^= m[(a + b) & 0xFF]; - } - s->x = x; - s->y = y; -} -void CRYPT_ArcFourCryptBlock(uint8_t* pData, - FX_DWORD size, - const uint8_t* key, - FX_DWORD keylen) { - rc4_state s; - CRYPT_ArcFourSetup(&s, key, keylen); - CRYPT_ArcFourCrypt(&s, pData, size); -} -struct md5_context { - FX_DWORD total[2]; - FX_DWORD state[4]; - uint8_t buffer[64]; -}; -#define GET_FX_DWORD(n, b, i) \ - { \ - (n) = (FX_DWORD)((uint8_t*)b)[(i)] | \ - (((FX_DWORD)((uint8_t*)b)[(i) + 1]) << 8) | \ - (((FX_DWORD)((uint8_t*)b)[(i) + 2]) << 16) | \ - (((FX_DWORD)((uint8_t*)b)[(i) + 3]) << 24); \ - } -#define PUT_FX_DWORD(n, b, i) \ - { \ - (((uint8_t*)b)[(i)]) = (uint8_t)(((n)) & 0xFF); \ - (((uint8_t*)b)[(i) + 1]) = (uint8_t)(((n) >> 8) & 0xFF); \ - (((uint8_t*)b)[(i) + 2]) = (uint8_t)(((n) >> 16) & 0xFF); \ - (((uint8_t*)b)[(i) + 3]) = (uint8_t)(((n) >> 24) & 0xFF); \ - } -void md5_process(struct md5_context* ctx, const uint8_t data[64]) { - FX_DWORD A, B, C, D, X[16]; - GET_FX_DWORD(X[0], data, 0); - GET_FX_DWORD(X[1], data, 4); - GET_FX_DWORD(X[2], data, 8); - GET_FX_DWORD(X[3], data, 12); - GET_FX_DWORD(X[4], data, 16); - GET_FX_DWORD(X[5], data, 20); - GET_FX_DWORD(X[6], data, 24); - GET_FX_DWORD(X[7], data, 28); - GET_FX_DWORD(X[8], data, 32); - GET_FX_DWORD(X[9], data, 36); - GET_FX_DWORD(X[10], data, 40); - GET_FX_DWORD(X[11], data, 44); - GET_FX_DWORD(X[12], data, 48); - GET_FX_DWORD(X[13], data, 52); - GET_FX_DWORD(X[14], data, 56); - GET_FX_DWORD(X[15], data, 60); -#define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) -#define P(a, b, c, d, k, s, t) \ - { \ - a += F(b, c, d) + X[k] + t; \ - a = S(a, s) + b; \ - } - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; -#define F(x, y, z) (z ^ (x & (y ^ z))) - P(A, B, C, D, 0, 7, 0xD76AA478); - P(D, A, B, C, 1, 12, 0xE8C7B756); - P(C, D, A, B, 2, 17, 0x242070DB); - P(B, C, D, A, 3, 22, 0xC1BDCEEE); - P(A, B, C, D, 4, 7, 0xF57C0FAF); - P(D, A, B, C, 5, 12, 0x4787C62A); - P(C, D, A, B, 6, 17, 0xA8304613); - P(B, C, D, A, 7, 22, 0xFD469501); - P(A, B, C, D, 8, 7, 0x698098D8); - P(D, A, B, C, 9, 12, 0x8B44F7AF); - P(C, D, A, B, 10, 17, 0xFFFF5BB1); - P(B, C, D, A, 11, 22, 0x895CD7BE); - P(A, B, C, D, 12, 7, 0x6B901122); - P(D, A, B, C, 13, 12, 0xFD987193); - P(C, D, A, B, 14, 17, 0xA679438E); - P(B, C, D, A, 15, 22, 0x49B40821); -#undef F -#define F(x, y, z) (y ^ (z & (x ^ y))) - P(A, B, C, D, 1, 5, 0xF61E2562); - P(D, A, B, C, 6, 9, 0xC040B340); - P(C, D, A, B, 11, 14, 0x265E5A51); - P(B, C, D, A, 0, 20, 0xE9B6C7AA); - P(A, B, C, D, 5, 5, 0xD62F105D); - P(D, A, B, C, 10, 9, 0x02441453); - P(C, D, A, B, 15, 14, 0xD8A1E681); - P(B, C, D, A, 4, 20, 0xE7D3FBC8); - P(A, B, C, D, 9, 5, 0x21E1CDE6); - P(D, A, B, C, 14, 9, 0xC33707D6); - P(C, D, A, B, 3, 14, 0xF4D50D87); - P(B, C, D, A, 8, 20, 0x455A14ED); - P(A, B, C, D, 13, 5, 0xA9E3E905); - P(D, A, B, C, 2, 9, 0xFCEFA3F8); - P(C, D, A, B, 7, 14, 0x676F02D9); - P(B, C, D, A, 12, 20, 0x8D2A4C8A); -#undef F -#define F(x, y, z) (x ^ y ^ z) - P(A, B, C, D, 5, 4, 0xFFFA3942); - P(D, A, B, C, 8, 11, 0x8771F681); - P(C, D, A, B, 11, 16, 0x6D9D6122); - P(B, C, D, A, 14, 23, 0xFDE5380C); - P(A, B, C, D, 1, 4, 0xA4BEEA44); - P(D, A, B, C, 4, 11, 0x4BDECFA9); - P(C, D, A, B, 7, 16, 0xF6BB4B60); - P(B, C, D, A, 10, 23, 0xBEBFBC70); - P(A, B, C, D, 13, 4, 0x289B7EC6); - P(D, A, B, C, 0, 11, 0xEAA127FA); - P(C, D, A, B, 3, 16, 0xD4EF3085); - P(B, C, D, A, 6, 23, 0x04881D05); - P(A, B, C, D, 9, 4, 0xD9D4D039); - P(D, A, B, C, 12, 11, 0xE6DB99E5); - P(C, D, A, B, 15, 16, 0x1FA27CF8); - P(B, C, D, A, 2, 23, 0xC4AC5665); -#undef F -#define F(x, y, z) (y ^ (x | ~z)) - P(A, B, C, D, 0, 6, 0xF4292244); - P(D, A, B, C, 7, 10, 0x432AFF97); - P(C, D, A, B, 14, 15, 0xAB9423A7); - P(B, C, D, A, 5, 21, 0xFC93A039); - P(A, B, C, D, 12, 6, 0x655B59C3); - P(D, A, B, C, 3, 10, 0x8F0CCC92); - P(C, D, A, B, 10, 15, 0xFFEFF47D); - P(B, C, D, A, 1, 21, 0x85845DD1); - P(A, B, C, D, 8, 6, 0x6FA87E4F); - P(D, A, B, C, 15, 10, 0xFE2CE6E0); - P(C, D, A, B, 6, 15, 0xA3014314); - P(B, C, D, A, 13, 21, 0x4E0811A1); - P(A, B, C, D, 4, 6, 0xF7537E82); - P(D, A, B, C, 11, 10, 0xBD3AF235); - P(C, D, A, B, 2, 15, 0x2AD7D2BB); - P(B, C, D, A, 9, 21, 0xEB86D391); -#undef F - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; -} -void CRYPT_MD5Start(void* context) { - struct md5_context* ctx = (struct md5_context*)context; - ctx->total[0] = 0; - ctx->total[1] = 0; - ctx->state[0] = 0x67452301; - ctx->state[1] = 0xEFCDAB89; - ctx->state[2] = 0x98BADCFE; - ctx->state[3] = 0x10325476; -} -void CRYPT_MD5Update(void* pctx, const uint8_t* input, FX_DWORD length) { - struct md5_context* ctx = (struct md5_context*)pctx; - FX_DWORD left, fill; - if (!length) { - return; - } - left = (ctx->total[0] >> 3) & 0x3F; - fill = 64 - left; - ctx->total[0] += length << 3; - ctx->total[1] += length >> 29; - ctx->total[0] &= 0xFFFFFFFF; - ctx->total[1] += ctx->total[0] < length << 3; - if (left && length >= fill) { - FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill); - md5_process(ctx, ctx->buffer); - length -= fill; - input += fill; - left = 0; - } - while (length >= 64) { - md5_process(ctx, input); - length -= 64; - input += 64; - } - if (length) { - FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); - } -} -const uint8_t md5_padding[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -void CRYPT_MD5Finish(void* pctx, uint8_t digest[16]) { - struct md5_context* ctx = (struct md5_context*)pctx; - FX_DWORD last, padn; - uint8_t msglen[8]; - PUT_FX_DWORD(ctx->total[0], msglen, 0); - PUT_FX_DWORD(ctx->total[1], msglen, 4); - last = (ctx->total[0] >> 3) & 0x3F; - padn = (last < 56) ? (56 - last) : (120 - last); - CRYPT_MD5Update(ctx, md5_padding, padn); - CRYPT_MD5Update(ctx, msglen, 8); - PUT_FX_DWORD(ctx->state[0], digest, 0); - PUT_FX_DWORD(ctx->state[1], digest, 4); - PUT_FX_DWORD(ctx->state[2], digest, 8); - PUT_FX_DWORD(ctx->state[3], digest, 12); -} -void CRYPT_MD5Generate(const uint8_t* input, - FX_DWORD length, - uint8_t digest[16]) { - md5_context ctx; - CRYPT_MD5Start(&ctx); - CRYPT_MD5Update(&ctx, input, length); - CRYPT_MD5Finish(&ctx, digest); -} -static FX_BOOL (*g_PubKeyDecryptor)(const uint8_t* pData, - FX_DWORD size, - uint8_t* data_buf, - FX_DWORD& data_len) = NULL; -void CRYPT_SetPubKeyDecryptor(FX_BOOL (*func)(const uint8_t* pData, - FX_DWORD size, - uint8_t* data_buf, - FX_DWORD& data_len)) { - g_PubKeyDecryptor = func; -} -#ifdef __cplusplus -}; -#endif diff --git a/core/src/fdrm/crypto/fx_crypt_aes.cpp b/core/src/fdrm/crypto/fx_crypt_aes.cpp deleted file mode 100644 index d27783f820..0000000000 --- a/core/src/fdrm/crypto/fx_crypt_aes.cpp +++ /dev/null @@ -1,833 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fdrm/fx_crypt.h" - -#ifdef __cplusplus -extern "C" { -#endif -#define MAX_NR 14 -#define MAX_NK 8 -#define MAX_NB 8 -#define mulby2(x) (((x & 0x7F) << 1) ^ (x & 0x80 ? 0x1B : 0)) -#define GET_32BIT_MSB_FIRST(cp) \ - (((unsigned long)(unsigned char)(cp)[3]) | \ - ((unsigned long)(unsigned char)(cp)[2] << 8) | \ - ((unsigned long)(unsigned char)(cp)[1] << 16) | \ - ((unsigned long)(unsigned char)(cp)[0] << 24)) -#define PUT_32BIT_MSB_FIRST(cp, value) \ - do { \ - (cp)[3] = (value); \ - (cp)[2] = (value) >> 8; \ - (cp)[1] = (value) >> 16; \ - (cp)[0] = (value) >> 24; \ - } while (0) -struct AESContext { - unsigned int keysched[(MAX_NR + 1) * MAX_NB]; - unsigned int invkeysched[(MAX_NR + 1) * MAX_NB]; - void (*encrypt)(AESContext* ctx, unsigned int* block); - void (*decrypt)(AESContext* ctx, unsigned int* block); - unsigned int iv[MAX_NB]; - int Nb, Nr; -}; -static const unsigned char Sbox[256] = { - 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, - 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, - 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, - 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, - 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, - 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, - 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, - 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, - 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, - 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, - 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, - 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, - 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, - 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, - 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, - 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, - 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, - 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, - 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, - 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, - 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, - 0xb0, 0x54, 0xbb, 0x16}; -static const unsigned char Sboxinv[256] = { - 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, - 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, - 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, - 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, - 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, - 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, - 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, - 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, - 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, - 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, - 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, - 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, - 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, - 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, - 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, - 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, - 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, - 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, - 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, - 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, - 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, - 0x55, 0x21, 0x0c, 0x7d}; -static const unsigned int E0[256] = { - 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, - 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, - 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, - 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, - 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, - 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, - 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, - 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, - 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, - 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, - 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, - 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, - 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, - 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, - 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, - 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, - 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, - 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, - 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, - 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, - 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, - 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, - 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, - 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, - 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, - 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, - 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, - 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, - 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, - 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, - 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, - 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, - 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, - 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, - 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, - 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, - 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, - 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, - 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, - 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, - 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, - 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, - 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a, -}; -static const unsigned int E1[256] = { - 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, - 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, - 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, - 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, - 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, - 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, - 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, - 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, - 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, - 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, - 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, - 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, - 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, - 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, - 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, - 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, - 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, - 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, - 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, - 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, - 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, - 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, - 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, - 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, - 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, - 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, - 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, - 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, - 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, - 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, - 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, - 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, - 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, - 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, - 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, - 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, - 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, - 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, - 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, - 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, - 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, - 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, - 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616, -}; -static const unsigned int E2[256] = { - 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, - 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, - 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, - 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, - 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, - 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, - 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, - 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, - 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, - 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, - 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, - 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, - 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, - 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, - 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, - 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, - 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, - 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, - 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, - 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, - 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, - 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, - 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, - 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, - 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, - 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, - 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, - 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, - 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, - 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, - 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, - 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, - 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, - 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, - 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, - 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, - 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, - 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, - 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, - 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, - 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, - 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, - 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16, -}; -static const unsigned int E3[256] = { - 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, - 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, - 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, - 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, - 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, - 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, - 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, - 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, - 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, - 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, - 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, - 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, - 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, - 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, - 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, - 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, - 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, - 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, - 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, - 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, - 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, - 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, - 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, - 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, - 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, - 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, - 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, - 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, - 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, - 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, - 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, - 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, - 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, - 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, - 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, - 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, - 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, - 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, - 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, - 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, - 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, - 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, - 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c, -}; -static const unsigned int D0[256] = { - 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x3bab6bcb, 0x1f9d45f1, - 0xacfa58ab, 0x4be30393, 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, - 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, 0xdeb15a49, 0x25ba1b67, - 0x45ea0e98, 0x5dfec0e1, 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, - 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, 0xd4be832d, 0x587421d3, - 0x49e06929, 0x8ec9c844, 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, - 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, 0x63df4a18, 0xe51a3182, - 0x97513360, 0x62537f45, 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, - 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, 0xab73d323, 0x724b02e2, - 0xe31f8f57, 0x6655ab2a, 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, - 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, 0x8acf1c2b, 0xa779b492, - 0xf307f2f0, 0x4e69e2a1, 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, - 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, 0x0b83ec39, 0x4060efaa, - 0x5e719f06, 0xbd6e1051, 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, - 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, 0x1998fb24, 0xd6bde997, - 0x894043cc, 0x67d99e77, 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, - 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, 0x09808683, 0x322bed48, - 0x1e1170ac, 0x6c5a724e, 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, - 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, 0x0c0a67b1, 0x9357e70f, - 0xb4ee96d2, 0x1b9b919e, 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, - 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, 0x0e090d0b, 0xf28bc7ad, - 0x2db6a8b9, 0x141ea9c8, 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, - 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, 0x8b432976, 0xcb23c6dc, - 0xb6edfc68, 0xb8e4f163, 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, - 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, 0x1d9e2f4b, 0xdcb230f3, - 0x0d8652ec, 0x77c1e3d0, 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, - 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, 0x87494ec7, 0xd938d1c1, - 0x8ccaa2fe, 0x98d40b36, 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, - 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, 0xf68d13c2, 0x90d8b8e8, - 0x2e39f75e, 0x82c3aff5, 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, - 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, 0xcd267809, 0x6e5918f4, - 0xec9ab701, 0x834f9aa8, 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, - 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, 0x31a4b2af, 0x2a3f2331, - 0xc6a59430, 0x35a266c0, 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, - 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, 0x764dd68d, 0x43efb04d, - 0xccaa4d54, 0xe49604df, 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, - 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, 0xb3671d5a, 0x92dbd252, - 0xe9105633, 0x6dd64713, 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, - 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, 0x9cd2df59, 0x55f2733f, - 0x1814ce79, 0x73c737bf, 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, - 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, 0x161dc372, 0xbce2250c, - 0x283c498b, 0xff0d9541, 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, - 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742, -}; -static const unsigned int D1[256] = { - 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0xcb3bab6b, 0xf11f9d45, - 0xabacfa58, 0x934be303, 0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, - 0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, 0x49deb15a, 0x6725ba1b, - 0x9845ea0e, 0xe15dfec0, 0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, - 0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, 0x2dd4be83, 0xd3587421, - 0x2949e069, 0x448ec9c8, 0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, - 0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, 0x1863df4a, 0x82e51a31, - 0x60975133, 0x4562537f, 0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, - 0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, 0x23ab73d3, 0xe2724b02, - 0x57e31f8f, 0x2a6655ab, 0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, - 0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, 0x2b8acf1c, 0x92a779b4, - 0xf0f307f2, 0xa14e69e2, 0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, - 0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, 0x390b83ec, 0xaa4060ef, - 0x065e719f, 0x51bd6e10, 0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, - 0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, 0x241998fb, 0x97d6bde9, - 0xcc894043, 0x7767d99e, 0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, - 0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, 0x83098086, 0x48322bed, - 0xac1e1170, 0x4e6c5a72, 0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, - 0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, 0xb10c0a67, 0x0f9357e7, - 0xd2b4ee96, 0x9e1b9b91, 0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, - 0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, 0x0b0e090d, 0xadf28bc7, - 0xb92db6a8, 0xc8141ea9, 0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, - 0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, 0x768b4329, 0xdccb23c6, - 0x68b6edfc, 0x63b8e4f1, 0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, - 0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, 0x4b1d9e2f, 0xf3dcb230, - 0xec0d8652, 0xd077c1e3, 0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, - 0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, 0xc787494e, 0xc1d938d1, - 0xfe8ccaa2, 0x3698d40b, 0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, - 0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, 0xc2f68d13, 0xe890d8b8, - 0x5e2e39f7, 0xf582c3af, 0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, - 0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, 0x09cd2678, 0xf46e5918, - 0x01ec9ab7, 0xa8834f9a, 0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, - 0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, 0xaf31a4b2, 0x312a3f23, - 0x30c6a594, 0xc035a266, 0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, - 0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, 0x8d764dd6, 0x4d43efb0, - 0x54ccaa4d, 0xdfe49604, 0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, - 0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, 0x5ab3671d, 0x5292dbd2, - 0x33e91056, 0x136dd647, 0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, - 0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, 0x599cd2df, 0x3f55f273, - 0x791814ce, 0xbf73c737, 0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, - 0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, 0x72161dc3, 0x0cbce225, - 0x8b283c49, 0x41ff0d95, 0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, - 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857, -}; -static const unsigned int D2[256] = { - 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0x6bcb3bab, 0x45f11f9d, - 0x58abacfa, 0x03934be3, 0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, - 0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, 0x5a49deb1, 0x1b6725ba, - 0x0e9845ea, 0xc0e15dfe, 0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, - 0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, 0x832dd4be, 0x21d35874, - 0x692949e0, 0xc8448ec9, 0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, - 0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, 0x4a1863df, 0x3182e51a, - 0x33609751, 0x7f456253, 0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, - 0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, 0xd323ab73, 0x02e2724b, - 0x8f57e31f, 0xab2a6655, 0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, - 0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, 0x1c2b8acf, 0xb492a779, - 0xf2f0f307, 0xe2a14e69, 0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, - 0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, 0xec390b83, 0xefaa4060, - 0x9f065e71, 0x1051bd6e, 0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, - 0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, 0xfb241998, 0xe997d6bd, - 0x43cc8940, 0x9e7767d9, 0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, - 0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, 0x86830980, 0xed48322b, - 0x70ac1e11, 0x724e6c5a, 0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, - 0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, 0x67b10c0a, 0xe70f9357, - 0x96d2b4ee, 0x919e1b9b, 0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, - 0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, 0x0d0b0e09, 0xc7adf28b, - 0xa8b92db6, 0xa9c8141e, 0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, - 0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, 0x29768b43, 0xc6dccb23, - 0xfc68b6ed, 0xf163b8e4, 0xdccad731, 0x85104263, 0x22401397, 0x112084c6, - 0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, 0x2f4b1d9e, 0x30f3dcb2, - 0x52ec0d86, 0xe3d077c1, 0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, - 0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, 0x4ec78749, 0xd1c1d938, - 0xa2fe8cca, 0x0b3698d4, 0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, - 0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, 0x13c2f68d, 0xb8e890d8, - 0xf75e2e39, 0xaff582c3, 0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, - 0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, 0x7809cd26, 0x18f46e59, - 0xb701ec9a, 0x9aa8834f, 0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, - 0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, 0xb2af31a4, 0x23312a3f, - 0x9430c6a5, 0x66c035a2, 0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, - 0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, 0xd68d764d, 0xb04d43ef, - 0x4d54ccaa, 0x04dfe496, 0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, - 0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, 0x1d5ab367, 0xd25292db, - 0x5633e910, 0x47136dd6, 0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, - 0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, 0xdf599cd2, 0x733f55f2, - 0xce791814, 0x37bf73c7, 0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, - 0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, 0xc372161d, 0x250cbce2, - 0x498b283c, 0x9541ff0d, 0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, - 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8, -}; -static const unsigned int D3[256] = { - 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xab6bcb3b, 0x9d45f11f, - 0xfa58abac, 0xe303934b, 0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, - 0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, 0xb15a49de, 0xba1b6725, - 0xea0e9845, 0xfec0e15d, 0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, - 0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, 0xbe832dd4, 0x7421d358, - 0xe0692949, 0xc9c8448e, 0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, - 0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, 0xdf4a1863, 0x1a3182e5, - 0x51336097, 0x537f4562, 0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, - 0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, 0x73d323ab, 0x4b02e272, - 0x1f8f57e3, 0x55ab2a66, 0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, - 0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, 0xcf1c2b8a, 0x79b492a7, - 0x07f2f0f3, 0x69e2a14e, 0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, - 0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, 0x83ec390b, 0x60efaa40, - 0x719f065e, 0x6e1051bd, 0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, - 0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, 0x98fb2419, 0xbde997d6, - 0x4043cc89, 0xd99e7767, 0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, - 0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, 0x80868309, 0x2bed4832, - 0x1170ac1e, 0x5a724e6c, 0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, - 0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, 0x0a67b10c, 0x57e70f93, - 0xee96d2b4, 0x9b919e1b, 0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, - 0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, 0x090d0b0e, 0x8bc7adf2, - 0xb6a8b92d, 0x1ea9c814, 0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, - 0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, 0x4329768b, 0x23c6dccb, - 0xedfc68b6, 0xe4f163b8, 0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, - 0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, 0x9e2f4b1d, 0xb230f3dc, - 0x8652ec0d, 0xc1e3d077, 0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, - 0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, 0x494ec787, 0x38d1c1d9, - 0xcaa2fe8c, 0xd40b3698, 0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, - 0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, 0x8d13c2f6, 0xd8b8e890, - 0x39f75e2e, 0xc3aff582, 0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, - 0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, 0x267809cd, 0x5918f46e, - 0x9ab701ec, 0x4f9aa883, 0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, - 0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, 0xa4b2af31, 0x3f23312a, - 0xa59430c6, 0xa266c035, 0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, - 0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, 0x4dd68d76, 0xefb04d43, - 0xaa4d54cc, 0x9604dfe4, 0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, - 0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, 0x671d5ab3, 0xdbd25292, - 0x105633e9, 0xd647136d, 0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, - 0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, 0xd2df599c, 0xf2733f55, - 0x14ce7918, 0xc737bf73, 0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, - 0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, 0x1dc37216, 0xe2250cbc, - 0x3c498b28, 0x0d9541ff, 0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, - 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0, -}; -#define ADD_ROUND_KEY_4 \ - (block[0] ^= *keysched++, block[1] ^= *keysched++, block[2] ^= *keysched++, \ - block[3] ^= *keysched++) -#define ADD_ROUND_KEY_6 \ - (block[0] ^= *keysched++, block[1] ^= *keysched++, block[2] ^= *keysched++, \ - block[3] ^= *keysched++, block[4] ^= *keysched++, block[5] ^= *keysched++) -#define ADD_ROUND_KEY_8 \ - (block[0] ^= *keysched++, block[1] ^= *keysched++, block[2] ^= *keysched++, \ - block[3] ^= *keysched++, block[4] ^= *keysched++, block[5] ^= *keysched++, \ - block[6] ^= *keysched++, block[7] ^= *keysched++) -#define MOVEWORD(i) (block[i] = newstate[i]) -#undef MAKEWORD -#define MAKEWORD(i) \ - (newstate[i] = (E0[(block[i] >> 24) & 0xFF] ^ \ - E1[(block[(i + C1) % Nb] >> 16) & 0xFF] ^ \ - E2[(block[(i + C2) % Nb] >> 8) & 0xFF] ^ \ - E3[block[(i + C3) % Nb] & 0xFF])) -#define LASTWORD(i) \ - (newstate[i] = (Sbox[(block[i] >> 24) & 0xFF] << 24) | \ - (Sbox[(block[(i + C1) % Nb] >> 16) & 0xFF] << 16) | \ - (Sbox[(block[(i + C2) % Nb] >> 8) & 0xFF] << 8) | \ - (Sbox[(block[(i + C3) % Nb]) & 0xFF])) -static void aes_encrypt_nb_4(AESContext* ctx, unsigned int* block) { - int i; - static const int C1 = 1, C2 = 2, C3 = 3, Nb = 4; - unsigned int* keysched = ctx->keysched; - unsigned int newstate[4]; - for (i = 0; i < ctx->Nr - 1; i++) { - ADD_ROUND_KEY_4; - MAKEWORD(0); - MAKEWORD(1); - MAKEWORD(2); - MAKEWORD(3); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - } - ADD_ROUND_KEY_4; - LASTWORD(0); - LASTWORD(1); - LASTWORD(2); - LASTWORD(3); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - ADD_ROUND_KEY_4; -} -static void aes_encrypt_nb_6(AESContext* ctx, unsigned int* block) { - int i; - static const int C1 = 1, C2 = 2, C3 = 3, Nb = 6; - unsigned int* keysched = ctx->keysched; - unsigned int newstate[6]; - for (i = 0; i < ctx->Nr - 1; i++) { - ADD_ROUND_KEY_6; - MAKEWORD(0); - MAKEWORD(1); - MAKEWORD(2); - MAKEWORD(3); - MAKEWORD(4); - MAKEWORD(5); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - } - ADD_ROUND_KEY_6; - LASTWORD(0); - LASTWORD(1); - LASTWORD(2); - LASTWORD(3); - LASTWORD(4); - LASTWORD(5); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - ADD_ROUND_KEY_6; -} -static void aes_encrypt_nb_8(AESContext* ctx, unsigned int* block) { - int i; - static const int C1 = 1, C2 = 3, C3 = 4, Nb = 8; - unsigned int* keysched = ctx->keysched; - unsigned int newstate[8]; - for (i = 0; i < ctx->Nr - 1; i++) { - ADD_ROUND_KEY_8; - MAKEWORD(0); - MAKEWORD(1); - MAKEWORD(2); - MAKEWORD(3); - MAKEWORD(4); - MAKEWORD(5); - MAKEWORD(6); - MAKEWORD(7); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - MOVEWORD(6); - MOVEWORD(7); - } - ADD_ROUND_KEY_8; - LASTWORD(0); - LASTWORD(1); - LASTWORD(2); - LASTWORD(3); - LASTWORD(4); - LASTWORD(5); - LASTWORD(6); - LASTWORD(7); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - MOVEWORD(6); - MOVEWORD(7); - ADD_ROUND_KEY_8; -} -#undef MAKEWORD -#undef LASTWORD -#define MAKEWORD(i) \ - (newstate[i] = (D0[(block[i] >> 24) & 0xFF] ^ \ - D1[(block[(i + C1) % Nb] >> 16) & 0xFF] ^ \ - D2[(block[(i + C2) % Nb] >> 8) & 0xFF] ^ \ - D3[block[(i + C3) % Nb] & 0xFF])) -#define LASTWORD(i) \ - (newstate[i] = (Sboxinv[(block[i] >> 24) & 0xFF] << 24) | \ - (Sboxinv[(block[(i + C1) % Nb] >> 16) & 0xFF] << 16) | \ - (Sboxinv[(block[(i + C2) % Nb] >> 8) & 0xFF] << 8) | \ - (Sboxinv[(block[(i + C3) % Nb]) & 0xFF])) -static void aes_decrypt_nb_4(AESContext* ctx, unsigned int* block) { - int i; - static const int C1 = 4 - 1, C2 = 4 - 2, C3 = 4 - 3, Nb = 4; - unsigned int* keysched = ctx->invkeysched; - unsigned int newstate[4]; - for (i = 0; i < ctx->Nr - 1; i++) { - ADD_ROUND_KEY_4; - MAKEWORD(0); - MAKEWORD(1); - MAKEWORD(2); - MAKEWORD(3); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - } - ADD_ROUND_KEY_4; - LASTWORD(0); - LASTWORD(1); - LASTWORD(2); - LASTWORD(3); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - ADD_ROUND_KEY_4; -} -static void aes_decrypt_nb_6(AESContext* ctx, unsigned int* block) { - int i; - static const int C1 = 6 - 1, C2 = 6 - 2, C3 = 6 - 3, Nb = 6; - unsigned int* keysched = ctx->invkeysched; - unsigned int newstate[6]; - for (i = 0; i < ctx->Nr - 1; i++) { - ADD_ROUND_KEY_6; - MAKEWORD(0); - MAKEWORD(1); - MAKEWORD(2); - MAKEWORD(3); - MAKEWORD(4); - MAKEWORD(5); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - } - ADD_ROUND_KEY_6; - LASTWORD(0); - LASTWORD(1); - LASTWORD(2); - LASTWORD(3); - LASTWORD(4); - LASTWORD(5); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - ADD_ROUND_KEY_6; -} -static void aes_decrypt_nb_8(AESContext* ctx, unsigned int* block) { - int i; - static const int C1 = 8 - 1, C2 = 8 - 3, C3 = 8 - 4, Nb = 8; - unsigned int* keysched = ctx->invkeysched; - unsigned int newstate[8]; - for (i = 0; i < ctx->Nr - 1; i++) { - ADD_ROUND_KEY_8; - MAKEWORD(0); - MAKEWORD(1); - MAKEWORD(2); - MAKEWORD(3); - MAKEWORD(4); - MAKEWORD(5); - MAKEWORD(6); - MAKEWORD(7); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - MOVEWORD(6); - MOVEWORD(7); - } - ADD_ROUND_KEY_8; - LASTWORD(0); - LASTWORD(1); - LASTWORD(2); - LASTWORD(3); - LASTWORD(4); - LASTWORD(5); - LASTWORD(6); - LASTWORD(7); - MOVEWORD(0); - MOVEWORD(1); - MOVEWORD(2); - MOVEWORD(3); - MOVEWORD(4); - MOVEWORD(5); - MOVEWORD(6); - MOVEWORD(7); - ADD_ROUND_KEY_8; -} -#undef MAKEWORD -#undef LASTWORD -static void aes_setup(AESContext* ctx, - int blocklen, - const unsigned char* key, - int keylen) { - int i, j, Nk, rconst; - ASSERT(blocklen == 16 || blocklen == 24 || blocklen == 32); - ASSERT(keylen == 16 || keylen == 24 || keylen == 32); - Nk = keylen / 4; - ctx->Nb = blocklen / 4; - ctx->Nr = 6 + (ctx->Nb > Nk ? ctx->Nb : Nk); - if (ctx->Nb == 8) { - ctx->encrypt = aes_encrypt_nb_8, ctx->decrypt = aes_decrypt_nb_8; - } else if (ctx->Nb == 6) { - ctx->encrypt = aes_encrypt_nb_6, ctx->decrypt = aes_decrypt_nb_6; - } else if (ctx->Nb == 4) { - ctx->encrypt = aes_encrypt_nb_4, ctx->decrypt = aes_decrypt_nb_4; - } - rconst = 1; - for (i = 0; i < (ctx->Nr + 1) * ctx->Nb; i++) { - if (i < Nk) { - ctx->keysched[i] = GET_32BIT_MSB_FIRST(key + 4 * i); - } else { - unsigned int temp = ctx->keysched[i - 1]; - if (i % Nk == 0) { - int a, b, c, d; - a = (temp >> 16) & 0xFF; - b = (temp >> 8) & 0xFF; - c = (temp >> 0) & 0xFF; - d = (temp >> 24) & 0xFF; - temp = Sbox[a] ^ rconst; - temp = (temp << 8) | Sbox[b]; - temp = (temp << 8) | Sbox[c]; - temp = (temp << 8) | Sbox[d]; - rconst = mulby2(rconst); - } else if (i % Nk == 4 && Nk > 6) { - int a, b, c, d; - a = (temp >> 24) & 0xFF; - b = (temp >> 16) & 0xFF; - c = (temp >> 8) & 0xFF; - d = (temp >> 0) & 0xFF; - temp = Sbox[a]; - temp = (temp << 8) | Sbox[b]; - temp = (temp << 8) | Sbox[c]; - temp = (temp << 8) | Sbox[d]; - } - ctx->keysched[i] = ctx->keysched[i - Nk] ^ temp; - } - } - for (i = 0; i <= ctx->Nr; i++) { - for (j = 0; j < ctx->Nb; j++) { - unsigned int temp; - temp = ctx->keysched[(ctx->Nr - i) * ctx->Nb + j]; - if (i != 0 && i != ctx->Nr) { - int a, b, c, d; - a = (temp >> 24) & 0xFF; - b = (temp >> 16) & 0xFF; - c = (temp >> 8) & 0xFF; - d = (temp >> 0) & 0xFF; - temp = D0[Sbox[a]]; - temp ^= D1[Sbox[b]]; - temp ^= D2[Sbox[c]]; - temp ^= D3[Sbox[d]]; - } - ctx->invkeysched[i * ctx->Nb + j] = temp; - } - } -} -static void aes_decrypt(AESContext* ctx, unsigned int* block) { - ctx->decrypt(ctx, block); -} -static void aes_decrypt_cbc(unsigned char* dest, - const unsigned char* src, - int len, - AESContext* ctx) { - unsigned int iv[4], x[4], ct[4]; - int i; - ASSERT((len & 15) == 0); - FXSYS_memcpy(iv, ctx->iv, sizeof(iv)); - while (len > 0) { - for (i = 0; i < 4; i++) { - x[i] = ct[i] = GET_32BIT_MSB_FIRST(src + 4 * i); - } - aes_decrypt(ctx, x); - for (i = 0; i < 4; i++) { - PUT_32BIT_MSB_FIRST(dest + 4 * i, iv[i] ^ x[i]); - iv[i] = ct[i]; - } - dest += 16; - src += 16; - len -= 16; - } - FXSYS_memcpy(ctx->iv, iv, sizeof(iv)); -} -static void aes_encrypt(AESContext* ctx, unsigned int* block) { - ctx->encrypt(ctx, block); -} -static void aes_encrypt_cbc(unsigned char* dest, - const unsigned char* src, - int len, - AESContext* ctx) { - unsigned int iv[4]; - int i; - ASSERT((len & 15) == 0); - FXSYS_memcpy(iv, ctx->iv, sizeof(iv)); - while (len > 0) { - for (i = 0; i < 4; i++) { - iv[i] ^= GET_32BIT_MSB_FIRST(src + 4 * i); - } - aes_encrypt(ctx, iv); - for (i = 0; i < 4; i++) { - PUT_32BIT_MSB_FIRST(dest + 4 * i, iv[i]); - } - dest += 16; - src += 16; - len -= 16; - } - FXSYS_memcpy(ctx->iv, iv, sizeof(iv)); -} -void CRYPT_AESSetKey(void* context, - FX_DWORD blocklen, - const uint8_t* key, - FX_DWORD keylen, - FX_BOOL bEncrypt) { - aes_setup((AESContext*)context, blocklen, key, keylen); -} -void CRYPT_AESSetIV(void* context, const uint8_t* iv) { - int i; - for (i = 0; i < ((AESContext*)context)->Nb; i++) { - ((AESContext*)context)->iv[i] = GET_32BIT_MSB_FIRST(iv + 4 * i); - } -} -void CRYPT_AESDecrypt(void* context, - uint8_t* dest, - const uint8_t* src, - FX_DWORD len) { - aes_decrypt_cbc(dest, src, len, (AESContext*)context); -} -void CRYPT_AESEncrypt(void* context, - uint8_t* dest, - const uint8_t* src, - FX_DWORD len) { - aes_encrypt_cbc(dest, src, len, (AESContext*)context); -} -#ifdef __cplusplus -}; -#endif diff --git a/core/src/fdrm/crypto/fx_crypt_sha.cpp b/core/src/fdrm/crypto/fx_crypt_sha.cpp deleted file mode 100644 index c7d171098b..0000000000 --- a/core/src/fdrm/crypto/fx_crypt_sha.cpp +++ /dev/null @@ -1,657 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fdrm/fx_crypt.h" - -#ifdef __cplusplus -extern "C" { -#endif -typedef struct { - unsigned int h[5]; - unsigned char block[64]; - int blkused; - unsigned int lenhi, lenlo; -} SHA_State; -#define rol(x, y) (((x) << (y)) | (((unsigned int)x) >> (32 - y))) -static void SHA_Core_Init(unsigned int h[5]) { - h[0] = 0x67452301; - h[1] = 0xefcdab89; - h[2] = 0x98badcfe; - h[3] = 0x10325476; - h[4] = 0xc3d2e1f0; -} -static void SHATransform(unsigned int* digest, unsigned int* block) { - unsigned int w[80]; - unsigned int a, b, c, d, e; - int t; - for (t = 0; t < 16; t++) { - w[t] = block[t]; - } - for (t = 16; t < 80; t++) { - unsigned int tmp = w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]; - w[t] = rol(tmp, 1); - } - a = digest[0]; - b = digest[1]; - c = digest[2]; - d = digest[3]; - e = digest[4]; - for (t = 0; t < 20; t++) { - unsigned int tmp = rol(a, 5) + ((b & c) | (d & ~b)) + e + w[t] + 0x5a827999; - e = d; - d = c; - c = rol(b, 30); - b = a; - a = tmp; - } - for (t = 20; t < 40; t++) { - unsigned int tmp = rol(a, 5) + (b ^ c ^ d) + e + w[t] + 0x6ed9eba1; - e = d; - d = c; - c = rol(b, 30); - b = a; - a = tmp; - } - for (t = 40; t < 60; t++) { - unsigned int tmp = - rol(a, 5) + ((b & c) | (b & d) | (c & d)) + e + w[t] + 0x8f1bbcdc; - e = d; - d = c; - c = rol(b, 30); - b = a; - a = tmp; - } - for (t = 60; t < 80; t++) { - unsigned int tmp = rol(a, 5) + (b ^ c ^ d) + e + w[t] + 0xca62c1d6; - e = d; - d = c; - c = rol(b, 30); - b = a; - a = tmp; - } - digest[0] += a; - digest[1] += b; - digest[2] += c; - digest[3] += d; - digest[4] += e; -} -void CRYPT_SHA1Start(void* context) { - SHA_State* s = (SHA_State*)context; - SHA_Core_Init(s->h); - s->blkused = 0; - s->lenhi = s->lenlo = 0; -} -void CRYPT_SHA1Update(void* context, const uint8_t* data, FX_DWORD size) { - SHA_State* s = (SHA_State*)context; - unsigned char* q = (unsigned char*)data; - unsigned int wordblock[16]; - int len = size; - unsigned int lenw = len; - int i; - s->lenlo += lenw; - s->lenhi += (s->lenlo < lenw); - if (s->blkused && s->blkused + len < 64) { - FXSYS_memcpy(s->block + s->blkused, q, len); - s->blkused += len; - } else { - while (s->blkused + len >= 64) { - FXSYS_memcpy(s->block + s->blkused, q, 64 - s->blkused); - q += 64 - s->blkused; - len -= 64 - s->blkused; - for (i = 0; i < 16; i++) { - wordblock[i] = (((unsigned int)s->block[i * 4 + 0]) << 24) | - (((unsigned int)s->block[i * 4 + 1]) << 16) | - (((unsigned int)s->block[i * 4 + 2]) << 8) | - (((unsigned int)s->block[i * 4 + 3]) << 0); - } - SHATransform(s->h, wordblock); - s->blkused = 0; - } - FXSYS_memcpy(s->block, q, len); - s->blkused = len; - } -} -void CRYPT_SHA1Finish(void* context, uint8_t digest[20]) { - SHA_State* s = (SHA_State*)context; - int i; - int pad; - unsigned char c[64]; - unsigned int lenhi, lenlo; - if (s->blkused >= 56) { - pad = 56 + 64 - s->blkused; - } else { - pad = 56 - s->blkused; - } - lenhi = (s->lenhi << 3) | (s->lenlo >> (32 - 3)); - lenlo = (s->lenlo << 3); - FXSYS_memset(c, 0, pad); - c[0] = 0x80; - CRYPT_SHA1Update(s, c, pad); - c[0] = (lenhi >> 24) & 0xFF; - c[1] = (lenhi >> 16) & 0xFF; - c[2] = (lenhi >> 8) & 0xFF; - c[3] = (lenhi >> 0) & 0xFF; - c[4] = (lenlo >> 24) & 0xFF; - c[5] = (lenlo >> 16) & 0xFF; - c[6] = (lenlo >> 8) & 0xFF; - c[7] = (lenlo >> 0) & 0xFF; - CRYPT_SHA1Update(s, c, 8); - for (i = 0; i < 5; i++) { - digest[i * 4] = (s->h[i] >> 24) & 0xFF; - digest[i * 4 + 1] = (s->h[i] >> 16) & 0xFF; - digest[i * 4 + 2] = (s->h[i] >> 8) & 0xFF; - digest[i * 4 + 3] = (s->h[i]) & 0xFF; - } -} -void CRYPT_SHA1Generate(const uint8_t* data, - FX_DWORD size, - uint8_t digest[20]) { - SHA_State s; - CRYPT_SHA1Start(&s); - CRYPT_SHA1Update(&s, data, size); - CRYPT_SHA1Finish(&s, digest); -} -typedef struct { - FX_DWORD total[2]; - FX_DWORD state[8]; - uint8_t buffer[64]; -} sha256_context; -#define GET_FX_DWORD(n, b, i) \ - { \ - (n) = ((FX_DWORD)(b)[(i)] << 24) | ((FX_DWORD)(b)[(i) + 1] << 16) | \ - ((FX_DWORD)(b)[(i) + 2] << 8) | ((FX_DWORD)(b)[(i) + 3]); \ - } -#define PUT_FX_DWORD(n, b, i) \ - { \ - (b)[(i)] = (uint8_t)((n) >> 24); \ - (b)[(i) + 1] = (uint8_t)((n) >> 16); \ - (b)[(i) + 2] = (uint8_t)((n) >> 8); \ - (b)[(i) + 3] = (uint8_t)((n)); \ - } -void CRYPT_SHA256Start(void* context) { - sha256_context* ctx = (sha256_context*)context; - ctx->total[0] = 0; - ctx->total[1] = 0; - ctx->state[0] = 0x6A09E667; - ctx->state[1] = 0xBB67AE85; - ctx->state[2] = 0x3C6EF372; - ctx->state[3] = 0xA54FF53A; - ctx->state[4] = 0x510E527F; - ctx->state[5] = 0x9B05688C; - ctx->state[6] = 0x1F83D9AB; - ctx->state[7] = 0x5BE0CD19; -} -static void sha256_process(sha256_context* ctx, const uint8_t data[64]) { - FX_DWORD temp1, temp2, W[64]; - FX_DWORD A, B, C, D, E, F, G, H; - GET_FX_DWORD(W[0], data, 0); - GET_FX_DWORD(W[1], data, 4); - GET_FX_DWORD(W[2], data, 8); - GET_FX_DWORD(W[3], data, 12); - GET_FX_DWORD(W[4], data, 16); - GET_FX_DWORD(W[5], data, 20); - GET_FX_DWORD(W[6], data, 24); - GET_FX_DWORD(W[7], data, 28); - GET_FX_DWORD(W[8], data, 32); - GET_FX_DWORD(W[9], data, 36); - GET_FX_DWORD(W[10], data, 40); - GET_FX_DWORD(W[11], data, 44); - GET_FX_DWORD(W[12], data, 48); - GET_FX_DWORD(W[13], data, 52); - GET_FX_DWORD(W[14], data, 56); - GET_FX_DWORD(W[15], data, 60); -#define SHR(x, n) ((x & 0xFFFFFFFF) >> n) -#define ROTR(x, n) (SHR(x, n) | (x << (32 - n))) -#define S0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3)) -#define S1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10)) -#define S2(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) -#define S3(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) -#define F0(x, y, z) ((x & y) | (z & (x | y))) -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define R(t) (W[t] = S1(W[t - 2]) + W[t - 7] + S0(W[t - 15]) + W[t - 16]) -#define P(a, b, c, d, e, f, g, h, x, K) \ - { \ - temp1 = h + S3(e) + F1(e, f, g) + K + x; \ - temp2 = S2(a) + F0(a, b, c); \ - d += temp1; \ - h = temp1 + temp2; \ - } - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - E = ctx->state[4]; - F = ctx->state[5]; - G = ctx->state[6]; - H = ctx->state[7]; - P(A, B, C, D, E, F, G, H, W[0], 0x428A2F98); - P(H, A, B, C, D, E, F, G, W[1], 0x71374491); - P(G, H, A, B, C, D, E, F, W[2], 0xB5C0FBCF); - P(F, G, H, A, B, C, D, E, W[3], 0xE9B5DBA5); - P(E, F, G, H, A, B, C, D, W[4], 0x3956C25B); - P(D, E, F, G, H, A, B, C, W[5], 0x59F111F1); - P(C, D, E, F, G, H, A, B, W[6], 0x923F82A4); - P(B, C, D, E, F, G, H, A, W[7], 0xAB1C5ED5); - P(A, B, C, D, E, F, G, H, W[8], 0xD807AA98); - P(H, A, B, C, D, E, F, G, W[9], 0x12835B01); - P(G, H, A, B, C, D, E, F, W[10], 0x243185BE); - P(F, G, H, A, B, C, D, E, W[11], 0x550C7DC3); - P(E, F, G, H, A, B, C, D, W[12], 0x72BE5D74); - P(D, E, F, G, H, A, B, C, W[13], 0x80DEB1FE); - P(C, D, E, F, G, H, A, B, W[14], 0x9BDC06A7); - P(B, C, D, E, F, G, H, A, W[15], 0xC19BF174); - P(A, B, C, D, E, F, G, H, R(16), 0xE49B69C1); - P(H, A, B, C, D, E, F, G, R(17), 0xEFBE4786); - P(G, H, A, B, C, D, E, F, R(18), 0x0FC19DC6); - P(F, G, H, A, B, C, D, E, R(19), 0x240CA1CC); - P(E, F, G, H, A, B, C, D, R(20), 0x2DE92C6F); - P(D, E, F, G, H, A, B, C, R(21), 0x4A7484AA); - P(C, D, E, F, G, H, A, B, R(22), 0x5CB0A9DC); - P(B, C, D, E, F, G, H, A, R(23), 0x76F988DA); - P(A, B, C, D, E, F, G, H, R(24), 0x983E5152); - P(H, A, B, C, D, E, F, G, R(25), 0xA831C66D); - P(G, H, A, B, C, D, E, F, R(26), 0xB00327C8); - P(F, G, H, A, B, C, D, E, R(27), 0xBF597FC7); - P(E, F, G, H, A, B, C, D, R(28), 0xC6E00BF3); - P(D, E, F, G, H, A, B, C, R(29), 0xD5A79147); - P(C, D, E, F, G, H, A, B, R(30), 0x06CA6351); - P(B, C, D, E, F, G, H, A, R(31), 0x14292967); - P(A, B, C, D, E, F, G, H, R(32), 0x27B70A85); - P(H, A, B, C, D, E, F, G, R(33), 0x2E1B2138); - P(G, H, A, B, C, D, E, F, R(34), 0x4D2C6DFC); - P(F, G, H, A, B, C, D, E, R(35), 0x53380D13); - P(E, F, G, H, A, B, C, D, R(36), 0x650A7354); - P(D, E, F, G, H, A, B, C, R(37), 0x766A0ABB); - P(C, D, E, F, G, H, A, B, R(38), 0x81C2C92E); - P(B, C, D, E, F, G, H, A, R(39), 0x92722C85); - P(A, B, C, D, E, F, G, H, R(40), 0xA2BFE8A1); - P(H, A, B, C, D, E, F, G, R(41), 0xA81A664B); - P(G, H, A, B, C, D, E, F, R(42), 0xC24B8B70); - P(F, G, H, A, B, C, D, E, R(43), 0xC76C51A3); - P(E, F, G, H, A, B, C, D, R(44), 0xD192E819); - P(D, E, F, G, H, A, B, C, R(45), 0xD6990624); - P(C, D, E, F, G, H, A, B, R(46), 0xF40E3585); - P(B, C, D, E, F, G, H, A, R(47), 0x106AA070); - P(A, B, C, D, E, F, G, H, R(48), 0x19A4C116); - P(H, A, B, C, D, E, F, G, R(49), 0x1E376C08); - P(G, H, A, B, C, D, E, F, R(50), 0x2748774C); - P(F, G, H, A, B, C, D, E, R(51), 0x34B0BCB5); - P(E, F, G, H, A, B, C, D, R(52), 0x391C0CB3); - P(D, E, F, G, H, A, B, C, R(53), 0x4ED8AA4A); - P(C, D, E, F, G, H, A, B, R(54), 0x5B9CCA4F); - P(B, C, D, E, F, G, H, A, R(55), 0x682E6FF3); - P(A, B, C, D, E, F, G, H, R(56), 0x748F82EE); - P(H, A, B, C, D, E, F, G, R(57), 0x78A5636F); - P(G, H, A, B, C, D, E, F, R(58), 0x84C87814); - P(F, G, H, A, B, C, D, E, R(59), 0x8CC70208); - P(E, F, G, H, A, B, C, D, R(60), 0x90BEFFFA); - P(D, E, F, G, H, A, B, C, R(61), 0xA4506CEB); - P(C, D, E, F, G, H, A, B, R(62), 0xBEF9A3F7); - P(B, C, D, E, F, G, H, A, R(63), 0xC67178F2); - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; - ctx->state[4] += E; - ctx->state[5] += F; - ctx->state[6] += G; - ctx->state[7] += H; -} -void CRYPT_SHA256Update(void* context, const uint8_t* input, FX_DWORD length) { - sha256_context* ctx = (sha256_context*)context; - FX_DWORD left, fill; - if (!length) { - return; - } - left = ctx->total[0] & 0x3F; - fill = 64 - left; - ctx->total[0] += length; - ctx->total[0] &= 0xFFFFFFFF; - if (ctx->total[0] < length) { - ctx->total[1]++; - } - if (left && length >= fill) { - FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill); - sha256_process(ctx, ctx->buffer); - length -= fill; - input += fill; - left = 0; - } - while (length >= 64) { - sha256_process(ctx, input); - length -= 64; - input += 64; - } - if (length) { - FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); - } -} -static const uint8_t sha256_padding[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -void CRYPT_SHA256Finish(void* context, uint8_t digest[32]) { - sha256_context* ctx = (sha256_context*)context; - FX_DWORD last, padn; - FX_DWORD high, low; - uint8_t msglen[8]; - high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); - low = (ctx->total[0] << 3); - PUT_FX_DWORD(high, msglen, 0); - PUT_FX_DWORD(low, msglen, 4); - last = ctx->total[0] & 0x3F; - padn = (last < 56) ? (56 - last) : (120 - last); - CRYPT_SHA256Update(ctx, sha256_padding, padn); - CRYPT_SHA256Update(ctx, msglen, 8); - PUT_FX_DWORD(ctx->state[0], digest, 0); - PUT_FX_DWORD(ctx->state[1], digest, 4); - PUT_FX_DWORD(ctx->state[2], digest, 8); - PUT_FX_DWORD(ctx->state[3], digest, 12); - PUT_FX_DWORD(ctx->state[4], digest, 16); - PUT_FX_DWORD(ctx->state[5], digest, 20); - PUT_FX_DWORD(ctx->state[6], digest, 24); - PUT_FX_DWORD(ctx->state[7], digest, 28); -} -void CRYPT_SHA256Generate(const uint8_t* data, - FX_DWORD size, - uint8_t digest[32]) { - sha256_context ctx; - CRYPT_SHA256Start(&ctx); - CRYPT_SHA256Update(&ctx, data, size); - CRYPT_SHA256Finish(&ctx, digest); -} -typedef struct { - uint64_t total[2]; - uint64_t state[8]; - uint8_t buffer[128]; -} sha384_context; -uint64_t FX_ato64i(const FX_CHAR* str) { - FXSYS_assert(str); - uint64_t ret = 0; - int len = (int)FXSYS_strlen(str); - len = len > 16 ? 16 : len; - for (int i = 0; i < len; ++i) { - if (i) { - ret <<= 4; - } - if (str[i] >= '0' && str[i] <= '9') { - ret |= (str[i] - '0') & 0xFF; - } else if (str[i] >= 'a' && str[i] <= 'f') { - ret |= (str[i] - 'a' + 10) & 0xFF; - } else if (str[i] >= 'A' && str[i] <= 'F') { - ret |= (str[i] - 'A' + 10) & 0xFF; - } else { - FXSYS_assert(FALSE); - } - } - return ret; -} -void CRYPT_SHA384Start(void* context) { - if (!context) { - return; - } - sha384_context* ctx = (sha384_context*)context; - FXSYS_memset(ctx, 0, sizeof(sha384_context)); - ctx->state[0] = FX_ato64i("cbbb9d5dc1059ed8"); - ctx->state[1] = FX_ato64i("629a292a367cd507"); - ctx->state[2] = FX_ato64i("9159015a3070dd17"); - ctx->state[3] = FX_ato64i("152fecd8f70e5939"); - ctx->state[4] = FX_ato64i("67332667ffc00b31"); - ctx->state[5] = FX_ato64i("8eb44a8768581511"); - ctx->state[6] = FX_ato64i("db0c2e0d64f98fa7"); - ctx->state[7] = FX_ato64i("47b5481dbefa4fa4"); -} -#define SHA384_F0(x, y, z) ((x & y) | (z & (x | y))) -#define SHA384_F1(x, y, z) (z ^ (x & (y ^ z))) -#define SHA384_SHR(x, n) (x >> n) -#define SHA384_ROTR(x, n) (SHA384_SHR(x, n) | x << (64 - n)) -#define SHA384_S0(x) (SHA384_ROTR(x, 1) ^ SHA384_ROTR(x, 8) ^ SHA384_SHR(x, 7)) -#define SHA384_S1(x) \ - (SHA384_ROTR(x, 19) ^ SHA384_ROTR(x, 61) ^ SHA384_SHR(x, 6)) -#define SHA384_S2(x) \ - (SHA384_ROTR(x, 28) ^ SHA384_ROTR(x, 34) ^ SHA384_ROTR(x, 39)) -#define SHA384_S3(x) \ - (SHA384_ROTR(x, 14) ^ SHA384_ROTR(x, 18) ^ SHA384_ROTR(x, 41)) -#define SHA384_P(a, b, c, d, e, f, g, h, x, K) \ - { \ - temp1 = h + SHA384_S3(e) + SHA384_F1(e, f, g) + K + x; \ - temp2 = SHA384_S2(a) + SHA384_F0(a, b, c); \ - d += temp1; \ - h = temp1 + temp2; \ - } -static const uint8_t sha384_padding[128] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; -#define SHA384_R(t) \ - (W[t] = SHA384_S1(W[t - 2]) + W[t - 7] + SHA384_S0(W[t - 15]) + W[t - 16]) -static const FX_CHAR* constants[] = { - "428a2f98d728ae22", "7137449123ef65cd", "b5c0fbcfec4d3b2f", - "e9b5dba58189dbbc", "3956c25bf348b538", "59f111f1b605d019", - "923f82a4af194f9b", "ab1c5ed5da6d8118", "d807aa98a3030242", - "12835b0145706fbe", "243185be4ee4b28c", "550c7dc3d5ffb4e2", - "72be5d74f27b896f", "80deb1fe3b1696b1", "9bdc06a725c71235", - "c19bf174cf692694", "e49b69c19ef14ad2", "efbe4786384f25e3", - "0fc19dc68b8cd5b5", "240ca1cc77ac9c65", "2de92c6f592b0275", - "4a7484aa6ea6e483", "5cb0a9dcbd41fbd4", "76f988da831153b5", - "983e5152ee66dfab", "a831c66d2db43210", "b00327c898fb213f", - "bf597fc7beef0ee4", "c6e00bf33da88fc2", "d5a79147930aa725", - "06ca6351e003826f", "142929670a0e6e70", "27b70a8546d22ffc", - "2e1b21385c26c926", "4d2c6dfc5ac42aed", "53380d139d95b3df", - "650a73548baf63de", "766a0abb3c77b2a8", "81c2c92e47edaee6", - "92722c851482353b", "a2bfe8a14cf10364", "a81a664bbc423001", - "c24b8b70d0f89791", "c76c51a30654be30", "d192e819d6ef5218", - "d69906245565a910", "f40e35855771202a", "106aa07032bbd1b8", - "19a4c116b8d2d0c8", "1e376c085141ab53", "2748774cdf8eeb99", - "34b0bcb5e19b48a8", "391c0cb3c5c95a63", "4ed8aa4ae3418acb", - "5b9cca4f7763e373", "682e6ff3d6b2b8a3", "748f82ee5defb2fc", - "78a5636f43172f60", "84c87814a1f0ab72", "8cc702081a6439ec", - "90befffa23631e28", "a4506cebde82bde9", "bef9a3f7b2c67915", - "c67178f2e372532b", "ca273eceea26619c", "d186b8c721c0c207", - "eada7dd6cde0eb1e", "f57d4f7fee6ed178", "06f067aa72176fba", - "0a637dc5a2c898a6", "113f9804bef90dae", "1b710b35131c471b", - "28db77f523047d84", "32caab7b40c72493", "3c9ebe0a15c9bebc", - "431d67c49c100d4c", "4cc5d4becb3e42b6", "597f299cfc657e2a", - "5fcb6fab3ad6faec", "6c44198c4a475817", -}; -#define GET_FX_64WORD(n, b, i) \ - { \ - (n) = ((uint64_t)(b)[(i)] << 56) | ((uint64_t)(b)[(i) + 1] << 48) | \ - ((uint64_t)(b)[(i) + 2] << 40) | ((uint64_t)(b)[(i) + 3] << 32) | \ - ((uint64_t)(b)[(i) + 4] << 24) | ((uint64_t)(b)[(i) + 5] << 16) | \ - ((uint64_t)(b)[(i) + 6] << 8) | ((uint64_t)(b)[(i) + 7]); \ - } -#define PUT_FX_64DWORD(n, b, i) \ - { \ - (b)[(i)] = (uint8_t)((n) >> 56); \ - (b)[(i) + 1] = (uint8_t)((n) >> 48); \ - (b)[(i) + 2] = (uint8_t)((n) >> 40); \ - (b)[(i) + 3] = (uint8_t)((n) >> 32); \ - (b)[(i) + 4] = (uint8_t)((n) >> 24); \ - (b)[(i) + 5] = (uint8_t)((n) >> 16); \ - (b)[(i) + 6] = (uint8_t)((n) >> 8); \ - (b)[(i) + 7] = (uint8_t)((n)); \ - } -static void sha384_process(sha384_context* ctx, const uint8_t data[128]) { - uint64_t temp1, temp2; - uint64_t A, B, C, D, E, F, G, H; - uint64_t W[80]; - GET_FX_64WORD(W[0], data, 0); - GET_FX_64WORD(W[1], data, 8); - GET_FX_64WORD(W[2], data, 16); - GET_FX_64WORD(W[3], data, 24); - GET_FX_64WORD(W[4], data, 32); - GET_FX_64WORD(W[5], data, 40); - GET_FX_64WORD(W[6], data, 48); - GET_FX_64WORD(W[7], data, 56); - GET_FX_64WORD(W[8], data, 64); - GET_FX_64WORD(W[9], data, 72); - GET_FX_64WORD(W[10], data, 80); - GET_FX_64WORD(W[11], data, 88); - GET_FX_64WORD(W[12], data, 96); - GET_FX_64WORD(W[13], data, 104); - GET_FX_64WORD(W[14], data, 112); - GET_FX_64WORD(W[15], data, 120); - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - E = ctx->state[4]; - F = ctx->state[5]; - G = ctx->state[6]; - H = ctx->state[7]; - for (int i = 0; i < 10; ++i) { - uint64_t temp[8]; - if (i < 2) { - temp[0] = W[i * 8]; - temp[1] = W[i * 8 + 1]; - temp[2] = W[i * 8 + 2]; - temp[3] = W[i * 8 + 3]; - temp[4] = W[i * 8 + 4]; - temp[5] = W[i * 8 + 5]; - temp[6] = W[i * 8 + 6]; - temp[7] = W[i * 8 + 7]; - } else { - temp[0] = SHA384_R(i * 8); - temp[1] = SHA384_R(i * 8 + 1); - temp[2] = SHA384_R(i * 8 + 2); - temp[3] = SHA384_R(i * 8 + 3); - temp[4] = SHA384_R(i * 8 + 4); - temp[5] = SHA384_R(i * 8 + 5); - temp[6] = SHA384_R(i * 8 + 6); - temp[7] = SHA384_R(i * 8 + 7); - } - SHA384_P(A, B, C, D, E, F, G, H, temp[0], FX_ato64i(constants[i * 8])); - SHA384_P(H, A, B, C, D, E, F, G, temp[1], FX_ato64i(constants[i * 8 + 1])); - SHA384_P(G, H, A, B, C, D, E, F, temp[2], FX_ato64i(constants[i * 8 + 2])); - SHA384_P(F, G, H, A, B, C, D, E, temp[3], FX_ato64i(constants[i * 8 + 3])); - SHA384_P(E, F, G, H, A, B, C, D, temp[4], FX_ato64i(constants[i * 8 + 4])); - SHA384_P(D, E, F, G, H, A, B, C, temp[5], FX_ato64i(constants[i * 8 + 5])); - SHA384_P(C, D, E, F, G, H, A, B, temp[6], FX_ato64i(constants[i * 8 + 6])); - SHA384_P(B, C, D, E, F, G, H, A, temp[7], FX_ato64i(constants[i * 8 + 7])); - } - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; - ctx->state[4] += E; - ctx->state[5] += F; - ctx->state[6] += G; - ctx->state[7] += H; -} -void CRYPT_SHA384Update(void* context, const uint8_t* input, FX_DWORD length) { - sha384_context* ctx = (sha384_context*)context; - FX_DWORD left, fill; - if (!length) { - return; - } - left = (FX_DWORD)ctx->total[0] & 0x7F; - fill = 128 - left; - ctx->total[0] += length; - if (ctx->total[0] < length) { - ctx->total[1]++; - } - if (left && length >= fill) { - FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, fill); - sha384_process(ctx, ctx->buffer); - length -= fill; - input += fill; - left = 0; - } - while (length >= 128) { - sha384_process(ctx, input); - length -= 128; - input += 128; - } - if (length) { - FXSYS_memcpy((void*)(ctx->buffer + left), (void*)input, length); - } -} -void CRYPT_SHA384Finish(void* context, uint8_t digest[48]) { - sha384_context* ctx = (sha384_context*)context; - FX_DWORD last, padn; - uint8_t msglen[16]; - FXSYS_memset(msglen, 0, 16); - uint64_t high, low; - high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); - low = (ctx->total[0] << 3); - PUT_FX_64DWORD(high, msglen, 0); - PUT_FX_64DWORD(low, msglen, 8); - last = (FX_DWORD)ctx->total[0] & 0x7F; - padn = (last < 112) ? (112 - last) : (240 - last); - CRYPT_SHA384Update(ctx, sha384_padding, padn); - CRYPT_SHA384Update(ctx, msglen, 16); - PUT_FX_64DWORD(ctx->state[0], digest, 0); - PUT_FX_64DWORD(ctx->state[1], digest, 8); - PUT_FX_64DWORD(ctx->state[2], digest, 16); - PUT_FX_64DWORD(ctx->state[3], digest, 24); - PUT_FX_64DWORD(ctx->state[4], digest, 32); - PUT_FX_64DWORD(ctx->state[5], digest, 40); -} -void CRYPT_SHA384Generate(const uint8_t* data, - FX_DWORD size, - uint8_t digest[64]) { - sha384_context context; - CRYPT_SHA384Start(&context); - CRYPT_SHA384Update(&context, data, size); - CRYPT_SHA384Finish(&context, digest); -} -void CRYPT_SHA512Start(void* context) { - if (!context) { - return; - } - sha384_context* ctx = (sha384_context*)context; - FXSYS_memset(ctx, 0, sizeof(sha384_context)); - ctx->state[0] = FX_ato64i("6a09e667f3bcc908"); - ctx->state[1] = FX_ato64i("bb67ae8584caa73b"); - ctx->state[2] = FX_ato64i("3c6ef372fe94f82b"); - ctx->state[3] = FX_ato64i("a54ff53a5f1d36f1"); - ctx->state[4] = FX_ato64i("510e527fade682d1"); - ctx->state[5] = FX_ato64i("9b05688c2b3e6c1f"); - ctx->state[6] = FX_ato64i("1f83d9abfb41bd6b"); - ctx->state[7] = FX_ato64i("5be0cd19137e2179"); -} -void CRYPT_SHA512Update(void* context, const uint8_t* data, FX_DWORD size) { - CRYPT_SHA384Update(context, data, size); -} -void CRYPT_SHA512Finish(void* context, uint8_t digest[64]) { - sha384_context* ctx = (sha384_context*)context; - FX_DWORD last, padn; - uint8_t msglen[16]; - FXSYS_memset(msglen, 0, 16); - uint64_t high, low; - high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); - low = (ctx->total[0] << 3); - PUT_FX_64DWORD(high, msglen, 0); - PUT_FX_64DWORD(low, msglen, 8); - last = (FX_DWORD)ctx->total[0] & 0x7F; - padn = (last < 112) ? (112 - last) : (240 - last); - CRYPT_SHA512Update(ctx, sha384_padding, padn); - CRYPT_SHA512Update(ctx, msglen, 16); - PUT_FX_64DWORD(ctx->state[0], digest, 0); - PUT_FX_64DWORD(ctx->state[1], digest, 8); - PUT_FX_64DWORD(ctx->state[2], digest, 16); - PUT_FX_64DWORD(ctx->state[3], digest, 24); - PUT_FX_64DWORD(ctx->state[4], digest, 32); - PUT_FX_64DWORD(ctx->state[5], digest, 40); - PUT_FX_64DWORD(ctx->state[6], digest, 48); - PUT_FX_64DWORD(ctx->state[7], digest, 56); -} -void CRYPT_SHA512Generate(const uint8_t* data, - FX_DWORD size, - uint8_t digest[64]) { - sha384_context context; - CRYPT_SHA512Start(&context); - CRYPT_SHA512Update(&context, data, size); - CRYPT_SHA512Finish(&context, digest); -} -#ifdef __cplusplus -}; -#endif diff --git a/core/src/fpdfapi/fpdf_basic_module.cpp b/core/src/fpdfapi/fpdf_basic_module.cpp deleted file mode 100644 index cf843cc4d9..0000000000 --- a/core/src/fpdfapi/fpdf_basic_module.cpp +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fxcodec/fx_codec.h" - -namespace { - -CPDF_ModuleMgr* g_FPDFAPI_pDefaultMgr = nullptr; - -} // namespace - -// static -CPDF_ModuleMgr* CPDF_ModuleMgr::Get() { - return g_FPDFAPI_pDefaultMgr; -} - -// static -void CPDF_ModuleMgr::Create() { - ASSERT(!g_FPDFAPI_pDefaultMgr); - g_FPDFAPI_pDefaultMgr = new CPDF_ModuleMgr; -} - -// static -void CPDF_ModuleMgr::Destroy() { - delete g_FPDFAPI_pDefaultMgr; - g_FPDFAPI_pDefaultMgr = nullptr; -} - -CPDF_ModuleMgr::CPDF_ModuleMgr() : m_pCodecModule(nullptr) {} - -CPDF_ModuleMgr::~CPDF_ModuleMgr() {} - -void CPDF_ModuleMgr::SetPrivateData(void* module_id, - void* pData, - PD_CALLBACK_FREEDATA callback) { - m_privateData.SetPrivateData(module_id, pData, callback); -} -void* CPDF_ModuleMgr::GetPrivateData(void* module_id) { - return m_privateData.GetPrivateData(module_id); -} -ICodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() { - return m_pCodecModule ? m_pCodecModule->GetFaxModule() : NULL; -} -ICodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() { - return m_pCodecModule ? m_pCodecModule->GetJpegModule() : NULL; -} -ICodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() { - return m_pCodecModule ? m_pCodecModule->GetJpxModule() : NULL; -} -ICodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() { - return m_pCodecModule ? m_pCodecModule->GetJbig2Module() : NULL; -} -ICodec_IccModule* CPDF_ModuleMgr::GetIccModule() { - return m_pCodecModule ? m_pCodecModule->GetIccModule() : NULL; -} -ICodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() { - return m_pCodecModule ? m_pCodecModule->GetFlateModule() : NULL; -} diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp deleted file mode 100644 index 2d50c5f00f..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp +++ /dev/null @@ -1,2131 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_CNS1CID2Unicode_5[19088] = { - 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, - 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, - 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, - 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, - 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x00A9, 0x2122, 0x2026, - 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A, 0xFF1F, - 0xFF01, 0xFE30, 0x22EF, 0x2025, 0xFE50, 0xFE51, 0xFE52, 0x00B7, 0xFE54, - 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, 0x2014, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0xFF08, 0xFF09, 0xFE35, 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, - 0xFE38, 0x3014, 0x3015, 0xFE39, 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, - 0x300A, 0x300B, 0xFE3D, 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, - 0x300D, 0xFE41, 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, - 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, - 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, 0x3003, - 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, 0x25C7, 0x25C6, - 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, 0x203E, 0xFFE3, 0xFF3F, - 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, - 0xFE61, 0xFF0B, 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, - 0xFF1D, 0x2266, 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, - 0xFE64, 0xFE65, 0xFE66, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F, - 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642, - 0x2295, 0x2609, 0x2191, 0x2193, 0x2192, 0x2190, 0x2196, 0x2197, 0x2199, - 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0xFF0F, 0xFF3C, 0xFF04, 0x00A5, - 0x3012, 0x00A2, 0x00A3, 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, - 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, - 0x33C4, 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7, - 0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, - 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, - 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, - 0x2510, 0x2514, 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, - 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573, - 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, - 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, - 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, - 0x3028, 0x3029, 0x3038, 0x5344, 0x303A, 0xFF21, 0xFF22, 0xFF23, 0xFF24, - 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, - 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, - 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, - 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, - 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, - 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, - 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, - 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, - 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, - 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107, - 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, 0x3110, - 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, - 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, 0x3122, - 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02D9, 0x02CA, - 0x02C7, 0x02CB, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, - 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, - 0x247A, 0x247B, 0x247C, 0x247D, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, - 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4E28, 0x4E36, 0x4E3F, 0x4E85, - 0x4EA0, 0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338, 0x5369, 0x53B6, 0x5902, - 0x5B80, 0x5DDB, 0x5E7A, 0x5E7F, 0x5EF4, 0x5F50, 0x5F61, 0x6534, 0x65E0, - 0x7592, 0x7676, 0x8FB5, 0x96B6, 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, - 0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240A, 0x240B, 0x240C, 0x240D, - 0x240E, 0x240F, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, - 0x2417, 0x2418, 0x2419, 0x241A, 0x241B, 0x241C, 0x241D, 0x241E, 0x241F, - 0x2421, 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, - 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315, - 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B, 0x4E38, - 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, 0x5140, 0x5203, - 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973, - 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, - 0x5DE5, 0x5DF1, 0x5DF2, 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, - 0x624D, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39, - 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3, - 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167, - 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB, - 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, - 0x53CB, 0x53CA, 0x53CD, 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, - 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, - 0x5FC3, 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4, - 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, - 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, - 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18, - 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, - 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, - 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, - 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E, - 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC, - 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, - 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, 0x5976, - 0x5B55, 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, - 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, - 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63, - 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 0x7384, - 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529, 0x7530, 0x7531, - 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE, 0x77DB, 0x77E2, - 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, - 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, - 0x4F15, 0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, - 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, - 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, 0x52A3, - 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 0x540C, 0x540A, - 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 0x5408, 0x5403, 0x540E, - 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D, - 0x572C, 0x572F, 0x5729, 0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, - 0x5983, 0x597D, 0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, - 0x5B85, 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74, - 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263, - 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, 0x66F3, - 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, 0x6B7B, 0x6C16, - 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, - 0x6C4D, 0x6C4E, 0x7070, 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, - 0x7F36, 0x7F8A, 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, - 0x8089, 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, - 0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, - 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34, - 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, 0x4F38, 0x4F43, - 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, - 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, - 0x51B7, 0x5225, 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, - 0x52AC, 0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, - 0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 0x5429, - 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C, - 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, 0x56EB, - 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E, 0x5750, 0x574F, - 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, - 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, - 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 0x5C3E, - 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A, - 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC, - 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, - 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, - 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, 0x6291, - 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F, - 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760, 0x6753, - 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89, - 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, - 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, - 0x6C94, 0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, - 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, - 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096, - 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292, 0x828B, - 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C9D, 0x8D64, - 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, - 0x8FC4, 0x5DE1, 0x9091, 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, - 0x91CC, 0x9632, 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, - 0x4E8B, 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, - 0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88, - 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, 0x5152, - 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD, 0x523B, 0x5238, - 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, 0x52BE, 0x52BB, 0x5352, - 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4, - 0x53D7, 0x5473, 0x5475, 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, - 0x5484, 0x5492, 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, - 0x5462, 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, - 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, 0x5948, - 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, 0x59D1, 0x59C6, - 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, 0x59B3, 0x59D2, 0x59C5, - 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, - 0x5C1A, 0x5C48, 0x5C45, 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, - 0x5CB1, 0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78, - 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29, - 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF, - 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021, 0x6027, - 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, 0x623E, 0x6240, 0x627F, - 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, - 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, - 0x62C7, 0x62CD, 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, - 0x62AC, 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, - 0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, - 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787, - 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, 0x6790, 0x6775, - 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66, 0x6B67, 0x6B7F, - 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, - 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, - 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, - 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, - 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269, - 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, - 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, - 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79, - 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, - 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 0x81FE, - 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1, - 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E, - 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, - 0x90B1, 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, - 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, - 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD, - 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 0x4FC4, - 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0, - 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, - 0x52C3, 0x52C1, 0x530D, 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, - 0x54A8, 0x54CE, 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, - 0x54AA, 0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9, - 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, 0x57CE, - 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, 0x59DC, 0x59D8, - 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01, - 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, - 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, - 0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, - 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, - 0x600E, 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, - 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, 0x62ED, - 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0x62EF, 0x62EC, 0x62FE, - 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB, 0x65BD, 0x65E2, 0x6625, - 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, - 0x67FF, 0x67D3, 0x67F1, 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, - 0x67E9, 0x67EF, 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, - 0x67DE, 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, - 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 0x6D2A, - 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D, 0x6D3E, - 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, - 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, - 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, - 0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D, - 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3, - 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701, - 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802, - 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9, 0x79BA, - 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, - 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, - 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, 0x80C4, - 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222, - 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302, - 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE, - 0x82D3, 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, - 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, - 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5, - 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3, 0x914B, - 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, 0x964D, 0x9762, 0x9769, - 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, - 0x4E58, 0x4EB3, 0x500C, 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, - 0x5029, 0x5016, 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, - 0x5000, 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, - 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, - 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B, - 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, 0x5510, 0x5501, - 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA, 0x5514, 0x54E9, 0x54ED, - 0x54E1, 0x5509, 0x54EE, 0x54EA, 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, - 0x5703, 0x5704, 0x57C2, 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, - 0x5958, 0x595A, 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, - 0x5A20, 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, - 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, 0x5C51, - 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, 0x5CF0, 0x5CF6, - 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7, 0x5F31, - 0x5F92, 0x5F91, 0x5F90, 0x6059, 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, - 0x6069, 0x606F, 0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, - 0x6096, 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, - 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B, - 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, 0x6642, - 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, 0x6714, - 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, 0x6842, - 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, - 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, - 0x6B89, 0x6BB7, 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, - 0x6D95, 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C, - 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, - 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239, - 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED, 0x7409, - 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, 0x755A, 0x7559, - 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2, - 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, - 0x7728, 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, - 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, - 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6, - 0x79E9, 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, - 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A, - 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, - 0x8006, 0x8004, 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, - 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108, - 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A, - 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338, - 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, - 0x8340, 0x8331, 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, - 0x86A9, 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, - 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13, - 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77, - 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7, 0x9000, - 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, - 0x90E2, 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, - 0x9583, 0x9662, 0x9663, 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, - 0x96BB, 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, - 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065, - 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F, 0x506F, - 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2, 0x52D9, 0x52D8, - 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340, 0x533E, 0x53C3, 0x66FC, - 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, 0x5561, 0x5543, 0x554A, 0x5531, - 0x5556, 0x554F, 0x5555, 0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, - 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, - 0x580A, 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, - 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, 0x5A3C, - 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, 0x5BC4, 0x5BC2, - 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, 0x5C5C, 0x5C5D, 0x5D07, - 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, 0x5D11, 0x5D29, 0x5D14, 0x5D19, - 0x5D24, 0x5D27, 0x5D17, 0x5DE2, 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, - 0x5EB8, 0x5EB6, 0x5EB5, 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, - 0x5F6B, 0x5F97, 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, - 0x60A3, 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x60C5, - 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF, 0x60B8, - 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, 0x6372, 0x6396, - 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, - 0x6383, 0x639B, 0x636B, 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, - 0x6392, 0x638F, 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, - 0x6551, 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C, - 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664, - 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2, - 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, 0x6883, - 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8, 0x689F, 0x68A1, - 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, - 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, - 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, - 0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, - 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, - 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B, - 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, 0x7406, 0x73FE, - 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562, - 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, - 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 0x786B, - 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, - 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97, - 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, 0x7D30, - 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, - 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, - 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, - 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392, - 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C, 0x8386, 0x83A7, - 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB, - 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, - 0x888D, 0x888B, 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, - 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, - 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF, - 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, 0x9015, - 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014, 0x90E8, 0x90ED, - 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9, - 0x9589, 0x966A, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, - 0x966C, 0x96C0, 0x96EA, 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, - 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, - 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274, - 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, 0x5580, - 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, 0x55AA, 0x5594, - 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A, - 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, 0x55AB, 0x5599, 0x570D, 0x582F, - 0x582A, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, - 0x58FA, 0x5960, 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, - 0x5B71, 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, - 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E, - 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8, - 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123, 0x60FA, 0x6115, - 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100, - 0x6112, 0x621F, 0x6249, 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, - 0x63C6, 0x63CD, 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, - 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, - 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676, - 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D, - 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE, - 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, - 0x690E, 0x68C9, 0x68DA, 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, - 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, - 0x6E21, 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B, - 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D, - 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E, - 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130, - 0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, 0x7280, 0x7336, 0x7325, - 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, - 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, - 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C, - 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, 0x786F, - 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, - 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, - 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, - 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, - 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E, - 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, 0x83E9, - 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, 0x83EF, 0x83F1, - 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, 0x83FD, 0x83F2, 0x83CA, - 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF, - 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, - 0x88C2, 0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, - 0x8A41, 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, - 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0, - 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, 0x8D81, 0x8DCE, - 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8, - 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, - 0x90F5, 0x9109, 0x90FE, 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, - 0x9209, 0x921E, 0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, - 0x9591, 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685, - 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, 0x96C7, - 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, 0x98EF, - 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, - 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, - 0x50AF, 0x50C7, 0x527F, 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, - 0x52E3, 0x532F, 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, - 0x55D1, 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5, - 0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, - 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1, - 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, - 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, - 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108, - 0x614E, 0x614C, 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, - 0x6137, 0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, - 0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, - 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684, - 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977, 0x6960, 0x6954, - 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979, - 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, - 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, - 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, - 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164, - 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146, - 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, - 0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, - 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF, - 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, 0x775E, 0x7763, - 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE, 0x788E, - 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, 0x7893, 0x787F, - 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, - 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, - 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, - 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, - 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B, - 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843D, 0x8431, - 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B, 0x843C, 0x8435, 0x8461, - 0x8463, 0x8469, 0x846D, 0x8446, 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, - 0x8708, 0x8707, 0x8700, 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, - 0x8859, 0x88DF, 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, - 0x88D5, 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, - 0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62, - 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, 0x8C89, - 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2, 0x8CC5, 0x8DE1, - 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2, - 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, - 0x9042, 0x9054, 0x903C, 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, - 0x9051, 0x903E, 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, - 0x9237, 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, - 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, 0x9598, - 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, 0x96F7, 0x96FB, - 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, 0x9811, 0x9813, 0x980A, - 0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, - 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, - 0x50D6, 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, - 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B, - 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, 0x5616, - 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E, 0x5883, - 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925, 0x5922, 0x5924, - 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, - 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, - 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, - 0x5E54, 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F, - 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, - 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467, - 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2, 0x66A8, - 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3, 0x69CB, 0x699B, - 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6, - 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, - 0x6EF4, 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, - 0x6EEF, 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, - 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199, - 0x717D, 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, - 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, - 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, - 0x78C1, 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, - 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, - 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9, - 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA, - 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, - 0x7DD2, 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, - 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, - 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4, - 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3, 0x8490, - 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734, - 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, - 0x88FD, 0x88E8, 0x891A, 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, - 0x8AA1, 0x8A93, 0x8AA4, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, - 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99, - 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, 0x9058, - 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, 0x9119, 0x9118, - 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x92AC, 0x9280, 0x9285, - 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8, 0x927C, 0x9291, 0x95A1, - 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, 0x9699, 0x969C, 0x969B, 0x96CC, - 0x96D2, 0x9700, 0x977C, 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, - 0x9903, 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, - 0x9B42, 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, - 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0x5287, - 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 0x563B, 0x5639, - 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657, 0x5674, 0x5636, - 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3, 0x589C, 0x58AE, 0x58A9, - 0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, - 0x5BEC, 0x5BE9, 0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, - 0x5E61, 0x5EE2, 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, - 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0x617C, - 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, 0x619A, - 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E, 0x64B2, - 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, - 0x64AD, 0x64AB, 0x649A, 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, - 0x6578, 0x66AE, 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, - 0x6A1E, 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05, - 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C, - 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, - 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60, - 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, 0x734E, 0x7357, - 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, - 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, - 0x778C, 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, - 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, - 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, - 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, - 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, - 0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, - 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513, - 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, 0x8782, - 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874C, - 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915, 0x890A, - 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, - 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, - 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, - 0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, - 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, - 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E, 0x8F25, 0x9069, - 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 0x9127, 0x9131, 0x9187, - 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA, 0x92E4, 0x92C1, - 0x92B3, 0x92BC, 0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, - 0x9706, 0x9707, 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, - 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF, - 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, 0x9B27, - 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0x9D03, 0x9EA9, 0x9EBE, - 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, - 0x51AA, 0x51DD, 0x5291, 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, - 0x5664, 0x5678, 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, - 0x5676, 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78, - 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6, - 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, 0x64BC, - 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4, 0x64BE, - 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, 0x66B8, 0x6A3D, 0x6A38, - 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B, - 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, - 0x6FA1, 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6, - 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, - 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, - 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, 0x763A, - 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, 0x78DA, 0x78EC, - 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, - 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, - 0x7E0A, 0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, - 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, - 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569, - 0x8543, 0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2, - 0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, - 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, - 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, - 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B, - 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072, - 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F, - 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, - 0x932E, 0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, - 0x9716, 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, - 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, 0x991E, - 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB, - 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12, 0x9D1B, - 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121, 0x5132, 0x52F5, - 0x568E, 0x5680, 0x5690, 0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, - 0x58CE, 0x5B30, 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, - 0x5DBD, 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, - 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6, - 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6, 0x6A80, - 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E, 0x6A97, 0x6A90, - 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, - 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, - 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, - 0x71F4, 0x71E0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, - 0x74A8, 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, - 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, 0x79A7, - 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, 0x7C0C, 0x7BE0, - 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, 0x7CDD, 0x7E2E, 0x7E3E, - 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, 0x7E3D, 0x7E31, 0x7E45, 0x7E41, - 0x7E34, 0x7E39, 0x7E48, 0x7E35, 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, - 0x8071, 0x8072, 0x8070, 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, - 0x81C0, 0x81BF, 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, - 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8, - 0x858A, 0x85A6, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, 0x87AB, - 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938, 0x893D, - 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, - 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, - 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, - 0x8F3F, 0x907F, 0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, - 0x919E, 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B, - 0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, - 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0, - 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, - 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, - 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D, - 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, - 0x65B7, 0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, - 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, - 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375, - 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, 0x77BF, 0x77BB, - 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B, - 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, - 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, - 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0, - 0x85BA, 0x85B9, 0x87EF, 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4, - 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, 0x8E66, - 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, - 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, - 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5, - 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, 0x97A6, 0x97AD, - 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA, 0x993E, 0x993F, - 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E, - 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, - 0x9EE0, 0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x56A8, 0x58DE, 0x58DF, 0x58E2, - 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, - 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, - 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378, - 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, 0x7661, 0x77C7, - 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, - 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69, 0x7E6A, 0x7E73, 0x7F85, 0x7FB6, - 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, - 0x85F7, 0x87FB, 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, - 0x895E, 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, - 0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, - 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, 0x93E1, - 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, 0x93E2, 0x93CD, - 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4, 0x96E3, 0x972A, 0x9727, - 0x9761, 0x97DC, 0x97FB, 0x985E, 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, - 0x9A16, 0x9A19, 0x9B0D, 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, - 0x9D72, 0x9D6A, 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56B7, - 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9, - 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC, 0x703E, - 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 0x7665, 0x7926, 0x792A, - 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, - 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, - 0x85F9, 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, - 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, - 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, 0x9418, - 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, 0x99A8, 0x9A2B, - 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, - 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, - 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, - 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, - 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823, - 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D, - 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433, - 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732, - 0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, - 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, - 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, - 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61, - 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60, - 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, - 0x8D17, 0x8E91, 0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, - 0x973E, 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, - 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, - 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10, - 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2, - 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460, 0x9464, - 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, - 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C, - 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, - 0x8B93, 0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, - 0x9744, 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, - 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, 0x7C6C, - 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, 0x9871, 0x995E, - 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9, 0x9A62, - 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, - 0x9C78, 0x9EF7, 0x8C54, 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, - 0x9E1E, 0x7C72, 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, - 0x4E47, 0x4E8D, 0x56D7, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 0x4E2E, - 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, 0x53B9, 0x5720, - 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 0x6BCC, 0x6C14, 0x723F, - 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, - 0x5209, 0x531C, 0x534C, 0x5722, 0x5723, 0x5917, 0x592F, 0x5B81, 0x5B84, - 0x5C12, 0x5C3B, 0x5C74, 0x5C73, 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, - 0x6250, 0x6C15, 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A, - 0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1, - 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04, - 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5210, 0x52A6, 0x5322, 0x531F, 0x534D, - 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A, 0x5734, 0x593C, 0x5980, - 0x597C, 0x5985, 0x597B, 0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, - 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, - 0x5F74, 0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266, - 0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x6537, 0x65EF, 0x65EE, 0x673E, - 0x6739, 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, - 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E, - 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, 0x8278, 0x827C, - 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097, 0x9098, 0x909B, - 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49, - 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, - 0x4F33, 0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, - 0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A, - 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441, - 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, - 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, - 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28, - 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86, - 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, 0x5E88, - 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED, - 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7, - 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, - 0x6287, 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, - 0x6272, 0x6274, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747, - 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B, 0x6BD0, - 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B, 0x6C8F, 0x6C71, - 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73, - 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, - 0x72C6, 0x72C1, 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, - 0x753A, 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, - 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293, - 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 0x90A1, 0x90A5, - 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, 0x962D, 0x4E33, 0x4F98, - 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84, - 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, - 0x4F9C, 0x4F94, 0x4F9E, 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, - 0x51BC, 0x51BE, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, - 0x530B, 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482, - 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 0x548D, - 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56F7, 0x56F9, - 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775, - 0x577B, 0x5773, 0x5774, 0x5762, 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, - 0x59BA, 0x59CF, 0x59CE, 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, - 0x59D6, 0x59B1, 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, - 0x5B93, 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, - 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D, - 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 0x5F28, 0x5F22, - 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, 0x602D, - 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, - 0x601E, 0x602C, 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, - 0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, - 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, - 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB, - 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, 0x670A, - 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786, 0x6784, - 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, - 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, - 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, - 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2, - 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD, - 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, - 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A, - 0x72D6, 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, - 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, - 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, - 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0x77F7, - 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035, - 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, - 0x82AB, 0x829A, 0x8298, 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, - 0x82BA, 0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, - 0x82A2, 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, - 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, - 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2, - 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB, - 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, 0x5244, 0x5249, 0x52C0, - 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1, - 0x54AD, 0x54A5, 0x54CF, 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, - 0x54C5, 0x54C6, 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, - 0x54B0, 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, - 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, 0x590D, - 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, 0x59FA, 0x59FD, - 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, 0x59E9, 0x59F3, 0x59F5, - 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, - 0x5CD7, 0x5CCB, 0x5CDB, 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, - 0x5CD3, 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, - 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B, - 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, 0x6054, - 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, 0x6040, - 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, 0x6242, 0x6243, - 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, - 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, - 0x62F0, 0x6541, 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, - 0x661C, 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639, - 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, - 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5, - 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, 0x67B9, 0x67CE, - 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC, 0x67AE, 0x67E6, - 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82, - 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, - 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, - 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, - 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22, - 0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, - 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E, - 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385, - 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB, - 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE, - 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703, - 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806, - 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, - 0x794A, 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, - 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, - 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D, - 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7, 0x80E0, - 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA, - 0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, - 0x82D9, 0x82FE, 0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, - 0x82D6, 0x82F4, 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, - 0x82F0, 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674, - 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3, 0x8A04, - 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, 0x90BD, 0x90BF, - 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, 0x91D4, 0x91D3, 0x9654, - 0x964F, 0x9651, 0x9653, 0x964A, 0x964E, 0x501E, 0x5005, 0x5007, 0x5013, - 0x5022, 0x5030, 0x501B, 0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, - 0x4FF7, 0x5017, 0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, - 0x515A, 0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, - 0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, - 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, 0x54FF, - 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, 0x550A, 0x54FB, 0x54F7, - 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 0x5701, 0x5702, 0x57CC, 0x5832, - 0x57D5, 0x57D2, 0x57BA, 0x57C6, 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, - 0x57C7, 0x57D0, 0x57B9, 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, - 0x5A2E, 0x5A15, 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, - 0x5BAD, 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, - 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, 0x5EAC, - 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041, 0x60A2, 0x6088, - 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, 0x609B, 0x6097, 0x6087, - 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, - 0x6345, 0x6336, 0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, - 0x6341, 0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A, - 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3, - 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, 0x681F, - 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816, 0x6831, - 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, 0x6834, 0x681D, - 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D, 0x683A, 0x6825, 0x6820, - 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, - 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64, - 0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91, - 0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, - 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80, - 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC, 0x70D3, - 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0, - 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242, - 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3, - 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, - 0x73E9, 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, - 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0, - 0x75C1, 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, - 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, - 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, - 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B, - 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE, - 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B, - 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F, - 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, - 0x7C88, 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, - 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, - 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, 0x803E, - 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, 0x8100, 0x8201, - 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356, - 0x833F, 0x8341, 0x8326, 0x831C, 0x8322, 0x8342, 0x834E, 0x831B, 0x832A, - 0x8308, 0x833C, 0x834D, 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, - 0x8347, 0x8345, 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, - 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687, - 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, 0x86A7, - 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, 0x8844, 0x886D, - 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 0x886F, 0x8883, 0x887E, - 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, - 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, - 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, - 0x90E3, 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150, - 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3, - 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, 0x5053, - 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B, 0x504A, 0x5062, - 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063, 0x5064, 0x5046, 0x5040, - 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, - 0x52D6, 0x52D3, 0x532D, 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, - 0x5534, 0x552A, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, - 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, - 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4, - 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807, - 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, - 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, - 0x5A60, 0x5A58, 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, - 0x5A5F, 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, - 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70, - 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1, - 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, - 0x5D0D, 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, - 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, - 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, - 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB, - 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A, - 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, - 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, - 0x637C, 0x63A4, 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, - 0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, - 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB, - 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, 0x688F, - 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, 0x6871, 0x687E, - 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4, 0x6878, 0x687B, 0x6891, - 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F, - 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, - 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, - 0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, - 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, 0x6DD0, - 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, 0x70FA, 0x710D, - 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, 0x70F3, 0x7110, 0x70FC, - 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 0x70F6, 0x710B, 0x7102, 0x710E, - 0x727E, 0x727B, 0x727C, 0x727F, 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, - 0x730A, 0x7308, 0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, - 0x7404, 0x7401, 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, - 0x740B, 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0x75CB, - 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, 0x772D, - 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, 0x7735, 0x7848, - 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, - 0x7967, 0x7969, 0x796A, 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, - 0x79F6, 0x79F7, 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B3B, 0x7B34, 0x7B25, - 0x7B30, 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B, - 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96, - 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, - 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, 0x7F95, - 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, - 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, - 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, - 0x8127, 0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232, - 0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, - 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, - 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, - 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, 0x8659, 0x8656, - 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9, - 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE, - 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, - 0x889F, 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, - 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, - 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, - 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, - 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, - 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB, - 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4, - 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8, - 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F, - 0x96BF, 0x976A, 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, - 0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, - 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, - 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, 0x558F, - 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, 0x55A6, 0x557F, - 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837, 0x5819, 0x581E, 0x5827, - 0x5823, 0x5828, 0x57F5, 0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, - 0x5836, 0x582E, 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, - 0x5A94, 0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, - 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B, - 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D, 0x5BEA, - 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, 0x5C30, 0x5D37, - 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, 0x5D51, 0x5D4E, 0x5D55, - 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, - 0x5D38, 0x5D3C, 0x5D32, 0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, - 0x5FA6, 0x5FA5, 0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, - 0x6114, 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC, - 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 0x610B, - 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 0x63EF, 0x63C3, - 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, 0x63F2, 0x63F5, 0x6461, - 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, 0x63D8, 0x63D3, 0x63C2, 0x63C7, - 0x63CC, 0x63CB, 0x63C8, 0x63F0, 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, - 0x6564, 0x655C, 0x6568, 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, - 0x65D2, 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, - 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1, - 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910, 0x68F3, - 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, 0x6911, 0x68EF, 0x68C6, - 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917, - 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, - 0x68E9, 0x6915, 0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, - 0x6B97, 0x6B99, 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, - 0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62, - 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40, - 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61, 0x6E31, - 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, - 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35, - 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, - 0x7125, 0x7122, 0x7132, 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A, - 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322, - 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, - 0x742E, 0x742C, 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431, - 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, - 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7, - 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, 0x774A, - 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, 0x785C, - 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868, 0x785E, 0x7862, - 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, - 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B47, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, - 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, - 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, - 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65, - 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, 0x80FE, - 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D, 0x814D, 0x813A, - 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F, - 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7, - 0x83E4, 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, - 0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, - 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3, - 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x839A, 0x83C3, 0x83EC, - 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, 0x83FE, 0x86D8, - 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, 0x86DD, 0x86EB, 0x86DC, - 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA, - 0x88D7, 0x88B9, 0x88B8, 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, - 0x88B2, 0x8901, 0x88C9, 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, - 0x8A4E, 0x8A4D, 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, - 0x8A52, 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80, - 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 0x8DD8, - 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, 0x8DC8, - 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, - 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, - 0x902D, 0x9034, 0x902F, 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, - 0x90F9, 0x90FB, 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, - 0x915F, 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, - 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227, - 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957B, 0x958D, - 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, 0x9683, 0x9680, 0x96C2, - 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, - 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, - 0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, - 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, - 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0, - 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, 0x55E2, - 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868, - 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, - 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, - 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, - 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6, - 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72, - 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, - 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, - 0x5FAD, 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, - 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, - 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, - 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423, - 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642F, 0x640A, 0x641A, - 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, - 0x656F, 0x6592, 0x65D3, 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, - 0x6699, 0x6694, 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, - 0x6971, 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, - 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, - 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, - 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, 0x6932, 0x6952, - 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43, 0x6B42, 0x6B48, 0x6B41, - 0x6B9B, 0x6BFB, 0x6BFC, 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, - 0x6E8F, 0x6EC0, 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, - 0x6ED2, 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, - 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E, - 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE, - 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, 0x715D, 0x7162, - 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 0x7158, 0x7143, 0x714B, 0x7170, - 0x715F, 0x7150, 0x7153, 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, - 0x7291, 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, - 0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, - 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE, - 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, 0x7603, 0x75F7, - 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, 0x75ED, 0x75F5, - 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, 0x7760, 0x7752, 0x7756, - 0x775A, 0x7769, 0x7767, 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, - 0x7894, 0x788F, 0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, - 0x7899, 0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11, - 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10, - 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69, - 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, 0x7B63, - 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, - 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, - 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, - 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B, - 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, - 0x821D, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, - 0x8476, 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, - 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507, - 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445, - 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439, - 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, 0x8436, - 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, - 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, - 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD, - 0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, - 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, - 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81, - 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66, 0x8C86, - 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, - 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1, - 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, - 0x8F06, 0x8EFF, 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, - 0x9052, 0x903F, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, - 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252, 0x9230, - 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E, 0x924A, 0x9246, - 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, 0x9236, 0x9261, 0x9270, - 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924E, 0x9253, 0x924C, 0x9256, - 0x9232, 0x959F, 0x959C, 0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, - 0x96CE, 0x96FA, 0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, - 0x980F, 0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, - 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD, - 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, 0x50E4, - 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, 0x51D8, 0x5280, 0x5281, - 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, 0x5615, 0x560C, 0x5612, 0x55FC, - 0x560F, 0x561C, 0x5601, 0x5613, 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, - 0x55F9, 0x5889, 0x587C, 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, - 0x588B, 0x587A, 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, - 0x5894, 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, - 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, 0x5ADE, - 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x5BE3, 0x5C63, 0x5D82, - 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77, 0x5D8A, 0x5D89, 0x5D88, - 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, - 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, - 0x5F43, 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, - 0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, - 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, 0x642B, - 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D, 0x6475, - 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, 0x6453, 0x6460, - 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, 0x6465, 0x6477, 0x6573, - 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, - 0x69C9, 0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, - 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD, - 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA, - 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6, - 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, - 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, - 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, - 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 0x6F3C, - 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39, - 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, - 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, - 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, - 0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, - 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, - 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780, - 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E, - 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, - 0x798B, 0x7996, 0x7995, 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990, - 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, - 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, - 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, - 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, - 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF, - 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, - 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE, 0x8024, 0x805D, 0x805C, 0x8189, - 0x8186, 0x8183, 0x8187, 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, - 0x84A1, 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, - 0x84B4, 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, - 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, 0x84A8, - 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, 0x84D2, 0x84DB, - 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876B, 0x8740, 0x872E, - 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 0x872C, 0x8741, 0x873E, 0x8746, - 0x8720, 0x8732, 0x872A, 0x872D, 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, - 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, - 0x88E7, 0x88F1, 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB, - 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB, - 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, 0x8C68, - 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D, - 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, 0x8E04, - 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, - 0x911D, 0x911A, 0x9124, 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, - 0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D, - 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, - 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C, - 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, - 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, - 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, - 0x9902, 0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, - 0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, - 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, - 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, - 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641, - 0x564A, 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, - 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, - 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, - 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, - 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 0x5D95, - 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C, - 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179, - 0x61B1, 0x61B0, 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, - 0x6192, 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, - 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C, - 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, 0x657B, - 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, 0x66AA, 0x66AF, - 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, 0x69F1, 0x69E4, 0x6A20, - 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE, - 0x6A14, 0x69F7, 0x69E7, 0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, - 0x69EB, 0x6A09, 0x6A04, 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, - 0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, - 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0x6F8D, - 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76, 0x6F6C, - 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, 0x6F93, 0x6F5D, - 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 0x6F90, 0x6F53, 0x6F8B, 0x6F69, - 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, - 0x71B0, 0x71A0, 0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, - 0x71A1, 0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, - 0x735E, 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x7362, - 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C, - 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, 0x761D, 0x761C, - 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E, 0x769B, 0x778D, - 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, - 0x78D4, 0x78C8, 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, - 0x79A2, 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, - 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, - 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03, - 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, 0x7FAC, - 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, - 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, - 0x824F, 0x8253, 0x8252, 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, - 0x8500, 0x8529, 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C, - 0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515, - 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE, - 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, - 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B, - 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, 0x8773, - 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, 0x875E, 0x876D, - 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A, 0x876E, - 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, - 0x8905, 0x890C, 0x8914, 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, - 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, - 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, - 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, - 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, - 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E, - 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27, 0x8E14, 0x8E12, - 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, - 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B, - 0x912F, 0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, - 0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, - 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, - 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD, - 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3, 0x92B5, 0x92E1, - 0x9325, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, 0x95AE, 0x95B0, 0x96A4, - 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, 0x975A, 0x978A, 0x978E, 0x9788, - 0x97D0, 0x97CF, 0x981E, 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, - 0x9827, 0x98B2, 0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, - 0x99DC, 0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, - 0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1, - 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, 0x9B70, - 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, 0x9CF7, 0x9D07, - 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, 0x9E83, 0x9ED3, 0x9F0F, - 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, - 0x5670, 0x5660, 0x566E, 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, - 0x5677, 0x571C, 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, - 0x58BC, 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, - 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 0x5DA9, - 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 0x5DAD, 0x5DAF, - 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, 0x5EE7, 0x5EE6, 0x5EE8, - 0x5EE5, 0x5F4B, 0x5FBC, 0x5FBB, 0x619D, 0x61A8, 0x6196, 0x61C5, 0x61B4, - 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, - 0x64D0, 0x64CF, 0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, - 0x6533, 0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, - 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49, - 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, 0x6A51, - 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50, 0x6A4F, - 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56, 0x6A55, 0x6A4D, - 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, - 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, - 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, - 0x6FA5, 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2, - 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, - 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF, - 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E, 0x7369, - 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F, 0x749A, 0x74A0, - 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, 0x762F, 0x762D, 0x7631, - 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, - 0x779D, 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797, - 0x78DD, 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, - 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, - 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, - 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, - 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, - 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, - 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B, - 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6, - 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7, - 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D, - 0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, - 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, - 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C, - 0x8663, 0x8665, 0x8664, 0x87A4, 0x879B, 0x878F, 0x8797, 0x8793, 0x8792, - 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785, 0x8790, - 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, - 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, - 0x892C, 0x891F, 0x89F1, 0x8AE0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, - 0x8B14, 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, - 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0, - 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, 0x8E40, - 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, 0x8EBD, 0x8F36, - 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34, 0x9076, 0x9079, 0x907B, - 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190, 0x9191, 0x918D, - 0x918F, 0x9327, 0x931E, 0x9308, 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, - 0x933C, 0x931B, 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, - 0x92CB, 0x931D, 0x92FA, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, - 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B, 0x92FE, - 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE, 0x95B9, 0x95BA, - 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4, 0x970B, 0x9712, 0x9710, - 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, - 0x991F, 0x9927, 0x9929, 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, - 0x99E3, 0x99EA, 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, - 0x9AFA, 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, - 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88, - 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18, 0x9D22, - 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, - 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, - 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, - 0x5682, 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, - 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, - 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x61C3, 0x61B5, 0x61BC, 0x61E7, - 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3, 0x64EB, - 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, - 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, - 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, - 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, - 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD, - 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2, - 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD, - 0x74B1, 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, - 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, - 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, 0x78FB, - 0x78FC, 0x78FF, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, 0x79A8, - 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, - 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, - 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, - 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, - 0x7E38, 0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, - 0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, - 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, - 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, 0x85A0, - 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E, 0x8577, 0x857C, 0x8589, - 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 0x8596, 0x8586, 0x858D, 0x8599, - 0x859D, 0x8581, 0x85A2, 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, - 0x8590, 0x859F, 0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, - 0x87B9, 0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, - 0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, - 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, 0x8942, - 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0x8B18, 0x8B16, 0x8B11, - 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, - 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, - 0x8C95, 0x8C94, 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, - 0x8E47, 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B, - 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364, - 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, 0x9351, - 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355, 0x9352, - 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, 0x9363, 0x9367, 0x934E, - 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, - 0x96AC, 0x9720, 0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C, - 0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849, - 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F, - 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4, - 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, 0x9A03, - 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, - 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, - 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30, - 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, - 0x9E8A, 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, - 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, - 0x5697, 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, - 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0, - 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503, - 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, - 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, - 0x6BC9, 0x6C0B, 0x7007, 0x700C, 0x700D, 0x7001, 0x7005, 0x7014, 0x700E, - 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF, - 0x71F9, 0x7203, 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, - 0x74B6, 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, - 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x790C, - 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC, 0x7A5F, - 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, - 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62, - 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, - 0x8075, 0x81D1, 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, - 0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB, - 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, 0x85B7, - 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB, 0x87EA, 0x87E5, - 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, 0x87ED, 0x87D8, 0x87E3, - 0x87D7, 0x87D9, 0x8801, 0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, - 0x894C, 0x8946, 0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, - 0x8B30, 0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, - 0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, - 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C, 0x8E62, - 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, 0x8E5B, 0x8E5A, 0x8E61, - 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 0x8F48, 0x8F4B, 0x9128, 0x913A, - 0x913B, 0x913E, 0x91A8, 0x91A5, 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, - 0x9392, 0x93B7, 0x939B, 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, - 0x93A6, 0x9395, 0x9388, 0x9399, 0x939F, 0x9380, 0x938D, 0x93B1, 0x9391, - 0x93B2, 0x93A4, 0x93A8, 0x93B4, 0x93A3, 0x95D2, 0x95D3, 0x95D1, 0x96B3, - 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, 0x9725, - 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2, 0x97A5, 0x97D7, - 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, - 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, - 0x9A05, 0x9A07, 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, - 0x9B35, 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1, - 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53, - 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52, - 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01, 0x9F00, - 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C, 0x9F55, 0x5134, - 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA, - 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, - 0x5E70, 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, - 0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, - 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, - 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, 0x7022, - 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x720C, 0x720A, 0x7207, 0x7202, - 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7, - 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, - 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, - 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, - 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, - 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x820B, 0x8264, - 0x8261, 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, - 0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, - 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, - 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A, - 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, 0x895D, - 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40, - 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, - 0x8C43, 0x8C77, 0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, - 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, - 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, - 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC, - 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3, 0x93D5, - 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93A5, 0x93E7, 0x957D, 0x95DA, 0x95DB, - 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726, 0x97B3, 0x97B7, 0x97B6, - 0x97DD, 0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, - 0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, - 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, - 0x9A1C, 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, - 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7, - 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, 0x9D77, 0x9D81, - 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 0x9D86, 0x9D8B, 0x9D8C, - 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, 0x9D73, 0x9D7B, - 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, - 0x9EFC, 0x9F2D, 0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, - 0x56B2, 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, - 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8, - 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE, - 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, - 0x703F, 0x703A, 0x7039, 0x702A, 0x7040, 0x703B, 0x7033, 0x7041, 0x7213, - 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 0x76AB, 0x76AA, 0x76BE, 0x76ED, - 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, - 0x7924, 0x7929, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48, - 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, - 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601, - 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, - 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, - 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, - 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, - 0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, - 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, - 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, - 0x93FA, 0x9409, 0x93F8, 0x943C, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6, - 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, 0x97BB, - 0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, - 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, - 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, - 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8, - 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F, 0x9D99, - 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C, - 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, - 0x9DA9, 0x9D96, 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, - 0x9EE7, 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, - 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48, - 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC, 0x6B03, - 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 0x7045, 0x7046, - 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 0x77D0, 0x792D, 0x7931, - 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, - 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, - 0x8623, 0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, - 0x8625, 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A, - 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 0x8B7A, - 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D, - 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, 0x9436, 0x9429, 0x943D, - 0x9430, 0x9439, 0x942A, 0x9437, 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, - 0x95E3, 0x9735, 0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, - 0x9958, 0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A, - 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, - 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7, - 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, - 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, - 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, - 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, - 0x56C6, 0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, - 0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, - 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5, - 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, 0x7C57, - 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, - 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, - 0x8828, 0x8826, 0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, - 0x8B84, 0x8B82, 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, - 0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450, - 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F, - 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, - 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, - 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39, - 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB, - 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9, - 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35, - 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, - 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, - 0x6529, 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, - 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66, - 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, 0x863E, - 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE, 0x8B8C, - 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64, 0x8F63, 0x91BC, - 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, - 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, - 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, - 0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, - 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, - 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F, 0x9F71, - 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, 0x5C6D, 0x652D, 0x66ED, - 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5, - 0x77D5, 0x7938, 0x79B7, 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, - 0x8838, 0x8837, 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, - 0x8E9D, 0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, - 0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, - 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, 0x9E06, - 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, 0x9EA0, 0x9F1E, - 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, 0x65B8, 0x6B18, 0x6B19, - 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, - 0x7C6B, 0x7CF6, 0x7E9A, 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, - 0x8647, 0x8648, 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, - 0x8EA5, 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749, - 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, 0x9E0F, - 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 0x9F7B, 0x9F7A, - 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, 0x8EA6, 0x91C3, 0x9474, - 0x9478, 0x9476, 0x9475, 0x9A60, 0x9B2E, 0x9C74, 0x9C73, 0x9C71, 0x9C75, - 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, - 0x883E, 0x883D, 0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, - 0x9874, 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, - 0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, - 0x9481, 0x9A69, 0x9A68, 0x9E19, 0x864B, 0x8B9F, 0x9483, 0x9C79, 0x9EB7, - 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, 0x706A, 0x7229, 0x9EA4, 0x9F7E, - 0x9F49, 0x9F98, 0xFE19, 0x223C, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, - 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, - 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, - 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, - 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, - 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, - 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, - 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, - 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, - 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, - 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, - 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0x0308, 0xFF3E, 0x30FD, 0x30FE, 0x309D, - 0x309E, 0xFFFD, 0x3005, 0x3006, 0x3007, 0x30FC, 0xFF3B, 0xFF3D, 0x273D, - 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, - 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, - 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, - 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, - 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, - 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, - 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, - 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, - 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, - 0x3092, 0x3093, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, - 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, - 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, - 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, - 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, - 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, - 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, - 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, - 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, - 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, - 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, - 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, - 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, - 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, - 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, - 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, - 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, - 0x044F, 0x21E7, 0x21B8, 0x21B9, 0x4E41, 0x0000, 0x4E5A, 0x0000, 0x5202, - 0x4491, 0x9FB0, 0x5188, 0x9FB1, 0x0000, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, - 0x00AC, 0xFFE4, 0xFF07, 0xFF02, 0x3231, 0x2116, 0x2121, 0x7881, 0x92B9, - 0x88CF, 0x58BB, 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560, - 0x256C, 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555, 0xFFFD, - 0xFFFD, 0xFFFD, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565, 0x2556, 0x255F, - 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, 0xFFFD, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0x2593, 0xFFFD, 0xFFFD, 0xFE10, 0xFE11, 0xFE12, 0xFFFD, - 0xFE14, 0xFE13, 0xFE16, 0xFE15, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, - 0xFFFD, 0xFFFD, 0x0000, 0x57BE, 0x0000, 0x713E, 0x0000, 0x69A2, 0x0000, - 0x5B74, 0x7A49, 0x0000, 0x0000, 0x7A65, 0x7A7D, 0x0000, 0x7ABB, 0x7AB0, - 0x7AC2, 0x7AC3, 0x71D1, 0x0000, 0x41CA, 0x7ADA, 0x7ADD, 0x7AEA, 0x41EF, - 0x54B2, 0x0000, 0x7B0B, 0x7B55, 0x7B29, 0x0000, 0x0000, 0x7BA2, 0x7B6F, - 0x839C, 0x0000, 0x0000, 0x7BD0, 0x8421, 0x7B92, 0xFFFD, 0x0000, 0xFFFD, - 0x8492, 0x7BFA, 0xFFFD, 0x7C35, 0x0000, 0x7C44, 0x7C83, 0x0000, 0x7CA6, - 0x0000, 0x7CC9, 0x7CC7, 0x7CE6, 0xFFFD, 0x7CF3, 0x7CF5, 0x7E67, 0x451D, - 0x0000, 0x7D5D, 0x0000, 0x7D89, 0x7DAB, 0x7135, 0x7DB3, 0x7DD6, 0x0000, - 0x0000, 0x7DE4, 0x3D13, 0x7DF5, 0x0000, 0x7DE5, 0x0000, 0xFFFD, 0x0000, - 0x0000, 0x7E6E, 0xFFFD, 0x432B, 0x946C, 0x7E27, 0x7F40, 0x7F41, 0x7F47, - 0x7936, 0x0000, 0x99E1, 0x7F97, 0x0000, 0x7FA3, 0x0000, 0x0000, 0x455C, - 0x0000, 0x0000, 0x7FFA, 0x0000, 0xFA5B, 0x8008, 0x801D, 0xFFFD, 0x802F, - 0x0000, 0x0000, 0x803B, 0x803C, 0x8061, 0x0000, 0x4989, 0x0000, 0x0000, - 0x0000, 0x6725, 0x80A7, 0x0000, 0x8107, 0x811A, 0x58B0, 0x0000, 0x6C7F, - 0x0000, 0x64E7, 0x0000, 0x8218, 0x0000, 0x6A53, 0x0000, 0x0000, 0x447A, - 0x8229, 0x0000, 0x0000, 0x4FF9, 0x0000, 0x84E2, 0x8362, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x82AA, 0x691B, 0x0000, 0x41DB, 0x854B, 0x82D0, - 0x831A, 0x0000, 0x0000, 0x36C1, 0x0000, 0x0000, 0x827B, 0x82E2, 0x8318, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3DBF, 0x831D, 0x55EC, 0x8385, - 0x450B, 0x0000, 0x83AC, 0xFFFD, 0x83D3, 0x0000, 0x6A57, 0x855A, 0x3496, - 0x0000, 0x8458, 0x0000, 0x8471, 0x3DD3, 0x44E4, 0x6AA7, 0x844A, 0x7958, - 0xFFFD, 0x0000, 0x0000, 0x0000, 0x84DE, 0xFFFD, 0x8391, 0x44A0, 0x8493, - 0x84E4, 0x0000, 0x4240, 0x0000, 0x4543, 0x8534, 0x5AF2, 0x4523, 0x4527, - 0x8573, 0x4516, 0x67BF, 0x8616, 0x0000, 0x0000, 0x85C1, 0x0000, 0x8602, - 0x0000, 0x0000, 0x0000, 0x456A, 0x8628, 0x3648, 0x0000, 0x53F7, 0x0000, - 0x867E, 0xFFFD, 0x0000, 0x87EE, 0x0000, 0x87B1, 0x87DA, 0x880F, 0x5661, - 0x866C, 0x6856, 0x460F, 0x8845, 0x8846, 0x0000, 0x0000, 0x0000, 0x885E, - 0x889C, 0x465B, 0x88B4, 0x88B5, 0x88C5, 0x0000, 0x8987, 0xFFFD, 0xFFFD, - 0xFFFD, 0x89A7, 0x89BC, 0x0000, 0x89E7, 0x0000, 0x0000, 0x8A9C, 0x7793, - 0x91FE, 0x8A90, 0x0000, 0x7AE9, 0x0000, 0x4713, 0x0000, 0x717C, 0x8B0C, - 0x8B1F, 0x0000, 0x0000, 0x8B3F, 0xFFFD, 0x8B4D, 0x8AA9, 0x0000, 0x8B90, - 0x8B9B, 0x8AAF, 0x0000, 0x4615, 0x884F, 0x8C9B, 0x0000, 0x0000, 0x0000, - 0x3725, 0x0000, 0x8CD6, 0x0000, 0x0000, 0x8D12, 0x8D03, 0x0000, 0x8CDB, - 0x705C, 0x8D11, 0x3ED0, 0x0000, 0x8DA9, 0x0000, 0x0000, 0x0000, 0x3B7C, - 0x0000, 0x0000, 0x7AE7, 0x8EAD, 0x8EB6, 0x8EC3, 0x92D4, 0x8F19, 0x8F2D, - 0x0000, 0x0000, 0x8FA5, 0x9303, 0x0000, 0x0000, 0x8FB3, 0xFFFD, 0x0000, - 0x0000, 0x0000, 0x5EF8, 0x0000, 0x8FF9, 0xFFFD, 0x0000, 0x3980, 0x0000, - 0x9037, 0x0000, 0x0000, 0x9061, 0x0000, 0x0000, 0x90A8, 0x0000, 0x90C4, - 0x0000, 0x90AE, 0xFA26, 0x9167, 0x91A9, 0x91C4, 0x7CAC, 0x0000, 0x0000, - 0x920E, 0x6C9F, 0x9241, 0x9262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x932C, 0x936B, 0x0000, 0x0000, 0x5AC3, 0x0000, 0x0000, 0x4965, - 0x9244, 0x0000, 0x0000, 0x0000, 0x9373, 0x945B, 0x8EBC, 0x9585, 0x95A6, - 0x9426, 0x95A0, 0x6FF6, 0x42B9, 0x0000, 0x0000, 0x0000, 0x49DF, 0x6C1C, - 0x967B, 0x9696, 0x416C, 0x96A3, 0x0000, 0x61DA, 0xE4AD, 0x78F5, 0x0000, - 0x96BD, 0x53CC, 0x49A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x9731, 0x8642, 0x9736, 0x4A0F, 0x453D, 0x4585, 0x0000, - 0x7075, 0x5B41, 0x971B, 0xFFFD, 0x0000, 0x9757, 0x5B4A, 0x0000, 0x975F, - 0x9425, 0x50D0, 0x0000, 0x0000, 0x9789, 0x979F, 0x97B1, 0x97BE, 0x97C0, - 0x97D2, 0x97E0, 0x0000, 0x97EE, 0x741C, 0x0000, 0xFFFD, 0x97F5, 0x0000, - 0x0000, 0x4AD1, 0x9834, 0x9833, 0x984B, 0x9866, 0x3B0E, 0x0000, 0x3D51, - 0x0000, 0x0000, 0x0000, 0x98CA, 0x98B7, 0x98C8, 0x98C7, 0x4AFF, 0x0000, - 0x0000, 0x55B0, 0x98E1, 0x98E6, 0x98EC, 0x9378, 0x9939, 0x0000, 0x4B72, - 0x0000, 0x0000, 0x99F5, 0x9A0C, 0x9A3B, 0x9A10, 0x9A58, 0x0000, 0x36C4, - 0x0000, 0x0000, 0x9AE0, 0x9AE2, 0x0000, 0x9AF4, 0x4C0E, 0x9B14, 0x9B2D, - 0x0000, 0x5034, 0x9B34, 0x38C3, 0x0000, 0x9B50, 0x9B40, 0x0000, 0x5A45, - 0x0000, 0x9B8E, 0x9C02, 0x9BFF, 0x9C0C, 0x0000, 0x9DD4, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9D7E, 0x9D83, 0x0000, 0x9E0E, 0x9DC4, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9D39, 0x0000, 0x0000, 0x9E90, 0x9E95, - 0x9E9E, 0x9EA2, 0x4D34, 0x9EAA, 0x9EAF, 0x0000, 0x9EC1, 0x3B60, 0x39E5, - 0x3D1D, 0x4F32, 0x37BE, 0x0000, 0x9F02, 0x9F08, 0x4B96, 0x9424, 0x0000, - 0x9F17, 0x0000, 0x9F39, 0x569F, 0x568A, 0x9F45, 0x99B8, 0x0000, 0x97F2, - 0x847F, 0xFFFD, 0x9F69, 0x7ADC, 0x9F8E, 0x7216, 0x4BBE, 0x0000, 0x0000, - 0x7177, 0x0000, 0x0000, 0x0000, 0x739E, 0x0000, 0x0000, 0x799F, 0x0000, - 0x0000, 0x9369, 0x93F3, 0x0000, 0x92EC, 0x9381, 0x93CB, 0x0000, 0x0000, - 0x7217, 0x3EEB, 0x7772, 0x7A43, 0x70D0, 0x0000, 0x0000, 0x717E, 0x0000, - 0x70A3, 0x0000, 0x0000, 0x3EC7, 0x0000, 0x0000, 0x0000, 0x3722, 0x0000, - 0x0000, 0x36E1, 0x0000, 0x0000, 0x0000, 0x3723, 0x0000, 0x575B, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8503, 0x0000, 0xFFFD, 0x8455, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x44F4, 0x0000, 0x0000, 0x0000, - 0x67F9, 0x3733, 0x3C15, 0x3DE7, 0x586C, 0x0000, 0x6810, 0x4057, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x54CB, 0x569E, 0x0000, 0x5692, 0x0000, - 0x0000, 0x0000, 0xFFFD, 0x0000, 0x939C, 0x4EF8, 0x512B, 0x3819, 0x0000, - 0x4EBC, 0x0000, 0xFFFD, 0x4F4B, 0x4F8A, 0x0000, 0x5A68, 0x0000, 0x0000, - 0x3999, 0x0000, 0x0000, 0x3435, 0x4F29, 0x0000, 0x0000, 0x0000, 0x8ADA, - 0x0000, 0x4E98, 0x50CD, 0x510D, 0x4FA2, 0x4F03, 0x0000, 0x0000, 0x4F42, - 0x502E, 0x506C, 0x5081, 0x4FCC, 0x4FE5, 0x5058, 0x50FC, 0x6E76, 0x0000, - 0x0000, 0x0000, 0x6D72, 0x0000, 0x0000, 0x51A8, 0x51C3, 0x0000, 0x44DD, - 0x0000, 0x0000, 0x0000, 0x8D7A, 0x0000, 0x0000, 0x5259, 0x52A4, 0x0000, - 0x52E1, 0xFFFD, 0x467A, 0x718C, 0x0000, 0x0000, 0x0000, 0x0000, 0x69D1, - 0x0000, 0xFFFD, 0x3EDE, 0x7499, 0x7414, 0x7456, 0x7398, 0x4B8E, 0x0000, - 0x0000, 0x53D0, 0x3584, 0x720F, 0x0000, 0x55B4, 0x0000, 0x54CD, 0x0000, - 0x571D, 0x925D, 0x96F4, 0x57DD, 0x578D, 0x577F, 0x363E, 0x58CB, 0x5A99, - 0x0000, 0x0000, 0x0000, 0x0000, 0x5A2C, 0x59B8, 0x5A7E, 0x5ACF, 0x5A12, - 0x0000, 0x0000, 0x0000, 0x0000, 0x36F5, 0x6D05, 0x7443, 0x5A21, 0x0000, - 0x5A81, 0x0000, 0x0000, 0x93E0, 0x748C, 0x0000, 0x7105, 0x4972, 0x9408, - 0x0000, 0x93BD, 0x37A0, 0x5C1E, 0x5C9E, 0x5E5E, 0x5E48, 0x0000, 0x0000, - 0x0000, 0x5ECD, 0x5B4F, 0x0000, 0x0000, 0x3701, 0x0000, 0x36DD, 0x0000, - 0x36D3, 0x812A, 0x0000, 0x0000, 0x0000, 0x0000, 0x5F0C, 0x5F0E, 0x0000, - 0x0000, 0x5A6B, 0x0000, 0x5B44, 0x0000, 0x8860, 0x607E, 0x0000, 0x0000, - 0x5FDB, 0x3EB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x61C0, 0x0000, 0x0000, - 0x0000, 0x6199, 0x6198, 0x6075, 0x0000, 0x0000, 0x0000, 0x0000, 0x6471, - 0x0000, 0x0000, 0x3A29, 0x0000, 0x0000, 0x0000, 0x0000, 0x6337, 0x64B6, - 0x6331, 0x63D1, 0x0000, 0x0000, 0x62A4, 0x0000, 0x643B, 0x656B, 0x6972, - 0x3BF4, 0x0000, 0x0000, 0x0000, 0x0000, 0x550D, 0x0000, 0x0000, 0x0000, - 0x66CE, 0x0000, 0x0000, 0x3AE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x78EE, 0x0000, 0x0000, 0x0000, 0x3464, 0x0000, 0x0000, 0x0000, - 0x668E, 0x0000, 0x666B, 0x4B93, 0x6630, 0x0000, 0x0000, 0x6663, 0x0000, - 0x0000, 0x661E, 0x0000, 0x38D1, 0x0000, 0x0000, 0x3B99, 0x0000, 0x0000, - 0x74D0, 0x3B96, 0x0000, 0x68B6, 0xFFFD, 0x3BC4, 0x6ABE, 0x0000, 0x0000, - 0x6A33, 0x6A52, 0x6AC9, 0x6B05, 0x0000, 0x6511, 0x6898, 0x6A4C, 0x3BD7, - 0x6A7A, 0x6B57, 0x0000, 0x0000, 0x93A0, 0x92F2, 0x0000, 0x0000, 0x9289, - 0x0000, 0x0000, 0x9467, 0x6DA5, 0x6F0B, 0xFFFD, 0x0000, 0x3D8F, 0x6E04, - 0x0000, 0x5A3D, 0x6E0A, 0x5847, 0x6D24, 0x7842, 0x713B, 0x0000, 0x0000, - 0x70F1, 0x7250, 0x7287, 0x7294, 0x0000, 0x0000, 0x5179, 0x0000, 0x0000, - 0x747A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3F06, 0x3EB1, 0x0000, - 0x0000, 0x0000, 0x60A7, 0x3EF3, 0x74CC, 0x743C, 0x9387, 0x7437, 0x449F, - 0x0000, 0x4551, 0x7583, 0x3F63, 0x0000, 0x0000, 0x3F58, 0x7555, 0x7673, - 0x0000, 0xFFFD, 0x7468, 0x0000, 0x0000, 0x0000, 0x3AFB, 0x3DCD, 0x0000, - 0x3EFF, 0x0000, 0x0000, 0x91FA, 0x5732, 0x9342, 0x0000, 0x0000, 0x50DF, - 0x0000, 0x0000, 0x7778, 0x0000, 0x770E, 0x770F, 0x777B, 0x0000, 0x0000, - 0x3A5E, 0x0000, 0x7438, 0x749B, 0x3EBF, 0x0000, 0x0000, 0x40C8, 0x0000, - 0x0000, 0x9307, 0x0000, 0x781E, 0x788D, 0x7888, 0x78D2, 0x73D0, 0x7959, - 0x0000, 0x0000, 0x410E, 0xFFFD, 0xFFFD, 0x79A5, 0x6A2D, 0x0000, 0x7A3A, - 0x79F4, 0x416E, 0x0000, 0x4132, 0x9235, 0x79F1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x3597, 0x556B, 0x3570, 0x36AA, 0x0000, 0x0000, 0x7AE2, - 0x5A59, 0x0000, 0x0000, 0x0000, 0x5A0D, 0x0000, 0x78F0, 0x5A2A, 0x0000, - 0x7AFE, 0x41F9, 0x7C5D, 0x7C6D, 0x4211, 0x0000, 0x0000, 0x0000, 0x7CCD, - 0x0000, 0x0000, 0x7C8E, 0x7C7C, 0x7CAE, 0x6AB2, 0x7DDC, 0x7E07, 0x7DD3, - 0x7F4E, 0x0000, 0x0000, 0x0000, 0x7D97, 0x0000, 0x426A, 0x0000, 0x0000, - 0x67D6, 0x0000, 0x0000, 0x57C4, 0x0000, 0x0000, 0x7FDD, 0x7B27, 0x0000, - 0x0000, 0x0000, 0x7B0C, 0x0000, 0x99E6, 0x8645, 0x9A63, 0x6A1C, 0x0000, - 0x0000, 0x0000, 0x9A1F, 0x0000, 0x8495, 0x0000, 0x0000, 0x44EA, 0x8137, - 0x4402, 0x80C6, 0x8109, 0x8142, 0x0000, 0x98C3, 0x0000, 0x8262, 0x8265, - 0x0000, 0x8453, 0x0000, 0x8610, 0x0000, 0x5A86, 0x417F, 0x0000, 0x5B2B, - 0x0000, 0x5AE4, 0x0000, 0x86A0, 0x0000, 0x0000, 0x882D, 0x0000, 0x5A02, - 0x886E, 0x4F45, 0x8887, 0x88BF, 0x88E6, 0x8965, 0x894D, 0x0000, 0x8954, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3EAD, 0x84A3, 0x46F5, - 0x46CF, 0x37F2, 0x8A3D, 0x8A1C, 0x0000, 0x5F4D, 0x922B, 0x0000, 0x65D4, - 0x7129, 0x70C4, 0x0000, 0x9D6D, 0x8C9F, 0x8CE9, 0x0000, 0x599A, 0x77C3, - 0x59F0, 0x36D4, 0x8E2A, 0x8EA7, 0x0000, 0x8F30, 0x8F4A, 0x42F4, 0x6C58, - 0x6FBB, 0x0000, 0x489B, 0x6F79, 0x6E8B, 0x0000, 0x9BE9, 0x36B5, 0x0000, - 0x90BB, 0x48B4, 0x5571, 0x4906, 0x91BB, 0x9404, 0x0000, 0x4062, 0x0000, - 0x9427, 0x0000, 0x0000, 0x84E5, 0x8A2B, 0x9599, 0x95A7, 0x9597, 0x9596, - 0x0000, 0x7445, 0x3EC2, 0x0000, 0x0000, 0x0000, 0x3EE7, 0x0000, 0x968F, - 0x0000, 0x0000, 0x0000, 0x3ECC, 0x0000, 0x0000, 0x0000, 0x7412, 0x746B, - 0x3EFC, 0x9741, 0x0000, 0x6847, 0x4A1D, 0x0000, 0x0000, 0xFFFD, 0x9368, - 0x0000, 0x0000, 0x0000, 0x0000, 0x92BA, 0x5B11, 0x8B69, 0x493C, 0x73F9, - 0x0000, 0x979B, 0xFFFD, 0x9938, 0x0000, 0x5DC1, 0x0000, 0x0000, 0x981F, - 0x0000, 0x92F6, 0x0000, 0x91E5, 0x44C0, 0x0000, 0x0000, 0x0000, 0x98DC, - 0x0000, 0x3F00, 0x922A, 0x4925, 0x8414, 0x993B, 0x994D, 0x0000, 0x3DFD, - 0xFFFD, 0x4B6F, 0x99AA, 0x9A5C, 0x0000, 0x0000, 0x6A8F, 0x9A21, 0x5AFE, - 0x9A2F, 0x0000, 0x4B90, 0x0000, 0x99BC, 0x4BBD, 0x4B97, 0x937D, 0x5872, - 0x0000, 0x5822, 0x0000, 0x0000, 0x7844, 0x0000, 0x0000, 0x68C5, 0x3D7D, - 0x9458, 0x3927, 0x6150, 0x0000, 0x0000, 0x6107, 0x9C4F, 0x9C53, 0x9C7B, - 0x9C35, 0x9C10, 0x9B7F, 0x9BCF, 0x0000, 0x9B9F, 0x0000, 0x0000, 0x9D21, - 0x4CAE, 0x0000, 0x9E18, 0x4CB0, 0x9D0C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x9DA5, 0x84BD, 0x0000, 0x0000, 0x0000, 0x85FC, 0x4533, 0x0000, 0x0000, - 0x0000, 0x8420, 0x85EE, 0x0000, 0x0000, 0x0000, 0x79E2, 0x0000, 0x0000, - 0x0000, 0x3D62, 0x93DB, 0x92BE, 0x9348, 0x0000, 0x78B9, 0x9277, 0x944D, - 0x4FE4, 0x3440, 0x9064, 0x0000, 0x783D, 0x7854, 0x78B6, 0x784B, 0x0000, - 0x0000, 0x0000, 0x369A, 0x4F72, 0x6FDA, 0x6FD9, 0xFFFD, 0x701E, 0x5414, - 0x0000, 0x57BB, 0x58F3, 0x578A, 0x9D16, 0x57D7, 0x7134, 0x34AF, 0x0000, - 0x71EB, 0x0000, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x610C, 0x5ACE, 0x5A0B, - 0x42BC, 0x0000, 0x372C, 0x4B7B, 0x0000, 0x93BB, 0x93B8, 0x0000, 0x0000, - 0x8472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5994, 0x0000, 0x0000, - 0x7DA8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92E5, 0x73E2, 0x3EE9, - 0x74B4, 0x0000, 0x0000, 0x3EE1, 0x0000, 0x6AD8, 0x73F3, 0x73FB, 0x3ED6, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7448, 0x0000, - 0x70A5, 0x0000, 0x9284, 0x73E6, 0x935F, 0x0000, 0x9331, 0x0000, 0x0000, - 0x9386, 0x0000, 0x0000, 0x4935, 0x0000, 0x716B, 0x0000, 0x0000, 0x56A4, - 0x0000, 0x0000, 0x0000, 0x5502, 0x79C4, 0x0000, 0x7DFE, 0x0000, 0x0000, - 0x0000, 0x452E, 0x9401, 0x370A, 0x0000, 0x0000, 0x59B0, 0x0000, 0x0000, - 0x0000, 0x5AA1, 0x36E2, 0x0000, 0x36B0, 0x925F, 0x5A79, 0x0000, 0x0000, - 0x9374, 0x3CCD, 0x0000, 0x4A96, 0x398A, 0x50F4, 0x3D69, 0x3D4C, 0x0000, - 0x7175, 0x42FB, 0x0000, 0x6E0F, 0x0000, 0x44EB, 0x6D57, 0x0000, 0x7067, - 0x6CAF, 0x3CD6, 0x0000, 0x0000, 0x6E02, 0x6F0C, 0x3D6F, 0x0000, 0x7551, - 0x36BC, 0x34C8, 0x4680, 0x3EDA, 0x4871, 0x59C4, 0x926E, 0x493E, 0x8F41, - 0x0000, 0x0000, 0x5812, 0x57C8, 0x36D6, 0x0000, 0x70FE, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x68B9, 0x6967, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x6A1A, 0x0000, 0x0000, 0x843E, 0x44DF, - 0x44CE, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x833D, 0x0000, - 0x83ED, 0x0000, 0x0000, 0x0000, 0x5989, 0x5A82, 0x0000, 0x5A61, 0x5A71, - 0x0000, 0x0000, 0x372D, 0x59EF, 0x0000, 0x36C7, 0x718E, 0x9390, 0x669A, - 0x0000, 0x5A6E, 0x5A2B, 0x0000, 0x6A2B, 0x0000, 0x0000, 0x0000, 0x0000, - 0x711D, 0x0000, 0x0000, 0x4FB0, 0x0000, 0x5CC2, 0x0000, 0x0000, 0x0000, - 0x6A0C, 0x0000, 0x0000, 0xFFFD, 0x7133, 0x0000, 0x3DA5, 0x6CDF, 0x0000, - 0x59EB, 0x5F5C, 0x0000, 0x7CD3, 0x0000, 0x0000, 0x0000, 0x906C, 0x81F6, - 0x770C, 0x6CA2, 0x56FD, 0x5869, 0x6761, 0x5C5E, 0x58F2, 0x70B9, 0x6803, - 0x8FBB, 0x8FBC, 0x4E21, 0x7B39, 0x3DCC, 0x732A, 0x7560, 0x583A, 0x82A6, - 0x698A, 0x60E3, 0x4EEE, 0x99C4, 0x9EBF, 0x5301, 0x67A0, 0x60E8, 0x51B4, - 0x7A83, 0x9C3A, 0x7AC8, 0x691A, 0x59AC, 0x5840, 0x546A, 0x60E7, 0x567A, - 0x6955, 0x9C2F, 0x87A5, 0x5C20, 0x5E0B, 0x671E, 0x84AD, 0x8B81, 0x4E78, - 0x62C3, 0x6855, 0xFFFD, 0x82FD, 0x89A5, 0x8FA0, 0x97B8, 0x9847, 0x9ABD, - 0x5FB1, 0x6648, 0x66BF, 0x0000, 0xFFFD, 0x0000, 0xFFFD, 0xFFFD, 0x0000, - 0x670E, 0x6918, 0x0000, 0x0000, 0x0000, 0x0000, 0x48D0, 0x4AB8, 0x0000, - 0x0000, 0x0000, 0x0000, 0x51D2, 0x0000, 0x599F, 0x0000, 0x3BBE, 0x0000, - 0x399B, 0x0000, 0x0000, 0x3762, 0x0000, 0x8B5E, 0x0000, 0xFFFD, 0x7209, - 0x0000, 0x0000, 0x8EDA, 0x528F, 0x7171, 0x0000, 0x0000, 0x55BC, 0x0000, - 0x3473, 0x0000, 0x4718, 0x0000, 0x5066, 0x34FB, 0x0000, 0xFFFD, 0x477C, - 0x0000, 0x0000, 0xFFFD, 0x0000, 0x9056, 0x0000, 0x8B62, 0x5D5B, 0x0000, - 0xFFFD, 0x0000, 0x8AEA, 0x0000, 0x0000, 0x4BC0, 0x0000, 0x9465, 0x0000, - 0x6195, 0x5A27, 0x0000, 0x0000, 0x0000, 0x4E6A, 0x0000, 0x9656, 0x6D8F, - 0x0000, 0x8977, 0x0000, 0xFFFD, 0x7B42, 0x0000, 0x0000, 0xFFFD, 0x7A45, - 0x9A26, 0x365F, 0x0000, 0x0000, 0x7983, 0x5D2C, 0x0000, 0xFFFD, 0x46D0, - 0x753B, 0x8865, 0x58B6, 0x371C, 0x0000, 0x3C54, 0x9281, 0x0000, 0x9330, - 0x0000, 0x6C39, 0x0000, 0x8827, 0x88F5, 0x0000, 0x0000, 0x0000, 0x6EB8, - 0x0000, 0x0000, 0x39A4, 0xFFFD, 0xFFFD, 0x453F, 0x66B6, 0x0000, 0x0000, - 0x8943, 0x40DF, 0x0000, 0x39A1, 0x0000, 0x0000, 0x0000, 0x71AD, 0x8366, - 0x0000, 0xFFFD, 0x4CB7, 0x0000, 0x0000, 0x0000, 0x7B43, 0x797E, 0x6FB5, - 0x0000, 0x6A03, 0x0000, 0x53A2, 0x0000, 0x93BF, 0x6836, 0x975D, 0x0000, - 0x0000, 0x0000, 0x0000, 0x5D85, 0x0000, 0x5715, 0x9823, 0x0000, 0x5DAB, - 0x0000, 0x65BE, 0x69D5, 0x53D2, 0x0000, 0x0000, 0x3C11, 0x6736, 0x0000, - 0x35CA, 0x48FA, 0xFFFD, 0x7808, 0x9255, 0x43F2, 0x43DF, 0x59F8, 0xFFFD, - 0x568B, 0x0000, 0x9012, 0x55C1, 0x4509, 0x7E7F, 0x6F56, 0x6AB1, 0x34E4, - 0x0000, 0x373A, 0xFFFD, 0x0000, 0x0000, 0x3DEB, 0x0000, 0x0000, 0x56BF, - 0x8E0E, 0x5B6D, 0x63DE, 0xFFFD, 0x6530, 0x562D, 0x541A, 0x0000, 0x4C7D, - 0x5622, 0x561E, 0x7F49, 0x5975, 0x0000, 0x8770, 0x8117, 0x9D5E, 0x8D18, - 0x763B, 0x9C45, 0x764E, 0x77B9, 0x9345, 0x5432, 0x8148, 0x82F7, 0x5625, - 0x8132, 0x8418, 0x80BD, 0x55EA, 0x7962, 0x5643, 0x5416, 0x0000, 0x35CE, - 0x5605, 0x55F1, 0x66F1, 0x0000, 0x362D, 0x7534, 0x55F0, 0x55BA, 0x5497, - 0x5572, 0x0000, 0x0000, 0x5ED0, 0x0000, 0x0000, 0x0000, 0x9EAB, 0x7D5A, - 0xFFFD, 0x0000, 0x629D, 0x976D, 0x5494, 0x8CCD, 0x71F6, 0x9176, 0x63FC, - 0x63B9, 0x63FE, 0x5569, 0x0000, 0x9C72, 0x0000, 0x519A, 0x34DF, 0x0000, - 0x51A7, 0x544D, 0x551E, 0x5513, 0x7666, 0x8E2D, 0x0000, 0x75B1, 0x80B6, - 0x8804, 0xFFFD, 0x88C7, 0x81B6, 0x841C, 0x44EC, 0x7304, 0x830B, 0x567B, - 0x9170, 0x9208, 0x0000, 0x7266, 0x474E, 0x0000, 0x40FA, 0x9C5D, 0x651F, - 0x48F3, 0x0000, 0x0000, 0xFFFD, 0x0000, 0xED2B, 0x0000, 0x71A3, 0x7E8E, - 0x9D50, 0x3577, 0x6CB2, 0x5367, 0x39DC, 0x0000, 0x822D, 0x544B, 0xED43, - 0x3A52, 0x7374, 0x0000, 0x4D09, 0x9BED, 0xFFFD, 0x4C5B, 0x0000, 0x845C, - 0x0000, 0x632E, 0x7D25, 0x3A2A, 0x9008, 0x52CC, 0x3E74, 0x367A, 0x45E9, - 0x0000, 0x7640, 0x5AF0, 0x0000, 0x787A, 0x0000, 0x58A7, 0x40BF, 0x567C, - 0x9B8B, 0x5D74, 0x7654, 0x0000, 0x9E85, 0x4CE1, 0xFFFD, 0x37FB, 0x6119, - 0x0000, 0xED73, 0x565D, 0x0000, 0x5234, 0x35AD, 0xFFFD, 0x9D7C, 0x7C56, - 0x9B39, 0x57DE, 0x5C53, 0x64D3, 0x0000, 0x0000, 0x86AD, 0x0000, 0x0000, - 0xED8C, 0x51FE, 0x0000, 0x5D8E, 0x9703, 0x0000, 0x9E81, 0x904C, 0x7B1F, - 0x9B02, 0x5CD1, 0x7BA3, 0x6268, 0x6335, 0x9AFF, 0x7BCF, 0x9B2A, 0x7C7E, - 0xFFFD, 0x7C42, 0x7C86, 0x9C15, 0x7BFC, 0x9B09, 0xFFFD, 0x9C2E, 0x9F5A, - 0x5573, 0x5BC3, 0x4FFD, 0x9E98, 0x4FF2, 0x5260, 0x52D1, 0x5767, 0x5056, - 0x59B7, 0x5E12, 0x97C8, 0x9DAB, 0x8F5C, 0x5469, 0x97B4, 0x9940, 0x97BA, - 0x532C, 0x6130, 0x692C, 0x53DA, 0x9C0A, 0x9D02, 0x4C3B, 0x9641, 0x6980, - 0x50A6, 0x7546, 0x0000, 0x99DA, 0x5273, 0xEDC9, 0x9159, 0x9681, 0x915C, - 0xEDCD, 0x9151, 0x0000, 0x637F, 0x6ACA, 0x5611, 0x918E, 0x757A, 0x6285, - 0x734F, 0x7C70, 0x0000, 0xEDDC, 0x76D6, 0x9B9D, 0x4E2A, 0x0000, 0x83BE, - 0x8842, 0xEDE4, 0x5C4A, 0x69C0, 0xFFFD, 0xFFFD, 0x521F, 0x5DF5, 0x4ECE, - 0x6C31, 0x0000, 0x4F39, 0x549C, 0xFFFD, 0x529A, 0x8D82, 0x35FE, 0xFFFD, - 0x35F3, 0xEDF6, 0x6B52, 0x917C, 0x9FA5, 0x9B97, 0x982E, 0x98B4, 0x9ABA, - 0x9EA8, 0x9E84, 0x7B14, 0xEE02, 0x6BFA, 0x8818, 0x7F78, 0xEE06, 0x5620, - 0x0000, 0x8E77, 0x9F53, 0xEE0B, 0x8DD4, 0x8E4F, 0x9E1C, 0x8E01, 0x6282, - 0x0000, 0x8E28, 0x8E75, 0x7AD3, 0x7A3E, 0x78D8, 0x6CEA, 0x8A67, 0x7607, - 0x9F26, 0x6CCE, 0x87D6, 0x75C3, 0x0000, 0x7853, 0x8D0C, 0x72E2, 0x7371, - 0x8B2D, 0x7302, 0x74F1, 0x8CEB, 0x0000, 0x862F, 0x5FBA, 0x88A0, 0x44B7, - 0xEE2F, 0x0000, 0xEE32, 0x8A7E, 0x0000, 0xEE35, 0x60FD, 0x7667, 0x9AD7, - 0x9D44, 0x936E, 0x9B8F, 0x87F5, 0xEE3D, 0xFFFD, 0x8CF7, 0x732C, 0x9721, - 0x9BB0, 0x35D6, 0x72B2, 0x4C07, 0x7C51, 0x994A, 0x6159, 0x4C04, 0x9E96, - 0x617D, 0xEE4D, 0x575F, 0x616F, 0x62A6, 0x6239, 0xFFFD, 0x3A5C, 0x61E2, - 0x53AA, 0x6364, 0x6802, 0x35D2, 0x5D57, 0x8FDA, 0x0000, 0xEE5E, 0x50D9, - 0x7906, 0x5332, 0x9638, 0x0000, 0x4065, 0xEE66, 0x77FE, 0xEE68, 0x7CC2, - 0x0000, 0x7CDA, 0x7A2D, 0x8066, 0x8063, 0x7D4D, 0x7505, 0x74F2, 0x8994, - 0x821A, 0x670C, 0x8062, 0x0000, 0x805B, 0x74F0, 0x8103, 0x7724, 0x8989, - 0x0000, 0x7553, 0x87A9, 0x87CE, 0x81C8, 0x878C, 0x8A49, 0x8CAD, 0x8B43, - 0x772B, 0x74F8, 0x84DA, 0x69B2, 0x8DA6, 0xEE8C, 0x89A9, 0xFFFD, 0x6DB9, - 0x87C1, 0x0000, 0x74E7, 0x3DDB, 0x7176, 0x60A4, 0x619C, 0x3CD1, 0xFFFD, - 0x6077, 0xEE9A, 0x7F71, 0x0000, 0x60E9, 0x4B7E, 0x0000, 0x92DB, 0x0000, - 0x0000, 0x854C, 0x42B5, 0x73EF, 0x51B5, 0x3649, 0x0000, 0x0000, 0x9344, - 0x0000, 0x82EE, 0x0000, 0x783C, 0x6744, 0x62DF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x4FAB, 0x0000, 0x5008, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0xFFFD, 0x0000, 0x5FA4, 0x0000, 0x0000, 0x6EDB, 0x0000, 0x50DE, - 0x5101, 0x347A, 0x510E, 0x986C, 0x3743, 0x8416, 0x0000, 0x0000, 0x5160, - 0x0000, 0x516A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x5B82, 0x877D, 0x0000, 0x0000, 0x51B2, 0x51B8, 0x9D34, 0x51C9, 0x51CF, - 0x51D1, 0x3CDC, 0x51D3, 0x0000, 0x51B3, 0xFFFD, 0xFFFD, 0x51ED, 0x83CD, - 0x693E, 0x0000, 0x5F7B, 0x520B, 0x5226, 0x523C, 0x52B5, 0x5257, 0x5294, - 0x52B9, 0x52C5, 0x7C15, 0x8542, 0x52E0, 0x860D, 0x0000, 0x0000, 0x0000, - 0x5549, 0x6ED9, 0x0000, 0x0000, 0x0000, 0x5333, 0xFFFD, 0x0000, 0x6CCB, - 0x0000, 0x681B, 0x73D5, 0x604A, 0x3EAA, 0x38CC, 0x0000, 0x71DD, 0x44A2, - 0x536D, 0x5374, 0x0000, 0x537E, 0x0000, 0x0000, 0x0000, 0x77E6, 0x5393, - 0x0000, 0x53A0, 0x53AB, 0x53AE, 0x73A7, 0x0000, 0x3F59, 0x739C, 0x53C1, - 0x53C5, 0x6C49, 0x4E49, 0x57FE, 0x53D9, 0x3AAB, 0x0000, 0x53E0, 0x0000, - 0x0000, 0x53F6, 0x0000, 0x5413, 0x7079, 0x552B, 0x6657, 0x6D5B, 0x546D, - 0x0000, 0x0000, 0x555D, 0x548F, 0x54A4, 0x47A6, 0x0000, 0x0000, 0x3DB4, - 0x0000, 0x0000, 0x0000, 0x5547, 0x4CED, 0x542F, 0x7417, 0x5586, 0x55A9, - 0xFFFD, 0x0000, 0x0000, 0x4552, 0x0000, 0x66B3, 0x0000, 0x5637, 0x66CD, - 0x0000, 0x66A4, 0xFFFD, 0x564D, 0x564F, 0x78F1, 0x56F1, 0x9787, 0x53FE, - 0x5700, 0x56EF, 0x56ED, 0x0000, 0x3623, 0x0000, 0x5746, 0x0000, 0x6C6E, - 0x708B, 0x5742, 0x36B1, 0x0000, 0x57E6, 0x0000, 0x5803, 0x0000, 0x0000, - 0x5826, 0x0000, 0x581F, 0x58AA, 0x3561, 0x58E0, 0x58DC, 0x0000, 0x58FB, - 0x5BFF, 0x5743, 0x0000, 0x0000, 0x93D3, 0x35A1, 0x591F, 0x68A6, 0x36C3, - 0x6E59, 0x0000, 0x5A24, 0xFFFD, 0x0000, 0x8505, 0x59C9, 0x0000, 0x0000, - 0x0000, 0x0000, 0x59D9, 0x0000, 0x0000, 0x0000, 0x6D71, 0x0000, 0x0000, - 0x59F9, 0x0000, 0x5AAB, 0x5A63, 0x36E6, 0x0000, 0xFFFD, 0x3708, 0x5A96, - 0x7465, 0x5AD3, 0x0000, 0x0000, 0x0000, 0x3732, 0x0000, 0x5E83, 0x52D0, - 0x5B76, 0x6588, 0x5B7C, 0x0000, 0x4004, 0x485D, 0x0000, 0x5BD5, 0x0000, - 0x0000, 0x0000, 0x5BF3, 0x5B9D, 0x4D10, 0x5C05, 0x0000, 0x5C13, 0x73CE, - 0x5C14, 0x0000, 0x0000, 0x5C49, 0x48DD, 0x5C85, 0x5CE9, 0x5CEF, 0x5D8B, - 0x0000, 0x0000, 0x5D10, 0x5D18, 0x5D46, 0x0000, 0x5CBA, 0x5DD7, 0x82FC, - 0x382D, 0x0000, 0x0000, 0x0000, 0x8287, 0x3836, 0x3BC2, 0x5E2E, 0x6A8A, - 0xFFFD, 0xE12F, 0x0000, 0x0000, 0x53A6, 0x4EB7, 0xFFFD, 0x53A8, 0x0000, - 0x5E09, 0xE138, 0x0000, 0x5EF9, 0x5EFB, 0x38A0, 0x5EFC, 0x683E, 0x941B, - 0x5F0D, 0x0000, 0x0000, 0x3ADE, 0x0000, 0x5F3A, 0x0000, 0x0000, 0x0000, - 0x5F63, 0x0000, 0x5F72, 0x9340, 0x0000, 0x5FA7, 0x5DB6, 0x3D5F, 0x0000, - 0x0000, 0x0000, 0x0000, 0x91D6, 0x0000, 0x0000, 0x6031, 0x6685, 0x3963, - 0x3DC7, 0x3639, 0x5790, 0x0000, 0x7971, 0x3E40, 0x609E, 0xFFFD, 0x60EA, - 0x0000, 0x0000, 0x0000, 0x74A4, 0x50E1, 0x5AA0, 0x6164, 0x6142, 0x0000, - 0x0000, 0x6181, 0x51F4, 0x0000, 0x6187, 0x5BAA, 0x0000, 0x0000, 0x61D3, - 0x0000, 0x0000, 0x61D0, 0x3932, 0x0000, 0x0000, 0x6023, 0x615C, 0x651E, - 0x638B, 0x0000, 0x62C5, 0x0000, 0x62D5, 0x0000, 0x636C, 0x0000, 0x3A17, - 0x6438, 0x63F8, 0x0000, 0x0000, 0x6F8A, 0x0000, 0xFFFD, 0x0000, 0x64E1, - 0x64E5, 0x947B, 0x3A66, 0x643A, 0x3A57, 0x654D, 0x6F16, 0x0000, 0x0000, - 0x6585, 0x656D, 0x655F, 0xFFFD, 0x65B5, 0x0000, 0x4B37, 0x65D1, 0x40D8, - 0x0000, 0xE1AB, 0x65E3, 0x5FDF, 0x0000, 0x6618, 0x0000, 0x0000, 0x6644, - 0x0000, 0x0000, 0x664B, 0x0000, 0x6667, 0x0000, 0x6673, 0xFA12, 0x0000, - 0x0000, 0x0000, 0x0000, 0x77C5, 0x0000, 0x99A4, 0x6702, 0x0000, 0x0000, - 0x69FA, 0x0000, 0x0000, 0x6767, 0x6762, 0x0000, 0x0000, 0x67D7, 0x44E9, - 0x6822, 0x6E50, 0x923C, 0x6801, 0x0000, 0x0000, 0x685D, 0x0000, 0x69E1, - 0x6A0B, 0x0000, 0x6973, 0x68C3, 0x0000, 0x6901, 0x6900, 0x3A01, 0x0000, - 0x3B80, 0x67AC, 0x6961, 0x0000, 0x42FC, 0x6936, 0x6998, 0x3BA1, 0x0000, - 0x8363, 0x5090, 0x69F9, 0x0000, 0x0000, 0x6A45, 0x0000, 0x6A9D, 0x3BF3, - 0x67B1, 0x6AC8, 0x0000, 0x3C0D, 0x6B1D, 0x0000, 0x60DE, 0x6B35, 0x6B74, - 0x0000, 0x6EB5, 0x0000, 0xFFFD, 0x0000, 0x3740, 0x5421, 0x0000, 0x6BE1, - 0x0000, 0x6BDC, 0x6C37, 0x0000, 0x0000, 0x0000, 0x6C5A, 0x8226, 0x6C79, - 0x0000, 0x44C5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x36E5, 0x3CEB, - 0x0000, 0x9B83, 0x0000, 0x0000, 0x7F8F, 0x6837, 0x0000, 0x0000, 0x0000, - 0x6D96, 0x6D5C, 0x6E7C, 0x6F04, 0x0000, 0x0000, 0x0000, 0x8533, 0x0000, - 0x51C7, 0xFFFD, 0xFFFD, 0x842E, 0x0000, 0x0000, 0x0000, 0x7453, 0x0000, - 0x79CC, 0x6E4F, 0x5A91, 0x0000, 0x6FF8, 0x370D, 0x6F9D, 0x0000, 0x6EFA, - 0x0000, 0x0000, 0x4555, 0x93F0, 0x6F44, 0x6F5C, 0x3D4E, 0x6F74, 0x0000, - 0x3D3B, 0x6F9F, 0x0000, 0x6FD3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x51DF, 0xE251, 0xE252, 0x0000, 0x0000, 0x704B, 0x707E, 0x70A7, - 0xFFFD, 0x70CC, 0x70D5, 0x70D6, 0x70DF, 0x4104, 0x3DE8, 0x71B4, 0x7196, - 0x0000, 0x712B, 0x7145, 0x5A88, 0x714A, 0xFA48, 0x0000, 0x714F, 0x9362, - 0x0000, 0x712C, 0x0000, 0x0000, 0x0000, 0x71BA, 0x0000, 0x70BD, 0x720E, - 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0x0000, 0x722E, 0x7240, - 0x0000, 0x68BD, 0x7255, 0x7257, 0x3E55, 0x0000, 0x680D, 0x6F3D, 0x7282, - 0xFFFD, 0x732B, 0x0000, 0x0000, 0x48ED, 0x0000, 0x7328, 0x732E, 0x73CF, - 0x73AA, 0x0000, 0x0000, 0x73C9, 0x7449, 0x0000, 0x0000, 0x0000, 0x6623, - 0x36C5, 0x0000, 0x0000, 0x0000, 0x73F7, 0x7415, 0x6903, 0x0000, 0x7439, - 0x3ED7, 0x0000, 0x0000, 0x7460, 0x0000, 0x7447, 0x73E4, 0x7476, 0x83B9, - 0x746C, 0x7474, 0x93F1, 0x6A2C, 0x7482, 0x4953, 0x0000, 0x0000, 0x0000, - 0x0000, 0x5B46, 0x0000, 0x0000, 0x74C8, 0x0000, 0x750E, 0x751E, 0x0000, - 0x0000, 0x5BD7, 0x0000, 0x9385, 0x754D, 0x754A, 0x7567, 0x756E, 0x0000, - 0x3F04, 0x0000, 0x758E, 0x745D, 0x759E, 0x75B4, 0x7602, 0x762C, 0x7651, - 0x764F, 0x766F, 0xE2D3, 0x0000, 0x7690, 0x81EF, 0x37F8, 0x0000, 0x0000, - 0x76A1, 0x76A5, 0x76B7, 0x76CC, 0x0000, 0x8462, 0x0000, 0x0000, 0x0000, - 0x771E, 0x7726, 0x7740, 0x64AF, 0x0000, 0x7758, 0x0000, 0x77AF, 0x0000, - 0x0000, 0x0000, 0x77F4, 0xFFFD, 0x68CA, 0x78AF, 0x78C7, 0x78D3, 0x96A5, - 0x792E, 0x0000, 0x78D7, 0x7934, 0x78B1, 0x0000, 0x8FB8, 0x8884, 0x0000, - 0x7986, 0x8900, 0x6902, 0x7980, 0x0000, 0x799D, 0x0000, 0x793C, 0x79A9, - 0x6E2A, 0x0000, 0x3EA8, 0x79C6, 0x0000, 0x79D4, 0xFFFD, 0x5525, 0xFFFD, - 0x0000, 0x0000, 0x0000, 0x5590, 0x0000, 0x39EC, 0x0000, 0x8E46, 0x0000, - 0x0000, 0xFFFD, 0x0000, 0x777A, 0x0000, 0x3A34, 0x47D5, 0x0000, 0x0000, - 0x0000, 0x64DD, 0x0000, 0x0000, 0x0000, 0xFFFD, 0x648D, 0x8E7E, 0x0000, - 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x0000, - 0x47F4, 0x0000, 0x0000, 0x9AB2, 0x3A67, 0x0000, 0x3FED, 0x3506, 0x0000, - 0x0000, 0xFFFD, 0x0000, 0x9D6E, 0x9815, 0xFFFD, 0x43D9, 0xFFFD, 0x64B4, - 0x54E3, 0xFFFD, 0x0000, 0xFFFD, 0x39FB, 0xFFFD, 0x0000, 0x0000, 0x0000, - 0x64EA, 0x0000, 0x0000, 0x8E68, 0xFFFD, 0x0000, 0x0000, 0xFFFD, 0x480B, - 0x0000, 0x3FFA, 0x5873, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, - 0xFFFD, 0x5579, 0xFFFD, 0x43BA, 0xFFFD, 0x4AB4, 0x0000, 0x0000, 0x81AA, - 0x98F5, 0x0000, 0x6379, 0x39FE, 0x0000, 0x8DC0, 0x56A1, 0x647C, 0x3E43, - 0xFFFD, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, 0x3992, - 0x3A06, 0x0000, 0x3578, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, - 0x34BC, 0x6C3D, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3A18, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x95AA, 0xFFFD, 0x0000, 0x7140, 0xFFFD, 0x5156, - 0x4EFE, 0x5088, 0xFFFD, 0x3493, 0x5186, 0x5E42, 0x5205, 0x5227, 0x5279, - 0x0000, 0x3553, 0x53C2, 0x535F, 0xFFFD, 0x553F, 0xFFFD, 0x55D8, 0x35DD, - 0x5621, 0xFFFD, 0x5654, 0x0000, 0xFFFD, 0x0000, 0xFFFD, 0x0000, 0xFFFD, - 0xFFFD, 0x37B9, 0x5CC1, 0x5D15, 0x5D56, 0x3838, 0x4E81, 0x5EBD, 0x3914, - 0x61B9, 0x6290, 0x6318, 0x645A, 0x6491, 0x816D, 0x8184, 0x8193, 0x6800, - 0x3BBC, 0x728F, 0x72CD, 0x0000, 0x7339, 0x7542, 0x75DC, 0x3FC0, 0x0000, - 0x3FD7, 0xFFFD, 0x7680, 0x768C, 0x40A8, 0x7839, 0x4103, 0x7A91, 0x7C1B, - 0x7CED, 0x7F93, 0x7FAE, 0xFFFD, 0x82FF, 0x585F, 0x86B2, 0x45AC, 0x878B, - 0x8947, 0xFFFD, 0x8A29, 0xFFFD, 0x8E71, 0x0000, 0x8EB0, 0xFFFD, 0x915E, - 0x918C, 0x990E, 0x991C, 0xFFFD, 0xFFFD, 0x9B81, 0x9DC0, 0x9D93, 0x9EAC, - 0x4D91, 0xFFFD, 0x93BA, 0x9E7B, 0x7089, 0x7348, 0xFFFD, 0x7999, 0x8FB7, - 0xFFFD, 0x9942, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, - 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, - 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, - 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, - 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, - 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, - 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, - 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, - 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, - 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x00A9, 0x2122, - 0x2026, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, - 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, - 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, - 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, - 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20AC, 0x20AC, 0x2110, - 0x20AC, 0x20AC, 0x309B, 0x309C, 0x2E80, 0x31C0, 0x31C1, 0x31C2, 0x31C3, - 0x31C4, 0x0000, 0x31C5, 0x0000, 0x0000, 0x31C6, 0x31C7, 0x0000, 0x0000, - 0x31C8, 0x0000, 0x31C9, 0x31CA, 0x31CB, 0x31CC, 0x0000, 0x31CD, 0x31CE, - 0xF538, 0xF539, 0x0000, 0x0000, 0x9751, 0x0000, 0x4E5B, 0x4EBB, 0x353E, - 0x5C23, 0x5F51, 0x5FC4, 0x38FA, 0x624C, 0x6535, 0x6B7A, 0x6C35, 0x6C3A, - 0x706C, 0x722B, 0x4E2C, 0x72AD, 0x0000, 0x7F52, 0x793B, 0x7CF9, 0x7F53, - 0x0000, 0x34C1, 0x0000, 0x8002, 0x8080, 0x0000, 0x0000, 0x535D, 0x8864, - 0x89C1, 0x0000, 0x8BA0, 0x8D1D, 0x9485, 0x9578, 0x957F, 0x95E8, 0x0000, - 0x97E6, 0x9875, 0x98CE, 0x98DE, 0x9963, 0x0000, 0x9C7C, 0x9E1F, 0x9EC4, - 0x6B6F, 0xF907, 0x4E37, 0x0000, 0x961D, 0x6237, 0x94A2, 0x2E84, 0x2E86, - 0x2E87, 0x2E88, 0x2E8A, 0x2E8C, 0x2E8D, 0x2E95, 0x2E9C, 0x2EA5, 0x2EA7, - 0x2EAA, 0x2EAC, 0x2EAE, 0x2EB6, 0x2EBC, 0x2EBE, 0x2ECA, 0x2ECC, 0x2ECD, - 0x2ECF, 0x2ED6, 0x2ED7, 0x2EDE, 0x0000, 0x0000, 0x650A, 0x4E3D, 0x6EDD, - 0x9D4E, 0x91DF, 0x0000, 0x4F1A, 0x4F28, 0x4FA8, 0x5174, 0x519C, 0x51E4, - 0x52A1, 0x52A8, 0x533B, 0x534E, 0x53D1, 0x53D8, 0x56E2, 0x58F0, 0x5904, - 0x5907, 0x5932, 0x5934, 0x5B66, 0x5B9E, 0x5B9F, 0x5C9A, 0x5E86, 0x603B, - 0x6589, 0x67FE, 0x6804, 0x6865, 0x6D4E, 0x70BC, 0x7535, 0x7EA4, 0x7EAC, - 0x7EBA, 0x7EC7, 0x7ECF, 0x7EDF, 0x7F06, 0x7F37, 0x827A, 0x82CF, 0x836F, - 0x89C6, 0x8BBE, 0x8BE2, 0x8F66, 0x8F67, 0x8F6E, 0x7411, 0x7CFC, 0x7DCD, - 0x6946, 0x7AC9, 0x78B8, 0x80BC, 0x8D0B, 0x80F6, 0x0000, 0x809F, 0x9EC7, - 0x4CCD, 0x9DC9, 0x9E0C, 0x4C3E, 0x0000, 0x0000, 0x9E0A, 0x0000, 0x35C1, - 0x6E9A, 0x823E, 0x7519, 0x4911, 0x9A6C, 0x9A8F, 0x9F99, 0x7987, 0x0000, - 0x0000, 0x0000, 0x0000, 0x4E24, 0x4E80, 0x4E87, 0x4EBF, 0x4EEB, 0x4F37, - 0x344C, 0x4FBD, 0x3E48, 0x5003, 0x347D, 0x34A5, 0x5905, 0x51DB, 0x51FC, - 0x4E89, 0x5290, 0x5327, 0x35C7, 0x53A9, 0x3551, 0x53B0, 0x5423, 0x356D, - 0x3572, 0x3681, 0x5493, 0x54A3, 0x54B4, 0x54B9, 0x54D0, 0x54EF, 0x5518, - 0x5523, 0x5528, 0x3598, 0x35A5, 0x35BF, 0x55D7, 0x35C5, 0x0000, 0x4053, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x40BB, 0x0000, 0x5652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x35FB, - 0x0000, 0x0000, 0x0000, 0x0000, 0x3F93, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF9, 0x0000, 0x6432, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x54CC, 0x82C4, - 0x55B9, 0x0000, 0x9C26, 0x9AB6, 0x0000, 0x80EC, 0x5C1C, 0x0000, 0x8134, - 0x3797, 0x0000, 0x91B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3609, - 0x0000, 0x56AF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x5A54, 0x0000, 0x0000, 0x0000, 0x0000, - 0x579C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3703, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5899, 0x5268, - 0x361A, 0x0000, 0x7BB2, 0x5B68, 0x4800, 0x4B2C, 0x9F27, 0x49E7, 0x9C1F, - 0x9B8D, 0x0000, 0x0000, 0x55FB, 0x35F2, 0x5689, 0x5D3E, 0x5D48, 0x3DFC, - 0x380F, 0x5DA4, 0x5DB9, 0x3820, 0x5F25, 0x5F83, 0x3908, 0x393F, 0x394D, - 0x60D7, 0x613D, 0x5CE5, 0x3989, 0x61B7, 0x61CF, 0x39B8, 0x622C, 0x62E5, - 0x39F8, 0x56B1, 0x3A03, 0x63E2, 0x63FB, 0x6407, 0x3A4B, 0x64C0, 0x9F9F, - 0x3A97, 0x6586, 0x3ABD, 0x65FF, 0x6653, 0x3AF2, 0x6692, 0x3B22, 0x6716, - 0x3B42, 0x67A4, 0x3B58, 0x684A, 0x6884, 0x3B72, 0x3B71, 0x3B7B, 0x6909, - 0x6943, 0x725C, 0x6964, 0x699F, 0x6985, 0x69D6, 0x3BDD, 0x6A65, 0x6A74, - 0x6A71, 0x6A82, 0x3BEC, 0x6A99, 0x3BF2, 0x6AAB, 0x6AB5, 0x6AD4, 0x6AF6, - 0x6B81, 0x6BC1, 0x6BEA, 0x6C75, 0x6CAA, 0x3CCB, 0x6D02, 0x6D06, 0x6D26, - 0x6D81, 0x3CEF, 0x6DA4, 0x6DB1, 0x6E15, 0x6E18, 0x6E29, 0x6E86, 0x0000, - 0x6EBB, 0x6EE2, 0x6EDA, 0x9F7F, 0x6EE8, 0x6EE9, 0x6F24, 0x6F34, 0x3D46, - 0x0000, 0x6F81, 0x6FBE, 0x3D6A, 0x3D75, 0x71B7, 0x5C99, 0x3D8A, 0x702C, - 0x3D91, 0x7050, 0x7054, 0x706F, 0x707F, 0x0000, 0x43C1, 0x35F1, 0x0000, - 0x364E, 0x3DAD, 0x0000, 0x667D, 0x7C74, 0x748D, 0x7E92, 0x4503, 0x0000, - 0x0000, 0x0000, 0x347E, 0x0000, 0x0000, 0x0000, 0x8771, 0x63C1, 0x7777, - 0x898A, 0x0000, 0x8B4C, 0x0000, 0x492A, 0x0000, 0x0000, 0x0000, 0x3AF0, - 0x708F, 0x0000, 0x0000, 0x0000, 0x6888, 0x0000, 0x9F62, 0x93C6, 0x0000, - 0x9366, 0x928F, 0x8614, 0x0000, 0x4190, 0x678F, 0x681E, 0x3863, 0x0000, - 0x3B19, 0x8496, 0x0000, 0x39E2, 0x8480, 0x436E, 0x9771, 0x999B, 0x492D, - 0x6F17, 0x0000, 0x70A6, 0x0000, 0x7E65, 0x5D2F, 0x3DF3, 0x0000, 0x0000, - 0x7DA4, 0x8426, 0x5485, 0x0000, 0x0000, 0x577E, 0x0000, 0x0000, 0x3FE5, - 0x0000, 0x0000, 0x7003, 0x0000, 0x5D70, 0x738F, 0x0000, 0x0000, 0x4FC8, - 0x7FE7, 0x7310, 0x7338, 0x7341, 0x3EA9, 0x71F5, 0x0000, 0x73E1, 0x3ECA, - 0x3ED1, 0x7419, 0x741E, 0x741F, 0x3EE2, 0x3EF0, 0x3EF4, 0x3EFA, 0x74D3, - 0x3F0E, 0x3F53, 0x756D, 0x7572, 0x758D, 0x3F7C, 0x75C8, 0x764D, 0x7674, - 0x3FDC, 0x767A, 0x7188, 0x5623, 0x8980, 0x401D, 0x7743, 0x4039, 0x4045, - 0x35DB, 0x7798, 0x406A, 0x406F, 0x77BE, 0x77CB, 0x7818, 0x781C, 0x7847, - 0x7851, 0x7866, 0x8448, 0x0000, 0x7933, 0x7932, 0x4109, 0x7991, 0x7A06, - 0x4167, 0x41B2, 0x7ABC, 0x8279, 0x41C4, 0x7ACF, 0x7ADB, 0x41CF, 0x7B62, - 0x7B6C, 0x7B7B, 0x7C12, 0x4260, 0x427A, 0x7C7B, 0x7C9C, 0x428C, 0x7CB8, - 0x4294, 0x8F93, 0x70C0, 0x0000, 0x7DCF, 0x7DD4, 0x7DD0, 0x7DFD, 0x7FB4, - 0x729F, 0x4397, 0x8020, 0x8025, 0x802E, 0x8031, 0x8054, 0x57B4, 0x70A0, - 0x80B7, 0x80E9, 0x43ED, 0x810C, 0x810E, 0x8112, 0x8114, 0x4401, 0x3B39, - 0x8156, 0x8159, 0x815A, 0x4413, 0x817C, 0x4425, 0x442D, 0x81A5, 0x57EF, - 0x81C1, 0x81E4, 0x8254, 0x448F, 0x8276, 0x82CA, 0x82D8, 0x44B0, 0x8357, - 0x9669, 0x8405, 0x70F5, 0x8464, 0x8488, 0x4504, 0x84BE, 0x84E1, 0x84F8, - 0x8510, 0x8538, 0x8552, 0x453B, 0x856F, 0x8570, 0x85E0, 0x4577, 0x8672, - 0x8692, 0x86EF, 0x9645, 0x4606, 0x4617, 0x88AE, 0x88FF, 0x8924, 0x8991, - 0x0000, 0x8A38, 0x8A94, 0x8AB4, 0x8C51, 0x8CD4, 0x8CF2, 0x8D1C, 0x4798, - 0x8DC3, 0x47ED, 0x8E3A, 0x5754, 0x55F5, 0x4837, 0x8ECE, 0x8EE2, 0x8EE4, - 0x8EED, 0x8EF2, 0x8FC1, 0x8FCA, 0x8FCC, 0x9033, 0x48AD, 0x98E0, 0x9213, - 0x491E, 0x9228, 0x9258, 0x926B, 0x92B1, 0x92AE, 0x92BF, 0x92E3, 0x92EB, - 0x92F3, 0x92F4, 0x92FD, 0x9343, 0x9384, 0x93AD, 0x4945, 0x4951, 0x9417, - 0x941D, 0x942D, 0x943E, 0x496A, 0x9454, 0x9479, 0x952D, 0x95A2, 0x49A7, - 0x95F4, 0x9633, 0x49E5, 0x4A24, 0x9740, 0x4A35, 0x97B2, 0x97C2, 0x4AE4, - 0x98B9, 0x4B19, 0x98F1, 0x5844, 0x9919, 0x9937, 0x995D, 0x9962, 0x4B70, - 0x99C5, 0x4B9D, 0x9A3C, 0x9B0F, 0x9B69, 0x9BDD, 0x9BF1, 0x9BF4, 0x4C6D, - 0x9C20, 0x376F, 0x0000, 0x9D49, 0x9EFE, 0x5650, 0x9DBD, 0x9DFC, 0x94F6, - 0x8FB6, 0x9EB1, 0x9EBD, 0x9EC6, 0x94DC, 0x9EE2, 0x9EF1, 0x9EF8, 0x9F44, - 0x0000, 0x0000, 0x0000, 0x94C3, 0x0000, 0x94C1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x5757, 0x7173, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x549E, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3647, 0x0000, 0x0000, - 0x0000, 0x5364, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x70BB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x7198, 0x0000, 0x69E9, 0x36C8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x58B5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x5788, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x5965, 0x0000, 0x0000, 0x573F, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x57A1, 0x7151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x56B9, 0x0000, 0x3618, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x949F, 0x0000, - 0x36B9, 0x0000, 0x0000, 0x56D6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63E6, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3DF7, 0x0000, 0x0000, 0x8FD0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7E9F, 0x0000, - 0x0000, 0x4CA4, 0x9547, 0x0000, 0x71A2, 0x0000, 0x0000, 0x4D9C, 0x0000, - 0x8FBE, 0x8FBA, 0x0000, 0x8FB9, 0x0000, 0x4EEA, 0x0000, 0x8E80, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4E9A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3DC6, 0x0000, 0x4E1C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x55DE, 0x8786, 0x0000, 0x0000, 0x5B90, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x4E1A, 0x4E04, 0x5B0D, 0x36AC, 0x537D, 0x36A5, 0x589A, 0x0000, - 0x57AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x57A7, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9C1B, 0x0000, 0x3E06, 0x0000, 0x0000, - 0x0000, 0x0000, 0x577A, 0x54DA, 0x717A, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3635, 0x0000, 0x5220, 0x3C18, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4562, 0x5B1F, 0x0000, 0x9F50, - 0x9EA6, 0x0000, 0x51E2, 0x5342, 0x66AD, 0x585C, 0x5553, 0x3D85, 0x6160, - 0x48AE, 0x97BD, 0x0000, 0x60B3, 0x8424, 0x9814, 0x0000, 0x0000, 0x0000, - 0x3B2B, 0x3D32, 0x0000, 0x7081, 0x5C9C, 0x0000, 0x3730, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0100, 0x00C1, 0x01CD, 0x00C0, 0x0112, 0x00C9, 0x011A, - 0x00C8, 0x014C, 0x00D3, 0x01D1, 0x00D2, 0xF325, 0x1EBE, 0xF327, 0x1EC0, - 0x00CA, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0251, 0x0113, 0x00E9, 0x011B, - 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, - 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, - 0xF344, 0x1EBF, 0xF346, 0x1EC1, 0x00EA, 0x0261, 0x0283, 0x0250, 0x025B, - 0x0254, 0x0275, 0x0153, 0x00F8, 0x014B, 0x028A, 0x026A, 0x23DA, 0x23DB, - 0x2E9D, 0x2EC6, 0x2EE3, 0x503B, 0x6DFE, 0x0000, 0x9FA6, 0x3DC9, 0x888F, - 0x0000, 0x7077, 0x5CF5, 0x4B20, 0x0000, 0x3559, 0x0000, 0x6122, 0x0000, - 0x8FA7, 0x91F6, 0x7191, 0x6719, 0x73BA, 0x0000, 0x0000, 0x3C8B, 0x0000, - 0x4B10, 0x78E4, 0x7402, 0x51AE, 0x0000, 0x4009, 0x6A63, 0x0000, 0x4223, - 0x860F, 0x7A2A, 0x0000, 0x0000, 0x9755, 0x704D, 0x5324, 0x0000, 0x93F4, - 0x76D9, 0x0000, 0x9FA7, 0x77DD, 0x4EA3, 0x4FF0, 0x50BC, 0x4E2F, 0x4F17, - 0x9FA8, 0x5434, 0x7D8B, 0x5892, 0x58D0, 0x0000, 0x5E92, 0x5E99, 0x5FC2, - 0x0000, 0x658B, 0x0000, 0x6919, 0x6A43, 0x0000, 0x6CFF, 0x7200, 0x0000, - 0x738C, 0x3EDB, 0x0000, 0x5B15, 0x74B9, 0x8B83, 0x0000, 0x0000, 0x7A93, - 0x7BEC, 0x7CC3, 0x7E6C, 0x82F8, 0x8597, 0x9FA9, 0x8890, 0x9FAA, 0x8EB9, - 0x9FAB, 0x8FCF, 0x855F, 0x99E0, 0x9221, 0x9FAC, 0x0000, 0x0000, 0x4071, - 0x42A2, 0x5A1A, 0x9868, 0x676B, 0x4276, 0x573D, 0x85D6, 0x0000, 0x82BF, - 0x0000, 0x4C81, 0x0000, 0x5D7B, 0x0000, 0x0000, 0x9FAD, 0x9FAE, 0x5B96, - 0x9FAF, 0x7E5B, 0x43F0, 0x4C32, 0x4603, 0x45A6, 0x4578, 0x0000, 0x4D77, - 0x45B3, 0x0000, 0x4CE2, 0x0000, 0x3B95, 0x4736, 0x4744, 0x4C47, 0x4C40, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4C57, 0x0000, 0x474F, 0x45DA, - 0x4C85, 0x0000, 0x4D07, 0x4AA4, 0x46A1, 0x0000, 0x7225, 0x0000, 0x0000, - 0x0000, 0x0000, 0x664D, 0x56FB, 0x7D95, 0x591D, 0x0000, 0x3DF4, 0x9734, - 0x0000, 0x5BDB, 0x0000, 0x5AA4, 0x3625, 0x0000, 0x5AD1, 0x5BB7, 0x5CFC, - 0x676E, 0x8593, 0x0000, 0x7461, 0x749D, 0x0000, 0x66E7, 0x6E57, 0x79CA, - 0x3D88, 0x44C3, 0x0000, 0x0000, 0x439A, 0x4536, 0x5CD5, 0x0000, 0x8AF9, - 0x5C78, 0x3D12, 0x0000, 0x5D78, 0x9FB2, 0x7157, 0x4558, 0x0000, 0x0000, - 0x4C77, 0x3978, 0x344A, 0x0000, 0x0000, 0x8ACC, 0x4FB4, 0x0000, 0x59BF, - 0x816C, 0x9856, 0x0000, 0x5F3B, 0x0000, 0x0000, 0x0000, 0x4102, 0x46BB, - 0x0000, 0x3F07, 0x9FB3, 0x0000, 0x40F8, 0x37D6, 0x46F7, 0x0000, 0x417C, - 0x0000, 0x0000, 0x456D, 0x38D4, 0x0000, 0x4561, 0x451B, 0x4D89, 0x4C7B, - 0x4D76, 0x45EA, 0x3FC8, 0x0000, 0x3661, 0x44DE, 0x44BD, 0x41ED, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp deleted file mode 100644 index 6d85584629..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_B5pc_H_0[247 * 3] = { - 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x003D, 0x00FD, 0x00FF, 0x0060, - 0xA140, 0xA158, 0x0063, 0xA159, 0xA15C, 0x35AF, 0xA15D, 0xA17E, 0x0080, - 0xA1A1, 0xA1F5, 0x00A2, 0xA1F6, 0xA1F6, 0x00F8, 0xA1F7, 0xA1F7, 0x00F7, - 0xA1F8, 0xA1FE, 0x00F9, 0xA240, 0xA27E, 0x0100, 0xA2A1, 0xA2FE, 0x013F, - 0xA340, 0xA37E, 0x019D, 0xA3A1, 0xA3BB, 0x01DC, 0xA3BD, 0xA3BF, 0x01F7, - 0xA3C0, 0xA3E0, 0x0232, 0xA440, 0xA47E, 0x0253, 0xA4A1, 0xA4FE, 0x0292, - 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, 0xA640, 0xA67E, 0x038D, - 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, 0xA7A1, 0xA7FE, 0x0469, - 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, 0xA940, 0xA97E, 0x0564, - 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, 0xAAA1, 0xAAFE, 0x0640, - 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, 0xAC40, 0xAC7E, 0x073B, - 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, 0xAD40, 0xAD7E, 0x07D7, - 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, 0xAEA1, 0xAEFE, 0x08B3, - 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, 0xAFD0, 0xAFFE, 0x0980, - 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, 0xB140, 0xB17E, 0x0A4C, - 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, 0xB2A1, 0xB2FE, 0x0B28, - 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, 0xB440, 0xB47E, 0x0C23, - 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, 0xB5A1, 0xB5FE, 0x0CFF, - 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, 0xB740, 0xB77E, 0x0DFA, - 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, 0xB8A1, 0xB8FE, 0x0ED6, - 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, 0xBA40, 0xBA7E, 0x0FD1, - 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, 0xBBA1, 0xBBC7, 0x10AD, - 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, 0xBCA1, 0xBCFE, 0x114B, - 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, 0xBE40, 0xBE51, 0x1246, - 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, 0xBEA1, 0xBEFE, 0x1284, - 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, 0xC040, 0xC07E, 0x137F, - 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, 0xC1A1, 0xC1AA, 0x145B, - 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, 0xC2A1, 0xC2CA, 0x14F9, - 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, 0xC340, 0xC360, 0x1556, - 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, 0xC3B9, 0xC3B9, 0x15AF, - 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, 0xC440, 0xC455, 0x15F4, - 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, 0xC4A1, 0xC4FE, 0x1632, - 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, 0xC640, 0xC67E, 0x172D, - 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776, - 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797, - 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809, - 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E, - 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942, - 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E, - 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19, - 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5, - 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0, - 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC, - 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7, - 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3, - 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001, - 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F, - 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A, - 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216, - 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274, - 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312, - 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE, - 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B, - 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527, - 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622, - 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE, - 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9, - 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5, - 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0, - 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC, - 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42, - 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8, - 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86, - 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3, - 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F, - 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8, - 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014, - 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8, - 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C, - 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE, - 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160, - 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E, - 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC, - 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161, - 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0, - 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D, - 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6, - 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327, - 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF, - 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA, - 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511, - 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E, - 0xF9D2, 0xF9D5, 0x354A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp deleted file mode 100644 index a7173980da..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_B5pc_V_0[12 * 3] = { - 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, 0x35B1, - 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, 0xA166, 0x008A, - 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, 0xA171, 0xA172, 0x0096, - 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, 0x009E, 0xA1E3, 0xA1E3, 0x354F, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp deleted file mode 100644 index f8ce91983d..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_CNS_EUC_H_0[157 * 3] = { - 0x0020, 0x007E, 0x3550, 0xA1A1, 0xA1FE, 0x0063, 0xA2A1, 0xA2FE, 0x00C1, - 0xA3A1, 0xA3CE, 0x011F, 0xA4A1, 0xA4FE, 0x014D, 0xA5A1, 0xA5EC, 0x01AB, - 0xA5EE, 0xA5F0, 0x01F7, 0xA6A1, 0xA6BE, 0x01FA, 0xA7A1, 0xA7A1, 0x0253, - 0xA7A2, 0xA7A4, 0x0218, 0xA7A5, 0xA7A5, 0x0254, 0xA7A6, 0xA7A6, 0x021B, - 0xA7A7, 0xA7A7, 0x025A, 0xA7A8, 0xA7A8, 0x021C, 0xA7A9, 0xA7AC, 0x025B, - 0xA7AD, 0xA7AF, 0x021D, 0xA7B0, 0xA7B0, 0x025F, 0xA7B1, 0xA7B1, 0x176E, - 0xA7B2, 0xA7B2, 0x0260, 0xA7B3, 0xA7B3, 0x0262, 0xA7B4, 0xA7B4, 0x0220, - 0xA7B5, 0xA7B5, 0x0263, 0xA7B6, 0xA7B6, 0x176F, 0xA7B7, 0xA7B7, 0x0221, - 0xA7B8, 0xA7B9, 0x0264, 0xA7BA, 0xA7BA, 0x0222, 0xA7BB, 0xA7BB, 0x1770, - 0xA7BC, 0xA7BC, 0x0223, 0xA7BD, 0xA7BD, 0x0266, 0xA7BE, 0xA7BE, 0x0279, - 0xA7BF, 0xA7BF, 0x1775, 0xA7C0, 0xA7C1, 0x027A, 0xA7C2, 0xA7C2, 0x0224, - 0xA7C3, 0xA7C6, 0x027C, 0xA7C7, 0xA7C7, 0x0225, 0xA7C8, 0xA7CB, 0x0282, - 0xA7CC, 0xA7CC, 0x1776, 0xA7CD, 0xA7CD, 0x0286, 0xA7CE, 0xA7CE, 0x0226, - 0xA7CF, 0xA7D0, 0x0288, 0xA7D1, 0xA7D2, 0x028C, 0xA7D3, 0xA7D5, 0x0227, - 0xA7D6, 0xA7D8, 0x028E, 0xA7D9, 0xA7DA, 0x022A, 0xA7DB, 0xA7DB, 0x1777, - 0xA7DC, 0xA7DF, 0x02D0, 0xA7E0, 0xA7E0, 0x02D5, 0xA7E1, 0xA7E1, 0x022C, - 0xA7E2, 0xA7E5, 0x02D6, 0xA7E6, 0xA7E6, 0x022D, 0xA7E7, 0xA7ED, 0x02DA, - 0xA7EE, 0xA7EE, 0x178A, 0xA7EF, 0xA7F2, 0x02E1, 0xA7F3, 0xA7F3, 0x178C, - 0xA7F4, 0xA7F8, 0x02E5, 0xA7F9, 0xA7F9, 0x178D, 0xA7FA, 0xA7FD, 0x02EA, - 0xA7FE, 0xA7FE, 0x0356, 0xA8A1, 0xA8A6, 0x0357, 0xA8A7, 0xA8A7, 0x035E, - 0xA8A8, 0xA8A8, 0x0362, 0xA8A9, 0xA8AA, 0x022E, 0xA8AB, 0xA8B2, 0x0363, - 0xA8B3, 0xA8B3, 0x17B2, 0xA8B4, 0xA8B6, 0x036B, 0xA8B7, 0xA8BA, 0x03F6, - 0xA8BB, 0xA8BB, 0x1812, 0xA8BC, 0xA8BE, 0x03FA, 0xA8BF, 0xA8C3, 0x03FE, - 0xA8C4, 0xA8CC, 0x0405, 0xA8CD, 0xA8CD, 0x1813, 0xA8CE, 0xA8CE, 0x1818, - 0xA8CF, 0xA8D2, 0x040F, 0xA8D3, 0xA8D3, 0x1819, 0xA8D4, 0xA8D9, 0x0508, - 0xA8DA, 0xA8DA, 0x18E7, 0xA8DB, 0xA8E2, 0x050E, 0xA8E3, 0xA8E3, 0x0230, - 0xA8E4, 0xA8E4, 0x051B, 0xA8E5, 0xA8E7, 0x0520, 0xA8E8, 0xA8EB, 0x0696, - 0xA8EC, 0xA8EC, 0x0231, 0xA8ED, 0xA8F0, 0x069F, 0xA8F1, 0xA8FB, 0x0826, - 0xA8FC, 0xA8FE, 0x09F5, 0xA9A1, 0xA9A1, 0x1E33, 0xA9A2, 0xA9A2, 0x09F8, - 0xA9A3, 0xA9A3, 0x1E34, 0xA9A4, 0xA9A5, 0x09F9, 0xA9A6, 0xA9AB, 0x0BE1, - 0xA9AC, 0xA9AE, 0x0DBB, 0xA9AF, 0xA9AF, 0x2360, 0xA9B0, 0xA9B0, 0x2612, - 0xA9B1, 0xA9B3, 0x0F7B, 0xA9B4, 0xA9B5, 0x1100, 0xA9B6, 0xA9B6, 0x1289, - 0xA9B7, 0xA9B8, 0x13B2, 0xA9B9, 0xA9B9, 0x2F0D, 0xC2A1, 0xC2C1, 0x0232, - 0xC4A1, 0xC4FE, 0x0253, 0xC5A1, 0xC5FE, 0x02B1, 0xC6A1, 0xC6FE, 0x030F, - 0xC7A1, 0xC7FE, 0x036D, 0xC8A1, 0xC8FE, 0x03CB, 0xC9A1, 0xC9FE, 0x0429, - 0xCAA1, 0xCAFE, 0x0487, 0xCBA1, 0xCBFE, 0x04E5, 0xCCA1, 0xCCFE, 0x0543, - 0xCDA1, 0xCDFE, 0x05A1, 0xCEA1, 0xCEFE, 0x05FF, 0xCFA1, 0xCFFE, 0x065D, - 0xD0A1, 0xD0FE, 0x06BB, 0xD1A1, 0xD1FE, 0x0719, 0xD2A1, 0xD2FE, 0x0777, - 0xD3A1, 0xD3FE, 0x07D5, 0xD4A1, 0xD4FE, 0x0833, 0xD5A1, 0xD5FE, 0x0891, - 0xD6A1, 0xD6FE, 0x08EF, 0xD7A1, 0xD7FE, 0x094D, 0xD8A1, 0xD8FE, 0x09AB, - 0xD9A1, 0xD9FE, 0x0A09, 0xDAA1, 0xDAFE, 0x0A67, 0xDBA1, 0xDBFE, 0x0AC5, - 0xDCA1, 0xDCFE, 0x0B23, 0xDDA1, 0xDDFE, 0x0B81, 0xDEA1, 0xDEFE, 0x0BDF, - 0xDFA1, 0xDFFE, 0x0C3D, 0xE0A1, 0xE0FE, 0x0C9B, 0xE1A1, 0xE1FE, 0x0CF9, - 0xE2A1, 0xE2FE, 0x0D57, 0xE3A1, 0xE3FE, 0x0DB5, 0xE4A1, 0xE4FE, 0x0E13, - 0xE5A1, 0xE5FE, 0x0E71, 0xE6A1, 0xE6FE, 0x0ECF, 0xE7A1, 0xE7FE, 0x0F2D, - 0xE8A1, 0xE8FE, 0x0F8B, 0xE9A1, 0xE9FE, 0x0FE9, 0xEAA1, 0xEAFE, 0x1047, - 0xEBA1, 0xEBFE, 0x10A5, 0xECA1, 0xECFE, 0x1103, 0xEDA1, 0xEDFE, 0x1161, - 0xEEA1, 0xEEFE, 0x11BF, 0xEFA1, 0xEFFE, 0x121D, 0xF0A1, 0xF0FE, 0x127B, - 0xF1A1, 0xF1FE, 0x12D9, 0xF2A1, 0xF2FE, 0x1337, 0xF3A1, 0xF3FE, 0x1395, - 0xF4A1, 0xF4FE, 0x13F3, 0xF5A1, 0xF5FE, 0x1451, 0xF6A1, 0xF6FE, 0x14AF, - 0xF7A1, 0xF7FE, 0x150D, 0xF8A1, 0xF8FE, 0x156B, 0xF9A1, 0xF9FE, 0x15C9, - 0xFAA1, 0xFAFE, 0x1627, 0xFBA1, 0xFBFE, 0x1685, 0xFCA1, 0xFCFE, 0x16E3, - 0xFDA1, 0xFDCB, 0x1741, -}; - -const FX_WORD g_FXCMAP_CNS_EUC_H_0_DWord[238 * 4] = { - 0x8EA1, 0xA1A1, 0xA1FE, 0x0063, 0x8EA1, 0xA2A1, 0xA2FE, 0x00C1, 0x8EA1, - 0xA3A1, 0xA3CE, 0x011F, 0x8EA1, 0xA4A1, 0xA4FE, 0x014D, 0x8EA1, 0xA5A1, - 0xA5EC, 0x01AB, 0x8EA1, 0xA5EE, 0xA5F0, 0x01F7, 0x8EA1, 0xA6A1, 0xA6BE, - 0x01FA, 0x8EA1, 0xA7A1, 0xA7A1, 0x0253, 0x8EA1, 0xA7A2, 0xA7A4, 0x0218, - 0x8EA1, 0xA7A5, 0xA7A5, 0x0254, 0x8EA1, 0xA7A6, 0xA7A6, 0x021B, 0x8EA1, - 0xA7A7, 0xA7A7, 0x025A, 0x8EA1, 0xA7A8, 0xA7A8, 0x021C, 0x8EA1, 0xA7A9, - 0xA7AC, 0x025B, 0x8EA1, 0xA7AD, 0xA7AF, 0x021D, 0x8EA1, 0xA7B0, 0xA7B0, - 0x025F, 0x8EA1, 0xA7B1, 0xA7B1, 0x176E, 0x8EA1, 0xA7B2, 0xA7B2, 0x0260, - 0x8EA1, 0xA7B3, 0xA7B3, 0x0262, 0x8EA1, 0xA7B4, 0xA7B4, 0x0220, 0x8EA1, - 0xA7B5, 0xA7B5, 0x0263, 0x8EA1, 0xA7B6, 0xA7B6, 0x176F, 0x8EA1, 0xA7B7, - 0xA7B7, 0x0221, 0x8EA1, 0xA7B8, 0xA7B9, 0x0264, 0x8EA1, 0xA7BA, 0xA7BA, - 0x0222, 0x8EA1, 0xA7BB, 0xA7BB, 0x1770, 0x8EA1, 0xA7BC, 0xA7BC, 0x0223, - 0x8EA1, 0xA7BD, 0xA7BD, 0x0266, 0x8EA1, 0xA7BE, 0xA7BE, 0x0279, 0x8EA1, - 0xA7BF, 0xA7BF, 0x1775, 0x8EA1, 0xA7C0, 0xA7C1, 0x027A, 0x8EA1, 0xA7C2, - 0xA7C2, 0x0224, 0x8EA1, 0xA7C3, 0xA7C6, 0x027C, 0x8EA1, 0xA7C7, 0xA7C7, - 0x0225, 0x8EA1, 0xA7C8, 0xA7CB, 0x0282, 0x8EA1, 0xA7CC, 0xA7CC, 0x1776, - 0x8EA1, 0xA7CD, 0xA7CD, 0x0286, 0x8EA1, 0xA7CE, 0xA7CE, 0x0226, 0x8EA1, - 0xA7CF, 0xA7D0, 0x0288, 0x8EA1, 0xA7D1, 0xA7D2, 0x028C, 0x8EA1, 0xA7D3, - 0xA7D5, 0x0227, 0x8EA1, 0xA7D6, 0xA7D8, 0x028E, 0x8EA1, 0xA7D9, 0xA7DA, - 0x022A, 0x8EA1, 0xA7DB, 0xA7DB, 0x1777, 0x8EA1, 0xA7DC, 0xA7DF, 0x02D0, - 0x8EA1, 0xA7E0, 0xA7E0, 0x02D5, 0x8EA1, 0xA7E1, 0xA7E1, 0x022C, 0x8EA1, - 0xA7E2, 0xA7E5, 0x02D6, 0x8EA1, 0xA7E6, 0xA7E6, 0x022D, 0x8EA1, 0xA7E7, - 0xA7ED, 0x02DA, 0x8EA1, 0xA7EE, 0xA7EE, 0x178A, 0x8EA1, 0xA7EF, 0xA7F2, - 0x02E1, 0x8EA1, 0xA7F3, 0xA7F3, 0x178C, 0x8EA1, 0xA7F4, 0xA7F8, 0x02E5, - 0x8EA1, 0xA7F9, 0xA7F9, 0x178D, 0x8EA1, 0xA7FA, 0xA7FD, 0x02EA, 0x8EA1, - 0xA7FE, 0xA7FE, 0x0356, 0x8EA1, 0xA8A1, 0xA8A6, 0x0357, 0x8EA1, 0xA8A7, - 0xA8A7, 0x035E, 0x8EA1, 0xA8A8, 0xA8A8, 0x0362, 0x8EA1, 0xA8A9, 0xA8AA, - 0x022E, 0x8EA1, 0xA8AB, 0xA8B2, 0x0363, 0x8EA1, 0xA8B3, 0xA8B3, 0x17B2, - 0x8EA1, 0xA8B4, 0xA8B6, 0x036B, 0x8EA1, 0xA8B7, 0xA8BA, 0x03F6, 0x8EA1, - 0xA8BB, 0xA8BB, 0x1812, 0x8EA1, 0xA8BC, 0xA8BE, 0x03FA, 0x8EA1, 0xA8BF, - 0xA8C3, 0x03FE, 0x8EA1, 0xA8C4, 0xA8CC, 0x0405, 0x8EA1, 0xA8CD, 0xA8CD, - 0x1813, 0x8EA1, 0xA8CE, 0xA8CE, 0x1818, 0x8EA1, 0xA8CF, 0xA8D2, 0x040F, - 0x8EA1, 0xA8D3, 0xA8D3, 0x1819, 0x8EA1, 0xA8D4, 0xA8D9, 0x0508, 0x8EA1, - 0xA8DA, 0xA8DA, 0x18E7, 0x8EA1, 0xA8DB, 0xA8E2, 0x050E, 0x8EA1, 0xA8E3, - 0xA8E3, 0x0230, 0x8EA1, 0xA8E4, 0xA8E4, 0x051B, 0x8EA1, 0xA8E5, 0xA8E7, - 0x0520, 0x8EA1, 0xA8E8, 0xA8EB, 0x0696, 0x8EA1, 0xA8EC, 0xA8EC, 0x0231, - 0x8EA1, 0xA8ED, 0xA8F0, 0x069F, 0x8EA1, 0xA8F1, 0xA8FB, 0x0826, 0x8EA1, - 0xA8FC, 0xA8FE, 0x09F5, 0x8EA1, 0xA9A1, 0xA9A1, 0x1E33, 0x8EA1, 0xA9A2, - 0xA9A2, 0x09F8, 0x8EA1, 0xA9A3, 0xA9A3, 0x1E34, 0x8EA1, 0xA9A4, 0xA9A5, - 0x09F9, 0x8EA1, 0xA9A6, 0xA9AB, 0x0BE1, 0x8EA1, 0xA9AC, 0xA9AE, 0x0DBB, - 0x8EA1, 0xA9AF, 0xA9AF, 0x2360, 0x8EA1, 0xA9B0, 0xA9B0, 0x2612, 0x8EA1, - 0xA9B1, 0xA9B3, 0x0F7B, 0x8EA1, 0xA9B4, 0xA9B5, 0x1100, 0x8EA1, 0xA9B6, - 0xA9B6, 0x1289, 0x8EA1, 0xA9B7, 0xA9B8, 0x13B2, 0x8EA1, 0xA9B9, 0xA9B9, - 0x2F0D, 0x8EA1, 0xC2A1, 0xC2C1, 0x0232, 0x8EA1, 0xC4A1, 0xC4FE, 0x0253, - 0x8EA1, 0xC5A1, 0xC5FE, 0x02B1, 0x8EA1, 0xC6A1, 0xC6FE, 0x030F, 0x8EA1, - 0xC7A1, 0xC7FE, 0x036D, 0x8EA1, 0xC8A1, 0xC8FE, 0x03CB, 0x8EA1, 0xC9A1, - 0xC9FE, 0x0429, 0x8EA1, 0xCAA1, 0xCAFE, 0x0487, 0x8EA1, 0xCBA1, 0xCBFE, - 0x04E5, 0x8EA1, 0xCCA1, 0xCCFE, 0x0543, 0x8EA1, 0xCDA1, 0xCDFE, 0x05A1, - 0x8EA1, 0xCEA1, 0xCEFE, 0x05FF, 0x8EA1, 0xCFA1, 0xCFFE, 0x065D, 0x8EA1, - 0xD0A1, 0xD0FE, 0x06BB, 0x8EA1, 0xD1A1, 0xD1FE, 0x0719, 0x8EA1, 0xD2A1, - 0xD2FE, 0x0777, 0x8EA1, 0xD3A1, 0xD3FE, 0x07D5, 0x8EA1, 0xD4A1, 0xD4FE, - 0x0833, 0x8EA1, 0xD5A1, 0xD5FE, 0x0891, 0x8EA1, 0xD6A1, 0xD6FE, 0x08EF, - 0x8EA1, 0xD7A1, 0xD7FE, 0x094D, 0x8EA1, 0xD8A1, 0xD8FE, 0x09AB, 0x8EA1, - 0xD9A1, 0xD9FE, 0x0A09, 0x8EA1, 0xDAA1, 0xDAFE, 0x0A67, 0x8EA1, 0xDBA1, - 0xDBFE, 0x0AC5, 0x8EA1, 0xDCA1, 0xDCFE, 0x0B23, 0x8EA1, 0xDDA1, 0xDDFE, - 0x0B81, 0x8EA1, 0xDEA1, 0xDEFE, 0x0BDF, 0x8EA1, 0xDFA1, 0xDFFE, 0x0C3D, - 0x8EA1, 0xE0A1, 0xE0FE, 0x0C9B, 0x8EA1, 0xE1A1, 0xE1FE, 0x0CF9, 0x8EA1, - 0xE2A1, 0xE2FE, 0x0D57, 0x8EA1, 0xE3A1, 0xE3FE, 0x0DB5, 0x8EA1, 0xE4A1, - 0xE4FE, 0x0E13, 0x8EA1, 0xE5A1, 0xE5FE, 0x0E71, 0x8EA1, 0xE6A1, 0xE6FE, - 0x0ECF, 0x8EA1, 0xE7A1, 0xE7FE, 0x0F2D, 0x8EA1, 0xE8A1, 0xE8FE, 0x0F8B, - 0x8EA1, 0xE9A1, 0xE9FE, 0x0FE9, 0x8EA1, 0xEAA1, 0xEAFE, 0x1047, 0x8EA1, - 0xEBA1, 0xEBFE, 0x10A5, 0x8EA1, 0xECA1, 0xECFE, 0x1103, 0x8EA1, 0xEDA1, - 0xEDFE, 0x1161, 0x8EA1, 0xEEA1, 0xEEFE, 0x11BF, 0x8EA1, 0xEFA1, 0xEFFE, - 0x121D, 0x8EA1, 0xF0A1, 0xF0FE, 0x127B, 0x8EA1, 0xF1A1, 0xF1FE, 0x12D9, - 0x8EA1, 0xF2A1, 0xF2FE, 0x1337, 0x8EA1, 0xF3A1, 0xF3FE, 0x1395, 0x8EA1, - 0xF4A1, 0xF4FE, 0x13F3, 0x8EA1, 0xF5A1, 0xF5FE, 0x1451, 0x8EA1, 0xF6A1, - 0xF6FE, 0x14AF, 0x8EA1, 0xF7A1, 0xF7FE, 0x150D, 0x8EA1, 0xF8A1, 0xF8FE, - 0x156B, 0x8EA1, 0xF9A1, 0xF9FE, 0x15C9, 0x8EA1, 0xFAA1, 0xFAFE, 0x1627, - 0x8EA1, 0xFBA1, 0xFBFE, 0x1685, 0x8EA1, 0xFCA1, 0xFCFE, 0x16E3, 0x8EA1, - 0xFDA1, 0xFDCB, 0x1741, 0x8EA2, 0xA1A1, 0xA1FE, 0x176C, 0x8EA2, 0xA2A1, - 0xA2FE, 0x17CA, 0x8EA2, 0xA3A1, 0xA3FE, 0x1828, 0x8EA2, 0xA4A1, 0xA4FE, - 0x1886, 0x8EA2, 0xA5A1, 0xA5FE, 0x18E4, 0x8EA2, 0xA6A1, 0xA6FE, 0x1942, - 0x8EA2, 0xA7A1, 0xA7FE, 0x19A0, 0x8EA2, 0xA8A1, 0xA8FE, 0x19FE, 0x8EA2, - 0xA9A1, 0xA9FE, 0x1A5C, 0x8EA2, 0xAAA1, 0xAAFE, 0x1ABA, 0x8EA2, 0xABA1, - 0xABFE, 0x1B18, 0x8EA2, 0xACA1, 0xACFE, 0x1B76, 0x8EA2, 0xADA1, 0xADFE, - 0x1BD4, 0x8EA2, 0xAEA1, 0xAEFE, 0x1C32, 0x8EA2, 0xAFA1, 0xAFFE, 0x1C90, - 0x8EA2, 0xB0A1, 0xB0FE, 0x1CEE, 0x8EA2, 0xB1A1, 0xB1FE, 0x1D4C, 0x8EA2, - 0xB2A1, 0xB2FE, 0x1DAA, 0x8EA2, 0xB3A1, 0xB3FE, 0x1E08, 0x8EA2, 0xB4A1, - 0xB4FE, 0x1E66, 0x8EA2, 0xB5A1, 0xB5FE, 0x1EC4, 0x8EA2, 0xB6A1, 0xB6FE, - 0x1F22, 0x8EA2, 0xB7A1, 0xB7FE, 0x1F80, 0x8EA2, 0xB8A1, 0xB8FE, 0x1FDE, - 0x8EA2, 0xB9A1, 0xB9FE, 0x203C, 0x8EA2, 0xBAA1, 0xBAFE, 0x209A, 0x8EA2, - 0xBBA1, 0xBBFE, 0x20F8, 0x8EA2, 0xBCA1, 0xBCFE, 0x2156, 0x8EA2, 0xBDA1, - 0xBDFE, 0x21B4, 0x8EA2, 0xBEA1, 0xBEFE, 0x2212, 0x8EA2, 0xBFA1, 0xBFFE, - 0x2270, 0x8EA2, 0xC0A1, 0xC0FE, 0x22CE, 0x8EA2, 0xC1A1, 0xC1FE, 0x232C, - 0x8EA2, 0xC2A1, 0xC2FE, 0x238A, 0x8EA2, 0xC3A1, 0xC3FE, 0x23E8, 0x8EA2, - 0xC4A1, 0xC4FE, 0x2446, 0x8EA2, 0xC5A1, 0xC5FE, 0x24A4, 0x8EA2, 0xC6A1, - 0xC6FE, 0x2502, 0x8EA2, 0xC7A1, 0xC7FE, 0x2560, 0x8EA2, 0xC8A1, 0xC8FE, - 0x25BE, 0x8EA2, 0xC9A1, 0xC9FE, 0x261C, 0x8EA2, 0xCAA1, 0xCAFE, 0x267A, - 0x8EA2, 0xCBA1, 0xCBFE, 0x26D8, 0x8EA2, 0xCCA1, 0xCCFE, 0x2736, 0x8EA2, - 0xCDA1, 0xCDFE, 0x2794, 0x8EA2, 0xCEA1, 0xCEFE, 0x27F2, 0x8EA2, 0xCFA1, - 0xCFFE, 0x2850, 0x8EA2, 0xD0A1, 0xD0FE, 0x28AE, 0x8EA2, 0xD1A1, 0xD1FE, - 0x290C, 0x8EA2, 0xD2A1, 0xD2FE, 0x296A, 0x8EA2, 0xD3A1, 0xD3FE, 0x29C8, - 0x8EA2, 0xD4A1, 0xD4FE, 0x2A26, 0x8EA2, 0xD5A1, 0xD5FE, 0x2A84, 0x8EA2, - 0xD6A1, 0xD6FE, 0x2AE2, 0x8EA2, 0xD7A1, 0xD7FE, 0x2B40, 0x8EA2, 0xD8A1, - 0xD8FE, 0x2B9E, 0x8EA2, 0xD9A1, 0xD9FE, 0x2BFC, 0x8EA2, 0xDAA1, 0xDAFE, - 0x2C5A, 0x8EA2, 0xDBA1, 0xDBFE, 0x2CB8, 0x8EA2, 0xDCA1, 0xDCFE, 0x2D16, - 0x8EA2, 0xDDA1, 0xDDFE, 0x2D74, 0x8EA2, 0xDEA1, 0xDEFE, 0x2DD2, 0x8EA2, - 0xDFA1, 0xDFFE, 0x2E30, 0x8EA2, 0xE0A1, 0xE0FE, 0x2E8E, 0x8EA2, 0xE1A1, - 0xE1FE, 0x2EEC, 0x8EA2, 0xE2A1, 0xE2FE, 0x2F4A, 0x8EA2, 0xE3A1, 0xE3FE, - 0x2FA8, 0x8EA2, 0xE4A1, 0xE4FE, 0x3006, 0x8EA2, 0xE5A1, 0xE5FE, 0x3064, - 0x8EA2, 0xE6A1, 0xE6FE, 0x30C2, 0x8EA2, 0xE7A1, 0xE7FE, 0x3120, 0x8EA2, - 0xE8A1, 0xE8FE, 0x317E, 0x8EA2, 0xE9A1, 0xE9FE, 0x31DC, 0x8EA2, 0xEAA1, - 0xEAFE, 0x323A, 0x8EA2, 0xEBA1, 0xEBFE, 0x3298, 0x8EA2, 0xECA1, 0xECFE, - 0x32F6, 0x8EA2, 0xEDA1, 0xEDFE, 0x3354, 0x8EA2, 0xEEA1, 0xEEFE, 0x33B2, - 0x8EA2, 0xEFA1, 0xEFFE, 0x3410, 0x8EA2, 0xF0A1, 0xF0FE, 0x346E, 0x8EA2, - 0xF1A1, 0xF1FE, 0x34CC, 0x8EA2, 0xF2A1, 0xF2C4, 0x352A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp deleted file mode 100644 index 94106cc77b..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_CNS_EUC_V_0[180 * 3] = { - 0x0020, 0x007E, 0x3550, 0xA1A1, 0xA1AB, 0x0063, 0xA1AC, 0xA1AC, 0x354E, - 0xA1AD, 0xA1BA, 0x006F, 0xA1BB, 0xA1BB, 0x007C, 0xA1BC, 0xA1BC, 0x007E, - 0xA1BD, 0xA1BD, 0x007E, 0xA1BE, 0xA1BF, 0x0082, 0xA1C0, 0xA1C1, 0x0082, - 0xA1C2, 0xA1C3, 0x0086, 0xA1C4, 0xA1C5, 0x0086, 0xA1C6, 0xA1C7, 0x008A, - 0xA1C8, 0xA1C9, 0x008A, 0xA1CA, 0xA1CB, 0x008E, 0xA1CC, 0xA1CD, 0x008E, - 0xA1CE, 0xA1CF, 0x0092, 0xA1D0, 0xA1D1, 0x0092, 0xA1D2, 0xA1D3, 0x0096, - 0xA1D4, 0xA1D5, 0x0096, 0xA1D6, 0xA1D7, 0x009A, 0xA1D8, 0xA1D9, 0x009A, - 0xA1DA, 0xA1DB, 0x009E, 0xA1DC, 0xA1FE, 0x009E, 0xA2A1, 0xA2C3, 0x00C1, - 0xA2C4, 0xA2C4, 0x354F, 0xA2C5, 0xA2FE, 0x00E5, 0xA3A1, 0xA3CE, 0x011F, - 0xA4A1, 0xA4FE, 0x014D, 0xA5A1, 0xA5EC, 0x01AB, 0xA5EE, 0xA5F0, 0x01F7, - 0xA6A1, 0xA6BE, 0x01FA, 0xA7A1, 0xA7A1, 0x0253, 0xA7A2, 0xA7A4, 0x0218, - 0xA7A5, 0xA7A5, 0x0254, 0xA7A6, 0xA7A6, 0x021B, 0xA7A7, 0xA7A7, 0x025A, - 0xA7A8, 0xA7A8, 0x021C, 0xA7A9, 0xA7AC, 0x025B, 0xA7AD, 0xA7AF, 0x021D, - 0xA7B0, 0xA7B0, 0x025F, 0xA7B1, 0xA7B1, 0x176E, 0xA7B2, 0xA7B2, 0x0260, - 0xA7B3, 0xA7B3, 0x0262, 0xA7B4, 0xA7B4, 0x0220, 0xA7B5, 0xA7B5, 0x0263, - 0xA7B6, 0xA7B6, 0x176F, 0xA7B7, 0xA7B7, 0x0221, 0xA7B8, 0xA7B9, 0x0264, - 0xA7BA, 0xA7BA, 0x0222, 0xA7BB, 0xA7BB, 0x1770, 0xA7BC, 0xA7BC, 0x0223, - 0xA7BD, 0xA7BD, 0x0266, 0xA7BE, 0xA7BE, 0x0279, 0xA7BF, 0xA7BF, 0x1775, - 0xA7C0, 0xA7C1, 0x027A, 0xA7C2, 0xA7C2, 0x0224, 0xA7C3, 0xA7C6, 0x027C, - 0xA7C7, 0xA7C7, 0x0225, 0xA7C8, 0xA7CB, 0x0282, 0xA7CC, 0xA7CC, 0x1776, - 0xA7CD, 0xA7CD, 0x0286, 0xA7CE, 0xA7CE, 0x0226, 0xA7CF, 0xA7D0, 0x0288, - 0xA7D1, 0xA7D2, 0x028C, 0xA7D3, 0xA7D5, 0x0227, 0xA7D6, 0xA7D8, 0x028E, - 0xA7D9, 0xA7DA, 0x022A, 0xA7DB, 0xA7DB, 0x1777, 0xA7DC, 0xA7DF, 0x02D0, - 0xA7E0, 0xA7E0, 0x02D5, 0xA7E1, 0xA7E1, 0x022C, 0xA7E2, 0xA7E5, 0x02D6, - 0xA7E6, 0xA7E6, 0x022D, 0xA7E7, 0xA7ED, 0x02DA, 0xA7EE, 0xA7EE, 0x178A, - 0xA7EF, 0xA7F2, 0x02E1, 0xA7F3, 0xA7F3, 0x178C, 0xA7F4, 0xA7F8, 0x02E5, - 0xA7F9, 0xA7F9, 0x178D, 0xA7FA, 0xA7FD, 0x02EA, 0xA7FE, 0xA7FE, 0x0356, - 0xA8A1, 0xA8A6, 0x0357, 0xA8A7, 0xA8A7, 0x035E, 0xA8A8, 0xA8A8, 0x0362, - 0xA8A9, 0xA8AA, 0x022E, 0xA8AB, 0xA8B2, 0x0363, 0xA8B3, 0xA8B3, 0x17B2, - 0xA8B4, 0xA8B6, 0x036B, 0xA8B7, 0xA8BA, 0x03F6, 0xA8BB, 0xA8BB, 0x1812, - 0xA8BC, 0xA8BE, 0x03FA, 0xA8BF, 0xA8C3, 0x03FE, 0xA8C4, 0xA8CC, 0x0405, - 0xA8CD, 0xA8CD, 0x1813, 0xA8CE, 0xA8CE, 0x1818, 0xA8CF, 0xA8D2, 0x040F, - 0xA8D3, 0xA8D3, 0x1819, 0xA8D4, 0xA8D9, 0x0508, 0xA8DA, 0xA8DA, 0x18E7, - 0xA8DB, 0xA8E2, 0x050E, 0xA8E3, 0xA8E3, 0x0230, 0xA8E4, 0xA8E4, 0x051B, - 0xA8E5, 0xA8E7, 0x0520, 0xA8E8, 0xA8EB, 0x0696, 0xA8EC, 0xA8EC, 0x0231, - 0xA8ED, 0xA8F0, 0x069F, 0xA8F1, 0xA8FB, 0x0826, 0xA8FC, 0xA8FE, 0x09F5, - 0xA9A1, 0xA9A1, 0x1E33, 0xA9A2, 0xA9A2, 0x09F8, 0xA9A3, 0xA9A3, 0x1E34, - 0xA9A4, 0xA9A5, 0x09F9, 0xA9A6, 0xA9AB, 0x0BE1, 0xA9AC, 0xA9AE, 0x0DBB, - 0xA9AF, 0xA9AF, 0x2360, 0xA9B0, 0xA9B0, 0x2612, 0xA9B1, 0xA9B3, 0x0F7B, - 0xA9B4, 0xA9B5, 0x1100, 0xA9B6, 0xA9B6, 0x1289, 0xA9B7, 0xA9B8, 0x13B2, - 0xA9B9, 0xA9B9, 0x2F0D, 0xC2A1, 0xC2C1, 0x0232, 0xC4A1, 0xC4FE, 0x0253, - 0xC5A1, 0xC5FE, 0x02B1, 0xC6A1, 0xC6FE, 0x030F, 0xC7A1, 0xC7FE, 0x036D, - 0xC8A1, 0xC8FE, 0x03CB, 0xC9A1, 0xC9FE, 0x0429, 0xCAA1, 0xCAFE, 0x0487, - 0xCBA1, 0xCBFE, 0x04E5, 0xCCA1, 0xCCFE, 0x0543, 0xCDA1, 0xCDFE, 0x05A1, - 0xCEA1, 0xCEFE, 0x05FF, 0xCFA1, 0xCFFE, 0x065D, 0xD0A1, 0xD0FE, 0x06BB, - 0xD1A1, 0xD1FE, 0x0719, 0xD2A1, 0xD2FE, 0x0777, 0xD3A1, 0xD3FE, 0x07D5, - 0xD4A1, 0xD4FE, 0x0833, 0xD5A1, 0xD5FE, 0x0891, 0xD6A1, 0xD6FE, 0x08EF, - 0xD7A1, 0xD7FE, 0x094D, 0xD8A1, 0xD8FE, 0x09AB, 0xD9A1, 0xD9FE, 0x0A09, - 0xDAA1, 0xDAFE, 0x0A67, 0xDBA1, 0xDBFE, 0x0AC5, 0xDCA1, 0xDCFE, 0x0B23, - 0xDDA1, 0xDDFE, 0x0B81, 0xDEA1, 0xDEFE, 0x0BDF, 0xDFA1, 0xDFFE, 0x0C3D, - 0xE0A1, 0xE0FE, 0x0C9B, 0xE1A1, 0xE1FE, 0x0CF9, 0xE2A1, 0xE2FE, 0x0D57, - 0xE3A1, 0xE3FE, 0x0DB5, 0xE4A1, 0xE4FE, 0x0E13, 0xE5A1, 0xE5FE, 0x0E71, - 0xE6A1, 0xE6FE, 0x0ECF, 0xE7A1, 0xE7FE, 0x0F2D, 0xE8A1, 0xE8FE, 0x0F8B, - 0xE9A1, 0xE9FE, 0x0FE9, 0xEAA1, 0xEAFE, 0x1047, 0xEBA1, 0xEBFE, 0x10A5, - 0xECA1, 0xECFE, 0x1103, 0xEDA1, 0xEDFE, 0x1161, 0xEEA1, 0xEEFE, 0x11BF, - 0xEFA1, 0xEFFE, 0x121D, 0xF0A1, 0xF0FE, 0x127B, 0xF1A1, 0xF1FE, 0x12D9, - 0xF2A1, 0xF2FE, 0x1337, 0xF3A1, 0xF3FE, 0x1395, 0xF4A1, 0xF4FE, 0x13F3, - 0xF5A1, 0xF5FE, 0x1451, 0xF6A1, 0xF6FE, 0x14AF, 0xF7A1, 0xF7FE, 0x150D, - 0xF8A1, 0xF8FE, 0x156B, 0xF9A1, 0xF9FE, 0x15C9, 0xFAA1, 0xFAFE, 0x1627, - 0xFBA1, 0xFBFE, 0x1685, 0xFCA1, 0xFCFE, 0x16E3, 0xFDA1, 0xFDCB, 0x1741, -}; - -const FX_WORD g_FXCMAP_CNS_EUC_V_0_DWord[261 * 4] = { - 0x8EA1, 0xA1A1, 0xA1AB, 0x0063, 0x8EA1, 0xA1AC, 0xA1AC, 0x354E, 0x8EA1, - 0xA1AD, 0xA1BA, 0x006F, 0x8EA1, 0xA1BB, 0xA1BB, 0x007C, 0x8EA1, 0xA1BC, - 0xA1BC, 0x007E, 0x8EA1, 0xA1BD, 0xA1BD, 0x007E, 0x8EA1, 0xA1BE, 0xA1BF, - 0x0082, 0x8EA1, 0xA1C0, 0xA1C1, 0x0082, 0x8EA1, 0xA1C2, 0xA1C3, 0x0086, - 0x8EA1, 0xA1C4, 0xA1C5, 0x0086, 0x8EA1, 0xA1C6, 0xA1C7, 0x008A, 0x8EA1, - 0xA1C8, 0xA1C9, 0x008A, 0x8EA1, 0xA1CA, 0xA1CB, 0x008E, 0x8EA1, 0xA1CC, - 0xA1CD, 0x008E, 0x8EA1, 0xA1CE, 0xA1CF, 0x0092, 0x8EA1, 0xA1D0, 0xA1D1, - 0x0092, 0x8EA1, 0xA1D2, 0xA1D3, 0x0096, 0x8EA1, 0xA1D4, 0xA1D5, 0x0096, - 0x8EA1, 0xA1D6, 0xA1D7, 0x009A, 0x8EA1, 0xA1D8, 0xA1D9, 0x009A, 0x8EA1, - 0xA1DA, 0xA1DB, 0x009E, 0x8EA1, 0xA1DC, 0xA1FE, 0x009E, 0x8EA1, 0xA2A1, - 0xA2C3, 0x00C1, 0x8EA1, 0xA2C4, 0xA2C4, 0x354F, 0x8EA1, 0xA2C5, 0xA2FE, - 0x00E5, 0x8EA1, 0xA3A1, 0xA3CE, 0x011F, 0x8EA1, 0xA4A1, 0xA4FE, 0x014D, - 0x8EA1, 0xA5A1, 0xA5EC, 0x01AB, 0x8EA1, 0xA5EE, 0xA5F0, 0x01F7, 0x8EA1, - 0xA6A1, 0xA6BE, 0x01FA, 0x8EA1, 0xA7A1, 0xA7A1, 0x0253, 0x8EA1, 0xA7A2, - 0xA7A4, 0x0218, 0x8EA1, 0xA7A5, 0xA7A5, 0x0254, 0x8EA1, 0xA7A6, 0xA7A6, - 0x021B, 0x8EA1, 0xA7A7, 0xA7A7, 0x025A, 0x8EA1, 0xA7A8, 0xA7A8, 0x021C, - 0x8EA1, 0xA7A9, 0xA7AC, 0x025B, 0x8EA1, 0xA7AD, 0xA7AF, 0x021D, 0x8EA1, - 0xA7B0, 0xA7B0, 0x025F, 0x8EA1, 0xA7B1, 0xA7B1, 0x176E, 0x8EA1, 0xA7B2, - 0xA7B2, 0x0260, 0x8EA1, 0xA7B3, 0xA7B3, 0x0262, 0x8EA1, 0xA7B4, 0xA7B4, - 0x0220, 0x8EA1, 0xA7B5, 0xA7B5, 0x0263, 0x8EA1, 0xA7B6, 0xA7B6, 0x176F, - 0x8EA1, 0xA7B7, 0xA7B7, 0x0221, 0x8EA1, 0xA7B8, 0xA7B9, 0x0264, 0x8EA1, - 0xA7BA, 0xA7BA, 0x0222, 0x8EA1, 0xA7BB, 0xA7BB, 0x1770, 0x8EA1, 0xA7BC, - 0xA7BC, 0x0223, 0x8EA1, 0xA7BD, 0xA7BD, 0x0266, 0x8EA1, 0xA7BE, 0xA7BE, - 0x0279, 0x8EA1, 0xA7BF, 0xA7BF, 0x1775, 0x8EA1, 0xA7C0, 0xA7C1, 0x027A, - 0x8EA1, 0xA7C2, 0xA7C2, 0x0224, 0x8EA1, 0xA7C3, 0xA7C6, 0x027C, 0x8EA1, - 0xA7C7, 0xA7C7, 0x0225, 0x8EA1, 0xA7C8, 0xA7CB, 0x0282, 0x8EA1, 0xA7CC, - 0xA7CC, 0x1776, 0x8EA1, 0xA7CD, 0xA7CD, 0x0286, 0x8EA1, 0xA7CE, 0xA7CE, - 0x0226, 0x8EA1, 0xA7CF, 0xA7D0, 0x0288, 0x8EA1, 0xA7D1, 0xA7D2, 0x028C, - 0x8EA1, 0xA7D3, 0xA7D5, 0x0227, 0x8EA1, 0xA7D6, 0xA7D8, 0x028E, 0x8EA1, - 0xA7D9, 0xA7DA, 0x022A, 0x8EA1, 0xA7DB, 0xA7DB, 0x1777, 0x8EA1, 0xA7DC, - 0xA7DF, 0x02D0, 0x8EA1, 0xA7E0, 0xA7E0, 0x02D5, 0x8EA1, 0xA7E1, 0xA7E1, - 0x022C, 0x8EA1, 0xA7E2, 0xA7E5, 0x02D6, 0x8EA1, 0xA7E6, 0xA7E6, 0x022D, - 0x8EA1, 0xA7E7, 0xA7ED, 0x02DA, 0x8EA1, 0xA7EE, 0xA7EE, 0x178A, 0x8EA1, - 0xA7EF, 0xA7F2, 0x02E1, 0x8EA1, 0xA7F3, 0xA7F3, 0x178C, 0x8EA1, 0xA7F4, - 0xA7F8, 0x02E5, 0x8EA1, 0xA7F9, 0xA7F9, 0x178D, 0x8EA1, 0xA7FA, 0xA7FD, - 0x02EA, 0x8EA1, 0xA7FE, 0xA7FE, 0x0356, 0x8EA1, 0xA8A1, 0xA8A6, 0x0357, - 0x8EA1, 0xA8A7, 0xA8A7, 0x035E, 0x8EA1, 0xA8A8, 0xA8A8, 0x0362, 0x8EA1, - 0xA8A9, 0xA8AA, 0x022E, 0x8EA1, 0xA8AB, 0xA8B2, 0x0363, 0x8EA1, 0xA8B3, - 0xA8B3, 0x17B2, 0x8EA1, 0xA8B4, 0xA8B6, 0x036B, 0x8EA1, 0xA8B7, 0xA8BA, - 0x03F6, 0x8EA1, 0xA8BB, 0xA8BB, 0x1812, 0x8EA1, 0xA8BC, 0xA8BE, 0x03FA, - 0x8EA1, 0xA8BF, 0xA8C3, 0x03FE, 0x8EA1, 0xA8C4, 0xA8CC, 0x0405, 0x8EA1, - 0xA8CD, 0xA8CD, 0x1813, 0x8EA1, 0xA8CE, 0xA8CE, 0x1818, 0x8EA1, 0xA8CF, - 0xA8D2, 0x040F, 0x8EA1, 0xA8D3, 0xA8D3, 0x1819, 0x8EA1, 0xA8D4, 0xA8D9, - 0x0508, 0x8EA1, 0xA8DA, 0xA8DA, 0x18E7, 0x8EA1, 0xA8DB, 0xA8E2, 0x050E, - 0x8EA1, 0xA8E3, 0xA8E3, 0x0230, 0x8EA1, 0xA8E4, 0xA8E4, 0x051B, 0x8EA1, - 0xA8E5, 0xA8E7, 0x0520, 0x8EA1, 0xA8E8, 0xA8EB, 0x0696, 0x8EA1, 0xA8EC, - 0xA8EC, 0x0231, 0x8EA1, 0xA8ED, 0xA8F0, 0x069F, 0x8EA1, 0xA8F1, 0xA8FB, - 0x0826, 0x8EA1, 0xA8FC, 0xA8FE, 0x09F5, 0x8EA1, 0xA9A1, 0xA9A1, 0x1E33, - 0x8EA1, 0xA9A2, 0xA9A2, 0x09F8, 0x8EA1, 0xA9A3, 0xA9A3, 0x1E34, 0x8EA1, - 0xA9A4, 0xA9A5, 0x09F9, 0x8EA1, 0xA9A6, 0xA9AB, 0x0BE1, 0x8EA1, 0xA9AC, - 0xA9AE, 0x0DBB, 0x8EA1, 0xA9AF, 0xA9AF, 0x2360, 0x8EA1, 0xA9B0, 0xA9B0, - 0x2612, 0x8EA1, 0xA9B1, 0xA9B3, 0x0F7B, 0x8EA1, 0xA9B4, 0xA9B5, 0x1100, - 0x8EA1, 0xA9B6, 0xA9B6, 0x1289, 0x8EA1, 0xA9B7, 0xA9B8, 0x13B2, 0x8EA1, - 0xA9B9, 0xA9B9, 0x2F0D, 0x8EA1, 0xC2A1, 0xC2C1, 0x0232, 0x8EA1, 0xC4A1, - 0xC4FE, 0x0253, 0x8EA1, 0xC5A1, 0xC5FE, 0x02B1, 0x8EA1, 0xC6A1, 0xC6FE, - 0x030F, 0x8EA1, 0xC7A1, 0xC7FE, 0x036D, 0x8EA1, 0xC8A1, 0xC8FE, 0x03CB, - 0x8EA1, 0xC9A1, 0xC9FE, 0x0429, 0x8EA1, 0xCAA1, 0xCAFE, 0x0487, 0x8EA1, - 0xCBA1, 0xCBFE, 0x04E5, 0x8EA1, 0xCCA1, 0xCCFE, 0x0543, 0x8EA1, 0xCDA1, - 0xCDFE, 0x05A1, 0x8EA1, 0xCEA1, 0xCEFE, 0x05FF, 0x8EA1, 0xCFA1, 0xCFFE, - 0x065D, 0x8EA1, 0xD0A1, 0xD0FE, 0x06BB, 0x8EA1, 0xD1A1, 0xD1FE, 0x0719, - 0x8EA1, 0xD2A1, 0xD2FE, 0x0777, 0x8EA1, 0xD3A1, 0xD3FE, 0x07D5, 0x8EA1, - 0xD4A1, 0xD4FE, 0x0833, 0x8EA1, 0xD5A1, 0xD5FE, 0x0891, 0x8EA1, 0xD6A1, - 0xD6FE, 0x08EF, 0x8EA1, 0xD7A1, 0xD7FE, 0x094D, 0x8EA1, 0xD8A1, 0xD8FE, - 0x09AB, 0x8EA1, 0xD9A1, 0xD9FE, 0x0A09, 0x8EA1, 0xDAA1, 0xDAFE, 0x0A67, - 0x8EA1, 0xDBA1, 0xDBFE, 0x0AC5, 0x8EA1, 0xDCA1, 0xDCFE, 0x0B23, 0x8EA1, - 0xDDA1, 0xDDFE, 0x0B81, 0x8EA1, 0xDEA1, 0xDEFE, 0x0BDF, 0x8EA1, 0xDFA1, - 0xDFFE, 0x0C3D, 0x8EA1, 0xE0A1, 0xE0FE, 0x0C9B, 0x8EA1, 0xE1A1, 0xE1FE, - 0x0CF9, 0x8EA1, 0xE2A1, 0xE2FE, 0x0D57, 0x8EA1, 0xE3A1, 0xE3FE, 0x0DB5, - 0x8EA1, 0xE4A1, 0xE4FE, 0x0E13, 0x8EA1, 0xE5A1, 0xE5FE, 0x0E71, 0x8EA1, - 0xE6A1, 0xE6FE, 0x0ECF, 0x8EA1, 0xE7A1, 0xE7FE, 0x0F2D, 0x8EA1, 0xE8A1, - 0xE8FE, 0x0F8B, 0x8EA1, 0xE9A1, 0xE9FE, 0x0FE9, 0x8EA1, 0xEAA1, 0xEAFE, - 0x1047, 0x8EA1, 0xEBA1, 0xEBFE, 0x10A5, 0x8EA1, 0xECA1, 0xECFE, 0x1103, - 0x8EA1, 0xEDA1, 0xEDFE, 0x1161, 0x8EA1, 0xEEA1, 0xEEFE, 0x11BF, 0x8EA1, - 0xEFA1, 0xEFFE, 0x121D, 0x8EA1, 0xF0A1, 0xF0FE, 0x127B, 0x8EA1, 0xF1A1, - 0xF1FE, 0x12D9, 0x8EA1, 0xF2A1, 0xF2FE, 0x1337, 0x8EA1, 0xF3A1, 0xF3FE, - 0x1395, 0x8EA1, 0xF4A1, 0xF4FE, 0x13F3, 0x8EA1, 0xF5A1, 0xF5FE, 0x1451, - 0x8EA1, 0xF6A1, 0xF6FE, 0x14AF, 0x8EA1, 0xF7A1, 0xF7FE, 0x150D, 0x8EA1, - 0xF8A1, 0xF8FE, 0x156B, 0x8EA1, 0xF9A1, 0xF9FE, 0x15C9, 0x8EA1, 0xFAA1, - 0xFAFE, 0x1627, 0x8EA1, 0xFBA1, 0xFBFE, 0x1685, 0x8EA1, 0xFCA1, 0xFCFE, - 0x16E3, 0x8EA1, 0xFDA1, 0xFDCB, 0x1741, 0x8EA2, 0xA1A1, 0xA1FE, 0x176C, - 0x8EA2, 0xA2A1, 0xA2FE, 0x17CA, 0x8EA2, 0xA3A1, 0xA3FE, 0x1828, 0x8EA2, - 0xA4A1, 0xA4FE, 0x1886, 0x8EA2, 0xA5A1, 0xA5FE, 0x18E4, 0x8EA2, 0xA6A1, - 0xA6FE, 0x1942, 0x8EA2, 0xA7A1, 0xA7FE, 0x19A0, 0x8EA2, 0xA8A1, 0xA8FE, - 0x19FE, 0x8EA2, 0xA9A1, 0xA9FE, 0x1A5C, 0x8EA2, 0xAAA1, 0xAAFE, 0x1ABA, - 0x8EA2, 0xABA1, 0xABFE, 0x1B18, 0x8EA2, 0xACA1, 0xACFE, 0x1B76, 0x8EA2, - 0xADA1, 0xADFE, 0x1BD4, 0x8EA2, 0xAEA1, 0xAEFE, 0x1C32, 0x8EA2, 0xAFA1, - 0xAFFE, 0x1C90, 0x8EA2, 0xB0A1, 0xB0FE, 0x1CEE, 0x8EA2, 0xB1A1, 0xB1FE, - 0x1D4C, 0x8EA2, 0xB2A1, 0xB2FE, 0x1DAA, 0x8EA2, 0xB3A1, 0xB3FE, 0x1E08, - 0x8EA2, 0xB4A1, 0xB4FE, 0x1E66, 0x8EA2, 0xB5A1, 0xB5FE, 0x1EC4, 0x8EA2, - 0xB6A1, 0xB6FE, 0x1F22, 0x8EA2, 0xB7A1, 0xB7FE, 0x1F80, 0x8EA2, 0xB8A1, - 0xB8FE, 0x1FDE, 0x8EA2, 0xB9A1, 0xB9FE, 0x203C, 0x8EA2, 0xBAA1, 0xBAFE, - 0x209A, 0x8EA2, 0xBBA1, 0xBBFE, 0x20F8, 0x8EA2, 0xBCA1, 0xBCFE, 0x2156, - 0x8EA2, 0xBDA1, 0xBDFE, 0x21B4, 0x8EA2, 0xBEA1, 0xBEFE, 0x2212, 0x8EA2, - 0xBFA1, 0xBFFE, 0x2270, 0x8EA2, 0xC0A1, 0xC0FE, 0x22CE, 0x8EA2, 0xC1A1, - 0xC1FE, 0x232C, 0x8EA2, 0xC2A1, 0xC2FE, 0x238A, 0x8EA2, 0xC3A1, 0xC3FE, - 0x23E8, 0x8EA2, 0xC4A1, 0xC4FE, 0x2446, 0x8EA2, 0xC5A1, 0xC5FE, 0x24A4, - 0x8EA2, 0xC6A1, 0xC6FE, 0x2502, 0x8EA2, 0xC7A1, 0xC7FE, 0x2560, 0x8EA2, - 0xC8A1, 0xC8FE, 0x25BE, 0x8EA2, 0xC9A1, 0xC9FE, 0x261C, 0x8EA2, 0xCAA1, - 0xCAFE, 0x267A, 0x8EA2, 0xCBA1, 0xCBFE, 0x26D8, 0x8EA2, 0xCCA1, 0xCCFE, - 0x2736, 0x8EA2, 0xCDA1, 0xCDFE, 0x2794, 0x8EA2, 0xCEA1, 0xCEFE, 0x27F2, - 0x8EA2, 0xCFA1, 0xCFFE, 0x2850, 0x8EA2, 0xD0A1, 0xD0FE, 0x28AE, 0x8EA2, - 0xD1A1, 0xD1FE, 0x290C, 0x8EA2, 0xD2A1, 0xD2FE, 0x296A, 0x8EA2, 0xD3A1, - 0xD3FE, 0x29C8, 0x8EA2, 0xD4A1, 0xD4FE, 0x2A26, 0x8EA2, 0xD5A1, 0xD5FE, - 0x2A84, 0x8EA2, 0xD6A1, 0xD6FE, 0x2AE2, 0x8EA2, 0xD7A1, 0xD7FE, 0x2B40, - 0x8EA2, 0xD8A1, 0xD8FE, 0x2B9E, 0x8EA2, 0xD9A1, 0xD9FE, 0x2BFC, 0x8EA2, - 0xDAA1, 0xDAFE, 0x2C5A, 0x8EA2, 0xDBA1, 0xDBFE, 0x2CB8, 0x8EA2, 0xDCA1, - 0xDCFE, 0x2D16, 0x8EA2, 0xDDA1, 0xDDFE, 0x2D74, 0x8EA2, 0xDEA1, 0xDEFE, - 0x2DD2, 0x8EA2, 0xDFA1, 0xDFFE, 0x2E30, 0x8EA2, 0xE0A1, 0xE0FE, 0x2E8E, - 0x8EA2, 0xE1A1, 0xE1FE, 0x2EEC, 0x8EA2, 0xE2A1, 0xE2FE, 0x2F4A, 0x8EA2, - 0xE3A1, 0xE3FE, 0x2FA8, 0x8EA2, 0xE4A1, 0xE4FE, 0x3006, 0x8EA2, 0xE5A1, - 0xE5FE, 0x3064, 0x8EA2, 0xE6A1, 0xE6FE, 0x30C2, 0x8EA2, 0xE7A1, 0xE7FE, - 0x3120, 0x8EA2, 0xE8A1, 0xE8FE, 0x317E, 0x8EA2, 0xE9A1, 0xE9FE, 0x31DC, - 0x8EA2, 0xEAA1, 0xEAFE, 0x323A, 0x8EA2, 0xEBA1, 0xEBFE, 0x3298, 0x8EA2, - 0xECA1, 0xECFE, 0x32F6, 0x8EA2, 0xEDA1, 0xEDFE, 0x3354, 0x8EA2, 0xEEA1, - 0xEEFE, 0x33B2, 0x8EA2, 0xEFA1, 0xEFFE, 0x3410, 0x8EA2, 0xF0A1, 0xF0FE, - 0x346E, 0x8EA2, 0xF1A1, 0xF1FE, 0x34CC, 0x8EA2, 0xF2A1, 0xF2C4, 0x352A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp deleted file mode 100644 index 23a9e055e6..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_ETen_B5_H_0[254 * 3] = { - 0x0020, 0x007E, 0x3550, 0xA140, 0xA158, 0x0063, 0xA159, 0xA15C, 0x35AF, - 0xA15D, 0xA17E, 0x0080, 0xA1A1, 0xA1F5, 0x00A2, 0xA1F6, 0xA1F6, 0x00F8, - 0xA1F7, 0xA1F7, 0x00F7, 0xA1F8, 0xA1FE, 0x00F9, 0xA240, 0xA27E, 0x0100, - 0xA2A1, 0xA2FE, 0x013F, 0xA340, 0xA37E, 0x019D, 0xA3A1, 0xA3BB, 0x01DC, - 0xA3BD, 0xA3BF, 0x01F7, 0xA440, 0xA47E, 0x0253, 0xA4A1, 0xA4FE, 0x0292, - 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, 0xA640, 0xA67E, 0x038D, - 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, 0xA7A1, 0xA7FE, 0x0469, - 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, 0xA940, 0xA97E, 0x0564, - 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, 0xAAA1, 0xAAFE, 0x0640, - 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, 0xAC40, 0xAC7E, 0x073B, - 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, 0xAD40, 0xAD7E, 0x07D7, - 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, 0xAEA1, 0xAEFE, 0x08B3, - 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, 0xAFD0, 0xAFFE, 0x0980, - 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, 0xB140, 0xB17E, 0x0A4C, - 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, 0xB2A1, 0xB2FE, 0x0B28, - 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, 0xB440, 0xB47E, 0x0C23, - 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, 0xB5A1, 0xB5FE, 0x0CFF, - 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, 0xB740, 0xB77E, 0x0DFA, - 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, 0xB8A1, 0xB8FE, 0x0ED6, - 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, 0xBA40, 0xBA7E, 0x0FD1, - 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, 0xBBA1, 0xBBC7, 0x10AD, - 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, 0xBCA1, 0xBCFE, 0x114B, - 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, 0xBE40, 0xBE51, 0x1246, - 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, 0xBEA1, 0xBEFE, 0x1284, - 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, 0xC040, 0xC07E, 0x137F, - 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, 0xC1A1, 0xC1AA, 0x145B, - 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, 0xC2A1, 0xC2CA, 0x14F9, - 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, 0xC340, 0xC360, 0x1556, - 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, 0xC3B9, 0xC3B9, 0x15AF, - 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, 0xC440, 0xC455, 0x15F4, - 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, 0xC4A1, 0xC4FE, 0x1632, - 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, 0xC640, 0xC67E, 0x172D, - 0xC6A1, 0xC6BE, 0x01FA, 0xC6BF, 0xC6D7, 0x0219, 0xC6D8, 0xC6DE, 0x35B3, - 0xC6DF, 0xC6DF, 0x1794, 0xC6E0, 0xC6FE, 0x35BA, 0xC740, 0xC77E, 0x35D9, - 0xC7A1, 0xC7FE, 0x3618, 0xC840, 0xC87E, 0x3676, 0xC8A1, 0xC8D3, 0x36B5, - 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776, - 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797, - 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809, - 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E, - 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942, - 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E, - 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19, - 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5, - 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0, - 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC, - 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7, - 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3, - 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001, - 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F, - 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A, - 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216, - 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274, - 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312, - 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE, - 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B, - 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527, - 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622, - 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE, - 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9, - 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5, - 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0, - 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC, - 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42, - 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8, - 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86, - 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3, - 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F, - 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8, - 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014, - 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8, - 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C, - 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE, - 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160, - 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E, - 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC, - 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161, - 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0, - 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D, - 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6, - 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327, - 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF, - 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA, - 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511, - 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E, - 0xF9D2, 0xF9D5, 0x354A, 0xF9D6, 0xF9FE, 0x36E8, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp deleted file mode 100644 index 61114e5b53..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_ETen_B5_V_0[13 * 3] = { - 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, - 0x35B1, 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, - 0xA166, 0x008A, 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, - 0xA171, 0xA172, 0x0096, 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, - 0x009E, 0xA1E3, 0xA1E3, 0x354F, 0xC6E4, 0xC6E5, 0x3711, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp deleted file mode 100644 index f13970edba..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_ETenms_B5_H_0[1 * 3] = { - 0x0020, 0x007E, 0x0001, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp deleted file mode 100644 index 029d00030c..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_ETenms_B5_V_0[18 * 3] = { - 0xA14B, 0xA14B, 0x354E, 0xA14C, 0xA14C, 0x006D, 0xA156, 0xA156, 0x0138, - 0xA158, 0xA158, 0x007A, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, 0x35B1, - 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, 0xA166, 0x008A, - 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, 0xA171, 0xA172, 0x0096, - 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, 0x009E, 0xA17D, 0xA17E, 0x0082, - 0xA1A1, 0xA1A2, 0x0086, 0xA1A3, 0xA1A4, 0x008A, 0xC6E4, 0xC6E5, 0x3711, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp deleted file mode 100644 index 85871b99d6..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp +++ /dev/null @@ -1,414 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_HKscs_B5_H_5[1210 * 3] = { - 0x0020, 0x007E, 0x0001, 0x8740, 0x8765, 0x4A15, 0x8767, 0x8779, 0x4A3B, - 0x8840, 0x8855, 0x44C9, 0x8856, 0x887E, 0x4961, 0x88A1, 0x88A8, 0x498A, - 0x88A9, 0x88AA, 0x499C, 0x8940, 0x8941, 0x4534, 0x8943, 0x8943, 0x4536, - 0x8946, 0x8949, 0x4537, 0x894C, 0x894C, 0x453B, 0x894D, 0x894D, 0x43C3, - 0x894E, 0x8950, 0x453C, 0x8951, 0x8951, 0x439A, 0x8952, 0x897E, 0x453F, - 0x89A1, 0x89A5, 0x456C, 0x89A6, 0x89A6, 0x43A2, 0x89AB, 0x89AB, 0x43EC, - 0x89AC, 0x89AC, 0x4571, 0x89AD, 0x89AD, 0x43EB, 0x89AE, 0x89AE, 0x4572, - 0x89B0, 0x89B2, 0x4573, 0x89B5, 0x89BF, 0x4576, 0x89C1, 0x89C3, 0x4581, - 0x89C5, 0x89CE, 0x4584, 0x89CF, 0x89CF, 0x43BC, 0x89D0, 0x89D8, 0x458E, - 0x89D9, 0x89D9, 0x439C, 0x89DA, 0x89DA, 0x4597, 0x89DB, 0x89DB, 0x439E, - 0x89DC, 0x89DC, 0x4598, 0x89DD, 0x89DD, 0x439F, 0x89DE, 0x89E0, 0x4599, - 0x89E1, 0x89E1, 0x43A1, 0x89E2, 0x89E2, 0x459C, 0x89E3, 0x89E3, 0x43A3, - 0x89E4, 0x89E9, 0x459D, 0x89EA, 0x89EB, 0x43A5, 0x89EC, 0x89F9, 0x45A3, - 0x89FA, 0x89FA, 0x43A9, 0x89FB, 0x89FE, 0x45B1, 0x8A40, 0x8A40, 0x45B5, - 0x8A41, 0x8A41, 0x4309, 0x8A43, 0x8A4C, 0x430B, 0x8A4D, 0x8A4D, 0x45B6, - 0x8A4E, 0x8A59, 0x4316, 0x8A5A, 0x8A5A, 0x45B7, 0x8A5B, 0x8A5D, 0x4323, - 0x8A5E, 0x8A5E, 0x45B8, 0x8A5F, 0x8A62, 0x4327, 0x8A64, 0x8A70, 0x432C, - 0x8A71, 0x8A71, 0x45B9, 0x8A72, 0x8A74, 0x433A, 0x8A76, 0x8A76, 0x433E, - 0x8A77, 0x8A77, 0x45BA, 0x8A78, 0x8A79, 0x4340, 0x8A7A, 0x8A7A, 0x45BB, - 0x8A7B, 0x8A7B, 0x4343, 0x8A7C, 0x8A7C, 0x45BC, 0x8A7D, 0x8A7D, 0x4345, - 0x8A7E, 0x8A7E, 0x45BD, 0x8AA1, 0x8AA7, 0x4347, 0x8AA8, 0x8AA8, 0x45BE, - 0x8AA9, 0x8AAA, 0x434F, 0x8AAC, 0x8AB0, 0x4352, 0x8AB2, 0x8AB5, 0x4358, - 0x8AB6, 0x8AB6, 0x45BF, 0x8AB7, 0x8AB7, 0x435D, 0x8AB8, 0x8AB8, 0x45C0, - 0x8AB9, 0x8AB9, 0x435F, 0x8ABB, 0x8AC7, 0x4361, 0x8AC9, 0x8ACB, 0x436F, - 0x8ACC, 0x8ACC, 0x45C1, 0x8ACE, 0x8AD5, 0x4374, 0x8AD6, 0x8AD7, 0x45C2, - 0x8AD8, 0x8ADC, 0x437E, 0x8ADF, 0x8AE5, 0x4385, 0x8AE6, 0x8AE6, 0x45C4, - 0x8AE7, 0x8AE7, 0x43DB, 0x8AE8, 0x8AF4, 0x45C5, 0x8AF6, 0x8AFE, 0x45D2, - 0x8B40, 0x8B40, 0x45DB, 0x8B41, 0x8B42, 0x438C, 0x8B43, 0x8B44, 0x45DC, - 0x8B45, 0x8B45, 0x438E, 0x8B46, 0x8B46, 0x45DE, 0x8B47, 0x8B47, 0x438F, - 0x8B48, 0x8B48, 0x45DF, 0x8B49, 0x8B49, 0x4390, 0x8B4A, 0x8B4A, 0x45E0, - 0x8B4B, 0x8B4B, 0x4391, 0x8B4C, 0x8B4C, 0x45E1, 0x8B4D, 0x8B50, 0x4392, - 0x8B51, 0x8B53, 0x45E2, 0x8B55, 0x8B57, 0x45E5, 0x8B58, 0x8B58, 0x4397, - 0x8B59, 0x8B59, 0x45E8, 0x8B5A, 0x8B5A, 0x4398, 0x8B5B, 0x8B5B, 0x43C4, - 0x8B5C, 0x8B60, 0x45E9, 0x8B61, 0x8B61, 0x43A7, 0x8B62, 0x8B67, 0x45EE, - 0x8B68, 0x8B68, 0x43AC, 0x8B69, 0x8B7E, 0x45F4, 0x8BA1, 0x8BBF, 0x460A, - 0x8BC0, 0x8BDC, 0x44DF, 0x8BDE, 0x8BFD, 0x44FC, 0x8C40, 0x8C61, 0x49A1, - 0x8C62, 0x8C62, 0x4A4E, 0x8C63, 0x8C7E, 0x49C3, 0x8CA1, 0x8CA5, 0x49DF, - 0x8CA7, 0x8CC5, 0x49E4, 0x8CC9, 0x8CCC, 0x4A03, 0x8CCE, 0x8CDA, 0x4A07, - 0x8CDB, 0x8CDB, 0x4A4F, 0x8CDC, 0x8CDC, 0x4A14, 0x8CDD, 0x8CE4, 0x4A50, - 0x8CE6, 0x8CFE, 0x4A58, 0x8D40, 0x8D40, 0x4A71, 0x8D42, 0x8D5F, 0x4A72, - 0x8D60, 0x8D61, 0x4629, 0x8D62, 0x8D62, 0x43BA, 0x8D63, 0x8D67, 0x462B, - 0x8D68, 0x8D68, 0x43BB, 0x8D69, 0x8D69, 0x43A0, 0x8D6A, 0x8D6A, 0x43BD, - 0x8D6B, 0x8D6D, 0x4630, 0x8D6E, 0x8D6E, 0x43BE, 0x8D6F, 0x8D75, 0x4633, - 0x8D76, 0x8D76, 0x43BF, 0x8D77, 0x8D79, 0x463A, 0x8D7A, 0x8D7A, 0x43C0, - 0x8D7B, 0x8D7B, 0x463D, 0x8D7C, 0x8D7C, 0x43C1, 0x8D7D, 0x8D7E, 0x463E, - 0x8DA1, 0x8DA4, 0x4640, 0x8DA5, 0x8DA5, 0x43C2, 0x8DA6, 0x8DA7, 0x4644, - 0x8DA8, 0x8DA8, 0x43B9, 0x8DA9, 0x8DA9, 0x43AD, 0x8DAA, 0x8DB5, 0x4646, - 0x8DB6, 0x8DB6, 0x43C7, 0x8DB7, 0x8DC2, 0x4652, 0x8DC3, 0x8DC3, 0x43C8, - 0x8DC4, 0x8DF9, 0x465E, 0x8DFA, 0x8DFA, 0x43F9, 0x8DFB, 0x8DFE, 0x4694, - 0x8E40, 0x8E44, 0x372B, 0x8E45, 0x8E45, 0x4698, 0x8E46, 0x8E68, 0x3730, - 0x8E69, 0x8E69, 0x1055, 0x8E6A, 0x8E6A, 0x3754, 0x8E6B, 0x8E6C, 0x4699, - 0x8E6D, 0x8E6E, 0x3756, 0x8E6F, 0x8E6F, 0x2DE8, 0x8E70, 0x8E75, 0x3759, - 0x8E76, 0x8E76, 0x469B, 0x8E77, 0x8E7A, 0x375F, 0x8E7B, 0x8E7B, 0x469C, - 0x8E7C, 0x8E7D, 0x3764, 0x8E7E, 0x8E7E, 0x0121, 0x8EA1, 0x8EA5, 0x3766, - 0x8EA6, 0x8EA6, 0x469D, 0x8EA7, 0x8EAA, 0x376B, 0x8EAB, 0x8EAB, 0x106B, - 0x8EAC, 0x8EB3, 0x3770, 0x8EB4, 0x8EB4, 0x1326, 0x8EB5, 0x8EB7, 0x3779, - 0x8EB8, 0x8EB8, 0x469E, 0x8EB9, 0x8EC8, 0x377D, 0x8EC9, 0x8EC9, 0x469F, - 0x8ECA, 0x8ECC, 0x378D, 0x8ECD, 0x8ECD, 0x066B, 0x8ECE, 0x8ECF, 0x3791, - 0x8ED0, 0x8ED0, 0x132E, 0x8ED1, 0x8EE4, 0x3794, 0x8EE5, 0x8EE5, 0x46A0, - 0x8EE6, 0x8EEE, 0x37A8, 0x8EEF, 0x8EEF, 0x46A1, 0x8EF0, 0x8EF5, 0x37B1, - 0x8EF6, 0x8EF6, 0x46A2, 0x8EF7, 0x8EFE, 0x37B8, 0x8F40, 0x8F56, 0x37C0, - 0x8F57, 0x8F57, 0x0D35, 0x8F58, 0x8F58, 0x37D8, 0x8F59, 0x8F59, 0x46A3, - 0x8F5A, 0x8F5E, 0x37D9, 0x8F5F, 0x8F5F, 0x46A4, 0x8F60, 0x8F66, 0x37DE, - 0x8F67, 0x8F67, 0x46A5, 0x8F68, 0x8F68, 0x37E5, 0x8F69, 0x8F69, 0x27C2, - 0x8F6A, 0x8F6D, 0x37E7, 0x8F6E, 0x8F6E, 0x22AD, 0x8F6F, 0x8F78, 0x37EC, - 0x8F79, 0x8F79, 0x46A6, 0x8F7A, 0x8F7E, 0x37F7, 0x8FA1, 0x8FAF, 0x37FC, - 0x8FB0, 0x8FB0, 0x46A7, 0x8FB1, 0x8FC4, 0x380C, 0x8FC5, 0x8FC5, 0x46A8, - 0x8FC6, 0x8FC6, 0x3820, 0x8FC7, 0x8FC7, 0x46A9, 0x8FC8, 0x8FC9, 0x3821, - 0x8FCA, 0x8FCA, 0x46AA, 0x8FCB, 0x8FCB, 0x134C, 0x8FCC, 0x8FCC, 0x3FF9, - 0x8FCD, 0x8FD9, 0x3826, 0x8FDA, 0x8FDA, 0x46AB, 0x8FDB, 0x8FE2, 0x3833, - 0x8FE3, 0x8FE3, 0x46AC, 0x8FE4, 0x8FFB, 0x383C, 0x8FFC, 0x8FFC, 0x46AD, - 0x8FFD, 0x8FFD, 0x3854, 0x8FFE, 0x8FFE, 0x09CE, 0x9040, 0x9054, 0x3856, - 0x9055, 0x9055, 0x46AE, 0x9056, 0x905B, 0x386C, 0x905C, 0x905E, 0x46AF, - 0x905F, 0x906C, 0x3873, 0x906D, 0x906D, 0x0BC7, 0x906E, 0x906E, 0x3882, - 0x906F, 0x906F, 0x46B2, 0x9070, 0x9079, 0x3883, 0x907A, 0x907A, 0x36E9, - 0x907B, 0x907E, 0x388D, 0x90A1, 0x90A5, 0x3891, 0x90A6, 0x90A6, 0x46B3, - 0x90A7, 0x90B7, 0x3896, 0x90B8, 0x90B8, 0x46B4, 0x90B9, 0x90DB, 0x38A7, - 0x90DC, 0x90DC, 0x1391, 0x90DD, 0x90F0, 0x38CB, 0x90F1, 0x90F1, 0x16A4, - 0x90F2, 0x90FE, 0x38E0, 0x9140, 0x9164, 0x38ED, 0x9165, 0x9165, 0x46B5, - 0x9166, 0x916D, 0x3912, 0x916E, 0x916E, 0x46B6, 0x916F, 0x917D, 0x391A, - 0x917E, 0x917E, 0x46B7, 0x91A1, 0x91A1, 0x3929, 0x91A2, 0x91A2, 0x46B8, - 0x91A3, 0x91BE, 0x392A, 0x91BF, 0x91BF, 0x3072, 0x91C0, 0x91C7, 0x3947, - 0x91C8, 0x91C8, 0x46B9, 0x91C9, 0x91FE, 0x3950, 0x9240, 0x9243, 0x3986, - 0x9244, 0x9244, 0x3988, 0x9245, 0x9263, 0x398B, 0x9264, 0x9264, 0x46BA, - 0x9265, 0x926C, 0x39AB, 0x926D, 0x926D, 0x46BB, 0x926E, 0x927E, 0x39B4, - 0x92A1, 0x92AE, 0x39C5, 0x92AF, 0x92B0, 0x0119, 0x92B1, 0x92B1, 0x011C, - 0x92B2, 0x92B2, 0x011B, 0x92B3, 0x92C7, 0x39D3, 0x92C8, 0x92C8, 0x3FAC, - 0x92C9, 0x92D0, 0x39E9, 0x92D1, 0x92D1, 0x297C, 0x92D2, 0x92E4, 0x39F2, - 0x92E5, 0x92E5, 0x46BC, 0x92E6, 0x92F1, 0x3A05, 0x92F2, 0x92F2, 0x46BD, - 0x92F3, 0x92FE, 0x3A11, 0x9340, 0x9367, 0x3A1D, 0x9368, 0x9368, 0x46BE, - 0x9369, 0x937E, 0x3A45, 0x93A1, 0x93A9, 0x3A5B, 0x93AA, 0x93AA, 0x46BF, - 0x93AB, 0x93C1, 0x3A64, 0x93C2, 0x93C2, 0x46C0, 0x93C3, 0x93E4, 0x3A7B, - 0x93E5, 0x93E5, 0x46C1, 0x93E6, 0x93E7, 0x3A9D, 0x93E8, 0x93E8, 0x46C2, - 0x93E9, 0x93EA, 0x3AA0, 0x93EB, 0x93EB, 0x46C3, 0x93EC, 0x93FE, 0x3AA2, - 0x9440, 0x9445, 0x3AB5, 0x9446, 0x9446, 0x46C4, 0x9447, 0x9447, 0x1D06, - 0x9448, 0x9478, 0x3ABC, 0x9479, 0x9479, 0x46C5, 0x947A, 0x947E, 0x3AEE, - 0x94A1, 0x94C9, 0x3AF3, 0x94CA, 0x94CA, 0x29A1, 0x94CB, 0x94CB, 0x46C6, - 0x94CC, 0x94FE, 0x3B1E, 0x9540, 0x954C, 0x3B51, 0x954D, 0x954D, 0x46C7, - 0x954E, 0x9559, 0x3B5E, 0x955A, 0x955A, 0x46C8, 0x955B, 0x955E, 0x3B6A, - 0x955F, 0x955F, 0x46C9, 0x9560, 0x957E, 0x3B6F, 0x95A1, 0x95C5, 0x3B8E, - 0x95C6, 0x95C6, 0x46CA, 0x95C7, 0x95D8, 0x3BB3, 0x95D9, 0x95D9, 0x181B, - 0x95DA, 0x95FE, 0x3BC6, 0x9640, 0x9643, 0x3BEB, 0x9644, 0x9644, 0x3E2F, - 0x9645, 0x9650, 0x3BF0, 0x9651, 0x9651, 0x46CB, 0x9652, 0x9669, 0x3BFD, - 0x966A, 0x966A, 0x46CC, 0x966B, 0x967E, 0x3C16, 0x96A1, 0x96D3, 0x3C2A, - 0x96D4, 0x96D4, 0x46CD, 0x96D5, 0x96EC, 0x3C5D, 0x96ED, 0x96ED, 0x3C76, - 0x96EE, 0x96FB, 0x3C76, 0x96FC, 0x96FC, 0x2B24, 0x96FD, 0x96FE, 0x3C85, - 0x9740, 0x977E, 0x3C87, 0x97A1, 0x97FE, 0x3CC6, 0x9840, 0x9843, 0x3D24, - 0x9844, 0x9845, 0x46CE, 0x9846, 0x986E, 0x3D2A, 0x986F, 0x986F, 0x46D0, - 0x9870, 0x9874, 0x3D54, 0x9875, 0x9876, 0x46D1, 0x9877, 0x9877, 0x3D59, - 0x9878, 0x9879, 0x46D3, 0x987A, 0x987A, 0x3D5A, 0x987B, 0x987E, 0x46D5, - 0x98A1, 0x98A2, 0x46D9, 0x98A3, 0x98A3, 0x3D5B, 0x98A4, 0x98AE, 0x46DB, - 0x98AF, 0x98AF, 0x3D5C, 0x98B0, 0x98B3, 0x46E6, 0x98B4, 0x98B4, 0x43CA, - 0x98B5, 0x98B5, 0x46EA, 0x98B6, 0x98B6, 0x3D5D, 0x98B7, 0x98B7, 0x46EB, - 0x98B8, 0x98B8, 0x43CC, 0x98B9, 0x98B9, 0x3D5E, 0x98BA, 0x98BA, 0x46EC, - 0x98BB, 0x98BB, 0x43FA, 0x98BC, 0x98BC, 0x46ED, 0x98BD, 0x98BE, 0x3D5F, - 0x98BF, 0x98C1, 0x46EE, 0x98C2, 0x98C2, 0x3D61, 0x98C3, 0x98C3, 0x46F1, - 0x98C4, 0x98C4, 0x3D62, 0x98C5, 0x98C5, 0x46F2, 0x98C6, 0x98C7, 0x3D63, - 0x98C8, 0x98D1, 0x46F3, 0x98D2, 0x98D2, 0x43CD, 0x98D3, 0x98D7, 0x46FD, - 0x98D8, 0x98D9, 0x43CE, 0x98DA, 0x98DA, 0x4702, 0x98DB, 0x98DB, 0x43D1, - 0x98DC, 0x98DE, 0x4703, 0x98DF, 0x98DF, 0x43D4, 0x98E0, 0x98E2, 0x4706, - 0x98E3, 0x98E3, 0x3D65, 0x98E4, 0x98E6, 0x4709, 0x98E7, 0x98E7, 0x3D66, - 0x98E8, 0x98EC, 0x470C, 0x98ED, 0x98ED, 0x3D67, 0x98EE, 0x98EF, 0x4711, - 0x98F0, 0x98F0, 0x3D68, 0x98F1, 0x98F1, 0x4713, 0x98F2, 0x98F2, 0x3D69, - 0x98F3, 0x98F3, 0x4714, 0x98F4, 0x98F5, 0x43D5, 0x98F6, 0x98FB, 0x4715, - 0x98FC, 0x98FC, 0x3D6A, 0x98FD, 0x98FD, 0x471B, 0x98FE, 0x98FE, 0x43D7, - 0x9940, 0x9941, 0x471C, 0x9942, 0x9942, 0x43FC, 0x9943, 0x9943, 0x3D6B, - 0x9944, 0x9944, 0x471E, 0x9945, 0x9945, 0x3D6C, 0x9946, 0x9946, 0x471F, - 0x9947, 0x9947, 0x43D8, 0x9948, 0x994E, 0x4720, 0x994F, 0x994F, 0x3D6D, - 0x9950, 0x9953, 0x4727, 0x9954, 0x9954, 0x43D9, 0x9955, 0x995B, 0x472B, - 0x995C, 0x995C, 0x43DA, 0x995D, 0x9963, 0x4732, 0x9964, 0x9964, 0x43DC, - 0x9965, 0x9969, 0x4739, 0x996A, 0x996A, 0x3D6E, 0x996B, 0x996D, 0x473E, - 0x996E, 0x996E, 0x3D6F, 0x996F, 0x9974, 0x4741, 0x9975, 0x9975, 0x3D70, - 0x9976, 0x9977, 0x4747, 0x9978, 0x9978, 0x3D71, 0x9979, 0x997E, 0x4749, - 0x99A1, 0x99A1, 0x474F, 0x99A2, 0x99A2, 0x3D72, 0x99A3, 0x99A3, 0x4750, - 0x99A4, 0x99A4, 0x43C5, 0x99A5, 0x99A5, 0x4751, 0x99A6, 0x99A6, 0x43C6, - 0x99A7, 0x99AD, 0x4752, 0x99AE, 0x99AE, 0x3D73, 0x99AF, 0x99B1, 0x4759, - 0x99B2, 0x99B2, 0x43DE, 0x99B3, 0x99B5, 0x475C, 0x99B6, 0x99B6, 0x3D74, - 0x99B7, 0x99B9, 0x475F, 0x99BA, 0x99BA, 0x3D75, 0x99BB, 0x99C9, 0x4762, - 0x99CA, 0x99CA, 0x43E0, 0x99CB, 0x99CC, 0x4771, 0x99CD, 0x99CD, 0x43E2, - 0x99CE, 0x99D2, 0x4773, 0x99D3, 0x99D3, 0x43E3, 0x99D4, 0x99D5, 0x4778, - 0x99D6, 0x99D6, 0x43E5, 0x99D7, 0x99DE, 0x477A, 0x99DF, 0x99DF, 0x43DF, - 0x99E0, 0x99E1, 0x4782, 0x99E2, 0x99E2, 0x3D76, 0x99E3, 0x99E3, 0x4784, - 0x99E4, 0x99E4, 0x43AB, 0x99E5, 0x99E5, 0x4785, 0x99E6, 0x99E6, 0x43E7, - 0x99E7, 0x99E7, 0x4786, 0x99E8, 0x99E8, 0x43E9, 0x99E9, 0x99EE, 0x4787, - 0x99EF, 0x99EF, 0x43FD, 0x99F0, 0x99F3, 0x478D, 0x99F4, 0x99F4, 0x3D77, - 0x99F5, 0x99FE, 0x4791, 0x9A40, 0x9A49, 0x479B, 0x9A4A, 0x9A4A, 0x3D78, - 0x9A4B, 0x9A4B, 0x47A5, 0x9A4C, 0x9A4C, 0x3D79, 0x9A4D, 0x9A58, 0x47A6, - 0x9A59, 0x9A59, 0x3D7A, 0x9A5A, 0x9A5E, 0x47B2, 0x9A5F, 0x9A5F, 0x43AF, - 0x9A60, 0x9A60, 0x47B7, 0x9A61, 0x9A61, 0x3D7B, 0x9A62, 0x9A65, 0x47B8, - 0x9A66, 0x9A66, 0x43ED, 0x9A67, 0x9A67, 0x47BC, 0x9A68, 0x9A68, 0x3D7C, - 0x9A69, 0x9A69, 0x43EE, 0x9A6A, 0x9A6A, 0x47BD, 0x9A6B, 0x9A6B, 0x43FF, - 0x9A6C, 0x9A72, 0x47BE, 0x9A73, 0x9A73, 0x3D7D, 0x9A74, 0x9A74, 0x47C5, - 0x9A75, 0x9A75, 0x43F1, 0x9A76, 0x9A7D, 0x47C6, 0x9A7E, 0x9A7E, 0x3D7E, - 0x9AA1, 0x9AA2, 0x47CE, 0x9AA3, 0x9AA3, 0x43F3, 0x9AA4, 0x9AA4, 0x47D0, - 0x9AA5, 0x9AA5, 0x43F2, 0x9AA6, 0x9AA8, 0x47D1, 0x9AA9, 0x9AA9, 0x43F8, - 0x9AAA, 0x9AAA, 0x43F4, 0x9AAB, 0x9AB1, 0x47D4, 0x9AB2, 0x9AB2, 0x3D7F, - 0x9AB3, 0x9AB6, 0x47DB, 0x9AB7, 0x9AB7, 0x3D80, 0x9AB8, 0x9AB8, 0x47DF, - 0x9AB9, 0x9AB9, 0x3D81, 0x9ABA, 0x9ABA, 0x47E0, 0x9ABB, 0x9ABB, 0x3D82, - 0x9ABC, 0x9ABC, 0x47E1, 0x9ABD, 0x9ABD, 0x43B7, 0x9ABE, 0x9AC6, 0x47E2, - 0x9AC7, 0x9AC7, 0x3D83, 0x9AC8, 0x9ACF, 0x47EB, 0x9AD0, 0x9AD0, 0x3D84, - 0x9AD1, 0x9AD1, 0x47F3, 0x9AD2, 0x9AD2, 0x3D85, 0x9AD3, 0x9AD8, 0x47F4, - 0x9AD9, 0x9ADB, 0x3D86, 0x9ADC, 0x9AE1, 0x47FA, 0x9AE2, 0x9AE2, 0x3D89, - 0x9AE3, 0x9AE3, 0x4800, 0x9AE4, 0x9AE4, 0x3D8A, 0x9AE5, 0x9AE7, 0x4801, - 0x9AE8, 0x9AE8, 0x3D8B, 0x9AE9, 0x9AE9, 0x43B0, 0x9AEA, 0x9AED, 0x4804, - 0x9AEE, 0x9AEE, 0x43B2, 0x9AEF, 0x9AF1, 0x4808, 0x9AF2, 0x9AF2, 0x3D8C, - 0x9AF3, 0x9AF5, 0x480B, 0x9AF6, 0x9AF6, 0x3D8D, 0x9AF7, 0x9AFA, 0x480E, - 0x9AFB, 0x9AFB, 0x3D8E, 0x9AFC, 0x9AFE, 0x4812, 0x9B40, 0x9B45, 0x4815, - 0x9B46, 0x9B46, 0x3D8F, 0x9B47, 0x9B49, 0x481B, 0x9B4A, 0x9B4A, 0x3D90, - 0x9B4B, 0x9B53, 0x481E, 0x9B54, 0x9B54, 0x3D92, 0x9B55, 0x9B57, 0x4827, - 0x9B58, 0x9B58, 0x3D93, 0x9B59, 0x9B59, 0x482A, 0x9B5A, 0x9B5A, 0x3D94, - 0x9B5B, 0x9B5B, 0x482B, 0x9B5C, 0x9B5C, 0x3D95, 0x9B5D, 0x9B5D, 0x482C, - 0x9B5E, 0x9B5F, 0x3D96, 0x9B60, 0x9B60, 0x482D, 0x9B62, 0x9B6F, 0x482E, - 0x9B70, 0x9B73, 0x3D98, 0x9B74, 0x9B75, 0x483C, 0x9B76, 0x9B76, 0x2F50, - 0x9B77, 0x9B77, 0x3D9D, 0x9B78, 0x9B78, 0x1725, 0x9B79, 0x9B7A, 0x483E, - 0x9B7B, 0x9B7B, 0x32ED, 0x9B7C, 0x9B7C, 0x3DA0, 0x9B7D, 0x9B7D, 0x4840, - 0x9B7E, 0x9B7E, 0x3DA1, 0x9BA1, 0x9BA1, 0x3DA2, 0x9BA2, 0x9BA2, 0x4841, - 0x9BA3, 0x9BA4, 0x3DA3, 0x9BA5, 0x9BA6, 0x4842, 0x9BA7, 0x9BAA, 0x3DA5, - 0x9BAB, 0x9BAB, 0x4844, 0x9BAC, 0x9BAC, 0x3DA9, 0x9BAD, 0x9BAE, 0x4845, - 0x9BAF, 0x9BAF, 0x3DAA, 0x9BB0, 0x9BB1, 0x4847, 0x9BB2, 0x9BB9, 0x3DAB, - 0x9BBA, 0x9BBD, 0x4849, 0x9BBE, 0x9BBE, 0x3DB3, 0x9BBF, 0x9BBF, 0x484D, - 0x9BC0, 0x9BC5, 0x3DB4, 0x9BC6, 0x9BC6, 0x2AD9, 0x9BC7, 0x9BC9, 0x484E, - 0x9BCA, 0x9BCA, 0x3DBB, 0x9BCB, 0x9BCB, 0x4851, 0x9BCC, 0x9BCC, 0x3DBC, - 0x9BCD, 0x9BCD, 0x4852, 0x9BCE, 0x9BCE, 0x43D0, 0x9BCF, 0x9BCF, 0x4853, - 0x9BD0, 0x9BD1, 0x3DBD, 0x9BD2, 0x9BD2, 0x4854, 0x9BD3, 0x9BD3, 0x3DBF, - 0x9BD4, 0x9BD4, 0x4855, 0x9BD5, 0x9BD5, 0x3DC0, 0x9BD6, 0x9BD7, 0x4856, - 0x9BD8, 0x9BDA, 0x3DC1, 0x9BDB, 0x9BDC, 0x4858, 0x9BDD, 0x9BDD, 0x3DC4, - 0x9BDE, 0x9BDE, 0x1C14, 0x9BDF, 0x9BDF, 0x3DC5, 0x9BE0, 0x9BE0, 0x485A, - 0x9BE1, 0x9BE1, 0x3DC6, 0x9BE2, 0x9BE2, 0x485B, 0x9BE3, 0x9BE3, 0x3DC7, - 0x9BE4, 0x9BE6, 0x485C, 0x9BE7, 0x9BE7, 0x3DC8, 0x9BE8, 0x9BE8, 0x485F, - 0x9BE9, 0x9BEB, 0x3DC9, 0x9BEC, 0x9BEC, 0x41FA, 0x9BED, 0x9BED, 0x4860, - 0x9BEE, 0x9BEF, 0x3DCD, 0x9BF0, 0x9BF2, 0x4861, 0x9BF3, 0x9BF3, 0x3DCF, - 0x9BF4, 0x9BF5, 0x4864, 0x9BF6, 0x9BF6, 0x12E9, 0x9BF7, 0x9BF7, 0x4866, - 0x9BF8, 0x9BF9, 0x3DD1, 0x9BFA, 0x9BFA, 0x4867, 0x9BFB, 0x9BFC, 0x3DD3, - 0x9BFD, 0x9BFE, 0x4868, 0x9C40, 0x9C41, 0x3DD5, 0x9C42, 0x9C42, 0x2CAE, - 0x9C43, 0x9C43, 0x486A, 0x9C44, 0x9C46, 0x3DD8, 0x9C47, 0x9C47, 0x486B, - 0x9C48, 0x9C48, 0x3DDB, 0x9C49, 0x9C49, 0x486C, 0x9C4A, 0x9C4A, 0x3DDC, - 0x9C4B, 0x9C4C, 0x486D, 0x9C4D, 0x9C52, 0x3DDD, 0x9C53, 0x9C53, 0x1A64, - 0x9C54, 0x9C54, 0x486F, 0x9C55, 0x9C55, 0x3DE4, 0x9C56, 0x9C56, 0x4870, - 0x9C57, 0x9C5B, 0x3DE5, 0x9C5C, 0x9C5C, 0x4871, 0x9C5D, 0x9C5D, 0x3DEA, - 0x9C5E, 0x9C5F, 0x4872, 0x9C60, 0x9C60, 0x3DEB, 0x9C61, 0x9C61, 0x4874, - 0x9C62, 0x9C62, 0x1404, 0x9C63, 0x9C63, 0x4875, 0x9C64, 0x9C66, 0x3DED, - 0x9C67, 0x9C67, 0x4876, 0x9C68, 0x9C68, 0x2324, 0x9C69, 0x9C69, 0x4877, - 0x9C6A, 0x9C6A, 0x3DF1, 0x9C6B, 0x9C6B, 0x346A, 0x9C6C, 0x9C6C, 0x4878, - 0x9C6D, 0x9C6D, 0x3DF2, 0x9C6E, 0x9C6E, 0x4879, 0x9C6F, 0x9C72, 0x3DF3, - 0x9C73, 0x9C74, 0x487A, 0x9C75, 0x9C76, 0x3DF7, 0x9C77, 0x9C77, 0x2291, - 0x9C78, 0x9C78, 0x487C, 0x9C79, 0x9C79, 0x3DFA, 0x9C7A, 0x9C7A, 0x487D, - 0x9C7B, 0x9C7C, 0x3DFB, 0x9C7D, 0x9C7D, 0x487E, 0x9C7E, 0x9C7E, 0x3DFD, - 0x9CA1, 0x9CA2, 0x3DFE, 0x9CA3, 0x9CA4, 0x487F, 0x9CA5, 0x9CA5, 0x3E00, - 0x9CA6, 0x9CA7, 0x4881, 0x9CA8, 0x9CA9, 0x3E01, 0x9CAA, 0x9CAA, 0x4883, - 0x9CAB, 0x9CAB, 0x3E03, 0x9CAC, 0x9CAC, 0x4884, 0x9CAD, 0x9CAE, 0x3E04, - 0x9CAF, 0x9CB0, 0x4885, 0x9CB1, 0x9CBA, 0x3E06, 0x9CBB, 0x9CBB, 0x4887, - 0x9CBC, 0x9CBC, 0x1787, 0x9CBD, 0x9CBD, 0x095F, 0x9CBE, 0x9CC2, 0x3E12, - 0x9CC3, 0x9CC5, 0x4888, 0x9CC6, 0x9CCD, 0x3E17, 0x9CCE, 0x9CCE, 0x488B, - 0x9CCF, 0x9CCF, 0x3E1F, 0x9CD0, 0x9CD0, 0x1E99, 0x9CD1, 0x9CD3, 0x3E21, - 0x9CD4, 0x9CD7, 0x488C, 0x9CD8, 0x9CDA, 0x3E24, 0x9CDB, 0x9CDB, 0x4890, - 0x9CDC, 0x9CE5, 0x3E27, 0x9CE6, 0x9CE6, 0x4891, 0x9CE7, 0x9CE9, 0x3E31, - 0x9CEA, 0x9CEA, 0x4892, 0x9CEB, 0x9CEC, 0x3E34, 0x9CED, 0x9CED, 0x4893, - 0x9CEE, 0x9CF9, 0x3E36, 0x9CFA, 0x9CFC, 0x4894, 0x9CFD, 0x9CFD, 0x3E42, - 0x9CFE, 0x9CFE, 0x4897, 0x9D40, 0x9D40, 0x43E8, 0x9D41, 0x9D45, 0x4898, - 0x9D46, 0x9D46, 0x3E43, 0x9D47, 0x9D48, 0x489D, 0x9D49, 0x9D49, 0x3E44, - 0x9D4A, 0x9D4B, 0x489F, 0x9D4C, 0x9D4D, 0x3E46, 0x9D4E, 0x9D4E, 0x48A1, - 0x9D4F, 0x9D4F, 0x3E48, 0x9D50, 0x9D50, 0x48A2, 0x9D51, 0x9D51, 0x3E49, - 0x9D52, 0x9D54, 0x48A3, 0x9D55, 0x9D55, 0x3E4A, 0x9D56, 0x9D56, 0x48A6, - 0x9D57, 0x9D57, 0x25C1, 0x9D58, 0x9D59, 0x48A7, 0x9D5A, 0x9D5A, 0x0D0C, - 0x9D5B, 0x9D60, 0x48A9, 0x9D61, 0x9D61, 0x43C9, 0x9D62, 0x9D62, 0x3E4C, - 0x9D63, 0x9D63, 0x48AF, 0x9D64, 0x9D64, 0x3E4D, 0x9D65, 0x9D77, 0x48B0, - 0x9D78, 0x9D78, 0x43F5, 0x9D79, 0x9D79, 0x3E4E, 0x9D7A, 0x9D7D, 0x48C3, - 0x9D7E, 0x9D7E, 0x3E4F, 0x9DA1, 0x9DA4, 0x48C7, 0x9DA5, 0x9DA8, 0x3E50, - 0x9DA9, 0x9DA9, 0x48CB, 0x9DAA, 0x9DAA, 0x3E54, 0x9DAB, 0x9DAB, 0x48CC, - 0x9DAC, 0x9DAD, 0x3E55, 0x9DAE, 0x9DAF, 0x48CD, 0x9DB0, 0x9DB0, 0x3E58, - 0x9DB1, 0x9DB2, 0x48CF, 0x9DB3, 0x9DB3, 0x3E59, 0x9DB4, 0x9DB4, 0x48D1, - 0x9DB5, 0x9DB5, 0x3E5A, 0x9DB6, 0x9DB6, 0x48D2, 0x9DB7, 0x9DB7, 0x3E5B, - 0x9DB8, 0x9DBB, 0x48D3, 0x9DBC, 0x9DBD, 0x3E5C, 0x9DBE, 0x9DBE, 0x48D7, - 0x9DBF, 0x9DC0, 0x3E5E, 0x9DC1, 0x9DC2, 0x48D8, 0x9DC3, 0x9DC3, 0x3E60, - 0x9DC4, 0x9DC4, 0x05E6, 0x9DC5, 0x9DC6, 0x48DA, 0x9DC7, 0x9DC8, 0x3E62, - 0x9DC9, 0x9DC9, 0x48DC, 0x9DCA, 0x9DCA, 0x3E64, 0x9DCB, 0x9DCC, 0x48DD, - 0x9DCD, 0x9DD1, 0x3E65, 0x9DD2, 0x9DD2, 0x48DF, 0x9DD3, 0x9DD5, 0x3E6A, - 0x9DD6, 0x9DD9, 0x48E0, 0x9DDA, 0x9DFB, 0x3E6D, 0x9DFC, 0x9DFC, 0x48E4, - 0x9DFD, 0x9DFE, 0x3E8F, 0x9E40, 0x9E42, 0x3E91, 0x9E43, 0x9E43, 0x48E5, - 0x9E44, 0x9E5E, 0x3E95, 0x9E5F, 0x9E5F, 0x48E6, 0x9E60, 0x9E62, 0x3EB1, - 0x9E63, 0x9E63, 0x48E7, 0x9E64, 0x9E65, 0x3EB4, 0x9E66, 0x9E67, 0x48E8, - 0x9E68, 0x9E68, 0x3EB6, 0x9E69, 0x9E69, 0x48EA, 0x9E6A, 0x9E6A, 0x3EB7, - 0x9E6B, 0x9E70, 0x48EB, 0x9E71, 0x9E71, 0x3EB8, 0x9E72, 0x9E72, 0x48F1, - 0x9E73, 0x9E73, 0x3EB9, 0x9E74, 0x9E76, 0x48F2, 0x9E77, 0x9E78, 0x3EBA, - 0x9E79, 0x9E79, 0x48F5, 0x9E7A, 0x9E7A, 0x3EBC, 0x9E7B, 0x9E7B, 0x48F6, - 0x9E7C, 0x9E7C, 0x3EBD, 0x9E7D, 0x9E7D, 0x48F7, 0x9E7E, 0x9E7E, 0x3EBE, - 0x9EA1, 0x9EA2, 0x3EBF, 0x9EA3, 0x9EA3, 0x48F8, 0x9EA4, 0x9EA6, 0x3EC1, - 0x9EA7, 0x9EA8, 0x48F9, 0x9EA9, 0x9EA9, 0x0728, 0x9EAA, 0x9EAA, 0x3EC5, - 0x9EAB, 0x9EAB, 0x48FB, 0x9EAC, 0x9EAD, 0x3EC6, 0x9EAE, 0x9EAE, 0x48FC, - 0x9EAF, 0x9EB1, 0x3EC8, 0x9EB2, 0x9EB3, 0x48FD, 0x9EB4, 0x9EB4, 0x3ECB, - 0x9EB5, 0x9EB5, 0x48FF, 0x9EB6, 0x9EB7, 0x3ECC, 0x9EB8, 0x9EB8, 0x4900, - 0x9EB9, 0x9EB9, 0x3ECE, 0x9EBA, 0x9EBB, 0x4901, 0x9EBC, 0x9EBC, 0x3ECF, - 0x9EBD, 0x9EBE, 0x4903, 0x9EBF, 0x9EC0, 0x3ED0, 0x9EC1, 0x9EC3, 0x4905, - 0x9EC4, 0x9EC5, 0x3ED2, 0x9EC6, 0x9EC6, 0x4908, 0x9EC7, 0x9ECA, 0x3ED4, - 0x9ECB, 0x9ECC, 0x4909, 0x9ECD, 0x9ECD, 0x3ED9, 0x9ECE, 0x9ECF, 0x490B, - 0x9ED0, 0x9ED1, 0x3EDA, 0x9ED2, 0x9ED2, 0x490D, 0x9ED3, 0x9ED3, 0x3EDC, - 0x9ED4, 0x9ED5, 0x490E, 0x9ED6, 0x9ED7, 0x3EDD, 0x9ED8, 0x9ED9, 0x4910, - 0x9EDA, 0x9EEE, 0x3EDF, 0x9EEF, 0x9EEF, 0x24B6, 0x9EF0, 0x9EF1, 0x3EF5, - 0x9EF2, 0x9EF2, 0x4912, 0x9EF3, 0x9EF5, 0x3EF7, 0x9EF6, 0x9EF8, 0x4913, - 0x9EF9, 0x9EFA, 0x3EFA, 0x9EFB, 0x9EFB, 0x4916, 0x9EFC, 0x9EFC, 0x3EFC, - 0x9EFD, 0x9EFD, 0x1806, 0x9EFE, 0x9EFE, 0x3EFE, 0x9F40, 0x9F42, 0x3EFF, - 0x9F43, 0x9F43, 0x4917, 0x9F44, 0x9F47, 0x3F02, 0x9F48, 0x9F48, 0x4918, - 0x9F49, 0x9F4A, 0x3F06, 0x9F4B, 0x9F4C, 0x4919, 0x9F4D, 0x9F5F, 0x3F08, - 0x9F60, 0x9F60, 0x3511, 0x9F61, 0x9F65, 0x3F1C, 0x9F66, 0x9F66, 0x3945, - 0x9F67, 0x9F68, 0x491B, 0x9F69, 0x9F6F, 0x3F23, 0x9F70, 0x9F70, 0x491D, - 0x9F71, 0x9F7E, 0x3F2A, 0x9FA1, 0x9FB4, 0x3F38, 0x9FB5, 0x9FB5, 0x491E, - 0x9FB6, 0x9FBA, 0x3F4C, 0x9FBB, 0x9FBB, 0x491F, 0x9FBC, 0x9FBE, 0x3F51, - 0x9FBF, 0x9FBF, 0x4920, 0x9FC0, 0x9FC0, 0x3F54, 0x9FC1, 0x9FC1, 0x4921, - 0x9FC2, 0x9FCA, 0x3F55, 0x9FCB, 0x9FCB, 0x0F82, 0x9FCC, 0x9FCC, 0x4922, - 0x9FCD, 0x9FD3, 0x3F60, 0x9FD4, 0x9FD4, 0x4923, 0x9FD5, 0x9FD7, 0x3F68, - 0x9FD8, 0x9FD8, 0x3A3E, 0x9FD9, 0x9FE3, 0x3F6C, 0x9FE4, 0x9FE4, 0x4924, - 0x9FE5, 0x9FF8, 0x3F77, 0x9FF9, 0x9FF9, 0x4925, 0x9FFA, 0x9FFE, 0x3F8B, - 0xA040, 0xA040, 0x4926, 0xA041, 0xA046, 0x3F90, 0xA047, 0xA047, 0x4927, - 0xA048, 0xA054, 0x3F96, 0xA055, 0xA055, 0x4928, 0xA056, 0xA062, 0x3FA3, - 0xA063, 0xA063, 0x3811, 0xA064, 0xA06C, 0x3FB1, 0xA06D, 0xA06D, 0x4929, - 0xA06E, 0xA076, 0x3FBA, 0xA077, 0xA077, 0x05F2, 0xA078, 0xA07A, 0x3FC4, - 0xA07B, 0xA07B, 0x492A, 0xA07C, 0xA07E, 0x3FC7, 0xA0A1, 0xA0A1, 0x3FCA, - 0xA0A2, 0xA0A2, 0x492B, 0xA0A3, 0xA0A6, 0x3FCB, 0xA0A7, 0xA0A7, 0x492C, - 0xA0A8, 0xA0C4, 0x3FCF, 0xA0C5, 0xA0C5, 0x492D, 0xA0C6, 0xA0CF, 0x3FEC, - 0xA0D0, 0xA0D0, 0x492E, 0xA0D1, 0xA0D4, 0x3FF6, 0xA0D5, 0xA0D5, 0x3AEE, - 0xA0D6, 0xA0DE, 0x3FFB, 0xA0DF, 0xA0DF, 0x247D, 0xA0E0, 0xA0E2, 0x4005, - 0xA0E3, 0xA0E3, 0x492F, 0xA0E4, 0xA0E4, 0x3AC9, 0xA0E5, 0xA0E6, 0x4009, - 0xA0E7, 0xA0ED, 0x4930, 0xA0EE, 0xA0EE, 0x43B4, 0xA0EF, 0xA0F1, 0x4937, - 0xA0F2, 0xA0F2, 0x43B8, 0xA0F3, 0xA0FE, 0x493A, 0xA140, 0xA158, 0x0063, - 0xA159, 0xA15C, 0x35AF, 0xA15D, 0xA17E, 0x0080, 0xA1A1, 0xA1F5, 0x00A2, - 0xA1F6, 0xA1F6, 0x00F8, 0xA1F7, 0xA1F7, 0x00F7, 0xA1F8, 0xA1FE, 0x00F9, - 0xA240, 0xA27E, 0x0100, 0xA2A1, 0xA2FE, 0x013F, 0xA340, 0xA37E, 0x019D, - 0xA3A1, 0xA3BB, 0x01DC, 0xA3BD, 0xA3BF, 0x01F7, 0xA440, 0xA47E, 0x0253, - 0xA4A1, 0xA4FE, 0x0292, 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, - 0xA640, 0xA67E, 0x038D, 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, - 0xA7A1, 0xA7FE, 0x0469, 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, - 0xA940, 0xA97E, 0x0564, 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, - 0xAAA1, 0xAAFE, 0x0640, 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, - 0xAC40, 0xAC7E, 0x073B, 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, - 0xAD40, 0xAD7E, 0x07D7, 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, - 0xAEA1, 0xAEFE, 0x08B3, 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, - 0xAFD0, 0xAFFE, 0x0980, 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, - 0xB140, 0xB17E, 0x0A4C, 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, - 0xB2A1, 0xB2FE, 0x0B28, 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, - 0xB440, 0xB47E, 0x0C23, 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, - 0xB5A1, 0xB5FE, 0x0CFF, 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, - 0xB740, 0xB77E, 0x0DFA, 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, - 0xB8A1, 0xB8FE, 0x0ED6, 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, - 0xBA40, 0xBA7E, 0x0FD1, 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, - 0xBBA1, 0xBBC7, 0x10AD, 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, - 0xBCA1, 0xBCFE, 0x114B, 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, - 0xBE40, 0xBE51, 0x1246, 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, - 0xBEA1, 0xBEFE, 0x1284, 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, - 0xC040, 0xC07E, 0x137F, 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, - 0xC1A1, 0xC1AA, 0x145B, 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, - 0xC2A1, 0xC2CA, 0x14F9, 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, - 0xC340, 0xC360, 0x1556, 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, - 0xC3B9, 0xC3B9, 0x15AF, 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, - 0xC440, 0xC455, 0x15F4, 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, - 0xC4A1, 0xC4FE, 0x1632, 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, - 0xC640, 0xC67E, 0x172D, 0xC6A1, 0xC6BE, 0x01FA, 0xC6BF, 0xC6CE, 0x0219, - 0xC6D0, 0xC6D2, 0x022A, 0xC6D4, 0xC6D4, 0x022E, 0xC6D6, 0xC6D6, 0x0230, - 0xC6D8, 0xC6DD, 0x35B3, 0xC6E0, 0xC6FE, 0x35BA, 0xC740, 0xC77E, 0x35D9, - 0xC7A1, 0xC7FE, 0x3618, 0xC840, 0xC87E, 0x3676, 0xC8A1, 0xC8A4, 0x36B5, - 0xC8CD, 0xC8D3, 0x36E1, 0xC8D4, 0xC8D6, 0x44C6, 0xC8D7, 0xC8DF, 0x451C, - 0xC8E0, 0xC8E0, 0x499E, 0xC8E1, 0xC8E8, 0x4525, 0xC8E9, 0xC8E9, 0x499F, - 0xC8EA, 0xC8F0, 0x452D, 0xC8F1, 0xC8F1, 0x49A0, 0xC8F5, 0xC8FE, 0x4992, - 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776, - 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797, - 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809, - 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E, - 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942, - 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E, - 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19, - 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5, - 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0, - 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC, - 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7, - 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3, - 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001, - 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F, - 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A, - 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216, - 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274, - 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312, - 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE, - 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B, - 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527, - 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622, - 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE, - 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9, - 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5, - 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0, - 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC, - 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42, - 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8, - 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86, - 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3, - 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F, - 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8, - 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014, - 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8, - 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C, - 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE, - 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160, - 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E, - 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC, - 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161, - 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0, - 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D, - 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6, - 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327, - 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF, - 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA, - 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511, - 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E, - 0xF9D2, 0xF9D5, 0x354A, 0xF9D6, 0xF9FE, 0x36E8, 0xFA40, 0xFA5E, 0x400B, - 0xFA5F, 0xFA5F, 0x083A, 0xFA60, 0xFA65, 0x402B, 0xFA66, 0xFA66, 0x09FD, - 0xFA67, 0xFA7E, 0x4032, 0xFAA1, 0xFAA8, 0x404A, 0xFAA9, 0xFAAA, 0x4946, - 0xFAAB, 0xFABC, 0x4054, 0xFABD, 0xFABD, 0x030D, 0xFABE, 0xFAC4, 0x4067, - 0xFAC5, 0xFAC5, 0x016B, 0xFAC6, 0xFAD4, 0x406F, 0xFAD5, 0xFAD5, 0x0860, - 0xFAD6, 0xFAFE, 0x407F, 0xFB40, 0xFB47, 0x40A8, 0xFB48, 0xFB48, 0x3E82, - 0xFB49, 0xFB52, 0x40B1, 0xFB53, 0xFB53, 0x4948, 0xFB54, 0xFB6D, 0x40BC, - 0xFB6E, 0xFB6E, 0x4949, 0xFB6F, 0xFB7E, 0x40D7, 0xFBA1, 0xFBA2, 0x40E7, - 0xFBA3, 0xFBA3, 0x494A, 0xFBA4, 0xFBB7, 0x40EA, 0xFBB8, 0xFBB8, 0x0C23, - 0xFBB9, 0xFBBE, 0x40FF, 0xFBBF, 0xFBBF, 0x494B, 0xFBC0, 0xFBCC, 0x4105, - 0xFBCD, 0xFBCD, 0x494C, 0xFBCE, 0xFBF2, 0x4112, 0xFBF3, 0xFBF3, 0x17E4, - 0xFBF4, 0xFBF8, 0x4138, 0xFBF9, 0xFBF9, 0x3E8E, 0xFBFA, 0xFBFE, 0x413E, - 0xFC40, 0xFC49, 0x4143, 0xFC4A, 0xFC4A, 0x494D, 0xFC4B, 0xFC4E, 0x414D, - 0xFC4F, 0xFC4F, 0x212F, 0xFC50, 0xFC51, 0x4151, 0xFC52, 0xFC52, 0x494E, - 0xFC53, 0xFC62, 0x4153, 0xFC63, 0xFC63, 0x494F, 0xFC64, 0xFC6B, 0x4163, - 0xFC6C, 0xFC6C, 0x4001, 0xFC6D, 0xFC6D, 0x4950, 0xFC6E, 0xFC74, 0x416D, - 0xFC75, 0xFC75, 0x4951, 0xFC76, 0xFC7E, 0x4174, 0xFCA1, 0xFCB8, 0x417D, - 0xFCB9, 0xFCB9, 0x115F, 0xFCBA, 0xFCBB, 0x4195, 0xFCBC, 0xFCBD, 0x4952, - 0xFCBE, 0xFCCB, 0x4198, 0xFCCC, 0xFCCC, 0x4954, 0xFCCD, 0xFCE1, 0x41A7, - 0xFCE2, 0xFCE2, 0x0C79, 0xFCE3, 0xFCE3, 0x4955, 0xFCE4, 0xFCED, 0x41BD, - 0xFCEE, 0xFCEE, 0x4956, 0xFCEF, 0xFCF0, 0x41C7, 0xFCF1, 0xFCF1, 0x04C3, - 0xFCF2, 0xFCFE, 0x41CA, 0xFD40, 0xFD48, 0x41D7, 0xFD49, 0xFD49, 0x4957, - 0xFD4A, 0xFD69, 0x41E0, 0xFD6A, 0xFD6A, 0x4958, 0xFD6B, 0xFD7E, 0x4201, - 0xFDA1, 0xFDB6, 0x4215, 0xFDB7, 0xFDB7, 0x18BD, 0xFDB8, 0xFDB8, 0x0CBD, - 0xFDB9, 0xFDBA, 0x422D, 0xFDBB, 0xFDBB, 0x0CA5, 0xFDBC, 0xFDE2, 0x4230, - 0xFDE3, 0xFDE3, 0x4959, 0xFDE4, 0xFDF0, 0x4258, 0xFDF1, 0xFDF1, 0x0CCE, - 0xFDF2, 0xFDF2, 0x495A, 0xFDF3, 0xFDFE, 0x4266, 0xFE40, 0xFE51, 0x4272, - 0xFE52, 0xFE52, 0x3D70, 0xFE53, 0xFE6C, 0x4285, 0xFE6D, 0xFE6D, 0x495B, - 0xFE6E, 0xFE6E, 0x429F, 0xFE6F, 0xFE6F, 0x0E84, 0xFE70, 0xFE77, 0x42A1, - 0xFE78, 0xFE78, 0x495C, 0xFE79, 0xFE7E, 0x42A9, 0xFEA1, 0xFEA9, 0x42AF, - 0xFEAA, 0xFEAA, 0x0120, 0xFEAB, 0xFEDC, 0x42B8, 0xFEDD, 0xFEDD, 0x1BA8, - 0xFEDE, 0xFEDF, 0x495D, 0xFEE0, 0xFEEC, 0x42EB, 0xFEED, 0xFEEE, 0x495F, - 0xFEEF, 0xFEFE, 0x42F8, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp deleted file mode 100644 index 564c3ad861..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_HKscs_B5_V_5[13 * 3] = { - 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, - 0x35B1, 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, - 0xA166, 0x008A, 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, - 0xA171, 0xA172, 0x0096, 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, - 0x009E, 0xA1E3, 0xA1E3, 0x354F, 0xC6E4, 0xC6E5, 0x3711, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp deleted file mode 100644 index 611739e296..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp +++ /dev/null @@ -1,5483 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_UniCNS_UCS2_H_3[16418 * 3] = { - 0x0020, 0x007E, 0x0001, 0x00A2, 0x00A3, 0x0106, 0x00A5, 0x00A5, 0x0104, - 0x00A7, 0x00A7, 0x00B2, 0x00A8, 0x00A8, 0x35B3, 0x00AC, 0x00AC, 0x36E1, - 0x00B0, 0x00B0, 0x0118, 0x00B1, 0x00B1, 0x00D4, 0x00B7, 0x00B7, 0x0073, - 0x00C0, 0x00C0, 0x4964, 0x00C1, 0x00C1, 0x4962, 0x00C8, 0x00C8, 0x4968, - 0x00C9, 0x00C9, 0x4966, 0x00CA, 0x00CA, 0x4971, 0x00D2, 0x00D2, 0x496C, - 0x00D3, 0x00D3, 0x496A, 0x00D7, 0x00D7, 0x00D2, 0x00E0, 0x00E0, 0x4975, - 0x00E1, 0x00E1, 0x4973, 0x00E8, 0x00E8, 0x497A, 0x00E9, 0x00E9, 0x4978, - 0x00EA, 0x00EA, 0x4990, 0x00EC, 0x00EC, 0x497E, 0x00ED, 0x00ED, 0x497C, - 0x00F2, 0x00F2, 0x4982, 0x00F3, 0x00F3, 0x4980, 0x00F7, 0x00F7, 0x00D3, - 0x00F8, 0x00F8, 0x4998, 0x00F9, 0x00F9, 0x4986, 0x00FA, 0x00FA, 0x4984, - 0x00FC, 0x00FC, 0x498B, 0x0100, 0x0100, 0x4961, 0x0101, 0x0101, 0x4972, - 0x0112, 0x0112, 0x4965, 0x0113, 0x0113, 0x4977, 0x011A, 0x011A, 0x4967, - 0x011B, 0x011B, 0x4979, 0x012B, 0x012B, 0x497B, 0x014B, 0x014B, 0x4999, - 0x014C, 0x014C, 0x4969, 0x014D, 0x014D, 0x497F, 0x0153, 0x0153, 0x4997, - 0x016B, 0x016B, 0x4983, 0x01CD, 0x01CD, 0x4963, 0x01CE, 0x01CE, 0x4974, - 0x01D0, 0x01D0, 0x497D, 0x01D1, 0x01D1, 0x496B, 0x01D2, 0x01D2, 0x4981, - 0x01D4, 0x01D4, 0x4985, 0x01D6, 0x01D6, 0x4987, 0x01D8, 0x01D8, 0x4988, - 0x01DA, 0x01DA, 0x4989, 0x01DC, 0x01DC, 0x498A, 0x0250, 0x0250, 0x4993, - 0x0251, 0x0251, 0x4976, 0x0254, 0x0254, 0x4995, 0x025B, 0x025B, 0x4994, - 0x0261, 0x0261, 0x4991, 0x026A, 0x026A, 0x499B, 0x0275, 0x0275, 0x4996, - 0x0283, 0x0283, 0x4992, 0x028A, 0x028A, 0x499A, 0x02C6, 0x02C6, 0x35B4, - 0x02C7, 0x02C7, 0x01F8, 0x02CA, 0x02CA, 0x01F7, 0x02CB, 0x02CB, 0x01F9, - 0x02D9, 0x02D9, 0x01F6, 0x0308, 0x0308, 0x35B3, 0x0391, 0x03A1, 0x01A1, - 0x03A3, 0x03A9, 0x01B2, 0x03B1, 0x03C1, 0x01B9, 0x03C3, 0x03C9, 0x01CA, - 0x0401, 0x0401, 0x3670, 0x0410, 0x0415, 0x366A, 0x0416, 0x0435, 0x3671, - 0x0436, 0x044F, 0x3692, 0x0451, 0x0451, 0x3691, 0x1EBE, 0x1EBE, 0x496E, - 0x1EBF, 0x1EBF, 0x498D, 0x1EC0, 0x1EC0, 0x4970, 0x1EC1, 0x1EC1, 0x498F, - 0x2013, 0x2013, 0x0079, 0x2014, 0x2014, 0x007B, 0x2018, 0x2019, 0x00A6, - 0x201C, 0x201D, 0x00A8, 0x2022, 0x2022, 0x0068, 0x2025, 0x2025, 0x006F, - 0x2026, 0x2026, 0x006E, 0x2032, 0x2032, 0x00AD, 0x2035, 0x2035, 0x00AC, - 0x203B, 0x203B, 0x00B1, 0x203E, 0x203E, 0x00C3, 0x20AC, 0x20AC, 0x44C1, - 0x2103, 0x2103, 0x010A, 0x2105, 0x2105, 0x00C2, 0x2109, 0x2109, 0x010B, - 0x2116, 0x2116, 0x36E6, 0x2121, 0x2121, 0x36E7, 0x2160, 0x2169, 0x0157, - 0x2170, 0x2179, 0x020E, 0x2190, 0x2190, 0x00F8, 0x2191, 0x2191, 0x00F5, - 0x2192, 0x2192, 0x00F7, 0x2193, 0x2193, 0x00F6, 0x2196, 0x2197, 0x00F9, - 0x2198, 0x2198, 0x00FC, 0x2199, 0x2199, 0x00FB, 0x21B8, 0x21B9, 0x36AD, - 0x21E7, 0x21E7, 0x36AC, 0x221A, 0x221A, 0x00D5, 0x221E, 0x221E, 0x00DC, - 0x221F, 0x221F, 0x00E9, 0x2220, 0x2220, 0x00E8, 0x2223, 0x2223, 0x00FE, - 0x2225, 0x2225, 0x00FD, 0x2229, 0x222A, 0x00E5, 0x222B, 0x222B, 0x00ED, - 0x222E, 0x222E, 0x00EE, 0x2234, 0x2234, 0x00F0, 0x2235, 0x2235, 0x00EF, - 0x223C, 0x223C, 0x00E4, 0x2252, 0x2252, 0x00DD, 0x2260, 0x2260, 0x00DB, - 0x2261, 0x2261, 0x00DE, 0x2266, 0x2267, 0x00D9, 0x22A5, 0x22A5, 0x00E7, - 0x22BF, 0x22BF, 0x00EA, 0x2400, 0x241F, 0x0232, 0x2421, 0x2421, 0x0252, - 0x2460, 0x2469, 0x01FA, 0x2474, 0x247D, 0x0204, 0x2500, 0x2500, 0x0137, - 0x2502, 0x2502, 0x0138, 0x250C, 0x250C, 0x013A, 0x2510, 0x2510, 0x013B, - 0x2514, 0x2514, 0x013C, 0x2518, 0x2518, 0x013D, 0x251C, 0x251C, 0x0135, - 0x2524, 0x2524, 0x0134, 0x252C, 0x252C, 0x0133, 0x2534, 0x2534, 0x0132, - 0x253C, 0x253C, 0x0131, 0x2550, 0x2550, 0x0142, 0x2551, 0x2551, 0x370A, - 0x2552, 0x2552, 0x36F8, 0x2553, 0x2553, 0x3701, 0x2554, 0x2554, 0x36EF, - 0x2555, 0x2555, 0x36FA, 0x2556, 0x2556, 0x3703, 0x2557, 0x2557, 0x36F1, - 0x2558, 0x2558, 0x36FE, 0x2559, 0x2559, 0x3707, 0x255A, 0x255A, 0x36F5, - 0x255B, 0x255B, 0x3700, 0x255C, 0x255C, 0x3709, 0x255D, 0x255D, 0x36F7, - 0x255E, 0x255E, 0x0143, 0x255F, 0x255F, 0x3704, 0x2560, 0x2560, 0x36F2, - 0x2561, 0x2561, 0x0145, 0x2562, 0x2562, 0x3706, 0x2563, 0x2563, 0x36F4, - 0x2564, 0x2564, 0x36F9, 0x2565, 0x2565, 0x3702, 0x2566, 0x2566, 0x36F0, - 0x2567, 0x2567, 0x36FF, 0x2568, 0x2568, 0x3708, 0x2569, 0x2569, 0x36F6, - 0x256A, 0x256A, 0x0144, 0x256B, 0x256B, 0x3705, 0x256C, 0x256C, 0x36F3, - 0x256D, 0x256E, 0x013E, 0x256F, 0x256F, 0x0141, 0x2570, 0x2570, 0x0140, - 0x2571, 0x2573, 0x014A, 0x2581, 0x2588, 0x0122, 0x2589, 0x2589, 0x0130, - 0x258A, 0x258A, 0x012F, 0x258B, 0x258B, 0x012E, 0x258C, 0x258C, 0x012D, - 0x258D, 0x258D, 0x012C, 0x258E, 0x258E, 0x012B, 0x258F, 0x258F, 0x012A, - 0x2593, 0x2593, 0x3710, 0x2594, 0x2594, 0x0136, 0x2595, 0x2595, 0x0139, - 0x25A0, 0x25A0, 0x00BE, 0x25A1, 0x25A1, 0x00BD, 0x25B2, 0x25B2, 0x00B7, - 0x25B3, 0x25B3, 0x00B6, 0x25BC, 0x25BC, 0x00C0, 0x25BD, 0x25BD, 0x00BF, - 0x25C6, 0x25C6, 0x00BC, 0x25C7, 0x25C7, 0x00BB, 0x25CB, 0x25CB, 0x00B4, - 0x25CE, 0x25CE, 0x00B8, 0x25CF, 0x25CF, 0x00B5, 0x25E2, 0x25E3, 0x0146, - 0x25E4, 0x25E4, 0x0149, 0x25E5, 0x25E5, 0x0148, 0x2605, 0x2605, 0x00BA, - 0x2606, 0x2606, 0x00B9, 0x2609, 0x2609, 0x00F4, 0x2640, 0x2640, 0x00F1, - 0x2641, 0x2641, 0x00F3, 0x2642, 0x2642, 0x00F2, 0x273D, 0x273D, 0x35C0, - 0x2E80, 0x2E80, 0x44C8, 0x2E84, 0x2E84, 0x451C, 0x2E86, 0x2E88, 0x451D, - 0x2E8A, 0x2E8A, 0x4520, 0x2E8C, 0x2E8D, 0x4521, 0x2E95, 0x2E95, 0x4523, - 0x2E9C, 0x2E9C, 0x4524, 0x2E9D, 0x2E9D, 0x02DC, 0x2EA5, 0x2EA5, 0x4525, - 0x2EA7, 0x2EA7, 0x4526, 0x2EAA, 0x2EAA, 0x4527, 0x2EAC, 0x2EAC, 0x4528, - 0x2EAE, 0x2EAE, 0x4529, 0x2EB6, 0x2EB6, 0x452A, 0x2EBC, 0x2EBC, 0x452B, - 0x2EBE, 0x2EBE, 0x452C, 0x2EC6, 0x2EC6, 0x0509, 0x2ECA, 0x2ECA, 0x452D, - 0x2ECC, 0x2ECD, 0x452E, 0x2ECF, 0x2ECF, 0x4530, 0x2ED6, 0x2ED7, 0x4531, - 0x2EDE, 0x2EDE, 0x4533, 0x2EE3, 0x2EE3, 0x09F6, 0x2F33, 0x2F33, 0x0227, - 0x3000, 0x3000, 0x0063, 0x3001, 0x3002, 0x0065, 0x3003, 0x3003, 0x00B3, - 0x3005, 0x3007, 0x35BA, 0x3008, 0x3009, 0x0094, 0x300A, 0x300B, 0x0090, - 0x300C, 0x300D, 0x0098, 0x300E, 0x300F, 0x009C, 0x3010, 0x3011, 0x008C, - 0x3012, 0x3012, 0x0105, 0x3014, 0x3015, 0x0088, 0x301D, 0x301E, 0x00AA, - 0x3021, 0x3029, 0x0161, 0x3041, 0x3093, 0x35C1, 0x309B, 0x309C, 0x44C6, - 0x309D, 0x309E, 0x35B7, 0x30A1, 0x30F6, 0x3614, 0x30FC, 0x30FC, 0x35BD, - 0x30FD, 0x30FE, 0x35B5, 0x3105, 0x3129, 0x01D1, 0x3231, 0x3231, 0x36E5, - 0x32A3, 0x32A3, 0x00C1, 0x338E, 0x338F, 0x0115, 0x339C, 0x339E, 0x0110, - 0x33A1, 0x33A1, 0x0114, 0x33C4, 0x33C4, 0x0117, 0x33CE, 0x33CE, 0x0113, - 0x33D1, 0x33D1, 0x00EC, 0x33D2, 0x33D2, 0x00EB, 0x33D5, 0x33D5, 0x010F, - 0x3435, 0x3435, 0x39BD, 0x3440, 0x3440, 0x3C67, 0x344C, 0x344C, 0x4593, - 0x3464, 0x3464, 0x3A85, 0x3473, 0x3473, 0x3DC5, 0x347A, 0x347A, 0x4033, - 0x347D, 0x347D, 0x4597, 0x347E, 0x347E, 0x46A3, 0x3493, 0x3493, 0x439E, - 0x3496, 0x3496, 0x37DC, 0x34A5, 0x34A5, 0x4598, 0x34AF, 0x34AF, 0x3C7F, - 0x34BC, 0x34BC, 0x4380, 0x34C1, 0x34C1, 0x44FB, 0x34C8, 0x34C8, 0x3D00, - 0x34DF, 0x34DF, 0x3EA4, 0x34E4, 0x34E4, 0x3E54, 0x34FB, 0x34FB, 0x3DCA, - 0x3506, 0x3506, 0x4336, 0x353E, 0x353E, 0x44E7, 0x3551, 0x3551, 0x45A1, - 0x3553, 0x3553, 0x43A5, 0x3561, 0x3561, 0x40D8, 0x356D, 0x356D, 0x45A4, - 0x3570, 0x3570, 0x3B2F, 0x3572, 0x3572, 0x45A5, 0x3577, 0x3577, 0x3ECB, - 0x3578, 0x3578, 0x4379, 0x3584, 0x3584, 0x39FB, 0x3597, 0x3597, 0x3B2D, - 0x3598, 0x3598, 0x45B0, 0x35A1, 0x35A1, 0x40E2, 0x35A5, 0x35A5, 0x45B1, - 0x35AD, 0x35AD, 0x3EFC, 0x35BF, 0x35BF, 0x45B2, 0x35C1, 0x35C1, 0x4580, - 0x35C5, 0x35C5, 0x45B4, 0x35C7, 0x35C7, 0x459F, 0x35CA, 0x35CA, 0x3E43, - 0x35CE, 0x35CE, 0x3E81, 0x35D2, 0x35D2, 0x3FC9, 0x35D6, 0x35D6, 0x3FB5, - 0x35DB, 0x35DB, 0x470D, 0x35DD, 0x35DD, 0x43AC, 0x35F1, 0x35F1, 0x4696, - 0x35F2, 0x35F2, 0x4627, 0x35F3, 0x35F3, 0x3F6C, 0x35FB, 0x35FB, 0x45C8, - 0x35FE, 0x35FE, 0x3F6A, 0x3609, 0x3609, 0x45F5, 0x3618, 0x3618, 0x4871, - 0x361A, 0x361A, 0x461A, 0x3623, 0x3623, 0x40C6, 0x362D, 0x362D, 0x3E86, - 0x3635, 0x3635, 0x492E, 0x3639, 0x3639, 0x4165, 0x363E, 0x363E, 0x3A08, - 0x3647, 0x3647, 0x4806, 0x3648, 0x3648, 0x3806, 0x3649, 0x3649, 0x4013, - 0x364E, 0x364E, 0x4698, 0x365F, 0x365F, 0x3DF3, 0x367A, 0x367A, 0x3EE3, - 0x3681, 0x3681, 0x45A6, 0x369A, 0x369A, 0x3C71, 0x36A5, 0x36A5, 0x4902, - 0x36AA, 0x36AA, 0x3B30, 0x36AC, 0x36AC, 0x4900, 0x36B0, 0x36B0, 0x3CDF, - 0x36B1, 0x36B1, 0x40CD, 0x36B5, 0x36B5, 0x3BC2, 0x36B9, 0x36B9, 0x4887, - 0x36BC, 0x36BC, 0x3CFF, 0x36C1, 0x36C1, 0x37C5, 0x36C3, 0x36C3, 0x40E5, - 0x36C4, 0x36C4, 0x3905, 0x36C5, 0x36C5, 0x4296, 0x36C7, 0x36C7, 0x3D3A, - 0x36C8, 0x36C8, 0x4820, 0x36D3, 0x36D3, 0x3A38, 0x36D4, 0x36D4, 0x3BB3, - 0x36D6, 0x36D6, 0x3D0C, 0x36DD, 0x36DD, 0x3A36, 0x36E1, 0x36E1, 0x397C, - 0x36E2, 0x36E2, 0x3CDD, 0x36E5, 0x36E5, 0x4216, 0x36E6, 0x36E6, 0x40FC, - 0x36F5, 0x36F5, 0x3A18, 0x3701, 0x3701, 0x3A34, 0x3703, 0x3703, 0x460F, - 0x3708, 0x3708, 0x40FF, 0x370A, 0x370A, 0x3CD5, 0x370D, 0x370D, 0x4238, - 0x371C, 0x371C, 0x3DFE, 0x3722, 0x3722, 0x3979, 0x3723, 0x3723, 0x3980, - 0x3725, 0x3725, 0x3849, 0x372C, 0x372C, 0x3C8C, 0x372D, 0x372D, 0x3D37, - 0x3730, 0x3730, 0x495C, 0x3732, 0x3732, 0x4106, 0x3733, 0x3733, 0x3997, - 0x373A, 0x373A, 0x3E56, 0x3740, 0x3740, 0x4202, 0x3743, 0x3743, 0x4036, - 0x3762, 0x3762, 0x3DB6, 0x376F, 0x376F, 0x47CB, 0x3797, 0x3797, 0x45ED, - 0x37A0, 0x37A0, 0x3A28, 0x37B9, 0x37B9, 0x43B7, 0x37BE, 0x37BE, 0x393E, - 0x37F2, 0x37F2, 0x3BA1, 0x37F8, 0x37F8, 0x42D2, 0x37FB, 0x37FB, 0x3EF5, - 0x380F, 0x380F, 0x462C, 0x3819, 0x3819, 0x39AF, 0x3820, 0x3820, 0x462F, - 0x382D, 0x382D, 0x412E, 0x3836, 0x3836, 0x4133, 0x3838, 0x3838, 0x43BB, - 0x3863, 0x3863, 0x46C3, 0x38A0, 0x38A0, 0x4145, 0x38C3, 0x38C3, 0x3912, - 0x38CC, 0x38CC, 0x4076, 0x38D1, 0x38D1, 0x3A95, 0x38FA, 0x38FA, 0x44EB, - 0x3908, 0x3908, 0x4632, 0x3914, 0x3914, 0x43BE, 0x3927, 0x3927, 0x3C31, - 0x3932, 0x3932, 0x4182, 0x393F, 0x393F, 0x4633, 0x394D, 0x394D, 0x4634, - 0x3963, 0x3963, 0x4163, 0x3980, 0x3980, 0x3874, 0x3989, 0x3989, 0x4638, - 0x398A, 0x398A, 0x3CE8, 0x3992, 0x3992, 0x4376, 0x3999, 0x3999, 0x39BA, - 0x399B, 0x399B, 0x3DB3, 0x39A1, 0x39A1, 0x3E19, 0x39A4, 0x39A4, 0x3E0F, - 0x39B8, 0x39B8, 0x463B, 0x39DC, 0x39DC, 0x3ECE, 0x39E2, 0x39E2, 0x46C8, - 0x39E5, 0x39E5, 0x393B, 0x39EC, 0x39EC, 0x4310, 0x39F8, 0x39F8, 0x463E, - 0x39FB, 0x39FB, 0x4345, 0x39FE, 0x39FE, 0x4368, 0x3A01, 0x3A01, 0x41E0, - 0x3A03, 0x3A03, 0x4640, 0x3A06, 0x3A06, 0x4377, 0x3A17, 0x3A17, 0x4190, - 0x3A18, 0x3A18, 0x438F, 0x3A29, 0x3A29, 0x3A5E, 0x3A2A, 0x3A2A, 0x3EDF, - 0x3A34, 0x3A34, 0x4319, 0x3A4B, 0x3A4B, 0x4644, 0x3A52, 0x3A52, 0x3ED3, - 0x3A57, 0x3A57, 0x419E, 0x3A5C, 0x3A5C, 0x3FC4, 0x3A5E, 0x3A5E, 0x3B07, - 0x3A66, 0x3A66, 0x419C, 0x3A67, 0x3A67, 0x4333, 0x3A97, 0x3A97, 0x4647, - 0x3AAB, 0x3AAB, 0x4091, 0x3ABD, 0x3ABD, 0x4649, 0x3ADE, 0x3ADE, 0x414C, - 0x3AE0, 0x3AE0, 0x3A7A, 0x3AF0, 0x3AF0, 0x46B2, 0x3AF2, 0x3AF2, 0x464C, - 0x3AFB, 0x3AFB, 0x3AF2, 0x3B0E, 0x3B0E, 0x38E8, 0x3B19, 0x3B19, 0x46C5, - 0x3B22, 0x3B22, 0x464E, 0x3B2B, 0x3B2B, 0x4956, 0x3B39, 0x3B39, 0x474B, - 0x3B42, 0x3B42, 0x4650, 0x3B58, 0x3B58, 0x4652, 0x3B60, 0x3B60, 0x393A, - 0x3B71, 0x3B71, 0x4656, 0x3B72, 0x3B72, 0x4655, 0x3B7B, 0x3B7B, 0x4657, - 0x3B7C, 0x3B7C, 0x385A, 0x3B80, 0x3B80, 0x41E2, 0x3B96, 0x3B96, 0x3A9C, - 0x3B99, 0x3B99, 0x3A98, 0x3BA1, 0x3BA1, 0x41E9, 0x3BBC, 0x3BBC, 0x43C8, - 0x3BBE, 0x3BBE, 0x3DB1, 0x3BC2, 0x3BC2, 0x4134, 0x3BC4, 0x3BC4, 0x3AA0, - 0x3BD7, 0x3BD7, 0x3AAC, 0x3BDD, 0x3BDD, 0x465F, 0x3BEC, 0x3BEC, 0x4664, - 0x3BF2, 0x3BF2, 0x4666, 0x3BF3, 0x3BF3, 0x41F3, 0x3BF4, 0x3BF4, 0x3A6E, - 0x3C0D, 0x3C0D, 0x41F7, 0x3C11, 0x3C11, 0x3E40, 0x3C15, 0x3C15, 0x3998, - 0x3C54, 0x3C54, 0x3E00, 0x3CCB, 0x3CCB, 0x4670, 0x3CCD, 0x3CCD, 0x3CE5, - 0x3CD1, 0x3CD1, 0x4003, 0x3CD6, 0x3CD6, 0x3CF7, 0x3CDC, 0x3CDC, 0x404E, - 0x3CEB, 0x3CEB, 0x4217, 0x3CEF, 0x3CEF, 0x4675, 0x3D13, 0x3D13, 0x3773, - 0x3D1D, 0x3D1D, 0x393C, 0x3D32, 0x3D32, 0x4957, 0x3D3B, 0x3D3B, 0x4245, - 0x3D46, 0x3D46, 0x4685, 0x3D4C, 0x3D4C, 0x3CEB, 0x3D4E, 0x3D4E, 0x4242, - 0x3D51, 0x3D51, 0x38EA, 0x3D5F, 0x3D5F, 0x4159, 0x3D62, 0x3D62, 0x3C5E, - 0x3D69, 0x3D69, 0x3CEA, 0x3D6A, 0x3D6A, 0x4689, 0x3D6F, 0x3D6F, 0x3CFC, - 0x3D75, 0x3D75, 0x468A, 0x3D7D, 0x3D7D, 0x3C2F, 0x3D85, 0x3D85, 0x494B, - 0x3D8A, 0x3D8A, 0x468D, 0x3D8F, 0x3D8F, 0x3ABD, 0x3D91, 0x3D91, 0x468F, - 0x3DA5, 0x3DA5, 0x3D56, 0x3DAD, 0x3DAD, 0x4699, 0x3DB4, 0x3DB4, 0x40A6, - 0x3DBF, 0x3DBF, 0x37D0, 0x3DC6, 0x3DC6, 0x48DE, 0x3DC7, 0x3DC7, 0x4164, - 0x3DCC, 0x3DCC, 0x3D6F, 0x3DCD, 0x3DCD, 0x3AF3, 0x3DD3, 0x3DD3, 0x37E1, - 0x3DDB, 0x3DDB, 0x3FFF, 0x3DE7, 0x3DE7, 0x3999, 0x3DE8, 0x3DE8, 0x425D, - 0x3DEB, 0x3DEB, 0x3E5A, 0x3DF3, 0x3DF3, 0x46D4, 0x3DF7, 0x3DF7, 0x48AB, - 0x3DFC, 0x3DFC, 0x462B, 0x3DFD, 0x3DFD, 0x3C14, 0x3E06, 0x3E06, 0x491D, - 0x3E40, 0x3E40, 0x4169, 0x3E43, 0x3E43, 0x436D, 0x3E48, 0x3E48, 0x4595, - 0x3E55, 0x3E55, 0x427F, 0x3E74, 0x3E74, 0x3EE2, 0x3EA8, 0x3EA8, 0x4304, - 0x3EA9, 0x3EA9, 0x46ED, 0x3EAA, 0x3EAA, 0x4075, 0x3EAD, 0x3EAD, 0x3B9D, - 0x3EB1, 0x3EB1, 0x3AD8, 0x3EB8, 0x3EB8, 0x3A4B, 0x3EBF, 0x3EBF, 0x3B0B, - 0x3EC2, 0x3EC2, 0x3BD8, 0x3EC7, 0x3EC7, 0x3975, 0x3ECA, 0x3ECA, 0x46F1, - 0x3ECC, 0x3ECC, 0x3BE2, 0x3ED0, 0x3ED0, 0x3854, 0x3ED1, 0x3ED1, 0x46F2, - 0x3ED6, 0x3ED6, 0x3CAD, 0x3ED7, 0x3ED7, 0x429F, 0x3EDA, 0x3EDA, 0x3D02, - 0x3EDE, 0x3EDE, 0x39F2, 0x3EE1, 0x3EE1, 0x3CA8, 0x3EE2, 0x3EE2, 0x46F6, - 0x3EE7, 0x3EE7, 0x3BDC, 0x3EE9, 0x3EE9, 0x3CA4, 0x3EEB, 0x3EEB, 0x396A, - 0x3EF0, 0x3EF0, 0x46F7, 0x3EF3, 0x3EF3, 0x3ADD, 0x3EF4, 0x3EF4, 0x46F8, - 0x3EFA, 0x3EFA, 0x46F9, 0x3EFC, 0x3EFC, 0x3BE8, 0x3EFF, 0x3EFF, 0x3AF5, - 0x3F00, 0x3F00, 0x3C0D, 0x3F04, 0x3F04, 0x42C3, 0x3F06, 0x3F06, 0x3AD7, - 0x3F0E, 0x3F0E, 0x46FB, 0x3F53, 0x3F53, 0x46FC, 0x3F58, 0x3F58, 0x3AE9, - 0x3F59, 0x3F59, 0x4089, 0x3F63, 0x3F63, 0x3AE6, 0x3F7C, 0x3F7C, 0x4700, - 0x3F93, 0x3F93, 0x45CD, 0x3FC0, 0x3FC0, 0x43CF, 0x3FD7, 0x3FD7, 0x43D1, - 0x3FDC, 0x3FDC, 0x4704, 0x3FE5, 0x3FE5, 0x46DF, 0x3FED, 0x3FED, 0x4335, - 0x3FF9, 0x3FF9, 0x45D7, 0x3FFA, 0x3FFA, 0x4354, 0x4004, 0x4004, 0x410E, - 0x401D, 0x401D, 0x4709, 0x4039, 0x4039, 0x470B, 0x4045, 0x4045, 0x470C, - 0x4053, 0x4053, 0x45B6, 0x4057, 0x4057, 0x399D, 0x4062, 0x4062, 0x3BCB, - 0x4065, 0x4065, 0x3FD3, 0x406A, 0x406A, 0x470F, 0x406F, 0x406F, 0x4710, - 0x40A8, 0x40A8, 0x43D5, 0x40BB, 0x40BB, 0x45C0, 0x40BF, 0x40BF, 0x3EEC, - 0x40C8, 0x40C8, 0x3B0E, 0x40D8, 0x40D8, 0x41AB, 0x40DF, 0x40DF, 0x3E17, - 0x40FA, 0x40FA, 0x3EBE, 0x4103, 0x4103, 0x43D7, 0x4104, 0x4104, 0x425C, - 0x4109, 0x4109, 0x471C, 0x410E, 0x410E, 0x3B1B, 0x4132, 0x4132, 0x3B25, - 0x4167, 0x4167, 0x471F, 0x416C, 0x416C, 0x38AE, 0x416E, 0x416E, 0x3B23, - 0x417F, 0x417F, 0x3B82, 0x4190, 0x4190, 0x46C0, 0x41B2, 0x41B2, 0x4720, - 0x41C4, 0x41C4, 0x4723, 0x41CA, 0x41CA, 0x373F, 0x41CF, 0x41CF, 0x4726, - 0x41DB, 0x41DB, 0x37BF, 0x41EF, 0x41EF, 0x3743, 0x41F9, 0x41F9, 0x3B3E, - 0x4211, 0x4211, 0x3B41, 0x4240, 0x4240, 0x37F1, 0x4260, 0x4260, 0x472B, - 0x426A, 0x426A, 0x3B55, 0x427A, 0x427A, 0x472C, 0x428C, 0x428C, 0x472F, - 0x4294, 0x4294, 0x4731, 0x42B5, 0x42B5, 0x4010, 0x42B9, 0x42B9, 0x38A6, - 0x42BC, 0x42BC, 0x3C8A, 0x42F4, 0x42F4, 0x3BB9, 0x42FB, 0x42FB, 0x3CEE, - 0x42FC, 0x42FC, 0x41E6, 0x432B, 0x432B, 0x377D, 0x436E, 0x436E, 0x46CA, - 0x4397, 0x4397, 0x473B, 0x43BA, 0x43BA, 0x435F, 0x43C1, 0x43C1, 0x4695, - 0x43D9, 0x43D9, 0x433E, 0x43DF, 0x43DF, 0x3E49, 0x43ED, 0x43ED, 0x4745, - 0x43F2, 0x43F2, 0x3E48, 0x4401, 0x4401, 0x474A, 0x4402, 0x4402, 0x3B73, - 0x4413, 0x4413, 0x474F, 0x4425, 0x4425, 0x4751, 0x442D, 0x442D, 0x4752, - 0x447A, 0x447A, 0x37AF, 0x448F, 0x448F, 0x4758, 0x449F, 0x449F, 0x3AE2, - 0x44A0, 0x44A0, 0x37ED, 0x44A2, 0x44A2, 0x4079, 0x44B0, 0x44B0, 0x475C, - 0x44B7, 0x44B7, 0x3FA1, 0x44C0, 0x44C0, 0x3C07, 0x44C5, 0x44C5, 0x4210, - 0x44CE, 0x44CE, 0x3D23, 0x44DD, 0x44DD, 0x39DD, 0x44DF, 0x44DF, 0x3D22, - 0x44E4, 0x44E4, 0x37E2, 0x44E9, 0x44E9, 0x41CF, 0x44EA, 0x44EA, 0x3B71, - 0x44EB, 0x44EB, 0x3CF2, 0x44EC, 0x44EC, 0x3EB4, 0x44F4, 0x44F4, 0x3992, - 0x4503, 0x4503, 0x469F, 0x4504, 0x4504, 0x4763, 0x4509, 0x4509, 0x3E50, - 0x450B, 0x450B, 0x37D4, 0x4516, 0x4516, 0x37F9, 0x451D, 0x451D, 0x3767, - 0x4527, 0x4527, 0x37F7, 0x452E, 0x452E, 0x3CD3, 0x4533, 0x4533, 0x3C51, - 0x453B, 0x453B, 0x476A, 0x453D, 0x453D, 0x38C4, 0x453F, 0x453F, 0x3E12, - 0x4543, 0x4543, 0x37F3, 0x4551, 0x4551, 0x3AE4, 0x4552, 0x4552, 0x40B3, - 0x4555, 0x4555, 0x423E, 0x455C, 0x455C, 0x378B, 0x4562, 0x4562, 0x4940, - 0x456A, 0x456A, 0x3804, 0x4577, 0x4577, 0x476E, 0x4585, 0x4585, 0x38C5, - 0x45E9, 0x45E9, 0x3EE4, 0x4606, 0x4606, 0x4773, 0x460F, 0x460F, 0x3815, - 0x4615, 0x4615, 0x3843, 0x4617, 0x4617, 0x4774, 0x465B, 0x465B, 0x381D, - 0x467A, 0x467A, 0x39E9, 0x4680, 0x4680, 0x3D01, 0x46CF, 0x46CF, 0x3BA0, - 0x46D0, 0x46D0, 0x3DFA, 0x46F5, 0x46F5, 0x3B9F, 0x4713, 0x4713, 0x3833, - 0x4718, 0x4718, 0x3DC7, 0x474E, 0x474E, 0x3EBC, 0x477C, 0x477C, 0x3DCD, - 0x4798, 0x4798, 0x4781, 0x47A6, 0x47A6, 0x40A3, 0x47B6, 0x47B6, 0x3EEA, - 0x47D5, 0x47D5, 0x431A, 0x47ED, 0x47ED, 0x4783, 0x47F4, 0x47F4, 0x432F, - 0x4800, 0x4800, 0x461E, 0x480B, 0x480B, 0x4352, 0x4837, 0x4837, 0x4787, - 0x485D, 0x485D, 0x410F, 0x4871, 0x4871, 0x3D03, 0x489B, 0x489B, 0x3BBD, - 0x48AD, 0x48AD, 0x4791, 0x48AE, 0x48AE, 0x494D, 0x48D0, 0x48D0, 0x3DA7, - 0x48DD, 0x48DD, 0x4120, 0x48ED, 0x48ED, 0x4288, 0x48F3, 0x48F3, 0x3EC1, - 0x48FA, 0x48FA, 0x3E44, 0x4906, 0x4906, 0x3BC7, 0x4911, 0x4911, 0x4584, - 0x491E, 0x491E, 0x4794, 0x4925, 0x4925, 0x3C0F, 0x492A, 0x492A, 0x46AE, - 0x492D, 0x492D, 0x46CD, 0x4935, 0x4935, 0x3CC3, 0x493C, 0x493C, 0x3BF8, - 0x493E, 0x493E, 0x3D06, 0x4945, 0x4945, 0x47A3, 0x4951, 0x4951, 0x47A4, - 0x4953, 0x4953, 0x42AD, 0x4965, 0x4965, 0x3899, 0x496A, 0x496A, 0x47A9, - 0x4972, 0x4972, 0x3A24, 0x4989, 0x4989, 0x379B, 0x49A1, 0x49A1, 0x38B7, - 0x49A7, 0x49A7, 0x47AE, 0x49DF, 0x49DF, 0x38AA, 0x49E5, 0x49E5, 0x47B1, - 0x49E7, 0x49E7, 0x4621, 0x4A0F, 0x4A0F, 0x38C3, 0x4A1D, 0x4A1D, 0x3BEC, - 0x4A24, 0x4A24, 0x47B2, 0x4A35, 0x4A35, 0x47B4, 0x4A96, 0x4A96, 0x3CE7, - 0x4AB4, 0x4AB4, 0x4361, 0x4AB8, 0x4AB8, 0x3DA8, 0x4AD1, 0x4AD1, 0x38E3, - 0x4AE4, 0x4AE4, 0x47B7, 0x4AFF, 0x4AFF, 0x38F2, 0x4B19, 0x4B19, 0x47B9, - 0x4B2C, 0x4B2C, 0x461F, 0x4B37, 0x4B37, 0x41A9, 0x4B6F, 0x4B6F, 0x3C16, - 0x4B70, 0x4B70, 0x47C0, 0x4B72, 0x4B72, 0x38FC, 0x4B7B, 0x4B7B, 0x3C8D, - 0x4B7E, 0x4B7E, 0x400A, 0x4B8E, 0x4B8E, 0x39F7, 0x4B90, 0x4B90, 0x3C20, - 0x4B93, 0x4B93, 0x3A8C, 0x4B96, 0x4B96, 0x3942, 0x4B97, 0x4B97, 0x3C24, - 0x4B9D, 0x4B9D, 0x47C2, 0x4BBD, 0x4BBD, 0x3C23, 0x4BBE, 0x4BBE, 0x3954, - 0x4BC0, 0x4BC0, 0x3DDC, 0x4C04, 0x4C04, 0x3FBB, 0x4C07, 0x4C07, 0x3FB7, - 0x4C0E, 0x4C0E, 0x390C, 0x4C3B, 0x4C3B, 0x3F3C, 0x4C3E, 0x4C3E, 0x457B, - 0x4C5B, 0x4C5B, 0x3ED9, 0x4C6D, 0x4C6D, 0x47C9, 0x4C7D, 0x4C7D, 0x3E66, - 0x4CA4, 0x4CA4, 0x48BE, 0x4CAE, 0x4CAE, 0x3C42, 0x4CB0, 0x4CB0, 0x3C45, - 0x4CB7, 0x4CB7, 0x3E21, 0x4CCD, 0x4CCD, 0x4578, 0x4CE1, 0x4CE1, 0x3EF3, - 0x4CED, 0x4CED, 0x40AB, 0x4D09, 0x4D09, 0x3ED6, 0x4D10, 0x4D10, 0x4117, - 0x4D34, 0x4D34, 0x3935, 0x4D91, 0x4D91, 0x43F5, 0x4D9C, 0x4D9C, 0x48C4, - 0x4E00, 0x4E00, 0x0253, 0x4E01, 0x4E01, 0x0255, 0x4E03, 0x4E03, 0x0256, - 0x4E04, 0x4E04, 0x48FE, 0x4E07, 0x4E07, 0x1771, 0x4E08, 0x4E08, 0x0269, - 0x4E09, 0x4E09, 0x0267, 0x4E0A, 0x4E0A, 0x026A, 0x4E0B, 0x4E0B, 0x0268, - 0x4E0C, 0x4E0C, 0x1772, 0x4E0D, 0x4E0D, 0x0294, 0x4E0E, 0x4E0E, 0x177A, - 0x4E0F, 0x4E0F, 0x1778, 0x4E10, 0x4E10, 0x0293, 0x4E11, 0x4E11, 0x0292, - 0x4E14, 0x4E14, 0x02F2, 0x4E15, 0x4E15, 0x02F1, 0x4E16, 0x4E16, 0x02F0, - 0x4E18, 0x4E18, 0x02F3, 0x4E19, 0x4E19, 0x02EF, 0x4E1A, 0x4E1A, 0x48FD, - 0x4E1C, 0x4E1C, 0x48E0, 0x4E1E, 0x4E1F, 0x036E, 0x4E21, 0x4E21, 0x3D6D, - 0x4E24, 0x4E24, 0x458D, 0x4E26, 0x4E26, 0x0528, 0x4E28, 0x4E28, 0x0218, - 0x4E2A, 0x4E2A, 0x3F57, 0x4E2B, 0x4E2B, 0x026B, 0x4E2C, 0x4E2C, 0x44F3, - 0x4E2D, 0x4E2D, 0x0295, 0x4E2E, 0x4E2E, 0x177B, 0x4E30, 0x4E30, 0x0296, - 0x4E31, 0x4E31, 0x178E, 0x4E32, 0x4E32, 0x0415, 0x4E33, 0x4E33, 0x18F4, - 0x4E36, 0x4E36, 0x0219, 0x4E37, 0x4E37, 0x4517, 0x4E38, 0x4E38, 0x026C, - 0x4E39, 0x4E39, 0x0297, 0x4E3B, 0x4E3B, 0x02F4, 0x4E3C, 0x4E3C, 0x178F, - 0x4E3D, 0x4E3D, 0x4537, 0x4E3F, 0x4E3F, 0x021A, 0x4E41, 0x4E41, 0x36AF, - 0x4E42, 0x4E42, 0x176C, 0x4E43, 0x4E43, 0x0257, 0x4E45, 0x4E45, 0x026E, - 0x4E47, 0x4E47, 0x1773, 0x4E48, 0x4E48, 0x026F, 0x4E49, 0x4E49, 0x408E, - 0x4E4B, 0x4E4B, 0x0298, 0x4E4D, 0x4E4D, 0x02F5, 0x4E4E, 0x4E4E, 0x02F7, - 0x4E4F, 0x4E4F, 0x02F6, 0x4E52, 0x4E53, 0x0370, 0x4E56, 0x4E56, 0x0529, - 0x4E58, 0x4E58, 0x0831, 0x4E59, 0x4E59, 0x0254, 0x4E5A, 0x4E5A, 0x36B1, - 0x4E5B, 0x4E5B, 0x44E5, 0x4E5C, 0x4E5C, 0x176D, 0x4E5D, 0x4E5D, 0x0258, - 0x4E5E, 0x4E5E, 0x0271, 0x4E5F, 0x4E5F, 0x0270, 0x4E69, 0x4E69, 0x0372, - 0x4E6A, 0x4E6A, 0x3DE5, 0x4E73, 0x4E73, 0x052A, 0x4E78, 0x4E78, 0x3D8E, - 0x4E7E, 0x4E7E, 0x09FB, 0x4E7F, 0x4E7F, 0x1E35, 0x4E80, 0x4E80, 0x458E, - 0x4E81, 0x4E81, 0x43BC, 0x4E82, 0x4E82, 0x0DBE, 0x4E83, 0x4E84, 0x2361, - 0x4E85, 0x4E85, 0x021B, 0x4E86, 0x4E86, 0x0259, 0x4E87, 0x4E87, 0x458F, - 0x4E88, 0x4E88, 0x029A, 0x4E89, 0x4E89, 0x459C, 0x4E8B, 0x4E8B, 0x052B, - 0x4E8C, 0x4E8C, 0x025A, 0x4E8D, 0x4E8D, 0x1774, 0x4E8E, 0x4E8E, 0x0272, - 0x4E91, 0x4E91, 0x029B, 0x4E92, 0x4E92, 0x029D, 0x4E93, 0x4E93, 0x177C, - 0x4E94, 0x4E94, 0x029E, 0x4E95, 0x4E95, 0x029C, 0x4E98, 0x4E98, 0x39C4, - 0x4E99, 0x4E99, 0x0373, 0x4E9A, 0x4E9A, 0x48D5, 0x4E9B, 0x4E9B, 0x052C, - 0x4E9E, 0x4E9E, 0x052D, 0x4E9F, 0x4E9F, 0x06A3, 0x4EA0, 0x4EA0, 0x021C, - 0x4EA1, 0x4EA1, 0x0273, 0x4EA2, 0x4EA2, 0x029F, 0x4EA4, 0x4EA4, 0x0374, - 0x4EA5, 0x4EA5, 0x0376, 0x4EA6, 0x4EA6, 0x0375, 0x4EA8, 0x4EA8, 0x0416, - 0x4EAB, 0x4EAC, 0x052E, 0x4EAD, 0x4EAE, 0x06A4, 0x4EB3, 0x4EB3, 0x0832, - 0x4EB6, 0x4EB6, 0x2363, 0x4EB7, 0x4EB7, 0x413C, 0x4EB9, 0x4EB9, 0x3377, - 0x4EBA, 0x4EBA, 0x025B, 0x4EBB, 0x4EBB, 0x44E6, 0x4EBC, 0x4EBC, 0x39B1, - 0x4EBF, 0x4EBF, 0x4590, 0x4EC0, 0x4EC0, 0x02A1, 0x4EC1, 0x4EC1, 0x02A0, - 0x4EC2, 0x4EC2, 0x177D, 0x4EC3, 0x4EC3, 0x02A2, 0x4EC4, 0x4EC4, 0x02A8, - 0x4EC6, 0x4EC7, 0x02A3, 0x4EC8, 0x4EC8, 0x177F, 0x4EC9, 0x4EC9, 0x177E, - 0x4ECA, 0x4ECB, 0x02A6, 0x4ECD, 0x4ECD, 0x02A5, 0x4ECE, 0x4ECE, 0x3F62, - 0x4ED4, 0x4ED7, 0x02FA, 0x4ED8, 0x4ED8, 0x02F9, 0x4ED9, 0x4ED9, 0x0300, - 0x4EDA, 0x4EDA, 0x1795, 0x4EDC, 0x4EDC, 0x1791, 0x4EDD, 0x4EDD, 0x1794, - 0x4EDE, 0x4EDE, 0x0301, 0x4EDF, 0x4EDF, 0x0311, 0x4EE1, 0x4EE1, 0x1793, - 0x4EE3, 0x4EE4, 0x02FE, 0x4EE5, 0x4EE5, 0x02F8, 0x4EE8, 0x4EE8, 0x1790, - 0x4EE9, 0x4EE9, 0x1792, 0x4EEA, 0x4EEA, 0x48CB, 0x4EEB, 0x4EEB, 0x4591, - 0x4EEE, 0x4EEE, 0x3D76, 0x4EF0, 0x4EF0, 0x0383, 0x4EF1, 0x4EF1, 0x17BA, - 0x4EF2, 0x4EF2, 0x0380, 0x4EF3, 0x4EF3, 0x0384, 0x4EF4, 0x4EF4, 0x17C4, - 0x4EF5, 0x4EF5, 0x17B8, 0x4EF6, 0x4EF6, 0x0381, 0x4EF7, 0x4EF7, 0x17BC, - 0x4EF8, 0x4EF8, 0x39AD, 0x4EFB, 0x4EFB, 0x0382, 0x4EFD, 0x4EFD, 0x0385, - 0x4EFF, 0x4EFF, 0x0377, 0x4F00, 0x4F00, 0x17BB, 0x4F01, 0x4F01, 0x0386, - 0x4F02, 0x4F02, 0x17BF, 0x4F03, 0x4F03, 0x39C8, 0x4F04, 0x4F04, 0x17C3, - 0x4F05, 0x4F05, 0x17C0, 0x4F08, 0x4F08, 0x17BD, 0x4F09, 0x4F09, 0x0378, - 0x4F0A, 0x4F0A, 0x037A, 0x4F0B, 0x4F0B, 0x0387, 0x4F0D, 0x4F0D, 0x037C, - 0x4F0E, 0x4F0E, 0x17B5, 0x4F0F, 0x4F0F, 0x037F, 0x4F10, 0x4F11, 0x037D, - 0x4F12, 0x4F12, 0x17C5, 0x4F13, 0x4F13, 0x17C2, 0x4F14, 0x4F14, 0x17B9, - 0x4F15, 0x4F15, 0x037B, 0x4F18, 0x4F18, 0x17B6, 0x4F19, 0x4F19, 0x0379, - 0x4F1A, 0x4F1A, 0x453C, 0x4F1D, 0x4F1D, 0x17BE, 0x4F22, 0x4F22, 0x17C1, - 0x4F28, 0x4F28, 0x453D, 0x4F29, 0x4F29, 0x39BE, 0x4F2C, 0x4F2C, 0x17B7, - 0x4F2D, 0x4F2D, 0x182F, 0x4F2F, 0x4F2F, 0x042C, 0x4F30, 0x4F30, 0x041F, - 0x4F32, 0x4F32, 0x393D, 0x4F33, 0x4F33, 0x1830, 0x4F34, 0x4F34, 0x041C, - 0x4F36, 0x4F36, 0x042E, 0x4F37, 0x4F37, 0x4592, 0x4F38, 0x4F38, 0x0424, - 0x4F39, 0x4F39, 0x3F65, 0x4F3A, 0x4F3A, 0x0423, 0x4F3B, 0x4F3B, 0x1824, - 0x4F3C, 0x4F3C, 0x0427, 0x4F3D, 0x4F3D, 0x0422, 0x4F3E, 0x4F3E, 0x1829, - 0x4F3F, 0x4F3F, 0x1831, 0x4F41, 0x4F41, 0x182D, 0x4F42, 0x4F42, 0x39CB, - 0x4F43, 0x4F43, 0x0425, 0x4F45, 0x4F45, 0x3B8F, 0x4F46, 0x4F46, 0x0428, - 0x4F47, 0x4F47, 0x0419, 0x4F48, 0x4F48, 0x0431, 0x4F49, 0x4F49, 0x1826, - 0x4F4B, 0x4F4B, 0x39B4, 0x4F4C, 0x4F4C, 0x1900, 0x4F4D, 0x4F4D, 0x0417, - 0x4F4E, 0x4F4E, 0x042D, 0x4F4F, 0x4F4F, 0x0418, 0x4F50, 0x4F51, 0x0420, - 0x4F52, 0x4F52, 0x182B, 0x4F53, 0x4F53, 0x1827, 0x4F54, 0x4F54, 0x0426, - 0x4F55, 0x4F55, 0x041E, 0x4F56, 0x4F56, 0x1823, 0x4F57, 0x4F57, 0x041A, - 0x4F58, 0x4F58, 0x182E, 0x4F59, 0x4F59, 0x042F, 0x4F5A, 0x4F5A, 0x0432, - 0x4F5B, 0x4F5B, 0x041D, 0x4F5C, 0x4F5C, 0x042A, 0x4F5D, 0x4F5D, 0x0430, - 0x4F5E, 0x4F5E, 0x041B, 0x4F5F, 0x4F5F, 0x182C, 0x4F60, 0x4F60, 0x042B, - 0x4F61, 0x4F61, 0x1832, 0x4F62, 0x4F62, 0x1825, 0x4F63, 0x4F63, 0x0429, - 0x4F64, 0x4F64, 0x1828, 0x4F67, 0x4F67, 0x182A, 0x4F69, 0x4F69, 0x053D, - 0x4F6A, 0x4F6A, 0x1902, 0x4F6B, 0x4F6B, 0x190E, 0x4F6C, 0x4F6C, 0x0535, - 0x4F6E, 0x4F6E, 0x190F, 0x4F6F, 0x4F6F, 0x0530, 0x4F70, 0x4F70, 0x053A, - 0x4F72, 0x4F72, 0x3C72, 0x4F73, 0x4F73, 0x0533, 0x4F74, 0x4F74, 0x18FC, - 0x4F75, 0x4F75, 0x053B, 0x4F76, 0x4F76, 0x18FB, 0x4F77, 0x4F77, 0x18FF, - 0x4F78, 0x4F78, 0x1906, 0x4F79, 0x4F79, 0x1904, 0x4F7A, 0x4F7A, 0x0543, - 0x4F7B, 0x4F7B, 0x053E, 0x4F7C, 0x4F7C, 0x18F6, 0x4F7D, 0x4F7D, 0x18F8, - 0x4F7E, 0x4F7E, 0x0540, 0x4F7F, 0x4F7F, 0x0534, 0x4F80, 0x4F80, 0x18F9, - 0x4F81, 0x4F81, 0x1905, 0x4F82, 0x4F82, 0x190C, 0x4F83, 0x4F83, 0x0539, - 0x4F84, 0x4F84, 0x18FE, 0x4F85, 0x4F85, 0x18F7, 0x4F86, 0x4F86, 0x0538, - 0x4F87, 0x4F87, 0x18FA, 0x4F88, 0x4F88, 0x053C, 0x4F89, 0x4F89, 0x18FD, - 0x4F8A, 0x4F8A, 0x39B5, 0x4F8B, 0x4F8B, 0x0537, 0x4F8D, 0x4F8D, 0x0532, - 0x4F8F, 0x4F8F, 0x0541, 0x4F90, 0x4F90, 0x1907, 0x4F91, 0x4F91, 0x0542, - 0x4F92, 0x4F92, 0x190B, 0x4F94, 0x4F94, 0x1909, 0x4F95, 0x4F95, 0x190D, - 0x4F96, 0x4F96, 0x053F, 0x4F97, 0x4F97, 0x1901, 0x4F98, 0x4F98, 0x18F5, - 0x4F9A, 0x4F9A, 0x1903, 0x4F9B, 0x4F9B, 0x0536, 0x4F9C, 0x4F9C, 0x1908, - 0x4F9D, 0x4F9D, 0x0531, 0x4F9E, 0x4F9E, 0x190A, 0x4FA2, 0x4FA2, 0x39C7, - 0x4FA8, 0x4FA8, 0x453E, 0x4FAB, 0x4FAB, 0x4022, 0x4FAE, 0x4FAE, 0x06B4, - 0x4FAF, 0x4FAF, 0x06A8, 0x4FB0, 0x4FB0, 0x3D4A, 0x4FB2, 0x4FB2, 0x1A5D, - 0x4FB3, 0x4FB3, 0x1A65, 0x4FB5, 0x4FB5, 0x06A7, 0x4FB6, 0x4FB6, 0x06AF, - 0x4FB7, 0x4FB7, 0x06BB, 0x4FB9, 0x4FB9, 0x1A6B, 0x4FBA, 0x4FBA, 0x1A69, - 0x4FBB, 0x4FBB, 0x1A64, 0x4FBD, 0x4FBD, 0x4594, 0x4FBF, 0x4FBF, 0x06A9, - 0x4FC0, 0x4FC0, 0x1A6A, 0x4FC1, 0x4FC1, 0x1A60, 0x4FC2, 0x4FC2, 0x06B7, - 0x4FC3, 0x4FC3, 0x06AE, 0x4FC4, 0x4FC4, 0x06B6, 0x4FC5, 0x4FC5, 0x1A5B, - 0x4FC7, 0x4FC7, 0x1A67, 0x4FC8, 0x4FC8, 0x46E8, 0x4FC9, 0x4FC9, 0x1A5E, - 0x4FCA, 0x4FCA, 0x06B2, 0x4FCB, 0x4FCB, 0x1A5F, 0x4FCC, 0x4FCC, 0x39CF, - 0x4FCD, 0x4FCD, 0x1A5A, 0x4FCE, 0x4FCE, 0x06B9, 0x4FCF, 0x4FCF, 0x06AC, - 0x4FD0, 0x4FD0, 0x06B5, 0x4FD1, 0x4FD1, 0x06AB, 0x4FD3, 0x4FD3, 0x1A5C, - 0x4FD4, 0x4FD4, 0x1A61, 0x4FD6, 0x4FD6, 0x1A68, 0x4FD7, 0x4FD7, 0x06B3, - 0x4FD8, 0x4FD8, 0x06B0, 0x4FD9, 0x4FD9, 0x1A63, 0x4FDA, 0x4FDA, 0x06B8, - 0x4FDB, 0x4FDB, 0x1A66, 0x4FDC, 0x4FDC, 0x1A62, 0x4FDD, 0x4FDD, 0x06AD, - 0x4FDE, 0x4FDE, 0x06BA, 0x4FDF, 0x4FDF, 0x06B1, 0x4FE0, 0x4FE0, 0x06AA, - 0x4FE1, 0x4FE1, 0x06A6, 0x4FE4, 0x4FE4, 0x3C66, 0x4FE5, 0x4FE5, 0x39D0, - 0x4FEC, 0x4FEC, 0x1A6C, 0x4FEE, 0x4FEE, 0x084C, 0x4FEF, 0x4FEF, 0x0836, - 0x4FF1, 0x4FF1, 0x0846, 0x4FF2, 0x4FF2, 0x3F28, 0x4FF3, 0x4FF3, 0x084B, - 0x4FF4, 0x4FF4, 0x1C24, 0x4FF5, 0x4FF5, 0x1C23, 0x4FF6, 0x4FF7, 0x1C28, - 0x4FF8, 0x4FF8, 0x0839, 0x4FF9, 0x4FF9, 0x37B3, 0x4FFA, 0x4FFA, 0x0842, - 0x4FFD, 0x4FFD, 0x3F26, 0x4FFE, 0x4FFE, 0x084F, 0x5000, 0x5000, 0x0843, - 0x5003, 0x5003, 0x4596, 0x5005, 0x5005, 0x1C1D, 0x5006, 0x5006, 0x083C, - 0x5007, 0x5007, 0x1C1E, 0x5008, 0x5008, 0x4024, 0x5009, 0x5009, 0x0851, - 0x500B, 0x500B, 0x0848, 0x500C, 0x500D, 0x0833, 0x500E, 0x500E, 0x1C31, - 0x500F, 0x500F, 0x0A0C, 0x5011, 0x5011, 0x0841, 0x5012, 0x5012, 0x0840, - 0x5013, 0x5013, 0x1C1F, 0x5014, 0x5014, 0x0844, 0x5015, 0x5015, 0x1E45, - 0x5016, 0x5016, 0x083B, 0x5017, 0x5017, 0x1C2A, 0x5018, 0x5018, 0x084A, - 0x5019, 0x5019, 0x0849, 0x501A, 0x501A, 0x083F, 0x501B, 0x501B, 0x1C22, - 0x501C, 0x501C, 0x1C2B, 0x501E, 0x501E, 0x1C1C, 0x501F, 0x501F, 0x083E, - 0x5020, 0x5020, 0x1C2C, 0x5021, 0x5021, 0x0847, 0x5022, 0x5022, 0x1C20, - 0x5023, 0x5023, 0x0835, 0x5025, 0x5025, 0x0838, 0x5026, 0x5026, 0x0837, - 0x5027, 0x5027, 0x1C2D, 0x5028, 0x5028, 0x0845, 0x5029, 0x5029, 0x083A, - 0x502A, 0x502A, 0x084E, 0x502B, 0x502B, 0x0850, 0x502C, 0x502C, 0x1C27, - 0x502D, 0x502D, 0x084D, 0x502E, 0x502E, 0x39CC, 0x502F, 0x502F, 0x1C2F, - 0x5030, 0x5030, 0x1C21, 0x5031, 0x5031, 0x1C30, 0x5033, 0x5033, 0x1C25, - 0x5034, 0x5034, 0x3910, 0x5035, 0x5035, 0x1C2E, 0x5037, 0x5037, 0x1C26, - 0x503C, 0x503C, 0x083D, 0x5040, 0x5040, 0x1E4D, 0x5041, 0x5041, 0x1E41, - 0x5043, 0x5043, 0x0A00, 0x5045, 0x5045, 0x1E46, 0x5046, 0x5046, 0x1E4C, - 0x5047, 0x5047, 0x09FF, 0x5048, 0x5048, 0x1E3F, 0x5049, 0x5049, 0x0A03, - 0x504A, 0x504A, 0x1E43, 0x504B, 0x504B, 0x1E3C, 0x504C, 0x504C, 0x0A01, - 0x504D, 0x504D, 0x1E40, 0x504E, 0x504E, 0x0A06, 0x504F, 0x504F, 0x0A0B, - 0x5051, 0x5051, 0x1E51, 0x5053, 0x5053, 0x1E3B, 0x5055, 0x5055, 0x0A07, - 0x5056, 0x5056, 0x3F2C, 0x5057, 0x5057, 0x1E50, 0x5058, 0x5058, 0x39D1, - 0x505A, 0x505A, 0x0A02, 0x505B, 0x505B, 0x1E42, 0x505C, 0x505C, 0x09FE, - 0x505D, 0x505D, 0x1E3D, 0x505E, 0x505E, 0x1E39, 0x505F, 0x505F, 0x1E47, - 0x5060, 0x5060, 0x1E3A, 0x5061, 0x5061, 0x1E38, 0x5062, 0x5062, 0x1E44, - 0x5063, 0x5064, 0x1E4A, 0x5065, 0x5065, 0x0A04, 0x5066, 0x5066, 0x3DC9, - 0x5068, 0x5068, 0x20B8, 0x5069, 0x5069, 0x1E48, 0x506A, 0x506A, 0x1E37, - 0x506B, 0x506B, 0x1E49, 0x506C, 0x506C, 0x39CD, 0x506D, 0x506D, 0x0A0E, - 0x506E, 0x506E, 0x1E4E, 0x506F, 0x506F, 0x0A0D, 0x5070, 0x5070, 0x1E36, - 0x5072, 0x5072, 0x1E3E, 0x5073, 0x5073, 0x1E4F, 0x5074, 0x5074, 0x0A09, - 0x5075, 0x5075, 0x0A08, 0x5076, 0x5076, 0x0A05, 0x5077, 0x5077, 0x0A0A, - 0x507A, 0x507A, 0x09FC, 0x507D, 0x507D, 0x09FD, 0x5080, 0x5080, 0x0BEC, - 0x5081, 0x5081, 0x39CE, 0x5082, 0x5082, 0x20BB, 0x5083, 0x5083, 0x20B4, - 0x5085, 0x5085, 0x0BE9, 0x5087, 0x5087, 0x20BC, 0x5088, 0x5088, 0x439C, - 0x508B, 0x508B, 0x20B2, 0x508C, 0x508C, 0x20B5, 0x508D, 0x508D, 0x0BE8, - 0x508E, 0x508E, 0x20B6, 0x5090, 0x5090, 0x41EC, 0x5091, 0x5091, 0x0BEB, - 0x5092, 0x5092, 0x20BA, 0x5094, 0x5094, 0x20B0, 0x5095, 0x5095, 0x20AF, - 0x5096, 0x5096, 0x0BED, 0x5098, 0x5098, 0x0BEE, 0x5099, 0x5099, 0x0BEA, - 0x509A, 0x509A, 0x0BEF, 0x509B, 0x509B, 0x20AE, 0x509C, 0x509C, 0x20B9, - 0x509D, 0x509D, 0x20B7, 0x509E, 0x509E, 0x20B1, 0x50A2, 0x50A2, 0x0BE7, - 0x50A3, 0x50A3, 0x20B3, 0x50A6, 0x50A6, 0x3F3F, 0x50AC, 0x50AC, 0x0DC5, - 0x50AD, 0x50AD, 0x0DBF, 0x50AE, 0x50AE, 0x2367, 0x50AF, 0x50AF, 0x0DC8, - 0x50B0, 0x50B0, 0x236D, 0x50B1, 0x50B1, 0x2370, 0x50B2, 0x50B3, 0x0DC1, - 0x50B4, 0x50B4, 0x236A, 0x50B5, 0x50B5, 0x0DC0, 0x50B6, 0x50B6, 0x2373, - 0x50B7, 0x50B7, 0x0DC6, 0x50B8, 0x50B8, 0x2374, 0x50BA, 0x50BA, 0x236F, - 0x50BB, 0x50BB, 0x0DC7, 0x50BD, 0x50BD, 0x2364, 0x50BE, 0x50BE, 0x0DC4, - 0x50BF, 0x50BF, 0x2365, 0x50C1, 0x50C1, 0x236E, 0x50C2, 0x50C2, 0x236C, - 0x50C4, 0x50C4, 0x2368, 0x50C5, 0x50C5, 0x0DC3, 0x50C6, 0x50C6, 0x2366, - 0x50C7, 0x50C7, 0x0DC9, 0x50C8, 0x50C8, 0x236B, 0x50C9, 0x50C9, 0x2372, - 0x50CA, 0x50CA, 0x2369, 0x50CB, 0x50CB, 0x2371, 0x50CD, 0x50CD, 0x39C5, - 0x50CE, 0x50CE, 0x0F88, 0x50CF, 0x50CF, 0x0F85, 0x50D0, 0x50D0, 0x38D1, - 0x50D1, 0x50D1, 0x0F86, 0x50D3, 0x50D3, 0x261C, 0x50D4, 0x50D4, 0x2614, - 0x50D5, 0x50D5, 0x0F84, 0x50D6, 0x50D6, 0x0F81, 0x50D7, 0x50D7, 0x2615, - 0x50D9, 0x50D9, 0x3FCE, 0x50DA, 0x50DA, 0x0F83, 0x50DB, 0x50DB, 0x2618, - 0x50DD, 0x50DD, 0x261A, 0x50DE, 0x50DE, 0x4031, 0x50DF, 0x50DF, 0x3AFD, - 0x50E0, 0x50E0, 0x2621, 0x50E1, 0x50E1, 0x4171, 0x50E3, 0x50E3, 0x2620, - 0x50E4, 0x50E4, 0x261B, 0x50E5, 0x50E5, 0x0F80, 0x50E6, 0x50E6, 0x2613, - 0x50E7, 0x50E7, 0x0F7E, 0x50E8, 0x50E8, 0x2616, 0x50E9, 0x50E9, 0x0F89, - 0x50EA, 0x50EA, 0x2619, 0x50EC, 0x50EC, 0x261D, 0x50ED, 0x50ED, 0x0F82, - 0x50EE, 0x50EE, 0x0F7F, 0x50EF, 0x50EF, 0x261F, 0x50F0, 0x50F0, 0x261E, - 0x50F1, 0x50F1, 0x0F87, 0x50F3, 0x50F3, 0x2617, 0x50F4, 0x50F4, 0x3CE9, - 0x50F5, 0x50F5, 0x1105, 0x50F6, 0x50F6, 0x2883, 0x50F8, 0x50F8, 0x2880, - 0x50F9, 0x50F9, 0x1106, 0x50FB, 0x50FB, 0x1104, 0x50FC, 0x50FC, 0x39D2, - 0x50FD, 0x50FD, 0x2887, 0x50FE, 0x50FE, 0x2884, 0x50FF, 0x50FF, 0x287D, - 0x5100, 0x5100, 0x1103, 0x5101, 0x5101, 0x4032, 0x5102, 0x5102, 0x1107, - 0x5103, 0x5103, 0x287E, 0x5104, 0x5104, 0x1102, 0x5105, 0x5105, 0x110A, - 0x5106, 0x5107, 0x2881, 0x5108, 0x5109, 0x1108, 0x510A, 0x510A, 0x2888, - 0x510B, 0x510C, 0x2885, 0x510D, 0x510D, 0x39C6, 0x510E, 0x510E, 0x4034, - 0x5110, 0x5110, 0x128D, 0x5111, 0x5111, 0x2B04, 0x5112, 0x5112, 0x128A, - 0x5113, 0x5113, 0x2B01, 0x5114, 0x5114, 0x128C, 0x5115, 0x5115, 0x128E, - 0x5117, 0x5117, 0x2B02, 0x5118, 0x5118, 0x128B, 0x511A, 0x511A, 0x2B03, - 0x511C, 0x511C, 0x2B00, 0x511F, 0x511F, 0x13B5, 0x5120, 0x5120, 0x2D3E, - 0x5121, 0x5121, 0x13B6, 0x5122, 0x5122, 0x2D3C, 0x5124, 0x5124, 0x2D3D, - 0x5125, 0x5125, 0x2D3B, 0x5126, 0x5126, 0x2D3A, 0x5129, 0x5129, 0x2D3F, - 0x512A, 0x512A, 0x13B4, 0x512B, 0x512B, 0x39AE, 0x512D, 0x512E, 0x2F0F, - 0x5130, 0x5130, 0x287F, 0x5131, 0x5131, 0x2F0E, 0x5132, 0x5132, 0x13B7, - 0x5133, 0x5133, 0x1575, 0x5134, 0x5135, 0x307A, 0x5137, 0x5138, 0x1668, - 0x5139, 0x5139, 0x32C6, 0x513A, 0x513A, 0x32C5, 0x513B, 0x513B, 0x16BC, - 0x513C, 0x513C, 0x16BB, 0x513D, 0x513D, 0x340E, 0x513F, 0x513F, 0x025C, - 0x5140, 0x5140, 0x0274, 0x5141, 0x5141, 0x02AA, 0x5143, 0x5143, 0x02A9, - 0x5144, 0x5144, 0x0303, 0x5145, 0x5145, 0x0302, 0x5146, 0x5146, 0x038A, - 0x5147, 0x5147, 0x0389, 0x5148, 0x5148, 0x038B, 0x5149, 0x5149, 0x0388, - 0x514B, 0x514B, 0x0434, 0x514C, 0x514C, 0x0433, 0x514D, 0x514D, 0x0435, - 0x5152, 0x5152, 0x0545, 0x5154, 0x5154, 0x0544, 0x5155, 0x5155, 0x0546, - 0x5156, 0x5156, 0x439A, 0x5157, 0x5157, 0x06BC, 0x5159, 0x5159, 0x0119, - 0x515A, 0x515A, 0x1C32, 0x515B, 0x515B, 0x011A, 0x515C, 0x515C, 0x0A0F, - 0x515D, 0x515D, 0x011C, 0x515E, 0x515E, 0x011B, 0x515F, 0x515F, 0x20BD, - 0x5160, 0x5160, 0x403A, 0x5161, 0x5161, 0x011D, 0x5162, 0x5162, 0x0F8A, - 0x5163, 0x5163, 0x011E, 0x5165, 0x5165, 0x025D, 0x5167, 0x5167, 0x02AB, - 0x5168, 0x5168, 0x038C, 0x5169, 0x5169, 0x0547, 0x516A, 0x516A, 0x403C, - 0x516B, 0x516B, 0x025E, 0x516C, 0x516C, 0x02AE, 0x516D, 0x516E, 0x02AC, - 0x5171, 0x5171, 0x038D, 0x5174, 0x5174, 0x453F, 0x5175, 0x5175, 0x0436, - 0x5176, 0x5176, 0x0549, 0x5177, 0x5177, 0x0548, 0x5178, 0x5178, 0x054A, - 0x5179, 0x5179, 0x3ACE, 0x517C, 0x517C, 0x0852, 0x5180, 0x5180, 0x128F, - 0x5182, 0x5182, 0x021D, 0x5186, 0x5186, 0x439F, 0x5187, 0x5187, 0x1779, - 0x5188, 0x5188, 0x36B6, 0x5189, 0x518A, 0x0304, 0x518D, 0x518D, 0x038E, - 0x518F, 0x518F, 0x1833, 0x5191, 0x5191, 0x06BE, 0x5192, 0x5192, 0x06BD, - 0x5193, 0x5193, 0x1C34, 0x5194, 0x5194, 0x1C33, 0x5195, 0x5195, 0x0A10, - 0x5196, 0x5196, 0x021E, 0x5197, 0x5197, 0x02AF, 0x5198, 0x5198, 0x1780, - 0x519A, 0x519A, 0x3EA3, 0x519C, 0x519C, 0x4540, 0x519E, 0x519E, 0x1910, - 0x51A0, 0x51A0, 0x06BF, 0x51A2, 0x51A2, 0x0855, 0x51A4, 0x51A5, 0x0853, - 0x51A7, 0x51A7, 0x3EA6, 0x51A8, 0x51A8, 0x39DA, 0x51AA, 0x51AA, 0x1290, - 0x51AB, 0x51AB, 0x021F, 0x51AC, 0x51AC, 0x0306, 0x51B0, 0x51B0, 0x038F, - 0x51B1, 0x51B1, 0x17C6, 0x51B2, 0x51B2, 0x4048, 0x51B3, 0x51B3, 0x4051, - 0x51B4, 0x51B4, 0x3D7C, 0x51B5, 0x51B5, 0x4012, 0x51B6, 0x51B7, 0x0437, - 0x51B8, 0x51B8, 0x4049, 0x51B9, 0x51B9, 0x1834, 0x51BC, 0x51BC, 0x1911, - 0x51BD, 0x51BD, 0x054B, 0x51BE, 0x51BE, 0x1912, 0x51C3, 0x51C3, 0x39DB, - 0x51C4, 0x51C5, 0x1C36, 0x51C6, 0x51C6, 0x0858, 0x51C7, 0x51C7, 0x422A, - 0x51C8, 0x51C8, 0x1C38, 0x51C9, 0x51C9, 0x404B, 0x51CA, 0x51CA, 0x1C35, - 0x51CB, 0x51CB, 0x0859, 0x51CC, 0x51CC, 0x0857, 0x51CD, 0x51CD, 0x0856, - 0x51CE, 0x51CE, 0x1C39, 0x51CF, 0x51CF, 0x404C, 0x51D0, 0x51D0, 0x1E52, - 0x51D1, 0x51D1, 0x404D, 0x51D2, 0x51D2, 0x3DAD, 0x51D3, 0x51D3, 0x404F, - 0x51D4, 0x51D4, 0x20BE, 0x51D7, 0x51D7, 0x2375, 0x51D8, 0x51D8, 0x2622, - 0x51DB, 0x51DB, 0x459A, 0x51DC, 0x51DC, 0x110B, 0x51DD, 0x51DD, 0x1291, - 0x51DE, 0x51DE, 0x2B05, 0x51DF, 0x51DF, 0x424F, 0x51E0, 0x51E0, 0x025F, - 0x51E1, 0x51E1, 0x026D, 0x51E2, 0x51E2, 0x4052, 0x51E4, 0x51E4, 0x4541, - 0x51ED, 0x51ED, 0x4054, 0x51F0, 0x51F0, 0x0A11, 0x51F1, 0x51F1, 0x0BF1, - 0x51F3, 0x51F3, 0x0F8B, 0x51F4, 0x51F4, 0x4178, 0x51F5, 0x51F5, 0x176E, - 0x51F6, 0x51F6, 0x02B0, 0x51F8, 0x51F8, 0x0309, 0x51F9, 0x51FA, 0x0307, - 0x51FC, 0x51FC, 0x459B, 0x51FD, 0x51FD, 0x054C, 0x51FE, 0x51FE, 0x3F0A, - 0x5200, 0x5201, 0x0260, 0x5202, 0x5202, 0x36B3, 0x5203, 0x5203, 0x0275, - 0x5205, 0x5205, 0x43A1, 0x5206, 0x5208, 0x02B1, 0x5209, 0x5209, 0x1797, - 0x520A, 0x520A, 0x030A, 0x520B, 0x520B, 0x4059, 0x520C, 0x520C, 0x1796, - 0x520E, 0x520E, 0x0393, 0x5210, 0x5210, 0x17C8, 0x5211, 0x5212, 0x0391, - 0x5213, 0x5213, 0x17C7, 0x5216, 0x5216, 0x0394, 0x5217, 0x5217, 0x0390, - 0x521C, 0x521C, 0x1835, 0x521D, 0x521D, 0x068B, 0x521E, 0x521E, 0x1836, - 0x521F, 0x521F, 0x3F60, 0x5220, 0x5220, 0x4930, 0x5221, 0x5221, 0x1837, - 0x5224, 0x5224, 0x043A, 0x5225, 0x5225, 0x0439, 0x5226, 0x5226, 0x405A, - 0x5227, 0x5227, 0x43A2, 0x5228, 0x5228, 0x043D, 0x5229, 0x522A, 0x043B, - 0x522E, 0x522E, 0x0552, 0x5230, 0x5230, 0x0551, 0x5231, 0x5231, 0x1917, - 0x5232, 0x5233, 0x1914, 0x5234, 0x5234, 0x3EFB, 0x5235, 0x5235, 0x1913, - 0x5236, 0x5236, 0x0553, 0x5237, 0x5237, 0x054F, 0x5238, 0x5238, 0x054E, - 0x523A, 0x523A, 0x0550, 0x523B, 0x523B, 0x054D, 0x523C, 0x523C, 0x405B, - 0x5241, 0x5241, 0x0554, 0x5243, 0x5243, 0x06C1, 0x5244, 0x5244, 0x1A6D, - 0x5246, 0x5246, 0x1916, 0x5247, 0x5247, 0x06C6, 0x5249, 0x5249, 0x1A6E, - 0x524A, 0x524A, 0x06C2, 0x524B, 0x524B, 0x06C5, 0x524C, 0x524C, 0x06C4, - 0x524D, 0x524D, 0x06C3, 0x524E, 0x524E, 0x06C0, 0x5252, 0x5252, 0x1C3C, - 0x5254, 0x5254, 0x085C, 0x5255, 0x5255, 0x1C3F, 0x5256, 0x5256, 0x085A, - 0x5257, 0x5257, 0x405D, 0x5259, 0x5259, 0x39E4, 0x525A, 0x525A, 0x1C3B, - 0x525B, 0x525B, 0x085D, 0x525C, 0x525C, 0x085B, 0x525D, 0x525D, 0x085E, - 0x525E, 0x525F, 0x1C3D, 0x5260, 0x5260, 0x3F29, 0x5261, 0x5261, 0x1C3A, - 0x5262, 0x5262, 0x1C40, 0x5268, 0x5268, 0x4619, 0x5269, 0x5269, 0x0BF5, - 0x526A, 0x526A, 0x0A12, 0x526B, 0x526B, 0x1E53, 0x526C, 0x526C, 0x1E55, - 0x526D, 0x526D, 0x1E54, 0x526E, 0x526E, 0x1E56, 0x526F, 0x526F, 0x0A13, - 0x5272, 0x5272, 0x0BF2, 0x5273, 0x5273, 0x3F43, 0x5274, 0x5275, 0x0BF3, - 0x5277, 0x5277, 0x0DCB, 0x5278, 0x5278, 0x2377, 0x5279, 0x5279, 0x43A3, - 0x527A, 0x527A, 0x2376, 0x527B, 0x527C, 0x2378, 0x527D, 0x527D, 0x0DCC, - 0x527F, 0x527F, 0x0DCA, 0x5280, 0x5281, 0x2623, 0x5282, 0x5282, 0x0F8D, - 0x5283, 0x5283, 0x0F8C, 0x5284, 0x5284, 0x2776, 0x5287, 0x5289, 0x110C, - 0x528A, 0x528A, 0x1110, 0x528B, 0x528C, 0x2889, 0x528D, 0x528D, 0x110F, - 0x528F, 0x528F, 0x3DBF, 0x5290, 0x5290, 0x459D, 0x5291, 0x5291, 0x1292, - 0x5293, 0x5293, 0x1293, 0x5294, 0x5294, 0x405E, 0x5296, 0x5296, 0x307C, - 0x5297, 0x5297, 0x32C8, 0x5298, 0x5298, 0x32C7, 0x5299, 0x5299, 0x340F, - 0x529A, 0x529A, 0x3F68, 0x529B, 0x529B, 0x0262, 0x529F, 0x529F, 0x030C, - 0x52A0, 0x52A0, 0x030B, 0x52A1, 0x52A1, 0x4542, 0x52A3, 0x52A3, 0x0395, - 0x52A4, 0x52A4, 0x39E5, 0x52A6, 0x52A6, 0x17C9, 0x52A8, 0x52A8, 0x4543, - 0x52A9, 0x52AA, 0x043F, 0x52AB, 0x52AB, 0x043E, 0x52AC, 0x52AC, 0x0441, - 0x52AD, 0x52AE, 0x1838, 0x52B5, 0x52B5, 0x405C, 0x52B9, 0x52B9, 0x405F, - 0x52BB, 0x52BB, 0x0556, 0x52BC, 0x52BC, 0x1918, 0x52BE, 0x52BE, 0x0555, - 0x52C0, 0x52C0, 0x1A6F, 0x52C1, 0x52C1, 0x06CA, 0x52C2, 0x52C2, 0x1A70, - 0x52C3, 0x52C3, 0x06C9, 0x52C5, 0x52C5, 0x4060, 0x52C7, 0x52C7, 0x06C7, - 0x52C9, 0x52C9, 0x06C8, 0x52CC, 0x52CC, 0x3EE1, 0x52CD, 0x52CD, 0x1C41, - 0x52D0, 0x52D0, 0x4109, 0x52D1, 0x52D1, 0x3F2A, 0x52D2, 0x52D2, 0x0A14, - 0x52D3, 0x52D3, 0x1E58, 0x52D5, 0x52D5, 0x0A17, 0x52D6, 0x52D6, 0x1E57, - 0x52D7, 0x52D7, 0x0ACF, 0x52D8, 0x52D8, 0x0A16, 0x52D9, 0x52D9, 0x0A15, - 0x52DB, 0x52DB, 0x0BF8, 0x52DD, 0x52DD, 0x0BF7, 0x52DE, 0x52DE, 0x0BF6, - 0x52DF, 0x52DF, 0x0DCD, 0x52E0, 0x52E0, 0x4063, 0x52E1, 0x52E1, 0x39E7, - 0x52E2, 0x52E3, 0x0DD0, 0x52E4, 0x52E4, 0x0DCF, 0x52E6, 0x52E6, 0x0DCE, - 0x52E9, 0x52E9, 0x2625, 0x52EB, 0x52EB, 0x2626, 0x52EF, 0x52EF, 0x288C, - 0x52F0, 0x52F0, 0x1111, 0x52F1, 0x52F1, 0x288B, 0x52F3, 0x52F3, 0x1294, - 0x52F4, 0x52F4, 0x2D40, 0x52F5, 0x52F5, 0x13B8, 0x52F7, 0x52F7, 0x307D, - 0x52F8, 0x52F8, 0x1609, 0x52F9, 0x52F9, 0x0220, 0x52FA, 0x52FA, 0x0276, - 0x52FB, 0x52FB, 0x02B4, 0x52FC, 0x52FC, 0x1781, 0x52FE, 0x52FF, 0x02B5, - 0x5301, 0x5301, 0x3D79, 0x5305, 0x5306, 0x030D, 0x5308, 0x5308, 0x0396, - 0x5309, 0x5309, 0x183A, 0x530A, 0x530B, 0x1919, 0x530D, 0x530D, 0x06CB, - 0x530E, 0x530E, 0x1C42, 0x530F, 0x530F, 0x0A19, 0x5310, 0x5310, 0x0A18, - 0x5311, 0x5311, 0x20C0, 0x5312, 0x5312, 0x20BF, 0x5315, 0x5315, 0x0263, - 0x5316, 0x5316, 0x02B7, 0x5317, 0x5317, 0x030F, 0x5319, 0x5319, 0x0A1A, - 0x531A, 0x531A, 0x176F, 0x531C, 0x531C, 0x1798, 0x531D, 0x531D, 0x0310, - 0x531F, 0x531F, 0x17CB, 0x5320, 0x5320, 0x0398, 0x5321, 0x5321, 0x0397, - 0x5322, 0x5322, 0x17CA, 0x5323, 0x5323, 0x0442, 0x5327, 0x5327, 0x459E, - 0x532A, 0x532A, 0x085F, 0x532C, 0x532C, 0x3F36, 0x532D, 0x532D, 0x1E59, - 0x532F, 0x532F, 0x0DD2, 0x5330, 0x5330, 0x2627, 0x5331, 0x5331, 0x0F8E, - 0x5332, 0x5332, 0x3FD0, 0x5333, 0x5333, 0x406D, 0x5334, 0x5334, 0x2B06, - 0x5337, 0x5337, 0x31C7, 0x5338, 0x5338, 0x0221, 0x5339, 0x5339, 0x02B8, - 0x533B, 0x533B, 0x4544, 0x533C, 0x533C, 0x191B, 0x533D, 0x533D, 0x1A71, - 0x533E, 0x533E, 0x0A1D, 0x533F, 0x5340, 0x0A1B, 0x5341, 0x5341, 0x0264, - 0x5342, 0x5342, 0x4947, 0x5343, 0x5343, 0x0277, 0x5344, 0x5344, 0x016B, - 0x5345, 0x5345, 0x02BB, 0x5347, 0x5347, 0x02BA, 0x5348, 0x5348, 0x02B9, - 0x5349, 0x5349, 0x0313, 0x534A, 0x534A, 0x0312, 0x534C, 0x534C, 0x1799, - 0x534D, 0x534D, 0x17CC, 0x534E, 0x534E, 0x4545, 0x5351, 0x5351, 0x055A, - 0x5352, 0x5352, 0x0557, 0x5353, 0x5353, 0x0559, 0x5354, 0x5354, 0x0558, - 0x5357, 0x5357, 0x06CC, 0x535A, 0x535A, 0x0BF9, 0x535C, 0x535C, 0x0265, - 0x535D, 0x535D, 0x4501, 0x535E, 0x535E, 0x02BC, 0x535F, 0x535F, 0x43A7, - 0x5360, 0x5360, 0x0315, 0x5361, 0x5361, 0x0314, 0x5363, 0x5363, 0x183B, - 0x5364, 0x5364, 0x480A, 0x5366, 0x5366, 0x055B, 0x5367, 0x5367, 0x3ECD, - 0x5369, 0x5369, 0x0222, 0x536C, 0x536C, 0x1782, 0x536D, 0x536D, 0x407A, - 0x536E, 0x536E, 0x0317, 0x536F, 0x536F, 0x0316, 0x5370, 0x5371, 0x0399, - 0x5372, 0x5372, 0x183C, 0x5373, 0x5373, 0x0443, 0x5374, 0x5374, 0x407B, - 0x5375, 0x5375, 0x0444, 0x5377, 0x5379, 0x055C, 0x537B, 0x537B, 0x06CD, - 0x537C, 0x537C, 0x1A72, 0x537D, 0x537D, 0x4901, 0x537E, 0x537E, 0x407D, - 0x537F, 0x537F, 0x0860, 0x5382, 0x5382, 0x1770, 0x5384, 0x5384, 0x02BD, - 0x538A, 0x538A, 0x17CD, 0x538E, 0x538F, 0x183D, 0x5392, 0x5392, 0x191C, - 0x5393, 0x5393, 0x4082, 0x5394, 0x5394, 0x191D, 0x5396, 0x5396, 0x1A74, - 0x5397, 0x5397, 0x1A73, 0x5398, 0x5398, 0x1A76, 0x5399, 0x5399, 0x1A75, - 0x539A, 0x539A, 0x06CE, 0x539C, 0x539C, 0x1E5A, 0x539D, 0x539D, 0x0862, - 0x539E, 0x539E, 0x1C43, 0x539F, 0x539F, 0x0861, 0x53A0, 0x53A0, 0x4084, - 0x53A2, 0x53A2, 0x3E2B, 0x53A4, 0x53A4, 0x20C1, 0x53A5, 0x53A5, 0x0BFA, - 0x53A6, 0x53A6, 0x413B, 0x53A7, 0x53A7, 0x20C2, 0x53A8, 0x53A8, 0x413E, - 0x53A9, 0x53A9, 0x45A0, 0x53AA, 0x53AA, 0x3FC6, 0x53AB, 0x53AB, 0x4085, - 0x53AC, 0x53AC, 0x2628, 0x53AD, 0x53AD, 0x0F8F, 0x53AE, 0x53AE, 0x4086, - 0x53B0, 0x53B0, 0x45A2, 0x53B2, 0x53B2, 0x1112, 0x53B4, 0x53B4, 0x307E, - 0x53B6, 0x53B6, 0x0223, 0x53B9, 0x53B9, 0x1783, 0x53BB, 0x53BB, 0x0318, - 0x53C1, 0x53C1, 0x408B, 0x53C2, 0x53C2, 0x43A6, 0x53C3, 0x53C3, 0x0A1E, - 0x53C5, 0x53C5, 0x408C, 0x53C8, 0x53C8, 0x0266, 0x53C9, 0x53C9, 0x0278, - 0x53CA, 0x53CA, 0x02BF, 0x53CB, 0x53CB, 0x02BE, 0x53CC, 0x53CC, 0x38B6, - 0x53CD, 0x53CD, 0x02C0, 0x53D0, 0x53D0, 0x39FA, 0x53D1, 0x53D1, 0x4546, - 0x53D2, 0x53D2, 0x3E3D, 0x53D4, 0x53D4, 0x0560, 0x53D6, 0x53D6, 0x055F, - 0x53D7, 0x53D7, 0x0561, 0x53D8, 0x53D8, 0x4547, 0x53D9, 0x53D9, 0x4090, - 0x53DA, 0x53DA, 0x3F39, 0x53DB, 0x53DB, 0x06CF, 0x53DF, 0x53DF, 0x0863, - 0x53E0, 0x53E0, 0x4093, 0x53E1, 0x53E1, 0x2B07, 0x53E2, 0x53E2, 0x14C9, - 0x53E3, 0x53E3, 0x0279, 0x53E4, 0x53E4, 0x031A, 0x53E5, 0x53E5, 0x0329, - 0x53E6, 0x53E6, 0x0324, 0x53E8, 0x53E8, 0x031F, 0x53E9, 0x53E9, 0x031E, - 0x53EA, 0x53EA, 0x0325, 0x53EB, 0x53EB, 0x0323, 0x53EC, 0x53EC, 0x031C, - 0x53ED, 0x53ED, 0x032A, 0x53EE, 0x53EE, 0x031D, 0x53EF, 0x53EF, 0x0319, - 0x53F0, 0x53F0, 0x0328, 0x53F1, 0x53F1, 0x0327, 0x53F2, 0x53F2, 0x0326, - 0x53F3, 0x53F3, 0x031B, 0x53F5, 0x53F5, 0x0322, 0x53F6, 0x53F6, 0x4096, - 0x53F7, 0x53F7, 0x3808, 0x53F8, 0x53F8, 0x0321, 0x53FB, 0x53FB, 0x032B, - 0x53FC, 0x53FC, 0x0320, 0x53FE, 0x53FE, 0x40C1, 0x5401, 0x5401, 0x03A0, - 0x5403, 0x5403, 0x03A6, 0x5404, 0x5404, 0x03A2, 0x5406, 0x5406, 0x03A8, - 0x5407, 0x5407, 0x17CE, 0x5408, 0x5408, 0x03A5, 0x5409, 0x5409, 0x039B, - 0x540A, 0x540A, 0x039E, 0x540B, 0x540B, 0x03A1, 0x540C, 0x540C, 0x039D, - 0x540D, 0x540D, 0x03A4, 0x540E, 0x540E, 0x03A7, 0x540F, 0x540F, 0x039C, - 0x5410, 0x5410, 0x039F, 0x5411, 0x5411, 0x03A3, 0x5412, 0x5412, 0x03A9, - 0x5413, 0x5413, 0x4098, 0x5414, 0x5414, 0x3C77, 0x5416, 0x5416, 0x3E7F, - 0x5418, 0x5418, 0x1847, 0x5419, 0x5419, 0x1844, 0x541A, 0x541A, 0x3E64, - 0x541B, 0x541B, 0x0451, 0x541C, 0x541C, 0x1845, 0x541D, 0x541D, 0x0445, - 0x541E, 0x541E, 0x0447, 0x541F, 0x541F, 0x045F, 0x5420, 0x5420, 0x045A, - 0x5421, 0x5421, 0x4203, 0x5423, 0x5423, 0x45A3, 0x5424, 0x5424, 0x184C, - 0x5425, 0x5425, 0x1846, 0x5426, 0x5426, 0x0449, 0x5427, 0x5427, 0x044B, - 0x5428, 0x5428, 0x184B, 0x5429, 0x5429, 0x0452, 0x542A, 0x542A, 0x1841, - 0x542B, 0x542B, 0x045E, 0x542C, 0x542C, 0x0460, 0x542D, 0x542D, 0x0446, - 0x542E, 0x542E, 0x0457, 0x542F, 0x542F, 0x40AC, 0x5430, 0x5430, 0x183F, - 0x5431, 0x5431, 0x045D, 0x5432, 0x5432, 0x3E75, 0x5433, 0x5433, 0x044E, - 0x5435, 0x5436, 0x0458, 0x5437, 0x5437, 0x1840, 0x5438, 0x5438, 0x0456, - 0x5439, 0x5439, 0x0454, 0x543B, 0x543B, 0x0455, 0x543C, 0x543C, 0x045B, - 0x543D, 0x543D, 0x1848, 0x543E, 0x543E, 0x0448, 0x5440, 0x5440, 0x045C, - 0x5441, 0x5441, 0x184A, 0x5442, 0x5442, 0x0450, 0x5443, 0x5443, 0x044D, - 0x5445, 0x5445, 0x1843, 0x5446, 0x5446, 0x044C, 0x5447, 0x5447, 0x184D, - 0x5448, 0x5448, 0x044F, 0x544A, 0x544A, 0x0453, 0x544B, 0x544B, 0x3ED1, - 0x544D, 0x544D, 0x3EA7, 0x544E, 0x544E, 0x044A, 0x544F, 0x544F, 0x1849, - 0x5454, 0x5454, 0x1842, 0x5460, 0x5460, 0x192E, 0x5461, 0x5461, 0x192D, - 0x5462, 0x5462, 0x0573, 0x5463, 0x5463, 0x1930, 0x5464, 0x5464, 0x1932, - 0x5465, 0x5465, 0x1927, 0x5466, 0x5466, 0x192A, 0x5467, 0x5467, 0x1931, - 0x5468, 0x5468, 0x0574, 0x5469, 0x5469, 0x3F32, 0x546A, 0x546A, 0x3D83, - 0x546B, 0x546B, 0x1924, 0x546C, 0x546C, 0x1928, 0x546D, 0x546D, 0x409D, - 0x546F, 0x546F, 0x192C, 0x5470, 0x5470, 0x1A85, 0x5471, 0x5471, 0x056F, - 0x5472, 0x5472, 0x1A89, 0x5473, 0x5473, 0x0562, 0x5474, 0x5474, 0x1929, - 0x5475, 0x5475, 0x0563, 0x5476, 0x5476, 0x0570, 0x5477, 0x5477, 0x0569, - 0x5478, 0x5478, 0x0565, 0x547A, 0x547A, 0x1925, 0x547B, 0x547B, 0x0568, - 0x547C, 0x547C, 0x056D, 0x547D, 0x547D, 0x0576, 0x547E, 0x547E, 0x1926, - 0x547F, 0x547F, 0x191F, 0x5480, 0x5480, 0x0567, 0x5481, 0x5481, 0x1920, - 0x5482, 0x5482, 0x1922, 0x5484, 0x5484, 0x056A, 0x5485, 0x5485, 0x46D9, - 0x5486, 0x5486, 0x056C, 0x5487, 0x5487, 0x191E, 0x5488, 0x5488, 0x1923, - 0x548B, 0x548B, 0x0575, 0x548C, 0x548C, 0x0571, 0x548D, 0x548D, 0x192B, - 0x548E, 0x548E, 0x0577, 0x548F, 0x548F, 0x40A1, 0x5490, 0x5490, 0x056E, - 0x5491, 0x5491, 0x1921, 0x5492, 0x5492, 0x056B, 0x5493, 0x5493, 0x45A7, - 0x5494, 0x5494, 0x3E98, 0x5495, 0x5495, 0x0566, 0x5496, 0x5496, 0x0564, - 0x5497, 0x5497, 0x3E8A, 0x5498, 0x5498, 0x192F, 0x549A, 0x549A, 0x0572, - 0x549C, 0x549C, 0x3F66, 0x549E, 0x549E, 0x47ED, 0x54A0, 0x54A0, 0x1A84, - 0x54A1, 0x54A1, 0x1A78, 0x54A2, 0x54A2, 0x1A87, 0x54A3, 0x54A3, 0x45A8, - 0x54A4, 0x54A4, 0x40A2, 0x54A5, 0x54A5, 0x1A7A, 0x54A6, 0x54A6, 0x06D6, - 0x54A7, 0x54A7, 0x06E4, 0x54A8, 0x54A8, 0x06D2, 0x54A9, 0x54A9, 0x06E3, - 0x54AA, 0x54AA, 0x06DB, 0x54AB, 0x54AB, 0x06E0, 0x54AC, 0x54AC, 0x06D0, - 0x54AD, 0x54AD, 0x1A79, 0x54AE, 0x54AE, 0x1A7F, 0x54AF, 0x54AF, 0x06DF, - 0x54B0, 0x54B0, 0x1A8B, 0x54B1, 0x54B1, 0x06E1, 0x54B2, 0x54B2, 0x3744, - 0x54B3, 0x54B3, 0x06D7, 0x54B4, 0x54B4, 0x45A9, 0x54B6, 0x54B6, 0x1A81, - 0x54B7, 0x54B7, 0x1A7E, 0x54B8, 0x54B8, 0x06D5, 0x54B9, 0x54B9, 0x45AA, - 0x54BA, 0x54BA, 0x1A77, 0x54BB, 0x54BB, 0x06E2, 0x54BC, 0x54BC, 0x1A86, - 0x54BD, 0x54BD, 0x06DA, 0x54BE, 0x54BE, 0x1A88, 0x54BF, 0x54BF, 0x06E5, - 0x54C0, 0x54C0, 0x06D1, 0x54C1, 0x54C1, 0x06DC, 0x54C2, 0x54C2, 0x06D9, - 0x54C3, 0x54C3, 0x1A7C, 0x54C4, 0x54C4, 0x06DD, 0x54C5, 0x54C6, 0x1A82, - 0x54C7, 0x54C7, 0x06D8, 0x54C8, 0x54C8, 0x06DE, 0x54C9, 0x54C9, 0x06D4, - 0x54CB, 0x54CB, 0x39A3, 0x54CC, 0x54CC, 0x43A8, 0x54CD, 0x54CD, 0x3A00, - 0x54CE, 0x54CE, 0x06D3, 0x54CF, 0x54CF, 0x1A7B, 0x54D0, 0x54D0, 0x45AB, - 0x54D6, 0x54D6, 0x1A80, 0x54DA, 0x54DA, 0x4923, 0x54DE, 0x54DE, 0x1A8A, - 0x54E0, 0x54E0, 0x1C57, 0x54E1, 0x54E1, 0x0870, 0x54E2, 0x54E2, 0x1C45, - 0x54E3, 0x54E3, 0x4341, 0x54E4, 0x54E4, 0x1C4A, 0x54E5, 0x54E5, 0x0869, - 0x54E6, 0x54E6, 0x0874, 0x54E7, 0x54E7, 0x1C48, 0x54E8, 0x54E8, 0x0864, - 0x54E9, 0x54E9, 0x086E, 0x54EA, 0x54EA, 0x0873, 0x54EB, 0x54EB, 0x1C4F, - 0x54ED, 0x54ED, 0x086F, 0x54EE, 0x54EE, 0x0872, 0x54EF, 0x54EF, 0x45AC, - 0x54F1, 0x54F1, 0x1C52, 0x54F2, 0x54F2, 0x086A, 0x54F3, 0x54F3, 0x1C49, - 0x54F7, 0x54F8, 0x1C55, 0x54FA, 0x54FA, 0x086C, 0x54FB, 0x54FB, 0x1C54, - 0x54FC, 0x54FC, 0x0868, 0x54FD, 0x54FD, 0x0877, 0x54FF, 0x54FF, 0x1C4C, - 0x5501, 0x5501, 0x0866, 0x5502, 0x5502, 0x3CCC, 0x5503, 0x5503, 0x1C59, - 0x5504, 0x5504, 0x1C4D, 0x5505, 0x5505, 0x1C51, 0x5506, 0x5506, 0x086B, - 0x5507, 0x5507, 0x0876, 0x5508, 0x5508, 0x1C4E, 0x5509, 0x5509, 0x0871, - 0x550A, 0x550A, 0x1C53, 0x550B, 0x550B, 0x1C5A, 0x550C, 0x550C, 0x1E69, - 0x550D, 0x550D, 0x3A73, 0x550E, 0x550E, 0x1C58, 0x550F, 0x550F, 0x0878, - 0x5510, 0x5510, 0x0865, 0x5511, 0x5511, 0x1C50, 0x5512, 0x5512, 0x1C47, - 0x5513, 0x5513, 0x3EA9, 0x5514, 0x5514, 0x086D, 0x5517, 0x5517, 0x1C46, - 0x5518, 0x5518, 0x45AD, 0x551A, 0x551A, 0x1C4B, 0x551E, 0x551E, 0x3EA8, - 0x5523, 0x5523, 0x45AE, 0x5525, 0x5525, 0x4309, 0x5526, 0x5526, 0x1C44, - 0x5527, 0x5527, 0x0875, 0x5528, 0x5528, 0x45AF, 0x552A, 0x552A, 0x1E61, - 0x552B, 0x552B, 0x409A, 0x552C, 0x552C, 0x0A31, 0x552D, 0x552D, 0x1E6F, - 0x552E, 0x552E, 0x0A2F, 0x552F, 0x552F, 0x0A2C, 0x5530, 0x5530, 0x1E66, - 0x5531, 0x5531, 0x0A28, 0x5532, 0x5532, 0x1E6A, 0x5533, 0x5533, 0x0A33, - 0x5534, 0x5534, 0x1E60, 0x5535, 0x5535, 0x1E65, 0x5536, 0x5536, 0x1E64, - 0x5537, 0x5537, 0x0867, 0x5538, 0x5538, 0x0A2E, 0x5539, 0x5539, 0x1E6D, - 0x553B, 0x553B, 0x1E70, 0x553C, 0x553C, 0x1E5D, 0x553E, 0x553E, 0x0C0C, - 0x553F, 0x553F, 0x43A9, 0x5540, 0x5540, 0x1E71, 0x5541, 0x5541, 0x0A34, - 0x5543, 0x5543, 0x0A26, 0x5544, 0x5544, 0x0A23, 0x5545, 0x5545, 0x1E68, - 0x5546, 0x5546, 0x0A20, 0x5547, 0x5547, 0x40AA, 0x5548, 0x5548, 0x1E6E, - 0x5549, 0x5549, 0x4068, 0x554A, 0x554A, 0x0A27, 0x554B, 0x554B, 0x1E72, - 0x554D, 0x554D, 0x1E5E, 0x554E, 0x554E, 0x1E6C, 0x554F, 0x554F, 0x0A2A, - 0x5550, 0x5550, 0x1E5F, 0x5551, 0x5551, 0x1E62, 0x5552, 0x5552, 0x1E67, - 0x5553, 0x5553, 0x43AE, 0x5555, 0x5555, 0x0A2B, 0x5556, 0x5556, 0x0A29, - 0x5557, 0x5557, 0x0A35, 0x555C, 0x555C, 0x0A30, 0x555D, 0x555D, 0x40A0, - 0x555E, 0x555E, 0x0A24, 0x555F, 0x555F, 0x0ABC, 0x5561, 0x5561, 0x0A25, - 0x5562, 0x5562, 0x1E63, 0x5563, 0x5563, 0x0A32, 0x5564, 0x5564, 0x0A2D, - 0x5565, 0x5565, 0x1E6B, 0x5566, 0x5566, 0x0A22, 0x5569, 0x5569, 0x3E9F, - 0x556A, 0x556A, 0x0A21, 0x556B, 0x556B, 0x3B2E, 0x5571, 0x5571, 0x3BC6, - 0x5572, 0x5572, 0x3E8B, 0x5573, 0x5573, 0x3F24, 0x5575, 0x5576, 0x1E5B, - 0x5577, 0x5577, 0x20C7, 0x5579, 0x5579, 0x435D, 0x557B, 0x557B, 0x0BFB, - 0x557C, 0x557C, 0x0BFE, 0x557D, 0x557D, 0x20D2, 0x557E, 0x557E, 0x0C12, - 0x557F, 0x557F, 0x20D5, 0x5580, 0x5580, 0x0BFC, 0x5581, 0x5581, 0x20CE, - 0x5582, 0x5582, 0x0C02, 0x5583, 0x5583, 0x0C08, 0x5584, 0x5584, 0x0D1B, - 0x5586, 0x5586, 0x40AE, 0x5587, 0x5587, 0x0C06, 0x5588, 0x5588, 0x20CB, - 0x5589, 0x5589, 0x0C13, 0x558A, 0x558A, 0x0BFF, 0x558B, 0x558B, 0x0C07, - 0x558C, 0x558C, 0x20D3, 0x558D, 0x558D, 0x2387, 0x558E, 0x558E, 0x20D8, - 0x558F, 0x558F, 0x20CC, 0x5590, 0x5590, 0x430E, 0x5591, 0x5591, 0x20C3, - 0x5592, 0x5592, 0x20D0, 0x5593, 0x5593, 0x20CA, 0x5594, 0x5594, 0x0C05, - 0x5595, 0x5595, 0x20D6, 0x5598, 0x5598, 0x0C01, 0x5599, 0x5599, 0x0C15, - 0x559A, 0x559A, 0x0C0E, 0x559C, 0x559C, 0x0C03, 0x559D, 0x559D, 0x0C00, - 0x559F, 0x559F, 0x0C0B, 0x55A1, 0x55A1, 0x20D7, 0x55A2, 0x55A2, 0x20C9, - 0x55A3, 0x55A3, 0x20CF, 0x55A4, 0x55A4, 0x20D1, 0x55A5, 0x55A5, 0x20C5, - 0x55A6, 0x55A6, 0x20D4, 0x55A7, 0x55A7, 0x0BFD, 0x55A8, 0x55A8, 0x20C4, - 0x55A9, 0x55A9, 0x40AF, 0x55AA, 0x55AA, 0x0C04, 0x55AB, 0x55AB, 0x0C14, - 0x55AC, 0x55AC, 0x0C10, 0x55AD, 0x55AD, 0x20C6, 0x55AE, 0x55AE, 0x0C0A, - 0x55B0, 0x55B0, 0x38F5, 0x55B1, 0x55B1, 0x0C11, 0x55B2, 0x55B2, 0x0C0D, - 0x55B3, 0x55B3, 0x0C09, 0x55B4, 0x55B4, 0x39FE, 0x55B5, 0x55B5, 0x20CD, - 0x55B9, 0x55B9, 0x43AA, 0x55BA, 0x55BA, 0x3E89, 0x55BB, 0x55BB, 0x0C0F, - 0x55BC, 0x55BC, 0x3DC3, 0x55BF, 0x55BF, 0x2385, 0x55C0, 0x55C0, 0x2381, - 0x55C1, 0x55C1, 0x3E4F, 0x55C2, 0x55C2, 0x2390, 0x55C3, 0x55C3, 0x237A, - 0x55C4, 0x55C4, 0x2383, 0x55C5, 0x55C6, 0x0DE0, 0x55C7, 0x55C7, 0x0DD9, - 0x55C8, 0x55C8, 0x238C, 0x55C9, 0x55C9, 0x0DE3, 0x55CA, 0x55CA, 0x237F, - 0x55CB, 0x55CB, 0x237E, 0x55CC, 0x55CC, 0x237C, 0x55CD, 0x55CD, 0x238E, - 0x55CE, 0x55CE, 0x0DD7, 0x55CF, 0x55CF, 0x2388, 0x55D0, 0x55D0, 0x237D, - 0x55D1, 0x55D1, 0x0DDA, 0x55D2, 0x55D2, 0x2386, 0x55D3, 0x55D3, 0x0DD5, - 0x55D4, 0x55D4, 0x2382, 0x55D5, 0x55D5, 0x2389, 0x55D6, 0x55D6, 0x238B, - 0x55D7, 0x55D7, 0x45B3, 0x55D8, 0x55D8, 0x43AB, 0x55D9, 0x55D9, 0x238F, - 0x55DA, 0x55DA, 0x0DDE, 0x55DB, 0x55DB, 0x237B, 0x55DC, 0x55DC, 0x0DD8, - 0x55DD, 0x55DD, 0x2380, 0x55DE, 0x55DE, 0x3E94, 0x55DF, 0x55DF, 0x0DD3, - 0x55E1, 0x55E1, 0x0DDF, 0x55E2, 0x55E2, 0x238A, 0x55E3, 0x55E4, 0x0DDB, - 0x55E5, 0x55E5, 0x0DE2, 0x55E6, 0x55E6, 0x0DD6, 0x55E7, 0x55E7, 0x011F, - 0x55E8, 0x55E8, 0x0DD4, 0x55E9, 0x55E9, 0x2384, 0x55EA, 0x55EA, 0x3E7C, - 0x55EC, 0x55EC, 0x37D2, 0x55EF, 0x55EF, 0x0DDD, 0x55F0, 0x55F0, 0x3E88, - 0x55F1, 0x55F1, 0x3E83, 0x55F2, 0x55F2, 0x238D, 0x55F5, 0x55F5, 0x4786, - 0x55F6, 0x55F6, 0x0F9F, 0x55F7, 0x55F7, 0x0F9A, 0x55F9, 0x55F9, 0x2637, - 0x55FA, 0x55FA, 0x2633, 0x55FB, 0x55FB, 0x4626, 0x55FC, 0x55FC, 0x262D, - 0x55FD, 0x55FD, 0x0F94, 0x55FE, 0x55FE, 0x0F90, 0x55FF, 0x55FF, 0x2636, - 0x5600, 0x5600, 0x0F91, 0x5601, 0x5601, 0x2630, 0x5602, 0x5602, 0x2632, - 0x5604, 0x5604, 0x2635, 0x5605, 0x5605, 0x3E82, 0x5606, 0x5606, 0x0F96, - 0x5608, 0x5608, 0x0F9D, 0x5609, 0x5609, 0x0F97, 0x560C, 0x560C, 0x262B, - 0x560D, 0x560E, 0x0F98, 0x560F, 0x560F, 0x262E, 0x5610, 0x5610, 0x0F9E, - 0x5611, 0x5611, 0x3F4D, 0x5612, 0x5612, 0x262C, 0x5613, 0x5613, 0x2631, - 0x5614, 0x5614, 0x0F95, 0x5615, 0x5615, 0x262A, 0x5616, 0x5616, 0x0F9B, - 0x5617, 0x5617, 0x0F93, 0x561B, 0x561B, 0x0F92, 0x561C, 0x561C, 0x262F, - 0x561D, 0x561D, 0x2634, 0x561E, 0x561E, 0x3E68, 0x561F, 0x561F, 0x0F9C, - 0x5620, 0x5620, 0x3F7D, 0x5621, 0x5621, 0x43AD, 0x5622, 0x5622, 0x3E67, - 0x5623, 0x5623, 0x4707, 0x5625, 0x5625, 0x3E78, 0x5627, 0x5627, 0x2629, - 0x5629, 0x5629, 0x1119, 0x562A, 0x562A, 0x289D, 0x562C, 0x562C, 0x289A, - 0x562D, 0x562D, 0x3E63, 0x562E, 0x562E, 0x1113, 0x562F, 0x5630, 0x111F, - 0x5632, 0x5632, 0x1116, 0x5633, 0x5633, 0x2898, 0x5634, 0x5634, 0x1118, - 0x5635, 0x5635, 0x2890, 0x5636, 0x5636, 0x111E, 0x5637, 0x5637, 0x40B7, - 0x5638, 0x5638, 0x289C, 0x5639, 0x5639, 0x1115, 0x563A, 0x563A, 0x289E, - 0x563B, 0x563B, 0x1114, 0x563D, 0x563D, 0x2899, 0x563E, 0x563E, 0x289B, - 0x563F, 0x563F, 0x1117, 0x5640, 0x5640, 0x2897, 0x5641, 0x5641, 0x2891, - 0x5642, 0x5642, 0x288E, 0x5643, 0x5643, 0x3E7E, 0x5645, 0x5645, 0x20C8, - 0x5646, 0x5646, 0x2894, 0x5648, 0x5648, 0x288D, 0x5649, 0x5649, 0x2893, - 0x564A, 0x564A, 0x2892, 0x564C, 0x564C, 0x288F, 0x564D, 0x564D, 0x40BC, - 0x564E, 0x564E, 0x111B, 0x564F, 0x564F, 0x40BD, 0x5650, 0x5650, 0x47CF, - 0x5652, 0x5652, 0x45C2, 0x5653, 0x5653, 0x111A, 0x5654, 0x5654, 0x43AF, - 0x5657, 0x5657, 0x111C, 0x5658, 0x5658, 0x2895, 0x5659, 0x5659, 0x1295, - 0x565A, 0x565A, 0x2896, 0x565D, 0x565D, 0x3EF9, 0x565E, 0x565E, 0x2B10, - 0x5660, 0x5660, 0x2B09, 0x5661, 0x5661, 0x3812, 0x5662, 0x5662, 0x12A1, - 0x5663, 0x5663, 0x2B0D, 0x5664, 0x5664, 0x1299, 0x5665, 0x5665, 0x129D, - 0x5666, 0x5666, 0x2B0C, 0x5668, 0x5668, 0x129C, 0x5669, 0x5669, 0x1298, - 0x566A, 0x566A, 0x129B, 0x566B, 0x566B, 0x1296, 0x566C, 0x566C, 0x12A0, - 0x566D, 0x566D, 0x2B0E, 0x566E, 0x566E, 0x2B0A, 0x566F, 0x566F, 0x129F, - 0x5670, 0x5670, 0x2B08, 0x5671, 0x5671, 0x129E, 0x5672, 0x5672, 0x2B0F, - 0x5673, 0x5673, 0x2B0B, 0x5674, 0x5674, 0x111D, 0x5676, 0x5676, 0x12A2, - 0x5677, 0x5677, 0x2B11, 0x5678, 0x5678, 0x129A, 0x5679, 0x5679, 0x1297, - 0x567A, 0x567A, 0x3D85, 0x567B, 0x567B, 0x3EB7, 0x567C, 0x567C, 0x3EED, - 0x567E, 0x567E, 0x2D47, 0x567F, 0x567F, 0x2D49, 0x5680, 0x5680, 0x13BA, - 0x5681, 0x5681, 0x2D4A, 0x5682, 0x5682, 0x2D48, 0x5683, 0x5683, 0x2D46, - 0x5684, 0x5684, 0x2D45, 0x5685, 0x5685, 0x13BC, 0x5686, 0x5686, 0x2D44, - 0x5687, 0x5687, 0x13BD, 0x5689, 0x5689, 0x4628, 0x568A, 0x568A, 0x3949, - 0x568B, 0x568B, 0x3E4C, 0x568C, 0x568D, 0x2D42, 0x568E, 0x568E, 0x13B9, - 0x568F, 0x568F, 0x13BE, 0x5690, 0x5690, 0x13BB, 0x5692, 0x5692, 0x39A6, - 0x5693, 0x5693, 0x2D41, 0x5695, 0x5695, 0x14CA, 0x5697, 0x5697, 0x2F13, - 0x5698, 0x5698, 0x2F11, 0x5699, 0x5699, 0x2F16, 0x569A, 0x569A, 0x2F14, - 0x569C, 0x569C, 0x2F12, 0x569D, 0x569D, 0x2F15, 0x569E, 0x569E, 0x39A4, - 0x569F, 0x569F, 0x3948, 0x56A1, 0x56A1, 0x436B, 0x56A4, 0x56A4, 0x3CC8, - 0x56A5, 0x56A5, 0x1576, 0x56A6, 0x56A7, 0x3081, 0x56A8, 0x56A8, 0x1577, - 0x56AA, 0x56AA, 0x3083, 0x56AB, 0x56AB, 0x307F, 0x56AC, 0x56AC, 0x3084, - 0x56AD, 0x56AD, 0x3080, 0x56AE, 0x56AE, 0x14CB, 0x56AF, 0x56AF, 0x45F7, - 0x56B1, 0x56B1, 0x463F, 0x56B2, 0x56B2, 0x31C8, 0x56B3, 0x56B3, 0x31CA, - 0x56B4, 0x56B4, 0x160C, 0x56B5, 0x56B5, 0x31C9, 0x56B6, 0x56B6, 0x160B, - 0x56B7, 0x56B7, 0x160A, 0x56B9, 0x56B9, 0x486F, 0x56BC, 0x56BC, 0x160D, - 0x56BD, 0x56BE, 0x32CA, 0x56BF, 0x56BF, 0x3E5D, 0x56C0, 0x56C0, 0x166B, - 0x56C1, 0x56C1, 0x166A, 0x56C2, 0x56C2, 0x166C, 0x56C3, 0x56C3, 0x32C9, - 0x56C5, 0x56C5, 0x3379, 0x56C6, 0x56C6, 0x3378, 0x56C8, 0x56C8, 0x16BD, - 0x56C9, 0x56C9, 0x16BF, 0x56CA, 0x56CA, 0x16BE, 0x56CB, 0x56CB, 0x337A, - 0x56CC, 0x56CC, 0x16F6, 0x56CD, 0x56CD, 0x3481, 0x56D1, 0x56D1, 0x171F, - 0x56D3, 0x56D3, 0x3480, 0x56D4, 0x56D4, 0x34C9, 0x56D6, 0x56D6, 0x488A, - 0x56D7, 0x56D7, 0x1775, 0x56DA, 0x56DA, 0x032D, 0x56DB, 0x56DB, 0x032C, - 0x56DD, 0x56DD, 0x03AC, 0x56DE, 0x56DE, 0x03AB, 0x56DF, 0x56DF, 0x17D0, - 0x56E0, 0x56E0, 0x03AA, 0x56E1, 0x56E1, 0x17CF, 0x56E2, 0x56E2, 0x4548, - 0x56E4, 0x56E4, 0x0463, 0x56E5, 0x56E5, 0x1850, 0x56E7, 0x56E7, 0x184F, - 0x56EA, 0x56EA, 0x0461, 0x56EB, 0x56EB, 0x0464, 0x56ED, 0x56ED, 0x40C4, - 0x56EE, 0x56EE, 0x184E, 0x56EF, 0x56EF, 0x40C3, 0x56F0, 0x56F0, 0x0462, - 0x56F1, 0x56F1, 0x40BF, 0x56F7, 0x56F7, 0x1933, 0x56F9, 0x56F9, 0x1934, - 0x56FA, 0x56FA, 0x0578, 0x56FD, 0x56FD, 0x3D64, 0x56FF, 0x56FF, 0x06E6, - 0x5700, 0x5700, 0x40C2, 0x5701, 0x5702, 0x1C5B, 0x5703, 0x5704, 0x0879, - 0x5707, 0x5707, 0x1E74, 0x5708, 0x5708, 0x0A36, 0x5709, 0x5709, 0x0A38, - 0x570A, 0x570A, 0x1E73, 0x570B, 0x570B, 0x0A37, 0x570C, 0x570C, 0x20D9, - 0x570D, 0x570D, 0x0C16, 0x5712, 0x5713, 0x0DE4, 0x5714, 0x5714, 0x2391, - 0x5715, 0x5715, 0x3E36, 0x5716, 0x5716, 0x0FA1, 0x5718, 0x5718, 0x0FA0, - 0x571A, 0x571A, 0x289F, 0x571B, 0x571B, 0x2B13, 0x571C, 0x571C, 0x2B12, - 0x571D, 0x571D, 0x3A02, 0x571E, 0x571E, 0x3505, 0x571F, 0x571F, 0x027A, - 0x5720, 0x5720, 0x1784, 0x5722, 0x5723, 0x179A, 0x5728, 0x5728, 0x03AF, - 0x5729, 0x5729, 0x03B3, 0x572A, 0x572A, 0x17D2, 0x572C, 0x572C, 0x03B1, - 0x572D, 0x572D, 0x03B0, 0x572E, 0x572E, 0x17D1, 0x572F, 0x572F, 0x03B2, - 0x5730, 0x5730, 0x03AE, 0x5732, 0x5732, 0x3AF9, 0x5733, 0x5733, 0x03AD, - 0x5734, 0x5734, 0x17D3, 0x573B, 0x573B, 0x046E, 0x573E, 0x573E, 0x046B, - 0x573F, 0x573F, 0x4855, 0x5740, 0x5740, 0x0467, 0x5741, 0x5741, 0x1851, - 0x5742, 0x5742, 0x40CC, 0x5743, 0x5743, 0x40DE, 0x5745, 0x5745, 0x1852, - 0x5746, 0x5746, 0x40C8, 0x5747, 0x5747, 0x0469, 0x5749, 0x5749, 0x1854, - 0x574A, 0x574A, 0x0465, 0x574B, 0x574B, 0x1855, 0x574C, 0x574C, 0x1853, - 0x574D, 0x574D, 0x0468, 0x574E, 0x574E, 0x046A, 0x574F, 0x574F, 0x046D, - 0x5750, 0x5750, 0x046C, 0x5751, 0x5751, 0x0466, 0x5752, 0x5752, 0x1856, - 0x5754, 0x5754, 0x4785, 0x5757, 0x5757, 0x47E6, 0x575B, 0x575B, 0x3982, - 0x575F, 0x575F, 0x3FBF, 0x5761, 0x5761, 0x057D, 0x5762, 0x5762, 0x1941, - 0x5764, 0x5764, 0x057F, 0x5766, 0x5766, 0x057E, 0x5767, 0x5767, 0x3F2B, - 0x5768, 0x5768, 0x1942, 0x5769, 0x5769, 0x057C, 0x576A, 0x576A, 0x057B, - 0x576B, 0x576B, 0x1938, 0x576D, 0x576D, 0x1937, 0x576F, 0x576F, 0x1935, - 0x5770, 0x5770, 0x193A, 0x5771, 0x5771, 0x1939, 0x5772, 0x5772, 0x1936, - 0x5773, 0x5774, 0x193F, 0x5775, 0x5775, 0x193D, 0x5776, 0x5776, 0x193B, - 0x5777, 0x5777, 0x057A, 0x577A, 0x577A, 0x3F5F, 0x577B, 0x577B, 0x193E, - 0x577C, 0x577C, 0x0580, 0x577D, 0x577D, 0x1943, 0x577E, 0x577E, 0x46DC, - 0x577F, 0x577F, 0x3A07, 0x5780, 0x5780, 0x193C, 0x5782, 0x5782, 0x06E7, - 0x5783, 0x5783, 0x0579, 0x5788, 0x5788, 0x484B, 0x578A, 0x578A, 0x3C7B, - 0x578B, 0x578B, 0x06E8, 0x578C, 0x578C, 0x1A90, 0x578D, 0x578D, 0x3A06, - 0x578F, 0x578F, 0x1A96, 0x5790, 0x5790, 0x4166, 0x5793, 0x5793, 0x06EE, - 0x5794, 0x5794, 0x1A94, 0x5795, 0x5795, 0x1A9A, 0x5797, 0x5797, 0x1A91, - 0x5798, 0x5798, 0x1A95, 0x5799, 0x5799, 0x1A97, 0x579A, 0x579A, 0x1A99, - 0x579B, 0x579B, 0x1A93, 0x579C, 0x579C, 0x4608, 0x579D, 0x579D, 0x1A92, - 0x579E, 0x579F, 0x1A8D, 0x57A0, 0x57A0, 0x06E9, 0x57A1, 0x57A1, 0x4864, - 0x57A2, 0x57A2, 0x06EB, 0x57A3, 0x57A3, 0x06EA, 0x57A4, 0x57A4, 0x1A8F, - 0x57A5, 0x57A5, 0x1A98, 0x57A7, 0x57A7, 0x4914, 0x57AA, 0x57AA, 0x4905, - 0x57AE, 0x57AE, 0x06ED, 0x57B4, 0x57B4, 0x4741, 0x57B5, 0x57B5, 0x1A8C, - 0x57B6, 0x57B6, 0x1C66, 0x57B8, 0x57B8, 0x1C65, 0x57B9, 0x57B9, 0x1C6A, - 0x57BA, 0x57BA, 0x1C61, 0x57BB, 0x57BB, 0x3C79, 0x57BC, 0x57BC, 0x1C64, - 0x57BD, 0x57BD, 0x1C63, 0x57BE, 0x57BE, 0x372C, 0x57BF, 0x57BF, 0x1C67, - 0x57C1, 0x57C1, 0x1C6B, 0x57C2, 0x57C2, 0x087B, 0x57C3, 0x57C3, 0x087E, - 0x57C4, 0x57C4, 0x3B5B, 0x57C6, 0x57C6, 0x1C62, 0x57C7, 0x57C7, 0x1C68, - 0x57C8, 0x57C8, 0x3D0B, 0x57CB, 0x57CB, 0x087D, 0x57CC, 0x57CC, 0x1C5D, - 0x57CE, 0x57CE, 0x06EC, 0x57CF, 0x57CF, 0x1E82, 0x57D0, 0x57D0, 0x1C69, - 0x57D2, 0x57D2, 0x1C60, 0x57D4, 0x57D4, 0x087C, 0x57D5, 0x57D5, 0x1C5F, - 0x57D7, 0x57D7, 0x3C7D, 0x57DC, 0x57DC, 0x1E79, 0x57DD, 0x57DD, 0x3A05, - 0x57DE, 0x57DE, 0x3F01, 0x57DF, 0x57DF, 0x0A39, 0x57E0, 0x57E0, 0x0A3D, - 0x57E1, 0x57E1, 0x1E89, 0x57E2, 0x57E2, 0x1E77, 0x57E3, 0x57E3, 0x1E85, - 0x57E4, 0x57E4, 0x0A3E, 0x57E5, 0x57E5, 0x1E87, 0x57E6, 0x57E6, 0x40CF, - 0x57E7, 0x57E7, 0x1E8D, 0x57E9, 0x57E9, 0x1E91, 0x57EC, 0x57EC, 0x1E88, - 0x57ED, 0x57ED, 0x1E7C, 0x57EE, 0x57EE, 0x1E84, 0x57EF, 0x57EF, 0x4754, - 0x57F0, 0x57F0, 0x1E92, 0x57F1, 0x57F1, 0x1E90, 0x57F2, 0x57F2, 0x1E86, - 0x57F3, 0x57F3, 0x1E81, 0x57F4, 0x57F4, 0x1E7A, 0x57F5, 0x57F5, 0x20E1, - 0x57F6, 0x57F6, 0x1E78, 0x57F7, 0x57F7, 0x0A42, 0x57F8, 0x57F8, 0x1E7F, - 0x57F9, 0x57F9, 0x0A43, 0x57FA, 0x57FA, 0x0A3F, 0x57FB, 0x57FB, 0x1E75, - 0x57FC, 0x57FC, 0x1E8B, 0x57FD, 0x57FD, 0x1E7D, 0x57FE, 0x57FE, 0x408F, - 0x5800, 0x5800, 0x1E7B, 0x5801, 0x5801, 0x1E8E, 0x5802, 0x5802, 0x0A40, - 0x5803, 0x5803, 0x40D1, 0x5804, 0x5804, 0x1E94, 0x5805, 0x5805, 0x0A3A, - 0x5806, 0x5806, 0x0A3C, 0x5807, 0x5807, 0x1E83, 0x5808, 0x5808, 0x1E7E, - 0x5809, 0x5809, 0x087F, 0x580A, 0x580A, 0x0A3B, 0x580B, 0x580B, 0x1E80, - 0x580C, 0x580C, 0x1E8F, 0x580D, 0x580D, 0x1E93, 0x580E, 0x580E, 0x1E8A, - 0x5810, 0x5810, 0x1E8C, 0x5812, 0x5812, 0x3D0A, 0x5814, 0x5814, 0x1E76, - 0x5819, 0x5819, 0x20DC, 0x581B, 0x581B, 0x20E5, 0x581C, 0x581C, 0x20E4, - 0x581D, 0x581D, 0x0C1E, 0x581E, 0x581E, 0x20DD, 0x5820, 0x5820, 0x0C1F, - 0x5821, 0x5821, 0x0C1D, 0x5822, 0x5822, 0x3C28, 0x5823, 0x5823, 0x20DF, - 0x5824, 0x5824, 0x0C1A, 0x5825, 0x5825, 0x20E3, 0x5826, 0x5826, 0x40D4, - 0x5827, 0x5827, 0x20DE, 0x5828, 0x5828, 0x20E0, 0x5829, 0x5829, 0x20DA, - 0x582A, 0x582A, 0x0C18, 0x582C, 0x582C, 0x20ED, 0x582D, 0x582D, 0x20EC, - 0x582E, 0x582E, 0x20E9, 0x582F, 0x582F, 0x0C17, 0x5830, 0x5831, 0x0C1B, - 0x5832, 0x5832, 0x1C5E, 0x5833, 0x5833, 0x20E6, 0x5834, 0x5834, 0x0C19, - 0x5835, 0x5835, 0x0A41, 0x5836, 0x5836, 0x20E8, 0x5837, 0x5837, 0x20DB, - 0x5838, 0x5838, 0x20EB, 0x5839, 0x5839, 0x20EA, 0x583A, 0x583A, 0x3D72, - 0x583B, 0x583B, 0x20EE, 0x583D, 0x583D, 0x239F, 0x583F, 0x583F, 0x20E7, - 0x5840, 0x5840, 0x3D82, 0x5844, 0x5844, 0x47BB, 0x5847, 0x5847, 0x3AC2, - 0x5848, 0x5848, 0x20E2, 0x5849, 0x5849, 0x2397, 0x584A, 0x584A, 0x0DEF, - 0x584B, 0x584B, 0x0DF2, 0x584C, 0x584C, 0x0DED, 0x584D, 0x584D, 0x2396, - 0x584E, 0x584E, 0x239A, 0x584F, 0x584F, 0x2395, 0x5851, 0x5851, 0x0DE7, - 0x5852, 0x5852, 0x0DF1, 0x5853, 0x5853, 0x2392, 0x5854, 0x5854, 0x0DEB, - 0x5855, 0x5855, 0x2399, 0x5857, 0x5857, 0x0DE9, 0x5858, 0x5858, 0x0DE8, - 0x5859, 0x5859, 0x239C, 0x585A, 0x585A, 0x0DEA, 0x585B, 0x585B, 0x239E, - 0x585C, 0x585C, 0x4949, 0x585D, 0x585D, 0x239B, 0x585E, 0x585E, 0x0DE6, - 0x585F, 0x585F, 0x43DF, 0x5862, 0x5862, 0x0DF0, 0x5863, 0x5863, 0x23A0, - 0x5864, 0x5864, 0x2394, 0x5865, 0x5865, 0x239D, 0x5868, 0x5868, 0x2393, - 0x5869, 0x5869, 0x3D65, 0x586B, 0x586B, 0x0DEC, 0x586C, 0x586C, 0x399A, - 0x586D, 0x586D, 0x0DEE, 0x586F, 0x586F, 0x2398, 0x5871, 0x5871, 0x23A1, - 0x5872, 0x5872, 0x3C26, 0x5873, 0x5873, 0x4355, 0x5874, 0x5874, 0x263F, - 0x5875, 0x5875, 0x0FA2, 0x5876, 0x5876, 0x2645, 0x5879, 0x5879, 0x0FA7, - 0x587A, 0x587A, 0x2641, 0x587B, 0x587B, 0x2648, 0x587C, 0x587C, 0x2639, - 0x587D, 0x587D, 0x0FA9, 0x587E, 0x587E, 0x0FA3, 0x587F, 0x587F, 0x263E, - 0x5880, 0x5880, 0x1121, 0x5881, 0x5881, 0x263D, 0x5882, 0x5882, 0x2646, - 0x5883, 0x5883, 0x0FA4, 0x5885, 0x5885, 0x0FA8, 0x5886, 0x5886, 0x263C, - 0x5887, 0x5887, 0x2642, 0x5888, 0x5888, 0x2647, 0x5889, 0x5889, 0x2638, - 0x588A, 0x588A, 0x0FA6, 0x588B, 0x588B, 0x2640, 0x588E, 0x588E, 0x2644, - 0x588F, 0x588F, 0x264A, 0x5890, 0x5890, 0x263A, 0x5891, 0x5891, 0x2643, - 0x5893, 0x5893, 0x0FA5, 0x5894, 0x5894, 0x2649, 0x5898, 0x5898, 0x263B, - 0x5899, 0x5899, 0x4618, 0x589A, 0x589A, 0x4903, 0x589C, 0x589C, 0x1125, - 0x589D, 0x589D, 0x28A1, 0x589E, 0x589E, 0x1123, 0x589F, 0x589F, 0x1122, - 0x58A0, 0x58A0, 0x28A3, 0x58A1, 0x58A1, 0x28A8, 0x58A3, 0x58A3, 0x28A4, - 0x58A5, 0x58A5, 0x28A7, 0x58A6, 0x58A6, 0x1128, 0x58A7, 0x58A7, 0x3EEB, - 0x58A8, 0x58A8, 0x1288, 0x58A9, 0x58A9, 0x1127, 0x58AA, 0x58AA, 0x40D7, - 0x58AB, 0x58AB, 0x28A0, 0x58AC, 0x58AC, 0x28A6, 0x58AE, 0x58AE, 0x1126, - 0x58AF, 0x58AF, 0x28A5, 0x58B0, 0x58B0, 0x37A4, 0x58B1, 0x58B1, 0x28A2, - 0x58B3, 0x58B3, 0x1124, 0x58B5, 0x58B5, 0x4840, 0x58B6, 0x58B6, 0x3DFD, - 0x58BA, 0x58BA, 0x2B18, 0x58BB, 0x58BB, 0x36EB, 0x58BC, 0x58BC, 0x2B1A, - 0x58BD, 0x58BD, 0x2B15, 0x58BE, 0x58BE, 0x12A4, 0x58BF, 0x58BF, 0x2B17, - 0x58C1, 0x58C1, 0x12A3, 0x58C2, 0x58C2, 0x2B19, 0x58C5, 0x58C5, 0x12A6, - 0x58C6, 0x58C6, 0x2B1B, 0x58C7, 0x58C7, 0x12A5, 0x58C8, 0x58C8, 0x2B14, - 0x58C9, 0x58C9, 0x2B16, 0x58CB, 0x58CB, 0x3A09, 0x58CE, 0x58CE, 0x13C2, - 0x58CF, 0x58CF, 0x2D4D, 0x58D1, 0x58D1, 0x13C1, 0x58D2, 0x58D2, 0x2D4E, - 0x58D3, 0x58D3, 0x13C0, 0x58D4, 0x58D4, 0x2D4C, 0x58D5, 0x58D5, 0x13BF, - 0x58D6, 0x58D6, 0x2D4B, 0x58D8, 0x58D8, 0x14CD, 0x58D9, 0x58D9, 0x14CC, - 0x58DA, 0x58DA, 0x3085, 0x58DB, 0x58DB, 0x3087, 0x58DC, 0x58DC, 0x40DA, - 0x58DD, 0x58DD, 0x3086, 0x58DE, 0x58DF, 0x1578, 0x58E0, 0x58E0, 0x40D9, - 0x58E2, 0x58E2, 0x157A, 0x58E3, 0x58E3, 0x31CB, 0x58E4, 0x58E4, 0x160E, - 0x58E7, 0x58E7, 0x3411, 0x58E8, 0x58E8, 0x3410, 0x58E9, 0x58E9, 0x1720, - 0x58EB, 0x58EB, 0x027B, 0x58EC, 0x58EC, 0x02C1, 0x58EF, 0x58EF, 0x046F, - 0x58F0, 0x58F0, 0x4549, 0x58F2, 0x58F2, 0x3D68, 0x58F3, 0x58F3, 0x3C7A, - 0x58F4, 0x58F4, 0x1A9B, 0x58F9, 0x58FA, 0x0C20, 0x58FB, 0x58FB, 0x40DC, - 0x58FC, 0x58FC, 0x23A2, 0x58FD, 0x58FD, 0x0FAA, 0x58FE, 0x58FE, 0x264B, - 0x58FF, 0x58FF, 0x28A9, 0x5902, 0x5902, 0x0224, 0x5903, 0x5903, 0x1785, - 0x5904, 0x5904, 0x454A, 0x5905, 0x5905, 0x4599, 0x5906, 0x5906, 0x1857, - 0x5907, 0x5907, 0x454B, 0x590A, 0x590A, 0x0224, 0x590C, 0x590C, 0x1944, - 0x590D, 0x590D, 0x1A9C, 0x590E, 0x590E, 0x1C6C, 0x590F, 0x590F, 0x0880, - 0x5911, 0x5911, 0x4274, 0x5912, 0x5912, 0x3088, 0x5914, 0x5914, 0x166D, - 0x5915, 0x5915, 0x027C, 0x5916, 0x5916, 0x032E, 0x5917, 0x5917, 0x179C, - 0x5919, 0x591A, 0x03B4, 0x591C, 0x591C, 0x0581, 0x591F, 0x591F, 0x40E3, - 0x5920, 0x5920, 0x0A44, 0x5922, 0x5922, 0x0FAC, 0x5924, 0x5924, 0x0FAD, - 0x5925, 0x5925, 0x0FAB, 0x5927, 0x5927, 0x027D, 0x5929, 0x5929, 0x02C2, - 0x592A, 0x592A, 0x02C4, 0x592B, 0x592B, 0x02C3, 0x592C, 0x592C, 0x1786, - 0x592D, 0x592D, 0x02C5, 0x592E, 0x592E, 0x032F, 0x592F, 0x592F, 0x179D, - 0x5931, 0x5931, 0x0330, 0x5932, 0x5932, 0x454C, 0x5934, 0x5934, 0x454D, - 0x5937, 0x5938, 0x03B6, 0x593C, 0x593C, 0x17D4, 0x593E, 0x593E, 0x0470, - 0x5940, 0x5940, 0x1858, 0x5944, 0x5944, 0x0585, 0x5945, 0x5945, 0x1945, - 0x5947, 0x5948, 0x0583, 0x5949, 0x5949, 0x0582, 0x594A, 0x594A, 0x1C6D, - 0x594E, 0x594E, 0x06F2, 0x594F, 0x594F, 0x06F1, 0x5950, 0x5950, 0x06F3, - 0x5951, 0x5951, 0x06F0, 0x5953, 0x5953, 0x1A9D, 0x5954, 0x5954, 0x0586, - 0x5955, 0x5955, 0x06EF, 0x5957, 0x5958, 0x0881, 0x595A, 0x595A, 0x0883, - 0x595C, 0x595C, 0x1E95, 0x5960, 0x5960, 0x0C22, 0x5961, 0x5961, 0x20EF, - 0x5962, 0x5962, 0x0A45, 0x5965, 0x5965, 0x4852, 0x5967, 0x5967, 0x0DF3, - 0x5969, 0x5969, 0x0FAF, 0x596A, 0x596A, 0x0FAE, 0x596B, 0x596B, 0x264C, - 0x596D, 0x596D, 0x1129, 0x596E, 0x596E, 0x12A7, 0x5970, 0x5970, 0x2F17, - 0x5971, 0x5971, 0x337B, 0x5972, 0x5972, 0x3412, 0x5973, 0x5973, 0x027E, - 0x5974, 0x5974, 0x0331, 0x5975, 0x5975, 0x3E6A, 0x5976, 0x5976, 0x0332, - 0x5977, 0x5977, 0x17DA, 0x5978, 0x5978, 0x03B9, 0x5979, 0x5979, 0x03BC, - 0x597B, 0x597B, 0x17D8, 0x597C, 0x597C, 0x17D6, 0x597D, 0x597D, 0x03BB, - 0x597E, 0x597E, 0x17D9, 0x597F, 0x597F, 0x17DB, 0x5980, 0x5980, 0x17D5, - 0x5981, 0x5981, 0x03BE, 0x5982, 0x5982, 0x03BD, 0x5983, 0x5983, 0x03BA, - 0x5984, 0x5984, 0x03B8, 0x5985, 0x5985, 0x17D7, 0x5989, 0x5989, 0x3D30, - 0x598A, 0x598A, 0x047B, 0x598D, 0x598D, 0x0478, 0x598E, 0x598E, 0x185D, - 0x598F, 0x598F, 0x1860, 0x5990, 0x5990, 0x185F, 0x5992, 0x5992, 0x0472, - 0x5993, 0x5993, 0x047A, 0x5994, 0x5994, 0x3C99, 0x5996, 0x5996, 0x0477, - 0x5997, 0x5997, 0x185C, 0x5998, 0x5998, 0x185A, 0x5999, 0x5999, 0x0476, - 0x599A, 0x599A, 0x3BB0, 0x599D, 0x599D, 0x0471, 0x599E, 0x599E, 0x0474, - 0x599F, 0x599F, 0x3DAF, 0x59A0, 0x59A0, 0x185B, 0x59A1, 0x59A1, 0x1862, - 0x59A2, 0x59A2, 0x185E, 0x59A3, 0x59A3, 0x0475, 0x59A4, 0x59A4, 0x0479, - 0x59A5, 0x59A5, 0x047C, 0x59A6, 0x59A6, 0x1859, 0x59A7, 0x59A7, 0x1861, - 0x59A8, 0x59A8, 0x0473, 0x59AC, 0x59AC, 0x3D81, 0x59AE, 0x59AE, 0x058B, - 0x59AF, 0x59AF, 0x0593, 0x59B0, 0x59B0, 0x3CD8, 0x59B1, 0x59B1, 0x1951, - 0x59B2, 0x59B2, 0x194A, 0x59B3, 0x59B3, 0x0594, 0x59B4, 0x59B4, 0x1955, - 0x59B5, 0x59B5, 0x1946, 0x59B6, 0x59B6, 0x194D, 0x59B7, 0x59B7, 0x3F2D, - 0x59B8, 0x59B8, 0x3A10, 0x59B9, 0x59B9, 0x058A, 0x59BA, 0x59BA, 0x1947, - 0x59BB, 0x59BB, 0x0588, 0x59BC, 0x59BC, 0x194E, 0x59BD, 0x59BD, 0x1952, - 0x59BE, 0x59BE, 0x0587, 0x59C0, 0x59C0, 0x1953, 0x59C1, 0x59C1, 0x194C, - 0x59C3, 0x59C3, 0x194F, 0x59C4, 0x59C4, 0x3D04, 0x59C5, 0x59C5, 0x0596, - 0x59C6, 0x59C6, 0x058D, 0x59C7, 0x59C7, 0x1956, 0x59C8, 0x59C8, 0x1954, - 0x59C9, 0x59C9, 0x40EC, 0x59CA, 0x59CA, 0x0592, 0x59CB, 0x59CB, 0x0590, - 0x59CC, 0x59CC, 0x194B, 0x59CD, 0x59CD, 0x058F, 0x59CE, 0x59CE, 0x1949, - 0x59CF, 0x59CF, 0x1948, 0x59D0, 0x59D0, 0x058E, 0x59D1, 0x59D1, 0x058C, - 0x59D2, 0x59D2, 0x0595, 0x59D3, 0x59D3, 0x0591, 0x59D4, 0x59D4, 0x0589, - 0x59D6, 0x59D6, 0x1950, 0x59D8, 0x59D8, 0x06F5, 0x59D9, 0x59D9, 0x40F1, - 0x59DA, 0x59DA, 0x06FC, 0x59DB, 0x59DB, 0x1AAB, 0x59DC, 0x59DC, 0x06F4, - 0x59DD, 0x59DD, 0x1AA3, 0x59DE, 0x59DE, 0x1A9F, 0x59E0, 0x59E0, 0x1AAF, - 0x59E1, 0x59E1, 0x1A9E, 0x59E3, 0x59E3, 0x06F7, 0x59E4, 0x59E4, 0x1AA8, - 0x59E5, 0x59E5, 0x06FA, 0x59E6, 0x59E6, 0x06FD, 0x59E8, 0x59E8, 0x06F8, - 0x59E9, 0x59E9, 0x1AAC, 0x59EA, 0x59EA, 0x06FB, 0x59EB, 0x59EB, 0x3D59, - 0x59EC, 0x59EC, 0x088A, 0x59ED, 0x59ED, 0x1AB2, 0x59EE, 0x59EE, 0x1AA0, - 0x59EF, 0x59EF, 0x3D38, 0x59F0, 0x59F0, 0x3BB2, 0x59F1, 0x59F1, 0x1AA2, - 0x59F2, 0x59F2, 0x1AA9, 0x59F3, 0x59F3, 0x1AAD, 0x59F4, 0x59F4, 0x1AB1, - 0x59F5, 0x59F5, 0x1AAE, 0x59F6, 0x59F6, 0x1AA7, 0x59F7, 0x59F7, 0x1AAA, - 0x59F8, 0x59F8, 0x3E4A, 0x59F9, 0x59F9, 0x40F8, 0x59FA, 0x59FA, 0x1AA4, - 0x59FB, 0x59FB, 0x06FF, 0x59FC, 0x59FC, 0x1AA6, 0x59FD, 0x59FD, 0x1AA5, - 0x59FE, 0x59FE, 0x1AB0, 0x59FF, 0x59FF, 0x06F6, 0x5A00, 0x5A00, 0x1AA1, - 0x5A01, 0x5A01, 0x06FE, 0x5A02, 0x5A02, 0x3B8D, 0x5A03, 0x5A03, 0x06F9, - 0x5A09, 0x5A09, 0x0890, 0x5A0A, 0x5A0A, 0x1C75, 0x5A0B, 0x5A0B, 0x3C89, - 0x5A0C, 0x5A0C, 0x088F, 0x5A0D, 0x5A0D, 0x3B38, 0x5A0F, 0x5A0F, 0x1C73, - 0x5A11, 0x5A11, 0x0884, 0x5A12, 0x5A12, 0x3A13, 0x5A13, 0x5A13, 0x0889, - 0x5A15, 0x5A15, 0x1C72, 0x5A16, 0x5A16, 0x1C6F, 0x5A17, 0x5A17, 0x1C74, - 0x5A18, 0x5A18, 0x0885, 0x5A19, 0x5A19, 0x1C6E, 0x5A1B, 0x5A1B, 0x0888, - 0x5A1C, 0x5A1C, 0x0886, 0x5A1E, 0x5A1E, 0x1C76, 0x5A1F, 0x5A1F, 0x0887, - 0x5A20, 0x5A20, 0x088B, 0x5A21, 0x5A21, 0x3A1B, 0x5A23, 0x5A23, 0x088C, - 0x5A24, 0x5A24, 0x40E8, 0x5A25, 0x5A25, 0x088E, 0x5A27, 0x5A27, 0x3DE1, - 0x5A29, 0x5A29, 0x088D, 0x5A2A, 0x5A2A, 0x3B3B, 0x5A2B, 0x5A2B, 0x3D40, - 0x5A2C, 0x5A2C, 0x3A0F, 0x5A2D, 0x5A2E, 0x1C70, 0x5A33, 0x5A33, 0x1C77, - 0x5A35, 0x5A35, 0x1E9C, 0x5A36, 0x5A36, 0x0A46, 0x5A37, 0x5A37, 0x20FD, - 0x5A38, 0x5A38, 0x1E9B, 0x5A39, 0x5A39, 0x1EAE, 0x5A3C, 0x5A3C, 0x0A4C, - 0x5A3D, 0x5A3D, 0x3AC0, 0x5A3E, 0x5A3E, 0x1EAC, 0x5A40, 0x5A40, 0x0A4B, - 0x5A41, 0x5A41, 0x0A47, 0x5A42, 0x5A42, 0x1EB5, 0x5A43, 0x5A43, 0x1EA5, - 0x5A44, 0x5A44, 0x1EA8, 0x5A45, 0x5A45, 0x3917, 0x5A46, 0x5A46, 0x0A4F, - 0x5A47, 0x5A47, 0x1EB2, 0x5A48, 0x5A48, 0x1EAA, 0x5A49, 0x5A49, 0x0A48, - 0x5A4A, 0x5A4A, 0x0A50, 0x5A4C, 0x5A4C, 0x1EAF, 0x5A4D, 0x5A4D, 0x1EAD, - 0x5A50, 0x5A50, 0x1E9E, 0x5A51, 0x5A51, 0x1EB3, 0x5A52, 0x5A52, 0x1EA7, - 0x5A53, 0x5A53, 0x1EA2, 0x5A54, 0x5A54, 0x4603, 0x5A55, 0x5A55, 0x1E98, - 0x5A56, 0x5A56, 0x1EB4, 0x5A57, 0x5A57, 0x1EA4, 0x5A58, 0x5A58, 0x1E97, - 0x5A59, 0x5A59, 0x3B34, 0x5A5A, 0x5A5A, 0x0A4E, 0x5A5B, 0x5A5B, 0x1EA9, - 0x5A5C, 0x5A5C, 0x1EB6, 0x5A5D, 0x5A5D, 0x1EA6, 0x5A5E, 0x5A5E, 0x1E9A, - 0x5A5F, 0x5A5F, 0x1E9F, 0x5A60, 0x5A60, 0x1E96, 0x5A61, 0x5A61, 0x3D33, - 0x5A62, 0x5A62, 0x0A4D, 0x5A63, 0x5A63, 0x40FB, 0x5A64, 0x5A64, 0x1EA3, - 0x5A65, 0x5A65, 0x1EA0, 0x5A66, 0x5A66, 0x0A49, 0x5A67, 0x5A67, 0x1E99, - 0x5A68, 0x5A68, 0x39B7, 0x5A69, 0x5A69, 0x1EB1, 0x5A6A, 0x5A6A, 0x0A4A, - 0x5A6B, 0x5A6B, 0x3A42, 0x5A6C, 0x5A6C, 0x1EA1, 0x5A6D, 0x5A6D, 0x1E9D, - 0x5A6E, 0x5A6E, 0x3D3F, 0x5A70, 0x5A70, 0x1EB0, 0x5A71, 0x5A71, 0x3D34, - 0x5A77, 0x5A77, 0x0C23, 0x5A78, 0x5A78, 0x20F6, 0x5A79, 0x5A79, 0x3CE1, - 0x5A7A, 0x5A7A, 0x20F3, 0x5A7B, 0x5A7B, 0x2104, 0x5A7C, 0x5A7C, 0x20F8, - 0x5A7D, 0x5A7D, 0x2105, 0x5A7E, 0x5A7E, 0x3A11, 0x5A7F, 0x5A7F, 0x0C25, - 0x5A81, 0x5A81, 0x3A1D, 0x5A82, 0x5A82, 0x3D31, 0x5A83, 0x5A83, 0x2101, - 0x5A84, 0x5A84, 0x20FE, 0x5A86, 0x5A86, 0x3B81, 0x5A88, 0x5A88, 0x4263, - 0x5A8A, 0x5A8A, 0x20FF, 0x5A8B, 0x5A8B, 0x2102, 0x5A8C, 0x5A8C, 0x2106, - 0x5A8E, 0x5A8E, 0x1EAB, 0x5A8F, 0x5A8F, 0x2108, 0x5A90, 0x5A90, 0x23B6, - 0x5A91, 0x5A91, 0x4235, 0x5A92, 0x5A92, 0x0C26, 0x5A93, 0x5A93, 0x2109, - 0x5A94, 0x5A94, 0x20F1, 0x5A95, 0x5A95, 0x20FB, 0x5A96, 0x5A96, 0x4100, - 0x5A97, 0x5A97, 0x2100, 0x5A99, 0x5A99, 0x3A0A, 0x5A9A, 0x5A9A, 0x0C24, - 0x5A9B, 0x5A9B, 0x0C27, 0x5A9C, 0x5A9C, 0x2107, 0x5A9D, 0x5A9D, 0x210A, - 0x5A9E, 0x5A9E, 0x20F5, 0x5A9F, 0x5A9F, 0x20F2, 0x5AA0, 0x5AA0, 0x4172, - 0x5AA1, 0x5AA1, 0x3CDC, 0x5AA2, 0x5AA2, 0x20F4, 0x5AA5, 0x5AA5, 0x20F9, - 0x5AA6, 0x5AA6, 0x20F7, 0x5AA7, 0x5AA7, 0x0C28, 0x5AA9, 0x5AA9, 0x2103, - 0x5AAB, 0x5AAB, 0x40FA, 0x5AAC, 0x5AAC, 0x20FA, 0x5AAE, 0x5AAE, 0x20FC, - 0x5AAF, 0x5AAF, 0x20F0, 0x5AB0, 0x5AB0, 0x23AA, 0x5AB1, 0x5AB1, 0x23A8, - 0x5AB2, 0x5AB2, 0x0DFC, 0x5AB3, 0x5AB3, 0x0DFA, 0x5AB4, 0x5AB4, 0x23B2, - 0x5AB5, 0x5AB5, 0x23A9, 0x5AB6, 0x5AB6, 0x23B3, 0x5AB7, 0x5AB7, 0x23AF, - 0x5AB8, 0x5AB8, 0x23A7, 0x5AB9, 0x5AB9, 0x23B5, 0x5ABA, 0x5ABA, 0x23A6, - 0x5ABB, 0x5ABB, 0x23AD, 0x5ABC, 0x5ABC, 0x0DF9, 0x5ABD, 0x5ABD, 0x0DF8, - 0x5ABE, 0x5ABE, 0x0DF7, 0x5ABF, 0x5ABF, 0x23AB, 0x5AC0, 0x5AC0, 0x23B0, - 0x5AC1, 0x5AC1, 0x0DF4, 0x5AC2, 0x5AC2, 0x0DFB, 0x5AC3, 0x5AC3, 0x3896, - 0x5AC4, 0x5AC4, 0x23A4, 0x5AC6, 0x5AC6, 0x23AE, 0x5AC7, 0x5AC7, 0x23A3, - 0x5AC8, 0x5AC8, 0x23AC, 0x5AC9, 0x5AC9, 0x0DF5, 0x5ACA, 0x5ACA, 0x23B1, - 0x5ACB, 0x5ACB, 0x23A5, 0x5ACC, 0x5ACC, 0x0DF6, 0x5ACD, 0x5ACD, 0x23B4, - 0x5ACE, 0x5ACE, 0x3C88, 0x5ACF, 0x5ACF, 0x43B5, 0x5AD3, 0x5AD3, 0x4102, - 0x5AD5, 0x5AD5, 0x2650, 0x5AD6, 0x5AD6, 0x0FB4, 0x5AD7, 0x5AD7, 0x0FB3, - 0x5AD8, 0x5AD8, 0x0FB5, 0x5AD9, 0x5AD9, 0x265C, 0x5ADA, 0x5ADA, 0x2652, - 0x5ADB, 0x5ADB, 0x2658, 0x5ADC, 0x5ADC, 0x264D, 0x5ADD, 0x5ADD, 0x265B, - 0x5ADE, 0x5ADE, 0x265A, 0x5ADF, 0x5ADF, 0x265E, 0x5AE0, 0x5AE0, 0x2657, - 0x5AE1, 0x5AE1, 0x0FB0, 0x5AE2, 0x5AE2, 0x2656, 0x5AE3, 0x5AE3, 0x0FB6, - 0x5AE4, 0x5AE4, 0x3B86, 0x5AE5, 0x5AE5, 0x264F, 0x5AE6, 0x5AE6, 0x0FB1, - 0x5AE8, 0x5AE8, 0x265D, 0x5AE9, 0x5AE9, 0x0FB2, 0x5AEA, 0x5AEA, 0x2651, - 0x5AEB, 0x5AEB, 0x2654, 0x5AEC, 0x5AEC, 0x2659, 0x5AED, 0x5AED, 0x2653, - 0x5AEE, 0x5AEE, 0x264E, 0x5AF0, 0x5AF0, 0x3EE7, 0x5AF2, 0x5AF2, 0x37F5, - 0x5AF3, 0x5AF3, 0x2655, 0x5AF4, 0x5AF4, 0x28AB, 0x5AF5, 0x5AF5, 0x112D, - 0x5AF6, 0x5AF6, 0x28AE, 0x5AF7, 0x5AF7, 0x28AD, 0x5AF8, 0x5AF8, 0x28B0, - 0x5AF9, 0x5AF9, 0x28B2, 0x5AFA, 0x5AFA, 0x36EE, 0x5AFB, 0x5AFB, 0x112B, - 0x5AFD, 0x5AFD, 0x28AC, 0x5AFE, 0x5AFE, 0x3C1D, 0x5AFF, 0x5AFF, 0x28AA, - 0x5B01, 0x5B01, 0x28B3, 0x5B02, 0x5B02, 0x28B1, 0x5B03, 0x5B03, 0x28AF, - 0x5B05, 0x5B05, 0x28B5, 0x5B07, 0x5B07, 0x28B4, 0x5B08, 0x5B08, 0x112F, - 0x5B09, 0x5B09, 0x112A, 0x5B0B, 0x5B0B, 0x112C, 0x5B0C, 0x5B0C, 0x112E, - 0x5B0D, 0x5B0D, 0x48FF, 0x5B0F, 0x5B0F, 0x28B6, 0x5B10, 0x5B10, 0x2B22, - 0x5B11, 0x5B11, 0x3BF6, 0x5B13, 0x5B13, 0x2B21, 0x5B14, 0x5B14, 0x2B20, - 0x5B16, 0x5B16, 0x2B23, 0x5B17, 0x5B17, 0x2B1C, 0x5B19, 0x5B19, 0x2B1D, - 0x5B1A, 0x5B1A, 0x2B25, 0x5B1B, 0x5B1B, 0x2B1E, 0x5B1D, 0x5B1D, 0x12A8, - 0x5B1E, 0x5B1E, 0x2B27, 0x5B1F, 0x5B1F, 0x4941, 0x5B20, 0x5B20, 0x2B26, - 0x5B21, 0x5B21, 0x2B1F, 0x5B23, 0x5B23, 0x2D52, 0x5B24, 0x5B24, 0x13C5, - 0x5B25, 0x5B25, 0x2D50, 0x5B26, 0x5B26, 0x2D55, 0x5B27, 0x5B27, 0x2D54, - 0x5B28, 0x5B28, 0x2B24, 0x5B2A, 0x5B2A, 0x13C4, 0x5B2B, 0x5B2B, 0x3B84, - 0x5B2C, 0x5B2C, 0x2D53, 0x5B2D, 0x5B2D, 0x2D4F, 0x5B2E, 0x5B2E, 0x2D57, - 0x5B2F, 0x5B2F, 0x2D56, 0x5B30, 0x5B30, 0x13C3, 0x5B32, 0x5B32, 0x2D51, - 0x5B34, 0x5B34, 0x12A9, 0x5B38, 0x5B38, 0x14CE, 0x5B3C, 0x5B3C, 0x2F18, - 0x5B3D, 0x5B3F, 0x3089, 0x5B40, 0x5B40, 0x160F, 0x5B41, 0x5B41, 0x38C8, - 0x5B43, 0x5B43, 0x1610, 0x5B44, 0x5B44, 0x3A44, 0x5B45, 0x5B45, 0x31CC, - 0x5B46, 0x5B46, 0x42B2, 0x5B47, 0x5B47, 0x32CD, 0x5B48, 0x5B48, 0x32CC, - 0x5B4A, 0x5B4A, 0x38CD, 0x5B4B, 0x5B4C, 0x337C, 0x5B4D, 0x5B4D, 0x3413, - 0x5B4E, 0x5B4E, 0x3482, 0x5B4F, 0x5B4F, 0x3A31, 0x5B50, 0x5B51, 0x027F, - 0x5B53, 0x5B53, 0x0281, 0x5B54, 0x5B54, 0x02C6, 0x5B55, 0x5B55, 0x0333, - 0x5B56, 0x5B56, 0x17DC, 0x5B57, 0x5B58, 0x03BF, 0x5B5A, 0x5B5B, 0x047F, - 0x5B5C, 0x5B5C, 0x047E, 0x5B5D, 0x5B5D, 0x047D, 0x5B5F, 0x5B5F, 0x0597, - 0x5B62, 0x5B62, 0x1957, 0x5B63, 0x5B63, 0x0599, 0x5B64, 0x5B64, 0x0598, - 0x5B65, 0x5B65, 0x1958, 0x5B66, 0x5B66, 0x454E, 0x5B68, 0x5B68, 0x461D, - 0x5B69, 0x5B69, 0x0700, 0x5B6B, 0x5B6B, 0x0891, 0x5B6C, 0x5B6C, 0x1C78, - 0x5B6D, 0x5B6D, 0x3E5F, 0x5B6E, 0x5B6E, 0x1EB8, 0x5B70, 0x5B70, 0x0A51, - 0x5B71, 0x5B71, 0x0C2A, 0x5B72, 0x5B72, 0x1EB7, 0x5B73, 0x5B73, 0x0C29, - 0x5B74, 0x5B74, 0x3732, 0x5B75, 0x5B75, 0x0FB7, 0x5B76, 0x5B76, 0x410A, - 0x5B77, 0x5B77, 0x265F, 0x5B78, 0x5B78, 0x12AA, 0x5B7A, 0x5B7A, 0x13C6, - 0x5B7B, 0x5B7B, 0x2D58, 0x5B7C, 0x5B7C, 0x410C, 0x5B7D, 0x5B7D, 0x1611, - 0x5B7F, 0x5B7F, 0x16C0, 0x5B80, 0x5B80, 0x0225, 0x5B81, 0x5B81, 0x179E, - 0x5B82, 0x5B82, 0x4044, 0x5B83, 0x5B83, 0x0334, 0x5B84, 0x5B84, 0x179F, - 0x5B85, 0x5B85, 0x03C3, 0x5B87, 0x5B88, 0x03C1, 0x5B89, 0x5B89, 0x03C4, - 0x5B8B, 0x5B8B, 0x0482, 0x5B8C, 0x5B8C, 0x0481, 0x5B8E, 0x5B8E, 0x1863, - 0x5B8F, 0x5B8F, 0x0483, 0x5B90, 0x5B90, 0x48E9, 0x5B92, 0x5B92, 0x1864, - 0x5B93, 0x5B93, 0x1959, 0x5B95, 0x5B95, 0x195A, 0x5B97, 0x5B97, 0x059A, - 0x5B98, 0x5B98, 0x059C, 0x5B99, 0x5B99, 0x059E, 0x5B9A, 0x5B9A, 0x059B, - 0x5B9B, 0x5B9B, 0x059F, 0x5B9C, 0x5B9C, 0x059D, 0x5B9D, 0x5B9D, 0x4116, - 0x5B9E, 0x5B9F, 0x454F, 0x5BA2, 0x5BA2, 0x0704, 0x5BA3, 0x5BA3, 0x0701, - 0x5BA4, 0x5BA4, 0x0703, 0x5BA5, 0x5BA5, 0x0705, 0x5BA6, 0x5BA6, 0x0702, - 0x5BA7, 0x5BA7, 0x1C79, 0x5BA8, 0x5BA8, 0x1AB3, 0x5BAA, 0x5BAA, 0x417B, - 0x5BAC, 0x5BAC, 0x1C7B, 0x5BAD, 0x5BAD, 0x1C7A, 0x5BAE, 0x5BAE, 0x0897, - 0x5BB0, 0x5BB0, 0x0893, 0x5BB3, 0x5BB3, 0x0894, 0x5BB4, 0x5BB4, 0x0896, - 0x5BB5, 0x5BB5, 0x0898, 0x5BB6, 0x5BB6, 0x0895, 0x5BB8, 0x5BB8, 0x089A, - 0x5BB9, 0x5BB9, 0x0899, 0x5BBF, 0x5BBF, 0x0A56, 0x5BC0, 0x5BC0, 0x1EBA, - 0x5BC1, 0x5BC1, 0x1EB9, 0x5BC2, 0x5BC2, 0x0A55, 0x5BC3, 0x5BC3, 0x3F25, - 0x5BC4, 0x5BC4, 0x0A54, 0x5BC5, 0x5BC5, 0x0A53, 0x5BC6, 0x5BC6, 0x0A57, - 0x5BC7, 0x5BC7, 0x0A52, 0x5BCA, 0x5BCA, 0x2110, 0x5BCB, 0x5BCB, 0x210D, - 0x5BCC, 0x5BCC, 0x0C2C, 0x5BCD, 0x5BCD, 0x210C, 0x5BCE, 0x5BCE, 0x2111, - 0x5BD0, 0x5BD0, 0x0C2E, 0x5BD1, 0x5BD1, 0x210F, 0x5BD2, 0x5BD2, 0x0C2B, - 0x5BD3, 0x5BD3, 0x0C2D, 0x5BD4, 0x5BD4, 0x210E, 0x5BD5, 0x5BD5, 0x4111, - 0x5BD6, 0x5BD6, 0x23B7, 0x5BD7, 0x5BD7, 0x42BB, 0x5BD8, 0x5BD9, 0x23B8, - 0x5BDE, 0x5BDE, 0x0FB8, 0x5BDF, 0x5BDF, 0x0FC0, 0x5BE0, 0x5BE0, 0x2660, - 0x5BE1, 0x5BE1, 0x0FBA, 0x5BE2, 0x5BE2, 0x0FBE, 0x5BE3, 0x5BE3, 0x2661, - 0x5BE4, 0x5BE4, 0x0FBF, 0x5BE5, 0x5BE6, 0x0FBB, 0x5BE7, 0x5BE7, 0x0FB9, - 0x5BE8, 0x5BE8, 0x0FBD, 0x5BE9, 0x5BE9, 0x1132, 0x5BEA, 0x5BEA, 0x210B, - 0x5BEB, 0x5BEB, 0x1133, 0x5BEC, 0x5BEC, 0x1131, 0x5BEE, 0x5BEE, 0x1130, - 0x5BEF, 0x5BEF, 0x2B28, 0x5BF0, 0x5BF0, 0x12AB, 0x5BF1, 0x5BF2, 0x2D59, - 0x5BF3, 0x5BF3, 0x4115, 0x5BF5, 0x5BF5, 0x157B, 0x5BF6, 0x5BF6, 0x1612, - 0x5BF8, 0x5BF8, 0x0282, 0x5BFA, 0x5BFA, 0x03C5, 0x5BFF, 0x5BFF, 0x40DD, - 0x5C01, 0x5C01, 0x0706, 0x5C03, 0x5C03, 0x1C7C, 0x5C04, 0x5C04, 0x089B, - 0x5C05, 0x5C05, 0x4118, 0x5C07, 0x5C07, 0x0A5A, 0x5C08, 0x5C08, 0x0A59, - 0x5C09, 0x5C09, 0x0A58, 0x5C0A, 0x5C0B, 0x0C2F, 0x5C0C, 0x5C0C, 0x2112, - 0x5C0D, 0x5C0D, 0x0FC1, 0x5C0E, 0x5C0E, 0x12AC, 0x5C0F, 0x5C0F, 0x0283, - 0x5C10, 0x5C10, 0x1787, 0x5C11, 0x5C11, 0x02C7, 0x5C12, 0x5C12, 0x17A0, - 0x5C13, 0x5C13, 0x411A, 0x5C14, 0x5C14, 0x411C, 0x5C15, 0x5C15, 0x17DD, - 0x5C16, 0x5C16, 0x03C6, 0x5C1A, 0x5C1A, 0x05A0, 0x5C1C, 0x5C1C, 0x45EA, - 0x5C1E, 0x5C1E, 0x3A29, 0x5C1F, 0x5C1F, 0x23BA, 0x5C20, 0x5C20, 0x3D89, - 0x5C22, 0x5C22, 0x0284, 0x5C23, 0x5C23, 0x44E8, 0x5C24, 0x5C24, 0x02C8, - 0x5C25, 0x5C25, 0x17DE, 0x5C28, 0x5C28, 0x1865, 0x5C2A, 0x5C2A, 0x1866, - 0x5C2C, 0x5C2C, 0x0484, 0x5C30, 0x5C30, 0x2113, 0x5C31, 0x5C31, 0x0C31, - 0x5C33, 0x5C33, 0x23BB, 0x5C37, 0x5C37, 0x13C7, 0x5C38, 0x5C38, 0x0285, - 0x5C39, 0x5C39, 0x0299, 0x5C3A, 0x5C3A, 0x02C9, 0x5C3B, 0x5C3B, 0x17A1, - 0x5C3C, 0x5C3C, 0x0335, 0x5C3E, 0x5C3E, 0x0488, 0x5C3F, 0x5C3F, 0x0487, - 0x5C40, 0x5C41, 0x0485, 0x5C44, 0x5C44, 0x195B, 0x5C45, 0x5C46, 0x05A2, - 0x5C47, 0x5C47, 0x195C, 0x5C48, 0x5C48, 0x05A1, 0x5C49, 0x5C49, 0x411F, - 0x5C4A, 0x5C4A, 0x3F5C, 0x5C4B, 0x5C4B, 0x070A, 0x5C4C, 0x5C4C, 0x1AB4, - 0x5C4D, 0x5C4D, 0x0709, 0x5C4E, 0x5C4F, 0x0707, 0x5C50, 0x5C50, 0x089E, - 0x5C51, 0x5C51, 0x089C, 0x5C53, 0x5C53, 0x3F02, 0x5C54, 0x5C54, 0x1C7E, - 0x5C55, 0x5C55, 0x089D, 0x5C56, 0x5C56, 0x1C7D, 0x5C58, 0x5C58, 0x0892, - 0x5C59, 0x5C59, 0x1EBB, 0x5C5C, 0x5C5D, 0x0A5C, 0x5C5E, 0x5C5E, 0x3D67, - 0x5C60, 0x5C60, 0x0A5B, 0x5C62, 0x5C62, 0x0FC2, 0x5C63, 0x5C63, 0x2662, - 0x5C64, 0x5C65, 0x1134, 0x5C67, 0x5C67, 0x28B7, 0x5C68, 0x5C68, 0x13C8, - 0x5C69, 0x5C6A, 0x2F19, 0x5C6C, 0x5C6C, 0x166E, 0x5C6D, 0x5C6D, 0x3483, - 0x5C6E, 0x5C6E, 0x1776, 0x5C6F, 0x5C6F, 0x02CA, 0x5C71, 0x5C71, 0x0286, - 0x5C73, 0x5C73, 0x17A3, 0x5C74, 0x5C74, 0x17A2, 0x5C79, 0x5C79, 0x03C7, - 0x5C7A, 0x5C7B, 0x17E0, 0x5C7C, 0x5C7C, 0x17DF, 0x5C7E, 0x5C7E, 0x17E2, - 0x5C85, 0x5C85, 0x4121, 0x5C86, 0x5C86, 0x186E, 0x5C88, 0x5C88, 0x1869, - 0x5C89, 0x5C89, 0x186B, 0x5C8A, 0x5C8A, 0x186D, 0x5C8B, 0x5C8B, 0x186A, - 0x5C8C, 0x5C8C, 0x048C, 0x5C8D, 0x5C8D, 0x1867, 0x5C8F, 0x5C8F, 0x1868, - 0x5C90, 0x5C91, 0x0489, 0x5C92, 0x5C92, 0x186C, 0x5C93, 0x5C93, 0x186F, - 0x5C94, 0x5C94, 0x048B, 0x5C95, 0x5C95, 0x1870, 0x5C99, 0x5C99, 0x468C, - 0x5C9A, 0x5C9A, 0x4551, 0x5C9C, 0x5C9C, 0x495A, 0x5C9D, 0x5C9D, 0x196A, - 0x5C9E, 0x5C9E, 0x3A2A, 0x5C9F, 0x5C9F, 0x1964, 0x5CA0, 0x5CA0, 0x195F, - 0x5CA1, 0x5CA1, 0x05A5, 0x5CA2, 0x5CA2, 0x1967, 0x5CA3, 0x5CA3, 0x1965, - 0x5CA4, 0x5CA4, 0x195E, 0x5CA5, 0x5CA5, 0x196B, 0x5CA6, 0x5CA6, 0x196E, - 0x5CA7, 0x5CA7, 0x1969, 0x5CA8, 0x5CA8, 0x1962, 0x5CA9, 0x5CA9, 0x05A7, - 0x5CAA, 0x5CAA, 0x1968, 0x5CAB, 0x5CAB, 0x05A8, 0x5CAC, 0x5CAC, 0x1963, - 0x5CAD, 0x5CAD, 0x1966, 0x5CAE, 0x5CAE, 0x195D, 0x5CAF, 0x5CAF, 0x1961, - 0x5CB0, 0x5CB0, 0x196D, 0x5CB1, 0x5CB1, 0x05A9, 0x5CB3, 0x5CB3, 0x05AA, - 0x5CB5, 0x5CB5, 0x1960, 0x5CB6, 0x5CB6, 0x196C, 0x5CB7, 0x5CB7, 0x05A4, - 0x5CB8, 0x5CB8, 0x05A6, 0x5CBA, 0x5CBA, 0x412B, 0x5CC1, 0x5CC1, 0x43B8, - 0x5CC2, 0x5CC2, 0x3D4C, 0x5CC6, 0x5CC6, 0x1AC5, 0x5CC7, 0x5CC7, 0x1ABE, - 0x5CC8, 0x5CC8, 0x1AC4, 0x5CC9, 0x5CC9, 0x1ABD, 0x5CCA, 0x5CCA, 0x1ABF, - 0x5CCB, 0x5CCB, 0x1AB9, 0x5CCC, 0x5CCC, 0x1AB7, 0x5CCE, 0x5CCE, 0x1AC6, - 0x5CCF, 0x5CCF, 0x1AC3, 0x5CD0, 0x5CD0, 0x1AB5, 0x5CD1, 0x5CD1, 0x3F13, - 0x5CD2, 0x5CD2, 0x070C, 0x5CD3, 0x5CD4, 0x1AC1, 0x5CD6, 0x5CD6, 0x1AC0, - 0x5CD7, 0x5CD7, 0x1AB8, 0x5CD8, 0x5CD8, 0x1AB6, 0x5CD9, 0x5CD9, 0x070B, - 0x5CDA, 0x5CDA, 0x1ABC, 0x5CDB, 0x5CDB, 0x1ABA, 0x5CDE, 0x5CDE, 0x1ABB, - 0x5CDF, 0x5CDF, 0x1AC7, 0x5CE5, 0x5CE5, 0x4637, 0x5CE8, 0x5CE8, 0x08A3, - 0x5CE9, 0x5CE9, 0x4122, 0x5CEA, 0x5CEA, 0x08A2, 0x5CEC, 0x5CEC, 0x1C7F, - 0x5CED, 0x5CED, 0x089F, 0x5CEE, 0x5CEE, 0x1C81, 0x5CEF, 0x5CEF, 0x4123, - 0x5CF0, 0x5CF0, 0x08A4, 0x5CF1, 0x5CF1, 0x1C82, 0x5CF4, 0x5CF4, 0x08A7, - 0x5CF6, 0x5CF6, 0x08A5, 0x5CF7, 0x5CF7, 0x1C83, 0x5CF8, 0x5CF8, 0x1AC8, - 0x5CF9, 0x5CF9, 0x1C85, 0x5CFB, 0x5CFB, 0x08A1, 0x5CFD, 0x5CFD, 0x08A0, - 0x5CFF, 0x5CFF, 0x1C80, 0x5D00, 0x5D00, 0x1C84, 0x5D01, 0x5D01, 0x08A6, - 0x5D06, 0x5D06, 0x0A5F, 0x5D07, 0x5D07, 0x0A5E, 0x5D0B, 0x5D0B, 0x1EBD, - 0x5D0C, 0x5D0C, 0x1EC1, 0x5D0D, 0x5D0D, 0x1EC3, 0x5D0E, 0x5D0E, 0x0A60, - 0x5D0F, 0x5D0F, 0x1EC6, 0x5D10, 0x5D10, 0x4127, 0x5D11, 0x5D11, 0x0A64, - 0x5D12, 0x5D12, 0x1EC8, 0x5D14, 0x5D14, 0x0A66, 0x5D15, 0x5D15, 0x43B9, - 0x5D16, 0x5D16, 0x0A62, 0x5D17, 0x5D17, 0x0A6A, 0x5D18, 0x5D18, 0x4128, - 0x5D19, 0x5D19, 0x0A67, 0x5D1A, 0x5D1A, 0x1EBF, 0x5D1B, 0x5D1B, 0x0A61, - 0x5D1D, 0x5D1D, 0x1EBE, 0x5D1E, 0x5D1E, 0x1EBC, 0x5D1F, 0x5D1F, 0x1ECA, - 0x5D20, 0x5D20, 0x1EC0, 0x5D22, 0x5D22, 0x0A63, 0x5D23, 0x5D23, 0x1EC9, - 0x5D24, 0x5D24, 0x0A68, 0x5D25, 0x5D25, 0x1EC5, 0x5D26, 0x5D26, 0x1EC4, - 0x5D27, 0x5D27, 0x0A69, 0x5D28, 0x5D28, 0x1EC2, 0x5D29, 0x5D29, 0x0A65, - 0x5D2C, 0x5D2C, 0x3DF7, 0x5D2E, 0x5D2E, 0x1ECB, 0x5D2F, 0x5D2F, 0x46D3, - 0x5D30, 0x5D30, 0x1EC7, 0x5D31, 0x5D31, 0x2122, 0x5D32, 0x5D32, 0x2129, - 0x5D33, 0x5D33, 0x211E, 0x5D34, 0x5D34, 0x0C34, 0x5D35, 0x5D35, 0x211A, - 0x5D36, 0x5D36, 0x212A, 0x5D37, 0x5D37, 0x2114, 0x5D38, 0x5D38, 0x2127, - 0x5D39, 0x5D39, 0x2125, 0x5D3A, 0x5D3A, 0x211F, 0x5D3C, 0x5D3C, 0x2128, - 0x5D3D, 0x5D3D, 0x2121, 0x5D3E, 0x5D3E, 0x4629, 0x5D3F, 0x5D3F, 0x2119, - 0x5D40, 0x5D40, 0x212B, 0x5D41, 0x5D41, 0x2117, 0x5D42, 0x5D42, 0x2124, - 0x5D43, 0x5D43, 0x2115, 0x5D45, 0x5D45, 0x212C, 0x5D46, 0x5D46, 0x4129, - 0x5D47, 0x5D47, 0x0C35, 0x5D48, 0x5D48, 0x462A, 0x5D49, 0x5D49, 0x2126, - 0x5D4A, 0x5D4A, 0x23BE, 0x5D4B, 0x5D4B, 0x2118, 0x5D4C, 0x5D4C, 0x0C32, - 0x5D4E, 0x5D4E, 0x211C, 0x5D50, 0x5D50, 0x0C33, 0x5D51, 0x5D51, 0x211B, - 0x5D52, 0x5D52, 0x2120, 0x5D55, 0x5D55, 0x211D, 0x5D56, 0x5D56, 0x43BA, - 0x5D57, 0x5D57, 0x3FCA, 0x5D59, 0x5D59, 0x2123, 0x5D5B, 0x5D5B, 0x3DD5, - 0x5D5E, 0x5D5E, 0x23C2, 0x5D62, 0x5D62, 0x23C5, 0x5D63, 0x5D63, 0x23BD, - 0x5D65, 0x5D65, 0x23BF, 0x5D67, 0x5D67, 0x23C4, 0x5D68, 0x5D68, 0x23C3, - 0x5D69, 0x5D69, 0x0DFD, 0x5D6B, 0x5D6B, 0x2116, 0x5D6C, 0x5D6C, 0x23C1, - 0x5D6F, 0x5D6F, 0x0DFE, 0x5D70, 0x5D70, 0x46E4, 0x5D71, 0x5D71, 0x23BC, - 0x5D72, 0x5D72, 0x23C0, 0x5D74, 0x5D74, 0x3EEF, 0x5D77, 0x5D77, 0x2669, - 0x5D79, 0x5D79, 0x2670, 0x5D7A, 0x5D7A, 0x2667, 0x5D7C, 0x5D7C, 0x266E, - 0x5D7D, 0x5D7D, 0x2665, 0x5D7E, 0x5D7E, 0x266D, 0x5D7F, 0x5D7F, 0x2671, - 0x5D80, 0x5D80, 0x2664, 0x5D81, 0x5D81, 0x2668, 0x5D82, 0x5D82, 0x2663, - 0x5D84, 0x5D84, 0x0FC3, 0x5D85, 0x5D85, 0x3E34, 0x5D86, 0x5D86, 0x2666, - 0x5D87, 0x5D87, 0x0FC4, 0x5D88, 0x5D88, 0x266C, 0x5D89, 0x5D89, 0x266B, - 0x5D8A, 0x5D8A, 0x266A, 0x5D8B, 0x5D8B, 0x4124, 0x5D8D, 0x5D8D, 0x266F, - 0x5D8E, 0x5D8E, 0x3F0C, 0x5D92, 0x5D92, 0x28BB, 0x5D93, 0x5D93, 0x28BD, - 0x5D94, 0x5D94, 0x1137, 0x5D95, 0x5D95, 0x28BE, 0x5D97, 0x5D97, 0x28B9, - 0x5D99, 0x5D99, 0x28B8, 0x5D9A, 0x5D9A, 0x28C2, 0x5D9C, 0x5D9C, 0x28C0, - 0x5D9D, 0x5D9D, 0x1136, 0x5D9E, 0x5D9E, 0x28C3, 0x5D9F, 0x5D9F, 0x28BA, - 0x5DA0, 0x5DA0, 0x28BF, 0x5DA1, 0x5DA1, 0x28C1, 0x5DA2, 0x5DA2, 0x28BC, - 0x5DA4, 0x5DA4, 0x462D, 0x5DA7, 0x5DA7, 0x2B2C, 0x5DA8, 0x5DA8, 0x2B31, - 0x5DA9, 0x5DA9, 0x2B2B, 0x5DAA, 0x5DAA, 0x2B30, 0x5DAB, 0x5DAB, 0x3E39, - 0x5DAC, 0x5DAC, 0x2B29, 0x5DAD, 0x5DAD, 0x2B33, 0x5DAE, 0x5DAE, 0x2B2F, - 0x5DAF, 0x5DAF, 0x2B34, 0x5DB0, 0x5DB0, 0x2B2E, 0x5DB1, 0x5DB1, 0x2B2A, - 0x5DB2, 0x5DB2, 0x2B32, 0x5DB4, 0x5DB4, 0x2B35, 0x5DB5, 0x5DB5, 0x2B2D, - 0x5DB6, 0x5DB6, 0x4158, 0x5DB7, 0x5DB7, 0x2D5B, 0x5DB8, 0x5DB8, 0x13CC, - 0x5DB9, 0x5DB9, 0x462E, 0x5DBA, 0x5DBA, 0x13CA, 0x5DBC, 0x5DBC, 0x13C9, - 0x5DBD, 0x5DBD, 0x13CB, 0x5DC0, 0x5DC0, 0x2F1B, 0x5DC1, 0x5DC1, 0x3BFF, - 0x5DC2, 0x5DC2, 0x3023, 0x5DC3, 0x5DC3, 0x308C, 0x5DC6, 0x5DC7, 0x31CD, - 0x5DC9, 0x5DC9, 0x1613, 0x5DCB, 0x5DCB, 0x32CE, 0x5DCD, 0x5DCD, 0x166F, - 0x5DCF, 0x5DCF, 0x32CF, 0x5DD1, 0x5DD1, 0x337F, 0x5DD2, 0x5DD2, 0x16C2, - 0x5DD4, 0x5DD4, 0x16C1, 0x5DD5, 0x5DD5, 0x337E, 0x5DD6, 0x5DD6, 0x16F7, - 0x5DD7, 0x5DD7, 0x412C, 0x5DD8, 0x5DD8, 0x3414, 0x5DDB, 0x5DDB, 0x0226, - 0x5DDD, 0x5DDD, 0x0287, 0x5DDE, 0x5DDE, 0x03C8, 0x5DDF, 0x5DDF, 0x17E3, - 0x5DE0, 0x5DE0, 0x1871, 0x5DE1, 0x5DE1, 0x051A, 0x5DE2, 0x5DE2, 0x0A6B, - 0x5DE5, 0x5DE5, 0x0288, 0x5DE6, 0x5DE6, 0x0338, 0x5DE7, 0x5DE7, 0x0337, - 0x5DE8, 0x5DE8, 0x0336, 0x5DEB, 0x5DEB, 0x048D, 0x5DEE, 0x5DEE, 0x08A8, - 0x5DF0, 0x5DF0, 0x23C6, 0x5DF1, 0x5DF3, 0x0289, 0x5DF4, 0x5DF4, 0x02CB, - 0x5DF5, 0x5DF5, 0x3F61, 0x5DF7, 0x5DF7, 0x070D, 0x5DF9, 0x5DF9, 0x1AC9, - 0x5DFD, 0x5DFD, 0x0C36, 0x5DFE, 0x5DFE, 0x028C, 0x5DFF, 0x5DFF, 0x1788, - 0x5E02, 0x5E03, 0x0339, 0x5E04, 0x5E04, 0x17A4, 0x5E06, 0x5E06, 0x03C9, - 0x5E09, 0x5E09, 0x4140, 0x5E0A, 0x5E0A, 0x1872, 0x5E0B, 0x5E0B, 0x3D8A, - 0x5E0C, 0x5E0C, 0x048E, 0x5E0E, 0x5E0E, 0x1873, 0x5E11, 0x5E11, 0x05B0, - 0x5E12, 0x5E12, 0x3F2E, 0x5E14, 0x5E14, 0x1970, 0x5E15, 0x5E15, 0x05AE, - 0x5E16, 0x5E16, 0x05AD, 0x5E17, 0x5E17, 0x196F, 0x5E18, 0x5E18, 0x05AB, - 0x5E19, 0x5E19, 0x1971, 0x5E1A, 0x5E1A, 0x05AC, 0x5E1B, 0x5E1B, 0x05AF, - 0x5E1D, 0x5E1D, 0x070E, 0x5E1F, 0x5E1F, 0x0710, 0x5E20, 0x5E20, 0x1ACD, - 0x5E21, 0x5E23, 0x1ACA, 0x5E24, 0x5E24, 0x1ACE, 0x5E25, 0x5E25, 0x070F, - 0x5E28, 0x5E28, 0x1C87, 0x5E29, 0x5E29, 0x1C86, 0x5E2B, 0x5E2B, 0x08AA, - 0x5E2D, 0x5E2D, 0x08A9, 0x5E2E, 0x5E2E, 0x4135, 0x5E33, 0x5E33, 0x0A6E, - 0x5E34, 0x5E34, 0x1ECD, 0x5E36, 0x5E36, 0x0A6D, 0x5E37, 0x5E37, 0x0A6F, - 0x5E38, 0x5E38, 0x0A6C, 0x5E3D, 0x5E3D, 0x0C38, 0x5E3E, 0x5E3E, 0x1ECC, - 0x5E40, 0x5E40, 0x0C39, 0x5E41, 0x5E41, 0x212E, 0x5E42, 0x5E42, 0x43A0, - 0x5E43, 0x5E43, 0x0C3A, 0x5E44, 0x5E44, 0x212D, 0x5E45, 0x5E45, 0x0C37, - 0x5E48, 0x5E48, 0x3A2C, 0x5E4A, 0x5E4A, 0x23C9, 0x5E4B, 0x5E4B, 0x23CB, - 0x5E4C, 0x5E4C, 0x0DFF, 0x5E4D, 0x5E4D, 0x23CA, 0x5E4E, 0x5E4E, 0x23C8, - 0x5E4F, 0x5E4F, 0x23C7, 0x5E53, 0x5E53, 0x2674, 0x5E54, 0x5E54, 0x0FC9, - 0x5E55, 0x5E55, 0x0FC7, 0x5E57, 0x5E57, 0x0FC8, 0x5E58, 0x5E59, 0x2672, - 0x5E5B, 0x5E5B, 0x0FC5, 0x5E5C, 0x5E5C, 0x28C7, 0x5E5D, 0x5E5D, 0x28C5, - 0x5E5E, 0x5E5E, 0x3A2B, 0x5E5F, 0x5E5F, 0x1139, 0x5E60, 0x5E60, 0x28C6, - 0x5E61, 0x5E61, 0x113A, 0x5E62, 0x5E62, 0x1138, 0x5E63, 0x5E63, 0x0FC6, - 0x5E66, 0x5E66, 0x2B38, 0x5E67, 0x5E68, 0x2B36, 0x5E69, 0x5E69, 0x28C4, - 0x5E6A, 0x5E6A, 0x2D5D, 0x5E6B, 0x5E6B, 0x13CD, 0x5E6C, 0x5E6C, 0x2D5C, - 0x5E6D, 0x5E6E, 0x2F1C, 0x5E6F, 0x5E6F, 0x2B39, 0x5E70, 0x5E70, 0x308D, - 0x5E72, 0x5E72, 0x028D, 0x5E73, 0x5E73, 0x033B, 0x5E74, 0x5E74, 0x03CB, - 0x5E75, 0x5E75, 0x17E4, 0x5E76, 0x5E76, 0x03CA, 0x5E78, 0x5E78, 0x05B1, - 0x5E79, 0x5E79, 0x0E00, 0x5E7A, 0x5E7A, 0x0227, 0x5E7B, 0x5E7B, 0x02CC, - 0x5E7C, 0x5E7C, 0x033C, 0x5E7D, 0x5E7D, 0x0711, 0x5E7E, 0x5E7E, 0x0C3B, - 0x5E7F, 0x5E7F, 0x0228, 0x5E80, 0x5E80, 0x17A5, 0x5E82, 0x5E82, 0x17A6, - 0x5E83, 0x5E83, 0x4108, 0x5E84, 0x5E84, 0x17E5, 0x5E86, 0x5E86, 0x4552, - 0x5E87, 0x5E87, 0x0490, 0x5E88, 0x5E88, 0x1877, 0x5E89, 0x5E89, 0x1875, - 0x5E8A, 0x5E8A, 0x0491, 0x5E8B, 0x5E8B, 0x1874, 0x5E8C, 0x5E8C, 0x1876, - 0x5E8D, 0x5E8D, 0x1878, 0x5E8F, 0x5E8F, 0x048F, 0x5E95, 0x5E96, 0x05B5, - 0x5E97, 0x5E97, 0x05B3, 0x5E9A, 0x5E9A, 0x05B2, 0x5E9B, 0x5E9B, 0x1AD2, - 0x5E9C, 0x5E9C, 0x05B4, 0x5EA0, 0x5EA0, 0x0712, 0x5EA2, 0x5EA2, 0x1AD1, - 0x5EA3, 0x5EA3, 0x1AD3, 0x5EA4, 0x5EA4, 0x1AD0, 0x5EA5, 0x5EA5, 0x1AD4, - 0x5EA6, 0x5EA6, 0x0713, 0x5EA7, 0x5EA7, 0x08AD, 0x5EA8, 0x5EA8, 0x1C88, - 0x5EAA, 0x5EAA, 0x1C8A, 0x5EAB, 0x5EAB, 0x08AB, 0x5EAC, 0x5EAC, 0x1C8B, - 0x5EAD, 0x5EAD, 0x08AC, 0x5EAE, 0x5EAE, 0x1C89, 0x5EB0, 0x5EB0, 0x1ACF, - 0x5EB1, 0x5EB1, 0x1ECE, 0x5EB2, 0x5EB3, 0x1ED1, 0x5EB4, 0x5EB4, 0x1ECF, - 0x5EB5, 0x5EB5, 0x0A73, 0x5EB6, 0x5EB6, 0x0A72, 0x5EB7, 0x5EB8, 0x0A70, - 0x5EB9, 0x5EB9, 0x1ED0, 0x5EBD, 0x5EBD, 0x43BD, 0x5EBE, 0x5EBE, 0x0A74, - 0x5EC1, 0x5EC2, 0x0C3D, 0x5EC4, 0x5EC4, 0x0C3F, 0x5EC5, 0x5EC5, 0x23CC, - 0x5EC6, 0x5EC6, 0x23CE, 0x5EC7, 0x5EC7, 0x23D0, 0x5EC8, 0x5EC8, 0x0E02, - 0x5EC9, 0x5EC9, 0x0E01, 0x5ECA, 0x5ECA, 0x0C3C, 0x5ECB, 0x5ECB, 0x23CF, - 0x5ECC, 0x5ECC, 0x23CD, 0x5ECD, 0x5ECD, 0x3A30, 0x5ECE, 0x5ECE, 0x2678, - 0x5ED0, 0x5ED0, 0x413D, 0x5ED1, 0x5ED1, 0x2676, 0x5ED2, 0x5ED2, 0x267C, - 0x5ED3, 0x5ED3, 0x0FCA, 0x5ED4, 0x5ED4, 0x267D, 0x5ED5, 0x5ED5, 0x267A, - 0x5ED6, 0x5ED6, 0x0FCB, 0x5ED7, 0x5ED7, 0x2677, 0x5ED8, 0x5ED8, 0x2675, - 0x5ED9, 0x5ED9, 0x267B, 0x5EDA, 0x5EDA, 0x113C, 0x5EDB, 0x5EDB, 0x28C9, - 0x5EDC, 0x5EDC, 0x2679, 0x5EDD, 0x5EDD, 0x113E, 0x5EDE, 0x5EDE, 0x28CA, - 0x5EDF, 0x5EDF, 0x113D, 0x5EE0, 0x5EE0, 0x1140, 0x5EE1, 0x5EE1, 0x28CB, - 0x5EE2, 0x5EE2, 0x113B, 0x5EE3, 0x5EE3, 0x113F, 0x5EE5, 0x5EE5, 0x2B3E, - 0x5EE6, 0x5EE6, 0x2B3C, 0x5EE7, 0x5EE7, 0x2B3B, 0x5EE8, 0x5EE8, 0x2B3D, - 0x5EE9, 0x5EE9, 0x2B3A, 0x5EEC, 0x5EEC, 0x157D, 0x5EEE, 0x5EEF, 0x31CF, - 0x5EF1, 0x5EF1, 0x32D0, 0x5EF2, 0x5EF2, 0x3380, 0x5EF3, 0x5EF3, 0x1742, - 0x5EF4, 0x5EF4, 0x0229, 0x5EF6, 0x5EF6, 0x05B7, 0x5EF7, 0x5EF7, 0x0492, - 0x5EF8, 0x5EF8, 0x386F, 0x5EF9, 0x5EF9, 0x4143, 0x5EFA, 0x5EFA, 0x0714, - 0x5EFB, 0x5EFB, 0x4144, 0x5EFC, 0x5EFC, 0x4146, 0x5EFE, 0x5EFE, 0x028E, - 0x5EFF, 0x5EFF, 0x02CD, 0x5F01, 0x5F01, 0x033D, 0x5F02, 0x5F02, 0x17E6, - 0x5F04, 0x5F04, 0x0493, 0x5F05, 0x5F05, 0x1879, 0x5F07, 0x5F07, 0x1AD5, - 0x5F08, 0x5F08, 0x0715, 0x5F0A, 0x5F0A, 0x0FCC, 0x5F0B, 0x5F0B, 0x028F, - 0x5F0C, 0x5F0C, 0x3A3E, 0x5F0D, 0x5F0D, 0x4149, 0x5F0E, 0x5F0E, 0x3A3F, - 0x5F0F, 0x5F0F, 0x03CC, 0x5F12, 0x5F12, 0x0E03, 0x5F13, 0x5F13, 0x0290, - 0x5F14, 0x5F15, 0x02CE, 0x5F17, 0x5F17, 0x033F, 0x5F18, 0x5F18, 0x033E, - 0x5F1A, 0x5F1A, 0x17E7, 0x5F1B, 0x5F1B, 0x03CD, 0x5F1D, 0x5F1D, 0x187A, - 0x5F1F, 0x5F1F, 0x0494, 0x5F22, 0x5F24, 0x1973, 0x5F25, 0x5F25, 0x4630, - 0x5F26, 0x5F27, 0x05B8, 0x5F28, 0x5F28, 0x1972, 0x5F29, 0x5F29, 0x05BA, - 0x5F2D, 0x5F2D, 0x0716, 0x5F2E, 0x5F2E, 0x1AD6, 0x5F30, 0x5F30, 0x1C8D, - 0x5F31, 0x5F31, 0x08AE, 0x5F33, 0x5F33, 0x1C8C, 0x5F35, 0x5F35, 0x0A75, - 0x5F36, 0x5F36, 0x1ED3, 0x5F37, 0x5F37, 0x0A76, 0x5F38, 0x5F38, 0x1ED4, - 0x5F3A, 0x5F3A, 0x414E, 0x5F3C, 0x5F3C, 0x0C40, 0x5F40, 0x5F40, 0x23D1, - 0x5F43, 0x5F43, 0x267F, 0x5F44, 0x5F44, 0x267E, 0x5F46, 0x5F46, 0x0FCD, - 0x5F48, 0x5F48, 0x1141, 0x5F49, 0x5F49, 0x28CC, 0x5F4A, 0x5F4A, 0x12AD, - 0x5F4B, 0x5F4B, 0x2B3F, 0x5F4C, 0x5F4C, 0x13CE, 0x5F4D, 0x5F4D, 0x3BA5, - 0x5F4E, 0x5F4E, 0x16C3, 0x5F4F, 0x5F4F, 0x3416, 0x5F50, 0x5F50, 0x022A, - 0x5F51, 0x5F51, 0x44E9, 0x5F54, 0x5F54, 0x1976, 0x5F56, 0x5F56, 0x1AD7, - 0x5F57, 0x5F57, 0x0A77, 0x5F58, 0x5F58, 0x212F, 0x5F59, 0x5F59, 0x0E04, - 0x5F5C, 0x5F5C, 0x3D5A, 0x5F5D, 0x5F5D, 0x14CF, 0x5F61, 0x5F61, 0x022B, - 0x5F62, 0x5F62, 0x0496, 0x5F63, 0x5F63, 0x4152, 0x5F64, 0x5F64, 0x0495, - 0x5F65, 0x5F65, 0x0717, 0x5F67, 0x5F67, 0x1C8E, 0x5F69, 0x5F69, 0x0A79, - 0x5F6A, 0x5F6A, 0x0B89, 0x5F6B, 0x5F6B, 0x0A7A, 0x5F6C, 0x5F6C, 0x0A78, - 0x5F6D, 0x5F6D, 0x0C41, 0x5F6F, 0x5F6F, 0x2680, 0x5F70, 0x5F70, 0x0FCE, - 0x5F71, 0x5F71, 0x1142, 0x5F72, 0x5F72, 0x4154, 0x5F73, 0x5F73, 0x1777, - 0x5F74, 0x5F74, 0x17E8, 0x5F76, 0x5F76, 0x187C, 0x5F77, 0x5F77, 0x0497, - 0x5F78, 0x5F78, 0x187B, 0x5F79, 0x5F79, 0x0498, 0x5F7B, 0x5F7B, 0x4058, - 0x5F7C, 0x5F7C, 0x05BE, 0x5F7D, 0x5F7D, 0x1979, 0x5F7E, 0x5F7E, 0x1978, - 0x5F7F, 0x5F7F, 0x05BD, 0x5F80, 0x5F81, 0x05BB, 0x5F82, 0x5F82, 0x1977, - 0x5F83, 0x5F83, 0x4631, 0x5F85, 0x5F85, 0x0719, 0x5F86, 0x5F86, 0x1AD8, - 0x5F87, 0x5F87, 0x071C, 0x5F88, 0x5F88, 0x0718, 0x5F89, 0x5F89, 0x071E, - 0x5F8A, 0x5F8B, 0x071A, 0x5F8C, 0x5F8C, 0x071D, 0x5F90, 0x5F90, 0x08B1, - 0x5F91, 0x5F91, 0x08B0, 0x5F92, 0x5F92, 0x08AF, 0x5F96, 0x5F96, 0x1ED6, - 0x5F97, 0x5F97, 0x0A7B, 0x5F98, 0x5F98, 0x0A7E, 0x5F99, 0x5F99, 0x0A7C, - 0x5F9B, 0x5F9B, 0x1ED5, 0x5F9C, 0x5F9C, 0x0A81, 0x5F9E, 0x5F9E, 0x0A7D, - 0x5F9F, 0x5F9F, 0x1ED7, 0x5FA0, 0x5FA0, 0x0A80, 0x5FA1, 0x5FA1, 0x0A7F, - 0x5FA4, 0x5FA4, 0x402C, 0x5FA5, 0x5FA5, 0x2131, 0x5FA6, 0x5FA6, 0x2130, - 0x5FA7, 0x5FA7, 0x4157, 0x5FA8, 0x5FA8, 0x0C44, 0x5FA9, 0x5FAA, 0x0C42, - 0x5FAB, 0x5FAB, 0x2132, 0x5FAC, 0x5FAC, 0x0E05, 0x5FAD, 0x5FAD, 0x23D3, - 0x5FAE, 0x5FAE, 0x0E06, 0x5FAF, 0x5FAF, 0x23D2, 0x5FB1, 0x5FB1, 0x3D98, - 0x5FB2, 0x5FB2, 0x28CD, 0x5FB5, 0x5FB5, 0x1144, 0x5FB6, 0x5FB6, 0x2681, - 0x5FB7, 0x5FB7, 0x1143, 0x5FB9, 0x5FB9, 0x0FCF, 0x5FBA, 0x5FBA, 0x3F9F, - 0x5FBB, 0x5FBB, 0x2B41, 0x5FBC, 0x5FBC, 0x2B40, 0x5FBD, 0x5FBD, 0x13CF, - 0x5FBE, 0x5FBE, 0x2D5E, 0x5FBF, 0x5FBF, 0x308E, 0x5FC0, 0x5FC1, 0x31D1, - 0x5FC3, 0x5FC3, 0x02D0, 0x5FC4, 0x5FC4, 0x44EA, 0x5FC5, 0x5FC5, 0x0340, - 0x5FC9, 0x5FC9, 0x17A7, 0x5FCC, 0x5FCC, 0x049A, 0x5FCD, 0x5FCD, 0x049C, - 0x5FCF, 0x5FCF, 0x17EB, 0x5FD0, 0x5FD0, 0x187F, 0x5FD1, 0x5FD1, 0x187E, - 0x5FD2, 0x5FD2, 0x187D, 0x5FD4, 0x5FD4, 0x17EA, 0x5FD5, 0x5FD5, 0x17E9, - 0x5FD6, 0x5FD6, 0x03CF, 0x5FD7, 0x5FD7, 0x049B, 0x5FD8, 0x5FD8, 0x0499, - 0x5FD9, 0x5FD9, 0x03CE, 0x5FDB, 0x5FDB, 0x3A4A, 0x5FDD, 0x5FDD, 0x05BF, - 0x5FDE, 0x5FDE, 0x197A, 0x5FDF, 0x5FDF, 0x41AF, 0x5FE0, 0x5FE0, 0x05C0, - 0x5FE1, 0x5FE1, 0x1884, 0x5FE3, 0x5FE3, 0x1886, 0x5FE4, 0x5FE4, 0x1885, - 0x5FE5, 0x5FE5, 0x197B, 0x5FE8, 0x5FE8, 0x1881, 0x5FEA, 0x5FEA, 0x04A0, - 0x5FEB, 0x5FEB, 0x049E, 0x5FED, 0x5FED, 0x1880, 0x5FEE, 0x5FEE, 0x1882, - 0x5FEF, 0x5FEF, 0x1888, 0x5FF1, 0x5FF1, 0x049D, 0x5FF3, 0x5FF3, 0x1883, - 0x5FF4, 0x5FF4, 0x188C, 0x5FF5, 0x5FF5, 0x05C2, 0x5FF7, 0x5FF7, 0x1889, - 0x5FF8, 0x5FF8, 0x049F, 0x5FFA, 0x5FFA, 0x1887, 0x5FFB, 0x5FFB, 0x188A, - 0x5FFD, 0x5FFD, 0x05C1, 0x5FFF, 0x5FFF, 0x05C3, 0x6000, 0x6000, 0x188B, - 0x6009, 0x6009, 0x198F, 0x600A, 0x600A, 0x1982, 0x600B, 0x600B, 0x1980, - 0x600C, 0x600C, 0x198E, 0x600D, 0x600D, 0x1989, 0x600E, 0x600E, 0x0723, - 0x600F, 0x600F, 0x05C4, 0x6010, 0x6010, 0x198A, 0x6011, 0x6011, 0x198D, - 0x6012, 0x6012, 0x071F, 0x6013, 0x6013, 0x198C, 0x6014, 0x6014, 0x05C5, - 0x6015, 0x6015, 0x05CA, 0x6016, 0x6016, 0x05C8, 0x6017, 0x6017, 0x1983, - 0x6019, 0x6019, 0x197E, 0x601A, 0x601A, 0x1985, 0x601B, 0x601B, 0x05CF, - 0x601C, 0x601C, 0x1990, 0x601D, 0x601D, 0x0720, 0x601E, 0x601E, 0x1986, - 0x6020, 0x6020, 0x0721, 0x6021, 0x6021, 0x05CB, 0x6022, 0x6022, 0x1988, - 0x6023, 0x6023, 0x4185, 0x6024, 0x6024, 0x1AE7, 0x6025, 0x6025, 0x0722, - 0x6026, 0x6026, 0x197D, 0x6027, 0x6027, 0x05CC, 0x6028, 0x6028, 0x0724, - 0x6029, 0x6029, 0x05CD, 0x602A, 0x602A, 0x05C9, 0x602B, 0x602B, 0x05CE, - 0x602C, 0x602C, 0x1987, 0x602D, 0x602D, 0x197C, 0x602E, 0x602E, 0x198B, - 0x602F, 0x602F, 0x05C6, 0x6031, 0x6031, 0x4161, 0x6032, 0x6032, 0x197F, - 0x6033, 0x6033, 0x1984, 0x6034, 0x6034, 0x1981, 0x6035, 0x6035, 0x05C7, - 0x6037, 0x6037, 0x1AD9, 0x6039, 0x6039, 0x1ADA, 0x603B, 0x603B, 0x4553, - 0x6040, 0x6040, 0x1AE4, 0x6041, 0x6041, 0x1C92, 0x6042, 0x6042, 0x1AE5, - 0x6043, 0x6043, 0x072A, 0x6044, 0x6044, 0x1AE8, 0x6045, 0x6045, 0x1ADE, - 0x6046, 0x6046, 0x0729, 0x6047, 0x6047, 0x1AE0, 0x6049, 0x6049, 0x1AE1, - 0x604A, 0x604A, 0x4074, 0x604C, 0x604C, 0x1AE3, 0x604D, 0x604D, 0x0725, - 0x6050, 0x6050, 0x08B5, 0x6052, 0x6052, 0x36EC, 0x6053, 0x6053, 0x1ADF, - 0x6054, 0x6054, 0x1ADB, 0x6055, 0x6055, 0x08B6, 0x6058, 0x6058, 0x1AE9, - 0x6059, 0x6059, 0x08B2, 0x605A, 0x605A, 0x1C90, 0x605B, 0x605B, 0x1AE2, - 0x605D, 0x605D, 0x1C8F, 0x605E, 0x605E, 0x1ADD, 0x605F, 0x605F, 0x1AE6, - 0x6062, 0x6062, 0x0728, 0x6063, 0x6063, 0x08B3, 0x6064, 0x6064, 0x072E, - 0x6065, 0x6065, 0x08B4, 0x6066, 0x6066, 0x1AEA, 0x6067, 0x6067, 0x1C91, - 0x6068, 0x6068, 0x0727, 0x6069, 0x6069, 0x08B8, 0x606A, 0x606A, 0x072D, - 0x606B, 0x606B, 0x072C, 0x606C, 0x606C, 0x072B, 0x606D, 0x606D, 0x08B7, - 0x606E, 0x606E, 0x1AEB, 0x606F, 0x606F, 0x08B9, 0x6070, 0x6070, 0x0726, - 0x6072, 0x6072, 0x1ADC, 0x6075, 0x6075, 0x3A56, 0x6077, 0x6077, 0x4005, - 0x607E, 0x607E, 0x3A47, 0x607F, 0x607F, 0x0A82, 0x6080, 0x6080, 0x1C95, - 0x6081, 0x6081, 0x1C97, 0x6083, 0x6083, 0x1C99, 0x6084, 0x6084, 0x08BA, - 0x6085, 0x6085, 0x08C0, 0x6086, 0x6086, 0x1EDA, 0x6087, 0x6087, 0x1C9D, - 0x6088, 0x6088, 0x1C94, 0x6089, 0x6089, 0x0A84, 0x608A, 0x608A, 0x1ED8, - 0x608C, 0x608C, 0x08BF, 0x608D, 0x608D, 0x08BD, 0x608E, 0x608E, 0x1C9F, - 0x6090, 0x6090, 0x1ED9, 0x6092, 0x6092, 0x1C96, 0x6094, 0x6094, 0x08BE, - 0x6095, 0x6095, 0x1C9A, 0x6096, 0x6096, 0x08C1, 0x6097, 0x6097, 0x1C9C, - 0x609A, 0x609A, 0x08BC, 0x609B, 0x609B, 0x1C9B, 0x609C, 0x609C, 0x1C9E, - 0x609D, 0x609D, 0x1C98, 0x609E, 0x609E, 0x416A, 0x609F, 0x609F, 0x08BB, - 0x60A0, 0x60A0, 0x0A85, 0x60A2, 0x60A2, 0x1C93, 0x60A3, 0x60A3, 0x0A83, - 0x60A4, 0x60A4, 0x4001, 0x60A7, 0x60A7, 0x3ADC, 0x60A8, 0x60A8, 0x0A86, - 0x60B0, 0x60B0, 0x1EDC, 0x60B1, 0x60B1, 0x1EE5, 0x60B2, 0x60B2, 0x0C47, - 0x60B3, 0x60B3, 0x416C, 0x60B4, 0x60B4, 0x0A88, 0x60B5, 0x60B5, 0x0A8D, - 0x60B6, 0x60B6, 0x0C48, 0x60B7, 0x60B7, 0x1EE7, 0x60B8, 0x60B8, 0x0A94, - 0x60B9, 0x60B9, 0x2134, 0x60BA, 0x60BA, 0x1EDD, 0x60BB, 0x60BB, 0x0A8C, - 0x60BC, 0x60BC, 0x0A8F, 0x60BD, 0x60BD, 0x0A8A, 0x60BE, 0x60BE, 0x1EDB, - 0x60BF, 0x60BF, 0x1EE9, 0x60C0, 0x60C0, 0x1EEC, 0x60C1, 0x60C1, 0x2143, - 0x60C3, 0x60C3, 0x1EEA, 0x60C4, 0x60C4, 0x2138, 0x60C5, 0x60C5, 0x0A8B, - 0x60C6, 0x60C6, 0x0A92, 0x60C7, 0x60C7, 0x0A96, 0x60C8, 0x60C8, 0x1EE4, - 0x60C9, 0x60C9, 0x2133, 0x60CA, 0x60CA, 0x1EE8, 0x60CB, 0x60CB, 0x0A87, - 0x60CC, 0x60CC, 0x2135, 0x60CD, 0x60CD, 0x1EEB, 0x60CE, 0x60CE, 0x2137, - 0x60CF, 0x60CF, 0x1EE0, 0x60D1, 0x60D1, 0x0C45, 0x60D3, 0x60D4, 0x1EDE, - 0x60D5, 0x60D5, 0x0A91, 0x60D7, 0x60D7, 0x4635, 0x60D8, 0x60D8, 0x0A90, - 0x60D9, 0x60D9, 0x1EE2, 0x60DA, 0x60DA, 0x0A95, 0x60DB, 0x60DB, 0x1EE6, - 0x60DC, 0x60DC, 0x0A8E, 0x60DD, 0x60DD, 0x1EE3, 0x60DE, 0x60DE, 0x3DCC, - 0x60DF, 0x60DF, 0x0A93, 0x60E0, 0x60E0, 0x0C49, 0x60E1, 0x60E1, 0x0C46, - 0x60E2, 0x60E2, 0x2136, 0x60E3, 0x60E3, 0x3D75, 0x60E4, 0x60E4, 0x1EE1, - 0x60E6, 0x60E6, 0x0A89, 0x60E7, 0x60E7, 0x3D84, 0x60E8, 0x60E8, 0x3D7B, - 0x60E9, 0x60E9, 0x4009, 0x60F0, 0x60F0, 0x0C4E, 0x60F1, 0x60F1, 0x0C52, - 0x60F2, 0x60F2, 0x213A, 0x60F3, 0x60F3, 0x0E0B, 0x60F4, 0x60F4, 0x0C50, - 0x60F5, 0x60F5, 0x213E, 0x60F6, 0x60F6, 0x0C54, 0x60F7, 0x60F7, 0x23D4, - 0x60F8, 0x60F8, 0x2140, 0x60F9, 0x60F9, 0x0E0D, 0x60FA, 0x60FA, 0x0C4C, - 0x60FB, 0x60FB, 0x0C4F, 0x60FC, 0x60FC, 0x2141, 0x60FD, 0x60FD, 0x3FA8, - 0x60FE, 0x60FE, 0x2142, 0x60FF, 0x60FF, 0x2148, 0x6100, 0x6100, 0x0C56, - 0x6101, 0x6101, 0x0E0E, 0x6103, 0x6103, 0x2144, 0x6104, 0x6104, 0x2149, - 0x6105, 0x6105, 0x213D, 0x6106, 0x6106, 0x0E18, 0x6107, 0x6107, 0x3C35, - 0x6108, 0x6108, 0x0E0F, 0x6109, 0x6109, 0x0C55, 0x610A, 0x610A, 0x213B, - 0x610B, 0x610B, 0x214A, 0x610C, 0x610C, 0x3C87, 0x610D, 0x610D, 0x0E17, - 0x610E, 0x610E, 0x0C53, 0x610F, 0x610F, 0x0E08, 0x6110, 0x6110, 0x2147, - 0x6112, 0x6112, 0x0C57, 0x6113, 0x6113, 0x213F, 0x6114, 0x6114, 0x2139, - 0x6115, 0x6115, 0x0C4D, 0x6116, 0x6116, 0x213C, 0x6118, 0x6118, 0x2145, - 0x6119, 0x6119, 0x3EF6, 0x611A, 0x611A, 0x0E07, 0x611B, 0x611B, 0x0E0C, - 0x611C, 0x611C, 0x0C4A, 0x611D, 0x611D, 0x2146, 0x611F, 0x611F, 0x0E0A, - 0x6123, 0x6123, 0x0C4B, 0x6127, 0x6127, 0x0E16, 0x6128, 0x6128, 0x2683, - 0x6129, 0x6129, 0x23DF, 0x612B, 0x612B, 0x23D7, 0x612C, 0x612C, 0x2682, - 0x612E, 0x612E, 0x23DB, 0x612F, 0x612F, 0x23DD, 0x6130, 0x6130, 0x3F37, - 0x6132, 0x6132, 0x23DA, 0x6134, 0x6134, 0x0E15, 0x6136, 0x6136, 0x23D9, - 0x6137, 0x6137, 0x0E19, 0x613B, 0x613B, 0x2692, 0x613D, 0x613D, 0x4636, - 0x613E, 0x613E, 0x0E14, 0x613F, 0x613F, 0x0FD1, 0x6140, 0x6140, 0x23E0, - 0x6141, 0x6141, 0x2684, 0x6142, 0x6142, 0x4174, 0x6144, 0x6144, 0x0E12, - 0x6145, 0x6145, 0x23D8, 0x6146, 0x6146, 0x23DC, 0x6147, 0x6147, 0x0FD0, - 0x6148, 0x6148, 0x0E09, 0x6149, 0x614A, 0x23D5, 0x614B, 0x614B, 0x0FD2, - 0x614C, 0x614C, 0x0E11, 0x614D, 0x614D, 0x0E13, 0x614E, 0x614E, 0x0E10, - 0x614F, 0x614F, 0x23DE, 0x6150, 0x6150, 0x3C32, 0x6152, 0x6153, 0x2688, - 0x6154, 0x6154, 0x268E, 0x6155, 0x6155, 0x1149, 0x6156, 0x6156, 0x2695, - 0x6158, 0x6158, 0x0FD8, 0x6159, 0x6159, 0x3FBA, 0x615A, 0x615A, 0x0FD7, - 0x615B, 0x615B, 0x2690, 0x615C, 0x615C, 0x4186, 0x615D, 0x615D, 0x1148, - 0x615E, 0x615E, 0x2685, 0x615F, 0x615F, 0x0FD6, 0x6160, 0x6160, 0x494C, - 0x6161, 0x6161, 0x2694, 0x6162, 0x6163, 0x0FD4, 0x6164, 0x6164, 0x4173, - 0x6165, 0x6165, 0x2691, 0x6166, 0x6166, 0x28DE, 0x6167, 0x6167, 0x1146, - 0x6168, 0x6168, 0x0C51, 0x616A, 0x616A, 0x2693, 0x616B, 0x616B, 0x114D, - 0x616C, 0x616C, 0x268B, 0x616E, 0x616E, 0x1147, 0x616F, 0x616F, 0x3FC0, - 0x6170, 0x6170, 0x114C, 0x6171, 0x6171, 0x2686, 0x6172, 0x6172, 0x268A, - 0x6173, 0x6173, 0x2687, 0x6174, 0x6174, 0x268D, 0x6175, 0x6175, 0x0FD9, - 0x6176, 0x6176, 0x1145, 0x6177, 0x6177, 0x0FD3, 0x6179, 0x6179, 0x28D0, - 0x617A, 0x617A, 0x268F, 0x617C, 0x617C, 0x114B, 0x617D, 0x617D, 0x3FBD, - 0x617E, 0x617E, 0x114E, 0x6180, 0x6180, 0x268C, 0x6181, 0x6181, 0x4177, - 0x6182, 0x6182, 0x114A, 0x6183, 0x6183, 0x28CF, 0x6187, 0x6187, 0x417A, - 0x6189, 0x6189, 0x28D4, 0x618A, 0x618A, 0x12B1, 0x618B, 0x618B, 0x28CE, - 0x618C, 0x618C, 0x2B4D, 0x618D, 0x618D, 0x28DD, 0x618E, 0x618E, 0x1152, - 0x6190, 0x6190, 0x1150, 0x6191, 0x6191, 0x12AF, 0x6192, 0x6192, 0x28DA, - 0x6193, 0x6193, 0x28D6, 0x6194, 0x6194, 0x1156, 0x6195, 0x6195, 0x3DE0, - 0x6196, 0x6196, 0x2B44, 0x6198, 0x6198, 0x3A55, 0x6199, 0x6199, 0x3A54, - 0x619A, 0x619A, 0x1154, 0x619B, 0x619B, 0x28D5, 0x619C, 0x619C, 0x4002, - 0x619D, 0x619D, 0x2B42, 0x619F, 0x619F, 0x28D9, 0x61A1, 0x61A1, 0x28DC, - 0x61A2, 0x61A2, 0x28D3, 0x61A4, 0x61A4, 0x1155, 0x61A7, 0x61A7, 0x114F, - 0x61A8, 0x61A8, 0x2B43, 0x61A9, 0x61A9, 0x12B0, 0x61AA, 0x61AA, 0x28DB, - 0x61AB, 0x61AB, 0x1151, 0x61AC, 0x61AC, 0x1153, 0x61AD, 0x61AD, 0x28D8, - 0x61AE, 0x61AE, 0x1157, 0x61AF, 0x61AF, 0x28D7, 0x61B0, 0x61B0, 0x28D2, - 0x61B1, 0x61B1, 0x28D1, 0x61B2, 0x61B2, 0x12AE, 0x61B3, 0x61B3, 0x28DF, - 0x61B4, 0x61B4, 0x2B46, 0x61B5, 0x61B5, 0x2D60, 0x61B6, 0x61B6, 0x12B3, - 0x61B7, 0x61B7, 0x4639, 0x61B8, 0x61B8, 0x2B4C, 0x61B9, 0x61B9, 0x43BF, - 0x61BA, 0x61BA, 0x2B4A, 0x61BC, 0x61BC, 0x2D61, 0x61BE, 0x61BE, 0x12B4, - 0x61BF, 0x61BF, 0x2B4B, 0x61C0, 0x61C0, 0x3A50, 0x61C1, 0x61C1, 0x2B48, - 0x61C2, 0x61C2, 0x13D1, 0x61C3, 0x61C3, 0x2D5F, 0x61C5, 0x61C5, 0x2B45, - 0x61C6, 0x61C6, 0x2B47, 0x61C7, 0x61C7, 0x13D2, 0x61C8, 0x61C8, 0x12B6, - 0x61C9, 0x61C9, 0x13D0, 0x61CA, 0x61CA, 0x12B5, 0x61CB, 0x61CB, 0x13D4, - 0x61CC, 0x61CC, 0x2B49, 0x61CD, 0x61CD, 0x12B2, 0x61CF, 0x61CF, 0x463A, - 0x61D0, 0x61D0, 0x4181, 0x61D3, 0x61D3, 0x417E, 0x61D6, 0x61D6, 0x2F26, - 0x61D8, 0x61D8, 0x2F1E, 0x61DA, 0x61DA, 0x38B1, 0x61DE, 0x61DE, 0x2D67, - 0x61DF, 0x61DF, 0x2F1F, 0x61E0, 0x61E0, 0x2D63, 0x61E2, 0x61E2, 0x3FC5, - 0x61E3, 0x61E3, 0x14D0, 0x61E4, 0x61E4, 0x2D65, 0x61E5, 0x61E5, 0x2D64, - 0x61E6, 0x61E6, 0x13D3, 0x61E7, 0x61E7, 0x2D62, 0x61E8, 0x61E8, 0x2D66, - 0x61E9, 0x61E9, 0x2F27, 0x61EA, 0x61EA, 0x2F23, 0x61EB, 0x61EB, 0x2F25, - 0x61ED, 0x61EE, 0x2F20, 0x61F0, 0x61F0, 0x2F24, 0x61F1, 0x61F1, 0x2F22, - 0x61F2, 0x61F2, 0x157E, 0x61F5, 0x61F5, 0x1581, 0x61F6, 0x61F6, 0x1580, - 0x61F7, 0x61F7, 0x157F, 0x61F8, 0x61F8, 0x1614, 0x61F9, 0x61F9, 0x31D3, - 0x61FA, 0x61FA, 0x1615, 0x61FB, 0x61FB, 0x308F, 0x61FC, 0x61FC, 0x1670, - 0x61FD, 0x61FD, 0x32D1, 0x61FE, 0x61FE, 0x1671, 0x61FF, 0x61FF, 0x16C4, - 0x6200, 0x6200, 0x16F8, 0x6201, 0x6201, 0x3417, 0x6203, 0x6204, 0x3418, - 0x6207, 0x6207, 0x3533, 0x6208, 0x6208, 0x02D1, 0x6209, 0x6209, 0x17A8, - 0x620A, 0x620A, 0x0341, 0x620C, 0x620D, 0x03D1, 0x620E, 0x620E, 0x03D0, - 0x6210, 0x6210, 0x03D3, 0x6211, 0x6211, 0x04A2, 0x6212, 0x6212, 0x04A1, - 0x6214, 0x6214, 0x1991, 0x6215, 0x6215, 0x05D1, 0x6216, 0x6216, 0x05D0, - 0x6219, 0x6219, 0x1CA0, 0x621A, 0x621B, 0x0A97, 0x621F, 0x621F, 0x0C58, - 0x6220, 0x6220, 0x23E1, 0x6221, 0x6222, 0x0E1A, 0x6223, 0x6223, 0x23E3, - 0x6224, 0x6224, 0x23E5, 0x6225, 0x6225, 0x23E4, 0x6227, 0x6227, 0x2697, - 0x6229, 0x6229, 0x2696, 0x622A, 0x622A, 0x0FDA, 0x622B, 0x622B, 0x2698, - 0x622C, 0x622C, 0x463C, 0x622D, 0x622D, 0x28E0, 0x622E, 0x622E, 0x1158, - 0x6230, 0x6230, 0x12B7, 0x6232, 0x6232, 0x13D5, 0x6233, 0x6233, 0x14D1, - 0x6234, 0x6234, 0x13D6, 0x6236, 0x6236, 0x02D2, 0x6237, 0x6237, 0x451A, - 0x6239, 0x6239, 0x3FC2, 0x623A, 0x623A, 0x188D, 0x623D, 0x623D, 0x1992, - 0x623E, 0x623E, 0x05D3, 0x623F, 0x623F, 0x05D2, 0x6240, 0x6240, 0x05D4, - 0x6241, 0x6241, 0x072F, 0x6242, 0x6243, 0x1AEC, 0x6246, 0x6246, 0x1CA1, - 0x6247, 0x6247, 0x08C2, 0x6248, 0x6248, 0x0A99, 0x6249, 0x6249, 0x0C59, - 0x624A, 0x624A, 0x214B, 0x624B, 0x624B, 0x02D3, 0x624C, 0x624C, 0x44EC, - 0x624D, 0x624D, 0x0291, 0x624E, 0x624E, 0x02D4, 0x6250, 0x6250, 0x17A9, - 0x6251, 0x6251, 0x0345, 0x6252, 0x6252, 0x0344, 0x6253, 0x6254, 0x0342, - 0x6258, 0x6258, 0x03D6, 0x6259, 0x6259, 0x17F2, 0x625A, 0x625A, 0x17F4, - 0x625B, 0x625B, 0x03D5, 0x625C, 0x625C, 0x17EC, 0x625E, 0x625E, 0x17ED, - 0x6260, 0x6260, 0x17F3, 0x6261, 0x6261, 0x17EF, 0x6262, 0x6262, 0x17F1, - 0x6263, 0x6263, 0x03D4, 0x6264, 0x6264, 0x17EE, 0x6265, 0x6265, 0x17F5, - 0x6266, 0x6266, 0x17F0, 0x6268, 0x6268, 0x3F15, 0x626D, 0x626D, 0x04A9, - 0x626E, 0x626E, 0x04B2, 0x626F, 0x626F, 0x04B0, 0x6270, 0x6270, 0x1897, - 0x6271, 0x6271, 0x1894, 0x6272, 0x6272, 0x189C, 0x6273, 0x6273, 0x04AE, - 0x6274, 0x6274, 0x189D, 0x6276, 0x6276, 0x04A7, 0x6277, 0x6277, 0x189A, - 0x6279, 0x6279, 0x04AD, 0x627A, 0x627A, 0x1896, 0x627B, 0x627B, 0x1895, - 0x627C, 0x627C, 0x04AB, 0x627D, 0x627D, 0x189B, 0x627E, 0x627E, 0x04AC, - 0x627F, 0x627F, 0x05D5, 0x6280, 0x6280, 0x04A6, 0x6281, 0x6281, 0x1898, - 0x6282, 0x6282, 0x3F86, 0x6283, 0x6283, 0x188E, 0x6284, 0x6284, 0x04A3, - 0x6285, 0x6285, 0x3F50, 0x6286, 0x6286, 0x04B6, 0x6287, 0x6287, 0x1893, - 0x6288, 0x6288, 0x1899, 0x6289, 0x6289, 0x04A8, 0x628A, 0x628A, 0x04AA, - 0x628C, 0x628C, 0x188F, 0x628E, 0x628F, 0x1890, 0x6290, 0x6290, 0x43C0, - 0x6291, 0x6291, 0x04B5, 0x6292, 0x6292, 0x04AF, 0x6293, 0x6293, 0x04B4, - 0x6294, 0x6294, 0x1892, 0x6295, 0x6295, 0x04B3, 0x6296, 0x6296, 0x04A5, - 0x6297, 0x6297, 0x04A4, 0x6298, 0x6298, 0x04B1, 0x629D, 0x629D, 0x3E96, - 0x62A4, 0x62A4, 0x3A69, 0x62A6, 0x62A6, 0x3FC1, 0x62A8, 0x62A8, 0x05E3, - 0x62A9, 0x62A9, 0x199E, 0x62AA, 0x62AA, 0x1997, 0x62AB, 0x62AB, 0x05DE, - 0x62AC, 0x62AC, 0x05F1, 0x62AD, 0x62AD, 0x1993, 0x62AE, 0x62AE, 0x199A, - 0x62AF, 0x62AF, 0x199C, 0x62B0, 0x62B0, 0x199F, 0x62B1, 0x62B1, 0x05EC, - 0x62B3, 0x62B3, 0x199B, 0x62B4, 0x62B4, 0x1994, 0x62B5, 0x62B5, 0x05EA, - 0x62B6, 0x62B6, 0x1998, 0x62B8, 0x62B8, 0x19A0, 0x62B9, 0x62B9, 0x05DB, - 0x62BB, 0x62BB, 0x199D, 0x62BC, 0x62BC, 0x05E5, 0x62BD, 0x62BD, 0x05E4, - 0x62BE, 0x62BE, 0x1996, 0x62BF, 0x62BF, 0x05D9, 0x62C2, 0x62C2, 0x05DA, - 0x62C3, 0x62C3, 0x3D8F, 0x62C4, 0x62C4, 0x05D8, 0x62C5, 0x62C5, 0x418A, - 0x62C6, 0x62C6, 0x05F0, 0x62C7, 0x62C7, 0x05E8, 0x62C8, 0x62C8, 0x05E2, - 0x62C9, 0x62C9, 0x05D6, 0x62CA, 0x62CA, 0x1999, 0x62CB, 0x62CB, 0x05E1, - 0x62CC, 0x62CC, 0x05D7, 0x62CD, 0x62CD, 0x05E9, 0x62CE, 0x62CE, 0x05F2, - 0x62CF, 0x62CF, 0x1AEE, 0x62D0, 0x62D0, 0x05E6, 0x62D1, 0x62D1, 0x1995, - 0x62D2, 0x62D2, 0x05DC, 0x62D3, 0x62D4, 0x05DF, 0x62D5, 0x62D5, 0x418C, - 0x62D6, 0x62D7, 0x05EE, 0x62D8, 0x62D8, 0x05ED, 0x62D9, 0x62D9, 0x05E7, - 0x62DA, 0x62DA, 0x05EB, 0x62DB, 0x62DB, 0x05DD, 0x62DC, 0x62DC, 0x0730, - 0x62DF, 0x62DF, 0x401C, 0x62E5, 0x62E5, 0x463D, 0x62EB, 0x62EB, 0x1AF4, - 0x62EC, 0x62EC, 0x073C, 0x62ED, 0x62ED, 0x0734, 0x62EE, 0x62EE, 0x0736, - 0x62EF, 0x62EF, 0x073B, 0x62F0, 0x62F0, 0x1B00, 0x62F1, 0x62F1, 0x0739, - 0x62F2, 0x62F2, 0x1CA2, 0x62F3, 0x62F3, 0x08C3, 0x62F4, 0x62F4, 0x073E, - 0x62F5, 0x62F5, 0x1AF1, 0x62F6, 0x62F6, 0x1AF9, 0x62F7, 0x62F7, 0x073A, - 0x62F8, 0x62F8, 0x1AF8, 0x62F9, 0x62F9, 0x1AF5, 0x62FA, 0x62FA, 0x1AFD, - 0x62FB, 0x62FB, 0x1AFF, 0x62FC, 0x62FC, 0x0733, 0x62FD, 0x62FD, 0x0737, - 0x62FE, 0x62FE, 0x073D, 0x62FF, 0x62FF, 0x08C5, 0x6300, 0x6300, 0x1AFA, - 0x6301, 0x6301, 0x0735, 0x6302, 0x6302, 0x0740, 0x6303, 0x6303, 0x1AF3, - 0x6307, 0x6307, 0x0738, 0x6308, 0x6308, 0x08C4, 0x6309, 0x6309, 0x0732, - 0x630B, 0x630B, 0x1AF0, 0x630C, 0x630C, 0x1AF7, 0x630D, 0x630D, 0x1AEF, - 0x630E, 0x630E, 0x1AF2, 0x630F, 0x630F, 0x1AF6, 0x6310, 0x6310, 0x1CA3, - 0x6311, 0x6311, 0x073F, 0x6313, 0x6314, 0x1AFB, 0x6315, 0x6315, 0x1AFE, - 0x6316, 0x6316, 0x0731, 0x6318, 0x6318, 0x43C1, 0x6328, 0x6328, 0x08D3, - 0x6329, 0x6329, 0x1CAF, 0x632A, 0x632B, 0x08D1, 0x632C, 0x632C, 0x1CA5, - 0x632D, 0x632D, 0x1CB5, 0x632E, 0x632E, 0x3EDD, 0x632F, 0x632F, 0x08C8, - 0x6331, 0x6331, 0x3A65, 0x6332, 0x6332, 0x1EED, 0x6333, 0x6333, 0x1CB7, - 0x6334, 0x6334, 0x1CB1, 0x6335, 0x6335, 0x3F16, 0x6336, 0x6336, 0x1CA8, - 0x6337, 0x6337, 0x3A63, 0x6338, 0x6338, 0x1CBA, 0x6339, 0x6339, 0x1CAB, - 0x633A, 0x633A, 0x08CE, 0x633B, 0x633B, 0x1F04, 0x633C, 0x633C, 0x1CAE, - 0x633D, 0x633D, 0x08D0, 0x633E, 0x633E, 0x08C7, 0x6340, 0x6340, 0x1CBC, - 0x6341, 0x6341, 0x1CB0, 0x6342, 0x6342, 0x08CA, 0x6343, 0x6343, 0x1CA9, - 0x6344, 0x6345, 0x1CA6, 0x6346, 0x6346, 0x08CB, 0x6347, 0x6347, 0x1CB6, - 0x6348, 0x6348, 0x1CBD, 0x6349, 0x6349, 0x08CD, 0x634A, 0x634A, 0x1CAD, - 0x634B, 0x634B, 0x1CAC, 0x634C, 0x634C, 0x08D5, 0x634D, 0x634D, 0x08D4, - 0x634E, 0x634E, 0x08C6, 0x634F, 0x634F, 0x08CC, 0x6350, 0x6350, 0x08CF, - 0x6351, 0x6351, 0x1CB9, 0x6354, 0x6354, 0x1CB3, 0x6355, 0x6355, 0x08C9, - 0x6356, 0x6356, 0x1CA4, 0x6357, 0x6357, 0x1CBB, 0x6358, 0x6358, 0x1CB2, - 0x6359, 0x6359, 0x1CB4, 0x635A, 0x635A, 0x1CB8, 0x6364, 0x6364, 0x3FC7, - 0x6365, 0x6365, 0x1EEE, 0x6367, 0x6367, 0x0AA1, 0x6368, 0x6368, 0x0AB5, - 0x6369, 0x6369, 0x0AB4, 0x636B, 0x636B, 0x0AA9, 0x636C, 0x636C, 0x418E, - 0x636D, 0x636D, 0x1F00, 0x636E, 0x636E, 0x1EFC, 0x636F, 0x636F, 0x1EF9, - 0x6370, 0x6370, 0x1F0B, 0x6371, 0x6371, 0x0AA4, 0x6372, 0x6372, 0x0A9C, - 0x6375, 0x6375, 0x1EFE, 0x6376, 0x6376, 0x0C69, 0x6377, 0x6377, 0x0AA0, - 0x6378, 0x6378, 0x1F06, 0x6379, 0x6379, 0x4367, 0x637A, 0x637A, 0x0AB6, - 0x637B, 0x637B, 0x0AB3, 0x637C, 0x637C, 0x1F02, 0x637D, 0x637D, 0x1EF1, - 0x637F, 0x637F, 0x3F4B, 0x6380, 0x6380, 0x0AB2, 0x6381, 0x6381, 0x1F08, - 0x6382, 0x6382, 0x1EF0, 0x6383, 0x6383, 0x0AA7, 0x6384, 0x6384, 0x0AAB, - 0x6385, 0x6385, 0x1F07, 0x6387, 0x6387, 0x1EFA, 0x6388, 0x6388, 0x0AAC, - 0x6389, 0x6389, 0x0AA6, 0x638A, 0x638A, 0x1EEF, 0x638B, 0x638B, 0x4188, - 0x638C, 0x638C, 0x0C5B, 0x638D, 0x638D, 0x1F0A, 0x638E, 0x638E, 0x1EF8, - 0x638F, 0x638F, 0x0AB1, 0x6390, 0x6390, 0x1EFB, 0x6391, 0x6391, 0x1F09, - 0x6392, 0x6392, 0x0AB0, 0x6394, 0x6394, 0x214C, 0x6396, 0x6396, 0x0A9D, - 0x6397, 0x6397, 0x1EF6, 0x6398, 0x6398, 0x0AA2, 0x6399, 0x6399, 0x0AAD, - 0x639B, 0x639B, 0x0AA8, 0x639C, 0x639C, 0x1EFF, 0x639D, 0x639D, 0x1EF5, - 0x639E, 0x639E, 0x1EF3, 0x639F, 0x639F, 0x1F05, 0x63A0, 0x63A0, 0x0A9A, - 0x63A1, 0x63A1, 0x0AAE, 0x63A2, 0x63A2, 0x0A9E, 0x63A3, 0x63A3, 0x0C5A, - 0x63A4, 0x63A4, 0x1F03, 0x63A5, 0x63A5, 0x0A9F, 0x63A7, 0x63A7, 0x0A9B, - 0x63A8, 0x63A8, 0x0AAA, 0x63A9, 0x63A9, 0x0AA5, 0x63AA, 0x63AA, 0x0AA3, - 0x63AB, 0x63AB, 0x1EF7, 0x63AC, 0x63AC, 0x0AAF, 0x63AD, 0x63AD, 0x1EF4, - 0x63AE, 0x63AE, 0x1F01, 0x63AF, 0x63AF, 0x1EFD, 0x63B0, 0x63B0, 0x214E, - 0x63B1, 0x63B1, 0x214D, 0x63B9, 0x63B9, 0x3E9D, 0x63BD, 0x63BD, 0x1EF2, - 0x63BE, 0x63BE, 0x215E, 0x63C0, 0x63C0, 0x0C5D, 0x63C1, 0x63C1, 0x46A8, - 0x63C2, 0x63C2, 0x2164, 0x63C3, 0x63C3, 0x2153, 0x63C4, 0x63C4, 0x2161, - 0x63C5, 0x63C5, 0x23E6, 0x63C6, 0x63C6, 0x0C60, 0x63C7, 0x63C7, 0x2165, - 0x63C8, 0x63C8, 0x2168, 0x63C9, 0x63C9, 0x0C5F, 0x63CA, 0x63CA, 0x2156, - 0x63CB, 0x63CB, 0x2167, 0x63CC, 0x63CC, 0x2166, 0x63CD, 0x63CD, 0x0C61, - 0x63CE, 0x63CE, 0x214F, 0x63CF, 0x63CF, 0x0C5C, 0x63D0, 0x63D0, 0x0C64, - 0x63D1, 0x63D1, 0x3A66, 0x63D2, 0x63D2, 0x0C62, 0x63D3, 0x63D3, 0x2163, - 0x63D5, 0x63D5, 0x2159, 0x63D6, 0x63D6, 0x0C66, 0x63D7, 0x63D7, 0x216A, - 0x63D8, 0x63D8, 0x2162, 0x63D9, 0x63D9, 0x216B, 0x63DA, 0x63DA, 0x0C6E, - 0x63DB, 0x63DB, 0x0C6C, 0x63DC, 0x63DC, 0x2160, 0x63DD, 0x63DD, 0x215F, - 0x63DE, 0x63DE, 0x3E60, 0x63DF, 0x63DF, 0x215D, 0x63E0, 0x63E0, 0x2157, - 0x63E1, 0x63E1, 0x0C65, 0x63E2, 0x63E2, 0x4641, 0x63E3, 0x63E3, 0x0C63, - 0x63E4, 0x63E4, 0x1CAA, 0x63E5, 0x63E5, 0x2150, 0x63E6, 0x63E6, 0x489F, - 0x63E7, 0x63E7, 0x2404, 0x63E8, 0x63E8, 0x2151, 0x63E9, 0x63E9, 0x0C5E, - 0x63EA, 0x63EA, 0x0C6B, 0x63EB, 0x63EB, 0x23E8, 0x63ED, 0x63EE, 0x0C67, - 0x63EF, 0x63EF, 0x2152, 0x63F0, 0x63F0, 0x2169, 0x63F1, 0x63F1, 0x23E7, - 0x63F2, 0x63F2, 0x215A, 0x63F3, 0x63F3, 0x2155, 0x63F4, 0x63F4, 0x0C6A, - 0x63F5, 0x63F5, 0x215B, 0x63F6, 0x63F6, 0x2158, 0x63F8, 0x63F8, 0x4192, - 0x63F9, 0x63F9, 0x0C6F, 0x63FB, 0x63FB, 0x4642, 0x63FC, 0x63FC, 0x3E9C, - 0x63FE, 0x63FE, 0x3E9E, 0x6406, 0x6406, 0x0E2A, 0x6407, 0x6407, 0x4643, - 0x6409, 0x6409, 0x23EB, 0x640A, 0x640A, 0x23FE, 0x640B, 0x640B, 0x2403, - 0x640C, 0x640C, 0x23F7, 0x640D, 0x640D, 0x0E26, 0x640E, 0x640E, 0x2408, - 0x640F, 0x640F, 0x0E23, 0x6410, 0x6410, 0x23E9, 0x6412, 0x6412, 0x23EA, - 0x6413, 0x6413, 0x0E1C, 0x6414, 0x6414, 0x0E25, 0x6415, 0x6415, 0x23F1, - 0x6416, 0x6417, 0x0E28, 0x6418, 0x6418, 0x23F2, 0x641A, 0x641A, 0x23FF, - 0x641B, 0x641B, 0x2405, 0x641C, 0x641C, 0x0E24, 0x641E, 0x641E, 0x0E1E, - 0x641F, 0x641F, 0x23F0, 0x6420, 0x6420, 0x23EC, 0x6421, 0x6421, 0x2407, - 0x6422, 0x6423, 0x23F5, 0x6424, 0x6424, 0x23ED, 0x6425, 0x6425, 0x2401, - 0x6426, 0x6426, 0x23F8, 0x6427, 0x6427, 0x2402, 0x6428, 0x6428, 0x23FA, - 0x642A, 0x642A, 0x0E1F, 0x642B, 0x642B, 0x2699, 0x642C, 0x642C, 0x0E22, - 0x642D, 0x642D, 0x0E20, 0x642E, 0x642E, 0x2406, 0x642F, 0x642F, 0x23FD, - 0x6430, 0x6430, 0x23F9, 0x6432, 0x6432, 0x45D9, 0x6433, 0x6433, 0x23EE, - 0x6434, 0x6434, 0x0FE4, 0x6435, 0x6435, 0x23FC, 0x6436, 0x6436, 0x0E27, - 0x6437, 0x6437, 0x23F4, 0x6438, 0x6438, 0x4191, 0x6439, 0x6439, 0x23F3, - 0x643A, 0x643A, 0x419D, 0x643B, 0x643B, 0x3A6B, 0x643D, 0x643D, 0x0E21, - 0x643E, 0x643E, 0x0E1D, 0x643F, 0x643F, 0x26AE, 0x6440, 0x6440, 0x2400, - 0x6441, 0x6441, 0x23FB, 0x6443, 0x6443, 0x23EF, 0x644B, 0x644B, 0x26A9, - 0x644D, 0x644D, 0x269A, 0x644E, 0x644E, 0x26A5, 0x6450, 0x6450, 0x26AC, - 0x6451, 0x6451, 0x0FE2, 0x6452, 0x6452, 0x0C6D, 0x6453, 0x6453, 0x26AA, - 0x6454, 0x6454, 0x0FDD, 0x6458, 0x6458, 0x0FDC, 0x6459, 0x6459, 0x26B1, - 0x645A, 0x645A, 0x43C2, 0x645B, 0x645B, 0x269B, 0x645C, 0x645C, 0x26A8, - 0x645D, 0x645D, 0x269C, 0x645E, 0x645E, 0x26A7, 0x645F, 0x645F, 0x0FE0, - 0x6460, 0x6460, 0x26AB, 0x6461, 0x6461, 0x215C, 0x6465, 0x6465, 0x26B2, - 0x6466, 0x6466, 0x26A3, 0x6467, 0x6467, 0x0FE3, 0x6468, 0x6468, 0x28EE, - 0x6469, 0x6469, 0x1159, 0x646B, 0x646B, 0x26B0, 0x646C, 0x646C, 0x26AF, - 0x646D, 0x646D, 0x0FE5, 0x646E, 0x646E, 0x28E1, 0x646F, 0x646F, 0x115A, - 0x6470, 0x6470, 0x28E2, 0x6471, 0x6471, 0x3A5B, 0x6472, 0x6473, 0x269F, - 0x6474, 0x6474, 0x269D, 0x6475, 0x6475, 0x26A2, 0x6476, 0x6476, 0x269E, - 0x6477, 0x6477, 0x26B3, 0x6478, 0x6478, 0x0FDF, 0x6479, 0x6479, 0x115B, - 0x647A, 0x647A, 0x0FE1, 0x647B, 0x647B, 0x0FE6, 0x647C, 0x647C, 0x436C, - 0x647D, 0x647D, 0x26A1, 0x647F, 0x647F, 0x26AD, 0x6482, 0x6482, 0x26A6, - 0x6485, 0x6485, 0x28E5, 0x6487, 0x6487, 0x0FDB, 0x6488, 0x6488, 0x115E, - 0x6489, 0x6489, 0x2B54, 0x648A, 0x648A, 0x28EA, 0x648B, 0x648B, 0x28E9, - 0x648C, 0x648C, 0x28EB, 0x648D, 0x648D, 0x4323, 0x648F, 0x648F, 0x28E8, - 0x6490, 0x6490, 0x115F, 0x6491, 0x6491, 0x43C3, 0x6492, 0x6492, 0x1165, - 0x6493, 0x6493, 0x1162, 0x6495, 0x6495, 0x1163, 0x6496, 0x6496, 0x28E3, - 0x6497, 0x6497, 0x28E6, 0x6498, 0x6498, 0x28F0, 0x6499, 0x6499, 0x116B, - 0x649A, 0x649A, 0x1169, 0x649C, 0x649C, 0x28E7, 0x649D, 0x649D, 0x2154, - 0x649E, 0x649E, 0x115C, 0x649F, 0x649F, 0x28ED, 0x64A0, 0x64A0, 0x28E4, - 0x64A2, 0x64A2, 0x116C, 0x64A3, 0x64A3, 0x28EC, 0x64A4, 0x64A4, 0x0FDE, - 0x64A5, 0x64A5, 0x1161, 0x64A6, 0x64A6, 0x26A4, 0x64A9, 0x64A9, 0x1164, - 0x64AB, 0x64AB, 0x1168, 0x64AC, 0x64AC, 0x116A, 0x64AD, 0x64AD, 0x1167, - 0x64AE, 0x64AE, 0x1166, 0x64AF, 0x64AF, 0x42E1, 0x64B0, 0x64B0, 0x1160, - 0x64B1, 0x64B1, 0x28EF, 0x64B2, 0x64B2, 0x115D, 0x64B3, 0x64B3, 0x116D, - 0x64B4, 0x64B4, 0x4340, 0x64B6, 0x64B6, 0x3A64, 0x64BB, 0x64BC, 0x12BB, - 0x64BD, 0x64BD, 0x2B53, 0x64BE, 0x64BE, 0x12C5, 0x64BF, 0x64BF, 0x12C2, - 0x64C0, 0x64C0, 0x4645, 0x64C1, 0x64C1, 0x12B9, 0x64C2, 0x64C2, 0x12C0, - 0x64C3, 0x64C3, 0x2B55, 0x64C4, 0x64C4, 0x12BE, 0x64C5, 0x64C5, 0x12B8, - 0x64C7, 0x64C7, 0x12BF, 0x64C9, 0x64C9, 0x2B52, 0x64CA, 0x64CA, 0x13D8, - 0x64CB, 0x64CB, 0x12BA, 0x64CD, 0x64CD, 0x12C1, 0x64CE, 0x64CE, 0x13D7, - 0x64CF, 0x64CF, 0x2B51, 0x64D0, 0x64D0, 0x2B50, 0x64D2, 0x64D2, 0x12C3, - 0x64D3, 0x64D3, 0x3F03, 0x64D4, 0x64D4, 0x12C4, 0x64D6, 0x64D6, 0x2B4F, - 0x64D7, 0x64D7, 0x2B4E, 0x64D8, 0x64D8, 0x13D9, 0x64D9, 0x64D9, 0x2B58, - 0x64DA, 0x64DA, 0x12BD, 0x64DB, 0x64DB, 0x2B56, 0x64DD, 0x64DD, 0x431E, - 0x64E0, 0x64E0, 0x13DA, 0x64E1, 0x64E1, 0x4199, 0x64E2, 0x64E2, 0x13DF, - 0x64E3, 0x64E3, 0x2D6A, 0x64E4, 0x64E4, 0x2D6C, 0x64E5, 0x64E5, 0x419A, - 0x64E6, 0x64E6, 0x13DC, 0x64E7, 0x64E7, 0x37A8, 0x64E8, 0x64E8, 0x2D6D, - 0x64E9, 0x64E9, 0x2D69, 0x64EA, 0x64EA, 0x434A, 0x64EB, 0x64EB, 0x2D6B, - 0x64EC, 0x64EC, 0x13DD, 0x64ED, 0x64ED, 0x13E0, 0x64EF, 0x64EF, 0x2D68, - 0x64F0, 0x64F0, 0x13DB, 0x64F1, 0x64F1, 0x13DE, 0x64F2, 0x64F2, 0x14D3, - 0x64F3, 0x64F3, 0x2B57, 0x64F4, 0x64F4, 0x14D2, 0x64F7, 0x64F7, 0x14D8, - 0x64F8, 0x64F8, 0x2F2B, 0x64FA, 0x64FB, 0x14D6, 0x64FC, 0x64FC, 0x2F2E, - 0x64FD, 0x64FD, 0x2F2A, 0x64FE, 0x64FE, 0x14D4, 0x64FF, 0x64FF, 0x2F28, - 0x6500, 0x6500, 0x1582, 0x6501, 0x6501, 0x2F2C, 0x6503, 0x6503, 0x2F2D, - 0x6504, 0x6504, 0x2F29, 0x6506, 0x6506, 0x14D5, 0x6507, 0x6507, 0x3090, - 0x6509, 0x6509, 0x3093, 0x650A, 0x650A, 0x4536, 0x650C, 0x650C, 0x3094, - 0x650D, 0x650D, 0x3092, 0x650E, 0x650E, 0x3095, 0x650F, 0x650F, 0x1583, - 0x6510, 0x6510, 0x3091, 0x6511, 0x6511, 0x3AA9, 0x6513, 0x6513, 0x31D7, - 0x6514, 0x6514, 0x1617, 0x6515, 0x6515, 0x31D6, 0x6516, 0x6516, 0x31D5, - 0x6517, 0x6517, 0x31D4, 0x6518, 0x6518, 0x1616, 0x6519, 0x6519, 0x1618, - 0x651B, 0x651B, 0x32D2, 0x651C, 0x651C, 0x1673, 0x651D, 0x651D, 0x1672, - 0x651E, 0x651E, 0x4187, 0x651F, 0x651F, 0x3EC0, 0x6520, 0x6520, 0x3382, - 0x6521, 0x6521, 0x3381, 0x6522, 0x6522, 0x3384, 0x6523, 0x6523, 0x16F9, - 0x6524, 0x6524, 0x16C5, 0x6525, 0x6525, 0x341B, 0x6526, 0x6526, 0x3383, - 0x6529, 0x6529, 0x341A, 0x652A, 0x652A, 0x16FB, 0x652B, 0x652B, 0x16FA, - 0x652C, 0x652C, 0x1721, 0x652D, 0x652D, 0x3484, 0x652E, 0x652E, 0x34CA, - 0x652F, 0x652F, 0x02D5, 0x6530, 0x6530, 0x3E62, 0x6532, 0x6532, 0x216C, - 0x6533, 0x6533, 0x2B59, 0x6534, 0x6534, 0x022C, 0x6535, 0x6535, 0x44ED, - 0x6536, 0x6536, 0x03D7, 0x6537, 0x6537, 0x17F6, 0x6538, 0x6538, 0x04B9, - 0x6539, 0x6539, 0x04B7, 0x653B, 0x653B, 0x04B8, 0x653D, 0x653D, 0x19A1, - 0x653E, 0x653E, 0x05F3, 0x653F, 0x653F, 0x0741, 0x6541, 0x6541, 0x1B01, - 0x6543, 0x6543, 0x1B02, 0x6545, 0x6545, 0x0742, 0x6546, 0x6546, 0x1CBF, - 0x6548, 0x6549, 0x08D6, 0x654A, 0x654A, 0x1CBE, 0x654D, 0x654D, 0x419F, - 0x654F, 0x654F, 0x0ABD, 0x6551, 0x6551, 0x0AB9, 0x6553, 0x6553, 0x1F0C, - 0x6554, 0x6554, 0x0AC0, 0x6555, 0x6555, 0x0ABF, 0x6556, 0x6556, 0x0AB8, - 0x6557, 0x6557, 0x0ABB, 0x6558, 0x6558, 0x0ABE, 0x6559, 0x6559, 0x0ABA, - 0x655C, 0x655C, 0x2170, 0x655D, 0x655D, 0x0AB7, 0x655E, 0x655E, 0x0C70, - 0x655F, 0x655F, 0x41A5, 0x6562, 0x6563, 0x0C72, 0x6564, 0x6564, 0x216F, - 0x6565, 0x6565, 0x2172, 0x6566, 0x6566, 0x0C71, 0x6567, 0x6567, 0x216D, - 0x6568, 0x6568, 0x2171, 0x656A, 0x656A, 0x216E, 0x656B, 0x656B, 0x3A6C, - 0x656C, 0x656C, 0x0E2B, 0x656D, 0x656D, 0x41A4, 0x656F, 0x656F, 0x2409, - 0x6572, 0x6572, 0x0FE7, 0x6573, 0x6573, 0x26B4, 0x6574, 0x6574, 0x12C6, - 0x6575, 0x6575, 0x116E, 0x6576, 0x6576, 0x28F1, 0x6577, 0x6578, 0x116F, - 0x6579, 0x6579, 0x28F3, 0x657A, 0x657A, 0x28F2, 0x657B, 0x657B, 0x28F4, - 0x657C, 0x657C, 0x2B5B, 0x657F, 0x657F, 0x2B5A, 0x6580, 0x6580, 0x2D6F, - 0x6581, 0x6581, 0x2D6E, 0x6582, 0x6583, 0x13E1, 0x6584, 0x6584, 0x3096, - 0x6585, 0x6585, 0x41A3, 0x6586, 0x6586, 0x4648, 0x6587, 0x6587, 0x02D6, - 0x6588, 0x6588, 0x410B, 0x6589, 0x6589, 0x4554, 0x658C, 0x658C, 0x2173, - 0x6590, 0x6590, 0x0C75, 0x6591, 0x6591, 0x0C74, 0x6592, 0x6592, 0x240A, - 0x6594, 0x6594, 0x2F2F, 0x6595, 0x6595, 0x1674, 0x6596, 0x6596, 0x341C, - 0x6597, 0x6597, 0x02D7, 0x6599, 0x6599, 0x08D8, 0x659B, 0x659B, 0x0AC2, - 0x659C, 0x659C, 0x0AC1, 0x659D, 0x659E, 0x2174, 0x659F, 0x659F, 0x0E2C, - 0x65A0, 0x65A0, 0x26B5, 0x65A1, 0x65A1, 0x0FE8, 0x65A2, 0x65A2, 0x2B5C, - 0x65A4, 0x65A4, 0x02D8, 0x65A5, 0x65A5, 0x0346, 0x65A7, 0x65A7, 0x05F4, - 0x65A8, 0x65A8, 0x19A2, 0x65AA, 0x65AA, 0x1B03, 0x65AB, 0x65AB, 0x0743, - 0x65AC, 0x65AC, 0x0AC3, 0x65AE, 0x65AE, 0x2176, 0x65AF, 0x65AF, 0x0C76, - 0x65B0, 0x65B0, 0x0E2D, 0x65B2, 0x65B3, 0x28F5, 0x65B5, 0x65B5, 0x41A7, - 0x65B6, 0x65B6, 0x2D70, 0x65B7, 0x65B7, 0x14D9, 0x65B8, 0x65B8, 0x34CB, - 0x65B9, 0x65B9, 0x02D9, 0x65BB, 0x65BB, 0x19A3, 0x65BC, 0x65BC, 0x05F5, - 0x65BD, 0x65BD, 0x0744, 0x65BE, 0x65BE, 0x3E3B, 0x65BF, 0x65BF, 0x1B04, - 0x65C1, 0x65C1, 0x08D9, 0x65C2, 0x65C2, 0x1CC3, 0x65C3, 0x65C4, 0x1CC1, - 0x65C5, 0x65C5, 0x08DA, 0x65C6, 0x65C6, 0x1CC0, 0x65CB, 0x65CC, 0x0AC5, - 0x65CD, 0x65CD, 0x1F0D, 0x65CE, 0x65CE, 0x0AC7, 0x65CF, 0x65CF, 0x0AC4, - 0x65D0, 0x65D0, 0x2177, 0x65D1, 0x65D1, 0x41AA, 0x65D2, 0x65D2, 0x2178, - 0x65D3, 0x65D3, 0x240B, 0x65D4, 0x65D4, 0x3BA8, 0x65D6, 0x65D6, 0x0FEA, - 0x65D7, 0x65D7, 0x0FE9, 0x65DA, 0x65DA, 0x2D71, 0x65DB, 0x65DB, 0x2F30, - 0x65DD, 0x65DD, 0x3098, 0x65DE, 0x65DE, 0x3097, 0x65DF, 0x65DF, 0x31D8, - 0x65E0, 0x65E0, 0x022D, 0x65E1, 0x65E1, 0x1789, 0x65E2, 0x65E2, 0x0745, - 0x65E3, 0x65E3, 0x41AE, 0x65E5, 0x65E5, 0x02DA, 0x65E6, 0x65E6, 0x0347, - 0x65E8, 0x65E8, 0x03D9, 0x65E9, 0x65E9, 0x03D8, 0x65EC, 0x65ED, 0x03DA, - 0x65EE, 0x65EE, 0x17F8, 0x65EF, 0x65EF, 0x17F7, 0x65F0, 0x65F0, 0x189E, - 0x65F1, 0x65F1, 0x04BA, 0x65F2, 0x65F2, 0x18A1, 0x65F3, 0x65F3, 0x18A0, - 0x65F4, 0x65F4, 0x189F, 0x65F5, 0x65F5, 0x18A2, 0x65FA, 0x65FA, 0x05F6, - 0x65FB, 0x65FB, 0x19A9, 0x65FC, 0x65FC, 0x19A5, 0x65FD, 0x65FD, 0x19AE, - 0x65FF, 0x65FF, 0x464A, 0x6600, 0x6600, 0x05FD, 0x6602, 0x6602, 0x05FB, - 0x6603, 0x6603, 0x19AA, 0x6604, 0x6604, 0x19A6, 0x6605, 0x6605, 0x19AD, - 0x6606, 0x6606, 0x05FA, 0x6607, 0x6607, 0x0601, 0x6608, 0x6608, 0x19A8, - 0x6609, 0x6609, 0x19A4, 0x660A, 0x660A, 0x0600, 0x660B, 0x660B, 0x19AB, - 0x660C, 0x660C, 0x05F9, 0x660D, 0x660D, 0x19AC, 0x660E, 0x660E, 0x05FC, - 0x660F, 0x660F, 0x05FE, 0x6610, 0x6610, 0x19B0, 0x6611, 0x6611, 0x19AF, - 0x6612, 0x6612, 0x19A7, 0x6613, 0x6613, 0x05F8, 0x6614, 0x6614, 0x05F7, - 0x6615, 0x6615, 0x05FF, 0x6618, 0x6618, 0x41B1, 0x661C, 0x661C, 0x1B09, - 0x661D, 0x661D, 0x1B0F, 0x661E, 0x661E, 0x3A93, 0x661F, 0x661F, 0x074B, - 0x6620, 0x6620, 0x0748, 0x6621, 0x6621, 0x1B06, 0x6622, 0x6622, 0x1B0B, - 0x6623, 0x6623, 0x4295, 0x6624, 0x6624, 0x074E, 0x6625, 0x6625, 0x0746, - 0x6626, 0x6626, 0x1B0A, 0x6627, 0x6627, 0x0749, 0x6628, 0x6628, 0x074C, - 0x662B, 0x662B, 0x1B0D, 0x662D, 0x662D, 0x0747, 0x662E, 0x662E, 0x1B12, - 0x662F, 0x662F, 0x074A, 0x6630, 0x6630, 0x3A8D, 0x6631, 0x6631, 0x074D, - 0x6632, 0x6632, 0x1B07, 0x6633, 0x6633, 0x1B0C, 0x6634, 0x6634, 0x1B10, - 0x6635, 0x6635, 0x1B08, 0x6636, 0x6636, 0x1B05, 0x6639, 0x6639, 0x1B11, - 0x663A, 0x663A, 0x1B0E, 0x6641, 0x6641, 0x08E2, 0x6642, 0x6642, 0x08DB, - 0x6643, 0x6643, 0x08DE, 0x6644, 0x6644, 0x41B4, 0x6645, 0x6645, 0x08E1, - 0x6647, 0x6647, 0x1CC6, 0x6648, 0x6648, 0x3D99, 0x6649, 0x6649, 0x08DC, - 0x664A, 0x664A, 0x1CC4, 0x664B, 0x664B, 0x41B7, 0x664C, 0x664C, 0x08E0, - 0x664F, 0x664F, 0x08DD, 0x6651, 0x6651, 0x1CC7, 0x6652, 0x6652, 0x08DF, - 0x6653, 0x6653, 0x464B, 0x6657, 0x6657, 0x409B, 0x6659, 0x6659, 0x1F11, - 0x665A, 0x665A, 0x0AC9, 0x665B, 0x665B, 0x1F10, 0x665C, 0x665C, 0x1F12, - 0x665D, 0x665D, 0x0AC8, 0x665E, 0x665E, 0x0ACD, 0x665F, 0x665F, 0x1CC5, - 0x6661, 0x6661, 0x1F0F, 0x6662, 0x6662, 0x1F13, 0x6663, 0x6663, 0x3A90, - 0x6664, 0x6664, 0x0ACA, 0x6665, 0x6665, 0x1F0E, 0x6666, 0x6666, 0x0ACC, - 0x6667, 0x6667, 0x41B9, 0x6668, 0x6668, 0x0ACB, 0x666A, 0x666A, 0x217F, - 0x666B, 0x666B, 0x3A8B, 0x666C, 0x666C, 0x217A, 0x666E, 0x666E, 0x0C77, - 0x666F, 0x666F, 0x0C7B, 0x6670, 0x6670, 0x0C78, 0x6671, 0x6671, 0x217D, - 0x6672, 0x6672, 0x2180, 0x6673, 0x6673, 0x41BB, 0x6674, 0x6674, 0x0C79, - 0x6676, 0x6676, 0x0C7A, 0x6677, 0x6677, 0x0C7F, 0x6678, 0x6678, 0x2414, - 0x6679, 0x6679, 0x217E, 0x667A, 0x667A, 0x0C7D, 0x667B, 0x667B, 0x217B, - 0x667C, 0x667C, 0x2179, 0x667D, 0x667D, 0x469B, 0x667E, 0x667E, 0x0C7E, - 0x6680, 0x6680, 0x217C, 0x6684, 0x6684, 0x0E33, 0x6685, 0x6685, 0x4162, - 0x6686, 0x6686, 0x240C, 0x6687, 0x6688, 0x0E30, 0x6689, 0x6689, 0x0E2F, - 0x668A, 0x668A, 0x2411, 0x668B, 0x668B, 0x2410, 0x668C, 0x668C, 0x240D, - 0x668D, 0x668D, 0x0E35, 0x668E, 0x668E, 0x3A89, 0x6690, 0x6690, 0x240F, - 0x6691, 0x6691, 0x0C7C, 0x6692, 0x6692, 0x464D, 0x6694, 0x6694, 0x2413, - 0x6695, 0x6695, 0x240E, 0x6696, 0x6696, 0x0E32, 0x6697, 0x6697, 0x0E2E, - 0x6698, 0x6698, 0x0E34, 0x6699, 0x6699, 0x2412, 0x669A, 0x669A, 0x3D3D, - 0x669D, 0x669D, 0x0FED, 0x669F, 0x669F, 0x26B8, 0x66A0, 0x66A0, 0x26B7, - 0x66A1, 0x66A1, 0x26B6, 0x66A2, 0x66A2, 0x0FEB, 0x66A4, 0x66A4, 0x40BA, - 0x66A8, 0x66A8, 0x0FEC, 0x66A9, 0x66A9, 0x28F9, 0x66AA, 0x66AA, 0x28FC, - 0x66AB, 0x66AB, 0x1172, 0x66AD, 0x66AD, 0x4948, 0x66AE, 0x66AE, 0x1171, - 0x66AF, 0x66AF, 0x28FD, 0x66B0, 0x66B0, 0x28F8, 0x66B1, 0x66B1, 0x1174, - 0x66B2, 0x66B2, 0x28FA, 0x66B3, 0x66B3, 0x40B5, 0x66B4, 0x66B4, 0x1173, - 0x66B5, 0x66B5, 0x28F7, 0x66B6, 0x66B6, 0x3E13, 0x66B7, 0x66B7, 0x28FB, - 0x66B8, 0x66B8, 0x12CC, 0x66B9, 0x66B9, 0x12C9, 0x66BA, 0x66BA, 0x2B65, - 0x66BB, 0x66BB, 0x2B64, 0x66BD, 0x66BD, 0x2B63, 0x66BE, 0x66BE, 0x2B5E, - 0x66BF, 0x66BF, 0x3D9A, 0x66C0, 0x66C0, 0x2B5F, 0x66C4, 0x66C4, 0x12CA, - 0x66C6, 0x66C6, 0x12C7, 0x66C7, 0x66C7, 0x12CB, 0x66C8, 0x66C8, 0x2B5D, - 0x66C9, 0x66C9, 0x12C8, 0x66CA, 0x66CB, 0x2B60, 0x66CC, 0x66CC, 0x2B66, - 0x66CD, 0x66CD, 0x40B8, 0x66CE, 0x66CE, 0x3A77, 0x66CF, 0x66CF, 0x2B62, - 0x66D2, 0x66D2, 0x2D72, 0x66D6, 0x66D6, 0x13E4, 0x66D8, 0x66D8, 0x2F33, - 0x66D9, 0x66D9, 0x13E3, 0x66DA, 0x66DB, 0x2F31, 0x66DC, 0x66DC, 0x14DA, - 0x66DD, 0x66DD, 0x1585, 0x66DE, 0x66DE, 0x3099, 0x66E0, 0x66E0, 0x1584, - 0x66E3, 0x66E4, 0x31DA, 0x66E6, 0x66E6, 0x1619, 0x66E8, 0x66E8, 0x31D9, - 0x66E9, 0x66E9, 0x1675, 0x66EB, 0x66EB, 0x341D, 0x66EC, 0x66EC, 0x16FC, - 0x66ED, 0x66EE, 0x3485, 0x66F0, 0x66F0, 0x02DB, 0x66F1, 0x66F1, 0x3E84, - 0x66F2, 0x66F3, 0x03DC, 0x66F4, 0x66F4, 0x04BB, 0x66F6, 0x66F6, 0x19B1, - 0x66F7, 0x66F7, 0x074F, 0x66F8, 0x66F8, 0x08E3, 0x66F9, 0x66F9, 0x0ACE, - 0x66FC, 0x66FC, 0x0A1F, 0x66FE, 0x66FF, 0x0C80, 0x6700, 0x6700, 0x0BF0, - 0x6701, 0x6701, 0x2181, 0x6702, 0x6702, 0x41C4, 0x6703, 0x6703, 0x0E36, - 0x6704, 0x6704, 0x26BA, 0x6705, 0x6705, 0x26B9, 0x6708, 0x6708, 0x02DC, - 0x6709, 0x6709, 0x03DE, 0x670A, 0x670A, 0x19B2, 0x670B, 0x670B, 0x0603, - 0x670C, 0x670C, 0x3FE2, 0x670D, 0x670D, 0x0602, 0x670E, 0x670E, 0x3DA1, - 0x670F, 0x6710, 0x1B13, 0x6712, 0x6713, 0x1CC8, 0x6714, 0x6715, 0x08E4, - 0x6716, 0x6716, 0x464F, 0x6717, 0x6717, 0x08E6, 0x6718, 0x6718, 0x1F14, - 0x671B, 0x671B, 0x0AD0, 0x671D, 0x671D, 0x0C83, 0x671E, 0x671E, 0x3D8B, - 0x671F, 0x671F, 0x0C82, 0x6720, 0x6720, 0x2415, 0x6721, 0x6721, 0x2522, - 0x6722, 0x6722, 0x26BB, 0x6723, 0x6723, 0x2B67, 0x6725, 0x6725, 0x379F, - 0x6726, 0x6726, 0x14DB, 0x6727, 0x6727, 0x161A, 0x6728, 0x6728, 0x02DD, - 0x672A, 0x672B, 0x034A, 0x672C, 0x672C, 0x0349, 0x672D, 0x672D, 0x034C, - 0x672E, 0x672E, 0x0348, 0x6731, 0x6731, 0x03E1, 0x6733, 0x6733, 0x1800, - 0x6734, 0x6734, 0x03E0, 0x6735, 0x6735, 0x03E2, 0x6736, 0x6736, 0x3E41, - 0x6738, 0x6738, 0x17FB, 0x6739, 0x6739, 0x17FA, 0x673A, 0x673A, 0x17FD, - 0x673B, 0x673B, 0x17FC, 0x673C, 0x673C, 0x17FF, 0x673D, 0x673D, 0x03DF, - 0x673E, 0x673E, 0x17F9, 0x673F, 0x673F, 0x17FE, 0x6744, 0x6744, 0x401B, - 0x6745, 0x6745, 0x18A3, 0x6746, 0x6746, 0x04C5, 0x6747, 0x6747, 0x18A4, - 0x6748, 0x6748, 0x18A8, 0x6749, 0x6749, 0x04C4, 0x674B, 0x674B, 0x18AC, - 0x674C, 0x674C, 0x18A7, 0x674D, 0x674D, 0x18AA, 0x674E, 0x6751, 0x04BD, - 0x6753, 0x6753, 0x04C7, 0x6755, 0x6755, 0x18A6, 0x6756, 0x6756, 0x04C2, - 0x6757, 0x6757, 0x04C8, 0x6759, 0x6759, 0x18A5, 0x675A, 0x675A, 0x18AB, - 0x675C, 0x675C, 0x04C1, 0x675D, 0x675D, 0x18A9, 0x675E, 0x675E, 0x04C3, - 0x675F, 0x675F, 0x04BC, 0x6760, 0x6760, 0x04C6, 0x6761, 0x6761, 0x3D66, - 0x6762, 0x6762, 0x41CB, 0x6767, 0x6767, 0x41CA, 0x676A, 0x676A, 0x0618, - 0x676C, 0x676C, 0x19B4, 0x676D, 0x676D, 0x0604, 0x676F, 0x6770, 0x060E, - 0x6771, 0x6771, 0x0607, 0x6772, 0x6772, 0x0619, 0x6773, 0x6773, 0x0609, - 0x6774, 0x6774, 0x19BC, 0x6775, 0x6775, 0x0614, 0x6776, 0x6776, 0x19B7, - 0x6777, 0x6777, 0x060A, 0x6778, 0x6779, 0x19C6, 0x677A, 0x677A, 0x19BF, - 0x677B, 0x677B, 0x19B8, 0x677C, 0x677C, 0x0617, 0x677D, 0x677D, 0x19C4, - 0x677E, 0x677E, 0x0612, 0x677F, 0x677F, 0x0610, 0x6781, 0x6781, 0x19C5, - 0x6783, 0x6783, 0x19C3, 0x6784, 0x6784, 0x19BB, 0x6785, 0x6785, 0x19B3, - 0x6786, 0x6786, 0x19BA, 0x6787, 0x6787, 0x060B, 0x6789, 0x6789, 0x0611, - 0x678B, 0x678B, 0x0605, 0x678C, 0x678C, 0x19BE, 0x678D, 0x678D, 0x19BD, - 0x678E, 0x678E, 0x19B5, 0x678F, 0x678F, 0x46C1, 0x6790, 0x6790, 0x0613, - 0x6791, 0x6791, 0x19C1, 0x6792, 0x6792, 0x19B6, 0x6793, 0x6793, 0x0616, - 0x6794, 0x6794, 0x19C8, 0x6795, 0x6795, 0x0606, 0x6797, 0x6797, 0x060D, - 0x6798, 0x6798, 0x19B9, 0x6799, 0x6799, 0x19C2, 0x679A, 0x679A, 0x0615, - 0x679C, 0x679C, 0x0608, 0x679D, 0x679D, 0x060C, 0x679F, 0x679F, 0x19C0, - 0x67A0, 0x67A0, 0x3D7A, 0x67A4, 0x67A4, 0x4651, 0x67AC, 0x67AC, 0x41E3, - 0x67AE, 0x67AE, 0x1B34, 0x67AF, 0x67AF, 0x0757, 0x67B0, 0x67B0, 0x0764, - 0x67B1, 0x67B1, 0x41F4, 0x67B2, 0x67B2, 0x1B2F, 0x67B3, 0x67B3, 0x1B25, - 0x67B4, 0x67B4, 0x075D, 0x67B5, 0x67B5, 0x1B23, 0x67B6, 0x67B6, 0x0756, - 0x67B7, 0x67B7, 0x1B1E, 0x67B8, 0x67B8, 0x0760, 0x67B9, 0x67B9, 0x1B2B, - 0x67BA, 0x67BA, 0x1B18, 0x67BB, 0x67BB, 0x1B1A, 0x67BF, 0x67BF, 0x37FA, - 0x67C0, 0x67C0, 0x1B1D, 0x67C1, 0x67C1, 0x1B15, 0x67C2, 0x67C2, 0x1B2A, - 0x67C3, 0x67C3, 0x1B3A, 0x67C4, 0x67C4, 0x075B, 0x67C5, 0x67C5, 0x1B1F, - 0x67C6, 0x67C6, 0x1B31, 0x67C8, 0x67C8, 0x1B17, 0x67C9, 0x67CA, 0x1B38, - 0x67CB, 0x67CB, 0x1B3C, 0x67CC, 0x67CC, 0x1B33, 0x67CD, 0x67CD, 0x1B24, - 0x67CE, 0x67CE, 0x1B2C, 0x67CF, 0x67CF, 0x0761, 0x67D0, 0x67D0, 0x0754, - 0x67D1, 0x67D1, 0x075C, 0x67D2, 0x67D2, 0x0768, 0x67D3, 0x67D3, 0x0751, - 0x67D4, 0x67D4, 0x0753, 0x67D6, 0x67D6, 0x3B58, 0x67D7, 0x67D7, 0x41CE, - 0x67D8, 0x67D8, 0x1B1C, 0x67D9, 0x67D9, 0x0765, 0x67DA, 0x67DA, 0x075E, - 0x67DB, 0x67DB, 0x1B36, 0x67DC, 0x67DC, 0x1B19, 0x67DD, 0x67DD, 0x0767, - 0x67DE, 0x67DE, 0x0762, 0x67DF, 0x67DF, 0x1B22, 0x67E2, 0x67E2, 0x0766, - 0x67E3, 0x67E3, 0x1B29, 0x67E4, 0x67E4, 0x1B21, 0x67E5, 0x67E5, 0x075F, - 0x67E6, 0x67E6, 0x1B35, 0x67E7, 0x67E7, 0x1B2D, 0x67E9, 0x67E9, 0x0759, - 0x67EA, 0x67EA, 0x1B3B, 0x67EB, 0x67EB, 0x1B20, 0x67EC, 0x67EC, 0x0755, - 0x67ED, 0x67ED, 0x1B32, 0x67EE, 0x67EE, 0x1B28, 0x67EF, 0x67EF, 0x075A, - 0x67F0, 0x67F0, 0x1B2E, 0x67F1, 0x67F1, 0x0752, 0x67F2, 0x67F2, 0x1B16, - 0x67F3, 0x67F3, 0x0763, 0x67F4, 0x67F4, 0x08F5, 0x67F5, 0x67F5, 0x0758, - 0x67F6, 0x67F6, 0x1B27, 0x67F7, 0x67F7, 0x1B26, 0x67F8, 0x67F8, 0x1B1B, - 0x67F9, 0x67F9, 0x3996, 0x67FA, 0x67FA, 0x1B37, 0x67FC, 0x67FC, 0x1B30, - 0x67FE, 0x67FE, 0x4555, 0x67FF, 0x67FF, 0x0750, 0x6800, 0x6800, 0x43C7, - 0x6801, 0x6801, 0x41D3, 0x6802, 0x6802, 0x3FC8, 0x6803, 0x6803, 0x3D6A, - 0x6804, 0x6804, 0x4556, 0x680D, 0x680D, 0x4281, 0x6810, 0x6810, 0x399C, - 0x6812, 0x6812, 0x1CDD, 0x6813, 0x6813, 0x08FC, 0x6814, 0x6814, 0x1CDE, - 0x6816, 0x6816, 0x1CD2, 0x6817, 0x6817, 0x08F1, 0x6818, 0x6818, 0x08FD, - 0x681A, 0x681A, 0x1CCB, 0x681B, 0x681B, 0x4072, 0x681C, 0x681C, 0x1CD4, - 0x681D, 0x681D, 0x1CDC, 0x681E, 0x681E, 0x46C2, 0x681F, 0x681F, 0x1CCA, - 0x6820, 0x6820, 0x1CE5, 0x6821, 0x6821, 0x08E7, 0x6822, 0x6822, 0x41D0, - 0x6825, 0x6825, 0x1CE4, 0x6826, 0x6826, 0x1CDF, 0x6828, 0x6828, 0x1CE0, - 0x6829, 0x6829, 0x08EF, 0x682A, 0x682A, 0x08FA, 0x682B, 0x682B, 0x1CD6, - 0x682D, 0x682D, 0x1CD7, 0x682E, 0x682E, 0x1CE1, 0x682F, 0x682F, 0x1CD8, - 0x6831, 0x6831, 0x1CD3, 0x6832, 0x6833, 0x1CCD, 0x6834, 0x6834, 0x1CDB, - 0x6835, 0x6835, 0x1CD5, 0x6836, 0x6836, 0x3E2E, 0x6837, 0x6837, 0x421D, - 0x6838, 0x6838, 0x08E8, 0x6839, 0x6839, 0x08EC, 0x683A, 0x683A, 0x1CE3, - 0x683B, 0x683B, 0x1CCF, 0x683C, 0x683C, 0x08F8, 0x683D, 0x683D, 0x08F4, - 0x683E, 0x683E, 0x4147, 0x6840, 0x6840, 0x08F7, 0x6841, 0x6841, 0x08FE, - 0x6842, 0x6842, 0x08ED, 0x6843, 0x6843, 0x08F9, 0x6844, 0x6844, 0x1CDA, - 0x6845, 0x6845, 0x08FB, 0x6846, 0x6846, 0x08EA, 0x6847, 0x6847, 0x3BEB, - 0x6848, 0x6848, 0x08E9, 0x6849, 0x6849, 0x1CCC, 0x684A, 0x684A, 0x4653, - 0x684B, 0x684B, 0x1CD0, 0x684C, 0x684C, 0x08F2, 0x684D, 0x684D, 0x1CE2, - 0x684E, 0x684E, 0x1CD9, 0x684F, 0x684F, 0x1CD1, 0x6850, 0x6850, 0x08F6, - 0x6851, 0x6851, 0x08F3, 0x6853, 0x6853, 0x08EB, 0x6854, 0x6854, 0x08EE, - 0x6855, 0x6855, 0x3D90, 0x6856, 0x6856, 0x3814, 0x685D, 0x685D, 0x41D6, - 0x6865, 0x6865, 0x4557, 0x686B, 0x686B, 0x1F29, 0x686D, 0x686E, 0x1F19, - 0x686F, 0x686F, 0x1F1E, 0x6871, 0x6871, 0x1F2D, 0x6872, 0x6872, 0x1F2A, - 0x6874, 0x6874, 0x1F23, 0x6875, 0x6875, 0x1F22, 0x6876, 0x6876, 0x0AD7, - 0x6877, 0x6877, 0x1F26, 0x6878, 0x6878, 0x1F35, 0x6879, 0x6879, 0x1F15, - 0x687B, 0x687B, 0x1F36, 0x687C, 0x687C, 0x1F28, 0x687D, 0x687D, 0x1F3A, - 0x687E, 0x687E, 0x1F2E, 0x687F, 0x687F, 0x0AD6, 0x6880, 0x6880, 0x1F2C, - 0x6881, 0x6881, 0x0AD1, 0x6882, 0x6882, 0x0AE6, 0x6883, 0x6883, 0x0ADC, - 0x6884, 0x6884, 0x4654, 0x6885, 0x6885, 0x0AE0, 0x6886, 0x6886, 0x0ADF, - 0x6887, 0x6887, 0x1F16, 0x6888, 0x6888, 0x46B7, 0x6889, 0x6889, 0x1F33, - 0x688A, 0x688A, 0x1F39, 0x688B, 0x688B, 0x1F31, 0x688C, 0x688C, 0x1F38, - 0x688F, 0x688F, 0x1F25, 0x6890, 0x6890, 0x1F17, 0x6891, 0x6891, 0x1F37, - 0x6892, 0x6892, 0x1F27, 0x6893, 0x6893, 0x0AD4, 0x6894, 0x6894, 0x0AE1, - 0x6896, 0x6896, 0x1F30, 0x6897, 0x6897, 0x0ADA, 0x6898, 0x6898, 0x3AAA, - 0x689B, 0x689B, 0x1F2F, 0x689C, 0x689C, 0x1F18, 0x689D, 0x689D, 0x0AE2, - 0x689F, 0x689F, 0x0AE4, 0x68A0, 0x68A0, 0x1F32, 0x68A1, 0x68A1, 0x0AE5, - 0x68A2, 0x68A2, 0x0AD3, 0x68A3, 0x68A3, 0x1F1F, 0x68A4, 0x68A4, 0x1F34, - 0x68A6, 0x68A6, 0x40E4, 0x68A7, 0x68A7, 0x0AD9, 0x68A8, 0x68A8, 0x0AE3, - 0x68A9, 0x68A9, 0x1F21, 0x68AA, 0x68AA, 0x1F2B, 0x68AB, 0x68AB, 0x1F1C, - 0x68AC, 0x68AC, 0x1F20, 0x68AD, 0x68AD, 0x0ADE, 0x68AE, 0x68AE, 0x1F1B, - 0x68AF, 0x68AF, 0x0AD2, 0x68B0, 0x68B0, 0x0ADB, 0x68B1, 0x68B1, 0x0AD8, - 0x68B2, 0x68B2, 0x1F24, 0x68B3, 0x68B3, 0x08F0, 0x68B4, 0x68B4, 0x2198, - 0x68B5, 0x68B5, 0x0AD5, 0x68B6, 0x68B6, 0x3A9E, 0x68B9, 0x68B9, 0x3D14, - 0x68BD, 0x68BD, 0x427C, 0x68C3, 0x68C3, 0x41DC, 0x68C4, 0x68C4, 0x0ADD, - 0x68C5, 0x68C5, 0x3C2E, 0x68C6, 0x68C6, 0x219B, 0x68C7, 0x68C7, 0x21B1, - 0x68C8, 0x68C8, 0x21A6, 0x68C9, 0x68C9, 0x0C97, 0x68CA, 0x68CA, 0x42EB, - 0x68CB, 0x68CB, 0x0C92, 0x68CC, 0x68CC, 0x2195, 0x68CD, 0x68CD, 0x0C93, - 0x68CE, 0x68CE, 0x21A5, 0x68D0, 0x68D0, 0x219E, 0x68D1, 0x68D1, 0x21AB, - 0x68D2, 0x68D2, 0x0C8F, 0x68D3, 0x68D3, 0x2183, 0x68D4, 0x68D4, 0x21AD, - 0x68D5, 0x68D5, 0x0C85, 0x68D6, 0x68D6, 0x218B, 0x68D7, 0x68D7, 0x0C88, - 0x68D8, 0x68D8, 0x0C87, 0x68DA, 0x68DA, 0x0C98, 0x68DC, 0x68DC, 0x2185, - 0x68DD, 0x68DE, 0x21A7, 0x68DF, 0x68DF, 0x0C8A, 0x68E0, 0x68E0, 0x0C86, - 0x68E1, 0x68E1, 0x2193, 0x68E3, 0x68E3, 0x0C91, 0x68E4, 0x68E4, 0x218E, - 0x68E6, 0x68E6, 0x21A9, 0x68E7, 0x68E7, 0x0C8D, 0x68E8, 0x68E8, 0x21A1, - 0x68E9, 0x68E9, 0x21AE, 0x68EA, 0x68EA, 0x2188, 0x68EB, 0x68EB, 0x218D, - 0x68EC, 0x68EC, 0x2187, 0x68EE, 0x68EE, 0x0C8C, 0x68EF, 0x68EF, 0x219A, - 0x68F0, 0x68F0, 0x242B, 0x68F1, 0x68F1, 0x2189, 0x68F2, 0x68F2, 0x0C90, - 0x68F3, 0x68F3, 0x2192, 0x68F4, 0x68F4, 0x21AA, 0x68F5, 0x68F5, 0x0C8B, - 0x68F6, 0x68F6, 0x218F, 0x68F7, 0x68F7, 0x218C, 0x68F8, 0x68F8, 0x219D, - 0x68F9, 0x68F9, 0x0C8E, 0x68FA, 0x68FA, 0x0C84, 0x68FB, 0x68FB, 0x0C9A, - 0x68FC, 0x68FC, 0x21A0, 0x68FD, 0x68FD, 0x219F, 0x6900, 0x6900, 0x41DF, - 0x6901, 0x6901, 0x41DE, 0x6902, 0x6902, 0x42FB, 0x6903, 0x6903, 0x429C, - 0x6904, 0x6904, 0x2184, 0x6905, 0x6905, 0x0C89, 0x6906, 0x6906, 0x21AC, - 0x6907, 0x6907, 0x2194, 0x6908, 0x6908, 0x2196, 0x6909, 0x6909, 0x4658, - 0x690A, 0x690A, 0x21A3, 0x690B, 0x690B, 0x21A2, 0x690C, 0x690C, 0x2182, - 0x690D, 0x690D, 0x0C94, 0x690E, 0x690E, 0x0C96, 0x690F, 0x690F, 0x218A, - 0x6910, 0x6910, 0x2191, 0x6911, 0x6911, 0x2199, 0x6912, 0x6912, 0x0C95, - 0x6913, 0x6913, 0x2190, 0x6914, 0x6914, 0x219C, 0x6915, 0x6915, 0x21AF, - 0x6917, 0x6917, 0x21A4, 0x6918, 0x6918, 0x3DA2, 0x691A, 0x691A, 0x3D80, - 0x691B, 0x691B, 0x37BD, 0x6925, 0x6925, 0x21B0, 0x692A, 0x692A, 0x2186, - 0x692C, 0x692C, 0x3F38, 0x692F, 0x692F, 0x243F, 0x6930, 0x6930, 0x0E3E, - 0x6932, 0x6932, 0x243D, 0x6933, 0x6933, 0x2428, 0x6934, 0x6934, 0x242D, - 0x6935, 0x6935, 0x2426, 0x6936, 0x6936, 0x41E7, 0x6937, 0x6937, 0x2439, - 0x6938, 0x6938, 0x2418, 0x6939, 0x6939, 0x241F, 0x693B, 0x693B, 0x2437, - 0x693C, 0x693C, 0x2441, 0x693D, 0x693D, 0x2429, 0x693E, 0x693E, 0x4056, - 0x693F, 0x693F, 0x241C, 0x6940, 0x6940, 0x242F, 0x6941, 0x6941, 0x2434, - 0x6942, 0x6942, 0x2420, 0x6943, 0x6943, 0x4659, 0x6944, 0x6944, 0x2431, - 0x6945, 0x6945, 0x241D, 0x6946, 0x6946, 0x456F, 0x6948, 0x6949, 0x2424, - 0x694A, 0x694A, 0x0E40, 0x694B, 0x694B, 0x2438, 0x694C, 0x694C, 0x2436, - 0x694E, 0x694E, 0x2419, 0x694F, 0x694F, 0x243B, 0x6951, 0x6951, 0x243C, - 0x6952, 0x6952, 0x243E, 0x6953, 0x6953, 0x0E44, 0x6954, 0x6954, 0x0E3C, - 0x6955, 0x6955, 0x3D86, 0x6956, 0x6956, 0x1F1D, 0x6957, 0x6957, 0x2421, - 0x6958, 0x6958, 0x2433, 0x6959, 0x6959, 0x2422, 0x695A, 0x695A, 0x0E39, - 0x695B, 0x695B, 0x0E49, 0x695C, 0x695C, 0x243A, 0x695D, 0x695D, 0x0E47, - 0x695E, 0x695E, 0x0E43, 0x695F, 0x695F, 0x2417, 0x6960, 0x6960, 0x0E3B, - 0x6961, 0x6961, 0x41E4, 0x6962, 0x6962, 0x241A, 0x6963, 0x6963, 0x0E48, - 0x6964, 0x6964, 0x465B, 0x6965, 0x6965, 0x242A, 0x6966, 0x6966, 0x2416, - 0x6967, 0x6967, 0x3D15, 0x6968, 0x6968, 0x0E41, 0x6969, 0x6969, 0x242E, - 0x696A, 0x696A, 0x241E, 0x696B, 0x696B, 0x0E42, 0x696C, 0x696C, 0x2427, - 0x696D, 0x696D, 0x0E38, 0x696E, 0x696E, 0x0C99, 0x696F, 0x696F, 0x2430, - 0x6970, 0x6970, 0x2197, 0x6971, 0x6971, 0x241B, 0x6972, 0x6972, 0x3A6D, - 0x6973, 0x6973, 0x41DB, 0x6974, 0x6974, 0x2435, 0x6975, 0x6975, 0x0E3D, - 0x6976, 0x6976, 0x2432, 0x6977, 0x6977, 0x0E3A, 0x6978, 0x6978, 0x242C, - 0x6979, 0x6979, 0x0E45, 0x697A, 0x697A, 0x2423, 0x697B, 0x697B, 0x2440, - 0x6980, 0x6980, 0x3F3E, 0x6982, 0x6982, 0x0E3F, 0x6983, 0x6983, 0x24AF, - 0x6985, 0x6985, 0x465D, 0x6986, 0x6986, 0x0E46, 0x698A, 0x698A, 0x3D74, - 0x698D, 0x698D, 0x26C9, 0x698E, 0x698E, 0x26C7, 0x6990, 0x6990, 0x26DD, - 0x6991, 0x6991, 0x26C5, 0x6993, 0x6993, 0x26D7, 0x6994, 0x6994, 0x0E37, - 0x6995, 0x6995, 0x0FF0, 0x6996, 0x6996, 0x26C1, 0x6997, 0x6997, 0x26DC, - 0x6998, 0x6998, 0x41E8, 0x6999, 0x6999, 0x26C6, 0x699A, 0x699A, 0x26D4, - 0x699B, 0x699B, 0x0FF5, 0x699C, 0x699C, 0x0FEE, 0x699E, 0x699E, 0x26DA, - 0x699F, 0x699F, 0x465C, 0x69A0, 0x69A0, 0x26BF, 0x69A1, 0x69A1, 0x26D9, - 0x69A2, 0x69A2, 0x3730, 0x69A3, 0x69A3, 0x1000, 0x69A4, 0x69A4, 0x26D0, - 0x69A5, 0x69A5, 0x26E0, 0x69A6, 0x69A6, 0x0FFE, 0x69A7, 0x69A7, 0x26C8, - 0x69A8, 0x69A8, 0x0FEF, 0x69A9, 0x69A9, 0x26CA, 0x69AA, 0x69AA, 0x26D8, - 0x69AB, 0x69AB, 0x0FF8, 0x69AC, 0x69AC, 0x26C3, 0x69AD, 0x69AD, 0x0FFC, - 0x69AE, 0x69AE, 0x0FF2, 0x69AF, 0x69AF, 0x26CC, 0x69B0, 0x69B0, 0x26C2, - 0x69B1, 0x69B1, 0x26BC, 0x69B2, 0x69B2, 0x3FF6, 0x69B3, 0x69B3, 0x26D6, - 0x69B4, 0x69B4, 0x0FF9, 0x69B5, 0x69B5, 0x26DF, 0x69B6, 0x69B6, 0x26BD, - 0x69B7, 0x69B7, 0x0FF6, 0x69B9, 0x69B9, 0x26D2, 0x69BB, 0x69BB, 0x0FF7, - 0x69BC, 0x69BC, 0x26C4, 0x69BD, 0x69BD, 0x26CF, 0x69BE, 0x69BE, 0x26CB, - 0x69BF, 0x69BF, 0x26CD, 0x69C0, 0x69C0, 0x3F5D, 0x69C1, 0x69C1, 0x0FF1, - 0x69C2, 0x69C2, 0x26DE, 0x69C3, 0x69C3, 0x0FFF, 0x69C4, 0x69C4, 0x26CE, - 0x69C6, 0x69C6, 0x26E1, 0x69C9, 0x69C9, 0x26BE, 0x69CA, 0x69CA, 0x26D3, - 0x69CB, 0x69CB, 0x0FF4, 0x69CC, 0x69CC, 0x0FFD, 0x69CD, 0x69CD, 0x0FFB, - 0x69CE, 0x69CE, 0x26C0, 0x69CF, 0x69CF, 0x26D5, 0x69D0, 0x69D0, 0x0FFA, - 0x69D1, 0x69D1, 0x39EF, 0x69D3, 0x69D3, 0x0FF3, 0x69D4, 0x69D4, 0x26D1, - 0x69D5, 0x69D5, 0x3E3C, 0x69D6, 0x69D6, 0x465E, 0x69D9, 0x69D9, 0x26DB, - 0x69E1, 0x69E1, 0x41D8, 0x69E2, 0x69E2, 0x2909, 0x69E4, 0x69E4, 0x2905, - 0x69E5, 0x69E5, 0x2901, 0x69E6, 0x69E6, 0x2915, 0x69E7, 0x69E7, 0x2912, - 0x69E8, 0x69E8, 0x1177, 0x69E9, 0x69E9, 0x3D91, 0x69EB, 0x69EB, 0x2919, - 0x69EC, 0x69EC, 0x2908, 0x69ED, 0x69ED, 0x1182, 0x69EE, 0x69EE, 0x290F, - 0x69F1, 0x69F1, 0x2904, 0x69F2, 0x69F2, 0x290E, 0x69F3, 0x69F3, 0x117F, - 0x69F4, 0x69F4, 0x2922, 0x69F6, 0x69F6, 0x291F, 0x69F7, 0x69F7, 0x2911, - 0x69F8, 0x69F8, 0x2902, 0x69F9, 0x69F9, 0x41ED, 0x69FA, 0x69FA, 0x41C7, - 0x69FB, 0x69FB, 0x2916, 0x69FC, 0x69FC, 0x2918, 0x69FD, 0x69FD, 0x117B, - 0x69FE, 0x69FE, 0x290C, 0x69FF, 0x69FF, 0x2907, 0x6A00, 0x6A00, 0x28FE, - 0x6A01, 0x6A01, 0x1178, 0x6A02, 0x6A02, 0x1180, 0x6A03, 0x6A03, 0x3E29, - 0x6A04, 0x6A04, 0x291B, 0x6A05, 0x6A05, 0x1181, 0x6A06, 0x6A06, 0x28FF, - 0x6A07, 0x6A07, 0x2921, 0x6A08, 0x6A08, 0x2914, 0x6A09, 0x6A09, 0x291A, - 0x6A0A, 0x6A0A, 0x117E, 0x6A0B, 0x6A0B, 0x41D9, 0x6A0C, 0x6A0C, 0x3D50, - 0x6A0D, 0x6A0D, 0x2917, 0x6A0F, 0x6A0F, 0x291E, 0x6A11, 0x6A11, 0x1183, - 0x6A13, 0x6A13, 0x117D, 0x6A14, 0x6A14, 0x2910, 0x6A15, 0x6A15, 0x2903, - 0x6A16, 0x6A16, 0x2923, 0x6A17, 0x6A17, 0x2900, 0x6A18, 0x6A18, 0x291C, - 0x6A19, 0x6A19, 0x117A, 0x6A1A, 0x6A1A, 0x3D1E, 0x6A1B, 0x6A1B, 0x290A, - 0x6A1C, 0x6A1C, 0x3B68, 0x6A1D, 0x6A1D, 0x290B, 0x6A1E, 0x6A1E, 0x1179, - 0x6A1F, 0x6A1F, 0x1176, 0x6A20, 0x6A20, 0x2906, 0x6A21, 0x6A21, 0x117C, - 0x6A23, 0x6A23, 0x1175, 0x6A25, 0x6A25, 0x291D, 0x6A26, 0x6A26, 0x2920, - 0x6A27, 0x6A27, 0x290D, 0x6A28, 0x6A28, 0x2B74, 0x6A2B, 0x6A2B, 0x3D42, - 0x6A2C, 0x6A2C, 0x42AB, 0x6A2D, 0x6A2D, 0x3B1F, 0x6A32, 0x6A32, 0x2B6C, - 0x6A33, 0x6A33, 0x3AA4, 0x6A34, 0x6A34, 0x2B68, 0x6A35, 0x6A35, 0x12D9, - 0x6A38, 0x6A38, 0x12CE, 0x6A39, 0x6A39, 0x12D3, 0x6A3A, 0x6A3A, 0x12CF, - 0x6A3B, 0x6A3B, 0x2B76, 0x6A3C, 0x6A3C, 0x2B81, 0x6A3D, 0x6A3D, 0x12CD, - 0x6A3E, 0x6A3E, 0x2B6E, 0x6A3F, 0x6A3F, 0x2B77, 0x6A40, 0x6A40, 0x2913, - 0x6A41, 0x6A41, 0x2B78, 0x6A44, 0x6A44, 0x12D4, 0x6A45, 0x6A45, 0x41F0, - 0x6A46, 0x6A46, 0x2B87, 0x6A47, 0x6A47, 0x12D8, 0x6A48, 0x6A48, 0x12DB, - 0x6A49, 0x6A49, 0x2B6A, 0x6A4B, 0x6A4B, 0x12D7, 0x6A4C, 0x6A4C, 0x3AAB, - 0x6A4D, 0x6A4E, 0x2B85, 0x6A4F, 0x6A4F, 0x2B7C, 0x6A50, 0x6A50, 0x2B7B, - 0x6A51, 0x6A51, 0x2B73, 0x6A52, 0x6A52, 0x3AA5, 0x6A53, 0x6A53, 0x37AC, - 0x6A54, 0x6A54, 0x2B7D, 0x6A55, 0x6A55, 0x2B84, 0x6A56, 0x6A56, 0x2B83, - 0x6A57, 0x6A57, 0x37DA, 0x6A58, 0x6A58, 0x12D2, 0x6A59, 0x6A59, 0x12D0, - 0x6A5A, 0x6A5A, 0x2B75, 0x6A5B, 0x6A5B, 0x2B72, 0x6A5D, 0x6A5D, 0x2B6F, - 0x6A5E, 0x6A5E, 0x2B82, 0x6A5F, 0x6A5F, 0x12DA, 0x6A60, 0x6A60, 0x2B80, - 0x6A61, 0x6A61, 0x12D6, 0x6A62, 0x6A62, 0x12D5, 0x6A64, 0x6A64, 0x2B7A, - 0x6A65, 0x6A65, 0x4660, 0x6A66, 0x6A66, 0x2B69, 0x6A67, 0x6A67, 0x2B6B, - 0x6A68, 0x6A68, 0x2B6D, 0x6A69, 0x6A69, 0x2B7F, 0x6A6A, 0x6A6A, 0x2B79, - 0x6A6B, 0x6A6B, 0x12D1, 0x6A6D, 0x6A6D, 0x2B70, 0x6A6F, 0x6A6F, 0x2B7E, - 0x6A71, 0x6A71, 0x4662, 0x6A74, 0x6A74, 0x4661, 0x6A76, 0x6A76, 0x2B71, - 0x6A7A, 0x6A7A, 0x3AAD, 0x6A7E, 0x6A7E, 0x13EC, 0x6A7F, 0x6A7F, 0x2D84, - 0x6A80, 0x6A80, 0x13E5, 0x6A81, 0x6A81, 0x2D75, 0x6A82, 0x6A82, 0x4663, - 0x6A83, 0x6A83, 0x2D80, 0x6A84, 0x6A84, 0x13E7, 0x6A85, 0x6A85, 0x2D87, - 0x6A87, 0x6A87, 0x2D7C, 0x6A89, 0x6A89, 0x2D77, 0x6A8A, 0x6A8A, 0x4136, - 0x6A8C, 0x6A8C, 0x2D88, 0x6A8D, 0x6A8D, 0x2D73, 0x6A8E, 0x6A8E, 0x2D7E, - 0x6A8F, 0x6A8F, 0x3C1B, 0x6A90, 0x6A90, 0x13EE, 0x6A91, 0x6A91, 0x2D83, - 0x6A92, 0x6A92, 0x2D89, 0x6A93, 0x6A93, 0x2D7D, 0x6A94, 0x6A94, 0x13E6, - 0x6A95, 0x6A95, 0x2D7F, 0x6A96, 0x6A96, 0x2D74, 0x6A97, 0x6A97, 0x13ED, - 0x6A99, 0x6A99, 0x4665, 0x6A9A, 0x6A9A, 0x2D86, 0x6A9B, 0x6A9B, 0x2D79, - 0x6A9C, 0x6A9C, 0x13E9, 0x6A9D, 0x6A9D, 0x41F2, 0x6A9E, 0x6A9E, 0x2D7B, - 0x6A9F, 0x6A9F, 0x2D78, 0x6AA0, 0x6AA0, 0x13EF, 0x6AA1, 0x6AA1, 0x2D7A, - 0x6AA2, 0x6AA2, 0x13E8, 0x6AA3, 0x6AA3, 0x13EB, 0x6AA4, 0x6AA4, 0x2D82, - 0x6AA5, 0x6AA5, 0x2D76, 0x6AA6, 0x6AA6, 0x2D85, 0x6AA7, 0x6AA7, 0x37E3, - 0x6AA8, 0x6AA8, 0x2D81, 0x6AAB, 0x6AAB, 0x4667, 0x6AAC, 0x6AAC, 0x14DD, - 0x6AAD, 0x6AAD, 0x2F3E, 0x6AAE, 0x6AAF, 0x14E2, 0x6AB1, 0x6AB1, 0x3E53, - 0x6AB2, 0x6AB2, 0x3B4B, 0x6AB3, 0x6AB3, 0x14DC, 0x6AB4, 0x6AB4, 0x2F3D, - 0x6AB5, 0x6AB5, 0x4668, 0x6AB6, 0x6AB7, 0x2F3A, 0x6AB8, 0x6AB8, 0x14E0, - 0x6AB9, 0x6AB9, 0x2F35, 0x6ABA, 0x6ABA, 0x2F39, 0x6ABB, 0x6ABB, 0x14DF, - 0x6ABD, 0x6ABD, 0x2F36, 0x6ABE, 0x6ABE, 0x3AA1, 0x6AC2, 0x6AC2, 0x14E1, - 0x6AC3, 0x6AC3, 0x14DE, 0x6AC5, 0x6AC5, 0x2F34, 0x6AC6, 0x6AC6, 0x2F38, - 0x6AC7, 0x6AC7, 0x2F3C, 0x6AC8, 0x6AC8, 0x41F5, 0x6AC9, 0x6AC9, 0x3AA6, - 0x6ACA, 0x6ACA, 0x3F4C, 0x6ACB, 0x6ACB, 0x309F, 0x6ACC, 0x6ACC, 0x309C, - 0x6ACD, 0x6ACD, 0x30A5, 0x6ACF, 0x6ACF, 0x30A4, 0x6AD0, 0x6AD0, 0x30A2, - 0x6AD1, 0x6AD1, 0x309D, 0x6AD3, 0x6AD3, 0x1589, 0x6AD4, 0x6AD4, 0x4669, - 0x6AD8, 0x6AD8, 0x3CAA, 0x6AD9, 0x6AD9, 0x309E, 0x6ADA, 0x6ADA, 0x1588, - 0x6ADB, 0x6ADB, 0x13EA, 0x6ADC, 0x6ADC, 0x30A1, 0x6ADD, 0x6ADD, 0x1587, - 0x6ADE, 0x6ADE, 0x30A6, 0x6ADF, 0x6ADF, 0x30A0, 0x6AE0, 0x6AE0, 0x309B, - 0x6AE1, 0x6AE1, 0x2F37, 0x6AE5, 0x6AE5, 0x1586, 0x6AE7, 0x6AE7, 0x309A, - 0x6AE8, 0x6AE8, 0x31DF, 0x6AEA, 0x6AEA, 0x31DE, 0x6AEB, 0x6AEB, 0x30A3, - 0x6AEC, 0x6AEC, 0x161B, 0x6AEE, 0x6AEF, 0x31E2, 0x6AF0, 0x6AF0, 0x31DD, - 0x6AF1, 0x6AF1, 0x31E1, 0x6AF3, 0x6AF3, 0x31DC, 0x6AF6, 0x6AF6, 0x466A, - 0x6AF8, 0x6AF8, 0x32D6, 0x6AF9, 0x6AF9, 0x31E0, 0x6AFA, 0x6AFA, 0x1678, - 0x6AFB, 0x6AFB, 0x1676, 0x6AFC, 0x6AFC, 0x32D4, 0x6B00, 0x6B00, 0x32D7, - 0x6B02, 0x6B02, 0x32D3, 0x6B03, 0x6B03, 0x32D5, 0x6B04, 0x6B04, 0x1677, - 0x6B05, 0x6B05, 0x3AA7, 0x6B08, 0x6B09, 0x3386, 0x6B0A, 0x6B0A, 0x16C6, - 0x6B0B, 0x6B0B, 0x3385, 0x6B0F, 0x6B0F, 0x3420, 0x6B10, 0x6B10, 0x16FD, - 0x6B11, 0x6B12, 0x341E, 0x6B13, 0x6B13, 0x3487, 0x6B16, 0x6B16, 0x1743, - 0x6B17, 0x6B17, 0x34CE, 0x6B18, 0x6B19, 0x34CC, 0x6B1A, 0x6B1A, 0x34CF, - 0x6B1D, 0x6B1D, 0x41F8, 0x6B1E, 0x6B1E, 0x3534, 0x6B20, 0x6B20, 0x02DE, - 0x6B21, 0x6B21, 0x03E3, 0x6B23, 0x6B23, 0x061A, 0x6B25, 0x6B25, 0x19C9, - 0x6B28, 0x6B28, 0x1B3D, 0x6B2C, 0x6B2C, 0x1CE6, 0x6B2D, 0x6B2D, 0x1CE8, - 0x6B2F, 0x6B2F, 0x1CE7, 0x6B31, 0x6B31, 0x1CE9, 0x6B32, 0x6B32, 0x0AE7, - 0x6B33, 0x6B33, 0x1F3C, 0x6B34, 0x6B34, 0x1CEA, 0x6B35, 0x6B35, 0x41FB, - 0x6B36, 0x6B36, 0x1F3B, 0x6B37, 0x6B38, 0x1F3D, 0x6B39, 0x6B39, 0x21B2, - 0x6B3A, 0x6B3A, 0x0C9C, 0x6B3B, 0x6B3B, 0x21B3, 0x6B3C, 0x6B3C, 0x21B5, - 0x6B3D, 0x6B3D, 0x0C9D, 0x6B3E, 0x6B3E, 0x0C9B, 0x6B3F, 0x6B3F, 0x21B4, - 0x6B41, 0x6B41, 0x2447, 0x6B42, 0x6B42, 0x2445, 0x6B43, 0x6B43, 0x2444, - 0x6B45, 0x6B45, 0x2443, 0x6B46, 0x6B46, 0x2442, 0x6B47, 0x6B47, 0x0E4A, - 0x6B48, 0x6B48, 0x2446, 0x6B49, 0x6B49, 0x1001, 0x6B4A, 0x6B4A, 0x26E2, - 0x6B4B, 0x6B4B, 0x26E4, 0x6B4C, 0x6B4C, 0x1002, 0x6B4D, 0x6B4D, 0x26E3, - 0x6B4E, 0x6B4E, 0x1185, 0x6B50, 0x6B50, 0x1184, 0x6B51, 0x6B51, 0x2924, - 0x6B52, 0x6B52, 0x3F6E, 0x6B54, 0x6B54, 0x2B89, 0x6B55, 0x6B55, 0x2B88, - 0x6B56, 0x6B56, 0x2B8A, 0x6B57, 0x6B57, 0x3AAE, 0x6B59, 0x6B59, 0x12DC, - 0x6B5B, 0x6B5B, 0x2D8A, 0x6B5C, 0x6B5C, 0x13F0, 0x6B5E, 0x6B5E, 0x2F3F, - 0x6B5F, 0x6B5F, 0x14E4, 0x6B60, 0x6B60, 0x30A7, 0x6B61, 0x6B61, 0x16C7, - 0x6B62, 0x6B62, 0x02DF, 0x6B63, 0x6B63, 0x034D, 0x6B64, 0x6B64, 0x03E4, - 0x6B65, 0x6B65, 0x04C9, 0x6B66, 0x6B67, 0x061B, 0x6B6A, 0x6B6A, 0x0769, - 0x6B6D, 0x6B6D, 0x1CEB, 0x6B6F, 0x6B6F, 0x4515, 0x6B72, 0x6B72, 0x0E4B, - 0x6B74, 0x6B74, 0x41FC, 0x6B76, 0x6B76, 0x29A2, 0x6B77, 0x6B77, 0x12DD, - 0x6B78, 0x6B78, 0x14E5, 0x6B79, 0x6B79, 0x02E0, 0x6B7A, 0x6B7A, 0x44EE, - 0x6B7B, 0x6B7B, 0x03E5, 0x6B7E, 0x6B7E, 0x19CB, 0x6B7F, 0x6B7F, 0x061D, - 0x6B80, 0x6B80, 0x19CA, 0x6B81, 0x6B81, 0x466B, 0x6B82, 0x6B82, 0x1B3E, - 0x6B83, 0x6B83, 0x076A, 0x6B84, 0x6B84, 0x1B3F, 0x6B86, 0x6B86, 0x076B, - 0x6B88, 0x6B88, 0x1CED, 0x6B89, 0x6B89, 0x0900, 0x6B8A, 0x6B8A, 0x08FF, - 0x6B8C, 0x6B8C, 0x1F43, 0x6B8D, 0x6B8E, 0x1F41, 0x6B8F, 0x6B8F, 0x1F40, - 0x6B91, 0x6B91, 0x1F3F, 0x6B94, 0x6B94, 0x21B6, 0x6B95, 0x6B95, 0x21B9, - 0x6B96, 0x6B96, 0x0C9F, 0x6B97, 0x6B97, 0x21B7, 0x6B98, 0x6B98, 0x0C9E, - 0x6B99, 0x6B99, 0x21B8, 0x6B9B, 0x6B9B, 0x2448, 0x6B9E, 0x6BA0, 0x26E5, - 0x6BA2, 0x6BA2, 0x2927, 0x6BA3, 0x6BA3, 0x2926, 0x6BA4, 0x6BA4, 0x1186, - 0x6BA5, 0x6BA5, 0x2925, 0x6BA6, 0x6BA6, 0x2928, 0x6BA7, 0x6BA7, 0x2B8B, - 0x6BAA, 0x6BAB, 0x2B8C, 0x6BAD, 0x6BAD, 0x2D8B, 0x6BAE, 0x6BAE, 0x13F1, - 0x6BAF, 0x6BAF, 0x14E6, 0x6BB0, 0x6BB0, 0x30A8, 0x6BB2, 0x6BB2, 0x1679, - 0x6BB3, 0x6BB3, 0x178A, 0x6BB5, 0x6BB5, 0x076C, 0x6BB6, 0x6BB6, 0x1B40, - 0x6BB7, 0x6BB7, 0x0901, 0x6BBA, 0x6BBA, 0x0AE8, 0x6BBC, 0x6BBC, 0x0CA0, - 0x6BBD, 0x6BBD, 0x21BA, 0x6BBF, 0x6BBF, 0x0E4D, 0x6BC0, 0x6BC0, 0x0E4C, - 0x6BC1, 0x6BC1, 0x466C, 0x6BC3, 0x6BC4, 0x26E8, 0x6BC5, 0x6BC6, 0x1187, - 0x6BC7, 0x6BC7, 0x2B8F, 0x6BC8, 0x6BC8, 0x2B8E, 0x6BC9, 0x6BC9, 0x2F40, - 0x6BCA, 0x6BCA, 0x3421, 0x6BCB, 0x6BCB, 0x02E1, 0x6BCC, 0x6BCC, 0x178B, - 0x6BCD, 0x6BCD, 0x034E, 0x6BCF, 0x6BCF, 0x04CA, 0x6BD0, 0x6BD0, 0x18AD, - 0x6BD2, 0x6BD2, 0x076D, 0x6BD3, 0x6BD3, 0x0E4E, 0x6BD4, 0x6BD4, 0x02E2, - 0x6BD6, 0x6BD6, 0x1B41, 0x6BD7, 0x6BD7, 0x076E, 0x6BD8, 0x6BD8, 0x1B42, - 0x6BDA, 0x6BDA, 0x13F2, 0x6BDB, 0x6BDB, 0x02E3, 0x6BDC, 0x6BDC, 0x4207, - 0x6BDE, 0x6BDE, 0x19CC, 0x6BE0, 0x6BE0, 0x1B43, 0x6BE1, 0x6BE1, 0x4205, - 0x6BE2, 0x6BE2, 0x1CF2, 0x6BE3, 0x6BE3, 0x1CF1, 0x6BE4, 0x6BE4, 0x1CEF, - 0x6BE6, 0x6BE6, 0x1CEE, 0x6BE7, 0x6BE7, 0x1CF3, 0x6BE8, 0x6BE8, 0x1CF0, - 0x6BEA, 0x6BEA, 0x466D, 0x6BEB, 0x6BEC, 0x0AE9, 0x6BEF, 0x6BEF, 0x0CA1, - 0x6BF0, 0x6BF0, 0x21BB, 0x6BF2, 0x6BF3, 0x21BC, 0x6BF7, 0x6BF8, 0x244C, - 0x6BF9, 0x6BF9, 0x244B, 0x6BFA, 0x6BFA, 0x3F79, 0x6BFB, 0x6BFC, 0x2449, - 0x6BFD, 0x6BFD, 0x0E4F, 0x6BFE, 0x6BFE, 0x26EA, 0x6BFF, 0x6BFF, 0x292B, - 0x6C00, 0x6C00, 0x292A, 0x6C01, 0x6C01, 0x2929, 0x6C02, 0x6C02, 0x292C, - 0x6C03, 0x6C03, 0x2B91, 0x6C04, 0x6C04, 0x2B90, 0x6C05, 0x6C05, 0x12DE, - 0x6C06, 0x6C06, 0x2B92, 0x6C08, 0x6C08, 0x13F3, 0x6C09, 0x6C09, 0x2D8C, - 0x6C0B, 0x6C0B, 0x2F41, 0x6C0C, 0x6C0C, 0x30A9, 0x6C0D, 0x6C0D, 0x3388, - 0x6C0F, 0x6C0F, 0x02E4, 0x6C10, 0x6C10, 0x0350, 0x6C11, 0x6C11, 0x034F, - 0x6C13, 0x6C13, 0x061E, 0x6C14, 0x6C14, 0x178C, 0x6C15, 0x6C15, 0x17AA, - 0x6C16, 0x6C16, 0x03E6, 0x6C18, 0x6C18, 0x1801, 0x6C19, 0x6C1A, 0x18AE, - 0x6C1B, 0x6C1B, 0x061F, 0x6C1C, 0x6C1C, 0x38AB, 0x6C1D, 0x6C1D, 0x19CD, - 0x6C1F, 0x6C1F, 0x076F, 0x6C20, 0x6C21, 0x1B44, 0x6C23, 0x6C23, 0x0902, - 0x6C24, 0x6C24, 0x0906, 0x6C25, 0x6C25, 0x1CF4, 0x6C26, 0x6C26, 0x0905, - 0x6C27, 0x6C28, 0x0903, 0x6C2A, 0x6C2A, 0x1F44, 0x6C2B, 0x6C2B, 0x0AEB, - 0x6C2C, 0x6C2C, 0x0CA4, 0x6C2E, 0x6C2F, 0x0CA2, 0x6C30, 0x6C30, 0x21BE, - 0x6C31, 0x6C31, 0x3F63, 0x6C33, 0x6C33, 0x1003, 0x6C34, 0x6C34, 0x02E5, - 0x6C35, 0x6C35, 0x44EF, 0x6C36, 0x6C36, 0x17AB, 0x6C37, 0x6C37, 0x4208, - 0x6C38, 0x6C38, 0x0351, 0x6C39, 0x6C39, 0x3E05, 0x6C3A, 0x6C3A, 0x44F0, - 0x6C3B, 0x6C3B, 0x17AE, 0x6C3D, 0x6C3D, 0x4381, 0x6C3E, 0x6C3E, 0x0354, - 0x6C3F, 0x6C3F, 0x17AD, 0x6C40, 0x6C40, 0x0353, 0x6C41, 0x6C41, 0x0352, - 0x6C42, 0x6C42, 0x04CB, 0x6C43, 0x6C43, 0x17AC, 0x6C46, 0x6C46, 0x1802, - 0x6C49, 0x6C49, 0x408D, 0x6C4A, 0x6C4A, 0x1806, 0x6C4B, 0x6C4C, 0x1808, - 0x6C4D, 0x6C4E, 0x03F0, 0x6C4F, 0x6C4F, 0x1805, 0x6C50, 0x6C50, 0x03EC, - 0x6C52, 0x6C52, 0x1803, 0x6C54, 0x6C54, 0x1807, 0x6C55, 0x6C55, 0x03ED, - 0x6C57, 0x6C57, 0x03E8, 0x6C58, 0x6C58, 0x3BBA, 0x6C59, 0x6C59, 0x03E9, - 0x6C5A, 0x6C5A, 0x420C, 0x6C5B, 0x6C5B, 0x03EF, 0x6C5C, 0x6C5C, 0x1804, - 0x6C5D, 0x6C5D, 0x03E7, 0x6C5E, 0x6C5E, 0x04CC, 0x6C5F, 0x6C60, 0x03EA, - 0x6C61, 0x6C61, 0x03EE, 0x6C65, 0x6C65, 0x18C0, 0x6C66, 0x6C66, 0x18BE, - 0x6C67, 0x6C67, 0x18B1, 0x6C68, 0x6C68, 0x04D8, 0x6C69, 0x6C69, 0x18B8, - 0x6C6A, 0x6C6A, 0x04D3, 0x6C6B, 0x6C6B, 0x18B2, 0x6C6D, 0x6C6D, 0x18BA, - 0x6C6E, 0x6C6E, 0x40CA, 0x6C6F, 0x6C6F, 0x18B7, 0x6C70, 0x6C70, 0x04D6, - 0x6C71, 0x6C71, 0x18B6, 0x6C72, 0x6C72, 0x04DD, 0x6C73, 0x6C73, 0x18BF, - 0x6C74, 0x6C74, 0x04DF, 0x6C75, 0x6C75, 0x466E, 0x6C76, 0x6C76, 0x04E1, - 0x6C78, 0x6C78, 0x18B0, 0x6C79, 0x6C79, 0x420E, 0x6C7A, 0x6C7A, 0x04D4, - 0x6C7B, 0x6C7B, 0x18C1, 0x6C7D, 0x6C7D, 0x04DB, 0x6C7E, 0x6C7E, 0x04DE, - 0x6C7F, 0x6C7F, 0x37A6, 0x6C80, 0x6C80, 0x19E4, 0x6C81, 0x6C81, 0x04CE, - 0x6C82, 0x6C82, 0x04E5, 0x6C83, 0x6C83, 0x04DC, 0x6C84, 0x6C84, 0x18B3, - 0x6C85, 0x6C85, 0x04D1, 0x6C86, 0x6C86, 0x04E0, 0x6C87, 0x6C87, 0x18BB, - 0x6C88, 0x6C89, 0x04CF, 0x6C8A, 0x6C8A, 0x19E2, 0x6C8B, 0x6C8B, 0x18B4, - 0x6C8C, 0x6C8C, 0x04D7, 0x6C8D, 0x6C8D, 0x04E2, 0x6C8E, 0x6C8E, 0x18C2, - 0x6C8F, 0x6C8F, 0x18B5, 0x6C90, 0x6C90, 0x04D5, 0x6C92, 0x6C92, 0x04DA, - 0x6C93, 0x6C93, 0x19CE, 0x6C94, 0x6C94, 0x04E3, 0x6C95, 0x6C95, 0x18BC, - 0x6C96, 0x6C96, 0x04D9, 0x6C98, 0x6C98, 0x04E4, 0x6C99, 0x6C99, 0x04CD, - 0x6C9A, 0x6C9A, 0x18B9, 0x6C9B, 0x6C9B, 0x04D2, 0x6C9C, 0x6C9C, 0x18BD, - 0x6C9D, 0x6C9D, 0x19E3, 0x6C9F, 0x6C9F, 0x3889, 0x6CA2, 0x6CA2, 0x3D63, - 0x6CAA, 0x6CAA, 0x466F, 0x6CAB, 0x6CAB, 0x062B, 0x6CAC, 0x6CAC, 0x063B, - 0x6CAD, 0x6CAD, 0x19D5, 0x6CAE, 0x6CAE, 0x0632, 0x6CAF, 0x6CAF, 0x3CF6, - 0x6CB0, 0x6CB0, 0x19EA, 0x6CB1, 0x6CB1, 0x0623, 0x6CB2, 0x6CB2, 0x3ECC, - 0x6CB3, 0x6CB3, 0x0626, 0x6CB4, 0x6CB4, 0x19E1, 0x6CB6, 0x6CB6, 0x19D3, - 0x6CB7, 0x6CB7, 0x19D7, 0x6CB8, 0x6CB8, 0x062E, 0x6CB9, 0x6CB9, 0x0630, - 0x6CBA, 0x6CBA, 0x19DA, 0x6CBB, 0x6CBB, 0x0637, 0x6CBC, 0x6CBC, 0x0629, - 0x6CBD, 0x6CBE, 0x0627, 0x6CBF, 0x6CBF, 0x0636, 0x6CC0, 0x6CC0, 0x19E6, - 0x6CC1, 0x6CC1, 0x0631, 0x6CC2, 0x6CC2, 0x19D9, 0x6CC3, 0x6CC3, 0x19DB, - 0x6CC4, 0x6CC4, 0x062F, 0x6CC5, 0x6CC5, 0x0634, 0x6CC6, 0x6CC6, 0x19DC, - 0x6CC7, 0x6CC7, 0x19E9, 0x6CC9, 0x6CC9, 0x0770, 0x6CCA, 0x6CCA, 0x063A, - 0x6CCB, 0x6CCB, 0x4070, 0x6CCC, 0x6CCC, 0x0624, 0x6CCD, 0x6CCD, 0x19E8, - 0x6CCE, 0x6CCE, 0x3F91, 0x6CCF, 0x6CCF, 0x19EC, 0x6CD0, 0x6CD0, 0x19D8, - 0x6CD1, 0x6CD1, 0x19EE, 0x6CD2, 0x6CD2, 0x19DF, 0x6CD3, 0x6CD3, 0x062D, - 0x6CD4, 0x6CD4, 0x19D4, 0x6CD5, 0x6CD5, 0x062C, 0x6CD6, 0x6CD6, 0x063E, - 0x6CD7, 0x6CD7, 0x0633, 0x6CD9, 0x6CD9, 0x19D2, 0x6CDA, 0x6CDA, 0x1B4E, - 0x6CDB, 0x6CDB, 0x0639, 0x6CDC, 0x6CDC, 0x063D, 0x6CDD, 0x6CDD, 0x19E0, - 0x6CDE, 0x6CDE, 0x19E5, 0x6CDF, 0x6CDF, 0x3D57, 0x6CE0, 0x6CE0, 0x063F, - 0x6CE1, 0x6CE1, 0x0638, 0x6CE2, 0x6CE2, 0x062A, 0x6CE3, 0x6CE3, 0x0620, - 0x6CE5, 0x6CE5, 0x0625, 0x6CE7, 0x6CE7, 0x19D6, 0x6CE8, 0x6CE8, 0x0621, - 0x6CE9, 0x6CE9, 0x19ED, 0x6CEA, 0x6CEA, 0x3F8D, 0x6CEB, 0x6CEB, 0x19D0, - 0x6CEC, 0x6CEC, 0x19CF, 0x6CED, 0x6CED, 0x19DD, 0x6CEE, 0x6CEE, 0x19D1, - 0x6CEF, 0x6CEF, 0x063C, 0x6CF0, 0x6CF0, 0x0907, 0x6CF1, 0x6CF1, 0x0635, - 0x6CF2, 0x6CF2, 0x19DE, 0x6CF3, 0x6CF3, 0x0622, 0x6CF5, 0x6CF5, 0x077F, - 0x6CF9, 0x6CF9, 0x19EB, 0x6D00, 0x6D00, 0x1B55, 0x6D01, 0x6D01, 0x1B58, - 0x6D02, 0x6D02, 0x4671, 0x6D03, 0x6D03, 0x1B5B, 0x6D04, 0x6D04, 0x1B50, - 0x6D05, 0x6D05, 0x3A19, 0x6D06, 0x6D06, 0x4672, 0x6D07, 0x6D07, 0x1B5E, - 0x6D08, 0x6D08, 0x1B61, 0x6D09, 0x6D09, 0x1B63, 0x6D0A, 0x6D0A, 0x1B4D, - 0x6D0B, 0x6D0B, 0x0771, 0x6D0C, 0x6D0C, 0x0776, 0x6D0D, 0x6D0D, 0x1CF9, - 0x6D0E, 0x6D0E, 0x0786, 0x6D0F, 0x6D0F, 0x1B5C, 0x6D10, 0x6D10, 0x1B64, - 0x6D11, 0x6D11, 0x1B54, 0x6D12, 0x6D12, 0x1B4C, 0x6D16, 0x6D16, 0x1D14, - 0x6D17, 0x6D17, 0x0779, 0x6D18, 0x6D18, 0x1B59, 0x6D19, 0x6D19, 0x1B51, - 0x6D1A, 0x6D1A, 0x1B53, 0x6D1B, 0x6D1B, 0x077E, 0x6D1D, 0x6D1D, 0x1B56, - 0x6D1E, 0x6D1E, 0x0778, 0x6D1F, 0x6D1F, 0x1B49, 0x6D20, 0x6D20, 0x1B5F, - 0x6D22, 0x6D22, 0x1B62, 0x6D24, 0x6D24, 0x3AC3, 0x6D25, 0x6D25, 0x0775, - 0x6D26, 0x6D26, 0x4673, 0x6D27, 0x6D27, 0x0781, 0x6D28, 0x6D28, 0x1B46, - 0x6D29, 0x6D29, 0x0783, 0x6D2A, 0x6D2A, 0x0773, 0x6D2B, 0x6D2B, 0x0787, - 0x6D2C, 0x6D2C, 0x1B60, 0x6D2D, 0x6D2D, 0x1B48, 0x6D2E, 0x6D2E, 0x0784, - 0x6D2F, 0x6D2F, 0x1D0E, 0x6D30, 0x6D30, 0x19E7, 0x6D31, 0x6D31, 0x0777, - 0x6D32, 0x6D32, 0x0772, 0x6D33, 0x6D33, 0x1B4F, 0x6D34, 0x6D34, 0x1B47, - 0x6D35, 0x6D35, 0x0785, 0x6D36, 0x6D36, 0x077D, 0x6D37, 0x6D37, 0x1B5A, - 0x6D38, 0x6D38, 0x0782, 0x6D39, 0x6D39, 0x0780, 0x6D3A, 0x6D3A, 0x1B52, - 0x6D3B, 0x6D3B, 0x077A, 0x6D3C, 0x6D3C, 0x1B4A, 0x6D3D, 0x6D3E, 0x077B, - 0x6D3F, 0x6D3F, 0x1B4B, 0x6D40, 0x6D40, 0x1B5D, 0x6D41, 0x6D41, 0x0774, - 0x6D42, 0x6D42, 0x1B57, 0x6D4E, 0x6D4E, 0x4558, 0x6D57, 0x6D57, 0x3CF3, - 0x6D58, 0x6D58, 0x1CFC, 0x6D59, 0x6D59, 0x090F, 0x6D5A, 0x6D5A, 0x0914, - 0x6D5B, 0x6D5B, 0x409C, 0x6D5C, 0x6D5C, 0x4222, 0x6D5E, 0x6D5E, 0x1D05, - 0x6D5F, 0x6D5F, 0x1D0B, 0x6D60, 0x6D60, 0x1D07, 0x6D61, 0x6D61, 0x1CFA, - 0x6D62, 0x6D62, 0x1CFD, 0x6D63, 0x6D64, 0x1CF6, 0x6D65, 0x6D65, 0x091B, - 0x6D66, 0x6D66, 0x090C, 0x6D67, 0x6D67, 0x1D06, 0x6D68, 0x6D68, 0x1D0F, - 0x6D69, 0x6D69, 0x0916, 0x6D6A, 0x6D6A, 0x0908, 0x6D6C, 0x6D6C, 0x0911, - 0x6D6D, 0x6D6D, 0x1CFE, 0x6D6E, 0x6D6E, 0x0913, 0x6D6F, 0x6D6F, 0x1CFF, - 0x6D70, 0x6D70, 0x1D09, 0x6D71, 0x6D71, 0x40F5, 0x6D72, 0x6D72, 0x39D7, - 0x6D74, 0x6D74, 0x0915, 0x6D75, 0x6D75, 0x1D18, 0x6D76, 0x6D76, 0x1CF8, - 0x6D77, 0x6D77, 0x090E, 0x6D78, 0x6D78, 0x090D, 0x6D79, 0x6D79, 0x0919, - 0x6D7A, 0x6D7A, 0x1CF5, 0x6D7B, 0x6D7B, 0x1D16, 0x6D7C, 0x6D7C, 0x1D0A, - 0x6D7D, 0x6D7D, 0x1D17, 0x6D7E, 0x6D7E, 0x1D11, 0x6D7F, 0x6D7F, 0x1D03, - 0x6D80, 0x6D80, 0x1D12, 0x6D81, 0x6D81, 0x4674, 0x6D82, 0x6D82, 0x1D0C, - 0x6D83, 0x6D83, 0x1D15, 0x6D84, 0x6D84, 0x1D13, 0x6D85, 0x6D85, 0x091A, - 0x6D86, 0x6D86, 0x1D04, 0x6D87, 0x6D87, 0x090B, 0x6D88, 0x6D88, 0x090A, - 0x6D89, 0x6D89, 0x0912, 0x6D8A, 0x6D8A, 0x0918, 0x6D8B, 0x6D8B, 0x1D10, - 0x6D8C, 0x6D8C, 0x0917, 0x6D8D, 0x6D8D, 0x1D01, 0x6D8E, 0x6D8E, 0x0AEC, - 0x6D8F, 0x6D8F, 0x3DE8, 0x6D90, 0x6D90, 0x1D19, 0x6D91, 0x6D91, 0x1D00, - 0x6D92, 0x6D92, 0x1CFB, 0x6D93, 0x6D93, 0x0910, 0x6D94, 0x6D94, 0x091C, - 0x6D95, 0x6D95, 0x0909, 0x6D96, 0x6D96, 0x4221, 0x6D97, 0x6D97, 0x1D08, - 0x6D98, 0x6D98, 0x1D0D, 0x6DA4, 0x6DA4, 0x4676, 0x6DA5, 0x6DA5, 0x3AB9, - 0x6DAA, 0x6DAA, 0x0B0E, 0x6DAB, 0x6DAB, 0x1F46, 0x6DAC, 0x6DAC, 0x1F4A, - 0x6DAE, 0x6DAE, 0x0AFB, 0x6DAF, 0x6DAF, 0x0AF9, 0x6DB1, 0x6DB1, 0x4677, - 0x6DB2, 0x6DB2, 0x0AF0, 0x6DB3, 0x6DB3, 0x1F48, 0x6DB4, 0x6DB4, 0x1F47, - 0x6DB5, 0x6DB5, 0x0B04, 0x6DB7, 0x6DB7, 0x1F4D, 0x6DB8, 0x6DB8, 0x0AFE, - 0x6DB9, 0x6DB9, 0x3FFB, 0x6DBA, 0x6DBA, 0x1F5F, 0x6DBB, 0x6DBB, 0x1F6B, - 0x6DBC, 0x6DBC, 0x0AED, 0x6DBD, 0x6DBD, 0x1F5C, 0x6DBE, 0x6DBE, 0x1F55, - 0x6DBF, 0x6DBF, 0x0B10, 0x6DC0, 0x6DC0, 0x1F45, 0x6DC2, 0x6DC2, 0x1F61, - 0x6DC4, 0x6DC4, 0x0B0D, 0x6DC5, 0x6DC5, 0x0B01, 0x6DC6, 0x6DC6, 0x0B0C, - 0x6DC7, 0x6DC7, 0x0AF7, 0x6DC8, 0x6DC8, 0x1F51, 0x6DC9, 0x6DC9, 0x1F63, - 0x6DCA, 0x6DCA, 0x1F5B, 0x6DCB, 0x6DCB, 0x0AF8, 0x6DCC, 0x6DCC, 0x0AF2, - 0x6DCD, 0x6DCD, 0x1F69, 0x6DCF, 0x6DCF, 0x1F62, 0x6DD0, 0x6DD0, 0x1F64, - 0x6DD1, 0x6DD1, 0x0AFA, 0x6DD2, 0x6DD2, 0x0B02, 0x6DD3, 0x6DD3, 0x1F66, - 0x6DD4, 0x6DD4, 0x1F4F, 0x6DD5, 0x6DD5, 0x1F60, 0x6DD6, 0x6DD6, 0x1F54, - 0x6DD7, 0x6DD7, 0x1F68, 0x6DD8, 0x6DD8, 0x0B07, 0x6DD9, 0x6DD9, 0x0AEF, - 0x6DDA, 0x6DDA, 0x0B05, 0x6DDB, 0x6DDB, 0x1F59, 0x6DDC, 0x6DDD, 0x1F57, - 0x6DDE, 0x6DDE, 0x0AFC, 0x6DDF, 0x6DDF, 0x1F53, 0x6DE0, 0x6DE0, 0x1F52, - 0x6DE1, 0x6DE1, 0x0AF1, 0x6DE2, 0x6DE2, 0x1F4C, 0x6DE3, 0x6DE3, 0x1F6A, - 0x6DE4, 0x6DE4, 0x0AF3, 0x6DE5, 0x6DE5, 0x1F56, 0x6DE6, 0x6DE6, 0x0B11, - 0x6DE8, 0x6DE8, 0x0B0B, 0x6DE9, 0x6DE9, 0x1F4B, 0x6DEA, 0x6DEA, 0x0B08, - 0x6DEB, 0x6DEB, 0x0B06, 0x6DEC, 0x6DEC, 0x0B0F, 0x6DED, 0x6DED, 0x1F5D, - 0x6DEE, 0x6DEE, 0x0B0A, 0x6DEF, 0x6DEF, 0x1D02, 0x6DF0, 0x6DF0, 0x1F5E, - 0x6DF1, 0x6DF1, 0x0B09, 0x6DF2, 0x6DF2, 0x1F65, 0x6DF3, 0x6DF3, 0x0AEE, - 0x6DF4, 0x6DF4, 0x1F5A, 0x6DF5, 0x6DF5, 0x0B00, 0x6DF6, 0x6DF6, 0x1F4E, - 0x6DF7, 0x6DF7, 0x0AFF, 0x6DF9, 0x6DF9, 0x0AFD, 0x6DFA, 0x6DFA, 0x0AF5, - 0x6DFB, 0x6DFB, 0x0AF4, 0x6DFC, 0x6DFC, 0x21BF, 0x6DFD, 0x6DFD, 0x1F67, - 0x6E00, 0x6E00, 0x1F50, 0x6E02, 0x6E02, 0x3CFA, 0x6E03, 0x6E03, 0x21D4, - 0x6E04, 0x6E04, 0x3ABE, 0x6E05, 0x6E05, 0x0AF6, 0x6E0A, 0x6E0A, 0x3AC1, - 0x6E0F, 0x6E0F, 0x3CF0, 0x6E15, 0x6E15, 0x4678, 0x6E18, 0x6E18, 0x4679, - 0x6E19, 0x6E19, 0x0CC1, 0x6E1A, 0x6E1A, 0x0B03, 0x6E1B, 0x6E1B, 0x0CAF, - 0x6E1C, 0x6E1C, 0x21CE, 0x6E1D, 0x6E1D, 0x0CBD, 0x6E1F, 0x6E1F, 0x21C2, - 0x6E20, 0x6E20, 0x0CAC, 0x6E21, 0x6E21, 0x0CA8, 0x6E22, 0x6E22, 0x21E0, - 0x6E23, 0x6E23, 0x0CAE, 0x6E24, 0x6E24, 0x0CB2, 0x6E25, 0x6E25, 0x0CAD, - 0x6E26, 0x6E26, 0x0CB6, 0x6E27, 0x6E27, 0x21E4, 0x6E28, 0x6E28, 0x21DB, - 0x6E29, 0x6E29, 0x467A, 0x6E2A, 0x6E2A, 0x4302, 0x6E2B, 0x6E2B, 0x21C9, - 0x6E2C, 0x6E2C, 0x0CBB, 0x6E2D, 0x6E2D, 0x0CB5, 0x6E2E, 0x6E2E, 0x21D5, - 0x6E2F, 0x6E2F, 0x0CA5, 0x6E30, 0x6E30, 0x21E1, 0x6E31, 0x6E31, 0x21DA, - 0x6E32, 0x6E32, 0x0CA9, 0x6E33, 0x6E33, 0x21CF, 0x6E34, 0x6E34, 0x0CB8, - 0x6E35, 0x6E36, 0x21EC, 0x6E38, 0x6E38, 0x0CA6, 0x6E39, 0x6E39, 0x21DF, - 0x6E3A, 0x6E3A, 0x0CBA, 0x6E3B, 0x6E3B, 0x21D3, 0x6E3C, 0x6E3D, 0x21C5, - 0x6E3E, 0x6E3E, 0x0CBE, 0x6E3F, 0x6E3F, 0x21CA, 0x6E40, 0x6E40, 0x21D1, - 0x6E41, 0x6E41, 0x21CB, 0x6E43, 0x6E43, 0x0CBC, 0x6E44, 0x6E44, 0x0CC4, - 0x6E45, 0x6E45, 0x21C7, 0x6E46, 0x6E47, 0x21C0, 0x6E49, 0x6E49, 0x21C3, - 0x6E4A, 0x6E4A, 0x0CAB, 0x6E4B, 0x6E4B, 0x21D0, 0x6E4D, 0x6E4D, 0x0CB9, - 0x6E4E, 0x6E4E, 0x0CC2, 0x6E4F, 0x6E4F, 0x4234, 0x6E50, 0x6E50, 0x41D1, - 0x6E51, 0x6E51, 0x21D2, 0x6E52, 0x6E52, 0x21EA, 0x6E53, 0x6E53, 0x21E2, - 0x6E54, 0x6E54, 0x0CA7, 0x6E55, 0x6E55, 0x21E8, 0x6E56, 0x6E56, 0x0CB3, - 0x6E58, 0x6E58, 0x0CB1, 0x6E59, 0x6E59, 0x40E6, 0x6E5A, 0x6E5A, 0x21EE, - 0x6E5B, 0x6E5B, 0x0CB0, 0x6E5C, 0x6E5C, 0x21D8, 0x6E5D, 0x6E5D, 0x21CC, - 0x6E5E, 0x6E5E, 0x21D6, 0x6E5F, 0x6E5F, 0x0CC7, 0x6E60, 0x6E60, 0x21DC, - 0x6E61, 0x6E61, 0x21D9, 0x6E62, 0x6E62, 0x21C8, 0x6E63, 0x6E63, 0x0CC3, - 0x6E64, 0x6E64, 0x21E6, 0x6E65, 0x6E65, 0x21E3, 0x6E66, 0x6E66, 0x21EB, - 0x6E67, 0x6E67, 0x0CAA, 0x6E68, 0x6E68, 0x21D7, 0x6E69, 0x6E69, 0x0CC6, - 0x6E6B, 0x6E6B, 0x21DE, 0x6E6E, 0x6E6E, 0x0CB4, 0x6E6F, 0x6E6F, 0x0CB7, - 0x6E71, 0x6E71, 0x21DD, 0x6E72, 0x6E72, 0x0CC5, 0x6E73, 0x6E73, 0x21CD, - 0x6E74, 0x6E74, 0x1F49, 0x6E76, 0x6E76, 0x39D3, 0x6E77, 0x6E77, 0x21E7, - 0x6E78, 0x6E78, 0x21E5, 0x6E79, 0x6E79, 0x21E9, 0x6E7C, 0x6E7C, 0x4223, - 0x6E86, 0x6E86, 0x467B, 0x6E88, 0x6E88, 0x21C4, 0x6E89, 0x6E89, 0x0CC0, - 0x6E8B, 0x6E8B, 0x3BBF, 0x6E8D, 0x6E8D, 0x246C, 0x6E8E, 0x6E8E, 0x246B, - 0x6E8F, 0x6E8F, 0x2451, 0x6E90, 0x6E90, 0x0E55, 0x6E92, 0x6E92, 0x246A, - 0x6E93, 0x6E94, 0x2454, 0x6E96, 0x6E96, 0x0E5F, 0x6E97, 0x6E97, 0x2473, - 0x6E98, 0x6E98, 0x0E5A, 0x6E99, 0x6E99, 0x2469, 0x6E9A, 0x6E9A, 0x4581, - 0x6E9B, 0x6E9B, 0x244E, 0x6E9C, 0x6E9C, 0x0E60, 0x6E9D, 0x6E9D, 0x0E56, - 0x6E9E, 0x6E9E, 0x245D, 0x6E9F, 0x6E9F, 0x2453, 0x6EA0, 0x6EA0, 0x2456, - 0x6EA1, 0x6EA1, 0x246E, 0x6EA2, 0x6EA2, 0x0E50, 0x6EA3, 0x6EA3, 0x2475, - 0x6EA4, 0x6EA4, 0x246D, 0x6EA5, 0x6EA5, 0x0E59, 0x6EA6, 0x6EA6, 0x2462, - 0x6EA7, 0x6EA7, 0x0E64, 0x6EAA, 0x6EAA, 0x0E63, 0x6EAB, 0x6EAB, 0x0E5D, - 0x6EAE, 0x6EAE, 0x2474, 0x6EAF, 0x6EAF, 0x0E51, 0x6EB0, 0x6EB0, 0x2460, - 0x6EB1, 0x6EB1, 0x2457, 0x6EB2, 0x6EB2, 0x2464, 0x6EB3, 0x6EB3, 0x2470, - 0x6EB4, 0x6EB4, 0x0E65, 0x6EB5, 0x6EB5, 0x41FE, 0x6EB6, 0x6EB6, 0x0E53, - 0x6EB7, 0x6EB7, 0x245F, 0x6EB8, 0x6EB8, 0x3E0C, 0x6EB9, 0x6EB9, 0x2458, - 0x6EBA, 0x6EBA, 0x0E5C, 0x6EBB, 0x6EBB, 0x467D, 0x6EBC, 0x6EBC, 0x0E5B, - 0x6EBD, 0x6EBD, 0x245B, 0x6EBE, 0x6EBE, 0x2465, 0x6EBF, 0x6EBF, 0x246F, - 0x6EC0, 0x6EC0, 0x2452, 0x6EC1, 0x6EC1, 0x245C, 0x6EC2, 0x6EC2, 0x0E54, - 0x6EC3, 0x6EC3, 0x2466, 0x6EC4, 0x6EC4, 0x0E61, 0x6EC5, 0x6EC5, 0x0E58, - 0x6EC6, 0x6EC6, 0x2459, 0x6EC7, 0x6EC7, 0x0E57, 0x6EC8, 0x6EC8, 0x2450, - 0x6EC9, 0x6EC9, 0x245E, 0x6ECA, 0x6ECA, 0x2472, 0x6ECB, 0x6ECB, 0x0CBF, - 0x6ECC, 0x6ECC, 0x101F, 0x6ECD, 0x6ECD, 0x2461, 0x6ECE, 0x6ECE, 0x26EB, - 0x6ECF, 0x6ECF, 0x2463, 0x6ED0, 0x6ED0, 0x2471, 0x6ED1, 0x6ED1, 0x0E5E, - 0x6ED2, 0x6ED2, 0x245A, 0x6ED3, 0x6ED3, 0x0E52, 0x6ED4, 0x6ED4, 0x0E62, - 0x6ED5, 0x6ED5, 0x119A, 0x6ED6, 0x6ED6, 0x244F, 0x6ED8, 0x6ED8, 0x2468, - 0x6ED9, 0x6ED9, 0x4069, 0x6EDA, 0x6EDA, 0x467F, 0x6EDB, 0x6EDB, 0x402F, - 0x6EDC, 0x6EDC, 0x2467, 0x6EDD, 0x6EDD, 0x4538, 0x6EE2, 0x6EE2, 0x467E, - 0x6EE8, 0x6EE9, 0x4681, 0x6EEB, 0x6EEB, 0x2707, 0x6EEC, 0x6EEC, 0x101C, - 0x6EED, 0x6EED, 0x26FC, 0x6EEE, 0x6EEE, 0x2701, 0x6EEF, 0x6EEF, 0x1011, - 0x6EF1, 0x6EF1, 0x26ED, 0x6EF2, 0x6EF2, 0x101E, 0x6EF4, 0x6EF4, 0x1008, - 0x6EF5, 0x6EF5, 0x26EC, 0x6EF6, 0x6EF6, 0x270D, 0x6EF7, 0x6EF7, 0x1020, - 0x6EF8, 0x6EF8, 0x26F0, 0x6EF9, 0x6EF9, 0x2700, 0x6EFA, 0x6EFA, 0x423B, - 0x6EFB, 0x6EFB, 0x26F2, 0x6EFC, 0x6EFC, 0x2710, 0x6EFD, 0x6EFD, 0x270C, - 0x6EFE, 0x6EFE, 0x1006, 0x6EFF, 0x6EFF, 0x1010, 0x6F00, 0x6F00, 0x2946, - 0x6F01, 0x6F01, 0x101D, 0x6F02, 0x6F02, 0x100E, 0x6F03, 0x6F03, 0x26EE, - 0x6F04, 0x6F04, 0x4224, 0x6F05, 0x6F05, 0x270B, 0x6F06, 0x6F06, 0x1012, - 0x6F07, 0x6F07, 0x2708, 0x6F08, 0x6F08, 0x2715, 0x6F09, 0x6F09, 0x26F4, - 0x6F0A, 0x6F0A, 0x26FD, 0x6F0B, 0x6F0B, 0x3ABA, 0x6F0C, 0x6F0C, 0x3CFB, - 0x6F0D, 0x6F0D, 0x2713, 0x6F0E, 0x6F0E, 0x2709, 0x6F0F, 0x6F0F, 0x100D, - 0x6F12, 0x6F12, 0x26FB, 0x6F13, 0x6F13, 0x1007, 0x6F14, 0x6F14, 0x1005, - 0x6F15, 0x6F15, 0x1017, 0x6F16, 0x6F16, 0x41A0, 0x6F17, 0x6F17, 0x46CE, - 0x6F18, 0x6F18, 0x26F9, 0x6F19, 0x6F1A, 0x26F6, 0x6F1C, 0x6F1C, 0x270F, - 0x6F1E, 0x6F1E, 0x2714, 0x6F1F, 0x6F1F, 0x2712, 0x6F20, 0x6F20, 0x100B, - 0x6F21, 0x6F21, 0x2716, 0x6F22, 0x6F22, 0x100F, 0x6F23, 0x6F23, 0x1016, - 0x6F24, 0x6F24, 0x4683, 0x6F25, 0x6F25, 0x26EF, 0x6F26, 0x6F26, 0x292E, - 0x6F27, 0x6F27, 0x26F8, 0x6F29, 0x6F29, 0x1009, 0x6F2A, 0x6F2A, 0x101B, - 0x6F2B, 0x6F2B, 0x1018, 0x6F2C, 0x6F2C, 0x100C, 0x6F2D, 0x6F2D, 0x2702, - 0x6F2E, 0x6F2E, 0x26F3, 0x6F2F, 0x6F2F, 0x1019, 0x6F30, 0x6F30, 0x2704, - 0x6F31, 0x6F31, 0x1013, 0x6F32, 0x6F32, 0x1015, 0x6F33, 0x6F33, 0x1004, - 0x6F34, 0x6F34, 0x4684, 0x6F35, 0x6F35, 0x2706, 0x6F36, 0x6F36, 0x26FE, - 0x6F37, 0x6F37, 0x26F1, 0x6F38, 0x6F38, 0x1014, 0x6F39, 0x6F39, 0x270E, - 0x6F3A, 0x6F3A, 0x2711, 0x6F3B, 0x6F3B, 0x26FA, 0x6F3C, 0x6F3C, 0x2705, - 0x6F3D, 0x6F3D, 0x4282, 0x6F3E, 0x6F3E, 0x100A, 0x6F3F, 0x6F3F, 0x1189, - 0x6F40, 0x6F40, 0x2703, 0x6F41, 0x6F41, 0x292D, 0x6F43, 0x6F43, 0x270A, - 0x6F44, 0x6F44, 0x4240, 0x6F4E, 0x6F4E, 0x26F5, 0x6F4F, 0x6F4F, 0x2937, - 0x6F50, 0x6F50, 0x2941, 0x6F51, 0x6F51, 0x118C, 0x6F52, 0x6F52, 0x2940, - 0x6F53, 0x6F53, 0x294C, 0x6F54, 0x6F54, 0x118E, 0x6F55, 0x6F55, 0x293E, - 0x6F56, 0x6F56, 0x3E52, 0x6F57, 0x6F57, 0x2942, 0x6F58, 0x6F58, 0x1199, - 0x6F5A, 0x6F5A, 0x2939, 0x6F5B, 0x6F5B, 0x1191, 0x6F5C, 0x6F5C, 0x4241, - 0x6F5D, 0x6F5D, 0x2945, 0x6F5E, 0x6F5E, 0x2B9A, 0x6F5F, 0x6F5F, 0x119D, - 0x6F60, 0x6F60, 0x119C, 0x6F61, 0x6F61, 0x2947, 0x6F62, 0x6F62, 0x2936, - 0x6F63, 0x6F63, 0x2951, 0x6F64, 0x6F64, 0x1197, 0x6F66, 0x6F66, 0x118D, - 0x6F67, 0x6F67, 0x294A, 0x6F69, 0x6F69, 0x294E, 0x6F6A, 0x6F6A, 0x2953, - 0x6F6B, 0x6F6B, 0x2948, 0x6F6C, 0x6F6C, 0x293C, 0x6F6D, 0x6F6D, 0x1190, - 0x6F6E, 0x6F6E, 0x1193, 0x6F6F, 0x6F6F, 0x119B, 0x6F70, 0x6F70, 0x1196, - 0x6F72, 0x6F72, 0x293F, 0x6F73, 0x6F73, 0x26FF, 0x6F74, 0x6F74, 0x4243, - 0x6F76, 0x6F76, 0x293B, 0x6F77, 0x6F77, 0x2952, 0x6F78, 0x6F78, 0x1192, - 0x6F79, 0x6F79, 0x3BBE, 0x6F7A, 0x6F7A, 0x1195, 0x6F7B, 0x6F7B, 0x2954, - 0x6F7C, 0x6F7C, 0x118A, 0x6F7D, 0x6F7D, 0x2949, 0x6F7E, 0x6F7E, 0x292F, - 0x6F7F, 0x6F7F, 0x294F, 0x6F80, 0x6F80, 0x13FC, 0x6F81, 0x6F81, 0x4687, - 0x6F82, 0x6F82, 0x293D, 0x6F84, 0x6F84, 0x118B, 0x6F85, 0x6F85, 0x2938, - 0x6F86, 0x6F86, 0x118F, 0x6F87, 0x6F87, 0x2930, 0x6F88, 0x6F88, 0x101A, - 0x6F89, 0x6F89, 0x2934, 0x6F8A, 0x6F8A, 0x4195, 0x6F8B, 0x6F8B, 0x294D, - 0x6F8C, 0x6F8C, 0x2935, 0x6F8D, 0x6F8D, 0x2933, 0x6F8E, 0x6F8E, 0x1194, - 0x6F90, 0x6F90, 0x294B, 0x6F92, 0x6F92, 0x2932, 0x6F93, 0x6F93, 0x2944, - 0x6F94, 0x6F94, 0x2943, 0x6F95, 0x6F95, 0x2950, 0x6F96, 0x6F96, 0x293A, - 0x6F97, 0x6F97, 0x1198, 0x6F9D, 0x6F9D, 0x4239, 0x6F9E, 0x6F9E, 0x2B9D, - 0x6F9F, 0x6F9F, 0x4246, 0x6FA0, 0x6FA0, 0x12EB, 0x6FA1, 0x6FA1, 0x12E1, - 0x6FA2, 0x6FA2, 0x2BA9, 0x6FA3, 0x6FA3, 0x2B95, 0x6FA4, 0x6FA4, 0x12E3, - 0x6FA5, 0x6FA5, 0x2BA1, 0x6FA6, 0x6FA6, 0x12EA, 0x6FA7, 0x6FA7, 0x12E5, - 0x6FA8, 0x6FA8, 0x2B9F, 0x6FA9, 0x6FA9, 0x2D8E, 0x6FAA, 0x6FAA, 0x2BA5, - 0x6FAB, 0x6FAB, 0x2BAB, 0x6FAC, 0x6FAC, 0x2BA4, 0x6FAD, 0x6FAD, 0x2B93, - 0x6FAE, 0x6FAE, 0x2BA2, 0x6FAF, 0x6FAF, 0x2BAD, 0x6FB0, 0x6FB0, 0x2BAF, - 0x6FB1, 0x6FB1, 0x12E0, 0x6FB2, 0x6FB2, 0x2BAE, 0x6FB3, 0x6FB3, 0x12E6, - 0x6FB4, 0x6FB4, 0x12EC, 0x6FB5, 0x6FB5, 0x3E27, 0x6FB6, 0x6FB6, 0x12E9, - 0x6FB8, 0x6FB8, 0x2BA8, 0x6FB9, 0x6FB9, 0x12E8, 0x6FBA, 0x6FBA, 0x2BA3, - 0x6FBB, 0x6FBB, 0x3BBB, 0x6FBC, 0x6FBC, 0x2B97, 0x6FBD, 0x6FBD, 0x2B9C, - 0x6FBE, 0x6FBE, 0x4688, 0x6FBF, 0x6FBF, 0x2BA7, 0x6FC0, 0x6FC0, 0x12E7, - 0x6FC1, 0x6FC1, 0x12E4, 0x6FC2, 0x6FC2, 0x12DF, 0x6FC3, 0x6FC3, 0x12E2, - 0x6FC4, 0x6FC4, 0x2B9B, 0x6FC6, 0x6FC6, 0x2931, 0x6FC7, 0x6FC7, 0x2B96, - 0x6FC8, 0x6FC8, 0x2B99, 0x6FC9, 0x6FC9, 0x2BAA, 0x6FCA, 0x6FCA, 0x2B9E, - 0x6FCB, 0x6FCB, 0x2B94, 0x6FCC, 0x6FCC, 0x2D8D, 0x6FCD, 0x6FCD, 0x2BAC, - 0x6FCE, 0x6FCE, 0x2B98, 0x6FCF, 0x6FCF, 0x2BA6, 0x6FD3, 0x6FD3, 0x4248, - 0x6FD4, 0x6FD4, 0x2D90, 0x6FD5, 0x6FD5, 0x1400, 0x6FD8, 0x6FD8, 0x13F4, - 0x6FD9, 0x6FD9, 0x3C74, 0x6FDA, 0x6FDA, 0x3C73, 0x6FDB, 0x6FDB, 0x13F8, - 0x6FDC, 0x6FDC, 0x2D92, 0x6FDD, 0x6FDD, 0x2D98, 0x6FDE, 0x6FDE, 0x2D96, - 0x6FDF, 0x6FE0, 0x13F6, 0x6FE1, 0x6FE1, 0x13FE, 0x6FE2, 0x6FE2, 0x2D99, - 0x6FE3, 0x6FE3, 0x2D91, 0x6FE4, 0x6FE4, 0x13F9, 0x6FE6, 0x6FE6, 0x2D95, - 0x6FE7, 0x6FE7, 0x2D94, 0x6FE8, 0x6FE8, 0x2D9A, 0x6FE9, 0x6FE9, 0x13FF, - 0x6FEB, 0x6FEB, 0x13FA, 0x6FEC, 0x6FEC, 0x13FD, 0x6FED, 0x6FED, 0x2D93, - 0x6FEE, 0x6FEE, 0x1401, 0x6FEF, 0x6FEF, 0x13FB, 0x6FF0, 0x6FF0, 0x1402, - 0x6FF1, 0x6FF1, 0x13F5, 0x6FF2, 0x6FF2, 0x2D97, 0x6FF4, 0x6FF4, 0x2D8F, - 0x6FF6, 0x6FF6, 0x38A5, 0x6FF7, 0x6FF7, 0x2F4E, 0x6FF8, 0x6FF8, 0x4237, - 0x6FFA, 0x6FFA, 0x14EB, 0x6FFB, 0x6FFB, 0x2F4B, 0x6FFC, 0x6FFC, 0x2F4D, - 0x6FFE, 0x6FFE, 0x14E9, 0x6FFF, 0x6FFF, 0x2F49, 0x7000, 0x7000, 0x2F4A, - 0x7001, 0x7001, 0x2F45, 0x7003, 0x7003, 0x46E2, 0x7004, 0x7004, 0x2BA0, - 0x7005, 0x7005, 0x2F46, 0x7006, 0x7006, 0x14EA, 0x7007, 0x7007, 0x2F42, - 0x7009, 0x7009, 0x14E7, 0x700A, 0x700A, 0x2F4F, 0x700B, 0x700B, 0x14E8, - 0x700C, 0x700D, 0x2F43, 0x700E, 0x700E, 0x2F48, 0x700F, 0x700F, 0x14ED, - 0x7011, 0x7011, 0x14EC, 0x7014, 0x7014, 0x2F47, 0x7015, 0x7015, 0x158F, - 0x7016, 0x7016, 0x30AD, 0x7017, 0x7017, 0x30B3, 0x7018, 0x7018, 0x1590, - 0x7019, 0x7019, 0x30AA, 0x701A, 0x701A, 0x158D, 0x701B, 0x701B, 0x158A, - 0x701C, 0x701C, 0x30B5, 0x701D, 0x701D, 0x158E, 0x701E, 0x701E, 0x3C76, - 0x701F, 0x701F, 0x158B, 0x7020, 0x7020, 0x30AC, 0x7021, 0x7023, 0x30AF, - 0x7024, 0x7024, 0x30B4, 0x7026, 0x7026, 0x2F4C, 0x7027, 0x7027, 0x30AB, - 0x7028, 0x7028, 0x158C, 0x7029, 0x7029, 0x30B2, 0x702A, 0x702A, 0x31EF, - 0x702B, 0x702B, 0x30AE, 0x702C, 0x702C, 0x468E, 0x702F, 0x702F, 0x31E6, - 0x7030, 0x7030, 0x161D, 0x7031, 0x7031, 0x31E9, 0x7032, 0x7032, 0x161E, - 0x7033, 0x7033, 0x31F2, 0x7034, 0x7034, 0x31E8, 0x7035, 0x7035, 0x31E5, - 0x7037, 0x7037, 0x31E7, 0x7038, 0x7038, 0x31EB, 0x7039, 0x7039, 0x31EE, - 0x703A, 0x703A, 0x31ED, 0x703B, 0x703B, 0x31F1, 0x703C, 0x703C, 0x31E4, - 0x703E, 0x703E, 0x161C, 0x703F, 0x703F, 0x31EC, 0x7040, 0x7040, 0x31F0, - 0x7041, 0x7041, 0x31F3, 0x7042, 0x7042, 0x31EA, 0x7043, 0x7044, 0x32D8, - 0x7045, 0x7046, 0x32DD, 0x7048, 0x7049, 0x32DB, 0x704A, 0x704A, 0x32DA, - 0x704B, 0x704B, 0x4254, 0x704C, 0x704C, 0x167A, 0x7050, 0x7050, 0x4690, - 0x7051, 0x7051, 0x16C8, 0x7052, 0x7052, 0x338C, 0x7054, 0x7054, 0x4691, - 0x7055, 0x7057, 0x3389, 0x7058, 0x7058, 0x16C9, 0x705A, 0x705A, 0x3423, - 0x705B, 0x705B, 0x3422, 0x705C, 0x705C, 0x3852, 0x705D, 0x705D, 0x348A, - 0x705E, 0x705E, 0x1722, 0x705F, 0x705F, 0x3488, 0x7060, 0x7060, 0x348B, - 0x7061, 0x7061, 0x3489, 0x7062, 0x7062, 0x34D0, 0x7063, 0x7063, 0x1744, - 0x7064, 0x7064, 0x1752, 0x7065, 0x7065, 0x351C, 0x7066, 0x7066, 0x3506, - 0x7067, 0x7067, 0x3CF5, 0x7068, 0x7068, 0x351B, 0x7069, 0x706A, 0x3547, - 0x706B, 0x706B, 0x02E6, 0x706C, 0x706C, 0x44F1, 0x706F, 0x706F, 0x4692, - 0x7070, 0x7070, 0x03F2, 0x7071, 0x7071, 0x180A, 0x7074, 0x7074, 0x18C3, - 0x7075, 0x7075, 0x38C7, 0x7076, 0x7076, 0x04E6, 0x7078, 0x7078, 0x04E9, - 0x7079, 0x7079, 0x4099, 0x707A, 0x707A, 0x18C4, 0x707C, 0x707D, 0x04E7, - 0x707E, 0x707E, 0x4255, 0x707F, 0x707F, 0x4693, 0x7081, 0x7081, 0x4959, - 0x7082, 0x7082, 0x19F7, 0x7083, 0x7083, 0x19F9, 0x7084, 0x7084, 0x19F4, - 0x7085, 0x7085, 0x19F1, 0x7086, 0x7086, 0x19F3, 0x7089, 0x7089, 0x43F9, - 0x708A, 0x708A, 0x0643, 0x708B, 0x708B, 0x40CB, 0x708E, 0x708E, 0x0641, - 0x708F, 0x708F, 0x46B3, 0x7091, 0x7091, 0x19F5, 0x7092, 0x7092, 0x0642, - 0x7093, 0x7093, 0x19F2, 0x7094, 0x7094, 0x19EF, 0x7095, 0x7095, 0x0640, - 0x7096, 0x7096, 0x19F6, 0x7098, 0x7098, 0x19F0, 0x7099, 0x7099, 0x0644, - 0x709A, 0x709A, 0x19F8, 0x709F, 0x709F, 0x1B66, 0x70A0, 0x70A0, 0x4742, - 0x70A1, 0x70A1, 0x1B6A, 0x70A3, 0x70A3, 0x3972, 0x70A4, 0x70A4, 0x0790, - 0x70A5, 0x70A5, 0x3CB7, 0x70A6, 0x70A6, 0x3D53, 0x70A7, 0x70A7, 0x4256, - 0x70A9, 0x70A9, 0x1B6D, 0x70AB, 0x70AB, 0x0788, 0x70AC, 0x70AC, 0x078B, - 0x70AD, 0x70AD, 0x078D, 0x70AE, 0x70AE, 0x078F, 0x70AF, 0x70AF, 0x078C, - 0x70B0, 0x70B0, 0x1B69, 0x70B1, 0x70B1, 0x1B68, 0x70B3, 0x70B3, 0x078A, - 0x70B4, 0x70B5, 0x1B6B, 0x70B7, 0x70B7, 0x1B65, 0x70B8, 0x70B8, 0x078E, - 0x70B9, 0x70B9, 0x3D69, 0x70BA, 0x70BA, 0x0789, 0x70BB, 0x70BB, 0x4812, - 0x70BC, 0x70BC, 0x4559, 0x70BD, 0x70BD, 0x4270, 0x70BE, 0x70BE, 0x1B67, - 0x70C0, 0x70C0, 0x4733, 0x70C4, 0x70C4, 0x3BAA, 0x70C5, 0x70C7, 0x1D27, - 0x70C8, 0x70C8, 0x0921, 0x70CA, 0x70CA, 0x091D, 0x70CB, 0x70CB, 0x1D1E, - 0x70CC, 0x70CC, 0x4258, 0x70CD, 0x70CD, 0x1D26, 0x70CE, 0x70CE, 0x1D2B, - 0x70CF, 0x70CF, 0x0922, 0x70D0, 0x70D0, 0x396D, 0x70D1, 0x70D1, 0x1D1C, - 0x70D2, 0x70D2, 0x1D22, 0x70D3, 0x70D3, 0x1D1B, 0x70D4, 0x70D4, 0x1D25, - 0x70D5, 0x70D6, 0x4259, 0x70D7, 0x70D7, 0x1D21, 0x70D8, 0x70D8, 0x091E, - 0x70D9, 0x70D9, 0x0920, 0x70DA, 0x70DA, 0x1D2A, 0x70DC, 0x70DC, 0x1D1A, - 0x70DD, 0x70DD, 0x1D1D, 0x70DE, 0x70DE, 0x1D23, 0x70DF, 0x70DF, 0x425B, - 0x70E0, 0x70E0, 0x1D24, 0x70E1, 0x70E1, 0x1D2C, 0x70E2, 0x70E2, 0x1D20, - 0x70E4, 0x70E4, 0x091F, 0x70EF, 0x70EF, 0x0B16, 0x70F0, 0x70F0, 0x1F72, - 0x70F1, 0x70F1, 0x3AC8, 0x70F3, 0x70F3, 0x1F74, 0x70F4, 0x70F4, 0x1F70, - 0x70F5, 0x70F5, 0x4760, 0x70F6, 0x70F6, 0x1F7C, 0x70F7, 0x70F7, 0x1F6E, - 0x70F8, 0x70F8, 0x1F7B, 0x70F9, 0x70F9, 0x0B12, 0x70FA, 0x70FA, 0x1F6C, - 0x70FB, 0x70FB, 0x21F2, 0x70FC, 0x70FC, 0x1F76, 0x70FD, 0x70FD, 0x0B15, - 0x70FE, 0x70FE, 0x3D0E, 0x70FF, 0x70FF, 0x1F77, 0x7100, 0x7100, 0x1F7A, - 0x7102, 0x7102, 0x1F7E, 0x7104, 0x7104, 0x1F73, 0x7105, 0x7105, 0x3A23, - 0x7106, 0x7106, 0x1F78, 0x7109, 0x710A, 0x0B13, 0x710B, 0x710B, 0x1F7D, - 0x710C, 0x710C, 0x1F71, 0x710D, 0x710D, 0x1F6D, 0x710E, 0x710E, 0x1F7F, - 0x7110, 0x7110, 0x1F75, 0x7113, 0x7113, 0x1F79, 0x7117, 0x7117, 0x1F6F, - 0x7119, 0x711A, 0x0CC8, 0x711B, 0x711B, 0x21FC, 0x711C, 0x711C, 0x0CCF, - 0x711D, 0x711D, 0x3D47, 0x711E, 0x711E, 0x21F0, 0x711F, 0x711F, 0x21F9, - 0x7120, 0x7120, 0x21EF, 0x7121, 0x7121, 0x0CCC, 0x7122, 0x7122, 0x21F7, - 0x7123, 0x7123, 0x21F5, 0x7125, 0x7125, 0x21F6, 0x7126, 0x7126, 0x0CCA, - 0x7128, 0x7128, 0x21FA, 0x7129, 0x7129, 0x3BA9, 0x712B, 0x712B, 0x4261, - 0x712C, 0x712C, 0x426A, 0x712E, 0x712E, 0x21F3, 0x712F, 0x712F, 0x21F1, - 0x7130, 0x7130, 0x0CCB, 0x7131, 0x7131, 0x21F4, 0x7132, 0x7132, 0x21F8, - 0x7133, 0x7133, 0x3D54, 0x7134, 0x7134, 0x3C7E, 0x7135, 0x7135, 0x376D, - 0x7136, 0x7136, 0x0CCD, 0x713A, 0x713A, 0x21FB, 0x713B, 0x713B, 0x3AC5, - 0x713E, 0x713E, 0x372E, 0x7140, 0x7140, 0x4398, 0x7141, 0x7141, 0x247B, - 0x7142, 0x7142, 0x2482, 0x7143, 0x7143, 0x2484, 0x7144, 0x7144, 0x248A, - 0x7145, 0x7145, 0x4262, 0x7146, 0x7146, 0x0E72, 0x7147, 0x7147, 0x2476, - 0x7149, 0x7149, 0x0E6A, 0x714A, 0x714A, 0x4264, 0x714B, 0x714B, 0x2485, - 0x714C, 0x714C, 0x0E6F, 0x714D, 0x714D, 0x248B, 0x714E, 0x714E, 0x0E66, - 0x714F, 0x714F, 0x4267, 0x7150, 0x7150, 0x2488, 0x7151, 0x7151, 0x4865, - 0x7152, 0x7152, 0x2478, 0x7153, 0x7153, 0x2489, 0x7154, 0x7154, 0x2477, - 0x7156, 0x7156, 0x0E74, 0x7158, 0x7158, 0x2483, 0x7159, 0x7159, 0x0E67, - 0x715A, 0x715A, 0x248C, 0x715C, 0x715C, 0x0E6C, 0x715D, 0x715D, 0x247C, - 0x715E, 0x715E, 0x0E71, 0x715F, 0x715F, 0x2487, 0x7160, 0x7160, 0x247A, - 0x7161, 0x7161, 0x2481, 0x7162, 0x7162, 0x247D, 0x7163, 0x7163, 0x2479, - 0x7164, 0x7164, 0x0E69, 0x7165, 0x7165, 0x0E70, 0x7166, 0x7166, 0x0E6E, - 0x7167, 0x7167, 0x0E6B, 0x7168, 0x7168, 0x0E73, 0x7169, 0x7169, 0x0E68, - 0x716A, 0x716A, 0x2480, 0x716B, 0x716B, 0x3CC5, 0x716C, 0x716C, 0x0E6D, - 0x716E, 0x716E, 0x0CCE, 0x7170, 0x7170, 0x2486, 0x7171, 0x7171, 0x3DC0, - 0x7172, 0x7172, 0x247E, 0x7173, 0x7173, 0x47E7, 0x7175, 0x7175, 0x3CED, - 0x7176, 0x7176, 0x4000, 0x7177, 0x7177, 0x3957, 0x7178, 0x7178, 0x247F, - 0x717A, 0x717A, 0x4924, 0x717B, 0x717B, 0x271E, 0x717C, 0x717C, 0x3835, - 0x717D, 0x717D, 0x1023, 0x717E, 0x717E, 0x3970, 0x7180, 0x7180, 0x271A, - 0x7181, 0x7181, 0x2720, 0x7182, 0x7182, 0x271C, 0x7184, 0x7184, 0x1025, - 0x7185, 0x7185, 0x271B, 0x7186, 0x7186, 0x271F, 0x7187, 0x7187, 0x2717, - 0x7188, 0x7188, 0x4706, 0x7189, 0x7189, 0x2719, 0x718A, 0x718A, 0x1024, - 0x718C, 0x718C, 0x39EA, 0x718E, 0x718E, 0x3D3B, 0x718F, 0x718F, 0x271D, - 0x7190, 0x7190, 0x2718, 0x7192, 0x7192, 0x1026, 0x7194, 0x7194, 0x1021, - 0x7196, 0x7196, 0x425F, 0x7197, 0x7197, 0x2721, 0x7198, 0x7198, 0x481D, - 0x7199, 0x7199, 0x1022, 0x719A, 0x719A, 0x295A, 0x719B, 0x719B, 0x2957, - 0x719C, 0x719C, 0x2963, 0x719D, 0x719D, 0x295D, 0x719E, 0x719E, 0x295F, - 0x719F, 0x719F, 0x119E, 0x71A0, 0x71A0, 0x2959, 0x71A1, 0x71A1, 0x2961, - 0x71A2, 0x71A2, 0x48C1, 0x71A3, 0x71A3, 0x3EC8, 0x71A4, 0x71A4, 0x2960, - 0x71A5, 0x71A5, 0x295E, 0x71A7, 0x71A7, 0x2964, 0x71A8, 0x71A8, 0x11A1, - 0x71A9, 0x71A9, 0x295B, 0x71AA, 0x71AA, 0x2962, 0x71AC, 0x71AC, 0x119F, - 0x71AD, 0x71AD, 0x3E1D, 0x71AF, 0x71AF, 0x2956, 0x71B0, 0x71B0, 0x2958, - 0x71B1, 0x71B1, 0x11A0, 0x71B2, 0x71B2, 0x2955, 0x71B3, 0x71B3, 0x2965, - 0x71B4, 0x71B4, 0x425E, 0x71B5, 0x71B5, 0x295C, 0x71B7, 0x71B7, 0x468B, - 0x71B8, 0x71B8, 0x2BB3, 0x71B9, 0x71B9, 0x12F3, 0x71BA, 0x71BA, 0x426E, - 0x71BC, 0x71BC, 0x2BBE, 0x71BD, 0x71BD, 0x2BBC, 0x71BE, 0x71BE, 0x12ED, - 0x71BF, 0x71BF, 0x2BB2, 0x71C0, 0x71C1, 0x2BB5, 0x71C2, 0x71C2, 0x2BB1, - 0x71C3, 0x71C4, 0x12F7, 0x71C5, 0x71C5, 0x2BB0, 0x71C6, 0x71C6, 0x2BBF, - 0x71C7, 0x71C7, 0x2BBA, 0x71C8, 0x71C8, 0x12F1, 0x71C9, 0x71C9, 0x12EE, - 0x71CA, 0x71CA, 0x2BB9, 0x71CB, 0x71CB, 0x2BB7, 0x71CE, 0x71CE, 0x12F4, - 0x71CF, 0x71CF, 0x2BBB, 0x71D0, 0x71D0, 0x12EF, 0x71D1, 0x71D1, 0x373D, - 0x71D2, 0x71D2, 0x12F0, 0x71D4, 0x71D4, 0x2BB8, 0x71D5, 0x71D5, 0x12F2, - 0x71D6, 0x71D6, 0x2BB4, 0x71D8, 0x71D8, 0x2BBD, 0x71D9, 0x71D9, 0x12F5, - 0x71DA, 0x71DB, 0x2BC0, 0x71DC, 0x71DC, 0x12F6, 0x71DD, 0x71DD, 0x4078, - 0x71DF, 0x71DF, 0x1404, 0x71E0, 0x71E0, 0x140B, 0x71E1, 0x71E1, 0x2D9B, - 0x71E2, 0x71E2, 0x2DA1, 0x71E4, 0x71E4, 0x2D9F, 0x71E5, 0x71E5, 0x1407, - 0x71E6, 0x71E6, 0x1406, 0x71E7, 0x71E7, 0x1403, 0x71E8, 0x71E8, 0x2D9D, - 0x71EB, 0x71EB, 0x3C81, 0x71EC, 0x71EC, 0x1409, 0x71ED, 0x71ED, 0x1408, - 0x71EE, 0x71EE, 0x1405, 0x71F0, 0x71F0, 0x2DA0, 0x71F1, 0x71F1, 0x2D9C, - 0x71F2, 0x71F2, 0x2D9E, 0x71F4, 0x71F4, 0x140A, 0x71F5, 0x71F5, 0x46EE, - 0x71F6, 0x71F6, 0x3E9A, 0x71F8, 0x71F8, 0x14F1, 0x71F9, 0x71F9, 0x2F52, - 0x71FB, 0x71FC, 0x14EE, 0x71FD, 0x71FD, 0x2F54, 0x71FE, 0x71FE, 0x14F0, - 0x71FF, 0x71FF, 0x2F51, 0x7201, 0x7201, 0x2F50, 0x7202, 0x7202, 0x30B9, - 0x7203, 0x7203, 0x2F53, 0x7205, 0x7205, 0x30BA, 0x7206, 0x7206, 0x1591, - 0x7207, 0x7207, 0x30B8, 0x7209, 0x7209, 0x3DBB, 0x720A, 0x720A, 0x30B7, - 0x720C, 0x720C, 0x30B6, 0x720D, 0x720D, 0x1592, 0x720E, 0x720E, 0x4271, - 0x720F, 0x720F, 0x39FC, 0x7210, 0x7210, 0x161F, 0x7213, 0x7214, 0x31F4, - 0x7215, 0x7215, 0x4273, 0x7216, 0x7216, 0x3953, 0x7217, 0x7217, 0x3969, - 0x7219, 0x7219, 0x32E1, 0x721A, 0x721A, 0x32E0, 0x721B, 0x721B, 0x167B, - 0x721D, 0x721D, 0x32DF, 0x721E, 0x721F, 0x338D, 0x7222, 0x7222, 0x3424, - 0x7223, 0x7223, 0x348C, 0x7224, 0x7224, 0x4276, 0x7226, 0x7226, 0x34D1, - 0x7227, 0x7227, 0x3535, 0x7228, 0x7228, 0x1766, 0x7229, 0x7229, 0x3549, - 0x722A, 0x722A, 0x02E7, 0x722B, 0x722B, 0x44F2, 0x722C, 0x722D, 0x0645, - 0x722E, 0x722E, 0x4279, 0x7230, 0x7230, 0x0791, 0x7235, 0x7235, 0x140C, - 0x7236, 0x7236, 0x02E8, 0x7238, 0x7238, 0x0647, 0x7239, 0x7239, 0x0923, - 0x723A, 0x723A, 0x0E75, 0x723B, 0x723B, 0x02E9, 0x723D, 0x723D, 0x0B17, - 0x723E, 0x723E, 0x1027, 0x723F, 0x723F, 0x178D, 0x7240, 0x7240, 0x427A, - 0x7241, 0x7241, 0x1B6E, 0x7242, 0x7242, 0x1D2D, 0x7244, 0x7244, 0x2722, - 0x7246, 0x7246, 0x140D, 0x7247, 0x7247, 0x02EA, 0x7248, 0x7248, 0x0648, - 0x7249, 0x724A, 0x1B6F, 0x724B, 0x724B, 0x21FD, 0x724C, 0x724C, 0x0CD0, - 0x724F, 0x724F, 0x248D, 0x7250, 0x7250, 0x3AC9, 0x7252, 0x7252, 0x0E76, - 0x7253, 0x7253, 0x2723, 0x7255, 0x7255, 0x427D, 0x7256, 0x7256, 0x11A2, - 0x7257, 0x7257, 0x427E, 0x7258, 0x7258, 0x1593, 0x7259, 0x7259, 0x02EB, - 0x725A, 0x725A, 0x21FE, 0x725B, 0x725B, 0x02EC, 0x725C, 0x725C, 0x465A, - 0x725D, 0x725D, 0x03F4, 0x725E, 0x725E, 0x180B, 0x725F, 0x725F, 0x03F3, - 0x7260, 0x7260, 0x04EC, 0x7261, 0x7261, 0x04EB, 0x7262, 0x7262, 0x04EA, - 0x7263, 0x7263, 0x18C5, 0x7266, 0x7266, 0x3EBB, 0x7267, 0x7267, 0x0649, - 0x7269, 0x7269, 0x064A, 0x726A, 0x726A, 0x19FA, 0x726C, 0x726C, 0x1B71, - 0x726E, 0x726E, 0x1B74, 0x726F, 0x726F, 0x0793, 0x7270, 0x7270, 0x1B72, - 0x7272, 0x7272, 0x0792, 0x7273, 0x7273, 0x1B73, 0x7274, 0x7274, 0x0794, - 0x7276, 0x7276, 0x1D30, 0x7277, 0x7277, 0x1D2F, 0x7278, 0x7278, 0x1D2E, - 0x7279, 0x7279, 0x0924, 0x727B, 0x727C, 0x1F81, 0x727D, 0x727D, 0x0B18, - 0x727E, 0x727E, 0x1F80, 0x727F, 0x727F, 0x1F83, 0x7280, 0x7280, 0x0CD2, - 0x7281, 0x7281, 0x0B19, 0x7282, 0x7282, 0x4283, 0x7284, 0x7284, 0x0CD1, - 0x7285, 0x7285, 0x2202, 0x7286, 0x7286, 0x2201, 0x7287, 0x7287, 0x3ACA, - 0x7288, 0x7289, 0x21FF, 0x728B, 0x728B, 0x2203, 0x728C, 0x728C, 0x248F, - 0x728D, 0x728D, 0x248E, 0x728E, 0x728E, 0x2492, 0x728F, 0x728F, 0x43C9, - 0x7290, 0x7290, 0x2491, 0x7291, 0x7291, 0x2490, 0x7292, 0x7292, 0x1028, - 0x7293, 0x7293, 0x2726, 0x7294, 0x7294, 0x3ACB, 0x7295, 0x7295, 0x2725, - 0x7296, 0x7296, 0x1029, 0x7297, 0x7297, 0x2724, 0x7298, 0x7298, 0x2966, - 0x729A, 0x729A, 0x2967, 0x729B, 0x729B, 0x11A3, 0x729D, 0x729E, 0x2BC2, - 0x729F, 0x729F, 0x473A, 0x72A1, 0x72A1, 0x30BF, 0x72A2, 0x72A2, 0x1594, - 0x72A3, 0x72A3, 0x30BE, 0x72A4, 0x72A4, 0x30BD, 0x72A5, 0x72A6, 0x30BB, - 0x72A7, 0x72A7, 0x167C, 0x72A8, 0x72A8, 0x31F6, 0x72A9, 0x72A9, 0x338F, - 0x72AA, 0x72AA, 0x34D2, 0x72AC, 0x72AC, 0x02ED, 0x72AD, 0x72AD, 0x44F4, - 0x72AE, 0x72AE, 0x17AF, 0x72AF, 0x72AF, 0x0355, 0x72B0, 0x72B0, 0x17B0, - 0x72B2, 0x72B2, 0x3FB6, 0x72B4, 0x72B5, 0x180C, 0x72BA, 0x72BA, 0x18CB, - 0x72BD, 0x72BD, 0x18C7, 0x72BF, 0x72BF, 0x18C6, 0x72C0, 0x72C0, 0x064B, - 0x72C1, 0x72C1, 0x18CA, 0x72C2, 0x72C2, 0x04EE, 0x72C3, 0x72C3, 0x18C8, - 0x72C4, 0x72C4, 0x04ED, 0x72C5, 0x72C5, 0x18CC, 0x72C6, 0x72C6, 0x18C9, - 0x72C9, 0x72C9, 0x19FE, 0x72CA, 0x72CA, 0x1B75, 0x72CB, 0x72CB, 0x19FC, - 0x72CC, 0x72CC, 0x1A03, 0x72CD, 0x72CD, 0x43CA, 0x72CE, 0x72CE, 0x064C, - 0x72D0, 0x72D0, 0x064F, 0x72D1, 0x72D1, 0x1A04, 0x72D2, 0x72D2, 0x1A00, - 0x72D4, 0x72D4, 0x1A01, 0x72D6, 0x72D6, 0x19FB, 0x72D7, 0x72D7, 0x064E, - 0x72D8, 0x72D8, 0x19FD, 0x72D9, 0x72D9, 0x064D, 0x72DA, 0x72DA, 0x1A02, - 0x72DC, 0x72DC, 0x19FF, 0x72DF, 0x72DF, 0x1B79, 0x72E0, 0x72E1, 0x0796, - 0x72E2, 0x72E2, 0x3F97, 0x72E3, 0x72E3, 0x1B7C, 0x72E4, 0x72E4, 0x1B76, - 0x72E6, 0x72E6, 0x1B7B, 0x72E8, 0x72E8, 0x1B77, 0x72E9, 0x72E9, 0x0795, - 0x72EA, 0x72EA, 0x1B7A, 0x72EB, 0x72EB, 0x1B78, 0x72F3, 0x72F3, 0x1D36, - 0x72F4, 0x72F4, 0x1D33, 0x72F6, 0x72F6, 0x1D35, 0x72F7, 0x72F7, 0x0929, - 0x72F8, 0x72F8, 0x0928, 0x72F9, 0x72F9, 0x0926, 0x72FA, 0x72FA, 0x1D32, - 0x72FB, 0x72FB, 0x1D37, 0x72FC, 0x72FC, 0x0925, 0x72FD, 0x72FD, 0x0927, - 0x72FE, 0x72FE, 0x1D34, 0x72FF, 0x72FF, 0x1F8B, 0x7300, 0x7300, 0x1D31, - 0x7301, 0x7301, 0x1D38, 0x7302, 0x7302, 0x3F9A, 0x7304, 0x7304, 0x3EB5, - 0x7307, 0x7307, 0x1F86, 0x7308, 0x7308, 0x1F8A, 0x730A, 0x730A, 0x1F89, - 0x730B, 0x730B, 0x2205, 0x730C, 0x730C, 0x2210, 0x730F, 0x730F, 0x1F8C, - 0x7310, 0x7310, 0x46EA, 0x7311, 0x7311, 0x1F87, 0x7312, 0x7312, 0x2204, - 0x7313, 0x7313, 0x0B1D, 0x7316, 0x7316, 0x0B1C, 0x7317, 0x7317, 0x1F85, - 0x7318, 0x7318, 0x1F88, 0x7319, 0x7319, 0x0B1E, 0x731B, 0x731B, 0x0B1B, - 0x731C, 0x731C, 0x0B1A, 0x731D, 0x731D, 0x1F84, 0x731E, 0x731E, 0x1F8D, - 0x7322, 0x7322, 0x2207, 0x7323, 0x7323, 0x220E, 0x7325, 0x7325, 0x0CD4, - 0x7326, 0x7326, 0x220D, 0x7327, 0x7327, 0x220A, 0x7328, 0x7328, 0x428A, - 0x7329, 0x7329, 0x0CD6, 0x732A, 0x732A, 0x3D70, 0x732B, 0x732B, 0x4285, - 0x732C, 0x732C, 0x3FB2, 0x732D, 0x732D, 0x220C, 0x732E, 0x732E, 0x428B, - 0x7330, 0x7330, 0x2206, 0x7331, 0x7331, 0x2208, 0x7332, 0x7332, 0x220B, - 0x7333, 0x7333, 0x2209, 0x7334, 0x7334, 0x0CD5, 0x7335, 0x7335, 0x220F, - 0x7336, 0x7336, 0x0CD3, 0x7337, 0x7337, 0x0E77, 0x7338, 0x7338, 0x46EB, - 0x7339, 0x7339, 0x43CC, 0x733A, 0x733A, 0x2496, 0x733B, 0x733B, 0x2495, - 0x733C, 0x733C, 0x2493, 0x733E, 0x733E, 0x0E7A, 0x733F, 0x733F, 0x0E79, - 0x7340, 0x7340, 0x2497, 0x7341, 0x7341, 0x46EC, 0x7342, 0x7342, 0x2494, - 0x7343, 0x7343, 0x2727, 0x7344, 0x7344, 0x102A, 0x7345, 0x7345, 0x0E78, - 0x7348, 0x7348, 0x43FA, 0x7349, 0x7349, 0x2499, 0x734A, 0x734A, 0x2498, - 0x734C, 0x734C, 0x272A, 0x734D, 0x734D, 0x2728, 0x734E, 0x734E, 0x11A4, - 0x734F, 0x734F, 0x3F51, 0x7350, 0x7350, 0x102B, 0x7351, 0x7351, 0x2729, - 0x7352, 0x7352, 0x2969, 0x7357, 0x7357, 0x11A5, 0x7358, 0x7358, 0x2968, - 0x7359, 0x7359, 0x2971, 0x735A, 0x735A, 0x2970, 0x735B, 0x735B, 0x296E, - 0x735D, 0x735D, 0x296D, 0x735E, 0x7360, 0x296A, 0x7361, 0x7361, 0x296F, - 0x7362, 0x7362, 0x2972, 0x7365, 0x7365, 0x2BC8, 0x7366, 0x7367, 0x2BC5, - 0x7368, 0x7368, 0x12F9, 0x7369, 0x7369, 0x2BC4, 0x736A, 0x736A, 0x2BCA, - 0x736B, 0x736B, 0x2BC9, 0x736C, 0x736C, 0x2BC7, 0x736E, 0x736F, 0x2DA3, - 0x7370, 0x7370, 0x140E, 0x7371, 0x7371, 0x3F98, 0x7372, 0x7372, 0x140F, - 0x7373, 0x7373, 0x2DA2, 0x7374, 0x7374, 0x3ED4, 0x7375, 0x7375, 0x14F3, - 0x7376, 0x7376, 0x2F55, 0x7377, 0x7377, 0x14F2, 0x7378, 0x7378, 0x1595, - 0x737A, 0x737A, 0x1596, 0x737B, 0x737B, 0x1620, 0x737C, 0x737C, 0x31F8, - 0x737D, 0x737D, 0x31F7, 0x737E, 0x737E, 0x32E2, 0x737F, 0x737F, 0x3390, - 0x7380, 0x7380, 0x16CA, 0x7381, 0x7381, 0x3426, 0x7382, 0x7382, 0x3425, - 0x7383, 0x7383, 0x3427, 0x7384, 0x7384, 0x0356, 0x7385, 0x7385, 0x1B7D, - 0x7386, 0x7386, 0x092A, 0x7387, 0x7387, 0x0B1F, 0x7388, 0x7388, 0x1F8E, - 0x7389, 0x7389, 0x0357, 0x738A, 0x738A, 0x17B1, 0x738B, 0x738B, 0x02EE, - 0x738E, 0x738E, 0x180E, 0x738F, 0x738F, 0x46E5, 0x7392, 0x7392, 0x18D1, - 0x7393, 0x7394, 0x18CF, 0x7395, 0x7395, 0x18CD, 0x7396, 0x7396, 0x04EF, - 0x7397, 0x7397, 0x18CE, 0x7398, 0x7398, 0x39F6, 0x739C, 0x739C, 0x408A, - 0x739D, 0x739D, 0x1A0C, 0x739E, 0x739E, 0x395B, 0x739F, 0x739F, 0x0652, - 0x73A0, 0x73A0, 0x1A0A, 0x73A1, 0x73A1, 0x1A06, 0x73A2, 0x73A2, 0x1A09, - 0x73A4, 0x73A4, 0x1A05, 0x73A5, 0x73A5, 0x0654, 0x73A6, 0x73A6, 0x1A08, - 0x73A7, 0x73A7, 0x4087, 0x73A8, 0x73A8, 0x0651, 0x73A9, 0x73A9, 0x0650, - 0x73AA, 0x73AA, 0x428D, 0x73AB, 0x73AB, 0x0653, 0x73AC, 0x73AC, 0x1A0B, - 0x73AD, 0x73AD, 0x1A07, 0x73B2, 0x73B2, 0x079B, 0x73B3, 0x73B3, 0x079E, - 0x73B4, 0x73B4, 0x1B85, 0x73B5, 0x73B5, 0x1B84, 0x73B6, 0x73B6, 0x1B83, - 0x73B7, 0x73B7, 0x0798, 0x73B8, 0x73B8, 0x1B8C, 0x73B9, 0x73B9, 0x1B82, - 0x73BB, 0x73BB, 0x079A, 0x73BC, 0x73BC, 0x1D3D, 0x73BE, 0x73BE, 0x1B89, - 0x73BF, 0x73BF, 0x1B87, 0x73C0, 0x73C0, 0x079D, 0x73C2, 0x73C2, 0x1B7F, - 0x73C3, 0x73C3, 0x1B8A, 0x73C5, 0x73C5, 0x1B81, 0x73C6, 0x73C6, 0x1B8B, - 0x73C7, 0x73C7, 0x1B88, 0x73C8, 0x73C8, 0x1B80, 0x73C9, 0x73C9, 0x4290, - 0x73CA, 0x73CA, 0x0799, 0x73CB, 0x73CB, 0x1B8D, 0x73CC, 0x73CC, 0x1B7E, - 0x73CD, 0x73CD, 0x079C, 0x73CE, 0x73CE, 0x411B, 0x73CF, 0x73CF, 0x428C, - 0x73D0, 0x73D0, 0x3B17, 0x73D2, 0x73D2, 0x1D42, 0x73D3, 0x73D3, 0x1D39, - 0x73D4, 0x73D4, 0x1D44, 0x73D5, 0x73D5, 0x4073, 0x73D6, 0x73D6, 0x1D3C, - 0x73D7, 0x73D8, 0x1D47, 0x73D9, 0x73D9, 0x1D3A, 0x73DA, 0x73DA, 0x1D46, - 0x73DB, 0x73DB, 0x1D43, 0x73DC, 0x73DC, 0x1D41, 0x73DD, 0x73DD, 0x1D45, - 0x73DE, 0x73DE, 0x0930, 0x73E0, 0x73E0, 0x092E, 0x73E1, 0x73E1, 0x46F0, - 0x73E2, 0x73E2, 0x3CA3, 0x73E3, 0x73E3, 0x1D3F, 0x73E4, 0x73E4, 0x42A5, - 0x73E5, 0x73E5, 0x1D3B, 0x73E6, 0x73E6, 0x3CBA, 0x73E7, 0x73E7, 0x1D3E, - 0x73E8, 0x73E8, 0x1D49, 0x73E9, 0x73E9, 0x1D40, 0x73EA, 0x73EA, 0x092F, - 0x73EB, 0x73EB, 0x1B86, 0x73ED, 0x73ED, 0x092B, 0x73EE, 0x73EE, 0x092D, - 0x73EF, 0x73EF, 0x4011, 0x73F3, 0x73F3, 0x3CAB, 0x73F4, 0x73F4, 0x1F9C, - 0x73F5, 0x73F5, 0x1F91, 0x73F6, 0x73F6, 0x1F8F, 0x73F7, 0x73F7, 0x429A, - 0x73F8, 0x73F8, 0x1F90, 0x73F9, 0x73F9, 0x3BF9, 0x73FA, 0x73FA, 0x1F97, - 0x73FB, 0x73FB, 0x3CAC, 0x73FC, 0x73FC, 0x1F98, 0x73FD, 0x73FD, 0x1F94, - 0x73FE, 0x73FE, 0x0B24, 0x73FF, 0x73FF, 0x1F99, 0x7400, 0x7400, 0x1F96, - 0x7401, 0x7401, 0x1F93, 0x7403, 0x7403, 0x0B22, 0x7404, 0x7404, 0x1F92, - 0x7405, 0x7405, 0x0B20, 0x7406, 0x7406, 0x0B23, 0x7407, 0x7407, 0x1F95, - 0x7408, 0x7408, 0x1F9D, 0x7409, 0x7409, 0x092C, 0x740A, 0x740A, 0x0B21, - 0x740B, 0x740B, 0x1F9B, 0x740C, 0x740C, 0x1F9A, 0x740D, 0x740D, 0x0B25, - 0x7411, 0x7411, 0x456C, 0x7412, 0x7412, 0x3BE6, 0x7414, 0x7414, 0x39F4, - 0x7415, 0x7415, 0x429B, 0x7416, 0x7416, 0x2215, 0x7417, 0x7417, 0x40AD, - 0x7419, 0x7419, 0x46F3, 0x741A, 0x741A, 0x2216, 0x741B, 0x741B, 0x0CE0, - 0x741C, 0x741C, 0x38DD, 0x741D, 0x741D, 0x221C, 0x741E, 0x741F, 0x46F4, - 0x7420, 0x7420, 0x221E, 0x7421, 0x7421, 0x2217, 0x7422, 0x7422, 0x0CDA, - 0x7423, 0x7423, 0x221B, 0x7424, 0x7424, 0x221A, 0x7425, 0x7425, 0x0CDB, - 0x7426, 0x7426, 0x0CE1, 0x7428, 0x7428, 0x0CE2, 0x7429, 0x7429, 0x221D, - 0x742A, 0x742A, 0x0CD8, 0x742B, 0x742B, 0x2214, 0x742C, 0x742C, 0x2212, - 0x742D, 0x742D, 0x2218, 0x742E, 0x742E, 0x2211, 0x742F, 0x742F, 0x0CDF, - 0x7430, 0x7430, 0x2213, 0x7431, 0x7431, 0x2219, 0x7432, 0x7432, 0x221F, - 0x7433, 0x7433, 0x0CD9, 0x7434, 0x7434, 0x0CDE, 0x7435, 0x7436, 0x0CDC, - 0x7437, 0x7437, 0x3AE1, 0x7438, 0x7438, 0x3B09, 0x7439, 0x7439, 0x429E, - 0x743A, 0x743A, 0x0CD7, 0x743C, 0x743C, 0x3ADF, 0x743F, 0x743F, 0x0E81, - 0x7440, 0x7440, 0x24A0, 0x7441, 0x7441, 0x0E80, 0x7442, 0x7442, 0x24A4, - 0x7443, 0x7443, 0x3A1A, 0x7444, 0x7444, 0x249A, 0x7445, 0x7445, 0x3BD7, - 0x7446, 0x7446, 0x24A5, 0x7447, 0x7447, 0x42A4, 0x7448, 0x7448, 0x3CB5, - 0x7449, 0x7449, 0x4291, 0x744A, 0x744B, 0x249B, 0x744D, 0x744D, 0x24A6, - 0x744E, 0x744E, 0x24A3, 0x744F, 0x7450, 0x24A1, 0x7451, 0x7451, 0x249E, - 0x7452, 0x7452, 0x249D, 0x7453, 0x7453, 0x4231, 0x7454, 0x7454, 0x24A7, - 0x7455, 0x7455, 0x0E7D, 0x7456, 0x7456, 0x39F5, 0x7457, 0x7457, 0x249F, - 0x7459, 0x7459, 0x0E82, 0x745A, 0x745A, 0x0E7C, 0x745B, 0x745C, 0x0E83, - 0x745D, 0x745D, 0x42C6, 0x745E, 0x745E, 0x0E7F, 0x745F, 0x745F, 0x0E7E, - 0x7460, 0x7460, 0x42A2, 0x7462, 0x7462, 0x272B, 0x7463, 0x7463, 0x102D, - 0x7464, 0x7464, 0x102C, 0x7465, 0x7465, 0x4101, 0x7467, 0x7467, 0x2730, - 0x7468, 0x7468, 0x3AEE, 0x7469, 0x7469, 0x11A6, 0x746A, 0x746A, 0x102E, - 0x746B, 0x746B, 0x3BE7, 0x746C, 0x746C, 0x42A8, 0x746D, 0x746D, 0x1030, - 0x746E, 0x746E, 0x2731, 0x746F, 0x746F, 0x0E7B, 0x7470, 0x7470, 0x102F, - 0x7471, 0x7471, 0x272D, 0x7472, 0x7472, 0x272F, 0x7473, 0x7473, 0x272C, - 0x7474, 0x7474, 0x42A9, 0x7475, 0x7475, 0x272E, 0x7476, 0x7476, 0x42A6, - 0x7479, 0x7479, 0x297C, 0x747A, 0x747A, 0x3AD1, 0x747C, 0x747C, 0x297B, - 0x747D, 0x747D, 0x2978, 0x747E, 0x747E, 0x11A9, 0x747F, 0x747F, 0x2BCB, - 0x7480, 0x7480, 0x11AA, 0x7481, 0x7481, 0x2977, 0x7482, 0x7482, 0x42AC, - 0x7483, 0x7483, 0x11A8, 0x7485, 0x7485, 0x2979, 0x7486, 0x7486, 0x2976, - 0x7487, 0x7487, 0x2973, 0x7488, 0x7488, 0x297A, 0x7489, 0x748A, 0x2974, - 0x748B, 0x748B, 0x11A7, 0x748C, 0x748C, 0x3A21, 0x748D, 0x748D, 0x469D, - 0x7490, 0x7490, 0x2DA8, 0x7492, 0x7492, 0x2BCF, 0x7494, 0x7494, 0x2BCE, - 0x7495, 0x7495, 0x2BD0, 0x7497, 0x7497, 0x2DA5, 0x7498, 0x7498, 0x12FC, - 0x7499, 0x7499, 0x39F3, 0x749A, 0x749A, 0x2BCC, 0x749B, 0x749B, 0x3B0A, - 0x749C, 0x749C, 0x12FA, 0x749E, 0x749E, 0x12FE, 0x749F, 0x749F, 0x12FD, - 0x74A0, 0x74A0, 0x2BCD, 0x74A1, 0x74A1, 0x2BD1, 0x74A3, 0x74A3, 0x12FB, - 0x74A4, 0x74A4, 0x4170, 0x74A5, 0x74A5, 0x2DAC, 0x74A6, 0x74A6, 0x1412, - 0x74A7, 0x74A7, 0x14F4, 0x74A8, 0x74A8, 0x1413, 0x74A9, 0x74A9, 0x1410, - 0x74AA, 0x74AA, 0x2DA9, 0x74AB, 0x74AB, 0x2DA7, 0x74AD, 0x74AD, 0x2DAA, - 0x74AF, 0x74AF, 0x2DAD, 0x74B0, 0x74B0, 0x1411, 0x74B1, 0x74B1, 0x2DAB, - 0x74B2, 0x74B2, 0x2DA6, 0x74B4, 0x74B4, 0x3CA5, 0x74B5, 0x74B5, 0x2F58, - 0x74B6, 0x74B6, 0x2F5B, 0x74B7, 0x74B7, 0x30C2, 0x74B8, 0x74B8, 0x2F56, - 0x74BA, 0x74BA, 0x31F9, 0x74BB, 0x74BB, 0x2F5C, 0x74BD, 0x74BD, 0x1597, - 0x74BE, 0x74BE, 0x2F5A, 0x74BF, 0x74BF, 0x14F5, 0x74C0, 0x74C0, 0x2F57, - 0x74C1, 0x74C1, 0x2F59, 0x74C2, 0x74C2, 0x2F5D, 0x74C3, 0x74C3, 0x30C3, - 0x74C5, 0x74C5, 0x30C1, 0x74C8, 0x74C8, 0x42B5, 0x74CA, 0x74CA, 0x1598, - 0x74CB, 0x74CB, 0x30C0, 0x74CC, 0x74CC, 0x3ADE, 0x74CF, 0x74CF, 0x1621, - 0x74D0, 0x74D0, 0x3A9B, 0x74D3, 0x74D3, 0x46FA, 0x74D4, 0x74D4, 0x167E, - 0x74D5, 0x74D5, 0x3392, 0x74D6, 0x74D6, 0x167D, 0x74D7, 0x74D7, 0x3394, - 0x74D8, 0x74D8, 0x3391, 0x74D9, 0x74D9, 0x3393, 0x74DA, 0x74DA, 0x16FE, - 0x74DB, 0x74DB, 0x348D, 0x74DC, 0x74DC, 0x0358, 0x74DD, 0x74DD, 0x1A0D, - 0x74DE, 0x74DF, 0x1D4A, 0x74E0, 0x74E0, 0x0B26, 0x74E1, 0x74E1, 0x24A8, - 0x74E2, 0x74E2, 0x12FF, 0x74E3, 0x74E3, 0x1599, 0x74E4, 0x74E4, 0x16CB, - 0x74E5, 0x74E5, 0x348E, 0x74E6, 0x74E6, 0x0359, 0x74E7, 0x74E7, 0x3FFE, - 0x74E8, 0x74E8, 0x1A0E, 0x74E9, 0x74E9, 0x0120, 0x74EC, 0x74EC, 0x1B8E, - 0x74EE, 0x74EE, 0x1B8F, 0x74F0, 0x74F0, 0x3FE6, 0x74F1, 0x74F1, 0x3F9B, - 0x74F2, 0x74F2, 0x3FDF, 0x74F4, 0x74F5, 0x1D4C, 0x74F6, 0x74F7, 0x0B27, - 0x74F8, 0x74F8, 0x3FF4, 0x74FB, 0x74FB, 0x2220, 0x74FD, 0x74FD, 0x24AB, - 0x74FE, 0x74FE, 0x24AA, 0x74FF, 0x74FF, 0x24A9, 0x7500, 0x7500, 0x2732, - 0x7502, 0x7503, 0x2733, 0x7504, 0x7504, 0x1031, 0x7505, 0x7505, 0x3FDE, - 0x7507, 0x7507, 0x297E, 0x7508, 0x7508, 0x297D, 0x750B, 0x750B, 0x2BD2, - 0x750C, 0x750D, 0x1300, 0x750E, 0x750E, 0x42B7, 0x750F, 0x750F, 0x2DB1, - 0x7510, 0x7512, 0x2DAE, 0x7513, 0x7513, 0x2F5F, 0x7514, 0x7514, 0x2F5E, - 0x7515, 0x7515, 0x14F6, 0x7516, 0x7516, 0x30C4, 0x7517, 0x7517, 0x32E3, - 0x7518, 0x7518, 0x035A, 0x7519, 0x7519, 0x4583, 0x751A, 0x751A, 0x079F, - 0x751C, 0x751C, 0x0B29, 0x751D, 0x751D, 0x24AC, 0x751E, 0x751E, 0x42B8, - 0x751F, 0x751F, 0x035B, 0x7521, 0x7521, 0x1D4E, 0x7522, 0x7522, 0x0B2A, - 0x7525, 0x7526, 0x0CE3, 0x7528, 0x7529, 0x035C, 0x752A, 0x752A, 0x180F, - 0x752B, 0x752B, 0x04F1, 0x752C, 0x752C, 0x04F0, 0x752D, 0x752D, 0x07A0, - 0x752E, 0x752E, 0x1B90, 0x752F, 0x752F, 0x2221, 0x7530, 0x7533, 0x035E, - 0x7534, 0x7534, 0x3E87, 0x7535, 0x7535, 0x455A, 0x7537, 0x7538, 0x04F2, - 0x7539, 0x7539, 0x18D3, 0x753A, 0x753A, 0x18D2, 0x753B, 0x753B, 0x3DFB, - 0x753D, 0x753D, 0x0655, 0x753E, 0x753E, 0x1A11, 0x753F, 0x7540, 0x1A0F, - 0x7542, 0x7542, 0x43CD, 0x7546, 0x7546, 0x3F40, 0x7547, 0x7548, 0x1B91, - 0x754A, 0x754A, 0x42BF, 0x754B, 0x754B, 0x07A4, 0x754C, 0x754C, 0x07A2, - 0x754D, 0x754D, 0x42BE, 0x754E, 0x754E, 0x07A3, 0x754F, 0x754F, 0x07A1, - 0x7551, 0x7551, 0x3CFE, 0x7553, 0x7553, 0x3FEB, 0x7554, 0x7554, 0x0931, - 0x7555, 0x7555, 0x3AEA, 0x7559, 0x7559, 0x0935, 0x755A, 0x755A, 0x0934, - 0x755B, 0x755B, 0x1D4F, 0x755C, 0x755C, 0x0933, 0x755D, 0x755D, 0x0932, - 0x755F, 0x755F, 0x1D50, 0x7560, 0x7560, 0x3D71, 0x7562, 0x7562, 0x0B2D, - 0x7563, 0x7563, 0x1F9F, 0x7564, 0x7564, 0x1F9E, 0x7565, 0x7566, 0x0B2B, - 0x7567, 0x7567, 0x42C0, 0x756A, 0x756A, 0x0CE6, 0x756B, 0x756B, 0x0CE5, - 0x756C, 0x756C, 0x2223, 0x756D, 0x756D, 0x46FD, 0x756E, 0x756E, 0x42C1, - 0x756F, 0x756F, 0x2222, 0x7570, 0x7570, 0x0B2E, 0x7572, 0x7572, 0x46FE, - 0x7576, 0x7576, 0x0E85, 0x7577, 0x7577, 0x24AE, 0x7578, 0x7578, 0x0E86, - 0x7579, 0x7579, 0x24AD, 0x757A, 0x757A, 0x3F4F, 0x757D, 0x757D, 0x2735, - 0x757E, 0x757E, 0x297F, 0x757F, 0x757F, 0x11AB, 0x7580, 0x7580, 0x2BD3, - 0x7583, 0x7583, 0x3AE5, 0x7584, 0x7584, 0x2DB2, 0x7586, 0x7586, 0x159B, - 0x7587, 0x7587, 0x159A, 0x758A, 0x758A, 0x16CC, 0x758B, 0x758B, 0x0362, - 0x758C, 0x758C, 0x1A12, 0x758D, 0x758D, 0x46FF, 0x758E, 0x758E, 0x42C5, - 0x758F, 0x758F, 0x0B2F, 0x7590, 0x7590, 0x2736, 0x7591, 0x7591, 0x1032, - 0x7592, 0x7592, 0x022E, 0x7594, 0x7595, 0x18D4, 0x7598, 0x7598, 0x1A13, - 0x7599, 0x759A, 0x0657, 0x759D, 0x759D, 0x0656, 0x759E, 0x759E, 0x42C7, - 0x75A2, 0x75A3, 0x07A8, 0x75A4, 0x75A5, 0x07A6, 0x75A7, 0x75A7, 0x1B93, - 0x75AA, 0x75AA, 0x1B94, 0x75AB, 0x75AB, 0x07A5, 0x75B0, 0x75B0, 0x1D51, - 0x75B1, 0x75B1, 0x3EAD, 0x75B2, 0x75B3, 0x0939, 0x75B4, 0x75B4, 0x42C8, - 0x75B5, 0x75B5, 0x0B32, 0x75B6, 0x75B6, 0x1D57, 0x75B8, 0x75B8, 0x093F, - 0x75B9, 0x75B9, 0x093D, 0x75BA, 0x75BA, 0x1D58, 0x75BB, 0x75BB, 0x1D53, - 0x75BC, 0x75BC, 0x093C, 0x75BD, 0x75BD, 0x093B, 0x75BE, 0x75BE, 0x0936, - 0x75BF, 0x75BF, 0x1D56, 0x75C0, 0x75C0, 0x1D55, 0x75C1, 0x75C1, 0x1D52, - 0x75C2, 0x75C2, 0x093E, 0x75C3, 0x75C3, 0x3F93, 0x75C4, 0x75C4, 0x1D54, - 0x75C5, 0x75C5, 0x0937, 0x75C7, 0x75C7, 0x0938, 0x75C8, 0x75C8, 0x4701, - 0x75CA, 0x75CA, 0x0B33, 0x75CB, 0x75CC, 0x1FA3, 0x75CD, 0x75CD, 0x0B34, - 0x75CE, 0x75CE, 0x1FA0, 0x75CF, 0x75CF, 0x1FA2, 0x75D0, 0x75D0, 0x1FA6, - 0x75D1, 0x75D1, 0x1FA5, 0x75D2, 0x75D2, 0x1FA1, 0x75D4, 0x75D5, 0x0B30, - 0x75D7, 0x75D7, 0x222B, 0x75D8, 0x75D8, 0x0CEB, 0x75D9, 0x75D9, 0x0CEA, - 0x75DA, 0x75DA, 0x2225, 0x75DB, 0x75DB, 0x0CE8, 0x75DC, 0x75DC, 0x43CE, - 0x75DD, 0x75DD, 0x2228, 0x75DE, 0x75DE, 0x0CEC, 0x75DF, 0x75DF, 0x2229, - 0x75E0, 0x75E0, 0x0CED, 0x75E1, 0x75E1, 0x2226, 0x75E2, 0x75E2, 0x0CE7, - 0x75E3, 0x75E3, 0x0CE9, 0x75E4, 0x75E4, 0x222A, 0x75E6, 0x75E6, 0x2227, - 0x75E7, 0x75E7, 0x2224, 0x75ED, 0x75ED, 0x24BB, 0x75EF, 0x75EF, 0x24B0, - 0x75F0, 0x75F0, 0x0E88, 0x75F1, 0x75F1, 0x0E8B, 0x75F2, 0x75F2, 0x0E8A, - 0x75F3, 0x75F3, 0x0E8F, 0x75F4, 0x75F4, 0x0E8E, 0x75F5, 0x75F5, 0x24BC, - 0x75F6, 0x75F6, 0x24BA, 0x75F7, 0x75F7, 0x24B3, 0x75F8, 0x75F8, 0x24B7, - 0x75F9, 0x75F9, 0x24B6, 0x75FA, 0x75FA, 0x0E8C, 0x75FB, 0x75FB, 0x24B9, - 0x75FC, 0x75FC, 0x24B5, 0x75FD, 0x75FD, 0x24BD, 0x75FE, 0x75FE, 0x24B4, - 0x75FF, 0x75FF, 0x0E8D, 0x7600, 0x7600, 0x0E87, 0x7601, 0x7601, 0x0E89, - 0x7602, 0x7602, 0x42C9, 0x7603, 0x7603, 0x24B2, 0x7607, 0x7607, 0x3F8F, - 0x7608, 0x7608, 0x2738, 0x7609, 0x7609, 0x1036, 0x760A, 0x760A, 0x273C, - 0x760B, 0x760B, 0x1035, 0x760C, 0x760C, 0x2739, 0x760D, 0x760D, 0x1034, - 0x760F, 0x760F, 0x24B1, 0x7610, 0x7610, 0x24B8, 0x7611, 0x7611, 0x273B, - 0x7613, 0x7613, 0x1037, 0x7614, 0x7614, 0x273D, 0x7615, 0x7615, 0x273A, - 0x7616, 0x7616, 0x2737, 0x7619, 0x7619, 0x2982, 0x761A, 0x761A, 0x2986, - 0x761B, 0x761B, 0x2988, 0x761C, 0x761C, 0x2984, 0x761D, 0x761D, 0x2983, - 0x761E, 0x761E, 0x2981, 0x761F, 0x761F, 0x11AE, 0x7620, 0x7620, 0x11AC, - 0x7621, 0x7622, 0x11B1, 0x7623, 0x7623, 0x2985, 0x7624, 0x7624, 0x11AF, - 0x7625, 0x7625, 0x2980, 0x7626, 0x7626, 0x11B0, 0x7627, 0x7627, 0x1033, - 0x7628, 0x7628, 0x2987, 0x7629, 0x7629, 0x11AD, 0x762C, 0x762C, 0x42CA, - 0x762D, 0x762D, 0x2BD5, 0x762F, 0x762F, 0x2BD4, 0x7630, 0x7630, 0x2BDC, - 0x7631, 0x7631, 0x2BD6, 0x7632, 0x7632, 0x2BDB, 0x7633, 0x7633, 0x2BD8, - 0x7634, 0x7634, 0x1302, 0x7635, 0x7635, 0x2BDA, 0x7638, 0x7638, 0x1303, - 0x763A, 0x763A, 0x1304, 0x763B, 0x763B, 0x3E70, 0x763C, 0x763C, 0x2BD9, - 0x763D, 0x763D, 0x2BD7, 0x7640, 0x7640, 0x3EE6, 0x7642, 0x7642, 0x1415, - 0x7643, 0x7643, 0x2DB3, 0x7646, 0x7646, 0x1414, 0x7647, 0x7647, 0x2DB6, - 0x7648, 0x7649, 0x2DB4, 0x764C, 0x764C, 0x1416, 0x764D, 0x764D, 0x4702, - 0x764E, 0x764E, 0x3E72, 0x764F, 0x764F, 0x42CC, 0x7650, 0x7650, 0x2F63, - 0x7651, 0x7651, 0x42CB, 0x7652, 0x7652, 0x14F9, 0x7653, 0x7653, 0x2F64, - 0x7654, 0x7654, 0x3EF0, 0x7656, 0x7656, 0x14F7, 0x7657, 0x7657, 0x2F65, - 0x7658, 0x7658, 0x14F8, 0x7659, 0x7659, 0x2F62, 0x765A, 0x765A, 0x2F66, - 0x765C, 0x765C, 0x2F60, 0x765F, 0x765F, 0x159C, 0x7660, 0x7660, 0x30C5, - 0x7661, 0x7661, 0x159D, 0x7662, 0x7662, 0x1622, 0x7664, 0x7664, 0x2F61, - 0x7665, 0x7665, 0x1623, 0x7666, 0x7666, 0x3EAA, 0x7667, 0x7667, 0x3FA9, - 0x7669, 0x7669, 0x167F, 0x766A, 0x766A, 0x32E4, 0x766C, 0x766C, 0x16CE, - 0x766D, 0x766D, 0x3395, 0x766E, 0x766E, 0x16CD, 0x766F, 0x766F, 0x42CD, - 0x7670, 0x7670, 0x3428, 0x7671, 0x7672, 0x1723, 0x7673, 0x7673, 0x3AEB, - 0x7674, 0x7674, 0x4703, 0x7675, 0x7675, 0x3543, 0x7676, 0x7676, 0x022F, - 0x7678, 0x7678, 0x07AA, 0x7679, 0x7679, 0x1B95, 0x767A, 0x767A, 0x4705, - 0x767B, 0x767C, 0x0CEE, 0x767D, 0x767D, 0x0363, 0x767E, 0x767E, 0x03F5, - 0x767F, 0x767F, 0x1810, 0x7680, 0x7680, 0x43D3, 0x7681, 0x7681, 0x18D6, - 0x7682, 0x7682, 0x04F4, 0x7684, 0x7684, 0x0659, 0x7686, 0x7688, 0x07AB, - 0x7689, 0x7689, 0x1FA8, 0x768A, 0x768A, 0x1D59, 0x768B, 0x768B, 0x0940, - 0x768C, 0x768C, 0x43D4, 0x768E, 0x768E, 0x0B35, 0x768F, 0x768F, 0x1FA7, - 0x7690, 0x7690, 0x42D0, 0x7692, 0x7692, 0x222D, 0x7693, 0x7693, 0x0CF1, - 0x7695, 0x7695, 0x222C, 0x7696, 0x7696, 0x0CF0, 0x7699, 0x7699, 0x24BE, - 0x769A, 0x769A, 0x11B3, 0x769B, 0x769B, 0x298C, 0x769C, 0x769E, 0x2989, - 0x76A1, 0x76A1, 0x42D5, 0x76A4, 0x76A4, 0x2DB7, 0x76A5, 0x76A5, 0x42D6, - 0x76A6, 0x76A6, 0x2F67, 0x76AA, 0x76AA, 0x31FB, 0x76AB, 0x76AB, 0x31FA, - 0x76AD, 0x76AD, 0x3396, 0x76AE, 0x76AE, 0x0364, 0x76AF, 0x76AF, 0x1A14, - 0x76B0, 0x76B0, 0x0941, 0x76B4, 0x76B4, 0x0CF2, 0x76B5, 0x76B5, 0x24BF, - 0x76B7, 0x76B7, 0x42D7, 0x76B8, 0x76B8, 0x273E, 0x76BA, 0x76BA, 0x11B4, - 0x76BB, 0x76BB, 0x2BDD, 0x76BD, 0x76BD, 0x2F68, 0x76BE, 0x76BE, 0x31FC, - 0x76BF, 0x76BF, 0x0365, 0x76C2, 0x76C2, 0x065A, 0x76C3, 0x76C3, 0x07B0, - 0x76C4, 0x76C4, 0x1B96, 0x76C5, 0x76C5, 0x07B1, 0x76C6, 0x76C6, 0x07AF, - 0x76C8, 0x76C8, 0x07AE, 0x76C9, 0x76C9, 0x1D5A, 0x76CA, 0x76CA, 0x0942, - 0x76CC, 0x76CC, 0x42D8, 0x76CD, 0x76CE, 0x0943, 0x76D2, 0x76D2, 0x0B37, - 0x76D3, 0x76D3, 0x1FA9, 0x76D4, 0x76D4, 0x0B36, 0x76D6, 0x76D6, 0x3F55, - 0x76DA, 0x76DA, 0x222E, 0x76DB, 0x76DB, 0x0B38, 0x76DC, 0x76DC, 0x0CF3, - 0x76DD, 0x76DD, 0x24C0, 0x76DE, 0x76DF, 0x0E90, 0x76E1, 0x76E1, 0x1038, - 0x76E3, 0x76E3, 0x1039, 0x76E4, 0x76E4, 0x11B5, 0x76E5, 0x76E5, 0x1306, - 0x76E6, 0x76E6, 0x2BDE, 0x76E7, 0x76E7, 0x1305, 0x76E9, 0x76E9, 0x2DB8, - 0x76EA, 0x76EA, 0x1417, 0x76EC, 0x76EC, 0x2F69, 0x76ED, 0x76ED, 0x31FD, - 0x76EE, 0x76EE, 0x0366, 0x76EF, 0x76EF, 0x04F5, 0x76F0, 0x76F0, 0x1A17, - 0x76F1, 0x76F1, 0x1A16, 0x76F2, 0x76F2, 0x065B, 0x76F3, 0x76F3, 0x1A15, - 0x76F4, 0x76F4, 0x065C, 0x76F5, 0x76F5, 0x1A18, 0x76F7, 0x76F7, 0x1B9C, - 0x76F8, 0x76F8, 0x07B4, 0x76F9, 0x76F9, 0x07B3, 0x76FA, 0x76FA, 0x1B9E, - 0x76FB, 0x76FB, 0x1B9D, 0x76FC, 0x76FC, 0x07B8, 0x76FE, 0x76FE, 0x07B7, - 0x7701, 0x7701, 0x07B2, 0x7703, 0x7705, 0x1B98, 0x7707, 0x7707, 0x07B9, - 0x7708, 0x7708, 0x1B97, 0x7709, 0x7709, 0x07B5, 0x770A, 0x770A, 0x1B9B, - 0x770B, 0x770B, 0x07B6, 0x770C, 0x770C, 0x3D62, 0x770E, 0x770F, 0x3B02, - 0x7710, 0x7710, 0x1D5D, 0x7711, 0x7711, 0x1D61, 0x7712, 0x7712, 0x1D5F, - 0x7713, 0x7713, 0x1D5E, 0x7715, 0x7715, 0x1D62, 0x7719, 0x771A, 0x1D63, - 0x771B, 0x771B, 0x1D5C, 0x771D, 0x771D, 0x1D5B, 0x771E, 0x771E, 0x42DE, - 0x771F, 0x7720, 0x0946, 0x7722, 0x7722, 0x1D65, 0x7723, 0x7723, 0x1D60, - 0x7724, 0x7724, 0x3FE8, 0x7725, 0x7725, 0x1FB2, 0x7726, 0x7726, 0x42DF, - 0x7727, 0x7727, 0x1D66, 0x7728, 0x7728, 0x0948, 0x7729, 0x7729, 0x0945, - 0x772B, 0x772B, 0x3FF3, 0x772D, 0x772D, 0x1FAC, 0x772F, 0x772F, 0x1FAB, - 0x7731, 0x7732, 0x1FAD, 0x7733, 0x7733, 0x1FB0, 0x7734, 0x7734, 0x1FAF, - 0x7735, 0x7735, 0x1FB4, 0x7736, 0x7736, 0x0B3C, 0x7737, 0x7737, 0x0B39, - 0x7738, 0x7738, 0x0B3D, 0x7739, 0x7739, 0x1FAA, 0x773A, 0x773A, 0x0B3E, - 0x773B, 0x773B, 0x1FB3, 0x773C, 0x773C, 0x0B3B, 0x773D, 0x773D, 0x1FB1, - 0x773E, 0x773E, 0x0B3A, 0x7740, 0x7740, 0x42E0, 0x7743, 0x7743, 0x470A, - 0x7744, 0x7744, 0x2231, 0x7745, 0x7745, 0x2233, 0x7746, 0x7747, 0x222F, - 0x774A, 0x774A, 0x2234, 0x774B, 0x774C, 0x2236, 0x774D, 0x774D, 0x2232, - 0x774E, 0x774E, 0x2235, 0x774F, 0x774F, 0x0CF4, 0x7752, 0x7752, 0x24C4, - 0x7754, 0x7754, 0x24C9, 0x7755, 0x7755, 0x24C1, 0x7756, 0x7756, 0x24C5, - 0x7758, 0x7758, 0x42E3, 0x7759, 0x7759, 0x24CA, 0x775A, 0x775A, 0x24C6, - 0x775B, 0x775B, 0x0E92, 0x775C, 0x775C, 0x0E9A, 0x775E, 0x775E, 0x0E95, - 0x775F, 0x7760, 0x24C2, 0x7761, 0x7761, 0x103D, 0x7762, 0x7762, 0x0E9D, - 0x7763, 0x7763, 0x0E96, 0x7765, 0x7765, 0x0E9B, 0x7766, 0x7766, 0x0E94, - 0x7767, 0x7767, 0x24C8, 0x7768, 0x7768, 0x0E9C, 0x7769, 0x7769, 0x24C7, - 0x776A, 0x776A, 0x0E98, 0x776B, 0x776B, 0x0E93, 0x776C, 0x776C, 0x0E99, - 0x776D, 0x776D, 0x24CB, 0x776E, 0x776E, 0x2743, 0x776F, 0x776F, 0x2745, - 0x7772, 0x7772, 0x396B, 0x7777, 0x7777, 0x46A9, 0x7778, 0x7778, 0x3B00, - 0x7779, 0x7779, 0x0E97, 0x777A, 0x777A, 0x4317, 0x777B, 0x777B, 0x3B04, - 0x777C, 0x777C, 0x2740, 0x777D, 0x777D, 0x103B, 0x777E, 0x777E, 0x2746, - 0x777F, 0x777F, 0x103C, 0x7780, 0x7780, 0x2744, 0x7781, 0x7781, 0x273F, - 0x7782, 0x7782, 0x2742, 0x7783, 0x7783, 0x2747, 0x7784, 0x7784, 0x103A, - 0x7785, 0x7785, 0x2741, 0x7787, 0x7787, 0x11B7, 0x7788, 0x7788, 0x2990, - 0x7789, 0x7789, 0x298F, 0x778B, 0x778B, 0x11BA, 0x778C, 0x778C, 0x11B8, - 0x778D, 0x778D, 0x298D, 0x778E, 0x778E, 0x11B6, 0x778F, 0x778F, 0x298E, - 0x7791, 0x7791, 0x11B9, 0x7793, 0x7793, 0x382D, 0x7795, 0x7795, 0x2BE6, - 0x7797, 0x7797, 0x2BE8, 0x7798, 0x7798, 0x470E, 0x7799, 0x7799, 0x2BE7, - 0x779A, 0x779A, 0x2BDF, 0x779B, 0x779B, 0x2BE3, 0x779C, 0x779C, 0x2BE2, - 0x779D, 0x779D, 0x2BE0, 0x779E, 0x779F, 0x1308, 0x77A0, 0x77A0, 0x1307, - 0x77A1, 0x77A1, 0x2BE1, 0x77A2, 0x77A3, 0x2BE4, 0x77A5, 0x77A5, 0x130A, - 0x77A7, 0x77A7, 0x141C, 0x77A8, 0x77A8, 0x2DC0, 0x77AA, 0x77AA, 0x1419, - 0x77AB, 0x77AB, 0x2DBA, 0x77AC, 0x77AC, 0x141B, 0x77AD, 0x77AD, 0x141D, - 0x77AF, 0x77AF, 0x42E5, 0x77B0, 0x77B0, 0x141A, 0x77B1, 0x77B1, 0x2DBF, - 0x77B2, 0x77B2, 0x2DBB, 0x77B3, 0x77B3, 0x1418, 0x77B4, 0x77B4, 0x2DBE, - 0x77B5, 0x77B5, 0x2DB9, 0x77B6, 0x77B6, 0x2DBD, 0x77B7, 0x77B7, 0x2DBC, - 0x77B9, 0x77B9, 0x3E73, 0x77BA, 0x77BA, 0x2F6B, 0x77BB, 0x77BC, 0x14FC, - 0x77BD, 0x77BD, 0x14FA, 0x77BE, 0x77BE, 0x4711, 0x77BF, 0x77BF, 0x14FB, - 0x77C2, 0x77C2, 0x2F6A, 0x77C3, 0x77C3, 0x3BB1, 0x77C4, 0x77C4, 0x30C8, - 0x77C5, 0x77C5, 0x41C1, 0x77C7, 0x77C7, 0x159E, 0x77C9, 0x77CA, 0x30C6, - 0x77CB, 0x77CB, 0x4712, 0x77CC, 0x77CC, 0x31FE, 0x77CD, 0x77CD, 0x3201, - 0x77CE, 0x77CF, 0x31FF, 0x77D0, 0x77D0, 0x32E5, 0x77D3, 0x77D3, 0x1680, - 0x77D4, 0x77D4, 0x3429, 0x77D5, 0x77D5, 0x348F, 0x77D7, 0x77D7, 0x1725, - 0x77D8, 0x77D9, 0x34D3, 0x77DA, 0x77DA, 0x1753, 0x77DB, 0x77DB, 0x0367, - 0x77DC, 0x77DC, 0x07BA, 0x77DE, 0x77DE, 0x2238, 0x77E0, 0x77E0, 0x24CC, - 0x77E2, 0x77E2, 0x0368, 0x77E3, 0x77E3, 0x04F6, 0x77E5, 0x77E5, 0x065D, - 0x77E6, 0x77E6, 0x4081, 0x77E7, 0x77E8, 0x1B9F, 0x77E9, 0x77E9, 0x0949, - 0x77EC, 0x77EC, 0x2239, 0x77ED, 0x77ED, 0x0CF5, 0x77EE, 0x77EE, 0x0E9E, - 0x77EF, 0x77EF, 0x141E, 0x77F0, 0x77F0, 0x2DC1, 0x77F1, 0x77F1, 0x30C9, - 0x77F2, 0x77F2, 0x3202, 0x77F3, 0x77F3, 0x0369, 0x77F4, 0x77F4, 0x42E9, - 0x77F7, 0x77F7, 0x1A1E, 0x77F8, 0x77F8, 0x1A19, 0x77F9, 0x77F9, 0x1A1B, - 0x77FA, 0x77FA, 0x1A1D, 0x77FB, 0x77FB, 0x1A1C, 0x77FC, 0x77FC, 0x1A1A, - 0x77FD, 0x77FD, 0x065E, 0x77FE, 0x77FE, 0x3FD5, 0x7802, 0x7802, 0x07BB, - 0x7803, 0x7803, 0x1BA9, 0x7805, 0x7805, 0x1BA4, 0x7806, 0x7806, 0x1BA1, - 0x7808, 0x7808, 0x3E46, 0x7809, 0x7809, 0x1BA8, 0x780C, 0x780D, 0x07BD, - 0x780E, 0x780E, 0x1BA7, 0x780F, 0x780F, 0x1BA6, 0x7810, 0x7810, 0x1BA5, - 0x7811, 0x7812, 0x1BA2, 0x7813, 0x7813, 0x1BAA, 0x7814, 0x7814, 0x07BC, - 0x7818, 0x7818, 0x4713, 0x781C, 0x781C, 0x4714, 0x781D, 0x781D, 0x094D, - 0x781E, 0x781E, 0x3B13, 0x781F, 0x781F, 0x0953, 0x7820, 0x7820, 0x0952, - 0x7821, 0x7821, 0x1D6F, 0x7822, 0x7822, 0x1D69, 0x7823, 0x7823, 0x1D67, - 0x7825, 0x7825, 0x0950, 0x7826, 0x7826, 0x1FBB, 0x7827, 0x7827, 0x094B, - 0x7828, 0x7828, 0x1D6C, 0x7829, 0x7829, 0x1D70, 0x782A, 0x782A, 0x1D72, - 0x782B, 0x782B, 0x1D6E, 0x782C, 0x782C, 0x1D68, 0x782D, 0x782D, 0x0951, - 0x782E, 0x782E, 0x1D6D, 0x782F, 0x782F, 0x1D6B, 0x7830, 0x7830, 0x094A, - 0x7831, 0x7831, 0x1D73, 0x7832, 0x7832, 0x0954, 0x7833, 0x7833, 0x1D71, - 0x7834, 0x7834, 0x094E, 0x7835, 0x7835, 0x1D6A, 0x7837, 0x7837, 0x094F, - 0x7838, 0x7838, 0x094C, 0x7839, 0x7839, 0x43D6, 0x783C, 0x783C, 0x401A, - 0x783D, 0x783D, 0x3C6A, 0x7842, 0x7842, 0x3AC4, 0x7843, 0x7843, 0x0B40, - 0x7844, 0x7844, 0x3C2B, 0x7845, 0x7845, 0x1FBC, 0x7847, 0x7847, 0x4715, - 0x7848, 0x7848, 0x1FB5, 0x7849, 0x7849, 0x1FB7, 0x784A, 0x784A, 0x1FB9, - 0x784B, 0x784B, 0x3C6D, 0x784C, 0x784C, 0x1FBA, 0x784D, 0x784D, 0x1FB8, - 0x784E, 0x784E, 0x0B41, 0x7850, 0x7850, 0x1FBD, 0x7851, 0x7851, 0x4716, - 0x7852, 0x7852, 0x1FB6, 0x7853, 0x7853, 0x3F95, 0x7854, 0x7854, 0x3C6B, - 0x785C, 0x785C, 0x223D, 0x785D, 0x785D, 0x0CF6, 0x785E, 0x785E, 0x2245, - 0x7860, 0x7860, 0x223A, 0x7862, 0x7862, 0x2246, 0x7864, 0x7865, 0x223B, - 0x7866, 0x7866, 0x4717, 0x7868, 0x7868, 0x2244, 0x7869, 0x7869, 0x2243, - 0x786A, 0x786A, 0x2240, 0x786B, 0x786B, 0x0B3F, 0x786C, 0x786C, 0x0CF7, - 0x786D, 0x786D, 0x223E, 0x786E, 0x786E, 0x2241, 0x786F, 0x786F, 0x0CF8, - 0x7870, 0x7870, 0x2242, 0x7871, 0x7871, 0x223F, 0x7879, 0x7879, 0x24D7, - 0x787A, 0x787A, 0x3EE9, 0x787B, 0x787B, 0x24DB, 0x787C, 0x787C, 0x0EA5, - 0x787E, 0x787E, 0x274D, 0x787F, 0x787F, 0x0EA8, 0x7880, 0x7880, 0x24D9, - 0x7881, 0x7881, 0x36E8, 0x7883, 0x7883, 0x24D6, 0x7884, 0x7884, 0x24D1, - 0x7885, 0x7886, 0x24D3, 0x7887, 0x7887, 0x24CD, 0x7888, 0x7888, 0x3B15, - 0x7889, 0x7889, 0x0EA4, 0x788C, 0x788C, 0x0EA3, 0x788D, 0x788D, 0x3B14, - 0x788E, 0x788E, 0x0E9F, 0x788F, 0x788F, 0x24D0, 0x7891, 0x7891, 0x0EA6, - 0x7893, 0x7893, 0x0EA7, 0x7894, 0x7894, 0x24CF, 0x7895, 0x7895, 0x24D2, - 0x7896, 0x7896, 0x24DA, 0x7897, 0x7898, 0x0EA1, 0x7899, 0x7899, 0x24D8, - 0x789A, 0x789A, 0x24CE, 0x789E, 0x789E, 0x274F, 0x789F, 0x789F, 0x103F, - 0x78A0, 0x78A0, 0x2751, 0x78A1, 0x78A1, 0x24D5, 0x78A2, 0x78A2, 0x2753, - 0x78A3, 0x78A3, 0x1043, 0x78A4, 0x78A4, 0x2754, 0x78A5, 0x78A5, 0x2750, - 0x78A7, 0x78A7, 0x1040, 0x78A8, 0x78A8, 0x274C, 0x78A9, 0x78A9, 0x1042, - 0x78AA, 0x78AA, 0x2749, 0x78AB, 0x78AB, 0x274E, 0x78AC, 0x78AC, 0x2752, - 0x78AD, 0x78AD, 0x274B, 0x78AF, 0x78AF, 0x42EC, 0x78B0, 0x78B0, 0x0EA0, - 0x78B1, 0x78B1, 0x42F4, 0x78B2, 0x78B2, 0x2748, 0x78B3, 0x78B3, 0x1041, - 0x78B4, 0x78B4, 0x274A, 0x78B6, 0x78B6, 0x3C6C, 0x78B8, 0x78B8, 0x4571, - 0x78B9, 0x78B9, 0x3C63, 0x78BA, 0x78BA, 0x11BD, 0x78BB, 0x78BB, 0x2992, - 0x78BC, 0x78BC, 0x11C1, 0x78BE, 0x78BE, 0x11BF, 0x78C1, 0x78C1, 0x103E, - 0x78C3, 0x78C4, 0x2999, 0x78C5, 0x78C5, 0x11BC, 0x78C7, 0x78C7, 0x42ED, - 0x78C8, 0x78C8, 0x2998, 0x78C9, 0x78C9, 0x299B, 0x78CA, 0x78CA, 0x11BE, - 0x78CB, 0x78CB, 0x11BB, 0x78CC, 0x78CC, 0x2994, 0x78CD, 0x78CD, 0x2991, - 0x78CE, 0x78CE, 0x2996, 0x78CF, 0x78CF, 0x2993, 0x78D0, 0x78D0, 0x11C2, - 0x78D1, 0x78D1, 0x2995, 0x78D2, 0x78D2, 0x3B16, 0x78D3, 0x78D3, 0x42EE, - 0x78D4, 0x78D4, 0x2997, 0x78D5, 0x78D5, 0x11C0, 0x78D7, 0x78D7, 0x42F2, - 0x78D8, 0x78D8, 0x3F8C, 0x78DA, 0x78DA, 0x130C, 0x78DB, 0x78DB, 0x2BEF, - 0x78DD, 0x78DD, 0x2BE9, 0x78DE, 0x78DE, 0x2BED, 0x78DF, 0x78E0, 0x2BF3, - 0x78E1, 0x78E2, 0x2BF0, 0x78E3, 0x78E3, 0x2BEE, 0x78E5, 0x78E5, 0x2BEB, - 0x78E7, 0x78E7, 0x130E, 0x78E8, 0x78E8, 0x130B, 0x78E9, 0x78E9, 0x2BEA, - 0x78EA, 0x78EA, 0x2BEC, 0x78EC, 0x78EC, 0x130D, 0x78ED, 0x78ED, 0x2BF2, - 0x78EE, 0x78EE, 0x3A81, 0x78EF, 0x78EF, 0x1422, 0x78F0, 0x78F0, 0x3B3A, - 0x78F1, 0x78F1, 0x40BE, 0x78F2, 0x78F2, 0x2DC8, 0x78F3, 0x78F3, 0x2DC2, - 0x78F4, 0x78F4, 0x1421, 0x78F5, 0x78F5, 0x38B3, 0x78F7, 0x78F7, 0x141F, - 0x78F9, 0x78F9, 0x2DCA, 0x78FA, 0x78FA, 0x1420, 0x78FB, 0x78FC, 0x2DC5, - 0x78FD, 0x78FD, 0x2DC3, 0x78FE, 0x78FE, 0x2DCB, 0x78FF, 0x78FF, 0x2DC7, - 0x7901, 0x7901, 0x1423, 0x7902, 0x7902, 0x2DC4, 0x7904, 0x7904, 0x2DCC, - 0x7905, 0x7905, 0x2DC9, 0x7906, 0x7906, 0x3FCF, 0x7909, 0x7909, 0x2F6F, - 0x790C, 0x790C, 0x2F6C, 0x790E, 0x790E, 0x14FE, 0x7910, 0x7910, 0x2F70, - 0x7911, 0x7911, 0x2F72, 0x7912, 0x7912, 0x2F71, 0x7913, 0x7914, 0x2F6D, - 0x7917, 0x7917, 0x30CE, 0x7919, 0x7919, 0x159F, 0x791B, 0x791B, 0x30CB, - 0x791C, 0x791C, 0x30CD, 0x791D, 0x791D, 0x30CA, 0x791E, 0x791E, 0x30CF, - 0x7921, 0x7921, 0x30CC, 0x7923, 0x7923, 0x3204, 0x7924, 0x7924, 0x3207, - 0x7925, 0x7925, 0x3203, 0x7926, 0x7926, 0x1624, 0x7927, 0x7928, 0x3205, - 0x7929, 0x7929, 0x3208, 0x792A, 0x792A, 0x1625, 0x792B, 0x792B, 0x1627, - 0x792C, 0x792C, 0x1626, 0x792D, 0x792D, 0x32E6, 0x792E, 0x792E, 0x42F0, - 0x792F, 0x792F, 0x32E8, 0x7931, 0x7931, 0x32E7, 0x7932, 0x7932, 0x471B, - 0x7933, 0x7933, 0x471A, 0x7934, 0x7934, 0x42F3, 0x7935, 0x7935, 0x3397, - 0x7936, 0x7936, 0x3783, 0x7938, 0x7938, 0x3490, 0x7939, 0x7939, 0x34D5, - 0x793A, 0x793A, 0x036A, 0x793B, 0x793B, 0x44F7, 0x793C, 0x793C, 0x4300, - 0x793D, 0x793D, 0x18D7, 0x793E, 0x793E, 0x065F, 0x793F, 0x793F, 0x1A20, - 0x7940, 0x7941, 0x0660, 0x7942, 0x7942, 0x1A1F, 0x7944, 0x7944, 0x1BAF, - 0x7945, 0x7945, 0x1BAE, 0x7946, 0x7946, 0x07BF, 0x7947, 0x7947, 0x07C2, - 0x7948, 0x7948, 0x07C1, 0x7949, 0x7949, 0x07C0, 0x794A, 0x794A, 0x1BAB, - 0x794B, 0x794B, 0x1BAD, 0x794C, 0x794C, 0x1BAC, 0x794F, 0x794F, 0x1D76, - 0x7950, 0x7950, 0x0956, 0x7951, 0x7951, 0x1D7A, 0x7952, 0x7952, 0x1D79, - 0x7953, 0x7953, 0x1D78, 0x7954, 0x7954, 0x1D74, 0x7955, 0x7955, 0x0955, - 0x7956, 0x7956, 0x0959, 0x7957, 0x7957, 0x095C, 0x7958, 0x7958, 0x37E5, - 0x7959, 0x7959, 0x3B18, 0x795A, 0x795A, 0x095D, 0x795B, 0x795B, 0x1D75, - 0x795C, 0x795C, 0x1D77, 0x795D, 0x795D, 0x095B, 0x795E, 0x795E, 0x095A, - 0x795F, 0x795F, 0x0958, 0x7960, 0x7960, 0x0957, 0x7961, 0x7961, 0x1FC4, - 0x7962, 0x7962, 0x3E7D, 0x7963, 0x7963, 0x1FC2, 0x7964, 0x7964, 0x1FBE, - 0x7965, 0x7965, 0x0B42, 0x7967, 0x7967, 0x1FBF, 0x7968, 0x7968, 0x0B43, - 0x7969, 0x796A, 0x1FC0, 0x796B, 0x796B, 0x1FC3, 0x796D, 0x796D, 0x0B44, - 0x7970, 0x7970, 0x224A, 0x7971, 0x7971, 0x4168, 0x7972, 0x7972, 0x2249, - 0x7973, 0x7973, 0x2248, 0x7974, 0x7974, 0x2247, 0x7979, 0x7979, 0x24DF, - 0x797A, 0x797A, 0x0EA9, 0x797C, 0x797C, 0x24DC, 0x797D, 0x797D, 0x24DE, - 0x797E, 0x797E, 0x3E26, 0x797F, 0x797F, 0x0EAA, 0x7980, 0x7980, 0x42FC, - 0x7981, 0x7981, 0x0EAB, 0x7982, 0x7982, 0x24DD, 0x7983, 0x7983, 0x3DF6, - 0x7986, 0x7986, 0x42F9, 0x7987, 0x7987, 0x4588, 0x7988, 0x7988, 0x275D, - 0x798A, 0x798B, 0x2756, 0x798D, 0x798D, 0x1046, 0x798E, 0x798F, 0x1044, - 0x7990, 0x7990, 0x275F, 0x7991, 0x7991, 0x471D, 0x7992, 0x7992, 0x275E, - 0x7993, 0x7993, 0x275B, 0x7994, 0x7994, 0x275A, 0x7995, 0x7995, 0x2759, - 0x7996, 0x7996, 0x2758, 0x7997, 0x7997, 0x275C, 0x7998, 0x7998, 0x2755, - 0x7999, 0x7999, 0x43FC, 0x799A, 0x799A, 0x299C, 0x799B, 0x799B, 0x29A1, - 0x799C, 0x799C, 0x299F, 0x799D, 0x799D, 0x42FE, 0x799F, 0x799F, 0x395E, - 0x79A0, 0x79A0, 0x299E, 0x79A1, 0x79A1, 0x299D, 0x79A2, 0x79A2, 0x29A0, - 0x79A4, 0x79A4, 0x2BF5, 0x79A5, 0x79A5, 0x3B1E, 0x79A6, 0x79A6, 0x130F, - 0x79A7, 0x79A7, 0x1424, 0x79A8, 0x79A8, 0x2DCE, 0x79A9, 0x79A9, 0x4301, - 0x79AA, 0x79AA, 0x1425, 0x79AB, 0x79AB, 0x2DCD, 0x79AC, 0x79AC, 0x2F74, - 0x79AD, 0x79AD, 0x2F73, 0x79AE, 0x79AE, 0x14FF, 0x79B0, 0x79B0, 0x30D0, - 0x79B1, 0x79B1, 0x15A0, 0x79B2, 0x79B2, 0x3209, 0x79B3, 0x79B3, 0x16CF, - 0x79B4, 0x79B4, 0x3398, 0x79B6, 0x79B6, 0x3492, 0x79B7, 0x79B7, 0x3491, - 0x79B8, 0x79B8, 0x17B2, 0x79B9, 0x79BA, 0x07C3, 0x79BB, 0x79BB, 0x1FC5, - 0x79BD, 0x79BD, 0x0EAD, 0x79BE, 0x79BE, 0x036B, 0x79BF, 0x79BF, 0x04F9, - 0x79C0, 0x79C0, 0x04F8, 0x79C1, 0x79C1, 0x04F7, 0x79C4, 0x79C4, 0x3CCD, - 0x79C5, 0x79C5, 0x1A21, 0x79C6, 0x79C6, 0x4305, 0x79C8, 0x79C8, 0x0663, - 0x79C9, 0x79C9, 0x0662, 0x79CB, 0x79CB, 0x07C7, 0x79CC, 0x79CC, 0x4233, - 0x79CD, 0x79CD, 0x1BB1, 0x79CE, 0x79CE, 0x1BB4, 0x79CF, 0x79CF, 0x1BB2, - 0x79D1, 0x79D2, 0x07C5, 0x79D4, 0x79D4, 0x4307, 0x79D5, 0x79D5, 0x1BB0, - 0x79D6, 0x79D6, 0x1BB3, 0x79D8, 0x79D8, 0x0964, 0x79DC, 0x79DC, 0x1D81, - 0x79DD, 0x79DD, 0x1D83, 0x79DE, 0x79DE, 0x1D82, 0x79DF, 0x79DF, 0x0961, - 0x79E0, 0x79E0, 0x1D7D, 0x79E2, 0x79E2, 0x3C5A, 0x79E3, 0x79E3, 0x095F, - 0x79E4, 0x79E4, 0x095E, 0x79E6, 0x79E6, 0x0962, 0x79E7, 0x79E7, 0x0960, - 0x79E9, 0x79E9, 0x0963, 0x79EA, 0x79EA, 0x1D80, 0x79EB, 0x79EC, 0x1D7B, - 0x79ED, 0x79ED, 0x1D7F, 0x79EE, 0x79EE, 0x1D7E, 0x79F1, 0x79F1, 0x3B27, - 0x79F4, 0x79F4, 0x3B22, 0x79F6, 0x79F7, 0x1FC8, 0x79F8, 0x79F8, 0x1FC7, - 0x79FA, 0x79FA, 0x1FC6, 0x79FB, 0x79FB, 0x0B45, 0x7A00, 0x7A00, 0x0CFD, - 0x7A02, 0x7A02, 0x224B, 0x7A03, 0x7A03, 0x224D, 0x7A04, 0x7A04, 0x224F, - 0x7A05, 0x7A05, 0x0CFC, 0x7A06, 0x7A06, 0x471E, 0x7A08, 0x7A08, 0x0CFA, - 0x7A0A, 0x7A0A, 0x224C, 0x7A0B, 0x7A0B, 0x0CFB, 0x7A0C, 0x7A0C, 0x224E, - 0x7A0D, 0x7A0D, 0x0CF9, 0x7A10, 0x7A10, 0x24E9, 0x7A11, 0x7A11, 0x24E0, - 0x7A12, 0x7A12, 0x24E3, 0x7A13, 0x7A13, 0x24E7, 0x7A14, 0x7A14, 0x0EB1, - 0x7A15, 0x7A15, 0x24E5, 0x7A17, 0x7A17, 0x24E4, 0x7A18, 0x7A19, 0x24E1, - 0x7A1A, 0x7A1A, 0x0EAF, 0x7A1B, 0x7A1B, 0x24E8, 0x7A1C, 0x7A1C, 0x0EAE, - 0x7A1E, 0x7A1E, 0x0EB3, 0x7A1F, 0x7A1F, 0x0EB2, 0x7A20, 0x7A20, 0x0EB0, - 0x7A22, 0x7A22, 0x24E6, 0x7A26, 0x7A26, 0x2765, 0x7A28, 0x7A28, 0x2764, - 0x7A2B, 0x7A2B, 0x2760, 0x7A2D, 0x7A2D, 0x3FDA, 0x7A2E, 0x7A2E, 0x1047, - 0x7A2F, 0x7A2F, 0x2763, 0x7A30, 0x7A30, 0x2762, 0x7A31, 0x7A31, 0x1048, - 0x7A37, 0x7A37, 0x11C7, 0x7A39, 0x7A39, 0x29A3, 0x7A3A, 0x7A3A, 0x3B21, - 0x7A3B, 0x7A3B, 0x11C8, 0x7A3C, 0x7A3C, 0x11C4, 0x7A3D, 0x7A3D, 0x11C6, - 0x7A3E, 0x7A3E, 0x3F8B, 0x7A3F, 0x7A3F, 0x11C3, 0x7A40, 0x7A40, 0x11C5, - 0x7A43, 0x7A43, 0x396C, 0x7A44, 0x7A44, 0x2BF6, 0x7A45, 0x7A45, 0x3DF1, - 0x7A46, 0x7A46, 0x1312, 0x7A47, 0x7A47, 0x2BF8, 0x7A48, 0x7A48, 0x2BF7, - 0x7A49, 0x7A49, 0x3733, 0x7A4A, 0x7A4A, 0x2761, 0x7A4B, 0x7A4B, 0x1314, - 0x7A4C, 0x7A4C, 0x1313, 0x7A4D, 0x7A4E, 0x1310, 0x7A54, 0x7A54, 0x2DD3, - 0x7A56, 0x7A56, 0x2DD1, 0x7A57, 0x7A57, 0x1426, 0x7A58, 0x7A58, 0x2DD2, - 0x7A5A, 0x7A5A, 0x2DD4, 0x7A5B, 0x7A5B, 0x2DD0, 0x7A5C, 0x7A5C, 0x2DCF, - 0x7A5F, 0x7A5F, 0x2F75, 0x7A60, 0x7A60, 0x1502, 0x7A61, 0x7A62, 0x1500, - 0x7A65, 0x7A65, 0x3736, 0x7A67, 0x7A68, 0x30D1, 0x7A69, 0x7A69, 0x15A2, - 0x7A6B, 0x7A6B, 0x15A1, 0x7A6C, 0x7A6D, 0x320B, 0x7A6E, 0x7A6E, 0x320A, - 0x7A70, 0x7A71, 0x3399, 0x7A74, 0x7A74, 0x036C, 0x7A75, 0x7A75, 0x1811, - 0x7A76, 0x7A76, 0x04FA, 0x7A78, 0x7A78, 0x1A22, 0x7A79, 0x7A79, 0x0665, - 0x7A7A, 0x7A7A, 0x0664, 0x7A7B, 0x7A7B, 0x1A23, 0x7A7D, 0x7A7D, 0x3737, - 0x7A7E, 0x7A7E, 0x1BB6, 0x7A7F, 0x7A7F, 0x07C8, 0x7A80, 0x7A80, 0x1BB5, - 0x7A81, 0x7A81, 0x07C9, 0x7A83, 0x7A83, 0x3D7D, 0x7A84, 0x7A84, 0x0965, - 0x7A85, 0x7A85, 0x1D86, 0x7A86, 0x7A86, 0x1D84, 0x7A87, 0x7A87, 0x1D8A, - 0x7A88, 0x7A88, 0x0966, 0x7A89, 0x7A89, 0x1D85, 0x7A8A, 0x7A8A, 0x1D89, - 0x7A8B, 0x7A8C, 0x1D87, 0x7A8F, 0x7A8F, 0x1FCA, 0x7A90, 0x7A90, 0x1FCC, - 0x7A91, 0x7A91, 0x43D8, 0x7A92, 0x7A92, 0x0B46, 0x7A94, 0x7A94, 0x1FCB, - 0x7A95, 0x7A95, 0x0B47, 0x7A96, 0x7A96, 0x0D00, 0x7A97, 0x7A97, 0x0CFF, - 0x7A98, 0x7A98, 0x0CFE, 0x7A99, 0x7A99, 0x2250, 0x7A9E, 0x7A9E, 0x24EC, - 0x7A9F, 0x7AA0, 0x0EB4, 0x7AA2, 0x7AA2, 0x24EB, 0x7AA3, 0x7AA3, 0x24EA, - 0x7AA8, 0x7AA8, 0x2766, 0x7AA9, 0x7AA9, 0x104A, 0x7AAA, 0x7AAA, 0x1049, - 0x7AAB, 0x7AAC, 0x2767, 0x7AAE, 0x7AAE, 0x11CA, 0x7AAF, 0x7AAF, 0x11C9, - 0x7AB0, 0x7AB0, 0x373A, 0x7AB1, 0x7AB1, 0x2BFC, 0x7AB2, 0x7AB2, 0x29A4, - 0x7AB3, 0x7AB3, 0x29A6, 0x7AB4, 0x7AB4, 0x29A5, 0x7AB5, 0x7AB5, 0x2BFB, - 0x7AB6, 0x7AB6, 0x2BF9, 0x7AB7, 0x7AB7, 0x2BFD, 0x7AB8, 0x7AB8, 0x2BFA, - 0x7ABA, 0x7ABA, 0x1315, 0x7ABB, 0x7ABB, 0x3739, 0x7ABC, 0x7ABC, 0x4721, - 0x7ABE, 0x7ABE, 0x2DD5, 0x7ABF, 0x7ABF, 0x1427, 0x7AC0, 0x7AC1, 0x2DD6, - 0x7AC2, 0x7AC3, 0x373B, 0x7AC4, 0x7AC5, 0x1503, 0x7AC7, 0x7AC7, 0x1628, - 0x7AC8, 0x7AC8, 0x3D7F, 0x7AC9, 0x7AC9, 0x4570, 0x7ACA, 0x7ACA, 0x16FF, - 0x7ACB, 0x7ACB, 0x036D, 0x7ACF, 0x7ACF, 0x4724, 0x7AD1, 0x7AD1, 0x1BB7, - 0x7AD3, 0x7AD3, 0x3F8A, 0x7AD8, 0x7AD8, 0x1D8B, 0x7AD9, 0x7AD9, 0x0967, - 0x7ADA, 0x7ADA, 0x3740, 0x7ADB, 0x7ADB, 0x4725, 0x7ADC, 0x7ADC, 0x3951, - 0x7ADD, 0x7ADD, 0x3741, 0x7ADF, 0x7ADF, 0x0BDE, 0x7AE0, 0x7AE0, 0x0BDD, - 0x7AE2, 0x7AE2, 0x3B33, 0x7AE3, 0x7AE3, 0x0D02, 0x7AE4, 0x7AE4, 0x2252, - 0x7AE5, 0x7AE5, 0x0D01, 0x7AE6, 0x7AE6, 0x2251, 0x7AE7, 0x7AE7, 0x385D, - 0x7AE9, 0x7AE9, 0x3831, 0x7AEA, 0x7AEA, 0x3742, 0x7AEB, 0x7AEB, 0x24ED, - 0x7AED, 0x7AED, 0x104B, 0x7AEE, 0x7AEE, 0x2769, 0x7AEF, 0x7AEF, 0x104C, - 0x7AF6, 0x7AF6, 0x1629, 0x7AF7, 0x7AF7, 0x320D, 0x7AF9, 0x7AF9, 0x03F6, - 0x7AFA, 0x7AFA, 0x0666, 0x7AFB, 0x7AFB, 0x1A24, 0x7AFD, 0x7AFD, 0x07CB, - 0x7AFE, 0x7AFE, 0x3B3D, 0x7AFF, 0x7AFF, 0x07CA, 0x7B00, 0x7B01, 0x1BB8, - 0x7B04, 0x7B04, 0x1D8D, 0x7B05, 0x7B05, 0x1D8F, 0x7B06, 0x7B06, 0x0968, - 0x7B08, 0x7B08, 0x1D91, 0x7B09, 0x7B09, 0x1D94, 0x7B0A, 0x7B0A, 0x1D92, - 0x7B0B, 0x7B0B, 0x3746, 0x7B0C, 0x7B0C, 0x3B63, 0x7B0E, 0x7B0E, 0x1D93, - 0x7B0F, 0x7B0F, 0x1D90, 0x7B10, 0x7B10, 0x1D8C, 0x7B11, 0x7B11, 0x0969, - 0x7B12, 0x7B12, 0x1D95, 0x7B13, 0x7B13, 0x1D8E, 0x7B14, 0x7B14, 0x3F77, - 0x7B18, 0x7B18, 0x1FD5, 0x7B19, 0x7B19, 0x0B4D, 0x7B1A, 0x7B1A, 0x1FDE, - 0x7B1B, 0x7B1B, 0x0B4A, 0x7B1D, 0x7B1D, 0x1FD7, 0x7B1E, 0x7B1E, 0x0B4E, - 0x7B1F, 0x7B1F, 0x3F11, 0x7B20, 0x7B20, 0x0B48, 0x7B22, 0x7B22, 0x1FD2, - 0x7B23, 0x7B23, 0x1FDF, 0x7B24, 0x7B24, 0x1FD3, 0x7B25, 0x7B25, 0x1FD0, - 0x7B26, 0x7B26, 0x0B4C, 0x7B27, 0x7B27, 0x3B5F, 0x7B28, 0x7B28, 0x0B49, - 0x7B29, 0x7B29, 0x3748, 0x7B2A, 0x7B2A, 0x1FD6, 0x7B2B, 0x7B2B, 0x1FD9, - 0x7B2C, 0x7B2C, 0x0B4B, 0x7B2D, 0x7B2D, 0x1FDA, 0x7B2E, 0x7B2E, 0x0B4F, - 0x7B2F, 0x7B2F, 0x1FDB, 0x7B30, 0x7B30, 0x1FD1, 0x7B31, 0x7B31, 0x1FD8, - 0x7B32, 0x7B32, 0x1FDC, 0x7B33, 0x7B33, 0x1FD4, 0x7B34, 0x7B34, 0x1FCF, - 0x7B35, 0x7B35, 0x1FCD, 0x7B38, 0x7B38, 0x1FDD, 0x7B39, 0x7B39, 0x3D6E, - 0x7B3B, 0x7B3B, 0x1FCE, 0x7B40, 0x7B40, 0x2259, 0x7B42, 0x7B42, 0x3DED, - 0x7B43, 0x7B43, 0x3E25, 0x7B44, 0x7B44, 0x2255, 0x7B45, 0x7B45, 0x225B, - 0x7B46, 0x7B46, 0x0D05, 0x7B47, 0x7B47, 0x2254, 0x7B48, 0x7B48, 0x2256, - 0x7B49, 0x7B49, 0x0D03, 0x7B4A, 0x7B4A, 0x2253, 0x7B4B, 0x7B4B, 0x0D0A, - 0x7B4C, 0x7B4C, 0x2257, 0x7B4D, 0x7B4D, 0x0D09, 0x7B4E, 0x7B4E, 0x2258, - 0x7B4F, 0x7B4F, 0x0D0B, 0x7B50, 0x7B50, 0x0D06, 0x7B51, 0x7B51, 0x0D0C, - 0x7B52, 0x7B52, 0x0D07, 0x7B54, 0x7B54, 0x0D08, 0x7B55, 0x7B55, 0x3747, - 0x7B56, 0x7B56, 0x0D04, 0x7B58, 0x7B58, 0x225A, 0x7B60, 0x7B60, 0x0EB8, - 0x7B61, 0x7B61, 0x24F8, 0x7B62, 0x7B62, 0x4727, 0x7B63, 0x7B63, 0x24FB, - 0x7B64, 0x7B64, 0x24EF, 0x7B65, 0x7B65, 0x24F4, 0x7B66, 0x7B66, 0x24EE, - 0x7B67, 0x7B67, 0x0EBA, 0x7B69, 0x7B69, 0x24F2, 0x7B6C, 0x7B6C, 0x4728, - 0x7B6D, 0x7B6D, 0x24F0, 0x7B6E, 0x7B6E, 0x0EB9, 0x7B6F, 0x7B6F, 0x374C, - 0x7B70, 0x7B70, 0x24F7, 0x7B71, 0x7B71, 0x24F6, 0x7B72, 0x7B72, 0x24F3, - 0x7B73, 0x7B73, 0x24F5, 0x7B74, 0x7B74, 0x24F1, 0x7B75, 0x7B75, 0x1050, - 0x7B76, 0x7B76, 0x24FA, 0x7B77, 0x7B77, 0x0EB6, 0x7B78, 0x7B78, 0x24F9, - 0x7B7B, 0x7B7B, 0x4729, 0x7B82, 0x7B82, 0x2779, 0x7B84, 0x7B84, 0x1057, - 0x7B85, 0x7B85, 0x2774, 0x7B87, 0x7B87, 0x1056, 0x7B88, 0x7B88, 0x276A, - 0x7B8A, 0x7B8A, 0x276C, 0x7B8B, 0x7B8B, 0x104F, 0x7B8C, 0x7B8C, 0x2771, - 0x7B8D, 0x7B8D, 0x2770, 0x7B8E, 0x7B8E, 0x2773, 0x7B8F, 0x7B8F, 0x1054, - 0x7B90, 0x7B90, 0x276E, 0x7B91, 0x7B91, 0x276D, 0x7B92, 0x7B92, 0x3752, - 0x7B94, 0x7B94, 0x1053, 0x7B95, 0x7B95, 0x104E, 0x7B96, 0x7B96, 0x276F, - 0x7B97, 0x7B97, 0x1051, 0x7B98, 0x7B98, 0x2775, 0x7B99, 0x7B99, 0x2777, - 0x7B9B, 0x7B9B, 0x2772, 0x7B9C, 0x7B9C, 0x276B, 0x7B9D, 0x7B9D, 0x1052, - 0x7BA0, 0x7BA0, 0x11D2, 0x7BA1, 0x7BA1, 0x104D, 0x7BA2, 0x7BA2, 0x374B, - 0x7BA3, 0x7BA3, 0x3F14, 0x7BA4, 0x7BA4, 0x2778, 0x7BAC, 0x7BAC, 0x29AA, - 0x7BAD, 0x7BAD, 0x11CB, 0x7BAF, 0x7BAF, 0x29AC, 0x7BB1, 0x7BB1, 0x11CC, - 0x7BB2, 0x7BB2, 0x461C, 0x7BB4, 0x7BB4, 0x11CE, 0x7BB5, 0x7BB5, 0x29AF, - 0x7BB7, 0x7BB7, 0x29A7, 0x7BB8, 0x7BB8, 0x1055, 0x7BB9, 0x7BB9, 0x29AD, - 0x7BBE, 0x7BBE, 0x29A9, 0x7BC0, 0x7BC0, 0x0EB7, 0x7BC1, 0x7BC1, 0x11D1, - 0x7BC4, 0x7BC4, 0x11CD, 0x7BC6, 0x7BC7, 0x11CF, 0x7BC9, 0x7BC9, 0x1318, - 0x7BCA, 0x7BCA, 0x29AE, 0x7BCB, 0x7BCB, 0x29A8, 0x7BCC, 0x7BCC, 0x11D3, - 0x7BCE, 0x7BCE, 0x29AB, 0x7BCF, 0x7BCF, 0x3F18, 0x7BD0, 0x7BD0, 0x3750, - 0x7BD4, 0x7BD4, 0x2C07, 0x7BD5, 0x7BD5, 0x2C02, 0x7BD8, 0x7BD8, 0x2C0C, - 0x7BD9, 0x7BD9, 0x1316, 0x7BDA, 0x7BDA, 0x2C04, 0x7BDB, 0x7BDB, 0x131A, - 0x7BDC, 0x7BDC, 0x2C0A, 0x7BDD, 0x7BDD, 0x2C01, 0x7BDE, 0x7BDE, 0x2BFE, - 0x7BDF, 0x7BDF, 0x2C0D, 0x7BE0, 0x7BE0, 0x142D, 0x7BE1, 0x7BE1, 0x131B, - 0x7BE2, 0x7BE2, 0x2C09, 0x7BE3, 0x7BE3, 0x2BFF, 0x7BE4, 0x7BE4, 0x1319, - 0x7BE5, 0x7BE5, 0x2C03, 0x7BE6, 0x7BE6, 0x131D, 0x7BE7, 0x7BE7, 0x2C00, - 0x7BE8, 0x7BE8, 0x2C05, 0x7BE9, 0x7BE9, 0x131C, 0x7BEA, 0x7BEA, 0x2C08, - 0x7BEB, 0x7BEB, 0x2C0B, 0x7BF0, 0x7BF1, 0x2DE9, 0x7BF2, 0x7BF2, 0x2DDA, - 0x7BF3, 0x7BF3, 0x2DE1, 0x7BF4, 0x7BF4, 0x2DDF, 0x7BF7, 0x7BF7, 0x142B, - 0x7BF8, 0x7BF8, 0x2DE6, 0x7BF9, 0x7BF9, 0x2C06, 0x7BFA, 0x7BFA, 0x3757, - 0x7BFB, 0x7BFB, 0x2DDD, 0x7BFC, 0x7BFC, 0x3F1F, 0x7BFD, 0x7BFD, 0x2DE7, - 0x7BFE, 0x7BFE, 0x142A, 0x7BFF, 0x7BFF, 0x2DDC, 0x7C00, 0x7C00, 0x2DDB, - 0x7C01, 0x7C01, 0x2DE5, 0x7C02, 0x7C02, 0x2DE2, 0x7C03, 0x7C03, 0x2DE4, - 0x7C05, 0x7C05, 0x2DD8, 0x7C06, 0x7C06, 0x2DE8, 0x7C07, 0x7C07, 0x1428, - 0x7C09, 0x7C09, 0x2DE3, 0x7C0A, 0x7C0A, 0x2DEC, 0x7C0B, 0x7C0B, 0x2DE0, - 0x7C0C, 0x7C0C, 0x142C, 0x7C0D, 0x7C0D, 0x1429, 0x7C0E, 0x7C0E, 0x2DDE, - 0x7C0F, 0x7C0F, 0x2DD9, 0x7C10, 0x7C10, 0x2DEB, 0x7C11, 0x7C11, 0x1317, - 0x7C12, 0x7C12, 0x472A, 0x7C15, 0x7C15, 0x4061, 0x7C19, 0x7C19, 0x2F78, - 0x7C1B, 0x7C1B, 0x43D9, 0x7C1C, 0x7C1C, 0x2F76, 0x7C1D, 0x7C1D, 0x2F7C, - 0x7C1E, 0x7C1E, 0x1508, 0x7C1F, 0x7C1F, 0x2F7A, 0x7C20, 0x7C20, 0x2F79, - 0x7C21, 0x7C21, 0x150A, 0x7C22, 0x7C22, 0x2F7F, 0x7C23, 0x7C23, 0x1509, - 0x7C25, 0x7C25, 0x2F80, 0x7C26, 0x7C26, 0x2F7D, 0x7C27, 0x7C27, 0x1506, - 0x7C28, 0x7C28, 0x2F7E, 0x7C29, 0x7C29, 0x2F77, 0x7C2A, 0x7C2A, 0x1507, - 0x7C2B, 0x7C2B, 0x1505, 0x7C2C, 0x7C2C, 0x30D6, 0x7C2D, 0x7C2D, 0x2F7B, - 0x7C30, 0x7C30, 0x2F81, 0x7C33, 0x7C33, 0x30D3, 0x7C35, 0x7C35, 0x3759, - 0x7C37, 0x7C37, 0x15A7, 0x7C38, 0x7C38, 0x15A5, 0x7C39, 0x7C39, 0x30D5, - 0x7C3B, 0x7C3B, 0x30D7, 0x7C3C, 0x7C3C, 0x30D4, 0x7C3D, 0x7C3D, 0x15A6, - 0x7C3E, 0x7C3F, 0x15A3, 0x7C40, 0x7C40, 0x15A8, 0x7C42, 0x7C42, 0x3F1C, - 0x7C43, 0x7C43, 0x162B, 0x7C44, 0x7C44, 0x375B, 0x7C45, 0x7C45, 0x3212, - 0x7C47, 0x7C47, 0x3211, 0x7C48, 0x7C48, 0x320F, 0x7C49, 0x7C49, 0x320E, - 0x7C4A, 0x7C4A, 0x3210, 0x7C4C, 0x7C4C, 0x162A, 0x7C4D, 0x7C4D, 0x162C, - 0x7C50, 0x7C50, 0x1681, 0x7C51, 0x7C51, 0x3FB8, 0x7C53, 0x7C53, 0x32EA, - 0x7C54, 0x7C54, 0x32E9, 0x7C56, 0x7C56, 0x3EFF, 0x7C57, 0x7C57, 0x339B, - 0x7C59, 0x7C59, 0x339D, 0x7C5A, 0x7C5A, 0x339F, 0x7C5B, 0x7C5B, 0x339E, - 0x7C5C, 0x7C5C, 0x339C, 0x7C5D, 0x7C5D, 0x3B3F, 0x7C5F, 0x7C5F, 0x16D1, - 0x7C60, 0x7C60, 0x16D0, 0x7C63, 0x7C63, 0x1701, 0x7C64, 0x7C64, 0x1700, - 0x7C65, 0x7C65, 0x1702, 0x7C66, 0x7C66, 0x342B, 0x7C67, 0x7C67, 0x342A, - 0x7C69, 0x7C69, 0x34D6, 0x7C6A, 0x7C6A, 0x3493, 0x7C6B, 0x7C6B, 0x34D7, - 0x7C6C, 0x7C6C, 0x1745, 0x7C6D, 0x7C6D, 0x3B40, 0x7C6E, 0x7C6E, 0x1746, - 0x7C6F, 0x7C6F, 0x3507, 0x7C70, 0x7C70, 0x3F52, 0x7C72, 0x7C72, 0x176B, - 0x7C73, 0x7C73, 0x03F7, 0x7C74, 0x7C74, 0x469C, 0x7C75, 0x7C75, 0x1A25, - 0x7C78, 0x7C79, 0x1BBB, 0x7C7A, 0x7C7A, 0x1BBA, 0x7C7B, 0x7C7B, 0x472D, - 0x7C7C, 0x7C7C, 0x3B49, 0x7C7D, 0x7C7D, 0x07CC, 0x7C7E, 0x7C7E, 0x3F1A, - 0x7C7F, 0x7C81, 0x1BBD, 0x7C83, 0x7C83, 0x375C, 0x7C84, 0x7C84, 0x1D96, - 0x7C85, 0x7C85, 0x1D9C, 0x7C86, 0x7C86, 0x3F1D, 0x7C88, 0x7C88, 0x1D9A, - 0x7C89, 0x7C89, 0x096A, 0x7C8A, 0x7C8A, 0x1D98, 0x7C8C, 0x7C8C, 0x1D99, - 0x7C8D, 0x7C8D, 0x1D9B, 0x7C8E, 0x7C8E, 0x3B48, 0x7C91, 0x7C91, 0x1D97, - 0x7C92, 0x7C92, 0x0B50, 0x7C94, 0x7C94, 0x1FE0, 0x7C95, 0x7C95, 0x0B52, - 0x7C96, 0x7C96, 0x1FE2, 0x7C97, 0x7C97, 0x0B51, 0x7C98, 0x7C98, 0x1FE1, - 0x7C9C, 0x7C9C, 0x472E, 0x7C9E, 0x7C9E, 0x225D, 0x7C9F, 0x7C9F, 0x0D0D, - 0x7CA1, 0x7CA1, 0x225F, 0x7CA2, 0x7CA2, 0x225C, 0x7CA3, 0x7CA3, 0x1FE3, - 0x7CA5, 0x7CA5, 0x0D0E, 0x7CA6, 0x7CA6, 0x375E, 0x7CA7, 0x7CA7, 0x36ED, - 0x7CA8, 0x7CA8, 0x225E, 0x7CAC, 0x7CAC, 0x3885, 0x7CAE, 0x7CAE, 0x3B4A, - 0x7CAF, 0x7CAF, 0x24FE, 0x7CB1, 0x7CB1, 0x0EBB, 0x7CB2, 0x7CB2, 0x24FC, - 0x7CB3, 0x7CB3, 0x0EBC, 0x7CB4, 0x7CB4, 0x24FD, 0x7CB5, 0x7CB5, 0x0EBD, - 0x7CB8, 0x7CB8, 0x4730, 0x7CB9, 0x7CB9, 0x1058, 0x7CBA, 0x7CBA, 0x277D, - 0x7CBB, 0x7CBB, 0x277A, 0x7CBC, 0x7CBC, 0x277C, 0x7CBD, 0x7CBE, 0x1059, - 0x7CBF, 0x7CBF, 0x277B, 0x7CC2, 0x7CC2, 0x3FD7, 0x7CC5, 0x7CC5, 0x29B0, - 0x7CC7, 0x7CC7, 0x3761, 0x7CC8, 0x7CC8, 0x29B1, 0x7CC9, 0x7CC9, 0x3760, - 0x7CCA, 0x7CCA, 0x11D4, 0x7CCB, 0x7CCB, 0x29B3, 0x7CCC, 0x7CCC, 0x29B2, - 0x7CCD, 0x7CCD, 0x3B45, 0x7CCE, 0x7CCE, 0x0121, 0x7CD0, 0x7CD1, 0x2C11, - 0x7CD2, 0x7CD2, 0x2C0E, 0x7CD3, 0x7CD3, 0x3D5C, 0x7CD4, 0x7CD4, 0x2C0F, - 0x7CD5, 0x7CD6, 0x131E, 0x7CD7, 0x7CD7, 0x2C10, 0x7CD9, 0x7CD9, 0x1433, - 0x7CDA, 0x7CDA, 0x3FD9, 0x7CDC, 0x7CDC, 0x142F, 0x7CDD, 0x7CDD, 0x1434, - 0x7CDE, 0x7CDE, 0x1430, 0x7CDF, 0x7CDF, 0x1432, 0x7CE0, 0x7CE0, 0x142E, - 0x7CE2, 0x7CE2, 0x1431, 0x7CE6, 0x7CE6, 0x3762, 0x7CE7, 0x7CE7, 0x150B, - 0x7CE8, 0x7CE8, 0x2DED, 0x7CEA, 0x7CEA, 0x30D9, 0x7CEC, 0x7CEC, 0x30D8, - 0x7CED, 0x7CED, 0x43DA, 0x7CEE, 0x7CEE, 0x3213, 0x7CEF, 0x7CF0, 0x162D, - 0x7CF1, 0x7CF1, 0x33A1, 0x7CF2, 0x7CF2, 0x32EB, 0x7CF3, 0x7CF3, 0x3764, - 0x7CF4, 0x7CF4, 0x33A0, 0x7CF5, 0x7CF5, 0x3765, 0x7CF6, 0x7CF6, 0x34D8, - 0x7CF7, 0x7CF7, 0x351D, 0x7CF8, 0x7CF8, 0x03F8, 0x7CF9, 0x7CF9, 0x44F8, - 0x7CFB, 0x7CFB, 0x04FB, 0x7CFC, 0x7CFC, 0x456D, 0x7CFD, 0x7CFD, 0x1A26, - 0x7CFE, 0x7CFE, 0x0667, 0x7D00, 0x7D00, 0x07CF, 0x7D01, 0x7D01, 0x1BC2, - 0x7D02, 0x7D02, 0x07CD, 0x7D03, 0x7D03, 0x1BC0, 0x7D04, 0x7D04, 0x07D2, - 0x7D05, 0x7D05, 0x07CE, 0x7D06, 0x7D06, 0x07D3, 0x7D07, 0x7D07, 0x07D1, - 0x7D08, 0x7D08, 0x1BC1, 0x7D09, 0x7D09, 0x07D0, 0x7D0A, 0x7D0A, 0x096E, - 0x7D0B, 0x7D0B, 0x096D, 0x7D0C, 0x7D0C, 0x1DA7, 0x7D0D, 0x7D0D, 0x0976, - 0x7D0E, 0x7D0E, 0x1DA0, 0x7D0F, 0x7D0F, 0x1DA6, 0x7D10, 0x7D10, 0x0972, - 0x7D11, 0x7D11, 0x1D9F, 0x7D12, 0x7D12, 0x1DA5, 0x7D13, 0x7D13, 0x1DA3, - 0x7D14, 0x7D14, 0x0971, 0x7D15, 0x7D15, 0x0973, 0x7D16, 0x7D16, 0x1DA2, - 0x7D17, 0x7D17, 0x096C, 0x7D18, 0x7D18, 0x1DA1, 0x7D19, 0x7D19, 0x0977, - 0x7D1A, 0x7D1A, 0x0974, 0x7D1B, 0x7D1B, 0x0978, 0x7D1C, 0x7D1C, 0x0975, - 0x7D1D, 0x7D1D, 0x1D9E, 0x7D1E, 0x7D1E, 0x1D9D, 0x7D1F, 0x7D1F, 0x1DA4, - 0x7D20, 0x7D20, 0x096F, 0x7D21, 0x7D21, 0x096B, 0x7D22, 0x7D22, 0x0970, - 0x7D25, 0x7D25, 0x3EDE, 0x7D28, 0x7D28, 0x1FF2, 0x7D29, 0x7D29, 0x1FEB, - 0x7D2B, 0x7D2B, 0x0D13, 0x7D2C, 0x7D2C, 0x1FEA, 0x7D2E, 0x7D2E, 0x0B56, - 0x7D2F, 0x7D2F, 0x0B5D, 0x7D30, 0x7D30, 0x0B5A, 0x7D31, 0x7D31, 0x0B60, - 0x7D32, 0x7D32, 0x0B5F, 0x7D33, 0x7D33, 0x0B5B, 0x7D35, 0x7D35, 0x1FE4, - 0x7D36, 0x7D36, 0x1FE7, 0x7D38, 0x7D38, 0x1FE6, 0x7D39, 0x7D39, 0x0B57, - 0x7D3A, 0x7D3A, 0x1FE8, 0x7D3B, 0x7D3B, 0x1FF1, 0x7D3C, 0x7D3C, 0x0B58, - 0x7D3D, 0x7D3D, 0x1FE5, 0x7D3E, 0x7D3F, 0x1FEE, 0x7D40, 0x7D40, 0x0B59, - 0x7D41, 0x7D41, 0x1FEC, 0x7D42, 0x7D42, 0x0B5E, 0x7D43, 0x7D43, 0x0B54, - 0x7D44, 0x7D44, 0x0B5C, 0x7D45, 0x7D45, 0x1FE9, 0x7D46, 0x7D46, 0x0B53, - 0x7D47, 0x7D47, 0x1FED, 0x7D4A, 0x7D4A, 0x1FF0, 0x7D4D, 0x7D4D, 0x3FDD, - 0x7D4E, 0x7D4E, 0x2270, 0x7D4F, 0x7D4F, 0x2267, 0x7D50, 0x7D50, 0x0D10, - 0x7D51, 0x7D51, 0x226E, 0x7D52, 0x7D52, 0x226B, 0x7D53, 0x7D53, 0x2263, - 0x7D54, 0x7D54, 0x226C, 0x7D55, 0x7D55, 0x0D12, 0x7D56, 0x7D56, 0x2264, - 0x7D58, 0x7D58, 0x2260, 0x7D5A, 0x7D5A, 0x3E93, 0x7D5B, 0x7D5B, 0x0EC3, - 0x7D5C, 0x7D5C, 0x2269, 0x7D5D, 0x7D5D, 0x3769, 0x7D5E, 0x7D5E, 0x0D0F, - 0x7D5F, 0x7D5F, 0x226F, 0x7D61, 0x7D61, 0x0D16, 0x7D62, 0x7D62, 0x0D18, - 0x7D63, 0x7D63, 0x2262, 0x7D66, 0x7D66, 0x0D17, 0x7D67, 0x7D67, 0x2265, - 0x7D68, 0x7D68, 0x0D11, 0x7D69, 0x7D69, 0x226D, 0x7D6A, 0x7D6A, 0x2266, - 0x7D6B, 0x7D6B, 0x226A, 0x7D6D, 0x7D6D, 0x2268, 0x7D6E, 0x7D6E, 0x0D14, - 0x7D6F, 0x7D6F, 0x2261, 0x7D70, 0x7D70, 0x0D19, 0x7D71, 0x7D71, 0x0B55, - 0x7D72, 0x7D72, 0x0D15, 0x7D73, 0x7D73, 0x0D1A, 0x7D79, 0x7D79, 0x0EBF, - 0x7D7A, 0x7D7A, 0x2505, 0x7D7B, 0x7D7B, 0x2507, 0x7D7C, 0x7D7C, 0x2509, - 0x7D7D, 0x7D7D, 0x250D, 0x7D7F, 0x7D7F, 0x2503, 0x7D80, 0x7D80, 0x2501, - 0x7D81, 0x7D81, 0x0EC1, 0x7D83, 0x7D83, 0x2508, 0x7D84, 0x7D84, 0x250C, - 0x7D85, 0x7D85, 0x2504, 0x7D86, 0x7D86, 0x2500, 0x7D88, 0x7D88, 0x24FF, - 0x7D89, 0x7D89, 0x376B, 0x7D8C, 0x7D8C, 0x250A, 0x7D8D, 0x7D8D, 0x2502, - 0x7D8E, 0x7D8E, 0x2506, 0x7D8F, 0x7D8F, 0x0EC2, 0x7D91, 0x7D91, 0x0EC0, - 0x7D92, 0x7D92, 0x250E, 0x7D93, 0x7D93, 0x0EBE, 0x7D94, 0x7D94, 0x250B, - 0x7D96, 0x7D96, 0x278E, 0x7D97, 0x7D97, 0x3B53, 0x7D9C, 0x7D9C, 0x105D, - 0x7D9D, 0x7D9D, 0x2786, 0x7D9E, 0x7D9E, 0x11E1, 0x7D9F, 0x7D9F, 0x2790, - 0x7DA0, 0x7DA0, 0x1060, 0x7DA1, 0x7DA1, 0x2794, 0x7DA2, 0x7DA2, 0x1066, - 0x7DA3, 0x7DA3, 0x2781, 0x7DA4, 0x7DA4, 0x46D7, 0x7DA6, 0x7DA6, 0x2791, - 0x7DA7, 0x7DA7, 0x277E, 0x7DA8, 0x7DA8, 0x3C9C, 0x7DA9, 0x7DA9, 0x2793, - 0x7DAA, 0x7DAA, 0x2782, 0x7DAB, 0x7DAB, 0x376C, 0x7DAC, 0x7DAC, 0x106D, - 0x7DAD, 0x7DAD, 0x106A, 0x7DAE, 0x7DAE, 0x2792, 0x7DAF, 0x7DAF, 0x278C, - 0x7DB0, 0x7DB0, 0x105C, 0x7DB1, 0x7DB1, 0x1064, 0x7DB2, 0x7DB2, 0x1063, - 0x7DB3, 0x7DB3, 0x376E, 0x7DB4, 0x7DB4, 0x1062, 0x7DB5, 0x7DB5, 0x1068, - 0x7DB7, 0x7DB7, 0x277F, 0x7DB8, 0x7DB8, 0x1069, 0x7DB9, 0x7DB9, 0x278D, - 0x7DBA, 0x7DBA, 0x1065, 0x7DBB, 0x7DBB, 0x105B, 0x7DBC, 0x7DBC, 0x278F, - 0x7DBD, 0x7DBE, 0x105E, 0x7DBF, 0x7DBF, 0x1067, 0x7DC0, 0x7DC0, 0x2784, - 0x7DC1, 0x7DC1, 0x2783, 0x7DC2, 0x7DC2, 0x2780, 0x7DC4, 0x7DC4, 0x2788, - 0x7DC5, 0x7DC5, 0x2785, 0x7DC6, 0x7DC6, 0x2789, 0x7DC7, 0x7DC7, 0x106C, - 0x7DC9, 0x7DC9, 0x2795, 0x7DCA, 0x7DCA, 0x1061, 0x7DCB, 0x7DCC, 0x278A, - 0x7DCD, 0x7DCD, 0x456E, 0x7DCE, 0x7DCE, 0x2787, 0x7DCF, 0x7DCF, 0x4735, - 0x7DD0, 0x7DD0, 0x4737, 0x7DD2, 0x7DD2, 0x106B, 0x7DD3, 0x7DD3, 0x3B4E, - 0x7DD4, 0x7DD4, 0x4736, 0x7DD6, 0x7DD6, 0x376F, 0x7DD7, 0x7DD7, 0x29B8, - 0x7DD8, 0x7DD8, 0x11D9, 0x7DD9, 0x7DD9, 0x11E2, 0x7DDA, 0x7DDA, 0x11DE, - 0x7DDB, 0x7DDB, 0x29B5, 0x7DDC, 0x7DDC, 0x3B4C, 0x7DDD, 0x7DDD, 0x11DB, - 0x7DDE, 0x7DDE, 0x11DF, 0x7DDF, 0x7DDF, 0x29C1, 0x7DE0, 0x7DE0, 0x11D5, - 0x7DE1, 0x7DE1, 0x29B9, 0x7DE3, 0x7DE3, 0x11DD, 0x7DE4, 0x7DE4, 0x3772, - 0x7DE5, 0x7DE5, 0x3776, 0x7DE6, 0x7DE6, 0x29BC, 0x7DE7, 0x7DE7, 0x29B7, - 0x7DE8, 0x7DE8, 0x11DC, 0x7DE9, 0x7DE9, 0x11E0, 0x7DEA, 0x7DEA, 0x29B6, - 0x7DEC, 0x7DEC, 0x11DA, 0x7DEE, 0x7DEE, 0x29C0, 0x7DEF, 0x7DEF, 0x11D7, - 0x7DF0, 0x7DF0, 0x29BF, 0x7DF1, 0x7DF1, 0x29BE, 0x7DF2, 0x7DF2, 0x11E3, - 0x7DF3, 0x7DF3, 0x28C8, 0x7DF4, 0x7DF4, 0x11D6, 0x7DF5, 0x7DF5, 0x3774, - 0x7DF6, 0x7DF6, 0x29BD, 0x7DF7, 0x7DF7, 0x29B4, 0x7DF9, 0x7DF9, 0x11E4, - 0x7DFA, 0x7DFA, 0x29BB, 0x7DFB, 0x7DFB, 0x11D8, 0x7DFD, 0x7DFD, 0x4738, - 0x7DFE, 0x7DFE, 0x3CCF, 0x7E03, 0x7E03, 0x29BA, 0x7E07, 0x7E07, 0x3B4D, - 0x7E08, 0x7E08, 0x1322, 0x7E09, 0x7E09, 0x1327, 0x7E0A, 0x7E0A, 0x1320, - 0x7E0B, 0x7E0B, 0x2C1F, 0x7E0C, 0x7E0C, 0x2C16, 0x7E0D, 0x7E0D, 0x2C22, - 0x7E0E, 0x7E0E, 0x2C1A, 0x7E0F, 0x7E0F, 0x2C20, 0x7E10, 0x7E10, 0x1328, - 0x7E11, 0x7E11, 0x1321, 0x7E12, 0x7E12, 0x2C13, 0x7E13, 0x7E13, 0x2C19, - 0x7E14, 0x7E14, 0x2C23, 0x7E15, 0x7E15, 0x2C1C, 0x7E16, 0x7E16, 0x2C21, - 0x7E17, 0x7E17, 0x2C15, 0x7E1A, 0x7E1A, 0x2C1D, 0x7E1B, 0x7E1B, 0x1323, - 0x7E1C, 0x7E1C, 0x2C1B, 0x7E1D, 0x7E1D, 0x1326, 0x7E1E, 0x7E1E, 0x1325, - 0x7E1F, 0x7E20, 0x2C17, 0x7E21, 0x7E21, 0x2C14, 0x7E22, 0x7E22, 0x2C1E, - 0x7E23, 0x7E23, 0x1324, 0x7E24, 0x7E24, 0x2C25, 0x7E25, 0x7E25, 0x2C24, - 0x7E27, 0x7E27, 0x377F, 0x7E29, 0x7E29, 0x2DF8, 0x7E2A, 0x7E2A, 0x2DF4, - 0x7E2B, 0x7E2B, 0x143B, 0x7E2D, 0x7E2D, 0x2DEE, 0x7E2E, 0x7E2E, 0x1435, - 0x7E2F, 0x7E2F, 0x1445, 0x7E30, 0x7E30, 0x2DFA, 0x7E31, 0x7E31, 0x143D, - 0x7E32, 0x7E32, 0x1439, 0x7E33, 0x7E33, 0x2DF1, 0x7E34, 0x7E34, 0x1440, - 0x7E35, 0x7E35, 0x1443, 0x7E36, 0x7E36, 0x2DFC, 0x7E37, 0x7E37, 0x1438, - 0x7E38, 0x7E38, 0x2DF3, 0x7E39, 0x7E39, 0x1441, 0x7E3A, 0x7E3A, 0x2DFE, - 0x7E3B, 0x7E3B, 0x2DFB, 0x7E3C, 0x7E3C, 0x2DEF, 0x7E3D, 0x7E3D, 0x143C, - 0x7E3E, 0x7E3E, 0x1436, 0x7E3F, 0x7E3F, 0x1444, 0x7E40, 0x7E40, 0x2DF6, - 0x7E41, 0x7E41, 0x143F, 0x7E42, 0x7E42, 0x2DF0, 0x7E43, 0x7E43, 0x143A, - 0x7E44, 0x7E44, 0x2DFD, 0x7E45, 0x7E45, 0x143E, 0x7E46, 0x7E46, 0x1437, - 0x7E47, 0x7E47, 0x2DF7, 0x7E48, 0x7E48, 0x1442, 0x7E49, 0x7E49, 0x2DF5, - 0x7E4C, 0x7E4C, 0x2DF9, 0x7E50, 0x7E50, 0x2F83, 0x7E51, 0x7E51, 0x2F89, - 0x7E52, 0x7E52, 0x1511, 0x7E53, 0x7E53, 0x2F8C, 0x7E54, 0x7E55, 0x150C, - 0x7E56, 0x7E56, 0x2F84, 0x7E57, 0x7E57, 0x2F8B, 0x7E58, 0x7E58, 0x2F86, - 0x7E59, 0x7E59, 0x1512, 0x7E5A, 0x7E5A, 0x150F, 0x7E5C, 0x7E5C, 0x2F82, - 0x7E5E, 0x7E5E, 0x150E, 0x7E5F, 0x7E5F, 0x2F88, 0x7E60, 0x7E60, 0x2F8A, - 0x7E61, 0x7E61, 0x1510, 0x7E62, 0x7E62, 0x2F87, 0x7E63, 0x7E63, 0x2F85, - 0x7E65, 0x7E65, 0x46D2, 0x7E67, 0x7E67, 0x3766, 0x7E68, 0x7E68, 0x30E3, - 0x7E69, 0x7E6A, 0x15AC, 0x7E6B, 0x7E6B, 0x15A9, 0x7E6D, 0x7E6D, 0x15AA, - 0x7E6E, 0x7E6E, 0x377B, 0x7E6F, 0x7E6F, 0x30DF, 0x7E70, 0x7E70, 0x30DD, - 0x7E72, 0x7E72, 0x30E1, 0x7E73, 0x7E73, 0x15AE, 0x7E74, 0x7E74, 0x30E2, - 0x7E75, 0x7E75, 0x30DB, 0x7E76, 0x7E76, 0x30DA, 0x7E77, 0x7E77, 0x30DE, - 0x7E78, 0x7E78, 0x30DC, 0x7E79, 0x7E79, 0x15AB, 0x7E7A, 0x7E7A, 0x30E0, - 0x7E7B, 0x7E7B, 0x3214, 0x7E7C, 0x7E7C, 0x1631, 0x7E7D, 0x7E7D, 0x1630, - 0x7E7E, 0x7E7E, 0x3215, 0x7E7F, 0x7E7F, 0x3E51, 0x7E80, 0x7E80, 0x3217, - 0x7E81, 0x7E81, 0x3216, 0x7E82, 0x7E82, 0x1632, 0x7E86, 0x7E86, 0x32F0, - 0x7E87, 0x7E88, 0x32ED, 0x7E8A, 0x7E8A, 0x32EC, 0x7E8B, 0x7E8B, 0x32EF, - 0x7E8C, 0x7E8C, 0x1683, 0x7E8D, 0x7E8D, 0x32F1, 0x7E8E, 0x7E8E, 0x3EC9, - 0x7E8F, 0x7E8F, 0x1682, 0x7E91, 0x7E91, 0x33A2, 0x7E92, 0x7E92, 0x469E, - 0x7E93, 0x7E93, 0x1703, 0x7E94, 0x7E94, 0x1705, 0x7E95, 0x7E95, 0x342C, - 0x7E96, 0x7E96, 0x1704, 0x7E97, 0x7E97, 0x3494, 0x7E98, 0x7E98, 0x34DA, - 0x7E99, 0x7E99, 0x34DC, 0x7E9A, 0x7E9A, 0x34D9, 0x7E9B, 0x7E9B, 0x34DB, - 0x7E9C, 0x7E9C, 0x1759, 0x7E9F, 0x7E9F, 0x48BB, 0x7EA4, 0x7EA4, 0x455B, - 0x7EAC, 0x7EAC, 0x455C, 0x7EBA, 0x7EBA, 0x455D, 0x7EC7, 0x7EC7, 0x455E, - 0x7ECF, 0x7ECF, 0x455F, 0x7EDF, 0x7EDF, 0x4560, 0x7F06, 0x7F06, 0x4561, - 0x7F36, 0x7F36, 0x03F9, 0x7F37, 0x7F37, 0x4562, 0x7F38, 0x7F38, 0x07D4, - 0x7F39, 0x7F39, 0x1D1F, 0x7F3A, 0x7F3A, 0x0979, 0x7F3D, 0x7F3D, 0x0B61, - 0x7F3E, 0x7F3F, 0x2271, 0x7F40, 0x7F41, 0x3780, 0x7F43, 0x7F43, 0x2C26, - 0x7F44, 0x7F44, 0x1446, 0x7F45, 0x7F45, 0x2DFF, 0x7F47, 0x7F47, 0x3782, - 0x7F48, 0x7F48, 0x1513, 0x7F49, 0x7F49, 0x3E69, 0x7F4A, 0x7F4A, 0x30E5, - 0x7F4B, 0x7F4B, 0x30E4, 0x7F4C, 0x7F4C, 0x1633, 0x7F4D, 0x7F4D, 0x32F2, - 0x7F4E, 0x7F4E, 0x3B4F, 0x7F4F, 0x7F4F, 0x33A3, 0x7F50, 0x7F50, 0x1726, - 0x7F51, 0x7F51, 0x1812, 0x7F52, 0x7F52, 0x44F6, 0x7F53, 0x7F53, 0x44F9, - 0x7F54, 0x7F54, 0x0668, 0x7F55, 0x7F55, 0x04FC, 0x7F58, 0x7F58, 0x1BC3, - 0x7F5B, 0x7F5B, 0x1DAD, 0x7F5C, 0x7F5C, 0x1DA8, 0x7F5D, 0x7F5D, 0x1DAC, - 0x7F5E, 0x7F5E, 0x1DAA, 0x7F5F, 0x7F5F, 0x097A, 0x7F60, 0x7F60, 0x1DAB, - 0x7F61, 0x7F61, 0x1DA9, 0x7F63, 0x7F63, 0x1FF3, 0x7F65, 0x7F66, 0x2273, - 0x7F67, 0x7F68, 0x2511, 0x7F69, 0x7F6A, 0x0EC5, 0x7F6B, 0x7F6B, 0x2510, - 0x7F6C, 0x7F6C, 0x2513, 0x7F6D, 0x7F6D, 0x250F, 0x7F6E, 0x7F6E, 0x0EC4, - 0x7F70, 0x7F70, 0x106E, 0x7F71, 0x7F71, 0x4007, 0x7F72, 0x7F72, 0x0EC7, - 0x7F73, 0x7F73, 0x2796, 0x7F75, 0x7F75, 0x11E5, 0x7F76, 0x7F76, 0x29C2, - 0x7F77, 0x7F77, 0x11E6, 0x7F78, 0x7F78, 0x3F7B, 0x7F79, 0x7F79, 0x1329, - 0x7F7A, 0x7F7A, 0x2C29, 0x7F7B, 0x7F7C, 0x2C27, 0x7F7D, 0x7F7D, 0x2E02, - 0x7F7E, 0x7F7E, 0x2E01, 0x7F7F, 0x7F7F, 0x2E00, 0x7F83, 0x7F83, 0x30E6, - 0x7F85, 0x7F85, 0x15AF, 0x7F86, 0x7F86, 0x30E7, 0x7F87, 0x7F87, 0x33A4, - 0x7F88, 0x7F88, 0x1727, 0x7F89, 0x7F89, 0x3495, 0x7F8A, 0x7F8A, 0x03FA, - 0x7F8B, 0x7F8B, 0x066A, 0x7F8C, 0x7F8C, 0x0669, 0x7F8D, 0x7F8D, 0x1BC5, - 0x7F8E, 0x7F8E, 0x07D5, 0x7F8F, 0x7F8F, 0x421C, 0x7F91, 0x7F91, 0x1BC4, - 0x7F92, 0x7F92, 0x1DAF, 0x7F93, 0x7F93, 0x43DB, 0x7F94, 0x7F94, 0x097B, - 0x7F95, 0x7F95, 0x1FF4, 0x7F96, 0x7F96, 0x1DAE, 0x7F97, 0x7F97, 0x3786, - 0x7F9A, 0x7F9A, 0x0B63, 0x7F9B, 0x7F9B, 0x1FF7, 0x7F9C, 0x7F9D, 0x1FF5, - 0x7F9E, 0x7F9E, 0x0B62, 0x7FA0, 0x7FA1, 0x2276, 0x7FA2, 0x7FA2, 0x2275, - 0x7FA3, 0x7FA3, 0x3788, 0x7FA4, 0x7FA4, 0x0ECA, 0x7FA5, 0x7FA5, 0x2515, - 0x7FA6, 0x7FA6, 0x2514, 0x7FA7, 0x7FA7, 0x2516, 0x7FA8, 0x7FA8, 0x0EC9, - 0x7FA9, 0x7FA9, 0x0EC8, 0x7FAC, 0x7FAC, 0x29C3, 0x7FAD, 0x7FAD, 0x29C5, - 0x7FAE, 0x7FAE, 0x43DC, 0x7FAF, 0x7FAF, 0x11E7, 0x7FB0, 0x7FB0, 0x29C4, - 0x7FB1, 0x7FB1, 0x2C2A, 0x7FB2, 0x7FB2, 0x132A, 0x7FB3, 0x7FB3, 0x2F8E, - 0x7FB4, 0x7FB4, 0x4739, 0x7FB5, 0x7FB5, 0x2F8D, 0x7FB6, 0x7FB6, 0x15B0, - 0x7FB7, 0x7FB7, 0x30E8, 0x7FB8, 0x7FB8, 0x15B2, 0x7FB9, 0x7FB9, 0x15B1, - 0x7FBA, 0x7FBA, 0x3218, 0x7FBB, 0x7FBB, 0x32F3, 0x7FBC, 0x7FBC, 0x1684, - 0x7FBD, 0x7FBD, 0x03FB, 0x7FBE, 0x7FBE, 0x1BC6, 0x7FBF, 0x7FBF, 0x07D6, - 0x7FC0, 0x7FC0, 0x1DB2, 0x7FC1, 0x7FC1, 0x097D, 0x7FC2, 0x7FC2, 0x1DB1, - 0x7FC3, 0x7FC3, 0x1DB0, 0x7FC5, 0x7FC5, 0x097C, 0x7FC7, 0x7FC7, 0x1FFD, - 0x7FC9, 0x7FC9, 0x1FFF, 0x7FCA, 0x7FCB, 0x1FF8, 0x7FCC, 0x7FCC, 0x0B64, - 0x7FCD, 0x7FCD, 0x1FFA, 0x7FCE, 0x7FCE, 0x0B65, 0x7FCF, 0x7FCF, 0x1FFE, - 0x7FD0, 0x7FD1, 0x1FFB, 0x7FD2, 0x7FD2, 0x0B66, 0x7FD4, 0x7FD5, 0x0D1C, - 0x7FD7, 0x7FD7, 0x2278, 0x7FDB, 0x7FDC, 0x2517, 0x7FDD, 0x7FDD, 0x3B5E, - 0x7FDE, 0x7FDE, 0x279A, 0x7FDF, 0x7FDF, 0x1071, 0x7FE0, 0x7FE1, 0x106F, - 0x7FE2, 0x7FE3, 0x2797, 0x7FE5, 0x7FE5, 0x2799, 0x7FE6, 0x7FE6, 0x29CA, - 0x7FE7, 0x7FE7, 0x46E9, 0x7FE8, 0x7FE8, 0x29CB, 0x7FE9, 0x7FE9, 0x11E8, - 0x7FEA, 0x7FEA, 0x29C8, 0x7FEB, 0x7FEB, 0x29C7, 0x7FEC, 0x7FEC, 0x29C9, - 0x7FED, 0x7FED, 0x29C6, 0x7FEE, 0x7FEE, 0x132D, 0x7FEF, 0x7FEF, 0x2C2B, - 0x7FF0, 0x7FF1, 0x132B, 0x7FF2, 0x7FF2, 0x2E04, 0x7FF3, 0x7FF3, 0x1447, - 0x7FF4, 0x7FF4, 0x2E03, 0x7FF5, 0x7FF5, 0x2EFF, 0x7FF7, 0x7FF8, 0x2F8F, - 0x7FF9, 0x7FF9, 0x1514, 0x7FFA, 0x7FFA, 0x378E, 0x7FFB, 0x7FFB, 0x1515, - 0x7FFC, 0x7FFC, 0x1448, 0x7FFD, 0x7FFE, 0x30E9, 0x7FFF, 0x7FFF, 0x3219, - 0x8000, 0x8000, 0x1634, 0x8001, 0x8001, 0x03FC, 0x8002, 0x8002, 0x44FD, - 0x8003, 0x8003, 0x03FD, 0x8004, 0x8004, 0x097F, 0x8005, 0x8005, 0x066B, - 0x8006, 0x8006, 0x097E, 0x8007, 0x8007, 0x1BC7, 0x8008, 0x8008, 0x3791, - 0x800B, 0x800B, 0x0D1E, 0x800C, 0x800C, 0x03FE, 0x800D, 0x800D, 0x07D8, - 0x800E, 0x800F, 0x1BC8, 0x8010, 0x8010, 0x07D7, 0x8011, 0x8011, 0x07D9, - 0x8012, 0x8012, 0x03FF, 0x8014, 0x8014, 0x1BCA, 0x8015, 0x8015, 0x0981, - 0x8016, 0x8016, 0x1DB3, 0x8017, 0x8017, 0x0983, 0x8018, 0x8018, 0x0980, - 0x8019, 0x8019, 0x0982, 0x801B, 0x801B, 0x2002, 0x801C, 0x801C, 0x0B67, - 0x801D, 0x801D, 0x3792, 0x801E, 0x801E, 0x2001, 0x801F, 0x801F, 0x2000, - 0x8020, 0x8020, 0x473C, 0x8021, 0x8021, 0x2519, 0x8024, 0x8024, 0x279B, - 0x8025, 0x8025, 0x473D, 0x8026, 0x8026, 0x11E9, 0x8028, 0x8028, 0x132E, - 0x8029, 0x8029, 0x2C2D, 0x802A, 0x802A, 0x2C2C, 0x802C, 0x802C, 0x2E05, - 0x802E, 0x802E, 0x473E, 0x802F, 0x802F, 0x3794, 0x8030, 0x8030, 0x32F4, - 0x8031, 0x8031, 0x473F, 0x8033, 0x8033, 0x0400, 0x8034, 0x8034, 0x18D8, - 0x8035, 0x8035, 0x1A27, 0x8036, 0x8036, 0x07DA, 0x8037, 0x8037, 0x1BCB, - 0x8039, 0x8039, 0x1DB5, 0x803B, 0x803C, 0x3797, 0x803D, 0x803D, 0x0984, - 0x803E, 0x803E, 0x1DB4, 0x803F, 0x803F, 0x0985, 0x8043, 0x8043, 0x2004, - 0x8046, 0x8046, 0x0B69, 0x8047, 0x8047, 0x2003, 0x8048, 0x8048, 0x2005, - 0x804A, 0x804A, 0x0B68, 0x804F, 0x8050, 0x227A, 0x8051, 0x8051, 0x2279, - 0x8052, 0x8052, 0x0D1F, 0x8054, 0x8054, 0x4740, 0x8056, 0x8056, 0x0ECB, - 0x8058, 0x8058, 0x0ECC, 0x805A, 0x805A, 0x1073, 0x805B, 0x805B, 0x3FE5, - 0x805C, 0x805C, 0x279D, 0x805D, 0x805D, 0x279C, 0x805E, 0x805E, 0x1072, - 0x8061, 0x8061, 0x3799, 0x8062, 0x8062, 0x3FE3, 0x8063, 0x8063, 0x3FDC, - 0x8064, 0x8064, 0x29CC, 0x8066, 0x8066, 0x3FDB, 0x8067, 0x8067, 0x29CD, - 0x806C, 0x806C, 0x2C2E, 0x806F, 0x806F, 0x144C, 0x8070, 0x8070, 0x144B, - 0x8071, 0x8072, 0x1449, 0x8073, 0x8073, 0x144D, 0x8075, 0x8075, 0x2F91, - 0x8076, 0x8076, 0x1517, 0x8077, 0x8077, 0x1516, 0x8078, 0x8078, 0x30EB, - 0x8079, 0x8079, 0x321A, 0x807D, 0x807D, 0x16D3, 0x807E, 0x807E, 0x16D2, - 0x807F, 0x807F, 0x0401, 0x8080, 0x8080, 0x44FE, 0x8082, 0x8082, 0x1CEC, - 0x8084, 0x8084, 0x0ECE, 0x8085, 0x8085, 0x0D20, 0x8086, 0x8086, 0x0ECD, - 0x8087, 0x8087, 0x1074, 0x8089, 0x8089, 0x0402, 0x808A, 0x808A, 0x17B3, - 0x808B, 0x808C, 0x0403, 0x808F, 0x808F, 0x1A28, 0x8090, 0x8090, 0x18DB, - 0x8092, 0x8092, 0x18DC, 0x8093, 0x8093, 0x04FE, 0x8095, 0x8095, 0x18D9, - 0x8096, 0x8096, 0x04FD, 0x8098, 0x8098, 0x0500, 0x8099, 0x8099, 0x18DA, - 0x809A, 0x809A, 0x0502, 0x809B, 0x809B, 0x0501, 0x809C, 0x809C, 0x18DD, - 0x809D, 0x809D, 0x04FF, 0x809F, 0x809F, 0x4576, 0x80A1, 0x80A1, 0x0670, - 0x80A2, 0x80A2, 0x066E, 0x80A3, 0x80A3, 0x1A2A, 0x80A5, 0x80A5, 0x066D, - 0x80A7, 0x80A7, 0x37A0, 0x80A9, 0x80A9, 0x0672, 0x80AA, 0x80AA, 0x0674, - 0x80AB, 0x80AB, 0x0671, 0x80AD, 0x80AD, 0x1A2D, 0x80AE, 0x80AE, 0x1A29, - 0x80AF, 0x80AF, 0x0675, 0x80B1, 0x80B1, 0x066F, 0x80B2, 0x80B2, 0x0503, - 0x80B4, 0x80B4, 0x0673, 0x80B5, 0x80B5, 0x1A2C, 0x80B6, 0x80B6, 0x3EAE, - 0x80B7, 0x80B7, 0x4743, 0x80B8, 0x80B8, 0x1A2B, 0x80BA, 0x80BA, 0x066C, - 0x80BC, 0x80BC, 0x4572, 0x80BD, 0x80BD, 0x3E7B, 0x80C2, 0x80C2, 0x1BD1, - 0x80C3, 0x80C4, 0x07DE, 0x80C5, 0x80C5, 0x1BD3, 0x80C6, 0x80C6, 0x3B74, - 0x80C7, 0x80C7, 0x1BCD, 0x80C8, 0x80C8, 0x1BD0, 0x80C9, 0x80C9, 0x1BD9, - 0x80CA, 0x80CA, 0x1BD7, 0x80CC, 0x80CC, 0x07E0, 0x80CD, 0x80CD, 0x1BDD, - 0x80CE, 0x80CE, 0x07E3, 0x80CF, 0x80CF, 0x1BDA, 0x80D0, 0x80D0, 0x1BD2, - 0x80D1, 0x80D1, 0x1BCF, 0x80D4, 0x80D4, 0x227D, 0x80D5, 0x80D5, 0x1BD8, - 0x80D6, 0x80D6, 0x07DB, 0x80D7, 0x80D7, 0x1BDB, 0x80D8, 0x80D8, 0x1BCC, - 0x80D9, 0x80D9, 0x1BD5, 0x80DA, 0x80DA, 0x07DD, 0x80DB, 0x80DB, 0x07E2, - 0x80DC, 0x80DC, 0x1BD6, 0x80DD, 0x80DD, 0x07E6, 0x80DE, 0x80DE, 0x07E4, - 0x80E0, 0x80E0, 0x1BCE, 0x80E1, 0x80E1, 0x07E1, 0x80E3, 0x80E3, 0x1BD4, - 0x80E4, 0x80E4, 0x07E5, 0x80E5, 0x80E5, 0x07DC, 0x80E6, 0x80E6, 0x1BDC, - 0x80E9, 0x80E9, 0x4744, 0x80EC, 0x80EC, 0x45E9, 0x80ED, 0x80ED, 0x098A, - 0x80EF, 0x80EF, 0x0993, 0x80F0, 0x80F0, 0x0988, 0x80F1, 0x80F1, 0x0986, - 0x80F2, 0x80F2, 0x1DB7, 0x80F3, 0x80F3, 0x098E, 0x80F4, 0x80F4, 0x098B, - 0x80F5, 0x80F5, 0x1DB9, 0x80F6, 0x80F6, 0x4574, 0x80F8, 0x80F8, 0x098D, - 0x80F9, 0x80F9, 0x1DB8, 0x80FA, 0x80FA, 0x1DB6, 0x80FB, 0x80FB, 0x1DBB, - 0x80FC, 0x80FC, 0x0992, 0x80FD, 0x80FD, 0x0990, 0x80FE, 0x80FE, 0x227C, - 0x8100, 0x8100, 0x1DBC, 0x8101, 0x8101, 0x1DBA, 0x8102, 0x8102, 0x0987, - 0x8103, 0x8103, 0x3FE7, 0x8105, 0x8105, 0x0989, 0x8106, 0x8106, 0x098C, - 0x8107, 0x8107, 0x37A2, 0x8108, 0x8108, 0x098F, 0x8109, 0x8109, 0x3B75, - 0x810A, 0x810A, 0x0991, 0x810C, 0x810C, 0x4746, 0x810E, 0x810E, 0x4747, - 0x8112, 0x8112, 0x4748, 0x8114, 0x8114, 0x4749, 0x8115, 0x8115, 0x200F, - 0x8116, 0x8116, 0x0B6B, 0x8117, 0x8117, 0x3E6D, 0x8118, 0x8118, 0x2006, - 0x8119, 0x8119, 0x2008, 0x811A, 0x811A, 0x37A3, 0x811B, 0x811B, 0x2009, - 0x811D, 0x811D, 0x2011, 0x811E, 0x811E, 0x200D, 0x811F, 0x811F, 0x200B, - 0x8121, 0x8121, 0x200E, 0x8122, 0x8122, 0x2012, 0x8123, 0x8123, 0x0B6C, - 0x8124, 0x8124, 0x0B70, 0x8125, 0x8125, 0x2007, 0x8127, 0x8127, 0x2010, - 0x8129, 0x8129, 0x0B6E, 0x812A, 0x812A, 0x3A39, 0x812B, 0x812B, 0x0B6D, - 0x812C, 0x812C, 0x200C, 0x812D, 0x812D, 0x200A, 0x812F, 0x812F, 0x0B6A, - 0x8130, 0x8130, 0x0B6F, 0x8132, 0x8132, 0x3E79, 0x8134, 0x8134, 0x45EC, - 0x8137, 0x8137, 0x3B72, 0x8139, 0x8139, 0x0D26, 0x813A, 0x813A, 0x2285, - 0x813D, 0x813D, 0x2283, 0x813E, 0x813E, 0x0D28, 0x8142, 0x8142, 0x3B76, - 0x8143, 0x8143, 0x227E, 0x8144, 0x8144, 0x2527, 0x8146, 0x8146, 0x0D27, - 0x8147, 0x8147, 0x2282, 0x8148, 0x8148, 0x3E76, 0x814A, 0x814A, 0x227F, - 0x814B, 0x814B, 0x0D23, 0x814C, 0x814C, 0x0D29, 0x814D, 0x814D, 0x2284, - 0x814E, 0x814E, 0x0D25, 0x814F, 0x814F, 0x2281, 0x8150, 0x8150, 0x1075, - 0x8151, 0x8151, 0x0D24, 0x8152, 0x8152, 0x2280, 0x8153, 0x8153, 0x0D2A, - 0x8154, 0x8154, 0x0D22, 0x8155, 0x8155, 0x0D21, 0x8156, 0x8156, 0x474C, - 0x8159, 0x815A, 0x474D, 0x815B, 0x815B, 0x251F, 0x815C, 0x815C, 0x251D, - 0x815E, 0x815E, 0x2523, 0x8160, 0x8160, 0x251B, 0x8161, 0x8161, 0x2528, - 0x8162, 0x8162, 0x2520, 0x8164, 0x8164, 0x251A, 0x8165, 0x8165, 0x0ED2, - 0x8166, 0x8166, 0x0ED8, 0x8167, 0x8167, 0x2525, 0x8169, 0x8169, 0x251E, - 0x816B, 0x816B, 0x0ED5, 0x816D, 0x816D, 0x43C4, 0x816E, 0x816E, 0x0ED3, - 0x816F, 0x816F, 0x2526, 0x8170, 0x8170, 0x0ED0, 0x8171, 0x8171, 0x0ECF, - 0x8172, 0x8172, 0x2521, 0x8173, 0x8173, 0x0ED4, 0x8174, 0x8174, 0x0D2B, - 0x8176, 0x8176, 0x2524, 0x8177, 0x8177, 0x251C, 0x8178, 0x8178, 0x0ED1, - 0x8179, 0x817A, 0x0ED6, 0x817C, 0x817C, 0x4750, 0x817F, 0x817F, 0x107A, - 0x8180, 0x8180, 0x1076, 0x8182, 0x8182, 0x107B, 0x8183, 0x8183, 0x27A0, - 0x8184, 0x8184, 0x43C5, 0x8186, 0x8186, 0x279F, 0x8187, 0x8187, 0x27A1, - 0x8188, 0x8188, 0x1078, 0x8189, 0x8189, 0x279E, 0x818A, 0x818A, 0x1079, - 0x818B, 0x818B, 0x27A4, 0x818C, 0x818C, 0x27A3, 0x818D, 0x818D, 0x27A2, - 0x818F, 0x818F, 0x1077, 0x8193, 0x8193, 0x43C6, 0x8195, 0x8195, 0x29D1, - 0x8197, 0x8197, 0x29D4, 0x8198, 0x8198, 0x11EF, 0x8199, 0x8199, 0x29D3, - 0x819A, 0x819A, 0x11EE, 0x819B, 0x819D, 0x11EA, 0x819E, 0x819E, 0x29D0, - 0x819F, 0x819F, 0x29CF, 0x81A0, 0x81A0, 0x11ED, 0x81A2, 0x81A2, 0x29D2, - 0x81A3, 0x81A3, 0x29CE, 0x81A5, 0x81A5, 0x4753, 0x81A6, 0x81A6, 0x2C30, - 0x81A7, 0x81A7, 0x2C3A, 0x81A8, 0x81A8, 0x1331, 0x81A9, 0x81A9, 0x1330, - 0x81AA, 0x81AA, 0x4364, 0x81AB, 0x81AB, 0x2C34, 0x81AC, 0x81AC, 0x2C36, - 0x81AE, 0x81AE, 0x2C31, 0x81B0, 0x81B0, 0x2C35, 0x81B1, 0x81B1, 0x2C2F, - 0x81B2, 0x81B2, 0x2C38, 0x81B3, 0x81B3, 0x132F, 0x81B4, 0x81B4, 0x2C37, - 0x81B5, 0x81B5, 0x2C33, 0x81B6, 0x81B6, 0x3EB2, 0x81B7, 0x81B7, 0x2C39, - 0x81B9, 0x81B9, 0x2C32, 0x81BA, 0x81BA, 0x1450, 0x81BB, 0x81BB, 0x2E06, - 0x81BC, 0x81BC, 0x2E0C, 0x81BD, 0x81BD, 0x1454, 0x81BE, 0x81BE, 0x1456, - 0x81BF, 0x81BF, 0x1453, 0x81C0, 0x81C0, 0x1452, 0x81C1, 0x81C1, 0x4755, - 0x81C2, 0x81C2, 0x1451, 0x81C3, 0x81C3, 0x144F, 0x81C4, 0x81C4, 0x2E07, - 0x81C5, 0x81C5, 0x2E0A, 0x81C6, 0x81C6, 0x144E, 0x81C7, 0x81C7, 0x2E0B, - 0x81C8, 0x81C8, 0x3FEE, 0x81C9, 0x81C9, 0x1455, 0x81CA, 0x81CA, 0x2E09, - 0x81CC, 0x81CC, 0x2E08, 0x81CD, 0x81CD, 0x1518, 0x81CF, 0x81CF, 0x1519, - 0x81D0, 0x81D0, 0x2F94, 0x81D1, 0x81D2, 0x2F92, 0x81D5, 0x81D5, 0x30ED, - 0x81D7, 0x81D7, 0x30EC, 0x81D8, 0x81D8, 0x15B3, 0x81D9, 0x81D9, 0x321C, - 0x81DA, 0x81DA, 0x1635, 0x81DB, 0x81DB, 0x321B, 0x81DD, 0x81DD, 0x32F5, - 0x81DE, 0x81DE, 0x33A5, 0x81DF, 0x81DF, 0x16D4, 0x81E0, 0x81E1, 0x34DD, - 0x81E2, 0x81E2, 0x1706, 0x81E3, 0x81E3, 0x0405, 0x81E4, 0x81E4, 0x4756, - 0x81E5, 0x81E5, 0x0676, 0x81E6, 0x81E6, 0x2286, 0x81E7, 0x81E7, 0x107C, - 0x81E8, 0x81E8, 0x1457, 0x81E9, 0x81E9, 0x2E0D, 0x81EA, 0x81EA, 0x0406, - 0x81EC, 0x81EC, 0x0995, 0x81ED, 0x81ED, 0x0994, 0x81EE, 0x81EE, 0x2287, - 0x81EF, 0x81EF, 0x42D1, 0x81F2, 0x81F2, 0x2C3B, 0x81F3, 0x81F3, 0x0407, - 0x81F4, 0x81F4, 0x07E7, 0x81F6, 0x81F6, 0x3D61, 0x81F7, 0x81F9, 0x2288, - 0x81FA, 0x81FA, 0x107D, 0x81FB, 0x81FB, 0x1332, 0x81FC, 0x81FC, 0x0408, - 0x81FE, 0x81FE, 0x0677, 0x81FF, 0x81FF, 0x1BDE, 0x8200, 0x8200, 0x0996, - 0x8201, 0x8201, 0x1DBD, 0x8202, 0x8202, 0x0B71, 0x8204, 0x8204, 0x228B, - 0x8205, 0x8205, 0x0ED9, 0x8207, 0x8207, 0x107E, 0x8208, 0x8208, 0x1333, - 0x8209, 0x8209, 0x1458, 0x820A, 0x820A, 0x151A, 0x820B, 0x820B, 0x30EE, - 0x820C, 0x820C, 0x0409, 0x820D, 0x820D, 0x0678, 0x8210, 0x8210, 0x0997, - 0x8211, 0x8211, 0x2013, 0x8212, 0x8212, 0x0D2C, 0x8214, 0x8214, 0x107F, - 0x8215, 0x8215, 0x27A5, 0x8216, 0x8216, 0x29D5, 0x8218, 0x8218, 0x37AA, - 0x821A, 0x821A, 0x3FE1, 0x821B, 0x821B, 0x040A, 0x821C, 0x821C, 0x0D2D, - 0x821D, 0x821D, 0x2529, 0x821E, 0x821E, 0x1080, 0x821F, 0x821F, 0x040B, - 0x8220, 0x8220, 0x1A2E, 0x8221, 0x8221, 0x1BDF, 0x8222, 0x8222, 0x07E8, - 0x8225, 0x8225, 0x1DBF, 0x8226, 0x8226, 0x420D, 0x8228, 0x8228, 0x099A, - 0x8229, 0x8229, 0x37B0, 0x822A, 0x822B, 0x0998, 0x822C, 0x822C, 0x099B, - 0x822D, 0x822D, 0x3ED0, 0x822F, 0x822F, 0x1DBE, 0x8232, 0x8232, 0x2018, - 0x8233, 0x8233, 0x2015, 0x8234, 0x8234, 0x2017, 0x8235, 0x8235, 0x0B72, - 0x8236, 0x8236, 0x0B74, 0x8237, 0x8237, 0x0B73, 0x8238, 0x8238, 0x2014, - 0x8239, 0x8239, 0x0B75, 0x823A, 0x823A, 0x2016, 0x823C, 0x823D, 0x228C, - 0x823E, 0x823E, 0x4582, 0x823F, 0x823F, 0x228E, 0x8240, 0x8240, 0x252C, - 0x8242, 0x8242, 0x252D, 0x8244, 0x8244, 0x252B, 0x8245, 0x8245, 0x252E, - 0x8247, 0x8247, 0x0EDA, 0x8249, 0x8249, 0x252A, 0x824B, 0x824B, 0x1081, - 0x824E, 0x824E, 0x29DA, 0x824F, 0x824F, 0x29D6, 0x8250, 0x8250, 0x29D9, - 0x8251, 0x8251, 0x29DB, 0x8252, 0x8252, 0x29D8, 0x8253, 0x8253, 0x29D7, - 0x8254, 0x8254, 0x4757, 0x8255, 0x8257, 0x2C3C, 0x8258, 0x8259, 0x1334, - 0x825A, 0x825A, 0x2E0F, 0x825B, 0x825B, 0x2E0E, 0x825C, 0x825C, 0x2E10, - 0x825E, 0x825E, 0x2F96, 0x825F, 0x825F, 0x2F95, 0x8261, 0x8261, 0x30F0, - 0x8262, 0x8262, 0x3B7A, 0x8263, 0x8263, 0x30F1, 0x8264, 0x8264, 0x30EF, - 0x8265, 0x8265, 0x3B7B, 0x8266, 0x8266, 0x1636, 0x8268, 0x8269, 0x321D, - 0x826B, 0x826B, 0x33A6, 0x826C, 0x826C, 0x342D, 0x826D, 0x826D, 0x3496, - 0x826E, 0x826E, 0x040C, 0x826F, 0x826F, 0x0504, 0x8271, 0x8271, 0x1459, - 0x8272, 0x8272, 0x040D, 0x8274, 0x8274, 0x2019, 0x8275, 0x8275, 0x228F, - 0x8276, 0x8276, 0x4759, 0x8277, 0x8277, 0x172E, 0x8278, 0x8278, 0x1813, - 0x8279, 0x8279, 0x4722, 0x827A, 0x827A, 0x4563, 0x827B, 0x827B, 0x37C8, - 0x827C, 0x827C, 0x1814, 0x827D, 0x827D, 0x1816, 0x827E, 0x827E, 0x040E, - 0x827F, 0x827F, 0x1817, 0x8280, 0x8280, 0x1815, 0x8283, 0x8284, 0x18E5, - 0x8285, 0x8285, 0x18E0, 0x8287, 0x8287, 0x4132, 0x828A, 0x828A, 0x18E4, - 0x828B, 0x828B, 0x0506, 0x828D, 0x828D, 0x0507, 0x828E, 0x828E, 0x18E1, - 0x828F, 0x828F, 0x18DF, 0x8290, 0x8290, 0x18DE, 0x8291, 0x8291, 0x18E2, - 0x8292, 0x8292, 0x0505, 0x8293, 0x8293, 0x18E3, 0x8294, 0x8294, 0x1BE0, - 0x8298, 0x8298, 0x1A33, 0x8299, 0x8299, 0x067B, 0x829A, 0x829A, 0x1A32, - 0x829B, 0x829B, 0x1A34, 0x829D, 0x829D, 0x067A, 0x829E, 0x829E, 0x1A39, - 0x829F, 0x829F, 0x067E, 0x82A0, 0x82A0, 0x1A2F, 0x82A1, 0x82A1, 0x1A3D, - 0x82A2, 0x82A2, 0x1A43, 0x82A3, 0x82A3, 0x0685, 0x82A4, 0x82A4, 0x1A40, - 0x82A5, 0x82A5, 0x0682, 0x82A6, 0x82A6, 0x3D73, 0x82A7, 0x82A7, 0x1A36, - 0x82A8, 0x82A8, 0x1A3C, 0x82A9, 0x82A9, 0x1A3E, 0x82AA, 0x82AA, 0x37BC, - 0x82AB, 0x82AB, 0x1A31, 0x82AC, 0x82AC, 0x0681, 0x82AD, 0x82AD, 0x067C, - 0x82AE, 0x82AE, 0x1A37, 0x82AF, 0x82AF, 0x0683, 0x82B0, 0x82B0, 0x0686, - 0x82B1, 0x82B1, 0x0680, 0x82B3, 0x82B3, 0x0679, 0x82B4, 0x82B4, 0x1A3B, - 0x82B5, 0x82B5, 0x1A35, 0x82B6, 0x82B6, 0x1A42, 0x82B7, 0x82B7, 0x0688, - 0x82B8, 0x82B8, 0x0684, 0x82B9, 0x82B9, 0x067F, 0x82BA, 0x82BA, 0x1A3A, - 0x82BB, 0x82BB, 0x099C, 0x82BC, 0x82BC, 0x1A38, 0x82BD, 0x82BD, 0x067D, - 0x82BE, 0x82BE, 0x0687, 0x82C0, 0x82C0, 0x1A30, 0x82C2, 0x82C2, 0x1A3F, - 0x82C3, 0x82C3, 0x1A41, 0x82C4, 0x82C4, 0x45E3, 0x82CA, 0x82CA, 0x475A, - 0x82CF, 0x82CF, 0x4564, 0x82D0, 0x82D0, 0x37C1, 0x82D1, 0x82D1, 0x07F9, - 0x82D2, 0x82D2, 0x07F3, 0x82D3, 0x82D3, 0x07FB, 0x82D4, 0x82D4, 0x07F8, - 0x82D5, 0x82D5, 0x1BE7, 0x82D6, 0x82D6, 0x1BEA, 0x82D7, 0x82D7, 0x07F4, - 0x82D8, 0x82D8, 0x475B, 0x82D9, 0x82D9, 0x1BE1, 0x82DB, 0x82DB, 0x07ED, - 0x82DC, 0x82DC, 0x07F7, 0x82DE, 0x82DE, 0x07FA, 0x82DF, 0x82DF, 0x07FC, - 0x82E0, 0x82E0, 0x1BF6, 0x82E1, 0x82E1, 0x1BED, 0x82E2, 0x82E2, 0x37C9, - 0x82E3, 0x82E3, 0x07EC, 0x82E4, 0x82E4, 0x1BF5, 0x82E5, 0x82E5, 0x07F0, - 0x82E6, 0x82E6, 0x07EE, 0x82E7, 0x82E7, 0x07E9, 0x82E8, 0x82E8, 0x1BE5, - 0x82EA, 0x82EA, 0x1BF4, 0x82EB, 0x82EB, 0x1BE9, 0x82EC, 0x82EC, 0x1BEC, - 0x82ED, 0x82ED, 0x1BF9, 0x82EE, 0x82EE, 0x4018, 0x82EF, 0x82EF, 0x07FD, - 0x82F0, 0x82F0, 0x1BF3, 0x82F1, 0x82F1, 0x07F5, 0x82F2, 0x82F2, 0x1BEE, - 0x82F3, 0x82F3, 0x1BF8, 0x82F4, 0x82F4, 0x1BEB, 0x82F5, 0x82F5, 0x1BEF, - 0x82F6, 0x82F6, 0x1BF2, 0x82F7, 0x82F7, 0x3E77, 0x82F9, 0x82F9, 0x1BE3, - 0x82FA, 0x82FA, 0x1BF7, 0x82FB, 0x82FB, 0x1BF1, 0x82FC, 0x82FC, 0x412D, - 0x82FD, 0x82FD, 0x3D92, 0x82FE, 0x82FE, 0x1BE2, 0x82FF, 0x82FF, 0x43DE, - 0x8300, 0x8300, 0x1BE6, 0x8301, 0x8301, 0x07F6, 0x8302, 0x8302, 0x07F1, - 0x8303, 0x8303, 0x07EA, 0x8304, 0x8304, 0x07EF, 0x8305, 0x8305, 0x07EB, - 0x8306, 0x8306, 0x07FE, 0x8307, 0x8307, 0x1BE4, 0x8308, 0x8308, 0x1DD0, - 0x8309, 0x8309, 0x07F2, 0x830B, 0x830B, 0x3EB6, 0x830C, 0x830C, 0x1BF0, - 0x830D, 0x830D, 0x1A7D, 0x8316, 0x8316, 0x1DD3, 0x8317, 0x8317, 0x09AA, - 0x8318, 0x8318, 0x37CA, 0x8319, 0x8319, 0x1DC3, 0x831A, 0x831A, 0x37C2, - 0x831B, 0x831B, 0x1DCE, 0x831C, 0x831C, 0x1DCA, 0x831D, 0x831D, 0x37D1, - 0x831E, 0x831E, 0x1DDD, 0x8320, 0x8320, 0x1DD5, 0x8322, 0x8322, 0x1DCB, - 0x8324, 0x8324, 0x1DD4, 0x8325, 0x8325, 0x1DC5, 0x8326, 0x8326, 0x1DC9, - 0x8327, 0x8327, 0x1DE0, 0x8328, 0x8328, 0x09AD, 0x8329, 0x8329, 0x1DD8, - 0x832A, 0x832A, 0x1DCF, 0x832B, 0x832B, 0x099D, 0x832C, 0x832C, 0x1DDE, - 0x832D, 0x832D, 0x1DC1, 0x832F, 0x832F, 0x1DD7, 0x8331, 0x8331, 0x09AC, - 0x8332, 0x8332, 0x09A7, 0x8333, 0x8333, 0x1DC0, 0x8334, 0x8334, 0x09A5, - 0x8335, 0x8335, 0x09A4, 0x8336, 0x8336, 0x09A9, 0x8337, 0x8337, 0x1DD6, - 0x8338, 0x8338, 0x09A1, 0x8339, 0x8339, 0x09A8, 0x833A, 0x833A, 0x1BE8, - 0x833B, 0x833B, 0x2290, 0x833C, 0x833C, 0x1DD1, 0x833D, 0x833D, 0x3D2A, - 0x833F, 0x833F, 0x1DC7, 0x8340, 0x8340, 0x09AB, 0x8341, 0x8341, 0x1DC8, - 0x8342, 0x8342, 0x1DCC, 0x8343, 0x8343, 0x09AE, 0x8344, 0x8344, 0x1DC2, - 0x8345, 0x8345, 0x1DDA, 0x8347, 0x8347, 0x1DD9, 0x8348, 0x8348, 0x1DE1, - 0x8349, 0x8349, 0x09A3, 0x834A, 0x834A, 0x09A0, 0x834B, 0x834B, 0x1DDF, - 0x834C, 0x834C, 0x1DDB, 0x834D, 0x834D, 0x1DD2, 0x834E, 0x834E, 0x1DCD, - 0x834F, 0x834F, 0x09A6, 0x8350, 0x8350, 0x09A2, 0x8351, 0x8351, 0x1DC4, - 0x8352, 0x8352, 0x099E, 0x8353, 0x8353, 0x1DDC, 0x8354, 0x8354, 0x099F, - 0x8356, 0x8356, 0x1DC6, 0x8357, 0x8357, 0x475D, 0x8362, 0x8362, 0x37B6, - 0x8363, 0x8363, 0x41EB, 0x8366, 0x8366, 0x3E1E, 0x836F, 0x836F, 0x4565, - 0x8373, 0x8373, 0x201F, 0x8374, 0x8374, 0x2021, 0x8375, 0x8375, 0x2026, - 0x8376, 0x8376, 0x203A, 0x8377, 0x8377, 0x0B83, 0x8378, 0x8378, 0x0B79, - 0x837A, 0x837A, 0x201E, 0x837B, 0x837C, 0x0B84, 0x837D, 0x837D, 0x2029, - 0x837E, 0x837E, 0x2030, 0x837F, 0x837F, 0x2036, 0x8381, 0x8381, 0x2023, - 0x8383, 0x8383, 0x202A, 0x8385, 0x8385, 0x37D3, 0x8386, 0x8386, 0x0B86, - 0x8387, 0x8387, 0x2038, 0x8388, 0x8388, 0x2033, 0x8389, 0x8389, 0x0B81, - 0x838A, 0x838A, 0x0B7F, 0x838B, 0x838B, 0x202F, 0x838C, 0x838C, 0x202B, - 0x838D, 0x838D, 0x201D, 0x838E, 0x838E, 0x0B76, 0x838F, 0x838F, 0x2022, - 0x8390, 0x8390, 0x201A, 0x8391, 0x8391, 0x37EC, 0x8392, 0x8392, 0x0B7E, - 0x8393, 0x8393, 0x0B80, 0x8394, 0x8394, 0x2027, 0x8395, 0x8395, 0x2024, - 0x8396, 0x8396, 0x0B7B, 0x8397, 0x8397, 0x2034, 0x8398, 0x8398, 0x0B78, - 0x8399, 0x8399, 0x2025, 0x839A, 0x839A, 0x22B9, 0x839B, 0x839B, 0x202D, - 0x839C, 0x839C, 0x374D, 0x839D, 0x839D, 0x202C, 0x839E, 0x839E, 0x0B77, - 0x83A0, 0x83A0, 0x0B82, 0x83A2, 0x83A2, 0x0B7A, 0x83A3, 0x83A3, 0x201B, - 0x83A4, 0x83A4, 0x2020, 0x83A5, 0x83A5, 0x2031, 0x83A6, 0x83A6, 0x2037, - 0x83A7, 0x83A7, 0x0B87, 0x83A8, 0x83A8, 0x201C, 0x83A9, 0x83A9, 0x2028, - 0x83AA, 0x83AA, 0x202E, 0x83AB, 0x83AB, 0x0B7D, 0x83AC, 0x83AC, 0x37D6, - 0x83AE, 0x83AE, 0x2039, 0x83AF, 0x83AF, 0x2032, 0x83B0, 0x83B0, 0x2035, - 0x83B9, 0x83B9, 0x42A7, 0x83BD, 0x83BD, 0x0B7C, 0x83BE, 0x83BE, 0x3F59, - 0x83BF, 0x83BF, 0x22A0, 0x83C0, 0x83C0, 0x2294, 0x83C1, 0x83C1, 0x0D35, - 0x83C2, 0x83C2, 0x22B1, 0x83C3, 0x83C3, 0x22BA, 0x83C4, 0x83C4, 0x22BD, - 0x83C5, 0x83C5, 0x0D33, 0x83C6, 0x83C6, 0x229C, 0x83C7, 0x83C7, 0x22B5, - 0x83C8, 0x83C8, 0x229D, 0x83C9, 0x83C9, 0x22AB, 0x83CA, 0x83CA, 0x0D40, - 0x83CB, 0x83CB, 0x22A7, 0x83CC, 0x83CC, 0x0D3D, 0x83CD, 0x83CD, 0x4055, - 0x83CE, 0x83CE, 0x22A8, 0x83CF, 0x83CF, 0x2291, 0x83D1, 0x83D1, 0x22B6, - 0x83D3, 0x83D3, 0x37D8, 0x83D4, 0x83D4, 0x0D46, 0x83D5, 0x83D5, 0x22B3, - 0x83D6, 0x83D6, 0x22A9, 0x83D7, 0x83D7, 0x22BF, 0x83D8, 0x83D8, 0x22A4, - 0x83D9, 0x83D9, 0x254E, 0x83DB, 0x83DB, 0x22C2, 0x83DC, 0x83DC, 0x0D44, - 0x83DD, 0x83DD, 0x22A2, 0x83DE, 0x83DE, 0x22AE, 0x83DF, 0x83DF, 0x0D47, - 0x83E0, 0x83E0, 0x0D32, 0x83E1, 0x83E1, 0x22A6, 0x83E2, 0x83E2, 0x22C0, - 0x83E3, 0x83E3, 0x229F, 0x83E4, 0x83E4, 0x2298, 0x83E5, 0x83E5, 0x22A3, - 0x83E7, 0x83E7, 0x2297, 0x83E8, 0x83E8, 0x2295, 0x83E9, 0x83E9, 0x0D2E, - 0x83EA, 0x83EA, 0x22B7, 0x83EB, 0x83EB, 0x229E, 0x83EC, 0x83EC, 0x22BB, - 0x83ED, 0x83ED, 0x3D2C, 0x83EE, 0x83EE, 0x22BC, 0x83EF, 0x83EF, 0x0D36, - 0x83F0, 0x83F0, 0x0D3B, 0x83F1, 0x83F1, 0x0D37, 0x83F2, 0x83F2, 0x0D3F, - 0x83F3, 0x83F3, 0x22B2, 0x83F4, 0x83F4, 0x0D38, 0x83F5, 0x83F5, 0x22AA, - 0x83F6, 0x83F6, 0x229A, 0x83F8, 0x83F8, 0x0D30, 0x83F9, 0x83F9, 0x2292, - 0x83FA, 0x83FA, 0x22B4, 0x83FB, 0x83FB, 0x22BE, 0x83FC, 0x83FC, 0x2299, - 0x83FD, 0x83FD, 0x0D3E, 0x83FE, 0x83FE, 0x22C3, 0x83FF, 0x83FF, 0x22A5, - 0x8401, 0x8401, 0x22A1, 0x8403, 0x8403, 0x0D2F, 0x8404, 0x8404, 0x0D43, - 0x8405, 0x8405, 0x475F, 0x8406, 0x8406, 0x22B0, 0x8407, 0x8407, 0x0D45, - 0x8409, 0x8409, 0x22AC, 0x840A, 0x840A, 0x0D3A, 0x840B, 0x840B, 0x0D34, - 0x840C, 0x840C, 0x0D3C, 0x840D, 0x840D, 0x0D31, 0x840E, 0x840E, 0x0D42, - 0x840F, 0x840F, 0x22AD, 0x8410, 0x8410, 0x229B, 0x8411, 0x8411, 0x22AF, - 0x8412, 0x8412, 0x2296, 0x8413, 0x8413, 0x22B8, 0x8414, 0x8414, 0x3C10, - 0x8416, 0x8416, 0x4037, 0x8418, 0x8418, 0x3E7A, 0x841B, 0x841B, 0x22C1, - 0x841C, 0x841C, 0x3EB3, 0x8420, 0x8420, 0x3C55, 0x8421, 0x8421, 0x3751, - 0x8423, 0x8423, 0x2293, 0x8424, 0x8424, 0x4951, 0x8426, 0x8426, 0x46D8, - 0x8429, 0x8429, 0x254D, 0x842B, 0x842B, 0x2563, 0x842C, 0x842C, 0x0EAC, - 0x842D, 0x842D, 0x2552, 0x842E, 0x842E, 0x422D, 0x842F, 0x842F, 0x2550, - 0x8430, 0x8430, 0x253B, 0x8431, 0x8431, 0x0EDE, 0x8432, 0x8432, 0x254B, - 0x8433, 0x8433, 0x255F, 0x8434, 0x8434, 0x2547, 0x8435, 0x8435, 0x0EE6, - 0x8436, 0x8436, 0x255E, 0x8437, 0x8437, 0x2545, 0x8438, 0x8438, 0x0D41, - 0x8439, 0x8439, 0x2555, 0x843A, 0x843A, 0x2546, 0x843B, 0x843B, 0x255C, - 0x843C, 0x843C, 0x0EE5, 0x843D, 0x843D, 0x0EDD, 0x843E, 0x843E, 0x3D21, - 0x843F, 0x843F, 0x2530, 0x8440, 0x8440, 0x2538, 0x8442, 0x8442, 0x2551, - 0x8443, 0x8443, 0x2549, 0x8444, 0x8444, 0x2562, 0x8445, 0x8445, 0x254C, - 0x8446, 0x8446, 0x0EEB, 0x8447, 0x8447, 0x255D, 0x8448, 0x8448, 0x4718, - 0x8449, 0x8449, 0x0EE2, 0x844A, 0x844A, 0x37E4, 0x844B, 0x844B, 0x254F, - 0x844C, 0x844C, 0x2557, 0x844D, 0x844D, 0x253C, 0x844E, 0x844E, 0x2556, - 0x8450, 0x8450, 0x2567, 0x8451, 0x8451, 0x2537, 0x8452, 0x8452, 0x2558, - 0x8453, 0x8453, 0x3B7D, 0x8454, 0x8454, 0x2565, 0x8455, 0x8455, 0x398B, - 0x8456, 0x8456, 0x2531, 0x8457, 0x8457, 0x0D39, 0x8458, 0x8458, 0x37DE, - 0x8459, 0x8459, 0x253F, 0x845A, 0x845A, 0x253E, 0x845B, 0x845B, 0x0EE4, - 0x845C, 0x845C, 0x3EDB, 0x845D, 0x845D, 0x2542, 0x845E, 0x845E, 0x2544, - 0x845F, 0x845F, 0x2553, 0x8460, 0x8460, 0x2564, 0x8461, 0x8461, 0x0EE7, - 0x8462, 0x8462, 0x42DA, 0x8463, 0x8463, 0x0EE8, 0x8464, 0x8464, 0x4761, - 0x8465, 0x8465, 0x2536, 0x8466, 0x8466, 0x0EE0, 0x8467, 0x8467, 0x253A, - 0x8468, 0x8468, 0x2560, 0x8469, 0x8469, 0x0EE9, 0x846B, 0x846B, 0x0EE1, - 0x846C, 0x846C, 0x0EE3, 0x846D, 0x846D, 0x0EEA, 0x846E, 0x846E, 0x2566, - 0x846F, 0x846F, 0x2559, 0x8470, 0x8470, 0x2554, 0x8471, 0x8471, 0x37E0, - 0x8472, 0x8472, 0x3C93, 0x8473, 0x8473, 0x2541, 0x8474, 0x8474, 0x2540, - 0x8475, 0x8475, 0x0EDF, 0x8476, 0x8476, 0x2532, 0x8477, 0x8477, 0x0EDC, - 0x8478, 0x8478, 0x254A, 0x8479, 0x8479, 0x2533, 0x847A, 0x847A, 0x2548, - 0x847D, 0x847D, 0x253D, 0x847E, 0x847E, 0x2561, 0x847F, 0x847F, 0x394E, - 0x8480, 0x8480, 0x3B6E, 0x8482, 0x8482, 0x0EDB, 0x8486, 0x8486, 0x2539, - 0x8488, 0x8488, 0x4762, 0x848D, 0x848D, 0x2535, 0x848E, 0x848E, 0x255B, - 0x848F, 0x848F, 0x2534, 0x8490, 0x8490, 0x108E, 0x8491, 0x8491, 0x27CD, - 0x8492, 0x8492, 0x3756, 0x8493, 0x8493, 0x37EE, 0x8494, 0x8494, 0x27BC, - 0x8496, 0x8496, 0x3B1D, 0x8497, 0x8497, 0x27A6, 0x8498, 0x8498, 0x27C4, - 0x8499, 0x8499, 0x1086, 0x849A, 0x849A, 0x27B5, 0x849B, 0x849B, 0x27BF, - 0x849C, 0x849C, 0x1089, 0x849D, 0x849D, 0x27B8, 0x849E, 0x849E, 0x1087, - 0x849F, 0x849F, 0x27A9, 0x84A0, 0x84A0, 0x27C7, 0x84A1, 0x84A1, 0x27A8, - 0x84A2, 0x84A2, 0x27BB, 0x84A3, 0x84A3, 0x3B9E, 0x84A4, 0x84A4, 0x27A7, - 0x84A7, 0x84A7, 0x27B9, 0x84A8, 0x84A8, 0x27C2, 0x84A9, 0x84A9, 0x27C0, - 0x84AA, 0x84AA, 0x27B4, 0x84AB, 0x84AB, 0x27AF, 0x84AC, 0x84AC, 0x27AD, - 0x84AD, 0x84AD, 0x3D8C, 0x84AE, 0x84AE, 0x27AE, 0x84AF, 0x84AF, 0x27C1, - 0x84B0, 0x84B0, 0x27CC, 0x84B1, 0x84B1, 0x27B6, 0x84B2, 0x84B2, 0x1088, - 0x84B4, 0x84B4, 0x27B1, 0x84B6, 0x84B6, 0x27C5, 0x84B8, 0x84B8, 0x108B, - 0x84B9, 0x84B9, 0x27B0, 0x84BA, 0x84BA, 0x27AA, 0x84BB, 0x84BB, 0x27BA, - 0x84BC, 0x84BC, 0x108F, 0x84BD, 0x84BD, 0x3C4C, 0x84BE, 0x84BE, 0x4764, - 0x84BF, 0x84BF, 0x1083, 0x84C0, 0x84C0, 0x108C, 0x84C1, 0x84C1, 0x27B2, - 0x84C2, 0x84C2, 0x27AC, 0x84C4, 0x84C4, 0x1085, 0x84C5, 0x84C5, 0x255A, - 0x84C6, 0x84C6, 0x1084, 0x84C7, 0x84C7, 0x27BD, 0x84C9, 0x84C9, 0x1082, - 0x84CA, 0x84CA, 0x1091, 0x84CB, 0x84CB, 0x108A, 0x84CC, 0x84CC, 0x27BE, - 0x84CD, 0x84CD, 0x27B3, 0x84CE, 0x84CE, 0x27AB, 0x84CF, 0x84CF, 0x27C6, - 0x84D0, 0x84D0, 0x27B7, 0x84D1, 0x84D1, 0x1090, 0x84D2, 0x84D2, 0x27CA, - 0x84D3, 0x84D3, 0x108D, 0x84D4, 0x84D4, 0x27C9, 0x84D6, 0x84D6, 0x27C3, - 0x84D7, 0x84D7, 0x27C8, 0x84DA, 0x84DA, 0x3FF5, 0x84DB, 0x84DB, 0x27CB, - 0x84DE, 0x84DE, 0x37EA, 0x84E1, 0x84E1, 0x4765, 0x84E2, 0x84E2, 0x37B5, - 0x84E4, 0x84E4, 0x37EF, 0x84E5, 0x84E5, 0x3BD0, 0x84E7, 0x84E8, 0x2A03, - 0x84E9, 0x84E9, 0x29F7, 0x84EA, 0x84EA, 0x29F6, 0x84EB, 0x84EB, 0x29F2, - 0x84EC, 0x84EC, 0x11FB, 0x84EE, 0x84EE, 0x11F3, 0x84EF, 0x84EF, 0x2A06, - 0x84F0, 0x84F0, 0x2A05, 0x84F1, 0x84F1, 0x252F, 0x84F2, 0x84F2, 0x29EF, - 0x84F3, 0x84F3, 0x29F3, 0x84F4, 0x84F4, 0x29ED, 0x84F6, 0x84F6, 0x2A00, - 0x84F7, 0x84F7, 0x29F1, 0x84F8, 0x84F8, 0x4766, 0x84F9, 0x84F9, 0x2A07, - 0x84FA, 0x84FA, 0x29EA, 0x84FB, 0x84FB, 0x29E8, 0x84FC, 0x84FC, 0x29F4, - 0x84FD, 0x84FD, 0x29FE, 0x84FE, 0x84FE, 0x29F9, 0x84FF, 0x84FF, 0x11FD, - 0x8500, 0x8500, 0x29DF, 0x8502, 0x8502, 0x29FD, 0x8503, 0x8503, 0x398A, - 0x8505, 0x8505, 0x40EB, 0x8506, 0x8506, 0x11FE, 0x8507, 0x8507, 0x2543, - 0x8508, 0x8508, 0x29EB, 0x8509, 0x8509, 0x29E2, 0x850A, 0x850A, 0x29E5, - 0x850B, 0x850B, 0x2A0B, 0x850C, 0x850C, 0x29EC, 0x850D, 0x850D, 0x29E3, - 0x850E, 0x850E, 0x29E1, 0x850F, 0x850F, 0x29DE, 0x8510, 0x8510, 0x4767, - 0x8511, 0x8511, 0x11F7, 0x8512, 0x8512, 0x29F5, 0x8513, 0x8513, 0x11F6, - 0x8514, 0x8514, 0x11FA, 0x8515, 0x8515, 0x29F0, 0x8516, 0x8516, 0x29F8, - 0x8517, 0x8517, 0x11F0, 0x8518, 0x8518, 0x2A08, 0x8519, 0x8519, 0x2A0C, - 0x851A, 0x851A, 0x11F2, 0x851C, 0x851C, 0x29E7, 0x851D, 0x851D, 0x29FB, - 0x851E, 0x851E, 0x29FF, 0x851F, 0x851F, 0x29E4, 0x8520, 0x8520, 0x2A09, - 0x8521, 0x8521, 0x11F9, 0x8523, 0x8523, 0x11F8, 0x8524, 0x8524, 0x29DC, - 0x8525, 0x8525, 0x11FC, 0x8526, 0x8526, 0x2A02, 0x8527, 0x8527, 0x29E6, - 0x8528, 0x8528, 0x29FA, 0x8529, 0x8529, 0x29E0, 0x852A, 0x852A, 0x29EE, - 0x852B, 0x852B, 0x29E9, 0x852C, 0x852D, 0x11F4, 0x852E, 0x852E, 0x29FC, - 0x852F, 0x852F, 0x2A0D, 0x8530, 0x8530, 0x2A0A, 0x8531, 0x8531, 0x2A01, - 0x8533, 0x8533, 0x4228, 0x8534, 0x8534, 0x37F4, 0x8538, 0x8538, 0x4768, - 0x853B, 0x853B, 0x29DD, 0x853D, 0x853D, 0x11F1, 0x853E, 0x853E, 0x2C4F, - 0x8540, 0x8540, 0x2C46, 0x8541, 0x8541, 0x2C49, 0x8542, 0x8542, 0x4062, - 0x8543, 0x8543, 0x133B, 0x8544, 0x8544, 0x2C4B, 0x8545, 0x8545, 0x2C40, - 0x8546, 0x8546, 0x2C47, 0x8547, 0x8547, 0x2C4D, 0x8548, 0x8548, 0x1338, - 0x8549, 0x8549, 0x133C, 0x854A, 0x854A, 0x1336, 0x854B, 0x854B, 0x37C0, - 0x854C, 0x854C, 0x400F, 0x854D, 0x854D, 0x2C42, 0x854E, 0x854E, 0x2C52, - 0x8551, 0x8551, 0x2C4C, 0x8552, 0x8552, 0x4769, 0x8553, 0x8553, 0x2C43, - 0x8554, 0x8554, 0x2C5B, 0x8555, 0x8555, 0x2C55, 0x8556, 0x8556, 0x2C3F, - 0x8557, 0x8557, 0x2E23, 0x8558, 0x8558, 0x2C45, 0x8559, 0x8559, 0x1337, - 0x855A, 0x855A, 0x37DB, 0x855B, 0x855B, 0x2C50, 0x855D, 0x855D, 0x2C5A, - 0x855E, 0x855E, 0x133F, 0x8560, 0x8560, 0x2C57, 0x8561, 0x8561, 0x2C44, - 0x8562, 0x8562, 0x2C4A, 0x8563, 0x8563, 0x2C4E, 0x8564, 0x8564, 0x2C48, - 0x8565, 0x8565, 0x2C5C, 0x8566, 0x8566, 0x2C59, 0x8567, 0x8567, 0x2C56, - 0x8568, 0x8569, 0x1339, 0x856A, 0x856A, 0x133E, 0x856B, 0x856B, 0x2C41, - 0x856C, 0x856C, 0x2C5D, 0x856D, 0x856D, 0x133D, 0x856E, 0x856E, 0x2C53, - 0x856F, 0x8570, 0x476B, 0x8571, 0x8571, 0x2C51, 0x8573, 0x8573, 0x37F8, - 0x8575, 0x8575, 0x2C54, 0x8576, 0x8576, 0x2E30, 0x8577, 0x8577, 0x2E1D, - 0x8578, 0x8578, 0x2E22, 0x8579, 0x8579, 0x2E2F, 0x857A, 0x857A, 0x2E21, - 0x857B, 0x857B, 0x2E19, 0x857C, 0x857C, 0x2E1E, 0x857E, 0x857E, 0x145C, - 0x8580, 0x8580, 0x2E12, 0x8581, 0x8581, 0x2E2A, 0x8582, 0x8582, 0x2E2C, - 0x8583, 0x8583, 0x2E11, 0x8584, 0x8584, 0x145B, 0x8585, 0x8585, 0x2E2E, - 0x8586, 0x8586, 0x2E26, 0x8587, 0x8587, 0x1462, 0x8588, 0x8588, 0x2E2D, - 0x8589, 0x8589, 0x2E1F, 0x858A, 0x858A, 0x1464, 0x858B, 0x858B, 0x2E17, - 0x858C, 0x858C, 0x2C58, 0x858D, 0x858D, 0x2E27, 0x858E, 0x858E, 0x2E24, - 0x858F, 0x858F, 0x2E13, 0x8590, 0x8590, 0x2E32, 0x8591, 0x8591, 0x145E, - 0x8594, 0x8594, 0x145F, 0x8595, 0x8595, 0x2E15, 0x8596, 0x8596, 0x2E25, - 0x8598, 0x8598, 0x2E31, 0x8599, 0x8599, 0x2E28, 0x859A, 0x859A, 0x2E1B, - 0x859B, 0x859B, 0x1461, 0x859C, 0x859C, 0x145D, 0x859D, 0x859D, 0x2E29, - 0x859E, 0x859E, 0x2E1C, 0x859F, 0x859F, 0x2E33, 0x85A0, 0x85A0, 0x2E16, - 0x85A1, 0x85A1, 0x2E20, 0x85A2, 0x85A2, 0x2E2B, 0x85A3, 0x85A3, 0x2E18, - 0x85A4, 0x85A4, 0x2E1A, 0x85A6, 0x85A6, 0x1465, 0x85A7, 0x85A7, 0x2E14, - 0x85A8, 0x85A8, 0x1463, 0x85A9, 0x85A9, 0x151C, 0x85AA, 0x85AA, 0x145A, - 0x85AF, 0x85AF, 0x1460, 0x85B0, 0x85B0, 0x1520, 0x85B1, 0x85B1, 0x2FA6, - 0x85B3, 0x85B3, 0x2F9C, 0x85B4, 0x85B4, 0x2F97, 0x85B5, 0x85B5, 0x2F9D, - 0x85B6, 0x85B6, 0x2FA7, 0x85B7, 0x85B7, 0x2FAB, 0x85B8, 0x85B8, 0x2FAA, - 0x85B9, 0x85B9, 0x1522, 0x85BA, 0x85BA, 0x1521, 0x85BD, 0x85BD, 0x2F9E, - 0x85BE, 0x85BE, 0x2FAC, 0x85BF, 0x85BF, 0x2FA1, 0x85C0, 0x85C0, 0x2F99, - 0x85C1, 0x85C1, 0x37FE, 0x85C2, 0x85C2, 0x2F9B, 0x85C3, 0x85C3, 0x2F9A, - 0x85C4, 0x85C4, 0x2FA0, 0x85C5, 0x85C5, 0x2FA5, 0x85C6, 0x85C6, 0x2F98, - 0x85C7, 0x85C7, 0x2F9F, 0x85C8, 0x85C8, 0x2FA4, 0x85C9, 0x85C9, 0x151F, - 0x85CB, 0x85CB, 0x2FA2, 0x85CD, 0x85CD, 0x151D, 0x85CE, 0x85CE, 0x2FA3, - 0x85CF, 0x85CF, 0x151B, 0x85D0, 0x85D0, 0x151E, 0x85D1, 0x85D1, 0x3101, - 0x85D2, 0x85D2, 0x2FA8, 0x85D5, 0x85D5, 0x15B7, 0x85D7, 0x85D7, 0x30F9, - 0x85D8, 0x85D8, 0x30FD, 0x85D9, 0x85D9, 0x30F5, 0x85DA, 0x85DA, 0x30F8, - 0x85DC, 0x85DC, 0x3100, 0x85DD, 0x85DD, 0x15B5, 0x85DE, 0x85DE, 0x3105, - 0x85DF, 0x85DF, 0x30FE, 0x85E0, 0x85E0, 0x476D, 0x85E1, 0x85E1, 0x30F6, - 0x85E2, 0x85E2, 0x3106, 0x85E3, 0x85E3, 0x30FF, 0x85E4, 0x85E5, 0x15B8, - 0x85E6, 0x85E6, 0x3103, 0x85E8, 0x85E8, 0x30F7, 0x85E9, 0x85E9, 0x15B4, - 0x85EA, 0x85EA, 0x15B6, 0x85EB, 0x85EB, 0x30F2, 0x85EC, 0x85EC, 0x30FA, - 0x85ED, 0x85ED, 0x30F4, 0x85EE, 0x85EE, 0x3C56, 0x85EF, 0x85EF, 0x3104, - 0x85F0, 0x85F0, 0x3102, 0x85F1, 0x85F1, 0x30F3, 0x85F2, 0x85F2, 0x30FB, - 0x85F6, 0x85F6, 0x3225, 0x85F7, 0x85F7, 0x15BA, 0x85F8, 0x85F8, 0x30FC, - 0x85F9, 0x85F9, 0x1638, 0x85FA, 0x85FA, 0x163A, 0x85FB, 0x85FB, 0x1637, - 0x85FC, 0x85FC, 0x3C50, 0x85FD, 0x85FD, 0x322A, 0x85FE, 0x85FE, 0x3222, - 0x85FF, 0x85FF, 0x3220, 0x8600, 0x8600, 0x3224, 0x8601, 0x8601, 0x3221, - 0x8602, 0x8602, 0x3800, 0x8604, 0x8604, 0x3226, 0x8605, 0x8605, 0x3228, - 0x8606, 0x8606, 0x163B, 0x8607, 0x8607, 0x163D, 0x8609, 0x8609, 0x3227, - 0x860A, 0x860A, 0x163E, 0x860B, 0x860B, 0x163C, 0x860C, 0x860C, 0x3229, - 0x860D, 0x860D, 0x4064, 0x8610, 0x8610, 0x3B7F, 0x8611, 0x8611, 0x1639, - 0x8614, 0x8614, 0x46BE, 0x8616, 0x8616, 0x37FB, 0x8617, 0x8617, 0x1685, - 0x8618, 0x8618, 0x32F6, 0x8619, 0x8619, 0x32FC, 0x861A, 0x861A, 0x1687, - 0x861B, 0x861B, 0x3223, 0x861C, 0x861C, 0x32FB, 0x861E, 0x861E, 0x3302, - 0x861F, 0x861F, 0x32F9, 0x8620, 0x8620, 0x3300, 0x8621, 0x8621, 0x32FF, - 0x8622, 0x8622, 0x321F, 0x8623, 0x8623, 0x32FA, 0x8624, 0x8624, 0x2FA9, - 0x8625, 0x8625, 0x3303, 0x8626, 0x8626, 0x32F8, 0x8627, 0x8627, 0x32FD, - 0x8628, 0x8628, 0x3805, 0x8629, 0x8629, 0x3301, 0x862A, 0x862A, 0x32F7, - 0x862C, 0x862C, 0x33AA, 0x862D, 0x862D, 0x1686, 0x862E, 0x862E, 0x32FE, - 0x862F, 0x862F, 0x3F9E, 0x8631, 0x8631, 0x3432, 0x8632, 0x8632, 0x33AB, - 0x8633, 0x8633, 0x33A9, 0x8634, 0x8635, 0x33A7, 0x8636, 0x8636, 0x33AC, - 0x8638, 0x8638, 0x1707, 0x8639, 0x8639, 0x3430, 0x863A, 0x863A, 0x342E, - 0x863B, 0x863B, 0x3433, 0x863C, 0x863C, 0x3431, 0x863E, 0x863E, 0x3434, - 0x863F, 0x863F, 0x1708, 0x8640, 0x8640, 0x342F, 0x8642, 0x8642, 0x38C1, - 0x8643, 0x8643, 0x3497, 0x8645, 0x8645, 0x3B66, 0x8646, 0x8648, 0x34DF, - 0x864B, 0x864B, 0x353E, 0x864C, 0x864C, 0x3536, 0x864D, 0x864D, 0x1818, - 0x864E, 0x864E, 0x0689, 0x8650, 0x8650, 0x07FF, 0x8652, 0x8652, 0x1DE3, - 0x8653, 0x8653, 0x1DE2, 0x8654, 0x8654, 0x09AF, 0x8655, 0x8655, 0x0B88, - 0x8656, 0x8656, 0x203C, 0x8659, 0x8659, 0x203B, 0x865B, 0x865B, 0x0D48, - 0x865C, 0x865C, 0x0EED, 0x865E, 0x865E, 0x0EEC, 0x865F, 0x865F, 0x0EEE, - 0x8661, 0x8661, 0x27CE, 0x8662, 0x8662, 0x2A0E, 0x8663, 0x8663, 0x2C5E, - 0x8664, 0x8664, 0x2C60, 0x8665, 0x8665, 0x2C5F, 0x8667, 0x8667, 0x1466, - 0x8668, 0x8668, 0x2E34, 0x8669, 0x8669, 0x2FAD, 0x866A, 0x866A, 0x351E, - 0x866B, 0x866B, 0x040F, 0x866C, 0x866C, 0x3813, 0x866D, 0x866E, 0x1A46, - 0x866F, 0x866F, 0x1A45, 0x8670, 0x8670, 0x1A44, 0x8671, 0x8671, 0x068A, - 0x8672, 0x8672, 0x476F, 0x8673, 0x8673, 0x1BFD, 0x8674, 0x8674, 0x1BFB, - 0x8677, 0x8677, 0x1BFA, 0x8679, 0x8679, 0x0800, 0x867A, 0x867A, 0x0802, - 0x867B, 0x867B, 0x0801, 0x867C, 0x867C, 0x1BFC, 0x867E, 0x867E, 0x380A, - 0x8685, 0x8685, 0x1DEF, 0x8686, 0x8686, 0x1DEC, 0x8687, 0x8687, 0x1DEA, - 0x868A, 0x868A, 0x09B0, 0x868B, 0x868B, 0x1DED, 0x868C, 0x868C, 0x09B5, - 0x868D, 0x868D, 0x1DE7, 0x868E, 0x868E, 0x1DF6, 0x8690, 0x8690, 0x1DF8, - 0x8691, 0x8691, 0x1DE8, 0x8692, 0x8692, 0x4770, 0x8693, 0x8693, 0x09B2, - 0x8694, 0x8694, 0x1DF9, 0x8695, 0x8695, 0x1DF4, 0x8696, 0x8696, 0x1DE6, - 0x8697, 0x8697, 0x1DEB, 0x8698, 0x8698, 0x1DF5, 0x8699, 0x8699, 0x1DF1, - 0x869A, 0x869A, 0x1DEE, 0x869C, 0x869C, 0x09B7, 0x869D, 0x869D, 0x1DF7, - 0x869E, 0x869E, 0x1DE9, 0x86A0, 0x86A0, 0x3B88, 0x86A1, 0x86A1, 0x1DF2, - 0x86A2, 0x86A2, 0x1DE4, 0x86A3, 0x86A3, 0x09B6, 0x86A4, 0x86A4, 0x09B3, - 0x86A5, 0x86A5, 0x1DF0, 0x86A7, 0x86A7, 0x1DF3, 0x86A8, 0x86A8, 0x1DE5, - 0x86A9, 0x86A9, 0x09B4, 0x86AA, 0x86AA, 0x09B1, 0x86AD, 0x86AD, 0x3F06, - 0x86AF, 0x86AF, 0x0B92, 0x86B0, 0x86B0, 0x2043, 0x86B1, 0x86B1, 0x0B91, - 0x86B2, 0x86B2, 0x43E0, 0x86B3, 0x86B3, 0x2046, 0x86B4, 0x86B4, 0x2049, - 0x86B5, 0x86B5, 0x0B8E, 0x86B6, 0x86B6, 0x0B8C, 0x86B7, 0x86B7, 0x203E, - 0x86B8, 0x86B8, 0x2047, 0x86B9, 0x86B9, 0x2045, 0x86BA, 0x86BA, 0x2042, - 0x86BB, 0x86BC, 0x204A, 0x86BD, 0x86BE, 0x204D, 0x86BF, 0x86BF, 0x203D, - 0x86C0, 0x86C0, 0x0B8B, 0x86C1, 0x86C1, 0x2040, 0x86C2, 0x86C2, 0x203F, - 0x86C3, 0x86C3, 0x204C, 0x86C4, 0x86C4, 0x0B8D, 0x86C5, 0x86C5, 0x2041, - 0x86C6, 0x86C6, 0x0B8F, 0x86C7, 0x86C7, 0x0B8A, 0x86C8, 0x86C8, 0x2044, - 0x86C9, 0x86C9, 0x0B93, 0x86CB, 0x86CB, 0x0B90, 0x86CC, 0x86CC, 0x2048, - 0x86D0, 0x86D0, 0x0D4F, 0x86D1, 0x86D1, 0x22D2, 0x86D3, 0x86D3, 0x22C7, - 0x86D4, 0x86D4, 0x0D4C, 0x86D6, 0x86D6, 0x256D, 0x86D7, 0x86D7, 0x22D0, - 0x86D8, 0x86D8, 0x22C4, 0x86D9, 0x86D9, 0x0D4A, 0x86DA, 0x86DA, 0x22C9, - 0x86DB, 0x86DB, 0x0D4D, 0x86DC, 0x86DC, 0x22CD, 0x86DD, 0x86DD, 0x22CB, - 0x86DE, 0x86DE, 0x0D50, 0x86DF, 0x86DF, 0x0D49, 0x86E2, 0x86E2, 0x22C5, - 0x86E3, 0x86E3, 0x22C8, 0x86E4, 0x86E4, 0x0D4E, 0x86E6, 0x86E6, 0x22C6, - 0x86E8, 0x86E8, 0x22D1, 0x86E9, 0x86E9, 0x22CF, 0x86EA, 0x86EA, 0x22CA, - 0x86EB, 0x86EB, 0x22CC, 0x86EC, 0x86EC, 0x22CE, 0x86ED, 0x86ED, 0x0D4B, - 0x86EF, 0x86EF, 0x4771, 0x86F5, 0x86F5, 0x256E, 0x86F6, 0x86F6, 0x2574, - 0x86F7, 0x86F7, 0x256A, 0x86F8, 0x86F8, 0x2570, 0x86F9, 0x86F9, 0x0EEF, - 0x86FA, 0x86FA, 0x256C, 0x86FB, 0x86FB, 0x0EF5, 0x86FE, 0x86FE, 0x0EF4, - 0x8700, 0x8700, 0x0EF3, 0x8701, 0x8701, 0x2573, 0x8702, 0x8703, 0x0EF6, - 0x8704, 0x8704, 0x2569, 0x8705, 0x8705, 0x2576, 0x8706, 0x8706, 0x0EF8, - 0x8707, 0x8707, 0x0EF2, 0x8708, 0x8708, 0x0EF1, 0x8709, 0x8709, 0x2572, - 0x870A, 0x870A, 0x0EF9, 0x870B, 0x870B, 0x2568, 0x870C, 0x870C, 0x256B, - 0x870D, 0x870D, 0x2575, 0x870E, 0x870E, 0x2571, 0x8711, 0x8711, 0x27EE, - 0x8712, 0x8712, 0x27E3, 0x8713, 0x8713, 0x0EF0, 0x8718, 0x8718, 0x1098, - 0x8719, 0x8719, 0x27D7, 0x871A, 0x871A, 0x27EC, 0x871B, 0x871B, 0x27D8, - 0x871C, 0x871C, 0x1093, 0x871E, 0x871E, 0x27D5, 0x8720, 0x8720, 0x27DE, - 0x8721, 0x8721, 0x27D6, 0x8722, 0x8722, 0x1095, 0x8723, 0x8723, 0x27D0, - 0x8724, 0x8724, 0x27EB, 0x8725, 0x8725, 0x1096, 0x8726, 0x8727, 0x27E8, - 0x8728, 0x8728, 0x27D1, 0x8729, 0x8729, 0x109B, 0x872A, 0x872A, 0x27E0, - 0x872C, 0x872C, 0x27DA, 0x872D, 0x872D, 0x27E1, 0x872E, 0x872E, 0x27D4, - 0x8730, 0x8730, 0x27ED, 0x8731, 0x8731, 0x27E5, 0x8732, 0x8732, 0x27DF, - 0x8733, 0x8733, 0x27CF, 0x8734, 0x8734, 0x1097, 0x8735, 0x8735, 0x27E6, - 0x8737, 0x8737, 0x109A, 0x8738, 0x8738, 0x27EA, 0x873A, 0x873A, 0x27E4, - 0x873B, 0x873B, 0x1094, 0x873C, 0x873C, 0x27E2, 0x873E, 0x873E, 0x27DC, - 0x873F, 0x873F, 0x1092, 0x8740, 0x8740, 0x27D3, 0x8741, 0x8741, 0x27DB, - 0x8742, 0x8742, 0x27E7, 0x8743, 0x8743, 0x27D9, 0x8746, 0x8746, 0x27DD, - 0x874C, 0x874C, 0x1208, 0x874D, 0x874D, 0x256F, 0x874E, 0x874E, 0x2A20, - 0x874F, 0x874F, 0x2A29, 0x8750, 0x8750, 0x2A1F, 0x8751, 0x8751, 0x2A1B, - 0x8752, 0x8752, 0x2A18, 0x8753, 0x8753, 0x1209, 0x8754, 0x8754, 0x2A16, - 0x8755, 0x8755, 0x1099, 0x8756, 0x8756, 0x2A0F, 0x8757, 0x8757, 0x1207, - 0x8758, 0x8758, 0x2A15, 0x8759, 0x8759, 0x1206, 0x875A, 0x875A, 0x2A1A, - 0x875B, 0x875B, 0x2A17, 0x875C, 0x875C, 0x2A27, 0x875D, 0x875D, 0x2A22, - 0x875E, 0x875E, 0x2A1C, 0x875F, 0x875F, 0x2A21, 0x8760, 0x8760, 0x1202, - 0x8761, 0x8761, 0x2A19, 0x8762, 0x8762, 0x2A2C, 0x8763, 0x8764, 0x2A10, - 0x8765, 0x8765, 0x2A28, 0x8766, 0x8766, 0x1203, 0x8767, 0x8767, 0x2A2D, - 0x8768, 0x8768, 0x1205, 0x8769, 0x8769, 0x2A2E, 0x876A, 0x876A, 0x2A1E, - 0x876B, 0x876B, 0x27D2, 0x876C, 0x876C, 0x2A24, 0x876D, 0x876D, 0x2A1D, - 0x876E, 0x876E, 0x2A26, 0x876F, 0x876F, 0x2A23, 0x8770, 0x8770, 0x3E6C, - 0x8771, 0x8771, 0x380B, 0x8773, 0x8773, 0x2A14, 0x8774, 0x8774, 0x1200, - 0x8775, 0x8775, 0x2A2B, 0x8776, 0x8776, 0x1201, 0x8777, 0x8777, 0x2A12, - 0x8778, 0x8778, 0x1204, 0x8779, 0x8779, 0x2C6B, 0x877A, 0x877A, 0x2A25, - 0x877B, 0x877B, 0x2A2A, 0x877D, 0x877D, 0x4045, 0x8781, 0x8781, 0x2C68, - 0x8782, 0x8782, 0x11FF, 0x8783, 0x8783, 0x1340, 0x8784, 0x8784, 0x2C72, - 0x8785, 0x8785, 0x2C6E, 0x8786, 0x8786, 0x3EB0, 0x8787, 0x8787, 0x2C6C, - 0x8788, 0x8788, 0x2C67, 0x8789, 0x8789, 0x2C76, 0x878B, 0x878B, 0x43E2, - 0x878C, 0x878C, 0x3FEF, 0x878D, 0x878D, 0x1344, 0x878F, 0x878F, 0x2C63, - 0x8790, 0x8791, 0x2C6F, 0x8792, 0x8792, 0x2C66, 0x8793, 0x8793, 0x2C65, - 0x8794, 0x8794, 0x2C73, 0x8796, 0x8796, 0x2C69, 0x8797, 0x8797, 0x2C64, - 0x8798, 0x8798, 0x2C6A, 0x879A, 0x879A, 0x2C75, 0x879B, 0x879B, 0x2C62, - 0x879C, 0x879C, 0x2C74, 0x879D, 0x879D, 0x2C71, 0x879E, 0x879E, 0x1342, - 0x879F, 0x879F, 0x1341, 0x87A2, 0x87A2, 0x1343, 0x87A3, 0x87A3, 0x2C6D, - 0x87A4, 0x87A4, 0x2C61, 0x87A5, 0x87A5, 0x3D88, 0x87A9, 0x87A9, 0x3FEC, - 0x87AA, 0x87AA, 0x2E36, 0x87AB, 0x87AB, 0x146C, 0x87AC, 0x87AC, 0x2E3A, - 0x87AD, 0x87AD, 0x2E37, 0x87AE, 0x87AE, 0x2E3E, 0x87AF, 0x87AF, 0x2E44, - 0x87B0, 0x87B0, 0x2E39, 0x87B1, 0x87B1, 0x380F, 0x87B2, 0x87B2, 0x2E4D, - 0x87B3, 0x87B3, 0x1469, 0x87B4, 0x87B4, 0x2E47, 0x87B5, 0x87B5, 0x2E3C, - 0x87B6, 0x87B6, 0x2E48, 0x87B7, 0x87B7, 0x2E43, 0x87B8, 0x87B8, 0x2E4A, - 0x87B9, 0x87B9, 0x2E3B, 0x87BA, 0x87BA, 0x146E, 0x87BB, 0x87BB, 0x146D, - 0x87BC, 0x87BC, 0x2E3D, 0x87BD, 0x87BD, 0x2E4B, 0x87BE, 0x87BE, 0x2E35, - 0x87BF, 0x87BF, 0x2E49, 0x87C0, 0x87C0, 0x1467, 0x87C1, 0x87C1, 0x3FFC, - 0x87C2, 0x87C2, 0x2E41, 0x87C3, 0x87C3, 0x2E40, 0x87C4, 0x87C4, 0x2E45, - 0x87C5, 0x87C5, 0x2E38, 0x87C6, 0x87C6, 0x146B, 0x87C8, 0x87C8, 0x146F, - 0x87C9, 0x87C9, 0x2E3F, 0x87CA, 0x87CA, 0x2E46, 0x87CB, 0x87CB, 0x1470, - 0x87CC, 0x87CC, 0x2E42, 0x87CE, 0x87CE, 0x3FED, 0x87D1, 0x87D1, 0x1468, - 0x87D2, 0x87D2, 0x146A, 0x87D3, 0x87D3, 0x2FBA, 0x87D4, 0x87D4, 0x2FB8, - 0x87D6, 0x87D6, 0x3F92, 0x87D7, 0x87D7, 0x2FBE, 0x87D8, 0x87D8, 0x2FBC, - 0x87D9, 0x87D9, 0x2FBF, 0x87DA, 0x87DA, 0x3810, 0x87DB, 0x87DB, 0x2FB1, - 0x87DC, 0x87DC, 0x2FB9, 0x87DD, 0x87DD, 0x2FC3, 0x87DE, 0x87DE, 0x2E4C, - 0x87DF, 0x87DF, 0x2FB5, 0x87E0, 0x87E0, 0x1526, 0x87E1, 0x87E1, 0x2A13, - 0x87E2, 0x87E2, 0x2FB0, 0x87E3, 0x87E3, 0x2FBD, 0x87E4, 0x87E4, 0x2FB7, - 0x87E5, 0x87E5, 0x2FB4, 0x87E6, 0x87E6, 0x2FAF, 0x87E7, 0x87E7, 0x2FAE, - 0x87E8, 0x87E8, 0x2FC2, 0x87EA, 0x87EA, 0x2FB3, 0x87EB, 0x87EB, 0x2FB2, - 0x87EC, 0x87EC, 0x1524, 0x87ED, 0x87ED, 0x2FBB, 0x87EE, 0x87EE, 0x380D, - 0x87EF, 0x87EF, 0x1523, 0x87F2, 0x87F2, 0x1525, 0x87F3, 0x87F3, 0x2FB6, - 0x87F4, 0x87F4, 0x2FC1, 0x87F5, 0x87F5, 0x3FAE, 0x87F6, 0x87F7, 0x310A, - 0x87F9, 0x87F9, 0x15BE, 0x87FA, 0x87FA, 0x3108, 0x87FB, 0x87FB, 0x15BB, - 0x87FC, 0x87FC, 0x3110, 0x87FE, 0x87FE, 0x15BF, 0x87FF, 0x87FF, 0x3112, - 0x8800, 0x8800, 0x3107, 0x8801, 0x8801, 0x2FC0, 0x8802, 0x8802, 0x3114, - 0x8803, 0x8803, 0x3109, 0x8804, 0x8804, 0x3EAF, 0x8805, 0x8805, 0x15BC, - 0x8806, 0x8806, 0x310F, 0x8808, 0x8808, 0x3111, 0x8809, 0x8809, 0x310C, - 0x880A, 0x880A, 0x3113, 0x880B, 0x880B, 0x310E, 0x880C, 0x880C, 0x310D, - 0x880D, 0x880D, 0x15BD, 0x880F, 0x880F, 0x3811, 0x8810, 0x8811, 0x322C, - 0x8813, 0x8813, 0x322F, 0x8814, 0x8815, 0x163F, 0x8816, 0x8816, 0x3230, - 0x8817, 0x8817, 0x322E, 0x8818, 0x8818, 0x3F7A, 0x8819, 0x8819, 0x322B, - 0x881B, 0x881B, 0x3306, 0x881C, 0x881C, 0x3309, 0x881D, 0x881D, 0x3305, - 0x881F, 0x881F, 0x168B, 0x8820, 0x8820, 0x3307, 0x8821, 0x8821, 0x168A, - 0x8822, 0x8822, 0x1689, 0x8823, 0x8823, 0x1688, 0x8824, 0x8824, 0x3308, - 0x8825, 0x8825, 0x33B1, 0x8826, 0x8826, 0x33AF, 0x8827, 0x8827, 0x3E07, - 0x8828, 0x8828, 0x33AE, 0x8829, 0x8829, 0x3304, 0x882A, 0x882A, 0x33B0, - 0x882B, 0x882B, 0x330A, 0x882C, 0x882C, 0x33AD, 0x882D, 0x882D, 0x3B8B, - 0x882E, 0x882E, 0x3437, 0x882F, 0x882F, 0x3415, 0x8830, 0x8830, 0x3435, - 0x8831, 0x8831, 0x1709, 0x8832, 0x8832, 0x3436, 0x8833, 0x8833, 0x3438, - 0x8835, 0x8835, 0x349A, 0x8836, 0x8836, 0x1728, 0x8837, 0x8837, 0x3499, - 0x8838, 0x8838, 0x3498, 0x8839, 0x8839, 0x1729, 0x883B, 0x883B, 0x1747, - 0x883C, 0x883C, 0x3508, 0x883D, 0x883D, 0x3520, 0x883E, 0x883E, 0x351F, - 0x883F, 0x883F, 0x3521, 0x8840, 0x8840, 0x0410, 0x8841, 0x8841, 0x1BFE, - 0x8842, 0x8842, 0x3F5A, 0x8843, 0x8844, 0x1DFA, 0x8845, 0x8846, 0x3816, - 0x8848, 0x8848, 0x22D3, 0x884A, 0x884A, 0x330B, 0x884B, 0x884B, 0x349B, - 0x884C, 0x884C, 0x0411, 0x884D, 0x884D, 0x0803, 0x884E, 0x884E, 0x1BFF, - 0x884F, 0x884F, 0x3844, 0x8852, 0x8852, 0x204F, 0x8853, 0x8853, 0x0B94, - 0x8855, 0x8855, 0x22D5, 0x8856, 0x8856, 0x22D4, 0x8857, 0x8857, 0x0D51, - 0x8859, 0x8859, 0x0EFA, 0x885A, 0x885A, 0x2A2F, 0x885B, 0x885B, 0x120A, - 0x885D, 0x885D, 0x120B, 0x885E, 0x885E, 0x381B, 0x8860, 0x8860, 0x3A46, - 0x8861, 0x8861, 0x1345, 0x8862, 0x8862, 0x172A, 0x8863, 0x8863, 0x0412, - 0x8864, 0x8864, 0x4502, 0x8865, 0x8865, 0x3DFC, 0x8867, 0x8867, 0x1C00, - 0x8868, 0x8868, 0x068C, 0x8869, 0x8869, 0x1C02, 0x886A, 0x886A, 0x1C01, - 0x886B, 0x886B, 0x0804, 0x886D, 0x886D, 0x1DFC, 0x886E, 0x886E, 0x3B8E, - 0x886F, 0x886F, 0x1E03, 0x8870, 0x8870, 0x09B8, 0x8871, 0x8871, 0x1E01, - 0x8872, 0x8872, 0x1DFF, 0x8874, 0x8874, 0x1E06, 0x8875, 0x8876, 0x1DFD, - 0x8877, 0x8877, 0x09B9, 0x8879, 0x8879, 0x09BD, 0x887C, 0x887C, 0x1E07, - 0x887D, 0x887D, 0x09BC, 0x887E, 0x887E, 0x1E05, 0x887F, 0x887F, 0x1E02, - 0x8880, 0x8880, 0x1E00, 0x8881, 0x8882, 0x09BA, 0x8883, 0x8883, 0x1E04, - 0x8884, 0x8884, 0x42F7, 0x8887, 0x8887, 0x3B90, 0x8888, 0x8888, 0x0B96, - 0x8889, 0x8889, 0x2050, 0x888B, 0x888B, 0x0B9B, 0x888C, 0x888C, 0x2060, - 0x888D, 0x888D, 0x0B9A, 0x888E, 0x888E, 0x2062, 0x8891, 0x8891, 0x2056, - 0x8892, 0x8892, 0x0B98, 0x8893, 0x8893, 0x2061, 0x8895, 0x8895, 0x2051, - 0x8896, 0x8896, 0x0B99, 0x8897, 0x8897, 0x205D, 0x8898, 0x8898, 0x2059, - 0x8899, 0x8899, 0x205B, 0x889A, 0x889A, 0x2055, 0x889B, 0x889B, 0x205C, - 0x889C, 0x889C, 0x381C, 0x889E, 0x889E, 0x0B95, 0x889F, 0x889F, 0x2058, - 0x88A0, 0x88A0, 0x3FA0, 0x88A1, 0x88A1, 0x2057, 0x88A2, 0x88A2, 0x2053, - 0x88A4, 0x88A4, 0x205E, 0x88A7, 0x88A7, 0x205A, 0x88A8, 0x88A8, 0x2052, - 0x88AA, 0x88AA, 0x2054, 0x88AB, 0x88AB, 0x0B97, 0x88AC, 0x88AC, 0x205F, - 0x88AE, 0x88AE, 0x4775, 0x88B1, 0x88B1, 0x0D54, 0x88B2, 0x88B2, 0x22E0, - 0x88B4, 0x88B5, 0x381E, 0x88B6, 0x88B6, 0x22DC, 0x88B7, 0x88B7, 0x22DE, - 0x88B8, 0x88B8, 0x22D9, 0x88B9, 0x88B9, 0x22D8, 0x88BA, 0x88BA, 0x22D6, - 0x88BC, 0x88BC, 0x22DD, 0x88BD, 0x88BD, 0x22DF, 0x88BE, 0x88BE, 0x22DB, - 0x88BF, 0x88BF, 0x3B91, 0x88C0, 0x88C0, 0x22DA, 0x88C1, 0x88C2, 0x0D52, - 0x88C5, 0x88C5, 0x3820, 0x88C7, 0x88C7, 0x3EB1, 0x88C9, 0x88C9, 0x22E2, - 0x88CA, 0x88CA, 0x0F02, 0x88CB, 0x88CB, 0x2578, 0x88CC, 0x88CC, 0x257E, - 0x88CD, 0x88CE, 0x2579, 0x88CF, 0x88CF, 0x36EA, 0x88D0, 0x88D0, 0x257F, - 0x88D2, 0x88D2, 0x0F04, 0x88D4, 0x88D4, 0x0EFC, 0x88D5, 0x88D5, 0x0F03, - 0x88D6, 0x88D6, 0x2577, 0x88D7, 0x88D7, 0x22D7, 0x88D8, 0x88D8, 0x0EFF, - 0x88D9, 0x88D9, 0x0EFD, 0x88DA, 0x88DA, 0x257D, 0x88DB, 0x88DB, 0x257C, - 0x88DC, 0x88DC, 0x0EFE, 0x88DD, 0x88DD, 0x0F00, 0x88DE, 0x88DE, 0x257B, - 0x88DF, 0x88DF, 0x0EFB, 0x88E1, 0x88E1, 0x0F01, 0x88E6, 0x88E6, 0x3B92, - 0x88E7, 0x88E7, 0x27F0, 0x88E8, 0x88E8, 0x10A2, 0x88EB, 0x88EB, 0x27FB, - 0x88EC, 0x88EC, 0x27FA, 0x88EE, 0x88EE, 0x27F5, 0x88EF, 0x88EF, 0x10A4, - 0x88F0, 0x88F0, 0x27F9, 0x88F1, 0x88F2, 0x27F1, 0x88F3, 0x88F3, 0x109C, - 0x88F4, 0x88F4, 0x109E, 0x88F5, 0x88F5, 0x3E08, 0x88F6, 0x88F6, 0x27F7, - 0x88F7, 0x88F7, 0x27EF, 0x88F8, 0x88F8, 0x10A0, 0x88F9, 0x88F9, 0x109F, - 0x88FA, 0x88FA, 0x27F3, 0x88FB, 0x88FB, 0x27F8, 0x88FC, 0x88FC, 0x27F6, - 0x88FD, 0x88FD, 0x10A1, 0x88FE, 0x88FE, 0x27F4, 0x88FF, 0x88FF, 0x4776, - 0x8900, 0x8900, 0x42FA, 0x8901, 0x8901, 0x22E1, 0x8902, 0x8902, 0x109D, - 0x8905, 0x8905, 0x2A30, 0x8906, 0x8906, 0x2A37, 0x8907, 0x8907, 0x120D, - 0x8909, 0x8909, 0x2A3B, 0x890A, 0x890A, 0x1211, 0x890B, 0x890B, 0x2A33, - 0x890C, 0x890C, 0x2A31, 0x890E, 0x890E, 0x2A3A, 0x8910, 0x8910, 0x120C, - 0x8911, 0x8911, 0x2A39, 0x8912, 0x8913, 0x120E, 0x8914, 0x8914, 0x2A32, - 0x8915, 0x8915, 0x1210, 0x8916, 0x8916, 0x2A38, 0x8917, 0x8919, 0x2A34, - 0x891A, 0x891A, 0x10A3, 0x891E, 0x891E, 0x2C77, 0x891F, 0x891F, 0x2C83, - 0x8921, 0x8921, 0x134A, 0x8922, 0x8922, 0x2C7E, 0x8923, 0x8923, 0x2C80, - 0x8924, 0x8924, 0x4777, 0x8925, 0x8925, 0x1348, 0x8926, 0x8926, 0x2C78, - 0x8927, 0x8927, 0x2C7C, 0x8929, 0x8929, 0x2C7F, 0x892A, 0x892A, 0x1346, - 0x892B, 0x892B, 0x1349, 0x892C, 0x892C, 0x2C82, 0x892D, 0x892E, 0x2C7A, - 0x892F, 0x892F, 0x2C81, 0x8930, 0x8930, 0x2C79, 0x8931, 0x8931, 0x2C7D, - 0x8932, 0x8932, 0x1347, 0x8933, 0x8933, 0x2E4F, 0x8935, 0x8935, 0x2E4E, - 0x8936, 0x8936, 0x1472, 0x8937, 0x8937, 0x2E54, 0x8938, 0x8938, 0x1474, - 0x893B, 0x893B, 0x1471, 0x893C, 0x893C, 0x2E50, 0x893D, 0x893D, 0x1475, - 0x893E, 0x893E, 0x2E51, 0x8941, 0x8941, 0x2E52, 0x8942, 0x8942, 0x2E55, - 0x8943, 0x8943, 0x3E16, 0x8944, 0x8944, 0x1473, 0x8946, 0x8946, 0x2FC8, - 0x8947, 0x8947, 0x43E3, 0x8949, 0x8949, 0x2FCB, 0x894B, 0x894B, 0x2FC5, - 0x894C, 0x894C, 0x2FC7, 0x894D, 0x894D, 0x3B94, 0x894F, 0x894F, 0x2FC6, - 0x8950, 0x8951, 0x2FC9, 0x8952, 0x8952, 0x2E53, 0x8953, 0x8953, 0x2FC4, - 0x8954, 0x8954, 0x3B96, 0x8956, 0x8956, 0x15C2, 0x8957, 0x8957, 0x3118, - 0x8958, 0x8958, 0x311B, 0x8959, 0x8959, 0x311D, 0x895A, 0x895B, 0x3116, - 0x895C, 0x895C, 0x311A, 0x895D, 0x895D, 0x311C, 0x895E, 0x895E, 0x15C3, - 0x895F, 0x895F, 0x15C1, 0x8960, 0x8960, 0x15C0, 0x8961, 0x8961, 0x3119, - 0x8962, 0x8962, 0x3115, 0x8963, 0x8963, 0x3231, 0x8964, 0x8964, 0x1641, - 0x8965, 0x8965, 0x3B93, 0x8966, 0x8966, 0x3232, 0x8969, 0x8969, 0x330D, - 0x896A, 0x896A, 0x168C, 0x896B, 0x896B, 0x330F, 0x896C, 0x896C, 0x168D, - 0x896D, 0x896D, 0x330C, 0x896E, 0x896E, 0x330E, 0x896F, 0x896F, 0x16D6, - 0x8971, 0x8971, 0x33B2, 0x8972, 0x8972, 0x16D5, 0x8973, 0x8973, 0x343B, - 0x8974, 0x8974, 0x343A, 0x8976, 0x8976, 0x3439, 0x8977, 0x8977, 0x3DEA, - 0x8979, 0x897A, 0x34E2, 0x897B, 0x897B, 0x34E5, 0x897C, 0x897C, 0x34E4, - 0x897E, 0x897E, 0x1819, 0x897F, 0x897F, 0x0413, 0x8980, 0x8980, 0x4708, - 0x8981, 0x8981, 0x0805, 0x8982, 0x8982, 0x2063, 0x8983, 0x8983, 0x0D55, - 0x8985, 0x8985, 0x2580, 0x8986, 0x8986, 0x1527, 0x8987, 0x8987, 0x3822, - 0x8988, 0x8988, 0x311E, 0x8989, 0x8989, 0x3FE9, 0x898A, 0x898A, 0x3823, - 0x898B, 0x898B, 0x0508, 0x898F, 0x898F, 0x0B9D, 0x8991, 0x8991, 0x4778, - 0x8993, 0x8993, 0x0B9C, 0x8994, 0x8994, 0x3FE0, 0x8995, 0x8995, 0x22E3, - 0x8996, 0x8996, 0x0D56, 0x8997, 0x8997, 0x22E5, 0x8998, 0x8998, 0x22E4, - 0x899B, 0x899B, 0x2581, 0x899C, 0x899C, 0x0F05, 0x899D, 0x899D, 0x27FC, - 0x899E, 0x899E, 0x27FF, 0x899F, 0x899F, 0x27FE, 0x89A1, 0x89A1, 0x27FD, - 0x89A2, 0x89A2, 0x2A3C, 0x89A3, 0x89A3, 0x2A3E, 0x89A4, 0x89A4, 0x2A3D, - 0x89A5, 0x89A5, 0x3D93, 0x89A6, 0x89A6, 0x134C, 0x89A7, 0x89A7, 0x3826, - 0x89A9, 0x89A9, 0x3825, 0x89AA, 0x89AA, 0x134B, 0x89AC, 0x89AC, 0x1476, - 0x89AD, 0x89AD, 0x2E56, 0x89AE, 0x89AE, 0x2E58, 0x89AF, 0x89AF, 0x2E57, - 0x89B2, 0x89B2, 0x1528, 0x89B6, 0x89B6, 0x3120, 0x89B7, 0x89B7, 0x311F, - 0x89B9, 0x89B9, 0x3233, 0x89BA, 0x89BA, 0x1642, 0x89BC, 0x89BC, 0x3827, - 0x89BD, 0x89BD, 0x168E, 0x89BE, 0x89BE, 0x33B4, 0x89BF, 0x89BF, 0x33B3, - 0x89C0, 0x89C0, 0x1748, 0x89C1, 0x89C1, 0x4503, 0x89C6, 0x89C6, 0x4566, - 0x89D2, 0x89D2, 0x0509, 0x89D3, 0x89D3, 0x1C03, 0x89D4, 0x89D4, 0x0806, - 0x89D5, 0x89D5, 0x2066, 0x89D6, 0x89D6, 0x2064, 0x89D9, 0x89D9, 0x2065, - 0x89DA, 0x89DB, 0x22E7, 0x89DC, 0x89DC, 0x2588, 0x89DD, 0x89DD, 0x22E6, - 0x89DF, 0x89DF, 0x2582, 0x89E0, 0x89E0, 0x2586, 0x89E1, 0x89E1, 0x2585, - 0x89E2, 0x89E2, 0x2587, 0x89E3, 0x89E3, 0x0F06, 0x89E4, 0x89E4, 0x2584, - 0x89E5, 0x89E5, 0x2583, 0x89E6, 0x89E6, 0x2589, 0x89E7, 0x89E7, 0x3829, - 0x89E8, 0x89E8, 0x2802, 0x89E9, 0x89E9, 0x2800, 0x89EB, 0x89EB, 0x2801, - 0x89EC, 0x89EC, 0x2A41, 0x89ED, 0x89ED, 0x2A3F, 0x89F0, 0x89F0, 0x2A40, - 0x89F1, 0x89F1, 0x2C84, 0x89F2, 0x89F3, 0x2E59, 0x89F4, 0x89F4, 0x1529, - 0x89F6, 0x89F6, 0x3121, 0x89F7, 0x89F7, 0x3234, 0x89F8, 0x89F8, 0x1643, - 0x89FA, 0x89FA, 0x3310, 0x89FB, 0x89FB, 0x33B5, 0x89FC, 0x89FC, 0x16D7, - 0x89FE, 0x89FE, 0x343C, 0x89FF, 0x89FF, 0x34E6, 0x8A00, 0x8A00, 0x050A, - 0x8A02, 0x8A03, 0x0808, 0x8A04, 0x8A04, 0x1C04, 0x8A07, 0x8A07, 0x1C05, - 0x8A08, 0x8A08, 0x0807, 0x8A0A, 0x8A0A, 0x09C3, 0x8A0C, 0x8A0C, 0x09C1, - 0x8A0E, 0x8A0E, 0x09C0, 0x8A0F, 0x8A0F, 0x09C7, 0x8A10, 0x8A10, 0x09BF, - 0x8A11, 0x8A11, 0x09C8, 0x8A12, 0x8A12, 0x1E08, 0x8A13, 0x8A13, 0x09C5, - 0x8A15, 0x8A15, 0x09C2, 0x8A16, 0x8A16, 0x09C6, 0x8A17, 0x8A17, 0x09C4, - 0x8A18, 0x8A18, 0x09BE, 0x8A1B, 0x8A1B, 0x0BA5, 0x8A1C, 0x8A1C, 0x3BA3, - 0x8A1D, 0x8A1D, 0x0B9F, 0x8A1E, 0x8A1E, 0x206A, 0x8A1F, 0x8A1F, 0x0BA4, - 0x8A22, 0x8A22, 0x0BA6, 0x8A23, 0x8A23, 0x0BA0, 0x8A25, 0x8A25, 0x0BA1, - 0x8A27, 0x8A27, 0x2068, 0x8A29, 0x8A29, 0x43E5, 0x8A2A, 0x8A2A, 0x0B9E, - 0x8A2B, 0x8A2B, 0x3BD1, 0x8A2C, 0x8A2C, 0x2069, 0x8A2D, 0x8A2D, 0x0BA3, - 0x8A30, 0x8A30, 0x2067, 0x8A31, 0x8A31, 0x0BA2, 0x8A34, 0x8A34, 0x0D61, - 0x8A36, 0x8A36, 0x0D63, 0x8A38, 0x8A38, 0x477A, 0x8A39, 0x8A39, 0x22EB, - 0x8A3A, 0x8A3A, 0x0D62, 0x8A3B, 0x8A3B, 0x0D57, 0x8A3C, 0x8A3C, 0x0D5B, - 0x8A3D, 0x8A3D, 0x3BA2, 0x8A3E, 0x8A3E, 0x0F19, 0x8A3F, 0x8A3F, 0x258E, - 0x8A40, 0x8A40, 0x22ED, 0x8A41, 0x8A41, 0x0D5C, 0x8A44, 0x8A45, 0x22F0, - 0x8A46, 0x8A46, 0x0D60, 0x8A48, 0x8A48, 0x22F3, 0x8A49, 0x8A49, 0x3FF0, - 0x8A4A, 0x8A4A, 0x22F5, 0x8A4C, 0x8A4C, 0x22F6, 0x8A4D, 0x8A4D, 0x22EA, - 0x8A4E, 0x8A4E, 0x22E9, 0x8A4F, 0x8A4F, 0x22F7, 0x8A50, 0x8A50, 0x0D5F, - 0x8A51, 0x8A51, 0x22F4, 0x8A52, 0x8A52, 0x22F2, 0x8A54, 0x8A54, 0x0D5D, - 0x8A55, 0x8A55, 0x0D59, 0x8A56, 0x8A56, 0x0D64, 0x8A57, 0x8A58, 0x22EE, - 0x8A59, 0x8A59, 0x22EC, 0x8A5B, 0x8A5B, 0x0D5E, 0x8A5E, 0x8A5E, 0x0D5A, - 0x8A60, 0x8A60, 0x0D58, 0x8A61, 0x8A61, 0x258D, 0x8A62, 0x8A62, 0x0F14, - 0x8A63, 0x8A63, 0x0F0F, 0x8A66, 0x8A66, 0x0F0A, 0x8A67, 0x8A67, 0x3F8E, - 0x8A68, 0x8A68, 0x0F1A, 0x8A69, 0x8A69, 0x0F0B, 0x8A6B, 0x8A6B, 0x0F07, - 0x8A6C, 0x8A6C, 0x0F16, 0x8A6D, 0x8A6D, 0x0F13, 0x8A6E, 0x8A6E, 0x0F15, - 0x8A70, 0x8A70, 0x0F0C, 0x8A71, 0x8A71, 0x0F11, 0x8A72, 0x8A73, 0x0F08, - 0x8A74, 0x8A74, 0x2595, 0x8A75, 0x8A75, 0x2592, 0x8A76, 0x8A76, 0x258A, - 0x8A77, 0x8A77, 0x258F, 0x8A79, 0x8A79, 0x0F17, 0x8A7A, 0x8A7A, 0x2596, - 0x8A7B, 0x8A7B, 0x0F18, 0x8A7C, 0x8A7C, 0x0F0E, 0x8A7E, 0x8A7E, 0x3FA5, - 0x8A7F, 0x8A7F, 0x258C, 0x8A81, 0x8A81, 0x2594, 0x8A82, 0x8A82, 0x2590, - 0x8A83, 0x8A83, 0x2593, 0x8A84, 0x8A84, 0x2591, 0x8A85, 0x8A85, 0x0F12, - 0x8A86, 0x8A86, 0x258B, 0x8A87, 0x8A87, 0x0F0D, 0x8A8B, 0x8A8B, 0x2805, - 0x8A8C, 0x8A8C, 0x10A6, 0x8A8D, 0x8A8D, 0x10A9, 0x8A8F, 0x8A8F, 0x2807, - 0x8A90, 0x8A90, 0x382F, 0x8A91, 0x8A91, 0x10B1, 0x8A92, 0x8A92, 0x2806, - 0x8A93, 0x8A93, 0x10AB, 0x8A94, 0x8A94, 0x477B, 0x8A95, 0x8A95, 0x1216, - 0x8A96, 0x8A96, 0x2808, 0x8A98, 0x8A98, 0x10B0, 0x8A99, 0x8A99, 0x2804, - 0x8A9A, 0x8A9A, 0x10B2, 0x8A9C, 0x8A9C, 0x382C, 0x8A9E, 0x8A9E, 0x10A7, - 0x8AA0, 0x8AA0, 0x0F10, 0x8AA1, 0x8AA1, 0x10AA, 0x8AA3, 0x8AA3, 0x10A8, - 0x8AA4, 0x8AA4, 0x10AC, 0x8AA5, 0x8AA5, 0x10AE, 0x8AA6, 0x8AA6, 0x10A5, - 0x8AA7, 0x8AA7, 0x10B3, 0x8AA8, 0x8AA8, 0x10AF, 0x8AA9, 0x8AA9, 0x383D, - 0x8AAA, 0x8AAA, 0x10AD, 0x8AAB, 0x8AAB, 0x2803, 0x8AAF, 0x8AAF, 0x3841, - 0x8AB0, 0x8AB0, 0x121D, 0x8AB2, 0x8AB2, 0x1219, 0x8AB4, 0x8AB4, 0x477C, - 0x8AB6, 0x8AB6, 0x1220, 0x8AB8, 0x8AB8, 0x2A44, 0x8AB9, 0x8AB9, 0x1221, - 0x8ABA, 0x8ABA, 0x2A50, 0x8ABB, 0x8ABB, 0x2A49, 0x8ABC, 0x8ABC, 0x1212, - 0x8ABD, 0x8ABD, 0x2A51, 0x8ABE, 0x8ABE, 0x2A4B, 0x8ABF, 0x8ABF, 0x121C, - 0x8AC0, 0x8AC0, 0x2A4C, 0x8AC2, 0x8AC2, 0x121B, 0x8AC3, 0x8AC3, 0x2A4F, - 0x8AC4, 0x8AC4, 0x1215, 0x8AC5, 0x8AC5, 0x2A4D, 0x8AC6, 0x8AC6, 0x2A43, - 0x8AC7, 0x8AC7, 0x1214, 0x8AC8, 0x8AC8, 0x2C8F, 0x8AC9, 0x8AC9, 0x121A, - 0x8ACB, 0x8ACB, 0x1217, 0x8ACD, 0x8ACD, 0x121F, 0x8ACF, 0x8ACF, 0x2A42, - 0x8AD1, 0x8AD1, 0x2A46, 0x8AD2, 0x8AD2, 0x1213, 0x8AD3, 0x8AD3, 0x2A45, - 0x8AD4, 0x8AD5, 0x2A47, 0x8AD6, 0x8AD6, 0x121E, 0x8AD7, 0x8AD7, 0x2A4A, - 0x8AD8, 0x8AD8, 0x2A4E, 0x8AD9, 0x8AD9, 0x2A52, 0x8ADA, 0x8ADA, 0x39C2, - 0x8ADB, 0x8ADB, 0x1222, 0x8ADC, 0x8ADC, 0x1352, 0x8ADD, 0x8ADD, 0x2C8A, - 0x8ADE, 0x8ADE, 0x2C90, 0x8ADF, 0x8ADF, 0x2C8D, 0x8AE0, 0x8AE0, 0x2C85, - 0x8AE1, 0x8AE1, 0x2C91, 0x8AE2, 0x8AE2, 0x2C86, 0x8AE4, 0x8AE4, 0x2C8C, - 0x8AE6, 0x8AE6, 0x134D, 0x8AE7, 0x8AE7, 0x1353, 0x8AE8, 0x8AE8, 0x2C92, - 0x8AEA, 0x8AEA, 0x3DD9, 0x8AEB, 0x8AEB, 0x134F, 0x8AED, 0x8AED, 0x1359, - 0x8AEE, 0x8AEE, 0x1354, 0x8AEF, 0x8AEF, 0x2C94, 0x8AF0, 0x8AF0, 0x2C8E, - 0x8AF1, 0x8AF1, 0x1350, 0x8AF2, 0x8AF2, 0x2C87, 0x8AF3, 0x8AF3, 0x135A, - 0x8AF4, 0x8AF5, 0x2C88, 0x8AF6, 0x8AF6, 0x135B, 0x8AF7, 0x8AF7, 0x1358, - 0x8AF8, 0x8AF8, 0x1218, 0x8AFA, 0x8AFA, 0x134E, 0x8AFB, 0x8AFB, 0x2C95, - 0x8AFC, 0x8AFC, 0x135C, 0x8AFE, 0x8AFE, 0x1355, 0x8AFF, 0x8AFF, 0x2C93, - 0x8B00, 0x8B00, 0x1351, 0x8B01, 0x8B02, 0x1356, 0x8B04, 0x8B04, 0x147E, - 0x8B05, 0x8B05, 0x2E5F, 0x8B06, 0x8B06, 0x2E68, 0x8B07, 0x8B07, 0x2E65, - 0x8B08, 0x8B08, 0x2E67, 0x8B0A, 0x8B0A, 0x147B, 0x8B0B, 0x8B0B, 0x2E60, - 0x8B0C, 0x8B0C, 0x3836, 0x8B0D, 0x8B0D, 0x2E66, 0x8B0E, 0x8B0E, 0x1477, - 0x8B0F, 0x8B0F, 0x2E62, 0x8B10, 0x8B10, 0x147F, 0x8B11, 0x8B11, 0x2E5E, - 0x8B12, 0x8B12, 0x2E63, 0x8B13, 0x8B13, 0x2E6A, 0x8B14, 0x8B14, 0x2C8B, - 0x8B15, 0x8B15, 0x2E64, 0x8B16, 0x8B16, 0x2E5D, 0x8B17, 0x8B17, 0x1478, - 0x8B18, 0x8B18, 0x2E5C, 0x8B19, 0x8B19, 0x1479, 0x8B1A, 0x8B1A, 0x2E6B, - 0x8B1B, 0x8B1B, 0x147A, 0x8B1C, 0x8B1C, 0x2E69, 0x8B1D, 0x8B1D, 0x147D, - 0x8B1E, 0x8B1E, 0x2E5B, 0x8B1F, 0x8B1F, 0x3837, 0x8B20, 0x8B20, 0x147C, - 0x8B22, 0x8B22, 0x2E61, 0x8B23, 0x8B23, 0x2FCE, 0x8B24, 0x8B24, 0x2FDC, - 0x8B25, 0x8B25, 0x2FD7, 0x8B26, 0x8B26, 0x2FD9, 0x8B27, 0x8B27, 0x2FCD, - 0x8B28, 0x8B28, 0x152A, 0x8B2A, 0x8B2A, 0x2FCC, 0x8B2B, 0x8B2B, 0x152D, - 0x8B2C, 0x8B2C, 0x152C, 0x8B2D, 0x8B2D, 0x3F99, 0x8B2E, 0x8B2E, 0x2FDB, - 0x8B2F, 0x8B2F, 0x2FD3, 0x8B30, 0x8B30, 0x2FD0, 0x8B31, 0x8B31, 0x2FD6, - 0x8B33, 0x8B33, 0x2FCF, 0x8B35, 0x8B35, 0x2FD1, 0x8B36, 0x8B36, 0x2FDA, - 0x8B37, 0x8B37, 0x2FD8, 0x8B39, 0x8B39, 0x152B, 0x8B3A, 0x8B3A, 0x2FDF, - 0x8B3B, 0x8B3B, 0x2FDD, 0x8B3C, 0x8B3C, 0x2FD4, 0x8B3D, 0x8B3D, 0x2FDE, - 0x8B3E, 0x8B3E, 0x2FD5, 0x8B3F, 0x8B3F, 0x383A, 0x8B40, 0x8B40, 0x3125, - 0x8B41, 0x8B41, 0x15C4, 0x8B42, 0x8B42, 0x312C, 0x8B43, 0x8B43, 0x3FF2, - 0x8B45, 0x8B45, 0x3313, 0x8B46, 0x8B46, 0x15CB, 0x8B47, 0x8B47, 0x2FD2, - 0x8B48, 0x8B48, 0x3123, 0x8B49, 0x8B49, 0x15C7, 0x8B4A, 0x8B4A, 0x3124, - 0x8B4B, 0x8B4B, 0x3129, 0x8B4C, 0x8B4D, 0x383B, 0x8B4E, 0x8B4F, 0x15C9, - 0x8B50, 0x8B50, 0x3122, 0x8B51, 0x8B51, 0x312B, 0x8B52, 0x8B52, 0x312D, - 0x8B53, 0x8B53, 0x3126, 0x8B54, 0x8B54, 0x3128, 0x8B55, 0x8B55, 0x312A, - 0x8B56, 0x8B56, 0x3127, 0x8B57, 0x8B57, 0x312E, 0x8B58, 0x8B58, 0x15C6, - 0x8B59, 0x8B59, 0x15CC, 0x8B5A, 0x8B5A, 0x15C8, 0x8B5C, 0x8B5C, 0x15C5, - 0x8B5D, 0x8B5D, 0x3237, 0x8B5E, 0x8B5E, 0x3DB8, 0x8B5F, 0x8B5F, 0x1648, - 0x8B60, 0x8B60, 0x3235, 0x8B62, 0x8B62, 0x3DD4, 0x8B63, 0x8B63, 0x3239, - 0x8B65, 0x8B65, 0x323A, 0x8B66, 0x8B66, 0x1646, 0x8B67, 0x8B67, 0x323B, - 0x8B68, 0x8B68, 0x3238, 0x8B69, 0x8B69, 0x3BF7, 0x8B6A, 0x8B6A, 0x3236, - 0x8B6B, 0x8B6B, 0x1649, 0x8B6C, 0x8B6C, 0x1645, 0x8B6D, 0x8B6D, 0x323C, - 0x8B6F, 0x8B6F, 0x1647, 0x8B70, 0x8B70, 0x1644, 0x8B74, 0x8B74, 0x168F, - 0x8B77, 0x8B77, 0x1690, 0x8B78, 0x8B78, 0x3312, 0x8B79, 0x8B79, 0x3311, - 0x8B7A, 0x8B7B, 0x3314, 0x8B7D, 0x8B7D, 0x1691, 0x8B7E, 0x8B7E, 0x33B6, - 0x8B7F, 0x8B7F, 0x33BB, 0x8B80, 0x8B80, 0x16D8, 0x8B81, 0x8B81, 0x3D8D, - 0x8B82, 0x8B82, 0x33B8, 0x8B84, 0x8B84, 0x33B7, 0x8B85, 0x8B85, 0x33BA, - 0x8B86, 0x8B86, 0x33B9, 0x8B88, 0x8B88, 0x3440, 0x8B8A, 0x8B8A, 0x170A, - 0x8B8B, 0x8B8B, 0x343F, 0x8B8C, 0x8B8C, 0x343D, 0x8B8E, 0x8B8E, 0x343E, - 0x8B90, 0x8B90, 0x383F, 0x8B92, 0x8B92, 0x172C, 0x8B93, 0x8B93, 0x172B, - 0x8B94, 0x8B95, 0x349C, 0x8B96, 0x8B96, 0x172D, 0x8B98, 0x8B99, 0x34E7, - 0x8B9A, 0x8B9A, 0x1754, 0x8B9B, 0x8B9B, 0x3840, 0x8B9C, 0x8B9C, 0x175A, - 0x8B9E, 0x8B9E, 0x3522, 0x8B9F, 0x8B9F, 0x353F, 0x8BA0, 0x8BA0, 0x4505, - 0x8BBE, 0x8BBE, 0x4567, 0x8BE2, 0x8BE2, 0x4568, 0x8C37, 0x8C37, 0x050B, - 0x8C39, 0x8C39, 0x206B, 0x8C3B, 0x8C3B, 0x206C, 0x8C3C, 0x8C3C, 0x2597, - 0x8C3D, 0x8C3D, 0x2809, 0x8C3E, 0x8C3E, 0x2A53, 0x8C3F, 0x8C3F, 0x1481, - 0x8C41, 0x8C41, 0x1480, 0x8C42, 0x8C42, 0x2FE0, 0x8C43, 0x8C43, 0x312F, - 0x8C45, 0x8C45, 0x3441, 0x8C46, 0x8C46, 0x050C, 0x8C47, 0x8C47, 0x1E09, - 0x8C48, 0x8C48, 0x09C9, 0x8C49, 0x8C49, 0x0BA7, 0x8C4A, 0x8C4A, 0x2599, - 0x8C4B, 0x8C4B, 0x2598, 0x8C4C, 0x8C4C, 0x1223, 0x8C4D, 0x8C4D, 0x2A54, - 0x8C4E, 0x8C4E, 0x1224, 0x8C4F, 0x8C4F, 0x2E6C, 0x8C50, 0x8C50, 0x152E, - 0x8C51, 0x8C51, 0x477D, 0x8C54, 0x8C54, 0x1763, 0x8C55, 0x8C55, 0x050D, - 0x8C56, 0x8C56, 0x1A48, 0x8C57, 0x8C57, 0x1E0A, 0x8C5A, 0x8C5A, 0x0BA8, - 0x8C5C, 0x8C5D, 0x206D, 0x8C5F, 0x8C5F, 0x22F8, 0x8C61, 0x8C61, 0x0D65, - 0x8C62, 0x8C62, 0x0F1B, 0x8C64, 0x8C64, 0x259B, 0x8C65, 0x8C65, 0x259A, - 0x8C66, 0x8C66, 0x259C, 0x8C68, 0x8C69, 0x280A, 0x8C6A, 0x8C6A, 0x10B4, - 0x8C6B, 0x8C6B, 0x135D, 0x8C6C, 0x8C6C, 0x1225, 0x8C6D, 0x8C6D, 0x135E, - 0x8C6F, 0x8C6F, 0x2E70, 0x8C70, 0x8C70, 0x2E6D, 0x8C71, 0x8C71, 0x2E6F, - 0x8C72, 0x8C72, 0x2E6E, 0x8C73, 0x8C73, 0x1482, 0x8C75, 0x8C75, 0x2FE1, - 0x8C76, 0x8C76, 0x3131, 0x8C77, 0x8C77, 0x3130, 0x8C78, 0x8C78, 0x18E7, - 0x8C79, 0x8C79, 0x09CB, 0x8C7A, 0x8C7A, 0x09CA, 0x8C7B, 0x8C7B, 0x1E0B, - 0x8C7D, 0x8C7D, 0x206F, 0x8C80, 0x8C80, 0x22FA, 0x8C81, 0x8C81, 0x22F9, - 0x8C82, 0x8C82, 0x0D66, 0x8C84, 0x8C85, 0x259E, 0x8C86, 0x8C86, 0x259D, - 0x8C89, 0x8C89, 0x0F1D, 0x8C8A, 0x8C8A, 0x0F1C, 0x8C8C, 0x8C8C, 0x10B6, - 0x8C8D, 0x8C8D, 0x10B5, 0x8C8F, 0x8C8F, 0x2A55, 0x8C90, 0x8C90, 0x2C98, - 0x8C91, 0x8C92, 0x2C96, 0x8C93, 0x8C93, 0x135F, 0x8C94, 0x8C94, 0x2E72, - 0x8C95, 0x8C95, 0x2E71, 0x8C97, 0x8C97, 0x2FE4, 0x8C98, 0x8C98, 0x2FE3, - 0x8C99, 0x8C99, 0x2FE2, 0x8C9A, 0x8C9A, 0x3132, 0x8C9B, 0x8C9B, 0x3845, - 0x8C9C, 0x8C9C, 0x3523, 0x8C9D, 0x8C9D, 0x050E, 0x8C9E, 0x8C9E, 0x080A, - 0x8C9F, 0x8C9F, 0x3BAD, 0x8CA0, 0x8CA0, 0x080B, 0x8CA1, 0x8CA2, 0x09CC, - 0x8CA3, 0x8CA3, 0x1E0D, 0x8CA4, 0x8CA4, 0x1E0C, 0x8CA5, 0x8CA5, 0x2070, - 0x8CA7, 0x8CA7, 0x0BAE, 0x8CA8, 0x8CA8, 0x0BAC, 0x8CA9, 0x8CA9, 0x0BA9, - 0x8CAA, 0x8CAA, 0x0BAD, 0x8CAB, 0x8CAB, 0x0BAB, 0x8CAC, 0x8CAC, 0x0BAA, - 0x8CAD, 0x8CAD, 0x3FF1, 0x8CAF, 0x8CAF, 0x0D67, 0x8CB0, 0x8CB0, 0x22FD, - 0x8CB2, 0x8CB2, 0x0F22, 0x8CB3, 0x8CB3, 0x0D69, 0x8CB4, 0x8CB4, 0x0D6E, - 0x8CB5, 0x8CB5, 0x22FF, 0x8CB6, 0x8CB6, 0x0D70, 0x8CB7, 0x8CB7, 0x0D6F, - 0x8CB8, 0x8CB8, 0x0D72, 0x8CB9, 0x8CB9, 0x22FE, 0x8CBA, 0x8CBA, 0x22FB, - 0x8CBB, 0x8CBB, 0x0D6C, 0x8CBC, 0x8CBC, 0x0D68, 0x8CBD, 0x8CBD, 0x0D6A, - 0x8CBE, 0x8CBE, 0x22FC, 0x8CBF, 0x8CBF, 0x0D71, 0x8CC0, 0x8CC0, 0x0D6D, - 0x8CC1, 0x8CC1, 0x0D6B, 0x8CC2, 0x8CC2, 0x0F24, 0x8CC3, 0x8CC3, 0x0F23, - 0x8CC4, 0x8CC4, 0x0F21, 0x8CC5, 0x8CC5, 0x0F25, 0x8CC7, 0x8CC8, 0x0F1F, - 0x8CCA, 0x8CCA, 0x0F1E, 0x8CCC, 0x8CCC, 0x25A0, 0x8CCD, 0x8CCD, 0x3E99, - 0x8CCF, 0x8CCF, 0x280D, 0x8CD1, 0x8CD2, 0x10B8, 0x8CD3, 0x8CD3, 0x10B7, - 0x8CD4, 0x8CD4, 0x477E, 0x8CD5, 0x8CD5, 0x280C, 0x8CD6, 0x8CD6, 0x384B, - 0x8CD7, 0x8CD7, 0x280E, 0x8CD9, 0x8CD9, 0x2A58, 0x8CDA, 0x8CDA, 0x2A5A, - 0x8CDB, 0x8CDB, 0x3851, 0x8CDC, 0x8CDC, 0x122E, 0x8CDD, 0x8CDD, 0x2A5B, - 0x8CDE, 0x8CDE, 0x1227, 0x8CDF, 0x8CDF, 0x2A57, 0x8CE0, 0x8CE0, 0x1226, - 0x8CE1, 0x8CE1, 0x1230, 0x8CE2, 0x8CE3, 0x122C, 0x8CE4, 0x8CE4, 0x1229, - 0x8CE5, 0x8CE5, 0x2A56, 0x8CE6, 0x8CE6, 0x1228, 0x8CE7, 0x8CE7, 0x2A5C, - 0x8CE8, 0x8CE8, 0x2A59, 0x8CE9, 0x8CE9, 0x3BAE, 0x8CEA, 0x8CEA, 0x122F, - 0x8CEB, 0x8CEB, 0x3F9C, 0x8CEC, 0x8CED, 0x122A, 0x8CEE, 0x8CEE, 0x2C9A, - 0x8CF0, 0x8CF0, 0x2C9C, 0x8CF1, 0x8CF1, 0x2C9B, 0x8CF2, 0x8CF2, 0x477F, - 0x8CF3, 0x8CF3, 0x2C9D, 0x8CF4, 0x8CF4, 0x1360, 0x8CF5, 0x8CF5, 0x2C99, - 0x8CF7, 0x8CF7, 0x3FB1, 0x8CF8, 0x8CF8, 0x1486, 0x8CF9, 0x8CF9, 0x2E73, - 0x8CFA, 0x8CFA, 0x1483, 0x8CFB, 0x8CFB, 0x1487, 0x8CFC, 0x8CFC, 0x1485, - 0x8CFD, 0x8CFD, 0x1484, 0x8CFE, 0x8CFE, 0x2FE5, 0x8D00, 0x8D00, 0x2FE8, - 0x8D02, 0x8D02, 0x2FE7, 0x8D03, 0x8D03, 0x384F, 0x8D04, 0x8D04, 0x2FE6, - 0x8D05, 0x8D05, 0x152F, 0x8D06, 0x8D07, 0x3133, 0x8D08, 0x8D08, 0x15CD, - 0x8D09, 0x8D09, 0x3135, 0x8D0A, 0x8D0A, 0x15CE, 0x8D0B, 0x8D0B, 0x4573, - 0x8D0C, 0x8D0C, 0x3F96, 0x8D0D, 0x8D0D, 0x164B, 0x8D0F, 0x8D0F, 0x164A, - 0x8D10, 0x8D10, 0x3316, 0x8D11, 0x8D11, 0x3853, 0x8D12, 0x8D12, 0x384E, - 0x8D13, 0x8D13, 0x1692, 0x8D14, 0x8D14, 0x3317, 0x8D15, 0x8D15, 0x33BC, - 0x8D16, 0x8D17, 0x16D9, 0x8D18, 0x8D18, 0x3E6F, 0x8D19, 0x8D19, 0x3442, - 0x8D1B, 0x8D1B, 0x172F, 0x8D1C, 0x8D1C, 0x4780, 0x8D1D, 0x8D1D, 0x4506, - 0x8D64, 0x8D64, 0x050F, 0x8D66, 0x8D66, 0x0BB0, 0x8D67, 0x8D67, 0x0BAF, - 0x8D68, 0x8D69, 0x25A1, 0x8D6B, 0x8D6B, 0x10BA, 0x8D6C, 0x8D6C, 0x2C9E, - 0x8D6D, 0x8D6D, 0x1231, 0x8D6E, 0x8D6E, 0x2C9F, 0x8D6F, 0x8D6F, 0x2E74, - 0x8D70, 0x8D70, 0x0510, 0x8D72, 0x8D72, 0x1C06, 0x8D73, 0x8D73, 0x080D, - 0x8D74, 0x8D74, 0x080C, 0x8D76, 0x8D76, 0x1E0E, 0x8D77, 0x8D77, 0x09CE, - 0x8D78, 0x8D78, 0x1E0F, 0x8D79, 0x8D79, 0x2073, 0x8D7A, 0x8D7A, 0x39E1, - 0x8D7B, 0x8D7B, 0x2072, 0x8D7D, 0x8D7D, 0x2071, 0x8D80, 0x8D80, 0x2301, - 0x8D81, 0x8D81, 0x0D75, 0x8D82, 0x8D82, 0x3F69, 0x8D84, 0x8D84, 0x2300, - 0x8D85, 0x8D85, 0x0D74, 0x8D89, 0x8D89, 0x2302, 0x8D8A, 0x8D8A, 0x0D73, - 0x8D8C, 0x8D8C, 0x25A4, 0x8D8D, 0x8D8D, 0x25A7, 0x8D8E, 0x8D8F, 0x25A5, - 0x8D90, 0x8D90, 0x25AA, 0x8D91, 0x8D91, 0x25A3, 0x8D92, 0x8D92, 0x25AB, - 0x8D93, 0x8D94, 0x25A8, 0x8D95, 0x8D95, 0x10BC, 0x8D96, 0x8D96, 0x280F, - 0x8D99, 0x8D99, 0x10BB, 0x8D9B, 0x8D9B, 0x2A60, 0x8D9C, 0x8D9C, 0x2A5E, - 0x8D9F, 0x8D9F, 0x1232, 0x8DA0, 0x8DA0, 0x2A5D, 0x8DA1, 0x8DA1, 0x2A5F, - 0x8DA3, 0x8DA3, 0x1233, 0x8DA5, 0x8DA5, 0x2CA0, 0x8DA6, 0x8DA6, 0x3FF7, - 0x8DA7, 0x8DA7, 0x2CA1, 0x8DA8, 0x8DA8, 0x1488, 0x8DA9, 0x8DA9, 0x3856, - 0x8DAA, 0x8DAA, 0x3137, 0x8DAB, 0x8DAB, 0x3139, 0x8DAC, 0x8DAC, 0x3136, - 0x8DAD, 0x8DAD, 0x3138, 0x8DAE, 0x8DAE, 0x323D, 0x8DAF, 0x8DAF, 0x3318, - 0x8DB2, 0x8DB2, 0x3509, 0x8DB3, 0x8DB3, 0x0511, 0x8DB4, 0x8DB4, 0x080E, - 0x8DB5, 0x8DB5, 0x1E10, 0x8DB6, 0x8DB6, 0x1E12, 0x8DB7, 0x8DB7, 0x1E11, - 0x8DB9, 0x8DB9, 0x2076, 0x8DBA, 0x8DBA, 0x0BB2, 0x8DBC, 0x8DBC, 0x2074, - 0x8DBE, 0x8DBE, 0x0BB1, 0x8DBF, 0x8DBF, 0x2077, 0x8DC0, 0x8DC0, 0x436A, - 0x8DC1, 0x8DC1, 0x2078, 0x8DC2, 0x8DC2, 0x2075, 0x8DC3, 0x8DC3, 0x4782, - 0x8DC5, 0x8DC5, 0x230E, 0x8DC6, 0x8DC6, 0x0D7D, 0x8DC7, 0x8DC7, 0x2306, - 0x8DC8, 0x8DC8, 0x230C, 0x8DCB, 0x8DCB, 0x0D78, 0x8DCC, 0x8DCC, 0x0D7B, - 0x8DCD, 0x8DCD, 0x2305, 0x8DCE, 0x8DCE, 0x0D76, 0x8DCF, 0x8DCF, 0x2309, - 0x8DD0, 0x8DD0, 0x25B1, 0x8DD1, 0x8DD1, 0x0D7A, 0x8DD3, 0x8DD3, 0x2304, - 0x8DD4, 0x8DD4, 0x3F82, 0x8DD5, 0x8DD5, 0x230A, 0x8DD6, 0x8DD6, 0x2307, - 0x8DD7, 0x8DD7, 0x230D, 0x8DD8, 0x8DD8, 0x2303, 0x8DD9, 0x8DD9, 0x230B, - 0x8DDA, 0x8DDA, 0x0D79, 0x8DDB, 0x8DDB, 0x0D7C, 0x8DDC, 0x8DDC, 0x2308, - 0x8DDD, 0x8DDD, 0x0D77, 0x8DDF, 0x8DDF, 0x0F27, 0x8DE0, 0x8DE0, 0x25AD, - 0x8DE1, 0x8DE1, 0x0F26, 0x8DE2, 0x8DE2, 0x25B4, 0x8DE3, 0x8DE3, 0x25B3, - 0x8DE4, 0x8DE4, 0x0F2D, 0x8DE6, 0x8DE6, 0x0F2E, 0x8DE7, 0x8DE7, 0x25B5, - 0x8DE8, 0x8DE8, 0x0F28, 0x8DE9, 0x8DE9, 0x25B2, 0x8DEA, 0x8DEA, 0x0F2C, - 0x8DEB, 0x8DEB, 0x25B7, 0x8DEC, 0x8DEC, 0x25AE, 0x8DEE, 0x8DEE, 0x25B0, - 0x8DEF, 0x8DEF, 0x0F29, 0x8DF0, 0x8DF0, 0x25AC, 0x8DF1, 0x8DF1, 0x25AF, - 0x8DF2, 0x8DF2, 0x25B6, 0x8DF3, 0x8DF3, 0x0F2A, 0x8DF4, 0x8DF4, 0x25B8, - 0x8DFA, 0x8DFA, 0x0F2B, 0x8DFC, 0x8DFC, 0x10BD, 0x8DFD, 0x8DFD, 0x2814, - 0x8DFE, 0x8DFE, 0x281A, 0x8DFF, 0x8DFF, 0x2812, 0x8E00, 0x8E00, 0x281B, - 0x8E01, 0x8E01, 0x3F85, 0x8E02, 0x8E02, 0x2811, 0x8E03, 0x8E03, 0x2816, - 0x8E04, 0x8E04, 0x281C, 0x8E05, 0x8E05, 0x2819, 0x8E06, 0x8E06, 0x2818, - 0x8E07, 0x8E07, 0x2817, 0x8E09, 0x8E09, 0x2810, 0x8E0A, 0x8E0A, 0x2815, - 0x8E0D, 0x8E0D, 0x2813, 0x8E0E, 0x8E0E, 0x3E5E, 0x8E0F, 0x8E0F, 0x1238, - 0x8E10, 0x8E10, 0x1235, 0x8E11, 0x8E11, 0x2A69, 0x8E12, 0x8E12, 0x2A6E, - 0x8E13, 0x8E13, 0x2A70, 0x8E14, 0x8E14, 0x2A6D, 0x8E15, 0x8E15, 0x2A66, - 0x8E16, 0x8E16, 0x2A68, 0x8E17, 0x8E17, 0x2A72, 0x8E18, 0x8E18, 0x2A6F, - 0x8E19, 0x8E19, 0x2A6A, 0x8E1A, 0x8E1A, 0x2A73, 0x8E1B, 0x8E1B, 0x2A67, - 0x8E1C, 0x8E1C, 0x2A71, 0x8E1D, 0x8E1D, 0x1236, 0x8E1E, 0x8E1E, 0x123C, - 0x8E1F, 0x8E1F, 0x123A, 0x8E20, 0x8E20, 0x2A61, 0x8E21, 0x8E21, 0x123B, - 0x8E22, 0x8E22, 0x1237, 0x8E23, 0x8E23, 0x2A62, 0x8E24, 0x8E24, 0x2A64, - 0x8E25, 0x8E25, 0x2A63, 0x8E26, 0x8E27, 0x2A6B, 0x8E28, 0x8E28, 0x3F88, - 0x8E29, 0x8E29, 0x1239, 0x8E2A, 0x8E2A, 0x3BB4, 0x8E2B, 0x8E2B, 0x1234, - 0x8E2D, 0x8E2D, 0x3EAB, 0x8E2E, 0x8E2E, 0x2A65, 0x8E30, 0x8E30, 0x2CAB, - 0x8E31, 0x8E31, 0x1362, 0x8E33, 0x8E33, 0x2CA2, 0x8E34, 0x8E34, 0x1363, - 0x8E35, 0x8E35, 0x1366, 0x8E36, 0x8E36, 0x2CA7, 0x8E38, 0x8E38, 0x2CA4, - 0x8E39, 0x8E39, 0x1365, 0x8E3A, 0x8E3A, 0x4784, 0x8E3C, 0x8E3D, 0x2CA8, - 0x8E3E, 0x8E3E, 0x2CA3, 0x8E3F, 0x8E3F, 0x2CAC, 0x8E40, 0x8E40, 0x2CA5, - 0x8E41, 0x8E41, 0x2CAA, 0x8E42, 0x8E42, 0x1364, 0x8E44, 0x8E44, 0x1361, - 0x8E45, 0x8E45, 0x2CA6, 0x8E46, 0x8E46, 0x4312, 0x8E47, 0x8E47, 0x2E7A, - 0x8E48, 0x8E48, 0x148B, 0x8E49, 0x8E49, 0x1489, 0x8E4A, 0x8E4A, 0x148C, - 0x8E4B, 0x8E4B, 0x148A, 0x8E4C, 0x8E4C, 0x2E79, 0x8E4D, 0x8E4D, 0x2E76, - 0x8E4E, 0x8E4E, 0x2E75, 0x8E4F, 0x8E4F, 0x3F83, 0x8E50, 0x8E50, 0x2E78, - 0x8E53, 0x8E53, 0x2E77, 0x8E54, 0x8E54, 0x2FF6, 0x8E55, 0x8E55, 0x1535, - 0x8E56, 0x8E56, 0x2FED, 0x8E57, 0x8E57, 0x2FEC, 0x8E59, 0x8E59, 0x1530, - 0x8E5A, 0x8E5A, 0x2FF2, 0x8E5B, 0x8E5B, 0x2FF1, 0x8E5C, 0x8E5C, 0x2FE9, - 0x8E5D, 0x8E5D, 0x2FF4, 0x8E5E, 0x8E5E, 0x2FEE, 0x8E5F, 0x8E5F, 0x1534, - 0x8E60, 0x8E60, 0x2FEB, 0x8E61, 0x8E61, 0x2FF3, 0x8E62, 0x8E62, 0x2FEA, - 0x8E63, 0x8E63, 0x1531, 0x8E64, 0x8E64, 0x1533, 0x8E65, 0x8E65, 0x2FEF, - 0x8E66, 0x8E66, 0x1532, 0x8E67, 0x8E67, 0x2FF0, 0x8E68, 0x8E68, 0x434D, - 0x8E69, 0x8E69, 0x2FF5, 0x8E6A, 0x8E6A, 0x313D, 0x8E6C, 0x8E6C, 0x15D3, - 0x8E6D, 0x8E6D, 0x313A, 0x8E6F, 0x8E6F, 0x313E, 0x8E71, 0x8E71, 0x43E7, - 0x8E72, 0x8E72, 0x15D0, 0x8E73, 0x8E73, 0x313C, 0x8E74, 0x8E74, 0x15D5, - 0x8E75, 0x8E75, 0x3F89, 0x8E76, 0x8E76, 0x15D2, 0x8E77, 0x8E77, 0x3F7F, - 0x8E78, 0x8E78, 0x313B, 0x8E7A, 0x8E7A, 0x15D4, 0x8E7B, 0x8E7B, 0x313F, - 0x8E7C, 0x8E7C, 0x15CF, 0x8E7E, 0x8E7E, 0x4324, 0x8E80, 0x8E80, 0x3E57, - 0x8E81, 0x8E81, 0x164D, 0x8E82, 0x8E82, 0x164F, 0x8E84, 0x8E84, 0x3240, - 0x8E85, 0x8E85, 0x164E, 0x8E86, 0x8E86, 0x323E, 0x8E87, 0x8E87, 0x15D1, - 0x8E88, 0x8E88, 0x323F, 0x8E89, 0x8E89, 0x164C, 0x8E8A, 0x8E8A, 0x1693, - 0x8E8B, 0x8E8B, 0x1695, 0x8E8C, 0x8E8C, 0x331A, 0x8E8D, 0x8E8D, 0x1694, - 0x8E8E, 0x8E8E, 0x3319, 0x8E90, 0x8E90, 0x33C1, 0x8E91, 0x8E91, 0x16DB, - 0x8E92, 0x8E92, 0x33C0, 0x8E93, 0x8E93, 0x16DC, 0x8E94, 0x8E94, 0x33BE, - 0x8E95, 0x8E95, 0x33BD, 0x8E96, 0x8E97, 0x33C2, 0x8E98, 0x8E98, 0x3443, - 0x8E9A, 0x8E9A, 0x33BF, 0x8E9D, 0x8E9D, 0x34A1, 0x8E9E, 0x8EA0, 0x349E, - 0x8EA1, 0x8EA1, 0x1749, 0x8EA3, 0x8EA3, 0x34EB, 0x8EA4, 0x8EA4, 0x34EA, - 0x8EA5, 0x8EA5, 0x34E9, 0x8EA6, 0x8EA6, 0x350A, 0x8EA7, 0x8EA7, 0x3BB5, - 0x8EA8, 0x8EA8, 0x3537, 0x8EA9, 0x8EA9, 0x3524, 0x8EAA, 0x8EAA, 0x175B, - 0x8EAB, 0x8EAB, 0x0512, 0x8EAC, 0x8EAC, 0x09CF, 0x8EAD, 0x8EAD, 0x385E, - 0x8EB0, 0x8EB0, 0x43E9, 0x8EB2, 0x8EB2, 0x0F2F, 0x8EB6, 0x8EB6, 0x385F, - 0x8EBA, 0x8EBA, 0x123D, 0x8EBC, 0x8EBC, 0x38A0, 0x8EBD, 0x8EBD, 0x2CAD, - 0x8EC0, 0x8EC0, 0x1536, 0x8EC2, 0x8EC2, 0x3140, 0x8EC3, 0x8EC3, 0x3860, - 0x8EC9, 0x8EC9, 0x3525, 0x8ECA, 0x8ECA, 0x0513, 0x8ECB, 0x8ECB, 0x068D, - 0x8ECC, 0x8ECC, 0x0810, 0x8ECD, 0x8ECD, 0x080F, 0x8ECE, 0x8ECE, 0x4788, - 0x8ECF, 0x8ECF, 0x09D2, 0x8ED1, 0x8ED1, 0x1E13, 0x8ED2, 0x8ED2, 0x09D0, - 0x8ED3, 0x8ED3, 0x1E14, 0x8ED4, 0x8ED4, 0x09D1, 0x8ED7, 0x8ED7, 0x207D, - 0x8ED8, 0x8ED8, 0x2079, 0x8EDA, 0x8EDA, 0x3DBE, 0x8EDB, 0x8EDB, 0x0BB3, - 0x8EDC, 0x8EDC, 0x207C, 0x8EDD, 0x8EDD, 0x207B, 0x8EDE, 0x8EDE, 0x207A, - 0x8EDF, 0x8EDF, 0x0BB4, 0x8EE0, 0x8EE1, 0x207E, 0x8EE2, 0x8EE2, 0x4789, - 0x8EE4, 0x8EE4, 0x478A, 0x8EE5, 0x8EE5, 0x2315, 0x8EE6, 0x8EE6, 0x2313, - 0x8EE7, 0x8EE8, 0x2317, 0x8EE9, 0x8EE9, 0x231E, 0x8EEB, 0x8EEB, 0x231A, - 0x8EEC, 0x8EEC, 0x231C, 0x8EED, 0x8EED, 0x478B, 0x8EEE, 0x8EEE, 0x2314, - 0x8EEF, 0x8EEF, 0x230F, 0x8EF1, 0x8EF1, 0x231B, 0x8EF2, 0x8EF2, 0x478C, - 0x8EF4, 0x8EF4, 0x231D, 0x8EF5, 0x8EF5, 0x2316, 0x8EF6, 0x8EF6, 0x2319, - 0x8EF7, 0x8EF7, 0x2310, 0x8EF8, 0x8EF8, 0x0D7F, 0x8EF9, 0x8EF9, 0x2312, - 0x8EFA, 0x8EFA, 0x2311, 0x8EFB, 0x8EFB, 0x0D7E, 0x8EFC, 0x8EFC, 0x0D80, - 0x8EFE, 0x8EFE, 0x0F32, 0x8EFF, 0x8EFF, 0x25BA, 0x8F00, 0x8F00, 0x25BC, - 0x8F01, 0x8F01, 0x25BB, 0x8F02, 0x8F02, 0x25C0, 0x8F03, 0x8F03, 0x0F30, - 0x8F05, 0x8F05, 0x25BD, 0x8F06, 0x8F06, 0x25B9, 0x8F07, 0x8F08, 0x25BE, - 0x8F09, 0x8F09, 0x0F31, 0x8F0A, 0x8F0A, 0x0F33, 0x8F0B, 0x8F0B, 0x25C1, - 0x8F0D, 0x8F0D, 0x2820, 0x8F0E, 0x8F0E, 0x281F, 0x8F10, 0x8F11, 0x281D, - 0x8F12, 0x8F12, 0x10BF, 0x8F13, 0x8F13, 0x10C1, 0x8F14, 0x8F14, 0x10BE, - 0x8F15, 0x8F15, 0x10C0, 0x8F16, 0x8F17, 0x2A7A, 0x8F18, 0x8F18, 0x2A76, - 0x8F19, 0x8F19, 0x3862, 0x8F1A, 0x8F1A, 0x2A77, 0x8F1B, 0x8F1B, 0x123F, - 0x8F1C, 0x8F1C, 0x1244, 0x8F1D, 0x8F1D, 0x123E, 0x8F1E, 0x8F1E, 0x1245, - 0x8F1F, 0x8F1F, 0x1240, 0x8F20, 0x8F20, 0x2A78, 0x8F23, 0x8F23, 0x2A79, - 0x8F24, 0x8F24, 0x2A75, 0x8F25, 0x8F25, 0x1246, 0x8F26, 0x8F26, 0x1242, - 0x8F29, 0x8F29, 0x1241, 0x8F2A, 0x8F2A, 0x1243, 0x8F2C, 0x8F2C, 0x2A74, - 0x8F2D, 0x8F2D, 0x3863, 0x8F2E, 0x8F2E, 0x2CAF, 0x8F2F, 0x8F2F, 0x1368, - 0x8F30, 0x8F30, 0x3BB7, 0x8F32, 0x8F32, 0x2CB1, 0x8F33, 0x8F33, 0x136A, - 0x8F34, 0x8F34, 0x2CB4, 0x8F35, 0x8F35, 0x2CB0, 0x8F36, 0x8F36, 0x2CAE, - 0x8F37, 0x8F37, 0x2CB3, 0x8F38, 0x8F38, 0x1369, 0x8F39, 0x8F39, 0x2CB2, - 0x8F3B, 0x8F3B, 0x1367, 0x8F3E, 0x8F3E, 0x148E, 0x8F3F, 0x8F3F, 0x1491, - 0x8F40, 0x8F40, 0x2E7C, 0x8F41, 0x8F41, 0x3D07, 0x8F42, 0x8F42, 0x148F, - 0x8F43, 0x8F43, 0x2E7B, 0x8F44, 0x8F44, 0x148D, 0x8F45, 0x8F45, 0x1490, - 0x8F46, 0x8F48, 0x2FF7, 0x8F49, 0x8F49, 0x1537, 0x8F4A, 0x8F4A, 0x3BB8, - 0x8F4B, 0x8F4B, 0x2FFA, 0x8F4D, 0x8F4D, 0x1538, 0x8F4E, 0x8F4E, 0x15D7, - 0x8F4F, 0x8F50, 0x3143, 0x8F51, 0x8F51, 0x3142, 0x8F52, 0x8F52, 0x3141, - 0x8F53, 0x8F53, 0x3145, 0x8F54, 0x8F54, 0x15D6, 0x8F55, 0x8F55, 0x3244, - 0x8F56, 0x8F57, 0x3242, 0x8F58, 0x8F58, 0x3245, 0x8F59, 0x8F59, 0x3241, - 0x8F5A, 0x8F5A, 0x3246, 0x8F5B, 0x8F5B, 0x331C, 0x8F5C, 0x8F5C, 0x3F31, - 0x8F5D, 0x8F5D, 0x331D, 0x8F5E, 0x8F5E, 0x331B, 0x8F5F, 0x8F5F, 0x1696, - 0x8F60, 0x8F60, 0x33C4, 0x8F61, 0x8F61, 0x16DD, 0x8F62, 0x8F62, 0x33C5, - 0x8F63, 0x8F63, 0x3445, 0x8F64, 0x8F64, 0x3444, 0x8F66, 0x8F67, 0x4569, - 0x8F6E, 0x8F6E, 0x456B, 0x8F93, 0x8F93, 0x4732, 0x8F9B, 0x8F9B, 0x0514, - 0x8F9C, 0x8F9C, 0x0D81, 0x8F9F, 0x8F9F, 0x0F34, 0x8FA0, 0x8FA0, 0x3D94, - 0x8FA3, 0x8FA3, 0x10C2, 0x8FA5, 0x8FA5, 0x3866, 0x8FA6, 0x8FA6, 0x136C, - 0x8FA8, 0x8FA8, 0x136B, 0x8FAD, 0x8FAD, 0x15D8, 0x8FAE, 0x8FAE, 0x162F, - 0x8FAF, 0x8FAF, 0x1697, 0x8FB0, 0x8FB0, 0x0515, 0x8FB1, 0x8FB1, 0x09D3, - 0x8FB2, 0x8FB2, 0x0F35, 0x8FB3, 0x8FB3, 0x386A, 0x8FB4, 0x8FB4, 0x3146, - 0x8FB5, 0x8FB5, 0x0230, 0x8FB6, 0x8FB6, 0x47D3, 0x8FB7, 0x8FB7, 0x43FD, - 0x8FB8, 0x8FB8, 0x42F6, 0x8FB9, 0x8FB9, 0x48C9, 0x8FBA, 0x8FBA, 0x48C7, - 0x8FBB, 0x8FBC, 0x3D6B, 0x8FBE, 0x8FBE, 0x48C6, 0x8FBF, 0x8FBF, 0x18E9, - 0x8FC1, 0x8FC1, 0x478D, 0x8FC2, 0x8FC2, 0x0516, 0x8FC4, 0x8FC4, 0x0519, - 0x8FC5, 0x8FC5, 0x0518, 0x8FC6, 0x8FC6, 0x0517, 0x8FC9, 0x8FC9, 0x18E8, - 0x8FCA, 0x8FCA, 0x478E, 0x8FCB, 0x8FCB, 0x1A4A, 0x8FCC, 0x8FCC, 0x478F, - 0x8FCD, 0x8FCD, 0x1A4C, 0x8FCE, 0x8FCE, 0x068E, 0x8FD0, 0x8FD0, 0x48AE, - 0x8FD1, 0x8FD1, 0x0690, 0x8FD2, 0x8FD2, 0x1A49, 0x8FD3, 0x8FD3, 0x1A4B, - 0x8FD4, 0x8FD4, 0x068F, 0x8FD5, 0x8FD5, 0x1A4E, 0x8FD6, 0x8FD6, 0x1A4D, - 0x8FD7, 0x8FD7, 0x1A4F, 0x8FDA, 0x8FDA, 0x3FCB, 0x8FE0, 0x8FE0, 0x1C0A, - 0x8FE1, 0x8FE1, 0x1C08, 0x8FE2, 0x8FE2, 0x0813, 0x8FE3, 0x8FE3, 0x1C07, - 0x8FE4, 0x8FE4, 0x0818, 0x8FE5, 0x8FE5, 0x0815, 0x8FE6, 0x8FE6, 0x0812, - 0x8FE8, 0x8FE8, 0x0819, 0x8FEA, 0x8FEA, 0x0814, 0x8FEB, 0x8FEB, 0x0817, - 0x8FED, 0x8FED, 0x0816, 0x8FEE, 0x8FEE, 0x1C09, 0x8FF0, 0x8FF0, 0x0811, - 0x8FF4, 0x8FF4, 0x09D9, 0x8FF5, 0x8FF5, 0x1E16, 0x8FF6, 0x8FF6, 0x1E1C, - 0x8FF7, 0x8FF7, 0x09D6, 0x8FF8, 0x8FF8, 0x09DD, 0x8FF9, 0x8FF9, 0x3871, - 0x8FFA, 0x8FFA, 0x09D8, 0x8FFB, 0x8FFB, 0x1E19, 0x8FFC, 0x8FFC, 0x1E1B, - 0x8FFD, 0x8FFD, 0x09DB, 0x8FFE, 0x8FFE, 0x1E15, 0x8FFF, 0x8FFF, 0x1E18, - 0x9000, 0x9000, 0x09D7, 0x9001, 0x9001, 0x09D4, 0x9002, 0x9002, 0x1E17, - 0x9003, 0x9003, 0x09DA, 0x9004, 0x9004, 0x1E1A, 0x9005, 0x9005, 0x09DC, - 0x9006, 0x9006, 0x09D5, 0x9008, 0x9008, 0x3EE0, 0x900B, 0x900B, 0x2081, - 0x900C, 0x900C, 0x2084, 0x900D, 0x900D, 0x0BB6, 0x900F, 0x900F, 0x0BC0, - 0x9010, 0x9010, 0x0BBC, 0x9011, 0x9011, 0x2082, 0x9012, 0x9012, 0x3E4E, - 0x9014, 0x9014, 0x0BC4, 0x9015, 0x9015, 0x0BBD, 0x9016, 0x9016, 0x0BC2, - 0x9017, 0x9017, 0x0BB8, 0x9019, 0x9019, 0x0BB5, 0x901A, 0x901A, 0x0BB7, - 0x901B, 0x901B, 0x0BC3, 0x901C, 0x901C, 0x2083, 0x901D, 0x901D, 0x0BBB, - 0x901E, 0x901E, 0x0BBE, 0x901F, 0x901F, 0x0BBA, 0x9020, 0x9020, 0x0BBF, - 0x9021, 0x9021, 0x2085, 0x9022, 0x9022, 0x0BC1, 0x9023, 0x9023, 0x0BB9, - 0x9024, 0x9024, 0x2080, 0x902D, 0x902D, 0x231F, 0x902E, 0x902E, 0x0D82, - 0x902F, 0x902F, 0x2321, 0x9031, 0x9031, 0x0D84, 0x9032, 0x9032, 0x0D86, - 0x9033, 0x9033, 0x4790, 0x9034, 0x9034, 0x2320, 0x9035, 0x9035, 0x0D83, - 0x9036, 0x9036, 0x0D87, 0x9037, 0x9037, 0x3876, 0x9038, 0x9038, 0x0D85, - 0x903C, 0x903C, 0x0F3B, 0x903D, 0x903D, 0x25C6, 0x903E, 0x903E, 0x0F43, - 0x903F, 0x903F, 0x25C3, 0x9041, 0x9041, 0x0F44, 0x9042, 0x9042, 0x0F39, - 0x9044, 0x9044, 0x25C4, 0x9047, 0x9047, 0x0F3E, 0x9049, 0x9049, 0x25C5, - 0x904A, 0x904A, 0x0F37, 0x904B, 0x904B, 0x0F36, 0x904C, 0x904C, 0x3F10, - 0x904D, 0x904D, 0x0F41, 0x904E, 0x904E, 0x0F40, 0x904F, 0x904F, 0x0F3F, - 0x9050, 0x9050, 0x0F3D, 0x9051, 0x9051, 0x0F42, 0x9052, 0x9052, 0x25C2, - 0x9053, 0x9053, 0x0F38, 0x9054, 0x9054, 0x0F3A, 0x9055, 0x9055, 0x0F3C, - 0x9056, 0x9056, 0x3DD2, 0x9058, 0x9058, 0x10C4, 0x9059, 0x9059, 0x10C7, - 0x905B, 0x905B, 0x10CB, 0x905C, 0x905C, 0x10C5, 0x905D, 0x905D, 0x10CA, - 0x905E, 0x905E, 0x10C8, 0x9060, 0x9060, 0x10C3, 0x9061, 0x9061, 0x3879, - 0x9062, 0x9062, 0x10C9, 0x9063, 0x9063, 0x10C6, 0x9064, 0x9064, 0x3C68, - 0x9067, 0x9067, 0x2A7F, 0x9068, 0x9068, 0x1249, 0x9069, 0x9069, 0x1247, - 0x906B, 0x906B, 0x2A80, 0x906C, 0x906C, 0x3D60, 0x906D, 0x906D, 0x124A, - 0x906E, 0x906E, 0x1248, 0x906F, 0x906F, 0x2A7E, 0x9070, 0x9070, 0x2A7D, - 0x9072, 0x9072, 0x1370, 0x9073, 0x9073, 0x2A7C, 0x9074, 0x9074, 0x136E, - 0x9075, 0x9075, 0x136D, 0x9076, 0x9076, 0x2CB5, 0x9077, 0x9077, 0x124B, - 0x9078, 0x9078, 0x136F, 0x9079, 0x9079, 0x2CB6, 0x907A, 0x907A, 0x1372, - 0x907B, 0x907B, 0x2CB7, 0x907C, 0x907C, 0x1371, 0x907D, 0x907D, 0x1493, - 0x907E, 0x907E, 0x2E7E, 0x907F, 0x907F, 0x1492, 0x9080, 0x9080, 0x1497, - 0x9081, 0x9082, 0x1495, 0x9083, 0x9083, 0x153A, 0x9084, 0x9084, 0x1494, - 0x9085, 0x9085, 0x2E7D, 0x9086, 0x9086, 0x2CB8, 0x9087, 0x9087, 0x1539, - 0x9088, 0x9088, 0x153B, 0x908A, 0x908B, 0x15D9, 0x908D, 0x908D, 0x3247, - 0x908F, 0x908F, 0x170C, 0x9090, 0x9090, 0x170B, 0x9091, 0x9091, 0x051B, - 0x9094, 0x9094, 0x181E, 0x9095, 0x9095, 0x09DE, 0x9097, 0x9098, 0x181B, - 0x9099, 0x9099, 0x181A, 0x909B, 0x909B, 0x181D, 0x909E, 0x909E, 0x18ED, - 0x909F, 0x909F, 0x18EA, 0x90A0, 0x90A0, 0x18EF, 0x90A1, 0x90A1, 0x18EB, - 0x90A2, 0x90A2, 0x051C, 0x90A3, 0x90A3, 0x051F, 0x90A5, 0x90A5, 0x18EC, - 0x90A6, 0x90A6, 0x051E, 0x90A7, 0x90A7, 0x18EE, 0x90A8, 0x90A8, 0x387C, - 0x90AA, 0x90AA, 0x051D, 0x90AE, 0x90AE, 0x3880, 0x90AF, 0x90AF, 0x1A52, - 0x90B0, 0x90B0, 0x1A54, 0x90B1, 0x90B1, 0x0693, 0x90B2, 0x90B2, 0x1A50, - 0x90B3, 0x90B3, 0x1A53, 0x90B4, 0x90B4, 0x1A51, 0x90B5, 0x90B5, 0x0691, - 0x90B6, 0x90B6, 0x0694, 0x90B8, 0x90B8, 0x0692, 0x90BB, 0x90BB, 0x3BC4, - 0x90BD, 0x90BD, 0x1C0C, 0x90BE, 0x90BE, 0x1C10, 0x90BF, 0x90BF, 0x1C0D, - 0x90C1, 0x90C1, 0x081C, 0x90C3, 0x90C3, 0x081D, 0x90C4, 0x90C4, 0x387E, - 0x90C5, 0x90C5, 0x1C0F, 0x90C7, 0x90C7, 0x1C11, 0x90C8, 0x90C8, 0x1C13, - 0x90CA, 0x90CA, 0x081A, 0x90CB, 0x90CB, 0x1C12, 0x90CE, 0x90CE, 0x081B, - 0x90D4, 0x90D4, 0x208C, 0x90D5, 0x90D5, 0x1C0E, 0x90D6, 0x90D6, 0x1E1D, - 0x90D7, 0x90D7, 0x1E26, 0x90D8, 0x90D8, 0x1E24, 0x90D9, 0x90DA, 0x1E1F, - 0x90DB, 0x90DB, 0x1E25, 0x90DC, 0x90DC, 0x1E27, 0x90DD, 0x90DD, 0x09E0, - 0x90DF, 0x90DF, 0x1E22, 0x90E0, 0x90E0, 0x1E1E, 0x90E1, 0x90E1, 0x09DF, - 0x90E2, 0x90E2, 0x09E1, 0x90E3, 0x90E3, 0x1E21, 0x90E4, 0x90E4, 0x1E28, - 0x90E5, 0x90E5, 0x1E23, 0x90E8, 0x90E8, 0x0BC5, 0x90E9, 0x90E9, 0x208F, - 0x90EA, 0x90EA, 0x2087, 0x90EB, 0x90EC, 0x208D, 0x90ED, 0x90ED, 0x0BC6, - 0x90EF, 0x90EF, 0x2086, 0x90F0, 0x90F0, 0x2088, 0x90F1, 0x90F1, 0x1C0B, - 0x90F2, 0x90F3, 0x208A, 0x90F4, 0x90F4, 0x2089, 0x90F5, 0x90F5, 0x0D89, - 0x90F9, 0x90F9, 0x2328, 0x90FA, 0x90FA, 0x2CB9, 0x90FB, 0x90FB, 0x2329, - 0x90FC, 0x90FC, 0x2326, 0x90FD, 0x90FD, 0x0BC7, 0x90FE, 0x90FE, 0x0D8B, - 0x90FF, 0x90FF, 0x2325, 0x9100, 0x9100, 0x232B, 0x9101, 0x9101, 0x232A, - 0x9102, 0x9102, 0x0D88, 0x9103, 0x9103, 0x232E, 0x9104, 0x9104, 0x2324, - 0x9105, 0x9105, 0x232D, 0x9106, 0x9106, 0x2322, 0x9107, 0x9107, 0x232C, - 0x9108, 0x9108, 0x2327, 0x9109, 0x9109, 0x0D8A, 0x910B, 0x910B, 0x25CD, - 0x910D, 0x910D, 0x25C8, 0x910E, 0x910E, 0x25CE, 0x910F, 0x910F, 0x25C9, - 0x9110, 0x9110, 0x25C7, 0x9111, 0x9111, 0x25CA, 0x9112, 0x9112, 0x0F45, - 0x9114, 0x9114, 0x25CC, 0x9116, 0x9116, 0x25CB, 0x9117, 0x9117, 0x0F46, - 0x9118, 0x9118, 0x10CD, 0x9119, 0x9119, 0x10CC, 0x911A, 0x911A, 0x2827, - 0x911B, 0x911B, 0x282A, 0x911C, 0x911C, 0x2822, 0x911D, 0x911D, 0x2826, - 0x911E, 0x911E, 0x10CE, 0x911F, 0x911F, 0x2825, 0x9120, 0x9120, 0x2823, - 0x9121, 0x9121, 0x2829, 0x9122, 0x9122, 0x2824, 0x9123, 0x9123, 0x2821, - 0x9124, 0x9124, 0x2828, 0x9126, 0x9126, 0x2A86, 0x9127, 0x9127, 0x124E, - 0x9128, 0x9128, 0x2FFB, 0x9129, 0x912A, 0x2A83, 0x912B, 0x912B, 0x2A82, - 0x912C, 0x912C, 0x2323, 0x912D, 0x912D, 0x124D, 0x912E, 0x912E, 0x2A87, - 0x912F, 0x912F, 0x2A81, 0x9130, 0x9130, 0x124C, 0x9131, 0x9131, 0x124F, - 0x9132, 0x9132, 0x2A85, 0x9133, 0x9133, 0x2CBA, 0x9134, 0x9134, 0x1373, - 0x9135, 0x9136, 0x2CBB, 0x9138, 0x9138, 0x2E7F, 0x9139, 0x9139, 0x1498, - 0x913A, 0x913B, 0x2FFC, 0x913E, 0x913E, 0x2FFE, 0x913F, 0x913F, 0x3148, - 0x9140, 0x9140, 0x3147, 0x9141, 0x9141, 0x3249, 0x9143, 0x9143, 0x3248, - 0x9144, 0x9145, 0x331F, 0x9146, 0x9146, 0x331E, 0x9147, 0x9147, 0x33C6, - 0x9148, 0x9148, 0x16DE, 0x9149, 0x9149, 0x0520, 0x914A, 0x914A, 0x081F, - 0x914B, 0x914B, 0x081E, 0x914C, 0x914C, 0x09E4, 0x914D, 0x914D, 0x09E3, - 0x914E, 0x914F, 0x1E2A, 0x9150, 0x9150, 0x1E29, 0x9151, 0x9151, 0x3F49, - 0x9152, 0x9152, 0x09E2, 0x9153, 0x9153, 0x2093, 0x9155, 0x9155, 0x2094, - 0x9156, 0x9156, 0x2090, 0x9157, 0x9157, 0x0BC8, 0x9158, 0x9158, 0x2091, - 0x9159, 0x9159, 0x3F45, 0x915A, 0x915A, 0x2092, 0x915C, 0x915C, 0x3F47, - 0x915E, 0x915E, 0x43EB, 0x915F, 0x915F, 0x2331, 0x9160, 0x9160, 0x2333, - 0x9161, 0x9161, 0x232F, 0x9162, 0x9162, 0x2332, 0x9163, 0x9163, 0x0D8C, - 0x9164, 0x9164, 0x2330, 0x9165, 0x9165, 0x0D8D, 0x9167, 0x9167, 0x3882, - 0x9168, 0x9168, 0x23E2, 0x9169, 0x9169, 0x0F49, 0x916A, 0x916A, 0x0F48, - 0x916C, 0x916C, 0x0F47, 0x916E, 0x916F, 0x25CF, 0x9170, 0x9170, 0x3EB8, - 0x9172, 0x9172, 0x282C, 0x9173, 0x9173, 0x282E, 0x9174, 0x9174, 0x10D2, - 0x9175, 0x9175, 0x10CF, 0x9176, 0x9176, 0x3E9B, 0x9177, 0x9177, 0x10D1, - 0x9178, 0x9178, 0x10D0, 0x9179, 0x9179, 0x282D, 0x917A, 0x917A, 0x282B, - 0x917C, 0x917C, 0x3F6F, 0x9180, 0x9180, 0x2A8E, 0x9181, 0x9182, 0x2A8B, - 0x9183, 0x9183, 0x1253, 0x9184, 0x9184, 0x2A8D, 0x9185, 0x9186, 0x2A88, - 0x9187, 0x9187, 0x1250, 0x9189, 0x9189, 0x1251, 0x918A, 0x918A, 0x2A8A, - 0x918B, 0x918B, 0x1252, 0x918C, 0x918C, 0x43EC, 0x918D, 0x918D, 0x2CC0, - 0x918E, 0x918E, 0x3F4E, 0x918F, 0x918F, 0x2CC1, 0x9190, 0x9191, 0x2CBE, - 0x9192, 0x9192, 0x1374, 0x9193, 0x9193, 0x2CBD, 0x9199, 0x9199, 0x2E83, - 0x919A, 0x919A, 0x2E80, 0x919B, 0x919B, 0x2E82, 0x919C, 0x919C, 0x149B, - 0x919D, 0x919D, 0x2E86, 0x919E, 0x919E, 0x149A, 0x919F, 0x919F, 0x2E84, - 0x91A0, 0x91A0, 0x2E87, 0x91A1, 0x91A1, 0x2E85, 0x91A2, 0x91A2, 0x2E81, - 0x91A3, 0x91A3, 0x1499, 0x91A5, 0x91A5, 0x3000, 0x91A7, 0x91A7, 0x3001, - 0x91A8, 0x91A8, 0x2FFF, 0x91A9, 0x91A9, 0x3883, 0x91AA, 0x91AA, 0x3003, - 0x91AB, 0x91AC, 0x153C, 0x91AD, 0x91AD, 0x314A, 0x91AE, 0x91AE, 0x15DC, - 0x91AF, 0x91AF, 0x3002, 0x91B0, 0x91B0, 0x3149, 0x91B1, 0x91B1, 0x15DB, - 0x91B2, 0x91B3, 0x324C, 0x91B4, 0x91B4, 0x1650, 0x91B5, 0x91B5, 0x324B, - 0x91B6, 0x91B6, 0x45EF, 0x91B7, 0x91B7, 0x324A, 0x91B9, 0x91B9, 0x3321, - 0x91BA, 0x91BA, 0x1698, 0x91BB, 0x91BB, 0x3BC8, 0x91BC, 0x91BC, 0x3446, - 0x91BD, 0x91BD, 0x34A3, 0x91BE, 0x91BE, 0x34A2, 0x91C0, 0x91C0, 0x1730, - 0x91C1, 0x91C1, 0x174A, 0x91C2, 0x91C2, 0x34A4, 0x91C3, 0x91C3, 0x350B, - 0x91C4, 0x91C4, 0x3884, 0x91C5, 0x91C5, 0x175C, 0x91C6, 0x91C6, 0x0521, - 0x91C7, 0x91C7, 0x0695, 0x91C9, 0x91C9, 0x0F4A, 0x91CB, 0x91CB, 0x1651, - 0x91CC, 0x91CC, 0x0522, 0x91CD, 0x91CD, 0x0820, 0x91CE, 0x91CE, 0x0BC9, - 0x91CF, 0x91CF, 0x0D8E, 0x91D0, 0x91D0, 0x153E, 0x91D1, 0x91D1, 0x0696, - 0x91D3, 0x91D3, 0x1C15, 0x91D4, 0x91D4, 0x1C14, 0x91D5, 0x91D5, 0x1E2C, - 0x91D6, 0x91D6, 0x415E, 0x91D7, 0x91D7, 0x09E7, 0x91D8, 0x91D8, 0x09E5, - 0x91D9, 0x91D9, 0x09E9, 0x91DA, 0x91DA, 0x1E2E, 0x91DC, 0x91DC, 0x09E8, - 0x91DD, 0x91DD, 0x09E6, 0x91DF, 0x91DF, 0x453A, 0x91E2, 0x91E2, 0x1E2D, - 0x91E3, 0x91E3, 0x0BCC, 0x91E4, 0x91E4, 0x209A, 0x91E5, 0x91E5, 0x3C06, - 0x91E6, 0x91E6, 0x0BCB, 0x91E7, 0x91E7, 0x0BCD, 0x91E8, 0x91E8, 0x209F, - 0x91E9, 0x91E9, 0x0BCF, 0x91EA, 0x91EB, 0x209C, 0x91EC, 0x91EC, 0x2095, - 0x91ED, 0x91ED, 0x0BCE, 0x91EE, 0x91EE, 0x20A0, 0x91F1, 0x91F1, 0x2097, - 0x91F3, 0x91F3, 0x2098, 0x91F4, 0x91F4, 0x2096, 0x91F5, 0x91F5, 0x0BCA, - 0x91F7, 0x91F7, 0x209E, 0x91F8, 0x91F8, 0x2099, 0x91F9, 0x91F9, 0x209B, - 0x91FA, 0x91FA, 0x3AF8, 0x91FD, 0x91FD, 0x233F, 0x91FE, 0x91FE, 0x382E, - 0x91FF, 0x91FF, 0x233E, 0x9200, 0x9200, 0x233C, 0x9201, 0x9201, 0x2334, - 0x9202, 0x9202, 0x2343, 0x9203, 0x9203, 0x2337, 0x9204, 0x9204, 0x2341, - 0x9205, 0x9205, 0x2348, 0x9206, 0x9206, 0x2340, 0x9207, 0x9207, 0x0D96, - 0x9208, 0x9208, 0x3EB9, 0x9209, 0x9209, 0x0D92, 0x920A, 0x920A, 0x2335, - 0x920C, 0x920C, 0x233B, 0x920D, 0x920D, 0x0D94, 0x920E, 0x920E, 0x3888, - 0x920F, 0x920F, 0x233A, 0x9210, 0x9210, 0x0D95, 0x9211, 0x9211, 0x0D97, - 0x9212, 0x9212, 0x233D, 0x9213, 0x9213, 0x4793, 0x9214, 0x9215, 0x0D8F, - 0x9216, 0x9216, 0x2349, 0x9217, 0x9217, 0x2347, 0x9219, 0x9219, 0x2346, - 0x921A, 0x921A, 0x2338, 0x921C, 0x921C, 0x2344, 0x921E, 0x921E, 0x0D93, - 0x9223, 0x9223, 0x0D91, 0x9224, 0x9224, 0x2345, 0x9225, 0x9225, 0x2336, - 0x9226, 0x9226, 0x2339, 0x9227, 0x9227, 0x2342, 0x9228, 0x9228, 0x4795, - 0x922A, 0x922A, 0x3C0E, 0x922B, 0x922B, 0x3BA6, 0x922D, 0x922D, 0x2851, - 0x922E, 0x922E, 0x25DA, 0x9230, 0x9230, 0x25D3, 0x9231, 0x9231, 0x25E6, - 0x9232, 0x9232, 0x25EF, 0x9233, 0x9233, 0x25D6, 0x9234, 0x9234, 0x0F55, - 0x9235, 0x9235, 0x3B26, 0x9236, 0x9236, 0x25E3, 0x9237, 0x9237, 0x0F4B, - 0x9238, 0x9238, 0x0F4D, 0x9239, 0x9239, 0x0F59, 0x923A, 0x923A, 0x25D4, - 0x923C, 0x923C, 0x41D2, 0x923D, 0x923D, 0x0F4E, 0x923E, 0x923E, 0x0F50, - 0x923F, 0x923F, 0x0F5A, 0x9240, 0x9240, 0x0F4F, 0x9241, 0x9241, 0x388A, - 0x9244, 0x9244, 0x389A, 0x9245, 0x9245, 0x0F58, 0x9246, 0x9246, 0x25DC, - 0x9248, 0x9248, 0x25D1, 0x9249, 0x9249, 0x0F56, 0x924A, 0x924A, 0x25DB, - 0x924B, 0x924B, 0x0F52, 0x924C, 0x924C, 0x25ED, 0x924D, 0x924D, 0x0F57, - 0x924E, 0x924E, 0x25EB, 0x924F, 0x924F, 0x25DF, 0x9250, 0x9250, 0x25E9, - 0x9251, 0x9251, 0x0F54, 0x9252, 0x9252, 0x25D2, 0x9253, 0x9253, 0x25EC, - 0x9254, 0x9254, 0x25E7, 0x9255, 0x9255, 0x3E47, 0x9256, 0x9256, 0x25EE, - 0x9257, 0x9257, 0x0F4C, 0x9258, 0x9258, 0x4796, 0x925A, 0x925A, 0x0F5B, - 0x925B, 0x925B, 0x0F51, 0x925D, 0x925D, 0x3A03, 0x925E, 0x925E, 0x25D8, - 0x925F, 0x925F, 0x3CE0, 0x9260, 0x9260, 0x25E0, 0x9261, 0x9261, 0x25E4, - 0x9262, 0x9262, 0x388B, 0x9263, 0x9263, 0x25E8, 0x9264, 0x9264, 0x0F53, - 0x9265, 0x9265, 0x25D7, 0x9266, 0x9266, 0x25D5, 0x9267, 0x9267, 0x25E1, - 0x926B, 0x926B, 0x4797, 0x926C, 0x926C, 0x25DE, 0x926D, 0x926D, 0x25DD, - 0x926E, 0x926E, 0x3D05, 0x926F, 0x926F, 0x25E2, 0x9270, 0x9270, 0x25E5, - 0x9272, 0x9272, 0x25EA, 0x9276, 0x9276, 0x2831, 0x9277, 0x9277, 0x3C64, - 0x9278, 0x9278, 0x10D3, 0x9279, 0x9279, 0x283B, 0x927A, 0x927A, 0x2833, - 0x927B, 0x927B, 0x10D9, 0x927C, 0x927C, 0x10DD, 0x927D, 0x927D, 0x2844, - 0x927E, 0x927E, 0x284C, 0x927F, 0x927F, 0x283D, 0x9280, 0x9280, 0x10D5, - 0x9281, 0x9281, 0x3E01, 0x9282, 0x9282, 0x2841, 0x9283, 0x9283, 0x25D9, - 0x9284, 0x9284, 0x3CB9, 0x9285, 0x9285, 0x10D6, 0x9286, 0x9286, 0x2848, - 0x9287, 0x9287, 0x284D, 0x9288, 0x9288, 0x2845, 0x9289, 0x9289, 0x3AB5, - 0x928A, 0x928A, 0x2847, 0x928B, 0x928B, 0x2850, 0x928C, 0x928C, 0x2849, - 0x928D, 0x928D, 0x2837, 0x928E, 0x928E, 0x2840, 0x928F, 0x928F, 0x46BD, - 0x9291, 0x9291, 0x10DE, 0x9293, 0x9293, 0x10DA, 0x9294, 0x9294, 0x2835, - 0x9295, 0x9295, 0x2842, 0x9296, 0x9296, 0x10D8, 0x9297, 0x9297, 0x283C, - 0x9298, 0x9298, 0x10D7, 0x9299, 0x9299, 0x284A, 0x929A, 0x929A, 0x2839, - 0x929B, 0x929B, 0x2832, 0x929C, 0x929C, 0x10DB, 0x929D, 0x929D, 0x284F, - 0x92A0, 0x92A0, 0x2834, 0x92A1, 0x92A1, 0x2846, 0x92A2, 0x92A2, 0x2843, - 0x92A3, 0x92A3, 0x283E, 0x92A4, 0x92A4, 0x2830, 0x92A5, 0x92A5, 0x282F, - 0x92A6, 0x92A6, 0x2838, 0x92A7, 0x92A7, 0x284B, 0x92A8, 0x92A8, 0x10DC, - 0x92A9, 0x92A9, 0x284E, 0x92AA, 0x92AA, 0x2836, 0x92AB, 0x92AB, 0x283A, - 0x92AC, 0x92AC, 0x10D4, 0x92AE, 0x92AE, 0x4799, 0x92B1, 0x92B1, 0x4798, - 0x92B2, 0x92B2, 0x125F, 0x92B3, 0x92B3, 0x125A, 0x92B4, 0x92B4, 0x2AB0, - 0x92B5, 0x92B5, 0x2AAC, 0x92B6, 0x92B6, 0x2A94, 0x92B7, 0x92B7, 0x1256, - 0x92B9, 0x92B9, 0x36E9, 0x92BA, 0x92BA, 0x3BF5, 0x92BB, 0x92BB, 0x1255, - 0x92BC, 0x92BC, 0x125B, 0x92BE, 0x92BE, 0x3C60, 0x92BF, 0x92BF, 0x479A, - 0x92C0, 0x92C0, 0x2A92, 0x92C1, 0x92C1, 0x1259, 0x92C2, 0x92C2, 0x2A9E, - 0x92C3, 0x92C4, 0x2A90, 0x92C5, 0x92C5, 0x1254, 0x92C6, 0x92C6, 0x2AAF, - 0x92C7, 0x92C7, 0x125D, 0x92C8, 0x92C8, 0x2AA1, 0x92C9, 0x92C9, 0x2AA6, - 0x92CA, 0x92CA, 0x2AA0, 0x92CB, 0x92CB, 0x2CD3, 0x92CC, 0x92CC, 0x2A9C, - 0x92CD, 0x92CD, 0x2AA4, 0x92CE, 0x92CE, 0x2AA2, 0x92CF, 0x92CF, 0x2A95, - 0x92D0, 0x92D0, 0x2A8F, 0x92D1, 0x92D1, 0x2AAA, 0x92D2, 0x92D2, 0x125C, - 0x92D3, 0x92D3, 0x2AAB, 0x92D4, 0x92D4, 0x3861, 0x92D5, 0x92D5, 0x2AA5, - 0x92D7, 0x92D7, 0x2A9A, 0x92D8, 0x92D8, 0x2A98, 0x92D9, 0x92D9, 0x2A93, - 0x92DB, 0x92DB, 0x400C, 0x92DD, 0x92DD, 0x2A9B, 0x92DE, 0x92DE, 0x2AA8, - 0x92DF, 0x92DF, 0x2A97, 0x92E0, 0x92E0, 0x2AA7, 0x92E1, 0x92E1, 0x2AAD, - 0x92E3, 0x92E3, 0x479B, 0x92E4, 0x92E4, 0x1258, 0x92E5, 0x92E5, 0x3CA2, - 0x92E6, 0x92E6, 0x2AA3, 0x92E7, 0x92E7, 0x2AA9, 0x92E8, 0x92E8, 0x2A9F, - 0x92E9, 0x92E9, 0x2A99, 0x92EA, 0x92EA, 0x1257, 0x92EB, 0x92EB, 0x479C, - 0x92EC, 0x92EC, 0x3964, 0x92EE, 0x92EE, 0x283F, 0x92EF, 0x92EF, 0x2A9D, - 0x92F0, 0x92F0, 0x125E, 0x92F1, 0x92F1, 0x2A96, 0x92F2, 0x92F2, 0x3AB2, - 0x92F3, 0x92F4, 0x479D, 0x92F6, 0x92F6, 0x3C04, 0x92F7, 0x92F7, 0x2CD8, - 0x92F8, 0x92F8, 0x1377, 0x92F9, 0x92F9, 0x2CD7, 0x92FA, 0x92FA, 0x2CD5, - 0x92FB, 0x92FB, 0x2CE7, 0x92FC, 0x92FC, 0x137B, 0x92FD, 0x92FD, 0x479F, - 0x92FE, 0x92FE, 0x2CE4, 0x92FF, 0x92FF, 0x2CDC, 0x9300, 0x9300, 0x2CE6, - 0x9301, 0x9301, 0x2CCE, 0x9302, 0x9302, 0x2CDA, 0x9303, 0x9303, 0x3867, - 0x9304, 0x9304, 0x137D, 0x9306, 0x9306, 0x2CC6, 0x9307, 0x9307, 0x3B11, - 0x9308, 0x9308, 0x2CC4, 0x9309, 0x9309, 0x2CE5, 0x930B, 0x930B, 0x2CE3, - 0x930C, 0x930C, 0x2CE2, 0x930D, 0x930D, 0x2CD2, 0x930E, 0x930E, 0x2CD1, - 0x930F, 0x930F, 0x2CC7, 0x9310, 0x9310, 0x137F, 0x9312, 0x9312, 0x2CCD, - 0x9313, 0x9313, 0x2CD6, 0x9314, 0x9314, 0x2CE1, 0x9315, 0x9315, 0x1382, - 0x9316, 0x9316, 0x2CE8, 0x9318, 0x9318, 0x14A3, 0x9319, 0x9319, 0x1384, - 0x931A, 0x931A, 0x137E, 0x931B, 0x931B, 0x2CCB, 0x931D, 0x931D, 0x2CD4, - 0x931E, 0x931E, 0x2CC3, 0x931F, 0x931F, 0x2CC5, 0x9320, 0x9320, 0x1375, - 0x9321, 0x9321, 0x1381, 0x9322, 0x9322, 0x137A, 0x9323, 0x9323, 0x2CCC, - 0x9324, 0x9324, 0x2CDB, 0x9325, 0x9325, 0x2AAE, 0x9326, 0x9326, 0x1380, - 0x9327, 0x9327, 0x2CC2, 0x9328, 0x9328, 0x149E, 0x9329, 0x9329, 0x2CDD, - 0x932A, 0x932A, 0x2CE0, 0x932B, 0x932B, 0x137C, 0x932C, 0x932C, 0x3892, - 0x932D, 0x932D, 0x2CD0, 0x932E, 0x932E, 0x1383, 0x932F, 0x932F, 0x1379, - 0x9330, 0x9330, 0x3E03, 0x9331, 0x9331, 0x3CBD, 0x9333, 0x9333, 0x1378, - 0x9334, 0x9334, 0x2CD9, 0x9335, 0x9335, 0x2CDF, 0x9336, 0x9336, 0x1376, - 0x9338, 0x9338, 0x2CC9, 0x9339, 0x9339, 0x2CDE, 0x933C, 0x933C, 0x2CCA, - 0x9340, 0x9340, 0x4155, 0x9341, 0x9341, 0x4277, 0x9342, 0x9342, 0x3AFA, - 0x9343, 0x9343, 0x47A0, 0x9344, 0x9344, 0x4016, 0x9345, 0x9345, 0x3E74, - 0x9346, 0x9346, 0x2CCF, 0x9347, 0x9347, 0x2E8D, 0x9348, 0x9348, 0x3C61, - 0x9349, 0x9349, 0x2E92, 0x934A, 0x934A, 0x14A0, 0x934B, 0x934B, 0x14A2, - 0x934C, 0x934C, 0x2E98, 0x934D, 0x934D, 0x149C, 0x934E, 0x934E, 0x2EA6, - 0x934F, 0x934F, 0x2E9E, 0x9350, 0x9351, 0x2E93, 0x9352, 0x9352, 0x2E9D, - 0x9354, 0x9354, 0x14A9, 0x9355, 0x9355, 0x2E9C, 0x9356, 0x9356, 0x2E8C, - 0x9357, 0x9357, 0x2E9B, 0x9358, 0x9358, 0x2E8F, 0x9359, 0x9359, 0x2EA7, - 0x935A, 0x935A, 0x14A8, 0x935B, 0x935B, 0x14A6, 0x935C, 0x935C, 0x2E90, - 0x935E, 0x935E, 0x2EA3, 0x935F, 0x935F, 0x3CBB, 0x9360, 0x9360, 0x2E95, - 0x9361, 0x9361, 0x2EA2, 0x9362, 0x9362, 0x4268, 0x9363, 0x9363, 0x2EA4, - 0x9364, 0x9364, 0x2E8B, 0x9365, 0x9365, 0x14A1, 0x9366, 0x9366, 0x46BC, - 0x9367, 0x9367, 0x2EA5, 0x9368, 0x9368, 0x3BF0, 0x9369, 0x9369, 0x3961, - 0x936A, 0x936A, 0x2E99, 0x936B, 0x936B, 0x3893, 0x936C, 0x936C, 0x14A5, - 0x936D, 0x936D, 0x2E96, 0x936E, 0x936E, 0x39E8, 0x9370, 0x9370, 0x14A7, - 0x9371, 0x9371, 0x2E9F, 0x9373, 0x9373, 0x389E, 0x9374, 0x9374, 0x3CE4, - 0x9375, 0x9375, 0x149F, 0x9376, 0x9376, 0x2E91, 0x9377, 0x9377, 0x2EA0, - 0x9378, 0x9378, 0x38F9, 0x9379, 0x9379, 0x2E9A, 0x937A, 0x937A, 0x2CC8, - 0x937B, 0x937B, 0x2EA1, 0x937C, 0x937C, 0x2E8E, 0x937D, 0x937D, 0x3C25, - 0x937E, 0x937E, 0x14A4, 0x9380, 0x9380, 0x3014, 0x9381, 0x9381, 0x3965, - 0x9382, 0x9382, 0x149D, 0x9383, 0x9383, 0x2E89, 0x9384, 0x9384, 0x47A1, - 0x9385, 0x9385, 0x42BD, 0x9386, 0x9386, 0x3CC0, 0x9387, 0x9387, 0x3AE0, - 0x9388, 0x9388, 0x3011, 0x9389, 0x9389, 0x300A, 0x938A, 0x938A, 0x1540, - 0x938C, 0x938C, 0x3005, 0x938D, 0x938D, 0x3015, 0x938E, 0x938E, 0x300C, - 0x938F, 0x938F, 0x2E97, 0x9390, 0x9390, 0x3D3C, 0x9391, 0x9391, 0x3017, - 0x9392, 0x9392, 0x3006, 0x9394, 0x9394, 0x153F, 0x9395, 0x9395, 0x3010, - 0x9396, 0x9396, 0x1541, 0x9397, 0x9397, 0x1549, 0x9398, 0x9398, 0x1547, - 0x9399, 0x9399, 0x3012, 0x939A, 0x939A, 0x1548, 0x939B, 0x939B, 0x3008, - 0x939C, 0x939C, 0x39AC, 0x939D, 0x939D, 0x3009, 0x939E, 0x939E, 0x300E, - 0x939F, 0x939F, 0x3013, 0x93A0, 0x93A0, 0x3AB1, 0x93A1, 0x93A1, 0x2E88, - 0x93A2, 0x93A2, 0x1542, 0x93A3, 0x93A3, 0x301C, 0x93A4, 0x93A4, 0x3019, - 0x93A5, 0x93A5, 0x3160, 0x93A6, 0x93A6, 0x300F, 0x93A7, 0x93A7, 0x300B, - 0x93A8, 0x93A8, 0x301A, 0x93A9, 0x93A9, 0x3155, 0x93AA, 0x93AA, 0x300D, - 0x93AC, 0x93AC, 0x1545, 0x93AD, 0x93AD, 0x47A2, 0x93AE, 0x93AE, 0x1544, - 0x93AF, 0x93AF, 0x2E8A, 0x93B0, 0x93B0, 0x1546, 0x93B1, 0x93B1, 0x3016, - 0x93B2, 0x93B2, 0x3018, 0x93B3, 0x93B3, 0x1543, 0x93B4, 0x93B4, 0x301B, - 0x93B5, 0x93B5, 0x3004, 0x93B7, 0x93B7, 0x3007, 0x93B8, 0x93B8, 0x3C90, - 0x93BA, 0x93BA, 0x43F7, 0x93BB, 0x93BB, 0x3C8F, 0x93BD, 0x93BD, 0x3A27, - 0x93BF, 0x93BF, 0x3E2D, 0x93C0, 0x93C0, 0x315E, 0x93C2, 0x93C2, 0x314E, - 0x93C3, 0x93C3, 0x15E0, 0x93C4, 0x93C4, 0x315C, 0x93C6, 0x93C6, 0x39AA, - 0x93C7, 0x93C7, 0x314C, 0x93C8, 0x93C8, 0x15E1, 0x93CA, 0x93CA, 0x3157, - 0x93CB, 0x93CB, 0x3966, 0x93CC, 0x93CC, 0x3153, 0x93CD, 0x93CD, 0x15E6, - 0x93CE, 0x93CE, 0x315D, 0x93CF, 0x93CF, 0x314D, 0x93D0, 0x93D0, 0x3150, - 0x93D1, 0x93D1, 0x15DE, 0x93D2, 0x93D2, 0x315F, 0x93D3, 0x93D3, 0x40E1, - 0x93D4, 0x93D4, 0x3158, 0x93D5, 0x93D5, 0x315B, 0x93D6, 0x93D6, 0x15E4, - 0x93D7, 0x93D7, 0x15E9, 0x93D8, 0x93D8, 0x15E7, 0x93D9, 0x93D9, 0x3154, - 0x93DA, 0x93DA, 0x314F, 0x93DB, 0x93DB, 0x3C5F, 0x93DC, 0x93DD, 0x15E2, - 0x93DE, 0x93DE, 0x314B, 0x93DF, 0x93DF, 0x15DF, 0x93E0, 0x93E0, 0x3A20, - 0x93E1, 0x93E1, 0x15DD, 0x93E2, 0x93E2, 0x15E5, 0x93E3, 0x93E3, 0x315A, - 0x93E4, 0x93E4, 0x15E8, 0x93E6, 0x93E6, 0x3156, 0x93E7, 0x93E7, 0x3161, - 0x93E8, 0x93E8, 0x15EA, 0x93EC, 0x93EC, 0x3152, 0x93EE, 0x93EE, 0x3159, - 0x93F0, 0x93F0, 0x423F, 0x93F1, 0x93F1, 0x42AA, 0x93F3, 0x93F3, 0x3962, - 0x93F5, 0x93F5, 0x325A, 0x93F6, 0x93F6, 0x3269, 0x93F7, 0x93F7, 0x325C, - 0x93F8, 0x93F8, 0x3263, 0x93F9, 0x93F9, 0x3151, 0x93FA, 0x93FA, 0x3261, - 0x93FB, 0x93FB, 0x3250, 0x93FC, 0x93FC, 0x3267, 0x93FD, 0x93FD, 0x1654, - 0x93FE, 0x93FE, 0x3254, 0x93FF, 0x93FF, 0x3266, 0x9400, 0x9400, 0x325B, - 0x9401, 0x9401, 0x3CD4, 0x9403, 0x9403, 0x1653, 0x9404, 0x9404, 0x3BC9, - 0x9406, 0x9406, 0x326B, 0x9407, 0x9407, 0x325D, 0x9408, 0x9408, 0x3A25, - 0x9409, 0x9409, 0x3262, 0x940A, 0x940A, 0x3265, 0x940B, 0x940B, 0x324E, - 0x940C, 0x940C, 0x3268, 0x940D, 0x940D, 0x3259, 0x940E, 0x940E, 0x325E, - 0x940F, 0x940F, 0x3252, 0x9410, 0x9410, 0x3256, 0x9411, 0x9411, 0x326A, - 0x9412, 0x9412, 0x3260, 0x9413, 0x9413, 0x324F, 0x9414, 0x9414, 0x3253, - 0x9415, 0x9415, 0x3255, 0x9416, 0x9416, 0x325F, 0x9417, 0x9417, 0x47A5, - 0x9418, 0x9418, 0x1652, 0x9419, 0x9419, 0x3258, 0x941B, 0x941B, 0x4148, - 0x941D, 0x941D, 0x47A6, 0x9420, 0x9420, 0x3251, 0x9424, 0x9424, 0x3943, - 0x9425, 0x9425, 0x38D0, 0x9426, 0x9426, 0x38A3, 0x9427, 0x9427, 0x3BCD, - 0x9428, 0x9428, 0x3257, 0x9429, 0x9429, 0x3325, 0x942A, 0x942A, 0x3329, - 0x942B, 0x942B, 0x169F, 0x942C, 0x942C, 0x332B, 0x942D, 0x942D, 0x47A7, - 0x942E, 0x942E, 0x1699, 0x9430, 0x9430, 0x3327, 0x9431, 0x9431, 0x332D, - 0x9432, 0x9432, 0x169E, 0x9433, 0x9433, 0x169A, 0x9435, 0x9435, 0x169B, - 0x9436, 0x9436, 0x3324, 0x9437, 0x9437, 0x332A, 0x9438, 0x9438, 0x169D, - 0x9439, 0x9439, 0x3328, 0x943A, 0x943A, 0x169C, 0x943B, 0x943B, 0x3323, - 0x943C, 0x943C, 0x3264, 0x943D, 0x943D, 0x3326, 0x943E, 0x943E, 0x47A8, - 0x943F, 0x943F, 0x3322, 0x9440, 0x9440, 0x332C, 0x9442, 0x9442, 0x4272, - 0x9443, 0x9443, 0x4275, 0x9444, 0x9444, 0x16DF, 0x9445, 0x9445, 0x33CD, - 0x9446, 0x9446, 0x33D0, 0x9447, 0x9447, 0x33CC, 0x9448, 0x9449, 0x33CE, - 0x944A, 0x944B, 0x33C9, 0x944C, 0x944C, 0x33C7, 0x944D, 0x944D, 0x3C65, - 0x944F, 0x944F, 0x33CB, 0x9450, 0x9450, 0x33C8, 0x9451, 0x9452, 0x16E0, - 0x9454, 0x9454, 0x47AA, 0x9455, 0x9455, 0x3448, 0x9457, 0x9457, 0x344A, - 0x9458, 0x9458, 0x3C30, 0x945B, 0x945B, 0x389F, 0x945D, 0x945D, 0x3449, - 0x945E, 0x945E, 0x344B, 0x9460, 0x9460, 0x170E, 0x9462, 0x9462, 0x3447, - 0x9463, 0x9463, 0x170D, 0x9464, 0x9464, 0x170F, 0x9465, 0x9465, 0x3DDE, - 0x9467, 0x9467, 0x3AB8, 0x9468, 0x9469, 0x34A6, 0x946A, 0x946A, 0x1731, - 0x946B, 0x946B, 0x34A5, 0x946C, 0x946C, 0x377E, 0x946D, 0x946D, 0x34ED, - 0x946E, 0x946E, 0x34EC, 0x946F, 0x946F, 0x34EE, 0x9470, 0x9470, 0x174C, - 0x9471, 0x9471, 0x34EF, 0x9472, 0x9472, 0x174B, 0x9473, 0x9473, 0x34F0, - 0x9474, 0x9474, 0x350C, 0x9475, 0x9475, 0x350F, 0x9476, 0x9476, 0x350E, - 0x9477, 0x9477, 0x1755, 0x9478, 0x9478, 0x350D, 0x9479, 0x9479, 0x47AB, - 0x947B, 0x947B, 0x419B, 0x947C, 0x947C, 0x175F, 0x947D, 0x947E, 0x175D, - 0x947F, 0x947F, 0x1764, 0x9480, 0x9481, 0x3539, 0x9482, 0x9482, 0x3538, - 0x9483, 0x9483, 0x3540, 0x9485, 0x9485, 0x4507, 0x949F, 0x949F, 0x4885, - 0x94A2, 0x94A2, 0x451B, 0x94C1, 0x94C1, 0x47E1, 0x94C3, 0x94C3, 0x47DF, - 0x94DC, 0x94DC, 0x47D7, 0x94F6, 0x94F6, 0x47D2, 0x952D, 0x952D, 0x47AC, - 0x9547, 0x9547, 0x48BF, 0x9577, 0x9577, 0x0697, 0x9578, 0x9578, 0x4508, - 0x957A, 0x957A, 0x20A1, 0x957B, 0x957B, 0x234A, 0x957C, 0x957C, 0x2AB1, - 0x957D, 0x957D, 0x3162, 0x957F, 0x957F, 0x4509, 0x9580, 0x9580, 0x0698, - 0x9582, 0x9582, 0x0821, 0x9583, 0x9583, 0x09EA, 0x9585, 0x9585, 0x38A1, - 0x9586, 0x9586, 0x20A2, 0x9588, 0x9588, 0x20A3, 0x9589, 0x9589, 0x0BD0, - 0x958B, 0x958B, 0x0D9A, 0x958C, 0x958C, 0x234C, 0x958D, 0x958D, 0x234B, - 0x958E, 0x958E, 0x0D9E, 0x958F, 0x958F, 0x0D99, 0x9590, 0x9590, 0x234D, - 0x9591, 0x9591, 0x0D9B, 0x9592, 0x9592, 0x0D9D, 0x9593, 0x9593, 0x0D9C, - 0x9594, 0x9594, 0x0D98, 0x9596, 0x9596, 0x3BD5, 0x9597, 0x9597, 0x3BD4, - 0x9598, 0x9598, 0x0F5C, 0x9599, 0x9599, 0x3BD2, 0x959B, 0x959B, 0x25F3, - 0x959C, 0x959C, 0x25F1, 0x959E, 0x959E, 0x25F2, 0x959F, 0x959F, 0x25F0, - 0x95A0, 0x95A0, 0x38A4, 0x95A1, 0x95A1, 0x10DF, 0x95A2, 0x95A2, 0x47AD, - 0x95A3, 0x95A3, 0x10E2, 0x95A4, 0x95A4, 0x10E4, 0x95A5, 0x95A5, 0x10E3, - 0x95A6, 0x95A6, 0x38A2, 0x95A7, 0x95A7, 0x3BD3, 0x95A8, 0x95A9, 0x10E0, - 0x95AA, 0x95AA, 0x4395, 0x95AB, 0x95AB, 0x2AB3, 0x95AC, 0x95AC, 0x2AB2, - 0x95AD, 0x95AD, 0x1260, 0x95AE, 0x95AE, 0x2AB4, 0x95B0, 0x95B0, 0x2AB5, - 0x95B1, 0x95B1, 0x1261, 0x95B5, 0x95B5, 0x2CF0, 0x95B6, 0x95B6, 0x2CEE, - 0x95B7, 0x95B7, 0x2EAD, 0x95B9, 0x95BA, 0x2CEC, 0x95BB, 0x95BB, 0x1385, - 0x95BC, 0x95BC, 0x2CE9, 0x95BD, 0x95BD, 0x2CF1, 0x95BE, 0x95BE, 0x2CEB, - 0x95BF, 0x95BF, 0x2CEF, 0x95C0, 0x95C0, 0x2EA9, 0x95C3, 0x95C3, 0x2EAB, - 0x95C5, 0x95C5, 0x2EAC, 0x95C6, 0x95C6, 0x14AE, 0x95C7, 0x95C7, 0x2EA8, - 0x95C8, 0x95C8, 0x14AD, 0x95C9, 0x95C9, 0x2EAA, 0x95CA, 0x95CC, 0x14AA, - 0x95CD, 0x95CD, 0x2CEA, 0x95D0, 0x95D0, 0x154C, 0x95D1, 0x95D1, 0x301F, - 0x95D2, 0x95D3, 0x301D, 0x95D4, 0x95D4, 0x154A, 0x95D5, 0x95D5, 0x154D, - 0x95D6, 0x95D6, 0x154B, 0x95DA, 0x95DB, 0x3163, 0x95DC, 0x95DC, 0x15EB, - 0x95DE, 0x95DE, 0x326C, 0x95DF, 0x95DF, 0x326E, 0x95E0, 0x95E0, 0x326D, - 0x95E1, 0x95E1, 0x1655, 0x95E2, 0x95E2, 0x16A0, 0x95E3, 0x95E3, 0x3330, - 0x95E4, 0x95E4, 0x332F, 0x95E5, 0x95E5, 0x332E, 0x95E8, 0x95E8, 0x450A, - 0x95F4, 0x95F4, 0x47AF, 0x961C, 0x961C, 0x0699, 0x961D, 0x961D, 0x4519, - 0x961E, 0x961E, 0x17B4, 0x9620, 0x9620, 0x1821, 0x9621, 0x9621, 0x0414, - 0x9622, 0x9622, 0x181F, 0x9623, 0x9623, 0x1822, 0x9624, 0x9624, 0x1820, - 0x9628, 0x9628, 0x18F1, 0x962A, 0x962A, 0x0526, 0x962C, 0x962C, 0x0527, - 0x962D, 0x962D, 0x18F3, 0x962E, 0x962E, 0x0524, 0x962F, 0x962F, 0x18F2, - 0x9630, 0x9630, 0x18F0, 0x9631, 0x9631, 0x0525, 0x9632, 0x9632, 0x0523, - 0x9633, 0x9633, 0x47B0, 0x9638, 0x9638, 0x3FD1, 0x9639, 0x9639, 0x1A55, - 0x963A, 0x963A, 0x1A58, 0x963B, 0x963B, 0x069C, 0x963C, 0x963C, 0x1A57, - 0x963D, 0x963D, 0x1A56, 0x963F, 0x963F, 0x069B, 0x9640, 0x9640, 0x069A, - 0x9641, 0x9641, 0x3F3D, 0x9642, 0x9642, 0x069E, 0x9643, 0x9643, 0x1A59, - 0x9644, 0x9644, 0x069D, 0x9645, 0x9645, 0x4772, 0x964A, 0x964A, 0x1C1A, - 0x964B, 0x964D, 0x0823, 0x964E, 0x964E, 0x1C1B, 0x964F, 0x964F, 0x1C17, - 0x9650, 0x9650, 0x0822, 0x9651, 0x9651, 0x1C18, 0x9653, 0x9653, 0x1C19, - 0x9654, 0x9654, 0x1C16, 0x9656, 0x9656, 0x3DE7, 0x9658, 0x9658, 0x09F1, - 0x965B, 0x965B, 0x09EE, 0x965C, 0x965C, 0x1E2F, 0x965D, 0x965D, 0x09EF, - 0x965E, 0x965E, 0x09F2, 0x965F, 0x965F, 0x1E30, 0x9661, 0x9661, 0x09ED, - 0x9662, 0x9663, 0x09EB, 0x9664, 0x9664, 0x09F0, 0x9669, 0x9669, 0x475E, - 0x966A, 0x966A, 0x0BD1, 0x966B, 0x966B, 0x20A6, 0x966C, 0x966C, 0x0BD9, - 0x966D, 0x966D, 0x20A5, 0x966F, 0x966F, 0x20A8, 0x9670, 0x9670, 0x0BD5, - 0x9671, 0x9671, 0x20A7, 0x9672, 0x9672, 0x0DA6, 0x9673, 0x9673, 0x0BD3, - 0x9674, 0x9674, 0x0BD6, 0x9675, 0x9675, 0x0BD2, 0x9676, 0x9677, 0x0BD7, - 0x9678, 0x9678, 0x0BD4, 0x967B, 0x967B, 0x38AC, 0x967C, 0x967C, 0x20A4, - 0x967D, 0x967D, 0x0DA2, 0x967E, 0x967E, 0x234F, 0x9680, 0x9680, 0x2353, - 0x9681, 0x9681, 0x3F46, 0x9683, 0x9683, 0x2352, 0x9684, 0x9684, 0x0DA7, - 0x9685, 0x9686, 0x0DA3, 0x9687, 0x9687, 0x234E, 0x9688, 0x9689, 0x2350, - 0x968A, 0x968A, 0x0D9F, 0x968B, 0x968B, 0x0DA1, 0x968D, 0x968D, 0x0DA5, - 0x968E, 0x968E, 0x0DA0, 0x968F, 0x968F, 0x3BDE, 0x9691, 0x9691, 0x25F6, - 0x9692, 0x9693, 0x25F4, 0x9694, 0x9695, 0x0F5E, 0x9696, 0x9696, 0x38AD, - 0x9697, 0x9697, 0x25F7, 0x9698, 0x9698, 0x0F5D, 0x9699, 0x9699, 0x10E5, - 0x969B, 0x969B, 0x10E7, 0x969C, 0x969C, 0x10E6, 0x969E, 0x969E, 0x2852, - 0x96A1, 0x96A1, 0x2853, 0x96A2, 0x96A2, 0x2AB7, 0x96A3, 0x96A3, 0x38AF, - 0x96A4, 0x96A4, 0x2AB6, 0x96A5, 0x96A5, 0x42EF, 0x96A7, 0x96A8, 0x1386, - 0x96A9, 0x96A9, 0x2CF2, 0x96AA, 0x96AA, 0x1388, 0x96AC, 0x96AC, 0x2EB0, - 0x96AE, 0x96AE, 0x2EAE, 0x96B0, 0x96B0, 0x2EAF, 0x96B1, 0x96B1, 0x14AF, - 0x96B3, 0x96B3, 0x3020, 0x96B4, 0x96B4, 0x15EC, 0x96B6, 0x96B6, 0x0231, - 0x96B8, 0x96B8, 0x14B0, 0x96B9, 0x96B9, 0x069F, 0x96BB, 0x96BB, 0x09F3, - 0x96BC, 0x96BC, 0x1E31, 0x96BD, 0x96BD, 0x38B5, 0x96BF, 0x96BF, 0x20A9, - 0x96C0, 0x96C0, 0x0BDA, 0x96C1, 0x96C1, 0x0DA8, 0x96C2, 0x96C2, 0x2354, - 0x96C3, 0x96C3, 0x2356, 0x96C4, 0x96C4, 0x0DAA, 0x96C5, 0x96C5, 0x0DA9, - 0x96C6, 0x96C7, 0x0DAB, 0x96C8, 0x96C8, 0x2355, 0x96C9, 0x96CA, 0x0F62, - 0x96CB, 0x96CB, 0x0F61, 0x96CC, 0x96CC, 0x10E8, 0x96CD, 0x96CD, 0x0F60, - 0x96CE, 0x96CE, 0x25F8, 0x96D2, 0x96D2, 0x10E9, 0x96D3, 0x96D3, 0x2AB8, - 0x96D4, 0x96D4, 0x2CF3, 0x96D5, 0x96D5, 0x1389, 0x96D6, 0x96D6, 0x14B1, - 0x96D7, 0x96D7, 0x3021, 0x96D8, 0x96D8, 0x3025, 0x96D9, 0x96D9, 0x1550, - 0x96DA, 0x96DA, 0x3022, 0x96DB, 0x96DB, 0x1551, 0x96DC, 0x96DC, 0x154F, - 0x96DD, 0x96DD, 0x3026, 0x96DE, 0x96DE, 0x1552, 0x96DF, 0x96DF, 0x3024, - 0x96E1, 0x96E1, 0x3165, 0x96E2, 0x96E2, 0x154E, 0x96E3, 0x96E3, 0x15ED, - 0x96E5, 0x96E5, 0x34A8, 0x96E8, 0x96E8, 0x06A0, 0x96E9, 0x96E9, 0x0BDC, - 0x96EA, 0x96EA, 0x0BDB, 0x96EF, 0x96EF, 0x0DAD, 0x96F0, 0x96F0, 0x2358, - 0x96F1, 0x96F1, 0x2357, 0x96F2, 0x96F2, 0x0DAE, 0x96F4, 0x96F4, 0x3A04, - 0x96F5, 0x96F5, 0x25FC, 0x96F6, 0x96F6, 0x0F67, 0x96F7, 0x96F7, 0x0F64, - 0x96F8, 0x96F8, 0x25FB, 0x96F9, 0x96F9, 0x0F66, 0x96FA, 0x96FA, 0x25F9, - 0x96FB, 0x96FB, 0x0F65, 0x96FD, 0x96FD, 0x25FA, 0x96FF, 0x96FF, 0x2854, - 0x9700, 0x9700, 0x10EA, 0x9702, 0x9702, 0x2ABB, 0x9703, 0x9703, 0x3F0D, - 0x9704, 0x9704, 0x1262, 0x9705, 0x9705, 0x2AB9, 0x9706, 0x9707, 0x1263, - 0x9708, 0x9708, 0x2ABA, 0x9709, 0x9709, 0x1265, 0x970B, 0x970B, 0x2CF4, - 0x970D, 0x970D, 0x138D, 0x970E, 0x970E, 0x138A, 0x970F, 0x970F, 0x138F, - 0x9710, 0x9710, 0x2CF6, 0x9711, 0x9711, 0x138B, 0x9712, 0x9712, 0x2CF5, - 0x9713, 0x9713, 0x138E, 0x9716, 0x9716, 0x138C, 0x9718, 0x9718, 0x2EB3, - 0x9719, 0x9719, 0x2EB5, 0x971B, 0x971B, 0x38C9, 0x971C, 0x971C, 0x14B2, - 0x971D, 0x971D, 0x2EB4, 0x971E, 0x971E, 0x14B3, 0x971F, 0x971F, 0x2EB2, - 0x9720, 0x9720, 0x2EB1, 0x9721, 0x9721, 0x3FB3, 0x9722, 0x9722, 0x3028, - 0x9723, 0x9723, 0x3027, 0x9724, 0x9724, 0x1553, 0x9725, 0x9725, 0x3029, - 0x9726, 0x9726, 0x316A, 0x9727, 0x9727, 0x15EF, 0x9728, 0x9728, 0x3169, - 0x9729, 0x9729, 0x3166, 0x972A, 0x972A, 0x15EE, 0x972B, 0x972C, 0x3167, - 0x972E, 0x972F, 0x326F, 0x9730, 0x9730, 0x1656, 0x9731, 0x9731, 0x38C0, - 0x9732, 0x9732, 0x16A3, 0x9735, 0x9735, 0x3331, 0x9736, 0x9736, 0x38C2, - 0x9738, 0x9739, 0x16A1, 0x973A, 0x973A, 0x3332, 0x973D, 0x973E, 0x16E2, - 0x973F, 0x973F, 0x33D1, 0x9740, 0x9740, 0x47B3, 0x9741, 0x9741, 0x3BE9, - 0x9742, 0x9742, 0x1732, 0x9743, 0x9743, 0x34AA, 0x9744, 0x9744, 0x1734, - 0x9746, 0x9746, 0x34A9, 0x9747, 0x9747, 0x34AB, 0x9748, 0x9748, 0x1733, - 0x9749, 0x9749, 0x34F1, 0x974B, 0x974B, 0x3526, 0x9751, 0x9751, 0x44E3, - 0x9752, 0x9752, 0x06A1, 0x9756, 0x9756, 0x0F68, 0x9757, 0x9757, 0x38CC, - 0x9758, 0x9758, 0x2855, 0x975A, 0x975A, 0x2ABC, 0x975B, 0x975C, 0x1390, - 0x975D, 0x975D, 0x3BEF, 0x975E, 0x975E, 0x06A2, 0x975F, 0x975F, 0x38CF, - 0x9760, 0x9760, 0x1266, 0x9761, 0x9761, 0x15F0, 0x9762, 0x9762, 0x0826, - 0x9766, 0x9766, 0x1392, 0x9768, 0x9768, 0x1710, 0x9769, 0x9769, 0x0827, - 0x976A, 0x976A, 0x20AA, 0x976C, 0x976C, 0x2359, 0x976D, 0x976D, 0x3E97, - 0x976E, 0x976E, 0x235B, 0x9770, 0x9770, 0x235A, 0x9771, 0x9771, 0x3BFC, - 0x9772, 0x9772, 0x2600, 0x9773, 0x9773, 0x25FD, 0x9774, 0x9774, 0x0F69, - 0x9776, 0x9776, 0x0F6A, 0x9777, 0x9778, 0x25FE, 0x977A, 0x977A, 0x2857, - 0x977B, 0x977B, 0x285C, 0x977C, 0x977C, 0x10EB, 0x977D, 0x977D, 0x2856, - 0x977E, 0x977E, 0x2858, 0x977F, 0x977F, 0x285F, 0x9780, 0x9780, 0x285A, - 0x9781, 0x9781, 0x285E, 0x9782, 0x9782, 0x285B, 0x9783, 0x9783, 0x2859, - 0x9784, 0x9784, 0x285D, 0x9785, 0x9785, 0x10EC, 0x9787, 0x9787, 0x40C0, - 0x9788, 0x9788, 0x2ABF, 0x9789, 0x9789, 0x38D4, 0x978A, 0x978A, 0x2ABD, - 0x978B, 0x978B, 0x1268, 0x978D, 0x978D, 0x1267, 0x978E, 0x978E, 0x2ABE, - 0x978F, 0x978F, 0x1269, 0x9794, 0x9794, 0x2CF9, 0x9797, 0x9797, 0x2CF8, - 0x9798, 0x9798, 0x1393, 0x9799, 0x9799, 0x2CF7, 0x979A, 0x979A, 0x2EB6, - 0x979B, 0x979B, 0x3BFB, 0x979C, 0x979C, 0x2EB8, 0x979D, 0x979D, 0x2EBA, - 0x979E, 0x979E, 0x2EB9, 0x979F, 0x979F, 0x38D5, 0x97A0, 0x97A0, 0x14B4, - 0x97A1, 0x97A1, 0x2EB7, 0x97A2, 0x97A2, 0x3030, 0x97A3, 0x97A3, 0x1554, - 0x97A4, 0x97A4, 0x302E, 0x97A5, 0x97A5, 0x3031, 0x97A6, 0x97A6, 0x1555, - 0x97A8, 0x97A8, 0x302C, 0x97AA, 0x97AA, 0x302F, 0x97AB, 0x97AB, 0x302D, - 0x97AC, 0x97AC, 0x302A, 0x97AD, 0x97AD, 0x1556, 0x97AE, 0x97AE, 0x302B, - 0x97B1, 0x97B1, 0x38D6, 0x97B2, 0x97B2, 0x47B5, 0x97B3, 0x97B3, 0x316B, - 0x97B4, 0x97B4, 0x3F33, 0x97B6, 0x97B6, 0x316D, 0x97B7, 0x97B7, 0x316C, - 0x97B8, 0x97B8, 0x3D95, 0x97B9, 0x97B9, 0x3271, 0x97BA, 0x97BA, 0x3F35, - 0x97BB, 0x97BB, 0x3272, 0x97BD, 0x97BD, 0x494E, 0x97BE, 0x97BE, 0x38D7, - 0x97BF, 0x97BF, 0x3333, 0x97C0, 0x97C0, 0x38D8, 0x97C1, 0x97C1, 0x16E5, - 0x97C2, 0x97C2, 0x47B6, 0x97C3, 0x97C3, 0x16E4, 0x97C4, 0x97C5, 0x344C, - 0x97C6, 0x97C6, 0x1735, 0x97C7, 0x97C7, 0x34AC, 0x97C8, 0x97C8, 0x3F2F, - 0x97C9, 0x97C9, 0x1756, 0x97CB, 0x97CB, 0x0828, 0x97CC, 0x97CC, 0x0DAF, - 0x97CD, 0x97CD, 0x2861, 0x97CE, 0x97CE, 0x2860, 0x97CF, 0x97CF, 0x2AC1, - 0x97D0, 0x97D0, 0x2AC0, 0x97D2, 0x97D2, 0x38D9, 0x97D3, 0x97D3, 0x14B5, - 0x97D4, 0x97D4, 0x2EBC, 0x97D5, 0x97D5, 0x2EBB, 0x97D6, 0x97D6, 0x3034, - 0x97D7, 0x97D7, 0x3032, 0x97D8, 0x97D8, 0x3035, 0x97D9, 0x97D9, 0x3033, - 0x97DC, 0x97DC, 0x15F1, 0x97DD, 0x97DF, 0x316E, 0x97E0, 0x97E0, 0x38DA, - 0x97E1, 0x97E1, 0x3334, 0x97E3, 0x97E3, 0x33D2, 0x97E5, 0x97E5, 0x34AD, - 0x97E6, 0x97E6, 0x450C, 0x97ED, 0x97ED, 0x0829, 0x97EE, 0x97EE, 0x38DC, - 0x97F0, 0x97F0, 0x2CFA, 0x97F1, 0x97F1, 0x2EBD, 0x97F2, 0x97F2, 0x394D, - 0x97F3, 0x97F3, 0x082A, 0x97F5, 0x97F5, 0x38E0, 0x97F6, 0x97F6, 0x10ED, - 0x97F8, 0x97F8, 0x2CFB, 0x97F9, 0x97F9, 0x1557, 0x97FA, 0x97FA, 0x3036, - 0x97FB, 0x97FB, 0x15F2, 0x97FD, 0x97FE, 0x3273, 0x97FF, 0x97FF, 0x16A4, - 0x9800, 0x9800, 0x344E, 0x9801, 0x9801, 0x082B, 0x9802, 0x9803, 0x0BDF, - 0x9804, 0x9804, 0x20AB, 0x9805, 0x9806, 0x0DB0, 0x9807, 0x9807, 0x235C, - 0x9808, 0x9808, 0x0DB2, 0x980A, 0x980A, 0x0F6E, 0x980C, 0x980C, 0x0F70, - 0x980D, 0x980E, 0x2602, 0x980F, 0x980F, 0x2601, 0x9810, 0x9811, 0x0F6B, - 0x9812, 0x9812, 0x0F6F, 0x9813, 0x9813, 0x0F6D, 0x9814, 0x9814, 0x4952, - 0x9815, 0x9815, 0x433C, 0x9816, 0x9816, 0x2862, 0x9817, 0x9818, 0x10EE, - 0x981B, 0x981B, 0x2AC8, 0x981C, 0x981C, 0x126C, 0x981D, 0x981D, 0x2AC3, - 0x981E, 0x981E, 0x2AC2, 0x981F, 0x981F, 0x3C02, 0x9820, 0x9820, 0x2AC7, - 0x9821, 0x9821, 0x126A, 0x9823, 0x9823, 0x3E37, 0x9824, 0x9824, 0x139A, - 0x9826, 0x9826, 0x2AC4, 0x9827, 0x9827, 0x2AC9, 0x9828, 0x9828, 0x2AC6, - 0x9829, 0x9829, 0x2AC5, 0x982B, 0x982B, 0x126B, 0x982D, 0x982D, 0x1398, - 0x982E, 0x982E, 0x3F72, 0x982F, 0x982F, 0x2CFD, 0x9830, 0x9830, 0x1394, - 0x9832, 0x9832, 0x2CFE, 0x9833, 0x9833, 0x38E5, 0x9834, 0x9834, 0x38E4, - 0x9835, 0x9835, 0x2CFC, 0x9837, 0x9837, 0x1397, 0x9838, 0x9838, 0x1395, - 0x9839, 0x9839, 0x1399, 0x983B, 0x983B, 0x1396, 0x9841, 0x9841, 0x2EBE, - 0x9843, 0x9843, 0x2EC3, 0x9844, 0x9844, 0x2EBF, 0x9845, 0x9845, 0x2EC2, - 0x9846, 0x9846, 0x14B6, 0x9847, 0x9847, 0x3D96, 0x9848, 0x9848, 0x2DF2, - 0x9849, 0x9849, 0x2EC1, 0x984A, 0x984A, 0x2EC0, 0x984B, 0x984B, 0x38E6, - 0x984C, 0x984C, 0x155A, 0x984D, 0x984D, 0x1558, 0x984E, 0x984E, 0x155B, - 0x984F, 0x984F, 0x1559, 0x9850, 0x9852, 0x3037, 0x9853, 0x9853, 0x155C, - 0x9857, 0x9857, 0x3174, 0x9858, 0x9858, 0x15F4, 0x9859, 0x9859, 0x3172, - 0x985B, 0x985B, 0x15F5, 0x985C, 0x985C, 0x3171, 0x985D, 0x985D, 0x3173, - 0x985E, 0x985E, 0x15F3, 0x985F, 0x985F, 0x3278, 0x9860, 0x9860, 0x3275, - 0x9862, 0x9863, 0x3276, 0x9864, 0x9864, 0x3335, 0x9865, 0x9865, 0x16A6, - 0x9866, 0x9866, 0x38E7, 0x9867, 0x9867, 0x16A5, 0x9869, 0x9869, 0x33D4, - 0x986A, 0x986A, 0x33D3, 0x986B, 0x986B, 0x16E6, 0x986C, 0x986C, 0x4035, - 0x986F, 0x986F, 0x1711, 0x9870, 0x9870, 0x1736, 0x9871, 0x9871, 0x174D, - 0x9872, 0x9872, 0x34F2, 0x9873, 0x9874, 0x3527, 0x9875, 0x9875, 0x450D, - 0x98A8, 0x98A8, 0x082C, 0x98A9, 0x98A9, 0x235D, 0x98AC, 0x98AC, 0x2604, - 0x98AD, 0x98AE, 0x2863, 0x98AF, 0x98AF, 0x10F0, 0x98B1, 0x98B1, 0x10F1, - 0x98B2, 0x98B2, 0x2ACA, 0x98B3, 0x98B3, 0x126D, 0x98B4, 0x98B4, 0x3F73, - 0x98B6, 0x98B6, 0x14B7, 0x98B7, 0x98B7, 0x38EF, 0x98B8, 0x98B8, 0x303A, - 0x98B9, 0x98B9, 0x47B8, 0x98BA, 0x98BA, 0x155D, 0x98BB, 0x98BB, 0x3177, - 0x98BC, 0x98BC, 0x15F6, 0x98BD, 0x98BD, 0x3176, 0x98BE, 0x98BE, 0x3178, - 0x98BF, 0x98BF, 0x3175, 0x98C0, 0x98C0, 0x3338, 0x98C1, 0x98C2, 0x3279, - 0x98C3, 0x98C3, 0x3B78, 0x98C4, 0x98C4, 0x1657, 0x98C6, 0x98C6, 0x3337, - 0x98C7, 0x98C7, 0x38F1, 0x98C8, 0x98C8, 0x38F0, 0x98C9, 0x98C9, 0x3336, - 0x98CA, 0x98CA, 0x38EE, 0x98CB, 0x98CB, 0x33D5, 0x98CC, 0x98CC, 0x3529, - 0x98CE, 0x98CE, 0x450E, 0x98DB, 0x98DB, 0x082D, 0x98DC, 0x98DC, 0x3C0B, - 0x98DE, 0x98DE, 0x450F, 0x98DF, 0x98DF, 0x082E, 0x98E0, 0x98E0, 0x4792, - 0x98E1, 0x98E1, 0x38F6, 0x98E2, 0x98E2, 0x09F4, 0x98E3, 0x98E3, 0x1E32, - 0x98E5, 0x98E5, 0x20AC, 0x98E6, 0x98E6, 0x38F7, 0x98E7, 0x98E7, 0x0DB3, - 0x98E9, 0x98E9, 0x0DB6, 0x98EA, 0x98EA, 0x0DB4, 0x98EB, 0x98EB, 0x235E, - 0x98EC, 0x98EC, 0x38F8, 0x98ED, 0x98ED, 0x0DB8, 0x98EF, 0x98EF, 0x0DB5, - 0x98F1, 0x98F1, 0x47BA, 0x98F2, 0x98F2, 0x0DB7, 0x98F4, 0x98F4, 0x0F72, - 0x98F5, 0x98F5, 0x4365, 0x98F6, 0x98F6, 0x2605, 0x98F9, 0x98F9, 0x2606, - 0x98FA, 0x98FA, 0x2ACC, 0x98FC, 0x98FC, 0x0F71, 0x98FD, 0x98FE, 0x0F73, - 0x9900, 0x9900, 0x2866, 0x9902, 0x9902, 0x2865, 0x9903, 0x9903, 0x10F2, - 0x9905, 0x9905, 0x10F3, 0x9907, 0x9907, 0x2867, 0x9908, 0x9908, 0x2ACB, - 0x9909, 0x9909, 0x10F5, 0x990A, 0x990A, 0x126E, 0x990C, 0x990C, 0x10F4, - 0x990E, 0x990E, 0x43ED, 0x9910, 0x9910, 0x139B, 0x9911, 0x9911, 0x2ACD, - 0x9912, 0x9912, 0x1270, 0x9913, 0x9913, 0x126F, 0x9914, 0x9914, 0x2ACE, - 0x9915, 0x9915, 0x2AD1, 0x9916, 0x9917, 0x2ACF, 0x9918, 0x9918, 0x1271, - 0x9919, 0x9919, 0x47BC, 0x991A, 0x991A, 0x13A0, 0x991B, 0x991B, 0x139E, - 0x991C, 0x991C, 0x43EE, 0x991E, 0x991E, 0x139D, 0x991F, 0x991F, 0x2D00, - 0x9921, 0x9921, 0x139F, 0x9924, 0x9924, 0x2CFF, 0x9925, 0x9925, 0x2EC4, - 0x9927, 0x9927, 0x2D01, 0x9928, 0x9928, 0x139C, 0x9929, 0x9929, 0x2D02, - 0x992A, 0x992A, 0x2EC7, 0x992B, 0x992C, 0x2EC5, 0x992D, 0x992D, 0x2ECB, - 0x992E, 0x992E, 0x1561, 0x992F, 0x992F, 0x2ECA, 0x9930, 0x9930, 0x2ECD, - 0x9931, 0x9931, 0x2ECC, 0x9932, 0x9932, 0x2EC9, 0x9933, 0x9933, 0x2EC8, - 0x9935, 0x9935, 0x14B8, 0x9937, 0x9937, 0x47BD, 0x9938, 0x9938, 0x3BFD, - 0x9939, 0x9939, 0x38FA, 0x993A, 0x993A, 0x303D, 0x993B, 0x993B, 0x3C11, - 0x993C, 0x993C, 0x303C, 0x993D, 0x993D, 0x1560, 0x993E, 0x993F, 0x155E, - 0x9940, 0x9940, 0x3F34, 0x9941, 0x9941, 0x303B, 0x9942, 0x9942, 0x43FF, - 0x9943, 0x9943, 0x317B, 0x9945, 0x9945, 0x15F7, 0x9947, 0x9947, 0x317A, - 0x9948, 0x9948, 0x3179, 0x9949, 0x9949, 0x15F8, 0x994A, 0x994A, 0x3FB9, - 0x994B, 0x994B, 0x327F, 0x994C, 0x994C, 0x327E, 0x994D, 0x994D, 0x3C12, - 0x994E, 0x994E, 0x327C, 0x9950, 0x9950, 0x327B, 0x9951, 0x9951, 0x1659, - 0x9952, 0x9952, 0x1658, 0x9953, 0x9953, 0x3280, 0x9954, 0x9954, 0x33D6, - 0x9955, 0x9955, 0x16E7, 0x9956, 0x9956, 0x333A, 0x9957, 0x9957, 0x16A7, - 0x9958, 0x9958, 0x3339, 0x9959, 0x9959, 0x327D, 0x995B, 0x995B, 0x33D7, - 0x995C, 0x995C, 0x1712, 0x995D, 0x995D, 0x47BE, 0x995E, 0x995E, 0x174E, - 0x995F, 0x995F, 0x34F3, 0x9961, 0x9961, 0x352A, 0x9962, 0x9962, 0x43EF, - 0x9963, 0x9963, 0x4510, 0x9996, 0x9996, 0x082F, 0x9997, 0x9997, 0x20AD, - 0x9998, 0x9998, 0x2ECE, 0x9999, 0x9999, 0x0830, 0x999B, 0x999B, 0x3C15, - 0x999C, 0x999C, 0x2869, 0x999D, 0x999D, 0x2868, 0x999E, 0x999E, 0x2D03, - 0x99A1, 0x99A1, 0x2ED0, 0x99A3, 0x99A3, 0x2ECF, 0x99A4, 0x99A4, 0x41C3, - 0x99A5, 0x99A5, 0x1562, 0x99A6, 0x99A7, 0x317C, 0x99A8, 0x99A8, 0x165A, - 0x99AA, 0x99AA, 0x3C17, 0x99AB, 0x99AB, 0x352B, 0x99AC, 0x99AC, 0x09F5, - 0x99AD, 0x99AD, 0x0DBA, 0x99AE, 0x99AE, 0x0DB9, 0x99AF, 0x99AF, 0x2607, - 0x99B0, 0x99B0, 0x2609, 0x99B1, 0x99B1, 0x0F76, 0x99B2, 0x99B2, 0x2608, - 0x99B3, 0x99B3, 0x0F75, 0x99B4, 0x99B4, 0x0F77, 0x99B5, 0x99B5, 0x260A, - 0x99B8, 0x99B8, 0x394B, 0x99B9, 0x99B9, 0x286B, 0x99BA, 0x99BA, 0x286D, - 0x99BB, 0x99BB, 0x286C, 0x99BC, 0x99BC, 0x3C22, 0x99BD, 0x99BD, 0x286F, - 0x99C1, 0x99C1, 0x10F6, 0x99C2, 0x99C2, 0x286E, 0x99C3, 0x99C3, 0x286A, - 0x99C4, 0x99C4, 0x3D77, 0x99C5, 0x99C5, 0x47C1, 0x99C7, 0x99C7, 0x2870, - 0x99C9, 0x99C9, 0x2AD8, 0x99CB, 0x99CB, 0x2ADB, 0x99CC, 0x99CC, 0x2ADD, - 0x99CD, 0x99CD, 0x2AD3, 0x99CE, 0x99CE, 0x2AD7, 0x99CF, 0x99CF, 0x2AD4, - 0x99D0, 0x99D0, 0x1273, 0x99D1, 0x99D1, 0x1276, 0x99D2, 0x99D2, 0x1278, - 0x99D3, 0x99D4, 0x2AD5, 0x99D5, 0x99D5, 0x1277, 0x99D6, 0x99D6, 0x2AD9, - 0x99D7, 0x99D7, 0x2ADC, 0x99D8, 0x99D8, 0x2ADA, 0x99D9, 0x99D9, 0x1279, - 0x99DA, 0x99DA, 0x3F42, 0x99DB, 0x99DB, 0x1275, 0x99DC, 0x99DC, 0x2AD2, - 0x99DD, 0x99DD, 0x1272, 0x99DF, 0x99DF, 0x1274, 0x99E1, 0x99E1, 0x3785, - 0x99E2, 0x99E2, 0x13A2, 0x99E3, 0x99E3, 0x2D09, 0x99E4, 0x99E4, 0x2D07, - 0x99E5, 0x99E5, 0x2D06, 0x99E6, 0x99E6, 0x3B65, 0x99E7, 0x99E7, 0x2D0C, - 0x99E9, 0x99E9, 0x2D0B, 0x99EA, 0x99EA, 0x2D0A, 0x99EC, 0x99EC, 0x2D05, - 0x99ED, 0x99ED, 0x13A1, 0x99EE, 0x99EE, 0x2D04, 0x99F0, 0x99F0, 0x2D08, - 0x99F1, 0x99F1, 0x13A3, 0x99F4, 0x99F4, 0x2ED3, 0x99F5, 0x99F5, 0x38FF, - 0x99F6, 0x99F6, 0x2ED7, 0x99F7, 0x99F7, 0x2ED4, 0x99F8, 0x99F8, 0x2ED6, - 0x99F9, 0x99F9, 0x2ED5, 0x99FA, 0x99FA, 0x2ED2, 0x99FB, 0x99FB, 0x2ED8, - 0x99FC, 0x99FC, 0x2EDB, 0x99FD, 0x99FE, 0x2ED9, 0x99FF, 0x99FF, 0x14BA, - 0x9A01, 0x9A01, 0x14B9, 0x9A02, 0x9A02, 0x2ED1, 0x9A03, 0x9A03, 0x2EDC, - 0x9A04, 0x9A04, 0x3042, 0x9A05, 0x9A05, 0x3045, 0x9A06, 0x9A06, 0x3047, - 0x9A07, 0x9A07, 0x3046, 0x9A09, 0x9A09, 0x3040, 0x9A0A, 0x9A0A, 0x3044, - 0x9A0B, 0x9A0B, 0x303F, 0x9A0C, 0x9A0C, 0x3900, 0x9A0D, 0x9A0D, 0x3041, - 0x9A0E, 0x9A0E, 0x1563, 0x9A0F, 0x9A0F, 0x303E, 0x9A10, 0x9A10, 0x3902, - 0x9A11, 0x9A11, 0x3043, 0x9A14, 0x9A14, 0x318A, 0x9A15, 0x9A15, 0x317F, - 0x9A16, 0x9A16, 0x15F9, 0x9A19, 0x9A19, 0x15FA, 0x9A1A, 0x9A1A, 0x317E, - 0x9A1B, 0x9A1B, 0x3183, 0x9A1C, 0x9A1C, 0x3189, 0x9A1D, 0x9A1D, 0x3181, - 0x9A1E, 0x9A1E, 0x3188, 0x9A1F, 0x9A1F, 0x3B6C, 0x9A20, 0x9A20, 0x3185, - 0x9A21, 0x9A21, 0x3C1C, 0x9A22, 0x9A22, 0x3184, 0x9A23, 0x9A23, 0x3187, - 0x9A24, 0x9A24, 0x3182, 0x9A25, 0x9A25, 0x3180, 0x9A26, 0x9A26, 0x3DF2, - 0x9A27, 0x9A27, 0x3186, 0x9A29, 0x9A29, 0x3287, 0x9A2A, 0x9A2A, 0x3285, - 0x9A2B, 0x9A2B, 0x165B, 0x9A2C, 0x9A2C, 0x3284, 0x9A2D, 0x9A2D, 0x328A, - 0x9A2E, 0x9A2E, 0x3288, 0x9A2F, 0x9A2F, 0x3C1E, 0x9A30, 0x9A30, 0x165C, - 0x9A31, 0x9A31, 0x3283, 0x9A32, 0x9A32, 0x3281, 0x9A34, 0x9A34, 0x3282, - 0x9A35, 0x9A35, 0x165E, 0x9A36, 0x9A36, 0x3286, 0x9A37, 0x9A37, 0x165D, - 0x9A38, 0x9A38, 0x3289, 0x9A39, 0x9A39, 0x333B, 0x9A3A, 0x9A3A, 0x3341, - 0x9A3B, 0x9A3B, 0x3901, 0x9A3C, 0x9A3C, 0x47C3, 0x9A3D, 0x9A3D, 0x333C, - 0x9A3E, 0x9A3E, 0x16AB, 0x9A3F, 0x9A3F, 0x3342, 0x9A40, 0x9A40, 0x16AA, - 0x9A41, 0x9A41, 0x3340, 0x9A42, 0x9A42, 0x333F, 0x9A43, 0x9A43, 0x16A9, - 0x9A44, 0x9A44, 0x333E, 0x9A45, 0x9A45, 0x16A8, 0x9A46, 0x9A46, 0x333D, - 0x9A48, 0x9A48, 0x33DD, 0x9A49, 0x9A49, 0x33DF, 0x9A4A, 0x9A4A, 0x33DE, - 0x9A4C, 0x9A4C, 0x33DB, 0x9A4D, 0x9A4D, 0x16E9, 0x9A4E, 0x9A4E, 0x33D8, - 0x9A4F, 0x9A4F, 0x33DC, 0x9A50, 0x9A50, 0x33E1, 0x9A52, 0x9A52, 0x33E0, - 0x9A53, 0x9A54, 0x33D9, 0x9A55, 0x9A55, 0x16E8, 0x9A56, 0x9A56, 0x344F, - 0x9A57, 0x9A57, 0x1715, 0x9A58, 0x9A58, 0x3903, 0x9A59, 0x9A59, 0x3450, - 0x9A5A, 0x9A5B, 0x1713, 0x9A5C, 0x9A5C, 0x3C18, 0x9A5E, 0x9A5E, 0x34AE, - 0x9A5F, 0x9A5F, 0x1737, 0x9A60, 0x9A60, 0x3510, 0x9A62, 0x9A62, 0x1757, - 0x9A63, 0x9A63, 0x3B67, 0x9A64, 0x9A64, 0x352C, 0x9A65, 0x9A65, 0x1758, - 0x9A66, 0x9A67, 0x352D, 0x9A68, 0x9A68, 0x353C, 0x9A69, 0x9A69, 0x353B, - 0x9A6A, 0x9A6A, 0x1767, 0x9A6B, 0x9A6B, 0x3544, 0x9A6C, 0x9A6C, 0x4585, - 0x9A8F, 0x9A8F, 0x4586, 0x9AA8, 0x9AA8, 0x09F6, 0x9AAB, 0x9AAB, 0x260C, - 0x9AAD, 0x9AAD, 0x260B, 0x9AAF, 0x9AB0, 0x10F7, 0x9AB1, 0x9AB1, 0x2871, - 0x9AB2, 0x9AB2, 0x4332, 0x9AB3, 0x9AB3, 0x2ADE, 0x9AB4, 0x9AB4, 0x2D0F, - 0x9AB6, 0x9AB6, 0x43F0, 0x9AB7, 0x9AB7, 0x127A, 0x9AB8, 0x9AB8, 0x13A4, - 0x9AB9, 0x9AB9, 0x2D0D, 0x9ABA, 0x9ABA, 0x3F74, 0x9ABB, 0x9ABB, 0x2D10, - 0x9ABC, 0x9ABC, 0x13A5, 0x9ABD, 0x9ABD, 0x3D97, 0x9ABE, 0x9ABE, 0x2EDD, - 0x9ABF, 0x9ABF, 0x2D0E, 0x9AC0, 0x9AC0, 0x3048, 0x9AC1, 0x9AC1, 0x1564, - 0x9AC2, 0x9AC2, 0x318B, 0x9AC6, 0x9AC6, 0x328D, 0x9AC7, 0x9AC7, 0x328B, - 0x9ACA, 0x9ACA, 0x328C, 0x9ACD, 0x9ACD, 0x3343, 0x9ACF, 0x9ACF, 0x16AC, - 0x9AD0, 0x9AD0, 0x33E2, 0x9AD1, 0x9AD1, 0x1718, 0x9AD2, 0x9AD2, 0x16EA, - 0x9AD3, 0x9AD4, 0x1716, 0x9AD5, 0x9AD5, 0x34AF, 0x9AD6, 0x9AD6, 0x174F, - 0x9AD7, 0x9AD7, 0x3FAA, 0x9AD8, 0x9AD8, 0x09F7, 0x9ADC, 0x9ADC, 0x3049, - 0x9ADF, 0x9ADF, 0x1E33, 0x9AE0, 0x9AE0, 0x3908, 0x9AE1, 0x9AE1, 0x0F78, - 0x9AE2, 0x9AE2, 0x3909, 0x9AE3, 0x9AE3, 0x2872, 0x9AE6, 0x9AE6, 0x10F9, - 0x9AE7, 0x9AE7, 0x2873, 0x9AEB, 0x9AEB, 0x2AE0, 0x9AEC, 0x9AEC, 0x2ADF, - 0x9AED, 0x9AED, 0x13A7, 0x9AEE, 0x9AEF, 0x127B, 0x9AF1, 0x9AF1, 0x2AE3, - 0x9AF2, 0x9AF2, 0x2AE2, 0x9AF3, 0x9AF3, 0x2AE1, 0x9AF4, 0x9AF4, 0x390B, - 0x9AF6, 0x9AF6, 0x2D11, 0x9AF7, 0x9AF7, 0x2D14, 0x9AF9, 0x9AF9, 0x2D13, - 0x9AFA, 0x9AFA, 0x2D12, 0x9AFB, 0x9AFB, 0x13A6, 0x9AFC, 0x9AFC, 0x2EE1, - 0x9AFD, 0x9AFD, 0x2EDF, 0x9AFE, 0x9AFE, 0x2EDE, 0x9AFF, 0x9AFF, 0x3F17, - 0x9B01, 0x9B01, 0x2EE0, 0x9B02, 0x9B02, 0x3F12, 0x9B03, 0x9B03, 0x1565, - 0x9B04, 0x9B05, 0x304B, 0x9B06, 0x9B06, 0x1566, 0x9B08, 0x9B08, 0x304A, - 0x9B09, 0x9B09, 0x3F20, 0x9B0A, 0x9B0A, 0x318D, 0x9B0B, 0x9B0B, 0x318C, - 0x9B0C, 0x9B0C, 0x318F, 0x9B0D, 0x9B0D, 0x15FB, 0x9B0E, 0x9B0E, 0x318E, - 0x9B0F, 0x9B0F, 0x47C4, 0x9B10, 0x9B10, 0x328E, 0x9B11, 0x9B11, 0x3290, - 0x9B12, 0x9B12, 0x328F, 0x9B14, 0x9B14, 0x390D, 0x9B15, 0x9B15, 0x3344, - 0x9B16, 0x9B16, 0x3347, 0x9B17, 0x9B18, 0x3345, 0x9B19, 0x9B19, 0x33E3, - 0x9B1A, 0x9B1A, 0x16EB, 0x9B1E, 0x9B20, 0x3451, 0x9B22, 0x9B22, 0x1738, - 0x9B23, 0x9B23, 0x1750, 0x9B24, 0x9B24, 0x352F, 0x9B25, 0x9B25, 0x09F8, - 0x9B27, 0x9B27, 0x127D, 0x9B28, 0x9B28, 0x13A8, 0x9B29, 0x9B29, 0x304D, - 0x9B2A, 0x9B2A, 0x3F19, 0x9B2B, 0x9B2B, 0x33E4, 0x9B2D, 0x9B2D, 0x390E, - 0x9B2E, 0x9B2E, 0x3511, 0x9B2F, 0x9B2F, 0x1E34, 0x9B31, 0x9B31, 0x1768, - 0x9B32, 0x9B32, 0x09F9, 0x9B33, 0x9B33, 0x2D15, 0x9B34, 0x9B34, 0x3911, - 0x9B35, 0x9B35, 0x304E, 0x9B37, 0x9B37, 0x3190, 0x9B39, 0x9B39, 0x3F00, - 0x9B3A, 0x9B3A, 0x3348, 0x9B3B, 0x9B3B, 0x33E5, 0x9B3C, 0x9B3C, 0x09FA, - 0x9B3E, 0x9B3F, 0x2874, 0x9B40, 0x9B40, 0x3915, 0x9B41, 0x9B42, 0x10FA, - 0x9B43, 0x9B43, 0x2AE5, 0x9B44, 0x9B44, 0x127F, 0x9B45, 0x9B45, 0x127E, - 0x9B46, 0x9B46, 0x2AE4, 0x9B48, 0x9B48, 0x2EE2, 0x9B4A, 0x9B4A, 0x304F, - 0x9B4B, 0x9B4B, 0x3051, 0x9B4C, 0x9B4C, 0x3050, 0x9B4D, 0x9B4D, 0x1569, - 0x9B4E, 0x9B4E, 0x1568, 0x9B4F, 0x9B4F, 0x1567, 0x9B50, 0x9B50, 0x3914, - 0x9B51, 0x9B51, 0x16AE, 0x9B52, 0x9B52, 0x3349, 0x9B54, 0x9B54, 0x16AD, - 0x9B55, 0x9B55, 0x33E7, 0x9B56, 0x9B56, 0x33E6, 0x9B58, 0x9B58, 0x1739, - 0x9B59, 0x9B59, 0x34B0, 0x9B5A, 0x9B5A, 0x0BE1, 0x9B5B, 0x9B5B, 0x260D, - 0x9B5F, 0x9B5F, 0x2878, 0x9B60, 0x9B61, 0x2876, 0x9B64, 0x9B64, 0x2AEE, - 0x9B66, 0x9B66, 0x2AE9, 0x9B67, 0x9B67, 0x2AE6, 0x9B68, 0x9B68, 0x2AED, - 0x9B69, 0x9B69, 0x47C5, 0x9B6C, 0x9B6C, 0x2AEF, 0x9B6F, 0x9B6F, 0x1281, - 0x9B70, 0x9B70, 0x2AEC, 0x9B71, 0x9B71, 0x2AE8, 0x9B74, 0x9B74, 0x2AE7, - 0x9B75, 0x9B75, 0x2AEB, 0x9B76, 0x9B76, 0x2AEA, 0x9B77, 0x9B77, 0x1280, - 0x9B7A, 0x9B7A, 0x2D20, 0x9B7B, 0x9B7B, 0x2D1B, 0x9B7C, 0x9B7C, 0x2D19, - 0x9B7D, 0x9B7D, 0x2D22, 0x9B7E, 0x9B7E, 0x2D1A, 0x9B7F, 0x9B7F, 0x3C3B, - 0x9B80, 0x9B80, 0x2D16, 0x9B81, 0x9B81, 0x43F1, 0x9B82, 0x9B82, 0x2D1C, - 0x9B83, 0x9B83, 0x4219, 0x9B85, 0x9B85, 0x2D17, 0x9B86, 0x9B86, 0x2EEB, - 0x9B87, 0x9B87, 0x2D18, 0x9B88, 0x9B88, 0x2D23, 0x9B8B, 0x9B8B, 0x3EEE, - 0x9B8D, 0x9B8D, 0x4623, 0x9B8E, 0x9B8E, 0x3919, 0x9B8F, 0x9B8F, 0x3FAD, - 0x9B90, 0x9B90, 0x2D1F, 0x9B91, 0x9B91, 0x13A9, 0x9B92, 0x9B92, 0x2D1E, - 0x9B93, 0x9B93, 0x2D1D, 0x9B95, 0x9B95, 0x2D21, 0x9B97, 0x9B97, 0x3F71, - 0x9B9A, 0x9B9A, 0x2EE3, 0x9B9B, 0x9B9B, 0x2EE6, 0x9B9D, 0x9B9D, 0x3F56, - 0x9B9E, 0x9B9E, 0x2EE5, 0x9B9F, 0x9B9F, 0x3C3E, 0x9BA0, 0x9BA0, 0x2EED, - 0x9BA1, 0x9BA1, 0x2EE8, 0x9BA2, 0x9BA2, 0x2EEC, 0x9BA4, 0x9BA4, 0x2EEA, - 0x9BA5, 0x9BA5, 0x2EE9, 0x9BA6, 0x9BA6, 0x2EE7, 0x9BA8, 0x9BA8, 0x2EE4, - 0x9BAA, 0x9BAA, 0x14BD, 0x9BAB, 0x9BAB, 0x14BC, 0x9BAD, 0x9BAD, 0x14BE, - 0x9BAE, 0x9BAE, 0x14BB, 0x9BAF, 0x9BAF, 0x2EEE, 0x9BB0, 0x9BB0, 0x3FB4, - 0x9BB5, 0x9BB5, 0x3057, 0x9BB6, 0x9BB6, 0x305A, 0x9BB8, 0x9BB8, 0x3058, - 0x9BB9, 0x9BB9, 0x305C, 0x9BBD, 0x9BBD, 0x305D, 0x9BBF, 0x9BBF, 0x3055, - 0x9BC0, 0x9BC0, 0x156E, 0x9BC1, 0x9BC1, 0x3056, 0x9BC3, 0x9BC3, 0x3054, - 0x9BC4, 0x9BC4, 0x305B, 0x9BC6, 0x9BC6, 0x3053, 0x9BC7, 0x9BC7, 0x3052, - 0x9BC8, 0x9BC8, 0x156D, 0x9BC9, 0x9BC9, 0x156B, 0x9BCA, 0x9BCA, 0x156A, - 0x9BCF, 0x9BCF, 0x3C3C, 0x9BD3, 0x9BD3, 0x3059, 0x9BD4, 0x9BD4, 0x3199, - 0x9BD5, 0x9BD5, 0x319F, 0x9BD6, 0x9BD6, 0x15FE, 0x9BD7, 0x9BD7, 0x319A, - 0x9BD9, 0x9BD9, 0x319D, 0x9BDA, 0x9BDA, 0x31A1, 0x9BDB, 0x9BDB, 0x15FF, - 0x9BDC, 0x9BDC, 0x319C, 0x9BDD, 0x9BDD, 0x47C6, 0x9BDE, 0x9BDE, 0x3194, - 0x9BE0, 0x9BE0, 0x3193, 0x9BE1, 0x9BE1, 0x31A0, 0x9BE2, 0x9BE2, 0x3197, - 0x9BE4, 0x9BE4, 0x3195, 0x9BE5, 0x9BE5, 0x319E, 0x9BE6, 0x9BE6, 0x3196, - 0x9BE7, 0x9BE7, 0x15FD, 0x9BE8, 0x9BE8, 0x15FC, 0x9BE9, 0x9BE9, 0x3BC1, - 0x9BEA, 0x9BEB, 0x3191, 0x9BEC, 0x9BEC, 0x319B, 0x9BED, 0x9BED, 0x3ED7, - 0x9BF0, 0x9BF0, 0x3198, 0x9BF1, 0x9BF1, 0x47C7, 0x9BF4, 0x9BF4, 0x47C8, - 0x9BF7, 0x9BF7, 0x3293, 0x9BF8, 0x9BF8, 0x3296, 0x9BFD, 0x9BFD, 0x156C, - 0x9BFF, 0x9BFF, 0x391B, 0x9C02, 0x9C02, 0x391A, 0x9C05, 0x9C05, 0x3294, - 0x9C06, 0x9C06, 0x329A, 0x9C07, 0x9C07, 0x3298, 0x9C08, 0x9C08, 0x3292, - 0x9C09, 0x9C09, 0x329D, 0x9C0A, 0x9C0A, 0x3F3A, 0x9C0B, 0x9C0B, 0x3291, - 0x9C0C, 0x9C0C, 0x391C, 0x9C0D, 0x9C0D, 0x1660, 0x9C0E, 0x9C0E, 0x3299, - 0x9C10, 0x9C10, 0x3C3A, 0x9C12, 0x9C12, 0x3295, 0x9C13, 0x9C13, 0x165F, - 0x9C14, 0x9C14, 0x329C, 0x9C15, 0x9C15, 0x3F1E, 0x9C17, 0x9C17, 0x329B, - 0x9C1B, 0x9C1B, 0x491B, 0x9C1C, 0x9C1C, 0x334C, 0x9C1D, 0x9C1D, 0x334B, - 0x9C1F, 0x9C1F, 0x4622, 0x9C20, 0x9C20, 0x47CA, 0x9C21, 0x9C21, 0x3352, - 0x9C23, 0x9C23, 0x334E, 0x9C24, 0x9C24, 0x3351, 0x9C25, 0x9C25, 0x16B0, - 0x9C26, 0x9C26, 0x45E6, 0x9C28, 0x9C29, 0x334F, 0x9C2B, 0x9C2B, 0x334A, - 0x9C2C, 0x9C2C, 0x334D, 0x9C2D, 0x9C2D, 0x16AF, 0x9C2E, 0x9C2E, 0x3F22, - 0x9C2F, 0x9C2F, 0x3D87, 0x9C31, 0x9C31, 0x16ED, 0x9C32, 0x9C32, 0x33F2, - 0x9C33, 0x9C33, 0x33ED, 0x9C34, 0x9C34, 0x33F1, 0x9C35, 0x9C35, 0x3C39, - 0x9C36, 0x9C36, 0x33F4, 0x9C37, 0x9C37, 0x33F0, 0x9C39, 0x9C39, 0x33EC, - 0x9C3A, 0x9C3A, 0x3D7E, 0x9C3B, 0x9C3B, 0x16EF, 0x9C3C, 0x9C3C, 0x33EF, - 0x9C3D, 0x9C3D, 0x33F3, 0x9C3E, 0x9C3E, 0x16EE, 0x9C3F, 0x9C3F, 0x33EA, - 0x9C40, 0x9C40, 0x3297, 0x9C41, 0x9C41, 0x33EE, 0x9C44, 0x9C44, 0x33EB, - 0x9C45, 0x9C45, 0x3E71, 0x9C46, 0x9C46, 0x33E8, 0x9C48, 0x9C48, 0x33E9, - 0x9C49, 0x9C49, 0x16EC, 0x9C4A, 0x9C4A, 0x3457, 0x9C4B, 0x9C4B, 0x3459, - 0x9C4C, 0x9C4C, 0x345C, 0x9C4D, 0x9C4D, 0x3458, 0x9C4E, 0x9C4E, 0x345D, - 0x9C4F, 0x9C4F, 0x3C36, 0x9C50, 0x9C50, 0x3456, 0x9C52, 0x9C52, 0x3454, - 0x9C53, 0x9C53, 0x3C37, 0x9C54, 0x9C54, 0x1719, 0x9C55, 0x9C55, 0x345A, - 0x9C56, 0x9C56, 0x171B, 0x9C57, 0x9C57, 0x171A, 0x9C58, 0x9C58, 0x3455, - 0x9C59, 0x9C59, 0x345B, 0x9C5D, 0x9C5D, 0x3EBF, 0x9C5E, 0x9C5E, 0x34B5, - 0x9C5F, 0x9C5F, 0x173A, 0x9C60, 0x9C60, 0x34B6, 0x9C62, 0x9C62, 0x34B4, - 0x9C63, 0x9C63, 0x34B1, 0x9C66, 0x9C66, 0x34B3, 0x9C67, 0x9C67, 0x34B2, - 0x9C68, 0x9C68, 0x34F4, 0x9C6D, 0x9C6D, 0x34F6, 0x9C6E, 0x9C6E, 0x34F5, - 0x9C71, 0x9C71, 0x3514, 0x9C72, 0x9C72, 0x3EA1, 0x9C73, 0x9C73, 0x3513, - 0x9C74, 0x9C74, 0x3512, 0x9C75, 0x9C75, 0x3515, 0x9C77, 0x9C78, 0x1760, - 0x9C79, 0x9C79, 0x3541, 0x9C7A, 0x9C7A, 0x3545, 0x9C7B, 0x9C7B, 0x3C38, - 0x9C7C, 0x9C7C, 0x4512, 0x9CE5, 0x9CE5, 0x0BE2, 0x9CE6, 0x9CE6, 0x235F, - 0x9CE7, 0x9CE7, 0x2610, 0x9CE9, 0x9CE9, 0x0F79, 0x9CEA, 0x9CEA, 0x260E, - 0x9CED, 0x9CED, 0x260F, 0x9CF1, 0x9CF2, 0x2879, 0x9CF3, 0x9CF3, 0x10FE, - 0x9CF4, 0x9CF4, 0x10FC, 0x9CF5, 0x9CF5, 0x287B, 0x9CF6, 0x9CF6, 0x10FD, - 0x9CF7, 0x9CF7, 0x2AF4, 0x9CF9, 0x9CF9, 0x2AF7, 0x9CFA, 0x9CFA, 0x2AF1, - 0x9CFB, 0x9CFB, 0x2AF8, 0x9CFC, 0x9CFC, 0x2AF0, 0x9CFD, 0x9CFD, 0x2AF2, - 0x9CFF, 0x9CFF, 0x2AF3, 0x9D00, 0x9D00, 0x2AF6, 0x9D02, 0x9D02, 0x3F3B, - 0x9D03, 0x9D03, 0x1284, 0x9D04, 0x9D04, 0x2AFB, 0x9D05, 0x9D05, 0x2AFA, - 0x9D06, 0x9D06, 0x1282, 0x9D07, 0x9D07, 0x2AF5, 0x9D08, 0x9D08, 0x2AF9, - 0x9D09, 0x9D09, 0x1283, 0x9D0C, 0x9D0C, 0x3C46, 0x9D10, 0x9D10, 0x2D2D, - 0x9D12, 0x9D12, 0x13AE, 0x9D14, 0x9D14, 0x2D28, 0x9D15, 0x9D15, 0x13AA, - 0x9D16, 0x9D16, 0x3C7C, 0x9D17, 0x9D17, 0x2D25, 0x9D18, 0x9D18, 0x2D2B, - 0x9D19, 0x9D19, 0x2D2E, 0x9D1B, 0x9D1B, 0x13AF, 0x9D1D, 0x9D1D, 0x2D2A, - 0x9D1E, 0x9D1E, 0x2D27, 0x9D1F, 0x9D1F, 0x2D2F, 0x9D20, 0x9D20, 0x2D26, - 0x9D21, 0x9D21, 0x3C41, 0x9D22, 0x9D22, 0x2D2C, 0x9D23, 0x9D23, 0x13AB, - 0x9D25, 0x9D25, 0x2D24, 0x9D26, 0x9D26, 0x13AC, 0x9D28, 0x9D28, 0x13AD, - 0x9D29, 0x9D29, 0x2D29, 0x9D2D, 0x9D2D, 0x2F00, 0x9D2E, 0x9D2F, 0x2EF3, - 0x9D30, 0x9D30, 0x2EF7, 0x9D31, 0x9D31, 0x2EF5, 0x9D33, 0x9D33, 0x2EEF, - 0x9D34, 0x9D34, 0x404A, 0x9D36, 0x9D36, 0x2EF2, 0x9D37, 0x9D37, 0x2EFC, - 0x9D38, 0x9D38, 0x2EF6, 0x9D39, 0x9D39, 0x392E, 0x9D3B, 0x9D3B, 0x14BF, - 0x9D3D, 0x9D3D, 0x2EFE, 0x9D3E, 0x9D3E, 0x2EFB, 0x9D3F, 0x9D3F, 0x14C0, - 0x9D40, 0x9D40, 0x2EFD, 0x9D41, 0x9D41, 0x2EF0, 0x9D42, 0x9D43, 0x2EF9, - 0x9D44, 0x9D44, 0x3FAB, 0x9D45, 0x9D45, 0x2EF8, 0x9D49, 0x9D49, 0x47CD, - 0x9D4A, 0x9D4A, 0x3061, 0x9D4B, 0x9D4B, 0x3063, 0x9D4C, 0x9D4C, 0x3066, - 0x9D4E, 0x9D4E, 0x4539, 0x9D4F, 0x9D4F, 0x3060, 0x9D50, 0x9D50, 0x3ECA, - 0x9D51, 0x9D51, 0x156F, 0x9D52, 0x9D52, 0x3068, 0x9D53, 0x9D53, 0x305F, - 0x9D54, 0x9D54, 0x3069, 0x9D56, 0x9D56, 0x3065, 0x9D57, 0x9D57, 0x3067, - 0x9D58, 0x9D58, 0x306B, 0x9D59, 0x9D59, 0x3064, 0x9D5A, 0x9D5A, 0x306C, - 0x9D5B, 0x9D5B, 0x3062, 0x9D5C, 0x9D5C, 0x305E, 0x9D5D, 0x9D5D, 0x1570, - 0x9D5E, 0x9D5E, 0x3E6E, 0x9D5F, 0x9D5F, 0x306A, 0x9D60, 0x9D60, 0x1571, - 0x9D61, 0x9D61, 0x1601, 0x9D67, 0x9D67, 0x2EF1, 0x9D68, 0x9D68, 0x31BB, - 0x9D69, 0x9D69, 0x31B2, 0x9D6A, 0x9D6A, 0x1603, 0x9D6B, 0x9D6B, 0x31AE, - 0x9D6C, 0x9D6C, 0x1604, 0x9D6D, 0x9D6D, 0x3BAC, 0x9D6E, 0x9D6E, 0x433B, - 0x9D6F, 0x9D6F, 0x31B7, 0x9D70, 0x9D70, 0x31B1, 0x9D71, 0x9D71, 0x31A7, - 0x9D72, 0x9D72, 0x1602, 0x9D73, 0x9D73, 0x31B4, 0x9D74, 0x9D75, 0x31AF, - 0x9D77, 0x9D77, 0x31A2, 0x9D78, 0x9D78, 0x31A9, 0x9D79, 0x9D79, 0x31B8, - 0x9D7B, 0x9D7B, 0x31B5, 0x9D7C, 0x9D7C, 0x3EFE, 0x9D7D, 0x9D7D, 0x31AD, - 0x9D7E, 0x9D7E, 0x3925, 0x9D7F, 0x9D7F, 0x31B9, 0x9D80, 0x9D80, 0x31A8, - 0x9D81, 0x9D81, 0x31A3, 0x9D82, 0x9D82, 0x31B6, 0x9D83, 0x9D83, 0x3926, - 0x9D84, 0x9D84, 0x31A5, 0x9D85, 0x9D85, 0x31B3, 0x9D86, 0x9D86, 0x31AA, - 0x9D87, 0x9D87, 0x31BA, 0x9D88, 0x9D88, 0x31A6, 0x9D89, 0x9D89, 0x1600, - 0x9D8A, 0x9D8A, 0x31A4, 0x9D8B, 0x9D8C, 0x31AB, 0x9D90, 0x9D90, 0x32A4, - 0x9D92, 0x9D92, 0x32A2, 0x9D93, 0x9D93, 0x43F3, 0x9D94, 0x9D94, 0x32A7, - 0x9D96, 0x9D96, 0x32B3, 0x9D97, 0x9D97, 0x32AA, 0x9D98, 0x9D98, 0x32A3, - 0x9D99, 0x9D99, 0x329F, 0x9D9A, 0x9D9A, 0x32AC, 0x9D9B, 0x9D9B, 0x32A5, - 0x9D9C, 0x9D9C, 0x32A8, 0x9D9D, 0x9D9D, 0x32A1, 0x9D9E, 0x9D9E, 0x32AF, - 0x9D9F, 0x9D9F, 0x329E, 0x9DA0, 0x9DA0, 0x32A6, 0x9DA1, 0x9DA1, 0x32AB, - 0x9DA2, 0x9DA2, 0x32AD, 0x9DA3, 0x9DA3, 0x32B0, 0x9DA4, 0x9DA4, 0x32A0, - 0x9DA5, 0x9DA5, 0x3C4B, 0x9DA6, 0x9DA7, 0x32B4, 0x9DA8, 0x9DA8, 0x32AE, - 0x9DA9, 0x9DA9, 0x32B2, 0x9DAA, 0x9DAA, 0x32A9, 0x9DAB, 0x9DAB, 0x3F30, - 0x9DAC, 0x9DAC, 0x3362, 0x9DAD, 0x9DAD, 0x3365, 0x9DAF, 0x9DAF, 0x16B1, - 0x9DB1, 0x9DB1, 0x3364, 0x9DB2, 0x9DB2, 0x3369, 0x9DB3, 0x9DB3, 0x3367, - 0x9DB4, 0x9DB4, 0x16B2, 0x9DB5, 0x9DB5, 0x335E, 0x9DB6, 0x9DB6, 0x3354, - 0x9DB7, 0x9DB7, 0x3353, 0x9DB8, 0x9DB8, 0x16B4, 0x9DB9, 0x9DBA, 0x3360, - 0x9DBB, 0x9DBB, 0x335D, 0x9DBC, 0x9DBC, 0x3355, 0x9DBD, 0x9DBD, 0x47D0, - 0x9DBE, 0x9DBE, 0x335A, 0x9DBF, 0x9DBF, 0x32B1, 0x9DC0, 0x9DC0, 0x43F2, - 0x9DC1, 0x9DC1, 0x3356, 0x9DC2, 0x9DC2, 0x16B3, 0x9DC3, 0x9DC3, 0x335C, - 0x9DC4, 0x9DC4, 0x3929, 0x9DC5, 0x9DC5, 0x335B, 0x9DC7, 0x9DC7, 0x3357, - 0x9DC8, 0x9DC8, 0x3363, 0x9DC9, 0x9DC9, 0x4579, 0x9DCA, 0x9DCA, 0x3358, - 0x9DCB, 0x9DCB, 0x33F9, 0x9DCC, 0x9DCC, 0x3366, 0x9DCD, 0x9DCD, 0x3368, - 0x9DCE, 0x9DCE, 0x335F, 0x9DCF, 0x9DCF, 0x3359, 0x9DD0, 0x9DD0, 0x33FA, - 0x9DD1, 0x9DD1, 0x33FC, 0x9DD2, 0x9DD2, 0x33F6, 0x9DD3, 0x9DD3, 0x16F0, - 0x9DD4, 0x9DD4, 0x391E, 0x9DD5, 0x9DD5, 0x3403, 0x9DD6, 0x9DD6, 0x3401, - 0x9DD7, 0x9DD7, 0x16F1, 0x9DD8, 0x9DD8, 0x3400, 0x9DD9, 0x9DD9, 0x33FF, - 0x9DDA, 0x9DDA, 0x33F8, 0x9DDB, 0x9DDB, 0x33F5, 0x9DDC, 0x9DDC, 0x33FB, - 0x9DDD, 0x9DDD, 0x3404, 0x9DDE, 0x9DDE, 0x33F7, 0x9DDF, 0x9DDF, 0x33FD, - 0x9DE1, 0x9DE1, 0x3466, 0x9DE2, 0x9DE2, 0x346B, 0x9DE3, 0x9DE3, 0x3461, - 0x9DE4, 0x9DE4, 0x3464, 0x9DE5, 0x9DE5, 0x171C, 0x9DE6, 0x9DE6, 0x3468, - 0x9DE8, 0x9DE8, 0x346F, 0x9DE9, 0x9DE9, 0x33FE, 0x9DEB, 0x9DEB, 0x3462, - 0x9DEC, 0x9DEC, 0x346C, 0x9DED, 0x9DED, 0x3470, 0x9DEE, 0x9DEE, 0x3467, - 0x9DEF, 0x9DEF, 0x3460, 0x9DF0, 0x9DF0, 0x346A, 0x9DF2, 0x9DF2, 0x3469, - 0x9DF3, 0x9DF3, 0x346E, 0x9DF4, 0x9DF4, 0x346D, 0x9DF5, 0x9DF5, 0x3402, - 0x9DF6, 0x9DF6, 0x3465, 0x9DF7, 0x9DF7, 0x345F, 0x9DF8, 0x9DF8, 0x3463, - 0x9DF9, 0x9DFA, 0x173B, 0x9DFB, 0x9DFB, 0x345E, 0x9DFC, 0x9DFC, 0x47D1, - 0x9DFD, 0x9DFD, 0x34C1, 0x9DFE, 0x9DFE, 0x34B8, 0x9DFF, 0x9DFF, 0x34C0, - 0x9E00, 0x9E01, 0x34BD, 0x9E02, 0x9E02, 0x34B7, 0x9E03, 0x9E03, 0x34BA, - 0x9E04, 0x9E04, 0x34C2, 0x9E05, 0x9E05, 0x34BC, 0x9E06, 0x9E06, 0x34BB, - 0x9E07, 0x9E07, 0x34B9, 0x9E09, 0x9E09, 0x34BF, 0x9E0A, 0x9E0A, 0x457E, - 0x9E0B, 0x9E0B, 0x34F7, 0x9E0C, 0x9E0C, 0x457A, 0x9E0D, 0x9E0D, 0x34F8, - 0x9E0E, 0x9E0E, 0x3928, 0x9E0F, 0x9E0F, 0x34FA, 0x9E10, 0x9E10, 0x34F9, - 0x9E11, 0x9E11, 0x34FC, 0x9E12, 0x9E12, 0x34FB, 0x9E13, 0x9E13, 0x3517, - 0x9E14, 0x9E14, 0x3516, 0x9E15, 0x9E15, 0x3530, 0x9E17, 0x9E17, 0x3531, - 0x9E18, 0x9E18, 0x3C44, 0x9E19, 0x9E19, 0x353D, 0x9E1A, 0x9E1A, 0x1765, - 0x9E1B, 0x9E1B, 0x1769, 0x9E1C, 0x9E1C, 0x3F84, 0x9E1D, 0x9E1D, 0x3546, - 0x9E1E, 0x9E1E, 0x176A, 0x9E1F, 0x9E1F, 0x4513, 0x9E75, 0x9E75, 0x0BE3, - 0x9E79, 0x9E79, 0x1661, 0x9E7A, 0x9E7A, 0x336A, 0x9E7B, 0x9E7B, 0x43F8, - 0x9E7C, 0x9E7D, 0x173D, 0x9E7F, 0x9E7F, 0x0BE4, 0x9E80, 0x9E80, 0x2611, - 0x9E81, 0x9E81, 0x3F0F, 0x9E82, 0x9E82, 0x0F7A, 0x9E83, 0x9E83, 0x2AFC, - 0x9E84, 0x9E84, 0x3F76, 0x9E85, 0x9E85, 0x3EF2, 0x9E86, 0x9E87, 0x2D31, - 0x9E88, 0x9E88, 0x2D30, 0x9E89, 0x9E89, 0x2F02, 0x9E8A, 0x9E8A, 0x2F01, - 0x9E8B, 0x9E8B, 0x14C1, 0x9E8C, 0x9E8C, 0x306E, 0x9E8D, 0x9E8D, 0x2F03, - 0x9E8E, 0x9E8E, 0x306D, 0x9E90, 0x9E90, 0x3931, 0x9E91, 0x9E91, 0x31BD, - 0x9E92, 0x9E92, 0x1605, 0x9E93, 0x9E93, 0x1607, 0x9E94, 0x9E94, 0x31BC, - 0x9E95, 0x9E95, 0x3932, 0x9E96, 0x9E96, 0x3FBC, 0x9E97, 0x9E97, 0x1606, - 0x9E98, 0x9E98, 0x3F27, 0x9E99, 0x9E99, 0x32B6, 0x9E9A, 0x9E9A, 0x32B8, - 0x9E9B, 0x9E9B, 0x32B7, 0x9E9C, 0x9E9C, 0x336B, 0x9E9D, 0x9E9D, 0x16B5, - 0x9E9E, 0x9E9E, 0x3933, 0x9E9F, 0x9E9F, 0x171D, 0x9EA0, 0x9EA0, 0x34C3, - 0x9EA1, 0x9EA1, 0x34FD, 0x9EA2, 0x9EA2, 0x3934, 0x9EA4, 0x9EA4, 0x354A, - 0x9EA5, 0x9EA5, 0x0BE5, 0x9EA6, 0x9EA6, 0x4944, 0x9EA7, 0x9EA7, 0x287C, - 0x9EA8, 0x9EA8, 0x3F75, 0x9EA9, 0x9EA9, 0x1285, 0x9EAA, 0x9EAA, 0x3936, - 0x9EAB, 0x9EAB, 0x3E92, 0x9EAC, 0x9EAC, 0x43F4, 0x9EAD, 0x9EAD, 0x2D34, - 0x9EAE, 0x9EAE, 0x2D33, 0x9EAF, 0x9EAF, 0x3937, 0x9EB0, 0x9EB0, 0x2F04, - 0x9EB1, 0x9EB1, 0x47D4, 0x9EB4, 0x9EB4, 0x1608, 0x9EB5, 0x9EB5, 0x1662, - 0x9EB6, 0x9EB6, 0x3405, 0x9EB7, 0x9EB7, 0x3542, 0x9EBB, 0x9EBB, 0x0BE6, - 0x9EBC, 0x9EBC, 0x10FF, 0x9EBD, 0x9EBD, 0x47D5, 0x9EBE, 0x9EBE, 0x1286, - 0x9EBF, 0x9EBF, 0x3D78, 0x9EC0, 0x9EC0, 0x31BE, 0x9EC1, 0x9EC1, 0x3939, - 0x9EC2, 0x9EC2, 0x3471, 0x9EC3, 0x9EC3, 0x0DBB, 0x9EC4, 0x9EC4, 0x4514, - 0x9EC6, 0x9EC6, 0x47D6, 0x9EC7, 0x9EC7, 0x4577, 0x9EC8, 0x9EC8, 0x2F05, - 0x9ECC, 0x9ECC, 0x1751, 0x9ECD, 0x9ECD, 0x0DBC, 0x9ECE, 0x9ECE, 0x1287, - 0x9ECF, 0x9ECF, 0x14C2, 0x9ED0, 0x9ED0, 0x3472, 0x9ED1, 0x9ED1, 0x0DBD, - 0x9ED3, 0x9ED3, 0x2AFD, 0x9ED4, 0x9ED4, 0x13B1, 0x9ED5, 0x9ED6, 0x2D35, - 0x9ED8, 0x9ED8, 0x13B0, 0x9EDA, 0x9EDA, 0x2F06, 0x9EDB, 0x9EDB, 0x14C6, - 0x9EDC, 0x9EDD, 0x14C4, 0x9EDE, 0x9EDE, 0x14C3, 0x9EDF, 0x9EDF, 0x306F, - 0x9EE0, 0x9EE0, 0x1572, 0x9EE2, 0x9EE2, 0x47D8, 0x9EE4, 0x9EE4, 0x32BA, - 0x9EE5, 0x9EE5, 0x32B9, 0x9EE6, 0x9EE6, 0x32BC, 0x9EE7, 0x9EE7, 0x32BB, - 0x9EE8, 0x9EE8, 0x1663, 0x9EEB, 0x9EEB, 0x336C, 0x9EED, 0x9EED, 0x336E, - 0x9EEE, 0x9EEE, 0x336D, 0x9EEF, 0x9EEF, 0x16B6, 0x9EF0, 0x9EF0, 0x3406, - 0x9EF1, 0x9EF1, 0x47D9, 0x9EF2, 0x9EF3, 0x3473, 0x9EF4, 0x9EF4, 0x171E, - 0x9EF5, 0x9EF5, 0x34FE, 0x9EF6, 0x9EF6, 0x3518, 0x9EF7, 0x9EF7, 0x1762, - 0x9EF8, 0x9EF8, 0x47DA, 0x9EF9, 0x9EF9, 0x2360, 0x9EFA, 0x9EFA, 0x2D37, - 0x9EFB, 0x9EFB, 0x2F07, 0x9EFC, 0x9EFC, 0x31BF, 0x9EFD, 0x9EFD, 0x2612, - 0x9EFE, 0x9EFE, 0x47CE, 0x9EFF, 0x9EFF, 0x2F08, 0x9F00, 0x9F00, 0x3071, - 0x9F01, 0x9F01, 0x3070, 0x9F02, 0x9F02, 0x3940, 0x9F06, 0x9F06, 0x3475, - 0x9F07, 0x9F07, 0x173F, 0x9F08, 0x9F08, 0x3941, 0x9F09, 0x9F09, 0x34FF, - 0x9F0A, 0x9F0A, 0x3519, 0x9F0E, 0x9F0E, 0x0F7B, 0x9F0F, 0x9F10, 0x2AFE, - 0x9F12, 0x9F12, 0x2D38, 0x9F13, 0x9F13, 0x0F7C, 0x9F15, 0x9F15, 0x1573, - 0x9F16, 0x9F16, 0x3072, 0x9F17, 0x9F17, 0x3945, 0x9F18, 0x9F18, 0x3370, - 0x9F19, 0x9F19, 0x16B7, 0x9F1A, 0x9F1A, 0x3371, 0x9F1B, 0x9F1B, 0x336F, - 0x9F1C, 0x9F1C, 0x3476, 0x9F1E, 0x9F1E, 0x34C4, 0x9F20, 0x9F20, 0x0F7D, - 0x9F22, 0x9F22, 0x2F0B, 0x9F23, 0x9F23, 0x2F0A, 0x9F24, 0x9F24, 0x2F09, - 0x9F25, 0x9F25, 0x3073, 0x9F26, 0x9F26, 0x3F90, 0x9F27, 0x9F27, 0x4620, - 0x9F28, 0x9F28, 0x3077, 0x9F29, 0x9F29, 0x3076, 0x9F2A, 0x9F2A, 0x3075, - 0x9F2B, 0x9F2B, 0x3074, 0x9F2C, 0x9F2C, 0x1574, 0x9F2D, 0x9F2D, 0x31C0, - 0x9F2E, 0x9F2E, 0x32BE, 0x9F2F, 0x9F2F, 0x1664, 0x9F30, 0x9F30, 0x32BD, - 0x9F31, 0x9F31, 0x3372, 0x9F32, 0x9F32, 0x3409, 0x9F33, 0x9F33, 0x3408, - 0x9F34, 0x9F34, 0x16F2, 0x9F35, 0x9F35, 0x3407, 0x9F36, 0x9F36, 0x3479, - 0x9F37, 0x9F37, 0x3478, 0x9F38, 0x9F38, 0x3477, 0x9F39, 0x9F39, 0x3947, - 0x9F3B, 0x9F3B, 0x1100, 0x9F3D, 0x9F3D, 0x2D39, 0x9F3E, 0x9F3E, 0x14C7, - 0x9F40, 0x9F41, 0x31C1, 0x9F42, 0x9F42, 0x340A, 0x9F43, 0x9F43, 0x347A, - 0x9F44, 0x9F44, 0x47DB, 0x9F45, 0x9F45, 0x394A, 0x9F46, 0x9F46, 0x34C5, - 0x9F47, 0x9F47, 0x3500, 0x9F48, 0x9F48, 0x3532, 0x9F49, 0x9F49, 0x354C, - 0x9F4A, 0x9F4A, 0x1101, 0x9F4B, 0x9F4B, 0x14C8, 0x9F4C, 0x9F4C, 0x3078, - 0x9F4D, 0x9F4D, 0x31C3, 0x9F4E, 0x9F4E, 0x3373, 0x9F4F, 0x9F4F, 0x347B, - 0x9F50, 0x9F50, 0x4943, 0x9F52, 0x9F52, 0x1289, 0x9F53, 0x9F53, 0x3F80, - 0x9F54, 0x9F54, 0x2F0C, 0x9F55, 0x9F55, 0x3079, 0x9F56, 0x9F58, 0x31C4, - 0x9F59, 0x9F59, 0x32C3, 0x9F5A, 0x9F5A, 0x3F23, 0x9F5B, 0x9F5B, 0x32BF, - 0x9F5C, 0x9F5C, 0x16B8, 0x9F5D, 0x9F5D, 0x32C2, 0x9F5E, 0x9F5E, 0x32C1, - 0x9F5F, 0x9F5F, 0x1665, 0x9F60, 0x9F60, 0x32C0, 0x9F61, 0x9F61, 0x1667, - 0x9F62, 0x9F62, 0x394F, 0x9F63, 0x9F63, 0x1666, 0x9F64, 0x9F64, 0x3375, - 0x9F65, 0x9F65, 0x3374, 0x9F66, 0x9F67, 0x16B9, 0x9F69, 0x9F69, 0x3950, - 0x9F6A, 0x9F6A, 0x16F4, 0x9F6B, 0x9F6B, 0x340B, 0x9F6C, 0x9F6C, 0x16F3, - 0x9F6E, 0x9F6F, 0x347E, 0x9F70, 0x9F70, 0x347D, 0x9F71, 0x9F71, 0x347C, - 0x9F72, 0x9F72, 0x1741, 0x9F74, 0x9F76, 0x34C6, 0x9F77, 0x9F77, 0x1740, - 0x9F78, 0x9F78, 0x3501, 0x9F79, 0x9F79, 0x3504, 0x9F7A, 0x9F7A, 0x3503, - 0x9F7B, 0x9F7B, 0x3502, 0x9F7E, 0x9F7E, 0x354B, 0x9F7F, 0x9F7F, 0x4680, - 0x9F8D, 0x9F8D, 0x13B2, 0x9F8E, 0x9F8E, 0x3952, 0x9F90, 0x9F90, 0x157C, - 0x9F91, 0x9F91, 0x32C4, 0x9F92, 0x9F92, 0x3376, 0x9F94, 0x9F94, 0x16F5, - 0x9F95, 0x9F95, 0x340C, 0x9F98, 0x9F98, 0x354D, 0x9F99, 0x9F99, 0x4587, - 0x9F9C, 0x9F9C, 0x13B3, 0x9F9F, 0x9F9F, 0x4646, 0x9FA0, 0x9FA0, 0x2F0D, - 0x9FA2, 0x9FA2, 0x340D, 0x9FA4, 0x9FA4, 0x351A, 0x9FA5, 0x9FA5, 0x3F70, - 0xE000, 0xE000, 0x400B, 0xE002, 0xE003, 0x400D, 0xE009, 0xE00A, 0x4014, - 0xE00C, 0xE00C, 0x4017, 0xE00E, 0xE00E, 0x4019, 0xE012, 0xE016, 0x401D, - 0xE018, 0xE018, 0x4023, 0xE01A, 0xE01E, 0x4025, 0xE020, 0xE020, 0x402B, - 0xE022, 0xE023, 0x402D, 0xE025, 0xE025, 0x4030, 0xE02D, 0xE02E, 0x4038, - 0xE030, 0xE030, 0x403B, 0xE032, 0xE038, 0x403D, 0xE03B, 0xE03C, 0x4046, - 0xE045, 0xE045, 0x4050, 0xE04C, 0xE04C, 0x4057, 0xE05A, 0xE05A, 0x4065, - 0xE05C, 0xE05C, 0x4067, 0xE05F, 0xE061, 0x406A, 0xE064, 0xE064, 0x406F, - 0xE066, 0xE066, 0x4071, 0xE06C, 0xE06C, 0x4077, 0xE071, 0xE071, 0x407C, - 0xE074, 0xE075, 0x407F, 0xE078, 0xE078, 0x4083, 0xE07D, 0xE07D, 0x4088, - 0xE087, 0xE087, 0x4092, 0xE089, 0xE08A, 0x4094, 0xE08C, 0xE08C, 0x4097, - 0xE093, 0xE094, 0x409E, 0xE099, 0xE09A, 0x40A4, 0xE09C, 0xE09E, 0x40A7, - 0xE0A6, 0xE0A7, 0x40B1, 0xE0A9, 0xE0A9, 0x40B4, 0xE0AB, 0xE0AB, 0x40B6, - 0xE0AE, 0xE0AE, 0x40B9, 0xE0BA, 0xE0BA, 0x40C5, 0xE0BC, 0xE0BC, 0x40C7, - 0xE0BE, 0xE0BE, 0x40C9, 0xE0C3, 0xE0C3, 0x40CE, 0xE0C5, 0xE0C5, 0x40D0, - 0xE0C7, 0xE0C8, 0x40D2, 0xE0CA, 0xE0CA, 0x40D5, 0xE0D0, 0xE0D0, 0x40DB, - 0xE0D4, 0xE0D5, 0x40DF, 0xE0DC, 0xE0DC, 0x40E7, 0xE0DF, 0xE0DF, 0x40EA, - 0xE0E2, 0xE0E5, 0x40ED, 0xE0E7, 0xE0E9, 0x40F2, 0xE0EB, 0xE0EC, 0x40F6, - 0xE0EE, 0xE0EE, 0x40F9, 0xE0F2, 0xE0F2, 0x40FD, 0xE0F8, 0xE0F9, 0x4103, - 0xE0FB, 0xE0FB, 0x4105, 0xE0FD, 0xE0FD, 0x4107, 0xE103, 0xE103, 0x410D, - 0xE106, 0xE106, 0x4110, 0xE109, 0xE10B, 0x4112, 0xE110, 0xE110, 0x4119, - 0xE114, 0xE115, 0x411D, 0xE11C, 0xE11D, 0x4125, 0xE121, 0xE121, 0x412A, - 0xE126, 0xE128, 0x412F, 0xE130, 0xE131, 0x4139, 0xE136, 0xE136, 0x413F, - 0xE139, 0xE139, 0x4142, 0xE141, 0xE142, 0x414A, 0xE145, 0xE145, 0x414D, - 0xE147, 0xE148, 0x414F, 0xE14A, 0xE14A, 0x4151, 0xE14D, 0xE14D, 0x4153, - 0xE150, 0xE150, 0x4156, 0xE154, 0xE157, 0x415A, 0xE159, 0xE15A, 0x415F, - 0xE15D, 0xE15D, 0x494F, 0xE162, 0xE162, 0x4167, 0xE168, 0xE16A, 0x416D, - 0xE171, 0xE172, 0x4175, 0xE175, 0xE175, 0x4179, 0xE178, 0xE179, 0x417C, - 0xE17B, 0xE17C, 0x417F, 0xE17F, 0xE180, 0x4183, 0xE185, 0xE185, 0x4189, - 0xE187, 0xE187, 0x418B, 0xE189, 0xE189, 0x418D, 0xE18B, 0xE18B, 0x418F, - 0xE18F, 0xE190, 0x4193, 0xE193, 0xE193, 0x4196, 0xE195, 0xE195, 0x4953, - 0xE196, 0xE196, 0x4198, 0xE19F, 0xE1A0, 0x41A1, 0xE1A4, 0xE1A4, 0x4954, - 0xE1A6, 0xE1A6, 0x41A8, 0xE1AA, 0xE1AA, 0x41AC, 0xE1AE, 0xE1AE, 0x41B0, - 0xE1B0, 0xE1B1, 0x41B2, 0xE1B3, 0xE1B4, 0x41B5, 0xE1B6, 0xE1B6, 0x41B8, - 0xE1B8, 0xE1B8, 0x41BA, 0xE1BB, 0xE1BB, 0x4955, 0xE1BC, 0xE1BF, 0x41BD, - 0xE1C1, 0xE1C1, 0x41C2, 0xE1C4, 0xE1C5, 0x41C5, 0xE1C8, 0xE1C8, 0x41C8, - 0xE1CC, 0xE1CD, 0x41CC, 0xE1D4, 0xE1D5, 0x41D4, 0xE1D7, 0xE1D7, 0x41D7, - 0xE1DA, 0xE1DA, 0x41DA, 0xE1DD, 0xE1DD, 0x41DD, 0xE1E2, 0xE1E2, 0x41E1, - 0xE1E6, 0xE1E6, 0x41E5, 0xE1EB, 0xE1EB, 0x41EA, 0xE1EF, 0xE1F0, 0x41EE, - 0xE1F2, 0xE1F2, 0x41F1, 0xE1F7, 0xE1F7, 0x41F6, 0xE1FA, 0xE1FA, 0x41F9, - 0xE1FE, 0xE1FE, 0x41FD, 0xE200, 0xE200, 0x41FF, 0xE201, 0xE201, 0x4958, - 0xE202, 0xE202, 0x4201, 0xE205, 0xE205, 0x4204, 0xE207, 0xE207, 0x4206, - 0xE20A, 0xE20C, 0x4209, 0xE210, 0xE210, 0x420F, 0xE212, 0xE216, 0x4211, - 0xE219, 0xE219, 0x4218, 0xE21B, 0xE21C, 0x421A, 0xE21F, 0xE221, 0x421E, - 0xE226, 0xE228, 0x4225, 0xE22A, 0xE22A, 0x4229, 0xE22F, 0xE22F, 0x422E, - 0xE231, 0xE231, 0x4230, 0xE233, 0xE233, 0x4232, 0xE237, 0xE237, 0x4236, - 0xE23B, 0xE23B, 0x423A, 0xE23D, 0xE23E, 0x423C, 0xE245, 0xE245, 0x4244, - 0xE248, 0xE248, 0x4247, 0xE24A, 0xE24F, 0x4249, 0xE251, 0xE254, 0x4250, - 0xE261, 0xE261, 0x4260, 0xE268, 0xE268, 0x4266, 0xE26B, 0xE26B, 0x4269, - 0xE26D, 0xE26F, 0x426B, 0xE271, 0xE271, 0x426F, 0xE27A, 0xE27A, 0x4278, - 0xE27D, 0xE27D, 0x427B, 0xE282, 0xE282, 0x4280, 0xE288, 0xE289, 0x4286, - 0xE28B, 0xE28B, 0x4289, 0xE290, 0xE291, 0x428E, 0xE294, 0xE296, 0x4292, - 0xE299, 0xE29B, 0x4297, 0xE29F, 0xE29F, 0x429D, 0xE2A1, 0xE2A1, 0x495B, - 0xE2A4, 0xE2A4, 0x42A1, 0xE2A6, 0xE2A6, 0x42A3, 0xE2B2, 0xE2B5, 0x42AE, - 0xE2B7, 0xE2B8, 0x42B3, 0xE2BA, 0xE2BA, 0x42B6, 0xE2BE, 0xE2BF, 0x42B9, - 0xE2C1, 0xE2C1, 0x42BC, 0xE2C7, 0xE2C7, 0x42C2, 0xE2C9, 0xE2C9, 0x42C4, - 0xE2D4, 0xE2D4, 0x42CF, 0xE2D8, 0xE2D9, 0x42D3, 0xE2DE, 0xE2DE, 0x42D9, - 0xE2E0, 0xE2E2, 0x42DB, 0xE2E7, 0xE2E7, 0x42E2, 0xE2E9, 0xE2E9, 0x42E4, - 0xE2EB, 0xE2ED, 0x42E6, 0xE2F0, 0xE2F1, 0x495D, 0xE2F8, 0xE2F8, 0x42F1, - 0xE2FC, 0xE2FC, 0x42F5, 0xE2FF, 0xE2FF, 0x495F, 0xE300, 0xE300, 0x4960, - 0xE301, 0xE301, 0x42F8, 0xE306, 0xE306, 0x42FD, 0xE308, 0xE308, 0x42FF, - 0xE30C, 0xE30C, 0x4303, 0xE30F, 0xE30F, 0x4306, 0xE311, 0xE311, 0x372B, - 0xE313, 0xE313, 0x372D, 0xE315, 0xE315, 0x372F, 0xE318, 0xE318, 0x3731, - 0xE31B, 0xE31C, 0x3734, 0xE31F, 0xE31F, 0x3738, 0xE325, 0xE325, 0x373E, - 0xE32C, 0xE32C, 0x3745, 0xE330, 0xE331, 0x3749, 0xE335, 0xE336, 0x374E, - 0xE33B, 0xE33B, 0x3754, 0xE33D, 0xE33D, 0x469A, 0xE342, 0xE342, 0x375A, - 0xE345, 0xE345, 0x375D, 0xE348, 0xE348, 0x375F, 0xE352, 0xE352, 0x3768, - 0xE354, 0xE354, 0x376A, 0xE35B, 0xE35C, 0x3770, 0xE360, 0xE360, 0x3775, - 0xE362, 0xE362, 0x3777, 0xE364, 0xE365, 0x3779, 0xE36F, 0xE36F, 0x3784, - 0xE372, 0xE372, 0x3787, 0xE374, 0xE375, 0x3789, 0xE377, 0xE377, 0x378C, - 0xE379, 0xE379, 0x378D, 0xE37B, 0xE37B, 0x378F, 0xE381, 0xE382, 0x3795, - 0xE386, 0xE386, 0x379A, 0xE388, 0xE38A, 0x379C, 0xE38D, 0xE38D, 0x37A1, - 0xE391, 0xE391, 0x37A5, 0xE393, 0xE393, 0x37A7, 0xE394, 0xE394, 0x46A0, - 0xE396, 0xE396, 0x37A9, 0xE398, 0xE398, 0x37AB, 0xE39A, 0xE39B, 0x37AD, - 0xE39E, 0xE39E, 0x46A1, 0xE39F, 0xE3A0, 0x37B1, 0xE3A2, 0xE3A2, 0x37B4, - 0xE3A5, 0xE3A5, 0x46A2, 0xE3A6, 0xE3A9, 0x37B8, 0xE3AC, 0xE3AC, 0x37BE, - 0xE3B1, 0xE3B2, 0x37C3, 0xE3B4, 0xE3B5, 0x37C6, 0xE3B9, 0xE3BD, 0x37CB, - 0xE3C3, 0xE3C3, 0x37D5, 0xE3C8, 0xE3C8, 0x37D9, 0xE3CC, 0xE3CC, 0x37DD, - 0xE3CD, 0xE3CD, 0x46A4, 0xE3CF, 0xE3CF, 0x37DF, 0xE3D5, 0xE3D5, 0x46A5, - 0xE3D8, 0xE3DA, 0x37E7, 0xE3E1, 0xE3E1, 0x37F0, 0xE3E3, 0xE3E3, 0x37F2, - 0xE3E7, 0xE3E7, 0x46A6, 0xE3ED, 0xE3EE, 0x37FC, 0xE3F0, 0xE3F0, 0x37FF, - 0xE3F2, 0xE3F4, 0x3801, 0xE3F8, 0xE3F8, 0x3807, 0xE3FA, 0xE3FA, 0x3809, - 0xE3FD, 0xE3FD, 0x380C, 0xE3FF, 0xE3FF, 0x380E, 0xE409, 0xE40B, 0x3818, - 0xE414, 0xE414, 0x3821, 0xE41B, 0xE41B, 0x3828, 0xE41D, 0xE41E, 0x382A, - 0xE423, 0xE423, 0x3830, 0xE425, 0xE425, 0x3832, 0xE426, 0xE426, 0x46AB, - 0xE428, 0xE428, 0x3834, 0xE42C, 0xE42D, 0x3838, 0xE432, 0xE432, 0x383E, - 0xE436, 0xE436, 0x3842, 0xE43A, 0xE43C, 0x3846, 0xE43E, 0xE43E, 0x384A, - 0xE440, 0xE441, 0x384C, 0xE444, 0xE444, 0x3850, 0xE448, 0xE448, 0x46AD, - 0xE44C, 0xE44E, 0x3857, 0xE450, 0xE451, 0x385B, 0xE459, 0xE45A, 0x3864, - 0xE45D, 0xE45E, 0x3868, 0xE461, 0xE463, 0x386C, 0xE465, 0xE465, 0x3870, - 0xE467, 0xE469, 0x46AF, 0xE46A, 0xE46A, 0x3873, 0xE46C, 0xE46C, 0x3875, - 0xE46E, 0xE46F, 0x3877, 0xE471, 0xE472, 0x387A, 0xE474, 0xE474, 0x387D, - 0xE476, 0xE476, 0x387F, 0xE47E, 0xE47F, 0x3886, 0xE484, 0xE484, 0x388C, - 0xE486, 0xE48A, 0x388D, 0xE48D, 0xE48E, 0x3894, 0xE491, 0xE492, 0x3897, - 0xE495, 0xE497, 0x389B, 0xE4A1, 0xE4A1, 0x46B4, 0xE4A2, 0xE4A4, 0x38A7, - 0xE4AB, 0xE4AB, 0x38B0, 0xE4AF, 0xE4AF, 0x38B4, 0xE4B3, 0xE4BA, 0x38B8, - 0xE4C1, 0xE4C1, 0x38C6, 0xE4C6, 0xE4C6, 0x38CB, 0xE4C9, 0xE4C9, 0x38CE, - 0xE4CD, 0xE4CE, 0x38D2, 0xE4D6, 0xE4D6, 0x38DB, 0xE4D9, 0xE4D9, 0x38DE, - 0xE4DC, 0xE4DD, 0x38E1, 0xE4E4, 0xE4E4, 0x38E9, 0xE4E6, 0xE4E8, 0x38EB, - 0xE4EE, 0xE4EF, 0x38F3, 0xE4F6, 0xE4F6, 0x38FB, 0xE4F8, 0xE4F9, 0x38FD, - 0xE4FF, 0xE4FF, 0x3904, 0xE501, 0xE502, 0x3906, 0xE505, 0xE505, 0x390A, - 0xE50A, 0xE50A, 0x390F, 0xE50D, 0xE50D, 0x46B5, 0xE50F, 0xE50F, 0x3913, - 0xE512, 0xE512, 0x3916, 0xE514, 0xE514, 0x3918, 0xE516, 0xE516, 0x46B6, - 0xE51A, 0xE51A, 0x391D, 0xE51C, 0xE521, 0x391F, 0xE524, 0xE524, 0x3927, - 0xE528, 0xE528, 0x46B8, 0xE529, 0xE52C, 0x392A, 0xE52E, 0xE52F, 0x392F, - 0xE537, 0xE537, 0x3938, 0xE53E, 0xE53E, 0x393F, 0xE543, 0xE543, 0x3944, - 0xE54B, 0xE54B, 0x394C, 0xE554, 0xE555, 0x3955, 0xE557, 0xE559, 0x3958, - 0xE55B, 0xE55C, 0x395C, 0xE55E, 0xE55F, 0x395F, 0xE562, 0xE562, 0x3963, - 0xE566, 0xE567, 0x3967, 0xE56D, 0xE56E, 0x396E, 0xE570, 0xE570, 0x3971, - 0xE572, 0xE573, 0x3973, 0xE575, 0xE577, 0x3976, 0xE579, 0xE57A, 0x397A, - 0xE57C, 0xE57E, 0x397D, 0xE580, 0xE580, 0x3981, 0xE582, 0xE586, 0x3983, - 0xE588, 0xE588, 0x3989, 0xE58B, 0xE590, 0x398C, 0xE592, 0xE594, 0x3993, - 0xE59A, 0xE59A, 0x399B, 0xE59D, 0xE5A1, 0x399E, 0xE5A4, 0xE5A4, 0x39A5, - 0xE5A6, 0xE5A8, 0x39A7, 0xE5AA, 0xE5AA, 0x39AB, 0xE5AF, 0xE5AF, 0x39B0, - 0xE5B1, 0xE5B1, 0x39B2, 0xE5B2, 0xE5B2, 0x46BB, 0xE5B5, 0xE5B5, 0x39B6, - 0xE5B7, 0xE5B8, 0x39B8, 0xE5BA, 0xE5BB, 0x39BB, 0xE5BE, 0xE5C0, 0x39BF, - 0xE5C2, 0xE5C2, 0x39C3, 0xE5C8, 0xE5C9, 0x39C9, 0xE5D7, 0xE5D9, 0x39D4, - 0xE5DB, 0xE5DC, 0x39D8, 0xE5DF, 0xE5DF, 0x39DC, 0xE5E1, 0xE5E3, 0x39DE, - 0xE5E5, 0xE5E6, 0x39E2, 0xE5E9, 0xE5E9, 0x39E6, 0xE5EE, 0xE5F1, 0x39EB, - 0xE5F3, 0xE5F3, 0x39F0, 0xE5FB, 0xE5FC, 0x39F8, 0xE600, 0xE600, 0x39FD, - 0xE602, 0xE602, 0x39FF, 0xE604, 0xE604, 0x3A01, 0xE60F, 0xE612, 0x3A0B, - 0xE619, 0xE61C, 0x3A14, 0xE621, 0xE621, 0x3A1C, 0xE623, 0xE624, 0x3A1E, - 0xE627, 0xE627, 0x3A22, 0xE62B, 0xE62B, 0x3A26, 0xE632, 0xE634, 0x3A2D, - 0xE637, 0xE638, 0x3A32, 0xE63A, 0xE63A, 0x3A35, 0xE63C, 0xE63C, 0x3A37, - 0xE63F, 0xE642, 0x3A3A, 0xE645, 0xE646, 0x3A40, 0xE648, 0xE648, 0x3A43, - 0xE64B, 0xE64B, 0x3A45, 0xE64E, 0xE64F, 0x3A48, 0xE652, 0xE655, 0x3A4C, - 0xE657, 0xE659, 0x3A51, 0xE65D, 0xE660, 0x3A57, 0xE662, 0xE663, 0x3A5C, - 0xE665, 0xE668, 0x3A5F, 0xE66A, 0xE66A, 0x46BF, 0xE66E, 0xE66F, 0x3A67, - 0xE671, 0xE671, 0x3A6A, 0xE676, 0xE679, 0x3A6F, 0xE67B, 0xE67D, 0x3A74, - 0xE67F, 0xE680, 0x3A78, 0xE683, 0xE688, 0x3A7B, 0xE68A, 0xE68C, 0x3A82, - 0xE68E, 0xE690, 0x3A86, 0xE692, 0xE692, 0x3A8A, 0xE696, 0xE697, 0x3A8E, - 0xE699, 0xE69A, 0x3A91, 0xE69C, 0xE69C, 0x3A94, 0xE69E, 0xE69F, 0x3A96, - 0xE6A1, 0xE6A2, 0x3A99, 0xE6A6, 0xE6A6, 0x3A9D, 0xE6AC, 0xE6AD, 0x3AA2, - 0xE6B2, 0xE6B2, 0x3AA8, 0xE6B9, 0xE6BA, 0x3AAF, 0xE6BD, 0xE6BE, 0x3AB3, - 0xE6C0, 0xE6C1, 0x3AB6, 0xE6C5, 0xE6C5, 0x46C4, 0xE6C7, 0xE6C7, 0x3ABC, - 0xE6CA, 0xE6CA, 0x3ABF, 0xE6D1, 0xE6D2, 0x3AC6, 0xE6D7, 0xE6D8, 0x3ACC, - 0xE6DA, 0xE6DB, 0x3ACF, 0xE6DD, 0xE6E1, 0x3AD2, 0xE6E4, 0xE6E6, 0x3AD9, - 0xE6EE, 0xE6EE, 0x3AE3, 0xE6F2, 0xE6F3, 0x3AE7, 0xE6F7, 0xE6F7, 0x3AEC, - 0xE6FA, 0xE6FC, 0x3AEF, 0xE6FF, 0xE6FF, 0x3AF4, 0xE701, 0xE702, 0x3AF6, - 0xE706, 0xE707, 0x3AFB, 0xE709, 0xE70A, 0x3AFE, 0xE70C, 0xE70C, 0x3B01, - 0xE710, 0xE711, 0x3B05, 0xE713, 0xE713, 0x3B08, 0xE717, 0xE718, 0x3B0C, - 0xE71A, 0xE71B, 0x3B0F, 0xE71D, 0xE71D, 0x3B12, 0xE724, 0xE725, 0x3B19, - 0xE72B, 0xE72B, 0x3B20, 0xE72F, 0xE72F, 0x3B24, 0xE733, 0xE737, 0x3B28, - 0xE73C, 0xE73D, 0x3B31, 0xE740, 0xE742, 0x3B35, 0xE744, 0xE744, 0x3B39, - 0xE747, 0xE747, 0x3B3C, 0xE74D, 0xE74F, 0x3B42, 0xE751, 0xE752, 0x3B46, - 0xE75B, 0xE75D, 0x3B50, 0xE75F, 0xE75F, 0x3B54, 0xE761, 0xE762, 0x3B56, - 0xE764, 0xE765, 0x3B59, 0xE767, 0xE768, 0x3B5C, 0xE769, 0xE769, 0x46C7, - 0xE76C, 0xE76E, 0x3B60, 0xE770, 0xE770, 0x3B64, 0xE775, 0xE775, 0x3B69, - 0xE777, 0xE778, 0x3B6A, 0xE77A, 0xE77A, 0x3B6D, 0xE77C, 0xE77D, 0x3B6F, - 0xE784, 0xE784, 0x3B77, 0xE786, 0xE786, 0x3B79, 0xE789, 0xE789, 0x3B7C, - 0xE78B, 0xE78B, 0x3B7E, 0xE78D, 0xE78D, 0x3B80, 0xE790, 0xE790, 0x3B83, - 0xE792, 0xE792, 0x3B85, 0xE794, 0xE794, 0x3B87, 0xE796, 0xE797, 0x3B89, - 0xE799, 0xE799, 0x3B8C, 0xE7A2, 0xE7A2, 0x3B95, 0xE7A4, 0xE7A9, 0x3B97, - 0xE7B1, 0xE7B1, 0x3BA4, 0xE7B4, 0xE7B4, 0x3BA7, 0xE7B8, 0xE7B8, 0x3BAB, - 0xE7BC, 0xE7BC, 0x3BAF, 0xE7C4, 0xE7C4, 0x3BB6, 0xE7CA, 0xE7CA, 0x3BBC, - 0xE7CE, 0xE7CE, 0x3BC0, 0xE7D1, 0xE7D1, 0x3BC3, 0xE7D8, 0xE7D8, 0x3BCA, - 0xE7DA, 0xE7DA, 0x3BCC, 0xE7DC, 0xE7DD, 0x3BCE, 0xE7E4, 0xE7E4, 0x3BD6, - 0xE7E7, 0xE7E9, 0x3BD9, 0xE7EB, 0xE7EB, 0x3BDD, 0xE7ED, 0xE7EF, 0x3BDF, - 0xE7F1, 0xE7F3, 0x3BE3, 0xE7F8, 0xE7F8, 0x3BEA, 0xE7FB, 0xE7FC, 0x3BED, - 0xE7FF, 0xE7FF, 0x3BF1, 0xE800, 0xE802, 0x3BF2, 0xE808, 0xE808, 0x3BFA, - 0xE80C, 0xE80C, 0x3BFE, 0xE80E, 0xE80F, 0x3C00, 0xE811, 0xE811, 0x3C03, - 0xE813, 0xE813, 0x3C05, 0xE816, 0xE818, 0x3C08, 0xE81A, 0xE81A, 0x3C0C, - 0xE821, 0xE821, 0x3C13, 0xE827, 0xE828, 0x3C19, 0xE82D, 0xE82D, 0x3C1F, - 0xE82F, 0xE82F, 0x3C21, 0xE835, 0xE835, 0x3C27, 0xE837, 0xE838, 0x3C29, - 0xE83A, 0xE83B, 0x3C2C, 0xE841, 0xE842, 0x3C33, 0xE84B, 0xE84B, 0x3C3D, - 0xE84D, 0xE84E, 0x3C3F, 0xE851, 0xE851, 0x3C43, 0xE855, 0xE858, 0x3C47, - 0xE85B, 0xE85D, 0x3C4D, 0xE860, 0xE862, 0x3C52, 0xE865, 0xE867, 0x3C57, - 0xE869, 0xE86A, 0x3C5B, 0xE86C, 0xE86C, 0x3C5D, 0xE871, 0xE871, 0x3C62, - 0xE878, 0xE878, 0x3C69, 0xE87D, 0xE87F, 0x3C6E, 0xE887, 0xE887, 0x3C78, - 0xE88F, 0xE88F, 0x3C80, 0xE891, 0xE892, 0x3C82, 0xE894, 0xE895, 0x3C85, - 0xE89A, 0xE89A, 0x3C8B, 0xE89D, 0xE89D, 0x3C8E, 0xE8A0, 0xE8A1, 0x3C91, - 0xE8A3, 0xE8A7, 0x3C94, 0xE8A9, 0xE8AA, 0x3C9A, 0xE8AC, 0xE8B0, 0x3C9D, - 0xE8B5, 0xE8B6, 0x3CA6, 0xE8B8, 0xE8B8, 0x3CA9, 0xE8BD, 0xE8C3, 0x3CAE, - 0xE8C5, 0xE8C5, 0x3CB6, 0xE8C7, 0xE8C7, 0x3CB8, 0xE8CB, 0xE8CB, 0x3CBC, - 0xE8CD, 0xE8CE, 0x3CBE, 0xE8D0, 0xE8D1, 0x3CC1, 0xE8D3, 0xE8D3, 0x3CC4, - 0xE8D5, 0xE8D6, 0x3CC6, 0xE8D8, 0xE8DA, 0x3CC9, 0xE8DD, 0xE8DD, 0x3CCE, - 0xE8DF, 0xE8E1, 0x3CD0, 0xE8E5, 0xE8E6, 0x3CD6, 0xE8E8, 0xE8EA, 0x3CD9, - 0xE8ED, 0xE8ED, 0x3CDE, 0xE8F1, 0xE8F2, 0x3CE2, 0xE8F5, 0xE8F5, 0x3CE6, - 0xE8FB, 0xE8FB, 0x3CEC, 0xE8FE, 0xE8FE, 0x3CEF, 0xE900, 0xE900, 0x3CF1, - 0xE903, 0xE903, 0x3CF4, 0xE907, 0xE908, 0x3CF8, 0xE90C, 0xE90C, 0x3CFD, - 0xE917, 0xE918, 0x3D08, 0xE91C, 0xE91C, 0x3D0D, 0xE91E, 0xE922, 0x3D0F, - 0xE925, 0xE92C, 0x3D16, 0xE92E, 0xE92F, 0x3D1F, 0xE933, 0xE936, 0x3D24, - 0xE938, 0xE938, 0x46CF, 0xE93A, 0xE93A, 0x3D2B, 0xE93C, 0xE93E, 0x3D2D, - 0xE941, 0xE941, 0x3D32, 0xE944, 0xE945, 0x3D35, 0xE948, 0xE948, 0x3D39, - 0xE94D, 0xE94D, 0x3D3E, 0xE950, 0xE950, 0x3D41, 0xE952, 0xE955, 0x3D43, - 0xE957, 0xE958, 0x3D48, 0xE95A, 0xE95A, 0x3D4B, 0xE95C, 0xE95E, 0x3D4D, - 0xE960, 0xE961, 0x3D51, 0xE964, 0xE964, 0x3D55, 0xE967, 0xE967, 0x3D58, - 0xE968, 0xE968, 0x46D1, 0xE96E, 0xE96F, 0x46D5, 0xE973, 0xE973, 0x46DA, - 0xE974, 0xE974, 0x3D5B, 0xE975, 0xE975, 0x46DB, 0xE977, 0xE978, 0x46DD, - 0xE97A, 0xE97B, 0x46E0, 0xE97D, 0xE97D, 0x46E3, 0xE981, 0xE982, 0x46E6, - 0xE987, 0xE987, 0x3D5D, 0xE98A, 0xE98A, 0x3D5E, 0xE98E, 0xE98E, 0x3D5F, - 0xE991, 0xE991, 0x46EF, 0xE9B0, 0xE9B0, 0x43D4, 0xE9CB, 0xE9CB, 0x4719, - 0xE9EF, 0xE9EF, 0x4734, 0xEA43, 0xEA43, 0x4779, 0xEAA9, 0xEAA9, 0x47CC, - 0xEABF, 0xEAC1, 0x47DC, 0xEAC5, 0xEAC5, 0x47E0, 0xEAC9, 0xEACC, 0x47E2, - 0xEACF, 0xEAD1, 0x47E8, 0xEAD3, 0xEAD4, 0x47EB, 0xEAD6, 0xEADA, 0x47EE, - 0xEADC, 0xEADC, 0x47F3, 0xEADE, 0xEAE3, 0x47F4, 0xEAE7, 0xEAEC, 0x47FA, - 0xEAEE, 0xEAEE, 0x4800, 0xEAF0, 0xEAF2, 0x4801, 0xEAF4, 0xEAF4, 0x43B0, - 0xEAF5, 0xEAF6, 0x4804, 0xEAF8, 0xEAF8, 0x4807, 0xEAF9, 0xEAF9, 0x43B2, - 0xEAFA, 0xEAFB, 0x4808, 0xEAFE, 0xEAFF, 0x480B, 0xEB00, 0xEB00, 0x480D, - 0xEB02, 0xEB05, 0x480E, 0xEB08, 0xEB0F, 0x4813, 0xEB11, 0xEB12, 0x481B, - 0xEB15, 0xEB15, 0x481E, 0xEB18, 0xEB1D, 0x4821, 0xEB1F, 0xEB21, 0x4827, - 0xEB23, 0xEB23, 0x482A, 0xEB25, 0xEB25, 0x482B, 0xEB27, 0xEB27, 0x482C, - 0xEB2A, 0xEB2A, 0x482D, 0xEB2C, 0xEB39, 0x482E, 0xEB3D, 0xEB3D, 0x3D9B, - 0xEB3E, 0xEB3F, 0x483C, 0xEB41, 0xEB41, 0x3D9D, 0xEB43, 0xEB44, 0x483E, - 0xEB46, 0xEB46, 0x3DA0, 0xEB4A, 0xEB4A, 0x4841, 0xEB4B, 0xEB4C, 0x3DA3, - 0xEB4D, 0xEB4E, 0x4842, 0xEB4F, 0xEB50, 0x3DA5, 0xEB53, 0xEB53, 0x4844, - 0xEB54, 0xEB54, 0x3DA9, 0xEB55, 0xEB56, 0x4845, 0xEB57, 0xEB57, 0x3DAA, - 0xEB58, 0xEB59, 0x4847, 0xEB5A, 0xEB5B, 0x3DAB, 0xEB5D, 0xEB5D, 0x3DAE, - 0xEB5F, 0xEB5F, 0x3DB0, 0xEB61, 0xEB61, 0x3DB2, 0xEB62, 0xEB63, 0x4849, - 0xEB65, 0xEB65, 0x484C, 0xEB67, 0xEB67, 0x484D, 0xEB68, 0xEB69, 0x3DB4, - 0xEB6B, 0xEB6B, 0x3DB7, 0xEB6D, 0xEB6D, 0x3DB9, 0xEB6F, 0xEB71, 0x484E, - 0xEB73, 0xEB73, 0x4851, 0xEB74, 0xEB74, 0x3DBC, 0xEB76, 0xEB76, 0x43D0, - 0xEB77, 0xEB77, 0x4853, 0xEB78, 0xEB78, 0x3DBD, 0xEB7A, 0xEB7A, 0x4854, - 0xEB7E, 0xEB7F, 0x4856, 0xEB80, 0xEB81, 0x3DC1, 0xEB83, 0xEB84, 0x4858, - 0xEB85, 0xEB85, 0x3DC4, 0xEB88, 0xEB88, 0x485A, 0xEB89, 0xEB89, 0x3DC6, - 0xEB8A, 0xEB8A, 0x485B, 0xEB8C, 0xEB8E, 0x485C, 0xEB8F, 0xEB8F, 0x3DC8, - 0xEB90, 0xEB90, 0x485F, 0xEB93, 0xEB93, 0x3DCB, 0xEB95, 0xEB95, 0x4860, - 0xEB97, 0xEB97, 0x3DCE, 0xEB98, 0xEB9A, 0x4861, 0xEB9B, 0xEB9B, 0x3DCF, - 0xEB9F, 0xEB9F, 0x4866, 0xEBA0, 0xEBA0, 0x3DD1, 0xEBA2, 0xEBA2, 0x4867, - 0xEBA3, 0xEBA3, 0x3DD3, 0xEBA5, 0xEBA6, 0x4868, 0xEBA8, 0xEBA8, 0x3DD6, - 0xEBAA, 0xEBAA, 0x486A, 0xEBAB, 0xEBAB, 0x3DD8, 0xEBAD, 0xEBAD, 0x3DDA, - 0xEBAE, 0xEBAE, 0x486B, 0xEBAF, 0xEBAF, 0x3DDB, 0xEBB0, 0xEBB0, 0x486C, - 0xEBB2, 0xEBB3, 0x486D, 0xEBB4, 0xEBB4, 0x3DDD, 0xEBB6, 0xEBB6, 0x3DDF, - 0xEBB9, 0xEBB9, 0x3DE2, 0xEBBC, 0xEBBC, 0x3DE4, 0xEBBD, 0xEBBD, 0x4870, - 0xEBBF, 0xEBBF, 0x3DE6, 0xEBC2, 0xEBC2, 0x3DE9, 0xEBC5, 0xEBC6, 0x4872, - 0xEBC7, 0xEBC7, 0x3DEB, 0xEBC8, 0xEBC8, 0x4874, 0xEBCA, 0xEBCA, 0x4875, - 0xEBCC, 0xEBCD, 0x3DEE, 0xEBCE, 0xEBCE, 0x4876, 0xEBD0, 0xEBD0, 0x4877, - 0xEBD3, 0xEBD3, 0x4878, 0xEBD5, 0xEBD5, 0x4879, 0xEBD7, 0xEBD8, 0x3DF4, - 0xEBDA, 0xEBDB, 0x487A, 0xEBDD, 0xEBDD, 0x3DF8, 0xEBDF, 0xEBDF, 0x487C, - 0xEBE1, 0xEBE1, 0x487D, 0xEBE4, 0xEBE4, 0x487E, 0xEBE7, 0xEBE7, 0x3DFF, - 0xEBE8, 0xEBE9, 0x487F, 0xEBEB, 0xEBEC, 0x4881, 0xEBEE, 0xEBEE, 0x3E02, - 0xEBEF, 0xEBEF, 0x4883, 0xEBF1, 0xEBF1, 0x4884, 0xEBF2, 0xEBF2, 0x3E04, - 0xEBF5, 0xEBF5, 0x4886, 0xEBF6, 0xEBF6, 0x3E06, 0xEBF9, 0xEBFB, 0x3E09, - 0xEBFD, 0xEBFE, 0x3E0D, 0xEC05, 0xEC06, 0x3E14, 0xEC08, 0xEC09, 0x4888, - 0xEC0C, 0xEC0C, 0x3E18, 0xEC0E, 0xEC10, 0x3E1A, 0xEC13, 0xEC13, 0x488B, - 0xEC14, 0xEC14, 0x3E1F, 0xEC17, 0xEC18, 0x3E22, 0xEC19, 0xEC1C, 0x488C, - 0xEC1D, 0xEC1D, 0x3E24, 0xEC20, 0xEC20, 0x4890, 0xEC22, 0xEC22, 0x3E28, - 0xEC24, 0xEC24, 0x3E2A, 0xEC26, 0xEC26, 0x3E2C, 0xEC2A, 0xEC2A, 0x3E30, - 0xEC2B, 0xEC2B, 0x4891, 0xEC2C, 0xEC2E, 0x3E31, 0xEC2F, 0xEC2F, 0x4892, - 0xEC31, 0xEC31, 0x3E35, 0xEC32, 0xEC32, 0x4893, 0xEC35, 0xEC35, 0x3E38, - 0xEC37, 0xEC37, 0x3E3A, 0xEC3B, 0xEC3C, 0x3E3E, 0xEC3F, 0xEC41, 0x4894, - 0xEC42, 0xEC42, 0x3E42, 0xEC43, 0xEC43, 0x4897, 0xEC44, 0xEC44, 0x43E8, - 0xEC45, 0xEC49, 0x4898, 0xEC4B, 0xEC4C, 0x489D, 0xEC4F, 0xEC4F, 0x48A0, - 0xEC52, 0xEC52, 0x48A1, 0xEC54, 0xEC54, 0x48A2, 0xEC56, 0xEC58, 0x48A3, - 0xEC5A, 0xEC5A, 0x48A6, 0xEC5C, 0xEC5D, 0x48A7, 0xEC5F, 0xEC60, 0x48A9, - 0xEC62, 0xEC63, 0x48AC, 0xEC67, 0xEC67, 0x48AF, 0xEC68, 0xEC68, 0x3E4D, - 0xEC69, 0xEC73, 0x48B0, 0xEC75, 0xEC76, 0x48BC, 0xEC79, 0xEC79, 0x48C0, - 0xEC7B, 0xEC7B, 0x48C2, 0xEC7E, 0xEC7E, 0x48C3, 0xEC80, 0xEC80, 0x48C5, - 0xEC84, 0xEC84, 0x48C8, 0xEC86, 0xEC86, 0x48CA, 0xEC8D, 0xEC8D, 0x48CC, - 0xEC8E, 0xEC8E, 0x3E55, 0xEC91, 0xEC91, 0x48CE, 0xEC92, 0xEC92, 0x3E58, - 0xEC93, 0xEC94, 0x48CF, 0xEC95, 0xEC95, 0x3E59, 0xEC96, 0xEC96, 0x48D1, - 0xEC98, 0xEC98, 0x48D2, 0xEC99, 0xEC99, 0x3E5B, 0xEC9A, 0xEC9B, 0x48D3, - 0xEC9D, 0xEC9D, 0x48D6, 0xEC9E, 0xEC9E, 0x3E5C, 0xECA0, 0xECA0, 0x48D7, - 0xECA3, 0xECA4, 0x48D8, 0xECA7, 0xECA8, 0x48DA, 0xECAB, 0xECAB, 0x48DC, - 0xECAD, 0xECAD, 0x48DD, 0xECAF, 0xECAF, 0x3E65, 0xECB4, 0xECB4, 0x48DF, - 0xECB6, 0xECB6, 0x3E6B, 0xECB9, 0xECBB, 0x48E1, 0xECCF, 0xECCF, 0x3E80, - 0xECD4, 0xECD4, 0x3E85, 0xECDB, 0xECDC, 0x3E8C, 0xECDE, 0xECDE, 0x48E4, - 0xECDF, 0xECE1, 0x3E8F, 0xECE5, 0xECE5, 0x3E95, 0xECF0, 0xECF0, 0x3EA0, - 0xECF2, 0xECF2, 0x3EA2, 0xECF5, 0xECF5, 0x3EA5, 0xECFC, 0xECFC, 0x3EAC, - 0xED04, 0xED04, 0x48E7, 0xED07, 0xED07, 0x48E8, 0xED0A, 0xED0A, 0x48EA, - 0xED0C, 0xED11, 0x48EB, 0xED13, 0xED13, 0x48F1, 0xED15, 0xED17, 0x48F2, - 0xED18, 0xED18, 0x3EBA, 0xED1A, 0xED1A, 0x48F5, 0xED1C, 0xED1C, 0x48F6, - 0xED1D, 0xED1D, 0x3EBD, 0xED1E, 0xED1E, 0x48F7, 0xED22, 0xED22, 0x48F8, - 0xED24, 0xED25, 0x3EC2, 0xED26, 0xED27, 0x48F9, 0xED29, 0xED29, 0x3EC5, - 0xED2A, 0xED2A, 0x48FB, 0xED2C, 0xED2C, 0x3EC7, 0xED2D, 0xED2D, 0x48FC, - 0xED3B, 0xED3B, 0x3ECF, 0xED3D, 0xED3D, 0x4904, 0xED41, 0xED42, 0x4906, - 0xED45, 0xED45, 0x4908, 0xED47, 0xED47, 0x3ED5, 0xED4A, 0xED4B, 0x4909, - 0xED4D, 0xED4E, 0x490B, 0xED4F, 0xED4F, 0x3EDA, 0xED51, 0xED51, 0x490D, - 0xED52, 0xED52, 0x3EDC, 0xED53, 0xED54, 0x490E, 0xED57, 0xED58, 0x4910, - 0xED5F, 0xED5F, 0x3EE5, 0xED62, 0xED62, 0x3EE8, 0xED6B, 0xED6B, 0x3EF1, - 0xED71, 0xED71, 0x4912, 0xED72, 0xED72, 0x3EF7, 0xED75, 0xED75, 0x4913, - 0xED77, 0xED77, 0x4915, 0xED78, 0xED78, 0x3EFA, 0xED7A, 0xED7A, 0x4916, - 0xED81, 0xED81, 0x4917, 0xED84, 0xED85, 0x3F04, 0xED86, 0xED86, 0x4918, - 0xED88, 0xED88, 0x3F07, 0xED89, 0xED8A, 0x4919, 0xED8B, 0xED8B, 0x3F08, - 0xED8E, 0xED8E, 0x3F0B, 0xED91, 0xED91, 0x3F0E, 0xEDA6, 0xEDA6, 0x491C, - 0xEDC6, 0xEDC6, 0x3F41, 0xEDCF, 0xEDCF, 0x3F4A, 0xEDD1, 0xEDD1, 0x491E, - 0xEDD7, 0xEDD7, 0x491F, 0xEDDA, 0xEDDA, 0x3F53, 0xEDDB, 0xEDDB, 0x4920, - 0xEDDD, 0xEDDD, 0x4921, 0xEDE1, 0xEDE1, 0x3F58, 0xEDED, 0xEDED, 0x3F64, - 0xEE08, 0xEE08, 0x3F7E, 0xEE11, 0xEE11, 0x3F87, 0xEE15, 0xEE15, 0x4925, - 0xEE1B, 0xEE1B, 0x4926, 0xEE20, 0xEE20, 0x3F94, 0xEE22, 0xEE22, 0x4927, - 0xEE2A, 0xEE2A, 0x3F9D, 0xEE30, 0xEE30, 0x4928, 0xEE31, 0xEE31, 0x3FA3, - 0xEE34, 0xEE34, 0x3FA6, 0xEE48, 0xEE48, 0x4929, 0xEE56, 0xEE56, 0x492A, - 0xEE5B, 0xEE5B, 0x492B, 0xEE5D, 0xEE5D, 0x3FCC, 0xEE60, 0xEE60, 0x492C, - 0xEE64, 0xEE64, 0x3FD2, 0xEE6A, 0xEE6A, 0x3FD8, 0xEE76, 0xEE76, 0x3FE4, - 0xEE7C, 0xEE7C, 0x3FEA, 0xEE7E, 0xEE7E, 0x492D, 0xEE91, 0xEE91, 0x3FFD, - 0xEE9C, 0xEE9C, 0x492F, 0xEEA1, 0xEEA6, 0x4931, 0xEEA7, 0xEEA7, 0x43B4, - 0xEEA8, 0xEEAA, 0x4937, 0xEEAC, 0xEEB1, 0x493A, 0xEEB4, 0xEEB4, 0x4942, - 0xEEB7, 0xEEB7, 0x4945, 0xF303, 0xF318, 0x44C9, 0xF325, 0xF325, 0x496D, - 0xF327, 0xF327, 0x496F, 0xF344, 0xF344, 0x498C, 0xF346, 0xF346, 0x498E, - 0xF34A, 0xF34B, 0x499C, 0xF3A0, 0xF3A1, 0x4534, 0xF3AC, 0xF3AC, 0x453B, - 0xF3F0, 0xF3F0, 0x4575, 0xF3F9, 0xF3FA, 0x457C, 0xF3FC, 0xF3FC, 0x457F, - 0xF408, 0xF40B, 0x4589, 0xF43D, 0xF43D, 0x45B5, 0xF440, 0xF442, 0x430B, - 0xF444, 0xF444, 0x430F, 0xF446, 0xF446, 0x4311, 0xF448, 0xF449, 0x4313, - 0xF44B, 0xF44B, 0x4316, 0xF44D, 0xF44D, 0x4318, 0xF450, 0xF452, 0x431B, - 0xF454, 0xF456, 0x431F, 0xF457, 0xF457, 0x45B7, 0xF45A, 0xF45A, 0x4325, - 0xF45B, 0xF45B, 0x45B8, 0xF45C, 0xF45F, 0x4327, 0xF461, 0xF463, 0x432C, - 0xF465, 0xF466, 0x4330, 0xF469, 0xF469, 0x4334, 0xF46C, 0xF46D, 0x4337, - 0xF46E, 0xF46E, 0x45B9, 0xF46F, 0xF46F, 0x433A, 0xF474, 0xF474, 0x45BA, - 0xF477, 0xF477, 0x45BB, 0xF478, 0xF478, 0x4343, 0xF479, 0xF479, 0x45BC, - 0xF47B, 0xF47B, 0x45BD, 0xF47C, 0xF47E, 0x4347, 0xF480, 0xF481, 0x434B, - 0xF483, 0xF483, 0x45BE, 0xF484, 0xF485, 0x434F, 0xF488, 0xF488, 0x4353, - 0xF48B, 0xF48B, 0x4356, 0xF48D, 0xF490, 0x4358, 0xF491, 0xF491, 0x45BF, - 0xF497, 0xF498, 0x4362, 0xF49B, 0xF49B, 0x4366, 0xF49E, 0xF49E, 0x4369, - 0xF4A4, 0xF4A6, 0x436F, 0xF4A7, 0xF4A7, 0x45C1, 0xF4A9, 0xF4AA, 0x4374, - 0xF4AD, 0xF4AD, 0x4378, 0xF4AF, 0xF4B0, 0x437A, 0xF4B2, 0xF4B2, 0x45C3, - 0xF4B3, 0xF4B4, 0x437E, 0xF4B7, 0xF4B7, 0x4382, 0xF4BA, 0xF4C0, 0x4385, - 0xF4C1, 0xF4C1, 0x45C4, 0xF4C3, 0xF4C5, 0x45C5, 0xF4C7, 0xF4CA, 0x45C9, - 0xF4CC, 0xF4CF, 0x45CE, 0xF4D1, 0xF4D5, 0x45D2, 0xF4D7, 0xF4D7, 0x45D8, - 0xF4D9, 0xF4DA, 0x45DA, 0xF4DB, 0xF4DC, 0x438C, 0xF4DD, 0xF4DE, 0x45DC, - 0xF4DF, 0xF4DF, 0x438E, 0xF4E0, 0xF4E0, 0x45DE, 0xF4E2, 0xF4E2, 0x45DF, - 0xF4E3, 0xF4E3, 0x4390, 0xF4E4, 0xF4E4, 0x45E0, 0xF4E5, 0xF4E5, 0x4391, - 0xF4E6, 0xF4E6, 0x45E1, 0xF4E7, 0xF4E9, 0x4392, 0xF4EF, 0xF4EF, 0x45E5, - 0xF4F2, 0xF4F2, 0x4397, 0xF4F3, 0xF4F3, 0x45E8, 0xF4F8, 0xF4F8, 0x45EB, - 0xF4FC, 0xF4FC, 0x45EE, 0xF4FE, 0xF4FF, 0x45F0, 0xF500, 0xF501, 0x45F2, - 0xF503, 0xF503, 0x45F4, 0xF505, 0xF505, 0x45F6, 0xF507, 0xF511, 0x45F8, - 0xF513, 0xF516, 0x4604, 0xF518, 0xF51D, 0x4609, 0xF51F, 0xF526, 0x4610, - 0xF52A, 0xF52A, 0x461B, 0xF533, 0xF534, 0x4624, 0xF53A, 0xF53B, 0x44E1, - 0xF53D, 0xF53D, 0x44E4, 0xF54E, 0xF54E, 0x44F5, 0xF553, 0xF553, 0x44FA, - 0xF556, 0xF556, 0x44FC, 0xF559, 0xF55A, 0x44FF, 0xF55E, 0xF55E, 0x4504, - 0xF565, 0xF565, 0x450B, 0xF56B, 0xF56B, 0x4511, 0xF572, 0xF572, 0x4518, - 0xF694, 0xF694, 0x467C, 0xF69E, 0xF69E, 0x4686, 0xF6AD, 0xF6AD, 0x4694, - 0xF6B0, 0xF6B0, 0x4697, 0xF7E5, 0xF7E6, 0x36AF, 0xF7E8, 0xF7E8, 0x36B2, - 0xF7EA, 0xF7EB, 0x36B4, 0xF7ED, 0xF7EE, 0x36B7, 0xFA0C, 0xFA0C, 0x0274, - 0xFA0D, 0xFA0D, 0x2381, 0xFE30, 0xFE30, 0x006D, 0xFE31, 0xFE31, 0x007A, - 0xFE33, 0xFE33, 0x35AF, 0xFE34, 0xFE34, 0x35B1, 0xFE35, 0xFE36, 0x0082, - 0xFE37, 0xFE38, 0x0086, 0xFE39, 0xFE3A, 0x008A, 0xFE3B, 0xFE3C, 0x008E, - 0xFE3D, 0xFE3E, 0x0092, 0xFE3F, 0xFE40, 0x0096, 0xFE41, 0xFE42, 0x009A, - 0xFE43, 0xFE44, 0x009E, 0xFE49, 0xFE4A, 0x00C7, 0xFE4B, 0xFE4C, 0x00CB, - 0xFE4D, 0xFE4E, 0x00C9, 0xFE4F, 0xFE4F, 0x35B2, 0xFE50, 0xFE50, 0x0070, - 0xFE52, 0xFE52, 0x0072, 0xFE54, 0xFE57, 0x0074, 0xFE59, 0xFE5E, 0x00A0, - 0xFE5F, 0xFE61, 0x00CD, 0xFE62, 0xFE66, 0x00DF, 0xFE69, 0xFE6B, 0x010C, - 0xFF01, 0xFF01, 0x006C, 0xFF02, 0xFF02, 0x36E4, 0xFF03, 0xFF03, 0x00AE, - 0xFF04, 0xFF04, 0x0103, 0xFF05, 0xFF05, 0x0108, 0xFF06, 0xFF06, 0x00AF, - 0xFF07, 0xFF07, 0x36E3, 0xFF08, 0xFF09, 0x0080, 0xFF0A, 0xFF0A, 0x00B0, - 0xFF0B, 0xFF0B, 0x00D0, 0xFF0C, 0xFF0C, 0x0064, 0xFF0D, 0xFF0D, 0x00D1, - 0xFF0E, 0xFF0E, 0x0067, 0xFF0F, 0xFF0F, 0x0101, 0xFF10, 0xFF19, 0x014D, - 0xFF1A, 0xFF1A, 0x006A, 0xFF1B, 0xFF1B, 0x0069, 0xFF1C, 0xFF1C, 0x00D6, - 0xFF1D, 0xFF1D, 0x00D8, 0xFF1E, 0xFF1E, 0x00D7, 0xFF1F, 0xFF1F, 0x006B, - 0xFF20, 0xFF20, 0x0109, 0xFF21, 0xFF3A, 0x016D, 0xFF3B, 0xFF3B, 0x35BE, - 0xFF3C, 0xFF3C, 0x0102, 0xFF3D, 0xFF3D, 0x35BF, 0xFF3E, 0xFF3E, 0x35B4, - 0xFF3F, 0xFF3F, 0x00C5, 0xFF41, 0xFF5A, 0x0187, 0xFF5B, 0xFF5B, 0x0084, - 0xFF5C, 0xFF5C, 0x0078, 0xFF5D, 0xFF5D, 0x0085, 0xFF64, 0xFF64, 0x0071, - 0xFFE2, 0xFFE2, 0x36E1, 0xFFE4, 0xFFE4, 0x36E2, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp deleted file mode 100644 index d01fb73ce1..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_UniCNS_UCS2_V_3[13 * 3] = { - 0x2013, 0x2013, 0x0078, 0x2014, 0x2014, 0x007A, 0x2025, 0x2025, - 0x006D, 0x3008, 0x3009, 0x0096, 0x300A, 0x300B, 0x0092, 0x300C, - 0x300D, 0x009A, 0x300E, 0x300F, 0x009E, 0x3010, 0x3011, 0x008E, - 0x3014, 0x3015, 0x008A, 0xFE4F, 0xFE4F, 0x35B1, 0xFF08, 0xFF09, - 0x0082, 0xFF5B, 0xFF5B, 0x0086, 0xFF5D, 0xFF5D, 0x0087, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp deleted file mode 100644 index 4ad544034a..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp +++ /dev/null @@ -1,3245 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -const FX_WORD g_FXCMAP_UniCNS_UTF16_H_0[14557 * 2] = { - 0x0020, 0x0001, 0x0021, 0x0002, 0x0022, 0x0003, 0x0023, 0x0004, 0x0024, - 0x0005, 0x0025, 0x0006, 0x0026, 0x0007, 0x0027, 0x0008, 0x0028, 0x0009, - 0x0029, 0x000A, 0x002A, 0x000B, 0x002B, 0x000C, 0x002C, 0x000D, 0x002D, - 0x000E, 0x002E, 0x000F, 0x002F, 0x0010, 0x0030, 0x0011, 0x0031, 0x0012, - 0x0032, 0x0013, 0x0033, 0x0014, 0x0034, 0x0015, 0x0035, 0x0016, 0x0036, - 0x0017, 0x0037, 0x0018, 0x0038, 0x0019, 0x0039, 0x001A, 0x003A, 0x001B, - 0x003B, 0x001C, 0x003C, 0x001D, 0x003D, 0x001E, 0x003E, 0x001F, 0x003F, - 0x0020, 0x0040, 0x0021, 0x0041, 0x0022, 0x0042, 0x0023, 0x0043, 0x0024, - 0x0044, 0x0025, 0x0045, 0x0026, 0x0046, 0x0027, 0x0047, 0x0028, 0x0048, - 0x0029, 0x0049, 0x002A, 0x004A, 0x002B, 0x004B, 0x002C, 0x004C, 0x002D, - 0x004D, 0x002E, 0x004E, 0x002F, 0x004F, 0x0030, 0x0050, 0x0031, 0x0051, - 0x0032, 0x0052, 0x0033, 0x0053, 0x0034, 0x0054, 0x0035, 0x0055, 0x0036, - 0x0056, 0x0037, 0x0057, 0x0038, 0x0058, 0x0039, 0x0059, 0x003A, 0x005A, - 0x003B, 0x005B, 0x003C, 0x005C, 0x003D, 0x005D, 0x003E, 0x005E, 0x003F, - 0x005F, 0x0040, 0x0060, 0x0041, 0x0061, 0x0042, 0x0062, 0x0043, 0x0063, - 0x0044, 0x0064, 0x0045, 0x0065, 0x0046, 0x0066, 0x0047, 0x0067, 0x0048, - 0x0068, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B, 0x004C, 0x006C, - 0x004D, 0x006D, 0x004E, 0x006E, 0x004F, 0x006F, 0x0050, 0x0070, 0x0051, - 0x0071, 0x0052, 0x0072, 0x0053, 0x0073, 0x0054, 0x0074, 0x0055, 0x0075, - 0x0056, 0x0076, 0x0057, 0x0077, 0x0058, 0x0078, 0x0059, 0x0079, 0x005A, - 0x007A, 0x005B, 0x007B, 0x005C, 0x007C, 0x005D, 0x007D, 0x005E, 0x007E, - 0x005F, 0x00A2, 0x0106, 0x00A3, 0x0107, 0x00A5, 0x0104, 0x00A7, 0x00B2, - 0x00A8, 0x35B3, 0x00AC, 0x36E1, 0x00AF, 0x00C3, 0x00B0, 0x0118, 0x00B1, - 0x00D4, 0x00B7, 0x0073, 0x00D7, 0x00D2, 0x00F7, 0x00D3, 0x02C6, 0x35B4, - 0x02C7, 0x01F8, 0x02CA, 0x01F7, 0x02CB, 0x01F9, 0x02CD, 0x00C6, 0x02D9, - 0x01F6, 0x0308, 0x35B3, 0x0391, 0x01A1, 0x0392, 0x01A2, 0x0393, 0x01A3, - 0x0394, 0x01A4, 0x0395, 0x01A5, 0x0396, 0x01A6, 0x0397, 0x01A7, 0x0398, - 0x01A8, 0x0399, 0x01A9, 0x039A, 0x01AA, 0x039B, 0x01AB, 0x039C, 0x01AC, - 0x039D, 0x01AD, 0x039E, 0x01AE, 0x039F, 0x01AF, 0x03A0, 0x01B0, 0x03A1, - 0x01B1, 0x03A3, 0x01B2, 0x03A4, 0x01B3, 0x03A5, 0x01B4, 0x03A6, 0x01B5, - 0x03A7, 0x01B6, 0x03A8, 0x01B7, 0x03A9, 0x01B8, 0x03B1, 0x01B9, 0x03B2, - 0x01BA, 0x03B3, 0x01BB, 0x03B4, 0x01BC, 0x03B5, 0x01BD, 0x03B6, 0x01BE, - 0x03B7, 0x01BF, 0x03B8, 0x01C0, 0x03B9, 0x01C1, 0x03BA, 0x01C2, 0x03BB, - 0x01C3, 0x03BC, 0x01C4, 0x03BD, 0x01C5, 0x03BE, 0x01C6, 0x03BF, 0x01C7, - 0x03C0, 0x01C8, 0x03C1, 0x01C9, 0x03C3, 0x01CA, 0x03C4, 0x01CB, 0x03C5, - 0x01CC, 0x03C6, 0x01CD, 0x03C7, 0x01CE, 0x03C8, 0x01CF, 0x03C9, 0x01D0, - 0x0401, 0x3670, 0x0410, 0x366A, 0x0411, 0x366B, 0x0412, 0x366C, 0x0413, - 0x366D, 0x0414, 0x366E, 0x0415, 0x366F, 0x0416, 0x3671, 0x0417, 0x3672, - 0x0418, 0x3673, 0x0419, 0x3674, 0x041A, 0x3675, 0x041B, 0x3676, 0x041C, - 0x3677, 0x041D, 0x3678, 0x041E, 0x3679, 0x041F, 0x367A, 0x0420, 0x367B, - 0x0421, 0x367C, 0x0422, 0x367D, 0x0423, 0x367E, 0x0424, 0x367F, 0x0425, - 0x3680, 0x0426, 0x3681, 0x0427, 0x3682, 0x0428, 0x3683, 0x0429, 0x3684, - 0x042A, 0x3685, 0x042B, 0x3686, 0x042C, 0x3687, 0x042D, 0x3688, 0x042E, - 0x3689, 0x042F, 0x368A, 0x0430, 0x368B, 0x0431, 0x368C, 0x0432, 0x368D, - 0x0433, 0x368E, 0x0434, 0x368F, 0x0435, 0x3690, 0x0436, 0x3692, 0x0437, - 0x3693, 0x0438, 0x3694, 0x0439, 0x3695, 0x043A, 0x3696, 0x043B, 0x3697, - 0x043C, 0x3698, 0x043D, 0x3699, 0x043E, 0x369A, 0x043F, 0x369B, 0x0440, - 0x369C, 0x0441, 0x369D, 0x0442, 0x369E, 0x0443, 0x369F, 0x0444, 0x36A0, - 0x0445, 0x36A1, 0x0446, 0x36A2, 0x0447, 0x36A3, 0x0448, 0x36A4, 0x0449, - 0x36A5, 0x044A, 0x36A6, 0x044B, 0x36A7, 0x044C, 0x36A8, 0x044D, 0x36A9, - 0x044E, 0x36AA, 0x044F, 0x36AB, 0x0451, 0x3691, 0x2013, 0x0079, 0x2014, - 0x007B, 0x2018, 0x00A6, 0x2019, 0x00A7, 0x201C, 0x00A8, 0x201D, 0x00A9, - 0x2022, 0x0068, 0x2025, 0x006F, 0x2026, 0x006E, 0x2027, 0x0068, 0x2032, - 0x00AD, 0x2035, 0x00AC, 0x203B, 0x00B1, 0x203E, 0x00C3, 0x2103, 0x010A, - 0x2105, 0x00C2, 0x2109, 0x010B, 0x2116, 0x36E6, 0x2121, 0x36E7, 0x2160, - 0x0157, 0x2161, 0x0158, 0x2162, 0x0159, 0x2163, 0x015A, 0x2164, 0x015B, - 0x2165, 0x015C, 0x2166, 0x015D, 0x2167, 0x015E, 0x2168, 0x015F, 0x2169, - 0x0160, 0x2170, 0x020E, 0x2171, 0x020F, 0x2172, 0x0210, 0x2173, 0x0211, - 0x2174, 0x0212, 0x2175, 0x0213, 0x2176, 0x0214, 0x2177, 0x0215, 0x2178, - 0x0216, 0x2179, 0x0217, 0x2190, 0x00F8, 0x2191, 0x00F5, 0x2192, 0x00F7, - 0x2193, 0x00F6, 0x2196, 0x00F9, 0x2197, 0x00FA, 0x2198, 0x00FC, 0x2199, - 0x00FB, 0x21B8, 0x36AD, 0x21B9, 0x36AE, 0x21E7, 0x36AC, 0x2215, 0x0101, - 0x221A, 0x00D5, 0x221E, 0x00DC, 0x221F, 0x00E9, 0x2220, 0x00E8, 0x2223, - 0x00FE, 0x2225, 0x00FD, 0x2229, 0x00E5, 0x222A, 0x00E6, 0x222B, 0x00ED, - 0x222E, 0x00EE, 0x2234, 0x00F0, 0x2235, 0x00EF, 0x223C, 0x00E4, 0x2252, - 0x00DD, 0x2260, 0x00DB, 0x2261, 0x00DE, 0x2266, 0x00D9, 0x2267, 0x00DA, - 0x2295, 0x00F3, 0x2299, 0x00F4, 0x22A5, 0x00E7, 0x22BF, 0x00EA, 0x22EF, - 0x006E, 0x2400, 0x0232, 0x2401, 0x0233, 0x2402, 0x0234, 0x2403, 0x0235, - 0x2404, 0x0236, 0x2405, 0x0237, 0x2406, 0x0238, 0x2407, 0x0239, 0x2408, - 0x023A, 0x2409, 0x023B, 0x240A, 0x023C, 0x240B, 0x023D, 0x240C, 0x023E, - 0x240D, 0x023F, 0x240E, 0x0240, 0x240F, 0x0241, 0x2410, 0x0242, 0x2411, - 0x0243, 0x2412, 0x0244, 0x2413, 0x0245, 0x2414, 0x0246, 0x2415, 0x0247, - 0x2416, 0x0248, 0x2417, 0x0249, 0x2418, 0x024A, 0x2419, 0x024B, 0x241A, - 0x024C, 0x241B, 0x024D, 0x241C, 0x024E, 0x241D, 0x024F, 0x241E, 0x0250, - 0x241F, 0x0251, 0x2421, 0x0252, 0x2460, 0x01FA, 0x2461, 0x01FB, 0x2462, - 0x01FC, 0x2463, 0x01FD, 0x2464, 0x01FE, 0x2465, 0x01FF, 0x2466, 0x0200, - 0x2467, 0x0201, 0x2468, 0x0202, 0x2469, 0x0203, 0x2474, 0x0204, 0x2475, - 0x0205, 0x2476, 0x0206, 0x2477, 0x0207, 0x2478, 0x0208, 0x2479, 0x0209, - 0x247A, 0x020A, 0x247B, 0x020B, 0x247C, 0x020C, 0x247D, 0x020D, 0x2500, - 0x0137, 0x2502, 0x0138, 0x250C, 0x013A, 0x2510, 0x013B, 0x2514, 0x013C, - 0x2518, 0x013D, 0x251C, 0x0135, 0x2524, 0x0134, 0x252C, 0x0133, 0x2534, - 0x0132, 0x253C, 0x0131, 0x2550, 0x0142, 0x2551, 0x370A, 0x2552, 0x36F8, - 0x2553, 0x3701, 0x2554, 0x36EF, 0x2555, 0x36FA, 0x2556, 0x3703, 0x2557, - 0x36F1, 0x2558, 0x36FE, 0x2559, 0x3707, 0x255A, 0x36F5, 0x255B, 0x3700, - 0x255C, 0x3709, 0x255D, 0x36F7, 0x255E, 0x0143, 0x255F, 0x3704, 0x2560, - 0x36F2, 0x2561, 0x0145, 0x2562, 0x3706, 0x2563, 0x36F4, 0x2564, 0x36F9, - 0x2565, 0x3702, 0x2566, 0x36F0, 0x2567, 0x36FF, 0x2568, 0x3708, 0x2569, - 0x36F6, 0x256A, 0x0144, 0x256B, 0x3705, 0x256C, 0x36F3, 0x256D, 0x013E, - 0x256E, 0x013F, 0x256F, 0x0141, 0x2570, 0x0140, 0x2571, 0x014A, 0x2572, - 0x014B, 0x2573, 0x014C, 0x2574, 0x35B0, 0x2581, 0x0122, 0x2582, 0x0123, - 0x2583, 0x0124, 0x2584, 0x0125, 0x2585, 0x0126, 0x2586, 0x0127, 0x2587, - 0x0128, 0x2588, 0x0129, 0x2589, 0x0130, 0x258A, 0x012F, 0x258B, 0x012E, - 0x258C, 0x012D, 0x258D, 0x012C, 0x258E, 0x012B, 0x258F, 0x012A, 0x2593, - 0x3710, 0x2594, 0x0136, 0x2595, 0x0139, 0x25A0, 0x00BE, 0x25A1, 0x00BD, - 0x25B2, 0x00B7, 0x25B3, 0x00B6, 0x25BC, 0x00C0, 0x25BD, 0x00BF, 0x25C6, - 0x00BC, 0x25C7, 0x00BB, 0x25CB, 0x00B4, 0x25CE, 0x00B8, 0x25CF, 0x00B5, - 0x25E2, 0x0146, 0x25E3, 0x0147, 0x25E4, 0x0149, 0x25E5, 0x0148, 0x2605, - 0x00BA, 0x2606, 0x00B9, 0x2609, 0x00F4, 0x2640, 0x00F1, 0x2641, 0x00F3, - 0x2642, 0x00F2, 0x273D, 0x35C0, 0x2F00, 0x0253, 0x2F01, 0x0218, 0x2F02, - 0x0219, 0x2F03, 0x021A, 0x2F04, 0x0254, 0x2F05, 0x021B, 0x2F06, 0x025A, - 0x2F07, 0x021C, 0x2F08, 0x025B, 0x2F09, 0x025C, 0x2F0A, 0x025D, 0x2F0B, - 0x025E, 0x2F0C, 0x021D, 0x2F0D, 0x021E, 0x2F0E, 0x021F, 0x2F0F, 0x025F, - 0x2F10, 0x176E, 0x2F11, 0x0260, 0x2F12, 0x0262, 0x2F13, 0x0220, 0x2F14, - 0x0263, 0x2F15, 0x176F, 0x2F16, 0x0221, 0x2F17, 0x0264, 0x2F18, 0x0265, - 0x2F19, 0x0222, 0x2F1A, 0x1770, 0x2F1B, 0x0223, 0x2F1C, 0x0266, 0x2F1D, - 0x0279, 0x2F1E, 0x1775, 0x2F1F, 0x027A, 0x2F20, 0x027B, 0x2F21, 0x0224, - 0x2F22, 0x0224, 0x2F23, 0x027C, 0x2F24, 0x027D, 0x2F25, 0x027E, 0x2F26, - 0x027F, 0x2F27, 0x0225, 0x2F28, 0x0282, 0x2F29, 0x0283, 0x2F2A, 0x0284, - 0x2F2B, 0x0285, 0x2F2C, 0x1776, 0x2F2D, 0x0286, 0x2F2E, 0x0226, 0x2F2F, - 0x0288, 0x2F30, 0x0289, 0x2F31, 0x028C, 0x2F32, 0x028D, 0x2F33, 0x0227, - 0x2F34, 0x0228, 0x2F35, 0x0229, 0x2F36, 0x028E, 0x2F37, 0x028F, 0x2F38, - 0x0290, 0x2F39, 0x022A, 0x2F3A, 0x022B, 0x2F3B, 0x1777, 0x2F3C, 0x02D0, - 0x2F3D, 0x02D1, 0x2F3E, 0x02D2, 0x2F3F, 0x02D3, 0x2F40, 0x02D5, 0x2F41, - 0x022C, 0x2F42, 0x02D6, 0x2F43, 0x02D7, 0x2F44, 0x02D8, 0x2F45, 0x02D9, - 0x2F46, 0x022D, 0x2F47, 0x02DA, 0x2F48, 0x02DB, 0x2F49, 0x02DC, 0x2F4A, - 0x02DD, 0x2F4B, 0x02DE, 0x2F4C, 0x02DF, 0x2F4D, 0x02E0, 0x2F4E, 0x178A, - 0x2F4F, 0x02E1, 0x2F50, 0x02E2, 0x2F51, 0x02E3, 0x2F52, 0x02E4, 0x2F53, - 0x178C, 0x2F54, 0x02E5, 0x2F55, 0x02E6, 0x2F56, 0x02E7, 0x2F57, 0x02E8, - 0x2F58, 0x02E9, 0x2F59, 0x178D, 0x2F5A, 0x02EA, 0x2F5B, 0x02EB, 0x2F5C, - 0x02EC, 0x2F5D, 0x02ED, 0x2F5E, 0x0356, 0x2F5F, 0x0357, 0x2F60, 0x0358, - 0x2F61, 0x0359, 0x2F62, 0x035A, 0x2F63, 0x035B, 0x2F64, 0x035C, 0x2F65, - 0x035E, 0x2F66, 0x0362, 0x2F67, 0x022E, 0x2F68, 0x022F, 0x2F69, 0x0363, - 0x2F6A, 0x0364, 0x2F6B, 0x0365, 0x2F6C, 0x0366, 0x2F6D, 0x0367, 0x2F6E, - 0x0368, 0x2F6F, 0x0369, 0x2F70, 0x036A, 0x2F71, 0x17B2, 0x2F72, 0x036B, - 0x2F73, 0x036C, 0x2F74, 0x036D, 0x2F75, 0x03F6, 0x2F76, 0x03F7, 0x2F77, - 0x03F8, 0x2F78, 0x03F9, 0x2F79, 0x1812, 0x2F7A, 0x03FA, 0x2F7B, 0x03FB, - 0x2F7C, 0x03FC, 0x2F7D, 0x03FE, 0x2F7E, 0x03FF, 0x2F7F, 0x0400, 0x2F80, - 0x0401, 0x2F81, 0x0402, 0x2F82, 0x0405, 0x2F83, 0x0406, 0x2F84, 0x0407, - 0x2F85, 0x0408, 0x2F86, 0x0409, 0x2F87, 0x040A, 0x2F88, 0x040B, 0x2F89, - 0x040C, 0x2F8A, 0x040D, 0x2F8B, 0x1813, 0x2F8C, 0x1818, 0x2F8D, 0x040F, - 0x2F8E, 0x0410, 0x2F8F, 0x0411, 0x2F90, 0x0412, 0x2F91, 0x1819, 0x2F92, - 0x0508, 0x2F93, 0x0509, 0x2F94, 0x050A, 0x2F95, 0x050B, 0x2F96, 0x050C, - 0x2F97, 0x050D, 0x2F98, 0x18E7, 0x2F99, 0x050E, 0x2F9A, 0x050F, 0x2F9B, - 0x0510, 0x2F9C, 0x0511, 0x2F9D, 0x0512, 0x2F9E, 0x0513, 0x2F9F, 0x0514, - 0x2FA0, 0x0515, 0x2FA1, 0x0230, 0x2FA2, 0x051B, 0x2FA3, 0x0520, 0x2FA4, - 0x0521, 0x2FA5, 0x0522, 0x2FA6, 0x0696, 0x2FA7, 0x0697, 0x2FA8, 0x0698, - 0x2FA9, 0x0699, 0x2FAA, 0x0231, 0x2FAB, 0x069F, 0x2FAC, 0x06A0, 0x2FAE, - 0x06A2, 0x2FAF, 0x0826, 0x2FB0, 0x0827, 0x2FB1, 0x0828, 0x2FB2, 0x0829, - 0x2FB3, 0x082A, 0x2FB4, 0x082B, 0x2FB5, 0x082C, 0x2FB6, 0x082D, 0x2FB7, - 0x082E, 0x2FB8, 0x082F, 0x2FB9, 0x0830, 0x2FBA, 0x09F5, 0x2FBB, 0x09F6, - 0x2FBC, 0x09F7, 0x2FBD, 0x1E33, 0x2FBE, 0x09F8, 0x2FBF, 0x1E34, 0x2FC0, - 0x09F9, 0x2FC1, 0x09FA, 0x2FC2, 0x0BE1, 0x2FC3, 0x0BE2, 0x2FC4, 0x0BE3, - 0x2FC5, 0x0BE4, 0x2FC6, 0x0BE5, 0x2FC7, 0x0BE6, 0x2FC8, 0x0DBB, 0x2FC9, - 0x0DBC, 0x2FCA, 0x0DBD, 0x2FCB, 0x2360, 0x2FCC, 0x2612, 0x2FCD, 0x0F7B, - 0x2FCE, 0x0F7C, 0x2FCF, 0x0F7D, 0x2FD0, 0x1100, 0x2FD1, 0x1101, 0x2FD2, - 0x1289, 0x2FD3, 0x13B2, 0x2FD4, 0x13B3, 0x2FD5, 0x2F0D, 0x3000, 0x0063, - 0x3001, 0x0065, 0x3002, 0x0066, 0x3003, 0x00B3, 0x3005, 0x35BA, 0x3006, - 0x35BB, 0x3007, 0x35BC, 0x3008, 0x0094, 0x3009, 0x0095, 0x300A, 0x0090, - 0x300B, 0x0091, 0x300C, 0x0098, 0x300D, 0x0099, 0x300E, 0x009C, 0x300F, - 0x009D, 0x3010, 0x008C, 0x3011, 0x008D, 0x3012, 0x0105, 0x3014, 0x0088, - 0x3015, 0x0089, 0x301D, 0x00AA, 0x301E, 0x00AB, 0x3021, 0x0161, 0x3022, - 0x0162, 0x3023, 0x0163, 0x3024, 0x0164, 0x3025, 0x0165, 0x3026, 0x0166, - 0x3027, 0x0167, 0x3028, 0x0168, 0x3029, 0x0169, 0x3038, 0x016A, 0x3039, - 0x016B, 0x303A, 0x016C, 0x3041, 0x35C1, 0x3042, 0x35C2, 0x3043, 0x35C3, - 0x3044, 0x35C4, 0x3045, 0x35C5, 0x3046, 0x35C6, 0x3047, 0x35C7, 0x3048, - 0x35C8, 0x3049, 0x35C9, 0x304A, 0x35CA, 0x304B, 0x35CB, 0x304C, 0x35CC, - 0x304D, 0x35CD, 0x304E, 0x35CE, 0x304F, 0x35CF, 0x3050, 0x35D0, 0x3051, - 0x35D1, 0x3052, 0x35D2, 0x3053, 0x35D3, 0x3054, 0x35D4, 0x3055, 0x35D5, - 0x3056, 0x35D6, 0x3057, 0x35D7, 0x3058, 0x35D8, 0x3059, 0x35D9, 0x305A, - 0x35DA, 0x305B, 0x35DB, 0x305C, 0x35DC, 0x305D, 0x35DD, 0x305E, 0x35DE, - 0x305F, 0x35DF, 0x3060, 0x35E0, 0x3061, 0x35E1, 0x3062, 0x35E2, 0x3063, - 0x35E3, 0x3064, 0x35E4, 0x3065, 0x35E5, 0x3066, 0x35E6, 0x3067, 0x35E7, - 0x3068, 0x35E8, 0x3069, 0x35E9, 0x306A, 0x35EA, 0x306B, 0x35EB, 0x306C, - 0x35EC, 0x306D, 0x35ED, 0x306E, 0x35EE, 0x306F, 0x35EF, 0x3070, 0x35F0, - 0x3071, 0x35F1, 0x3072, 0x35F2, 0x3073, 0x35F3, 0x3074, 0x35F4, 0x3075, - 0x35F5, 0x3076, 0x35F6, 0x3077, 0x35F7, 0x3078, 0x35F8, 0x3079, 0x35F9, - 0x307A, 0x35FA, 0x307B, 0x35FB, 0x307C, 0x35FC, 0x307D, 0x35FD, 0x307E, - 0x35FE, 0x307F, 0x35FF, 0x3080, 0x3600, 0x3081, 0x3601, 0x3082, 0x3602, - 0x3083, 0x3603, 0x3084, 0x3604, 0x3085, 0x3605, 0x3086, 0x3606, 0x3087, - 0x3607, 0x3088, 0x3608, 0x3089, 0x3609, 0x308A, 0x360A, 0x308B, 0x360B, - 0x308C, 0x360C, 0x308D, 0x360D, 0x308E, 0x360E, 0x308F, 0x360F, 0x3090, - 0x3610, 0x3091, 0x3611, 0x3092, 0x3612, 0x3093, 0x3613, 0x309D, 0x35B7, - 0x309E, 0x35B8, 0x30A1, 0x3614, 0x30A2, 0x3615, 0x30A3, 0x3616, 0x30A4, - 0x3617, 0x30A5, 0x3618, 0x30A6, 0x3619, 0x30A7, 0x361A, 0x30A8, 0x361B, - 0x30A9, 0x361C, 0x30AA, 0x361D, 0x30AB, 0x361E, 0x30AC, 0x361F, 0x30AD, - 0x3620, 0x30AE, 0x3621, 0x30AF, 0x3622, 0x30B0, 0x3623, 0x30B1, 0x3624, - 0x30B2, 0x3625, 0x30B3, 0x3626, 0x30B4, 0x3627, 0x30B5, 0x3628, 0x30B6, - 0x3629, 0x30B7, 0x362A, 0x30B8, 0x362B, 0x30B9, 0x362C, 0x30BA, 0x362D, - 0x30BB, 0x362E, 0x30BC, 0x362F, 0x30BD, 0x3630, 0x30BE, 0x3631, 0x30BF, - 0x3632, 0x30C0, 0x3633, 0x30C1, 0x3634, 0x30C2, 0x3635, 0x30C3, 0x3636, - 0x30C4, 0x3637, 0x30C5, 0x3638, 0x30C6, 0x3639, 0x30C7, 0x363A, 0x30C8, - 0x363B, 0x30C9, 0x363C, 0x30CA, 0x363D, 0x30CB, 0x363E, 0x30CC, 0x363F, - 0x30CD, 0x3640, 0x30CE, 0x3641, 0x30CF, 0x3642, 0x30D0, 0x3643, 0x30D1, - 0x3644, 0x30D2, 0x3645, 0x30D3, 0x3646, 0x30D4, 0x3647, 0x30D5, 0x3648, - 0x30D6, 0x3649, 0x30D7, 0x364A, 0x30D8, 0x364B, 0x30D9, 0x364C, 0x30DA, - 0x364D, 0x30DB, 0x364E, 0x30DC, 0x364F, 0x30DD, 0x3650, 0x30DE, 0x3651, - 0x30DF, 0x3652, 0x30E0, 0x3653, 0x30E1, 0x3654, 0x30E2, 0x3655, 0x30E3, - 0x3656, 0x30E4, 0x3657, 0x30E5, 0x3658, 0x30E6, 0x3659, 0x30E7, 0x365A, - 0x30E8, 0x365B, 0x30E9, 0x365C, 0x30EA, 0x365D, 0x30EB, 0x365E, 0x30EC, - 0x365F, 0x30ED, 0x3660, 0x30EE, 0x3661, 0x30EF, 0x3662, 0x30F0, 0x3663, - 0x30F1, 0x3664, 0x30F2, 0x3665, 0x30F3, 0x3666, 0x30F4, 0x3667, 0x30F5, - 0x3668, 0x30F6, 0x3669, 0x30FC, 0x35BD, 0x30FD, 0x35B5, 0x30FE, 0x35B6, - 0x3105, 0x01D1, 0x3106, 0x01D2, 0x3107, 0x01D3, 0x3108, 0x01D4, 0x3109, - 0x01D5, 0x310A, 0x01D6, 0x310B, 0x01D7, 0x310C, 0x01D8, 0x310D, 0x01D9, - 0x310E, 0x01DA, 0x310F, 0x01DB, 0x3110, 0x01DC, 0x3111, 0x01DD, 0x3112, - 0x01DE, 0x3113, 0x01DF, 0x3114, 0x01E0, 0x3115, 0x01E1, 0x3116, 0x01E2, - 0x3117, 0x01E3, 0x3118, 0x01E4, 0x3119, 0x01E5, 0x311A, 0x01E6, 0x311B, - 0x01E7, 0x311C, 0x01E8, 0x311D, 0x01E9, 0x311E, 0x01EA, 0x311F, 0x01EB, - 0x3120, 0x01EC, 0x3121, 0x01ED, 0x3122, 0x01EE, 0x3123, 0x01EF, 0x3124, - 0x01F0, 0x3125, 0x01F1, 0x3126, 0x01F2, 0x3127, 0x01F3, 0x3128, 0x01F4, - 0x3129, 0x01F5, 0x3231, 0x36E5, 0x32A3, 0x00C1, 0x338E, 0x0115, 0x338F, - 0x0116, 0x339C, 0x0110, 0x339D, 0x0111, 0x339E, 0x0112, 0x33A1, 0x0114, - 0x33C4, 0x0117, 0x33CE, 0x0113, 0x33D1, 0x00EC, 0x33D2, 0x00EB, 0x33D5, - 0x010F, 0x361D, 0x36B7, 0x4491, 0x36B4, 0x4E00, 0x0253, 0x4E01, 0x0255, - 0x4E03, 0x0256, 0x4E07, 0x1771, 0x4E08, 0x0269, 0x4E09, 0x0267, 0x4E0A, - 0x026A, 0x4E0B, 0x0268, 0x4E0C, 0x1772, 0x4E0D, 0x0294, 0x4E0E, 0x177A, - 0x4E0F, 0x1778, 0x4E10, 0x0293, 0x4E11, 0x0292, 0x4E14, 0x02F2, 0x4E15, - 0x02F1, 0x4E16, 0x02F0, 0x4E18, 0x02F3, 0x4E19, 0x02EF, 0x4E1E, 0x036E, - 0x4E1F, 0x036F, 0x4E26, 0x0528, 0x4E28, 0x0218, 0x4E2B, 0x026B, 0x4E2D, - 0x0295, 0x4E2E, 0x177B, 0x4E30, 0x0296, 0x4E31, 0x178E, 0x4E32, 0x0415, - 0x4E33, 0x18F4, 0x4E36, 0x0219, 0x4E38, 0x026C, 0x4E39, 0x0297, 0x4E3B, - 0x02F4, 0x4E3C, 0x178F, 0x4E3F, 0x021A, 0x4E41, 0x36AF, 0x4E42, 0x176C, - 0x4E43, 0x0257, 0x4E45, 0x026E, 0x4E47, 0x1773, 0x4E48, 0x026F, 0x4E4B, - 0x0298, 0x4E4D, 0x02F5, 0x4E4E, 0x02F7, 0x4E4F, 0x02F6, 0x4E52, 0x0370, - 0x4E53, 0x0371, 0x4E56, 0x0529, 0x4E58, 0x0831, 0x4E59, 0x0254, 0x4E5A, - 0x36B1, 0x4E5C, 0x176D, 0x4E5D, 0x0258, 0x4E5E, 0x0271, 0x4E5F, 0x0270, - 0x4E69, 0x0372, 0x4E73, 0x052A, 0x4E7E, 0x09FB, 0x4E7F, 0x1E35, 0x4E82, - 0x0DBE, 0x4E83, 0x2361, 0x4E84, 0x2362, 0x4E85, 0x021B, 0x4E86, 0x0259, - 0x4E88, 0x029A, 0x4E8B, 0x052B, 0x4E8C, 0x025A, 0x4E8D, 0x1774, 0x4E8E, - 0x0272, 0x4E91, 0x029B, 0x4E92, 0x029D, 0x4E93, 0x177C, 0x4E94, 0x029E, - 0x4E95, 0x029C, 0x4E99, 0x0373, 0x4E9B, 0x052C, 0x4E9E, 0x052D, 0x4E9F, - 0x06A3, 0x4EA0, 0x021C, 0x4EA1, 0x0273, 0x4EA2, 0x029F, 0x4EA4, 0x0374, - 0x4EA5, 0x0376, 0x4EA6, 0x0375, 0x4EA8, 0x0416, 0x4EAB, 0x052E, 0x4EAC, - 0x052F, 0x4EAD, 0x06A4, 0x4EAE, 0x06A5, 0x4EB3, 0x0832, 0x4EB6, 0x2363, - 0x4EB9, 0x3377, 0x4EBA, 0x025B, 0x4EC0, 0x02A1, 0x4EC1, 0x02A0, 0x4EC2, - 0x177D, 0x4EC3, 0x02A2, 0x4EC4, 0x02A8, 0x4EC6, 0x02A3, 0x4EC7, 0x02A4, - 0x4EC8, 0x177F, 0x4EC9, 0x177E, 0x4ECA, 0x02A6, 0x4ECB, 0x02A7, 0x4ECD, - 0x02A5, 0x4ED4, 0x02FA, 0x4ED5, 0x02FB, 0x4ED6, 0x02FC, 0x4ED7, 0x02FD, - 0x4ED8, 0x02F9, 0x4ED9, 0x0300, 0x4EDA, 0x1795, 0x4EDC, 0x1791, 0x4EDD, - 0x1794, 0x4EDE, 0x0301, 0x4EDF, 0x0311, 0x4EE1, 0x1793, 0x4EE3, 0x02FE, - 0x4EE4, 0x02FF, 0x4EE5, 0x02F8, 0x4EE8, 0x1790, 0x4EE9, 0x1792, 0x4EF0, - 0x0383, 0x4EF1, 0x17BA, 0x4EF2, 0x0380, 0x4EF3, 0x0384, 0x4EF4, 0x17C4, - 0x4EF5, 0x17B8, 0x4EF6, 0x0381, 0x4EF7, 0x17BC, 0x4EFB, 0x0382, 0x4EFD, - 0x0385, 0x4EFF, 0x0377, 0x4F00, 0x17BB, 0x4F01, 0x0386, 0x4F02, 0x17BF, - 0x4F04, 0x17C3, 0x4F05, 0x17C0, 0x4F08, 0x17BD, 0x4F09, 0x0378, 0x4F0A, - 0x037A, 0x4F0B, 0x0387, 0x4F0D, 0x037C, 0x4F0E, 0x17B5, 0x4F0F, 0x037F, - 0x4F10, 0x037D, 0x4F11, 0x037E, 0x4F12, 0x17C5, 0x4F13, 0x17C2, 0x4F14, - 0x17B9, 0x4F15, 0x037B, 0x4F18, 0x17B6, 0x4F19, 0x0379, 0x4F1D, 0x17BE, - 0x4F22, 0x17C1, 0x4F2C, 0x17B7, 0x4F2D, 0x182F, 0x4F2F, 0x042C, 0x4F30, - 0x041F, 0x4F33, 0x1830, 0x4F34, 0x041C, 0x4F36, 0x042E, 0x4F38, 0x0424, - 0x4F3A, 0x0423, 0x4F3B, 0x1824, 0x4F3C, 0x0427, 0x4F3D, 0x0422, 0x4F3E, - 0x1829, 0x4F3F, 0x1831, 0x4F41, 0x182D, 0x4F43, 0x0425, 0x4F46, 0x0428, - 0x4F47, 0x0419, 0x4F48, 0x0431, 0x4F49, 0x1826, 0x4F4C, 0x1900, 0x4F4D, - 0x0417, 0x4F4E, 0x042D, 0x4F4F, 0x0418, 0x4F50, 0x0420, 0x4F51, 0x0421, - 0x4F52, 0x182B, 0x4F53, 0x1827, 0x4F54, 0x0426, 0x4F55, 0x041E, 0x4F56, - 0x1823, 0x4F57, 0x041A, 0x4F58, 0x182E, 0x4F59, 0x042F, 0x4F5A, 0x0432, - 0x4F5B, 0x041D, 0x4F5C, 0x042A, 0x4F5D, 0x0430, 0x4F5E, 0x041B, 0x4F5F, - 0x182C, 0x4F60, 0x042B, 0x4F61, 0x1832, 0x4F62, 0x1825, 0x4F63, 0x0429, - 0x4F64, 0x1828, 0x4F67, 0x182A, 0x4F69, 0x053D, 0x4F6A, 0x1902, 0x4F6B, - 0x190E, 0x4F6C, 0x0535, 0x4F6E, 0x190F, 0x4F6F, 0x0530, 0x4F70, 0x053A, - 0x4F73, 0x0533, 0x4F74, 0x18FC, 0x4F75, 0x053B, 0x4F76, 0x18FB, 0x4F77, - 0x18FF, 0x4F78, 0x1906, 0x4F79, 0x1904, 0x4F7A, 0x0543, 0x4F7B, 0x053E, - 0x4F7C, 0x18F6, 0x4F7D, 0x18F8, 0x4F7E, 0x0540, 0x4F7F, 0x0534, 0x4F80, - 0x18F9, 0x4F81, 0x1905, 0x4F82, 0x190C, 0x4F83, 0x0539, 0x4F84, 0x18FE, - 0x4F85, 0x18F7, 0x4F86, 0x0538, 0x4F87, 0x18FA, 0x4F88, 0x053C, 0x4F89, - 0x18FD, 0x4F8B, 0x0537, 0x4F8D, 0x0532, 0x4F8F, 0x0541, 0x4F90, 0x1907, - 0x4F91, 0x0542, 0x4F92, 0x190B, 0x4F94, 0x1909, 0x4F95, 0x190D, 0x4F96, - 0x053F, 0x4F97, 0x1901, 0x4F98, 0x18F5, 0x4F9A, 0x1903, 0x4F9B, 0x0536, - 0x4F9C, 0x1908, 0x4F9D, 0x0531, 0x4F9E, 0x190A, 0x4FAE, 0x06B4, 0x4FAF, - 0x06A8, 0x4FB2, 0x1A5D, 0x4FB3, 0x1A65, 0x4FB5, 0x06A7, 0x4FB6, 0x06AF, - 0x4FB7, 0x06BB, 0x4FB9, 0x1A6B, 0x4FBA, 0x1A69, 0x4FBB, 0x1A64, 0x4FBF, - 0x06A9, 0x4FC0, 0x1A6A, 0x4FC1, 0x1A60, 0x4FC2, 0x06B7, 0x4FC3, 0x06AE, - 0x4FC4, 0x06B6, 0x4FC5, 0x1A5B, 0x4FC7, 0x1A67, 0x4FC9, 0x1A5E, 0x4FCA, - 0x06B2, 0x4FCB, 0x1A5F, 0x4FCD, 0x1A5A, 0x4FCE, 0x06B9, 0x4FCF, 0x06AC, - 0x4FD0, 0x06B5, 0x4FD1, 0x06AB, 0x4FD3, 0x1A5C, 0x4FD4, 0x1A61, 0x4FD6, - 0x1A68, 0x4FD7, 0x06B3, 0x4FD8, 0x06B0, 0x4FD9, 0x1A63, 0x4FDA, 0x06B8, - 0x4FDB, 0x1A66, 0x4FDC, 0x1A62, 0x4FDD, 0x06AD, 0x4FDE, 0x06BA, 0x4FDF, - 0x06B1, 0x4FE0, 0x06AA, 0x4FE1, 0x06A6, 0x4FEC, 0x1A6C, 0x4FEE, 0x084C, - 0x4FEF, 0x0836, 0x4FF1, 0x0846, 0x4FF3, 0x084B, 0x4FF4, 0x1C24, 0x4FF5, - 0x1C23, 0x4FF6, 0x1C28, 0x4FF7, 0x1C29, 0x4FF8, 0x0839, 0x4FFA, 0x0842, - 0x4FFE, 0x084F, 0x5000, 0x0843, 0x5005, 0x1C1D, 0x5006, 0x083C, 0x5007, - 0x1C1E, 0x5009, 0x0851, 0x500B, 0x0848, 0x500C, 0x0833, 0x500D, 0x0834, - 0x500E, 0x1C31, 0x500F, 0x0A0C, 0x5011, 0x0841, 0x5012, 0x0840, 0x5013, - 0x1C1F, 0x5014, 0x0844, 0x5015, 0x1E45, 0x5016, 0x083B, 0x5017, 0x1C2A, - 0x5018, 0x084A, 0x5019, 0x0849, 0x501A, 0x083F, 0x501B, 0x1C22, 0x501C, - 0x1C2B, 0x501E, 0x1C1C, 0x501F, 0x083E, 0x5020, 0x1C2C, 0x5021, 0x0847, - 0x5022, 0x1C20, 0x5023, 0x0835, 0x5025, 0x0838, 0x5026, 0x0837, 0x5027, - 0x1C2D, 0x5028, 0x0845, 0x5029, 0x083A, 0x502A, 0x084E, 0x502B, 0x0850, - 0x502C, 0x1C27, 0x502D, 0x084D, 0x502F, 0x1C2F, 0x5030, 0x1C21, 0x5031, - 0x1C30, 0x5033, 0x1C25, 0x5035, 0x1C2E, 0x5037, 0x1C26, 0x503C, 0x083D, - 0x5040, 0x1E4D, 0x5041, 0x1E41, 0x5043, 0x0A00, 0x5045, 0x1E46, 0x5046, - 0x1E4C, 0x5047, 0x09FF, 0x5048, 0x1E3F, 0x5049, 0x0A03, 0x504A, 0x1E43, - 0x504B, 0x1E3C, 0x504C, 0x0A01, 0x504D, 0x1E40, 0x504E, 0x0A06, 0x504F, - 0x0A0B, 0x5051, 0x1E51, 0x5053, 0x1E3B, 0x5055, 0x0A07, 0x5057, 0x1E50, - 0x505A, 0x0A02, 0x505B, 0x1E42, 0x505C, 0x09FE, 0x505D, 0x1E3D, 0x505E, - 0x1E39, 0x505F, 0x1E47, 0x5060, 0x1E3A, 0x5061, 0x1E38, 0x5062, 0x1E44, - 0x5063, 0x1E4A, 0x5064, 0x1E4B, 0x5065, 0x0A04, 0x5068, 0x20B8, 0x5069, - 0x1E48, 0x506A, 0x1E37, 0x506B, 0x1E49, 0x506D, 0x0A0E, 0x506E, 0x1E4E, - 0x506F, 0x0A0D, 0x5070, 0x1E36, 0x5072, 0x1E3E, 0x5073, 0x1E4F, 0x5074, - 0x0A09, 0x5075, 0x0A08, 0x5076, 0x0A05, 0x5077, 0x0A0A, 0x507A, 0x09FC, - 0x507D, 0x09FD, 0x5080, 0x0BEC, 0x5082, 0x20BB, 0x5083, 0x20B4, 0x5085, - 0x0BE9, 0x5087, 0x20BC, 0x508B, 0x20B2, 0x508C, 0x20B5, 0x508D, 0x0BE8, - 0x508E, 0x20B6, 0x5091, 0x0BEB, 0x5092, 0x20BA, 0x5094, 0x20B0, 0x5095, - 0x20AF, 0x5096, 0x0BED, 0x5098, 0x0BEE, 0x5099, 0x0BEA, 0x509A, 0x0BEF, - 0x509B, 0x20AE, 0x509C, 0x20B9, 0x509D, 0x20B7, 0x509E, 0x20B1, 0x50A2, - 0x0BE7, 0x50A3, 0x20B3, 0x50AC, 0x0DC5, 0x50AD, 0x0DBF, 0x50AE, 0x2367, - 0x50AF, 0x0DC8, 0x50B0, 0x236D, 0x50B1, 0x2370, 0x50B2, 0x0DC1, 0x50B3, - 0x0DC2, 0x50B4, 0x236A, 0x50B5, 0x0DC0, 0x50B6, 0x2373, 0x50B7, 0x0DC6, - 0x50B8, 0x2374, 0x50BA, 0x236F, 0x50BB, 0x0DC7, 0x50BD, 0x2364, 0x50BE, - 0x0DC4, 0x50BF, 0x2365, 0x50C1, 0x236E, 0x50C2, 0x236C, 0x50C4, 0x2368, - 0x50C5, 0x0DC3, 0x50C6, 0x2366, 0x50C7, 0x0DC9, 0x50C8, 0x236B, 0x50C9, - 0x2372, 0x50CA, 0x2369, 0x50CB, 0x2371, 0x50CE, 0x0F88, 0x50CF, 0x0F85, - 0x50D1, 0x0F86, 0x50D3, 0x261C, 0x50D4, 0x2614, 0x50D5, 0x0F84, 0x50D6, - 0x0F81, 0x50D7, 0x2615, 0x50DA, 0x0F83, 0x50DB, 0x2618, 0x50DD, 0x261A, - 0x50E0, 0x2621, 0x50E3, 0x2620, 0x50E4, 0x261B, 0x50E5, 0x0F80, 0x50E6, - 0x2613, 0x50E7, 0x0F7E, 0x50E8, 0x2616, 0x50E9, 0x0F89, 0x50EA, 0x2619, - 0x50EC, 0x261D, 0x50ED, 0x0F82, 0x50EE, 0x0F7F, 0x50EF, 0x261F, 0x50F0, - 0x261E, 0x50F1, 0x0F87, 0x50F3, 0x2617, 0x50F5, 0x1105, 0x50F6, 0x2883, - 0x50F8, 0x2880, 0x50F9, 0x1106, 0x50FB, 0x1104, 0x50FD, 0x2887, 0x50FE, - 0x2884, 0x50FF, 0x287D, 0x5100, 0x1103, 0x5102, 0x1107, 0x5103, 0x287E, - 0x5104, 0x1102, 0x5105, 0x110A, 0x5106, 0x2881, 0x5107, 0x2882, 0x5108, - 0x1108, 0x5109, 0x1109, 0x510A, 0x2888, 0x510B, 0x2885, 0x510C, 0x2886, - 0x5110, 0x128D, 0x5111, 0x2B04, 0x5112, 0x128A, 0x5113, 0x2B01, 0x5114, - 0x128C, 0x5115, 0x128E, 0x5117, 0x2B02, 0x5118, 0x128B, 0x511A, 0x2B03, - 0x511C, 0x2B00, 0x511F, 0x13B5, 0x5120, 0x2D3E, 0x5121, 0x13B6, 0x5122, - 0x2D3C, 0x5124, 0x2D3D, 0x5125, 0x2D3B, 0x5126, 0x2D3A, 0x5129, 0x2D3F, - 0x512A, 0x13B4, 0x512D, 0x2F0F, 0x512E, 0x2F10, 0x5130, 0x287F, 0x5131, - 0x2F0E, 0x5132, 0x13B7, 0x5133, 0x1575, 0x5134, 0x307A, 0x5135, 0x307B, - 0x5137, 0x1668, 0x5138, 0x1669, 0x5139, 0x32C6, 0x513A, 0x32C5, 0x513B, - 0x16BC, 0x513C, 0x16BB, 0x513D, 0x340E, 0x513F, 0x025C, 0x5140, 0x0274, - 0x5141, 0x02AA, 0x5143, 0x02A9, 0x5144, 0x0303, 0x5145, 0x0302, 0x5146, - 0x038A, 0x5147, 0x0389, 0x5148, 0x038B, 0x5149, 0x0388, 0x514B, 0x0434, - 0x514C, 0x0433, 0x514D, 0x0435, 0x5152, 0x0545, 0x5154, 0x0544, 0x5155, - 0x0546, 0x5157, 0x06BC, 0x5159, 0x0119, 0x515A, 0x1C32, 0x515B, 0x011A, - 0x515C, 0x0A0F, 0x515D, 0x011C, 0x515E, 0x011B, 0x515F, 0x20BD, 0x5161, - 0x011D, 0x5162, 0x0F8A, 0x5163, 0x011E, 0x5165, 0x025D, 0x5167, 0x02AB, - 0x5168, 0x038C, 0x5169, 0x0547, 0x516B, 0x025E, 0x516C, 0x02AE, 0x516D, - 0x02AC, 0x516E, 0x02AD, 0x5171, 0x038D, 0x5175, 0x0436, 0x5176, 0x0549, - 0x5177, 0x0548, 0x5178, 0x054A, 0x517C, 0x0852, 0x5180, 0x128F, 0x5182, - 0x021D, 0x5187, 0x1779, 0x5188, 0x36B6, 0x5189, 0x0304, 0x518A, 0x0305, - 0x518D, 0x038E, 0x518F, 0x1833, 0x5191, 0x06BE, 0x5192, 0x06BD, 0x5193, - 0x1C34, 0x5194, 0x1C33, 0x5195, 0x0A10, 0x5196, 0x021E, 0x5197, 0x02AF, - 0x5198, 0x1780, 0x519E, 0x1910, 0x51A0, 0x06BF, 0x51A2, 0x0855, 0x51A4, - 0x0853, 0x51A5, 0x0854, 0x51AA, 0x1290, 0x51AB, 0x021F, 0x51AC, 0x0306, - 0x51B0, 0x038F, 0x51B1, 0x17C6, 0x51B6, 0x0437, 0x51B7, 0x0438, 0x51B9, - 0x1834, 0x51BC, 0x1911, 0x51BD, 0x054B, 0x51BE, 0x1912, 0x51C4, 0x1C36, - 0x51C5, 0x1C37, 0x51C6, 0x0858, 0x51C8, 0x1C38, 0x51CA, 0x1C35, 0x51CB, - 0x0859, 0x51CC, 0x0857, 0x51CD, 0x0856, 0x51CE, 0x1C39, 0x51D0, 0x1E52, - 0x51D4, 0x20BE, 0x51D7, 0x2375, 0x51D8, 0x2622, 0x51DC, 0x110B, 0x51DD, - 0x1291, 0x51DE, 0x2B05, 0x51E0, 0x025F, 0x51E1, 0x026D, 0x51F0, 0x0A11, - 0x51F1, 0x0BF1, 0x51F3, 0x0F8B, 0x51F5, 0x176E, 0x51F6, 0x02B0, 0x51F8, - 0x0309, 0x51F9, 0x0307, 0x51FA, 0x0308, 0x51FD, 0x054C, 0x5200, 0x0260, - 0x5201, 0x0261, 0x5202, 0x36B3, 0x5203, 0x0275, 0x5206, 0x02B1, 0x5207, - 0x02B2, 0x5208, 0x02B3, 0x5209, 0x1797, 0x520A, 0x030A, 0x520C, 0x1796, - 0x520E, 0x0393, 0x5210, 0x17C8, 0x5211, 0x0391, 0x5212, 0x0392, 0x5213, - 0x17C7, 0x5216, 0x0394, 0x5217, 0x0390, 0x521C, 0x1835, 0x521D, 0x068B, - 0x521E, 0x1836, 0x5221, 0x1837, 0x5224, 0x043A, 0x5225, 0x0439, 0x5228, - 0x043D, 0x5229, 0x043B, 0x522A, 0x043C, 0x522E, 0x0552, 0x5230, 0x0551, - 0x5231, 0x1917, 0x5232, 0x1914, 0x5233, 0x1915, 0x5235, 0x1913, 0x5236, - 0x0553, 0x5237, 0x054F, 0x5238, 0x054E, 0x523A, 0x0550, 0x523B, 0x054D, - 0x5241, 0x0554, 0x5243, 0x06C1, 0x5244, 0x1A6D, 0x5246, 0x1916, 0x5247, - 0x06C6, 0x5249, 0x1A6E, 0x524A, 0x06C2, 0x524B, 0x06C5, 0x524C, 0x06C4, - 0x524D, 0x06C3, 0x524E, 0x06C0, 0x5252, 0x1C3C, 0x5254, 0x085C, 0x5255, - 0x1C3F, 0x5256, 0x085A, 0x525A, 0x1C3B, 0x525B, 0x085D, 0x525C, 0x085B, - 0x525D, 0x085E, 0x525E, 0x1C3D, 0x525F, 0x1C3E, 0x5261, 0x1C3A, 0x5262, - 0x1C40, 0x5269, 0x0BF5, 0x526A, 0x0A12, 0x526B, 0x1E53, 0x526C, 0x1E55, - 0x526D, 0x1E54, 0x526E, 0x1E56, 0x526F, 0x0A13, 0x5272, 0x0BF2, 0x5274, - 0x0BF3, 0x5275, 0x0BF4, 0x5277, 0x0DCB, 0x5278, 0x2377, 0x527A, 0x2376, - 0x527B, 0x2378, 0x527C, 0x2379, 0x527D, 0x0DCC, 0x527F, 0x0DCA, 0x5280, - 0x2623, 0x5281, 0x2624, 0x5282, 0x0F8D, 0x5283, 0x0F8C, 0x5284, 0x2776, - 0x5287, 0x110C, 0x5288, 0x110D, 0x5289, 0x110E, 0x528A, 0x1110, 0x528B, - 0x2889, 0x528C, 0x288A, 0x528D, 0x110F, 0x5291, 0x1292, 0x5293, 0x1293, - 0x5296, 0x307C, 0x5297, 0x32C8, 0x5298, 0x32C7, 0x5299, 0x340F, 0x529B, - 0x0262, 0x529F, 0x030C, 0x52A0, 0x030B, 0x52A3, 0x0395, 0x52A6, 0x17C9, - 0x52A9, 0x043F, 0x52AA, 0x0440, 0x52AB, 0x043E, 0x52AC, 0x0441, 0x52AD, - 0x1838, 0x52AE, 0x1839, 0x52BB, 0x0556, 0x52BC, 0x1918, 0x52BE, 0x0555, - 0x52C0, 0x1A6F, 0x52C1, 0x06CA, 0x52C2, 0x1A70, 0x52C3, 0x06C9, 0x52C7, - 0x06C7, 0x52C9, 0x06C8, 0x52CD, 0x1C41, 0x52D2, 0x0A14, 0x52D3, 0x1E58, - 0x52D5, 0x0A17, 0x52D6, 0x1E57, 0x52D7, 0x0ACF, 0x52D8, 0x0A16, 0x52D9, - 0x0A15, 0x52DB, 0x0BF8, 0x52DD, 0x0BF7, 0x52DE, 0x0BF6, 0x52DF, 0x0DCD, - 0x52E2, 0x0DD0, 0x52E3, 0x0DD1, 0x52E4, 0x0DCF, 0x52E6, 0x0DCE, 0x52E9, - 0x2625, 0x52EB, 0x2626, 0x52EF, 0x288C, 0x52F0, 0x1111, 0x52F1, 0x288B, - 0x52F3, 0x1294, 0x52F4, 0x2D40, 0x52F5, 0x13B8, 0x52F7, 0x307D, 0x52F8, - 0x1609, 0x52F9, 0x0220, 0x52FA, 0x0276, 0x52FB, 0x02B4, 0x52FC, 0x1781, - 0x52FE, 0x02B5, 0x52FF, 0x02B6, 0x5305, 0x030D, 0x5306, 0x030E, 0x5308, - 0x0396, 0x5309, 0x183A, 0x530A, 0x1919, 0x530B, 0x191A, 0x530D, 0x06CB, - 0x530E, 0x1C42, 0x530F, 0x0A19, 0x5310, 0x0A18, 0x5311, 0x20C0, 0x5312, - 0x20BF, 0x5315, 0x0263, 0x5316, 0x02B7, 0x5317, 0x030F, 0x5319, 0x0A1A, - 0x531A, 0x176F, 0x531C, 0x1798, 0x531D, 0x0310, 0x531F, 0x17CB, 0x5320, - 0x0398, 0x5321, 0x0397, 0x5322, 0x17CA, 0x5323, 0x0442, 0x532A, 0x085F, - 0x532D, 0x1E59, 0x532F, 0x0DD2, 0x5330, 0x2627, 0x5331, 0x0F8E, 0x5334, - 0x2B06, 0x5337, 0x31C7, 0x5338, 0x0221, 0x5339, 0x02B8, 0x533C, 0x191B, - 0x533D, 0x1A71, 0x533E, 0x0A1D, 0x533F, 0x0A1B, 0x5340, 0x0A1C, 0x5341, - 0x0264, 0x5343, 0x0277, 0x5344, 0x016B, 0x5345, 0x02BB, 0x5347, 0x02BA, - 0x5348, 0x02B9, 0x5349, 0x0313, 0x534A, 0x0312, 0x534C, 0x1799, 0x534D, - 0x17CC, 0x5351, 0x055A, 0x5352, 0x0557, 0x5353, 0x0559, 0x5354, 0x0558, - 0x5357, 0x06CC, 0x535A, 0x0BF9, 0x535C, 0x0265, 0x535E, 0x02BC, 0x5360, - 0x0315, 0x5361, 0x0314, 0x5363, 0x183B, 0x5366, 0x055B, 0x5369, 0x0222, - 0x536C, 0x1782, 0x536E, 0x0317, 0x536F, 0x0316, 0x5370, 0x0399, 0x5371, - 0x039A, 0x5372, 0x183C, 0x5373, 0x0443, 0x5375, 0x0444, 0x5377, 0x055C, - 0x5378, 0x055D, 0x5379, 0x055E, 0x537B, 0x06CD, 0x537C, 0x1A72, 0x537F, - 0x0860, 0x5382, 0x1770, 0x5384, 0x02BD, 0x538A, 0x17CD, 0x538E, 0x183D, - 0x538F, 0x183E, 0x5392, 0x191C, 0x5394, 0x191D, 0x5396, 0x1A74, 0x5397, - 0x1A73, 0x5398, 0x1A76, 0x5399, 0x1A75, 0x539A, 0x06CE, 0x539C, 0x1E5A, - 0x539D, 0x0862, 0x539E, 0x1C43, 0x539F, 0x0861, 0x53A4, 0x20C1, 0x53A5, - 0x0BFA, 0x53A7, 0x20C2, 0x53AC, 0x2628, 0x53AD, 0x0F8F, 0x53B2, 0x1112, - 0x53B4, 0x307E, 0x53B6, 0x0223, 0x53B9, 0x1783, 0x53BB, 0x0318, 0x53C3, - 0x0A1E, 0x53C8, 0x0266, 0x53C9, 0x0278, 0x53CA, 0x02BF, 0x53CB, 0x02BE, - 0x53CD, 0x02C0, 0x53D4, 0x0560, 0x53D6, 0x055F, 0x53D7, 0x0561, 0x53DB, - 0x06CF, 0x53DF, 0x0863, 0x53E1, 0x2B07, 0x53E2, 0x14C9, 0x53E3, 0x0279, - 0x53E4, 0x031A, 0x53E5, 0x0329, 0x53E6, 0x0324, 0x53E8, 0x031F, 0x53E9, - 0x031E, 0x53EA, 0x0325, 0x53EB, 0x0323, 0x53EC, 0x031C, 0x53ED, 0x032A, - 0x53EE, 0x031D, 0x53EF, 0x0319, 0x53F0, 0x0328, 0x53F1, 0x0327, 0x53F2, - 0x0326, 0x53F3, 0x031B, 0x53F5, 0x0322, 0x53F8, 0x0321, 0x53FB, 0x032B, - 0x53FC, 0x0320, 0x5401, 0x03A0, 0x5403, 0x03A6, 0x5404, 0x03A2, 0x5406, - 0x03A8, 0x5407, 0x17CE, 0x5408, 0x03A5, 0x5409, 0x039B, 0x540A, 0x039E, - 0x540B, 0x03A1, 0x540C, 0x039D, 0x540D, 0x03A4, 0x540E, 0x03A7, 0x540F, - 0x039C, 0x5410, 0x039F, 0x5411, 0x03A3, 0x5412, 0x03A9, 0x5418, 0x1847, - 0x5419, 0x1844, 0x541B, 0x0451, 0x541C, 0x1845, 0x541D, 0x0445, 0x541E, - 0x0447, 0x541F, 0x045F, 0x5420, 0x045A, 0x5424, 0x184C, 0x5425, 0x1846, - 0x5426, 0x0449, 0x5427, 0x044B, 0x5428, 0x184B, 0x5429, 0x0452, 0x542A, - 0x1841, 0x542B, 0x045E, 0x542C, 0x0460, 0x542D, 0x0446, 0x542E, 0x0457, - 0x5430, 0x183F, 0x5431, 0x045D, 0x5433, 0x044E, 0x5435, 0x0458, 0x5436, - 0x0459, 0x5437, 0x1840, 0x5438, 0x0456, 0x5439, 0x0454, 0x543B, 0x0455, - 0x543C, 0x045B, 0x543D, 0x1848, 0x543E, 0x0448, 0x5440, 0x045C, 0x5441, - 0x184A, 0x5442, 0x0450, 0x5443, 0x044D, 0x5445, 0x1843, 0x5446, 0x044C, - 0x5447, 0x184D, 0x5448, 0x044F, 0x544A, 0x0453, 0x544E, 0x044A, 0x544F, - 0x1849, 0x5454, 0x1842, 0x5460, 0x192E, 0x5461, 0x192D, 0x5462, 0x0573, - 0x5463, 0x1930, 0x5464, 0x1932, 0x5465, 0x1927, 0x5466, 0x192A, 0x5467, - 0x1931, 0x5468, 0x0574, 0x546B, 0x1924, 0x546C, 0x1928, 0x546F, 0x192C, - 0x5470, 0x1A85, 0x5471, 0x056F, 0x5472, 0x1A89, 0x5473, 0x0562, 0x5474, - 0x1929, 0x5475, 0x0563, 0x5476, 0x0570, 0x5477, 0x0569, 0x5478, 0x0565, - 0x547A, 0x1925, 0x547B, 0x0568, 0x547C, 0x056D, 0x547D, 0x0576, 0x547E, - 0x1926, 0x547F, 0x191F, 0x5480, 0x0567, 0x5481, 0x1920, 0x5482, 0x1922, - 0x5484, 0x056A, 0x5486, 0x056C, 0x5487, 0x191E, 0x5488, 0x1923, 0x548B, - 0x0575, 0x548C, 0x0571, 0x548D, 0x192B, 0x548E, 0x0577, 0x5490, 0x056E, - 0x5491, 0x1921, 0x5492, 0x056B, 0x5495, 0x0566, 0x5496, 0x0564, 0x5498, - 0x192F, 0x549A, 0x0572, 0x54A0, 0x1A84, 0x54A1, 0x1A78, 0x54A2, 0x1A87, - 0x54A5, 0x1A7A, 0x54A6, 0x06D6, 0x54A7, 0x06E4, 0x54A8, 0x06D2, 0x54A9, - 0x06E3, 0x54AA, 0x06DB, 0x54AB, 0x06E0, 0x54AC, 0x06D0, 0x54AD, 0x1A79, - 0x54AE, 0x1A7F, 0x54AF, 0x06DF, 0x54B0, 0x1A8B, 0x54B1, 0x06E1, 0x54B3, - 0x06D7, 0x54B6, 0x1A81, 0x54B7, 0x1A7E, 0x54B8, 0x06D5, 0x54BA, 0x1A77, - 0x54BB, 0x06E2, 0x54BC, 0x1A86, 0x54BD, 0x06DA, 0x54BE, 0x1A88, 0x54BF, - 0x06E5, 0x54C0, 0x06D1, 0x54C1, 0x06DC, 0x54C2, 0x06D9, 0x54C3, 0x1A7C, - 0x54C4, 0x06DD, 0x54C5, 0x1A82, 0x54C6, 0x1A83, 0x54C7, 0x06D8, 0x54C8, - 0x06DE, 0x54C9, 0x06D4, 0x54CE, 0x06D3, 0x54CF, 0x1A7B, 0x54D6, 0x1A80, - 0x54DE, 0x1A8A, 0x54E0, 0x1C57, 0x54E1, 0x0870, 0x54E2, 0x1C45, 0x54E4, - 0x1C4A, 0x54E5, 0x0869, 0x54E6, 0x0874, 0x54E7, 0x1C48, 0x54E8, 0x0864, - 0x54E9, 0x086E, 0x54EA, 0x0873, 0x54EB, 0x1C4F, 0x54ED, 0x086F, 0x54EE, - 0x0872, 0x54F1, 0x1C52, 0x54F2, 0x086A, 0x54F3, 0x1C49, 0x54F7, 0x1C55, - 0x54F8, 0x1C56, 0x54FA, 0x086C, 0x54FB, 0x1C54, 0x54FC, 0x0868, 0x54FD, - 0x0877, 0x54FF, 0x1C4C, 0x5501, 0x0866, 0x5503, 0x1C59, 0x5504, 0x1C4D, - 0x5505, 0x1C51, 0x5506, 0x086B, 0x5507, 0x0876, 0x5508, 0x1C4E, 0x5509, - 0x0871, 0x550A, 0x1C53, 0x550B, 0x1C5A, 0x550C, 0x1E69, 0x550E, 0x1C58, - 0x550F, 0x0878, 0x5510, 0x0865, 0x5511, 0x1C50, 0x5512, 0x1C47, 0x5514, - 0x086D, 0x5517, 0x1C46, 0x551A, 0x1C4B, 0x5526, 0x1C44, 0x5527, 0x0875, - 0x552A, 0x1E61, 0x552C, 0x0A31, 0x552D, 0x1E6F, 0x552E, 0x0A2F, 0x552F, - 0x0A2C, 0x5530, 0x1E66, 0x5531, 0x0A28, 0x5532, 0x1E6A, 0x5533, 0x0A33, - 0x5534, 0x1E60, 0x5535, 0x1E65, 0x5536, 0x1E64, 0x5537, 0x0867, 0x5538, - 0x0A2E, 0x5539, 0x1E6D, 0x553B, 0x1E70, 0x553C, 0x1E5D, 0x553E, 0x0C0C, - 0x5540, 0x1E71, 0x5541, 0x0A34, 0x5543, 0x0A26, 0x5544, 0x0A23, 0x5545, - 0x1E68, 0x5546, 0x0A20, 0x5548, 0x1E6E, 0x554A, 0x0A27, 0x554B, 0x1E72, - 0x554D, 0x1E5E, 0x554E, 0x1E6C, 0x554F, 0x0A2A, 0x5550, 0x1E5F, 0x5551, - 0x1E62, 0x5552, 0x1E67, 0x5555, 0x0A2B, 0x5556, 0x0A29, 0x5557, 0x0A35, - 0x555C, 0x0A30, 0x555E, 0x0A24, 0x555F, 0x0ABC, 0x5561, 0x0A25, 0x5562, - 0x1E63, 0x5563, 0x0A32, 0x5564, 0x0A2D, 0x5565, 0x1E6B, 0x5566, 0x0A22, - 0x556A, 0x0A21, 0x5575, 0x1E5B, 0x5576, 0x1E5C, 0x5577, 0x20C7, 0x557B, - 0x0BFB, 0x557C, 0x0BFE, 0x557D, 0x20D2, 0x557E, 0x0C12, 0x557F, 0x20D5, - 0x5580, 0x0BFC, 0x5581, 0x20CE, 0x5582, 0x0C02, 0x5583, 0x0C08, 0x5584, - 0x0D1B, 0x5587, 0x0C06, 0x5588, 0x20CB, 0x5589, 0x0C13, 0x558A, 0x0BFF, - 0x558B, 0x0C07, 0x558C, 0x20D3, 0x558D, 0x2387, 0x558E, 0x20D8, 0x558F, - 0x20CC, 0x5591, 0x20C3, 0x5592, 0x20D0, 0x5593, 0x20CA, 0x5594, 0x0C05, - 0x5595, 0x20D6, 0x5598, 0x0C01, 0x5599, 0x0C15, 0x559A, 0x0C0E, 0x559C, - 0x0C03, 0x559D, 0x0C00, 0x559F, 0x0C0B, 0x55A1, 0x20D7, 0x55A2, 0x20C9, - 0x55A3, 0x20CF, 0x55A4, 0x20D1, 0x55A5, 0x20C5, 0x55A6, 0x20D4, 0x55A7, - 0x0BFD, 0x55A8, 0x20C4, 0x55AA, 0x0C04, 0x55AB, 0x0C14, 0x55AC, 0x0C10, - 0x55AD, 0x20C6, 0x55AE, 0x0C0A, 0x55B1, 0x0C11, 0x55B2, 0x0C0D, 0x55B3, - 0x0C09, 0x55B5, 0x20CD, 0x55BB, 0x0C0F, 0x55BF, 0x2385, 0x55C0, 0x2381, - 0x55C2, 0x2390, 0x55C3, 0x237A, 0x55C4, 0x2383, 0x55C5, 0x0DE0, 0x55C6, - 0x0DE1, 0x55C7, 0x0DD9, 0x55C8, 0x238C, 0x55C9, 0x0DE3, 0x55CA, 0x237F, - 0x55CB, 0x237E, 0x55CC, 0x237C, 0x55CD, 0x238E, 0x55CE, 0x0DD7, 0x55CF, - 0x2388, 0x55D0, 0x237D, 0x55D1, 0x0DDA, 0x55D2, 0x2386, 0x55D3, 0x0DD5, - 0x55D4, 0x2382, 0x55D5, 0x2389, 0x55D6, 0x238B, 0x55D9, 0x238F, 0x55DA, - 0x0DDE, 0x55DB, 0x237B, 0x55DC, 0x0DD8, 0x55DD, 0x2380, 0x55DF, 0x0DD3, - 0x55E1, 0x0DDF, 0x55E2, 0x238A, 0x55E3, 0x0DDB, 0x55E4, 0x0DDC, 0x55E5, - 0x0DE2, 0x55E6, 0x0DD6, 0x55E7, 0x011F, 0x55E8, 0x0DD4, 0x55E9, 0x2384, - 0x55EF, 0x0DDD, 0x55F2, 0x238D, 0x55F6, 0x0F9F, 0x55F7, 0x0F9A, 0x55F9, - 0x2637, 0x55FA, 0x2633, 0x55FC, 0x262D, 0x55FD, 0x0F94, 0x55FE, 0x0F90, - 0x55FF, 0x2636, 0x5600, 0x0F91, 0x5601, 0x2630, 0x5602, 0x2632, 0x5604, - 0x2635, 0x5606, 0x0F96, 0x5608, 0x0F9D, 0x5609, 0x0F97, 0x560C, 0x262B, - 0x560D, 0x0F98, 0x560E, 0x0F99, 0x560F, 0x262E, 0x5610, 0x0F9E, 0x5612, - 0x262C, 0x5613, 0x2631, 0x5614, 0x0F95, 0x5615, 0x262A, 0x5616, 0x0F9B, - 0x5617, 0x0F93, 0x561B, 0x0F92, 0x561C, 0x262F, 0x561D, 0x2634, 0x561F, - 0x0F9C, 0x5627, 0x2629, 0x5629, 0x1119, 0x562A, 0x289D, 0x562C, 0x289A, - 0x562E, 0x1113, 0x562F, 0x111F, 0x5630, 0x1120, 0x5632, 0x1116, 0x5633, - 0x2898, 0x5634, 0x1118, 0x5635, 0x2890, 0x5636, 0x111E, 0x5638, 0x289C, - 0x5639, 0x1115, 0x563A, 0x289E, 0x563B, 0x1114, 0x563D, 0x2899, 0x563E, - 0x289B, 0x563F, 0x1117, 0x5640, 0x2897, 0x5641, 0x2891, 0x5642, 0x288E, - 0x5645, 0x20C8, 0x5646, 0x2894, 0x5648, 0x288D, 0x5649, 0x2893, 0x564A, - 0x2892, 0x564C, 0x288F, 0x564E, 0x111B, 0x5653, 0x111A, 0x5657, 0x111C, - 0x5658, 0x2895, 0x5659, 0x1295, 0x565A, 0x2896, 0x565E, 0x2B10, 0x5660, - 0x2B09, 0x5662, 0x12A1, 0x5663, 0x2B0D, 0x5664, 0x1299, 0x5665, 0x129D, - 0x5666, 0x2B0C, 0x5668, 0x129C, 0x5669, 0x1298, 0x566A, 0x129B, 0x566B, - 0x1296, 0x566C, 0x12A0, 0x566D, 0x2B0E, 0x566E, 0x2B0A, 0x566F, 0x129F, - 0x5670, 0x2B08, 0x5671, 0x129E, 0x5672, 0x2B0F, 0x5673, 0x2B0B, 0x5674, - 0x111D, 0x5676, 0x12A2, 0x5677, 0x2B11, 0x5678, 0x129A, 0x5679, 0x1297, - 0x567E, 0x2D47, 0x567F, 0x2D49, 0x5680, 0x13BA, 0x5681, 0x2D4A, 0x5682, - 0x2D48, 0x5683, 0x2D46, 0x5684, 0x2D45, 0x5685, 0x13BC, 0x5686, 0x2D44, - 0x5687, 0x13BD, 0x568C, 0x2D42, 0x568D, 0x2D43, 0x568E, 0x13B9, 0x568F, - 0x13BE, 0x5690, 0x13BB, 0x5693, 0x2D41, 0x5695, 0x14CA, 0x5697, 0x2F13, - 0x5698, 0x2F11, 0x5699, 0x2F16, 0x569A, 0x2F14, 0x569C, 0x2F12, 0x569D, - 0x2F15, 0x56A5, 0x1576, 0x56A6, 0x3081, 0x56A7, 0x3082, 0x56A8, 0x1577, - 0x56AA, 0x3083, 0x56AB, 0x307F, 0x56AC, 0x3084, 0x56AD, 0x3080, 0x56AE, - 0x14CB, 0x56B2, 0x31C8, 0x56B3, 0x31CA, 0x56B4, 0x160C, 0x56B5, 0x31C9, - 0x56B6, 0x160B, 0x56B7, 0x160A, 0x56BC, 0x160D, 0x56BD, 0x32CA, 0x56BE, - 0x32CB, 0x56C0, 0x166B, 0x56C1, 0x166A, 0x56C2, 0x166C, 0x56C3, 0x32C9, - 0x56C5, 0x3379, 0x56C6, 0x3378, 0x56C8, 0x16BD, 0x56C9, 0x16BF, 0x56CA, - 0x16BE, 0x56CB, 0x337A, 0x56CC, 0x16F6, 0x56CD, 0x3481, 0x56D1, 0x171F, - 0x56D3, 0x3480, 0x56D4, 0x34C9, 0x56D7, 0x1775, 0x56DA, 0x032D, 0x56DB, - 0x032C, 0x56DD, 0x03AC, 0x56DE, 0x03AB, 0x56DF, 0x17D0, 0x56E0, 0x03AA, - 0x56E1, 0x17CF, 0x56E4, 0x0463, 0x56E5, 0x1850, 0x56E7, 0x184F, 0x56EA, - 0x0461, 0x56EB, 0x0464, 0x56EE, 0x184E, 0x56F0, 0x0462, 0x56F7, 0x1933, - 0x56F9, 0x1934, 0x56FA, 0x0578, 0x56FF, 0x06E6, 0x5701, 0x1C5B, 0x5702, - 0x1C5C, 0x5703, 0x0879, 0x5704, 0x087A, 0x5707, 0x1E74, 0x5708, 0x0A36, - 0x5709, 0x0A38, 0x570A, 0x1E73, 0x570B, 0x0A37, 0x570C, 0x20D9, 0x570D, - 0x0C16, 0x5712, 0x0DE4, 0x5713, 0x0DE5, 0x5714, 0x2391, 0x5716, 0x0FA1, - 0x5718, 0x0FA0, 0x571A, 0x289F, 0x571B, 0x2B13, 0x571C, 0x2B12, 0x571E, - 0x3505, 0x571F, 0x027A, 0x5720, 0x1784, 0x5722, 0x179A, 0x5723, 0x179B, - 0x5728, 0x03AF, 0x5729, 0x03B3, 0x572A, 0x17D2, 0x572C, 0x03B1, 0x572D, - 0x03B0, 0x572E, 0x17D1, 0x572F, 0x03B2, 0x5730, 0x03AE, 0x5733, 0x03AD, - 0x5734, 0x17D3, 0x573B, 0x046E, 0x573E, 0x046B, 0x5740, 0x0467, 0x5741, - 0x1851, 0x5745, 0x1852, 0x5747, 0x0469, 0x5749, 0x1854, 0x574A, 0x0465, - 0x574B, 0x1855, 0x574C, 0x1853, 0x574D, 0x0468, 0x574E, 0x046A, 0x574F, - 0x046D, 0x5750, 0x046C, 0x5751, 0x0466, 0x5752, 0x1856, 0x5761, 0x057D, - 0x5762, 0x1941, 0x5764, 0x057F, 0x5766, 0x057E, 0x5768, 0x1942, 0x5769, - 0x057C, 0x576A, 0x057B, 0x576B, 0x1938, 0x576D, 0x1937, 0x576F, 0x1935, - 0x5770, 0x193A, 0x5771, 0x1939, 0x5772, 0x1936, 0x5773, 0x193F, 0x5774, - 0x1940, 0x5775, 0x193D, 0x5776, 0x193B, 0x5777, 0x057A, 0x577B, 0x193E, - 0x577C, 0x0580, 0x577D, 0x1943, 0x5780, 0x193C, 0x5782, 0x06E7, 0x5783, - 0x0579, 0x578B, 0x06E8, 0x578C, 0x1A90, 0x578F, 0x1A96, 0x5793, 0x06EE, - 0x5794, 0x1A94, 0x5795, 0x1A9A, 0x5797, 0x1A91, 0x5798, 0x1A95, 0x5799, - 0x1A97, 0x579A, 0x1A99, 0x579B, 0x1A93, 0x579D, 0x1A92, 0x579E, 0x1A8D, - 0x579F, 0x1A8E, 0x57A0, 0x06E9, 0x57A2, 0x06EB, 0x57A3, 0x06EA, 0x57A4, - 0x1A8F, 0x57A5, 0x1A98, 0x57AE, 0x06ED, 0x57B5, 0x1A8C, 0x57B6, 0x1C66, - 0x57B8, 0x1C65, 0x57B9, 0x1C6A, 0x57BA, 0x1C61, 0x57BC, 0x1C64, 0x57BD, - 0x1C63, 0x57BF, 0x1C67, 0x57C1, 0x1C6B, 0x57C2, 0x087B, 0x57C3, 0x087E, - 0x57C6, 0x1C62, 0x57C7, 0x1C68, 0x57CB, 0x087D, 0x57CC, 0x1C5D, 0x57CE, - 0x06EC, 0x57CF, 0x1E82, 0x57D0, 0x1C69, 0x57D2, 0x1C60, 0x57D4, 0x087C, - 0x57D5, 0x1C5F, 0x57DC, 0x1E79, 0x57DF, 0x0A39, 0x57E0, 0x0A3D, 0x57E1, - 0x1E89, 0x57E2, 0x1E77, 0x57E3, 0x1E85, 0x57E4, 0x0A3E, 0x57E5, 0x1E87, - 0x57E7, 0x1E8D, 0x57E9, 0x1E91, 0x57EC, 0x1E88, 0x57ED, 0x1E7C, 0x57EE, - 0x1E84, 0x57F0, 0x1E92, 0x57F1, 0x1E90, 0x57F2, 0x1E86, 0x57F3, 0x1E81, - 0x57F4, 0x1E7A, 0x57F5, 0x20E1, 0x57F6, 0x1E78, 0x57F7, 0x0A42, 0x57F8, - 0x1E7F, 0x57F9, 0x0A43, 0x57FA, 0x0A3F, 0x57FB, 0x1E75, 0x57FC, 0x1E8B, - 0x57FD, 0x1E7D, 0x5800, 0x1E7B, 0x5801, 0x1E8E, 0x5802, 0x0A40, 0x5804, - 0x1E94, 0x5805, 0x0A3A, 0x5806, 0x0A3C, 0x5807, 0x1E83, 0x5808, 0x1E7E, - 0x5809, 0x087F, 0x580A, 0x0A3B, 0x580B, 0x1E80, 0x580C, 0x1E8F, 0x580D, - 0x1E93, 0x580E, 0x1E8A, 0x5810, 0x1E8C, 0x5814, 0x1E76, 0x5819, 0x20DC, - 0x581B, 0x20E5, 0x581C, 0x20E4, 0x581D, 0x0C1E, 0x581E, 0x20DD, 0x5820, - 0x0C1F, 0x5821, 0x0C1D, 0x5823, 0x20DF, 0x5824, 0x0C1A, 0x5825, 0x20E3, - 0x5827, 0x20DE, 0x5828, 0x20E0, 0x5829, 0x20DA, 0x582A, 0x0C18, 0x582C, - 0x20ED, 0x582D, 0x20EC, 0x582E, 0x20E9, 0x582F, 0x0C17, 0x5830, 0x0C1B, - 0x5831, 0x0C1C, 0x5832, 0x1C5E, 0x5833, 0x20E6, 0x5834, 0x0C19, 0x5835, - 0x0A41, 0x5836, 0x20E8, 0x5837, 0x20DB, 0x5838, 0x20EB, 0x5839, 0x20EA, - 0x583B, 0x20EE, 0x583D, 0x239F, 0x583F, 0x20E7, 0x5848, 0x20E2, 0x5849, - 0x2397, 0x584A, 0x0DEF, 0x584B, 0x0DF2, 0x584C, 0x0DED, 0x584D, 0x2396, - 0x584E, 0x239A, 0x584F, 0x2395, 0x5851, 0x0DE7, 0x5852, 0x0DF1, 0x5853, - 0x2392, 0x5854, 0x0DEB, 0x5855, 0x2399, 0x5857, 0x0DE9, 0x5858, 0x0DE8, - 0x5859, 0x239C, 0x585A, 0x0DEA, 0x585B, 0x239E, 0x585D, 0x239B, 0x585E, - 0x0DE6, 0x5862, 0x0DF0, 0x5863, 0x23A0, 0x5864, 0x2394, 0x5865, 0x239D, - 0x5868, 0x2393, 0x586B, 0x0DEC, 0x586D, 0x0DEE, 0x586F, 0x2398, 0x5871, - 0x23A1, 0x5874, 0x263F, 0x5875, 0x0FA2, 0x5876, 0x2645, 0x5879, 0x0FA7, - 0x587A, 0x2641, 0x587B, 0x2648, 0x587C, 0x2639, 0x587D, 0x0FA9, 0x587E, - 0x0FA3, 0x587F, 0x263E, 0x5880, 0x1121, 0x5881, 0x263D, 0x5882, 0x2646, - 0x5883, 0x0FA4, 0x5885, 0x0FA8, 0x5886, 0x263C, 0x5887, 0x2642, 0x5888, - 0x2647, 0x5889, 0x2638, 0x588A, 0x0FA6, 0x588B, 0x2640, 0x588E, 0x2644, - 0x588F, 0x264A, 0x5890, 0x263A, 0x5891, 0x2643, 0x5893, 0x0FA5, 0x5894, - 0x2649, 0x5898, 0x263B, 0x589C, 0x1125, 0x589D, 0x28A1, 0x589E, 0x1123, - 0x589F, 0x1122, 0x58A0, 0x28A3, 0x58A1, 0x28A8, 0x58A3, 0x28A4, 0x58A5, - 0x28A7, 0x58A6, 0x1128, 0x58A8, 0x1288, 0x58A9, 0x1127, 0x58AB, 0x28A0, - 0x58AC, 0x28A6, 0x58AE, 0x1126, 0x58AF, 0x28A5, 0x58B1, 0x28A2, 0x58B3, - 0x1124, 0x58BA, 0x2B18, 0x58BB, 0x36EB, 0x58BC, 0x2B1A, 0x58BD, 0x2B15, - 0x58BE, 0x12A4, 0x58BF, 0x2B17, 0x58C1, 0x12A3, 0x58C2, 0x2B19, 0x58C5, - 0x12A6, 0x58C6, 0x2B1B, 0x58C7, 0x12A5, 0x58C8, 0x2B14, 0x58C9, 0x2B16, - 0x58CE, 0x13C2, 0x58CF, 0x2D4D, 0x58D1, 0x13C1, 0x58D2, 0x2D4E, 0x58D3, - 0x13C0, 0x58D4, 0x2D4C, 0x58D5, 0x13BF, 0x58D6, 0x2D4B, 0x58D8, 0x14CD, - 0x58D9, 0x14CC, 0x58DA, 0x3085, 0x58DB, 0x3087, 0x58DD, 0x3086, 0x58DE, - 0x1578, 0x58DF, 0x1579, 0x58E2, 0x157A, 0x58E3, 0x31CB, 0x58E4, 0x160E, - 0x58E7, 0x3411, 0x58E8, 0x3410, 0x58E9, 0x1720, 0x58EB, 0x027B, 0x58EC, - 0x02C1, 0x58EF, 0x046F, 0x58F4, 0x1A9B, 0x58F9, 0x0C20, 0x58FA, 0x0C21, - 0x58FC, 0x23A2, 0x58FD, 0x0FAA, 0x58FE, 0x264B, 0x58FF, 0x28A9, 0x5902, - 0x0224, 0x5903, 0x1785, 0x5906, 0x1857, 0x590A, 0x0224, 0x590C, 0x1944, - 0x590D, 0x1A9C, 0x590E, 0x1C6C, 0x590F, 0x0880, 0x5912, 0x3088, 0x5914, - 0x166D, 0x5915, 0x027C, 0x5916, 0x032E, 0x5917, 0x179C, 0x5919, 0x03B4, - 0x591A, 0x03B5, 0x591C, 0x0581, 0x5920, 0x0A44, 0x5922, 0x0FAC, 0x5924, - 0x0FAD, 0x5925, 0x0FAB, 0x5927, 0x027D, 0x5929, 0x02C2, 0x592A, 0x02C4, - 0x592B, 0x02C3, 0x592C, 0x1786, 0x592D, 0x02C5, 0x592E, 0x032F, 0x592F, - 0x179D, 0x5931, 0x0330, 0x5937, 0x03B6, 0x5938, 0x03B7, 0x593C, 0x17D4, - 0x593E, 0x0470, 0x5940, 0x1858, 0x5944, 0x0585, 0x5945, 0x1945, 0x5947, - 0x0583, 0x5948, 0x0584, 0x5949, 0x0582, 0x594A, 0x1C6D, 0x594E, 0x06F2, - 0x594F, 0x06F1, 0x5950, 0x06F3, 0x5951, 0x06F0, 0x5953, 0x1A9D, 0x5954, - 0x0586, 0x5955, 0x06EF, 0x5957, 0x0881, 0x5958, 0x0882, 0x595A, 0x0883, - 0x595C, 0x1E95, 0x5960, 0x0C22, 0x5961, 0x20EF, 0x5962, 0x0A45, 0x5967, - 0x0DF3, 0x5969, 0x0FAF, 0x596A, 0x0FAE, 0x596B, 0x264C, 0x596D, 0x1129, - 0x596E, 0x12A7, 0x5970, 0x2F17, 0x5971, 0x337B, 0x5972, 0x3412, 0x5973, - 0x027E, 0x5974, 0x0331, 0x5976, 0x0332, 0x5977, 0x17DA, 0x5978, 0x03B9, - 0x5979, 0x03BC, 0x597B, 0x17D8, 0x597C, 0x17D6, 0x597D, 0x03BB, 0x597E, - 0x17D9, 0x597F, 0x17DB, 0x5980, 0x17D5, 0x5981, 0x03BE, 0x5982, 0x03BD, - 0x5983, 0x03BA, 0x5984, 0x03B8, 0x5985, 0x17D7, 0x598A, 0x047B, 0x598D, - 0x0478, 0x598E, 0x185D, 0x598F, 0x1860, 0x5990, 0x185F, 0x5992, 0x0472, - 0x5993, 0x047A, 0x5996, 0x0477, 0x5997, 0x185C, 0x5998, 0x185A, 0x5999, - 0x0476, 0x599D, 0x0471, 0x599E, 0x0474, 0x59A0, 0x185B, 0x59A1, 0x1862, - 0x59A2, 0x185E, 0x59A3, 0x0475, 0x59A4, 0x0479, 0x59A5, 0x047C, 0x59A6, - 0x1859, 0x59A7, 0x1861, 0x59A8, 0x0473, 0x59AE, 0x058B, 0x59AF, 0x0593, - 0x59B1, 0x1951, 0x59B2, 0x194A, 0x59B3, 0x0594, 0x59B4, 0x1955, 0x59B5, - 0x1946, 0x59B6, 0x194D, 0x59B9, 0x058A, 0x59BA, 0x1947, 0x59BB, 0x0588, - 0x59BC, 0x194E, 0x59BD, 0x1952, 0x59BE, 0x0587, 0x59C0, 0x1953, 0x59C1, - 0x194C, 0x59C3, 0x194F, 0x59C5, 0x0596, 0x59C6, 0x058D, 0x59C7, 0x1956, - 0x59C8, 0x1954, 0x59CA, 0x0592, 0x59CB, 0x0590, 0x59CC, 0x194B, 0x59CD, - 0x058F, 0x59CE, 0x1949, 0x59CF, 0x1948, 0x59D0, 0x058E, 0x59D1, 0x058C, - 0x59D2, 0x0595, 0x59D3, 0x0591, 0x59D4, 0x0589, 0x59D6, 0x1950, 0x59D8, - 0x06F5, 0x59DA, 0x06FC, 0x59DB, 0x1AAB, 0x59DC, 0x06F4, 0x59DD, 0x1AA3, - 0x59DE, 0x1A9F, 0x59E0, 0x1AAF, 0x59E1, 0x1A9E, 0x59E3, 0x06F7, 0x59E4, - 0x1AA8, 0x59E5, 0x06FA, 0x59E6, 0x06FD, 0x59E8, 0x06F8, 0x59E9, 0x1AAC, - 0x59EA, 0x06FB, 0x59EC, 0x088A, 0x59ED, 0x1AB2, 0x59EE, 0x1AA0, 0x59F1, - 0x1AA2, 0x59F2, 0x1AA9, 0x59F3, 0x1AAD, 0x59F4, 0x1AB1, 0x59F5, 0x1AAE, - 0x59F6, 0x1AA7, 0x59F7, 0x1AAA, 0x59FA, 0x1AA4, 0x59FB, 0x06FF, 0x59FC, - 0x1AA6, 0x59FD, 0x1AA5, 0x59FE, 0x1AB0, 0x59FF, 0x06F6, 0x5A00, 0x1AA1, - 0x5A01, 0x06FE, 0x5A03, 0x06F9, 0x5A09, 0x0890, 0x5A0A, 0x1C75, 0x5A0C, - 0x088F, 0x5A0F, 0x1C73, 0x5A11, 0x0884, 0x5A13, 0x0889, 0x5A15, 0x1C72, - 0x5A16, 0x1C6F, 0x5A17, 0x1C74, 0x5A18, 0x0885, 0x5A19, 0x1C6E, 0x5A1B, - 0x0888, 0x5A1C, 0x0886, 0x5A1E, 0x1C76, 0x5A1F, 0x0887, 0x5A20, 0x088B, - 0x5A23, 0x088C, 0x5A25, 0x088E, 0x5A29, 0x088D, 0x5A2D, 0x1C70, 0x5A2E, - 0x1C71, 0x5A33, 0x1C77, 0x5A35, 0x1E9C, 0x5A36, 0x0A46, 0x5A37, 0x20FD, - 0x5A38, 0x1E9B, 0x5A39, 0x1EAE, 0x5A3C, 0x0A4C, 0x5A3E, 0x1EAC, 0x5A40, - 0x0A4B, 0x5A41, 0x0A47, 0x5A42, 0x1EB5, 0x5A43, 0x1EA5, 0x5A44, 0x1EA8, - 0x5A46, 0x0A4F, 0x5A47, 0x1EB2, 0x5A48, 0x1EAA, 0x5A49, 0x0A48, 0x5A4A, - 0x0A50, 0x5A4C, 0x1EAF, 0x5A4D, 0x1EAD, 0x5A50, 0x1E9E, 0x5A51, 0x1EB3, - 0x5A52, 0x1EA7, 0x5A53, 0x1EA2, 0x5A55, 0x1E98, 0x5A56, 0x1EB4, 0x5A57, - 0x1EA4, 0x5A58, 0x1E97, 0x5A5A, 0x0A4E, 0x5A5B, 0x1EA9, 0x5A5C, 0x1EB6, - 0x5A5D, 0x1EA6, 0x5A5E, 0x1E9A, 0x5A5F, 0x1E9F, 0x5A60, 0x1E96, 0x5A62, - 0x0A4D, 0x5A64, 0x1EA3, 0x5A65, 0x1EA0, 0x5A66, 0x0A49, 0x5A67, 0x1E99, - 0x5A69, 0x1EB1, 0x5A6A, 0x0A4A, 0x5A6C, 0x1EA1, 0x5A6D, 0x1E9D, 0x5A70, - 0x1EB0, 0x5A77, 0x0C23, 0x5A78, 0x20F6, 0x5A7A, 0x20F3, 0x5A7B, 0x2104, - 0x5A7C, 0x20F8, 0x5A7D, 0x2105, 0x5A7F, 0x0C25, 0x5A83, 0x2101, 0x5A84, - 0x20FE, 0x5A8A, 0x20FF, 0x5A8B, 0x2102, 0x5A8C, 0x2106, 0x5A8E, 0x1EAB, - 0x5A8F, 0x2108, 0x5A90, 0x23B6, 0x5A92, 0x0C26, 0x5A93, 0x2109, 0x5A94, - 0x20F1, 0x5A95, 0x20FB, 0x5A97, 0x2100, 0x5A9A, 0x0C24, 0x5A9B, 0x0C27, - 0x5A9C, 0x2107, 0x5A9D, 0x210A, 0x5A9E, 0x20F5, 0x5A9F, 0x20F2, 0x5AA2, - 0x20F4, 0x5AA5, 0x20F9, 0x5AA6, 0x20F7, 0x5AA7, 0x0C28, 0x5AA9, 0x2103, - 0x5AAC, 0x20FA, 0x5AAE, 0x20FC, 0x5AAF, 0x20F0, 0x5AB0, 0x23AA, 0x5AB1, - 0x23A8, 0x5AB2, 0x0DFC, 0x5AB3, 0x0DFA, 0x5AB4, 0x23B2, 0x5AB5, 0x23A9, - 0x5AB6, 0x23B3, 0x5AB7, 0x23AF, 0x5AB8, 0x23A7, 0x5AB9, 0x23B5, 0x5ABA, - 0x23A6, 0x5ABB, 0x23AD, 0x5ABC, 0x0DF9, 0x5ABD, 0x0DF8, 0x5ABE, 0x0DF7, - 0x5ABF, 0x23AB, 0x5AC0, 0x23B0, 0x5AC1, 0x0DF4, 0x5AC2, 0x0DFB, 0x5AC4, - 0x23A4, 0x5AC6, 0x23AE, 0x5AC7, 0x23A3, 0x5AC8, 0x23AC, 0x5AC9, 0x0DF5, - 0x5ACA, 0x23B1, 0x5ACB, 0x23A5, 0x5ACC, 0x0DF6, 0x5ACD, 0x23B4, 0x5AD5, - 0x2650, 0x5AD6, 0x0FB4, 0x5AD7, 0x0FB3, 0x5AD8, 0x0FB5, 0x5AD9, 0x265C, - 0x5ADA, 0x2652, 0x5ADB, 0x2658, 0x5ADC, 0x264D, 0x5ADD, 0x265B, 0x5ADE, - 0x265A, 0x5ADF, 0x265E, 0x5AE0, 0x2657, 0x5AE1, 0x0FB0, 0x5AE2, 0x2656, - 0x5AE3, 0x0FB6, 0x5AE5, 0x264F, 0x5AE6, 0x0FB1, 0x5AE8, 0x265D, 0x5AE9, - 0x0FB2, 0x5AEA, 0x2651, 0x5AEB, 0x2654, 0x5AEC, 0x2659, 0x5AED, 0x2653, - 0x5AEE, 0x264E, 0x5AF3, 0x2655, 0x5AF4, 0x28AB, 0x5AF5, 0x112D, 0x5AF6, - 0x28AE, 0x5AF7, 0x28AD, 0x5AF8, 0x28B0, 0x5AF9, 0x28B2, 0x5AFA, 0x36EE, - 0x5AFB, 0x112B, 0x5AFD, 0x28AC, 0x5AFF, 0x28AA, 0x5B01, 0x28B3, 0x5B02, - 0x28B1, 0x5B03, 0x28AF, 0x5B05, 0x28B5, 0x5B07, 0x28B4, 0x5B08, 0x112F, - 0x5B09, 0x112A, 0x5B0B, 0x112C, 0x5B0C, 0x112E, 0x5B0F, 0x28B6, 0x5B10, - 0x2B22, 0x5B13, 0x2B21, 0x5B14, 0x2B20, 0x5B16, 0x2B23, 0x5B17, 0x2B1C, - 0x5B19, 0x2B1D, 0x5B1A, 0x2B25, 0x5B1B, 0x2B1E, 0x5B1D, 0x12A8, 0x5B1E, - 0x2B27, 0x5B20, 0x2B26, 0x5B21, 0x2B1F, 0x5B23, 0x2D52, 0x5B24, 0x13C5, - 0x5B25, 0x2D50, 0x5B26, 0x2D55, 0x5B27, 0x2D54, 0x5B28, 0x2B24, 0x5B2A, - 0x13C4, 0x5B2C, 0x2D53, 0x5B2D, 0x2D4F, 0x5B2E, 0x2D57, 0x5B2F, 0x2D56, - 0x5B30, 0x13C3, 0x5B32, 0x2D51, 0x5B34, 0x12A9, 0x5B38, 0x14CE, 0x5B3C, - 0x2F18, 0x5B3D, 0x3089, 0x5B3E, 0x308A, 0x5B3F, 0x308B, 0x5B40, 0x160F, - 0x5B43, 0x1610, 0x5B45, 0x31CC, 0x5B47, 0x32CD, 0x5B48, 0x32CC, 0x5B4B, - 0x337C, 0x5B4C, 0x337D, 0x5B4D, 0x3413, 0x5B4E, 0x3482, 0x5B50, 0x027F, - 0x5B51, 0x0280, 0x5B53, 0x0281, 0x5B54, 0x02C6, 0x5B55, 0x0333, 0x5B56, - 0x17DC, 0x5B57, 0x03BF, 0x5B58, 0x03C0, 0x5B5A, 0x047F, 0x5B5B, 0x0480, - 0x5B5C, 0x047E, 0x5B5D, 0x047D, 0x5B5F, 0x0597, 0x5B62, 0x1957, 0x5B63, - 0x0599, 0x5B64, 0x0598, 0x5B65, 0x1958, 0x5B69, 0x0700, 0x5B6B, 0x0891, - 0x5B6C, 0x1C78, 0x5B6E, 0x1EB8, 0x5B70, 0x0A51, 0x5B71, 0x0C2A, 0x5B72, - 0x1EB7, 0x5B73, 0x0C29, 0x5B75, 0x0FB7, 0x5B77, 0x265F, 0x5B78, 0x12AA, - 0x5B7A, 0x13C6, 0x5B7B, 0x2D58, 0x5B7D, 0x1611, 0x5B7F, 0x16C0, 0x5B80, - 0x0225, 0x5B81, 0x179E, 0x5B83, 0x0334, 0x5B84, 0x179F, 0x5B85, 0x03C3, - 0x5B87, 0x03C1, 0x5B88, 0x03C2, 0x5B89, 0x03C4, 0x5B8B, 0x0482, 0x5B8C, - 0x0481, 0x5B8E, 0x1863, 0x5B8F, 0x0483, 0x5B92, 0x1864, 0x5B93, 0x1959, - 0x5B95, 0x195A, 0x5B97, 0x059A, 0x5B98, 0x059C, 0x5B99, 0x059E, 0x5B9A, - 0x059B, 0x5B9B, 0x059F, 0x5B9C, 0x059D, 0x5BA2, 0x0704, 0x5BA3, 0x0701, - 0x5BA4, 0x0703, 0x5BA5, 0x0705, 0x5BA6, 0x0702, 0x5BA7, 0x1C79, 0x5BA8, - 0x1AB3, 0x5BAC, 0x1C7B, 0x5BAD, 0x1C7A, 0x5BAE, 0x0897, 0x5BB0, 0x0893, - 0x5BB3, 0x0894, 0x5BB4, 0x0896, 0x5BB5, 0x0898, 0x5BB6, 0x0895, 0x5BB8, - 0x089A, 0x5BB9, 0x0899, 0x5BBF, 0x0A56, 0x5BC0, 0x1EBA, 0x5BC1, 0x1EB9, - 0x5BC2, 0x0A55, 0x5BC4, 0x0A54, 0x5BC5, 0x0A53, 0x5BC6, 0x0A57, 0x5BC7, - 0x0A52, 0x5BCA, 0x2110, 0x5BCB, 0x210D, 0x5BCC, 0x0C2C, 0x5BCD, 0x210C, - 0x5BCE, 0x2111, 0x5BD0, 0x0C2E, 0x5BD1, 0x210F, 0x5BD2, 0x0C2B, 0x5BD3, - 0x0C2D, 0x5BD4, 0x210E, 0x5BD6, 0x23B7, 0x5BD8, 0x23B8, 0x5BD9, 0x23B9, - 0x5BDE, 0x0FB8, 0x5BDF, 0x0FC0, 0x5BE0, 0x2660, 0x5BE1, 0x0FBA, 0x5BE2, - 0x0FBE, 0x5BE3, 0x2661, 0x5BE4, 0x0FBF, 0x5BE5, 0x0FBB, 0x5BE6, 0x0FBC, - 0x5BE7, 0x0FB9, 0x5BE8, 0x0FBD, 0x5BE9, 0x1132, 0x5BEA, 0x210B, 0x5BEB, - 0x1133, 0x5BEC, 0x1131, 0x5BEE, 0x1130, 0x5BEF, 0x2B28, 0x5BF0, 0x12AB, - 0x5BF1, 0x2D59, 0x5BF2, 0x2D5A, 0x5BF5, 0x157B, 0x5BF6, 0x1612, 0x5BF8, - 0x0282, 0x5BFA, 0x03C5, 0x5C01, 0x0706, 0x5C03, 0x1C7C, 0x5C04, 0x089B, - 0x5C07, 0x0A5A, 0x5C08, 0x0A59, 0x5C09, 0x0A58, 0x5C0A, 0x0C2F, 0x5C0B, - 0x0C30, 0x5C0C, 0x2112, 0x5C0D, 0x0FC1, 0x5C0E, 0x12AC, 0x5C0F, 0x0283, - 0x5C10, 0x1787, 0x5C11, 0x02C7, 0x5C12, 0x17A0, 0x5C15, 0x17DD, 0x5C16, - 0x03C6, 0x5C1A, 0x05A0, 0x5C1F, 0x23BA, 0x5C22, 0x0284, 0x5C24, 0x02C8, - 0x5C25, 0x17DE, 0x5C28, 0x1865, 0x5C2A, 0x1866, 0x5C2C, 0x0484, 0x5C30, - 0x2113, 0x5C31, 0x0C31, 0x5C33, 0x23BB, 0x5C37, 0x13C7, 0x5C38, 0x0285, - 0x5C39, 0x0299, 0x5C3A, 0x02C9, 0x5C3B, 0x17A1, 0x5C3C, 0x0335, 0x5C3E, - 0x0488, 0x5C3F, 0x0487, 0x5C40, 0x0485, 0x5C41, 0x0486, 0x5C44, 0x195B, - 0x5C45, 0x05A2, 0x5C46, 0x05A3, 0x5C47, 0x195C, 0x5C48, 0x05A1, 0x5C4B, - 0x070A, 0x5C4C, 0x1AB4, 0x5C4D, 0x0709, 0x5C4E, 0x0707, 0x5C4F, 0x0708, - 0x5C50, 0x089E, 0x5C51, 0x089C, 0x5C54, 0x1C7E, 0x5C55, 0x089D, 0x5C56, - 0x1C7D, 0x5C58, 0x0892, 0x5C59, 0x1EBB, 0x5C5C, 0x0A5C, 0x5C5D, 0x0A5D, - 0x5C60, 0x0A5B, 0x5C62, 0x0FC2, 0x5C63, 0x2662, 0x5C64, 0x1134, 0x5C65, - 0x1135, 0x5C67, 0x28B7, 0x5C68, 0x13C8, 0x5C69, 0x2F19, 0x5C6A, 0x2F1A, - 0x5C6C, 0x166E, 0x5C6D, 0x3483, 0x5C6E, 0x1776, 0x5C6F, 0x02CA, 0x5C71, - 0x0286, 0x5C73, 0x17A3, 0x5C74, 0x17A2, 0x5C79, 0x03C7, 0x5C7A, 0x17E0, - 0x5C7B, 0x17E1, 0x5C7C, 0x17DF, 0x5C7E, 0x17E2, 0x5C86, 0x186E, 0x5C88, - 0x1869, 0x5C89, 0x186B, 0x5C8A, 0x186D, 0x5C8B, 0x186A, 0x5C8C, 0x048C, - 0x5C8D, 0x1867, 0x5C8F, 0x1868, 0x5C90, 0x0489, 0x5C91, 0x048A, 0x5C92, - 0x186C, 0x5C93, 0x186F, 0x5C94, 0x048B, 0x5C95, 0x1870, 0x5C9D, 0x196A, - 0x5C9F, 0x1964, 0x5CA0, 0x195F, 0x5CA1, 0x05A5, 0x5CA2, 0x1967, 0x5CA3, - 0x1965, 0x5CA4, 0x195E, 0x5CA5, 0x196B, 0x5CA6, 0x196E, 0x5CA7, 0x1969, - 0x5CA8, 0x1962, 0x5CA9, 0x05A7, 0x5CAA, 0x1968, 0x5CAB, 0x05A8, 0x5CAC, - 0x1963, 0x5CAD, 0x1966, 0x5CAE, 0x195D, 0x5CAF, 0x1961, 0x5CB0, 0x196D, - 0x5CB1, 0x05A9, 0x5CB3, 0x05AA, 0x5CB5, 0x1960, 0x5CB6, 0x196C, 0x5CB7, - 0x05A4, 0x5CB8, 0x05A6, 0x5CC6, 0x1AC5, 0x5CC7, 0x1ABE, 0x5CC8, 0x1AC4, - 0x5CC9, 0x1ABD, 0x5CCA, 0x1ABF, 0x5CCB, 0x1AB9, 0x5CCC, 0x1AB7, 0x5CCE, - 0x1AC6, 0x5CCF, 0x1AC3, 0x5CD0, 0x1AB5, 0x5CD2, 0x070C, 0x5CD3, 0x1AC1, - 0x5CD4, 0x1AC2, 0x5CD6, 0x1AC0, 0x5CD7, 0x1AB8, 0x5CD8, 0x1AB6, 0x5CD9, - 0x070B, 0x5CDA, 0x1ABC, 0x5CDB, 0x1ABA, 0x5CDE, 0x1ABB, 0x5CDF, 0x1AC7, - 0x5CE8, 0x08A3, 0x5CEA, 0x08A2, 0x5CEC, 0x1C7F, 0x5CED, 0x089F, 0x5CEE, - 0x1C81, 0x5CF0, 0x08A4, 0x5CF1, 0x1C82, 0x5CF4, 0x08A7, 0x5CF6, 0x08A5, - 0x5CF7, 0x1C83, 0x5CF8, 0x1AC8, 0x5CF9, 0x1C85, 0x5CFB, 0x08A1, 0x5CFD, - 0x08A0, 0x5CFF, 0x1C80, 0x5D00, 0x1C84, 0x5D01, 0x08A6, 0x5D06, 0x0A5F, - 0x5D07, 0x0A5E, 0x5D0B, 0x1EBD, 0x5D0C, 0x1EC1, 0x5D0D, 0x1EC3, 0x5D0E, - 0x0A60, 0x5D0F, 0x1EC6, 0x5D11, 0x0A64, 0x5D12, 0x1EC8, 0x5D14, 0x0A66, - 0x5D16, 0x0A62, 0x5D17, 0x0A6A, 0x5D19, 0x0A67, 0x5D1A, 0x1EBF, 0x5D1B, - 0x0A61, 0x5D1D, 0x1EBE, 0x5D1E, 0x1EBC, 0x5D1F, 0x1ECA, 0x5D20, 0x1EC0, - 0x5D22, 0x0A63, 0x5D23, 0x1EC9, 0x5D24, 0x0A68, 0x5D25, 0x1EC5, 0x5D26, - 0x1EC4, 0x5D27, 0x0A69, 0x5D28, 0x1EC2, 0x5D29, 0x0A65, 0x5D2E, 0x1ECB, - 0x5D30, 0x1EC7, 0x5D31, 0x2122, 0x5D32, 0x2129, 0x5D33, 0x211E, 0x5D34, - 0x0C34, 0x5D35, 0x211A, 0x5D36, 0x212A, 0x5D37, 0x2114, 0x5D38, 0x2127, - 0x5D39, 0x2125, 0x5D3A, 0x211F, 0x5D3C, 0x2128, 0x5D3D, 0x2121, 0x5D3F, - 0x2119, 0x5D40, 0x212B, 0x5D41, 0x2117, 0x5D42, 0x2124, 0x5D43, 0x2115, - 0x5D45, 0x212C, 0x5D47, 0x0C35, 0x5D49, 0x2126, 0x5D4A, 0x23BE, 0x5D4B, - 0x2118, 0x5D4C, 0x0C32, 0x5D4E, 0x211C, 0x5D50, 0x0C33, 0x5D51, 0x211B, - 0x5D52, 0x2120, 0x5D55, 0x211D, 0x5D59, 0x2123, 0x5D5E, 0x23C2, 0x5D62, - 0x23C5, 0x5D63, 0x23BD, 0x5D65, 0x23BF, 0x5D67, 0x23C4, 0x5D68, 0x23C3, - 0x5D69, 0x0DFD, 0x5D6B, 0x2116, 0x5D6C, 0x23C1, 0x5D6F, 0x0DFE, 0x5D71, - 0x23BC, 0x5D72, 0x23C0, 0x5D77, 0x2669, 0x5D79, 0x2670, 0x5D7A, 0x2667, - 0x5D7C, 0x266E, 0x5D7D, 0x2665, 0x5D7E, 0x266D, 0x5D7F, 0x2671, 0x5D80, - 0x2664, 0x5D81, 0x2668, 0x5D82, 0x2663, 0x5D84, 0x0FC3, 0x5D86, 0x2666, - 0x5D87, 0x0FC4, 0x5D88, 0x266C, 0x5D89, 0x266B, 0x5D8A, 0x266A, 0x5D8D, - 0x266F, 0x5D92, 0x28BB, 0x5D93, 0x28BD, 0x5D94, 0x1137, 0x5D95, 0x28BE, - 0x5D97, 0x28B9, 0x5D99, 0x28B8, 0x5D9A, 0x28C2, 0x5D9C, 0x28C0, 0x5D9D, - 0x1136, 0x5D9E, 0x28C3, 0x5D9F, 0x28BA, 0x5DA0, 0x28BF, 0x5DA1, 0x28C1, - 0x5DA2, 0x28BC, 0x5DA7, 0x2B2C, 0x5DA8, 0x2B31, 0x5DA9, 0x2B2B, 0x5DAA, - 0x2B30, 0x5DAC, 0x2B29, 0x5DAD, 0x2B33, 0x5DAE, 0x2B2F, 0x5DAF, 0x2B34, - 0x5DB0, 0x2B2E, 0x5DB1, 0x2B2A, 0x5DB2, 0x2B32, 0x5DB4, 0x2B35, 0x5DB5, - 0x2B2D, 0x5DB7, 0x2D5B, 0x5DB8, 0x13CC, 0x5DBA, 0x13CA, 0x5DBC, 0x13C9, - 0x5DBD, 0x13CB, 0x5DC0, 0x2F1B, 0x5DC2, 0x3023, 0x5DC3, 0x308C, 0x5DC6, - 0x31CD, 0x5DC7, 0x31CE, 0x5DC9, 0x1613, 0x5DCB, 0x32CE, 0x5DCD, 0x166F, - 0x5DCF, 0x32CF, 0x5DD1, 0x337F, 0x5DD2, 0x16C2, 0x5DD4, 0x16C1, 0x5DD5, - 0x337E, 0x5DD6, 0x16F7, 0x5DD8, 0x3414, 0x5DDB, 0x0226, 0x5DDD, 0x0287, - 0x5DDE, 0x03C8, 0x5DDF, 0x17E3, 0x5DE0, 0x1871, 0x5DE1, 0x051A, 0x5DE2, - 0x0A6B, 0x5DE5, 0x0288, 0x5DE6, 0x0338, 0x5DE7, 0x0337, 0x5DE8, 0x0336, - 0x5DEB, 0x048D, 0x5DEE, 0x08A8, 0x5DF0, 0x23C6, 0x5DF1, 0x0289, 0x5DF2, - 0x028A, 0x5DF3, 0x028B, 0x5DF4, 0x02CB, 0x5DF7, 0x070D, 0x5DF9, 0x1AC9, - 0x5DFD, 0x0C36, 0x5DFE, 0x028C, 0x5DFF, 0x1788, 0x5E02, 0x0339, 0x5E03, - 0x033A, 0x5E04, 0x17A4, 0x5E06, 0x03C9, 0x5E0A, 0x1872, 0x5E0C, 0x048E, - 0x5E0E, 0x1873, 0x5E11, 0x05B0, 0x5E14, 0x1970, 0x5E15, 0x05AE, 0x5E16, - 0x05AD, 0x5E17, 0x196F, 0x5E18, 0x05AB, 0x5E19, 0x1971, 0x5E1A, 0x05AC, - 0x5E1B, 0x05AF, 0x5E1D, 0x070E, 0x5E1F, 0x0710, 0x5E20, 0x1ACD, 0x5E21, - 0x1ACA, 0x5E22, 0x1ACB, 0x5E23, 0x1ACC, 0x5E24, 0x1ACE, 0x5E25, 0x070F, - 0x5E28, 0x1C87, 0x5E29, 0x1C86, 0x5E2B, 0x08AA, 0x5E2D, 0x08A9, 0x5E33, - 0x0A6E, 0x5E34, 0x1ECD, 0x5E36, 0x0A6D, 0x5E37, 0x0A6F, 0x5E38, 0x0A6C, - 0x5E3D, 0x0C38, 0x5E3E, 0x1ECC, 0x5E40, 0x0C39, 0x5E41, 0x212E, 0x5E43, - 0x0C3A, 0x5E44, 0x212D, 0x5E45, 0x0C37, 0x5E4A, 0x23C9, 0x5E4B, 0x23CB, - 0x5E4C, 0x0DFF, 0x5E4D, 0x23CA, 0x5E4E, 0x23C8, 0x5E4F, 0x23C7, 0x5E53, - 0x2674, 0x5E54, 0x0FC9, 0x5E55, 0x0FC7, 0x5E57, 0x0FC8, 0x5E58, 0x2672, - 0x5E59, 0x2673, 0x5E5B, 0x0FC5, 0x5E5C, 0x28C7, 0x5E5D, 0x28C5, 0x5E5F, - 0x1139, 0x5E60, 0x28C6, 0x5E61, 0x113A, 0x5E62, 0x1138, 0x5E63, 0x0FC6, - 0x5E66, 0x2B38, 0x5E67, 0x2B36, 0x5E68, 0x2B37, 0x5E69, 0x28C4, 0x5E6A, - 0x2D5D, 0x5E6B, 0x13CD, 0x5E6C, 0x2D5C, 0x5E6D, 0x2F1C, 0x5E6E, 0x2F1D, - 0x5E6F, 0x2B39, 0x5E70, 0x308D, 0x5E72, 0x028D, 0x5E73, 0x033B, 0x5E74, - 0x03CB, 0x5E75, 0x17E4, 0x5E76, 0x03CA, 0x5E78, 0x05B1, 0x5E79, 0x0E00, - 0x5E7A, 0x0227, 0x5E7B, 0x02CC, 0x5E7C, 0x033C, 0x5E7D, 0x0711, 0x5E7E, - 0x0C3B, 0x5E7F, 0x0228, 0x5E80, 0x17A5, 0x5E82, 0x17A6, 0x5E84, 0x17E5, - 0x5E87, 0x0490, 0x5E88, 0x1877, 0x5E89, 0x1875, 0x5E8A, 0x0491, 0x5E8B, - 0x1874, 0x5E8C, 0x1876, 0x5E8D, 0x1878, 0x5E8F, 0x048F, 0x5E95, 0x05B5, - 0x5E96, 0x05B6, 0x5E97, 0x05B3, 0x5E9A, 0x05B2, 0x5E9B, 0x1AD2, 0x5E9C, - 0x05B4, 0x5EA0, 0x0712, 0x5EA2, 0x1AD1, 0x5EA3, 0x1AD3, 0x5EA4, 0x1AD0, - 0x5EA5, 0x1AD4, 0x5EA6, 0x0713, 0x5EA7, 0x08AD, 0x5EA8, 0x1C88, 0x5EAA, - 0x1C8A, 0x5EAB, 0x08AB, 0x5EAC, 0x1C8B, 0x5EAD, 0x08AC, 0x5EAE, 0x1C89, - 0x5EB0, 0x1ACF, 0x5EB1, 0x1ECE, 0x5EB2, 0x1ED1, 0x5EB3, 0x1ED2, 0x5EB4, - 0x1ECF, 0x5EB5, 0x0A73, 0x5EB6, 0x0A72, 0x5EB7, 0x0A70, 0x5EB8, 0x0A71, - 0x5EB9, 0x1ED0, 0x5EBE, 0x0A74, 0x5EC1, 0x0C3D, 0x5EC2, 0x0C3E, 0x5EC4, - 0x0C3F, 0x5EC5, 0x23CC, 0x5EC6, 0x23CE, 0x5EC7, 0x23D0, 0x5EC8, 0x0E02, - 0x5EC9, 0x0E01, 0x5ECA, 0x0C3C, 0x5ECB, 0x23CF, 0x5ECC, 0x23CD, 0x5ECE, - 0x2678, 0x5ED1, 0x2676, 0x5ED2, 0x267C, 0x5ED3, 0x0FCA, 0x5ED4, 0x267D, - 0x5ED5, 0x267A, 0x5ED6, 0x0FCB, 0x5ED7, 0x2677, 0x5ED8, 0x2675, 0x5ED9, - 0x267B, 0x5EDA, 0x113C, 0x5EDB, 0x28C9, 0x5EDC, 0x2679, 0x5EDD, 0x113E, - 0x5EDE, 0x28CA, 0x5EDF, 0x113D, 0x5EE0, 0x1140, 0x5EE1, 0x28CB, 0x5EE2, - 0x113B, 0x5EE3, 0x113F, 0x5EE5, 0x2B3E, 0x5EE6, 0x2B3C, 0x5EE7, 0x2B3B, - 0x5EE8, 0x2B3D, 0x5EE9, 0x2B3A, 0x5EEC, 0x157D, 0x5EEE, 0x31CF, 0x5EEF, - 0x31D0, 0x5EF1, 0x32D0, 0x5EF2, 0x3380, 0x5EF3, 0x1742, 0x5EF4, 0x0229, - 0x5EF6, 0x05B7, 0x5EF7, 0x0492, 0x5EFA, 0x0714, 0x5EFE, 0x028E, 0x5EFF, - 0x02CD, 0x5F01, 0x033D, 0x5F02, 0x17E6, 0x5F04, 0x0493, 0x5F05, 0x1879, - 0x5F07, 0x1AD5, 0x5F08, 0x0715, 0x5F0A, 0x0FCC, 0x5F0B, 0x028F, 0x5F0F, - 0x03CC, 0x5F12, 0x0E03, 0x5F13, 0x0290, 0x5F14, 0x02CE, 0x5F15, 0x02CF, - 0x5F17, 0x033F, 0x5F18, 0x033E, 0x5F1A, 0x17E7, 0x5F1B, 0x03CD, 0x5F1D, - 0x187A, 0x5F1F, 0x0494, 0x5F22, 0x1973, 0x5F23, 0x1974, 0x5F24, 0x1975, - 0x5F26, 0x05B8, 0x5F27, 0x05B9, 0x5F28, 0x1972, 0x5F29, 0x05BA, 0x5F2D, - 0x0716, 0x5F2E, 0x1AD6, 0x5F30, 0x1C8D, 0x5F31, 0x08AE, 0x5F33, 0x1C8C, - 0x5F35, 0x0A75, 0x5F36, 0x1ED3, 0x5F37, 0x0A76, 0x5F38, 0x1ED4, 0x5F3C, - 0x0C40, 0x5F40, 0x23D1, 0x5F43, 0x267F, 0x5F44, 0x267E, 0x5F46, 0x0FCD, - 0x5F48, 0x1141, 0x5F49, 0x28CC, 0x5F4A, 0x12AD, 0x5F4B, 0x2B3F, 0x5F4C, - 0x13CE, 0x5F4E, 0x16C3, 0x5F4F, 0x3416, 0x5F50, 0x022A, 0x5F54, 0x1976, - 0x5F56, 0x1AD7, 0x5F57, 0x0A77, 0x5F58, 0x212F, 0x5F59, 0x0E04, 0x5F5D, - 0x14CF, 0x5F61, 0x022B, 0x5F62, 0x0496, 0x5F64, 0x0495, 0x5F65, 0x0717, - 0x5F67, 0x1C8E, 0x5F69, 0x0A79, 0x5F6A, 0x0B89, 0x5F6B, 0x0A7A, 0x5F6C, - 0x0A78, 0x5F6D, 0x0C41, 0x5F6F, 0x2680, 0x5F70, 0x0FCE, 0x5F71, 0x1142, - 0x5F73, 0x1777, 0x5F74, 0x17E8, 0x5F76, 0x187C, 0x5F77, 0x0497, 0x5F78, - 0x187B, 0x5F79, 0x0498, 0x5F7C, 0x05BE, 0x5F7D, 0x1979, 0x5F7E, 0x1978, - 0x5F7F, 0x05BD, 0x5F80, 0x05BB, 0x5F81, 0x05BC, 0x5F82, 0x1977, 0x5F85, - 0x0719, 0x5F86, 0x1AD8, 0x5F87, 0x071C, 0x5F88, 0x0718, 0x5F89, 0x071E, - 0x5F8A, 0x071A, 0x5F8B, 0x071B, 0x5F8C, 0x071D, 0x5F90, 0x08B1, 0x5F91, - 0x08B0, 0x5F92, 0x08AF, 0x5F96, 0x1ED6, 0x5F97, 0x0A7B, 0x5F98, 0x0A7E, - 0x5F99, 0x0A7C, 0x5F9B, 0x1ED5, 0x5F9C, 0x0A81, 0x5F9E, 0x0A7D, 0x5F9F, - 0x1ED7, 0x5FA0, 0x0A80, 0x5FA1, 0x0A7F, 0x5FA5, 0x2131, 0x5FA6, 0x2130, - 0x5FA8, 0x0C44, 0x5FA9, 0x0C42, 0x5FAA, 0x0C43, 0x5FAB, 0x2132, 0x5FAC, - 0x0E05, 0x5FAD, 0x23D3, 0x5FAE, 0x0E06, 0x5FAF, 0x23D2, 0x5FB2, 0x28CD, - 0x5FB5, 0x1144, 0x5FB6, 0x2681, 0x5FB7, 0x1143, 0x5FB9, 0x0FCF, 0x5FBB, - 0x2B41, 0x5FBC, 0x2B40, 0x5FBD, 0x13CF, 0x5FBE, 0x2D5E, 0x5FBF, 0x308E, - 0x5FC0, 0x31D1, 0x5FC1, 0x31D2, 0x5FC3, 0x02D0, 0x5FC5, 0x0340, 0x5FC9, - 0x17A7, 0x5FCC, 0x049A, 0x5FCD, 0x049C, 0x5FCF, 0x17EB, 0x5FD0, 0x187F, - 0x5FD1, 0x187E, 0x5FD2, 0x187D, 0x5FD4, 0x17EA, 0x5FD5, 0x17E9, 0x5FD6, - 0x03CF, 0x5FD7, 0x049B, 0x5FD8, 0x0499, 0x5FD9, 0x03CE, 0x5FDD, 0x05BF, - 0x5FDE, 0x197A, 0x5FE0, 0x05C0, 0x5FE1, 0x1884, 0x5FE3, 0x1886, 0x5FE4, - 0x1885, 0x5FE5, 0x197B, 0x5FE8, 0x1881, 0x5FEA, 0x04A0, 0x5FEB, 0x049E, - 0x5FED, 0x1880, 0x5FEE, 0x1882, 0x5FEF, 0x1888, 0x5FF1, 0x049D, 0x5FF3, - 0x1883, 0x5FF4, 0x188C, 0x5FF5, 0x05C2, 0x5FF7, 0x1889, 0x5FF8, 0x049F, - 0x5FFA, 0x1887, 0x5FFB, 0x188A, 0x5FFD, 0x05C1, 0x5FFF, 0x05C3, 0x6000, - 0x188B, 0x6009, 0x198F, 0x600A, 0x1982, 0x600B, 0x1980, 0x600C, 0x198E, - 0x600D, 0x1989, 0x600E, 0x0723, 0x600F, 0x05C4, 0x6010, 0x198A, 0x6011, - 0x198D, 0x6012, 0x071F, 0x6013, 0x198C, 0x6014, 0x05C5, 0x6015, 0x05CA, - 0x6016, 0x05C8, 0x6017, 0x1983, 0x6019, 0x197E, 0x601A, 0x1985, 0x601B, - 0x05CF, 0x601C, 0x1990, 0x601D, 0x0720, 0x601E, 0x1986, 0x6020, 0x0721, - 0x6021, 0x05CB, 0x6022, 0x1988, 0x6024, 0x1AE7, 0x6025, 0x0722, 0x6026, - 0x197D, 0x6027, 0x05CC, 0x6028, 0x0724, 0x6029, 0x05CD, 0x602A, 0x05C9, - 0x602B, 0x05CE, 0x602C, 0x1987, 0x602D, 0x197C, 0x602E, 0x198B, 0x602F, - 0x05C6, 0x6032, 0x197F, 0x6033, 0x1984, 0x6034, 0x1981, 0x6035, 0x05C7, - 0x6037, 0x1AD9, 0x6039, 0x1ADA, 0x6040, 0x1AE4, 0x6041, 0x1C92, 0x6042, - 0x1AE5, 0x6043, 0x072A, 0x6044, 0x1AE8, 0x6045, 0x1ADE, 0x6046, 0x0729, - 0x6047, 0x1AE0, 0x6049, 0x1AE1, 0x604C, 0x1AE3, 0x604D, 0x0725, 0x6050, - 0x08B5, 0x6052, 0x36EC, 0x6053, 0x1ADF, 0x6054, 0x1ADB, 0x6055, 0x08B6, - 0x6058, 0x1AE9, 0x6059, 0x08B2, 0x605A, 0x1C90, 0x605B, 0x1AE2, 0x605D, - 0x1C8F, 0x605E, 0x1ADD, 0x605F, 0x1AE6, 0x6062, 0x0728, 0x6063, 0x08B3, - 0x6064, 0x072E, 0x6065, 0x08B4, 0x6066, 0x1AEA, 0x6067, 0x1C91, 0x6068, - 0x0727, 0x6069, 0x08B8, 0x606A, 0x072D, 0x606B, 0x072C, 0x606C, 0x072B, - 0x606D, 0x08B7, 0x606E, 0x1AEB, 0x606F, 0x08B9, 0x6070, 0x0726, 0x6072, - 0x1ADC, 0x607F, 0x0A82, 0x6080, 0x1C95, 0x6081, 0x1C97, 0x6083, 0x1C99, - 0x6084, 0x08BA, 0x6085, 0x08C0, 0x6086, 0x1EDA, 0x6087, 0x1C9D, 0x6088, - 0x1C94, 0x6089, 0x0A84, 0x608A, 0x1ED8, 0x608C, 0x08BF, 0x608D, 0x08BD, - 0x608E, 0x1C9F, 0x6090, 0x1ED9, 0x6092, 0x1C96, 0x6094, 0x08BE, 0x6095, - 0x1C9A, 0x6096, 0x08C1, 0x6097, 0x1C9C, 0x609A, 0x08BC, 0x609B, 0x1C9B, - 0x609C, 0x1C9E, 0x609D, 0x1C98, 0x609F, 0x08BB, 0x60A0, 0x0A85, 0x60A2, - 0x1C93, 0x60A3, 0x0A83, 0x60A8, 0x0A86, 0x60B0, 0x1EDC, 0x60B1, 0x1EE5, - 0x60B2, 0x0C47, 0x60B4, 0x0A88, 0x60B5, 0x0A8D, 0x60B6, 0x0C48, 0x60B7, - 0x1EE7, 0x60B8, 0x0A94, 0x60B9, 0x2134, 0x60BA, 0x1EDD, 0x60BB, 0x0A8C, - 0x60BC, 0x0A8F, 0x60BD, 0x0A8A, 0x60BE, 0x1EDB, 0x60BF, 0x1EE9, 0x60C0, - 0x1EEC, 0x60C1, 0x2143, 0x60C3, 0x1EEA, 0x60C4, 0x2138, 0x60C5, 0x0A8B, - 0x60C6, 0x0A92, 0x60C7, 0x0A96, 0x60C8, 0x1EE4, 0x60C9, 0x2133, 0x60CA, - 0x1EE8, 0x60CB, 0x0A87, 0x60CC, 0x2135, 0x60CD, 0x1EEB, 0x60CE, 0x2137, - 0x60CF, 0x1EE0, 0x60D1, 0x0C45, 0x60D3, 0x1EDE, 0x60D4, 0x1EDF, 0x60D5, - 0x0A91, 0x60D8, 0x0A90, 0x60D9, 0x1EE2, 0x60DA, 0x0A95, 0x60DB, 0x1EE6, - 0x60DC, 0x0A8E, 0x60DD, 0x1EE3, 0x60DF, 0x0A93, 0x60E0, 0x0C49, 0x60E1, - 0x0C46, 0x60E2, 0x2136, 0x60E4, 0x1EE1, 0x60E6, 0x0A89, 0x60F0, 0x0C4E, - 0x60F1, 0x0C52, 0x60F2, 0x213A, 0x60F3, 0x0E0B, 0x60F4, 0x0C50, 0x60F5, - 0x213E, 0x60F6, 0x0C54, 0x60F7, 0x23D4, 0x60F8, 0x2140, 0x60F9, 0x0E0D, - 0x60FA, 0x0C4C, 0x60FB, 0x0C4F, 0x60FC, 0x2141, 0x60FE, 0x2142, 0x60FF, - 0x2148, 0x6100, 0x0C56, 0x6101, 0x0E0E, 0x6103, 0x2144, 0x6104, 0x2149, - 0x6105, 0x213D, 0x6106, 0x0E18, 0x6108, 0x0E0F, 0x6109, 0x0C55, 0x610A, - 0x213B, 0x610B, 0x214A, 0x610D, 0x0E17, 0x610E, 0x0C53, 0x610F, 0x0E08, - 0x6110, 0x2147, 0x6112, 0x0C57, 0x6113, 0x213F, 0x6114, 0x2139, 0x6115, - 0x0C4D, 0x6116, 0x213C, 0x6118, 0x2145, 0x611A, 0x0E07, 0x611B, 0x0E0C, - 0x611C, 0x0C4A, 0x611D, 0x2146, 0x611F, 0x0E0A, 0x6123, 0x0C4B, 0x6127, - 0x0E16, 0x6128, 0x2683, 0x6129, 0x23DF, 0x612B, 0x23D7, 0x612C, 0x2682, - 0x612E, 0x23DB, 0x612F, 0x23DD, 0x6132, 0x23DA, 0x6134, 0x0E15, 0x6136, - 0x23D9, 0x6137, 0x0E19, 0x613B, 0x2692, 0x613E, 0x0E14, 0x613F, 0x0FD1, - 0x6140, 0x23E0, 0x6141, 0x2684, 0x6144, 0x0E12, 0x6145, 0x23D8, 0x6146, - 0x23DC, 0x6147, 0x0FD0, 0x6148, 0x0E09, 0x6149, 0x23D5, 0x614A, 0x23D6, - 0x614B, 0x0FD2, 0x614C, 0x0E11, 0x614D, 0x0E13, 0x614E, 0x0E10, 0x614F, - 0x23DE, 0x6152, 0x2688, 0x6153, 0x2689, 0x6154, 0x268E, 0x6155, 0x1149, - 0x6156, 0x2695, 0x6158, 0x0FD8, 0x615A, 0x0FD7, 0x615B, 0x2690, 0x615D, - 0x1148, 0x615E, 0x2685, 0x615F, 0x0FD6, 0x6161, 0x2694, 0x6162, 0x0FD4, - 0x6163, 0x0FD5, 0x6165, 0x2691, 0x6166, 0x28DE, 0x6167, 0x1146, 0x6168, - 0x0C51, 0x616A, 0x2693, 0x616B, 0x114D, 0x616C, 0x268B, 0x616E, 0x1147, - 0x6170, 0x114C, 0x6171, 0x2686, 0x6172, 0x268A, 0x6173, 0x2687, 0x6174, - 0x268D, 0x6175, 0x0FD9, 0x6176, 0x1145, 0x6177, 0x0FD3, 0x6179, 0x28D0, - 0x617A, 0x268F, 0x617C, 0x114B, 0x617E, 0x114E, 0x6180, 0x268C, 0x6182, - 0x114A, 0x6183, 0x28CF, 0x6189, 0x28D4, 0x618A, 0x12B1, 0x618B, 0x28CE, - 0x618C, 0x2B4D, 0x618D, 0x28DD, 0x618E, 0x1152, 0x6190, 0x1150, 0x6191, - 0x12AF, 0x6192, 0x28DA, 0x6193, 0x28D6, 0x6194, 0x1156, 0x6196, 0x2B44, - 0x619A, 0x1154, 0x619B, 0x28D5, 0x619D, 0x2B42, 0x619F, 0x28D9, 0x61A1, - 0x28DC, 0x61A2, 0x28D3, 0x61A4, 0x1155, 0x61A7, 0x114F, 0x61A8, 0x2B43, - 0x61A9, 0x12B0, 0x61AA, 0x28DB, 0x61AB, 0x1151, 0x61AC, 0x1153, 0x61AD, - 0x28D8, 0x61AE, 0x1157, 0x61AF, 0x28D7, 0x61B0, 0x28D2, 0x61B1, 0x28D1, - 0x61B2, 0x12AE, 0x61B3, 0x28DF, 0x61B4, 0x2B46, 0x61B5, 0x2D60, 0x61B6, - 0x12B3, 0x61B8, 0x2B4C, 0x61BA, 0x2B4A, 0x61BC, 0x2D61, 0x61BE, 0x12B4, - 0x61BF, 0x2B4B, 0x61C1, 0x2B48, 0x61C2, 0x13D1, 0x61C3, 0x2D5F, 0x61C5, - 0x2B45, 0x61C6, 0x2B47, 0x61C7, 0x13D2, 0x61C8, 0x12B6, 0x61C9, 0x13D0, - 0x61CA, 0x12B5, 0x61CB, 0x13D4, 0x61CC, 0x2B49, 0x61CD, 0x12B2, 0x61D6, - 0x2F26, 0x61D8, 0x2F1E, 0x61DE, 0x2D67, 0x61DF, 0x2F1F, 0x61E0, 0x2D63, - 0x61E3, 0x14D0, 0x61E4, 0x2D65, 0x61E5, 0x2D64, 0x61E6, 0x13D3, 0x61E7, - 0x2D62, 0x61E8, 0x2D66, 0x61E9, 0x2F27, 0x61EA, 0x2F23, 0x61EB, 0x2F25, - 0x61ED, 0x2F20, 0x61EE, 0x2F21, 0x61F0, 0x2F24, 0x61F1, 0x2F22, 0x61F2, - 0x157E, 0x61F5, 0x1581, 0x61F6, 0x1580, 0x61F7, 0x157F, 0x61F8, 0x1614, - 0x61F9, 0x31D3, 0x61FA, 0x1615, 0x61FB, 0x308F, 0x61FC, 0x1670, 0x61FD, - 0x32D1, 0x61FE, 0x1671, 0x61FF, 0x16C4, 0x6200, 0x16F8, 0x6201, 0x3417, - 0x6203, 0x3418, 0x6204, 0x3419, 0x6207, 0x3533, 0x6208, 0x02D1, 0x6209, - 0x17A8, 0x620A, 0x0341, 0x620C, 0x03D1, 0x620D, 0x03D2, 0x620E, 0x03D0, - 0x6210, 0x03D3, 0x6211, 0x04A2, 0x6212, 0x04A1, 0x6214, 0x1991, 0x6215, - 0x05D1, 0x6216, 0x05D0, 0x6219, 0x1CA0, 0x621A, 0x0A97, 0x621B, 0x0A98, - 0x621F, 0x0C58, 0x6220, 0x23E1, 0x6221, 0x0E1A, 0x6222, 0x0E1B, 0x6223, - 0x23E3, 0x6224, 0x23E5, 0x6225, 0x23E4, 0x6227, 0x2697, 0x6229, 0x2696, - 0x622A, 0x0FDA, 0x622B, 0x2698, 0x622D, 0x28E0, 0x622E, 0x1158, 0x6230, - 0x12B7, 0x6232, 0x13D5, 0x6233, 0x14D1, 0x6234, 0x13D6, 0x6236, 0x02D2, - 0x623A, 0x188D, 0x623D, 0x1992, 0x623E, 0x05D3, 0x623F, 0x05D2, 0x6240, - 0x05D4, 0x6241, 0x072F, 0x6242, 0x1AEC, 0x6243, 0x1AED, 0x6246, 0x1CA1, - 0x6247, 0x08C2, 0x6248, 0x0A99, 0x6249, 0x0C59, 0x624A, 0x214B, 0x624B, - 0x02D3, 0x624D, 0x0291, 0x624E, 0x02D4, 0x6250, 0x17A9, 0x6251, 0x0345, - 0x6252, 0x0344, 0x6253, 0x0342, 0x6254, 0x0343, 0x6258, 0x03D6, 0x6259, - 0x17F2, 0x625A, 0x17F4, 0x625B, 0x03D5, 0x625C, 0x17EC, 0x625E, 0x17ED, - 0x6260, 0x17F3, 0x6261, 0x17EF, 0x6262, 0x17F1, 0x6263, 0x03D4, 0x6264, - 0x17EE, 0x6265, 0x17F5, 0x6266, 0x17F0, 0x626D, 0x04A9, 0x626E, 0x04B2, - 0x626F, 0x04B0, 0x6270, 0x1897, 0x6271, 0x1894, 0x6272, 0x189C, 0x6273, - 0x04AE, 0x6274, 0x189D, 0x6276, 0x04A7, 0x6277, 0x189A, 0x6279, 0x04AD, - 0x627A, 0x1896, 0x627B, 0x1895, 0x627C, 0x04AB, 0x627D, 0x189B, 0x627E, - 0x04AC, 0x627F, 0x05D5, 0x6280, 0x04A6, 0x6281, 0x1898, 0x6283, 0x188E, - 0x6284, 0x04A3, 0x6286, 0x04B6, 0x6287, 0x1893, 0x6288, 0x1899, 0x6289, - 0x04A8, 0x628A, 0x04AA, 0x628C, 0x188F, 0x628E, 0x1890, 0x628F, 0x1891, - 0x6291, 0x04B5, 0x6292, 0x04AF, 0x6293, 0x04B4, 0x6294, 0x1892, 0x6295, - 0x04B3, 0x6296, 0x04A5, 0x6297, 0x04A4, 0x6298, 0x04B1, 0x62A8, 0x05E3, - 0x62A9, 0x199E, 0x62AA, 0x1997, 0x62AB, 0x05DE, 0x62AC, 0x05F1, 0x62AD, - 0x1993, 0x62AE, 0x199A, 0x62AF, 0x199C, 0x62B0, 0x199F, 0x62B1, 0x05EC, - 0x62B3, 0x199B, 0x62B4, 0x1994, 0x62B5, 0x05EA, 0x62B6, 0x1998, 0x62B8, - 0x19A0, 0x62B9, 0x05DB, 0x62BB, 0x199D, 0x62BC, 0x05E5, 0x62BD, 0x05E4, - 0x62BE, 0x1996, 0x62BF, 0x05D9, 0x62C2, 0x05DA, 0x62C4, 0x05D8, 0x62C6, - 0x05F0, 0x62C7, 0x05E8, 0x62C8, 0x05E2, 0x62C9, 0x05D6, 0x62CA, 0x1999, - 0x62CB, 0x05E1, 0x62CC, 0x05D7, 0x62CD, 0x05E9, 0x62CE, 0x05F2, 0x62CF, - 0x1AEE, 0x62D0, 0x05E6, 0x62D1, 0x1995, 0x62D2, 0x05DC, 0x62D3, 0x05DF, - 0x62D4, 0x05E0, 0x62D6, 0x05EE, 0x62D7, 0x05EF, 0x62D8, 0x05ED, 0x62D9, - 0x05E7, 0x62DA, 0x05EB, 0x62DB, 0x05DD, 0x62DC, 0x0730, 0x62EB, 0x1AF4, - 0x62EC, 0x073C, 0x62ED, 0x0734, 0x62EE, 0x0736, 0x62EF, 0x073B, 0x62F0, - 0x1B00, 0x62F1, 0x0739, 0x62F2, 0x1CA2, 0x62F3, 0x08C3, 0x62F4, 0x073E, - 0x62F5, 0x1AF1, 0x62F6, 0x1AF9, 0x62F7, 0x073A, 0x62F8, 0x1AF8, 0x62F9, - 0x1AF5, 0x62FA, 0x1AFD, 0x62FB, 0x1AFF, 0x62FC, 0x0733, 0x62FD, 0x0737, - 0x62FE, 0x073D, 0x62FF, 0x08C5, 0x6300, 0x1AFA, 0x6301, 0x0735, 0x6302, - 0x0740, 0x6303, 0x1AF3, 0x6307, 0x0738, 0x6308, 0x08C4, 0x6309, 0x0732, - 0x630B, 0x1AF0, 0x630C, 0x1AF7, 0x630D, 0x1AEF, 0x630E, 0x1AF2, 0x630F, - 0x1AF6, 0x6310, 0x1CA3, 0x6311, 0x073F, 0x6313, 0x1AFB, 0x6314, 0x1AFC, - 0x6315, 0x1AFE, 0x6316, 0x0731, 0x6328, 0x08D3, 0x6329, 0x1CAF, 0x632A, - 0x08D1, 0x632B, 0x08D2, 0x632C, 0x1CA5, 0x632D, 0x1CB5, 0x632F, 0x08C8, - 0x6332, 0x1EED, 0x6333, 0x1CB7, 0x6334, 0x1CB1, 0x6336, 0x1CA8, 0x6338, - 0x1CBA, 0x6339, 0x1CAB, 0x633A, 0x08CE, 0x633B, 0x1F04, 0x633C, 0x1CAE, - 0x633D, 0x08D0, 0x633E, 0x08C7, 0x6340, 0x1CBC, 0x6341, 0x1CB0, 0x6342, - 0x08CA, 0x6343, 0x1CA9, 0x6344, 0x1CA6, 0x6345, 0x1CA7, 0x6346, 0x08CB, - 0x6347, 0x1CB6, 0x6348, 0x1CBD, 0x6349, 0x08CD, 0x634A, 0x1CAD, 0x634B, - 0x1CAC, 0x634C, 0x08D5, 0x634D, 0x08D4, 0x634E, 0x08C6, 0x634F, 0x08CC, - 0x6350, 0x08CF, 0x6351, 0x1CB9, 0x6354, 0x1CB3, 0x6355, 0x08C9, 0x6356, - 0x1CA4, 0x6357, 0x1CBB, 0x6358, 0x1CB2, 0x6359, 0x1CB4, 0x635A, 0x1CB8, - 0x6365, 0x1EEE, 0x6367, 0x0AA1, 0x6368, 0x0AB5, 0x6369, 0x0AB4, 0x636B, - 0x0AA9, 0x636D, 0x1F00, 0x636E, 0x1EFC, 0x636F, 0x1EF9, 0x6370, 0x1F0B, - 0x6371, 0x0AA4, 0x6372, 0x0A9C, 0x6375, 0x1EFE, 0x6376, 0x0C69, 0x6377, - 0x0AA0, 0x6378, 0x1F06, 0x637A, 0x0AB6, 0x637B, 0x0AB3, 0x637C, 0x1F02, - 0x637D, 0x1EF1, 0x6380, 0x0AB2, 0x6381, 0x1F08, 0x6382, 0x1EF0, 0x6383, - 0x0AA7, 0x6384, 0x0AAB, 0x6385, 0x1F07, 0x6387, 0x1EFA, 0x6388, 0x0AAC, - 0x6389, 0x0AA6, 0x638A, 0x1EEF, 0x638C, 0x0C5B, 0x638D, 0x1F0A, 0x638E, - 0x1EF8, 0x638F, 0x0AB1, 0x6390, 0x1EFB, 0x6391, 0x1F09, 0x6392, 0x0AB0, - 0x6394, 0x214C, 0x6396, 0x0A9D, 0x6397, 0x1EF6, 0x6398, 0x0AA2, 0x6399, - 0x0AAD, 0x639B, 0x0AA8, 0x639C, 0x1EFF, 0x639D, 0x1EF5, 0x639E, 0x1EF3, - 0x639F, 0x1F05, 0x63A0, 0x0A9A, 0x63A1, 0x0AAE, 0x63A2, 0x0A9E, 0x63A3, - 0x0C5A, 0x63A4, 0x1F03, 0x63A5, 0x0A9F, 0x63A7, 0x0A9B, 0x63A8, 0x0AAA, - 0x63A9, 0x0AA5, 0x63AA, 0x0AA3, 0x63AB, 0x1EF7, 0x63AC, 0x0AAF, 0x63AD, - 0x1EF4, 0x63AE, 0x1F01, 0x63AF, 0x1EFD, 0x63B0, 0x214E, 0x63B1, 0x214D, - 0x63BD, 0x1EF2, 0x63BE, 0x215E, 0x63C0, 0x0C5D, 0x63C2, 0x2164, 0x63C3, - 0x2153, 0x63C4, 0x2161, 0x63C5, 0x23E6, 0x63C6, 0x0C60, 0x63C7, 0x2165, - 0x63C8, 0x2168, 0x63C9, 0x0C5F, 0x63CA, 0x2156, 0x63CB, 0x2167, 0x63CC, - 0x2166, 0x63CD, 0x0C61, 0x63CE, 0x214F, 0x63CF, 0x0C5C, 0x63D0, 0x0C64, - 0x63D2, 0x0C62, 0x63D3, 0x2163, 0x63D5, 0x2159, 0x63D6, 0x0C66, 0x63D7, - 0x216A, 0x63D8, 0x2162, 0x63D9, 0x216B, 0x63DA, 0x0C6E, 0x63DB, 0x0C6C, - 0x63DC, 0x2160, 0x63DD, 0x215F, 0x63DF, 0x215D, 0x63E0, 0x2157, 0x63E1, - 0x0C65, 0x63E3, 0x0C63, 0x63E4, 0x1CAA, 0x63E5, 0x2150, 0x63E7, 0x2404, - 0x63E8, 0x2151, 0x63E9, 0x0C5E, 0x63EA, 0x0C6B, 0x63EB, 0x23E8, 0x63ED, - 0x0C67, 0x63EE, 0x0C68, 0x63EF, 0x2152, 0x63F0, 0x2169, 0x63F1, 0x23E7, - 0x63F2, 0x215A, 0x63F3, 0x2155, 0x63F4, 0x0C6A, 0x63F5, 0x215B, 0x63F6, - 0x2158, 0x63F9, 0x0C6F, 0x6406, 0x0E2A, 0x6409, 0x23EB, 0x640A, 0x23FE, - 0x640B, 0x2403, 0x640C, 0x23F7, 0x640D, 0x0E26, 0x640E, 0x2408, 0x640F, - 0x0E23, 0x6410, 0x23E9, 0x6412, 0x23EA, 0x6413, 0x0E1C, 0x6414, 0x0E25, - 0x6415, 0x23F1, 0x6416, 0x0E28, 0x6417, 0x0E29, 0x6418, 0x23F2, 0x641A, - 0x23FF, 0x641B, 0x2405, 0x641C, 0x0E24, 0x641E, 0x0E1E, 0x641F, 0x23F0, - 0x6420, 0x23EC, 0x6421, 0x2407, 0x6422, 0x23F5, 0x6423, 0x23F6, 0x6424, - 0x23ED, 0x6425, 0x2401, 0x6426, 0x23F8, 0x6427, 0x2402, 0x6428, 0x23FA, - 0x642A, 0x0E1F, 0x642B, 0x2699, 0x642C, 0x0E22, 0x642D, 0x0E20, 0x642E, - 0x2406, 0x642F, 0x23FD, 0x6430, 0x23F9, 0x6433, 0x23EE, 0x6434, 0x0FE4, - 0x6435, 0x23FC, 0x6436, 0x0E27, 0x6437, 0x23F4, 0x6439, 0x23F3, 0x643D, - 0x0E21, 0x643E, 0x0E1D, 0x643F, 0x26AE, 0x6440, 0x2400, 0x6441, 0x23FB, - 0x6443, 0x23EF, 0x644B, 0x26A9, 0x644D, 0x269A, 0x644E, 0x26A5, 0x6450, - 0x26AC, 0x6451, 0x0FE2, 0x6452, 0x0C6D, 0x6453, 0x26AA, 0x6454, 0x0FDD, - 0x6458, 0x0FDC, 0x6459, 0x26B1, 0x645B, 0x269B, 0x645C, 0x26A8, 0x645D, - 0x269C, 0x645E, 0x26A7, 0x645F, 0x0FE0, 0x6460, 0x26AB, 0x6461, 0x215C, - 0x6465, 0x26B2, 0x6466, 0x26A3, 0x6467, 0x0FE3, 0x6468, 0x28EE, 0x6469, - 0x1159, 0x646B, 0x26B0, 0x646C, 0x26AF, 0x646D, 0x0FE5, 0x646E, 0x28E1, - 0x646F, 0x115A, 0x6470, 0x28E2, 0x6472, 0x269F, 0x6473, 0x26A0, 0x6474, - 0x269D, 0x6475, 0x26A2, 0x6476, 0x269E, 0x6477, 0x26B3, 0x6478, 0x0FDF, - 0x6479, 0x115B, 0x647A, 0x0FE1, 0x647B, 0x0FE6, 0x647D, 0x26A1, 0x647F, - 0x26AD, 0x6482, 0x26A6, 0x6485, 0x28E5, 0x6487, 0x0FDB, 0x6488, 0x115E, - 0x6489, 0x2B54, 0x648A, 0x28EA, 0x648B, 0x28E9, 0x648C, 0x28EB, 0x648F, - 0x28E8, 0x6490, 0x115F, 0x6492, 0x1165, 0x6493, 0x1162, 0x6495, 0x1163, - 0x6496, 0x28E3, 0x6497, 0x28E6, 0x6498, 0x28F0, 0x6499, 0x116B, 0x649A, - 0x1169, 0x649C, 0x28E7, 0x649D, 0x2154, 0x649E, 0x115C, 0x649F, 0x28ED, - 0x64A0, 0x28E4, 0x64A2, 0x116C, 0x64A3, 0x28EC, 0x64A4, 0x0FDE, 0x64A5, - 0x1161, 0x64A6, 0x26A4, 0x64A9, 0x1164, 0x64AB, 0x1168, 0x64AC, 0x116A, - 0x64AD, 0x1167, 0x64AE, 0x1166, 0x64B0, 0x1160, 0x64B1, 0x28EF, 0x64B2, - 0x115D, 0x64B3, 0x116D, 0x64BB, 0x12BB, 0x64BC, 0x12BC, 0x64BD, 0x2B53, - 0x64BE, 0x12C5, 0x64BF, 0x12C2, 0x64C1, 0x12B9, 0x64C2, 0x12C0, 0x64C3, - 0x2B55, 0x64C4, 0x12BE, 0x64C5, 0x12B8, 0x64C7, 0x12BF, 0x64C9, 0x2B52, - 0x64CA, 0x13D8, 0x64CB, 0x12BA, 0x64CD, 0x12C1, 0x64CE, 0x13D7, 0x64CF, - 0x2B51, 0x64D0, 0x2B50, 0x64D2, 0x12C3, 0x64D4, 0x12C4, 0x64D6, 0x2B4F, - 0x64D7, 0x2B4E, 0x64D8, 0x13D9, 0x64D9, 0x2B58, 0x64DA, 0x12BD, 0x64DB, - 0x2B56, 0x64E0, 0x13DA, 0x64E2, 0x13DF, 0x64E3, 0x2D6A, 0x64E4, 0x2D6C, - 0x64E6, 0x13DC, 0x64E8, 0x2D6D, 0x64E9, 0x2D69, 0x64EB, 0x2D6B, 0x64EC, - 0x13DD, 0x64ED, 0x13E0, 0x64EF, 0x2D68, 0x64F0, 0x13DB, 0x64F1, 0x13DE, - 0x64F2, 0x14D3, 0x64F3, 0x2B57, 0x64F4, 0x14D2, 0x64F7, 0x14D8, 0x64F8, - 0x2F2B, 0x64FA, 0x14D6, 0x64FB, 0x14D7, 0x64FC, 0x2F2E, 0x64FD, 0x2F2A, - 0x64FE, 0x14D4, 0x64FF, 0x2F28, 0x6500, 0x1582, 0x6501, 0x2F2C, 0x6503, - 0x2F2D, 0x6504, 0x2F29, 0x6506, 0x14D5, 0x6507, 0x3090, 0x6509, 0x3093, - 0x650C, 0x3094, 0x650D, 0x3092, 0x650E, 0x3095, 0x650F, 0x1583, 0x6510, - 0x3091, 0x6513, 0x31D7, 0x6514, 0x1617, 0x6515, 0x31D6, 0x6516, 0x31D5, - 0x6517, 0x31D4, 0x6518, 0x1616, 0x6519, 0x1618, 0x651B, 0x32D2, 0x651C, - 0x1673, 0x651D, 0x1672, 0x6520, 0x3382, 0x6521, 0x3381, 0x6522, 0x3384, - 0x6523, 0x16F9, 0x6524, 0x16C5, 0x6525, 0x341B, 0x6526, 0x3383, 0x6529, - 0x341A, 0x652A, 0x16FB, 0x652B, 0x16FA, 0x652C, 0x1721, 0x652D, 0x3484, - 0x652E, 0x34CA, 0x652F, 0x02D5, 0x6532, 0x216C, 0x6533, 0x2B59, 0x6534, - 0x022C, 0x6536, 0x03D7, 0x6537, 0x17F6, 0x6538, 0x04B9, 0x6539, 0x04B7, - 0x653B, 0x04B8, 0x653D, 0x19A1, 0x653E, 0x05F3, 0x653F, 0x0741, 0x6541, - 0x1B01, 0x6543, 0x1B02, 0x6545, 0x0742, 0x6546, 0x1CBF, 0x6548, 0x08D6, - 0x6549, 0x08D7, 0x654A, 0x1CBE, 0x654F, 0x0ABD, 0x6551, 0x0AB9, 0x6553, - 0x1F0C, 0x6554, 0x0AC0, 0x6555, 0x0ABF, 0x6556, 0x0AB8, 0x6557, 0x0ABB, - 0x6558, 0x0ABE, 0x6559, 0x0ABA, 0x655C, 0x2170, 0x655D, 0x0AB7, 0x655E, - 0x0C70, 0x6562, 0x0C72, 0x6563, 0x0C73, 0x6564, 0x216F, 0x6565, 0x2172, - 0x6566, 0x0C71, 0x6567, 0x216D, 0x6568, 0x2171, 0x656A, 0x216E, 0x656C, - 0x0E2B, 0x656F, 0x2409, 0x6572, 0x0FE7, 0x6573, 0x26B4, 0x6574, 0x12C6, - 0x6575, 0x116E, 0x6576, 0x28F1, 0x6577, 0x116F, 0x6578, 0x1170, 0x6579, - 0x28F3, 0x657A, 0x28F2, 0x657B, 0x28F4, 0x657C, 0x2B5B, 0x657F, 0x2B5A, - 0x6580, 0x2D6F, 0x6581, 0x2D6E, 0x6582, 0x13E1, 0x6583, 0x13E2, 0x6584, - 0x3096, 0x6587, 0x02D6, 0x658C, 0x2173, 0x6590, 0x0C75, 0x6591, 0x0C74, - 0x6592, 0x240A, 0x6594, 0x2F2F, 0x6595, 0x1674, 0x6596, 0x341C, 0x6597, - 0x02D7, 0x6599, 0x08D8, 0x659B, 0x0AC2, 0x659C, 0x0AC1, 0x659D, 0x2174, - 0x659E, 0x2175, 0x659F, 0x0E2C, 0x65A0, 0x26B5, 0x65A1, 0x0FE8, 0x65A2, - 0x2B5C, 0x65A4, 0x02D8, 0x65A5, 0x0346, 0x65A7, 0x05F4, 0x65A8, 0x19A2, - 0x65AA, 0x1B03, 0x65AB, 0x0743, 0x65AC, 0x0AC3, 0x65AE, 0x2176, 0x65AF, - 0x0C76, 0x65B0, 0x0E2D, 0x65B2, 0x28F5, 0x65B3, 0x28F6, 0x65B6, 0x2D70, - 0x65B7, 0x14D9, 0x65B8, 0x34CB, 0x65B9, 0x02D9, 0x65BB, 0x19A3, 0x65BC, - 0x05F5, 0x65BD, 0x0744, 0x65BF, 0x1B04, 0x65C1, 0x08D9, 0x65C2, 0x1CC3, - 0x65C3, 0x1CC1, 0x65C4, 0x1CC2, 0x65C5, 0x08DA, 0x65C6, 0x1CC0, 0x65CB, - 0x0AC5, 0x65CC, 0x0AC6, 0x65CD, 0x1F0D, 0x65CE, 0x0AC7, 0x65CF, 0x0AC4, - 0x65D0, 0x2177, 0x65D2, 0x2178, 0x65D3, 0x240B, 0x65D6, 0x0FEA, 0x65D7, - 0x0FE9, 0x65DA, 0x2D71, 0x65DB, 0x2F30, 0x65DD, 0x3098, 0x65DE, 0x3097, - 0x65DF, 0x31D8, 0x65E0, 0x022D, 0x65E1, 0x1789, 0x65E2, 0x0745, 0x65E5, - 0x02DA, 0x65E6, 0x0347, 0x65E8, 0x03D9, 0x65E9, 0x03D8, 0x65EC, 0x03DA, - 0x65ED, 0x03DB, 0x65EE, 0x17F8, 0x65EF, 0x17F7, 0x65F0, 0x189E, 0x65F1, - 0x04BA, 0x65F2, 0x18A1, 0x65F3, 0x18A0, 0x65F4, 0x189F, 0x65F5, 0x18A2, - 0x65FA, 0x05F6, 0x65FB, 0x19A9, 0x65FC, 0x19A5, 0x65FD, 0x19AE, 0x6600, - 0x05FD, 0x6602, 0x05FB, 0x6603, 0x19AA, 0x6604, 0x19A6, 0x6605, 0x19AD, - 0x6606, 0x05FA, 0x6607, 0x0601, 0x6608, 0x19A8, 0x6609, 0x19A4, 0x660A, - 0x0600, 0x660B, 0x19AB, 0x660C, 0x05F9, 0x660D, 0x19AC, 0x660E, 0x05FC, - 0x660F, 0x05FE, 0x6610, 0x19B0, 0x6611, 0x19AF, 0x6612, 0x19A7, 0x6613, - 0x05F8, 0x6614, 0x05F7, 0x6615, 0x05FF, 0x661C, 0x1B09, 0x661D, 0x1B0F, - 0x661F, 0x074B, 0x6620, 0x0748, 0x6621, 0x1B06, 0x6622, 0x1B0B, 0x6624, - 0x074E, 0x6625, 0x0746, 0x6626, 0x1B0A, 0x6627, 0x0749, 0x6628, 0x074C, - 0x662B, 0x1B0D, 0x662D, 0x0747, 0x662E, 0x1B12, 0x662F, 0x074A, 0x6631, - 0x074D, 0x6632, 0x1B07, 0x6633, 0x1B0C, 0x6634, 0x1B10, 0x6635, 0x1B08, - 0x6636, 0x1B05, 0x6639, 0x1B11, 0x663A, 0x1B0E, 0x6641, 0x08E2, 0x6642, - 0x08DB, 0x6643, 0x08DE, 0x6645, 0x08E1, 0x6647, 0x1CC6, 0x6649, 0x08DC, - 0x664A, 0x1CC4, 0x664C, 0x08E0, 0x664F, 0x08DD, 0x6651, 0x1CC7, 0x6652, - 0x08DF, 0x6659, 0x1F11, 0x665A, 0x0AC9, 0x665B, 0x1F10, 0x665C, 0x1F12, - 0x665D, 0x0AC8, 0x665E, 0x0ACD, 0x665F, 0x1CC5, 0x6661, 0x1F0F, 0x6662, - 0x1F13, 0x6664, 0x0ACA, 0x6665, 0x1F0E, 0x6666, 0x0ACC, 0x6668, 0x0ACB, - 0x666A, 0x217F, 0x666C, 0x217A, 0x666E, 0x0C77, 0x666F, 0x0C7B, 0x6670, - 0x0C78, 0x6671, 0x217D, 0x6672, 0x2180, 0x6674, 0x0C79, 0x6676, 0x0C7A, - 0x6677, 0x0C7F, 0x6678, 0x2414, 0x6679, 0x217E, 0x667A, 0x0C7D, 0x667B, - 0x217B, 0x667C, 0x2179, 0x667E, 0x0C7E, 0x6680, 0x217C, 0x6684, 0x0E33, - 0x6686, 0x240C, 0x6687, 0x0E30, 0x6688, 0x0E31, 0x6689, 0x0E2F, 0x668A, - 0x2411, 0x668B, 0x2410, 0x668C, 0x240D, 0x668D, 0x0E35, 0x6690, 0x240F, - 0x6691, 0x0C7C, 0x6694, 0x2413, 0x6695, 0x240E, 0x6696, 0x0E32, 0x6697, - 0x0E2E, 0x6698, 0x0E34, 0x6699, 0x2412, 0x669D, 0x0FED, 0x669F, 0x26B8, - 0x66A0, 0x26B7, 0x66A1, 0x26B6, 0x66A2, 0x0FEB, 0x66A8, 0x0FEC, 0x66A9, - 0x28F9, 0x66AA, 0x28FC, 0x66AB, 0x1172, 0x66AE, 0x1171, 0x66AF, 0x28FD, - 0x66B0, 0x28F8, 0x66B1, 0x1174, 0x66B2, 0x28FA, 0x66B4, 0x1173, 0x66B5, - 0x28F7, 0x66B7, 0x28FB, 0x66B8, 0x12CC, 0x66B9, 0x12C9, 0x66BA, 0x2B65, - 0x66BB, 0x2B64, 0x66BD, 0x2B63, 0x66BE, 0x2B5E, 0x66C0, 0x2B5F, 0x66C4, - 0x12CA, 0x66C6, 0x12C7, 0x66C7, 0x12CB, 0x66C8, 0x2B5D, 0x66C9, 0x12C8, - 0x66CA, 0x2B60, 0x66CB, 0x2B61, 0x66CC, 0x2B66, 0x66CF, 0x2B62, 0x66D2, - 0x2D72, 0x66D6, 0x13E4, 0x66D8, 0x2F33, 0x66D9, 0x13E3, 0x66DA, 0x2F31, - 0x66DB, 0x2F32, 0x66DC, 0x14DA, 0x66DD, 0x1585, 0x66DE, 0x3099, 0x66E0, - 0x1584, 0x66E3, 0x31DA, 0x66E4, 0x31DB, 0x66E6, 0x1619, 0x66E8, 0x31D9, - 0x66E9, 0x1675, 0x66EB, 0x341D, 0x66EC, 0x16FC, 0x66ED, 0x3485, 0x66EE, - 0x3486, 0x66F0, 0x02DB, 0x66F2, 0x03DC, 0x66F3, 0x03DD, 0x66F4, 0x04BB, - 0x66F6, 0x19B1, 0x66F7, 0x074F, 0x66F8, 0x08E3, 0x66F9, 0x0ACE, 0x66FC, - 0x0A1F, 0x66FE, 0x0C80, 0x66FF, 0x0C81, 0x6700, 0x0BF0, 0x6701, 0x2181, - 0x6703, 0x0E36, 0x6704, 0x26BA, 0x6705, 0x26B9, 0x6708, 0x02DC, 0x6709, - 0x03DE, 0x670A, 0x19B2, 0x670B, 0x0603, 0x670D, 0x0602, 0x670F, 0x1B13, - 0x6710, 0x1B14, 0x6712, 0x1CC8, 0x6713, 0x1CC9, 0x6714, 0x08E4, 0x6715, - 0x08E5, 0x6717, 0x08E6, 0x6718, 0x1F14, 0x671B, 0x0AD0, 0x671D, 0x0C83, - 0x671F, 0x0C82, 0x6720, 0x2415, 0x6721, 0x2522, 0x6722, 0x26BB, 0x6723, - 0x2B67, 0x6726, 0x14DB, 0x6727, 0x161A, 0x6728, 0x02DD, 0x672A, 0x034A, - 0x672B, 0x034B, 0x672C, 0x0349, 0x672D, 0x034C, 0x672E, 0x0348, 0x6731, - 0x03E1, 0x6733, 0x1800, 0x6734, 0x03E0, 0x6735, 0x03E2, 0x6738, 0x17FB, - 0x6739, 0x17FA, 0x673A, 0x17FD, 0x673B, 0x17FC, 0x673C, 0x17FF, 0x673D, - 0x03DF, 0x673E, 0x17F9, 0x673F, 0x17FE, 0x6745, 0x18A3, 0x6746, 0x04C5, - 0x6747, 0x18A4, 0x6748, 0x18A8, 0x6749, 0x04C4, 0x674B, 0x18AC, 0x674C, - 0x18A7, 0x674D, 0x18AA, 0x674E, 0x04BD, 0x674F, 0x04BE, 0x6750, 0x04BF, - 0x6751, 0x04C0, 0x6753, 0x04C7, 0x6755, 0x18A6, 0x6756, 0x04C2, 0x6757, - 0x04C8, 0x6759, 0x18A5, 0x675A, 0x18AB, 0x675C, 0x04C1, 0x675D, 0x18A9, - 0x675E, 0x04C3, 0x675F, 0x04BC, 0x6760, 0x04C6, 0x676A, 0x0618, 0x676C, - 0x19B4, 0x676D, 0x0604, 0x676F, 0x060E, 0x6770, 0x060F, 0x6771, 0x0607, - 0x6772, 0x0619, 0x6773, 0x0609, 0x6774, 0x19BC, 0x6775, 0x0614, 0x6776, - 0x19B7, 0x6777, 0x060A, 0x6778, 0x19C6, 0x6779, 0x19C7, 0x677A, 0x19BF, - 0x677B, 0x19B8, 0x677C, 0x0617, 0x677D, 0x19C4, 0x677E, 0x0612, 0x677F, - 0x0610, 0x6781, 0x19C5, 0x6783, 0x19C3, 0x6784, 0x19BB, 0x6785, 0x19B3, - 0x6786, 0x19BA, 0x6787, 0x060B, 0x6789, 0x0611, 0x678B, 0x0605, 0x678C, - 0x19BE, 0x678D, 0x19BD, 0x678E, 0x19B5, 0x6790, 0x0613, 0x6791, 0x19C1, - 0x6792, 0x19B6, 0x6793, 0x0616, 0x6794, 0x19C8, 0x6795, 0x0606, 0x6797, - 0x060D, 0x6798, 0x19B9, 0x6799, 0x19C2, 0x679A, 0x0615, 0x679C, 0x0608, - 0x679D, 0x060C, 0x679F, 0x19C0, 0x67AE, 0x1B34, 0x67AF, 0x0757, 0x67B0, - 0x0764, 0x67B2, 0x1B2F, 0x67B3, 0x1B25, 0x67B4, 0x075D, 0x67B5, 0x1B23, - 0x67B6, 0x0756, 0x67B7, 0x1B1E, 0x67B8, 0x0760, 0x67B9, 0x1B2B, 0x67BA, - 0x1B18, 0x67BB, 0x1B1A, 0x67C0, 0x1B1D, 0x67C1, 0x1B15, 0x67C2, 0x1B2A, - 0x67C3, 0x1B3A, 0x67C4, 0x075B, 0x67C5, 0x1B1F, 0x67C6, 0x1B31, 0x67C8, - 0x1B17, 0x67C9, 0x1B38, 0x67CA, 0x1B39, 0x67CB, 0x1B3C, 0x67CC, 0x1B33, - 0x67CD, 0x1B24, 0x67CE, 0x1B2C, 0x67CF, 0x0761, 0x67D0, 0x0754, 0x67D1, - 0x075C, 0x67D2, 0x0768, 0x67D3, 0x0751, 0x67D4, 0x0753, 0x67D8, 0x1B1C, - 0x67D9, 0x0765, 0x67DA, 0x075E, 0x67DB, 0x1B36, 0x67DC, 0x1B19, 0x67DD, - 0x0767, 0x67DE, 0x0762, 0x67DF, 0x1B22, 0x67E2, 0x0766, 0x67E3, 0x1B29, - 0x67E4, 0x1B21, 0x67E5, 0x075F, 0x67E6, 0x1B35, 0x67E7, 0x1B2D, 0x67E9, - 0x0759, 0x67EA, 0x1B3B, 0x67EB, 0x1B20, 0x67EC, 0x0755, 0x67ED, 0x1B32, - 0x67EE, 0x1B28, 0x67EF, 0x075A, 0x67F0, 0x1B2E, 0x67F1, 0x0752, 0x67F2, - 0x1B16, 0x67F3, 0x0763, 0x67F4, 0x08F5, 0x67F5, 0x0758, 0x67F6, 0x1B27, - 0x67F7, 0x1B26, 0x67F8, 0x1B1B, 0x67FA, 0x1B37, 0x67FC, 0x1B30, 0x67FF, - 0x0750, 0x6812, 0x1CDD, 0x6813, 0x08FC, 0x6814, 0x1CDE, 0x6816, 0x1CD2, - 0x6817, 0x08F1, 0x6818, 0x08FD, 0x681A, 0x1CCB, 0x681C, 0x1CD4, 0x681D, - 0x1CDC, 0x681F, 0x1CCA, 0x6820, 0x1CE5, 0x6821, 0x08E7, 0x6825, 0x1CE4, - 0x6826, 0x1CDF, 0x6828, 0x1CE0, 0x6829, 0x08EF, 0x682A, 0x08FA, 0x682B, - 0x1CD6, 0x682D, 0x1CD7, 0x682E, 0x1CE1, 0x682F, 0x1CD8, 0x6831, 0x1CD3, - 0x6832, 0x1CCD, 0x6833, 0x1CCE, 0x6834, 0x1CDB, 0x6835, 0x1CD5, 0x6838, - 0x08E8, 0x6839, 0x08EC, 0x683A, 0x1CE3, 0x683B, 0x1CCF, 0x683C, 0x08F8, - 0x683D, 0x08F4, 0x6840, 0x08F7, 0x6841, 0x08FE, 0x6842, 0x08ED, 0x6843, - 0x08F9, 0x6844, 0x1CDA, 0x6845, 0x08FB, 0x6846, 0x08EA, 0x6848, 0x08E9, - 0x6849, 0x1CCC, 0x684B, 0x1CD0, 0x684C, 0x08F2, 0x684D, 0x1CE2, 0x684E, - 0x1CD9, 0x684F, 0x1CD1, 0x6850, 0x08F6, 0x6851, 0x08F3, 0x6853, 0x08EB, - 0x6854, 0x08EE, 0x686B, 0x1F29, 0x686D, 0x1F19, 0x686E, 0x1F1A, 0x686F, - 0x1F1E, 0x6871, 0x1F2D, 0x6872, 0x1F2A, 0x6874, 0x1F23, 0x6875, 0x1F22, - 0x6876, 0x0AD7, 0x6877, 0x1F26, 0x6878, 0x1F35, 0x6879, 0x1F15, 0x687B, - 0x1F36, 0x687C, 0x1F28, 0x687D, 0x1F3A, 0x687E, 0x1F2E, 0x687F, 0x0AD6, - 0x6880, 0x1F2C, 0x6881, 0x0AD1, 0x6882, 0x0AE6, 0x6883, 0x0ADC, 0x6885, - 0x0AE0, 0x6886, 0x0ADF, 0x6887, 0x1F16, 0x6889, 0x1F33, 0x688A, 0x1F39, - 0x688B, 0x1F31, 0x688C, 0x1F38, 0x688F, 0x1F25, 0x6890, 0x1F17, 0x6891, - 0x1F37, 0x6892, 0x1F27, 0x6893, 0x0AD4, 0x6894, 0x0AE1, 0x6896, 0x1F30, - 0x6897, 0x0ADA, 0x689B, 0x1F2F, 0x689C, 0x1F18, 0x689D, 0x0AE2, 0x689F, - 0x0AE4, 0x68A0, 0x1F32, 0x68A1, 0x0AE5, 0x68A2, 0x0AD3, 0x68A3, 0x1F1F, - 0x68A4, 0x1F34, 0x68A7, 0x0AD9, 0x68A8, 0x0AE3, 0x68A9, 0x1F21, 0x68AA, - 0x1F2B, 0x68AB, 0x1F1C, 0x68AC, 0x1F20, 0x68AD, 0x0ADE, 0x68AE, 0x1F1B, - 0x68AF, 0x0AD2, 0x68B0, 0x0ADB, 0x68B1, 0x0AD8, 0x68B2, 0x1F24, 0x68B3, - 0x08F0, 0x68B4, 0x2198, 0x68B5, 0x0AD5, 0x68C4, 0x0ADD, 0x68C6, 0x219B, - 0x68C7, 0x21B1, 0x68C8, 0x21A6, 0x68C9, 0x0C97, 0x68CB, 0x0C92, 0x68CC, - 0x2195, 0x68CD, 0x0C93, 0x68CE, 0x21A5, 0x68D0, 0x219E, 0x68D1, 0x21AB, - 0x68D2, 0x0C8F, 0x68D3, 0x2183, 0x68D4, 0x21AD, 0x68D5, 0x0C85, 0x68D6, - 0x218B, 0x68D7, 0x0C88, 0x68D8, 0x0C87, 0x68DA, 0x0C98, 0x68DC, 0x2185, - 0x68DD, 0x21A7, 0x68DE, 0x21A8, 0x68DF, 0x0C8A, 0x68E0, 0x0C86, 0x68E1, - 0x2193, 0x68E3, 0x0C91, 0x68E4, 0x218E, 0x68E6, 0x21A9, 0x68E7, 0x0C8D, - 0x68E8, 0x21A1, 0x68E9, 0x21AE, 0x68EA, 0x2188, 0x68EB, 0x218D, 0x68EC, - 0x2187, 0x68EE, 0x0C8C, 0x68EF, 0x219A, 0x68F0, 0x242B, 0x68F1, 0x2189, - 0x68F2, 0x0C90, 0x68F3, 0x2192, 0x68F4, 0x21AA, 0x68F5, 0x0C8B, 0x68F6, - 0x218F, 0x68F7, 0x218C, 0x68F8, 0x219D, 0x68F9, 0x0C8E, 0x68FA, 0x0C84, - 0x68FB, 0x0C9A, 0x68FC, 0x21A0, 0x68FD, 0x219F, 0x6904, 0x2184, 0x6905, - 0x0C89, 0x6906, 0x21AC, 0x6907, 0x2194, 0x6908, 0x2196, 0x690A, 0x21A3, - 0x690B, 0x21A2, 0x690C, 0x2182, 0x690D, 0x0C94, 0x690E, 0x0C96, 0x690F, - 0x218A, 0x6910, 0x2191, 0x6911, 0x2199, 0x6912, 0x0C95, 0x6913, 0x2190, - 0x6914, 0x219C, 0x6915, 0x21AF, 0x6917, 0x21A4, 0x6925, 0x21B0, 0x692A, - 0x2186, 0x692F, 0x243F, 0x6930, 0x0E3E, 0x6932, 0x243D, 0x6933, 0x2428, - 0x6934, 0x242D, 0x6935, 0x2426, 0x6937, 0x2439, 0x6938, 0x2418, 0x6939, - 0x241F, 0x693B, 0x2437, 0x693C, 0x2441, 0x693D, 0x2429, 0x693F, 0x241C, - 0x6940, 0x242F, 0x6941, 0x2434, 0x6942, 0x2420, 0x6944, 0x2431, 0x6945, - 0x241D, 0x6948, 0x2424, 0x6949, 0x2425, 0x694A, 0x0E40, 0x694B, 0x2438, - 0x694C, 0x2436, 0x694E, 0x2419, 0x694F, 0x243B, 0x6951, 0x243C, 0x6952, - 0x243E, 0x6953, 0x0E44, 0x6954, 0x0E3C, 0x6956, 0x1F1D, 0x6957, 0x2421, - 0x6958, 0x2433, 0x6959, 0x2422, 0x695A, 0x0E39, 0x695B, 0x0E49, 0x695C, - 0x243A, 0x695D, 0x0E47, 0x695E, 0x0E43, 0x695F, 0x2417, 0x6960, 0x0E3B, - 0x6962, 0x241A, 0x6963, 0x0E48, 0x6965, 0x242A, 0x6966, 0x2416, 0x6968, - 0x0E41, 0x6969, 0x242E, 0x696A, 0x241E, 0x696B, 0x0E42, 0x696C, 0x2427, - 0x696D, 0x0E38, 0x696E, 0x0C99, 0x696F, 0x2430, 0x6970, 0x2197, 0x6971, - 0x241B, 0x6974, 0x2435, 0x6975, 0x0E3D, 0x6976, 0x2432, 0x6977, 0x0E3A, - 0x6978, 0x242C, 0x6979, 0x0E45, 0x697A, 0x2423, 0x697B, 0x2440, 0x6982, - 0x0E3F, 0x6983, 0x24AF, 0x6986, 0x0E46, 0x698D, 0x26C9, 0x698E, 0x26C7, - 0x6990, 0x26DD, 0x6991, 0x26C5, 0x6993, 0x26D7, 0x6994, 0x0E37, 0x6995, - 0x0FF0, 0x6996, 0x26C1, 0x6997, 0x26DC, 0x6999, 0x26C6, 0x699A, 0x26D4, - 0x699B, 0x0FF5, 0x699C, 0x0FEE, 0x699E, 0x26DA, 0x69A0, 0x26BF, 0x69A1, - 0x26D9, 0x69A3, 0x1000, 0x69A4, 0x26D0, 0x69A5, 0x26E0, 0x69A6, 0x0FFE, - 0x69A7, 0x26C8, 0x69A8, 0x0FEF, 0x69A9, 0x26CA, 0x69AA, 0x26D8, 0x69AB, - 0x0FF8, 0x69AC, 0x26C3, 0x69AD, 0x0FFC, 0x69AE, 0x0FF2, 0x69AF, 0x26CC, - 0x69B0, 0x26C2, 0x69B1, 0x26BC, 0x69B3, 0x26D6, 0x69B4, 0x0FF9, 0x69B5, - 0x26DF, 0x69B6, 0x26BD, 0x69B7, 0x0FF6, 0x69B9, 0x26D2, 0x69BB, 0x0FF7, - 0x69BC, 0x26C4, 0x69BD, 0x26CF, 0x69BE, 0x26CB, 0x69BF, 0x26CD, 0x69C1, - 0x0FF1, 0x69C2, 0x26DE, 0x69C3, 0x0FFF, 0x69C4, 0x26CE, 0x69C6, 0x26E1, - 0x69C9, 0x26BE, 0x69CA, 0x26D3, 0x69CB, 0x0FF4, 0x69CC, 0x0FFD, 0x69CD, - 0x0FFB, 0x69CE, 0x26C0, 0x69CF, 0x26D5, 0x69D0, 0x0FFA, 0x69D3, 0x0FF3, - 0x69D4, 0x26D1, 0x69D9, 0x26DB, 0x69E2, 0x2909, 0x69E4, 0x2905, 0x69E5, - 0x2901, 0x69E6, 0x2915, 0x69E7, 0x2912, 0x69E8, 0x1177, 0x69EB, 0x2919, - 0x69EC, 0x2908, 0x69ED, 0x1182, 0x69EE, 0x290F, 0x69F1, 0x2904, 0x69F2, - 0x290E, 0x69F3, 0x117F, 0x69F4, 0x2922, 0x69F6, 0x291F, 0x69F7, 0x2911, - 0x69F8, 0x2902, 0x69FB, 0x2916, 0x69FC, 0x2918, 0x69FD, 0x117B, 0x69FE, - 0x290C, 0x69FF, 0x2907, 0x6A00, 0x28FE, 0x6A01, 0x1178, 0x6A02, 0x1180, - 0x6A04, 0x291B, 0x6A05, 0x1181, 0x6A06, 0x28FF, 0x6A07, 0x2921, 0x6A08, - 0x2914, 0x6A09, 0x291A, 0x6A0A, 0x117E, 0x6A0D, 0x2917, 0x6A0F, 0x291E, - 0x6A11, 0x1183, 0x6A13, 0x117D, 0x6A14, 0x2910, 0x6A15, 0x2903, 0x6A16, - 0x2923, 0x6A17, 0x2900, 0x6A18, 0x291C, 0x6A19, 0x117A, 0x6A1B, 0x290A, - 0x6A1D, 0x290B, 0x6A1E, 0x1179, 0x6A1F, 0x1176, 0x6A20, 0x2906, 0x6A21, - 0x117C, 0x6A23, 0x1175, 0x6A25, 0x291D, 0x6A26, 0x2920, 0x6A27, 0x290D, - 0x6A28, 0x2B74, 0x6A32, 0x2B6C, 0x6A34, 0x2B68, 0x6A35, 0x12D9, 0x6A38, - 0x12CE, 0x6A39, 0x12D3, 0x6A3A, 0x12CF, 0x6A3B, 0x2B76, 0x6A3C, 0x2B81, - 0x6A3D, 0x12CD, 0x6A3E, 0x2B6E, 0x6A3F, 0x2B77, 0x6A40, 0x2913, 0x6A41, - 0x2B78, 0x6A44, 0x12D4, 0x6A46, 0x2B87, 0x6A47, 0x12D8, 0x6A48, 0x12DB, - 0x6A49, 0x2B6A, 0x6A4B, 0x12D7, 0x6A4D, 0x2B85, 0x6A4E, 0x2B86, 0x6A4F, - 0x2B7C, 0x6A50, 0x2B7B, 0x6A51, 0x2B73, 0x6A54, 0x2B7D, 0x6A55, 0x2B84, - 0x6A56, 0x2B83, 0x6A58, 0x12D2, 0x6A59, 0x12D0, 0x6A5A, 0x2B75, 0x6A5B, - 0x2B72, 0x6A5D, 0x2B6F, 0x6A5E, 0x2B82, 0x6A5F, 0x12DA, 0x6A60, 0x2B80, - 0x6A61, 0x12D6, 0x6A62, 0x12D5, 0x6A64, 0x2B7A, 0x6A66, 0x2B69, 0x6A67, - 0x2B6B, 0x6A68, 0x2B6D, 0x6A69, 0x2B7F, 0x6A6A, 0x2B79, 0x6A6B, 0x12D1, - 0x6A6D, 0x2B70, 0x6A6F, 0x2B7E, 0x6A76, 0x2B71, 0x6A7E, 0x13EC, 0x6A7F, - 0x2D84, 0x6A80, 0x13E5, 0x6A81, 0x2D75, 0x6A83, 0x2D80, 0x6A84, 0x13E7, - 0x6A85, 0x2D87, 0x6A87, 0x2D7C, 0x6A89, 0x2D77, 0x6A8C, 0x2D88, 0x6A8D, - 0x2D73, 0x6A8E, 0x2D7E, 0x6A90, 0x13EE, 0x6A91, 0x2D83, 0x6A92, 0x2D89, - 0x6A93, 0x2D7D, 0x6A94, 0x13E6, 0x6A95, 0x2D7F, 0x6A96, 0x2D74, 0x6A97, - 0x13ED, 0x6A9A, 0x2D86, 0x6A9B, 0x2D79, 0x6A9C, 0x13E9, 0x6A9E, 0x2D7B, - 0x6A9F, 0x2D78, 0x6AA0, 0x13EF, 0x6AA1, 0x2D7A, 0x6AA2, 0x13E8, 0x6AA3, - 0x13EB, 0x6AA4, 0x2D82, 0x6AA5, 0x2D76, 0x6AA6, 0x2D85, 0x6AA8, 0x2D81, - 0x6AAC, 0x14DD, 0x6AAD, 0x2F3E, 0x6AAE, 0x14E2, 0x6AAF, 0x14E3, 0x6AB3, - 0x14DC, 0x6AB4, 0x2F3D, 0x6AB6, 0x2F3A, 0x6AB7, 0x2F3B, 0x6AB8, 0x14E0, - 0x6AB9, 0x2F35, 0x6ABA, 0x2F39, 0x6ABB, 0x14DF, 0x6ABD, 0x2F36, 0x6AC2, - 0x14E1, 0x6AC3, 0x14DE, 0x6AC5, 0x2F34, 0x6AC6, 0x2F38, 0x6AC7, 0x2F3C, - 0x6ACB, 0x309F, 0x6ACC, 0x309C, 0x6ACD, 0x30A5, 0x6ACF, 0x30A4, 0x6AD0, - 0x30A2, 0x6AD1, 0x309D, 0x6AD3, 0x1589, 0x6AD9, 0x309E, 0x6ADA, 0x1588, - 0x6ADB, 0x13EA, 0x6ADC, 0x30A1, 0x6ADD, 0x1587, 0x6ADE, 0x30A6, 0x6ADF, - 0x30A0, 0x6AE0, 0x309B, 0x6AE1, 0x2F37, 0x6AE5, 0x1586, 0x6AE7, 0x309A, - 0x6AE8, 0x31DF, 0x6AEA, 0x31DE, 0x6AEB, 0x30A3, 0x6AEC, 0x161B, 0x6AEE, - 0x31E2, 0x6AEF, 0x31E3, 0x6AF0, 0x31DD, 0x6AF1, 0x31E1, 0x6AF3, 0x31DC, - 0x6AF8, 0x32D6, 0x6AF9, 0x31E0, 0x6AFA, 0x1678, 0x6AFB, 0x1676, 0x6AFC, - 0x32D4, 0x6B00, 0x32D7, 0x6B02, 0x32D3, 0x6B03, 0x32D5, 0x6B04, 0x1677, - 0x6B08, 0x3386, 0x6B09, 0x3387, 0x6B0A, 0x16C6, 0x6B0B, 0x3385, 0x6B0F, - 0x3420, 0x6B10, 0x16FD, 0x6B11, 0x341E, 0x6B12, 0x341F, 0x6B13, 0x3487, - 0x6B16, 0x1743, 0x6B17, 0x34CE, 0x6B18, 0x34CC, 0x6B19, 0x34CD, 0x6B1A, - 0x34CF, 0x6B1E, 0x3534, 0x6B20, 0x02DE, 0x6B21, 0x03E3, 0x6B23, 0x061A, - 0x6B25, 0x19C9, 0x6B28, 0x1B3D, 0x6B2C, 0x1CE6, 0x6B2D, 0x1CE8, 0x6B2F, - 0x1CE7, 0x6B31, 0x1CE9, 0x6B32, 0x0AE7, 0x6B33, 0x1F3C, 0x6B34, 0x1CEA, - 0x6B36, 0x1F3B, 0x6B37, 0x1F3D, 0x6B38, 0x1F3E, 0x6B39, 0x21B2, 0x6B3A, - 0x0C9C, 0x6B3B, 0x21B3, 0x6B3C, 0x21B5, 0x6B3D, 0x0C9D, 0x6B3E, 0x0C9B, - 0x6B3F, 0x21B4, 0x6B41, 0x2447, 0x6B42, 0x2445, 0x6B43, 0x2444, 0x6B45, - 0x2443, 0x6B46, 0x2442, 0x6B47, 0x0E4A, 0x6B48, 0x2446, 0x6B49, 0x1001, - 0x6B4A, 0x26E2, 0x6B4B, 0x26E4, 0x6B4C, 0x1002, 0x6B4D, 0x26E3, 0x6B4E, - 0x1185, 0x6B50, 0x1184, 0x6B51, 0x2924, 0x6B54, 0x2B89, 0x6B55, 0x2B88, - 0x6B56, 0x2B8A, 0x6B59, 0x12DC, 0x6B5B, 0x2D8A, 0x6B5C, 0x13F0, 0x6B5E, - 0x2F3F, 0x6B5F, 0x14E4, 0x6B60, 0x30A7, 0x6B61, 0x16C7, 0x6B62, 0x02DF, - 0x6B63, 0x034D, 0x6B64, 0x03E4, 0x6B65, 0x04C9, 0x6B66, 0x061B, 0x6B67, - 0x061C, 0x6B6A, 0x0769, 0x6B6D, 0x1CEB, 0x6B72, 0x0E4B, 0x6B76, 0x29A2, - 0x6B77, 0x12DD, 0x6B78, 0x14E5, 0x6B79, 0x02E0, 0x6B7B, 0x03E5, 0x6B7E, - 0x19CB, 0x6B7F, 0x061D, 0x6B80, 0x19CA, 0x6B82, 0x1B3E, 0x6B83, 0x076A, - 0x6B84, 0x1B3F, 0x6B86, 0x076B, 0x6B88, 0x1CED, 0x6B89, 0x0900, 0x6B8A, - 0x08FF, 0x6B8C, 0x1F43, 0x6B8D, 0x1F41, 0x6B8E, 0x1F42, 0x6B8F, 0x1F40, - 0x6B91, 0x1F3F, 0x6B94, 0x21B6, 0x6B95, 0x21B9, 0x6B96, 0x0C9F, 0x6B97, - 0x21B7, 0x6B98, 0x0C9E, 0x6B99, 0x21B8, 0x6B9B, 0x2448, 0x6B9E, 0x26E5, - 0x6B9F, 0x26E6, 0x6BA0, 0x26E7, 0x6BA2, 0x2927, 0x6BA3, 0x2926, 0x6BA4, - 0x1186, 0x6BA5, 0x2925, 0x6BA6, 0x2928, 0x6BA7, 0x2B8B, 0x6BAA, 0x2B8C, - 0x6BAB, 0x2B8D, 0x6BAD, 0x2D8B, 0x6BAE, 0x13F1, 0x6BAF, 0x14E6, 0x6BB0, - 0x30A8, 0x6BB2, 0x1679, 0x6BB3, 0x178A, 0x6BB5, 0x076C, 0x6BB6, 0x1B40, - 0x6BB7, 0x0901, 0x6BBA, 0x0AE8, 0x6BBC, 0x0CA0, 0x6BBD, 0x21BA, 0x6BBF, - 0x0E4D, 0x6BC0, 0x0E4C, 0x6BC3, 0x26E8, 0x6BC4, 0x26E9, 0x6BC5, 0x1187, - 0x6BC6, 0x1188, 0x6BC7, 0x2B8F, 0x6BC8, 0x2B8E, 0x6BC9, 0x2F40, 0x6BCA, - 0x3421, 0x6BCB, 0x02E1, 0x6BCC, 0x178B, 0x6BCD, 0x034E, 0x6BCF, 0x04CA, - 0x6BD0, 0x18AD, 0x6BD2, 0x076D, 0x6BD3, 0x0E4E, 0x6BD4, 0x02E2, 0x6BD6, - 0x1B41, 0x6BD7, 0x076E, 0x6BD8, 0x1B42, 0x6BDA, 0x13F2, 0x6BDB, 0x02E3, - 0x6BDE, 0x19CC, 0x6BE0, 0x1B43, 0x6BE2, 0x1CF2, 0x6BE3, 0x1CF1, 0x6BE4, - 0x1CEF, 0x6BE6, 0x1CEE, 0x6BE7, 0x1CF3, 0x6BE8, 0x1CF0, 0x6BEB, 0x0AE9, - 0x6BEC, 0x0AEA, 0x6BEF, 0x0CA1, 0x6BF0, 0x21BB, 0x6BF2, 0x21BC, 0x6BF3, - 0x21BD, 0x6BF7, 0x244C, 0x6BF8, 0x244D, 0x6BF9, 0x244B, 0x6BFB, 0x2449, - 0x6BFC, 0x244A, 0x6BFD, 0x0E4F, 0x6BFE, 0x26EA, 0x6BFF, 0x292B, 0x6C00, - 0x292A, 0x6C01, 0x2929, 0x6C02, 0x292C, 0x6C03, 0x2B91, 0x6C04, 0x2B90, - 0x6C05, 0x12DE, 0x6C06, 0x2B92, 0x6C08, 0x13F3, 0x6C09, 0x2D8C, 0x6C0B, - 0x2F41, 0x6C0C, 0x30A9, 0x6C0D, 0x3388, 0x6C0F, 0x02E4, 0x6C10, 0x0350, - 0x6C11, 0x034F, 0x6C13, 0x061E, 0x6C14, 0x178C, 0x6C15, 0x17AA, 0x6C16, - 0x03E6, 0x6C18, 0x1801, 0x6C19, 0x18AE, 0x6C1A, 0x18AF, 0x6C1B, 0x061F, - 0x6C1D, 0x19CD, 0x6C1F, 0x076F, 0x6C20, 0x1B44, 0x6C21, 0x1B45, 0x6C23, - 0x0902, 0x6C24, 0x0906, 0x6C25, 0x1CF4, 0x6C26, 0x0905, 0x6C27, 0x0903, - 0x6C28, 0x0904, 0x6C2A, 0x1F44, 0x6C2B, 0x0AEB, 0x6C2C, 0x0CA4, 0x6C2E, - 0x0CA2, 0x6C2F, 0x0CA3, 0x6C30, 0x21BE, 0x6C33, 0x1003, 0x6C34, 0x02E5, - 0x6C36, 0x17AB, 0x6C38, 0x0351, 0x6C3B, 0x17AE, 0x6C3E, 0x0354, 0x6C3F, - 0x17AD, 0x6C40, 0x0353, 0x6C41, 0x0352, 0x6C42, 0x04CB, 0x6C43, 0x17AC, - 0x6C46, 0x1802, 0x6C4A, 0x1806, 0x6C4B, 0x1808, 0x6C4C, 0x1809, 0x6C4D, - 0x03F0, 0x6C4E, 0x03F1, 0x6C4F, 0x1805, 0x6C50, 0x03EC, 0x6C52, 0x1803, - 0x6C54, 0x1807, 0x6C55, 0x03ED, 0x6C57, 0x03E8, 0x6C59, 0x03E9, 0x6C5B, - 0x03EF, 0x6C5C, 0x1804, 0x6C5D, 0x03E7, 0x6C5E, 0x04CC, 0x6C5F, 0x03EA, - 0x6C60, 0x03EB, 0x6C61, 0x03EE, 0x6C65, 0x18C0, 0x6C66, 0x18BE, 0x6C67, - 0x18B1, 0x6C68, 0x04D8, 0x6C69, 0x18B8, 0x6C6A, 0x04D3, 0x6C6B, 0x18B2, - 0x6C6D, 0x18BA, 0x6C6F, 0x18B7, 0x6C70, 0x04D6, 0x6C71, 0x18B6, 0x6C72, - 0x04DD, 0x6C73, 0x18BF, 0x6C74, 0x04DF, 0x6C76, 0x04E1, 0x6C78, 0x18B0, - 0x6C7A, 0x04D4, 0x6C7B, 0x18C1, 0x6C7D, 0x04DB, 0x6C7E, 0x04DE, 0x6C80, - 0x19E4, 0x6C81, 0x04CE, 0x6C82, 0x04E5, 0x6C83, 0x04DC, 0x6C84, 0x18B3, - 0x6C85, 0x04D1, 0x6C86, 0x04E0, 0x6C87, 0x18BB, 0x6C88, 0x04CF, 0x6C89, - 0x04D0, 0x6C8A, 0x19E2, 0x6C8B, 0x18B4, 0x6C8C, 0x04D7, 0x6C8D, 0x04E2, - 0x6C8E, 0x18C2, 0x6C8F, 0x18B5, 0x6C90, 0x04D5, 0x6C92, 0x04DA, 0x6C93, - 0x19CE, 0x6C94, 0x04E3, 0x6C95, 0x18BC, 0x6C96, 0x04D9, 0x6C98, 0x04E4, - 0x6C99, 0x04CD, 0x6C9A, 0x18B9, 0x6C9B, 0x04D2, 0x6C9C, 0x18BD, 0x6C9D, - 0x19E3, 0x6CAB, 0x062B, 0x6CAC, 0x063B, 0x6CAD, 0x19D5, 0x6CAE, 0x0632, - 0x6CB0, 0x19EA, 0x6CB1, 0x0623, 0x6CB3, 0x0626, 0x6CB4, 0x19E1, 0x6CB6, - 0x19D3, 0x6CB7, 0x19D7, 0x6CB8, 0x062E, 0x6CB9, 0x0630, 0x6CBA, 0x19DA, - 0x6CBB, 0x0637, 0x6CBC, 0x0629, 0x6CBD, 0x0627, 0x6CBE, 0x0628, 0x6CBF, - 0x0636, 0x6CC0, 0x19E6, 0x6CC1, 0x0631, 0x6CC2, 0x19D9, 0x6CC3, 0x19DB, - 0x6CC4, 0x062F, 0x6CC5, 0x0634, 0x6CC6, 0x19DC, 0x6CC7, 0x19E9, 0x6CC9, - 0x0770, 0x6CCA, 0x063A, 0x6CCC, 0x0624, 0x6CCD, 0x19E8, 0x6CCF, 0x19EC, - 0x6CD0, 0x19D8, 0x6CD1, 0x19EE, 0x6CD2, 0x19DF, 0x6CD3, 0x062D, 0x6CD4, - 0x19D4, 0x6CD5, 0x062C, 0x6CD6, 0x063E, 0x6CD7, 0x0633, 0x6CD9, 0x19D2, - 0x6CDA, 0x1B4E, 0x6CDB, 0x0639, 0x6CDC, 0x063D, 0x6CDD, 0x19E0, 0x6CDE, - 0x19E5, 0x6CE0, 0x063F, 0x6CE1, 0x0638, 0x6CE2, 0x062A, 0x6CE3, 0x0620, - 0x6CE5, 0x0625, 0x6CE7, 0x19D6, 0x6CE8, 0x0621, 0x6CE9, 0x19ED, 0x6CEB, - 0x19D0, 0x6CEC, 0x19CF, 0x6CED, 0x19DD, 0x6CEE, 0x19D1, 0x6CEF, 0x063C, - 0x6CF0, 0x0907, 0x6CF1, 0x0635, 0x6CF2, 0x19DE, 0x6CF3, 0x0622, 0x6CF5, - 0x077F, 0x6CF9, 0x19EB, 0x6D00, 0x1B55, 0x6D01, 0x1B58, 0x6D03, 0x1B5B, - 0x6D04, 0x1B50, 0x6D07, 0x1B5E, 0x6D08, 0x1B61, 0x6D09, 0x1B63, 0x6D0A, - 0x1B4D, 0x6D0B, 0x0771, 0x6D0C, 0x0776, 0x6D0D, 0x1CF9, 0x6D0E, 0x0786, - 0x6D0F, 0x1B5C, 0x6D10, 0x1B64, 0x6D11, 0x1B54, 0x6D12, 0x1B4C, 0x6D16, - 0x1D14, 0x6D17, 0x0779, 0x6D18, 0x1B59, 0x6D19, 0x1B51, 0x6D1A, 0x1B53, - 0x6D1B, 0x077E, 0x6D1D, 0x1B56, 0x6D1E, 0x0778, 0x6D1F, 0x1B49, 0x6D20, - 0x1B5F, 0x6D22, 0x1B62, 0x6D25, 0x0775, 0x6D27, 0x0781, 0x6D28, 0x1B46, - 0x6D29, 0x0783, 0x6D2A, 0x0773, 0x6D2B, 0x0787, 0x6D2C, 0x1B60, 0x6D2D, - 0x1B48, 0x6D2E, 0x0784, 0x6D2F, 0x1D0E, 0x6D30, 0x19E7, 0x6D31, 0x0777, - 0x6D32, 0x0772, 0x6D33, 0x1B4F, 0x6D34, 0x1B47, 0x6D35, 0x0785, 0x6D36, - 0x077D, 0x6D37, 0x1B5A, 0x6D38, 0x0782, 0x6D39, 0x0780, 0x6D3A, 0x1B52, - 0x6D3B, 0x077A, 0x6D3C, 0x1B4A, 0x6D3D, 0x077B, 0x6D3E, 0x077C, 0x6D3F, - 0x1B4B, 0x6D40, 0x1B5D, 0x6D41, 0x0774, 0x6D42, 0x1B57, 0x6D58, 0x1CFC, - 0x6D59, 0x090F, 0x6D5A, 0x0914, 0x6D5E, 0x1D05, 0x6D5F, 0x1D0B, 0x6D60, - 0x1D07, 0x6D61, 0x1CFA, 0x6D62, 0x1CFD, 0x6D63, 0x1CF6, 0x6D64, 0x1CF7, - 0x6D65, 0x091B, 0x6D66, 0x090C, 0x6D67, 0x1D06, 0x6D68, 0x1D0F, 0x6D69, - 0x0916, 0x6D6A, 0x0908, 0x6D6C, 0x0911, 0x6D6D, 0x1CFE, 0x6D6E, 0x0913, - 0x6D6F, 0x1CFF, 0x6D70, 0x1D09, 0x6D74, 0x0915, 0x6D75, 0x1D18, 0x6D76, - 0x1CF8, 0x6D77, 0x090E, 0x6D78, 0x090D, 0x6D79, 0x0919, 0x6D7A, 0x1CF5, - 0x6D7B, 0x1D16, 0x6D7C, 0x1D0A, 0x6D7D, 0x1D17, 0x6D7E, 0x1D11, 0x6D7F, - 0x1D03, 0x6D80, 0x1D12, 0x6D82, 0x1D0C, 0x6D83, 0x1D15, 0x6D84, 0x1D13, - 0x6D85, 0x091A, 0x6D86, 0x1D04, 0x6D87, 0x090B, 0x6D88, 0x090A, 0x6D89, - 0x0912, 0x6D8A, 0x0918, 0x6D8B, 0x1D10, 0x6D8C, 0x0917, 0x6D8D, 0x1D01, - 0x6D8E, 0x0AEC, 0x6D90, 0x1D19, 0x6D91, 0x1D00, 0x6D92, 0x1CFB, 0x6D93, - 0x0910, 0x6D94, 0x091C, 0x6D95, 0x0909, 0x6D97, 0x1D08, 0x6D98, 0x1D0D, - 0x6DAA, 0x0B0E, 0x6DAB, 0x1F46, 0x6DAC, 0x1F4A, 0x6DAE, 0x0AFB, 0x6DAF, - 0x0AF9, 0x6DB2, 0x0AF0, 0x6DB3, 0x1F48, 0x6DB4, 0x1F47, 0x6DB5, 0x0B04, - 0x6DB7, 0x1F4D, 0x6DB8, 0x0AFE, 0x6DBA, 0x1F5F, 0x6DBB, 0x1F6B, 0x6DBC, - 0x0AED, 0x6DBD, 0x1F5C, 0x6DBE, 0x1F55, 0x6DBF, 0x0B10, 0x6DC0, 0x1F45, - 0x6DC2, 0x1F61, 0x6DC4, 0x0B0D, 0x6DC5, 0x0B01, 0x6DC6, 0x0B0C, 0x6DC7, - 0x0AF7, 0x6DC8, 0x1F51, 0x6DC9, 0x1F63, 0x6DCA, 0x1F5B, 0x6DCB, 0x0AF8, - 0x6DCC, 0x0AF2, 0x6DCD, 0x1F69, 0x6DCF, 0x1F62, 0x6DD0, 0x1F64, 0x6DD1, - 0x0AFA, 0x6DD2, 0x0B02, 0x6DD3, 0x1F66, 0x6DD4, 0x1F4F, 0x6DD5, 0x1F60, - 0x6DD6, 0x1F54, 0x6DD7, 0x1F68, 0x6DD8, 0x0B07, 0x6DD9, 0x0AEF, 0x6DDA, - 0x0B05, 0x6DDB, 0x1F59, 0x6DDC, 0x1F57, 0x6DDD, 0x1F58, 0x6DDE, 0x0AFC, - 0x6DDF, 0x1F53, 0x6DE0, 0x1F52, 0x6DE1, 0x0AF1, 0x6DE2, 0x1F4C, 0x6DE3, - 0x1F6A, 0x6DE4, 0x0AF3, 0x6DE5, 0x1F56, 0x6DE6, 0x0B11, 0x6DE8, 0x0B0B, - 0x6DE9, 0x1F4B, 0x6DEA, 0x0B08, 0x6DEB, 0x0B06, 0x6DEC, 0x0B0F, 0x6DED, - 0x1F5D, 0x6DEE, 0x0B0A, 0x6DEF, 0x1D02, 0x6DF0, 0x1F5E, 0x6DF1, 0x0B09, - 0x6DF2, 0x1F65, 0x6DF3, 0x0AEE, 0x6DF4, 0x1F5A, 0x6DF5, 0x0B00, 0x6DF6, - 0x1F4E, 0x6DF7, 0x0AFF, 0x6DF9, 0x0AFD, 0x6DFA, 0x0AF5, 0x6DFB, 0x0AF4, - 0x6DFC, 0x21BF, 0x6DFD, 0x1F67, 0x6E00, 0x1F50, 0x6E03, 0x21D4, 0x6E05, - 0x0AF6, 0x6E19, 0x0CC1, 0x6E1A, 0x0B03, 0x6E1B, 0x0CAF, 0x6E1C, 0x21CE, - 0x6E1D, 0x0CBD, 0x6E1F, 0x21C2, 0x6E20, 0x0CAC, 0x6E21, 0x0CA8, 0x6E22, - 0x21E0, 0x6E23, 0x0CAE, 0x6E24, 0x0CB2, 0x6E25, 0x0CAD, 0x6E26, 0x0CB6, - 0x6E27, 0x21E4, 0x6E28, 0x21DB, 0x6E2B, 0x21C9, 0x6E2C, 0x0CBB, 0x6E2D, - 0x0CB5, 0x6E2E, 0x21D5, 0x6E2F, 0x0CA5, 0x6E30, 0x21E1, 0x6E31, 0x21DA, - 0x6E32, 0x0CA9, 0x6E33, 0x21CF, 0x6E34, 0x0CB8, 0x6E35, 0x21EC, 0x6E36, - 0x21ED, 0x6E38, 0x0CA6, 0x6E39, 0x21DF, 0x6E3A, 0x0CBA, 0x6E3B, 0x21D3, - 0x6E3C, 0x21C5, 0x6E3D, 0x21C6, 0x6E3E, 0x0CBE, 0x6E3F, 0x21CA, 0x6E40, - 0x21D1, 0x6E41, 0x21CB, 0x6E43, 0x0CBC, 0x6E44, 0x0CC4, 0x6E45, 0x21C7, - 0x6E46, 0x21C0, 0x6E47, 0x21C1, 0x6E49, 0x21C3, 0x6E4A, 0x0CAB, 0x6E4B, - 0x21D0, 0x6E4D, 0x0CB9, 0x6E4E, 0x0CC2, 0x6E51, 0x21D2, 0x6E52, 0x21EA, - 0x6E53, 0x21E2, 0x6E54, 0x0CA7, 0x6E55, 0x21E8, 0x6E56, 0x0CB3, 0x6E58, - 0x0CB1, 0x6E5A, 0x21EE, 0x6E5B, 0x0CB0, 0x6E5C, 0x21D8, 0x6E5D, 0x21CC, - 0x6E5E, 0x21D6, 0x6E5F, 0x0CC7, 0x6E60, 0x21DC, 0x6E61, 0x21D9, 0x6E62, - 0x21C8, 0x6E63, 0x0CC3, 0x6E64, 0x21E6, 0x6E65, 0x21E3, 0x6E66, 0x21EB, - 0x6E67, 0x0CAA, 0x6E68, 0x21D7, 0x6E69, 0x0CC6, 0x6E6B, 0x21DE, 0x6E6E, - 0x0CB4, 0x6E6F, 0x0CB7, 0x6E71, 0x21DD, 0x6E72, 0x0CC5, 0x6E73, 0x21CD, - 0x6E74, 0x1F49, 0x6E77, 0x21E7, 0x6E78, 0x21E5, 0x6E79, 0x21E9, 0x6E88, - 0x21C4, 0x6E89, 0x0CC0, 0x6E8D, 0x246C, 0x6E8E, 0x246B, 0x6E8F, 0x2451, - 0x6E90, 0x0E55, 0x6E92, 0x246A, 0x6E93, 0x2454, 0x6E94, 0x2455, 0x6E96, - 0x0E5F, 0x6E97, 0x2473, 0x6E98, 0x0E5A, 0x6E99, 0x2469, 0x6E9B, 0x244E, - 0x6E9C, 0x0E60, 0x6E9D, 0x0E56, 0x6E9E, 0x245D, 0x6E9F, 0x2453, 0x6EA0, - 0x2456, 0x6EA1, 0x246E, 0x6EA2, 0x0E50, 0x6EA3, 0x2475, 0x6EA4, 0x246D, - 0x6EA5, 0x0E59, 0x6EA6, 0x2462, 0x6EA7, 0x0E64, 0x6EAA, 0x0E63, 0x6EAB, - 0x0E5D, 0x6EAE, 0x2474, 0x6EAF, 0x0E51, 0x6EB0, 0x2460, 0x6EB1, 0x2457, - 0x6EB2, 0x2464, 0x6EB3, 0x2470, 0x6EB4, 0x0E65, 0x6EB6, 0x0E53, 0x6EB7, - 0x245F, 0x6EB9, 0x2458, 0x6EBA, 0x0E5C, 0x6EBC, 0x0E5B, 0x6EBD, 0x245B, - 0x6EBE, 0x2465, 0x6EBF, 0x246F, 0x6EC0, 0x2452, 0x6EC1, 0x245C, 0x6EC2, - 0x0E54, 0x6EC3, 0x2466, 0x6EC4, 0x0E61, 0x6EC5, 0x0E58, 0x6EC6, 0x2459, - 0x6EC7, 0x0E57, 0x6EC8, 0x2450, 0x6EC9, 0x245E, 0x6ECA, 0x2472, 0x6ECB, - 0x0CBF, 0x6ECC, 0x101F, 0x6ECD, 0x2461, 0x6ECE, 0x26EB, 0x6ECF, 0x2463, - 0x6ED0, 0x2471, 0x6ED1, 0x0E5E, 0x6ED2, 0x245A, 0x6ED3, 0x0E52, 0x6ED4, - 0x0E62, 0x6ED5, 0x119A, 0x6ED6, 0x244F, 0x6ED8, 0x2468, 0x6EDC, 0x2467, - 0x6EEB, 0x2707, 0x6EEC, 0x101C, 0x6EED, 0x26FC, 0x6EEE, 0x2701, 0x6EEF, - 0x1011, 0x6EF1, 0x26ED, 0x6EF2, 0x101E, 0x6EF4, 0x1008, 0x6EF5, 0x26EC, - 0x6EF6, 0x270D, 0x6EF7, 0x1020, 0x6EF8, 0x26F0, 0x6EF9, 0x2700, 0x6EFB, - 0x26F2, 0x6EFC, 0x2710, 0x6EFD, 0x270C, 0x6EFE, 0x1006, 0x6EFF, 0x1010, - 0x6F00, 0x2946, 0x6F01, 0x101D, 0x6F02, 0x100E, 0x6F03, 0x26EE, 0x6F05, - 0x270B, 0x6F06, 0x1012, 0x6F07, 0x2708, 0x6F08, 0x2715, 0x6F09, 0x26F4, - 0x6F0A, 0x26FD, 0x6F0D, 0x2713, 0x6F0E, 0x2709, 0x6F0F, 0x100D, 0x6F12, - 0x26FB, 0x6F13, 0x1007, 0x6F14, 0x1005, 0x6F15, 0x1017, 0x6F18, 0x26F9, - 0x6F19, 0x26F6, 0x6F1A, 0x26F7, 0x6F1C, 0x270F, 0x6F1E, 0x2714, 0x6F1F, - 0x2712, 0x6F20, 0x100B, 0x6F21, 0x2716, 0x6F22, 0x100F, 0x6F23, 0x1016, - 0x6F25, 0x26EF, 0x6F26, 0x292E, 0x6F27, 0x26F8, 0x6F29, 0x1009, 0x6F2A, - 0x101B, 0x6F2B, 0x1018, 0x6F2C, 0x100C, 0x6F2D, 0x2702, 0x6F2E, 0x26F3, - 0x6F2F, 0x1019, 0x6F30, 0x2704, 0x6F31, 0x1013, 0x6F32, 0x1015, 0x6F33, - 0x1004, 0x6F35, 0x2706, 0x6F36, 0x26FE, 0x6F37, 0x26F1, 0x6F38, 0x1014, - 0x6F39, 0x270E, 0x6F3A, 0x2711, 0x6F3B, 0x26FA, 0x6F3C, 0x2705, 0x6F3E, - 0x100A, 0x6F3F, 0x1189, 0x6F40, 0x2703, 0x6F41, 0x292D, 0x6F43, 0x270A, - 0x6F4E, 0x26F5, 0x6F4F, 0x2937, 0x6F50, 0x2941, 0x6F51, 0x118C, 0x6F52, - 0x2940, 0x6F53, 0x294C, 0x6F54, 0x118E, 0x6F55, 0x293E, 0x6F57, 0x2942, - 0x6F58, 0x1199, 0x6F5A, 0x2939, 0x6F5B, 0x1191, 0x6F5D, 0x2945, 0x6F5E, - 0x2B9A, 0x6F5F, 0x119D, 0x6F60, 0x119C, 0x6F61, 0x2947, 0x6F62, 0x2936, - 0x6F63, 0x2951, 0x6F64, 0x1197, 0x6F66, 0x118D, 0x6F67, 0x294A, 0x6F69, - 0x294E, 0x6F6A, 0x2953, 0x6F6B, 0x2948, 0x6F6C, 0x293C, 0x6F6D, 0x1190, - 0x6F6E, 0x1193, 0x6F6F, 0x119B, 0x6F70, 0x1196, 0x6F72, 0x293F, 0x6F73, - 0x26FF, 0x6F76, 0x293B, 0x6F77, 0x2952, 0x6F78, 0x1192, 0x6F7A, 0x1195, - 0x6F7B, 0x2954, 0x6F7C, 0x118A, 0x6F7D, 0x2949, 0x6F7E, 0x292F, 0x6F7F, - 0x294F, 0x6F80, 0x13FC, 0x6F82, 0x293D, 0x6F84, 0x118B, 0x6F85, 0x2938, - 0x6F86, 0x118F, 0x6F87, 0x2930, 0x6F88, 0x101A, 0x6F89, 0x2934, 0x6F8B, - 0x294D, 0x6F8C, 0x2935, 0x6F8D, 0x2933, 0x6F8E, 0x1194, 0x6F90, 0x294B, - 0x6F92, 0x2932, 0x6F93, 0x2944, 0x6F94, 0x2943, 0x6F95, 0x2950, 0x6F96, - 0x293A, 0x6F97, 0x1198, 0x6F9E, 0x2B9D, 0x6FA0, 0x12EB, 0x6FA1, 0x12E1, - 0x6FA2, 0x2BA9, 0x6FA3, 0x2B95, 0x6FA4, 0x12E3, 0x6FA5, 0x2BA1, 0x6FA6, - 0x12EA, 0x6FA7, 0x12E5, 0x6FA8, 0x2B9F, 0x6FA9, 0x2D8E, 0x6FAA, 0x2BA5, - 0x6FAB, 0x2BAB, 0x6FAC, 0x2BA4, 0x6FAD, 0x2B93, 0x6FAE, 0x2BA2, 0x6FAF, - 0x2BAD, 0x6FB0, 0x2BAF, 0x6FB1, 0x12E0, 0x6FB2, 0x2BAE, 0x6FB3, 0x12E6, - 0x6FB4, 0x12EC, 0x6FB6, 0x12E9, 0x6FB8, 0x2BA8, 0x6FB9, 0x12E8, 0x6FBA, - 0x2BA3, 0x6FBC, 0x2B97, 0x6FBD, 0x2B9C, 0x6FBF, 0x2BA7, 0x6FC0, 0x12E7, - 0x6FC1, 0x12E4, 0x6FC2, 0x12DF, 0x6FC3, 0x12E2, 0x6FC4, 0x2B9B, 0x6FC6, - 0x2931, 0x6FC7, 0x2B96, 0x6FC8, 0x2B99, 0x6FC9, 0x2BAA, 0x6FCA, 0x2B9E, - 0x6FCB, 0x2B94, 0x6FCC, 0x2D8D, 0x6FCD, 0x2BAC, 0x6FCE, 0x2B98, 0x6FCF, - 0x2BA6, 0x6FD4, 0x2D90, 0x6FD5, 0x1400, 0x6FD8, 0x13F4, 0x6FDB, 0x13F8, - 0x6FDC, 0x2D92, 0x6FDD, 0x2D98, 0x6FDE, 0x2D96, 0x6FDF, 0x13F6, 0x6FE0, - 0x13F7, 0x6FE1, 0x13FE, 0x6FE2, 0x2D99, 0x6FE3, 0x2D91, 0x6FE4, 0x13F9, - 0x6FE6, 0x2D95, 0x6FE7, 0x2D94, 0x6FE8, 0x2D9A, 0x6FE9, 0x13FF, 0x6FEB, - 0x13FA, 0x6FEC, 0x13FD, 0x6FED, 0x2D93, 0x6FEE, 0x1401, 0x6FEF, 0x13FB, - 0x6FF0, 0x1402, 0x6FF1, 0x13F5, 0x6FF2, 0x2D97, 0x6FF4, 0x2D8F, 0x6FF7, - 0x2F4E, 0x6FFA, 0x14EB, 0x6FFB, 0x2F4B, 0x6FFC, 0x2F4D, 0x6FFE, 0x14E9, - 0x6FFF, 0x2F49, 0x7000, 0x2F4A, 0x7001, 0x2F45, 0x7004, 0x2BA0, 0x7005, - 0x2F46, 0x7006, 0x14EA, 0x7007, 0x2F42, 0x7009, 0x14E7, 0x700A, 0x2F4F, - 0x700B, 0x14E8, 0x700C, 0x2F43, 0x700D, 0x2F44, 0x700E, 0x2F48, 0x700F, - 0x14ED, 0x7011, 0x14EC, 0x7014, 0x2F47, 0x7015, 0x158F, 0x7016, 0x30AD, - 0x7017, 0x30B3, 0x7018, 0x1590, 0x7019, 0x30AA, 0x701A, 0x158D, 0x701B, - 0x158A, 0x701C, 0x30B5, 0x701D, 0x158E, 0x701F, 0x158B, 0x7020, 0x30AC, - 0x7021, 0x30AF, 0x7022, 0x30B0, 0x7023, 0x30B1, 0x7024, 0x30B4, 0x7026, - 0x2F4C, 0x7027, 0x30AB, 0x7028, 0x158C, 0x7029, 0x30B2, 0x702A, 0x31EF, - 0x702B, 0x30AE, 0x702F, 0x31E6, 0x7030, 0x161D, 0x7031, 0x31E9, 0x7032, - 0x161E, 0x7033, 0x31F2, 0x7034, 0x31E8, 0x7035, 0x31E5, 0x7037, 0x31E7, - 0x7038, 0x31EB, 0x7039, 0x31EE, 0x703A, 0x31ED, 0x703B, 0x31F1, 0x703C, - 0x31E4, 0x703E, 0x161C, 0x703F, 0x31EC, 0x7040, 0x31F0, 0x7041, 0x31F3, - 0x7042, 0x31EA, 0x7043, 0x32D8, 0x7044, 0x32D9, 0x7045, 0x32DD, 0x7046, - 0x32DE, 0x7048, 0x32DB, 0x7049, 0x32DC, 0x704A, 0x32DA, 0x704C, 0x167A, - 0x7051, 0x16C8, 0x7052, 0x338C, 0x7055, 0x3389, 0x7056, 0x338A, 0x7057, - 0x338B, 0x7058, 0x16C9, 0x705A, 0x3423, 0x705B, 0x3422, 0x705D, 0x348A, - 0x705E, 0x1722, 0x705F, 0x3488, 0x7060, 0x348B, 0x7061, 0x3489, 0x7062, - 0x34D0, 0x7063, 0x1744, 0x7064, 0x1752, 0x7065, 0x351C, 0x7066, 0x3506, - 0x7068, 0x351B, 0x7069, 0x3547, 0x706A, 0x3548, 0x706B, 0x02E6, 0x7070, - 0x03F2, 0x7071, 0x180A, 0x7074, 0x18C3, 0x7076, 0x04E6, 0x7078, 0x04E9, - 0x707A, 0x18C4, 0x707C, 0x04E7, 0x707D, 0x04E8, 0x7082, 0x19F7, 0x7083, - 0x19F9, 0x7084, 0x19F4, 0x7085, 0x19F1, 0x7086, 0x19F3, 0x708A, 0x0643, - 0x708E, 0x0641, 0x7091, 0x19F5, 0x7092, 0x0642, 0x7093, 0x19F2, 0x7094, - 0x19EF, 0x7095, 0x0640, 0x7096, 0x19F6, 0x7098, 0x19F0, 0x7099, 0x0644, - 0x709A, 0x19F8, 0x709F, 0x1B66, 0x70A1, 0x1B6A, 0x70A4, 0x0790, 0x70A9, - 0x1B6D, 0x70AB, 0x0788, 0x70AC, 0x078B, 0x70AD, 0x078D, 0x70AE, 0x078F, - 0x70AF, 0x078C, 0x70B0, 0x1B69, 0x70B1, 0x1B68, 0x70B3, 0x078A, 0x70B4, - 0x1B6B, 0x70B5, 0x1B6C, 0x70B7, 0x1B65, 0x70B8, 0x078E, 0x70BA, 0x0789, - 0x70BE, 0x1B67, 0x70C5, 0x1D27, 0x70C6, 0x1D28, 0x70C7, 0x1D29, 0x70C8, - 0x0921, 0x70CA, 0x091D, 0x70CB, 0x1D1E, 0x70CD, 0x1D26, 0x70CE, 0x1D2B, - 0x70CF, 0x0922, 0x70D1, 0x1D1C, 0x70D2, 0x1D22, 0x70D3, 0x1D1B, 0x70D4, - 0x1D25, 0x70D7, 0x1D21, 0x70D8, 0x091E, 0x70D9, 0x0920, 0x70DA, 0x1D2A, - 0x70DC, 0x1D1A, 0x70DD, 0x1D1D, 0x70DE, 0x1D23, 0x70E0, 0x1D24, 0x70E1, - 0x1D2C, 0x70E2, 0x1D20, 0x70E4, 0x091F, 0x70EF, 0x0B16, 0x70F0, 0x1F72, - 0x70F3, 0x1F74, 0x70F4, 0x1F70, 0x70F6, 0x1F7C, 0x70F7, 0x1F6E, 0x70F8, - 0x1F7B, 0x70F9, 0x0B12, 0x70FA, 0x1F6C, 0x70FB, 0x21F2, 0x70FC, 0x1F76, - 0x70FD, 0x0B15, 0x70FF, 0x1F77, 0x7100, 0x1F7A, 0x7102, 0x1F7E, 0x7104, - 0x1F73, 0x7106, 0x1F78, 0x7109, 0x0B13, 0x710A, 0x0B14, 0x710B, 0x1F7D, - 0x710C, 0x1F71, 0x710D, 0x1F6D, 0x710E, 0x1F7F, 0x7110, 0x1F75, 0x7113, - 0x1F79, 0x7117, 0x1F6F, 0x7119, 0x0CC8, 0x711A, 0x0CC9, 0x711B, 0x21FC, - 0x711C, 0x0CCF, 0x711E, 0x21F0, 0x711F, 0x21F9, 0x7120, 0x21EF, 0x7121, - 0x0CCC, 0x7122, 0x21F7, 0x7123, 0x21F5, 0x7125, 0x21F6, 0x7126, 0x0CCA, - 0x7128, 0x21FA, 0x712E, 0x21F3, 0x712F, 0x21F1, 0x7130, 0x0CCB, 0x7131, - 0x21F4, 0x7132, 0x21F8, 0x7136, 0x0CCD, 0x713A, 0x21FB, 0x7141, 0x247B, - 0x7142, 0x2482, 0x7143, 0x2484, 0x7144, 0x248A, 0x7146, 0x0E72, 0x7147, - 0x2476, 0x7149, 0x0E6A, 0x714B, 0x2485, 0x714C, 0x0E6F, 0x714D, 0x248B, - 0x714E, 0x0E66, 0x7150, 0x2488, 0x7152, 0x2478, 0x7153, 0x2489, 0x7154, - 0x2477, 0x7156, 0x0E74, 0x7158, 0x2483, 0x7159, 0x0E67, 0x715A, 0x248C, - 0x715C, 0x0E6C, 0x715D, 0x247C, 0x715E, 0x0E71, 0x715F, 0x2487, 0x7160, - 0x247A, 0x7161, 0x2481, 0x7162, 0x247D, 0x7163, 0x2479, 0x7164, 0x0E69, - 0x7165, 0x0E70, 0x7166, 0x0E6E, 0x7167, 0x0E6B, 0x7168, 0x0E73, 0x7169, - 0x0E68, 0x716A, 0x2480, 0x716C, 0x0E6D, 0x716E, 0x0CCE, 0x7170, 0x2486, - 0x7172, 0x247E, 0x7178, 0x247F, 0x717B, 0x271E, 0x717D, 0x1023, 0x7180, - 0x271A, 0x7181, 0x2720, 0x7182, 0x271C, 0x7184, 0x1025, 0x7185, 0x271B, - 0x7186, 0x271F, 0x7187, 0x2717, 0x7189, 0x2719, 0x718A, 0x1024, 0x718F, - 0x271D, 0x7190, 0x2718, 0x7192, 0x1026, 0x7194, 0x1021, 0x7197, 0x2721, - 0x7199, 0x1022, 0x719A, 0x295A, 0x719B, 0x2957, 0x719C, 0x2963, 0x719D, - 0x295D, 0x719E, 0x295F, 0x719F, 0x119E, 0x71A0, 0x2959, 0x71A1, 0x2961, - 0x71A4, 0x2960, 0x71A5, 0x295E, 0x71A7, 0x2964, 0x71A8, 0x11A1, 0x71A9, - 0x295B, 0x71AA, 0x2962, 0x71AC, 0x119F, 0x71AF, 0x2956, 0x71B0, 0x2958, - 0x71B1, 0x11A0, 0x71B2, 0x2955, 0x71B3, 0x2965, 0x71B5, 0x295C, 0x71B8, - 0x2BB3, 0x71B9, 0x12F3, 0x71BC, 0x2BBE, 0x71BD, 0x2BBC, 0x71BE, 0x12ED, - 0x71BF, 0x2BB2, 0x71C0, 0x2BB5, 0x71C1, 0x2BB6, 0x71C2, 0x2BB1, 0x71C3, - 0x12F7, 0x71C4, 0x12F8, 0x71C5, 0x2BB0, 0x71C6, 0x2BBF, 0x71C7, 0x2BBA, - 0x71C8, 0x12F1, 0x71C9, 0x12EE, 0x71CA, 0x2BB9, 0x71CB, 0x2BB7, 0x71CE, - 0x12F4, 0x71CF, 0x2BBB, 0x71D0, 0x12EF, 0x71D2, 0x12F0, 0x71D4, 0x2BB8, - 0x71D5, 0x12F2, 0x71D6, 0x2BB4, 0x71D8, 0x2BBD, 0x71D9, 0x12F5, 0x71DA, - 0x2BC0, 0x71DB, 0x2BC1, 0x71DC, 0x12F6, 0x71DF, 0x1404, 0x71E0, 0x140B, - 0x71E1, 0x2D9B, 0x71E2, 0x2DA1, 0x71E4, 0x2D9F, 0x71E5, 0x1407, 0x71E6, - 0x1406, 0x71E7, 0x1403, 0x71E8, 0x2D9D, 0x71EC, 0x1409, 0x71ED, 0x1408, - 0x71EE, 0x1405, 0x71F0, 0x2DA0, 0x71F1, 0x2D9C, 0x71F2, 0x2D9E, 0x71F4, - 0x140A, 0x71F8, 0x14F1, 0x71F9, 0x2F52, 0x71FB, 0x14EE, 0x71FC, 0x14EF, - 0x71FD, 0x2F54, 0x71FE, 0x14F0, 0x71FF, 0x2F51, 0x7201, 0x2F50, 0x7202, - 0x30B9, 0x7203, 0x2F53, 0x7205, 0x30BA, 0x7206, 0x1591, 0x7207, 0x30B8, - 0x720A, 0x30B7, 0x720C, 0x30B6, 0x720D, 0x1592, 0x7210, 0x161F, 0x7213, - 0x31F4, 0x7214, 0x31F5, 0x7219, 0x32E1, 0x721A, 0x32E0, 0x721B, 0x167B, - 0x721D, 0x32DF, 0x721E, 0x338D, 0x721F, 0x338E, 0x7222, 0x3424, 0x7223, - 0x348C, 0x7226, 0x34D1, 0x7227, 0x3535, 0x7228, 0x1766, 0x7229, 0x3549, - 0x722A, 0x02E7, 0x722C, 0x0645, 0x722D, 0x0646, 0x7230, 0x0791, 0x7235, - 0x140C, 0x7236, 0x02E8, 0x7238, 0x0647, 0x7239, 0x0923, 0x723A, 0x0E75, - 0x723B, 0x02E9, 0x723D, 0x0B17, 0x723E, 0x1027, 0x723F, 0x178D, 0x7241, - 0x1B6E, 0x7242, 0x1D2D, 0x7244, 0x2722, 0x7246, 0x140D, 0x7247, 0x02EA, - 0x7248, 0x0648, 0x7249, 0x1B6F, 0x724A, 0x1B70, 0x724B, 0x21FD, 0x724C, - 0x0CD0, 0x724F, 0x248D, 0x7252, 0x0E76, 0x7253, 0x2723, 0x7256, 0x11A2, - 0x7258, 0x1593, 0x7259, 0x02EB, 0x725A, 0x21FE, 0x725B, 0x02EC, 0x725D, - 0x03F4, 0x725E, 0x180B, 0x725F, 0x03F3, 0x7260, 0x04EC, 0x7261, 0x04EB, - 0x7262, 0x04EA, 0x7263, 0x18C5, 0x7267, 0x0649, 0x7269, 0x064A, 0x726A, - 0x19FA, 0x726C, 0x1B71, 0x726E, 0x1B74, 0x726F, 0x0793, 0x7270, 0x1B72, - 0x7272, 0x0792, 0x7273, 0x1B73, 0x7274, 0x0794, 0x7276, 0x1D30, 0x7277, - 0x1D2F, 0x7278, 0x1D2E, 0x7279, 0x0924, 0x727B, 0x1F81, 0x727C, 0x1F82, - 0x727D, 0x0B18, 0x727E, 0x1F80, 0x727F, 0x1F83, 0x7280, 0x0CD2, 0x7281, - 0x0B19, 0x7284, 0x0CD1, 0x7285, 0x2202, 0x7286, 0x2201, 0x7288, 0x21FF, - 0x7289, 0x2200, 0x728B, 0x2203, 0x728C, 0x248F, 0x728D, 0x248E, 0x728E, - 0x2492, 0x7290, 0x2491, 0x7291, 0x2490, 0x7292, 0x1028, 0x7293, 0x2726, - 0x7295, 0x2725, 0x7296, 0x1029, 0x7297, 0x2724, 0x7298, 0x2966, 0x729A, - 0x2967, 0x729B, 0x11A3, 0x729D, 0x2BC2, 0x729E, 0x2BC3, 0x72A1, 0x30BF, - 0x72A2, 0x1594, 0x72A3, 0x30BE, 0x72A4, 0x30BD, 0x72A5, 0x30BB, 0x72A6, - 0x30BC, 0x72A7, 0x167C, 0x72A8, 0x31F6, 0x72A9, 0x338F, 0x72AA, 0x34D2, - 0x72AC, 0x02ED, 0x72AE, 0x17AF, 0x72AF, 0x0355, 0x72B0, 0x17B0, 0x72B4, - 0x180C, 0x72B5, 0x180D, 0x72BA, 0x18CB, 0x72BD, 0x18C7, 0x72BF, 0x18C6, - 0x72C0, 0x064B, 0x72C1, 0x18CA, 0x72C2, 0x04EE, 0x72C3, 0x18C8, 0x72C4, - 0x04ED, 0x72C5, 0x18CC, 0x72C6, 0x18C9, 0x72C9, 0x19FE, 0x72CA, 0x1B75, - 0x72CB, 0x19FC, 0x72CC, 0x1A03, 0x72CE, 0x064C, 0x72D0, 0x064F, 0x72D1, - 0x1A04, 0x72D2, 0x1A00, 0x72D4, 0x1A01, 0x72D6, 0x19FB, 0x72D7, 0x064E, - 0x72D8, 0x19FD, 0x72D9, 0x064D, 0x72DA, 0x1A02, 0x72DC, 0x19FF, 0x72DF, - 0x1B79, 0x72E0, 0x0796, 0x72E1, 0x0797, 0x72E3, 0x1B7C, 0x72E4, 0x1B76, - 0x72E6, 0x1B7B, 0x72E8, 0x1B77, 0x72E9, 0x0795, 0x72EA, 0x1B7A, 0x72EB, - 0x1B78, 0x72F3, 0x1D36, 0x72F4, 0x1D33, 0x72F6, 0x1D35, 0x72F7, 0x0929, - 0x72F8, 0x0928, 0x72F9, 0x0926, 0x72FA, 0x1D32, 0x72FB, 0x1D37, 0x72FC, - 0x0925, 0x72FD, 0x0927, 0x72FE, 0x1D34, 0x72FF, 0x1F8B, 0x7300, 0x1D31, - 0x7301, 0x1D38, 0x7307, 0x1F86, 0x7308, 0x1F8A, 0x730A, 0x1F89, 0x730B, - 0x2205, 0x730C, 0x2210, 0x730F, 0x1F8C, 0x7311, 0x1F87, 0x7312, 0x2204, - 0x7313, 0x0B1D, 0x7316, 0x0B1C, 0x7317, 0x1F85, 0x7318, 0x1F88, 0x7319, - 0x0B1E, 0x731B, 0x0B1B, 0x731C, 0x0B1A, 0x731D, 0x1F84, 0x731E, 0x1F8D, - 0x7322, 0x2207, 0x7323, 0x220E, 0x7325, 0x0CD4, 0x7326, 0x220D, 0x7327, - 0x220A, 0x7329, 0x0CD6, 0x732D, 0x220C, 0x7330, 0x2206, 0x7331, 0x2208, - 0x7332, 0x220B, 0x7333, 0x2209, 0x7334, 0x0CD5, 0x7335, 0x220F, 0x7336, - 0x0CD3, 0x7337, 0x0E77, 0x733A, 0x2496, 0x733B, 0x2495, 0x733C, 0x2493, - 0x733E, 0x0E7A, 0x733F, 0x0E79, 0x7340, 0x2497, 0x7342, 0x2494, 0x7343, - 0x2727, 0x7344, 0x102A, 0x7345, 0x0E78, 0x7349, 0x2499, 0x734A, 0x2498, - 0x734C, 0x272A, 0x734D, 0x2728, 0x734E, 0x11A4, 0x7350, 0x102B, 0x7351, - 0x2729, 0x7352, 0x2969, 0x7357, 0x11A5, 0x7358, 0x2968, 0x7359, 0x2971, - 0x735A, 0x2970, 0x735B, 0x296E, 0x735D, 0x296D, 0x735E, 0x296A, 0x735F, - 0x296B, 0x7360, 0x296C, 0x7361, 0x296F, 0x7362, 0x2972, 0x7365, 0x2BC8, - 0x7366, 0x2BC5, 0x7367, 0x2BC6, 0x7368, 0x12F9, 0x7369, 0x2BC4, 0x736A, - 0x2BCA, 0x736B, 0x2BC9, 0x736C, 0x2BC7, 0x736E, 0x2DA3, 0x736F, 0x2DA4, - 0x7370, 0x140E, 0x7372, 0x140F, 0x7373, 0x2DA2, 0x7375, 0x14F3, 0x7376, - 0x2F55, 0x7377, 0x14F2, 0x7378, 0x1595, 0x737A, 0x1596, 0x737B, 0x1620, - 0x737C, 0x31F8, 0x737D, 0x31F7, 0x737E, 0x32E2, 0x737F, 0x3390, 0x7380, - 0x16CA, 0x7381, 0x3426, 0x7382, 0x3425, 0x7383, 0x3427, 0x7384, 0x0356, - 0x7385, 0x1B7D, 0x7386, 0x092A, 0x7387, 0x0B1F, 0x7388, 0x1F8E, 0x7389, - 0x0357, 0x738A, 0x17B1, 0x738B, 0x02EE, 0x738E, 0x180E, 0x7392, 0x18D1, - 0x7393, 0x18CF, 0x7394, 0x18D0, 0x7395, 0x18CD, 0x7396, 0x04EF, 0x7397, - 0x18CE, 0x739D, 0x1A0C, 0x739F, 0x0652, 0x73A0, 0x1A0A, 0x73A1, 0x1A06, - 0x73A2, 0x1A09, 0x73A4, 0x1A05, 0x73A5, 0x0654, 0x73A6, 0x1A08, 0x73A8, - 0x0651, 0x73A9, 0x0650, 0x73AB, 0x0653, 0x73AC, 0x1A0B, 0x73AD, 0x1A07, - 0x73B2, 0x079B, 0x73B3, 0x079E, 0x73B4, 0x1B85, 0x73B5, 0x1B84, 0x73B6, - 0x1B83, 0x73B7, 0x0798, 0x73B8, 0x1B8C, 0x73B9, 0x1B82, 0x73BB, 0x079A, - 0x73BC, 0x1D3D, 0x73BE, 0x1B89, 0x73BF, 0x1B87, 0x73C0, 0x079D, 0x73C2, - 0x1B7F, 0x73C3, 0x1B8A, 0x73C5, 0x1B81, 0x73C6, 0x1B8B, 0x73C7, 0x1B88, - 0x73C8, 0x1B80, 0x73CA, 0x0799, 0x73CB, 0x1B8D, 0x73CC, 0x1B7E, 0x73CD, - 0x079C, 0x73D2, 0x1D42, 0x73D3, 0x1D39, 0x73D4, 0x1D44, 0x73D6, 0x1D3C, - 0x73D7, 0x1D47, 0x73D8, 0x1D48, 0x73D9, 0x1D3A, 0x73DA, 0x1D46, 0x73DB, - 0x1D43, 0x73DC, 0x1D41, 0x73DD, 0x1D45, 0x73DE, 0x0930, 0x73E0, 0x092E, - 0x73E3, 0x1D3F, 0x73E5, 0x1D3B, 0x73E7, 0x1D3E, 0x73E8, 0x1D49, 0x73E9, - 0x1D40, 0x73EA, 0x092F, 0x73EB, 0x1B86, 0x73ED, 0x092B, 0x73EE, 0x092D, - 0x73F4, 0x1F9C, 0x73F5, 0x1F91, 0x73F6, 0x1F8F, 0x73F8, 0x1F90, 0x73FA, - 0x1F97, 0x73FC, 0x1F98, 0x73FD, 0x1F94, 0x73FE, 0x0B24, 0x73FF, 0x1F99, - 0x7400, 0x1F96, 0x7401, 0x1F93, 0x7403, 0x0B22, 0x7404, 0x1F92, 0x7405, - 0x0B20, 0x7406, 0x0B23, 0x7407, 0x1F95, 0x7408, 0x1F9D, 0x7409, 0x092C, - 0x740A, 0x0B21, 0x740B, 0x1F9B, 0x740C, 0x1F9A, 0x740D, 0x0B25, 0x7416, - 0x2215, 0x741A, 0x2216, 0x741B, 0x0CE0, 0x741D, 0x221C, 0x7420, 0x221E, - 0x7421, 0x2217, 0x7422, 0x0CDA, 0x7423, 0x221B, 0x7424, 0x221A, 0x7425, - 0x0CDB, 0x7426, 0x0CE1, 0x7428, 0x0CE2, 0x7429, 0x221D, 0x742A, 0x0CD8, - 0x742B, 0x2214, 0x742C, 0x2212, 0x742D, 0x2218, 0x742E, 0x2211, 0x742F, - 0x0CDF, 0x7430, 0x2213, 0x7431, 0x2219, 0x7432, 0x221F, 0x7433, 0x0CD9, - 0x7434, 0x0CDE, 0x7435, 0x0CDC, 0x7436, 0x0CDD, 0x743A, 0x0CD7, 0x743F, - 0x0E81, 0x7440, 0x24A0, 0x7441, 0x0E80, 0x7442, 0x24A4, 0x7444, 0x249A, - 0x7446, 0x24A5, 0x744A, 0x249B, 0x744B, 0x249C, 0x744D, 0x24A6, 0x744E, - 0x24A3, 0x744F, 0x24A1, 0x7450, 0x24A2, 0x7451, 0x249E, 0x7452, 0x249D, - 0x7454, 0x24A7, 0x7455, 0x0E7D, 0x7457, 0x249F, 0x7459, 0x0E82, 0x745A, - 0x0E7C, 0x745B, 0x0E83, 0x745C, 0x0E84, 0x745E, 0x0E7F, 0x745F, 0x0E7E, - 0x7462, 0x272B, 0x7463, 0x102D, 0x7464, 0x102C, 0x7467, 0x2730, 0x7469, - 0x11A6, 0x746A, 0x102E, 0x746D, 0x1030, 0x746E, 0x2731, 0x746F, 0x0E7B, - 0x7470, 0x102F, 0x7471, 0x272D, 0x7472, 0x272F, 0x7473, 0x272C, 0x7475, - 0x272E, 0x7479, 0x297C, 0x747C, 0x297B, 0x747D, 0x2978, 0x747E, 0x11A9, - 0x747F, 0x2BCB, 0x7480, 0x11AA, 0x7481, 0x2977, 0x7483, 0x11A8, 0x7485, - 0x2979, 0x7486, 0x2976, 0x7487, 0x2973, 0x7488, 0x297A, 0x7489, 0x2974, - 0x748A, 0x2975, 0x748B, 0x11A7, 0x7490, 0x2DA8, 0x7492, 0x2BCF, 0x7494, - 0x2BCE, 0x7495, 0x2BD0, 0x7497, 0x2DA5, 0x7498, 0x12FC, 0x749A, 0x2BCC, - 0x749C, 0x12FA, 0x749E, 0x12FE, 0x749F, 0x12FD, 0x74A0, 0x2BCD, 0x74A1, - 0x2BD1, 0x74A3, 0x12FB, 0x74A5, 0x2DAC, 0x74A6, 0x1412, 0x74A7, 0x14F4, - 0x74A8, 0x1413, 0x74A9, 0x1410, 0x74AA, 0x2DA9, 0x74AB, 0x2DA7, 0x74AD, - 0x2DAA, 0x74AF, 0x2DAD, 0x74B0, 0x1411, 0x74B1, 0x2DAB, 0x74B2, 0x2DA6, - 0x74B5, 0x2F58, 0x74B6, 0x2F5B, 0x74B7, 0x30C2, 0x74B8, 0x2F56, 0x74BA, - 0x31F9, 0x74BB, 0x2F5C, 0x74BD, 0x1597, 0x74BE, 0x2F5A, 0x74BF, 0x14F5, - 0x74C0, 0x2F57, 0x74C1, 0x2F59, 0x74C2, 0x2F5D, 0x74C3, 0x30C3, 0x74C5, - 0x30C1, 0x74CA, 0x1598, 0x74CB, 0x30C0, 0x74CF, 0x1621, 0x74D4, 0x167E, - 0x74D5, 0x3392, 0x74D6, 0x167D, 0x74D7, 0x3394, 0x74D8, 0x3391, 0x74D9, - 0x3393, 0x74DA, 0x16FE, 0x74DB, 0x348D, 0x74DC, 0x0358, 0x74DD, 0x1A0D, - 0x74DE, 0x1D4A, 0x74DF, 0x1D4B, 0x74E0, 0x0B26, 0x74E1, 0x24A8, 0x74E2, - 0x12FF, 0x74E3, 0x1599, 0x74E4, 0x16CB, 0x74E5, 0x348E, 0x74E6, 0x0359, - 0x74E8, 0x1A0E, 0x74E9, 0x0120, 0x74EC, 0x1B8E, 0x74EE, 0x1B8F, 0x74F4, - 0x1D4C, 0x74F5, 0x1D4D, 0x74F6, 0x0B27, 0x74F7, 0x0B28, 0x74FB, 0x2220, - 0x74FD, 0x24AB, 0x74FE, 0x24AA, 0x74FF, 0x24A9, 0x7500, 0x2732, 0x7502, - 0x2733, 0x7503, 0x2734, 0x7504, 0x1031, 0x7507, 0x297E, 0x7508, 0x297D, - 0x750B, 0x2BD2, 0x750C, 0x1300, 0x750D, 0x1301, 0x750F, 0x2DB1, 0x7510, - 0x2DAE, 0x7511, 0x2DAF, 0x7512, 0x2DB0, 0x7513, 0x2F5F, 0x7514, 0x2F5E, - 0x7515, 0x14F6, 0x7516, 0x30C4, 0x7517, 0x32E3, 0x7518, 0x035A, 0x751A, - 0x079F, 0x751C, 0x0B29, 0x751D, 0x24AC, 0x751F, 0x035B, 0x7521, 0x1D4E, - 0x7522, 0x0B2A, 0x7525, 0x0CE3, 0x7526, 0x0CE4, 0x7528, 0x035C, 0x7529, - 0x035D, 0x752A, 0x180F, 0x752B, 0x04F1, 0x752C, 0x04F0, 0x752D, 0x07A0, - 0x752E, 0x1B90, 0x752F, 0x2221, 0x7530, 0x035E, 0x7531, 0x035F, 0x7532, - 0x0360, 0x7533, 0x0361, 0x7537, 0x04F2, 0x7538, 0x04F3, 0x7539, 0x18D3, - 0x753A, 0x18D2, 0x753D, 0x0655, 0x753E, 0x1A11, 0x753F, 0x1A0F, 0x7540, - 0x1A10, 0x7547, 0x1B91, 0x7548, 0x1B92, 0x754B, 0x07A4, 0x754C, 0x07A2, - 0x754E, 0x07A3, 0x754F, 0x07A1, 0x7554, 0x0931, 0x7559, 0x0935, 0x755A, - 0x0934, 0x755B, 0x1D4F, 0x755C, 0x0933, 0x755D, 0x0932, 0x755F, 0x1D50, - 0x7562, 0x0B2D, 0x7563, 0x1F9F, 0x7564, 0x1F9E, 0x7565, 0x0B2B, 0x7566, - 0x0B2C, 0x756A, 0x0CE6, 0x756B, 0x0CE5, 0x756C, 0x2223, 0x756F, 0x2222, - 0x7570, 0x0B2E, 0x7576, 0x0E85, 0x7577, 0x24AE, 0x7578, 0x0E86, 0x7579, - 0x24AD, 0x757D, 0x2735, 0x757E, 0x297F, 0x757F, 0x11AB, 0x7580, 0x2BD3, - 0x7584, 0x2DB2, 0x7586, 0x159B, 0x7587, 0x159A, 0x758A, 0x16CC, 0x758B, - 0x0362, 0x758C, 0x1A12, 0x758F, 0x0B2F, 0x7590, 0x2736, 0x7591, 0x1032, - 0x7592, 0x022E, 0x7594, 0x18D4, 0x7595, 0x18D5, 0x7598, 0x1A13, 0x7599, - 0x0657, 0x759A, 0x0658, 0x759D, 0x0656, 0x75A2, 0x07A8, 0x75A3, 0x07A9, - 0x75A4, 0x07A6, 0x75A5, 0x07A7, 0x75A7, 0x1B93, 0x75AA, 0x1B94, 0x75AB, - 0x07A5, 0x75B0, 0x1D51, 0x75B2, 0x0939, 0x75B3, 0x093A, 0x75B5, 0x0B32, - 0x75B6, 0x1D57, 0x75B8, 0x093F, 0x75B9, 0x093D, 0x75BA, 0x1D58, 0x75BB, - 0x1D53, 0x75BC, 0x093C, 0x75BD, 0x093B, 0x75BE, 0x0936, 0x75BF, 0x1D56, - 0x75C0, 0x1D55, 0x75C1, 0x1D52, 0x75C2, 0x093E, 0x75C4, 0x1D54, 0x75C5, - 0x0937, 0x75C7, 0x0938, 0x75CA, 0x0B33, 0x75CB, 0x1FA3, 0x75CC, 0x1FA4, - 0x75CD, 0x0B34, 0x75CE, 0x1FA0, 0x75CF, 0x1FA2, 0x75D0, 0x1FA6, 0x75D1, - 0x1FA5, 0x75D2, 0x1FA1, 0x75D4, 0x0B30, 0x75D5, 0x0B31, 0x75D7, 0x222B, - 0x75D8, 0x0CEB, 0x75D9, 0x0CEA, 0x75DA, 0x2225, 0x75DB, 0x0CE8, 0x75DD, - 0x2228, 0x75DE, 0x0CEC, 0x75DF, 0x2229, 0x75E0, 0x0CED, 0x75E1, 0x2226, - 0x75E2, 0x0CE7, 0x75E3, 0x0CE9, 0x75E4, 0x222A, 0x75E6, 0x2227, 0x75E7, - 0x2224, 0x75ED, 0x24BB, 0x75EF, 0x24B0, 0x75F0, 0x0E88, 0x75F1, 0x0E8B, - 0x75F2, 0x0E8A, 0x75F3, 0x0E8F, 0x75F4, 0x0E8E, 0x75F5, 0x24BC, 0x75F6, - 0x24BA, 0x75F7, 0x24B3, 0x75F8, 0x24B7, 0x75F9, 0x24B6, 0x75FA, 0x0E8C, - 0x75FB, 0x24B9, 0x75FC, 0x24B5, 0x75FD, 0x24BD, 0x75FE, 0x24B4, 0x75FF, - 0x0E8D, 0x7600, 0x0E87, 0x7601, 0x0E89, 0x7603, 0x24B2, 0x7608, 0x2738, - 0x7609, 0x1036, 0x760A, 0x273C, 0x760B, 0x1035, 0x760C, 0x2739, 0x760D, - 0x1034, 0x760F, 0x24B1, 0x7610, 0x24B8, 0x7611, 0x273B, 0x7613, 0x1037, - 0x7614, 0x273D, 0x7615, 0x273A, 0x7616, 0x2737, 0x7619, 0x2982, 0x761A, - 0x2986, 0x761B, 0x2988, 0x761C, 0x2984, 0x761D, 0x2983, 0x761E, 0x2981, - 0x761F, 0x11AE, 0x7620, 0x11AC, 0x7621, 0x11B1, 0x7622, 0x11B2, 0x7623, - 0x2985, 0x7624, 0x11AF, 0x7625, 0x2980, 0x7626, 0x11B0, 0x7627, 0x1033, - 0x7628, 0x2987, 0x7629, 0x11AD, 0x762D, 0x2BD5, 0x762F, 0x2BD4, 0x7630, - 0x2BDC, 0x7631, 0x2BD6, 0x7632, 0x2BDB, 0x7633, 0x2BD8, 0x7634, 0x1302, - 0x7635, 0x2BDA, 0x7638, 0x1303, 0x763A, 0x1304, 0x763C, 0x2BD9, 0x763D, - 0x2BD7, 0x7642, 0x1415, 0x7643, 0x2DB3, 0x7646, 0x1414, 0x7647, 0x2DB6, - 0x7648, 0x2DB4, 0x7649, 0x2DB5, 0x764C, 0x1416, 0x7650, 0x2F63, 0x7652, - 0x14F9, 0x7653, 0x2F64, 0x7656, 0x14F7, 0x7657, 0x2F65, 0x7658, 0x14F8, - 0x7659, 0x2F62, 0x765A, 0x2F66, 0x765C, 0x2F60, 0x765F, 0x159C, 0x7660, - 0x30C5, 0x7661, 0x159D, 0x7662, 0x1622, 0x7664, 0x2F61, 0x7665, 0x1623, - 0x7669, 0x167F, 0x766A, 0x32E4, 0x766C, 0x16CE, 0x766D, 0x3395, 0x766E, - 0x16CD, 0x7670, 0x3428, 0x7671, 0x1723, 0x7672, 0x1724, 0x7675, 0x3543, - 0x7676, 0x022F, 0x7678, 0x07AA, 0x7679, 0x1B95, 0x767B, 0x0CEE, 0x767C, - 0x0CEF, 0x767D, 0x0363, 0x767E, 0x03F5, 0x767F, 0x1810, 0x7681, 0x18D6, - 0x7682, 0x04F4, 0x7684, 0x0659, 0x7686, 0x07AB, 0x7687, 0x07AC, 0x7688, - 0x07AD, 0x7689, 0x1FA8, 0x768A, 0x1D59, 0x768B, 0x0940, 0x768E, 0x0B35, - 0x768F, 0x1FA7, 0x7692, 0x222D, 0x7693, 0x0CF1, 0x7695, 0x222C, 0x7696, - 0x0CF0, 0x7699, 0x24BE, 0x769A, 0x11B3, 0x769B, 0x298C, 0x769C, 0x2989, - 0x769D, 0x298A, 0x769E, 0x298B, 0x76A4, 0x2DB7, 0x76A6, 0x2F67, 0x76AA, - 0x31FB, 0x76AB, 0x31FA, 0x76AD, 0x3396, 0x76AE, 0x0364, 0x76AF, 0x1A14, - 0x76B0, 0x0941, 0x76B4, 0x0CF2, 0x76B5, 0x24BF, 0x76B8, 0x273E, 0x76BA, - 0x11B4, 0x76BB, 0x2BDD, 0x76BD, 0x2F68, 0x76BE, 0x31FC, 0x76BF, 0x0365, - 0x76C2, 0x065A, 0x76C3, 0x07B0, 0x76C4, 0x1B96, 0x76C5, 0x07B1, 0x76C6, - 0x07AF, 0x76C8, 0x07AE, 0x76C9, 0x1D5A, 0x76CA, 0x0942, 0x76CD, 0x0943, - 0x76CE, 0x0944, 0x76D2, 0x0B37, 0x76D3, 0x1FA9, 0x76D4, 0x0B36, 0x76DA, - 0x222E, 0x76DB, 0x0B38, 0x76DC, 0x0CF3, 0x76DD, 0x24C0, 0x76DE, 0x0E90, - 0x76DF, 0x0E91, 0x76E1, 0x1038, 0x76E3, 0x1039, 0x76E4, 0x11B5, 0x76E5, - 0x1306, 0x76E6, 0x2BDE, 0x76E7, 0x1305, 0x76E9, 0x2DB8, 0x76EA, 0x1417, - 0x76EC, 0x2F69, 0x76ED, 0x31FD, 0x76EE, 0x0366, 0x76EF, 0x04F5, 0x76F0, - 0x1A17, 0x76F1, 0x1A16, 0x76F2, 0x065B, 0x76F3, 0x1A15, 0x76F4, 0x065C, - 0x76F5, 0x1A18, 0x76F7, 0x1B9C, 0x76F8, 0x07B4, 0x76F9, 0x07B3, 0x76FA, - 0x1B9E, 0x76FB, 0x1B9D, 0x76FC, 0x07B8, 0x76FE, 0x07B7, 0x7701, 0x07B2, - 0x7703, 0x1B98, 0x7704, 0x1B99, 0x7705, 0x1B9A, 0x7707, 0x07B9, 0x7708, - 0x1B97, 0x7709, 0x07B5, 0x770A, 0x1B9B, 0x770B, 0x07B6, 0x7710, 0x1D5D, - 0x7711, 0x1D61, 0x7712, 0x1D5F, 0x7713, 0x1D5E, 0x7715, 0x1D62, 0x7719, - 0x1D63, 0x771A, 0x1D64, 0x771B, 0x1D5C, 0x771D, 0x1D5B, 0x771F, 0x0946, - 0x7720, 0x0947, 0x7722, 0x1D65, 0x7723, 0x1D60, 0x7725, 0x1FB2, 0x7727, - 0x1D66, 0x7728, 0x0948, 0x7729, 0x0945, 0x772D, 0x1FAC, 0x772F, 0x1FAB, - 0x7731, 0x1FAD, 0x7732, 0x1FAE, 0x7733, 0x1FB0, 0x7734, 0x1FAF, 0x7735, - 0x1FB4, 0x7736, 0x0B3C, 0x7737, 0x0B39, 0x7738, 0x0B3D, 0x7739, 0x1FAA, - 0x773A, 0x0B3E, 0x773B, 0x1FB3, 0x773C, 0x0B3B, 0x773D, 0x1FB1, 0x773E, - 0x0B3A, 0x7744, 0x2231, 0x7745, 0x2233, 0x7746, 0x222F, 0x7747, 0x2230, - 0x774A, 0x2234, 0x774B, 0x2236, 0x774C, 0x2237, 0x774D, 0x2232, 0x774E, - 0x2235, 0x774F, 0x0CF4, 0x7752, 0x24C4, 0x7754, 0x24C9, 0x7755, 0x24C1, - 0x7756, 0x24C5, 0x7759, 0x24CA, 0x775A, 0x24C6, 0x775B, 0x0E92, 0x775C, - 0x0E9A, 0x775E, 0x0E95, 0x775F, 0x24C2, 0x7760, 0x24C3, 0x7761, 0x103D, - 0x7762, 0x0E9D, 0x7763, 0x0E96, 0x7765, 0x0E9B, 0x7766, 0x0E94, 0x7767, - 0x24C8, 0x7768, 0x0E9C, 0x7769, 0x24C7, 0x776A, 0x0E98, 0x776B, 0x0E93, - 0x776C, 0x0E99, 0x776D, 0x24CB, 0x776E, 0x2743, 0x776F, 0x2745, 0x7779, - 0x0E97, 0x777C, 0x2740, 0x777D, 0x103B, 0x777E, 0x2746, 0x777F, 0x103C, - 0x7780, 0x2744, 0x7781, 0x273F, 0x7782, 0x2742, 0x7783, 0x2747, 0x7784, - 0x103A, 0x7785, 0x2741, 0x7787, 0x11B7, 0x7788, 0x2990, 0x7789, 0x298F, - 0x778B, 0x11BA, 0x778C, 0x11B8, 0x778D, 0x298D, 0x778E, 0x11B6, 0x778F, - 0x298E, 0x7791, 0x11B9, 0x7795, 0x2BE6, 0x7797, 0x2BE8, 0x7799, 0x2BE7, - 0x779A, 0x2BDF, 0x779B, 0x2BE3, 0x779C, 0x2BE2, 0x779D, 0x2BE0, 0x779E, - 0x1308, 0x779F, 0x1309, 0x77A0, 0x1307, 0x77A1, 0x2BE1, 0x77A2, 0x2BE4, - 0x77A3, 0x2BE5, 0x77A5, 0x130A, 0x77A7, 0x141C, 0x77A8, 0x2DC0, 0x77AA, - 0x1419, 0x77AB, 0x2DBA, 0x77AC, 0x141B, 0x77AD, 0x141D, 0x77B0, 0x141A, - 0x77B1, 0x2DBF, 0x77B2, 0x2DBB, 0x77B3, 0x1418, 0x77B4, 0x2DBE, 0x77B5, - 0x2DB9, 0x77B6, 0x2DBD, 0x77B7, 0x2DBC, 0x77BA, 0x2F6B, 0x77BB, 0x14FC, - 0x77BC, 0x14FD, 0x77BD, 0x14FA, 0x77BF, 0x14FB, 0x77C2, 0x2F6A, 0x77C4, - 0x30C8, 0x77C7, 0x159E, 0x77C9, 0x30C6, 0x77CA, 0x30C7, 0x77CC, 0x31FE, - 0x77CD, 0x3201, 0x77CE, 0x31FF, 0x77CF, 0x3200, 0x77D0, 0x32E5, 0x77D3, - 0x1680, 0x77D4, 0x3429, 0x77D5, 0x348F, 0x77D7, 0x1725, 0x77D8, 0x34D3, - 0x77D9, 0x34D4, 0x77DA, 0x1753, 0x77DB, 0x0367, 0x77DC, 0x07BA, 0x77DE, - 0x2238, 0x77E0, 0x24CC, 0x77E2, 0x0368, 0x77E3, 0x04F6, 0x77E5, 0x065D, - 0x77E7, 0x1B9F, 0x77E8, 0x1BA0, 0x77E9, 0x0949, 0x77EC, 0x2239, 0x77ED, - 0x0CF5, 0x77EE, 0x0E9E, 0x77EF, 0x141E, 0x77F0, 0x2DC1, 0x77F1, 0x30C9, - 0x77F2, 0x3202, 0x77F3, 0x0369, 0x77F7, 0x1A1E, 0x77F8, 0x1A19, 0x77F9, - 0x1A1B, 0x77FA, 0x1A1D, 0x77FB, 0x1A1C, 0x77FC, 0x1A1A, 0x77FD, 0x065E, - 0x7802, 0x07BB, 0x7803, 0x1BA9, 0x7805, 0x1BA4, 0x7806, 0x1BA1, 0x7809, - 0x1BA8, 0x780C, 0x07BD, 0x780D, 0x07BE, 0x780E, 0x1BA7, 0x780F, 0x1BA6, - 0x7810, 0x1BA5, 0x7811, 0x1BA2, 0x7812, 0x1BA3, 0x7813, 0x1BAA, 0x7814, - 0x07BC, 0x781D, 0x094D, 0x781F, 0x0953, 0x7820, 0x0952, 0x7821, 0x1D6F, - 0x7822, 0x1D69, 0x7823, 0x1D67, 0x7825, 0x0950, 0x7826, 0x1FBB, 0x7827, - 0x094B, 0x7828, 0x1D6C, 0x7829, 0x1D70, 0x782A, 0x1D72, 0x782B, 0x1D6E, - 0x782C, 0x1D68, 0x782D, 0x0951, 0x782E, 0x1D6D, 0x782F, 0x1D6B, 0x7830, - 0x094A, 0x7831, 0x1D73, 0x7832, 0x0954, 0x7833, 0x1D71, 0x7834, 0x094E, - 0x7835, 0x1D6A, 0x7837, 0x094F, 0x7838, 0x094C, 0x7843, 0x0B40, 0x7845, - 0x1FBC, 0x7848, 0x1FB5, 0x7849, 0x1FB7, 0x784A, 0x1FB9, 0x784C, 0x1FBA, - 0x784D, 0x1FB8, 0x784E, 0x0B41, 0x7850, 0x1FBD, 0x7852, 0x1FB6, 0x785C, - 0x223D, 0x785D, 0x0CF6, 0x785E, 0x2245, 0x7860, 0x223A, 0x7862, 0x2246, - 0x7864, 0x223B, 0x7865, 0x223C, 0x7868, 0x2244, 0x7869, 0x2243, 0x786A, - 0x2240, 0x786B, 0x0B3F, 0x786C, 0x0CF7, 0x786D, 0x223E, 0x786E, 0x2241, - 0x786F, 0x0CF8, 0x7870, 0x2242, 0x7871, 0x223F, 0x7879, 0x24D7, 0x787B, - 0x24DB, 0x787C, 0x0EA5, 0x787E, 0x274D, 0x787F, 0x0EA8, 0x7880, 0x24D9, - 0x7881, 0x36E8, 0x7883, 0x24D6, 0x7884, 0x24D1, 0x7885, 0x24D3, 0x7886, - 0x24D4, 0x7887, 0x24CD, 0x7889, 0x0EA4, 0x788C, 0x0EA3, 0x788E, 0x0E9F, - 0x788F, 0x24D0, 0x7891, 0x0EA6, 0x7893, 0x0EA7, 0x7894, 0x24CF, 0x7895, - 0x24D2, 0x7896, 0x24DA, 0x7897, 0x0EA1, 0x7898, 0x0EA2, 0x7899, 0x24D8, - 0x789A, 0x24CE, 0x789E, 0x274F, 0x789F, 0x103F, 0x78A0, 0x2751, 0x78A1, - 0x24D5, 0x78A2, 0x2753, 0x78A3, 0x1043, 0x78A4, 0x2754, 0x78A5, 0x2750, - 0x78A7, 0x1040, 0x78A8, 0x274C, 0x78A9, 0x1042, 0x78AA, 0x2749, 0x78AB, - 0x274E, 0x78AC, 0x2752, 0x78AD, 0x274B, 0x78B0, 0x0EA0, 0x78B2, 0x2748, - 0x78B3, 0x1041, 0x78B4, 0x274A, 0x78BA, 0x11BD, 0x78BB, 0x2992, 0x78BC, - 0x11C1, 0x78BE, 0x11BF, 0x78C1, 0x103E, 0x78C3, 0x2999, 0x78C4, 0x299A, - 0x78C5, 0x11BC, 0x78C8, 0x2998, 0x78C9, 0x299B, 0x78CA, 0x11BE, 0x78CB, - 0x11BB, 0x78CC, 0x2994, 0x78CD, 0x2991, 0x78CE, 0x2996, 0x78CF, 0x2993, - 0x78D0, 0x11C2, 0x78D1, 0x2995, 0x78D4, 0x2997, 0x78D5, 0x11C0, 0x78DA, - 0x130C, 0x78DB, 0x2BEF, 0x78DD, 0x2BE9, 0x78DE, 0x2BED, 0x78DF, 0x2BF3, - 0x78E0, 0x2BF4, 0x78E1, 0x2BF0, 0x78E2, 0x2BF1, 0x78E3, 0x2BEE, 0x78E5, - 0x2BEB, 0x78E7, 0x130E, 0x78E8, 0x130B, 0x78E9, 0x2BEA, 0x78EA, 0x2BEC, - 0x78EC, 0x130D, 0x78ED, 0x2BF2, 0x78EF, 0x1422, 0x78F2, 0x2DC8, 0x78F3, - 0x2DC2, 0x78F4, 0x1421, 0x78F7, 0x141F, 0x78F9, 0x2DCA, 0x78FA, 0x1420, - 0x78FB, 0x2DC5, 0x78FC, 0x2DC6, 0x78FD, 0x2DC3, 0x78FE, 0x2DCB, 0x78FF, - 0x2DC7, 0x7901, 0x1423, 0x7902, 0x2DC4, 0x7904, 0x2DCC, 0x7905, 0x2DC9, - 0x7909, 0x2F6F, 0x790C, 0x2F6C, 0x790E, 0x14FE, 0x7910, 0x2F70, 0x7911, - 0x2F72, 0x7912, 0x2F71, 0x7913, 0x2F6D, 0x7914, 0x2F6E, 0x7917, 0x30CE, - 0x7919, 0x159F, 0x791B, 0x30CB, 0x791C, 0x30CD, 0x791D, 0x30CA, 0x791E, - 0x30CF, 0x7921, 0x30CC, 0x7923, 0x3204, 0x7924, 0x3207, 0x7925, 0x3203, - 0x7926, 0x1624, 0x7927, 0x3205, 0x7928, 0x3206, 0x7929, 0x3208, 0x792A, - 0x1625, 0x792B, 0x1627, 0x792C, 0x1626, 0x792D, 0x32E6, 0x792F, 0x32E8, - 0x7931, 0x32E7, 0x7935, 0x3397, 0x7938, 0x3490, 0x7939, 0x34D5, 0x793A, - 0x036A, 0x793D, 0x18D7, 0x793E, 0x065F, 0x793F, 0x1A20, 0x7940, 0x0660, - 0x7941, 0x0661, 0x7942, 0x1A1F, 0x7944, 0x1BAF, 0x7945, 0x1BAE, 0x7946, - 0x07BF, 0x7947, 0x07C2, 0x7948, 0x07C1, 0x7949, 0x07C0, 0x794A, 0x1BAB, - 0x794B, 0x1BAD, 0x794C, 0x1BAC, 0x794F, 0x1D76, 0x7950, 0x0956, 0x7951, - 0x1D7A, 0x7952, 0x1D79, 0x7953, 0x1D78, 0x7954, 0x1D74, 0x7955, 0x0955, - 0x7956, 0x0959, 0x7957, 0x095C, 0x795A, 0x095D, 0x795B, 0x1D75, 0x795C, - 0x1D77, 0x795D, 0x095B, 0x795E, 0x095A, 0x795F, 0x0958, 0x7960, 0x0957, - 0x7961, 0x1FC4, 0x7963, 0x1FC2, 0x7964, 0x1FBE, 0x7965, 0x0B42, 0x7967, - 0x1FBF, 0x7968, 0x0B43, 0x7969, 0x1FC0, 0x796A, 0x1FC1, 0x796B, 0x1FC3, - 0x796D, 0x0B44, 0x7970, 0x224A, 0x7972, 0x2249, 0x7973, 0x2248, 0x7974, - 0x2247, 0x7979, 0x24DF, 0x797A, 0x0EA9, 0x797C, 0x24DC, 0x797D, 0x24DE, - 0x797F, 0x0EAA, 0x7981, 0x0EAB, 0x7982, 0x24DD, 0x7988, 0x275D, 0x798A, - 0x2756, 0x798B, 0x2757, 0x798D, 0x1046, 0x798E, 0x1044, 0x798F, 0x1045, - 0x7990, 0x275F, 0x7992, 0x275E, 0x7993, 0x275B, 0x7994, 0x275A, 0x7995, - 0x2759, 0x7996, 0x2758, 0x7997, 0x275C, 0x7998, 0x2755, 0x799A, 0x299C, - 0x799B, 0x29A1, 0x799C, 0x299F, 0x79A0, 0x299E, 0x79A1, 0x299D, 0x79A2, - 0x29A0, 0x79A4, 0x2BF5, 0x79A6, 0x130F, 0x79A7, 0x1424, 0x79A8, 0x2DCE, - 0x79AA, 0x1425, 0x79AB, 0x2DCD, 0x79AC, 0x2F74, 0x79AD, 0x2F73, 0x79AE, - 0x14FF, 0x79B0, 0x30D0, 0x79B1, 0x15A0, 0x79B2, 0x3209, 0x79B3, 0x16CF, - 0x79B4, 0x3398, 0x79B6, 0x3492, 0x79B7, 0x3491, 0x79B8, 0x17B2, 0x79B9, - 0x07C3, 0x79BA, 0x07C4, 0x79BB, 0x1FC5, 0x79BD, 0x0EAD, 0x79BE, 0x036B, - 0x79BF, 0x04F9, 0x79C0, 0x04F8, 0x79C1, 0x04F7, 0x79C5, 0x1A21, 0x79C8, - 0x0663, 0x79C9, 0x0662, 0x79CB, 0x07C7, 0x79CD, 0x1BB1, 0x79CE, 0x1BB4, - 0x79CF, 0x1BB2, 0x79D1, 0x07C5, 0x79D2, 0x07C6, 0x79D5, 0x1BB0, 0x79D6, - 0x1BB3, 0x79D8, 0x0964, 0x79DC, 0x1D81, 0x79DD, 0x1D83, 0x79DE, 0x1D82, - 0x79DF, 0x0961, 0x79E0, 0x1D7D, 0x79E3, 0x095F, 0x79E4, 0x095E, 0x79E6, - 0x0962, 0x79E7, 0x0960, 0x79E9, 0x0963, 0x79EA, 0x1D80, 0x79EB, 0x1D7B, - 0x79EC, 0x1D7C, 0x79ED, 0x1D7F, 0x79EE, 0x1D7E, 0x79F6, 0x1FC8, 0x79F7, - 0x1FC9, 0x79F8, 0x1FC7, 0x79FA, 0x1FC6, 0x79FB, 0x0B45, 0x7A00, 0x0CFD, - 0x7A02, 0x224B, 0x7A03, 0x224D, 0x7A04, 0x224F, 0x7A05, 0x0CFC, 0x7A08, - 0x0CFA, 0x7A0A, 0x224C, 0x7A0B, 0x0CFB, 0x7A0C, 0x224E, 0x7A0D, 0x0CF9, - 0x7A10, 0x24E9, 0x7A11, 0x24E0, 0x7A12, 0x24E3, 0x7A13, 0x24E7, 0x7A14, - 0x0EB1, 0x7A15, 0x24E5, 0x7A17, 0x24E4, 0x7A18, 0x24E1, 0x7A19, 0x24E2, - 0x7A1A, 0x0EAF, 0x7A1B, 0x24E8, 0x7A1C, 0x0EAE, 0x7A1E, 0x0EB3, 0x7A1F, - 0x0EB2, 0x7A20, 0x0EB0, 0x7A22, 0x24E6, 0x7A26, 0x2765, 0x7A28, 0x2764, - 0x7A2B, 0x2760, 0x7A2E, 0x1047, 0x7A2F, 0x2763, 0x7A30, 0x2762, 0x7A31, - 0x1048, 0x7A37, 0x11C7, 0x7A39, 0x29A3, 0x7A3B, 0x11C8, 0x7A3C, 0x11C4, - 0x7A3D, 0x11C6, 0x7A3F, 0x11C3, 0x7A40, 0x11C5, 0x7A44, 0x2BF6, 0x7A46, - 0x1312, 0x7A47, 0x2BF8, 0x7A48, 0x2BF7, 0x7A4A, 0x2761, 0x7A4B, 0x1314, - 0x7A4C, 0x1313, 0x7A4D, 0x1310, 0x7A4E, 0x1311, 0x7A54, 0x2DD3, 0x7A56, - 0x2DD1, 0x7A57, 0x1426, 0x7A58, 0x2DD2, 0x7A5A, 0x2DD4, 0x7A5B, 0x2DD0, - 0x7A5C, 0x2DCF, 0x7A5F, 0x2F75, 0x7A60, 0x1502, 0x7A61, 0x1500, 0x7A62, - 0x1501, 0x7A67, 0x30D1, 0x7A68, 0x30D2, 0x7A69, 0x15A2, 0x7A6B, 0x15A1, - 0x7A6C, 0x320B, 0x7A6D, 0x320C, 0x7A6E, 0x320A, 0x7A70, 0x3399, 0x7A71, - 0x339A, 0x7A74, 0x036C, 0x7A75, 0x1811, 0x7A76, 0x04FA, 0x7A78, 0x1A22, - 0x7A79, 0x0665, 0x7A7A, 0x0664, 0x7A7B, 0x1A23, 0x7A7E, 0x1BB6, 0x7A7F, - 0x07C8, 0x7A80, 0x1BB5, 0x7A81, 0x07C9, 0x7A84, 0x0965, 0x7A85, 0x1D86, - 0x7A86, 0x1D84, 0x7A87, 0x1D8A, 0x7A88, 0x0966, 0x7A89, 0x1D85, 0x7A8A, - 0x1D89, 0x7A8B, 0x1D87, 0x7A8C, 0x1D88, 0x7A8F, 0x1FCA, 0x7A90, 0x1FCC, - 0x7A92, 0x0B46, 0x7A94, 0x1FCB, 0x7A95, 0x0B47, 0x7A96, 0x0D00, 0x7A97, - 0x0CFF, 0x7A98, 0x0CFE, 0x7A99, 0x2250, 0x7A9E, 0x24EC, 0x7A9F, 0x0EB4, - 0x7AA0, 0x0EB5, 0x7AA2, 0x24EB, 0x7AA3, 0x24EA, 0x7AA8, 0x2766, 0x7AA9, - 0x104A, 0x7AAA, 0x1049, 0x7AAB, 0x2767, 0x7AAC, 0x2768, 0x7AAE, 0x11CA, - 0x7AAF, 0x11C9, 0x7AB1, 0x2BFC, 0x7AB2, 0x29A4, 0x7AB3, 0x29A6, 0x7AB4, - 0x29A5, 0x7AB5, 0x2BFB, 0x7AB6, 0x2BF9, 0x7AB7, 0x2BFD, 0x7AB8, 0x2BFA, - 0x7ABA, 0x1315, 0x7ABE, 0x2DD5, 0x7ABF, 0x1427, 0x7AC0, 0x2DD6, 0x7AC1, - 0x2DD7, 0x7AC4, 0x1503, 0x7AC5, 0x1504, 0x7AC7, 0x1628, 0x7ACA, 0x16FF, - 0x7ACB, 0x036D, 0x7AD1, 0x1BB7, 0x7AD8, 0x1D8B, 0x7AD9, 0x0967, 0x7ADF, - 0x0BDE, 0x7AE0, 0x0BDD, 0x7AE3, 0x0D02, 0x7AE4, 0x2252, 0x7AE5, 0x0D01, - 0x7AE6, 0x2251, 0x7AEB, 0x24ED, 0x7AED, 0x104B, 0x7AEE, 0x2769, 0x7AEF, - 0x104C, 0x7AF6, 0x1629, 0x7AF7, 0x320D, 0x7AF9, 0x03F6, 0x7AFA, 0x0666, - 0x7AFB, 0x1A24, 0x7AFD, 0x07CB, 0x7AFF, 0x07CA, 0x7B00, 0x1BB8, 0x7B01, - 0x1BB9, 0x7B04, 0x1D8D, 0x7B05, 0x1D8F, 0x7B06, 0x0968, 0x7B08, 0x1D91, - 0x7B09, 0x1D94, 0x7B0A, 0x1D92, 0x7B0E, 0x1D93, 0x7B0F, 0x1D90, 0x7B10, - 0x1D8C, 0x7B11, 0x0969, 0x7B12, 0x1D95, 0x7B13, 0x1D8E, 0x7B18, 0x1FD5, - 0x7B19, 0x0B4D, 0x7B1A, 0x1FDE, 0x7B1B, 0x0B4A, 0x7B1D, 0x1FD7, 0x7B1E, - 0x0B4E, 0x7B20, 0x0B48, 0x7B22, 0x1FD2, 0x7B23, 0x1FDF, 0x7B24, 0x1FD3, - 0x7B25, 0x1FD0, 0x7B26, 0x0B4C, 0x7B28, 0x0B49, 0x7B2A, 0x1FD6, 0x7B2B, - 0x1FD9, 0x7B2C, 0x0B4B, 0x7B2D, 0x1FDA, 0x7B2E, 0x0B4F, 0x7B2F, 0x1FDB, - 0x7B30, 0x1FD1, 0x7B31, 0x1FD8, 0x7B32, 0x1FDC, 0x7B33, 0x1FD4, 0x7B34, - 0x1FCF, 0x7B35, 0x1FCD, 0x7B38, 0x1FDD, 0x7B3B, 0x1FCE, 0x7B40, 0x2259, - 0x7B44, 0x2255, 0x7B45, 0x225B, 0x7B46, 0x0D05, 0x7B47, 0x2254, 0x7B48, - 0x2256, 0x7B49, 0x0D03, 0x7B4A, 0x2253, 0x7B4B, 0x0D0A, 0x7B4C, 0x2257, - 0x7B4D, 0x0D09, 0x7B4E, 0x2258, 0x7B4F, 0x0D0B, 0x7B50, 0x0D06, 0x7B51, - 0x0D0C, 0x7B52, 0x0D07, 0x7B54, 0x0D08, 0x7B56, 0x0D04, 0x7B58, 0x225A, - 0x7B60, 0x0EB8, 0x7B61, 0x24F8, 0x7B63, 0x24FB, 0x7B64, 0x24EF, 0x7B65, - 0x24F4, 0x7B66, 0x24EE, 0x7B67, 0x0EBA, 0x7B69, 0x24F2, 0x7B6D, 0x24F0, - 0x7B6E, 0x0EB9, 0x7B70, 0x24F7, 0x7B71, 0x24F6, 0x7B72, 0x24F3, 0x7B73, - 0x24F5, 0x7B74, 0x24F1, 0x7B75, 0x1050, 0x7B76, 0x24FA, 0x7B77, 0x0EB6, - 0x7B78, 0x24F9, 0x7B82, 0x2779, 0x7B84, 0x1057, 0x7B85, 0x2774, 0x7B87, - 0x1056, 0x7B88, 0x276A, 0x7B8A, 0x276C, 0x7B8B, 0x104F, 0x7B8C, 0x2771, - 0x7B8D, 0x2770, 0x7B8E, 0x2773, 0x7B8F, 0x1054, 0x7B90, 0x276E, 0x7B91, - 0x276D, 0x7B94, 0x1053, 0x7B95, 0x104E, 0x7B96, 0x276F, 0x7B97, 0x1051, - 0x7B98, 0x2775, 0x7B99, 0x2777, 0x7B9B, 0x2772, 0x7B9C, 0x276B, 0x7B9D, - 0x1052, 0x7BA0, 0x11D2, 0x7BA1, 0x104D, 0x7BA4, 0x2778, 0x7BAC, 0x29AA, - 0x7BAD, 0x11CB, 0x7BAF, 0x29AC, 0x7BB1, 0x11CC, 0x7BB4, 0x11CE, 0x7BB5, - 0x29AF, 0x7BB7, 0x29A7, 0x7BB8, 0x1055, 0x7BB9, 0x29AD, 0x7BBE, 0x29A9, - 0x7BC0, 0x0EB7, 0x7BC1, 0x11D1, 0x7BC4, 0x11CD, 0x7BC6, 0x11CF, 0x7BC7, - 0x11D0, 0x7BC9, 0x1318, 0x7BCA, 0x29AE, 0x7BCB, 0x29A8, 0x7BCC, 0x11D3, - 0x7BCE, 0x29AB, 0x7BD4, 0x2C07, 0x7BD5, 0x2C02, 0x7BD8, 0x2C0C, 0x7BD9, - 0x1316, 0x7BDA, 0x2C04, 0x7BDB, 0x131A, 0x7BDC, 0x2C0A, 0x7BDD, 0x2C01, - 0x7BDE, 0x2BFE, 0x7BDF, 0x2C0D, 0x7BE0, 0x142D, 0x7BE1, 0x131B, 0x7BE2, - 0x2C09, 0x7BE3, 0x2BFF, 0x7BE4, 0x1319, 0x7BE5, 0x2C03, 0x7BE6, 0x131D, - 0x7BE7, 0x2C00, 0x7BE8, 0x2C05, 0x7BE9, 0x131C, 0x7BEA, 0x2C08, 0x7BEB, - 0x2C0B, 0x7BF0, 0x2DE9, 0x7BF1, 0x2DEA, 0x7BF2, 0x2DDA, 0x7BF3, 0x2DE1, - 0x7BF4, 0x2DDF, 0x7BF7, 0x142B, 0x7BF8, 0x2DE6, 0x7BF9, 0x2C06, 0x7BFB, - 0x2DDD, 0x7BFD, 0x2DE7, 0x7BFE, 0x142A, 0x7BFF, 0x2DDC, 0x7C00, 0x2DDB, - 0x7C01, 0x2DE5, 0x7C02, 0x2DE2, 0x7C03, 0x2DE4, 0x7C05, 0x2DD8, 0x7C06, - 0x2DE8, 0x7C07, 0x1428, 0x7C09, 0x2DE3, 0x7C0A, 0x2DEC, 0x7C0B, 0x2DE0, - 0x7C0C, 0x142C, 0x7C0D, 0x1429, 0x7C0E, 0x2DDE, 0x7C0F, 0x2DD9, 0x7C10, - 0x2DEB, 0x7C11, 0x1317, 0x7C19, 0x2F78, 0x7C1C, 0x2F76, 0x7C1D, 0x2F7C, - 0x7C1E, 0x1508, 0x7C1F, 0x2F7A, 0x7C20, 0x2F79, 0x7C21, 0x150A, 0x7C22, - 0x2F7F, 0x7C23, 0x1509, 0x7C25, 0x2F80, 0x7C26, 0x2F7D, 0x7C27, 0x1506, - 0x7C28, 0x2F7E, 0x7C29, 0x2F77, 0x7C2A, 0x1507, 0x7C2B, 0x1505, 0x7C2C, - 0x30D6, 0x7C2D, 0x2F7B, 0x7C30, 0x2F81, 0x7C33, 0x30D3, 0x7C37, 0x15A7, - 0x7C38, 0x15A5, 0x7C39, 0x30D5, 0x7C3B, 0x30D7, 0x7C3C, 0x30D4, 0x7C3D, - 0x15A6, 0x7C3E, 0x15A3, 0x7C3F, 0x15A4, 0x7C40, 0x15A8, 0x7C43, 0x162B, - 0x7C45, 0x3212, 0x7C47, 0x3211, 0x7C48, 0x320F, 0x7C49, 0x320E, 0x7C4A, - 0x3210, 0x7C4C, 0x162A, 0x7C4D, 0x162C, 0x7C50, 0x1681, 0x7C53, 0x32EA, - 0x7C54, 0x32E9, 0x7C57, 0x339B, 0x7C59, 0x339D, 0x7C5A, 0x339F, 0x7C5B, - 0x339E, 0x7C5C, 0x339C, 0x7C5F, 0x16D1, 0x7C60, 0x16D0, 0x7C63, 0x1701, - 0x7C64, 0x1700, 0x7C65, 0x1702, 0x7C66, 0x342B, 0x7C67, 0x342A, 0x7C69, - 0x34D6, 0x7C6A, 0x3493, 0x7C6B, 0x34D7, 0x7C6C, 0x1745, 0x7C6E, 0x1746, - 0x7C6F, 0x3507, 0x7C72, 0x176B, 0x7C73, 0x03F7, 0x7C75, 0x1A25, 0x7C78, - 0x1BBB, 0x7C79, 0x1BBC, 0x7C7A, 0x1BBA, 0x7C7D, 0x07CC, 0x7C7F, 0x1BBD, - 0x7C80, 0x1BBE, 0x7C81, 0x1BBF, 0x7C84, 0x1D96, 0x7C85, 0x1D9C, 0x7C88, - 0x1D9A, 0x7C89, 0x096A, 0x7C8A, 0x1D98, 0x7C8C, 0x1D99, 0x7C8D, 0x1D9B, - 0x7C91, 0x1D97, 0x7C92, 0x0B50, 0x7C94, 0x1FE0, 0x7C95, 0x0B52, 0x7C96, - 0x1FE2, 0x7C97, 0x0B51, 0x7C98, 0x1FE1, 0x7C9E, 0x225D, 0x7C9F, 0x0D0D, - 0x7CA1, 0x225F, 0x7CA2, 0x225C, 0x7CA3, 0x1FE3, 0x7CA5, 0x0D0E, 0x7CA7, - 0x36ED, 0x7CA8, 0x225E, 0x7CAF, 0x24FE, 0x7CB1, 0x0EBB, 0x7CB2, 0x24FC, - 0x7CB3, 0x0EBC, 0x7CB4, 0x24FD, 0x7CB5, 0x0EBD, 0x7CB9, 0x1058, 0x7CBA, - 0x277D, 0x7CBB, 0x277A, 0x7CBC, 0x277C, 0x7CBD, 0x1059, 0x7CBE, 0x105A, - 0x7CBF, 0x277B, 0x7CC5, 0x29B0, 0x7CC8, 0x29B1, 0x7CCA, 0x11D4, 0x7CCB, - 0x29B3, 0x7CCC, 0x29B2, 0x7CCE, 0x0121, 0x7CD0, 0x2C11, 0x7CD1, 0x2C12, - 0x7CD2, 0x2C0E, 0x7CD4, 0x2C0F, 0x7CD5, 0x131E, 0x7CD6, 0x131F, 0x7CD7, - 0x2C10, 0x7CD9, 0x1433, 0x7CDC, 0x142F, 0x7CDD, 0x1434, 0x7CDE, 0x1430, - 0x7CDF, 0x1432, 0x7CE0, 0x142E, 0x7CE2, 0x1431, 0x7CE7, 0x150B, 0x7CE8, - 0x2DED, 0x7CEA, 0x30D9, 0x7CEC, 0x30D8, 0x7CEE, 0x3213, 0x7CEF, 0x162D, - 0x7CF0, 0x162E, 0x7CF1, 0x33A1, 0x7CF2, 0x32EB, 0x7CF4, 0x33A0, 0x7CF6, - 0x34D8, 0x7CF7, 0x351D, 0x7CF8, 0x03F8, 0x7CFB, 0x04FB, 0x7CFD, 0x1A26, - 0x7CFE, 0x0667, 0x7D00, 0x07CF, 0x7D01, 0x1BC2, 0x7D02, 0x07CD, 0x7D03, - 0x1BC0, 0x7D04, 0x07D2, 0x7D05, 0x07CE, 0x7D06, 0x07D3, 0x7D07, 0x07D1, - 0x7D08, 0x1BC1, 0x7D09, 0x07D0, 0x7D0A, 0x096E, 0x7D0B, 0x096D, 0x7D0C, - 0x1DA7, 0x7D0D, 0x0976, 0x7D0E, 0x1DA0, 0x7D0F, 0x1DA6, 0x7D10, 0x0972, - 0x7D11, 0x1D9F, 0x7D12, 0x1DA5, 0x7D13, 0x1DA3, 0x7D14, 0x0971, 0x7D15, - 0x0973, 0x7D16, 0x1DA2, 0x7D17, 0x096C, 0x7D18, 0x1DA1, 0x7D19, 0x0977, - 0x7D1A, 0x0974, 0x7D1B, 0x0978, 0x7D1C, 0x0975, 0x7D1D, 0x1D9E, 0x7D1E, - 0x1D9D, 0x7D1F, 0x1DA4, 0x7D20, 0x096F, 0x7D21, 0x096B, 0x7D22, 0x0970, - 0x7D28, 0x1FF2, 0x7D29, 0x1FEB, 0x7D2B, 0x0D13, 0x7D2C, 0x1FEA, 0x7D2E, - 0x0B56, 0x7D2F, 0x0B5D, 0x7D30, 0x0B5A, 0x7D31, 0x0B60, 0x7D32, 0x0B5F, - 0x7D33, 0x0B5B, 0x7D35, 0x1FE4, 0x7D36, 0x1FE7, 0x7D38, 0x1FE6, 0x7D39, - 0x0B57, 0x7D3A, 0x1FE8, 0x7D3B, 0x1FF1, 0x7D3C, 0x0B58, 0x7D3D, 0x1FE5, - 0x7D3E, 0x1FEE, 0x7D3F, 0x1FEF, 0x7D40, 0x0B59, 0x7D41, 0x1FEC, 0x7D42, - 0x0B5E, 0x7D43, 0x0B54, 0x7D44, 0x0B5C, 0x7D45, 0x1FE9, 0x7D46, 0x0B53, - 0x7D47, 0x1FED, 0x7D4A, 0x1FF0, 0x7D4E, 0x2270, 0x7D4F, 0x2267, 0x7D50, - 0x0D10, 0x7D51, 0x226E, 0x7D52, 0x226B, 0x7D53, 0x2263, 0x7D54, 0x226C, - 0x7D55, 0x0D12, 0x7D56, 0x2264, 0x7D58, 0x2260, 0x7D5B, 0x0EC3, 0x7D5C, - 0x2269, 0x7D5E, 0x0D0F, 0x7D5F, 0x226F, 0x7D61, 0x0D16, 0x7D62, 0x0D18, - 0x7D63, 0x2262, 0x7D66, 0x0D17, 0x7D67, 0x2265, 0x7D68, 0x0D11, 0x7D69, - 0x226D, 0x7D6A, 0x2266, 0x7D6B, 0x226A, 0x7D6D, 0x2268, 0x7D6E, 0x0D14, - 0x7D6F, 0x2261, 0x7D70, 0x0D19, 0x7D71, 0x0B55, 0x7D72, 0x0D15, 0x7D73, - 0x0D1A, 0x7D79, 0x0EBF, 0x7D7A, 0x2505, 0x7D7B, 0x2507, 0x7D7C, 0x2509, - 0x7D7D, 0x250D, 0x7D7F, 0x2503, 0x7D80, 0x2501, 0x7D81, 0x0EC1, 0x7D83, - 0x2508, 0x7D84, 0x250C, 0x7D85, 0x2504, 0x7D86, 0x2500, 0x7D88, 0x24FF, - 0x7D8C, 0x250A, 0x7D8D, 0x2502, 0x7D8E, 0x2506, 0x7D8F, 0x0EC2, 0x7D91, - 0x0EC0, 0x7D92, 0x250E, 0x7D93, 0x0EBE, 0x7D94, 0x250B, 0x7D96, 0x278E, - 0x7D9C, 0x105D, 0x7D9D, 0x2786, 0x7D9E, 0x11E1, 0x7D9F, 0x2790, 0x7DA0, - 0x1060, 0x7DA1, 0x2794, 0x7DA2, 0x1066, 0x7DA3, 0x2781, 0x7DA6, 0x2791, - 0x7DA7, 0x277E, 0x7DA9, 0x2793, 0x7DAA, 0x2782, 0x7DAC, 0x106D, 0x7DAD, - 0x106A, 0x7DAE, 0x2792, 0x7DAF, 0x278C, 0x7DB0, 0x105C, 0x7DB1, 0x1064, - 0x7DB2, 0x1063, 0x7DB4, 0x1062, 0x7DB5, 0x1068, 0x7DB7, 0x277F, 0x7DB8, - 0x1069, 0x7DB9, 0x278D, 0x7DBA, 0x1065, 0x7DBB, 0x105B, 0x7DBC, 0x278F, - 0x7DBD, 0x105E, 0x7DBE, 0x105F, 0x7DBF, 0x1067, 0x7DC0, 0x2784, 0x7DC1, - 0x2783, 0x7DC2, 0x2780, 0x7DC4, 0x2788, 0x7DC5, 0x2785, 0x7DC6, 0x2789, - 0x7DC7, 0x106C, 0x7DC9, 0x2795, 0x7DCA, 0x1061, 0x7DCB, 0x278A, 0x7DCC, - 0x278B, 0x7DCE, 0x2787, 0x7DD2, 0x106B, 0x7DD7, 0x29B8, 0x7DD8, 0x11D9, - 0x7DD9, 0x11E2, 0x7DDA, 0x11DE, 0x7DDB, 0x29B5, 0x7DDD, 0x11DB, 0x7DDE, - 0x11DF, 0x7DDF, 0x29C1, 0x7DE0, 0x11D5, 0x7DE1, 0x29B9, 0x7DE3, 0x11DD, - 0x7DE6, 0x29BC, 0x7DE7, 0x29B7, 0x7DE8, 0x11DC, 0x7DE9, 0x11E0, 0x7DEA, - 0x29B6, 0x7DEC, 0x11DA, 0x7DEE, 0x29C0, 0x7DEF, 0x11D7, 0x7DF0, 0x29BF, - 0x7DF1, 0x29BE, 0x7DF2, 0x11E3, 0x7DF3, 0x28C8, 0x7DF4, 0x11D6, 0x7DF6, - 0x29BD, 0x7DF7, 0x29B4, 0x7DF9, 0x11E4, 0x7DFA, 0x29BB, 0x7DFB, 0x11D8, - 0x7E03, 0x29BA, 0x7E08, 0x1322, 0x7E09, 0x1327, 0x7E0A, 0x1320, 0x7E0B, - 0x2C1F, 0x7E0C, 0x2C16, 0x7E0D, 0x2C22, 0x7E0E, 0x2C1A, 0x7E0F, 0x2C20, - 0x7E10, 0x1328, 0x7E11, 0x1321, 0x7E12, 0x2C13, 0x7E13, 0x2C19, 0x7E14, - 0x2C23, 0x7E15, 0x2C1C, 0x7E16, 0x2C21, 0x7E17, 0x2C15, 0x7E1A, 0x2C1D, - 0x7E1B, 0x1323, 0x7E1C, 0x2C1B, 0x7E1D, 0x1326, 0x7E1E, 0x1325, 0x7E1F, - 0x2C17, 0x7E20, 0x2C18, 0x7E21, 0x2C14, 0x7E22, 0x2C1E, 0x7E23, 0x1324, - 0x7E24, 0x2C25, 0x7E25, 0x2C24, 0x7E29, 0x2DF8, 0x7E2A, 0x2DF4, 0x7E2B, - 0x143B, 0x7E2D, 0x2DEE, 0x7E2E, 0x1435, 0x7E2F, 0x1445, 0x7E30, 0x2DFA, - 0x7E31, 0x143D, 0x7E32, 0x1439, 0x7E33, 0x2DF1, 0x7E34, 0x1440, 0x7E35, - 0x1443, 0x7E36, 0x2DFC, 0x7E37, 0x1438, 0x7E38, 0x2DF3, 0x7E39, 0x1441, - 0x7E3A, 0x2DFE, 0x7E3B, 0x2DFB, 0x7E3C, 0x2DEF, 0x7E3D, 0x143C, 0x7E3E, - 0x1436, 0x7E3F, 0x1444, 0x7E40, 0x2DF6, 0x7E41, 0x143F, 0x7E42, 0x2DF0, - 0x7E43, 0x143A, 0x7E44, 0x2DFD, 0x7E45, 0x143E, 0x7E46, 0x1437, 0x7E47, - 0x2DF7, 0x7E48, 0x1442, 0x7E49, 0x2DF5, 0x7E4C, 0x2DF9, 0x7E50, 0x2F83, - 0x7E51, 0x2F89, 0x7E52, 0x1511, 0x7E53, 0x2F8C, 0x7E54, 0x150C, 0x7E55, - 0x150D, 0x7E56, 0x2F84, 0x7E57, 0x2F8B, 0x7E58, 0x2F86, 0x7E59, 0x1512, - 0x7E5A, 0x150F, 0x7E5C, 0x2F82, 0x7E5E, 0x150E, 0x7E5F, 0x2F88, 0x7E60, - 0x2F8A, 0x7E61, 0x1510, 0x7E62, 0x2F87, 0x7E63, 0x2F85, 0x7E68, 0x30E3, - 0x7E69, 0x15AC, 0x7E6A, 0x15AD, 0x7E6B, 0x15A9, 0x7E6D, 0x15AA, 0x7E6F, - 0x30DF, 0x7E70, 0x30DD, 0x7E72, 0x30E1, 0x7E73, 0x15AE, 0x7E74, 0x30E2, - 0x7E75, 0x30DB, 0x7E76, 0x30DA, 0x7E77, 0x30DE, 0x7E78, 0x30DC, 0x7E79, - 0x15AB, 0x7E7A, 0x30E0, 0x7E7B, 0x3214, 0x7E7C, 0x1631, 0x7E7D, 0x1630, - 0x7E7E, 0x3215, 0x7E80, 0x3217, 0x7E81, 0x3216, 0x7E82, 0x1632, 0x7E86, - 0x32F0, 0x7E87, 0x32ED, 0x7E88, 0x32EE, 0x7E8A, 0x32EC, 0x7E8B, 0x32EF, - 0x7E8C, 0x1683, 0x7E8D, 0x32F1, 0x7E8F, 0x1682, 0x7E91, 0x33A2, 0x7E93, - 0x1703, 0x7E94, 0x1705, 0x7E95, 0x342C, 0x7E96, 0x1704, 0x7E97, 0x3494, - 0x7E98, 0x34DA, 0x7E99, 0x34DC, 0x7E9A, 0x34D9, 0x7E9B, 0x34DB, 0x7E9C, - 0x1759, 0x7F36, 0x03F9, 0x7F38, 0x07D4, 0x7F39, 0x1D1F, 0x7F3A, 0x0979, - 0x7F3D, 0x0B61, 0x7F3E, 0x2271, 0x7F3F, 0x2272, 0x7F43, 0x2C26, 0x7F44, - 0x1446, 0x7F45, 0x2DFF, 0x7F48, 0x1513, 0x7F4A, 0x30E5, 0x7F4B, 0x30E4, - 0x7F4C, 0x1633, 0x7F4D, 0x32F2, 0x7F4F, 0x33A3, 0x7F50, 0x1726, 0x7F51, - 0x1812, 0x7F54, 0x0668, 0x7F55, 0x04FC, 0x7F58, 0x1BC3, 0x7F5B, 0x1DAD, - 0x7F5C, 0x1DA8, 0x7F5D, 0x1DAC, 0x7F5E, 0x1DAA, 0x7F5F, 0x097A, 0x7F60, - 0x1DAB, 0x7F61, 0x1DA9, 0x7F63, 0x1FF3, 0x7F65, 0x2273, 0x7F66, 0x2274, - 0x7F67, 0x2511, 0x7F68, 0x2512, 0x7F69, 0x0EC5, 0x7F6A, 0x0EC6, 0x7F6B, - 0x2510, 0x7F6C, 0x2513, 0x7F6D, 0x250F, 0x7F6E, 0x0EC4, 0x7F70, 0x106E, - 0x7F72, 0x0EC7, 0x7F73, 0x2796, 0x7F75, 0x11E5, 0x7F76, 0x29C2, 0x7F77, - 0x11E6, 0x7F79, 0x1329, 0x7F7A, 0x2C29, 0x7F7B, 0x2C27, 0x7F7C, 0x2C28, - 0x7F7D, 0x2E02, 0x7F7E, 0x2E01, 0x7F7F, 0x2E00, 0x7F83, 0x30E6, 0x7F85, - 0x15AF, 0x7F86, 0x30E7, 0x7F87, 0x33A4, 0x7F88, 0x1727, 0x7F89, 0x3495, - 0x7F8A, 0x03FA, 0x7F8B, 0x066A, 0x7F8C, 0x0669, 0x7F8D, 0x1BC5, 0x7F8E, - 0x07D5, 0x7F91, 0x1BC4, 0x7F92, 0x1DAF, 0x7F94, 0x097B, 0x7F95, 0x1FF4, - 0x7F96, 0x1DAE, 0x7F9A, 0x0B63, 0x7F9B, 0x1FF7, 0x7F9C, 0x1FF5, 0x7F9D, - 0x1FF6, 0x7F9E, 0x0B62, 0x7FA0, 0x2276, 0x7FA1, 0x2277, 0x7FA2, 0x2275, - 0x7FA4, 0x0ECA, 0x7FA5, 0x2515, 0x7FA6, 0x2514, 0x7FA7, 0x2516, 0x7FA8, - 0x0EC9, 0x7FA9, 0x0EC8, 0x7FAC, 0x29C3, 0x7FAD, 0x29C5, 0x7FAF, 0x11E7, - 0x7FB0, 0x29C4, 0x7FB1, 0x2C2A, 0x7FB2, 0x132A, 0x7FB3, 0x2F8E, 0x7FB5, - 0x2F8D, 0x7FB6, 0x15B0, 0x7FB7, 0x30E8, 0x7FB8, 0x15B2, 0x7FB9, 0x15B1, - 0x7FBA, 0x3218, 0x7FBB, 0x32F3, 0x7FBC, 0x1684, 0x7FBD, 0x03FB, 0x7FBE, - 0x1BC6, 0x7FBF, 0x07D6, 0x7FC0, 0x1DB2, 0x7FC1, 0x097D, 0x7FC2, 0x1DB1, - 0x7FC3, 0x1DB0, 0x7FC5, 0x097C, 0x7FC7, 0x1FFD, 0x7FC9, 0x1FFF, 0x7FCA, - 0x1FF8, 0x7FCB, 0x1FF9, 0x7FCC, 0x0B64, 0x7FCD, 0x1FFA, 0x7FCE, 0x0B65, - 0x7FCF, 0x1FFE, 0x7FD0, 0x1FFB, 0x7FD1, 0x1FFC, 0x7FD2, 0x0B66, 0x7FD4, - 0x0D1C, 0x7FD5, 0x0D1D, 0x7FD7, 0x2278, 0x7FDB, 0x2517, 0x7FDC, 0x2518, - 0x7FDE, 0x279A, 0x7FDF, 0x1071, 0x7FE0, 0x106F, 0x7FE1, 0x1070, 0x7FE2, - 0x2797, 0x7FE3, 0x2798, 0x7FE5, 0x2799, 0x7FE6, 0x29CA, 0x7FE8, 0x29CB, - 0x7FE9, 0x11E8, 0x7FEA, 0x29C8, 0x7FEB, 0x29C7, 0x7FEC, 0x29C9, 0x7FED, - 0x29C6, 0x7FEE, 0x132D, 0x7FEF, 0x2C2B, 0x7FF0, 0x132B, 0x7FF1, 0x132C, - 0x7FF2, 0x2E04, 0x7FF3, 0x1447, 0x7FF4, 0x2E03, 0x7FF5, 0x2EFF, 0x7FF7, - 0x2F8F, 0x7FF8, 0x2F90, 0x7FF9, 0x1514, 0x7FFB, 0x1515, 0x7FFC, 0x1448, - 0x7FFD, 0x30E9, 0x7FFE, 0x30EA, 0x7FFF, 0x3219, 0x8000, 0x1634, 0x8001, - 0x03FC, 0x8003, 0x03FD, 0x8004, 0x097F, 0x8005, 0x066B, 0x8006, 0x097E, - 0x8007, 0x1BC7, 0x800B, 0x0D1E, 0x800C, 0x03FE, 0x800D, 0x07D8, 0x800E, - 0x1BC8, 0x800F, 0x1BC9, 0x8010, 0x07D7, 0x8011, 0x07D9, 0x8012, 0x03FF, - 0x8014, 0x1BCA, 0x8015, 0x0981, 0x8016, 0x1DB3, 0x8017, 0x0983, 0x8018, - 0x0980, 0x8019, 0x0982, 0x801B, 0x2002, 0x801C, 0x0B67, 0x801E, 0x2001, - 0x801F, 0x2000, 0x8021, 0x2519, 0x8024, 0x279B, 0x8026, 0x11E9, 0x8028, - 0x132E, 0x8029, 0x2C2D, 0x802A, 0x2C2C, 0x802C, 0x2E05, 0x8030, 0x32F4, - 0x8033, 0x0400, 0x8034, 0x18D8, 0x8035, 0x1A27, 0x8036, 0x07DA, 0x8037, - 0x1BCB, 0x8039, 0x1DB5, 0x803D, 0x0984, 0x803E, 0x1DB4, 0x803F, 0x0985, - 0x8043, 0x2004, 0x8046, 0x0B69, 0x8047, 0x2003, 0x8048, 0x2005, 0x804A, - 0x0B68, 0x804F, 0x227A, 0x8050, 0x227B, 0x8051, 0x2279, 0x8052, 0x0D1F, - 0x8056, 0x0ECB, 0x8058, 0x0ECC, 0x805A, 0x1073, 0x805C, 0x279D, 0x805D, - 0x279C, 0x805E, 0x1072, 0x8064, 0x29CC, 0x8067, 0x29CD, 0x806C, 0x2C2E, - 0x806F, 0x144C, 0x8070, 0x144B, 0x8071, 0x1449, 0x8072, 0x144A, 0x8073, - 0x144D, 0x8075, 0x2F91, 0x8076, 0x1517, 0x8077, 0x1516, 0x8078, 0x30EB, - 0x8079, 0x321A, 0x807D, 0x16D3, 0x807E, 0x16D2, 0x807F, 0x0401, 0x8082, - 0x1CEC, 0x8084, 0x0ECE, 0x8085, 0x0D20, 0x8086, 0x0ECD, 0x8087, 0x1074, - 0x8089, 0x0402, 0x808A, 0x17B3, 0x808B, 0x0403, 0x808C, 0x0404, 0x808F, - 0x1A28, 0x8090, 0x18DB, 0x8092, 0x18DC, 0x8093, 0x04FE, 0x8095, 0x18D9, - 0x8096, 0x04FD, 0x8098, 0x0500, 0x8099, 0x18DA, 0x809A, 0x0502, 0x809B, - 0x0501, 0x809C, 0x18DD, 0x809D, 0x04FF, 0x80A1, 0x0670, 0x80A2, 0x066E, - 0x80A3, 0x1A2A, 0x80A5, 0x066D, 0x80A9, 0x0672, 0x80AA, 0x0674, 0x80AB, - 0x0671, 0x80AD, 0x1A2D, 0x80AE, 0x1A29, 0x80AF, 0x0675, 0x80B1, 0x066F, - 0x80B2, 0x0503, 0x80B4, 0x0673, 0x80B5, 0x1A2C, 0x80B8, 0x1A2B, 0x80BA, - 0x066C, 0x80C2, 0x1BD1, 0x80C3, 0x07DE, 0x80C4, 0x07DF, 0x80C5, 0x1BD3, - 0x80C7, 0x1BCD, 0x80C8, 0x1BD0, 0x80C9, 0x1BD9, 0x80CA, 0x1BD7, 0x80CC, - 0x07E0, 0x80CD, 0x1BDD, 0x80CE, 0x07E3, 0x80CF, 0x1BDA, 0x80D0, 0x1BD2, - 0x80D1, 0x1BCF, 0x80D4, 0x227D, 0x80D5, 0x1BD8, 0x80D6, 0x07DB, 0x80D7, - 0x1BDB, 0x80D8, 0x1BCC, 0x80D9, 0x1BD5, 0x80DA, 0x07DD, 0x80DB, 0x07E2, - 0x80DC, 0x1BD6, 0x80DD, 0x07E6, 0x80DE, 0x07E4, 0x80E0, 0x1BCE, 0x80E1, - 0x07E1, 0x80E3, 0x1BD4, 0x80E4, 0x07E5, 0x80E5, 0x07DC, 0x80E6, 0x1BDC, - 0x80ED, 0x098A, 0x80EF, 0x0993, 0x80F0, 0x0988, 0x80F1, 0x0986, 0x80F2, - 0x1DB7, 0x80F3, 0x098E, 0x80F4, 0x098B, 0x80F5, 0x1DB9, 0x80F8, 0x098D, - 0x80F9, 0x1DB8, 0x80FA, 0x1DB6, 0x80FB, 0x1DBB, 0x80FC, 0x0992, 0x80FD, - 0x0990, 0x80FE, 0x227C, 0x8100, 0x1DBC, 0x8101, 0x1DBA, 0x8102, 0x0987, - 0x8105, 0x0989, 0x8106, 0x098C, 0x8108, 0x098F, 0x810A, 0x0991, 0x8115, - 0x200F, 0x8116, 0x0B6B, 0x8118, 0x2006, 0x8119, 0x2008, 0x811B, 0x2009, - 0x811D, 0x2011, 0x811E, 0x200D, 0x811F, 0x200B, 0x8121, 0x200E, 0x8122, - 0x2012, 0x8123, 0x0B6C, 0x8124, 0x0B70, 0x8125, 0x2007, 0x8127, 0x2010, - 0x8129, 0x0B6E, 0x812B, 0x0B6D, 0x812C, 0x200C, 0x812D, 0x200A, 0x812F, - 0x0B6A, 0x8130, 0x0B6F, 0x8139, 0x0D26, 0x813A, 0x2285, 0x813D, 0x2283, - 0x813E, 0x0D28, 0x8143, 0x227E, 0x8144, 0x2527, 0x8146, 0x0D27, 0x8147, - 0x2282, 0x814A, 0x227F, 0x814B, 0x0D23, 0x814C, 0x0D29, 0x814D, 0x2284, - 0x814E, 0x0D25, 0x814F, 0x2281, 0x8150, 0x1075, 0x8151, 0x0D24, 0x8152, - 0x2280, 0x8153, 0x0D2A, 0x8154, 0x0D22, 0x8155, 0x0D21, 0x815B, 0x251F, - 0x815C, 0x251D, 0x815E, 0x2523, 0x8160, 0x251B, 0x8161, 0x2528, 0x8162, - 0x2520, 0x8164, 0x251A, 0x8165, 0x0ED2, 0x8166, 0x0ED8, 0x8167, 0x2525, - 0x8169, 0x251E, 0x816B, 0x0ED5, 0x816E, 0x0ED3, 0x816F, 0x2526, 0x8170, - 0x0ED0, 0x8171, 0x0ECF, 0x8172, 0x2521, 0x8173, 0x0ED4, 0x8174, 0x0D2B, - 0x8176, 0x2524, 0x8177, 0x251C, 0x8178, 0x0ED1, 0x8179, 0x0ED6, 0x817A, - 0x0ED7, 0x817F, 0x107A, 0x8180, 0x1076, 0x8182, 0x107B, 0x8183, 0x27A0, - 0x8186, 0x279F, 0x8187, 0x27A1, 0x8188, 0x1078, 0x8189, 0x279E, 0x818A, - 0x1079, 0x818B, 0x27A4, 0x818C, 0x27A3, 0x818D, 0x27A2, 0x818F, 0x1077, - 0x8195, 0x29D1, 0x8197, 0x29D4, 0x8198, 0x11EF, 0x8199, 0x29D3, 0x819A, - 0x11EE, 0x819B, 0x11EA, 0x819C, 0x11EB, 0x819D, 0x11EC, 0x819E, 0x29D0, - 0x819F, 0x29CF, 0x81A0, 0x11ED, 0x81A2, 0x29D2, 0x81A3, 0x29CE, 0x81A6, - 0x2C30, 0x81A7, 0x2C3A, 0x81A8, 0x1331, 0x81A9, 0x1330, 0x81AB, 0x2C34, - 0x81AC, 0x2C36, 0x81AE, 0x2C31, 0x81B0, 0x2C35, 0x81B1, 0x2C2F, 0x81B2, - 0x2C38, 0x81B3, 0x132F, 0x81B4, 0x2C37, 0x81B5, 0x2C33, 0x81B7, 0x2C39, - 0x81B9, 0x2C32, 0x81BA, 0x1450, 0x81BB, 0x2E06, 0x81BC, 0x2E0C, 0x81BD, - 0x1454, 0x81BE, 0x1456, 0x81BF, 0x1453, 0x81C0, 0x1452, 0x81C2, 0x1451, - 0x81C3, 0x144F, 0x81C4, 0x2E07, 0x81C5, 0x2E0A, 0x81C6, 0x144E, 0x81C7, - 0x2E0B, 0x81C9, 0x1455, 0x81CA, 0x2E09, 0x81CC, 0x2E08, 0x81CD, 0x1518, - 0x81CF, 0x1519, 0x81D0, 0x2F94, 0x81D1, 0x2F92, 0x81D2, 0x2F93, 0x81D5, - 0x30ED, 0x81D7, 0x30EC, 0x81D8, 0x15B3, 0x81D9, 0x321C, 0x81DA, 0x1635, - 0x81DB, 0x321B, 0x81DD, 0x32F5, 0x81DE, 0x33A5, 0x81DF, 0x16D4, 0x81E0, - 0x34DD, 0x81E1, 0x34DE, 0x81E2, 0x1706, 0x81E3, 0x0405, 0x81E5, 0x0676, - 0x81E6, 0x2286, 0x81E7, 0x107C, 0x81E8, 0x1457, 0x81E9, 0x2E0D, 0x81EA, - 0x0406, 0x81EC, 0x0995, 0x81ED, 0x0994, 0x81EE, 0x2287, 0x81F2, 0x2C3B, - 0x81F3, 0x0407, 0x81F4, 0x07E7, 0x81F7, 0x2288, 0x81F8, 0x2289, 0x81F9, - 0x228A, 0x81FA, 0x107D, 0x81FB, 0x1332, 0x81FC, 0x0408, 0x81FE, 0x0677, - 0x81FF, 0x1BDE, 0x8200, 0x0996, 0x8201, 0x1DBD, 0x8202, 0x0B71, 0x8204, - 0x228B, 0x8205, 0x0ED9, 0x8207, 0x107E, 0x8208, 0x1333, 0x8209, 0x1458, - 0x820A, 0x151A, 0x820B, 0x30EE, 0x820C, 0x0409, 0x820D, 0x0678, 0x8210, - 0x0997, 0x8211, 0x2013, 0x8212, 0x0D2C, 0x8214, 0x107F, 0x8215, 0x27A5, - 0x8216, 0x29D5, 0x821B, 0x040A, 0x821C, 0x0D2D, 0x821D, 0x2529, 0x821E, - 0x1080, 0x821F, 0x040B, 0x8220, 0x1A2E, 0x8221, 0x1BDF, 0x8222, 0x07E8, - 0x8225, 0x1DBF, 0x8228, 0x099A, 0x822A, 0x0998, 0x822B, 0x0999, 0x822C, - 0x099B, 0x822F, 0x1DBE, 0x8232, 0x2018, 0x8233, 0x2015, 0x8234, 0x2017, - 0x8235, 0x0B72, 0x8236, 0x0B74, 0x8237, 0x0B73, 0x8238, 0x2014, 0x8239, - 0x0B75, 0x823A, 0x2016, 0x823C, 0x228C, 0x823D, 0x228D, 0x823F, 0x228E, - 0x8240, 0x252C, 0x8242, 0x252D, 0x8244, 0x252B, 0x8245, 0x252E, 0x8247, - 0x0EDA, 0x8249, 0x252A, 0x824B, 0x1081, 0x824E, 0x29DA, 0x824F, 0x29D6, - 0x8250, 0x29D9, 0x8251, 0x29DB, 0x8252, 0x29D8, 0x8253, 0x29D7, 0x8255, - 0x2C3C, 0x8256, 0x2C3D, 0x8257, 0x2C3E, 0x8258, 0x1334, 0x8259, 0x1335, - 0x825A, 0x2E0F, 0x825B, 0x2E0E, 0x825C, 0x2E10, 0x825E, 0x2F96, 0x825F, - 0x2F95, 0x8261, 0x30F0, 0x8263, 0x30F1, 0x8264, 0x30EF, 0x8266, 0x1636, - 0x8268, 0x321D, 0x8269, 0x321E, 0x826B, 0x33A6, 0x826C, 0x342D, 0x826D, - 0x3496, 0x826E, 0x040C, 0x826F, 0x0504, 0x8271, 0x1459, 0x8272, 0x040D, - 0x8274, 0x2019, 0x8275, 0x228F, 0x8277, 0x172E, 0x8278, 0x1813, 0x827C, - 0x1814, 0x827D, 0x1816, 0x827E, 0x040E, 0x827F, 0x1817, 0x8280, 0x1815, - 0x8283, 0x18E5, 0x8284, 0x18E6, 0x8285, 0x18E0, 0x828A, 0x18E4, 0x828B, - 0x0506, 0x828D, 0x0507, 0x828E, 0x18E1, 0x828F, 0x18DF, 0x8290, 0x18DE, - 0x8291, 0x18E2, 0x8292, 0x0505, 0x8293, 0x18E3, 0x8294, 0x1BE0, 0x8298, - 0x1A33, 0x8299, 0x067B, 0x829A, 0x1A32, 0x829B, 0x1A34, 0x829D, 0x067A, - 0x829E, 0x1A39, 0x829F, 0x067E, 0x82A0, 0x1A2F, 0x82A1, 0x1A3D, 0x82A2, - 0x1A43, 0x82A3, 0x0685, 0x82A4, 0x1A40, 0x82A5, 0x0682, 0x82A7, 0x1A36, - 0x82A8, 0x1A3C, 0x82A9, 0x1A3E, 0x82AB, 0x1A31, 0x82AC, 0x0681, 0x82AD, - 0x067C, 0x82AE, 0x1A37, 0x82AF, 0x0683, 0x82B0, 0x0686, 0x82B1, 0x0680, - 0x82B3, 0x0679, 0x82B4, 0x1A3B, 0x82B5, 0x1A35, 0x82B6, 0x1A42, 0x82B7, - 0x0688, 0x82B8, 0x0684, 0x82B9, 0x067F, 0x82BA, 0x1A3A, 0x82BB, 0x099C, - 0x82BC, 0x1A38, 0x82BD, 0x067D, 0x82BE, 0x0687, 0x82C0, 0x1A30, 0x82C2, - 0x1A3F, 0x82C3, 0x1A41, 0x82D1, 0x07F9, 0x82D2, 0x07F3, 0x82D3, 0x07FB, - 0x82D4, 0x07F8, 0x82D5, 0x1BE7, 0x82D6, 0x1BEA, 0x82D7, 0x07F4, 0x82D9, - 0x1BE1, 0x82DB, 0x07ED, 0x82DC, 0x07F7, 0x82DE, 0x07FA, 0x82DF, 0x07FC, - 0x82E0, 0x1BF6, 0x82E1, 0x1BED, 0x82E3, 0x07EC, 0x82E4, 0x1BF5, 0x82E5, - 0x07F0, 0x82E6, 0x07EE, 0x82E7, 0x07E9, 0x82E8, 0x1BE5, 0x82EA, 0x1BF4, - 0x82EB, 0x1BE9, 0x82EC, 0x1BEC, 0x82ED, 0x1BF9, 0x82EF, 0x07FD, 0x82F0, - 0x1BF3, 0x82F1, 0x07F5, 0x82F2, 0x1BEE, 0x82F3, 0x1BF8, 0x82F4, 0x1BEB, - 0x82F5, 0x1BEF, 0x82F6, 0x1BF2, 0x82F9, 0x1BE3, 0x82FA, 0x1BF7, 0x82FB, - 0x1BF1, 0x82FE, 0x1BE2, 0x8300, 0x1BE6, 0x8301, 0x07F6, 0x8302, 0x07F1, - 0x8303, 0x07EA, 0x8304, 0x07EF, 0x8305, 0x07EB, 0x8306, 0x07FE, 0x8307, - 0x1BE4, 0x8308, 0x1DD0, 0x8309, 0x07F2, 0x830C, 0x1BF0, 0x830D, 0x1A7D, - 0x8316, 0x1DD3, 0x8317, 0x09AA, 0x8319, 0x1DC3, 0x831B, 0x1DCE, 0x831C, - 0x1DCA, 0x831E, 0x1DDD, 0x8320, 0x1DD5, 0x8322, 0x1DCB, 0x8324, 0x1DD4, - 0x8325, 0x1DC5, 0x8326, 0x1DC9, 0x8327, 0x1DE0, 0x8328, 0x09AD, 0x8329, - 0x1DD8, 0x832A, 0x1DCF, 0x832B, 0x099D, 0x832C, 0x1DDE, 0x832D, 0x1DC1, - 0x832F, 0x1DD7, 0x8331, 0x09AC, 0x8332, 0x09A7, 0x8333, 0x1DC0, 0x8334, - 0x09A5, 0x8335, 0x09A4, 0x8336, 0x09A9, 0x8337, 0x1DD6, 0x8338, 0x09A1, - 0x8339, 0x09A8, 0x833A, 0x1BE8, 0x833B, 0x2290, 0x833C, 0x1DD1, 0x833F, - 0x1DC7, 0x8340, 0x09AB, 0x8341, 0x1DC8, 0x8342, 0x1DCC, 0x8343, 0x09AE, - 0x8344, 0x1DC2, 0x8345, 0x1DDA, 0x8347, 0x1DD9, 0x8348, 0x1DE1, 0x8349, - 0x09A3, 0x834A, 0x09A0, 0x834B, 0x1DDF, 0x834C, 0x1DDB, 0x834D, 0x1DD2, - 0x834E, 0x1DCD, 0x834F, 0x09A6, 0x8350, 0x09A2, 0x8351, 0x1DC4, 0x8352, - 0x099E, 0x8353, 0x1DDC, 0x8354, 0x099F, 0x8356, 0x1DC6, 0x8373, 0x201F, - 0x8374, 0x2021, 0x8375, 0x2026, 0x8376, 0x203A, 0x8377, 0x0B83, 0x8378, - 0x0B79, 0x837A, 0x201E, 0x837B, 0x0B84, 0x837C, 0x0B85, 0x837D, 0x2029, - 0x837E, 0x2030, 0x837F, 0x2036, 0x8381, 0x2023, 0x8383, 0x202A, 0x8386, - 0x0B86, 0x8387, 0x2038, 0x8388, 0x2033, 0x8389, 0x0B81, 0x838A, 0x0B7F, - 0x838B, 0x202F, 0x838C, 0x202B, 0x838D, 0x201D, 0x838E, 0x0B76, 0x838F, - 0x2022, 0x8390, 0x201A, 0x8392, 0x0B7E, 0x8393, 0x0B80, 0x8394, 0x2027, - 0x8395, 0x2024, 0x8396, 0x0B7B, 0x8397, 0x2034, 0x8398, 0x0B78, 0x8399, - 0x2025, 0x839A, 0x22B9, 0x839B, 0x202D, 0x839D, 0x202C, 0x839E, 0x0B77, - 0x83A0, 0x0B82, 0x83A2, 0x0B7A, 0x83A3, 0x201B, 0x83A4, 0x2020, 0x83A5, - 0x2031, 0x83A6, 0x2037, 0x83A7, 0x0B87, 0x83A8, 0x201C, 0x83A9, 0x2028, - 0x83AA, 0x202E, 0x83AB, 0x0B7D, 0x83AE, 0x2039, 0x83AF, 0x2032, 0x83B0, - 0x2035, 0x83BD, 0x0B7C, 0x83BF, 0x22A0, 0x83C0, 0x2294, 0x83C1, 0x0D35, - 0x83C2, 0x22B1, 0x83C3, 0x22BA, 0x83C4, 0x22BD, 0x83C5, 0x0D33, 0x83C6, - 0x229C, 0x83C7, 0x22B5, 0x83C8, 0x229D, 0x83C9, 0x22AB, 0x83CA, 0x0D40, - 0x83CB, 0x22A7, 0x83CC, 0x0D3D, 0x83CE, 0x22A8, 0x83CF, 0x2291, 0x83D1, - 0x22B6, 0x83D4, 0x0D46, 0x83D5, 0x22B3, 0x83D6, 0x22A9, 0x83D7, 0x22BF, - 0x83D8, 0x22A4, 0x83D9, 0x254E, 0x83DB, 0x22C2, 0x83DC, 0x0D44, 0x83DD, - 0x22A2, 0x83DE, 0x22AE, 0x83DF, 0x0D47, 0x83E0, 0x0D32, 0x83E1, 0x22A6, - 0x83E2, 0x22C0, 0x83E3, 0x229F, 0x83E4, 0x2298, 0x83E5, 0x22A3, 0x83E7, - 0x2297, 0x83E8, 0x2295, 0x83E9, 0x0D2E, 0x83EA, 0x22B7, 0x83EB, 0x229E, - 0x83EC, 0x22BB, 0x83EE, 0x22BC, 0x83EF, 0x0D36, 0x83F0, 0x0D3B, 0x83F1, - 0x0D37, 0x83F2, 0x0D3F, 0x83F3, 0x22B2, 0x83F4, 0x0D38, 0x83F5, 0x22AA, - 0x83F6, 0x229A, 0x83F8, 0x0D30, 0x83F9, 0x2292, 0x83FA, 0x22B4, 0x83FB, - 0x22BE, 0x83FC, 0x2299, 0x83FD, 0x0D3E, 0x83FE, 0x22C3, 0x83FF, 0x22A5, - 0x8401, 0x22A1, 0x8403, 0x0D2F, 0x8404, 0x0D43, 0x8406, 0x22B0, 0x8407, - 0x0D45, 0x8409, 0x22AC, 0x840A, 0x0D3A, 0x840B, 0x0D34, 0x840C, 0x0D3C, - 0x840D, 0x0D31, 0x840E, 0x0D42, 0x840F, 0x22AD, 0x8410, 0x229B, 0x8411, - 0x22AF, 0x8412, 0x2296, 0x8413, 0x22B8, 0x841B, 0x22C1, 0x8423, 0x2293, - 0x8429, 0x254D, 0x842B, 0x2563, 0x842C, 0x0EAC, 0x842D, 0x2552, 0x842F, - 0x2550, 0x8430, 0x253B, 0x8431, 0x0EDE, 0x8432, 0x254B, 0x8433, 0x255F, - 0x8434, 0x2547, 0x8435, 0x0EE6, 0x8436, 0x255E, 0x8437, 0x2545, 0x8438, - 0x0D41, 0x8439, 0x2555, 0x843A, 0x2546, 0x843B, 0x255C, 0x843C, 0x0EE5, - 0x843D, 0x0EDD, 0x843F, 0x2530, 0x8440, 0x2538, 0x8442, 0x2551, 0x8443, - 0x2549, 0x8444, 0x2562, 0x8445, 0x254C, 0x8446, 0x0EEB, 0x8447, 0x255D, - 0x8449, 0x0EE2, 0x844B, 0x254F, 0x844C, 0x2557, 0x844D, 0x253C, 0x844E, - 0x2556, 0x8450, 0x2567, 0x8451, 0x2537, 0x8452, 0x2558, 0x8454, 0x2565, - 0x8456, 0x2531, 0x8457, 0x0D39, 0x8459, 0x253F, 0x845A, 0x253E, 0x845B, - 0x0EE4, 0x845D, 0x2542, 0x845E, 0x2544, 0x845F, 0x2553, 0x8460, 0x2564, - 0x8461, 0x0EE7, 0x8463, 0x0EE8, 0x8465, 0x2536, 0x8466, 0x0EE0, 0x8467, - 0x253A, 0x8468, 0x2560, 0x8469, 0x0EE9, 0x846B, 0x0EE1, 0x846C, 0x0EE3, - 0x846D, 0x0EEA, 0x846E, 0x2566, 0x846F, 0x2559, 0x8470, 0x2554, 0x8473, - 0x2541, 0x8474, 0x2540, 0x8475, 0x0EDF, 0x8476, 0x2532, 0x8477, 0x0EDC, - 0x8478, 0x254A, 0x8479, 0x2533, 0x847A, 0x2548, 0x847D, 0x253D, 0x847E, - 0x2561, 0x8482, 0x0EDB, 0x8486, 0x2539, 0x848D, 0x2535, 0x848E, 0x255B, - 0x848F, 0x2534, 0x8490, 0x108E, 0x8491, 0x27CD, 0x8494, 0x27BC, 0x8497, - 0x27A6, 0x8498, 0x27C4, 0x8499, 0x1086, 0x849A, 0x27B5, 0x849B, 0x27BF, - 0x849C, 0x1089, 0x849D, 0x27B8, 0x849E, 0x1087, 0x849F, 0x27A9, 0x84A0, - 0x27C7, 0x84A1, 0x27A8, 0x84A2, 0x27BB, 0x84A4, 0x27A7, 0x84A7, 0x27B9, - 0x84A8, 0x27C2, 0x84A9, 0x27C0, 0x84AA, 0x27B4, 0x84AB, 0x27AF, 0x84AC, - 0x27AD, 0x84AE, 0x27AE, 0x84AF, 0x27C1, 0x84B0, 0x27CC, 0x84B1, 0x27B6, - 0x84B2, 0x1088, 0x84B4, 0x27B1, 0x84B6, 0x27C5, 0x84B8, 0x108B, 0x84B9, - 0x27B0, 0x84BA, 0x27AA, 0x84BB, 0x27BA, 0x84BC, 0x108F, 0x84BF, 0x1083, - 0x84C0, 0x108C, 0x84C1, 0x27B2, 0x84C2, 0x27AC, 0x84C4, 0x1085, 0x84C5, - 0x255A, 0x84C6, 0x1084, 0x84C7, 0x27BD, 0x84C9, 0x1082, 0x84CA, 0x1091, - 0x84CB, 0x108A, 0x84CC, 0x27BE, 0x84CD, 0x27B3, 0x84CE, 0x27AB, 0x84CF, - 0x27C6, 0x84D0, 0x27B7, 0x84D1, 0x1090, 0x84D2, 0x27CA, 0x84D3, 0x108D, - 0x84D4, 0x27C9, 0x84D6, 0x27C3, 0x84D7, 0x27C8, 0x84DB, 0x27CB, 0x84E7, - 0x2A03, 0x84E8, 0x2A04, 0x84E9, 0x29F7, 0x84EA, 0x29F6, 0x84EB, 0x29F2, - 0x84EC, 0x11FB, 0x84EE, 0x11F3, 0x84EF, 0x2A06, 0x84F0, 0x2A05, 0x84F1, - 0x252F, 0x84F2, 0x29EF, 0x84F3, 0x29F3, 0x84F4, 0x29ED, 0x84F6, 0x2A00, - 0x84F7, 0x29F1, 0x84F9, 0x2A07, 0x84FA, 0x29EA, 0x84FB, 0x29E8, 0x84FC, - 0x29F4, 0x84FD, 0x29FE, 0x84FE, 0x29F9, 0x84FF, 0x11FD, 0x8500, 0x29DF, - 0x8502, 0x29FD, 0x8506, 0x11FE, 0x8507, 0x2543, 0x8508, 0x29EB, 0x8509, - 0x29E2, 0x850A, 0x29E5, 0x850B, 0x2A0B, 0x850C, 0x29EC, 0x850D, 0x29E3, - 0x850E, 0x29E1, 0x850F, 0x29DE, 0x8511, 0x11F7, 0x8512, 0x29F5, 0x8513, - 0x11F6, 0x8514, 0x11FA, 0x8515, 0x29F0, 0x8516, 0x29F8, 0x8517, 0x11F0, - 0x8518, 0x2A08, 0x8519, 0x2A0C, 0x851A, 0x11F2, 0x851C, 0x29E7, 0x851D, - 0x29FB, 0x851E, 0x29FF, 0x851F, 0x29E4, 0x8520, 0x2A09, 0x8521, 0x11F9, - 0x8523, 0x11F8, 0x8524, 0x29DC, 0x8525, 0x11FC, 0x8526, 0x2A02, 0x8527, - 0x29E6, 0x8528, 0x29FA, 0x8529, 0x29E0, 0x852A, 0x29EE, 0x852B, 0x29E9, - 0x852C, 0x11F4, 0x852D, 0x11F5, 0x852E, 0x29FC, 0x852F, 0x2A0D, 0x8530, - 0x2A0A, 0x8531, 0x2A01, 0x853B, 0x29DD, 0x853D, 0x11F1, 0x853E, 0x2C4F, - 0x8540, 0x2C46, 0x8541, 0x2C49, 0x8543, 0x133B, 0x8544, 0x2C4B, 0x8545, - 0x2C40, 0x8546, 0x2C47, 0x8547, 0x2C4D, 0x8548, 0x1338, 0x8549, 0x133C, - 0x854A, 0x1336, 0x854D, 0x2C42, 0x854E, 0x2C52, 0x8551, 0x2C4C, 0x8553, - 0x2C43, 0x8554, 0x2C5B, 0x8555, 0x2C55, 0x8556, 0x2C3F, 0x8557, 0x2E23, - 0x8558, 0x2C45, 0x8559, 0x1337, 0x855B, 0x2C50, 0x855D, 0x2C5A, 0x855E, - 0x133F, 0x8560, 0x2C57, 0x8561, 0x2C44, 0x8562, 0x2C4A, 0x8563, 0x2C4E, - 0x8564, 0x2C48, 0x8565, 0x2C5C, 0x8566, 0x2C59, 0x8567, 0x2C56, 0x8568, - 0x1339, 0x8569, 0x133A, 0x856A, 0x133E, 0x856B, 0x2C41, 0x856C, 0x2C5D, - 0x856D, 0x133D, 0x856E, 0x2C53, 0x8571, 0x2C51, 0x8575, 0x2C54, 0x8576, - 0x2E30, 0x8577, 0x2E1D, 0x8578, 0x2E22, 0x8579, 0x2E2F, 0x857A, 0x2E21, - 0x857B, 0x2E19, 0x857C, 0x2E1E, 0x857E, 0x145C, 0x8580, 0x2E12, 0x8581, - 0x2E2A, 0x8582, 0x2E2C, 0x8583, 0x2E11, 0x8584, 0x145B, 0x8585, 0x2E2E, - 0x8586, 0x2E26, 0x8587, 0x1462, 0x8588, 0x2E2D, 0x8589, 0x2E1F, 0x858A, - 0x1464, 0x858B, 0x2E17, 0x858C, 0x2C58, 0x858D, 0x2E27, 0x858E, 0x2E24, - 0x858F, 0x2E13, 0x8590, 0x2E32, 0x8591, 0x145E, 0x8594, 0x145F, 0x8595, - 0x2E15, 0x8596, 0x2E25, 0x8598, 0x2E31, 0x8599, 0x2E28, 0x859A, 0x2E1B, - 0x859B, 0x1461, 0x859C, 0x145D, 0x859D, 0x2E29, 0x859E, 0x2E1C, 0x859F, - 0x2E33, 0x85A0, 0x2E16, 0x85A1, 0x2E20, 0x85A2, 0x2E2B, 0x85A3, 0x2E18, - 0x85A4, 0x2E1A, 0x85A6, 0x1465, 0x85A7, 0x2E14, 0x85A8, 0x1463, 0x85A9, - 0x151C, 0x85AA, 0x145A, 0x85AF, 0x1460, 0x85B0, 0x1520, 0x85B1, 0x2FA6, - 0x85B3, 0x2F9C, 0x85B4, 0x2F97, 0x85B5, 0x2F9D, 0x85B6, 0x2FA7, 0x85B7, - 0x2FAB, 0x85B8, 0x2FAA, 0x85B9, 0x1522, 0x85BA, 0x1521, 0x85BD, 0x2F9E, - 0x85BE, 0x2FAC, 0x85BF, 0x2FA1, 0x85C0, 0x2F99, 0x85C2, 0x2F9B, 0x85C3, - 0x2F9A, 0x85C4, 0x2FA0, 0x85C5, 0x2FA5, 0x85C6, 0x2F98, 0x85C7, 0x2F9F, - 0x85C8, 0x2FA4, 0x85C9, 0x151F, 0x85CB, 0x2FA2, 0x85CD, 0x151D, 0x85CE, - 0x2FA3, 0x85CF, 0x151B, 0x85D0, 0x151E, 0x85D1, 0x3101, 0x85D2, 0x2FA8, - 0x85D5, 0x15B7, 0x85D7, 0x30F9, 0x85D8, 0x30FD, 0x85D9, 0x30F5, 0x85DA, - 0x30F8, 0x85DC, 0x3100, 0x85DD, 0x15B5, 0x85DE, 0x3105, 0x85DF, 0x30FE, - 0x85E1, 0x30F6, 0x85E2, 0x3106, 0x85E3, 0x30FF, 0x85E4, 0x15B8, 0x85E5, - 0x15B9, 0x85E6, 0x3103, 0x85E8, 0x30F7, 0x85E9, 0x15B4, 0x85EA, 0x15B6, - 0x85EB, 0x30F2, 0x85EC, 0x30FA, 0x85ED, 0x30F4, 0x85EF, 0x3104, 0x85F0, - 0x3102, 0x85F1, 0x30F3, 0x85F2, 0x30FB, 0x85F6, 0x3225, 0x85F7, 0x15BA, - 0x85F8, 0x30FC, 0x85F9, 0x1638, 0x85FA, 0x163A, 0x85FB, 0x1637, 0x85FD, - 0x322A, 0x85FE, 0x3222, 0x85FF, 0x3220, 0x8600, 0x3224, 0x8601, 0x3221, - 0x8604, 0x3226, 0x8605, 0x3228, 0x8606, 0x163B, 0x8607, 0x163D, 0x8609, - 0x3227, 0x860A, 0x163E, 0x860B, 0x163C, 0x860C, 0x3229, 0x8611, 0x1639, - 0x8617, 0x1685, 0x8618, 0x32F6, 0x8619, 0x32FC, 0x861A, 0x1687, 0x861B, - 0x3223, 0x861C, 0x32FB, 0x861E, 0x3302, 0x861F, 0x32F9, 0x8620, 0x3300, - 0x8621, 0x32FF, 0x8622, 0x321F, 0x8623, 0x32FA, 0x8624, 0x2FA9, 0x8625, - 0x3303, 0x8626, 0x32F8, 0x8627, 0x32FD, 0x8629, 0x3301, 0x862A, 0x32F7, - 0x862C, 0x33AA, 0x862D, 0x1686, 0x862E, 0x32FE, 0x8631, 0x3432, 0x8632, - 0x33AB, 0x8633, 0x33A9, 0x8634, 0x33A7, 0x8635, 0x33A8, 0x8636, 0x33AC, - 0x8638, 0x1707, 0x8639, 0x3430, 0x863A, 0x342E, 0x863B, 0x3433, 0x863C, - 0x3431, 0x863E, 0x3434, 0x863F, 0x1708, 0x8640, 0x342F, 0x8643, 0x3497, - 0x8646, 0x34DF, 0x8647, 0x34E0, 0x8648, 0x34E1, 0x864B, 0x353E, 0x864C, - 0x3536, 0x864D, 0x1818, 0x864E, 0x0689, 0x8650, 0x07FF, 0x8652, 0x1DE3, - 0x8653, 0x1DE2, 0x8654, 0x09AF, 0x8655, 0x0B88, 0x8656, 0x203C, 0x8659, - 0x203B, 0x865B, 0x0D48, 0x865C, 0x0EED, 0x865E, 0x0EEC, 0x865F, 0x0EEE, - 0x8661, 0x27CE, 0x8662, 0x2A0E, 0x8663, 0x2C5E, 0x8664, 0x2C60, 0x8665, - 0x2C5F, 0x8667, 0x1466, 0x8668, 0x2E34, 0x8669, 0x2FAD, 0x866A, 0x351E, - 0x866B, 0x040F, 0x866D, 0x1A46, 0x866E, 0x1A47, 0x866F, 0x1A45, 0x8670, - 0x1A44, 0x8671, 0x068A, 0x8673, 0x1BFD, 0x8674, 0x1BFB, 0x8677, 0x1BFA, - 0x8679, 0x0800, 0x867A, 0x0802, 0x867B, 0x0801, 0x867C, 0x1BFC, 0x8685, - 0x1DEF, 0x8686, 0x1DEC, 0x8687, 0x1DEA, 0x868A, 0x09B0, 0x868B, 0x1DED, - 0x868C, 0x09B5, 0x868D, 0x1DE7, 0x868E, 0x1DF6, 0x8690, 0x1DF8, 0x8691, - 0x1DE8, 0x8693, 0x09B2, 0x8694, 0x1DF9, 0x8695, 0x1DF4, 0x8696, 0x1DE6, - 0x8697, 0x1DEB, 0x8698, 0x1DF5, 0x8699, 0x1DF1, 0x869A, 0x1DEE, 0x869C, - 0x09B7, 0x869D, 0x1DF7, 0x869E, 0x1DE9, 0x86A1, 0x1DF2, 0x86A2, 0x1DE4, - 0x86A3, 0x09B6, 0x86A4, 0x09B3, 0x86A5, 0x1DF0, 0x86A7, 0x1DF3, 0x86A8, - 0x1DE5, 0x86A9, 0x09B4, 0x86AA, 0x09B1, 0x86AF, 0x0B92, 0x86B0, 0x2043, - 0x86B1, 0x0B91, 0x86B3, 0x2046, 0x86B4, 0x2049, 0x86B5, 0x0B8E, 0x86B6, - 0x0B8C, 0x86B7, 0x203E, 0x86B8, 0x2047, 0x86B9, 0x2045, 0x86BA, 0x2042, - 0x86BB, 0x204A, 0x86BC, 0x204B, 0x86BD, 0x204D, 0x86BE, 0x204E, 0x86BF, - 0x203D, 0x86C0, 0x0B8B, 0x86C1, 0x2040, 0x86C2, 0x203F, 0x86C3, 0x204C, - 0x86C4, 0x0B8D, 0x86C5, 0x2041, 0x86C6, 0x0B8F, 0x86C7, 0x0B8A, 0x86C8, - 0x2044, 0x86C9, 0x0B93, 0x86CB, 0x0B90, 0x86CC, 0x2048, 0x86D0, 0x0D4F, - 0x86D1, 0x22D2, 0x86D3, 0x22C7, 0x86D4, 0x0D4C, 0x86D6, 0x256D, 0x86D7, - 0x22D0, 0x86D8, 0x22C4, 0x86D9, 0x0D4A, 0x86DA, 0x22C9, 0x86DB, 0x0D4D, - 0x86DC, 0x22CD, 0x86DD, 0x22CB, 0x86DE, 0x0D50, 0x86DF, 0x0D49, 0x86E2, - 0x22C5, 0x86E3, 0x22C8, 0x86E4, 0x0D4E, 0x86E6, 0x22C6, 0x86E8, 0x22D1, - 0x86E9, 0x22CF, 0x86EA, 0x22CA, 0x86EB, 0x22CC, 0x86EC, 0x22CE, 0x86ED, - 0x0D4B, 0x86F5, 0x256E, 0x86F6, 0x2574, 0x86F7, 0x256A, 0x86F8, 0x2570, - 0x86F9, 0x0EEF, 0x86FA, 0x256C, 0x86FB, 0x0EF5, 0x86FE, 0x0EF4, 0x8700, - 0x0EF3, 0x8701, 0x2573, 0x8702, 0x0EF6, 0x8703, 0x0EF7, 0x8704, 0x2569, - 0x8705, 0x2576, 0x8706, 0x0EF8, 0x8707, 0x0EF2, 0x8708, 0x0EF1, 0x8709, - 0x2572, 0x870A, 0x0EF9, 0x870B, 0x2568, 0x870C, 0x256B, 0x870D, 0x2575, - 0x870E, 0x2571, 0x8711, 0x27EE, 0x8712, 0x27E3, 0x8713, 0x0EF0, 0x8718, - 0x1098, 0x8719, 0x27D7, 0x871A, 0x27EC, 0x871B, 0x27D8, 0x871C, 0x1093, - 0x871E, 0x27D5, 0x8720, 0x27DE, 0x8721, 0x27D6, 0x8722, 0x1095, 0x8723, - 0x27D0, 0x8724, 0x27EB, 0x8725, 0x1096, 0x8726, 0x27E8, 0x8727, 0x27E9, - 0x8728, 0x27D1, 0x8729, 0x109B, 0x872A, 0x27E0, 0x872C, 0x27DA, 0x872D, - 0x27E1, 0x872E, 0x27D4, 0x8730, 0x27ED, 0x8731, 0x27E5, 0x8732, 0x27DF, - 0x8733, 0x27CF, 0x8734, 0x1097, 0x8735, 0x27E6, 0x8737, 0x109A, 0x8738, - 0x27EA, 0x873A, 0x27E4, 0x873B, 0x1094, 0x873C, 0x27E2, 0x873E, 0x27DC, - 0x873F, 0x1092, 0x8740, 0x27D3, 0x8741, 0x27DB, 0x8742, 0x27E7, 0x8743, - 0x27D9, 0x8746, 0x27DD, 0x874C, 0x1208, 0x874D, 0x256F, 0x874E, 0x2A20, - 0x874F, 0x2A29, 0x8750, 0x2A1F, 0x8751, 0x2A1B, 0x8752, 0x2A18, 0x8753, - 0x1209, 0x8754, 0x2A16, 0x8755, 0x1099, 0x8756, 0x2A0F, 0x8757, 0x1207, - 0x8758, 0x2A15, 0x8759, 0x1206, 0x875A, 0x2A1A, 0x875B, 0x2A17, 0x875C, - 0x2A27, 0x875D, 0x2A22, 0x875E, 0x2A1C, 0x875F, 0x2A21, 0x8760, 0x1202, - 0x8761, 0x2A19, 0x8762, 0x2A2C, 0x8763, 0x2A10, 0x8764, 0x2A11, 0x8765, - 0x2A28, 0x8766, 0x1203, 0x8767, 0x2A2D, 0x8768, 0x1205, 0x8769, 0x2A2E, - 0x876A, 0x2A1E, 0x876B, 0x27D2, 0x876C, 0x2A24, 0x876D, 0x2A1D, 0x876E, - 0x2A26, 0x876F, 0x2A23, 0x8773, 0x2A14, 0x8774, 0x1200, 0x8775, 0x2A2B, - 0x8776, 0x1201, 0x8777, 0x2A12, 0x8778, 0x1204, 0x8779, 0x2C6B, 0x877A, - 0x2A25, 0x877B, 0x2A2A, 0x8781, 0x2C68, 0x8782, 0x11FF, 0x8783, 0x1340, - 0x8784, 0x2C72, 0x8785, 0x2C6E, 0x8787, 0x2C6C, 0x8788, 0x2C67, 0x8789, - 0x2C76, 0x878D, 0x1344, 0x878F, 0x2C63, 0x8790, 0x2C6F, 0x8791, 0x2C70, - 0x8792, 0x2C66, 0x8793, 0x2C65, 0x8794, 0x2C73, 0x8796, 0x2C69, 0x8797, - 0x2C64, 0x8798, 0x2C6A, 0x879A, 0x2C75, 0x879B, 0x2C62, 0x879C, 0x2C74, - 0x879D, 0x2C71, 0x879E, 0x1342, 0x879F, 0x1341, 0x87A2, 0x1343, 0x87A3, - 0x2C6D, 0x87A4, 0x2C61, 0x87AA, 0x2E36, 0x87AB, 0x146C, 0x87AC, 0x2E3A, - 0x87AD, 0x2E37, 0x87AE, 0x2E3E, 0x87AF, 0x2E44, 0x87B0, 0x2E39, 0x87B2, - 0x2E4D, 0x87B3, 0x1469, 0x87B4, 0x2E47, 0x87B5, 0x2E3C, 0x87B6, 0x2E48, - 0x87B7, 0x2E43, 0x87B8, 0x2E4A, 0x87B9, 0x2E3B, 0x87BA, 0x146E, 0x87BB, - 0x146D, 0x87BC, 0x2E3D, 0x87BD, 0x2E4B, 0x87BE, 0x2E35, 0x87BF, 0x2E49, - 0x87C0, 0x1467, 0x87C2, 0x2E41, 0x87C3, 0x2E40, 0x87C4, 0x2E45, 0x87C5, - 0x2E38, 0x87C6, 0x146B, 0x87C8, 0x146F, 0x87C9, 0x2E3F, 0x87CA, 0x2E46, - 0x87CB, 0x1470, 0x87CC, 0x2E42, 0x87D1, 0x1468, 0x87D2, 0x146A, 0x87D3, - 0x2FBA, 0x87D4, 0x2FB8, 0x87D7, 0x2FBE, 0x87D8, 0x2FBC, 0x87D9, 0x2FBF, - 0x87DB, 0x2FB1, 0x87DC, 0x2FB9, 0x87DD, 0x2FC3, 0x87DE, 0x2E4C, 0x87DF, - 0x2FB5, 0x87E0, 0x1526, 0x87E1, 0x2A13, 0x87E2, 0x2FB0, 0x87E3, 0x2FBD, - 0x87E4, 0x2FB7, 0x87E5, 0x2FB4, 0x87E6, 0x2FAF, 0x87E7, 0x2FAE, 0x87E8, - 0x2FC2, 0x87EA, 0x2FB3, 0x87EB, 0x2FB2, 0x87EC, 0x1524, 0x87ED, 0x2FBB, - 0x87EF, 0x1523, 0x87F2, 0x1525, 0x87F3, 0x2FB6, 0x87F4, 0x2FC1, 0x87F6, - 0x310A, 0x87F7, 0x310B, 0x87F9, 0x15BE, 0x87FA, 0x3108, 0x87FB, 0x15BB, - 0x87FC, 0x3110, 0x87FE, 0x15BF, 0x87FF, 0x3112, 0x8800, 0x3107, 0x8801, - 0x2FC0, 0x8802, 0x3114, 0x8803, 0x3109, 0x8805, 0x15BC, 0x8806, 0x310F, - 0x8808, 0x3111, 0x8809, 0x310C, 0x880A, 0x3113, 0x880B, 0x310E, 0x880C, - 0x310D, 0x880D, 0x15BD, 0x8810, 0x322C, 0x8811, 0x322D, 0x8813, 0x322F, - 0x8814, 0x163F, 0x8815, 0x1640, 0x8816, 0x3230, 0x8817, 0x322E, 0x8819, - 0x322B, 0x881B, 0x3306, 0x881C, 0x3309, 0x881D, 0x3305, 0x881F, 0x168B, - 0x8820, 0x3307, 0x8821, 0x168A, 0x8822, 0x1689, 0x8823, 0x1688, 0x8824, - 0x3308, 0x8825, 0x33B1, 0x8826, 0x33AF, 0x8828, 0x33AE, 0x8829, 0x3304, - 0x882A, 0x33B0, 0x882B, 0x330A, 0x882C, 0x33AD, 0x882E, 0x3437, 0x882F, - 0x3415, 0x8830, 0x3435, 0x8831, 0x1709, 0x8832, 0x3436, 0x8833, 0x3438, - 0x8835, 0x349A, 0x8836, 0x1728, 0x8837, 0x3499, 0x8838, 0x3498, 0x8839, - 0x1729, 0x883B, 0x1747, 0x883C, 0x3508, 0x883D, 0x3520, 0x883E, 0x351F, - 0x883F, 0x3521, 0x8840, 0x0410, 0x8841, 0x1BFE, 0x8843, 0x1DFA, 0x8844, - 0x1DFB, 0x8848, 0x22D3, 0x884A, 0x330B, 0x884B, 0x349B, 0x884C, 0x0411, - 0x884D, 0x0803, 0x884E, 0x1BFF, 0x8852, 0x204F, 0x8853, 0x0B94, 0x8855, - 0x22D5, 0x8856, 0x22D4, 0x8857, 0x0D51, 0x8859, 0x0EFA, 0x885A, 0x2A2F, - 0x885B, 0x120A, 0x885D, 0x120B, 0x8861, 0x1345, 0x8862, 0x172A, 0x8863, - 0x0412, 0x8867, 0x1C00, 0x8868, 0x068C, 0x8869, 0x1C02, 0x886A, 0x1C01, - 0x886B, 0x0804, 0x886D, 0x1DFC, 0x886F, 0x1E03, 0x8870, 0x09B8, 0x8871, - 0x1E01, 0x8872, 0x1DFF, 0x8874, 0x1E06, 0x8875, 0x1DFD, 0x8876, 0x1DFE, - 0x8877, 0x09B9, 0x8879, 0x09BD, 0x887C, 0x1E07, 0x887D, 0x09BC, 0x887E, - 0x1E05, 0x887F, 0x1E02, 0x8880, 0x1E00, 0x8881, 0x09BA, 0x8882, 0x09BB, - 0x8883, 0x1E04, 0x8888, 0x0B96, 0x8889, 0x2050, 0x888B, 0x0B9B, 0x888C, - 0x2060, 0x888D, 0x0B9A, 0x888E, 0x2062, 0x8891, 0x2056, 0x8892, 0x0B98, - 0x8893, 0x2061, 0x8895, 0x2051, 0x8896, 0x0B99, 0x8897, 0x205D, 0x8898, - 0x2059, 0x8899, 0x205B, 0x889A, 0x2055, 0x889B, 0x205C, 0x889E, 0x0B95, - 0x889F, 0x2058, 0x88A1, 0x2057, 0x88A2, 0x2053, 0x88A4, 0x205E, 0x88A7, - 0x205A, 0x88A8, 0x2052, 0x88AA, 0x2054, 0x88AB, 0x0B97, 0x88AC, 0x205F, - 0x88B1, 0x0D54, 0x88B2, 0x22E0, 0x88B6, 0x22DC, 0x88B7, 0x22DE, 0x88B8, - 0x22D9, 0x88B9, 0x22D8, 0x88BA, 0x22D6, 0x88BC, 0x22DD, 0x88BD, 0x22DF, - 0x88BE, 0x22DB, 0x88C0, 0x22DA, 0x88C1, 0x0D52, 0x88C2, 0x0D53, 0x88C9, - 0x22E2, 0x88CA, 0x0F02, 0x88CB, 0x2578, 0x88CC, 0x257E, 0x88CD, 0x2579, - 0x88CE, 0x257A, 0x88CF, 0x36EA, 0x88D0, 0x257F, 0x88D2, 0x0F04, 0x88D4, - 0x0EFC, 0x88D5, 0x0F03, 0x88D6, 0x2577, 0x88D7, 0x22D7, 0x88D8, 0x0EFF, - 0x88D9, 0x0EFD, 0x88DA, 0x257D, 0x88DB, 0x257C, 0x88DC, 0x0EFE, 0x88DD, - 0x0F00, 0x88DE, 0x257B, 0x88DF, 0x0EFB, 0x88E1, 0x0F01, 0x88E7, 0x27F0, - 0x88E8, 0x10A2, 0x88EB, 0x27FB, 0x88EC, 0x27FA, 0x88EE, 0x27F5, 0x88EF, - 0x10A4, 0x88F0, 0x27F9, 0x88F1, 0x27F1, 0x88F2, 0x27F2, 0x88F3, 0x109C, - 0x88F4, 0x109E, 0x88F6, 0x27F7, 0x88F7, 0x27EF, 0x88F8, 0x10A0, 0x88F9, - 0x109F, 0x88FA, 0x27F3, 0x88FB, 0x27F8, 0x88FC, 0x27F6, 0x88FD, 0x10A1, - 0x88FE, 0x27F4, 0x8901, 0x22E1, 0x8902, 0x109D, 0x8905, 0x2A30, 0x8906, - 0x2A37, 0x8907, 0x120D, 0x8909, 0x2A3B, 0x890A, 0x1211, 0x890B, 0x2A33, - 0x890C, 0x2A31, 0x890E, 0x2A3A, 0x8910, 0x120C, 0x8911, 0x2A39, 0x8912, - 0x120E, 0x8913, 0x120F, 0x8914, 0x2A32, 0x8915, 0x1210, 0x8916, 0x2A38, - 0x8917, 0x2A34, 0x8918, 0x2A35, 0x8919, 0x2A36, 0x891A, 0x10A3, 0x891E, - 0x2C77, 0x891F, 0x2C83, 0x8921, 0x134A, 0x8922, 0x2C7E, 0x8923, 0x2C80, - 0x8925, 0x1348, 0x8926, 0x2C78, 0x8927, 0x2C7C, 0x8929, 0x2C7F, 0x892A, - 0x1346, 0x892B, 0x1349, 0x892C, 0x2C82, 0x892D, 0x2C7A, 0x892E, 0x2C7B, - 0x892F, 0x2C81, 0x8930, 0x2C79, 0x8931, 0x2C7D, 0x8932, 0x1347, 0x8933, - 0x2E4F, 0x8935, 0x2E4E, 0x8936, 0x1472, 0x8937, 0x2E54, 0x8938, 0x1474, - 0x893B, 0x1471, 0x893C, 0x2E50, 0x893D, 0x1475, 0x893E, 0x2E51, 0x8941, - 0x2E52, 0x8942, 0x2E55, 0x8944, 0x1473, 0x8946, 0x2FC8, 0x8949, 0x2FCB, - 0x894B, 0x2FC5, 0x894C, 0x2FC7, 0x894F, 0x2FC6, 0x8950, 0x2FC9, 0x8951, - 0x2FCA, 0x8952, 0x2E53, 0x8953, 0x2FC4, 0x8956, 0x15C2, 0x8957, 0x3118, - 0x8958, 0x311B, 0x8959, 0x311D, 0x895A, 0x3116, 0x895B, 0x3117, 0x895C, - 0x311A, 0x895D, 0x311C, 0x895E, 0x15C3, 0x895F, 0x15C1, 0x8960, 0x15C0, - 0x8961, 0x3119, 0x8962, 0x3115, 0x8963, 0x3231, 0x8964, 0x1641, 0x8966, - 0x3232, 0x8969, 0x330D, 0x896A, 0x168C, 0x896B, 0x330F, 0x896C, 0x168D, - 0x896D, 0x330C, 0x896E, 0x330E, 0x896F, 0x16D6, 0x8971, 0x33B2, 0x8972, - 0x16D5, 0x8973, 0x343B, 0x8974, 0x343A, 0x8976, 0x3439, 0x8979, 0x34E2, - 0x897A, 0x34E3, 0x897B, 0x34E5, 0x897C, 0x34E4, 0x897E, 0x1819, 0x897F, - 0x0413, 0x8981, 0x0805, 0x8982, 0x2063, 0x8983, 0x0D55, 0x8985, 0x2580, - 0x8986, 0x1527, 0x8988, 0x311E, 0x898B, 0x0508, 0x898F, 0x0B9D, 0x8993, - 0x0B9C, 0x8995, 0x22E3, 0x8996, 0x0D56, 0x8997, 0x22E5, 0x8998, 0x22E4, - 0x899B, 0x2581, 0x899C, 0x0F05, 0x899D, 0x27FC, 0x899E, 0x27FF, 0x899F, - 0x27FE, 0x89A1, 0x27FD, 0x89A2, 0x2A3C, 0x89A3, 0x2A3E, 0x89A4, 0x2A3D, - 0x89A6, 0x134C, 0x89AA, 0x134B, 0x89AC, 0x1476, 0x89AD, 0x2E56, 0x89AE, - 0x2E58, 0x89AF, 0x2E57, 0x89B2, 0x1528, 0x89B6, 0x3120, 0x89B7, 0x311F, - 0x89B9, 0x3233, 0x89BA, 0x1642, 0x89BD, 0x168E, 0x89BE, 0x33B4, 0x89BF, - 0x33B3, 0x89C0, 0x1748, 0x89D2, 0x0509, 0x89D3, 0x1C03, 0x89D4, 0x0806, - 0x89D5, 0x2066, 0x89D6, 0x2064, 0x89D9, 0x2065, 0x89DA, 0x22E7, 0x89DB, - 0x22E8, 0x89DC, 0x2588, 0x89DD, 0x22E6, 0x89DF, 0x2582, 0x89E0, 0x2586, - 0x89E1, 0x2585, 0x89E2, 0x2587, 0x89E3, 0x0F06, 0x89E4, 0x2584, 0x89E5, - 0x2583, 0x89E6, 0x2589, 0x89E8, 0x2802, 0x89E9, 0x2800, 0x89EB, 0x2801, - 0x89EC, 0x2A41, 0x89ED, 0x2A3F, 0x89F0, 0x2A40, 0x89F1, 0x2C84, 0x89F2, - 0x2E59, 0x89F3, 0x2E5A, 0x89F4, 0x1529, 0x89F6, 0x3121, 0x89F7, 0x3234, - 0x89F8, 0x1643, 0x89FA, 0x3310, 0x89FB, 0x33B5, 0x89FC, 0x16D7, 0x89FE, - 0x343C, 0x89FF, 0x34E6, 0x8A00, 0x050A, 0x8A02, 0x0808, 0x8A03, 0x0809, - 0x8A04, 0x1C04, 0x8A07, 0x1C05, 0x8A08, 0x0807, 0x8A0A, 0x09C3, 0x8A0C, - 0x09C1, 0x8A0E, 0x09C0, 0x8A0F, 0x09C7, 0x8A10, 0x09BF, 0x8A11, 0x09C8, - 0x8A12, 0x1E08, 0x8A13, 0x09C5, 0x8A15, 0x09C2, 0x8A16, 0x09C6, 0x8A17, - 0x09C4, 0x8A18, 0x09BE, 0x8A1B, 0x0BA5, 0x8A1D, 0x0B9F, 0x8A1E, 0x206A, - 0x8A1F, 0x0BA4, 0x8A22, 0x0BA6, 0x8A23, 0x0BA0, 0x8A25, 0x0BA1, 0x8A27, - 0x2068, 0x8A2A, 0x0B9E, 0x8A2C, 0x2069, 0x8A2D, 0x0BA3, 0x8A30, 0x2067, - 0x8A31, 0x0BA2, 0x8A34, 0x0D61, 0x8A36, 0x0D63, 0x8A39, 0x22EB, 0x8A3A, - 0x0D62, 0x8A3B, 0x0D57, 0x8A3C, 0x0D5B, 0x8A3E, 0x0F19, 0x8A3F, 0x258E, - 0x8A40, 0x22ED, 0x8A41, 0x0D5C, 0x8A44, 0x22F0, 0x8A45, 0x22F1, 0x8A46, - 0x0D60, 0x8A48, 0x22F3, 0x8A4A, 0x22F5, 0x8A4C, 0x22F6, 0x8A4D, 0x22EA, - 0x8A4E, 0x22E9, 0x8A4F, 0x22F7, 0x8A50, 0x0D5F, 0x8A51, 0x22F4, 0x8A52, - 0x22F2, 0x8A54, 0x0D5D, 0x8A55, 0x0D59, 0x8A56, 0x0D64, 0x8A57, 0x22EE, - 0x8A58, 0x22EF, 0x8A59, 0x22EC, 0x8A5B, 0x0D5E, 0x8A5E, 0x0D5A, 0x8A60, - 0x0D58, 0x8A61, 0x258D, 0x8A62, 0x0F14, 0x8A63, 0x0F0F, 0x8A66, 0x0F0A, - 0x8A68, 0x0F1A, 0x8A69, 0x0F0B, 0x8A6B, 0x0F07, 0x8A6C, 0x0F16, 0x8A6D, - 0x0F13, 0x8A6E, 0x0F15, 0x8A70, 0x0F0C, 0x8A71, 0x0F11, 0x8A72, 0x0F08, - 0x8A73, 0x0F09, 0x8A74, 0x2595, 0x8A75, 0x2592, 0x8A76, 0x258A, 0x8A77, - 0x258F, 0x8A79, 0x0F17, 0x8A7A, 0x2596, 0x8A7B, 0x0F18, 0x8A7C, 0x0F0E, - 0x8A7F, 0x258C, 0x8A81, 0x2594, 0x8A82, 0x2590, 0x8A83, 0x2593, 0x8A84, - 0x2591, 0x8A85, 0x0F12, 0x8A86, 0x258B, 0x8A87, 0x0F0D, 0x8A8B, 0x2805, - 0x8A8C, 0x10A6, 0x8A8D, 0x10A9, 0x8A8F, 0x2807, 0x8A91, 0x10B1, 0x8A92, - 0x2806, 0x8A93, 0x10AB, 0x8A95, 0x1216, 0x8A96, 0x2808, 0x8A98, 0x10B0, - 0x8A99, 0x2804, 0x8A9A, 0x10B2, 0x8A9E, 0x10A7, 0x8AA0, 0x0F10, 0x8AA1, - 0x10AA, 0x8AA3, 0x10A8, 0x8AA4, 0x10AC, 0x8AA5, 0x10AE, 0x8AA6, 0x10A5, - 0x8AA7, 0x10B3, 0x8AA8, 0x10AF, 0x8AAA, 0x10AD, 0x8AAB, 0x2803, 0x8AB0, - 0x121D, 0x8AB2, 0x1219, 0x8AB6, 0x1220, 0x8AB8, 0x2A44, 0x8AB9, 0x1221, - 0x8ABA, 0x2A50, 0x8ABB, 0x2A49, 0x8ABC, 0x1212, 0x8ABD, 0x2A51, 0x8ABE, - 0x2A4B, 0x8ABF, 0x121C, 0x8AC0, 0x2A4C, 0x8AC2, 0x121B, 0x8AC3, 0x2A4F, - 0x8AC4, 0x1215, 0x8AC5, 0x2A4D, 0x8AC6, 0x2A43, 0x8AC7, 0x1214, 0x8AC8, - 0x2C8F, 0x8AC9, 0x121A, 0x8ACB, 0x1217, 0x8ACD, 0x121F, 0x8ACF, 0x2A42, - 0x8AD1, 0x2A46, 0x8AD2, 0x1213, 0x8AD3, 0x2A45, 0x8AD4, 0x2A47, 0x8AD5, - 0x2A48, 0x8AD6, 0x121E, 0x8AD7, 0x2A4A, 0x8AD8, 0x2A4E, 0x8AD9, 0x2A52, - 0x8ADB, 0x1222, 0x8ADC, 0x1352, 0x8ADD, 0x2C8A, 0x8ADE, 0x2C90, 0x8ADF, - 0x2C8D, 0x8AE0, 0x2C85, 0x8AE1, 0x2C91, 0x8AE2, 0x2C86, 0x8AE4, 0x2C8C, - 0x8AE6, 0x134D, 0x8AE7, 0x1353, 0x8AE8, 0x2C92, 0x8AEB, 0x134F, 0x8AED, - 0x1359, 0x8AEE, 0x1354, 0x8AEF, 0x2C94, 0x8AF0, 0x2C8E, 0x8AF1, 0x1350, - 0x8AF2, 0x2C87, 0x8AF3, 0x135A, 0x8AF4, 0x2C88, 0x8AF5, 0x2C89, 0x8AF6, - 0x135B, 0x8AF7, 0x1358, 0x8AF8, 0x1218, 0x8AFA, 0x134E, 0x8AFB, 0x2C95, - 0x8AFC, 0x135C, 0x8AFE, 0x1355, 0x8AFF, 0x2C93, 0x8B00, 0x1351, 0x8B01, - 0x1356, 0x8B02, 0x1357, 0x8B04, 0x147E, 0x8B05, 0x2E5F, 0x8B06, 0x2E68, - 0x8B07, 0x2E65, 0x8B08, 0x2E67, 0x8B0A, 0x147B, 0x8B0B, 0x2E60, 0x8B0D, - 0x2E66, 0x8B0E, 0x1477, 0x8B0F, 0x2E62, 0x8B10, 0x147F, 0x8B11, 0x2E5E, - 0x8B12, 0x2E63, 0x8B13, 0x2E6A, 0x8B14, 0x2C8B, 0x8B15, 0x2E64, 0x8B16, - 0x2E5D, 0x8B17, 0x1478, 0x8B18, 0x2E5C, 0x8B19, 0x1479, 0x8B1A, 0x2E6B, - 0x8B1B, 0x147A, 0x8B1C, 0x2E69, 0x8B1D, 0x147D, 0x8B1E, 0x2E5B, 0x8B20, - 0x147C, 0x8B22, 0x2E61, 0x8B23, 0x2FCE, 0x8B24, 0x2FDC, 0x8B25, 0x2FD7, - 0x8B26, 0x2FD9, 0x8B27, 0x2FCD, 0x8B28, 0x152A, 0x8B2A, 0x2FCC, 0x8B2B, - 0x152D, 0x8B2C, 0x152C, 0x8B2E, 0x2FDB, 0x8B2F, 0x2FD3, 0x8B30, 0x2FD0, - 0x8B31, 0x2FD6, 0x8B33, 0x2FCF, 0x8B35, 0x2FD1, 0x8B36, 0x2FDA, 0x8B37, - 0x2FD8, 0x8B39, 0x152B, 0x8B3A, 0x2FDF, 0x8B3B, 0x2FDD, 0x8B3C, 0x2FD4, - 0x8B3D, 0x2FDE, 0x8B3E, 0x2FD5, 0x8B40, 0x3125, 0x8B41, 0x15C4, 0x8B42, - 0x312C, 0x8B45, 0x3313, 0x8B46, 0x15CB, 0x8B47, 0x2FD2, 0x8B48, 0x3123, - 0x8B49, 0x15C7, 0x8B4A, 0x3124, 0x8B4B, 0x3129, 0x8B4E, 0x15C9, 0x8B4F, - 0x15CA, 0x8B50, 0x3122, 0x8B51, 0x312B, 0x8B52, 0x312D, 0x8B53, 0x3126, - 0x8B54, 0x3128, 0x8B55, 0x312A, 0x8B56, 0x3127, 0x8B57, 0x312E, 0x8B58, - 0x15C6, 0x8B59, 0x15CC, 0x8B5A, 0x15C8, 0x8B5C, 0x15C5, 0x8B5D, 0x3237, - 0x8B5F, 0x1648, 0x8B60, 0x3235, 0x8B63, 0x3239, 0x8B65, 0x323A, 0x8B66, - 0x1646, 0x8B67, 0x323B, 0x8B68, 0x3238, 0x8B6A, 0x3236, 0x8B6B, 0x1649, - 0x8B6C, 0x1645, 0x8B6D, 0x323C, 0x8B6F, 0x1647, 0x8B70, 0x1644, 0x8B74, - 0x168F, 0x8B77, 0x1690, 0x8B78, 0x3312, 0x8B79, 0x3311, 0x8B7A, 0x3314, - 0x8B7B, 0x3315, 0x8B7D, 0x1691, 0x8B7E, 0x33B6, 0x8B7F, 0x33BB, 0x8B80, - 0x16D8, 0x8B82, 0x33B8, 0x8B84, 0x33B7, 0x8B85, 0x33BA, 0x8B86, 0x33B9, - 0x8B88, 0x3440, 0x8B8A, 0x170A, 0x8B8B, 0x343F, 0x8B8C, 0x343D, 0x8B8E, - 0x343E, 0x8B92, 0x172C, 0x8B93, 0x172B, 0x8B94, 0x349C, 0x8B95, 0x349D, - 0x8B96, 0x172D, 0x8B98, 0x34E7, 0x8B99, 0x34E8, 0x8B9A, 0x1754, 0x8B9C, - 0x175A, 0x8B9E, 0x3522, 0x8B9F, 0x353F, 0x8C37, 0x050B, 0x8C39, 0x206B, - 0x8C3B, 0x206C, 0x8C3C, 0x2597, 0x8C3D, 0x2809, 0x8C3E, 0x2A53, 0x8C3F, - 0x1481, 0x8C41, 0x1480, 0x8C42, 0x2FE0, 0x8C43, 0x312F, 0x8C45, 0x3441, - 0x8C46, 0x050C, 0x8C47, 0x1E09, 0x8C48, 0x09C9, 0x8C49, 0x0BA7, 0x8C4A, - 0x2599, 0x8C4B, 0x2598, 0x8C4C, 0x1223, 0x8C4D, 0x2A54, 0x8C4E, 0x1224, - 0x8C4F, 0x2E6C, 0x8C50, 0x152E, 0x8C54, 0x1763, 0x8C55, 0x050D, 0x8C56, - 0x1A48, 0x8C57, 0x1E0A, 0x8C5A, 0x0BA8, 0x8C5C, 0x206D, 0x8C5D, 0x206E, - 0x8C5F, 0x22F8, 0x8C61, 0x0D65, 0x8C62, 0x0F1B, 0x8C64, 0x259B, 0x8C65, - 0x259A, 0x8C66, 0x259C, 0x8C68, 0x280A, 0x8C69, 0x280B, 0x8C6A, 0x10B4, - 0x8C6B, 0x135D, 0x8C6C, 0x1225, 0x8C6D, 0x135E, 0x8C6F, 0x2E70, 0x8C70, - 0x2E6D, 0x8C71, 0x2E6F, 0x8C72, 0x2E6E, 0x8C73, 0x1482, 0x8C75, 0x2FE1, - 0x8C76, 0x3131, 0x8C77, 0x3130, 0x8C78, 0x18E7, 0x8C79, 0x09CB, 0x8C7A, - 0x09CA, 0x8C7B, 0x1E0B, 0x8C7D, 0x206F, 0x8C80, 0x22FA, 0x8C81, 0x22F9, - 0x8C82, 0x0D66, 0x8C84, 0x259E, 0x8C85, 0x259F, 0x8C86, 0x259D, 0x8C89, - 0x0F1D, 0x8C8A, 0x0F1C, 0x8C8C, 0x10B6, 0x8C8D, 0x10B5, 0x8C8F, 0x2A55, - 0x8C90, 0x2C98, 0x8C91, 0x2C96, 0x8C92, 0x2C97, 0x8C93, 0x135F, 0x8C94, - 0x2E72, 0x8C95, 0x2E71, 0x8C97, 0x2FE4, 0x8C98, 0x2FE3, 0x8C99, 0x2FE2, - 0x8C9A, 0x3132, 0x8C9C, 0x3523, 0x8C9D, 0x050E, 0x8C9E, 0x080A, 0x8CA0, - 0x080B, 0x8CA1, 0x09CC, 0x8CA2, 0x09CD, 0x8CA3, 0x1E0D, 0x8CA4, 0x1E0C, - 0x8CA5, 0x2070, 0x8CA7, 0x0BAE, 0x8CA8, 0x0BAC, 0x8CA9, 0x0BA9, 0x8CAA, - 0x0BAD, 0x8CAB, 0x0BAB, 0x8CAC, 0x0BAA, 0x8CAF, 0x0D67, 0x8CB0, 0x22FD, - 0x8CB2, 0x0F22, 0x8CB3, 0x0D69, 0x8CB4, 0x0D6E, 0x8CB5, 0x22FF, 0x8CB6, - 0x0D70, 0x8CB7, 0x0D6F, 0x8CB8, 0x0D72, 0x8CB9, 0x22FE, 0x8CBA, 0x22FB, - 0x8CBB, 0x0D6C, 0x8CBC, 0x0D68, 0x8CBD, 0x0D6A, 0x8CBE, 0x22FC, 0x8CBF, - 0x0D71, 0x8CC0, 0x0D6D, 0x8CC1, 0x0D6B, 0x8CC2, 0x0F24, 0x8CC3, 0x0F23, - 0x8CC4, 0x0F21, 0x8CC5, 0x0F25, 0x8CC7, 0x0F1F, 0x8CC8, 0x0F20, 0x8CCA, - 0x0F1E, 0x8CCC, 0x25A0, 0x8CCF, 0x280D, 0x8CD1, 0x10B8, 0x8CD2, 0x10B9, - 0x8CD3, 0x10B7, 0x8CD5, 0x280C, 0x8CD7, 0x280E, 0x8CD9, 0x2A58, 0x8CDA, - 0x2A5A, 0x8CDC, 0x122E, 0x8CDD, 0x2A5B, 0x8CDE, 0x1227, 0x8CDF, 0x2A57, - 0x8CE0, 0x1226, 0x8CE1, 0x1230, 0x8CE2, 0x122C, 0x8CE3, 0x122D, 0x8CE4, - 0x1229, 0x8CE5, 0x2A56, 0x8CE6, 0x1228, 0x8CE7, 0x2A5C, 0x8CE8, 0x2A59, - 0x8CEA, 0x122F, 0x8CEC, 0x122A, 0x8CED, 0x122B, 0x8CEE, 0x2C9A, 0x8CF0, - 0x2C9C, 0x8CF1, 0x2C9B, 0x8CF3, 0x2C9D, 0x8CF4, 0x1360, 0x8CF5, 0x2C99, - 0x8CF8, 0x1486, 0x8CF9, 0x2E73, 0x8CFA, 0x1483, 0x8CFB, 0x1487, 0x8CFC, - 0x1485, 0x8CFD, 0x1484, 0x8CFE, 0x2FE5, 0x8D00, 0x2FE8, 0x8D02, 0x2FE7, - 0x8D04, 0x2FE6, 0x8D05, 0x152F, 0x8D06, 0x3133, 0x8D07, 0x3134, 0x8D08, - 0x15CD, 0x8D09, 0x3135, 0x8D0A, 0x15CE, 0x8D0D, 0x164B, 0x8D0F, 0x164A, - 0x8D10, 0x3316, 0x8D13, 0x1692, 0x8D14, 0x3317, 0x8D15, 0x33BC, 0x8D16, - 0x16D9, 0x8D17, 0x16DA, 0x8D19, 0x3442, 0x8D1B, 0x172F, 0x8D64, 0x050F, - 0x8D66, 0x0BB0, 0x8D67, 0x0BAF, 0x8D68, 0x25A1, 0x8D69, 0x25A2, 0x8D6B, - 0x10BA, 0x8D6C, 0x2C9E, 0x8D6D, 0x1231, 0x8D6E, 0x2C9F, 0x8D6F, 0x2E74, - 0x8D70, 0x0510, 0x8D72, 0x1C06, 0x8D73, 0x080D, 0x8D74, 0x080C, 0x8D76, - 0x1E0E, 0x8D77, 0x09CE, 0x8D78, 0x1E0F, 0x8D79, 0x2073, 0x8D7B, 0x2072, - 0x8D7D, 0x2071, 0x8D80, 0x2301, 0x8D81, 0x0D75, 0x8D84, 0x2300, 0x8D85, - 0x0D74, 0x8D89, 0x2302, 0x8D8A, 0x0D73, 0x8D8C, 0x25A4, 0x8D8D, 0x25A7, - 0x8D8E, 0x25A5, 0x8D8F, 0x25A6, 0x8D90, 0x25AA, 0x8D91, 0x25A3, 0x8D92, - 0x25AB, 0x8D93, 0x25A8, 0x8D94, 0x25A9, 0x8D95, 0x10BC, 0x8D96, 0x280F, - 0x8D99, 0x10BB, 0x8D9B, 0x2A60, 0x8D9C, 0x2A5E, 0x8D9F, 0x1232, 0x8DA0, - 0x2A5D, 0x8DA1, 0x2A5F, 0x8DA3, 0x1233, 0x8DA5, 0x2CA0, 0x8DA7, 0x2CA1, - 0x8DA8, 0x1488, 0x8DAA, 0x3137, 0x8DAB, 0x3139, 0x8DAC, 0x3136, 0x8DAD, - 0x3138, 0x8DAE, 0x323D, 0x8DAF, 0x3318, 0x8DB2, 0x3509, 0x8DB3, 0x0511, - 0x8DB4, 0x080E, 0x8DB5, 0x1E10, 0x8DB6, 0x1E12, 0x8DB7, 0x1E11, 0x8DB9, - 0x2076, 0x8DBA, 0x0BB2, 0x8DBC, 0x2074, 0x8DBE, 0x0BB1, 0x8DBF, 0x2077, - 0x8DC1, 0x2078, 0x8DC2, 0x2075, 0x8DC5, 0x230E, 0x8DC6, 0x0D7D, 0x8DC7, - 0x2306, 0x8DC8, 0x230C, 0x8DCB, 0x0D78, 0x8DCC, 0x0D7B, 0x8DCD, 0x2305, - 0x8DCE, 0x0D76, 0x8DCF, 0x2309, 0x8DD0, 0x25B1, 0x8DD1, 0x0D7A, 0x8DD3, - 0x2304, 0x8DD5, 0x230A, 0x8DD6, 0x2307, 0x8DD7, 0x230D, 0x8DD8, 0x2303, - 0x8DD9, 0x230B, 0x8DDA, 0x0D79, 0x8DDB, 0x0D7C, 0x8DDC, 0x2308, 0x8DDD, - 0x0D77, 0x8DDF, 0x0F27, 0x8DE0, 0x25AD, 0x8DE1, 0x0F26, 0x8DE2, 0x25B4, - 0x8DE3, 0x25B3, 0x8DE4, 0x0F2D, 0x8DE6, 0x0F2E, 0x8DE7, 0x25B5, 0x8DE8, - 0x0F28, 0x8DE9, 0x25B2, 0x8DEA, 0x0F2C, 0x8DEB, 0x25B7, 0x8DEC, 0x25AE, - 0x8DEE, 0x25B0, 0x8DEF, 0x0F29, 0x8DF0, 0x25AC, 0x8DF1, 0x25AF, 0x8DF2, - 0x25B6, 0x8DF3, 0x0F2A, 0x8DF4, 0x25B8, 0x8DFA, 0x0F2B, 0x8DFC, 0x10BD, - 0x8DFD, 0x2814, 0x8DFE, 0x281A, 0x8DFF, 0x2812, 0x8E00, 0x281B, 0x8E02, - 0x2811, 0x8E03, 0x2816, 0x8E04, 0x281C, 0x8E05, 0x2819, 0x8E06, 0x2818, - 0x8E07, 0x2817, 0x8E09, 0x2810, 0x8E0A, 0x2815, 0x8E0D, 0x2813, 0x8E0F, - 0x1238, 0x8E10, 0x1235, 0x8E11, 0x2A69, 0x8E12, 0x2A6E, 0x8E13, 0x2A70, - 0x8E14, 0x2A6D, 0x8E15, 0x2A66, 0x8E16, 0x2A68, 0x8E17, 0x2A72, 0x8E18, - 0x2A6F, 0x8E19, 0x2A6A, 0x8E1A, 0x2A73, 0x8E1B, 0x2A67, 0x8E1C, 0x2A71, - 0x8E1D, 0x1236, 0x8E1E, 0x123C, 0x8E1F, 0x123A, 0x8E20, 0x2A61, 0x8E21, - 0x123B, 0x8E22, 0x1237, 0x8E23, 0x2A62, 0x8E24, 0x2A64, 0x8E25, 0x2A63, - 0x8E26, 0x2A6B, 0x8E27, 0x2A6C, 0x8E29, 0x1239, 0x8E2B, 0x1234, 0x8E2E, - 0x2A65, 0x8E30, 0x2CAB, 0x8E31, 0x1362, 0x8E33, 0x2CA2, 0x8E34, 0x1363, - 0x8E35, 0x1366, 0x8E36, 0x2CA7, 0x8E38, 0x2CA4, 0x8E39, 0x1365, 0x8E3C, - 0x2CA8, 0x8E3D, 0x2CA9, 0x8E3E, 0x2CA3, 0x8E3F, 0x2CAC, 0x8E40, 0x2CA5, - 0x8E41, 0x2CAA, 0x8E42, 0x1364, 0x8E44, 0x1361, 0x8E45, 0x2CA6, 0x8E47, - 0x2E7A, 0x8E48, 0x148B, 0x8E49, 0x1489, 0x8E4A, 0x148C, 0x8E4B, 0x148A, - 0x8E4C, 0x2E79, 0x8E4D, 0x2E76, 0x8E4E, 0x2E75, 0x8E50, 0x2E78, 0x8E53, - 0x2E77, 0x8E54, 0x2FF6, 0x8E55, 0x1535, 0x8E56, 0x2FED, 0x8E57, 0x2FEC, - 0x8E59, 0x1530, 0x8E5A, 0x2FF2, 0x8E5B, 0x2FF1, 0x8E5C, 0x2FE9, 0x8E5D, - 0x2FF4, 0x8E5E, 0x2FEE, 0x8E5F, 0x1534, 0x8E60, 0x2FEB, 0x8E61, 0x2FF3, - 0x8E62, 0x2FEA, 0x8E63, 0x1531, 0x8E64, 0x1533, 0x8E65, 0x2FEF, 0x8E66, - 0x1532, 0x8E67, 0x2FF0, 0x8E69, 0x2FF5, 0x8E6A, 0x313D, 0x8E6C, 0x15D3, - 0x8E6D, 0x313A, 0x8E6F, 0x313E, 0x8E72, 0x15D0, 0x8E73, 0x313C, 0x8E74, - 0x15D5, 0x8E76, 0x15D2, 0x8E78, 0x313B, 0x8E7A, 0x15D4, 0x8E7B, 0x313F, - 0x8E7C, 0x15CF, 0x8E81, 0x164D, 0x8E82, 0x164F, 0x8E84, 0x3240, 0x8E85, - 0x164E, 0x8E86, 0x323E, 0x8E87, 0x15D1, 0x8E88, 0x323F, 0x8E89, 0x164C, - 0x8E8A, 0x1693, 0x8E8B, 0x1695, 0x8E8C, 0x331A, 0x8E8D, 0x1694, 0x8E8E, - 0x3319, 0x8E90, 0x33C1, 0x8E91, 0x16DB, 0x8E92, 0x33C0, 0x8E93, 0x16DC, - 0x8E94, 0x33BE, 0x8E95, 0x33BD, 0x8E96, 0x33C2, 0x8E97, 0x33C3, 0x8E98, - 0x3443, 0x8E9A, 0x33BF, 0x8E9D, 0x34A1, 0x8E9E, 0x349E, 0x8E9F, 0x349F, - 0x8EA0, 0x34A0, 0x8EA1, 0x1749, 0x8EA3, 0x34EB, 0x8EA4, 0x34EA, 0x8EA5, - 0x34E9, 0x8EA6, 0x350A, 0x8EA8, 0x3537, 0x8EA9, 0x3524, 0x8EAA, 0x175B, - 0x8EAB, 0x0512, 0x8EAC, 0x09CF, 0x8EB2, 0x0F2F, 0x8EBA, 0x123D, 0x8EBD, - 0x2CAD, 0x8EC0, 0x1536, 0x8EC2, 0x3140, 0x8EC9, 0x3525, 0x8ECA, 0x0513, - 0x8ECB, 0x068D, 0x8ECC, 0x0810, 0x8ECD, 0x080F, 0x8ECF, 0x09D2, 0x8ED1, - 0x1E13, 0x8ED2, 0x09D0, 0x8ED3, 0x1E14, 0x8ED4, 0x09D1, 0x8ED7, 0x207D, - 0x8ED8, 0x2079, 0x8EDB, 0x0BB3, 0x8EDC, 0x207C, 0x8EDD, 0x207B, 0x8EDE, - 0x207A, 0x8EDF, 0x0BB4, 0x8EE0, 0x207E, 0x8EE1, 0x207F, 0x8EE5, 0x2315, - 0x8EE6, 0x2313, 0x8EE7, 0x2317, 0x8EE8, 0x2318, 0x8EE9, 0x231E, 0x8EEB, - 0x231A, 0x8EEC, 0x231C, 0x8EEE, 0x2314, 0x8EEF, 0x230F, 0x8EF1, 0x231B, - 0x8EF4, 0x231D, 0x8EF5, 0x2316, 0x8EF6, 0x2319, 0x8EF7, 0x2310, 0x8EF8, - 0x0D7F, 0x8EF9, 0x2312, 0x8EFA, 0x2311, 0x8EFB, 0x0D7E, 0x8EFC, 0x0D80, - 0x8EFE, 0x0F32, 0x8EFF, 0x25BA, 0x8F00, 0x25BC, 0x8F01, 0x25BB, 0x8F02, - 0x25C0, 0x8F03, 0x0F30, 0x8F05, 0x25BD, 0x8F06, 0x25B9, 0x8F07, 0x25BE, - 0x8F08, 0x25BF, 0x8F09, 0x0F31, 0x8F0A, 0x0F33, 0x8F0B, 0x25C1, 0x8F0D, - 0x2820, 0x8F0E, 0x281F, 0x8F10, 0x281D, 0x8F11, 0x281E, 0x8F12, 0x10BF, - 0x8F13, 0x10C1, 0x8F14, 0x10BE, 0x8F15, 0x10C0, 0x8F16, 0x2A7A, 0x8F17, - 0x2A7B, 0x8F18, 0x2A76, 0x8F1A, 0x2A77, 0x8F1B, 0x123F, 0x8F1C, 0x1244, - 0x8F1D, 0x123E, 0x8F1E, 0x1245, 0x8F1F, 0x1240, 0x8F20, 0x2A78, 0x8F23, - 0x2A79, 0x8F24, 0x2A75, 0x8F25, 0x1246, 0x8F26, 0x1242, 0x8F29, 0x1241, - 0x8F2A, 0x1243, 0x8F2C, 0x2A74, 0x8F2E, 0x2CAF, 0x8F2F, 0x1368, 0x8F32, - 0x2CB1, 0x8F33, 0x136A, 0x8F34, 0x2CB4, 0x8F35, 0x2CB0, 0x8F36, 0x2CAE, - 0x8F37, 0x2CB3, 0x8F38, 0x1369, 0x8F39, 0x2CB2, 0x8F3B, 0x1367, 0x8F3E, - 0x148E, 0x8F3F, 0x1491, 0x8F40, 0x2E7C, 0x8F42, 0x148F, 0x8F43, 0x2E7B, - 0x8F44, 0x148D, 0x8F45, 0x1490, 0x8F46, 0x2FF7, 0x8F47, 0x2FF8, 0x8F48, - 0x2FF9, 0x8F49, 0x1537, 0x8F4B, 0x2FFA, 0x8F4D, 0x1538, 0x8F4E, 0x15D7, - 0x8F4F, 0x3143, 0x8F50, 0x3144, 0x8F51, 0x3142, 0x8F52, 0x3141, 0x8F53, - 0x3145, 0x8F54, 0x15D6, 0x8F55, 0x3244, 0x8F56, 0x3242, 0x8F57, 0x3243, - 0x8F58, 0x3245, 0x8F59, 0x3241, 0x8F5A, 0x3246, 0x8F5B, 0x331C, 0x8F5D, - 0x331D, 0x8F5E, 0x331B, 0x8F5F, 0x1696, 0x8F60, 0x33C4, 0x8F61, 0x16DD, - 0x8F62, 0x33C5, 0x8F63, 0x3445, 0x8F64, 0x3444, 0x8F9B, 0x0514, 0x8F9C, - 0x0D81, 0x8F9F, 0x0F34, 0x8FA3, 0x10C2, 0x8FA6, 0x136C, 0x8FA8, 0x136B, - 0x8FAD, 0x15D8, 0x8FAE, 0x162F, 0x8FAF, 0x1697, 0x8FB0, 0x0515, 0x8FB1, - 0x09D3, 0x8FB2, 0x0F35, 0x8FB4, 0x3146, 0x8FB5, 0x0230, 0x8FBF, 0x18E9, - 0x8FC2, 0x0516, 0x8FC4, 0x0519, 0x8FC5, 0x0518, 0x8FC6, 0x0517, 0x8FC9, - 0x18E8, 0x8FCB, 0x1A4A, 0x8FCD, 0x1A4C, 0x8FCE, 0x068E, 0x8FD1, 0x0690, - 0x8FD2, 0x1A49, 0x8FD3, 0x1A4B, 0x8FD4, 0x068F, 0x8FD5, 0x1A4E, 0x8FD6, - 0x1A4D, 0x8FD7, 0x1A4F, 0x8FE0, 0x1C0A, 0x8FE1, 0x1C08, 0x8FE2, 0x0813, - 0x8FE3, 0x1C07, 0x8FE4, 0x0818, 0x8FE5, 0x0815, 0x8FE6, 0x0812, 0x8FE8, - 0x0819, 0x8FEA, 0x0814, 0x8FEB, 0x0817, 0x8FED, 0x0816, 0x8FEE, 0x1C09, - 0x8FF0, 0x0811, 0x8FF4, 0x09D9, 0x8FF5, 0x1E16, 0x8FF6, 0x1E1C, 0x8FF7, - 0x09D6, 0x8FF8, 0x09DD, 0x8FFA, 0x09D8, 0x8FFB, 0x1E19, 0x8FFC, 0x1E1B, - 0x8FFD, 0x09DB, 0x8FFE, 0x1E15, 0x8FFF, 0x1E18, 0x9000, 0x09D7, 0x9001, - 0x09D4, 0x9002, 0x1E17, 0x9003, 0x09DA, 0x9004, 0x1E1A, 0x9005, 0x09DC, - 0x9006, 0x09D5, 0x900B, 0x2081, 0x900C, 0x2084, 0x900D, 0x0BB6, 0x900F, - 0x0BC0, 0x9010, 0x0BBC, 0x9011, 0x2082, 0x9014, 0x0BC4, 0x9015, 0x0BBD, - 0x9016, 0x0BC2, 0x9017, 0x0BB8, 0x9019, 0x0BB5, 0x901A, 0x0BB7, 0x901B, - 0x0BC3, 0x901C, 0x2083, 0x901D, 0x0BBB, 0x901E, 0x0BBE, 0x901F, 0x0BBA, - 0x9020, 0x0BBF, 0x9021, 0x2085, 0x9022, 0x0BC1, 0x9023, 0x0BB9, 0x9024, - 0x2080, 0x902D, 0x231F, 0x902E, 0x0D82, 0x902F, 0x2321, 0x9031, 0x0D84, - 0x9032, 0x0D86, 0x9034, 0x2320, 0x9035, 0x0D83, 0x9036, 0x0D87, 0x9038, - 0x0D85, 0x903C, 0x0F3B, 0x903D, 0x25C6, 0x903E, 0x0F43, 0x903F, 0x25C3, - 0x9041, 0x0F44, 0x9042, 0x0F39, 0x9044, 0x25C4, 0x9047, 0x0F3E, 0x9049, - 0x25C5, 0x904A, 0x0F37, 0x904B, 0x0F36, 0x904D, 0x0F41, 0x904E, 0x0F40, - 0x904F, 0x0F3F, 0x9050, 0x0F3D, 0x9051, 0x0F42, 0x9052, 0x25C2, 0x9053, - 0x0F38, 0x9054, 0x0F3A, 0x9055, 0x0F3C, 0x9058, 0x10C4, 0x9059, 0x10C7, - 0x905B, 0x10CB, 0x905C, 0x10C5, 0x905D, 0x10CA, 0x905E, 0x10C8, 0x9060, - 0x10C3, 0x9062, 0x10C9, 0x9063, 0x10C6, 0x9067, 0x2A7F, 0x9068, 0x1249, - 0x9069, 0x1247, 0x906B, 0x2A80, 0x906D, 0x124A, 0x906E, 0x1248, 0x906F, - 0x2A7E, 0x9070, 0x2A7D, 0x9072, 0x1370, 0x9073, 0x2A7C, 0x9074, 0x136E, - 0x9075, 0x136D, 0x9076, 0x2CB5, 0x9077, 0x124B, 0x9078, 0x136F, 0x9079, - 0x2CB6, 0x907A, 0x1372, 0x907B, 0x2CB7, 0x907C, 0x1371, 0x907D, 0x1493, - 0x907E, 0x2E7E, 0x907F, 0x1492, 0x9080, 0x1497, 0x9081, 0x1495, 0x9082, - 0x1496, 0x9083, 0x153A, 0x9084, 0x1494, 0x9085, 0x2E7D, 0x9086, 0x2CB8, - 0x9087, 0x1539, 0x9088, 0x153B, 0x908A, 0x15D9, 0x908B, 0x15DA, 0x908D, - 0x3247, 0x908F, 0x170C, 0x9090, 0x170B, 0x9091, 0x051B, 0x9094, 0x181E, - 0x9095, 0x09DE, 0x9097, 0x181B, 0x9098, 0x181C, 0x9099, 0x181A, 0x909B, - 0x181D, 0x909E, 0x18ED, 0x909F, 0x18EA, 0x90A0, 0x18EF, 0x90A1, 0x18EB, - 0x90A2, 0x051C, 0x90A3, 0x051F, 0x90A5, 0x18EC, 0x90A6, 0x051E, 0x90A7, - 0x18EE, 0x90AA, 0x051D, 0x90AF, 0x1A52, 0x90B0, 0x1A54, 0x90B1, 0x0693, - 0x90B2, 0x1A50, 0x90B3, 0x1A53, 0x90B4, 0x1A51, 0x90B5, 0x0691, 0x90B6, - 0x0694, 0x90B8, 0x0692, 0x90BD, 0x1C0C, 0x90BE, 0x1C10, 0x90BF, 0x1C0D, - 0x90C1, 0x081C, 0x90C3, 0x081D, 0x90C5, 0x1C0F, 0x90C7, 0x1C11, 0x90C8, - 0x1C13, 0x90CA, 0x081A, 0x90CB, 0x1C12, 0x90CE, 0x081B, 0x90D4, 0x208C, - 0x90D5, 0x1C0E, 0x90D6, 0x1E1D, 0x90D7, 0x1E26, 0x90D8, 0x1E24, 0x90D9, - 0x1E1F, 0x90DA, 0x1E20, 0x90DB, 0x1E25, 0x90DC, 0x1E27, 0x90DD, 0x09E0, - 0x90DF, 0x1E22, 0x90E0, 0x1E1E, 0x90E1, 0x09DF, 0x90E2, 0x09E1, 0x90E3, - 0x1E21, 0x90E4, 0x1E28, 0x90E5, 0x1E23, 0x90E8, 0x0BC5, 0x90E9, 0x208F, - 0x90EA, 0x2087, 0x90EB, 0x208D, 0x90EC, 0x208E, 0x90ED, 0x0BC6, 0x90EF, - 0x2086, 0x90F0, 0x2088, 0x90F1, 0x1C0B, 0x90F2, 0x208A, 0x90F3, 0x208B, - 0x90F4, 0x2089, 0x90F5, 0x0D89, 0x90F9, 0x2328, 0x90FA, 0x2CB9, 0x90FB, - 0x2329, 0x90FC, 0x2326, 0x90FD, 0x0BC7, 0x90FE, 0x0D8B, 0x90FF, 0x2325, - 0x9100, 0x232B, 0x9101, 0x232A, 0x9102, 0x0D88, 0x9103, 0x232E, 0x9104, - 0x2324, 0x9105, 0x232D, 0x9106, 0x2322, 0x9107, 0x232C, 0x9108, 0x2327, - 0x9109, 0x0D8A, 0x910B, 0x25CD, 0x910D, 0x25C8, 0x910E, 0x25CE, 0x910F, - 0x25C9, 0x9110, 0x25C7, 0x9111, 0x25CA, 0x9112, 0x0F45, 0x9114, 0x25CC, - 0x9116, 0x25CB, 0x9117, 0x0F46, 0x9118, 0x10CD, 0x9119, 0x10CC, 0x911A, - 0x2827, 0x911B, 0x282A, 0x911C, 0x2822, 0x911D, 0x2826, 0x911E, 0x10CE, - 0x911F, 0x2825, 0x9120, 0x2823, 0x9121, 0x2829, 0x9122, 0x2824, 0x9123, - 0x2821, 0x9124, 0x2828, 0x9126, 0x2A86, 0x9127, 0x124E, 0x9128, 0x2FFB, - 0x9129, 0x2A83, 0x912A, 0x2A84, 0x912B, 0x2A82, 0x912C, 0x2323, 0x912D, - 0x124D, 0x912E, 0x2A87, 0x912F, 0x2A81, 0x9130, 0x124C, 0x9131, 0x124F, - 0x9132, 0x2A85, 0x9133, 0x2CBA, 0x9134, 0x1373, 0x9135, 0x2CBB, 0x9136, - 0x2CBC, 0x9138, 0x2E7F, 0x9139, 0x1498, 0x913A, 0x2FFC, 0x913B, 0x2FFD, - 0x913E, 0x2FFE, 0x913F, 0x3148, 0x9140, 0x3147, 0x9141, 0x3249, 0x9143, - 0x3248, 0x9144, 0x331F, 0x9145, 0x3320, 0x9146, 0x331E, 0x9147, 0x33C6, - 0x9148, 0x16DE, 0x9149, 0x0520, 0x914A, 0x081F, 0x914B, 0x081E, 0x914C, - 0x09E4, 0x914D, 0x09E3, 0x914E, 0x1E2A, 0x914F, 0x1E2B, 0x9150, 0x1E29, - 0x9152, 0x09E2, 0x9153, 0x2093, 0x9155, 0x2094, 0x9156, 0x2090, 0x9157, - 0x0BC8, 0x9158, 0x2091, 0x915A, 0x2092, 0x915F, 0x2331, 0x9160, 0x2333, - 0x9161, 0x232F, 0x9162, 0x2332, 0x9163, 0x0D8C, 0x9164, 0x2330, 0x9165, - 0x0D8D, 0x9168, 0x23E2, 0x9169, 0x0F49, 0x916A, 0x0F48, 0x916C, 0x0F47, - 0x916E, 0x25CF, 0x916F, 0x25D0, 0x9172, 0x282C, 0x9173, 0x282E, 0x9174, - 0x10D2, 0x9175, 0x10CF, 0x9177, 0x10D1, 0x9178, 0x10D0, 0x9179, 0x282D, - 0x917A, 0x282B, 0x9180, 0x2A8E, 0x9181, 0x2A8B, 0x9182, 0x2A8C, 0x9183, - 0x1253, 0x9184, 0x2A8D, 0x9185, 0x2A88, 0x9186, 0x2A89, 0x9187, 0x1250, - 0x9189, 0x1251, 0x918A, 0x2A8A, 0x918B, 0x1252, 0x918D, 0x2CC0, 0x918F, - 0x2CC1, 0x9190, 0x2CBE, 0x9191, 0x2CBF, 0x9192, 0x1374, 0x9193, 0x2CBD, - 0x9199, 0x2E83, 0x919A, 0x2E80, 0x919B, 0x2E82, 0x919C, 0x149B, 0x919D, - 0x2E86, 0x919E, 0x149A, 0x919F, 0x2E84, 0x91A0, 0x2E87, 0x91A1, 0x2E85, - 0x91A2, 0x2E81, 0x91A3, 0x1499, 0x91A5, 0x3000, 0x91A7, 0x3001, 0x91A8, - 0x2FFF, 0x91AA, 0x3003, 0x91AB, 0x153C, 0x91AC, 0x153D, 0x91AD, 0x314A, - 0x91AE, 0x15DC, 0x91AF, 0x3002, 0x91B0, 0x3149, 0x91B1, 0x15DB, 0x91B2, - 0x324C, 0x91B3, 0x324D, 0x91B4, 0x1650, 0x91B5, 0x324B, 0x91B7, 0x324A, - 0x91B9, 0x3321, 0x91BA, 0x1698, 0x91BC, 0x3446, 0x91BD, 0x34A3, 0x91BE, - 0x34A2, 0x91C0, 0x1730, 0x91C1, 0x174A, 0x91C2, 0x34A4, 0x91C3, 0x350B, - 0x91C5, 0x175C, 0x91C6, 0x0521, 0x91C7, 0x0695, 0x91C9, 0x0F4A, 0x91CB, - 0x1651, 0x91CC, 0x0522, 0x91CD, 0x0820, 0x91CE, 0x0BC9, 0x91CF, 0x0D8E, - 0x91D0, 0x153E, 0x91D1, 0x0696, 0x91D3, 0x1C15, 0x91D4, 0x1C14, 0x91D5, - 0x1E2C, 0x91D7, 0x09E7, 0x91D8, 0x09E5, 0x91D9, 0x09E9, 0x91DA, 0x1E2E, - 0x91DC, 0x09E8, 0x91DD, 0x09E6, 0x91E2, 0x1E2D, 0x91E3, 0x0BCC, 0x91E4, - 0x209A, 0x91E6, 0x0BCB, 0x91E7, 0x0BCD, 0x91E8, 0x209F, 0x91E9, 0x0BCF, - 0x91EA, 0x209C, 0x91EB, 0x209D, 0x91EC, 0x2095, 0x91ED, 0x0BCE, 0x91EE, - 0x20A0, 0x91F1, 0x2097, 0x91F3, 0x2098, 0x91F4, 0x2096, 0x91F5, 0x0BCA, - 0x91F7, 0x209E, 0x91F8, 0x2099, 0x91F9, 0x209B, 0x91FD, 0x233F, 0x91FF, - 0x233E, 0x9200, 0x233C, 0x9201, 0x2334, 0x9202, 0x2343, 0x9203, 0x2337, - 0x9204, 0x2341, 0x9205, 0x2348, 0x9206, 0x2340, 0x9207, 0x0D96, 0x9209, - 0x0D92, 0x920A, 0x2335, 0x920C, 0x233B, 0x920D, 0x0D94, 0x920F, 0x233A, - 0x9210, 0x0D95, 0x9211, 0x0D97, 0x9212, 0x233D, 0x9214, 0x0D8F, 0x9215, - 0x0D90, 0x9216, 0x2349, 0x9217, 0x2347, 0x9219, 0x2346, 0x921A, 0x2338, - 0x921C, 0x2344, 0x921E, 0x0D93, 0x9223, 0x0D91, 0x9224, 0x2345, 0x9225, - 0x2336, 0x9226, 0x2339, 0x9227, 0x2342, 0x922D, 0x2851, 0x922E, 0x25DA, - 0x9230, 0x25D3, 0x9231, 0x25E6, 0x9232, 0x25EF, 0x9233, 0x25D6, 0x9234, - 0x0F55, 0x9236, 0x25E3, 0x9237, 0x0F4B, 0x9238, 0x0F4D, 0x9239, 0x0F59, - 0x923A, 0x25D4, 0x923D, 0x0F4E, 0x923E, 0x0F50, 0x923F, 0x0F5A, 0x9240, - 0x0F4F, 0x9245, 0x0F58, 0x9246, 0x25DC, 0x9248, 0x25D1, 0x9249, 0x0F56, - 0x924A, 0x25DB, 0x924B, 0x0F52, 0x924C, 0x25ED, 0x924D, 0x0F57, 0x924E, - 0x25EB, 0x924F, 0x25DF, 0x9250, 0x25E9, 0x9251, 0x0F54, 0x9252, 0x25D2, - 0x9253, 0x25EC, 0x9254, 0x25E7, 0x9256, 0x25EE, 0x9257, 0x0F4C, 0x925A, - 0x0F5B, 0x925B, 0x0F51, 0x925E, 0x25D8, 0x9260, 0x25E0, 0x9261, 0x25E4, - 0x9263, 0x25E8, 0x9264, 0x0F53, 0x9265, 0x25D7, 0x9266, 0x25D5, 0x9267, - 0x25E1, 0x926C, 0x25DE, 0x926D, 0x25DD, 0x926F, 0x25E2, 0x9270, 0x25E5, - 0x9272, 0x25EA, 0x9276, 0x2831, 0x9278, 0x10D3, 0x9279, 0x283B, 0x927A, - 0x2833, 0x927B, 0x10D9, 0x927C, 0x10DD, 0x927D, 0x2844, 0x927E, 0x284C, - 0x927F, 0x283D, 0x9280, 0x10D5, 0x9282, 0x2841, 0x9283, 0x25D9, 0x9285, - 0x10D6, 0x9286, 0x2848, 0x9287, 0x284D, 0x9288, 0x2845, 0x928A, 0x2847, - 0x928B, 0x2850, 0x928C, 0x2849, 0x928D, 0x2837, 0x928E, 0x2840, 0x9291, - 0x10DE, 0x9293, 0x10DA, 0x9294, 0x2835, 0x9295, 0x2842, 0x9296, 0x10D8, - 0x9297, 0x283C, 0x9298, 0x10D7, 0x9299, 0x284A, 0x929A, 0x2839, 0x929B, - 0x2832, 0x929C, 0x10DB, 0x929D, 0x284F, 0x92A0, 0x2834, 0x92A1, 0x2846, - 0x92A2, 0x2843, 0x92A3, 0x283E, 0x92A4, 0x2830, 0x92A5, 0x282F, 0x92A6, - 0x2838, 0x92A7, 0x284B, 0x92A8, 0x10DC, 0x92A9, 0x284E, 0x92AA, 0x2836, - 0x92AB, 0x283A, 0x92AC, 0x10D4, 0x92B2, 0x125F, 0x92B3, 0x125A, 0x92B4, - 0x2AB0, 0x92B5, 0x2AAC, 0x92B6, 0x2A94, 0x92B7, 0x1256, 0x92B9, 0x36E9, - 0x92BB, 0x1255, 0x92BC, 0x125B, 0x92C0, 0x2A92, 0x92C1, 0x1259, 0x92C2, - 0x2A9E, 0x92C3, 0x2A90, 0x92C4, 0x2A91, 0x92C5, 0x1254, 0x92C6, 0x2AAF, - 0x92C7, 0x125D, 0x92C8, 0x2AA1, 0x92C9, 0x2AA6, 0x92CA, 0x2AA0, 0x92CB, - 0x2CD3, 0x92CC, 0x2A9C, 0x92CD, 0x2AA4, 0x92CE, 0x2AA2, 0x92CF, 0x2A95, - 0x92D0, 0x2A8F, 0x92D1, 0x2AAA, 0x92D2, 0x125C, 0x92D3, 0x2AAB, 0x92D5, - 0x2AA5, 0x92D7, 0x2A9A, 0x92D8, 0x2A98, 0x92D9, 0x2A93, 0x92DD, 0x2A9B, - 0x92DE, 0x2AA8, 0x92DF, 0x2A97, 0x92E0, 0x2AA7, 0x92E1, 0x2AAD, 0x92E4, - 0x1258, 0x92E6, 0x2AA3, 0x92E7, 0x2AA9, 0x92E8, 0x2A9F, 0x92E9, 0x2A99, - 0x92EA, 0x1257, 0x92EE, 0x283F, 0x92EF, 0x2A9D, 0x92F0, 0x125E, 0x92F1, - 0x2A96, 0x92F7, 0x2CD8, 0x92F8, 0x1377, 0x92F9, 0x2CD7, 0x92FA, 0x2CD5, - 0x92FB, 0x2CE7, 0x92FC, 0x137B, 0x92FE, 0x2CE4, 0x92FF, 0x2CDC, 0x9300, - 0x2CE6, 0x9301, 0x2CCE, 0x9302, 0x2CDA, 0x9304, 0x137D, 0x9306, 0x2CC6, - 0x9308, 0x2CC4, 0x9309, 0x2CE5, 0x930B, 0x2CE3, 0x930C, 0x2CE2, 0x930D, - 0x2CD2, 0x930E, 0x2CD1, 0x930F, 0x2CC7, 0x9310, 0x137F, 0x9312, 0x2CCD, - 0x9313, 0x2CD6, 0x9314, 0x2CE1, 0x9315, 0x1382, 0x9316, 0x2CE8, 0x9318, - 0x14A3, 0x9319, 0x1384, 0x931A, 0x137E, 0x931B, 0x2CCB, 0x931D, 0x2CD4, - 0x931E, 0x2CC3, 0x931F, 0x2CC5, 0x9320, 0x1375, 0x9321, 0x1381, 0x9322, - 0x137A, 0x9323, 0x2CCC, 0x9324, 0x2CDB, 0x9325, 0x2AAE, 0x9326, 0x1380, - 0x9327, 0x2CC2, 0x9328, 0x149E, 0x9329, 0x2CDD, 0x932A, 0x2CE0, 0x932B, - 0x137C, 0x932D, 0x2CD0, 0x932E, 0x1383, 0x932F, 0x1379, 0x9333, 0x1378, - 0x9334, 0x2CD9, 0x9335, 0x2CDF, 0x9336, 0x1376, 0x9338, 0x2CC9, 0x9339, - 0x2CDE, 0x933C, 0x2CCA, 0x9346, 0x2CCF, 0x9347, 0x2E8D, 0x9349, 0x2E92, - 0x934A, 0x14A0, 0x934B, 0x14A2, 0x934C, 0x2E98, 0x934D, 0x149C, 0x934E, - 0x2EA6, 0x934F, 0x2E9E, 0x9350, 0x2E93, 0x9351, 0x2E94, 0x9352, 0x2E9D, - 0x9354, 0x14A9, 0x9355, 0x2E9C, 0x9356, 0x2E8C, 0x9357, 0x2E9B, 0x9358, - 0x2E8F, 0x9359, 0x2EA7, 0x935A, 0x14A8, 0x935B, 0x14A6, 0x935C, 0x2E90, - 0x935E, 0x2EA3, 0x9360, 0x2E95, 0x9361, 0x2EA2, 0x9363, 0x2EA4, 0x9364, - 0x2E8B, 0x9365, 0x14A1, 0x9367, 0x2EA5, 0x936A, 0x2E99, 0x936C, 0x14A5, - 0x936D, 0x2E96, 0x9370, 0x14A7, 0x9371, 0x2E9F, 0x9375, 0x149F, 0x9376, - 0x2E91, 0x9377, 0x2EA0, 0x9379, 0x2E9A, 0x937A, 0x2CC8, 0x937B, 0x2EA1, - 0x937C, 0x2E8E, 0x937E, 0x14A4, 0x9380, 0x3014, 0x9382, 0x149D, 0x9383, - 0x2E89, 0x9388, 0x3011, 0x9389, 0x300A, 0x938A, 0x1540, 0x938C, 0x3005, - 0x938D, 0x3015, 0x938E, 0x300C, 0x938F, 0x2E97, 0x9391, 0x3017, 0x9392, - 0x3006, 0x9394, 0x153F, 0x9395, 0x3010, 0x9396, 0x1541, 0x9397, 0x1549, - 0x9398, 0x1547, 0x9399, 0x3012, 0x939A, 0x1548, 0x939B, 0x3008, 0x939D, - 0x3009, 0x939E, 0x300E, 0x939F, 0x3013, 0x93A1, 0x2E88, 0x93A2, 0x1542, - 0x93A3, 0x301C, 0x93A4, 0x3019, 0x93A5, 0x3160, 0x93A6, 0x300F, 0x93A7, - 0x300B, 0x93A8, 0x301A, 0x93A9, 0x3155, 0x93AA, 0x300D, 0x93AC, 0x1545, - 0x93AE, 0x1544, 0x93AF, 0x2E8A, 0x93B0, 0x1546, 0x93B1, 0x3016, 0x93B2, - 0x3018, 0x93B3, 0x1543, 0x93B4, 0x301B, 0x93B5, 0x3004, 0x93B7, 0x3007, - 0x93C0, 0x315E, 0x93C2, 0x314E, 0x93C3, 0x15E0, 0x93C4, 0x315C, 0x93C7, - 0x314C, 0x93C8, 0x15E1, 0x93CA, 0x3157, 0x93CC, 0x3153, 0x93CD, 0x15E6, - 0x93CE, 0x315D, 0x93CF, 0x314D, 0x93D0, 0x3150, 0x93D1, 0x15DE, 0x93D2, - 0x315F, 0x93D4, 0x3158, 0x93D5, 0x315B, 0x93D6, 0x15E4, 0x93D7, 0x15E9, - 0x93D8, 0x15E7, 0x93D9, 0x3154, 0x93DA, 0x314F, 0x93DC, 0x15E2, 0x93DD, - 0x15E3, 0x93DE, 0x314B, 0x93DF, 0x15DF, 0x93E1, 0x15DD, 0x93E2, 0x15E5, - 0x93E3, 0x315A, 0x93E4, 0x15E8, 0x93E6, 0x3156, 0x93E7, 0x3161, 0x93E8, - 0x15EA, 0x93EC, 0x3152, 0x93EE, 0x3159, 0x93F5, 0x325A, 0x93F6, 0x3269, - 0x93F7, 0x325C, 0x93F8, 0x3263, 0x93F9, 0x3151, 0x93FA, 0x3261, 0x93FB, - 0x3250, 0x93FC, 0x3267, 0x93FD, 0x1654, 0x93FE, 0x3254, 0x93FF, 0x3266, - 0x9400, 0x325B, 0x9403, 0x1653, 0x9406, 0x326B, 0x9407, 0x325D, 0x9409, - 0x3262, 0x940A, 0x3265, 0x940B, 0x324E, 0x940C, 0x3268, 0x940D, 0x3259, - 0x940E, 0x325E, 0x940F, 0x3252, 0x9410, 0x3256, 0x9411, 0x326A, 0x9412, - 0x3260, 0x9413, 0x324F, 0x9414, 0x3253, 0x9415, 0x3255, 0x9416, 0x325F, - 0x9418, 0x1652, 0x9419, 0x3258, 0x9420, 0x3251, 0x9428, 0x3257, 0x9429, - 0x3325, 0x942A, 0x3329, 0x942B, 0x169F, 0x942C, 0x332B, 0x942E, 0x1699, - 0x9430, 0x3327, 0x9431, 0x332D, 0x9432, 0x169E, 0x9433, 0x169A, 0x9435, - 0x169B, 0x9436, 0x3324, 0x9437, 0x332A, 0x9438, 0x169D, 0x9439, 0x3328, - 0x943A, 0x169C, 0x943B, 0x3323, 0x943C, 0x3264, 0x943D, 0x3326, 0x943F, - 0x3322, 0x9440, 0x332C, 0x9444, 0x16DF, 0x9445, 0x33CD, 0x9446, 0x33D0, - 0x9447, 0x33CC, 0x9448, 0x33CE, 0x9449, 0x33CF, 0x944A, 0x33C9, 0x944B, - 0x33CA, 0x944C, 0x33C7, 0x944F, 0x33CB, 0x9450, 0x33C8, 0x9451, 0x16E0, - 0x9452, 0x16E1, 0x9455, 0x3448, 0x9457, 0x344A, 0x945D, 0x3449, 0x945E, - 0x344B, 0x9460, 0x170E, 0x9462, 0x3447, 0x9463, 0x170D, 0x9464, 0x170F, - 0x9468, 0x34A6, 0x9469, 0x34A7, 0x946A, 0x1731, 0x946B, 0x34A5, 0x946D, - 0x34ED, 0x946E, 0x34EC, 0x946F, 0x34EE, 0x9470, 0x174C, 0x9471, 0x34EF, - 0x9472, 0x174B, 0x9473, 0x34F0, 0x9474, 0x350C, 0x9475, 0x350F, 0x9476, - 0x350E, 0x9477, 0x1755, 0x9478, 0x350D, 0x947C, 0x175F, 0x947D, 0x175D, - 0x947E, 0x175E, 0x947F, 0x1764, 0x9480, 0x3539, 0x9481, 0x353A, 0x9482, - 0x3538, 0x9483, 0x3540, 0x9577, 0x0697, 0x957A, 0x20A1, 0x957B, 0x234A, - 0x957C, 0x2AB1, 0x957D, 0x3162, 0x9580, 0x0698, 0x9582, 0x0821, 0x9583, - 0x09EA, 0x9586, 0x20A2, 0x9588, 0x20A3, 0x9589, 0x0BD0, 0x958B, 0x0D9A, - 0x958C, 0x234C, 0x958D, 0x234B, 0x958E, 0x0D9E, 0x958F, 0x0D99, 0x9590, - 0x234D, 0x9591, 0x0D9B, 0x9592, 0x0D9D, 0x9593, 0x0D9C, 0x9594, 0x0D98, - 0x9598, 0x0F5C, 0x959B, 0x25F3, 0x959C, 0x25F1, 0x959E, 0x25F2, 0x959F, - 0x25F0, 0x95A1, 0x10DF, 0x95A3, 0x10E2, 0x95A4, 0x10E4, 0x95A5, 0x10E3, - 0x95A8, 0x10E0, 0x95A9, 0x10E1, 0x95AB, 0x2AB3, 0x95AC, 0x2AB2, 0x95AD, - 0x1260, 0x95AE, 0x2AB4, 0x95B0, 0x2AB5, 0x95B1, 0x1261, 0x95B5, 0x2CF0, - 0x95B6, 0x2CEE, 0x95B7, 0x2EAD, 0x95B9, 0x2CEC, 0x95BA, 0x2CED, 0x95BB, - 0x1385, 0x95BC, 0x2CE9, 0x95BD, 0x2CF1, 0x95BE, 0x2CEB, 0x95BF, 0x2CEF, - 0x95C0, 0x2EA9, 0x95C3, 0x2EAB, 0x95C5, 0x2EAC, 0x95C6, 0x14AE, 0x95C7, - 0x2EA8, 0x95C8, 0x14AD, 0x95C9, 0x2EAA, 0x95CA, 0x14AA, 0x95CB, 0x14AB, - 0x95CC, 0x14AC, 0x95CD, 0x2CEA, 0x95D0, 0x154C, 0x95D1, 0x301F, 0x95D2, - 0x301D, 0x95D3, 0x301E, 0x95D4, 0x154A, 0x95D5, 0x154D, 0x95D6, 0x154B, - 0x95DA, 0x3163, 0x95DB, 0x3164, 0x95DC, 0x15EB, 0x95DE, 0x326C, 0x95DF, - 0x326E, 0x95E0, 0x326D, 0x95E1, 0x1655, 0x95E2, 0x16A0, 0x95E3, 0x3330, - 0x95E4, 0x332F, 0x95E5, 0x332E, 0x961C, 0x0699, 0x961E, 0x17B4, 0x9620, - 0x1821, 0x9621, 0x0414, 0x9622, 0x181F, 0x9623, 0x1822, 0x9624, 0x1820, - 0x9628, 0x18F1, 0x962A, 0x0526, 0x962C, 0x0527, 0x962D, 0x18F3, 0x962E, - 0x0524, 0x962F, 0x18F2, 0x9630, 0x18F0, 0x9631, 0x0525, 0x9632, 0x0523, - 0x9639, 0x1A55, 0x963A, 0x1A58, 0x963B, 0x069C, 0x963C, 0x1A57, 0x963D, - 0x1A56, 0x963F, 0x069B, 0x9640, 0x069A, 0x9642, 0x069E, 0x9643, 0x1A59, - 0x9644, 0x069D, 0x964A, 0x1C1A, 0x964B, 0x0823, 0x964C, 0x0824, 0x964D, - 0x0825, 0x964E, 0x1C1B, 0x964F, 0x1C17, 0x9650, 0x0822, 0x9651, 0x1C18, - 0x9653, 0x1C19, 0x9654, 0x1C16, 0x9658, 0x09F1, 0x965B, 0x09EE, 0x965C, - 0x1E2F, 0x965D, 0x09EF, 0x965E, 0x09F2, 0x965F, 0x1E30, 0x9661, 0x09ED, - 0x9662, 0x09EB, 0x9663, 0x09EC, 0x9664, 0x09F0, 0x966A, 0x0BD1, 0x966B, - 0x20A6, 0x966C, 0x0BD9, 0x966D, 0x20A5, 0x966F, 0x20A8, 0x9670, 0x0BD5, - 0x9671, 0x20A7, 0x9672, 0x0DA6, 0x9673, 0x0BD3, 0x9674, 0x0BD6, 0x9675, - 0x0BD2, 0x9676, 0x0BD7, 0x9677, 0x0BD8, 0x9678, 0x0BD4, 0x967C, 0x20A4, - 0x967D, 0x0DA2, 0x967E, 0x234F, 0x9680, 0x2353, 0x9683, 0x2352, 0x9684, - 0x0DA7, 0x9685, 0x0DA3, 0x9686, 0x0DA4, 0x9687, 0x234E, 0x9688, 0x2350, - 0x9689, 0x2351, 0x968A, 0x0D9F, 0x968B, 0x0DA1, 0x968D, 0x0DA5, 0x968E, - 0x0DA0, 0x9691, 0x25F6, 0x9692, 0x25F4, 0x9693, 0x25F5, 0x9694, 0x0F5E, - 0x9695, 0x0F5F, 0x9697, 0x25F7, 0x9698, 0x0F5D, 0x9699, 0x10E5, 0x969B, - 0x10E7, 0x969C, 0x10E6, 0x969E, 0x2852, 0x96A1, 0x2853, 0x96A2, 0x2AB7, - 0x96A4, 0x2AB6, 0x96A7, 0x1386, 0x96A8, 0x1387, 0x96A9, 0x2CF2, 0x96AA, - 0x1388, 0x96AC, 0x2EB0, 0x96AE, 0x2EAE, 0x96B0, 0x2EAF, 0x96B1, 0x14AF, - 0x96B3, 0x3020, 0x96B4, 0x15EC, 0x96B6, 0x0231, 0x96B8, 0x14B0, 0x96B9, - 0x069F, 0x96BB, 0x09F3, 0x96BC, 0x1E31, 0x96BF, 0x20A9, 0x96C0, 0x0BDA, - 0x96C1, 0x0DA8, 0x96C2, 0x2354, 0x96C3, 0x2356, 0x96C4, 0x0DAA, 0x96C5, - 0x0DA9, 0x96C6, 0x0DAB, 0x96C7, 0x0DAC, 0x96C8, 0x2355, 0x96C9, 0x0F62, - 0x96CA, 0x0F63, 0x96CB, 0x0F61, 0x96CC, 0x10E8, 0x96CD, 0x0F60, 0x96CE, - 0x25F8, 0x96D2, 0x10E9, 0x96D3, 0x2AB8, 0x96D4, 0x2CF3, 0x96D5, 0x1389, - 0x96D6, 0x14B1, 0x96D7, 0x3021, 0x96D8, 0x3025, 0x96D9, 0x1550, 0x96DA, - 0x3022, 0x96DB, 0x1551, 0x96DC, 0x154F, 0x96DD, 0x3026, 0x96DE, 0x1552, - 0x96DF, 0x3024, 0x96E1, 0x3165, 0x96E2, 0x154E, 0x96E3, 0x15ED, 0x96E5, - 0x34A8, 0x96E8, 0x06A0, 0x96E9, 0x0BDC, 0x96EA, 0x0BDB, 0x96EF, 0x0DAD, - 0x96F0, 0x2358, 0x96F1, 0x2357, 0x96F2, 0x0DAE, 0x96F5, 0x25FC, 0x96F6, - 0x0F67, 0x96F7, 0x0F64, 0x96F8, 0x25FB, 0x96F9, 0x0F66, 0x96FA, 0x25F9, - 0x96FB, 0x0F65, 0x96FD, 0x25FA, 0x96FF, 0x2854, 0x9700, 0x10EA, 0x9702, - 0x2ABB, 0x9704, 0x1262, 0x9705, 0x2AB9, 0x9706, 0x1263, 0x9707, 0x1264, - 0x9708, 0x2ABA, 0x9709, 0x1265, 0x970B, 0x2CF4, 0x970D, 0x138D, 0x970E, - 0x138A, 0x970F, 0x138F, 0x9710, 0x2CF6, 0x9711, 0x138B, 0x9712, 0x2CF5, - 0x9713, 0x138E, 0x9716, 0x138C, 0x9718, 0x2EB3, 0x9719, 0x2EB5, 0x971C, - 0x14B2, 0x971D, 0x2EB4, 0x971E, 0x14B3, 0x971F, 0x2EB2, 0x9720, 0x2EB1, - 0x9722, 0x3028, 0x9723, 0x3027, 0x9724, 0x1553, 0x9725, 0x3029, 0x9726, - 0x316A, 0x9727, 0x15EF, 0x9728, 0x3169, 0x9729, 0x3166, 0x972A, 0x15EE, - 0x972B, 0x3167, 0x972C, 0x3168, 0x972E, 0x326F, 0x972F, 0x3270, 0x9730, - 0x1656, 0x9732, 0x16A3, 0x9735, 0x3331, 0x9738, 0x16A1, 0x9739, 0x16A2, - 0x973A, 0x3332, 0x973D, 0x16E2, 0x973E, 0x16E3, 0x973F, 0x33D1, 0x9742, - 0x1732, 0x9743, 0x34AA, 0x9744, 0x1734, 0x9746, 0x34A9, 0x9747, 0x34AB, - 0x9748, 0x1733, 0x9749, 0x34F1, 0x974B, 0x3526, 0x9752, 0x06A1, 0x9756, - 0x0F68, 0x9758, 0x2855, 0x975A, 0x2ABC, 0x975B, 0x1390, 0x975C, 0x1391, - 0x975E, 0x06A2, 0x9760, 0x1266, 0x9761, 0x15F0, 0x9762, 0x0826, 0x9766, - 0x1392, 0x9768, 0x1710, 0x9769, 0x0827, 0x976A, 0x20AA, 0x976C, 0x2359, - 0x976E, 0x235B, 0x9770, 0x235A, 0x9772, 0x2600, 0x9773, 0x25FD, 0x9774, - 0x0F69, 0x9776, 0x0F6A, 0x9777, 0x25FE, 0x9778, 0x25FF, 0x977A, 0x2857, - 0x977B, 0x285C, 0x977C, 0x10EB, 0x977D, 0x2856, 0x977E, 0x2858, 0x977F, - 0x285F, 0x9780, 0x285A, 0x9781, 0x285E, 0x9782, 0x285B, 0x9783, 0x2859, - 0x9784, 0x285D, 0x9785, 0x10EC, 0x9788, 0x2ABF, 0x978A, 0x2ABD, 0x978B, - 0x1268, 0x978D, 0x1267, 0x978E, 0x2ABE, 0x978F, 0x1269, 0x9794, 0x2CF9, - 0x9797, 0x2CF8, 0x9798, 0x1393, 0x9799, 0x2CF7, 0x979A, 0x2EB6, 0x979C, - 0x2EB8, 0x979D, 0x2EBA, 0x979E, 0x2EB9, 0x97A0, 0x14B4, 0x97A1, 0x2EB7, - 0x97A2, 0x3030, 0x97A3, 0x1554, 0x97A4, 0x302E, 0x97A5, 0x3031, 0x97A6, - 0x1555, 0x97A8, 0x302C, 0x97AA, 0x302F, 0x97AB, 0x302D, 0x97AC, 0x302A, - 0x97AD, 0x1556, 0x97AE, 0x302B, 0x97B3, 0x316B, 0x97B6, 0x316D, 0x97B7, - 0x316C, 0x97B9, 0x3271, 0x97BB, 0x3272, 0x97BF, 0x3333, 0x97C1, 0x16E5, - 0x97C3, 0x16E4, 0x97C4, 0x344C, 0x97C5, 0x344D, 0x97C6, 0x1735, 0x97C7, - 0x34AC, 0x97C9, 0x1756, 0x97CB, 0x0828, 0x97CC, 0x0DAF, 0x97CD, 0x2861, - 0x97CE, 0x2860, 0x97CF, 0x2AC1, 0x97D0, 0x2AC0, 0x97D3, 0x14B5, 0x97D4, - 0x2EBC, 0x97D5, 0x2EBB, 0x97D6, 0x3034, 0x97D7, 0x3032, 0x97D8, 0x3035, - 0x97D9, 0x3033, 0x97DC, 0x15F1, 0x97DD, 0x316E, 0x97DE, 0x316F, 0x97DF, - 0x3170, 0x97E1, 0x3334, 0x97E3, 0x33D2, 0x97E5, 0x34AD, 0x97ED, 0x0829, - 0x97F0, 0x2CFA, 0x97F1, 0x2EBD, 0x97F3, 0x082A, 0x97F6, 0x10ED, 0x97F8, - 0x2CFB, 0x97F9, 0x1557, 0x97FA, 0x3036, 0x97FB, 0x15F2, 0x97FD, 0x3273, - 0x97FE, 0x3274, 0x97FF, 0x16A4, 0x9800, 0x344E, 0x9801, 0x082B, 0x9802, - 0x0BDF, 0x9803, 0x0BE0, 0x9804, 0x20AB, 0x9805, 0x0DB0, 0x9806, 0x0DB1, - 0x9807, 0x235C, 0x9808, 0x0DB2, 0x980A, 0x0F6E, 0x980C, 0x0F70, 0x980D, - 0x2602, 0x980E, 0x2603, 0x980F, 0x2601, 0x9810, 0x0F6B, 0x9811, 0x0F6C, - 0x9812, 0x0F6F, 0x9813, 0x0F6D, 0x9816, 0x2862, 0x9817, 0x10EE, 0x9818, - 0x10EF, 0x981B, 0x2AC8, 0x981C, 0x126C, 0x981D, 0x2AC3, 0x981E, 0x2AC2, - 0x9820, 0x2AC7, 0x9821, 0x126A, 0x9824, 0x139A, 0x9826, 0x2AC4, 0x9827, - 0x2AC9, 0x9828, 0x2AC6, 0x9829, 0x2AC5, 0x982B, 0x126B, 0x982D, 0x1398, - 0x982F, 0x2CFD, 0x9830, 0x1394, 0x9832, 0x2CFE, 0x9835, 0x2CFC, 0x9837, - 0x1397, 0x9838, 0x1395, 0x9839, 0x1399, 0x983B, 0x1396, 0x9841, 0x2EBE, - 0x9843, 0x2EC3, 0x9844, 0x2EBF, 0x9845, 0x2EC2, 0x9846, 0x14B6, 0x9848, - 0x2DF2, 0x9849, 0x2EC1, 0x984A, 0x2EC0, 0x984C, 0x155A, 0x984D, 0x1558, - 0x984E, 0x155B, 0x984F, 0x1559, 0x9850, 0x3037, 0x9851, 0x3038, 0x9852, - 0x3039, 0x9853, 0x155C, 0x9857, 0x3174, 0x9858, 0x15F4, 0x9859, 0x3172, - 0x985B, 0x15F5, 0x985C, 0x3171, 0x985D, 0x3173, 0x985E, 0x15F3, 0x985F, - 0x3278, 0x9860, 0x3275, 0x9862, 0x3276, 0x9863, 0x3277, 0x9864, 0x3335, - 0x9865, 0x16A6, 0x9867, 0x16A5, 0x9869, 0x33D4, 0x986A, 0x33D3, 0x986B, - 0x16E6, 0x986F, 0x1711, 0x9870, 0x1736, 0x9871, 0x174D, 0x9872, 0x34F2, - 0x9873, 0x3527, 0x9874, 0x3528, 0x98A8, 0x082C, 0x98A9, 0x235D, 0x98AC, - 0x2604, 0x98AD, 0x2863, 0x98AE, 0x2864, 0x98AF, 0x10F0, 0x98B1, 0x10F1, - 0x98B2, 0x2ACA, 0x98B3, 0x126D, 0x98B6, 0x14B7, 0x98B8, 0x303A, 0x98BA, - 0x155D, 0x98BB, 0x3177, 0x98BC, 0x15F6, 0x98BD, 0x3176, 0x98BE, 0x3178, - 0x98BF, 0x3175, 0x98C0, 0x3338, 0x98C1, 0x3279, 0x98C2, 0x327A, 0x98C4, - 0x1657, 0x98C6, 0x3337, 0x98C9, 0x3336, 0x98CB, 0x33D5, 0x98CC, 0x3529, - 0x98DB, 0x082D, 0x98DF, 0x082E, 0x98E2, 0x09F4, 0x98E3, 0x1E32, 0x98E5, - 0x20AC, 0x98E7, 0x0DB3, 0x98E9, 0x0DB6, 0x98EA, 0x0DB4, 0x98EB, 0x235E, - 0x98ED, 0x0DB8, 0x98EF, 0x0DB5, 0x98F2, 0x0DB7, 0x98F4, 0x0F72, 0x98F6, - 0x2605, 0x98F9, 0x2606, 0x98FA, 0x2ACC, 0x98FC, 0x0F71, 0x98FD, 0x0F73, - 0x98FE, 0x0F74, 0x9900, 0x2866, 0x9902, 0x2865, 0x9903, 0x10F2, 0x9905, - 0x10F3, 0x9907, 0x2867, 0x9908, 0x2ACB, 0x9909, 0x10F5, 0x990A, 0x126E, - 0x990C, 0x10F4, 0x9910, 0x139B, 0x9911, 0x2ACD, 0x9912, 0x1270, 0x9913, - 0x126F, 0x9914, 0x2ACE, 0x9915, 0x2AD1, 0x9916, 0x2ACF, 0x9917, 0x2AD0, - 0x9918, 0x1271, 0x991A, 0x13A0, 0x991B, 0x139E, 0x991E, 0x139D, 0x991F, - 0x2D00, 0x9921, 0x139F, 0x9924, 0x2CFF, 0x9925, 0x2EC4, 0x9927, 0x2D01, - 0x9928, 0x139C, 0x9929, 0x2D02, 0x992A, 0x2EC7, 0x992B, 0x2EC5, 0x992C, - 0x2EC6, 0x992D, 0x2ECB, 0x992E, 0x1561, 0x992F, 0x2ECA, 0x9930, 0x2ECD, - 0x9931, 0x2ECC, 0x9932, 0x2EC9, 0x9933, 0x2EC8, 0x9935, 0x14B8, 0x993A, - 0x303D, 0x993C, 0x303C, 0x993D, 0x1560, 0x993E, 0x155E, 0x993F, 0x155F, - 0x9941, 0x303B, 0x9943, 0x317B, 0x9945, 0x15F7, 0x9947, 0x317A, 0x9948, - 0x3179, 0x9949, 0x15F8, 0x994B, 0x327F, 0x994C, 0x327E, 0x994E, 0x327C, - 0x9950, 0x327B, 0x9951, 0x1659, 0x9952, 0x1658, 0x9953, 0x3280, 0x9954, - 0x33D6, 0x9955, 0x16E7, 0x9956, 0x333A, 0x9957, 0x16A7, 0x9958, 0x3339, - 0x9959, 0x327D, 0x995B, 0x33D7, 0x995C, 0x1712, 0x995E, 0x174E, 0x995F, - 0x34F3, 0x9961, 0x352A, 0x9996, 0x082F, 0x9997, 0x20AD, 0x9998, 0x2ECE, - 0x9999, 0x0830, 0x999C, 0x2869, 0x999D, 0x2868, 0x999E, 0x2D03, 0x99A1, - 0x2ED0, 0x99A3, 0x2ECF, 0x99A5, 0x1562, 0x99A6, 0x317C, 0x99A7, 0x317D, - 0x99A8, 0x165A, 0x99AB, 0x352B, 0x99AC, 0x09F5, 0x99AD, 0x0DBA, 0x99AE, - 0x0DB9, 0x99AF, 0x2607, 0x99B0, 0x2609, 0x99B1, 0x0F76, 0x99B2, 0x2608, - 0x99B3, 0x0F75, 0x99B4, 0x0F77, 0x99B5, 0x260A, 0x99B9, 0x286B, 0x99BA, - 0x286D, 0x99BB, 0x286C, 0x99BD, 0x286F, 0x99C1, 0x10F6, 0x99C2, 0x286E, - 0x99C3, 0x286A, 0x99C7, 0x2870, 0x99C9, 0x2AD8, 0x99CB, 0x2ADB, 0x99CC, - 0x2ADD, 0x99CD, 0x2AD3, 0x99CE, 0x2AD7, 0x99CF, 0x2AD4, 0x99D0, 0x1273, - 0x99D1, 0x1276, 0x99D2, 0x1278, 0x99D3, 0x2AD5, 0x99D4, 0x2AD6, 0x99D5, - 0x1277, 0x99D6, 0x2AD9, 0x99D7, 0x2ADC, 0x99D8, 0x2ADA, 0x99D9, 0x1279, - 0x99DB, 0x1275, 0x99DC, 0x2AD2, 0x99DD, 0x1272, 0x99DF, 0x1274, 0x99E2, - 0x13A2, 0x99E3, 0x2D09, 0x99E4, 0x2D07, 0x99E5, 0x2D06, 0x99E7, 0x2D0C, - 0x99E9, 0x2D0B, 0x99EA, 0x2D0A, 0x99EC, 0x2D05, 0x99ED, 0x13A1, 0x99EE, - 0x2D04, 0x99F0, 0x2D08, 0x99F1, 0x13A3, 0x99F4, 0x2ED3, 0x99F6, 0x2ED7, - 0x99F7, 0x2ED4, 0x99F8, 0x2ED6, 0x99F9, 0x2ED5, 0x99FA, 0x2ED2, 0x99FB, - 0x2ED8, 0x99FC, 0x2EDB, 0x99FD, 0x2ED9, 0x99FE, 0x2EDA, 0x99FF, 0x14BA, - 0x9A01, 0x14B9, 0x9A02, 0x2ED1, 0x9A03, 0x2EDC, 0x9A04, 0x3042, 0x9A05, - 0x3045, 0x9A06, 0x3047, 0x9A07, 0x3046, 0x9A09, 0x3040, 0x9A0A, 0x3044, - 0x9A0B, 0x303F, 0x9A0D, 0x3041, 0x9A0E, 0x1563, 0x9A0F, 0x303E, 0x9A11, - 0x3043, 0x9A14, 0x318A, 0x9A15, 0x317F, 0x9A16, 0x15F9, 0x9A19, 0x15FA, - 0x9A1A, 0x317E, 0x9A1B, 0x3183, 0x9A1C, 0x3189, 0x9A1D, 0x3181, 0x9A1E, - 0x3188, 0x9A20, 0x3185, 0x9A22, 0x3184, 0x9A23, 0x3187, 0x9A24, 0x3182, - 0x9A25, 0x3180, 0x9A27, 0x3186, 0x9A29, 0x3287, 0x9A2A, 0x3285, 0x9A2B, - 0x165B, 0x9A2C, 0x3284, 0x9A2D, 0x328A, 0x9A2E, 0x3288, 0x9A30, 0x165C, - 0x9A31, 0x3283, 0x9A32, 0x3281, 0x9A34, 0x3282, 0x9A35, 0x165E, 0x9A36, - 0x3286, 0x9A37, 0x165D, 0x9A38, 0x3289, 0x9A39, 0x333B, 0x9A3A, 0x3341, - 0x9A3D, 0x333C, 0x9A3E, 0x16AB, 0x9A3F, 0x3342, 0x9A40, 0x16AA, 0x9A41, - 0x3340, 0x9A42, 0x333F, 0x9A43, 0x16A9, 0x9A44, 0x333E, 0x9A45, 0x16A8, - 0x9A46, 0x333D, 0x9A48, 0x33DD, 0x9A49, 0x33DF, 0x9A4A, 0x33DE, 0x9A4C, - 0x33DB, 0x9A4D, 0x16E9, 0x9A4E, 0x33D8, 0x9A4F, 0x33DC, 0x9A50, 0x33E1, - 0x9A52, 0x33E0, 0x9A53, 0x33D9, 0x9A54, 0x33DA, 0x9A55, 0x16E8, 0x9A56, - 0x344F, 0x9A57, 0x1715, 0x9A59, 0x3450, 0x9A5A, 0x1713, 0x9A5B, 0x1714, - 0x9A5E, 0x34AE, 0x9A5F, 0x1737, 0x9A60, 0x3510, 0x9A62, 0x1757, 0x9A64, - 0x352C, 0x9A65, 0x1758, 0x9A66, 0x352D, 0x9A67, 0x352E, 0x9A68, 0x353C, - 0x9A69, 0x353B, 0x9A6A, 0x1767, 0x9A6B, 0x3544, 0x9AA8, 0x09F6, 0x9AAB, - 0x260C, 0x9AAD, 0x260B, 0x9AAF, 0x10F7, 0x9AB0, 0x10F8, 0x9AB1, 0x2871, - 0x9AB3, 0x2ADE, 0x9AB4, 0x2D0F, 0x9AB7, 0x127A, 0x9AB8, 0x13A4, 0x9AB9, - 0x2D0D, 0x9ABB, 0x2D10, 0x9ABC, 0x13A5, 0x9ABE, 0x2EDD, 0x9ABF, 0x2D0E, - 0x9AC0, 0x3048, 0x9AC1, 0x1564, 0x9AC2, 0x318B, 0x9AC6, 0x328D, 0x9AC7, - 0x328B, 0x9ACA, 0x328C, 0x9ACD, 0x3343, 0x9ACF, 0x16AC, 0x9AD0, 0x33E2, - 0x9AD1, 0x1718, 0x9AD2, 0x16EA, 0x9AD3, 0x1716, 0x9AD4, 0x1717, 0x9AD5, - 0x34AF, 0x9AD6, 0x174F, 0x9AD8, 0x09F7, 0x9ADC, 0x3049, 0x9ADF, 0x1E33, - 0x9AE1, 0x0F78, 0x9AE3, 0x2872, 0x9AE6, 0x10F9, 0x9AE7, 0x2873, 0x9AEB, - 0x2AE0, 0x9AEC, 0x2ADF, 0x9AED, 0x13A7, 0x9AEE, 0x127B, 0x9AEF, 0x127C, - 0x9AF1, 0x2AE3, 0x9AF2, 0x2AE2, 0x9AF3, 0x2AE1, 0x9AF6, 0x2D11, 0x9AF7, - 0x2D14, 0x9AF9, 0x2D13, 0x9AFA, 0x2D12, 0x9AFB, 0x13A6, 0x9AFC, 0x2EE1, - 0x9AFD, 0x2EDF, 0x9AFE, 0x2EDE, 0x9B01, 0x2EE0, 0x9B03, 0x1565, 0x9B04, - 0x304B, 0x9B05, 0x304C, 0x9B06, 0x1566, 0x9B08, 0x304A, 0x9B0A, 0x318D, - 0x9B0B, 0x318C, 0x9B0C, 0x318F, 0x9B0D, 0x15FB, 0x9B0E, 0x318E, 0x9B10, - 0x328E, 0x9B11, 0x3290, 0x9B12, 0x328F, 0x9B15, 0x3344, 0x9B16, 0x3347, - 0x9B17, 0x3345, 0x9B18, 0x3346, 0x9B19, 0x33E3, 0x9B1A, 0x16EB, 0x9B1E, - 0x3451, 0x9B1F, 0x3452, 0x9B20, 0x3453, 0x9B22, 0x1738, 0x9B23, 0x1750, - 0x9B24, 0x352F, 0x9B25, 0x09F8, 0x9B27, 0x127D, 0x9B28, 0x13A8, 0x9B29, - 0x304D, 0x9B2B, 0x33E4, 0x9B2E, 0x3511, 0x9B2F, 0x1E34, 0x9B31, 0x1768, - 0x9B32, 0x09F9, 0x9B33, 0x2D15, 0x9B35, 0x304E, 0x9B37, 0x3190, 0x9B3A, - 0x3348, 0x9B3B, 0x33E5, 0x9B3C, 0x09FA, 0x9B3E, 0x2874, 0x9B3F, 0x2875, - 0x9B41, 0x10FA, 0x9B42, 0x10FB, 0x9B43, 0x2AE5, 0x9B44, 0x127F, 0x9B45, - 0x127E, 0x9B46, 0x2AE4, 0x9B48, 0x2EE2, 0x9B4A, 0x304F, 0x9B4B, 0x3051, - 0x9B4C, 0x3050, 0x9B4D, 0x1569, 0x9B4E, 0x1568, 0x9B4F, 0x1567, 0x9B51, - 0x16AE, 0x9B52, 0x3349, 0x9B54, 0x16AD, 0x9B55, 0x33E7, 0x9B56, 0x33E6, - 0x9B58, 0x1739, 0x9B59, 0x34B0, 0x9B5A, 0x0BE1, 0x9B5B, 0x260D, 0x9B5F, - 0x2878, 0x9B60, 0x2876, 0x9B61, 0x2877, 0x9B64, 0x2AEE, 0x9B66, 0x2AE9, - 0x9B67, 0x2AE6, 0x9B68, 0x2AED, 0x9B6C, 0x2AEF, 0x9B6F, 0x1281, 0x9B70, - 0x2AEC, 0x9B71, 0x2AE8, 0x9B74, 0x2AE7, 0x9B75, 0x2AEB, 0x9B76, 0x2AEA, - 0x9B77, 0x1280, 0x9B7A, 0x2D20, 0x9B7B, 0x2D1B, 0x9B7C, 0x2D19, 0x9B7D, - 0x2D22, 0x9B7E, 0x2D1A, 0x9B80, 0x2D16, 0x9B82, 0x2D1C, 0x9B85, 0x2D17, - 0x9B86, 0x2EEB, 0x9B87, 0x2D18, 0x9B88, 0x2D23, 0x9B90, 0x2D1F, 0x9B91, - 0x13A9, 0x9B92, 0x2D1E, 0x9B93, 0x2D1D, 0x9B95, 0x2D21, 0x9B9A, 0x2EE3, - 0x9B9B, 0x2EE6, 0x9B9E, 0x2EE5, 0x9BA0, 0x2EED, 0x9BA1, 0x2EE8, 0x9BA2, - 0x2EEC, 0x9BA4, 0x2EEA, 0x9BA5, 0x2EE9, 0x9BA6, 0x2EE7, 0x9BA8, 0x2EE4, - 0x9BAA, 0x14BD, 0x9BAB, 0x14BC, 0x9BAD, 0x14BE, 0x9BAE, 0x14BB, 0x9BAF, - 0x2EEE, 0x9BB5, 0x3057, 0x9BB6, 0x305A, 0x9BB8, 0x3058, 0x9BB9, 0x305C, - 0x9BBD, 0x305D, 0x9BBF, 0x3055, 0x9BC0, 0x156E, 0x9BC1, 0x3056, 0x9BC3, - 0x3054, 0x9BC4, 0x305B, 0x9BC6, 0x3053, 0x9BC7, 0x3052, 0x9BC8, 0x156D, - 0x9BC9, 0x156B, 0x9BCA, 0x156A, 0x9BD3, 0x3059, 0x9BD4, 0x3199, 0x9BD5, - 0x319F, 0x9BD6, 0x15FE, 0x9BD7, 0x319A, 0x9BD9, 0x319D, 0x9BDA, 0x31A1, - 0x9BDB, 0x15FF, 0x9BDC, 0x319C, 0x9BDE, 0x3194, 0x9BE0, 0x3193, 0x9BE1, - 0x31A0, 0x9BE2, 0x3197, 0x9BE4, 0x3195, 0x9BE5, 0x319E, 0x9BE6, 0x3196, - 0x9BE7, 0x15FD, 0x9BE8, 0x15FC, 0x9BEA, 0x3191, 0x9BEB, 0x3192, 0x9BEC, - 0x319B, 0x9BF0, 0x3198, 0x9BF7, 0x3293, 0x9BF8, 0x3296, 0x9BFD, 0x156C, - 0x9C05, 0x3294, 0x9C06, 0x329A, 0x9C07, 0x3298, 0x9C08, 0x3292, 0x9C09, - 0x329D, 0x9C0B, 0x3291, 0x9C0D, 0x1660, 0x9C0E, 0x3299, 0x9C12, 0x3295, - 0x9C13, 0x165F, 0x9C14, 0x329C, 0x9C17, 0x329B, 0x9C1C, 0x334C, 0x9C1D, - 0x334B, 0x9C21, 0x3352, 0x9C23, 0x334E, 0x9C24, 0x3351, 0x9C25, 0x16B0, - 0x9C28, 0x334F, 0x9C29, 0x3350, 0x9C2B, 0x334A, 0x9C2C, 0x334D, 0x9C2D, - 0x16AF, 0x9C31, 0x16ED, 0x9C32, 0x33F2, 0x9C33, 0x33ED, 0x9C34, 0x33F1, - 0x9C36, 0x33F4, 0x9C37, 0x33F0, 0x9C39, 0x33EC, 0x9C3B, 0x16EF, 0x9C3C, - 0x33EF, 0x9C3D, 0x33F3, 0x9C3E, 0x16EE, 0x9C3F, 0x33EA, 0x9C40, 0x3297, - 0x9C41, 0x33EE, 0x9C44, 0x33EB, 0x9C46, 0x33E8, 0x9C48, 0x33E9, 0x9C49, - 0x16EC, 0x9C4A, 0x3457, 0x9C4B, 0x3459, 0x9C4C, 0x345C, 0x9C4D, 0x3458, - 0x9C4E, 0x345D, 0x9C50, 0x3456, 0x9C52, 0x3454, 0x9C54, 0x1719, 0x9C55, - 0x345A, 0x9C56, 0x171B, 0x9C57, 0x171A, 0x9C58, 0x3455, 0x9C59, 0x345B, - 0x9C5E, 0x34B5, 0x9C5F, 0x173A, 0x9C60, 0x34B6, 0x9C62, 0x34B4, 0x9C63, - 0x34B1, 0x9C66, 0x34B3, 0x9C67, 0x34B2, 0x9C68, 0x34F4, 0x9C6D, 0x34F6, - 0x9C6E, 0x34F5, 0x9C71, 0x3514, 0x9C73, 0x3513, 0x9C74, 0x3512, 0x9C75, - 0x3515, 0x9C77, 0x1760, 0x9C78, 0x1761, 0x9C79, 0x3541, 0x9C7A, 0x3545, - 0x9CE5, 0x0BE2, 0x9CE6, 0x235F, 0x9CE7, 0x2610, 0x9CE9, 0x0F79, 0x9CEA, - 0x260E, 0x9CED, 0x260F, 0x9CF1, 0x2879, 0x9CF2, 0x287A, 0x9CF3, 0x10FE, - 0x9CF4, 0x10FC, 0x9CF5, 0x287B, 0x9CF6, 0x10FD, 0x9CF7, 0x2AF4, 0x9CF9, - 0x2AF7, 0x9CFA, 0x2AF1, 0x9CFB, 0x2AF8, 0x9CFC, 0x2AF0, 0x9CFD, 0x2AF2, - 0x9CFF, 0x2AF3, 0x9D00, 0x2AF6, 0x9D03, 0x1284, 0x9D04, 0x2AFB, 0x9D05, - 0x2AFA, 0x9D06, 0x1282, 0x9D07, 0x2AF5, 0x9D08, 0x2AF9, 0x9D09, 0x1283, - 0x9D10, 0x2D2D, 0x9D12, 0x13AE, 0x9D14, 0x2D28, 0x9D15, 0x13AA, 0x9D17, - 0x2D25, 0x9D18, 0x2D2B, 0x9D19, 0x2D2E, 0x9D1B, 0x13AF, 0x9D1D, 0x2D2A, - 0x9D1E, 0x2D27, 0x9D1F, 0x2D2F, 0x9D20, 0x2D26, 0x9D22, 0x2D2C, 0x9D23, - 0x13AB, 0x9D25, 0x2D24, 0x9D26, 0x13AC, 0x9D28, 0x13AD, 0x9D29, 0x2D29, - 0x9D2D, 0x2F00, 0x9D2E, 0x2EF3, 0x9D2F, 0x2EF4, 0x9D30, 0x2EF7, 0x9D31, - 0x2EF5, 0x9D33, 0x2EEF, 0x9D36, 0x2EF2, 0x9D37, 0x2EFC, 0x9D38, 0x2EF6, - 0x9D3B, 0x14BF, 0x9D3D, 0x2EFE, 0x9D3E, 0x2EFB, 0x9D3F, 0x14C0, 0x9D40, - 0x2EFD, 0x9D41, 0x2EF0, 0x9D42, 0x2EF9, 0x9D43, 0x2EFA, 0x9D45, 0x2EF8, - 0x9D4A, 0x3061, 0x9D4B, 0x3063, 0x9D4C, 0x3066, 0x9D4F, 0x3060, 0x9D51, - 0x156F, 0x9D52, 0x3068, 0x9D53, 0x305F, 0x9D54, 0x3069, 0x9D56, 0x3065, - 0x9D57, 0x3067, 0x9D58, 0x306B, 0x9D59, 0x3064, 0x9D5A, 0x306C, 0x9D5B, - 0x3062, 0x9D5C, 0x305E, 0x9D5D, 0x1570, 0x9D5F, 0x306A, 0x9D60, 0x1571, - 0x9D61, 0x1601, 0x9D67, 0x2EF1, 0x9D68, 0x31BB, 0x9D69, 0x31B2, 0x9D6A, - 0x1603, 0x9D6B, 0x31AE, 0x9D6C, 0x1604, 0x9D6F, 0x31B7, 0x9D70, 0x31B1, - 0x9D71, 0x31A7, 0x9D72, 0x1602, 0x9D73, 0x31B4, 0x9D74, 0x31AF, 0x9D75, - 0x31B0, 0x9D77, 0x31A2, 0x9D78, 0x31A9, 0x9D79, 0x31B8, 0x9D7B, 0x31B5, - 0x9D7D, 0x31AD, 0x9D7F, 0x31B9, 0x9D80, 0x31A8, 0x9D81, 0x31A3, 0x9D82, - 0x31B6, 0x9D84, 0x31A5, 0x9D85, 0x31B3, 0x9D86, 0x31AA, 0x9D87, 0x31BA, - 0x9D88, 0x31A6, 0x9D89, 0x1600, 0x9D8A, 0x31A4, 0x9D8B, 0x31AB, 0x9D8C, - 0x31AC, 0x9D90, 0x32A4, 0x9D92, 0x32A2, 0x9D94, 0x32A7, 0x9D96, 0x32B3, - 0x9D97, 0x32AA, 0x9D98, 0x32A3, 0x9D99, 0x329F, 0x9D9A, 0x32AC, 0x9D9B, - 0x32A5, 0x9D9C, 0x32A8, 0x9D9D, 0x32A1, 0x9D9E, 0x32AF, 0x9D9F, 0x329E, - 0x9DA0, 0x32A6, 0x9DA1, 0x32AB, 0x9DA2, 0x32AD, 0x9DA3, 0x32B0, 0x9DA4, - 0x32A0, 0x9DA6, 0x32B4, 0x9DA7, 0x32B5, 0x9DA8, 0x32AE, 0x9DA9, 0x32B2, - 0x9DAA, 0x32A9, 0x9DAC, 0x3362, 0x9DAD, 0x3365, 0x9DAF, 0x16B1, 0x9DB1, - 0x3364, 0x9DB2, 0x3369, 0x9DB3, 0x3367, 0x9DB4, 0x16B2, 0x9DB5, 0x335E, - 0x9DB6, 0x3354, 0x9DB7, 0x3353, 0x9DB8, 0x16B4, 0x9DB9, 0x3360, 0x9DBA, - 0x3361, 0x9DBB, 0x335D, 0x9DBC, 0x3355, 0x9DBE, 0x335A, 0x9DBF, 0x32B1, - 0x9DC1, 0x3356, 0x9DC2, 0x16B3, 0x9DC3, 0x335C, 0x9DC5, 0x335B, 0x9DC7, - 0x3357, 0x9DC8, 0x3363, 0x9DCA, 0x3358, 0x9DCB, 0x33F9, 0x9DCC, 0x3366, - 0x9DCD, 0x3368, 0x9DCE, 0x335F, 0x9DCF, 0x3359, 0x9DD0, 0x33FA, 0x9DD1, - 0x33FC, 0x9DD2, 0x33F6, 0x9DD3, 0x16F0, 0x9DD5, 0x3403, 0x9DD6, 0x3401, - 0x9DD7, 0x16F1, 0x9DD8, 0x3400, 0x9DD9, 0x33FF, 0x9DDA, 0x33F8, 0x9DDB, - 0x33F5, 0x9DDC, 0x33FB, 0x9DDD, 0x3404, 0x9DDE, 0x33F7, 0x9DDF, 0x33FD, - 0x9DE1, 0x3466, 0x9DE2, 0x346B, 0x9DE3, 0x3461, 0x9DE4, 0x3464, 0x9DE5, - 0x171C, 0x9DE6, 0x3468, 0x9DE8, 0x346F, 0x9DE9, 0x33FE, 0x9DEB, 0x3462, - 0x9DEC, 0x346C, 0x9DED, 0x3470, 0x9DEE, 0x3467, 0x9DEF, 0x3460, 0x9DF0, - 0x346A, 0x9DF2, 0x3469, 0x9DF3, 0x346E, 0x9DF4, 0x346D, 0x9DF5, 0x3402, - 0x9DF6, 0x3465, 0x9DF7, 0x345F, 0x9DF8, 0x3463, 0x9DF9, 0x173B, 0x9DFA, - 0x173C, 0x9DFB, 0x345E, 0x9DFD, 0x34C1, 0x9DFE, 0x34B8, 0x9DFF, 0x34C0, - 0x9E00, 0x34BD, 0x9E01, 0x34BE, 0x9E02, 0x34B7, 0x9E03, 0x34BA, 0x9E04, - 0x34C2, 0x9E05, 0x34BC, 0x9E06, 0x34BB, 0x9E07, 0x34B9, 0x9E09, 0x34BF, - 0x9E0B, 0x34F7, 0x9E0D, 0x34F8, 0x9E0F, 0x34FA, 0x9E10, 0x34F9, 0x9E11, - 0x34FC, 0x9E12, 0x34FB, 0x9E13, 0x3517, 0x9E14, 0x3516, 0x9E15, 0x3530, - 0x9E17, 0x3531, 0x9E19, 0x353D, 0x9E1A, 0x1765, 0x9E1B, 0x1769, 0x9E1D, - 0x3546, 0x9E1E, 0x176A, 0x9E75, 0x0BE3, 0x9E79, 0x1661, 0x9E7A, 0x336A, - 0x9E7C, 0x173D, 0x9E7D, 0x173E, 0x9E7F, 0x0BE4, 0x9E80, 0x2611, 0x9E82, - 0x0F7A, 0x9E83, 0x2AFC, 0x9E86, 0x2D31, 0x9E87, 0x2D32, 0x9E88, 0x2D30, - 0x9E89, 0x2F02, 0x9E8A, 0x2F01, 0x9E8B, 0x14C1, 0x9E8C, 0x306E, 0x9E8D, - 0x2F03, 0x9E8E, 0x306D, 0x9E91, 0x31BD, 0x9E92, 0x1605, 0x9E93, 0x1607, - 0x9E94, 0x31BC, 0x9E97, 0x1606, 0x9E99, 0x32B6, 0x9E9A, 0x32B8, 0x9E9B, - 0x32B7, 0x9E9C, 0x336B, 0x9E9D, 0x16B5, 0x9E9F, 0x171D, 0x9EA0, 0x34C3, - 0x9EA1, 0x34FD, 0x9EA4, 0x354A, 0x9EA5, 0x0BE5, 0x9EA7, 0x287C, 0x9EA9, - 0x1285, 0x9EAD, 0x2D34, 0x9EAE, 0x2D33, 0x9EB0, 0x2F04, 0x9EB4, 0x1608, - 0x9EB5, 0x1662, 0x9EB6, 0x3405, 0x9EB7, 0x3542, 0x9EBB, 0x0BE6, 0x9EBC, - 0x10FF, 0x9EBE, 0x1286, 0x9EC0, 0x31BE, 0x9EC2, 0x3471, 0x9EC3, 0x0DBB, - 0x9EC8, 0x2F05, 0x9ECC, 0x1751, 0x9ECD, 0x0DBC, 0x9ECE, 0x1287, 0x9ECF, - 0x14C2, 0x9ED0, 0x3472, 0x9ED1, 0x0DBD, 0x9ED3, 0x2AFD, 0x9ED4, 0x13B1, - 0x9ED5, 0x2D35, 0x9ED6, 0x2D36, 0x9ED8, 0x13B0, 0x9EDA, 0x2F06, 0x9EDB, - 0x14C6, 0x9EDC, 0x14C4, 0x9EDD, 0x14C5, 0x9EDE, 0x14C3, 0x9EDF, 0x306F, - 0x9EE0, 0x1572, 0x9EE4, 0x32BA, 0x9EE5, 0x32B9, 0x9EE6, 0x32BC, 0x9EE7, - 0x32BB, 0x9EE8, 0x1663, 0x9EEB, 0x336C, 0x9EED, 0x336E, 0x9EEE, 0x336D, - 0x9EEF, 0x16B6, 0x9EF0, 0x3406, 0x9EF2, 0x3473, 0x9EF3, 0x3474, 0x9EF4, - 0x171E, 0x9EF5, 0x34FE, 0x9EF6, 0x3518, 0x9EF7, 0x1762, 0x9EF9, 0x2360, - 0x9EFA, 0x2D37, 0x9EFB, 0x2F07, 0x9EFC, 0x31BF, 0x9EFD, 0x2612, 0x9EFF, - 0x2F08, 0x9F00, 0x3071, 0x9F01, 0x3070, 0x9F06, 0x3475, 0x9F07, 0x173F, - 0x9F09, 0x34FF, 0x9F0A, 0x3519, 0x9F0E, 0x0F7B, 0x9F0F, 0x2AFE, 0x9F10, - 0x2AFF, 0x9F12, 0x2D38, 0x9F13, 0x0F7C, 0x9F15, 0x1573, 0x9F16, 0x3072, - 0x9F18, 0x3370, 0x9F19, 0x16B7, 0x9F1A, 0x3371, 0x9F1B, 0x336F, 0x9F1C, - 0x3476, 0x9F1E, 0x34C4, 0x9F20, 0x0F7D, 0x9F22, 0x2F0B, 0x9F23, 0x2F0A, - 0x9F24, 0x2F09, 0x9F25, 0x3073, 0x9F28, 0x3077, 0x9F29, 0x3076, 0x9F2A, - 0x3075, 0x9F2B, 0x3074, 0x9F2C, 0x1574, 0x9F2D, 0x31C0, 0x9F2E, 0x32BE, - 0x9F2F, 0x1664, 0x9F30, 0x32BD, 0x9F31, 0x3372, 0x9F32, 0x3409, 0x9F33, - 0x3408, 0x9F34, 0x16F2, 0x9F35, 0x3407, 0x9F36, 0x3479, 0x9F37, 0x3478, - 0x9F38, 0x3477, 0x9F3B, 0x1100, 0x9F3D, 0x2D39, 0x9F3E, 0x14C7, 0x9F40, - 0x31C1, 0x9F41, 0x31C2, 0x9F42, 0x340A, 0x9F43, 0x347A, 0x9F46, 0x34C5, - 0x9F47, 0x3500, 0x9F48, 0x3532, 0x9F49, 0x354C, 0x9F4A, 0x1101, 0x9F4B, - 0x14C8, 0x9F4C, 0x3078, 0x9F4D, 0x31C3, 0x9F4E, 0x3373, 0x9F4F, 0x347B, - 0x9F52, 0x1289, 0x9F54, 0x2F0C, 0x9F55, 0x3079, 0x9F56, 0x31C4, 0x9F57, - 0x31C5, 0x9F58, 0x31C6, 0x9F59, 0x32C3, 0x9F5B, 0x32BF, 0x9F5C, 0x16B8, - 0x9F5D, 0x32C2, 0x9F5E, 0x32C1, 0x9F5F, 0x1665, 0x9F60, 0x32C0, 0x9F61, - 0x1667, 0x9F63, 0x1666, 0x9F64, 0x3375, 0x9F65, 0x3374, 0x9F66, 0x16B9, - 0x9F67, 0x16BA, 0x9F6A, 0x16F4, 0x9F6B, 0x340B, 0x9F6C, 0x16F3, 0x9F6E, - 0x347E, 0x9F6F, 0x347F, 0x9F70, 0x347D, 0x9F71, 0x347C, 0x9F72, 0x1741, - 0x9F74, 0x34C6, 0x9F75, 0x34C7, 0x9F76, 0x34C8, 0x9F77, 0x1740, 0x9F78, - 0x3501, 0x9F79, 0x3504, 0x9F7A, 0x3503, 0x9F7B, 0x3502, 0x9F7E, 0x354B, - 0x9F8D, 0x13B2, 0x9F90, 0x157C, 0x9F91, 0x32C4, 0x9F92, 0x3376, 0x9F94, - 0x16F5, 0x9F95, 0x340C, 0x9F98, 0x354D, 0x9F9C, 0x13B3, 0x9FA0, 0x2F0D, - 0x9FA2, 0x340D, 0x9FA4, 0x351A, 0xE01F, 0x083A, 0xE026, 0x09FD, 0xE05B, - 0x030D, 0xE063, 0x016B, 0xE073, 0x0860, 0xE0F3, 0x0C23, 0xE12E, 0x17E4, - 0xE149, 0x212F, 0xE191, 0x115F, 0xE1BA, 0x0C79, 0xE1C9, 0x04C3, 0xE22C, - 0x18BD, 0xE22D, 0x0CBD, 0xE230, 0x0CA5, 0xE266, 0x0CCE, 0xE2A3, 0x0E84, - 0xE2BC, 0x0120, 0xE2EF, 0x1BA8, 0xE33A, 0x1055, 0xE340, 0x2DE8, 0xE34F, - 0x0121, 0xE35A, 0x106B, 0xE363, 0x1326, 0xE37C, 0x066B, 0xE37F, 0x132E, - 0xE3C5, 0x0D35, 0xE3D7, 0x27C2, 0xE3DC, 0x22AD, 0xE417, 0x134C, 0xE44A, - 0x09CE, 0xE478, 0x0BC7, 0xE485, 0x36E9, 0xE4C5, 0x1391, 0xE4DA, 0x16A4, - 0xE545, 0x3072, 0xE5D2, 0x0119, 0xE5D3, 0x011A, 0xE5D4, 0x011C, 0xE5D5, - 0x011B, 0xE5F4, 0x297C, 0xE6C6, 0x1D06, 0xE727, 0x29A1, 0xE7D3, 0x181B, - 0xE893, 0x2B24, 0xEB40, 0x2F50, 0xEB42, 0x1725, 0xEB45, 0x32ED, 0xEB6E, - 0x2AD9, 0xEB86, 0x1C14, 0xEB9E, 0x12E9, 0xEBA9, 0x2CAE, 0xEBBA, 0x1A64, - 0xEBC9, 0x1404, 0xEBCF, 0x2324, 0xEBD2, 0x346A, 0xEBDE, 0x2291, 0xEC01, - 0x1787, 0xEC02, 0x095F, 0xEC15, 0x1E99, 0xEC5B, 0x25C1, 0xEC5E, 0x0D0C, - 0xECA6, 0x05E6, 0xED28, 0x0728, 0xED6E, 0x24B6, 0xED7C, 0x1806, 0xED9E, - 0x3511, 0xEDE7, 0x0F82, 0xEE52, 0x05F2, 0xEE98, 0x247D, 0xF6B1, 0x01FA, - 0xF6B2, 0x01FB, 0xF6B3, 0x01FC, 0xF6B4, 0x01FD, 0xF6B5, 0x01FE, 0xF6B6, - 0x01FF, 0xF6B7, 0x0200, 0xF6B8, 0x0201, 0xF6B9, 0x0202, 0xF6BA, 0x0203, - 0xF6BB, 0x0204, 0xF6BC, 0x0205, 0xF6BD, 0x0206, 0xF6BE, 0x0207, 0xF6BF, - 0x0208, 0xF6C0, 0x0209, 0xF6C1, 0x020A, 0xF6C2, 0x020B, 0xF6C3, 0x020C, - 0xF6C4, 0x020D, 0xF6C5, 0x020E, 0xF6C6, 0x020F, 0xF6C7, 0x0210, 0xF6C8, - 0x0211, 0xF6C9, 0x0212, 0xF6CA, 0x0213, 0xF6CB, 0x0214, 0xF6CC, 0x0215, - 0xF6CD, 0x0216, 0xF6CE, 0x0217, 0xF6CF, 0x0219, 0xF6D0, 0x021A, 0xF6D1, - 0x021B, 0xF6D2, 0x021C, 0xF6D3, 0x021D, 0xF6D4, 0x021E, 0xF6D5, 0x021F, - 0xF6D6, 0x0220, 0xF6D7, 0x0221, 0xF6D8, 0x0222, 0xF6D9, 0x0223, 0xF6DA, - 0x0224, 0xF6DB, 0x0225, 0xF6DC, 0x0226, 0xF6DD, 0x0227, 0xF6DE, 0x0228, - 0xF6E0, 0x022A, 0xF6E1, 0x022B, 0xF6E2, 0x022C, 0xF6E4, 0x022E, 0xF6E6, - 0x0230, 0xF6E8, 0x35B3, 0xF6E9, 0x35B4, 0xF6EA, 0x35B5, 0xF6EB, 0x35B6, - 0xF6EC, 0x35B7, 0xF6ED, 0x35B8, 0xF6F0, 0x35BA, 0xF6F1, 0x35BB, 0xF6F2, - 0x35BC, 0xF6F3, 0x35BD, 0xF6F4, 0x35BE, 0xF6F5, 0x35BF, 0xF6F6, 0x35C0, - 0xF6F7, 0x35C1, 0xF6F8, 0x35C2, 0xF6F9, 0x35C3, 0xF6FA, 0x35C4, 0xF6FB, - 0x35C5, 0xF6FC, 0x35C6, 0xF6FD, 0x35C7, 0xF6FE, 0x35C8, 0xF6FF, 0x35C9, - 0xF700, 0x35CA, 0xF701, 0x35CB, 0xF702, 0x35CC, 0xF703, 0x35CD, 0xF704, - 0x35CE, 0xF705, 0x35CF, 0xF706, 0x35D0, 0xF707, 0x35D1, 0xF708, 0x35D2, - 0xF709, 0x35D3, 0xF70A, 0x35D4, 0xF70B, 0x35D5, 0xF70C, 0x35D6, 0xF70D, - 0x35D7, 0xF70E, 0x35D8, 0xF70F, 0x35D9, 0xF710, 0x35DA, 0xF711, 0x35DB, - 0xF712, 0x35DC, 0xF713, 0x35DD, 0xF714, 0x35DE, 0xF715, 0x35DF, 0xF716, - 0x35E0, 0xF717, 0x35E1, 0xF718, 0x35E2, 0xF719, 0x35E3, 0xF71A, 0x35E4, - 0xF71B, 0x35E5, 0xF71C, 0x35E6, 0xF71D, 0x35E7, 0xF71E, 0x35E8, 0xF71F, - 0x35E9, 0xF720, 0x35EA, 0xF721, 0x35EB, 0xF722, 0x35EC, 0xF723, 0x35ED, - 0xF724, 0x35EE, 0xF725, 0x35EF, 0xF726, 0x35F0, 0xF727, 0x35F1, 0xF728, - 0x35F2, 0xF729, 0x35F3, 0xF72A, 0x35F4, 0xF72B, 0x35F5, 0xF72C, 0x35F6, - 0xF72D, 0x35F7, 0xF72E, 0x35F8, 0xF72F, 0x35F9, 0xF730, 0x35FA, 0xF731, - 0x35FB, 0xF732, 0x35FC, 0xF733, 0x35FD, 0xF734, 0x35FE, 0xF735, 0x35FF, - 0xF736, 0x3600, 0xF737, 0x3601, 0xF738, 0x3602, 0xF739, 0x3603, 0xF73A, - 0x3604, 0xF73B, 0x3605, 0xF73C, 0x3606, 0xF73D, 0x3607, 0xF73E, 0x3608, - 0xF73F, 0x3609, 0xF740, 0x360A, 0xF741, 0x360B, 0xF742, 0x360C, 0xF743, - 0x360D, 0xF744, 0x360E, 0xF745, 0x360F, 0xF746, 0x3610, 0xF747, 0x3611, - 0xF748, 0x3612, 0xF749, 0x3613, 0xF74A, 0x3614, 0xF74B, 0x3615, 0xF74C, - 0x3616, 0xF74D, 0x3617, 0xF74E, 0x3618, 0xF74F, 0x3619, 0xF750, 0x361A, - 0xF751, 0x361B, 0xF752, 0x361C, 0xF753, 0x361D, 0xF754, 0x361E, 0xF755, - 0x361F, 0xF756, 0x3620, 0xF757, 0x3621, 0xF758, 0x3622, 0xF759, 0x3623, - 0xF75A, 0x3624, 0xF75B, 0x3625, 0xF75C, 0x3626, 0xF75D, 0x3627, 0xF75E, - 0x3628, 0xF75F, 0x3629, 0xF760, 0x362A, 0xF761, 0x362B, 0xF762, 0x362C, - 0xF763, 0x362D, 0xF764, 0x362E, 0xF765, 0x362F, 0xF766, 0x3630, 0xF767, - 0x3631, 0xF768, 0x3632, 0xF769, 0x3633, 0xF76A, 0x3634, 0xF76B, 0x3635, - 0xF76C, 0x3636, 0xF76D, 0x3637, 0xF76E, 0x3638, 0xF76F, 0x3639, 0xF770, - 0x363A, 0xF771, 0x363B, 0xF772, 0x363C, 0xF773, 0x363D, 0xF774, 0x363E, - 0xF775, 0x363F, 0xF776, 0x3640, 0xF777, 0x3641, 0xF778, 0x3642, 0xF779, - 0x3643, 0xF77A, 0x3644, 0xF77B, 0x3645, 0xF77C, 0x3646, 0xF77D, 0x3647, - 0xF77E, 0x3648, 0xF77F, 0x3649, 0xF780, 0x364A, 0xF781, 0x364B, 0xF782, - 0x364C, 0xF783, 0x364D, 0xF784, 0x364E, 0xF785, 0x364F, 0xF786, 0x3650, - 0xF787, 0x3651, 0xF788, 0x3652, 0xF789, 0x3653, 0xF78A, 0x3654, 0xF78B, - 0x3655, 0xF78C, 0x3656, 0xF78D, 0x3657, 0xF78E, 0x3658, 0xF78F, 0x3659, - 0xF790, 0x365A, 0xF791, 0x365B, 0xF792, 0x365C, 0xF793, 0x365D, 0xF794, - 0x365E, 0xF795, 0x365F, 0xF796, 0x3660, 0xF797, 0x3661, 0xF798, 0x3662, - 0xF799, 0x3663, 0xF79A, 0x3664, 0xF79B, 0x3665, 0xF79C, 0x3666, 0xF79D, - 0x3667, 0xF79E, 0x3668, 0xF79F, 0x3669, 0xF7A0, 0x366A, 0xF7A1, 0x366B, - 0xF7A2, 0x366C, 0xF7A3, 0x366D, 0xF7A4, 0x366E, 0xF7A5, 0x366F, 0xF7A6, - 0x3670, 0xF7A7, 0x3671, 0xF7A8, 0x3672, 0xF7A9, 0x3673, 0xF7AA, 0x3674, - 0xF7AB, 0x3675, 0xF7AC, 0x3676, 0xF7AD, 0x3677, 0xF7AE, 0x3678, 0xF7AF, - 0x3679, 0xF7B0, 0x367A, 0xF7B1, 0x367B, 0xF7B2, 0x367C, 0xF7B3, 0x367D, - 0xF7B4, 0x367E, 0xF7B5, 0x367F, 0xF7B6, 0x3680, 0xF7B7, 0x3681, 0xF7B8, - 0x3682, 0xF7B9, 0x3683, 0xF7BA, 0x3684, 0xF7BB, 0x3685, 0xF7BC, 0x3686, - 0xF7BD, 0x3687, 0xF7BE, 0x3688, 0xF7BF, 0x3689, 0xF7C0, 0x368A, 0xF7C1, - 0x368B, 0xF7C2, 0x368C, 0xF7C3, 0x368D, 0xF7C4, 0x368E, 0xF7C5, 0x368F, - 0xF7C6, 0x3690, 0xF7C7, 0x3691, 0xF7C8, 0x3692, 0xF7C9, 0x3693, 0xF7CA, - 0x3694, 0xF7CB, 0x3695, 0xF7CC, 0x3696, 0xF7CD, 0x3697, 0xF7CE, 0x3698, - 0xF7CF, 0x3699, 0xF7D0, 0x369A, 0xF7D1, 0x369B, 0xF7D2, 0x369C, 0xF7D3, - 0x369D, 0xF7D4, 0x369E, 0xF7D5, 0x369F, 0xF7D6, 0x36A0, 0xF7D7, 0x36A1, - 0xF7D8, 0x36A2, 0xF7D9, 0x36A3, 0xF7DA, 0x36A4, 0xF7DB, 0x36A5, 0xF7DC, - 0x36A6, 0xF7DD, 0x36A7, 0xF7DE, 0x36A8, 0xF7DF, 0x36A9, 0xF7E0, 0x36AA, - 0xF7E1, 0x36AB, 0xF7E2, 0x36AC, 0xF7E3, 0x36AD, 0xF7E4, 0x36AE, 0xF7E5, - 0x36AF, 0xF7E6, 0x36B0, 0xF7E7, 0x36B1, 0xF7E8, 0x36B2, 0xF7E9, 0x36B3, - 0xF7EA, 0x36B4, 0xF7EB, 0x36B5, 0xF7EC, 0x36B6, 0xF7ED, 0x36B7, 0xF7EE, - 0x36B8, 0xF817, 0x36E1, 0xF818, 0x36E2, 0xF819, 0x36E3, 0xF81A, 0x36E4, - 0xF81B, 0x36E5, 0xF81C, 0x36E6, 0xF81D, 0x36E7, 0xFA0C, 0x0274, 0xFA0D, - 0x2381, 0xFE30, 0x006D, 0xFE31, 0x007A, 0xFE33, 0x35AF, 0xFE34, 0x35B1, - 0xFE35, 0x0082, 0xFE36, 0x0083, 0xFE37, 0x0086, 0xFE38, 0x0087, 0xFE39, - 0x008A, 0xFE3A, 0x008B, 0xFE3B, 0x008E, 0xFE3C, 0x008F, 0xFE3D, 0x0092, - 0xFE3E, 0x0093, 0xFE3F, 0x0096, 0xFE40, 0x0097, 0xFE41, 0x009A, 0xFE42, - 0x009B, 0xFE43, 0x009E, 0xFE44, 0x009F, 0xFE49, 0x00C7, 0xFE4A, 0x00C8, - 0xFE4B, 0x00CB, 0xFE4C, 0x00CC, 0xFE4D, 0x00C9, 0xFE4E, 0x00CA, 0xFE4F, - 0x35B2, 0xFE50, 0x0070, 0xFE51, 0x0071, 0xFE52, 0x0072, 0xFE54, 0x0074, - 0xFE55, 0x0075, 0xFE56, 0x0076, 0xFE57, 0x0077, 0xFE59, 0x00A0, 0xFE5A, - 0x00A1, 0xFE5B, 0x00A2, 0xFE5C, 0x00A3, 0xFE5D, 0x00A4, 0xFE5E, 0x00A5, - 0xFE5F, 0x00CD, 0xFE60, 0x00CE, 0xFE61, 0x00CF, 0xFE62, 0x00DF, 0xFE63, - 0x00E0, 0xFE64, 0x00E1, 0xFE65, 0x00E2, 0xFE66, 0x00E3, 0xFE68, 0x0102, - 0xFE69, 0x010C, 0xFE6A, 0x010D, 0xFE6B, 0x010E, 0xFF01, 0x006C, 0xFF02, - 0x36E4, 0xFF03, 0x00AE, 0xFF04, 0x0103, 0xFF05, 0x0108, 0xFF06, 0x00AF, - 0xFF07, 0x36E3, 0xFF08, 0x0080, 0xFF09, 0x0081, 0xFF0A, 0x00B0, 0xFF0B, - 0x00D0, 0xFF0C, 0x0064, 0xFF0D, 0x00D1, 0xFF0E, 0x0067, 0xFF0F, 0x0101, - 0xFF10, 0x014D, 0xFF11, 0x014E, 0xFF12, 0x014F, 0xFF13, 0x0150, 0xFF14, - 0x0151, 0xFF15, 0x0152, 0xFF16, 0x0153, 0xFF17, 0x0154, 0xFF18, 0x0155, - 0xFF19, 0x0156, 0xFF1A, 0x006A, 0xFF1B, 0x0069, 0xFF1C, 0x00D6, 0xFF1D, - 0x00D8, 0xFF1E, 0x00D7, 0xFF1F, 0x006B, 0xFF20, 0x0109, 0xFF21, 0x016D, - 0xFF22, 0x016E, 0xFF23, 0x016F, 0xFF24, 0x0170, 0xFF25, 0x0171, 0xFF26, - 0x0172, 0xFF27, 0x0173, 0xFF28, 0x0174, 0xFF29, 0x0175, 0xFF2A, 0x0176, - 0xFF2B, 0x0177, 0xFF2C, 0x0178, 0xFF2D, 0x0179, 0xFF2E, 0x017A, 0xFF2F, - 0x017B, 0xFF30, 0x017C, 0xFF31, 0x017D, 0xFF32, 0x017E, 0xFF33, 0x017F, - 0xFF34, 0x0180, 0xFF35, 0x0181, 0xFF36, 0x0182, 0xFF37, 0x0183, 0xFF38, - 0x0184, 0xFF39, 0x0185, 0xFF3A, 0x0186, 0xFF3B, 0x35BE, 0xFF3C, 0x0102, - 0xFF3D, 0x35BF, 0xFF3E, 0x35B4, 0xFF3F, 0x00C5, 0xFF41, 0x0187, 0xFF42, - 0x0188, 0xFF43, 0x0189, 0xFF44, 0x018A, 0xFF45, 0x018B, 0xFF46, 0x018C, - 0xFF47, 0x018D, 0xFF48, 0x018E, 0xFF49, 0x018F, 0xFF4A, 0x0190, 0xFF4B, - 0x0191, 0xFF4C, 0x0192, 0xFF4D, 0x0193, 0xFF4E, 0x0194, 0xFF4F, 0x0195, - 0xFF50, 0x0196, 0xFF51, 0x0197, 0xFF52, 0x0198, 0xFF53, 0x0199, 0xFF54, - 0x019A, 0xFF55, 0x019B, 0xFF56, 0x019C, 0xFF57, 0x019D, 0xFF58, 0x019E, - 0xFF59, 0x019F, 0xFF5A, 0x01A0, 0xFF5B, 0x0084, 0xFF5C, 0x0078, 0xFF5D, - 0x0085, 0xFF5E, 0x00E4, 0xFF64, 0x0071, 0xFFE0, 0x0106, 0xFFE1, 0x0107, - 0xFFE2, 0x36E1, 0xFFE3, 0x00C4, 0xFFE4, 0x36E2, 0xFFE5, 0x0104, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp b/core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp deleted file mode 100644 index b28c6bc13d..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h" - -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). -#include "core/src/fpdfapi/fpdf_cmaps/cmap_int.h" -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -static const FXCMAP_CMap g_FXCMAP_CNS1_cmaps[] = { - {"B5pc-H", FXCMAP_CMap::Range, g_FXCMAP_B5pc_H_0, 247, FXCMAP_CMap::None, - NULL, 0, 0}, - {"B5pc-V", FXCMAP_CMap::Range, g_FXCMAP_B5pc_V_0, 12, FXCMAP_CMap::None, - NULL, 0, -1}, - {"HKscs-B5-H", FXCMAP_CMap::Range, g_FXCMAP_HKscs_B5_H_5, 1210, - FXCMAP_CMap::None, NULL, 0, 0}, - {"HKscs-B5-V", FXCMAP_CMap::Range, g_FXCMAP_HKscs_B5_V_5, 13, - FXCMAP_CMap::None, NULL, 0, -1}, - {"ETen-B5-H", FXCMAP_CMap::Range, g_FXCMAP_ETen_B5_H_0, 254, - FXCMAP_CMap::None, NULL, 0, 0}, - {"ETen-B5-V", FXCMAP_CMap::Range, g_FXCMAP_ETen_B5_V_0, 13, - FXCMAP_CMap::None, NULL, 0, -1}, - {"ETenms-B5-H", FXCMAP_CMap::Range, g_FXCMAP_ETenms_B5_H_0, 1, - FXCMAP_CMap::None, NULL, 0, -2}, - {"ETenms-B5-V", FXCMAP_CMap::Range, g_FXCMAP_ETenms_B5_V_0, 18, - FXCMAP_CMap::None, NULL, 0, -1}, - {"CNS-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_H_0, 157, - FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_H_0_DWord, 238, 0}, - {"CNS-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_V_0, 180, - FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_V_0_DWord, 261, 0}, - {"UniCNS-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_H_3, 16418, - FXCMAP_CMap::None, NULL, 0, 0}, - {"UniCNS-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_V_3, 13, - FXCMAP_CMap::None, NULL, 0, -1}, - {"UniCNS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniCNS_UTF16_H_0, 14557, - FXCMAP_CMap::None, NULL, 0, 0}, - {"UniCNS-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_V_3, 13, - FXCMAP_CMap::None, NULL, 0, -1}, -}; - -void CPDF_ModuleMgr::LoadEmbeddedCNS1CMaps() { - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - pFontGlobals->m_EmbeddedCharsets[CIDSET_CNS1].m_pMapList = - g_FXCMAP_CNS1_cmaps; - pFontGlobals->m_EmbeddedCharsets[CIDSET_CNS1].m_Count = - FX_ArraySize(g_FXCMAP_CNS1_cmaps); - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_CNS1].m_pMap = - g_FXCMAP_CNS1CID2Unicode_5; - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_CNS1].m_Count = 19088; -} diff --git a/core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h b/core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h deleted file mode 100644 index 8edd85c633..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_ -#define CORE_SRC_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_ - -#include "core/include/fxcrt/fx_system.h" // For FX_WORD. - -extern const FX_WORD g_FXCMAP_B5pc_H_0[]; -extern const FX_WORD g_FXCMAP_B5pc_V_0[]; -extern const FX_WORD g_FXCMAP_HKscs_B5_H_5[]; -extern const FX_WORD g_FXCMAP_HKscs_B5_V_5[]; -extern const FX_WORD g_FXCMAP_ETen_B5_H_0[]; -extern const FX_WORD g_FXCMAP_ETen_B5_V_0[]; -extern const FX_WORD g_FXCMAP_ETenms_B5_H_0[]; -extern const FX_WORD g_FXCMAP_ETenms_B5_V_0[]; -extern const FX_WORD g_FXCMAP_CNS_EUC_H_0[]; -extern const FX_WORD g_FXCMAP_CNS_EUC_H_0_DWord[]; -extern const FX_WORD g_FXCMAP_CNS_EUC_V_0[]; -extern const FX_WORD g_FXCMAP_CNS_EUC_V_0_DWord[]; -extern const FX_WORD g_FXCMAP_UniCNS_UCS2_H_3[]; -extern const FX_WORD g_FXCMAP_UniCNS_UCS2_V_3[]; -extern const FX_WORD g_FXCMAP_UniCNS_UTF16_H_0[]; -extern const FX_WORD g_FXCMAP_CNS1CID2Unicode_5[]; - -#endif // CORE_SRC_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_ diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp deleted file mode 100644 index c078ea8b2e..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp +++ /dev/null @@ -1,3375 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GB1CID2Unicode_5[30284] = { - 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, - 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, - 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, - 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, - 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x3000, 0x3001, 0x3002, - 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014, 0xFF5E, 0x2016, - 0x2026, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, - 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, - 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F, - 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312, - 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, 0x2260, - 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, 0x2642, 0x2640, - 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, 0xFFE0, 0xFFE1, 0x2030, - 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, - 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, - 0x3013, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, - 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, - 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, - 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, - 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, - 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x3220, 0x3221, 0x3222, - 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x2160, 0x2161, - 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, - 0x216B, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, 0xFF08, - 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11, - 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A, - 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23, - 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, - 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, - 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, - 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, - 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, - 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, - 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0x3041, 0x3042, 0x3043, 0x3044, - 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, - 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, - 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, - 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, - 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, - 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, - 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, - 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, - 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, - 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, - 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, - 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, - 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, - 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, - 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, - 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, - 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, - 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, - 0x30F4, 0x30F5, 0x30F6, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, - 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, - 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, - 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, - 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0xFF0C, 0x3002, 0x3001, - 0xFF1A, 0xFF1B, 0xFF01, 0xFF1F, 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, - 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0x3016, 0x3017, - 0xFE3B, 0xFE3C, 0xFE37, 0xFE38, 0xFE31, 0x2026, 0xFE33, 0xFE34, 0x0410, - 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, - 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, - 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, - 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, - 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, - 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, - 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, - 0x044E, 0x044F, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, - 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, - 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, - 0x00EA, 0x0251, 0x1E3F, 0x0144, 0x0148, 0x01F9, 0x0261, 0x3105, 0x3106, - 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, - 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, - 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, - 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0xE7CD, - 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, - 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, - 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, - 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, - 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, - 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, - 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, - 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, - 0x2548, 0x2549, 0x254A, 0x254B, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, - 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, - 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, - 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, - 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, - 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, - 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, - 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0101, - 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B, 0x00ED, - 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, - 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, 0x1E3F, - 0x0144, 0x0148, 0x01F9, 0x0261, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, - 0x5509, 0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, - 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA, - 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, 0x8884, - 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, 0x53ED, 0x5427, - 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, 0x9776, 0x628A, 0x8019, - 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70, - 0x8D25, 0x62DC, 0x7A17, 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, - 0x677F, 0x7248, 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, - 0x90A6, 0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, - 0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, 0x8584, - 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, 0x66B4, 0x8C79, - 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, 0x5317, 0x8F88, 0x80CC, - 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, - 0x82EF, 0x672C, 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, - 0x903C, 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, - 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A, - 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16, - 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, 0x904D, - 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, 0x762A, 0x5F6C, - 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, 0x51B0, 0x67C4, 0x4E19, - 0x79C9, 0x997C, 0x70B3, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, - 0x94B5, 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B, - 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA, - 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6, - 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69, - 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, 0x707F, - 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, - 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, - 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, - 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17, - 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316, 0x573A, 0x5C1D, - 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021, - 0x8D85, 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, - 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, - 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, - 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA, - 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 0x6C60, - 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5, - 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C, - 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11, - 0x81ED, 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, - 0x9664, 0x695A, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3, - 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, 0x7A97, - 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, 0x9524, 0x5782, - 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0, - 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64, - 0x523A, 0x8D50, 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, - 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, - 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, - 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE, - 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, 0x5E26, - 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E, 0x6020, 0x803D, 0x62C5, - 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, - 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, - 0x5200, 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, - 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B, - 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C, - 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, 0x8482, - 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, 0x6EC7, 0x7898, - 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, 0x7538, 0x5E97, 0x60E6, - 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, - 0x540A, 0x9493, 0x8C03, 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, - 0x53E0, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A, - 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97, - 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017, - 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, 0x7779, - 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, - 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, - 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, - 0x54C6, 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241, - 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25, - 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F, - 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, - 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, - 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, - 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F, - 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, 0x5561, - 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39, - 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E, - 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB, - 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, - 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, - 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D, - 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF, - 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986, - 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC, - 0x8BA3, 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, - 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, - 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, - 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8, - 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, 0x6B4C, - 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, 0x845B, 0x683C, - 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF, - 0x8015, 0x66F4, 0x5E9A, 0x7FB9, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, - 0x529F, 0x606D, 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, - 0x6C5E, 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7, - 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30, - 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, 0x80A1, - 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, 0x5BE1, 0x6302, - 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, 0x5B98, 0x51A0, 0x89C2, - 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, - 0x7470, 0x89C4, 0x572D, 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, - 0x8BE1, 0x7678, 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, - 0x68CD, 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x9AB8, - 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF, - 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, 0x64BC, - 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, - 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, - 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, - 0x5408, 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64, - 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8, - 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A, - 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019, - 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, 0x8774, - 0x72D0, 0x7CCA, 0x6E56, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, - 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316, - 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 0x6853, - 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3, - 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687, - 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325, - 0x8F89, 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, - 0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, - 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, - 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB, - 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95, 0x808C, 0x9965, - 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781, - 0x68D8, 0x8F91, 0x7C4D, 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, - 0x5AC9, 0x7EA7, 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, - 0x5B63, 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, - 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7, - 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, 0x94BE, - 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, 0x76D1, 0x575A, - 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, 0x8270, 0x5978, 0x7F04, - 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED, - 0x526A, 0x51CF, 0x8350, 0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, - 0x7BAD, 0x4EF6, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7, - 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868, - 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, 0x7126, - 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, 0x6405, 0x94F0, - 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, 0x7F34, 0x7EDE, 0x527F, - 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, - 0x79F8, 0x8857, 0x9636, 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, - 0x776B, 0x7AED, 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, - 0x754C, 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4, - 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB, - 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x5C3D, 0x52B2, 0x8346, - 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, - 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, - 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, - 0x7A76, 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9, - 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8, - 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E, - 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F, - 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, 0x5026, - 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, 0x5014, 0x7235, - 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, - 0x5CFB, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361, - 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8, - 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2, - 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5, - 0x78D5, 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, - 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, - 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, - 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8, - 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50, - 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF, - 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080, 0x9988, 0x6127, 0x6E83, 0x5764, - 0x6606, 0x6346, 0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, - 0x5587, 0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, - 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD, - 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, 0x5ECA, - 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, 0x4F6C, 0x59E5, - 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, 0x956D, 0x857E, 0x78CA, - 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E, - 0x51B7, 0x5398, 0x68A8, 0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, - 0x7406, 0x674E, 0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, - 0x4E3D, 0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0, - 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, 0x4FE9, - 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, 0x5E18, 0x655B, - 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, 0x51C9, 0x6881, 0x7CB1, - 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, - 0x50DA, 0x7597, 0x71CE, 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, - 0x5ED6, 0x6599, 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, - 0x78F7, 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D, - 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC, - 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, 0x69B4, - 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, 0x516D, 0x9F99, - 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, - 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, - 0x7089, 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF, - 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415, - 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B, - 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71, - 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, - 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, - 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, - 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, - 0x7792, 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x8C29, - 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A, - 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38, - 0x4E48, 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, - 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, - 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, - 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73, - 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 0x7EF5, - 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784, - 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF, - 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D, - 0x547D, 0x8C2C, 0x6478, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, - 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE, - 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, 0x6BCD, - 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267, - 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16, - 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320, - 0x8111, 0x607C, 0x95F9, 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, - 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, - 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, - 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A, - 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81, 0x62E7, 0x6CDE, - 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53, 0x519C, 0x5F04, 0x5974, - 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, - 0x8BFA, 0x54E6, 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, - 0x556A, 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, - 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554, - 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486, - 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9, 0x88F4, - 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6, 0x7830, 0x62A8, - 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B, - 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, - 0x7435, 0x6BD7, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB, - 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2, - 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52, - 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761, - 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, 0x6251, - 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, - 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, - 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, - 0x6B67, 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91, - 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14, - 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x6070, 0x6D3D, 0x7275, - 0x6266, 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, - 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, - 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, - 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54, - 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, 0x5207, - 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434, - 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22, - 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7, - 0x5E86, 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, - 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, - 0x6E20, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, 0x6743, - 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A, - 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4, - 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9, - 0x9976, 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, - 0x97E7, 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, - 0x620E, 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, - 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982, - 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, 0x745E, - 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E, - 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1, 0x4F1E, 0x6563, 0x6851, 0x55D3, - 0x4E27, 0x6414, 0x9A9A, 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, - 0x50E7, 0x838E, 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, - 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D, - 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247, - 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, 0x88F3, - 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6, 0x5C11, 0x54E8, - 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C, 0x820D, 0x8D66, 0x6444, - 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, - 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, - 0x80BE, 0x614E, 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3, - 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD, - 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0, - 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, - 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, - 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, - 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, - 0x9996, 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C, - 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F, - 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700, - 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6, - 0x5885, 0x5EB6, 0x6570, 0x6F31, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, - 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, - 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714, - 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B, - 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E, - 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258, - 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3, - 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, - 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, - 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, - 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854, 0x736D, - 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0, 0x915E, - 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B, - 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, - 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, - 0x5510, 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, - 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957, - 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 0x9511, - 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 0x60D5, 0x6D95, - 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, 0x8214, - 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16, - 0x5385, 0x542C, 0x70C3, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, - 0x8247, 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5, - 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F, - 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, 0x571F, - 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, 0x8715, 0x892A, - 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, 0x8131, 0x9E35, 0x9640, - 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, - 0x6D3C, 0x5A03, 0x74E6, 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, - 0x73A9, 0x987D, 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, - 0x60CB, 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789, - 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x5DCD, 0x5FAE, - 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A, 0x6F4D, - 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, - 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, - 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, - 0x543B, 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717, - 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C, - 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E, - 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE, - 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F, 0x8BEF, - 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, - 0x9521, 0x727A, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC, - 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60, - 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E, - 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B, - 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, - 0x54B8, 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, - 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, - 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, - 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7, - 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE, - 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653, 0x5C0F, 0x5B5D, 0x6821, - 0x8096, 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, - 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, - 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, - 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F, - 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, 0x884C, - 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308, - 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x9508, - 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x987B, - 0x5F90, 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, - 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, - 0x7384, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74, - 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB, 0x9A6F, - 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5, 0x538B, 0x62BC, - 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859, - 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, - 0x6DF9, 0x76D0, 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, - 0x960E, 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, - 0x5830, 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4, - 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F, - 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B, 0x6837, - 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0x6447, 0x5C27, 0x9065, 0x7A91, - 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, - 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, - 0x66F3, 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1, - 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0, - 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2, - 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF, - 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, 0x6BC5, - 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, - 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, - 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690, - 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424, - 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C, - 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, - 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, - 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, - 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, - 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206, - 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88, - 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389, - 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108, - 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, - 0x9A6D, 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, - 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1, - 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3, - 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668, - 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838, - 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1, - 0x6512, 0x6682, 0x8D5E, 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, - 0x85FB, 0x67A3, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, - 0x7076, 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, - 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67, 0x94E1, - 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8, 0x8BC8, 0x6458, - 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB, 0x6BE1, 0x8A79, 0x7C98, - 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, - 0x6218, 0x7AD9, 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, - 0x638C, 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, - 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146, - 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517, - 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827, 0x81FB, - 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707, 0x632F, 0x9547, - 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0, 0x4E89, 0x6014, 0x6574, - 0x62EF, 0x6B63, 0x653F, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, - 0x652F, 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7, - 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307, - 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3, - 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28, - 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, 0x949F, - 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, - 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, - 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, - 0x8BDB, 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B, - 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x4F4F, 0x6CE8, - 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0, - 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, - 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, - 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, - 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B, - 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 0x68D5, - 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD, - 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB, - 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6, - 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x4E8D, 0x4E0C, 0x5140, - 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, - 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, - 0x56DF, 0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, - 0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D, - 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 0x5326, - 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x522D, - 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, 0x527D, - 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, - 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, - 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, - 0x4F5D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89, - 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6, - 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8, - 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C, - 0x500C, 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, - 0x507B, 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, - 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, - 0x9FA0, 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914, - 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156, - 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803, - 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0x51C7, 0x5196, 0x51A2, 0x51A5, - 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, - 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, - 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3, - 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C, - 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18, - 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E, - 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D, 0x9622, - 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, - 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, - 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA, - 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3, - 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104, - 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D, - 0x5942, 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, - 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, - 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, - 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B, - 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, 0x576D, - 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4, - 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4, - 0x57EF, 0x57F8, 0x57E4, 0x57DD, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, - 0x581E, 0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, - 0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A, - 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE, - 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC, - 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82CE, 0x82A4, - 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2, - 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, - 0x82E0, 0x82D5, 0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, - 0x8334, 0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, - 0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, 0x8368, - 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378, 0x83B3, - 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6, 0x83A9, - 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, - 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, - 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, - 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451, - 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C, - 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD, - 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0, 0x84A1, - 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538, 0x84F0, - 0x8539, 0x851F, 0x853A, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, - 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4, - 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7, - 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616, - 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958, - 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB, - 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, - 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, - 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, - 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420, - 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496, 0x647A, 0x64B7, - 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509, - 0x6525, 0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, - 0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, - 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, - 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466, - 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, 0x54D3, - 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA, - 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7, - 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527, - 0x552A, 0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, - 0x5550, 0x553C, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, - 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F, - 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, 0x5599, - 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, 0x55D4, 0x55E6, - 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8, - 0x55F5, 0x55E4, 0x8F94, 0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, - 0x55FE, 0x5600, 0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, - 0x5662, 0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, - 0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1, - 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F, - 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0x5E37, 0x5E44, 0x5E54, - 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, - 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, - 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, - 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06, - 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D, - 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73, - 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x5F8C, 0x5F95, - 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD, - 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, - 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, - 0x72FA, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315, - 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357, - 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902, - 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974, 0x9977, - 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, - 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, - 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, - 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1, - 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035, - 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021, - 0x6078, 0x6079, 0x607B, 0x607A, 0x6042, 0x606A, 0x607D, 0x6096, 0x609A, - 0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, - 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, - 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7, - 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, 0x95F3, - 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, 0x9608, 0x960A, - 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, - 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, - 0x6C85, 0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, - 0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, - 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE, - 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E, - 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, 0x6D33, - 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60, - 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, - 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, - 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, - 0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5, - 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2, - 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36, - 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, 0x6F78, - 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, - 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, - 0x7035, 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8, - 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07, - 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3, - 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, 0x9016, 0x9021, - 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, - 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, - 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, - 0x5B71, 0x5C63, 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, - 0x9B3B, 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x5997, - 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE, - 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, 0x5A09, - 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, - 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, - 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, - 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40, - 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75, - 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88, - 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D, - 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, - 0x7EA5, 0x7EA8, 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, - 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1, - 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA, - 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C, - 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21, - 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, - 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, - 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, - 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, - 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A, - 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C, 0x741B, 0x741A, - 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 0x7477, 0x746D, 0x747E, 0x749C, - 0x748E, 0x7480, 0x7481, 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, - 0x74A7, 0x74D2, 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, - 0x6748, 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, - 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8, - 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 0x67DD, - 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, 0x6832, 0x6833, - 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 0x6883, 0x681D, 0x6855, - 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5, - 0x688F, 0x6874, 0x6877, 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, - 0x6920, 0x68F9, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910, - 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998, - 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963, - 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1, - 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17, - 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, - 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, - 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, - 0x6B93, 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71, - 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C, - 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0x8F8D, 0x8F8E, 0x8F8F, - 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, - 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, - 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, - 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635, - 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677, - 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9, - 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48, - 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, 0x89CC, - 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, - 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, - 0x63B0, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9, - 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21, - 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252, - 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A, - 0x80BD, 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, - 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, - 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, - 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C, - 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 0x817D, - 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3, - 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0x81C1, 0x81A6, 0x6B24, 0x6B37, - 0x6B39, 0x6B43, 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, - 0x98DA, 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, - 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C, - 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, 0x70CA, - 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, 0x7168, 0x7145, - 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 0x71B5, 0x71A8, 0x71A0, - 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 0x7228, 0x706C, 0x7118, 0x7166, - 0x71B9, 0x623E, 0x623D, 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, - 0x7949, 0x795B, 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, - 0x7967, 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0, - 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, 0x6106, - 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, 0x8080, 0x807F, - 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, 0x7809, 0x7817, 0x7818, - 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, - 0x783C, 0x7825, 0x782C, 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, - 0x7826, 0x7850, 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, - 0x789C, 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9, - 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B, - 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, 0x7708, - 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751, - 0x7747, 0x7743, 0x775A, 0x7768, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, - 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, - 0x7540, 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58, - 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E, - 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C, - 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C, - 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0, 0x94B2, - 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, - 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, - 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, - 0x94DF, 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x94E9, - 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC, - 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D, - 0x950E, 0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, - 0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, - 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, - 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552, - 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, 0x955F, - 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, - 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7, - 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03, - 0x7A02, 0x7A1E, 0x7A14, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, - 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20, - 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 0x9E36, - 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 0x9E44, 0x9E46, - 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, 0x9E51, 0x9E55, 0x9E57, - 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69, - 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, - 0x75A0, 0x759D, 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, - 0x75B0, 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, - 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605, - 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, 0x761B, 0x763C, - 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, 0x7635, 0x7643, 0x763E, - 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, - 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, - 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, - 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3, - 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919, - 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966, 0x897B, - 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C, - 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800B, - 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, - 0x9880, 0x9883, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B, - 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C, - 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC, - 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5, - 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9, - 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, - 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, - 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, - 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B, - 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764, - 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2, 0x87C6, 0x8788, 0x8785, - 0x87AD, 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, - 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, - 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, - 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04, - 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 0x7B2E, - 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A, - 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72, - 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, - 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, - 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, - 0x7C0B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201, - 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, 0x822F, - 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, 0x8244, 0x8249, - 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, 0x8885, 0x8888, 0x88D8, - 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, - 0x6549, 0x7C91, 0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, - 0x7CC1, 0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, - 0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE, - 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4, - 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, 0x8C49, - 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0x9162, 0x9161, 0x9170, 0x9169, - 0x916F, 0x917D, 0x917E, 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, - 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, - 0x91B4, 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69, - 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE, - 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9, - 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E, - 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, 0x8E49, - 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, - 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, - 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC, - 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF, - 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E, - 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, 0x9F8C, - 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, - 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, - 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, - 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E, - 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8, - 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4, - 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5, - 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, - 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, - 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3, - 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, 0x9ABC, - 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43, - 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955, - 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, - 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, - 0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, - 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, - 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44, 0x3007, - 0xFF5E, 0x2016, 0x3013, 0xFF0E, 0xFF1D, 0xFF3B, 0xFF3D, 0xFFE3, 0x00FC, - 0x00A9, 0x2122, 0x2026, 0x0020, 0x769A, 0x85F9, 0x7919, 0x611B, 0x9AAF, - 0x8956, 0x58E9, 0x7F77, 0x64FA, 0x6557, 0x9812, 0x8FA6, 0x7D46, 0x5E6B, - 0x7D81, 0x938A, 0x8B17, 0x98FD, 0x5BF6, 0x5831, 0x9B91, 0x8F29, 0x8C9D, - 0x92C7, 0x72FD, 0x5099, 0x618A, 0x7DB3, 0x7B46, 0x7562, 0x6583, 0x5E63, - 0x9589, 0x908A, 0x7DE8, 0x8CB6, 0x8B8A, 0x8FAF, 0x8FAE, 0x6A19, 0x9C49, - 0x765F, 0x7015, 0x6FF1, 0x8CD3, 0x64EF, 0x9905, 0x64A5, 0x9262, 0x9251, - 0x99C1, 0x88DC, 0x8CA1, 0x53C3, 0x8836, 0x6B98, 0x615A, 0x6158, 0x71E6, - 0x84BC, 0x8259, 0x5009, 0x6EC4, 0x53A0, 0x5074, 0x6E2C, 0x5C64, 0x8A6B, - 0x6519, 0x647B, 0x87EC, 0x995E, 0x8B92, 0x7E8F, 0x93DF, 0x7523, 0x95E1, - 0x986B, 0x5834, 0x5617, 0x9577, 0x511F, 0x8178, 0x5EE0, 0x66A2, 0x9214, - 0x8ECA, 0x5FB9, 0x5875, 0x9673, 0x896F, 0x7A31, 0x61F2, 0x8AA0, 0x9A01, - 0x9072, 0x99B3, 0x9F52, 0x71BE, 0x885D, 0x87F2, 0x5BF5, 0x7587, 0x8E8A, - 0x7C4C, 0x7DA2, 0x919C, 0x92E4, 0x96DB, 0x790E, 0x5132, 0x89F8, 0x8655, - 0x50B3, 0x7621, 0x95D6, 0x5275, 0x9318, 0x7D14, 0x7DBD, 0x8FAD, 0x8A5E, - 0x8CDC, 0x8070, 0x5F9E, 0x53E2, 0x8EA5, 0x7AC4, 0x932F, 0x9054, 0x5E36, - 0x8CB8, 0x64D4, 0x55AE, 0x9132, 0x64A3, 0x81BD, 0x619A, 0x8A95, 0x5F48, - 0x7576, 0x64CB, 0x9EE8, 0x8569, 0x6A94, 0x6417, 0x5CF6, 0x79B1, 0x5C0E, - 0x71C8, 0x9127, 0x6575, 0x6ECC, 0x905E, 0x7DE0, 0x985B, 0x9EDE, 0x588A, - 0x96FB, 0x6FB1, 0x91E3, 0x8ABF, 0x8ADC, 0x91D8, 0x9802, 0x9320, 0x8A02, - 0x6771, 0x52D5, 0x68DF, 0x51CD, 0x9B25, 0x72A2, 0x7368, 0x8B80, 0x8CED, - 0x934D, 0x935B, 0x65B7, 0x7DDE, 0x968A, 0x5C0D, 0x5678, 0x9813, 0x920D, - 0x596A, 0x58AE, 0x9D5D, 0x984D, 0x8A1B, 0x60E1, 0x9913, 0x5152, 0x723E, - 0x990C, 0x8CB3, 0x767C, 0x7F70, 0x95A5, 0x792C, 0x91E9, 0x7169, 0x7BC4, - 0x8CA9, 0x98EF, 0x8A2A, 0x7D21, 0x98DB, 0x8AB9, 0x5EE2, 0x8CBB, 0x7D1B, - 0x58B3, 0x596E, 0x61A4, 0x7CDE, 0x8C50, 0x6953, 0x92D2, 0x98A8, 0x760B, - 0x99AE, 0x7E2B, 0x8AF7, 0x9CF3, 0x819A, 0x8F3B, 0x64AB, 0x8F14, 0x8CE6, - 0x5FA9, 0x8CA0, 0x8A03, 0x5A66, 0x7E1B, 0x8A72, 0x9223, 0x84CB, 0x5E79, - 0x8D95, 0x8D1B, 0x5CA1, 0x525B, 0x92FC, 0x7DB1, 0x5D17, 0x93AC, 0x64F1, - 0x9D3F, 0x95A3, 0x927B, 0x500B, 0x7D66, 0x9F94, 0x978F, 0x8CA2, 0x920E, - 0x6E9D, 0x69CB, 0x8CFC, 0x8831, 0x9867, 0x526E, 0x95DC, 0x89C0, 0x9928, - 0x6163, 0x8CAB, 0x5EE3, 0x898F, 0x6B78, 0x9F9C, 0x95A8, 0x8ECC, 0x8A6D, - 0x6AC3, 0x8CB4, 0x528A, 0x8F25, 0x934B, 0x570B, 0x904E, 0x99ED, 0x97D3, - 0x6F22, 0x865F, 0x95A1, 0x9DB4, 0x8CC0, 0x8F5F, 0x9D3B, 0x7D05, 0x58FA, - 0x8B77, 0x6EEC, 0x5629, 0x83EF, 0x756B, 0x5283, 0x8A71, 0x61F7, 0x58DE, - 0x6B61, 0x74B0, 0x9084, 0x7DE9, 0x8B0A, 0x63EE, 0x8F1D, 0x8CC4, 0x7A62, - 0x6703, 0x71F4, 0x532F, 0x8AF1, 0x8AA8, 0x7E6A, 0x8477, 0x6E3E, 0x7372, - 0x8CA8, 0x798D, 0x64CA, 0x6A5F, 0x7A4D, 0x9951, 0x8B4F, 0x9DC4, 0x7E3E, - 0x7DDD, 0x6975, 0x8F2F, 0x7D1A, 0x64E0, 0x5E7E, 0x858A, 0x5291, 0x6FDF, - 0x8A08, 0x8A18, 0x969B, 0x7E7C, 0x7D00, 0x593E, 0x83A2, 0x9830, 0x8CC8, - 0x9240, 0x50F9, 0x99D5, 0x6BB2, 0x76E3, 0x5805, 0x7B8B, 0x9593, 0x8271, - 0x7DD8, 0x7E6D, 0x6AA2, 0x9E7C, 0x63C0, 0x64BF, 0x7C21, 0x5109, 0x85A6, - 0x6ABB, 0x9452, 0x8E10, 0x8CE4, 0x898B, 0x9375, 0x8266, 0x528D, 0x991E, - 0x6F38, 0x6FFA, 0x6F97, 0x5C07, 0x6F3F, 0x8523, 0x69F3, 0x596C, 0x8B1B, - 0x91AC, 0x81A0, 0x6F86, 0x9A55, 0x5B0C, 0x652A, 0x9278, 0x77EF, 0x50E5, - 0x9903, 0x7E73, 0x7D5E, 0x8F4E, 0x8F03, 0x968E, 0x7BC0, 0x6F54, 0x7D50, - 0x8AA1, 0x7DCA, 0x9326, 0x50C5, 0x8B39, 0x9032, 0x71FC, 0x76E1, 0x52C1, - 0x8396, 0x9BE8, 0x9A5A, 0x7D93, 0x9838, 0x93E1, 0x5F91, 0x75D9, 0x7AF6, - 0x7CFE, 0x820A, 0x99D2, 0x8209, 0x64DA, 0x92F8, 0x61FC, 0x5287, 0x9D51, - 0x7D79, 0x89BA, 0x8A23, 0x7D76, 0x921E, 0x8ECD, 0x99FF, 0x958B, 0x51F1, - 0x9846, 0x6BBB, 0x8AB2, 0x58BE, 0x61C7, 0x6473, 0x5EAB, 0x8932, 0x8A87, - 0x584A, 0x5108, 0x5BEC, 0x7926, 0x66E0, 0x8667, 0x5DCB, 0x7ABA, 0x994B, - 0x6F70, 0x64F4, 0x95CA, 0x881F, 0x81D8, 0x840A, 0x4F86, 0x8CF4, 0x85CD, - 0x6B04, 0x6514, 0x7C43, 0x95CC, 0x862D, 0x703E, 0x8B95, 0x652C, 0x89BD, - 0x61F6, 0x7E9C, 0x721B, 0x6FEB, 0x6488, 0x52DE, 0x6F87, 0x6A02, 0x9433, - 0x58D8, 0x985E, 0x7C6C, 0x96E2, 0x7055, 0x88CF, 0x9BC9, 0x79AE, 0x9E97, - 0x53B2, 0x52F5, 0x792B, 0x6B77, 0x701D, 0x96B8, 0x5006, 0x806F, 0x84EE, - 0x9023, 0x942E, 0x6190, 0x6F23, 0x7C3E, 0x6582, 0x81C9, 0x93C8, 0x6200, - 0x7149, 0x7DF4, 0x7CE7, 0x5169, 0x8F1B, 0x8AD2, 0x7642, 0x907C, 0x9410, - 0x7375, 0x81E8, 0x9130, 0x9C57, 0x8CC3, 0x9F61, 0x9234, 0x9748, 0x5DBA, - 0x9818, 0x993E, 0x5289, 0x9F8D, 0x807E, 0x56A8, 0x7C60, 0x58DF, 0x650F, - 0x96B4, 0x6A13, 0x5A41, 0x645F, 0x7C0D, 0x8606, 0x76E7, 0x9871, 0x5EEC, - 0x7210, 0x64C4, 0x6EF7, 0x865C, 0x9B6F, 0x8CC2, 0x9332, 0x9678, 0x9A62, - 0x92C1, 0x5C62, 0x7E37, 0x616E, 0x6FFE, 0x7DD1, 0x5DD2, 0x6523, 0x5B7F, - 0x7064, 0x4E82, 0x6384, 0x8F2A, 0x502B, 0x4F96, 0x6DEA, 0x7DB8, 0x8AD6, - 0x863F, 0x7F85, 0x908F, 0x947C, 0x7C6E, 0x9A3E, 0x99F1, 0x7D61, 0x5ABD, - 0x746A, 0x78BC, 0x879E, 0x99AC, 0x99E1, 0x55CE, 0x8CB7, 0x9EA5, 0x8CE3, - 0x9081, 0x779E, 0x9945, 0x883B, 0x6EFF, 0x8B3E, 0x9328, 0x925A, 0x8CBF, - 0x9382, 0x9580, 0x60B6, 0x5011, 0x9333, 0x5922, 0x8B0E, 0x5F4C, 0x8993, - 0x7DBF, 0x7DEC, 0x5EDF, 0x6EC5, 0x61AB, 0x95A9, 0x9CF4, 0x9298, 0x8B2C, - 0x8B00, 0x755D, 0x9209, 0x7D0D, 0x96E3, 0x6493, 0x8166, 0x60F1, 0x9B27, - 0x9912, 0x64EC, 0x81A9, 0x6506, 0x91C0, 0x9CE5, 0x8076, 0x5699, 0x9477, - 0x93B3, 0x6AB8, 0x7370, 0x5BE7, 0x64F0, 0x6FD8, 0x9215, 0x7D10, 0x81BF, - 0x6FC3, 0x8FB2, 0x7627, 0x8AFE, 0x6B50, 0x9DD7, 0x6BC6, 0x5614, 0x6F1A, - 0x76E4, 0x9F90, 0x8CE0, 0x5674, 0x9D6C, 0x9A19, 0x98C4, 0x983B, 0x8CA7, - 0x860B, 0x6191, 0x8A55, 0x6F51, 0x9817, 0x64B2, 0x92EA, 0x50D5, 0x6A38, - 0x8B5C, 0x81CD, 0x9F4A, 0x9A0E, 0x8C48, 0x5553, 0x6C23, 0x8A16, 0x727D, - 0x91FA, 0x925B, 0x9077, 0x7C3D, 0x8B19, 0x9322, 0x9257, 0x6DFA, 0x8B74, - 0x5879, 0x69CD, 0x55C6, 0x58BB, 0x8594, 0x6436, 0x936C, 0x6A4B, 0x55AC, - 0x50D1, 0x7FF9, 0x7AC5, 0x7ACA, 0x6B3D, 0x89AA, 0x5BE2, 0x8F15, 0x6C2B, - 0x50BE, 0x9803, 0x8ACB, 0x6176, 0x74CA, 0x7AAE, 0x8DA8, 0x5340, 0x8EC0, - 0x9A45, 0x9F72, 0x9874, 0x6B0A, 0x52F8, 0x9D72, 0x78BA, 0x8B93, 0x9952, - 0x64FE, 0x7E5E, 0x71B1, 0x97CC, 0x8A8D, 0x7D09, 0x69AE, 0x7D68, 0x8EDF, - 0x92ED, 0x958F, 0x6F64, 0x7051, 0x85A9, 0x9C13, 0x8CFD, 0x5098, 0x55AA, - 0x9A37, 0x6383, 0x6F80, 0x6BBA, 0x7D17, 0x7BE9, 0x66EC, 0x9583, 0x965D, - 0x8D0D, 0x7E55, 0x50B7, 0x8CDE, 0x71D2, 0x7D39, 0x8CD2, 0x6368, 0x651D, - 0x61FE, 0x8A2D, 0x7D33, 0x5BE9, 0x5B38, 0x814E, 0x6EF2, 0x8072, 0x7E69, - 0x52DD, 0x8056, 0x5E2B, 0x7345, 0x6FD5, 0x8A69, 0x6642, 0x8755, 0x5BE6, - 0x8B58, 0x99DB, 0x52E2, 0x9069, 0x91CB, 0x98FE, 0x8996, 0x8A66, 0x58FD, - 0x7378, 0x6A1E, 0x8F38, 0x66F8, 0x8D16, 0x5C6C, 0x8853, 0x6A39, 0x7AEA, - 0x6578, 0x5E25, 0x96D9, 0x8AB0, 0x9806, 0x8AAC, 0x78A9, 0x720D, 0x7D72, - 0x98FC, 0x9B06, 0x8073, 0x616B, 0x980C, 0x8A1F, 0x8AA6, 0x64FB, 0x8607, - 0x8A34, 0x8085, 0x96D6, 0x96A8, 0x7D8F, 0x6B72, 0x5B6B, 0x640D, 0x7E2E, - 0x7463, 0x9396, 0x737A, 0x64BB, 0x81FA, 0x614B, 0x6524, 0x8CAA, 0x7671, - 0x7058, 0x58C7, 0x8B5A, 0x8AC7, 0x5606, 0x6E6F, 0x71D9, 0x6FE4, 0x7E27, - 0x8A0E, 0x9A30, 0x8B04, 0x92BB, 0x984C, 0x9AD4, 0x689D, 0x8CBC, 0x9435, - 0x5EF3, 0x807D, 0x70F4, 0x9285, 0x7D71, 0x982D, 0x5716, 0x5857, 0x5718, - 0x983D, 0x9D15, 0x99B1, 0x99DD, 0x6A62, 0x7AAA, 0x896A, 0x5F4E, 0x7063, - 0x9811, 0x842C, 0x7DB2, 0x97CB, 0x9055, 0x570D, 0x7232, 0x6FF0, 0x7DAD, - 0x8466, 0x5049, 0x50DE, 0x7DEF, 0x8B02, 0x885B, 0x805E, 0x7D0B, 0x7A69, - 0x554F, 0x64BE, 0x8778, 0x6E26, 0x7AA9, 0x55DA, 0x93A2, 0x70CF, 0x8AA3, - 0x7121, 0x856A, 0x5862, 0x9727, 0x52D9, 0x8AA4, 0x932B, 0x72A7, 0x8972, - 0x7FD2, 0x9291, 0x6232, 0x7D30, 0x8766, 0x8F44, 0x5CFD, 0x4FE0, 0x72F9, - 0x5687, 0x9341, 0x9BAE, 0x7E96, 0x8CE2, 0x929C, 0x9591, 0x986F, 0x96AA, - 0x73FE, 0x737B, 0x7E23, 0x9921, 0x61B2, 0x7DAB, 0x9472, 0x9109, 0x8A73, - 0x97FF, 0x9805, 0x856D, 0x56C2, 0x92B7, 0x66C9, 0x562F, 0x5354, 0x633E, - 0x8105, 0x8AE7, 0x5BEB, 0x7009, 0x8B1D, 0x92C5, 0x91C1, 0x8208, 0x92B9, - 0x7D89, 0x9808, 0x8A31, 0x7DD2, 0x7E8C, 0x8ED2, 0x61F8, 0x9078, 0x766C, - 0x7D62, 0x5B78, 0x52DB, 0x8A62, 0x5C0B, 0x99B4, 0x8A13, 0x8A0A, 0x905C, - 0x58D3, 0x9D09, 0x9D28, 0x555E, 0x4E9E, 0x8A1D, 0x95B9, 0x9E7D, 0x56B4, - 0x9854, 0x95BB, 0x8277, 0x53AD, 0x786F, 0x8AFA, 0x9A57, 0x9D26, 0x694A, - 0x63DA, 0x760D, 0x967D, 0x7662, 0x990A, 0x6A23, 0x582F, 0x8B21, 0x85E5, - 0x723A, 0x9801, 0x696D, 0x8449, 0x91AB, 0x92A5, 0x9824, 0x907A, 0x5100, - 0x87FB, 0x85DD, 0x5104, 0x61B6, 0x7FA9, 0x8A63, 0x8B70, 0x8ABC, 0x8B6F, - 0x7E79, 0x852D, 0x9670, 0x9280, 0x98F2, 0x96B1, 0x6AFB, 0x5B30, 0x9DF9, - 0x61C9, 0x7E93, 0x7469, 0x87A2, 0x71DF, 0x7192, 0x8805, 0x8D0F, 0x7A4E, - 0x55B2, 0x64C1, 0x50AD, 0x7670, 0x8E34, 0x512A, 0x6182, 0x90F5, 0x923E, - 0x7336, 0x8A98, 0x8F3F, 0x9918, 0x9B5A, 0x6F01, 0x8207, 0x5DBC, 0x8A9E, - 0x9B31, 0x7344, 0x8B7D, 0x9810, 0x99AD, 0x9D1B, 0x6DF5, 0x8F45, 0x5712, - 0x54E1, 0x5713, 0x7DE3, 0x9060, 0x9858, 0x7D04, 0x8E8D, 0x9470, 0x95B2, - 0x96F2, 0x9116, 0x9695, 0x904B, 0x85F4, 0x9196, 0x6688, 0x96DC, 0x8F09, - 0x6522, 0x66AB, 0x8D0A, 0x8D1C, 0x81DF, 0x947F, 0x68D7, 0x7AC8, 0x8CAC, - 0x64C7, 0x5247, 0x6FA4, 0x8CCA, 0x8D08, 0x8ECB, 0x9358, 0x9598, 0x8A50, - 0x9F4B, 0x50B5, 0x6C08, 0x76DE, 0x65AC, 0x8F3E, 0x5D84, 0x68E7, 0x6230, - 0x7DBB, 0x5F35, 0x6F32, 0x5E33, 0x8CEC, 0x8139, 0x8D99, 0x87C4, 0x8F4D, - 0x937A, 0x9019, 0x8C9E, 0x91DD, 0x5075, 0x8A3A, 0x93AE, 0x9663, 0x5E40, - 0x7665, 0x912D, 0x8B49, 0x7E54, 0x8077, 0x57F7, 0x8879, 0x7D19, 0x646F, - 0x64F2, 0x5E5F, 0x8CEA, 0x6EEF, 0x9418, 0x7D42, 0x7A2E, 0x816B, 0x8846, - 0x8B05, 0x8EF8, 0x76BA, 0x665D, 0x9A5F, 0x8AF8, 0x8A85, 0x71ED, 0x77DA, - 0x56D1, 0x8CAF, 0x9444, 0x7BC9, 0x99D0, 0x5C08, 0x78DA, 0x8F49, 0x8CFA, - 0x6A01, 0x838A, 0x88DD, 0x599D, 0x58EF, 0x72C0, 0x9310, 0x8D05, 0x589C, - 0x7DB4, 0x8AC4, 0x6E96, 0x6FC1, 0x8CC7, 0x6F2C, 0x7D9C, 0x7E3D, 0x7E31, - 0x9112, 0x8A5B, 0x7D44, 0x947D, 0x55C7, 0x5399, 0x53B4, 0x9768, 0x8D0B, - 0x532D, 0x5331, 0x8CFE, 0x5244, 0x528C, 0x5274, 0x50B4, 0x5000, 0x5096, - 0x5115, 0x5102, 0x5114, 0x513C, 0x5137, 0x50E8, 0x50C2, 0x513B, 0x5110, - 0x513A, 0x50C9, 0x7CF4, 0x9ECC, 0x56C5, 0x9CEC, 0x893B, 0x81E0, 0x8A01, - 0x8A10, 0x8A0C, 0x8A15, 0x8B33, 0x8A4E, 0x8A25, 0x8A41, 0x8A36, 0x8A46, - 0x8A54, 0x8A58, 0x8A52, 0x8A86, 0x8A84, 0x8A7F, 0x8A70, 0x8A7C, 0x8A75, - 0x8A6C, 0x8A6E, 0x8ACD, 0x8AE2, 0x8A61, 0x8A9A, 0x8AA5, 0x8A91, 0x8A92, - 0x8ACF, 0x8AD1, 0x8AC9, 0x8ADB, 0x8AD7, 0x8AC2, 0x8AB6, 0x8AF6, 0x8AEB, - 0x8B14, 0x8B01, 0x8AE4, 0x8AED, 0x8AFC, 0x8AF3, 0x8AE6, 0x8AEE, 0x8ADE, - 0x8B28, 0x8B9C, 0x8B16, 0x8B1A, 0x8B10, 0x8B2B, 0x8B2D, 0x8B56, 0x8B59, - 0x8B4E, 0x8B9E, 0x8B6B, 0x8B96, 0x9658, 0x913A, 0x9114, 0x9134, 0x90DF, - 0x9136, 0x9106, 0x9148, 0x82BB, 0x52F1, 0x5DF0, 0x580A, 0x58D9, 0x58E2, - 0x58E0, 0x58DA, 0x57E1, 0x584F, 0x5816, 0x5852, 0x581D, 0x5864, 0x858C, - 0x8553, 0x85F6, 0x83A7, 0x8407, 0x84EF, 0x82E7, 0x8622, 0x8526, 0x584B, - 0x7162, 0x8558, 0x84FD, 0x854E, 0x8588, 0x85BA, 0x7296, 0x6ECE, 0x8541, - 0x85CE, 0x8552, 0x84C0, 0x8452, 0x8464, 0x8494, 0x8435, 0x859F, 0x8555, - 0x9DAF, 0x8493, 0x7E08, 0x8546, 0x8562, 0x851E, 0x9A40, 0x863A, 0x93A3, - 0x8577, 0x861E, 0x85FA, 0x8604, 0x85EA, 0x861A, 0x5969, 0x5C37, 0x636B, - 0x6476, 0x649F, 0x6451, 0x645C, 0x64B3, 0x6504, 0x6516, 0x64F7, 0x64FC, - 0x651B, 0x5630, 0x5638, 0x56C8, 0x56A6, 0x5504, 0x54BC, 0x5680, 0x565D, - 0x5660, 0x5635, 0x55F6, 0x5666, 0x5672, 0x568C, 0x5665, 0x561C, 0x562E, - 0x55E9, 0x5616, 0x56C0, 0x560D, 0x56B3, 0x56C1, 0x566F, 0x8F61, 0x56B6, - 0x5695, 0x5707, 0x5E43, 0x5E6C, 0x5E58, 0x5E57, 0x5D87, 0x5CF4, 0x5D50, - 0x5D2C, 0x5DA7, 0x5DA0, 0x5D97, 0x5D0D, 0x5DB8, 0x5D81, 0x5DD4, 0x5FA0, - 0x7377, 0x7341, 0x736A, 0x733B, 0x736B, 0x7380, 0x737C, 0x98E0, 0x9933, - 0x98E9, 0x993C, 0x98EA, 0x98EB, 0x98ED, 0x98F4, 0x9909, 0x9911, 0x991B, - 0x9937, 0x993F, 0x9943, 0x9948, 0x9949, 0x994A, 0x994C, 0x9962, 0x5EE1, - 0x8CE1, 0x61FA, 0x61AE, 0x616A, 0x613E, 0x60B5, 0x6134, 0x61CC, 0x615F, - 0x61E8, 0x60FB, 0x6137, 0x60F2, 0x6173, 0x611C, 0x6192, 0x9582, 0x9586, - 0x95C8, 0x958E, 0x9594, 0x958C, 0x95E5, 0x95AD, 0x95AB, 0x9B2E, 0x95AC, - 0x95BE, 0x95B6, 0x9B29, 0x95BF, 0x95BD, 0x95BC, 0x95C3, 0x95CB, 0x95D4, - 0x95D0, 0x95D5, 0x95DE, 0x7043, 0x6F59, 0x7027, 0x7018, 0x6FFC, 0x6D87, - 0x6D79, 0x6E5E, 0x6FAE, 0x700F, 0x6EF8, 0x6F6F, 0x6DF6, 0x6F7F, 0x7006, - 0x6FA0, 0x700B, 0x7067, 0x7044, 0x7005, 0x6F77, 0x7020, 0x701F, 0x7032, - 0x7028, 0x705D, 0x9A2B, 0x9087, 0x9015, 0x9090, 0x5C68, 0x5F33, 0x5AF5, - 0x5AD7, 0x5B00, 0x5A6D, 0x5B08, 0x5B4C, 0x5AA7, 0x5AFB, 0x5B0B, 0x5B21, - 0x5B2A, 0x5B19, 0x99D4, 0x99DF, 0x99D9, 0x9A36, 0x9A5B, 0x99D1, 0x99D8, - 0x9A4D, 0x9A4A, 0x99E2, 0x9A6A, 0x9A0F, 0x9A0D, 0x9A05, 0x9A42, 0x9A2D, - 0x9A16, 0x9A41, 0x9A2E, 0x9A38, 0x9A43, 0x9A44, 0x9A4F, 0x9A65, 0x9A64, - 0x7CF9, 0x7D06, 0x7D02, 0x7D07, 0x7D08, 0x7E8A, 0x7D1C, 0x7D15, 0x7D13, - 0x7D3A, 0x7D32, 0x7D31, 0x7E10, 0x7D3C, 0x7D40, 0x7D3F, 0x7D5D, 0x7D4E, - 0x7D73, 0x7D86, 0x7D83, 0x7D88, 0x7DBE, 0x7DBA, 0x7DCB, 0x7DD4, 0x7DC4, - 0x7D9E, 0x7DAC, 0x7DB9, 0x7DA3, 0x7DB0, 0x7DC7, 0x7DD9, 0x7DD7, 0x7DF9, - 0x7DF2, 0x7E62, 0x7DE6, 0x7DF6, 0x7DF1, 0x7E0B, 0x7DE1, 0x7E09, 0x7E1D, - 0x7E1F, 0x7E1E, 0x7E2D, 0x7E0A, 0x7E11, 0x7E7D, 0x7E39, 0x7E35, 0x7E32, - 0x7E46, 0x7E45, 0x7E88, 0x7E5A, 0x7E52, 0x7E6E, 0x7E7E, 0x7E70, 0x7E6F, - 0x7E98, 0x74A3, 0x744B, 0x74CF, 0x980A, 0x74BD, 0x743F, 0x7489, 0x74A6, - 0x74D4, 0x74DA, 0x97D9, 0x97DE, 0x97DC, 0x69AA, 0x6AEA, 0x6898, 0x68D6, - 0x6A05, 0x689F, 0x6ADB, 0x6AF3, 0x6AE8, 0x6ADF, 0x6A89, 0x690F, 0x6A48, - 0x6968, 0x69BF, 0x6A3A, 0x6A9C, 0x6B12, 0x6B1E, 0x6ADD, 0x69E7, 0x6B0F, - 0x6B16, 0x6AEC, 0x6ADA, 0x6AF8, 0x6AB3, 0x6AE7, 0x6AA3, 0x6AD3, 0x6ADE, - 0x6BA4, 0x6B9E, 0x6BAE, 0x6BAB, 0x6BAF, 0x8ED4, 0x8EDB, 0x8EF2, 0x8EFB, - 0x8F64, 0x8EF9, 0x8EFC, 0x8EEB, 0x8EE4, 0x8F62, 0x8EFA, 0x8EFE, 0x8F0A, - 0x8F07, 0x8F05, 0x8F12, 0x8F26, 0x8F1E, 0x8F1F, 0x8F1C, 0x8F33, 0x8F46, - 0x8F54, 0x6214, 0x6227, 0x750C, 0x66C7, 0x66C4, 0x6689, 0x66D6, 0x8CC1, - 0x8CB0, 0x8CBA, 0x8CBD, 0x8D04, 0x8CB2, 0x8CC5, 0x8D10, 0x8CD1, 0x8CDA, - 0x8CD5, 0x8CEB, 0x8CE7, 0x8CFB, 0x8998, 0x89AC, 0x89A1, 0x89BF, 0x89A6, - 0x89AF, 0x89B2, 0x89B7, 0x6BFF, 0x6C0C, 0x6C2C, 0x7258, 0x6727, 0x8156, - 0x81DA, 0x811B, 0x81BE, 0x8161, 0x81CF, 0x6B5F, 0x98AE, 0x98AF, 0x98B6, - 0x98BC, 0x98C6, 0x98C8, 0x8F42, 0x9F4F, 0x6595, 0x716C, 0x7152, 0x7197, - 0x71C1, 0x71DC, 0x71FE, 0x79B0, 0x798E, 0x79AA, 0x61DF, 0x6164, 0x61E3, - 0x6207, 0x6FA9, 0x78EF, 0x78AD, 0x7868, 0x78B8, 0x792A, 0x7931, 0x7864, - 0x78FD, 0x78E7, 0x78E3, 0x9F95, 0x7798, 0x775E, 0x77BC, 0x7F86, 0x7F88, - 0x91D2, 0x91D3, 0x91D4, 0x91D9, 0x91D7, 0x91D5, 0x91F7, 0x91E7, 0x91E4, - 0x9346, 0x91F5, 0x91F9, 0x9208, 0x9226, 0x9245, 0x9211, 0x9210, 0x9201, - 0x9227, 0x9204, 0x9225, 0x9200, 0x923A, 0x9266, 0x9237, 0x9233, 0x9255, - 0x923D, 0x9238, 0x925E, 0x926C, 0x926D, 0x923F, 0x9460, 0x9230, 0x9249, - 0x9248, 0x924D, 0x922E, 0x9239, 0x9438, 0x92AC, 0x92A0, 0x927A, 0x92AA, - 0x92EE, 0x92CF, 0x9403, 0x92E3, 0x943A, 0x92B1, 0x92A6, 0x93A7, 0x9296, - 0x92CC, 0x92A9, 0x93F5, 0x9293, 0x927F, 0x93A9, 0x929A, 0x931A, 0x92AB, - 0x9283, 0x940B, 0x92A8, 0x92A3, 0x9412, 0x9338, 0x92F1, 0x93D7, 0x92E5, - 0x92F0, 0x92EF, 0x92E8, 0x92BC, 0x92DD, 0x92F6, 0x9426, 0x9427, 0x92C3, - 0x92DF, 0x92E6, 0x9312, 0x9306, 0x9369, 0x931B, 0x9340, 0x9301, 0x9315, - 0x932E, 0x9343, 0x9307, 0x9308, 0x931F, 0x9319, 0x9365, 0x9347, 0x9376, - 0x9354, 0x9364, 0x93AA, 0x9370, 0x9384, 0x93E4, 0x93D8, 0x9428, 0x9387, - 0x93CC, 0x9398, 0x93B8, 0x93BF, 0x93A6, 0x93B0, 0x93B5, 0x944C, 0x93E2, - 0x93DC, 0x93DD, 0x93CD, 0x93DE, 0x93C3, 0x93C7, 0x93D1, 0x9414, 0x941D, - 0x93F7, 0x9465, 0x9413, 0x946D, 0x9420, 0x9479, 0x93F9, 0x9419, 0x944A, - 0x9432, 0x943F, 0x9454, 0x9463, 0x937E, 0x7A61, 0x9CE9, 0x9CF6, 0x9D07, - 0x9D06, 0x9D23, 0x9D87, 0x9E15, 0x9D1D, 0x9D1F, 0x9DE5, 0x9D2F, 0x9DD9, - 0x9D30, 0x9D42, 0x9E1E, 0x9D53, 0x9E1D, 0x9D60, 0x9D52, 0x9DF3, 0x9D5C, - 0x9D61, 0x9D93, 0x9D6A, 0x9D6F, 0x9D89, 0x9D98, 0x9D9A, 0x9DC0, 0x9DA5, - 0x9DA9, 0x9DC2, 0x9DBC, 0x9E1A, 0x9DD3, 0x9DDA, 0x9DEF, 0x9DE6, 0x9DF2, - 0x9DF8, 0x9E0C, 0x9DFA, 0x9E1B, 0x7664, 0x7658, 0x7667, 0x7602, 0x7646, - 0x7647, 0x7649, 0x761E, 0x763B, 0x766D, 0x766E, 0x7669, 0x7672, 0x7AC7, - 0x7AB6, 0x8960, 0x8933, 0x895D, 0x8947, 0x8938, 0x8964, 0x76B8, 0x802E, - 0x802C, 0x8079, 0x8075, 0x9807, 0x980E, 0x980F, 0x9821, 0x981C, 0x6F41, - 0x9826, 0x9837, 0x984E, 0x9853, 0x9873, 0x9862, 0x9859, 0x9865, 0x986C, - 0x9870, 0x87E3, 0x8806, 0x8706, 0x8823, 0x87F6, 0x86FA, 0x87EF, 0x8784, - 0x8810, 0x87C8, 0x8811, 0x87BB, 0x87CE, 0x7F4C, 0x7BE4, 0x7B67, 0x7C69, - 0x7BF3, 0x7C00, 0x7BCB, 0x7C5C, 0x7C1E, 0x7C2B, 0x7C23, 0x7C6A, 0x7C5F, - 0x8264, 0x826B, 0x88CA, 0x7FA5, 0x7CF2, 0x7CF6, 0x7CDD, 0x7E36, 0x9EA9, - 0x8DB2, 0x91C5, 0x91C3, 0x9E7A, 0x8E89, 0x8E4C, 0x8E92, 0x8E7A, 0x8E55, - 0x8E9A, 0x8E8B, 0x8E93, 0x8E91, 0x8EA1, 0x8E63, 0x8EAA, 0x8EA6, 0x89F4, - 0x89F6, 0x975A, 0x9742, 0x973D, 0x9744, 0x9F54, 0x9F5F, 0x9F59, 0x9F60, - 0x9F5C, 0x9F66, 0x9F6C, 0x9F6A, 0x9F77, 0x9EFD, 0x9EFF, 0x9F09, 0x8B8E, - 0x947E, 0x93E8, 0x9B77, 0x9B74, 0x9B81, 0x9B83, 0x9B8E, 0x9C78, 0x7A4C, - 0x9B92, 0x9C5F, 0x9B90, 0x9BAD, 0x9B9A, 0x9BAA, 0x9B9E, 0x9C6D, 0x9BAB, - 0x9B9D, 0x9C58, 0x9BC1, 0x9C7A, 0x9C31, 0x9C39, 0x9C23, 0x9C37, 0x9BC0, - 0x9BCA, 0x9BC7, 0x9BFD, 0x9BD6, 0x9BEA, 0x9BEB, 0x9BE1, 0x9BE4, 0x9BE7, - 0x9BDD, 0x9BE2, 0x9BF0, 0x9BDB, 0x9BF4, 0x9BD4, 0x9C5D, 0x9C08, 0x9C10, - 0x9C0D, 0x9C12, 0x9C09, 0x9BFF, 0x9C20, 0x9C32, 0x9C2D, 0x9C28, 0x9C25, - 0x9C29, 0x9C33, 0x9C3E, 0x9C48, 0x9C3B, 0x9C35, 0x9C45, 0x9C56, 0x9C54, - 0x9C52, 0x9C67, 0x97C3, 0x97BD, 0x97C9, 0x9DBB, 0x9ACF, 0x9AD6, 0x9AD5, - 0x9B58, 0x9B4E, 0x9957, 0x995C, 0x9B22, 0x9EF7, 0x9EF2, 0x896C, 0x95C6, - 0x9336, 0x5F46, 0x8514, 0x7E94, 0x9F63, 0x5679, 0x9F15, 0x5641, 0x9AEE, - 0x8907, 0x7A40, 0x98B3, 0x95A4, 0x9B0D, 0x8FF4, 0x5F59, 0x7A6B, 0x98E2, - 0x50A2, 0x8591, 0x5118, 0x6372, 0x524B, 0x774F, 0x7E8D, 0x66C6, 0x77AD, - 0x9E75, 0x56C9, 0x9EF4, 0x6FDB, 0x61DE, 0x77C7, 0x7030, 0x9EB5, 0x884A, - 0x95E2, 0x97C6, 0x7C64, 0x7E34, 0x97A6, 0x9EAF, 0x56CC, 0x98B1, 0x6AAF, - 0x7F4E, 0x7CF0, 0x4FC2, 0x7E6B, 0x9E79, 0x56AE, 0x9B1A, 0x846F, 0x79A6, - 0x7C72, 0x9AD2, 0x96BB, 0x7DFB, 0x88FD, 0x7843, 0x2170, 0x2171, 0x2172, - 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x02CA, 0x02CB, - 0x02D9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, 0x2197, - 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, 0x2252, 0x2266, 0x2267, 0x22BF, - 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, - 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, - 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, - 0x256B, 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573, - 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x2589, - 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F, 0x2593, 0x2594, 0x2595, - 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012, - 0x301D, 0x301E, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, - 0x3028, 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1, - 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, 0x2121, - 0x3231, 0x2010, 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, - 0x309E, 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50, - 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A, 0xFE5B, - 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0xFE62, 0xFE63, 0xFE64, - 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, 0x303E, 0x2FF0, 0x2FF1, - 0x2FF2, 0x2FF3, 0x2FF4, 0x2FF5, 0x2FF6, 0x2FF7, 0x2FF8, 0x2FF9, 0x2FFA, - 0x2FFB, 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F, - 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, 0x4E33, - 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, 0x4E46, 0x4E4A, - 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, 0x4E63, 0x4E64, 0x4E65, - 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C, 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, - 0x4E74, 0x4E75, 0x4E76, 0x4E77, 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, - 0x4E7D, 0x4E7F, 0x4E80, 0x4E81, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A, - 0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4EA3, 0x4EAA, 0x4EAF, - 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9, 0x4EBC, 0x4EBD, - 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC, - 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, - 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, - 0x4F04, 0x4F05, 0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, - 0x4F14, 0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29, - 0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B, - 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0x4F47, 0x4F48, - 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56, 0x4F61, 0x4F62, - 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E, 0x4F71, 0x4F72, 0x4F75, - 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85, - 0x4F87, 0x4F8A, 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F98, - 0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0x4FA4, 0x4FAB, - 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0x4FB6, 0x4FB7, 0x4FB8, - 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC6, - 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, - 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB, - 0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB, - 0x4FFC, 0x4FFD, 0x4FFF, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5007, - 0x5008, 0x500A, 0x500E, 0x5010, 0x5013, 0x5015, 0x5016, 0x5017, 0x501B, - 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502F, 0x5030, - 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038, 0x5039, - 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, - 0x504A, 0x504B, 0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, - 0x5057, 0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061, - 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A, 0x506B, - 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073, 0x5078, 0x5079, - 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, - 0x5089, 0x508A, 0x508B, 0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092, - 0x5093, 0x5094, 0x5095, 0x5097, 0x509A, 0x509B, 0x509C, 0x509D, 0x509E, - 0x509F, 0x50A0, 0x50A1, 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AE, 0x50AF, - 0x50B0, 0x50B1, 0x50B6, 0x50B8, 0x50B9, 0x50BC, 0x50BD, 0x50BF, 0x50C0, - 0x50C1, 0x50C3, 0x50C4, 0x50C6, 0x50C7, 0x50C8, 0x50CA, 0x50CB, 0x50CC, - 0x50CD, 0x50CE, 0x50D0, 0x50D2, 0x50D3, 0x50D4, 0x50D7, 0x50D8, 0x50D9, - 0x50DB, 0x50DC, 0x50DD, 0x50DF, 0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4, - 0x50E9, 0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6, - 0x50F7, 0x50F8, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF, 0x5101, 0x5103, - 0x5105, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5111, 0x5113, 0x5116, - 0x5117, 0x5119, 0x511A, 0x511B, 0x511C, 0x511D, 0x511E, 0x5120, 0x5122, - 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512B, 0x512C, - 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5133, 0x5134, 0x5135, 0x5136, - 0x5138, 0x5139, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E, - 0x514F, 0x5150, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, 0x515D, 0x515E, - 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x516A, 0x516F, - 0x5172, 0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, 0x5187, 0x518A, - 0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A, - 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9, - 0x51AA, 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF, - 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CE, 0x51D0, 0x51D2, - 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7, 0x51D8, 0x51D9, 0x51DA, 0x51DC, - 0x51DE, 0x51DF, 0x51E2, 0x51E3, 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, - 0x51EA, 0x51EC, 0x51EE, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, - 0x5209, 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C, - 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522A, - 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, 0x523E, 0x5245, - 0x5246, 0x5248, 0x5249, 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, - 0x5258, 0x5259, 0x525A, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, 0x5264, - 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x5270, 0x5271, 0x5273, 0x5276, - 0x5277, 0x5278, 0x5279, 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5284, - 0x5285, 0x5286, 0x528B, 0x528E, 0x528F, 0x5292, 0x5294, 0x5295, 0x5296, - 0x5297, 0x5298, 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, - 0x52AE, 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9, - 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C2, 0x52C4, 0x52C5, 0x52C6, - 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, 0x52D1, 0x52D3, 0x52D4, - 0x52D7, 0x52DA, 0x52DC, 0x52E0, 0x52E1, 0x52E3, 0x52E5, 0x52E6, 0x52E7, - 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED, 0x52EE, 0x52EF, 0x52F2, - 0x52F3, 0x52F4, 0x52F6, 0x52F7, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, - 0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E, 0x5311, - 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E, 0x531F, 0x5322, - 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, 0x532C, 0x5330, 0x5332, - 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5342, - 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5358, 0x5359, 0x535B, - 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D, 0x5372, 0x5376, 0x5379, - 0x537B, 0x537C, 0x537D, 0x537E, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388, - 0x538A, 0x538E, 0x538F, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, - 0x5397, 0x539B, 0x539C, 0x539E, 0x53A1, 0x53A4, 0x53A7, 0x53AA, 0x53AB, - 0x53AC, 0x53AF, 0x53B0, 0x53B1, 0x53B3, 0x53B5, 0x53B7, 0x53B8, 0x53B9, - 0x53BA, 0x53BC, 0x53BD, 0x53BE, 0x53C0, 0x53C4, 0x53C5, 0x53C6, 0x53C7, - 0x53CE, 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD, - 0x53DE, 0x53E1, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, 0x5400, 0x5402, - 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, 0x541A, 0x541C, 0x5422, - 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, 0x5436, 0x5437, 0x543A, 0x543D, - 0x543F, 0x5441, 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, - 0x544E, 0x544F, 0x5451, 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, - 0x5463, 0x5465, 0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, - 0x546F, 0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483, - 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, 0x5497, - 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1, 0x54A2, 0x54A5, 0x54AE, - 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, 0x54B9, 0x54BA, 0x54BE, 0x54C3, - 0x54C5, 0x54CA, 0x54CB, 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E2, 0x54E3, - 0x54E4, 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6, - 0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, 0x5505, - 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, 0x5512, 0x5513, 0x5515, - 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, 0x551C, 0x551D, 0x551E, 0x551F, - 0x5521, 0x5525, 0x5526, 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, - 0x5535, 0x5536, 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, - 0x5545, 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x5551, 0x5552, - 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B, 0x555D, 0x555F, 0x5560, - 0x5562, 0x5563, 0x5568, 0x5569, 0x556B, 0x556F, 0x5570, 0x5571, 0x5572, - 0x5573, 0x5574, 0x5579, 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, - 0x558D, 0x558E, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, - 0x559B, 0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6, - 0x55A8, 0x55A9, 0x55AB, 0x55AD, 0x55AF, 0x55B0, 0x55B4, 0x55B6, 0x55B8, - 0x55BA, 0x55BC, 0x55BF, 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C8, 0x55CA, - 0x55CB, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, 0x55DB, 0x55DE, - 0x55E0, 0x55E2, 0x55E7, 0x55ED, 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F8, - 0x55F9, 0x55FA, 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605, - 0x5607, 0x560A, 0x560B, 0x5610, 0x5611, 0x5612, 0x5613, 0x5615, 0x5619, - 0x561A, 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x562A, - 0x562B, 0x5633, 0x5637, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5642, - 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A, 0x564B, - 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B, - 0x565E, 0x565F, 0x5661, 0x5663, 0x5667, 0x566D, 0x566E, 0x5670, 0x5673, - 0x5675, 0x5677, 0x567A, 0x567D, 0x567E, 0x567F, 0x5681, 0x5682, 0x5683, - 0x5684, 0x5688, 0x5689, 0x568A, 0x568B, 0x568D, 0x5690, 0x5691, 0x5692, - 0x5694, 0x5696, 0x5697, 0x5698, 0x569A, 0x569B, 0x569C, 0x569D, 0x569E, - 0x569F, 0x56A0, 0x56A1, 0x56A2, 0x56A4, 0x56A5, 0x56A7, 0x56A9, 0x56AA, - 0x56AB, 0x56AC, 0x56AD, 0x56B0, 0x56B1, 0x56B2, 0x56B5, 0x56B8, 0x56B9, - 0x56BA, 0x56BB, 0x56BD, 0x56BE, 0x56BF, 0x56C3, 0x56C4, 0x56C6, 0x56C7, - 0x56CB, 0x56CD, 0x56CE, 0x56CF, 0x56D0, 0x56D2, 0x56D3, 0x56D5, 0x56D6, - 0x56D8, 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9, - 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, 0x56F8, - 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x570C, 0x570E, 0x570F, - 0x5710, 0x5711, 0x5714, 0x5715, 0x5717, 0x5719, 0x571A, 0x571B, 0x571D, - 0x571E, 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B, - 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, - 0x573F, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, - 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, - 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775, - 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780, 0x5781, 0x5787, - 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F, 0x5790, 0x5791, 0x5794, - 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579A, 0x579C, 0x579D, 0x579E, - 0x579F, 0x57A5, 0x57A8, 0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, - 0x57B5, 0x57B6, 0x57B7, 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, - 0x57BF, 0x57C0, 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, - 0x57CA, 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB, - 0x57DC, 0x57DE, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7, 0x57E8, 0x57E9, - 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1, 0x57F2, 0x57F3, 0x57F5, - 0x57F6, 0x57FB, 0x57FC, 0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, 0x5808, - 0x5809, 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5817, - 0x5818, 0x581A, 0x581B, 0x581C, 0x581F, 0x5822, 0x5823, 0x5825, 0x5826, - 0x5827, 0x5828, 0x5829, 0x582B, 0x582C, 0x582D, 0x582E, 0x5832, 0x5833, - 0x5836, 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D, 0x583E, - 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, 0x5847, 0x5848, - 0x5849, 0x584E, 0x5850, 0x5853, 0x5855, 0x5856, 0x5859, 0x585A, 0x585B, - 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5863, 0x5866, 0x5867, 0x5868, - 0x5869, 0x586A, 0x586D, 0x586E, 0x586F, 0x5870, 0x5871, 0x5872, 0x5873, - 0x5874, 0x5876, 0x5877, 0x5878, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, - 0x5882, 0x5884, 0x5886, 0x5887, 0x5888, 0x588B, 0x588C, 0x588D, 0x588E, - 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589B, - 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, - 0x58AA, 0x58AB, 0x58AC, 0x58AD, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B4, - 0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BD, 0x58BF, 0x58C0, - 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC, - 0x58CD, 0x58CE, 0x58CF, 0x58D0, 0x58D2, 0x58D4, 0x58D6, 0x58D7, 0x58DB, - 0x58DC, 0x58DD, 0x58E1, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58EA, - 0x58ED, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0x58FB, 0x58FC, - 0x58FE, 0x58FF, 0x5900, 0x5901, 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, - 0x590A, 0x590B, 0x590C, 0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, - 0x5918, 0x591B, 0x591D, 0x591E, 0x5920, 0x5921, 0x5923, 0x5926, 0x5928, - 0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B, 0x593D, 0x593F, - 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, 0x594C, 0x594D, 0x5950, 0x5952, - 0x5953, 0x5959, 0x595B, 0x595C, 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, - 0x5964, 0x5966, 0x5967, 0x5968, 0x596B, 0x596D, 0x596F, 0x5970, 0x5971, - 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F, 0x5980, - 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990, 0x5991, 0x5994, - 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599F, 0x59A0, 0x59A1, 0x59A2, - 0x59A6, 0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5, - 0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, 0x59C1, - 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD, - 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, 0x59E0, - 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, 0x59EB, 0x59ED, - 0x59EE, 0x59EF, 0x59F0, 0x59F1, 0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6, - 0x59F7, 0x59F8, 0x59FA, 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, - 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16, - 0x5A17, 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24, - 0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, 0x5A2F, - 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D, - 0x5A3E, 0x5A3F, 0x5A42, 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0x5A4B, - 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, 0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54, - 0x5A56, 0x5A57, 0x5A58, 0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F, - 0x5A60, 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A68, 0x5A69, 0x5A6B, 0x5A6C, - 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73, 0x5A78, 0x5A79, 0x5A7B, - 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81, 0x5A82, 0x5A83, 0x5A84, 0x5A85, - 0x5A86, 0x5A87, 0x5A88, 0x5A89, 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E, - 0x5A8F, 0x5A90, 0x5A91, 0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98, - 0x5A99, 0x5A9C, 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3, - 0x5AA4, 0x5AA5, 0x5AA6, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC, 0x5AAD, 0x5AAE, - 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB, - 0x5ABC, 0x5ABF, 0x5AC0, 0x5AC3, 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, - 0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5, - 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5, - 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, 0x5AF2, - 0x5AF3, 0x5AF4, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9, 0x5AFA, 0x5AFC, 0x5AFD, - 0x5AFE, 0x5AFF, 0x5B01, 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07, - 0x5B0A, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12, 0x5B13, 0x5B14, - 0x5B15, 0x5B18, 0x5B1A, 0x5B1B, 0x5B1C, 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, - 0x5B22, 0x5B23, 0x5B24, 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2B, - 0x5B2C, 0x5B2D, 0x5B2E, 0x5B2F, 0x5B31, 0x5B33, 0x5B35, 0x5B36, 0x5B39, - 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F, 0x5B41, 0x5B42, 0x5B43, - 0x5B44, 0x5B45, 0x5B46, 0x5B47, 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4D, - 0x5B4E, 0x5B4F, 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, - 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B79, 0x5B7B, - 0x5B7C, 0x5B7E, 0x5B82, 0x5B86, 0x5B8A, 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, - 0x5B92, 0x5B94, 0x5B96, 0x5B9F, 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, - 0x5BAE, 0x5BAF, 0x5BB1, 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, - 0x5BC1, 0x5BC3, 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF, - 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, 0x5BDB, - 0x5BDC, 0x5BE0, 0x5BE3, 0x5BEA, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3, - 0x5BF4, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, 0x5C03, 0x5C05, 0x5C0C, - 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, 0x5C20, - 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, 0x5C2D, 0x5C2E, - 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, 0x5C43, 0x5C44, 0x5C46, - 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, - 0x5C5A, 0x5C5B, 0x5C5C, 0x5C5D, 0x5C5F, 0x5C67, 0x5C69, 0x5C6A, 0x5C6B, - 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75, 0x5C76, 0x5C77, 0x5C78, - 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, 0x5C83, 0x5C84, 0x5C85, 0x5C86, - 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, - 0x5C9D, 0x5C9E, 0x5C9F, 0x5CA0, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8, - 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, 0x5CBA, - 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5, 0x5CC6, 0x5CC7, - 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE, 0x5CCF, 0x5CD0, 0x5CD1, - 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7, 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, - 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0, 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, - 0x5CEC, 0x5CEE, 0x5CEF, 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF5, 0x5CF7, 0x5CF8, - 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFE, 0x5CFF, 0x5D00, 0x5D01, 0x5D04, 0x5D05, - 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, 0x5D0F, 0x5D10, 0x5D11, 0x5D12, - 0x5D13, 0x5D15, 0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, - 0x5D21, 0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2F, 0x5D30, - 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 0x5D39, 0x5D3A, - 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, 0x5D43, 0x5D44, 0x5D45, - 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, 0x5D4F, 0x5D51, 0x5D52, 0x5D53, - 0x5D54, 0x5D55, 0x5D56, 0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, - 0x5D60, 0x5D61, 0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, - 0x5D6A, 0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76, - 0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, 0x5D7F, - 0x5D80, 0x5D83, 0x5D85, 0x5D86, 0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, - 0x5D8D, 0x5D8E, 0x5D8F, 0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, - 0x5D96, 0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA1, 0x5DA2, - 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA8, 0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC, - 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, 0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5, - 0x5DB6, 0x5DB9, 0x5DBB, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, 0x5DC2, - 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, 0x5DCC, 0x5DCE, - 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD3, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, - 0x5DDA, 0x5DDC, 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED, - 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00, - 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13, - 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, 0x5E22, 0x5E23, 0x5E24, 0x5E28, - 0x5E29, 0x5E2A, 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E34, 0x5E35, 0x5E39, - 0x5E3A, 0x5E3E, 0x5E3F, 0x5E41, 0x5E46, 0x5E47, 0x5E48, 0x5E49, 0x5E4A, - 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, 0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56, - 0x5E59, 0x5E5A, 0x5E5C, 0x5E5D, 0x5E60, 0x5E64, 0x5E65, 0x5E66, 0x5E67, - 0x5E68, 0x5E69, 0x5E6A, 0x5E6D, 0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75, - 0x5E77, 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D, - 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, 0x5EA4, - 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAC, 0x5EAE, 0x5EAF, 0x5EB0, 0x5EB1, 0x5EB2, - 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, 0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2, - 0x5EC3, 0x5EC4, 0x5EC5, 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD, - 0x5ECE, 0x5ECF, 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, - 0x5EDC, 0x5EDD, 0x5EDE, 0x5EE4, 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB, - 0x5EED, 0x5EEE, 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF5, 0x5EF8, 0x5EF9, - 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D, - 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D, - 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, - 0x5F30, 0x5F32, 0x5F34, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E, - 0x5F3F, 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F47, 0x5F49, 0x5F4A, - 0x5F4B, 0x5F4D, 0x5F4F, 0x5F51, 0x5F54, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E, - 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, - 0x5F72, 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F, - 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F93, 0x5F94, 0x5F96, 0x5F9A, - 0x5F9B, 0x5F9D, 0x5F9F, 0x5FA2, 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, - 0x5FAB, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6, - 0x5FB8, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7, - 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB, - 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9, - 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, - 0x5FFA, 0x5FFC, 0x6007, 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, - 0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024, - 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036, - 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044, 0x6045, - 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E, 0x604F, 0x6051, - 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B, 0x605C, 0x605E, 0x605F, - 0x6060, 0x6061, 0x6065, 0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075, - 0x6077, 0x607E, 0x6080, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, - 0x608A, 0x608B, 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, - 0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7, - 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B7, 0x60B9, 0x60BA, 0x60BD, - 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2, 0x60C3, 0x60C4, 0x60C7, 0x60C8, - 0x60C9, 0x60CC, 0x60CD, 0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, - 0x60D6, 0x60D7, 0x60D9, 0x60DB, 0x60DE, 0x60E2, 0x60E3, 0x60E4, 0x60E5, - 0x60EA, 0x60F5, 0x60F7, 0x60F8, 0x60FC, 0x60FD, 0x60FE, 0x60FF, 0x6102, - 0x6103, 0x6104, 0x6105, 0x6107, 0x610A, 0x610B, 0x610C, 0x6110, 0x6111, - 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611D, 0x611E, - 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E, - 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6135, 0x6136, 0x6138, 0x6139, - 0x613A, 0x613B, 0x613C, 0x613D, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, - 0x6145, 0x6146, 0x6147, 0x6149, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153, - 0x6154, 0x6156, 0x6157, 0x6159, 0x615B, 0x615C, 0x615E, 0x6160, 0x6161, - 0x6165, 0x6166, 0x6169, 0x616C, 0x616D, 0x616F, 0x6171, 0x6172, 0x6174, - 0x6178, 0x6179, 0x617A, 0x617B, 0x617C, 0x617D, 0x617E, 0x617F, 0x6180, - 0x6181, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618C, - 0x618D, 0x618F, 0x6193, 0x6195, 0x6196, 0x6197, 0x6198, 0x6199, 0x619B, - 0x619C, 0x619E, 0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A5, 0x61A6, - 0x61AA, 0x61AD, 0x61AF, 0x61B0, 0x61B1, 0x61B3, 0x61B4, 0x61B5, 0x61B8, - 0x61B9, 0x61BA, 0x61BB, 0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, - 0x61C4, 0x61C5, 0x61C6, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3, 0x61D5, - 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, 0x61DC, 0x61DD, 0x61E0, - 0x61E1, 0x61E2, 0x61E4, 0x61E5, 0x61E7, 0x61E9, 0x61EA, 0x61EB, 0x61EC, - 0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F3, 0x61F4, 0x61F9, 0x61FB, - 0x61FD, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6209, 0x6213, 0x6219, - 0x621C, 0x621D, 0x621E, 0x6220, 0x6223, 0x6226, 0x6228, 0x6229, 0x622B, - 0x622D, 0x622F, 0x6231, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B, - 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0x624F, 0x6250, 0x6255, - 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, 0x625D, 0x625E, 0x625F, 0x6260, - 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, - 0x6277, 0x6278, 0x627A, 0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285, - 0x6286, 0x6287, 0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, - 0x6294, 0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9, - 0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6, - 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0x62C3, 0x62CB, 0x62CF, - 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, 0x62EA, 0x62EB, - 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303, - 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310, - 0x6312, 0x6313, 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, - 0x6327, 0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334, - 0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633F, 0x6340, 0x6341, - 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356, - 0x6357, 0x6358, 0x6359, 0x635A, 0x635B, 0x635C, 0x635D, 0x6360, 0x6364, - 0x6365, 0x6366, 0x636A, 0x636C, 0x636F, 0x6370, 0x6373, 0x6374, 0x6375, - 0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6385, 0x6386, - 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399, 0x639A, - 0x639B, 0x639C, 0x639D, 0x639E, 0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB, - 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF, - 0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC, - 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9, 0x63DB, 0x63DC, - 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, 0x63EB, - 0x63EC, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA, - 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, - 0x640A, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6418, 0x6419, 0x641A, - 0x641D, 0x641F, 0x6422, 0x6423, 0x6424, 0x6425, 0x6427, 0x6428, 0x6429, - 0x642B, 0x642E, 0x642F, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6437, - 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449, - 0x644B, 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6453, 0x6455, 0x6456, - 0x6457, 0x6459, 0x645A, 0x645B, 0x645D, 0x6460, 0x6461, 0x6462, 0x6463, - 0x6464, 0x6465, 0x6466, 0x6468, 0x646A, 0x646B, 0x646C, 0x646E, 0x6470, - 0x6471, 0x6472, 0x6474, 0x6475, 0x6477, 0x647C, 0x647D, 0x647E, 0x647F, - 0x6480, 0x6481, 0x6483, 0x6486, 0x6489, 0x648A, 0x648B, 0x648C, 0x648D, - 0x648E, 0x648F, 0x6490, 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C, - 0x649D, 0x64A0, 0x64A1, 0x64A2, 0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AF, - 0x64B1, 0x64B4, 0x64B6, 0x64B9, 0x64BD, 0x64C3, 0x64C6, 0x64C8, 0x64C9, - 0x64CC, 0x64CF, 0x64D1, 0x64D3, 0x64D5, 0x64D6, 0x64D9, 0x64DB, 0x64DC, - 0x64DD, 0x64DF, 0x64E1, 0x64E3, 0x64E5, 0x64E7, 0x64E8, 0x64E9, 0x64EA, - 0x64EB, 0x64ED, 0x64EE, 0x64F3, 0x64F5, 0x64F6, 0x64F8, 0x64F9, 0x64FD, - 0x64FF, 0x6501, 0x6502, 0x6503, 0x6505, 0x6507, 0x6508, 0x650A, 0x650B, - 0x650C, 0x650D, 0x650E, 0x6510, 0x6511, 0x6513, 0x6515, 0x6517, 0x651A, - 0x651C, 0x651E, 0x651F, 0x6520, 0x6521, 0x6526, 0x6527, 0x6528, 0x6529, - 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A, 0x653C, 0x653D, - 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547, 0x654A, 0x654B, - 0x654D, 0x654E, 0x6550, 0x6552, 0x6553, 0x6554, 0x6558, 0x655A, 0x655C, - 0x655F, 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, - 0x656D, 0x656E, 0x656F, 0x6571, 0x6573, 0x6576, 0x6579, 0x657A, 0x657B, - 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6584, 0x6585, 0x6586, - 0x6588, 0x6589, 0x658A, 0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6596, - 0x6598, 0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, - 0x65AA, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6, 0x65B8, - 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2, 0x65C7, 0x65C8, 0x65C9, - 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3, 0x65D4, 0x65D5, 0x65D8, 0x65D9, - 0x65DA, 0x65DB, 0x65DC, 0x65DD, 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, - 0x65EA, 0x65EB, 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, - 0x65FC, 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, - 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, 0x6618, - 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, - 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, 0x6632, 0x6633, 0x6637, - 0x6638, 0x6639, 0x663A, 0x663B, 0x663D, 0x663F, 0x6640, 0x6644, 0x6645, - 0x6646, 0x6647, 0x6648, 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, - 0x6658, 0x6659, 0x665B, 0x665C, 0x665E, 0x6660, 0x6662, 0x6663, 0x6665, - 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, 0x6672, 0x6673, - 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, 0x667F, 0x6680, 0x6681, - 0x6683, 0x6685, 0x6686, 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, - 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, - 0x669E, 0x669F, 0x66A0, 0x66A1, 0x66A3, 0x66A4, 0x66A5, 0x66A6, 0x66A9, - 0x66AA, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, 0x66B2, 0x66B3, 0x66B5, - 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, 0x66BC, 0x66BD, 0x66BF, 0x66C0, - 0x66C1, 0x66C2, 0x66C3, 0x66C5, 0x66C8, 0x66CA, 0x66CB, 0x66CC, 0x66CD, - 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, 0x66D5, 0x66D7, - 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5, - 0x66E7, 0x66E8, 0x66EA, 0x66EB, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, - 0x66F6, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6704, 0x6705, 0x6706, - 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, 0x6713, 0x6716, 0x6718, - 0x6719, 0x671A, 0x671C, 0x671E, 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, - 0x6725, 0x6729, 0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, - 0x6739, 0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747, - 0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, - 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676B, - 0x676C, 0x676E, 0x6774, 0x6776, 0x6778, 0x6779, 0x677A, 0x677B, 0x677D, - 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, - 0x678E, 0x678F, 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, - 0x679F, 0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1, - 0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, 0x67BF, - 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, 0x67CA, 0x67CB, - 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, 0x67DB, 0x67DF, 0x67E1, - 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, 0x67EB, 0x67ED, 0x67EE, - 0x67F2, 0x67F5, 0x67F6, 0x67F7, 0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC, - 0x67FE, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, - 0x6814, 0x6815, 0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, - 0x6820, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B, - 0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836, - 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F, 0x6852, 0x6856, - 0x6857, 0x6858, 0x6859, 0x685A, 0x685B, 0x685C, 0x685D, 0x685E, 0x685F, - 0x686A, 0x686C, 0x686D, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872, 0x6873, - 0x6875, 0x6878, 0x6879, 0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F, - 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C, - 0x688D, 0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6899, - 0x689A, 0x689B, 0x689C, 0x689E, 0x68A0, 0x68A1, 0x68A3, 0x68A4, 0x68A5, - 0x68A9, 0x68AA, 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, - 0x68B7, 0x68B8, 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF, - 0x68C1, 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC, - 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D9, 0x68DB, 0x68DC, - 0x68DD, 0x68DE, 0x68E1, 0x68E2, 0x68E4, 0x68E5, 0x68E6, 0x68E8, 0x68E9, - 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6, - 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903, - 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x6911, 0x6913, - 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691A, 0x691B, 0x691C, - 0x691D, 0x691E, 0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928, - 0x6929, 0x692A, 0x692B, 0x692C, 0x692E, 0x692F, 0x6931, 0x6932, 0x6933, - 0x6935, 0x6936, 0x6937, 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940, - 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694B, - 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6955, 0x6956, - 0x6958, 0x6959, 0x695B, 0x695C, 0x695F, 0x6961, 0x6962, 0x6964, 0x6965, - 0x6967, 0x6969, 0x696A, 0x696C, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974, - 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983, 0x6985, - 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991, 0x6992, 0x6993, - 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E, 0x699F, 0x69A0, 0x69A1, - 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6, 0x69A9, 0x69AC, 0x69AF, 0x69B0, - 0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD, - 0x69BE, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6, 0x69C7, 0x69C8, - 0x69C9, 0x69CF, 0x69D1, 0x69D2, 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, - 0x69D9, 0x69DA, 0x69DC, 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, - 0x69E5, 0x69E6, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF, - 0x69F0, 0x69F1, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8, 0x69F9, 0x69FA, - 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A03, 0x6A04, 0x6A06, 0x6A07, 0x6A08, - 0x6A09, 0x6A0B, 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, - 0x6A14, 0x6A15, 0x6A16, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D, 0x6A20, 0x6A22, - 0x6A24, 0x6A25, 0x6A26, 0x6A27, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, - 0x6A30, 0x6A32, 0x6A33, 0x6A34, 0x6A36, 0x6A37, 0x6A3B, 0x6A3C, 0x6A3F, - 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A49, 0x6A4A, 0x6A4C, - 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51, 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, - 0x6A57, 0x6A5A, 0x6A5C, 0x6A5D, 0x6A5E, 0x6A60, 0x6A63, 0x6A64, 0x6A66, - 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D, 0x6A6E, 0x6A6F, - 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76, 0x6A77, 0x6A78, 0x6A7A, - 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81, 0x6A82, 0x6A83, 0x6A85, 0x6A86, - 0x6A87, 0x6A88, 0x6A8A, 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, - 0x6A95, 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9D, 0x6A9E, 0x6A9F, - 0x6AA1, 0x6AA4, 0x6AA5, 0x6AA6, 0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, - 0x6AB0, 0x6AB1, 0x6AB2, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB9, 0x6ABA, - 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, 0x6AC2, 0x6AC4, 0x6AC5, - 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, 0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, - 0x6ACF, 0x6AD0, 0x6AD1, 0x6AD2, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, - 0x6AD9, 0x6ADC, 0x6AE0, 0x6AE1, 0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, - 0x6AE9, 0x6AEB, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, 0x6AF2, 0x6AF4, - 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF9, 0x6AFA, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, - 0x6B00, 0x6B01, 0x6B02, 0x6B03, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09, - 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B10, 0x6B11, 0x6B13, 0x6B14, 0x6B15, - 0x6B17, 0x6B18, 0x6B19, 0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1F, 0x6B25, - 0x6B26, 0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E, 0x6B2F, - 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, 0x6B3C, - 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, 0x6B48, 0x6B4A, 0x6B4B, - 0x6B4D, 0x6B4E, 0x6B4F, 0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56, - 0x6B57, 0x6B58, 0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B60, 0x6B68, - 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, 0x6B71, 0x6B73, - 0x6B74, 0x6B75, 0x6B76, 0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, - 0x6B88, 0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97, - 0x6B99, 0x6B9C, 0x6B9D, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3, 0x6BA5, 0x6BA6, - 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAC, 0x6BAD, 0x6BB0, 0x6BB1, 0x6BB6, 0x6BB8, - 0x6BB9, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC7, 0x6BC8, - 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC, - 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, - 0x6BE7, 0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2, - 0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, 0x6C00, - 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0E, 0x6C12, - 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C25, 0x6C2D, 0x6C31, 0x6C33, - 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43, - 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51, - 0x6C52, 0x6C53, 0x6C56, 0x6C58, 0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65, - 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73, - 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84, - 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96, - 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8, - 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0, - 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE, - 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, - 0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9, - 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A, - 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18, - 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24, 0x6D26, - 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37, - 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50, - 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, - 0x6D64, 0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, - 0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F, - 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F, - 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2, - 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7, - 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD, 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, - 0x6DC8, 0x6DC9, 0x6DCA, 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, - 0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3, - 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2, 0x6DF4, - 0x6DF8, 0x6DFD, 0x6DFE, 0x6DFF, 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, - 0x6E06, 0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, - 0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E27, 0x6E28, - 0x6E2A, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35, 0x6E36, 0x6E37, 0x6E39, - 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3F, 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, - 0x6E47, 0x6E48, 0x6E49, 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, - 0x6E52, 0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E60, 0x6E61, - 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69, 0x6E6A, - 0x6E6C, 0x6E6D, 0x6E70, 0x6E71, 0x6E72, 0x6E73, 0x6E74, 0x6E75, 0x6E76, - 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B, 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, - 0x6E82, 0x6E84, 0x6E87, 0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, - 0x6E91, 0x6E92, 0x6E93, 0x6E94, 0x6E95, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, - 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9, 0x6EAB, - 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8, 0x6EB9, 0x6EBC, - 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECD, - 0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3, - 0x6EE7, 0x6EEA, 0x6EEB, 0x6EED, 0x6EEE, 0x6EF0, 0x6EF1, 0x6EF3, 0x6EF5, - 0x6EF6, 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6F00, 0x6F03, 0x6F04, - 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C, 0x6F0D, 0x6F0E, 0x6F10, - 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18, 0x6F19, 0x6F1B, 0x6F1C, 0x6F1D, - 0x6F1E, 0x6F1F, 0x6F21, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2E, 0x6F30, - 0x6F34, 0x6F35, 0x6F37, 0x6F39, 0x6F3A, 0x6F3B, 0x6F3C, 0x6F3D, 0x6F40, - 0x6F42, 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E, - 0x6F4F, 0x6F50, 0x6F52, 0x6F53, 0x6F55, 0x6F56, 0x6F57, 0x6F5A, 0x6F5B, - 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, 0x6F63, 0x6F65, 0x6F67, 0x6F68, 0x6F69, - 0x6F6A, 0x6F6B, 0x6F6C, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F79, 0x6F7B, - 0x6F7D, 0x6F7E, 0x6F81, 0x6F82, 0x6F83, 0x6F85, 0x6F8A, 0x6F8B, 0x6F8F, - 0x6F90, 0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F98, 0x6F99, - 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA2, 0x6FA3, 0x6FA5, 0x6FA6, - 0x6FA8, 0x6FAA, 0x6FAB, 0x6FAC, 0x6FAD, 0x6FAF, 0x6FB0, 0x6FB2, 0x6FB4, - 0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, 0x6FBF, - 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, 0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD, - 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, 0x6FD4, 0x6FD6, 0x6FD7, 0x6FD9, 0x6FDA, - 0x6FDC, 0x6FDD, 0x6FE2, 0x6FE3, 0x6FE5, 0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9, - 0x6FEA, 0x6FEC, 0x6FED, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7, - 0x6FF8, 0x6FF9, 0x6FFB, 0x6FFD, 0x6FFF, 0x7000, 0x7001, 0x7002, 0x7003, - 0x7004, 0x7007, 0x7008, 0x700A, 0x700C, 0x700D, 0x700E, 0x7010, 0x7012, - 0x7013, 0x7014, 0x7016, 0x7017, 0x7019, 0x701C, 0x701E, 0x7021, 0x7022, - 0x7024, 0x7025, 0x7026, 0x7029, 0x702A, 0x702B, 0x702C, 0x702D, 0x702E, - 0x702F, 0x7031, 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B, - 0x703C, 0x703D, 0x703F, 0x7040, 0x7041, 0x7042, 0x7045, 0x7046, 0x7047, - 0x7048, 0x7049, 0x704A, 0x704B, 0x704D, 0x704E, 0x7050, 0x7052, 0x7053, - 0x7054, 0x7056, 0x7057, 0x7059, 0x705A, 0x705B, 0x705C, 0x705F, 0x7060, - 0x7061, 0x7062, 0x7065, 0x7066, 0x7068, 0x7069, 0x706A, 0x706E, 0x7071, - 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081, - 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D, - 0x708F, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E, - 0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, 0x70A7, - 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA, - 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70CB, 0x70CC, - 0x70CD, 0x70CE, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6, - 0x70D7, 0x70DA, 0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, - 0x70E5, 0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F5, 0x70F6, - 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100, 0x7101, 0x7102, - 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, 0x710B, 0x710C, 0x710D, - 0x710E, 0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x711B, 0x711C, 0x711D, - 0x711E, 0x711F, 0x7120, 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, - 0x7129, 0x712A, 0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134, - 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D, 0x713E, - 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147, 0x7148, - 0x714B, 0x714D, 0x714F, 0x7150, 0x7151, 0x7153, 0x7154, 0x7155, 0x7156, - 0x7157, 0x7158, 0x7159, 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161, - 0x7163, 0x7165, 0x716A, 0x716B, 0x716D, 0x716F, 0x7170, 0x7171, 0x7174, - 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, 0x717E, 0x717F, 0x7180, - 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718B, - 0x718C, 0x718D, 0x718E, 0x7190, 0x7191, 0x7193, 0x7195, 0x7196, 0x719A, - 0x719B, 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5, - 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF, 0x71B0, - 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA, 0x71BB, 0x71BC, 0x71BD, - 0x71BF, 0x71C0, 0x71C2, 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C9, 0x71CA, - 0x71CB, 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D3, 0x71D6, 0x71D7, - 0x71D8, 0x71DA, 0x71DB, 0x71DD, 0x71DE, 0x71E1, 0x71E2, 0x71E3, 0x71E4, - 0x71E8, 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71EF, 0x71F0, 0x71F1, 0x71F2, - 0x71F3, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA, 0x71FB, 0x71FD, 0x71FF, - 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, - 0x720A, 0x720B, 0x720C, 0x720E, 0x720F, 0x7211, 0x7212, 0x7213, 0x7214, - 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A, 0x721C, 0x721E, 0x721F, - 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, - 0x722B, 0x722D, 0x722E, 0x722F, 0x7233, 0x7234, 0x723C, 0x7240, 0x7241, - 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A, 0x724B, 0x724E, - 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, 0x725A, 0x725C, - 0x725E, 0x7260, 0x7263, 0x7264, 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, - 0x726D, 0x7270, 0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, - 0x727C, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C, - 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7297, 0x7298, 0x7299, - 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0, 0x72A1, 0x72A3, 0x72A4, - 0x72A5, 0x72A6, 0x72A8, 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, - 0x72B3, 0x72B5, 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C5, - 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, 0x72D3, - 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB, 0x72DC, 0x72DD, 0x72DF, - 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, 0x72E7, 0x72EA, 0x72EB, 0x72F5, - 0x72F6, 0x72FE, 0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, - 0x7308, 0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312, - 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, 0x7326, - 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, 0x7335, 0x733A, - 0x733C, 0x733D, 0x7340, 0x7342, 0x7343, 0x7346, 0x7347, 0x7348, 0x7349, - 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, 0x7354, 0x7355, - 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C, 0x735D, 0x735E, 0x735F, - 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7369, 0x736E, - 0x7371, 0x7373, 0x7374, 0x7376, 0x7379, 0x737D, 0x737F, 0x7381, 0x7382, - 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F, 0x7390, - 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, 0x739A, 0x739C, - 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4, 0x73A5, 0x73A6, 0x73A7, - 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8, - 0x73B9, 0x73BC, 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, - 0x73C6, 0x73C7, 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5, - 0x73D6, 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1, - 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC, 0x73EE, - 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6, 0x73F7, 0x73F8, - 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FF, 0x7400, 0x7401, 0x7402, - 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, 0x740D, 0x740E, 0x7411, 0x7412, - 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, - 0x741E, 0x741F, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, - 0x742D, 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, - 0x743D, 0x743E, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, - 0x7448, 0x7449, 0x744A, 0x744C, 0x744D, 0x744E, 0x744F, 0x7450, 0x7451, - 0x7452, 0x7453, 0x7454, 0x7456, 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, - 0x7464, 0x7465, 0x7466, 0x7467, 0x7468, 0x746B, 0x746C, 0x746E, 0x746F, - 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747A, 0x747B, - 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486, 0x7488, 0x748A, - 0x748C, 0x748D, 0x748F, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, - 0x7497, 0x7498, 0x7499, 0x749A, 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, - 0x74A2, 0x74A4, 0x74A5, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF, - 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7, 0x74B8, 0x74B9, - 0x74BB, 0x74BC, 0x74BE, 0x74BF, 0x74C0, 0x74C1, 0x74C2, 0x74C3, 0x74C4, - 0x74C5, 0x74C6, 0x74C7, 0x74C8, 0x74C9, 0x74CB, 0x74CC, 0x74CD, 0x74CE, - 0x74D0, 0x74D1, 0x74D3, 0x74D5, 0x74D6, 0x74D7, 0x74D8, 0x74D9, 0x74DB, - 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, 0x74E8, 0x74E9, 0x74EA, 0x74EB, - 0x74EC, 0x74ED, 0x74F0, 0x74F1, 0x74F2, 0x74F3, 0x74F5, 0x74F8, 0x74F9, - 0x74FA, 0x74FB, 0x74FC, 0x74FD, 0x74FE, 0x7500, 0x7501, 0x7502, 0x7503, - 0x7505, 0x7506, 0x7507, 0x7508, 0x7509, 0x750A, 0x750B, 0x750E, 0x7510, - 0x7512, 0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520, - 0x7521, 0x7522, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536, - 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546, - 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552, 0x7553, 0x7555, - 0x7556, 0x7557, 0x7558, 0x755E, 0x755F, 0x7560, 0x7561, 0x7563, 0x7564, - 0x7567, 0x7568, 0x7569, 0x756C, 0x756D, 0x756E, 0x756F, 0x7570, 0x7571, - 0x7573, 0x7575, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, 0x7580, - 0x7581, 0x7582, 0x7584, 0x7585, 0x7588, 0x7589, 0x758A, 0x758C, 0x758D, - 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2, - 0x75A6, 0x75A7, 0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, - 0x75BB, 0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF, - 0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0, - 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, 0x75F3, - 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, 0x75FE, 0x7604, - 0x7606, 0x7607, 0x7608, 0x7609, 0x760E, 0x760F, 0x7611, 0x7612, 0x7613, - 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x7623, 0x7628, 0x762C, 0x762E, - 0x762F, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763A, 0x763D, 0x7641, - 0x7644, 0x7645, 0x7648, 0x764A, 0x764B, 0x764E, 0x764F, 0x7650, 0x7651, - 0x7652, 0x7653, 0x7655, 0x7657, 0x7659, 0x765A, 0x765B, 0x765D, 0x7660, - 0x7661, 0x7666, 0x7668, 0x766A, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677, - 0x7679, 0x767A, 0x767F, 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A, - 0x768C, 0x768D, 0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, - 0x769B, 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3, - 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC, 0x76AD, - 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B9, 0x76BB, 0x76BC, - 0x76BD, 0x76BE, 0x76C0, 0x76C1, 0x76C3, 0x76C4, 0x76C7, 0x76C9, 0x76CB, - 0x76CC, 0x76D3, 0x76D5, 0x76D9, 0x76DA, 0x76DC, 0x76DD, 0x76E0, 0x76E2, - 0x76E6, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC, 0x76ED, 0x76F0, 0x76F3, - 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, 0x76FD, 0x76FF, 0x7700, 0x7702, - 0x7703, 0x7705, 0x7706, 0x770A, 0x770C, 0x770E, 0x770F, 0x7710, 0x7711, - 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, - 0x771D, 0x771E, 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B, - 0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773B, - 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748, 0x7749, - 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x7752, 0x7753, 0x7754, 0x7755, - 0x7756, 0x7757, 0x7758, 0x7759, 0x775C, 0x775D, 0x775F, 0x7760, 0x7764, - 0x7767, 0x7769, 0x776A, 0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772, - 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, - 0x7781, 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B, - 0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7799, 0x779A, - 0x779B, 0x779C, 0x779D, 0x77A1, 0x77A3, 0x77A4, 0x77A6, 0x77A8, 0x77AB, - 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9, - 0x77BA, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, 0x77C6, - 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, 0x77CF, 0x77D0, 0x77D1, - 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, 0x77D8, 0x77D9, 0x77DD, 0x77DE, - 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x77E6, 0x77E8, 0x77EA, 0x77F0, 0x77F1, - 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803, - 0x7804, 0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F, - 0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821, 0x7822, - 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833, - 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842, 0x7844, 0x7846, 0x7848, - 0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854, 0x7858, - 0x7859, 0x785A, 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862, - 0x7863, 0x7865, 0x7866, 0x7867, 0x7869, 0x7870, 0x7871, 0x7872, 0x7873, - 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787A, 0x787B, 0x787D, 0x787E, - 0x787F, 0x7880, 0x7881, 0x7882, 0x7883, 0x7884, 0x7885, 0x7886, 0x7888, - 0x788A, 0x788B, 0x788F, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, - 0x789D, 0x789E, 0x78A0, 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78AA, 0x78AB, - 0x78AC, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78BB, 0x78BD, 0x78BF, - 0x78C0, 0x78C2, 0x78C3, 0x78C4, 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, - 0x78CE, 0x78CF, 0x78D1, 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DB, - 0x78DC, 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E4, 0x78E5, - 0x78E6, 0x78E9, 0x78EA, 0x78EB, 0x78ED, 0x78EE, 0x78F0, 0x78F1, 0x78F3, - 0x78F5, 0x78F6, 0x78F8, 0x78F9, 0x78FB, 0x78FC, 0x78FE, 0x78FF, 0x7900, - 0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B, - 0x790C, 0x790D, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, 0x7916, - 0x7917, 0x7918, 0x791A, 0x791B, 0x791C, 0x791D, 0x791F, 0x7920, 0x7921, - 0x7922, 0x7923, 0x7925, 0x7927, 0x7928, 0x7929, 0x792D, 0x792E, 0x792F, - 0x7930, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793D, - 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, 0x794A, 0x794B, 0x794C, - 0x794D, 0x794E, 0x794F, 0x7950, 0x7951, 0x7952, 0x7954, 0x7955, 0x7958, - 0x7959, 0x7961, 0x7963, 0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, - 0x796E, 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, - 0x797B, 0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987, - 0x7988, 0x7989, 0x798B, 0x798C, 0x7990, 0x7991, 0x7992, 0x7993, 0x7994, - 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, 0x799C, 0x799D, 0x799E, - 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, 0x79A4, 0x79A5, 0x79A8, 0x79A9, - 0x79AB, 0x79AC, 0x79AD, 0x79AF, 0x79B2, 0x79B4, 0x79B5, 0x79B6, 0x79B7, - 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8, 0x79CA, - 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6, 0x79D7, 0x79D9, - 0x79DA, 0x79DB, 0x79DC, 0x79DD, 0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5, - 0x79E8, 0x79EA, 0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, - 0x79F6, 0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04, - 0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11, - 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x7A1D, - 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27, 0x7A28, 0x7A29, - 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2F, 0x7A30, 0x7A32, 0x7A34, 0x7A35, - 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45, - 0x7A47, 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4F, 0x7A50, 0x7A52, 0x7A53, - 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59, 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, - 0x7A5E, 0x7A5F, 0x7A60, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68, - 0x7A6A, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71, 0x7A72, 0x7A73, 0x7A75, - 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A, - 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, - 0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x7AA3, 0x7AA4, 0x7AA7, 0x7AAB, 0x7AAF, - 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB7, 0x7AB8, 0x7AB9, 0x7ABB, - 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1, 0x7AC2, 0x7AC3, 0x7AC6, 0x7AC9, - 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2, 0x7AD3, 0x7AD4, - 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2, - 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, - 0x7AF2, 0x7AF3, 0x7AF4, 0x7AF5, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE, - 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D, 0x7B0E, - 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A, 0x7B1C, 0x7B1D, - 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29, 0x7B2D, 0x7B2F, 0x7B30, - 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39, 0x7B3B, 0x7B3D, 0x7B3F, - 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, - 0x7B53, 0x7B55, 0x7B57, 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, - 0x7B64, 0x7B65, 0x7B66, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D, - 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, 0x7B7D, - 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87, 0x7B88, 0x7B89, - 0x7B8A, 0x7B8C, 0x7B8E, 0x7B8F, 0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98, - 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, - 0x7BAE, 0x7BAF, 0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, - 0x7BBA, 0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC2, 0x7BC3, 0x7BC5, - 0x7BC8, 0x7BCA, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5, - 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2, - 0x7BE3, 0x7BE7, 0x7BE8, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2, - 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0x7BFF, - 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, 0x7C06, 0x7C08, 0x7C09, 0x7C0A, - 0x7C0E, 0x7C10, 0x7C11, 0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18, - 0x7C19, 0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C20, 0x7C22, 0x7C24, 0x7C25, - 0x7C28, 0x7C29, 0x7C2C, 0x7C2D, 0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32, - 0x7C33, 0x7C34, 0x7C35, 0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C, - 0x7C42, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A, 0x7C4B, - 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53, 0x7C54, 0x7C55, 0x7C56, - 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B, 0x7C5D, 0x7C5E, 0x7C61, 0x7C62, - 0x7C63, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C6B, 0x7C6D, 0x7C6F, 0x7C70, - 0x7C71, 0x7C75, 0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F, - 0x7C80, 0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87, 0x7C88, - 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90, 0x7C93, 0x7C94, - 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7, - 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, - 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA, 0x7CBB, 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, - 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB, 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, - 0x7CD3, 0x7CD4, 0x7CD8, 0x7CDA, 0x7CDB, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4, - 0x7CE5, 0x7CE6, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED, 0x7CEE, 0x7CF1, - 0x7CF3, 0x7CF5, 0x7CF7, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFF, 0x7D01, 0x7D03, - 0x7D0C, 0x7D0E, 0x7D0F, 0x7D11, 0x7D12, 0x7D16, 0x7D18, 0x7D1D, 0x7D1E, - 0x7D1F, 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C, - 0x7D2D, 0x7D2E, 0x7D34, 0x7D35, 0x7D36, 0x7D37, 0x7D38, 0x7D3B, 0x7D3D, - 0x7D3E, 0x7D41, 0x7D43, 0x7D45, 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, - 0x7D4C, 0x7D4D, 0x7D4F, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56, - 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5F, 0x7D60, 0x7D63, - 0x7D64, 0x7D65, 0x7D67, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F, - 0x7D70, 0x7D74, 0x7D75, 0x7D78, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, - 0x7D7F, 0x7D80, 0x7D82, 0x7D84, 0x7D85, 0x7D87, 0x7D8A, 0x7D8B, 0x7D8C, - 0x7D8D, 0x7D8E, 0x7D90, 0x7D91, 0x7D92, 0x7D94, 0x7D95, 0x7D96, 0x7D97, - 0x7D98, 0x7D99, 0x7D9A, 0x7D9B, 0x7D9D, 0x7D9F, 0x7DA0, 0x7DA1, 0x7DA4, - 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, 0x7DAA, 0x7DAF, 0x7DB5, 0x7DB6, 0x7DB7, - 0x7DBC, 0x7DC0, 0x7DC1, 0x7DC2, 0x7DC3, 0x7DC5, 0x7DC6, 0x7DC8, 0x7DC9, - 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD3, 0x7DD5, 0x7DD6, 0x7DDA, - 0x7DDB, 0x7DDC, 0x7DDF, 0x7DE2, 0x7DE4, 0x7DE5, 0x7DE7, 0x7DEA, 0x7DEB, - 0x7DED, 0x7DEE, 0x7DF0, 0x7DF3, 0x7DF5, 0x7DF7, 0x7DF8, 0x7DFA, 0x7DFC, - 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02, 0x7E03, 0x7E04, 0x7E05, - 0x7E06, 0x7E07, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E12, 0x7E13, 0x7E14, - 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A, 0x7E1C, 0x7E20, 0x7E21, - 0x7E22, 0x7E24, 0x7E25, 0x7E26, 0x7E28, 0x7E29, 0x7E2A, 0x7E2C, 0x7E2F, - 0x7E30, 0x7E33, 0x7E38, 0x7E3A, 0x7E3C, 0x7E3F, 0x7E40, 0x7E42, 0x7E43, - 0x7E44, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C, 0x7E4D, 0x7E4E, 0x7E4F, - 0x7E50, 0x7E51, 0x7E53, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5B, 0x7E5C, - 0x7E5D, 0x7E5F, 0x7E60, 0x7E61, 0x7E63, 0x7E64, 0x7E65, 0x7E66, 0x7E67, - 0x7E68, 0x7E6C, 0x7E71, 0x7E72, 0x7E74, 0x7E75, 0x7E76, 0x7E77, 0x7E78, - 0x7E7A, 0x7E7B, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86, - 0x7E87, 0x7E89, 0x7E8B, 0x7E8E, 0x7E90, 0x7E91, 0x7E92, 0x7E95, 0x7E97, - 0x7E99, 0x7E9A, 0x7E9D, 0x7E9E, 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, - 0x7EE4, 0x7EEC, 0x7EF9, 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, - 0x7F3C, 0x7F3D, 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, - 0x7F48, 0x7F49, 0x7F4A, 0x7F4B, 0x7F4D, 0x7F4F, 0x7F52, 0x7F53, 0x7F56, - 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, 0x7F64, 0x7F65, - 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, 0x7F73, 0x7F75, 0x7F76, - 0x7F78, 0x7F7A, 0x7F7B, 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, - 0x7F84, 0x7F87, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 0x7F91, 0x7F92, - 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, 0x7F9B, 0x7F9C, 0x7FA0, - 0x7FA2, 0x7FA3, 0x7FA6, 0x7FA8, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, - 0x7FB1, 0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE, - 0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB, - 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD3, 0x7FD6, 0x7FD7, 0x7FD9, 0x7FDA, - 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, 0x7FE3, 0x7FE4, 0x7FE7, 0x7FE8, - 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, - 0x7FF7, 0x7FF8, 0x7FFA, 0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008, - 0x8009, 0x800A, 0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, - 0x801E, 0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802D, 0x802F, 0x8030, - 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041, 0x8044, - 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050, 0x8051, 0x8053, - 0x8055, 0x8057, 0x8059, 0x805B, 0x805C, 0x805D, 0x805F, 0x8060, 0x8061, - 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B, 0x806C, - 0x806D, 0x806E, 0x8074, 0x8078, 0x807A, 0x807B, 0x807C, 0x8081, 0x8082, - 0x8088, 0x808A, 0x808D, 0x808E, 0x808F, 0x8090, 0x8091, 0x8092, 0x8094, - 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC, - 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7, - 0x80C8, 0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3, - 0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE, - 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103, - 0x8104, 0x8107, 0x8108, 0x810B, 0x810C, 0x8115, 0x8117, 0x8119, 0x811C, - 0x811D, 0x811F, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, - 0x8127, 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133, - 0x8134, 0x8135, 0x8137, 0x813A, 0x813B, 0x813C, 0x813D, 0x813F, 0x8140, - 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, 0x814D, 0x814F, - 0x8152, 0x8157, 0x8158, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8162, - 0x8163, 0x8164, 0x8168, 0x816A, 0x816C, 0x816F, 0x8172, 0x8173, 0x8175, - 0x8176, 0x8177, 0x8181, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, 0x8189, - 0x818B, 0x818C, 0x818D, 0x818E, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195, - 0x8196, 0x8197, 0x8199, 0x819E, 0x819F, 0x81A1, 0x81A2, 0x81A4, 0x81A5, - 0x81A7, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, 0x81B1, 0x81B2, - 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0x81BC, 0x81C4, 0x81C5, - 0x81C7, 0x81C8, 0x81CB, 0x81CE, 0x81D0, 0x81D1, 0x81D2, 0x81D3, 0x81D4, - 0x81D5, 0x81D6, 0x81D7, 0x81D9, 0x81DB, 0x81DC, 0x81DD, 0x81DE, 0x81E1, - 0x81E2, 0x81E4, 0x81E5, 0x81E6, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0, - 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FD, 0x81FF, - 0x8203, 0x820B, 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, - 0x8218, 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, - 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F, 0x8240, 0x8241, - 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, 0x824C, 0x824D, 0x824E, - 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x825B, - 0x825C, 0x825D, 0x825E, 0x8260, 0x8261, 0x8262, 0x8263, 0x8265, 0x8267, - 0x8269, 0x826A, 0x826C, 0x826D, 0x8275, 0x8276, 0x8278, 0x827B, 0x827C, - 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289, 0x828C, 0x8290, - 0x8293, 0x8294, 0x8295, 0x8296, 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, - 0x82A3, 0x82A7, 0x82B2, 0x82B5, 0x82B6, 0x82BA, 0x82BC, 0x82BF, 0x82C0, - 0x82C2, 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA, - 0x82DD, 0x82E2, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, 0x82EE, 0x82F0, - 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8, 0x82FA, 0x82FC, 0x82FD, 0x82FE, - 0x82FF, 0x8300, 0x830A, 0x830B, 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, - 0x8318, 0x8319, 0x831D, 0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323, - 0x8324, 0x8325, 0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337, - 0x833B, 0x833D, 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, - 0x834A, 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357, - 0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, - 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382, - 0x8383, 0x8384, 0x8387, 0x8388, 0x838B, 0x838C, 0x838D, 0x838F, 0x8390, - 0x8391, 0x8394, 0x8395, 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1, - 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B5, - 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4, 0x83C6, 0x83C8, 0x83C9, - 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7, - 0x83D9, 0x83DA, 0x83DB, 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, - 0x83E8, 0x83EB, 0x83EC, 0x83ED, 0x83EE, 0x83F3, 0x83F4, 0x83F5, 0x83F6, - 0x83F7, 0x83FA, 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, - 0x8408, 0x8409, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417, - 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420, 0x8421, 0x8422, 0x8423, - 0x8429, 0x842A, 0x842B, 0x842D, 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, - 0x8434, 0x8436, 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440, - 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x844A, 0x844B, - 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8453, 0x8454, 0x8455, 0x8456, - 0x8458, 0x845D, 0x845E, 0x845F, 0x8460, 0x8462, 0x8465, 0x8467, 0x8468, - 0x846A, 0x846E, 0x8470, 0x8472, 0x8474, 0x8479, 0x847B, 0x847C, 0x847D, - 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, 0x8486, 0x848A, - 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8495, 0x8496, 0x8498, 0x849A, - 0x849B, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, - 0x84A6, 0x84A7, 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, - 0x84B0, 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BE, 0x84C2, - 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CC, 0x84CE, 0x84CF, 0x84D2, - 0x84D4, 0x84D5, 0x84D7, 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, - 0x84E1, 0x84E2, 0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, - 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0x84F9, - 0x84FA, 0x84FB, 0x84FE, 0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8505, - 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, 0x850B, 0x850D, 0x850E, 0x850F, - 0x8510, 0x8512, 0x8515, 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, - 0x8520, 0x8522, 0x8524, 0x8525, 0x8527, 0x8528, 0x8529, 0x852A, 0x852E, - 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x853E, - 0x853F, 0x8540, 0x8542, 0x8544, 0x8545, 0x8547, 0x854B, 0x854C, 0x854D, - 0x854F, 0x8550, 0x8551, 0x8554, 0x8557, 0x855A, 0x855B, 0x855C, 0x855D, - 0x855F, 0x8560, 0x8561, 0x8563, 0x8565, 0x8566, 0x8567, 0x856B, 0x856C, - 0x856E, 0x856F, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8578, 0x857C, - 0x857D, 0x857F, 0x8580, 0x8581, 0x8582, 0x8583, 0x8586, 0x8589, 0x858B, - 0x858D, 0x858E, 0x8590, 0x8592, 0x8593, 0x8595, 0x8596, 0x8597, 0x8598, - 0x8599, 0x859A, 0x859D, 0x859E, 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5, - 0x85A7, 0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5, - 0x85B6, 0x85B8, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C2, - 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85CA, 0x85CB, 0x85CC, - 0x85D1, 0x85D2, 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, - 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E6, 0x85E7, 0x85E8, - 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, 0x85F0, 0x85F1, 0x85F2, 0x85F3, - 0x85F5, 0x85F7, 0x85F8, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602, - 0x8603, 0x8608, 0x8609, 0x860A, 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, - 0x8612, 0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861B, 0x861C, - 0x861D, 0x861F, 0x8620, 0x8621, 0x8623, 0x8624, 0x8625, 0x8626, 0x8628, - 0x862A, 0x862B, 0x862C, 0x862E, 0x862F, 0x8630, 0x8631, 0x8632, 0x8633, - 0x8634, 0x8635, 0x8636, 0x8637, 0x8639, 0x863B, 0x863D, 0x863E, 0x8640, - 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, - 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, - 0x865B, 0x865D, 0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8668, - 0x8669, 0x866A, 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, - 0x8676, 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, - 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, 0x8697, - 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0, 0x86A1, 0x86A2, - 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, 0x86B3, 0x86B7, 0x86B8, - 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, 0x86C1, 0x86C2, 0x86C3, - 0x86C5, 0x86C8, 0x86CC, 0x86CD, 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, - 0x86DA, 0x86DC, 0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, - 0x86E7, 0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7, - 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x870B, 0x870C, - 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716, 0x8719, 0x871B, 0x871D, - 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A, 0x872B, 0x872C, - 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, - 0x873A, 0x873C, 0x873D, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, - 0x8746, 0x874A, 0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, - 0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, 0x8761, - 0x8762, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D, 0x876F, - 0x8771, 0x8772, 0x8773, 0x8775, 0x8777, 0x8779, 0x877A, 0x877F, 0x8780, - 0x8781, 0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790, - 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A, 0x879B, - 0x879C, 0x879D, 0x87A0, 0x87A1, 0x87A3, 0x87A4, 0x87A5, 0x87A6, 0x87A7, - 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, 0x87B7, - 0x87B8, 0x87B9, 0x87BC, 0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C5, - 0x87C7, 0x87C9, 0x87CC, 0x87CD, 0x87CF, 0x87D0, 0x87D4, 0x87D5, 0x87D6, - 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1, - 0x87E2, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, 0x87ED, 0x87F0, - 0x87F1, 0x87F3, 0x87F4, 0x87F5, 0x87F7, 0x87F8, 0x87FA, 0x87FC, 0x87FD, - 0x87FF, 0x8800, 0x8801, 0x8802, 0x8804, 0x8807, 0x8808, 0x8809, 0x880B, - 0x880C, 0x880D, 0x880E, 0x880F, 0x8812, 0x8814, 0x8817, 0x8818, 0x8819, - 0x881A, 0x881C, 0x881D, 0x881E, 0x8820, 0x8824, 0x8825, 0x8826, 0x8827, - 0x8828, 0x8829, 0x882A, 0x882B, 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, - 0x8833, 0x8834, 0x8835, 0x8837, 0x8838, 0x883A, 0x883D, 0x883E, 0x883F, - 0x8841, 0x8842, 0x8843, 0x8847, 0x8848, 0x8849, 0x884B, 0x884E, 0x884F, - 0x8850, 0x8851, 0x8852, 0x8855, 0x8856, 0x8858, 0x885A, 0x885C, 0x885E, - 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871, 0x8873, - 0x8874, 0x8875, 0x8876, 0x8878, 0x887A, 0x887B, 0x887C, 0x8880, 0x8883, - 0x8886, 0x8887, 0x8889, 0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, - 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, - 0x889E, 0x889F, 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, - 0x88A9, 0x88AA, 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, - 0x88B5, 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF, - 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CB, 0x88CC, 0x88CD, 0x88D0, - 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA, 0x88DB, 0x88DE, 0x88E0, 0x88E1, - 0x88E6, 0x88E7, 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, - 0x88F2, 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FF, 0x8900, 0x8901, - 0x8903, 0x8904, 0x8905, 0x8906, 0x8908, 0x8909, 0x890B, 0x890C, 0x890D, - 0x890E, 0x890F, 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, - 0x891D, 0x891E, 0x891F, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, - 0x8928, 0x8929, 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8935, 0x8937, - 0x8939, 0x893A, 0x893C, 0x893D, 0x893E, 0x893F, 0x8940, 0x8942, 0x8943, - 0x8945, 0x8946, 0x8948, 0x8949, 0x894A, 0x894B, 0x894C, 0x894D, 0x894E, - 0x894F, 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8957, 0x8958, - 0x8959, 0x895A, 0x895B, 0x895C, 0x8961, 0x8962, 0x8963, 0x8965, 0x8967, - 0x8968, 0x8969, 0x896B, 0x896D, 0x896E, 0x8970, 0x8971, 0x8973, 0x8974, - 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C, 0x897D, 0x897E, - 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898A, 0x898C, - 0x898D, 0x898E, 0x8990, 0x8991, 0x8992, 0x8994, 0x8995, 0x8997, 0x8999, - 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A2, 0x89A3, - 0x89A4, 0x89A5, 0x89A7, 0x89A8, 0x89A9, 0x89AB, 0x89AD, 0x89AE, 0x89B0, - 0x89B1, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B8, 0x89B9, 0x89BB, 0x89BC, - 0x89BE, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9, - 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8, - 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2, 0x89F5, - 0x89F7, 0x89F9, 0x89FA, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A04, - 0x8A05, 0x8A06, 0x8A09, 0x8A0B, 0x8A0D, 0x8A0F, 0x8A11, 0x8A12, 0x8A14, - 0x8A17, 0x8A19, 0x8A1A, 0x8A1C, 0x8A1E, 0x8A20, 0x8A21, 0x8A22, 0x8A24, - 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2B, 0x8A2C, 0x8A2E, 0x8A2F, 0x8A30, - 0x8A32, 0x8A33, 0x8A35, 0x8A37, 0x8A38, 0x8A39, 0x8A3B, 0x8A3C, 0x8A3D, - 0x8A3F, 0x8A40, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A47, 0x8A49, 0x8A4A, - 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4F, 0x8A51, 0x8A53, 0x8A56, 0x8A57, 0x8A59, - 0x8A5A, 0x8A5C, 0x8A5D, 0x8A5F, 0x8A60, 0x8A64, 0x8A65, 0x8A67, 0x8A68, - 0x8A6A, 0x8A6F, 0x8A74, 0x8A76, 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7D, - 0x8A7E, 0x8A80, 0x8A81, 0x8A82, 0x8A83, 0x8A88, 0x8A8B, 0x8A8C, 0x8A8E, - 0x8A8F, 0x8A90, 0x8A94, 0x8A96, 0x8A97, 0x8A99, 0x8A9B, 0x8A9C, 0x8A9D, - 0x8A9F, 0x8AA2, 0x8AA7, 0x8AA9, 0x8AAA, 0x8AAB, 0x8AAD, 0x8AAE, 0x8AAF, - 0x8AB1, 0x8AB3, 0x8AB4, 0x8AB5, 0x8AB7, 0x8AB8, 0x8ABA, 0x8ABB, 0x8ABD, - 0x8ABE, 0x8AC0, 0x8AC1, 0x8AC3, 0x8AC5, 0x8AC6, 0x8AC8, 0x8ACA, 0x8ACC, - 0x8ACE, 0x8AD0, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD8, 0x8AD9, 0x8ADA, 0x8ADD, - 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE3, 0x8AE5, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEC, - 0x8AEF, 0x8AF0, 0x8AF2, 0x8AF4, 0x8AF5, 0x8AF9, 0x8AFB, 0x8AFD, 0x8AFF, - 0x8B03, 0x8B06, 0x8B08, 0x8B09, 0x8B0B, 0x8B0C, 0x8B0D, 0x8B0F, 0x8B11, - 0x8B12, 0x8B13, 0x8B15, 0x8B18, 0x8B1C, 0x8B1E, 0x8B1F, 0x8B20, 0x8B22, - 0x8B23, 0x8B24, 0x8B25, 0x8B27, 0x8B29, 0x8B2A, 0x8B2E, 0x8B2F, 0x8B30, - 0x8B31, 0x8B32, 0x8B34, 0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B3A, 0x8B3B, - 0x8B3C, 0x8B3D, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0x8B45, - 0x8B46, 0x8B47, 0x8B48, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, 0x8B50, 0x8B51, - 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B57, 0x8B5B, 0x8B5D, 0x8B5E, 0x8B5F, - 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65, 0x8B67, 0x8B68, 0x8B69, - 0x8B6A, 0x8B6D, 0x8B6E, 0x8B71, 0x8B72, 0x8B73, 0x8B75, 0x8B76, 0x8B78, - 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7E, 0x8B7F, 0x8B81, 0x8B82, 0x8B83, - 0x8B84, 0x8B85, 0x8B86, 0x8B87, 0x8B88, 0x8B89, 0x8B8B, 0x8B8C, 0x8B8D, - 0x8B8F, 0x8B90, 0x8B91, 0x8B94, 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, - 0x8B9D, 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09, - 0x8C1E, 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F, - 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C4A, 0x8C4B, 0x8C4D, 0x8C4E, - 0x8C4F, 0x8C51, 0x8C52, 0x8C53, 0x8C54, 0x8C56, 0x8C57, 0x8C58, 0x8C59, - 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E, 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, - 0x8C66, 0x8C67, 0x8C68, 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, - 0x8C71, 0x8C72, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D, - 0x8C7E, 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87, 0x8C88, - 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, 0x8C93, 0x8C95, - 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C, 0x8C9F, 0x8CA3, 0x8CA4, - 0x8CA5, 0x8CA6, 0x8CAD, 0x8CAE, 0x8CB1, 0x8CB5, 0x8CB9, 0x8CBE, 0x8CC6, - 0x8CC9, 0x8CCB, 0x8CCC, 0x8CCD, 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD4, 0x8CD6, - 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDB, 0x8CDD, 0x8CDF, 0x8CE5, 0x8CE8, 0x8CE9, - 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF5, 0x8CF6, 0x8CF7, - 0x8CF8, 0x8CF9, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D06, 0x8D07, - 0x8D09, 0x8D0C, 0x8D0E, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, 0x8D17, - 0x8D18, 0x8D19, 0x8D1A, 0x8D20, 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, - 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78, - 0x8D79, 0x8D7A, 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, - 0x8D83, 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F, - 0x8D90, 0x8D92, 0x8D93, 0x8D96, 0x8D97, 0x8D98, 0x8D9A, 0x8D9B, 0x8D9C, - 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7, - 0x8DA9, 0x8DAA, 0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB6, - 0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7, - 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x8DD5, - 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7, - 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC, - 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02, 0x8E03, 0x8E04, 0x8E06, 0x8E07, - 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16, - 0x8E17, 0x8E18, 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24, - 0x8E25, 0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33, - 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E, 0x8E3F, 0x8E43, 0x8E45, - 0x8E46, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E53, 0x8E54, 0x8E56, 0x8E57, - 0x8E58, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, - 0x8E62, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E, 0x8E71, - 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7B, 0x8E7D, 0x8E7E, 0x8E80, - 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E8C, 0x8E8E, 0x8E95, 0x8E96, - 0x8E97, 0x8E98, 0x8E99, 0x8E9B, 0x8E9D, 0x8E9F, 0x8EA0, 0x8EA2, 0x8EA3, - 0x8EA4, 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, 0x8EB3, - 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB, 0x8EBC, 0x8EBD, - 0x8EBE, 0x8EBF, 0x8EC1, 0x8EC2, 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, - 0x8EC8, 0x8EC9, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED3, 0x8ED5, 0x8ED6, 0x8ED7, - 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDC, 0x8EDD, 0x8EDE, 0x8EE0, 0x8EE1, 0x8EE2, - 0x8EE3, 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEC, 0x8EED, - 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF3, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7, - 0x8EFD, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F04, 0x8F06, 0x8F08, 0x8F0B, - 0x8F0C, 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F13, 0x8F16, 0x8F17, - 0x8F18, 0x8F19, 0x8F1A, 0x8F20, 0x8F21, 0x8F22, 0x8F23, 0x8F24, 0x8F27, - 0x8F28, 0x8F2B, 0x8F2C, 0x8F2D, 0x8F2E, 0x8F30, 0x8F31, 0x8F32, 0x8F34, - 0x8F35, 0x8F36, 0x8F37, 0x8F39, 0x8F3A, 0x8F3C, 0x8F3D, 0x8F40, 0x8F41, - 0x8F43, 0x8F47, 0x8F48, 0x8F4A, 0x8F4B, 0x8F4C, 0x8F4F, 0x8F50, 0x8F51, - 0x8F52, 0x8F53, 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, - 0x8F5C, 0x8F5D, 0x8F5E, 0x8F60, 0x8F63, 0x8F65, 0x8F6A, 0x8F80, 0x8F8C, - 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA7, 0x8FAA, - 0x8FAC, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, 0x8FBA, 0x8FBB, 0x8FBC, - 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, - 0x8FCF, 0x8FD2, 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, - 0x8FEC, 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC, - 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9018, 0x901C, - 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, 0x902A, 0x902B, 0x902C, 0x9030, - 0x9031, 0x9033, 0x9034, 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, - 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904A, 0x904C, 0x9056, 0x9059, - 0x905A, 0x905D, 0x905F, 0x9061, 0x9064, 0x9066, 0x9067, 0x906A, 0x906B, - 0x906C, 0x906F, 0x9070, 0x9071, 0x9073, 0x9076, 0x9079, 0x907B, 0x907E, - 0x9085, 0x9086, 0x9089, 0x908C, 0x908D, 0x908E, 0x9092, 0x9094, 0x9096, - 0x9098, 0x909A, 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, - 0x90A8, 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF, - 0x90C0, 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD, - 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, 0x90E0, - 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, 0x90EE, 0x90F0, 0x90F1, - 0x90F2, 0x90F3, 0x90F6, 0x90F7, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, - 0x9100, 0x9101, 0x9103, 0x9105, 0x9107, 0x9108, 0x910A, 0x910B, 0x910C, - 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9113, 0x9115, 0x9117, 0x9118, - 0x911A, 0x911B, 0x911C, 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, - 0x9126, 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912E, 0x9133, 0x9135, - 0x9137, 0x9138, 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, - 0x9142, 0x9144, 0x9145, 0x9147, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, - 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, 0x9168, - 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, 0x9181, 0x9182, - 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, 0x918F, 0x9193, 0x9194, - 0x9195, 0x9197, 0x9198, 0x9199, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, - 0x91A4, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91B0, 0x91B1, 0x91B2, - 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB, 0x91BC, 0x91BD, 0x91BE, - 0x91BF, 0x91C2, 0x91C4, 0x91C6, 0x91C8, 0x91D0, 0x91D6, 0x91DA, 0x91DB, - 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E5, 0x91E6, 0x91E8, 0x91EA, - 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3, - 0x91F4, 0x91F6, 0x91F8, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF, 0x9202, - 0x9203, 0x9205, 0x9206, 0x9207, 0x920A, 0x920B, 0x920C, 0x920F, 0x9212, - 0x9213, 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, - 0x921F, 0x9220, 0x9221, 0x9222, 0x9224, 0x9228, 0x9229, 0x922A, 0x922B, - 0x922C, 0x922D, 0x922F, 0x9231, 0x9232, 0x9235, 0x9236, 0x923B, 0x923C, - 0x9241, 0x9242, 0x9243, 0x9244, 0x9246, 0x9247, 0x924A, 0x924B, 0x924C, - 0x924E, 0x924F, 0x9250, 0x9252, 0x9253, 0x9254, 0x9256, 0x9258, 0x9259, - 0x925C, 0x925D, 0x925F, 0x9260, 0x9261, 0x9263, 0x9264, 0x9265, 0x9267, - 0x9268, 0x9269, 0x926A, 0x926B, 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, - 0x9273, 0x9275, 0x9276, 0x9277, 0x9279, 0x927C, 0x927D, 0x927E, 0x9281, - 0x9282, 0x9284, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C, - 0x928D, 0x928F, 0x9290, 0x9292, 0x9294, 0x9295, 0x9297, 0x9299, 0x929B, - 0x929D, 0x929E, 0x929F, 0x92A1, 0x92A2, 0x92A4, 0x92A7, 0x92AD, 0x92AF, - 0x92B0, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B8, 0x92BA, 0x92BD, - 0x92BE, 0x92BF, 0x92C0, 0x92C2, 0x92C4, 0x92C6, 0x92C9, 0x92CA, 0x92CB, - 0x92CD, 0x92CE, 0x92D0, 0x92D1, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, - 0x92D8, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DE, 0x92E0, 0x92E1, 0x92E2, - 0x92E7, 0x92E9, 0x92EB, 0x92EC, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F7, - 0x92F9, 0x92FA, 0x92FB, 0x92FD, 0x92FE, 0x92FF, 0x9300, 0x9302, 0x9303, - 0x9304, 0x9305, 0x9309, 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, - 0x9311, 0x9313, 0x9314, 0x9316, 0x9317, 0x931C, 0x931D, 0x931E, 0x9321, - 0x9323, 0x9324, 0x9325, 0x9327, 0x9329, 0x932A, 0x932C, 0x932D, 0x9330, - 0x9331, 0x9334, 0x9335, 0x9337, 0x9339, 0x933A, 0x933B, 0x933C, 0x933D, - 0x933F, 0x9342, 0x9344, 0x9345, 0x9348, 0x9349, 0x934A, 0x934C, 0x934E, - 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0x9355, 0x9356, 0x9357, 0x9359, - 0x935A, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, 0x9362, 0x9363, - 0x9366, 0x9367, 0x9368, 0x936B, 0x936D, 0x936E, 0x936F, 0x9371, 0x9372, - 0x9373, 0x9374, 0x9377, 0x9378, 0x9379, 0x937B, 0x937C, 0x937D, 0x937F, - 0x9380, 0x9381, 0x9383, 0x9385, 0x9386, 0x9388, 0x9389, 0x938B, 0x938C, - 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9397, - 0x9399, 0x939A, 0x939B, 0x939C, 0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1, - 0x93A4, 0x93A5, 0x93A8, 0x93AB, 0x93AD, 0x93AF, 0x93B1, 0x93B2, 0x93B4, - 0x93B6, 0x93B7, 0x93B9, 0x93BA, 0x93BB, 0x93BC, 0x93BD, 0x93BE, 0x93C0, - 0x93C1, 0x93C2, 0x93C4, 0x93C5, 0x93C6, 0x93C9, 0x93CB, 0x93CE, 0x93CF, - 0x93D0, 0x93D2, 0x93D3, 0x93D4, 0x93D5, 0x93D9, 0x93DA, 0x93DB, 0x93E0, - 0x93E3, 0x93E5, 0x93E6, 0x93E7, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, - 0x93EE, 0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F6, 0x93F8, - 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402, - 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A, 0x940C, 0x940D, - 0x940E, 0x940F, 0x9411, 0x9415, 0x9416, 0x9417, 0x941A, 0x941B, 0x941C, - 0x941E, 0x941F, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9429, 0x942A, - 0x942B, 0x942C, 0x942D, 0x942F, 0x9430, 0x9431, 0x9434, 0x9436, 0x9437, - 0x9439, 0x943B, 0x943C, 0x943D, 0x9440, 0x9441, 0x9442, 0x9443, 0x9445, - 0x9446, 0x9447, 0x9448, 0x9449, 0x944B, 0x944D, 0x944E, 0x944F, 0x9450, - 0x9451, 0x9453, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945A, 0x945B, - 0x945C, 0x945D, 0x945E, 0x945F, 0x9461, 0x9462, 0x9464, 0x9466, 0x9467, - 0x9468, 0x9469, 0x946A, 0x946C, 0x946E, 0x946F, 0x9471, 0x9473, 0x9474, - 0x9475, 0x9476, 0x9478, 0x947A, 0x947B, 0x9480, 0x9481, 0x9482, 0x9483, - 0x9484, 0x9491, 0x9496, 0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, - 0x94E6, 0x94FB, 0x951C, 0x9520, 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, - 0x954B, 0x9555, 0x955A, 0x9560, 0x956E, 0x9574, 0x9575, 0x9578, 0x9579, - 0x957A, 0x957B, 0x957C, 0x957D, 0x957E, 0x9581, 0x9584, 0x9585, 0x9587, - 0x9588, 0x958A, 0x958D, 0x9590, 0x9592, 0x9595, 0x9596, 0x9597, 0x9599, - 0x959A, 0x959B, 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A2, 0x95A6, - 0x95A7, 0x95AA, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B3, 0x95B4, 0x95B5, - 0x95B7, 0x95B8, 0x95BA, 0x95C0, 0x95C1, 0x95C2, 0x95C4, 0x95C5, 0x95C7, - 0x95C9, 0x95CD, 0x95CE, 0x95CF, 0x95D1, 0x95D2, 0x95D3, 0x95D7, 0x95D8, - 0x95D9, 0x95DA, 0x95DB, 0x95DD, 0x95DF, 0x95E0, 0x95E3, 0x95E4, 0x95E6, - 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, 0x961B, 0x961E, 0x9620, - 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628, 0x9629, 0x962B, 0x962C, - 0x962D, 0x962F, 0x9630, 0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, - 0x9643, 0x964A, 0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, - 0x9659, 0x965A, 0x965C, 0x965E, 0x9660, 0x9665, 0x9666, 0x966B, 0x966D, - 0x966E, 0x966F, 0x9671, 0x9679, 0x967A, 0x967B, 0x967C, 0x967E, 0x967F, - 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968C, 0x9691, - 0x9692, 0x9693, 0x9696, 0x969A, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1, - 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A9, 0x96AB, 0x96AC, 0x96AD, - 0x96AE, 0x96AF, 0x96B2, 0x96B5, 0x96B7, 0x96BA, 0x96BF, 0x96C2, 0x96C3, - 0x96C8, 0x96CA, 0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D7, 0x96D8, - 0x96DA, 0x96DD, 0x96DE, 0x96DF, 0x96E1, 0x96E4, 0x96E5, 0x96E6, 0x96E7, - 0x96EB, 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F4, 0x96F5, 0x96F8, - 0x96FA, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, 0x970B, - 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719, - 0x971A, 0x971B, 0x971D, 0x971F, 0x9720, 0x9721, 0x9722, 0x9723, 0x9724, - 0x9725, 0x9726, 0x9728, 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, - 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973F, - 0x9740, 0x9741, 0x9743, 0x9745, 0x9746, 0x9747, 0x9749, 0x974A, 0x974B, - 0x974C, 0x974D, 0x974E, 0x974F, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, - 0x9758, 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x976A, - 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771, 0x9772, 0x9775, - 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D, 0x977E, 0x977F, 0x9780, - 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787, 0x9788, 0x9789, 0x978A, - 0x978C, 0x978E, 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, - 0x979B, 0x979C, 0x979D, 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, - 0x97A7, 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3, - 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC, 0x97BE, - 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C4, 0x97C5, 0x97C7, 0x97C8, 0x97CA, - 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D4, 0x97D5, 0x97D6, - 0x97D7, 0x97D8, 0x97DA, 0x97DB, 0x97DD, 0x97DF, 0x97E0, 0x97E1, 0x97E2, - 0x97E3, 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, - 0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, 0x97FE, - 0x9800, 0x9804, 0x9809, 0x980B, 0x980D, 0x9814, 0x9815, 0x9816, 0x9819, - 0x981A, 0x981B, 0x981D, 0x981E, 0x981F, 0x9820, 0x9822, 0x9823, 0x9825, - 0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982E, 0x982F, 0x9831, - 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9839, 0x983A, 0x983C, 0x983E, - 0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9847, 0x9848, - 0x9849, 0x984A, 0x984B, 0x984F, 0x9850, 0x9851, 0x9852, 0x9855, 0x9856, - 0x9857, 0x985A, 0x985C, 0x985D, 0x985F, 0x9860, 0x9861, 0x9863, 0x9864, - 0x9866, 0x9868, 0x9869, 0x986A, 0x986D, 0x986E, 0x9872, 0x988B, 0x988E, - 0x9892, 0x9895, 0x9899, 0x98A3, 0x98A9, 0x98AA, 0x98AB, 0x98AC, 0x98AD, - 0x98B0, 0x98B2, 0x98B4, 0x98B5, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB, - 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3, 0x98C5, 0x98C7, - 0x98C9, 0x98CA, 0x98CB, 0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6, - 0x98D7, 0x98DC, 0x98DD, 0x98E1, 0x98E3, 0x98E4, 0x98E5, 0x98E6, 0x98EC, - 0x98EE, 0x98F0, 0x98F1, 0x98F3, 0x98F5, 0x98F6, 0x98F7, 0x98F8, 0x98F9, - 0x98FA, 0x98FB, 0x98FF, 0x9900, 0x9901, 0x9902, 0x9904, 0x9906, 0x9907, - 0x9908, 0x990B, 0x990E, 0x990F, 0x9914, 0x9915, 0x9916, 0x9917, 0x9919, - 0x991A, 0x991C, 0x991D, 0x991F, 0x9920, 0x9922, 0x9923, 0x9924, 0x9925, - 0x9926, 0x9927, 0x9929, 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, - 0x9931, 0x9932, 0x9934, 0x9935, 0x9936, 0x9938, 0x9939, 0x993A, 0x993B, - 0x993D, 0x9940, 0x9941, 0x9942, 0x9944, 0x9946, 0x9947, 0x994D, 0x994E, - 0x994F, 0x9950, 0x9953, 0x9956, 0x9958, 0x9959, 0x995A, 0x995B, 0x995D, - 0x995F, 0x9960, 0x9961, 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, - 0x997E, 0x9982, 0x9983, 0x9989, 0x998C, 0x998E, 0x999A, 0x999B, 0x999C, - 0x999D, 0x999E, 0x999F, 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, - 0x99A7, 0x99A9, 0x99AA, 0x99AB, 0x99AF, 0x99B0, 0x99B2, 0x99B5, 0x99B6, - 0x99B7, 0x99B8, 0x99B9, 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, - 0x99C0, 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9, - 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D3, 0x99D6, 0x99D7, - 0x99DA, 0x99DC, 0x99DE, 0x99E0, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, - 0x99E8, 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99EE, 0x99EF, 0x99F0, 0x99F2, - 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, 0x99F9, 0x99FA, 0x99FB, - 0x99FC, 0x99FD, 0x99FE, 0x9A00, 0x9A02, 0x9A03, 0x9A04, 0x9A06, 0x9A07, - 0x9A08, 0x9A09, 0x9A0A, 0x9A0B, 0x9A0C, 0x9A10, 0x9A11, 0x9A12, 0x9A13, - 0x9A14, 0x9A15, 0x9A17, 0x9A18, 0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E, - 0x9A1F, 0x9A20, 0x9A21, 0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27, - 0x9A28, 0x9A29, 0x9A2A, 0x9A2C, 0x9A2F, 0x9A31, 0x9A32, 0x9A33, 0x9A34, - 0x9A35, 0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3F, 0x9A46, 0x9A47, - 0x9A48, 0x9A49, 0x9A4B, 0x9A4C, 0x9A4E, 0x9A50, 0x9A51, 0x9A52, 0x9A53, - 0x9A54, 0x9A56, 0x9A58, 0x9A59, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A60, 0x9A61, - 0x9A63, 0x9A66, 0x9A67, 0x9A68, 0x9A69, 0x9A6B, 0x9A72, 0x9A83, 0x9A89, - 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB, - 0x9AAC, 0x9AAD, 0x9AAE, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB, - 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9, - 0x9ACA, 0x9ACD, 0x9ACE, 0x9AD0, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC, - 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8, - 0x9AE9, 0x9AEA, 0x9AEC, 0x9AF0, 0x9AF1, 0x9AF2, 0x9AF3, 0x9AF4, 0x9AF5, - 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC, 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, - 0x9B01, 0x9B02, 0x9B04, 0x9B05, 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, - 0x9B0E, 0x9B10, 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18, - 0x9B19, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B24, 0x9B26, - 0x9B28, 0x9B2A, 0x9B2B, 0x9B2C, 0x9B2D, 0x9B30, 0x9B33, 0x9B34, 0x9B35, - 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F, 0x9B40, - 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B50, 0x9B52, 0x9B53, 0x9B55, 0x9B56, - 0x9B57, 0x9B59, 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, - 0x9B62, 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A, - 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B70, 0x9B71, 0x9B72, 0x9B73, 0x9B75, - 0x9B76, 0x9B78, 0x9B79, 0x9B7A, 0x9B7B, 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, - 0x9B80, 0x9B82, 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, - 0x9B8B, 0x9B8C, 0x9B8D, 0x9B8F, 0x9B93, 0x9B94, 0x9B95, 0x9B96, 0x9B97, - 0x9B98, 0x9B99, 0x9B9B, 0x9B9C, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3, - 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAC, 0x9BAF, 0x9BB0, - 0x9BB1, 0x9BB2, 0x9BB3, 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, - 0x9BBA, 0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC2, 0x9BC3, 0x9BC4, - 0x9BC5, 0x9BC6, 0x9BC8, 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, - 0x9BD1, 0x9BD2, 0x9BD3, 0x9BD5, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, 0x9BDC, - 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE3, 0x9BE5, 0x9BE6, 0x9BE9, 0x9BEC, 0x9BED, - 0x9BEE, 0x9BEF, 0x9BF1, 0x9BF2, 0x9BF3, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, - 0x9BF9, 0x9BFA, 0x9BFB, 0x9BFC, 0x9BFE, 0x9C00, 0x9C01, 0x9C02, 0x9C03, - 0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C0A, 0x9C0B, 0x9C0C, 0x9C0E, 0x9C0F, - 0x9C11, 0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A, 0x9C1B, - 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C21, 0x9C22, 0x9C24, 0x9C26, 0x9C27, - 0x9C2A, 0x9C2B, 0x9C2C, 0x9C2E, 0x9C2F, 0x9C30, 0x9C34, 0x9C36, 0x9C38, - 0x9C3A, 0x9C3C, 0x9C3D, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43, 0x9C44, - 0x9C46, 0x9C47, 0x9C4A, 0x9C4B, 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50, - 0x9C51, 0x9C53, 0x9C55, 0x9C59, 0x9C5A, 0x9C5B, 0x9C5C, 0x9C5E, 0x9C60, - 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0x9C65, 0x9C66, 0x9C68, 0x9C69, 0x9C6A, - 0x9C6B, 0x9C6C, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73, 0x9C74, - 0x9C75, 0x9C76, 0x9C77, 0x9C79, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, - 0x9C84, 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, - 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0, - 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0, - 0x9CE1, 0x9CE3, 0x9CE4, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CEA, 0x9CEB, 0x9CED, - 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2, 0x9CF5, 0x9CF7, 0x9CF8, 0x9CF9, - 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02, - 0x9D03, 0x9D04, 0x9D05, 0x9D08, 0x9D0A, 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, - 0x9D0F, 0x9D10, 0x9D11, 0x9D12, 0x9D13, 0x9D14, 0x9D16, 0x9D17, 0x9D18, - 0x9D19, 0x9D1A, 0x9D1C, 0x9D1E, 0x9D20, 0x9D21, 0x9D22, 0x9D24, 0x9D25, - 0x9D27, 0x9D29, 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D31, 0x9D32, - 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39, 0x9D3A, 0x9D3C, - 0x9D3D, 0x9D3E, 0x9D40, 0x9D41, 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, - 0x9D48, 0x9D49, 0x9D4A, 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, - 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A, 0x9D5B, 0x9D5E, - 0x9D5F, 0x9D62, 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, - 0x9D6B, 0x9D6D, 0x9D6E, 0x9D70, 0x9D71, 0x9D73, 0x9D74, 0x9D75, 0x9D76, - 0x9D77, 0x9D78, 0x9D79, 0x9D7A, 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, - 0x9D80, 0x9D81, 0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D88, 0x9D8A, - 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, 0x9D92, 0x9D94, - 0x9D95, 0x9D96, 0x9D97, 0x9D99, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, - 0x9DA0, 0x9DA1, 0x9DA2, 0x9DA3, 0x9DA4, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DAA, - 0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DB0, 0x9DB1, 0x9DB2, 0x9DB3, 0x9DB5, - 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC1, - 0x9DC3, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0x9DCC, - 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD4, 0x9DD5, 0x9DD6, - 0x9DD8, 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1, 0x9DE2, - 0x9DE3, 0x9DE4, 0x9DE7, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED, - 0x9DEE, 0x9DF0, 0x9DF1, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DFB, 0x9DFC, - 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, 0x9E02, 0x9E03, 0x9E04, 0x9E05, - 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A, 0x9E0B, 0x9E0D, 0x9E0E, 0x9E0F, - 0x9E10, 0x9E11, 0x9E12, 0x9E13, 0x9E14, 0x9E16, 0x9E17, 0x9E18, 0x9E19, - 0x9E1C, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, 0x9E40, - 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F, - 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E76, - 0x9E77, 0x9E78, 0x9E7B, 0x9E80, 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, - 0x9E89, 0x9E8A, 0x9E8C, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94, - 0x9E95, 0x9E96, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0, - 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA7, 0x9EA8, 0x9EAA, 0x9EAB, 0x9EAC, - 0x9EAD, 0x9EAE, 0x9EB0, 0x9EB1, 0x9EB2, 0x9EB3, 0x9EB6, 0x9EB7, 0x9EB9, - 0x9EBA, 0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, - 0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6, - 0x9ED7, 0x9ED9, 0x9EDA, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, 0x9EEB, 0x9EEC, - 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF3, 0x9EF5, 0x9EF6, 0x9EF8, 0x9EFA, - 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05, 0x9F06, 0x9F07, 0x9F08, - 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, 0x9F12, 0x9F14, 0x9F16, 0x9F18, 0x9F1A, - 0x9F1B, 0x9F1C, 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, - 0x9F26, 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30, - 0x9F31, 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C, - 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47, 0x9F48, - 0x9F49, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F53, 0x9F55, 0x9F56, 0x9F57, 0x9F58, - 0x9F5A, 0x9F5B, 0x9F5D, 0x9F5E, 0x9F62, 0x9F64, 0x9F65, 0x9F67, 0x9F68, - 0x9F69, 0x9F6B, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F73, 0x9F74, - 0x9F75, 0x9F76, 0x9F78, 0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, - 0x9F81, 0x9F82, 0x9F8E, 0x9F8F, 0x9F91, 0x9F92, 0x9F93, 0x9F96, 0x9F97, - 0x9F98, 0x9F9D, 0x9F9E, 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, - 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20, - 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, 0x2E81, 0x0000, 0x0000, - 0x0000, 0x2E84, 0x3473, 0x3447, 0x2E88, 0x2E8B, 0x9FB4, 0x359E, 0x361A, - 0x360E, 0x2E8C, 0x2E97, 0x396E, 0x3918, 0x9FB5, 0x39CF, 0x39DF, 0x3A73, - 0x39D0, 0x9FB6, 0x9FB7, 0x3B4E, 0x3C6E, 0x3CE0, 0x2EA7, 0x0000, 0x9FB8, - 0x2EAA, 0x4056, 0x415F, 0x2EAE, 0x4337, 0x2EB3, 0x2EB6, 0x2EB7, 0x0000, - 0x43B1, 0x43AC, 0x2EBB, 0x43DD, 0x44D6, 0x4661, 0x464C, 0x9FB9, 0x4723, - 0x4729, 0x477C, 0x478D, 0x2ECA, 0x4947, 0x497A, 0x497D, 0x4982, 0x4983, - 0x4985, 0x4986, 0x499F, 0x499B, 0x49B7, 0x49B6, 0x9FBA, 0x0000, 0x4CA3, - 0x4C9F, 0x4CA0, 0x4CA1, 0x4C77, 0x4CA2, 0x4D13, 0x4D14, 0x4D15, 0x4D16, - 0x4D17, 0x4D18, 0x4D19, 0x4DAE, 0x9FBB, 0x0020, 0x0021, 0x0022, 0x0023, - 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, - 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, - 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, - 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, - 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, - 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, - 0x007E, 0x00FC, 0x00A9, 0x2122, 0x2026, 0x0021, 0x0022, 0x0023, 0x0024, - 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, - 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, - 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, - 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, - 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, - 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, - 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, - 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, - 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, - 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, - 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B, - 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA, - 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, - 0x1E3F, 0x0144, 0x0148, 0x01F9, 0x0261, 0x0020, 0x20AC, 0x00A5, 0x20AC, - 0x0024, 0x303F, 0x20AC, 0x3041, 0x3047, 0x3043, 0x304B, 0x304B, 0x3051, - 0x3051, 0x3053, 0x3053, 0x3049, 0x3064, 0x3045, 0x308E, 0x3083, 0x3087, - 0x3085, 0x3094, 0x30A1, 0x30A7, 0x30A3, 0x30F5, 0x30F6, 0x30B3, 0x30B3, - 0x30A9, 0x30C3, 0x30A5, 0x30EE, 0x30E3, 0x30E7, 0x30E5, 0x30F7, 0x30F9, - 0x30F8, 0x30FA, 0x30FC, 0x3033, 0x3034, 0x3035, 0x3038, 0x3039, 0x303A, - 0x312A, 0x312B, 0x312C, 0x31A0, 0x31A1, 0x31A2, 0x31A3, 0x31A4, 0x31A5, - 0x31A6, 0x31A7, 0x31A8, 0x31A9, 0x31AA, 0x31AB, 0x31AC, 0x31AD, 0x31AE, - 0x31AF, 0x31B0, 0x31B1, 0x31B2, 0x31B3, 0x31B4, 0x31B5, 0x31B6, 0x31B7, - 0x2E80, 0x2E82, 0x2E83, 0x2E85, 0x2E86, 0x2E87, 0x2E89, 0x2E8A, 0x2E8D, - 0x2E8E, 0x2E8F, 0x2E90, 0x2E91, 0x2E92, 0x2E93, 0x2E94, 0x2E95, 0x2E96, - 0x2E98, 0x2E99, 0x2E9B, 0x2E9C, 0x2E9D, 0x2E9E, 0x2E9F, 0x2EA0, 0x2EA1, - 0x2EA2, 0x2EA3, 0x2EA4, 0x2EA5, 0x2EA6, 0x2EA8, 0x2EA9, 0x2EAB, 0x2EAC, - 0x2EAD, 0x2EAF, 0x2EB0, 0x2EB1, 0x2EB2, 0x2EB4, 0x2EB5, 0x2EB8, 0x2EB9, - 0x2EBA, 0x2EBC, 0x2EBD, 0x2EBE, 0x2EBF, 0x2EC0, 0x2EC1, 0x2EC2, 0x2EC3, - 0x2EC4, 0x2EC5, 0x2EC6, 0x2EC7, 0x2EC8, 0x2EC9, 0x2ECB, 0x2ECC, 0x2ECD, - 0x2ECE, 0x2ECF, 0x2ED0, 0x2ED1, 0x2ED2, 0x2ED3, 0x2ED4, 0x2ED5, 0x2ED6, - 0x2ED7, 0x2ED8, 0x2ED9, 0x2EDA, 0x2EDB, 0x2EDC, 0x2EDD, 0x2EDE, 0x2EDF, - 0x2EE0, 0x2EE1, 0x2EE2, 0x2EE3, 0x2EE4, 0x2EE5, 0x2EE6, 0x2EE7, 0x2EE8, - 0x2EE9, 0x2EEA, 0x2EEB, 0x2EEC, 0x2EED, 0x2EEE, 0x2EEF, 0x2EF0, 0x2EF1, - 0x2EF2, 0x2EF3, 0x3400, 0x3401, 0x3402, 0x3403, 0x3404, 0x3405, 0x3406, - 0x3407, 0x3408, 0x3409, 0x340A, 0x340B, 0x340C, 0x340D, 0x340E, 0x340F, - 0x3410, 0x3411, 0x3412, 0x3413, 0x3414, 0x3415, 0x3416, 0x3417, 0x3418, - 0x3419, 0x341A, 0x341B, 0x341C, 0x341D, 0x341E, 0x341F, 0x3420, 0x3421, - 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427, 0x3428, 0x3429, 0x342A, - 0x342B, 0x342C, 0x342D, 0x342E, 0x342F, 0x3430, 0x3431, 0x3432, 0x3433, - 0x3434, 0x3435, 0x3436, 0x3437, 0x3438, 0x3439, 0x343A, 0x343B, 0x343C, - 0x343D, 0x343E, 0x343F, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, - 0x3446, 0x3448, 0x3449, 0x344A, 0x344B, 0x344C, 0x344D, 0x344E, 0x344F, - 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457, 0x3458, - 0x3459, 0x345A, 0x345B, 0x345C, 0x345D, 0x345E, 0x345F, 0x3460, 0x3461, - 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467, 0x3468, 0x3469, 0x346A, - 0x346B, 0x346C, 0x346D, 0x346E, 0x346F, 0x3470, 0x3471, 0x3472, 0x3474, - 0x3475, 0x3476, 0x3477, 0x3478, 0x3479, 0x347A, 0x347B, 0x347C, 0x347D, - 0x347E, 0x347F, 0x3480, 0x3481, 0x3482, 0x3483, 0x3484, 0x3485, 0x3486, - 0x3487, 0x3488, 0x3489, 0x348A, 0x348B, 0x348C, 0x348D, 0x348E, 0x348F, - 0x3490, 0x3491, 0x3492, 0x3493, 0x3494, 0x3495, 0x3496, 0x3497, 0x3498, - 0x3499, 0x349A, 0x349B, 0x349C, 0x349D, 0x349E, 0x349F, 0x34A0, 0x34A1, - 0x34A2, 0x34A3, 0x34A4, 0x34A5, 0x34A6, 0x34A7, 0x34A8, 0x34A9, 0x34AA, - 0x34AB, 0x34AC, 0x34AD, 0x34AE, 0x34AF, 0x34B0, 0x34B1, 0x34B2, 0x34B3, - 0x34B4, 0x34B5, 0x34B6, 0x34B7, 0x34B8, 0x34B9, 0x34BA, 0x34BB, 0x34BC, - 0x34BD, 0x34BE, 0x34BF, 0x34C0, 0x34C1, 0x34C2, 0x34C3, 0x34C4, 0x34C5, - 0x34C6, 0x34C7, 0x34C8, 0x34C9, 0x34CA, 0x34CB, 0x34CC, 0x34CD, 0x34CE, - 0x34CF, 0x34D0, 0x34D1, 0x34D2, 0x34D3, 0x34D4, 0x34D5, 0x34D6, 0x34D7, - 0x34D8, 0x34D9, 0x34DA, 0x34DB, 0x34DC, 0x34DD, 0x34DE, 0x34DF, 0x34E0, - 0x34E1, 0x34E2, 0x34E3, 0x34E4, 0x34E5, 0x34E6, 0x34E7, 0x34E8, 0x34E9, - 0x34EA, 0x34EB, 0x34EC, 0x34ED, 0x34EE, 0x34EF, 0x34F0, 0x34F1, 0x34F2, - 0x34F3, 0x34F4, 0x34F5, 0x34F6, 0x34F7, 0x34F8, 0x34F9, 0x34FA, 0x34FB, - 0x34FC, 0x34FD, 0x34FE, 0x34FF, 0x3500, 0x3501, 0x3502, 0x3503, 0x3504, - 0x3505, 0x3506, 0x3507, 0x3508, 0x3509, 0x350A, 0x350B, 0x350C, 0x350D, - 0x350E, 0x350F, 0x3510, 0x3511, 0x3512, 0x3513, 0x3514, 0x3515, 0x3516, - 0x3517, 0x3518, 0x3519, 0x351A, 0x351B, 0x351C, 0x351D, 0x351E, 0x351F, - 0x3520, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528, - 0x3529, 0x352A, 0x352B, 0x352C, 0x352D, 0x352E, 0x352F, 0x3530, 0x3531, - 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538, 0x3539, 0x353A, - 0x353B, 0x353C, 0x353D, 0x353E, 0x353F, 0x3540, 0x3541, 0x3542, 0x3543, - 0x3544, 0x3545, 0x3546, 0x3547, 0x3548, 0x3549, 0x354A, 0x354B, 0x354C, - 0x354D, 0x354E, 0x354F, 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, - 0x3556, 0x3557, 0x3558, 0x3559, 0x355A, 0x355B, 0x355C, 0x355D, 0x355E, - 0x355F, 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, - 0x3568, 0x3569, 0x356A, 0x356B, 0x356C, 0x356D, 0x356E, 0x356F, 0x3570, - 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578, 0x3579, - 0x357A, 0x357B, 0x357C, 0x357D, 0x357E, 0x357F, 0x3580, 0x3581, 0x3582, - 0x3583, 0x3584, 0x3585, 0x3586, 0x3587, 0x3588, 0x3589, 0x358A, 0x358B, - 0x358C, 0x358D, 0x358E, 0x358F, 0x3590, 0x3591, 0x3592, 0x3593, 0x3594, - 0x3595, 0x3596, 0x3597, 0x3598, 0x3599, 0x359A, 0x359B, 0x359C, 0x359D, - 0x359F, 0x35A0, 0x35A1, 0x35A2, 0x35A3, 0x35A4, 0x35A5, 0x35A6, 0x35A7, - 0x35A8, 0x35A9, 0x35AA, 0x35AB, 0x35AC, 0x35AD, 0x35AE, 0x35AF, 0x35B0, - 0x35B1, 0x35B2, 0x35B3, 0x35B4, 0x35B5, 0x35B6, 0x35B7, 0x35B8, 0x35B9, - 0x35BA, 0x35BB, 0x35BC, 0x35BD, 0x35BE, 0x35BF, 0x35C0, 0x35C1, 0x35C2, - 0x35C3, 0x35C4, 0x35C5, 0x35C6, 0x35C7, 0x35C8, 0x35C9, 0x35CA, 0x35CB, - 0x35CC, 0x35CD, 0x35CE, 0x35CF, 0x35D0, 0x35D1, 0x35D2, 0x35D3, 0x35D4, - 0x35D5, 0x35D6, 0x35D7, 0x35D8, 0x35D9, 0x35DA, 0x35DB, 0x35DC, 0x35DD, - 0x35DE, 0x35DF, 0x35E0, 0x35E1, 0x35E2, 0x35E3, 0x35E4, 0x35E5, 0x35E6, - 0x35E7, 0x35E8, 0x35E9, 0x35EA, 0x35EB, 0x35EC, 0x35ED, 0x35EE, 0x35EF, - 0x35F0, 0x35F1, 0x35F2, 0x35F3, 0x35F4, 0x35F5, 0x35F6, 0x35F7, 0x35F8, - 0x35F9, 0x35FA, 0x35FB, 0x35FC, 0x35FD, 0x35FE, 0x35FF, 0x3600, 0x3601, - 0x3602, 0x3603, 0x3604, 0x3605, 0x3606, 0x3607, 0x3608, 0x3609, 0x360A, - 0x360B, 0x360C, 0x360D, 0x360F, 0x3610, 0x3611, 0x3612, 0x3613, 0x3614, - 0x3615, 0x3616, 0x3617, 0x3618, 0x3619, 0x361B, 0x361C, 0x361D, 0x361E, - 0x361F, 0x3620, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, - 0x3628, 0x3629, 0x362A, 0x362B, 0x362C, 0x362D, 0x362E, 0x362F, 0x3630, - 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, - 0x363A, 0x363B, 0x363C, 0x363D, 0x363E, 0x363F, 0x3640, 0x3641, 0x3642, - 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364A, 0x364B, - 0x364C, 0x364D, 0x364E, 0x364F, 0x3650, 0x3651, 0x3652, 0x3653, 0x3654, - 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365A, 0x365B, 0x365C, 0x365D, - 0x365E, 0x365F, 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666, - 0x3667, 0x3668, 0x3669, 0x366A, 0x366B, 0x366C, 0x366D, 0x366E, 0x366F, - 0x3670, 0x3671, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, - 0x3679, 0x367A, 0x367B, 0x367C, 0x367D, 0x367E, 0x367F, 0x3680, 0x3681, - 0x3682, 0x3683, 0x3684, 0x3685, 0x3686, 0x3687, 0x3688, 0x3689, 0x368A, - 0x368B, 0x368C, 0x368D, 0x368E, 0x368F, 0x3690, 0x3691, 0x3692, 0x3693, - 0x3694, 0x3695, 0x3696, 0x3697, 0x3698, 0x3699, 0x369A, 0x369B, 0x369C, - 0x369D, 0x369E, 0x369F, 0x36A0, 0x36A1, 0x36A2, 0x36A3, 0x36A4, 0x36A5, - 0x36A6, 0x36A7, 0x36A8, 0x36A9, 0x36AA, 0x36AB, 0x36AC, 0x36AD, 0x36AE, - 0x36AF, 0x36B0, 0x36B1, 0x36B2, 0x36B3, 0x36B4, 0x36B5, 0x36B6, 0x36B7, - 0x36B8, 0x36B9, 0x36BA, 0x36BB, 0x36BC, 0x36BD, 0x36BE, 0x36BF, 0x36C0, - 0x36C1, 0x36C2, 0x36C3, 0x36C4, 0x36C5, 0x36C6, 0x36C7, 0x36C8, 0x36C9, - 0x36CA, 0x36CB, 0x36CC, 0x36CD, 0x36CE, 0x36CF, 0x36D0, 0x36D1, 0x36D2, - 0x36D3, 0x36D4, 0x36D5, 0x36D6, 0x36D7, 0x36D8, 0x36D9, 0x36DA, 0x36DB, - 0x36DC, 0x36DD, 0x36DE, 0x36DF, 0x36E0, 0x36E1, 0x36E2, 0x36E3, 0x36E4, - 0x36E5, 0x36E6, 0x36E7, 0x36E8, 0x36E9, 0x36EA, 0x36EB, 0x36EC, 0x36ED, - 0x36EE, 0x36EF, 0x36F0, 0x36F1, 0x36F2, 0x36F3, 0x36F4, 0x36F5, 0x36F6, - 0x36F7, 0x36F8, 0x36F9, 0x36FA, 0x36FB, 0x36FC, 0x36FD, 0x36FE, 0x36FF, - 0x3700, 0x3701, 0x3702, 0x3703, 0x3704, 0x3705, 0x3706, 0x3707, 0x3708, - 0x3709, 0x370A, 0x370B, 0x370C, 0x370D, 0x370E, 0x370F, 0x3710, 0x3711, - 0x3712, 0x3713, 0x3714, 0x3715, 0x3716, 0x3717, 0x3718, 0x3719, 0x371A, - 0x371B, 0x371C, 0x371D, 0x371E, 0x371F, 0x3720, 0x3721, 0x3722, 0x3723, - 0x3724, 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372A, 0x372B, 0x372C, - 0x372D, 0x372E, 0x372F, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735, - 0x3736, 0x3737, 0x3738, 0x3739, 0x373A, 0x373B, 0x373C, 0x373D, 0x373E, - 0x373F, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, - 0x3748, 0x3749, 0x374A, 0x374B, 0x374C, 0x374D, 0x374E, 0x374F, 0x3750, - 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757, 0x3758, 0x3759, - 0x375A, 0x375B, 0x375C, 0x375D, 0x375E, 0x375F, 0x3760, 0x3761, 0x3762, - 0x3763, 0x3764, 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376A, 0x376B, - 0x376C, 0x376D, 0x376E, 0x376F, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774, - 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377A, 0x377B, 0x377C, 0x377D, - 0x377E, 0x377F, 0x3780, 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786, - 0x3787, 0x3788, 0x3789, 0x378A, 0x378B, 0x378C, 0x378D, 0x378E, 0x378F, - 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796, 0x3797, 0x3798, - 0x3799, 0x379A, 0x379B, 0x379C, 0x379D, 0x379E, 0x379F, 0x37A0, 0x37A1, - 0x37A2, 0x37A3, 0x37A4, 0x37A5, 0x37A6, 0x37A7, 0x37A8, 0x37A9, 0x37AA, - 0x37AB, 0x37AC, 0x37AD, 0x37AE, 0x37AF, 0x37B0, 0x37B1, 0x37B2, 0x37B3, - 0x37B4, 0x37B5, 0x37B6, 0x37B7, 0x37B8, 0x37B9, 0x37BA, 0x37BB, 0x37BC, - 0x37BD, 0x37BE, 0x37BF, 0x37C0, 0x37C1, 0x37C2, 0x37C3, 0x37C4, 0x37C5, - 0x37C6, 0x37C7, 0x37C8, 0x37C9, 0x37CA, 0x37CB, 0x37CC, 0x37CD, 0x37CE, - 0x37CF, 0x37D0, 0x37D1, 0x37D2, 0x37D3, 0x37D4, 0x37D5, 0x37D6, 0x37D7, - 0x37D8, 0x37D9, 0x37DA, 0x37DB, 0x37DC, 0x37DD, 0x37DE, 0x37DF, 0x37E0, - 0x37E1, 0x37E2, 0x37E3, 0x37E4, 0x37E5, 0x37E6, 0x37E7, 0x37E8, 0x37E9, - 0x37EA, 0x37EB, 0x37EC, 0x37ED, 0x37EE, 0x37EF, 0x37F0, 0x37F1, 0x37F2, - 0x37F3, 0x37F4, 0x37F5, 0x37F6, 0x37F7, 0x37F8, 0x37F9, 0x37FA, 0x37FB, - 0x37FC, 0x37FD, 0x37FE, 0x37FF, 0x3800, 0x3801, 0x3802, 0x3803, 0x3804, - 0x3805, 0x3806, 0x3807, 0x3808, 0x3809, 0x380A, 0x380B, 0x380C, 0x380D, - 0x380E, 0x380F, 0x3810, 0x3811, 0x3812, 0x3813, 0x3814, 0x3815, 0x3816, - 0x3817, 0x3818, 0x3819, 0x381A, 0x381B, 0x381C, 0x381D, 0x381E, 0x381F, - 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827, 0x3828, - 0x3829, 0x382A, 0x382B, 0x382C, 0x382D, 0x382E, 0x382F, 0x3830, 0x3831, - 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837, 0x3838, 0x3839, 0x383A, - 0x383B, 0x383C, 0x383D, 0x383E, 0x383F, 0x3840, 0x3841, 0x3842, 0x3843, - 0x3844, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849, 0x384A, 0x384B, 0x384C, - 0x384D, 0x384E, 0x384F, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, - 0x3856, 0x3857, 0x3858, 0x3859, 0x385A, 0x385B, 0x385C, 0x385D, 0x385E, - 0x385F, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866, 0x3867, - 0x3868, 0x3869, 0x386A, 0x386B, 0x386C, 0x386D, 0x386E, 0x386F, 0x3870, - 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, 0x3878, 0x3879, - 0x387A, 0x387B, 0x387C, 0x387D, 0x387E, 0x387F, 0x3880, 0x3881, 0x3882, - 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, 0x3888, 0x3889, 0x388A, 0x388B, - 0x388C, 0x388D, 0x388E, 0x388F, 0x3890, 0x3891, 0x3892, 0x3893, 0x3894, - 0x3895, 0x3896, 0x3897, 0x3898, 0x3899, 0x389A, 0x389B, 0x389C, 0x389D, - 0x389E, 0x389F, 0x38A0, 0x38A1, 0x38A2, 0x38A3, 0x38A4, 0x38A5, 0x38A6, - 0x38A7, 0x38A8, 0x38A9, 0x38AA, 0x38AB, 0x38AC, 0x38AD, 0x38AE, 0x38AF, - 0x38B0, 0x38B1, 0x38B2, 0x38B3, 0x38B4, 0x38B5, 0x38B6, 0x38B7, 0x38B8, - 0x38B9, 0x38BA, 0x38BB, 0x38BC, 0x38BD, 0x38BE, 0x38BF, 0x38C0, 0x38C1, - 0x38C2, 0x38C3, 0x38C4, 0x38C5, 0x38C6, 0x38C7, 0x38C8, 0x38C9, 0x38CA, - 0x38CB, 0x38CC, 0x38CD, 0x38CE, 0x38CF, 0x38D0, 0x38D1, 0x38D2, 0x38D3, - 0x38D4, 0x38D5, 0x38D6, 0x38D7, 0x38D8, 0x38D9, 0x38DA, 0x38DB, 0x38DC, - 0x38DD, 0x38DE, 0x38DF, 0x38E0, 0x38E1, 0x38E2, 0x38E3, 0x38E4, 0x38E5, - 0x38E6, 0x38E7, 0x38E8, 0x38E9, 0x38EA, 0x38EB, 0x38EC, 0x38ED, 0x38EE, - 0x38EF, 0x38F0, 0x38F1, 0x38F2, 0x38F3, 0x38F4, 0x38F5, 0x38F6, 0x38F7, - 0x38F8, 0x38F9, 0x38FA, 0x38FB, 0x38FC, 0x38FD, 0x38FE, 0x38FF, 0x3900, - 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, 0x3908, 0x3909, - 0x390A, 0x390B, 0x390C, 0x390D, 0x390E, 0x390F, 0x3910, 0x3911, 0x3912, - 0x3913, 0x3914, 0x3915, 0x3916, 0x3917, 0x3919, 0x391A, 0x391B, 0x391C, - 0x391D, 0x391E, 0x391F, 0x3920, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, - 0x3926, 0x3927, 0x3928, 0x3929, 0x392A, 0x392B, 0x392C, 0x392D, 0x392E, - 0x392F, 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, - 0x3938, 0x3939, 0x393A, 0x393B, 0x393C, 0x393D, 0x393E, 0x393F, 0x3940, - 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949, - 0x394A, 0x394B, 0x394C, 0x394D, 0x394E, 0x394F, 0x3950, 0x3951, 0x3952, - 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959, 0x395A, 0x395B, - 0x395C, 0x395D, 0x395E, 0x395F, 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, - 0x3965, 0x3966, 0x3967, 0x3968, 0x3969, 0x396A, 0x396B, 0x396C, 0x396D, - 0x396F, 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, - 0x3978, 0x3979, 0x397A, 0x397B, 0x397C, 0x397D, 0x397E, 0x397F, 0x3980, - 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987, 0x3988, 0x3989, - 0x398A, 0x398B, 0x398C, 0x398D, 0x398E, 0x398F, 0x3990, 0x3991, 0x3992, - 0x3993, 0x3994, 0x3995, 0x3996, 0x3997, 0x3998, 0x3999, 0x399A, 0x399B, - 0x399C, 0x399D, 0x399E, 0x399F, 0x39A0, 0x39A1, 0x39A2, 0x39A3, 0x39A4, - 0x39A5, 0x39A6, 0x39A7, 0x39A8, 0x39A9, 0x39AA, 0x39AB, 0x39AC, 0x39AD, - 0x39AE, 0x39AF, 0x39B0, 0x39B1, 0x39B2, 0x39B3, 0x39B4, 0x39B5, 0x39B6, - 0x39B7, 0x39B8, 0x39B9, 0x39BA, 0x39BB, 0x39BC, 0x39BD, 0x39BE, 0x39BF, - 0x39C0, 0x39C1, 0x39C2, 0x39C3, 0x39C4, 0x39C5, 0x39C6, 0x39C7, 0x39C8, - 0x39C9, 0x39CA, 0x39CB, 0x39CC, 0x39CD, 0x39CE, 0x39D1, 0x39D2, 0x39D3, - 0x39D4, 0x39D5, 0x39D6, 0x39D7, 0x39D8, 0x39D9, 0x39DA, 0x39DB, 0x39DC, - 0x39DD, 0x39DE, 0x39E0, 0x39E1, 0x39E2, 0x39E3, 0x39E4, 0x39E5, 0x39E6, - 0x39E7, 0x39E8, 0x39E9, 0x39EA, 0x39EB, 0x39EC, 0x39ED, 0x39EE, 0x39EF, - 0x39F0, 0x39F1, 0x39F2, 0x39F3, 0x39F4, 0x39F5, 0x39F6, 0x39F7, 0x39F8, - 0x39F9, 0x39FA, 0x39FB, 0x39FC, 0x39FD, 0x39FE, 0x39FF, 0x3A00, 0x3A01, - 0x3A02, 0x3A03, 0x3A04, 0x3A05, 0x3A06, 0x3A07, 0x3A08, 0x3A09, 0x3A0A, - 0x3A0B, 0x3A0C, 0x3A0D, 0x3A0E, 0x3A0F, 0x3A10, 0x3A11, 0x3A12, 0x3A13, - 0x3A14, 0x3A15, 0x3A16, 0x3A17, 0x3A18, 0x3A19, 0x3A1A, 0x3A1B, 0x3A1C, - 0x3A1D, 0x3A1E, 0x3A1F, 0x3A20, 0x3A21, 0x3A22, 0x3A23, 0x3A24, 0x3A25, - 0x3A26, 0x3A27, 0x3A28, 0x3A29, 0x3A2A, 0x3A2B, 0x3A2C, 0x3A2D, 0x3A2E, - 0x3A2F, 0x3A30, 0x3A31, 0x3A32, 0x3A33, 0x3A34, 0x3A35, 0x3A36, 0x3A37, - 0x3A38, 0x3A39, 0x3A3A, 0x3A3B, 0x3A3C, 0x3A3D, 0x3A3E, 0x3A3F, 0x3A40, - 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45, 0x3A46, 0x3A47, 0x3A48, 0x3A49, - 0x3A4A, 0x3A4B, 0x3A4C, 0x3A4D, 0x3A4E, 0x3A4F, 0x3A50, 0x3A51, 0x3A52, - 0x3A53, 0x3A54, 0x3A55, 0x3A56, 0x3A57, 0x3A58, 0x3A59, 0x3A5A, 0x3A5B, - 0x3A5C, 0x3A5D, 0x3A5E, 0x3A5F, 0x3A60, 0x3A61, 0x3A62, 0x3A63, 0x3A64, - 0x3A65, 0x3A66, 0x3A67, 0x3A68, 0x3A69, 0x3A6A, 0x3A6B, 0x3A6C, 0x3A6D, - 0x3A6E, 0x3A6F, 0x3A70, 0x3A71, 0x3A72, 0x3A74, 0x3A75, 0x3A76, 0x3A77, - 0x3A78, 0x3A79, 0x3A7A, 0x3A7B, 0x3A7C, 0x3A7D, 0x3A7E, 0x3A7F, 0x3A80, - 0x3A81, 0x3A82, 0x3A83, 0x3A84, 0x3A85, 0x3A86, 0x3A87, 0x3A88, 0x3A89, - 0x3A8A, 0x3A8B, 0x3A8C, 0x3A8D, 0x3A8E, 0x3A8F, 0x3A90, 0x3A91, 0x3A92, - 0x3A93, 0x3A94, 0x3A95, 0x3A96, 0x3A97, 0x3A98, 0x3A99, 0x3A9A, 0x3A9B, - 0x3A9C, 0x3A9D, 0x3A9E, 0x3A9F, 0x3AA0, 0x3AA1, 0x3AA2, 0x3AA3, 0x3AA4, - 0x3AA5, 0x3AA6, 0x3AA7, 0x3AA8, 0x3AA9, 0x3AAA, 0x3AAB, 0x3AAC, 0x3AAD, - 0x3AAE, 0x3AAF, 0x3AB0, 0x3AB1, 0x3AB2, 0x3AB3, 0x3AB4, 0x3AB5, 0x3AB6, - 0x3AB7, 0x3AB8, 0x3AB9, 0x3ABA, 0x3ABB, 0x3ABC, 0x3ABD, 0x3ABE, 0x3ABF, - 0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3, 0x3AC4, 0x3AC5, 0x3AC6, 0x3AC7, 0x3AC8, - 0x3AC9, 0x3ACA, 0x3ACB, 0x3ACC, 0x3ACD, 0x3ACE, 0x3ACF, 0x3AD0, 0x3AD1, - 0x3AD2, 0x3AD3, 0x3AD4, 0x3AD5, 0x3AD6, 0x3AD7, 0x3AD8, 0x3AD9, 0x3ADA, - 0x3ADB, 0x3ADC, 0x3ADD, 0x3ADE, 0x3ADF, 0x3AE0, 0x3AE1, 0x3AE2, 0x3AE3, - 0x3AE4, 0x3AE5, 0x3AE6, 0x3AE7, 0x3AE8, 0x3AE9, 0x3AEA, 0x3AEB, 0x3AEC, - 0x3AED, 0x3AEE, 0x3AEF, 0x3AF0, 0x3AF1, 0x3AF2, 0x3AF3, 0x3AF4, 0x3AF5, - 0x3AF6, 0x3AF7, 0x3AF8, 0x3AF9, 0x3AFA, 0x3AFB, 0x3AFC, 0x3AFD, 0x3AFE, - 0x3AFF, 0x3B00, 0x3B01, 0x3B02, 0x3B03, 0x3B04, 0x3B05, 0x3B06, 0x3B07, - 0x3B08, 0x3B09, 0x3B0A, 0x3B0B, 0x3B0C, 0x3B0D, 0x3B0E, 0x3B0F, 0x3B10, - 0x3B11, 0x3B12, 0x3B13, 0x3B14, 0x3B15, 0x3B16, 0x3B17, 0x3B18, 0x3B19, - 0x3B1A, 0x3B1B, 0x3B1C, 0x3B1D, 0x3B1E, 0x3B1F, 0x3B20, 0x3B21, 0x3B22, - 0x3B23, 0x3B24, 0x3B25, 0x3B26, 0x3B27, 0x3B28, 0x3B29, 0x3B2A, 0x3B2B, - 0x3B2C, 0x3B2D, 0x3B2E, 0x3B2F, 0x3B30, 0x3B31, 0x3B32, 0x3B33, 0x3B34, - 0x3B35, 0x3B36, 0x3B37, 0x3B38, 0x3B39, 0x3B3A, 0x3B3B, 0x3B3C, 0x3B3D, - 0x3B3E, 0x3B3F, 0x3B40, 0x3B41, 0x3B42, 0x3B43, 0x3B44, 0x3B45, 0x3B46, - 0x3B47, 0x3B48, 0x3B49, 0x3B4A, 0x3B4B, 0x3B4C, 0x3B4D, 0x3B4F, 0x3B50, - 0x3B51, 0x3B52, 0x3B53, 0x3B54, 0x3B55, 0x3B56, 0x3B57, 0x3B58, 0x3B59, - 0x3B5A, 0x3B5B, 0x3B5C, 0x3B5D, 0x3B5E, 0x3B5F, 0x3B60, 0x3B61, 0x3B62, - 0x3B63, 0x3B64, 0x3B65, 0x3B66, 0x3B67, 0x3B68, 0x3B69, 0x3B6A, 0x3B6B, - 0x3B6C, 0x3B6D, 0x3B6E, 0x3B6F, 0x3B70, 0x3B71, 0x3B72, 0x3B73, 0x3B74, - 0x3B75, 0x3B76, 0x3B77, 0x3B78, 0x3B79, 0x3B7A, 0x3B7B, 0x3B7C, 0x3B7D, - 0x3B7E, 0x3B7F, 0x3B80, 0x3B81, 0x3B82, 0x3B83, 0x3B84, 0x3B85, 0x3B86, - 0x3B87, 0x3B88, 0x3B89, 0x3B8A, 0x3B8B, 0x3B8C, 0x3B8D, 0x3B8E, 0x3B8F, - 0x3B90, 0x3B91, 0x3B92, 0x3B93, 0x3B94, 0x3B95, 0x3B96, 0x3B97, 0x3B98, - 0x3B99, 0x3B9A, 0x3B9B, 0x3B9C, 0x3B9D, 0x3B9E, 0x3B9F, 0x3BA0, 0x3BA1, - 0x3BA2, 0x3BA3, 0x3BA4, 0x3BA5, 0x3BA6, 0x3BA7, 0x3BA8, 0x3BA9, 0x3BAA, - 0x3BAB, 0x3BAC, 0x3BAD, 0x3BAE, 0x3BAF, 0x3BB0, 0x3BB1, 0x3BB2, 0x3BB3, - 0x3BB4, 0x3BB5, 0x3BB6, 0x3BB7, 0x3BB8, 0x3BB9, 0x3BBA, 0x3BBB, 0x3BBC, - 0x3BBD, 0x3BBE, 0x3BBF, 0x3BC0, 0x3BC1, 0x3BC2, 0x3BC3, 0x3BC4, 0x3BC5, - 0x3BC6, 0x3BC7, 0x3BC8, 0x3BC9, 0x3BCA, 0x3BCB, 0x3BCC, 0x3BCD, 0x3BCE, - 0x3BCF, 0x3BD0, 0x3BD1, 0x3BD2, 0x3BD3, 0x3BD4, 0x3BD5, 0x3BD6, 0x3BD7, - 0x3BD8, 0x3BD9, 0x3BDA, 0x3BDB, 0x3BDC, 0x3BDD, 0x3BDE, 0x3BDF, 0x3BE0, - 0x3BE1, 0x3BE2, 0x3BE3, 0x3BE4, 0x3BE5, 0x3BE6, 0x3BE7, 0x3BE8, 0x3BE9, - 0x3BEA, 0x3BEB, 0x3BEC, 0x3BED, 0x3BEE, 0x3BEF, 0x3BF0, 0x3BF1, 0x3BF2, - 0x3BF3, 0x3BF4, 0x3BF5, 0x3BF6, 0x3BF7, 0x3BF8, 0x3BF9, 0x3BFA, 0x3BFB, - 0x3BFC, 0x3BFD, 0x3BFE, 0x3BFF, 0x3C00, 0x3C01, 0x3C02, 0x3C03, 0x3C04, - 0x3C05, 0x3C06, 0x3C07, 0x3C08, 0x3C09, 0x3C0A, 0x3C0B, 0x3C0C, 0x3C0D, - 0x3C0E, 0x3C0F, 0x3C10, 0x3C11, 0x3C12, 0x3C13, 0x3C14, 0x3C15, 0x3C16, - 0x3C17, 0x3C18, 0x3C19, 0x3C1A, 0x3C1B, 0x3C1C, 0x3C1D, 0x3C1E, 0x3C1F, - 0x3C20, 0x3C21, 0x3C22, 0x3C23, 0x3C24, 0x3C25, 0x3C26, 0x3C27, 0x3C28, - 0x3C29, 0x3C2A, 0x3C2B, 0x3C2C, 0x3C2D, 0x3C2E, 0x3C2F, 0x3C30, 0x3C31, - 0x3C32, 0x3C33, 0x3C34, 0x3C35, 0x3C36, 0x3C37, 0x3C38, 0x3C39, 0x3C3A, - 0x3C3B, 0x3C3C, 0x3C3D, 0x3C3E, 0x3C3F, 0x3C40, 0x3C41, 0x3C42, 0x3C43, - 0x3C44, 0x3C45, 0x3C46, 0x3C47, 0x3C48, 0x3C49, 0x3C4A, 0x3C4B, 0x3C4C, - 0x3C4D, 0x3C4E, 0x3C4F, 0x3C50, 0x3C51, 0x3C52, 0x3C53, 0x3C54, 0x3C55, - 0x3C56, 0x3C57, 0x3C58, 0x3C59, 0x3C5A, 0x3C5B, 0x3C5C, 0x3C5D, 0x3C5E, - 0x3C5F, 0x3C60, 0x3C61, 0x3C62, 0x3C63, 0x3C64, 0x3C65, 0x3C66, 0x3C67, - 0x3C68, 0x3C69, 0x3C6A, 0x3C6B, 0x3C6C, 0x3C6D, 0x3C6F, 0x3C70, 0x3C71, - 0x3C72, 0x3C73, 0x3C74, 0x3C75, 0x3C76, 0x3C77, 0x3C78, 0x3C79, 0x3C7A, - 0x3C7B, 0x3C7C, 0x3C7D, 0x3C7E, 0x3C7F, 0x3C80, 0x3C81, 0x3C82, 0x3C83, - 0x3C84, 0x3C85, 0x3C86, 0x3C87, 0x3C88, 0x3C89, 0x3C8A, 0x3C8B, 0x3C8C, - 0x3C8D, 0x3C8E, 0x3C8F, 0x3C90, 0x3C91, 0x3C92, 0x3C93, 0x3C94, 0x3C95, - 0x3C96, 0x3C97, 0x3C98, 0x3C99, 0x3C9A, 0x3C9B, 0x3C9C, 0x3C9D, 0x3C9E, - 0x3C9F, 0x3CA0, 0x3CA1, 0x3CA2, 0x3CA3, 0x3CA4, 0x3CA5, 0x3CA6, 0x3CA7, - 0x3CA8, 0x3CA9, 0x3CAA, 0x3CAB, 0x3CAC, 0x3CAD, 0x3CAE, 0x3CAF, 0x3CB0, - 0x3CB1, 0x3CB2, 0x3CB3, 0x3CB4, 0x3CB5, 0x3CB6, 0x3CB7, 0x3CB8, 0x3CB9, - 0x3CBA, 0x3CBB, 0x3CBC, 0x3CBD, 0x3CBE, 0x3CBF, 0x3CC0, 0x3CC1, 0x3CC2, - 0x3CC3, 0x3CC4, 0x3CC5, 0x3CC6, 0x3CC7, 0x3CC8, 0x3CC9, 0x3CCA, 0x3CCB, - 0x3CCC, 0x3CCD, 0x3CCE, 0x3CCF, 0x3CD0, 0x3CD1, 0x3CD2, 0x3CD3, 0x3CD4, - 0x3CD5, 0x3CD6, 0x3CD7, 0x3CD8, 0x3CD9, 0x3CDA, 0x3CDB, 0x3CDC, 0x3CDD, - 0x3CDE, 0x3CDF, 0x3CE1, 0x3CE2, 0x3CE3, 0x3CE4, 0x3CE5, 0x3CE6, 0x3CE7, - 0x3CE8, 0x3CE9, 0x3CEA, 0x3CEB, 0x3CEC, 0x3CED, 0x3CEE, 0x3CEF, 0x3CF0, - 0x3CF1, 0x3CF2, 0x3CF3, 0x3CF4, 0x3CF5, 0x3CF6, 0x3CF7, 0x3CF8, 0x3CF9, - 0x3CFA, 0x3CFB, 0x3CFC, 0x3CFD, 0x3CFE, 0x3CFF, 0x3D00, 0x3D01, 0x3D02, - 0x3D03, 0x3D04, 0x3D05, 0x3D06, 0x3D07, 0x3D08, 0x3D09, 0x3D0A, 0x3D0B, - 0x3D0C, 0x3D0D, 0x3D0E, 0x3D0F, 0x3D10, 0x3D11, 0x3D12, 0x3D13, 0x3D14, - 0x3D15, 0x3D16, 0x3D17, 0x3D18, 0x3D19, 0x3D1A, 0x3D1B, 0x3D1C, 0x3D1D, - 0x3D1E, 0x3D1F, 0x3D20, 0x3D21, 0x3D22, 0x3D23, 0x3D24, 0x3D25, 0x3D26, - 0x3D27, 0x3D28, 0x3D29, 0x3D2A, 0x3D2B, 0x3D2C, 0x3D2D, 0x3D2E, 0x3D2F, - 0x3D30, 0x3D31, 0x3D32, 0x3D33, 0x3D34, 0x3D35, 0x3D36, 0x3D37, 0x3D38, - 0x3D39, 0x3D3A, 0x3D3B, 0x3D3C, 0x3D3D, 0x3D3E, 0x3D3F, 0x3D40, 0x3D41, - 0x3D42, 0x3D43, 0x3D44, 0x3D45, 0x3D46, 0x3D47, 0x3D48, 0x3D49, 0x3D4A, - 0x3D4B, 0x3D4C, 0x3D4D, 0x3D4E, 0x3D4F, 0x3D50, 0x3D51, 0x3D52, 0x3D53, - 0x3D54, 0x3D55, 0x3D56, 0x3D57, 0x3D58, 0x3D59, 0x3D5A, 0x3D5B, 0x3D5C, - 0x3D5D, 0x3D5E, 0x3D5F, 0x3D60, 0x3D61, 0x3D62, 0x3D63, 0x3D64, 0x3D65, - 0x3D66, 0x3D67, 0x3D68, 0x3D69, 0x3D6A, 0x3D6B, 0x3D6C, 0x3D6D, 0x3D6E, - 0x3D6F, 0x3D70, 0x3D71, 0x3D72, 0x3D73, 0x3D74, 0x3D75, 0x3D76, 0x3D77, - 0x3D78, 0x3D79, 0x3D7A, 0x3D7B, 0x3D7C, 0x3D7D, 0x3D7E, 0x3D7F, 0x3D80, - 0x3D81, 0x3D82, 0x3D83, 0x3D84, 0x3D85, 0x3D86, 0x3D87, 0x3D88, 0x3D89, - 0x3D8A, 0x3D8B, 0x3D8C, 0x3D8D, 0x3D8E, 0x3D8F, 0x3D90, 0x3D91, 0x3D92, - 0x3D93, 0x3D94, 0x3D95, 0x3D96, 0x3D97, 0x3D98, 0x3D99, 0x3D9A, 0x3D9B, - 0x3D9C, 0x3D9D, 0x3D9E, 0x3D9F, 0x3DA0, 0x3DA1, 0x3DA2, 0x3DA3, 0x3DA4, - 0x3DA5, 0x3DA6, 0x3DA7, 0x3DA8, 0x3DA9, 0x3DAA, 0x3DAB, 0x3DAC, 0x3DAD, - 0x3DAE, 0x3DAF, 0x3DB0, 0x3DB1, 0x3DB2, 0x3DB3, 0x3DB4, 0x3DB5, 0x3DB6, - 0x3DB7, 0x3DB8, 0x3DB9, 0x3DBA, 0x3DBB, 0x3DBC, 0x3DBD, 0x3DBE, 0x3DBF, - 0x3DC0, 0x3DC1, 0x3DC2, 0x3DC3, 0x3DC4, 0x3DC5, 0x3DC6, 0x3DC7, 0x3DC8, - 0x3DC9, 0x3DCA, 0x3DCB, 0x3DCC, 0x3DCD, 0x3DCE, 0x3DCF, 0x3DD0, 0x3DD1, - 0x3DD2, 0x3DD3, 0x3DD4, 0x3DD5, 0x3DD6, 0x3DD7, 0x3DD8, 0x3DD9, 0x3DDA, - 0x3DDB, 0x3DDC, 0x3DDD, 0x3DDE, 0x3DDF, 0x3DE0, 0x3DE1, 0x3DE2, 0x3DE3, - 0x3DE4, 0x3DE5, 0x3DE6, 0x3DE7, 0x3DE8, 0x3DE9, 0x3DEA, 0x3DEB, 0x3DEC, - 0x3DED, 0x3DEE, 0x3DEF, 0x3DF0, 0x3DF1, 0x3DF2, 0x3DF3, 0x3DF4, 0x3DF5, - 0x3DF6, 0x3DF7, 0x3DF8, 0x3DF9, 0x3DFA, 0x3DFB, 0x3DFC, 0x3DFD, 0x3DFE, - 0x3DFF, 0x3E00, 0x3E01, 0x3E02, 0x3E03, 0x3E04, 0x3E05, 0x3E06, 0x3E07, - 0x3E08, 0x3E09, 0x3E0A, 0x3E0B, 0x3E0C, 0x3E0D, 0x3E0E, 0x3E0F, 0x3E10, - 0x3E11, 0x3E12, 0x3E13, 0x3E14, 0x3E15, 0x3E16, 0x3E17, 0x3E18, 0x3E19, - 0x3E1A, 0x3E1B, 0x3E1C, 0x3E1D, 0x3E1E, 0x3E1F, 0x3E20, 0x3E21, 0x3E22, - 0x3E23, 0x3E24, 0x3E25, 0x3E26, 0x3E27, 0x3E28, 0x3E29, 0x3E2A, 0x3E2B, - 0x3E2C, 0x3E2D, 0x3E2E, 0x3E2F, 0x3E30, 0x3E31, 0x3E32, 0x3E33, 0x3E34, - 0x3E35, 0x3E36, 0x3E37, 0x3E38, 0x3E39, 0x3E3A, 0x3E3B, 0x3E3C, 0x3E3D, - 0x3E3E, 0x3E3F, 0x3E40, 0x3E41, 0x3E42, 0x3E43, 0x3E44, 0x3E45, 0x3E46, - 0x3E47, 0x3E48, 0x3E49, 0x3E4A, 0x3E4B, 0x3E4C, 0x3E4D, 0x3E4E, 0x3E4F, - 0x3E50, 0x3E51, 0x3E52, 0x3E53, 0x3E54, 0x3E55, 0x3E56, 0x3E57, 0x3E58, - 0x3E59, 0x3E5A, 0x3E5B, 0x3E5C, 0x3E5D, 0x3E5E, 0x3E5F, 0x3E60, 0x3E61, - 0x3E62, 0x3E63, 0x3E64, 0x3E65, 0x3E66, 0x3E67, 0x3E68, 0x3E69, 0x3E6A, - 0x3E6B, 0x3E6C, 0x3E6D, 0x3E6E, 0x3E6F, 0x3E70, 0x3E71, 0x3E72, 0x3E73, - 0x3E74, 0x3E75, 0x3E76, 0x3E77, 0x3E78, 0x3E79, 0x3E7A, 0x3E7B, 0x3E7C, - 0x3E7D, 0x3E7E, 0x3E7F, 0x3E80, 0x3E81, 0x3E82, 0x3E83, 0x3E84, 0x3E85, - 0x3E86, 0x3E87, 0x3E88, 0x3E89, 0x3E8A, 0x3E8B, 0x3E8C, 0x3E8D, 0x3E8E, - 0x3E8F, 0x3E90, 0x3E91, 0x3E92, 0x3E93, 0x3E94, 0x3E95, 0x3E96, 0x3E97, - 0x3E98, 0x3E99, 0x3E9A, 0x3E9B, 0x3E9C, 0x3E9D, 0x3E9E, 0x3E9F, 0x3EA0, - 0x3EA1, 0x3EA2, 0x3EA3, 0x3EA4, 0x3EA5, 0x3EA6, 0x3EA7, 0x3EA8, 0x3EA9, - 0x3EAA, 0x3EAB, 0x3EAC, 0x3EAD, 0x3EAE, 0x3EAF, 0x3EB0, 0x3EB1, 0x3EB2, - 0x3EB3, 0x3EB4, 0x3EB5, 0x3EB6, 0x3EB7, 0x3EB8, 0x3EB9, 0x3EBA, 0x3EBB, - 0x3EBC, 0x3EBD, 0x3EBE, 0x3EBF, 0x3EC0, 0x3EC1, 0x3EC2, 0x3EC3, 0x3EC4, - 0x3EC5, 0x3EC6, 0x3EC7, 0x3EC8, 0x3EC9, 0x3ECA, 0x3ECB, 0x3ECC, 0x3ECD, - 0x3ECE, 0x3ECF, 0x3ED0, 0x3ED1, 0x3ED2, 0x3ED3, 0x3ED4, 0x3ED5, 0x3ED6, - 0x3ED7, 0x3ED8, 0x3ED9, 0x3EDA, 0x3EDB, 0x3EDC, 0x3EDD, 0x3EDE, 0x3EDF, - 0x3EE0, 0x3EE1, 0x3EE2, 0x3EE3, 0x3EE4, 0x3EE5, 0x3EE6, 0x3EE7, 0x3EE8, - 0x3EE9, 0x3EEA, 0x3EEB, 0x3EEC, 0x3EED, 0x3EEE, 0x3EEF, 0x3EF0, 0x3EF1, - 0x3EF2, 0x3EF3, 0x3EF4, 0x3EF5, 0x3EF6, 0x3EF7, 0x3EF8, 0x3EF9, 0x3EFA, - 0x3EFB, 0x3EFC, 0x3EFD, 0x3EFE, 0x3EFF, 0x3F00, 0x3F01, 0x3F02, 0x3F03, - 0x3F04, 0x3F05, 0x3F06, 0x3F07, 0x3F08, 0x3F09, 0x3F0A, 0x3F0B, 0x3F0C, - 0x3F0D, 0x3F0E, 0x3F0F, 0x3F10, 0x3F11, 0x3F12, 0x3F13, 0x3F14, 0x3F15, - 0x3F16, 0x3F17, 0x3F18, 0x3F19, 0x3F1A, 0x3F1B, 0x3F1C, 0x3F1D, 0x3F1E, - 0x3F1F, 0x3F20, 0x3F21, 0x3F22, 0x3F23, 0x3F24, 0x3F25, 0x3F26, 0x3F27, - 0x3F28, 0x3F29, 0x3F2A, 0x3F2B, 0x3F2C, 0x3F2D, 0x3F2E, 0x3F2F, 0x3F30, - 0x3F31, 0x3F32, 0x3F33, 0x3F34, 0x3F35, 0x3F36, 0x3F37, 0x3F38, 0x3F39, - 0x3F3A, 0x3F3B, 0x3F3C, 0x3F3D, 0x3F3E, 0x3F3F, 0x3F40, 0x3F41, 0x3F42, - 0x3F43, 0x3F44, 0x3F45, 0x3F46, 0x3F47, 0x3F48, 0x3F49, 0x3F4A, 0x3F4B, - 0x3F4C, 0x3F4D, 0x3F4E, 0x3F4F, 0x3F50, 0x3F51, 0x3F52, 0x3F53, 0x3F54, - 0x3F55, 0x3F56, 0x3F57, 0x3F58, 0x3F59, 0x3F5A, 0x3F5B, 0x3F5C, 0x3F5D, - 0x3F5E, 0x3F5F, 0x3F60, 0x3F61, 0x3F62, 0x3F63, 0x3F64, 0x3F65, 0x3F66, - 0x3F67, 0x3F68, 0x3F69, 0x3F6A, 0x3F6B, 0x3F6C, 0x3F6D, 0x3F6E, 0x3F6F, - 0x3F70, 0x3F71, 0x3F72, 0x3F73, 0x3F74, 0x3F75, 0x3F76, 0x3F77, 0x3F78, - 0x3F79, 0x3F7A, 0x3F7B, 0x3F7C, 0x3F7D, 0x3F7E, 0x3F7F, 0x3F80, 0x3F81, - 0x3F82, 0x3F83, 0x3F84, 0x3F85, 0x3F86, 0x3F87, 0x3F88, 0x3F89, 0x3F8A, - 0x3F8B, 0x3F8C, 0x3F8D, 0x3F8E, 0x3F8F, 0x3F90, 0x3F91, 0x3F92, 0x3F93, - 0x3F94, 0x3F95, 0x3F96, 0x3F97, 0x3F98, 0x3F99, 0x3F9A, 0x3F9B, 0x3F9C, - 0x3F9D, 0x3F9E, 0x3F9F, 0x3FA0, 0x3FA1, 0x3FA2, 0x3FA3, 0x3FA4, 0x3FA5, - 0x3FA6, 0x3FA7, 0x3FA8, 0x3FA9, 0x3FAA, 0x3FAB, 0x3FAC, 0x3FAD, 0x3FAE, - 0x3FAF, 0x3FB0, 0x3FB1, 0x3FB2, 0x3FB3, 0x3FB4, 0x3FB5, 0x3FB6, 0x3FB7, - 0x3FB8, 0x3FB9, 0x3FBA, 0x3FBB, 0x3FBC, 0x3FBD, 0x3FBE, 0x3FBF, 0x3FC0, - 0x3FC1, 0x3FC2, 0x3FC3, 0x3FC4, 0x3FC5, 0x3FC6, 0x3FC7, 0x3FC8, 0x3FC9, - 0x3FCA, 0x3FCB, 0x3FCC, 0x3FCD, 0x3FCE, 0x3FCF, 0x3FD0, 0x3FD1, 0x3FD2, - 0x3FD3, 0x3FD4, 0x3FD5, 0x3FD6, 0x3FD7, 0x3FD8, 0x3FD9, 0x3FDA, 0x3FDB, - 0x3FDC, 0x3FDD, 0x3FDE, 0x3FDF, 0x3FE0, 0x3FE1, 0x3FE2, 0x3FE3, 0x3FE4, - 0x3FE5, 0x3FE6, 0x3FE7, 0x3FE8, 0x3FE9, 0x3FEA, 0x3FEB, 0x3FEC, 0x3FED, - 0x3FEE, 0x3FEF, 0x3FF0, 0x3FF1, 0x3FF2, 0x3FF3, 0x3FF4, 0x3FF5, 0x3FF6, - 0x3FF7, 0x3FF8, 0x3FF9, 0x3FFA, 0x3FFB, 0x3FFC, 0x3FFD, 0x3FFE, 0x3FFF, - 0x4000, 0x4001, 0x4002, 0x4003, 0x4004, 0x4005, 0x4006, 0x4007, 0x4008, - 0x4009, 0x400A, 0x400B, 0x400C, 0x400D, 0x400E, 0x400F, 0x4010, 0x4011, - 0x4012, 0x4013, 0x4014, 0x4015, 0x4016, 0x4017, 0x4018, 0x4019, 0x401A, - 0x401B, 0x401C, 0x401D, 0x401E, 0x401F, 0x4020, 0x4021, 0x4022, 0x4023, - 0x4024, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029, 0x402A, 0x402B, 0x402C, - 0x402D, 0x402E, 0x402F, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, - 0x4036, 0x4037, 0x4038, 0x4039, 0x403A, 0x403B, 0x403C, 0x403D, 0x403E, - 0x403F, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047, - 0x4048, 0x4049, 0x404A, 0x404B, 0x404C, 0x404D, 0x404E, 0x404F, 0x4050, - 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4057, 0x4058, 0x4059, 0x405A, - 0x405B, 0x405C, 0x405D, 0x405E, 0x405F, 0x4060, 0x4061, 0x4062, 0x4063, - 0x4064, 0x4065, 0x4066, 0x4067, 0x4068, 0x4069, 0x406A, 0x406B, 0x406C, - 0x406D, 0x406E, 0x406F, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, - 0x4076, 0x4077, 0x4078, 0x4079, 0x407A, 0x407B, 0x407C, 0x407D, 0x407E, - 0x407F, 0x4080, 0x4081, 0x4082, 0x4083, 0x4084, 0x4085, 0x4086, 0x4087, - 0x4088, 0x4089, 0x408A, 0x408B, 0x408C, 0x408D, 0x408E, 0x408F, 0x4090, - 0x4091, 0x4092, 0x4093, 0x4094, 0x4095, 0x4096, 0x4097, 0x4098, 0x4099, - 0x409A, 0x409B, 0x409C, 0x409D, 0x409E, 0x409F, 0x40A0, 0x40A1, 0x40A2, - 0x40A3, 0x40A4, 0x40A5, 0x40A6, 0x40A7, 0x40A8, 0x40A9, 0x40AA, 0x40AB, - 0x40AC, 0x40AD, 0x40AE, 0x40AF, 0x40B0, 0x40B1, 0x40B2, 0x40B3, 0x40B4, - 0x40B5, 0x40B6, 0x40B7, 0x40B8, 0x40B9, 0x40BA, 0x40BB, 0x40BC, 0x40BD, - 0x40BE, 0x40BF, 0x40C0, 0x40C1, 0x40C2, 0x40C3, 0x40C4, 0x40C5, 0x40C6, - 0x40C7, 0x40C8, 0x40C9, 0x40CA, 0x40CB, 0x40CC, 0x40CD, 0x40CE, 0x40CF, - 0x40D0, 0x40D1, 0x40D2, 0x40D3, 0x40D4, 0x40D5, 0x40D6, 0x40D7, 0x40D8, - 0x40D9, 0x40DA, 0x40DB, 0x40DC, 0x40DD, 0x40DE, 0x40DF, 0x40E0, 0x40E1, - 0x40E2, 0x40E3, 0x40E4, 0x40E5, 0x40E6, 0x40E7, 0x40E8, 0x40E9, 0x40EA, - 0x40EB, 0x40EC, 0x40ED, 0x40EE, 0x40EF, 0x40F0, 0x40F1, 0x40F2, 0x40F3, - 0x40F4, 0x40F5, 0x40F6, 0x40F7, 0x40F8, 0x40F9, 0x40FA, 0x40FB, 0x40FC, - 0x40FD, 0x40FE, 0x40FF, 0x4100, 0x4101, 0x4102, 0x4103, 0x4104, 0x4105, - 0x4106, 0x4107, 0x4108, 0x4109, 0x410A, 0x410B, 0x410C, 0x410D, 0x410E, - 0x410F, 0x4110, 0x4111, 0x4112, 0x4113, 0x4114, 0x4115, 0x4116, 0x4117, - 0x4118, 0x4119, 0x411A, 0x411B, 0x411C, 0x411D, 0x411E, 0x411F, 0x4120, - 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128, 0x4129, - 0x412A, 0x412B, 0x412C, 0x412D, 0x412E, 0x412F, 0x4130, 0x4131, 0x4132, - 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138, 0x4139, 0x413A, 0x413B, - 0x413C, 0x413D, 0x413E, 0x413F, 0x4140, 0x4141, 0x4142, 0x4143, 0x4144, - 0x4145, 0x4146, 0x4147, 0x4148, 0x4149, 0x414A, 0x414B, 0x414C, 0x414D, - 0x414E, 0x414F, 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, - 0x4157, 0x4158, 0x4159, 0x415A, 0x415B, 0x415C, 0x415D, 0x415E, 0x4160, - 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168, 0x4169, - 0x416A, 0x416B, 0x416C, 0x416D, 0x416E, 0x416F, 0x4170, 0x4171, 0x4172, - 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178, 0x4179, 0x417A, 0x417B, - 0x417C, 0x417D, 0x417E, 0x417F, 0x4180, 0x4181, 0x4182, 0x4183, 0x4184, - 0x4185, 0x4186, 0x4187, 0x4188, 0x4189, 0x418A, 0x418B, 0x418C, 0x418D, - 0x418E, 0x418F, 0x4190, 0x4191, 0x4192, 0x4193, 0x4194, 0x4195, 0x4196, - 0x4197, 0x4198, 0x4199, 0x419A, 0x419B, 0x419C, 0x419D, 0x419E, 0x419F, - 0x41A0, 0x41A1, 0x41A2, 0x41A3, 0x41A4, 0x41A5, 0x41A6, 0x41A7, 0x41A8, - 0x41A9, 0x41AA, 0x41AB, 0x41AC, 0x41AD, 0x41AE, 0x41AF, 0x41B0, 0x41B1, - 0x41B2, 0x41B3, 0x41B4, 0x41B5, 0x41B6, 0x41B7, 0x41B8, 0x41B9, 0x41BA, - 0x41BB, 0x41BC, 0x41BD, 0x41BE, 0x41BF, 0x41C0, 0x41C1, 0x41C2, 0x41C3, - 0x41C4, 0x41C5, 0x41C6, 0x41C7, 0x41C8, 0x41C9, 0x41CA, 0x41CB, 0x41CC, - 0x41CD, 0x41CE, 0x41CF, 0x41D0, 0x41D1, 0x41D2, 0x41D3, 0x41D4, 0x41D5, - 0x41D6, 0x41D7, 0x41D8, 0x41D9, 0x41DA, 0x41DB, 0x41DC, 0x41DD, 0x41DE, - 0x41DF, 0x41E0, 0x41E1, 0x41E2, 0x41E3, 0x41E4, 0x41E5, 0x41E6, 0x41E7, - 0x41E8, 0x41E9, 0x41EA, 0x41EB, 0x41EC, 0x41ED, 0x41EE, 0x41EF, 0x41F0, - 0x41F1, 0x41F2, 0x41F3, 0x41F4, 0x41F5, 0x41F6, 0x41F7, 0x41F8, 0x41F9, - 0x41FA, 0x41FB, 0x41FC, 0x41FD, 0x41FE, 0x41FF, 0x4200, 0x4201, 0x4202, - 0x4203, 0x4204, 0x4205, 0x4206, 0x4207, 0x4208, 0x4209, 0x420A, 0x420B, - 0x420C, 0x420D, 0x420E, 0x420F, 0x4210, 0x4211, 0x4212, 0x4213, 0x4214, - 0x4215, 0x4216, 0x4217, 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D, - 0x421E, 0x421F, 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, - 0x4227, 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D, 0x422E, 0x422F, - 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, - 0x4239, 0x423A, 0x423B, 0x423C, 0x423D, 0x423E, 0x423F, 0x4240, 0x4241, - 0x4242, 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424A, - 0x424B, 0x424C, 0x424D, 0x424E, 0x424F, 0x4250, 0x4251, 0x4252, 0x4253, - 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425A, 0x425B, 0x425C, - 0x425D, 0x425E, 0x425F, 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, - 0x4266, 0x4267, 0x4268, 0x4269, 0x426A, 0x426B, 0x426C, 0x426D, 0x426E, - 0x426F, 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, - 0x4278, 0x4279, 0x427A, 0x427B, 0x427C, 0x427D, 0x427E, 0x427F, 0x4280, - 0x4281, 0x4282, 0x4283, 0x4284, 0x4285, 0x4286, 0x4287, 0x4288, 0x4289, - 0x428A, 0x428B, 0x428C, 0x428D, 0x428E, 0x428F, 0x4290, 0x4291, 0x4292, - 0x4293, 0x4294, 0x4295, 0x4296, 0x4297, 0x4298, 0x4299, 0x429A, 0x429B, - 0x429C, 0x429D, 0x429E, 0x429F, 0x42A0, 0x42A1, 0x42A2, 0x42A3, 0x42A4, - 0x42A5, 0x42A6, 0x42A7, 0x42A8, 0x42A9, 0x42AA, 0x42AB, 0x42AC, 0x42AD, - 0x42AE, 0x42AF, 0x42B0, 0x42B1, 0x42B2, 0x42B3, 0x42B4, 0x42B5, 0x42B6, - 0x42B7, 0x42B8, 0x42B9, 0x42BA, 0x42BB, 0x42BC, 0x42BD, 0x42BE, 0x42BF, - 0x42C0, 0x42C1, 0x42C2, 0x42C3, 0x42C4, 0x42C5, 0x42C6, 0x42C7, 0x42C8, - 0x42C9, 0x42CA, 0x42CB, 0x42CC, 0x42CD, 0x42CE, 0x42CF, 0x42D0, 0x42D1, - 0x42D2, 0x42D3, 0x42D4, 0x42D5, 0x42D6, 0x42D7, 0x42D8, 0x42D9, 0x42DA, - 0x42DB, 0x42DC, 0x42DD, 0x42DE, 0x42DF, 0x42E0, 0x42E1, 0x42E2, 0x42E3, - 0x42E4, 0x42E5, 0x42E6, 0x42E7, 0x42E8, 0x42E9, 0x42EA, 0x42EB, 0x42EC, - 0x42ED, 0x42EE, 0x42EF, 0x42F0, 0x42F1, 0x42F2, 0x42F3, 0x42F4, 0x42F5, - 0x42F6, 0x42F7, 0x42F8, 0x42F9, 0x42FA, 0x42FB, 0x42FC, 0x42FD, 0x42FE, - 0x42FF, 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307, - 0x4308, 0x4309, 0x430A, 0x430B, 0x430C, 0x430D, 0x430E, 0x430F, 0x4310, - 0x4311, 0x4312, 0x4313, 0x4314, 0x4315, 0x4316, 0x4317, 0x4318, 0x4319, - 0x431A, 0x431B, 0x431C, 0x431D, 0x431E, 0x431F, 0x4320, 0x4321, 0x4322, - 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432A, 0x432B, - 0x432C, 0x432D, 0x432E, 0x432F, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, - 0x4335, 0x4336, 0x4338, 0x4339, 0x433A, 0x433B, 0x433C, 0x433D, 0x433E, - 0x433F, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347, - 0x4348, 0x4349, 0x434A, 0x434B, 0x434C, 0x434D, 0x434E, 0x434F, 0x4350, - 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, - 0x435A, 0x435B, 0x435C, 0x435D, 0x435E, 0x435F, 0x4360, 0x4361, 0x4362, - 0x4363, 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436A, 0x436B, - 0x436C, 0x436D, 0x436E, 0x436F, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, - 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437A, 0x437B, 0x437C, 0x437D, - 0x437E, 0x437F, 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386, - 0x4387, 0x4388, 0x4389, 0x438A, 0x438B, 0x438C, 0x438D, 0x438E, 0x438F, - 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395, 0x4396, 0x4397, 0x4398, - 0x4399, 0x439A, 0x439B, 0x439C, 0x439D, 0x439E, 0x439F, 0x43A0, 0x43A1, - 0x43A2, 0x43A3, 0x43A4, 0x43A5, 0x43A6, 0x43A7, 0x43A8, 0x43A9, 0x43AA, - 0x43AB, 0x43AD, 0x43AE, 0x43AF, 0x43B0, 0x43B2, 0x43B3, 0x43B4, 0x43B5, - 0x43B6, 0x43B7, 0x43B8, 0x43B9, 0x43BA, 0x43BB, 0x43BC, 0x43BD, 0x43BE, - 0x43BF, 0x43C0, 0x43C1, 0x43C2, 0x43C3, 0x43C4, 0x43C5, 0x43C6, 0x43C7, - 0x43C8, 0x43C9, 0x43CA, 0x43CB, 0x43CC, 0x43CD, 0x43CE, 0x43CF, 0x43D0, - 0x43D1, 0x43D2, 0x43D3, 0x43D4, 0x43D5, 0x43D6, 0x43D7, 0x43D8, 0x43D9, - 0x43DA, 0x43DB, 0x43DC, 0x43DE, 0x43DF, 0x43E0, 0x43E1, 0x43E2, 0x43E3, - 0x43E4, 0x43E5, 0x43E6, 0x43E7, 0x43E8, 0x43E9, 0x43EA, 0x43EB, 0x43EC, - 0x43ED, 0x43EE, 0x43EF, 0x43F0, 0x43F1, 0x43F2, 0x43F3, 0x43F4, 0x43F5, - 0x43F6, 0x43F7, 0x43F8, 0x43F9, 0x43FA, 0x43FB, 0x43FC, 0x43FD, 0x43FE, - 0x43FF, 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407, - 0x4408, 0x4409, 0x440A, 0x440B, 0x440C, 0x440D, 0x440E, 0x440F, 0x4410, - 0x4411, 0x4412, 0x4413, 0x4414, 0x4415, 0x4416, 0x4417, 0x4418, 0x4419, - 0x441A, 0x441B, 0x441C, 0x441D, 0x441E, 0x441F, 0x4420, 0x4421, 0x4422, - 0x4423, 0x4424, 0x4425, 0x4426, 0x4427, 0x4428, 0x4429, 0x442A, 0x442B, - 0x442C, 0x442D, 0x442E, 0x442F, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, - 0x4435, 0x4436, 0x4437, 0x4438, 0x4439, 0x443A, 0x443B, 0x443C, 0x443D, - 0x443E, 0x443F, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, - 0x4447, 0x4448, 0x4449, 0x444A, 0x444B, 0x444C, 0x444D, 0x444E, 0x444F, - 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457, 0x4458, - 0x4459, 0x445A, 0x445B, 0x445C, 0x445D, 0x445E, 0x445F, 0x4460, 0x4461, - 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469, 0x446A, - 0x446B, 0x446C, 0x446D, 0x446E, 0x446F, 0x4470, 0x4471, 0x4472, 0x4473, - 0x4474, 0x4475, 0x4476, 0x4477, 0x4478, 0x4479, 0x447A, 0x447B, 0x447C, - 0x447D, 0x447E, 0x447F, 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485, - 0x4486, 0x4487, 0x4488, 0x4489, 0x448A, 0x448B, 0x448C, 0x448D, 0x448E, - 0x448F, 0x4490, 0x4491, 0x4492, 0x4493, 0x4494, 0x4495, 0x4496, 0x4497, - 0x4498, 0x4499, 0x449A, 0x449B, 0x449C, 0x449D, 0x449E, 0x449F, 0x44A0, - 0x44A1, 0x44A2, 0x44A3, 0x44A4, 0x44A5, 0x44A6, 0x44A7, 0x44A8, 0x44A9, - 0x44AA, 0x44AB, 0x44AC, 0x44AD, 0x44AE, 0x44AF, 0x44B0, 0x44B1, 0x44B2, - 0x44B3, 0x44B4, 0x44B5, 0x44B6, 0x44B7, 0x44B8, 0x44B9, 0x44BA, 0x44BB, - 0x44BC, 0x44BD, 0x44BE, 0x44BF, 0x44C0, 0x44C1, 0x44C2, 0x44C3, 0x44C4, - 0x44C5, 0x44C6, 0x44C7, 0x44C8, 0x44C9, 0x44CA, 0x44CB, 0x44CC, 0x44CD, - 0x44CE, 0x44CF, 0x44D0, 0x44D1, 0x44D2, 0x44D3, 0x44D4, 0x44D5, 0x44D7, - 0x44D8, 0x44D9, 0x44DA, 0x44DB, 0x44DC, 0x44DD, 0x44DE, 0x44DF, 0x44E0, - 0x44E1, 0x44E2, 0x44E3, 0x44E4, 0x44E5, 0x44E6, 0x44E7, 0x44E8, 0x44E9, - 0x44EA, 0x44EB, 0x44EC, 0x44ED, 0x44EE, 0x44EF, 0x44F0, 0x44F1, 0x44F2, - 0x44F3, 0x44F4, 0x44F5, 0x44F6, 0x44F7, 0x44F8, 0x44F9, 0x44FA, 0x44FB, - 0x44FC, 0x44FD, 0x44FE, 0x44FF, 0x4500, 0x4501, 0x4502, 0x4503, 0x4504, - 0x4505, 0x4506, 0x4507, 0x4508, 0x4509, 0x450A, 0x450B, 0x450C, 0x450D, - 0x450E, 0x450F, 0x4510, 0x4511, 0x4512, 0x4513, 0x4514, 0x4515, 0x4516, - 0x4517, 0x4518, 0x4519, 0x451A, 0x451B, 0x451C, 0x451D, 0x451E, 0x451F, - 0x4520, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528, - 0x4529, 0x452A, 0x452B, 0x452C, 0x452D, 0x452E, 0x452F, 0x4530, 0x4531, - 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538, 0x4539, 0x453A, - 0x453B, 0x453C, 0x453D, 0x453E, 0x453F, 0x4540, 0x4541, 0x4542, 0x4543, - 0x4544, 0x4545, 0x4546, 0x4547, 0x4548, 0x4549, 0x454A, 0x454B, 0x454C, - 0x454D, 0x454E, 0x454F, 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, - 0x4556, 0x4557, 0x4558, 0x4559, 0x455A, 0x455B, 0x455C, 0x455D, 0x455E, - 0x455F, 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, - 0x4568, 0x4569, 0x456A, 0x456B, 0x456C, 0x456D, 0x456E, 0x456F, 0x4570, - 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578, 0x4579, - 0x457A, 0x457B, 0x457C, 0x457D, 0x457E, 0x457F, 0x4580, 0x4581, 0x4582, - 0x4583, 0x4584, 0x4585, 0x4586, 0x4587, 0x4588, 0x4589, 0x458A, 0x458B, - 0x458C, 0x458D, 0x458E, 0x458F, 0x4590, 0x4591, 0x4592, 0x4593, 0x4594, - 0x4595, 0x4596, 0x4597, 0x4598, 0x4599, 0x459A, 0x459B, 0x459C, 0x459D, - 0x459E, 0x459F, 0x45A0, 0x45A1, 0x45A2, 0x45A3, 0x45A4, 0x45A5, 0x45A6, - 0x45A7, 0x45A8, 0x45A9, 0x45AA, 0x45AB, 0x45AC, 0x45AD, 0x45AE, 0x45AF, - 0x45B0, 0x45B1, 0x45B2, 0x45B3, 0x45B4, 0x45B5, 0x45B6, 0x45B7, 0x45B8, - 0x45B9, 0x45BA, 0x45BB, 0x45BC, 0x45BD, 0x45BE, 0x45BF, 0x45C0, 0x45C1, - 0x45C2, 0x45C3, 0x45C4, 0x45C5, 0x45C6, 0x45C7, 0x45C8, 0x45C9, 0x45CA, - 0x45CB, 0x45CC, 0x45CD, 0x45CE, 0x45CF, 0x45D0, 0x45D1, 0x45D2, 0x45D3, - 0x45D4, 0x45D5, 0x45D6, 0x45D7, 0x45D8, 0x45D9, 0x45DA, 0x45DB, 0x45DC, - 0x45DD, 0x45DE, 0x45DF, 0x45E0, 0x45E1, 0x45E2, 0x45E3, 0x45E4, 0x45E5, - 0x45E6, 0x45E7, 0x45E8, 0x45E9, 0x45EA, 0x45EB, 0x45EC, 0x45ED, 0x45EE, - 0x45EF, 0x45F0, 0x45F1, 0x45F2, 0x45F3, 0x45F4, 0x45F5, 0x45F6, 0x45F7, - 0x45F8, 0x45F9, 0x45FA, 0x45FB, 0x45FC, 0x45FD, 0x45FE, 0x45FF, 0x4600, - 0x4601, 0x4602, 0x4603, 0x4604, 0x4605, 0x4606, 0x4607, 0x4608, 0x4609, - 0x460A, 0x460B, 0x460C, 0x460D, 0x460E, 0x460F, 0x4610, 0x4611, 0x4612, - 0x4613, 0x4614, 0x4615, 0x4616, 0x4617, 0x4618, 0x4619, 0x461A, 0x461B, - 0x461C, 0x461D, 0x461E, 0x461F, 0x4620, 0x4621, 0x4622, 0x4623, 0x4624, - 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462A, 0x462B, 0x462C, 0x462D, - 0x462E, 0x462F, 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, - 0x4637, 0x4638, 0x4639, 0x463A, 0x463B, 0x463C, 0x463D, 0x463E, 0x463F, - 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, - 0x4649, 0x464A, 0x464B, 0x464D, 0x464E, 0x464F, 0x4650, 0x4651, 0x4652, - 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465A, 0x465B, - 0x465C, 0x465D, 0x465E, 0x465F, 0x4660, 0x4662, 0x4663, 0x4664, 0x4665, - 0x4666, 0x4667, 0x4668, 0x4669, 0x466A, 0x466B, 0x466C, 0x466D, 0x466E, - 0x466F, 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, - 0x4678, 0x4679, 0x467A, 0x467B, 0x467C, 0x467D, 0x467E, 0x467F, 0x4680, - 0x4681, 0x4682, 0x4683, 0x4684, 0x4685, 0x4686, 0x4687, 0x4688, 0x4689, - 0x468A, 0x468B, 0x468C, 0x468D, 0x468E, 0x468F, 0x4690, 0x4691, 0x4692, - 0x4693, 0x4694, 0x4695, 0x4696, 0x4697, 0x4698, 0x4699, 0x469A, 0x469B, - 0x469C, 0x469D, 0x469E, 0x469F, 0x46A0, 0x46A1, 0x46A2, 0x46A3, 0x46A4, - 0x46A5, 0x46A6, 0x46A7, 0x46A8, 0x46A9, 0x46AA, 0x46AB, 0x46AC, 0x46AD, - 0x46AE, 0x46AF, 0x46B0, 0x46B1, 0x46B2, 0x46B3, 0x46B4, 0x46B5, 0x46B6, - 0x46B7, 0x46B8, 0x46B9, 0x46BA, 0x46BB, 0x46BC, 0x46BD, 0x46BE, 0x46BF, - 0x46C0, 0x46C1, 0x46C2, 0x46C3, 0x46C4, 0x46C5, 0x46C6, 0x46C7, 0x46C8, - 0x46C9, 0x46CA, 0x46CB, 0x46CC, 0x46CD, 0x46CE, 0x46CF, 0x46D0, 0x46D1, - 0x46D2, 0x46D3, 0x46D4, 0x46D5, 0x46D6, 0x46D7, 0x46D8, 0x46D9, 0x46DA, - 0x46DB, 0x46DC, 0x46DD, 0x46DE, 0x46DF, 0x46E0, 0x46E1, 0x46E2, 0x46E3, - 0x46E4, 0x46E5, 0x46E6, 0x46E7, 0x46E8, 0x46E9, 0x46EA, 0x46EB, 0x46EC, - 0x46ED, 0x46EE, 0x46EF, 0x46F0, 0x46F1, 0x46F2, 0x46F3, 0x46F4, 0x46F5, - 0x46F6, 0x46F7, 0x46F8, 0x46F9, 0x46FA, 0x46FB, 0x46FC, 0x46FD, 0x46FE, - 0x46FF, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706, 0x4707, - 0x4708, 0x4709, 0x470A, 0x470B, 0x470C, 0x470D, 0x470E, 0x470F, 0x4710, - 0x4711, 0x4712, 0x4713, 0x4714, 0x4715, 0x4716, 0x4717, 0x4718, 0x4719, - 0x471A, 0x471B, 0x471C, 0x471D, 0x471E, 0x471F, 0x4720, 0x4721, 0x4722, - 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x472A, 0x472B, 0x472C, 0x472D, - 0x472E, 0x472F, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4736, - 0x4737, 0x4738, 0x4739, 0x473A, 0x473B, 0x473C, 0x473D, 0x473E, 0x473F, - 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, 0x4748, - 0x4749, 0x474A, 0x474B, 0x474C, 0x474D, 0x474E, 0x474F, 0x4750, 0x4751, - 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475A, - 0x475B, 0x475C, 0x475D, 0x475E, 0x475F, 0x4760, 0x4761, 0x4762, 0x4763, - 0x4764, 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476A, 0x476B, 0x476C, - 0x476D, 0x476E, 0x476F, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775, - 0x4776, 0x4777, 0x4778, 0x4779, 0x477A, 0x477B, 0x477D, 0x477E, 0x477F, - 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785, 0x4786, 0x4787, 0x4788, - 0x4789, 0x478A, 0x478B, 0x478C, 0x478E, 0x478F, 0x4790, 0x4791, 0x4792, - 0x4793, 0x4794, 0x4795, 0x4796, 0x4797, 0x4798, 0x4799, 0x479A, 0x479B, - 0x479C, 0x479D, 0x479E, 0x479F, 0x47A0, 0x47A1, 0x47A2, 0x47A3, 0x47A4, - 0x47A5, 0x47A6, 0x47A7, 0x47A8, 0x47A9, 0x47AA, 0x47AB, 0x47AC, 0x47AD, - 0x47AE, 0x47AF, 0x47B0, 0x47B1, 0x47B2, 0x47B3, 0x47B4, 0x47B5, 0x47B6, - 0x47B7, 0x47B8, 0x47B9, 0x47BA, 0x47BB, 0x47BC, 0x47BD, 0x47BE, 0x47BF, - 0x47C0, 0x47C1, 0x47C2, 0x47C3, 0x47C4, 0x47C5, 0x47C6, 0x47C7, 0x47C8, - 0x47C9, 0x47CA, 0x47CB, 0x47CC, 0x47CD, 0x47CE, 0x47CF, 0x47D0, 0x47D1, - 0x47D2, 0x47D3, 0x47D4, 0x47D5, 0x47D6, 0x47D7, 0x47D8, 0x47D9, 0x47DA, - 0x47DB, 0x47DC, 0x47DD, 0x47DE, 0x47DF, 0x47E0, 0x47E1, 0x47E2, 0x47E3, - 0x47E4, 0x47E5, 0x47E6, 0x47E7, 0x47E8, 0x47E9, 0x47EA, 0x47EB, 0x47EC, - 0x47ED, 0x47EE, 0x47EF, 0x47F0, 0x47F1, 0x47F2, 0x47F3, 0x47F4, 0x47F5, - 0x47F6, 0x47F7, 0x47F8, 0x47F9, 0x47FA, 0x47FB, 0x47FC, 0x47FD, 0x47FE, - 0x47FF, 0x4800, 0x4801, 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807, - 0x4808, 0x4809, 0x480A, 0x480B, 0x480C, 0x480D, 0x480E, 0x480F, 0x4810, - 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817, 0x4818, 0x4819, - 0x481A, 0x481B, 0x481C, 0x481D, 0x481E, 0x481F, 0x4820, 0x4821, 0x4822, - 0x4823, 0x4824, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829, 0x482A, 0x482B, - 0x482C, 0x482D, 0x482E, 0x482F, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, - 0x4835, 0x4836, 0x4837, 0x4838, 0x4839, 0x483A, 0x483B, 0x483C, 0x483D, - 0x483E, 0x483F, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, - 0x4847, 0x4848, 0x4849, 0x484A, 0x484B, 0x484C, 0x484D, 0x484E, 0x484F, - 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, 0x4857, 0x4858, - 0x4859, 0x485A, 0x485B, 0x485C, 0x485D, 0x485E, 0x485F, 0x4860, 0x4861, - 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869, 0x486A, - 0x486B, 0x486C, 0x486D, 0x486E, 0x486F, 0x4870, 0x4871, 0x4872, 0x4873, - 0x4874, 0x4875, 0x4876, 0x4877, 0x4878, 0x4879, 0x487A, 0x487B, 0x487C, - 0x487D, 0x487E, 0x487F, 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885, - 0x4886, 0x4887, 0x4888, 0x4889, 0x488A, 0x488B, 0x488C, 0x488D, 0x488E, - 0x488F, 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895, 0x4896, 0x4897, - 0x4898, 0x4899, 0x489A, 0x489B, 0x489C, 0x489D, 0x489E, 0x489F, 0x48A0, - 0x48A1, 0x48A2, 0x48A3, 0x48A4, 0x48A5, 0x48A6, 0x48A7, 0x48A8, 0x48A9, - 0x48AA, 0x48AB, 0x48AC, 0x48AD, 0x48AE, 0x48AF, 0x48B0, 0x48B1, 0x48B2, - 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x48B8, 0x48B9, 0x48BA, 0x48BB, - 0x48BC, 0x48BD, 0x48BE, 0x48BF, 0x48C0, 0x48C1, 0x48C2, 0x48C3, 0x48C4, - 0x48C5, 0x48C6, 0x48C7, 0x48C8, 0x48C9, 0x48CA, 0x48CB, 0x48CC, 0x48CD, - 0x48CE, 0x48CF, 0x48D0, 0x48D1, 0x48D2, 0x48D3, 0x48D4, 0x48D5, 0x48D6, - 0x48D7, 0x48D8, 0x48D9, 0x48DA, 0x48DB, 0x48DC, 0x48DD, 0x48DE, 0x48DF, - 0x48E0, 0x48E1, 0x48E2, 0x48E3, 0x48E4, 0x48E5, 0x48E6, 0x48E7, 0x48E8, - 0x48E9, 0x48EA, 0x48EB, 0x48EC, 0x48ED, 0x48EE, 0x48EF, 0x48F0, 0x48F1, - 0x48F2, 0x48F3, 0x48F4, 0x48F5, 0x48F6, 0x48F7, 0x48F8, 0x48F9, 0x48FA, - 0x48FB, 0x48FC, 0x48FD, 0x48FE, 0x48FF, 0x4900, 0x4901, 0x4902, 0x4903, - 0x4904, 0x4905, 0x4906, 0x4907, 0x4908, 0x4909, 0x490A, 0x490B, 0x490C, - 0x490D, 0x490E, 0x490F, 0x4910, 0x4911, 0x4912, 0x4913, 0x4914, 0x4915, - 0x4916, 0x4917, 0x4918, 0x4919, 0x491A, 0x491B, 0x491C, 0x491D, 0x491E, - 0x491F, 0x4920, 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, - 0x4928, 0x4929, 0x492A, 0x492B, 0x492C, 0x492D, 0x492E, 0x492F, 0x4930, - 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938, 0x4939, - 0x493A, 0x493B, 0x493C, 0x493D, 0x493E, 0x493F, 0x4940, 0x4941, 0x4942, - 0x4943, 0x4944, 0x4945, 0x4946, 0x4948, 0x4949, 0x494A, 0x494B, 0x494C, - 0x494D, 0x494E, 0x494F, 0x4950, 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, - 0x4956, 0x4957, 0x4958, 0x4959, 0x495A, 0x495B, 0x495C, 0x495D, 0x495E, - 0x495F, 0x4960, 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, - 0x4968, 0x4969, 0x496A, 0x496B, 0x496C, 0x496D, 0x496E, 0x496F, 0x4970, - 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978, 0x4979, - 0x497B, 0x497C, 0x497E, 0x497F, 0x4980, 0x4981, 0x4984, 0x4987, 0x4988, - 0x4989, 0x498A, 0x498B, 0x498C, 0x498D, 0x498E, 0x498F, 0x4990, 0x4991, - 0x4992, 0x4993, 0x4994, 0x4995, 0x4996, 0x4997, 0x4998, 0x4999, 0x499A, - 0x499C, 0x499D, 0x499E, 0x49A0, 0x49A1, 0x49A2, 0x49A3, 0x49A4, 0x49A5, - 0x49A6, 0x49A7, 0x49A8, 0x49A9, 0x49AA, 0x49AB, 0x49AC, 0x49AD, 0x49AE, - 0x49AF, 0x49B0, 0x49B1, 0x49B2, 0x49B3, 0x49B4, 0x49B5, 0x49B8, 0x49B9, - 0x49BA, 0x49BB, 0x49BC, 0x49BD, 0x49BE, 0x49BF, 0x49C0, 0x49C1, 0x49C2, - 0x49C3, 0x49C4, 0x49C5, 0x49C6, 0x49C7, 0x49C8, 0x49C9, 0x49CA, 0x49CB, - 0x49CC, 0x49CD, 0x49CE, 0x49CF, 0x49D0, 0x49D1, 0x49D2, 0x49D3, 0x49D4, - 0x49D5, 0x49D6, 0x49D7, 0x49D8, 0x49D9, 0x49DA, 0x49DB, 0x49DC, 0x49DD, - 0x49DE, 0x49DF, 0x49E0, 0x49E1, 0x49E2, 0x49E3, 0x49E4, 0x49E5, 0x49E6, - 0x49E7, 0x49E8, 0x49E9, 0x49EA, 0x49EB, 0x49EC, 0x49ED, 0x49EE, 0x49EF, - 0x49F0, 0x49F1, 0x49F2, 0x49F3, 0x49F4, 0x49F5, 0x49F6, 0x49F7, 0x49F8, - 0x49F9, 0x49FA, 0x49FB, 0x49FC, 0x49FD, 0x49FE, 0x49FF, 0x4A00, 0x4A01, - 0x4A02, 0x4A03, 0x4A04, 0x4A05, 0x4A06, 0x4A07, 0x4A08, 0x4A09, 0x4A0A, - 0x4A0B, 0x4A0C, 0x4A0D, 0x4A0E, 0x4A0F, 0x4A10, 0x4A11, 0x4A12, 0x4A13, - 0x4A14, 0x4A15, 0x4A16, 0x4A17, 0x4A18, 0x4A19, 0x4A1A, 0x4A1B, 0x4A1C, - 0x4A1D, 0x4A1E, 0x4A1F, 0x4A20, 0x4A21, 0x4A22, 0x4A23, 0x4A24, 0x4A25, - 0x4A26, 0x4A27, 0x4A28, 0x4A29, 0x4A2A, 0x4A2B, 0x4A2C, 0x4A2D, 0x4A2E, - 0x4A2F, 0x4A30, 0x4A31, 0x4A32, 0x4A33, 0x4A34, 0x4A35, 0x4A36, 0x4A37, - 0x4A38, 0x4A39, 0x4A3A, 0x4A3B, 0x4A3C, 0x4A3D, 0x4A3E, 0x4A3F, 0x4A40, - 0x4A41, 0x4A42, 0x4A43, 0x4A44, 0x4A45, 0x4A46, 0x4A47, 0x4A48, 0x4A49, - 0x4A4A, 0x4A4B, 0x4A4C, 0x4A4D, 0x4A4E, 0x4A4F, 0x4A50, 0x4A51, 0x4A52, - 0x4A53, 0x4A54, 0x4A55, 0x4A56, 0x4A57, 0x4A58, 0x4A59, 0x4A5A, 0x4A5B, - 0x4A5C, 0x4A5D, 0x4A5E, 0x4A5F, 0x4A60, 0x4A61, 0x4A62, 0x4A63, 0x4A64, - 0x4A65, 0x4A66, 0x4A67, 0x4A68, 0x4A69, 0x4A6A, 0x4A6B, 0x4A6C, 0x4A6D, - 0x4A6E, 0x4A6F, 0x4A70, 0x4A71, 0x4A72, 0x4A73, 0x4A74, 0x4A75, 0x4A76, - 0x4A77, 0x4A78, 0x4A79, 0x4A7A, 0x4A7B, 0x4A7C, 0x4A7D, 0x4A7E, 0x4A7F, - 0x4A80, 0x4A81, 0x4A82, 0x4A83, 0x4A84, 0x4A85, 0x4A86, 0x4A87, 0x4A88, - 0x4A89, 0x4A8A, 0x4A8B, 0x4A8C, 0x4A8D, 0x4A8E, 0x4A8F, 0x4A90, 0x4A91, - 0x4A92, 0x4A93, 0x4A94, 0x4A95, 0x4A96, 0x4A97, 0x4A98, 0x4A99, 0x4A9A, - 0x4A9B, 0x4A9C, 0x4A9D, 0x4A9E, 0x4A9F, 0x4AA0, 0x4AA1, 0x4AA2, 0x4AA3, - 0x4AA4, 0x4AA5, 0x4AA6, 0x4AA7, 0x4AA8, 0x4AA9, 0x4AAA, 0x4AAB, 0x4AAC, - 0x4AAD, 0x4AAE, 0x4AAF, 0x4AB0, 0x4AB1, 0x4AB2, 0x4AB3, 0x4AB4, 0x4AB5, - 0x4AB6, 0x4AB7, 0x4AB8, 0x4AB9, 0x4ABA, 0x4ABB, 0x4ABC, 0x4ABD, 0x4ABE, - 0x4ABF, 0x4AC0, 0x4AC1, 0x4AC2, 0x4AC3, 0x4AC4, 0x4AC5, 0x4AC6, 0x4AC7, - 0x4AC8, 0x4AC9, 0x4ACA, 0x4ACB, 0x4ACC, 0x4ACD, 0x4ACE, 0x4ACF, 0x4AD0, - 0x4AD1, 0x4AD2, 0x4AD3, 0x4AD4, 0x4AD5, 0x4AD6, 0x4AD7, 0x4AD8, 0x4AD9, - 0x4ADA, 0x4ADB, 0x4ADC, 0x4ADD, 0x4ADE, 0x4ADF, 0x4AE0, 0x4AE1, 0x4AE2, - 0x4AE3, 0x4AE4, 0x4AE5, 0x4AE6, 0x4AE7, 0x4AE8, 0x4AE9, 0x4AEA, 0x4AEB, - 0x4AEC, 0x4AED, 0x4AEE, 0x4AEF, 0x4AF0, 0x4AF1, 0x4AF2, 0x4AF3, 0x4AF4, - 0x4AF5, 0x4AF6, 0x4AF7, 0x4AF8, 0x4AF9, 0x4AFA, 0x4AFB, 0x4AFC, 0x4AFD, - 0x4AFE, 0x4AFF, 0x4B00, 0x4B01, 0x4B02, 0x4B03, 0x4B04, 0x4B05, 0x4B06, - 0x4B07, 0x4B08, 0x4B09, 0x4B0A, 0x4B0B, 0x4B0C, 0x4B0D, 0x4B0E, 0x4B0F, - 0x4B10, 0x4B11, 0x4B12, 0x4B13, 0x4B14, 0x4B15, 0x4B16, 0x4B17, 0x4B18, - 0x4B19, 0x4B1A, 0x4B1B, 0x4B1C, 0x4B1D, 0x4B1E, 0x4B1F, 0x4B20, 0x4B21, - 0x4B22, 0x4B23, 0x4B24, 0x4B25, 0x4B26, 0x4B27, 0x4B28, 0x4B29, 0x4B2A, - 0x4B2B, 0x4B2C, 0x4B2D, 0x4B2E, 0x4B2F, 0x4B30, 0x4B31, 0x4B32, 0x4B33, - 0x4B34, 0x4B35, 0x4B36, 0x4B37, 0x4B38, 0x4B39, 0x4B3A, 0x4B3B, 0x4B3C, - 0x4B3D, 0x4B3E, 0x4B3F, 0x4B40, 0x4B41, 0x4B42, 0x4B43, 0x4B44, 0x4B45, - 0x4B46, 0x4B47, 0x4B48, 0x4B49, 0x4B4A, 0x4B4B, 0x4B4C, 0x4B4D, 0x4B4E, - 0x4B4F, 0x4B50, 0x4B51, 0x4B52, 0x4B53, 0x4B54, 0x4B55, 0x4B56, 0x4B57, - 0x4B58, 0x4B59, 0x4B5A, 0x4B5B, 0x4B5C, 0x4B5D, 0x4B5E, 0x4B5F, 0x4B60, - 0x4B61, 0x4B62, 0x4B63, 0x4B64, 0x4B65, 0x4B66, 0x4B67, 0x4B68, 0x4B69, - 0x4B6A, 0x4B6B, 0x4B6C, 0x4B6D, 0x4B6E, 0x4B6F, 0x4B70, 0x4B71, 0x4B72, - 0x4B73, 0x4B74, 0x4B75, 0x4B76, 0x4B77, 0x4B78, 0x4B79, 0x4B7A, 0x4B7B, - 0x4B7C, 0x4B7D, 0x4B7E, 0x4B7F, 0x4B80, 0x4B81, 0x4B82, 0x4B83, 0x4B84, - 0x4B85, 0x4B86, 0x4B87, 0x4B88, 0x4B89, 0x4B8A, 0x4B8B, 0x4B8C, 0x4B8D, - 0x4B8E, 0x4B8F, 0x4B90, 0x4B91, 0x4B92, 0x4B93, 0x4B94, 0x4B95, 0x4B96, - 0x4B97, 0x4B98, 0x4B99, 0x4B9A, 0x4B9B, 0x4B9C, 0x4B9D, 0x4B9E, 0x4B9F, - 0x4BA0, 0x4BA1, 0x4BA2, 0x4BA3, 0x4BA4, 0x4BA5, 0x4BA6, 0x4BA7, 0x4BA8, - 0x4BA9, 0x4BAA, 0x4BAB, 0x4BAC, 0x4BAD, 0x4BAE, 0x4BAF, 0x4BB0, 0x4BB1, - 0x4BB2, 0x4BB3, 0x4BB4, 0x4BB5, 0x4BB6, 0x4BB7, 0x4BB8, 0x4BB9, 0x4BBA, - 0x4BBB, 0x4BBC, 0x4BBD, 0x4BBE, 0x4BBF, 0x4BC0, 0x4BC1, 0x4BC2, 0x4BC3, - 0x4BC4, 0x4BC5, 0x4BC6, 0x4BC7, 0x4BC8, 0x4BC9, 0x4BCA, 0x4BCB, 0x4BCC, - 0x4BCD, 0x4BCE, 0x4BCF, 0x4BD0, 0x4BD1, 0x4BD2, 0x4BD3, 0x4BD4, 0x4BD5, - 0x4BD6, 0x4BD7, 0x4BD8, 0x4BD9, 0x4BDA, 0x4BDB, 0x4BDC, 0x4BDD, 0x4BDE, - 0x4BDF, 0x4BE0, 0x4BE1, 0x4BE2, 0x4BE3, 0x4BE4, 0x4BE5, 0x4BE6, 0x4BE7, - 0x4BE8, 0x4BE9, 0x4BEA, 0x4BEB, 0x4BEC, 0x4BED, 0x4BEE, 0x4BEF, 0x4BF0, - 0x4BF1, 0x4BF2, 0x4BF3, 0x4BF4, 0x4BF5, 0x4BF6, 0x4BF7, 0x4BF8, 0x4BF9, - 0x4BFA, 0x4BFB, 0x4BFC, 0x4BFD, 0x4BFE, 0x4BFF, 0x4C00, 0x4C01, 0x4C02, - 0x4C03, 0x4C04, 0x4C05, 0x4C06, 0x4C07, 0x4C08, 0x4C09, 0x4C0A, 0x4C0B, - 0x4C0C, 0x4C0D, 0x4C0E, 0x4C0F, 0x4C10, 0x4C11, 0x4C12, 0x4C13, 0x4C14, - 0x4C15, 0x4C16, 0x4C17, 0x4C18, 0x4C19, 0x4C1A, 0x4C1B, 0x4C1C, 0x4C1D, - 0x4C1E, 0x4C1F, 0x4C20, 0x4C21, 0x4C22, 0x4C23, 0x4C24, 0x4C25, 0x4C26, - 0x4C27, 0x4C28, 0x4C29, 0x4C2A, 0x4C2B, 0x4C2C, 0x4C2D, 0x4C2E, 0x4C2F, - 0x4C30, 0x4C31, 0x4C32, 0x4C33, 0x4C34, 0x4C35, 0x4C36, 0x4C37, 0x4C38, - 0x4C39, 0x4C3A, 0x4C3B, 0x4C3C, 0x4C3D, 0x4C3E, 0x4C3F, 0x4C40, 0x4C41, - 0x4C42, 0x4C43, 0x4C44, 0x4C45, 0x4C46, 0x4C47, 0x4C48, 0x4C49, 0x4C4A, - 0x4C4B, 0x4C4C, 0x4C4D, 0x4C4E, 0x4C4F, 0x4C50, 0x4C51, 0x4C52, 0x4C53, - 0x4C54, 0x4C55, 0x4C56, 0x4C57, 0x4C58, 0x4C59, 0x4C5A, 0x4C5B, 0x4C5C, - 0x4C5D, 0x4C5E, 0x4C5F, 0x4C60, 0x4C61, 0x4C62, 0x4C63, 0x4C64, 0x4C65, - 0x4C66, 0x4C67, 0x4C68, 0x4C69, 0x4C6A, 0x4C6B, 0x4C6C, 0x4C6D, 0x4C6E, - 0x4C6F, 0x4C70, 0x4C71, 0x4C72, 0x4C73, 0x4C74, 0x4C75, 0x4C76, 0x4C78, - 0x4C79, 0x4C7A, 0x4C7B, 0x4C7C, 0x4C7D, 0x4C7E, 0x4C7F, 0x4C80, 0x4C81, - 0x4C82, 0x4C83, 0x4C84, 0x4C85, 0x4C86, 0x4C87, 0x4C88, 0x4C89, 0x4C8A, - 0x4C8B, 0x4C8C, 0x4C8D, 0x4C8E, 0x4C8F, 0x4C90, 0x4C91, 0x4C92, 0x4C93, - 0x4C94, 0x4C95, 0x4C96, 0x4C97, 0x4C98, 0x4C99, 0x4C9A, 0x4C9B, 0x4C9C, - 0x4C9D, 0x4C9E, 0x4CA4, 0x4CA5, 0x4CA6, 0x4CA7, 0x4CA8, 0x4CA9, 0x4CAA, - 0x4CAB, 0x4CAC, 0x4CAD, 0x4CAE, 0x4CAF, 0x4CB0, 0x4CB1, 0x4CB2, 0x4CB3, - 0x4CB4, 0x4CB5, 0x4CB6, 0x4CB7, 0x4CB8, 0x4CB9, 0x4CBA, 0x4CBB, 0x4CBC, - 0x4CBD, 0x4CBE, 0x4CBF, 0x4CC0, 0x4CC1, 0x4CC2, 0x4CC3, 0x4CC4, 0x4CC5, - 0x4CC6, 0x4CC7, 0x4CC8, 0x4CC9, 0x4CCA, 0x4CCB, 0x4CCC, 0x4CCD, 0x4CCE, - 0x4CCF, 0x4CD0, 0x4CD1, 0x4CD2, 0x4CD3, 0x4CD4, 0x4CD5, 0x4CD6, 0x4CD7, - 0x4CD8, 0x4CD9, 0x4CDA, 0x4CDB, 0x4CDC, 0x4CDD, 0x4CDE, 0x4CDF, 0x4CE0, - 0x4CE1, 0x4CE2, 0x4CE3, 0x4CE4, 0x4CE5, 0x4CE6, 0x4CE7, 0x4CE8, 0x4CE9, - 0x4CEA, 0x4CEB, 0x4CEC, 0x4CED, 0x4CEE, 0x4CEF, 0x4CF0, 0x4CF1, 0x4CF2, - 0x4CF3, 0x4CF4, 0x4CF5, 0x4CF6, 0x4CF7, 0x4CF8, 0x4CF9, 0x4CFA, 0x4CFB, - 0x4CFC, 0x4CFD, 0x4CFE, 0x4CFF, 0x4D00, 0x4D01, 0x4D02, 0x4D03, 0x4D04, - 0x4D05, 0x4D06, 0x4D07, 0x4D08, 0x4D09, 0x4D0A, 0x4D0B, 0x4D0C, 0x4D0D, - 0x4D0E, 0x4D0F, 0x4D10, 0x4D11, 0x4D12, 0x4D1A, 0x4D1B, 0x4D1C, 0x4D1D, - 0x4D1E, 0x4D1F, 0x4D20, 0x4D21, 0x4D22, 0x4D23, 0x4D24, 0x4D25, 0x4D26, - 0x4D27, 0x4D28, 0x4D29, 0x4D2A, 0x4D2B, 0x4D2C, 0x4D2D, 0x4D2E, 0x4D2F, - 0x4D30, 0x4D31, 0x4D32, 0x4D33, 0x4D34, 0x4D35, 0x4D36, 0x4D37, 0x4D38, - 0x4D39, 0x4D3A, 0x4D3B, 0x4D3C, 0x4D3D, 0x4D3E, 0x4D3F, 0x4D40, 0x4D41, - 0x4D42, 0x4D43, 0x4D44, 0x4D45, 0x4D46, 0x4D47, 0x4D48, 0x4D49, 0x4D4A, - 0x4D4B, 0x4D4C, 0x4D4D, 0x4D4E, 0x4D4F, 0x4D50, 0x4D51, 0x4D52, 0x4D53, - 0x4D54, 0x4D55, 0x4D56, 0x4D57, 0x4D58, 0x4D59, 0x4D5A, 0x4D5B, 0x4D5C, - 0x4D5D, 0x4D5E, 0x4D5F, 0x4D60, 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65, - 0x4D66, 0x4D67, 0x4D68, 0x4D69, 0x4D6A, 0x4D6B, 0x4D6C, 0x4D6D, 0x4D6E, - 0x4D6F, 0x4D70, 0x4D71, 0x4D72, 0x4D73, 0x4D74, 0x4D75, 0x4D76, 0x4D77, - 0x4D78, 0x4D79, 0x4D7A, 0x4D7B, 0x4D7C, 0x4D7D, 0x4D7E, 0x4D7F, 0x4D80, - 0x4D81, 0x4D82, 0x4D83, 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88, 0x4D89, - 0x4D8A, 0x4D8B, 0x4D8C, 0x4D8D, 0x4D8E, 0x4D8F, 0x4D90, 0x4D91, 0x4D92, - 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97, 0x4D98, 0x4D99, 0x4D9A, 0x4D9B, - 0x4D9C, 0x4D9D, 0x4D9E, 0x4D9F, 0x4DA0, 0x4DA1, 0x4DA2, 0x4DA3, 0x4DA4, - 0x4DA5, 0x4DA6, 0x4DA7, 0x4DA8, 0x4DA9, 0x4DAA, 0x4DAB, 0x4DAC, 0x4DAD, - 0x4DAF, 0x4DB0, 0x4DB1, 0x4DB2, 0x4DB3, 0x4DB4, 0x4DB5, 0x20AC, 0x00A5, - 0x20AC, 0x0024, 0x303F, 0xA000, 0xA001, 0xA002, 0xA003, 0xA004, 0xA005, - 0xA006, 0xA007, 0xA008, 0xA009, 0xA00A, 0xA00B, 0xA00C, 0xA00D, 0xA00E, - 0xA00F, 0xA010, 0xA011, 0xA012, 0xA013, 0xA014, 0xA015, 0xA016, 0xA017, - 0xA018, 0xA019, 0xA01A, 0xA01B, 0xA01C, 0xA01D, 0xA01E, 0xA01F, 0xA020, - 0xA021, 0xA022, 0xA023, 0xA024, 0xA025, 0xA026, 0xA027, 0xA028, 0xA029, - 0xA02A, 0xA02B, 0xA02C, 0xA02D, 0xA02E, 0xA02F, 0xA030, 0xA031, 0xA032, - 0xA033, 0xA034, 0xA035, 0xA036, 0xA037, 0xA038, 0xA039, 0xA03A, 0xA03B, - 0xA03C, 0xA03D, 0xA03E, 0xA03F, 0xA040, 0xA041, 0xA042, 0xA043, 0xA044, - 0xA045, 0xA046, 0xA047, 0xA048, 0xA049, 0xA04A, 0xA04B, 0xA04C, 0xA04D, - 0xA04E, 0xA04F, 0xA050, 0xA051, 0xA052, 0xA053, 0xA054, 0xA055, 0xA056, - 0xA057, 0xA058, 0xA059, 0xA05A, 0xA05B, 0xA05C, 0xA05D, 0xA05E, 0xA05F, - 0xA060, 0xA061, 0xA062, 0xA063, 0xA064, 0xA065, 0xA066, 0xA067, 0xA068, - 0xA069, 0xA06A, 0xA06B, 0xA06C, 0xA06D, 0xA06E, 0xA06F, 0xA070, 0xA071, - 0xA072, 0xA073, 0xA074, 0xA075, 0xA076, 0xA077, 0xA078, 0xA079, 0xA07A, - 0xA07B, 0xA07C, 0xA07D, 0xA07E, 0xA07F, 0xA080, 0xA081, 0xA082, 0xA083, - 0xA084, 0xA085, 0xA086, 0xA087, 0xA088, 0xA089, 0xA08A, 0xA08B, 0xA08C, - 0xA08D, 0xA08E, 0xA08F, 0xA090, 0xA091, 0xA092, 0xA093, 0xA094, 0xA095, - 0xA096, 0xA097, 0xA098, 0xA099, 0xA09A, 0xA09B, 0xA09C, 0xA09D, 0xA09E, - 0xA09F, 0xA0A0, 0xA0A1, 0xA0A2, 0xA0A3, 0xA0A4, 0xA0A5, 0xA0A6, 0xA0A7, - 0xA0A8, 0xA0A9, 0xA0AA, 0xA0AB, 0xA0AC, 0xA0AD, 0xA0AE, 0xA0AF, 0xA0B0, - 0xA0B1, 0xA0B2, 0xA0B3, 0xA0B4, 0xA0B5, 0xA0B6, 0xA0B7, 0xA0B8, 0xA0B9, - 0xA0BA, 0xA0BB, 0xA0BC, 0xA0BD, 0xA0BE, 0xA0BF, 0xA0C0, 0xA0C1, 0xA0C2, - 0xA0C3, 0xA0C4, 0xA0C5, 0xA0C6, 0xA0C7, 0xA0C8, 0xA0C9, 0xA0CA, 0xA0CB, - 0xA0CC, 0xA0CD, 0xA0CE, 0xA0CF, 0xA0D0, 0xA0D1, 0xA0D2, 0xA0D3, 0xA0D4, - 0xA0D5, 0xA0D6, 0xA0D7, 0xA0D8, 0xA0D9, 0xA0DA, 0xA0DB, 0xA0DC, 0xA0DD, - 0xA0DE, 0xA0DF, 0xA0E0, 0xA0E1, 0xA0E2, 0xA0E3, 0xA0E4, 0xA0E5, 0xA0E6, - 0xA0E7, 0xA0E8, 0xA0E9, 0xA0EA, 0xA0EB, 0xA0EC, 0xA0ED, 0xA0EE, 0xA0EF, - 0xA0F0, 0xA0F1, 0xA0F2, 0xA0F3, 0xA0F4, 0xA0F5, 0xA0F6, 0xA0F7, 0xA0F8, - 0xA0F9, 0xA0FA, 0xA0FB, 0xA0FC, 0xA0FD, 0xA0FE, 0xA0FF, 0xA100, 0xA101, - 0xA102, 0xA103, 0xA104, 0xA105, 0xA106, 0xA107, 0xA108, 0xA109, 0xA10A, - 0xA10B, 0xA10C, 0xA10D, 0xA10E, 0xA10F, 0xA110, 0xA111, 0xA112, 0xA113, - 0xA114, 0xA115, 0xA116, 0xA117, 0xA118, 0xA119, 0xA11A, 0xA11B, 0xA11C, - 0xA11D, 0xA11E, 0xA11F, 0xA120, 0xA121, 0xA122, 0xA123, 0xA124, 0xA125, - 0xA126, 0xA127, 0xA128, 0xA129, 0xA12A, 0xA12B, 0xA12C, 0xA12D, 0xA12E, - 0xA12F, 0xA130, 0xA131, 0xA132, 0xA133, 0xA134, 0xA135, 0xA136, 0xA137, - 0xA138, 0xA139, 0xA13A, 0xA13B, 0xA13C, 0xA13D, 0xA13E, 0xA13F, 0xA140, - 0xA141, 0xA142, 0xA143, 0xA144, 0xA145, 0xA146, 0xA147, 0xA148, 0xA149, - 0xA14A, 0xA14B, 0xA14C, 0xA14D, 0xA14E, 0xA14F, 0xA150, 0xA151, 0xA152, - 0xA153, 0xA154, 0xA155, 0xA156, 0xA157, 0xA158, 0xA159, 0xA15A, 0xA15B, - 0xA15C, 0xA15D, 0xA15E, 0xA15F, 0xA160, 0xA161, 0xA162, 0xA163, 0xA164, - 0xA165, 0xA166, 0xA167, 0xA168, 0xA169, 0xA16A, 0xA16B, 0xA16C, 0xA16D, - 0xA16E, 0xA16F, 0xA170, 0xA171, 0xA172, 0xA173, 0xA174, 0xA175, 0xA176, - 0xA177, 0xA178, 0xA179, 0xA17A, 0xA17B, 0xA17C, 0xA17D, 0xA17E, 0xA17F, - 0xA180, 0xA181, 0xA182, 0xA183, 0xA184, 0xA185, 0xA186, 0xA187, 0xA188, - 0xA189, 0xA18A, 0xA18B, 0xA18C, 0xA18D, 0xA18E, 0xA18F, 0xA190, 0xA191, - 0xA192, 0xA193, 0xA194, 0xA195, 0xA196, 0xA197, 0xA198, 0xA199, 0xA19A, - 0xA19B, 0xA19C, 0xA19D, 0xA19E, 0xA19F, 0xA1A0, 0xA1A1, 0xA1A2, 0xA1A3, - 0xA1A4, 0xA1A5, 0xA1A6, 0xA1A7, 0xA1A8, 0xA1A9, 0xA1AA, 0xA1AB, 0xA1AC, - 0xA1AD, 0xA1AE, 0xA1AF, 0xA1B0, 0xA1B1, 0xA1B2, 0xA1B3, 0xA1B4, 0xA1B5, - 0xA1B6, 0xA1B7, 0xA1B8, 0xA1B9, 0xA1BA, 0xA1BB, 0xA1BC, 0xA1BD, 0xA1BE, - 0xA1BF, 0xA1C0, 0xA1C1, 0xA1C2, 0xA1C3, 0xA1C4, 0xA1C5, 0xA1C6, 0xA1C7, - 0xA1C8, 0xA1C9, 0xA1CA, 0xA1CB, 0xA1CC, 0xA1CD, 0xA1CE, 0xA1CF, 0xA1D0, - 0xA1D1, 0xA1D2, 0xA1D3, 0xA1D4, 0xA1D5, 0xA1D6, 0xA1D7, 0xA1D8, 0xA1D9, - 0xA1DA, 0xA1DB, 0xA1DC, 0xA1DD, 0xA1DE, 0xA1DF, 0xA1E0, 0xA1E1, 0xA1E2, - 0xA1E3, 0xA1E4, 0xA1E5, 0xA1E6, 0xA1E7, 0xA1E8, 0xA1E9, 0xA1EA, 0xA1EB, - 0xA1EC, 0xA1ED, 0xA1EE, 0xA1EF, 0xA1F0, 0xA1F1, 0xA1F2, 0xA1F3, 0xA1F4, - 0xA1F5, 0xA1F6, 0xA1F7, 0xA1F8, 0xA1F9, 0xA1FA, 0xA1FB, 0xA1FC, 0xA1FD, - 0xA1FE, 0xA1FF, 0xA200, 0xA201, 0xA202, 0xA203, 0xA204, 0xA205, 0xA206, - 0xA207, 0xA208, 0xA209, 0xA20A, 0xA20B, 0xA20C, 0xA20D, 0xA20E, 0xA20F, - 0xA210, 0xA211, 0xA212, 0xA213, 0xA214, 0xA215, 0xA216, 0xA217, 0xA218, - 0xA219, 0xA21A, 0xA21B, 0xA21C, 0xA21D, 0xA21E, 0xA21F, 0xA220, 0xA221, - 0xA222, 0xA223, 0xA224, 0xA225, 0xA226, 0xA227, 0xA228, 0xA229, 0xA22A, - 0xA22B, 0xA22C, 0xA22D, 0xA22E, 0xA22F, 0xA230, 0xA231, 0xA232, 0xA233, - 0xA234, 0xA235, 0xA236, 0xA237, 0xA238, 0xA239, 0xA23A, 0xA23B, 0xA23C, - 0xA23D, 0xA23E, 0xA23F, 0xA240, 0xA241, 0xA242, 0xA243, 0xA244, 0xA245, - 0xA246, 0xA247, 0xA248, 0xA249, 0xA24A, 0xA24B, 0xA24C, 0xA24D, 0xA24E, - 0xA24F, 0xA250, 0xA251, 0xA252, 0xA253, 0xA254, 0xA255, 0xA256, 0xA257, - 0xA258, 0xA259, 0xA25A, 0xA25B, 0xA25C, 0xA25D, 0xA25E, 0xA25F, 0xA260, - 0xA261, 0xA262, 0xA263, 0xA264, 0xA265, 0xA266, 0xA267, 0xA268, 0xA269, - 0xA26A, 0xA26B, 0xA26C, 0xA26D, 0xA26E, 0xA26F, 0xA270, 0xA271, 0xA272, - 0xA273, 0xA274, 0xA275, 0xA276, 0xA277, 0xA278, 0xA279, 0xA27A, 0xA27B, - 0xA27C, 0xA27D, 0xA27E, 0xA27F, 0xA280, 0xA281, 0xA282, 0xA283, 0xA284, - 0xA285, 0xA286, 0xA287, 0xA288, 0xA289, 0xA28A, 0xA28B, 0xA28C, 0xA28D, - 0xA28E, 0xA28F, 0xA290, 0xA291, 0xA292, 0xA293, 0xA294, 0xA295, 0xA296, - 0xA297, 0xA298, 0xA299, 0xA29A, 0xA29B, 0xA29C, 0xA29D, 0xA29E, 0xA29F, - 0xA2A0, 0xA2A1, 0xA2A2, 0xA2A3, 0xA2A4, 0xA2A5, 0xA2A6, 0xA2A7, 0xA2A8, - 0xA2A9, 0xA2AA, 0xA2AB, 0xA2AC, 0xA2AD, 0xA2AE, 0xA2AF, 0xA2B0, 0xA2B1, - 0xA2B2, 0xA2B3, 0xA2B4, 0xA2B5, 0xA2B6, 0xA2B7, 0xA2B8, 0xA2B9, 0xA2BA, - 0xA2BB, 0xA2BC, 0xA2BD, 0xA2BE, 0xA2BF, 0xA2C0, 0xA2C1, 0xA2C2, 0xA2C3, - 0xA2C4, 0xA2C5, 0xA2C6, 0xA2C7, 0xA2C8, 0xA2C9, 0xA2CA, 0xA2CB, 0xA2CC, - 0xA2CD, 0xA2CE, 0xA2CF, 0xA2D0, 0xA2D1, 0xA2D2, 0xA2D3, 0xA2D4, 0xA2D5, - 0xA2D6, 0xA2D7, 0xA2D8, 0xA2D9, 0xA2DA, 0xA2DB, 0xA2DC, 0xA2DD, 0xA2DE, - 0xA2DF, 0xA2E0, 0xA2E1, 0xA2E2, 0xA2E3, 0xA2E4, 0xA2E5, 0xA2E6, 0xA2E7, - 0xA2E8, 0xA2E9, 0xA2EA, 0xA2EB, 0xA2EC, 0xA2ED, 0xA2EE, 0xA2EF, 0xA2F0, - 0xA2F1, 0xA2F2, 0xA2F3, 0xA2F4, 0xA2F5, 0xA2F6, 0xA2F7, 0xA2F8, 0xA2F9, - 0xA2FA, 0xA2FB, 0xA2FC, 0xA2FD, 0xA2FE, 0xA2FF, 0xA300, 0xA301, 0xA302, - 0xA303, 0xA304, 0xA305, 0xA306, 0xA307, 0xA308, 0xA309, 0xA30A, 0xA30B, - 0xA30C, 0xA30D, 0xA30E, 0xA30F, 0xA310, 0xA311, 0xA312, 0xA313, 0xA314, - 0xA315, 0xA316, 0xA317, 0xA318, 0xA319, 0xA31A, 0xA31B, 0xA31C, 0xA31D, - 0xA31E, 0xA31F, 0xA320, 0xA321, 0xA322, 0xA323, 0xA324, 0xA325, 0xA326, - 0xA327, 0xA328, 0xA329, 0xA32A, 0xA32B, 0xA32C, 0xA32D, 0xA32E, 0xA32F, - 0xA330, 0xA331, 0xA332, 0xA333, 0xA334, 0xA335, 0xA336, 0xA337, 0xA338, - 0xA339, 0xA33A, 0xA33B, 0xA33C, 0xA33D, 0xA33E, 0xA33F, 0xA340, 0xA341, - 0xA342, 0xA343, 0xA344, 0xA345, 0xA346, 0xA347, 0xA348, 0xA349, 0xA34A, - 0xA34B, 0xA34C, 0xA34D, 0xA34E, 0xA34F, 0xA350, 0xA351, 0xA352, 0xA353, - 0xA354, 0xA355, 0xA356, 0xA357, 0xA358, 0xA359, 0xA35A, 0xA35B, 0xA35C, - 0xA35D, 0xA35E, 0xA35F, 0xA360, 0xA361, 0xA362, 0xA363, 0xA364, 0xA365, - 0xA366, 0xA367, 0xA368, 0xA369, 0xA36A, 0xA36B, 0xA36C, 0xA36D, 0xA36E, - 0xA36F, 0xA370, 0xA371, 0xA372, 0xA373, 0xA374, 0xA375, 0xA376, 0xA377, - 0xA378, 0xA379, 0xA37A, 0xA37B, 0xA37C, 0xA37D, 0xA37E, 0xA37F, 0xA380, - 0xA381, 0xA382, 0xA383, 0xA384, 0xA385, 0xA386, 0xA387, 0xA388, 0xA389, - 0xA38A, 0xA38B, 0xA38C, 0xA38D, 0xA38E, 0xA38F, 0xA390, 0xA391, 0xA392, - 0xA393, 0xA394, 0xA395, 0xA396, 0xA397, 0xA398, 0xA399, 0xA39A, 0xA39B, - 0xA39C, 0xA39D, 0xA39E, 0xA39F, 0xA3A0, 0xA3A1, 0xA3A2, 0xA3A3, 0xA3A4, - 0xA3A5, 0xA3A6, 0xA3A7, 0xA3A8, 0xA3A9, 0xA3AA, 0xA3AB, 0xA3AC, 0xA3AD, - 0xA3AE, 0xA3AF, 0xA3B0, 0xA3B1, 0xA3B2, 0xA3B3, 0xA3B4, 0xA3B5, 0xA3B6, - 0xA3B7, 0xA3B8, 0xA3B9, 0xA3BA, 0xA3BB, 0xA3BC, 0xA3BD, 0xA3BE, 0xA3BF, - 0xA3C0, 0xA3C1, 0xA3C2, 0xA3C3, 0xA3C4, 0xA3C5, 0xA3C6, 0xA3C7, 0xA3C8, - 0xA3C9, 0xA3CA, 0xA3CB, 0xA3CC, 0xA3CD, 0xA3CE, 0xA3CF, 0xA3D0, 0xA3D1, - 0xA3D2, 0xA3D3, 0xA3D4, 0xA3D5, 0xA3D6, 0xA3D7, 0xA3D8, 0xA3D9, 0xA3DA, - 0xA3DB, 0xA3DC, 0xA3DD, 0xA3DE, 0xA3DF, 0xA3E0, 0xA3E1, 0xA3E2, 0xA3E3, - 0xA3E4, 0xA3E5, 0xA3E6, 0xA3E7, 0xA3E8, 0xA3E9, 0xA3EA, 0xA3EB, 0xA3EC, - 0xA3ED, 0xA3EE, 0xA3EF, 0xA3F0, 0xA3F1, 0xA3F2, 0xA3F3, 0xA3F4, 0xA3F5, - 0xA3F6, 0xA3F7, 0xA3F8, 0xA3F9, 0xA3FA, 0xA3FB, 0xA3FC, 0xA3FD, 0xA3FE, - 0xA3FF, 0xA400, 0xA401, 0xA402, 0xA403, 0xA404, 0xA405, 0xA406, 0xA407, - 0xA408, 0xA409, 0xA40A, 0xA40B, 0xA40C, 0xA40D, 0xA40E, 0xA40F, 0xA410, - 0xA411, 0xA412, 0xA413, 0xA414, 0xA415, 0xA416, 0xA417, 0xA418, 0xA419, - 0xA41A, 0xA41B, 0xA41C, 0xA41D, 0xA41E, 0xA41F, 0xA420, 0xA421, 0xA422, - 0xA423, 0xA424, 0xA425, 0xA426, 0xA427, 0xA428, 0xA429, 0xA42A, 0xA42B, - 0xA42C, 0xA42D, 0xA42E, 0xA42F, 0xA430, 0xA431, 0xA432, 0xA433, 0xA434, - 0xA435, 0xA436, 0xA437, 0xA438, 0xA439, 0xA43A, 0xA43B, 0xA43C, 0xA43D, - 0xA43E, 0xA43F, 0xA440, 0xA441, 0xA442, 0xA443, 0xA444, 0xA445, 0xA446, - 0xA447, 0xA448, 0xA449, 0xA44A, 0xA44B, 0xA44C, 0xA44D, 0xA44E, 0xA44F, - 0xA450, 0xA451, 0xA452, 0xA453, 0xA454, 0xA455, 0xA456, 0xA457, 0xA458, - 0xA459, 0xA45A, 0xA45B, 0xA45C, 0xA45D, 0xA45E, 0xA45F, 0xA460, 0xA461, - 0xA462, 0xA463, 0xA464, 0xA465, 0xA466, 0xA467, 0xA468, 0xA469, 0xA46A, - 0xA46B, 0xA46C, 0xA46D, 0xA46E, 0xA46F, 0xA470, 0xA471, 0xA472, 0xA473, - 0xA474, 0xA475, 0xA476, 0xA477, 0xA478, 0xA479, 0xA47A, 0xA47B, 0xA47C, - 0xA47D, 0xA47E, 0xA47F, 0xA480, 0xA481, 0xA482, 0xA483, 0xA484, 0xA485, - 0xA486, 0xA487, 0xA488, 0xA489, 0xA48A, 0xA48B, 0xA48C, 0xA490, 0xA491, - 0xA492, 0xA493, 0xA494, 0xA495, 0xA496, 0xA497, 0xA498, 0xA499, 0xA49A, - 0xA49B, 0xA49C, 0xA49D, 0xA49E, 0xA49F, 0xA4A0, 0xA4A1, 0xA4A2, 0xA4A3, - 0xA4A4, 0xA4A5, 0xA4A6, 0xA4A7, 0xA4A8, 0xA4A9, 0xA4AA, 0xA4AB, 0xA4AC, - 0xA4AD, 0xA4AE, 0xA4AF, 0xA4B0, 0xA4B1, 0xA4B2, 0xA4B3, 0xA4B4, 0xA4B5, - 0xA4B6, 0xA4B7, 0xA4B8, 0xA4B9, 0xA4BA, 0xA4BB, 0xA4BC, 0xA4BD, 0xA4BE, - 0xA4BF, 0xA4C0, 0xA4C1, 0xA4C2, 0xA4C3, 0xA4C4, 0xA4C5, 0xA4C6, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp deleted file mode 100644 index 047b87a1b0..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GB_EUC_H_0[90 * 3] = { - 0x0020, 0x0020, 0x1E24, 0x0021, 0x007E, 0x032E, 0xA1A1, 0xA1FE, 0x0060, - 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, - 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, - 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, - 0xA7D1, 0xA7F1, 0x027B, 0xA8A1, 0xA8C0, 0x029C, 0xA8C5, 0xA8EA, 0x02BC, - 0xA9A4, 0xA9EF, 0x02E2, 0xAAA1, 0xAAFE, 0x032E, 0xABA1, 0xABC0, 0x038C, - 0xB0A1, 0xB0FE, 0x03AC, 0xB1A1, 0xB1FE, 0x040A, 0xB2A1, 0xB2FE, 0x0468, - 0xB3A1, 0xB3FE, 0x04C6, 0xB4A1, 0xB4FE, 0x0524, 0xB5A1, 0xB5FE, 0x0582, - 0xB6A1, 0xB6FE, 0x05E0, 0xB7A1, 0xB7FE, 0x063E, 0xB8A1, 0xB8FE, 0x069C, - 0xB9A1, 0xB9FE, 0x06FA, 0xBAA1, 0xBAFE, 0x0758, 0xBBA1, 0xBBFE, 0x07B6, - 0xBCA1, 0xBCFE, 0x0814, 0xBDA1, 0xBDFE, 0x0872, 0xBEA1, 0xBEFE, 0x08D0, - 0xBFA1, 0xBFFE, 0x092E, 0xC0A1, 0xC0FE, 0x098C, 0xC1A1, 0xC1FE, 0x09EA, - 0xC2A1, 0xC2FE, 0x0A48, 0xC3A1, 0xC3FE, 0x0AA6, 0xC4A1, 0xC4FE, 0x0B04, - 0xC5A1, 0xC5FE, 0x0B62, 0xC6A1, 0xC6FE, 0x0BC0, 0xC7A1, 0xC7FE, 0x0C1E, - 0xC8A1, 0xC8FE, 0x0C7C, 0xC9A1, 0xC9FE, 0x0CDA, 0xCAA1, 0xCAFE, 0x0D38, - 0xCBA1, 0xCBFE, 0x0D96, 0xCCA1, 0xCCFE, 0x0DF4, 0xCDA1, 0xCDFE, 0x0E52, - 0xCEA1, 0xCEFE, 0x0EB0, 0xCFA1, 0xCFFE, 0x0F0E, 0xD0A1, 0xD0FE, 0x0F6C, - 0xD1A1, 0xD1FE, 0x0FCA, 0xD2A1, 0xD2FE, 0x1028, 0xD3A1, 0xD3FE, 0x1086, - 0xD4A1, 0xD4FE, 0x10E4, 0xD5A1, 0xD5FE, 0x1142, 0xD6A1, 0xD6FE, 0x11A0, - 0xD7A1, 0xD7F9, 0x11FE, 0xD8A1, 0xD8FE, 0x1257, 0xD9A1, 0xD9FE, 0x12B5, - 0xDAA1, 0xDAFE, 0x1313, 0xDBA1, 0xDBFE, 0x1371, 0xDCA1, 0xDCFE, 0x13CF, - 0xDDA1, 0xDDFE, 0x142D, 0xDEA1, 0xDEFE, 0x148B, 0xDFA1, 0xDFFE, 0x14E9, - 0xE0A1, 0xE0FE, 0x1547, 0xE1A1, 0xE1FE, 0x15A5, 0xE2A1, 0xE2FE, 0x1603, - 0xE3A1, 0xE3FE, 0x1661, 0xE4A1, 0xE4FE, 0x16BF, 0xE5A1, 0xE5FE, 0x171D, - 0xE6A1, 0xE6FE, 0x177B, 0xE7A1, 0xE7FE, 0x17D9, 0xE8A1, 0xE8FE, 0x1837, - 0xE9A1, 0xE9FE, 0x1895, 0xEAA1, 0xEAFE, 0x18F3, 0xEBA1, 0xEBFE, 0x1951, - 0xECA1, 0xECFE, 0x19AF, 0xEDA1, 0xEDFE, 0x1A0D, 0xEEA1, 0xEEFE, 0x1A6B, - 0xEFA1, 0xEFFE, 0x1AC9, 0xF0A1, 0xF0FE, 0x1B27, 0xF1A1, 0xF1FE, 0x1B85, - 0xF2A1, 0xF2FE, 0x1BE3, 0xF3A1, 0xF3FE, 0x1C41, 0xF4A1, 0xF4FE, 0x1C9F, - 0xF5A1, 0xF5FE, 0x1CFD, 0xF6A1, 0xF6FE, 0x1D5B, 0xF7A1, 0xF7FE, 0x1DB9, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp deleted file mode 100644 index 4502b66f62..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GB_EUC_V_0[20 * 3] = { - 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, - 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, - 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, - 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, - 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, - 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, - 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp deleted file mode 100644 index cd737d2e15..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp +++ /dev/null @@ -1,1367 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBK_EUC_H_2[4071 * 3] = { - 0x0020, 0x0020, 0x1E24, 0x0021, 0x007E, 0x032E, 0x8140, 0x8178, 0x2758, - 0x8179, 0x8179, 0x2059, 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, - 0x8186, 0x8186, 0x21F1, 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, - 0x81EE, 0x81F5, 0x2802, 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, - 0x8240, 0x8252, 0x2812, 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, - 0x8262, 0x8262, 0x21B5, 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, - 0x8275, 0x8279, 0x2844, 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, - 0x827D, 0x827D, 0x1E62, 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, - 0x8281, 0x8282, 0x284C, 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, - 0x8290, 0x8290, 0x205C, 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, - 0x82A6, 0x82C7, 0x286E, 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, - 0x82CA, 0x82E0, 0x2890, 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, - 0x82E3, 0x82E3, 0x210A, 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, - 0x82ED, 0x82ED, 0x267F, 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, - 0x82F3, 0x82F6, 0x28B4, 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, - 0x82F9, 0x82F9, 0x226C, 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, - 0x82FC, 0x82FE, 0x28B9, 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, - 0x8342, 0x8344, 0x28BD, 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, - 0x8348, 0x8348, 0x1FB9, 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, - 0x834D, 0x8352, 0x28C5, 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, - 0x8357, 0x8357, 0x20C2, 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, - 0x835F, 0x8364, 0x28D4, 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, - 0x8367, 0x8371, 0x28DA, 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, - 0x8378, 0x8378, 0x2210, 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, - 0x837B, 0x837B, 0x28EB, 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, - 0x837E, 0x837E, 0x1FE4, 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, - 0x8386, 0x8386, 0x22D6, 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, - 0x838A, 0x838A, 0x22CE, 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, - 0x838E, 0x8393, 0x28F6, 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, - 0x839E, 0x839E, 0x2231, 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, - 0x83A7, 0x83AA, 0x290C, 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, - 0x83AE, 0x83AE, 0x22D7, 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, - 0x83B1, 0x83B9, 0x2912, 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, - 0x83C9, 0x83C9, 0x2025, 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, - 0x83F7, 0x83FE, 0x2955, 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, - 0x8451, 0x8470, 0x296D, 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, - 0x8474, 0x8474, 0x2263, 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, - 0x8478, 0x847E, 0x2991, 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, - 0x8483, 0x848D, 0x299A, 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, - 0x8492, 0x8492, 0x22CA, 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, - 0x849D, 0x849D, 0x1F4F, 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, - 0x84A2, 0x84A2, 0x2036, 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, - 0x84A5, 0x84A5, 0x22C9, 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, - 0x84A9, 0x84A9, 0x1F75, 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, - 0x84C6, 0x84D2, 0x29D2, 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, - 0x84D5, 0x84D5, 0x21A9, 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, - 0x84D8, 0x84D8, 0x29E1, 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, - 0x84DB, 0x84DC, 0x29E2, 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, - 0x84EA, 0x84EA, 0x2323, 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, - 0x84EF, 0x84F0, 0x29F3, 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, - 0x8540, 0x8550, 0x2A02, 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, - 0x8553, 0x8553, 0x2A13, 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, - 0x855E, 0x855E, 0x20EF, 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, - 0x8567, 0x857E, 0x2A24, 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, - 0x8588, 0x858A, 0x2A43, 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, - 0x8592, 0x8592, 0x21F9, 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, - 0x8597, 0x8597, 0x2A4F, 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, - 0x85A2, 0x85A2, 0x1E5A, 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, - 0x85B3, 0x85FE, 0x2A68, 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, - 0x864B, 0x8653, 0x2ABE, 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, - 0x8668, 0x8668, 0x236C, 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, - 0x8696, 0x8696, 0x219C, 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, - 0x869A, 0x86A0, 0x2B08, 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, - 0x86CA, 0x86CA, 0x210B, 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, - 0x86CD, 0x86CD, 0x2B38, 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, - 0x86D1, 0x86D1, 0x222C, 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, - 0x86DD, 0x86DD, 0x22C0, 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, - 0x86E2, 0x86E7, 0x2B48, 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, - 0x86EE, 0x86EE, 0x2379, 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, - 0x86F5, 0x86FE, 0x2B58, 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, - 0x8744, 0x8744, 0x237C, 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, - 0x874A, 0x874A, 0x2B69, 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, - 0x874D, 0x874E, 0x2B6A, 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, - 0x8757, 0x8757, 0x1F4C, 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, - 0x875B, 0x875B, 0x21CF, 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, - 0x875E, 0x875E, 0x2371, 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, - 0x8761, 0x8765, 0x2B77, 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, - 0x877A, 0x877A, 0x236F, 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, - 0x877E, 0x877E, 0x2B91, 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, - 0x8782, 0x8782, 0x2373, 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, - 0x8787, 0x8787, 0x2B96, 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, - 0x878A, 0x878A, 0x20B5, 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, - 0x878E, 0x878E, 0x2672, 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, - 0x8794, 0x8797, 0x2B9E, 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, - 0x879D, 0x879D, 0x2375, 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, - 0x87A4, 0x87A6, 0x2BAB, 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, - 0x87B3, 0x87B3, 0x236B, 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, - 0x87B6, 0x87BA, 0x2BBA, 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, - 0x87BF, 0x87BF, 0x237D, 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, - 0x87C2, 0x87C2, 0x2381, 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, - 0x87CB, 0x87CB, 0x237E, 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, - 0x87CF, 0x87CF, 0x22DB, 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, - 0x87D3, 0x87D3, 0x2689, 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, - 0x87D6, 0x87D9, 0x2BCF, 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, - 0x87F7, 0x87F7, 0x2383, 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, - 0x87FA, 0x87FA, 0x218F, 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, - 0x8841, 0x8841, 0x2248, 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, - 0x8845, 0x8845, 0x2BF6, 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, - 0x8880, 0x88B9, 0x2C2F, 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, - 0x88CC, 0x88CC, 0x228B, 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, - 0x88D5, 0x88D6, 0x2C81, 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, - 0x88DF, 0x88DF, 0x232C, 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, - 0x88E6, 0x88F1, 0x2C8F, 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, - 0x88F4, 0x88F5, 0x2C9B, 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, - 0x8940, 0x894A, 0x2CA5, 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, - 0x894D, 0x894D, 0x2CB0, 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, - 0x8950, 0x8950, 0x232D, 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, - 0x8955, 0x895C, 0x2CB5, 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, - 0x895F, 0x895F, 0x232F, 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, - 0x896E, 0x8970, 0x2CCB, 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, - 0x897C, 0x897C, 0x1EC2, 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, - 0x898B, 0x898B, 0x22B2, 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, - 0x899A, 0x899D, 0x2CF2, 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, - 0x89A6, 0x89A6, 0x20D9, 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, - 0x89A9, 0x89AE, 0x2CFE, 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, - 0x89BA, 0x89BA, 0x21ED, 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, - 0x89BF, 0x89BF, 0x2326, 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, - 0x89C4, 0x89C4, 0x1F52, 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, - 0x89C7, 0x89C7, 0x2D14, 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, - 0x89CE, 0x89CE, 0x1E2B, 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, - 0x89D2, 0x89D7, 0x2D1C, 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, - 0x89DB, 0x89DB, 0x2138, 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, - 0x89F5, 0x89FE, 0x2D3C, 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, - 0x8A42, 0x8A58, 0x2D47, 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, - 0x8A5B, 0x8A5B, 0x2D5E, 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, - 0x8A5E, 0x8A5E, 0x1EFA, 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, - 0x8A7A, 0x8A7E, 0x2D7A, 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, - 0x8AE5, 0x8AFE, 0x2DE3, 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, - 0x8B45, 0x8B48, 0x2E01, 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, - 0x8B7A, 0x8B7A, 0x23FC, 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, - 0x8B8C, 0x8B8C, 0x2069, 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, - 0x8B9F, 0x8BB2, 0x2E56, 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, - 0x8BB9, 0x8BB9, 0x23FD, 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, - 0x8BBF, 0x8BC5, 0x2E73, 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, - 0x8BC8, 0x8BC8, 0x23FE, 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, - 0x8BD4, 0x8BD4, 0x2401, 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, - 0x8BDD, 0x8BE4, 0x2E8C, 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, - 0x8BEB, 0x8BEB, 0x2221, 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, - 0x8BF1, 0x8BFE, 0x2E9D, 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, - 0x8C45, 0x8C4E, 0x2EAF, 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, - 0x8C57, 0x8C57, 0x21E5, 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, - 0x8C5D, 0x8C7E, 0x2EC4, 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, - 0x8C8C, 0x8C8C, 0x2EF1, 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, - 0x8C8F, 0x8C8F, 0x2121, 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, - 0x8C92, 0x8C92, 0x1FE5, 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, - 0x8C9A, 0x8C9A, 0x1E37, 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, - 0x8CA3, 0x8CA3, 0x22A6, 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, - 0x8CA6, 0x8CA6, 0x1EDA, 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, - 0x8CC0, 0x8CC0, 0x235C, 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, - 0x8CD3, 0x8CD3, 0x1E67, 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, - 0x8CD6, 0x8CD8, 0x2F2B, 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, - 0x8CF9, 0x8CF9, 0x1F16, 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, - 0x8D73, 0x8D73, 0x2389, 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, - 0x8D76, 0x8D7A, 0x2F86, 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, - 0x8D80, 0x8D87, 0x2F8E, 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, - 0x8D8F, 0x8D8F, 0x1F1A, 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, - 0x8D9F, 0x8DB8, 0x2FAA, 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, - 0x8DE2, 0x8DE2, 0x2391, 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, - 0x8DE5, 0x8DE6, 0x2FED, 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, - 0x8DF7, 0x8DF7, 0x238E, 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, - 0x8E40, 0x8E45, 0x3004, 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, - 0x8E56, 0x8E56, 0x2390, 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, - 0x8E59, 0x8E59, 0x301A, 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, - 0x8E68, 0x8E68, 0x1FE9, 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, - 0x8E6F, 0x8E6F, 0x302D, 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, - 0x8E80, 0x8E80, 0x2324, 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, - 0x8E9C, 0x8E9E, 0x3056, 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, - 0x8EA4, 0x8EA4, 0x2277, 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, - 0x8EA8, 0x8EAB, 0x305F, 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, - 0x8EAE, 0x8EAE, 0x2384, 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, - 0x8EBE, 0x8EBE, 0x2386, 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, - 0x8EC4, 0x8EC4, 0x3076, 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, - 0x8ECD, 0x8ECD, 0x1E32, 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, - 0x8ED6, 0x8ED6, 0x1F13, 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, - 0x8EEC, 0x8EEC, 0x1FE0, 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, - 0x8F52, 0x8F52, 0x2087, 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, - 0x8F55, 0x8F55, 0x1EF6, 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, - 0x8F5D, 0x8F5D, 0x2045, 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, - 0x8F65, 0x8F7E, 0x30C9, 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, - 0x8F87, 0x8F87, 0x30E9, 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, - 0x8F95, 0x8F95, 0x266E, 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, - 0x8F98, 0x8F9A, 0x30F7, 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, - 0x8F9D, 0x8F9D, 0x2188, 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, - 0x8FA2, 0x8FBC, 0x30FE, 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, - 0x8FC4, 0x8FC4, 0x1EA1, 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, - 0x8FC7, 0x8FCC, 0x3120, 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, - 0x8FD8, 0x8FD8, 0x1E7C, 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, - 0x9080, 0x909C, 0x3195, 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, - 0x909F, 0x90B9, 0x31B2, 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, - 0x90C0, 0x90C0, 0x2095, 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, - 0x90C5, 0x90C5, 0x23B9, 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, - 0x90DC, 0x90DC, 0x23BD, 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, - 0x90EE, 0x90EF, 0x31FA, 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, - 0x90F7, 0x90F7, 0x23B3, 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, - 0x9142, 0x9142, 0x2162, 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, - 0x914C, 0x914C, 0x3213, 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, - 0x9151, 0x9151, 0x23B7, 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, - 0x9155, 0x9155, 0x24DF, 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, - 0x915A, 0x915A, 0x214E, 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, - 0x915E, 0x9160, 0x321E, 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, - 0x9163, 0x9163, 0x20EB, 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, - 0x916F, 0x9175, 0x322C, 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, - 0x917A, 0x917A, 0x201B, 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, - 0x917D, 0x917E, 0x3236, 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, - 0x9185, 0x918C, 0x323C, 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, - 0x9191, 0x9191, 0x2089, 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, - 0x9194, 0x9196, 0x3248, 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, - 0x919B, 0x919B, 0x2214, 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, - 0x91AA, 0x91AA, 0x2223, 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, - 0x91BA, 0x91BA, 0x268C, 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, - 0x91BF, 0x91BF, 0x24E0, 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, - 0x91C4, 0x91CC, 0x326F, 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, - 0x91D0, 0x91D0, 0x1FFE, 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, - 0x91D3, 0x91D3, 0x327A, 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, - 0x91D6, 0x91D6, 0x1FCE, 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, - 0x91D9, 0x91D9, 0x2021, 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, - 0x91E0, 0x91E1, 0x3282, 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, - 0x91EA, 0x91EA, 0x24A4, 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, - 0x91F1, 0x91F1, 0x3290, 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, - 0x9240, 0x927E, 0x329D, 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, - 0x92B7, 0x92CD, 0x3312, 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, - 0x92D0, 0x92D0, 0x235D, 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, - 0x92D5, 0x92DE, 0x332D, 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, - 0x92E1, 0x92FD, 0x3337, 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, - 0x9350, 0x9350, 0x21FF, 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, - 0x935E, 0x936F, 0x3370, 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, - 0x9376, 0x9376, 0x1EB6, 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, - 0x938C, 0x938C, 0x20DB, 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, - 0x939E, 0x93A4, 0x33AB, 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, - 0x93A7, 0x93A7, 0x2040, 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, - 0x93B5, 0x93B7, 0x33BF, 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, - 0x93BB, 0x93BB, 0x235E, 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, - 0x93BE, 0x93C5, 0x33C5, 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, - 0x93CF, 0x93CF, 0x2093, 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, - 0x93D8, 0x93DA, 0x33DC, 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, - 0x93DD, 0x93E0, 0x33DF, 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, - 0x93E4, 0x93E4, 0x20C0, 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, - 0x93E9, 0x93E9, 0x2160, 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, - 0x93EC, 0x93EC, 0x1F8E, 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, - 0x93EF, 0x93EF, 0x2047, 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, - 0x93F2, 0x93F3, 0x33EB, 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, - 0x93F6, 0x93F9, 0x33ED, 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, - 0x93FE, 0x93FE, 0x1FCC, 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, - 0x9445, 0x944C, 0x33F8, 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, - 0x9450, 0x9450, 0x1E52, 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, - 0x9453, 0x9453, 0x228F, 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, - 0x9456, 0x9457, 0x3403, 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, - 0x945B, 0x945B, 0x1E2D, 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, - 0x945E, 0x945E, 0x3407, 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, - 0x9464, 0x9464, 0x2363, 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, - 0x9467, 0x946D, 0x340D, 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, - 0x9472, 0x9472, 0x1FF6, 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, - 0x9475, 0x9475, 0x3418, 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, - 0x9478, 0x9478, 0x2367, 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, - 0x947B, 0x947E, 0x341B, 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, - 0x9482, 0x9482, 0x2163, 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, - 0x9488, 0x9488, 0x1FFC, 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, - 0x94A2, 0x94B2, 0x343B, 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, - 0x94B5, 0x94B5, 0x2142, 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, - 0x94C0, 0x94C0, 0x1E43, 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, - 0x94CD, 0x94D7, 0x3461, 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, - 0x94E0, 0x94E0, 0x1ED7, 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, - 0x9572, 0x9572, 0x212D, 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, - 0x9583, 0x9583, 0x229B, 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, - 0x959F, 0x959F, 0x24A8, 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, - 0x95B4, 0x95B9, 0x34FF, 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, - 0x95CF, 0x95CF, 0x24A7, 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, - 0x95D2, 0x95D2, 0x24A6, 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, - 0x95D5, 0x95E0, 0x351B, 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, - 0x95E7, 0x95E7, 0x1FE7, 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, - 0x95F2, 0x95F7, 0x3535, 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, - 0x95FE, 0x95FE, 0x1F5C, 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, - 0x9657, 0x967B, 0x3556, 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, - 0x9680, 0x96FE, 0x357D, 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, - 0x9768, 0x976B, 0x3623, 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, - 0x976E, 0x976E, 0x246D, 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, - 0x9796, 0x9796, 0x246B, 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, - 0x979D, 0x979D, 0x1ECE, 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, - 0x97A4, 0x97BE, 0x3658, 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, - 0x97EE, 0x97EE, 0x21FE, 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, - 0x97F8, 0x97FE, 0x36A9, 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, - 0x9846, 0x9848, 0x36B5, 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, - 0x984F, 0x984F, 0x1F6F, 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, - 0x9872, 0x9872, 0x36DE, 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, - 0x9880, 0x9880, 0x36EA, 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, - 0x988B, 0x988B, 0x1F27, 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, - 0x98A0, 0x98A0, 0x247C, 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, - 0x98AB, 0x98B5, 0x3710, 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, - 0x98B8, 0x98B9, 0x371B, 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, - 0x98C7, 0x98C7, 0x203E, 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, - 0x98CC, 0x98CF, 0x372C, 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, - 0x98D3, 0x98D3, 0x2204, 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, - 0x98E4, 0x98E4, 0x2140, 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, - 0x98EF, 0x98EF, 0x2474, 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, - 0x98F3, 0x98FE, 0x374C, 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, - 0x9944, 0x9944, 0x375B, 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, - 0x9966, 0x9966, 0x2472, 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, - 0x996F, 0x9974, 0x3783, 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, - 0x997A, 0x997A, 0x1F8B, 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, - 0x9980, 0x9984, 0x3790, 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, - 0x9989, 0x9989, 0x2482, 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, - 0x998F, 0x9990, 0x379C, 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, - 0x9999, 0x9999, 0x1F38, 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, - 0x99AA, 0x99AF, 0x37B4, 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, - 0x99B2, 0x99B2, 0x37BA, 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, - 0x99B5, 0x99B5, 0x2471, 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, - 0x99BE, 0x99BE, 0x2470, 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, - 0x99C1, 0x99C1, 0x37C3, 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, - 0x99C9, 0x99C9, 0x246F, 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, - 0x99CF, 0x99D0, 0x37CE, 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, - 0x99DA, 0x99DA, 0x1FF5, 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, - 0x99E1, 0x99E4, 0x37DD, 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, - 0x99E8, 0x99E8, 0x2479, 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, - 0x99ED, 0x99F3, 0x37E6, 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, - 0x9A40, 0x9A49, 0x37F7, 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, - 0x9A57, 0x9A57, 0x20AD, 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, - 0x9A66, 0x9A66, 0x381A, 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, - 0x9A71, 0x9A71, 0x2159, 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, - 0x9A77, 0x9A77, 0x1F33, 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, - 0x9A88, 0x9A88, 0x1E5C, 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, - 0x9A8D, 0x9A90, 0x383A, 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, - 0x9A97, 0x9A97, 0x248A, 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, - 0x9A9B, 0x9A9B, 0x248B, 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, - 0x9A9F, 0x9AA1, 0x3847, 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, - 0x9AA4, 0x9AA9, 0x384A, 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, - 0x9AD0, 0x9AD0, 0x24C0, 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, - 0x9AD7, 0x9AD9, 0x387A, 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, - 0x9AE2, 0x9AE2, 0x20CA, 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, - 0x9AE5, 0x9AE5, 0x24C2, 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, - 0x9B80, 0x9BD0, 0x38DD, 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, - 0x9BDC, 0x9BDC, 0x23DB, 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, - 0x9C53, 0x9C53, 0x205E, 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, - 0x9C5A, 0x9C5A, 0x23E2, 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, - 0x9C5D, 0x9C74, 0x3973, 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, - 0x9C79, 0x9C79, 0x1E66, 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, - 0x9C86, 0x9C86, 0x1F63, 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, - 0x9C9E, 0x9CAA, 0x39AF, 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, - 0x9CCA, 0x9CCA, 0x22B5, 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, - 0x9CD0, 0x9CE5, 0x39DE, 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, - 0x9CE8, 0x9CEB, 0x39F4, 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, - 0x9CEE, 0x9CEE, 0x2341, 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, - 0x9CFC, 0x9CFD, 0x3A05, 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, - 0x9D42, 0x9D42, 0x2124, 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, - 0x9D47, 0x9D47, 0x23E0, 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, - 0x9D4E, 0x9D4E, 0x3A11, 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, - 0x9D61, 0x9D61, 0x20B1, 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, - 0x9D69, 0x9D69, 0x201C, 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, - 0x9D6F, 0x9D70, 0x3A2D, 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, - 0x9D75, 0x9D75, 0x1F9B, 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, - 0x9D7C, 0x9D7C, 0x3A37, 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, - 0x9D80, 0x9D89, 0x3A39, 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, - 0x9D8D, 0x9D8D, 0x1FB4, 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, - 0x9D92, 0x9D98, 0x3A48, 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, - 0x9DA1, 0x9DA1, 0x23E1, 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, - 0x9DA7, 0x9DA7, 0x23EA, 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, - 0x9DAD, 0x9DAD, 0x210E, 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, - 0x9DB3, 0x9DB3, 0x2004, 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, - 0x9DBF, 0x9DC5, 0x3A6C, 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, - 0x9DC9, 0x9DC9, 0x2264, 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, - 0x9DCE, 0x9DD1, 0x3A78, 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, - 0x9DD5, 0x9DD5, 0x1EC4, 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, - 0x9DE2, 0x9DE2, 0x20A9, 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, - 0x9DF2, 0x9DF3, 0x3A97, 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, - 0x9DF7, 0x9DF7, 0x268B, 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, - 0x9DFB, 0x9DFC, 0x3A9D, 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, - 0x9E40, 0x9E44, 0x3AA0, 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, - 0x9E48, 0x9E48, 0x2191, 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, - 0x9E52, 0x9E52, 0x1F9C, 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, - 0x9E55, 0x9E55, 0x3AB0, 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, - 0x9E5D, 0x9E5D, 0x23E9, 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, - 0x9E61, 0x9E61, 0x21D5, 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, - 0x9E64, 0x9E66, 0x3ABA, 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, - 0x9E6C, 0x9E6C, 0x1E4F, 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, - 0x9E70, 0x9E71, 0x3AC3, 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, - 0x9E74, 0x9E74, 0x23EC, 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, - 0x9E7B, 0x9E7B, 0x23D8, 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, - 0x9E80, 0x9E84, 0x3ACD, 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, - 0x9E87, 0x9E87, 0x23ED, 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, - 0x9E92, 0x9E95, 0x3ADC, 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, - 0x9E98, 0x9EA1, 0x3AE0, 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, - 0x9EA6, 0x9EA6, 0x200B, 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, - 0x9EAA, 0x9EAD, 0x3AEF, 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, - 0x9EB3, 0x9EB3, 0x2189, 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, - 0x9EB7, 0x9EB7, 0x23E7, 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, - 0x9EF6, 0x9EFE, 0x3B36, 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, - 0x9F4F, 0x9F6E, 0x3B4D, 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, - 0x9F80, 0x9F91, 0x3B7C, 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, - 0x9F98, 0x9F98, 0x24D6, 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, - 0x9FA7, 0x9FA8, 0x3BA0, 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, - 0x9FAC, 0x9FAC, 0x24D5, 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, - 0x9FCA, 0x9FCC, 0x3BC0, 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, - 0x9FE1, 0x9FE1, 0x20FC, 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, - 0x9FEC, 0x9FED, 0x3BDF, 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, - 0x9FF4, 0x9FF4, 0x1EBA, 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, - 0x9FFE, 0x9FFE, 0x3BEE, 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, - 0xA044, 0xA045, 0x3BF2, 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, - 0xA049, 0xA049, 0x2227, 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, - 0xA04F, 0xA053, 0x3BFA, 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, - 0xA05A, 0xA05A, 0x1F5D, 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, - 0xA062, 0xA062, 0x3C0A, 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, - 0xA071, 0xA071, 0x2149, 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, - 0xA075, 0xA07E, 0x3C1A, 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, - 0xA091, 0xA091, 0x2190, 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, - 0xA095, 0xA095, 0x3C36, 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, - 0xA0A9, 0xA0A9, 0x24C3, 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, - 0xA0C0, 0xA0CD, 0x3C5E, 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, - 0xA0D9, 0xA0D9, 0x1ED1, 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, - 0xA0DF, 0xA0ED, 0x3C7A, 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, - 0xA1A1, 0xA1FE, 0x0060, 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, - 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, - 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, - 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, - 0xA840, 0xA87E, 0x26B3, 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C, - 0xA8C5, 0xA8EA, 0x02BC, 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720, - 0xA95C, 0xA95C, 0x2722, 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742, - 0xA996, 0xA996, 0x1E17, 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99, - 0xAA4D, 0xAA4D, 0x21B6, 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6, - 0xAA71, 0xAA71, 0x2235, 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397, - 0xAA74, 0xAA76, 0x3CC9, 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC, - 0xAA7A, 0xAA7A, 0x223F, 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE, - 0xAA80, 0xAA99, 0x3CD1, 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB, - 0xAA9C, 0xAA9C, 0x2396, 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC, - 0xAA9F, 0xAA9F, 0x20A2, 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E, - 0xAB40, 0xAB40, 0x1F64, 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B, - 0xAB44, 0xAB44, 0x3CF0, 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139, - 0xAB47, 0xAB47, 0x3CF1, 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1, - 0xAB4A, 0xAB4A, 0x239A, 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399, - 0xAB4E, 0xAB7E, 0x3CF4, 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C, - 0xAC40, 0xAC45, 0x3D46, 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C, - 0xAC71, 0xAC71, 0x2460, 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C, - 0xAC7D, 0xAC7E, 0x3D80, 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D, - 0xAC8E, 0xAC92, 0x3D8F, 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A, - 0xAC95, 0xACA0, 0x3D94, 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461, - 0xAD4A, 0xAD5D, 0x3DA9, 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD, - 0xAD61, 0xAD61, 0x2462, 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54, - 0xAD69, 0xAD73, 0x3DC5, 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0, - 0xAD80, 0xAD81, 0x3DDA, 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC, - 0xAD87, 0xAD87, 0x245D, 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463, - 0xAD8C, 0xAD90, 0x3DE3, 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8, - 0xAE40, 0xAE53, 0x3DF7, 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B, - 0xAE62, 0xAE62, 0x1E70, 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F, - 0xAE81, 0xAE84, 0x3E34, 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38, - 0xAE8B, 0xAE8B, 0x1F4E, 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1, - 0xAE95, 0xAE9F, 0x3E45, 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50, - 0xAF64, 0xAF64, 0x1FC6, 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE, - 0xAF7C, 0xAF7E, 0x3E8A, 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01, - 0xAF83, 0xAF83, 0x2200, 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2, - 0xAF8F, 0xAF8F, 0x1E97, 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB, - 0xAF92, 0xAF9B, 0x3E9A, 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4, - 0xAF9F, 0xAF9F, 0x2028, 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7, - 0xB041, 0xB042, 0x25AF, 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1, - 0xB045, 0xB04E, 0x3EA9, 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3, - 0xB054, 0xB054, 0x1E4E, 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202, - 0xB058, 0xB058, 0x25AB, 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9, - 0xB05B, 0xB05B, 0x25AD, 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6, - 0xB05E, 0xB05E, 0x3EBB, 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4, - 0xB062, 0xB062, 0x222F, 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7, - 0xB065, 0xB06B, 0x3EBC, 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3, - 0xB07D, 0xB07D, 0x1E25, 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4, - 0xB097, 0xB097, 0x25C0, 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A, - 0xB09A, 0xB0A0, 0x3EEC, 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3, - 0xB14B, 0xB14B, 0x226E, 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD, - 0xB14E, 0xB14E, 0x3EFF, 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2, - 0xB151, 0xB151, 0x3F00, 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01, - 0xB180, 0xB196, 0x3F2D, 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44, - 0xB1A1, 0xB1FE, 0x040A, 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF, - 0xB242, 0xB266, 0x3F4E, 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73, - 0xB26D, 0xB26D, 0x2074, 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687, - 0xB275, 0xB27E, 0x3F7E, 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88, - 0xB289, 0xB289, 0x268D, 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0, - 0xB29B, 0xB2A0, 0x3FA0, 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6, - 0xB343, 0xB343, 0x1FAB, 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8, - 0xB371, 0xB37E, 0x3FD5, 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9, - 0xB389, 0xB38B, 0x3FEB, 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE, - 0xB38E, 0xB38E, 0x21FA, 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6, - 0xB440, 0xB453, 0x4001, 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015, - 0xB458, 0xB458, 0x24E4, 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6, - 0xB45F, 0xB45F, 0x20F7, 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B, - 0xB462, 0xB474, 0x401E, 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031, - 0xB47E, 0xB47E, 0x24EC, 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB, - 0xB484, 0xB488, 0x403C, 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041, - 0xB493, 0xB493, 0x24EA, 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524, - 0xB540, 0xB540, 0x4057, 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058, - 0xB54B, 0xB54B, 0x1E27, 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6, - 0xB557, 0xB559, 0x406B, 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012, - 0xB55C, 0xB55C, 0x1EEC, 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8, - 0xB562, 0xB57E, 0x4072, 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66, - 0xB59D, 0xB59D, 0x24DC, 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582, - 0xB640, 0xB651, 0x40AE, 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0, - 0xB655, 0xB655, 0x24DD, 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E, - 0xB65A, 0xB65A, 0x40C5, 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8, - 0xB65D, 0xB67E, 0x40C6, 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0, - 0xB740, 0xB74D, 0x4109, 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117, - 0xB751, 0xB751, 0x1E80, 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677, - 0xB75A, 0xB763, 0x4120, 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69, - 0xB766, 0xB766, 0x222B, 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F, - 0xB778, 0xB778, 0x1F5B, 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B, - 0xB781, 0xB781, 0x4140, 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141, - 0xB7A1, 0xB7FE, 0x063E, 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0, - 0xB844, 0xB844, 0x2186, 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED, - 0xB847, 0xB84C, 0x4163, 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169, - 0xB851, 0xB851, 0x1FEA, 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4, - 0xB85B, 0xB85B, 0x20E1, 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8, - 0xB85E, 0xB85E, 0x2260, 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2, - 0xB861, 0xB876, 0x4176, 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C, - 0xB880, 0xB881, 0x4193, 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195, - 0xB8A1, 0xB8FE, 0x069C, 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41, - 0xB951, 0xB960, 0x41C3, 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3, - 0xB97B, 0xB97B, 0x1F86, 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF, - 0xB99D, 0xB99D, 0x1FB3, 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF, - 0xB9A1, 0xB9FE, 0x06FA, 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4, - 0xBA43, 0xBA43, 0x4210, 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211, - 0xBA56, 0xBA56, 0x25E3, 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111, - 0xBA5A, 0xBA5F, 0x4224, 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A, - 0xBA6A, 0xBA6A, 0x25E7, 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041, - 0xBA75, 0xBA7E, 0x423C, 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA, - 0xBA85, 0xBA85, 0x424A, 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B, - 0xBA88, 0xBA88, 0x25EC, 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB, - 0xBA8E, 0xBA9D, 0x4250, 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D, - 0xBAA0, 0xBAA0, 0x4260, 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7, - 0xBB41, 0xBB48, 0x4261, 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269, - 0xBB58, 0xBB58, 0x25E9, 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE, - 0xBB5C, 0xBB5C, 0x203A, 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693, - 0xBB61, 0xBB64, 0x427C, 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED, - 0xBB67, 0xBB67, 0x4280, 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281, - 0xBB6A, 0xBB6A, 0x2065, 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3, - 0xBB6F, 0xBB7E, 0x4285, 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6, - 0xBC40, 0xBC51, 0x42B6, 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC, - 0xBC54, 0xBC59, 0x42C8, 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE, - 0xBC61, 0xBC61, 0x269B, 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3, - 0xBC64, 0xBC64, 0x42D5, 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6, - 0xBC67, 0xBC67, 0x25F4, 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B, - 0xBC6A, 0xBC6C, 0x42D8, 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB, - 0xBC6F, 0xBC6F, 0x1F7B, 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D, - 0xBC72, 0xBC72, 0x42DD, 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48, - 0xBC75, 0xBC75, 0x241C, 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF, - 0xBC79, 0xBC79, 0x219A, 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091, - 0xBC7C, 0xBC7D, 0x42DF, 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1, - 0xBC82, 0xBC82, 0x2423, 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422, - 0xBC85, 0xBC85, 0x42E3, 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4, - 0xBC88, 0xBC88, 0x228D, 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8, - 0xBC8B, 0xBC8B, 0x2421, 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3, - 0xBC90, 0xBC99, 0x42E8, 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426, - 0xBC9C, 0xBC9C, 0x2425, 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2, - 0xBCA1, 0xBCFE, 0x0814, 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A, - 0xBD43, 0xBD43, 0x2424, 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428, - 0xBD46, 0xBD47, 0x42F8, 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429, - 0xBD4A, 0xBD4A, 0x42FA, 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB, - 0xBD4D, 0xBD4D, 0x22BE, 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31, - 0xBD50, 0xBD56, 0x42FD, 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304, - 0xBD59, 0xBD59, 0x1FB5, 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B, - 0xBD67, 0xBD67, 0x1FAF, 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068, - 0xBD6B, 0xBD6B, 0x21E4, 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21, - 0xBD70, 0xBD70, 0x4316, 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317, - 0xBD79, 0xBD79, 0x217C, 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D, - 0xBD7C, 0xBD7D, 0x431E, 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320, - 0xBD81, 0xBD81, 0x1FD1, 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33, - 0xBD8A, 0xBD8A, 0x4328, 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329, - 0xBD8E, 0xBD8E, 0x242E, 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430, - 0xBD91, 0xBD91, 0x21DB, 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158, - 0xBD98, 0xBD9A, 0x4331, 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334, - 0xBDA1, 0xBDFE, 0x0872, 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9, - 0xBE44, 0xBE44, 0x433C, 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D, - 0xBE49, 0xBE49, 0x1E8E, 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340, - 0xBE51, 0xBE51, 0x21C5, 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192, - 0xBE54, 0xBE54, 0x4346, 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19, - 0xBE57, 0xBE57, 0x218C, 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3, - 0xBE5A, 0xBE5C, 0x4347, 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438, - 0xBE5F, 0xBE5F, 0x2432, 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A, - 0xBE62, 0xBE62, 0x1E9C, 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085, - 0xBE65, 0xBE68, 0x434B, 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F, - 0xBE6C, 0xBE6C, 0x243B, 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7, - 0xBE70, 0xBE70, 0x2433, 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054, - 0xBE77, 0xBE77, 0x21DE, 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434, - 0xBE7A, 0xBE7B, 0x4359, 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89, - 0xBE7E, 0xBE7E, 0x243C, 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E, - 0xBE84, 0xBE84, 0x1ED8, 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF, - 0xBE87, 0xBE87, 0x2445, 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249, - 0xBE8A, 0xBE8B, 0x4360, 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362, - 0xBE8E, 0xBE8E, 0x1E47, 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363, - 0xBE92, 0xBE92, 0x2086, 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196, - 0xBE96, 0xBE96, 0x4367, 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F, - 0xBE99, 0xBE99, 0x4368, 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369, - 0xBE9C, 0xBE9C, 0x2442, 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E, - 0xBEA0, 0xBEA0, 0x436C, 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6, - 0xBF41, 0xBF4C, 0x436D, 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446, - 0xBF4F, 0xBF4F, 0x244B, 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379, - 0xBF55, 0xBF55, 0x2427, 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D, - 0xBF60, 0xBF60, 0x1F0F, 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447, - 0xBF63, 0xBF63, 0x2449, 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387, - 0xBF68, 0xBF68, 0x21C2, 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E, - 0xBF6D, 0xBF6F, 0x438D, 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390, - 0xBF72, 0xBF72, 0x244A, 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391, - 0xBF76, 0xBF76, 0x22BB, 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393, - 0xBF79, 0xBF79, 0x2694, 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6, - 0xBF7C, 0xBF7C, 0x2051, 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E, - 0xBF80, 0xBF81, 0x4395, 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D, - 0xBF84, 0xBF88, 0x4397, 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451, - 0xBF8B, 0xBF94, 0x439C, 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6, - 0xBF97, 0xBF97, 0x2289, 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7, - 0xBF9D, 0xBF9D, 0x2454, 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E, - 0xC040, 0xC040, 0x20FB, 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440, - 0xC045, 0xC04A, 0x43B1, 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61, - 0xC04D, 0xC04D, 0x269D, 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A, - 0xC050, 0xC050, 0x2456, 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458, - 0xC053, 0xC054, 0x43B8, 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA, - 0xC05B, 0xC05B, 0x221A, 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A, - 0xC05F, 0xC05F, 0x244D, 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1, - 0xC069, 0xC069, 0x2453, 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420, - 0xC06C, 0xC06C, 0x43CA, 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685, - 0xC06F, 0xC06F, 0x43CB, 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC, - 0xC074, 0xC074, 0x2224, 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF, - 0xC077, 0xC077, 0x21BA, 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A, - 0xC07A, 0xC07B, 0x43D1, 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3, - 0xC080, 0xC09A, 0x43D5, 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0, - 0xC09D, 0xC09D, 0x269A, 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C, - 0xC140, 0xC14F, 0x43F4, 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404, - 0xC154, 0xC154, 0x1E2C, 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062, - 0xC160, 0xC160, 0x24F1, 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2, - 0xC163, 0xC174, 0x4412, 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424, - 0xC178, 0xC178, 0x2215, 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C, - 0xC195, 0xC195, 0x21AE, 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA, - 0xC240, 0xC24D, 0x444C, 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A, - 0xC265, 0xC265, 0x25C2, 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1, - 0xC268, 0xC27C, 0x4471, 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486, - 0xC280, 0xC283, 0x4487, 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B, - 0xC293, 0xC293, 0x2017, 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125, - 0xC296, 0xC296, 0x214D, 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4, - 0xC299, 0xC299, 0x209D, 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A, - 0xC29C, 0xC29C, 0x25C3, 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179, - 0xC2A1, 0xC2FE, 0x0A48, 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E, - 0xC343, 0xC343, 0x2155, 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2, - 0xC37C, 0xC37E, 0x44D7, 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7, - 0xC385, 0xC39A, 0x44DE, 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4, - 0xC3A1, 0xC3FE, 0x0AA6, 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123, - 0xC44A, 0xC44B, 0x4502, 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504, - 0xC454, 0xC454, 0x24C9, 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094, - 0xC459, 0xC45A, 0x450E, 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510, - 0xC463, 0xC463, 0x1E77, 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06, - 0xC478, 0xC479, 0x452A, 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C, - 0xC480, 0xC480, 0x4530, 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531, - 0xC491, 0xC491, 0x1EAD, 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8, - 0xC494, 0xC497, 0x4540, 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544, - 0xC49A, 0xC49A, 0x20C5, 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA, - 0xC49D, 0xC4A0, 0x4546, 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A, - 0xC544, 0xC544, 0x1FF0, 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6, - 0xC547, 0xC54A, 0x454F, 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE, - 0xC54D, 0xC551, 0x4553, 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558, - 0xC55F, 0xC55F, 0x2161, 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B, - 0xC564, 0xC564, 0x21D9, 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9, - 0xC567, 0xC57E, 0x4567, 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61, - 0xC594, 0xC59B, 0x4592, 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A, - 0xC59E, 0xC59E, 0x1F98, 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62, - 0xC640, 0xC640, 0x459D, 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E, - 0xC644, 0xC644, 0x1F88, 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8, - 0xC648, 0xC662, 0x45A2, 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD, - 0xC672, 0xC672, 0x2336, 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7, - 0xC6A1, 0xC6FE, 0x0BC0, 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB, - 0xC767, 0xC76E, 0x461E, 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626, - 0xC776, 0xC776, 0x1F7D, 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333, - 0xC77C, 0xC77E, 0x4630, 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E, - 0xC840, 0xC840, 0x4654, 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655, - 0xC84F, 0xC84F, 0x2334, 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1, - 0xC853, 0xC865, 0x4664, 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677, - 0xC86E, 0xC86E, 0x2349, 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B, - 0xC880, 0xC886, 0x468D, 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694, - 0xC892, 0xC892, 0x2347, 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193, - 0xC895, 0xC898, 0x469F, 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3, - 0xC89D, 0xC89D, 0x1F62, 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C, - 0xC940, 0xC94E, 0x46A9, 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348, - 0xC951, 0xC96D, 0x46B8, 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5, - 0xC970, 0xC970, 0x2345, 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12, - 0xC978, 0xC97E, 0x46DC, 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018, - 0xC990, 0xC990, 0x2335, 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C, - 0xC99D, 0xC9A0, 0x46FD, 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701, - 0xCA4E, 0xCA4E, 0x266F, 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351, - 0xCA57, 0xCA58, 0x4716, 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718, - 0xCA5C, 0xCA5C, 0x2338, 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B, - 0xCA62, 0xCA6D, 0x471E, 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A, - 0xCA72, 0xCA72, 0x234F, 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D, - 0xCA78, 0xCA7A, 0x4731, 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331, - 0xCA7D, 0xCA7D, 0x4734, 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735, - 0xCA81, 0xCA81, 0x233B, 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350, - 0xCA8A, 0xCA8D, 0x473D, 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6, - 0xCA90, 0xCA91, 0x4741, 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743, - 0xCA9A, 0xCA9A, 0x2355, 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38, - 0xCB40, 0xCB42, 0x4750, 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753, - 0xCB45, 0xCB45, 0x1F74, 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330, - 0xCB48, 0xCB4A, 0x4755, 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758, - 0xCB4E, 0xCB4E, 0x20DA, 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A, - 0xCB58, 0xCB5C, 0x4762, 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767, - 0xCB5F, 0xCB5F, 0x2107, 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F, - 0xCB6B, 0xCB7A, 0x4772, 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343, - 0xCB7D, 0xCB7E, 0x4782, 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212, - 0xCB88, 0xCB8D, 0x478B, 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791, - 0xCB92, 0xCB92, 0x2359, 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254, - 0xCB9D, 0xCB9D, 0x479D, 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E, - 0xCBA1, 0xCBFE, 0x0D96, 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357, - 0xCC42, 0xCC48, 0x47A0, 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042, - 0xCC4B, 0xCC4B, 0x2153, 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB, - 0xCC50, 0xCC5B, 0x47AA, 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6, - 0xCC60, 0xCC60, 0x2356, 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337, - 0xCC65, 0xCC6C, 0x47BC, 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4, - 0xCC79, 0xCC79, 0x2353, 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061, - 0xCC7E, 0xCC7E, 0x47D2, 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95, - 0xCC8F, 0xCC93, 0x47E1, 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6, - 0xCC96, 0xCC96, 0x1F42, 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8, - 0xCC9E, 0xCCA0, 0x47ED, 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0, - 0xCD80, 0xCD8F, 0x482F, 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F, - 0xCD98, 0xCD98, 0x25D7, 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52, - 0xCE40, 0xCE66, 0x484E, 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875, - 0xCE72, 0xCE72, 0x21B2, 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B, - 0xCE81, 0xCE81, 0x219E, 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC, - 0xCE88, 0xCE9A, 0x4891, 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4, - 0xCE9E, 0xCE9E, 0x2226, 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0, - 0xCF40, 0xCF4D, 0x48A8, 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6, - 0xCF55, 0xCF55, 0x227B, 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE, - 0xCF59, 0xCF5B, 0x48BE, 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1, - 0xCF6C, 0xCF6C, 0x25D5, 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B, - 0xCF74, 0xCF74, 0x48D6, 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7, - 0xCF78, 0xCF78, 0x1E89, 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9, - 0xCF7D, 0xCF7E, 0x48DC, 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211, - 0xCF82, 0xCF88, 0x48DF, 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6, - 0xCF8B, 0xCF92, 0x48E6, 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF, - 0xCF95, 0xCF9D, 0x48EE, 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7, - 0xCFA0, 0xCFA0, 0x25D8, 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8, - 0xD04D, 0xD04D, 0x1F29, 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B, - 0xD052, 0xD054, 0x4908, 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B, - 0xD05C, 0xD05C, 0x2297, 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690, - 0xD061, 0xD066, 0x4914, 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A, - 0xD06C, 0xD06C, 0x2198, 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88, - 0xD06F, 0xD07C, 0x491F, 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D, - 0xD080, 0xD0A0, 0x492E, 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F, - 0xD155, 0xD155, 0x25F1, 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C, - 0xD15A, 0xD160, 0x4967, 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC, - 0xD163, 0xD174, 0x496E, 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980, - 0xD17D, 0xD17D, 0x2676, 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988, - 0xD19D, 0xD19D, 0x1FE1, 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5, - 0xD1A1, 0xD1FE, 0x0FCA, 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7, - 0xD243, 0xD243, 0x22DD, 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD, - 0xD24E, 0xD25B, 0x49B2, 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0, - 0xD263, 0xD263, 0x25BC, 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6, - 0xD268, 0xD268, 0x25BF, 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187, - 0xD26E, 0xD26E, 0x49CD, 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE, - 0xD272, 0xD272, 0x1E7F, 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD, - 0xD276, 0xD27E, 0x49D2, 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96, - 0xD28B, 0xD28D, 0x49E5, 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8, - 0xD292, 0xD292, 0x2084, 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136, - 0xD296, 0xD296, 0x49ED, 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE, - 0xD2A0, 0xD2A0, 0x24BA, 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6, - 0xD344, 0xD344, 0x24BC, 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4, - 0xD349, 0xD349, 0x49FD, 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE, - 0xD34D, 0xD34D, 0x24BD, 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE, - 0xD351, 0xD354, 0x4A02, 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06, - 0xD358, 0xD358, 0x1FD2, 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD, - 0xD35C, 0xD35C, 0x4A0A, 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D, - 0xD35F, 0xD377, 0x4A0B, 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24, - 0xD37A, 0xD37A, 0x260A, 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94, - 0xD37D, 0xD37E, 0x4A26, 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF, - 0xD386, 0xD386, 0x1ECB, 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D, - 0xD38B, 0xD38B, 0x1F77, 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB, - 0xD38E, 0xD38E, 0x4A31, 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32, - 0xD391, 0xD391, 0x216F, 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0, - 0xD394, 0xD395, 0x4A34, 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36, - 0xD398, 0xD398, 0x22E2, 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37, - 0xD39B, 0xD39B, 0x1F78, 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2, - 0xD39F, 0xD39F, 0x4A3A, 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086, - 0xD440, 0xD440, 0x4A3B, 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C, - 0xD445, 0xD445, 0x1FD3, 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5, - 0xD448, 0xD44B, 0x4A40, 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44, - 0xD44F, 0xD44F, 0x211F, 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD, - 0xD454, 0xD455, 0x4A49, 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B, - 0xD458, 0xD458, 0x22E7, 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282, - 0xD45D, 0xD461, 0x4A4F, 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54, - 0xD467, 0xD467, 0x22E8, 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4, - 0xD46F, 0xD46F, 0x4A5E, 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F, - 0xD472, 0xD472, 0x22EB, 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9, - 0xD475, 0xD475, 0x20BD, 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA, - 0xD479, 0xD47A, 0x4A63, 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65, - 0xD47E, 0xD47E, 0x1E9E, 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6, - 0xD483, 0xD483, 0x21E7, 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69, - 0xD487, 0xD487, 0x2137, 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C, - 0xD48B, 0xD48B, 0x4A6D, 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2, - 0xD48E, 0xD48E, 0x1F37, 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E, - 0xD491, 0xD491, 0x22EF, 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10, - 0xD494, 0xD494, 0x21C8, 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1, - 0xD497, 0xD49B, 0x4A70, 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75, - 0xD49F, 0xD49F, 0x22EE, 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4, - 0xD540, 0xD542, 0x4A78, 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E, - 0xD545, 0xD545, 0x22EC, 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B, - 0xD54A, 0xD54A, 0x20FE, 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9, - 0xD550, 0xD550, 0x4A81, 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82, - 0xD554, 0xD554, 0x2236, 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7, - 0xD557, 0xD559, 0x4A85, 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88, - 0xD55C, 0xD55C, 0x1E82, 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89, - 0xD55F, 0xD55F, 0x21A4, 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8, - 0xD562, 0xD562, 0x2151, 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60, - 0xD565, 0xD567, 0x4A8B, 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E, - 0xD56C, 0xD56C, 0x2145, 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC, - 0xD56F, 0xD571, 0x4A92, 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95, - 0xD575, 0xD575, 0x1EF5, 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218, - 0xD579, 0xD57A, 0x4A99, 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B, - 0xD57E, 0xD57E, 0x2300, 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4, - 0xD582, 0xD583, 0x4A9E, 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0, - 0xD586, 0xD586, 0x22FD, 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA, - 0xD589, 0xD589, 0x4AA2, 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3, - 0xD58C, 0xD58C, 0x22FB, 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC, - 0xD58F, 0xD58F, 0x2027, 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060, - 0xD594, 0xD594, 0x22FF, 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE, - 0xD599, 0xD599, 0x1EC7, 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C, - 0xD59C, 0xD59E, 0x4AAC, 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF, - 0xD5A1, 0xD5FE, 0x1142, 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0, - 0xD642, 0xD642, 0x230A, 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1, - 0xD647, 0xD647, 0x2303, 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307, - 0xD64A, 0xD64A, 0x230B, 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F, - 0xD64E, 0xD64E, 0x4AB7, 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8, - 0xD652, 0xD652, 0x2302, 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D, - 0xD655, 0xD655, 0x4ABA, 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB, - 0xD658, 0xD658, 0x2308, 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC, - 0xD65B, 0xD65B, 0x4ABD, 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305, - 0xD65E, 0xD65E, 0x2197, 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171, - 0xD661, 0xD661, 0x2298, 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57, - 0xD666, 0xD668, 0x4AC2, 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5, - 0xD66B, 0xD66B, 0x2311, 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304, - 0xD670, 0xD670, 0x4AC9, 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35, - 0xD673, 0xD673, 0x4ACA, 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310, - 0xD676, 0xD676, 0x1FA3, 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6, - 0xD679, 0xD67B, 0x4ACC, 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF, - 0xD680, 0xD682, 0x4AD1, 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4, - 0xD686, 0xD686, 0x2312, 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313, - 0xD689, 0xD68D, 0x4AD6, 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB, - 0xD694, 0xD694, 0x1FBA, 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078, - 0xD69A, 0xD6A0, 0x4AE4, 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB, - 0xD743, 0xD743, 0x2288, 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316, - 0xD749, 0xD749, 0x1F6B, 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314, - 0xD751, 0xD751, 0x4AF8, 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315, - 0xD754, 0xD754, 0x2168, 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4, - 0xD757, 0xD763, 0x4AFA, 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07, - 0xD767, 0xD767, 0x2219, 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09, - 0xD76C, 0xD76C, 0x20D5, 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A, - 0xD770, 0xD774, 0x4B0E, 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13, - 0xD778, 0xD778, 0x1ED3, 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B, - 0xD783, 0xD783, 0x1E49, 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B, - 0xD788, 0xD78A, 0x4B21, 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8, - 0xD78D, 0xD78D, 0x4B24, 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319, - 0xD790, 0xD794, 0x4B25, 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A, - 0xD797, 0xD797, 0x2317, 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE, - 0xD840, 0xD84C, 0x4B34, 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41, - 0xD853, 0xD853, 0x1EFD, 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71, - 0xD890, 0xD890, 0x1E3B, 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81, - 0xD893, 0xD893, 0x1F0C, 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24, - 0xD896, 0xD899, 0x4B82, 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65, - 0xD89C, 0xD89C, 0x1EF0, 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30, - 0xD89F, 0xD89F, 0x2261, 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257, - 0xD940, 0xD940, 0x4B87, 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB, - 0xD943, 0xD943, 0x4B88, 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8, - 0xD946, 0xD946, 0x1F39, 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48, - 0xD949, 0xD949, 0x2070, 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A, - 0xD94C, 0xD94C, 0x24AC, 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176, - 0xD94F, 0xD94F, 0x24AD, 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B, - 0xD952, 0xD952, 0x1F45, 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B, - 0xD955, 0xD955, 0x202F, 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0, - 0xD958, 0xD958, 0x4B8C, 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F, - 0xD95B, 0xD95B, 0x4B8D, 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E, - 0xD963, 0xD963, 0x24B2, 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51, - 0xD966, 0xD966, 0x4B94, 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95, - 0xD96C, 0xD96C, 0x24B3, 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F, - 0xD96F, 0xD96F, 0x4B9A, 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B, - 0xD972, 0xD972, 0x20B4, 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB, - 0xD975, 0xD975, 0x2072, 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C, - 0xD978, 0xD978, 0x1F0A, 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D, - 0xD97C, 0xD97C, 0x2291, 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278, - 0xD980, 0xD980, 0x1ED4, 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3, - 0xD988, 0xD98C, 0x4BA5, 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7, - 0xD98F, 0xD98F, 0x1F28, 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7, - 0xD992, 0xD996, 0x4BAA, 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1, - 0xD999, 0xD99A, 0x4BAF, 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1, - 0xD99D, 0xD99D, 0x225B, 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2, - 0xD9A0, 0xD9A0, 0x2115, 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3, - 0xDA41, 0xDA41, 0x222A, 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4, - 0xDA48, 0xDA48, 0x213D, 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15, - 0xDA4E, 0xDA4E, 0x225C, 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14, - 0xDA74, 0xDA76, 0x4BE1, 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4, - 0xDA80, 0xDA84, 0x4BEB, 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0, - 0xDA8E, 0xDA8E, 0x25F8, 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313, - 0xDB40, 0xDB5F, 0x4C0A, 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A, - 0xDB78, 0xDB78, 0x2230, 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47, - 0xDB84, 0xDB84, 0x25FD, 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600, - 0xDB8C, 0xDB97, 0x4C51, 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D, - 0xDBA1, 0xDBFE, 0x1371, 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF, - 0xDC46, 0xDC4E, 0x4C6A, 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C, - 0xDC51, 0xDC51, 0x2602, 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D, - 0xDC54, 0xDC54, 0x4C74, 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE, - 0xDC57, 0xDC57, 0x2603, 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601, - 0xDC5E, 0xDC61, 0x4C7A, 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E, - 0xDC66, 0xDC66, 0x1EA3, 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81, - 0xDC6B, 0xDC6B, 0x2607, 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0, - 0xDC7D, 0xDC7E, 0x4C94, 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B, - 0xDC88, 0xDC88, 0x2267, 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6, - 0xDC8B, 0xDC8D, 0x4C9D, 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0, - 0xDC90, 0xDC90, 0x248C, 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D, - 0xDC98, 0xDC9A, 0x4CA7, 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA, - 0xDCA0, 0xDCA0, 0x2494, 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE, - 0xDD46, 0xDD46, 0x2493, 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E, - 0xDD4E, 0xDD52, 0x4CBA, 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491, - 0xDD55, 0xDD55, 0x2496, 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492, - 0xDD58, 0xDD58, 0x4CBF, 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0, - 0xDD5E, 0xDD5E, 0x1FB1, 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A, - 0xDD61, 0xDD61, 0x4CC5, 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6, - 0xDD64, 0xDD64, 0x2258, 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7, - 0xDD6D, 0xDD6D, 0x249B, 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09, - 0xDD70, 0xDD70, 0x20E6, 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026, - 0xDD77, 0xDD77, 0x249F, 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D, - 0xDD7B, 0xDD7E, 0x4CD4, 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B, - 0xDD82, 0xDD82, 0x249C, 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A, - 0xDD86, 0xDD86, 0x205B, 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70, - 0xDD8C, 0xDD8E, 0x4CDF, 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2, - 0xDD94, 0xDD94, 0x213B, 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07, - 0xDD98, 0xDD99, 0x4CE8, 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237, - 0xDD9C, 0xDD9D, 0x4CEA, 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC, - 0xDDA0, 0xDDA0, 0x21B3, 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245, - 0xDE41, 0xDE41, 0x24A1, 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8, - 0xDE45, 0xDE47, 0x4CEF, 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0, - 0xDE4A, 0xDE4E, 0x4CF2, 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7, - 0xDE5A, 0xDE5A, 0x1F46, 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380, - 0xDE5D, 0xDE5D, 0x2495, 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490, - 0xDE60, 0xDE6A, 0x4D03, 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E, - 0xDE6F, 0xDE6F, 0x1E9D, 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A, - 0xDE72, 0xDE72, 0x20AA, 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D, - 0xDE92, 0xDE92, 0x267B, 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2, - 0xDEA0, 0xDEA0, 0x4D3B, 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E, - 0xDF41, 0xDF41, 0x4D3C, 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D, - 0xDF4D, 0xDF4D, 0x1FBB, 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253, - 0xDF5D, 0xDF5D, 0x4D55, 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6, - 0xDF60, 0xDF60, 0x218E, 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC, - 0xDF65, 0xDF65, 0x4D59, 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A, - 0xDF68, 0xDF68, 0x224A, 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133, - 0xDF6E, 0xDF73, 0x4D5F, 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65, - 0xDF77, 0xDF77, 0x20CF, 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67, - 0xDF7A, 0xDF7A, 0x220F, 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029, - 0xDF7D, 0xDF7D, 0x4D69, 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55, - 0xDF81, 0xDF82, 0x4D6A, 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C, - 0xDF85, 0xDF85, 0x1E46, 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063, - 0xDF8A, 0xDF8A, 0x23F3, 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9, - 0xE040, 0xE04F, 0x4D86, 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96, - 0xE05D, 0xE05D, 0x2233, 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320, - 0xE06A, 0xE06B, 0x4DAD, 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF, - 0xE075, 0xE075, 0x22BC, 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C, - 0xE078, 0xE078, 0x4DB8, 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9, - 0xE080, 0xE086, 0x4DBE, 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5, - 0xE08D, 0xE08D, 0x2287, 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D, - 0xE090, 0xE090, 0x1EAB, 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D, - 0xE093, 0xE093, 0x4DCC, 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD, - 0xE097, 0xE097, 0x231B, 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547, - 0xE140, 0xE141, 0x4DD8, 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA, - 0xE164, 0xE164, 0x2255, 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F, - 0xE169, 0xE173, 0x4DFE, 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4, - 0xE176, 0xE17E, 0x4E09, 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B, - 0xE185, 0xE185, 0x21D8, 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA, - 0xE188, 0xE188, 0x4E17, 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18, - 0xE18C, 0xE18C, 0x2134, 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3, - 0xE191, 0xE191, 0x24F8, 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7, - 0xE194, 0xE194, 0x1EC8, 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C, - 0xE198, 0xE198, 0x2280, 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5, - 0xE19F, 0xE19F, 0x24FB, 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5, - 0xE240, 0xE240, 0x4E24, 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25, - 0xE243, 0xE243, 0x1EED, 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD, - 0xE250, 0xE250, 0x4E31, 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32, - 0xE253, 0xE253, 0x24FE, 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33, - 0xE25A, 0xE25A, 0x2508, 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38, - 0xE25E, 0xE25E, 0x2506, 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF, - 0xE263, 0xE263, 0x2090, 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD, - 0xE268, 0xE268, 0x1F25, 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503, - 0xE26B, 0xE26B, 0x2502, 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A, - 0xE26F, 0xE26F, 0x20A6, 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5, - 0xE279, 0xE27C, 0x4E4B, 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F, - 0xE280, 0xE280, 0x2507, 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505, - 0xE283, 0xE288, 0x4E50, 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56, - 0xE28B, 0xE28B, 0x2515, 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C, - 0xE28F, 0xE28F, 0x2031, 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B, - 0xE293, 0xE293, 0x250F, 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509, - 0xE296, 0xE297, 0x4E5B, 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234, - 0xE29A, 0xE29A, 0x2513, 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D, - 0xE2A0, 0xE2A0, 0x2501, 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61, - 0xE342, 0xE342, 0x2517, 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63, - 0xE347, 0xE347, 0x2518, 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56, - 0xE34C, 0xE34E, 0x4E69, 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C, - 0xE351, 0xE351, 0x20D3, 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A, - 0xE355, 0xE355, 0x20CE, 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510, - 0xE359, 0xE35B, 0x4E71, 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74, - 0xE360, 0xE360, 0x250A, 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511, - 0xE368, 0xE370, 0x4E7C, 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85, - 0xE373, 0xE373, 0x251E, 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86, - 0xE378, 0xE378, 0x252D, 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89, - 0xE37C, 0xE37C, 0x2532, 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B, - 0xE380, 0xE389, 0x4E8C, 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96, - 0xE38C, 0xE38C, 0x252C, 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528, - 0xE390, 0xE390, 0x4E99, 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A, - 0xE393, 0xE393, 0x252F, 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC, - 0xE396, 0xE398, 0x4E9C, 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F, - 0xE39C, 0xE39C, 0x2535, 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D, - 0xE39F, 0xE39F, 0x2526, 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661, - 0xE440, 0xE440, 0x2534, 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F, - 0xE443, 0xE443, 0x2531, 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3, - 0xE448, 0xE448, 0x2525, 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD, - 0xE44F, 0xE44F, 0x4EAB, 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC, - 0xE452, 0xE452, 0x2172, 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD, - 0xE458, 0xE458, 0x204F, 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543, - 0xE45B, 0xE45B, 0x4EB2, 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3, - 0xE45E, 0xE45E, 0x1E3C, 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529, - 0xE463, 0xE464, 0x4EB7, 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9, - 0xE468, 0xE468, 0x1EFF, 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F, - 0xE474, 0xE474, 0x4EC5, 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6, - 0xE479, 0xE479, 0x2523, 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A, - 0xE47C, 0xE47C, 0x2545, 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D, - 0xE480, 0xE480, 0x4ECA, 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB, - 0xE484, 0xE484, 0x2103, 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C, - 0xE487, 0xE487, 0x253B, 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD, - 0xE48D, 0xE48D, 0x2540, 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD, - 0xE490, 0xE492, 0x4ED2, 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5, - 0xE498, 0xE498, 0x254B, 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547, - 0xE49E, 0xE49F, 0x254F, 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF, - 0xE540, 0xE545, 0x4EDE, 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4, - 0xE548, 0xE548, 0x2546, 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C, - 0xE54C, 0xE54D, 0x4EE7, 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552, - 0xE550, 0xE550, 0x2530, 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9, - 0xE555, 0xE555, 0x2551, 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC, - 0xE558, 0xE558, 0x20D2, 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8, - 0xE55D, 0xE55D, 0x4EF0, 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1, - 0xE561, 0xE561, 0x21AB, 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D, - 0xE565, 0xE565, 0x1EA5, 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C, - 0xE569, 0xE569, 0x2080, 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D, - 0xE56D, 0xE56D, 0x4EF9, 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA, - 0xE575, 0xE575, 0x254A, 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00, - 0xE578, 0xE578, 0x254E, 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC, - 0xE57C, 0xE57C, 0x2554, 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05, - 0xE581, 0xE581, 0x1F3C, 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5, - 0xE584, 0xE589, 0x4F07, 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D, - 0xE58E, 0xE58E, 0x2268, 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6, - 0xE592, 0xE599, 0x4F12, 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553, - 0xE59C, 0xE59E, 0x4F1A, 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D, - 0xE5A1, 0xE5FE, 0x171D, 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E, - 0xE644, 0xE644, 0x2559, 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97, - 0xE64A, 0xE64A, 0x2555, 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D, - 0xE64F, 0xE651, 0x4F28, 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B, - 0xE656, 0xE656, 0x207C, 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A, - 0xE659, 0xE65A, 0x4F2F, 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31, - 0xE65E, 0xE65E, 0x1E34, 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E, - 0xE66A, 0xE66A, 0x4F3D, 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E, - 0xE675, 0xE675, 0x21A2, 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47, - 0xE679, 0xE679, 0x2563, 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49, - 0xE67C, 0xE67C, 0x252E, 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A, - 0xE680, 0xE680, 0x1F1B, 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283, - 0xE683, 0xE683, 0x4F4C, 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D, - 0xE687, 0xE687, 0x20A0, 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565, - 0xE68A, 0xE68B, 0x4F50, 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52, - 0xE693, 0xE693, 0x2562, 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C, - 0xE698, 0xE69A, 0x4F5B, 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020, - 0xE69D, 0xE69E, 0x4F5E, 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A, - 0xE6A1, 0xE6FE, 0x177B, 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E, - 0xE744, 0xE747, 0x4F63, 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C, - 0xE74A, 0xE74C, 0x4F67, 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B, - 0xE750, 0xE750, 0x1E6F, 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4, - 0xE753, 0xE753, 0x2567, 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B, - 0xE756, 0xE758, 0x4F6C, 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F, - 0xE766, 0xE766, 0x252B, 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571, - 0xE769, 0xE769, 0x4F7C, 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D, - 0xE774, 0xE774, 0x2522, 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533, - 0xE77D, 0xE77E, 0x4F8D, 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A, - 0xE783, 0xE783, 0x4F91, 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573, - 0xE786, 0xE786, 0x256F, 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293, - 0xE78B, 0xE78B, 0x2578, 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570, - 0xE790, 0xE791, 0x4F98, 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A, - 0xE798, 0xE799, 0x2541, 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F, - 0xE7A0, 0xE7A0, 0x201A, 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4, - 0xE843, 0xE843, 0x257A, 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7, - 0xE846, 0xE846, 0x2177, 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B, - 0xE84A, 0xE84A, 0x4FAA, 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB, - 0xE84F, 0xE84F, 0x257B, 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3, - 0xE855, 0xE859, 0x4FB2, 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7, - 0xE85C, 0xE85C, 0x2566, 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93, - 0xE863, 0xE863, 0x4FBD, 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE, - 0xE870, 0xE870, 0x2514, 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D, - 0xE874, 0xE874, 0x4FCB, 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC, - 0xE87C, 0xE87C, 0x2574, 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E, - 0xE881, 0xE881, 0x4FD4, 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5, - 0xE887, 0xE887, 0x209F, 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576, - 0xE88A, 0xE88B, 0x4FDA, 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF, - 0xE88E, 0xE88E, 0x261C, 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC, - 0xE8A1, 0xE8FE, 0x1837, 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75, - 0xE94D, 0xE953, 0x4FF9, 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000, - 0xE956, 0xE956, 0x23BF, 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001, - 0xE95A, 0xE95A, 0x23C0, 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45, - 0xE95E, 0xE95E, 0x5005, 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4, - 0xE961, 0xE961, 0x5006, 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104, - 0xE964, 0xE964, 0x5007, 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008, - 0xE967, 0xE967, 0x1F87, 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009, - 0xE96C, 0xE96C, 0x2269, 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43, - 0xE976, 0xE976, 0x5014, 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679, - 0xE979, 0xE979, 0x1EEB, 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35, - 0xE97D, 0xE97D, 0x208A, 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7, - 0xE981, 0xE981, 0x23C9, 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018, - 0xE987, 0xE987, 0x224F, 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB, - 0xE98C, 0xE98D, 0x501F, 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021, - 0xE990, 0xE990, 0x21F7, 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE, - 0xE993, 0xE993, 0x23CA, 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022, - 0xE998, 0xE998, 0x23D0, 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C, - 0xE99C, 0xE99C, 0x5027, 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028, - 0xE99F, 0xE99F, 0x1FEE, 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895, - 0xEA40, 0xEA40, 0x1FF8, 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3, - 0xEA45, 0xEA47, 0x502C, 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4, - 0xEA4A, 0xEA4A, 0x1E98, 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C, - 0xEA51, 0xEA51, 0x5034, 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035, - 0xEA55, 0xEA55, 0x1E71, 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037, - 0xEA59, 0xEA59, 0x23C5, 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A, - 0xEA81, 0xEA83, 0x505E, 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061, - 0xEA87, 0xEA87, 0x2284, 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C, - 0xEA8F, 0xEA8F, 0x5069, 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D, - 0xEA92, 0xEA95, 0x506A, 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E, - 0xEAA0, 0xEAA0, 0x1ED9, 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077, - 0xEB41, 0xEB41, 0x1FB2, 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252, - 0xEB46, 0xEB47, 0x507B, 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D, - 0xEB53, 0xEB53, 0x2157, 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF, - 0xEB56, 0xEB5A, 0x5088, 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D, - 0xEB5D, 0xEB5D, 0x203D, 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015, - 0xEB61, 0xEB61, 0x5090, 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091, - 0xEB6D, 0xEB6D, 0x2156, 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144, - 0xEB71, 0xEB71, 0x509D, 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257, - 0xEB74, 0xEB77, 0x509E, 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092, - 0xEB7A, 0xEB7E, 0x50A2, 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250, - 0xEB86, 0xEB89, 0x50AC, 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0, - 0xEBA1, 0xEBFE, 0x1951, 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8, - 0xEC47, 0xEC55, 0x50CC, 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB, - 0xEC5A, 0xEC5A, 0x260C, 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E, - 0xEC5D, 0xEC5F, 0x50DF, 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2, - 0xEC6E, 0xEC6E, 0x260B, 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3, - 0xEC77, 0xEC7E, 0x50F6, 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23, - 0xEC97, 0xECA0, 0x5114, 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E, - 0xED46, 0xED46, 0x2695, 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E, - 0xED59, 0xED5D, 0x5135, 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A, - 0xED61, 0xED61, 0x2692, 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F, - 0xED65, 0xED65, 0x513E, 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD, - 0xED68, 0xED6D, 0x513F, 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145, - 0xED74, 0xED74, 0x2465, 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467, - 0xED78, 0xED78, 0x514C, 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D, - 0xED80, 0xED90, 0x5152, 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163, - 0xED93, 0xED93, 0x2209, 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9, - 0xED96, 0xED96, 0x5164, 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146, - 0xED99, 0xED99, 0x25C5, 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165, - 0xED9C, 0xED9C, 0x245E, 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F, - 0xED9F, 0xED9F, 0x5167, 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D, - 0xEE40, 0xEE40, 0x25C7, 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A, - 0xEE43, 0xEE43, 0x1E2F, 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168, - 0xEE48, 0xEE48, 0x20BF, 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B, - 0xEE4D, 0xEE4D, 0x25C9, 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8, - 0xEE53, 0xEE54, 0x5172, 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174, - 0xEE57, 0xEE57, 0x25CB, 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D, - 0xEE5F, 0xEE60, 0x517B, 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D, - 0xEE68, 0xEE68, 0x25CC, 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183, - 0xEE6C, 0xEE6C, 0x20B9, 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181, - 0xEE6F, 0xEE76, 0x5186, 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E, - 0xEE7D, 0xEE7D, 0x2173, 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD, - 0xEE81, 0xEE84, 0x5193, 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6, - 0xEE87, 0xEE89, 0x5197, 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1, - 0xEE8C, 0xEE8C, 0x519A, 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B, - 0xEE90, 0xEE90, 0x2008, 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0, - 0xEE95, 0xEE96, 0x51A0, 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2, - 0xEE99, 0xEE99, 0x1F2A, 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72, - 0xEE9E, 0xEE9E, 0x25D3, 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B, - 0xEF40, 0xEF40, 0x21BE, 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044, - 0xEF43, 0xEF43, 0x51A8, 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3, - 0xEF46, 0xEF4B, 0x51A9, 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF, - 0xEF52, 0xEF53, 0x24CC, 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698, - 0xEF56, 0xEF56, 0x51B5, 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6, - 0xEF5A, 0xEF5A, 0x24CE, 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF, - 0xEF61, 0xEF67, 0x51BD, 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4, - 0xEF6A, 0xEF6A, 0x24D0, 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1, - 0xEF6D, 0xEF76, 0x51C6, 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0, - 0xEF7A, 0xEF7A, 0x239B, 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E, - 0xEF7D, 0xEF7E, 0x51D3, 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D, - 0xEF83, 0xEF84, 0x239F, 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1, - 0xEF87, 0xEF87, 0x51D8, 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9, - 0xEF8B, 0xEF8B, 0x221E, 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2, - 0xEF8E, 0xEF94, 0x51DC, 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36, - 0xEF97, 0xEF97, 0x2135, 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD, - 0xEF9D, 0xEF9D, 0x51E7, 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8, - 0xEFA1, 0xEFFE, 0x1AC9, 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3, - 0xF042, 0xF042, 0x2203, 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7, - 0xF045, 0xF046, 0x51EC, 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097, - 0xF049, 0xF049, 0x1EE4, 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238, - 0xF04F, 0xF050, 0x51F2, 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4, - 0xF054, 0xF054, 0x1F9A, 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3, - 0xF058, 0xF05D, 0x51F8, 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE, - 0xF068, 0xF068, 0x239C, 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6, - 0xF06D, 0xF070, 0x520A, 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E, - 0xF073, 0xF073, 0x2035, 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F, - 0xF078, 0xF078, 0x23A8, 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075, - 0xF07B, 0xF07C, 0x5213, 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB, - 0xF081, 0xF081, 0x1FEB, 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215, - 0xF087, 0xF087, 0x1F6A, 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219, - 0xF08B, 0xF08B, 0x2666, 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667, - 0xF091, 0xF091, 0x521F, 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220, - 0xF096, 0xF096, 0x23AD, 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27, - 0xF140, 0xF151, 0x522D, 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242, - 0xF154, 0xF154, 0x1F02, 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183, - 0xF158, 0xF158, 0x5241, 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9, - 0xF15B, 0xF166, 0x5242, 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E, - 0xF176, 0xF176, 0x22A5, 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA, - 0xF179, 0xF179, 0x525C, 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82, - 0xF17C, 0xF17D, 0x525D, 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404, - 0xF181, 0xF181, 0x525F, 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260, - 0xF184, 0xF184, 0x2184, 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403, - 0xF187, 0xF187, 0x5262, 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B, - 0xF18A, 0xF193, 0x5263, 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D, - 0xF198, 0xF198, 0x2067, 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85, - 0xF240, 0xF244, 0x5278, 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D, - 0xF247, 0xF247, 0x1E83, 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F, - 0xF24C, 0xF252, 0x5281, 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7, - 0xF255, 0xF255, 0x240D, 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412, - 0xF25D, 0xF25E, 0x528E, 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290, - 0xF271, 0xF271, 0x23F0, 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411, - 0xF274, 0xF274, 0x2414, 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170, - 0xF277, 0xF27B, 0x52A3, 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C, - 0xF27E, 0xF27E, 0x2415, 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066, - 0xF286, 0xF286, 0x52AD, 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413, - 0xF289, 0xF289, 0x2410, 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1, - 0xF28D, 0xF290, 0x52AE, 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2, - 0xF294, 0xF294, 0x2409, 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418, - 0xF297, 0xF29B, 0x52B5, 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA, - 0xF29E, 0xF29E, 0x21FC, 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3, - 0xF340, 0xF340, 0x1FC1, 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD, - 0xF345, 0xF345, 0x229C, 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E, - 0xF349, 0xF349, 0x52C2, 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419, - 0xF34C, 0xF34F, 0x52C3, 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7, - 0xF361, 0xF361, 0x1E29, 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661, - 0xF375, 0xF375, 0x52E9, 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174, - 0xF378, 0xF378, 0x2663, 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA, - 0xF380, 0xF38B, 0x52EF, 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB, - 0xF3A0, 0xF3A0, 0x214C, 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E, - 0xF445, 0xF445, 0x267A, 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0, - 0xF451, 0xF456, 0x531D, 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323, - 0xF459, 0xF459, 0x1ED0, 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096, - 0xF45C, 0xF45C, 0x5325, 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326, - 0xF462, 0xF462, 0x23C8, 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E, - 0xF465, 0xF474, 0x532B, 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B, - 0xF47C, 0xF47C, 0x2664, 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239, - 0xF480, 0xF493, 0x5342, 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356, - 0xF499, 0xF499, 0x261F, 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E, - 0xF49D, 0xF4A0, 0x535C, 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360, - 0xF545, 0xF545, 0x2620, 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621, - 0xF548, 0xF551, 0x5366, 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370, - 0xF554, 0xF554, 0x2627, 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625, - 0xF557, 0xF55D, 0x5371, 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378, - 0xF561, 0xF561, 0x262E, 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A, - 0xF56E, 0xF56E, 0x262A, 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385, - 0xF571, 0xF571, 0x2628, 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386, - 0xF580, 0xF584, 0x5392, 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630, - 0xF587, 0xF58B, 0x5397, 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C, - 0xF58E, 0xF58E, 0x200D, 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D, - 0xF599, 0xF599, 0x2645, 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A, - 0xF59C, 0xF59F, 0x53A7, 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD, - 0xF640, 0xF640, 0x53AB, 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC, - 0xF645, 0xF645, 0x263D, 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF, - 0xF648, 0xF648, 0x263E, 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F, - 0xF64C, 0xF64C, 0x1FC0, 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B, - 0xF650, 0xF653, 0x53B3, 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7, - 0xF658, 0xF658, 0x2644, 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639, - 0xF662, 0xF662, 0x53C2, 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3, - 0xF66C, 0xF66C, 0x2647, 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB, - 0xF671, 0xF671, 0x2649, 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648, - 0xF675, 0xF675, 0x53D0, 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108, - 0xF678, 0xF67E, 0x53D1, 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D, - 0xF686, 0xF687, 0x53DD, 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF, - 0xF68A, 0xF68A, 0x2651, 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650, - 0xF68E, 0xF68E, 0x2652, 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F, - 0xF693, 0xF695, 0x53E5, 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E, - 0xF698, 0xF698, 0x2653, 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657, - 0xF69B, 0xF69B, 0x53E9, 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA, - 0xF69E, 0xF69E, 0x2633, 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656, - 0xF6A1, 0xF6FE, 0x1D5B, 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654, - 0xF743, 0xF748, 0x53EE, 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4, - 0xF74C, 0xF74C, 0x2655, 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6, - 0xF756, 0xF756, 0x265B, 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A, - 0xF759, 0xF759, 0x53FF, 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E, - 0xF75C, 0xF75C, 0x262F, 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646, - 0xF762, 0xF762, 0x5404, 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405, - 0xF76B, 0xF76B, 0x265C, 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C, - 0xF772, 0xF77B, 0x5411, 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B, - 0xF77E, 0xF77E, 0x2631, 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9, - 0xF840, 0xF841, 0x543D, 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F, - 0xF846, 0xF846, 0x2580, 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC, - 0xF84A, 0xF84F, 0x5444, 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B, - 0xF852, 0xF852, 0x544A, 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B, - 0xF863, 0xF863, 0x2583, 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A, - 0xF866, 0xF866, 0x21EE, 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182, - 0xF873, 0xF877, 0x5466, 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B, - 0xF87A, 0xF87A, 0x2587, 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588, - 0xF87D, 0xF87E, 0x546D, 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584, - 0xF882, 0xF883, 0x5470, 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472, - 0xF886, 0xF886, 0x21EF, 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A, - 0xF88E, 0xF88E, 0x258C, 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47, - 0xF89A, 0xF89C, 0x5483, 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486, - 0xF8A0, 0xF8A0, 0x258D, 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0, - 0xF94F, 0xF94F, 0x2592, 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496, - 0xF959, 0xF959, 0x2594, 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E, - 0xF95D, 0xF95D, 0x2591, 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0, - 0xF967, 0xF967, 0x2597, 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6, - 0xF96A, 0xF96B, 0x54A9, 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB, - 0xF96F, 0xF96F, 0x20F6, 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC, - 0xF985, 0xF985, 0x2585, 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599, - 0xF988, 0xF990, 0x54C2, 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB, - 0xF996, 0xF996, 0x259A, 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B, - 0xF999, 0xF9A0, 0x54D0, 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D, - 0xFA43, 0xFA45, 0x54DA, 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD, - 0xFA4C, 0xFA4C, 0x234C, 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44, - 0xFA52, 0xFA57, 0x54E6, 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0, - 0xFA5A, 0xFA5C, 0x54EC, 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF, - 0xFA5F, 0xFA5F, 0x259F, 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C, - 0xFA62, 0xFA6F, 0x54F1, 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF, - 0xFA74, 0xFA74, 0x20AE, 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B, - 0xFA77, 0xFA77, 0x25A3, 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A, - 0xFA83, 0xFA83, 0x2589, 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D, - 0xFA8D, 0xFA8D, 0x25A4, 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6, - 0xFA91, 0xFA91, 0x2593, 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7, - 0xFA97, 0xFA97, 0x2222, 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B, - 0xFB40, 0xFB48, 0x5523, 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C, - 0xFB52, 0xFB52, 0x2586, 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1, - 0xFB58, 0xFB58, 0x25AA, 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590, - 0xFB5B, 0xFB5B, 0x258E, 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688, - 0xFB76, 0xFB78, 0x5552, 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB, - 0xFB7B, 0xFB7B, 0x5555, 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4, - 0xFB7E, 0xFB7E, 0x5556, 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F, - 0xFB91, 0xFB9B, 0x5567, 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572, - 0xFB9F, 0xFB9F, 0x25F7, 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575, - 0xFC44, 0xFC44, 0x2696, 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F, - 0xFC4A, 0xFC59, 0x557D, 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D, - 0xFC63, 0xFC63, 0x1EC1, 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3, - 0xFC69, 0xFC6E, 0x5599, 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F, - 0xFC71, 0xFC71, 0x268A, 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669, - 0xFC75, 0xFC76, 0x55A2, 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4, - 0xFC80, 0xFC82, 0x55AA, 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD, - 0xFC8A, 0xFC8A, 0x2673, 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9, - 0xFD52, 0xFD52, 0x20C6, 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB, - 0xFD57, 0xFD57, 0x24D3, 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE, - 0xFD5A, 0xFD5A, 0x260F, 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611, - 0xFD60, 0xFD61, 0x55E3, 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5, - 0xFD65, 0xFD65, 0x2610, 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030, - 0xFD68, 0xFD68, 0x55E7, 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8, - 0xFD6C, 0xFD6C, 0x2614, 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616, - 0xFD71, 0xFD71, 0x55ED, 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE, - 0xFD78, 0xFD78, 0x20F2, 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617, - 0xFD7E, 0xFD7E, 0x55F7, 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037, - 0xFD89, 0xFD8A, 0x5600, 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602, - 0xFD8F, 0xFD8F, 0x1F22, 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605, - 0xFD94, 0xFD94, 0x1F34, 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02, - 0xFD9E, 0xFD9E, 0x40D3, 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083, - 0xFE40, 0xFE40, 0x1259, 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp deleted file mode 100644 index 262c9db221..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBK_EUC_V_2[20 * 3] = { - 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, - 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, - 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, - 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, - 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, - 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, - 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp deleted file mode 100644 index adca3b7b35..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp +++ /dev/null @@ -1,1822 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBK2K_H_5[4071 * 3] = { - 0x0020, 0x007E, 0x0001, 0x8140, 0x8178, 0x2758, 0x8179, 0x8179, 0x2059, - 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, 0x8186, 0x8186, 0x21F1, - 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, 0x81EE, 0x81F5, 0x2802, - 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, 0x8240, 0x8252, 0x2812, - 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, 0x8262, 0x8262, 0x21B5, - 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, 0x8275, 0x8279, 0x2844, - 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, 0x827D, 0x827D, 0x1E62, - 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, 0x8281, 0x8282, 0x284C, - 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, 0x8290, 0x8290, 0x205C, - 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, 0x82A6, 0x82C7, 0x286E, - 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, 0x82CA, 0x82E0, 0x2890, - 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, 0x82E3, 0x82E3, 0x210A, - 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, 0x82ED, 0x82ED, 0x267F, - 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, 0x82F3, 0x82F6, 0x28B4, - 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, 0x82F9, 0x82F9, 0x226C, - 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, 0x82FC, 0x82FE, 0x28B9, - 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, 0x8342, 0x8344, 0x28BD, - 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, 0x8348, 0x8348, 0x1FB9, - 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, 0x834D, 0x8352, 0x28C5, - 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, 0x8357, 0x8357, 0x20C2, - 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, 0x835F, 0x8364, 0x28D4, - 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, 0x8367, 0x8371, 0x28DA, - 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, 0x8378, 0x8378, 0x2210, - 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, 0x837B, 0x837B, 0x28EB, - 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, 0x837E, 0x837E, 0x1FE4, - 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, 0x8386, 0x8386, 0x22D6, - 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, 0x838A, 0x838A, 0x22CE, - 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, 0x838E, 0x8393, 0x28F6, - 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, 0x839E, 0x839E, 0x2231, - 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, 0x83A7, 0x83AA, 0x290C, - 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, 0x83AE, 0x83AE, 0x22D7, - 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, 0x83B1, 0x83B9, 0x2912, - 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, 0x83C9, 0x83C9, 0x2025, - 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, 0x83F7, 0x83FE, 0x2955, - 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, 0x8451, 0x8470, 0x296D, - 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, 0x8474, 0x8474, 0x2263, - 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, 0x8478, 0x847E, 0x2991, - 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, 0x8483, 0x848D, 0x299A, - 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, 0x8492, 0x8492, 0x22CA, - 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, 0x849D, 0x849D, 0x1F4F, - 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, 0x84A2, 0x84A2, 0x2036, - 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, 0x84A5, 0x84A5, 0x22C9, - 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, 0x84A9, 0x84A9, 0x1F75, - 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, 0x84C6, 0x84D2, 0x29D2, - 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, 0x84D5, 0x84D5, 0x21A9, - 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, 0x84D8, 0x84D8, 0x29E1, - 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, 0x84DB, 0x84DC, 0x29E2, - 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, 0x84EA, 0x84EA, 0x2323, - 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, 0x84EF, 0x84F0, 0x29F3, - 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, 0x8540, 0x8550, 0x2A02, - 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, 0x8553, 0x8553, 0x2A13, - 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, 0x855E, 0x855E, 0x20EF, - 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, 0x8567, 0x857E, 0x2A24, - 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, 0x8588, 0x858A, 0x2A43, - 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, 0x8592, 0x8592, 0x21F9, - 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, 0x8597, 0x8597, 0x2A4F, - 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, 0x85A2, 0x85A2, 0x1E5A, - 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, 0x85B3, 0x85FE, 0x2A68, - 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, 0x864B, 0x8653, 0x2ABE, - 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, 0x8668, 0x8668, 0x236C, - 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, 0x8696, 0x8696, 0x219C, - 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, 0x869A, 0x86A0, 0x2B08, - 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, 0x86CA, 0x86CA, 0x210B, - 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, 0x86CD, 0x86CD, 0x2B38, - 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, 0x86D1, 0x86D1, 0x222C, - 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, 0x86DD, 0x86DD, 0x22C0, - 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, 0x86E2, 0x86E7, 0x2B48, - 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, 0x86EE, 0x86EE, 0x2379, - 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, 0x86F5, 0x86FE, 0x2B58, - 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, 0x8744, 0x8744, 0x237C, - 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, 0x874A, 0x874A, 0x2B69, - 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, 0x874D, 0x874E, 0x2B6A, - 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, 0x8757, 0x8757, 0x1F4C, - 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, 0x875B, 0x875B, 0x21CF, - 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, 0x875E, 0x875E, 0x2371, - 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, 0x8761, 0x8765, 0x2B77, - 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, 0x877A, 0x877A, 0x236F, - 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, 0x877E, 0x877E, 0x2B91, - 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, 0x8782, 0x8782, 0x2373, - 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, 0x8787, 0x8787, 0x2B96, - 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, 0x878A, 0x878A, 0x20B5, - 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, 0x878E, 0x878E, 0x2672, - 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, 0x8794, 0x8797, 0x2B9E, - 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, 0x879D, 0x879D, 0x2375, - 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, 0x87A4, 0x87A6, 0x2BAB, - 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, 0x87B3, 0x87B3, 0x236B, - 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, 0x87B6, 0x87BA, 0x2BBA, - 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, 0x87BF, 0x87BF, 0x237D, - 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, 0x87C2, 0x87C2, 0x2381, - 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, 0x87CB, 0x87CB, 0x237E, - 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, 0x87CF, 0x87CF, 0x22DB, - 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, 0x87D3, 0x87D3, 0x2689, - 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, 0x87D6, 0x87D9, 0x2BCF, - 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, 0x87F7, 0x87F7, 0x2383, - 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, 0x87FA, 0x87FA, 0x218F, - 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, 0x8841, 0x8841, 0x2248, - 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, 0x8845, 0x8845, 0x2BF6, - 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, 0x8880, 0x88B9, 0x2C2F, - 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, 0x88CC, 0x88CC, 0x228B, - 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, 0x88D5, 0x88D6, 0x2C81, - 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, 0x88DF, 0x88DF, 0x232C, - 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, 0x88E6, 0x88F1, 0x2C8F, - 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, 0x88F4, 0x88F5, 0x2C9B, - 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, 0x8940, 0x894A, 0x2CA5, - 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, 0x894D, 0x894D, 0x2CB0, - 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, 0x8950, 0x8950, 0x232D, - 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, 0x8955, 0x895C, 0x2CB5, - 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, 0x895F, 0x895F, 0x232F, - 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, 0x896E, 0x8970, 0x2CCB, - 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, 0x897C, 0x897C, 0x1EC2, - 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, 0x898B, 0x898B, 0x22B2, - 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, 0x899A, 0x899D, 0x2CF2, - 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, 0x89A6, 0x89A6, 0x20D9, - 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, 0x89A9, 0x89AE, 0x2CFE, - 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, 0x89BA, 0x89BA, 0x21ED, - 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, 0x89BF, 0x89BF, 0x2326, - 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, 0x89C4, 0x89C4, 0x1F52, - 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, 0x89C7, 0x89C7, 0x2D14, - 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, 0x89CE, 0x89CE, 0x1E2B, - 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, 0x89D2, 0x89D7, 0x2D1C, - 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, 0x89DB, 0x89DB, 0x2138, - 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, 0x89F5, 0x89FE, 0x2D3C, - 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, 0x8A42, 0x8A58, 0x2D47, - 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, 0x8A5B, 0x8A5B, 0x2D5E, - 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, 0x8A5E, 0x8A5E, 0x1EFA, - 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, 0x8A7A, 0x8A7E, 0x2D7A, - 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, 0x8AE5, 0x8AFE, 0x2DE3, - 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, 0x8B45, 0x8B48, 0x2E01, - 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, 0x8B7A, 0x8B7A, 0x23FC, - 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, 0x8B8C, 0x8B8C, 0x2069, - 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, 0x8B9F, 0x8BB2, 0x2E56, - 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, 0x8BB9, 0x8BB9, 0x23FD, - 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, 0x8BBF, 0x8BC5, 0x2E73, - 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, 0x8BC8, 0x8BC8, 0x23FE, - 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, 0x8BD4, 0x8BD4, 0x2401, - 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, 0x8BDD, 0x8BE4, 0x2E8C, - 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, 0x8BEB, 0x8BEB, 0x2221, - 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, 0x8BF1, 0x8BFE, 0x2E9D, - 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, 0x8C45, 0x8C4E, 0x2EAF, - 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, 0x8C57, 0x8C57, 0x21E5, - 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, 0x8C5D, 0x8C7E, 0x2EC4, - 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, 0x8C8C, 0x8C8C, 0x2EF1, - 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, 0x8C8F, 0x8C8F, 0x2121, - 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, 0x8C92, 0x8C92, 0x1FE5, - 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, 0x8C9A, 0x8C9A, 0x1E37, - 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, 0x8CA3, 0x8CA3, 0x22A6, - 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, 0x8CA6, 0x8CA6, 0x1EDA, - 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, 0x8CC0, 0x8CC0, 0x235C, - 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, 0x8CD3, 0x8CD3, 0x1E67, - 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, 0x8CD6, 0x8CD8, 0x2F2B, - 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, 0x8CF9, 0x8CF9, 0x1F16, - 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, 0x8D73, 0x8D73, 0x2389, - 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, 0x8D76, 0x8D7A, 0x2F86, - 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, 0x8D80, 0x8D87, 0x2F8E, - 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, 0x8D8F, 0x8D8F, 0x1F1A, - 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, 0x8D9F, 0x8DB8, 0x2FAA, - 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, 0x8DE2, 0x8DE2, 0x2391, - 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, 0x8DE5, 0x8DE6, 0x2FED, - 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, 0x8DF7, 0x8DF7, 0x238E, - 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, 0x8E40, 0x8E45, 0x3004, - 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, 0x8E56, 0x8E56, 0x2390, - 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, 0x8E59, 0x8E59, 0x301A, - 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, 0x8E68, 0x8E68, 0x1FE9, - 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, 0x8E6F, 0x8E6F, 0x302D, - 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, 0x8E80, 0x8E80, 0x2324, - 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, 0x8E9C, 0x8E9E, 0x3056, - 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, 0x8EA4, 0x8EA4, 0x2277, - 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, 0x8EA8, 0x8EAB, 0x305F, - 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, 0x8EAE, 0x8EAE, 0x2384, - 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, 0x8EBE, 0x8EBE, 0x2386, - 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, 0x8EC4, 0x8EC4, 0x3076, - 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, 0x8ECD, 0x8ECD, 0x1E32, - 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, 0x8ED6, 0x8ED6, 0x1F13, - 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, 0x8EEC, 0x8EEC, 0x1FE0, - 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, 0x8F52, 0x8F52, 0x2087, - 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, 0x8F55, 0x8F55, 0x1EF6, - 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, 0x8F5D, 0x8F5D, 0x2045, - 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, 0x8F65, 0x8F7E, 0x30C9, - 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, 0x8F87, 0x8F87, 0x30E9, - 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, 0x8F95, 0x8F95, 0x266E, - 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, 0x8F98, 0x8F9A, 0x30F7, - 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, 0x8F9D, 0x8F9D, 0x2188, - 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, 0x8FA2, 0x8FBC, 0x30FE, - 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, 0x8FC4, 0x8FC4, 0x1EA1, - 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, 0x8FC7, 0x8FCC, 0x3120, - 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, 0x8FD8, 0x8FD8, 0x1E7C, - 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, 0x9080, 0x909C, 0x3195, - 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, 0x909F, 0x90B9, 0x31B2, - 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, 0x90C0, 0x90C0, 0x2095, - 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, 0x90C5, 0x90C5, 0x23B9, - 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, 0x90DC, 0x90DC, 0x23BD, - 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, 0x90EE, 0x90EF, 0x31FA, - 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, 0x90F7, 0x90F7, 0x23B3, - 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, 0x9142, 0x9142, 0x2162, - 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, 0x914C, 0x914C, 0x3213, - 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, 0x9151, 0x9151, 0x23B7, - 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, 0x9155, 0x9155, 0x24DF, - 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, 0x915A, 0x915A, 0x214E, - 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, 0x915E, 0x9160, 0x321E, - 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, 0x9163, 0x9163, 0x20EB, - 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, 0x916F, 0x9175, 0x322C, - 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, 0x917A, 0x917A, 0x201B, - 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, 0x917D, 0x917E, 0x3236, - 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, 0x9185, 0x918C, 0x323C, - 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, 0x9191, 0x9191, 0x2089, - 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, 0x9194, 0x9196, 0x3248, - 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, 0x919B, 0x919B, 0x2214, - 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, 0x91AA, 0x91AA, 0x2223, - 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, 0x91BA, 0x91BA, 0x268C, - 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, 0x91BF, 0x91BF, 0x24E0, - 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, 0x91C4, 0x91CC, 0x326F, - 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, 0x91D0, 0x91D0, 0x1FFE, - 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, 0x91D3, 0x91D3, 0x327A, - 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, 0x91D6, 0x91D6, 0x1FCE, - 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, 0x91D9, 0x91D9, 0x2021, - 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, 0x91E0, 0x91E1, 0x3282, - 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, 0x91EA, 0x91EA, 0x24A4, - 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, 0x91F1, 0x91F1, 0x3290, - 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, 0x9240, 0x927E, 0x329D, - 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, 0x92B7, 0x92CD, 0x3312, - 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, 0x92D0, 0x92D0, 0x235D, - 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, 0x92D5, 0x92DE, 0x332D, - 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, 0x92E1, 0x92FD, 0x3337, - 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, 0x9350, 0x9350, 0x21FF, - 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, 0x935E, 0x936F, 0x3370, - 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, 0x9376, 0x9376, 0x1EB6, - 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, 0x938C, 0x938C, 0x20DB, - 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, 0x939E, 0x93A4, 0x33AB, - 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, 0x93A7, 0x93A7, 0x2040, - 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, 0x93B5, 0x93B7, 0x33BF, - 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, 0x93BB, 0x93BB, 0x235E, - 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, 0x93BE, 0x93C5, 0x33C5, - 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, 0x93CF, 0x93CF, 0x2093, - 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, 0x93D8, 0x93DA, 0x33DC, - 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, 0x93DD, 0x93E0, 0x33DF, - 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, 0x93E4, 0x93E4, 0x20C0, - 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, 0x93E9, 0x93E9, 0x2160, - 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, 0x93EC, 0x93EC, 0x1F8E, - 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, 0x93EF, 0x93EF, 0x2047, - 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, 0x93F2, 0x93F3, 0x33EB, - 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, 0x93F6, 0x93F9, 0x33ED, - 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, 0x93FE, 0x93FE, 0x1FCC, - 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, 0x9445, 0x944C, 0x33F8, - 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, 0x9450, 0x9450, 0x1E52, - 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, 0x9453, 0x9453, 0x228F, - 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, 0x9456, 0x9457, 0x3403, - 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, 0x945B, 0x945B, 0x1E2D, - 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, 0x945E, 0x945E, 0x3407, - 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, 0x9464, 0x9464, 0x2363, - 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, 0x9467, 0x946D, 0x340D, - 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, 0x9472, 0x9472, 0x1FF6, - 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, 0x9475, 0x9475, 0x3418, - 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, 0x9478, 0x9478, 0x2367, - 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, 0x947B, 0x947E, 0x341B, - 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, 0x9482, 0x9482, 0x2163, - 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, 0x9488, 0x9488, 0x1FFC, - 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, 0x94A2, 0x94B2, 0x343B, - 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, 0x94B5, 0x94B5, 0x2142, - 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, 0x94C0, 0x94C0, 0x1E43, - 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, 0x94CD, 0x94D7, 0x3461, - 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, 0x94E0, 0x94E0, 0x1ED7, - 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, 0x9572, 0x9572, 0x212D, - 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, 0x9583, 0x9583, 0x229B, - 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, 0x959F, 0x959F, 0x24A8, - 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, 0x95B4, 0x95B9, 0x34FF, - 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, 0x95CF, 0x95CF, 0x24A7, - 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, 0x95D2, 0x95D2, 0x24A6, - 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, 0x95D5, 0x95E0, 0x351B, - 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, 0x95E7, 0x95E7, 0x1FE7, - 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, 0x95F2, 0x95F7, 0x3535, - 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, 0x95FE, 0x95FE, 0x1F5C, - 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, 0x9657, 0x967B, 0x3556, - 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, 0x9680, 0x96FE, 0x357D, - 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, 0x9768, 0x976B, 0x3623, - 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, 0x976E, 0x976E, 0x246D, - 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, 0x9796, 0x9796, 0x246B, - 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, 0x979D, 0x979D, 0x1ECE, - 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, 0x97A4, 0x97BE, 0x3658, - 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, 0x97EE, 0x97EE, 0x21FE, - 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, 0x97F8, 0x97FE, 0x36A9, - 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, 0x9846, 0x9848, 0x36B5, - 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, 0x984F, 0x984F, 0x1F6F, - 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, 0x9872, 0x9872, 0x36DE, - 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, 0x9880, 0x9880, 0x36EA, - 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, 0x988B, 0x988B, 0x1F27, - 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, 0x98A0, 0x98A0, 0x247C, - 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, 0x98AB, 0x98B5, 0x3710, - 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, 0x98B8, 0x98B9, 0x371B, - 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, 0x98C7, 0x98C7, 0x203E, - 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, 0x98CC, 0x98CF, 0x372C, - 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, 0x98D3, 0x98D3, 0x2204, - 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, 0x98E4, 0x98E4, 0x2140, - 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, 0x98EF, 0x98EF, 0x2474, - 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, 0x98F3, 0x98FE, 0x374C, - 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, 0x9944, 0x9944, 0x375B, - 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, 0x9966, 0x9966, 0x2472, - 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, 0x996F, 0x9974, 0x3783, - 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, 0x997A, 0x997A, 0x1F8B, - 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, 0x9980, 0x9984, 0x3790, - 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, 0x9989, 0x9989, 0x2482, - 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, 0x998F, 0x9990, 0x379C, - 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, 0x9999, 0x9999, 0x1F38, - 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, 0x99AA, 0x99AF, 0x37B4, - 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, 0x99B2, 0x99B2, 0x37BA, - 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, 0x99B5, 0x99B5, 0x2471, - 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, 0x99BE, 0x99BE, 0x2470, - 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, 0x99C1, 0x99C1, 0x37C3, - 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, 0x99C9, 0x99C9, 0x246F, - 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, 0x99CF, 0x99D0, 0x37CE, - 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, 0x99DA, 0x99DA, 0x1FF5, - 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, 0x99E1, 0x99E4, 0x37DD, - 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, 0x99E8, 0x99E8, 0x2479, - 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, 0x99ED, 0x99F3, 0x37E6, - 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, 0x9A40, 0x9A49, 0x37F7, - 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, 0x9A57, 0x9A57, 0x20AD, - 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, 0x9A66, 0x9A66, 0x381A, - 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, 0x9A71, 0x9A71, 0x2159, - 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, 0x9A77, 0x9A77, 0x1F33, - 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, 0x9A88, 0x9A88, 0x1E5C, - 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, 0x9A8D, 0x9A90, 0x383A, - 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, 0x9A97, 0x9A97, 0x248A, - 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, 0x9A9B, 0x9A9B, 0x248B, - 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, 0x9A9F, 0x9AA1, 0x3847, - 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, 0x9AA4, 0x9AA9, 0x384A, - 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, 0x9AD0, 0x9AD0, 0x24C0, - 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, 0x9AD7, 0x9AD9, 0x387A, - 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, 0x9AE2, 0x9AE2, 0x20CA, - 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, 0x9AE5, 0x9AE5, 0x24C2, - 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, 0x9B80, 0x9BD0, 0x38DD, - 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, 0x9BDC, 0x9BDC, 0x23DB, - 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, 0x9C53, 0x9C53, 0x205E, - 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, 0x9C5A, 0x9C5A, 0x23E2, - 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, 0x9C5D, 0x9C74, 0x3973, - 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, 0x9C79, 0x9C79, 0x1E66, - 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, 0x9C86, 0x9C86, 0x1F63, - 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, 0x9C9E, 0x9CAA, 0x39AF, - 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, 0x9CCA, 0x9CCA, 0x22B5, - 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, 0x9CD0, 0x9CE5, 0x39DE, - 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, 0x9CE8, 0x9CEB, 0x39F4, - 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, 0x9CEE, 0x9CEE, 0x2341, - 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, 0x9CFC, 0x9CFD, 0x3A05, - 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, 0x9D42, 0x9D42, 0x2124, - 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, 0x9D47, 0x9D47, 0x23E0, - 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, 0x9D4E, 0x9D4E, 0x3A11, - 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, 0x9D61, 0x9D61, 0x20B1, - 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, 0x9D69, 0x9D69, 0x201C, - 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, 0x9D6F, 0x9D70, 0x3A2D, - 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, 0x9D75, 0x9D75, 0x1F9B, - 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, 0x9D7C, 0x9D7C, 0x3A37, - 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, 0x9D80, 0x9D89, 0x3A39, - 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, 0x9D8D, 0x9D8D, 0x1FB4, - 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, 0x9D92, 0x9D98, 0x3A48, - 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, 0x9DA1, 0x9DA1, 0x23E1, - 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, 0x9DA7, 0x9DA7, 0x23EA, - 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, 0x9DAD, 0x9DAD, 0x210E, - 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, 0x9DB3, 0x9DB3, 0x2004, - 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, 0x9DBF, 0x9DC5, 0x3A6C, - 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, 0x9DC9, 0x9DC9, 0x2264, - 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, 0x9DCE, 0x9DD1, 0x3A78, - 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, 0x9DD5, 0x9DD5, 0x1EC4, - 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, 0x9DE2, 0x9DE2, 0x20A9, - 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, 0x9DF2, 0x9DF3, 0x3A97, - 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, 0x9DF7, 0x9DF7, 0x268B, - 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, 0x9DFB, 0x9DFC, 0x3A9D, - 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, 0x9E40, 0x9E44, 0x3AA0, - 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, 0x9E48, 0x9E48, 0x2191, - 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, 0x9E52, 0x9E52, 0x1F9C, - 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, 0x9E55, 0x9E55, 0x3AB0, - 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, 0x9E5D, 0x9E5D, 0x23E9, - 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, 0x9E61, 0x9E61, 0x21D5, - 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, 0x9E64, 0x9E66, 0x3ABA, - 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, 0x9E6C, 0x9E6C, 0x1E4F, - 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, 0x9E70, 0x9E71, 0x3AC3, - 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, 0x9E74, 0x9E74, 0x23EC, - 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, 0x9E7B, 0x9E7B, 0x23D8, - 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, 0x9E80, 0x9E84, 0x3ACD, - 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, 0x9E87, 0x9E87, 0x23ED, - 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, 0x9E92, 0x9E95, 0x3ADC, - 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, 0x9E98, 0x9EA1, 0x3AE0, - 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, 0x9EA6, 0x9EA6, 0x200B, - 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, 0x9EAA, 0x9EAD, 0x3AEF, - 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, 0x9EB3, 0x9EB3, 0x2189, - 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, 0x9EB7, 0x9EB7, 0x23E7, - 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, 0x9EF6, 0x9EFE, 0x3B36, - 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, 0x9F4F, 0x9F6E, 0x3B4D, - 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, 0x9F80, 0x9F91, 0x3B7C, - 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, 0x9F98, 0x9F98, 0x24D6, - 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, 0x9FA7, 0x9FA8, 0x3BA0, - 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, 0x9FAC, 0x9FAC, 0x24D5, - 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, 0x9FCA, 0x9FCC, 0x3BC0, - 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, 0x9FE1, 0x9FE1, 0x20FC, - 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, 0x9FEC, 0x9FED, 0x3BDF, - 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, 0x9FF4, 0x9FF4, 0x1EBA, - 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, 0x9FFE, 0x9FFE, 0x3BEE, - 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, 0xA044, 0xA045, 0x3BF2, - 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, 0xA049, 0xA049, 0x2227, - 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, 0xA04F, 0xA053, 0x3BFA, - 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, 0xA05A, 0xA05A, 0x1F5D, - 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, 0xA062, 0xA062, 0x3C0A, - 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, 0xA071, 0xA071, 0x2149, - 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, 0xA075, 0xA07E, 0x3C1A, - 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, 0xA091, 0xA091, 0x2190, - 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, 0xA095, 0xA095, 0x3C36, - 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, 0xA0A9, 0xA0A9, 0x24C3, - 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, 0xA0C0, 0xA0CD, 0x3C5E, - 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, 0xA0D9, 0xA0D9, 0x1ED1, - 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, 0xA0DF, 0xA0ED, 0x3C7A, - 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, 0xA1A1, 0xA1FE, 0x0060, - 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E3, 0xA2E3, 0x5751, - 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, - 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, - 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, - 0xA840, 0xA87E, 0x26B3, 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C, - 0xA8C5, 0xA8EA, 0x02BC, 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720, - 0xA95C, 0xA95C, 0x2722, 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742, - 0xA996, 0xA996, 0x1E17, 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99, - 0xAA4D, 0xAA4D, 0x21B6, 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6, - 0xAA71, 0xAA71, 0x2235, 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397, - 0xAA74, 0xAA76, 0x3CC9, 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC, - 0xAA7A, 0xAA7A, 0x223F, 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE, - 0xAA80, 0xAA99, 0x3CD1, 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB, - 0xAA9C, 0xAA9C, 0x2396, 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC, - 0xAA9F, 0xAA9F, 0x20A2, 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E, - 0xAB40, 0xAB40, 0x1F64, 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B, - 0xAB44, 0xAB44, 0x3CF0, 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139, - 0xAB47, 0xAB47, 0x3CF1, 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1, - 0xAB4A, 0xAB4A, 0x239A, 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399, - 0xAB4E, 0xAB7E, 0x3CF4, 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C, - 0xAC40, 0xAC45, 0x3D46, 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C, - 0xAC71, 0xAC71, 0x2460, 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C, - 0xAC7D, 0xAC7E, 0x3D80, 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D, - 0xAC8E, 0xAC92, 0x3D8F, 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A, - 0xAC95, 0xACA0, 0x3D94, 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461, - 0xAD4A, 0xAD5D, 0x3DA9, 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD, - 0xAD61, 0xAD61, 0x2462, 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54, - 0xAD69, 0xAD73, 0x3DC5, 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0, - 0xAD80, 0xAD81, 0x3DDA, 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC, - 0xAD87, 0xAD87, 0x245D, 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463, - 0xAD8C, 0xAD90, 0x3DE3, 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8, - 0xAE40, 0xAE53, 0x3DF7, 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B, - 0xAE62, 0xAE62, 0x1E70, 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F, - 0xAE81, 0xAE84, 0x3E34, 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38, - 0xAE8B, 0xAE8B, 0x1F4E, 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1, - 0xAE95, 0xAE9F, 0x3E45, 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50, - 0xAF64, 0xAF64, 0x1FC6, 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE, - 0xAF7C, 0xAF7E, 0x3E8A, 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01, - 0xAF83, 0xAF83, 0x2200, 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2, - 0xAF8F, 0xAF8F, 0x1E97, 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB, - 0xAF92, 0xAF9B, 0x3E9A, 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4, - 0xAF9F, 0xAF9F, 0x2028, 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7, - 0xB041, 0xB042, 0x25AF, 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1, - 0xB045, 0xB04E, 0x3EA9, 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3, - 0xB054, 0xB054, 0x1E4E, 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202, - 0xB058, 0xB058, 0x25AB, 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9, - 0xB05B, 0xB05B, 0x25AD, 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6, - 0xB05E, 0xB05E, 0x3EBB, 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4, - 0xB062, 0xB062, 0x222F, 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7, - 0xB065, 0xB06B, 0x3EBC, 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3, - 0xB07D, 0xB07D, 0x1E25, 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4, - 0xB097, 0xB097, 0x25C0, 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A, - 0xB09A, 0xB0A0, 0x3EEC, 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3, - 0xB14B, 0xB14B, 0x226E, 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD, - 0xB14E, 0xB14E, 0x3EFF, 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2, - 0xB151, 0xB151, 0x3F00, 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01, - 0xB180, 0xB196, 0x3F2D, 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44, - 0xB1A1, 0xB1FE, 0x040A, 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF, - 0xB242, 0xB266, 0x3F4E, 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73, - 0xB26D, 0xB26D, 0x2074, 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687, - 0xB275, 0xB27E, 0x3F7E, 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88, - 0xB289, 0xB289, 0x268D, 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0, - 0xB29B, 0xB2A0, 0x3FA0, 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6, - 0xB343, 0xB343, 0x1FAB, 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8, - 0xB371, 0xB37E, 0x3FD5, 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9, - 0xB389, 0xB38B, 0x3FEB, 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE, - 0xB38E, 0xB38E, 0x21FA, 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6, - 0xB440, 0xB453, 0x4001, 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015, - 0xB458, 0xB458, 0x24E4, 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6, - 0xB45F, 0xB45F, 0x20F7, 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B, - 0xB462, 0xB474, 0x401E, 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031, - 0xB47E, 0xB47E, 0x24EC, 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB, - 0xB484, 0xB488, 0x403C, 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041, - 0xB493, 0xB493, 0x24EA, 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524, - 0xB540, 0xB540, 0x4057, 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058, - 0xB54B, 0xB54B, 0x1E27, 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6, - 0xB557, 0xB559, 0x406B, 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012, - 0xB55C, 0xB55C, 0x1EEC, 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8, - 0xB562, 0xB57E, 0x4072, 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66, - 0xB59D, 0xB59D, 0x24DC, 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582, - 0xB640, 0xB651, 0x40AE, 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0, - 0xB655, 0xB655, 0x24DD, 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E, - 0xB65A, 0xB65A, 0x40C5, 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8, - 0xB65D, 0xB67E, 0x40C6, 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0, - 0xB740, 0xB74D, 0x4109, 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117, - 0xB751, 0xB751, 0x1E80, 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677, - 0xB75A, 0xB763, 0x4120, 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69, - 0xB766, 0xB766, 0x222B, 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F, - 0xB778, 0xB778, 0x1F5B, 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B, - 0xB781, 0xB781, 0x4140, 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141, - 0xB7A1, 0xB7FE, 0x063E, 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0, - 0xB844, 0xB844, 0x2186, 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED, - 0xB847, 0xB84C, 0x4163, 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169, - 0xB851, 0xB851, 0x1FEA, 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4, - 0xB85B, 0xB85B, 0x20E1, 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8, - 0xB85E, 0xB85E, 0x2260, 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2, - 0xB861, 0xB876, 0x4176, 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C, - 0xB880, 0xB881, 0x4193, 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195, - 0xB8A1, 0xB8FE, 0x069C, 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41, - 0xB951, 0xB960, 0x41C3, 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3, - 0xB97B, 0xB97B, 0x1F86, 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF, - 0xB99D, 0xB99D, 0x1FB3, 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF, - 0xB9A1, 0xB9FE, 0x06FA, 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4, - 0xBA43, 0xBA43, 0x4210, 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211, - 0xBA56, 0xBA56, 0x25E3, 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111, - 0xBA5A, 0xBA5F, 0x4224, 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A, - 0xBA6A, 0xBA6A, 0x25E7, 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041, - 0xBA75, 0xBA7E, 0x423C, 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA, - 0xBA85, 0xBA85, 0x424A, 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B, - 0xBA88, 0xBA88, 0x25EC, 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB, - 0xBA8E, 0xBA9D, 0x4250, 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D, - 0xBAA0, 0xBAA0, 0x4260, 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7, - 0xBB41, 0xBB48, 0x4261, 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269, - 0xBB58, 0xBB58, 0x25E9, 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE, - 0xBB5C, 0xBB5C, 0x203A, 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693, - 0xBB61, 0xBB64, 0x427C, 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED, - 0xBB67, 0xBB67, 0x4280, 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281, - 0xBB6A, 0xBB6A, 0x2065, 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3, - 0xBB6F, 0xBB7E, 0x4285, 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6, - 0xBC40, 0xBC51, 0x42B6, 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC, - 0xBC54, 0xBC59, 0x42C8, 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE, - 0xBC61, 0xBC61, 0x269B, 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3, - 0xBC64, 0xBC64, 0x42D5, 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6, - 0xBC67, 0xBC67, 0x25F4, 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B, - 0xBC6A, 0xBC6C, 0x42D8, 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB, - 0xBC6F, 0xBC6F, 0x1F7B, 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D, - 0xBC72, 0xBC72, 0x42DD, 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48, - 0xBC75, 0xBC75, 0x241C, 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF, - 0xBC79, 0xBC79, 0x219A, 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091, - 0xBC7C, 0xBC7D, 0x42DF, 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1, - 0xBC82, 0xBC82, 0x2423, 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422, - 0xBC85, 0xBC85, 0x42E3, 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4, - 0xBC88, 0xBC88, 0x228D, 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8, - 0xBC8B, 0xBC8B, 0x2421, 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3, - 0xBC90, 0xBC99, 0x42E8, 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426, - 0xBC9C, 0xBC9C, 0x2425, 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2, - 0xBCA1, 0xBCFE, 0x0814, 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A, - 0xBD43, 0xBD43, 0x2424, 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428, - 0xBD46, 0xBD47, 0x42F8, 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429, - 0xBD4A, 0xBD4A, 0x42FA, 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB, - 0xBD4D, 0xBD4D, 0x22BE, 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31, - 0xBD50, 0xBD56, 0x42FD, 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304, - 0xBD59, 0xBD59, 0x1FB5, 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B, - 0xBD67, 0xBD67, 0x1FAF, 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068, - 0xBD6B, 0xBD6B, 0x21E4, 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21, - 0xBD70, 0xBD70, 0x4316, 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317, - 0xBD79, 0xBD79, 0x217C, 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D, - 0xBD7C, 0xBD7D, 0x431E, 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320, - 0xBD81, 0xBD81, 0x1FD1, 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33, - 0xBD8A, 0xBD8A, 0x4328, 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329, - 0xBD8E, 0xBD8E, 0x242E, 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430, - 0xBD91, 0xBD91, 0x21DB, 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158, - 0xBD98, 0xBD9A, 0x4331, 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334, - 0xBDA1, 0xBDFE, 0x0872, 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9, - 0xBE44, 0xBE44, 0x433C, 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D, - 0xBE49, 0xBE49, 0x1E8E, 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340, - 0xBE51, 0xBE51, 0x21C5, 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192, - 0xBE54, 0xBE54, 0x4346, 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19, - 0xBE57, 0xBE57, 0x218C, 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3, - 0xBE5A, 0xBE5C, 0x4347, 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438, - 0xBE5F, 0xBE5F, 0x2432, 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A, - 0xBE62, 0xBE62, 0x1E9C, 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085, - 0xBE65, 0xBE68, 0x434B, 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F, - 0xBE6C, 0xBE6C, 0x243B, 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7, - 0xBE70, 0xBE70, 0x2433, 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054, - 0xBE77, 0xBE77, 0x21DE, 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434, - 0xBE7A, 0xBE7B, 0x4359, 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89, - 0xBE7E, 0xBE7E, 0x243C, 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E, - 0xBE84, 0xBE84, 0x1ED8, 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF, - 0xBE87, 0xBE87, 0x2445, 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249, - 0xBE8A, 0xBE8B, 0x4360, 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362, - 0xBE8E, 0xBE8E, 0x1E47, 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363, - 0xBE92, 0xBE92, 0x2086, 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196, - 0xBE96, 0xBE96, 0x4367, 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F, - 0xBE99, 0xBE99, 0x4368, 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369, - 0xBE9C, 0xBE9C, 0x2442, 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E, - 0xBEA0, 0xBEA0, 0x436C, 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6, - 0xBF41, 0xBF4C, 0x436D, 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446, - 0xBF4F, 0xBF4F, 0x244B, 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379, - 0xBF55, 0xBF55, 0x2427, 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D, - 0xBF60, 0xBF60, 0x1F0F, 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447, - 0xBF63, 0xBF63, 0x2449, 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387, - 0xBF68, 0xBF68, 0x21C2, 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E, - 0xBF6D, 0xBF6F, 0x438D, 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390, - 0xBF72, 0xBF72, 0x244A, 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391, - 0xBF76, 0xBF76, 0x22BB, 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393, - 0xBF79, 0xBF79, 0x2694, 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6, - 0xBF7C, 0xBF7C, 0x2051, 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E, - 0xBF80, 0xBF81, 0x4395, 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D, - 0xBF84, 0xBF88, 0x4397, 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451, - 0xBF8B, 0xBF94, 0x439C, 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6, - 0xBF97, 0xBF97, 0x2289, 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7, - 0xBF9D, 0xBF9D, 0x2454, 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E, - 0xC040, 0xC040, 0x20FB, 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440, - 0xC045, 0xC04A, 0x43B1, 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61, - 0xC04D, 0xC04D, 0x269D, 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A, - 0xC050, 0xC050, 0x2456, 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458, - 0xC053, 0xC054, 0x43B8, 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA, - 0xC05B, 0xC05B, 0x221A, 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A, - 0xC05F, 0xC05F, 0x244D, 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1, - 0xC069, 0xC069, 0x2453, 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420, - 0xC06C, 0xC06C, 0x43CA, 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685, - 0xC06F, 0xC06F, 0x43CB, 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC, - 0xC074, 0xC074, 0x2224, 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF, - 0xC077, 0xC077, 0x21BA, 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A, - 0xC07A, 0xC07B, 0x43D1, 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3, - 0xC080, 0xC09A, 0x43D5, 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0, - 0xC09D, 0xC09D, 0x269A, 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C, - 0xC140, 0xC14F, 0x43F4, 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404, - 0xC154, 0xC154, 0x1E2C, 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062, - 0xC160, 0xC160, 0x24F1, 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2, - 0xC163, 0xC174, 0x4412, 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424, - 0xC178, 0xC178, 0x2215, 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C, - 0xC195, 0xC195, 0x21AE, 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA, - 0xC240, 0xC24D, 0x444C, 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A, - 0xC265, 0xC265, 0x25C2, 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1, - 0xC268, 0xC27C, 0x4471, 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486, - 0xC280, 0xC283, 0x4487, 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B, - 0xC293, 0xC293, 0x2017, 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125, - 0xC296, 0xC296, 0x214D, 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4, - 0xC299, 0xC299, 0x209D, 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A, - 0xC29C, 0xC29C, 0x25C3, 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179, - 0xC2A1, 0xC2FE, 0x0A48, 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E, - 0xC343, 0xC343, 0x2155, 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2, - 0xC37C, 0xC37E, 0x44D7, 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7, - 0xC385, 0xC39A, 0x44DE, 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4, - 0xC3A1, 0xC3FE, 0x0AA6, 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123, - 0xC44A, 0xC44B, 0x4502, 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504, - 0xC454, 0xC454, 0x24C9, 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094, - 0xC459, 0xC45A, 0x450E, 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510, - 0xC463, 0xC463, 0x1E77, 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06, - 0xC478, 0xC479, 0x452A, 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C, - 0xC480, 0xC480, 0x4530, 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531, - 0xC491, 0xC491, 0x1EAD, 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8, - 0xC494, 0xC497, 0x4540, 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544, - 0xC49A, 0xC49A, 0x20C5, 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA, - 0xC49D, 0xC4A0, 0x4546, 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A, - 0xC544, 0xC544, 0x1FF0, 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6, - 0xC547, 0xC54A, 0x454F, 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE, - 0xC54D, 0xC551, 0x4553, 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558, - 0xC55F, 0xC55F, 0x2161, 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B, - 0xC564, 0xC564, 0x21D9, 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9, - 0xC567, 0xC57E, 0x4567, 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61, - 0xC594, 0xC59B, 0x4592, 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A, - 0xC59E, 0xC59E, 0x1F98, 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62, - 0xC640, 0xC640, 0x459D, 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E, - 0xC644, 0xC644, 0x1F88, 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8, - 0xC648, 0xC662, 0x45A2, 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD, - 0xC672, 0xC672, 0x2336, 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7, - 0xC6A1, 0xC6FE, 0x0BC0, 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB, - 0xC767, 0xC76E, 0x461E, 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626, - 0xC776, 0xC776, 0x1F7D, 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333, - 0xC77C, 0xC77E, 0x4630, 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E, - 0xC840, 0xC840, 0x4654, 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655, - 0xC84F, 0xC84F, 0x2334, 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1, - 0xC853, 0xC865, 0x4664, 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677, - 0xC86E, 0xC86E, 0x2349, 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B, - 0xC880, 0xC886, 0x468D, 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694, - 0xC892, 0xC892, 0x2347, 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193, - 0xC895, 0xC898, 0x469F, 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3, - 0xC89D, 0xC89D, 0x1F62, 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C, - 0xC940, 0xC94E, 0x46A9, 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348, - 0xC951, 0xC96D, 0x46B8, 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5, - 0xC970, 0xC970, 0x2345, 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12, - 0xC978, 0xC97E, 0x46DC, 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018, - 0xC990, 0xC990, 0x2335, 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C, - 0xC99D, 0xC9A0, 0x46FD, 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701, - 0xCA4E, 0xCA4E, 0x266F, 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351, - 0xCA57, 0xCA58, 0x4716, 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718, - 0xCA5C, 0xCA5C, 0x2338, 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B, - 0xCA62, 0xCA6D, 0x471E, 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A, - 0xCA72, 0xCA72, 0x234F, 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D, - 0xCA78, 0xCA7A, 0x4731, 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331, - 0xCA7D, 0xCA7D, 0x4734, 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735, - 0xCA81, 0xCA81, 0x233B, 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350, - 0xCA8A, 0xCA8D, 0x473D, 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6, - 0xCA90, 0xCA91, 0x4741, 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743, - 0xCA9A, 0xCA9A, 0x2355, 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38, - 0xCB40, 0xCB42, 0x4750, 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753, - 0xCB45, 0xCB45, 0x1F74, 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330, - 0xCB48, 0xCB4A, 0x4755, 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758, - 0xCB4E, 0xCB4E, 0x20DA, 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A, - 0xCB58, 0xCB5C, 0x4762, 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767, - 0xCB5F, 0xCB5F, 0x2107, 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F, - 0xCB6B, 0xCB7A, 0x4772, 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343, - 0xCB7D, 0xCB7E, 0x4782, 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212, - 0xCB88, 0xCB8D, 0x478B, 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791, - 0xCB92, 0xCB92, 0x2359, 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254, - 0xCB9D, 0xCB9D, 0x479D, 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E, - 0xCBA1, 0xCBFE, 0x0D96, 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357, - 0xCC42, 0xCC48, 0x47A0, 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042, - 0xCC4B, 0xCC4B, 0x2153, 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB, - 0xCC50, 0xCC5B, 0x47AA, 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6, - 0xCC60, 0xCC60, 0x2356, 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337, - 0xCC65, 0xCC6C, 0x47BC, 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4, - 0xCC79, 0xCC79, 0x2353, 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061, - 0xCC7E, 0xCC7E, 0x47D2, 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95, - 0xCC8F, 0xCC93, 0x47E1, 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6, - 0xCC96, 0xCC96, 0x1F42, 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8, - 0xCC9E, 0xCCA0, 0x47ED, 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0, - 0xCD80, 0xCD8F, 0x482F, 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F, - 0xCD98, 0xCD98, 0x25D7, 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52, - 0xCE40, 0xCE66, 0x484E, 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875, - 0xCE72, 0xCE72, 0x21B2, 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B, - 0xCE81, 0xCE81, 0x219E, 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC, - 0xCE88, 0xCE9A, 0x4891, 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4, - 0xCE9E, 0xCE9E, 0x2226, 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0, - 0xCF40, 0xCF4D, 0x48A8, 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6, - 0xCF55, 0xCF55, 0x227B, 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE, - 0xCF59, 0xCF5B, 0x48BE, 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1, - 0xCF6C, 0xCF6C, 0x25D5, 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B, - 0xCF74, 0xCF74, 0x48D6, 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7, - 0xCF78, 0xCF78, 0x1E89, 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9, - 0xCF7D, 0xCF7E, 0x48DC, 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211, - 0xCF82, 0xCF88, 0x48DF, 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6, - 0xCF8B, 0xCF92, 0x48E6, 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF, - 0xCF95, 0xCF9D, 0x48EE, 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7, - 0xCFA0, 0xCFA0, 0x25D8, 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8, - 0xD04D, 0xD04D, 0x1F29, 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B, - 0xD052, 0xD054, 0x4908, 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B, - 0xD05C, 0xD05C, 0x2297, 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690, - 0xD061, 0xD066, 0x4914, 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A, - 0xD06C, 0xD06C, 0x2198, 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88, - 0xD06F, 0xD07C, 0x491F, 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D, - 0xD080, 0xD0A0, 0x492E, 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F, - 0xD155, 0xD155, 0x25F1, 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C, - 0xD15A, 0xD160, 0x4967, 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC, - 0xD163, 0xD174, 0x496E, 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980, - 0xD17D, 0xD17D, 0x2676, 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988, - 0xD19D, 0xD19D, 0x1FE1, 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5, - 0xD1A1, 0xD1FE, 0x0FCA, 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7, - 0xD243, 0xD243, 0x22DD, 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD, - 0xD24E, 0xD25B, 0x49B2, 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0, - 0xD263, 0xD263, 0x25BC, 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6, - 0xD268, 0xD268, 0x25BF, 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187, - 0xD26E, 0xD26E, 0x49CD, 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE, - 0xD272, 0xD272, 0x1E7F, 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD, - 0xD276, 0xD27E, 0x49D2, 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96, - 0xD28B, 0xD28D, 0x49E5, 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8, - 0xD292, 0xD292, 0x2084, 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136, - 0xD296, 0xD296, 0x49ED, 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE, - 0xD2A0, 0xD2A0, 0x24BA, 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6, - 0xD344, 0xD344, 0x24BC, 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4, - 0xD349, 0xD349, 0x49FD, 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE, - 0xD34D, 0xD34D, 0x24BD, 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE, - 0xD351, 0xD354, 0x4A02, 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06, - 0xD358, 0xD358, 0x1FD2, 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD, - 0xD35C, 0xD35C, 0x4A0A, 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D, - 0xD35F, 0xD377, 0x4A0B, 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24, - 0xD37A, 0xD37A, 0x260A, 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94, - 0xD37D, 0xD37E, 0x4A26, 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF, - 0xD386, 0xD386, 0x1ECB, 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D, - 0xD38B, 0xD38B, 0x1F77, 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB, - 0xD38E, 0xD38E, 0x4A31, 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32, - 0xD391, 0xD391, 0x216F, 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0, - 0xD394, 0xD395, 0x4A34, 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36, - 0xD398, 0xD398, 0x22E2, 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37, - 0xD39B, 0xD39B, 0x1F78, 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2, - 0xD39F, 0xD39F, 0x4A3A, 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086, - 0xD440, 0xD440, 0x4A3B, 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C, - 0xD445, 0xD445, 0x1FD3, 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5, - 0xD448, 0xD44B, 0x4A40, 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44, - 0xD44F, 0xD44F, 0x211F, 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD, - 0xD454, 0xD455, 0x4A49, 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B, - 0xD458, 0xD458, 0x22E7, 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282, - 0xD45D, 0xD461, 0x4A4F, 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54, - 0xD467, 0xD467, 0x22E8, 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4, - 0xD46F, 0xD46F, 0x4A5E, 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F, - 0xD472, 0xD472, 0x22EB, 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9, - 0xD475, 0xD475, 0x20BD, 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA, - 0xD479, 0xD47A, 0x4A63, 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65, - 0xD47E, 0xD47E, 0x1E9E, 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6, - 0xD483, 0xD483, 0x21E7, 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69, - 0xD487, 0xD487, 0x2137, 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C, - 0xD48B, 0xD48B, 0x4A6D, 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2, - 0xD48E, 0xD48E, 0x1F37, 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E, - 0xD491, 0xD491, 0x22EF, 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10, - 0xD494, 0xD494, 0x21C8, 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1, - 0xD497, 0xD49B, 0x4A70, 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75, - 0xD49F, 0xD49F, 0x22EE, 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4, - 0xD540, 0xD542, 0x4A78, 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E, - 0xD545, 0xD545, 0x22EC, 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B, - 0xD54A, 0xD54A, 0x20FE, 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9, - 0xD550, 0xD550, 0x4A81, 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82, - 0xD554, 0xD554, 0x2236, 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7, - 0xD557, 0xD559, 0x4A85, 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88, - 0xD55C, 0xD55C, 0x1E82, 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89, - 0xD55F, 0xD55F, 0x21A4, 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8, - 0xD562, 0xD562, 0x2151, 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60, - 0xD565, 0xD567, 0x4A8B, 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E, - 0xD56C, 0xD56C, 0x2145, 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC, - 0xD56F, 0xD571, 0x4A92, 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95, - 0xD575, 0xD575, 0x1EF5, 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218, - 0xD579, 0xD57A, 0x4A99, 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B, - 0xD57E, 0xD57E, 0x2300, 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4, - 0xD582, 0xD583, 0x4A9E, 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0, - 0xD586, 0xD586, 0x22FD, 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA, - 0xD589, 0xD589, 0x4AA2, 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3, - 0xD58C, 0xD58C, 0x22FB, 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC, - 0xD58F, 0xD58F, 0x2027, 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060, - 0xD594, 0xD594, 0x22FF, 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE, - 0xD599, 0xD599, 0x1EC7, 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C, - 0xD59C, 0xD59E, 0x4AAC, 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF, - 0xD5A1, 0xD5FE, 0x1142, 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0, - 0xD642, 0xD642, 0x230A, 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1, - 0xD647, 0xD647, 0x2303, 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307, - 0xD64A, 0xD64A, 0x230B, 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F, - 0xD64E, 0xD64E, 0x4AB7, 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8, - 0xD652, 0xD652, 0x2302, 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D, - 0xD655, 0xD655, 0x4ABA, 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB, - 0xD658, 0xD658, 0x2308, 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC, - 0xD65B, 0xD65B, 0x4ABD, 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305, - 0xD65E, 0xD65E, 0x2197, 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171, - 0xD661, 0xD661, 0x2298, 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57, - 0xD666, 0xD668, 0x4AC2, 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5, - 0xD66B, 0xD66B, 0x2311, 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304, - 0xD670, 0xD670, 0x4AC9, 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35, - 0xD673, 0xD673, 0x4ACA, 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310, - 0xD676, 0xD676, 0x1FA3, 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6, - 0xD679, 0xD67B, 0x4ACC, 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF, - 0xD680, 0xD682, 0x4AD1, 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4, - 0xD686, 0xD686, 0x2312, 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313, - 0xD689, 0xD68D, 0x4AD6, 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB, - 0xD694, 0xD694, 0x1FBA, 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078, - 0xD69A, 0xD6A0, 0x4AE4, 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB, - 0xD743, 0xD743, 0x2288, 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316, - 0xD749, 0xD749, 0x1F6B, 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314, - 0xD751, 0xD751, 0x4AF8, 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315, - 0xD754, 0xD754, 0x2168, 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4, - 0xD757, 0xD763, 0x4AFA, 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07, - 0xD767, 0xD767, 0x2219, 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09, - 0xD76C, 0xD76C, 0x20D5, 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A, - 0xD770, 0xD774, 0x4B0E, 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13, - 0xD778, 0xD778, 0x1ED3, 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B, - 0xD783, 0xD783, 0x1E49, 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B, - 0xD788, 0xD78A, 0x4B21, 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8, - 0xD78D, 0xD78D, 0x4B24, 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319, - 0xD790, 0xD794, 0x4B25, 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A, - 0xD797, 0xD797, 0x2317, 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE, - 0xD840, 0xD84C, 0x4B34, 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41, - 0xD853, 0xD853, 0x1EFD, 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71, - 0xD890, 0xD890, 0x1E3B, 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81, - 0xD893, 0xD893, 0x1F0C, 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24, - 0xD896, 0xD899, 0x4B82, 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65, - 0xD89C, 0xD89C, 0x1EF0, 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30, - 0xD89F, 0xD89F, 0x2261, 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257, - 0xD940, 0xD940, 0x4B87, 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB, - 0xD943, 0xD943, 0x4B88, 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8, - 0xD946, 0xD946, 0x1F39, 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48, - 0xD949, 0xD949, 0x2070, 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A, - 0xD94C, 0xD94C, 0x24AC, 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176, - 0xD94F, 0xD94F, 0x24AD, 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B, - 0xD952, 0xD952, 0x1F45, 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B, - 0xD955, 0xD955, 0x202F, 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0, - 0xD958, 0xD958, 0x4B8C, 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F, - 0xD95B, 0xD95B, 0x4B8D, 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E, - 0xD963, 0xD963, 0x24B2, 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51, - 0xD966, 0xD966, 0x4B94, 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95, - 0xD96C, 0xD96C, 0x24B3, 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F, - 0xD96F, 0xD96F, 0x4B9A, 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B, - 0xD972, 0xD972, 0x20B4, 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB, - 0xD975, 0xD975, 0x2072, 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C, - 0xD978, 0xD978, 0x1F0A, 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D, - 0xD97C, 0xD97C, 0x2291, 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278, - 0xD980, 0xD980, 0x1ED4, 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3, - 0xD988, 0xD98C, 0x4BA5, 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7, - 0xD98F, 0xD98F, 0x1F28, 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7, - 0xD992, 0xD996, 0x4BAA, 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1, - 0xD999, 0xD99A, 0x4BAF, 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1, - 0xD99D, 0xD99D, 0x225B, 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2, - 0xD9A0, 0xD9A0, 0x2115, 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3, - 0xDA41, 0xDA41, 0x222A, 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4, - 0xDA48, 0xDA48, 0x213D, 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15, - 0xDA4E, 0xDA4E, 0x225C, 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14, - 0xDA74, 0xDA76, 0x4BE1, 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4, - 0xDA80, 0xDA84, 0x4BEB, 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0, - 0xDA8E, 0xDA8E, 0x25F8, 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313, - 0xDB40, 0xDB5F, 0x4C0A, 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A, - 0xDB78, 0xDB78, 0x2230, 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47, - 0xDB84, 0xDB84, 0x25FD, 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600, - 0xDB8C, 0xDB97, 0x4C51, 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D, - 0xDBA1, 0xDBFE, 0x1371, 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF, - 0xDC46, 0xDC4E, 0x4C6A, 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C, - 0xDC51, 0xDC51, 0x2602, 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D, - 0xDC54, 0xDC54, 0x4C74, 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE, - 0xDC57, 0xDC57, 0x2603, 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601, - 0xDC5E, 0xDC61, 0x4C7A, 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E, - 0xDC66, 0xDC66, 0x1EA3, 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81, - 0xDC6B, 0xDC6B, 0x2607, 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0, - 0xDC7D, 0xDC7E, 0x4C94, 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B, - 0xDC88, 0xDC88, 0x2267, 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6, - 0xDC8B, 0xDC8D, 0x4C9D, 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0, - 0xDC90, 0xDC90, 0x248C, 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D, - 0xDC98, 0xDC9A, 0x4CA7, 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA, - 0xDCA0, 0xDCA0, 0x2494, 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE, - 0xDD46, 0xDD46, 0x2493, 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E, - 0xDD4E, 0xDD52, 0x4CBA, 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491, - 0xDD55, 0xDD55, 0x2496, 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492, - 0xDD58, 0xDD58, 0x4CBF, 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0, - 0xDD5E, 0xDD5E, 0x1FB1, 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A, - 0xDD61, 0xDD61, 0x4CC5, 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6, - 0xDD64, 0xDD64, 0x2258, 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7, - 0xDD6D, 0xDD6D, 0x249B, 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09, - 0xDD70, 0xDD70, 0x20E6, 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026, - 0xDD77, 0xDD77, 0x249F, 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D, - 0xDD7B, 0xDD7E, 0x4CD4, 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B, - 0xDD82, 0xDD82, 0x249C, 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A, - 0xDD86, 0xDD86, 0x205B, 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70, - 0xDD8C, 0xDD8E, 0x4CDF, 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2, - 0xDD94, 0xDD94, 0x213B, 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07, - 0xDD98, 0xDD99, 0x4CE8, 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237, - 0xDD9C, 0xDD9D, 0x4CEA, 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC, - 0xDDA0, 0xDDA0, 0x21B3, 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245, - 0xDE41, 0xDE41, 0x24A1, 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8, - 0xDE45, 0xDE47, 0x4CEF, 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0, - 0xDE4A, 0xDE4E, 0x4CF2, 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7, - 0xDE5A, 0xDE5A, 0x1F46, 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380, - 0xDE5D, 0xDE5D, 0x2495, 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490, - 0xDE60, 0xDE6A, 0x4D03, 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E, - 0xDE6F, 0xDE6F, 0x1E9D, 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A, - 0xDE72, 0xDE72, 0x20AA, 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D, - 0xDE92, 0xDE92, 0x267B, 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2, - 0xDEA0, 0xDEA0, 0x4D3B, 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E, - 0xDF41, 0xDF41, 0x4D3C, 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D, - 0xDF4D, 0xDF4D, 0x1FBB, 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253, - 0xDF5D, 0xDF5D, 0x4D55, 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6, - 0xDF60, 0xDF60, 0x218E, 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC, - 0xDF65, 0xDF65, 0x4D59, 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A, - 0xDF68, 0xDF68, 0x224A, 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133, - 0xDF6E, 0xDF73, 0x4D5F, 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65, - 0xDF77, 0xDF77, 0x20CF, 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67, - 0xDF7A, 0xDF7A, 0x220F, 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029, - 0xDF7D, 0xDF7D, 0x4D69, 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55, - 0xDF81, 0xDF82, 0x4D6A, 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C, - 0xDF85, 0xDF85, 0x1E46, 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063, - 0xDF8A, 0xDF8A, 0x23F3, 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9, - 0xE040, 0xE04F, 0x4D86, 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96, - 0xE05D, 0xE05D, 0x2233, 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320, - 0xE06A, 0xE06B, 0x4DAD, 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF, - 0xE075, 0xE075, 0x22BC, 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C, - 0xE078, 0xE078, 0x4DB8, 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9, - 0xE080, 0xE086, 0x4DBE, 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5, - 0xE08D, 0xE08D, 0x2287, 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D, - 0xE090, 0xE090, 0x1EAB, 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D, - 0xE093, 0xE093, 0x4DCC, 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD, - 0xE097, 0xE097, 0x231B, 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547, - 0xE140, 0xE141, 0x4DD8, 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA, - 0xE164, 0xE164, 0x2255, 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F, - 0xE169, 0xE173, 0x4DFE, 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4, - 0xE176, 0xE17E, 0x4E09, 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B, - 0xE185, 0xE185, 0x21D8, 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA, - 0xE188, 0xE188, 0x4E17, 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18, - 0xE18C, 0xE18C, 0x2134, 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3, - 0xE191, 0xE191, 0x24F8, 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7, - 0xE194, 0xE194, 0x1EC8, 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C, - 0xE198, 0xE198, 0x2280, 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5, - 0xE19F, 0xE19F, 0x24FB, 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5, - 0xE240, 0xE240, 0x4E24, 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25, - 0xE243, 0xE243, 0x1EED, 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD, - 0xE250, 0xE250, 0x4E31, 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32, - 0xE253, 0xE253, 0x24FE, 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33, - 0xE25A, 0xE25A, 0x2508, 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38, - 0xE25E, 0xE25E, 0x2506, 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF, - 0xE263, 0xE263, 0x2090, 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD, - 0xE268, 0xE268, 0x1F25, 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503, - 0xE26B, 0xE26B, 0x2502, 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A, - 0xE26F, 0xE26F, 0x20A6, 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5, - 0xE279, 0xE27C, 0x4E4B, 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F, - 0xE280, 0xE280, 0x2507, 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505, - 0xE283, 0xE288, 0x4E50, 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56, - 0xE28B, 0xE28B, 0x2515, 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C, - 0xE28F, 0xE28F, 0x2031, 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B, - 0xE293, 0xE293, 0x250F, 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509, - 0xE296, 0xE297, 0x4E5B, 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234, - 0xE29A, 0xE29A, 0x2513, 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D, - 0xE2A0, 0xE2A0, 0x2501, 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61, - 0xE342, 0xE342, 0x2517, 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63, - 0xE347, 0xE347, 0x2518, 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56, - 0xE34C, 0xE34E, 0x4E69, 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C, - 0xE351, 0xE351, 0x20D3, 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A, - 0xE355, 0xE355, 0x20CE, 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510, - 0xE359, 0xE35B, 0x4E71, 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74, - 0xE360, 0xE360, 0x250A, 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511, - 0xE368, 0xE370, 0x4E7C, 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85, - 0xE373, 0xE373, 0x251E, 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86, - 0xE378, 0xE378, 0x252D, 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89, - 0xE37C, 0xE37C, 0x2532, 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B, - 0xE380, 0xE389, 0x4E8C, 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96, - 0xE38C, 0xE38C, 0x252C, 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528, - 0xE390, 0xE390, 0x4E99, 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A, - 0xE393, 0xE393, 0x252F, 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC, - 0xE396, 0xE398, 0x4E9C, 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F, - 0xE39C, 0xE39C, 0x2535, 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D, - 0xE39F, 0xE39F, 0x2526, 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661, - 0xE440, 0xE440, 0x2534, 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F, - 0xE443, 0xE443, 0x2531, 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3, - 0xE448, 0xE448, 0x2525, 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD, - 0xE44F, 0xE44F, 0x4EAB, 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC, - 0xE452, 0xE452, 0x2172, 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD, - 0xE458, 0xE458, 0x204F, 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543, - 0xE45B, 0xE45B, 0x4EB2, 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3, - 0xE45E, 0xE45E, 0x1E3C, 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529, - 0xE463, 0xE464, 0x4EB7, 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9, - 0xE468, 0xE468, 0x1EFF, 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F, - 0xE474, 0xE474, 0x4EC5, 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6, - 0xE479, 0xE479, 0x2523, 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A, - 0xE47C, 0xE47C, 0x2545, 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D, - 0xE480, 0xE480, 0x4ECA, 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB, - 0xE484, 0xE484, 0x2103, 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C, - 0xE487, 0xE487, 0x253B, 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD, - 0xE48D, 0xE48D, 0x2540, 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD, - 0xE490, 0xE492, 0x4ED2, 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5, - 0xE498, 0xE498, 0x254B, 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547, - 0xE49E, 0xE49F, 0x254F, 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF, - 0xE540, 0xE545, 0x4EDE, 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4, - 0xE548, 0xE548, 0x2546, 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C, - 0xE54C, 0xE54D, 0x4EE7, 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552, - 0xE550, 0xE550, 0x2530, 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9, - 0xE555, 0xE555, 0x2551, 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC, - 0xE558, 0xE558, 0x20D2, 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8, - 0xE55D, 0xE55D, 0x4EF0, 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1, - 0xE561, 0xE561, 0x21AB, 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D, - 0xE565, 0xE565, 0x1EA5, 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C, - 0xE569, 0xE569, 0x2080, 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D, - 0xE56D, 0xE56D, 0x4EF9, 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA, - 0xE575, 0xE575, 0x254A, 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00, - 0xE578, 0xE578, 0x254E, 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC, - 0xE57C, 0xE57C, 0x2554, 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05, - 0xE581, 0xE581, 0x1F3C, 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5, - 0xE584, 0xE589, 0x4F07, 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D, - 0xE58E, 0xE58E, 0x2268, 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6, - 0xE592, 0xE599, 0x4F12, 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553, - 0xE59C, 0xE59E, 0x4F1A, 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D, - 0xE5A1, 0xE5FE, 0x171D, 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E, - 0xE644, 0xE644, 0x2559, 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97, - 0xE64A, 0xE64A, 0x2555, 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D, - 0xE64F, 0xE651, 0x4F28, 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B, - 0xE656, 0xE656, 0x207C, 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A, - 0xE659, 0xE65A, 0x4F2F, 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31, - 0xE65E, 0xE65E, 0x1E34, 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E, - 0xE66A, 0xE66A, 0x4F3D, 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E, - 0xE675, 0xE675, 0x21A2, 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47, - 0xE679, 0xE679, 0x2563, 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49, - 0xE67C, 0xE67C, 0x252E, 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A, - 0xE680, 0xE680, 0x1F1B, 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283, - 0xE683, 0xE683, 0x4F4C, 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D, - 0xE687, 0xE687, 0x20A0, 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565, - 0xE68A, 0xE68B, 0x4F50, 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52, - 0xE693, 0xE693, 0x2562, 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C, - 0xE698, 0xE69A, 0x4F5B, 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020, - 0xE69D, 0xE69E, 0x4F5E, 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A, - 0xE6A1, 0xE6FE, 0x177B, 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E, - 0xE744, 0xE747, 0x4F63, 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C, - 0xE74A, 0xE74C, 0x4F67, 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B, - 0xE750, 0xE750, 0x1E6F, 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4, - 0xE753, 0xE753, 0x2567, 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B, - 0xE756, 0xE758, 0x4F6C, 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F, - 0xE766, 0xE766, 0x252B, 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571, - 0xE769, 0xE769, 0x4F7C, 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D, - 0xE774, 0xE774, 0x2522, 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533, - 0xE77D, 0xE77E, 0x4F8D, 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A, - 0xE783, 0xE783, 0x4F91, 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573, - 0xE786, 0xE786, 0x256F, 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293, - 0xE78B, 0xE78B, 0x2578, 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570, - 0xE790, 0xE791, 0x4F98, 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A, - 0xE798, 0xE799, 0x2541, 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F, - 0xE7A0, 0xE7A0, 0x201A, 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4, - 0xE843, 0xE843, 0x257A, 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7, - 0xE846, 0xE846, 0x2177, 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B, - 0xE84A, 0xE84A, 0x4FAA, 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB, - 0xE84F, 0xE84F, 0x257B, 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3, - 0xE855, 0xE859, 0x4FB2, 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7, - 0xE85C, 0xE85C, 0x2566, 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93, - 0xE863, 0xE863, 0x4FBD, 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE, - 0xE870, 0xE870, 0x2514, 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D, - 0xE874, 0xE874, 0x4FCB, 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC, - 0xE87C, 0xE87C, 0x2574, 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E, - 0xE881, 0xE881, 0x4FD4, 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5, - 0xE887, 0xE887, 0x209F, 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576, - 0xE88A, 0xE88B, 0x4FDA, 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF, - 0xE88E, 0xE88E, 0x261C, 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC, - 0xE8A1, 0xE8FE, 0x1837, 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75, - 0xE94D, 0xE953, 0x4FF9, 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000, - 0xE956, 0xE956, 0x23BF, 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001, - 0xE95A, 0xE95A, 0x23C0, 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45, - 0xE95E, 0xE95E, 0x5005, 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4, - 0xE961, 0xE961, 0x5006, 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104, - 0xE964, 0xE964, 0x5007, 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008, - 0xE967, 0xE967, 0x1F87, 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009, - 0xE96C, 0xE96C, 0x2269, 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43, - 0xE976, 0xE976, 0x5014, 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679, - 0xE979, 0xE979, 0x1EEB, 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35, - 0xE97D, 0xE97D, 0x208A, 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7, - 0xE981, 0xE981, 0x23C9, 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018, - 0xE987, 0xE987, 0x224F, 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB, - 0xE98C, 0xE98D, 0x501F, 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021, - 0xE990, 0xE990, 0x21F7, 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE, - 0xE993, 0xE993, 0x23CA, 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022, - 0xE998, 0xE998, 0x23D0, 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C, - 0xE99C, 0xE99C, 0x5027, 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028, - 0xE99F, 0xE99F, 0x1FEE, 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895, - 0xEA40, 0xEA40, 0x1FF8, 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3, - 0xEA45, 0xEA47, 0x502C, 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4, - 0xEA4A, 0xEA4A, 0x1E98, 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C, - 0xEA51, 0xEA51, 0x5034, 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035, - 0xEA55, 0xEA55, 0x1E71, 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037, - 0xEA59, 0xEA59, 0x23C5, 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A, - 0xEA81, 0xEA83, 0x505E, 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061, - 0xEA87, 0xEA87, 0x2284, 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C, - 0xEA8F, 0xEA8F, 0x5069, 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D, - 0xEA92, 0xEA95, 0x506A, 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E, - 0xEAA0, 0xEAA0, 0x1ED9, 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077, - 0xEB41, 0xEB41, 0x1FB2, 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252, - 0xEB46, 0xEB47, 0x507B, 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D, - 0xEB53, 0xEB53, 0x2157, 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF, - 0xEB56, 0xEB5A, 0x5088, 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D, - 0xEB5D, 0xEB5D, 0x203D, 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015, - 0xEB61, 0xEB61, 0x5090, 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091, - 0xEB6D, 0xEB6D, 0x2156, 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144, - 0xEB71, 0xEB71, 0x509D, 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257, - 0xEB74, 0xEB77, 0x509E, 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092, - 0xEB7A, 0xEB7E, 0x50A2, 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250, - 0xEB86, 0xEB89, 0x50AC, 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0, - 0xEBA1, 0xEBFE, 0x1951, 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8, - 0xEC47, 0xEC55, 0x50CC, 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB, - 0xEC5A, 0xEC5A, 0x260C, 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E, - 0xEC5D, 0xEC5F, 0x50DF, 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2, - 0xEC6E, 0xEC6E, 0x260B, 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3, - 0xEC77, 0xEC7E, 0x50F6, 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23, - 0xEC97, 0xECA0, 0x5114, 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E, - 0xED46, 0xED46, 0x2695, 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E, - 0xED59, 0xED5D, 0x5135, 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A, - 0xED61, 0xED61, 0x2692, 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F, - 0xED65, 0xED65, 0x513E, 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD, - 0xED68, 0xED6D, 0x513F, 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145, - 0xED74, 0xED74, 0x2465, 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467, - 0xED78, 0xED78, 0x514C, 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D, - 0xED80, 0xED90, 0x5152, 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163, - 0xED93, 0xED93, 0x2209, 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9, - 0xED96, 0xED96, 0x5164, 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146, - 0xED99, 0xED99, 0x25C5, 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165, - 0xED9C, 0xED9C, 0x245E, 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F, - 0xED9F, 0xED9F, 0x5167, 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D, - 0xEE40, 0xEE40, 0x25C7, 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A, - 0xEE43, 0xEE43, 0x1E2F, 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168, - 0xEE48, 0xEE48, 0x20BF, 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B, - 0xEE4D, 0xEE4D, 0x25C9, 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8, - 0xEE53, 0xEE54, 0x5172, 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174, - 0xEE57, 0xEE57, 0x25CB, 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D, - 0xEE5F, 0xEE60, 0x517B, 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D, - 0xEE68, 0xEE68, 0x25CC, 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183, - 0xEE6C, 0xEE6C, 0x20B9, 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181, - 0xEE6F, 0xEE76, 0x5186, 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E, - 0xEE7D, 0xEE7D, 0x2173, 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD, - 0xEE81, 0xEE84, 0x5193, 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6, - 0xEE87, 0xEE89, 0x5197, 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1, - 0xEE8C, 0xEE8C, 0x519A, 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B, - 0xEE90, 0xEE90, 0x2008, 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0, - 0xEE95, 0xEE96, 0x51A0, 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2, - 0xEE99, 0xEE99, 0x1F2A, 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72, - 0xEE9E, 0xEE9E, 0x25D3, 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B, - 0xEF40, 0xEF40, 0x21BE, 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044, - 0xEF43, 0xEF43, 0x51A8, 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3, - 0xEF46, 0xEF4B, 0x51A9, 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF, - 0xEF52, 0xEF53, 0x24CC, 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698, - 0xEF56, 0xEF56, 0x51B5, 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6, - 0xEF5A, 0xEF5A, 0x24CE, 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF, - 0xEF61, 0xEF67, 0x51BD, 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4, - 0xEF6A, 0xEF6A, 0x24D0, 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1, - 0xEF6D, 0xEF76, 0x51C6, 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0, - 0xEF7A, 0xEF7A, 0x239B, 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E, - 0xEF7D, 0xEF7E, 0x51D3, 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D, - 0xEF83, 0xEF84, 0x239F, 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1, - 0xEF87, 0xEF87, 0x51D8, 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9, - 0xEF8B, 0xEF8B, 0x221E, 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2, - 0xEF8E, 0xEF94, 0x51DC, 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36, - 0xEF97, 0xEF97, 0x2135, 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD, - 0xEF9D, 0xEF9D, 0x51E7, 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8, - 0xEFA1, 0xEFFE, 0x1AC9, 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3, - 0xF042, 0xF042, 0x2203, 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7, - 0xF045, 0xF046, 0x51EC, 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097, - 0xF049, 0xF049, 0x1EE4, 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238, - 0xF04F, 0xF050, 0x51F2, 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4, - 0xF054, 0xF054, 0x1F9A, 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3, - 0xF058, 0xF05D, 0x51F8, 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE, - 0xF068, 0xF068, 0x239C, 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6, - 0xF06D, 0xF070, 0x520A, 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E, - 0xF073, 0xF073, 0x2035, 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F, - 0xF078, 0xF078, 0x23A8, 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075, - 0xF07B, 0xF07C, 0x5213, 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB, - 0xF081, 0xF081, 0x1FEB, 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215, - 0xF087, 0xF087, 0x1F6A, 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219, - 0xF08B, 0xF08B, 0x2666, 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667, - 0xF091, 0xF091, 0x521F, 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220, - 0xF096, 0xF096, 0x23AD, 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27, - 0xF140, 0xF151, 0x522D, 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242, - 0xF154, 0xF154, 0x1F02, 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183, - 0xF158, 0xF158, 0x5241, 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9, - 0xF15B, 0xF166, 0x5242, 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E, - 0xF176, 0xF176, 0x22A5, 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA, - 0xF179, 0xF179, 0x525C, 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82, - 0xF17C, 0xF17D, 0x525D, 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404, - 0xF181, 0xF181, 0x525F, 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260, - 0xF184, 0xF184, 0x2184, 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403, - 0xF187, 0xF187, 0x5262, 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B, - 0xF18A, 0xF193, 0x5263, 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D, - 0xF198, 0xF198, 0x2067, 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85, - 0xF240, 0xF244, 0x5278, 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D, - 0xF247, 0xF247, 0x1E83, 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F, - 0xF24C, 0xF252, 0x5281, 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7, - 0xF255, 0xF255, 0x240D, 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412, - 0xF25D, 0xF25E, 0x528E, 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290, - 0xF271, 0xF271, 0x23F0, 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411, - 0xF274, 0xF274, 0x2414, 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170, - 0xF277, 0xF27B, 0x52A3, 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C, - 0xF27E, 0xF27E, 0x2415, 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066, - 0xF286, 0xF286, 0x52AD, 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413, - 0xF289, 0xF289, 0x2410, 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1, - 0xF28D, 0xF290, 0x52AE, 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2, - 0xF294, 0xF294, 0x2409, 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418, - 0xF297, 0xF29B, 0x52B5, 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA, - 0xF29E, 0xF29E, 0x21FC, 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3, - 0xF340, 0xF340, 0x1FC1, 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD, - 0xF345, 0xF345, 0x229C, 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E, - 0xF349, 0xF349, 0x52C2, 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419, - 0xF34C, 0xF34F, 0x52C3, 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7, - 0xF361, 0xF361, 0x1E29, 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661, - 0xF375, 0xF375, 0x52E9, 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174, - 0xF378, 0xF378, 0x2663, 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA, - 0xF380, 0xF38B, 0x52EF, 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB, - 0xF3A0, 0xF3A0, 0x214C, 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E, - 0xF445, 0xF445, 0x267A, 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0, - 0xF451, 0xF456, 0x531D, 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323, - 0xF459, 0xF459, 0x1ED0, 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096, - 0xF45C, 0xF45C, 0x5325, 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326, - 0xF462, 0xF462, 0x23C8, 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E, - 0xF465, 0xF474, 0x532B, 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B, - 0xF47C, 0xF47C, 0x2664, 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239, - 0xF480, 0xF493, 0x5342, 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356, - 0xF499, 0xF499, 0x261F, 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E, - 0xF49D, 0xF4A0, 0x535C, 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360, - 0xF545, 0xF545, 0x2620, 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621, - 0xF548, 0xF551, 0x5366, 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370, - 0xF554, 0xF554, 0x2627, 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625, - 0xF557, 0xF55D, 0x5371, 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378, - 0xF561, 0xF561, 0x262E, 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A, - 0xF56E, 0xF56E, 0x262A, 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385, - 0xF571, 0xF571, 0x2628, 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386, - 0xF580, 0xF584, 0x5392, 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630, - 0xF587, 0xF58B, 0x5397, 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C, - 0xF58E, 0xF58E, 0x200D, 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D, - 0xF599, 0xF599, 0x2645, 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A, - 0xF59C, 0xF59F, 0x53A7, 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD, - 0xF640, 0xF640, 0x53AB, 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC, - 0xF645, 0xF645, 0x263D, 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF, - 0xF648, 0xF648, 0x263E, 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F, - 0xF64C, 0xF64C, 0x1FC0, 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B, - 0xF650, 0xF653, 0x53B3, 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7, - 0xF658, 0xF658, 0x2644, 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639, - 0xF662, 0xF662, 0x53C2, 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3, - 0xF66C, 0xF66C, 0x2647, 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB, - 0xF671, 0xF671, 0x2649, 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648, - 0xF675, 0xF675, 0x53D0, 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108, - 0xF678, 0xF67E, 0x53D1, 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D, - 0xF686, 0xF687, 0x53DD, 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF, - 0xF68A, 0xF68A, 0x2651, 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650, - 0xF68E, 0xF68E, 0x2652, 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F, - 0xF693, 0xF695, 0x53E5, 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E, - 0xF698, 0xF698, 0x2653, 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657, - 0xF69B, 0xF69B, 0x53E9, 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA, - 0xF69E, 0xF69E, 0x2633, 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656, - 0xF6A1, 0xF6FE, 0x1D5B, 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654, - 0xF743, 0xF748, 0x53EE, 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4, - 0xF74C, 0xF74C, 0x2655, 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6, - 0xF756, 0xF756, 0x265B, 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A, - 0xF759, 0xF759, 0x53FF, 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E, - 0xF75C, 0xF75C, 0x262F, 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646, - 0xF762, 0xF762, 0x5404, 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405, - 0xF76B, 0xF76B, 0x265C, 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C, - 0xF772, 0xF77B, 0x5411, 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B, - 0xF77E, 0xF77E, 0x2631, 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9, - 0xF840, 0xF841, 0x543D, 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F, - 0xF846, 0xF846, 0x2580, 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC, - 0xF84A, 0xF84F, 0x5444, 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B, - 0xF852, 0xF852, 0x544A, 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B, - 0xF863, 0xF863, 0x2583, 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A, - 0xF866, 0xF866, 0x21EE, 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182, - 0xF873, 0xF877, 0x5466, 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B, - 0xF87A, 0xF87A, 0x2587, 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588, - 0xF87D, 0xF87E, 0x546D, 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584, - 0xF882, 0xF883, 0x5470, 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472, - 0xF886, 0xF886, 0x21EF, 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A, - 0xF88E, 0xF88E, 0x258C, 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47, - 0xF89A, 0xF89C, 0x5483, 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486, - 0xF8A0, 0xF8A0, 0x258D, 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0, - 0xF94F, 0xF94F, 0x2592, 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496, - 0xF959, 0xF959, 0x2594, 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E, - 0xF95D, 0xF95D, 0x2591, 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0, - 0xF967, 0xF967, 0x2597, 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6, - 0xF96A, 0xF96B, 0x54A9, 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB, - 0xF96F, 0xF96F, 0x20F6, 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC, - 0xF985, 0xF985, 0x2585, 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599, - 0xF988, 0xF990, 0x54C2, 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB, - 0xF996, 0xF996, 0x259A, 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B, - 0xF999, 0xF9A0, 0x54D0, 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D, - 0xFA43, 0xFA45, 0x54DA, 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD, - 0xFA4C, 0xFA4C, 0x234C, 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44, - 0xFA52, 0xFA57, 0x54E6, 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0, - 0xFA5A, 0xFA5C, 0x54EC, 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF, - 0xFA5F, 0xFA5F, 0x259F, 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C, - 0xFA62, 0xFA6F, 0x54F1, 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF, - 0xFA74, 0xFA74, 0x20AE, 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B, - 0xFA77, 0xFA77, 0x25A3, 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A, - 0xFA83, 0xFA83, 0x2589, 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D, - 0xFA8D, 0xFA8D, 0x25A4, 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6, - 0xFA91, 0xFA91, 0x2593, 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7, - 0xFA97, 0xFA97, 0x2222, 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B, - 0xFB40, 0xFB48, 0x5523, 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C, - 0xFB52, 0xFB52, 0x2586, 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1, - 0xFB58, 0xFB58, 0x25AA, 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590, - 0xFB5B, 0xFB5B, 0x258E, 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688, - 0xFB76, 0xFB78, 0x5552, 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB, - 0xFB7B, 0xFB7B, 0x5555, 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4, - 0xFB7E, 0xFB7E, 0x5556, 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F, - 0xFB91, 0xFB9B, 0x5567, 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572, - 0xFB9F, 0xFB9F, 0x25F7, 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575, - 0xFC44, 0xFC44, 0x2696, 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F, - 0xFC4A, 0xFC59, 0x557D, 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D, - 0xFC63, 0xFC63, 0x1EC1, 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3, - 0xFC69, 0xFC6E, 0x5599, 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F, - 0xFC71, 0xFC71, 0x268A, 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669, - 0xFC75, 0xFC76, 0x55A2, 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4, - 0xFC80, 0xFC82, 0x55AA, 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD, - 0xFC8A, 0xFC8A, 0x2673, 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9, - 0xFD52, 0xFD52, 0x20C6, 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB, - 0xFD57, 0xFD57, 0x24D3, 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE, - 0xFD5A, 0xFD5A, 0x260F, 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611, - 0xFD60, 0xFD61, 0x55E3, 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5, - 0xFD65, 0xFD65, 0x2610, 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030, - 0xFD68, 0xFD68, 0x55E7, 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8, - 0xFD6C, 0xFD6C, 0x2614, 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616, - 0xFD71, 0xFD71, 0x55ED, 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE, - 0xFD78, 0xFD78, 0x20F2, 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617, - 0xFD7E, 0xFD7E, 0x55F7, 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037, - 0xFD89, 0xFD8A, 0x5600, 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602, - 0xFD8F, 0xFD8F, 0x1F22, 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605, - 0xFD94, 0xFD94, 0x1F34, 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02, - 0xFD9E, 0xFD9E, 0x40D3, 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083, - 0xFE40, 0xFE40, 0x1259, 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E, -}; - -const FX_WORD g_FXCMAP_GBK2K_H_5_DWord[1017 * 4] = { - 0x8130, 0x8436, 0x8436, 0x5752, 0x8138, 0xFD38, 0xFD39, 0x579C, 0x8138, - 0xFE30, 0xFE39, 0x579E, 0x8139, 0x8130, 0x8137, 0x57A8, 0x8139, 0x8139, - 0x8139, 0x57B0, 0x8139, 0x8230, 0x8239, 0x57B1, 0x8139, 0x8330, 0x8339, - 0x57BB, 0x8139, 0x8430, 0x8439, 0x57C5, 0x8139, 0x8530, 0x8539, 0x57CF, - 0x8139, 0x8630, 0x8639, 0x57D9, 0x8139, 0x8730, 0x8739, 0x57E3, 0x8139, - 0x8830, 0x8839, 0x57ED, 0x8139, 0x8930, 0x8939, 0x57F7, 0x8139, 0x8B32, - 0x8B32, 0x1042, 0x8139, 0x8B33, 0x8B33, 0x1263, 0x8139, 0x8B34, 0x8B34, - 0x1272, 0x8139, 0x8B35, 0x8B35, 0x1265, 0x8139, 0x8B36, 0x8B36, 0x1059, - 0x8139, 0x8B37, 0x8B37, 0x2793, 0x8139, 0x8B38, 0x8B38, 0x063D, 0x8139, - 0x8B39, 0x8B39, 0x1303, 0x8139, 0x8C30, 0x8C30, 0x0CA6, 0x8139, 0x8C31, - 0x8C31, 0x0638, 0x8139, 0x8C32, 0x8C32, 0x0CC6, 0x8139, 0x8C33, 0x8C33, - 0x03D6, 0x8139, 0x8C34, 0x8C34, 0x129D, 0x8139, 0x8C35, 0x8C35, 0x1314, - 0x8139, 0x8C36, 0x8C36, 0x130F, 0x8139, 0x8C37, 0x8C37, 0x082B, 0x8139, - 0x8C38, 0x8C38, 0x1399, 0x8139, 0x8C39, 0x8C39, 0x0597, 0x8139, 0x8D30, - 0x8D30, 0x09EF, 0x8139, 0x8D31, 0x8D31, 0x12FC, 0x8139, 0x8D32, 0x8D32, - 0x1266, 0x8139, 0x8D33, 0x8D33, 0x1284, 0x8139, 0x8D34, 0x8D34, 0x2A1A, - 0x8139, 0x8D35, 0x8D35, 0x0D45, 0x8139, 0x8D36, 0x8D36, 0x047E, 0x8139, - 0x8D37, 0x8D37, 0x1352, 0x8139, 0x8D38, 0x8D38, 0x04CC, 0x8139, 0x8D39, - 0x8D39, 0x139C, 0x8139, 0x8E30, 0x8E30, 0x10BB, 0x8139, 0x8E31, 0x8E31, - 0x0967, 0x8139, 0x8E32, 0x8E32, 0x1593, 0x8139, 0x8E33, 0x8E33, 0x0E72, - 0x8139, 0x8E34, 0x8E34, 0x0D56, 0x8139, 0x8E35, 0x8E35, 0x161C, 0x8139, - 0x8E36, 0x8E36, 0x2D2D, 0x8139, 0x8E37, 0x8E37, 0x0F13, 0x8139, 0x8E38, - 0x8E38, 0x0576, 0x8139, 0x8E39, 0x8E39, 0x0B6F, 0x8139, 0x8F30, 0x8F30, - 0x1230, 0x8139, 0x8F31, 0x8F31, 0x172E, 0x8139, 0x8F32, 0x8F32, 0x056A, - 0x8139, 0x8F33, 0x8F33, 0x0F6C, 0x8139, 0x8F34, 0x8F34, 0x14B6, 0x8139, - 0x8F35, 0x8F35, 0x0D43, 0x8139, 0x8F36, 0x8F36, 0x1774, 0x8139, 0x8F37, - 0x8F37, 0x0CF6, 0x8139, 0x8F38, 0x8F38, 0x1815, 0x8139, 0x8F39, 0x8F39, - 0x06FD, 0x8139, 0x9030, 0x9030, 0x082D, 0x8139, 0x9031, 0x9031, 0x08BE, - 0x8139, 0x9032, 0x9032, 0x06C4, 0x8139, 0x9033, 0x9033, 0x1813, 0x8139, - 0x9034, 0x9034, 0x073C, 0x8139, 0x9035, 0x9035, 0x1398, 0x8139, 0x9036, - 0x9036, 0x14AD, 0x8139, 0x9037, 0x9037, 0x14F6, 0x8139, 0x9038, 0x9038, - 0x0706, 0x8139, 0x9039, 0x9039, 0x1762, 0x8139, 0x9130, 0x9130, 0x15EE, - 0x8139, 0x9131, 0x9131, 0x15E0, 0x8139, 0x9132, 0x9132, 0x0F8F, 0x8139, - 0x9133, 0x9133, 0x06E5, 0x8139, 0x9134, 0x9134, 0x3292, 0x8139, 0x9135, - 0x9135, 0x0D6D, 0x8139, 0x9136, 0x9136, 0x11A6, 0x8139, 0x9137, 0x9137, - 0x1909, 0x8139, 0x9138, 0x9138, 0x0ED3, 0x8139, 0x9139, 0x9139, 0x05F6, - 0x8139, 0x9230, 0x9230, 0x08C0, 0x8139, 0x9231, 0x9231, 0x065A, 0x8139, - 0x9232, 0x9232, 0x0EED, 0x8139, 0x9233, 0x9233, 0x0CB0, 0x8139, 0x9234, - 0x9234, 0x10FE, 0x8139, 0x9235, 0x9235, 0x1105, 0x8139, 0x9236, 0x9236, - 0x0B21, 0x8139, 0x9237, 0x9237, 0x0C34, 0x8139, 0x9238, 0x9238, 0x11B8, - 0x8139, 0x9239, 0x9239, 0x0578, 0x8139, 0x9330, 0x9330, 0x19BD, 0x8139, - 0x9331, 0x9331, 0x0EF2, 0x8139, 0x9332, 0x9332, 0x0431, 0x8139, 0x9333, - 0x9333, 0x0AB0, 0x8139, 0x9334, 0x9334, 0x0D66, 0x8139, 0x9335, 0x9335, - 0x0C17, 0x8139, 0x9336, 0x9336, 0x0DA3, 0x8139, 0x9337, 0x9337, 0x0805, - 0x8139, 0x9338, 0x9338, 0x1203, 0x8139, 0x9339, 0x9339, 0x06B3, 0x8139, - 0x9430, 0x9430, 0x1269, 0x8139, 0x9431, 0x9431, 0x169D, 0x8139, 0x9432, - 0x9432, 0x0BCB, 0x8139, 0x9433, 0x9433, 0x0FE9, 0x8139, 0x9434, 0x9434, - 0x0B64, 0x8139, 0x9435, 0x9435, 0x0C89, 0x8139, 0x9436, 0x9436, 0x0FC9, - 0x8139, 0x9437, 0x9437, 0x10D6, 0x8139, 0x9438, 0x9438, 0x0728, 0x8139, - 0x9439, 0x9439, 0x0E90, 0x8139, 0x9530, 0x9530, 0x06C5, 0x8139, 0x9531, - 0x9531, 0x0D33, 0x8139, 0x9532, 0x9532, 0x10A8, 0x8139, 0x9533, 0x9533, - 0x0E42, 0x8139, 0x9534, 0x9534, 0x1BC6, 0x8139, 0x9535, 0x9535, 0x1B60, - 0x8139, 0x9536, 0x9536, 0x3EBF, 0x8139, 0x9537, 0x9537, 0x03E2, 0x8139, - 0x9538, 0x9538, 0x0BC3, 0x8139, 0x9539, 0x9539, 0x0AF8, 0x8139, 0x9630, - 0x9630, 0x0B22, 0x8139, 0x9631, 0x9631, 0x0AB1, 0x8139, 0x9632, 0x9632, - 0x0D4F, 0x8139, 0x9633, 0x9633, 0x0D46, 0x8139, 0x9634, 0x9634, 0x0D55, - 0x8139, 0x9635, 0x9635, 0x40CB, 0x8139, 0x9636, 0x9636, 0x0783, 0x8139, - 0x9637, 0x9637, 0x0FD1, 0x8139, 0x9638, 0x9638, 0x09EB, 0x8139, 0x9639, - 0x9639, 0x11F0, 0x8139, 0x9730, 0x9730, 0x0ADC, 0x8139, 0x9731, 0x9731, - 0x1CE7, 0x8139, 0x9732, 0x9732, 0x1C5E, 0x8139, 0x9733, 0x9733, 0x0EA9, - 0x8139, 0x9734, 0x9734, 0x101B, 0x8139, 0x9735, 0x9735, 0x10D5, 0x8139, - 0x9736, 0x9736, 0x09BA, 0x8139, 0x9737, 0x9737, 0x0637, 0x8139, 0x9738, - 0x9738, 0x1BCB, 0x8139, 0x9739, 0x9739, 0x0639, 0x8139, 0x9830, 0x9830, - 0x1A1E, 0x8139, 0x9831, 0x9831, 0x0CBD, 0x8139, 0x9832, 0x9832, 0x04E1, - 0x8139, 0x9833, 0x9833, 0x1231, 0x8139, 0x9834, 0x9834, 0x11C0, 0x8139, - 0x9835, 0x9835, 0x08F9, 0x8139, 0x9836, 0x9836, 0x0D19, 0x8139, 0x9837, - 0x9837, 0x1618, 0x8139, 0x9838, 0x9838, 0x11DA, 0x8139, 0x9839, 0x9839, - 0x1CDC, 0x8139, 0x9930, 0x9930, 0x0CE4, 0x8139, 0x9931, 0x9931, 0x45A2, - 0x8139, 0x9932, 0x9932, 0x1BF0, 0x8139, 0x9933, 0x9933, 0x050B, 0x8139, - 0x9934, 0x9934, 0x0FD3, 0x8139, 0x9935, 0x9935, 0x0F9B, 0x8139, 0x9936, - 0x9936, 0x1049, 0x8139, 0x9937, 0x9937, 0x49DC, 0x8139, 0x9938, 0x9938, - 0x1F96, 0x8139, 0x9939, 0x9939, 0x0898, 0x8139, 0x9A30, 0x9A30, 0x0FFD, - 0x8139, 0x9A31, 0x9A31, 0x0721, 0x8139, 0x9A32, 0x9A32, 0x05F8, 0x8139, - 0x9A33, 0x9A33, 0x1D15, 0x8139, 0x9A34, 0x9A34, 0x1D50, 0x8139, 0x9A35, - 0x9A35, 0x1E3B, 0x8139, 0x9A36, 0x9A36, 0x0505, 0x8139, 0x9A37, 0x9A37, - 0x123C, 0x8139, 0x9A38, 0x9A38, 0x1240, 0x8139, 0x9A39, 0x9A39, 0x0D26, - 0x8139, 0x9B30, 0x9B30, 0x1E7B, 0x8139, 0x9B31, 0x9B31, 0x0F8C, 0x8139, - 0x9B32, 0x9B32, 0x04E2, 0x8139, 0x9B33, 0x9B33, 0x4D13, 0x8139, 0x9B34, - 0x9B34, 0x105F, 0x8139, 0x9B35, 0x9B35, 0x10B4, 0x8139, 0x9B36, 0x9B36, - 0x4E18, 0x8139, 0x9B37, 0x9B37, 0x09DA, 0x8139, 0x9B38, 0x9B38, 0x08C1, - 0x8139, 0x9B39, 0x9B39, 0x1E75, 0x8139, 0x9C30, 0x9C30, 0x207D, 0x8139, - 0x9C31, 0x9C31, 0x06B2, 0x8139, 0x9C32, 0x9C32, 0x09EE, 0x8139, 0x9C33, - 0x9C33, 0x1D79, 0x8139, 0x9C34, 0x9C34, 0x10CF, 0x8139, 0x9C35, 0x9C35, - 0x50EA, 0x8139, 0x9C36, 0x9C36, 0x0664, 0x8139, 0x9C37, 0x9C37, 0x0AEB, - 0x8139, 0x9C38, 0x9C38, 0x06EA, 0x8139, 0x9C39, 0x9C39, 0x218D, 0x8139, - 0x9D30, 0x9D30, 0x08F1, 0x8139, 0x9D31, 0x9D31, 0x107B, 0x8139, 0x9D32, - 0x9D32, 0x2209, 0x8139, 0x9D33, 0x9D33, 0x1F00, 0x8139, 0x9D34, 0x9D34, - 0x1EF4, 0x8139, 0x9D35, 0x9D35, 0x0D4A, 0x8139, 0x9D36, 0x9D36, 0x0D6E, - 0x8139, 0x9D37, 0x9D37, 0x0F50, 0x8139, 0x9D38, 0x9D38, 0x206D, 0x8139, - 0x9D39, 0x9D39, 0x0720, 0x8139, 0x9E30, 0x9E30, 0x06DA, 0x8139, 0x9E31, - 0x9E31, 0x1DEC, 0x8139, 0x9E32, 0x9E32, 0x1ED0, 0x8139, 0x9E33, 0x9E33, - 0x139B, 0x8139, 0x9E34, 0x9E34, 0x1260, 0x8139, 0x9E35, 0x9E35, 0x0746, - 0x8139, 0x9E36, 0x9E36, 0x2239, 0x8139, 0x9E37, 0x9E37, 0x209C, 0x8139, - 0x9E38, 0x9E38, 0x2688, 0x8139, 0x9E39, 0x9E39, 0x0A60, 0x8139, 0x9F30, - 0x9F30, 0x2071, 0x8139, 0x9F31, 0x9F31, 0x0A90, 0x8139, 0x9F32, 0x9F32, - 0x5586, 0x8139, 0x9F33, 0x9F33, 0x0D89, 0x8139, 0x9F34, 0x9F34, 0x0791, - 0x8139, 0x9F35, 0x9F35, 0x1A55, 0x8139, 0x9F36, 0x9F36, 0x2618, 0x8139, - 0x9F37, 0x9F37, 0x05E5, 0x8139, 0x9F38, 0x9F38, 0x071D, 0x8139, 0x9F39, - 0x9F39, 0x0D8A, 0x8139, 0xA030, 0xA030, 0x0430, 0x8139, 0xA031, 0xA031, - 0x20C6, 0x8139, 0xA032, 0xA032, 0x1E86, 0x8139, 0xA033, 0xA033, 0x2037, - 0x8139, 0xA034, 0xA034, 0x1F34, 0x8139, 0xA035, 0xA035, 0x12F3, 0x8139, - 0xA533, 0xA535, 0x577B, 0x8139, 0xA538, 0xA539, 0x577E, 0x8139, 0xA630, - 0xA630, 0x5780, 0x8139, 0xA634, 0xA634, 0x5755, 0x8139, 0xA636, 0xA636, - 0x5767, 0x8139, 0xA735, 0xA735, 0x5776, 0x8139, 0xA736, 0xA736, 0x5778, - 0x8139, 0xA737, 0xA737, 0x5777, 0x8139, 0xA738, 0xA738, 0x5779, 0x8139, - 0xA836, 0xA838, 0x5781, 0x8139, 0xB434, 0xB439, 0x5784, 0x8139, 0xB530, - 0xB539, 0x578A, 0x8139, 0xB630, 0xB637, 0x5794, 0x8139, 0xEE39, 0xEE39, - 0x5801, 0x8139, 0xEF30, 0xEF39, 0x5802, 0x8139, 0xF030, 0xF039, 0x580C, - 0x8139, 0xF130, 0xF139, 0x5816, 0x8139, 0xF230, 0xF239, 0x5820, 0x8139, - 0xF330, 0xF339, 0x582A, 0x8139, 0xF430, 0xF439, 0x5834, 0x8139, 0xF530, - 0xF539, 0x583E, 0x8139, 0xF630, 0xF639, 0x5848, 0x8139, 0xF730, 0xF739, - 0x5852, 0x8139, 0xF830, 0xF839, 0x585C, 0x8139, 0xF930, 0xF939, 0x5866, - 0x8139, 0xFA30, 0xFA39, 0x5870, 0x8139, 0xFB30, 0xFB39, 0x587A, 0x8139, - 0xFC30, 0xFC39, 0x5884, 0x8139, 0xFD30, 0xFD39, 0x588E, 0x8139, 0xFE30, - 0xFE39, 0x5898, 0x8230, 0x8130, 0x8139, 0x58A2, 0x8230, 0x8230, 0x8239, - 0x58AC, 0x8230, 0x8330, 0x8339, 0x58B6, 0x8230, 0x8430, 0x8439, 0x58C0, - 0x8230, 0x8530, 0x8539, 0x58CA, 0x8230, 0x8630, 0x8639, 0x58D4, 0x8230, - 0x8730, 0x8739, 0x58DE, 0x8230, 0x8830, 0x8839, 0x58E8, 0x8230, 0x8930, - 0x8939, 0x58F2, 0x8230, 0x8A30, 0x8A39, 0x58FC, 0x8230, 0x8B30, 0x8B39, - 0x5906, 0x8230, 0x8C30, 0x8C39, 0x5910, 0x8230, 0x8D30, 0x8D39, 0x591A, - 0x8230, 0x8E30, 0x8E39, 0x5924, 0x8230, 0x8F30, 0x8F39, 0x592E, 0x8230, - 0x9030, 0x9039, 0x5938, 0x8230, 0x9130, 0x9139, 0x5942, 0x8230, 0x9230, - 0x9239, 0x594C, 0x8230, 0x9330, 0x9339, 0x5956, 0x8230, 0x9430, 0x9439, - 0x5960, 0x8230, 0x9530, 0x9539, 0x596A, 0x8230, 0x9630, 0x9639, 0x5974, - 0x8230, 0x9730, 0x9739, 0x597E, 0x8230, 0x9830, 0x9839, 0x5988, 0x8230, - 0x9930, 0x9939, 0x5992, 0x8230, 0x9A30, 0x9A39, 0x599C, 0x8230, 0x9B30, - 0x9B39, 0x59A6, 0x8230, 0x9C30, 0x9C39, 0x59B0, 0x8230, 0x9D30, 0x9D39, - 0x59BA, 0x8230, 0x9E30, 0x9E39, 0x59C4, 0x8230, 0x9F30, 0x9F39, 0x59CE, - 0x8230, 0xA030, 0xA039, 0x59D8, 0x8230, 0xA130, 0xA139, 0x59E2, 0x8230, - 0xA230, 0xA239, 0x59EC, 0x8230, 0xA330, 0xA339, 0x59F6, 0x8230, 0xA430, - 0xA439, 0x5A00, 0x8230, 0xA530, 0xA539, 0x5A0A, 0x8230, 0xA630, 0xA639, - 0x5A14, 0x8230, 0xA730, 0xA739, 0x5A1E, 0x8230, 0xA830, 0xA839, 0x5A28, - 0x8230, 0xA930, 0xA939, 0x5A32, 0x8230, 0xAA30, 0xAA39, 0x5A3C, 0x8230, - 0xAB30, 0xAB39, 0x5A46, 0x8230, 0xAC30, 0xAC39, 0x5A50, 0x8230, 0xAD30, - 0xAD39, 0x5A5A, 0x8230, 0xAE30, 0xAE39, 0x5A64, 0x8230, 0xAF30, 0xAF39, - 0x5A6E, 0x8230, 0xB030, 0xB039, 0x5A78, 0x8230, 0xB130, 0xB139, 0x5A82, - 0x8230, 0xB230, 0xB239, 0x5A8C, 0x8230, 0xB330, 0xB339, 0x5A96, 0x8230, - 0xB430, 0xB439, 0x5AA0, 0x8230, 0xB530, 0xB539, 0x5AAA, 0x8230, 0xB630, - 0xB639, 0x5AB4, 0x8230, 0xB730, 0xB739, 0x5ABE, 0x8230, 0xB830, 0xB839, - 0x5AC8, 0x8230, 0xB930, 0xB939, 0x5AD2, 0x8230, 0xBA30, 0xBA39, 0x5ADC, - 0x8230, 0xBB30, 0xBB39, 0x5AE6, 0x8230, 0xBC30, 0xBC39, 0x5AF0, 0x8230, - 0xBD30, 0xBD39, 0x5AFA, 0x8230, 0xBE30, 0xBE39, 0x5B04, 0x8230, 0xBF30, - 0xBF39, 0x5B0E, 0x8230, 0xC030, 0xC039, 0x5B18, 0x8230, 0xC130, 0xC139, - 0x5B22, 0x8230, 0xC230, 0xC239, 0x5B2C, 0x8230, 0xC330, 0xC339, 0x5B36, - 0x8230, 0xC430, 0xC439, 0x5B40, 0x8230, 0xC530, 0xC539, 0x5B4A, 0x8230, - 0xC630, 0xC639, 0x5B54, 0x8230, 0xC730, 0xC739, 0x5B5E, 0x8230, 0xC830, - 0xC839, 0x5B68, 0x8230, 0xC930, 0xC939, 0x5B72, 0x8230, 0xCA30, 0xCA39, - 0x5B7C, 0x8230, 0xCB30, 0xCB39, 0x5B86, 0x8230, 0xCC30, 0xCC39, 0x5B90, - 0x8230, 0xCD30, 0xCD39, 0x5B9A, 0x8230, 0xCE30, 0xCE39, 0x5BA4, 0x8230, - 0xCF30, 0xCF39, 0x5BAE, 0x8230, 0xD030, 0xD039, 0x5BB8, 0x8230, 0xD130, - 0xD139, 0x5BC2, 0x8230, 0xD230, 0xD239, 0x5BCC, 0x8230, 0xD330, 0xD339, - 0x5BD6, 0x8230, 0xD430, 0xD439, 0x5BE0, 0x8230, 0xD530, 0xD539, 0x5BEA, - 0x8230, 0xD630, 0xD639, 0x5BF4, 0x8230, 0xD730, 0xD739, 0x5BFE, 0x8230, - 0xD830, 0xD839, 0x5C08, 0x8230, 0xD930, 0xD939, 0x5C12, 0x8230, 0xDA30, - 0xDA39, 0x5C1C, 0x8230, 0xDB30, 0xDB39, 0x5C26, 0x8230, 0xDC30, 0xDC39, - 0x5C30, 0x8230, 0xDD30, 0xDD39, 0x5C3A, 0x8230, 0xDE30, 0xDE39, 0x5C44, - 0x8230, 0xDF30, 0xDF39, 0x5C4E, 0x8230, 0xE030, 0xE039, 0x5C58, 0x8230, - 0xE130, 0xE139, 0x5C62, 0x8230, 0xE230, 0xE239, 0x5C6C, 0x8230, 0xE330, - 0xE339, 0x5C76, 0x8230, 0xE430, 0xE439, 0x5C80, 0x8230, 0xE530, 0xE539, - 0x5C8A, 0x8230, 0xE630, 0xE639, 0x5C94, 0x8230, 0xE730, 0xE739, 0x5C9E, - 0x8230, 0xE830, 0xE839, 0x5CA8, 0x8230, 0xE930, 0xE939, 0x5CB2, 0x8230, - 0xEA30, 0xEA39, 0x5CBC, 0x8230, 0xEB30, 0xEB39, 0x5CC6, 0x8230, 0xEC30, - 0xEC39, 0x5CD0, 0x8230, 0xED30, 0xED39, 0x5CDA, 0x8230, 0xEE30, 0xEE39, - 0x5CE4, 0x8230, 0xEF30, 0xEF39, 0x5CEE, 0x8230, 0xF030, 0xF039, 0x5CF8, - 0x8230, 0xF130, 0xF139, 0x5D02, 0x8230, 0xF230, 0xF239, 0x5D0C, 0x8230, - 0xF330, 0xF339, 0x5D16, 0x8230, 0xF430, 0xF439, 0x5D20, 0x8230, 0xF530, - 0xF539, 0x5D2A, 0x8230, 0xF630, 0xF639, 0x5D34, 0x8230, 0xF730, 0xF739, - 0x5D3E, 0x8230, 0xF830, 0xF839, 0x5D48, 0x8230, 0xF930, 0xF939, 0x5D52, - 0x8230, 0xFA30, 0xFA39, 0x5D5C, 0x8230, 0xFB30, 0xFB39, 0x5D66, 0x8230, - 0xFC30, 0xFC39, 0x5D70, 0x8230, 0xFD30, 0xFD39, 0x5D7A, 0x8230, 0xFE30, - 0xFE39, 0x5D84, 0x8231, 0x8130, 0x8139, 0x5D8E, 0x8231, 0x8230, 0x8239, - 0x5D98, 0x8231, 0x8330, 0x8339, 0x5DA2, 0x8231, 0x8430, 0x8439, 0x5DAC, - 0x8231, 0x8530, 0x8539, 0x5DB6, 0x8231, 0x8630, 0x8639, 0x5DC0, 0x8231, - 0x8730, 0x8739, 0x5DCA, 0x8231, 0x8830, 0x8839, 0x5DD4, 0x8231, 0x8930, - 0x8939, 0x5DDE, 0x8231, 0x8A30, 0x8A39, 0x5DE8, 0x8231, 0x8B30, 0x8B39, - 0x5DF2, 0x8231, 0x8C30, 0x8C39, 0x5DFC, 0x8231, 0x8D30, 0x8D39, 0x5E06, - 0x8231, 0x8E30, 0x8E39, 0x5E10, 0x8231, 0x8F30, 0x8F39, 0x5E1A, 0x8231, - 0x9030, 0x9039, 0x5E24, 0x8231, 0x9130, 0x9139, 0x5E2E, 0x8231, 0x9230, - 0x9239, 0x5E38, 0x8231, 0x9330, 0x9339, 0x5E42, 0x8231, 0x9430, 0x9439, - 0x5E4C, 0x8231, 0x9530, 0x9539, 0x5E56, 0x8231, 0x9630, 0x9639, 0x5E60, - 0x8231, 0x9730, 0x9739, 0x5E6A, 0x8231, 0x9830, 0x9839, 0x5E74, 0x8231, - 0x9930, 0x9939, 0x5E7E, 0x8231, 0x9A30, 0x9A39, 0x5E88, 0x8231, 0x9B30, - 0x9B39, 0x5E92, 0x8231, 0x9C30, 0x9C39, 0x5E9C, 0x8231, 0x9D30, 0x9D39, - 0x5EA6, 0x8231, 0x9E30, 0x9E39, 0x5EB0, 0x8231, 0x9F30, 0x9F39, 0x5EBA, - 0x8231, 0xA030, 0xA039, 0x5EC4, 0x8231, 0xA130, 0xA139, 0x5ECE, 0x8231, - 0xA230, 0xA239, 0x5ED8, 0x8231, 0xA330, 0xA339, 0x5EE2, 0x8231, 0xA430, - 0xA439, 0x5EEC, 0x8231, 0xA530, 0xA539, 0x5EF6, 0x8231, 0xA630, 0xA639, - 0x5F00, 0x8231, 0xA730, 0xA739, 0x5F0A, 0x8231, 0xA830, 0xA839, 0x5F14, - 0x8231, 0xA930, 0xA939, 0x5F1E, 0x8231, 0xAA30, 0xAA39, 0x5F28, 0x8231, - 0xAB30, 0xAB39, 0x5F32, 0x8231, 0xAC30, 0xAC39, 0x5F3C, 0x8231, 0xAD30, - 0xAD39, 0x5F46, 0x8231, 0xAE30, 0xAE39, 0x5F50, 0x8231, 0xAF30, 0xAF39, - 0x5F5A, 0x8231, 0xB030, 0xB039, 0x5F64, 0x8231, 0xB130, 0xB139, 0x5F6E, - 0x8231, 0xB230, 0xB239, 0x5F78, 0x8231, 0xB330, 0xB339, 0x5F82, 0x8231, - 0xB430, 0xB439, 0x5F8C, 0x8231, 0xB530, 0xB539, 0x5F96, 0x8231, 0xB630, - 0xB639, 0x5FA0, 0x8231, 0xB730, 0xB739, 0x5FAA, 0x8231, 0xB830, 0xB839, - 0x5FB4, 0x8231, 0xB930, 0xB939, 0x5FBE, 0x8231, 0xBA30, 0xBA39, 0x5FC8, - 0x8231, 0xBB30, 0xBB39, 0x5FD2, 0x8231, 0xBC30, 0xBC39, 0x5FDC, 0x8231, - 0xBD30, 0xBD39, 0x5FE6, 0x8231, 0xBE30, 0xBE39, 0x5FF0, 0x8231, 0xBF30, - 0xBF39, 0x5FFA, 0x8231, 0xC030, 0xC039, 0x6004, 0x8231, 0xC130, 0xC139, - 0x600E, 0x8231, 0xC230, 0xC239, 0x6018, 0x8231, 0xC330, 0xC339, 0x6022, - 0x8231, 0xC430, 0xC439, 0x602C, 0x8231, 0xC530, 0xC539, 0x6036, 0x8231, - 0xC630, 0xC639, 0x6040, 0x8231, 0xC730, 0xC739, 0x604A, 0x8231, 0xC830, - 0xC839, 0x6054, 0x8231, 0xC930, 0xC939, 0x605E, 0x8231, 0xCA30, 0xCA39, - 0x6068, 0x8231, 0xCB30, 0xCB39, 0x6072, 0x8231, 0xCC30, 0xCC39, 0x607C, - 0x8231, 0xCD30, 0xCD39, 0x6086, 0x8231, 0xCE30, 0xCE39, 0x6090, 0x8231, - 0xCF30, 0xCF39, 0x609A, 0x8231, 0xD030, 0xD039, 0x60A4, 0x8231, 0xD130, - 0xD139, 0x60AE, 0x8231, 0xD230, 0xD239, 0x60B8, 0x8231, 0xD330, 0xD339, - 0x60C2, 0x8231, 0xD430, 0xD439, 0x60CC, 0x8231, 0xD530, 0xD539, 0x60D6, - 0x8231, 0xD630, 0xD639, 0x60E0, 0x8231, 0xD730, 0xD739, 0x60EA, 0x8231, - 0xD830, 0xD839, 0x60F4, 0x8231, 0xD930, 0xD939, 0x60FE, 0x8231, 0xDA30, - 0xDA39, 0x6108, 0x8231, 0xDB30, 0xDB39, 0x6112, 0x8231, 0xDC30, 0xDC39, - 0x611C, 0x8231, 0xDD30, 0xDD39, 0x6126, 0x8231, 0xDE30, 0xDE39, 0x6130, - 0x8231, 0xDF30, 0xDF39, 0x613A, 0x8231, 0xE030, 0xE039, 0x6144, 0x8231, - 0xE130, 0xE139, 0x614E, 0x8231, 0xE230, 0xE239, 0x6158, 0x8231, 0xE330, - 0xE339, 0x6162, 0x8231, 0xE430, 0xE439, 0x616C, 0x8231, 0xE530, 0xE539, - 0x6176, 0x8231, 0xE630, 0xE639, 0x6180, 0x8231, 0xE730, 0xE739, 0x618A, - 0x8231, 0xE830, 0xE839, 0x6194, 0x8231, 0xE930, 0xE939, 0x619E, 0x8231, - 0xEA30, 0xEA39, 0x61A8, 0x8231, 0xEB30, 0xEB39, 0x61B2, 0x8231, 0xEC30, - 0xEC39, 0x61BC, 0x8231, 0xED30, 0xED39, 0x61C6, 0x8231, 0xEE30, 0xEE39, - 0x61D0, 0x8231, 0xEF30, 0xEF39, 0x61DA, 0x8231, 0xF030, 0xF039, 0x61E4, - 0x8231, 0xF130, 0xF139, 0x61EE, 0x8231, 0xF230, 0xF239, 0x61F8, 0x8231, - 0xF330, 0xF339, 0x6202, 0x8231, 0xF430, 0xF439, 0x620C, 0x8231, 0xF530, - 0xF539, 0x6216, 0x8231, 0xF630, 0xF639, 0x6220, 0x8231, 0xF730, 0xF739, - 0x622A, 0x8231, 0xF830, 0xF839, 0x6234, 0x8231, 0xF930, 0xF939, 0x623E, - 0x8231, 0xFA30, 0xFA39, 0x6248, 0x8231, 0xFB30, 0xFB39, 0x6252, 0x8231, - 0xFC30, 0xFC39, 0x625C, 0x8231, 0xFD30, 0xFD39, 0x6266, 0x8231, 0xFE30, - 0xFE39, 0x6270, 0x8232, 0x8130, 0x8139, 0x627A, 0x8232, 0x8230, 0x8239, - 0x6284, 0x8232, 0x8330, 0x8339, 0x628E, 0x8232, 0x8430, 0x8439, 0x6298, - 0x8232, 0x8530, 0x8539, 0x62A2, 0x8232, 0x8630, 0x8639, 0x62AC, 0x8232, - 0x8730, 0x8739, 0x62B6, 0x8232, 0x8830, 0x8839, 0x62C0, 0x8232, 0x8930, - 0x8939, 0x62CA, 0x8232, 0x8A30, 0x8A39, 0x62D4, 0x8232, 0x8B30, 0x8B39, - 0x62DE, 0x8232, 0x8C30, 0x8C39, 0x62E8, 0x8232, 0x8D30, 0x8D39, 0x62F2, - 0x8232, 0x8E30, 0x8E39, 0x62FC, 0x8232, 0x8F30, 0x8F39, 0x6306, 0x8232, - 0x9030, 0x9039, 0x6310, 0x8232, 0x9130, 0x9139, 0x631A, 0x8232, 0x9230, - 0x9239, 0x6324, 0x8232, 0x9330, 0x9339, 0x632E, 0x8232, 0x9430, 0x9439, - 0x6338, 0x8232, 0x9530, 0x9539, 0x6342, 0x8232, 0x9630, 0x9639, 0x634C, - 0x8232, 0x9730, 0x9739, 0x6356, 0x8232, 0x9830, 0x9839, 0x6360, 0x8232, - 0x9930, 0x9939, 0x636A, 0x8232, 0x9A30, 0x9A39, 0x6374, 0x8232, 0x9B30, - 0x9B39, 0x637E, 0x8232, 0x9C30, 0x9C39, 0x6388, 0x8232, 0x9D30, 0x9D39, - 0x6392, 0x8232, 0x9E30, 0x9E39, 0x639C, 0x8232, 0x9F30, 0x9F39, 0x63A6, - 0x8232, 0xA030, 0xA039, 0x63B0, 0x8232, 0xA130, 0xA139, 0x63BA, 0x8232, - 0xA230, 0xA239, 0x63C4, 0x8232, 0xA330, 0xA339, 0x63CE, 0x8232, 0xA430, - 0xA439, 0x63D8, 0x8232, 0xA530, 0xA539, 0x63E2, 0x8232, 0xA630, 0xA639, - 0x63EC, 0x8232, 0xA730, 0xA739, 0x63F6, 0x8232, 0xA830, 0xA839, 0x6400, - 0x8232, 0xA930, 0xA939, 0x640A, 0x8232, 0xAA30, 0xAA39, 0x6414, 0x8232, - 0xAB30, 0xAB39, 0x641E, 0x8232, 0xAC30, 0xAC39, 0x6428, 0x8232, 0xAD30, - 0xAD39, 0x6432, 0x8232, 0xAE30, 0xAE39, 0x643C, 0x8232, 0xAF30, 0xAF39, - 0x6446, 0x8232, 0xB030, 0xB039, 0x6450, 0x8232, 0xB130, 0xB139, 0x645A, - 0x8232, 0xB230, 0xB239, 0x6464, 0x8232, 0xB330, 0xB339, 0x646E, 0x8232, - 0xB430, 0xB439, 0x6478, 0x8232, 0xB530, 0xB539, 0x6482, 0x8232, 0xB630, - 0xB639, 0x648C, 0x8232, 0xB730, 0xB739, 0x6496, 0x8232, 0xB830, 0xB839, - 0x64A0, 0x8232, 0xB930, 0xB939, 0x64AA, 0x8232, 0xBA30, 0xBA39, 0x64B4, - 0x8232, 0xBB30, 0xBB39, 0x64BE, 0x8232, 0xBC30, 0xBC39, 0x64C8, 0x8232, - 0xBD30, 0xBD39, 0x64D2, 0x8232, 0xBE30, 0xBE39, 0x64DC, 0x8232, 0xBF30, - 0xBF39, 0x64E6, 0x8232, 0xC030, 0xC039, 0x64F0, 0x8232, 0xC130, 0xC139, - 0x64FA, 0x8232, 0xC230, 0xC239, 0x6504, 0x8232, 0xC330, 0xC339, 0x650E, - 0x8232, 0xC430, 0xC439, 0x6518, 0x8232, 0xC530, 0xC539, 0x6522, 0x8232, - 0xC630, 0xC639, 0x652C, 0x8232, 0xC730, 0xC739, 0x6536, 0x8232, 0xC830, - 0xC839, 0x6540, 0x8232, 0xC930, 0xC939, 0x654A, 0x8232, 0xCA30, 0xCA39, - 0x6554, 0x8232, 0xCB30, 0xCB39, 0x655E, 0x8232, 0xCC30, 0xCC39, 0x6568, - 0x8232, 0xCD30, 0xCD39, 0x6572, 0x8232, 0xCE30, 0xCE39, 0x657C, 0x8232, - 0xCF30, 0xCF39, 0x6586, 0x8232, 0xD030, 0xD039, 0x6590, 0x8232, 0xD130, - 0xD139, 0x659A, 0x8232, 0xD230, 0xD239, 0x65A4, 0x8232, 0xD330, 0xD339, - 0x65AE, 0x8232, 0xD430, 0xD439, 0x65B8, 0x8232, 0xD530, 0xD539, 0x65C2, - 0x8232, 0xD630, 0xD639, 0x65CC, 0x8232, 0xD730, 0xD739, 0x65D6, 0x8232, - 0xD830, 0xD839, 0x65E0, 0x8232, 0xD930, 0xD939, 0x65EA, 0x8232, 0xDA30, - 0xDA39, 0x65F4, 0x8232, 0xDB30, 0xDB39, 0x65FE, 0x8232, 0xDC30, 0xDC39, - 0x6608, 0x8232, 0xDD30, 0xDD39, 0x6612, 0x8232, 0xDE30, 0xDE39, 0x661C, - 0x8232, 0xDF30, 0xDF39, 0x6626, 0x8232, 0xE030, 0xE039, 0x6630, 0x8232, - 0xE130, 0xE139, 0x663A, 0x8232, 0xE230, 0xE239, 0x6644, 0x8232, 0xE330, - 0xE339, 0x664E, 0x8232, 0xE430, 0xE439, 0x6658, 0x8232, 0xE530, 0xE539, - 0x6662, 0x8232, 0xE630, 0xE639, 0x666C, 0x8232, 0xE730, 0xE739, 0x6676, - 0x8232, 0xE830, 0xE839, 0x6680, 0x8232, 0xE930, 0xE939, 0x668A, 0x8232, - 0xEA30, 0xEA39, 0x6694, 0x8232, 0xEB30, 0xEB39, 0x669E, 0x8232, 0xEC30, - 0xEC39, 0x66A8, 0x8232, 0xED30, 0xED39, 0x66B2, 0x8232, 0xEE30, 0xEE39, - 0x66BC, 0x8232, 0xEF30, 0xEF39, 0x66C6, 0x8232, 0xF030, 0xF039, 0x66D0, - 0x8232, 0xF130, 0xF139, 0x66DA, 0x8232, 0xF230, 0xF239, 0x66E4, 0x8232, - 0xF330, 0xF339, 0x66EE, 0x8232, 0xF430, 0xF439, 0x66F8, 0x8232, 0xF530, - 0xF539, 0x6702, 0x8232, 0xF630, 0xF639, 0x670C, 0x8232, 0xF730, 0xF739, - 0x6716, 0x8232, 0xF830, 0xF839, 0x6720, 0x8232, 0xF930, 0xF939, 0x672A, - 0x8232, 0xFA30, 0xFA39, 0x6734, 0x8232, 0xFB30, 0xFB39, 0x673E, 0x8232, - 0xFC30, 0xFC39, 0x6748, 0x8232, 0xFD30, 0xFD39, 0x6752, 0x8232, 0xFE30, - 0xFE39, 0x675C, 0x8233, 0x8130, 0x8139, 0x6766, 0x8233, 0x8230, 0x8239, - 0x6770, 0x8233, 0x8330, 0x8339, 0x677A, 0x8233, 0x8430, 0x8439, 0x6784, - 0x8233, 0x8530, 0x8539, 0x678E, 0x8233, 0x8630, 0x8639, 0x6798, 0x8233, - 0x8730, 0x8739, 0x67A2, 0x8233, 0x8830, 0x8839, 0x67AC, 0x8233, 0x8930, - 0x8939, 0x67B6, 0x8233, 0x8A30, 0x8A39, 0x67C0, 0x8233, 0x8B30, 0x8B39, - 0x67CA, 0x8233, 0x8C30, 0x8C39, 0x67D4, 0x8233, 0x8D30, 0x8D39, 0x67DE, - 0x8233, 0x8E30, 0x8E39, 0x67E8, 0x8233, 0x8F30, 0x8F39, 0x67F2, 0x8233, - 0x9030, 0x9039, 0x67FC, 0x8233, 0x9130, 0x9139, 0x6806, 0x8233, 0x9230, - 0x9239, 0x6810, 0x8233, 0x9330, 0x9339, 0x681A, 0x8233, 0x9430, 0x9439, - 0x6824, 0x8233, 0x9530, 0x9539, 0x682E, 0x8233, 0x9630, 0x9639, 0x6838, - 0x8233, 0x9730, 0x9739, 0x6842, 0x8233, 0x9830, 0x9839, 0x684C, 0x8233, - 0x9930, 0x9939, 0x6856, 0x8233, 0x9A30, 0x9A39, 0x6860, 0x8233, 0x9B30, - 0x9B39, 0x686A, 0x8233, 0x9C30, 0x9C39, 0x6874, 0x8233, 0x9D30, 0x9D39, - 0x687E, 0x8233, 0x9E30, 0x9E39, 0x6888, 0x8233, 0x9F30, 0x9F39, 0x6892, - 0x8233, 0xA030, 0xA039, 0x689C, 0x8233, 0xA130, 0xA139, 0x68A6, 0x8233, - 0xA230, 0xA239, 0x68B0, 0x8233, 0xA330, 0xA339, 0x68BA, 0x8233, 0xA430, - 0xA439, 0x68C4, 0x8233, 0xA530, 0xA539, 0x68CE, 0x8233, 0xA630, 0xA639, - 0x68D8, 0x8233, 0xA730, 0xA739, 0x68E2, 0x8233, 0xA830, 0xA839, 0x68EC, - 0x8233, 0xA930, 0xA939, 0x68F6, 0x8233, 0xAA30, 0xAA39, 0x6900, 0x8233, - 0xAB30, 0xAB39, 0x690A, 0x8233, 0xAC30, 0xAC39, 0x6914, 0x8233, 0xAD30, - 0xAD39, 0x691E, 0x8233, 0xAE30, 0xAE39, 0x6928, 0x8233, 0xAF30, 0xAF39, - 0x6932, 0x8233, 0xB030, 0xB039, 0x693C, 0x8233, 0xB130, 0xB139, 0x6946, - 0x8233, 0xB230, 0xB239, 0x6950, 0x8233, 0xB330, 0xB339, 0x695A, 0x8233, - 0xB430, 0xB439, 0x6964, 0x8233, 0xB530, 0xB539, 0x696E, 0x8233, 0xB630, - 0xB639, 0x6978, 0x8233, 0xB730, 0xB739, 0x6982, 0x8233, 0xB830, 0xB839, - 0x698C, 0x8233, 0xB930, 0xB939, 0x6996, 0x8233, 0xBA30, 0xBA39, 0x69A0, - 0x8233, 0xBB30, 0xBB39, 0x69AA, 0x8233, 0xBC30, 0xBC39, 0x69B4, 0x8233, - 0xBD30, 0xBD39, 0x69BE, 0x8233, 0xBE30, 0xBE39, 0x69C8, 0x8233, 0xBF30, - 0xBF39, 0x69D2, 0x8233, 0xC030, 0xC039, 0x69DC, 0x8233, 0xC130, 0xC139, - 0x69E6, 0x8233, 0xC230, 0xC239, 0x69F0, 0x8233, 0xC330, 0xC339, 0x69FA, - 0x8233, 0xC430, 0xC439, 0x6A04, 0x8233, 0xC530, 0xC539, 0x6A0E, 0x8233, - 0xC630, 0xC639, 0x6A18, 0x8233, 0xC730, 0xC739, 0x6A22, 0x8233, 0xC830, - 0xC839, 0x6A2C, 0x8233, 0xC930, 0xC939, 0x6A36, 0x8233, 0xCA30, 0xCA39, - 0x6A40, 0x8233, 0xCB30, 0xCB39, 0x6A4A, 0x8233, 0xCC30, 0xCC39, 0x6A54, - 0x8233, 0xCD30, 0xCD39, 0x6A5E, 0x8233, 0xCE30, 0xCE39, 0x6A68, 0x8233, - 0xCF30, 0xCF39, 0x6A72, 0x8233, 0xD030, 0xD039, 0x6A7C, 0x8233, 0xD130, - 0xD139, 0x6A86, 0x8233, 0xD230, 0xD239, 0x6A90, 0x8233, 0xD330, 0xD339, - 0x6A9A, 0x8233, 0xD430, 0xD439, 0x6AA4, 0x8233, 0xD530, 0xD539, 0x6AAE, - 0x8233, 0xD630, 0xD639, 0x6AB8, 0x8233, 0xD730, 0xD739, 0x6AC2, 0x8233, - 0xD830, 0xD839, 0x6ACC, 0x8233, 0xD930, 0xD939, 0x6AD6, 0x8233, 0xDA30, - 0xDA39, 0x6AE0, 0x8233, 0xDB30, 0xDB39, 0x6AEA, 0x8233, 0xDC30, 0xDC39, - 0x6AF4, 0x8233, 0xDD30, 0xDD39, 0x6AFE, 0x8233, 0xDE30, 0xDE39, 0x6B08, - 0x8233, 0xDF30, 0xDF39, 0x6B12, 0x8233, 0xE030, 0xE039, 0x6B1C, 0x8233, - 0xE130, 0xE139, 0x6B26, 0x8233, 0xE230, 0xE239, 0x6B30, 0x8233, 0xE330, - 0xE339, 0x6B3A, 0x8233, 0xE430, 0xE439, 0x6B44, 0x8233, 0xE530, 0xE539, - 0x6B4E, 0x8233, 0xE630, 0xE639, 0x6B58, 0x8233, 0xE730, 0xE739, 0x6B62, - 0x8233, 0xE830, 0xE839, 0x6B6C, 0x8233, 0xE930, 0xE939, 0x6B76, 0x8233, - 0xEA30, 0xEA39, 0x6B80, 0x8233, 0xEB30, 0xEB39, 0x6B8A, 0x8233, 0xEC30, - 0xEC39, 0x6B94, 0x8233, 0xED30, 0xED39, 0x6B9E, 0x8233, 0xEE30, 0xEE39, - 0x6BA8, 0x8233, 0xEF30, 0xEF39, 0x6BB2, 0x8233, 0xF030, 0xF039, 0x6BBC, - 0x8233, 0xF130, 0xF139, 0x6BC6, 0x8233, 0xF230, 0xF239, 0x6BD0, 0x8233, - 0xF330, 0xF339, 0x6BDA, 0x8233, 0xF430, 0xF439, 0x6BE4, 0x8233, 0xF530, - 0xF539, 0x6BEE, 0x8233, 0xF630, 0xF639, 0x6BF8, 0x8233, 0xF730, 0xF739, - 0x6C02, 0x8233, 0xF830, 0xF839, 0x6C0C, 0x8233, 0xF930, 0xF939, 0x6C16, - 0x8233, 0xFA30, 0xFA39, 0x6C20, 0x8233, 0xFB30, 0xFB39, 0x6C2A, 0x8233, - 0xFC30, 0xFC39, 0x6C34, 0x8233, 0xFD30, 0xFD39, 0x6C3E, 0x8233, 0xFE30, - 0xFE39, 0x6C48, 0x8234, 0x8130, 0x8139, 0x6C52, 0x8234, 0x8230, 0x8239, - 0x6C5C, 0x8234, 0x8330, 0x8339, 0x6C66, 0x8234, 0x8430, 0x8439, 0x6C70, - 0x8234, 0x8530, 0x8539, 0x6C7A, 0x8234, 0x8630, 0x8639, 0x6C84, 0x8234, - 0x8730, 0x8739, 0x6C8E, 0x8234, 0x8830, 0x8839, 0x6C98, 0x8234, 0x8930, - 0x8939, 0x6CA2, 0x8234, 0x8A30, 0x8A39, 0x6CAC, 0x8234, 0x8B30, 0x8B39, - 0x6CB6, 0x8234, 0x8C30, 0x8C39, 0x6CC0, 0x8234, 0x8D30, 0x8D39, 0x6CCA, - 0x8234, 0x8E30, 0x8E39, 0x6CD4, 0x8234, 0x8F30, 0x8F39, 0x6CDE, 0x8234, - 0x9030, 0x9039, 0x6CE8, 0x8234, 0x9130, 0x9139, 0x6CF2, 0x8234, 0x9230, - 0x9239, 0x6CFC, 0x8234, 0x9330, 0x9339, 0x6D06, 0x8234, 0x9430, 0x9439, - 0x6D10, 0x8234, 0x9530, 0x9539, 0x6D1A, 0x8234, 0x9630, 0x9639, 0x6D24, - 0x8234, 0x9730, 0x9739, 0x6D2E, 0x8234, 0x9830, 0x9839, 0x6D38, 0x8234, - 0x9930, 0x9939, 0x6D42, 0x8234, 0x9A30, 0x9A39, 0x6D4C, 0x8234, 0x9B30, - 0x9B39, 0x6D56, 0x8234, 0x9C30, 0x9C39, 0x6D60, 0x8234, 0x9D30, 0x9D39, - 0x6D6A, 0x8234, 0x9E30, 0x9E39, 0x6D74, 0x8234, 0x9F30, 0x9F39, 0x6D7E, - 0x8234, 0xA030, 0xA039, 0x6D88, 0x8234, 0xA130, 0xA139, 0x6D92, 0x8234, - 0xA230, 0xA239, 0x6D9C, 0x8234, 0xA330, 0xA339, 0x6DA6, 0x8234, 0xA430, - 0xA439, 0x6DB0, 0x8234, 0xA530, 0xA539, 0x6DBA, 0x8234, 0xA630, 0xA639, - 0x6DC4, 0x8234, 0xA730, 0xA739, 0x6DCE, 0x8234, 0xA830, 0xA839, 0x6DD8, - 0x8234, 0xA930, 0xA939, 0x6DE2, 0x8234, 0xAA30, 0xAA39, 0x6DEC, 0x8234, - 0xAB30, 0xAB39, 0x6DF6, 0x8234, 0xAC30, 0xAC39, 0x6E00, 0x8234, 0xAD30, - 0xAD39, 0x6E0A, 0x8234, 0xAE30, 0xAE39, 0x6E14, 0x8234, 0xAF30, 0xAF39, - 0x6E1E, 0x8234, 0xB030, 0xB039, 0x6E28, 0x8234, 0xB130, 0xB139, 0x6E32, - 0x8234, 0xB230, 0xB239, 0x6E3C, 0x8234, 0xB330, 0xB339, 0x6E46, 0x8234, - 0xB430, 0xB439, 0x6E50, 0x8234, 0xB530, 0xB539, 0x6E5A, 0x8234, 0xB630, - 0xB639, 0x6E64, 0x8234, 0xB730, 0xB739, 0x6E6E, 0x8234, 0xB830, 0xB839, - 0x6E78, 0x8234, 0xB930, 0xB939, 0x6E82, 0x8234, 0xBA30, 0xBA39, 0x6E8C, - 0x8234, 0xBB30, 0xBB39, 0x6E96, 0x8234, 0xBC30, 0xBC39, 0x6EA0, 0x8234, - 0xBD30, 0xBD39, 0x6EAA, 0x8234, 0xBE30, 0xBE39, 0x6EB4, 0x8234, 0xBF30, - 0xBF39, 0x6EBE, 0x8234, 0xC030, 0xC039, 0x6EC8, 0x8234, 0xC130, 0xC139, - 0x6ED2, 0x8234, 0xC230, 0xC239, 0x6EDC, 0x8234, 0xC330, 0xC339, 0x6EE6, - 0x8234, 0xC430, 0xC439, 0x6EF0, 0x8234, 0xC530, 0xC539, 0x6EFA, 0x8234, - 0xC630, 0xC639, 0x6F04, 0x8234, 0xC730, 0xC739, 0x6F0E, 0x8234, 0xC830, - 0xC839, 0x6F18, 0x8234, 0xC930, 0xC939, 0x6F22, 0x8234, 0xCA30, 0xCA39, - 0x6F2C, 0x8234, 0xCB30, 0xCB39, 0x6F36, 0x8234, 0xCC30, 0xCC39, 0x6F40, - 0x8234, 0xCD30, 0xCD39, 0x6F4A, 0x8234, 0xCE30, 0xCE39, 0x6F54, 0x8234, - 0xCF30, 0xCF39, 0x6F5E, 0x8234, 0xD030, 0xD039, 0x6F68, 0x8234, 0xD130, - 0xD139, 0x6F72, 0x8234, 0xD230, 0xD239, 0x6F7C, 0x8234, 0xD330, 0xD339, - 0x6F86, 0x8234, 0xD430, 0xD439, 0x6F90, 0x8234, 0xD530, 0xD539, 0x6F9A, - 0x8234, 0xD630, 0xD639, 0x6FA4, 0x8234, 0xD730, 0xD739, 0x6FAE, 0x8234, - 0xD830, 0xD839, 0x6FB8, 0x8234, 0xD930, 0xD939, 0x6FC2, 0x8234, 0xDA30, - 0xDA39, 0x6FCC, 0x8234, 0xDB30, 0xDB39, 0x6FD6, 0x8234, 0xDC30, 0xDC39, - 0x6FE0, 0x8234, 0xDD30, 0xDD39, 0x6FEA, 0x8234, 0xDE30, 0xDE39, 0x6FF4, - 0x8234, 0xDF30, 0xDF39, 0x6FFE, 0x8234, 0xE030, 0xE039, 0x7008, 0x8234, - 0xE130, 0xE139, 0x7012, 0x8234, 0xE230, 0xE239, 0x701C, 0x8234, 0xE330, - 0xE339, 0x7026, 0x8234, 0xE430, 0xE439, 0x7030, 0x8234, 0xE530, 0xE539, - 0x703A, 0x8234, 0xE630, 0xE639, 0x7044, 0x8234, 0xE730, 0xE739, 0x704E, - 0x8234, 0xE830, 0xE839, 0x7058, 0x8234, 0xE930, 0xE939, 0x7062, 0x8234, - 0xEA30, 0xEA39, 0x706C, 0x8234, 0xEB30, 0xEB39, 0x7076, 0x8234, 0xEC30, - 0xEC39, 0x7080, 0x8234, 0xED30, 0xED39, 0x708A, 0x8234, 0xEE30, 0xEE39, - 0x7094, 0x8234, 0xEF30, 0xEF39, 0x709E, 0x8234, 0xF030, 0xF039, 0x70A8, - 0x8234, 0xF130, 0xF139, 0x70B2, 0x8234, 0xF230, 0xF239, 0x70BC, 0x8234, - 0xF330, 0xF339, 0x70C6, 0x8234, 0xF430, 0xF439, 0x70D0, 0x8234, 0xF530, - 0xF539, 0x70DA, 0x8234, 0xF630, 0xF639, 0x70E4, 0x8234, 0xF730, 0xF739, - 0x70EE, 0x8234, 0xF830, 0xF839, 0x70F8, 0x8234, 0xF930, 0xF939, 0x7102, - 0x8234, 0xFA30, 0xFA39, 0x710C, 0x8234, 0xFB30, 0xFB39, 0x7116, 0x8234, - 0xFC30, 0xFC39, 0x7120, 0x8234, 0xFD30, 0xFD39, 0x712A, 0x8234, 0xFE30, - 0xFE39, 0x7134, 0x8235, 0x8130, 0x8139, 0x713E, 0x8235, 0x8230, 0x8239, - 0x7148, 0x8235, 0x8330, 0x8339, 0x7152, 0x8235, 0x8430, 0x8439, 0x715C, - 0x8235, 0x8530, 0x8539, 0x7166, 0x8235, 0x8630, 0x8639, 0x7170, 0x8235, - 0x8730, 0x8738, 0x717A, 0x8235, 0x9833, 0x9839, 0x7188, 0x8235, 0x9930, - 0x9939, 0x718F, 0x8235, 0x9A30, 0x9A39, 0x7199, 0x8235, 0x9B30, 0x9B39, - 0x71A3, 0x8235, 0x9C30, 0x9C39, 0x71AD, 0x8235, 0x9D30, 0x9D39, 0x71B7, - 0x8235, 0x9E30, 0x9E39, 0x71C1, 0x8235, 0x9F30, 0x9F39, 0x71CB, 0x8235, - 0xA030, 0xA039, 0x71D5, 0x8235, 0xA130, 0xA139, 0x71DF, 0x8235, 0xA230, - 0xA239, 0x71E9, 0x8235, 0xA330, 0xA339, 0x71F3, 0x8235, 0xA430, 0xA439, - 0x71FD, 0x8235, 0xA530, 0xA539, 0x7207, 0x8235, 0xA630, 0xA639, 0x7211, - 0x8235, 0xA730, 0xA739, 0x721B, 0x8235, 0xA830, 0xA839, 0x7225, 0x8235, - 0xA930, 0xA939, 0x722F, 0x8235, 0xAA30, 0xAA39, 0x7239, 0x8235, 0xAB30, - 0xAB39, 0x7243, 0x8235, 0xAC30, 0xAC39, 0x724D, 0x8235, 0xAD30, 0xAD39, - 0x7257, 0x8235, 0xAE30, 0xAE39, 0x7261, 0x8235, 0xAF30, 0xAF39, 0x726B, - 0x8235, 0xB030, 0xB039, 0x7275, 0x8235, 0xB130, 0xB139, 0x727F, 0x8235, - 0xB230, 0xB239, 0x7289, 0x8235, 0xB330, 0xB339, 0x7293, 0x8235, 0xB430, - 0xB439, 0x729D, 0x8235, 0xB530, 0xB539, 0x72A7, 0x8235, 0xB630, 0xB639, - 0x72B1, 0x8235, 0xB730, 0xB739, 0x72BB, 0x8235, 0xB830, 0xB839, 0x72C5, - 0x8235, 0xB930, 0xB939, 0x72CF, 0x8235, 0xBA30, 0xBA39, 0x72D9, 0x8235, - 0xBB30, 0xBB39, 0x72E3, 0x8235, 0xBC30, 0xBC39, 0x72ED, 0x8235, 0xBD30, - 0xBD39, 0x72F7, 0x8235, 0xBE30, 0xBE39, 0x7301, 0x8235, 0xBF30, 0xBF39, - 0x730B, 0x8235, 0xC030, 0xC039, 0x7315, 0x8235, 0xC130, 0xC139, 0x731F, - 0x8235, 0xC230, 0xC239, 0x7329, 0x8235, 0xC330, 0xC339, 0x7333, 0x8235, - 0xC430, 0xC439, 0x733D, 0x8235, 0xC530, 0xC539, 0x7347, 0x8235, 0xC630, - 0xC639, 0x7351, 0x8235, 0xC730, 0xC739, 0x735B, 0x8235, 0xC830, 0xC839, - 0x7365, 0x8235, 0xC930, 0xC939, 0x736F, 0x8235, 0xCA30, 0xCA39, 0x7379, - 0x8235, 0xCB30, 0xCB39, 0x7383, 0x8235, 0xCC30, 0xCC39, 0x738D, 0x8235, - 0xCD30, 0xCD39, 0x7397, 0x8235, 0xCE30, 0xCE39, 0x73A1, 0x8235, 0xCF30, - 0xCF39, 0x73AB, 0x8235, 0xD030, 0xD039, 0x73B5, 0x8235, 0xD130, 0xD139, - 0x73BF, 0x8235, 0xD230, 0xD239, 0x73C9, 0x8235, 0xD330, 0xD339, 0x73D3, - 0x8235, 0xD430, 0xD439, 0x73DD, 0x8235, 0xD530, 0xD539, 0x73E7, 0x8235, - 0xD630, 0xD639, 0x73F1, 0x8235, 0xD730, 0xD739, 0x73FB, 0x8235, 0xD830, - 0xD839, 0x7405, 0x8235, 0xD930, 0xD939, 0x740F, 0x8235, 0xDA30, 0xDA39, - 0x7419, 0x8235, 0xDB30, 0xDB39, 0x7423, 0x8235, 0xDC30, 0xDC39, 0x742D, - 0x8235, 0xDD30, 0xDD39, 0x7437, 0x8235, 0xDE30, 0xDE39, 0x7441, 0x8235, - 0xDF30, 0xDF39, 0x744B, 0x8235, 0xE030, 0xE039, 0x7455, 0x8235, 0xE130, - 0xE139, 0x745F, 0x8235, 0xE230, 0xE239, 0x7469, 0x8235, 0xE330, 0xE339, - 0x7473, 0x8235, 0xE430, 0xE439, 0x747D, 0x8235, 0xE530, 0xE539, 0x7487, - 0x8235, 0xE630, 0xE639, 0x7491, 0x8235, 0xE730, 0xE739, 0x749B, 0x8235, - 0xE830, 0xE839, 0x74A5, 0x8235, 0xE930, 0xE939, 0x74AF, 0x8235, 0xEA30, - 0xEA39, 0x74B9, 0x8235, 0xEB30, 0xEB39, 0x74C3, 0x8235, 0xEC30, 0xEC39, - 0x74CD, 0x8235, 0xED30, 0xED39, 0x74D7, 0x8235, 0xEE30, 0xEE39, 0x74E1, - 0x8235, 0xEF30, 0xEF39, 0x74EB, 0x8235, 0xF030, 0xF039, 0x74F5, 0x8235, - 0xF130, 0xF139, 0x74FF, 0x8235, 0xF230, 0xF239, 0x7509, 0x8235, 0xF330, - 0xF339, 0x7513, 0x8235, 0xF430, 0xF439, 0x751D, 0x8235, 0xF530, 0xF539, - 0x7527, 0x8235, 0xF630, 0xF639, 0x7531, 0x8235, 0xF730, 0xF739, 0x753B, - 0x8235, 0xF830, 0xF839, 0x7545, 0x8235, 0xF930, 0xF939, 0x754F, 0x8235, - 0xFA30, 0xFA39, 0x7559, 0x8235, 0xFB30, 0xFB39, 0x7563, 0x8235, 0xFC30, - 0xFC39, 0x756D, 0x8235, 0xFD30, 0xFD39, 0x7577, 0x8235, 0xFE30, 0xFE39, - 0x7581, 0x8236, 0x8130, 0x8139, 0x758B, 0x8236, 0x8230, 0x8239, 0x7595, - 0x8236, 0x8330, 0x8339, 0x759F, 0x8236, 0x8430, 0x8439, 0x75A9, 0x8236, - 0x8530, 0x8539, 0x75B3, 0x8236, 0x8630, 0x8639, 0x75BD, 0x8236, 0x8730, - 0x8739, 0x75C7, 0x8236, 0x8830, 0x8839, 0x75D1, 0x8236, 0x8930, 0x8939, - 0x75DB, 0x8236, 0x8A30, 0x8A39, 0x75E5, 0x8236, 0x8B30, 0x8B39, 0x75EF, - 0x8236, 0x8C30, 0x8C39, 0x75F9, 0x8236, 0x8D30, 0x8D39, 0x7603, 0x8236, - 0x8E30, 0x8E37, 0x760D, 0x8236, 0x8F31, 0x8F39, 0x7615, 0x8236, 0x9030, - 0x9039, 0x761E, 0x8236, 0x9130, 0x9139, 0x7628, 0x8236, 0x9230, 0x9239, - 0x7632, 0x8236, 0x9330, 0x9339, 0x763C, 0x8236, 0x9430, 0x9435, 0x7646, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp deleted file mode 100644 index 5ea2722f4f..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBK2K_V_5[41 * 3] = { - 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, - 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, - 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, - 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, - 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, - 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, - 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, 0xA4A1, 0xA4A1, 0x5757, - 0xA4A3, 0xA4A3, 0x5759, 0xA4A5, 0xA4A5, 0x5762, 0xA4A7, 0xA4A7, 0x5758, - 0xA4A9, 0xA4A9, 0x5760, 0xA4C3, 0xA4C3, 0x5761, 0xA4E3, 0xA4E3, 0x5764, - 0xA4E5, 0xA4E5, 0x5766, 0xA4E7, 0xA4E7, 0x5765, 0xA4EE, 0xA4EE, 0x5763, - 0xA5A1, 0xA5A1, 0x5768, 0xA5A3, 0xA5A3, 0x576A, 0xA5A5, 0xA5A5, 0x5771, - 0xA5A7, 0xA5A7, 0x5769, 0xA5A9, 0xA5A9, 0x576F, 0xA5C3, 0xA5C3, 0x5770, - 0xA5E3, 0xA5E3, 0x5773, 0xA5E5, 0xA5E5, 0x5775, 0xA5E7, 0xA5E7, 0x5774, - 0xA5EE, 0xA5EE, 0x5772, 0xA960, 0xA960, 0x577A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp deleted file mode 100644 index f0a8afe863..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp +++ /dev/null @@ -1,1367 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBKp_EUC_H_2[4070 * 3] = { - 0x0020, 0x007E, 0x0001, 0x8140, 0x8178, 0x2758, 0x8179, 0x8179, 0x2059, - 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, 0x8186, 0x8186, 0x21F1, - 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, 0x81EE, 0x81F5, 0x2802, - 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, 0x8240, 0x8252, 0x2812, - 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, 0x8262, 0x8262, 0x21B5, - 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, 0x8275, 0x8279, 0x2844, - 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, 0x827D, 0x827D, 0x1E62, - 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, 0x8281, 0x8282, 0x284C, - 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, 0x8290, 0x8290, 0x205C, - 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, 0x82A6, 0x82C7, 0x286E, - 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, 0x82CA, 0x82E0, 0x2890, - 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, 0x82E3, 0x82E3, 0x210A, - 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, 0x82ED, 0x82ED, 0x267F, - 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, 0x82F3, 0x82F6, 0x28B4, - 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, 0x82F9, 0x82F9, 0x226C, - 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, 0x82FC, 0x82FE, 0x28B9, - 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, 0x8342, 0x8344, 0x28BD, - 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, 0x8348, 0x8348, 0x1FB9, - 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, 0x834D, 0x8352, 0x28C5, - 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, 0x8357, 0x8357, 0x20C2, - 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, 0x835F, 0x8364, 0x28D4, - 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, 0x8367, 0x8371, 0x28DA, - 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, 0x8378, 0x8378, 0x2210, - 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, 0x837B, 0x837B, 0x28EB, - 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, 0x837E, 0x837E, 0x1FE4, - 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, 0x8386, 0x8386, 0x22D6, - 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, 0x838A, 0x838A, 0x22CE, - 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, 0x838E, 0x8393, 0x28F6, - 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, 0x839E, 0x839E, 0x2231, - 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, 0x83A7, 0x83AA, 0x290C, - 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, 0x83AE, 0x83AE, 0x22D7, - 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, 0x83B1, 0x83B9, 0x2912, - 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, 0x83C9, 0x83C9, 0x2025, - 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, 0x83F7, 0x83FE, 0x2955, - 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, 0x8451, 0x8470, 0x296D, - 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, 0x8474, 0x8474, 0x2263, - 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, 0x8478, 0x847E, 0x2991, - 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, 0x8483, 0x848D, 0x299A, - 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, 0x8492, 0x8492, 0x22CA, - 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, 0x849D, 0x849D, 0x1F4F, - 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, 0x84A2, 0x84A2, 0x2036, - 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, 0x84A5, 0x84A5, 0x22C9, - 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, 0x84A9, 0x84A9, 0x1F75, - 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, 0x84C6, 0x84D2, 0x29D2, - 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, 0x84D5, 0x84D5, 0x21A9, - 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, 0x84D8, 0x84D8, 0x29E1, - 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, 0x84DB, 0x84DC, 0x29E2, - 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, 0x84EA, 0x84EA, 0x2323, - 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, 0x84EF, 0x84F0, 0x29F3, - 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, 0x8540, 0x8550, 0x2A02, - 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, 0x8553, 0x8553, 0x2A13, - 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, 0x855E, 0x855E, 0x20EF, - 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, 0x8567, 0x857E, 0x2A24, - 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, 0x8588, 0x858A, 0x2A43, - 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, 0x8592, 0x8592, 0x21F9, - 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, 0x8597, 0x8597, 0x2A4F, - 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, 0x85A2, 0x85A2, 0x1E5A, - 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, 0x85B3, 0x85FE, 0x2A68, - 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, 0x864B, 0x8653, 0x2ABE, - 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, 0x8668, 0x8668, 0x236C, - 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, 0x8696, 0x8696, 0x219C, - 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, 0x869A, 0x86A0, 0x2B08, - 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, 0x86CA, 0x86CA, 0x210B, - 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, 0x86CD, 0x86CD, 0x2B38, - 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, 0x86D1, 0x86D1, 0x222C, - 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, 0x86DD, 0x86DD, 0x22C0, - 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, 0x86E2, 0x86E7, 0x2B48, - 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, 0x86EE, 0x86EE, 0x2379, - 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, 0x86F5, 0x86FE, 0x2B58, - 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, 0x8744, 0x8744, 0x237C, - 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, 0x874A, 0x874A, 0x2B69, - 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, 0x874D, 0x874E, 0x2B6A, - 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, 0x8757, 0x8757, 0x1F4C, - 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, 0x875B, 0x875B, 0x21CF, - 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, 0x875E, 0x875E, 0x2371, - 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, 0x8761, 0x8765, 0x2B77, - 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, 0x877A, 0x877A, 0x236F, - 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, 0x877E, 0x877E, 0x2B91, - 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, 0x8782, 0x8782, 0x2373, - 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, 0x8787, 0x8787, 0x2B96, - 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, 0x878A, 0x878A, 0x20B5, - 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, 0x878E, 0x878E, 0x2672, - 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, 0x8794, 0x8797, 0x2B9E, - 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, 0x879D, 0x879D, 0x2375, - 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, 0x87A4, 0x87A6, 0x2BAB, - 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, 0x87B3, 0x87B3, 0x236B, - 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, 0x87B6, 0x87BA, 0x2BBA, - 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, 0x87BF, 0x87BF, 0x237D, - 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, 0x87C2, 0x87C2, 0x2381, - 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, 0x87CB, 0x87CB, 0x237E, - 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, 0x87CF, 0x87CF, 0x22DB, - 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, 0x87D3, 0x87D3, 0x2689, - 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, 0x87D6, 0x87D9, 0x2BCF, - 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, 0x87F7, 0x87F7, 0x2383, - 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, 0x87FA, 0x87FA, 0x218F, - 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, 0x8841, 0x8841, 0x2248, - 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, 0x8845, 0x8845, 0x2BF6, - 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, 0x8880, 0x88B9, 0x2C2F, - 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, 0x88CC, 0x88CC, 0x228B, - 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, 0x88D5, 0x88D6, 0x2C81, - 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, 0x88DF, 0x88DF, 0x232C, - 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, 0x88E6, 0x88F1, 0x2C8F, - 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, 0x88F4, 0x88F5, 0x2C9B, - 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, 0x8940, 0x894A, 0x2CA5, - 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, 0x894D, 0x894D, 0x2CB0, - 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, 0x8950, 0x8950, 0x232D, - 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, 0x8955, 0x895C, 0x2CB5, - 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, 0x895F, 0x895F, 0x232F, - 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, 0x896E, 0x8970, 0x2CCB, - 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, 0x897C, 0x897C, 0x1EC2, - 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, 0x898B, 0x898B, 0x22B2, - 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, 0x899A, 0x899D, 0x2CF2, - 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, 0x89A6, 0x89A6, 0x20D9, - 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, 0x89A9, 0x89AE, 0x2CFE, - 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, 0x89BA, 0x89BA, 0x21ED, - 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, 0x89BF, 0x89BF, 0x2326, - 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, 0x89C4, 0x89C4, 0x1F52, - 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, 0x89C7, 0x89C7, 0x2D14, - 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, 0x89CE, 0x89CE, 0x1E2B, - 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, 0x89D2, 0x89D7, 0x2D1C, - 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, 0x89DB, 0x89DB, 0x2138, - 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, 0x89F5, 0x89FE, 0x2D3C, - 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, 0x8A42, 0x8A58, 0x2D47, - 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, 0x8A5B, 0x8A5B, 0x2D5E, - 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, 0x8A5E, 0x8A5E, 0x1EFA, - 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, 0x8A7A, 0x8A7E, 0x2D7A, - 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, 0x8AE5, 0x8AFE, 0x2DE3, - 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, 0x8B45, 0x8B48, 0x2E01, - 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, 0x8B7A, 0x8B7A, 0x23FC, - 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, 0x8B8C, 0x8B8C, 0x2069, - 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, 0x8B9F, 0x8BB2, 0x2E56, - 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, 0x8BB9, 0x8BB9, 0x23FD, - 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, 0x8BBF, 0x8BC5, 0x2E73, - 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, 0x8BC8, 0x8BC8, 0x23FE, - 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, 0x8BD4, 0x8BD4, 0x2401, - 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, 0x8BDD, 0x8BE4, 0x2E8C, - 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, 0x8BEB, 0x8BEB, 0x2221, - 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, 0x8BF1, 0x8BFE, 0x2E9D, - 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, 0x8C45, 0x8C4E, 0x2EAF, - 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, 0x8C57, 0x8C57, 0x21E5, - 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, 0x8C5D, 0x8C7E, 0x2EC4, - 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, 0x8C8C, 0x8C8C, 0x2EF1, - 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, 0x8C8F, 0x8C8F, 0x2121, - 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, 0x8C92, 0x8C92, 0x1FE5, - 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, 0x8C9A, 0x8C9A, 0x1E37, - 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, 0x8CA3, 0x8CA3, 0x22A6, - 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, 0x8CA6, 0x8CA6, 0x1EDA, - 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, 0x8CC0, 0x8CC0, 0x235C, - 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, 0x8CD3, 0x8CD3, 0x1E67, - 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, 0x8CD6, 0x8CD8, 0x2F2B, - 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, 0x8CF9, 0x8CF9, 0x1F16, - 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, 0x8D73, 0x8D73, 0x2389, - 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, 0x8D76, 0x8D7A, 0x2F86, - 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, 0x8D80, 0x8D87, 0x2F8E, - 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, 0x8D8F, 0x8D8F, 0x1F1A, - 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, 0x8D9F, 0x8DB8, 0x2FAA, - 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, 0x8DE2, 0x8DE2, 0x2391, - 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, 0x8DE5, 0x8DE6, 0x2FED, - 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, 0x8DF7, 0x8DF7, 0x238E, - 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, 0x8E40, 0x8E45, 0x3004, - 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, 0x8E56, 0x8E56, 0x2390, - 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, 0x8E59, 0x8E59, 0x301A, - 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, 0x8E68, 0x8E68, 0x1FE9, - 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, 0x8E6F, 0x8E6F, 0x302D, - 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, 0x8E80, 0x8E80, 0x2324, - 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, 0x8E9C, 0x8E9E, 0x3056, - 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, 0x8EA4, 0x8EA4, 0x2277, - 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, 0x8EA8, 0x8EAB, 0x305F, - 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, 0x8EAE, 0x8EAE, 0x2384, - 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, 0x8EBE, 0x8EBE, 0x2386, - 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, 0x8EC4, 0x8EC4, 0x3076, - 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, 0x8ECD, 0x8ECD, 0x1E32, - 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, 0x8ED6, 0x8ED6, 0x1F13, - 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, 0x8EEC, 0x8EEC, 0x1FE0, - 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, 0x8F52, 0x8F52, 0x2087, - 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, 0x8F55, 0x8F55, 0x1EF6, - 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, 0x8F5D, 0x8F5D, 0x2045, - 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, 0x8F65, 0x8F7E, 0x30C9, - 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, 0x8F87, 0x8F87, 0x30E9, - 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, 0x8F95, 0x8F95, 0x266E, - 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, 0x8F98, 0x8F9A, 0x30F7, - 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, 0x8F9D, 0x8F9D, 0x2188, - 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, 0x8FA2, 0x8FBC, 0x30FE, - 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, 0x8FC4, 0x8FC4, 0x1EA1, - 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, 0x8FC7, 0x8FCC, 0x3120, - 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, 0x8FD8, 0x8FD8, 0x1E7C, - 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, 0x9080, 0x909C, 0x3195, - 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, 0x909F, 0x90B9, 0x31B2, - 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, 0x90C0, 0x90C0, 0x2095, - 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, 0x90C5, 0x90C5, 0x23B9, - 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, 0x90DC, 0x90DC, 0x23BD, - 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, 0x90EE, 0x90EF, 0x31FA, - 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, 0x90F7, 0x90F7, 0x23B3, - 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, 0x9142, 0x9142, 0x2162, - 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, 0x914C, 0x914C, 0x3213, - 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, 0x9151, 0x9151, 0x23B7, - 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, 0x9155, 0x9155, 0x24DF, - 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, 0x915A, 0x915A, 0x214E, - 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, 0x915E, 0x9160, 0x321E, - 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, 0x9163, 0x9163, 0x20EB, - 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, 0x916F, 0x9175, 0x322C, - 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, 0x917A, 0x917A, 0x201B, - 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, 0x917D, 0x917E, 0x3236, - 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, 0x9185, 0x918C, 0x323C, - 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, 0x9191, 0x9191, 0x2089, - 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, 0x9194, 0x9196, 0x3248, - 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, 0x919B, 0x919B, 0x2214, - 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, 0x91AA, 0x91AA, 0x2223, - 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, 0x91BA, 0x91BA, 0x268C, - 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, 0x91BF, 0x91BF, 0x24E0, - 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, 0x91C4, 0x91CC, 0x326F, - 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, 0x91D0, 0x91D0, 0x1FFE, - 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, 0x91D3, 0x91D3, 0x327A, - 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, 0x91D6, 0x91D6, 0x1FCE, - 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, 0x91D9, 0x91D9, 0x2021, - 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, 0x91E0, 0x91E1, 0x3282, - 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, 0x91EA, 0x91EA, 0x24A4, - 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, 0x91F1, 0x91F1, 0x3290, - 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, 0x9240, 0x927E, 0x329D, - 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, 0x92B7, 0x92CD, 0x3312, - 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, 0x92D0, 0x92D0, 0x235D, - 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, 0x92D5, 0x92DE, 0x332D, - 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, 0x92E1, 0x92FD, 0x3337, - 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, 0x9350, 0x9350, 0x21FF, - 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, 0x935E, 0x936F, 0x3370, - 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, 0x9376, 0x9376, 0x1EB6, - 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, 0x938C, 0x938C, 0x20DB, - 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, 0x939E, 0x93A4, 0x33AB, - 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, 0x93A7, 0x93A7, 0x2040, - 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, 0x93B5, 0x93B7, 0x33BF, - 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, 0x93BB, 0x93BB, 0x235E, - 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, 0x93BE, 0x93C5, 0x33C5, - 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, 0x93CF, 0x93CF, 0x2093, - 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, 0x93D8, 0x93DA, 0x33DC, - 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, 0x93DD, 0x93E0, 0x33DF, - 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, 0x93E4, 0x93E4, 0x20C0, - 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, 0x93E9, 0x93E9, 0x2160, - 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, 0x93EC, 0x93EC, 0x1F8E, - 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, 0x93EF, 0x93EF, 0x2047, - 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, 0x93F2, 0x93F3, 0x33EB, - 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, 0x93F6, 0x93F9, 0x33ED, - 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, 0x93FE, 0x93FE, 0x1FCC, - 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, 0x9445, 0x944C, 0x33F8, - 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, 0x9450, 0x9450, 0x1E52, - 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, 0x9453, 0x9453, 0x228F, - 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, 0x9456, 0x9457, 0x3403, - 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, 0x945B, 0x945B, 0x1E2D, - 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, 0x945E, 0x945E, 0x3407, - 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, 0x9464, 0x9464, 0x2363, - 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, 0x9467, 0x946D, 0x340D, - 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, 0x9472, 0x9472, 0x1FF6, - 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, 0x9475, 0x9475, 0x3418, - 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, 0x9478, 0x9478, 0x2367, - 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, 0x947B, 0x947E, 0x341B, - 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, 0x9482, 0x9482, 0x2163, - 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, 0x9488, 0x9488, 0x1FFC, - 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, 0x94A2, 0x94B2, 0x343B, - 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, 0x94B5, 0x94B5, 0x2142, - 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, 0x94C0, 0x94C0, 0x1E43, - 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, 0x94CD, 0x94D7, 0x3461, - 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, 0x94E0, 0x94E0, 0x1ED7, - 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, 0x9572, 0x9572, 0x212D, - 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, 0x9583, 0x9583, 0x229B, - 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, 0x959F, 0x959F, 0x24A8, - 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, 0x95B4, 0x95B9, 0x34FF, - 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, 0x95CF, 0x95CF, 0x24A7, - 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, 0x95D2, 0x95D2, 0x24A6, - 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, 0x95D5, 0x95E0, 0x351B, - 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, 0x95E7, 0x95E7, 0x1FE7, - 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, 0x95F2, 0x95F7, 0x3535, - 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, 0x95FE, 0x95FE, 0x1F5C, - 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, 0x9657, 0x967B, 0x3556, - 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, 0x9680, 0x96FE, 0x357D, - 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, 0x9768, 0x976B, 0x3623, - 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, 0x976E, 0x976E, 0x246D, - 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, 0x9796, 0x9796, 0x246B, - 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, 0x979D, 0x979D, 0x1ECE, - 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, 0x97A4, 0x97BE, 0x3658, - 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, 0x97EE, 0x97EE, 0x21FE, - 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, 0x97F8, 0x97FE, 0x36A9, - 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, 0x9846, 0x9848, 0x36B5, - 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, 0x984F, 0x984F, 0x1F6F, - 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, 0x9872, 0x9872, 0x36DE, - 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, 0x9880, 0x9880, 0x36EA, - 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, 0x988B, 0x988B, 0x1F27, - 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, 0x98A0, 0x98A0, 0x247C, - 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, 0x98AB, 0x98B5, 0x3710, - 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, 0x98B8, 0x98B9, 0x371B, - 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, 0x98C7, 0x98C7, 0x203E, - 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, 0x98CC, 0x98CF, 0x372C, - 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, 0x98D3, 0x98D3, 0x2204, - 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, 0x98E4, 0x98E4, 0x2140, - 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, 0x98EF, 0x98EF, 0x2474, - 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, 0x98F3, 0x98FE, 0x374C, - 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, 0x9944, 0x9944, 0x375B, - 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, 0x9966, 0x9966, 0x2472, - 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, 0x996F, 0x9974, 0x3783, - 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, 0x997A, 0x997A, 0x1F8B, - 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, 0x9980, 0x9984, 0x3790, - 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, 0x9989, 0x9989, 0x2482, - 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, 0x998F, 0x9990, 0x379C, - 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, 0x9999, 0x9999, 0x1F38, - 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, 0x99AA, 0x99AF, 0x37B4, - 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, 0x99B2, 0x99B2, 0x37BA, - 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, 0x99B5, 0x99B5, 0x2471, - 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, 0x99BE, 0x99BE, 0x2470, - 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, 0x99C1, 0x99C1, 0x37C3, - 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, 0x99C9, 0x99C9, 0x246F, - 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, 0x99CF, 0x99D0, 0x37CE, - 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, 0x99DA, 0x99DA, 0x1FF5, - 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, 0x99E1, 0x99E4, 0x37DD, - 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, 0x99E8, 0x99E8, 0x2479, - 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, 0x99ED, 0x99F3, 0x37E6, - 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, 0x9A40, 0x9A49, 0x37F7, - 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, 0x9A57, 0x9A57, 0x20AD, - 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, 0x9A66, 0x9A66, 0x381A, - 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, 0x9A71, 0x9A71, 0x2159, - 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, 0x9A77, 0x9A77, 0x1F33, - 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, 0x9A88, 0x9A88, 0x1E5C, - 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, 0x9A8D, 0x9A90, 0x383A, - 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, 0x9A97, 0x9A97, 0x248A, - 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, 0x9A9B, 0x9A9B, 0x248B, - 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, 0x9A9F, 0x9AA1, 0x3847, - 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, 0x9AA4, 0x9AA9, 0x384A, - 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, 0x9AD0, 0x9AD0, 0x24C0, - 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, 0x9AD7, 0x9AD9, 0x387A, - 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, 0x9AE2, 0x9AE2, 0x20CA, - 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, 0x9AE5, 0x9AE5, 0x24C2, - 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, 0x9B80, 0x9BD0, 0x38DD, - 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, 0x9BDC, 0x9BDC, 0x23DB, - 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, 0x9C53, 0x9C53, 0x205E, - 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, 0x9C5A, 0x9C5A, 0x23E2, - 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, 0x9C5D, 0x9C74, 0x3973, - 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, 0x9C79, 0x9C79, 0x1E66, - 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, 0x9C86, 0x9C86, 0x1F63, - 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, 0x9C9E, 0x9CAA, 0x39AF, - 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, 0x9CCA, 0x9CCA, 0x22B5, - 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, 0x9CD0, 0x9CE5, 0x39DE, - 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, 0x9CE8, 0x9CEB, 0x39F4, - 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, 0x9CEE, 0x9CEE, 0x2341, - 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, 0x9CFC, 0x9CFD, 0x3A05, - 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, 0x9D42, 0x9D42, 0x2124, - 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, 0x9D47, 0x9D47, 0x23E0, - 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, 0x9D4E, 0x9D4E, 0x3A11, - 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, 0x9D61, 0x9D61, 0x20B1, - 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, 0x9D69, 0x9D69, 0x201C, - 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, 0x9D6F, 0x9D70, 0x3A2D, - 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, 0x9D75, 0x9D75, 0x1F9B, - 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, 0x9D7C, 0x9D7C, 0x3A37, - 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, 0x9D80, 0x9D89, 0x3A39, - 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, 0x9D8D, 0x9D8D, 0x1FB4, - 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, 0x9D92, 0x9D98, 0x3A48, - 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, 0x9DA1, 0x9DA1, 0x23E1, - 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, 0x9DA7, 0x9DA7, 0x23EA, - 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, 0x9DAD, 0x9DAD, 0x210E, - 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, 0x9DB3, 0x9DB3, 0x2004, - 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, 0x9DBF, 0x9DC5, 0x3A6C, - 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, 0x9DC9, 0x9DC9, 0x2264, - 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, 0x9DCE, 0x9DD1, 0x3A78, - 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, 0x9DD5, 0x9DD5, 0x1EC4, - 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, 0x9DE2, 0x9DE2, 0x20A9, - 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, 0x9DF2, 0x9DF3, 0x3A97, - 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, 0x9DF7, 0x9DF7, 0x268B, - 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, 0x9DFB, 0x9DFC, 0x3A9D, - 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, 0x9E40, 0x9E44, 0x3AA0, - 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, 0x9E48, 0x9E48, 0x2191, - 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, 0x9E52, 0x9E52, 0x1F9C, - 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, 0x9E55, 0x9E55, 0x3AB0, - 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, 0x9E5D, 0x9E5D, 0x23E9, - 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, 0x9E61, 0x9E61, 0x21D5, - 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, 0x9E64, 0x9E66, 0x3ABA, - 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, 0x9E6C, 0x9E6C, 0x1E4F, - 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, 0x9E70, 0x9E71, 0x3AC3, - 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, 0x9E74, 0x9E74, 0x23EC, - 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, 0x9E7B, 0x9E7B, 0x23D8, - 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, 0x9E80, 0x9E84, 0x3ACD, - 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, 0x9E87, 0x9E87, 0x23ED, - 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, 0x9E92, 0x9E95, 0x3ADC, - 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, 0x9E98, 0x9EA1, 0x3AE0, - 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, 0x9EA6, 0x9EA6, 0x200B, - 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, 0x9EAA, 0x9EAD, 0x3AEF, - 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, 0x9EB3, 0x9EB3, 0x2189, - 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, 0x9EB7, 0x9EB7, 0x23E7, - 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, 0x9EF6, 0x9EFE, 0x3B36, - 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, 0x9F4F, 0x9F6E, 0x3B4D, - 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, 0x9F80, 0x9F91, 0x3B7C, - 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, 0x9F98, 0x9F98, 0x24D6, - 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, 0x9FA7, 0x9FA8, 0x3BA0, - 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, 0x9FAC, 0x9FAC, 0x24D5, - 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, 0x9FCA, 0x9FCC, 0x3BC0, - 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, 0x9FE1, 0x9FE1, 0x20FC, - 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, 0x9FEC, 0x9FED, 0x3BDF, - 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, 0x9FF4, 0x9FF4, 0x1EBA, - 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, 0x9FFE, 0x9FFE, 0x3BEE, - 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, 0xA044, 0xA045, 0x3BF2, - 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, 0xA049, 0xA049, 0x2227, - 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, 0xA04F, 0xA053, 0x3BFA, - 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, 0xA05A, 0xA05A, 0x1F5D, - 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, 0xA062, 0xA062, 0x3C0A, - 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, 0xA071, 0xA071, 0x2149, - 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, 0xA075, 0xA07E, 0x3C1A, - 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, 0xA091, 0xA091, 0x2190, - 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, 0xA095, 0xA095, 0x3C36, - 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, 0xA0A9, 0xA0A9, 0x24C3, - 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, 0xA0C0, 0xA0CD, 0x3C5E, - 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, 0xA0D9, 0xA0D9, 0x1ED1, - 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, 0xA0DF, 0xA0ED, 0x3C7A, - 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, 0xA1A1, 0xA1FE, 0x0060, - 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0, - 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164, - 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225, - 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, 0xA840, 0xA87E, 0x26B3, - 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C, 0xA8C5, 0xA8EA, 0x02BC, - 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720, 0xA95C, 0xA95C, 0x2722, - 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742, 0xA996, 0xA996, 0x1E17, - 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99, 0xAA4D, 0xAA4D, 0x21B6, - 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6, 0xAA71, 0xAA71, 0x2235, - 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397, 0xAA74, 0xAA76, 0x3CC9, - 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC, 0xAA7A, 0xAA7A, 0x223F, - 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE, 0xAA80, 0xAA99, 0x3CD1, - 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB, 0xAA9C, 0xAA9C, 0x2396, - 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC, 0xAA9F, 0xAA9F, 0x20A2, - 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E, 0xAB40, 0xAB40, 0x1F64, - 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B, 0xAB44, 0xAB44, 0x3CF0, - 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139, 0xAB47, 0xAB47, 0x3CF1, - 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1, 0xAB4A, 0xAB4A, 0x239A, - 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399, 0xAB4E, 0xAB7E, 0x3CF4, - 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C, 0xAC40, 0xAC45, 0x3D46, - 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C, 0xAC71, 0xAC71, 0x2460, - 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C, 0xAC7D, 0xAC7E, 0x3D80, - 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D, 0xAC8E, 0xAC92, 0x3D8F, - 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A, 0xAC95, 0xACA0, 0x3D94, - 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461, 0xAD4A, 0xAD5D, 0x3DA9, - 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD, 0xAD61, 0xAD61, 0x2462, - 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54, 0xAD69, 0xAD73, 0x3DC5, - 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0, 0xAD80, 0xAD81, 0x3DDA, - 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC, 0xAD87, 0xAD87, 0x245D, - 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463, 0xAD8C, 0xAD90, 0x3DE3, - 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8, 0xAE40, 0xAE53, 0x3DF7, - 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B, 0xAE62, 0xAE62, 0x1E70, - 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F, 0xAE81, 0xAE84, 0x3E34, - 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38, 0xAE8B, 0xAE8B, 0x1F4E, - 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1, 0xAE95, 0xAE9F, 0x3E45, - 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50, 0xAF64, 0xAF64, 0x1FC6, - 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE, 0xAF7C, 0xAF7E, 0x3E8A, - 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01, 0xAF83, 0xAF83, 0x2200, - 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2, 0xAF8F, 0xAF8F, 0x1E97, - 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB, 0xAF92, 0xAF9B, 0x3E9A, - 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4, 0xAF9F, 0xAF9F, 0x2028, - 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7, 0xB041, 0xB042, 0x25AF, - 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1, 0xB045, 0xB04E, 0x3EA9, - 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3, 0xB054, 0xB054, 0x1E4E, - 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202, 0xB058, 0xB058, 0x25AB, - 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9, 0xB05B, 0xB05B, 0x25AD, - 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6, 0xB05E, 0xB05E, 0x3EBB, - 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4, 0xB062, 0xB062, 0x222F, - 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7, 0xB065, 0xB06B, 0x3EBC, - 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3, 0xB07D, 0xB07D, 0x1E25, - 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4, 0xB097, 0xB097, 0x25C0, - 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A, 0xB09A, 0xB0A0, 0x3EEC, - 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3, 0xB14B, 0xB14B, 0x226E, - 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD, 0xB14E, 0xB14E, 0x3EFF, - 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2, 0xB151, 0xB151, 0x3F00, - 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01, 0xB180, 0xB196, 0x3F2D, - 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44, 0xB1A1, 0xB1FE, 0x040A, - 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF, 0xB242, 0xB266, 0x3F4E, - 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73, 0xB26D, 0xB26D, 0x2074, - 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687, 0xB275, 0xB27E, 0x3F7E, - 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88, 0xB289, 0xB289, 0x268D, - 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0, 0xB29B, 0xB2A0, 0x3FA0, - 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6, 0xB343, 0xB343, 0x1FAB, - 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8, 0xB371, 0xB37E, 0x3FD5, - 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9, 0xB389, 0xB38B, 0x3FEB, - 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE, 0xB38E, 0xB38E, 0x21FA, - 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6, 0xB440, 0xB453, 0x4001, - 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015, 0xB458, 0xB458, 0x24E4, - 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6, 0xB45F, 0xB45F, 0x20F7, - 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B, 0xB462, 0xB474, 0x401E, - 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031, 0xB47E, 0xB47E, 0x24EC, - 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB, 0xB484, 0xB488, 0x403C, - 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041, 0xB493, 0xB493, 0x24EA, - 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524, 0xB540, 0xB540, 0x4057, - 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058, 0xB54B, 0xB54B, 0x1E27, - 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6, 0xB557, 0xB559, 0x406B, - 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012, 0xB55C, 0xB55C, 0x1EEC, - 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8, 0xB562, 0xB57E, 0x4072, - 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66, 0xB59D, 0xB59D, 0x24DC, - 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582, 0xB640, 0xB651, 0x40AE, - 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0, 0xB655, 0xB655, 0x24DD, - 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E, 0xB65A, 0xB65A, 0x40C5, - 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8, 0xB65D, 0xB67E, 0x40C6, - 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0, 0xB740, 0xB74D, 0x4109, - 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117, 0xB751, 0xB751, 0x1E80, - 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677, 0xB75A, 0xB763, 0x4120, - 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69, 0xB766, 0xB766, 0x222B, - 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F, 0xB778, 0xB778, 0x1F5B, - 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B, 0xB781, 0xB781, 0x4140, - 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141, 0xB7A1, 0xB7FE, 0x063E, - 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0, 0xB844, 0xB844, 0x2186, - 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED, 0xB847, 0xB84C, 0x4163, - 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169, 0xB851, 0xB851, 0x1FEA, - 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4, 0xB85B, 0xB85B, 0x20E1, - 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8, 0xB85E, 0xB85E, 0x2260, - 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2, 0xB861, 0xB876, 0x4176, - 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C, 0xB880, 0xB881, 0x4193, - 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195, 0xB8A1, 0xB8FE, 0x069C, - 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41, 0xB951, 0xB960, 0x41C3, - 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3, 0xB97B, 0xB97B, 0x1F86, - 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF, 0xB99D, 0xB99D, 0x1FB3, - 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF, 0xB9A1, 0xB9FE, 0x06FA, - 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4, 0xBA43, 0xBA43, 0x4210, - 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211, 0xBA56, 0xBA56, 0x25E3, - 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111, 0xBA5A, 0xBA5F, 0x4224, - 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A, 0xBA6A, 0xBA6A, 0x25E7, - 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041, 0xBA75, 0xBA7E, 0x423C, - 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA, 0xBA85, 0xBA85, 0x424A, - 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B, 0xBA88, 0xBA88, 0x25EC, - 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB, 0xBA8E, 0xBA9D, 0x4250, - 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D, 0xBAA0, 0xBAA0, 0x4260, - 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7, 0xBB41, 0xBB48, 0x4261, - 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269, 0xBB58, 0xBB58, 0x25E9, - 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE, 0xBB5C, 0xBB5C, 0x203A, - 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693, 0xBB61, 0xBB64, 0x427C, - 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED, 0xBB67, 0xBB67, 0x4280, - 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281, 0xBB6A, 0xBB6A, 0x2065, - 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3, 0xBB6F, 0xBB7E, 0x4285, - 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6, 0xBC40, 0xBC51, 0x42B6, - 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC, 0xBC54, 0xBC59, 0x42C8, - 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE, 0xBC61, 0xBC61, 0x269B, - 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3, 0xBC64, 0xBC64, 0x42D5, - 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6, 0xBC67, 0xBC67, 0x25F4, - 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B, 0xBC6A, 0xBC6C, 0x42D8, - 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB, 0xBC6F, 0xBC6F, 0x1F7B, - 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D, 0xBC72, 0xBC72, 0x42DD, - 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48, 0xBC75, 0xBC75, 0x241C, - 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF, 0xBC79, 0xBC79, 0x219A, - 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091, 0xBC7C, 0xBC7D, 0x42DF, - 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1, 0xBC82, 0xBC82, 0x2423, - 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422, 0xBC85, 0xBC85, 0x42E3, - 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4, 0xBC88, 0xBC88, 0x228D, - 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8, 0xBC8B, 0xBC8B, 0x2421, - 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3, 0xBC90, 0xBC99, 0x42E8, - 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426, 0xBC9C, 0xBC9C, 0x2425, - 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2, 0xBCA1, 0xBCFE, 0x0814, - 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A, 0xBD43, 0xBD43, 0x2424, - 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428, 0xBD46, 0xBD47, 0x42F8, - 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429, 0xBD4A, 0xBD4A, 0x42FA, - 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB, 0xBD4D, 0xBD4D, 0x22BE, - 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31, 0xBD50, 0xBD56, 0x42FD, - 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304, 0xBD59, 0xBD59, 0x1FB5, - 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B, 0xBD67, 0xBD67, 0x1FAF, - 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068, 0xBD6B, 0xBD6B, 0x21E4, - 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21, 0xBD70, 0xBD70, 0x4316, - 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317, 0xBD79, 0xBD79, 0x217C, - 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D, 0xBD7C, 0xBD7D, 0x431E, - 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320, 0xBD81, 0xBD81, 0x1FD1, - 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33, 0xBD8A, 0xBD8A, 0x4328, - 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329, 0xBD8E, 0xBD8E, 0x242E, - 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430, 0xBD91, 0xBD91, 0x21DB, - 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158, 0xBD98, 0xBD9A, 0x4331, - 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334, 0xBDA1, 0xBDFE, 0x0872, - 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9, 0xBE44, 0xBE44, 0x433C, - 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D, 0xBE49, 0xBE49, 0x1E8E, - 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340, 0xBE51, 0xBE51, 0x21C5, - 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192, 0xBE54, 0xBE54, 0x4346, - 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19, 0xBE57, 0xBE57, 0x218C, - 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3, 0xBE5A, 0xBE5C, 0x4347, - 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438, 0xBE5F, 0xBE5F, 0x2432, - 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A, 0xBE62, 0xBE62, 0x1E9C, - 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085, 0xBE65, 0xBE68, 0x434B, - 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F, 0xBE6C, 0xBE6C, 0x243B, - 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7, 0xBE70, 0xBE70, 0x2433, - 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054, 0xBE77, 0xBE77, 0x21DE, - 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434, 0xBE7A, 0xBE7B, 0x4359, - 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89, 0xBE7E, 0xBE7E, 0x243C, - 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E, 0xBE84, 0xBE84, 0x1ED8, - 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF, 0xBE87, 0xBE87, 0x2445, - 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249, 0xBE8A, 0xBE8B, 0x4360, - 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362, 0xBE8E, 0xBE8E, 0x1E47, - 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363, 0xBE92, 0xBE92, 0x2086, - 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196, 0xBE96, 0xBE96, 0x4367, - 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F, 0xBE99, 0xBE99, 0x4368, - 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369, 0xBE9C, 0xBE9C, 0x2442, - 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E, 0xBEA0, 0xBEA0, 0x436C, - 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6, 0xBF41, 0xBF4C, 0x436D, - 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446, 0xBF4F, 0xBF4F, 0x244B, - 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379, 0xBF55, 0xBF55, 0x2427, - 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D, 0xBF60, 0xBF60, 0x1F0F, - 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447, 0xBF63, 0xBF63, 0x2449, - 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387, 0xBF68, 0xBF68, 0x21C2, - 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E, 0xBF6D, 0xBF6F, 0x438D, - 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390, 0xBF72, 0xBF72, 0x244A, - 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391, 0xBF76, 0xBF76, 0x22BB, - 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393, 0xBF79, 0xBF79, 0x2694, - 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6, 0xBF7C, 0xBF7C, 0x2051, - 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E, 0xBF80, 0xBF81, 0x4395, - 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D, 0xBF84, 0xBF88, 0x4397, - 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451, 0xBF8B, 0xBF94, 0x439C, - 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6, 0xBF97, 0xBF97, 0x2289, - 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7, 0xBF9D, 0xBF9D, 0x2454, - 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E, 0xC040, 0xC040, 0x20FB, - 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440, 0xC045, 0xC04A, 0x43B1, - 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61, 0xC04D, 0xC04D, 0x269D, - 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A, 0xC050, 0xC050, 0x2456, - 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458, 0xC053, 0xC054, 0x43B8, - 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA, 0xC05B, 0xC05B, 0x221A, - 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A, 0xC05F, 0xC05F, 0x244D, - 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1, 0xC069, 0xC069, 0x2453, - 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420, 0xC06C, 0xC06C, 0x43CA, - 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685, 0xC06F, 0xC06F, 0x43CB, - 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC, 0xC074, 0xC074, 0x2224, - 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF, 0xC077, 0xC077, 0x21BA, - 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A, 0xC07A, 0xC07B, 0x43D1, - 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3, 0xC080, 0xC09A, 0x43D5, - 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0, 0xC09D, 0xC09D, 0x269A, - 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C, 0xC140, 0xC14F, 0x43F4, - 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404, 0xC154, 0xC154, 0x1E2C, - 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062, 0xC160, 0xC160, 0x24F1, - 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2, 0xC163, 0xC174, 0x4412, - 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424, 0xC178, 0xC178, 0x2215, - 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C, 0xC195, 0xC195, 0x21AE, - 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA, 0xC240, 0xC24D, 0x444C, - 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A, 0xC265, 0xC265, 0x25C2, - 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1, 0xC268, 0xC27C, 0x4471, - 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486, 0xC280, 0xC283, 0x4487, - 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B, 0xC293, 0xC293, 0x2017, - 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125, 0xC296, 0xC296, 0x214D, - 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4, 0xC299, 0xC299, 0x209D, - 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A, 0xC29C, 0xC29C, 0x25C3, - 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179, 0xC2A1, 0xC2FE, 0x0A48, - 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E, 0xC343, 0xC343, 0x2155, - 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2, 0xC37C, 0xC37E, 0x44D7, - 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7, 0xC385, 0xC39A, 0x44DE, - 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4, 0xC3A1, 0xC3FE, 0x0AA6, - 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123, 0xC44A, 0xC44B, 0x4502, - 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504, 0xC454, 0xC454, 0x24C9, - 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094, 0xC459, 0xC45A, 0x450E, - 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510, 0xC463, 0xC463, 0x1E77, - 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06, 0xC478, 0xC479, 0x452A, - 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C, 0xC480, 0xC480, 0x4530, - 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531, 0xC491, 0xC491, 0x1EAD, - 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8, 0xC494, 0xC497, 0x4540, - 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544, 0xC49A, 0xC49A, 0x20C5, - 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA, 0xC49D, 0xC4A0, 0x4546, - 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A, 0xC544, 0xC544, 0x1FF0, - 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6, 0xC547, 0xC54A, 0x454F, - 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE, 0xC54D, 0xC551, 0x4553, - 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558, 0xC55F, 0xC55F, 0x2161, - 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B, 0xC564, 0xC564, 0x21D9, - 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9, 0xC567, 0xC57E, 0x4567, - 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61, 0xC594, 0xC59B, 0x4592, - 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A, 0xC59E, 0xC59E, 0x1F98, - 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62, 0xC640, 0xC640, 0x459D, - 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E, 0xC644, 0xC644, 0x1F88, - 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8, 0xC648, 0xC662, 0x45A2, - 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD, 0xC672, 0xC672, 0x2336, - 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7, 0xC6A1, 0xC6FE, 0x0BC0, - 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB, 0xC767, 0xC76E, 0x461E, - 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626, 0xC776, 0xC776, 0x1F7D, - 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333, 0xC77C, 0xC77E, 0x4630, - 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E, 0xC840, 0xC840, 0x4654, - 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655, 0xC84F, 0xC84F, 0x2334, - 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1, 0xC853, 0xC865, 0x4664, - 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677, 0xC86E, 0xC86E, 0x2349, - 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B, 0xC880, 0xC886, 0x468D, - 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694, 0xC892, 0xC892, 0x2347, - 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193, 0xC895, 0xC898, 0x469F, - 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3, 0xC89D, 0xC89D, 0x1F62, - 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C, 0xC940, 0xC94E, 0x46A9, - 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348, 0xC951, 0xC96D, 0x46B8, - 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5, 0xC970, 0xC970, 0x2345, - 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12, 0xC978, 0xC97E, 0x46DC, - 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018, 0xC990, 0xC990, 0x2335, - 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C, 0xC99D, 0xC9A0, 0x46FD, - 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701, 0xCA4E, 0xCA4E, 0x266F, - 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351, 0xCA57, 0xCA58, 0x4716, - 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718, 0xCA5C, 0xCA5C, 0x2338, - 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B, 0xCA62, 0xCA6D, 0x471E, - 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A, 0xCA72, 0xCA72, 0x234F, - 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D, 0xCA78, 0xCA7A, 0x4731, - 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331, 0xCA7D, 0xCA7D, 0x4734, - 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735, 0xCA81, 0xCA81, 0x233B, - 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350, 0xCA8A, 0xCA8D, 0x473D, - 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6, 0xCA90, 0xCA91, 0x4741, - 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743, 0xCA9A, 0xCA9A, 0x2355, - 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38, 0xCB40, 0xCB42, 0x4750, - 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753, 0xCB45, 0xCB45, 0x1F74, - 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330, 0xCB48, 0xCB4A, 0x4755, - 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758, 0xCB4E, 0xCB4E, 0x20DA, - 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A, 0xCB58, 0xCB5C, 0x4762, - 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767, 0xCB5F, 0xCB5F, 0x2107, - 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F, 0xCB6B, 0xCB7A, 0x4772, - 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343, 0xCB7D, 0xCB7E, 0x4782, - 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212, 0xCB88, 0xCB8D, 0x478B, - 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791, 0xCB92, 0xCB92, 0x2359, - 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254, 0xCB9D, 0xCB9D, 0x479D, - 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E, 0xCBA1, 0xCBFE, 0x0D96, - 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357, 0xCC42, 0xCC48, 0x47A0, - 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042, 0xCC4B, 0xCC4B, 0x2153, - 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB, 0xCC50, 0xCC5B, 0x47AA, - 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6, 0xCC60, 0xCC60, 0x2356, - 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337, 0xCC65, 0xCC6C, 0x47BC, - 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4, 0xCC79, 0xCC79, 0x2353, - 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061, 0xCC7E, 0xCC7E, 0x47D2, - 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95, 0xCC8F, 0xCC93, 0x47E1, - 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6, 0xCC96, 0xCC96, 0x1F42, - 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8, 0xCC9E, 0xCCA0, 0x47ED, - 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0, 0xCD80, 0xCD8F, 0x482F, - 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F, 0xCD98, 0xCD98, 0x25D7, - 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52, 0xCE40, 0xCE66, 0x484E, - 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875, 0xCE72, 0xCE72, 0x21B2, - 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B, 0xCE81, 0xCE81, 0x219E, - 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC, 0xCE88, 0xCE9A, 0x4891, - 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4, 0xCE9E, 0xCE9E, 0x2226, - 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0, 0xCF40, 0xCF4D, 0x48A8, - 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6, 0xCF55, 0xCF55, 0x227B, - 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE, 0xCF59, 0xCF5B, 0x48BE, - 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1, 0xCF6C, 0xCF6C, 0x25D5, - 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B, 0xCF74, 0xCF74, 0x48D6, - 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7, 0xCF78, 0xCF78, 0x1E89, - 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9, 0xCF7D, 0xCF7E, 0x48DC, - 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211, 0xCF82, 0xCF88, 0x48DF, - 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6, 0xCF8B, 0xCF92, 0x48E6, - 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF, 0xCF95, 0xCF9D, 0x48EE, - 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7, 0xCFA0, 0xCFA0, 0x25D8, - 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8, 0xD04D, 0xD04D, 0x1F29, - 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B, 0xD052, 0xD054, 0x4908, - 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B, 0xD05C, 0xD05C, 0x2297, - 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690, 0xD061, 0xD066, 0x4914, - 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A, 0xD06C, 0xD06C, 0x2198, - 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88, 0xD06F, 0xD07C, 0x491F, - 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D, 0xD080, 0xD0A0, 0x492E, - 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F, 0xD155, 0xD155, 0x25F1, - 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C, 0xD15A, 0xD160, 0x4967, - 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC, 0xD163, 0xD174, 0x496E, - 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980, 0xD17D, 0xD17D, 0x2676, - 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988, 0xD19D, 0xD19D, 0x1FE1, - 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5, 0xD1A1, 0xD1FE, 0x0FCA, - 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7, 0xD243, 0xD243, 0x22DD, - 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD, 0xD24E, 0xD25B, 0x49B2, - 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0, 0xD263, 0xD263, 0x25BC, - 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6, 0xD268, 0xD268, 0x25BF, - 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187, 0xD26E, 0xD26E, 0x49CD, - 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE, 0xD272, 0xD272, 0x1E7F, - 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD, 0xD276, 0xD27E, 0x49D2, - 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96, 0xD28B, 0xD28D, 0x49E5, - 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8, 0xD292, 0xD292, 0x2084, - 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136, 0xD296, 0xD296, 0x49ED, - 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE, 0xD2A0, 0xD2A0, 0x24BA, - 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6, 0xD344, 0xD344, 0x24BC, - 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4, 0xD349, 0xD349, 0x49FD, - 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE, 0xD34D, 0xD34D, 0x24BD, - 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE, 0xD351, 0xD354, 0x4A02, - 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06, 0xD358, 0xD358, 0x1FD2, - 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD, 0xD35C, 0xD35C, 0x4A0A, - 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D, 0xD35F, 0xD377, 0x4A0B, - 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24, 0xD37A, 0xD37A, 0x260A, - 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94, 0xD37D, 0xD37E, 0x4A26, - 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF, 0xD386, 0xD386, 0x1ECB, - 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D, 0xD38B, 0xD38B, 0x1F77, - 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB, 0xD38E, 0xD38E, 0x4A31, - 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32, 0xD391, 0xD391, 0x216F, - 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0, 0xD394, 0xD395, 0x4A34, - 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36, 0xD398, 0xD398, 0x22E2, - 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37, 0xD39B, 0xD39B, 0x1F78, - 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2, 0xD39F, 0xD39F, 0x4A3A, - 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086, 0xD440, 0xD440, 0x4A3B, - 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C, 0xD445, 0xD445, 0x1FD3, - 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5, 0xD448, 0xD44B, 0x4A40, - 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44, 0xD44F, 0xD44F, 0x211F, - 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD, 0xD454, 0xD455, 0x4A49, - 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B, 0xD458, 0xD458, 0x22E7, - 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282, 0xD45D, 0xD461, 0x4A4F, - 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54, 0xD467, 0xD467, 0x22E8, - 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4, 0xD46F, 0xD46F, 0x4A5E, - 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F, 0xD472, 0xD472, 0x22EB, - 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9, 0xD475, 0xD475, 0x20BD, - 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA, 0xD479, 0xD47A, 0x4A63, - 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65, 0xD47E, 0xD47E, 0x1E9E, - 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6, 0xD483, 0xD483, 0x21E7, - 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69, 0xD487, 0xD487, 0x2137, - 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C, 0xD48B, 0xD48B, 0x4A6D, - 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2, 0xD48E, 0xD48E, 0x1F37, - 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E, 0xD491, 0xD491, 0x22EF, - 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10, 0xD494, 0xD494, 0x21C8, - 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1, 0xD497, 0xD49B, 0x4A70, - 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75, 0xD49F, 0xD49F, 0x22EE, - 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4, 0xD540, 0xD542, 0x4A78, - 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E, 0xD545, 0xD545, 0x22EC, - 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B, 0xD54A, 0xD54A, 0x20FE, - 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9, 0xD550, 0xD550, 0x4A81, - 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82, 0xD554, 0xD554, 0x2236, - 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7, 0xD557, 0xD559, 0x4A85, - 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88, 0xD55C, 0xD55C, 0x1E82, - 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89, 0xD55F, 0xD55F, 0x21A4, - 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8, 0xD562, 0xD562, 0x2151, - 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60, 0xD565, 0xD567, 0x4A8B, - 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E, 0xD56C, 0xD56C, 0x2145, - 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC, 0xD56F, 0xD571, 0x4A92, - 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95, 0xD575, 0xD575, 0x1EF5, - 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218, 0xD579, 0xD57A, 0x4A99, - 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B, 0xD57E, 0xD57E, 0x2300, - 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4, 0xD582, 0xD583, 0x4A9E, - 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0, 0xD586, 0xD586, 0x22FD, - 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA, 0xD589, 0xD589, 0x4AA2, - 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3, 0xD58C, 0xD58C, 0x22FB, - 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC, 0xD58F, 0xD58F, 0x2027, - 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060, 0xD594, 0xD594, 0x22FF, - 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE, 0xD599, 0xD599, 0x1EC7, - 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C, 0xD59C, 0xD59E, 0x4AAC, - 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF, 0xD5A1, 0xD5FE, 0x1142, - 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0, 0xD642, 0xD642, 0x230A, - 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1, 0xD647, 0xD647, 0x2303, - 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307, 0xD64A, 0xD64A, 0x230B, - 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F, 0xD64E, 0xD64E, 0x4AB7, - 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8, 0xD652, 0xD652, 0x2302, - 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D, 0xD655, 0xD655, 0x4ABA, - 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB, 0xD658, 0xD658, 0x2308, - 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC, 0xD65B, 0xD65B, 0x4ABD, - 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305, 0xD65E, 0xD65E, 0x2197, - 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171, 0xD661, 0xD661, 0x2298, - 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57, 0xD666, 0xD668, 0x4AC2, - 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5, 0xD66B, 0xD66B, 0x2311, - 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304, 0xD670, 0xD670, 0x4AC9, - 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35, 0xD673, 0xD673, 0x4ACA, - 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310, 0xD676, 0xD676, 0x1FA3, - 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6, 0xD679, 0xD67B, 0x4ACC, - 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF, 0xD680, 0xD682, 0x4AD1, - 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4, 0xD686, 0xD686, 0x2312, - 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313, 0xD689, 0xD68D, 0x4AD6, - 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB, 0xD694, 0xD694, 0x1FBA, - 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078, 0xD69A, 0xD6A0, 0x4AE4, - 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB, 0xD743, 0xD743, 0x2288, - 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316, 0xD749, 0xD749, 0x1F6B, - 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314, 0xD751, 0xD751, 0x4AF8, - 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315, 0xD754, 0xD754, 0x2168, - 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4, 0xD757, 0xD763, 0x4AFA, - 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07, 0xD767, 0xD767, 0x2219, - 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09, 0xD76C, 0xD76C, 0x20D5, - 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A, 0xD770, 0xD774, 0x4B0E, - 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13, 0xD778, 0xD778, 0x1ED3, - 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B, 0xD783, 0xD783, 0x1E49, - 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B, 0xD788, 0xD78A, 0x4B21, - 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8, 0xD78D, 0xD78D, 0x4B24, - 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319, 0xD790, 0xD794, 0x4B25, - 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A, 0xD797, 0xD797, 0x2317, - 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE, 0xD840, 0xD84C, 0x4B34, - 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41, 0xD853, 0xD853, 0x1EFD, - 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71, 0xD890, 0xD890, 0x1E3B, - 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81, 0xD893, 0xD893, 0x1F0C, - 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24, 0xD896, 0xD899, 0x4B82, - 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65, 0xD89C, 0xD89C, 0x1EF0, - 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30, 0xD89F, 0xD89F, 0x2261, - 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257, 0xD940, 0xD940, 0x4B87, - 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB, 0xD943, 0xD943, 0x4B88, - 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8, 0xD946, 0xD946, 0x1F39, - 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48, 0xD949, 0xD949, 0x2070, - 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A, 0xD94C, 0xD94C, 0x24AC, - 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176, 0xD94F, 0xD94F, 0x24AD, - 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B, 0xD952, 0xD952, 0x1F45, - 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B, 0xD955, 0xD955, 0x202F, - 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0, 0xD958, 0xD958, 0x4B8C, - 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F, 0xD95B, 0xD95B, 0x4B8D, - 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E, 0xD963, 0xD963, 0x24B2, - 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51, 0xD966, 0xD966, 0x4B94, - 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95, 0xD96C, 0xD96C, 0x24B3, - 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F, 0xD96F, 0xD96F, 0x4B9A, - 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B, 0xD972, 0xD972, 0x20B4, - 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB, 0xD975, 0xD975, 0x2072, - 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C, 0xD978, 0xD978, 0x1F0A, - 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D, 0xD97C, 0xD97C, 0x2291, - 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278, 0xD980, 0xD980, 0x1ED4, - 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3, 0xD988, 0xD98C, 0x4BA5, - 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7, 0xD98F, 0xD98F, 0x1F28, - 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7, 0xD992, 0xD996, 0x4BAA, - 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1, 0xD999, 0xD99A, 0x4BAF, - 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1, 0xD99D, 0xD99D, 0x225B, - 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2, 0xD9A0, 0xD9A0, 0x2115, - 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3, 0xDA41, 0xDA41, 0x222A, - 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4, 0xDA48, 0xDA48, 0x213D, - 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15, 0xDA4E, 0xDA4E, 0x225C, - 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14, 0xDA74, 0xDA76, 0x4BE1, - 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4, 0xDA80, 0xDA84, 0x4BEB, - 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0, 0xDA8E, 0xDA8E, 0x25F8, - 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313, 0xDB40, 0xDB5F, 0x4C0A, - 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A, 0xDB78, 0xDB78, 0x2230, - 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47, 0xDB84, 0xDB84, 0x25FD, - 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600, 0xDB8C, 0xDB97, 0x4C51, - 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D, 0xDBA1, 0xDBFE, 0x1371, - 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF, 0xDC46, 0xDC4E, 0x4C6A, - 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C, 0xDC51, 0xDC51, 0x2602, - 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D, 0xDC54, 0xDC54, 0x4C74, - 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE, 0xDC57, 0xDC57, 0x2603, - 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601, 0xDC5E, 0xDC61, 0x4C7A, - 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E, 0xDC66, 0xDC66, 0x1EA3, - 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81, 0xDC6B, 0xDC6B, 0x2607, - 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0, 0xDC7D, 0xDC7E, 0x4C94, - 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B, 0xDC88, 0xDC88, 0x2267, - 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6, 0xDC8B, 0xDC8D, 0x4C9D, - 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0, 0xDC90, 0xDC90, 0x248C, - 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D, 0xDC98, 0xDC9A, 0x4CA7, - 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA, 0xDCA0, 0xDCA0, 0x2494, - 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE, 0xDD46, 0xDD46, 0x2493, - 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E, 0xDD4E, 0xDD52, 0x4CBA, - 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491, 0xDD55, 0xDD55, 0x2496, - 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492, 0xDD58, 0xDD58, 0x4CBF, - 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0, 0xDD5E, 0xDD5E, 0x1FB1, - 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A, 0xDD61, 0xDD61, 0x4CC5, - 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6, 0xDD64, 0xDD64, 0x2258, - 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7, 0xDD6D, 0xDD6D, 0x249B, - 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09, 0xDD70, 0xDD70, 0x20E6, - 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026, 0xDD77, 0xDD77, 0x249F, - 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D, 0xDD7B, 0xDD7E, 0x4CD4, - 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B, 0xDD82, 0xDD82, 0x249C, - 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A, 0xDD86, 0xDD86, 0x205B, - 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70, 0xDD8C, 0xDD8E, 0x4CDF, - 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2, 0xDD94, 0xDD94, 0x213B, - 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07, 0xDD98, 0xDD99, 0x4CE8, - 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237, 0xDD9C, 0xDD9D, 0x4CEA, - 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC, 0xDDA0, 0xDDA0, 0x21B3, - 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245, 0xDE41, 0xDE41, 0x24A1, - 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8, 0xDE45, 0xDE47, 0x4CEF, - 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0, 0xDE4A, 0xDE4E, 0x4CF2, - 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7, 0xDE5A, 0xDE5A, 0x1F46, - 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380, 0xDE5D, 0xDE5D, 0x2495, - 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490, 0xDE60, 0xDE6A, 0x4D03, - 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E, 0xDE6F, 0xDE6F, 0x1E9D, - 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A, 0xDE72, 0xDE72, 0x20AA, - 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D, 0xDE92, 0xDE92, 0x267B, - 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2, 0xDEA0, 0xDEA0, 0x4D3B, - 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E, 0xDF41, 0xDF41, 0x4D3C, - 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D, 0xDF4D, 0xDF4D, 0x1FBB, - 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253, 0xDF5D, 0xDF5D, 0x4D55, - 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6, 0xDF60, 0xDF60, 0x218E, - 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC, 0xDF65, 0xDF65, 0x4D59, - 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A, 0xDF68, 0xDF68, 0x224A, - 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133, 0xDF6E, 0xDF73, 0x4D5F, - 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65, 0xDF77, 0xDF77, 0x20CF, - 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67, 0xDF7A, 0xDF7A, 0x220F, - 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029, 0xDF7D, 0xDF7D, 0x4D69, - 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55, 0xDF81, 0xDF82, 0x4D6A, - 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C, 0xDF85, 0xDF85, 0x1E46, - 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063, 0xDF8A, 0xDF8A, 0x23F3, - 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9, 0xE040, 0xE04F, 0x4D86, - 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96, 0xE05D, 0xE05D, 0x2233, - 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320, 0xE06A, 0xE06B, 0x4DAD, - 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF, 0xE075, 0xE075, 0x22BC, - 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C, 0xE078, 0xE078, 0x4DB8, - 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9, 0xE080, 0xE086, 0x4DBE, - 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5, 0xE08D, 0xE08D, 0x2287, - 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D, 0xE090, 0xE090, 0x1EAB, - 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D, 0xE093, 0xE093, 0x4DCC, - 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD, 0xE097, 0xE097, 0x231B, - 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547, 0xE140, 0xE141, 0x4DD8, - 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA, 0xE164, 0xE164, 0x2255, - 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F, 0xE169, 0xE173, 0x4DFE, - 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4, 0xE176, 0xE17E, 0x4E09, - 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B, 0xE185, 0xE185, 0x21D8, - 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA, 0xE188, 0xE188, 0x4E17, - 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18, 0xE18C, 0xE18C, 0x2134, - 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3, 0xE191, 0xE191, 0x24F8, - 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7, 0xE194, 0xE194, 0x1EC8, - 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C, 0xE198, 0xE198, 0x2280, - 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5, 0xE19F, 0xE19F, 0x24FB, - 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5, 0xE240, 0xE240, 0x4E24, - 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25, 0xE243, 0xE243, 0x1EED, - 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD, 0xE250, 0xE250, 0x4E31, - 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32, 0xE253, 0xE253, 0x24FE, - 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33, 0xE25A, 0xE25A, 0x2508, - 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38, 0xE25E, 0xE25E, 0x2506, - 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF, 0xE263, 0xE263, 0x2090, - 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD, 0xE268, 0xE268, 0x1F25, - 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503, 0xE26B, 0xE26B, 0x2502, - 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A, 0xE26F, 0xE26F, 0x20A6, - 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5, 0xE279, 0xE27C, 0x4E4B, - 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F, 0xE280, 0xE280, 0x2507, - 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505, 0xE283, 0xE288, 0x4E50, - 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56, 0xE28B, 0xE28B, 0x2515, - 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C, 0xE28F, 0xE28F, 0x2031, - 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B, 0xE293, 0xE293, 0x250F, - 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509, 0xE296, 0xE297, 0x4E5B, - 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234, 0xE29A, 0xE29A, 0x2513, - 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D, 0xE2A0, 0xE2A0, 0x2501, - 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61, 0xE342, 0xE342, 0x2517, - 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63, 0xE347, 0xE347, 0x2518, - 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56, 0xE34C, 0xE34E, 0x4E69, - 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C, 0xE351, 0xE351, 0x20D3, - 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A, 0xE355, 0xE355, 0x20CE, - 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510, 0xE359, 0xE35B, 0x4E71, - 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74, 0xE360, 0xE360, 0x250A, - 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511, 0xE368, 0xE370, 0x4E7C, - 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85, 0xE373, 0xE373, 0x251E, - 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86, 0xE378, 0xE378, 0x252D, - 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89, 0xE37C, 0xE37C, 0x2532, - 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B, 0xE380, 0xE389, 0x4E8C, - 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96, 0xE38C, 0xE38C, 0x252C, - 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528, 0xE390, 0xE390, 0x4E99, - 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A, 0xE393, 0xE393, 0x252F, - 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC, 0xE396, 0xE398, 0x4E9C, - 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F, 0xE39C, 0xE39C, 0x2535, - 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D, 0xE39F, 0xE39F, 0x2526, - 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661, 0xE440, 0xE440, 0x2534, - 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F, 0xE443, 0xE443, 0x2531, - 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3, 0xE448, 0xE448, 0x2525, - 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD, 0xE44F, 0xE44F, 0x4EAB, - 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC, 0xE452, 0xE452, 0x2172, - 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD, 0xE458, 0xE458, 0x204F, - 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543, 0xE45B, 0xE45B, 0x4EB2, - 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3, 0xE45E, 0xE45E, 0x1E3C, - 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529, 0xE463, 0xE464, 0x4EB7, - 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9, 0xE468, 0xE468, 0x1EFF, - 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F, 0xE474, 0xE474, 0x4EC5, - 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6, 0xE479, 0xE479, 0x2523, - 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A, 0xE47C, 0xE47C, 0x2545, - 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D, 0xE480, 0xE480, 0x4ECA, - 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB, 0xE484, 0xE484, 0x2103, - 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C, 0xE487, 0xE487, 0x253B, - 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD, 0xE48D, 0xE48D, 0x2540, - 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD, 0xE490, 0xE492, 0x4ED2, - 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5, 0xE498, 0xE498, 0x254B, - 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547, 0xE49E, 0xE49F, 0x254F, - 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF, 0xE540, 0xE545, 0x4EDE, - 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4, 0xE548, 0xE548, 0x2546, - 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C, 0xE54C, 0xE54D, 0x4EE7, - 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552, 0xE550, 0xE550, 0x2530, - 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9, 0xE555, 0xE555, 0x2551, - 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC, 0xE558, 0xE558, 0x20D2, - 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8, 0xE55D, 0xE55D, 0x4EF0, - 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1, 0xE561, 0xE561, 0x21AB, - 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D, 0xE565, 0xE565, 0x1EA5, - 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C, 0xE569, 0xE569, 0x2080, - 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D, 0xE56D, 0xE56D, 0x4EF9, - 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA, 0xE575, 0xE575, 0x254A, - 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00, 0xE578, 0xE578, 0x254E, - 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC, 0xE57C, 0xE57C, 0x2554, - 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05, 0xE581, 0xE581, 0x1F3C, - 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5, 0xE584, 0xE589, 0x4F07, - 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D, 0xE58E, 0xE58E, 0x2268, - 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6, 0xE592, 0xE599, 0x4F12, - 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553, 0xE59C, 0xE59E, 0x4F1A, - 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D, 0xE5A1, 0xE5FE, 0x171D, - 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E, 0xE644, 0xE644, 0x2559, - 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97, 0xE64A, 0xE64A, 0x2555, - 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D, 0xE64F, 0xE651, 0x4F28, - 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B, 0xE656, 0xE656, 0x207C, - 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A, 0xE659, 0xE65A, 0x4F2F, - 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31, 0xE65E, 0xE65E, 0x1E34, - 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E, 0xE66A, 0xE66A, 0x4F3D, - 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E, 0xE675, 0xE675, 0x21A2, - 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47, 0xE679, 0xE679, 0x2563, - 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49, 0xE67C, 0xE67C, 0x252E, - 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A, 0xE680, 0xE680, 0x1F1B, - 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283, 0xE683, 0xE683, 0x4F4C, - 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D, 0xE687, 0xE687, 0x20A0, - 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565, 0xE68A, 0xE68B, 0x4F50, - 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52, 0xE693, 0xE693, 0x2562, - 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C, 0xE698, 0xE69A, 0x4F5B, - 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020, 0xE69D, 0xE69E, 0x4F5E, - 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A, 0xE6A1, 0xE6FE, 0x177B, - 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E, 0xE744, 0xE747, 0x4F63, - 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C, 0xE74A, 0xE74C, 0x4F67, - 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B, 0xE750, 0xE750, 0x1E6F, - 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4, 0xE753, 0xE753, 0x2567, - 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B, 0xE756, 0xE758, 0x4F6C, - 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F, 0xE766, 0xE766, 0x252B, - 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571, 0xE769, 0xE769, 0x4F7C, - 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D, 0xE774, 0xE774, 0x2522, - 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533, 0xE77D, 0xE77E, 0x4F8D, - 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A, 0xE783, 0xE783, 0x4F91, - 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573, 0xE786, 0xE786, 0x256F, - 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293, 0xE78B, 0xE78B, 0x2578, - 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570, 0xE790, 0xE791, 0x4F98, - 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A, 0xE798, 0xE799, 0x2541, - 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F, 0xE7A0, 0xE7A0, 0x201A, - 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4, 0xE843, 0xE843, 0x257A, - 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7, 0xE846, 0xE846, 0x2177, - 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B, 0xE84A, 0xE84A, 0x4FAA, - 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB, 0xE84F, 0xE84F, 0x257B, - 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3, 0xE855, 0xE859, 0x4FB2, - 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7, 0xE85C, 0xE85C, 0x2566, - 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93, 0xE863, 0xE863, 0x4FBD, - 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE, 0xE870, 0xE870, 0x2514, - 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D, 0xE874, 0xE874, 0x4FCB, - 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC, 0xE87C, 0xE87C, 0x2574, - 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E, 0xE881, 0xE881, 0x4FD4, - 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5, 0xE887, 0xE887, 0x209F, - 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576, 0xE88A, 0xE88B, 0x4FDA, - 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF, 0xE88E, 0xE88E, 0x261C, - 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC, 0xE8A1, 0xE8FE, 0x1837, - 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75, 0xE94D, 0xE953, 0x4FF9, - 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000, 0xE956, 0xE956, 0x23BF, - 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001, 0xE95A, 0xE95A, 0x23C0, - 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45, 0xE95E, 0xE95E, 0x5005, - 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4, 0xE961, 0xE961, 0x5006, - 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104, 0xE964, 0xE964, 0x5007, - 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008, 0xE967, 0xE967, 0x1F87, - 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009, 0xE96C, 0xE96C, 0x2269, - 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43, 0xE976, 0xE976, 0x5014, - 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679, 0xE979, 0xE979, 0x1EEB, - 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35, 0xE97D, 0xE97D, 0x208A, - 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7, 0xE981, 0xE981, 0x23C9, - 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018, 0xE987, 0xE987, 0x224F, - 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB, 0xE98C, 0xE98D, 0x501F, - 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021, 0xE990, 0xE990, 0x21F7, - 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE, 0xE993, 0xE993, 0x23CA, - 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022, 0xE998, 0xE998, 0x23D0, - 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C, 0xE99C, 0xE99C, 0x5027, - 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028, 0xE99F, 0xE99F, 0x1FEE, - 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895, 0xEA40, 0xEA40, 0x1FF8, - 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3, 0xEA45, 0xEA47, 0x502C, - 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4, 0xEA4A, 0xEA4A, 0x1E98, - 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C, 0xEA51, 0xEA51, 0x5034, - 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035, 0xEA55, 0xEA55, 0x1E71, - 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037, 0xEA59, 0xEA59, 0x23C5, - 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A, 0xEA81, 0xEA83, 0x505E, - 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061, 0xEA87, 0xEA87, 0x2284, - 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C, 0xEA8F, 0xEA8F, 0x5069, - 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D, 0xEA92, 0xEA95, 0x506A, - 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E, 0xEAA0, 0xEAA0, 0x1ED9, - 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077, 0xEB41, 0xEB41, 0x1FB2, - 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252, 0xEB46, 0xEB47, 0x507B, - 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D, 0xEB53, 0xEB53, 0x2157, - 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF, 0xEB56, 0xEB5A, 0x5088, - 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D, 0xEB5D, 0xEB5D, 0x203D, - 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015, 0xEB61, 0xEB61, 0x5090, - 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091, 0xEB6D, 0xEB6D, 0x2156, - 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144, 0xEB71, 0xEB71, 0x509D, - 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257, 0xEB74, 0xEB77, 0x509E, - 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092, 0xEB7A, 0xEB7E, 0x50A2, - 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250, 0xEB86, 0xEB89, 0x50AC, - 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0, 0xEBA1, 0xEBFE, 0x1951, - 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8, 0xEC47, 0xEC55, 0x50CC, - 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB, 0xEC5A, 0xEC5A, 0x260C, - 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E, 0xEC5D, 0xEC5F, 0x50DF, - 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2, 0xEC6E, 0xEC6E, 0x260B, - 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3, 0xEC77, 0xEC7E, 0x50F6, - 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23, 0xEC97, 0xECA0, 0x5114, - 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E, 0xED46, 0xED46, 0x2695, - 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E, 0xED59, 0xED5D, 0x5135, - 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A, 0xED61, 0xED61, 0x2692, - 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F, 0xED65, 0xED65, 0x513E, - 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD, 0xED68, 0xED6D, 0x513F, - 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145, 0xED74, 0xED74, 0x2465, - 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467, 0xED78, 0xED78, 0x514C, - 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D, 0xED80, 0xED90, 0x5152, - 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163, 0xED93, 0xED93, 0x2209, - 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9, 0xED96, 0xED96, 0x5164, - 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146, 0xED99, 0xED99, 0x25C5, - 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165, 0xED9C, 0xED9C, 0x245E, - 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F, 0xED9F, 0xED9F, 0x5167, - 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D, 0xEE40, 0xEE40, 0x25C7, - 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A, 0xEE43, 0xEE43, 0x1E2F, - 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168, 0xEE48, 0xEE48, 0x20BF, - 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B, 0xEE4D, 0xEE4D, 0x25C9, - 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8, 0xEE53, 0xEE54, 0x5172, - 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174, 0xEE57, 0xEE57, 0x25CB, - 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D, 0xEE5F, 0xEE60, 0x517B, - 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D, 0xEE68, 0xEE68, 0x25CC, - 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183, 0xEE6C, 0xEE6C, 0x20B9, - 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181, 0xEE6F, 0xEE76, 0x5186, - 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E, 0xEE7D, 0xEE7D, 0x2173, - 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD, 0xEE81, 0xEE84, 0x5193, - 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6, 0xEE87, 0xEE89, 0x5197, - 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1, 0xEE8C, 0xEE8C, 0x519A, - 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B, 0xEE90, 0xEE90, 0x2008, - 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0, 0xEE95, 0xEE96, 0x51A0, - 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2, 0xEE99, 0xEE99, 0x1F2A, - 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72, 0xEE9E, 0xEE9E, 0x25D3, - 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B, 0xEF40, 0xEF40, 0x21BE, - 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044, 0xEF43, 0xEF43, 0x51A8, - 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3, 0xEF46, 0xEF4B, 0x51A9, - 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF, 0xEF52, 0xEF53, 0x24CC, - 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698, 0xEF56, 0xEF56, 0x51B5, - 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6, 0xEF5A, 0xEF5A, 0x24CE, - 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF, 0xEF61, 0xEF67, 0x51BD, - 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4, 0xEF6A, 0xEF6A, 0x24D0, - 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1, 0xEF6D, 0xEF76, 0x51C6, - 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0, 0xEF7A, 0xEF7A, 0x239B, - 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E, 0xEF7D, 0xEF7E, 0x51D3, - 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D, 0xEF83, 0xEF84, 0x239F, - 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1, 0xEF87, 0xEF87, 0x51D8, - 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9, 0xEF8B, 0xEF8B, 0x221E, - 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2, 0xEF8E, 0xEF94, 0x51DC, - 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36, 0xEF97, 0xEF97, 0x2135, - 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD, 0xEF9D, 0xEF9D, 0x51E7, - 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8, 0xEFA1, 0xEFFE, 0x1AC9, - 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3, 0xF042, 0xF042, 0x2203, - 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7, 0xF045, 0xF046, 0x51EC, - 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097, 0xF049, 0xF049, 0x1EE4, - 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238, 0xF04F, 0xF050, 0x51F2, - 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4, 0xF054, 0xF054, 0x1F9A, - 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3, 0xF058, 0xF05D, 0x51F8, - 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE, 0xF068, 0xF068, 0x239C, - 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6, 0xF06D, 0xF070, 0x520A, - 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E, 0xF073, 0xF073, 0x2035, - 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F, 0xF078, 0xF078, 0x23A8, - 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075, 0xF07B, 0xF07C, 0x5213, - 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB, 0xF081, 0xF081, 0x1FEB, - 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215, 0xF087, 0xF087, 0x1F6A, - 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219, 0xF08B, 0xF08B, 0x2666, - 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667, 0xF091, 0xF091, 0x521F, - 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220, 0xF096, 0xF096, 0x23AD, - 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27, 0xF140, 0xF151, 0x522D, - 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242, 0xF154, 0xF154, 0x1F02, - 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183, 0xF158, 0xF158, 0x5241, - 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9, 0xF15B, 0xF166, 0x5242, - 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E, 0xF176, 0xF176, 0x22A5, - 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA, 0xF179, 0xF179, 0x525C, - 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82, 0xF17C, 0xF17D, 0x525D, - 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404, 0xF181, 0xF181, 0x525F, - 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260, 0xF184, 0xF184, 0x2184, - 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403, 0xF187, 0xF187, 0x5262, - 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B, 0xF18A, 0xF193, 0x5263, - 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D, 0xF198, 0xF198, 0x2067, - 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85, 0xF240, 0xF244, 0x5278, - 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D, 0xF247, 0xF247, 0x1E83, - 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F, 0xF24C, 0xF252, 0x5281, - 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7, 0xF255, 0xF255, 0x240D, - 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412, 0xF25D, 0xF25E, 0x528E, - 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290, 0xF271, 0xF271, 0x23F0, - 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411, 0xF274, 0xF274, 0x2414, - 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170, 0xF277, 0xF27B, 0x52A3, - 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C, 0xF27E, 0xF27E, 0x2415, - 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066, 0xF286, 0xF286, 0x52AD, - 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413, 0xF289, 0xF289, 0x2410, - 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1, 0xF28D, 0xF290, 0x52AE, - 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2, 0xF294, 0xF294, 0x2409, - 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418, 0xF297, 0xF29B, 0x52B5, - 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA, 0xF29E, 0xF29E, 0x21FC, - 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3, 0xF340, 0xF340, 0x1FC1, - 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD, 0xF345, 0xF345, 0x229C, - 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E, 0xF349, 0xF349, 0x52C2, - 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419, 0xF34C, 0xF34F, 0x52C3, - 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7, 0xF361, 0xF361, 0x1E29, - 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661, 0xF375, 0xF375, 0x52E9, - 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174, 0xF378, 0xF378, 0x2663, - 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA, 0xF380, 0xF38B, 0x52EF, - 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB, 0xF3A0, 0xF3A0, 0x214C, - 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E, 0xF445, 0xF445, 0x267A, - 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0, 0xF451, 0xF456, 0x531D, - 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323, 0xF459, 0xF459, 0x1ED0, - 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096, 0xF45C, 0xF45C, 0x5325, - 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326, 0xF462, 0xF462, 0x23C8, - 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E, 0xF465, 0xF474, 0x532B, - 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B, 0xF47C, 0xF47C, 0x2664, - 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239, 0xF480, 0xF493, 0x5342, - 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356, 0xF499, 0xF499, 0x261F, - 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E, 0xF49D, 0xF4A0, 0x535C, - 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360, 0xF545, 0xF545, 0x2620, - 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621, 0xF548, 0xF551, 0x5366, - 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370, 0xF554, 0xF554, 0x2627, - 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625, 0xF557, 0xF55D, 0x5371, - 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378, 0xF561, 0xF561, 0x262E, - 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A, 0xF56E, 0xF56E, 0x262A, - 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385, 0xF571, 0xF571, 0x2628, - 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386, 0xF580, 0xF584, 0x5392, - 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630, 0xF587, 0xF58B, 0x5397, - 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C, 0xF58E, 0xF58E, 0x200D, - 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D, 0xF599, 0xF599, 0x2645, - 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A, 0xF59C, 0xF59F, 0x53A7, - 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD, 0xF640, 0xF640, 0x53AB, - 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC, 0xF645, 0xF645, 0x263D, - 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF, 0xF648, 0xF648, 0x263E, - 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F, 0xF64C, 0xF64C, 0x1FC0, - 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B, 0xF650, 0xF653, 0x53B3, - 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7, 0xF658, 0xF658, 0x2644, - 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639, 0xF662, 0xF662, 0x53C2, - 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3, 0xF66C, 0xF66C, 0x2647, - 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB, 0xF671, 0xF671, 0x2649, - 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648, 0xF675, 0xF675, 0x53D0, - 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108, 0xF678, 0xF67E, 0x53D1, - 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D, 0xF686, 0xF687, 0x53DD, - 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF, 0xF68A, 0xF68A, 0x2651, - 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650, 0xF68E, 0xF68E, 0x2652, - 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F, 0xF693, 0xF695, 0x53E5, - 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E, 0xF698, 0xF698, 0x2653, - 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657, 0xF69B, 0xF69B, 0x53E9, - 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA, 0xF69E, 0xF69E, 0x2633, - 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656, 0xF6A1, 0xF6FE, 0x1D5B, - 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654, 0xF743, 0xF748, 0x53EE, - 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4, 0xF74C, 0xF74C, 0x2655, - 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6, 0xF756, 0xF756, 0x265B, - 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A, 0xF759, 0xF759, 0x53FF, - 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E, 0xF75C, 0xF75C, 0x262F, - 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646, 0xF762, 0xF762, 0x5404, - 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405, 0xF76B, 0xF76B, 0x265C, - 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C, 0xF772, 0xF77B, 0x5411, - 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B, 0xF77E, 0xF77E, 0x2631, - 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9, 0xF840, 0xF841, 0x543D, - 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F, 0xF846, 0xF846, 0x2580, - 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC, 0xF84A, 0xF84F, 0x5444, - 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B, 0xF852, 0xF852, 0x544A, - 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B, 0xF863, 0xF863, 0x2583, - 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A, 0xF866, 0xF866, 0x21EE, - 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182, 0xF873, 0xF877, 0x5466, - 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B, 0xF87A, 0xF87A, 0x2587, - 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588, 0xF87D, 0xF87E, 0x546D, - 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584, 0xF882, 0xF883, 0x5470, - 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472, 0xF886, 0xF886, 0x21EF, - 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A, 0xF88E, 0xF88E, 0x258C, - 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47, 0xF89A, 0xF89C, 0x5483, - 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486, 0xF8A0, 0xF8A0, 0x258D, - 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0, 0xF94F, 0xF94F, 0x2592, - 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496, 0xF959, 0xF959, 0x2594, - 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E, 0xF95D, 0xF95D, 0x2591, - 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0, 0xF967, 0xF967, 0x2597, - 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6, 0xF96A, 0xF96B, 0x54A9, - 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB, 0xF96F, 0xF96F, 0x20F6, - 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC, 0xF985, 0xF985, 0x2585, - 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599, 0xF988, 0xF990, 0x54C2, - 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB, 0xF996, 0xF996, 0x259A, - 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B, 0xF999, 0xF9A0, 0x54D0, - 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D, 0xFA43, 0xFA45, 0x54DA, - 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD, 0xFA4C, 0xFA4C, 0x234C, - 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44, 0xFA52, 0xFA57, 0x54E6, - 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0, 0xFA5A, 0xFA5C, 0x54EC, - 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF, 0xFA5F, 0xFA5F, 0x259F, - 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C, 0xFA62, 0xFA6F, 0x54F1, - 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF, 0xFA74, 0xFA74, 0x20AE, - 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B, 0xFA77, 0xFA77, 0x25A3, - 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A, 0xFA83, 0xFA83, 0x2589, - 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D, 0xFA8D, 0xFA8D, 0x25A4, - 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6, 0xFA91, 0xFA91, 0x2593, - 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7, 0xFA97, 0xFA97, 0x2222, - 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B, 0xFB40, 0xFB48, 0x5523, - 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C, 0xFB52, 0xFB52, 0x2586, - 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1, 0xFB58, 0xFB58, 0x25AA, - 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590, 0xFB5B, 0xFB5B, 0x258E, - 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688, 0xFB76, 0xFB78, 0x5552, - 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB, 0xFB7B, 0xFB7B, 0x5555, - 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4, 0xFB7E, 0xFB7E, 0x5556, - 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F, 0xFB91, 0xFB9B, 0x5567, - 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572, 0xFB9F, 0xFB9F, 0x25F7, - 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575, 0xFC44, 0xFC44, 0x2696, - 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F, 0xFC4A, 0xFC59, 0x557D, - 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D, 0xFC63, 0xFC63, 0x1EC1, - 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3, 0xFC69, 0xFC6E, 0x5599, - 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F, 0xFC71, 0xFC71, 0x268A, - 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669, 0xFC75, 0xFC76, 0x55A2, - 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4, 0xFC80, 0xFC82, 0x55AA, - 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD, 0xFC8A, 0xFC8A, 0x2673, - 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9, 0xFD52, 0xFD52, 0x20C6, - 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB, 0xFD57, 0xFD57, 0x24D3, - 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE, 0xFD5A, 0xFD5A, 0x260F, - 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611, 0xFD60, 0xFD61, 0x55E3, - 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5, 0xFD65, 0xFD65, 0x2610, - 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030, 0xFD68, 0xFD68, 0x55E7, - 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8, 0xFD6C, 0xFD6C, 0x2614, - 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616, 0xFD71, 0xFD71, 0x55ED, - 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE, 0xFD78, 0xFD78, 0x20F2, - 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617, 0xFD7E, 0xFD7E, 0x55F7, - 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037, 0xFD89, 0xFD8A, 0x5600, - 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602, 0xFD8F, 0xFD8F, 0x1F22, - 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605, 0xFD94, 0xFD94, 0x1F34, - 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02, 0xFD9E, 0xFD9E, 0x40D3, - 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083, 0xFE40, 0xFE40, 0x1259, - 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp deleted file mode 100644 index 094d72be05..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBKp_EUC_V_2[20 * 3] = { - 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, - 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, - 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, - 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, - 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, - 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, - 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp deleted file mode 100644 index 48af788ceb..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBpc_EUC_H_0[91 * 3] = { - 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x1E20, 0x00FD, 0x00FF, 0x1E21, - 0xA1A1, 0xA1FE, 0x0060, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0, - 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164, - 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225, - 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, 0xA8A1, 0xA8C0, 0x029C, - 0xA8C5, 0xA8EA, 0x02BC, 0xA9A4, 0xA9EF, 0x02E2, 0xAAA1, 0xAAFE, 0x032E, - 0xABA1, 0xABC0, 0x038C, 0xB0A1, 0xB0FE, 0x03AC, 0xB1A1, 0xB1FE, 0x040A, - 0xB2A1, 0xB2FE, 0x0468, 0xB3A1, 0xB3FE, 0x04C6, 0xB4A1, 0xB4FE, 0x0524, - 0xB5A1, 0xB5FE, 0x0582, 0xB6A1, 0xB6FE, 0x05E0, 0xB7A1, 0xB7FE, 0x063E, - 0xB8A1, 0xB8FE, 0x069C, 0xB9A1, 0xB9FE, 0x06FA, 0xBAA1, 0xBAFE, 0x0758, - 0xBBA1, 0xBBFE, 0x07B6, 0xBCA1, 0xBCFE, 0x0814, 0xBDA1, 0xBDFE, 0x0872, - 0xBEA1, 0xBEFE, 0x08D0, 0xBFA1, 0xBFFE, 0x092E, 0xC0A1, 0xC0FE, 0x098C, - 0xC1A1, 0xC1FE, 0x09EA, 0xC2A1, 0xC2FE, 0x0A48, 0xC3A1, 0xC3FE, 0x0AA6, - 0xC4A1, 0xC4FE, 0x0B04, 0xC5A1, 0xC5FE, 0x0B62, 0xC6A1, 0xC6FE, 0x0BC0, - 0xC7A1, 0xC7FE, 0x0C1E, 0xC8A1, 0xC8FE, 0x0C7C, 0xC9A1, 0xC9FE, 0x0CDA, - 0xCAA1, 0xCAFE, 0x0D38, 0xCBA1, 0xCBFE, 0x0D96, 0xCCA1, 0xCCFE, 0x0DF4, - 0xCDA1, 0xCDFE, 0x0E52, 0xCEA1, 0xCEFE, 0x0EB0, 0xCFA1, 0xCFFE, 0x0F0E, - 0xD0A1, 0xD0FE, 0x0F6C, 0xD1A1, 0xD1FE, 0x0FCA, 0xD2A1, 0xD2FE, 0x1028, - 0xD3A1, 0xD3FE, 0x1086, 0xD4A1, 0xD4FE, 0x10E4, 0xD5A1, 0xD5FE, 0x1142, - 0xD6A1, 0xD6FE, 0x11A0, 0xD7A1, 0xD7F9, 0x11FE, 0xD8A1, 0xD8FE, 0x1257, - 0xD9A1, 0xD9FE, 0x12B5, 0xDAA1, 0xDAFE, 0x1313, 0xDBA1, 0xDBFE, 0x1371, - 0xDCA1, 0xDCFE, 0x13CF, 0xDDA1, 0xDDFE, 0x142D, 0xDEA1, 0xDEFE, 0x148B, - 0xDFA1, 0xDFFE, 0x14E9, 0xE0A1, 0xE0FE, 0x1547, 0xE1A1, 0xE1FE, 0x15A5, - 0xE2A1, 0xE2FE, 0x1603, 0xE3A1, 0xE3FE, 0x1661, 0xE4A1, 0xE4FE, 0x16BF, - 0xE5A1, 0xE5FE, 0x171D, 0xE6A1, 0xE6FE, 0x177B, 0xE7A1, 0xE7FE, 0x17D9, - 0xE8A1, 0xE8FE, 0x1837, 0xE9A1, 0xE9FE, 0x1895, 0xEAA1, 0xEAFE, 0x18F3, - 0xEBA1, 0xEBFE, 0x1951, 0xECA1, 0xECFE, 0x19AF, 0xEDA1, 0xEDFE, 0x1A0D, - 0xEEA1, 0xEEFE, 0x1A6B, 0xEFA1, 0xEFFE, 0x1AC9, 0xF0A1, 0xF0FE, 0x1B27, - 0xF1A1, 0xF1FE, 0x1B85, 0xF2A1, 0xF2FE, 0x1BE3, 0xF3A1, 0xF3FE, 0x1C41, - 0xF4A1, 0xF4FE, 0x1C9F, 0xF5A1, 0xF5FE, 0x1CFD, 0xF6A1, 0xF6FE, 0x1D5B, - 0xF7A1, 0xF7FE, 0x1DB9, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp deleted file mode 100644 index de80fe7a2d..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_GBpc_EUC_V_0[20 * 3] = { - 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256, - 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246, - 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244, - 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240, - 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D, - 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254, - 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp deleted file mode 100644 index 04423f1262..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp +++ /dev/null @@ -1,4619 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_UniGB_UCS2_H_4[13825 * 3] = { - 0x0020, 0x007E, 0x0001, 0x00A4, 0x00A4, 0x00A7, 0x00A5, 0x00A5, 0x5752, - 0x00A7, 0x00A7, 0x00AB, 0x00A8, 0x00A8, 0x0066, 0x00B0, 0x00B0, 0x00A2, - 0x00B1, 0x00B1, 0x007F, 0x00D7, 0x00D7, 0x0080, 0x00E0, 0x00E0, 0x029F, - 0x00E1, 0x00E1, 0x029D, 0x00E8, 0x00E8, 0x02A3, 0x00E9, 0x00E9, 0x02A1, - 0x00EA, 0x00EA, 0x02B5, 0x00EC, 0x00EC, 0x02A7, 0x00ED, 0x00ED, 0x02A5, - 0x00F2, 0x00F2, 0x02AB, 0x00F3, 0x00F3, 0x02A9, 0x00F7, 0x00F7, 0x0081, - 0x00F9, 0x00F9, 0x02AF, 0x00FA, 0x00FA, 0x02AD, 0x00FC, 0x00FC, 0x02B4, - 0x0101, 0x0101, 0x029C, 0x0113, 0x0113, 0x02A0, 0x011B, 0x011B, 0x02A2, - 0x012B, 0x012B, 0x02A4, 0x014D, 0x014D, 0x02A8, 0x016B, 0x016B, 0x02AC, - 0x01CE, 0x01CE, 0x029E, 0x01D0, 0x01D0, 0x02A6, 0x01D2, 0x01D2, 0x02AA, - 0x01D4, 0x01D4, 0x02AE, 0x01D6, 0x01D6, 0x02B0, 0x01D8, 0x01D8, 0x02B1, - 0x01DA, 0x01DA, 0x02B2, 0x01DC, 0x01DC, 0x02B3, 0x01F9, 0x01F9, 0x02BA, - 0x02C7, 0x02C7, 0x0065, 0x02C9, 0x02C9, 0x0064, 0x02CA, 0x02CB, 0x26B3, - 0x02D9, 0x02D9, 0x26B5, 0x0391, 0x03A1, 0x020D, 0x03A3, 0x03A9, 0x021E, - 0x03B1, 0x03C1, 0x0225, 0x03C3, 0x03C9, 0x0236, 0x0401, 0x0401, 0x0260, - 0x0410, 0x0415, 0x025A, 0x0416, 0x0435, 0x0261, 0x0436, 0x044F, 0x0282, - 0x0451, 0x0451, 0x0281, 0x1E3F, 0x1E3F, 0x02B7, 0x2010, 0x2010, 0x2722, - 0x2013, 0x2013, 0x26B6, 0x2014, 0x2014, 0x0069, 0x2015, 0x2015, 0x26B7, - 0x2016, 0x2016, 0x006B, 0x2018, 0x2019, 0x006D, 0x201C, 0x201D, 0x006F, - 0x2025, 0x2025, 0x26B8, 0x2026, 0x2026, 0x006C, 0x2030, 0x2030, 0x00AA, - 0x2032, 0x2033, 0x00A3, 0x2035, 0x2035, 0x26B9, 0x203B, 0x203B, 0x00B8, - 0x20AC, 0x20AC, 0x5751, 0x2103, 0x2103, 0x00A5, 0x2105, 0x2105, 0x26BA, - 0x2109, 0x2109, 0x26BB, 0x2116, 0x2116, 0x00AC, 0x2121, 0x2121, 0x2720, - 0x2160, 0x216B, 0x00FA, 0x2170, 0x2179, 0x26A9, 0x2190, 0x2191, 0x00BA, - 0x2192, 0x2192, 0x00B9, 0x2193, 0x2193, 0x00BC, 0x2196, 0x2199, 0x26BC, - 0x2208, 0x2208, 0x0089, 0x220F, 0x220F, 0x0086, 0x2211, 0x2211, 0x0085, - 0x2215, 0x2215, 0x26C0, 0x221A, 0x221A, 0x008B, 0x221D, 0x221D, 0x0097, - 0x221E, 0x221E, 0x009D, 0x221F, 0x221F, 0x26C1, 0x2220, 0x2220, 0x008E, - 0x2223, 0x2223, 0x26C2, 0x2225, 0x2225, 0x008D, 0x2227, 0x2228, 0x0083, - 0x2229, 0x2229, 0x0088, 0x222A, 0x222A, 0x0087, 0x222B, 0x222B, 0x0091, - 0x222E, 0x222E, 0x0092, 0x2234, 0x2234, 0x009F, 0x2235, 0x2235, 0x009E, - 0x2236, 0x2236, 0x0082, 0x2237, 0x2237, 0x008A, 0x223D, 0x223D, 0x0096, - 0x2248, 0x2248, 0x0095, 0x224C, 0x224C, 0x0094, 0x2252, 0x2252, 0x26C3, - 0x2260, 0x2260, 0x0098, 0x2261, 0x2261, 0x0093, 0x2264, 0x2265, 0x009B, - 0x2266, 0x2267, 0x26C4, 0x226E, 0x226F, 0x0099, 0x2295, 0x2295, 0x2704, - 0x2299, 0x2299, 0x0090, 0x22A5, 0x22A5, 0x008C, 0x22BF, 0x22BF, 0x26C6, - 0x22EF, 0x22EF, 0x006C, 0x2312, 0x2312, 0x008F, 0x2460, 0x2469, 0x00E6, - 0x2474, 0x2487, 0x00D2, 0x2488, 0x249B, 0x00BE, 0x2500, 0x254B, 0x02E2, - 0x2550, 0x2573, 0x26C7, 0x2581, 0x258F, 0x26EB, 0x2593, 0x2595, 0x26FA, - 0x25A0, 0x25A0, 0x00B5, 0x25A1, 0x25A1, 0x00B4, 0x25B2, 0x25B2, 0x00B7, - 0x25B3, 0x25B3, 0x00B6, 0x25BC, 0x25BD, 0x26FD, 0x25C6, 0x25C6, 0x00B3, - 0x25C7, 0x25C7, 0x00B2, 0x25CB, 0x25CB, 0x00AF, 0x25CE, 0x25CE, 0x00B1, - 0x25CF, 0x25CF, 0x00B0, 0x25E2, 0x25E5, 0x26FF, 0x2605, 0x2605, 0x00AE, - 0x2606, 0x2606, 0x00AD, 0x2609, 0x2609, 0x2703, 0x2640, 0x2640, 0x00A1, - 0x2642, 0x2642, 0x00A0, 0x2E80, 0x2E80, 0x579C, 0x2E81, 0x2E81, 0x561F, - 0x2E82, 0x2E83, 0x579D, 0x2E84, 0x2E84, 0x5623, 0x2E85, 0x2E87, 0x579F, - 0x2E88, 0x2E88, 0x5626, 0x2E89, 0x2E8A, 0x57A2, 0x2E8B, 0x2E8B, 0x5627, - 0x2E8C, 0x2E8C, 0x562C, 0x2E8D, 0x2E96, 0x57A4, 0x2E97, 0x2E97, 0x562D, - 0x2E98, 0x2E99, 0x57AE, 0x2E9B, 0x2EA6, 0x57B0, 0x2EA7, 0x2EA7, 0x563A, - 0x2EA8, 0x2EA9, 0x57BC, 0x2EAA, 0x2EAA, 0x563D, 0x2EAB, 0x2EAD, 0x57BE, - 0x2EAE, 0x2EAE, 0x5640, 0x2EAF, 0x2EB2, 0x57C1, 0x2EB3, 0x2EB3, 0x5642, - 0x2EB4, 0x2EB5, 0x57C5, 0x2EB6, 0x2EB7, 0x5643, 0x2EB8, 0x2EBA, 0x57C7, - 0x2EBB, 0x2EBB, 0x5648, 0x2EBC, 0x2EC9, 0x57CA, 0x2ECA, 0x2ECA, 0x5652, - 0x2ECB, 0x2EF3, 0x57D8, 0x2F00, 0x2F00, 0x1042, 0x2F01, 0x2F01, 0x1263, - 0x2F02, 0x2F02, 0x1272, 0x2F03, 0x2F03, 0x1265, 0x2F04, 0x2F04, 0x1059, - 0x2F05, 0x2F05, 0x2793, 0x2F06, 0x2F06, 0x063D, 0x2F07, 0x2F07, 0x1303, - 0x2F08, 0x2F08, 0x0CA6, 0x2F09, 0x2F09, 0x0638, 0x2F0A, 0x2F0A, 0x0CC6, - 0x2F0B, 0x2F0B, 0x03D6, 0x2F0C, 0x2F0C, 0x129D, 0x2F0D, 0x2F0D, 0x1314, - 0x2F0E, 0x2F0E, 0x130F, 0x2F0F, 0x2F0F, 0x082B, 0x2F10, 0x2F10, 0x1399, - 0x2F11, 0x2F11, 0x0597, 0x2F12, 0x2F12, 0x09EF, 0x2F13, 0x2F13, 0x12FC, - 0x2F14, 0x2F14, 0x1266, 0x2F15, 0x2F15, 0x1284, 0x2F16, 0x2F16, 0x2A1A, - 0x2F17, 0x2F17, 0x0D45, 0x2F18, 0x2F18, 0x047E, 0x2F19, 0x2F19, 0x1352, - 0x2F1A, 0x2F1A, 0x04CC, 0x2F1B, 0x2F1B, 0x139C, 0x2F1C, 0x2F1C, 0x10BB, - 0x2F1D, 0x2F1D, 0x0967, 0x2F1E, 0x2F1E, 0x1593, 0x2F1F, 0x2F1F, 0x0E72, - 0x2F20, 0x2F20, 0x0D56, 0x2F21, 0x2F21, 0x161C, 0x2F22, 0x2F22, 0x2D2D, - 0x2F23, 0x2F23, 0x0F13, 0x2F24, 0x2F24, 0x0576, 0x2F25, 0x2F25, 0x0B6F, - 0x2F26, 0x2F26, 0x1230, 0x2F27, 0x2F27, 0x172E, 0x2F28, 0x2F28, 0x056A, - 0x2F29, 0x2F29, 0x0F6C, 0x2F2A, 0x2F2A, 0x14B6, 0x2F2B, 0x2F2B, 0x0D43, - 0x2F2C, 0x2F2C, 0x1774, 0x2F2D, 0x2F2D, 0x0CF6, 0x2F2E, 0x2F2E, 0x1815, - 0x2F2F, 0x2F2F, 0x06FD, 0x2F30, 0x2F30, 0x082D, 0x2F31, 0x2F31, 0x08BE, - 0x2F32, 0x2F32, 0x06C4, 0x2F33, 0x2F33, 0x1813, 0x2F34, 0x2F34, 0x073C, - 0x2F35, 0x2F35, 0x1398, 0x2F36, 0x2F36, 0x14AD, 0x2F37, 0x2F37, 0x14F6, - 0x2F38, 0x2F38, 0x0706, 0x2F39, 0x2F39, 0x1762, 0x2F3A, 0x2F3A, 0x15EE, - 0x2F3B, 0x2F3B, 0x15E0, 0x2F3C, 0x2F3C, 0x0F8F, 0x2F3D, 0x2F3D, 0x06E5, - 0x2F3E, 0x2F3E, 0x3292, 0x2F3F, 0x2F3F, 0x0D6D, 0x2F40, 0x2F40, 0x11A6, - 0x2F41, 0x2F41, 0x1909, 0x2F42, 0x2F42, 0x0ED3, 0x2F43, 0x2F43, 0x05F6, - 0x2F44, 0x2F44, 0x08C0, 0x2F45, 0x2F45, 0x065A, 0x2F46, 0x2F46, 0x0EED, - 0x2F47, 0x2F47, 0x0CB0, 0x2F48, 0x2F48, 0x10FE, 0x2F49, 0x2F49, 0x1105, - 0x2F4A, 0x2F4A, 0x0B21, 0x2F4B, 0x2F4B, 0x0C34, 0x2F4C, 0x2F4C, 0x11B8, - 0x2F4D, 0x2F4D, 0x0578, 0x2F4E, 0x2F4E, 0x19BD, 0x2F4F, 0x2F4F, 0x0EF2, - 0x2F50, 0x2F50, 0x0431, 0x2F51, 0x2F51, 0x0AB0, 0x2F52, 0x2F52, 0x0D66, - 0x2F53, 0x2F53, 0x0C17, 0x2F54, 0x2F54, 0x0DA3, 0x2F55, 0x2F55, 0x0805, - 0x2F56, 0x2F56, 0x1203, 0x2F57, 0x2F57, 0x06B3, 0x2F58, 0x2F58, 0x1269, - 0x2F59, 0x2F59, 0x169D, 0x2F5A, 0x2F5A, 0x0BCB, 0x2F5B, 0x2F5B, 0x0FE9, - 0x2F5C, 0x2F5C, 0x0B64, 0x2F5D, 0x2F5D, 0x0C89, 0x2F5E, 0x2F5E, 0x0FC9, - 0x2F5F, 0x2F5F, 0x10D6, 0x2F60, 0x2F60, 0x0728, 0x2F61, 0x2F61, 0x0E90, - 0x2F62, 0x2F62, 0x06C5, 0x2F63, 0x2F63, 0x0D33, 0x2F64, 0x2F64, 0x10A8, - 0x2F65, 0x2F65, 0x0E42, 0x2F66, 0x2F66, 0x1BC6, 0x2F67, 0x2F67, 0x1B60, - 0x2F68, 0x2F68, 0x3EBF, 0x2F69, 0x2F69, 0x03E2, 0x2F6A, 0x2F6A, 0x0BC3, - 0x2F6B, 0x2F6B, 0x0AF8, 0x2F6C, 0x2F6C, 0x0B22, 0x2F6D, 0x2F6D, 0x0AB1, - 0x2F6E, 0x2F6E, 0x0D4F, 0x2F6F, 0x2F6F, 0x0D46, 0x2F70, 0x2F70, 0x0D55, - 0x2F71, 0x2F71, 0x40CB, 0x2F72, 0x2F72, 0x0783, 0x2F73, 0x2F73, 0x0FD1, - 0x2F74, 0x2F74, 0x09EB, 0x2F75, 0x2F75, 0x11F0, 0x2F76, 0x2F76, 0x0ADC, - 0x2F77, 0x2F77, 0x1CE7, 0x2F78, 0x2F78, 0x1C5E, 0x2F79, 0x2F79, 0x0EA9, - 0x2F7A, 0x2F7A, 0x101B, 0x2F7B, 0x2F7B, 0x10D5, 0x2F7C, 0x2F7C, 0x09BA, - 0x2F7D, 0x2F7D, 0x0637, 0x2F7E, 0x2F7E, 0x1BCB, 0x2F7F, 0x2F7F, 0x0639, - 0x2F80, 0x2F80, 0x1A1E, 0x2F81, 0x2F81, 0x0CBD, 0x2F82, 0x2F82, 0x04E1, - 0x2F83, 0x2F83, 0x1231, 0x2F84, 0x2F84, 0x11C0, 0x2F85, 0x2F85, 0x08F9, - 0x2F86, 0x2F86, 0x0D19, 0x2F87, 0x2F87, 0x1618, 0x2F88, 0x2F88, 0x11DA, - 0x2F89, 0x2F89, 0x1CDC, 0x2F8A, 0x2F8A, 0x0CE4, 0x2F8B, 0x2F8B, 0x45A2, - 0x2F8C, 0x2F8C, 0x1BF0, 0x2F8D, 0x2F8D, 0x050B, 0x2F8E, 0x2F8E, 0x0FD3, - 0x2F8F, 0x2F8F, 0x0F9B, 0x2F90, 0x2F90, 0x1049, 0x2F91, 0x2F91, 0x49DC, - 0x2F92, 0x2F92, 0x1F96, 0x2F93, 0x2F93, 0x0898, 0x2F94, 0x2F94, 0x0FFD, - 0x2F95, 0x2F95, 0x0721, 0x2F96, 0x2F96, 0x05F8, 0x2F97, 0x2F97, 0x1D15, - 0x2F98, 0x2F98, 0x1D50, 0x2F99, 0x2F99, 0x1E3B, 0x2F9A, 0x2F9A, 0x0505, - 0x2F9B, 0x2F9B, 0x123C, 0x2F9C, 0x2F9C, 0x1240, 0x2F9D, 0x2F9D, 0x0D26, - 0x2F9E, 0x2F9E, 0x1E7B, 0x2F9F, 0x2F9F, 0x0F8C, 0x2FA0, 0x2FA0, 0x04E2, - 0x2FA1, 0x2FA1, 0x4D13, 0x2FA2, 0x2FA2, 0x105F, 0x2FA3, 0x2FA3, 0x10B4, - 0x2FA4, 0x2FA4, 0x4E18, 0x2FA5, 0x2FA5, 0x09DA, 0x2FA6, 0x2FA6, 0x08C1, - 0x2FA7, 0x2FA7, 0x1E75, 0x2FA8, 0x2FA8, 0x207D, 0x2FA9, 0x2FA9, 0x06B2, - 0x2FAA, 0x2FAA, 0x09EE, 0x2FAB, 0x2FAB, 0x1D79, 0x2FAC, 0x2FAC, 0x10CF, - 0x2FAD, 0x2FAD, 0x50EA, 0x2FAE, 0x2FAE, 0x0664, 0x2FAF, 0x2FAF, 0x0AEB, - 0x2FB0, 0x2FB0, 0x06EA, 0x2FB1, 0x2FB1, 0x218D, 0x2FB2, 0x2FB2, 0x08F1, - 0x2FB3, 0x2FB3, 0x107B, 0x2FB4, 0x2FB4, 0x2209, 0x2FB5, 0x2FB5, 0x1F00, - 0x2FB6, 0x2FB6, 0x1EF4, 0x2FB7, 0x2FB7, 0x0D4A, 0x2FB8, 0x2FB8, 0x0D6E, - 0x2FB9, 0x2FB9, 0x0F50, 0x2FBA, 0x2FBA, 0x206D, 0x2FBB, 0x2FBB, 0x0720, - 0x2FBC, 0x2FBC, 0x06DA, 0x2FBD, 0x2FBD, 0x1DEC, 0x2FBE, 0x2FBE, 0x1ED0, - 0x2FBF, 0x2FBF, 0x139B, 0x2FC0, 0x2FC0, 0x1260, 0x2FC1, 0x2FC1, 0x0746, - 0x2FC2, 0x2FC2, 0x2239, 0x2FC3, 0x2FC3, 0x209C, 0x2FC4, 0x2FC4, 0x2688, - 0x2FC5, 0x2FC5, 0x0A60, 0x2FC6, 0x2FC6, 0x2071, 0x2FC7, 0x2FC7, 0x0A90, - 0x2FC8, 0x2FC8, 0x5586, 0x2FC9, 0x2FC9, 0x0D89, 0x2FCA, 0x2FCA, 0x0791, - 0x2FCB, 0x2FCB, 0x1A55, 0x2FCC, 0x2FCC, 0x2618, 0x2FCD, 0x2FCD, 0x05E5, - 0x2FCE, 0x2FCE, 0x071D, 0x2FCF, 0x2FCF, 0x0D8A, 0x2FD0, 0x2FD0, 0x0430, - 0x2FD1, 0x2FD1, 0x20C6, 0x2FD2, 0x2FD2, 0x1E86, 0x2FD3, 0x2FD3, 0x2037, - 0x2FD4, 0x2FD4, 0x1F34, 0x2FD5, 0x2FD5, 0x12F3, 0x2FF0, 0x2FFB, 0x274C, - 0x3000, 0x3002, 0x0060, 0x3003, 0x3003, 0x0067, 0x3005, 0x3005, 0x0068, - 0x3006, 0x3006, 0x2728, 0x3007, 0x3007, 0x1E17, 0x3008, 0x300F, 0x0073, - 0x3010, 0x3011, 0x007D, 0x3012, 0x3012, 0x2705, 0x3013, 0x3013, 0x00BD, - 0x3014, 0x3015, 0x0071, 0x3016, 0x3017, 0x007B, 0x301D, 0x301E, 0x2706, - 0x3021, 0x3029, 0x2708, 0x3033, 0x3035, 0x577B, 0x3038, 0x303A, 0x577E, - 0x303E, 0x303E, 0x274B, 0x303F, 0x303F, 0x5755, 0x3041, 0x3093, 0x0164, - 0x3094, 0x3094, 0x5767, 0x309B, 0x309C, 0x2724, 0x309D, 0x309E, 0x2729, - 0x30A1, 0x30F6, 0x01B7, 0x30F7, 0x30FA, 0x5776, 0x30FB, 0x30FB, 0x0063, - 0x30FC, 0x30FC, 0x2723, 0x30FD, 0x30FE, 0x2726, 0x3105, 0x3129, 0x02BC, - 0x312A, 0x312C, 0x5781, 0x31A0, 0x31B7, 0x5784, 0x3220, 0x3229, 0x00F0, - 0x3231, 0x3231, 0x2721, 0x32A3, 0x32A3, 0x2711, 0x338E, 0x338F, 0x2712, - 0x339C, 0x339E, 0x2714, 0x33A1, 0x33A1, 0x2717, 0x33C4, 0x33C4, 0x2718, - 0x33CE, 0x33CE, 0x2719, 0x33D1, 0x33D2, 0x271A, 0x33D5, 0x33D5, 0x271C, - 0x3400, 0x3446, 0x5801, 0x3447, 0x3447, 0x5625, 0x3448, 0x3472, 0x5848, - 0x3473, 0x3473, 0x5624, 0x3474, 0x34FF, 0x5873, 0x3500, 0x359D, 0x58FF, - 0x359E, 0x359E, 0x5629, 0x359F, 0x35FF, 0x599D, 0x3600, 0x360D, 0x59FE, - 0x360E, 0x360E, 0x562B, 0x360F, 0x3619, 0x5A0C, 0x361A, 0x361A, 0x562A, - 0x361B, 0x36FF, 0x5A17, 0x3700, 0x37FF, 0x5AFC, 0x3800, 0x38FF, 0x5BFC, - 0x3900, 0x3917, 0x5CFC, 0x3918, 0x3918, 0x562F, 0x3919, 0x396D, 0x5D14, - 0x396E, 0x396E, 0x562E, 0x396F, 0x39CE, 0x5D69, 0x39CF, 0x39CF, 0x5631, - 0x39D0, 0x39D0, 0x5634, 0x39D1, 0x39DE, 0x5DC9, 0x39DF, 0x39DF, 0x5632, - 0x39E0, 0x39FF, 0x5DD7, 0x3A00, 0x3A72, 0x5DF7, 0x3A73, 0x3A73, 0x5633, - 0x3A74, 0x3AFF, 0x5E6A, 0x3B00, 0x3B4D, 0x5EF6, 0x3B4E, 0x3B4E, 0x5637, - 0x3B4F, 0x3BFF, 0x5F44, 0x3C00, 0x3C6D, 0x5FF5, 0x3C6E, 0x3C6E, 0x5638, - 0x3C6F, 0x3CDF, 0x6063, 0x3CE0, 0x3CE0, 0x5639, 0x3CE1, 0x3CFF, 0x60D4, - 0x3D00, 0x3DFF, 0x60F3, 0x3E00, 0x3EFF, 0x61F3, 0x3F00, 0x3FFF, 0x62F3, - 0x4000, 0x4055, 0x63F3, 0x4056, 0x4056, 0x563E, 0x4057, 0x40FF, 0x6449, - 0x4100, 0x415E, 0x64F2, 0x415F, 0x415F, 0x563F, 0x4160, 0x41FF, 0x6551, - 0x4200, 0x42FF, 0x65F1, 0x4300, 0x4336, 0x66F1, 0x4337, 0x4337, 0x5641, - 0x4338, 0x43AB, 0x6728, 0x43AC, 0x43AC, 0x5647, 0x43AD, 0x43B0, 0x679C, - 0x43B1, 0x43B1, 0x5646, 0x43B2, 0x43DC, 0x67A0, 0x43DD, 0x43DD, 0x5649, - 0x43DE, 0x43FF, 0x67CB, 0x4400, 0x44D5, 0x67ED, 0x44D6, 0x44D6, 0x564A, - 0x44D7, 0x44FF, 0x68C3, 0x4500, 0x45FF, 0x68EC, 0x4600, 0x464B, 0x69EC, - 0x464C, 0x464C, 0x564C, 0x464D, 0x4660, 0x6A38, 0x4661, 0x4661, 0x564B, - 0x4662, 0x46FF, 0x6A4C, 0x4700, 0x4722, 0x6AEA, 0x4723, 0x4723, 0x564E, - 0x4724, 0x4728, 0x6B0D, 0x4729, 0x4729, 0x564F, 0x472A, 0x477B, 0x6B12, - 0x477C, 0x477C, 0x5650, 0x477D, 0x478C, 0x6B64, 0x478D, 0x478D, 0x5651, - 0x478E, 0x47FF, 0x6B74, 0x4800, 0x48FF, 0x6BE6, 0x4900, 0x4946, 0x6CE6, - 0x4947, 0x4947, 0x5653, 0x4948, 0x4979, 0x6D2D, 0x497A, 0x497A, 0x5654, - 0x497B, 0x497C, 0x6D5F, 0x497D, 0x497D, 0x5655, 0x497E, 0x4981, 0x6D61, - 0x4982, 0x4983, 0x5656, 0x4984, 0x4984, 0x6D65, 0x4985, 0x4986, 0x5658, - 0x4987, 0x499A, 0x6D66, 0x499B, 0x499B, 0x565B, 0x499C, 0x499E, 0x6D7A, - 0x499F, 0x499F, 0x565A, 0x49A0, 0x49B5, 0x6D7D, 0x49B6, 0x49B6, 0x565D, - 0x49B7, 0x49B7, 0x565C, 0x49B8, 0x49FF, 0x6D93, 0x4A00, 0x4AFF, 0x6DDB, - 0x4B00, 0x4BFF, 0x6EDB, 0x4C00, 0x4C76, 0x6FDB, 0x4C77, 0x4C77, 0x5664, - 0x4C78, 0x4C9E, 0x7052, 0x4C9F, 0x4CA1, 0x5661, 0x4CA2, 0x4CA2, 0x5665, - 0x4CA3, 0x4CA3, 0x5660, 0x4CA4, 0x4CFF, 0x7079, 0x4D00, 0x4D12, 0x70D5, - 0x4D13, 0x4D19, 0x5666, 0x4D1A, 0x4DAD, 0x70E8, 0x4DAE, 0x4DAE, 0x566D, - 0x4DAF, 0x4DB5, 0x717C, 0x4E00, 0x4E00, 0x1042, 0x4E01, 0x4E01, 0x05E0, - 0x4E02, 0x4E02, 0x2758, 0x4E03, 0x4E03, 0x0BFE, 0x4E04, 0x4E06, 0x2759, - 0x4E07, 0x4E07, 0x0EA3, 0x4E08, 0x4E08, 0x116A, 0x4E09, 0x4E09, 0x0CD8, - 0x4E0A, 0x4E0A, 0x0D08, 0x4E0B, 0x4E0B, 0x0F2F, 0x4E0C, 0x4E0C, 0x1258, - 0x4E0D, 0x4E0D, 0x0482, 0x4E0E, 0x4E0E, 0x10D0, 0x4E0F, 0x4E0F, 0x275C, - 0x4E10, 0x4E10, 0x125A, 0x4E11, 0x4E11, 0x0518, 0x4E12, 0x4E12, 0x275D, - 0x4E13, 0x4E13, 0x1205, 0x4E14, 0x4E14, 0x0C4F, 0x4E15, 0x4E15, 0x125D, - 0x4E16, 0x4E16, 0x0D57, 0x4E17, 0x4E17, 0x275E, 0x4E18, 0x4E18, 0x0C6D, - 0x4E19, 0x4E19, 0x0464, 0x4E1A, 0x4E1A, 0x103C, 0x4E1B, 0x4E1B, 0x0557, - 0x4E1C, 0x4E1C, 0x05EA, 0x4E1D, 0x4E1D, 0x0DB4, 0x4E1E, 0x4E1E, 0x125F, - 0x4E1F, 0x4E21, 0x275F, 0x4E22, 0x4E22, 0x05E9, 0x4E23, 0x4E23, 0x2762, - 0x4E24, 0x4E24, 0x0A06, 0x4E25, 0x4E25, 0x0FF8, 0x4E26, 0x4E26, 0x2763, - 0x4E27, 0x4E27, 0x0CDE, 0x4E28, 0x4E28, 0x1263, 0x4E29, 0x4E29, 0x2764, - 0x4E2A, 0x4E2A, 0x06F1, 0x4E2B, 0x4E2B, 0x0FE7, 0x4E2C, 0x4E2C, 0x169C, - 0x4E2D, 0x4E2D, 0x11CF, 0x4E2E, 0x4E2F, 0x2765, 0x4E30, 0x4E30, 0x067E, - 0x4E31, 0x4E31, 0x2767, 0x4E32, 0x4E32, 0x0531, 0x4E33, 0x4E33, 0x2768, - 0x4E34, 0x4E34, 0x0A22, 0x4E35, 0x4E35, 0x2769, 0x4E36, 0x4E36, 0x1272, - 0x4E37, 0x4E37, 0x276A, 0x4E38, 0x4E38, 0x0E99, 0x4E39, 0x4E39, 0x0585, - 0x4E3A, 0x4E3A, 0x0EB9, 0x4E3B, 0x4E3B, 0x11F6, 0x4E3C, 0x4E3C, 0x276B, - 0x4E3D, 0x4E3D, 0x09E1, 0x4E3E, 0x4E3E, 0x0908, 0x4E3F, 0x4E3F, 0x1265, - 0x4E40, 0x4E42, 0x276C, 0x4E43, 0x4E43, 0x0B2E, 0x4E44, 0x4E44, 0x276F, - 0x4E45, 0x4E45, 0x08F2, 0x4E46, 0x4E46, 0x2770, 0x4E47, 0x4E47, 0x1267, - 0x4E48, 0x4E48, 0x0AB9, 0x4E49, 0x4E49, 0x106C, 0x4E4A, 0x4E4A, 0x2771, - 0x4E4B, 0x4E4B, 0x11AD, 0x4E4C, 0x4E4C, 0x0EE9, 0x4E4D, 0x4E4D, 0x1148, - 0x4E4E, 0x4E4E, 0x07AC, 0x4E4F, 0x4E4F, 0x0643, 0x4E50, 0x4E50, 0x09C1, - 0x4E51, 0x4E51, 0x2772, 0x4E52, 0x4E52, 0x0BD8, 0x4E53, 0x4E53, 0x0B93, - 0x4E54, 0x4E54, 0x0C44, 0x4E55, 0x4E55, 0x2773, 0x4E56, 0x4E56, 0x072D, - 0x4E57, 0x4E57, 0x2774, 0x4E58, 0x4E58, 0x04F0, 0x4E59, 0x4E59, 0x1059, - 0x4E5A, 0x4E5B, 0x2775, 0x4E5C, 0x4E5C, 0x1275, 0x4E5D, 0x4E5D, 0x08F4, - 0x4E5E, 0x4E5E, 0x0C11, 0x4E5F, 0x4E5F, 0x1039, 0x4E60, 0x4E60, 0x0F1D, - 0x4E61, 0x4E61, 0x0F54, 0x4E62, 0x4E65, 0x2777, 0x4E66, 0x4E66, 0x0D80, - 0x4E67, 0x4E68, 0x277B, 0x4E69, 0x4E69, 0x1276, 0x4E6A, 0x4E6F, 0x277D, - 0x4E70, 0x4E70, 0x0A99, 0x4E71, 0x4E71, 0x0A79, 0x4E72, 0x4E72, 0x2783, - 0x4E73, 0x4E73, 0x0CC4, 0x4E74, 0x4E7D, 0x2784, 0x4E7E, 0x4E7E, 0x0C29, - 0x4E7F, 0x4E81, 0x278E, 0x4E82, 0x4E82, 0x2059, 0x4E83, 0x4E85, 0x2791, - 0x4E86, 0x4E86, 0x0A14, 0x4E87, 0x4E87, 0x2794, 0x4E88, 0x4E88, 0x10CD, - 0x4E89, 0x4E89, 0x119A, 0x4E8A, 0x4E8A, 0x2795, 0x4E8B, 0x4E8B, 0x0D59, - 0x4E8C, 0x4E8C, 0x063D, 0x4E8D, 0x4E8D, 0x1257, 0x4E8E, 0x4E8E, 0x10BF, - 0x4E8F, 0x4E8F, 0x0984, 0x4E90, 0x4E90, 0x2796, 0x4E91, 0x4E91, 0x1109, - 0x4E92, 0x4E92, 0x07BA, 0x4E93, 0x4E93, 0x1277, 0x4E94, 0x4E94, 0x0EF4, - 0x4E95, 0x4E95, 0x08DD, 0x4E96, 0x4E97, 0x2797, 0x4E98, 0x4E98, 0x125E, - 0x4E99, 0x4E99, 0x2799, 0x4E9A, 0x4E9A, 0x0FF0, 0x4E9B, 0x4E9B, 0x0F74, - 0x4E9C, 0x4E9D, 0x279A, 0x4E9E, 0x4E9E, 0x21F1, 0x4E9F, 0x4E9F, 0x1273, - 0x4EA0, 0x4EA0, 0x1303, 0x4EA1, 0x4EA1, 0x0EA7, 0x4EA2, 0x4EA2, 0x0947, - 0x4EA3, 0x4EA3, 0x279C, 0x4EA4, 0x4EA4, 0x088C, 0x4EA5, 0x4EA5, 0x075C, - 0x4EA6, 0x4EA6, 0x1067, 0x4EA7, 0x4EA7, 0x04C1, 0x4EA8, 0x4EA8, 0x0797, - 0x4EA9, 0x4EA9, 0x0B19, 0x4EAA, 0x4EAA, 0x279D, 0x4EAB, 0x4EAB, 0x0F5A, - 0x4EAC, 0x4EAC, 0x08D8, 0x4EAD, 0x4EAD, 0x0E55, 0x4EAE, 0x4EAE, 0x0A0A, - 0x4EAF, 0x4EB1, 0x279E, 0x4EB2, 0x4EB2, 0x0C54, 0x4EB3, 0x4EB3, 0x1305, - 0x4EB4, 0x4EB4, 0x27A1, 0x4EB5, 0x4EB5, 0x1308, 0x4EB6, 0x4EB9, 0x27A2, - 0x4EBA, 0x4EBA, 0x0CA6, 0x4EBB, 0x4EBB, 0x129F, 0x4EBC, 0x4EBE, 0x27A6, - 0x4EBF, 0x4EBF, 0x1061, 0x4EC0, 0x4EC0, 0x0D49, 0x4EC1, 0x4EC1, 0x0CA5, - 0x4EC2, 0x4EC2, 0x12A2, 0x4EC3, 0x4EC3, 0x12A0, 0x4EC4, 0x4EC4, 0x127C, - 0x4EC5, 0x4EC5, 0x08C7, 0x4EC6, 0x4EC6, 0x0BEC, 0x4EC7, 0x4EC7, 0x0515, - 0x4EC8, 0x4EC8, 0x27A9, 0x4EC9, 0x4EC9, 0x12A1, 0x4ECA, 0x4ECA, 0x08C2, - 0x4ECB, 0x4ECB, 0x08BA, 0x4ECC, 0x4ECC, 0x27AA, 0x4ECD, 0x4ECD, 0x0CAF, - 0x4ECE, 0x4ECE, 0x0556, 0x4ECF, 0x4ED0, 0x27AB, 0x4ED1, 0x4ED1, 0x0A7F, - 0x4ED2, 0x4ED2, 0x27AD, 0x4ED3, 0x4ED3, 0x049D, 0x4ED4, 0x4ED4, 0x122D, - 0x4ED5, 0x4ED5, 0x0D62, 0x4ED6, 0x4ED6, 0x0DF0, 0x4ED7, 0x4ED7, 0x116D, - 0x4ED8, 0x4ED8, 0x06B1, 0x4ED9, 0x4ED9, 0x0F36, 0x4EDA, 0x4EDC, 0x27AE, - 0x4EDD, 0x4EDD, 0x12EE, 0x4EDE, 0x4EDE, 0x12A6, 0x4EDF, 0x4EDF, 0x0C27, - 0x4EE0, 0x4EE0, 0x27B1, 0x4EE1, 0x4EE1, 0x12A4, 0x4EE2, 0x4EE2, 0x27B2, - 0x4EE3, 0x4EE3, 0x057D, 0x4EE4, 0x4EE4, 0x0A37, 0x4EE5, 0x4EE5, 0x105B, - 0x4EE6, 0x4EE7, 0x27B3, 0x4EE8, 0x4EE8, 0x12A3, 0x4EE9, 0x4EE9, 0x27B5, - 0x4EEA, 0x4EEA, 0x104E, 0x4EEB, 0x4EEB, 0x12A5, 0x4EEC, 0x4EEC, 0x0ACC, - 0x4EED, 0x4EEF, 0x27B6, 0x4EF0, 0x4EF0, 0x101F, 0x4EF1, 0x4EF1, 0x27B9, - 0x4EF2, 0x4EF2, 0x11D8, 0x4EF3, 0x4EF3, 0x12A8, 0x4EF4, 0x4EF4, 0x27BA, - 0x4EF5, 0x4EF5, 0x12AB, 0x4EF6, 0x4EF6, 0x0871, 0x4EF7, 0x4EF7, 0x084E, - 0x4EF8, 0x4EFA, 0x27BB, 0x4EFB, 0x4EFB, 0x0CA9, 0x4EFC, 0x4EFC, 0x27BE, - 0x4EFD, 0x4EFD, 0x067A, 0x4EFE, 0x4EFE, 0x27BF, 0x4EFF, 0x4EFF, 0x065F, - 0x4F00, 0x4F00, 0x27C0, 0x4F01, 0x4F01, 0x0C12, 0x4F02, 0x4F08, 0x27C1, - 0x4F09, 0x4F09, 0x12AE, 0x4F0A, 0x4F0A, 0x1048, 0x4F0B, 0x4F0C, 0x27C8, - 0x4F0D, 0x4F0D, 0x0EF8, 0x4F0E, 0x4F0E, 0x0832, 0x4F0F, 0x4F0F, 0x0699, - 0x4F10, 0x4F10, 0x0642, 0x4F11, 0x4F11, 0x0FA8, 0x4F12, 0x4F16, 0x27CA, - 0x4F17, 0x4F17, 0x11D9, 0x4F18, 0x4F18, 0x10AA, 0x4F19, 0x4F19, 0x0804, - 0x4F1A, 0x4F1A, 0x07F6, 0x4F1B, 0x4F1B, 0x12A7, 0x4F1C, 0x4F1D, 0x27CF, - 0x4F1E, 0x4F1E, 0x0CDA, 0x4F1F, 0x4F1F, 0x0EBF, 0x4F20, 0x4F20, 0x052E, - 0x4F21, 0x4F21, 0x27D1, 0x4F22, 0x4F22, 0x12A9, 0x4F23, 0x4F23, 0x27D2, - 0x4F24, 0x4F24, 0x0D04, 0x4F25, 0x4F25, 0x12AC, 0x4F26, 0x4F26, 0x0A7E, - 0x4F27, 0x4F27, 0x12AD, 0x4F28, 0x4F29, 0x27D3, 0x4F2A, 0x4F2A, 0x0EC0, - 0x4F2B, 0x4F2B, 0x12AF, 0x4F2C, 0x4F2E, 0x27D5, 0x4F2F, 0x4F2F, 0x0475, - 0x4F30, 0x4F30, 0x0719, 0x4F31, 0x4F31, 0x27D8, 0x4F32, 0x4F32, 0x12B7, - 0x4F33, 0x4F33, 0x27D9, 0x4F34, 0x4F34, 0x03F4, 0x4F35, 0x4F35, 0x27DA, - 0x4F36, 0x4F36, 0x0A2F, 0x4F37, 0x4F37, 0x27DB, 0x4F38, 0x4F38, 0x0D25, - 0x4F39, 0x4F39, 0x27DC, 0x4F3A, 0x4F3A, 0x0DBA, 0x4F3B, 0x4F3B, 0x27DD, - 0x4F3C, 0x4F3C, 0x0DBB, 0x4F3D, 0x4F3D, 0x12B8, 0x4F3E, 0x4F42, 0x27DE, - 0x4F43, 0x4F43, 0x05C9, 0x4F44, 0x4F45, 0x27E3, 0x4F46, 0x4F46, 0x058C, - 0x4F47, 0x4F4C, 0x27E5, 0x4F4D, 0x4F4D, 0x0ECA, 0x4F4E, 0x4F4E, 0x05AE, - 0x4F4F, 0x4F4F, 0x11FE, 0x4F50, 0x4F50, 0x1251, 0x4F51, 0x4F51, 0x10B8, - 0x4F52, 0x4F52, 0x27EB, 0x4F53, 0x4F53, 0x0E38, 0x4F54, 0x4F54, 0x27EC, - 0x4F55, 0x4F55, 0x0785, 0x4F56, 0x4F56, 0x27ED, 0x4F57, 0x4F57, 0x12B6, - 0x4F58, 0x4F58, 0x12F0, 0x4F59, 0x4F59, 0x10C5, 0x4F5A, 0x4F5A, 0x12B3, - 0x4F5B, 0x4F5B, 0x068D, 0x4F5C, 0x4F5C, 0x1254, 0x4F5D, 0x4F5D, 0x12B4, - 0x4F5E, 0x4F5E, 0x12B0, 0x4F5F, 0x4F5F, 0x12B5, 0x4F60, 0x4F60, 0x0B46, - 0x4F61, 0x4F62, 0x27EE, 0x4F63, 0x4F63, 0x109B, 0x4F64, 0x4F64, 0x12AA, - 0x4F65, 0x4F65, 0x12F1, 0x4F66, 0x4F66, 0x27F0, 0x4F67, 0x4F67, 0x12B1, - 0x4F68, 0x4F68, 0x27F1, 0x4F69, 0x4F69, 0x0BA6, 0x4F6A, 0x4F6B, 0x27F2, - 0x4F6C, 0x4F6C, 0x09BB, 0x4F6D, 0x4F6E, 0x27F4, 0x4F6F, 0x4F6F, 0x1019, - 0x4F70, 0x4F70, 0x03E6, 0x4F71, 0x4F72, 0x27F6, 0x4F73, 0x4F73, 0x0844, - 0x4F74, 0x4F74, 0x12BA, 0x4F75, 0x4F75, 0x27F8, 0x4F76, 0x4F76, 0x12B9, - 0x4F77, 0x4F7A, 0x27F9, 0x4F7B, 0x4F7B, 0x12C0, 0x4F7C, 0x4F7C, 0x12C2, - 0x4F7D, 0x4F7D, 0x27FD, 0x4F7E, 0x4F7E, 0x12BF, 0x4F7F, 0x4F7F, 0x0D50, - 0x4F80, 0x4F82, 0x27FE, 0x4F83, 0x4F83, 0x12BD, 0x4F84, 0x4F84, 0x11B5, - 0x4F85, 0x4F85, 0x2801, 0x4F86, 0x4F86, 0x1FF2, 0x4F87, 0x4F87, 0x2802, - 0x4F88, 0x4F88, 0x0503, 0x4F89, 0x4F89, 0x12BC, 0x4F8A, 0x4F8A, 0x2803, - 0x4F8B, 0x4F8B, 0x09E8, 0x4F8C, 0x4F8C, 0x2804, 0x4F8D, 0x4F8D, 0x0D63, - 0x4F8E, 0x4F8E, 0x2805, 0x4F8F, 0x4F8F, 0x12BE, 0x4F90, 0x4F90, 0x2806, - 0x4F91, 0x4F91, 0x12BB, 0x4F92, 0x4F93, 0x2807, 0x4F94, 0x4F94, 0x12C4, - 0x4F95, 0x4F95, 0x2809, 0x4F96, 0x4F96, 0x205D, 0x4F97, 0x4F97, 0x05F0, - 0x4F98, 0x4F9A, 0x280A, 0x4F9B, 0x4F9B, 0x0702, 0x4F9C, 0x4F9C, 0x280D, - 0x4F9D, 0x4F9D, 0x1047, 0x4F9E, 0x4F9F, 0x280E, 0x4FA0, 0x4FA0, 0x0F2D, - 0x4FA1, 0x4FA2, 0x2810, 0x4FA3, 0x4FA3, 0x0A69, 0x4FA4, 0x4FA4, 0x2812, - 0x4FA5, 0x4FA5, 0x0895, 0x4FA6, 0x4FA6, 0x118D, 0x4FA7, 0x4FA7, 0x04A7, - 0x4FA8, 0x4FA8, 0x0C45, 0x4FA9, 0x4FA9, 0x0978, 0x4FAA, 0x4FAA, 0x12C1, - 0x4FAB, 0x4FAB, 0x2813, 0x4FAC, 0x4FAC, 0x12C3, 0x4FAD, 0x4FAD, 0x2814, - 0x4FAE, 0x4FAE, 0x0EF9, 0x4FAF, 0x4FAF, 0x07A5, 0x4FB0, 0x4FB4, 0x2815, - 0x4FB5, 0x4FB5, 0x0C53, 0x4FB6, 0x4FBE, 0x281A, 0x4FBF, 0x4FBF, 0x044C, - 0x4FC0, 0x4FC1, 0x2823, 0x4FC2, 0x4FC2, 0x269C, 0x4FC3, 0x4FC3, 0x055C, - 0x4FC4, 0x4FC4, 0x062C, 0x4FC5, 0x4FC5, 0x12C8, 0x4FC6, 0x4FC9, 0x2825, - 0x4FCA, 0x4FCA, 0x092E, 0x4FCB, 0x4FCD, 0x2829, 0x4FCE, 0x4FCE, 0x12F2, - 0x4FCF, 0x4FCF, 0x0C4B, 0x4FD0, 0x4FD0, 0x09E9, 0x4FD1, 0x4FD1, 0x12CC, - 0x4FD2, 0x4FD6, 0x282C, 0x4FD7, 0x4FD7, 0x0DCC, 0x4FD8, 0x4FD8, 0x069A, - 0x4FD9, 0x4FD9, 0x2831, 0x4FDA, 0x4FDA, 0x12C9, 0x4FDB, 0x4FDB, 0x2832, - 0x4FDC, 0x4FDC, 0x12CB, 0x4FDD, 0x4FDD, 0x040C, 0x4FDE, 0x4FDE, 0x10C6, - 0x4FDF, 0x4FDF, 0x12CD, 0x4FE0, 0x4FE0, 0x21B5, 0x4FE1, 0x4FE1, 0x0F90, - 0x4FE2, 0x4FE2, 0x2833, 0x4FE3, 0x4FE3, 0x12CA, 0x4FE4, 0x4FE5, 0x2834, - 0x4FE6, 0x4FE6, 0x12C5, 0x4FE7, 0x4FE7, 0x2836, 0x4FE8, 0x4FE8, 0x12C6, - 0x4FE9, 0x4FE9, 0x09F2, 0x4FEA, 0x4FEA, 0x12C7, 0x4FEB, 0x4FEC, 0x2837, - 0x4FED, 0x4FED, 0x0866, 0x4FEE, 0x4FEE, 0x0FA9, 0x4FEF, 0x4FEF, 0x06A4, - 0x4FF0, 0x4FF0, 0x2839, 0x4FF1, 0x4FF1, 0x0912, 0x4FF2, 0x4FF2, 0x283A, - 0x4FF3, 0x4FF3, 0x12D1, 0x4FF4, 0x4FF7, 0x283B, 0x4FF8, 0x4FF8, 0x12CE, - 0x4FF9, 0x4FF9, 0x283F, 0x4FFA, 0x4FFA, 0x03BE, 0x4FFB, 0x4FFD, 0x2840, - 0x4FFE, 0x4FFE, 0x12D6, 0x4FFF, 0x4FFF, 0x2843, 0x5000, 0x5000, 0x22CC, - 0x5001, 0x5005, 0x2844, 0x5006, 0x5006, 0x2016, 0x5007, 0x5008, 0x2849, - 0x5009, 0x5009, 0x1E62, 0x500A, 0x500A, 0x284B, 0x500B, 0x500B, 0x1F20, - 0x500C, 0x500C, 0x12D8, 0x500D, 0x500D, 0x041F, 0x500E, 0x500E, 0x284C, - 0x500F, 0x500F, 0x12D3, 0x5010, 0x5010, 0x284D, 0x5011, 0x5011, 0x207F, - 0x5012, 0x5012, 0x059A, 0x5013, 0x5013, 0x284E, 0x5014, 0x5014, 0x0922, - 0x5015, 0x5017, 0x284F, 0x5018, 0x5018, 0x0E1B, 0x5019, 0x5019, 0x07A9, - 0x501A, 0x501A, 0x1057, 0x501B, 0x501B, 0x2852, 0x501C, 0x501C, 0x12D7, - 0x501D, 0x501E, 0x2853, 0x501F, 0x501F, 0x08B9, 0x5020, 0x5020, 0x2855, - 0x5021, 0x5021, 0x04D0, 0x5022, 0x5024, 0x2856, 0x5025, 0x5025, 0x12D9, - 0x5026, 0x5026, 0x091A, 0x5027, 0x5027, 0x2859, 0x5028, 0x5028, 0x12DA, - 0x5029, 0x5029, 0x12CF, 0x502A, 0x502A, 0x0B42, 0x502B, 0x502B, 0x205C, - 0x502C, 0x502C, 0x12D2, 0x502D, 0x502D, 0x12D5, 0x502E, 0x502E, 0x12D4, - 0x502F, 0x5039, 0x285A, 0x503A, 0x503A, 0x114F, 0x503B, 0x503B, 0x2865, - 0x503C, 0x503C, 0x11B4, 0x503D, 0x503D, 0x2866, 0x503E, 0x503E, 0x0C60, - 0x503F, 0x5042, 0x2867, 0x5043, 0x5043, 0x12DC, 0x5044, 0x5046, 0x286B, - 0x5047, 0x5047, 0x084C, 0x5048, 0x5048, 0x12DE, 0x5049, 0x5049, 0x2194, - 0x504A, 0x504B, 0x286E, 0x504C, 0x504C, 0x12D0, 0x504D, 0x504D, 0x2870, - 0x504E, 0x504E, 0x12DF, 0x504F, 0x504F, 0x0BCA, 0x5050, 0x5054, 0x2871, - 0x5055, 0x5055, 0x12DD, 0x5056, 0x5059, 0x2876, 0x505A, 0x505A, 0x1253, - 0x505B, 0x505B, 0x287A, 0x505C, 0x505C, 0x0E54, 0x505D, 0x5064, 0x287B, - 0x5065, 0x5065, 0x0872, 0x5066, 0x506B, 0x2883, 0x506C, 0x506C, 0x12E0, - 0x506D, 0x5073, 0x2889, 0x5074, 0x5074, 0x1E65, 0x5075, 0x5075, 0x2281, - 0x5076, 0x5076, 0x0B7D, 0x5077, 0x5077, 0x0E66, 0x5078, 0x507A, 0x2890, - 0x507B, 0x507B, 0x12E1, 0x507C, 0x507D, 0x2893, 0x507E, 0x507E, 0x12DB, - 0x507F, 0x507F, 0x04CA, 0x5080, 0x5080, 0x098B, 0x5081, 0x5084, 0x2895, - 0x5085, 0x5085, 0x06B0, 0x5086, 0x5087, 0x2899, 0x5088, 0x5088, 0x09E7, - 0x5089, 0x508C, 0x289B, 0x508D, 0x508D, 0x0403, 0x508E, 0x5095, 0x289F, - 0x5096, 0x5096, 0x22CD, 0x5097, 0x5097, 0x28A7, 0x5098, 0x5098, 0x210A, - 0x5099, 0x5099, 0x1E3E, 0x509A, 0x50A1, 0x28A8, 0x50A2, 0x50A2, 0x267F, - 0x50A3, 0x50A3, 0x0579, 0x50A4, 0x50A4, 0x28B0, 0x50A5, 0x50A5, 0x12E2, - 0x50A6, 0x50A6, 0x28B1, 0x50A7, 0x50A7, 0x12E3, 0x50A8, 0x50A8, 0x0525, - 0x50A9, 0x50A9, 0x12E4, 0x50AA, 0x50AB, 0x28B2, 0x50AC, 0x50AC, 0x0562, - 0x50AD, 0x50AD, 0x222E, 0x50AE, 0x50B1, 0x28B4, 0x50B2, 0x50B2, 0x03CC, - 0x50B3, 0x50B3, 0x1E96, 0x50B4, 0x50B4, 0x22CB, 0x50B5, 0x50B5, 0x226C, - 0x50B6, 0x50B6, 0x28B8, 0x50B7, 0x50B7, 0x2117, 0x50B8, 0x50B9, 0x28B9, - 0x50BA, 0x50BA, 0x12E5, 0x50BB, 0x50BB, 0x0CEE, 0x50BC, 0x50BD, 0x28BB, - 0x50BE, 0x50BE, 0x20E8, 0x50BF, 0x50C1, 0x28BD, 0x50C2, 0x50C2, 0x22D4, - 0x50C3, 0x50C4, 0x28C0, 0x50C5, 0x50C5, 0x1FB9, 0x50C6, 0x50C8, 0x28C2, - 0x50C9, 0x50C9, 0x22D8, 0x50CA, 0x50CE, 0x28C5, 0x50CF, 0x50CF, 0x0F5E, - 0x50D0, 0x50D0, 0x28CA, 0x50D1, 0x50D1, 0x20DF, 0x50D2, 0x50D4, 0x28CB, - 0x50D5, 0x50D5, 0x20C2, 0x50D6, 0x50D6, 0x12E6, 0x50D7, 0x50D9, 0x28CE, - 0x50DA, 0x50DA, 0x0A0E, 0x50DB, 0x50DD, 0x28D1, 0x50DE, 0x50DE, 0x2195, - 0x50DF, 0x50E4, 0x28D4, 0x50E5, 0x50E5, 0x1FAC, 0x50E6, 0x50E6, 0x12EA, - 0x50E7, 0x50E7, 0x0CE7, 0x50E8, 0x50E8, 0x22D3, 0x50E9, 0x50EB, 0x28DA, - 0x50EC, 0x50EC, 0x12E9, 0x50ED, 0x50ED, 0x12E8, 0x50EE, 0x50EE, 0x12EB, - 0x50EF, 0x50F2, 0x28DD, 0x50F3, 0x50F3, 0x0DD0, 0x50F4, 0x50F4, 0x28E1, - 0x50F5, 0x50F5, 0x087A, 0x50F6, 0x50F8, 0x28E2, 0x50F9, 0x50F9, 0x1F81, - 0x50FA, 0x50FA, 0x28E5, 0x50FB, 0x50FB, 0x0BC6, 0x50FC, 0x50FF, 0x28E6, - 0x5100, 0x5100, 0x2210, 0x5101, 0x5101, 0x28EA, 0x5102, 0x5102, 0x22CF, - 0x5103, 0x5103, 0x28EB, 0x5104, 0x5104, 0x2213, 0x5105, 0x5105, 0x28EC, - 0x5106, 0x5106, 0x12E7, 0x5107, 0x5107, 0x12EC, 0x5108, 0x5108, 0x1FE4, - 0x5109, 0x5109, 0x1F90, 0x510A, 0x510A, 0x28ED, 0x510B, 0x510B, 0x12ED, - 0x510C, 0x510F, 0x28EE, 0x5110, 0x5110, 0x22D6, 0x5111, 0x5111, 0x28F2, - 0x5112, 0x5112, 0x0CC0, 0x5113, 0x5113, 0x28F3, 0x5114, 0x5114, 0x22D0, - 0x5115, 0x5115, 0x22CE, 0x5116, 0x5117, 0x28F4, 0x5118, 0x5118, 0x2681, - 0x5119, 0x511E, 0x28F6, 0x511F, 0x511F, 0x1E76, 0x5120, 0x5120, 0x28FC, - 0x5121, 0x5121, 0x09C7, 0x5122, 0x5129, 0x28FD, 0x512A, 0x512A, 0x2231, - 0x512B, 0x5131, 0x2905, 0x5132, 0x5132, 0x1E93, 0x5133, 0x5136, 0x290C, - 0x5137, 0x5137, 0x22D2, 0x5138, 0x5139, 0x2910, 0x513A, 0x513A, 0x22D7, - 0x513B, 0x513B, 0x22D5, 0x513C, 0x513C, 0x22D1, 0x513D, 0x513E, 0x2912, - 0x513F, 0x513F, 0x0638, 0x5140, 0x5140, 0x1259, 0x5141, 0x5141, 0x110D, - 0x5142, 0x5142, 0x2914, 0x5143, 0x5143, 0x10ED, 0x5144, 0x5144, 0x0FA1, - 0x5145, 0x5145, 0x0509, 0x5146, 0x5146, 0x1178, 0x5147, 0x5147, 0x2915, - 0x5148, 0x5148, 0x0F35, 0x5149, 0x5149, 0x073B, 0x514A, 0x514A, 0x2916, - 0x514B, 0x514B, 0x0958, 0x514C, 0x514C, 0x2917, 0x514D, 0x514D, 0x0AE7, - 0x514E, 0x5150, 0x2918, 0x5151, 0x5151, 0x0611, 0x5152, 0x5152, 0x1EE5, - 0x5153, 0x5153, 0x291B, 0x5154, 0x5154, 0x0E74, 0x5155, 0x5155, 0x1302, - 0x5156, 0x5156, 0x1304, 0x5157, 0x5159, 0x291C, 0x515A, 0x515A, 0x0594, - 0x515B, 0x515B, 0x291F, 0x515C, 0x515C, 0x05F4, 0x515D, 0x5161, 0x2920, - 0x5162, 0x5162, 0x08D3, 0x5163, 0x5164, 0x2925, 0x5165, 0x5165, 0x0CC6, - 0x5166, 0x5167, 0x2927, 0x5168, 0x5168, 0x0C86, 0x5169, 0x5169, 0x2025, - 0x516A, 0x516A, 0x2929, 0x516B, 0x516B, 0x03D6, 0x516C, 0x516C, 0x0704, - 0x516D, 0x516D, 0x0A42, 0x516E, 0x516E, 0x12F6, 0x516F, 0x516F, 0x292A, - 0x5170, 0x5170, 0x09A7, 0x5171, 0x5171, 0x070B, 0x5172, 0x5172, 0x292B, - 0x5173, 0x5173, 0x0731, 0x5174, 0x5174, 0x0F96, 0x5175, 0x5175, 0x0461, - 0x5176, 0x5176, 0x0C03, 0x5177, 0x5177, 0x090E, 0x5178, 0x5178, 0x05C5, - 0x5179, 0x5179, 0x1225, 0x517A, 0x517A, 0x292C, 0x517B, 0x517B, 0x1021, - 0x517C, 0x517C, 0x0859, 0x517D, 0x517D, 0x0D75, 0x517E, 0x517F, 0x292D, - 0x5180, 0x5180, 0x0830, 0x5181, 0x5181, 0x12FA, 0x5182, 0x5182, 0x129D, - 0x5183, 0x5184, 0x292F, 0x5185, 0x5185, 0x0B3D, 0x5186, 0x5187, 0x2931, - 0x5188, 0x5188, 0x06CF, 0x5189, 0x5189, 0x0C98, 0x518A, 0x518B, 0x2933, - 0x518C, 0x518C, 0x04A8, 0x518D, 0x518D, 0x111C, 0x518E, 0x5191, 0x2935, - 0x5192, 0x5192, 0x0AB5, 0x5193, 0x5194, 0x2939, 0x5195, 0x5195, 0x0AE6, - 0x5196, 0x5196, 0x1314, 0x5197, 0x5197, 0x0CBA, 0x5198, 0x5198, 0x293B, - 0x5199, 0x5199, 0x0F7F, 0x519A, 0x519A, 0x293C, 0x519B, 0x519B, 0x092B, - 0x519C, 0x519C, 0x0B6A, 0x519D, 0x519F, 0x293D, 0x51A0, 0x51A0, 0x0733, - 0x51A1, 0x51A1, 0x2940, 0x51A2, 0x51A2, 0x1315, 0x51A3, 0x51A3, 0x2941, - 0x51A4, 0x51A4, 0x10EC, 0x51A5, 0x51A5, 0x1316, 0x51A6, 0x51AA, 0x2942, - 0x51AB, 0x51AB, 0x130F, 0x51AC, 0x51AC, 0x05EB, 0x51AD, 0x51AE, 0x2947, - 0x51AF, 0x51AF, 0x0688, 0x51B0, 0x51B0, 0x0462, 0x51B1, 0x51B1, 0x1310, - 0x51B2, 0x51B2, 0x050A, 0x51B3, 0x51B3, 0x0925, 0x51B4, 0x51B4, 0x2949, - 0x51B5, 0x51B5, 0x0983, 0x51B6, 0x51B6, 0x1038, 0x51B7, 0x51B7, 0x09CF, - 0x51B8, 0x51BA, 0x294A, 0x51BB, 0x51BB, 0x05F2, 0x51BC, 0x51BC, 0x1312, - 0x51BD, 0x51BD, 0x1311, 0x51BE, 0x51BF, 0x294D, 0x51C0, 0x51C0, 0x08EA, - 0x51C1, 0x51C3, 0x294F, 0x51C4, 0x51C4, 0x0BFF, 0x51C5, 0x51C5, 0x2952, - 0x51C6, 0x51C6, 0x1219, 0x51C7, 0x51C7, 0x1313, 0x51C8, 0x51C8, 0x2953, - 0x51C9, 0x51C9, 0x0A02, 0x51CA, 0x51CA, 0x2954, 0x51CB, 0x51CB, 0x05D3, - 0x51CC, 0x51CC, 0x0A31, 0x51CD, 0x51CD, 0x1ECF, 0x51CE, 0x51CE, 0x2955, - 0x51CF, 0x51CF, 0x0868, 0x51D0, 0x51D0, 0x2956, 0x51D1, 0x51D1, 0x0558, - 0x51D2, 0x51DA, 0x2957, 0x51DB, 0x51DB, 0x0A26, 0x51DC, 0x51DC, 0x2960, - 0x51DD, 0x51DD, 0x0B60, 0x51DE, 0x51DF, 0x2961, 0x51E0, 0x51E0, 0x082B, - 0x51E1, 0x51E1, 0x064F, 0x51E2, 0x51E3, 0x2963, 0x51E4, 0x51E4, 0x068C, - 0x51E5, 0x51EA, 0x2965, 0x51EB, 0x51EB, 0x1300, 0x51EC, 0x51EC, 0x296B, - 0x51ED, 0x51ED, 0x0BDD, 0x51EE, 0x51EE, 0x296C, 0x51EF, 0x51EF, 0x093A, - 0x51F0, 0x51F0, 0x07E0, 0x51F1, 0x51F1, 0x1FD9, 0x51F2, 0x51F2, 0x296D, - 0x51F3, 0x51F3, 0x05AB, 0x51F4, 0x51F4, 0x296E, 0x51F5, 0x51F5, 0x1399, - 0x51F6, 0x51F6, 0x0FA2, 0x51F7, 0x51F7, 0x296F, 0x51F8, 0x51F8, 0x0E6A, - 0x51F9, 0x51F9, 0x03C7, 0x51FA, 0x51FA, 0x051B, 0x51FB, 0x51FB, 0x080C, - 0x51FC, 0x51FC, 0x139A, 0x51FD, 0x51FD, 0x0766, 0x51FE, 0x51FE, 0x2970, - 0x51FF, 0x51FF, 0x1127, 0x5200, 0x5200, 0x0597, 0x5201, 0x5201, 0x05D4, - 0x5202, 0x5202, 0x128C, 0x5203, 0x5203, 0x0CAB, 0x5204, 0x5205, 0x2971, - 0x5206, 0x5206, 0x0673, 0x5207, 0x5207, 0x0C4D, 0x5208, 0x5208, 0x128D, - 0x5209, 0x5209, 0x2973, 0x520A, 0x520A, 0x093C, 0x520B, 0x520C, 0x2974, - 0x520D, 0x520D, 0x138B, 0x520E, 0x520E, 0x128E, 0x520F, 0x5210, 0x2976, - 0x5211, 0x5211, 0x0F97, 0x5212, 0x5212, 0x07C3, 0x5213, 0x5215, 0x2978, - 0x5216, 0x5216, 0x196E, 0x5217, 0x5217, 0x0A19, 0x5218, 0x5218, 0x0A3E, - 0x5219, 0x5219, 0x1135, 0x521A, 0x521A, 0x06D0, 0x521B, 0x521B, 0x0537, - 0x521C, 0x521C, 0x297B, 0x521D, 0x521D, 0x051A, 0x521E, 0x521F, 0x297C, - 0x5220, 0x5220, 0x0CF7, 0x5221, 0x5223, 0x297E, 0x5224, 0x5224, 0x0B91, - 0x5225, 0x5227, 0x2981, 0x5228, 0x5228, 0x0B9A, 0x5229, 0x5229, 0x09E6, - 0x522A, 0x522A, 0x2984, 0x522B, 0x522B, 0x0459, 0x522C, 0x522C, 0x2985, - 0x522D, 0x522D, 0x128F, 0x522E, 0x522E, 0x0727, 0x522F, 0x522F, 0x2986, - 0x5230, 0x5230, 0x059E, 0x5231, 0x5232, 0x2987, 0x5233, 0x5233, 0x1290, - 0x5234, 0x5235, 0x2989, 0x5236, 0x5236, 0x11C5, 0x5237, 0x5237, 0x0D97, - 0x5238, 0x5238, 0x0C8A, 0x5239, 0x5239, 0x0CEB, 0x523A, 0x523A, 0x054F, - 0x523B, 0x523B, 0x0959, 0x523C, 0x523C, 0x298B, 0x523D, 0x523D, 0x074D, - 0x523E, 0x523E, 0x298C, 0x523F, 0x5240, 0x1291, 0x5241, 0x5241, 0x0626, - 0x5242, 0x5242, 0x0834, 0x5243, 0x5243, 0x0E3D, 0x5244, 0x5244, 0x22C8, - 0x5245, 0x5246, 0x298D, 0x5247, 0x5247, 0x2263, 0x5248, 0x5249, 0x298F, - 0x524A, 0x524A, 0x0F64, 0x524B, 0x524B, 0x2683, 0x524C, 0x524C, 0x1293, - 0x524D, 0x524D, 0x0C2D, 0x524E, 0x524F, 0x2991, 0x5250, 0x5250, 0x0729, - 0x5251, 0x5251, 0x0874, 0x5252, 0x5253, 0x2993, 0x5254, 0x5254, 0x0E31, - 0x5255, 0x5255, 0x2995, 0x5256, 0x5256, 0x0BE9, 0x5257, 0x525A, 0x2996, - 0x525B, 0x525B, 0x1F17, 0x525C, 0x525C, 0x1296, 0x525D, 0x525D, 0x299A, - 0x525E, 0x525E, 0x1294, 0x525F, 0x5260, 0x299B, 0x5261, 0x5261, 0x1295, - 0x5262, 0x5264, 0x299D, 0x5265, 0x5265, 0x0409, 0x5266, 0x5266, 0x29A0, - 0x5267, 0x5267, 0x0916, 0x5268, 0x5268, 0x29A1, 0x5269, 0x5269, 0x0D3A, - 0x526A, 0x526A, 0x0867, 0x526B, 0x526D, 0x29A2, 0x526E, 0x526E, 0x1F2B, - 0x526F, 0x526F, 0x06AC, 0x5270, 0x5271, 0x29A5, 0x5272, 0x5272, 0x06E9, - 0x5273, 0x5273, 0x29A7, 0x5274, 0x5274, 0x22CA, 0x5275, 0x5275, 0x1E99, - 0x5276, 0x527C, 0x29A8, 0x527D, 0x527D, 0x1298, 0x527E, 0x527E, 0x29AF, - 0x527F, 0x527F, 0x089C, 0x5280, 0x5280, 0x29B0, 0x5281, 0x5281, 0x129A, - 0x5282, 0x5282, 0x1299, 0x5283, 0x5283, 0x1F4F, 0x5284, 0x5286, 0x29B1, - 0x5287, 0x5287, 0x1FCF, 0x5288, 0x5288, 0x0BBD, 0x5289, 0x5289, 0x2036, - 0x528A, 0x528A, 0x1F3A, 0x528B, 0x528B, 0x29B4, 0x528C, 0x528C, 0x22C9, - 0x528D, 0x528D, 0x1F99, 0x528E, 0x528F, 0x29B5, 0x5290, 0x5290, 0x129B, - 0x5291, 0x5291, 0x1F75, 0x5292, 0x5292, 0x29B7, 0x5293, 0x5293, 0x129C, - 0x5294, 0x529A, 0x29B8, 0x529B, 0x529B, 0x09EF, 0x529C, 0x529C, 0x29BF, - 0x529D, 0x529D, 0x0C8B, 0x529E, 0x529E, 0x03F7, 0x529F, 0x529F, 0x06FF, - 0x52A0, 0x52A0, 0x0846, 0x52A1, 0x52A1, 0x0F00, 0x52A2, 0x52A2, 0x138D, - 0x52A3, 0x52A3, 0x0A1C, 0x52A4, 0x52A7, 0x29C0, 0x52A8, 0x52A8, 0x05EE, - 0x52A9, 0x52A9, 0x11F9, 0x52AA, 0x52AA, 0x0B6D, 0x52AB, 0x52AB, 0x08AA, - 0x52AC, 0x52AD, 0x138E, 0x52AE, 0x52B0, 0x29C4, 0x52B1, 0x52B1, 0x09E3, - 0x52B2, 0x52B2, 0x08D1, 0x52B3, 0x52B3, 0x09B8, 0x52B4, 0x52BD, 0x29C7, - 0x52BE, 0x52BE, 0x1390, 0x52BF, 0x52BF, 0x0D5D, 0x52C0, 0x52C0, 0x29D1, - 0x52C1, 0x52C1, 0x1FBE, 0x52C2, 0x52C2, 0x29D2, 0x52C3, 0x52C3, 0x0471, - 0x52C4, 0x52C6, 0x29D3, 0x52C7, 0x52C7, 0x10A7, 0x52C8, 0x52C8, 0x29D6, - 0x52C9, 0x52C9, 0x0AE8, 0x52CA, 0x52CA, 0x29D7, 0x52CB, 0x52CB, 0x0FD4, - 0x52CC, 0x52CF, 0x29D8, 0x52D0, 0x52D0, 0x1392, 0x52D1, 0x52D1, 0x29DC, - 0x52D2, 0x52D2, 0x09C0, 0x52D3, 0x52D4, 0x29DD, 0x52D5, 0x52D5, 0x1ECD, - 0x52D6, 0x52D6, 0x1393, 0x52D7, 0x52D7, 0x29DF, 0x52D8, 0x52D8, 0x093E, - 0x52D9, 0x52D9, 0x21A9, 0x52DA, 0x52DA, 0x29E0, 0x52DB, 0x52DB, 0x21E6, - 0x52DC, 0x52DC, 0x29E1, 0x52DD, 0x52DD, 0x2127, 0x52DE, 0x52DE, 0x2003, - 0x52DF, 0x52DF, 0x0B1F, 0x52E0, 0x52E1, 0x29E2, 0x52E2, 0x52E2, 0x2132, - 0x52E3, 0x52E3, 0x29E4, 0x52E4, 0x52E4, 0x0C57, 0x52E5, 0x52EF, 0x29E5, - 0x52F0, 0x52F0, 0x1394, 0x52F1, 0x52F1, 0x2323, 0x52F2, 0x52F4, 0x29F0, - 0x52F5, 0x52F5, 0x2011, 0x52F6, 0x52F7, 0x29F3, 0x52F8, 0x52F8, 0x20F5, - 0x52F9, 0x52F9, 0x12FC, 0x52FA, 0x52FA, 0x0D10, 0x52FB, 0x52FD, 0x29F5, - 0x52FE, 0x52FE, 0x070D, 0x52FF, 0x52FF, 0x0EFF, 0x5300, 0x5300, 0x110B, - 0x5301, 0x5304, 0x29F8, 0x5305, 0x5305, 0x0407, 0x5306, 0x5306, 0x0555, - 0x5307, 0x5307, 0x29FC, 0x5308, 0x5308, 0x0FA4, 0x5309, 0x530C, 0x29FD, - 0x530D, 0x530D, 0x12FD, 0x530E, 0x530E, 0x2A01, 0x530F, 0x530F, 0x14B5, - 0x5310, 0x5310, 0x12FF, 0x5311, 0x5314, 0x2A02, 0x5315, 0x5315, 0x1266, - 0x5316, 0x5316, 0x07C4, 0x5317, 0x5317, 0x041A, 0x5318, 0x5318, 0x2A06, - 0x5319, 0x5319, 0x04FC, 0x531A, 0x531A, 0x1284, 0x531B, 0x531C, 0x2A07, - 0x531D, 0x531D, 0x1114, 0x531E, 0x531F, 0x2A09, 0x5320, 0x5320, 0x0884, - 0x5321, 0x5321, 0x097C, 0x5322, 0x5322, 0x2A0B, 0x5323, 0x5323, 0x0F28, - 0x5324, 0x5325, 0x2A0C, 0x5326, 0x5326, 0x1286, 0x5327, 0x5329, 0x2A0E, - 0x532A, 0x532A, 0x0668, 0x532B, 0x532C, 0x2A11, 0x532D, 0x532D, 0x22C5, - 0x532E, 0x532E, 0x1287, 0x532F, 0x532F, 0x1F5E, 0x5330, 0x5330, 0x2A13, - 0x5331, 0x5331, 0x22C6, 0x5332, 0x5338, 0x2A14, 0x5339, 0x5339, 0x0BC4, - 0x533A, 0x533A, 0x0C75, 0x533B, 0x533B, 0x1044, 0x533C, 0x533D, 0x2A1B, - 0x533E, 0x533E, 0x1288, 0x533F, 0x533F, 0x0B47, 0x5340, 0x5340, 0x20EF, - 0x5341, 0x5341, 0x0D45, 0x5342, 0x5342, 0x2A1D, 0x5343, 0x5343, 0x0C24, - 0x5344, 0x5344, 0x2A1E, 0x5345, 0x5345, 0x125C, 0x5346, 0x5346, 0x2A1F, - 0x5347, 0x5347, 0x0D36, 0x5348, 0x5348, 0x0EF6, 0x5349, 0x5349, 0x07F1, - 0x534A, 0x534A, 0x03F6, 0x534B, 0x534D, 0x2A20, 0x534E, 0x534E, 0x07BF, - 0x534F, 0x534F, 0x0F78, 0x5350, 0x5350, 0x2A23, 0x5351, 0x5351, 0x0419, - 0x5352, 0x5352, 0x1241, 0x5353, 0x5353, 0x121C, 0x5354, 0x5354, 0x21D0, - 0x5355, 0x5355, 0x0586, 0x5356, 0x5356, 0x0A9B, 0x5357, 0x5357, 0x0B32, - 0x5358, 0x5359, 0x2A24, 0x535A, 0x535A, 0x0470, 0x535B, 0x535B, 0x2A26, - 0x535C, 0x535C, 0x047E, 0x535D, 0x535D, 0x2A27, 0x535E, 0x535E, 0x044E, - 0x535F, 0x535F, 0x14FA, 0x5360, 0x5360, 0x115D, 0x5361, 0x5361, 0x0935, - 0x5362, 0x5362, 0x0A53, 0x5363, 0x5363, 0x128B, 0x5364, 0x5364, 0x0A58, - 0x5365, 0x5365, 0x2A28, 0x5366, 0x5366, 0x128A, 0x5367, 0x5367, 0x0EE3, - 0x5368, 0x5368, 0x2A29, 0x5369, 0x5369, 0x1352, 0x536A, 0x536A, 0x2A2A, - 0x536B, 0x536B, 0x0ECF, 0x536C, 0x536D, 0x2A2B, 0x536E, 0x536E, 0x126A, - 0x536F, 0x536F, 0x0AB3, 0x5370, 0x5370, 0x1086, 0x5371, 0x5371, 0x0EB2, - 0x5372, 0x5372, 0x2A2D, 0x5373, 0x5373, 0x0827, 0x5374, 0x5374, 0x0C8F, - 0x5375, 0x5375, 0x0A78, 0x5376, 0x5376, 0x2A2E, 0x5377, 0x5377, 0x091C, - 0x5378, 0x5378, 0x0F81, 0x5379, 0x5379, 0x2A2F, 0x537A, 0x537A, 0x1353, - 0x537B, 0x537E, 0x2A30, 0x537F, 0x537F, 0x0C61, 0x5380, 0x5381, 0x2A34, - 0x5382, 0x5382, 0x04CC, 0x5383, 0x5383, 0x2A36, 0x5384, 0x5384, 0x0631, - 0x5385, 0x5385, 0x0E4F, 0x5386, 0x5386, 0x09E5, 0x5387, 0x5388, 0x2A37, - 0x5389, 0x5389, 0x09E2, 0x538A, 0x538A, 0x2A39, 0x538B, 0x538B, 0x0FE2, - 0x538C, 0x538C, 0x100A, 0x538D, 0x538D, 0x127D, 0x538E, 0x5394, 0x2A3A, - 0x5395, 0x5395, 0x04A5, 0x5396, 0x5397, 0x2A41, 0x5398, 0x5398, 0x09D0, - 0x5399, 0x5399, 0x22C1, 0x539A, 0x539A, 0x07A8, 0x539B, 0x539C, 0x2A43, - 0x539D, 0x539D, 0x127E, 0x539E, 0x539E, 0x2A45, 0x539F, 0x539F, 0x10F0, - 0x53A0, 0x53A0, 0x1E64, 0x53A1, 0x53A1, 0x2A46, 0x53A2, 0x53A2, 0x0F4E, - 0x53A3, 0x53A3, 0x127F, 0x53A4, 0x53A4, 0x2A47, 0x53A5, 0x53A5, 0x1280, - 0x53A6, 0x53A6, 0x0F30, 0x53A7, 0x53A7, 0x2A48, 0x53A8, 0x53A8, 0x051D, - 0x53A9, 0x53A9, 0x08F6, 0x53AA, 0x53AC, 0x2A49, 0x53AD, 0x53AD, 0x21F9, - 0x53AE, 0x53AE, 0x1281, 0x53AF, 0x53B1, 0x2A4C, 0x53B2, 0x53B2, 0x2010, - 0x53B3, 0x53B3, 0x2A4F, 0x53B4, 0x53B4, 0x22C2, 0x53B5, 0x53B5, 0x2A50, - 0x53B6, 0x53B6, 0x139C, 0x53B7, 0x53BA, 0x2A51, 0x53BB, 0x53BB, 0x0C80, - 0x53BC, 0x53BE, 0x2A55, 0x53BF, 0x53BF, 0x0F45, 0x53C0, 0x53C0, 0x2A58, - 0x53C1, 0x53C1, 0x0CD9, 0x53C2, 0x53C2, 0x0495, 0x53C3, 0x53C3, 0x1E5A, - 0x53C4, 0x53C7, 0x2A59, 0x53C8, 0x53C8, 0x10BB, 0x53C9, 0x53C9, 0x04AD, - 0x53CA, 0x53CA, 0x0823, 0x53CB, 0x53CB, 0x10B6, 0x53CC, 0x53CC, 0x0DA0, - 0x53CD, 0x53CD, 0x0651, 0x53CE, 0x53D0, 0x2A5D, 0x53D1, 0x53D1, 0x063F, - 0x53D2, 0x53D3, 0x2A60, 0x53D4, 0x53D4, 0x0D7C, 0x53D5, 0x53D5, 0x2A62, - 0x53D6, 0x53D6, 0x0C7C, 0x53D7, 0x53D7, 0x0D73, 0x53D8, 0x53D8, 0x044D, - 0x53D9, 0x53D9, 0x0FBB, 0x53DA, 0x53DA, 0x2A63, 0x53DB, 0x53DB, 0x0B92, - 0x53DC, 0x53DE, 0x2A64, 0x53DF, 0x53DF, 0x1395, 0x53E0, 0x53E0, 0x05DF, - 0x53E1, 0x53E1, 0x2A67, 0x53E2, 0x53E2, 0x1EA2, 0x53E3, 0x53E3, 0x0967, - 0x53E4, 0x53E4, 0x071E, 0x53E5, 0x53E5, 0x0913, 0x53E6, 0x53E6, 0x0A36, - 0x53E7, 0x53E7, 0x2A68, 0x53E8, 0x53E8, 0x14FE, 0x53E9, 0x53E9, 0x14FD, - 0x53EA, 0x53EA, 0x11BA, 0x53EB, 0x53EB, 0x08A1, 0x53EC, 0x53EC, 0x117A, - 0x53ED, 0x53ED, 0x03D3, 0x53EE, 0x53EE, 0x05E2, 0x53EF, 0x53EF, 0x0956, - 0x53F0, 0x53F0, 0x0DFB, 0x53F1, 0x53F1, 0x14FB, 0x53F2, 0x53F2, 0x0D4E, - 0x53F3, 0x53F3, 0x10B7, 0x53F4, 0x53F4, 0x2A69, 0x53F5, 0x53F5, 0x1285, - 0x53F6, 0x53F6, 0x103D, 0x53F7, 0x53F7, 0x077C, 0x53F8, 0x53F8, 0x0DB3, - 0x53F9, 0x53F9, 0x0E11, 0x53FA, 0x53FA, 0x2A6A, 0x53FB, 0x53FB, 0x14FF, - 0x53FC, 0x53FC, 0x05D1, 0x53FD, 0x53FD, 0x14FC, 0x53FE, 0x53FF, 0x2A6B, - 0x5400, 0x5400, 0x2A6D, 0x5401, 0x5401, 0x10DA, 0x5402, 0x5402, 0x2A6E, - 0x5403, 0x5403, 0x04F9, 0x5404, 0x5404, 0x06F2, 0x5405, 0x5405, 0x2A6F, - 0x5406, 0x5406, 0x1502, 0x5407, 0x5407, 0x2A70, 0x5408, 0x5408, 0x0786, - 0x5409, 0x5409, 0x081D, 0x540A, 0x540A, 0x05D6, 0x540B, 0x540B, 0x2A71, - 0x540C, 0x540C, 0x0E5D, 0x540D, 0x540D, 0x0B00, 0x540E, 0x540E, 0x07AA, - 0x540F, 0x540F, 0x09DF, 0x5410, 0x5410, 0x0E73, 0x5411, 0x5411, 0x0F5F, - 0x5412, 0x5412, 0x1500, 0x5413, 0x5413, 0x0F32, 0x5414, 0x5414, 0x2A72, - 0x5415, 0x5415, 0x0A67, 0x5416, 0x5416, 0x1501, 0x5417, 0x5417, 0x0A97, - 0x5418, 0x541A, 0x2A73, 0x541B, 0x541B, 0x092C, 0x541C, 0x541C, 0x2A76, - 0x541D, 0x541D, 0x0A28, 0x541E, 0x541E, 0x0E7D, 0x541F, 0x541F, 0x107E, - 0x5420, 0x5420, 0x066A, 0x5421, 0x5421, 0x1509, 0x5422, 0x5422, 0x2A77, - 0x5423, 0x5423, 0x150C, 0x5424, 0x5425, 0x2A78, 0x5426, 0x5426, 0x068E, - 0x5427, 0x5427, 0x03D4, 0x5428, 0x5428, 0x0615, 0x5429, 0x5429, 0x0671, - 0x542A, 0x542A, 0x2A7A, 0x542B, 0x542B, 0x0763, 0x542C, 0x542C, 0x0E50, - 0x542D, 0x542D, 0x0961, 0x542E, 0x542E, 0x0DA6, 0x542F, 0x542F, 0x0C13, - 0x5430, 0x5430, 0x2A7B, 0x5431, 0x5431, 0x11A7, 0x5432, 0x5432, 0x150D, - 0x5433, 0x5433, 0x2A7C, 0x5434, 0x5434, 0x0EF1, 0x5435, 0x5435, 0x04D8, - 0x5436, 0x5437, 0x2A7D, 0x5438, 0x5438, 0x0F0B, 0x5439, 0x5439, 0x0538, - 0x543A, 0x543A, 0x2A7F, 0x543B, 0x543B, 0x0ED6, 0x543C, 0x543C, 0x07A7, - 0x543D, 0x543D, 0x2A80, 0x543E, 0x543E, 0x0EF0, 0x543F, 0x543F, 0x2A81, - 0x5440, 0x5440, 0x0FE6, 0x5441, 0x5442, 0x2A82, 0x5443, 0x5443, 0x1508, - 0x5444, 0x5445, 0x2A84, 0x5446, 0x5446, 0x0577, 0x5447, 0x5447, 0x2A86, - 0x5448, 0x5448, 0x04EF, 0x5449, 0x5449, 0x2A87, 0x544A, 0x544A, 0x06E1, - 0x544B, 0x544B, 0x1503, 0x544C, 0x544F, 0x2A88, 0x5450, 0x5450, 0x0B28, - 0x5451, 0x5451, 0x2A8C, 0x5452, 0x5454, 0x1504, 0x5455, 0x5455, 0x0B7C, - 0x5456, 0x5456, 0x1507, 0x5457, 0x5457, 0x150A, 0x5458, 0x5458, 0x10F4, - 0x5459, 0x5459, 0x150B, 0x545A, 0x545A, 0x2A8D, 0x545B, 0x545B, 0x0C37, - 0x545C, 0x545C, 0x0EE7, 0x545D, 0x5461, 0x2A8E, 0x5462, 0x5462, 0x0B3B, - 0x5463, 0x5463, 0x2A93, 0x5464, 0x5464, 0x1512, 0x5465, 0x5465, 0x2A94, - 0x5466, 0x5466, 0x1517, 0x5467, 0x5467, 0x2A95, 0x5468, 0x5468, 0x11DB, - 0x5469, 0x5470, 0x2A96, 0x5471, 0x5471, 0x1511, 0x5472, 0x5472, 0x1522, - 0x5473, 0x5473, 0x0EC5, 0x5474, 0x5474, 0x2A9E, 0x5475, 0x5475, 0x077E, - 0x5476, 0x5476, 0x1516, 0x5477, 0x5477, 0x1510, 0x5478, 0x5478, 0x0B9F, - 0x5479, 0x547A, 0x2A9F, 0x547B, 0x547B, 0x0D24, 0x547C, 0x547C, 0x07AB, - 0x547D, 0x547D, 0x0B01, 0x547E, 0x547F, 0x2AA1, 0x5480, 0x5480, 0x0906, - 0x5481, 0x5481, 0x2AA3, 0x5482, 0x5482, 0x150E, 0x5483, 0x5483, 0x2AA4, - 0x5484, 0x5484, 0x1515, 0x5485, 0x5485, 0x2AA5, 0x5486, 0x5486, 0x0B99, - 0x5487, 0x548A, 0x2AA6, 0x548B, 0x548B, 0x1147, 0x548C, 0x548C, 0x0784, - 0x548D, 0x548D, 0x2AAA, 0x548E, 0x548E, 0x08FB, 0x548F, 0x548F, 0x10A2, - 0x5490, 0x5490, 0x06BB, 0x5491, 0x5491, 0x2AAB, 0x5492, 0x5492, 0x11E3, - 0x5493, 0x5493, 0x2AAC, 0x5494, 0x5494, 0x150F, 0x5495, 0x5495, 0x0717, - 0x5496, 0x5496, 0x0934, 0x5497, 0x5498, 0x2AAD, 0x5499, 0x5499, 0x0A45, - 0x549A, 0x549B, 0x1513, 0x549C, 0x549C, 0x2AAF, 0x549D, 0x549D, 0x1518, - 0x549E, 0x54A2, 0x2AB0, 0x54A3, 0x54A3, 0x1523, 0x54A4, 0x54A4, 0x152D, - 0x54A5, 0x54A5, 0x2AB5, 0x54A6, 0x54A6, 0x151F, 0x54A7, 0x54A7, 0x151E, - 0x54A8, 0x54A8, 0x1226, 0x54A9, 0x54AA, 0x152B, 0x54AB, 0x54AB, 0x1767, - 0x54AC, 0x54AC, 0x102E, 0x54AD, 0x54AD, 0x151A, 0x54AE, 0x54AE, 0x2AB6, - 0x54AF, 0x54AF, 0x0936, 0x54B0, 0x54B0, 0x2AB7, 0x54B1, 0x54B1, 0x111E, - 0x54B2, 0x54B2, 0x2AB8, 0x54B3, 0x54B3, 0x0955, 0x54B4, 0x54B4, 0x151C, - 0x54B5, 0x54B7, 0x2AB9, 0x54B8, 0x54B8, 0x0F39, 0x54B9, 0x54BA, 0x2ABC, - 0x54BB, 0x54BB, 0x1525, 0x54BC, 0x54BC, 0x236D, 0x54BD, 0x54BD, 0x0FF3, - 0x54BE, 0x54BE, 0x2ABE, 0x54BF, 0x54BF, 0x1526, 0x54C0, 0x54C0, 0x03B2, - 0x54C1, 0x54C1, 0x0BD6, 0x54C2, 0x54C2, 0x151B, 0x54C3, 0x54C3, 0x2ABF, - 0x54C4, 0x54C4, 0x079C, 0x54C5, 0x54C5, 0x2AC0, 0x54C6, 0x54C6, 0x061E, - 0x54C7, 0x54C7, 0x0E8C, 0x54C8, 0x54C8, 0x0757, 0x54C9, 0x54C9, 0x1118, - 0x54CA, 0x54CB, 0x2AC1, 0x54CC, 0x54CC, 0x1527, 0x54CD, 0x54CD, 0x0F59, - 0x54CE, 0x54CE, 0x03B0, 0x54CF, 0x54CF, 0x152F, 0x54D0, 0x54D0, 0x1519, - 0x54D1, 0x54D1, 0x0FEF, 0x54D2, 0x54D2, 0x151D, 0x54D3, 0x54D4, 0x1520, - 0x54D5, 0x54D5, 0x1524, 0x54D6, 0x54D6, 0x2AC3, 0x54D7, 0x54D7, 0x07BE, - 0x54D8, 0x54D8, 0x2AC4, 0x54D9, 0x54DA, 0x1528, 0x54DB, 0x54DB, 0x2AC5, - 0x54DC, 0x54DC, 0x152A, 0x54DD, 0x54DD, 0x152E, 0x54DE, 0x54DE, 0x1530, - 0x54DF, 0x54DF, 0x1099, 0x54E0, 0x54E0, 0x2AC6, 0x54E1, 0x54E1, 0x2247, - 0x54E2, 0x54E4, 0x2AC7, 0x54E5, 0x54E5, 0x06E2, 0x54E6, 0x54E6, 0x0B77, - 0x54E7, 0x54E7, 0x1532, 0x54E8, 0x54E8, 0x0D13, 0x54E9, 0x54E9, 0x09F1, - 0x54EA, 0x54EA, 0x0B27, 0x54EB, 0x54EC, 0x2ACA, 0x54ED, 0x54ED, 0x096B, - 0x54EE, 0x54EE, 0x0F65, 0x54EF, 0x54F1, 0x2ACC, 0x54F2, 0x54F2, 0x117D, - 0x54F3, 0x54F3, 0x1536, 0x54F4, 0x54F9, 0x2ACF, 0x54FA, 0x54FA, 0x047F, - 0x54FB, 0x54FB, 0x2AD5, 0x54FC, 0x54FC, 0x0796, 0x54FD, 0x54FD, 0x1534, - 0x54FE, 0x54FE, 0x2AD6, 0x54FF, 0x54FF, 0x1391, 0x5500, 0x5500, 0x2AD7, - 0x5501, 0x5501, 0x100D, 0x5502, 0x5503, 0x2AD8, 0x5504, 0x5504, 0x236C, - 0x5505, 0x5505, 0x2ADA, 0x5506, 0x5506, 0x0DE9, 0x5507, 0x5507, 0x0540, - 0x5508, 0x5508, 0x2ADB, 0x5509, 0x5509, 0x03B1, 0x550A, 0x550E, 0x2ADC, - 0x550F, 0x550F, 0x1539, 0x5510, 0x5510, 0x0E19, 0x5511, 0x5511, 0x153A, - 0x5512, 0x5513, 0x2AE1, 0x5514, 0x5514, 0x1535, 0x5515, 0x551A, 0x2AE3, - 0x551B, 0x551B, 0x1531, 0x551C, 0x551F, 0x2AE9, 0x5520, 0x5520, 0x1533, - 0x5521, 0x5521, 0x2AED, 0x5522, 0x5523, 0x1537, 0x5524, 0x5524, 0x07D2, - 0x5525, 0x5526, 0x2AEE, 0x5527, 0x5527, 0x153B, 0x5528, 0x5529, 0x2AF0, - 0x552A, 0x552A, 0x153C, 0x552B, 0x552B, 0x2AF2, 0x552C, 0x552C, 0x07B8, - 0x552D, 0x552D, 0x2AF3, 0x552E, 0x552E, 0x0D72, 0x552F, 0x552F, 0x0EB7, - 0x5530, 0x5530, 0x154D, 0x5531, 0x5531, 0x04CF, 0x5532, 0x5532, 0x2AF4, - 0x5533, 0x5533, 0x154C, 0x5534, 0x5536, 0x2AF5, 0x5537, 0x5537, 0x1547, - 0x5538, 0x553B, 0x2AF8, 0x553C, 0x553C, 0x1546, 0x553D, 0x553D, 0x2AFC, - 0x553E, 0x553E, 0x0E8A, 0x553F, 0x553F, 0x1544, 0x5540, 0x5540, 0x2AFD, - 0x5541, 0x5541, 0x1542, 0x5542, 0x5542, 0x2AFE, 0x5543, 0x5543, 0x095D, - 0x5544, 0x5544, 0x1221, 0x5545, 0x5545, 0x2AFF, 0x5546, 0x5546, 0x0D05, - 0x5547, 0x5548, 0x2B00, 0x5549, 0x5549, 0x1540, 0x554A, 0x554A, 0x03AC, - 0x554B, 0x554E, 0x2B02, 0x554F, 0x554F, 0x219C, 0x5550, 0x5550, 0x1545, - 0x5551, 0x5552, 0x2B06, 0x5553, 0x5553, 0x20C9, 0x5554, 0x5554, 0x2B08, - 0x5555, 0x5555, 0x1543, 0x5556, 0x5556, 0x1548, 0x5557, 0x555B, 0x2B09, - 0x555C, 0x555C, 0x154E, 0x555D, 0x555D, 0x2B0E, 0x555E, 0x555E, 0x21F0, - 0x555F, 0x5560, 0x2B0F, 0x5561, 0x5561, 0x0665, 0x5562, 0x5563, 0x2B11, - 0x5564, 0x5564, 0x0BC0, 0x5565, 0x5565, 0x0CEF, 0x5566, 0x5566, 0x099D, - 0x5567, 0x5567, 0x153D, 0x5568, 0x5569, 0x2B13, 0x556A, 0x556A, 0x0B7F, - 0x556B, 0x556B, 0x2B15, 0x556C, 0x556C, 0x127A, 0x556D, 0x556D, 0x1541, - 0x556E, 0x556E, 0x0B59, 0x556F, 0x5574, 0x2B16, 0x5575, 0x5577, 0x1549, - 0x5578, 0x5578, 0x0F70, 0x5579, 0x557A, 0x2B1C, 0x557B, 0x557B, 0x155A, - 0x557C, 0x557C, 0x0E37, 0x557D, 0x557D, 0x2B1E, 0x557E, 0x557E, 0x1557, - 0x557F, 0x557F, 0x2B1F, 0x5580, 0x5580, 0x0933, 0x5581, 0x5581, 0x1555, - 0x5582, 0x5582, 0x0EC8, 0x5583, 0x5583, 0x1551, 0x5584, 0x5584, 0x0CFF, - 0x5585, 0x5586, 0x2B20, 0x5587, 0x5587, 0x0999, 0x5588, 0x5588, 0x1554, - 0x5589, 0x5589, 0x07A4, 0x558A, 0x558A, 0x0767, 0x558B, 0x558B, 0x154F, - 0x558C, 0x558E, 0x2B22, 0x558F, 0x558F, 0x153E, 0x5590, 0x5590, 0x2B25, - 0x5591, 0x5591, 0x1559, 0x5592, 0x5593, 0x2B26, 0x5594, 0x5594, 0x155E, - 0x5595, 0x5597, 0x2B28, 0x5598, 0x5598, 0x0530, 0x5599, 0x5599, 0x155F, - 0x559A, 0x559B, 0x2B2B, 0x559C, 0x559C, 0x0F1F, 0x559D, 0x559D, 0x077F, - 0x559E, 0x559E, 0x2B2D, 0x559F, 0x559F, 0x1556, 0x55A0, 0x55A6, 0x2B2E, - 0x55A7, 0x55A7, 0x0FC5, 0x55A8, 0x55A9, 0x2B35, 0x55AA, 0x55AA, 0x210B, - 0x55AB, 0x55AB, 0x2B37, 0x55AC, 0x55AC, 0x20DE, 0x55AD, 0x55AD, 0x2B38, - 0x55AE, 0x55AE, 0x1EAA, 0x55AF, 0x55B0, 0x2B39, 0x55B1, 0x55B1, 0x1552, - 0x55B2, 0x55B2, 0x222C, 0x55B3, 0x55B3, 0x113E, 0x55B4, 0x55B4, 0x2B3B, - 0x55B5, 0x55B5, 0x153F, 0x55B6, 0x55B6, 0x2B3C, 0x55B7, 0x55B7, 0x0BA8, - 0x55B8, 0x55B8, 0x2B3D, 0x55B9, 0x55B9, 0x1553, 0x55BA, 0x55BA, 0x2B3E, - 0x55BB, 0x55BB, 0x10DC, 0x55BC, 0x55BC, 0x2B3F, 0x55BD, 0x55BE, 0x155C, - 0x55BF, 0x55C3, 0x2B40, 0x55C4, 0x55C4, 0x156A, 0x55C5, 0x55C5, 0x0FAC, - 0x55C6, 0x55C6, 0x20D8, 0x55C7, 0x55C7, 0x22C0, 0x55C8, 0x55C8, 0x2B45, - 0x55C9, 0x55C9, 0x1562, 0x55CA, 0x55CB, 0x2B46, 0x55CC, 0x55CD, 0x156F, - 0x55CE, 0x55CE, 0x206F, 0x55CF, 0x55D0, 0x2B48, 0x55D1, 0x55D1, 0x1564, - 0x55D2, 0x55D2, 0x1550, 0x55D3, 0x55D3, 0x0CDD, 0x55D4, 0x55D4, 0x1567, - 0x55D5, 0x55D5, 0x2B4A, 0x55D6, 0x55D6, 0x1558, 0x55D7, 0x55D9, 0x2B4B, - 0x55DA, 0x55DA, 0x21A1, 0x55DB, 0x55DB, 0x2B4E, 0x55DC, 0x55DC, 0x0D5F, - 0x55DD, 0x55DD, 0x1569, 0x55DE, 0x55DE, 0x2B4F, 0x55DF, 0x55DF, 0x155B, - 0x55E0, 0x55E0, 0x2B50, 0x55E1, 0x55E1, 0x0EDA, 0x55E2, 0x55E2, 0x2B51, - 0x55E3, 0x55E3, 0x0DB8, 0x55E4, 0x55E4, 0x1573, 0x55E5, 0x55E5, 0x156C, - 0x55E6, 0x55E6, 0x1568, 0x55E7, 0x55E7, 0x2B52, 0x55E8, 0x55E8, 0x1571, - 0x55E9, 0x55E9, 0x2379, 0x55EA, 0x55EA, 0x1560, 0x55EB, 0x55EC, 0x1565, - 0x55ED, 0x55EE, 0x2B53, 0x55EF, 0x55EF, 0x156B, 0x55F0, 0x55F1, 0x2B55, - 0x55F2, 0x55F3, 0x156D, 0x55F4, 0x55F4, 0x2B57, 0x55F5, 0x55F5, 0x1572, - 0x55F6, 0x55F6, 0x2372, 0x55F7, 0x55F7, 0x1561, 0x55F8, 0x55FC, 0x2B58, - 0x55FD, 0x55FD, 0x0DC9, 0x55FE, 0x55FE, 0x157B, 0x55FF, 0x55FF, 0x2B5D, - 0x5600, 0x5600, 0x157C, 0x5601, 0x5601, 0x1578, 0x5602, 0x5605, 0x2B5E, - 0x5606, 0x5606, 0x216A, 0x5607, 0x5607, 0x2B62, 0x5608, 0x5608, 0x1576, - 0x5609, 0x5609, 0x0841, 0x560A, 0x560B, 0x2B63, 0x560C, 0x560C, 0x1577, - 0x560D, 0x560D, 0x237C, 0x560E, 0x560E, 0x06BD, 0x560F, 0x560F, 0x127B, - 0x5610, 0x5613, 0x2B65, 0x5614, 0x5614, 0x20B0, 0x5615, 0x5615, 0x2B69, - 0x5616, 0x5616, 0x237A, 0x5617, 0x5617, 0x1E74, 0x5618, 0x5618, 0x0FB5, - 0x5619, 0x561A, 0x2B6A, 0x561B, 0x561B, 0x0A96, 0x561C, 0x561C, 0x2377, - 0x561D, 0x561D, 0x2B6C, 0x561E, 0x561E, 0x1575, 0x561F, 0x561F, 0x1563, - 0x5620, 0x5622, 0x2B6D, 0x5623, 0x5623, 0x157A, 0x5624, 0x5624, 0x1579, - 0x5625, 0x5626, 0x2B70, 0x5627, 0x5627, 0x157D, 0x5628, 0x5628, 0x2B72, - 0x5629, 0x5629, 0x1F4C, 0x562A, 0x562B, 0x2B73, 0x562C, 0x562C, 0x1582, - 0x562D, 0x562D, 0x157E, 0x562E, 0x562E, 0x2378, 0x562F, 0x562F, 0x21CF, - 0x5630, 0x5630, 0x2368, 0x5631, 0x5631, 0x11F5, 0x5632, 0x5632, 0x04D5, - 0x5633, 0x5633, 0x2B75, 0x5634, 0x5634, 0x1249, 0x5635, 0x5635, 0x2371, - 0x5636, 0x5636, 0x0DB0, 0x5637, 0x5637, 0x2B76, 0x5638, 0x5638, 0x2369, - 0x5639, 0x5639, 0x1580, 0x563A, 0x563A, 0x2B77, 0x563B, 0x563B, 0x0F0A, - 0x563C, 0x563E, 0x2B78, 0x563F, 0x563F, 0x0790, 0x5640, 0x5640, 0x2B7B, - 0x5641, 0x5641, 0x2674, 0x5642, 0x564B, 0x2B7C, 0x564C, 0x564C, 0x1587, - 0x564D, 0x564D, 0x1583, 0x564E, 0x564E, 0x1034, 0x564F, 0x5653, 0x2B86, - 0x5654, 0x5654, 0x1588, 0x5655, 0x5656, 0x2B8B, 0x5657, 0x5657, 0x1581, - 0x5658, 0x5658, 0x157F, 0x5659, 0x5659, 0x1585, 0x565A, 0x565B, 0x2B8D, - 0x565C, 0x565C, 0x1586, 0x565D, 0x565D, 0x236F, 0x565E, 0x565F, 0x2B8F, - 0x5660, 0x5660, 0x2370, 0x5661, 0x5661, 0x2B91, 0x5662, 0x5662, 0x1584, - 0x5663, 0x5663, 0x2B92, 0x5664, 0x5664, 0x158A, 0x5665, 0x5665, 0x2376, - 0x5666, 0x5666, 0x2373, 0x5667, 0x5667, 0x2B93, 0x5668, 0x5668, 0x0C16, - 0x5669, 0x5669, 0x1262, 0x566A, 0x566A, 0x112E, 0x566B, 0x566B, 0x158C, - 0x566C, 0x566C, 0x0D60, 0x566D, 0x566E, 0x2B94, 0x566F, 0x566F, 0x237F, - 0x5670, 0x5670, 0x2B96, 0x5671, 0x5671, 0x158B, 0x5672, 0x5672, 0x2374, - 0x5673, 0x5673, 0x2B97, 0x5674, 0x5674, 0x20B5, 0x5675, 0x5675, 0x2B98, - 0x5676, 0x5676, 0x06BC, 0x5677, 0x5677, 0x2B99, 0x5678, 0x5678, 0x1EDB, - 0x5679, 0x5679, 0x2672, 0x567A, 0x567A, 0x2B9A, 0x567B, 0x567C, 0x158D, - 0x567D, 0x567F, 0x2B9B, 0x5680, 0x5680, 0x236E, 0x5681, 0x5684, 0x2B9E, - 0x5685, 0x5685, 0x158F, 0x5686, 0x5686, 0x1589, 0x5687, 0x5687, 0x21B7, - 0x5688, 0x568B, 0x2BA2, 0x568C, 0x568C, 0x2375, 0x568D, 0x568D, 0x2BA6, - 0x568E, 0x568E, 0x0776, 0x568F, 0x568F, 0x0E3A, 0x5690, 0x5692, 0x2BA7, - 0x5693, 0x5693, 0x1590, 0x5694, 0x5694, 0x2BAA, 0x5695, 0x5695, 0x2382, - 0x5696, 0x5698, 0x2BAB, 0x5699, 0x5699, 0x209E, 0x569A, 0x56A2, 0x2BAE, - 0x56A3, 0x56A3, 0x0F66, 0x56A4, 0x56A5, 0x2BB7, 0x56A6, 0x56A6, 0x236B, - 0x56A7, 0x56A7, 0x2BB9, 0x56A8, 0x56A8, 0x2039, 0x56A9, 0x56AD, 0x2BBA, - 0x56AE, 0x56AE, 0x269F, 0x56AF, 0x56AF, 0x1591, 0x56B0, 0x56B2, 0x2BBF, - 0x56B3, 0x56B3, 0x237D, 0x56B4, 0x56B4, 0x21F5, 0x56B5, 0x56B5, 0x2BC2, - 0x56B6, 0x56B6, 0x2381, 0x56B7, 0x56B7, 0x0C9D, 0x56B8, 0x56BB, 0x2BC3, - 0x56BC, 0x56BC, 0x0891, 0x56BD, 0x56BF, 0x2BC7, 0x56C0, 0x56C0, 0x237B, - 0x56C1, 0x56C1, 0x237E, 0x56C2, 0x56C2, 0x21CC, 0x56C3, 0x56C4, 0x2BCA, - 0x56C5, 0x56C5, 0x22DB, 0x56C6, 0x56C7, 0x2BCC, 0x56C8, 0x56C8, 0x236A, - 0x56C9, 0x56C9, 0x2689, 0x56CA, 0x56CA, 0x0B35, 0x56CB, 0x56CB, 0x2BCE, - 0x56CC, 0x56CC, 0x2697, 0x56CD, 0x56D0, 0x2BCF, 0x56D1, 0x56D1, 0x22A1, - 0x56D2, 0x56D3, 0x2BD3, 0x56D4, 0x56D4, 0x1592, 0x56D5, 0x56D6, 0x2BD5, - 0x56D7, 0x56D7, 0x1593, 0x56D8, 0x56D9, 0x2BD7, 0x56DA, 0x56DA, 0x0C71, - 0x56DB, 0x56DB, 0x0DB9, 0x56DC, 0x56DC, 0x2BD9, 0x56DD, 0x56DD, 0x1594, - 0x56DE, 0x56DE, 0x07ED, 0x56DF, 0x56DF, 0x126C, 0x56E0, 0x56E0, 0x1079, - 0x56E1, 0x56E1, 0x1595, 0x56E2, 0x56E2, 0x0E76, 0x56E3, 0x56E3, 0x2BDA, - 0x56E4, 0x56E4, 0x0619, 0x56E5, 0x56EA, 0x2BDB, 0x56EB, 0x56EB, 0x1597, - 0x56EC, 0x56EC, 0x2BE1, 0x56ED, 0x56ED, 0x10F3, 0x56EE, 0x56EF, 0x2BE2, - 0x56F0, 0x56F0, 0x0992, 0x56F1, 0x56F1, 0x0554, 0x56F2, 0x56F3, 0x2BE4, - 0x56F4, 0x56F4, 0x0EB6, 0x56F5, 0x56F5, 0x1596, 0x56F6, 0x56F8, 0x2BE6, - 0x56F9, 0x56F9, 0x1598, 0x56FA, 0x56FA, 0x0725, 0x56FB, 0x56FC, 0x2BE9, - 0x56FD, 0x56FD, 0x0753, 0x56FE, 0x56FE, 0x0E6D, 0x56FF, 0x56FF, 0x1599, - 0x5700, 0x5702, 0x2BEB, 0x5703, 0x5703, 0x0BF3, 0x5704, 0x5704, 0x159A, - 0x5705, 0x5705, 0x2BEE, 0x5706, 0x5706, 0x10F5, 0x5707, 0x5707, 0x2383, - 0x5708, 0x5708, 0x0C81, 0x5709, 0x5709, 0x159C, 0x570A, 0x570A, 0x159B, - 0x570B, 0x570B, 0x1F3D, 0x570C, 0x570C, 0x2BEF, 0x570D, 0x570D, 0x218F, - 0x570E, 0x5711, 0x2BF0, 0x5712, 0x5712, 0x2246, 0x5713, 0x5713, 0x2248, - 0x5714, 0x5715, 0x2BF4, 0x5716, 0x5716, 0x217E, 0x5717, 0x5717, 0x2BF6, - 0x5718, 0x5718, 0x2180, 0x5719, 0x571B, 0x2BF7, 0x571C, 0x571C, 0x159D, - 0x571D, 0x571E, 0x2BFA, 0x571F, 0x571F, 0x0E72, 0x5720, 0x5722, 0x2BFC, - 0x5723, 0x5723, 0x0D3C, 0x5724, 0x5727, 0x2BFF, 0x5728, 0x5728, 0x111D, - 0x5729, 0x5729, 0x13A7, 0x572A, 0x572A, 0x13A9, 0x572B, 0x572B, 0x2C03, - 0x572C, 0x572C, 0x13A8, 0x572D, 0x572D, 0x0740, 0x572E, 0x572F, 0x13AC, - 0x5730, 0x5730, 0x05B9, 0x5731, 0x5732, 0x2C04, 0x5733, 0x5733, 0x13AA, - 0x5734, 0x5738, 0x2C06, 0x5739, 0x5739, 0x13AB, 0x573A, 0x573A, 0x04C6, - 0x573B, 0x573B, 0x13AF, 0x573C, 0x573D, 0x2C0B, 0x573E, 0x573E, 0x080D, - 0x573F, 0x573F, 0x2C0D, 0x5740, 0x5740, 0x11B6, 0x5741, 0x5741, 0x2C0E, - 0x5742, 0x5742, 0x13B0, 0x5743, 0x5746, 0x2C0F, 0x5747, 0x5747, 0x0928, - 0x5748, 0x5749, 0x2C13, 0x574A, 0x574A, 0x0658, 0x574B, 0x574B, 0x2C15, - 0x574C, 0x574C, 0x13A0, 0x574D, 0x574D, 0x0E01, 0x574E, 0x574E, 0x093F, - 0x574F, 0x574F, 0x07CA, 0x5750, 0x5750, 0x1255, 0x5751, 0x5751, 0x0960, - 0x5752, 0x5756, 0x2C16, 0x5757, 0x5757, 0x0976, 0x5758, 0x5759, 0x2C1B, - 0x575A, 0x575A, 0x0854, 0x575B, 0x575B, 0x0E06, 0x575C, 0x575C, 0x13AE, - 0x575D, 0x575D, 0x03DE, 0x575E, 0x575E, 0x0EFA, 0x575F, 0x575F, 0x0675, - 0x5760, 0x5760, 0x1216, 0x5761, 0x5761, 0x0BE1, 0x5762, 0x5763, 0x2C1D, - 0x5764, 0x5764, 0x098F, 0x5765, 0x5765, 0x2C1F, 0x5766, 0x5766, 0x0E0C, - 0x5767, 0x5767, 0x2C20, 0x5768, 0x5768, 0x13B7, 0x5769, 0x5769, 0x13B1, - 0x576A, 0x576A, 0x0BD9, 0x576B, 0x576B, 0x13B3, 0x576C, 0x576C, 0x2C21, - 0x576D, 0x576D, 0x13B8, 0x576E, 0x576E, 0x2C22, 0x576F, 0x576F, 0x0BB8, - 0x5770, 0x5772, 0x2C23, 0x5773, 0x5773, 0x13BA, 0x5774, 0x5775, 0x2C26, - 0x5776, 0x5776, 0x13B9, 0x5777, 0x5777, 0x094D, 0x5778, 0x577A, 0x2C28, - 0x577B, 0x577B, 0x13B6, 0x577C, 0x577C, 0x13B5, 0x577D, 0x5781, 0x2C2B, - 0x5782, 0x5782, 0x053C, 0x5783, 0x5783, 0x0997, 0x5784, 0x5784, 0x0A49, - 0x5785, 0x5785, 0x13B2, 0x5786, 0x5786, 0x13B4, 0x5787, 0x578A, 0x2C30, - 0x578B, 0x578B, 0x0F98, 0x578C, 0x578C, 0x13BD, 0x578D, 0x5791, 0x2C34, - 0x5792, 0x5792, 0x09C8, 0x5793, 0x5793, 0x13C2, 0x5794, 0x579A, 0x2C39, - 0x579B, 0x579B, 0x0621, 0x579C, 0x579F, 0x2C40, 0x57A0, 0x57A0, 0x13C3, - 0x57A1, 0x57A1, 0x13A2, 0x57A2, 0x57A2, 0x0711, 0x57A3, 0x57A3, 0x10EE, - 0x57A4, 0x57A4, 0x13BC, 0x57A5, 0x57A5, 0x2C44, 0x57A6, 0x57A6, 0x095E, - 0x57A7, 0x57A7, 0x13C0, 0x57A8, 0x57A8, 0x2C45, 0x57A9, 0x57A9, 0x13A1, - 0x57AA, 0x57AA, 0x2C46, 0x57AB, 0x57AB, 0x05C7, 0x57AC, 0x57AC, 0x2C47, - 0x57AD, 0x57AD, 0x13BB, 0x57AE, 0x57AE, 0x0972, 0x57AF, 0x57B1, 0x2C48, - 0x57B2, 0x57B2, 0x13BE, 0x57B3, 0x57B3, 0x2C4B, 0x57B4, 0x57B4, 0x13C1, - 0x57B5, 0x57B7, 0x2C4C, 0x57B8, 0x57B8, 0x13C9, 0x57B9, 0x57C1, 0x2C4F, - 0x57C2, 0x57C2, 0x06FA, 0x57C3, 0x57C3, 0x03AE, 0x57C4, 0x57CA, 0x2C58, - 0x57CB, 0x57CB, 0x0A98, 0x57CC, 0x57CD, 0x2C5F, 0x57CE, 0x57CE, 0x04EC, - 0x57CF, 0x57CF, 0x13BF, 0x57D0, 0x57D1, 0x2C61, 0x57D2, 0x57D2, 0x13C8, - 0x57D3, 0x57D3, 0x2C63, 0x57D4, 0x57D4, 0x0BF1, 0x57D5, 0x57D5, 0x13C4, - 0x57D6, 0x57D7, 0x2C64, 0x57D8, 0x57D8, 0x13C5, 0x57D9, 0x57D9, 0x13C7, - 0x57DA, 0x57DA, 0x13C6, 0x57DB, 0x57DC, 0x2C66, 0x57DD, 0x57DD, 0x13CE, - 0x57DE, 0x57DE, 0x2C68, 0x57DF, 0x57DF, 0x10D7, 0x57E0, 0x57E0, 0x0481, - 0x57E1, 0x57E1, 0x232A, 0x57E2, 0x57E3, 0x2C69, 0x57E4, 0x57E4, 0x13CD, - 0x57E5, 0x57EC, 0x2C6B, 0x57ED, 0x57ED, 0x13D2, 0x57EE, 0x57EE, 0x2C73, - 0x57EF, 0x57EF, 0x13CB, 0x57F0, 0x57F3, 0x2C74, 0x57F4, 0x57F4, 0x13CA, - 0x57F5, 0x57F6, 0x2C78, 0x57F7, 0x57F7, 0x228B, 0x57F8, 0x57F8, 0x13CC, - 0x57F9, 0x57F9, 0x0BA1, 0x57FA, 0x57FA, 0x080E, 0x57FB, 0x57FC, 0x2C7A, - 0x57FD, 0x57FD, 0x13D1, 0x57FE, 0x57FF, 0x2C7C, 0x5800, 0x5800, 0x13D3, - 0x5801, 0x5801, 0x2C7E, 0x5802, 0x5802, 0x0E16, 0x5803, 0x5804, 0x2C7F, - 0x5805, 0x5805, 0x1F85, 0x5806, 0x5806, 0x0610, 0x5807, 0x5807, 0x144C, - 0x5808, 0x5809, 0x2C81, 0x580A, 0x580A, 0x2325, 0x580B, 0x580B, 0x13CF, - 0x580C, 0x580C, 0x2C83, 0x580D, 0x580D, 0x13D0, 0x580E, 0x5810, 0x2C84, - 0x5811, 0x5811, 0x0C32, 0x5812, 0x5814, 0x2C87, 0x5815, 0x5815, 0x0628, - 0x5816, 0x5816, 0x232C, 0x5817, 0x5818, 0x2C8A, 0x5819, 0x5819, 0x13D5, - 0x581A, 0x581C, 0x2C8C, 0x581D, 0x581D, 0x232E, 0x581E, 0x581E, 0x13D4, - 0x581F, 0x581F, 0x2C8F, 0x5820, 0x5820, 0x13D7, 0x5821, 0x5821, 0x040D, - 0x5822, 0x5823, 0x2C90, 0x5824, 0x5824, 0x05AD, 0x5825, 0x5829, 0x2C92, - 0x582A, 0x582A, 0x093D, 0x582B, 0x582E, 0x2C97, 0x582F, 0x582F, 0x2205, - 0x5830, 0x5830, 0x1008, 0x5831, 0x5831, 0x1E38, 0x5832, 0x5833, 0x2C9B, - 0x5834, 0x5834, 0x1E73, 0x5835, 0x5835, 0x0601, 0x5836, 0x5843, 0x2C9D, - 0x5844, 0x5844, 0x13D6, 0x5845, 0x5849, 0x2CAB, 0x584A, 0x584A, 0x1FE3, - 0x584B, 0x584B, 0x2339, 0x584C, 0x584C, 0x0DEF, 0x584D, 0x584D, 0x19A3, - 0x584E, 0x584E, 0x2CB0, 0x584F, 0x584F, 0x232B, 0x5850, 0x5850, 0x2CB1, - 0x5851, 0x5851, 0x0DD1, 0x5852, 0x5852, 0x232D, 0x5853, 0x5853, 0x2CB2, - 0x5854, 0x5854, 0x0DF3, 0x5855, 0x5856, 0x2CB3, 0x5857, 0x5857, 0x217F, - 0x5858, 0x5858, 0x0E14, 0x5859, 0x585D, 0x2CB5, 0x585E, 0x585E, 0x0CD6, - 0x585F, 0x5861, 0x2CBA, 0x5862, 0x5862, 0x21A7, 0x5863, 0x5863, 0x2CBD, - 0x5864, 0x5864, 0x232F, 0x5865, 0x5865, 0x13D8, 0x5866, 0x586A, 0x2CBE, - 0x586B, 0x586B, 0x0E41, 0x586C, 0x586C, 0x13D9, 0x586D, 0x5874, 0x2CC3, - 0x5875, 0x5875, 0x1E7D, 0x5876, 0x5878, 0x2CCB, 0x5879, 0x5879, 0x20D6, - 0x587A, 0x587D, 0x2CCE, 0x587E, 0x587E, 0x13A3, 0x587F, 0x587F, 0x2CD2, - 0x5880, 0x5880, 0x13DD, 0x5881, 0x5881, 0x13DA, 0x5882, 0x5882, 0x2CD3, - 0x5883, 0x5883, 0x08E2, 0x5884, 0x5884, 0x2CD4, 0x5885, 0x5885, 0x0D92, - 0x5886, 0x5888, 0x2CD5, 0x5889, 0x5889, 0x13DB, 0x588A, 0x588A, 0x1EC2, - 0x588B, 0x5891, 0x2CD8, 0x5892, 0x5892, 0x0D03, 0x5893, 0x5893, 0x0B1C, - 0x5894, 0x5898, 0x2CDF, 0x5899, 0x5899, 0x0C3A, 0x589A, 0x589A, 0x13DC, - 0x589B, 0x589B, 0x2CE4, 0x589C, 0x589C, 0x22B2, 0x589D, 0x589D, 0x2CE5, - 0x589E, 0x589E, 0x1139, 0x589F, 0x589F, 0x0FB1, 0x58A0, 0x58A7, 0x2CE6, - 0x58A8, 0x58A8, 0x0B0E, 0x58A9, 0x58A9, 0x0614, 0x58AA, 0x58AD, 0x2CEE, - 0x58AE, 0x58AE, 0x1EDF, 0x58AF, 0x58B2, 0x2CF2, 0x58B3, 0x58B3, 0x1EF9, - 0x58B4, 0x58BA, 0x2CF6, 0x58BB, 0x58BB, 0x20D9, 0x58BC, 0x58BC, 0x13A4, - 0x58BD, 0x58BD, 0x2CFD, 0x58BE, 0x58BE, 0x1FDD, 0x58BF, 0x58C0, 0x2CFE, - 0x58C1, 0x58C1, 0x0443, 0x58C2, 0x58C4, 0x2D00, 0x58C5, 0x58C5, 0x13A5, - 0x58C6, 0x58C6, 0x2D03, 0x58C7, 0x58C7, 0x2167, 0x58C8, 0x58D0, 0x2D04, - 0x58D1, 0x58D1, 0x13A6, 0x58D2, 0x58D2, 0x2D0D, 0x58D3, 0x58D3, 0x21ED, - 0x58D4, 0x58D4, 0x2D0E, 0x58D5, 0x58D5, 0x0775, 0x58D6, 0x58D7, 0x2D0F, - 0x58D8, 0x58D8, 0x2007, 0x58D9, 0x58D9, 0x2326, 0x58DA, 0x58DA, 0x2329, - 0x58DB, 0x58DD, 0x2D11, 0x58DE, 0x58DE, 0x1F52, 0x58DF, 0x58DF, 0x203B, - 0x58E0, 0x58E0, 0x2328, 0x58E1, 0x58E1, 0x2D14, 0x58E2, 0x58E2, 0x2327, - 0x58E3, 0x58E3, 0x2D15, 0x58E4, 0x58E4, 0x0C9B, 0x58E5, 0x58E8, 0x2D16, - 0x58E9, 0x58E9, 0x1E2B, 0x58EA, 0x58EA, 0x2D1A, 0x58EB, 0x58EB, 0x0D56, - 0x58EC, 0x58EC, 0x0CA4, 0x58ED, 0x58ED, 0x2D1B, 0x58EE, 0x58EE, 0x1210, - 0x58EF, 0x58EF, 0x22AE, 0x58F0, 0x58F0, 0x0D32, 0x58F1, 0x58F2, 0x2D1C, - 0x58F3, 0x58F3, 0x0954, 0x58F4, 0x58F5, 0x2D1E, 0x58F6, 0x58F6, 0x07AF, - 0x58F7, 0x58F8, 0x2D20, 0x58F9, 0x58F9, 0x1043, 0x58FA, 0x58FA, 0x1F49, - 0x58FB, 0x58FC, 0x2D22, 0x58FD, 0x58FD, 0x2138, 0x58FE, 0x58FF, 0x2D24, - 0x5900, 0x5901, 0x2D26, 0x5902, 0x5902, 0x161C, 0x5903, 0x5903, 0x2D28, - 0x5904, 0x5904, 0x0529, 0x5905, 0x5906, 0x2D29, 0x5907, 0x5907, 0x0421, - 0x5908, 0x590C, 0x2D2B, 0x590D, 0x590D, 0x06AF, 0x590E, 0x590E, 0x2D30, - 0x590F, 0x590F, 0x0F31, 0x5910, 0x5913, 0x2D31, 0x5914, 0x5914, 0x12FB, - 0x5915, 0x5915, 0x0F13, 0x5916, 0x5916, 0x0E93, 0x5917, 0x5918, 0x2D35, - 0x5919, 0x5919, 0x1301, 0x591A, 0x591A, 0x061F, 0x591B, 0x591B, 0x2D37, - 0x591C, 0x591C, 0x1040, 0x591D, 0x591E, 0x2D38, 0x591F, 0x591F, 0x0714, - 0x5920, 0x5921, 0x2D3A, 0x5922, 0x5922, 0x2081, 0x5923, 0x5923, 0x2D3C, - 0x5924, 0x5924, 0x161B, 0x5925, 0x5925, 0x1619, 0x5926, 0x5926, 0x2D3D, - 0x5927, 0x5927, 0x0576, 0x5928, 0x5928, 0x2D3E, 0x5929, 0x5929, 0x0E3F, - 0x592A, 0x592A, 0x0DFE, 0x592B, 0x592B, 0x068F, 0x592C, 0x592C, 0x2D3F, - 0x592D, 0x592D, 0x1268, 0x592E, 0x592E, 0x1014, 0x592F, 0x592F, 0x0772, - 0x5930, 0x5930, 0x2D40, 0x5931, 0x5931, 0x0D3E, 0x5932, 0x5933, 0x2D41, - 0x5934, 0x5934, 0x0E68, 0x5935, 0x5936, 0x2D43, 0x5937, 0x5937, 0x104B, - 0x5938, 0x5938, 0x0971, 0x5939, 0x5939, 0x0843, 0x593A, 0x593A, 0x0620, - 0x593B, 0x593B, 0x2D45, 0x593C, 0x593C, 0x14AF, 0x593D, 0x593D, 0x2D46, - 0x593E, 0x593E, 0x1F7C, 0x593F, 0x5940, 0x2D47, 0x5941, 0x5941, 0x14B0, - 0x5942, 0x5942, 0x138C, 0x5943, 0x5943, 0x2D49, 0x5944, 0x5944, 0x1002, - 0x5945, 0x5946, 0x2D4A, 0x5947, 0x5947, 0x0C05, 0x5948, 0x5948, 0x0B31, - 0x5949, 0x5949, 0x068B, 0x594A, 0x594A, 0x2D4C, 0x594B, 0x594B, 0x0679, - 0x594C, 0x594D, 0x2D4D, 0x594E, 0x594E, 0x0989, 0x594F, 0x594F, 0x123D, - 0x5950, 0x5950, 0x2D4F, 0x5951, 0x5951, 0x0C14, 0x5952, 0x5953, 0x2D50, - 0x5954, 0x5954, 0x0425, 0x5955, 0x5955, 0x14B2, 0x5956, 0x5956, 0x0882, - 0x5957, 0x5957, 0x0E2A, 0x5958, 0x5958, 0x14B4, 0x5959, 0x5959, 0x2D52, - 0x595A, 0x595A, 0x14B3, 0x595B, 0x595F, 0x2D53, 0x5960, 0x5960, 0x05CD, - 0x5961, 0x5961, 0x2D58, 0x5962, 0x5962, 0x0D16, 0x5963, 0x5964, 0x2D59, - 0x5965, 0x5965, 0x03CD, 0x5966, 0x5968, 0x2D5B, 0x5969, 0x5969, 0x235B, - 0x596A, 0x596A, 0x1EDE, 0x596B, 0x596B, 0x2D5E, 0x596C, 0x596C, 0x1FA2, - 0x596D, 0x596D, 0x2D5F, 0x596E, 0x596E, 0x1EFA, 0x596F, 0x5972, 0x2D60, - 0x5973, 0x5973, 0x0B6F, 0x5974, 0x5974, 0x0B6C, 0x5975, 0x5975, 0x2D64, - 0x5976, 0x5976, 0x0B2F, 0x5977, 0x5977, 0x2D65, 0x5978, 0x5978, 0x085C, - 0x5979, 0x5979, 0x0DF2, 0x597A, 0x597C, 0x2D66, 0x597D, 0x597D, 0x077A, - 0x597E, 0x5980, 0x2D69, 0x5981, 0x5981, 0x1775, 0x5982, 0x5982, 0x0CC2, - 0x5983, 0x5983, 0x1776, 0x5984, 0x5984, 0x0EAE, 0x5985, 0x5985, 0x2D6C, - 0x5986, 0x5986, 0x120E, 0x5987, 0x5987, 0x06B9, 0x5988, 0x5988, 0x0A8F, - 0x5989, 0x5989, 0x2D6D, 0x598A, 0x598A, 0x0CAC, 0x598B, 0x598C, 0x2D6E, - 0x598D, 0x598D, 0x1777, 0x598E, 0x5991, 0x2D70, 0x5992, 0x5992, 0x0609, - 0x5993, 0x5993, 0x083E, 0x5994, 0x5995, 0x2D74, 0x5996, 0x5996, 0x1026, - 0x5997, 0x5997, 0x177B, 0x5998, 0x5998, 0x2D76, 0x5999, 0x5999, 0x0AF3, - 0x599A, 0x599C, 0x2D77, 0x599D, 0x599D, 0x22AD, 0x599E, 0x599E, 0x177E, - 0x599F, 0x59A2, 0x2D7A, 0x59A3, 0x59A3, 0x177A, 0x59A4, 0x59A4, 0x177F, - 0x59A5, 0x59A5, 0x0E88, 0x59A6, 0x59A7, 0x2D7E, 0x59A8, 0x59A8, 0x065E, - 0x59A9, 0x59AA, 0x1778, 0x59AB, 0x59AB, 0x177D, 0x59AC, 0x59AD, 0x2D80, - 0x59AE, 0x59AE, 0x0B40, 0x59AF, 0x59AF, 0x1782, 0x59B0, 0x59B1, 0x2D82, - 0x59B2, 0x59B2, 0x1781, 0x59B3, 0x59B8, 0x2D84, 0x59B9, 0x59B9, 0x0AC8, - 0x59BA, 0x59BA, 0x2D8A, 0x59BB, 0x59BB, 0x0BFD, 0x59BC, 0x59BD, 0x2D8B, - 0x59BE, 0x59BE, 0x1784, 0x59BF, 0x59C5, 0x2D8D, 0x59C6, 0x59C6, 0x0B1A, - 0x59C7, 0x59C9, 0x2D94, 0x59CA, 0x59CA, 0x177C, 0x59CB, 0x59CB, 0x0D53, - 0x59CC, 0x59CF, 0x2D97, 0x59D0, 0x59D0, 0x08B4, 0x59D1, 0x59D1, 0x071C, - 0x59D2, 0x59D2, 0x1780, 0x59D3, 0x59D3, 0x0FA0, 0x59D4, 0x59D4, 0x0EBE, - 0x59D5, 0x59D6, 0x2D9B, 0x59D7, 0x59D7, 0x1783, 0x59D8, 0x59D8, 0x178A, - 0x59D9, 0x59D9, 0x2D9D, 0x59DA, 0x59DA, 0x102D, 0x59DB, 0x59DB, 0x2D9E, - 0x59DC, 0x59DC, 0x087B, 0x59DD, 0x59DD, 0x1787, 0x59DE, 0x59E2, 0x2D9F, - 0x59E3, 0x59E3, 0x1789, 0x59E4, 0x59E4, 0x2DA4, 0x59E5, 0x59E5, 0x09BC, - 0x59E6, 0x59E7, 0x2DA5, 0x59E8, 0x59E8, 0x1053, 0x59E9, 0x59EB, 0x2DA7, - 0x59EC, 0x59EC, 0x081A, 0x59ED, 0x59F8, 0x2DAA, 0x59F9, 0x59F9, 0x178B, - 0x59FA, 0x59FA, 0x2DB6, 0x59FB, 0x59FB, 0x107D, 0x59FC, 0x59FE, 0x2DB7, - 0x59FF, 0x59FF, 0x1228, 0x5A00, 0x5A00, 0x2DBA, 0x5A01, 0x5A01, 0x0EAF, - 0x5A02, 0x5A02, 0x2DBB, 0x5A03, 0x5A03, 0x0E8F, 0x5A04, 0x5A04, 0x0A4D, - 0x5A05, 0x5A06, 0x1785, 0x5A07, 0x5A07, 0x0890, 0x5A08, 0x5A08, 0x1788, - 0x5A09, 0x5A09, 0x178D, 0x5A0A, 0x5A0B, 0x2DBC, 0x5A0C, 0x5A0C, 0x178C, - 0x5A0D, 0x5A10, 0x2DBE, 0x5A11, 0x5A11, 0x1790, 0x5A12, 0x5A12, 0x2DC2, - 0x5A13, 0x5A13, 0x1792, 0x5A14, 0x5A17, 0x2DC3, 0x5A18, 0x5A18, 0x0B52, - 0x5A19, 0x5A1B, 0x2DC7, 0x5A1C, 0x5A1C, 0x0B2B, 0x5A1D, 0x5A1E, 0x2DCA, - 0x5A1F, 0x5A1F, 0x0919, 0x5A20, 0x5A20, 0x0D28, 0x5A21, 0x5A22, 0x2DCC, - 0x5A23, 0x5A23, 0x1791, 0x5A24, 0x5A24, 0x2DCE, 0x5A25, 0x5A25, 0x062F, - 0x5A26, 0x5A28, 0x2DCF, 0x5A29, 0x5A29, 0x0AE9, 0x5A2A, 0x5A30, 0x2DD2, - 0x5A31, 0x5A31, 0x10CE, 0x5A32, 0x5A32, 0x178E, 0x5A33, 0x5A33, 0x2DD9, - 0x5A34, 0x5A34, 0x178F, 0x5A35, 0x5A35, 0x2DDA, 0x5A36, 0x5A36, 0x0C7D, - 0x5A37, 0x5A3B, 0x2DDB, 0x5A3C, 0x5A3C, 0x1797, 0x5A3D, 0x5A3F, 0x2DE0, - 0x5A40, 0x5A40, 0x1793, 0x5A41, 0x5A41, 0x203F, 0x5A42, 0x5A45, 0x2DE3, - 0x5A46, 0x5A46, 0x0BE4, 0x5A47, 0x5A48, 0x2DE7, 0x5A49, 0x5A49, 0x0EA2, - 0x5A4A, 0x5A4A, 0x1795, 0x5A4B, 0x5A54, 0x2DE9, 0x5A55, 0x5A55, 0x1796, - 0x5A56, 0x5A59, 0x2DF3, 0x5A5A, 0x5A5A, 0x07FE, 0x5A5B, 0x5A61, 0x2DF7, - 0x5A62, 0x5A62, 0x1798, 0x5A63, 0x5A65, 0x2DFE, 0x5A66, 0x5A66, 0x1F0E, - 0x5A67, 0x5A67, 0x1794, 0x5A68, 0x5A69, 0x2E01, 0x5A6A, 0x5A6A, 0x09A2, - 0x5A6B, 0x5A6C, 0x2E03, 0x5A6D, 0x5A6D, 0x23F9, 0x5A6E, 0x5A73, 0x2E05, - 0x5A74, 0x5A74, 0x1089, 0x5A75, 0x5A75, 0x1799, 0x5A76, 0x5A76, 0x0D2D, - 0x5A77, 0x5A77, 0x179D, 0x5A78, 0x5A79, 0x2E0B, 0x5A7A, 0x5A7A, 0x179E, - 0x5A7B, 0x5A7E, 0x2E0D, 0x5A7F, 0x5A7F, 0x0FC1, 0x5A80, 0x5A91, 0x2E11, - 0x5A92, 0x5A92, 0x0AC2, 0x5A93, 0x5A99, 0x2E23, 0x5A9A, 0x5A9A, 0x0AC9, - 0x5A9B, 0x5A9B, 0x179C, 0x5A9C, 0x5AA6, 0x2E2A, 0x5AA7, 0x5AA7, 0x23FC, - 0x5AA8, 0x5AA9, 0x2E35, 0x5AAA, 0x5AAA, 0x179B, 0x5AAB, 0x5AB1, 0x2E37, - 0x5AB2, 0x5AB2, 0x17A1, 0x5AB3, 0x5AB3, 0x0F1E, 0x5AB4, 0x5AB4, 0x2E3E, - 0x5AB5, 0x5AB5, 0x19A4, 0x5AB6, 0x5AB7, 0x2E3F, 0x5AB8, 0x5AB8, 0x17A4, - 0x5AB9, 0x5ABC, 0x2E41, 0x5ABD, 0x5ABD, 0x2069, 0x5ABE, 0x5ABE, 0x179F, - 0x5ABF, 0x5AC0, 0x2E45, 0x5AC1, 0x5AC1, 0x0851, 0x5AC2, 0x5AC2, 0x0CE2, - 0x5AC3, 0x5AC8, 0x2E47, 0x5AC9, 0x5AC9, 0x0828, 0x5ACA, 0x5ACB, 0x2E4D, - 0x5ACC, 0x5ACC, 0x0F40, 0x5ACD, 0x5AD1, 0x2E4F, 0x5AD2, 0x5AD2, 0x17A2, - 0x5AD3, 0x5AD3, 0x2E54, 0x5AD4, 0x5AD4, 0x17A3, 0x5AD5, 0x5AD5, 0x2E55, - 0x5AD6, 0x5AD6, 0x17A8, 0x5AD7, 0x5AD7, 0x23F7, 0x5AD8, 0x5AD8, 0x17AA, - 0x5AD9, 0x5ADB, 0x2E56, 0x5ADC, 0x5ADC, 0x17AB, 0x5ADD, 0x5ADF, 0x2E59, - 0x5AE0, 0x5AE0, 0x17A5, 0x5AE1, 0x5AE1, 0x05B6, 0x5AE2, 0x5AE2, 0x2E5C, - 0x5AE3, 0x5AE3, 0x17A6, 0x5AE4, 0x5AE5, 0x2E5D, 0x5AE6, 0x5AE6, 0x17A9, - 0x5AE7, 0x5AE8, 0x2E5F, 0x5AE9, 0x5AE9, 0x0B3E, 0x5AEA, 0x5AEA, 0x2E61, - 0x5AEB, 0x5AEB, 0x17A0, 0x5AEC, 0x5AF0, 0x2E62, 0x5AF1, 0x5AF1, 0x17A7, - 0x5AF2, 0x5AF4, 0x2E67, 0x5AF5, 0x5AF5, 0x23F6, 0x5AF6, 0x5AFA, 0x2E6A, - 0x5AFB, 0x5AFB, 0x23FD, 0x5AFC, 0x5AFF, 0x2E6F, 0x5B00, 0x5B00, 0x23F8, - 0x5B01, 0x5B07, 0x2E73, 0x5B08, 0x5B08, 0x23FA, 0x5B09, 0x5B09, 0x17AC, - 0x5B0A, 0x5B0A, 0x2E7A, 0x5B0B, 0x5B0B, 0x23FE, 0x5B0C, 0x5B0C, 0x1FA8, - 0x5B0D, 0x5B15, 0x2E7B, 0x5B16, 0x5B16, 0x17AE, 0x5B17, 0x5B17, 0x17AD, - 0x5B18, 0x5B18, 0x2E84, 0x5B19, 0x5B19, 0x2401, 0x5B1A, 0x5B20, 0x2E85, - 0x5B21, 0x5B21, 0x23FF, 0x5B22, 0x5B29, 0x2E8C, 0x5B2A, 0x5B2A, 0x2400, - 0x5B2B, 0x5B2F, 0x2E94, 0x5B30, 0x5B30, 0x2221, 0x5B31, 0x5B31, 0x2E99, - 0x5B32, 0x5B32, 0x17AF, 0x5B33, 0x5B33, 0x2E9A, 0x5B34, 0x5B34, 0x130C, - 0x5B35, 0x5B36, 0x2E9B, 0x5B37, 0x5B37, 0x17B0, 0x5B38, 0x5B38, 0x2122, - 0x5B39, 0x5B3F, 0x2E9D, 0x5B40, 0x5B40, 0x17B1, 0x5B41, 0x5B4B, 0x2EA4, - 0x5B4C, 0x5B4C, 0x23FB, 0x5B4D, 0x5B4F, 0x2EAF, 0x5B50, 0x5B50, 0x1230, - 0x5B51, 0x5B51, 0x17B7, 0x5B52, 0x5B52, 0x2EB2, 0x5B53, 0x5B53, 0x17B8, - 0x5B54, 0x5B54, 0x0964, 0x5B55, 0x5B55, 0x1113, 0x5B56, 0x5B56, 0x2EB3, - 0x5B57, 0x5B57, 0x1233, 0x5B58, 0x5B58, 0x0569, 0x5B59, 0x5B59, 0x0DE4, - 0x5B5A, 0x5B5A, 0x17B4, 0x5B5B, 0x5B5B, 0x1279, 0x5B5C, 0x5B5C, 0x122B, - 0x5B5D, 0x5B5D, 0x0F6D, 0x5B5E, 0x5B5E, 0x2EB4, 0x5B5F, 0x5B5F, 0x0AD4, - 0x5B60, 0x5B61, 0x2EB5, 0x5B62, 0x5B62, 0x17B9, 0x5B63, 0x5B63, 0x0831, - 0x5B64, 0x5B64, 0x071B, 0x5B65, 0x5B65, 0x17B5, 0x5B66, 0x5B66, 0x0FD0, - 0x5B67, 0x5B68, 0x2EB7, 0x5B69, 0x5B69, 0x0759, 0x5B6A, 0x5B6A, 0x0A76, - 0x5B6B, 0x5B6B, 0x215A, 0x5B6C, 0x5B6C, 0x1261, 0x5B6D, 0x5B6F, 0x2EB9, - 0x5B70, 0x5B70, 0x0D82, 0x5B71, 0x5B71, 0x176A, 0x5B72, 0x5B72, 0x2EBC, - 0x5B73, 0x5B73, 0x17B6, 0x5B74, 0x5B74, 0x2EBD, 0x5B75, 0x5B75, 0x0692, - 0x5B76, 0x5B77, 0x2EBE, 0x5B78, 0x5B78, 0x21E5, 0x5B79, 0x5B79, 0x2EC0, - 0x5B7A, 0x5B7A, 0x0CC1, 0x5B7B, 0x5B7C, 0x2EC1, 0x5B7D, 0x5B7D, 0x0B58, - 0x5B7E, 0x5B7E, 0x2EC3, 0x5B7F, 0x5B7F, 0x2057, 0x5B80, 0x5B80, 0x172E, - 0x5B81, 0x5B81, 0x0B61, 0x5B82, 0x5B82, 0x2EC4, 0x5B83, 0x5B83, 0x0DF1, - 0x5B84, 0x5B84, 0x172F, 0x5B85, 0x5B85, 0x114D, 0x5B86, 0x5B86, 0x2EC5, - 0x5B87, 0x5B87, 0x10D3, 0x5B88, 0x5B88, 0x0D6F, 0x5B89, 0x5B89, 0x03BD, - 0x5B8A, 0x5B8A, 0x2EC6, 0x5B8B, 0x5B8B, 0x0DC3, 0x5B8C, 0x5B8C, 0x0E9B, - 0x5B8D, 0x5B8E, 0x2EC7, 0x5B8F, 0x5B8F, 0x07A1, 0x5B90, 0x5B92, 0x2EC9, - 0x5B93, 0x5B93, 0x1731, 0x5B94, 0x5B94, 0x2ECC, 0x5B95, 0x5B95, 0x1730, - 0x5B96, 0x5B96, 0x2ECD, 0x5B97, 0x5B97, 0x1237, 0x5B98, 0x5B98, 0x0732, - 0x5B99, 0x5B99, 0x11E5, 0x5B9A, 0x5B9A, 0x05E7, 0x5B9B, 0x5B9B, 0x0EA1, - 0x5B9C, 0x5B9C, 0x1052, 0x5B9D, 0x5B9D, 0x040F, 0x5B9E, 0x5B9E, 0x0D4C, - 0x5B9F, 0x5B9F, 0x2ECE, 0x5BA0, 0x5BA0, 0x050D, 0x5BA1, 0x5BA1, 0x0D2C, - 0x5BA2, 0x5BA2, 0x095A, 0x5BA3, 0x5BA3, 0x0FC6, 0x5BA4, 0x5BA4, 0x0D69, - 0x5BA5, 0x5BA5, 0x1732, 0x5BA6, 0x5BA6, 0x07D7, 0x5BA7, 0x5BA9, 0x2ECF, - 0x5BAA, 0x5BAA, 0x0F49, 0x5BAB, 0x5BAB, 0x0705, 0x5BAC, 0x5BAF, 0x2ED2, - 0x5BB0, 0x5BB0, 0x111A, 0x5BB1, 0x5BB2, 0x2ED6, 0x5BB3, 0x5BB3, 0x075D, - 0x5BB4, 0x5BB4, 0x1010, 0x5BB5, 0x5BB5, 0x0F69, 0x5BB6, 0x5BB6, 0x0845, - 0x5BB7, 0x5BB7, 0x2ED8, 0x5BB8, 0x5BB8, 0x1733, 0x5BB9, 0x5BB9, 0x0CB8, - 0x5BBA, 0x5BBC, 0x2ED9, 0x5BBD, 0x5BBD, 0x097A, 0x5BBE, 0x5BBE, 0x045F, - 0x5BBF, 0x5BBF, 0x0DD3, 0x5BC0, 0x5BC1, 0x2EDC, 0x5BC2, 0x5BC2, 0x0838, - 0x5BC3, 0x5BC3, 0x2EDE, 0x5BC4, 0x5BC4, 0x0837, 0x5BC5, 0x5BC5, 0x1081, - 0x5BC6, 0x5BC6, 0x0AE1, 0x5BC7, 0x5BC7, 0x0969, 0x5BC8, 0x5BCB, 0x2EDF, - 0x5BCC, 0x5BCC, 0x06B6, 0x5BCD, 0x5BCF, 0x2EE3, 0x5BD0, 0x5BD0, 0x0AC7, - 0x5BD1, 0x5BD1, 0x2EE6, 0x5BD2, 0x5BD2, 0x0765, 0x5BD3, 0x5BD3, 0x10E5, - 0x5BD4, 0x5BDC, 0x2EE7, 0x5BDD, 0x5BDD, 0x0C5B, 0x5BDE, 0x5BDE, 0x0B12, - 0x5BDF, 0x5BDF, 0x04B3, 0x5BE0, 0x5BE0, 0x2EF0, 0x5BE1, 0x5BE1, 0x072A, - 0x5BE2, 0x5BE2, 0x20E5, 0x5BE3, 0x5BE3, 0x2EF1, 0x5BE4, 0x5BE4, 0x1737, - 0x5BE5, 0x5BE5, 0x0A11, 0x5BE6, 0x5BE6, 0x212F, 0x5BE7, 0x5BE7, 0x20A3, - 0x5BE8, 0x5BE8, 0x1150, 0x5BE9, 0x5BE9, 0x2121, 0x5BEA, 0x5BEA, 0x2EF2, - 0x5BEB, 0x5BEB, 0x21D4, 0x5BEC, 0x5BEC, 0x1FE5, 0x5BED, 0x5BED, 0x2EF3, - 0x5BEE, 0x5BEE, 0x1738, 0x5BEF, 0x5BEF, 0x2EF4, 0x5BF0, 0x5BF0, 0x173A, - 0x5BF1, 0x5BF4, 0x2EF5, 0x5BF5, 0x5BF5, 0x1E8A, 0x5BF6, 0x5BF6, 0x1E37, - 0x5BF7, 0x5BF7, 0x2EF9, 0x5BF8, 0x5BF8, 0x056A, 0x5BF9, 0x5BF9, 0x0613, - 0x5BFA, 0x5BFA, 0x0DB7, 0x5BFB, 0x5BFB, 0x0FD9, 0x5BFC, 0x5BFC, 0x059D, - 0x5BFD, 0x5BFE, 0x2EFA, 0x5BFF, 0x5BFF, 0x0D70, 0x5C00, 0x5C00, 0x2EFC, - 0x5C01, 0x5C01, 0x067F, 0x5C02, 0x5C03, 0x2EFD, 0x5C04, 0x5C04, 0x0D1D, - 0x5C05, 0x5C05, 0x2EFF, 0x5C06, 0x5C06, 0x087C, 0x5C07, 0x5C07, 0x1F9E, - 0x5C08, 0x5C08, 0x22A6, 0x5C09, 0x5C09, 0x0ECD, 0x5C0A, 0x5C0A, 0x124D, - 0x5C0B, 0x5C0B, 0x21E8, 0x5C0C, 0x5C0C, 0x2F00, 0x5C0D, 0x5C0D, 0x1EDA, - 0x5C0E, 0x5C0E, 0x1EB9, 0x5C0F, 0x5C0F, 0x0F6C, 0x5C10, 0x5C10, 0x2F01, - 0x5C11, 0x5C11, 0x0D12, 0x5C12, 0x5C13, 0x2F02, 0x5C14, 0x5C14, 0x063A, - 0x5C15, 0x5C15, 0x17B2, 0x5C16, 0x5C16, 0x0855, 0x5C17, 0x5C17, 0x2F04, - 0x5C18, 0x5C18, 0x04E3, 0x5C19, 0x5C19, 0x2F05, 0x5C1A, 0x5C1A, 0x0D09, - 0x5C1B, 0x5C1B, 0x2F06, 0x5C1C, 0x5C1C, 0x17B3, 0x5C1D, 0x5C1D, 0x04C7, - 0x5C1E, 0x5C21, 0x2F07, 0x5C22, 0x5C22, 0x14B6, 0x5C23, 0x5C23, 0x2F0B, - 0x5C24, 0x5C24, 0x10AD, 0x5C25, 0x5C25, 0x14B7, 0x5C26, 0x5C26, 0x2F0C, - 0x5C27, 0x5C27, 0x1029, 0x5C28, 0x5C2B, 0x2F0D, 0x5C2C, 0x5C2C, 0x14B8, - 0x5C2D, 0x5C30, 0x2F11, 0x5C31, 0x5C31, 0x08FC, 0x5C32, 0x5C33, 0x2F15, - 0x5C34, 0x5C34, 0x14B9, 0x5C35, 0x5C36, 0x2F17, 0x5C37, 0x5C37, 0x235C, - 0x5C38, 0x5C38, 0x0D43, 0x5C39, 0x5C39, 0x1083, 0x5C3A, 0x5C3A, 0x0504, - 0x5C3B, 0x5C3B, 0x1766, 0x5C3C, 0x5C3C, 0x0B44, 0x5C3D, 0x5C3D, 0x08D0, - 0x5C3E, 0x5C3E, 0x0EC1, 0x5C3F, 0x5C3F, 0x0B55, 0x5C40, 0x5C40, 0x0905, - 0x5C41, 0x5C41, 0x0BC7, 0x5C42, 0x5C42, 0x04AA, 0x5C43, 0x5C44, 0x2F19, - 0x5C45, 0x5C45, 0x0902, 0x5C46, 0x5C47, 0x2F1B, 0x5C48, 0x5C48, 0x0C79, - 0x5C49, 0x5C49, 0x0E3E, 0x5C4A, 0x5C4A, 0x08BD, 0x5C4B, 0x5C4B, 0x0EEC, - 0x5C4C, 0x5C4D, 0x2F1D, 0x5C4E, 0x5C4E, 0x0D51, 0x5C4F, 0x5C4F, 0x0BE0, - 0x5C50, 0x5C50, 0x1768, 0x5C51, 0x5C51, 0x0F87, 0x5C52, 0x5C54, 0x2F1F, - 0x5C55, 0x5C55, 0x115A, 0x5C56, 0x5C58, 0x2F22, 0x5C59, 0x5C59, 0x1769, - 0x5C5A, 0x5C5D, 0x2F25, 0x5C5E, 0x5C5E, 0x0D8B, 0x5C5F, 0x5C5F, 0x2F29, - 0x5C60, 0x5C60, 0x0E71, 0x5C61, 0x5C61, 0x0A6C, 0x5C62, 0x5C62, 0x2050, - 0x5C63, 0x5C63, 0x176B, 0x5C64, 0x5C64, 0x1E67, 0x5C65, 0x5C65, 0x0A6B, - 0x5C66, 0x5C66, 0x176C, 0x5C67, 0x5C67, 0x2F2A, 0x5C68, 0x5C68, 0x23F4, - 0x5C69, 0x5C6B, 0x2F2B, 0x5C6C, 0x5C6C, 0x213E, 0x5C6D, 0x5C6D, 0x2F2E, - 0x5C6E, 0x5C6E, 0x1774, 0x5C6F, 0x5C6F, 0x0E7E, 0x5C70, 0x5C70, 0x2F2F, - 0x5C71, 0x5C71, 0x0CF6, 0x5C72, 0x5C78, 0x2F30, 0x5C79, 0x5C79, 0x1060, - 0x5C7A, 0x5C7A, 0x15AC, 0x5C7B, 0x5C7E, 0x2F37, 0x5C7F, 0x5C7F, 0x10D1, - 0x5C80, 0x5C80, 0x2F3B, 0x5C81, 0x5C81, 0x0DDF, 0x5C82, 0x5C82, 0x0C10, - 0x5C83, 0x5C87, 0x2F3C, 0x5C88, 0x5C88, 0x15B0, 0x5C89, 0x5C8B, 0x2F41, - 0x5C8C, 0x5C8C, 0x15AB, 0x5C8D, 0x5C8D, 0x15AD, 0x5C8E, 0x5C8F, 0x2F44, - 0x5C90, 0x5C90, 0x15AE, 0x5C91, 0x5C91, 0x15B3, 0x5C92, 0x5C93, 0x2F46, - 0x5C94, 0x5C94, 0x04B4, 0x5C95, 0x5C95, 0x2F48, 0x5C96, 0x5C96, 0x15AF, - 0x5C97, 0x5C97, 0x06D5, 0x5C98, 0x5C99, 0x15B1, 0x5C9A, 0x5C9A, 0x15B4, - 0x5C9B, 0x5C9B, 0x059B, 0x5C9C, 0x5C9C, 0x15B5, 0x5C9D, 0x5CA0, 0x2F49, - 0x5CA1, 0x5CA1, 0x1F16, 0x5CA2, 0x5CA2, 0x15B7, 0x5CA3, 0x5CA3, 0x15BC, - 0x5CA4, 0x5CA8, 0x2F4D, 0x5CA9, 0x5CA9, 0x0FFB, 0x5CAA, 0x5CAA, 0x2F52, - 0x5CAB, 0x5CAB, 0x15BA, 0x5CAC, 0x5CAC, 0x15B9, 0x5CAD, 0x5CAD, 0x0A34, - 0x5CAE, 0x5CB0, 0x2F53, 0x5CB1, 0x5CB1, 0x15BB, 0x5CB2, 0x5CB2, 0x2F56, - 0x5CB3, 0x5CB3, 0x1103, 0x5CB4, 0x5CB4, 0x2F57, 0x5CB5, 0x5CB5, 0x15B6, - 0x5CB6, 0x5CB6, 0x2F58, 0x5CB7, 0x5CB7, 0x15BE, 0x5CB8, 0x5CB8, 0x03C1, - 0x5CB9, 0x5CBC, 0x2F59, 0x5CBD, 0x5CBD, 0x15B8, 0x5CBE, 0x5CBE, 0x2F5D, - 0x5CBF, 0x5CBF, 0x0986, 0x5CC0, 0x5CC0, 0x2F5E, 0x5CC1, 0x5CC1, 0x15BD, - 0x5CC2, 0x5CC3, 0x2F5F, 0x5CC4, 0x5CC4, 0x15BF, 0x5CC5, 0x5CCA, 0x2F61, - 0x5CCB, 0x5CCB, 0x15C2, 0x5CCC, 0x5CD1, 0x2F67, 0x5CD2, 0x5CD2, 0x15C0, - 0x5CD3, 0x5CD8, 0x2F6D, 0x5CD9, 0x5CD9, 0x11C4, 0x5CDA, 0x5CE0, 0x2F73, - 0x5CE1, 0x5CE1, 0x0F2C, 0x5CE2, 0x5CE3, 0x2F7A, 0x5CE4, 0x5CE4, 0x15C1, - 0x5CE5, 0x5CE5, 0x15C3, 0x5CE6, 0x5CE6, 0x0A74, 0x5CE7, 0x5CE7, 0x2F7C, - 0x5CE8, 0x5CE8, 0x062A, 0x5CE9, 0x5CE9, 0x2F7D, 0x5CEA, 0x5CEA, 0x10DD, - 0x5CEB, 0x5CEC, 0x2F7E, 0x5CED, 0x5CED, 0x0C4A, 0x5CEE, 0x5CEF, 0x2F80, - 0x5CF0, 0x5CF0, 0x0682, 0x5CF1, 0x5CF3, 0x2F82, 0x5CF4, 0x5CF4, 0x2389, - 0x5CF5, 0x5CF5, 0x2F85, 0x5CF6, 0x5CF6, 0x1EB7, 0x5CF7, 0x5CFA, 0x2F86, - 0x5CFB, 0x5CFB, 0x092D, 0x5CFC, 0x5CFC, 0x2F8A, 0x5CFD, 0x5CFD, 0x21B4, - 0x5CFE, 0x5CFF, 0x2F8B, 0x5D00, 0x5D01, 0x2F8D, 0x5D02, 0x5D03, 0x15C4, - 0x5D04, 0x5D05, 0x2F8F, 0x5D06, 0x5D06, 0x15CB, 0x5D07, 0x5D07, 0x050C, - 0x5D08, 0x5D0C, 0x2F91, 0x5D0D, 0x5D0D, 0x238F, 0x5D0E, 0x5D0E, 0x0C08, - 0x5D0F, 0x5D13, 0x2F96, 0x5D14, 0x5D14, 0x0561, 0x5D15, 0x5D15, 0x2F9B, - 0x5D16, 0x5D16, 0x0FEB, 0x5D17, 0x5D17, 0x1F1A, 0x5D18, 0x5D1A, 0x2F9C, - 0x5D1B, 0x5D1B, 0x15CC, 0x5D1C, 0x5D1D, 0x2F9F, 0x5D1E, 0x5D1E, 0x15CA, - 0x5D1F, 0x5D23, 0x2FA1, 0x5D24, 0x5D24, 0x15C9, 0x5D25, 0x5D25, 0x2FA6, - 0x5D26, 0x5D26, 0x15C7, 0x5D27, 0x5D27, 0x15C6, 0x5D28, 0x5D28, 0x2FA7, - 0x5D29, 0x5D29, 0x0429, 0x5D2A, 0x5D2B, 0x2FA8, 0x5D2C, 0x5D2C, 0x238B, - 0x5D2D, 0x5D2D, 0x1159, 0x5D2E, 0x5D2E, 0x15C8, 0x5D2F, 0x5D33, 0x2FAA, - 0x5D34, 0x5D34, 0x15CF, 0x5D35, 0x5D3C, 0x2FAF, 0x5D3D, 0x5D3D, 0x15D0, - 0x5D3E, 0x5D3E, 0x15CE, 0x5D3F, 0x5D46, 0x2FB7, 0x5D47, 0x5D47, 0x1B22, - 0x5D48, 0x5D49, 0x2FBF, 0x5D4A, 0x5D4A, 0x15D7, 0x5D4B, 0x5D4B, 0x15D6, - 0x5D4C, 0x5D4C, 0x0C33, 0x5D4D, 0x5D4F, 0x2FC1, 0x5D50, 0x5D50, 0x238A, - 0x5D51, 0x5D57, 0x2FC4, 0x5D58, 0x5D58, 0x15CD, 0x5D59, 0x5D5A, 0x2FCB, - 0x5D5B, 0x5D5B, 0x15D2, 0x5D5C, 0x5D5C, 0x2FCD, 0x5D5D, 0x5D5D, 0x15D4, - 0x5D5E, 0x5D68, 0x2FCE, 0x5D69, 0x5D69, 0x15D8, 0x5D6A, 0x5D6A, 0x2FD9, - 0x5D6B, 0x5D6B, 0x15D5, 0x5D6C, 0x5D6C, 0x15D1, 0x5D6D, 0x5D6E, 0x2FDA, - 0x5D6F, 0x5D6F, 0x15D3, 0x5D70, 0x5D73, 0x2FDC, 0x5D74, 0x5D74, 0x15D9, - 0x5D75, 0x5D80, 0x2FE0, 0x5D81, 0x5D81, 0x2391, 0x5D82, 0x5D82, 0x15DA, - 0x5D83, 0x5D83, 0x2FEC, 0x5D84, 0x5D84, 0x2271, 0x5D85, 0x5D86, 0x2FED, - 0x5D87, 0x5D87, 0x2388, 0x5D88, 0x5D96, 0x2FEF, 0x5D97, 0x5D97, 0x238E, - 0x5D98, 0x5D98, 0x2FFE, 0x5D99, 0x5D99, 0x15DB, 0x5D9A, 0x5D9C, 0x2FFF, - 0x5D9D, 0x5D9D, 0x15DC, 0x5D9E, 0x5D9F, 0x3002, 0x5DA0, 0x5DA0, 0x238D, - 0x5DA1, 0x5DA6, 0x3004, 0x5DA7, 0x5DA7, 0x238C, 0x5DA8, 0x5DB6, 0x300A, - 0x5DB7, 0x5DB7, 0x15DE, 0x5DB8, 0x5DB8, 0x2390, 0x5DB9, 0x5DB9, 0x3019, - 0x5DBA, 0x5DBA, 0x2033, 0x5DBB, 0x5DBB, 0x301A, 0x5DBC, 0x5DBC, 0x223C, - 0x5DBD, 0x5DC4, 0x301B, 0x5DC5, 0x5DC5, 0x15DF, 0x5DC6, 0x5DCA, 0x3023, - 0x5DCB, 0x5DCB, 0x1FE9, 0x5DCC, 0x5DCC, 0x3028, 0x5DCD, 0x5DCD, 0x0EB0, - 0x5DCE, 0x5DD1, 0x3029, 0x5DD2, 0x5DD2, 0x2055, 0x5DD3, 0x5DD3, 0x302D, - 0x5DD4, 0x5DD4, 0x2392, 0x5DD5, 0x5DDA, 0x302E, 0x5DDB, 0x5DDB, 0x1815, - 0x5DDC, 0x5DDC, 0x3034, 0x5DDD, 0x5DDD, 0x052B, 0x5DDE, 0x5DDE, 0x11DC, - 0x5DDF, 0x5DE0, 0x3035, 0x5DE1, 0x5DE1, 0x0FDB, 0x5DE2, 0x5DE2, 0x04D7, - 0x5DE3, 0x5DE4, 0x3037, 0x5DE5, 0x5DE5, 0x06FD, 0x5DE6, 0x5DE6, 0x1250, - 0x5DE7, 0x5DE7, 0x0C46, 0x5DE8, 0x5DE8, 0x090D, 0x5DE9, 0x5DE9, 0x0707, - 0x5DEA, 0x5DEA, 0x3039, 0x5DEB, 0x5DEB, 0x0EE6, 0x5DEC, 0x5DED, 0x303A, - 0x5DEE, 0x5DEE, 0x04B5, 0x5DEF, 0x5DEF, 0x139F, 0x5DF0, 0x5DF0, 0x2324, - 0x5DF1, 0x5DF1, 0x082D, 0x5DF2, 0x5DF2, 0x1058, 0x5DF3, 0x5DF3, 0x0DBD, - 0x5DF4, 0x5DF4, 0x03D8, 0x5DF5, 0x5DF6, 0x303C, 0x5DF7, 0x5DF7, 0x0F5C, - 0x5DF8, 0x5DFC, 0x303E, 0x5DFD, 0x5DFD, 0x12F7, 0x5DFE, 0x5DFE, 0x08BE, - 0x5DFF, 0x5DFF, 0x3043, 0x5E00, 0x5E00, 0x3044, 0x5E01, 0x5E01, 0x043B, - 0x5E02, 0x5E02, 0x0D67, 0x5E03, 0x5E03, 0x0483, 0x5E04, 0x5E04, 0x3045, - 0x5E05, 0x5E05, 0x0D9C, 0x5E06, 0x5E06, 0x0648, 0x5E07, 0x5E07, 0x3046, - 0x5E08, 0x5E08, 0x0D3D, 0x5E09, 0x5E0B, 0x3047, 0x5E0C, 0x5E0C, 0x0F10, - 0x5E0D, 0x5E0E, 0x304A, 0x5E0F, 0x5E0F, 0x159E, 0x5E10, 0x5E10, 0x116B, - 0x5E11, 0x5E11, 0x15A1, 0x5E12, 0x5E13, 0x304C, 0x5E14, 0x5E14, 0x15A0, - 0x5E15, 0x5E15, 0x0B82, 0x5E16, 0x5E16, 0x0E4E, 0x5E17, 0x5E17, 0x304E, - 0x5E18, 0x5E18, 0x09FA, 0x5E19, 0x5E19, 0x159F, 0x5E1A, 0x5E1A, 0x11E2, - 0x5E1B, 0x5E1B, 0x0476, 0x5E1C, 0x5E1C, 0x11C3, 0x5E1D, 0x5E1D, 0x05BC, - 0x5E1E, 0x5E24, 0x304F, 0x5E25, 0x5E25, 0x2143, 0x5E26, 0x5E26, 0x057B, - 0x5E27, 0x5E27, 0x11A0, 0x5E28, 0x5E2A, 0x3056, 0x5E2B, 0x5E2B, 0x2129, - 0x5E2C, 0x5E2C, 0x3059, 0x5E2D, 0x5E2D, 0x0F1C, 0x5E2E, 0x5E2E, 0x03FA, - 0x5E2F, 0x5E30, 0x305A, 0x5E31, 0x5E31, 0x15A2, 0x5E32, 0x5E32, 0x305C, - 0x5E33, 0x5E33, 0x2277, 0x5E34, 0x5E35, 0x305D, 0x5E36, 0x5E36, 0x1EA7, - 0x5E37, 0x5E37, 0x15A5, 0x5E38, 0x5E38, 0x04C8, 0x5E39, 0x5E3A, 0x305F, - 0x5E3B, 0x5E3C, 0x15A3, 0x5E3D, 0x5E3D, 0x0AB6, 0x5E3E, 0x5E3F, 0x3061, - 0x5E40, 0x5E40, 0x2285, 0x5E41, 0x5E41, 0x3063, 0x5E42, 0x5E42, 0x0AE2, - 0x5E43, 0x5E43, 0x2384, 0x5E44, 0x5E44, 0x15A6, 0x5E45, 0x5E45, 0x0696, - 0x5E46, 0x5E4B, 0x3064, 0x5E4C, 0x5E4C, 0x07E4, 0x5E4D, 0x5E53, 0x306A, - 0x5E54, 0x5E54, 0x15A7, 0x5E55, 0x5E55, 0x0B1E, 0x5E56, 0x5E56, 0x3071, - 0x5E57, 0x5E57, 0x2387, 0x5E58, 0x5E58, 0x2386, 0x5E59, 0x5E5A, 0x3072, - 0x5E5B, 0x5E5B, 0x15A8, 0x5E5C, 0x5E5D, 0x3074, 0x5E5E, 0x5E5E, 0x15A9, - 0x5E5F, 0x5E5F, 0x2290, 0x5E60, 0x5E60, 0x3076, 0x5E61, 0x5E61, 0x15AA, - 0x5E62, 0x5E62, 0x0534, 0x5E63, 0x5E63, 0x1E44, 0x5E64, 0x5E6A, 0x3077, - 0x5E6B, 0x5E6B, 0x1E32, 0x5E6C, 0x5E6C, 0x2385, 0x5E6D, 0x5E71, 0x307E, - 0x5E72, 0x5E72, 0x06C4, 0x5E73, 0x5E73, 0x0BDC, 0x5E74, 0x5E74, 0x0B4D, - 0x5E75, 0x5E75, 0x3083, 0x5E76, 0x5E76, 0x0469, 0x5E77, 0x5E77, 0x3084, - 0x5E78, 0x5E78, 0x0F9D, 0x5E79, 0x5E79, 0x1F13, 0x5E7A, 0x5E7A, 0x1813, - 0x5E7B, 0x5E7B, 0x07D8, 0x5E7C, 0x5E7C, 0x10BC, 0x5E7D, 0x5E7D, 0x10A9, - 0x5E7E, 0x5E7E, 0x1F73, 0x5E7F, 0x5E7F, 0x073C, 0x5E80, 0x5E80, 0x1631, - 0x5E81, 0x5E83, 0x3085, 0x5E84, 0x5E84, 0x120C, 0x5E85, 0x5E85, 0x3088, - 0x5E86, 0x5E86, 0x0C69, 0x5E87, 0x5E87, 0x043C, 0x5E88, 0x5E89, 0x3089, - 0x5E8A, 0x5E8A, 0x0535, 0x5E8B, 0x5E8B, 0x1633, 0x5E8C, 0x5E8E, 0x308B, - 0x5E8F, 0x5E8F, 0x0FBD, 0x5E90, 0x5E90, 0x0A55, 0x5E91, 0x5E91, 0x1632, - 0x5E92, 0x5E92, 0x308E, 0x5E93, 0x5E93, 0x096F, 0x5E94, 0x5E94, 0x108B, - 0x5E95, 0x5E95, 0x05B8, 0x5E96, 0x5E96, 0x1634, 0x5E97, 0x5E97, 0x05CB, - 0x5E98, 0x5E98, 0x308F, 0x5E99, 0x5E99, 0x0AF2, 0x5E9A, 0x5E9A, 0x06F8, - 0x5E9B, 0x5E9B, 0x3090, 0x5E9C, 0x5E9C, 0x06A9, 0x5E9D, 0x5E9D, 0x3091, - 0x5E9E, 0x5E9E, 0x0B94, 0x5E9F, 0x5E9F, 0x066C, 0x5EA0, 0x5EA0, 0x1636, - 0x5EA1, 0x5EA4, 0x3092, 0x5EA5, 0x5EA5, 0x1635, 0x5EA6, 0x5EA6, 0x0607, - 0x5EA7, 0x5EA7, 0x1256, 0x5EA8, 0x5EAA, 0x3096, 0x5EAB, 0x5EAB, 0x1FE0, - 0x5EAC, 0x5EAC, 0x3099, 0x5EAD, 0x5EAD, 0x0E56, 0x5EAE, 0x5EB2, 0x309A, - 0x5EB3, 0x5EB3, 0x163A, 0x5EB4, 0x5EB4, 0x309F, 0x5EB5, 0x5EB5, 0x1638, - 0x5EB6, 0x5EB6, 0x0D93, 0x5EB7, 0x5EB7, 0x0942, 0x5EB8, 0x5EB8, 0x109E, - 0x5EB9, 0x5EB9, 0x1637, 0x5EBA, 0x5EBD, 0x30A0, 0x5EBE, 0x5EBE, 0x1639, - 0x5EBF, 0x5EC8, 0x30A4, 0x5EC9, 0x5EC9, 0x09F7, 0x5ECA, 0x5ECA, 0x09B3, - 0x5ECB, 0x5ED0, 0x30AE, 0x5ED1, 0x5ED1, 0x163D, 0x5ED2, 0x5ED2, 0x163C, - 0x5ED3, 0x5ED3, 0x0995, 0x5ED4, 0x5ED5, 0x30B4, 0x5ED6, 0x5ED6, 0x0A17, - 0x5ED7, 0x5EDA, 0x30B6, 0x5EDB, 0x5EDB, 0x163E, 0x5EDC, 0x5EDE, 0x30BA, - 0x5EDF, 0x5EDF, 0x2087, 0x5EE0, 0x5EE0, 0x1E78, 0x5EE1, 0x5EE1, 0x23AE, - 0x5EE2, 0x5EE2, 0x1EF6, 0x5EE3, 0x5EE3, 0x1F31, 0x5EE4, 0x5EE7, 0x30BD, - 0x5EE8, 0x5EE8, 0x163F, 0x5EE9, 0x5EE9, 0x30C1, 0x5EEA, 0x5EEA, 0x1640, - 0x5EEB, 0x5EEB, 0x30C2, 0x5EEC, 0x5EEC, 0x2045, 0x5EED, 0x5EF2, 0x30C3, - 0x5EF3, 0x5EF3, 0x2178, 0x5EF4, 0x5EF4, 0x1398, 0x5EF5, 0x5EF5, 0x30C9, - 0x5EF6, 0x5EF6, 0x0FFC, 0x5EF7, 0x5EF7, 0x0E53, 0x5EF8, 0x5EF9, 0x30CA, - 0x5EFA, 0x5EFA, 0x0879, 0x5EFB, 0x5EFD, 0x30CC, 0x5EFE, 0x5EFE, 0x14AD, - 0x5EFF, 0x5EFF, 0x125B, 0x5F00, 0x5F00, 0x0937, 0x5F01, 0x5F01, 0x139D, - 0x5F02, 0x5F02, 0x1073, 0x5F03, 0x5F03, 0x0C19, 0x5F04, 0x5F04, 0x0B6B, - 0x5F05, 0x5F07, 0x30CF, 0x5F08, 0x5F08, 0x14AE, 0x5F09, 0x5F09, 0x30D2, - 0x5F0A, 0x5F0A, 0x0440, 0x5F0B, 0x5F0B, 0x14F6, 0x5F0C, 0x5F0E, 0x30D3, - 0x5F0F, 0x5F0F, 0x0D54, 0x5F10, 0x5F10, 0x30D6, 0x5F11, 0x5F11, 0x14F9, - 0x5F12, 0x5F12, 0x30D7, 0x5F13, 0x5F13, 0x0706, 0x5F14, 0x5F14, 0x30D8, - 0x5F15, 0x5F15, 0x1084, 0x5F16, 0x5F16, 0x30D9, 0x5F17, 0x5F17, 0x06A0, - 0x5F18, 0x5F18, 0x07A2, 0x5F19, 0x5F1A, 0x30DA, 0x5F1B, 0x5F1B, 0x04FF, - 0x5F1C, 0x5F1E, 0x30DC, 0x5F1F, 0x5F1F, 0x05BD, 0x5F20, 0x5F20, 0x1166, - 0x5F21, 0x5F24, 0x30DF, 0x5F25, 0x5F25, 0x0ADB, 0x5F26, 0x5F26, 0x0F3F, - 0x5F27, 0x5F27, 0x07B6, 0x5F28, 0x5F28, 0x30E3, 0x5F29, 0x5F29, 0x176F, - 0x5F2A, 0x5F2A, 0x176E, 0x5F2B, 0x5F2C, 0x30E4, 0x5F2D, 0x5F2D, 0x1770, - 0x5F2E, 0x5F2E, 0x30E6, 0x5F2F, 0x5F2F, 0x0E95, 0x5F30, 0x5F30, 0x30E7, - 0x5F31, 0x5F31, 0x0CD0, 0x5F32, 0x5F32, 0x30E8, 0x5F33, 0x5F33, 0x23F5, - 0x5F34, 0x5F34, 0x30E9, 0x5F35, 0x5F35, 0x2275, 0x5F36, 0x5F38, 0x30EA, - 0x5F39, 0x5F39, 0x0590, 0x5F3A, 0x5F3A, 0x0C3C, 0x5F3B, 0x5F3B, 0x30ED, - 0x5F3C, 0x5F3C, 0x1772, 0x5F3D, 0x5F3F, 0x30EE, 0x5F40, 0x5F40, 0x19BE, - 0x5F41, 0x5F45, 0x30F1, 0x5F46, 0x5F46, 0x266E, 0x5F47, 0x5F47, 0x30F6, - 0x5F48, 0x5F48, 0x1EB0, 0x5F49, 0x5F4B, 0x30F7, 0x5F4C, 0x5F4C, 0x2083, - 0x5F4D, 0x5F4D, 0x30FA, 0x5F4E, 0x5F4E, 0x2188, 0x5F4F, 0x5F4F, 0x30FB, - 0x5F50, 0x5F50, 0x1762, 0x5F51, 0x5F51, 0x30FC, 0x5F52, 0x5F52, 0x0742, - 0x5F53, 0x5F53, 0x0592, 0x5F54, 0x5F54, 0x30FD, 0x5F55, 0x5F55, 0x0A63, - 0x5F56, 0x5F56, 0x1764, 0x5F57, 0x5F57, 0x1763, 0x5F58, 0x5F58, 0x1765, - 0x5F59, 0x5F59, 0x267C, 0x5F5A, 0x5F5C, 0x30FE, 0x5F5D, 0x5F5D, 0x1054, - 0x5F5E, 0x5F60, 0x3101, 0x5F61, 0x5F61, 0x15EE, 0x5F62, 0x5F62, 0x0F99, - 0x5F63, 0x5F63, 0x3104, 0x5F64, 0x5F64, 0x0E5F, 0x5F65, 0x5F65, 0x3105, - 0x5F66, 0x5F66, 0x100E, 0x5F67, 0x5F68, 0x3106, 0x5F69, 0x5F69, 0x0491, - 0x5F6A, 0x5F6A, 0x0454, 0x5F6B, 0x5F6B, 0x3108, 0x5F6C, 0x5F6C, 0x045B, - 0x5F6D, 0x5F6D, 0x0BAE, 0x5F6E, 0x5F6F, 0x3109, 0x5F70, 0x5F70, 0x1164, - 0x5F71, 0x5F71, 0x1095, 0x5F72, 0x5F72, 0x310B, 0x5F73, 0x5F73, 0x15E0, - 0x5F74, 0x5F76, 0x310C, 0x5F77, 0x5F77, 0x15E1, 0x5F78, 0x5F78, 0x310F, - 0x5F79, 0x5F79, 0x1062, 0x5F7A, 0x5F7A, 0x3110, 0x5F7B, 0x5F7B, 0x04DE, - 0x5F7C, 0x5F7C, 0x0434, 0x5F7D, 0x5F7F, 0x3111, 0x5F80, 0x5F80, 0x0EAA, - 0x5F81, 0x5F81, 0x1198, 0x5F82, 0x5F82, 0x15E2, 0x5F83, 0x5F83, 0x3114, - 0x5F84, 0x5F84, 0x08E5, 0x5F85, 0x5F85, 0x0580, 0x5F86, 0x5F86, 0x3115, - 0x5F87, 0x5F87, 0x15E3, 0x5F88, 0x5F88, 0x0793, 0x5F89, 0x5F89, 0x15E4, - 0x5F8A, 0x5F8A, 0x07C7, 0x5F8B, 0x5F8B, 0x0A70, 0x5F8C, 0x5F8C, 0x15E5, - 0x5F8D, 0x5F8F, 0x3116, 0x5F90, 0x5F90, 0x0FB7, 0x5F91, 0x5F91, 0x1FC5, - 0x5F92, 0x5F92, 0x0E6E, 0x5F93, 0x5F94, 0x3119, 0x5F95, 0x5F95, 0x15E6, - 0x5F96, 0x5F96, 0x311B, 0x5F97, 0x5F97, 0x05A4, 0x5F98, 0x5F98, 0x0B88, - 0x5F99, 0x5F99, 0x15E7, 0x5F9A, 0x5F9B, 0x311C, 0x5F9C, 0x5F9C, 0x15E8, - 0x5F9D, 0x5F9D, 0x311E, 0x5F9E, 0x5F9E, 0x1EA1, 0x5F9F, 0x5F9F, 0x311F, - 0x5FA0, 0x5FA0, 0x2393, 0x5FA1, 0x5FA1, 0x10DE, 0x5FA2, 0x5FA7, 0x3120, - 0x5FA8, 0x5FA8, 0x15E9, 0x5FA9, 0x5FA9, 0x1F0B, 0x5FAA, 0x5FAA, 0x0FD6, - 0x5FAB, 0x5FAC, 0x3126, 0x5FAD, 0x5FAD, 0x15EA, 0x5FAE, 0x5FAE, 0x0EB1, - 0x5FAF, 0x5FB4, 0x3128, 0x5FB5, 0x5FB5, 0x15EB, 0x5FB6, 0x5FB6, 0x312E, - 0x5FB7, 0x5FB7, 0x05A3, 0x5FB8, 0x5FB8, 0x312F, 0x5FB9, 0x5FB9, 0x1E7C, - 0x5FBA, 0x5FBB, 0x3130, 0x5FBC, 0x5FBC, 0x15EC, 0x5FBD, 0x5FBD, 0x07EA, - 0x5FBE, 0x5FC2, 0x3132, 0x5FC3, 0x5FC3, 0x0F8F, 0x5FC4, 0x5FC4, 0x1642, - 0x5FC5, 0x5FC5, 0x0441, 0x5FC6, 0x5FC6, 0x106B, 0x5FC7, 0x5FC8, 0x3137, - 0x5FC9, 0x5FC9, 0x1643, 0x5FCA, 0x5FCB, 0x3139, 0x5FCC, 0x5FCC, 0x083C, - 0x5FCD, 0x5FCD, 0x0CA7, 0x5FCE, 0x5FCE, 0x313B, 0x5FCF, 0x5FCF, 0x1645, - 0x5FD0, 0x5FD0, 0x1A0C, 0x5FD1, 0x5FD1, 0x1A0B, 0x5FD2, 0x5FD2, 0x14F7, - 0x5FD3, 0x5FD5, 0x313C, 0x5FD6, 0x5FD6, 0x1644, 0x5FD7, 0x5FD7, 0x11BD, - 0x5FD8, 0x5FD8, 0x0EAD, 0x5FD9, 0x5FD9, 0x0AAB, 0x5FDA, 0x5FDC, 0x313F, - 0x5FDD, 0x5FDD, 0x1683, 0x5FDE, 0x5FDF, 0x3142, 0x5FE0, 0x5FE0, 0x11D1, - 0x5FE1, 0x5FE1, 0x1649, 0x5FE2, 0x5FE3, 0x3144, 0x5FE4, 0x5FE4, 0x164A, - 0x5FE5, 0x5FE6, 0x3146, 0x5FE7, 0x5FE7, 0x10AC, 0x5FE8, 0x5FE9, 0x3148, - 0x5FEA, 0x5FEA, 0x164E, 0x5FEB, 0x5FEB, 0x0979, 0x5FEC, 0x5FEC, 0x314A, - 0x5FED, 0x5FED, 0x164F, 0x5FEE, 0x5FEE, 0x1647, 0x5FEF, 0x5FF0, 0x314B, - 0x5FF1, 0x5FF1, 0x04E5, 0x5FF2, 0x5FF4, 0x314D, 0x5FF5, 0x5FF5, 0x0B51, - 0x5FF6, 0x5FF7, 0x3150, 0x5FF8, 0x5FF8, 0x1650, 0x5FF9, 0x5FFA, 0x3152, - 0x5FFB, 0x5FFB, 0x0F8E, 0x5FFC, 0x5FFC, 0x3154, 0x5FFD, 0x5FFD, 0x07AD, - 0x5FFE, 0x5FFE, 0x164B, 0x5FFF, 0x5FFF, 0x067B, 0x6000, 0x6000, 0x07C8, - 0x6001, 0x6001, 0x0DFF, 0x6002, 0x6002, 0x0DC0, 0x6003, 0x6003, 0x1646, - 0x6004, 0x6004, 0x1648, 0x6005, 0x6006, 0x164C, 0x6007, 0x6009, 0x3155, - 0x600A, 0x600A, 0x1659, 0x600B, 0x600C, 0x3158, 0x600D, 0x600D, 0x1656, - 0x600E, 0x600E, 0x1138, 0x600F, 0x600F, 0x1655, 0x6010, 0x6011, 0x315A, - 0x6012, 0x6012, 0x0B6E, 0x6013, 0x6013, 0x315C, 0x6014, 0x6014, 0x119B, - 0x6015, 0x6015, 0x0B83, 0x6016, 0x6016, 0x0487, 0x6017, 0x6018, 0x315D, - 0x6019, 0x6019, 0x1651, 0x601A, 0x601A, 0x315F, 0x601B, 0x601B, 0x1654, - 0x601C, 0x601C, 0x09F8, 0x601D, 0x601D, 0x0DB1, 0x601E, 0x601F, 0x3160, - 0x6020, 0x6020, 0x0582, 0x6021, 0x6021, 0x165B, 0x6022, 0x6024, 0x3162, - 0x6025, 0x6025, 0x0824, 0x6026, 0x6026, 0x1653, 0x6027, 0x6027, 0x0F9F, - 0x6028, 0x6028, 0x10FC, 0x6029, 0x6029, 0x1657, 0x602A, 0x602A, 0x072F, - 0x602B, 0x602B, 0x1658, 0x602C, 0x602E, 0x3165, 0x602F, 0x602F, 0x0C50, - 0x6030, 0x6034, 0x3168, 0x6035, 0x6035, 0x1652, 0x6036, 0x603A, 0x316D, - 0x603B, 0x603B, 0x1239, 0x603C, 0x603C, 0x1A0D, 0x603D, 0x603E, 0x3172, - 0x603F, 0x603F, 0x165A, 0x6040, 0x6040, 0x3174, 0x6041, 0x6041, 0x1A11, - 0x6042, 0x6042, 0x1660, 0x6043, 0x6043, 0x0D68, 0x6044, 0x604A, 0x3175, - 0x604B, 0x604B, 0x09FE, 0x604C, 0x604C, 0x317C, 0x604D, 0x604D, 0x07E5, - 0x604E, 0x604F, 0x317D, 0x6050, 0x6050, 0x0963, 0x6051, 0x6051, 0x317F, - 0x6052, 0x6052, 0x079A, 0x6053, 0x6054, 0x3180, 0x6055, 0x6055, 0x0D96, - 0x6056, 0x6058, 0x3182, 0x6059, 0x6059, 0x1A12, 0x605A, 0x605A, 0x1A0F, - 0x605B, 0x605C, 0x3185, 0x605D, 0x605D, 0x1A0E, 0x605E, 0x6061, 0x3187, - 0x6062, 0x6062, 0x07EB, 0x6063, 0x6063, 0x1A13, 0x6064, 0x6064, 0x0FBF, - 0x6065, 0x6066, 0x318B, 0x6067, 0x6067, 0x1A10, 0x6068, 0x6068, 0x0795, - 0x6069, 0x6069, 0x0636, 0x606A, 0x606A, 0x1661, 0x606B, 0x606B, 0x05F1, - 0x606C, 0x606C, 0x0E44, 0x606D, 0x606D, 0x0700, 0x606E, 0x606E, 0x318D, - 0x606F, 0x606F, 0x0F0F, 0x6070, 0x6070, 0x0C1E, 0x6071, 0x6072, 0x318E, - 0x6073, 0x6073, 0x095F, 0x6074, 0x6075, 0x3190, 0x6076, 0x6076, 0x0630, - 0x6077, 0x6077, 0x3192, 0x6078, 0x6079, 0x165C, 0x607A, 0x607A, 0x165F, - 0x607B, 0x607B, 0x165E, 0x607C, 0x607C, 0x0B38, 0x607D, 0x607D, 0x1662, - 0x607E, 0x607E, 0x3193, 0x607F, 0x607F, 0x10A6, 0x6080, 0x6082, 0x3194, - 0x6083, 0x6083, 0x1667, 0x6084, 0x6084, 0x0C41, 0x6085, 0x6088, 0x3197, - 0x6089, 0x6089, 0x0F11, 0x608A, 0x608B, 0x319B, 0x608C, 0x608C, 0x1669, - 0x608D, 0x608D, 0x076E, 0x608E, 0x6091, 0x319D, 0x6092, 0x6092, 0x1668, - 0x6093, 0x6093, 0x31A1, 0x6094, 0x6094, 0x07EF, 0x6095, 0x6095, 0x31A2, - 0x6096, 0x6096, 0x1663, 0x6097, 0x6099, 0x31A3, 0x609A, 0x609A, 0x1664, - 0x609B, 0x609B, 0x166A, 0x609C, 0x609C, 0x31A6, 0x609D, 0x609D, 0x1666, - 0x609E, 0x609E, 0x31A7, 0x609F, 0x609F, 0x0F01, 0x60A0, 0x60A0, 0x10AB, - 0x60A1, 0x60A2, 0x31A8, 0x60A3, 0x60A3, 0x07D1, 0x60A4, 0x60A5, 0x31AA, - 0x60A6, 0x60A6, 0x1106, 0x60A7, 0x60A7, 0x31AC, 0x60A8, 0x60A8, 0x0B5D, - 0x60A9, 0x60AA, 0x31AD, 0x60AB, 0x60AB, 0x1A14, 0x60AC, 0x60AC, 0x0FC7, - 0x60AD, 0x60AD, 0x1665, 0x60AE, 0x60AE, 0x31AF, 0x60AF, 0x60AF, 0x0AFA, - 0x60B0, 0x60B0, 0x31B0, 0x60B1, 0x60B1, 0x166D, 0x60B2, 0x60B2, 0x0418, - 0x60B3, 0x60B3, 0x31B1, 0x60B4, 0x60B4, 0x1672, 0x60B5, 0x60B5, 0x23B4, - 0x60B6, 0x60B6, 0x207E, 0x60B7, 0x60B7, 0x31B2, 0x60B8, 0x60B8, 0x0835, - 0x60B9, 0x60BA, 0x31B3, 0x60BB, 0x60BB, 0x166C, 0x60BC, 0x60BC, 0x05A0, - 0x60BD, 0x60C4, 0x31B5, 0x60C5, 0x60C5, 0x0C66, 0x60C6, 0x60C6, 0x1670, - 0x60C7, 0x60C9, 0x31BD, 0x60CA, 0x60CA, 0x08D9, 0x60CB, 0x60CB, 0x0EA0, - 0x60CC, 0x60D0, 0x31C0, 0x60D1, 0x60D1, 0x0808, 0x60D2, 0x60D4, 0x31C5, - 0x60D5, 0x60D5, 0x0E3B, 0x60D6, 0x60D7, 0x31C8, 0x60D8, 0x60D8, 0x166F, - 0x60D9, 0x60D9, 0x31CA, 0x60DA, 0x60DA, 0x1671, 0x60DB, 0x60DB, 0x31CB, - 0x60DC, 0x60DC, 0x0F14, 0x60DD, 0x60DD, 0x166E, 0x60DE, 0x60DE, 0x31CC, - 0x60DF, 0x60DF, 0x0EB8, 0x60E0, 0x60E0, 0x07F2, 0x60E1, 0x60E1, 0x1EE3, - 0x60E2, 0x60E5, 0x31CD, 0x60E6, 0x60E6, 0x05CC, 0x60E7, 0x60E7, 0x0914, - 0x60E8, 0x60E8, 0x0499, 0x60E9, 0x60E9, 0x04F2, 0x60EA, 0x60EA, 0x31D1, - 0x60EB, 0x60EB, 0x0422, 0x60EC, 0x60EC, 0x166B, 0x60ED, 0x60ED, 0x0498, - 0x60EE, 0x60EE, 0x058D, 0x60EF, 0x60EF, 0x0738, 0x60F0, 0x60F0, 0x0627, - 0x60F1, 0x60F1, 0x2095, 0x60F2, 0x60F2, 0x23BB, 0x60F3, 0x60F3, 0x0F58, - 0x60F4, 0x60F4, 0x1677, 0x60F5, 0x60F5, 0x31D2, 0x60F6, 0x60F6, 0x07E1, - 0x60F7, 0x60F8, 0x31D3, 0x60F9, 0x60F9, 0x0CA2, 0x60FA, 0x60FA, 0x0F95, - 0x60FB, 0x60FB, 0x23B9, 0x60FC, 0x60FF, 0x31D5, 0x6100, 0x6100, 0x1678, - 0x6101, 0x6101, 0x0513, 0x6102, 0x6105, 0x31D9, 0x6106, 0x6106, 0x1A15, - 0x6107, 0x6107, 0x31DD, 0x6108, 0x6108, 0x10DF, 0x6109, 0x6109, 0x10C9, - 0x610A, 0x610C, 0x31DE, 0x610D, 0x610D, 0x1A16, 0x610E, 0x610E, 0x1679, - 0x610F, 0x610F, 0x1069, 0x6110, 0x6114, 0x31E1, 0x6115, 0x6115, 0x1675, - 0x6116, 0x6119, 0x31E6, 0x611A, 0x611A, 0x10C3, 0x611B, 0x611B, 0x1E28, - 0x611C, 0x611C, 0x23BD, 0x611D, 0x611E, 0x31EA, 0x611F, 0x611F, 0x06CB, - 0x6120, 0x6120, 0x1673, 0x6121, 0x6122, 0x31EC, 0x6123, 0x6123, 0x1676, - 0x6124, 0x6124, 0x067C, 0x6125, 0x6125, 0x31EE, 0x6126, 0x6126, 0x1674, - 0x6127, 0x6127, 0x098D, 0x6128, 0x612A, 0x31EF, 0x612B, 0x612B, 0x167A, - 0x612C, 0x6133, 0x31F2, 0x6134, 0x6134, 0x23B5, 0x6135, 0x6136, 0x31FA, - 0x6137, 0x6137, 0x23BA, 0x6138, 0x613D, 0x31FC, 0x613E, 0x613E, 0x23B3, - 0x613F, 0x613F, 0x10FB, 0x6140, 0x6147, 0x3202, 0x6148, 0x6148, 0x054B, - 0x6149, 0x6149, 0x320A, 0x614A, 0x614A, 0x167B, 0x614B, 0x614B, 0x2162, - 0x614C, 0x614C, 0x07DA, 0x614D, 0x614D, 0x320B, 0x614E, 0x614E, 0x0D30, - 0x614F, 0x6150, 0x320C, 0x6151, 0x6151, 0x0D1E, 0x6152, 0x6154, 0x320E, - 0x6155, 0x6155, 0x0B20, 0x6156, 0x6157, 0x3211, 0x6158, 0x6158, 0x1E5E, - 0x6159, 0x6159, 0x3213, 0x615A, 0x615A, 0x1E5D, 0x615B, 0x615C, 0x3214, - 0x615D, 0x615D, 0x1A17, 0x615E, 0x615E, 0x3216, 0x615F, 0x615F, 0x23B7, - 0x6160, 0x6161, 0x3217, 0x6162, 0x6162, 0x0AA4, 0x6163, 0x6163, 0x1F2F, - 0x6164, 0x6164, 0x24DF, 0x6165, 0x6166, 0x3219, 0x6167, 0x6167, 0x07F0, - 0x6168, 0x6168, 0x093B, 0x6169, 0x6169, 0x321B, 0x616A, 0x616A, 0x23B2, - 0x616B, 0x616B, 0x214E, 0x616C, 0x616D, 0x321C, 0x616E, 0x616E, 0x2052, - 0x616F, 0x616F, 0x321E, 0x6170, 0x6170, 0x0ECE, 0x6171, 0x6172, 0x321F, - 0x6173, 0x6173, 0x23BC, 0x6174, 0x6174, 0x3221, 0x6175, 0x6175, 0x167C, - 0x6176, 0x6176, 0x20EB, 0x6177, 0x6177, 0x0943, 0x6178, 0x6181, 0x3222, - 0x6182, 0x6182, 0x2232, 0x6183, 0x6189, 0x322C, 0x618A, 0x618A, 0x1E3F, - 0x618B, 0x618B, 0x0458, 0x618C, 0x618D, 0x3233, 0x618E, 0x618E, 0x113A, - 0x618F, 0x618F, 0x3235, 0x6190, 0x6190, 0x201B, 0x6191, 0x6191, 0x20BC, - 0x6192, 0x6192, 0x23BE, 0x6193, 0x6193, 0x3236, 0x6194, 0x6194, 0x167E, - 0x6195, 0x6199, 0x3237, 0x619A, 0x619A, 0x1EAE, 0x619B, 0x619C, 0x323C, - 0x619D, 0x619D, 0x1A19, 0x619E, 0x61A3, 0x323E, 0x61A4, 0x61A4, 0x1EFB, - 0x61A5, 0x61A6, 0x3244, 0x61A7, 0x61A7, 0x167F, 0x61A8, 0x61A8, 0x0760, - 0x61A9, 0x61A9, 0x1A18, 0x61AA, 0x61AA, 0x3246, 0x61AB, 0x61AB, 0x2089, - 0x61AC, 0x61AC, 0x167D, 0x61AD, 0x61AD, 0x3247, 0x61AE, 0x61AE, 0x23B1, - 0x61AF, 0x61B1, 0x3248, 0x61B2, 0x61B2, 0x21C4, 0x61B3, 0x61B5, 0x324B, - 0x61B6, 0x61B6, 0x2214, 0x61B7, 0x61B7, 0x1680, 0x61B8, 0x61BD, 0x324E, - 0x61BE, 0x61BE, 0x076D, 0x61BF, 0x61C1, 0x3254, 0x61C2, 0x61C2, 0x05ED, - 0x61C3, 0x61C6, 0x3257, 0x61C7, 0x61C7, 0x1FDE, 0x61C8, 0x61C8, 0x0F83, - 0x61C9, 0x61C9, 0x2223, 0x61CA, 0x61CA, 0x03CE, 0x61CB, 0x61CB, 0x1A1A, - 0x61CC, 0x61CC, 0x23B6, 0x61CD, 0x61D0, 0x325B, 0x61D1, 0x61D1, 0x1A1B, - 0x61D2, 0x61D2, 0x09AC, 0x61D3, 0x61D3, 0x325F, 0x61D4, 0x61D4, 0x1681, - 0x61D5, 0x61DD, 0x3260, 0x61DE, 0x61DE, 0x268C, 0x61DF, 0x61DF, 0x24DE, - 0x61E0, 0x61E2, 0x3269, 0x61E3, 0x61E3, 0x24E0, 0x61E4, 0x61E5, 0x326C, - 0x61E6, 0x61E6, 0x0B74, 0x61E7, 0x61E7, 0x326E, 0x61E8, 0x61E8, 0x23B8, - 0x61E9, 0x61F1, 0x326F, 0x61F2, 0x61F2, 0x1E81, 0x61F3, 0x61F4, 0x3278, - 0x61F5, 0x61F5, 0x1682, 0x61F6, 0x61F6, 0x1FFE, 0x61F7, 0x61F7, 0x1F51, - 0x61F8, 0x61F8, 0x21E1, 0x61F9, 0x61F9, 0x327A, 0x61FA, 0x61FA, 0x23B0, - 0x61FB, 0x61FB, 0x327B, 0x61FC, 0x61FC, 0x1FCE, 0x61FD, 0x61FD, 0x327C, - 0x61FE, 0x61FE, 0x211E, 0x61FF, 0x61FF, 0x13E0, 0x6200, 0x6200, 0x2021, - 0x6201, 0x6205, 0x327D, 0x6206, 0x6206, 0x1A1C, 0x6207, 0x6207, 0x24E1, - 0x6208, 0x6208, 0x06E5, 0x6209, 0x6209, 0x3282, 0x620A, 0x620A, 0x0EFB, - 0x620B, 0x620B, 0x18F9, 0x620C, 0x620C, 0x0FB2, 0x620D, 0x620D, 0x0D90, - 0x620E, 0x620E, 0x0CB1, 0x620F, 0x620F, 0x0F24, 0x6210, 0x6210, 0x04EE, - 0x6211, 0x6211, 0x0EE1, 0x6212, 0x6212, 0x08B5, 0x6213, 0x6213, 0x3283, - 0x6214, 0x6214, 0x24A3, 0x6215, 0x6215, 0x169E, 0x6216, 0x6216, 0x0807, - 0x6217, 0x6217, 0x18FA, 0x6218, 0x6218, 0x115E, 0x6219, 0x6219, 0x3284, - 0x621A, 0x621A, 0x0BFC, 0x621B, 0x621B, 0x18FB, 0x621C, 0x621E, 0x3285, - 0x621F, 0x621F, 0x18FC, 0x6220, 0x6220, 0x3288, 0x6221, 0x6221, 0x18FE, - 0x6222, 0x6222, 0x18FD, 0x6223, 0x6223, 0x3289, 0x6224, 0x6224, 0x1900, - 0x6225, 0x6225, 0x18FF, 0x6226, 0x6226, 0x328A, 0x6227, 0x6227, 0x24A4, - 0x6228, 0x6229, 0x328B, 0x622A, 0x622A, 0x08A9, 0x622B, 0x622B, 0x328D, - 0x622C, 0x622C, 0x1901, 0x622D, 0x622D, 0x328E, 0x622E, 0x622E, 0x0A65, - 0x622F, 0x622F, 0x328F, 0x6230, 0x6230, 0x2273, 0x6231, 0x6231, 0x3290, - 0x6232, 0x6232, 0x21B0, 0x6233, 0x6233, 0x0544, 0x6234, 0x6234, 0x057A, - 0x6235, 0x6236, 0x3291, 0x6237, 0x6237, 0x07BC, 0x6238, 0x623C, 0x3293, - 0x623D, 0x623D, 0x19F4, 0x623E, 0x623E, 0x19F3, 0x623F, 0x623F, 0x065C, - 0x6240, 0x6240, 0x0DEE, 0x6241, 0x6241, 0x044B, 0x6242, 0x6242, 0x3298, - 0x6243, 0x6243, 0x19F5, 0x6244, 0x6246, 0x3299, 0x6247, 0x6247, 0x0D01, - 0x6248, 0x6249, 0x19F6, 0x624A, 0x624A, 0x329C, 0x624B, 0x624B, 0x0D6D, - 0x624C, 0x624C, 0x14BA, 0x624D, 0x624D, 0x048C, 0x624E, 0x624E, 0x113D, - 0x624F, 0x6250, 0x329D, 0x6251, 0x6251, 0x0BEA, 0x6252, 0x6252, 0x03D2, - 0x6253, 0x6253, 0x0575, 0x6254, 0x6254, 0x0CAE, 0x6255, 0x6257, 0x329F, - 0x6258, 0x6258, 0x0E81, 0x6259, 0x625A, 0x32A2, 0x625B, 0x625B, 0x0945, - 0x625C, 0x6262, 0x32A4, 0x6263, 0x6263, 0x0968, 0x6264, 0x6265, 0x32AB, - 0x6266, 0x6266, 0x0C21, 0x6267, 0x6267, 0x11B3, 0x6268, 0x6268, 0x32AD, - 0x6269, 0x6269, 0x0994, 0x626A, 0x626A, 0x14BB, 0x626B, 0x626B, 0x0CE1, - 0x626C, 0x626C, 0x1018, 0x626D, 0x626D, 0x0B65, 0x626E, 0x626E, 0x03F2, - 0x626F, 0x626F, 0x04DB, 0x6270, 0x6270, 0x0CA0, 0x6271, 0x6272, 0x32AE, - 0x6273, 0x6273, 0x03ED, 0x6274, 0x6275, 0x32B0, 0x6276, 0x6276, 0x0693, - 0x6277, 0x6278, 0x32B2, 0x6279, 0x6279, 0x0BBB, 0x627A, 0x627B, 0x32B4, - 0x627C, 0x627C, 0x0632, 0x627D, 0x627D, 0x32B6, 0x627E, 0x627E, 0x1173, - 0x627F, 0x627F, 0x04F5, 0x6280, 0x6280, 0x082F, 0x6281, 0x6283, 0x32B7, - 0x6284, 0x6284, 0x04D2, 0x6285, 0x6288, 0x32BA, 0x6289, 0x6289, 0x0920, - 0x628A, 0x628A, 0x03DC, 0x628B, 0x6290, 0x32BE, 0x6291, 0x6291, 0x105D, - 0x6292, 0x6292, 0x0D7A, 0x6293, 0x6293, 0x1202, 0x6294, 0x6294, 0x32C4, - 0x6295, 0x6295, 0x0E67, 0x6296, 0x6296, 0x05F5, 0x6297, 0x6297, 0x0946, - 0x6298, 0x6298, 0x117C, 0x6299, 0x6299, 0x32C5, 0x629A, 0x629A, 0x06A2, - 0x629B, 0x629B, 0x0B98, 0x629C, 0x629E, 0x32C6, 0x629F, 0x629F, 0x14BC, - 0x62A0, 0x62A0, 0x0966, 0x62A1, 0x62A1, 0x0A7C, 0x62A2, 0x62A2, 0x0C3D, - 0x62A3, 0x62A3, 0x32C9, 0x62A4, 0x62A4, 0x07B9, 0x62A5, 0x62A5, 0x0411, - 0x62A6, 0x62A7, 0x32CA, 0x62A8, 0x62A8, 0x0BAB, 0x62A9, 0x62AA, 0x32CC, - 0x62AB, 0x62AB, 0x0BBC, 0x62AC, 0x62AC, 0x0DFA, 0x62AD, 0x62B0, 0x32CE, - 0x62B1, 0x62B1, 0x0410, 0x62B2, 0x62B4, 0x32D2, 0x62B5, 0x62B5, 0x05B7, - 0x62B6, 0x62B8, 0x32D5, 0x62B9, 0x62B9, 0x0B0B, 0x62BA, 0x62BA, 0x32D8, - 0x62BB, 0x62BB, 0x14BD, 0x62BC, 0x62BC, 0x0FE3, 0x62BD, 0x62BD, 0x050E, - 0x62BE, 0x62BE, 0x32D9, 0x62BF, 0x62BF, 0x0AF7, 0x62C0, 0x62C1, 0x32DA, - 0x62C2, 0x62C2, 0x0694, 0x62C3, 0x62C3, 0x32DC, 0x62C4, 0x62C4, 0x11F3, - 0x62C5, 0x62C5, 0x0584, 0x62C6, 0x62C6, 0x04B7, 0x62C7, 0x62C7, 0x0B17, - 0x62C8, 0x62C8, 0x0B4C, 0x62C9, 0x62C9, 0x0998, 0x62CA, 0x62CA, 0x14BE, - 0x62CB, 0x62CB, 0x32DD, 0x62CC, 0x62CC, 0x03F3, 0x62CD, 0x62CD, 0x0B85, - 0x62CE, 0x62CE, 0x0A29, 0x62CF, 0x62CF, 0x32DE, 0x62D0, 0x62D0, 0x072E, - 0x62D1, 0x62D1, 0x32DF, 0x62D2, 0x62D2, 0x090B, 0x62D3, 0x62D3, 0x0E89, - 0x62D4, 0x62D4, 0x03D9, 0x62D5, 0x62D5, 0x32E0, 0x62D6, 0x62D6, 0x0E80, - 0x62D7, 0x62D7, 0x14C0, 0x62D8, 0x62D8, 0x08FF, 0x62D9, 0x62D9, 0x121B, - 0x62DA, 0x62DA, 0x14BF, 0x62DB, 0x62DB, 0x1171, 0x62DC, 0x62DC, 0x03E8, - 0x62DD, 0x62DE, 0x32E1, 0x62DF, 0x62DF, 0x0B45, 0x62E0, 0x62E1, 0x32E3, - 0x62E2, 0x62E2, 0x0A4A, 0x62E3, 0x62E3, 0x0863, 0x62E4, 0x62E4, 0x32E5, - 0x62E5, 0x62E5, 0x109A, 0x62E6, 0x62E6, 0x09A4, 0x62E7, 0x62E7, 0x0B62, - 0x62E8, 0x62E8, 0x046D, 0x62E9, 0x62E9, 0x1134, 0x62EA, 0x62EB, 0x32E6, - 0x62EC, 0x62EC, 0x0993, 0x62ED, 0x62ED, 0x0D5A, 0x62EE, 0x62EE, 0x14C1, - 0x62EF, 0x62EF, 0x119D, 0x62F0, 0x62F0, 0x32E8, 0x62F1, 0x62F1, 0x0709, - 0x62F2, 0x62F2, 0x32E9, 0x62F3, 0x62F3, 0x0C88, 0x62F4, 0x62F4, 0x0D9E, - 0x62F5, 0x62F5, 0x32EA, 0x62F6, 0x62F6, 0x14C3, 0x62F7, 0x62F7, 0x094A, - 0x62F8, 0x62FB, 0x32EB, 0x62FC, 0x62FC, 0x0BD3, 0x62FD, 0x62FD, 0x1204, - 0x62FE, 0x62FE, 0x0D47, 0x62FF, 0x62FF, 0x0B26, 0x6300, 0x6300, 0x32EF, - 0x6301, 0x6301, 0x04FB, 0x6302, 0x6302, 0x072B, 0x6303, 0x6306, 0x32F0, - 0x6307, 0x6307, 0x11B7, 0x6308, 0x6308, 0x194E, 0x6309, 0x6309, 0x03BF, - 0x630A, 0x630D, 0x32F4, 0x630E, 0x630E, 0x0973, 0x630F, 0x6310, 0x32F8, - 0x6311, 0x6311, 0x0E47, 0x6312, 0x6315, 0x32FA, 0x6316, 0x6316, 0x0E8B, - 0x6317, 0x6319, 0x32FE, 0x631A, 0x631A, 0x11BE, 0x631B, 0x631B, 0x0A75, - 0x631C, 0x631C, 0x3301, 0x631D, 0x631D, 0x0EDD, 0x631E, 0x631E, 0x0DF5, - 0x631F, 0x631F, 0x0F79, 0x6320, 0x6320, 0x0B36, 0x6321, 0x6321, 0x0593, - 0x6322, 0x6322, 0x14C2, 0x6323, 0x6323, 0x1196, 0x6324, 0x6324, 0x082A, - 0x6325, 0x6325, 0x07E8, 0x6326, 0x6327, 0x3302, 0x6328, 0x6328, 0x03AF, - 0x6329, 0x6329, 0x3304, 0x632A, 0x632A, 0x0B73, 0x632B, 0x632B, 0x056F, - 0x632C, 0x632E, 0x3305, 0x632F, 0x632F, 0x1192, 0x6330, 0x6331, 0x3308, - 0x6332, 0x6332, 0x194F, 0x6333, 0x6338, 0x330A, 0x6339, 0x6339, 0x14C4, - 0x633A, 0x633A, 0x0E57, 0x633B, 0x633C, 0x3310, 0x633D, 0x633D, 0x0E9D, - 0x633E, 0x633E, 0x21D1, 0x633F, 0x6341, 0x3312, 0x6342, 0x6342, 0x0EF5, - 0x6343, 0x6343, 0x14C6, 0x6344, 0x6344, 0x3315, 0x6345, 0x6345, 0x0E62, - 0x6346, 0x6346, 0x0991, 0x6347, 0x6348, 0x3316, 0x6349, 0x6349, 0x121A, - 0x634A, 0x634A, 0x3318, 0x634B, 0x634B, 0x14C5, 0x634C, 0x634C, 0x03D1, - 0x634D, 0x634D, 0x076B, 0x634E, 0x634E, 0x0D0C, 0x634F, 0x634F, 0x0B56, - 0x6350, 0x6350, 0x0917, 0x6351, 0x6354, 0x3319, 0x6355, 0x6355, 0x047D, - 0x6356, 0x635D, 0x331D, 0x635E, 0x635E, 0x09B7, 0x635F, 0x635F, 0x0DE5, - 0x6360, 0x6360, 0x3325, 0x6361, 0x6361, 0x0864, 0x6362, 0x6362, 0x07D0, - 0x6363, 0x6363, 0x0598, 0x6364, 0x6366, 0x3326, 0x6367, 0x6367, 0x0BB6, - 0x6368, 0x6368, 0x211C, 0x6369, 0x6369, 0x14D0, 0x636A, 0x636A, 0x3329, - 0x636B, 0x636B, 0x235D, 0x636C, 0x636C, 0x332A, 0x636D, 0x636D, 0x14CD, - 0x636E, 0x636E, 0x090C, 0x636F, 0x6370, 0x332B, 0x6371, 0x6371, 0x14C9, - 0x6372, 0x6372, 0x2682, 0x6373, 0x6375, 0x332D, 0x6376, 0x6376, 0x053A, - 0x6377, 0x6377, 0x08AE, 0x6378, 0x6379, 0x3330, 0x637A, 0x637A, 0x14CA, - 0x637B, 0x637B, 0x0B50, 0x637C, 0x637F, 0x3332, 0x6380, 0x6380, 0x0F33, - 0x6381, 0x6381, 0x3336, 0x6382, 0x6382, 0x05C1, 0x6383, 0x6383, 0x210D, - 0x6384, 0x6384, 0x205A, 0x6385, 0x6386, 0x3337, 0x6387, 0x6387, 0x061D, - 0x6388, 0x6388, 0x0D71, 0x6389, 0x6389, 0x05D5, 0x638A, 0x638A, 0x14CF, - 0x638B, 0x638B, 0x3339, 0x638C, 0x638C, 0x1167, 0x638D, 0x638D, 0x333A, - 0x638E, 0x638E, 0x14CB, 0x638F, 0x638F, 0x0E20, 0x6390, 0x6390, 0x0C1D, - 0x6391, 0x6391, 0x333B, 0x6392, 0x6392, 0x0B86, 0x6393, 0x6395, 0x333C, - 0x6396, 0x6396, 0x103B, 0x6397, 0x6397, 0x333F, 0x6398, 0x6398, 0x0921, - 0x6399, 0x639F, 0x3340, 0x63A0, 0x63A0, 0x0A7A, 0x63A1, 0x63A1, 0x3347, - 0x63A2, 0x63A2, 0x0E10, 0x63A3, 0x63A3, 0x04DD, 0x63A4, 0x63A4, 0x3348, - 0x63A5, 0x63A5, 0x08A4, 0x63A6, 0x63A6, 0x3349, 0x63A7, 0x63A7, 0x0965, - 0x63A8, 0x63A8, 0x0E77, 0x63A9, 0x63A9, 0x1003, 0x63AA, 0x63AA, 0x056E, - 0x63AB, 0x63AB, 0x334A, 0x63AC, 0x63AC, 0x14CE, 0x63AD, 0x63AD, 0x14C7, - 0x63AE, 0x63AE, 0x14D1, 0x63AF, 0x63AF, 0x334B, 0x63B0, 0x63B0, 0x1950, - 0x63B1, 0x63B2, 0x334C, 0x63B3, 0x63B3, 0x0A57, 0x63B4, 0x63B4, 0x14CC, - 0x63B5, 0x63B6, 0x334E, 0x63B7, 0x63B7, 0x11BF, 0x63B8, 0x63B8, 0x0588, - 0x63B9, 0x63B9, 0x3350, 0x63BA, 0x63BA, 0x04BB, 0x63BB, 0x63BB, 0x3351, - 0x63BC, 0x63BC, 0x14D2, 0x63BD, 0x63BD, 0x3352, 0x63BE, 0x63BE, 0x14DC, - 0x63BF, 0x63BF, 0x3353, 0x63C0, 0x63C0, 0x1F8D, 0x63C1, 0x63C3, 0x3354, - 0x63C4, 0x63C4, 0x14D7, 0x63C5, 0x63C5, 0x3357, 0x63C6, 0x63C6, 0x14DB, - 0x63C7, 0x63C8, 0x3358, 0x63C9, 0x63C9, 0x0CBB, 0x63CA, 0x63CC, 0x335A, - 0x63CD, 0x63CD, 0x123E, 0x63CE, 0x63CE, 0x14D9, 0x63CF, 0x63CF, 0x0AED, - 0x63D0, 0x63D0, 0x0E34, 0x63D1, 0x63D1, 0x335D, 0x63D2, 0x63D2, 0x04AC, - 0x63D3, 0x63D5, 0x335E, 0x63D6, 0x63D6, 0x1045, 0x63D7, 0x63D9, 0x3361, - 0x63DA, 0x63DA, 0x21FF, 0x63DB, 0x63DD, 0x3364, 0x63DE, 0x63DE, 0x14D8, - 0x63DF, 0x63DF, 0x3367, 0x63E0, 0x63E0, 0x14D5, 0x63E1, 0x63E1, 0x0EE4, - 0x63E2, 0x63E2, 0x3368, 0x63E3, 0x63E3, 0x052A, 0x63E4, 0x63E8, 0x3369, - 0x63E9, 0x63E9, 0x0938, 0x63EA, 0x63EA, 0x08ED, 0x63EB, 0x63EC, 0x336E, - 0x63ED, 0x63ED, 0x08A3, 0x63EE, 0x63EE, 0x1F58, 0x63EF, 0x63F1, 0x3370, - 0x63F2, 0x63F2, 0x14D3, 0x63F3, 0x63F3, 0x3373, 0x63F4, 0x63F4, 0x10F1, - 0x63F5, 0x63F5, 0x3374, 0x63F6, 0x63F6, 0x14C8, 0x63F7, 0x63F7, 0x3375, - 0x63F8, 0x63F8, 0x14D4, 0x63F9, 0x63FC, 0x3376, 0x63FD, 0x63FD, 0x09AA, - 0x63FE, 0x63FE, 0x337A, 0x63FF, 0x63FF, 0x14D6, 0x6400, 0x6400, 0x04BA, - 0x6401, 0x6401, 0x06E4, 0x6402, 0x6402, 0x0A4E, 0x6403, 0x6404, 0x337B, - 0x6405, 0x6405, 0x0892, 0x6406, 0x640A, 0x337D, 0x640B, 0x640B, 0x14DF, - 0x640C, 0x640C, 0x14E2, 0x640D, 0x640D, 0x215B, 0x640E, 0x640E, 0x3382, - 0x640F, 0x640F, 0x0472, 0x6410, 0x6410, 0x0527, 0x6411, 0x6412, 0x3383, - 0x6413, 0x6413, 0x056D, 0x6414, 0x6414, 0x0CDF, 0x6415, 0x6416, 0x3385, - 0x6417, 0x6417, 0x1EB6, 0x6418, 0x641A, 0x3387, 0x641B, 0x641B, 0x14E0, - 0x641C, 0x641C, 0x0DC6, 0x641D, 0x641D, 0x338A, 0x641E, 0x641E, 0x06DE, - 0x641F, 0x641F, 0x338B, 0x6420, 0x6420, 0x14E1, 0x6421, 0x6421, 0x14E4, - 0x6422, 0x6425, 0x338C, 0x6426, 0x6426, 0x14E3, 0x6427, 0x6429, 0x3390, - 0x642A, 0x642A, 0x0E15, 0x642B, 0x642B, 0x3393, 0x642C, 0x642C, 0x03EC, - 0x642D, 0x642D, 0x0571, 0x642E, 0x6433, 0x3394, 0x6434, 0x6434, 0x1736, - 0x6435, 0x6435, 0x339A, 0x6436, 0x6436, 0x20DB, 0x6437, 0x6439, 0x339B, - 0x643A, 0x643A, 0x0F7A, 0x643B, 0x643C, 0x339E, 0x643D, 0x643D, 0x04B2, - 0x643E, 0x643E, 0x33A0, 0x643F, 0x643F, 0x1951, 0x6440, 0x6440, 0x33A1, - 0x6441, 0x6441, 0x14DE, 0x6442, 0x6443, 0x33A2, 0x6444, 0x6444, 0x0D1C, - 0x6445, 0x6445, 0x14DD, 0x6446, 0x6446, 0x03E5, 0x6447, 0x6447, 0x1028, - 0x6448, 0x6448, 0x0460, 0x6449, 0x6449, 0x33A4, 0x644A, 0x644A, 0x0E02, - 0x644B, 0x6450, 0x33A5, 0x6451, 0x6451, 0x2360, 0x6452, 0x6452, 0x14DA, - 0x6453, 0x6453, 0x33AB, 0x6454, 0x6454, 0x0D99, 0x6455, 0x6457, 0x33AC, - 0x6458, 0x6458, 0x114B, 0x6459, 0x645B, 0x33AF, 0x645C, 0x645C, 0x2361, - 0x645D, 0x645D, 0x33B2, 0x645E, 0x645E, 0x14E5, 0x645F, 0x645F, 0x2040, - 0x6460, 0x6466, 0x33B3, 0x6467, 0x6467, 0x0560, 0x6468, 0x6468, 0x33BA, - 0x6469, 0x6469, 0x0B09, 0x646A, 0x646C, 0x33BB, 0x646D, 0x646D, 0x14E7, - 0x646E, 0x646E, 0x33BE, 0x646F, 0x646F, 0x228E, 0x6470, 0x6472, 0x33BF, - 0x6473, 0x6473, 0x1FDF, 0x6474, 0x6475, 0x33C2, 0x6476, 0x6476, 0x235E, - 0x6477, 0x6477, 0x33C4, 0x6478, 0x6479, 0x0B03, 0x647A, 0x647A, 0x14E9, - 0x647B, 0x647B, 0x1E6A, 0x647C, 0x6481, 0x33C5, 0x6482, 0x6482, 0x0A15, - 0x6483, 0x6483, 0x33CB, 0x6484, 0x6484, 0x14E6, 0x6485, 0x6485, 0x091E, - 0x6486, 0x6486, 0x33CC, 0x6487, 0x6487, 0x0BD1, 0x6488, 0x6488, 0x2002, - 0x6489, 0x6490, 0x33CD, 0x6491, 0x6491, 0x04EA, 0x6492, 0x6492, 0x0CD1, - 0x6493, 0x6493, 0x2093, 0x6494, 0x6494, 0x33D5, 0x6495, 0x6495, 0x0DAF, - 0x6496, 0x6496, 0x14E8, 0x6497, 0x6498, 0x33D6, 0x6499, 0x6499, 0x14EC, - 0x649A, 0x649D, 0x33D8, 0x649E, 0x649E, 0x120F, 0x649F, 0x649F, 0x235F, - 0x64A0, 0x64A2, 0x33DC, 0x64A3, 0x64A3, 0x1EAC, 0x64A4, 0x64A4, 0x04DC, - 0x64A5, 0x64A5, 0x1E54, 0x64A6, 0x64A8, 0x33DF, 0x64A9, 0x64A9, 0x0A0C, - 0x64AA, 0x64AA, 0x33E2, 0x64AB, 0x64AB, 0x1F08, 0x64AC, 0x64AC, 0x0C48, - 0x64AD, 0x64AD, 0x046C, 0x64AE, 0x64AE, 0x056C, 0x64AF, 0x64AF, 0x33E3, - 0x64B0, 0x64B0, 0x1208, 0x64B1, 0x64B1, 0x33E4, 0x64B2, 0x64B2, 0x20C0, - 0x64B3, 0x64B3, 0x2362, 0x64B4, 0x64B4, 0x33E5, 0x64B5, 0x64B5, 0x0B4F, - 0x64B6, 0x64B6, 0x33E6, 0x64B7, 0x64B8, 0x14EA, 0x64B9, 0x64B9, 0x33E7, - 0x64BA, 0x64BA, 0x14ED, 0x64BB, 0x64BB, 0x2160, 0x64BC, 0x64BC, 0x076A, - 0x64BD, 0x64BD, 0x33E8, 0x64BE, 0x64BE, 0x219D, 0x64BF, 0x64BF, 0x1F8E, - 0x64C0, 0x64C0, 0x14EE, 0x64C1, 0x64C1, 0x222D, 0x64C2, 0x64C2, 0x09C9, - 0x64C3, 0x64C3, 0x33E9, 0x64C4, 0x64C4, 0x2047, 0x64C5, 0x64C5, 0x0CFC, - 0x64C6, 0x64C6, 0x33EA, 0x64C7, 0x64C7, 0x2262, 0x64C8, 0x64C9, 0x33EB, - 0x64CA, 0x64CA, 0x1F67, 0x64CB, 0x64CB, 0x1EB2, 0x64CC, 0x64CC, 0x33ED, - 0x64CD, 0x64CD, 0x04A0, 0x64CE, 0x64CE, 0x0C63, 0x64CF, 0x64CF, 0x33EE, - 0x64D0, 0x64D0, 0x14EF, 0x64D1, 0x64D1, 0x33EF, 0x64D2, 0x64D2, 0x0C59, - 0x64D3, 0x64D3, 0x33F0, 0x64D4, 0x64D4, 0x1EA9, 0x64D5, 0x64D6, 0x33F1, - 0x64D7, 0x64D7, 0x14F0, 0x64D8, 0x64D8, 0x1952, 0x64D9, 0x64D9, 0x33F3, - 0x64DA, 0x64DA, 0x1FCC, 0x64DB, 0x64DD, 0x33F4, 0x64DE, 0x64DE, 0x0DC8, - 0x64DF, 0x64DF, 0x33F7, 0x64E0, 0x64E0, 0x1F72, 0x64E1, 0x64E1, 0x33F8, - 0x64E2, 0x64E2, 0x14F2, 0x64E3, 0x64E3, 0x33F9, 0x64E4, 0x64E4, 0x14F1, - 0x64E5, 0x64E5, 0x33FA, 0x64E6, 0x64E6, 0x0488, 0x64E7, 0x64EB, 0x33FB, - 0x64EC, 0x64EC, 0x2098, 0x64ED, 0x64EE, 0x3400, 0x64EF, 0x64EF, 0x1E52, - 0x64F0, 0x64F0, 0x20A4, 0x64F1, 0x64F1, 0x1F1C, 0x64F2, 0x64F2, 0x228F, - 0x64F3, 0x64F3, 0x3402, 0x64F4, 0x64F4, 0x1FED, 0x64F5, 0x64F6, 0x3403, - 0x64F7, 0x64F7, 0x2365, 0x64F8, 0x64F9, 0x3405, 0x64FA, 0x64FA, 0x1E2D, - 0x64FB, 0x64FB, 0x2152, 0x64FC, 0x64FC, 0x2366, 0x64FD, 0x64FD, 0x3407, - 0x64FE, 0x64FE, 0x20FA, 0x64FF, 0x64FF, 0x3408, 0x6500, 0x6500, 0x0B8B, - 0x6501, 0x6503, 0x3409, 0x6504, 0x6504, 0x2363, 0x6505, 0x6505, 0x340C, - 0x6506, 0x6506, 0x209A, 0x6507, 0x6508, 0x340D, 0x6509, 0x6509, 0x14F3, - 0x650A, 0x650E, 0x340F, 0x650F, 0x650F, 0x203C, 0x6510, 0x6511, 0x3414, - 0x6512, 0x6512, 0x111F, 0x6513, 0x6513, 0x3416, 0x6514, 0x6514, 0x1FF6, - 0x6515, 0x6515, 0x3417, 0x6516, 0x6516, 0x2364, 0x6517, 0x6517, 0x3418, - 0x6518, 0x6518, 0x0C9C, 0x6519, 0x6519, 0x1E69, 0x651A, 0x651A, 0x3419, - 0x651B, 0x651B, 0x2367, 0x651C, 0x651C, 0x341A, 0x651D, 0x651D, 0x211D, - 0x651E, 0x6521, 0x341B, 0x6522, 0x6522, 0x2259, 0x6523, 0x6523, 0x2056, - 0x6524, 0x6524, 0x2163, 0x6525, 0x6525, 0x14F4, 0x6526, 0x6529, 0x341F, - 0x652A, 0x652A, 0x1FA9, 0x652B, 0x652B, 0x091F, 0x652C, 0x652C, 0x1FFC, - 0x652D, 0x652D, 0x3423, 0x652E, 0x652E, 0x14F5, 0x652F, 0x652F, 0x11A6, - 0x6530, 0x6533, 0x3424, 0x6534, 0x6534, 0x1909, 0x6535, 0x6535, 0x1966, - 0x6536, 0x6536, 0x0D6C, 0x6537, 0x6537, 0x3428, 0x6538, 0x6538, 0x12B2, - 0x6539, 0x6539, 0x06BF, 0x653A, 0x653A, 0x3429, 0x653B, 0x653B, 0x06FE, - 0x653C, 0x653D, 0x342A, 0x653E, 0x653E, 0x0662, 0x653F, 0x653F, 0x119F, - 0x6540, 0x6544, 0x342C, 0x6545, 0x6545, 0x0723, 0x6546, 0x6547, 0x3431, - 0x6548, 0x6548, 0x0F72, 0x6549, 0x6549, 0x1CCB, 0x654A, 0x654B, 0x3433, - 0x654C, 0x654C, 0x05B1, 0x654D, 0x654E, 0x3435, 0x654F, 0x654F, 0x0AF9, - 0x6550, 0x6550, 0x3437, 0x6551, 0x6551, 0x08F7, 0x6552, 0x6554, 0x3438, - 0x6555, 0x6555, 0x1967, 0x6556, 0x6556, 0x03C8, 0x6557, 0x6557, 0x1E2E, - 0x6558, 0x6558, 0x343B, 0x6559, 0x6559, 0x089D, 0x655A, 0x655A, 0x343C, - 0x655B, 0x655B, 0x09FB, 0x655C, 0x655C, 0x343D, 0x655D, 0x655D, 0x043F, - 0x655E, 0x655E, 0x04CD, 0x655F, 0x6561, 0x343E, 0x6562, 0x6562, 0x06CD, - 0x6563, 0x6563, 0x0CDB, 0x6564, 0x6565, 0x3441, 0x6566, 0x6566, 0x0617, - 0x6567, 0x656A, 0x3443, 0x656B, 0x656B, 0x1968, 0x656C, 0x656C, 0x08E3, - 0x656D, 0x656F, 0x3447, 0x6570, 0x6570, 0x0D94, 0x6571, 0x6571, 0x344A, - 0x6572, 0x6572, 0x0C40, 0x6573, 0x6573, 0x344B, 0x6574, 0x6574, 0x119C, - 0x6575, 0x6575, 0x1EBC, 0x6576, 0x6576, 0x344C, 0x6577, 0x6577, 0x0690, - 0x6578, 0x6578, 0x2142, 0x6579, 0x6581, 0x344D, 0x6582, 0x6582, 0x201E, - 0x6583, 0x6583, 0x1E43, 0x6584, 0x6586, 0x3456, 0x6587, 0x6587, 0x0ED3, - 0x6588, 0x658A, 0x3459, 0x658B, 0x658B, 0x114C, 0x658C, 0x658C, 0x045C, - 0x658D, 0x658F, 0x345C, 0x6590, 0x6590, 0x19C1, 0x6591, 0x6591, 0x03EA, - 0x6592, 0x6592, 0x345F, 0x6593, 0x6593, 0x19C3, 0x6594, 0x6594, 0x3460, - 0x6595, 0x6595, 0x24D4, 0x6596, 0x6596, 0x3461, 0x6597, 0x6597, 0x05F6, - 0x6598, 0x6598, 0x3462, 0x6599, 0x6599, 0x0A18, 0x659A, 0x659A, 0x3463, - 0x659B, 0x659B, 0x1D56, 0x659C, 0x659C, 0x0F7C, 0x659D, 0x659E, 0x3464, - 0x659F, 0x659F, 0x1186, 0x65A0, 0x65A0, 0x3466, 0x65A1, 0x65A1, 0x0EE2, - 0x65A2, 0x65A3, 0x3467, 0x65A4, 0x65A4, 0x08C0, 0x65A5, 0x65A5, 0x0507, - 0x65A6, 0x65A6, 0x3469, 0x65A7, 0x65A7, 0x06A6, 0x65A8, 0x65A8, 0x346A, - 0x65A9, 0x65A9, 0x1157, 0x65AA, 0x65AA, 0x346B, 0x65AB, 0x65AB, 0x1A29, - 0x65AC, 0x65AC, 0x226F, 0x65AD, 0x65AD, 0x060E, 0x65AE, 0x65AE, 0x346C, - 0x65AF, 0x65AF, 0x0DAE, 0x65B0, 0x65B0, 0x0F8D, 0x65B1, 0x65B6, 0x346D, - 0x65B7, 0x65B7, 0x1ED7, 0x65B8, 0x65B8, 0x3473, 0x65B9, 0x65B9, 0x065A, - 0x65BA, 0x65BB, 0x3474, 0x65BC, 0x65BC, 0x19C4, 0x65BD, 0x65BD, 0x0D40, - 0x65BE, 0x65C0, 0x3476, 0x65C1, 0x65C1, 0x0B95, 0x65C2, 0x65C2, 0x3479, - 0x65C3, 0x65C3, 0x19C7, 0x65C4, 0x65C4, 0x19C6, 0x65C5, 0x65C5, 0x0A6A, - 0x65C6, 0x65C6, 0x19C5, 0x65C7, 0x65CA, 0x347A, 0x65CB, 0x65CB, 0x0FC8, - 0x65CC, 0x65CC, 0x19C8, 0x65CD, 0x65CD, 0x347E, 0x65CE, 0x65CE, 0x19C9, - 0x65CF, 0x65CF, 0x1242, 0x65D0, 0x65D1, 0x347F, 0x65D2, 0x65D2, 0x19CA, - 0x65D3, 0x65D5, 0x3481, 0x65D6, 0x65D6, 0x19CB, 0x65D7, 0x65D7, 0x0C0B, - 0x65D8, 0x65DF, 0x3484, 0x65E0, 0x65E0, 0x0EED, 0x65E1, 0x65E1, 0x348C, - 0x65E2, 0x65E2, 0x083B, 0x65E3, 0x65E4, 0x348D, 0x65E5, 0x65E5, 0x0CB0, - 0x65E6, 0x65E6, 0x058A, 0x65E7, 0x65E7, 0x08F8, 0x65E8, 0x65E8, 0x11BB, - 0x65E9, 0x65E9, 0x112A, 0x65EA, 0x65EB, 0x348F, 0x65EC, 0x65EC, 0x0FD7, - 0x65ED, 0x65ED, 0x0FBC, 0x65EE, 0x65F0, 0x190A, 0x65F1, 0x65F1, 0x076C, - 0x65F2, 0x65F5, 0x3491, 0x65F6, 0x65F6, 0x0D48, 0x65F7, 0x65F7, 0x0982, - 0x65F8, 0x65F9, 0x3495, 0x65FA, 0x65FA, 0x0EAB, 0x65FB, 0x65FF, 0x3497, - 0x6600, 0x6600, 0x1912, 0x6601, 0x6601, 0x349C, 0x6602, 0x6602, 0x03C5, - 0x6603, 0x6603, 0x1910, 0x6604, 0x6605, 0x349D, 0x6606, 0x6606, 0x0990, - 0x6607, 0x6609, 0x349F, 0x660A, 0x660A, 0x190D, 0x660B, 0x660B, 0x34A2, - 0x660C, 0x660C, 0x04C4, 0x660D, 0x660D, 0x34A3, 0x660E, 0x660E, 0x0AFC, - 0x660F, 0x660F, 0x07FD, 0x6610, 0x6612, 0x34A4, 0x6613, 0x6613, 0x105E, - 0x6614, 0x6614, 0x0F03, 0x6615, 0x6615, 0x1911, 0x6616, 0x6618, 0x34A7, - 0x6619, 0x6619, 0x190E, 0x661A, 0x661C, 0x34AA, 0x661D, 0x661D, 0x1915, - 0x661E, 0x661E, 0x34AD, 0x661F, 0x661F, 0x0F92, 0x6620, 0x6620, 0x1098, - 0x6621, 0x6624, 0x34AE, 0x6625, 0x6625, 0x053D, 0x6626, 0x6626, 0x34B2, - 0x6627, 0x6627, 0x0AC6, 0x6628, 0x6628, 0x124F, 0x6629, 0x662C, 0x34B3, - 0x662D, 0x662D, 0x1172, 0x662E, 0x662E, 0x34B7, 0x662F, 0x662F, 0x0D5E, - 0x6630, 0x6630, 0x34B8, 0x6631, 0x6631, 0x1917, 0x6632, 0x6633, 0x34B9, - 0x6634, 0x6634, 0x1916, 0x6635, 0x6635, 0x1919, 0x6636, 0x6636, 0x1918, - 0x6637, 0x663B, 0x34BB, 0x663C, 0x663C, 0x11E6, 0x663D, 0x663D, 0x34C0, - 0x663E, 0x663E, 0x0F41, 0x663F, 0x6640, 0x34C1, 0x6641, 0x6641, 0x191D, - 0x6642, 0x6642, 0x212D, 0x6643, 0x6643, 0x07E3, 0x6644, 0x664A, 0x34C3, - 0x664B, 0x664B, 0x08CB, 0x664C, 0x664C, 0x0D07, 0x664D, 0x664E, 0x34CA, - 0x664F, 0x664F, 0x191E, 0x6650, 0x6651, 0x34CC, 0x6652, 0x6652, 0x0CF2, - 0x6653, 0x6653, 0x0F6B, 0x6654, 0x6654, 0x191C, 0x6655, 0x6655, 0x1111, - 0x6656, 0x6656, 0x191F, 0x6657, 0x6657, 0x1921, 0x6658, 0x6659, 0x34CE, - 0x665A, 0x665A, 0x0E9E, 0x665B, 0x665C, 0x34D0, 0x665D, 0x665D, 0x229B, - 0x665E, 0x665E, 0x34D2, 0x665F, 0x665F, 0x191B, 0x6660, 0x6660, 0x34D3, - 0x6661, 0x6661, 0x1920, 0x6662, 0x6663, 0x34D4, 0x6664, 0x6664, 0x0EFD, - 0x6665, 0x6665, 0x34D6, 0x6666, 0x6666, 0x07F3, 0x6667, 0x6667, 0x34D7, - 0x6668, 0x6668, 0x04E4, 0x6669, 0x666D, 0x34D8, 0x666E, 0x666E, 0x0BF4, - 0x666F, 0x666F, 0x08DF, 0x6670, 0x6670, 0x0F09, 0x6671, 0x6673, 0x34DD, - 0x6674, 0x6674, 0x0C64, 0x6675, 0x6675, 0x34E0, 0x6676, 0x6676, 0x08D6, - 0x6677, 0x6677, 0x1922, 0x6678, 0x6679, 0x34E1, 0x667A, 0x667A, 0x11C6, - 0x667B, 0x667D, 0x34E3, 0x667E, 0x667E, 0x0A09, 0x667F, 0x6681, 0x34E6, - 0x6682, 0x6682, 0x1120, 0x6683, 0x6683, 0x34E9, 0x6684, 0x6684, 0x1923, - 0x6685, 0x6686, 0x34EA, 0x6687, 0x6687, 0x0F2B, 0x6688, 0x6688, 0x2256, - 0x6689, 0x6689, 0x24A8, 0x668A, 0x668B, 0x34EC, 0x668C, 0x668C, 0x1924, - 0x668D, 0x6690, 0x34EE, 0x6691, 0x6691, 0x0D85, 0x6692, 0x6695, 0x34F2, - 0x6696, 0x6696, 0x0B70, 0x6697, 0x6697, 0x03C0, 0x6698, 0x669C, 0x34F6, - 0x669D, 0x669D, 0x1926, 0x669E, 0x66A1, 0x34FB, 0x66A2, 0x66A2, 0x1E79, - 0x66A3, 0x66A6, 0x34FF, 0x66A7, 0x66A7, 0x1925, 0x66A8, 0x66A8, 0x1CDD, - 0x66A9, 0x66AA, 0x3503, 0x66AB, 0x66AB, 0x225A, 0x66AC, 0x66AD, 0x3505, - 0x66AE, 0x66AE, 0x0B1D, 0x66AF, 0x66B3, 0x3507, 0x66B4, 0x66B4, 0x0412, - 0x66B5, 0x66B8, 0x350C, 0x66B9, 0x66B9, 0x175B, 0x66BA, 0x66BD, 0x3510, - 0x66BE, 0x66BE, 0x1927, 0x66BF, 0x66C3, 0x3514, 0x66C4, 0x66C4, 0x24A7, - 0x66C5, 0x66C5, 0x3519, 0x66C6, 0x66C6, 0x2686, 0x66C7, 0x66C7, 0x24A6, - 0x66C8, 0x66C8, 0x351A, 0x66C9, 0x66C9, 0x21CE, 0x66CA, 0x66D5, 0x351B, - 0x66D6, 0x66D6, 0x24A9, 0x66D7, 0x66D8, 0x3527, 0x66D9, 0x66D9, 0x0D86, - 0x66DA, 0x66DA, 0x3529, 0x66DB, 0x66DC, 0x1928, 0x66DD, 0x66DD, 0x0BF7, - 0x66DE, 0x66DF, 0x352A, 0x66E0, 0x66E0, 0x1FE7, 0x66E1, 0x66E5, 0x352C, - 0x66E6, 0x66E6, 0x192A, 0x66E7, 0x66E8, 0x3531, 0x66E9, 0x66E9, 0x192B, - 0x66EA, 0x66EB, 0x3533, 0x66EC, 0x66EC, 0x2112, 0x66ED, 0x66EF, 0x3535, - 0x66F0, 0x66F0, 0x10FE, 0x66F1, 0x66F1, 0x3538, 0x66F2, 0x66F2, 0x0C77, - 0x66F3, 0x66F3, 0x103E, 0x66F4, 0x66F4, 0x06F7, 0x66F5, 0x66F6, 0x3539, - 0x66F7, 0x66F7, 0x1914, 0x66F8, 0x66F8, 0x213C, 0x66F9, 0x66F9, 0x04A3, - 0x66FA, 0x66FB, 0x353B, 0x66FC, 0x66FC, 0x0AA3, 0x66FD, 0x66FD, 0x353D, - 0x66FE, 0x66FE, 0x113B, 0x66FF, 0x66FF, 0x0E39, 0x6700, 0x6700, 0x124B, - 0x6701, 0x6702, 0x353E, 0x6703, 0x6703, 0x1F5C, 0x6704, 0x6707, 0x3540, - 0x6708, 0x6708, 0x1105, 0x6709, 0x6709, 0x10B5, 0x670A, 0x670A, 0x1973, - 0x670B, 0x670B, 0x0BB4, 0x670C, 0x670C, 0x3544, 0x670D, 0x670D, 0x069B, - 0x670E, 0x670F, 0x3545, 0x6710, 0x6710, 0x1984, 0x6711, 0x6713, 0x3547, - 0x6714, 0x6714, 0x0DAC, 0x6715, 0x6715, 0x198E, 0x6716, 0x6716, 0x354A, - 0x6717, 0x6717, 0x09B5, 0x6718, 0x671A, 0x354B, 0x671B, 0x671B, 0x0EAC, - 0x671C, 0x671C, 0x354E, 0x671D, 0x671D, 0x04D4, 0x671E, 0x671E, 0x354F, - 0x671F, 0x671F, 0x0BF9, 0x6720, 0x6725, 0x3550, 0x6726, 0x6726, 0x19AC, - 0x6727, 0x6727, 0x24C4, 0x6728, 0x6728, 0x0B21, 0x6729, 0x6729, 0x3556, - 0x672A, 0x672A, 0x0EC3, 0x672B, 0x672B, 0x0B0C, 0x672C, 0x672C, 0x0427, - 0x672D, 0x672D, 0x1140, 0x672E, 0x672E, 0x3557, 0x672F, 0x672F, 0x0D8C, - 0x6730, 0x6730, 0x3558, 0x6731, 0x6731, 0x11EB, 0x6732, 0x6733, 0x3559, - 0x6734, 0x6734, 0x0BF2, 0x6735, 0x6735, 0x0623, 0x6736, 0x6739, 0x355B, - 0x673A, 0x673A, 0x080F, 0x673B, 0x673C, 0x355F, 0x673D, 0x673D, 0x0FAB, - 0x673E, 0x673F, 0x3561, 0x6740, 0x6740, 0x0CEA, 0x6741, 0x6741, 0x3563, - 0x6742, 0x6742, 0x1116, 0x6743, 0x6743, 0x0C83, 0x6744, 0x6745, 0x3564, - 0x6746, 0x6746, 0x06C6, 0x6747, 0x6747, 0x3566, 0x6748, 0x6748, 0x1854, - 0x6749, 0x6749, 0x0CF5, 0x674A, 0x674B, 0x3567, 0x674C, 0x674C, 0x1851, - 0x674D, 0x674D, 0x3569, 0x674E, 0x674E, 0x09D9, 0x674F, 0x674F, 0x0F9E, - 0x6750, 0x6750, 0x048B, 0x6751, 0x6751, 0x0568, 0x6752, 0x6752, 0x356A, - 0x6753, 0x6753, 0x1852, 0x6754, 0x6755, 0x356B, 0x6756, 0x6756, 0x1169, - 0x6757, 0x675B, 0x356D, 0x675C, 0x675C, 0x0604, 0x675D, 0x675D, 0x3572, - 0x675E, 0x675E, 0x1853, 0x675F, 0x675F, 0x0D8F, 0x6760, 0x6760, 0x06D7, - 0x6761, 0x6761, 0x0E48, 0x6762, 0x6764, 0x3573, 0x6765, 0x6765, 0x099F, - 0x6766, 0x6767, 0x3576, 0x6768, 0x6768, 0x1017, 0x6769, 0x6769, 0x1855, - 0x676A, 0x676A, 0x1858, 0x676B, 0x676C, 0x3578, 0x676D, 0x676D, 0x0773, - 0x676E, 0x676E, 0x357A, 0x676F, 0x676F, 0x0416, 0x6770, 0x6770, 0x08AD, - 0x6771, 0x6771, 0x1ECC, 0x6772, 0x6772, 0x190F, 0x6773, 0x6773, 0x1859, - 0x6774, 0x6774, 0x357B, 0x6775, 0x6775, 0x185C, 0x6776, 0x6776, 0x357C, - 0x6777, 0x6777, 0x1861, 0x6778, 0x677B, 0x357D, 0x677C, 0x677C, 0x1862, - 0x677D, 0x677D, 0x3581, 0x677E, 0x677E, 0x0DBE, 0x677F, 0x677F, 0x03F0, - 0x6780, 0x6780, 0x3582, 0x6781, 0x6781, 0x081E, 0x6782, 0x6783, 0x3583, - 0x6784, 0x6784, 0x0712, 0x6785, 0x6786, 0x3585, 0x6787, 0x6787, 0x1857, - 0x6788, 0x6788, 0x3587, 0x6789, 0x6789, 0x0EA8, 0x678A, 0x678A, 0x3588, - 0x678B, 0x678B, 0x1860, 0x678C, 0x678F, 0x3589, 0x6790, 0x6790, 0x0F05, - 0x6791, 0x6794, 0x358D, 0x6795, 0x6795, 0x118E, 0x6796, 0x6796, 0x3591, - 0x6797, 0x6797, 0x0A1F, 0x6798, 0x6798, 0x185A, 0x6799, 0x6799, 0x3592, - 0x679A, 0x679A, 0x0ABB, 0x679B, 0x679B, 0x3593, 0x679C, 0x679C, 0x0754, - 0x679D, 0x679D, 0x11A5, 0x679E, 0x679E, 0x185E, 0x679F, 0x67A1, 0x3594, - 0x67A2, 0x67A2, 0x0D77, 0x67A3, 0x67A3, 0x1129, 0x67A4, 0x67A4, 0x3597, - 0x67A5, 0x67A5, 0x1856, 0x67A6, 0x67A6, 0x3598, 0x67A7, 0x67A7, 0x185B, - 0x67A8, 0x67A8, 0x185D, 0x67A9, 0x67A9, 0x3599, 0x67AA, 0x67AA, 0x0C36, - 0x67AB, 0x67AB, 0x0680, 0x67AC, 0x67AC, 0x359A, 0x67AD, 0x67AD, 0x185F, - 0x67AE, 0x67AE, 0x359B, 0x67AF, 0x67AF, 0x096A, 0x67B0, 0x67B0, 0x1868, - 0x67B1, 0x67B2, 0x359C, 0x67B3, 0x67B3, 0x186D, 0x67B4, 0x67B4, 0x359E, - 0x67B5, 0x67B5, 0x186B, 0x67B6, 0x67B6, 0x084F, 0x67B7, 0x67B7, 0x0842, - 0x67B8, 0x67B8, 0x1871, 0x67B9, 0x67C0, 0x359F, 0x67C1, 0x67C1, 0x1874, - 0x67C2, 0x67C2, 0x35A7, 0x67C3, 0x67C3, 0x1870, 0x67C4, 0x67C4, 0x0463, - 0x67C5, 0x67CE, 0x35A8, 0x67CF, 0x67CF, 0x03E3, 0x67D0, 0x67D0, 0x0B16, - 0x67D1, 0x67D1, 0x06C7, 0x67D2, 0x67D2, 0x0C01, 0x67D3, 0x67D3, 0x0C99, - 0x67D4, 0x67D4, 0x0CBC, 0x67D5, 0x67D7, 0x35B2, 0x67D8, 0x67D8, 0x1865, - 0x67D9, 0x67D9, 0x186A, 0x67DA, 0x67DA, 0x186C, 0x67DB, 0x67DB, 0x35B5, - 0x67DC, 0x67DC, 0x074A, 0x67DD, 0x67DD, 0x186E, 0x67DE, 0x67DE, 0x1252, - 0x67DF, 0x67DF, 0x35B6, 0x67E0, 0x67E0, 0x0B5E, 0x67E1, 0x67E1, 0x35B7, - 0x67E2, 0x67E2, 0x1872, 0x67E3, 0x67E4, 0x35B8, 0x67E5, 0x67E5, 0x04B0, - 0x67E6, 0x67E8, 0x35BA, 0x67E9, 0x67E9, 0x1867, 0x67EA, 0x67EB, 0x35BD, - 0x67EC, 0x67EC, 0x0860, 0x67ED, 0x67EE, 0x35BF, 0x67EF, 0x67EF, 0x094F, - 0x67F0, 0x67F0, 0x1863, 0x67F1, 0x67F1, 0x11F8, 0x67F2, 0x67F2, 0x35C1, - 0x67F3, 0x67F3, 0x0A41, 0x67F4, 0x67F4, 0x04B8, 0x67F5, 0x67FC, 0x35C2, - 0x67FD, 0x67FD, 0x1875, 0x67FE, 0x67FE, 0x35CA, 0x67FF, 0x67FF, 0x0D58, - 0x6800, 0x6800, 0x186F, 0x6801, 0x6804, 0x35CB, 0x6805, 0x6805, 0x1145, - 0x6806, 0x6806, 0x35CF, 0x6807, 0x6807, 0x0453, 0x6808, 0x6808, 0x115C, - 0x6809, 0x6809, 0x1864, 0x680A, 0x680A, 0x1866, 0x680B, 0x680B, 0x05EF, - 0x680C, 0x680C, 0x1869, 0x680D, 0x680D, 0x35D0, 0x680E, 0x680E, 0x1873, - 0x680F, 0x680F, 0x09A3, 0x6810, 0x6810, 0x35D1, 0x6811, 0x6811, 0x0D8E, - 0x6812, 0x6812, 0x35D2, 0x6813, 0x6813, 0x0D9D, 0x6814, 0x6815, 0x35D3, - 0x6816, 0x6816, 0x0BFB, 0x6817, 0x6817, 0x09E0, 0x6818, 0x681C, 0x35D5, - 0x681D, 0x681D, 0x187F, 0x681E, 0x6820, 0x35DA, 0x6821, 0x6821, 0x0F6E, - 0x6822, 0x6828, 0x35DD, 0x6829, 0x6829, 0x1888, 0x682A, 0x682A, 0x11E9, - 0x682B, 0x6831, 0x35E4, 0x6832, 0x6833, 0x1876, 0x6834, 0x6836, 0x35EB, - 0x6837, 0x6837, 0x1022, 0x6838, 0x6838, 0x0782, 0x6839, 0x6839, 0x06F4, - 0x683A, 0x683B, 0x35EE, 0x683C, 0x683C, 0x06EC, 0x683D, 0x683D, 0x1117, - 0x683E, 0x683E, 0x1885, 0x683F, 0x683F, 0x35F0, 0x6840, 0x6840, 0x1884, - 0x6841, 0x6841, 0x1882, 0x6842, 0x6842, 0x0749, 0x6843, 0x6843, 0x0E25, - 0x6844, 0x6844, 0x187C, 0x6845, 0x6845, 0x0EB5, 0x6846, 0x6846, 0x097F, - 0x6847, 0x6847, 0x35F1, 0x6848, 0x6848, 0x03C3, 0x6849, 0x6849, 0x1887, - 0x684A, 0x684A, 0x1886, 0x684B, 0x684B, 0x35F2, 0x684C, 0x684C, 0x121D, - 0x684D, 0x684D, 0x35F3, 0x684E, 0x684E, 0x187A, 0x684F, 0x684F, 0x35F4, - 0x6850, 0x6850, 0x0E5A, 0x6851, 0x6851, 0x0CDC, 0x6852, 0x6852, 0x35F5, - 0x6853, 0x6853, 0x07CD, 0x6854, 0x6854, 0x08AC, 0x6855, 0x6855, 0x1880, - 0x6856, 0x685F, 0x35F6, 0x6860, 0x6861, 0x1878, 0x6862, 0x6862, 0x187B, - 0x6863, 0x6863, 0x0596, 0x6864, 0x6864, 0x187D, 0x6865, 0x6865, 0x0C42, - 0x6866, 0x6866, 0x1881, 0x6867, 0x6867, 0x1883, 0x6868, 0x6868, 0x0881, - 0x6869, 0x6869, 0x120B, 0x686A, 0x686A, 0x3600, 0x686B, 0x686B, 0x188E, - 0x686C, 0x6873, 0x3601, 0x6874, 0x6874, 0x188B, 0x6875, 0x6875, 0x3609, - 0x6876, 0x6876, 0x0E61, 0x6877, 0x6877, 0x188C, 0x6878, 0x6880, 0x360A, - 0x6881, 0x6881, 0x0A03, 0x6882, 0x6882, 0x3613, 0x6883, 0x6883, 0x187E, - 0x6884, 0x6884, 0x3614, 0x6885, 0x6885, 0x0ABC, 0x6886, 0x6886, 0x03FB, - 0x6887, 0x688E, 0x3615, 0x688F, 0x688F, 0x188A, 0x6890, 0x6892, 0x361D, - 0x6893, 0x6893, 0x188D, 0x6894, 0x6896, 0x3620, 0x6897, 0x6897, 0x06FC, - 0x6898, 0x6898, 0x246A, 0x6899, 0x689C, 0x3623, 0x689D, 0x689D, 0x2175, - 0x689E, 0x689E, 0x3627, 0x689F, 0x689F, 0x246D, 0x68A0, 0x68A1, 0x3628, - 0x68A2, 0x68A2, 0x0D0B, 0x68A3, 0x68A5, 0x362A, 0x68A6, 0x68A6, 0x0AD3, - 0x68A7, 0x68A7, 0x0EEF, 0x68A8, 0x68A8, 0x09D1, 0x68A9, 0x68AC, 0x362D, - 0x68AD, 0x68AD, 0x0DE8, 0x68AE, 0x68AE, 0x3631, 0x68AF, 0x68AF, 0x0E30, - 0x68B0, 0x68B0, 0x0F80, 0x68B1, 0x68B2, 0x3632, 0x68B3, 0x68B3, 0x0D78, - 0x68B4, 0x68B4, 0x3634, 0x68B5, 0x68B5, 0x1889, 0x68B6, 0x68BF, 0x3635, - 0x68C0, 0x68C0, 0x085F, 0x68C1, 0x68C1, 0x363F, 0x68C2, 0x68C2, 0x188F, - 0x68C3, 0x68C8, 0x3640, 0x68C9, 0x68C9, 0x0AE3, 0x68CA, 0x68CA, 0x3646, - 0x68CB, 0x68CB, 0x0C04, 0x68CC, 0x68CC, 0x3647, 0x68CD, 0x68CD, 0x0750, - 0x68CE, 0x68D1, 0x3648, 0x68D2, 0x68D2, 0x03FF, 0x68D3, 0x68D4, 0x364C, - 0x68D5, 0x68D5, 0x1235, 0x68D6, 0x68D6, 0x246B, 0x68D7, 0x68D7, 0x225F, - 0x68D8, 0x68D8, 0x081F, 0x68D9, 0x68D9, 0x364E, 0x68DA, 0x68DA, 0x0BB0, - 0x68DB, 0x68DE, 0x364F, 0x68DF, 0x68DF, 0x1ECE, 0x68E0, 0x68E0, 0x0E17, - 0x68E1, 0x68E2, 0x3653, 0x68E3, 0x68E3, 0x189A, 0x68E4, 0x68E6, 0x3655, - 0x68E7, 0x68E7, 0x2272, 0x68E8, 0x68ED, 0x3658, 0x68EE, 0x68EE, 0x0CE6, - 0x68EF, 0x68EF, 0x365E, 0x68F0, 0x68F0, 0x1896, 0x68F1, 0x68F1, 0x09CD, - 0x68F2, 0x68F4, 0x365F, 0x68F5, 0x68F5, 0x0950, 0x68F6, 0x68F8, 0x3662, - 0x68F9, 0x68F9, 0x1894, 0x68FA, 0x68FA, 0x0730, 0x68FB, 0x68FB, 0x3665, - 0x68FC, 0x68FC, 0x1891, 0x68FD, 0x68FF, 0x3666, 0x6900, 0x6900, 0x3669, - 0x6901, 0x6901, 0x1898, 0x6902, 0x6904, 0x366A, 0x6905, 0x6905, 0x1055, - 0x6906, 0x690A, 0x366D, 0x690B, 0x690B, 0x1897, 0x690C, 0x690C, 0x3672, - 0x690D, 0x690D, 0x11B1, 0x690E, 0x690E, 0x1212, 0x690F, 0x690F, 0x2473, - 0x6910, 0x6910, 0x189B, 0x6911, 0x6911, 0x3673, 0x6912, 0x6912, 0x0888, - 0x6913, 0x691E, 0x3674, 0x691F, 0x6920, 0x1892, 0x6921, 0x6923, 0x3680, - 0x6924, 0x6924, 0x1895, 0x6925, 0x692C, 0x3683, 0x692D, 0x692D, 0x0E87, - 0x692E, 0x692F, 0x368B, 0x6930, 0x6930, 0x1033, 0x6931, 0x6933, 0x368D, - 0x6934, 0x6934, 0x18A6, 0x6935, 0x6938, 0x3690, 0x6939, 0x6939, 0x189D, - 0x693A, 0x693C, 0x3694, 0x693D, 0x693D, 0x052D, 0x693E, 0x693E, 0x3697, - 0x693F, 0x693F, 0x053E, 0x6940, 0x6941, 0x3698, 0x6942, 0x6942, 0x189F, - 0x6943, 0x6949, 0x369A, 0x694A, 0x694A, 0x21FE, 0x694B, 0x6952, 0x36A1, - 0x6953, 0x6953, 0x1EFE, 0x6954, 0x6954, 0x0F73, 0x6955, 0x6956, 0x36A9, - 0x6957, 0x6957, 0x1899, 0x6958, 0x6959, 0x36AB, 0x695A, 0x695A, 0x0523, - 0x695B, 0x695C, 0x36AD, 0x695D, 0x695D, 0x18A0, 0x695E, 0x695E, 0x09CE, - 0x695F, 0x695F, 0x36AF, 0x6960, 0x6960, 0x189E, 0x6961, 0x6962, 0x36B0, - 0x6963, 0x6963, 0x18AD, 0x6964, 0x6965, 0x36B2, 0x6966, 0x6966, 0x18AC, - 0x6967, 0x6967, 0x36B4, 0x6968, 0x6968, 0x2475, 0x6969, 0x696A, 0x36B5, - 0x696B, 0x696B, 0x18A2, 0x696C, 0x696C, 0x36B7, 0x696D, 0x696D, 0x220A, - 0x696E, 0x696E, 0x1890, 0x696F, 0x6970, 0x36B8, 0x6971, 0x6971, 0x189C, - 0x6972, 0x6974, 0x36BA, 0x6975, 0x6975, 0x1F6F, 0x6976, 0x6976, 0x36BD, - 0x6977, 0x6977, 0x0939, 0x6978, 0x6978, 0x18A5, 0x6979, 0x6979, 0x18AE, - 0x697A, 0x697B, 0x36BE, 0x697C, 0x697C, 0x0A4C, 0x697D, 0x697F, 0x36C0, - 0x6980, 0x6980, 0x18A3, 0x6981, 0x6981, 0x36C3, 0x6982, 0x6982, 0x06C0, - 0x6983, 0x6983, 0x36C4, 0x6984, 0x6984, 0x18A1, 0x6985, 0x6985, 0x36C5, - 0x6986, 0x6986, 0x10C1, 0x6987, 0x6988, 0x18A8, 0x6989, 0x6989, 0x18AB, - 0x698A, 0x698C, 0x36C6, 0x698D, 0x698D, 0x18BB, 0x698E, 0x6993, 0x36C9, - 0x6994, 0x6994, 0x09B1, 0x6995, 0x6995, 0x18B9, 0x6996, 0x6997, 0x36CF, - 0x6998, 0x6998, 0x18A4, 0x6999, 0x699A, 0x36D1, 0x699B, 0x699B, 0x18AF, - 0x699C, 0x699C, 0x03FC, 0x699D, 0x69A6, 0x36D3, 0x69A7, 0x69A7, 0x18B0, - 0x69A8, 0x69A8, 0x1146, 0x69A9, 0x69A9, 0x36DD, 0x69AA, 0x69AA, 0x2468, - 0x69AB, 0x69AB, 0x18B2, 0x69AC, 0x69AC, 0x36DE, 0x69AD, 0x69AD, 0x18B3, - 0x69AE, 0x69AE, 0x2100, 0x69AF, 0x69B0, 0x36DF, 0x69B1, 0x69B1, 0x18B5, - 0x69B2, 0x69B3, 0x36E1, 0x69B4, 0x69B4, 0x0A3A, 0x69B5, 0x69B6, 0x36E3, - 0x69B7, 0x69B7, 0x0C91, 0x69B8, 0x69BA, 0x36E5, 0x69BB, 0x69BB, 0x18B1, - 0x69BC, 0x69BE, 0x36E8, 0x69BF, 0x69BF, 0x2476, 0x69C0, 0x69C0, 0x36EB, - 0x69C1, 0x69C1, 0x18B6, 0x69C2, 0x69C9, 0x36EC, 0x69CA, 0x69CA, 0x18B7, - 0x69CB, 0x69CB, 0x1F27, 0x69CC, 0x69CC, 0x18A7, 0x69CD, 0x69CD, 0x20D7, - 0x69CE, 0x69CE, 0x18AA, 0x69CF, 0x69CF, 0x36F4, 0x69D0, 0x69D0, 0x07C6, - 0x69D1, 0x69D3, 0x36F5, 0x69D4, 0x69D4, 0x18B4, 0x69D5, 0x69DA, 0x36F8, - 0x69DB, 0x69DB, 0x086A, 0x69DC, 0x69DE, 0x36FE, 0x69DF, 0x69DF, 0x18B8, - 0x69E0, 0x69E0, 0x18BA, 0x69E1, 0x69E6, 0x3701, 0x69E7, 0x69E7, 0x247C, - 0x69E8, 0x69EC, 0x3707, 0x69ED, 0x69ED, 0x18BE, 0x69EE, 0x69F1, 0x370C, - 0x69F2, 0x69F2, 0x18C2, 0x69F3, 0x69F3, 0x1FA1, 0x69F4, 0x69FC, 0x3710, - 0x69FD, 0x69FD, 0x04A2, 0x69FE, 0x69FE, 0x3719, 0x69FF, 0x69FF, 0x18BC, - 0x6A00, 0x6A00, 0x371A, 0x6A01, 0x6A01, 0x22AA, 0x6A02, 0x6A02, 0x2005, - 0x6A03, 0x6A04, 0x371B, 0x6A05, 0x6A05, 0x246C, 0x6A06, 0x6A09, 0x371D, - 0x6A0A, 0x6A0A, 0x064B, 0x6A0B, 0x6A12, 0x3721, 0x6A13, 0x6A13, 0x203E, - 0x6A14, 0x6A16, 0x3729, 0x6A17, 0x6A18, 0x18BF, 0x6A19, 0x6A19, 0x1E4C, - 0x6A1A, 0x6A1D, 0x372C, 0x6A1E, 0x6A1E, 0x213A, 0x6A1F, 0x6A1F, 0x1162, - 0x6A20, 0x6A20, 0x3730, 0x6A21, 0x6A21, 0x0B06, 0x6A22, 0x6A22, 0x3731, - 0x6A23, 0x6A23, 0x2204, 0x6A24, 0x6A27, 0x3732, 0x6A28, 0x6A28, 0x18CC, - 0x6A29, 0x6A29, 0x3736, 0x6A2A, 0x6A2A, 0x0798, 0x6A2B, 0x6A2E, 0x3737, - 0x6A2F, 0x6A2F, 0x18BD, 0x6A30, 0x6A30, 0x373B, 0x6A31, 0x6A31, 0x1088, - 0x6A32, 0x6A34, 0x373C, 0x6A35, 0x6A35, 0x18C8, 0x6A36, 0x6A37, 0x373F, - 0x6A38, 0x6A38, 0x20C3, 0x6A39, 0x6A39, 0x2140, 0x6A3A, 0x6A3A, 0x2477, - 0x6A3B, 0x6A3C, 0x3741, 0x6A3D, 0x6A3D, 0x18CB, 0x6A3E, 0x6A3E, 0x18C4, - 0x6A3F, 0x6A43, 0x3743, 0x6A44, 0x6A44, 0x18C3, 0x6A45, 0x6A46, 0x3748, - 0x6A47, 0x6A47, 0x0C3E, 0x6A48, 0x6A48, 0x2474, 0x6A49, 0x6A4A, 0x374A, - 0x6A4B, 0x6A4B, 0x20DD, 0x6A4C, 0x6A4F, 0x374C, 0x6A50, 0x6A50, 0x18C6, - 0x6A51, 0x6A57, 0x3750, 0x6A58, 0x6A58, 0x18CD, 0x6A59, 0x6A59, 0x04ED, - 0x6A5A, 0x6A5A, 0x3757, 0x6A5B, 0x6A5B, 0x18C7, 0x6A5C, 0x6A5E, 0x3758, - 0x6A5F, 0x6A5F, 0x1F68, 0x6A60, 0x6A60, 0x375B, 0x6A61, 0x6A61, 0x0F5D, - 0x6A62, 0x6A62, 0x2185, 0x6A63, 0x6A64, 0x375C, 0x6A65, 0x6A65, 0x18C1, - 0x6A66, 0x6A70, 0x375E, 0x6A71, 0x6A71, 0x051C, 0x6A72, 0x6A78, 0x3769, - 0x6A79, 0x6A79, 0x18CA, 0x6A7A, 0x6A7B, 0x3770, 0x6A7C, 0x6A7C, 0x18CE, - 0x6A7D, 0x6A7F, 0x3772, 0x6A80, 0x6A80, 0x0E07, 0x6A81, 0x6A83, 0x3775, - 0x6A84, 0x6A84, 0x0F1A, 0x6A85, 0x6A88, 0x3778, 0x6A89, 0x6A89, 0x2472, - 0x6A8A, 0x6A8D, 0x377C, 0x6A8E, 0x6A8E, 0x18C9, 0x6A8F, 0x6A8F, 0x3780, - 0x6A90, 0x6A90, 0x18D0, 0x6A91, 0x6A91, 0x18CF, 0x6A92, 0x6A93, 0x3781, - 0x6A94, 0x6A94, 0x1EB5, 0x6A95, 0x6A96, 0x3783, 0x6A97, 0x6A97, 0x18D2, - 0x6A98, 0x6A9B, 0x3785, 0x6A9C, 0x6A9C, 0x2478, 0x6A9D, 0x6A9F, 0x3789, - 0x6AA0, 0x6AA0, 0x18C5, 0x6AA1, 0x6AA1, 0x378C, 0x6AA2, 0x6AA2, 0x1F8B, - 0x6AA3, 0x6AA3, 0x2484, 0x6AA4, 0x6AA8, 0x378D, 0x6AA9, 0x6AA9, 0x18D1, - 0x6AAA, 0x6AAA, 0x3792, 0x6AAB, 0x6AAB, 0x18D3, 0x6AAC, 0x6AAC, 0x0ACF, - 0x6AAD, 0x6AAE, 0x3793, 0x6AAF, 0x6AAF, 0x2699, 0x6AB0, 0x6AB2, 0x3795, - 0x6AB3, 0x6AB3, 0x2482, 0x6AB4, 0x6AB7, 0x3798, 0x6AB8, 0x6AB8, 0x20A1, - 0x6AB9, 0x6ABA, 0x379C, 0x6ABB, 0x6ABB, 0x1F92, 0x6ABC, 0x6AC2, 0x379E, - 0x6AC3, 0x6AC3, 0x1F38, 0x6AC4, 0x6AD2, 0x37A5, 0x6AD3, 0x6AD3, 0x2485, - 0x6AD4, 0x6AD9, 0x37B4, 0x6ADA, 0x6ADA, 0x2480, 0x6ADB, 0x6ADB, 0x246E, - 0x6ADC, 0x6ADC, 0x37BA, 0x6ADD, 0x6ADD, 0x247B, 0x6ADE, 0x6ADE, 0x2486, - 0x6ADF, 0x6ADF, 0x2471, 0x6AE0, 0x6AE6, 0x37BB, 0x6AE7, 0x6AE7, 0x2483, - 0x6AE8, 0x6AE8, 0x2470, 0x6AE9, 0x6AE9, 0x37C2, 0x6AEA, 0x6AEA, 0x2469, - 0x6AEB, 0x6AEB, 0x37C3, 0x6AEC, 0x6AEC, 0x247F, 0x6AED, 0x6AF2, 0x37C4, - 0x6AF3, 0x6AF3, 0x246F, 0x6AF4, 0x6AF7, 0x37CA, 0x6AF8, 0x6AF8, 0x2481, - 0x6AF9, 0x6AFA, 0x37CE, 0x6AFB, 0x6AFB, 0x2220, 0x6AFC, 0x6AFF, 0x37D0, - 0x6B00, 0x6B03, 0x37D4, 0x6B04, 0x6B04, 0x1FF5, 0x6B05, 0x6B09, 0x37D8, - 0x6B0A, 0x6B0A, 0x20F4, 0x6B0B, 0x6B0E, 0x37DD, 0x6B0F, 0x6B0F, 0x247D, - 0x6B10, 0x6B11, 0x37E1, 0x6B12, 0x6B12, 0x2479, 0x6B13, 0x6B15, 0x37E3, - 0x6B16, 0x6B16, 0x247E, 0x6B17, 0x6B1D, 0x37E6, 0x6B1E, 0x6B1E, 0x247A, - 0x6B1F, 0x6B1F, 0x37ED, 0x6B20, 0x6B20, 0x0C34, 0x6B21, 0x6B21, 0x0551, - 0x6B22, 0x6B22, 0x07CB, 0x6B23, 0x6B23, 0x0F8B, 0x6B24, 0x6B24, 0x19B1, - 0x6B25, 0x6B26, 0x37EE, 0x6B27, 0x6B27, 0x0B78, 0x6B28, 0x6B31, 0x37F0, - 0x6B32, 0x6B32, 0x10E0, 0x6B33, 0x6B36, 0x37FA, 0x6B37, 0x6B37, 0x19B2, - 0x6B38, 0x6B38, 0x37FE, 0x6B39, 0x6B39, 0x19B3, 0x6B3A, 0x6B3A, 0x0BFA, - 0x6B3B, 0x6B3C, 0x37FF, 0x6B3D, 0x6B3D, 0x20E3, 0x6B3E, 0x6B3E, 0x097B, - 0x6B3F, 0x6B42, 0x3801, 0x6B43, 0x6B43, 0x19B4, 0x6B44, 0x6B45, 0x3805, - 0x6B46, 0x6B46, 0x19B5, 0x6B47, 0x6B47, 0x0F75, 0x6B48, 0x6B48, 0x3807, - 0x6B49, 0x6B49, 0x0C35, 0x6B4A, 0x6B4B, 0x3808, 0x6B4C, 0x6B4C, 0x06E3, - 0x6B4D, 0x6B4F, 0x380A, 0x6B50, 0x6B50, 0x20AD, 0x6B51, 0x6B58, 0x380D, - 0x6B59, 0x6B59, 0x19B6, 0x6B5A, 0x6B5E, 0x3815, 0x6B5F, 0x6B5F, 0x24CB, - 0x6B60, 0x6B60, 0x381A, 0x6B61, 0x6B61, 0x1F53, 0x6B62, 0x6B62, 0x11B8, - 0x6B63, 0x6B63, 0x119E, 0x6B64, 0x6B64, 0x054E, 0x6B65, 0x6B65, 0x0484, - 0x6B66, 0x6B66, 0x0EF3, 0x6B67, 0x6B67, 0x0C06, 0x6B68, 0x6B69, 0x381B, - 0x6B6A, 0x6B6A, 0x0E92, 0x6B6B, 0x6B71, 0x381D, 0x6B72, 0x6B72, 0x2159, - 0x6B73, 0x6B76, 0x3824, 0x6B77, 0x6B77, 0x2013, 0x6B78, 0x6B78, 0x1F33, - 0x6B79, 0x6B79, 0x0578, 0x6B7A, 0x6B7A, 0x3828, 0x6B7B, 0x6B7B, 0x0DB5, - 0x6B7C, 0x6B7C, 0x0852, 0x6B7D, 0x6B80, 0x3829, 0x6B81, 0x6B82, 0x18D6, - 0x6B83, 0x6B83, 0x1013, 0x6B84, 0x6B84, 0x18D9, 0x6B85, 0x6B85, 0x382D, - 0x6B86, 0x6B86, 0x057C, 0x6B87, 0x6B87, 0x18D8, 0x6B88, 0x6B88, 0x382E, - 0x6B89, 0x6B89, 0x0FDC, 0x6B8A, 0x6B8A, 0x0D79, 0x6B8B, 0x6B8B, 0x0497, - 0x6B8C, 0x6B8C, 0x382F, 0x6B8D, 0x6B8D, 0x18DC, 0x6B8E, 0x6B91, 0x3830, - 0x6B92, 0x6B93, 0x18DA, 0x6B94, 0x6B95, 0x3834, 0x6B96, 0x6B96, 0x11B2, - 0x6B97, 0x6B97, 0x3836, 0x6B98, 0x6B98, 0x1E5C, 0x6B99, 0x6B99, 0x3837, - 0x6B9A, 0x6B9B, 0x18DD, 0x6B9C, 0x6B9D, 0x3838, 0x6B9E, 0x6B9E, 0x2488, - 0x6B9F, 0x6BA0, 0x383A, 0x6BA1, 0x6BA1, 0x18DF, 0x6BA2, 0x6BA3, 0x383C, - 0x6BA4, 0x6BA4, 0x2487, 0x6BA5, 0x6BA9, 0x383E, 0x6BAA, 0x6BAA, 0x18E0, - 0x6BAB, 0x6BAB, 0x248A, 0x6BAC, 0x6BAD, 0x3843, 0x6BAE, 0x6BAE, 0x2489, - 0x6BAF, 0x6BAF, 0x248B, 0x6BB0, 0x6BB1, 0x3845, 0x6BB2, 0x6BB2, 0x1F83, - 0x6BB3, 0x6BB3, 0x19BD, 0x6BB4, 0x6BB4, 0x0B7A, 0x6BB5, 0x6BB5, 0x060D, - 0x6BB6, 0x6BB6, 0x3847, 0x6BB7, 0x6BB7, 0x107A, 0x6BB8, 0x6BB9, 0x3848, - 0x6BBA, 0x6BBA, 0x210F, 0x6BBB, 0x6BBB, 0x1FDB, 0x6BBC, 0x6BBE, 0x384A, - 0x6BBF, 0x6BBF, 0x05CF, 0x6BC0, 0x6BC0, 0x384D, 0x6BC1, 0x6BC1, 0x07EE, - 0x6BC2, 0x6BC2, 0x19BF, 0x6BC3, 0x6BC4, 0x384E, 0x6BC5, 0x6BC5, 0x106A, - 0x6BC6, 0x6BC6, 0x20AF, 0x6BC7, 0x6BCA, 0x3850, 0x6BCB, 0x6BCB, 0x0EF2, - 0x6BCC, 0x6BCC, 0x3854, 0x6BCD, 0x6BCD, 0x0B1B, 0x6BCE, 0x6BCE, 0x3855, - 0x6BCF, 0x6BCF, 0x0AC4, 0x6BD0, 0x6BD1, 0x3856, 0x6BD2, 0x6BD2, 0x05FD, - 0x6BD3, 0x6BD3, 0x126F, 0x6BD4, 0x6BD4, 0x0431, 0x6BD5, 0x6BD5, 0x0438, - 0x6BD6, 0x6BD6, 0x043A, 0x6BD7, 0x6BD7, 0x0BBF, 0x6BD8, 0x6BD8, 0x3858, - 0x6BD9, 0x6BD9, 0x0439, 0x6BDA, 0x6BDA, 0x3859, 0x6BDB, 0x6BDB, 0x0AB0, - 0x6BDC, 0x6BE0, 0x385A, 0x6BE1, 0x6BE1, 0x1152, 0x6BE2, 0x6BE9, 0x385F, - 0x6BEA, 0x6BEA, 0x1954, 0x6BEB, 0x6BEB, 0x0778, 0x6BEC, 0x6BEE, 0x3867, - 0x6BEF, 0x6BEF, 0x0E0D, 0x6BF0, 0x6BF2, 0x386A, 0x6BF3, 0x6BF3, 0x1955, - 0x6BF4, 0x6BF4, 0x386D, 0x6BF5, 0x6BF5, 0x1957, 0x6BF6, 0x6BF8, 0x386E, - 0x6BF9, 0x6BF9, 0x1958, 0x6BFA, 0x6BFC, 0x3871, 0x6BFD, 0x6BFD, 0x1956, - 0x6BFE, 0x6BFE, 0x3874, 0x6BFF, 0x6BFF, 0x24C0, 0x6C00, 0x6C04, 0x3875, - 0x6C05, 0x6C05, 0x1959, 0x6C06, 0x6C06, 0x195B, 0x6C07, 0x6C07, 0x195A, - 0x6C08, 0x6C08, 0x226D, 0x6C09, 0x6C0B, 0x387A, 0x6C0C, 0x6C0C, 0x24C1, - 0x6C0D, 0x6C0D, 0x195C, 0x6C0E, 0x6C0E, 0x387D, 0x6C0F, 0x6C0F, 0x0D66, - 0x6C10, 0x6C10, 0x126B, 0x6C11, 0x6C11, 0x0AF6, 0x6C12, 0x6C12, 0x387E, - 0x6C13, 0x6C13, 0x0AAA, 0x6C14, 0x6C14, 0x0C17, 0x6C15, 0x6C15, 0x195D, - 0x6C16, 0x6C16, 0x0B2D, 0x6C17, 0x6C17, 0x387F, 0x6C18, 0x6C1A, 0x195E, - 0x6C1B, 0x6C1B, 0x0672, 0x6C1C, 0x6C1E, 0x3880, 0x6C1F, 0x6C1F, 0x0697, - 0x6C20, 0x6C20, 0x3883, 0x6C21, 0x6C21, 0x1961, 0x6C22, 0x6C22, 0x0C5F, - 0x6C23, 0x6C23, 0x20CA, 0x6C24, 0x6C24, 0x1963, 0x6C25, 0x6C25, 0x3884, - 0x6C26, 0x6C26, 0x075B, 0x6C27, 0x6C27, 0x101E, 0x6C28, 0x6C28, 0x03BC, - 0x6C29, 0x6C29, 0x1962, 0x6C2A, 0x6C2A, 0x1964, 0x6C2B, 0x6C2B, 0x20E7, - 0x6C2C, 0x6C2C, 0x24C2, 0x6C2D, 0x6C2D, 0x3885, 0x6C2E, 0x6C2E, 0x058B, - 0x6C2F, 0x6C2F, 0x0A6F, 0x6C30, 0x6C30, 0x0C65, 0x6C31, 0x6C31, 0x3886, - 0x6C32, 0x6C32, 0x1965, 0x6C33, 0x6C33, 0x3887, 0x6C34, 0x6C34, 0x0DA3, - 0x6C35, 0x6C35, 0x169F, 0x6C36, 0x6C37, 0x3888, 0x6C38, 0x6C38, 0x10A5, - 0x6C39, 0x6C3C, 0x388A, 0x6C3D, 0x6C3D, 0x12EF, 0x6C3E, 0x6C3F, 0x388E, - 0x6C40, 0x6C40, 0x0E52, 0x6C41, 0x6C41, 0x11AC, 0x6C42, 0x6C42, 0x0C70, - 0x6C43, 0x6C45, 0x3890, 0x6C46, 0x6C46, 0x12F4, 0x6C47, 0x6C47, 0x07F8, - 0x6C48, 0x6C48, 0x3893, 0x6C49, 0x6C49, 0x0771, 0x6C4A, 0x6C4A, 0x16A2, - 0x6C4B, 0x6C4F, 0x3894, 0x6C50, 0x6C50, 0x0F18, 0x6C51, 0x6C53, 0x3899, - 0x6C54, 0x6C54, 0x16A0, 0x6C55, 0x6C55, 0x0D00, 0x6C56, 0x6C56, 0x389C, - 0x6C57, 0x6C57, 0x0770, 0x6C58, 0x6C5A, 0x389D, 0x6C5B, 0x6C5B, 0x0FDD, - 0x6C5C, 0x6C5C, 0x16A1, 0x6C5D, 0x6C5D, 0x0CC5, 0x6C5E, 0x6C5E, 0x0708, - 0x6C5F, 0x6C5F, 0x087E, 0x6C60, 0x6C60, 0x04FD, 0x6C61, 0x6C61, 0x0EEA, - 0x6C62, 0x6C63, 0x38A0, 0x6C64, 0x6C64, 0x0E13, 0x6C65, 0x6C67, 0x38A2, - 0x6C68, 0x6C69, 0x16A8, 0x6C6A, 0x6C6A, 0x0EA5, 0x6C6B, 0x6C6F, 0x38A5, - 0x6C70, 0x6C70, 0x0E00, 0x6C71, 0x6C71, 0x38AA, 0x6C72, 0x6C72, 0x0826, - 0x6C73, 0x6C73, 0x38AB, 0x6C74, 0x6C74, 0x16AA, 0x6C75, 0x6C75, 0x38AC, - 0x6C76, 0x6C76, 0x16AB, 0x6C77, 0x6C78, 0x38AD, 0x6C79, 0x6C79, 0x0FA5, - 0x6C7A, 0x6C7C, 0x38AF, 0x6C7D, 0x6C7D, 0x0C1A, 0x6C7E, 0x6C7E, 0x0677, - 0x6C7F, 0x6C80, 0x38B2, 0x6C81, 0x6C81, 0x0C5C, 0x6C82, 0x6C82, 0x1051, - 0x6C83, 0x6C83, 0x0EE5, 0x6C84, 0x6C84, 0x38B4, 0x6C85, 0x6C85, 0x16A4, - 0x6C86, 0x6C86, 0x16AC, 0x6C87, 0x6C87, 0x38B5, 0x6C88, 0x6C88, 0x0D2B, - 0x6C89, 0x6C89, 0x04E6, 0x6C8A, 0x6C8B, 0x38B6, 0x6C8C, 0x6C8C, 0x16A7, - 0x6C8D, 0x6C8E, 0x38B8, 0x6C8F, 0x6C8F, 0x0C02, 0x6C90, 0x6C90, 0x16A5, - 0x6C91, 0x6C92, 0x38BA, 0x6C93, 0x6C93, 0x1A1F, 0x6C94, 0x6C94, 0x16A6, - 0x6C95, 0x6C98, 0x38BC, 0x6C99, 0x6C99, 0x0CEC, 0x6C9A, 0x6C9A, 0x38C0, - 0x6C9B, 0x6C9B, 0x0BA7, 0x6C9C, 0x6C9E, 0x38C1, 0x6C9F, 0x6C9F, 0x070E, - 0x6CA0, 0x6CA0, 0x38C4, 0x6CA1, 0x6CA1, 0x0AC0, 0x6CA2, 0x6CA2, 0x38C5, - 0x6CA3, 0x6CA3, 0x16A3, 0x6CA4, 0x6CA4, 0x0B7E, 0x6CA5, 0x6CA5, 0x09ED, - 0x6CA6, 0x6CA6, 0x0A80, 0x6CA7, 0x6CA7, 0x049E, 0x6CA8, 0x6CA8, 0x38C6, - 0x6CA9, 0x6CA9, 0x16AD, 0x6CAA, 0x6CAA, 0x07BB, 0x6CAB, 0x6CAB, 0x0B10, - 0x6CAC, 0x6CAC, 0x38C7, 0x6CAD, 0x6CAD, 0x16B0, 0x6CAE, 0x6CAE, 0x0909, - 0x6CAF, 0x6CB0, 0x38C8, 0x6CB1, 0x6CB1, 0x16BB, 0x6CB2, 0x6CB2, 0x16B5, - 0x6CB3, 0x6CB3, 0x078A, 0x6CB4, 0x6CB7, 0x38CA, 0x6CB8, 0x6CB8, 0x066D, - 0x6CB9, 0x6CB9, 0x10B2, 0x6CBA, 0x6CBA, 0x38CE, 0x6CBB, 0x6CBB, 0x11CD, - 0x6CBC, 0x6CBC, 0x1174, 0x6CBD, 0x6CBD, 0x071A, 0x6CBE, 0x6CBE, 0x1155, - 0x6CBF, 0x6CBF, 0x1001, 0x6CC0, 0x6CC3, 0x38CF, 0x6CC4, 0x6CC4, 0x0F84, - 0x6CC5, 0x6CC5, 0x0C73, 0x6CC6, 0x6CC8, 0x38D3, 0x6CC9, 0x6CC9, 0x0C85, - 0x6CCA, 0x6CCA, 0x047B, 0x6CCB, 0x6CCB, 0x38D6, 0x6CCC, 0x6CCC, 0x0ADF, - 0x6CCD, 0x6CCF, 0x38D7, 0x6CD0, 0x6CD0, 0x16AE, 0x6CD1, 0x6CD2, 0x38DA, - 0x6CD3, 0x6CD3, 0x16BC, 0x6CD4, 0x6CD4, 0x16AF, 0x6CD5, 0x6CD5, 0x0645, - 0x6CD6, 0x6CD6, 0x16B7, 0x6CD7, 0x6CD7, 0x16B4, 0x6CD8, 0x6CDA, 0x38DC, - 0x6CDB, 0x6CDB, 0x0657, 0x6CDC, 0x6CDD, 0x38DF, 0x6CDE, 0x6CDE, 0x0B63, - 0x6CDF, 0x6CDF, 0x38E1, 0x6CE0, 0x6CE0, 0x16B6, 0x6CE1, 0x6CE1, 0x0B9E, - 0x6CE2, 0x6CE2, 0x046F, 0x6CE3, 0x6CE3, 0x0C1B, 0x6CE4, 0x6CE4, 0x38E2, - 0x6CE5, 0x6CE5, 0x0B43, 0x6CE6, 0x6CE7, 0x38E3, 0x6CE8, 0x6CE8, 0x11FF, - 0x6CE9, 0x6CE9, 0x38E5, 0x6CEA, 0x6CEA, 0x09CC, 0x6CEB, 0x6CEB, 0x16B9, - 0x6CEC, 0x6CED, 0x38E6, 0x6CEE, 0x6CEE, 0x16BA, 0x6CEF, 0x6CEF, 0x16BD, - 0x6CF0, 0x6CF0, 0x0DFC, 0x6CF1, 0x6CF1, 0x16B3, 0x6CF2, 0x6CF2, 0x38E8, - 0x6CF3, 0x6CF3, 0x10A3, 0x6CF4, 0x6CF4, 0x38E9, 0x6CF5, 0x6CF5, 0x042C, - 0x6CF6, 0x6CF6, 0x1A20, 0x6CF7, 0x6CF8, 0x16B1, 0x6CF9, 0x6CF9, 0x38EA, - 0x6CFA, 0x6CFA, 0x16B8, 0x6CFB, 0x6CFB, 0x0F85, 0x6CFC, 0x6CFC, 0x0BE2, - 0x6CFD, 0x6CFD, 0x1136, 0x6CFE, 0x6CFE, 0x16BE, 0x6CFF, 0x6CFF, 0x38EB, - 0x6D00, 0x6D00, 0x38EC, 0x6D01, 0x6D01, 0x08B1, 0x6D02, 0x6D03, 0x38ED, - 0x6D04, 0x6D04, 0x16C5, 0x6D05, 0x6D06, 0x38EF, 0x6D07, 0x6D07, 0x16C4, - 0x6D08, 0x6D0A, 0x38F1, 0x6D0B, 0x6D0B, 0x101C, 0x6D0C, 0x6D0C, 0x16C1, - 0x6D0D, 0x6D0D, 0x38F4, 0x6D0E, 0x6D0E, 0x16C7, 0x6D0F, 0x6D11, 0x38F5, - 0x6D12, 0x6D12, 0x0CD2, 0x6D13, 0x6D16, 0x38F8, 0x6D17, 0x6D17, 0x0F21, - 0x6D18, 0x6D18, 0x38FC, 0x6D19, 0x6D19, 0x16C6, 0x6D1A, 0x6D1A, 0x16CC, - 0x6D1B, 0x6D1B, 0x0A8C, 0x6D1C, 0x6D1D, 0x38FD, 0x6D1E, 0x6D1E, 0x05F3, - 0x6D1F, 0x6D24, 0x38FF, 0x6D25, 0x6D25, 0x08C3, 0x6D26, 0x6D26, 0x3905, - 0x6D27, 0x6D27, 0x16C0, 0x6D28, 0x6D29, 0x3906, 0x6D2A, 0x6D2A, 0x07A0, - 0x6D2B, 0x6D2B, 0x16C8, 0x6D2C, 0x6D2D, 0x3908, 0x6D2E, 0x6D2E, 0x16CA, - 0x6D2F, 0x6D30, 0x390A, 0x6D31, 0x6D31, 0x063C, 0x6D32, 0x6D32, 0x11DD, - 0x6D33, 0x6D33, 0x16D0, 0x6D34, 0x6D34, 0x390C, 0x6D35, 0x6D35, 0x16CB, - 0x6D36, 0x6D38, 0x390D, 0x6D39, 0x6D39, 0x16BF, 0x6D3A, 0x6D3A, 0x3910, - 0x6D3B, 0x6D3B, 0x0803, 0x6D3C, 0x6D3C, 0x0E8E, 0x6D3D, 0x6D3D, 0x0C1F, - 0x6D3E, 0x6D3E, 0x0B8A, 0x6D3F, 0x6D40, 0x3911, 0x6D41, 0x6D41, 0x0A40, - 0x6D42, 0x6D42, 0x3913, 0x6D43, 0x6D43, 0x16C2, 0x6D44, 0x6D44, 0x3914, - 0x6D45, 0x6D45, 0x0C30, 0x6D46, 0x6D46, 0x087D, 0x6D47, 0x6D47, 0x088E, - 0x6D48, 0x6D48, 0x16C3, 0x6D49, 0x6D49, 0x3915, 0x6D4A, 0x6D4A, 0x1224, - 0x6D4B, 0x6D4B, 0x04A9, 0x6D4C, 0x6D4C, 0x3916, 0x6D4D, 0x6D4D, 0x16C9, - 0x6D4E, 0x6D4E, 0x0836, 0x6D4F, 0x6D4F, 0x16CD, 0x6D50, 0x6D50, 0x3917, - 0x6D51, 0x6D51, 0x0800, 0x6D52, 0x6D52, 0x16CE, 0x6D53, 0x6D53, 0x0B69, - 0x6D54, 0x6D54, 0x16CF, 0x6D55, 0x6D58, 0x3918, 0x6D59, 0x6D59, 0x1184, - 0x6D5A, 0x6D5A, 0x0930, 0x6D5B, 0x6D5B, 0x391C, 0x6D5C, 0x6D5C, 0x16D8, - 0x6D5D, 0x6D5D, 0x391D, 0x6D5E, 0x6D5E, 0x16D5, 0x6D5F, 0x6D5F, 0x391E, - 0x6D60, 0x6D60, 0x16D9, 0x6D61, 0x6D62, 0x391F, 0x6D63, 0x6D63, 0x16DB, - 0x6D64, 0x6D65, 0x3921, 0x6D66, 0x6D66, 0x0BF5, 0x6D67, 0x6D68, 0x3923, - 0x6D69, 0x6D69, 0x077D, 0x6D6A, 0x6D6A, 0x09B6, 0x6D6B, 0x6D6D, 0x3925, - 0x6D6E, 0x6D6E, 0x069C, 0x6D6F, 0x6D6F, 0x16D2, 0x6D70, 0x6D73, 0x3928, - 0x6D74, 0x6D74, 0x10E4, 0x6D75, 0x6D76, 0x392C, 0x6D77, 0x6D77, 0x075A, - 0x6D78, 0x6D78, 0x08CF, 0x6D79, 0x6D79, 0x23DC, 0x6D7A, 0x6D7B, 0x392E, - 0x6D7C, 0x6D7C, 0x16DA, 0x6D7D, 0x6D81, 0x3930, 0x6D82, 0x6D82, 0x0E70, - 0x6D83, 0x6D84, 0x3935, 0x6D85, 0x6D85, 0x0B5C, 0x6D86, 0x6D86, 0x3937, - 0x6D87, 0x6D87, 0x23DB, 0x6D88, 0x6D88, 0x0F68, 0x6D89, 0x6D89, 0x0D1F, - 0x6D8A, 0x6D8B, 0x3938, 0x6D8C, 0x6D8C, 0x10A4, 0x6D8D, 0x6D8D, 0x393A, - 0x6D8E, 0x6D8E, 0x0F3E, 0x6D8F, 0x6D90, 0x393B, 0x6D91, 0x6D91, 0x16D1, - 0x6D92, 0x6D92, 0x393D, 0x6D93, 0x6D94, 0x16D6, 0x6D95, 0x6D95, 0x0E3C, - 0x6D96, 0x6D9A, 0x393E, 0x6D9B, 0x6D9B, 0x0E21, 0x6D9C, 0x6D9C, 0x3943, - 0x6D9D, 0x6D9D, 0x09BF, 0x6D9E, 0x6D9E, 0x16D3, 0x6D9F, 0x6D9F, 0x09F9, - 0x6DA0, 0x6DA0, 0x16D4, 0x6DA1, 0x6DA1, 0x0EDF, 0x6DA2, 0x6DA2, 0x3944, - 0x6DA3, 0x6DA3, 0x07D6, 0x6DA4, 0x6DA4, 0x05B4, 0x6DA5, 0x6DA5, 0x3945, - 0x6DA6, 0x6DA6, 0x0CCE, 0x6DA7, 0x6DA7, 0x0878, 0x6DA8, 0x6DA8, 0x1168, - 0x6DA9, 0x6DA9, 0x0CE5, 0x6DAA, 0x6DAA, 0x069D, 0x6DAB, 0x6DAB, 0x16E8, - 0x6DAC, 0x6DAD, 0x3946, 0x6DAE, 0x6DAE, 0x16EA, 0x6DAF, 0x6DAF, 0x0FED, - 0x6DB0, 0x6DB1, 0x3948, 0x6DB2, 0x6DB2, 0x1041, 0x6DB3, 0x6DB4, 0x394A, - 0x6DB5, 0x6DB5, 0x0764, 0x6DB6, 0x6DB7, 0x394C, 0x6DB8, 0x6DB8, 0x078B, - 0x6DB9, 0x6DBE, 0x394E, 0x6DBF, 0x6DBF, 0x16E1, 0x6DC0, 0x6DC0, 0x05CE, - 0x6DC1, 0x6DC3, 0x3954, 0x6DC4, 0x6DC4, 0x122A, 0x6DC5, 0x6DC5, 0x16DE, - 0x6DC6, 0x6DC6, 0x0F6A, 0x6DC7, 0x6DC7, 0x16DD, 0x6DC8, 0x6DCA, 0x3957, - 0x6DCB, 0x6DCB, 0x0A25, 0x6DCC, 0x6DCC, 0x0E1D, 0x6DCD, 0x6DD0, 0x395A, - 0x6DD1, 0x6DD1, 0x0D7E, 0x6DD2, 0x6DD5, 0x395E, 0x6DD6, 0x6DD6, 0x0B3A, - 0x6DD7, 0x6DD7, 0x3962, 0x6DD8, 0x6DD8, 0x0E27, 0x6DD9, 0x6DD9, 0x16E6, - 0x6DDA, 0x6DDC, 0x3963, 0x6DDD, 0x6DDD, 0x16E5, 0x6DDE, 0x6DDE, 0x16DF, - 0x6DDF, 0x6DDF, 0x3966, 0x6DE0, 0x6DE0, 0x16E2, 0x6DE1, 0x6DE1, 0x058E, - 0x6DE2, 0x6DE3, 0x3967, 0x6DE4, 0x6DE4, 0x10BE, 0x6DE5, 0x6DE5, 0x3969, - 0x6DE6, 0x6DE6, 0x16E4, 0x6DE7, 0x6DE9, 0x396A, 0x6DEA, 0x6DEA, 0x205E, - 0x6DEB, 0x6DEB, 0x1080, 0x6DEC, 0x6DEC, 0x0566, 0x6DED, 0x6DED, 0x396D, - 0x6DEE, 0x6DEE, 0x07C9, 0x6DEF, 0x6DF0, 0x396E, 0x6DF1, 0x6DF1, 0x0D27, - 0x6DF2, 0x6DF2, 0x3970, 0x6DF3, 0x6DF3, 0x0541, 0x6DF4, 0x6DF4, 0x3971, - 0x6DF5, 0x6DF5, 0x2244, 0x6DF6, 0x6DF6, 0x23E2, 0x6DF7, 0x6DF7, 0x0801, - 0x6DF8, 0x6DF8, 0x3972, 0x6DF9, 0x6DF9, 0x0FF6, 0x6DFA, 0x6DFA, 0x20D4, - 0x6DFB, 0x6DFB, 0x0E40, 0x6DFC, 0x6DFC, 0x1A21, 0x6DFD, 0x6DFF, 0x3973, - 0x6E00, 0x6E04, 0x3976, 0x6E05, 0x6E05, 0x0C62, 0x6E06, 0x6E09, 0x397B, - 0x6E0A, 0x6E0A, 0x10EB, 0x6E0B, 0x6E0B, 0x397F, 0x6E0C, 0x6E0C, 0x16E9, - 0x6E0D, 0x6E0D, 0x1232, 0x6E0E, 0x6E0E, 0x16E0, 0x6E0F, 0x6E0F, 0x3980, - 0x6E10, 0x6E10, 0x0876, 0x6E11, 0x6E11, 0x16E3, 0x6E12, 0x6E13, 0x3981, - 0x6E14, 0x6E14, 0x10CB, 0x6E15, 0x6E15, 0x3983, 0x6E16, 0x6E16, 0x16E7, - 0x6E17, 0x6E17, 0x0D31, 0x6E18, 0x6E19, 0x3984, 0x6E1A, 0x6E1A, 0x16DC, - 0x6E1B, 0x6E1C, 0x3986, 0x6E1D, 0x6E1D, 0x10CA, 0x6E1E, 0x6E1F, 0x3988, - 0x6E20, 0x6E20, 0x0C7B, 0x6E21, 0x6E21, 0x0608, 0x6E22, 0x6E22, 0x398A, - 0x6E23, 0x6E23, 0x113F, 0x6E24, 0x6E24, 0x047A, 0x6E25, 0x6E25, 0x16F5, - 0x6E26, 0x6E26, 0x219F, 0x6E27, 0x6E28, 0x398B, 0x6E29, 0x6E29, 0x0ED1, - 0x6E2A, 0x6E2A, 0x398D, 0x6E2B, 0x6E2B, 0x16EB, 0x6E2C, 0x6E2C, 0x1E66, - 0x6E2D, 0x6E2D, 0x0ECB, 0x6E2E, 0x6E2E, 0x398E, 0x6E2F, 0x6E2F, 0x06D6, - 0x6E30, 0x6E31, 0x398F, 0x6E32, 0x6E32, 0x16F4, 0x6E33, 0x6E33, 0x3991, - 0x6E34, 0x6E34, 0x0957, 0x6E35, 0x6E37, 0x3992, 0x6E38, 0x6E38, 0x10B3, - 0x6E39, 0x6E39, 0x3995, 0x6E3A, 0x6E3A, 0x0AF1, 0x6E3B, 0x6E3D, 0x3996, - 0x6E3E, 0x6E3E, 0x1F63, 0x6E3F, 0x6E42, 0x3999, 0x6E43, 0x6E43, 0x0B89, - 0x6E44, 0x6E44, 0x16F6, 0x6E45, 0x6E4C, 0x399D, 0x6E4D, 0x6E4D, 0x0E75, - 0x6E4E, 0x6E4E, 0x16ED, 0x6E4F, 0x6E52, 0x39A5, 0x6E53, 0x6E54, 0x16F2, - 0x6E55, 0x6E55, 0x39A9, 0x6E56, 0x6E56, 0x07B5, 0x6E57, 0x6E57, 0x39AA, - 0x6E58, 0x6E58, 0x0F53, 0x6E59, 0x6E5A, 0x39AB, 0x6E5B, 0x6E5B, 0x1160, - 0x6E5C, 0x6E5D, 0x39AD, 0x6E5E, 0x6E5E, 0x23DD, 0x6E5F, 0x6E5F, 0x16F0, - 0x6E60, 0x6E6A, 0x39AF, 0x6E6B, 0x6E6B, 0x16EE, 0x6E6C, 0x6E6D, 0x39BA, - 0x6E6E, 0x6E6E, 0x16EC, 0x6E6F, 0x6E6F, 0x216B, 0x6E70, 0x6E7D, 0x39BC, - 0x6E7E, 0x6E7E, 0x0E96, 0x6E7F, 0x6E7F, 0x0D41, 0x6E80, 0x6E82, 0x39CA, - 0x6E83, 0x6E83, 0x098E, 0x6E84, 0x6E84, 0x39CD, 0x6E85, 0x6E85, 0x0877, - 0x6E86, 0x6E86, 0x16F1, 0x6E87, 0x6E88, 0x39CE, 0x6E89, 0x6E89, 0x06C3, - 0x6E8A, 0x6E8E, 0x39D0, 0x6E8F, 0x6E8F, 0x1705, 0x6E90, 0x6E90, 0x10F7, - 0x6E91, 0x6E95, 0x39D5, 0x6E96, 0x6E96, 0x22B5, 0x6E97, 0x6E97, 0x39DA, - 0x6E98, 0x6E98, 0x16F9, 0x6E99, 0x6E9B, 0x39DB, 0x6E9C, 0x6E9C, 0x0A38, - 0x6E9D, 0x6E9D, 0x1F26, 0x6E9E, 0x6E9E, 0x39DE, 0x6E9F, 0x6E9F, 0x1707, - 0x6EA0, 0x6EA1, 0x39DF, 0x6EA2, 0x6EA2, 0x106E, 0x6EA3, 0x6EA4, 0x39E1, - 0x6EA5, 0x6EA5, 0x16FD, 0x6EA6, 0x6EA6, 0x39E3, 0x6EA7, 0x6EA7, 0x16FE, - 0x6EA8, 0x6EA9, 0x39E4, 0x6EAA, 0x6EAA, 0x0F17, 0x6EAB, 0x6EAE, 0x39E6, - 0x6EAF, 0x6EAF, 0x0DD2, 0x6EB0, 0x6EB0, 0x39EA, 0x6EB1, 0x6EB1, 0x16F8, - 0x6EB2, 0x6EB2, 0x16EF, 0x6EB3, 0x6EB3, 0x39EB, 0x6EB4, 0x6EB4, 0x1703, - 0x6EB5, 0x6EB5, 0x39EC, 0x6EB6, 0x6EB6, 0x0CB7, 0x6EB7, 0x6EB7, 0x1701, - 0x6EB8, 0x6EB9, 0x39ED, 0x6EBA, 0x6EBA, 0x0B4A, 0x6EBB, 0x6EBB, 0x1700, - 0x6EBC, 0x6EBC, 0x39EF, 0x6EBD, 0x6EBD, 0x16FF, 0x6EBE, 0x6EC0, 0x39F0, - 0x6EC1, 0x6EC1, 0x0521, 0x6EC2, 0x6EC2, 0x1706, 0x6EC3, 0x6EC3, 0x39F3, - 0x6EC4, 0x6EC4, 0x1E63, 0x6EC5, 0x6EC5, 0x2088, 0x6EC6, 0x6EC6, 0x39F4, - 0x6EC7, 0x6EC7, 0x05C2, 0x6EC8, 0x6ECA, 0x39F5, 0x6ECB, 0x6ECB, 0x1229, - 0x6ECC, 0x6ECC, 0x1EBD, 0x6ECD, 0x6ECD, 0x39F8, 0x6ECE, 0x6ECE, 0x2341, - 0x6ECF, 0x6ECF, 0x1704, 0x6ED0, 0x6ED0, 0x39F9, 0x6ED1, 0x6ED1, 0x07C1, - 0x6ED2, 0x6ED2, 0x39FA, 0x6ED3, 0x6ED3, 0x122F, 0x6ED4, 0x6ED4, 0x0E22, - 0x6ED5, 0x6ED5, 0x19A8, 0x6ED6, 0x6ED6, 0x39FB, 0x6ED7, 0x6ED7, 0x1702, - 0x6ED8, 0x6ED9, 0x39FC, 0x6EDA, 0x6EDA, 0x074F, 0x6EDB, 0x6EDD, 0x39FE, - 0x6EDE, 0x6EDE, 0x11CC, 0x6EDF, 0x6EDF, 0x16F7, 0x6EE0, 0x6EE0, 0x16FA, - 0x6EE1, 0x6EE1, 0x0AA1, 0x6EE2, 0x6EE2, 0x16FC, 0x6EE3, 0x6EE3, 0x3A01, - 0x6EE4, 0x6EE4, 0x0A72, 0x6EE5, 0x6EE5, 0x09AF, 0x6EE6, 0x6EE6, 0x0A77, - 0x6EE7, 0x6EE7, 0x3A02, 0x6EE8, 0x6EE8, 0x045E, 0x6EE9, 0x6EE9, 0x0E05, - 0x6EEA, 0x6EEB, 0x3A03, 0x6EEC, 0x6EEC, 0x1F4B, 0x6EED, 0x6EEE, 0x3A05, - 0x6EEF, 0x6EEF, 0x2292, 0x6EF0, 0x6EF1, 0x3A07, 0x6EF2, 0x6EF2, 0x2124, - 0x6EF3, 0x6EF3, 0x3A09, 0x6EF4, 0x6EF4, 0x05AF, 0x6EF5, 0x6EF6, 0x3A0A, - 0x6EF7, 0x6EF7, 0x2048, 0x6EF8, 0x6EF8, 0x23E0, 0x6EF9, 0x6EF9, 0x170D, - 0x6EFA, 0x6EFE, 0x3A0C, 0x6EFF, 0x6EFF, 0x2077, 0x6F00, 0x6F00, 0x3A11, - 0x6F01, 0x6F01, 0x223A, 0x6F02, 0x6F02, 0x0BCE, 0x6F03, 0x6F05, 0x3A12, - 0x6F06, 0x6F06, 0x0C00, 0x6F07, 0x6F08, 0x3A15, 0x6F09, 0x6F09, 0x1713, - 0x6F0A, 0x6F0E, 0x3A17, 0x6F0F, 0x6F0F, 0x0A50, 0x6F10, 0x6F12, 0x3A1C, - 0x6F13, 0x6F13, 0x09D7, 0x6F14, 0x6F14, 0x1006, 0x6F15, 0x6F15, 0x170C, - 0x6F16, 0x6F19, 0x3A1F, 0x6F1A, 0x6F1A, 0x20B1, 0x6F1B, 0x6F1F, 0x3A23, - 0x6F20, 0x6F20, 0x0B11, 0x6F21, 0x6F21, 0x3A28, 0x6F22, 0x6F22, 0x1F41, - 0x6F23, 0x6F23, 0x201C, 0x6F24, 0x6F24, 0x170B, 0x6F25, 0x6F28, 0x3A29, - 0x6F29, 0x6F29, 0x1714, 0x6F2A, 0x6F2A, 0x1712, 0x6F2B, 0x6F2B, 0x0AA5, - 0x6F2C, 0x6F2C, 0x22B8, 0x6F2D, 0x6F2D, 0x16FB, 0x6F2E, 0x6F2E, 0x3A2D, - 0x6F2F, 0x6F2F, 0x170E, 0x6F30, 0x6F30, 0x3A2E, 0x6F31, 0x6F31, 0x0D95, - 0x6F32, 0x6F32, 0x2276, 0x6F33, 0x6F33, 0x1165, 0x6F34, 0x6F35, 0x3A2F, - 0x6F36, 0x6F36, 0x170F, 0x6F37, 0x6F37, 0x3A31, 0x6F38, 0x6F38, 0x1F9B, - 0x6F39, 0x6F3D, 0x3A32, 0x6F3E, 0x6F3E, 0x1023, 0x6F3F, 0x6F3F, 0x1F9F, - 0x6F40, 0x6F40, 0x3A37, 0x6F41, 0x6F41, 0x25CA, 0x6F42, 0x6F45, 0x3A38, - 0x6F46, 0x6F47, 0x1709, 0x6F48, 0x6F4A, 0x3A3C, 0x6F4B, 0x6F4B, 0x1710, - 0x6F4C, 0x6F4C, 0x3A3F, 0x6F4D, 0x6F4D, 0x0EBA, 0x6F4E, 0x6F50, 0x3A40, - 0x6F51, 0x6F51, 0x20BE, 0x6F52, 0x6F53, 0x3A43, 0x6F54, 0x6F54, 0x1FB4, - 0x6F55, 0x6F57, 0x3A45, 0x6F58, 0x6F58, 0x0B8C, 0x6F59, 0x6F59, 0x23D7, - 0x6F5A, 0x6F5B, 0x3A48, 0x6F5C, 0x6F5C, 0x0C2E, 0x6F5D, 0x6F5D, 0x3A4A, - 0x6F5E, 0x6F5E, 0x0A61, 0x6F5F, 0x6F61, 0x3A4B, 0x6F62, 0x6F62, 0x1708, - 0x6F63, 0x6F63, 0x3A4E, 0x6F64, 0x6F64, 0x2105, 0x6F65, 0x6F65, 0x3A4F, - 0x6F66, 0x6F66, 0x0A13, 0x6F67, 0x6F6C, 0x3A50, 0x6F6D, 0x6F6D, 0x0E09, - 0x6F6E, 0x6F6E, 0x04D6, 0x6F6F, 0x6F6F, 0x23E1, 0x6F70, 0x6F70, 0x1FEC, - 0x6F71, 0x6F71, 0x3A56, 0x6F72, 0x6F72, 0x1719, 0x6F73, 0x6F73, 0x3A57, - 0x6F74, 0x6F74, 0x1711, 0x6F75, 0x6F76, 0x3A58, 0x6F77, 0x6F77, 0x23EA, - 0x6F78, 0x6F78, 0x1718, 0x6F79, 0x6F79, 0x3A5A, 0x6F7A, 0x6F7A, 0x171B, - 0x6F7B, 0x6F7B, 0x3A5B, 0x6F7C, 0x6F7C, 0x171A, 0x6F7D, 0x6F7E, 0x3A5C, - 0x6F7F, 0x6F7F, 0x23E3, 0x6F80, 0x6F80, 0x210E, 0x6F81, 0x6F83, 0x3A5E, - 0x6F84, 0x6F84, 0x04F3, 0x6F85, 0x6F85, 0x3A61, 0x6F86, 0x6F86, 0x1FA6, - 0x6F87, 0x6F87, 0x2004, 0x6F88, 0x6F88, 0x04DF, 0x6F89, 0x6F89, 0x1715, - 0x6F8A, 0x6F8B, 0x3A62, 0x6F8C, 0x6F8C, 0x1717, 0x6F8D, 0x6F8D, 0x1716, - 0x6F8E, 0x6F8E, 0x0BAD, 0x6F8F, 0x6F96, 0x3A64, 0x6F97, 0x6F97, 0x1F9D, - 0x6F98, 0x6F9B, 0x3A6C, 0x6F9C, 0x6F9C, 0x09A8, 0x6F9D, 0x6F9F, 0x3A70, - 0x6FA0, 0x6FA0, 0x23E5, 0x6FA1, 0x6FA1, 0x112B, 0x6FA2, 0x6FA3, 0x3A73, - 0x6FA4, 0x6FA4, 0x2264, 0x6FA5, 0x6FA6, 0x3A75, 0x6FA7, 0x6FA7, 0x171E, - 0x6FA8, 0x6FA8, 0x3A77, 0x6FA9, 0x6FA9, 0x24E2, 0x6FAA, 0x6FAD, 0x3A78, - 0x6FAE, 0x6FAE, 0x23DE, 0x6FAF, 0x6FB0, 0x3A7C, 0x6FB1, 0x6FB1, 0x1EC4, - 0x6FB2, 0x6FB2, 0x3A7E, 0x6FB3, 0x6FB3, 0x03CF, 0x6FB4, 0x6FB5, 0x3A7F, - 0x6FB6, 0x6FB6, 0x1720, 0x6FB7, 0x6FB8, 0x3A81, 0x6FB9, 0x6FB9, 0x171F, - 0x6FBA, 0x6FBF, 0x3A83, 0x6FC0, 0x6FC0, 0x0817, 0x6FC1, 0x6FC1, 0x22B6, - 0x6FC2, 0x6FC2, 0x1721, 0x6FC3, 0x6FC3, 0x20A9, 0x6FC4, 0x6FC8, 0x3A89, - 0x6FC9, 0x6FC9, 0x171D, 0x6FCA, 0x6FD0, 0x3A8E, 0x6FD1, 0x6FD1, 0x171C, - 0x6FD2, 0x6FD2, 0x045D, 0x6FD3, 0x6FD4, 0x3A95, 0x6FD5, 0x6FD5, 0x212B, - 0x6FD6, 0x6FD7, 0x3A97, 0x6FD8, 0x6FD8, 0x20A5, 0x6FD9, 0x6FDA, 0x3A99, - 0x6FDB, 0x6FDB, 0x268B, 0x6FDC, 0x6FDD, 0x3A9B, 0x6FDE, 0x6FDE, 0x1724, - 0x6FDF, 0x6FDF, 0x1F76, 0x6FE0, 0x6FE0, 0x1725, 0x6FE1, 0x6FE1, 0x1722, - 0x6FE2, 0x6FE3, 0x3A9D, 0x6FE4, 0x6FE4, 0x216D, 0x6FE5, 0x6FEA, 0x3A9F, - 0x6FEB, 0x6FEB, 0x2001, 0x6FEC, 0x6FED, 0x3AA5, 0x6FEE, 0x6FEE, 0x1723, - 0x6FEF, 0x6FEF, 0x1726, 0x6FF0, 0x6FF0, 0x2191, 0x6FF1, 0x6FF1, 0x1E50, - 0x6FF2, 0x6FF9, 0x3AA7, 0x6FFA, 0x6FFA, 0x1F9C, 0x6FFB, 0x6FFB, 0x3AAF, - 0x6FFC, 0x6FFC, 0x23DA, 0x6FFD, 0x6FFD, 0x3AB0, 0x6FFE, 0x6FFE, 0x2053, - 0x6FFF, 0x6FFF, 0x3AB1, 0x7000, 0x7004, 0x3AB2, 0x7005, 0x7005, 0x23E9, - 0x7006, 0x7006, 0x23E4, 0x7007, 0x7008, 0x3AB7, 0x7009, 0x7009, 0x21D5, - 0x700A, 0x700A, 0x3AB9, 0x700B, 0x700B, 0x23E6, 0x700C, 0x700E, 0x3ABA, - 0x700F, 0x700F, 0x23DF, 0x7010, 0x7010, 0x3ABD, 0x7011, 0x7011, 0x0BF8, - 0x7012, 0x7014, 0x3ABE, 0x7015, 0x7015, 0x1E4F, 0x7016, 0x7017, 0x3AC1, - 0x7018, 0x7018, 0x23D9, 0x7019, 0x7019, 0x3AC3, 0x701A, 0x701A, 0x1727, - 0x701B, 0x701B, 0x1729, 0x701C, 0x701C, 0x3AC4, 0x701D, 0x701D, 0x2014, - 0x701E, 0x701E, 0x3AC5, 0x701F, 0x701F, 0x23EC, 0x7020, 0x7020, 0x23EB, - 0x7021, 0x7022, 0x3AC6, 0x7023, 0x7023, 0x1728, 0x7024, 0x7026, 0x3AC8, - 0x7027, 0x7027, 0x23D8, 0x7028, 0x7028, 0x23EE, 0x7029, 0x702F, 0x3ACB, - 0x7030, 0x7030, 0x268E, 0x7031, 0x7031, 0x3AD2, 0x7032, 0x7032, 0x23ED, - 0x7033, 0x7034, 0x3AD3, 0x7035, 0x7035, 0x172B, 0x7036, 0x7038, 0x3AD5, - 0x7039, 0x7039, 0x172A, 0x703A, 0x703D, 0x3AD8, 0x703E, 0x703E, 0x1FFA, - 0x703F, 0x7042, 0x3ADC, 0x7043, 0x7043, 0x23D6, 0x7044, 0x7044, 0x23E8, - 0x7045, 0x704B, 0x3AE0, 0x704C, 0x704C, 0x0739, 0x704D, 0x704E, 0x3AE7, - 0x704F, 0x704F, 0x172C, 0x7050, 0x7050, 0x3AE9, 0x7051, 0x7051, 0x2106, - 0x7052, 0x7054, 0x3AEA, 0x7055, 0x7055, 0x200B, 0x7056, 0x7057, 0x3AED, - 0x7058, 0x7058, 0x2166, 0x7059, 0x705C, 0x3AEF, 0x705D, 0x705D, 0x23EF, - 0x705E, 0x705E, 0x172D, 0x705F, 0x7062, 0x3AF3, 0x7063, 0x7063, 0x2189, - 0x7064, 0x7064, 0x2058, 0x7065, 0x7066, 0x3AF7, 0x7067, 0x7067, 0x23E7, - 0x7068, 0x706A, 0x3AF9, 0x706B, 0x706B, 0x0805, 0x706C, 0x706C, 0x19EF, - 0x706D, 0x706D, 0x0AF5, 0x706E, 0x706E, 0x3AFC, 0x706F, 0x706F, 0x05A7, - 0x7070, 0x7070, 0x07E7, 0x7071, 0x7074, 0x3AFD, 0x7075, 0x7075, 0x0A32, - 0x7076, 0x7076, 0x1131, 0x7077, 0x7077, 0x3B01, 0x7078, 0x7078, 0x08F3, - 0x7079, 0x707B, 0x3B02, 0x707C, 0x707C, 0x1223, 0x707D, 0x707D, 0x3B05, - 0x707E, 0x707E, 0x1119, 0x707F, 0x707F, 0x049A, 0x7080, 0x7080, 0x19CC, - 0x7081, 0x7084, 0x3B06, 0x7085, 0x7085, 0x1913, 0x7086, 0x7088, 0x3B0A, - 0x7089, 0x7089, 0x0A56, 0x708A, 0x708A, 0x0539, 0x708B, 0x708D, 0x3B0D, - 0x708E, 0x708E, 0x1000, 0x708F, 0x7091, 0x3B10, 0x7092, 0x7092, 0x04D9, - 0x7093, 0x7093, 0x3B13, 0x7094, 0x7094, 0x0C8D, 0x7095, 0x7095, 0x0948, - 0x7096, 0x7096, 0x19CE, 0x7097, 0x7098, 0x3B14, 0x7099, 0x7099, 0x11CA, - 0x709A, 0x709B, 0x3B16, 0x709C, 0x709C, 0x19CD, 0x709D, 0x709D, 0x19CF, - 0x709E, 0x70AA, 0x3B18, 0x70AB, 0x70AB, 0x19D3, 0x70AC, 0x70AC, 0x0915, - 0x70AD, 0x70AD, 0x0E12, 0x70AE, 0x70AE, 0x0B9B, 0x70AF, 0x70AF, 0x08EB, - 0x70B0, 0x70B0, 0x3B25, 0x70B1, 0x70B1, 0x19D4, 0x70B2, 0x70B2, 0x3B26, - 0x70B3, 0x70B3, 0x0467, 0x70B4, 0x70B6, 0x3B27, 0x70B7, 0x70B7, 0x19D2, - 0x70B8, 0x70B8, 0x1149, 0x70B9, 0x70B9, 0x05C4, 0x70BA, 0x70BA, 0x3B2A, - 0x70BB, 0x70BB, 0x19D0, 0x70BC, 0x70BC, 0x09FF, 0x70BD, 0x70BD, 0x0508, - 0x70BE, 0x70BF, 0x3B2B, 0x70C0, 0x70C0, 0x19D1, 0x70C1, 0x70C1, 0x0DAD, - 0x70C2, 0x70C2, 0x09AE, 0x70C3, 0x70C3, 0x0E51, 0x70C4, 0x70C7, 0x3B2D, - 0x70C8, 0x70C8, 0x0A1B, 0x70C9, 0x70C9, 0x3B31, 0x70CA, 0x70CA, 0x19D6, - 0x70CB, 0x70CE, 0x3B32, 0x70CF, 0x70CF, 0x21A3, 0x70D0, 0x70D7, 0x3B36, - 0x70D8, 0x70D8, 0x079D, 0x70D9, 0x70D9, 0x09BE, 0x70DA, 0x70DA, 0x3B3E, - 0x70DB, 0x70DB, 0x11F1, 0x70DC, 0x70DE, 0x3B3F, 0x70DF, 0x70DF, 0x0FF5, - 0x70E0, 0x70E3, 0x3B42, 0x70E4, 0x70E4, 0x094B, 0x70E5, 0x70E5, 0x3B46, - 0x70E6, 0x70E6, 0x0650, 0x70E7, 0x70E7, 0x0D0E, 0x70E8, 0x70E8, 0x19D5, - 0x70E9, 0x70E9, 0x07F7, 0x70EA, 0x70EA, 0x3B47, 0x70EB, 0x70EB, 0x0E1F, - 0x70EC, 0x70EC, 0x08CE, 0x70ED, 0x70ED, 0x0CA3, 0x70EE, 0x70EE, 0x3B48, - 0x70EF, 0x70EF, 0x0F16, 0x70F0, 0x70F3, 0x3B49, 0x70F4, 0x70F4, 0x217A, - 0x70F5, 0x70F6, 0x3B4D, 0x70F7, 0x70F7, 0x0E9A, 0x70F8, 0x70F8, 0x3B4F, - 0x70F9, 0x70F9, 0x0BAC, 0x70FA, 0x70FC, 0x3B50, 0x70FD, 0x70FD, 0x0686, - 0x70FE, 0x70FF, 0x3B53, 0x7100, 0x7108, 0x3B55, 0x7109, 0x7109, 0x0FF2, - 0x710A, 0x710A, 0x076F, 0x710B, 0x710F, 0x3B5E, 0x7110, 0x7110, 0x19D7, - 0x7111, 0x7112, 0x3B63, 0x7113, 0x7113, 0x19D8, 0x7114, 0x7114, 0x3B65, - 0x7115, 0x7115, 0x07D5, 0x7116, 0x7116, 0x19D9, 0x7117, 0x7117, 0x3B66, - 0x7118, 0x7118, 0x19F0, 0x7119, 0x7119, 0x0423, 0x711A, 0x711A, 0x0676, - 0x711B, 0x7120, 0x3B67, 0x7121, 0x7121, 0x21A5, 0x7122, 0x7125, 0x3B6D, - 0x7126, 0x7126, 0x088A, 0x7127, 0x712E, 0x3B71, 0x712F, 0x712F, 0x19DA, - 0x7130, 0x7130, 0x100F, 0x7131, 0x7131, 0x19DB, 0x7132, 0x7135, 0x3B79, - 0x7136, 0x7136, 0x0C96, 0x7137, 0x7144, 0x3B7D, 0x7145, 0x7145, 0x19DF, - 0x7146, 0x7148, 0x3B8B, 0x7149, 0x7149, 0x2022, 0x714A, 0x714A, 0x19E1, - 0x714B, 0x714B, 0x3B8E, 0x714C, 0x714C, 0x07E2, 0x714D, 0x714D, 0x3B8F, - 0x714E, 0x714E, 0x0858, 0x714F, 0x7151, 0x3B90, 0x7152, 0x7152, 0x24D6, - 0x7153, 0x715B, 0x3B93, 0x715C, 0x715C, 0x19DD, 0x715D, 0x715D, 0x3B9C, - 0x715E, 0x715E, 0x0CF0, 0x715F, 0x7161, 0x3B9D, 0x7162, 0x7162, 0x233A, - 0x7163, 0x7163, 0x3BA0, 0x7164, 0x7164, 0x0ABF, 0x7165, 0x7165, 0x3BA1, - 0x7166, 0x7166, 0x19F1, 0x7167, 0x7167, 0x1176, 0x7168, 0x7168, 0x19DE, - 0x7169, 0x7169, 0x1EEE, 0x716A, 0x716B, 0x3BA2, 0x716C, 0x716C, 0x24D5, - 0x716D, 0x716D, 0x3BA4, 0x716E, 0x716E, 0x11F2, 0x716F, 0x7171, 0x3BA5, - 0x7172, 0x7172, 0x19E0, 0x7173, 0x7173, 0x19DC, 0x7174, 0x7177, 0x3BA8, - 0x7178, 0x7178, 0x19E2, 0x7179, 0x7179, 0x3BAC, 0x717A, 0x717A, 0x19E3, - 0x717B, 0x717C, 0x3BAD, 0x717D, 0x717D, 0x0CF8, 0x717E, 0x7183, 0x3BAF, - 0x7184, 0x7184, 0x0F15, 0x7185, 0x7189, 0x3BB5, 0x718A, 0x718A, 0x0FA7, - 0x718B, 0x718E, 0x3BBA, 0x718F, 0x718F, 0x0FD5, 0x7190, 0x7191, 0x3BBE, - 0x7192, 0x7192, 0x2228, 0x7193, 0x7193, 0x3BC0, 0x7194, 0x7194, 0x0CB6, - 0x7195, 0x7196, 0x3BC1, 0x7197, 0x7197, 0x24D7, 0x7198, 0x7198, 0x19E4, - 0x7199, 0x7199, 0x0F04, 0x719A, 0x719E, 0x3BC3, 0x719F, 0x719F, 0x0D83, - 0x71A0, 0x71A0, 0x19E8, 0x71A1, 0x71A7, 0x3BC8, 0x71A8, 0x71A8, 0x19E7, - 0x71A9, 0x71AB, 0x3BCF, 0x71AC, 0x71AC, 0x03C9, 0x71AD, 0x71B0, 0x3BD2, - 0x71B1, 0x71B1, 0x20FC, 0x71B2, 0x71B2, 0x3BD6, 0x71B3, 0x71B3, 0x19E5, - 0x71B4, 0x71B4, 0x3BD7, 0x71B5, 0x71B5, 0x19E6, 0x71B6, 0x71B8, 0x3BD8, - 0x71B9, 0x71B9, 0x19F2, 0x71BA, 0x71BD, 0x3BDB, 0x71BE, 0x71BE, 0x1E87, - 0x71BF, 0x71C0, 0x3BDF, 0x71C1, 0x71C1, 0x24D8, 0x71C2, 0x71C2, 0x3BE1, - 0x71C3, 0x71C3, 0x0C97, 0x71C4, 0x71C7, 0x3BE2, 0x71C8, 0x71C8, 0x1EBA, - 0x71C9, 0x71CD, 0x3BE6, 0x71CE, 0x71CE, 0x0A10, 0x71CF, 0x71D1, 0x3BEB, - 0x71D2, 0x71D2, 0x2119, 0x71D3, 0x71D3, 0x3BEE, 0x71D4, 0x71D4, 0x19EA, - 0x71D5, 0x71D5, 0x1009, 0x71D6, 0x71D8, 0x3BEF, 0x71D9, 0x71D9, 0x216C, - 0x71DA, 0x71DB, 0x3BF2, 0x71DC, 0x71DC, 0x24D9, 0x71DD, 0x71DE, 0x3BF4, - 0x71DF, 0x71DF, 0x2227, 0x71E0, 0x71E0, 0x19E9, 0x71E1, 0x71E4, 0x3BF6, - 0x71E5, 0x71E5, 0x1132, 0x71E6, 0x71E6, 0x1E5F, 0x71E7, 0x71E7, 0x19EB, - 0x71E8, 0x71EC, 0x3BFA, 0x71ED, 0x71ED, 0x229F, 0x71EE, 0x71EE, 0x1396, - 0x71EF, 0x71F3, 0x3BFF, 0x71F4, 0x71F4, 0x1F5D, 0x71F5, 0x71F8, 0x3C04, - 0x71F9, 0x71F9, 0x19EC, 0x71FA, 0x71FB, 0x3C08, 0x71FC, 0x71FC, 0x1FBC, - 0x71FD, 0x71FD, 0x3C0A, 0x71FE, 0x71FE, 0x24DA, 0x71FF, 0x71FF, 0x3C0B, - 0x7200, 0x7205, 0x3C0C, 0x7206, 0x7206, 0x0415, 0x7207, 0x720C, 0x3C12, - 0x720D, 0x720D, 0x2149, 0x720E, 0x720F, 0x3C18, 0x7210, 0x7210, 0x2046, - 0x7211, 0x721A, 0x3C1A, 0x721B, 0x721B, 0x2000, 0x721C, 0x721C, 0x3C24, - 0x721D, 0x721D, 0x19ED, 0x721E, 0x7227, 0x3C25, 0x7228, 0x7228, 0x19EE, - 0x7229, 0x7229, 0x3C2F, 0x722A, 0x722A, 0x1203, 0x722B, 0x722B, 0x3C30, - 0x722C, 0x722C, 0x0B81, 0x722D, 0x722F, 0x3C31, 0x7230, 0x7230, 0x196C, - 0x7231, 0x7231, 0x03B9, 0x7232, 0x7232, 0x2190, 0x7233, 0x7234, 0x3C34, - 0x7235, 0x7235, 0x0923, 0x7236, 0x7236, 0x06B3, 0x7237, 0x7237, 0x1036, - 0x7238, 0x7238, 0x03E1, 0x7239, 0x7239, 0x05DA, 0x723A, 0x723A, 0x2208, - 0x723B, 0x723B, 0x1269, 0x723C, 0x723C, 0x3C36, 0x723D, 0x723D, 0x0DA1, - 0x723E, 0x723E, 0x1EE6, 0x723F, 0x723F, 0x169D, 0x7240, 0x7246, 0x3C37, - 0x7247, 0x7247, 0x0BCB, 0x7248, 0x7248, 0x03F1, 0x7249, 0x724B, 0x3C3E, - 0x724C, 0x724C, 0x0B87, 0x724D, 0x724D, 0x1969, 0x724E, 0x7251, 0x3C41, - 0x7252, 0x7252, 0x196A, 0x7253, 0x7255, 0x3C45, 0x7256, 0x7256, 0x196B, - 0x7257, 0x7257, 0x3C48, 0x7258, 0x7258, 0x24C3, 0x7259, 0x7259, 0x0FE9, - 0x725A, 0x725A, 0x3C49, 0x725B, 0x725B, 0x0B64, 0x725C, 0x725C, 0x3C4A, - 0x725D, 0x725D, 0x1944, 0x725E, 0x725E, 0x3C4B, 0x725F, 0x725F, 0x0B15, - 0x7260, 0x7260, 0x3C4C, 0x7261, 0x7261, 0x0B18, 0x7262, 0x7262, 0x09B9, - 0x7263, 0x7265, 0x3C4D, 0x7266, 0x7266, 0x1945, 0x7267, 0x7267, 0x0B24, - 0x7268, 0x7268, 0x3C50, 0x7269, 0x7269, 0x0EFE, 0x726A, 0x726D, 0x3C51, - 0x726E, 0x726E, 0x1942, 0x726F, 0x726F, 0x1946, 0x7270, 0x7271, 0x3C55, - 0x7272, 0x7272, 0x0D35, 0x7273, 0x7274, 0x3C57, 0x7275, 0x7275, 0x0C20, - 0x7276, 0x7278, 0x3C59, 0x7279, 0x7279, 0x0E2B, 0x727A, 0x727A, 0x0F0D, - 0x727B, 0x727C, 0x3C5C, 0x727D, 0x727D, 0x20CC, 0x727E, 0x727F, 0x1947, - 0x7280, 0x7280, 0x0F19, 0x7281, 0x7281, 0x09D2, 0x7282, 0x7283, 0x3C5E, - 0x7284, 0x7284, 0x1949, 0x7285, 0x7289, 0x3C60, 0x728A, 0x728A, 0x05FE, - 0x728B, 0x728B, 0x194A, 0x728C, 0x728C, 0x3C65, 0x728D, 0x728D, 0x194B, - 0x728E, 0x728E, 0x3C66, 0x728F, 0x728F, 0x194C, 0x7290, 0x7291, 0x3C67, - 0x7292, 0x7292, 0x194D, 0x7293, 0x7295, 0x3C69, 0x7296, 0x7296, 0x2340, - 0x7297, 0x729E, 0x3C6C, 0x729F, 0x729F, 0x1943, 0x72A0, 0x72A1, 0x3C74, - 0x72A2, 0x72A2, 0x1ED1, 0x72A3, 0x72A6, 0x3C76, 0x72A7, 0x72A7, 0x21AC, - 0x72A8, 0x72AB, 0x3C7A, 0x72AC, 0x72AC, 0x0C89, 0x72AD, 0x72AD, 0x15EF, - 0x72AE, 0x72AE, 0x3C7E, 0x72AF, 0x72AF, 0x0655, 0x72B0, 0x72B0, 0x15F0, - 0x72B1, 0x72B3, 0x3C7F, 0x72B4, 0x72B4, 0x15F1, 0x72B5, 0x72B5, 0x3C82, - 0x72B6, 0x72B6, 0x1211, 0x72B7, 0x72B8, 0x15F2, 0x72B9, 0x72B9, 0x10B1, - 0x72BA, 0x72BF, 0x3C83, 0x72C0, 0x72C0, 0x22AF, 0x72C1, 0x72C1, 0x15F5, - 0x72C2, 0x72C2, 0x097E, 0x72C3, 0x72C3, 0x15F4, 0x72C4, 0x72C4, 0x05B3, - 0x72C5, 0x72C7, 0x3C89, 0x72C8, 0x72C8, 0x0420, 0x72C9, 0x72CC, 0x3C8C, - 0x72CD, 0x72CD, 0x15F7, 0x72CE, 0x72CE, 0x15F6, 0x72CF, 0x72CF, 0x3C90, - 0x72D0, 0x72D0, 0x07B3, 0x72D1, 0x72D1, 0x3C91, 0x72D2, 0x72D2, 0x15F8, - 0x72D3, 0x72D6, 0x3C92, 0x72D7, 0x72D7, 0x0710, 0x72D8, 0x72D8, 0x3C96, - 0x72D9, 0x72D9, 0x0900, 0x72DA, 0x72DD, 0x3C97, 0x72DE, 0x72DE, 0x0B5F, - 0x72DF, 0x72DF, 0x3C9B, 0x72E0, 0x72E0, 0x0794, 0x72E1, 0x72E1, 0x0897, - 0x72E2, 0x72E7, 0x3C9C, 0x72E8, 0x72E8, 0x15F9, 0x72E9, 0x72E9, 0x15FB, - 0x72EA, 0x72EB, 0x3CA2, 0x72EC, 0x72EC, 0x05FF, 0x72ED, 0x72ED, 0x0F2E, - 0x72EE, 0x72EE, 0x0D3F, 0x72EF, 0x72EF, 0x15FA, 0x72F0, 0x72F0, 0x1199, - 0x72F1, 0x72F1, 0x10E1, 0x72F2, 0x72F2, 0x15FC, 0x72F3, 0x72F3, 0x1600, - 0x72F4, 0x72F4, 0x15FD, 0x72F5, 0x72F6, 0x3CA4, 0x72F7, 0x72F7, 0x15FE, - 0x72F8, 0x72F8, 0x09D5, 0x72F9, 0x72F9, 0x21B6, 0x72FA, 0x72FB, 0x1602, - 0x72FC, 0x72FC, 0x09B2, 0x72FD, 0x72FD, 0x1E3D, 0x72FE, 0x72FF, 0x3CA6, - 0x7300, 0x7300, 0x3CA8, 0x7301, 0x7301, 0x15FF, 0x7302, 0x7302, 0x3CA9, - 0x7303, 0x7303, 0x1601, 0x7304, 0x7309, 0x3CAA, 0x730A, 0x730A, 0x1607, - 0x730B, 0x730D, 0x3CB0, 0x730E, 0x730E, 0x0A1D, 0x730F, 0x7312, 0x3CB3, - 0x7313, 0x7313, 0x1605, 0x7314, 0x7314, 0x3CB7, 0x7315, 0x7315, 0x160A, - 0x7316, 0x7316, 0x04C5, 0x7317, 0x7317, 0x1604, 0x7318, 0x731A, 0x3CB8, - 0x731B, 0x731B, 0x0AD2, 0x731C, 0x731C, 0x0489, 0x731D, 0x731D, 0x1609, - 0x731E, 0x731E, 0x1608, 0x731F, 0x7320, 0x3CBB, 0x7321, 0x7321, 0x1606, - 0x7322, 0x7322, 0x160B, 0x7323, 0x7324, 0x3CBD, 0x7325, 0x7325, 0x160D, - 0x7326, 0x7328, 0x3CBF, 0x7329, 0x7329, 0x0F94, 0x732A, 0x732A, 0x11EC, - 0x732B, 0x732B, 0x0AAD, 0x732C, 0x732C, 0x160E, 0x732D, 0x732D, 0x3CC2, - 0x732E, 0x732E, 0x0F44, 0x732F, 0x7330, 0x3CC3, 0x7331, 0x7331, 0x1610, - 0x7332, 0x7333, 0x3CC5, 0x7334, 0x7334, 0x07A6, 0x7335, 0x7335, 0x3CC7, - 0x7336, 0x7336, 0x2235, 0x7337, 0x7337, 0x18D4, 0x7338, 0x7338, 0x160F, - 0x7339, 0x7339, 0x160C, 0x733A, 0x733A, 0x3CC8, 0x733B, 0x733B, 0x2397, - 0x733C, 0x733D, 0x3CC9, 0x733E, 0x733E, 0x07C0, 0x733F, 0x733F, 0x10F6, - 0x7340, 0x7340, 0x3CCB, 0x7341, 0x7341, 0x2395, 0x7342, 0x7343, 0x3CCC, - 0x7344, 0x7344, 0x223F, 0x7345, 0x7345, 0x212A, 0x7346, 0x734C, 0x3CCE, - 0x734D, 0x734D, 0x1612, 0x734E, 0x734F, 0x3CD5, 0x7350, 0x7350, 0x1611, - 0x7351, 0x7351, 0x3CD7, 0x7352, 0x7352, 0x18D5, 0x7353, 0x7356, 0x3CD8, - 0x7357, 0x7357, 0x1613, 0x7358, 0x735F, 0x3CDC, 0x7360, 0x7360, 0x1614, - 0x7361, 0x7367, 0x3CE4, 0x7368, 0x7368, 0x1ED2, 0x7369, 0x7369, 0x3CEB, - 0x736A, 0x736A, 0x2396, 0x736B, 0x736B, 0x2398, 0x736C, 0x736C, 0x1615, - 0x736D, 0x736D, 0x0DF4, 0x736E, 0x736E, 0x3CEC, 0x736F, 0x736F, 0x1616, - 0x7370, 0x7370, 0x20A2, 0x7371, 0x7371, 0x3CED, 0x7372, 0x7372, 0x1F64, - 0x7373, 0x7374, 0x3CEE, 0x7375, 0x7375, 0x202B, 0x7376, 0x7376, 0x3CF0, - 0x7377, 0x7377, 0x2394, 0x7378, 0x7378, 0x2139, 0x7379, 0x7379, 0x3CF1, - 0x737A, 0x737A, 0x215F, 0x737B, 0x737B, 0x21C1, 0x737C, 0x737C, 0x239A, - 0x737D, 0x737D, 0x3CF2, 0x737E, 0x737E, 0x1617, 0x737F, 0x737F, 0x3CF3, - 0x7380, 0x7380, 0x2399, 0x7381, 0x7383, 0x3CF4, 0x7384, 0x7384, 0x0FC9, - 0x7385, 0x7386, 0x3CF7, 0x7387, 0x7387, 0x0A71, 0x7388, 0x7388, 0x3CF9, - 0x7389, 0x7389, 0x10D6, 0x738A, 0x738A, 0x3CFA, 0x738B, 0x738B, 0x0EA6, - 0x738C, 0x738D, 0x3CFB, 0x738E, 0x738E, 0x1818, 0x738F, 0x7390, 0x3CFD, - 0x7391, 0x7391, 0x1819, 0x7392, 0x7395, 0x3CFF, 0x7396, 0x7396, 0x08F0, - 0x7397, 0x739A, 0x3D03, 0x739B, 0x739B, 0x0A91, 0x739C, 0x739E, 0x3D07, - 0x739F, 0x739F, 0x181C, 0x73A0, 0x73A1, 0x3D0A, 0x73A2, 0x73A2, 0x181B, - 0x73A3, 0x73A8, 0x3D0C, 0x73A9, 0x73A9, 0x0E97, 0x73AA, 0x73AA, 0x3D12, - 0x73AB, 0x73AB, 0x0ABA, 0x73AC, 0x73AD, 0x3D13, 0x73AE, 0x73AE, 0x181A, - 0x73AF, 0x73AF, 0x07CC, 0x73B0, 0x73B0, 0x0F43, 0x73B1, 0x73B1, 0x3D15, - 0x73B2, 0x73B2, 0x0A2A, 0x73B3, 0x73B3, 0x1821, 0x73B4, 0x73B6, 0x3D16, - 0x73B7, 0x73B7, 0x1820, 0x73B8, 0x73B9, 0x3D19, 0x73BA, 0x73BA, 0x182C, - 0x73BB, 0x73BB, 0x046A, 0x73BC, 0x73BF, 0x3D1B, 0x73C0, 0x73C0, 0x1822, - 0x73C1, 0x73C1, 0x3D1F, 0x73C2, 0x73C2, 0x181E, 0x73C3, 0x73C7, 0x3D20, - 0x73C8, 0x73C8, 0x1824, 0x73C9, 0x73C9, 0x1823, 0x73CA, 0x73CA, 0x0CF3, - 0x73CB, 0x73CC, 0x3D25, 0x73CD, 0x73CD, 0x1185, 0x73CE, 0x73CE, 0x3D27, - 0x73CF, 0x73CF, 0x181D, 0x73D0, 0x73D0, 0x0646, 0x73D1, 0x73D1, 0x181F, - 0x73D2, 0x73D8, 0x3D28, 0x73D9, 0x73D9, 0x1826, 0x73DA, 0x73DD, 0x3D2F, - 0x73DE, 0x73DE, 0x182B, 0x73DF, 0x73DF, 0x3D33, 0x73E0, 0x73E0, 0x11E8, - 0x73E1, 0x73E4, 0x3D34, 0x73E5, 0x73E5, 0x1825, 0x73E6, 0x73E6, 0x3D38, - 0x73E7, 0x73E7, 0x182A, 0x73E8, 0x73E8, 0x3D39, 0x73E9, 0x73E9, 0x1829, - 0x73EA, 0x73EC, 0x3D3A, 0x73ED, 0x73ED, 0x03EB, 0x73EE, 0x73F1, 0x3D3D, - 0x73F2, 0x73F2, 0x182D, 0x73F3, 0x73FD, 0x3D41, 0x73FE, 0x73FE, 0x21C0, - 0x73FF, 0x73FF, 0x3D4C, 0x7400, 0x7402, 0x3D4D, 0x7403, 0x7403, 0x0C6F, - 0x7404, 0x7404, 0x3D50, 0x7405, 0x7405, 0x09B0, 0x7406, 0x7406, 0x09D8, - 0x7407, 0x7408, 0x3D51, 0x7409, 0x7409, 0x0A39, 0x740A, 0x740A, 0x1828, - 0x740B, 0x740E, 0x3D53, 0x740F, 0x740F, 0x182E, 0x7410, 0x7410, 0x0DEB, - 0x7411, 0x7419, 0x3D57, 0x741A, 0x741A, 0x1838, 0x741B, 0x741B, 0x1837, - 0x741C, 0x7421, 0x3D60, 0x7422, 0x7422, 0x121E, 0x7423, 0x7424, 0x3D66, - 0x7425, 0x7425, 0x1832, 0x7426, 0x7426, 0x1831, 0x7427, 0x7427, 0x3D68, - 0x7428, 0x7428, 0x1833, 0x7429, 0x7429, 0x3D69, 0x742A, 0x742A, 0x182F, - 0x742B, 0x742B, 0x3D6A, 0x742C, 0x742C, 0x1836, 0x742D, 0x742D, 0x3D6B, - 0x742E, 0x742E, 0x1835, 0x742F, 0x742F, 0x3D6C, 0x7430, 0x7430, 0x1834, - 0x7431, 0x7432, 0x3D6D, 0x7433, 0x7433, 0x0A1E, 0x7434, 0x7434, 0x0C56, - 0x7435, 0x7435, 0x0BBE, 0x7436, 0x7436, 0x0B84, 0x7437, 0x743B, 0x3D6F, - 0x743C, 0x743C, 0x0C6A, 0x743D, 0x743E, 0x3D74, 0x743F, 0x743F, 0x2460, - 0x7440, 0x7440, 0x3D76, 0x7441, 0x7441, 0x1839, 0x7442, 0x744A, 0x3D77, - 0x744B, 0x744B, 0x245C, 0x744C, 0x7454, 0x3D80, 0x7455, 0x7455, 0x183C, - 0x7456, 0x7456, 0x3D89, 0x7457, 0x7457, 0x183B, 0x7458, 0x7458, 0x3D8A, - 0x7459, 0x7459, 0x183D, 0x745A, 0x745A, 0x07AE, 0x745B, 0x745B, 0x1830, - 0x745C, 0x745C, 0x183A, 0x745D, 0x745D, 0x3D8B, 0x745E, 0x745E, 0x0CCB, - 0x745F, 0x745F, 0x0CE3, 0x7460, 0x7462, 0x3D8C, 0x7463, 0x7463, 0x215D, - 0x7464, 0x7468, 0x3D8F, 0x7469, 0x7469, 0x2225, 0x746A, 0x746A, 0x206A, - 0x746B, 0x746C, 0x3D94, 0x746D, 0x746D, 0x183F, 0x746E, 0x746F, 0x3D96, - 0x7470, 0x7470, 0x073E, 0x7471, 0x7475, 0x3D98, 0x7476, 0x7476, 0x1027, - 0x7477, 0x7477, 0x183E, 0x7478, 0x747D, 0x3D9D, 0x747E, 0x747E, 0x1840, - 0x747F, 0x747F, 0x3DA3, 0x7480, 0x7481, 0x1843, 0x7482, 0x7482, 0x3DA4, - 0x7483, 0x7483, 0x09F0, 0x7484, 0x7486, 0x3DA5, 0x7487, 0x7487, 0x1845, - 0x7488, 0x7488, 0x3DA8, 0x7489, 0x7489, 0x2461, 0x748A, 0x748A, 0x3DA9, - 0x748B, 0x748B, 0x1846, 0x748C, 0x748D, 0x3DAA, 0x748E, 0x748E, 0x1842, - 0x748F, 0x748F, 0x3DAC, 0x7490, 0x7490, 0x184A, 0x7491, 0x749B, 0x3DAD, - 0x749C, 0x749C, 0x1841, 0x749D, 0x749D, 0x3DB8, 0x749E, 0x749E, 0x1847, - 0x749F, 0x74A2, 0x3DB9, 0x74A3, 0x74A3, 0x245B, 0x74A4, 0x74A5, 0x3DBD, - 0x74A6, 0x74A6, 0x2462, 0x74A7, 0x74A7, 0x184B, 0x74A8, 0x74A9, 0x1848, - 0x74AA, 0x74AF, 0x3DBF, 0x74B0, 0x74B0, 0x1F54, 0x74B1, 0x74B9, 0x3DC5, - 0x74BA, 0x74BA, 0x184D, 0x74BB, 0x74BC, 0x3DCE, 0x74BD, 0x74BD, 0x245F, - 0x74BE, 0x74C9, 0x3DD0, 0x74CA, 0x74CA, 0x20EC, 0x74CB, 0x74CE, 0x3DDC, - 0x74CF, 0x74CF, 0x245D, 0x74D0, 0x74D1, 0x3DE0, 0x74D2, 0x74D2, 0x184C, - 0x74D3, 0x74D3, 0x3DE2, 0x74D4, 0x74D4, 0x2463, 0x74D5, 0x74D9, 0x3DE3, - 0x74DA, 0x74DA, 0x2464, 0x74DB, 0x74DB, 0x3DE8, 0x74DC, 0x74DC, 0x0728, - 0x74DD, 0x74DD, 0x3DE9, 0x74DE, 0x74DE, 0x1B32, 0x74DF, 0x74DF, 0x3DEA, - 0x74E0, 0x74E0, 0x1B33, 0x74E1, 0x74E1, 0x3DEB, 0x74E2, 0x74E2, 0x0BCF, - 0x74E3, 0x74E3, 0x03F5, 0x74E4, 0x74E4, 0x0C9A, 0x74E5, 0x74E5, 0x3DEC, - 0x74E6, 0x74E6, 0x0E90, 0x74E7, 0x74ED, 0x3DED, 0x74EE, 0x74EE, 0x0EDC, - 0x74EF, 0x74EF, 0x1903, 0x74F0, 0x74F3, 0x3DF4, 0x74F4, 0x74F4, 0x1904, - 0x74F5, 0x74F5, 0x3DF8, 0x74F6, 0x74F6, 0x0BDE, 0x74F7, 0x74F7, 0x054C, - 0x74F8, 0x74FE, 0x3DF9, 0x74FF, 0x74FF, 0x1905, 0x7500, 0x7503, 0x3E00, - 0x7504, 0x7504, 0x1188, 0x7505, 0x750B, 0x3E04, 0x750C, 0x750C, 0x24A5, - 0x750D, 0x750D, 0x1485, 0x750E, 0x750E, 0x3E0B, 0x750F, 0x750F, 0x1906, - 0x7510, 0x7510, 0x3E0C, 0x7511, 0x7511, 0x1907, 0x7512, 0x7512, 0x3E0D, - 0x7513, 0x7513, 0x1908, 0x7514, 0x7517, 0x3E0E, 0x7518, 0x7518, 0x06C5, - 0x7519, 0x7519, 0x14F8, 0x751A, 0x751A, 0x0D2E, 0x751B, 0x751B, 0x3E12, - 0x751C, 0x751C, 0x0E43, 0x751D, 0x751E, 0x3E13, 0x751F, 0x751F, 0x0D33, - 0x7520, 0x7522, 0x3E15, 0x7523, 0x7523, 0x1E70, 0x7524, 0x7524, 0x3E18, - 0x7525, 0x7525, 0x0D34, 0x7526, 0x7527, 0x3E19, 0x7528, 0x7528, 0x10A8, - 0x7529, 0x7529, 0x0D9B, 0x752A, 0x752A, 0x3E1B, 0x752B, 0x752B, 0x06A1, - 0x752C, 0x752C, 0x1B34, 0x752D, 0x752D, 0x042B, 0x752E, 0x752E, 0x3E1C, - 0x752F, 0x752F, 0x1734, 0x7530, 0x7530, 0x0E42, 0x7531, 0x7531, 0x10AE, - 0x7532, 0x7532, 0x084A, 0x7533, 0x7533, 0x0D23, 0x7534, 0x7534, 0x3E1D, - 0x7535, 0x7535, 0x05C8, 0x7536, 0x7536, 0x3E1E, 0x7537, 0x7537, 0x0B33, - 0x7538, 0x7538, 0x05CA, 0x7539, 0x7539, 0x3E1F, 0x753A, 0x753A, 0x1A78, - 0x753B, 0x753B, 0x07C2, 0x753C, 0x753D, 0x3E20, 0x753E, 0x753E, 0x1816, - 0x753F, 0x753F, 0x3E22, 0x7540, 0x7540, 0x1A79, 0x7541, 0x7544, 0x3E23, - 0x7545, 0x7545, 0x04CE, 0x7546, 0x7547, 0x3E27, 0x7548, 0x7548, 0x1A7C, - 0x7549, 0x754A, 0x3E29, 0x754B, 0x754B, 0x1A7B, 0x754C, 0x754C, 0x08B8, - 0x754D, 0x754D, 0x3E2B, 0x754E, 0x754E, 0x1A7A, 0x754F, 0x754F, 0x0EC6, - 0x7550, 0x7553, 0x3E2C, 0x7554, 0x7554, 0x0B90, 0x7555, 0x7558, 0x3E30, - 0x7559, 0x7559, 0x0A3D, 0x755A, 0x755A, 0x139E, 0x755B, 0x755B, 0x1A7D, - 0x755C, 0x755C, 0x0FBE, 0x755D, 0x755D, 0x208F, 0x755E, 0x7561, 0x3E34, - 0x7562, 0x7562, 0x1E42, 0x7563, 0x7564, 0x3E38, 0x7565, 0x7565, 0x0A7B, - 0x7566, 0x7566, 0x0C07, 0x7567, 0x7569, 0x3E3A, 0x756A, 0x756A, 0x0649, - 0x756B, 0x756B, 0x1F4E, 0x756C, 0x7571, 0x3E3D, 0x7572, 0x7572, 0x1A7E, - 0x7573, 0x7573, 0x3E43, 0x7574, 0x7574, 0x0510, 0x7575, 0x7575, 0x3E44, - 0x7576, 0x7576, 0x1EB1, 0x7577, 0x7577, 0x3E45, 0x7578, 0x7578, 0x0810, - 0x7579, 0x7579, 0x1A7F, 0x757A, 0x757E, 0x3E46, 0x757F, 0x757F, 0x1814, - 0x7580, 0x7582, 0x3E4B, 0x7583, 0x7583, 0x1A80, 0x7584, 0x7585, 0x3E4E, - 0x7586, 0x7586, 0x087F, 0x7587, 0x7587, 0x1E8B, 0x7588, 0x758A, 0x3E50, - 0x758B, 0x758B, 0x1BC6, 0x758C, 0x758E, 0x3E53, 0x758F, 0x758F, 0x0D7F, - 0x7590, 0x7590, 0x3E56, 0x7591, 0x7591, 0x1050, 0x7592, 0x7592, 0x1B60, - 0x7593, 0x7593, 0x3E57, 0x7594, 0x7594, 0x1B61, 0x7595, 0x7595, 0x3E58, - 0x7596, 0x7596, 0x1B62, 0x7597, 0x7597, 0x0A0F, 0x7598, 0x7598, 0x3E59, - 0x7599, 0x7599, 0x06E8, 0x759A, 0x759A, 0x08FD, 0x759B, 0x759C, 0x3E5A, - 0x759D, 0x759D, 0x1B64, 0x759E, 0x759E, 0x3E5C, 0x759F, 0x759F, 0x0B72, - 0x75A0, 0x75A0, 0x1B63, 0x75A1, 0x75A1, 0x101A, 0x75A2, 0x75A2, 0x3E5D, - 0x75A3, 0x75A3, 0x1B66, 0x75A4, 0x75A4, 0x03D7, 0x75A5, 0x75A5, 0x08BB, - 0x75A6, 0x75AA, 0x3E5E, 0x75AB, 0x75AB, 0x1066, 0x75AC, 0x75AC, 0x1B65, - 0x75AD, 0x75AD, 0x3E63, 0x75AE, 0x75AE, 0x0532, 0x75AF, 0x75AF, 0x0685, - 0x75B0, 0x75B0, 0x1B6C, 0x75B1, 0x75B1, 0x1B6B, 0x75B2, 0x75B2, 0x0BC2, - 0x75B3, 0x75B4, 0x1B67, 0x75B5, 0x75B5, 0x0546, 0x75B6, 0x75B7, 0x3E64, - 0x75B8, 0x75B8, 0x1B69, 0x75B9, 0x75B9, 0x118F, 0x75BA, 0x75BB, 0x3E66, - 0x75BC, 0x75BC, 0x0E2E, 0x75BD, 0x75BD, 0x0901, 0x75BE, 0x75BE, 0x0825, - 0x75BF, 0x75C1, 0x3E68, 0x75C2, 0x75C2, 0x1B6E, 0x75C3, 0x75C3, 0x1B6D, - 0x75C4, 0x75C4, 0x1B6A, 0x75C5, 0x75C5, 0x0468, 0x75C6, 0x75C6, 0x3E6B, - 0x75C7, 0x75C7, 0x11A1, 0x75C8, 0x75C8, 0x109D, 0x75C9, 0x75C9, 0x08E6, - 0x75CA, 0x75CA, 0x0C87, 0x75CB, 0x75CC, 0x3E6C, 0x75CD, 0x75CD, 0x1B70, - 0x75CE, 0x75D1, 0x3E6E, 0x75D2, 0x75D2, 0x1020, 0x75D3, 0x75D3, 0x3E72, - 0x75D4, 0x75D4, 0x11CB, 0x75D5, 0x75D5, 0x0792, 0x75D6, 0x75D6, 0x1B6F, - 0x75D7, 0x75D7, 0x3E73, 0x75D8, 0x75D8, 0x05FA, 0x75D9, 0x75D9, 0x1FC6, - 0x75DA, 0x75DA, 0x3E74, 0x75DB, 0x75DB, 0x0E65, 0x75DC, 0x75DD, 0x3E75, - 0x75DE, 0x75DE, 0x0BC5, 0x75DF, 0x75E1, 0x3E77, 0x75E2, 0x75E2, 0x09EA, - 0x75E3, 0x75E3, 0x1B71, 0x75E4, 0x75E4, 0x1B74, 0x75E5, 0x75E5, 0x3E7A, - 0x75E6, 0x75E6, 0x1B73, 0x75E7, 0x75E7, 0x1B76, 0x75E8, 0x75E8, 0x1B72, - 0x75E9, 0x75E9, 0x3E7B, 0x75EA, 0x75EA, 0x07D3, 0x75EB, 0x75EB, 0x1B75, - 0x75EC, 0x75EF, 0x3E7C, 0x75F0, 0x75F0, 0x0E08, 0x75F1, 0x75F1, 0x1B78, - 0x75F2, 0x75F3, 0x3E80, 0x75F4, 0x75F4, 0x04FA, 0x75F5, 0x75F8, 0x3E82, - 0x75F9, 0x75F9, 0x043D, 0x75FA, 0x75FB, 0x3E86, 0x75FC, 0x75FC, 0x1B79, - 0x75FD, 0x75FE, 0x3E88, 0x75FF, 0x75FF, 0x1B7A, 0x7600, 0x7600, 0x1B7C, - 0x7601, 0x7601, 0x0564, 0x7602, 0x7602, 0x25AE, 0x7603, 0x7603, 0x1B77, - 0x7604, 0x7604, 0x3E8A, 0x7605, 0x7605, 0x1B7D, 0x7606, 0x7609, 0x3E8B, - 0x760A, 0x760A, 0x1B80, 0x760B, 0x760B, 0x1F01, 0x760C, 0x760C, 0x1B7E, - 0x760D, 0x760D, 0x2200, 0x760E, 0x760F, 0x3E8F, 0x7610, 0x7610, 0x1B7B, - 0x7611, 0x7614, 0x3E91, 0x7615, 0x7615, 0x1B83, 0x7616, 0x7616, 0x3E95, - 0x7617, 0x7617, 0x1B7F, 0x7618, 0x7618, 0x1B82, 0x7619, 0x7619, 0x1B84, - 0x761A, 0x761A, 0x3E96, 0x761B, 0x761B, 0x1B85, 0x761C, 0x761D, 0x3E97, - 0x761E, 0x761E, 0x25B2, 0x761F, 0x761F, 0x0ED0, 0x7620, 0x7620, 0x1B88, - 0x7621, 0x7621, 0x1E97, 0x7622, 0x7622, 0x1B87, 0x7623, 0x7623, 0x3E99, - 0x7624, 0x7624, 0x0A3F, 0x7625, 0x7625, 0x1B81, 0x7626, 0x7626, 0x0D74, - 0x7627, 0x7627, 0x20AB, 0x7628, 0x7628, 0x3E9A, 0x7629, 0x7629, 0x0574, - 0x762A, 0x762A, 0x045A, 0x762B, 0x762B, 0x0E04, 0x762C, 0x762C, 0x3E9B, - 0x762D, 0x762D, 0x1B8A, 0x762E, 0x762F, 0x3E9C, 0x7630, 0x7630, 0x1B8B, - 0x7631, 0x7632, 0x3E9E, 0x7633, 0x7633, 0x1B90, 0x7634, 0x7634, 0x116F, - 0x7635, 0x7635, 0x1B8D, 0x7636, 0x7637, 0x3EA0, 0x7638, 0x7638, 0x0C8E, - 0x7639, 0x763A, 0x3EA2, 0x763B, 0x763B, 0x25B3, 0x763C, 0x763C, 0x1B86, - 0x763D, 0x763D, 0x3EA4, 0x763E, 0x763E, 0x1B8F, 0x763F, 0x763F, 0x1B8C, - 0x7640, 0x7640, 0x1B89, 0x7641, 0x7641, 0x3EA5, 0x7642, 0x7642, 0x2028, - 0x7643, 0x7643, 0x1B8E, 0x7644, 0x7645, 0x3EA6, 0x7646, 0x7647, 0x25AF, - 0x7648, 0x7648, 0x3EA8, 0x7649, 0x7649, 0x25B1, 0x764A, 0x764B, 0x3EA9, - 0x764C, 0x764C, 0x03B4, 0x764D, 0x764D, 0x1B91, 0x764E, 0x7653, 0x3EAB, - 0x7654, 0x7654, 0x1B93, 0x7655, 0x7655, 0x3EB1, 0x7656, 0x7656, 0x1B95, - 0x7657, 0x7657, 0x3EB2, 0x7658, 0x7658, 0x25AC, 0x7659, 0x765B, 0x3EB3, - 0x765C, 0x765C, 0x1B94, 0x765D, 0x765D, 0x3EB6, 0x765E, 0x765E, 0x1B92, - 0x765F, 0x765F, 0x1E4E, 0x7660, 0x7661, 0x3EB7, 0x7662, 0x7662, 0x2202, - 0x7663, 0x7663, 0x0FCB, 0x7664, 0x7664, 0x25AB, 0x7665, 0x7665, 0x2286, - 0x7666, 0x7666, 0x3EB9, 0x7667, 0x7667, 0x25AD, 0x7668, 0x7668, 0x3EBA, - 0x7669, 0x7669, 0x25B6, 0x766A, 0x766A, 0x3EBB, 0x766B, 0x766B, 0x1B96, - 0x766C, 0x766C, 0x21E3, 0x766D, 0x766E, 0x25B4, 0x766F, 0x766F, 0x1B97, - 0x7670, 0x7670, 0x222F, 0x7671, 0x7671, 0x2165, 0x7672, 0x7672, 0x25B7, - 0x7673, 0x7677, 0x3EBC, 0x7678, 0x7678, 0x0748, 0x7679, 0x767A, 0x3EC1, - 0x767B, 0x767B, 0x05A8, 0x767C, 0x767C, 0x1EE9, 0x767D, 0x767D, 0x03E2, - 0x767E, 0x767E, 0x03E4, 0x767F, 0x7681, 0x3EC3, 0x7682, 0x7682, 0x1130, - 0x7683, 0x7683, 0x3EC6, 0x7684, 0x7684, 0x05A5, 0x7685, 0x7685, 0x3EC7, - 0x7686, 0x7686, 0x08A5, 0x7687, 0x7687, 0x07DF, 0x7688, 0x7688, 0x1B2D, - 0x7689, 0x768A, 0x3EC8, 0x768B, 0x768B, 0x06D9, 0x768C, 0x768D, 0x3ECA, - 0x768E, 0x768E, 0x1B2E, 0x768F, 0x7690, 0x3ECC, 0x7691, 0x7691, 0x03B3, - 0x7692, 0x7692, 0x3ECE, 0x7693, 0x7693, 0x1B2F, 0x7694, 0x7695, 0x3ECF, - 0x7696, 0x7696, 0x0E9F, 0x7697, 0x7698, 0x3ED1, 0x7699, 0x7699, 0x1B30, - 0x769A, 0x769A, 0x1E25, 0x769B, 0x76A3, 0x3ED3, 0x76A4, 0x76A4, 0x1B31, - 0x76A5, 0x76AD, 0x3EDC, 0x76AE, 0x76AE, 0x0BC3, 0x76AF, 0x76B0, 0x3EE5, - 0x76B1, 0x76B1, 0x11E4, 0x76B2, 0x76B2, 0x1BC8, 0x76B3, 0x76B3, 0x3EE7, - 0x76B4, 0x76B4, 0x1BC9, 0x76B5, 0x76B7, 0x3EE8, 0x76B8, 0x76B8, 0x25C0, - 0x76B9, 0x76B9, 0x3EEB, 0x76BA, 0x76BA, 0x229A, 0x76BB, 0x76BE, 0x3EEC, - 0x76BF, 0x76BF, 0x0AF8, 0x76C0, 0x76C1, 0x3EF0, 0x76C2, 0x76C2, 0x10C0, - 0x76C3, 0x76C4, 0x3EF2, 0x76C5, 0x76C5, 0x11D0, 0x76C6, 0x76C6, 0x0BA9, - 0x76C7, 0x76C7, 0x3EF4, 0x76C8, 0x76C8, 0x1094, 0x76C9, 0x76C9, 0x3EF5, - 0x76CA, 0x76CA, 0x106D, 0x76CB, 0x76CC, 0x3EF6, 0x76CD, 0x76CD, 0x1A8B, - 0x76CE, 0x76CE, 0x03C6, 0x76CF, 0x76CF, 0x1156, 0x76D0, 0x76D0, 0x0FF7, - 0x76D1, 0x76D1, 0x0853, 0x76D2, 0x76D2, 0x0787, 0x76D3, 0x76D3, 0x3EF8, - 0x76D4, 0x76D4, 0x0985, 0x76D5, 0x76D5, 0x3EF9, 0x76D6, 0x76D6, 0x06C2, - 0x76D7, 0x76D7, 0x05A2, 0x76D8, 0x76D8, 0x0B8D, 0x76D9, 0x76DA, 0x3EFA, - 0x76DB, 0x76DB, 0x0D39, 0x76DC, 0x76DD, 0x3EFC, 0x76DE, 0x76DE, 0x226E, - 0x76DF, 0x76DF, 0x0AD0, 0x76E0, 0x76E0, 0x3EFE, 0x76E1, 0x76E1, 0x1FBD, - 0x76E2, 0x76E2, 0x3EFF, 0x76E3, 0x76E3, 0x1F84, 0x76E4, 0x76E4, 0x20B2, - 0x76E5, 0x76E5, 0x1A8C, 0x76E6, 0x76E6, 0x3F00, 0x76E7, 0x76E7, 0x2043, - 0x76E8, 0x76ED, 0x3F01, 0x76EE, 0x76EE, 0x0B22, 0x76EF, 0x76EF, 0x05E1, - 0x76F0, 0x76F0, 0x3F07, 0x76F1, 0x76F1, 0x1A58, 0x76F2, 0x76F2, 0x0AA9, - 0x76F3, 0x76F3, 0x3F08, 0x76F4, 0x76F4, 0x11B0, 0x76F5, 0x76F7, 0x3F09, - 0x76F8, 0x76F8, 0x0F4D, 0x76F9, 0x76F9, 0x1A5B, 0x76FA, 0x76FB, 0x3F0C, - 0x76FC, 0x76FC, 0x0B8F, 0x76FD, 0x76FD, 0x3F0E, 0x76FE, 0x76FE, 0x061B, - 0x76FF, 0x76FF, 0x3F0F, 0x7700, 0x7700, 0x3F10, 0x7701, 0x7701, 0x0D38, - 0x7702, 0x7703, 0x3F11, 0x7704, 0x7704, 0x1A59, 0x7705, 0x7706, 0x3F13, - 0x7707, 0x7708, 0x1A5C, 0x7709, 0x7709, 0x0AC1, 0x770A, 0x770A, 0x3F15, - 0x770B, 0x770B, 0x0941, 0x770C, 0x770C, 0x3F16, 0x770D, 0x770D, 0x1A5A, - 0x770E, 0x7718, 0x3F17, 0x7719, 0x7719, 0x1A60, 0x771A, 0x771A, 0x1A5E, - 0x771B, 0x771E, 0x3F22, 0x771F, 0x771F, 0x1187, 0x7720, 0x7720, 0x0AE4, - 0x7721, 0x7721, 0x3F26, 0x7722, 0x7722, 0x1A5F, 0x7723, 0x7725, 0x3F27, - 0x7726, 0x7726, 0x1A62, 0x7727, 0x7727, 0x3F2A, 0x7728, 0x7728, 0x1144, - 0x7729, 0x7729, 0x0FCC, 0x772A, 0x772C, 0x3F2B, 0x772D, 0x772D, 0x1A61, - 0x772E, 0x772E, 0x3F2E, 0x772F, 0x772F, 0x0AD5, 0x7730, 0x7734, 0x3F2F, - 0x7735, 0x7735, 0x1A63, 0x7736, 0x7736, 0x0981, 0x7737, 0x7737, 0x091B, - 0x7738, 0x7738, 0x1A64, 0x7739, 0x7739, 0x3F34, 0x773A, 0x773A, 0x0E4A, - 0x773B, 0x773B, 0x3F35, 0x773C, 0x773C, 0x1004, 0x773D, 0x773F, 0x3F36, - 0x7740, 0x7740, 0x1222, 0x7741, 0x7741, 0x1197, 0x7742, 0x7742, 0x3F39, - 0x7743, 0x7743, 0x1A68, 0x7744, 0x7746, 0x3F3A, 0x7747, 0x7747, 0x1A67, - 0x7748, 0x774E, 0x3F3D, 0x774F, 0x774F, 0x2684, 0x7750, 0x7751, 0x1A65, - 0x7752, 0x7759, 0x3F44, 0x775A, 0x775A, 0x1A69, 0x775B, 0x775B, 0x08D5, - 0x775C, 0x775D, 0x3F4C, 0x775E, 0x775E, 0x24EF, 0x775F, 0x7760, 0x3F4E, - 0x7761, 0x7761, 0x0DA4, 0x7762, 0x7762, 0x1A6B, 0x7763, 0x7763, 0x05FC, - 0x7764, 0x7764, 0x3F50, 0x7765, 0x7765, 0x1A6C, 0x7766, 0x7766, 0x0B23, - 0x7767, 0x7767, 0x3F51, 0x7768, 0x7768, 0x1A6A, 0x7769, 0x776A, 0x3F52, - 0x776B, 0x776B, 0x08AF, 0x776C, 0x776C, 0x048E, 0x776D, 0x7778, 0x3F54, - 0x7779, 0x7779, 0x0602, 0x777A, 0x777C, 0x3F60, 0x777D, 0x777D, 0x1A6F, - 0x777E, 0x777E, 0x1270, 0x777F, 0x777F, 0x1A6D, 0x7780, 0x7780, 0x1A70, - 0x7781, 0x7783, 0x3F63, 0x7784, 0x7784, 0x0AEE, 0x7785, 0x7785, 0x0517, - 0x7786, 0x778B, 0x3F66, 0x778C, 0x778C, 0x1A71, 0x778D, 0x778D, 0x1A6E, - 0x778E, 0x778E, 0x0F26, 0x778F, 0x7790, 0x3F6C, 0x7791, 0x7791, 0x1A72, - 0x7792, 0x7792, 0x0A9E, 0x7793, 0x7797, 0x3F6E, 0x7798, 0x7798, 0x24EE, - 0x7799, 0x779D, 0x3F73, 0x779E, 0x779E, 0x2074, 0x779F, 0x77A0, 0x1A73, - 0x77A1, 0x77A1, 0x3F78, 0x77A2, 0x77A2, 0x1495, 0x77A3, 0x77A4, 0x3F79, - 0x77A5, 0x77A5, 0x0BD2, 0x77A6, 0x77A6, 0x3F7B, 0x77A7, 0x77A7, 0x0C43, - 0x77A8, 0x77A8, 0x3F7C, 0x77A9, 0x77A9, 0x11F4, 0x77AA, 0x77AA, 0x05AA, - 0x77AB, 0x77AB, 0x3F7D, 0x77AC, 0x77AC, 0x0DA7, 0x77AD, 0x77AD, 0x2687, - 0x77AE, 0x77AF, 0x3F7E, 0x77B0, 0x77B0, 0x1A75, 0x77B1, 0x77B2, 0x3F80, - 0x77B3, 0x77B3, 0x0E5C, 0x77B4, 0x77B4, 0x3F82, 0x77B5, 0x77B5, 0x1A76, - 0x77B6, 0x77BA, 0x3F83, 0x77BB, 0x77BB, 0x1151, 0x77BC, 0x77BC, 0x24F0, - 0x77BD, 0x77BD, 0x1A77, 0x77BE, 0x77BE, 0x3F88, 0x77BF, 0x77BF, 0x1D7E, - 0x77C0, 0x77C6, 0x3F89, 0x77C7, 0x77C7, 0x268D, 0x77C8, 0x77CC, 0x3F90, - 0x77CD, 0x77CD, 0x1397, 0x77CE, 0x77D6, 0x3F95, 0x77D7, 0x77D7, 0x0526, - 0x77D8, 0x77D9, 0x3F9E, 0x77DA, 0x77DA, 0x22A0, 0x77DB, 0x77DB, 0x0AB1, - 0x77DC, 0x77DC, 0x1BCA, 0x77DD, 0x77E1, 0x3FA0, 0x77E2, 0x77E2, 0x0D4F, - 0x77E3, 0x77E3, 0x105A, 0x77E4, 0x77E4, 0x3FA5, 0x77E5, 0x77E5, 0x11A9, - 0x77E6, 0x77E6, 0x3FA6, 0x77E7, 0x77E7, 0x1B1A, 0x77E8, 0x77E8, 0x3FA7, - 0x77E9, 0x77E9, 0x0907, 0x77EA, 0x77EA, 0x3FA8, 0x77EB, 0x77EB, 0x0894, - 0x77EC, 0x77EC, 0x1B1B, 0x77ED, 0x77ED, 0x060B, 0x77EE, 0x77EE, 0x03B6, - 0x77EF, 0x77EF, 0x1FAB, 0x77F0, 0x77F2, 0x3FA9, 0x77F3, 0x77F3, 0x0D46, - 0x77F4, 0x77F5, 0x3FAC, 0x77F6, 0x77F6, 0x1A22, 0x77F7, 0x77F7, 0x3FAE, - 0x77F8, 0x77F8, 0x1A23, 0x77F9, 0x77FC, 0x3FAF, 0x77FD, 0x77FD, 0x0F08, - 0x77FE, 0x77FE, 0x064C, 0x77FF, 0x77FF, 0x0980, 0x7800, 0x7800, 0x1A24, - 0x7801, 0x7801, 0x0A92, 0x7802, 0x7802, 0x0CE9, 0x7803, 0x7808, 0x3FB3, - 0x7809, 0x7809, 0x1A25, 0x780A, 0x780B, 0x3FB9, 0x780C, 0x780C, 0x0C15, - 0x780D, 0x780D, 0x0940, 0x780E, 0x7810, 0x3FBB, 0x7811, 0x7811, 0x1A28, - 0x7812, 0x7812, 0x0BB9, 0x7813, 0x7813, 0x3FBE, 0x7814, 0x7814, 0x0FF9, - 0x7815, 0x7815, 0x3FBF, 0x7816, 0x7816, 0x1206, 0x7817, 0x7818, 0x1A26, - 0x7819, 0x7819, 0x3FC0, 0x781A, 0x781A, 0x100B, 0x781B, 0x781B, 0x3FC1, - 0x781C, 0x781D, 0x1A2B, 0x781E, 0x781E, 0x3FC2, 0x781F, 0x781F, 0x1A30, - 0x7820, 0x7822, 0x3FC3, 0x7823, 0x7823, 0x1A34, 0x7824, 0x7824, 0x3FC6, - 0x7825, 0x7825, 0x1A32, 0x7826, 0x7826, 0x1A3A, 0x7827, 0x7827, 0x1189, - 0x7828, 0x7828, 0x3FC7, 0x7829, 0x7829, 0x1A35, 0x782A, 0x782B, 0x3FC8, - 0x782C, 0x782C, 0x1A33, 0x782D, 0x782D, 0x1A2A, 0x782E, 0x782F, 0x3FCA, - 0x7830, 0x7830, 0x0BAA, 0x7831, 0x7833, 0x3FCC, 0x7834, 0x7834, 0x0BE5, - 0x7835, 0x7836, 0x3FCF, 0x7837, 0x7837, 0x0D22, 0x7838, 0x7838, 0x1115, - 0x7839, 0x783B, 0x1A2D, 0x783C, 0x783C, 0x1A31, 0x783D, 0x783D, 0x3FD1, - 0x783E, 0x783E, 0x09E4, 0x783F, 0x783F, 0x3FD2, 0x7840, 0x7840, 0x0524, - 0x7841, 0x7842, 0x3FD3, 0x7843, 0x7843, 0x26A8, 0x7844, 0x7844, 0x3FD5, - 0x7845, 0x7845, 0x0741, 0x7846, 0x7846, 0x3FD6, 0x7847, 0x7847, 0x1A3C, - 0x7848, 0x784B, 0x3FD7, 0x784C, 0x784C, 0x1A3D, 0x784D, 0x784D, 0x3FDB, - 0x784E, 0x784E, 0x1A36, 0x784F, 0x784F, 0x3FDC, 0x7850, 0x7850, 0x1A3B, - 0x7851, 0x7851, 0x3FDD, 0x7852, 0x7852, 0x0F07, 0x7853, 0x7854, 0x3FDE, - 0x7855, 0x7855, 0x0DAB, 0x7856, 0x7857, 0x1A38, 0x7858, 0x785C, 0x3FE0, - 0x785D, 0x785D, 0x0F62, 0x785E, 0x7863, 0x3FE5, 0x7864, 0x7864, 0x24E9, - 0x7865, 0x7867, 0x3FEB, 0x7868, 0x7868, 0x24E5, 0x7869, 0x7869, 0x3FEE, - 0x786A, 0x786A, 0x1A3E, 0x786B, 0x786B, 0x0A3B, 0x786C, 0x786C, 0x1097, - 0x786D, 0x786D, 0x1A37, 0x786E, 0x786E, 0x0C92, 0x786F, 0x786F, 0x21FA, - 0x7870, 0x7876, 0x3FEF, 0x7877, 0x7877, 0x0862, 0x7878, 0x787B, 0x3FF6, - 0x787C, 0x787C, 0x0BB1, 0x787D, 0x7886, 0x3FFA, 0x7887, 0x7887, 0x1A42, - 0x7888, 0x7888, 0x4004, 0x7889, 0x7889, 0x05D0, 0x788A, 0x788B, 0x4005, - 0x788C, 0x788C, 0x0A5C, 0x788D, 0x788D, 0x03B8, 0x788E, 0x788E, 0x0DDE, - 0x788F, 0x7890, 0x4007, 0x7891, 0x7891, 0x0417, 0x7892, 0x7892, 0x4009, - 0x7893, 0x7893, 0x1A40, 0x7894, 0x7896, 0x400A, 0x7897, 0x7897, 0x0E9C, - 0x7898, 0x7898, 0x05C3, 0x7899, 0x7899, 0x400D, 0x789A, 0x789A, 0x1A41, - 0x789B, 0x789B, 0x1A3F, 0x789C, 0x789C, 0x1A43, 0x789D, 0x789E, 0x400E, - 0x789F, 0x789F, 0x05DB, 0x78A0, 0x78A0, 0x4010, 0x78A1, 0x78A1, 0x1A44, - 0x78A2, 0x78A2, 0x4011, 0x78A3, 0x78A3, 0x1A45, 0x78A4, 0x78A4, 0x4012, - 0x78A5, 0x78A5, 0x1A48, 0x78A6, 0x78A6, 0x4013, 0x78A7, 0x78A7, 0x0435, - 0x78A8, 0x78A8, 0x4014, 0x78A9, 0x78A9, 0x2148, 0x78AA, 0x78AC, 0x4015, - 0x78AD, 0x78AD, 0x24E4, 0x78AE, 0x78AF, 0x4018, 0x78B0, 0x78B0, 0x0BB7, - 0x78B1, 0x78B1, 0x0861, 0x78B2, 0x78B2, 0x1A46, 0x78B3, 0x78B3, 0x0E0F, - 0x78B4, 0x78B4, 0x04B1, 0x78B5, 0x78B7, 0x401A, 0x78B8, 0x78B8, 0x24E6, - 0x78B9, 0x78B9, 0x1A47, 0x78BA, 0x78BA, 0x20F7, 0x78BB, 0x78BB, 0x401D, - 0x78BC, 0x78BC, 0x206B, 0x78BD, 0x78BD, 0x401E, 0x78BE, 0x78BE, 0x0B4E, - 0x78BF, 0x78C0, 0x401F, 0x78C1, 0x78C1, 0x0548, 0x78C2, 0x78C4, 0x4021, - 0x78C5, 0x78C5, 0x0400, 0x78C6, 0x78C8, 0x4024, 0x78C9, 0x78C9, 0x1A4B, - 0x78CA, 0x78CA, 0x09C5, 0x78CB, 0x78CB, 0x056B, 0x78CC, 0x78CF, 0x4027, - 0x78D0, 0x78D0, 0x0B8E, 0x78D1, 0x78D3, 0x402B, 0x78D4, 0x78D4, 0x1A49, - 0x78D5, 0x78D5, 0x0951, 0x78D6, 0x78D8, 0x402E, 0x78D9, 0x78D9, 0x1A4A, - 0x78DA, 0x78DA, 0x22A7, 0x78DB, 0x78E2, 0x4031, 0x78E3, 0x78E3, 0x24EC, - 0x78E4, 0x78E6, 0x4039, 0x78E7, 0x78E7, 0x24EB, 0x78E8, 0x78E8, 0x0B08, - 0x78E9, 0x78EB, 0x403C, 0x78EC, 0x78EC, 0x1A4C, 0x78ED, 0x78EE, 0x403F, - 0x78EF, 0x78EF, 0x24E3, 0x78F0, 0x78F1, 0x4041, 0x78F2, 0x78F2, 0x1A4D, - 0x78F3, 0x78F3, 0x4043, 0x78F4, 0x78F4, 0x1A4F, 0x78F5, 0x78F6, 0x4044, - 0x78F7, 0x78F7, 0x0A20, 0x78F8, 0x78F9, 0x4046, 0x78FA, 0x78FA, 0x07DC, - 0x78FB, 0x78FC, 0x4048, 0x78FD, 0x78FD, 0x24EA, 0x78FE, 0x78FF, 0x404A, - 0x7900, 0x7900, 0x404C, 0x7901, 0x7901, 0x0889, 0x7902, 0x7904, 0x404D, - 0x7905, 0x7905, 0x1A4E, 0x7906, 0x790D, 0x4050, 0x790E, 0x790E, 0x1E92, - 0x790F, 0x7912, 0x4058, 0x7913, 0x7913, 0x1A50, 0x7914, 0x7918, 0x405C, - 0x7919, 0x7919, 0x1E27, 0x791A, 0x791D, 0x4061, 0x791E, 0x791E, 0x1A52, - 0x791F, 0x7923, 0x4065, 0x7924, 0x7924, 0x1A51, 0x7925, 0x7925, 0x406A, - 0x7926, 0x7926, 0x1FE6, 0x7927, 0x7929, 0x406B, 0x792A, 0x792A, 0x24E7, - 0x792B, 0x792B, 0x2012, 0x792C, 0x792C, 0x1EEC, 0x792D, 0x7930, 0x406E, - 0x7931, 0x7931, 0x24E8, 0x7932, 0x7933, 0x4072, 0x7934, 0x7934, 0x1A53, - 0x7935, 0x7939, 0x4074, 0x793A, 0x793A, 0x0D55, 0x793B, 0x793B, 0x19F8, - 0x793C, 0x793C, 0x09DC, 0x793D, 0x793D, 0x4079, 0x793E, 0x793E, 0x0D20, - 0x793F, 0x793F, 0x407A, 0x7940, 0x7940, 0x19F9, 0x7941, 0x7941, 0x0C0D, - 0x7942, 0x7945, 0x407B, 0x7946, 0x7946, 0x19FA, 0x7947, 0x7947, 0x407F, - 0x7948, 0x7948, 0x0C0C, 0x7949, 0x7949, 0x19FB, 0x794A, 0x7952, 0x4080, - 0x7953, 0x7953, 0x19FE, 0x7954, 0x7955, 0x4089, 0x7956, 0x7956, 0x1243, - 0x7957, 0x7957, 0x1A01, 0x7958, 0x7959, 0x408B, 0x795A, 0x795A, 0x19FF, - 0x795B, 0x795C, 0x19FC, 0x795D, 0x795D, 0x1200, 0x795E, 0x795E, 0x0D2A, - 0x795F, 0x795F, 0x0DE3, 0x7960, 0x7960, 0x1A02, 0x7961, 0x7961, 0x408D, - 0x7962, 0x7962, 0x1A00, 0x7963, 0x7964, 0x408E, 0x7965, 0x7965, 0x0F56, - 0x7966, 0x7966, 0x4090, 0x7967, 0x7967, 0x1A04, 0x7968, 0x7968, 0x0BD0, - 0x7969, 0x796C, 0x4091, 0x796D, 0x796D, 0x0833, 0x796E, 0x796E, 0x4095, - 0x796F, 0x796F, 0x1A03, 0x7970, 0x7976, 0x4096, 0x7977, 0x7977, 0x059C, - 0x7978, 0x7978, 0x080B, 0x7979, 0x7979, 0x409D, 0x797A, 0x797A, 0x1A05, - 0x797B, 0x797F, 0x409E, 0x7980, 0x7980, 0x130B, 0x7981, 0x7981, 0x08CC, - 0x7982, 0x7983, 0x40A3, 0x7984, 0x7984, 0x0A62, 0x7985, 0x7985, 0x1A06, - 0x7986, 0x7989, 0x40A5, 0x798A, 0x798A, 0x1A07, 0x798B, 0x798C, 0x40A9, - 0x798D, 0x798D, 0x1F66, 0x798E, 0x798E, 0x24DC, 0x798F, 0x798F, 0x069E, - 0x7990, 0x7999, 0x40AB, 0x799A, 0x799A, 0x1A08, 0x799B, 0x79A5, 0x40B5, - 0x79A6, 0x79A6, 0x26A2, 0x79A7, 0x79A7, 0x1A09, 0x79A8, 0x79A9, 0x40C0, - 0x79AA, 0x79AA, 0x24DD, 0x79AB, 0x79AD, 0x40C2, 0x79AE, 0x79AE, 0x200E, - 0x79AF, 0x79AF, 0x40C5, 0x79B0, 0x79B0, 0x24DB, 0x79B1, 0x79B1, 0x1EB8, - 0x79B2, 0x79B2, 0x40C6, 0x79B3, 0x79B3, 0x1A0A, 0x79B4, 0x79B8, 0x40C7, - 0x79B9, 0x79B9, 0x10D2, 0x79BA, 0x79BA, 0x1264, 0x79BB, 0x79BB, 0x09D6, - 0x79BC, 0x79BC, 0x40CC, 0x79BD, 0x79BD, 0x0C5A, 0x79BE, 0x79BE, 0x0783, - 0x79BF, 0x79BF, 0x40CD, 0x79C0, 0x79C0, 0x0FAE, 0x79C1, 0x79C1, 0x0DB2, - 0x79C2, 0x79C2, 0x40CE, 0x79C3, 0x79C3, 0x0E6B, 0x79C4, 0x79C5, 0x40CF, - 0x79C6, 0x79C6, 0x06CC, 0x79C7, 0x79C8, 0x40D1, 0x79C9, 0x79C9, 0x0465, - 0x79CA, 0x79CA, 0x40D3, 0x79CB, 0x79CB, 0x0C6C, 0x79CC, 0x79CC, 0x40D4, - 0x79CD, 0x79CD, 0x11D5, 0x79CE, 0x79D0, 0x40D5, 0x79D1, 0x79D1, 0x0953, - 0x79D2, 0x79D2, 0x0AF0, 0x79D3, 0x79D4, 0x40D8, 0x79D5, 0x79D5, 0x1B1D, - 0x79D6, 0x79D7, 0x40DA, 0x79D8, 0x79D8, 0x0ADD, 0x79D9, 0x79DE, 0x40DC, - 0x79DF, 0x79DF, 0x123F, 0x79E0, 0x79E2, 0x40E2, 0x79E3, 0x79E3, 0x1B1F, - 0x79E4, 0x79E4, 0x04F8, 0x79E5, 0x79E5, 0x40E5, 0x79E6, 0x79E6, 0x0C55, - 0x79E7, 0x79E7, 0x1016, 0x79E8, 0x79E8, 0x40E6, 0x79E9, 0x79E9, 0x11C7, - 0x79EA, 0x79EA, 0x40E7, 0x79EB, 0x79EB, 0x1B20, 0x79EC, 0x79EC, 0x40E8, - 0x79ED, 0x79ED, 0x1B1E, 0x79EE, 0x79EE, 0x40E9, 0x79EF, 0x79EF, 0x0812, - 0x79F0, 0x79F0, 0x04EB, 0x79F1, 0x79F7, 0x40EA, 0x79F8, 0x79F8, 0x08A6, - 0x79F9, 0x79FA, 0x40F1, 0x79FB, 0x79FB, 0x104D, 0x79FC, 0x79FC, 0x40F3, - 0x79FD, 0x79FD, 0x07F5, 0x79FE, 0x79FF, 0x40F4, 0x7A00, 0x7A00, 0x0F0E, - 0x7A01, 0x7A01, 0x40F6, 0x7A02, 0x7A02, 0x1B24, 0x7A03, 0x7A03, 0x1B23, - 0x7A04, 0x7A05, 0x40F7, 0x7A06, 0x7A06, 0x1B21, 0x7A07, 0x7A0A, 0x40F9, - 0x7A0B, 0x7A0B, 0x04F1, 0x7A0C, 0x7A0C, 0x40FD, 0x7A0D, 0x7A0D, 0x0D0D, - 0x7A0E, 0x7A0E, 0x0DA5, 0x7A0F, 0x7A13, 0x40FE, 0x7A14, 0x7A14, 0x1B26, - 0x7A15, 0x7A16, 0x4103, 0x7A17, 0x7A17, 0x03E9, 0x7A18, 0x7A19, 0x4105, - 0x7A1A, 0x7A1A, 0x11C8, 0x7A1B, 0x7A1D, 0x4107, 0x7A1E, 0x7A1E, 0x1B25, - 0x7A1F, 0x7A1F, 0x410A, 0x7A20, 0x7A20, 0x0512, 0x7A21, 0x7A22, 0x410B, - 0x7A23, 0x7A23, 0x1D8F, 0x7A24, 0x7A2D, 0x410D, 0x7A2E, 0x7A2E, 0x2295, - 0x7A2F, 0x7A30, 0x4117, 0x7A31, 0x7A31, 0x1E80, 0x7A32, 0x7A32, 0x4119, - 0x7A33, 0x7A33, 0x0ED7, 0x7A34, 0x7A36, 0x411A, 0x7A37, 0x7A37, 0x1B28, - 0x7A38, 0x7A38, 0x411D, 0x7A39, 0x7A39, 0x1B27, 0x7A3A, 0x7A3A, 0x411E, - 0x7A3B, 0x7A3B, 0x059F, 0x7A3C, 0x7A3C, 0x084D, 0x7A3D, 0x7A3D, 0x0811, - 0x7A3E, 0x7A3E, 0x411F, 0x7A3F, 0x7A3F, 0x06E0, 0x7A40, 0x7A40, 0x2677, - 0x7A41, 0x7A45, 0x4120, 0x7A46, 0x7A46, 0x0B25, 0x7A47, 0x7A4B, 0x4125, - 0x7A4C, 0x7A4C, 0x2624, 0x7A4D, 0x7A4D, 0x1F69, 0x7A4E, 0x7A4E, 0x222B, - 0x7A4F, 0x7A50, 0x412A, 0x7A51, 0x7A51, 0x1B29, 0x7A52, 0x7A56, 0x412C, - 0x7A57, 0x7A57, 0x0DE0, 0x7A58, 0x7A60, 0x4131, 0x7A61, 0x7A61, 0x257F, - 0x7A62, 0x7A62, 0x1F5B, 0x7A63, 0x7A68, 0x413A, 0x7A69, 0x7A69, 0x219B, - 0x7A6A, 0x7A6A, 0x4140, 0x7A6B, 0x7A6B, 0x267D, 0x7A6C, 0x7A6F, 0x4141, - 0x7A70, 0x7A70, 0x1B2C, 0x7A71, 0x7A73, 0x4145, 0x7A74, 0x7A74, 0x0FD1, - 0x7A75, 0x7A75, 0x4148, 0x7A76, 0x7A76, 0x08EE, 0x7A77, 0x7A77, 0x0C6B, - 0x7A78, 0x7A79, 0x1B9A, 0x7A7A, 0x7A7A, 0x0962, 0x7A7B, 0x7A7E, 0x4149, - 0x7A7F, 0x7A7F, 0x052C, 0x7A80, 0x7A80, 0x1B9C, 0x7A81, 0x7A81, 0x0E6C, - 0x7A82, 0x7A82, 0x414D, 0x7A83, 0x7A83, 0x0C51, 0x7A84, 0x7A84, 0x114E, - 0x7A85, 0x7A85, 0x414E, 0x7A86, 0x7A86, 0x1B9D, 0x7A87, 0x7A87, 0x414F, - 0x7A88, 0x7A88, 0x1B9E, 0x7A89, 0x7A8C, 0x4150, 0x7A8D, 0x7A8D, 0x0C4C, - 0x7A8E, 0x7A90, 0x4154, 0x7A91, 0x7A91, 0x102B, 0x7A92, 0x7A92, 0x11CE, - 0x7A93, 0x7A94, 0x4157, 0x7A95, 0x7A95, 0x1B9F, 0x7A96, 0x7A96, 0x08A2, - 0x7A97, 0x7A97, 0x0533, 0x7A98, 0x7A98, 0x08EC, 0x7A99, 0x7A9B, 0x4159, - 0x7A9C, 0x7A9C, 0x055F, 0x7A9D, 0x7A9D, 0x0EE0, 0x7A9E, 0x7A9E, 0x415C, - 0x7A9F, 0x7A9F, 0x096C, 0x7AA0, 0x7AA0, 0x1BA1, 0x7AA1, 0x7AA4, 0x415D, - 0x7AA5, 0x7AA5, 0x0987, 0x7AA6, 0x7AA6, 0x1BA0, 0x7AA7, 0x7AA7, 0x4161, - 0x7AA8, 0x7AA8, 0x1BA3, 0x7AA9, 0x7AA9, 0x21A0, 0x7AAA, 0x7AAA, 0x2186, - 0x7AAB, 0x7AAB, 0x4162, 0x7AAC, 0x7AAC, 0x1BA2, 0x7AAD, 0x7AAD, 0x1BA4, - 0x7AAE, 0x7AAE, 0x20ED, 0x7AAF, 0x7AB2, 0x4163, 0x7AB3, 0x7AB3, 0x1BA5, - 0x7AB4, 0x7AB5, 0x4167, 0x7AB6, 0x7AB6, 0x25B9, 0x7AB7, 0x7AB9, 0x4169, - 0x7ABA, 0x7ABA, 0x1FEA, 0x7ABB, 0x7ABE, 0x416C, 0x7ABF, 0x7ABF, 0x0A47, - 0x7AC0, 0x7AC3, 0x4170, 0x7AC4, 0x7AC4, 0x1EA4, 0x7AC5, 0x7AC5, 0x20E1, - 0x7AC6, 0x7AC6, 0x4174, 0x7AC7, 0x7AC7, 0x25B8, 0x7AC8, 0x7AC8, 0x2260, - 0x7AC9, 0x7AC9, 0x4175, 0x7ACA, 0x7ACA, 0x20E2, 0x7ACB, 0x7ACB, 0x09EB, - 0x7ACC, 0x7AD5, 0x4176, 0x7AD6, 0x7AD6, 0x0D91, 0x7AD7, 0x7AD8, 0x4180, - 0x7AD9, 0x7AD9, 0x115F, 0x7ADA, 0x7ADD, 0x4182, 0x7ADE, 0x7ADE, 0x08E9, - 0x7ADF, 0x7ADF, 0x08E8, 0x7AE0, 0x7AE0, 0x1163, 0x7AE1, 0x7AE2, 0x4186, - 0x7AE3, 0x7AE3, 0x092F, 0x7AE4, 0x7AE4, 0x4188, 0x7AE5, 0x7AE5, 0x0E60, - 0x7AE6, 0x7AE6, 0x1B99, 0x7AE7, 0x7AE9, 0x4189, 0x7AEA, 0x7AEA, 0x2141, - 0x7AEB, 0x7AEC, 0x418C, 0x7AED, 0x7AED, 0x08B0, 0x7AEE, 0x7AEE, 0x418E, - 0x7AEF, 0x7AEF, 0x060A, 0x7AF0, 0x7AF5, 0x418F, 0x7AF6, 0x7AF6, 0x1FC7, - 0x7AF7, 0x7AF8, 0x4195, 0x7AF9, 0x7AF9, 0x11F0, 0x7AFA, 0x7AFA, 0x1C63, - 0x7AFB, 0x7AFC, 0x4197, 0x7AFD, 0x7AFD, 0x1C64, 0x7AFE, 0x7AFE, 0x4199, - 0x7AFF, 0x7AFF, 0x06C8, 0x7B00, 0x7B02, 0x419A, 0x7B03, 0x7B04, 0x1C66, - 0x7B05, 0x7B05, 0x419D, 0x7B06, 0x7B06, 0x03D5, 0x7B07, 0x7B07, 0x419E, - 0x7B08, 0x7B08, 0x1C65, 0x7B09, 0x7B09, 0x419F, 0x7B0A, 0x7B0A, 0x1C69, - 0x7B0B, 0x7B0B, 0x0DE6, 0x7B0C, 0x7B0E, 0x41A0, 0x7B0F, 0x7B0F, 0x1C6B, - 0x7B10, 0x7B10, 0x41A3, 0x7B11, 0x7B11, 0x0F71, 0x7B12, 0x7B13, 0x41A4, - 0x7B14, 0x7B14, 0x0433, 0x7B15, 0x7B15, 0x1C68, 0x7B16, 0x7B18, 0x41A6, - 0x7B19, 0x7B19, 0x1C6F, 0x7B1A, 0x7B1A, 0x41A9, 0x7B1B, 0x7B1B, 0x05B2, - 0x7B1C, 0x7B1D, 0x41AA, 0x7B1E, 0x7B1E, 0x1C77, 0x7B1F, 0x7B1F, 0x41AC, - 0x7B20, 0x7B20, 0x1C72, 0x7B21, 0x7B23, 0x41AD, 0x7B24, 0x7B24, 0x1C74, - 0x7B25, 0x7B25, 0x1C73, 0x7B26, 0x7B26, 0x0698, 0x7B27, 0x7B27, 0x41B0, - 0x7B28, 0x7B28, 0x0428, 0x7B29, 0x7B29, 0x41B1, 0x7B2A, 0x7B2A, 0x1C6E, - 0x7B2B, 0x7B2B, 0x1C6A, 0x7B2C, 0x7B2C, 0x05BB, 0x7B2D, 0x7B2D, 0x41B2, - 0x7B2E, 0x7B2E, 0x1C70, 0x7B2F, 0x7B30, 0x41B3, 0x7B31, 0x7B31, 0x1C71, - 0x7B32, 0x7B32, 0x41B5, 0x7B33, 0x7B33, 0x1C75, 0x7B34, 0x7B37, 0x41B6, - 0x7B38, 0x7B38, 0x1C6D, 0x7B39, 0x7B39, 0x41BA, 0x7B3A, 0x7B3A, 0x0856, - 0x7B3B, 0x7B3B, 0x41BB, 0x7B3C, 0x7B3C, 0x0A46, 0x7B3D, 0x7B3D, 0x41BC, - 0x7B3E, 0x7B3E, 0x1C76, 0x7B3F, 0x7B44, 0x41BD, 0x7B45, 0x7B45, 0x1C7A, - 0x7B46, 0x7B46, 0x1E41, 0x7B47, 0x7B47, 0x1C6C, 0x7B48, 0x7B48, 0x41C3, - 0x7B49, 0x7B49, 0x05A9, 0x7B4A, 0x7B4A, 0x41C4, 0x7B4B, 0x7B4B, 0x08BF, - 0x7B4C, 0x7B4C, 0x1C7C, 0x7B4D, 0x7B4E, 0x41C5, 0x7B4F, 0x7B4F, 0x0641, - 0x7B50, 0x7B50, 0x097D, 0x7B51, 0x7B51, 0x11FD, 0x7B52, 0x7B52, 0x0E63, - 0x7B53, 0x7B53, 0x41C7, 0x7B54, 0x7B54, 0x0573, 0x7B55, 0x7B55, 0x41C8, - 0x7B56, 0x7B56, 0x04A6, 0x7B57, 0x7B57, 0x41C9, 0x7B58, 0x7B58, 0x1C78, - 0x7B59, 0x7B59, 0x41CA, 0x7B5A, 0x7B5A, 0x1C79, 0x7B5B, 0x7B5B, 0x0CF1, - 0x7B5C, 0x7B5C, 0x41CB, 0x7B5D, 0x7B5D, 0x1C7D, 0x7B5E, 0x7B5F, 0x41CC, - 0x7B60, 0x7B60, 0x1C7E, 0x7B61, 0x7B61, 0x41CE, 0x7B62, 0x7B62, 0x1C81, - 0x7B63, 0x7B66, 0x41CF, 0x7B67, 0x7B67, 0x25E4, 0x7B68, 0x7B6D, 0x41D3, - 0x7B6E, 0x7B6E, 0x1C7F, 0x7B6F, 0x7B70, 0x41D9, 0x7B71, 0x7B71, 0x1C83, - 0x7B72, 0x7B72, 0x1C82, 0x7B73, 0x7B74, 0x41DB, 0x7B75, 0x7B75, 0x1C7B, - 0x7B76, 0x7B76, 0x41DD, 0x7B77, 0x7B77, 0x0977, 0x7B78, 0x7B78, 0x41DE, - 0x7B79, 0x7B79, 0x0514, 0x7B7A, 0x7B7A, 0x41DF, 0x7B7B, 0x7B7B, 0x1C80, - 0x7B7C, 0x7B7D, 0x41E0, 0x7B7E, 0x7B7E, 0x0C26, 0x7B7F, 0x7B7F, 0x41E2, - 0x7B80, 0x7B80, 0x0865, 0x7B81, 0x7B84, 0x41E3, 0x7B85, 0x7B85, 0x1C8B, - 0x7B86, 0x7B8A, 0x41E7, 0x7B8B, 0x7B8B, 0x1F86, 0x7B8C, 0x7B8C, 0x41EC, - 0x7B8D, 0x7B8D, 0x0718, 0x7B8E, 0x7B8F, 0x41ED, 0x7B90, 0x7B90, 0x1C84, - 0x7B91, 0x7B93, 0x41EF, 0x7B94, 0x7B94, 0x0474, 0x7B95, 0x7B95, 0x0813, - 0x7B96, 0x7B96, 0x41F2, 0x7B97, 0x7B97, 0x0DD8, 0x7B98, 0x7B9B, 0x41F3, - 0x7B9C, 0x7B9C, 0x1C8D, 0x7B9D, 0x7B9D, 0x1C89, 0x7B9E, 0x7BA0, 0x41F7, - 0x7BA1, 0x7BA1, 0x0735, 0x7BA2, 0x7BA2, 0x1C8E, 0x7BA3, 0x7BA5, 0x41FA, - 0x7BA6, 0x7BA7, 0x1C85, 0x7BA8, 0x7BA8, 0x1C8A, 0x7BA9, 0x7BA9, 0x0A88, - 0x7BAA, 0x7BAA, 0x1C8C, 0x7BAB, 0x7BAB, 0x1C8F, 0x7BAC, 0x7BAC, 0x1C88, - 0x7BAD, 0x7BAD, 0x0870, 0x7BAE, 0x7BB0, 0x41FD, 0x7BB1, 0x7BB1, 0x0F51, - 0x7BB2, 0x7BB3, 0x4200, 0x7BB4, 0x7BB4, 0x1C90, 0x7BB5, 0x7BB7, 0x4202, - 0x7BB8, 0x7BB8, 0x1C87, 0x7BB9, 0x7BBF, 0x4205, 0x7BC0, 0x7BC0, 0x1FB3, - 0x7BC1, 0x7BC1, 0x1C92, 0x7BC2, 0x7BC3, 0x420C, 0x7BC4, 0x7BC4, 0x1EEF, - 0x7BC5, 0x7BC5, 0x420E, 0x7BC6, 0x7BC6, 0x120A, 0x7BC7, 0x7BC7, 0x0BC9, - 0x7BC8, 0x7BC8, 0x420F, 0x7BC9, 0x7BC9, 0x22A4, 0x7BCA, 0x7BCA, 0x4210, - 0x7BCB, 0x7BCB, 0x25E8, 0x7BCC, 0x7BCC, 0x1C93, 0x7BCD, 0x7BD0, 0x4211, - 0x7BD1, 0x7BD1, 0x1C91, 0x7BD2, 0x7BD2, 0x4215, 0x7BD3, 0x7BD3, 0x0A4F, - 0x7BD4, 0x7BD8, 0x4216, 0x7BD9, 0x7BD9, 0x06D8, 0x7BDA, 0x7BDA, 0x1C95, - 0x7BDB, 0x7BDC, 0x421B, 0x7BDD, 0x7BDD, 0x1C94, 0x7BDE, 0x7BE0, 0x421D, - 0x7BE1, 0x7BE1, 0x055E, 0x7BE2, 0x7BE3, 0x4220, 0x7BE4, 0x7BE4, 0x25E3, - 0x7BE5, 0x7BE6, 0x1C96, 0x7BE7, 0x7BE8, 0x4222, 0x7BE9, 0x7BE9, 0x2111, - 0x7BEA, 0x7BEA, 0x1C98, 0x7BEB, 0x7BED, 0x4224, 0x7BEE, 0x7BEE, 0x09A5, - 0x7BEF, 0x7BF0, 0x4227, 0x7BF1, 0x7BF1, 0x09D4, 0x7BF2, 0x7BF2, 0x4229, - 0x7BF3, 0x7BF3, 0x25E6, 0x7BF4, 0x7BF6, 0x422A, 0x7BF7, 0x7BF7, 0x0BB2, - 0x7BF8, 0x7BFB, 0x422D, 0x7BFC, 0x7BFC, 0x1C9B, 0x7BFD, 0x7BFD, 0x4231, - 0x7BFE, 0x7BFE, 0x1C9A, 0x7BFF, 0x7BFF, 0x4232, 0x7C00, 0x7C00, 0x25E7, - 0x7C01, 0x7C06, 0x4233, 0x7C07, 0x7C07, 0x055B, 0x7C08, 0x7C0A, 0x4239, - 0x7C0B, 0x7C0B, 0x1C9E, 0x7C0C, 0x7C0C, 0x1C99, 0x7C0D, 0x7C0D, 0x2041, - 0x7C0E, 0x7C0E, 0x423C, 0x7C0F, 0x7C0F, 0x1C9C, 0x7C10, 0x7C15, 0x423D, - 0x7C16, 0x7C16, 0x1C9D, 0x7C17, 0x7C1D, 0x4243, 0x7C1E, 0x7C1E, 0x25EA, - 0x7C1F, 0x7C1F, 0x1C9F, 0x7C20, 0x7C20, 0x424A, 0x7C21, 0x7C21, 0x1F8F, - 0x7C22, 0x7C22, 0x424B, 0x7C23, 0x7C23, 0x25EC, 0x7C24, 0x7C25, 0x424C, - 0x7C26, 0x7C26, 0x1CA1, 0x7C27, 0x7C27, 0x07DE, 0x7C28, 0x7C29, 0x424E, - 0x7C2A, 0x7C2A, 0x1CA0, 0x7C2B, 0x7C2B, 0x25EB, 0x7C2C, 0x7C37, 0x4250, - 0x7C38, 0x7C38, 0x1CA2, 0x7C39, 0x7C3C, 0x425C, 0x7C3D, 0x7C3D, 0x20D0, - 0x7C3E, 0x7C3E, 0x201D, 0x7C3F, 0x7C3F, 0x0485, 0x7C40, 0x7C40, 0x1CA4, - 0x7C41, 0x7C41, 0x1CA3, 0x7C42, 0x7C42, 0x4260, 0x7C43, 0x7C43, 0x1FF7, - 0x7C44, 0x7C4B, 0x4261, 0x7C4C, 0x7C4C, 0x1E8D, 0x7C4D, 0x7C4D, 0x0821, - 0x7C4E, 0x7C5B, 0x4269, 0x7C5C, 0x7C5C, 0x25E9, 0x7C5D, 0x7C5E, 0x4277, - 0x7C5F, 0x7C5F, 0x25EE, 0x7C60, 0x7C60, 0x203A, 0x7C61, 0x7C63, 0x4279, - 0x7C64, 0x7C64, 0x2693, 0x7C65, 0x7C68, 0x427C, 0x7C69, 0x7C69, 0x25E5, - 0x7C6A, 0x7C6A, 0x25ED, 0x7C6B, 0x7C6B, 0x4280, 0x7C6C, 0x7C6C, 0x2009, - 0x7C6D, 0x7C6D, 0x4281, 0x7C6E, 0x7C6E, 0x2065, 0x7C6F, 0x7C71, 0x4282, - 0x7C72, 0x7C72, 0x26A3, 0x7C73, 0x7C73, 0x0ADC, 0x7C74, 0x7C74, 0x12F5, - 0x7C75, 0x7C7A, 0x4285, 0x7C7B, 0x7C7B, 0x09CB, 0x7C7C, 0x7C7C, 0x1CCA, - 0x7C7D, 0x7C7D, 0x122E, 0x7C7E, 0x7C88, 0x428B, 0x7C89, 0x7C89, 0x0678, - 0x7C8A, 0x7C90, 0x4296, 0x7C91, 0x7C91, 0x1CCC, 0x7C92, 0x7C92, 0x09EC, - 0x7C93, 0x7C94, 0x429D, 0x7C95, 0x7C95, 0x0BE8, 0x7C96, 0x7C96, 0x429F, - 0x7C97, 0x7C97, 0x0559, 0x7C98, 0x7C98, 0x1154, 0x7C99, 0x7C9B, 0x42A0, - 0x7C9C, 0x7C9C, 0x1CCE, 0x7C9D, 0x7C9D, 0x1CCD, 0x7C9E, 0x7C9E, 0x1CCF, - 0x7C9F, 0x7C9F, 0x0DCF, 0x7CA0, 0x7CA1, 0x42A3, 0x7CA2, 0x7CA2, 0x1CD0, - 0x7CA3, 0x7CA3, 0x42A5, 0x7CA4, 0x7CA4, 0x1104, 0x7CA5, 0x7CA5, 0x11DF, - 0x7CA6, 0x7CA9, 0x42A6, 0x7CAA, 0x7CAA, 0x067D, 0x7CAB, 0x7CAD, 0x42AA, - 0x7CAE, 0x7CAE, 0x0A01, 0x7CAF, 0x7CB0, 0x42AD, 0x7CB1, 0x7CB1, 0x0A04, - 0x7CB2, 0x7CB2, 0x1CD1, 0x7CB3, 0x7CB3, 0x08DB, 0x7CB4, 0x7CB8, 0x42AF, - 0x7CB9, 0x7CB9, 0x0565, 0x7CBA, 0x7CBB, 0x42B4, 0x7CBC, 0x7CBD, 0x1CD2, - 0x7CBE, 0x7CBE, 0x08DA, 0x7CBF, 0x7CC0, 0x42B6, 0x7CC1, 0x7CC1, 0x1CD4, - 0x7CC2, 0x7CC4, 0x42B8, 0x7CC5, 0x7CC5, 0x1CD9, 0x7CC6, 0x7CC6, 0x42BB, - 0x7CC7, 0x7CC7, 0x1CD5, 0x7CC8, 0x7CC8, 0x1CD8, 0x7CC9, 0x7CC9, 0x42BC, - 0x7CCA, 0x7CCA, 0x07B4, 0x7CCB, 0x7CCB, 0x42BD, 0x7CCC, 0x7CCD, 0x1CD6, - 0x7CCE, 0x7CD4, 0x42BE, 0x7CD5, 0x7CD5, 0x06DD, 0x7CD6, 0x7CD6, 0x0E1A, - 0x7CD7, 0x7CD7, 0x1CDA, 0x7CD8, 0x7CD8, 0x42C5, 0x7CD9, 0x7CD9, 0x04A1, - 0x7CDA, 0x7CDB, 0x42C6, 0x7CDC, 0x7CDC, 0x0AD8, 0x7CDD, 0x7CDD, 0x25F5, - 0x7CDE, 0x7CDE, 0x1EFC, 0x7CDF, 0x7CDF, 0x1126, 0x7CE0, 0x7CE0, 0x0944, - 0x7CE1, 0x7CE6, 0x42C8, 0x7CE7, 0x7CE7, 0x2024, 0x7CE8, 0x7CE8, 0x1CDB, - 0x7CE9, 0x7CEE, 0x42CE, 0x7CEF, 0x7CEF, 0x0B75, 0x7CF0, 0x7CF0, 0x269B, - 0x7CF1, 0x7CF1, 0x42D4, 0x7CF2, 0x7CF2, 0x25F3, 0x7CF3, 0x7CF3, 0x42D5, - 0x7CF4, 0x7CF4, 0x22D9, 0x7CF5, 0x7CF5, 0x42D6, 0x7CF6, 0x7CF6, 0x25F4, - 0x7CF7, 0x7CF7, 0x42D7, 0x7CF8, 0x7CF8, 0x1CE7, 0x7CF9, 0x7CF9, 0x241B, - 0x7CFA, 0x7CFA, 0x42D8, 0x7CFB, 0x7CFB, 0x0F22, 0x7CFC, 0x7CFD, 0x42D9, - 0x7CFE, 0x7CFE, 0x1FC8, 0x7CFF, 0x7CFF, 0x42DB, 0x7D00, 0x7D00, 0x1F7B, - 0x7D01, 0x7D01, 0x42DC, 0x7D02, 0x7D02, 0x241D, 0x7D03, 0x7D03, 0x42DD, - 0x7D04, 0x7D04, 0x224C, 0x7D05, 0x7D05, 0x1F48, 0x7D06, 0x7D06, 0x241C, - 0x7D07, 0x7D08, 0x241E, 0x7D09, 0x7D09, 0x20FF, 0x7D0A, 0x7D0A, 0x0ED8, - 0x7D0B, 0x7D0B, 0x219A, 0x7D0C, 0x7D0C, 0x42DE, 0x7D0D, 0x7D0D, 0x2091, - 0x7D0E, 0x7D0F, 0x42DF, 0x7D10, 0x7D10, 0x20A7, 0x7D11, 0x7D12, 0x42E1, - 0x7D13, 0x7D13, 0x2423, 0x7D14, 0x7D14, 0x1E9B, 0x7D15, 0x7D15, 0x2422, - 0x7D16, 0x7D16, 0x42E3, 0x7D17, 0x7D17, 0x2110, 0x7D18, 0x7D18, 0x42E4, - 0x7D19, 0x7D19, 0x228D, 0x7D1A, 0x7D1A, 0x1F71, 0x7D1B, 0x7D1B, 0x1EF8, - 0x7D1C, 0x7D1C, 0x2421, 0x7D1D, 0x7D1F, 0x42E5, 0x7D20, 0x7D20, 0x0DCD, - 0x7D21, 0x7D21, 0x1EF3, 0x7D22, 0x7D22, 0x0DEC, 0x7D23, 0x7D26, 0x42E8, - 0x7D27, 0x7D27, 0x08C5, 0x7D28, 0x7D2A, 0x42EC, 0x7D2B, 0x7D2B, 0x122C, - 0x7D2C, 0x7D2E, 0x42EF, 0x7D2F, 0x7D2F, 0x09C6, 0x7D30, 0x7D30, 0x21B1, - 0x7D31, 0x7D31, 0x2426, 0x7D32, 0x7D32, 0x2425, 0x7D33, 0x7D33, 0x2120, - 0x7D34, 0x7D38, 0x42F2, 0x7D39, 0x7D39, 0x211A, 0x7D3A, 0x7D3A, 0x2424, - 0x7D3B, 0x7D3B, 0x42F7, 0x7D3C, 0x7D3C, 0x2428, 0x7D3D, 0x7D3E, 0x42F8, - 0x7D3F, 0x7D3F, 0x242A, 0x7D40, 0x7D40, 0x2429, 0x7D41, 0x7D41, 0x42FA, - 0x7D42, 0x7D42, 0x2294, 0x7D43, 0x7D43, 0x42FB, 0x7D44, 0x7D44, 0x22BE, - 0x7D45, 0x7D45, 0x42FC, 0x7D46, 0x7D46, 0x1E31, 0x7D47, 0x7D4D, 0x42FD, - 0x7D4E, 0x7D4E, 0x242C, 0x7D4F, 0x7D4F, 0x4304, 0x7D50, 0x7D50, 0x1FB5, - 0x7D51, 0x7D5C, 0x4305, 0x7D5D, 0x7D5D, 0x242B, 0x7D5E, 0x7D5E, 0x1FAF, - 0x7D5F, 0x7D60, 0x4311, 0x7D61, 0x7D61, 0x2068, 0x7D62, 0x7D62, 0x21E4, - 0x7D63, 0x7D65, 0x4313, 0x7D66, 0x7D66, 0x1F21, 0x7D67, 0x7D67, 0x4316, - 0x7D68, 0x7D68, 0x2101, 0x7D69, 0x7D6D, 0x4317, 0x7D6E, 0x7D6E, 0x0FC0, - 0x7D6F, 0x7D70, 0x431C, 0x7D71, 0x7D71, 0x217C, 0x7D72, 0x7D72, 0x214A, - 0x7D73, 0x7D73, 0x242D, 0x7D74, 0x7D75, 0x431E, 0x7D76, 0x7D76, 0x1FD4, - 0x7D77, 0x7D77, 0x1CE8, 0x7D78, 0x7D78, 0x4320, 0x7D79, 0x7D79, 0x1FD1, - 0x7D7A, 0x7D80, 0x4321, 0x7D81, 0x7D81, 0x1E33, 0x7D82, 0x7D82, 0x4328, - 0x7D83, 0x7D83, 0x242F, 0x7D84, 0x7D85, 0x4329, 0x7D86, 0x7D86, 0x242E, - 0x7D87, 0x7D87, 0x432B, 0x7D88, 0x7D88, 0x2430, 0x7D89, 0x7D89, 0x21DB, - 0x7D8A, 0x7D8E, 0x432C, 0x7D8F, 0x7D8F, 0x2158, 0x7D90, 0x7D92, 0x4331, - 0x7D93, 0x7D93, 0x1FC2, 0x7D94, 0x7D9B, 0x4334, 0x7D9C, 0x7D9C, 0x22B9, - 0x7D9D, 0x7D9D, 0x433C, 0x7D9E, 0x7D9E, 0x2436, 0x7D9F, 0x7DA1, 0x433D, - 0x7DA2, 0x7DA2, 0x1E8E, 0x7DA3, 0x7DA3, 0x2439, 0x7DA4, 0x7DA5, 0x4340, - 0x7DA6, 0x7DA6, 0x1CE9, 0x7DA7, 0x7DAA, 0x4342, 0x7DAB, 0x7DAB, 0x21C5, - 0x7DAC, 0x7DAC, 0x2437, 0x7DAD, 0x7DAD, 0x2192, 0x7DAE, 0x7DAE, 0x1CEA, - 0x7DAF, 0x7DAF, 0x4346, 0x7DB0, 0x7DB0, 0x243A, 0x7DB1, 0x7DB1, 0x1F19, - 0x7DB2, 0x7DB2, 0x218C, 0x7DB3, 0x7DB3, 0x1E40, 0x7DB4, 0x7DB4, 0x22B3, - 0x7DB5, 0x7DB7, 0x4347, 0x7DB8, 0x7DB8, 0x205F, 0x7DB9, 0x7DB9, 0x2438, - 0x7DBA, 0x7DBA, 0x2432, 0x7DBB, 0x7DBB, 0x2274, 0x7DBC, 0x7DBC, 0x434A, - 0x7DBD, 0x7DBD, 0x1E9C, 0x7DBE, 0x7DBE, 0x2431, 0x7DBF, 0x7DBF, 0x2085, - 0x7DC0, 0x7DC3, 0x434B, 0x7DC4, 0x7DC4, 0x2435, 0x7DC5, 0x7DC6, 0x434F, - 0x7DC7, 0x7DC7, 0x243B, 0x7DC8, 0x7DC9, 0x4351, 0x7DCA, 0x7DCA, 0x1FB7, - 0x7DCB, 0x7DCB, 0x2433, 0x7DCC, 0x7DD0, 0x4353, 0x7DD1, 0x7DD1, 0x2054, - 0x7DD2, 0x7DD2, 0x21DE, 0x7DD3, 0x7DD3, 0x4358, 0x7DD4, 0x7DD4, 0x2434, - 0x7DD5, 0x7DD6, 0x4359, 0x7DD7, 0x7DD7, 0x243D, 0x7DD8, 0x7DD8, 0x1F89, - 0x7DD9, 0x7DD9, 0x243C, 0x7DDA, 0x7DDC, 0x435B, 0x7DDD, 0x7DDD, 0x1F6E, - 0x7DDE, 0x7DDE, 0x1ED8, 0x7DDF, 0x7DDF, 0x435E, 0x7DE0, 0x7DE0, 0x1EBF, - 0x7DE1, 0x7DE1, 0x2445, 0x7DE2, 0x7DE2, 0x435F, 0x7DE3, 0x7DE3, 0x2249, - 0x7DE4, 0x7DE5, 0x4360, 0x7DE6, 0x7DE6, 0x2441, 0x7DE7, 0x7DE7, 0x4362, - 0x7DE8, 0x7DE8, 0x1E47, 0x7DE9, 0x7DE9, 0x1F56, 0x7DEA, 0x7DEB, 0x4363, - 0x7DEC, 0x7DEC, 0x2086, 0x7DED, 0x7DEE, 0x4365, 0x7DEF, 0x7DEF, 0x2196, - 0x7DF0, 0x7DF0, 0x4367, 0x7DF1, 0x7DF1, 0x2443, 0x7DF2, 0x7DF2, 0x243F, - 0x7DF3, 0x7DF3, 0x4368, 0x7DF4, 0x7DF4, 0x2023, 0x7DF5, 0x7DF5, 0x4369, - 0x7DF6, 0x7DF6, 0x2442, 0x7DF7, 0x7DF8, 0x436A, 0x7DF9, 0x7DF9, 0x243E, - 0x7DFA, 0x7DFA, 0x436C, 0x7DFB, 0x7DFB, 0x26A6, 0x7DFC, 0x7DFF, 0x436D, - 0x7E00, 0x7E07, 0x4371, 0x7E08, 0x7E08, 0x234E, 0x7E09, 0x7E09, 0x2446, - 0x7E0A, 0x7E0A, 0x244B, 0x7E0B, 0x7E0B, 0x2444, 0x7E0C, 0x7E0F, 0x4379, - 0x7E10, 0x7E10, 0x2427, 0x7E11, 0x7E11, 0x244C, 0x7E12, 0x7E1A, 0x437D, - 0x7E1B, 0x7E1B, 0x1F0F, 0x7E1C, 0x7E1C, 0x4386, 0x7E1D, 0x7E1D, 0x2447, - 0x7E1E, 0x7E1E, 0x2449, 0x7E1F, 0x7E1F, 0x2448, 0x7E20, 0x7E22, 0x4387, - 0x7E23, 0x7E23, 0x21C2, 0x7E24, 0x7E26, 0x438A, 0x7E27, 0x7E27, 0x216E, - 0x7E28, 0x7E2A, 0x438D, 0x7E2B, 0x7E2B, 0x1F03, 0x7E2C, 0x7E2C, 0x4390, - 0x7E2D, 0x7E2D, 0x244A, 0x7E2E, 0x7E2E, 0x215C, 0x7E2F, 0x7E30, 0x4391, - 0x7E31, 0x7E31, 0x22BB, 0x7E32, 0x7E32, 0x2450, 0x7E33, 0x7E33, 0x4393, - 0x7E34, 0x7E34, 0x2694, 0x7E35, 0x7E35, 0x244F, 0x7E36, 0x7E36, 0x25F6, - 0x7E37, 0x7E37, 0x2051, 0x7E38, 0x7E38, 0x4394, 0x7E39, 0x7E39, 0x244E, - 0x7E3A, 0x7E3A, 0x4395, 0x7E3B, 0x7E3B, 0x1DFB, 0x7E3C, 0x7E3C, 0x4396, - 0x7E3D, 0x7E3D, 0x22BA, 0x7E3E, 0x7E3E, 0x1F6D, 0x7E3F, 0x7E40, 0x4397, - 0x7E41, 0x7E41, 0x064E, 0x7E42, 0x7E44, 0x4399, 0x7E45, 0x7E45, 0x2452, - 0x7E46, 0x7E46, 0x2451, 0x7E47, 0x7E47, 0x1CEB, 0x7E48, 0x7E51, 0x439C, - 0x7E52, 0x7E52, 0x2455, 0x7E53, 0x7E53, 0x43A6, 0x7E54, 0x7E54, 0x2289, - 0x7E55, 0x7E55, 0x2116, 0x7E56, 0x7E59, 0x43A7, 0x7E5A, 0x7E5A, 0x2454, - 0x7E5B, 0x7E5D, 0x43AB, 0x7E5E, 0x7E5E, 0x20FB, 0x7E5F, 0x7E61, 0x43AE, - 0x7E62, 0x7E62, 0x2440, 0x7E63, 0x7E68, 0x43B1, 0x7E69, 0x7E69, 0x2126, - 0x7E6A, 0x7E6A, 0x1F61, 0x7E6B, 0x7E6B, 0x269D, 0x7E6C, 0x7E6C, 0x43B7, - 0x7E6D, 0x7E6D, 0x1F8A, 0x7E6E, 0x7E6E, 0x2456, 0x7E6F, 0x7E6F, 0x2459, - 0x7E70, 0x7E70, 0x2458, 0x7E71, 0x7E72, 0x43B8, 0x7E73, 0x7E73, 0x1FAE, - 0x7E74, 0x7E78, 0x43BA, 0x7E79, 0x7E79, 0x221A, 0x7E7A, 0x7E7B, 0x43BF, - 0x7E7C, 0x7E7C, 0x1F7A, 0x7E7D, 0x7E7D, 0x244D, 0x7E7E, 0x7E7E, 0x2457, - 0x7E7F, 0x7E81, 0x43C1, 0x7E82, 0x7E82, 0x1248, 0x7E83, 0x7E87, 0x43C4, - 0x7E88, 0x7E88, 0x2453, 0x7E89, 0x7E89, 0x43C9, 0x7E8A, 0x7E8A, 0x2420, - 0x7E8B, 0x7E8B, 0x43CA, 0x7E8C, 0x7E8C, 0x21DF, 0x7E8D, 0x7E8D, 0x2685, - 0x7E8E, 0x7E8E, 0x43CB, 0x7E8F, 0x7E8F, 0x1E6E, 0x7E90, 0x7E92, 0x43CC, - 0x7E93, 0x7E93, 0x2224, 0x7E94, 0x7E94, 0x2670, 0x7E95, 0x7E95, 0x43CF, - 0x7E96, 0x7E96, 0x21BA, 0x7E97, 0x7E97, 0x43D0, 0x7E98, 0x7E98, 0x245A, - 0x7E99, 0x7E9A, 0x43D1, 0x7E9B, 0x7E9B, 0x1CEC, 0x7E9C, 0x7E9C, 0x1FFF, - 0x7E9D, 0x7E9E, 0x43D3, 0x7E9F, 0x7E9F, 0x17D3, 0x7EA0, 0x7EA0, 0x08EF, - 0x7EA1, 0x7EA1, 0x17D4, 0x7EA2, 0x7EA2, 0x07A3, 0x7EA3, 0x7EA3, 0x17D5, - 0x7EA4, 0x7EA4, 0x0F38, 0x7EA5, 0x7EA5, 0x17D6, 0x7EA6, 0x7EA6, 0x10FF, - 0x7EA7, 0x7EA7, 0x0829, 0x7EA8, 0x7EA9, 0x17D7, 0x7EAA, 0x7EAA, 0x0840, - 0x7EAB, 0x7EAB, 0x0CAD, 0x7EAC, 0x7EAC, 0x0EC2, 0x7EAD, 0x7EAD, 0x17D9, - 0x7EAE, 0x7EAE, 0x43D5, 0x7EAF, 0x7EAF, 0x0542, 0x7EB0, 0x7EB0, 0x17DA, - 0x7EB1, 0x7EB1, 0x0CED, 0x7EB2, 0x7EB2, 0x06D4, 0x7EB3, 0x7EB3, 0x0B2C, - 0x7EB4, 0x7EB4, 0x43D6, 0x7EB5, 0x7EB5, 0x123A, 0x7EB6, 0x7EB6, 0x0A81, - 0x7EB7, 0x7EB7, 0x0674, 0x7EB8, 0x7EB8, 0x11BC, 0x7EB9, 0x7EB9, 0x0ED5, - 0x7EBA, 0x7EBA, 0x0661, 0x7EBB, 0x7EBC, 0x43D7, 0x7EBD, 0x7EBD, 0x0B67, - 0x7EBE, 0x7EBE, 0x17DB, 0x7EBF, 0x7EBF, 0x0F4C, 0x7EC0, 0x7EC2, 0x17DC, - 0x7EC3, 0x7EC3, 0x0A00, 0x7EC4, 0x7EC4, 0x1246, 0x7EC5, 0x7EC5, 0x0D29, - 0x7EC6, 0x7EC6, 0x0F25, 0x7EC7, 0x7EC7, 0x11AE, 0x7EC8, 0x7EC8, 0x11D4, - 0x7EC9, 0x7EC9, 0x17DF, 0x7ECA, 0x7ECA, 0x03F8, 0x7ECB, 0x7ECC, 0x17E0, - 0x7ECD, 0x7ECD, 0x0D15, 0x7ECE, 0x7ECE, 0x1076, 0x7ECF, 0x7ECF, 0x08DC, - 0x7ED0, 0x7ED0, 0x17E2, 0x7ED1, 0x7ED1, 0x03FE, 0x7ED2, 0x7ED2, 0x0CB9, - 0x7ED3, 0x7ED3, 0x08B2, 0x7ED4, 0x7ED4, 0x17E3, 0x7ED5, 0x7ED5, 0x0CA1, - 0x7ED6, 0x7ED6, 0x43D9, 0x7ED7, 0x7ED7, 0x17E4, 0x7ED8, 0x7ED8, 0x07FB, - 0x7ED9, 0x7ED9, 0x06F3, 0x7EDA, 0x7EDA, 0x0FCD, 0x7EDB, 0x7EDB, 0x17E5, - 0x7EDC, 0x7EDC, 0x0A8E, 0x7EDD, 0x7EDD, 0x0927, 0x7EDE, 0x7EDE, 0x089B, - 0x7EDF, 0x7EDF, 0x0E64, 0x7EE0, 0x7EE1, 0x17E6, 0x7EE2, 0x7EE2, 0x091D, - 0x7EE3, 0x7EE3, 0x0FB0, 0x7EE4, 0x7EE4, 0x43DA, 0x7EE5, 0x7EE5, 0x0DDC, - 0x7EE6, 0x7EE6, 0x0E23, 0x7EE7, 0x7EE7, 0x083F, 0x7EE8, 0x7EE8, 0x17E8, - 0x7EE9, 0x7EE9, 0x081B, 0x7EEA, 0x7EEA, 0x0FC2, 0x7EEB, 0x7EEB, 0x17E9, - 0x7EEC, 0x7EEC, 0x43DB, 0x7EED, 0x7EED, 0x0FC3, 0x7EEE, 0x7EEF, 0x17EA, - 0x7EF0, 0x7EF0, 0x0545, 0x7EF1, 0x7EF2, 0x17EC, 0x7EF3, 0x7EF3, 0x0D37, - 0x7EF4, 0x7EF4, 0x0EBB, 0x7EF5, 0x7EF5, 0x0AE5, 0x7EF6, 0x7EF6, 0x17EF, - 0x7EF7, 0x7EF7, 0x042A, 0x7EF8, 0x7EF8, 0x0516, 0x7EF9, 0x7EF9, 0x43DC, - 0x7EFA, 0x7EFB, 0x17F0, 0x7EFC, 0x7EFC, 0x1238, 0x7EFD, 0x7EFD, 0x1161, - 0x7EFE, 0x7EFE, 0x17F2, 0x7EFF, 0x7EFF, 0x0A73, 0x7F00, 0x7F00, 0x1217, - 0x7F01, 0x7F03, 0x17F3, 0x7F04, 0x7F04, 0x085D, 0x7F05, 0x7F05, 0x0AEA, - 0x7F06, 0x7F06, 0x09AD, 0x7F07, 0x7F08, 0x17F6, 0x7F09, 0x7F09, 0x081C, - 0x7F0A, 0x7F0A, 0x43DD, 0x7F0B, 0x7F0C, 0x17F8, 0x7F0D, 0x7F0D, 0x17EE, - 0x7F0E, 0x7F0E, 0x060F, 0x7F0F, 0x7F0F, 0x17FA, 0x7F10, 0x7F10, 0x43DE, - 0x7F11, 0x7F12, 0x17FB, 0x7F13, 0x7F13, 0x07CF, 0x7F14, 0x7F14, 0x05BF, - 0x7F15, 0x7F15, 0x0A6D, 0x7F16, 0x7F16, 0x0449, 0x7F17, 0x7F17, 0x17FD, - 0x7F18, 0x7F18, 0x10F8, 0x7F19, 0x7F19, 0x17FE, 0x7F1A, 0x7F1A, 0x06BA, - 0x7F1B, 0x7F1B, 0x1800, 0x7F1C, 0x7F1C, 0x17FF, 0x7F1D, 0x7F1D, 0x0689, - 0x7F1E, 0x7F1E, 0x43DF, 0x7F1F, 0x7F1F, 0x1801, 0x7F20, 0x7F20, 0x04BF, - 0x7F21, 0x7F27, 0x1802, 0x7F28, 0x7F28, 0x108C, 0x7F29, 0x7F29, 0x0DEA, - 0x7F2A, 0x7F2D, 0x1809, 0x7F2E, 0x7F2E, 0x0D02, 0x7F2F, 0x7F33, 0x180D, - 0x7F34, 0x7F34, 0x089A, 0x7F35, 0x7F35, 0x1812, 0x7F36, 0x7F36, 0x1C5E, - 0x7F37, 0x7F37, 0x43E0, 0x7F38, 0x7F38, 0x06D2, 0x7F39, 0x7F39, 0x43E1, - 0x7F3A, 0x7F3A, 0x0C8C, 0x7F3B, 0x7F41, 0x43E2, 0x7F42, 0x7F42, 0x1C5F, - 0x7F43, 0x7F43, 0x43E9, 0x7F44, 0x7F45, 0x1C60, 0x7F46, 0x7F4B, 0x43EA, - 0x7F4C, 0x7F4C, 0x25E2, 0x7F4D, 0x7F4D, 0x43F0, 0x7F4E, 0x7F4E, 0x269A, - 0x7F4F, 0x7F4F, 0x43F1, 0x7F50, 0x7F50, 0x0737, 0x7F51, 0x7F51, 0x0EA9, - 0x7F52, 0x7F53, 0x43F2, 0x7F54, 0x7F54, 0x129E, 0x7F55, 0x7F55, 0x0768, - 0x7F56, 0x7F56, 0x43F4, 0x7F57, 0x7F57, 0x0A85, 0x7F58, 0x7F58, 0x1A81, - 0x7F59, 0x7F59, 0x43F5, 0x7F5A, 0x7F5A, 0x0640, 0x7F5B, 0x7F5E, 0x43F6, - 0x7F5F, 0x7F5F, 0x1A83, 0x7F60, 0x7F60, 0x43FA, 0x7F61, 0x7F61, 0x1A82, - 0x7F62, 0x7F62, 0x03E0, 0x7F63, 0x7F67, 0x43FB, 0x7F68, 0x7F68, 0x1A85, - 0x7F69, 0x7F69, 0x1177, 0x7F6A, 0x7F6A, 0x124C, 0x7F6B, 0x7F6D, 0x4400, - 0x7F6E, 0x7F6E, 0x11C2, 0x7F6F, 0x7F6F, 0x4403, 0x7F70, 0x7F70, 0x1EEA, - 0x7F71, 0x7F71, 0x1A87, 0x7F72, 0x7F72, 0x0D87, 0x7F73, 0x7F73, 0x4404, - 0x7F74, 0x7F74, 0x1A86, 0x7F75, 0x7F76, 0x4405, 0x7F77, 0x7F77, 0x1E2C, - 0x7F78, 0x7F78, 0x4407, 0x7F79, 0x7F79, 0x1A88, 0x7F7A, 0x7F7D, 0x4408, - 0x7F7E, 0x7F7E, 0x1A8A, 0x7F7F, 0x7F80, 0x440C, 0x7F81, 0x7F81, 0x1A89, - 0x7F82, 0x7F84, 0x440E, 0x7F85, 0x7F85, 0x2062, 0x7F86, 0x7F86, 0x24F1, - 0x7F87, 0x7F87, 0x4411, 0x7F88, 0x7F88, 0x24F2, 0x7F89, 0x7F89, 0x4412, - 0x7F8A, 0x7F8A, 0x101B, 0x7F8B, 0x7F8B, 0x4413, 0x7F8C, 0x7F8C, 0x0C39, - 0x7F8D, 0x7F8D, 0x4414, 0x7F8E, 0x7F8E, 0x0AC5, 0x7F8F, 0x7F93, 0x4415, - 0x7F94, 0x7F94, 0x06DC, 0x7F95, 0x7F99, 0x441A, 0x7F9A, 0x7F9A, 0x0A30, - 0x7F9B, 0x7F9C, 0x441F, 0x7F9D, 0x7F9D, 0x1CC4, 0x7F9E, 0x7F9E, 0x0FAA, - 0x7F9F, 0x7F9F, 0x1CC5, 0x7FA0, 0x7FA0, 0x4421, 0x7FA1, 0x7FA1, 0x0F48, - 0x7FA2, 0x7FA3, 0x4422, 0x7FA4, 0x7FA4, 0x0C95, 0x7FA5, 0x7FA5, 0x25F2, - 0x7FA6, 0x7FA6, 0x4424, 0x7FA7, 0x7FA7, 0x1CC6, 0x7FA8, 0x7FA8, 0x4425, - 0x7FA9, 0x7FA9, 0x2215, 0x7FAA, 0x7FAE, 0x4426, 0x7FAF, 0x7FB0, 0x1CC7, - 0x7FB1, 0x7FB1, 0x442B, 0x7FB2, 0x7FB2, 0x1CC9, 0x7FB3, 0x7FB7, 0x442C, - 0x7FB8, 0x7FB8, 0x130E, 0x7FB9, 0x7FB9, 0x06F9, 0x7FBA, 0x7FBB, 0x4431, - 0x7FBC, 0x7FBC, 0x176D, 0x7FBD, 0x7FBD, 0x10D5, 0x7FBE, 0x7FBE, 0x4433, - 0x7FBF, 0x7FBF, 0x1CDE, 0x7FC0, 0x7FC0, 0x4434, 0x7FC1, 0x7FC1, 0x0EDB, - 0x7FC2, 0x7FC4, 0x4435, 0x7FC5, 0x7FC5, 0x0506, 0x7FC6, 0x7FC9, 0x4438, - 0x7FCA, 0x7FCA, 0x1B98, 0x7FCB, 0x7FCB, 0x443C, 0x7FCC, 0x7FCC, 0x1075, - 0x7FCD, 0x7FCD, 0x443D, 0x7FCE, 0x7FCE, 0x1CDF, 0x7FCF, 0x7FD1, 0x443E, - 0x7FD2, 0x7FD2, 0x21AE, 0x7FD3, 0x7FD3, 0x4441, 0x7FD4, 0x7FD4, 0x0F55, - 0x7FD5, 0x7FD5, 0x1CE0, 0x7FD6, 0x7FD7, 0x4442, 0x7FD8, 0x7FD8, 0x0C49, - 0x7FD9, 0x7FDE, 0x4444, 0x7FDF, 0x7FDF, 0x05B5, 0x7FE0, 0x7FE0, 0x0567, - 0x7FE1, 0x7FE1, 0x1CE2, 0x7FE2, 0x7FE4, 0x444A, 0x7FE5, 0x7FE5, 0x1CE1, - 0x7FE6, 0x7FE6, 0x1CE3, 0x7FE7, 0x7FE8, 0x444D, 0x7FE9, 0x7FE9, 0x1CE4, - 0x7FEA, 0x7FED, 0x444F, 0x7FEE, 0x7FEE, 0x1CE5, 0x7FEF, 0x7FEF, 0x4453, - 0x7FF0, 0x7FF0, 0x0769, 0x7FF1, 0x7FF1, 0x03CA, 0x7FF2, 0x7FF2, 0x4454, - 0x7FF3, 0x7FF3, 0x1CE6, 0x7FF4, 0x7FF8, 0x4455, 0x7FF9, 0x7FF9, 0x20E0, - 0x7FFA, 0x7FFA, 0x445A, 0x7FFB, 0x7FFB, 0x064A, 0x7FFC, 0x7FFC, 0x1074, - 0x7FFD, 0x7FFF, 0x445B, 0x8000, 0x8000, 0x1032, 0x8001, 0x8001, 0x09BA, - 0x8002, 0x8002, 0x445E, 0x8003, 0x8003, 0x0949, 0x8004, 0x8004, 0x1953, - 0x8005, 0x8005, 0x1180, 0x8006, 0x8006, 0x191A, 0x8007, 0x800A, 0x445F, - 0x800B, 0x800B, 0x1BD7, 0x800C, 0x800C, 0x0637, 0x800D, 0x800D, 0x0D98, - 0x800E, 0x800F, 0x4463, 0x8010, 0x8010, 0x0B30, 0x8011, 0x8011, 0x4465, - 0x8012, 0x8012, 0x1BCB, 0x8013, 0x8013, 0x4466, 0x8014, 0x8014, 0x1BCC, - 0x8015, 0x8015, 0x06F6, 0x8016, 0x8016, 0x1BCD, 0x8017, 0x8017, 0x077B, - 0x8018, 0x8018, 0x1108, 0x8019, 0x8019, 0x03DD, 0x801A, 0x801B, 0x4467, - 0x801C, 0x801C, 0x1BCE, 0x801D, 0x801F, 0x4469, 0x8020, 0x8020, 0x1BCF, - 0x8021, 0x8021, 0x446C, 0x8022, 0x8022, 0x1BD0, 0x8023, 0x8024, 0x446D, - 0x8025, 0x8027, 0x1BD1, 0x8028, 0x8028, 0x1BD5, 0x8029, 0x8029, 0x1BD4, - 0x802A, 0x802A, 0x0B96, 0x802B, 0x802B, 0x446F, 0x802C, 0x802C, 0x25C2, - 0x802D, 0x802D, 0x4470, 0x802E, 0x802E, 0x25C1, 0x802F, 0x8030, 0x4471, - 0x8031, 0x8031, 0x1BD6, 0x8032, 0x8032, 0x4473, 0x8033, 0x8033, 0x0639, - 0x8034, 0x8034, 0x4474, 0x8035, 0x8035, 0x1BD8, 0x8036, 0x8036, 0x1035, - 0x8037, 0x8037, 0x14B1, 0x8038, 0x8038, 0x0DBF, 0x8039, 0x803A, 0x4475, - 0x803B, 0x803B, 0x0501, 0x803C, 0x803C, 0x4477, 0x803D, 0x803D, 0x0583, - 0x803E, 0x803E, 0x4478, 0x803F, 0x803F, 0x06FB, 0x8040, 0x8041, 0x4479, - 0x8042, 0x8042, 0x0B57, 0x8043, 0x8043, 0x1BD9, 0x8044, 0x8045, 0x447B, - 0x8046, 0x8046, 0x1BDA, 0x8047, 0x8049, 0x447D, 0x804A, 0x804A, 0x0A0D, - 0x804B, 0x804B, 0x0A44, 0x804C, 0x804C, 0x11AF, 0x804D, 0x804D, 0x1BDB, - 0x804E, 0x8051, 0x4480, 0x8052, 0x8052, 0x1BDC, 0x8053, 0x8053, 0x4484, - 0x8054, 0x8054, 0x09F3, 0x8055, 0x8055, 0x4485, 0x8056, 0x8056, 0x2128, - 0x8057, 0x8057, 0x4486, 0x8058, 0x8058, 0x0BD7, 0x8059, 0x8059, 0x4487, - 0x805A, 0x805A, 0x090A, 0x805B, 0x805D, 0x4488, 0x805E, 0x805E, 0x2199, - 0x805F, 0x8068, 0x448B, 0x8069, 0x8069, 0x1BDD, 0x806A, 0x806A, 0x0552, - 0x806B, 0x806E, 0x4495, 0x806F, 0x806F, 0x2017, 0x8070, 0x8070, 0x1EA0, - 0x8071, 0x8071, 0x1BDE, 0x8072, 0x8072, 0x2125, 0x8073, 0x8073, 0x214D, - 0x8074, 0x8074, 0x4499, 0x8075, 0x8075, 0x25C4, 0x8076, 0x8076, 0x209D, - 0x8077, 0x8077, 0x228A, 0x8078, 0x8078, 0x449A, 0x8079, 0x8079, 0x25C3, - 0x807A, 0x807C, 0x449B, 0x807D, 0x807D, 0x2179, 0x807E, 0x807E, 0x2038, - 0x807F, 0x807F, 0x1A1E, 0x8080, 0x8080, 0x1A1D, 0x8081, 0x8082, 0x449E, - 0x8083, 0x8083, 0x0DD5, 0x8084, 0x8084, 0x1065, 0x8085, 0x8085, 0x2155, - 0x8086, 0x8086, 0x0DB6, 0x8087, 0x8087, 0x1179, 0x8088, 0x8088, 0x44A0, - 0x8089, 0x8089, 0x0CBD, 0x808A, 0x808A, 0x44A1, 0x808B, 0x808B, 0x09CA, - 0x808C, 0x808C, 0x0814, 0x808D, 0x8092, 0x44A2, 0x8093, 0x8093, 0x1971, - 0x8094, 0x8095, 0x44A8, 0x8096, 0x8096, 0x0F6F, 0x8097, 0x8097, 0x44AA, - 0x8098, 0x8098, 0x11E1, 0x8099, 0x8099, 0x44AB, 0x809A, 0x809A, 0x0606, - 0x809B, 0x809B, 0x06D3, 0x809C, 0x809C, 0x1970, 0x809D, 0x809D, 0x06C9, - 0x809E, 0x809E, 0x44AC, 0x809F, 0x809F, 0x196F, 0x80A0, 0x80A0, 0x04CB, - 0x80A1, 0x80A1, 0x0722, 0x80A2, 0x80A2, 0x11AA, 0x80A3, 0x80A3, 0x44AD, - 0x80A4, 0x80A4, 0x0691, 0x80A5, 0x80A5, 0x0667, 0x80A6, 0x80A8, 0x44AE, - 0x80A9, 0x80A9, 0x085A, 0x80AA, 0x80AA, 0x065B, 0x80AB, 0x80AB, 0x1976, - 0x80AC, 0x80AC, 0x44B1, 0x80AD, 0x80AD, 0x1977, 0x80AE, 0x80AE, 0x03C4, - 0x80AF, 0x80AF, 0x095C, 0x80B0, 0x80B0, 0x44B2, 0x80B1, 0x80B1, 0x1975, - 0x80B2, 0x80B2, 0x10E2, 0x80B3, 0x80B3, 0x44B3, 0x80B4, 0x80B4, 0x1978, - 0x80B5, 0x80B6, 0x44B4, 0x80B7, 0x80B7, 0x1979, 0x80B8, 0x80B9, 0x44B6, - 0x80BA, 0x80BA, 0x066B, 0x80BB, 0x80BB, 0x44B8, 0x80BC, 0x80BC, 0x1972, - 0x80BD, 0x80BD, 0x1974, 0x80BE, 0x80BE, 0x0D2F, 0x80BF, 0x80BF, 0x11D6, - 0x80C0, 0x80C0, 0x116E, 0x80C1, 0x80C1, 0x0F7D, 0x80C2, 0x80C2, 0x197F, - 0x80C3, 0x80C3, 0x0EC7, 0x80C4, 0x80C4, 0x1980, 0x80C5, 0x80C5, 0x44B9, - 0x80C6, 0x80C6, 0x0589, 0x80C7, 0x80CB, 0x44BA, 0x80CC, 0x80CC, 0x041C, - 0x80CD, 0x80CD, 0x1982, 0x80CE, 0x80CE, 0x0DF8, 0x80CF, 0x80D5, 0x44BF, - 0x80D6, 0x80D6, 0x0B97, 0x80D7, 0x80D7, 0x1983, 0x80D8, 0x80D8, 0x44C6, - 0x80D9, 0x80D9, 0x1981, 0x80DA, 0x80DA, 0x0BA0, 0x80DB, 0x80DB, 0x197E, - 0x80DC, 0x80DC, 0x0D3B, 0x80DD, 0x80DD, 0x1985, 0x80DE, 0x80DE, 0x0406, - 0x80DF, 0x80E0, 0x44C7, 0x80E1, 0x80E1, 0x07B1, 0x80E2, 0x80E3, 0x44C9, - 0x80E4, 0x80E4, 0x126D, 0x80E5, 0x80E5, 0x1BC7, 0x80E6, 0x80E6, 0x44CB, - 0x80E7, 0x80EA, 0x197A, 0x80EB, 0x80EB, 0x1986, 0x80EC, 0x80EC, 0x179A, - 0x80ED, 0x80ED, 0x1989, 0x80EE, 0x80EE, 0x44CC, 0x80EF, 0x80EF, 0x0975, - 0x80F0, 0x80F0, 0x104F, 0x80F1, 0x80F1, 0x1987, 0x80F2, 0x80F2, 0x198C, - 0x80F3, 0x80F3, 0x06E7, 0x80F4, 0x80F4, 0x1988, 0x80F5, 0x80F5, 0x44CD, - 0x80F6, 0x80F6, 0x088B, 0x80F7, 0x80F7, 0x44CE, 0x80F8, 0x80F8, 0x0FA3, - 0x80F9, 0x80F9, 0x44CF, 0x80FA, 0x80FA, 0x03C2, 0x80FB, 0x80FB, 0x44D0, - 0x80FC, 0x80FC, 0x198D, 0x80FD, 0x80FD, 0x0B3F, 0x80FE, 0x80FF, 0x44D1, - 0x8100, 0x8101, 0x44D3, 0x8102, 0x8102, 0x11AB, 0x8103, 0x8104, 0x44D5, - 0x8105, 0x8105, 0x21D2, 0x8106, 0x8106, 0x0563, 0x8107, 0x8108, 0x44D7, - 0x8109, 0x8109, 0x0A9D, 0x810A, 0x810A, 0x082C, 0x810B, 0x810C, 0x44D9, - 0x810D, 0x810E, 0x198A, 0x810F, 0x810F, 0x1123, 0x8110, 0x8110, 0x0C09, - 0x8111, 0x8111, 0x0B37, 0x8112, 0x8112, 0x198F, 0x8113, 0x8113, 0x0B68, - 0x8114, 0x8114, 0x1309, 0x8115, 0x8115, 0x44DB, 0x8116, 0x8116, 0x0478, - 0x8117, 0x8117, 0x44DC, 0x8118, 0x8118, 0x1994, 0x8119, 0x8119, 0x44DD, - 0x811A, 0x811A, 0x0896, 0x811B, 0x811B, 0x24C7, 0x811C, 0x811D, 0x44DE, - 0x811E, 0x811E, 0x1992, 0x811F, 0x812B, 0x44E0, 0x812C, 0x812C, 0x1993, - 0x812D, 0x812E, 0x44ED, 0x812F, 0x812F, 0x06A7, 0x8130, 0x8130, 0x44EF, - 0x8131, 0x8131, 0x0E82, 0x8132, 0x8132, 0x1995, 0x8133, 0x8135, 0x44F0, - 0x8136, 0x8136, 0x1991, 0x8137, 0x8137, 0x44F3, 0x8138, 0x8138, 0x09FC, - 0x8139, 0x8139, 0x2279, 0x813A, 0x813D, 0x44F4, 0x813E, 0x813E, 0x0BC1, - 0x813F, 0x8145, 0x44F8, 0x8146, 0x8146, 0x0E46, 0x8147, 0x8147, 0x44FF, - 0x8148, 0x8148, 0x1996, 0x8149, 0x8149, 0x4500, 0x814A, 0x814A, 0x099B, - 0x814B, 0x814B, 0x103F, 0x814C, 0x814C, 0x1997, 0x814D, 0x814D, 0x4501, - 0x814E, 0x814E, 0x2123, 0x814F, 0x814F, 0x4502, 0x8150, 0x8150, 0x06AA, - 0x8151, 0x8151, 0x06A8, 0x8152, 0x8152, 0x4503, 0x8153, 0x8153, 0x1998, - 0x8154, 0x8154, 0x0C38, 0x8155, 0x8155, 0x0EA4, 0x8156, 0x8156, 0x24C5, - 0x8157, 0x8158, 0x4504, 0x8159, 0x815A, 0x199A, 0x815B, 0x815F, 0x4506, - 0x8160, 0x8160, 0x199D, 0x8161, 0x8161, 0x24C9, 0x8162, 0x8164, 0x450B, - 0x8165, 0x8165, 0x0F93, 0x8166, 0x8166, 0x2094, 0x8167, 0x8167, 0x19A2, - 0x8168, 0x8168, 0x450E, 0x8169, 0x8169, 0x199E, 0x816A, 0x816A, 0x450F, - 0x816B, 0x816B, 0x2296, 0x816C, 0x816C, 0x4510, 0x816D, 0x816D, 0x19A1, - 0x816E, 0x816E, 0x0CD4, 0x816F, 0x816F, 0x4511, 0x8170, 0x8170, 0x1025, - 0x8171, 0x8171, 0x199C, 0x8172, 0x8173, 0x4512, 0x8174, 0x8174, 0x1999, - 0x8175, 0x8177, 0x4514, 0x8178, 0x8178, 0x1E77, 0x8179, 0x8179, 0x06B4, - 0x817A, 0x817A, 0x0F46, 0x817B, 0x817B, 0x0B48, 0x817C, 0x817D, 0x199F, - 0x817E, 0x817E, 0x0E2D, 0x817F, 0x817F, 0x0E79, 0x8180, 0x8180, 0x03FD, - 0x8181, 0x8181, 0x4517, 0x8182, 0x8182, 0x19A6, 0x8183, 0x8187, 0x4518, - 0x8188, 0x8188, 0x19A5, 0x8189, 0x8189, 0x451D, 0x818A, 0x818A, 0x0479, - 0x818B, 0x818E, 0x451E, 0x818F, 0x818F, 0x06DB, 0x8190, 0x8190, 0x4522, - 0x8191, 0x8191, 0x19A7, 0x8192, 0x8197, 0x4523, 0x8198, 0x8198, 0x0455, - 0x8199, 0x8199, 0x4529, 0x819A, 0x819A, 0x1F06, 0x819B, 0x819B, 0x0E18, - 0x819C, 0x819C, 0x0B07, 0x819D, 0x819D, 0x0F12, 0x819E, 0x819F, 0x452A, - 0x81A0, 0x81A0, 0x1FA5, 0x81A1, 0x81A2, 0x452C, 0x81A3, 0x81A3, 0x19A9, - 0x81A4, 0x81A5, 0x452E, 0x81A6, 0x81A6, 0x19B0, 0x81A7, 0x81A7, 0x4530, - 0x81A8, 0x81A8, 0x0BB3, 0x81A9, 0x81A9, 0x2099, 0x81AA, 0x81AA, 0x19AA, - 0x81AB, 0x81B2, 0x4531, 0x81B3, 0x81B3, 0x0CFE, 0x81B4, 0x81B9, 0x4539, - 0x81BA, 0x81BA, 0x1641, 0x81BB, 0x81BB, 0x19AE, 0x81BC, 0x81BC, 0x453F, - 0x81BD, 0x81BD, 0x1EAD, 0x81BE, 0x81BE, 0x24C8, 0x81BF, 0x81BF, 0x20A8, - 0x81C0, 0x81C0, 0x0E7F, 0x81C1, 0x81C1, 0x19AF, 0x81C2, 0x81C2, 0x0444, - 0x81C3, 0x81C3, 0x109C, 0x81C4, 0x81C5, 0x4540, 0x81C6, 0x81C6, 0x1063, - 0x81C7, 0x81C8, 0x4542, 0x81C9, 0x81C9, 0x201F, 0x81CA, 0x81CA, 0x19AD, - 0x81CB, 0x81CB, 0x4544, 0x81CC, 0x81CC, 0x19AB, 0x81CD, 0x81CD, 0x20C5, - 0x81CE, 0x81CE, 0x4545, 0x81CF, 0x81CF, 0x24CA, 0x81D0, 0x81D7, 0x4546, - 0x81D8, 0x81D8, 0x1FF0, 0x81D9, 0x81D9, 0x454E, 0x81DA, 0x81DA, 0x24C6, - 0x81DB, 0x81DE, 0x454F, 0x81DF, 0x81DF, 0x225D, 0x81E0, 0x81E0, 0x22DE, - 0x81E1, 0x81E2, 0x4553, 0x81E3, 0x81E3, 0x04E1, 0x81E4, 0x81E6, 0x4555, - 0x81E7, 0x81E7, 0x1902, 0x81E8, 0x81E8, 0x202C, 0x81E9, 0x81E9, 0x4558, - 0x81EA, 0x81EA, 0x1231, 0x81EB, 0x81EB, 0x4559, 0x81EC, 0x81EC, 0x1CA9, - 0x81ED, 0x81ED, 0x0519, 0x81EE, 0x81F2, 0x455A, 0x81F3, 0x81F4, 0x11C0, - 0x81F5, 0x81F9, 0x455F, 0x81FA, 0x81FA, 0x2161, 0x81FB, 0x81FB, 0x118A, - 0x81FC, 0x81FC, 0x08F9, 0x81FD, 0x81FD, 0x4564, 0x81FE, 0x81FE, 0x1CA5, - 0x81FF, 0x81FF, 0x4565, 0x8200, 0x8200, 0x102F, 0x8201, 0x8202, 0x1CA6, - 0x8203, 0x8203, 0x4566, 0x8204, 0x8204, 0x1CA8, 0x8205, 0x8205, 0x08FA, - 0x8206, 0x8206, 0x10C4, 0x8207, 0x8207, 0x223B, 0x8208, 0x8208, 0x21D9, - 0x8209, 0x8209, 0x1FCB, 0x820A, 0x820A, 0x1FC9, 0x820B, 0x820B, 0x4567, - 0x820C, 0x820D, 0x0D19, 0x820E, 0x820F, 0x4568, 0x8210, 0x8210, 0x1C62, - 0x8211, 0x8211, 0x456A, 0x8212, 0x8212, 0x0D7D, 0x8213, 0x8213, 0x456B, - 0x8214, 0x8214, 0x0E45, 0x8215, 0x821A, 0x456C, 0x821B, 0x821B, 0x1618, - 0x821C, 0x821C, 0x0DA9, 0x821D, 0x821D, 0x4572, 0x821E, 0x821E, 0x0EF7, - 0x821F, 0x821F, 0x11DA, 0x8220, 0x8220, 0x4573, 0x8221, 0x8223, 0x1CAB, - 0x8224, 0x8227, 0x4574, 0x8228, 0x8228, 0x1CB0, 0x8229, 0x8229, 0x4578, - 0x822A, 0x822A, 0x0774, 0x822B, 0x822B, 0x1CB1, 0x822C, 0x822C, 0x03EE, - 0x822D, 0x822D, 0x1CAE, 0x822E, 0x822E, 0x4579, 0x822F, 0x822F, 0x1CAF, - 0x8230, 0x8230, 0x0873, 0x8231, 0x8231, 0x049C, 0x8232, 0x8232, 0x457A, - 0x8233, 0x8234, 0x1CB4, 0x8235, 0x8235, 0x0625, 0x8236, 0x8236, 0x0477, - 0x8237, 0x8237, 0x0F3C, 0x8238, 0x8238, 0x1CB2, 0x8239, 0x8239, 0x052F, - 0x823A, 0x823A, 0x457B, 0x823B, 0x823B, 0x1CB3, 0x823C, 0x823D, 0x457C, - 0x823E, 0x823E, 0x1CB6, 0x823F, 0x8243, 0x457E, 0x8244, 0x8244, 0x1CB7, - 0x8245, 0x8246, 0x4583, 0x8247, 0x8247, 0x0E58, 0x8248, 0x8248, 0x4585, - 0x8249, 0x8249, 0x1CB8, 0x824A, 0x824A, 0x4586, 0x824B, 0x824B, 0x1CB9, - 0x824C, 0x824E, 0x4587, 0x824F, 0x824F, 0x1CBA, 0x8250, 0x8257, 0x458A, - 0x8258, 0x8258, 0x0DC7, 0x8259, 0x8259, 0x1E61, 0x825A, 0x825A, 0x1CBB, - 0x825B, 0x825E, 0x4592, 0x825F, 0x825F, 0x1CBC, 0x8260, 0x8263, 0x4596, - 0x8264, 0x8264, 0x25EF, 0x8265, 0x8265, 0x459A, 0x8266, 0x8266, 0x1F98, - 0x8267, 0x8267, 0x459B, 0x8268, 0x8268, 0x1CBD, 0x8269, 0x826A, 0x459C, - 0x826B, 0x826B, 0x25F0, 0x826C, 0x826D, 0x459E, 0x826E, 0x826E, 0x1CDC, - 0x826F, 0x826F, 0x0A05, 0x8270, 0x8270, 0x085B, 0x8271, 0x8271, 0x1F88, - 0x8272, 0x8272, 0x0CE4, 0x8273, 0x8273, 0x1007, 0x8274, 0x8274, 0x1771, - 0x8275, 0x8276, 0x45A0, 0x8277, 0x8277, 0x21F8, 0x8278, 0x8278, 0x45A2, - 0x8279, 0x8279, 0x13E1, 0x827A, 0x827A, 0x105C, 0x827B, 0x827C, 0x45A3, - 0x827D, 0x827D, 0x13E2, 0x827E, 0x827E, 0x03B7, 0x827F, 0x827F, 0x13E3, - 0x8280, 0x8281, 0x45A5, 0x8282, 0x8282, 0x08AB, 0x8283, 0x8283, 0x45A7, - 0x8284, 0x8284, 0x13E7, 0x8285, 0x8287, 0x45A8, 0x8288, 0x8288, 0x1278, - 0x8289, 0x8289, 0x45AB, 0x828A, 0x828A, 0x13E5, 0x828B, 0x828B, 0x10D8, - 0x828C, 0x828C, 0x45AC, 0x828D, 0x828D, 0x0D0F, 0x828E, 0x828E, 0x13E8, - 0x828F, 0x828F, 0x13E4, 0x8290, 0x8290, 0x45AD, 0x8291, 0x8291, 0x13E9, - 0x8292, 0x8292, 0x0AA7, 0x8293, 0x8296, 0x45AE, 0x8297, 0x8297, 0x13EA, - 0x8298, 0x8298, 0x13F3, 0x8299, 0x8299, 0x13EB, 0x829A, 0x829B, 0x45B2, - 0x829C, 0x829C, 0x0EEE, 0x829D, 0x829D, 0x11A4, 0x829E, 0x829E, 0x45B4, - 0x829F, 0x829F, 0x13FD, 0x82A0, 0x82A0, 0x45B5, 0x82A1, 0x82A1, 0x13FB, - 0x82A2, 0x82A3, 0x45B6, 0x82A4, 0x82A4, 0x1400, 0x82A5, 0x82A5, 0x08B7, - 0x82A6, 0x82A6, 0x0A52, 0x82A7, 0x82A7, 0x45B8, 0x82A8, 0x82A8, 0x13E6, - 0x82A9, 0x82A9, 0x13F9, 0x82AA, 0x82AA, 0x13FC, 0x82AB, 0x82AB, 0x13EC, - 0x82AC, 0x82AC, 0x066F, 0x82AD, 0x82AD, 0x03D0, 0x82AE, 0x82AE, 0x13F5, - 0x82AF, 0x82AF, 0x0F89, 0x82B0, 0x82B0, 0x13EF, 0x82B1, 0x82B1, 0x07BD, - 0x82B2, 0x82B2, 0x45B9, 0x82B3, 0x82B3, 0x0659, 0x82B4, 0x82B4, 0x13FA, - 0x82B5, 0x82B6, 0x45BA, 0x82B7, 0x82B7, 0x13F4, 0x82B8, 0x82B8, 0x13ED, - 0x82B9, 0x82B9, 0x0C58, 0x82BA, 0x82BA, 0x45BC, 0x82BB, 0x82BB, 0x2322, - 0x82BC, 0x82BC, 0x45BD, 0x82BD, 0x82BD, 0x0FE8, 0x82BE, 0x82BE, 0x13EE, - 0x82BF, 0x82C0, 0x45BE, 0x82C1, 0x82C1, 0x13F8, 0x82C2, 0x82C3, 0x45C0, - 0x82C4, 0x82C4, 0x13FE, 0x82C5, 0x82C6, 0x45C2, 0x82C7, 0x82C7, 0x0EBC, - 0x82C8, 0x82C8, 0x13F0, 0x82C9, 0x82C9, 0x45C4, 0x82CA, 0x82CA, 0x13F1, - 0x82CB, 0x82CC, 0x13F6, 0x82CD, 0x82CD, 0x049B, 0x82CE, 0x82CE, 0x13FF, - 0x82CF, 0x82CF, 0x0DCA, 0x82D0, 0x82D0, 0x45C5, 0x82D1, 0x82D1, 0x10FA, - 0x82D2, 0x82D2, 0x1409, 0x82D3, 0x82D3, 0x140D, 0x82D4, 0x82D4, 0x0DF9, - 0x82D5, 0x82D5, 0x1414, 0x82D6, 0x82D6, 0x45C6, 0x82D7, 0x82D7, 0x0AEC, - 0x82D8, 0x82D8, 0x140A, 0x82D9, 0x82DA, 0x45C7, 0x82DB, 0x82DB, 0x094E, - 0x82DC, 0x82DC, 0x1407, 0x82DD, 0x82DD, 0x45C9, 0x82DE, 0x82DE, 0x0405, - 0x82DF, 0x82DF, 0x070F, 0x82E0, 0x82E0, 0x1413, 0x82E1, 0x82E1, 0x1401, - 0x82E2, 0x82E2, 0x45CA, 0x82E3, 0x82E3, 0x13F2, 0x82E4, 0x82E4, 0x1404, - 0x82E5, 0x82E5, 0x0CCF, 0x82E6, 0x82E6, 0x096D, 0x82E7, 0x82E7, 0x2336, - 0x82E8, 0x82EA, 0x45CB, 0x82EB, 0x82EB, 0x0CF4, 0x82EC, 0x82EE, 0x45CE, - 0x82EF, 0x82EF, 0x0426, 0x82F0, 0x82F0, 0x45D1, 0x82F1, 0x82F1, 0x1087, - 0x82F2, 0x82F3, 0x45D2, 0x82F4, 0x82F4, 0x1408, 0x82F5, 0x82F6, 0x45D4, - 0x82F7, 0x82F7, 0x1403, 0x82F8, 0x82F8, 0x45D6, 0x82F9, 0x82F9, 0x0BDA, - 0x82FA, 0x82FA, 0x45D7, 0x82FB, 0x82FB, 0x140C, 0x82FC, 0x82FF, 0x45D8, - 0x8300, 0x8300, 0x45DC, 0x8301, 0x8301, 0x121F, 0x8302, 0x8302, 0x0AB4, - 0x8303, 0x8303, 0x0653, 0x8304, 0x8304, 0x0C4E, 0x8305, 0x8305, 0x0AAE, - 0x8306, 0x8306, 0x1410, 0x8307, 0x8307, 0x1406, 0x8308, 0x8308, 0x1419, - 0x8309, 0x8309, 0x1402, 0x830A, 0x830B, 0x45DD, 0x830C, 0x830C, 0x140B, - 0x830D, 0x830D, 0x45DF, 0x830E, 0x830E, 0x08D4, 0x830F, 0x830F, 0x1405, - 0x8310, 0x8310, 0x45E0, 0x8311, 0x8311, 0x140E, 0x8312, 0x8313, 0x45E1, - 0x8314, 0x8315, 0x1411, 0x8316, 0x8316, 0x45E3, 0x8317, 0x8317, 0x1426, - 0x8318, 0x8319, 0x45E4, 0x831A, 0x831A, 0x140F, 0x831B, 0x831B, 0x142E, - 0x831C, 0x831C, 0x1415, 0x831D, 0x8326, 0x45E6, 0x8327, 0x8327, 0x085E, - 0x8328, 0x8328, 0x0547, 0x8329, 0x832A, 0x45F0, 0x832B, 0x832B, 0x0AA8, - 0x832C, 0x832C, 0x04AE, 0x832D, 0x832D, 0x1428, 0x832E, 0x832E, 0x45F2, - 0x832F, 0x832F, 0x1420, 0x8330, 0x8330, 0x45F3, 0x8331, 0x8331, 0x141D, - 0x8332, 0x8332, 0x45F4, 0x8333, 0x8333, 0x142A, 0x8334, 0x8334, 0x141C, - 0x8335, 0x8335, 0x1077, 0x8336, 0x8336, 0x04AF, 0x8337, 0x8337, 0x45F5, - 0x8338, 0x8338, 0x0CB2, 0x8339, 0x8339, 0x0CBE, 0x833A, 0x833A, 0x1429, - 0x833B, 0x833B, 0x45F6, 0x833C, 0x833C, 0x141B, 0x833D, 0x833F, 0x45F7, - 0x8340, 0x8340, 0x1425, 0x8341, 0x8342, 0x45FA, 0x8343, 0x8343, 0x1423, - 0x8344, 0x8345, 0x45FC, 0x8346, 0x8346, 0x08D2, 0x8347, 0x8347, 0x1422, - 0x8348, 0x8348, 0x45FE, 0x8349, 0x8349, 0x04A4, 0x834A, 0x834E, 0x45FF, - 0x834F, 0x834F, 0x1421, 0x8350, 0x8350, 0x0869, 0x8351, 0x8351, 0x1416, - 0x8352, 0x8352, 0x07D9, 0x8353, 0x8353, 0x4604, 0x8354, 0x8354, 0x09DE, - 0x8355, 0x8359, 0x4605, 0x835A, 0x835A, 0x0847, 0x835B, 0x835C, 0x1417, - 0x835D, 0x835D, 0x460A, 0x835E, 0x835E, 0x141F, 0x835F, 0x835F, 0x1424, - 0x8360, 0x8360, 0x1427, 0x8361, 0x8361, 0x0595, 0x8362, 0x8362, 0x460B, - 0x8363, 0x8363, 0x0CB4, 0x8364, 0x8364, 0x07FC, 0x8365, 0x8365, 0x142C, - 0x8366, 0x8366, 0x142B, 0x8367, 0x8367, 0x1090, 0x8368, 0x8368, 0x142D, - 0x8369, 0x8369, 0x142F, 0x836A, 0x836A, 0x1431, 0x836B, 0x836B, 0x1078, - 0x836C, 0x836C, 0x1430, 0x836D, 0x836E, 0x1432, 0x836F, 0x836F, 0x1030, - 0x8370, 0x8376, 0x460C, 0x8377, 0x8377, 0x0780, 0x8378, 0x8378, 0x1435, - 0x8379, 0x837A, 0x4613, 0x837B, 0x837B, 0x1442, 0x837C, 0x837C, 0x143D, - 0x837D, 0x837D, 0x1440, 0x837E, 0x8384, 0x4615, 0x8385, 0x8385, 0x143C, - 0x8386, 0x8386, 0x0BED, 0x8387, 0x8388, 0x461C, 0x8389, 0x8389, 0x09DD, - 0x838A, 0x838A, 0x22AB, 0x838B, 0x838D, 0x461E, 0x838E, 0x838E, 0x0CE8, - 0x838F, 0x8391, 0x4621, 0x8392, 0x8392, 0x141A, 0x8393, 0x8393, 0x143A, - 0x8394, 0x8395, 0x4624, 0x8396, 0x8396, 0x1FBF, 0x8397, 0x8397, 0x4626, - 0x8398, 0x8398, 0x1443, 0x8399, 0x839A, 0x4627, 0x839B, 0x839B, 0x141E, - 0x839C, 0x839C, 0x143B, 0x839D, 0x839D, 0x4629, 0x839E, 0x839E, 0x1444, - 0x839F, 0x839F, 0x462A, 0x83A0, 0x83A0, 0x1438, 0x83A1, 0x83A1, 0x462B, - 0x83A2, 0x83A2, 0x1F7D, 0x83A3, 0x83A6, 0x462C, 0x83A7, 0x83A7, 0x2333, - 0x83A8, 0x83A8, 0x1445, 0x83A9, 0x83A9, 0x143F, 0x83AA, 0x83AA, 0x1439, - 0x83AB, 0x83AB, 0x0B0D, 0x83AC, 0x83AF, 0x4630, 0x83B0, 0x83B0, 0x1434, - 0x83B1, 0x83B1, 0x099E, 0x83B2, 0x83B2, 0x09F4, 0x83B3, 0x83B4, 0x1436, - 0x83B5, 0x83B5, 0x4634, 0x83B6, 0x83B6, 0x143E, 0x83B7, 0x83B7, 0x0806, - 0x83B8, 0x83B8, 0x1441, 0x83B9, 0x83B9, 0x108D, 0x83BA, 0x83BA, 0x1446, - 0x83BB, 0x83BB, 0x4635, 0x83BC, 0x83BC, 0x1447, 0x83BD, 0x83BD, 0x0AAC, - 0x83BE, 0x83BF, 0x4636, 0x83C0, 0x83C0, 0x145E, 0x83C1, 0x83C1, 0x1448, - 0x83C2, 0x83C4, 0x4638, 0x83C5, 0x83C5, 0x145D, 0x83C6, 0x83C6, 0x463B, - 0x83C7, 0x83C7, 0x0716, 0x83C8, 0x83C9, 0x463C, 0x83CA, 0x83CA, 0x0904, - 0x83CB, 0x83CB, 0x463E, 0x83CC, 0x83CC, 0x0929, 0x83CD, 0x83CE, 0x463F, - 0x83CF, 0x83CF, 0x0781, 0x83D0, 0x83D3, 0x4641, 0x83D4, 0x83D4, 0x1456, - 0x83D5, 0x83D5, 0x4645, 0x83D6, 0x83D6, 0x1451, 0x83D7, 0x83D7, 0x4646, - 0x83D8, 0x83D8, 0x144B, 0x83D9, 0x83DB, 0x4647, 0x83DC, 0x83DC, 0x0492, - 0x83DD, 0x83DD, 0x144F, 0x83DE, 0x83DE, 0x464A, 0x83DF, 0x83DF, 0x1457, - 0x83E0, 0x83E0, 0x046B, 0x83E1, 0x83E1, 0x1461, 0x83E2, 0x83E4, 0x464B, - 0x83E5, 0x83E5, 0x144A, 0x83E6, 0x83E8, 0x464E, 0x83E9, 0x83E9, 0x0BEF, - 0x83EA, 0x83EA, 0x145C, 0x83EB, 0x83EE, 0x4651, 0x83EF, 0x83EF, 0x1F4D, - 0x83F0, 0x83F0, 0x1460, 0x83F1, 0x83F1, 0x0A2B, 0x83F2, 0x83F2, 0x0663, - 0x83F3, 0x83F7, 0x4655, 0x83F8, 0x83F9, 0x145A, 0x83FA, 0x83FC, 0x465A, - 0x83FD, 0x83FD, 0x1450, 0x83FE, 0x83FF, 0x465D, 0x8400, 0x8400, 0x465F, - 0x8401, 0x8401, 0x1449, 0x8402, 0x8402, 0x4660, 0x8403, 0x8403, 0x1459, - 0x8404, 0x8404, 0x0E24, 0x8405, 0x8405, 0x4661, 0x8406, 0x8406, 0x1455, - 0x8407, 0x8407, 0x2334, 0x8408, 0x8409, 0x4662, 0x840A, 0x840A, 0x1FF1, - 0x840B, 0x840B, 0x144E, 0x840C, 0x840C, 0x0ACD, 0x840D, 0x840D, 0x0BDB, - 0x840E, 0x840E, 0x0EBD, 0x840F, 0x840F, 0x1458, 0x8410, 0x8410, 0x4664, - 0x8411, 0x8411, 0x1454, 0x8412, 0x8417, 0x4665, 0x8418, 0x8418, 0x144D, - 0x8419, 0x841B, 0x466B, 0x841C, 0x841C, 0x1452, 0x841D, 0x841D, 0x0A83, - 0x841E, 0x8423, 0x466E, 0x8424, 0x8425, 0x108E, 0x8426, 0x8426, 0x145F, - 0x8427, 0x8427, 0x0F61, 0x8428, 0x8428, 0x0CD3, 0x8429, 0x842B, 0x4674, - 0x842C, 0x842C, 0x218B, 0x842D, 0x8430, 0x4677, 0x8431, 0x8431, 0x1472, - 0x8432, 0x8434, 0x467B, 0x8435, 0x8435, 0x2349, 0x8436, 0x8437, 0x467E, - 0x8438, 0x8438, 0x1453, 0x8439, 0x843B, 0x4680, 0x843C, 0x843C, 0x146C, - 0x843D, 0x843D, 0x0A8B, 0x843E, 0x8445, 0x4683, 0x8446, 0x8446, 0x146D, - 0x8447, 0x8448, 0x468B, 0x8449, 0x8449, 0x220B, 0x844A, 0x8450, 0x468D, - 0x8451, 0x8451, 0x1463, 0x8452, 0x8452, 0x2346, 0x8453, 0x8456, 0x4694, - 0x8457, 0x8457, 0x11F7, 0x8458, 0x8458, 0x4698, 0x8459, 0x8459, 0x1465, - 0x845A, 0x845A, 0x1464, 0x845B, 0x845B, 0x06EB, 0x845C, 0x845C, 0x1462, - 0x845D, 0x8460, 0x4699, 0x8461, 0x8461, 0x0BEE, 0x8462, 0x8462, 0x469D, - 0x8463, 0x8463, 0x05EC, 0x8464, 0x8464, 0x2347, 0x8465, 0x8465, 0x469E, - 0x8466, 0x8466, 0x2193, 0x8467, 0x8468, 0x469F, 0x8469, 0x8469, 0x146E, - 0x846A, 0x846A, 0x46A1, 0x846B, 0x846B, 0x07B0, 0x846C, 0x846C, 0x1124, - 0x846D, 0x846D, 0x1473, 0x846E, 0x846E, 0x46A2, 0x846F, 0x846F, 0x26A1, - 0x8470, 0x8470, 0x46A3, 0x8471, 0x8471, 0x0553, 0x8472, 0x8472, 0x46A4, - 0x8473, 0x8473, 0x1466, 0x8474, 0x8474, 0x46A5, 0x8475, 0x8475, 0x0988, - 0x8476, 0x8476, 0x146F, 0x8477, 0x8477, 0x1F62, 0x8478, 0x8478, 0x146B, - 0x8479, 0x8479, 0x46A6, 0x847A, 0x847A, 0x1469, 0x847B, 0x8481, 0x46A7, - 0x8482, 0x8482, 0x05BA, 0x8483, 0x8486, 0x46AE, 0x8487, 0x8488, 0x1467, - 0x8489, 0x8489, 0x146A, 0x848A, 0x848A, 0x46B2, 0x848B, 0x848B, 0x0880, - 0x848C, 0x848C, 0x1470, 0x848D, 0x848D, 0x46B3, 0x848E, 0x848E, 0x1471, - 0x848F, 0x8492, 0x46B4, 0x8493, 0x8493, 0x234D, 0x8494, 0x8494, 0x2348, - 0x8495, 0x8496, 0x46B8, 0x8497, 0x8497, 0x1481, 0x8498, 0x8498, 0x46BA, - 0x8499, 0x8499, 0x0ACE, 0x849A, 0x849B, 0x46BB, 0x849C, 0x849C, 0x0DD7, - 0x849D, 0x84A0, 0x46BD, 0x84A1, 0x84A1, 0x147E, 0x84A2, 0x84AE, 0x46C1, - 0x84AF, 0x84AF, 0x1297, 0x84B0, 0x84B1, 0x46CE, 0x84B2, 0x84B2, 0x0BF0, - 0x84B3, 0x84B3, 0x46D0, 0x84B4, 0x84B4, 0x1480, 0x84B5, 0x84B7, 0x46D1, - 0x84B8, 0x84B8, 0x1195, 0x84B9, 0x84B9, 0x147F, 0x84BA, 0x84BA, 0x147C, - 0x84BB, 0x84BB, 0x46D4, 0x84BC, 0x84BC, 0x1E60, 0x84BD, 0x84BD, 0x1478, - 0x84BE, 0x84BE, 0x46D5, 0x84BF, 0x84BF, 0x147B, 0x84C0, 0x84C0, 0x2345, - 0x84C1, 0x84C1, 0x1474, 0x84C2, 0x84C3, 0x46D6, 0x84C4, 0x84C4, 0x0FB9, - 0x84C5, 0x84C8, 0x46D8, 0x84C9, 0x84C9, 0x0CB3, 0x84CA, 0x84CA, 0x147A, - 0x84CB, 0x84CB, 0x1F12, 0x84CC, 0x84CC, 0x46DC, 0x84CD, 0x84CD, 0x1475, - 0x84CE, 0x84CF, 0x46DD, 0x84D0, 0x84D0, 0x1476, 0x84D1, 0x84D1, 0x0DE7, - 0x84D2, 0x84D2, 0x46DF, 0x84D3, 0x84D3, 0x1479, 0x84D4, 0x84D5, 0x46E0, - 0x84D6, 0x84D6, 0x0436, 0x84D7, 0x84DC, 0x46E2, 0x84DD, 0x84DD, 0x09A1, - 0x84DE, 0x84DE, 0x46E8, 0x84DF, 0x84DF, 0x082E, 0x84E0, 0x84E0, 0x147D, - 0x84E1, 0x84E2, 0x46E9, 0x84E3, 0x84E3, 0x1483, 0x84E4, 0x84E4, 0x46EB, - 0x84E5, 0x84E5, 0x1482, 0x84E6, 0x84E6, 0x1477, 0x84E7, 0x84EB, 0x46EC, - 0x84EC, 0x84EC, 0x0BAF, 0x84ED, 0x84ED, 0x46F1, 0x84EE, 0x84EE, 0x2018, - 0x84EF, 0x84EF, 0x2335, 0x84F0, 0x84F0, 0x1487, 0x84F1, 0x84FB, 0x46F2, - 0x84FC, 0x84FC, 0x148E, 0x84FD, 0x84FD, 0x233C, 0x84FE, 0x84FE, 0x46FD, - 0x84FF, 0x84FF, 0x148D, 0x8500, 0x850B, 0x46FE, 0x850C, 0x850C, 0x1484, - 0x850D, 0x8510, 0x470A, 0x8511, 0x8511, 0x0AF4, 0x8512, 0x8512, 0x470E, - 0x8513, 0x8513, 0x0AA2, 0x8514, 0x8514, 0x266F, 0x8515, 0x8516, 0x470F, - 0x8517, 0x8517, 0x1182, 0x8518, 0x8519, 0x4711, 0x851A, 0x851A, 0x0EC4, - 0x851B, 0x851D, 0x4713, 0x851E, 0x851E, 0x2351, 0x851F, 0x851F, 0x1489, - 0x8520, 0x8520, 0x4716, 0x8521, 0x8521, 0x0493, 0x8522, 0x8522, 0x4717, - 0x8523, 0x8523, 0x1FA0, 0x8524, 0x8525, 0x4718, 0x8526, 0x8526, 0x2338, - 0x8527, 0x852A, 0x471A, 0x852B, 0x852B, 0x0B4B, 0x852C, 0x852C, 0x0D76, - 0x852D, 0x852D, 0x221B, 0x852E, 0x8536, 0x471E, 0x8537, 0x8537, 0x0C3B, - 0x8538, 0x8538, 0x1486, 0x8539, 0x8539, 0x1488, 0x853A, 0x853A, 0x148A, - 0x853B, 0x853B, 0x148C, 0x853C, 0x853C, 0x03B5, 0x853D, 0x853D, 0x0437, - 0x853E, 0x8540, 0x4727, 0x8541, 0x8541, 0x2342, 0x8542, 0x8542, 0x472A, - 0x8543, 0x8543, 0x1496, 0x8544, 0x8545, 0x472B, 0x8546, 0x8546, 0x234F, - 0x8547, 0x8547, 0x472D, 0x8548, 0x8548, 0x1490, 0x8549, 0x8549, 0x0887, - 0x854A, 0x854A, 0x0CCA, 0x854B, 0x854D, 0x472E, 0x854E, 0x854E, 0x233D, - 0x854F, 0x8551, 0x4731, 0x8552, 0x8552, 0x2344, 0x8553, 0x8553, 0x2331, - 0x8554, 0x8554, 0x4734, 0x8555, 0x8555, 0x234B, 0x8556, 0x8556, 0x148B, - 0x8557, 0x8557, 0x4735, 0x8558, 0x8558, 0x233B, 0x8559, 0x8559, 0x148F, - 0x855A, 0x855D, 0x4736, 0x855E, 0x855E, 0x1493, 0x855F, 0x8561, 0x473A, - 0x8562, 0x8562, 0x2350, 0x8563, 0x8563, 0x473D, 0x8564, 0x8564, 0x1492, - 0x8565, 0x8567, 0x473E, 0x8568, 0x8568, 0x1491, 0x8569, 0x8569, 0x1EB4, - 0x856A, 0x856A, 0x21A6, 0x856B, 0x856C, 0x4741, 0x856D, 0x856D, 0x21CB, - 0x856E, 0x8571, 0x4743, 0x8572, 0x8572, 0x1497, 0x8573, 0x8573, 0x4747, - 0x8574, 0x8574, 0x110F, 0x8575, 0x8576, 0x4748, 0x8577, 0x8577, 0x2355, - 0x8578, 0x8578, 0x474A, 0x8579, 0x8579, 0x149D, 0x857A, 0x857A, 0x1494, - 0x857B, 0x857B, 0x1498, 0x857C, 0x857D, 0x474B, 0x857E, 0x857E, 0x09C4, - 0x857F, 0x8583, 0x474D, 0x8584, 0x8584, 0x040A, 0x8585, 0x8585, 0x14A0, - 0x8586, 0x8586, 0x4752, 0x8587, 0x8587, 0x149B, 0x8588, 0x8588, 0x233E, - 0x8589, 0x8589, 0x4753, 0x858A, 0x858A, 0x1F74, 0x858B, 0x858B, 0x4754, - 0x858C, 0x858C, 0x2330, 0x858D, 0x858E, 0x4755, 0x858F, 0x858F, 0x149C, - 0x8590, 0x8590, 0x4757, 0x8591, 0x8591, 0x2680, 0x8592, 0x8593, 0x4758, - 0x8594, 0x8594, 0x20DA, 0x8595, 0x859A, 0x475A, 0x859B, 0x859B, 0x0FCF, - 0x859C, 0x859C, 0x149F, 0x859D, 0x859E, 0x4760, 0x859F, 0x859F, 0x234A, - 0x85A0, 0x85A3, 0x4762, 0x85A4, 0x85A4, 0x1499, 0x85A5, 0x85A5, 0x4766, - 0x85A6, 0x85A6, 0x1F91, 0x85A7, 0x85A7, 0x4767, 0x85A8, 0x85A8, 0x149A, - 0x85A9, 0x85A9, 0x2107, 0x85AA, 0x85AA, 0x0F88, 0x85AB, 0x85AD, 0x4768, - 0x85AE, 0x85AE, 0x149E, 0x85AF, 0x85AF, 0x0D84, 0x85B0, 0x85B0, 0x14A3, - 0x85B1, 0x85B6, 0x476B, 0x85B7, 0x85B7, 0x14A2, 0x85B8, 0x85B8, 0x4771, - 0x85B9, 0x85B9, 0x14A1, 0x85BA, 0x85BA, 0x233F, 0x85BB, 0x85C0, 0x4772, - 0x85C1, 0x85C1, 0x14A5, 0x85C2, 0x85C8, 0x4778, 0x85C9, 0x85C9, 0x08B6, - 0x85CA, 0x85CC, 0x477F, 0x85CD, 0x85CD, 0x1FF4, 0x85CE, 0x85CE, 0x2343, - 0x85CF, 0x85CF, 0x049F, 0x85D0, 0x85D0, 0x0AEF, 0x85D1, 0x85D2, 0x4782, - 0x85D3, 0x85D3, 0x14A4, 0x85D4, 0x85D4, 0x4784, 0x85D5, 0x85D5, 0x0B7B, - 0x85D6, 0x85DB, 0x4785, 0x85DC, 0x85DC, 0x14A6, 0x85DD, 0x85DD, 0x2212, - 0x85DE, 0x85E3, 0x478B, 0x85E4, 0x85E4, 0x0E2C, 0x85E5, 0x85E5, 0x2207, - 0x85E6, 0x85E8, 0x4791, 0x85E9, 0x85E9, 0x0647, 0x85EA, 0x85EA, 0x2359, - 0x85EB, 0x85F3, 0x4794, 0x85F4, 0x85F4, 0x2254, 0x85F5, 0x85F5, 0x479D, - 0x85F6, 0x85F6, 0x2332, 0x85F7, 0x85F8, 0x479E, 0x85F9, 0x85F9, 0x1E26, - 0x85FA, 0x85FA, 0x2357, 0x85FB, 0x85FB, 0x1128, 0x85FC, 0x85FE, 0x47A0, - 0x85FF, 0x85FF, 0x14A7, 0x8600, 0x8603, 0x47A3, 0x8604, 0x8604, 0x2358, - 0x8605, 0x8605, 0x14A9, 0x8606, 0x8606, 0x2042, 0x8607, 0x8607, 0x2153, - 0x8608, 0x860A, 0x47A7, 0x860B, 0x860B, 0x20BB, 0x860C, 0x8610, 0x47AA, - 0x8611, 0x8611, 0x0B05, 0x8612, 0x8615, 0x47AF, 0x8616, 0x8616, 0x14AB, - 0x8617, 0x8619, 0x47B3, 0x861A, 0x861A, 0x235A, 0x861B, 0x861D, 0x47B6, - 0x861E, 0x861E, 0x2356, 0x861F, 0x8621, 0x47B9, 0x8622, 0x8622, 0x2337, - 0x8623, 0x8626, 0x47BC, 0x8627, 0x8627, 0x14A8, 0x8628, 0x8628, 0x47C0, - 0x8629, 0x8629, 0x14AA, 0x862A, 0x862C, 0x47C1, 0x862D, 0x862D, 0x1FF9, - 0x862E, 0x8637, 0x47C4, 0x8638, 0x8638, 0x115B, 0x8639, 0x8639, 0x47CE, - 0x863A, 0x863A, 0x2353, 0x863B, 0x863B, 0x47CF, 0x863C, 0x863C, 0x14AC, - 0x863D, 0x863E, 0x47D0, 0x863F, 0x863F, 0x2061, 0x8640, 0x864C, 0x47D2, - 0x864D, 0x864D, 0x1BF0, 0x864E, 0x864E, 0x07B7, 0x864F, 0x864F, 0x0A59, - 0x8650, 0x8650, 0x0B71, 0x8651, 0x8651, 0x0A6E, 0x8652, 0x8653, 0x47DF, - 0x8654, 0x8654, 0x1BF1, 0x8655, 0x8655, 0x1E95, 0x8656, 0x8659, 0x47E1, - 0x865A, 0x865A, 0x0FB4, 0x865B, 0x865B, 0x47E5, 0x865C, 0x865C, 0x2049, - 0x865D, 0x865D, 0x47E6, 0x865E, 0x865E, 0x10C2, 0x865F, 0x865F, 0x1F42, - 0x8660, 0x8661, 0x47E7, 0x8662, 0x8662, 0x196D, 0x8663, 0x8666, 0x47E9, - 0x8667, 0x8667, 0x1FE8, 0x8668, 0x866A, 0x47ED, 0x866B, 0x866B, 0x050B, - 0x866C, 0x866C, 0x1BF2, 0x866D, 0x866D, 0x47F0, 0x866E, 0x866E, 0x1BF3, - 0x866F, 0x8670, 0x47F1, 0x8671, 0x8671, 0x0D44, 0x8672, 0x8678, 0x47F3, - 0x8679, 0x8679, 0x079E, 0x867A, 0x867A, 0x1BF5, 0x867B, 0x867B, 0x1BF7, - 0x867C, 0x867C, 0x1BF6, 0x867D, 0x867D, 0x0DD9, 0x867E, 0x867E, 0x0F27, - 0x867F, 0x867F, 0x1BF4, 0x8680, 0x8680, 0x0D4B, 0x8681, 0x8681, 0x1056, - 0x8682, 0x8682, 0x0A93, 0x8683, 0x8689, 0x47FA, 0x868A, 0x868A, 0x0ED2, - 0x868B, 0x868B, 0x1BFA, 0x868C, 0x868C, 0x0401, 0x868D, 0x868D, 0x1BF9, - 0x868E, 0x8692, 0x4801, 0x8693, 0x8693, 0x1C00, 0x8694, 0x8694, 0x4806, - 0x8695, 0x8695, 0x0496, 0x8696, 0x869B, 0x4807, 0x869C, 0x869C, 0x0FEA, - 0x869D, 0x869D, 0x1BFC, 0x869E, 0x86A2, 0x480D, 0x86A3, 0x86A3, 0x1BFE, - 0x86A4, 0x86A4, 0x112C, 0x86A5, 0x86A6, 0x4812, 0x86A7, 0x86A7, 0x1BFD, - 0x86A8, 0x86A8, 0x1BF8, 0x86A9, 0x86A9, 0x1C01, 0x86AA, 0x86AA, 0x1BFF, - 0x86AB, 0x86AB, 0x4814, 0x86AC, 0x86AC, 0x1BFB, 0x86AD, 0x86AE, 0x4815, - 0x86AF, 0x86AF, 0x1C09, 0x86B0, 0x86B0, 0x1C06, 0x86B1, 0x86B1, 0x1C08, - 0x86B2, 0x86B3, 0x4817, 0x86B4, 0x86B4, 0x1C0C, 0x86B5, 0x86B5, 0x1C04, - 0x86B6, 0x86B6, 0x1C02, 0x86B7, 0x86B9, 0x4819, 0x86BA, 0x86BA, 0x1C07, - 0x86BB, 0x86BF, 0x481C, 0x86C0, 0x86C0, 0x11FA, 0x86C1, 0x86C3, 0x4821, - 0x86C4, 0x86C4, 0x1C03, 0x86C5, 0x86C5, 0x4824, 0x86C6, 0x86C6, 0x0C76, - 0x86C7, 0x86C7, 0x0D18, 0x86C8, 0x86C8, 0x4825, 0x86C9, 0x86C9, 0x1C0A, - 0x86CA, 0x86CA, 0x071F, 0x86CB, 0x86CB, 0x0591, 0x86CC, 0x86CD, 0x4826, - 0x86CE, 0x86CE, 0x1C05, 0x86CF, 0x86CF, 0x1C0B, 0x86D0, 0x86D0, 0x1C12, - 0x86D1, 0x86D1, 0x1C18, 0x86D2, 0x86D3, 0x4828, 0x86D4, 0x86D4, 0x07EC, - 0x86D5, 0x86D7, 0x482A, 0x86D8, 0x86D8, 0x1C17, 0x86D9, 0x86D9, 0x0E8D, - 0x86DA, 0x86DA, 0x482D, 0x86DB, 0x86DB, 0x11EA, 0x86DC, 0x86DD, 0x482E, - 0x86DE, 0x86DE, 0x1C14, 0x86DF, 0x86DF, 0x1C16, 0x86E0, 0x86E3, 0x4830, - 0x86E4, 0x86E4, 0x06ED, 0x86E5, 0x86E8, 0x4834, 0x86E9, 0x86E9, 0x1C0D, - 0x86EA, 0x86EC, 0x4838, 0x86ED, 0x86ED, 0x1C10, 0x86EE, 0x86EE, 0x0AA0, - 0x86EF, 0x86EF, 0x483B, 0x86F0, 0x86F0, 0x117E, 0x86F1, 0x86F2, 0x1C0E, - 0x86F3, 0x86F3, 0x1C11, 0x86F4, 0x86F4, 0x1C15, 0x86F5, 0x86F7, 0x483C, - 0x86F8, 0x86F8, 0x1C1B, 0x86F9, 0x86F9, 0x10A1, 0x86FA, 0x86FA, 0x25DA, - 0x86FB, 0x86FD, 0x483F, 0x86FE, 0x86FE, 0x0629, 0x86FF, 0x86FF, 0x4842, - 0x8700, 0x8700, 0x0D88, 0x8701, 0x8701, 0x4843, 0x8702, 0x8702, 0x0681, - 0x8703, 0x8703, 0x1C19, 0x8704, 0x8705, 0x4844, 0x8706, 0x8706, 0x25D7, - 0x8707, 0x8707, 0x1C1A, 0x8708, 0x8708, 0x1C1C, 0x8709, 0x8709, 0x1C1F, - 0x870A, 0x870A, 0x1C1D, 0x870B, 0x870C, 0x4846, 0x870D, 0x870D, 0x1C1E, - 0x870E, 0x8711, 0x4848, 0x8712, 0x8712, 0x0FFA, 0x8713, 0x8713, 0x1C13, - 0x8714, 0x8714, 0x484C, 0x8715, 0x8715, 0x0E7A, 0x8716, 0x8716, 0x484D, - 0x8717, 0x8717, 0x0EDE, 0x8718, 0x8718, 0x11A8, 0x8719, 0x8719, 0x484E, - 0x871A, 0x871A, 0x1C25, 0x871B, 0x871B, 0x484F, 0x871C, 0x871C, 0x0AE0, - 0x871D, 0x871D, 0x4850, 0x871E, 0x871E, 0x1C22, 0x871F, 0x8720, 0x4851, - 0x8721, 0x8721, 0x099A, 0x8722, 0x8722, 0x1C2E, 0x8723, 0x8723, 0x1C20, - 0x8724, 0x8724, 0x4853, 0x8725, 0x8725, 0x1C23, 0x8726, 0x8728, 0x4854, - 0x8729, 0x8729, 0x1C2A, 0x872A, 0x872D, 0x4857, 0x872E, 0x872E, 0x1C24, - 0x872F, 0x8730, 0x485B, 0x8731, 0x8731, 0x1C29, 0x8732, 0x8733, 0x485D, - 0x8734, 0x8734, 0x1C28, 0x8735, 0x8736, 0x485F, 0x8737, 0x8737, 0x1C2B, - 0x8738, 0x873A, 0x4861, 0x873B, 0x873B, 0x1C21, 0x873C, 0x873D, 0x4864, - 0x873E, 0x873E, 0x1C26, 0x873F, 0x873F, 0x1C2C, 0x8740, 0x8746, 0x4866, - 0x8747, 0x8747, 0x1091, 0x8748, 0x8748, 0x1C27, 0x8749, 0x8749, 0x04BC, - 0x874A, 0x874B, 0x486D, 0x874C, 0x874C, 0x1C34, 0x874D, 0x874D, 0x486F, - 0x874E, 0x874E, 0x0F76, 0x874F, 0x8752, 0x4870, 0x8753, 0x8753, 0x1C37, - 0x8754, 0x8754, 0x4874, 0x8755, 0x8755, 0x212E, 0x8756, 0x8756, 0x4875, - 0x8757, 0x8757, 0x07DD, 0x8758, 0x8758, 0x4876, 0x8759, 0x8759, 0x1C3B, - 0x875A, 0x875F, 0x4877, 0x8760, 0x8760, 0x1C32, 0x8761, 0x8762, 0x487D, - 0x8763, 0x8763, 0x1C38, 0x8764, 0x8764, 0x1C3A, 0x8765, 0x8765, 0x1C3C, - 0x8766, 0x8766, 0x21B2, 0x8767, 0x876D, 0x487F, 0x876E, 0x876E, 0x1C35, - 0x876F, 0x876F, 0x4886, 0x8770, 0x8770, 0x1C33, 0x8771, 0x8773, 0x4887, - 0x8774, 0x8774, 0x07B2, 0x8775, 0x8775, 0x488A, 0x8776, 0x8776, 0x05DC, - 0x8777, 0x8777, 0x488B, 0x8778, 0x8778, 0x219E, 0x8779, 0x877A, 0x488C, - 0x877B, 0x877B, 0x1C31, 0x877C, 0x877C, 0x1C39, 0x877D, 0x877E, 0x1C2F, - 0x877F, 0x8781, 0x488E, 0x8782, 0x8782, 0x1C2D, 0x8783, 0x8783, 0x1C46, - 0x8784, 0x8784, 0x25DC, 0x8785, 0x8785, 0x1C43, 0x8786, 0x8787, 0x4891, - 0x8788, 0x8788, 0x1C42, 0x8789, 0x878A, 0x4893, 0x878B, 0x878B, 0x1C36, - 0x878C, 0x878C, 0x4895, 0x878D, 0x878D, 0x0CB5, 0x878E, 0x8792, 0x4896, - 0x8793, 0x8793, 0x1C3D, 0x8794, 0x8796, 0x489B, 0x8797, 0x8797, 0x1C45, - 0x8798, 0x879D, 0x489E, 0x879E, 0x879E, 0x206C, 0x879F, 0x879F, 0x0AFD, - 0x87A0, 0x87A1, 0x48A4, 0x87A2, 0x87A2, 0x2226, 0x87A3, 0x87A7, 0x48A6, - 0x87A8, 0x87A8, 0x1C3F, 0x87A9, 0x87AA, 0x48AB, 0x87AB, 0x87AB, 0x1C47, - 0x87AC, 0x87AC, 0x1C49, 0x87AD, 0x87AD, 0x1C44, 0x87AE, 0x87AE, 0x48AD, - 0x87AF, 0x87AF, 0x1C3E, 0x87B0, 0x87B2, 0x48AE, 0x87B3, 0x87B3, 0x1C4B, - 0x87B4, 0x87B4, 0x48B1, 0x87B5, 0x87B5, 0x1C4A, 0x87B6, 0x87B9, 0x48B2, - 0x87BA, 0x87BA, 0x0A84, 0x87BB, 0x87BB, 0x25E0, 0x87BC, 0x87BC, 0x48B6, - 0x87BD, 0x87BD, 0x1C4E, 0x87BE, 0x87BF, 0x48B7, 0x87C0, 0x87C0, 0x1C50, - 0x87C1, 0x87C3, 0x48B9, 0x87C4, 0x87C4, 0x227B, 0x87C5, 0x87C5, 0x48BC, - 0x87C6, 0x87C6, 0x1C41, 0x87C7, 0x87C7, 0x48BD, 0x87C8, 0x87C8, 0x25DE, - 0x87C9, 0x87C9, 0x48BE, 0x87CA, 0x87CA, 0x1C51, 0x87CB, 0x87CB, 0x1C4C, - 0x87CC, 0x87CD, 0x48BF, 0x87CE, 0x87CE, 0x25E1, 0x87CF, 0x87D0, 0x48C1, - 0x87D1, 0x87D1, 0x1C4F, 0x87D2, 0x87D2, 0x1C40, 0x87D3, 0x87D3, 0x1C4D, - 0x87D4, 0x87DA, 0x48C3, 0x87DB, 0x87DB, 0x1C52, 0x87DC, 0x87DF, 0x48CA, - 0x87E0, 0x87E0, 0x1C54, 0x87E1, 0x87E2, 0x48CE, 0x87E3, 0x87E3, 0x25D5, - 0x87E4, 0x87E4, 0x48D0, 0x87E5, 0x87E5, 0x1C48, 0x87E6, 0x87E9, 0x48D1, - 0x87EA, 0x87EA, 0x1C53, 0x87EB, 0x87EB, 0x48D5, 0x87EC, 0x87EC, 0x1E6B, - 0x87ED, 0x87ED, 0x48D6, 0x87EE, 0x87EE, 0x1C55, 0x87EF, 0x87EF, 0x25DB, - 0x87F0, 0x87F1, 0x48D7, 0x87F2, 0x87F2, 0x1E89, 0x87F3, 0x87F5, 0x48D9, - 0x87F6, 0x87F6, 0x25D9, 0x87F7, 0x87F8, 0x48DC, 0x87F9, 0x87F9, 0x0F82, - 0x87FA, 0x87FA, 0x48DE, 0x87FB, 0x87FB, 0x2211, 0x87FC, 0x87FD, 0x48DF, - 0x87FE, 0x87FE, 0x1C58, 0x87FF, 0x87FF, 0x48E1, 0x8800, 0x8802, 0x48E2, - 0x8803, 0x8803, 0x130D, 0x8804, 0x8804, 0x48E5, 0x8805, 0x8805, 0x2229, - 0x8806, 0x8806, 0x25D6, 0x8807, 0x8809, 0x48E6, 0x880A, 0x880A, 0x1C59, - 0x880B, 0x880F, 0x48E9, 0x8810, 0x8810, 0x25DD, 0x8811, 0x8811, 0x25DF, - 0x8812, 0x8812, 0x48EE, 0x8813, 0x8813, 0x1C57, 0x8814, 0x8814, 0x48EF, - 0x8815, 0x8815, 0x0CBF, 0x8816, 0x8816, 0x1C56, 0x8817, 0x881A, 0x48F0, - 0x881B, 0x881B, 0x1C5A, 0x881C, 0x881E, 0x48F4, 0x881F, 0x881F, 0x1FEF, - 0x8820, 0x8820, 0x48F7, 0x8821, 0x8821, 0x1C5B, 0x8822, 0x8822, 0x0543, - 0x8823, 0x8823, 0x25D8, 0x8824, 0x8830, 0x48F8, 0x8831, 0x8831, 0x1F29, - 0x8832, 0x8832, 0x1A8D, 0x8833, 0x8835, 0x4905, 0x8836, 0x8836, 0x1E5B, - 0x8837, 0x8838, 0x4908, 0x8839, 0x8839, 0x1C5C, 0x883A, 0x883A, 0x490A, - 0x883B, 0x883B, 0x2076, 0x883C, 0x883C, 0x1C5D, 0x883D, 0x883F, 0x490B, - 0x8840, 0x8840, 0x0FD3, 0x8841, 0x8843, 0x490E, 0x8844, 0x8844, 0x1CAA, - 0x8845, 0x8845, 0x0F91, 0x8846, 0x8846, 0x2297, 0x8847, 0x8849, 0x4911, - 0x884A, 0x884A, 0x2690, 0x884B, 0x884B, 0x4914, 0x884C, 0x884C, 0x0F9B, - 0x884D, 0x884D, 0x1005, 0x884E, 0x8852, 0x4915, 0x8853, 0x8853, 0x213F, - 0x8854, 0x8854, 0x0F3B, 0x8855, 0x8856, 0x491A, 0x8857, 0x8857, 0x08A7, - 0x8858, 0x8858, 0x491C, 0x8859, 0x8859, 0x0FEC, 0x885A, 0x885A, 0x491D, - 0x885B, 0x885B, 0x2198, 0x885C, 0x885C, 0x491E, 0x885D, 0x885D, 0x1E88, - 0x885E, 0x8860, 0x491F, 0x8861, 0x8861, 0x0799, 0x8862, 0x8862, 0x15ED, - 0x8863, 0x8863, 0x1049, 0x8864, 0x8864, 0x1BA6, 0x8865, 0x8865, 0x0480, - 0x8866, 0x8867, 0x4922, 0x8868, 0x8868, 0x0456, 0x8869, 0x8869, 0x1BA7, - 0x886A, 0x886A, 0x4924, 0x886B, 0x886B, 0x0CF9, 0x886C, 0x886C, 0x04E9, - 0x886D, 0x886D, 0x4925, 0x886E, 0x886E, 0x1306, 0x886F, 0x886F, 0x4926, - 0x8870, 0x8870, 0x0D9A, 0x8871, 0x8871, 0x4927, 0x8872, 0x8872, 0x1BA8, - 0x8873, 0x8876, 0x4928, 0x8877, 0x8877, 0x11D3, 0x8878, 0x8878, 0x492C, - 0x8879, 0x8879, 0x228C, 0x887A, 0x887C, 0x492D, 0x887D, 0x887D, 0x1BA9, - 0x887E, 0x887E, 0x1CBE, 0x887F, 0x887F, 0x1BAA, 0x8880, 0x8880, 0x4930, - 0x8881, 0x8881, 0x10EF, 0x8882, 0x8882, 0x1BAB, 0x8883, 0x8883, 0x4931, - 0x8884, 0x8884, 0x03CB, 0x8885, 0x8885, 0x1CBF, 0x8886, 0x8887, 0x4932, - 0x8888, 0x8888, 0x1CC0, 0x8889, 0x888A, 0x4934, 0x888B, 0x888B, 0x057F, - 0x888C, 0x888C, 0x4936, 0x888D, 0x888D, 0x0B9C, 0x888E, 0x8891, 0x4937, - 0x8892, 0x8892, 0x0E0E, 0x8893, 0x8895, 0x493B, 0x8896, 0x8896, 0x0FAF, - 0x8897, 0x889B, 0x493E, 0x889C, 0x889C, 0x0E91, 0x889D, 0x88A1, 0x4943, - 0x88A2, 0x88A2, 0x1BAC, 0x88A3, 0x88A3, 0x4948, 0x88A4, 0x88A4, 0x1307, - 0x88A5, 0x88AA, 0x4949, 0x88AB, 0x88AB, 0x0424, 0x88AC, 0x88AC, 0x494F, - 0x88AD, 0x88AD, 0x0F1B, 0x88AE, 0x88B0, 0x4950, 0x88B1, 0x88B1, 0x069F, - 0x88B2, 0x88B6, 0x4953, 0x88B7, 0x88B7, 0x1BAE, 0x88B8, 0x88BB, 0x4958, - 0x88BC, 0x88BC, 0x1BAF, 0x88BD, 0x88C0, 0x495C, 0x88C1, 0x88C1, 0x048A, - 0x88C2, 0x88C2, 0x0A1A, 0x88C3, 0x88C4, 0x4960, 0x88C5, 0x88C5, 0x120D, - 0x88C6, 0x88C6, 0x1BAD, 0x88C7, 0x88C8, 0x4962, 0x88C9, 0x88C9, 0x1BB0, - 0x88CA, 0x88CA, 0x25F1, 0x88CB, 0x88CD, 0x4964, 0x88CE, 0x88CE, 0x1BB2, - 0x88CF, 0x88CF, 0x200C, 0x88D0, 0x88D1, 0x4967, 0x88D2, 0x88D2, 0x130A, - 0x88D3, 0x88D3, 0x4969, 0x88D4, 0x88D4, 0x1068, 0x88D5, 0x88D5, 0x10E6, - 0x88D6, 0x88D7, 0x496A, 0x88D8, 0x88D8, 0x1CC1, 0x88D9, 0x88D9, 0x0C94, - 0x88DA, 0x88DB, 0x496C, 0x88DC, 0x88DC, 0x1E58, 0x88DD, 0x88DD, 0x22AC, - 0x88DE, 0x88DE, 0x496E, 0x88DF, 0x88DF, 0x1CC2, 0x88E0, 0x88E1, 0x496F, - 0x88E2, 0x88E2, 0x1BB1, 0x88E3, 0x88E3, 0x1BB3, 0x88E4, 0x88E4, 0x0970, - 0x88E5, 0x88E5, 0x1BB4, 0x88E6, 0x88E7, 0x4971, 0x88E8, 0x88E8, 0x1BB8, - 0x88E9, 0x88EF, 0x4973, 0x88F0, 0x88F0, 0x1BBA, 0x88F1, 0x88F1, 0x1BB5, - 0x88F2, 0x88F2, 0x497A, 0x88F3, 0x88F3, 0x0D0A, 0x88F4, 0x88F4, 0x0BA2, - 0x88F5, 0x88F7, 0x497B, 0x88F8, 0x88F8, 0x0A8A, 0x88F9, 0x88F9, 0x0755, - 0x88FA, 0x88FB, 0x497E, 0x88FC, 0x88FC, 0x1BB7, 0x88FD, 0x88FD, 0x26A7, - 0x88FE, 0x88FE, 0x1BB9, 0x88FF, 0x88FF, 0x4980, 0x8900, 0x8901, 0x4981, - 0x8902, 0x8902, 0x072C, 0x8903, 0x8906, 0x4983, 0x8907, 0x8907, 0x2676, - 0x8908, 0x8909, 0x4987, 0x890A, 0x890A, 0x1BBF, 0x890B, 0x890F, 0x4989, - 0x8910, 0x8910, 0x078D, 0x8911, 0x8911, 0x498E, 0x8912, 0x8912, 0x0408, - 0x8913, 0x8913, 0x1BBD, 0x8914, 0x8918, 0x498F, 0x8919, 0x8919, 0x1BBC, - 0x891A, 0x891A, 0x1BB6, 0x891B, 0x891B, 0x1BBE, 0x891C, 0x8920, 0x4994, - 0x8921, 0x8921, 0x1BBB, 0x8922, 0x8924, 0x4999, 0x8925, 0x8925, 0x0CC7, - 0x8926, 0x8929, 0x499C, 0x892A, 0x892A, 0x0E7B, 0x892B, 0x892B, 0x1BC1, - 0x892C, 0x892F, 0x49A0, 0x8930, 0x8930, 0x1739, 0x8931, 0x8931, 0x49A4, - 0x8932, 0x8932, 0x1FE1, 0x8933, 0x8933, 0x25BB, 0x8934, 0x8934, 0x1BC0, - 0x8935, 0x8935, 0x49A5, 0x8936, 0x8936, 0x1BC2, 0x8937, 0x8937, 0x49A6, - 0x8938, 0x8938, 0x25BE, 0x8939, 0x893A, 0x49A7, 0x893B, 0x893B, 0x22DD, - 0x893C, 0x8940, 0x49A9, 0x8941, 0x8941, 0x1BC3, 0x8942, 0x8943, 0x49AE, - 0x8944, 0x8944, 0x0F52, 0x8945, 0x8946, 0x49B0, 0x8947, 0x8947, 0x25BD, - 0x8948, 0x8955, 0x49B2, 0x8956, 0x8956, 0x1E2A, 0x8957, 0x895C, 0x49C0, - 0x895D, 0x895D, 0x25BC, 0x895E, 0x895E, 0x1CC3, 0x895F, 0x895F, 0x08C4, - 0x8960, 0x8960, 0x25BA, 0x8961, 0x8963, 0x49C6, 0x8964, 0x8964, 0x25BF, - 0x8965, 0x8965, 0x49C9, 0x8966, 0x8966, 0x1BC4, 0x8967, 0x8969, 0x49CA, - 0x896A, 0x896A, 0x2187, 0x896B, 0x896B, 0x49CD, 0x896C, 0x896C, 0x266B, - 0x896D, 0x896E, 0x49CE, 0x896F, 0x896F, 0x1E7F, 0x8970, 0x8971, 0x49D0, - 0x8972, 0x8972, 0x21AD, 0x8973, 0x897A, 0x49D2, 0x897B, 0x897B, 0x1BC5, - 0x897C, 0x897E, 0x49DA, 0x897F, 0x897F, 0x0F06, 0x8980, 0x8980, 0x49DD, - 0x8981, 0x8981, 0x1031, 0x8982, 0x8982, 0x49DE, 0x8983, 0x8983, 0x1BDF, - 0x8984, 0x8985, 0x49DF, 0x8986, 0x8986, 0x06AD, 0x8987, 0x898A, 0x49E1, - 0x898B, 0x898B, 0x1F96, 0x898C, 0x898E, 0x49E5, 0x898F, 0x898F, 0x1F32, - 0x8990, 0x8992, 0x49E8, 0x8993, 0x8993, 0x2084, 0x8994, 0x8995, 0x49EB, - 0x8996, 0x8996, 0x2136, 0x8997, 0x8997, 0x49ED, 0x8998, 0x8998, 0x24B8, - 0x8999, 0x89A0, 0x49EE, 0x89A1, 0x89A1, 0x24BA, 0x89A2, 0x89A5, 0x49F6, - 0x89A6, 0x89A6, 0x24BC, 0x89A7, 0x89A9, 0x49FA, 0x89AA, 0x89AA, 0x20E4, - 0x89AB, 0x89AB, 0x49FD, 0x89AC, 0x89AC, 0x24B9, 0x89AD, 0x89AE, 0x49FE, - 0x89AF, 0x89AF, 0x24BD, 0x89B0, 0x89B1, 0x4A00, 0x89B2, 0x89B2, 0x24BE, - 0x89B3, 0x89B6, 0x4A02, 0x89B7, 0x89B7, 0x24BF, 0x89B8, 0x89B9, 0x4A06, - 0x89BA, 0x89BA, 0x1FD2, 0x89BB, 0x89BC, 0x4A08, 0x89BD, 0x89BD, 0x1FFD, - 0x89BE, 0x89BE, 0x4A0A, 0x89BF, 0x89BF, 0x24BB, 0x89C0, 0x89C0, 0x1F2D, - 0x89C1, 0x89C1, 0x086E, 0x89C2, 0x89C2, 0x0734, 0x89C3, 0x89C3, 0x4A0B, - 0x89C4, 0x89C4, 0x073F, 0x89C5, 0x89C5, 0x0ADE, 0x89C6, 0x89C6, 0x0D6A, - 0x89C7, 0x89C7, 0x193A, 0x89C8, 0x89C8, 0x09AB, 0x89C9, 0x89C9, 0x0924, - 0x89CA, 0x89CC, 0x193B, 0x89CD, 0x89CD, 0x4A0C, 0x89CE, 0x89D1, 0x193E, - 0x89D2, 0x89D2, 0x0898, 0x89D3, 0x89D5, 0x4A0D, 0x89D6, 0x89D6, 0x1D57, - 0x89D7, 0x89D9, 0x4A10, 0x89DA, 0x89DA, 0x1D59, 0x89DB, 0x89DB, 0x4A13, - 0x89DC, 0x89DC, 0x1D5A, 0x89DD, 0x89DD, 0x4A14, 0x89DE, 0x89DE, 0x1D58, - 0x89DF, 0x89E2, 0x4A15, 0x89E3, 0x89E3, 0x08B3, 0x89E4, 0x89E4, 0x4A19, - 0x89E5, 0x89E5, 0x1D5B, 0x89E6, 0x89E6, 0x0528, 0x89E7, 0x89EA, 0x4A1A, - 0x89EB, 0x89EB, 0x1D5C, 0x89EC, 0x89EE, 0x4A1E, 0x89EF, 0x89EF, 0x1D5D, - 0x89F0, 0x89F2, 0x4A21, 0x89F3, 0x89F3, 0x19C0, 0x89F4, 0x89F4, 0x2609, - 0x89F5, 0x89F5, 0x4A24, 0x89F6, 0x89F6, 0x260A, 0x89F7, 0x89F7, 0x4A25, - 0x89F8, 0x89F8, 0x1E94, 0x89F9, 0x89FF, 0x4A26, 0x8A00, 0x8A00, 0x0FFD, - 0x8A01, 0x8A01, 0x22DF, 0x8A02, 0x8A02, 0x1ECB, 0x8A03, 0x8A03, 0x1F0D, - 0x8A04, 0x8A06, 0x4A2D, 0x8A07, 0x8A07, 0x12FE, 0x8A08, 0x8A08, 0x1F77, - 0x8A09, 0x8A09, 0x4A30, 0x8A0A, 0x8A0A, 0x21EB, 0x8A0B, 0x8A0B, 0x4A31, - 0x8A0C, 0x8A0C, 0x22E1, 0x8A0D, 0x8A0D, 0x4A32, 0x8A0E, 0x8A0E, 0x216F, - 0x8A0F, 0x8A0F, 0x4A33, 0x8A10, 0x8A10, 0x22E0, 0x8A11, 0x8A12, 0x4A34, - 0x8A13, 0x8A13, 0x21EA, 0x8A14, 0x8A14, 0x4A36, 0x8A15, 0x8A15, 0x22E2, - 0x8A16, 0x8A16, 0x20CB, 0x8A17, 0x8A17, 0x4A37, 0x8A18, 0x8A18, 0x1F78, - 0x8A19, 0x8A1A, 0x4A38, 0x8A1B, 0x8A1B, 0x1EE2, 0x8A1C, 0x8A1C, 0x4A3A, - 0x8A1D, 0x8A1D, 0x21F2, 0x8A1E, 0x8A1E, 0x4A3B, 0x8A1F, 0x8A1F, 0x2150, - 0x8A20, 0x8A22, 0x4A3C, 0x8A23, 0x8A23, 0x1FD3, 0x8A24, 0x8A24, 0x4A3F, - 0x8A25, 0x8A25, 0x22E5, 0x8A26, 0x8A29, 0x4A40, 0x8A2A, 0x8A2A, 0x1EF2, - 0x8A2B, 0x8A2C, 0x4A44, 0x8A2D, 0x8A2D, 0x211F, 0x8A2E, 0x8A30, 0x4A46, - 0x8A31, 0x8A31, 0x21DD, 0x8A32, 0x8A33, 0x4A49, 0x8A34, 0x8A34, 0x2154, - 0x8A35, 0x8A35, 0x4A4B, 0x8A36, 0x8A36, 0x22E7, 0x8A37, 0x8A39, 0x4A4C, - 0x8A3A, 0x8A3A, 0x2282, 0x8A3B, 0x8A3D, 0x4A4F, 0x8A3E, 0x8A3E, 0x1D5E, - 0x8A3F, 0x8A40, 0x4A52, 0x8A41, 0x8A41, 0x22E6, 0x8A42, 0x8A45, 0x4A54, - 0x8A46, 0x8A46, 0x22E8, 0x8A47, 0x8A47, 0x4A58, 0x8A48, 0x8A48, 0x1A84, - 0x8A49, 0x8A4D, 0x4A59, 0x8A4E, 0x8A4E, 0x22E4, 0x8A4F, 0x8A4F, 0x4A5E, - 0x8A50, 0x8A50, 0x226A, 0x8A51, 0x8A51, 0x4A5F, 0x8A52, 0x8A52, 0x22EB, - 0x8A53, 0x8A53, 0x4A60, 0x8A54, 0x8A54, 0x22E9, 0x8A55, 0x8A55, 0x20BD, - 0x8A56, 0x8A57, 0x4A61, 0x8A58, 0x8A58, 0x22EA, 0x8A59, 0x8A5A, 0x4A63, - 0x8A5B, 0x8A5B, 0x22BD, 0x8A5C, 0x8A5D, 0x4A65, 0x8A5E, 0x8A5E, 0x1E9E, - 0x8A5F, 0x8A60, 0x4A67, 0x8A61, 0x8A61, 0x22F6, 0x8A62, 0x8A62, 0x21E7, - 0x8A63, 0x8A63, 0x2216, 0x8A64, 0x8A65, 0x4A69, 0x8A66, 0x8A66, 0x2137, - 0x8A67, 0x8A68, 0x4A6B, 0x8A69, 0x8A69, 0x212C, 0x8A6A, 0x8A6A, 0x4A6D, - 0x8A6B, 0x8A6B, 0x1E68, 0x8A6C, 0x8A6C, 0x22F2, 0x8A6D, 0x8A6D, 0x1F37, - 0x8A6E, 0x8A6E, 0x22F3, 0x8A6F, 0x8A6F, 0x4A6E, 0x8A70, 0x8A70, 0x22EF, - 0x8A71, 0x8A71, 0x1F50, 0x8A72, 0x8A72, 0x1F10, 0x8A73, 0x8A73, 0x21C8, - 0x8A74, 0x8A74, 0x4A6F, 0x8A75, 0x8A75, 0x22F1, 0x8A76, 0x8A78, 0x4A70, - 0x8A79, 0x8A79, 0x1153, 0x8A7A, 0x8A7B, 0x4A73, 0x8A7C, 0x8A7C, 0x22F0, - 0x8A7D, 0x8A7E, 0x4A75, 0x8A7F, 0x8A7F, 0x22EE, 0x8A80, 0x8A83, 0x4A77, - 0x8A84, 0x8A84, 0x22ED, 0x8A85, 0x8A85, 0x229E, 0x8A86, 0x8A86, 0x22EC, - 0x8A87, 0x8A87, 0x1FE2, 0x8A88, 0x8A88, 0x4A7B, 0x8A89, 0x8A89, 0x10E3, - 0x8A8A, 0x8A8A, 0x0E2F, 0x8A8B, 0x8A8C, 0x4A7C, 0x8A8D, 0x8A8D, 0x20FE, - 0x8A8E, 0x8A90, 0x4A7E, 0x8A91, 0x8A92, 0x22F9, 0x8A93, 0x8A93, 0x0D5B, - 0x8A94, 0x8A94, 0x4A81, 0x8A95, 0x8A95, 0x1EAF, 0x8A96, 0x8A97, 0x4A82, - 0x8A98, 0x8A98, 0x2236, 0x8A99, 0x8A99, 0x4A84, 0x8A9A, 0x8A9A, 0x22F7, - 0x8A9B, 0x8A9D, 0x4A85, 0x8A9E, 0x8A9E, 0x223D, 0x8A9F, 0x8A9F, 0x4A88, - 0x8AA0, 0x8AA0, 0x1E82, 0x8AA1, 0x8AA1, 0x1FB6, 0x8AA2, 0x8AA2, 0x4A89, - 0x8AA3, 0x8AA3, 0x21A4, 0x8AA4, 0x8AA4, 0x21AA, 0x8AA5, 0x8AA5, 0x22F8, - 0x8AA6, 0x8AA6, 0x2151, 0x8AA7, 0x8AA7, 0x4A8A, 0x8AA8, 0x8AA8, 0x1F60, - 0x8AA9, 0x8AAB, 0x4A8B, 0x8AAC, 0x8AAC, 0x2147, 0x8AAD, 0x8AAF, 0x4A8E, - 0x8AB0, 0x8AB0, 0x2145, 0x8AB1, 0x8AB1, 0x4A91, 0x8AB2, 0x8AB2, 0x1FDC, - 0x8AB3, 0x8AB5, 0x4A92, 0x8AB6, 0x8AB6, 0x2301, 0x8AB7, 0x8AB8, 0x4A95, - 0x8AB9, 0x8AB9, 0x1EF5, 0x8ABA, 0x8ABB, 0x4A97, 0x8ABC, 0x8ABC, 0x2218, - 0x8ABD, 0x8ABE, 0x4A99, 0x8ABF, 0x8ABF, 0x1EC6, 0x8AC0, 0x8AC1, 0x4A9B, - 0x8AC2, 0x8AC2, 0x2300, 0x8AC3, 0x8AC3, 0x4A9D, 0x8AC4, 0x8AC4, 0x22B4, - 0x8AC5, 0x8AC6, 0x4A9E, 0x8AC7, 0x8AC7, 0x2169, 0x8AC8, 0x8AC8, 0x4AA0, - 0x8AC9, 0x8AC9, 0x22FD, 0x8ACA, 0x8ACA, 0x4AA1, 0x8ACB, 0x8ACB, 0x20EA, - 0x8ACC, 0x8ACC, 0x4AA2, 0x8ACD, 0x8ACD, 0x22F4, 0x8ACE, 0x8ACE, 0x4AA3, - 0x8ACF, 0x8ACF, 0x22FB, 0x8AD0, 0x8AD0, 0x4AA4, 0x8AD1, 0x8AD1, 0x22FC, - 0x8AD2, 0x8AD2, 0x2027, 0x8AD3, 0x8AD5, 0x4AA5, 0x8AD6, 0x8AD6, 0x2060, - 0x8AD7, 0x8AD7, 0x22FF, 0x8AD8, 0x8ADA, 0x4AA8, 0x8ADB, 0x8ADB, 0x22FE, - 0x8ADC, 0x8ADC, 0x1EC7, 0x8ADD, 0x8ADD, 0x4AAB, 0x8ADE, 0x8ADE, 0x230C, - 0x8ADF, 0x8AE1, 0x4AAC, 0x8AE2, 0x8AE2, 0x22F5, 0x8AE3, 0x8AE3, 0x4AAF, - 0x8AE4, 0x8AE4, 0x2306, 0x8AE5, 0x8AE5, 0x4AB0, 0x8AE6, 0x8AE6, 0x230A, - 0x8AE7, 0x8AE7, 0x21D3, 0x8AE8, 0x8AEA, 0x4AB1, 0x8AEB, 0x8AEB, 0x2303, - 0x8AEC, 0x8AEC, 0x4AB4, 0x8AED, 0x8AED, 0x2307, 0x8AEE, 0x8AEE, 0x230B, - 0x8AEF, 0x8AF0, 0x4AB5, 0x8AF1, 0x8AF1, 0x1F5F, 0x8AF2, 0x8AF2, 0x4AB7, - 0x8AF3, 0x8AF3, 0x2309, 0x8AF4, 0x8AF5, 0x4AB8, 0x8AF6, 0x8AF6, 0x2302, - 0x8AF7, 0x8AF7, 0x1F04, 0x8AF8, 0x8AF8, 0x229D, 0x8AF9, 0x8AF9, 0x4ABA, - 0x8AFA, 0x8AFA, 0x21FB, 0x8AFB, 0x8AFB, 0x4ABB, 0x8AFC, 0x8AFC, 0x2308, - 0x8AFD, 0x8AFD, 0x4ABC, 0x8AFE, 0x8AFE, 0x20AC, 0x8AFF, 0x8AFF, 0x4ABD, - 0x8B00, 0x8B00, 0x208E, 0x8B01, 0x8B01, 0x2305, 0x8B02, 0x8B02, 0x2197, - 0x8B03, 0x8B03, 0x4ABE, 0x8B04, 0x8B04, 0x2171, 0x8B05, 0x8B05, 0x2298, - 0x8B06, 0x8B06, 0x4ABF, 0x8B07, 0x8B07, 0x173C, 0x8B08, 0x8B09, 0x4AC0, - 0x8B0A, 0x8B0A, 0x1F57, 0x8B0B, 0x8B0D, 0x4AC2, 0x8B0E, 0x8B0E, 0x2082, - 0x8B0F, 0x8B0F, 0x4AC5, 0x8B10, 0x8B10, 0x2311, 0x8B11, 0x8B13, 0x4AC6, - 0x8B14, 0x8B14, 0x2304, 0x8B15, 0x8B15, 0x4AC9, 0x8B16, 0x8B16, 0x230F, - 0x8B17, 0x8B17, 0x1E35, 0x8B18, 0x8B18, 0x4ACA, 0x8B19, 0x8B19, 0x20D1, - 0x8B1A, 0x8B1A, 0x2310, 0x8B1B, 0x8B1B, 0x1FA3, 0x8B1C, 0x8B1C, 0x4ACB, - 0x8B1D, 0x8B1D, 0x21D6, 0x8B1E, 0x8B20, 0x4ACC, 0x8B21, 0x8B21, 0x2206, - 0x8B22, 0x8B25, 0x4ACF, 0x8B26, 0x8B26, 0x1D5F, 0x8B27, 0x8B27, 0x4AD3, - 0x8B28, 0x8B28, 0x230D, 0x8B29, 0x8B2A, 0x4AD4, 0x8B2B, 0x8B2B, 0x2312, - 0x8B2C, 0x8B2C, 0x208D, 0x8B2D, 0x8B2D, 0x2313, 0x8B2E, 0x8B32, 0x4AD6, - 0x8B33, 0x8B33, 0x22E3, 0x8B34, 0x8B38, 0x4ADB, 0x8B39, 0x8B39, 0x1FBA, - 0x8B3A, 0x8B3D, 0x4AE0, 0x8B3E, 0x8B3E, 0x2078, 0x8B3F, 0x8B48, 0x4AE4, - 0x8B49, 0x8B49, 0x2288, 0x8B4A, 0x8B4D, 0x4AEE, 0x8B4E, 0x8B4E, 0x2316, - 0x8B4F, 0x8B4F, 0x1F6B, 0x8B50, 0x8B55, 0x4AF2, 0x8B56, 0x8B56, 0x2314, - 0x8B57, 0x8B57, 0x4AF8, 0x8B58, 0x8B58, 0x2130, 0x8B59, 0x8B59, 0x2315, - 0x8B5A, 0x8B5A, 0x2168, 0x8B5B, 0x8B5B, 0x4AF9, 0x8B5C, 0x8B5C, 0x20C4, - 0x8B5D, 0x8B65, 0x4AFA, 0x8B66, 0x8B66, 0x08DE, 0x8B67, 0x8B6A, 0x4B03, - 0x8B6B, 0x8B6B, 0x2318, 0x8B6C, 0x8B6C, 0x0BC8, 0x8B6D, 0x8B6E, 0x4B07, - 0x8B6F, 0x8B6F, 0x2219, 0x8B70, 0x8B70, 0x2217, 0x8B71, 0x8B73, 0x4B09, - 0x8B74, 0x8B74, 0x20D5, 0x8B75, 0x8B76, 0x4B0C, 0x8B77, 0x8B77, 0x1F4A, - 0x8B78, 0x8B7C, 0x4B0E, 0x8B7D, 0x8B7D, 0x2240, 0x8B7E, 0x8B7F, 0x4B13, - 0x8B80, 0x8B80, 0x1ED3, 0x8B81, 0x8B89, 0x4B15, 0x8B8A, 0x8B8A, 0x1E49, - 0x8B8B, 0x8B8D, 0x4B1E, 0x8B8E, 0x8B8E, 0x261B, 0x8B8F, 0x8B91, 0x4B21, - 0x8B92, 0x8B92, 0x1E6D, 0x8B93, 0x8B93, 0x20F8, 0x8B94, 0x8B94, 0x4B24, - 0x8B95, 0x8B95, 0x1FFB, 0x8B96, 0x8B96, 0x2319, 0x8B97, 0x8B9B, 0x4B25, - 0x8B9C, 0x8B9C, 0x230E, 0x8B9D, 0x8B9D, 0x4B2A, 0x8B9E, 0x8B9E, 0x2317, - 0x8B9F, 0x8B9F, 0x4B2B, 0x8BA0, 0x8BA0, 0x1317, 0x8BA1, 0x8BA1, 0x0839, - 0x8BA2, 0x8BA2, 0x05E8, 0x8BA3, 0x8BA3, 0x06B7, 0x8BA4, 0x8BA4, 0x0CAA, - 0x8BA5, 0x8BA5, 0x0818, 0x8BA6, 0x8BA7, 0x1318, 0x8BA8, 0x8BA8, 0x0E29, - 0x8BA9, 0x8BA9, 0x0C9E, 0x8BAA, 0x8BAA, 0x131A, 0x8BAB, 0x8BAB, 0x0C1C, - 0x8BAC, 0x8BAC, 0x4B2C, 0x8BAD, 0x8BAD, 0x0FDE, 0x8BAE, 0x8BAE, 0x1070, - 0x8BAF, 0x8BAF, 0x0FDF, 0x8BB0, 0x8BB0, 0x083A, 0x8BB1, 0x8BB1, 0x4B2D, - 0x8BB2, 0x8BB2, 0x0883, 0x8BB3, 0x8BB3, 0x07F9, 0x8BB4, 0x8BB5, 0x131B, - 0x8BB6, 0x8BB6, 0x0FF1, 0x8BB7, 0x8BB7, 0x131D, 0x8BB8, 0x8BB8, 0x0FB8, - 0x8BB9, 0x8BB9, 0x062E, 0x8BBA, 0x8BBA, 0x0A82, 0x8BBB, 0x8BBB, 0x4B2E, - 0x8BBC, 0x8BBC, 0x0DC4, 0x8BBD, 0x8BBD, 0x068A, 0x8BBE, 0x8BBE, 0x0D21, - 0x8BBF, 0x8BBF, 0x0660, 0x8BC0, 0x8BC0, 0x0926, 0x8BC1, 0x8BC1, 0x11A3, - 0x8BC2, 0x8BC3, 0x131E, 0x8BC4, 0x8BC4, 0x0BDF, 0x8BC5, 0x8BC5, 0x1244, - 0x8BC6, 0x8BC6, 0x0D4D, 0x8BC7, 0x8BC7, 0x4B2F, 0x8BC8, 0x8BC8, 0x114A, - 0x8BC9, 0x8BC9, 0x0DD4, 0x8BCA, 0x8BCA, 0x1190, 0x8BCB, 0x8BCB, 0x1320, - 0x8BCC, 0x8BCC, 0x11DE, 0x8BCD, 0x8BCD, 0x054D, 0x8BCE, 0x8BCE, 0x1322, - 0x8BCF, 0x8BCF, 0x1321, 0x8BD0, 0x8BD0, 0x4B30, 0x8BD1, 0x8BD1, 0x1072, - 0x8BD2, 0x8BD4, 0x1323, 0x8BD5, 0x8BD5, 0x0D6B, 0x8BD6, 0x8BD6, 0x1326, - 0x8BD7, 0x8BD7, 0x0D42, 0x8BD8, 0x8BD9, 0x1327, 0x8BDA, 0x8BDA, 0x04F4, - 0x8BDB, 0x8BDB, 0x11EE, 0x8BDC, 0x8BDC, 0x1329, 0x8BDD, 0x8BDD, 0x07C5, - 0x8BDE, 0x8BDE, 0x058F, 0x8BDF, 0x8BE0, 0x132A, 0x8BE1, 0x8BE1, 0x0747, - 0x8BE2, 0x8BE2, 0x0FD8, 0x8BE3, 0x8BE3, 0x106F, 0x8BE4, 0x8BE4, 0x132C, - 0x8BE5, 0x8BE5, 0x06BE, 0x8BE6, 0x8BE6, 0x0F57, 0x8BE7, 0x8BE7, 0x04B6, - 0x8BE8, 0x8BE9, 0x132D, 0x8BEA, 0x8BEA, 0x4B31, 0x8BEB, 0x8BEB, 0x08BC, - 0x8BEC, 0x8BEC, 0x0EEB, 0x8BED, 0x8BED, 0x10D4, 0x8BEE, 0x8BEE, 0x132F, - 0x8BEF, 0x8BEF, 0x0F02, 0x8BF0, 0x8BF0, 0x1330, 0x8BF1, 0x8BF1, 0x10BA, - 0x8BF2, 0x8BF2, 0x07FA, 0x8BF3, 0x8BF3, 0x1331, 0x8BF4, 0x8BF4, 0x0DAA, - 0x8BF5, 0x8BF5, 0x0DC5, 0x8BF6, 0x8BF6, 0x1332, 0x8BF7, 0x8BF7, 0x0C68, - 0x8BF8, 0x8BF8, 0x11ED, 0x8BF9, 0x8BF9, 0x1333, 0x8BFA, 0x8BFA, 0x0B76, - 0x8BFB, 0x8BFB, 0x0600, 0x8BFC, 0x8BFC, 0x1334, 0x8BFD, 0x8BFD, 0x0669, - 0x8BFE, 0x8BFE, 0x095B, 0x8BFF, 0x8BFF, 0x1335, 0x8C00, 0x8C00, 0x1336, - 0x8C01, 0x8C01, 0x0DA2, 0x8C02, 0x8C02, 0x1337, 0x8C03, 0x8C03, 0x05D8, - 0x8C04, 0x8C04, 0x1338, 0x8C05, 0x8C05, 0x0A0B, 0x8C06, 0x8C06, 0x1218, - 0x8C07, 0x8C07, 0x1339, 0x8C08, 0x8C08, 0x0E0B, 0x8C09, 0x8C09, 0x4B32, - 0x8C0A, 0x8C0A, 0x1071, 0x8C0B, 0x8C0B, 0x0B14, 0x8C0C, 0x8C0C, 0x133A, - 0x8C0D, 0x8C0D, 0x05DE, 0x8C0E, 0x8C0E, 0x07E6, 0x8C0F, 0x8C0F, 0x133B, - 0x8C10, 0x8C10, 0x0F7E, 0x8C11, 0x8C12, 0x133C, 0x8C13, 0x8C13, 0x0ECC, - 0x8C14, 0x8C16, 0x133E, 0x8C17, 0x8C17, 0x04BE, 0x8C18, 0x8C18, 0x1343, - 0x8C19, 0x8C19, 0x1341, 0x8C1A, 0x8C1A, 0x1011, 0x8C1B, 0x8C1B, 0x1342, - 0x8C1C, 0x8C1C, 0x0ADA, 0x8C1D, 0x8C1D, 0x1344, 0x8C1E, 0x8C1E, 0x4B33, - 0x8C1F, 0x8C21, 0x1345, 0x8C22, 0x8C22, 0x0F86, 0x8C23, 0x8C23, 0x102C, - 0x8C24, 0x8C24, 0x0404, 0x8C25, 0x8C25, 0x1348, 0x8C26, 0x8C26, 0x0C28, - 0x8C27, 0x8C27, 0x1349, 0x8C28, 0x8C28, 0x08C8, 0x8C29, 0x8C29, 0x0AA6, - 0x8C2A, 0x8C2B, 0x134A, 0x8C2C, 0x8C2C, 0x0B02, 0x8C2D, 0x8C2D, 0x0E0A, - 0x8C2E, 0x8C2F, 0x134C, 0x8C30, 0x8C30, 0x09A9, 0x8C31, 0x8C31, 0x0BF6, - 0x8C32, 0x8C33, 0x134E, 0x8C34, 0x8C34, 0x0C31, 0x8C35, 0x8C36, 0x1350, - 0x8C37, 0x8C37, 0x0721, 0x8C38, 0x8C40, 0x4B34, 0x8C41, 0x8C41, 0x0802, - 0x8C42, 0x8C45, 0x4B3D, 0x8C46, 0x8C46, 0x05F8, 0x8C47, 0x8C47, 0x1CF6, - 0x8C48, 0x8C48, 0x20C8, 0x8C49, 0x8C49, 0x1CF7, 0x8C4A, 0x8C4B, 0x4B41, - 0x8C4C, 0x8C4C, 0x0E94, 0x8C4D, 0x8C4F, 0x4B43, 0x8C50, 0x8C50, 0x1EFD, - 0x8C51, 0x8C54, 0x4B46, 0x8C55, 0x8C55, 0x1D15, 0x8C56, 0x8C59, 0x4B4A, - 0x8C5A, 0x8C5A, 0x1990, 0x8C5B, 0x8C60, 0x4B4E, 0x8C61, 0x8C61, 0x0F60, - 0x8C62, 0x8C62, 0x07D4, 0x8C63, 0x8C69, 0x4B54, 0x8C6A, 0x8C6A, 0x0777, - 0x8C6B, 0x8C6B, 0x10E8, 0x8C6C, 0x8C72, 0x4B5B, 0x8C73, 0x8C73, 0x15DD, - 0x8C74, 0x8C77, 0x4B62, 0x8C78, 0x8C78, 0x1D50, 0x8C79, 0x8C79, 0x0413, - 0x8C7A, 0x8C7A, 0x04B9, 0x8C7B, 0x8C81, 0x4B66, 0x8C82, 0x8C82, 0x1D51, - 0x8C83, 0x8C84, 0x4B6D, 0x8C85, 0x8C85, 0x1D53, 0x8C86, 0x8C88, 0x4B6F, - 0x8C89, 0x8C89, 0x0788, 0x8C8A, 0x8C8A, 0x1D52, 0x8C8B, 0x8C8B, 0x4B72, - 0x8C8C, 0x8C8C, 0x0AB7, 0x8C8D, 0x8C93, 0x4B73, 0x8C94, 0x8C94, 0x1D55, - 0x8C95, 0x8C97, 0x4B7A, 0x8C98, 0x8C98, 0x1D54, 0x8C99, 0x8C9C, 0x4B7D, - 0x8C9D, 0x8C9D, 0x1E3B, 0x8C9E, 0x8C9E, 0x227F, 0x8C9F, 0x8C9F, 0x4B81, - 0x8CA0, 0x8CA0, 0x1F0C, 0x8CA1, 0x8CA1, 0x1E59, 0x8CA2, 0x8CA2, 0x1F24, - 0x8CA3, 0x8CA6, 0x4B82, 0x8CA7, 0x8CA7, 0x20BA, 0x8CA8, 0x8CA8, 0x1F65, - 0x8CA9, 0x8CA9, 0x1EF0, 0x8CAA, 0x8CAA, 0x2164, 0x8CAB, 0x8CAB, 0x1F30, - 0x8CAC, 0x8CAC, 0x2261, 0x8CAD, 0x8CAE, 0x4B86, 0x8CAF, 0x8CAF, 0x22A2, - 0x8CB0, 0x8CB0, 0x24AB, 0x8CB1, 0x8CB1, 0x4B88, 0x8CB2, 0x8CB2, 0x24AF, - 0x8CB3, 0x8CB3, 0x1EE8, 0x8CB4, 0x8CB4, 0x1F39, 0x8CB5, 0x8CB5, 0x4B89, - 0x8CB6, 0x8CB6, 0x1E48, 0x8CB7, 0x8CB7, 0x2070, 0x8CB8, 0x8CB8, 0x1EA8, - 0x8CB9, 0x8CB9, 0x4B8A, 0x8CBA, 0x8CBA, 0x24AC, 0x8CBB, 0x8CBB, 0x1EF7, - 0x8CBC, 0x8CBC, 0x2176, 0x8CBD, 0x8CBD, 0x24AD, 0x8CBE, 0x8CBE, 0x4B8B, - 0x8CBF, 0x8CBF, 0x207B, 0x8CC0, 0x8CC0, 0x1F45, 0x8CC1, 0x8CC1, 0x24AA, - 0x8CC2, 0x8CC2, 0x204B, 0x8CC3, 0x8CC3, 0x202F, 0x8CC4, 0x8CC4, 0x1F5A, - 0x8CC5, 0x8CC5, 0x24B0, 0x8CC6, 0x8CC6, 0x4B8C, 0x8CC7, 0x8CC7, 0x22B7, - 0x8CC8, 0x8CC8, 0x1F7F, 0x8CC9, 0x8CC9, 0x4B8D, 0x8CCA, 0x8CCA, 0x2265, - 0x8CCB, 0x8CD0, 0x4B8E, 0x8CD1, 0x8CD1, 0x24B2, 0x8CD2, 0x8CD2, 0x211B, - 0x8CD3, 0x8CD3, 0x1E51, 0x8CD4, 0x8CD4, 0x4B94, 0x8CD5, 0x8CD5, 0x24B4, - 0x8CD6, 0x8CD9, 0x4B95, 0x8CDA, 0x8CDA, 0x24B3, 0x8CDB, 0x8CDB, 0x4B99, - 0x8CDC, 0x8CDC, 0x1E9F, 0x8CDD, 0x8CDD, 0x4B9A, 0x8CDE, 0x8CDE, 0x2118, - 0x8CDF, 0x8CDF, 0x4B9B, 0x8CE0, 0x8CE0, 0x20B4, 0x8CE1, 0x8CE1, 0x23AF, - 0x8CE2, 0x8CE2, 0x21BB, 0x8CE3, 0x8CE3, 0x2072, 0x8CE4, 0x8CE4, 0x1F95, - 0x8CE5, 0x8CE5, 0x4B9C, 0x8CE6, 0x8CE6, 0x1F0A, 0x8CE7, 0x8CE7, 0x24B6, - 0x8CE8, 0x8CE9, 0x4B9D, 0x8CEA, 0x8CEA, 0x2291, 0x8CEB, 0x8CEB, 0x24B5, - 0x8CEC, 0x8CEC, 0x2278, 0x8CED, 0x8CED, 0x1ED4, 0x8CEE, 0x8CF3, 0x4B9F, - 0x8CF4, 0x8CF4, 0x1FF3, 0x8CF5, 0x8CF9, 0x4BA5, 0x8CFA, 0x8CFA, 0x22A9, - 0x8CFB, 0x8CFB, 0x24B7, 0x8CFC, 0x8CFC, 0x1F28, 0x8CFD, 0x8CFD, 0x2109, - 0x8CFE, 0x8CFE, 0x22C7, 0x8CFF, 0x8CFF, 0x4BAA, 0x8D00, 0x8D03, 0x4BAB, - 0x8D04, 0x8D04, 0x24AE, 0x8D05, 0x8D05, 0x22B1, 0x8D06, 0x8D07, 0x4BAF, - 0x8D08, 0x8D08, 0x2266, 0x8D09, 0x8D09, 0x4BB1, 0x8D0A, 0x8D0A, 0x225B, - 0x8D0B, 0x8D0B, 0x22C4, 0x8D0C, 0x8D0C, 0x4BB2, 0x8D0D, 0x8D0D, 0x2115, - 0x8D0E, 0x8D0E, 0x4BB3, 0x8D0F, 0x8D0F, 0x222A, 0x8D10, 0x8D10, 0x24B1, - 0x8D11, 0x8D15, 0x4BB4, 0x8D16, 0x8D16, 0x213D, 0x8D17, 0x8D1A, 0x4BB9, - 0x8D1B, 0x8D1B, 0x1F15, 0x8D1C, 0x8D1C, 0x225C, 0x8D1D, 0x8D1D, 0x041D, - 0x8D1E, 0x8D1E, 0x118B, 0x8D1F, 0x8D1F, 0x06B5, 0x8D20, 0x8D20, 0x4BBD, - 0x8D21, 0x8D21, 0x070A, 0x8D22, 0x8D22, 0x048D, 0x8D23, 0x8D23, 0x1133, - 0x8D24, 0x8D24, 0x0F3A, 0x8D25, 0x8D25, 0x03E7, 0x8D26, 0x8D26, 0x116C, - 0x8D27, 0x8D27, 0x080A, 0x8D28, 0x8D28, 0x11C9, 0x8D29, 0x8D29, 0x0654, - 0x8D2A, 0x8D2A, 0x0E03, 0x8D2B, 0x8D2B, 0x0BD5, 0x8D2C, 0x8D2C, 0x044A, - 0x8D2D, 0x8D2D, 0x0713, 0x8D2E, 0x8D2E, 0x11FB, 0x8D2F, 0x8D2F, 0x073A, - 0x8D30, 0x8D30, 0x063E, 0x8D31, 0x8D31, 0x086D, 0x8D32, 0x8D33, 0x192C, - 0x8D34, 0x8D34, 0x0E4C, 0x8D35, 0x8D35, 0x074C, 0x8D36, 0x8D36, 0x192E, - 0x8D37, 0x8D37, 0x057E, 0x8D38, 0x8D38, 0x0AB8, 0x8D39, 0x8D39, 0x066E, - 0x8D3A, 0x8D3A, 0x078F, 0x8D3B, 0x8D3B, 0x192F, 0x8D3C, 0x8D3C, 0x1137, - 0x8D3D, 0x8D3D, 0x1930, 0x8D3E, 0x8D3E, 0x0849, 0x8D3F, 0x8D3F, 0x07F4, - 0x8D40, 0x8D40, 0x1931, 0x8D41, 0x8D41, 0x0A27, 0x8D42, 0x8D42, 0x0A5F, - 0x8D43, 0x8D43, 0x1122, 0x8D44, 0x8D44, 0x1227, 0x8D45, 0x8D46, 0x1932, - 0x8D47, 0x8D47, 0x1936, 0x8D48, 0x8D49, 0x1934, 0x8D4A, 0x8D4A, 0x0D17, - 0x8D4B, 0x8D4B, 0x06AE, 0x8D4C, 0x8D4C, 0x0603, 0x8D4D, 0x8D4D, 0x1937, - 0x8D4E, 0x8D4E, 0x0D81, 0x8D4F, 0x8D4F, 0x0D06, 0x8D50, 0x8D50, 0x0550, - 0x8D51, 0x8D52, 0x4BBE, 0x8D53, 0x8D53, 0x163B, 0x8D54, 0x8D54, 0x0BA3, - 0x8D55, 0x8D55, 0x1938, 0x8D56, 0x8D56, 0x09A0, 0x8D57, 0x8D57, 0x4BC0, - 0x8D58, 0x8D58, 0x1215, 0x8D59, 0x8D59, 0x1939, 0x8D5A, 0x8D5A, 0x1209, - 0x8D5B, 0x8D5B, 0x0CD7, 0x8D5C, 0x8D5C, 0x1289, 0x8D5D, 0x8D5D, 0x1283, - 0x8D5E, 0x8D5E, 0x1121, 0x8D5F, 0x8D5F, 0x4BC1, 0x8D60, 0x8D60, 0x113C, - 0x8D61, 0x8D61, 0x0CFD, 0x8D62, 0x8D62, 0x1093, 0x8D63, 0x8D63, 0x06CE, - 0x8D64, 0x8D64, 0x0505, 0x8D65, 0x8D65, 0x4BC2, 0x8D66, 0x8D66, 0x0D1B, - 0x8D67, 0x8D67, 0x1CF4, 0x8D68, 0x8D6A, 0x4BC3, 0x8D6B, 0x8D6B, 0x078C, - 0x8D6C, 0x8D6C, 0x4BC6, 0x8D6D, 0x8D6D, 0x1CF5, 0x8D6E, 0x8D6F, 0x4BC7, - 0x8D70, 0x8D70, 0x123C, 0x8D71, 0x8D72, 0x4BC9, 0x8D73, 0x8D73, 0x1CEF, - 0x8D74, 0x8D74, 0x06AB, 0x8D75, 0x8D75, 0x1175, 0x8D76, 0x8D76, 0x06CA, - 0x8D77, 0x8D77, 0x0C0F, 0x8D78, 0x8D80, 0x4BCB, 0x8D81, 0x8D81, 0x04E8, - 0x8D82, 0x8D83, 0x4BD4, 0x8D84, 0x8D84, 0x1CF0, 0x8D85, 0x8D85, 0x04D1, - 0x8D86, 0x8D89, 0x4BD6, 0x8D8A, 0x8D8A, 0x1100, 0x8D8B, 0x8D8B, 0x0C74, - 0x8D8C, 0x8D90, 0x4BDA, 0x8D91, 0x8D91, 0x1CF2, 0x8D92, 0x8D93, 0x4BDF, - 0x8D94, 0x8D94, 0x1CF1, 0x8D95, 0x8D95, 0x1F14, 0x8D96, 0x8D98, 0x4BE1, - 0x8D99, 0x8D99, 0x227A, 0x8D9A, 0x8D9E, 0x4BE4, 0x8D9F, 0x8D9F, 0x0E1E, - 0x8DA0, 0x8DA2, 0x4BE9, 0x8DA3, 0x8DA3, 0x0C7F, 0x8DA4, 0x8DA7, 0x4BEC, - 0x8DA8, 0x8DA8, 0x20EE, 0x8DA9, 0x8DB0, 0x4BF0, 0x8DB1, 0x8DB1, 0x1CF3, - 0x8DB2, 0x8DB2, 0x25F8, 0x8DB3, 0x8DB3, 0x1240, 0x8DB4, 0x8DB4, 0x0B80, - 0x8DB5, 0x8DB5, 0x1D1C, 0x8DB6, 0x8DB7, 0x4BF8, 0x8DB8, 0x8DB8, 0x1D17, - 0x8DB9, 0x8DB9, 0x4BFA, 0x8DBA, 0x8DBA, 0x1D1F, 0x8DBB, 0x8DBB, 0x4BFB, - 0x8DBC, 0x8DBC, 0x1D1E, 0x8DBD, 0x8DBD, 0x4BFC, 0x8DBE, 0x8DBE, 0x11B9, - 0x8DBF, 0x8DBF, 0x1D1D, 0x8DC0, 0x8DC2, 0x4BFD, 0x8DC3, 0x8DC3, 0x1101, - 0x8DC4, 0x8DC4, 0x1D20, 0x8DC5, 0x8DC5, 0x4C00, 0x8DC6, 0x8DC6, 0x1D28, - 0x8DC7, 0x8DCA, 0x4C01, 0x8DCB, 0x8DCB, 0x03DA, 0x8DCC, 0x8DCC, 0x05D9, - 0x8DCD, 0x8DCD, 0x4C05, 0x8DCE, 0x8DCF, 0x1D25, 0x8DD0, 0x8DD0, 0x4C06, - 0x8DD1, 0x8DD1, 0x0B9D, 0x8DD2, 0x8DD5, 0x4C07, 0x8DD6, 0x8DD7, 0x1D21, - 0x8DD8, 0x8DD9, 0x4C0B, 0x8DDA, 0x8DDA, 0x1D23, 0x8DDB, 0x8DDB, 0x1D27, - 0x8DDC, 0x8DDC, 0x4C0D, 0x8DDD, 0x8DDD, 0x090F, 0x8DDE, 0x8DDE, 0x1D24, - 0x8DDF, 0x8DDF, 0x06F5, 0x8DE0, 0x8DE2, 0x4C0E, 0x8DE3, 0x8DE3, 0x1D2C, - 0x8DE4, 0x8DE4, 0x1D2F, 0x8DE5, 0x8DE7, 0x4C11, 0x8DE8, 0x8DE8, 0x0974, - 0x8DE9, 0x8DE9, 0x4C14, 0x8DEA, 0x8DEA, 0x074B, 0x8DEB, 0x8DEB, 0x1D18, - 0x8DEC, 0x8DEC, 0x1D29, 0x8DED, 0x8DEE, 0x4C15, 0x8DEF, 0x8DEF, 0x0A5E, - 0x8DF0, 0x8DF2, 0x4C17, 0x8DF3, 0x8DF3, 0x0E4B, 0x8DF4, 0x8DF4, 0x4C1A, - 0x8DF5, 0x8DF5, 0x086C, 0x8DF6, 0x8DF6, 0x4C1B, 0x8DF7, 0x8DF8, 0x1D2A, - 0x8DF9, 0x8DF9, 0x1D2D, 0x8DFA, 0x8DFA, 0x0624, 0x8DFB, 0x8DFB, 0x1D2E, - 0x8DFC, 0x8DFC, 0x4C1C, 0x8DFD, 0x8DFD, 0x1D31, 0x8DFE, 0x8DFF, 0x4C1D, - 0x8E00, 0x8E04, 0x4C1F, 0x8E05, 0x8E05, 0x1D19, 0x8E06, 0x8E08, 0x4C24, - 0x8E09, 0x8E09, 0x1D30, 0x8E0A, 0x8E0A, 0x10A0, 0x8E0B, 0x8E0B, 0x4C27, - 0x8E0C, 0x8E0C, 0x0511, 0x8E0D, 0x8E0E, 0x4C28, 0x8E0F, 0x8E0F, 0x0DF7, - 0x8E10, 0x8E10, 0x1F94, 0x8E11, 0x8E13, 0x4C2A, 0x8E14, 0x8E14, 0x1D32, - 0x8E15, 0x8E1C, 0x4C2D, 0x8E1D, 0x8E1D, 0x1D33, 0x8E1E, 0x8E1E, 0x0910, - 0x8E1F, 0x8E1F, 0x1D34, 0x8E20, 0x8E21, 0x4C35, 0x8E22, 0x8E22, 0x0E32, - 0x8E23, 0x8E23, 0x1D37, 0x8E24, 0x8E28, 0x4C37, 0x8E29, 0x8E29, 0x048F, - 0x8E2A, 0x8E2A, 0x1236, 0x8E2B, 0x8E2B, 0x4C3C, 0x8E2C, 0x8E2C, 0x1D35, - 0x8E2D, 0x8E2D, 0x4C3D, 0x8E2E, 0x8E2E, 0x1D36, 0x8E2F, 0x8E2F, 0x1D38, - 0x8E30, 0x8E30, 0x4C3E, 0x8E31, 0x8E31, 0x1D3E, 0x8E32, 0x8E33, 0x4C3F, - 0x8E34, 0x8E34, 0x2230, 0x8E35, 0x8E35, 0x1D3C, 0x8E36, 0x8E38, 0x4C41, - 0x8E39, 0x8E39, 0x1D3B, 0x8E3A, 0x8E3A, 0x1D39, 0x8E3B, 0x8E3C, 0x4C44, - 0x8E3D, 0x8E3D, 0x1D3D, 0x8E3E, 0x8E3F, 0x4C46, 0x8E40, 0x8E40, 0x1D3A, - 0x8E41, 0x8E42, 0x1D40, 0x8E43, 0x8E43, 0x4C48, 0x8E44, 0x8E44, 0x0E36, - 0x8E45, 0x8E46, 0x4C49, 0x8E47, 0x8E47, 0x173B, 0x8E48, 0x8E48, 0x0599, - 0x8E49, 0x8E49, 0x1D3F, 0x8E4A, 0x8E4A, 0x1D44, 0x8E4B, 0x8E4B, 0x0DF6, - 0x8E4C, 0x8E4C, 0x25FD, 0x8E4D, 0x8E50, 0x4C4B, 0x8E51, 0x8E52, 0x1D42, - 0x8E53, 0x8E54, 0x4C4F, 0x8E55, 0x8E55, 0x2600, 0x8E56, 0x8E58, 0x4C51, - 0x8E59, 0x8E59, 0x1D1A, 0x8E5A, 0x8E62, 0x4C54, 0x8E63, 0x8E63, 0x2606, - 0x8E64, 0x8E65, 0x4C5D, 0x8E66, 0x8E66, 0x042D, 0x8E67, 0x8E68, 0x4C5F, - 0x8E69, 0x8E69, 0x1D1B, 0x8E6A, 0x8E6B, 0x4C61, 0x8E6C, 0x8E6C, 0x05A6, - 0x8E6D, 0x8E6D, 0x04AB, 0x8E6E, 0x8E6E, 0x4C63, 0x8E6F, 0x8E6F, 0x1D48, - 0x8E70, 0x8E70, 0x1D45, 0x8E71, 0x8E71, 0x4C64, 0x8E72, 0x8E72, 0x0616, - 0x8E73, 0x8E73, 0x4C65, 0x8E74, 0x8E74, 0x1D49, 0x8E75, 0x8E75, 0x4C66, - 0x8E76, 0x8E76, 0x1D46, 0x8E77, 0x8E79, 0x4C67, 0x8E7A, 0x8E7A, 0x25FF, - 0x8E7B, 0x8E7B, 0x4C6A, 0x8E7C, 0x8E7C, 0x1D47, 0x8E7D, 0x8E7E, 0x4C6B, - 0x8E7F, 0x8E7F, 0x055D, 0x8E80, 0x8E80, 0x4C6D, 0x8E81, 0x8E81, 0x112D, - 0x8E82, 0x8E84, 0x4C6E, 0x8E85, 0x8E85, 0x1D4A, 0x8E86, 0x8E86, 0x4C71, - 0x8E87, 0x8E87, 0x051E, 0x8E88, 0x8E88, 0x4C72, 0x8E89, 0x8E89, 0x25FC, - 0x8E8A, 0x8E8A, 0x1E8C, 0x8E8B, 0x8E8B, 0x2602, 0x8E8C, 0x8E8C, 0x4C73, - 0x8E8D, 0x8E8D, 0x224D, 0x8E8E, 0x8E8E, 0x4C74, 0x8E8F, 0x8E8F, 0x1D4B, - 0x8E90, 0x8E90, 0x1D4D, 0x8E91, 0x8E91, 0x2604, 0x8E92, 0x8E92, 0x25FE, - 0x8E93, 0x8E93, 0x2603, 0x8E94, 0x8E94, 0x1D4C, 0x8E95, 0x8E99, 0x4C75, - 0x8E9A, 0x8E9A, 0x2601, 0x8E9B, 0x8E9B, 0x4C7A, 0x8E9C, 0x8E9C, 0x1D4E, - 0x8E9D, 0x8E9D, 0x4C7B, 0x8E9E, 0x8E9E, 0x1D4F, 0x8E9F, 0x8EA0, 0x4C7C, - 0x8EA1, 0x8EA1, 0x2605, 0x8EA2, 0x8EA4, 0x4C7E, 0x8EA5, 0x8EA5, 0x1EA3, - 0x8EA6, 0x8EA6, 0x2608, 0x8EA7, 0x8EA9, 0x4C81, 0x8EAA, 0x8EAA, 0x2607, - 0x8EAB, 0x8EAB, 0x0D26, 0x8EAC, 0x8EAC, 0x0703, 0x8EAD, 0x8EAE, 0x4C84, - 0x8EAF, 0x8EAF, 0x0C78, 0x8EB0, 0x8EB1, 0x4C86, 0x8EB2, 0x8EB2, 0x0622, - 0x8EB3, 0x8EB9, 0x4C88, 0x8EBA, 0x8EBA, 0x0E1C, 0x8EBB, 0x8EBF, 0x4C8F, - 0x8EC0, 0x8EC0, 0x20F0, 0x8EC1, 0x8EC9, 0x4C94, 0x8ECA, 0x8ECA, 0x1E7B, - 0x8ECB, 0x8ECB, 0x2267, 0x8ECC, 0x8ECC, 0x1F36, 0x8ECD, 0x8ECD, 0x1FD6, - 0x8ECE, 0x8ECE, 0x18F8, 0x8ECF, 0x8ED1, 0x4C9D, 0x8ED2, 0x8ED2, 0x21E0, - 0x8ED3, 0x8ED3, 0x4CA0, 0x8ED4, 0x8ED4, 0x248C, 0x8ED5, 0x8EDA, 0x4CA1, - 0x8EDB, 0x8EDB, 0x248D, 0x8EDC, 0x8EDE, 0x4CA7, 0x8EDF, 0x8EDF, 0x2102, - 0x8EE0, 0x8EE3, 0x4CAA, 0x8EE4, 0x8EE4, 0x2494, 0x8EE5, 0x8EEA, 0x4CAE, - 0x8EEB, 0x8EEB, 0x2493, 0x8EEC, 0x8EF1, 0x4CB4, 0x8EF2, 0x8EF2, 0x248E, - 0x8EF3, 0x8EF7, 0x4CBA, 0x8EF8, 0x8EF8, 0x2299, 0x8EF9, 0x8EF9, 0x2491, - 0x8EFA, 0x8EFA, 0x2496, 0x8EFB, 0x8EFB, 0x248F, 0x8EFC, 0x8EFC, 0x2492, - 0x8EFD, 0x8EFD, 0x4CBF, 0x8EFE, 0x8EFE, 0x2497, 0x8EFF, 0x8EFF, 0x4CC0, - 0x8F00, 0x8F02, 0x4CC1, 0x8F03, 0x8F03, 0x1FB1, 0x8F04, 0x8F04, 0x4CC4, - 0x8F05, 0x8F05, 0x249A, 0x8F06, 0x8F06, 0x4CC5, 0x8F07, 0x8F07, 0x2499, - 0x8F08, 0x8F08, 0x4CC6, 0x8F09, 0x8F09, 0x2258, 0x8F0A, 0x8F0A, 0x2498, - 0x8F0B, 0x8F11, 0x4CC7, 0x8F12, 0x8F12, 0x249B, 0x8F13, 0x8F13, 0x4CCE, - 0x8F14, 0x8F14, 0x1F09, 0x8F15, 0x8F15, 0x20E6, 0x8F16, 0x8F1A, 0x4CCF, - 0x8F1B, 0x8F1B, 0x2026, 0x8F1C, 0x8F1C, 0x249F, 0x8F1D, 0x8F1D, 0x1F59, - 0x8F1E, 0x8F1F, 0x249D, 0x8F20, 0x8F24, 0x4CD4, 0x8F25, 0x8F25, 0x1F3B, - 0x8F26, 0x8F26, 0x249C, 0x8F27, 0x8F28, 0x4CD9, 0x8F29, 0x8F29, 0x1E3A, - 0x8F2A, 0x8F2A, 0x205B, 0x8F2B, 0x8F2E, 0x4CDB, 0x8F2F, 0x8F2F, 0x1F70, - 0x8F30, 0x8F32, 0x4CDF, 0x8F33, 0x8F33, 0x24A0, 0x8F34, 0x8F37, 0x4CE2, - 0x8F38, 0x8F38, 0x213B, 0x8F39, 0x8F3A, 0x4CE6, 0x8F3B, 0x8F3B, 0x1F07, - 0x8F3C, 0x8F3D, 0x4CE8, 0x8F3E, 0x8F3E, 0x2270, 0x8F3F, 0x8F3F, 0x2237, - 0x8F40, 0x8F41, 0x4CEA, 0x8F42, 0x8F42, 0x24D2, 0x8F43, 0x8F43, 0x4CEC, - 0x8F44, 0x8F44, 0x21B3, 0x8F45, 0x8F45, 0x2245, 0x8F46, 0x8F46, 0x24A1, - 0x8F47, 0x8F48, 0x4CED, 0x8F49, 0x8F49, 0x22A8, 0x8F4A, 0x8F4C, 0x4CEF, - 0x8F4D, 0x8F4D, 0x227C, 0x8F4E, 0x8F4E, 0x1FB0, 0x8F4F, 0x8F53, 0x4CF2, - 0x8F54, 0x8F54, 0x24A2, 0x8F55, 0x8F5E, 0x4CF7, 0x8F5F, 0x8F5F, 0x1F46, - 0x8F60, 0x8F60, 0x4D01, 0x8F61, 0x8F61, 0x2380, 0x8F62, 0x8F62, 0x2495, - 0x8F63, 0x8F63, 0x4D02, 0x8F64, 0x8F64, 0x2490, 0x8F65, 0x8F65, 0x4D03, - 0x8F66, 0x8F66, 0x04DA, 0x8F67, 0x8F67, 0x1141, 0x8F68, 0x8F68, 0x0745, - 0x8F69, 0x8F69, 0x0FC4, 0x8F6A, 0x8F6A, 0x4D04, 0x8F6B, 0x8F6B, 0x18E1, - 0x8F6C, 0x8F6C, 0x1207, 0x8F6D, 0x8F6D, 0x18E2, 0x8F6E, 0x8F6E, 0x0A7D, - 0x8F6F, 0x8F6F, 0x0CC8, 0x8F70, 0x8F70, 0x079B, 0x8F71, 0x8F73, 0x18E3, - 0x8F74, 0x8F74, 0x11E0, 0x8F75, 0x8F76, 0x18E6, 0x8F77, 0x8F77, 0x18E9, - 0x8F78, 0x8F78, 0x18E8, 0x8F79, 0x8F7A, 0x18EA, 0x8F7B, 0x8F7B, 0x0C5E, - 0x8F7C, 0x8F7C, 0x18EC, 0x8F7D, 0x8F7D, 0x111B, 0x8F7E, 0x8F7E, 0x18ED, - 0x8F7F, 0x8F7F, 0x089F, 0x8F80, 0x8F80, 0x4D05, 0x8F81, 0x8F82, 0x18EE, - 0x8F83, 0x8F83, 0x08A0, 0x8F84, 0x8F84, 0x18F0, 0x8F85, 0x8F85, 0x06A3, - 0x8F86, 0x8F86, 0x0A07, 0x8F87, 0x8F87, 0x18F1, 0x8F88, 0x8F88, 0x041B, - 0x8F89, 0x8F89, 0x07E9, 0x8F8A, 0x8F8A, 0x074E, 0x8F8B, 0x8F8B, 0x18F2, - 0x8F8C, 0x8F8C, 0x4D06, 0x8F8D, 0x8F8F, 0x18F3, 0x8F90, 0x8F90, 0x0695, - 0x8F91, 0x8F91, 0x0820, 0x8F92, 0x8F92, 0x4D07, 0x8F93, 0x8F93, 0x0D7B, - 0x8F94, 0x8F94, 0x1574, 0x8F95, 0x8F95, 0x10F2, 0x8F96, 0x8F96, 0x0F2A, - 0x8F97, 0x8F97, 0x1158, 0x8F98, 0x8F98, 0x18F6, 0x8F99, 0x8F99, 0x117F, - 0x8F9A, 0x8F9A, 0x18F7, 0x8F9B, 0x8F9B, 0x0F8C, 0x8F9C, 0x8F9C, 0x0715, - 0x8F9D, 0x8F9D, 0x4D08, 0x8F9E, 0x8F9E, 0x054A, 0x8F9F, 0x8F9F, 0x0442, - 0x8FA0, 0x8FA2, 0x4D09, 0x8FA3, 0x8FA3, 0x099C, 0x8FA4, 0x8FA5, 0x4D0C, - 0x8FA6, 0x8FA6, 0x1E30, 0x8FA7, 0x8FA7, 0x4D0E, 0x8FA8, 0x8FA9, 0x044F, - 0x8FAA, 0x8FAA, 0x4D0F, 0x8FAB, 0x8FAB, 0x0451, 0x8FAC, 0x8FAC, 0x4D10, - 0x8FAD, 0x8FAD, 0x1E9D, 0x8FAE, 0x8FAE, 0x1E4B, 0x8FAF, 0x8FAF, 0x1E4A, - 0x8FB0, 0x8FB0, 0x04E2, 0x8FB1, 0x8FB1, 0x0CC3, 0x8FB2, 0x8FB2, 0x20AA, - 0x8FB3, 0x8FB5, 0x4D11, 0x8FB6, 0x8FB6, 0x173D, 0x8FB7, 0x8FB8, 0x4D14, - 0x8FB9, 0x8FB9, 0x0448, 0x8FBA, 0x8FBC, 0x4D16, 0x8FBD, 0x8FBD, 0x0A12, - 0x8FBE, 0x8FBE, 0x0572, 0x8FBF, 0x8FC0, 0x4D19, 0x8FC1, 0x8FC1, 0x0C25, - 0x8FC2, 0x8FC2, 0x10BD, 0x8FC3, 0x8FC3, 0x4D1B, 0x8FC4, 0x8FC4, 0x0C18, - 0x8FC5, 0x8FC5, 0x0FE1, 0x8FC6, 0x8FC6, 0x4D1C, 0x8FC7, 0x8FC7, 0x0756, - 0x8FC8, 0x8FC8, 0x0A9C, 0x8FC9, 0x8FCD, 0x4D1D, 0x8FCE, 0x8FCE, 0x1092, - 0x8FCF, 0x8FCF, 0x4D22, 0x8FD0, 0x8FD0, 0x110E, 0x8FD1, 0x8FD1, 0x08CD, - 0x8FD2, 0x8FD2, 0x4D23, 0x8FD3, 0x8FD3, 0x173E, 0x8FD4, 0x8FD4, 0x0652, - 0x8FD5, 0x8FD5, 0x173F, 0x8FD6, 0x8FD7, 0x4D24, 0x8FD8, 0x8FD8, 0x07CE, - 0x8FD9, 0x8FD9, 0x1183, 0x8FDA, 0x8FDA, 0x4D26, 0x8FDB, 0x8FDB, 0x08C9, - 0x8FDC, 0x8FDC, 0x10F9, 0x8FDD, 0x8FDD, 0x0EB4, 0x8FDE, 0x8FDE, 0x09F5, - 0x8FDF, 0x8FDF, 0x04FE, 0x8FE0, 0x8FE1, 0x4D27, 0x8FE2, 0x8FE2, 0x0E49, - 0x8FE3, 0x8FE3, 0x4D29, 0x8FE4, 0x8FE4, 0x1742, 0x8FE5, 0x8FE5, 0x1740, - 0x8FE6, 0x8FE6, 0x1744, 0x8FE7, 0x8FE7, 0x4D2A, 0x8FE8, 0x8FE8, 0x1746, - 0x8FE9, 0x8FE9, 0x1743, 0x8FEA, 0x8FEA, 0x05B0, 0x8FEB, 0x8FEB, 0x0BE7, - 0x8FEC, 0x8FEC, 0x4D2B, 0x8FED, 0x8FED, 0x05DD, 0x8FEE, 0x8FEE, 0x1741, - 0x8FEF, 0x8FEF, 0x4D2C, 0x8FF0, 0x8FF0, 0x0D8D, 0x8FF1, 0x8FF2, 0x4D2D, - 0x8FF3, 0x8FF3, 0x1745, 0x8FF4, 0x8FF4, 0x267B, 0x8FF5, 0x8FF6, 0x4D2F, - 0x8FF7, 0x8FF7, 0x0AD9, 0x8FF8, 0x8FF8, 0x042E, 0x8FF9, 0x8FF9, 0x0816, - 0x8FFA, 0x8FFC, 0x4D31, 0x8FFD, 0x8FFD, 0x1214, 0x8FFE, 0x8FFF, 0x4D34, - 0x9000, 0x9000, 0x0E7C, 0x9001, 0x9001, 0x0DC2, 0x9002, 0x9002, 0x0D61, - 0x9003, 0x9003, 0x0E26, 0x9004, 0x9004, 0x1748, 0x9005, 0x9005, 0x1747, - 0x9006, 0x9006, 0x0B49, 0x9007, 0x9008, 0x4D36, 0x9009, 0x9009, 0x0FCA, - 0x900A, 0x900A, 0x0FE0, 0x900B, 0x900B, 0x1749, 0x900C, 0x900C, 0x4D38, - 0x900D, 0x900D, 0x174C, 0x900E, 0x900E, 0x4D39, 0x900F, 0x900F, 0x0E69, - 0x9010, 0x9010, 0x11EF, 0x9011, 0x9011, 0x174B, 0x9012, 0x9012, 0x05BE, - 0x9013, 0x9013, 0x4D3A, 0x9014, 0x9014, 0x0E6F, 0x9015, 0x9015, 0x23F2, - 0x9016, 0x9016, 0x174D, 0x9017, 0x9017, 0x05F9, 0x9018, 0x9018, 0x4D3B, - 0x9019, 0x9019, 0x227E, 0x901A, 0x901A, 0x0E59, 0x901B, 0x901B, 0x073D, - 0x901C, 0x901C, 0x4D3C, 0x901D, 0x901D, 0x0D5C, 0x901E, 0x901E, 0x04F6, - 0x901F, 0x901F, 0x0DCE, 0x9020, 0x9020, 0x112F, 0x9021, 0x9021, 0x174E, - 0x9022, 0x9022, 0x0687, 0x9023, 0x9023, 0x2019, 0x9024, 0x9025, 0x4D3D, - 0x9026, 0x9026, 0x174A, 0x9027, 0x902C, 0x4D3F, 0x902D, 0x902D, 0x1751, - 0x902E, 0x902E, 0x0581, 0x902F, 0x902F, 0x1752, 0x9030, 0x9031, 0x4D45, - 0x9032, 0x9032, 0x1FBB, 0x9033, 0x9034, 0x4D47, 0x9035, 0x9036, 0x174F, - 0x9037, 0x9037, 0x4D49, 0x9038, 0x9038, 0x1064, 0x9039, 0x903A, 0x4D4A, - 0x903B, 0x903B, 0x0A86, 0x903C, 0x903C, 0x042F, 0x903D, 0x903D, 0x4D4C, - 0x903E, 0x903E, 0x10C7, 0x903F, 0x9040, 0x4D4D, 0x9041, 0x9041, 0x061C, - 0x9042, 0x9042, 0x0DE1, 0x9043, 0x9043, 0x4D4F, 0x9044, 0x9044, 0x1753, - 0x9045, 0x9046, 0x4D50, 0x9047, 0x9047, 0x10DB, 0x9048, 0x904A, 0x4D52, - 0x904B, 0x904B, 0x2253, 0x904C, 0x904C, 0x4D55, 0x904D, 0x904D, 0x0452, - 0x904E, 0x904E, 0x1F3E, 0x904F, 0x904F, 0x0633, 0x9050, 0x9050, 0x1756, - 0x9051, 0x9052, 0x1754, 0x9053, 0x9053, 0x05A1, 0x9054, 0x9054, 0x1EA6, - 0x9055, 0x9055, 0x218E, 0x9056, 0x9056, 0x4D56, 0x9057, 0x9057, 0x104C, - 0x9058, 0x9058, 0x1758, 0x9059, 0x905A, 0x4D57, 0x905B, 0x905B, 0x175A, - 0x905C, 0x905C, 0x21EC, 0x905D, 0x905D, 0x4D59, 0x905E, 0x905E, 0x1EBE, - 0x905F, 0x905F, 0x4D5A, 0x9060, 0x9060, 0x224A, 0x9061, 0x9061, 0x4D5B, - 0x9062, 0x9062, 0x1759, 0x9063, 0x9063, 0x0C2F, 0x9064, 0x9064, 0x4D5C, - 0x9065, 0x9065, 0x102A, 0x9066, 0x9067, 0x4D5D, 0x9068, 0x9068, 0x1757, - 0x9069, 0x9069, 0x2133, 0x906A, 0x906C, 0x4D5F, 0x906D, 0x906D, 0x1125, - 0x906E, 0x906E, 0x117B, 0x906F, 0x9071, 0x4D62, 0x9072, 0x9072, 0x1E84, - 0x9073, 0x9073, 0x4D65, 0x9074, 0x9074, 0x175C, 0x9075, 0x9075, 0x124E, - 0x9076, 0x9076, 0x4D66, 0x9077, 0x9077, 0x20CF, 0x9078, 0x9078, 0x21E2, - 0x9079, 0x9079, 0x4D67, 0x907A, 0x907A, 0x220F, 0x907B, 0x907B, 0x4D68, - 0x907C, 0x907C, 0x2029, 0x907D, 0x907D, 0x175D, 0x907E, 0x907E, 0x4D69, - 0x907F, 0x907F, 0x0445, 0x9080, 0x9080, 0x1024, 0x9081, 0x9081, 0x2073, - 0x9082, 0x9082, 0x175E, 0x9083, 0x9083, 0x1760, 0x9084, 0x9084, 0x1F55, - 0x9085, 0x9086, 0x4D6A, 0x9087, 0x9087, 0x23F1, 0x9088, 0x9088, 0x175F, - 0x9089, 0x9089, 0x4D6C, 0x908A, 0x908A, 0x1E46, 0x908B, 0x908B, 0x1761, - 0x908C, 0x908E, 0x4D6D, 0x908F, 0x908F, 0x2063, 0x9090, 0x9090, 0x23F3, - 0x9091, 0x9091, 0x105F, 0x9092, 0x9092, 0x4D70, 0x9093, 0x9093, 0x05AC, - 0x9094, 0x9094, 0x4D71, 0x9095, 0x9095, 0x1817, 0x9096, 0x9096, 0x4D72, - 0x9097, 0x9097, 0x1367, 0x9098, 0x9098, 0x4D73, 0x9099, 0x9099, 0x136A, - 0x909A, 0x909A, 0x4D74, 0x909B, 0x909B, 0x1368, 0x909C, 0x909C, 0x4D75, - 0x909D, 0x909D, 0x1369, 0x909E, 0x90A0, 0x4D76, 0x90A1, 0x90A1, 0x136C, - 0x90A2, 0x90A2, 0x0F9A, 0x90A3, 0x90A3, 0x0B2A, 0x90A4, 0x90A5, 0x4D79, - 0x90A6, 0x90A6, 0x03F9, 0x90A7, 0x90A9, 0x4D7B, 0x90AA, 0x90AA, 0x0F7B, - 0x90AB, 0x90AB, 0x4D7E, 0x90AC, 0x90AC, 0x136B, 0x90AD, 0x90AD, 0x4D7F, - 0x90AE, 0x90AE, 0x10AF, 0x90AF, 0x90AF, 0x0761, 0x90B0, 0x90B0, 0x1372, - 0x90B1, 0x90B1, 0x0C6E, 0x90B2, 0x90B2, 0x4D80, 0x90B3, 0x90B3, 0x136E, - 0x90B4, 0x90B4, 0x136D, 0x90B5, 0x90B5, 0x0D14, 0x90B6, 0x90B6, 0x136F, - 0x90B7, 0x90B7, 0x4D81, 0x90B8, 0x90B8, 0x1371, 0x90B9, 0x90B9, 0x123B, - 0x90BA, 0x90BA, 0x1370, 0x90BB, 0x90BB, 0x0A23, 0x90BC, 0x90BD, 0x4D82, - 0x90BE, 0x90BE, 0x1375, 0x90BF, 0x90C0, 0x4D84, 0x90C1, 0x90C1, 0x10D9, - 0x90C2, 0x90C3, 0x4D86, 0x90C4, 0x90C4, 0x1377, 0x90C5, 0x90C5, 0x1374, - 0x90C6, 0x90C6, 0x4D88, 0x90C7, 0x90C7, 0x1378, 0x90C8, 0x90C9, 0x4D89, - 0x90CA, 0x90CA, 0x088D, 0x90CB, 0x90CD, 0x4D8B, 0x90CE, 0x90CE, 0x09B4, - 0x90CF, 0x90CF, 0x1373, 0x90D0, 0x90D0, 0x1376, 0x90D1, 0x90D1, 0x11A2, - 0x90D2, 0x90D2, 0x4D8E, 0x90D3, 0x90D3, 0x1379, 0x90D4, 0x90D6, 0x4D8F, - 0x90D7, 0x90D7, 0x137D, 0x90D8, 0x90DA, 0x4D92, 0x90DB, 0x90DB, 0x137E, - 0x90DC, 0x90DC, 0x137C, 0x90DD, 0x90DD, 0x0779, 0x90DE, 0x90DE, 0x4D95, - 0x90DF, 0x90DF, 0x231E, 0x90E0, 0x90E0, 0x4D96, 0x90E1, 0x90E1, 0x0931, - 0x90E2, 0x90E2, 0x137B, 0x90E3, 0x90E5, 0x4D97, 0x90E6, 0x90E6, 0x137A, - 0x90E7, 0x90E7, 0x110A, 0x90E8, 0x90E8, 0x0486, 0x90E9, 0x90EA, 0x4D9A, - 0x90EB, 0x90EB, 0x137F, 0x90EC, 0x90EC, 0x4D9C, 0x90ED, 0x90ED, 0x0752, - 0x90EE, 0x90EE, 0x4D9D, 0x90EF, 0x90EF, 0x1380, 0x90F0, 0x90F3, 0x4D9E, - 0x90F4, 0x90F4, 0x04E0, 0x90F5, 0x90F5, 0x2233, 0x90F6, 0x90F7, 0x4DA2, - 0x90F8, 0x90F8, 0x0587, 0x90F9, 0x90FC, 0x4DA4, 0x90FD, 0x90FD, 0x05FB, - 0x90FE, 0x90FE, 0x1381, 0x90FF, 0x90FF, 0x4DA8, 0x9100, 0x9101, 0x4DA9, - 0x9102, 0x9102, 0x0634, 0x9103, 0x9103, 0x4DAB, 0x9104, 0x9104, 0x1382, - 0x9105, 0x9105, 0x4DAC, 0x9106, 0x9106, 0x2320, 0x9107, 0x9108, 0x4DAD, - 0x9109, 0x9109, 0x21C7, 0x910A, 0x9111, 0x4DAF, 0x9112, 0x9112, 0x22BC, - 0x9113, 0x9113, 0x4DB7, 0x9114, 0x9114, 0x231C, 0x9115, 0x9115, 0x4DB8, - 0x9116, 0x9116, 0x2251, 0x9117, 0x9118, 0x4DB9, 0x9119, 0x9119, 0x0432, - 0x911A, 0x911D, 0x4DBB, 0x911E, 0x911E, 0x1384, 0x911F, 0x9121, 0x4DBF, - 0x9122, 0x9122, 0x1383, 0x9123, 0x9123, 0x1385, 0x9124, 0x9126, 0x4DC2, - 0x9127, 0x9127, 0x1EBB, 0x9128, 0x912C, 0x4DC5, 0x912D, 0x912D, 0x2287, - 0x912E, 0x912E, 0x4DCA, 0x912F, 0x912F, 0x1387, 0x9130, 0x9130, 0x202D, - 0x9131, 0x9131, 0x1386, 0x9132, 0x9132, 0x1EAB, 0x9133, 0x9133, 0x4DCB, - 0x9134, 0x9134, 0x231D, 0x9135, 0x9135, 0x4DCC, 0x9136, 0x9136, 0x231F, - 0x9137, 0x9138, 0x4DCD, 0x9139, 0x9139, 0x1388, 0x913A, 0x913A, 0x231B, - 0x913B, 0x9142, 0x4DCF, 0x9143, 0x9143, 0x1389, 0x9144, 0x9145, 0x4DD7, - 0x9146, 0x9146, 0x138A, 0x9147, 0x9147, 0x4DD9, 0x9148, 0x9148, 0x2321, - 0x9149, 0x9149, 0x10B4, 0x914A, 0x914A, 0x1CF8, 0x914B, 0x914B, 0x0C72, - 0x914C, 0x914C, 0x1220, 0x914D, 0x914D, 0x0BA5, 0x914E, 0x914F, 0x1CFA, - 0x9150, 0x9150, 0x1CF9, 0x9151, 0x9151, 0x4DDA, 0x9152, 0x9152, 0x08F5, - 0x9153, 0x9156, 0x4DDB, 0x9157, 0x9157, 0x0FBA, 0x9158, 0x9159, 0x4DDF, - 0x915A, 0x915A, 0x0670, 0x915B, 0x915C, 0x4DE1, 0x915D, 0x915D, 0x1110, - 0x915E, 0x915E, 0x0DFD, 0x915F, 0x9160, 0x4DE3, 0x9161, 0x9161, 0x1CFE, - 0x9162, 0x9162, 0x1CFD, 0x9163, 0x9163, 0x075F, 0x9164, 0x9164, 0x1CFC, - 0x9165, 0x9165, 0x0DCB, 0x9166, 0x9168, 0x4DE5, 0x9169, 0x9169, 0x1D00, - 0x916A, 0x916A, 0x09BD, 0x916B, 0x916B, 0x4DE8, 0x916C, 0x916C, 0x050F, - 0x916D, 0x916D, 0x4DE9, 0x916E, 0x916E, 0x0E5B, 0x916F, 0x916F, 0x1D01, - 0x9170, 0x9170, 0x1CFF, 0x9171, 0x9171, 0x0885, 0x9172, 0x9172, 0x1D04, - 0x9173, 0x9173, 0x4DEA, 0x9174, 0x9174, 0x1D05, 0x9175, 0x9175, 0x089E, - 0x9176, 0x9176, 0x0ABD, 0x9177, 0x9177, 0x096E, 0x9178, 0x9178, 0x0DD6, - 0x9179, 0x9179, 0x1D06, 0x917A, 0x917C, 0x4DEB, 0x917D, 0x917E, 0x1D02, - 0x917F, 0x917F, 0x0B53, 0x9180, 0x9184, 0x4DEE, 0x9185, 0x9185, 0x1D08, - 0x9186, 0x9186, 0x4DF3, 0x9187, 0x9187, 0x053F, 0x9188, 0x9188, 0x4DF4, - 0x9189, 0x9189, 0x124A, 0x918A, 0x918A, 0x4DF5, 0x918B, 0x918B, 0x055A, - 0x918C, 0x918C, 0x1D07, 0x918D, 0x918D, 0x1D0A, 0x918E, 0x918F, 0x4DF6, - 0x9190, 0x9190, 0x1D09, 0x9191, 0x9191, 0x1D0B, 0x9192, 0x9192, 0x0F9C, - 0x9193, 0x9195, 0x4DF8, 0x9196, 0x9196, 0x2255, 0x9197, 0x9199, 0x4DFB, - 0x919A, 0x919A, 0x0AD6, 0x919B, 0x919B, 0x0C84, 0x919C, 0x919C, 0x1E8F, - 0x919D, 0x91A1, 0x4DFE, 0x91A2, 0x91A3, 0x1D0C, 0x91A4, 0x91A9, 0x4E03, - 0x91AA, 0x91AA, 0x1D0E, 0x91AB, 0x91AB, 0x220C, 0x91AC, 0x91AC, 0x1FA4, - 0x91AD, 0x91AF, 0x1D0F, 0x91B0, 0x91B3, 0x4E09, 0x91B4, 0x91B4, 0x1D13, - 0x91B5, 0x91B5, 0x1D12, 0x91B6, 0x91B9, 0x4E0D, 0x91BA, 0x91BA, 0x1D14, - 0x91BB, 0x91BF, 0x4E11, 0x91C0, 0x91C0, 0x209B, 0x91C1, 0x91C1, 0x21D8, - 0x91C2, 0x91C2, 0x4E16, 0x91C3, 0x91C3, 0x25FA, 0x91C4, 0x91C4, 0x4E17, - 0x91C5, 0x91C5, 0x25F9, 0x91C6, 0x91C6, 0x4E18, 0x91C7, 0x91C7, 0x0490, - 0x91C8, 0x91C8, 0x4E19, 0x91C9, 0x91C9, 0x10B9, 0x91CA, 0x91CA, 0x0D64, - 0x91CB, 0x91CB, 0x2134, 0x91CC, 0x91CC, 0x09DA, 0x91CD, 0x91CD, 0x11D7, - 0x91CE, 0x91CE, 0x1037, 0x91CF, 0x91CF, 0x0A08, 0x91D0, 0x91D0, 0x4E1A, - 0x91D1, 0x91D1, 0x08C1, 0x91D2, 0x91D4, 0x24F3, 0x91D5, 0x91D5, 0x24F8, - 0x91D6, 0x91D6, 0x4E1B, 0x91D7, 0x91D7, 0x24F7, 0x91D8, 0x91D8, 0x1EC8, - 0x91D9, 0x91D9, 0x24F6, 0x91DA, 0x91DB, 0x4E1C, 0x91DC, 0x91DC, 0x06A5, - 0x91DD, 0x91DD, 0x2280, 0x91DE, 0x91E2, 0x4E1E, 0x91E3, 0x91E3, 0x1EC5, - 0x91E4, 0x91E4, 0x24FB, 0x91E5, 0x91E6, 0x4E23, 0x91E7, 0x91E7, 0x24FA, - 0x91E8, 0x91E8, 0x4E25, 0x91E9, 0x91E9, 0x1EED, 0x91EA, 0x91F4, 0x4E26, - 0x91F5, 0x91F5, 0x24FD, 0x91F6, 0x91F6, 0x4E31, 0x91F7, 0x91F7, 0x24F9, - 0x91F8, 0x91F8, 0x4E32, 0x91F9, 0x91F9, 0x24FE, 0x91FA, 0x91FA, 0x20CD, - 0x91FB, 0x91FF, 0x4E33, 0x9200, 0x9200, 0x2508, 0x9201, 0x9201, 0x2504, - 0x9202, 0x9203, 0x4E38, 0x9204, 0x9204, 0x2506, 0x9205, 0x9207, 0x4E3A, - 0x9208, 0x9208, 0x24FF, 0x9209, 0x9209, 0x2090, 0x920A, 0x920C, 0x4E3D, - 0x920D, 0x920D, 0x1EDD, 0x920E, 0x920E, 0x1F25, 0x920F, 0x920F, 0x4E40, - 0x9210, 0x9210, 0x2503, 0x9211, 0x9211, 0x2502, 0x9212, 0x9213, 0x4E41, - 0x9214, 0x9214, 0x1E7A, 0x9215, 0x9215, 0x20A6, 0x9216, 0x921D, 0x4E43, - 0x921E, 0x921E, 0x1FD5, 0x921F, 0x9222, 0x4E4B, 0x9223, 0x9223, 0x1F11, - 0x9224, 0x9224, 0x4E4F, 0x9225, 0x9225, 0x2507, 0x9226, 0x9226, 0x2500, - 0x9227, 0x9227, 0x2505, 0x9228, 0x922D, 0x4E50, 0x922E, 0x922E, 0x2519, - 0x922F, 0x922F, 0x4E56, 0x9230, 0x9230, 0x2515, 0x9231, 0x9232, 0x4E57, - 0x9233, 0x9233, 0x250C, 0x9234, 0x9234, 0x2031, 0x9235, 0x9236, 0x4E59, - 0x9237, 0x9237, 0x250B, 0x9238, 0x9238, 0x250F, 0x9239, 0x9239, 0x251A, - 0x923A, 0x923A, 0x2509, 0x923B, 0x923C, 0x4E5B, 0x923D, 0x923D, 0x250E, - 0x923E, 0x923E, 0x2234, 0x923F, 0x923F, 0x2513, 0x9240, 0x9240, 0x1F80, - 0x9241, 0x9244, 0x4E5D, 0x9245, 0x9245, 0x2501, 0x9246, 0x9247, 0x4E61, - 0x9248, 0x9248, 0x2517, 0x9249, 0x9249, 0x2516, 0x924A, 0x924C, 0x4E63, - 0x924D, 0x924D, 0x2518, 0x924E, 0x9250, 0x4E66, 0x9251, 0x9251, 0x1E56, - 0x9252, 0x9254, 0x4E69, 0x9255, 0x9255, 0x250D, 0x9256, 0x9256, 0x4E6C, - 0x9257, 0x9257, 0x20D3, 0x9258, 0x9259, 0x4E6D, 0x925A, 0x925A, 0x207A, - 0x925B, 0x925B, 0x20CE, 0x925C, 0x925D, 0x4E6F, 0x925E, 0x925E, 0x2510, - 0x925F, 0x9261, 0x4E71, 0x9262, 0x9262, 0x1E55, 0x9263, 0x9265, 0x4E74, - 0x9266, 0x9266, 0x250A, 0x9267, 0x926B, 0x4E77, 0x926C, 0x926D, 0x2511, - 0x926E, 0x9273, 0x4E7C, 0x9274, 0x9274, 0x086B, 0x9275, 0x9277, 0x4E82, - 0x9278, 0x9278, 0x1FAA, 0x9279, 0x9279, 0x4E85, 0x927A, 0x927A, 0x251E, - 0x927B, 0x927B, 0x1F1F, 0x927C, 0x927E, 0x4E86, 0x927F, 0x927F, 0x252D, - 0x9280, 0x9280, 0x221D, 0x9281, 0x9282, 0x4E89, 0x9283, 0x9283, 0x2532, - 0x9284, 0x9284, 0x4E8B, 0x9285, 0x9285, 0x217B, 0x9286, 0x928D, 0x4E8C, - 0x928E, 0x928E, 0x1D80, 0x928F, 0x9290, 0x4E94, 0x9291, 0x9291, 0x21AF, - 0x9292, 0x9292, 0x4E96, 0x9293, 0x9293, 0x252C, 0x9294, 0x9295, 0x4E97, - 0x9296, 0x9296, 0x2528, 0x9297, 0x9297, 0x4E99, 0x9298, 0x9298, 0x208C, - 0x9299, 0x9299, 0x4E9A, 0x929A, 0x929A, 0x252F, 0x929B, 0x929B, 0x4E9B, - 0x929C, 0x929C, 0x21BC, 0x929D, 0x929F, 0x4E9C, 0x92A0, 0x92A0, 0x251D, - 0x92A1, 0x92A2, 0x4E9F, 0x92A3, 0x92A3, 0x2535, 0x92A4, 0x92A4, 0x4EA1, - 0x92A5, 0x92A5, 0x220D, 0x92A6, 0x92A6, 0x2526, 0x92A7, 0x92A7, 0x4EA2, - 0x92A8, 0x92A8, 0x2534, 0x92A9, 0x92A9, 0x252A, 0x92AA, 0x92AA, 0x251F, - 0x92AB, 0x92AB, 0x2531, 0x92AC, 0x92AC, 0x251C, 0x92AD, 0x92AD, 0x4EA3, - 0x92AE, 0x92AE, 0x1D81, 0x92AF, 0x92B0, 0x4EA4, 0x92B1, 0x92B1, 0x2525, - 0x92B2, 0x92B6, 0x4EA6, 0x92B7, 0x92B7, 0x21CD, 0x92B8, 0x92B8, 0x4EAB, - 0x92B9, 0x92B9, 0x21DA, 0x92BA, 0x92BA, 0x4EAC, 0x92BB, 0x92BB, 0x2172, - 0x92BC, 0x92BC, 0x253E, 0x92BD, 0x92C0, 0x4EAD, 0x92C1, 0x92C1, 0x204F, - 0x92C2, 0x92C2, 0x4EB1, 0x92C3, 0x92C3, 0x2543, 0x92C4, 0x92C4, 0x4EB2, - 0x92C5, 0x92C5, 0x21D7, 0x92C6, 0x92C6, 0x4EB3, 0x92C7, 0x92C7, 0x1E3C, - 0x92C8, 0x92C8, 0x1D82, 0x92C9, 0x92CB, 0x4EB4, 0x92CC, 0x92CC, 0x2529, - 0x92CD, 0x92CE, 0x4EB7, 0x92CF, 0x92CF, 0x2521, 0x92D0, 0x92D1, 0x4EB9, - 0x92D2, 0x92D2, 0x1EFF, 0x92D3, 0x92DC, 0x4EBB, 0x92DD, 0x92DD, 0x253F, - 0x92DE, 0x92DE, 0x4EC5, 0x92DF, 0x92DF, 0x2544, 0x92E0, 0x92E2, 0x4EC6, - 0x92E3, 0x92E3, 0x2523, 0x92E4, 0x92E4, 0x1E90, 0x92E5, 0x92E5, 0x253A, - 0x92E6, 0x92E6, 0x2545, 0x92E7, 0x92E7, 0x4EC9, 0x92E8, 0x92E8, 0x253D, - 0x92E9, 0x92E9, 0x4ECA, 0x92EA, 0x92EA, 0x20C1, 0x92EB, 0x92EC, 0x4ECB, - 0x92ED, 0x92ED, 0x2103, 0x92EE, 0x92EE, 0x2520, 0x92EF, 0x92EF, 0x253C, - 0x92F0, 0x92F0, 0x253B, 0x92F1, 0x92F1, 0x2538, 0x92F2, 0x92F5, 0x4ECD, - 0x92F6, 0x92F6, 0x2540, 0x92F7, 0x92F7, 0x4ED1, 0x92F8, 0x92F8, 0x1FCD, - 0x92F9, 0x92FB, 0x4ED2, 0x92FC, 0x92FC, 0x1F18, 0x92FD, 0x92FF, 0x4ED5, - 0x9300, 0x9300, 0x4ED8, 0x9301, 0x9301, 0x254B, 0x9302, 0x9305, 0x4ED9, - 0x9306, 0x9306, 0x2547, 0x9307, 0x9308, 0x254F, 0x9309, 0x930F, 0x4EDD, - 0x9310, 0x9310, 0x22B0, 0x9311, 0x9311, 0x4EE4, 0x9312, 0x9312, 0x2546, - 0x9313, 0x9314, 0x4EE5, 0x9315, 0x9315, 0x254C, 0x9316, 0x9317, 0x4EE7, - 0x9318, 0x9318, 0x1E9A, 0x9319, 0x9319, 0x2552, 0x931A, 0x931A, 0x2530, - 0x931B, 0x931B, 0x2549, 0x931C, 0x931E, 0x4EE9, 0x931F, 0x931F, 0x2551, - 0x9320, 0x9320, 0x1ECA, 0x9321, 0x9321, 0x4EEC, 0x9322, 0x9322, 0x20D2, - 0x9323, 0x9325, 0x4EED, 0x9326, 0x9326, 0x1FB8, 0x9327, 0x9327, 0x4EF0, - 0x9328, 0x9328, 0x2079, 0x9329, 0x932A, 0x4EF1, 0x932B, 0x932B, 0x21AB, - 0x932C, 0x932D, 0x4EF3, 0x932E, 0x932E, 0x254D, 0x932F, 0x932F, 0x1EA5, - 0x9330, 0x9331, 0x4EF5, 0x9332, 0x9332, 0x204C, 0x9333, 0x9333, 0x2080, - 0x9334, 0x9335, 0x4EF7, 0x9336, 0x9336, 0x266D, 0x9337, 0x9337, 0x4EF9, - 0x9338, 0x9338, 0x2537, 0x9339, 0x933D, 0x4EFA, 0x933E, 0x933E, 0x1D83, - 0x933F, 0x933F, 0x4EFF, 0x9340, 0x9340, 0x254A, 0x9341, 0x9341, 0x21B8, - 0x9342, 0x9342, 0x4F00, 0x9343, 0x9343, 0x254E, 0x9344, 0x9345, 0x4F01, - 0x9346, 0x9346, 0x24FC, 0x9347, 0x9347, 0x2554, 0x9348, 0x934A, 0x4F03, - 0x934B, 0x934B, 0x1F3C, 0x934C, 0x934C, 0x4F06, 0x934D, 0x934D, 0x1ED5, - 0x934E, 0x9353, 0x4F07, 0x9354, 0x9354, 0x2556, 0x9355, 0x9357, 0x4F0D, - 0x9358, 0x9358, 0x2268, 0x9359, 0x935A, 0x4F10, 0x935B, 0x935B, 0x1ED6, - 0x935C, 0x9363, 0x4F12, 0x9364, 0x9364, 0x2557, 0x9365, 0x9365, 0x2553, - 0x9366, 0x9368, 0x4F1A, 0x9369, 0x9369, 0x2548, 0x936A, 0x936A, 0x1D84, - 0x936B, 0x936B, 0x4F1D, 0x936C, 0x936C, 0x20DC, 0x936D, 0x936F, 0x4F1E, - 0x9370, 0x9370, 0x2559, 0x9371, 0x9374, 0x4F21, 0x9375, 0x9375, 0x1F97, - 0x9376, 0x9376, 0x2555, 0x9377, 0x9379, 0x4F25, 0x937A, 0x937A, 0x227D, - 0x937B, 0x937D, 0x4F28, 0x937E, 0x937E, 0x257E, 0x937F, 0x9381, 0x4F2B, - 0x9382, 0x9382, 0x207C, 0x9383, 0x9383, 0x4F2E, 0x9384, 0x9384, 0x255A, - 0x9385, 0x9386, 0x4F2F, 0x9387, 0x9387, 0x255E, 0x9388, 0x9389, 0x4F31, - 0x938A, 0x938A, 0x1E34, 0x938B, 0x938E, 0x4F33, 0x938F, 0x938F, 0x1D86, - 0x9390, 0x9395, 0x4F37, 0x9396, 0x9396, 0x215E, 0x9397, 0x9397, 0x4F3D, - 0x9398, 0x9398, 0x2560, 0x9399, 0x93A1, 0x4F3E, 0x93A2, 0x93A2, 0x21A2, - 0x93A3, 0x93A3, 0x2354, 0x93A4, 0x93A5, 0x4F47, 0x93A6, 0x93A6, 0x2563, - 0x93A7, 0x93A7, 0x2527, 0x93A8, 0x93A8, 0x4F49, 0x93A9, 0x93A9, 0x252E, - 0x93AA, 0x93AA, 0x2558, 0x93AB, 0x93AB, 0x4F4A, 0x93AC, 0x93AC, 0x1F1B, - 0x93AD, 0x93AD, 0x4F4B, 0x93AE, 0x93AE, 0x2283, 0x93AF, 0x93AF, 0x4F4C, - 0x93B0, 0x93B0, 0x2564, 0x93B1, 0x93B2, 0x4F4D, 0x93B3, 0x93B3, 0x20A0, - 0x93B4, 0x93B4, 0x4F4F, 0x93B5, 0x93B5, 0x2565, 0x93B6, 0x93B7, 0x4F50, - 0x93B8, 0x93B8, 0x2561, 0x93B9, 0x93BE, 0x4F52, 0x93BF, 0x93BF, 0x2562, - 0x93C0, 0x93C2, 0x4F58, 0x93C3, 0x93C3, 0x256C, 0x93C4, 0x93C6, 0x4F5B, - 0x93C7, 0x93C7, 0x256D, 0x93C8, 0x93C8, 0x2020, 0x93C9, 0x93C9, 0x4F5E, - 0x93CA, 0x93CA, 0x1D85, 0x93CB, 0x93CB, 0x4F5F, 0x93CC, 0x93CC, 0x255F, - 0x93CD, 0x93CD, 0x256A, 0x93CE, 0x93D0, 0x4F60, 0x93D1, 0x93D1, 0x256E, - 0x93D2, 0x93D5, 0x4F63, 0x93D6, 0x93D6, 0x1E01, 0x93D7, 0x93D7, 0x2539, - 0x93D8, 0x93D8, 0x255C, 0x93D9, 0x93DB, 0x4F67, 0x93DC, 0x93DD, 0x2568, - 0x93DE, 0x93DE, 0x256B, 0x93DF, 0x93DF, 0x1E6F, 0x93E0, 0x93E0, 0x4F6A, - 0x93E1, 0x93E1, 0x1FC4, 0x93E2, 0x93E2, 0x2567, 0x93E3, 0x93E3, 0x4F6B, - 0x93E4, 0x93E4, 0x255B, 0x93E5, 0x93E7, 0x4F6C, 0x93E8, 0x93E8, 0x261D, - 0x93E9, 0x93F4, 0x4F6F, 0x93F5, 0x93F5, 0x252B, 0x93F6, 0x93F6, 0x4F7B, - 0x93F7, 0x93F7, 0x2571, 0x93F8, 0x93F8, 0x4F7C, 0x93F9, 0x93F9, 0x2577, - 0x93FA, 0x93FF, 0x4F7D, 0x9400, 0x9402, 0x4F83, 0x9403, 0x9403, 0x2522, - 0x9404, 0x940A, 0x4F86, 0x940B, 0x940B, 0x2533, 0x940C, 0x940F, 0x4F8D, - 0x9410, 0x9410, 0x202A, 0x9411, 0x9411, 0x4F91, 0x9412, 0x9412, 0x2536, - 0x9413, 0x9413, 0x2573, 0x9414, 0x9414, 0x256F, 0x9415, 0x9417, 0x4F92, - 0x9418, 0x9418, 0x2293, 0x9419, 0x9419, 0x2578, 0x941A, 0x941C, 0x4F95, - 0x941D, 0x941D, 0x2570, 0x941E, 0x941F, 0x4F98, 0x9420, 0x9420, 0x2575, - 0x9421, 0x9425, 0x4F9A, 0x9426, 0x9427, 0x2541, 0x9428, 0x9428, 0x255D, - 0x9429, 0x942D, 0x4F9F, 0x942E, 0x942E, 0x201A, 0x942F, 0x9431, 0x4FA4, - 0x9432, 0x9432, 0x257A, 0x9433, 0x9433, 0x2006, 0x9434, 0x9434, 0x4FA7, - 0x9435, 0x9435, 0x2177, 0x9436, 0x9437, 0x4FA8, 0x9438, 0x9438, 0x251B, - 0x9439, 0x9439, 0x4FAA, 0x943A, 0x943A, 0x2524, 0x943B, 0x943D, 0x4FAB, - 0x943E, 0x943E, 0x1D87, 0x943F, 0x943F, 0x257B, 0x9440, 0x9443, 0x4FAE, - 0x9444, 0x9444, 0x22A3, 0x9445, 0x9449, 0x4FB2, 0x944A, 0x944A, 0x2579, - 0x944B, 0x944B, 0x4FB7, 0x944C, 0x944C, 0x2566, 0x944D, 0x9451, 0x4FB8, - 0x9452, 0x9452, 0x1F93, 0x9453, 0x9453, 0x4FBD, 0x9454, 0x9454, 0x257C, - 0x9455, 0x945F, 0x4FBE, 0x9460, 0x9460, 0x2514, 0x9461, 0x9462, 0x4FC9, - 0x9463, 0x9463, 0x257D, 0x9464, 0x9464, 0x4FCB, 0x9465, 0x9465, 0x2572, - 0x9466, 0x946A, 0x4FCC, 0x946B, 0x946B, 0x1D88, 0x946C, 0x946C, 0x4FD1, - 0x946D, 0x946D, 0x2574, 0x946E, 0x946F, 0x4FD2, 0x9470, 0x9470, 0x224E, - 0x9471, 0x9471, 0x4FD4, 0x9472, 0x9472, 0x21C6, 0x9473, 0x9476, 0x4FD5, - 0x9477, 0x9477, 0x209F, 0x9478, 0x9478, 0x4FD9, 0x9479, 0x9479, 0x2576, - 0x947A, 0x947B, 0x4FDA, 0x947C, 0x947C, 0x2064, 0x947D, 0x947D, 0x22BF, - 0x947E, 0x947E, 0x261C, 0x947F, 0x947F, 0x225E, 0x9480, 0x9484, 0x4FDC, - 0x9485, 0x9487, 0x1A8E, 0x9488, 0x9488, 0x118C, 0x9489, 0x9489, 0x05E3, - 0x948A, 0x948A, 0x1A92, 0x948B, 0x948B, 0x1A91, 0x948C, 0x948D, 0x1A93, - 0x948E, 0x948E, 0x0C22, 0x948F, 0x9490, 0x1A95, 0x9491, 0x9491, 0x4FE1, - 0x9492, 0x9492, 0x064D, 0x9493, 0x9493, 0x05D7, 0x9494, 0x9494, 0x1A97, - 0x9495, 0x9495, 0x1A99, 0x9496, 0x9496, 0x4FE2, 0x9497, 0x9497, 0x1A98, - 0x9498, 0x9498, 0x4FE3, 0x9499, 0x9499, 0x06C1, 0x949A, 0x949C, 0x1A9A, - 0x949D, 0x949D, 0x061A, 0x949E, 0x949E, 0x04D3, 0x949F, 0x949F, 0x11D2, - 0x94A0, 0x94A0, 0x0B29, 0x94A1, 0x94A1, 0x041E, 0x94A2, 0x94A2, 0x06D1, - 0x94A3, 0x94A4, 0x1A9D, 0x94A5, 0x94A5, 0x1102, 0x94A6, 0x94A6, 0x0C52, - 0x94A7, 0x94A7, 0x092A, 0x94A8, 0x94A8, 0x0EE8, 0x94A9, 0x94A9, 0x070C, - 0x94AA, 0x94AA, 0x1AA0, 0x94AB, 0x94AB, 0x1A9F, 0x94AC, 0x94AC, 0x1AA2, - 0x94AD, 0x94AD, 0x1AA1, 0x94AE, 0x94AE, 0x0B66, 0x94AF, 0x94B0, 0x1AA3, - 0x94B1, 0x94B1, 0x0C2B, 0x94B2, 0x94B2, 0x1AA5, 0x94B3, 0x94B3, 0x0C2C, - 0x94B4, 0x94B4, 0x1AA6, 0x94B5, 0x94B5, 0x046E, 0x94B6, 0x94BA, 0x1AA7, - 0x94BB, 0x94BB, 0x1247, 0x94BC, 0x94BD, 0x1AAC, 0x94BE, 0x94BE, 0x084B, - 0x94BF, 0x94BF, 0x1AAE, 0x94C0, 0x94C0, 0x10B0, 0x94C1, 0x94C1, 0x0E4D, - 0x94C2, 0x94C2, 0x0473, 0x94C3, 0x94C3, 0x0A2E, 0x94C4, 0x94C4, 0x1AAF, - 0x94C5, 0x94C5, 0x0C23, 0x94C6, 0x94C6, 0x0AB2, 0x94C7, 0x94C7, 0x4FE4, - 0x94C8, 0x94CE, 0x1AB0, 0x94CF, 0x94CF, 0x4FE5, 0x94D0, 0x94D2, 0x1AB7, - 0x94D3, 0x94D4, 0x4FE6, 0x94D5, 0x94D7, 0x1ABA, 0x94D8, 0x94D8, 0x1ABE, - 0x94D9, 0x94D9, 0x1ABD, 0x94DA, 0x94DA, 0x4FE8, 0x94DB, 0x94DB, 0x1ABF, - 0x94DC, 0x94DC, 0x0E5E, 0x94DD, 0x94DD, 0x0A68, 0x94DE, 0x94E0, 0x1AC0, - 0x94E1, 0x94E1, 0x1142, 0x94E2, 0x94E2, 0x1AC3, 0x94E3, 0x94E3, 0x0F20, - 0x94E4, 0x94E5, 0x1AC4, 0x94E6, 0x94E6, 0x4FE9, 0x94E7, 0x94E8, 0x1AC6, - 0x94E9, 0x94E9, 0x1AC9, 0x94EA, 0x94EA, 0x1AC8, 0x94EB, 0x94EB, 0x1ACA, - 0x94EC, 0x94EC, 0x06F0, 0x94ED, 0x94ED, 0x0AFF, 0x94EE, 0x94EF, 0x1ACB, - 0x94F0, 0x94F0, 0x0893, 0x94F1, 0x94F1, 0x1046, 0x94F2, 0x94F2, 0x04C0, - 0x94F3, 0x94F5, 0x1ACD, 0x94F6, 0x94F6, 0x107F, 0x94F7, 0x94F7, 0x1AD0, - 0x94F8, 0x94F8, 0x11FC, 0x94F9, 0x94F9, 0x1AD1, 0x94FA, 0x94FA, 0x0BEB, - 0x94FB, 0x94FB, 0x4FEA, 0x94FC, 0x94FD, 0x1AD2, 0x94FE, 0x94FE, 0x09FD, - 0x94FF, 0x94FF, 0x1AD4, 0x9500, 0x9500, 0x0F67, 0x9501, 0x9501, 0x0DED, - 0x9502, 0x9502, 0x1AD6, 0x9503, 0x9503, 0x1AD5, 0x9504, 0x9504, 0x051F, - 0x9505, 0x9505, 0x0751, 0x9506, 0x9507, 0x1AD7, 0x9508, 0x9508, 0x0FAD, - 0x9509, 0x950A, 0x1AD9, 0x950B, 0x950B, 0x0683, 0x950C, 0x950C, 0x0F8A, - 0x950D, 0x950F, 0x1ADB, 0x9510, 0x9510, 0x0CCC, 0x9511, 0x9511, 0x0E33, - 0x9512, 0x9516, 0x1ADE, 0x9517, 0x9517, 0x1181, 0x9518, 0x9518, 0x1AE3, - 0x9519, 0x9519, 0x0570, 0x951A, 0x951A, 0x0AAF, 0x951B, 0x951B, 0x1AE4, - 0x951C, 0x951C, 0x4FEB, 0x951D, 0x951F, 0x1AE5, 0x9520, 0x9520, 0x4FEC, - 0x9521, 0x9521, 0x0F0C, 0x9522, 0x9522, 0x1AE8, 0x9523, 0x9523, 0x0A87, - 0x9524, 0x9524, 0x053B, 0x9525, 0x9525, 0x1213, 0x9526, 0x9526, 0x08C6, - 0x9527, 0x9527, 0x4FED, 0x9528, 0x9528, 0x0F34, 0x9529, 0x9529, 0x1AEB, - 0x952A, 0x952B, 0x1AE9, 0x952C, 0x952C, 0x1AEC, 0x952D, 0x952D, 0x05E6, - 0x952E, 0x952E, 0x086F, 0x952F, 0x952F, 0x0911, 0x9530, 0x9530, 0x0AD1, - 0x9531, 0x9532, 0x1AED, 0x9533, 0x9533, 0x4FEE, 0x9534, 0x9534, 0x1AEF, - 0x9535, 0x9535, 0x1AF7, 0x9536, 0x9538, 0x1AF0, 0x9539, 0x9539, 0x0C3F, - 0x953A, 0x953A, 0x1B19, 0x953B, 0x953B, 0x060C, 0x953C, 0x953C, 0x1AF3, - 0x953D, 0x953D, 0x4FEF, 0x953E, 0x953F, 0x1AF4, 0x9540, 0x9540, 0x0605, - 0x9541, 0x9541, 0x0AC3, 0x9542, 0x9542, 0x1AF6, 0x9543, 0x9543, 0x4FF0, - 0x9544, 0x9546, 0x1AF8, 0x9547, 0x9547, 0x1193, 0x9548, 0x9548, 0x4FF1, - 0x9549, 0x9549, 0x1AFB, 0x954A, 0x954A, 0x0B5A, 0x954B, 0x954B, 0x4FF2, - 0x954C, 0x954C, 0x1AFC, 0x954D, 0x954D, 0x0B5B, 0x954E, 0x954F, 0x1AFD, - 0x9550, 0x9550, 0x06DF, 0x9551, 0x9551, 0x0402, 0x9552, 0x9554, 0x1AFF, - 0x9555, 0x9555, 0x4FF3, 0x9556, 0x9559, 0x1B02, 0x955A, 0x955A, 0x4FF4, - 0x955B, 0x955B, 0x1B06, 0x955C, 0x955C, 0x08E4, 0x955D, 0x955D, 0x1B09, - 0x955E, 0x955F, 0x1B07, 0x9560, 0x9560, 0x4FF5, 0x9561, 0x9562, 0x1B0A, - 0x9563, 0x9563, 0x0A16, 0x9564, 0x956C, 0x1B0C, 0x956D, 0x956D, 0x09C3, - 0x956E, 0x956E, 0x4FF6, 0x956F, 0x956F, 0x1B15, 0x9570, 0x9570, 0x09F6, - 0x9571, 0x9573, 0x1B16, 0x9574, 0x9575, 0x4FF7, 0x9576, 0x9576, 0x0F4F, - 0x9577, 0x9577, 0x1E75, 0x9578, 0x957E, 0x4FF9, 0x957F, 0x957F, 0x04C9, - 0x9580, 0x9580, 0x207D, 0x9581, 0x9581, 0x5000, 0x9582, 0x9582, 0x23BF, - 0x9583, 0x9583, 0x2113, 0x9584, 0x9585, 0x5001, 0x9586, 0x9586, 0x23C0, - 0x9587, 0x9588, 0x5003, 0x9589, 0x9589, 0x1E45, 0x958A, 0x958A, 0x5005, - 0x958B, 0x958B, 0x1FD8, 0x958C, 0x958C, 0x23C4, 0x958D, 0x958D, 0x5006, - 0x958E, 0x958E, 0x23C2, 0x958F, 0x958F, 0x2104, 0x9590, 0x9590, 0x5007, - 0x9591, 0x9591, 0x21BD, 0x9592, 0x9592, 0x5008, 0x9593, 0x9593, 0x1F87, - 0x9594, 0x9594, 0x23C3, 0x9595, 0x9597, 0x5009, 0x9598, 0x9598, 0x2269, - 0x9599, 0x95A0, 0x500C, 0x95A1, 0x95A1, 0x1F43, 0x95A2, 0x95A2, 0x5014, - 0x95A3, 0x95A3, 0x1F1E, 0x95A4, 0x95A4, 0x2679, 0x95A5, 0x95A5, 0x1EEB, - 0x95A6, 0x95A7, 0x5015, 0x95A8, 0x95A8, 0x1F35, 0x95A9, 0x95A9, 0x208A, - 0x95AA, 0x95AA, 0x5017, 0x95AB, 0x95AB, 0x23C7, 0x95AC, 0x95AC, 0x23C9, - 0x95AD, 0x95AD, 0x23C6, 0x95AE, 0x95B1, 0x5018, 0x95B2, 0x95B2, 0x224F, - 0x95B3, 0x95B5, 0x501C, 0x95B6, 0x95B6, 0x23CB, 0x95B7, 0x95B8, 0x501F, - 0x95B9, 0x95B9, 0x21F3, 0x95BA, 0x95BA, 0x5021, 0x95BB, 0x95BB, 0x21F7, - 0x95BC, 0x95BC, 0x23CF, 0x95BD, 0x95BD, 0x23CE, 0x95BE, 0x95BE, 0x23CA, - 0x95BF, 0x95BF, 0x23CD, 0x95C0, 0x95C2, 0x5022, 0x95C3, 0x95C3, 0x23D0, - 0x95C4, 0x95C5, 0x5025, 0x95C6, 0x95C6, 0x266C, 0x95C7, 0x95C7, 0x5027, - 0x95C8, 0x95C8, 0x23C1, 0x95C9, 0x95C9, 0x5028, 0x95CA, 0x95CA, 0x1FEE, - 0x95CB, 0x95CB, 0x23D1, 0x95CC, 0x95CC, 0x1FF8, 0x95CD, 0x95CF, 0x5029, - 0x95D0, 0x95D0, 0x23D3, 0x95D1, 0x95D3, 0x502C, 0x95D4, 0x95D4, 0x23D2, - 0x95D5, 0x95D5, 0x23D4, 0x95D6, 0x95D6, 0x1E98, 0x95D7, 0x95DB, 0x502F, - 0x95DC, 0x95DC, 0x1F2C, 0x95DD, 0x95DD, 0x5034, 0x95DE, 0x95DE, 0x23D5, - 0x95DF, 0x95E0, 0x5035, 0x95E1, 0x95E1, 0x1E71, 0x95E2, 0x95E2, 0x2691, - 0x95E3, 0x95E4, 0x5037, 0x95E5, 0x95E5, 0x23C5, 0x95E6, 0x95E7, 0x5039, - 0x95E8, 0x95E8, 0x0ACA, 0x95E9, 0x95E9, 0x1685, 0x95EA, 0x95EA, 0x0CFA, - 0x95EB, 0x95EB, 0x1686, 0x95EC, 0x95EC, 0x503B, 0x95ED, 0x95ED, 0x043E, - 0x95EE, 0x95EE, 0x0ED9, 0x95EF, 0x95EF, 0x0536, 0x95F0, 0x95F0, 0x0CCD, - 0x95F1, 0x95F1, 0x1687, 0x95F2, 0x95F2, 0x0F3D, 0x95F3, 0x95F3, 0x1688, - 0x95F4, 0x95F4, 0x0857, 0x95F5, 0x95F6, 0x1689, 0x95F7, 0x95F7, 0x0ACB, - 0x95F8, 0x95F8, 0x1143, 0x95F9, 0x95F9, 0x0B39, 0x95FA, 0x95FA, 0x0744, - 0x95FB, 0x95FB, 0x0ED4, 0x95FC, 0x95FC, 0x168B, 0x95FD, 0x95FD, 0x0AFB, - 0x95FE, 0x95FE, 0x168C, 0x95FF, 0x95FF, 0x503C, 0x9600, 0x9600, 0x0644, - 0x9601, 0x9601, 0x06EE, 0x9602, 0x9602, 0x0789, 0x9603, 0x9604, 0x168D, - 0x9605, 0x9605, 0x1107, 0x9606, 0x9606, 0x168F, 0x9607, 0x9607, 0x503D, - 0x9608, 0x9608, 0x1690, 0x9609, 0x9609, 0x0FF4, 0x960A, 0x960D, 0x1691, - 0x960E, 0x960E, 0x0FFF, 0x960F, 0x960F, 0x1695, 0x9610, 0x9610, 0x04C2, - 0x9611, 0x9611, 0x09A6, 0x9612, 0x9612, 0x1696, 0x9613, 0x9613, 0x503E, - 0x9614, 0x9614, 0x0996, 0x9615, 0x9617, 0x1697, 0x9618, 0x9618, 0x503F, - 0x9619, 0x961A, 0x169A, 0x961B, 0x961B, 0x5040, 0x961C, 0x961C, 0x06B2, - 0x961D, 0x961D, 0x1354, 0x961E, 0x961E, 0x5041, 0x961F, 0x961F, 0x0612, - 0x9620, 0x9620, 0x5042, 0x9621, 0x9621, 0x1356, 0x9622, 0x9622, 0x1355, - 0x9623, 0x9629, 0x5043, 0x962A, 0x962A, 0x1358, 0x962B, 0x962D, 0x504A, - 0x962E, 0x962E, 0x0CC9, 0x962F, 0x9630, 0x504D, 0x9631, 0x9631, 0x1357, - 0x9632, 0x9632, 0x065D, 0x9633, 0x9633, 0x101D, 0x9634, 0x9634, 0x107C, - 0x9635, 0x9635, 0x1194, 0x9636, 0x9636, 0x08A8, 0x9637, 0x963A, 0x504F, - 0x963B, 0x963B, 0x1245, 0x963C, 0x963C, 0x135A, 0x963D, 0x963D, 0x1359, - 0x963E, 0x963E, 0x5053, 0x963F, 0x963F, 0x03AD, 0x9640, 0x9640, 0x0E84, - 0x9641, 0x9641, 0x5054, 0x9642, 0x9642, 0x135B, 0x9643, 0x9643, 0x5055, - 0x9644, 0x9644, 0x06B8, 0x9645, 0x9645, 0x083D, 0x9646, 0x9646, 0x0A64, - 0x9647, 0x9647, 0x0A4B, 0x9648, 0x9648, 0x04E7, 0x9649, 0x9649, 0x135C, - 0x964A, 0x964A, 0x5056, 0x964B, 0x964B, 0x0A51, 0x964C, 0x964C, 0x0B13, - 0x964D, 0x964D, 0x0886, 0x964E, 0x964F, 0x5057, 0x9650, 0x9650, 0x0F4B, - 0x9651, 0x9653, 0x5059, 0x9654, 0x9654, 0x135D, 0x9655, 0x9655, 0x0CFB, - 0x9656, 0x9657, 0x505C, 0x9658, 0x9658, 0x231A, 0x9659, 0x965A, 0x505E, - 0x965B, 0x965B, 0x0446, 0x965C, 0x965C, 0x5060, 0x965D, 0x965D, 0x2114, - 0x965E, 0x965E, 0x5061, 0x965F, 0x965F, 0x135E, 0x9660, 0x9660, 0x5062, - 0x9661, 0x9661, 0x05F7, 0x9662, 0x9662, 0x10FD, 0x9663, 0x9663, 0x2284, - 0x9664, 0x9664, 0x0522, 0x9665, 0x9666, 0x5063, 0x9667, 0x9667, 0x135F, - 0x9668, 0x9668, 0x110C, 0x9669, 0x9669, 0x0F42, 0x966A, 0x966A, 0x0BA4, - 0x966B, 0x966B, 0x5065, 0x966C, 0x966C, 0x1360, 0x966D, 0x966F, 0x5066, - 0x9670, 0x9670, 0x221C, 0x9671, 0x9671, 0x5069, 0x9672, 0x9672, 0x1361, - 0x9673, 0x9673, 0x1E7E, 0x9674, 0x9674, 0x1362, 0x9675, 0x9675, 0x0A33, - 0x9676, 0x9676, 0x0E28, 0x9677, 0x9677, 0x0F4A, 0x9678, 0x9678, 0x204D, - 0x9679, 0x967C, 0x506A, 0x967D, 0x967D, 0x2201, 0x967E, 0x9684, 0x506E, - 0x9685, 0x9685, 0x10CC, 0x9686, 0x9686, 0x0A48, 0x9687, 0x9687, 0x5075, - 0x9688, 0x9688, 0x1363, 0x9689, 0x9689, 0x5076, 0x968A, 0x968A, 0x1ED9, - 0x968B, 0x968B, 0x0DDA, 0x968C, 0x968C, 0x5077, 0x968D, 0x968D, 0x1364, - 0x968E, 0x968E, 0x1FB2, 0x968F, 0x968F, 0x0DDB, 0x9690, 0x9690, 0x1085, - 0x9691, 0x9693, 0x5078, 0x9694, 0x9694, 0x06EF, 0x9695, 0x9695, 0x2252, - 0x9696, 0x9696, 0x507B, 0x9697, 0x9697, 0x1365, 0x9698, 0x9698, 0x03BA, - 0x9699, 0x9699, 0x0F23, 0x969A, 0x969A, 0x507C, 0x969B, 0x969B, 0x1F79, - 0x969C, 0x969C, 0x1170, 0x969D, 0x96A6, 0x507D, 0x96A7, 0x96A7, 0x0DE2, - 0x96A8, 0x96A8, 0x2157, 0x96A9, 0x96A9, 0x5087, 0x96AA, 0x96AA, 0x21BF, - 0x96AB, 0x96AF, 0x5088, 0x96B0, 0x96B0, 0x1366, 0x96B1, 0x96B1, 0x221F, - 0x96B2, 0x96B2, 0x508D, 0x96B3, 0x96B3, 0x1684, 0x96B4, 0x96B4, 0x203D, - 0x96B5, 0x96B5, 0x508E, 0x96B6, 0x96B6, 0x09EE, 0x96B7, 0x96B7, 0x508F, - 0x96B8, 0x96B8, 0x2015, 0x96B9, 0x96B9, 0x1D79, 0x96BA, 0x96BA, 0x5090, - 0x96BB, 0x96BB, 0x26A5, 0x96BC, 0x96BD, 0x1D7A, 0x96BE, 0x96BE, 0x0B34, - 0x96BF, 0x96BF, 0x5091, 0x96C0, 0x96C0, 0x0C93, 0x96C1, 0x96C1, 0x100C, - 0x96C2, 0x96C3, 0x5092, 0x96C4, 0x96C4, 0x0FA6, 0x96C5, 0x96C5, 0x0FEE, - 0x96C6, 0x96C6, 0x0822, 0x96C7, 0x96C7, 0x0726, 0x96C8, 0x96C8, 0x5094, - 0x96C9, 0x96C9, 0x1B1C, 0x96CA, 0x96CB, 0x5095, 0x96CC, 0x96CC, 0x0549, - 0x96CD, 0x96CD, 0x109F, 0x96CE, 0x96CE, 0x1D7C, 0x96CF, 0x96CF, 0x0520, - 0x96D0, 0x96D1, 0x5097, 0x96D2, 0x96D2, 0x1D7D, 0x96D3, 0x96D4, 0x5099, - 0x96D5, 0x96D5, 0x05D2, 0x96D6, 0x96D6, 0x2156, 0x96D7, 0x96D8, 0x509B, - 0x96D9, 0x96D9, 0x2144, 0x96DA, 0x96DA, 0x509D, 0x96DB, 0x96DB, 0x1E91, - 0x96DC, 0x96DC, 0x2257, 0x96DD, 0x96DF, 0x509E, 0x96E0, 0x96E0, 0x1D7F, - 0x96E1, 0x96E1, 0x50A1, 0x96E2, 0x96E2, 0x200A, 0x96E3, 0x96E3, 0x2092, - 0x96E4, 0x96E7, 0x50A2, 0x96E8, 0x96E8, 0x10CF, 0x96E9, 0x96E9, 0x1D61, - 0x96EA, 0x96EA, 0x0FD2, 0x96EB, 0x96EE, 0x50A6, 0x96EF, 0x96EF, 0x1D63, - 0x96F0, 0x96F1, 0x50AA, 0x96F2, 0x96F2, 0x2250, 0x96F3, 0x96F3, 0x1D62, - 0x96F4, 0x96F5, 0x50AC, 0x96F6, 0x96F6, 0x0A2C, 0x96F7, 0x96F7, 0x09C2, - 0x96F8, 0x96F8, 0x50AE, 0x96F9, 0x96F9, 0x040B, 0x96FA, 0x96FA, 0x50AF, - 0x96FB, 0x96FB, 0x1EC3, 0x96FC, 0x96FD, 0x50B0, 0x96FE, 0x96FE, 0x0EFC, - 0x96FF, 0x96FF, 0x50B2, 0x9700, 0x9700, 0x0FB3, 0x9701, 0x9701, 0x1D65, - 0x9702, 0x9703, 0x50B3, 0x9704, 0x9704, 0x0F63, 0x9705, 0x9705, 0x50B5, - 0x9706, 0x9706, 0x1D64, 0x9707, 0x9707, 0x1191, 0x9708, 0x9708, 0x1D66, - 0x9709, 0x9709, 0x0ABE, 0x970A, 0x970C, 0x50B6, 0x970D, 0x970D, 0x0809, - 0x970E, 0x970E, 0x1D68, 0x970F, 0x970F, 0x1D67, 0x9710, 0x9712, 0x50B9, - 0x9713, 0x9713, 0x0B41, 0x9714, 0x9715, 0x50BC, 0x9716, 0x9716, 0x0A21, - 0x9717, 0x971B, 0x50BE, 0x971C, 0x971C, 0x0D9F, 0x971D, 0x971D, 0x50C3, - 0x971E, 0x971E, 0x0F29, 0x971F, 0x9726, 0x50C4, 0x9727, 0x9727, 0x21A8, - 0x9728, 0x9729, 0x50CC, 0x972A, 0x972A, 0x1D69, 0x972B, 0x972C, 0x50CE, - 0x972D, 0x972D, 0x1D6A, 0x972E, 0x972F, 0x50D0, 0x9730, 0x9730, 0x1D6B, - 0x9731, 0x9731, 0x50D2, 0x9732, 0x9732, 0x0A5D, 0x9733, 0x9737, 0x50D3, - 0x9738, 0x9738, 0x03DF, 0x9739, 0x9739, 0x0BBA, 0x973A, 0x973C, 0x50D8, - 0x973D, 0x973D, 0x260D, 0x973E, 0x973E, 0x1D6C, 0x973F, 0x9741, 0x50DB, - 0x9742, 0x9742, 0x260C, 0x9743, 0x9743, 0x50DE, 0x9744, 0x9744, 0x260E, - 0x9745, 0x9747, 0x50DF, 0x9748, 0x9748, 0x2032, 0x9749, 0x9751, 0x50E2, - 0x9752, 0x9752, 0x0C5D, 0x9753, 0x9753, 0x1D60, 0x9754, 0x9755, 0x50EB, - 0x9756, 0x9756, 0x08E7, 0x9757, 0x9758, 0x50ED, 0x9759, 0x9759, 0x08E1, - 0x975A, 0x975A, 0x260B, 0x975B, 0x975B, 0x05C6, 0x975C, 0x975D, 0x50EF, - 0x975E, 0x975E, 0x0664, 0x975F, 0x975F, 0x50F1, 0x9760, 0x9760, 0x094C, - 0x9761, 0x9761, 0x0AD7, 0x9762, 0x9762, 0x0AEB, 0x9763, 0x9764, 0x50F2, - 0x9765, 0x9765, 0x1282, 0x9766, 0x9767, 0x50F4, 0x9768, 0x9768, 0x22C3, - 0x9769, 0x9769, 0x06EA, 0x976A, 0x9772, 0x50F6, 0x9773, 0x9773, 0x08CA, - 0x9774, 0x9774, 0x0FCE, 0x9775, 0x9775, 0x50FF, 0x9776, 0x9776, 0x03DB, - 0x9777, 0x977B, 0x5100, 0x977C, 0x977C, 0x1DC8, 0x977D, 0x9784, 0x5105, - 0x9785, 0x9785, 0x1DC9, 0x9786, 0x978A, 0x510D, 0x978B, 0x978B, 0x0F77, - 0x978C, 0x978C, 0x5112, 0x978D, 0x978D, 0x03BB, 0x978E, 0x978E, 0x5113, - 0x978F, 0x978F, 0x1F23, 0x9790, 0x9790, 0x5114, 0x9791, 0x9792, 0x1DCA, - 0x9793, 0x9793, 0x5115, 0x9794, 0x9794, 0x1DCC, 0x9795, 0x9797, 0x5116, - 0x9798, 0x9798, 0x0C47, 0x9799, 0x979F, 0x5119, 0x97A0, 0x97A0, 0x08FE, - 0x97A1, 0x97A2, 0x5120, 0x97A3, 0x97A3, 0x1DCF, 0x97A4, 0x97A5, 0x5122, - 0x97A6, 0x97A6, 0x2695, 0x97A7, 0x97AA, 0x5124, 0x97AB, 0x97AB, 0x1DCE, - 0x97AC, 0x97AC, 0x5128, 0x97AD, 0x97AD, 0x0447, 0x97AE, 0x97AE, 0x5129, - 0x97AF, 0x97AF, 0x1DCD, 0x97B0, 0x97B1, 0x512A, 0x97B2, 0x97B2, 0x1DD0, - 0x97B3, 0x97B3, 0x512C, 0x97B4, 0x97B4, 0x1DD1, 0x97B5, 0x97BC, 0x512D, - 0x97BD, 0x97BD, 0x265E, 0x97BE, 0x97C2, 0x5135, 0x97C3, 0x97C3, 0x265D, - 0x97C4, 0x97C5, 0x513A, 0x97C6, 0x97C6, 0x2692, 0x97C7, 0x97C8, 0x513C, - 0x97C9, 0x97C9, 0x265F, 0x97CA, 0x97CA, 0x513E, 0x97CB, 0x97CB, 0x218D, - 0x97CC, 0x97CC, 0x20FD, 0x97CD, 0x97D2, 0x513F, 0x97D3, 0x97D3, 0x1F40, - 0x97D4, 0x97D8, 0x5145, 0x97D9, 0x97D9, 0x2465, 0x97DA, 0x97DB, 0x514A, - 0x97DC, 0x97DC, 0x2467, 0x97DD, 0x97DD, 0x514C, 0x97DE, 0x97DE, 0x2466, - 0x97DF, 0x97E5, 0x514D, 0x97E6, 0x97E6, 0x0EB3, 0x97E7, 0x97E7, 0x0CA8, - 0x97E8, 0x97E8, 0x5154, 0x97E9, 0x97E9, 0x0762, 0x97EA, 0x97EC, 0x184E, - 0x97ED, 0x97ED, 0x08F1, 0x97EE, 0x97F2, 0x5155, 0x97F3, 0x97F3, 0x107B, - 0x97F4, 0x97F4, 0x515A, 0x97F5, 0x97F5, 0x1112, 0x97F6, 0x97F6, 0x0D11, - 0x97F7, 0x97FE, 0x515B, 0x97FF, 0x97FF, 0x21C9, 0x9800, 0x9800, 0x5163, - 0x9801, 0x9801, 0x2209, 0x9802, 0x9802, 0x1EC9, 0x9803, 0x9803, 0x20E9, - 0x9804, 0x9804, 0x5164, 0x9805, 0x9805, 0x21CA, 0x9806, 0x9806, 0x2146, - 0x9807, 0x9807, 0x25C5, 0x9808, 0x9808, 0x21DC, 0x9809, 0x9809, 0x5165, - 0x980A, 0x980A, 0x245E, 0x980B, 0x980B, 0x5166, 0x980C, 0x980C, 0x214F, - 0x980D, 0x980D, 0x5167, 0x980E, 0x980F, 0x25C6, 0x9810, 0x9810, 0x2241, - 0x9811, 0x9811, 0x218A, 0x9812, 0x9812, 0x1E2F, 0x9813, 0x9813, 0x1EDC, - 0x9814, 0x9816, 0x5168, 0x9817, 0x9817, 0x20BF, 0x9818, 0x9818, 0x2034, - 0x9819, 0x981B, 0x516B, 0x981C, 0x981C, 0x25C9, 0x981D, 0x9820, 0x516E, - 0x9821, 0x9821, 0x25C8, 0x9822, 0x9823, 0x5172, 0x9824, 0x9824, 0x220E, - 0x9825, 0x9825, 0x5174, 0x9826, 0x9826, 0x25CB, 0x9827, 0x982C, 0x5175, - 0x982D, 0x982D, 0x217D, 0x982E, 0x982F, 0x517B, 0x9830, 0x9830, 0x1F7E, - 0x9831, 0x9836, 0x517D, 0x9837, 0x9837, 0x25CC, 0x9838, 0x9838, 0x1FC3, - 0x9839, 0x983A, 0x5183, 0x983B, 0x983B, 0x20B9, 0x983C, 0x983C, 0x5185, - 0x983D, 0x983D, 0x2181, 0x983E, 0x9845, 0x5186, 0x9846, 0x9846, 0x1FDA, - 0x9847, 0x984B, 0x518E, 0x984C, 0x984C, 0x2173, 0x984D, 0x984D, 0x1EE1, - 0x984E, 0x984E, 0x25CD, 0x984F, 0x9852, 0x5193, 0x9853, 0x9853, 0x25CE, - 0x9854, 0x9854, 0x21F6, 0x9855, 0x9857, 0x5197, 0x9858, 0x9858, 0x224B, - 0x9859, 0x9859, 0x25D1, 0x985A, 0x985A, 0x519A, 0x985B, 0x985B, 0x1EC0, - 0x985C, 0x985D, 0x519B, 0x985E, 0x985E, 0x2008, 0x985F, 0x9861, 0x519D, - 0x9862, 0x9862, 0x25D0, 0x9863, 0x9864, 0x51A0, 0x9865, 0x9865, 0x25D2, - 0x9866, 0x9866, 0x51A2, 0x9867, 0x9867, 0x1F2A, 0x9868, 0x986A, 0x51A3, - 0x986B, 0x986B, 0x1E72, 0x986C, 0x986C, 0x25D3, 0x986D, 0x986E, 0x51A6, - 0x986F, 0x986F, 0x21BE, 0x9870, 0x9870, 0x25D4, 0x9871, 0x9871, 0x2044, - 0x9872, 0x9872, 0x51A8, 0x9873, 0x9873, 0x25CF, 0x9874, 0x9874, 0x20F3, - 0x9875, 0x9875, 0x103A, 0x9876, 0x9876, 0x05E4, 0x9877, 0x9877, 0x0C67, - 0x9878, 0x9878, 0x1BE0, 0x9879, 0x9879, 0x0F5B, 0x987A, 0x987A, 0x0DA8, - 0x987B, 0x987B, 0x0FB6, 0x987C, 0x987C, 0x1827, 0x987D, 0x987D, 0x0E98, - 0x987E, 0x987E, 0x0724, 0x987F, 0x987F, 0x0618, 0x9880, 0x9880, 0x1BE1, - 0x9881, 0x9881, 0x03EF, 0x9882, 0x9882, 0x0DC1, 0x9883, 0x9883, 0x1BE2, - 0x9884, 0x9884, 0x10E7, 0x9885, 0x9885, 0x0A54, 0x9886, 0x9886, 0x0A35, - 0x9887, 0x9887, 0x0BE3, 0x9888, 0x9888, 0x08E0, 0x9889, 0x9889, 0x1BE3, - 0x988A, 0x988A, 0x0848, 0x988B, 0x988B, 0x51A9, 0x988C, 0x988D, 0x1BE4, - 0x988E, 0x988E, 0x51AA, 0x988F, 0x988F, 0x1BE6, 0x9890, 0x9890, 0x104A, - 0x9891, 0x9891, 0x0BD4, 0x9892, 0x9892, 0x51AB, 0x9893, 0x9893, 0x0E78, - 0x9894, 0x9894, 0x1BE7, 0x9895, 0x9895, 0x51AC, 0x9896, 0x9896, 0x1096, - 0x9897, 0x9897, 0x0952, 0x9898, 0x9898, 0x0E35, 0x9899, 0x9899, 0x51AD, - 0x989A, 0x989B, 0x1BE8, 0x989C, 0x989C, 0x0FFE, 0x989D, 0x989D, 0x062D, - 0x989E, 0x989F, 0x1BEA, 0x98A0, 0x98A0, 0x05C0, 0x98A1, 0x98A2, 0x1BEC, - 0x98A3, 0x98A3, 0x51AE, 0x98A4, 0x98A4, 0x04C3, 0x98A5, 0x98A6, 0x1BEE, - 0x98A7, 0x98A7, 0x0C82, 0x98A8, 0x98A8, 0x1F00, 0x98A9, 0x98AD, 0x51AF, - 0x98AE, 0x98AF, 0x24CC, 0x98B0, 0x98B0, 0x51B4, 0x98B1, 0x98B1, 0x2698, - 0x98B2, 0x98B2, 0x51B5, 0x98B3, 0x98B3, 0x2678, 0x98B4, 0x98B5, 0x51B6, - 0x98B6, 0x98B6, 0x24CE, 0x98B7, 0x98BB, 0x51B8, 0x98BC, 0x98BC, 0x24CF, - 0x98BD, 0x98C3, 0x51BD, 0x98C4, 0x98C4, 0x20B8, 0x98C5, 0x98C5, 0x51C4, - 0x98C6, 0x98C6, 0x24D0, 0x98C7, 0x98C7, 0x51C5, 0x98C8, 0x98C8, 0x24D1, - 0x98C9, 0x98CD, 0x51C6, 0x98CE, 0x98CE, 0x0684, 0x98CF, 0x98D0, 0x51CB, - 0x98D1, 0x98D3, 0x19B7, 0x98D4, 0x98D4, 0x51CD, 0x98D5, 0x98D5, 0x19BA, - 0x98D6, 0x98D7, 0x51CE, 0x98D8, 0x98D8, 0x0BCD, 0x98D9, 0x98DA, 0x19BB, - 0x98DB, 0x98DB, 0x1EF4, 0x98DC, 0x98DD, 0x51D0, 0x98DE, 0x98DE, 0x0666, - 0x98DF, 0x98DF, 0x0D4A, 0x98E0, 0x98E0, 0x239B, 0x98E1, 0x98E1, 0x51D2, - 0x98E2, 0x98E2, 0x267E, 0x98E3, 0x98E6, 0x51D3, 0x98E7, 0x98E7, 0x161A, - 0x98E8, 0x98E8, 0x1DE7, 0x98E9, 0x98E9, 0x239D, 0x98EA, 0x98EB, 0x239F, - 0x98EC, 0x98EC, 0x51D7, 0x98ED, 0x98ED, 0x23A1, 0x98EE, 0x98EE, 0x51D8, - 0x98EF, 0x98EF, 0x1EF1, 0x98F0, 0x98F1, 0x51D9, 0x98F2, 0x98F2, 0x221E, - 0x98F3, 0x98F3, 0x51DB, 0x98F4, 0x98F4, 0x23A2, 0x98F5, 0x98FB, 0x51DC, - 0x98FC, 0x98FC, 0x214B, 0x98FD, 0x98FD, 0x1E36, 0x98FE, 0x98FE, 0x2135, - 0x98FF, 0x98FF, 0x51E3, 0x9900, 0x9902, 0x51E4, 0x9903, 0x9903, 0x1FAD, - 0x9904, 0x9904, 0x51E7, 0x9905, 0x9905, 0x1E53, 0x9906, 0x9908, 0x51E8, - 0x9909, 0x9909, 0x23A3, 0x990A, 0x990A, 0x2203, 0x990B, 0x990B, 0x51EB, - 0x990C, 0x990C, 0x1EE7, 0x990D, 0x990D, 0x1DE8, 0x990E, 0x990F, 0x51EC, - 0x9910, 0x9910, 0x0494, 0x9911, 0x9911, 0x23A4, 0x9912, 0x9912, 0x2097, - 0x9913, 0x9913, 0x1EE4, 0x9914, 0x9917, 0x51EE, 0x9918, 0x9918, 0x2238, - 0x9919, 0x991A, 0x51F2, 0x991B, 0x991B, 0x23A5, 0x991C, 0x991D, 0x51F4, - 0x991E, 0x991E, 0x1F9A, 0x991F, 0x9920, 0x51F6, 0x9921, 0x9921, 0x21C3, - 0x9922, 0x9927, 0x51F8, 0x9928, 0x9928, 0x1F2E, 0x9929, 0x992D, 0x51FE, - 0x992E, 0x992E, 0x1DE9, 0x992F, 0x9932, 0x5203, 0x9933, 0x9933, 0x239C, - 0x9934, 0x9936, 0x5207, 0x9937, 0x9937, 0x23A6, 0x9938, 0x993B, 0x520A, - 0x993C, 0x993C, 0x239E, 0x993D, 0x993D, 0x520E, 0x993E, 0x993E, 0x2035, - 0x993F, 0x993F, 0x23A7, 0x9940, 0x9942, 0x520F, 0x9943, 0x9943, 0x23A8, - 0x9944, 0x9944, 0x5212, 0x9945, 0x9945, 0x2075, 0x9946, 0x9947, 0x5213, - 0x9948, 0x994A, 0x23A9, 0x994B, 0x994B, 0x1FEB, 0x994C, 0x994C, 0x23AC, - 0x994D, 0x9950, 0x5215, 0x9951, 0x9951, 0x1F6A, 0x9952, 0x9952, 0x20F9, - 0x9953, 0x9953, 0x5219, 0x9954, 0x9954, 0x1DEB, 0x9955, 0x9955, 0x1DEA, - 0x9956, 0x9956, 0x521A, 0x9957, 0x9957, 0x2666, 0x9958, 0x995B, 0x521B, - 0x995C, 0x995C, 0x2667, 0x995D, 0x995D, 0x521F, 0x995E, 0x995E, 0x1E6C, - 0x995F, 0x9961, 0x5220, 0x9962, 0x9962, 0x23AD, 0x9963, 0x9963, 0x161D, - 0x9964, 0x9964, 0x5223, 0x9965, 0x9965, 0x0815, 0x9966, 0x9966, 0x5224, - 0x9967, 0x996C, 0x161E, 0x996D, 0x996D, 0x0656, 0x996E, 0x996E, 0x1082, - 0x996F, 0x996F, 0x0875, 0x9970, 0x9970, 0x0D65, 0x9971, 0x9971, 0x040E, - 0x9972, 0x9972, 0x0DBC, 0x9973, 0x9973, 0x5225, 0x9974, 0x9974, 0x1624, - 0x9975, 0x9975, 0x063B, 0x9976, 0x9976, 0x0C9F, 0x9977, 0x9977, 0x1625, - 0x9978, 0x9979, 0x5226, 0x997A, 0x997A, 0x0899, 0x997B, 0x997B, 0x5228, - 0x997C, 0x997C, 0x0466, 0x997D, 0x997D, 0x1626, 0x997E, 0x997E, 0x5229, - 0x997F, 0x997F, 0x0635, 0x9980, 0x9980, 0x1627, 0x9981, 0x9981, 0x0B3C, - 0x9982, 0x9983, 0x522A, 0x9984, 0x9984, 0x1628, 0x9985, 0x9985, 0x0F47, - 0x9986, 0x9986, 0x0736, 0x9987, 0x9987, 0x1629, 0x9988, 0x9988, 0x098C, - 0x9989, 0x9989, 0x522C, 0x998A, 0x998A, 0x162A, 0x998B, 0x998B, 0x04BD, - 0x998C, 0x998C, 0x522D, 0x998D, 0x998D, 0x162B, 0x998E, 0x998E, 0x522E, - 0x998F, 0x998F, 0x0A3C, 0x9990, 0x9991, 0x162C, 0x9992, 0x9992, 0x0A9F, - 0x9993, 0x9995, 0x162E, 0x9996, 0x9996, 0x0D6E, 0x9997, 0x9997, 0x126E, - 0x9998, 0x9998, 0x12F9, 0x9999, 0x9999, 0x0F50, 0x999A, 0x99A4, 0x522F, - 0x99A5, 0x99A5, 0x1B2B, 0x99A6, 0x99A7, 0x523A, 0x99A8, 0x99A8, 0x13DE, - 0x99A9, 0x99AB, 0x523C, 0x99AC, 0x99AC, 0x206D, 0x99AD, 0x99AD, 0x2242, - 0x99AE, 0x99AE, 0x1F02, 0x99AF, 0x99B0, 0x523F, 0x99B1, 0x99B1, 0x2183, - 0x99B2, 0x99B2, 0x5241, 0x99B3, 0x99B3, 0x1E85, 0x99B4, 0x99B4, 0x21E9, - 0x99B5, 0x99C0, 0x5242, 0x99C1, 0x99C1, 0x1E57, 0x99C2, 0x99CF, 0x524E, - 0x99D0, 0x99D0, 0x22A5, 0x99D1, 0x99D1, 0x2407, 0x99D2, 0x99D2, 0x1FCA, - 0x99D3, 0x99D3, 0x525C, 0x99D4, 0x99D4, 0x2402, 0x99D5, 0x99D5, 0x1F82, - 0x99D6, 0x99D7, 0x525D, 0x99D8, 0x99D8, 0x2408, 0x99D9, 0x99D9, 0x2404, - 0x99DA, 0x99DA, 0x525F, 0x99DB, 0x99DB, 0x2131, 0x99DC, 0x99DC, 0x5260, - 0x99DD, 0x99DD, 0x2184, 0x99DE, 0x99DE, 0x5261, 0x99DF, 0x99DF, 0x2403, - 0x99E0, 0x99E0, 0x5262, 0x99E1, 0x99E1, 0x206E, 0x99E2, 0x99E2, 0x240B, - 0x99E3, 0x99EC, 0x5263, 0x99ED, 0x99ED, 0x1F3F, 0x99EE, 0x99F0, 0x526D, - 0x99F1, 0x99F1, 0x2067, 0x99F2, 0x99FE, 0x5270, 0x99FF, 0x99FF, 0x1FD7, - 0x9A00, 0x9A00, 0x527D, 0x9A01, 0x9A01, 0x1E83, 0x9A02, 0x9A04, 0x527E, - 0x9A05, 0x9A05, 0x240F, 0x9A06, 0x9A0C, 0x5281, 0x9A0D, 0x9A0D, 0x240E, - 0x9A0E, 0x9A0E, 0x20C7, 0x9A0F, 0x9A0F, 0x240D, 0x9A10, 0x9A15, 0x5288, - 0x9A16, 0x9A16, 0x2412, 0x9A17, 0x9A18, 0x528E, 0x9A19, 0x9A19, 0x20B7, - 0x9A1A, 0x9A2A, 0x5290, 0x9A2B, 0x9A2B, 0x23F0, 0x9A2C, 0x9A2C, 0x52A1, - 0x9A2D, 0x9A2D, 0x2411, 0x9A2E, 0x9A2E, 0x2414, 0x9A2F, 0x9A2F, 0x52A2, - 0x9A30, 0x9A30, 0x2170, 0x9A31, 0x9A35, 0x52A3, 0x9A36, 0x9A36, 0x2405, - 0x9A37, 0x9A37, 0x210C, 0x9A38, 0x9A38, 0x2415, 0x9A39, 0x9A3D, 0x52A8, - 0x9A3E, 0x9A3E, 0x2066, 0x9A3F, 0x9A3F, 0x52AD, 0x9A40, 0x9A40, 0x2352, - 0x9A41, 0x9A41, 0x2413, 0x9A42, 0x9A42, 0x2410, 0x9A43, 0x9A44, 0x2416, - 0x9A45, 0x9A45, 0x20F1, 0x9A46, 0x9A49, 0x52AE, 0x9A4A, 0x9A4A, 0x240A, - 0x9A4B, 0x9A4C, 0x52B2, 0x9A4D, 0x9A4D, 0x2409, 0x9A4E, 0x9A4E, 0x52B4, - 0x9A4F, 0x9A4F, 0x2418, 0x9A50, 0x9A54, 0x52B5, 0x9A55, 0x9A55, 0x1FA7, - 0x9A56, 0x9A56, 0x52BA, 0x9A57, 0x9A57, 0x21FC, 0x9A58, 0x9A59, 0x52BB, - 0x9A5A, 0x9A5A, 0x1FC1, 0x9A5B, 0x9A5B, 0x2406, 0x9A5C, 0x9A5E, 0x52BD, - 0x9A5F, 0x9A5F, 0x229C, 0x9A60, 0x9A61, 0x52C0, 0x9A62, 0x9A62, 0x204E, - 0x9A63, 0x9A63, 0x52C2, 0x9A64, 0x9A64, 0x241A, 0x9A65, 0x9A65, 0x2419, - 0x9A66, 0x9A69, 0x52C3, 0x9A6A, 0x9A6A, 0x240C, 0x9A6B, 0x9A6B, 0x52C7, - 0x9A6C, 0x9A6C, 0x0A94, 0x9A6D, 0x9A6D, 0x10E9, 0x9A6E, 0x9A6E, 0x0E85, - 0x9A6F, 0x9A6F, 0x0FDA, 0x9A70, 0x9A70, 0x0500, 0x9A71, 0x9A71, 0x0C7A, - 0x9A72, 0x9A72, 0x52C8, 0x9A73, 0x9A73, 0x047C, 0x9A74, 0x9A74, 0x0A66, - 0x9A75, 0x9A75, 0x17BA, 0x9A76, 0x9A76, 0x0D52, 0x9A77, 0x9A78, 0x17BB, - 0x9A79, 0x9A79, 0x0903, 0x9A7A, 0x9A7A, 0x17BD, 0x9A7B, 0x9A7B, 0x1201, - 0x9A7C, 0x9A7C, 0x0E86, 0x9A7D, 0x9A7D, 0x17BF, 0x9A7E, 0x9A7E, 0x0850, - 0x9A7F, 0x9A7F, 0x17BE, 0x9A80, 0x9A81, 0x17C0, 0x9A82, 0x9A82, 0x0A95, - 0x9A83, 0x9A83, 0x52C9, 0x9A84, 0x9A84, 0x088F, 0x9A85, 0x9A85, 0x17C2, - 0x9A86, 0x9A86, 0x0A8D, 0x9A87, 0x9A87, 0x075E, 0x9A88, 0x9A88, 0x17C3, - 0x9A89, 0x9A89, 0x52CA, 0x9A8A, 0x9A8A, 0x17C4, 0x9A8B, 0x9A8B, 0x04F7, - 0x9A8C, 0x9A8C, 0x1012, 0x9A8D, 0x9A8E, 0x52CB, 0x9A8F, 0x9A8F, 0x0932, - 0x9A90, 0x9A90, 0x17C5, 0x9A91, 0x9A91, 0x0C0E, 0x9A92, 0x9A93, 0x17C6, - 0x9A94, 0x9A95, 0x52CD, 0x9A96, 0x9A96, 0x17C8, 0x9A97, 0x9A97, 0x0BCC, - 0x9A98, 0x9A98, 0x17C9, 0x9A99, 0x9A99, 0x52CF, 0x9A9A, 0x9A9A, 0x0CE0, - 0x9A9B, 0x9A9D, 0x17CA, 0x9A9E, 0x9A9E, 0x1735, 0x9A9F, 0x9AA0, 0x17CD, - 0x9AA1, 0x9AA1, 0x0A89, 0x9AA2, 0x9AA3, 0x17CF, 0x9AA4, 0x9AA4, 0x11E7, - 0x9AA5, 0x9AA5, 0x17D1, 0x9AA6, 0x9AA6, 0x52D0, 0x9AA7, 0x9AA7, 0x17D2, - 0x9AA8, 0x9AA8, 0x0720, 0x9AA9, 0x9AAE, 0x52D1, 0x9AAF, 0x9AAF, 0x1E29, - 0x9AB0, 0x9AB0, 0x1DD3, 0x9AB1, 0x9AB1, 0x1DD2, 0x9AB2, 0x9AB5, 0x52D7, - 0x9AB6, 0x9AB6, 0x1DD6, 0x9AB7, 0x9AB7, 0x1DD4, 0x9AB8, 0x9AB8, 0x0758, - 0x9AB9, 0x9AB9, 0x52DB, 0x9ABA, 0x9ABA, 0x1DD7, 0x9ABB, 0x9ABB, 0x52DC, - 0x9ABC, 0x9ABC, 0x1DD8, 0x9ABD, 0x9ABF, 0x52DD, 0x9AC0, 0x9AC0, 0x1DDA, - 0x9AC1, 0x9AC1, 0x1DD9, 0x9AC2, 0x9AC2, 0x1DDC, 0x9AC3, 0x9AC4, 0x52E0, - 0x9AC5, 0x9AC5, 0x1DDB, 0x9AC6, 0x9ACA, 0x52E2, 0x9ACB, 0x9ACC, 0x1DDD, - 0x9ACD, 0x9ACE, 0x52E7, 0x9ACF, 0x9ACF, 0x2661, 0x9AD0, 0x9AD0, 0x52E9, - 0x9AD1, 0x9AD1, 0x1DDF, 0x9AD2, 0x9AD2, 0x26A4, 0x9AD3, 0x9AD3, 0x0DDD, - 0x9AD4, 0x9AD4, 0x2174, 0x9AD5, 0x9AD5, 0x2663, 0x9AD6, 0x9AD6, 0x2662, - 0x9AD7, 0x9AD7, 0x52EA, 0x9AD8, 0x9AD8, 0x06DA, 0x9AD9, 0x9ADE, 0x52EB, - 0x9ADF, 0x9ADF, 0x1DEC, 0x9AE0, 0x9AE0, 0x52F1, 0x9AE1, 0x9AE1, 0x1DED, - 0x9AE2, 0x9AE5, 0x52F2, 0x9AE6, 0x9AE6, 0x1DEE, 0x9AE7, 0x9AEA, 0x52F6, - 0x9AEB, 0x9AEB, 0x1DF0, 0x9AEC, 0x9AEC, 0x52FA, 0x9AED, 0x9AED, 0x1DF2, - 0x9AEE, 0x9AEE, 0x2675, 0x9AEF, 0x9AEF, 0x1DEF, 0x9AF0, 0x9AF8, 0x52FB, - 0x9AF9, 0x9AF9, 0x1DF3, 0x9AFA, 0x9AFA, 0x5304, 0x9AFB, 0x9AFB, 0x1DF1, - 0x9AFC, 0x9AFF, 0x5305, 0x9B00, 0x9B02, 0x5309, 0x9B03, 0x9B03, 0x1234, - 0x9B04, 0x9B05, 0x530C, 0x9B06, 0x9B06, 0x214C, 0x9B07, 0x9B07, 0x530E, - 0x9B08, 0x9B08, 0x1DF4, 0x9B09, 0x9B0C, 0x530F, 0x9B0D, 0x9B0D, 0x267A, - 0x9B0E, 0x9B0E, 0x5313, 0x9B0F, 0x9B0F, 0x1DF5, 0x9B10, 0x9B12, 0x5314, - 0x9B13, 0x9B13, 0x1DF6, 0x9B14, 0x9B19, 0x5317, 0x9B1A, 0x9B1A, 0x26A0, - 0x9B1B, 0x9B1E, 0x531D, 0x9B1F, 0x9B1F, 0x1DF7, 0x9B20, 0x9B21, 0x5321, - 0x9B22, 0x9B22, 0x2668, 0x9B23, 0x9B23, 0x1DF8, 0x9B24, 0x9B24, 0x5323, - 0x9B25, 0x9B25, 0x1ED0, 0x9B26, 0x9B26, 0x5324, 0x9B27, 0x9B27, 0x2096, - 0x9B28, 0x9B28, 0x5325, 0x9B29, 0x9B29, 0x23CC, 0x9B2A, 0x9B2D, 0x5326, - 0x9B2E, 0x9B2E, 0x23C8, 0x9B2F, 0x9B2F, 0x139B, 0x9B30, 0x9B30, 0x532A, - 0x9B31, 0x9B31, 0x223E, 0x9B32, 0x9B32, 0x1260, 0x9B33, 0x9B3A, 0x532B, - 0x9B3B, 0x9B3B, 0x1773, 0x9B3C, 0x9B3C, 0x0746, 0x9B3D, 0x9B40, 0x5333, - 0x9B41, 0x9B41, 0x098A, 0x9B42, 0x9B42, 0x07FF, 0x9B43, 0x9B43, 0x1DE1, - 0x9B44, 0x9B44, 0x0BE6, 0x9B45, 0x9B45, 0x1DE0, 0x9B46, 0x9B46, 0x5337, - 0x9B47, 0x9B47, 0x1DE2, 0x9B48, 0x9B48, 0x1DE4, 0x9B49, 0x9B49, 0x1DE3, - 0x9B4A, 0x9B4C, 0x5338, 0x9B4D, 0x9B4D, 0x1DE5, 0x9B4E, 0x9B4E, 0x2665, - 0x9B4F, 0x9B4F, 0x0EC9, 0x9B50, 0x9B50, 0x533B, 0x9B51, 0x9B51, 0x1DE6, - 0x9B52, 0x9B53, 0x533C, 0x9B54, 0x9B54, 0x0B0A, 0x9B55, 0x9B57, 0x533E, - 0x9B58, 0x9B58, 0x2664, 0x9B59, 0x9B59, 0x5341, 0x9B5A, 0x9B5A, 0x2239, - 0x9B5B, 0x9B6E, 0x5342, 0x9B6F, 0x9B6F, 0x204A, 0x9B70, 0x9B73, 0x5356, - 0x9B74, 0x9B74, 0x261F, 0x9B75, 0x9B76, 0x535A, 0x9B77, 0x9B77, 0x261E, - 0x9B78, 0x9B80, 0x535C, 0x9B81, 0x9B81, 0x2620, 0x9B82, 0x9B82, 0x5365, - 0x9B83, 0x9B83, 0x2621, 0x9B84, 0x9B8D, 0x5366, 0x9B8E, 0x9B8E, 0x2622, - 0x9B8F, 0x9B8F, 0x5370, 0x9B90, 0x9B90, 0x2627, 0x9B91, 0x9B91, 0x1E39, - 0x9B92, 0x9B92, 0x2625, 0x9B93, 0x9B99, 0x5371, 0x9B9A, 0x9B9A, 0x2629, - 0x9B9B, 0x9B9C, 0x5378, 0x9B9D, 0x9B9D, 0x262E, 0x9B9E, 0x9B9E, 0x262B, - 0x9B9F, 0x9BA9, 0x537A, 0x9BAA, 0x9BAA, 0x262A, 0x9BAB, 0x9BAB, 0x262D, - 0x9BAC, 0x9BAC, 0x5385, 0x9BAD, 0x9BAD, 0x2628, 0x9BAE, 0x9BAE, 0x21B9, - 0x9BAF, 0x9BBF, 0x5386, 0x9BC0, 0x9BC0, 0x2636, 0x9BC1, 0x9BC1, 0x2630, - 0x9BC2, 0x9BC6, 0x5397, 0x9BC7, 0x9BC7, 0x2638, 0x9BC8, 0x9BC8, 0x539C, - 0x9BC9, 0x9BC9, 0x200D, 0x9BCA, 0x9BCA, 0x2637, 0x9BCB, 0x9BD3, 0x539D, - 0x9BD4, 0x9BD4, 0x2645, 0x9BD5, 0x9BD5, 0x53A6, 0x9BD6, 0x9BD6, 0x263A, - 0x9BD7, 0x9BDA, 0x53A7, 0x9BDB, 0x9BDB, 0x2643, 0x9BDC, 0x9BDC, 0x53AB, - 0x9BDD, 0x9BDD, 0x2640, 0x9BDE, 0x9BE0, 0x53AC, 0x9BE1, 0x9BE1, 0x263D, - 0x9BE2, 0x9BE2, 0x2641, 0x9BE3, 0x9BE3, 0x53AF, 0x9BE4, 0x9BE4, 0x263E, - 0x9BE5, 0x9BE6, 0x53B0, 0x9BE7, 0x9BE7, 0x263F, 0x9BE8, 0x9BE8, 0x1FC0, - 0x9BE9, 0x9BE9, 0x53B2, 0x9BEA, 0x9BEB, 0x263B, 0x9BEC, 0x9BEF, 0x53B3, - 0x9BF0, 0x9BF0, 0x2642, 0x9BF1, 0x9BF3, 0x53B7, 0x9BF4, 0x9BF4, 0x2644, - 0x9BF5, 0x9BFC, 0x53BA, 0x9BFD, 0x9BFD, 0x2639, 0x9BFE, 0x9BFE, 0x53C2, - 0x9BFF, 0x9BFF, 0x264C, 0x9C00, 0x9C07, 0x53C3, 0x9C08, 0x9C08, 0x2647, - 0x9C09, 0x9C09, 0x264B, 0x9C0A, 0x9C0C, 0x53CB, 0x9C0D, 0x9C0D, 0x2649, - 0x9C0E, 0x9C0F, 0x53CE, 0x9C10, 0x9C10, 0x2648, 0x9C11, 0x9C11, 0x53D0, - 0x9C12, 0x9C12, 0x264A, 0x9C13, 0x9C13, 0x2108, 0x9C14, 0x9C1F, 0x53D1, - 0x9C20, 0x9C20, 0x264D, 0x9C21, 0x9C22, 0x53DD, 0x9C23, 0x9C23, 0x2634, - 0x9C24, 0x9C24, 0x53DF, 0x9C25, 0x9C25, 0x2651, 0x9C26, 0x9C27, 0x53E0, - 0x9C28, 0x9C28, 0x2650, 0x9C29, 0x9C29, 0x2652, 0x9C2A, 0x9C2C, 0x53E2, - 0x9C2D, 0x9C2D, 0x264F, 0x9C2E, 0x9C30, 0x53E5, 0x9C31, 0x9C31, 0x2632, - 0x9C32, 0x9C32, 0x264E, 0x9C33, 0x9C33, 0x2653, 0x9C34, 0x9C34, 0x53E8, - 0x9C35, 0x9C35, 0x2657, 0x9C36, 0x9C36, 0x53E9, 0x9C37, 0x9C37, 0x2635, - 0x9C38, 0x9C38, 0x53EA, 0x9C39, 0x9C39, 0x2633, 0x9C3A, 0x9C3A, 0x53EB, - 0x9C3B, 0x9C3B, 0x2656, 0x9C3C, 0x9C3D, 0x53EC, 0x9C3E, 0x9C3E, 0x2654, - 0x9C3F, 0x9C44, 0x53EE, 0x9C45, 0x9C45, 0x2658, 0x9C46, 0x9C47, 0x53F4, - 0x9C48, 0x9C48, 0x2655, 0x9C49, 0x9C49, 0x1E4D, 0x9C4A, 0x9C51, 0x53F6, - 0x9C52, 0x9C52, 0x265B, 0x9C53, 0x9C53, 0x53FE, 0x9C54, 0x9C54, 0x265A, - 0x9C55, 0x9C55, 0x53FF, 0x9C56, 0x9C56, 0x2659, 0x9C57, 0x9C57, 0x202E, - 0x9C58, 0x9C58, 0x262F, 0x9C59, 0x9C5C, 0x5400, 0x9C5D, 0x9C5D, 0x2646, - 0x9C5E, 0x9C5E, 0x5404, 0x9C5F, 0x9C5F, 0x2626, 0x9C60, 0x9C66, 0x5405, - 0x9C67, 0x9C67, 0x265C, 0x9C68, 0x9C6C, 0x540C, 0x9C6D, 0x9C6D, 0x262C, - 0x9C6E, 0x9C77, 0x5411, 0x9C78, 0x9C78, 0x2623, 0x9C79, 0x9C79, 0x541B, - 0x9C7A, 0x9C7A, 0x2631, 0x9C7B, 0x9C7B, 0x541C, 0x9C7C, 0x9C7C, 0x10C8, - 0x9C7D, 0x9C7E, 0x541D, 0x9C7F, 0x9C7F, 0x1D89, 0x9C80, 0x9C80, 0x541F, - 0x9C81, 0x9C81, 0x0A5A, 0x9C82, 0x9C82, 0x1D8A, 0x9C83, 0x9C84, 0x5420, - 0x9C85, 0x9C88, 0x1D8B, 0x9C89, 0x9C8A, 0x5422, 0x9C8B, 0x9C8B, 0x1D90, - 0x9C8C, 0x9C8C, 0x5424, 0x9C8D, 0x9C8D, 0x0414, 0x9C8E, 0x9C8E, 0x1D91, - 0x9C8F, 0x9C8F, 0x5425, 0x9C90, 0x9C92, 0x1D92, 0x9C93, 0x9C93, 0x5426, - 0x9C94, 0x9C95, 0x1D95, 0x9C96, 0x9C99, 0x5427, 0x9C9A, 0x9C9B, 0x1D97, - 0x9C9C, 0x9C9C, 0x0F37, 0x9C9D, 0x9C9D, 0x542B, 0x9C9E, 0x9CA3, 0x1D99, - 0x9CA4, 0x9CA4, 0x09DB, 0x9CA5, 0x9CA9, 0x1D9F, 0x9CAA, 0x9CAA, 0x542C, - 0x9CAB, 0x9CAB, 0x1DA4, 0x9CAC, 0x9CAC, 0x542D, 0x9CAD, 0x9CAE, 0x1DA5, - 0x9CAF, 0x9CAF, 0x542E, 0x9CB0, 0x9CB7, 0x1DA7, 0x9CB8, 0x9CB8, 0x08D7, - 0x9CB9, 0x9CB9, 0x542F, 0x9CBA, 0x9CBD, 0x1DAF, 0x9CBE, 0x9CC2, 0x5430, - 0x9CC3, 0x9CC3, 0x0CD5, 0x9CC4, 0x9CC7, 0x1DB3, 0x9CC8, 0x9CC9, 0x5435, - 0x9CCA, 0x9CD0, 0x1DB7, 0x9CD1, 0x9CD2, 0x5437, 0x9CD3, 0x9CD5, 0x1DBE, - 0x9CD6, 0x9CD6, 0x0457, 0x9CD7, 0x9CD9, 0x1DC1, 0x9CDA, 0x9CDB, 0x5439, - 0x9CDC, 0x9CDD, 0x1DC4, 0x9CDE, 0x9CDE, 0x0A24, 0x9CDF, 0x9CDF, 0x1DC6, - 0x9CE0, 0x9CE1, 0x543B, 0x9CE2, 0x9CE2, 0x1DC7, 0x9CE3, 0x9CE4, 0x543D, - 0x9CE5, 0x9CE5, 0x209C, 0x9CE6, 0x9CE8, 0x543F, 0x9CE9, 0x9CE9, 0x2580, - 0x9CEA, 0x9CEB, 0x5442, 0x9CEC, 0x9CEC, 0x22DC, 0x9CED, 0x9CF2, 0x5444, - 0x9CF3, 0x9CF3, 0x1F05, 0x9CF4, 0x9CF4, 0x208B, 0x9CF5, 0x9CF5, 0x544A, - 0x9CF6, 0x9CF6, 0x2581, 0x9CF7, 0x9CFF, 0x544B, 0x9D00, 0x9D05, 0x5454, - 0x9D06, 0x9D06, 0x2583, 0x9D07, 0x9D07, 0x2582, 0x9D08, 0x9D08, 0x545A, - 0x9D09, 0x9D09, 0x21EE, 0x9D0A, 0x9D14, 0x545B, 0x9D15, 0x9D15, 0x2182, - 0x9D16, 0x9D1A, 0x5466, 0x9D1B, 0x9D1B, 0x2243, 0x9D1C, 0x9D1C, 0x546B, - 0x9D1D, 0x9D1D, 0x2587, 0x9D1E, 0x9D1E, 0x546C, 0x9D1F, 0x9D1F, 0x2588, - 0x9D20, 0x9D22, 0x546D, 0x9D23, 0x9D23, 0x2584, 0x9D24, 0x9D25, 0x5470, - 0x9D26, 0x9D26, 0x21FD, 0x9D27, 0x9D27, 0x5472, 0x9D28, 0x9D28, 0x21EF, - 0x9D29, 0x9D2E, 0x5473, 0x9D2F, 0x9D2F, 0x258A, 0x9D30, 0x9D30, 0x258C, - 0x9D31, 0x9D3A, 0x5479, 0x9D3B, 0x9D3B, 0x1F47, 0x9D3C, 0x9D3E, 0x5483, - 0x9D3F, 0x9D3F, 0x1F1D, 0x9D40, 0x9D41, 0x5486, 0x9D42, 0x9D42, 0x258D, - 0x9D43, 0x9D50, 0x5488, 0x9D51, 0x9D51, 0x1FD0, 0x9D52, 0x9D52, 0x2592, - 0x9D53, 0x9D53, 0x258F, 0x9D54, 0x9D5B, 0x5496, 0x9D5C, 0x9D5C, 0x2594, - 0x9D5D, 0x9D5D, 0x1EE0, 0x9D5E, 0x9D5F, 0x549E, 0x9D60, 0x9D60, 0x2591, - 0x9D61, 0x9D61, 0x2595, 0x9D62, 0x9D69, 0x54A0, 0x9D6A, 0x9D6A, 0x2597, - 0x9D6B, 0x9D6B, 0x54A8, 0x9D6C, 0x9D6C, 0x20B6, 0x9D6D, 0x9D6E, 0x54A9, - 0x9D6F, 0x9D6F, 0x2598, 0x9D70, 0x9D71, 0x54AB, 0x9D72, 0x9D72, 0x20F6, - 0x9D73, 0x9D86, 0x54AD, 0x9D87, 0x9D87, 0x2585, 0x9D88, 0x9D88, 0x54C1, - 0x9D89, 0x9D89, 0x2599, 0x9D8A, 0x9D92, 0x54C2, 0x9D93, 0x9D93, 0x2596, - 0x9D94, 0x9D97, 0x54CB, 0x9D98, 0x9D98, 0x259A, 0x9D99, 0x9D99, 0x54CF, - 0x9D9A, 0x9D9A, 0x259B, 0x9D9B, 0x9DA4, 0x54D0, 0x9DA5, 0x9DA5, 0x259D, - 0x9DA6, 0x9DA8, 0x54DA, 0x9DA9, 0x9DA9, 0x259E, 0x9DAA, 0x9DAE, 0x54DD, - 0x9DAF, 0x9DAF, 0x234C, 0x9DB0, 0x9DB3, 0x54E2, 0x9DB4, 0x9DB4, 0x1F44, - 0x9DB5, 0x9DBA, 0x54E6, 0x9DBB, 0x9DBB, 0x2660, 0x9DBC, 0x9DBC, 0x25A0, - 0x9DBD, 0x9DBF, 0x54EC, 0x9DC0, 0x9DC0, 0x259C, 0x9DC1, 0x9DC1, 0x54EF, - 0x9DC2, 0x9DC2, 0x259F, 0x9DC3, 0x9DC3, 0x54F0, 0x9DC4, 0x9DC4, 0x1F6C, - 0x9DC5, 0x9DD2, 0x54F1, 0x9DD3, 0x9DD3, 0x25A2, 0x9DD4, 0x9DD6, 0x54FF, - 0x9DD7, 0x9DD7, 0x20AE, 0x9DD8, 0x9DD8, 0x5502, 0x9DD9, 0x9DD9, 0x258B, - 0x9DDA, 0x9DDA, 0x25A3, 0x9DDB, 0x9DE4, 0x5503, 0x9DE5, 0x9DE5, 0x2589, - 0x9DE6, 0x9DE6, 0x25A5, 0x9DE7, 0x9DEE, 0x550D, 0x9DEF, 0x9DEF, 0x25A4, - 0x9DF0, 0x9DF1, 0x5515, 0x9DF2, 0x9DF2, 0x25A6, 0x9DF3, 0x9DF3, 0x2593, - 0x9DF4, 0x9DF7, 0x5517, 0x9DF8, 0x9DF8, 0x25A7, 0x9DF9, 0x9DF9, 0x2222, - 0x9DFA, 0x9DFA, 0x25A9, 0x9DFB, 0x9DFF, 0x551B, 0x9E00, 0x9E0B, 0x5520, - 0x9E0C, 0x9E0C, 0x25A8, 0x9E0D, 0x9E14, 0x552C, 0x9E15, 0x9E15, 0x2586, - 0x9E16, 0x9E19, 0x5534, 0x9E1A, 0x9E1A, 0x25A1, 0x9E1B, 0x9E1B, 0x25AA, - 0x9E1C, 0x9E1C, 0x5538, 0x9E1D, 0x9E1D, 0x2590, 0x9E1E, 0x9E1E, 0x258E, - 0x9E1F, 0x9E1F, 0x0B54, 0x9E20, 0x9E20, 0x1B35, 0x9E21, 0x9E21, 0x0819, - 0x9E22, 0x9E22, 0x1B36, 0x9E23, 0x9E23, 0x0AFE, 0x9E24, 0x9E24, 0x5539, - 0x9E25, 0x9E25, 0x0B79, 0x9E26, 0x9E26, 0x0FE4, 0x9E27, 0x9E27, 0x553A, - 0x9E28, 0x9E2C, 0x1B37, 0x9E2D, 0x9E2D, 0x0FE5, 0x9E2E, 0x9E2E, 0x553B, - 0x9E2F, 0x9E2F, 0x1015, 0x9E30, 0x9E30, 0x553C, 0x9E31, 0x9E31, 0x1B3D, - 0x9E32, 0x9E32, 0x1B3C, 0x9E33, 0x9E33, 0x10EA, 0x9E34, 0x9E34, 0x553D, - 0x9E35, 0x9E35, 0x0E83, 0x9E36, 0x9E36, 0x1B3E, 0x9E37, 0x9E37, 0x1B40, - 0x9E38, 0x9E38, 0x1B3F, 0x9E39, 0x9E3A, 0x1B41, 0x9E3B, 0x9E3C, 0x553E, - 0x9E3D, 0x9E3D, 0x06E6, 0x9E3E, 0x9E3E, 0x1B43, 0x9E3F, 0x9E3F, 0x079F, - 0x9E40, 0x9E40, 0x5540, 0x9E41, 0x9E42, 0x1B44, 0x9E43, 0x9E43, 0x0918, - 0x9E44, 0x9E44, 0x1B46, 0x9E45, 0x9E45, 0x062B, 0x9E46, 0x9E49, 0x1B47, - 0x9E4A, 0x9E4A, 0x0C90, 0x9E4B, 0x9E4C, 0x1B4B, 0x9E4D, 0x9E4D, 0x5541, - 0x9E4E, 0x9E4E, 0x1B4D, 0x9E4F, 0x9E4F, 0x0BB5, 0x9E50, 0x9E50, 0x5542, - 0x9E51, 0x9E51, 0x1B4E, 0x9E52, 0x9E54, 0x5543, 0x9E55, 0x9E55, 0x1B4F, - 0x9E56, 0x9E56, 0x5546, 0x9E57, 0x9E57, 0x1B50, 0x9E58, 0x9E58, 0x1DD5, - 0x9E59, 0x9E59, 0x5547, 0x9E5A, 0x9E5C, 0x1B51, 0x9E5D, 0x9E5D, 0x5548, - 0x9E5E, 0x9E5E, 0x1B54, 0x9E5F, 0x9E62, 0x5549, 0x9E63, 0x9E63, 0x1B55, - 0x9E64, 0x9E64, 0x078E, 0x9E65, 0x9E65, 0x554D, 0x9E66, 0x9E6C, 0x1B56, - 0x9E6D, 0x9E6D, 0x1B5E, 0x9E6E, 0x9E6F, 0x554E, 0x9E70, 0x9E70, 0x108A, - 0x9E71, 0x9E71, 0x1B5D, 0x9E72, 0x9E72, 0x5550, 0x9E73, 0x9E73, 0x1B5F, - 0x9E74, 0x9E74, 0x5551, 0x9E75, 0x9E75, 0x2688, 0x9E76, 0x9E78, 0x5552, - 0x9E79, 0x9E79, 0x269E, 0x9E7A, 0x9E7A, 0x25FB, 0x9E7B, 0x9E7B, 0x5555, - 0x9E7C, 0x9E7C, 0x1F8C, 0x9E7D, 0x9E7D, 0x21F4, 0x9E7E, 0x9E7E, 0x1D16, - 0x9E7F, 0x9E7F, 0x0A60, 0x9E80, 0x9E81, 0x5556, 0x9E82, 0x9E82, 0x1DFC, - 0x9E83, 0x9E86, 0x5558, 0x9E87, 0x9E88, 0x1DFD, 0x9E89, 0x9E8A, 0x555C, - 0x9E8B, 0x9E8B, 0x1DFF, 0x9E8C, 0x9E91, 0x555E, 0x9E92, 0x9E92, 0x1E00, - 0x9E93, 0x9E93, 0x0A5B, 0x9E94, 0x9E96, 0x5564, 0x9E97, 0x9E97, 0x200F, - 0x9E98, 0x9E9C, 0x5567, 0x9E9D, 0x9E9D, 0x1E02, 0x9E9E, 0x9E9E, 0x556C, - 0x9E9F, 0x9E9F, 0x1E03, 0x9EA0, 0x9EA4, 0x556D, 0x9EA5, 0x9EA5, 0x2071, - 0x9EA6, 0x9EA6, 0x0A9A, 0x9EA7, 0x9EA8, 0x5572, 0x9EA9, 0x9EA9, 0x25F7, - 0x9EAA, 0x9EAE, 0x5574, 0x9EAF, 0x9EAF, 0x2696, 0x9EB0, 0x9EB3, 0x5579, - 0x9EB4, 0x9EB4, 0x1CEE, 0x9EB5, 0x9EB5, 0x268F, 0x9EB6, 0x9EB7, 0x557D, - 0x9EB8, 0x9EB8, 0x1CED, 0x9EB9, 0x9EBA, 0x557F, 0x9EBB, 0x9EBB, 0x0A90, - 0x9EBC, 0x9EBC, 0x5581, 0x9EBD, 0x9EBE, 0x1DF9, 0x9EBF, 0x9EC3, 0x5582, - 0x9EC4, 0x9EC4, 0x07DB, 0x9EC5, 0x9EC8, 0x5587, 0x9EC9, 0x9EC9, 0x12F8, - 0x9ECA, 0x9ECB, 0x558B, 0x9ECC, 0x9ECC, 0x22DA, 0x9ECD, 0x9ECD, 0x0D89, - 0x9ECE, 0x9ECE, 0x09D3, 0x9ECF, 0x9ECF, 0x1B2A, 0x9ED0, 0x9ED0, 0x558D, - 0x9ED1, 0x9ED1, 0x0791, 0x9ED2, 0x9ED3, 0x558E, 0x9ED4, 0x9ED4, 0x0C2A, - 0x9ED5, 0x9ED7, 0x5590, 0x9ED8, 0x9ED8, 0x0B0F, 0x9ED9, 0x9EDA, 0x5593, - 0x9EDB, 0x9EDD, 0x1E04, 0x9EDE, 0x9EDE, 0x1EC1, 0x9EDF, 0x9EDF, 0x1E08, - 0x9EE0, 0x9EE0, 0x1E07, 0x9EE1, 0x9EE1, 0x5595, 0x9EE2, 0x9EE2, 0x1E09, - 0x9EE3, 0x9EE4, 0x5596, 0x9EE5, 0x9EE5, 0x1E0C, 0x9EE6, 0x9EE6, 0x5598, - 0x9EE7, 0x9EE7, 0x1E0B, 0x9EE8, 0x9EE8, 0x1EB3, 0x9EE9, 0x9EE9, 0x1E0A, - 0x9EEA, 0x9EEA, 0x1E0D, 0x9EEB, 0x9EEE, 0x5599, 0x9EEF, 0x9EEF, 0x1E0E, - 0x9EF0, 0x9EF1, 0x559D, 0x9EF2, 0x9EF2, 0x266A, 0x9EF3, 0x9EF3, 0x559F, - 0x9EF4, 0x9EF4, 0x268A, 0x9EF5, 0x9EF6, 0x55A0, 0x9EF7, 0x9EF7, 0x2669, - 0x9EF8, 0x9EF8, 0x55A2, 0x9EF9, 0x9EF9, 0x1A55, 0x9EFA, 0x9EFA, 0x55A3, - 0x9EFB, 0x9EFC, 0x1A56, 0x9EFD, 0x9EFD, 0x2618, 0x9EFE, 0x9EFE, 0x1D76, - 0x9EFF, 0x9EFF, 0x2619, 0x9F00, 0x9F08, 0x55A4, 0x9F09, 0x9F09, 0x261A, - 0x9F0A, 0x9F0A, 0x55AD, 0x9F0B, 0x9F0B, 0x1D77, 0x9F0C, 0x9F0C, 0x55AE, - 0x9F0D, 0x9F0D, 0x1D78, 0x9F0E, 0x9F0E, 0x05E5, 0x9F0F, 0x9F0F, 0x55AF, - 0x9F10, 0x9F10, 0x1274, 0x9F11, 0x9F12, 0x55B0, 0x9F13, 0x9F13, 0x071D, - 0x9F14, 0x9F14, 0x55B2, 0x9F15, 0x9F15, 0x2673, 0x9F16, 0x9F16, 0x55B3, - 0x9F17, 0x9F17, 0x1271, 0x9F18, 0x9F18, 0x55B4, 0x9F19, 0x9F19, 0x13DF, - 0x9F1A, 0x9F1F, 0x55B5, 0x9F20, 0x9F20, 0x0D8A, 0x9F21, 0x9F21, 0x55BB, - 0x9F22, 0x9F22, 0x1E0F, 0x9F23, 0x9F2B, 0x55BC, 0x9F2C, 0x9F2C, 0x1E10, - 0x9F2D, 0x9F2E, 0x55C5, 0x9F2F, 0x9F2F, 0x1E11, 0x9F30, 0x9F36, 0x55C7, - 0x9F37, 0x9F37, 0x1E13, 0x9F38, 0x9F38, 0x55CE, 0x9F39, 0x9F39, 0x1E12, - 0x9F3A, 0x9F3A, 0x55CF, 0x9F3B, 0x9F3B, 0x0430, 0x9F3C, 0x9F3C, 0x55D0, - 0x9F3D, 0x9F3E, 0x1E14, 0x9F3F, 0x9F43, 0x55D1, 0x9F44, 0x9F44, 0x1E16, - 0x9F45, 0x9F49, 0x55D6, 0x9F4A, 0x9F4A, 0x20C6, 0x9F4B, 0x9F4B, 0x226B, - 0x9F4C, 0x9F4E, 0x55DB, 0x9F4F, 0x9F4F, 0x24D3, 0x9F50, 0x9F50, 0x0C0A, - 0x9F51, 0x9F51, 0x19C2, 0x9F52, 0x9F52, 0x1E86, 0x9F53, 0x9F53, 0x55DE, - 0x9F54, 0x9F54, 0x260F, 0x9F55, 0x9F58, 0x55DF, 0x9F59, 0x9F59, 0x2611, - 0x9F5A, 0x9F5B, 0x55E3, 0x9F5C, 0x9F5C, 0x2613, 0x9F5D, 0x9F5E, 0x55E5, - 0x9F5F, 0x9F5F, 0x2610, 0x9F60, 0x9F60, 0x2612, 0x9F61, 0x9F61, 0x2030, - 0x9F62, 0x9F62, 0x55E7, 0x9F63, 0x9F63, 0x2671, 0x9F64, 0x9F65, 0x55E8, - 0x9F66, 0x9F66, 0x2614, 0x9F67, 0x9F69, 0x55EA, 0x9F6A, 0x9F6A, 0x2616, - 0x9F6B, 0x9F6B, 0x55ED, 0x9F6C, 0x9F6C, 0x2615, 0x9F6D, 0x9F71, 0x55EE, - 0x9F72, 0x9F72, 0x20F2, 0x9F73, 0x9F76, 0x55F3, 0x9F77, 0x9F77, 0x2617, - 0x9F78, 0x9F7E, 0x55F7, 0x9F7F, 0x9F7F, 0x0502, 0x9F80, 0x9F80, 0x1D6D, - 0x9F81, 0x9F82, 0x55FE, 0x9F83, 0x9F83, 0x1D6E, 0x9F84, 0x9F84, 0x0A2D, - 0x9F85, 0x9F8A, 0x1D6F, 0x9F8B, 0x9F8B, 0x0C7E, 0x9F8C, 0x9F8C, 0x1D75, - 0x9F8D, 0x9F8D, 0x2037, 0x9F8E, 0x9F8F, 0x5600, 0x9F90, 0x9F90, 0x20B3, - 0x9F91, 0x9F93, 0x5602, 0x9F94, 0x9F94, 0x1F22, 0x9F95, 0x9F95, 0x24ED, - 0x9F96, 0x9F98, 0x5605, 0x9F99, 0x9F99, 0x0A43, 0x9F9A, 0x9F9A, 0x0701, - 0x9F9B, 0x9F9B, 0x1A54, 0x9F9C, 0x9F9C, 0x1F34, 0x9F9D, 0x9F9E, 0x5608, - 0x9F9F, 0x9F9F, 0x0743, 0x9FA0, 0x9FA0, 0x12F3, 0x9FA1, 0x9FA5, 0x560A, - 0xE816, 0xE818, 0x5620, 0xE81E, 0xE81E, 0x5628, 0xE826, 0xE826, 0x5630, - 0xE82B, 0xE82C, 0x5635, 0xE831, 0xE832, 0x563B, 0xE83B, 0xE83B, 0x5645, - 0xE843, 0xE843, 0x564D, 0xE854, 0xE855, 0x565E, 0xE864, 0xE864, 0x566E, - 0xF92C, 0xF92C, 0x560F, 0xFA0D, 0xFA0F, 0x5610, 0xFA11, 0xFA11, 0x5613, - 0xFA13, 0xFA14, 0x5614, 0xFA18, 0xFA18, 0x5616, 0xFA1F, 0xFA21, 0x5617, - 0xFA23, 0xFA24, 0x561A, 0xFA27, 0xFA29, 0x561C, 0xFE30, 0xFE30, 0x271D, - 0xFE49, 0xFE52, 0x272B, 0xFE54, 0xFE57, 0x2735, 0xFE59, 0xFE66, 0x2739, - 0xFE68, 0xFE6B, 0x2747, 0xFF01, 0xFF03, 0x0106, 0xFF04, 0xFF04, 0x00A6, - 0xFF05, 0xFF5D, 0x010A, 0xFF5E, 0xFF5E, 0x006A, 0xFFE0, 0xFFE1, 0x00A8, - 0xFFE2, 0xFFE2, 0x271E, 0xFFE3, 0xFFE3, 0x0163, 0xFFE4, 0xFFE4, 0x271F, - 0xFFE5, 0xFFE5, 0x0109, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp deleted file mode 100644 index 496f7ee1be..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -const FX_WORD g_FXCMAP_UniGB_UCS2_V_4[24 * 3] = { - 0x2014, 0x2014, 0x0256, 0x2026, 0x2026, 0x0257, 0x2225, 0x2225, 0x1E1C, - 0x3001, 0x3001, 0x023F, 0x3002, 0x3002, 0x023E, 0x3008, 0x300F, 0x0248, - 0x3010, 0x3011, 0x0252, 0x3013, 0x3013, 0x1E1A, 0x3014, 0x3015, 0x0246, - 0x3016, 0x3017, 0x0250, 0xFF01, 0xFF01, 0x0242, 0xFF08, 0xFF09, 0x0244, - 0xFF0C, 0xFF0C, 0x023D, 0xFF0E, 0xFF0E, 0x1E1B, 0xFF1A, 0xFF1B, 0x0240, - 0xFF1D, 0xFF1D, 0x1E1C, 0xFF1F, 0xFF1F, 0x0243, 0xFF3B, 0xFF3B, 0x1E1D, - 0xFF3D, 0xFF3D, 0x1E1E, 0xFF3F, 0xFF3F, 0x0258, 0xFF5B, 0xFF5B, 0x0254, - 0xFF5D, 0xFF5D, 0x0255, 0xFF5E, 0xFF5E, 0x1E18, 0xFFE3, 0xFFE3, 0x1E1F, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp b/core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp deleted file mode 100644 index 234f990821..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h" - -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). -#include "core/src/fpdfapi/fpdf_cmaps/cmap_int.h" -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -static const FXCMAP_CMap g_FXCMAP_GB1_cmaps[] = { - {"GB-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GB_EUC_H_0, 90, FXCMAP_CMap::None, - NULL, 0, 0}, - {"GB-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GB_EUC_V_0, 20, FXCMAP_CMap::None, - NULL, 0, -1}, - {"GBpc-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBpc_EUC_H_0, 91, - FXCMAP_CMap::None, NULL, 0, 0}, - {"GBpc-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBpc_EUC_V_0, 20, - FXCMAP_CMap::None, NULL, 0, -1}, - {"GBK-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBK_EUC_H_2, 4071, - FXCMAP_CMap::None, NULL, 0, 0}, - {"GBK-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBK_EUC_V_2, 20, - FXCMAP_CMap::None, NULL, 0, -1}, - {"GBKp-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBKp_EUC_H_2, 4070, - FXCMAP_CMap::None, NULL, 0, -2}, - {"GBKp-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBKp_EUC_V_2, 20, - FXCMAP_CMap::None, NULL, 0, -1}, - {"GBK2K-H", FXCMAP_CMap::Range, g_FXCMAP_GBK2K_H_5, 4071, - FXCMAP_CMap::Single, g_FXCMAP_GBK2K_H_5_DWord, 1017, -4}, - {"GBK2K-V", FXCMAP_CMap::Range, g_FXCMAP_GBK2K_V_5, 41, FXCMAP_CMap::None, - NULL, 0, -1}, - {"UniGB-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_H_4, 13825, - FXCMAP_CMap::None, NULL, 0, 0}, - {"UniGB-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_V_4, 24, - FXCMAP_CMap::None, NULL, 0, -1}, - {"UniGB-UTF16-H", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_H_4, 13825, - FXCMAP_CMap::None, NULL, 0, 0}, - {"UniGB-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_V_4, 24, - FXCMAP_CMap::None, NULL, 0, -1}, -}; - -void CPDF_ModuleMgr::LoadEmbeddedGB1CMaps() { - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - pFontGlobals->m_EmbeddedCharsets[CIDSET_GB1].m_pMapList = g_FXCMAP_GB1_cmaps; - pFontGlobals->m_EmbeddedCharsets[CIDSET_GB1].m_Count = - FX_ArraySize(g_FXCMAP_GB1_cmaps); - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_GB1].m_pMap = - g_FXCMAP_GB1CID2Unicode_5; - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_GB1].m_Count = 30284; -} diff --git a/core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h b/core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h deleted file mode 100644 index beae68d382..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_ -#define CORE_SRC_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_ - -#include "core/include/fxcrt/fx_system.h" // For FX_WORD. - -extern const FX_WORD g_FXCMAP_GB_EUC_H_0[]; -extern const FX_WORD g_FXCMAP_GB_EUC_V_0[]; -extern const FX_WORD g_FXCMAP_GBpc_EUC_H_0[]; -extern const FX_WORD g_FXCMAP_GBpc_EUC_V_0[]; -extern const FX_WORD g_FXCMAP_GBK_EUC_H_2[]; -extern const FX_WORD g_FXCMAP_GBK_EUC_V_2[]; -extern const FX_WORD g_FXCMAP_GBKp_EUC_H_2[]; -extern const FX_WORD g_FXCMAP_GBKp_EUC_V_2[]; -extern const FX_WORD g_FXCMAP_GBK2K_H_5[]; -extern const FX_WORD g_FXCMAP_GBK2K_H_5_DWord[]; -extern const FX_WORD g_FXCMAP_GBK2K_V_5[]; -extern const FX_WORD g_FXCMAP_UniGB_UCS2_H_4[]; -extern const FX_WORD g_FXCMAP_UniGB_UCS2_V_4[]; -extern const FX_WORD g_FXCMAP_GB1CID2Unicode_5[]; - -#endif // CORE_SRC_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_ diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp deleted file mode 100644 index 09778bc6cb..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_83pv_RKSJ_H_1[222 * 3] = { - 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x0061, 0x00A0, 0x00DF, 0x0146, - 0x00FD, 0x00FD, 0x0098, 0x00FE, 0x00FE, 0x00E4, 0x00FF, 0x00FF, 0x007C, - 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, - 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, - 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, - 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, - 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, - 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, - 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, - 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, - 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, - 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, - 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, - 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, - 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, - 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, - 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, - 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, - 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8540, 0x857E, 0x00E8, - 0x8580, 0x8580, 0x0186, 0x8581, 0x859E, 0x0128, 0x859F, 0x85DD, 0x0147, - 0x85DE, 0x85FC, 0x0187, 0x8640, 0x867E, 0x01A6, 0x8680, 0x8691, 0x01E5, - 0x8692, 0x8692, 0x0127, 0x8693, 0x869E, 0x01F7, 0x86A2, 0x86ED, 0x1D37, - 0x8740, 0x875D, 0x1D83, 0x875F, 0x8775, 0x1DA1, 0x8780, 0x878F, 0x1DB8, - 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9, 0x8792, 0x8792, 0x0301, - 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300, 0x879B, 0x879C, 0x1DCF, - 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3, 0x8980, 0x89FC, 0x0502, - 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE, 0x8B40, 0x8B7E, 0x063B, - 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7, 0x8C80, 0x8CFC, 0x0736, - 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2, 0x8E40, 0x8E7E, 0x086F, - 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B, 0x8F80, 0x8FFC, 0x096A, - 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26, 0x9140, 0x917E, 0x0AA3, - 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F, 0x9280, 0x92FC, 0x0B9E, - 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A, 0x9440, 0x947E, 0x0CD7, - 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93, 0x9580, 0x95FC, 0x0DD2, - 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E, 0x9740, 0x977E, 0x0F0B, - 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7, 0x989F, 0x98FC, 0x0FFA, - 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A7E, 0x1114, - 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0, 0x9B80, 0x9BFC, 0x120F, - 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB, 0x9D40, 0x9D7E, 0x1348, - 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404, 0x9E80, 0x9EFC, 0x1443, - 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF, 0xE040, 0xE07E, 0x157C, - 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638, 0xE180, 0xE1FC, 0x1677, - 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733, 0xE340, 0xE37E, 0x17B0, - 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C, 0xE480, 0xE4FC, 0x18AB, - 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967, 0xE640, 0xE67E, 0x19E4, - 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0, 0xE780, 0xE7FC, 0x1ADF, - 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B, 0xE940, 0xE97E, 0x1C18, - 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4, 0xEA80, 0xEAA2, 0x1D13, - 0xEAA3, 0xEAA4, 0x205C, 0xEB40, 0xEB40, 0x0279, 0xEB41, 0xEB42, 0x1ECF, - 0xEB43, 0xEB4F, 0x027C, 0xEB50, 0xEB51, 0x1ED1, 0xEB52, 0xEB5A, 0x028B, - 0xEB5B, 0xEB5D, 0x1ED3, 0xEB5E, 0xEB5F, 0x0297, 0xEB60, 0xEB64, 0x1ED6, - 0xEB65, 0xEB68, 0x029E, 0xEB69, 0xEB7A, 0x1EDB, 0xEB7B, 0xEB7E, 0x02B4, - 0xEB80, 0xEB80, 0x02B8, 0xEB81, 0xEB81, 0x1EED, 0xEB82, 0xEBAC, 0x02BA, - 0xEBB8, 0xEBBF, 0x02E5, 0xEBC8, 0xEBCE, 0x02ED, 0xEBDA, 0xEBE8, 0x02F4, - 0xEBF0, 0xEBF7, 0x0303, 0xEBFC, 0xEBFC, 0x030B, 0xEC4F, 0xEC58, 0x030C, - 0xEC60, 0xEC79, 0x0316, 0xEC81, 0xEC9A, 0x0330, 0xEC9F, 0xEC9F, 0x1EEE, - 0xECA0, 0xECA0, 0x034B, 0xECA1, 0xECA1, 0x1EEF, 0xECA2, 0xECA2, 0x034D, - 0xECA3, 0xECA3, 0x1EF0, 0xECA4, 0xECA4, 0x034F, 0xECA5, 0xECA5, 0x1EF1, - 0xECA6, 0xECA6, 0x0351, 0xECA7, 0xECA7, 0x1EF2, 0xECA8, 0xECC0, 0x0353, - 0xECC1, 0xECC1, 0x1EF3, 0xECC2, 0xECE0, 0x036D, 0xECE1, 0xECE1, 0x1EF4, - 0xECE2, 0xECE2, 0x038D, 0xECE3, 0xECE3, 0x1EF5, 0xECE4, 0xECE4, 0x038F, - 0xECE5, 0xECE5, 0x1EF6, 0xECE6, 0xECEB, 0x0391, 0xECEC, 0xECEC, 0x1EF7, - 0xECED, 0xECF1, 0x0398, 0xED40, 0xED40, 0x1EF8, 0xED41, 0xED41, 0x039E, - 0xED42, 0xED42, 0x1EF9, 0xED43, 0xED43, 0x03A0, 0xED44, 0xED44, 0x1EFA, - 0xED45, 0xED45, 0x03A2, 0xED46, 0xED46, 0x1EFB, 0xED47, 0xED47, 0x03A4, - 0xED48, 0xED48, 0x1EFC, 0xED49, 0xED61, 0x03A6, 0xED62, 0xED62, 0x1EFD, - 0xED63, 0xED7E, 0x03C0, 0xED80, 0xED82, 0x03DC, 0xED83, 0xED83, 0x1EFE, - 0xED84, 0xED84, 0x03E0, 0xED85, 0xED85, 0x1EFF, 0xED86, 0xED86, 0x03E2, - 0xED87, 0xED87, 0x1F00, 0xED88, 0xED8D, 0x03E4, 0xED8E, 0xED8E, 0x1F01, - 0xED8F, 0xED94, 0x03EB, 0xED95, 0xED96, 0x1F02, 0xED9F, 0xEDB6, 0x03F3, - 0xEDBF, 0xEDD6, 0x040B, 0xEE40, 0xEE5D, 0x1D83, 0xEE5F, 0xEE6E, 0x1F04, - 0xEE6F, 0xEE75, 0x1DB1, 0xEE80, 0xEE81, 0x1F14, 0xEE82, 0xEE8F, 0x1DBA, - 0xEE90, 0xEE90, 0x02FA, 0xEE91, 0xEE91, 0x02F9, 0xEE92, 0xEE92, 0x0301, - 0xEE93, 0xEE99, 0x1DC8, 0xEE9A, 0xEE9A, 0x0300, 0xEE9B, 0xEE9C, 0x1DCF, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp deleted file mode 100644 index 8cf3f0122d..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_90ms_RKSJ_H_2[171 * 3] = { - 0x0020, 0x007D, 0x00E7, 0x007E, 0x007E, 0x0277, 0x00A0, 0x00DF, 0x0146, - 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, - 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, - 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, - 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, - 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, - 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, - 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, - 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, - 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, - 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, - 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, - 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, - 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, - 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, - 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, - 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, - 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8740, 0x875D, 0x1D83, - 0x875F, 0x8760, 0x1DA1, 0x8761, 0x8761, 0x1F66, 0x8762, 0x8762, 0x1DA4, - 0x8763, 0x8763, 0x1F68, 0x8764, 0x8764, 0x1DA6, 0x8765, 0x8765, 0x1F6A, - 0x8766, 0x8767, 0x1DA8, 0x8768, 0x8768, 0x1F6C, 0x8769, 0x876A, 0x1DAB, - 0x876B, 0x876B, 0x1F6B, 0x876C, 0x876D, 0x1DAE, 0x876E, 0x876E, 0x1F6F, - 0x876F, 0x8775, 0x1DB1, 0x877E, 0x877E, 0x2083, 0x8780, 0x8783, 0x1DB8, - 0x8784, 0x8784, 0x1F77, 0x8785, 0x878F, 0x1DBD, 0x8790, 0x8790, 0x02FA, - 0x8791, 0x8791, 0x02F9, 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, - 0x879A, 0x879A, 0x0300, 0x879B, 0x879C, 0x1DCF, 0x889F, 0x88FC, 0x0465, - 0x8940, 0x897E, 0x04C3, 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, - 0x8A80, 0x8AFC, 0x05BE, 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, - 0x8C40, 0x8C7E, 0x06F7, 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, - 0x8D80, 0x8DFC, 0x07F2, 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, - 0x8F40, 0x8F7E, 0x092B, 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, - 0x9080, 0x90FC, 0x0A26, 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, - 0x9240, 0x927E, 0x0B5F, 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, - 0x9380, 0x93FC, 0x0C5A, 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, - 0x9540, 0x957E, 0x0D93, 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, - 0x9680, 0x96FC, 0x0E8E, 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, - 0x9840, 0x9872, 0x0FC7, 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, - 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, - 0x9B40, 0x9B7E, 0x11D0, 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, - 0x9C80, 0x9CFC, 0x12CB, 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, - 0x9E40, 0x9E7E, 0x1404, 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, - 0x9F80, 0x9FFC, 0x14FF, 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, - 0xE140, 0xE17E, 0x1638, 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, - 0xE280, 0xE2FC, 0x1733, 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, - 0xE440, 0xE47E, 0x186C, 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, - 0xE580, 0xE5FC, 0x1967, 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, - 0xE740, 0xE77E, 0x1AA0, 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, - 0xE880, 0xE8FC, 0x1B9B, 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, - 0xEA40, 0xEA7E, 0x1CD4, 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, - 0xED40, 0xED7E, 0x20A7, 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, - 0xEDB5, 0xEDFC, 0x211A, 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, - 0xEEEF, 0xEEF8, 0x1F9C, 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45, - 0xFA40, 0xFA49, 0x1F9C, 0xFA4A, 0xFA53, 0x1D97, 0xFA54, 0xFA54, 0x02EF, - 0xFA55, 0xFA57, 0x1F45, 0xFA58, 0xFA58, 0x1DC2, 0xFA59, 0xFA59, 0x1DBA, - 0xFA5A, 0xFA5A, 0x1F77, 0xFA5B, 0xFA5B, 0x0300, 0xFA5C, 0xFA7E, 0x20A7, - 0xFA80, 0xFACF, 0x20CA, 0xFAD0, 0xFAD0, 0x07C9, 0xFAD1, 0xFAFC, 0x211A, - 0xFB40, 0xFB7E, 0x2146, 0xFB80, 0xFBFC, 0x2185, 0xFC40, 0xFC4B, 0x2202, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp deleted file mode 100644 index ea8ebbf0e0..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_90ms_RKSJ_V_2[78 * 3] = { - 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, - 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6, - 0x8169, 0x817A, 0x1EDB, 0x8181, 0x8181, 0x1EED, 0x81A8, 0x81A8, 0x02E3, - 0x81A9, 0x81A9, 0x02E2, 0x81AA, 0x81AB, 0x02E0, 0x81AC, 0x81AC, 0x204E, - 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0, - 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3, - 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6, - 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9, - 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC, - 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF, - 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02, - 0x849F, 0x849F, 0x1D39, 0x84A0, 0x84A0, 0x1D37, 0x84A1, 0x84A1, 0x1D47, - 0x84A2, 0x84A2, 0x1D4F, 0x84A3, 0x84A3, 0x1D4B, 0x84A4, 0x84A4, 0x1D43, - 0x84A5, 0x84A5, 0x1D63, 0x84A6, 0x84A6, 0x1D5B, 0x84A7, 0x84A7, 0x1D6B, - 0x84A8, 0x84A8, 0x1D53, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D3A, - 0x84AB, 0x84AB, 0x1D38, 0x84AC, 0x84AC, 0x1D4A, 0x84AD, 0x84AD, 0x1D52, - 0x84AE, 0x84AE, 0x1D4E, 0x84AF, 0x84AF, 0x1D46, 0x84B0, 0x84B0, 0x1D6A, - 0x84B1, 0x84B1, 0x1D62, 0x84B2, 0x84B2, 0x1D72, 0x84B3, 0x84B3, 0x1D5A, - 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D66, 0x84B6, 0x84B6, 0x1D5F, - 0x84B7, 0x84B7, 0x1D6E, 0x84B8, 0x84B8, 0x1D57, 0x84B9, 0x84B9, 0x1D79, - 0x84BA, 0x84BA, 0x1D67, 0x84BB, 0x84BB, 0x1D5C, 0x84BC, 0x84BC, 0x1D6F, - 0x84BD, 0x84BD, 0x1D54, 0x84BE, 0x84BE, 0x1D76, 0x875F, 0x8760, 0x1F04, - 0x8761, 0x8761, 0x2089, 0x8762, 0x8762, 0x1F07, 0x8763, 0x8763, 0x2093, - 0x8764, 0x8764, 0x1F09, 0x8765, 0x8765, 0x2092, 0x8766, 0x8767, 0x1F0B, - 0x8768, 0x8768, 0x2098, 0x8769, 0x876A, 0x1F0E, 0x876B, 0x876B, 0x209C, - 0x876C, 0x876D, 0x1F11, 0x876E, 0x876E, 0x209D, 0x8780, 0x8781, 0x1F14, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp deleted file mode 100644 index 99a6ae790d..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_90msp_RKSJ_H_2[170 * 3] = { - 0x0020, 0x007E, 0x0001, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279, - 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, 0x81C8, 0x81CE, 0x02ED, - 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, 0x81FC, 0x81FC, 0x030B, - 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330, - 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, 0x8380, 0x8396, 0x03DC, - 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, 0x8440, 0x8460, 0x0423, - 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, 0x849F, 0x849F, 0x1D37, - 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, 0x84A2, 0x84A2, 0x1D47, - 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, 0x84A5, 0x84A5, 0x1D53, - 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, 0x84A8, 0x84A8, 0x1D6B, - 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, 0x84AB, 0x84AB, 0x1D3A, - 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, 0x84AE, 0x84AE, 0x1D52, - 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, 0x84B1, 0x84B1, 0x1D6A, - 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, 0x84B4, 0x84B4, 0x1D82, - 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, 0x84B7, 0x84B7, 0x1D5F, - 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, 0x84BA, 0x84BA, 0x1D54, - 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, 0x84BD, 0x84BD, 0x1D6F, - 0x84BE, 0x84BE, 0x1D79, 0x8740, 0x875D, 0x1D83, 0x875F, 0x8760, 0x1DA1, - 0x8761, 0x8761, 0x1F66, 0x8762, 0x8762, 0x1DA4, 0x8763, 0x8763, 0x1F68, - 0x8764, 0x8764, 0x1DA6, 0x8765, 0x8765, 0x1F6A, 0x8766, 0x8767, 0x1DA8, - 0x8768, 0x8768, 0x1F6C, 0x8769, 0x876A, 0x1DAB, 0x876B, 0x876B, 0x1F6B, - 0x876C, 0x876D, 0x1DAE, 0x876E, 0x876E, 0x1F6F, 0x876F, 0x8775, 0x1DB1, - 0x877E, 0x877E, 0x2083, 0x8780, 0x8783, 0x1DB8, 0x8784, 0x8784, 0x1F77, - 0x8785, 0x878F, 0x1DBD, 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9, - 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300, - 0x879B, 0x879C, 0x1DCF, 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3, - 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE, - 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7, - 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2, - 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B, - 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26, - 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F, - 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A, - 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93, - 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E, - 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7, - 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097, - 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0, - 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB, - 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404, - 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF, - 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638, - 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733, - 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C, - 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967, - 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0, - 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B, - 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4, - 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, 0xED40, 0xED7E, 0x20A7, - 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, 0xEDB5, 0xEDFC, 0x211A, - 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, 0xEEEF, 0xEEF8, 0x1F9C, - 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45, 0xFA40, 0xFA49, 0x1F9C, - 0xFA4A, 0xFA53, 0x1D97, 0xFA54, 0xFA54, 0x02EF, 0xFA55, 0xFA57, 0x1F45, - 0xFA58, 0xFA58, 0x1DC2, 0xFA59, 0xFA59, 0x1DBA, 0xFA5A, 0xFA5A, 0x1F77, - 0xFA5B, 0xFA5B, 0x0300, 0xFA5C, 0xFA7E, 0x20A7, 0xFA80, 0xFACF, 0x20CA, - 0xFAD0, 0xFAD0, 0x07C9, 0xFAD1, 0xFAFC, 0x211A, 0xFB40, 0xFB7E, 0x2146, - 0xFB80, 0xFBFC, 0x2185, 0xFC40, 0xFC4B, 0x2202, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp deleted file mode 100644 index f9872f88d6..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_90msp_RKSJ_V_2[78 * 3] = { - 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, - 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6, - 0x8169, 0x817A, 0x1EDB, 0x8181, 0x8181, 0x1EED, 0x81A8, 0x81A8, 0x02E3, - 0x81A9, 0x81A9, 0x02E2, 0x81AA, 0x81AB, 0x02E0, 0x81AC, 0x81AC, 0x204E, - 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0, - 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3, - 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6, - 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9, - 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC, - 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF, - 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02, - 0x849F, 0x849F, 0x1D39, 0x84A0, 0x84A0, 0x1D37, 0x84A1, 0x84A1, 0x1D47, - 0x84A2, 0x84A2, 0x1D4F, 0x84A3, 0x84A3, 0x1D4B, 0x84A4, 0x84A4, 0x1D43, - 0x84A5, 0x84A5, 0x1D63, 0x84A6, 0x84A6, 0x1D5B, 0x84A7, 0x84A7, 0x1D6B, - 0x84A8, 0x84A8, 0x1D53, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D3A, - 0x84AB, 0x84AB, 0x1D38, 0x84AC, 0x84AC, 0x1D4A, 0x84AD, 0x84AD, 0x1D52, - 0x84AE, 0x84AE, 0x1D4E, 0x84AF, 0x84AF, 0x1D46, 0x84B0, 0x84B0, 0x1D6A, - 0x84B1, 0x84B1, 0x1D62, 0x84B2, 0x84B2, 0x1D72, 0x84B3, 0x84B3, 0x1D5A, - 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D66, 0x84B6, 0x84B6, 0x1D5F, - 0x84B7, 0x84B7, 0x1D6E, 0x84B8, 0x84B8, 0x1D57, 0x84B9, 0x84B9, 0x1D79, - 0x84BA, 0x84BA, 0x1D67, 0x84BB, 0x84BB, 0x1D5C, 0x84BC, 0x84BC, 0x1D6F, - 0x84BD, 0x84BD, 0x1D54, 0x84BE, 0x84BE, 0x1D76, 0x875F, 0x8760, 0x1F04, - 0x8761, 0x8761, 0x2089, 0x8762, 0x8762, 0x1F07, 0x8763, 0x8763, 0x2093, - 0x8764, 0x8764, 0x1F09, 0x8765, 0x8765, 0x2092, 0x8766, 0x8767, 0x1F0B, - 0x8768, 0x8768, 0x2098, 0x8769, 0x876A, 0x1F0E, 0x876B, 0x876B, 0x209C, - 0x876C, 0x876D, 0x1F11, 0x876E, 0x876E, 0x209D, 0x8780, 0x8781, 0x1F14, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp deleted file mode 100644 index b00779d4c4..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_90pv_RKSJ_H_1[263 * 3] = { - 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x0061, 0x00A0, 0x00DF, 0x0146, - 0x00FD, 0x00FD, 0x0098, 0x00FE, 0x00FE, 0x00E4, 0x00FF, 0x00FF, 0x007C, - 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, - 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, - 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, - 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, - 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, - 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, - 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, - 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, - 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, - 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, - 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, - 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, - 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, - 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, - 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, - 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, - 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8540, 0x8553, 0x1D83, - 0x855E, 0x8571, 0x1F87, 0x857C, 0x857E, 0x205E, 0x8580, 0x8585, 0x2061, - 0x8591, 0x859A, 0x1F7D, 0x859F, 0x85A8, 0x1D97, 0x85A9, 0x85AA, 0x2021, - 0x85AB, 0x85AD, 0x2067, 0x85B3, 0x85BC, 0x1F9C, 0x85BD, 0x85C1, 0x206A, - 0x85DB, 0x85F4, 0x1FB0, 0x8640, 0x8640, 0x1DB1, 0x8641, 0x8641, 0x1FFA, - 0x8642, 0x8642, 0x1DB2, 0x8643, 0x8643, 0x1F54, 0x8644, 0x8644, 0x1F56, - 0x8645, 0x8645, 0x206F, 0x8646, 0x8646, 0x1DB7, 0x8647, 0x8647, 0x1F57, - 0x8648, 0x8648, 0x1DB3, 0x8649, 0x8649, 0x1F55, 0x864A, 0x864A, 0x1DB4, - 0x864B, 0x864B, 0x2070, 0x864C, 0x864D, 0x1DB5, 0x864E, 0x864E, 0x1F65, - 0x864F, 0x8655, 0x1F58, 0x8656, 0x8656, 0x2071, 0x8657, 0x8657, 0x1F64, - 0x8658, 0x8659, 0x1F62, 0x865A, 0x865C, 0x1F5F, 0x865D, 0x865D, 0x2072, - 0x869B, 0x869D, 0x1DBA, 0x869E, 0x869E, 0x2073, 0x869F, 0x869F, 0x1F52, - 0x86A0, 0x86A1, 0x1F50, 0x86A2, 0x86A2, 0x1F53, 0x86A3, 0x86A3, 0x2013, - 0x86A4, 0x86A4, 0x2015, 0x86A5, 0x86A5, 0x2014, 0x86A6, 0x86A6, 0x2016, - 0x86B3, 0x86B3, 0x1F7A, 0x86B4, 0x86B4, 0x1F78, 0x86B5, 0x86B5, 0x2074, - 0x86C7, 0x86CA, 0x201B, 0x86CB, 0x86CE, 0x2075, 0x86CF, 0x86CF, 0x1F4E, - 0x86D0, 0x86D0, 0x1F4D, 0x86D1, 0x86D1, 0x1F4C, 0x86D2, 0x86D2, 0x1F4B, - 0x86D3, 0x86D6, 0x200E, 0x8740, 0x8746, 0x2005, 0x8747, 0x8747, 0x1FD6, - 0x8748, 0x8748, 0x200C, 0x8749, 0x8749, 0x1FD1, 0x874A, 0x874A, 0x1FCA, - 0x874B, 0x874B, 0x1DC4, 0x874C, 0x874C, 0x1FD7, 0x874D, 0x874D, 0x1DC2, - 0x874E, 0x874E, 0x1FD2, 0x874F, 0x874F, 0x1FCD, 0x8750, 0x8750, 0x1DC3, - 0x8751, 0x8751, 0x1FD5, 0x8752, 0x8752, 0x1FD3, 0x8753, 0x8753, 0x1FCF, - 0x8754, 0x8754, 0x1FD4, 0x8755, 0x8755, 0x1FD0, 0x8756, 0x8757, 0x1FCB, - 0x8758, 0x8758, 0x1FCE, 0x8791, 0x8792, 0x207D, 0x8793, 0x8797, 0x1DBD, - 0x8798, 0x8798, 0x1FDA, 0x8799, 0x8799, 0x1FE5, 0x879A, 0x879A, 0x207F, - 0x879B, 0x879B, 0x1FDE, 0x879C, 0x879C, 0x1FFF, 0x879D, 0x879D, 0x2080, - 0x879E, 0x879E, 0x201F, 0x879F, 0x879F, 0x1DA1, 0x87A0, 0x87A0, 0x1F66, - 0x87A1, 0x87A1, 0x1DA4, 0x87A2, 0x87A2, 0x1DA2, 0x87A3, 0x87A3, 0x1F67, - 0x87A4, 0x87A4, 0x1FF7, 0x87A5, 0x87A6, 0x2087, 0x87A7, 0x87A7, 0x1F6A, - 0x87A8, 0x87A8, 0x1DA8, 0x87A9, 0x87AA, 0x1F68, 0x87AB, 0x87AB, 0x1DA6, - 0x87AC, 0x87AC, 0x1DA9, 0x87AD, 0x87AD, 0x1DAF, 0x87AE, 0x87AE, 0x1F6E, - 0x87AF, 0x87AF, 0x1F6C, 0x87B0, 0x87B0, 0x1DAB, 0x87B1, 0x87B1, 0x1F6D, - 0x87B2, 0x87B2, 0x1F6B, 0x87B3, 0x87B3, 0x1DAC, 0x87B4, 0x87B4, 0x1F6F, - 0x87B5, 0x87B5, 0x1DAE, 0x87BD, 0x87BD, 0x1F70, 0x87BE, 0x87BF, 0x1F73, - 0x87C0, 0x87C1, 0x1F71, 0x87E5, 0x87E7, 0x1DC5, 0x87E8, 0x87E8, 0x2083, - 0x87FA, 0x87FA, 0x1F76, 0x87FB, 0x87FC, 0x2081, 0x8840, 0x8840, 0x1DC8, - 0x8841, 0x8842, 0x1DCD, 0x8854, 0x8855, 0x1DB8, 0x8868, 0x8868, 0x1F16, - 0x886A, 0x886D, 0x2079, 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3, - 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE, - 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7, - 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2, - 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B, - 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26, - 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F, - 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A, - 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93, - 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E, - 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7, - 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097, - 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0, - 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB, - 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404, - 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF, - 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638, - 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733, - 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C, - 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967, - 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0, - 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B, - 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4, - 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, 0xEB41, 0xEB42, 0x1ECF, - 0xEB50, 0xEB51, 0x1ED1, 0xEB5B, 0xEB5D, 0x1ED3, 0xEB60, 0xEB64, 0x1ED6, - 0xEB69, 0xEB7A, 0x1EDB, 0xEB81, 0xEB81, 0x1EED, 0xEC9F, 0xEC9F, 0x1EEE, - 0xECA1, 0xECA1, 0x1EEF, 0xECA3, 0xECA3, 0x1EF0, 0xECA5, 0xECA5, 0x1EF1, - 0xECA7, 0xECA7, 0x1EF2, 0xECC1, 0xECC1, 0x1EF3, 0xECE1, 0xECE1, 0x1EF4, - 0xECE3, 0xECE3, 0x1EF5, 0xECE5, 0xECE5, 0x1EF6, 0xECEC, 0xECEC, 0x1EF7, - 0xED40, 0xED40, 0x1EF8, 0xED42, 0xED42, 0x1EF9, 0xED44, 0xED44, 0x1EFA, - 0xED46, 0xED46, 0x1EFB, 0xED48, 0xED48, 0x1EFC, 0xED62, 0xED62, 0x1EFD, - 0xED83, 0xED83, 0x1EFE, 0xED85, 0xED85, 0x1EFF, 0xED87, 0xED87, 0x1F00, - 0xED8E, 0xED8E, 0x1F01, 0xED95, 0xED96, 0x1F02, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp deleted file mode 100644 index ddfad18b86..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_Add_RKSJ_H_1[635 * 3] = { - 0x0020, 0x007E, 0x00E7, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279, - 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, 0x81C8, 0x81CE, 0x02ED, - 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, 0x81FC, 0x81FC, 0x030B, - 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330, - 0x829F, 0x82F1, 0x034A, 0x82F2, 0x82F4, 0x1F16, 0x8340, 0x837E, 0x039D, - 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, - 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, - 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, - 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, - 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, - 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, - 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, - 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, - 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, - 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, - 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, - 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, - 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x889F, 0x889F, 0x0465, - 0x88A0, 0x88A0, 0x1DD1, 0x88A1, 0x88AF, 0x0467, 0x88B0, 0x88B0, 0x1F19, - 0x88B1, 0x88B8, 0x0477, 0x88B9, 0x88B9, 0x1DD2, 0x88BA, 0x88EB, 0x0480, - 0x88EC, 0x88EC, 0x1DD3, 0x88ED, 0x88EE, 0x04B3, 0x88EF, 0x88EF, 0x1F1A, - 0x88F0, 0x88F0, 0x04B6, 0x88F1, 0x88F1, 0x1DD4, 0x88F2, 0x88F9, 0x04B8, - 0x88FA, 0x88FA, 0x1DD5, 0x88FB, 0x88FC, 0x04C1, 0x8940, 0x8948, 0x04C3, - 0x8949, 0x8949, 0x1DD6, 0x894A, 0x8951, 0x04CD, 0x8952, 0x8952, 0x1F1B, - 0x8953, 0x8953, 0x04D6, 0x8954, 0x8954, 0x1DD7, 0x8955, 0x8957, 0x04D8, - 0x8958, 0x8958, 0x1F1C, 0x8959, 0x895B, 0x04DC, 0x895C, 0x895C, 0x1DDA, - 0x895D, 0x8960, 0x04E0, 0x8961, 0x8961, 0x1DDB, 0x8962, 0x897E, 0x04E5, - 0x8980, 0x898A, 0x0502, 0x898B, 0x898B, 0x1DDC, 0x898C, 0x89A5, 0x050E, - 0x89A6, 0x89A6, 0x1DDD, 0x89A7, 0x89A7, 0x0529, 0x89A8, 0x89A8, 0x1DDE, - 0x89A9, 0x89DD, 0x052B, 0x89DE, 0x89DE, 0x1DDF, 0x89DF, 0x89E4, 0x0561, - 0x89E5, 0x89E5, 0x1F1D, 0x89E6, 0x89F7, 0x0568, 0x89F8, 0x89F8, 0x1DE0, - 0x89F9, 0x89FC, 0x057B, 0x8A40, 0x8A40, 0x057F, 0x8A41, 0x8A41, 0x1DE2, - 0x8A42, 0x8A7E, 0x0581, 0x8A80, 0x8A8A, 0x05BE, 0x8A8B, 0x8A8B, 0x1DE4, - 0x8A8C, 0x8A92, 0x05CA, 0x8A93, 0x8A93, 0x1DE5, 0x8A94, 0x8A99, 0x05D2, - 0x8A9A, 0x8A9A, 0x1DE6, 0x8A9B, 0x8ABF, 0x05D9, 0x8AC0, 0x8AC0, 0x1DE7, - 0x8AC1, 0x8ACA, 0x05FF, 0x8ACB, 0x8ACB, 0x1DE8, 0x8ACC, 0x8AE2, 0x060A, - 0x8AE3, 0x8AE3, 0x1DE9, 0x8AE4, 0x8AFC, 0x0622, 0x8B40, 0x8B49, 0x063B, - 0x8B4A, 0x8B4A, 0x1DEA, 0x8B4B, 0x8B5E, 0x0646, 0x8B5F, 0x8B5F, 0x1DEB, - 0x8B60, 0x8B7E, 0x065B, 0x8B80, 0x8B81, 0x067A, 0x8B82, 0x8B82, 0x1F1E, - 0x8B83, 0x8B87, 0x067D, 0x8B88, 0x8B88, 0x1F1F, 0x8B89, 0x8B9F, 0x0683, - 0x8BA0, 0x8BA0, 0x1DEC, 0x8BA1, 0x8BA7, 0x069B, 0x8BA8, 0x8BA8, 0x1DED, - 0x8BA9, 0x8BBF, 0x06A3, 0x8BC0, 0x8BC0, 0x1F20, 0x8BC1, 0x8BCC, 0x06BB, - 0x8BCD, 0x8BCD, 0x1DEE, 0x8BCE, 0x8BEA, 0x06C8, 0x8BEB, 0x8BEB, 0x1DEF, - 0x8BEC, 0x8BF1, 0x06E6, 0x8BF2, 0x8BF2, 0x1DF0, 0x8BF3, 0x8BF8, 0x06ED, - 0x8BF9, 0x8BF9, 0x1DF1, 0x8BFA, 0x8BFA, 0x06F4, 0x8BFB, 0x8BFB, 0x1DF2, - 0x8BFC, 0x8BFC, 0x06F6, 0x8C40, 0x8C55, 0x06F7, 0x8C56, 0x8C56, 0x1DF4, - 0x8C57, 0x8C70, 0x070E, 0x8C71, 0x8C71, 0x1DF7, 0x8C72, 0x8C7E, 0x0729, - 0x8C80, 0x8C90, 0x0736, 0x8C91, 0x8C91, 0x1DFA, 0x8C92, 0x8C9C, 0x0748, - 0x8C9D, 0x8C9D, 0x1F21, 0x8C9E, 0x8C9E, 0x1DFC, 0x8C9F, 0x8CB1, 0x0755, - 0x8CB2, 0x8CB2, 0x1DFD, 0x8CB3, 0x8CBE, 0x0769, 0x8CBF, 0x8CBF, 0x1DFE, - 0x8CC0, 0x8CFC, 0x0776, 0x8D40, 0x8D49, 0x07B3, 0x8D4A, 0x8D4A, 0x1DFF, - 0x8D4B, 0x8D7E, 0x07BE, 0x8D80, 0x8D8C, 0x07F2, 0x8D8D, 0x8D8D, 0x1E02, - 0x8D8E, 0x8D93, 0x0800, 0x8D94, 0x8D94, 0x1E03, 0x8D95, 0x8D98, 0x0807, - 0x8D99, 0x8D99, 0x1E04, 0x8D9A, 0x8DD0, 0x080C, 0x8DD1, 0x8DD1, 0x1E05, - 0x8DD2, 0x8DE4, 0x0844, 0x8DE5, 0x8DE5, 0x1E06, 0x8DE6, 0x8DF1, 0x0858, - 0x8DF2, 0x8DF2, 0x1E07, 0x8DF3, 0x8DFC, 0x0865, 0x8E40, 0x8E45, 0x086F, - 0x8E46, 0x8E46, 0x1E08, 0x8E47, 0x8E48, 0x0876, 0x8E49, 0x8E49, 0x1E09, - 0x8E4A, 0x8E4A, 0x0879, 0x8E4B, 0x8E4B, 0x1E0A, 0x8E4C, 0x8E57, 0x087B, - 0x8E58, 0x8E58, 0x1E0B, 0x8E59, 0x8E5F, 0x0888, 0x8E60, 0x8E60, 0x1F22, - 0x8E61, 0x8E7E, 0x0890, 0x8E80, 0x8EC5, 0x08AE, 0x8EC6, 0x8EC6, 0x1E0D, - 0x8EC7, 0x8EDA, 0x08F5, 0x8EDB, 0x8EDC, 0x1E0F, 0x8EDD, 0x8EFC, 0x090B, - 0x8F40, 0x8F49, 0x092B, 0x8F4A, 0x8F4A, 0x1E11, 0x8F4B, 0x8F54, 0x0936, - 0x8F55, 0x8F55, 0x1E12, 0x8F56, 0x8F7E, 0x0941, 0x8F80, 0x8F8B, 0x096A, - 0x8F8C, 0x8F8C, 0x1E13, 0x8F8D, 0x8F91, 0x0977, 0x8F92, 0x8F93, 0x1E15, - 0x8F94, 0x8FA2, 0x097E, 0x8FA3, 0x8FA3, 0x1E17, 0x8FA4, 0x8FB0, 0x098E, - 0x8FB1, 0x8FB1, 0x1E18, 0x8FB2, 0x8FD2, 0x099C, 0x8FD3, 0x8FD3, 0x1E1A, - 0x8FD4, 0x8FDC, 0x09BE, 0x8FDD, 0x8FDD, 0x1E1B, 0x8FDE, 0x8FE1, 0x09C8, - 0x8FE2, 0x8FE2, 0x1E1C, 0x8FE3, 0x8FFC, 0x09CD, 0x9040, 0x9048, 0x09E7, - 0x9049, 0x9049, 0x1E1D, 0x904A, 0x9077, 0x09F1, 0x9078, 0x9078, 0x1F23, - 0x9079, 0x907E, 0x0A20, 0x9080, 0x9080, 0x1E1F, 0x9081, 0x909F, 0x0A27, - 0x90A0, 0x90A0, 0x1E21, 0x90A1, 0x90E3, 0x0A47, 0x90E4, 0x90E4, 0x1E23, - 0x90E5, 0x90EE, 0x0A8B, 0x90EF, 0x90EF, 0x1E24, 0x90F0, 0x90F6, 0x0A96, - 0x90F7, 0x90F7, 0x1E26, 0x90F8, 0x90F8, 0x1F24, 0x90F9, 0x90F9, 0x0A9F, - 0x90FA, 0x90FB, 0x1F25, 0x90FC, 0x90FC, 0x0AA2, 0x9140, 0x9145, 0x0AA3, - 0x9146, 0x9146, 0x1E28, 0x9147, 0x9157, 0x0AAA, 0x9158, 0x9158, 0x1E29, - 0x9159, 0x916A, 0x0ABC, 0x916B, 0x916B, 0x1E2A, 0x916C, 0x916D, 0x0ACF, - 0x916E, 0x916E, 0x1E2B, 0x916F, 0x917D, 0x0AD2, 0x917E, 0x917E, 0x1E2C, - 0x9180, 0x9188, 0x0AE2, 0x9189, 0x9189, 0x1E2D, 0x918A, 0x91B4, 0x0AEC, - 0x91B5, 0x91B5, 0x1F27, 0x91B6, 0x91BA, 0x0B18, 0x91BB, 0x91BB, 0x1E2E, - 0x91BC, 0x91CA, 0x0B1E, 0x91CB, 0x91CB, 0x1E2F, 0x91CC, 0x91D9, 0x0B2E, - 0x91DA, 0x91DA, 0x1E30, 0x91DB, 0x91E0, 0x0B3D, 0x91E1, 0x91E1, 0x1E31, - 0x91E2, 0x91EC, 0x0B44, 0x91ED, 0x91ED, 0x1E32, 0x91EE, 0x91FA, 0x0B50, - 0x91FB, 0x91FB, 0x1E35, 0x91FC, 0x91FC, 0x0B5E, 0x9240, 0x9245, 0x0B5F, - 0x9246, 0x9246, 0x1E36, 0x9247, 0x9247, 0x0B66, 0x9248, 0x9248, 0x1E37, - 0x9249, 0x924B, 0x0B68, 0x924C, 0x924D, 0x1E39, 0x924E, 0x925B, 0x0B6D, - 0x925C, 0x925C, 0x1E3B, 0x925D, 0x927E, 0x0B7C, 0x9280, 0x928F, 0x0B9E, - 0x9290, 0x9290, 0x1E3C, 0x9291, 0x9294, 0x0BAF, 0x9295, 0x9295, 0x1E3D, - 0x9296, 0x929B, 0x0BB4, 0x929C, 0x929C, 0x1E3E, 0x929D, 0x92BA, 0x0BBB, - 0x92BB, 0x92BB, 0x1E3F, 0x92BC, 0x92C5, 0x0BDA, 0x92C6, 0x92C6, 0x1E40, - 0x92C7, 0x92C7, 0x0BE5, 0x92C8, 0x92C8, 0x1E41, 0x92C9, 0x92CC, 0x0BE7, - 0x92CD, 0x92CD, 0x1E43, 0x92CE, 0x92FC, 0x0BEC, 0x9340, 0x9340, 0x0C1B, - 0x9341, 0x9341, 0x1E44, 0x9342, 0x9345, 0x0C1D, 0x9346, 0x9346, 0x1E45, - 0x9347, 0x934C, 0x0C22, 0x934D, 0x934D, 0x1E46, 0x934E, 0x9354, 0x0C29, - 0x9355, 0x9355, 0x1E47, 0x9356, 0x935D, 0x0C31, 0x935E, 0x935E, 0x1E48, - 0x935F, 0x9366, 0x0C3A, 0x9367, 0x9367, 0x1E49, 0x9368, 0x9369, 0x0C43, - 0x936A, 0x936A, 0x1E4A, 0x936B, 0x936F, 0x0C46, 0x9370, 0x9370, 0x1F28, - 0x9371, 0x9371, 0x1E4C, 0x9372, 0x937E, 0x0C4D, 0x9380, 0x9383, 0x0C5A, - 0x9384, 0x9384, 0x1E4D, 0x9385, 0x9397, 0x0C5F, 0x9398, 0x9398, 0x1E4E, - 0x9399, 0x93BF, 0x0C73, 0x93C0, 0x93C0, 0x1E50, 0x93C1, 0x93D1, 0x0C9B, - 0x93D2, 0x93D2, 0x1E51, 0x93D3, 0x93D8, 0x0CAD, 0x93D9, 0x93D9, 0x1E53, - 0x93DA, 0x93E3, 0x0CB4, 0x93E4, 0x93E5, 0x1E56, 0x93E6, 0x93E7, 0x0CC0, - 0x93E8, 0x93E8, 0x1E58, 0x93E9, 0x93F3, 0x0CC3, 0x93F4, 0x93F4, 0x1EC0, - 0x93F5, 0x93FC, 0x0CCF, 0x9440, 0x9447, 0x0CD7, 0x9448, 0x9448, 0x1E59, - 0x9449, 0x9449, 0x1F29, 0x944A, 0x9457, 0x0CE1, 0x9458, 0x9458, 0x1E5A, - 0x9459, 0x9475, 0x0CF0, 0x9476, 0x9476, 0x1E5B, 0x9477, 0x947E, 0x0D0E, - 0x9480, 0x9486, 0x0D16, 0x9487, 0x9487, 0x1E5C, 0x9488, 0x9488, 0x0D1E, - 0x9489, 0x9489, 0x1E5D, 0x948A, 0x948C, 0x0D20, 0x948D, 0x948D, 0x1E5E, - 0x948E, 0x94A1, 0x0D24, 0x94A2, 0x94A2, 0x1E5F, 0x94A3, 0x94AB, 0x0D39, - 0x94AC, 0x94AC, 0x1E60, 0x94AD, 0x94AD, 0x0D43, 0x94AE, 0x94AE, 0x1E61, - 0x94AF, 0x94BD, 0x0D45, 0x94BE, 0x94BE, 0x1F2A, 0x94BF, 0x94D1, 0x0D55, - 0x94D2, 0x94D2, 0x1E62, 0x94D3, 0x94F2, 0x0D69, 0x94F3, 0x94F3, 0x1E64, - 0x94F4, 0x94FC, 0x0D8A, 0x9540, 0x9540, 0x0D93, 0x9541, 0x9542, 0x1E65, - 0x9543, 0x954D, 0x0D96, 0x954E, 0x954E, 0x1E67, 0x954F, 0x9550, 0x0DA2, - 0x9551, 0x9551, 0x1E68, 0x9552, 0x9553, 0x0DA5, 0x9554, 0x9554, 0x1E69, - 0x9555, 0x955E, 0x0DA8, 0x955F, 0x955F, 0x1E6A, 0x9560, 0x956C, 0x0DB3, - 0x956D, 0x956D, 0x1E6B, 0x956E, 0x957E, 0x0DC1, 0x9580, 0x95C0, 0x0DD2, - 0x95C1, 0x95C1, 0x1E6D, 0x95C2, 0x95CA, 0x0E14, 0x95CB, 0x95CB, 0x1E6E, - 0x95CC, 0x95D0, 0x0E1E, 0x95D1, 0x95D1, 0x1F2B, 0x95D2, 0x95D7, 0x0E24, - 0x95D8, 0x95D8, 0x1E6F, 0x95D9, 0x95F6, 0x0E2B, 0x95F7, 0x95F7, 0x1E70, - 0x95F8, 0x95FC, 0x0E4A, 0x9640, 0x9647, 0x0E4F, 0x9648, 0x9648, 0x1E72, - 0x9649, 0x9669, 0x0E58, 0x966A, 0x966A, 0x1E73, 0x966B, 0x967E, 0x0E7A, - 0x9680, 0x968F, 0x0E8E, 0x9690, 0x9690, 0x1E74, 0x9691, 0x9697, 0x0E9F, - 0x9698, 0x9698, 0x1F2C, 0x9699, 0x96CA, 0x0EA7, 0x96CB, 0x96CB, 0x1E75, - 0x96CC, 0x96D6, 0x0EDA, 0x96D7, 0x96D7, 0x1E76, 0x96D8, 0x96DC, 0x0EE6, - 0x96DD, 0x96DD, 0x1E77, 0x96DE, 0x96DF, 0x0EEC, 0x96E0, 0x96E0, 0x1E78, - 0x96E1, 0x96F7, 0x0EEF, 0x96F8, 0x96F8, 0x1E79, 0x96F9, 0x96F9, 0x0F07, - 0x96FA, 0x96FA, 0x1E7A, 0x96FB, 0x96FC, 0x0F09, 0x9740, 0x9750, 0x0F0B, - 0x9751, 0x9751, 0x1E7C, 0x9752, 0x976E, 0x0F1D, 0x976F, 0x976F, 0x1E7D, - 0x9770, 0x9772, 0x0F3B, 0x9773, 0x9773, 0x1E7E, 0x9774, 0x977E, 0x0F3F, - 0x9780, 0x9788, 0x0F4A, 0x9789, 0x9789, 0x1E7F, 0x978A, 0x97F7, 0x0F54, - 0x97F8, 0x97F9, 0x1E81, 0x97FA, 0x97FA, 0x1F2D, 0x97FB, 0x97FC, 0x0FC5, - 0x9840, 0x9840, 0x1E83, 0x9841, 0x984F, 0x0FC8, 0x9850, 0x9850, 0x1E84, - 0x9851, 0x9857, 0x0FD8, 0x9858, 0x9858, 0x1E85, 0x9859, 0x9872, 0x0FE0, - 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x9940, 0x1058, 0x9941, 0x9941, 0x1F2E, - 0x9942, 0x995B, 0x105A, 0x995C, 0x995C, 0x1E86, 0x995D, 0x996B, 0x1075, - 0x996C, 0x996C, 0x1E89, 0x996D, 0x997E, 0x1085, 0x9980, 0x99B5, 0x1097, - 0x99B6, 0x99B6, 0x1F2F, 0x99B7, 0x99FC, 0x10CE, 0x9A40, 0x9A4E, 0x1114, - 0x9A4F, 0x9A4F, 0x1E8A, 0x9A50, 0x9A58, 0x1124, 0x9A59, 0x9A59, 0x1E8B, - 0x9A5A, 0x9A66, 0x112E, 0x9A67, 0x9A67, 0x1F30, 0x9A68, 0x9A7C, 0x113C, - 0x9A7D, 0x9A7D, 0x1E8D, 0x9A7E, 0x9A7E, 0x1152, 0x9A80, 0x9A8A, 0x1153, - 0x9A8B, 0x9A8B, 0x1E8E, 0x9A8C, 0x9A8C, 0x1F31, 0x9A8D, 0x9AC1, 0x1160, - 0x9AC2, 0x9AC2, 0x1E8F, 0x9AC3, 0x9AC3, 0x1F32, 0x9AC4, 0x9AE9, 0x1197, - 0x9AEA, 0x9AEA, 0x1F33, 0x9AEB, 0x9AFC, 0x11BE, 0x9B40, 0x9B5B, 0x11D0, - 0x9B5C, 0x9B5C, 0x1E90, 0x9B5D, 0x9B7E, 0x11ED, 0x9B80, 0x9B82, 0x120F, - 0x9B83, 0x9B83, 0x1E91, 0x9B84, 0x9B97, 0x1213, 0x9B98, 0x9B98, 0x1F34, - 0x9B99, 0x9B9F, 0x1228, 0x9BA0, 0x9BA0, 0x1E92, 0x9BA1, 0x9BFA, 0x1230, - 0x9BFB, 0x9BFC, 0x1F35, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CA1, 0x12CB, - 0x9CA2, 0x9CA2, 0x1E94, 0x9CA3, 0x9CFC, 0x12EE, 0x9D40, 0x9D46, 0x1348, - 0x9D47, 0x9D47, 0x1F37, 0x9D48, 0x9D7E, 0x1350, 0x9D80, 0x9D80, 0x1E95, - 0x9D81, 0x9D8B, 0x1388, 0x9D8C, 0x9D8C, 0x1E96, 0x9D8D, 0x9DB6, 0x1394, - 0x9DB7, 0x9DB7, 0x1E97, 0x9DB8, 0x9DF7, 0x13BF, 0x9DF8, 0x9DF8, 0x1F38, - 0x9DF9, 0x9DFC, 0x1400, 0x9E40, 0x9E63, 0x1404, 0x9E64, 0x9E64, 0x1E99, - 0x9E65, 0x9E7E, 0x1429, 0x9E80, 0x9E8A, 0x1443, 0x9E8B, 0x9E8B, 0x1E9B, - 0x9E8C, 0x9EFC, 0x144F, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9F80, 0x14FF, - 0x9F81, 0x9F81, 0x1F39, 0x9F82, 0x9FCD, 0x1501, 0x9FCE, 0x9FCE, 0x1E9D, - 0x9FCF, 0x9FD3, 0x154E, 0x9FD4, 0x9FD4, 0x1F3A, 0x9FD5, 0x9FF3, 0x1554, - 0x9FF4, 0x9FF4, 0x1F3B, 0x9FF5, 0x9FFC, 0x1574, 0xE040, 0xE07E, 0x157C, - 0xE080, 0xE092, 0x15BB, 0xE093, 0xE093, 0x1E9E, 0xE094, 0xE0A3, 0x15CF, - 0xE0A4, 0xE0A4, 0x1E9F, 0xE0A5, 0xE0DC, 0x15E0, 0xE0DD, 0xE0DD, 0x1EA0, - 0xE0DE, 0xE0FC, 0x1619, 0xE140, 0xE149, 0x1638, 0xE14A, 0xE14A, 0x1EA1, - 0xE14B, 0xE17E, 0x1643, 0xE180, 0xE1EC, 0x1677, 0xE1ED, 0xE1ED, 0x1EA5, - 0xE1EE, 0xE1FC, 0x16E5, 0xE240, 0xE268, 0x16F4, 0xE269, 0xE269, 0x1EA6, - 0xE26A, 0xE272, 0x171E, 0xE273, 0xE273, 0x1EA7, 0xE274, 0xE277, 0x1728, - 0xE278, 0xE278, 0x1F3C, 0xE279, 0xE27E, 0x172D, 0xE280, 0xE2B6, 0x1733, - 0xE2B7, 0xE2B7, 0x1EA8, 0xE2B8, 0xE2BD, 0x176B, 0xE2BE, 0xE2BE, 0x1F3D, - 0xE2BF, 0xE2E1, 0x1772, 0xE2E2, 0xE2E2, 0x1EA9, 0xE2E3, 0xE2EB, 0x1796, - 0xE2EC, 0xE2EC, 0x1EAA, 0xE2ED, 0xE2FC, 0x17A0, 0xE340, 0xE357, 0x17B0, - 0xE358, 0xE358, 0x1EAB, 0xE359, 0xE359, 0x17C9, 0xE35A, 0xE35A, 0x1EAC, - 0xE35B, 0xE364, 0x17CB, 0xE365, 0xE365, 0x1EAD, 0xE366, 0xE37E, 0x17D6, - 0xE380, 0xE3C6, 0x17EF, 0xE3C7, 0xE3C7, 0x1F3E, 0xE3C8, 0xE3FC, 0x1837, - 0xE440, 0xE47E, 0x186C, 0xE480, 0xE483, 0x18AB, 0xE484, 0xE484, 0x1EAF, - 0xE485, 0xE488, 0x18B0, 0xE489, 0xE489, 0x1EB0, 0xE48A, 0xE491, 0x18B5, - 0xE492, 0xE492, 0x1EB1, 0xE493, 0xE4B8, 0x18BE, 0xE4B9, 0xE4B9, 0x1EB3, - 0xE4BA, 0xE4CA, 0x18E5, 0xE4CB, 0xE4CB, 0x1F3F, 0xE4CC, 0xE4FC, 0x18F7, - 0xE540, 0xE57E, 0x1928, 0xE580, 0xE59D, 0x1967, 0xE59E, 0xE59E, 0x1F40, - 0xE59F, 0xE5B9, 0x1986, 0xE5BA, 0xE5BB, 0x1F41, 0xE5BC, 0xE5EC, 0x19A3, - 0xE5ED, 0xE5ED, 0x1EB8, 0xE5EE, 0xE5FC, 0x19D5, 0xE640, 0xE650, 0x19E4, - 0xE651, 0xE651, 0x1EB9, 0xE652, 0xE67E, 0x19F6, 0xE680, 0xE685, 0x1A23, - 0xE686, 0xE686, 0x1EBA, 0xE687, 0xE6E6, 0x1A2A, 0xE6E7, 0xE6E7, 0x1EBC, - 0xE6E8, 0xE6FC, 0x1A8B, 0xE740, 0xE76C, 0x1AA0, 0xE76D, 0xE76D, 0x1EBE, - 0xE76E, 0xE77E, 0x1ACE, 0xE780, 0xE7A6, 0x1ADF, 0xE7A7, 0xE7A7, 0x1EC1, - 0xE7A8, 0xE7BA, 0x1B07, 0xE7BB, 0xE7BB, 0x1EC2, 0xE7BC, 0xE7FC, 0x1B1B, - 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8CE, 0x1B9B, 0xE8CF, 0xE8CF, 0x1EC7, - 0xE8D0, 0xE8FC, 0x1BEB, 0xE940, 0xE977, 0x1C18, 0xE978, 0xE978, 0x1F43, - 0xE979, 0xE97E, 0x1C51, 0xE980, 0xE9AA, 0x1C57, 0xE9AB, 0xE9AB, 0x1ECA, - 0xE9AC, 0xE9B9, 0x1C83, 0xE9BA, 0xE9BA, 0x1ECB, 0xE9BB, 0xE9CB, 0x1C92, - 0xE9CC, 0xE9CC, 0x1ECC, 0xE9CD, 0xE9FC, 0x1CA4, 0xEA40, 0xEA6F, 0x1CD4, - 0xEA70, 0xEA70, 0x1ECD, 0xEA71, 0xEA71, 0x1F44, 0xEA72, 0xEA7E, 0x1D06, - 0xEA80, 0xEA9C, 0x1D13, 0xEA9D, 0xEA9D, 0x1ECE, 0xEA9E, 0xEAA2, 0x1D31, - 0xEAA3, 0xEAA4, 0x205C, 0xEC40, 0xEC42, 0x1F45, 0xEC46, 0xEC46, 0x1F48, - 0xEC47, 0xEC47, 0x0300, 0xEC48, 0xEC48, 0x02FA, 0xEC49, 0xEC49, 0x02F9, - 0xEC4D, 0xEC57, 0x1F49, 0xEC5B, 0xEC5D, 0x1DB1, 0xEC5E, 0xEC5E, 0x1F54, - 0xEC5F, 0xEC5F, 0x1DB7, 0xEC60, 0xEC62, 0x1F55, 0xEC63, 0xEC65, 0x1DB4, - 0xEC66, 0xEC6F, 0x1F58, 0xEC70, 0xEC70, 0x0303, 0xEC71, 0xEC71, 0x1F62, - 0xEC72, 0xEC72, 0x0304, 0xEC73, 0xEC74, 0x1F63, 0xEC76, 0xEC76, 0x1F65, - 0xEC78, 0xEC78, 0x1DA4, 0xEC79, 0xEC79, 0x1DA1, 0xEC7A, 0xEC7A, 0x1F66, - 0xEC7B, 0xEC7B, 0x1DA2, 0xEC7C, 0xEC7E, 0x1F67, 0xEC80, 0xEC80, 0x1DA6, - 0xEC81, 0xEC81, 0x1F6A, 0xEC82, 0xEC82, 0x1DA8, 0xEC83, 0xEC83, 0x1DAC, - 0xEC84, 0xEC84, 0x1F6B, 0xEC85, 0xEC85, 0x1DAE, 0xEC86, 0xEC86, 0x1DAB, - 0xEC87, 0xEC88, 0x1F6C, 0xEC89, 0xEC89, 0x1DAF, 0xEC8A, 0xEC90, 0x1F6E, - 0xEC94, 0xEC99, 0x1F75, 0xEC9A, 0xEC9A, 0x1DBA, 0xEC9B, 0xEC9B, 0x1F7B, - 0xEC9E, 0xEC9E, 0x1F7C, 0xECA7, 0xECB0, 0x1F7D, 0xECB2, 0xECC5, 0x1F87, - 0xECC7, 0xECDA, 0x1D83, 0xECDB, 0xECDB, 0x1F9B, 0xECDC, 0xECE5, 0x1D97, - 0xECE9, 0xECFC, 0x1F9C, 0xED40, 0xED59, 0x1FB0, 0xED64, 0xED64, 0x1F16, - 0xED68, 0xED69, 0x1FCA, 0xED6A, 0xED6A, 0x1DC4, 0xED6B, 0xED6D, 0x1FCC, - 0xED6E, 0xED6E, 0x1DC3, 0xED6F, 0xED73, 0x1FCF, 0xED74, 0xED74, 0x1DC2, - 0xED75, 0xED78, 0x1FD4, 0xED7C, 0xED7E, 0x1FD8, 0xED80, 0xED8A, 0x1FDB, - 0xED8F, 0xED9E, 0x1FE6, 0xEF40, 0xEF41, 0x1ECF, 0xEF42, 0xEF42, 0x204C, - 0xEF43, 0xEF43, 0x2052, 0xEF44, 0xEF4D, 0x1ED1, 0xEF4E, 0xEF4E, 0x205A, - 0xEF4F, 0xEF4F, 0x2053, 0xEF50, 0xEF50, 0x2058, 0xEF51, 0xEF51, 0x2055, - 0xEF52, 0xEF63, 0x1EDB, 0xEF64, 0xEF79, 0x1EEE, 0xEF7A, 0xEF7B, 0x2048, - 0xEF8D, 0xEF90, 0x02E0, 0xEF91, 0xEF94, 0x1FF6, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp deleted file mode 100644 index e99b1dee2f..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_Add_RKSJ_V_1[57 * 3] = { - 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, - 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6, - 0x8165, 0x8165, 0x205A, 0x8166, 0x8166, 0x2053, 0x8167, 0x8167, 0x2058, - 0x8168, 0x8168, 0x2055, 0x8169, 0x817A, 0x1EDB, 0x829F, 0x829F, 0x1EEE, - 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0, 0x82A5, 0x82A5, 0x1EF1, - 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3, 0x82E1, 0x82E1, 0x1EF4, - 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6, 0x82EC, 0x82EC, 0x1EF7, - 0x82F3, 0x82F4, 0x2048, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9, - 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC, - 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF, - 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02, - 0xEC78, 0xEC78, 0x1F07, 0xEC79, 0xEC79, 0x1F04, 0xEC7A, 0xEC7A, 0x2089, - 0xEC7B, 0xEC7B, 0x1F05, 0xEC7C, 0xEC7C, 0x208A, 0xEC7D, 0xEC7E, 0x2093, - 0xEC80, 0xEC80, 0x1F09, 0xEC81, 0xEC81, 0x2092, 0xEC82, 0xEC82, 0x1F0B, - 0xEC83, 0xEC83, 0x1F0F, 0xEC84, 0xEC84, 0x209C, 0xEC85, 0xEC85, 0x1F11, - 0xEC86, 0xEC86, 0x1F0E, 0xEC87, 0xEC87, 0x2098, 0xEC88, 0xEC88, 0x209B, - 0xEC89, 0xEC89, 0x1F12, 0xEC8A, 0xEC8A, 0x2097, 0xEC8B, 0xEC8C, 0x209D, - 0xEC8D, 0xEC8D, 0x20A6, 0xEC8E, 0xEC8E, 0x20A5, 0xEC8F, 0xEC8F, 0x20A1, - 0xEC90, 0xEC90, 0x20A4, 0xEC95, 0xEC95, 0x2084, 0xEF92, 0xEF92, 0x208D, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp deleted file mode 100644 index 997d0018f4..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp +++ /dev/null @@ -1,1726 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_Japan1CID2Unicode_4[15444] = { - 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, - 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, - 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, - 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, - 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, - 0x007C, 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, - 0x201C, 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, - 0x00B7, 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, - 0x00BF, 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, - 0x030B, 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, - 0x00BA, 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, - 0x00AC, 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, - 0x00BD, 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, - 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, - 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, - 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, - 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, - 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, - 0x017D, 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x0020, 0x0021, 0x0022, - 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, - 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, - 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, - 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, - 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, - 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, - 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, - 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, - 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, - 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, - 0x007D, 0x203E, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66, - 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F, - 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78, - 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81, - 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A, - 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, 0xFF93, - 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C, - 0xFF9D, 0xFF9E, 0xFF9F, 0xFF40, 0x30F0, 0x30F1, 0x30EE, 0x30AB, 0x30B1, - 0x30F4, 0x30AC, 0x30AE, 0x30B0, 0x30B2, 0x30B4, 0x30B6, 0x30B8, 0x30BA, - 0x30BC, 0x30BE, 0x30C0, 0x30C2, 0x30C5, 0x30C7, 0x30C9, 0x30D0, 0x30D1, - 0x30D3, 0x30D4, 0x30D6, 0x30D7, 0x30D9, 0x30DA, 0x30DC, 0x30DD, 0xFF60, - 0x301D, 0x301E, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, - 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, - 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, - 0x2519, 0x251A, 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, - 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, - 0x252B, 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, - 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, - 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, - 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 0x2032, 0x00A8, 0x2036, - 0x005B, 0x005D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300E, 0x300F, 0x3010, - 0x3011, 0x2012, 0xFF60, 0x3092, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, - 0x3083, 0x3085, 0x3087, 0x3063, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, - 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, - 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, - 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, - 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, - 0x308C, 0x308D, 0x308F, 0x3093, 0x3090, 0x3091, 0x308E, 0x304C, 0x304E, - 0x3050, 0x3052, 0x3054, 0x3056, 0x3068, 0x305A, 0x305C, 0x305E, 0x3060, - 0x3062, 0x3065, 0x3067, 0x3069, 0x3070, 0x3071, 0x3073, 0x3074, 0x3076, - 0x3077, 0x3079, 0x307A, 0x307C, 0x307D, 0x00C4, 0x00F9, 0x00E9, 0x00ED, - 0x00DF, 0x00E7, 0x00C7, 0x00D1, 0x00F1, 0x00A2, 0x00A3, 0x00F3, 0x00FA, - 0x00A1, 0x00BF, 0x00BD, 0x00D6, 0x00DC, 0x00E4, 0x00EB, 0x00EF, 0x00F6, - 0x00DC, 0x00E2, 0x00EA, 0x00EE, 0x00F4, 0x00FC, 0x00E0, 0x00E9, 0x25B2, - 0x00E1, 0x007E, 0x0030, 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB, - 0xFF1A, 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8, - 0xFF3E, 0x203E, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, - 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C, 0xFF5E, - 0x2016, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08, - 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, - 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B, - 0xFF0D, 0x00B1, 0x00D7, 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266, - 0x2267, 0x221E, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, - 0xFFE5, 0xFF04, 0x00A2, 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20, - 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, - 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, 0x2190, - 0x2191, 0x2193, 0x3013, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283, - 0x222A, 0x2229, 0x2227, 0x2228, 0x00AC, 0x21D2, 0x21D4, 0x2200, 0x2203, - 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x226A, 0x226B, - 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0x212B, 0x2030, 0x266F, - 0x266D, 0x266A, 0x2020, 0x2021, 0x00B6, 0x25EF, 0xFF10, 0xFF11, 0xFF12, - 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF21, 0xFF22, - 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, - 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, - 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, - 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, - 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, - 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x3041, 0x3042, 0x3043, 0x3044, - 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, - 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, - 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, - 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, - 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, - 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, - 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, - 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, - 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, - 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, - 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, - 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, - 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, - 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, - 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, - 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, - 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, - 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, - 0x30F4, 0x30F5, 0x30F6, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, - 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, - 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, - 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, - 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x0410, 0x0411, 0x0412, - 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, - 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, - 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, - 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, - 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, - 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, - 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, - 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022, - 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6, - 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4, - 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309, - 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D, - 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170, - 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3, - 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF, - 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328, - 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15, - 0x98F2, 0x6DEB, 0x80E4, 0x852D, 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B, - 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA, - 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B, - 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2, - 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804, - 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B, - 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A, - 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6, - 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5, - 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869, - 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC, 0x62BC, - 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E, - 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876, - 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B, - 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609, - 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C, - 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB, - 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6, - 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5, - 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A, 0x89E3, - 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0, - 0x6212, 0x62D0, 0x6539, 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C, - 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE, - 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB, - 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, 0x67FF, - 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C, - 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03, - 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E, - 0x639B, 0x7B20, 0x6A2B, 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D, - 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14, - 0x9C39, 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2, - 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431, 0x7CA5, 0x5208, - 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, 0x52E7, - 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79, - 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA, - 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3, - 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266, - 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2, - 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9, - 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858, - 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, 0x5B09, 0x5BC4, - 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F, - 0x68CB, 0x68C4, 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948, - 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC, - 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C, - 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB, - 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854, - 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650, - 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13, - 0x6025, 0x6551, 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76, - 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45, - 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8, - 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC, 0x4F9B, 0x4FA0, 0x50D1, - 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC, - 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559, - 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E, - 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681, - 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4, - 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD, - 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1, - 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9, - 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0, - 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51, - 0x5C48, 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688, - 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13, - 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211, - 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075, - 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13, - 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A, - 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE, - 0x9BE8, 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20, - 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039, - 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC, - 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372, 0x691C, 0x6A29, 0x727D, 0x72AC, - 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2, - 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F, - 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237, - 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1, - 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0, - 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237, - 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, 0x543E, - 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E, - 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019, - 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411, - 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5, - 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C, - 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821, - 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687, - 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003, - 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B, - 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D, - 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5, - 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD, - 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD, - 0x60DA, 0x9AA8, 0x72DB, 0x8FBC, 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764, - 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7, - 0x75D5, 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F, - 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF, - 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E, - 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D, - 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1, - 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742, - 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA, - 0x4F5C, 0x524A, 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56, - 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237, 0x5BDF, - 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6, - 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, 0x5C71, - 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82, - 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5, - 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB, - 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D, - 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B, - 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102, - 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, 0x8CDC, - 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA, - 0x6148, 0x6301, 0x6642, 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4, - 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F, - 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1, - 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA, - 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E, - 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17, - 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A, - 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31, - 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0, - 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF, - 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468, 0x5B97, 0x5C31, - 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D, - 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F, - 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341, - 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283, - 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F, - 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C, - 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96, 0x6F64, - 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240, - 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7, - 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664, - 0x50B7, 0x511F, 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531, - 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A, - 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377, - 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35, 0x6CBC, - 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D, - 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6, - 0x848B, 0x8549, 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61, - 0x8CDE, 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08, - 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38, - 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8, - 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, 0x62ED, 0x690D, 0x6B96, - 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B, - 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E, - 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9, - 0x771F, 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A, - 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875, - 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D, - 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017, 0x5439, 0x5782, - 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, 0x8870, 0x9042, - 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570, - 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0, - 0x88FE, 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4, - 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F, - 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE, - 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192, - 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A, - 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC, - 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298, - 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9, - 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247, - 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E, - 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA, 0x7E4A, 0x7FA8, 0x817A, 0x821B, - 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291, - 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55, - 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A, - 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44, - 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2, - 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3, - 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD, 0x65E9, 0x66F9, 0x5DE3, - 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF, - 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5, - 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E, - 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F, - 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF, - 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D, - 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815, - 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28, - 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B, - 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8, - 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C, - 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258, - 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE, - 0x8338, 0x51E7, 0x86F8, 0x53EA, 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A, - 0x8131, 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D, - 0x8AB0, 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E, - 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6, - 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80, - 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, 0x6065, 0x667A, - 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9, - 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1, - 0x7740, 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8, - 0x866B, 0x8877, 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A, - 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5, 0x5E16, - 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2, - 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178, 0x8776, - 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5, - 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25, - 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802, - 0x63B4, 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354, - 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3, - 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824, - 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, 0x633A, - 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, 0x8A02, - 0x8AE6, 0x8E44, 0x9013, 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458, - 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2, - 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55, - 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D, - 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC, - 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014, - 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012, - 0x5012, 0x515A, 0x51AC, 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, - 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC, - 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8, - 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230, 0x8463, 0x8569, - 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676, - 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7, - 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0, - 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4, - 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A, - 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566, - 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3, - 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962, - 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C, - 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5, - 0x4E73, 0x5165, 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D, - 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5, - 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2, - 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4, - 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834, - 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557, - 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9, - 0x5A92, 0x6885, 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A, - 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD, - 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD, - 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6, 0x51FD, 0x7BB1, 0x7872, - 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B, - 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F, - 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A, - 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248, - 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6, - 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543, - 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249, - 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8, - 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB, - 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709, - 0x7F8E, 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D, - 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB, - 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02, - 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2, - 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C, - 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8, - 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276, - 0x6577, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299, - 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66, - 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557, - 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D, 0x798F, 0x8179, 0x8907, 0x8986, - 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B, - 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B, - 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73, - 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB, - 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909, - 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29, - 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355, 0x6B69, 0x752B, - 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD, - 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D, - 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B, - 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC, - 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C, - 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9, - 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8, - 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5, - 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3, - 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6, - 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE, - 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D, - 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D, - 0x9EBF, 0x4E07, 0x6162, 0x6E80, 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45, - 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108, - 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB, - 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E, - 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9, - 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F, - 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9, - 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F, - 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036, - 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D, - 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652, 0x8AED, - 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0, - 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531, - 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915, - 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996, - 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B, - 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981, - 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83, - 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1, - 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50, - 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E, - 0x68A8, 0x7406, 0x7483, 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678, - 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C, - 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E, - 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599, - 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2, - 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797, - 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460, - 0x5841, 0x6D99, 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1, - 0x5DBA, 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A, - 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9, - 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, 0x84EE, 0x9023, - 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, 0x52B4, - 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262, - 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984, - 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107, - 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568, - 0x6900, 0x6E7E, 0x7897, 0x8155, 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31, - 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B, - 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0, - 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE, - 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57, - 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91, - 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB, - 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A, - 0x5025, 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF, - 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A, - 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2, 0x50C9, - 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, 0x50EE, - 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114, 0x511A, - 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152, 0x514C, - 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8, - 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6, - 0x51A2, 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5, - 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0, - 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, 0x522E, - 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, 0x5254, 0x526A, - 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292, 0x5271, - 0x5288, 0x5291, 0x8FA8, 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1, - 0x52CD, 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5, - 0x52F8, 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315, - 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, - 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B, - 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, 0x53B6, - 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED, - 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436, - 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477, - 0x5470, 0x5492, 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7, - 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0x54AB, 0x54C2, - 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD, - 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, 0x552E, - 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580, - 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C, - 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC, - 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9, - 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B, 0x5664, - 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F, - 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0, - 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF, - 0x5704, 0x5709, 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7, - 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769, - 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4, - 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6, - 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870, - 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA, - 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9, - 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB, - 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C, - 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A, - 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969, 0x5978, 0x5981, 0x599D, - 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9, - 0x59DA, 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C, - 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB, - 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB, - 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43, - 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69, 0x5B70, - 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83, 0x5BA6, 0x5BB8, - 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE, - 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D, - 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E, - 0x5C53, 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79, - 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7, - 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C, - 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14, - 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C, - 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE, - 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6, - 0x5DDB, 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B, - 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F, - 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0, - 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA, - 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0, - 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11, - 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F, - 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83, - 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98, - 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1, - 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600E, - 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, 0x6041, - 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064, - 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A, - 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8, - 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D, - 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121, - 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A, - 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177, - 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F, - 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A, - 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8, - 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6, - 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209, - 0x620D, 0x620C, 0x6214, 0x621B, 0x621E, 0x6221, 0x622A, 0x622E, 0x6230, - 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268, - 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283, - 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8, - 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE, - 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D, - 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F, - 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6, - 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413, - 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476, - 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC, 0x64DA, - 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209, - 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2, - 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B, - 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555, - 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A, - 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC, - 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603, - 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649, - 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, 0x6670, - 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9, - 0x66C9, 0x66BE, 0x66BC, 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F, - 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726, - 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746, - 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C, - 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4, - 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE, - 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840, - 0x684D, 0x6832, 0x684E, 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F, - 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9, - 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA, - 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD, 0x68D4, 0x68E7, - 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0, - 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977, - 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D, - 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE, - 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD, - 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4, - 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7, - 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1, - 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78, 0x6A47, 0x6A62, - 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84, - 0x6AA2, 0x6AA3, 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3, - 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05, - 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC, - 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B, - 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D, - 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1, - 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB, - 0x6BF3, 0x6BEF, 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23, - 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B, - 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD, - 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA, 0x6CDB, 0x6CEF, - 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19, - 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79, - 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5, - 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2, - 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E, - 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76, - 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38, - 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4, - 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11, - 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32, - 0x6ECC, 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80, - 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91, - 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA, - 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009, - 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74, - 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099, - 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB, - 0x70DD, 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188, - 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195, - 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE, - 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC, 0x71F9, 0x71FF, 0x720D, 0x7210, - 0x721B, 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F, - 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287, - 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4, - 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317, - 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325, 0x733E, - 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370, 0x7378, 0x7375, - 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE, - 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455, - 0x743F, 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A, - 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1, - 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8, - 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, 0x7513, - 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B, - 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, 0x756D, 0x7578, 0x7576, - 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D, - 0x75A5, 0x75A3, 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC, - 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF, - 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609, - 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763B, - 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669, - 0x766A, 0x7667, 0x766C, 0x7670, 0x7672, 0x7676, 0x7678, 0x767C, 0x7680, - 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0, - 0x76B4, 0x76B8, 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE, - 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704, - 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747, - 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, 0x778E, - 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC, - 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE, - 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874, - 0x7886, 0x787C, 0x789A, 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1, - 0x78C6, 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0x78E7, - 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B, - 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F, - 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA, - 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18, - 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43, - 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D, - 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6, - 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5, - 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0, - 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35, - 0x7B28, 0x7B36, 0x7B50, 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45, - 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D, - 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D, - 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9, - 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3, - 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37, - 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58, - 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4, - 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE, - 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2, - 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06, 0x7D02, 0x7D1C, - 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46, - 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93, - 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5, - 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F, - 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05, - 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22, - 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32, 0x7E3A, - 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69, - 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89, - 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C, - 0x7F38, 0x7F3A, 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55, - 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82, - 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A, - 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5, - 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9, - 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021, - 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F, - 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F, - 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC, - 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF, - 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, 0x968B, 0x8146, 0x813E, - 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, 0x8183, - 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F, - 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2, - 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF, - 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207, - 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240, - 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262, 0x8268, 0x826A, - 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB, - 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3, - 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309, - 0x82D9, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350, - 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F, - 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373, - 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD, - 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D, - 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C, - 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446, - 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F, - 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1, - 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514, - 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548, 0x8541, 0x8602, 0x854B, 0x8555, - 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B, - 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF, - 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613, - 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D, - 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9, 0x86AA, - 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823, - 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF, 0x86DB, 0x86EF, 0x8712, - 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9, - 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760, - 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759, - 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB, - 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6, - 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7, - 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, - 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862, - 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882, - 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF, - 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902, - 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943, - 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938, - 0x894C, 0x891D, 0x8960, 0x895E, 0x8966, 0x8964, 0x896D, 0x896A, 0x896F, - 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1, - 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0, - 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10, - 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46, - 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8, - 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2, - 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2, - 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10, - 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41, - 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B, 0x8B5F, - 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93, - 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E, - 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85, - 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA, - 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3, - 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F, - 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D, - 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA, - 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, 0x8DFC, - 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35, - 0x8E30, 0x8E34, 0x8E4A, 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59, - 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81, - 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99, - 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8, - 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05, - 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26, - 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46, - 0x8F4E, 0x8F57, 0x8F5C, 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3, - 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087, - 0x8FF4, 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E, - 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F, 0x9050, - 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068, - 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, 0x9080, 0x908A, - 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248, - 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158, - 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2, - 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9, - 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6, - 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245, - 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, 0x9296, - 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA, - 0x9344, 0x932E, 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B, - 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394, - 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0, - 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, - 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460, - 0x9462, 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A, - 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596, - 0x9598, 0x9599, 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9, - 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6, - 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642, - 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E, 0x965D, 0x965F, 0x9666, - 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1, - 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9, - 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708, - 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730, - 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C, - 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779, 0x9785, - 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8, - 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC, - 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838, - 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F, - 0x9870, 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4, - 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918, - 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E, - 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, 0x994C, 0x9955, - 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD, - 0x99D8, 0x99D1, 0x99ED, 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01, - 0x9A0F, 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40, - 0x9A43, 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65, - 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF, - 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF, - 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, 0x9AFB, 0x9B06, 0x9B18, 0x9B1A, - 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E, - 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58, - 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8, - 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3, - 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15, - 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04, - 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, 0x9C32, 0x9C46, - 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0, - 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23, - 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48, - 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87, - 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1, - 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8, - 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, - 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D, - 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF, - 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF, - 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08, - 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63, - 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72, - 0x9F76, 0x9F95, 0x9F9C, 0x9FA0, 0x582F, 0x69C7, 0x9059, 0x7464, 0x2642, - 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, - 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, - 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, - 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, - 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, - 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, - 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, - 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, - 0x2548, 0x2549, 0x254A, 0x254B, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, - 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, - 0x246E, 0x246F, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, - 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3349, 0x3314, - 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351, 0x3357, 0x330D, - 0x3326, 0x3323, 0x332B, 0x334A, 0x333B, 0x339C, 0x339D, 0x339E, 0x338E, - 0x338F, 0x33C4, 0x33A1, 0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4, - 0x32A5, 0x32A6, 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D, - 0x337C, 0x222E, 0x2211, 0x221A, 0x22A5, 0x2220, 0x221F, 0x22BF, 0x2229, - 0x222A, 0x555E, 0x98F4, 0x6EA2, 0x9C2F, 0x6DEB, 0x8FC2, 0x6B1D, 0x53A9, - 0x958F, 0x5642, 0x990C, 0x7130, 0x8956, 0x9DD7, 0x8FE6, 0x6062, 0x62D0, - 0x6666, 0x559D, 0x845B, 0x9784, 0x5699, 0x6F97, 0x7FF0, 0x7FEB, 0x5FBD, - 0x7947, 0x4FE0, 0x537F, 0x50C5, 0x8EC0, 0x55B0, 0x6ADB, 0x5C51, 0x9774, - 0x7941, 0x6167, 0x7A3D, 0x7E6B, 0x834A, 0x9699, 0x5026, 0x5ACC, 0x6372, - 0x9E7C, 0x8AFA, 0x5DF7, 0x663B, 0x6E9D, 0x9EB4, 0x9D60, 0x7511, 0x91C7, - 0x698A, 0x6805, 0x85A9, 0x9BD6, 0x9306, 0x73CA, 0x53F1, 0x5C62, 0x906E, - 0x6753, 0x707C, 0x7E61, 0x914B, 0x66D9, 0x6E1A, 0x85AF, 0x85F7, 0x54E8, - 0x5EE0, 0x68A2, 0x8523, 0x91AC, 0x9798, 0x8755, 0x9771, 0x9017, 0x7FE0, - 0x647A, 0x901D, 0x87EC, 0x64B0, 0x6813, 0x714E, 0x717D, 0x8A6E, 0x564C, - 0x9061, 0x5275, 0x6414, 0x7626, 0x905C, 0x9A52, 0x817F, 0x9EDB, 0x5544, - 0x6FEF, 0x7422, 0x86F8, 0x5DFD, 0x8FBF, 0x68DA, 0x9C48, 0x6A3D, 0x7C1E, - 0x8A3B, 0x7026, 0x51CB, 0x6357, 0x69CC, 0x939A, 0x585A, 0x6451, 0x912D, - 0x64E2, 0x6EBA, 0x5861, 0x985A, 0x5835, 0x5C60, 0x83DF, 0x8CED, 0x5858, - 0x79B1, 0x9D07, 0x7006, 0x701E, 0x5678, 0x9041, 0x9813, 0x90A3, 0x8B0E, - 0x7058, 0x6962, 0x79B0, 0x56CA, 0x724C, 0x9019, 0x79E4, 0x525D, 0x7BB8, - 0x6F51, 0x91B1, 0x633D, 0x6249, 0x6A0B, 0x67CA, 0x7A17, 0x903C, 0x5A9B, - 0x8B2C, 0x5EDF, 0x7015, 0x983B, 0x853D, 0x77A5, 0x5A29, 0x5E96, 0x6CE1, - 0x84EC, 0x9830, 0x9C52, 0x9EB5, 0x5132, 0x9905, 0x7C7E, 0x9453, 0x6108, - 0x7652, 0x7337, 0x7194, 0x8000, 0x840A, 0x907C, 0x6F23, 0x7149, 0x84EE, - 0x6994, 0x881F, 0x5154, 0x5189, 0x5195, 0x51A4, 0x5539, 0x5533, 0x55E4, - 0x5632, 0x56A5, 0x580B, 0x5ABE, 0x5BC3, 0x5C5B, 0x5E64, 0x6097, 0x6369, - 0x6406, 0x6522, 0x6583, 0x67A6, 0x67B4, 0x689B, 0x688E, 0x6E6E, 0x71D7, - 0x7228, 0x73CE, 0x7504, 0x750D, 0x7515, 0x7693, 0x787C, 0x7A31, 0x9F9D, - 0x7B99, 0x7C90, 0x7CAE, 0x7D9B, 0x7DAE, 0x7D9F, 0x7FD4, 0x822E, 0x828D, - 0x82D2, 0x8323, 0x8375, 0x8517, 0x853E, 0x8782, 0x87D2, 0x890A, 0x89AF, - 0x8ADE, 0x8B41, 0x8DDA, 0x8E09, 0x8F13, 0x8FEA, 0x8FE9, 0x9058, 0x6248, - 0x91C1, 0x95BB, 0x7762, 0x9724, 0x9760, 0x976D, 0x9824, 0x9B2E, 0x9B97, - 0x9BF2, 0x9EAA, 0x9F9C, 0x3001, 0x3002, 0x203E, 0xFF3F, 0x30FC, 0x2015, - 0x2010, 0x301C, 0x2016, 0xFF5C, 0x2026, 0x2025, 0xFF08, 0xFF09, 0x3014, - 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B, - 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF1D, 0x3041, 0x3043, - 0x3045, 0x3047, 0x3049, 0x3063, 0x3083, 0x3085, 0x3087, 0x308E, 0x30A1, - 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30C3, 0x30E3, 0x30E5, 0x30E7, 0x30EE, - 0x30F5, 0x30F6, 0x3349, 0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, - 0x3336, 0x3351, 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B, - 0x301D, 0x301E, 0x3094, 0x304B, 0x3051, 0x82A6, 0x8328, 0x5653, 0x53A9, - 0x7259, 0x6C72, 0x7B08, 0x9957, 0x62F3, 0x9910, 0x976D, 0x717D, 0x7A7F, - 0x7BAD, 0x63C3, 0x83DF, 0x7962, 0x53DB, 0x7BC7, 0x8FC4, 0x7C3E, 0x50CA, - 0x5315, 0x55A9, 0x56AE, 0x5819, 0x591B, 0x5C28, 0x5ED0, 0x5ECF, 0x6241, - 0x66C1, 0x6C08, 0x6E23, 0x6EEC, 0x7A97, 0x7BDD, 0x7FE9, 0x8422, 0x8759, - 0x880E, 0x87D2, 0x9A19, 0x9EAD, 0xFFE4, 0xFF07, 0xFF02, 0x11A8, 0x25C1, - 0x25B7, 0x21E9, 0x21E7, 0x21E6, 0x21E8, 0x25A2, 0x2667, 0x2661, 0x2664, - 0x2662, 0x33A0, 0x33A2, 0x33A4, 0x33A5, 0x3397, 0x2113, 0x3398, 0x33B3, - 0x33B2, 0x33B1, 0x33B0, 0x3385, 0x3386, 0x3387, 0x33CB, 0x3390, 0x33D4, - 0x3396, 0x3322, 0x3316, 0x3318, 0x3315, 0x3303, 0x3323, 0x3357, 0x3342, - 0x3339, 0x333B, 0x3300, 0x3331, 0x3347, 0x331E, 0x332A, 0x33CD, 0x337F, - 0x2121, 0x260E, 0x3036, 0x3020, 0x00A9, 0x00AE, 0x0000, 0x2488, 0x2489, - 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2474, 0x2475, - 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, - 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, - 0x3251, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, - 0x2178, 0x2179, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, - 0x3259, 0x325A, 0x325B, 0x249C, 0x249D, 0x249E, 0x249F, 0x24A0, 0x24A1, - 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24AA, - 0x24AB, 0x24AC, 0x24AD, 0x24AE, 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3, - 0x24B4, 0x24B5, 0x3243, 0x323D, 0x323F, 0x3234, 0x3238, 0x3233, 0x323C, - 0x3242, 0x323E, 0x3236, 0x3235, 0x323B, 0x3240, 0x323A, 0x32B0, 0x32AD, - 0x32A9, 0x32AF, 0x3294, 0x32AA, 0x3298, 0x32AB, 0x3292, 0x3291, 0x3293, - 0x32AC, 0x32AE, 0x3296, 0x23A9, 0x23A8, 0x23A7, 0xFE38, 0x23AD, 0x23AC, - 0x23AB, 0xFE38, 0x23AB, 0x23AC, 0x23AD, 0xFE38, 0x23A7, 0x23A8, 0x23A9, - 0xFE38, 0x33CC, 0x3305, 0x00BD, 0x00BC, 0x339F, 0x33A3, 0x33A6, 0xFFFD, - 0xFFFD, 0x329E, 0x3388, 0x3389, 0x33C8, 0x222D, 0x5370, 0x3230, 0x322A, - 0x322B, 0x322C, 0x322D, 0x322E, 0x322F, 0x3237, 0x3241, 0x27A1, 0x21E6, - 0x21E7, 0x21E9, 0x25C9, 0x2660, 0x2665, 0x2663, 0x2666, 0x2600, 0x2601, - 0x2602, 0x2603, 0x261E, 0x261C, 0x261D, 0x261F, 0x3299, 0x24EA, 0x216A, - 0x216B, 0xFF10, 0xFF10, 0x3000, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, - 0x2586, 0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, - 0x2589, 0x2594, 0x2595, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, - 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x25CF, 0x0ED0, 0x2571, - 0x2572, 0x2573, 0x304B, 0x3051, 0x9022, 0x8FBB, 0xFF0C, 0x00B0, 0x3013, - 0x309C, 0x309B, 0x02CF, 0xFF0E, 0x2018, 0x2019, 0x201C, 0x201D, 0x201C, - 0x201E, 0x2018, 0x201A, 0x02BA, 0x51DC, 0x7199, 0x2776, 0x2777, 0x2778, - 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x0000, 0x0000, 0x0000, - 0x217A, 0x217B, 0x0000, 0x0000, 0x0000, 0x217F, 0x210A, 0x2109, 0x0000, - 0x0000, 0x3004, 0x21C6, 0x21C4, 0x21C5, 0x0000, 0x30F7, 0x30F8, 0x30F9, - 0x30FA, 0x5927, 0x5C0F, 0x329D, 0x63A7, 0x0000, 0x0000, 0x337B, 0x337F, - 0x0000, 0x0000, 0x3333, 0x334E, 0x3322, 0x3316, 0x3305, 0x3305, 0x3305, - 0x3333, 0x334E, 0x334E, 0x334E, 0x3303, 0x3318, 0x3315, 0x3339, 0x3339, - 0x3339, 0x3357, 0x3342, 0x3342, 0x3342, 0x3323, 0x333B, 0x3300, 0x331E, - 0x331E, 0x331E, 0x332A, 0x332A, 0x332A, 0x3347, 0x3331, 0x7E8A, 0x891C, - 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631, 0x68C8, 0x92F9, 0x66FB, - 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00, 0x4F03, 0x4F39, 0x4F56, 0x4F92, - 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046, - 0x5070, 0x5042, 0x5094, 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE, - 0x51EC, 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324, - 0x5372, 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF, - 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFA10, 0x589E, - 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4, 0x59BA, 0x5B56, - 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E, 0x5CA6, 0x5CBA, 0x5CF5, 0x5D27, - 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34, - 0x5F67, 0x5FB7, 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120, - 0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460, - 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x6609, 0x662E, 0x661E, 0x6624, - 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, 0x66A0, 0x66B2, 0x66BF, - 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, 0x6852, 0x67C0, 0x6801, 0x6844, - 0x68CF, 0xFA13, 0x6968, 0xFA14, 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46, - 0x6A73, 0x6A7E, 0x6AE2, 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F, - 0x6CDA, 0x6D04, 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2, - 0x6DFC, 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5, - 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, 0x7146, - 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1, 0x72BE, 0x7324, 0xFA16, 0x7377, - 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A, - 0x7429, 0x742E, 0x7462, 0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C, - 0x769E, 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864, - 0x787A, 0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1, - 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7, 0x7DA0, - 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7, - 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0x856B, 0xFA1F, 0x85B0, 0xFA20, - 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF, - 0xFA22, 0x8AF6, 0x8B53, 0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23, - 0x8ECF, 0xFA24, 0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA, - 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210, 0x920A, - 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251, 0x9239, 0x9267, 0x92A7, - 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0, - 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302, - 0x9370, 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448, - 0x9592, 0xF9DC, 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D, - 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C, - 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB, - 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0x00AC, 0x005C, 0x0020, - 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, - 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, - 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, - 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, - 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, - 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, - 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, - 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, - 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, - 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, - 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, 0x007C, 0x007E, - 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, 0x201C, 0x00AB, - 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, 0x00B7, 0x00B6, - 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00BF, 0x0301, - 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, 0x030B, 0x0328, - 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00E6, - 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, 0x00AC, 0x00AE, - 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, 0x00BD, 0x00BE, - 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, 0x00C8, 0x00C9, - 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2, - 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, 0x00DB, 0x00DC, - 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E7, - 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x00F0, - 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F9, 0x00FA, - 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, 0x017D, 0x0305, - 0x0161, 0x2122, 0x017E, 0x0030, 0x2002, 0x0021, 0x0022, 0x0023, 0x0024, - 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, - 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, - 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, - 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, - 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, - 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, - 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, - 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, - 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, - 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, - 0xFF40, 0x2032, 0x00A8, 0x2036, 0x00C4, 0x00F9, 0x00E9, 0x00ED, 0x00DF, - 0x00E7, 0x00C7, 0x00D1, 0x00F1, 0x00A2, 0x00A3, 0x00F3, 0x00FA, 0x00A1, - 0x00BF, 0x00BD, 0x00D6, 0x00DC, 0x00E4, 0x00EB, 0x00EF, 0x00F6, 0x00DC, - 0x00E2, 0x00EA, 0x00EE, 0x00F4, 0x00FC, 0x00E0, 0x00E9, 0x00E1, 0x007E, - 0x0030, 0x00AC, 0x005C, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, - 0xFF66, 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, - 0xFF6F, 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, - 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, - 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, - 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, - 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, - 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F, 0x30F0, 0x30F1, 0x30EE, 0x30AB, 0x30B1, - 0x30F4, 0x30AC, 0x30AE, 0x30B0, 0x30B2, 0x30B4, 0x30B6, 0x30B8, 0x30BA, - 0x30BC, 0x30BE, 0x30C0, 0x30C2, 0x30C5, 0x30C7, 0x30C9, 0x30D0, 0x30D1, - 0x30D3, 0x30D4, 0x30D6, 0x30D7, 0x30D9, 0x30DA, 0x30DC, 0x30DD, 0xFF60, - 0x3092, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, 0x3083, 0x3085, 0x3087, - 0x3063, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, - 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, - 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, - 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, - 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, - 0x3093, 0x3090, 0x3091, 0x308E, 0x304C, 0x304E, 0x3050, 0x3052, 0x3054, - 0x3056, 0x3068, 0x305A, 0x305C, 0x305E, 0x3060, 0x3062, 0x3065, 0x3067, - 0x3069, 0x3070, 0x3071, 0x3073, 0x3074, 0x3076, 0x3077, 0x3079, 0x307A, - 0x307C, 0x307D, 0x301D, 0x301E, 0x005B, 0x005D, 0x3008, 0x3009, 0x300A, - 0x300B, 0x300E, 0x300F, 0x3010, 0x3011, 0x2012, 0xFF60, 0x2500, 0x2501, - 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, - 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513, - 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C, - 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, - 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, 0x252D, 0x252E, - 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, - 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, - 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, - 0x254A, 0x254B, 0x25B2, 0x20AC, 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, - 0xFB04, 0x0101, 0x012B, 0x016B, 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, - 0x0112, 0x014C, 0x215B, 0x215C, 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, - 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, - 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, - 0x0000, 0x1EBC, 0x01CF, 0x0000, 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, - 0x0168, 0x01CE, 0x011B, 0x0000, 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, - 0x0000, 0x01D4, 0x016F, 0x0169, 0x0251, 0x0251, 0x0251, 0x01FD, 0x00E6, - 0x0254, 0x0254, 0x0254, 0x0259, 0x0259, 0x0259, 0x025A, 0x025A, 0x025A, - 0x025B, 0x025B, 0x025B, 0x006A, 0x014B, 0x0275, 0x028C, 0x028C, 0x028C, - 0x0292, 0x0283, 0x02D0, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, - 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, - 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, - 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, - 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, - 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, - 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, - 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, - 0x005C, 0x02BB, 0x007C, 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, - 0x00A7, 0x00A4, 0x201C, 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, - 0x2020, 0x2021, 0x00B7, 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, - 0x2026, 0x2030, 0x00BF, 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, - 0x030A, 0x00B8, 0x030B, 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, - 0x00D8, 0x0152, 0x00BA, 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, - 0x002D, 0x00A9, 0x00AC, 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, - 0x00B9, 0x00BC, 0x00BD, 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, - 0x00C5, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, - 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, - 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, - 0x00E3, 0x00E4, 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, - 0x00ED, 0x00EE, 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, - 0x00F6, 0x00F7, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, - 0x0160, 0x0178, 0x017D, 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x20AC, - 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, 0x016B, - 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, 0x215C, - 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, 0x2077, - 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, - 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, 0x0000, - 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, 0x0000, - 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, 0x0169, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, - 0x0039, 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, - 0x003A, 0x003B, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, - 0x0037, 0x0038, 0x0039, 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, - 0x002E, 0x002F, 0x003A, 0x003B, 0x00B7, 0x20AC, 0x0000, 0x2153, 0x2154, - 0x00BE, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x215B, 0x215C, 0x215D, 0x215E, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x0030, 0x2163, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, - 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x0000, 0x0000, 0x0000, 0x2160, - 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, - 0x216A, 0x216B, 0x0000, 0x0000, 0x0000, 0x0041, 0x0042, 0x0043, 0x0044, - 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, - 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, - 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, - 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, - 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, - 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, - 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, - 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, - 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, - 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, - 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, - 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, - 0x30F3, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, - 0x3228, 0x3229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x55B6, 0x5408, 0x6CEB, 0x554F, 0x7B54, 0x4F8B, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, - 0x0039, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x3063, 0x624D, 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, - 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x3007, 0x4E00, 0x4E8C, - 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x3007, - 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, - 0x3064, 0x624D, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, - 0x516B, 0x4E5D, 0x5341, 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, - 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x30B3, 0x3063, 0x30C3, 0x30A9, - 0x0000, 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, - 0x2467, 0x2468, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x24D0, - 0x24D1, 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, - 0x24DA, 0x24DB, 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2, - 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x24B6, 0x24B7, - 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, 0x24BF, 0x24C0, - 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7, 0x24C8, 0x24C9, - 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x3042, 0x3044, 0x3046, - 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, - 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, - 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, - 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, - 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, - 0x32D0, 0x32D1, 0x32D2, 0x32D3, 0x32D4, 0x32D5, 0x32D6, 0x32D7, 0x32D8, - 0x32D9, 0x32DA, 0x32DB, 0x32DC, 0x32DD, 0x32DE, 0x32DF, 0x32E0, 0x32E1, - 0x32E2, 0x32E3, 0x32E4, 0x32E5, 0x32E6, 0x32E7, 0x32E8, 0x32E9, 0x32EA, - 0x32EB, 0x32EC, 0x32ED, 0x32EE, 0x32EF, 0x32F0, 0x32F1, 0x32F2, 0x32F3, - 0x32F4, 0x32F5, 0x32F6, 0x32F7, 0x32F8, 0x32F9, 0x32FA, 0x32FB, 0x32FC, - 0x32FD, 0x32FE, 0x30F3, 0x3280, 0x3281, 0x3282, 0x3283, 0x3284, 0x3285, - 0x3286, 0x3287, 0x3288, 0x3289, 0x3290, 0x328A, 0x328B, 0x328C, 0x328D, - 0x328E, 0x328F, 0x8ABF, 0x329F, 0x526F, 0x6E1B, 0x6A19, 0x6B20, 0x57FA, - 0x7981, 0x32A0, 0x32A1, 0x329B, 0x329A, 0x32A3, 0x32A2, 0x3297, 0x51FA, - 0x329C, 0x3295, 0x6E08, 0x5897, 0x554F, 0x7B54, 0x4F8B, 0x96FB, 0x25CC, - 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, - 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, - 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, - 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, - 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, - 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, - 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB, - 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC, - 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, 0x30DF, - 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, 0x30EA, 0x30EB, - 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x65E5, 0x6708, - 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, 0x7B54, 0x4F8B, 0x25CF, - 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, 0x0033, 0x0000, 0x0034, - 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, 0x0000, 0x0038, 0x0000, - 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, - 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, - 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, - 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, - 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, - 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, - 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB, - 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC, - 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, 0x30DF, - 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, 0x30EA, 0x30EB, - 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x65E5, 0x6708, - 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x8CA0, 0x52DD, 0x554F, 0x7B54, - 0x4F8B, 0x25A1, 0x25A1, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, - 0x0033, 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, - 0x0000, 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, - 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, - 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, - 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, - 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, - 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, - 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, - 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, - 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, - 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, - 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, - 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, - 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, - 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, - 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, - 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, - 0x30F3, 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, - 0x7B54, 0x4F8B, 0x25A0, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, - 0x0033, 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, - 0x0000, 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, - 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, - 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, - 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, - 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, - 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, - 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, - 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, - 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, - 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, - 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, - 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, - 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, - 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, - 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, - 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, - 0x30F3, 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, - 0x7B54, 0x4F8B, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, 0x0033, - 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, 0x0000, - 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, - 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, - 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, - 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, - 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, - 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, - 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, - 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, - 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, - 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, - 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, - 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, - 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, - 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, - 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, - 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, 0x7B54, - 0x4F8B, 0x25A0, 0x33C2, 0x33CD, 0x2116, 0x0000, 0x33D8, 0x33DA, 0x2121, - 0x2122, 0x0000, 0x2100, 0x33C2, 0x0000, 0x33C4, 0x2105, 0x3397, 0x3371, - 0x3398, 0x2113, 0x338D, 0x339B, 0x3396, 0x0000, 0x0000, 0x33D7, 0x33D8, - 0x0000, 0x0000, 0x0000, 0x3301, 0x3302, 0x3304, 0x3306, 0x0000, 0x3308, - 0x0000, 0x3307, 0x330A, 0x0000, 0x3309, 0x0000, 0x330B, 0x0000, 0x330C, - 0x330E, 0x330F, 0x3310, 0x3311, 0x3312, 0x3313, 0x0000, 0x3317, 0x0000, - 0x3319, 0x0000, 0x331A, 0x331B, 0x331C, 0x331D, 0x331F, 0x3320, 0x3321, - 0x3324, 0x0000, 0x3325, 0x0000, 0x0000, 0x3328, 0x3329, 0x0000, 0x332D, - 0x0000, 0x0000, 0x332E, 0x332F, 0x3330, 0x3332, 0x0000, 0x0000, 0x3334, - 0x3335, 0x333C, 0x0000, 0x0000, 0x0000, 0x3337, 0x0000, 0x3338, 0x333A, - 0x333D, 0x3341, 0x333E, 0x333F, 0x3340, 0x3343, 0x3344, 0x3345, 0x3346, - 0x3348, 0x334B, 0x334C, 0x334F, 0x3350, 0x0000, 0x0000, 0x3352, 0x3354, - 0x0000, 0x0000, 0x3353, 0x3355, 0x3356, 0x0000, 0x3301, 0x3302, 0x3304, - 0x3306, 0x0000, 0x3308, 0x0000, 0x3307, 0x330A, 0x0000, 0x3309, 0x0000, - 0x330B, 0x0000, 0x330C, 0x330E, 0x330F, 0x3310, 0x3311, 0x3312, 0x3313, - 0x0000, 0x3317, 0x0000, 0x3319, 0x0000, 0x331A, 0x331B, 0x331C, 0x331D, - 0x331F, 0x3320, 0x3321, 0x3324, 0x0000, 0x3325, 0x0000, 0x0000, 0x3328, - 0x3329, 0x0000, 0x332D, 0x0000, 0x0000, 0x332E, 0x332F, 0x3330, 0x3332, - 0x0000, 0x0000, 0x3334, 0x3335, 0x333C, 0x0000, 0x0000, 0x0000, 0x3337, - 0x0000, 0x3338, 0x333A, 0x333D, 0x3341, 0x333E, 0x333F, 0x3340, 0x3343, - 0x3344, 0x3345, 0x3346, 0x3348, 0x334B, 0x334C, 0x334F, 0x3350, 0x0000, - 0x0000, 0x3352, 0x3354, 0x0000, 0x0000, 0x3353, 0x3355, 0x3356, 0x337E, - 0x337D, 0x337C, 0x337B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x002D, 0x003D, 0x2103, 0x2640, 0x2642, 0x3013, - 0x3012, 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, - 0xFF08, 0xFF09, 0x301D, 0x301E, 0x2018, 0x2019, 0x201C, 0x201D, 0x0027, - 0x0022, 0x0000, 0x2135, 0x03D0, 0x220A, 0x210F, 0x00B5, 0x03C6, 0x03DB, - 0x03D1, 0xFFFD, 0x2668, 0x2669, 0x266C, 0xFF1A, 0x00A9, 0x00A9, 0x00AE, - 0x00AE, 0x303B, 0x303B, 0x3033, 0x3034, 0x3035, 0x203C, 0x2049, 0x0021, - 0x203C, 0x2049, 0x244A, 0x0000, 0x2213, 0x2260, 0x2243, 0x2272, 0x2273, - 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, 0xFF5F, - 0xFF60, 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, - 0xFF5F, 0xFF60, 0x239B, 0x239D, 0x239E, 0x23A0, 0x239D, 0x239B, 0x23A0, - 0x239E, 0x23A1, 0x23A3, 0x23A4, 0x23A6, 0x23A3, 0x23A1, 0x23A6, 0x23A4, - 0x23A1, 0x23A3, 0x23A4, 0x23A6, 0x23A3, 0x23A1, 0x23A6, 0x23A4, 0xFF5C, - 0x2015, 0x301D, 0x301E, 0x2018, 0x2019, 0x2018, 0x2019, 0x2702, 0x2702, - 0x2702, 0x2702, 0x303D, 0x3012, 0x309F, 0x534D, 0x2207, 0x2205, 0x22A0, - 0x2296, 0x2298, 0x2295, 0x2297, 0x229E, 0x2295, 0x0021, 0x25B3, 0x25C0, - 0x25B6, 0x21E6, 0x21E8, 0x21E7, 0x21E9, 0x21D0, 0x2194, 0x2198, 0x2199, - 0x2196, 0x2197, 0x21CC, 0x21C6, 0x21C4, 0x21C5, 0x2190, 0x2192, 0x2191, - 0x2193, 0x2194, 0x2195, 0x2504, 0x2506, 0x3030, 0x2307, 0x3030, 0x2307, - 0x3030, 0x2307, 0x3030, 0x2307, 0x3030, 0x2307, 0x2740, 0x273F, 0x25A1, - 0x25A0, 0x25A1, 0x25A1, 0x25A1, 0x25A1, 0x25A1, 0x25AB, 0x25A0, 0x25AA, - 0x271A, 0x271A, 0x25C7, 0x25C6, 0x25C7, 0x25C7, 0x25C7, 0x25C7, 0x25C7, - 0x25C6, 0x25C6, 0x25CE, 0x25C9, 0x25CB, 0x25E6, 0x25CF, 0x2022, 0x2756, - 0x2756, 0x2756, 0x2756, 0x3008, 0x3009, 0x3008, 0x3009, 0x300A, 0x300B, - 0x300A, 0x300B, 0x3053, 0x3053, 0x30B3, 0x30B3, 0x309D, 0x309E, 0x3041, - 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, - 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3051, - 0x3052, 0x3053, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, - 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, - 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, - 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, - 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, - 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, - 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, - 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x30FD, 0x30FE, 0x30FC, 0x30A1, - 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, - 0x30F5, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30F6, 0x30B1, - 0x30B2, 0x30B3, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, - 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, - 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, - 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, - 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, - 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, - 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, - 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F7, 0x30F8, 0x30F9, 0x30FA, - 0x309D, 0x309E, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, - 0x3048, 0x3049, 0x304A, 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, - 0x3050, 0x3051, 0x3051, 0x3052, 0x3053, 0x3053, 0x3054, 0x3055, 0x3056, - 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, - 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, - 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, - 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, - 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, - 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, - 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x30FD, - 0x30FE, 0x30FC, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, - 0x30A8, 0x30A9, 0x30AA, 0x30F5, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, - 0x30B0, 0x30F6, 0x30B1, 0x30B2, 0x30B3, 0x30B3, 0x30B4, 0x30B5, 0x30B6, - 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, - 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, - 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, - 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, - 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, - 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, - 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F7, - 0x30F8, 0x30F9, 0x30FA, 0x3001, 0x3002, 0x30FB, 0xFF0A, 0x203B, 0x25CB, - 0x25CE, 0x25C9, 0x25B3, 0x25B2, 0x30FD, 0x30FE, 0x309D, 0x309E, 0xFF08, - 0xFF09, 0x3014, 0x3015, 0xFF08, 0xFF09, 0x3014, 0x3015, 0x0030, 0x0031, - 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x3041, - 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, - 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3051, - 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, - 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, - 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, - 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, - 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, - 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, - 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, - 0x3091, 0x3092, 0x3093, 0x3094, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, - 0x304B, 0x3051, 0x3063, 0x3083, 0x3085, 0x3087, 0x308E, 0x30A1, 0x30A2, - 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, - 0x30F5, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30F6, 0x30B2, - 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, - 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, - 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, - 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, - 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, - 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, - 0x30F2, 0x30F3, 0x30F4, 0x30A1, 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30F5, - 0x30F6, 0x30C3, 0x30E3, 0x30E5, 0x30E7, 0x30EE, 0x30FC, 0x30FC, 0x6CE8, - 0x20AC, 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, - 0x016B, 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, - 0x215C, 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, - 0x2077, 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, - 0x2086, 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, - 0x0000, 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, - 0x0000, 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, - 0x0169, 0x0251, 0x0251, 0x0251, 0x01FD, 0x00E6, 0x0254, 0x0254, 0x0254, - 0x0259, 0x0259, 0x0259, 0x025A, 0x025A, 0x025A, 0x025B, 0x025B, 0x025B, - 0x006A, 0x014B, 0x0275, 0x028C, 0x028C, 0x028C, 0x0292, 0x0283, 0x02D0, - 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, - 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, - 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, - 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, - 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, - 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, - 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, - 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, - 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, - 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, - 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, 0x007C, - 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, 0x201C, - 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, 0x00B7, - 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00BF, - 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, 0x030B, - 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, 0x00BA, - 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, 0x00AC, - 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, 0x00BD, - 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, 0x00C8, - 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, - 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, 0x00DB, - 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, - 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, - 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F9, - 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, 0x017D, - 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x20AC, 0x2126, 0x2032, 0x2033, - 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, 0x016B, 0x0113, 0x014D, 0x0100, - 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, 0x215C, 0x215D, 0x215E, 0x2153, - 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x2080, - 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, - 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, 0x0000, 0x0128, 0x01D1, 0x0000, - 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, 0x0000, 0x1EBD, 0x01D0, 0x0000, - 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, 0x0169, 0x0030, 0x0031, 0x0032, - 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0336, 0x002D, - 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, 0x003A, 0x003B, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, 0x003A, - 0x003B, 0x00B7, 0x002D, 0x003D, 0x2103, 0x2640, 0x2642, 0x3013, 0x3012, - 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, 0xFF08, - 0xFF09, 0x301D, 0x301E, 0x2018, 0x2019, 0x201C, 0x201D, 0x0027, 0x0022, - 0x9038, 0x8B01, 0x7DE3, 0x9EC3, 0x6EAB, 0x798D, 0x6094, 0x6D77, 0x6168, - 0x6982, 0x6E34, 0x8910, 0x6F22, 0x5668, 0x65E2, 0x7948, 0x865B, 0x97FF, - 0x52E4, 0x8B39, 0x63ED, 0x64CA, 0x784F, 0x7A40, 0x6BBA, 0x7949, 0x8996, - 0x716E, 0x793E, 0x8005, 0x81ED, 0x795D, 0x6691, 0x7F72, 0x6D89, 0x72C0, - 0x613C, 0x771E, 0x7BC0, 0x7956, 0x50E7, 0x5C64, 0x5DE2, 0x618E, 0x8D08, - 0x537D, 0x5606, 0x8457, 0x5FB5, 0x61F2, 0x93AD, 0x798E, 0x9B2D, 0x7A81, - 0x96E3, 0x6885, 0x7E41, 0x6669, 0x5351, 0x7891, 0x8CD3, 0x654F, 0x4FAE, - 0x5002, 0x5840, 0x52C9, 0x6B65, 0x58A8, 0x6BCF, 0x514D, 0x623E, 0x7950, - 0x6B04, 0x9686, 0x865C, 0x6DDA, 0x985E, 0x66C6, 0x6B77, 0x7DF4, 0x934A, - 0x5ECA, 0x9304, 0x6982, 0x51B4, 0x634C, 0x86DB, 0x9089, 0x9022, 0x5049, - 0x7DEF, 0x9055, 0x53A9, 0x990C, 0x885B, 0x5EF6, 0x6CBF, 0x925B, 0x7FC1, - 0x82BD, 0x96C5, 0x5BB3, 0x6168, 0x6982, 0x6BBB, 0x6562, 0x8CAB, 0x5DCC, - 0x9811, 0x5E30, 0x8ECC, 0x7AAE, 0x5747, 0x5091, 0x7A74, 0x5065, 0x5EFA, - 0x9237, 0x6A8E, 0x4EA4, 0x516C, 0x66F4, 0x6821, 0x786C, 0x7D5E, 0x8003, - 0x8CFC, 0x964D, 0x62F7, 0x7F6A, 0x4F7F, 0x53F2, 0x59C9, 0x8B1D, 0x90AA, - 0x53CE, 0x8F2F, 0x67D4, 0x77AC, 0x821C, 0x696F, 0x677E, 0x8A1F, 0x4E08, - 0x57F4, 0x690D, 0x8077, 0x89AA, 0x9042, 0x636E, 0x6442, 0x8239, 0x7DCF, - 0x8061, 0x50CF, 0x8A95, 0x6065, 0x5146, 0x773A, 0x8074, 0x8DF3, 0x5EAD, - 0x5EF7, 0x8247, 0x6843, 0x9003, 0x6D3E, 0x6392, 0x8F29, 0x73ED, 0x9812, - 0x60B2, 0x6249, 0x6590, 0x7DCB, 0x8AB9, 0x8CA7, 0x7236, 0x847A, 0x5206, - 0x5674, 0x61A4, 0x7C89, 0x7D1B, 0x96F0, 0x853D, 0x4FBF, 0x6367, 0x76C6, - 0x685D, 0x8108, 0x8036, 0x7FFC, 0x540F, 0x96A3, 0x9E9F, 0x9E97, 0x806F, - 0x807E, 0x6E7E, 0x5085, 0x5193, 0x51DB, 0x5315, 0x5340, 0x96D9, 0x55A9, - 0x56C1, 0x570D, 0x58AB, 0x59DA, 0x5A36, 0x5ABE, 0x5D4E, 0x5D87, 0x5DC9, - 0x5DD3, 0x5F2D, 0x5F98, 0x60D8, 0x613D, 0x61FE, 0x6268, 0x62CF, 0x651D, - 0x640F, 0x64F2, 0x655D, 0x665F, 0x67A9, 0x67E7, 0x696B, 0x6930, 0x69A7, - 0x6A44, 0x6A90, 0x6C08, 0x6C13, 0x6E23, 0x6F11, 0x6EFE, 0x6F3E, 0x71FF, - 0x73E5, 0x7432, 0x745F, 0x74E0, 0x750C, 0x7672, 0x792A, 0x78D4, 0x79BA, - 0x7A19, 0x7A95, 0x7CF2, 0x7D73, 0x7DDD, 0x7E35, 0x7FAE, 0x7FE1, 0x805A, - 0x805F, 0x8073, 0x8070, 0x8076, 0x8153, 0x818A, 0x81B5, 0x81CD, 0x83F2, - 0x8555, 0x85D5, 0x871A, 0x8836, 0x889E, 0x88D8, 0x88F4, 0x892B, 0x893B, - 0x896A, 0x896F, 0x8A1D, 0x8D05, 0x8D0F, 0x9F4E, 0x8E91, 0x8EA1, 0x9052, - 0x900E, 0x9130, 0x9156, 0x9158, 0x9165, 0x9173, 0x9172, 0x91A2, 0x91AF, - 0x91AA, 0x91B4, 0x91BA, 0x9477, 0x9698, 0x973D, 0x9760, 0x9771, 0x980C, - 0x9873, 0x98C3, 0x9A45, 0x9B4D, 0x9B58, 0x9BC6, 0x9BE1, 0x9BF1, 0x9D48, - 0x9DCF, 0x9F08, 0x6271, 0x6697, 0x610F, 0x8863, 0x9055, 0x907A, 0x78EF, - 0x54E1, 0x2ED7, 0x2EBD, 0x53A9, 0x74DC, 0x904B, 0x990C, 0x885E, 0x92B3, - 0x95B1, 0x5EF6, 0x63F4, 0x6CBF, 0x7159, 0x9060, 0x925B, 0x65BC, 0x5F80, - 0x7FC1, 0x5378, 0x97F3, 0x5316, 0x82B1, 0x83D3, 0x8CA8, 0x904E, 0x82BD, - 0x96C5, 0x9913, 0x5EFB, 0x7070, 0x5BB3, 0x6168, 0x6168, 0x6168, 0x69EA, - 0x6982, 0x676E, 0x89D2, 0x9694, 0x5272, 0x8F44, 0x938C, 0x82C5, 0x5BD2, - 0x74B0, 0x7DE9, 0x7F36, 0x9084, 0x9592, 0x97D3, 0x8218, 0x5371, 0x559C, - 0x3402, 0x3402, 0x5E7E, 0x65E3, 0x671F, 0x6A5F, 0x8D77, 0x98E2, 0x5409, - 0x55AB, 0x8650, 0x9006, 0x53CA, 0x5438, 0x6025, 0x7D1A, 0x5DE8, 0x62D2, - 0x8DDD, 0x9B5A, 0x9B5A, 0x537F, 0x5F3A, 0x6050, 0x69C1, 0x6A4B, 0x6A4B, - 0x9115, 0x97FF, 0x9957, 0x6681, 0x2EA9, 0x8FD1, 0x5036, 0x77E9, 0x5177, - 0x865E, 0x7A7A, 0x9047, 0x6ADB, 0x5553, 0x5951, 0x6075, 0x6167, 0x8FCE, - 0x5091, 0x6F54, 0x7A74, 0x2EBC, 0x2EBC, 0x517C, 0x5238, 0x61B2, 0x6743, - 0x80A9, 0x8B19, 0x9063, 0x539F, 0x8A01, 0x6236, 0x96C7, 0x9867, 0x5433, - 0x5A1B, 0x8AA4, 0x5DE5, 0x614C, 0x6285, 0x63A7, 0x69CB, 0x6D69, 0x6E2F, - 0x8015, 0x8154, 0x8352, 0x8B1B, 0x8CFC, 0x543F, 0x9177, 0x8170, 0x7511, - 0x8FBC, 0x4ECA, 0x9396, 0x5EA7, 0x5F69, 0x63A1, 0x6B72, 0x83DC, 0x51B4, - 0x54B2, 0x524A, 0x7522, 0x9910, 0x59FF, 0x59FF, 0x5DFF, 0x8AEE, 0x8AEE, - 0x8CC7, 0x8CC7, 0x6B21, 0x6B21, 0x6ECB, 0x73BA, 0x53F1, 0x6368, 0x659C, - 0x90AA, 0x52FA, 0x7235, 0x7235, 0x914C, 0x5F31, 0x4E3B, 0x53D7, 0x6388, - 0x5468, 0x7D42, 0x7FD2, 0x8846, 0x9031, 0x4F4F, 0x8853, 0x8FF0, 0x5DE1, - 0x9075, 0x9075, 0x6240, 0x66F8, 0x5973, 0x52DD, 0x5546, 0x5BB5, 0x5C06, - 0x2E8C, 0x2E8D, 0x5C19, 0x6D88, 0x785D, 0x8096, 0x4E08, 0x5B82, 0x57CE, - 0x60C5, 0x57F4, 0x98FE, 0x690D, 0x6B96, 0x98DF, 0x98E0, 0x2EDE, 0x378D, - 0x4FB5, 0x2E97, 0x6D78, 0x771F, 0x9032, 0x4EBB, 0x4EBA, 0x5203, 0x5C0B, - 0x8A0A, 0x8A0A, 0x8FC5, 0x8870, 0x9042, 0x351F, 0x52E2, 0x6210, 0x76DB, - 0x8056, 0x8980, 0x8AA0, 0x8ACB, 0x975C, 0x975C, 0x7A05, 0x8106, 0x96BB, - 0x7C4D, 0x7BC0, 0x8AAA, 0x96EA, 0x7D76, 0x6247, 0x6F98, 0x7FA1, 0x8239, - 0x9078, 0x9077, 0x524D, 0x5168, 0x6383, 0x63F7, 0x7626, 0x8D70, 0x9001, - 0x906D, 0x9020, 0x2ECA, 0x901F, 0x8CCA, 0x5C0A, 0x5C0A, 0x59A5, 0x6CF0, - 0x9000, 0x902E, 0x968A, 0x9BDB, 0x5927, 0x3427, 0x7027, 0x9054, 0x812B, - 0x4E39, 0x6B4E, 0x70AD, 0x8A95, 0x6696, 0x5024, 0x7F6E, 0x7BC9, 0x2EAE, - 0x7B51, 0x9010, 0x67F1, 0x6CE8, 0x99D0, 0x5F6B, 0x5FB5, 0x61F2, 0x671D, - 0x6F6E, 0x8ABF, 0x76F4, 0x6715, 0x6715, 0x589C, 0x8FFD, 0x901A, 0x576A, - 0x91E3, 0x5448, 0x5E1D, 0x7A0B, 0x7684, 0x9069, 0x8FED, 0x6DFB, 0x514E, - 0x9014, 0x783A, 0x5721, 0x571F, 0x51AC, 0x5510, 0x7CD6, 0x85E4, 0x8B04, - 0x9003, 0x900F, 0x9A30, 0x5C0E, 0x9053, 0x5451, 0x3B88, 0x5167, 0x8089, - 0x4E73, 0x5FCD, 0x8A8D, 0x5BE7, 0x7D0D, 0x8987, 0x6D3E, 0x80BA, 0x535A, - 0x8584, 0x8FEB, 0x7E1B, 0x8087, 0x4E37, 0x6F51, 0x91B1, 0x4F34, 0x5224, - 0x534A, 0x5E06, 0x7554, 0x6669, 0x8543, 0x907F, 0x5FAE, 0x9F3B, 0x5339, - 0x2EAA, 0x5F65, 0x59EC, 0x59EB, 0x8A55, 0x5E99, 0x75C5, 0x5A66, 0x6577, - 0x6D6E, 0x8CA0, 0x8CA0, 0x670D, 0x8986, 0x4E19, 0x5E63, 0x5E73, 0x5F0A, - 0x8511, 0x504F, 0x7DE8, 0x8FD4, 0x904D, 0x7C3F, 0x5305, 0x5D29, 0x62B1, - 0x670B, 0x7832, 0x7E2B, 0x80DE, 0x840C, 0x90A6, 0x90A6, 0x98FD, 0x9D6C, - 0x4EA1, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x671B, 0x671B, 0x5192, 0x6469, - 0x7FFB, 0x51E1, 0x78E8, 0x9B54, 0x2FC7, 0x69D9, 0x685D, 0x4FE3, 0x53C8, - 0x7E6D, 0x9EBF, 0x8108, 0x660E, 0x76DF, 0x8FF7, 0x5984, 0x52D0, 0x76F2, - 0x8017, 0x623E, 0x7D0B, 0x9580, 0x7D04, 0x8E8D, 0x687A, 0x687A, 0x6801, - 0x6109, 0x8AED, 0x8F38, 0x52C7, 0x6709, 0x7336, 0x7336, 0x7337, 0x88D5, - 0x904A, 0x66DC, 0x2EB7, 0x8981, 0x990A, 0x7FCC, 0x7FFC, 0x8EB6, 0x862D, - 0x7387, 0x9F8D, 0x9F8D, 0x65C5, 0x6881, 0x71D0, 0x96A3, 0x9C57, 0x9E9F, - 0x7C7B, 0x5EC9, 0x6190, 0x9023, 0x6717, 0x8002, 0x8107, 0x50CA, 0x511A, - 0x5154, 0x5195, 0x2E87, 0x528D, 0x52D7, 0x52F9, 0x5349, 0x353E, 0x53DF, - 0x66FC, 0x5533, 0x55E4, 0x5455, 0x56C0, 0x5939, 0x5A1C, 0x5AC2, 0x5B73, - 0x5BC3, 0x5C14, 0x37E2, 0x5CE6, 0x5E54, 0x4E48, 0x5EE3, 0x6097, 0x62D4, - 0x62CC, 0x641C, 0x63C6, 0x6428, 0x8209, 0x631B, 0x665F, 0x665F, 0x6663, - 0x66F5, 0x675E, 0x689D, 0x688D, 0x69F6, 0x6961, 0x5BE8, 0x5BE8, 0x69BB, - 0x6BCC, 0x6F11, 0x6E17, 0x6F98, 0x6CAA, 0x6CAA, 0x701B, 0x7162, 0x723B, - 0x4E2C, 0x731C, 0x74CA, 0x74EF, 0x7575, 0x75EC, 0x764E, 0x3FB1, 0x776A, - 0x77A9, 0x7940, 0x7953, 0x7953, 0x9F4B, 0x79AE, 0x9083, 0x7B53, 0x7C11, - 0x7C14, 0x4264, 0x7C50, 0x7C58, 0x7D46, 0x7D63, 0x7E22, 0x7E22, 0x7E48, - 0x7E35, 0x7E43, 0x7E8C, 0x7F50, 0x7F51, 0x7F51, 0x7F51, 0x7FC5, 0x7FC6, - 0x7FE9, 0x8141, 0x4453, 0x8258, 0x8279, 0x2EBF, 0x2EC0, 0x82E3, 0x5179, - 0x83A2, 0x8420, 0x83BD, 0x84F4, 0x856D, 0x8587, 0x85F4, 0x4E55, 0x8737, - 0x873B, 0x8805, 0x87BD, 0x867D, 0x8836, 0x8944, 0x88C6, 0x89BD, 0x8ADB, - 0x8B3E, 0x8B5A, 0x8D73, 0x8D99, 0x8DCB, 0x8E34, 0x8E4A, 0x8FEF, 0x9087, - 0x8FFA, 0x901E, 0x9035, 0x9050, 0x8FC8, 0x9081, 0x908A, 0x908A, 0x908A, - 0x908A, 0x908A, 0x908A, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, - 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x92CF, 0x93DD, 0x95BC, - 0x9621, 0x96B2, 0x975C, 0x9839, 0x98EB, 0x9903, 0x9909, 0x9945, 0x9945, - 0x994B, 0x9A08, 0x9A5F, 0x9A65, 0x9AEF, 0x9B18, 0x9BDF, 0x9D09, 0x9D08, - 0x9EA5, 0x9ECC, 0x9F08, 0x9F4A, 0x9F63, 0x9F67, 0x9F6C, 0x7199, 0x7199, - 0x891C, 0x68C8, 0x66FB, 0x5F45, 0x5300, 0x5389, 0x5953, 0xFA11, 0x6852, - 0x6A73, 0x6D87, 0xFA15, 0x8A12, 0x4E04, 0x4E05, 0x4E1F, 0x4E2B, 0x4E2F, - 0x4E30, 0x4E40, 0x4E41, 0x4E44, 0x4E5A, 0x4E7F, 0x4E8D, 0x4E96, 0x4EB9, - 0x4ED0, 0x4EE0, 0x4EFD, 0x4EFF, 0x4F0B, 0x4F15, 0x4F60, 0x4F3B, 0x4F49, - 0x4F54, 0x4F7A, 0x4F7D, 0x4F7E, 0x4F97, 0x4FBE, 0x4FCF, 0x4FFD, 0x5000, - 0x5001, 0x5010, 0x501B, 0x5027, 0x502E, 0x5057, 0x5066, 0x506A, 0x503B, - 0x508F, 0x5096, 0x509C, 0x50CC, 0x50E6, 0x50E9, 0x50EF, 0x5108, 0x510B, - 0x5110, 0x511B, 0x511E, 0x515F, 0x51A1, 0x51BC, 0x51DE, 0x51EE, 0x51F4, - 0x5201, 0x5202, 0x5213, 0x5249, 0x5261, 0x5266, 0x5293, 0x52C8, 0x52F0, - 0x530A, 0x530B, 0x533E, 0x534C, 0x534B, 0x5361, 0x536C, 0x53AB, 0x53DA, - 0x53E6, 0x53F5, 0x5427, 0x544D, 0x5466, 0x546B, 0x5474, 0x548D, 0x5496, - 0x54A1, 0x54AD, 0x54B9, 0x54BF, 0x54C6, 0x54CD, 0x550E, 0x552B, 0x5535, - 0x554A, 0x5560, 0x5561, 0x5588, 0x558E, 0x5608, 0x560E, 0x560F, 0x5637, - 0x563F, 0x5649, 0x564B, 0x564F, 0x5666, 0x5669, 0x566F, 0x5671, 0x5672, - 0x5695, 0x569A, 0x56AC, 0x56AD, 0x56B1, 0x56C9, 0x56DD, 0x56E4, 0x570A, - 0x5715, 0x5723, 0x572F, 0x5733, 0x5734, 0x574C, 0x5770, 0x578C, 0x579C, - 0x57B8, 0x57E6, 0x57ED, 0x57F5, 0x57F6, 0x57FF, 0x5809, 0x5820, 0x5832, - 0x587C, 0x5880, 0x58A9, 0x58CE, 0x58D0, 0x58D4, 0x58DA, 0x58E9, 0x590C, - 0x5924, 0x592F, 0x5961, 0x596D, 0x59CA, 0x59D2, 0x59DD, 0x59E3, 0x59E4, - 0x5A04, 0x5A0C, 0x5A23, 0x5A47, 0x5A55, 0x5A63, 0x5A6D, 0x5A7E, 0x5A9E, - 0x5AA7, 0x5AAC, 0x5AB3, 0x5AE0, 0x5B00, 0x5B19, 0x5B25, 0x5B2D, 0x5B41, - 0x5B7C, 0x5B7E, 0x5B7F, 0x5B8A, 0x5C23, 0x5C2B, 0x5C30, 0x5C63, 0x5C69, - 0x5C7C, 0x5CCB, 0x5CD2, 0x5CF4, 0x5D24, 0x5D26, 0x5D43, 0x5D46, 0x5D4A, - 0x5D92, 0x5D94, 0x5D99, 0x5DA0, 0x5DD8, 0x5DE0, 0x5DF8, 0x5E00, 0x5E12, - 0x5E14, 0x5E15, 0x5E18, 0x5E2E, 0x5E58, 0x5E6B, 0x5E6C, 0x5EA8, 0x5EAA, - 0x5EBE, 0x5EBF, 0x5ECB, 0x5ED2, 0x5F07, 0x5F0E, 0x5F1C, 0x5F1D, 0x5F22, - 0x5F28, 0x5F36, 0x5F3B, 0x5F40, 0x5F50, 0x5F58, 0x5F64, 0x5F89, 0x5F9C, - 0x5FA7, 0x5FA4, 0x5FAF, 0x5FB8, 0x5FC4, 0x5FC9, 0x5FE1, 0x5FE9, 0x5FED, - 0x5FFC, 0x6017, 0x601A, 0x6033, 0x6061, 0x607F, 0x609E, 0x60A4, 0x60B0, - 0x60CB, 0x60DB, 0x60F8, 0x6112, 0x6113, 0x6114, 0x611C, 0x617C, 0x618D, - 0x619F, 0x61A8, 0x61C2, 0x61DF, 0x6215, 0x6229, 0x6243, 0x6246, 0x624C, - 0x6251, 0x6256, 0x62C4, 0x62FC, 0x630A, 0x630D, 0x6318, 0x6339, 0x6342, - 0x6343, 0x6365, 0x6374, 0x637D, 0x6384, 0x6387, 0x6390, 0x639E, 0x63D1, - 0x63DC, 0x6409, 0x6410, 0x6422, 0x6454, 0x645B, 0x646D, 0x647B, 0x64BE, - 0x64BF, 0x64E5, 0x64F7, 0x64FB, 0x6504, 0x6516, 0x6519, 0x6547, 0x6567, - 0x6581, 0x6585, 0x65C2, 0x65F0, 0x65F2, 0x662C, 0x664C, 0x665B, 0x665C, - 0x6661, 0x666B, 0x6677, 0x66A4, 0x66C8, 0x66EC, 0x6705, 0x6713, 0x6733, - 0x6748, 0x674C, 0x6776, 0x677B, 0x67B0, 0x67B2, 0x67F9, 0x67D7, 0x67D9, - 0x67F0, 0x682C, 0x6830, 0x6831, 0x685B, 0x6872, 0x6875, 0x687A, 0x6884, - 0x68A5, 0x68B2, 0x68D0, 0x68D6, 0x68E8, 0x68ED, 0x68F0, 0x68F1, 0x68FC, - 0x6911, 0x6913, 0x6935, 0x693B, 0x6957, 0x6963, 0x6972, 0x697F, 0x6980, - 0x69A6, 0x69AD, 0x69B7, 0x69D6, 0x69D7, 0x6A01, 0x6A0F, 0x6A15, 0x6A28, - 0x6A34, 0x6A3E, 0x6A45, 0x6A50, 0x6A51, 0x6A56, 0x6A5B, 0x6A83, 0x6A89, - 0x6A91, 0x6A9D, 0x6A9E, 0x6A9F, 0x6ADC, 0x6AE7, 0x6AEC, 0x6B1E, 0x6B24, - 0x6B35, 0x6B46, 0x6B56, 0x6B60, 0x6B82, 0x6BBE, 0x6BE1, 0x6BF1, 0x6C10, - 0x6C33, 0x6C35, 0x6C3A, 0x6C59, 0x6C76, 0x6C7B, 0x6C85, 0x6C95, 0x6C9C, - 0x6CD0, 0x6CD4, 0x6CD6, 0x6CE0, 0x6CEB, 0x6CEC, 0x6CEE, 0x6D0A, 0x6D0E, - 0x6D11, 0x6D2E, 0x6D57, 0x6D5E, 0x6D65, 0x6D82, 0x6DBF, 0x6DC4, 0x6DCA, - 0x6DD6, 0x6DE9, 0x6E22, 0x6E51, 0x6EC7, 0x6ECA, 0x6ECE, 0x6EFD, 0x6F1A, - 0x6F2A, 0x6F2F, 0x6F33, 0x6F5A, 0x6F5E, 0x6F62, 0x6F7D, 0x6F8B, 0x6F8D, - 0x6F92, 0x6F94, 0x6F9A, 0x6FA7, 0x6FA8, 0x6FB6, 0x6FDA, 0x6FDE, 0x6FF9, - 0x7039, 0x703C, 0x704A, 0x7054, 0x705D, 0x705E, 0x7064, 0x706C, 0x707E, - 0x7081, 0x7095, 0x70B7, 0x70D3, 0x70D4, 0x70D8, 0x70DC, 0x7107, 0x7120, - 0x7131, 0x714A, 0x7152, 0x7160, 0x7179, 0x7192, 0x71B3, 0x71CB, 0x71D3, - 0x71D6, 0x7200, 0x721D, 0x722B, 0x7238, 0x7241, 0x7253, 0x7255, 0x7256, - 0x725C, 0x728D, 0x72AD, 0x72B4, 0x72C7, 0x72FB, 0x7304, 0x7305, 0x7328, - 0x7331, 0x7343, 0x736C, 0x737C, 0x7383, 0x7385, 0x7386, 0x7395, 0x739E, - 0x739F, 0x73A0, 0x73A6, 0x73AB, 0x73B5, 0x73B7, 0x73BC, 0x73CF, 0x73D9, - 0x73E9, 0x73F4, 0x73FD, 0x7404, 0x740A, 0x741A, 0x741B, 0x7424, 0x7428, - 0x742C, 0x742F, 0x7430, 0x7431, 0x7439, 0x7444, 0x7447, 0x744B, 0x744D, - 0x7451, 0x7457, 0x7466, 0x746B, 0x7471, 0x7480, 0x7485, 0x7486, 0x7487, - 0x7490, 0x7498, 0x749C, 0x74A0, 0x74A3, 0x74A8, 0x74AB, 0x74B5, 0x74BF, - 0x74C8, 0x74DA, 0x74DE, 0x754E, 0x7579, 0x7581, 0x7590, 0x7592, 0x7593, - 0x75B4, 0x75E4, 0x75F9, 0x7600, 0x760A, 0x7615, 0x7616, 0x7619, 0x761E, - 0x762D, 0x7635, 0x7643, 0x764B, 0x7665, 0x766D, 0x766F, 0x7671, 0x7674, - 0x76A4, 0x76A5, 0x76C5, 0x76CC, 0x76EC, 0x76FC, 0x7734, 0x7736, 0x775C, - 0x775F, 0x7760, 0x7772, 0x777D, 0x7795, 0x77AA, 0x77E6, 0x77F0, 0x77F4, - 0x7806, 0x7822, 0x782D, 0x782E, 0x7830, 0x7835, 0x7868, 0x789E, 0x78C8, - 0x78CC, 0x78CE, 0x78E4, 0x78E0, 0x78E1, 0x78F2, 0x78F7, 0x78FB, 0x7931, - 0x7934, 0x793B, 0x793D, 0x7945, 0x795B, 0x795C, 0x798B, 0x7996, 0x7998, - 0x79B8, 0x79BB, 0x79CA, 0x79DA, 0x7A03, 0x7A09, 0x7A11, 0x7A1E, 0x7A2D, - 0x7A39, 0x7A45, 0x7A4C, 0x7A5D, 0x7A60, 0x7A6D, 0x7A78, 0x7AA0, 0x7AA3, - 0x7AB3, 0x7ABB, 0x7ABC, 0x7AC6, 0x7B07, 0x7B14, 0x7B27, 0x7B31, 0x7B47, - 0x7B4E, 0x7B60, 0x7B69, 0x7B6D, 0x7B72, 0x7B91, 0x7BAF, 0x7BD7, 0x7BD9, - 0x7C0B, 0x7C0F, 0x7C20, 0x7C26, 0x7C31, 0x7C36, 0x7C51, 0x7C59, 0x7C67, - 0x7C6E, 0x7C70, 0x7CBC, 0x7CBF, 0x7CC8, 0x7CC9, 0x7CD7, 0x7CD9, 0x7CDD, - 0x7CEB, 0x7D07, 0x7D08, 0x7D09, 0x7D13, 0x7D1D, 0x7D23, 0x7D41, 0x7D53, - 0x7D59, 0x7D5D, 0x7D7A, 0x7D86, 0x7D8B, 0x7D8C, 0x7DCC, 0x7DEB, 0x7DF1, - 0x7DF9, 0x7E08, 0x7E11, 0x7E15, 0x7E20, 0x7E47, 0x7E62, 0x7E6E, 0x7E73, - 0x7E8D, 0x7E91, 0x7E98, 0x7F44, 0x7F4F, 0x7F52, 0x7F53, 0x7F61, 0x7F91, - 0x7FBF, 0x7FCE, 0x7FDF, 0x7FE5, 0x7FEC, 0x7FEE, 0x7FEF, 0x7FFA, 0x800E, - 0x8011, 0x8014, 0x8024, 0x8026, 0x803A, 0x803C, 0x8060, 0x8071, 0x8075, - 0x809E, 0x80A6, 0x80AB, 0x80D7, 0x80D8, 0x8116, 0x8118, 0x813A, 0x814A, - 0x814C, 0x8181, 0x8184, 0x81B4, 0x81CF, 0x81F9, 0x8203, 0x8221, 0x8232, - 0x8234, 0x8246, 0x824B, 0x824F, 0x828E, 0x82AE, 0x82B7, 0x82BE, 0x82C6, - 0x82FE, 0x8343, 0x8351, 0x8355, 0x8386, 0x838D, 0x8392, 0x8398, 0x83A9, - 0x83BF, 0x83C0, 0x83EA, 0x840F, 0x8411, 0x844A, 0x8476, 0x84A8, 0x84AF, - 0x84C0, 0x84C2, 0x84F0, 0x84FD, 0x850C, 0x8534, 0x855E, 0x858F, 0x85B7, - 0x85CE, 0x85AD, 0x8612, 0x8629, 0x8652, 0x8663, 0x866C, 0x866F, 0x867A, - 0x868D, 0x8691, 0x8698, 0x86A7, 0x86A8, 0x86FA, 0x86FD, 0x870B, 0x8713, - 0x8719, 0x871E, 0x8728, 0x873E, 0x8771, 0x8788, 0x8799, 0x87AC, 0x87AD, - 0x87B5, 0x87D6, 0x87EB, 0x87ED, 0x8801, 0x8803, 0x8806, 0x880B, 0x8814, - 0x881C, 0x8856, 0x885F, 0x8864, 0x8898, 0x88AA, 0x88BD, 0x88BE, 0x88CA, - 0x88D2, 0x88DB, 0x88F0, 0x88F1, 0x8906, 0x8918, 0x8919, 0x891A, 0x8927, - 0x8930, 0x893E, 0x897B, 0x89D4, 0x89D6, 0x89E5, 0x89F1, 0x8A07, 0x8A0F, - 0x8A15, 0x8A22, 0x8A4E, 0x8A7F, 0x8AF4, 0x8B1F, 0x8B37, 0x8B43, 0x8B44, - 0x8B54, 0x8B9C, 0x8B9E, 0x8C47, 0x8C54, 0x8C73, 0x8CA4, 0x8CD9, 0x8CE1, - 0x8CF8, 0x8CFE, 0x8D1B, 0x8D69, 0x8D6C, 0x8D84, 0x8D8D, 0x8D95, 0x8DA6, - 0x8DC6, 0x8DCE, 0x8DE4, 0x8DEC, 0x8E20, 0x8E4B, 0x8E6C, 0x8E70, 0x8E7A, - 0x8E92, 0x8EAE, 0x8EB3, 0x8ED1, 0x8ED4, 0x8EF9, 0x8F17, 0x8F36, 0x8FA6, - 0x8FB5, 0x8FB6, 0x8FC6, 0x8FE0, 0x8FE4, 0x8FF6, 0x9002, 0x902C, 0x9044, - 0x9088, 0x9095, 0x9099, 0x909B, 0x90A2, 0x90B4, 0x90D7, 0x90DD, 0x90F4, - 0x9117, 0x911C, 0x9131, 0x913A, 0x913D, 0x9148, 0x915B, 0x9161, 0x9164, - 0x918E, 0x919E, 0x91A8, 0x91AD, 0x91AE, 0x91B2, 0x91BC, 0x91F0, 0x91F7, - 0x91FB, 0x9207, 0x9228, 0x9233, 0x9238, 0x9243, 0x9247, 0x924F, 0x9260, - 0x92C2, 0x92CB, 0x92CC, 0x92DF, 0x930D, 0x9315, 0x931F, 0x9327, 0x9347, - 0x9352, 0x9365, 0x936A, 0x936D, 0x939B, 0x93BA, 0x93A9, 0x93C1, 0x93CA, - 0x93E2, 0x93FA, 0x93FD, 0x940F, 0x9434, 0x943F, 0x9455, 0x946B, 0x9472, - 0x9578, 0x95A6, 0x95A9, 0x95AB, 0x95B4, 0x95BD, 0x95DA, 0x961D, 0x9641, - 0x9658, 0x9684, 0x96A4, 0x96A9, 0x96D2, 0x5DB2, 0x96DE, 0x96E9, 0x96F1, - 0x9702, 0x9709, 0x975A, 0x9763, 0x976E, 0x9773, 0x979A, 0x97A2, 0x97B5, - 0x97B6, 0x97D9, 0x97DE, 0x97F4, 0x980A, 0x980E, 0x981E, 0x9823, 0x982B, - 0x983E, 0x9852, 0x9853, 0x9859, 0x986C, 0x98B8, 0x98BA, 0x98BF, 0x98C8, - 0x98E5, 0x9932, 0x9933, 0x9940, 0x994D, 0x995C, 0x995F, 0x99B1, 0x99B9, - 0x99BA, 0x99C9, 0x9A02, 0x9A16, 0x9A24, 0x9A27, 0x9A2D, 0x9A2E, 0x9A36, - 0x9A38, 0x9A4A, 0x9A56, 0x9AB5, 0x9AB6, 0x9AF9, 0x9B03, 0x9B20, 0x9B33, - 0x9B34, 0x9B73, 0x9B79, 0x9BA7, 0x9BC1, 0x9BC7, 0x9BD7, 0x9BE7, 0x9BEB, - 0x9BF7, 0x9BFA, 0x9BFD, 0x9C0B, 0x9C27, 0x9C2A, 0x9C36, 0x9C41, 0x9C53, - 0x9C63, 0x9C6A, 0x9C77, 0x9D02, 0x9D42, 0x9D47, 0x9D63, 0x9D69, 0x9D7C, - 0x9D7E, 0x9D8D, 0x9DB1, 0x9DC3, 0x9DC7, 0x9DD6, 0x9DDF, 0x9DEB, 0x9DF4, - 0x9E15, 0x9E1D, 0x9EA4, 0x9EA8, 0x9EAC, 0x9EE7, 0x9EEE, 0x9F10, 0x9F12, - 0x9F17, 0x9F19, 0x9F2F, 0x9F37, 0x9F39, 0x9F41, 0x9F45, 0x9F57, 0x9F68, - 0x9F71, 0x9F75, 0x9F90, 0x9F94, 0x9FA2, 0x4E30, 0x3405, 0x4F60, 0x5620, - 0x5ECB, 0x2E95, 0x60A4, 0x69D7, 0x6B24, 0x6FF9, 0x6EE6, 0x71B3, 0x2EA4, - 0x7AC6, 0x7F61, 0x8071, 0x809E, 0x2ECC, 0x91F0, 0x5DB2, 0x97DE, 0x4FD3, - 0x50D9, 0x50F0, 0x51C3, 0x5676, 0x6A54, 0x6D01, 0x6DD0, 0x6E42, 0x6ED9, - 0x73E4, 0x7421, 0x756C, 0x7851, 0x87F5, 0xFFFD, 0x73A8, 0x3AF3, 0x34DB, - 0x440C, 0x3E8A, 0xFFFD, 0xFFFD, 0x4BE8, 0xFFFD, 0x3EDA, 0x3B22, 0xFFFD, - 0x457A, 0x4093, 0xFFFD, 0x4665, 0x4103, 0x4293, 0x46AE, 0x3488, 0xFFFD, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp deleted file mode 100644 index 7544e4e4ad..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_EUC_H_1[120 * 3] = { - 0x0020, 0x007E, 0x00E7, 0x8EA0, 0x8EDF, 0x0146, 0xA1A1, 0xA1FE, 0x0279, - 0xA2A1, 0xA2AE, 0x02D7, 0xA2BA, 0xA2C1, 0x02E5, 0xA2CA, 0xA2D0, 0x02ED, - 0xA2DC, 0xA2EA, 0x02F4, 0xA2F2, 0xA2F9, 0x0303, 0xA2FE, 0xA2FE, 0x030B, - 0xA3B0, 0xA3B9, 0x030C, 0xA3C1, 0xA3DA, 0x0316, 0xA3E1, 0xA3FA, 0x0330, - 0xA4A1, 0xA4F3, 0x034A, 0xA5A1, 0xA5F6, 0x039D, 0xA6A1, 0xA6B8, 0x03F3, - 0xA6C1, 0xA6D8, 0x040B, 0xA7A1, 0xA7C1, 0x0423, 0xA7D1, 0xA7F1, 0x0444, - 0xA8A1, 0xA8A1, 0x1D37, 0xA8A2, 0xA8A2, 0x1D39, 0xA8A3, 0xA8A3, 0x1D43, - 0xA8A4, 0xA8A4, 0x1D47, 0xA8A5, 0xA8A5, 0x1D4F, 0xA8A6, 0xA8A6, 0x1D4B, - 0xA8A7, 0xA8A7, 0x1D53, 0xA8A8, 0xA8A8, 0x1D63, 0xA8A9, 0xA8A9, 0x1D5B, - 0xA8AA, 0xA8AA, 0x1D6B, 0xA8AB, 0xA8AB, 0x1D73, 0xA8AC, 0xA8AC, 0x1D38, - 0xA8AD, 0xA8AD, 0x1D3A, 0xA8AE, 0xA8AE, 0x1D46, 0xA8AF, 0xA8AF, 0x1D4A, - 0xA8B0, 0xA8B0, 0x1D52, 0xA8B1, 0xA8B1, 0x1D4E, 0xA8B2, 0xA8B2, 0x1D5A, - 0xA8B3, 0xA8B3, 0x1D6A, 0xA8B4, 0xA8B4, 0x1D62, 0xA8B5, 0xA8B5, 0x1D72, - 0xA8B6, 0xA8B6, 0x1D82, 0xA8B7, 0xA8B7, 0x1D57, 0xA8B8, 0xA8B8, 0x1D66, - 0xA8B9, 0xA8B9, 0x1D5F, 0xA8BA, 0xA8BA, 0x1D6E, 0xA8BB, 0xA8BB, 0x1D76, - 0xA8BC, 0xA8BC, 0x1D54, 0xA8BD, 0xA8BD, 0x1D67, 0xA8BE, 0xA8BE, 0x1D5C, - 0xA8BF, 0xA8BF, 0x1D6F, 0xA8C0, 0xA8C0, 0x1D79, 0xB0A1, 0xB0FE, 0x0465, - 0xB1A1, 0xB1FE, 0x04C3, 0xB2A1, 0xB2FE, 0x0521, 0xB3A1, 0xB3FE, 0x057F, - 0xB4A1, 0xB4FE, 0x05DD, 0xB5A1, 0xB5FE, 0x063B, 0xB6A1, 0xB6FE, 0x0699, - 0xB7A1, 0xB7FE, 0x06F7, 0xB8A1, 0xB8FE, 0x0755, 0xB9A1, 0xB9FE, 0x07B3, - 0xBAA1, 0xBAFE, 0x0811, 0xBBA1, 0xBBFE, 0x086F, 0xBCA1, 0xBCFE, 0x08CD, - 0xBDA1, 0xBDFE, 0x092B, 0xBEA1, 0xBEFE, 0x0989, 0xBFA1, 0xBFFE, 0x09E7, - 0xC0A1, 0xC0FE, 0x0A45, 0xC1A1, 0xC1FE, 0x0AA3, 0xC2A1, 0xC2FE, 0x0B01, - 0xC3A1, 0xC3FE, 0x0B5F, 0xC4A1, 0xC4FE, 0x0BBD, 0xC5A1, 0xC5FE, 0x0C1B, - 0xC6A1, 0xC6FE, 0x0C79, 0xC7A1, 0xC7FE, 0x0CD7, 0xC8A1, 0xC8FE, 0x0D35, - 0xC9A1, 0xC9FE, 0x0D93, 0xCAA1, 0xCAFE, 0x0DF1, 0xCBA1, 0xCBFE, 0x0E4F, - 0xCCA1, 0xCCFE, 0x0EAD, 0xCDA1, 0xCDFE, 0x0F0B, 0xCEA1, 0xCEFE, 0x0F69, - 0xCFA1, 0xCFD3, 0x0FC7, 0xD0A1, 0xD0FE, 0x0FFA, 0xD1A1, 0xD1FE, 0x1058, - 0xD2A1, 0xD2FE, 0x10B6, 0xD3A1, 0xD3FE, 0x1114, 0xD4A1, 0xD4FE, 0x1172, - 0xD5A1, 0xD5FE, 0x11D0, 0xD6A1, 0xD6FE, 0x122E, 0xD7A1, 0xD7FE, 0x128C, - 0xD8A1, 0xD8FE, 0x12EA, 0xD9A1, 0xD9FE, 0x1348, 0xDAA1, 0xDAFE, 0x13A6, - 0xDBA1, 0xDBFE, 0x1404, 0xDCA1, 0xDCFE, 0x1462, 0xDDA1, 0xDDFE, 0x14C0, - 0xDEA1, 0xDEFE, 0x151E, 0xDFA1, 0xDFFE, 0x157C, 0xE0A1, 0xE0FE, 0x15DA, - 0xE1A1, 0xE1FE, 0x1638, 0xE2A1, 0xE2FE, 0x1696, 0xE3A1, 0xE3FE, 0x16F4, - 0xE4A1, 0xE4FE, 0x1752, 0xE5A1, 0xE5FE, 0x17B0, 0xE6A1, 0xE6FE, 0x180E, - 0xE7A1, 0xE7FE, 0x186C, 0xE8A1, 0xE8FE, 0x18CA, 0xE9A1, 0xE9FE, 0x1928, - 0xEAA1, 0xEAFE, 0x1986, 0xEBA1, 0xEBFE, 0x19E4, 0xECA1, 0xECFE, 0x1A42, - 0xEDA1, 0xEDFE, 0x1AA0, 0xEEA1, 0xEEFE, 0x1AFE, 0xEFA1, 0xEFFE, 0x1B5C, - 0xF0A1, 0xF0FE, 0x1BBA, 0xF1A1, 0xF1FE, 0x1C18, 0xF2A1, 0xF2FE, 0x1C76, - 0xF3A1, 0xF3FE, 0x1CD4, 0xF4A1, 0xF4A4, 0x1D32, 0xF4A5, 0xF4A6, 0x205C, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp deleted file mode 100644 index ce4fa25811..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_EUC_V_1[27 * 3] = { - 0xA1A2, 0xA1A3, 0x1ECF, 0xA1B1, 0xA1B2, 0x1ED1, 0xA1BC, 0xA1BE, 0x1ED3, - 0xA1C1, 0xA1C5, 0x1ED6, 0xA1CA, 0xA1DB, 0x1EDB, 0xA1E1, 0xA1E1, 0x1EED, - 0xA4A1, 0xA4A1, 0x1EEE, 0xA4A3, 0xA4A3, 0x1EEF, 0xA4A5, 0xA4A5, 0x1EF0, - 0xA4A7, 0xA4A7, 0x1EF1, 0xA4A9, 0xA4A9, 0x1EF2, 0xA4C3, 0xA4C3, 0x1EF3, - 0xA4E3, 0xA4E3, 0x1EF4, 0xA4E5, 0xA4E5, 0x1EF5, 0xA4E7, 0xA4E7, 0x1EF6, - 0xA4EE, 0xA4EE, 0x1EF7, 0xA5A1, 0xA5A1, 0x1EF8, 0xA5A3, 0xA5A3, 0x1EF9, - 0xA5A5, 0xA5A5, 0x1EFA, 0xA5A7, 0xA5A7, 0x1EFB, 0xA5A9, 0xA5A9, 0x1EFC, - 0xA5C3, 0xA5C3, 0x1EFD, 0xA5E3, 0xA5E3, 0x1EFE, 0xA5E5, 0xA5E5, 0x1EFF, - 0xA5E7, 0xA5E7, 0x1F00, 0xA5EE, 0xA5EE, 0x1F01, 0xA5F5, 0xA5F6, 0x1F02, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp deleted file mode 100644 index 506c9ecc8b..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_Ext_RKSJ_H_2[665 * 3] = { - 0x0020, 0x007E, 0x00E7, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279, - 0x8180, 0x8188, 0x02B8, 0x8189, 0x8189, 0x1D36, 0x818A, 0x81AC, 0x02C2, - 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330, - 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, 0x8380, 0x8396, 0x03DC, - 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, 0x8440, 0x8460, 0x0423, - 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, 0x8540, 0x857E, 0x00E8, - 0x8580, 0x8580, 0x0186, 0x8581, 0x859E, 0x0128, 0x859F, 0x85DD, 0x0147, - 0x85DE, 0x85FC, 0x0187, 0x8640, 0x867E, 0x01A6, 0x8680, 0x8691, 0x01E5, - 0x8692, 0x8692, 0x0127, 0x8693, 0x869E, 0x01F7, 0x86A2, 0x86ED, 0x1D37, - 0x8740, 0x875D, 0x1D83, 0x875F, 0x8775, 0x1DA1, 0x877E, 0x877E, 0x2083, - 0x8780, 0x878F, 0x1DB8, 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9, - 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300, - 0x879B, 0x879C, 0x1DCF, 0x889F, 0x889F, 0x0465, 0x88A0, 0x88A0, 0x1DD1, - 0x88A1, 0x88B0, 0x0467, 0x88B1, 0x88B1, 0x1CA2, 0x88B2, 0x88B8, 0x0478, - 0x88B9, 0x88B9, 0x1DD2, 0x88BA, 0x88EB, 0x0480, 0x88EC, 0x88EC, 0x1DD3, - 0x88ED, 0x88F0, 0x04B3, 0x88F1, 0x88F1, 0x1DD4, 0x88F2, 0x88F9, 0x04B8, - 0x88FA, 0x88FA, 0x1DD5, 0x88FB, 0x88FC, 0x04C1, 0x8940, 0x8948, 0x04C3, - 0x8949, 0x8949, 0x1DD6, 0x894A, 0x8953, 0x04CD, 0x8954, 0x8954, 0x1DD7, - 0x8955, 0x8957, 0x04D8, 0x8958, 0x8958, 0x1DD8, 0x8959, 0x895A, 0x04DC, - 0x895B, 0x895C, 0x1DD9, 0x895D, 0x8960, 0x04E0, 0x8961, 0x8961, 0x1DDB, - 0x8962, 0x897E, 0x04E5, 0x8980, 0x898A, 0x0502, 0x898B, 0x898B, 0x1DDC, - 0x898C, 0x89A5, 0x050E, 0x89A6, 0x89A6, 0x1DDD, 0x89A7, 0x89A7, 0x1CC9, - 0x89A8, 0x89A8, 0x1DDE, 0x89A9, 0x89DD, 0x052B, 0x89DE, 0x89DE, 0x1DDF, - 0x89DF, 0x89F7, 0x0561, 0x89F8, 0x89F8, 0x1DE0, 0x89F9, 0x89FA, 0x057B, - 0x89FB, 0x89FB, 0x1DE1, 0x89FC, 0x89FC, 0x057E, 0x8A40, 0x8A40, 0x057F, - 0x8A41, 0x8A41, 0x1DE2, 0x8A42, 0x8A60, 0x0581, 0x8A61, 0x8A61, 0x1961, - 0x8A62, 0x8A67, 0x05A1, 0x8A68, 0x8A68, 0x139F, 0x8A69, 0x8A7E, 0x05A8, - 0x8A80, 0x8A84, 0x05BE, 0x8A85, 0x8A85, 0x1DE3, 0x8A86, 0x8A8A, 0x05C4, - 0x8A8B, 0x8A8B, 0x1DE4, 0x8A8C, 0x8A92, 0x05CA, 0x8A93, 0x8A93, 0x1DE5, - 0x8A94, 0x8A95, 0x05D2, 0x8A96, 0x8A96, 0x1731, 0x8A97, 0x8A99, 0x05D5, - 0x8A9A, 0x8A9A, 0x1DE6, 0x8A9B, 0x8ABF, 0x05D9, 0x8AC0, 0x8AC0, 0x1DE7, - 0x8AC1, 0x8AC1, 0x1572, 0x8AC2, 0x8ACA, 0x0600, 0x8ACB, 0x8ACB, 0x1DE8, - 0x8ACC, 0x8ACF, 0x060A, 0x8AD0, 0x8AD0, 0x1A20, 0x8AD1, 0x8AE2, 0x060F, - 0x8AE3, 0x8AE3, 0x1DE9, 0x8AE4, 0x8AFC, 0x0622, 0x8B40, 0x8B49, 0x063B, - 0x8B4A, 0x8B4A, 0x1DEA, 0x8B4B, 0x8B5E, 0x0646, 0x8B5F, 0x8B5F, 0x1DEB, - 0x8B60, 0x8B7E, 0x065B, 0x8B80, 0x8B9F, 0x067A, 0x8BA0, 0x8BA0, 0x1DEC, - 0x8BA1, 0x8BA7, 0x069B, 0x8BA8, 0x8BA8, 0x1DED, 0x8BA9, 0x8BC3, 0x06A3, - 0x8BC4, 0x8BC4, 0x1D32, 0x8BC5, 0x8BCC, 0x06BF, 0x8BCD, 0x8BCD, 0x1DEE, - 0x8BCE, 0x8BEA, 0x06C8, 0x8BEB, 0x8BEB, 0x1DEF, 0x8BEC, 0x8BF1, 0x06E6, - 0x8BF2, 0x8BF2, 0x1DF0, 0x8BF3, 0x8BF8, 0x06ED, 0x8BF9, 0x8BF9, 0x1DF1, - 0x8BFA, 0x8BFA, 0x06F4, 0x8BFB, 0x8BFB, 0x1DF2, 0x8BFC, 0x8BFC, 0x06F6, - 0x8C40, 0x8C42, 0x06F7, 0x8C43, 0x8C43, 0x1DF3, 0x8C44, 0x8C55, 0x06FB, - 0x8C56, 0x8C56, 0x1DF4, 0x8C57, 0x8C63, 0x070E, 0x8C64, 0x8C64, 0x1DF5, - 0x8C65, 0x8C6C, 0x071C, 0x8C6D, 0x8C6D, 0x1DF6, 0x8C6E, 0x8C70, 0x0725, - 0x8C71, 0x8C71, 0x1DF7, 0x8C72, 0x8C73, 0x0729, 0x8C74, 0x8C74, 0x1DF8, - 0x8C75, 0x8C79, 0x072C, 0x8C7A, 0x8C7A, 0x1C0D, 0x8C7B, 0x8C7E, 0x0732, - 0x8C80, 0x8C83, 0x0736, 0x8C84, 0x8C84, 0x1DF9, 0x8C85, 0x8C90, 0x073B, - 0x8C91, 0x8C91, 0x1DFA, 0x8C92, 0x8C98, 0x0748, 0x8C99, 0x8C99, 0x1DFB, - 0x8C9A, 0x8C9D, 0x0750, 0x8C9E, 0x8C9E, 0x1DFC, 0x8C9F, 0x8CB1, 0x0755, - 0x8CB2, 0x8CB2, 0x1DFD, 0x8CB3, 0x8CBE, 0x0769, 0x8CBF, 0x8CBF, 0x1DFE, - 0x8CC0, 0x8CFC, 0x0776, 0x8D40, 0x8D49, 0x07B3, 0x8D4A, 0x8D4A, 0x1DFF, - 0x8D4B, 0x8D55, 0x07BE, 0x8D56, 0x8D56, 0x1E00, 0x8D57, 0x8D60, 0x07CA, - 0x8D61, 0x8D61, 0x1E01, 0x8D62, 0x8D7A, 0x07D5, 0x8D7B, 0x8D7B, 0x16DD, - 0x8D7C, 0x8D7E, 0x07EF, 0x8D80, 0x8D8C, 0x07F2, 0x8D8D, 0x8D8D, 0x1E02, - 0x8D8E, 0x8D93, 0x0800, 0x8D94, 0x8D94, 0x1E03, 0x8D95, 0x8D98, 0x0807, - 0x8D99, 0x8D99, 0x1E04, 0x8D9A, 0x8DD0, 0x080C, 0x8DD1, 0x8DD1, 0x1E05, - 0x8DD2, 0x8DE4, 0x0844, 0x8DE5, 0x8DE5, 0x1E06, 0x8DE6, 0x8DF1, 0x0858, - 0x8DF2, 0x8DF2, 0x1E07, 0x8DF3, 0x8DFC, 0x0865, 0x8E40, 0x8E45, 0x086F, - 0x8E46, 0x8E46, 0x1E08, 0x8E47, 0x8E48, 0x0876, 0x8E49, 0x8E49, 0x1E09, - 0x8E4A, 0x8E4A, 0x0879, 0x8E4B, 0x8E4B, 0x1E0A, 0x8E4C, 0x8E57, 0x087B, - 0x8E58, 0x8E58, 0x1E0B, 0x8E59, 0x8E7E, 0x0888, 0x8E80, 0x8EB5, 0x08AE, - 0x8EB6, 0x8EB6, 0x1E0C, 0x8EB7, 0x8EC5, 0x08E5, 0x8EC6, 0x8EC6, 0x1E0D, - 0x8EC7, 0x8EC7, 0x1929, 0x8EC8, 0x8ED4, 0x08F6, 0x8ED5, 0x8ED5, 0x1E0E, - 0x8ED6, 0x8EDA, 0x0904, 0x8EDB, 0x8EDC, 0x1E0F, 0x8EDD, 0x8EFC, 0x090B, - 0x8F40, 0x8F49, 0x092B, 0x8F4A, 0x8F4A, 0x1E11, 0x8F4B, 0x8F54, 0x0936, - 0x8F55, 0x8F55, 0x1E12, 0x8F56, 0x8F7E, 0x0941, 0x8F80, 0x8F8B, 0x096A, - 0x8F8C, 0x8F8D, 0x1E13, 0x8F8E, 0x8F91, 0x0978, 0x8F92, 0x8F93, 0x1E15, - 0x8F94, 0x8FA2, 0x097E, 0x8FA3, 0x8FA3, 0x1E17, 0x8FA4, 0x8FB0, 0x098E, - 0x8FB1, 0x8FB1, 0x1E18, 0x8FB2, 0x8FBC, 0x099C, 0x8FBD, 0x8FBD, 0x1E19, - 0x8FBE, 0x8FD2, 0x09A8, 0x8FD3, 0x8FD3, 0x1E1A, 0x8FD4, 0x8FDC, 0x09BE, - 0x8FDD, 0x8FDD, 0x1E1B, 0x8FDE, 0x8FE1, 0x09C8, 0x8FE2, 0x8FE2, 0x1E1C, - 0x8FE3, 0x8FFC, 0x09CD, 0x9040, 0x9048, 0x09E7, 0x9049, 0x9049, 0x1E1D, - 0x904A, 0x9077, 0x09F1, 0x9078, 0x9078, 0x1E1E, 0x9079, 0x907E, 0x0A20, - 0x9080, 0x9080, 0x1E1F, 0x9081, 0x9088, 0x0A27, 0x9089, 0x9089, 0x1E20, - 0x908A, 0x909F, 0x0A30, 0x90A0, 0x90A0, 0x1E21, 0x90A1, 0x90BF, 0x0A47, - 0x90C0, 0x90C0, 0x1E22, 0x90C1, 0x90E3, 0x0A67, 0x90E4, 0x90E4, 0x1E23, - 0x90E5, 0x90EE, 0x0A8B, 0x90EF, 0x90F0, 0x1E24, 0x90F1, 0x90F6, 0x0A97, - 0x90F7, 0x90F8, 0x1E26, 0x90F9, 0x90FC, 0x0A9F, 0x9140, 0x9145, 0x0AA3, - 0x9146, 0x9146, 0x1E28, 0x9147, 0x9147, 0x1A6E, 0x9148, 0x9157, 0x0AAB, - 0x9158, 0x9158, 0x1E29, 0x9159, 0x916A, 0x0ABC, 0x916B, 0x916B, 0x1E2A, - 0x916C, 0x916D, 0x0ACF, 0x916E, 0x916E, 0x1E2B, 0x916F, 0x917D, 0x0AD2, - 0x917E, 0x917E, 0x1E2C, 0x9180, 0x9188, 0x0AE2, 0x9189, 0x9189, 0x1E2D, - 0x918A, 0x91BA, 0x0AEC, 0x91BB, 0x91BB, 0x1E2E, 0x91BC, 0x91CA, 0x0B1E, - 0x91CB, 0x91CB, 0x1E2F, 0x91CC, 0x91D9, 0x0B2E, 0x91DA, 0x91DA, 0x1E30, - 0x91DB, 0x91E0, 0x0B3D, 0x91E1, 0x91E1, 0x1E31, 0x91E2, 0x91EC, 0x0B44, - 0x91ED, 0x91ED, 0x1E32, 0x91EE, 0x91F2, 0x0B50, 0x91F3, 0x91F4, 0x1E33, - 0x91F5, 0x91FA, 0x0B57, 0x91FB, 0x91FB, 0x1E35, 0x91FC, 0x91FC, 0x0B5E, - 0x9240, 0x9245, 0x0B5F, 0x9246, 0x9246, 0x1E36, 0x9247, 0x9247, 0x0B66, - 0x9248, 0x9249, 0x1E37, 0x924A, 0x924B, 0x0B69, 0x924C, 0x924D, 0x1E39, - 0x924E, 0x925B, 0x0B6D, 0x925C, 0x925C, 0x1E3B, 0x925D, 0x927E, 0x0B7C, - 0x9280, 0x928F, 0x0B9E, 0x9290, 0x9290, 0x1E3C, 0x9291, 0x9294, 0x0BAF, - 0x9295, 0x9295, 0x1E3D, 0x9296, 0x929B, 0x0BB4, 0x929C, 0x929C, 0x1E3E, - 0x929D, 0x92BA, 0x0BBB, 0x92BB, 0x92BB, 0x1E3F, 0x92BC, 0x92C5, 0x0BDA, - 0x92C6, 0x92C6, 0x1E40, 0x92C7, 0x92C7, 0x0BE5, 0x92C8, 0x92C8, 0x1E41, - 0x92C9, 0x92CA, 0x0BE7, 0x92CB, 0x92CB, 0x1E42, 0x92CC, 0x92CC, 0x0BEA, - 0x92CD, 0x92CD, 0x1E43, 0x92CE, 0x92D8, 0x0BEC, 0x92D9, 0x92D9, 0x11B5, - 0x92DA, 0x92FC, 0x0BF8, 0x9340, 0x9340, 0x0C1B, 0x9341, 0x9341, 0x1E44, - 0x9342, 0x9345, 0x0C1D, 0x9346, 0x9346, 0x1E45, 0x9347, 0x934C, 0x0C22, - 0x934D, 0x934D, 0x1E46, 0x934E, 0x9354, 0x0C29, 0x9355, 0x9355, 0x1E47, - 0x9356, 0x935D, 0x0C31, 0x935E, 0x935E, 0x1E48, 0x935F, 0x9366, 0x0C3A, - 0x9367, 0x9367, 0x1E49, 0x9368, 0x9369, 0x0C43, 0x936A, 0x936A, 0x1E4A, - 0x936B, 0x936F, 0x0C46, 0x9370, 0x9371, 0x1E4B, 0x9372, 0x9375, 0x0C4D, - 0x9376, 0x9376, 0x16DF, 0x9377, 0x937E, 0x0C52, 0x9380, 0x9383, 0x0C5A, - 0x9384, 0x9384, 0x1E4D, 0x9385, 0x938D, 0x0C5F, 0x938E, 0x938E, 0x1450, - 0x938F, 0x9392, 0x0C69, 0x9393, 0x9393, 0x1536, 0x9394, 0x9397, 0x0C6E, - 0x9398, 0x9398, 0x1E4E, 0x9399, 0x93BB, 0x0C73, 0x93BC, 0x93BC, 0x1E4F, - 0x93BD, 0x93BF, 0x0C97, 0x93C0, 0x93C0, 0x1E50, 0x93C1, 0x93D1, 0x0C9B, - 0x93D2, 0x93D3, 0x1E51, 0x93D4, 0x93D8, 0x0CAE, 0x93D9, 0x93DA, 0x1E53, - 0x93DB, 0x93DE, 0x0CB5, 0x93DF, 0x93DF, 0x1E55, 0x93E0, 0x93E3, 0x0CBA, - 0x93E4, 0x93E5, 0x1E56, 0x93E6, 0x93E7, 0x0CC0, 0x93E8, 0x93E8, 0x1E58, - 0x93E9, 0x93F3, 0x0CC3, 0x93F4, 0x93F4, 0x1AED, 0x93F5, 0x93FC, 0x0CCF, - 0x9440, 0x9447, 0x0CD7, 0x9448, 0x9448, 0x1E59, 0x9449, 0x9457, 0x0CE0, - 0x9458, 0x9458, 0x1E5A, 0x9459, 0x9475, 0x0CF0, 0x9476, 0x9476, 0x1E5B, - 0x9477, 0x947E, 0x0D0E, 0x9480, 0x9486, 0x0D16, 0x9487, 0x9487, 0x1E5C, - 0x9488, 0x9488, 0x1989, 0x9489, 0x9489, 0x1E5D, 0x948A, 0x948C, 0x0D20, - 0x948D, 0x948D, 0x1E5E, 0x948E, 0x94A1, 0x0D24, 0x94A2, 0x94A2, 0x1E5F, - 0x94A3, 0x94AB, 0x0D39, 0x94AC, 0x94AC, 0x1E60, 0x94AD, 0x94AD, 0x0D43, - 0x94AE, 0x94AE, 0x1E61, 0x94AF, 0x94D1, 0x0D45, 0x94D2, 0x94D2, 0x1E62, - 0x94D3, 0x94DF, 0x0D69, 0x94E0, 0x94E0, 0x1E63, 0x94E1, 0x94F2, 0x0D77, - 0x94F3, 0x94F3, 0x1E64, 0x94F4, 0x94FC, 0x0D8A, 0x9540, 0x9540, 0x0D93, - 0x9541, 0x9542, 0x1E65, 0x9543, 0x954D, 0x0D96, 0x954E, 0x954E, 0x1E67, - 0x954F, 0x954F, 0x143B, 0x9550, 0x9550, 0x0DA3, 0x9551, 0x9551, 0x1E68, - 0x9552, 0x9553, 0x0DA5, 0x9554, 0x9554, 0x1E69, 0x9555, 0x955E, 0x0DA8, - 0x955F, 0x955F, 0x1E6A, 0x9560, 0x956C, 0x0DB3, 0x956D, 0x956D, 0x1E6B, - 0x956E, 0x956F, 0x0DC1, 0x9570, 0x9570, 0x1E6C, 0x9571, 0x957E, 0x0DC4, - 0x9580, 0x95C0, 0x0DD2, 0x95C1, 0x95C1, 0x1E6D, 0x95C2, 0x95CA, 0x0E14, - 0x95CB, 0x95CB, 0x1E6E, 0x95CC, 0x95D7, 0x0E1E, 0x95D8, 0x95D8, 0x1E6F, - 0x95D9, 0x95F6, 0x0E2B, 0x95F7, 0x95F7, 0x1E70, 0x95F8, 0x95FC, 0x0E4A, - 0x9640, 0x9640, 0x0E4F, 0x9641, 0x9641, 0x1E71, 0x9642, 0x9647, 0x0E51, - 0x9648, 0x9648, 0x1E72, 0x9649, 0x9669, 0x0E58, 0x966A, 0x966A, 0x1E73, - 0x966B, 0x967E, 0x0E7A, 0x9680, 0x9689, 0x0E8E, 0x968A, 0x968A, 0x1D33, - 0x968B, 0x968F, 0x0E99, 0x9690, 0x9690, 0x1E74, 0x9691, 0x9698, 0x0E9F, - 0x9699, 0x9699, 0x102F, 0x969A, 0x96CA, 0x0EA8, 0x96CB, 0x96CB, 0x1E75, - 0x96CC, 0x96D6, 0x0EDA, 0x96D7, 0x96D7, 0x1E76, 0x96D8, 0x96DC, 0x0EE6, - 0x96DD, 0x96DD, 0x1E77, 0x96DE, 0x96DF, 0x0EEC, 0x96E0, 0x96E0, 0x1E78, - 0x96E1, 0x96F6, 0x0EEF, 0x96F7, 0x96F7, 0x1935, 0x96F8, 0x96F8, 0x1E79, - 0x96F9, 0x96F9, 0x0F07, 0x96FA, 0x96FA, 0x1E7A, 0x96FB, 0x96FB, 0x0F09, - 0x96FC, 0x96FC, 0x1E7B, 0x9740, 0x9750, 0x0F0B, 0x9751, 0x9751, 0x1E7C, - 0x9752, 0x976E, 0x0F1D, 0x976F, 0x976F, 0x1E7D, 0x9770, 0x9772, 0x0F3B, - 0x9773, 0x9773, 0x1E7E, 0x9774, 0x9778, 0x0F3F, 0x9779, 0x9779, 0x1D34, - 0x977A, 0x977E, 0x0F45, 0x9780, 0x9788, 0x0F4A, 0x9789, 0x9789, 0x1E7F, - 0x978A, 0x97C8, 0x0F54, 0x97C9, 0x97C9, 0x1E80, 0x97CA, 0x97F7, 0x0F94, - 0x97F8, 0x97F9, 0x1E81, 0x97FA, 0x97FC, 0x0FC4, 0x9840, 0x9840, 0x1E83, - 0x9841, 0x984F, 0x0FC8, 0x9850, 0x9850, 0x1E84, 0x9851, 0x9854, 0x0FD8, - 0x9855, 0x9855, 0x1777, 0x9856, 0x9857, 0x0FDD, 0x9858, 0x9858, 0x1E85, - 0x9859, 0x9872, 0x0FE0, 0x989F, 0x98D3, 0x0FFA, 0x98D4, 0x98D4, 0x0EA7, - 0x98D5, 0x98FC, 0x1030, 0x9940, 0x995B, 0x1058, 0x995C, 0x995C, 0x1E86, - 0x995D, 0x9965, 0x1075, 0x9966, 0x9966, 0x1E87, 0x9967, 0x9969, 0x107F, - 0x996A, 0x996A, 0x1E88, 0x996B, 0x996B, 0x1083, 0x996C, 0x996C, 0x1E89, - 0x996D, 0x997E, 0x1085, 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A4E, 0x1114, - 0x9A4F, 0x9A4F, 0x1E8A, 0x9A50, 0x9A58, 0x1124, 0x9A59, 0x9A59, 0x1E8B, - 0x9A5A, 0x9A6E, 0x112E, 0x9A6F, 0x9A6F, 0x1E8C, 0x9A70, 0x9A7C, 0x1144, - 0x9A7D, 0x9A7D, 0x1E8D, 0x9A7E, 0x9A7E, 0x1152, 0x9A80, 0x9A8A, 0x1153, - 0x9A8B, 0x9A8B, 0x1E8E, 0x9A8C, 0x9AC1, 0x115F, 0x9AC2, 0x9AC2, 0x1E8F, - 0x9AC3, 0x9AE1, 0x1196, 0x9AE2, 0x9AE2, 0x0BF7, 0x9AE3, 0x9AFC, 0x11B6, - 0x9B40, 0x9B5B, 0x11D0, 0x9B5C, 0x9B5C, 0x1E90, 0x9B5D, 0x9B7E, 0x11ED, - 0x9B80, 0x9B82, 0x120F, 0x9B83, 0x9B83, 0x1E91, 0x9B84, 0x9B9F, 0x1213, - 0x9BA0, 0x9BA0, 0x1E92, 0x9BA1, 0x9BEF, 0x1230, 0x9BF0, 0x9BF0, 0x1E93, - 0x9BF1, 0x9BFC, 0x1280, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CA1, 0x12CB, - 0x9CA2, 0x9CA2, 0x1E94, 0x9CA3, 0x9CFC, 0x12EE, 0x9D40, 0x9D7E, 0x1348, - 0x9D80, 0x9D80, 0x1E95, 0x9D81, 0x9D8B, 0x1388, 0x9D8C, 0x9D8C, 0x1E96, - 0x9D8D, 0x9D97, 0x1394, 0x9D98, 0x9D98, 0x05A7, 0x9D99, 0x9DB6, 0x13A0, - 0x9DB7, 0x9DB7, 0x1E97, 0x9DB8, 0x9DCA, 0x13BF, 0x9DCB, 0x9DCB, 0x1E98, - 0x9DCC, 0x9DFC, 0x13D3, 0x9E40, 0x9E63, 0x1404, 0x9E64, 0x9E64, 0x1E99, - 0x9E65, 0x9E68, 0x1429, 0x9E69, 0x9E69, 0x1E9A, 0x9E6A, 0x9E76, 0x142E, - 0x9E77, 0x9E77, 0x0DA2, 0x9E78, 0x9E7E, 0x143C, 0x9E80, 0x9E8A, 0x1443, - 0x9E8B, 0x9E8B, 0x1E9B, 0x9E8C, 0x9E8C, 0x144F, 0x9E8D, 0x9E8D, 0x0C68, - 0x9E8E, 0x9E93, 0x1451, 0x9E94, 0x9E94, 0x1E9C, 0x9E95, 0x9EFC, 0x1458, - 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FB6, 0x14FF, 0x9FB7, 0x9FB7, 0x0C6D, - 0x9FB8, 0x9FCD, 0x1537, 0x9FCE, 0x9FCE, 0x1E9D, 0x9FCF, 0x9FF2, 0x154E, - 0x9FF3, 0x9FF3, 0x05FF, 0x9FF4, 0x9FFC, 0x1573, 0xE040, 0xE07E, 0x157C, - 0xE080, 0xE092, 0x15BB, 0xE093, 0xE093, 0x1E9E, 0xE094, 0xE0A3, 0x15CF, - 0xE0A4, 0xE0A4, 0x1E9F, 0xE0A5, 0xE0DC, 0x15E0, 0xE0DD, 0xE0DD, 0x1EA0, - 0xE0DE, 0xE0F3, 0x1619, 0xE0F4, 0xE0F4, 0x1D35, 0xE0F5, 0xE0FC, 0x1630, - 0xE140, 0xE149, 0x1638, 0xE14A, 0xE14A, 0x1EA1, 0xE14B, 0xE14E, 0x1643, - 0xE14F, 0xE150, 0x1EA2, 0xE151, 0xE17E, 0x1649, 0xE180, 0xE1A8, 0x1677, - 0xE1A9, 0xE1A9, 0x1EA4, 0xE1AA, 0xE1E5, 0x16A1, 0xE1E6, 0xE1E6, 0x07EE, - 0xE1E7, 0xE1E7, 0x16DE, 0xE1E8, 0xE1E8, 0x0C51, 0xE1E9, 0xE1EC, 0x16E0, - 0xE1ED, 0xE1ED, 0x1EA5, 0xE1EE, 0xE1FC, 0x16E5, 0xE240, 0xE268, 0x16F4, - 0xE269, 0xE269, 0x1EA6, 0xE26A, 0xE272, 0x171E, 0xE273, 0xE273, 0x1EA7, - 0xE274, 0xE27C, 0x1728, 0xE27D, 0xE27D, 0x05D4, 0xE27E, 0xE27E, 0x1732, - 0xE280, 0xE2B6, 0x1733, 0xE2B7, 0xE2B7, 0x1EA8, 0xE2B8, 0xE2C3, 0x176B, - 0xE2C4, 0xE2C4, 0x0FDC, 0xE2C5, 0xE2E1, 0x1778, 0xE2E2, 0xE2E2, 0x1EA9, - 0xE2E3, 0xE2EB, 0x1796, 0xE2EC, 0xE2EC, 0x1EAA, 0xE2ED, 0xE2FC, 0x17A0, - 0xE340, 0xE357, 0x17B0, 0xE358, 0xE358, 0x1EAB, 0xE359, 0xE359, 0x17C9, - 0xE35A, 0xE35A, 0x1EAC, 0xE35B, 0xE364, 0x17CB, 0xE365, 0xE365, 0x1EAD, - 0xE366, 0xE37E, 0x17D6, 0xE380, 0xE3C3, 0x17EF, 0xE3C4, 0xE3C4, 0x1EAE, - 0xE3C5, 0xE3FC, 0x1834, 0xE440, 0xE47E, 0x186C, 0xE480, 0xE483, 0x18AB, - 0xE484, 0xE484, 0x1EAF, 0xE485, 0xE488, 0x18B0, 0xE489, 0xE489, 0x1EB0, - 0xE48A, 0xE491, 0x18B5, 0xE492, 0xE492, 0x1EB1, 0xE493, 0xE4B1, 0x18BE, - 0xE4B2, 0xE4B2, 0x1EB2, 0xE4B3, 0xE4B8, 0x18DE, 0xE4B9, 0xE4B9, 0x1EB3, - 0xE4BA, 0xE4F1, 0x18E5, 0xE4F2, 0xE4F2, 0x1EB4, 0xE4F3, 0xE4FC, 0x191E, - 0xE540, 0xE540, 0x1928, 0xE541, 0xE541, 0x08F5, 0xE542, 0xE54C, 0x192A, - 0xE54D, 0xE54D, 0x0F05, 0xE54E, 0xE55A, 0x1936, 0xE55B, 0xE55B, 0x1EB5, - 0xE55C, 0xE578, 0x1944, 0xE579, 0xE579, 0x05A0, 0xE57A, 0xE57E, 0x1962, - 0xE580, 0xE5A1, 0x1967, 0xE5A2, 0xE5A2, 0x0D1E, 0xE5A3, 0xE5A4, 0x198A, - 0xE5A5, 0xE5A5, 0x1EB6, 0xE5A6, 0xE5BA, 0x198D, 0xE5BB, 0xE5BB, 0x1EB7, - 0xE5BC, 0xE5EC, 0x19A3, 0xE5ED, 0xE5ED, 0x1EB8, 0xE5EE, 0xE5FC, 0x19D5, - 0xE640, 0xE650, 0x19E4, 0xE651, 0xE651, 0x1EB9, 0xE652, 0xE67B, 0x19F6, - 0xE67C, 0xE67C, 0x060E, 0xE67D, 0xE67E, 0x1A21, 0xE680, 0xE685, 0x1A23, - 0xE686, 0xE686, 0x1EBA, 0xE687, 0xE695, 0x1A2A, 0xE696, 0xE696, 0x1EBB, - 0xE697, 0xE6CA, 0x1A3A, 0xE6CB, 0xE6CB, 0x0AAA, 0xE6CC, 0xE6E6, 0x1A6F, - 0xE6E7, 0xE6E7, 0x1EBC, 0xE6E8, 0xE6F1, 0x1A8B, 0xE6F2, 0xE6F2, 0x1EBD, - 0xE6F3, 0xE6FC, 0x1A96, 0xE740, 0xE76C, 0x1AA0, 0xE76D, 0xE76D, 0x1EBE, - 0xE76E, 0xE77E, 0x1ACE, 0xE780, 0xE78B, 0x1ADF, 0xE78C, 0xE78C, 0x1EBF, - 0xE78D, 0xE78D, 0x1AEC, 0xE78E, 0xE78E, 0x1EC0, 0xE78F, 0xE7A6, 0x1AEE, - 0xE7A7, 0xE7A7, 0x1EC1, 0xE7A8, 0xE7BA, 0x1B07, 0xE7BB, 0xE7BB, 0x1EC2, - 0xE7BC, 0xE7D4, 0x1B1B, 0xE7D5, 0xE7D5, 0x1EC3, 0xE7D6, 0xE7FC, 0x1B35, - 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE884, 0x1B9B, 0xE885, 0xE885, 0x1EC4, - 0xE886, 0xE8B0, 0x1BA1, 0xE8B1, 0xE8B1, 0x1EC5, 0xE8B2, 0xE8C2, 0x1BCD, - 0xE8C3, 0xE8C3, 0x1EC6, 0xE8C4, 0xE8CE, 0x1BDF, 0xE8CF, 0xE8CF, 0x1EC7, - 0xE8D0, 0xE8D4, 0x1BEB, 0xE8D5, 0xE8D5, 0x1EC8, 0xE8D6, 0xE8F1, 0x1BF1, - 0xE8F2, 0xE8F2, 0x0731, 0xE8F3, 0xE8F3, 0x1EC9, 0xE8F4, 0xE8FC, 0x1C0F, - 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9AA, 0x1C57, 0xE9AB, 0xE9AB, 0x1ECA, - 0xE9AC, 0xE9B9, 0x1C83, 0xE9BA, 0xE9BA, 0x1ECB, 0xE9BB, 0xE9CA, 0x1C92, - 0xE9CB, 0xE9CB, 0x0477, 0xE9CC, 0xE9CC, 0x1ECC, 0xE9CD, 0xE9F1, 0x1CA4, - 0xE9F2, 0xE9F2, 0x0529, 0xE9F3, 0xE9FC, 0x1CCA, 0xEA40, 0xEA6F, 0x1CD4, - 0xEA70, 0xEA70, 0x1ECD, 0xEA71, 0xEA7E, 0x1D05, 0xEA80, 0xEA9C, 0x1D13, - 0xEA9D, 0xEA9D, 0x1ECE, 0xEA9E, 0xEA9E, 0x1D31, 0xED40, 0xED7E, 0x20A7, - 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, 0xEDB5, 0xEDFC, 0x211A, - 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, 0xEEEF, 0xEEF8, 0x1F9C, - 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp deleted file mode 100644 index 6bbd237ecd..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_Ext_RKSJ_V_2[39 * 3] = { - 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052, - 0x814A, 0x814A, 0x2050, 0x814B, 0x814B, 0x204F, 0x815B, 0x815D, 0x1ED3, - 0x8160, 0x8164, 0x1ED6, 0x8165, 0x8165, 0x2059, 0x8166, 0x8166, 0x2054, - 0x8167, 0x8167, 0x2057, 0x8168, 0x8168, 0x2056, 0x8169, 0x817A, 0x1EDB, - 0x818B, 0x818B, 0x204D, 0x818C, 0x818C, 0x2051, 0x818D, 0x818D, 0x205B, - 0x81AC, 0x81AC, 0x204E, 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, - 0x82A3, 0x82A3, 0x1EF0, 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, - 0x82C1, 0x82C1, 0x1EF3, 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, - 0x82E5, 0x82E5, 0x1EF6, 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, - 0x8342, 0x8342, 0x1EF9, 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, - 0x8348, 0x8348, 0x1EFC, 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, - 0x8385, 0x8385, 0x1EFF, 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, - 0x8395, 0x8396, 0x1F02, 0x875F, 0x876E, 0x1F04, 0x8780, 0x8781, 0x1F14, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp deleted file mode 100644 index 6bfca50662..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_H_1[118 * 3] = { - 0x2121, 0x217E, 0x0279, 0x2221, 0x222E, 0x02D7, 0x223A, 0x2241, 0x02E5, - 0x224A, 0x2250, 0x02ED, 0x225C, 0x226A, 0x02F4, 0x2272, 0x2279, 0x0303, - 0x227E, 0x227E, 0x030B, 0x2330, 0x2339, 0x030C, 0x2341, 0x235A, 0x0316, - 0x2361, 0x237A, 0x0330, 0x2421, 0x2473, 0x034A, 0x2521, 0x2576, 0x039D, - 0x2621, 0x2638, 0x03F3, 0x2641, 0x2658, 0x040B, 0x2721, 0x2741, 0x0423, - 0x2751, 0x2771, 0x0444, 0x2821, 0x2821, 0x1D37, 0x2822, 0x2822, 0x1D39, - 0x2823, 0x2823, 0x1D43, 0x2824, 0x2824, 0x1D47, 0x2825, 0x2825, 0x1D4F, - 0x2826, 0x2826, 0x1D4B, 0x2827, 0x2827, 0x1D53, 0x2828, 0x2828, 0x1D63, - 0x2829, 0x2829, 0x1D5B, 0x282A, 0x282A, 0x1D6B, 0x282B, 0x282B, 0x1D73, - 0x282C, 0x282C, 0x1D38, 0x282D, 0x282D, 0x1D3A, 0x282E, 0x282E, 0x1D46, - 0x282F, 0x282F, 0x1D4A, 0x2830, 0x2830, 0x1D52, 0x2831, 0x2831, 0x1D4E, - 0x2832, 0x2832, 0x1D5A, 0x2833, 0x2833, 0x1D6A, 0x2834, 0x2834, 0x1D62, - 0x2835, 0x2835, 0x1D72, 0x2836, 0x2836, 0x1D82, 0x2837, 0x2837, 0x1D57, - 0x2838, 0x2838, 0x1D66, 0x2839, 0x2839, 0x1D5F, 0x283A, 0x283A, 0x1D6E, - 0x283B, 0x283B, 0x1D76, 0x283C, 0x283C, 0x1D54, 0x283D, 0x283D, 0x1D67, - 0x283E, 0x283E, 0x1D5C, 0x283F, 0x283F, 0x1D6F, 0x2840, 0x2840, 0x1D79, - 0x3021, 0x307E, 0x0465, 0x3121, 0x317E, 0x04C3, 0x3221, 0x327E, 0x0521, - 0x3321, 0x337E, 0x057F, 0x3421, 0x347E, 0x05DD, 0x3521, 0x357E, 0x063B, - 0x3621, 0x367E, 0x0699, 0x3721, 0x377E, 0x06F7, 0x3821, 0x387E, 0x0755, - 0x3921, 0x397E, 0x07B3, 0x3A21, 0x3A7E, 0x0811, 0x3B21, 0x3B7E, 0x086F, - 0x3C21, 0x3C7E, 0x08CD, 0x3D21, 0x3D7E, 0x092B, 0x3E21, 0x3E7E, 0x0989, - 0x3F21, 0x3F7E, 0x09E7, 0x4021, 0x407E, 0x0A45, 0x4121, 0x417E, 0x0AA3, - 0x4221, 0x427E, 0x0B01, 0x4321, 0x437E, 0x0B5F, 0x4421, 0x447E, 0x0BBD, - 0x4521, 0x457E, 0x0C1B, 0x4621, 0x467E, 0x0C79, 0x4721, 0x477E, 0x0CD7, - 0x4821, 0x487E, 0x0D35, 0x4921, 0x497E, 0x0D93, 0x4A21, 0x4A7E, 0x0DF1, - 0x4B21, 0x4B7E, 0x0E4F, 0x4C21, 0x4C7E, 0x0EAD, 0x4D21, 0x4D7E, 0x0F0B, - 0x4E21, 0x4E7E, 0x0F69, 0x4F21, 0x4F53, 0x0FC7, 0x5021, 0x507E, 0x0FFA, - 0x5121, 0x517E, 0x1058, 0x5221, 0x527E, 0x10B6, 0x5321, 0x537E, 0x1114, - 0x5421, 0x547E, 0x1172, 0x5521, 0x557E, 0x11D0, 0x5621, 0x567E, 0x122E, - 0x5721, 0x577E, 0x128C, 0x5821, 0x587E, 0x12EA, 0x5921, 0x597E, 0x1348, - 0x5A21, 0x5A7E, 0x13A6, 0x5B21, 0x5B7E, 0x1404, 0x5C21, 0x5C7E, 0x1462, - 0x5D21, 0x5D7E, 0x14C0, 0x5E21, 0x5E7E, 0x151E, 0x5F21, 0x5F7E, 0x157C, - 0x6021, 0x607E, 0x15DA, 0x6121, 0x617E, 0x1638, 0x6221, 0x627E, 0x1696, - 0x6321, 0x637E, 0x16F4, 0x6421, 0x647E, 0x1752, 0x6521, 0x657E, 0x17B0, - 0x6621, 0x667E, 0x180E, 0x6721, 0x677E, 0x186C, 0x6821, 0x687E, 0x18CA, - 0x6921, 0x697E, 0x1928, 0x6A21, 0x6A7E, 0x1986, 0x6B21, 0x6B7E, 0x19E4, - 0x6C21, 0x6C7E, 0x1A42, 0x6D21, 0x6D7E, 0x1AA0, 0x6E21, 0x6E7E, 0x1AFE, - 0x6F21, 0x6F7E, 0x1B5C, 0x7021, 0x707E, 0x1BBA, 0x7121, 0x717E, 0x1C18, - 0x7221, 0x727E, 0x1C76, 0x7321, 0x737E, 0x1CD4, 0x7421, 0x7424, 0x1D32, - 0x7425, 0x7426, 0x205C, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp deleted file mode 100644 index 4b11e5eb17..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_H_4[4 * 3] = { - 0x0020, 0x005B, 0x00E7, 0x005C, 0x005C, 0x220F, - 0x005D, 0x007E, 0x0124, 0x00A5, 0x00A5, 0x0123, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp deleted file mode 100644 index 30e2858ac4..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_V_4[199 * 3] = { - 0x0020, 0x005B, 0x00E7, 0x005C, 0x005C, 0x220F, 0x005D, 0x007E, 0x0124, - 0x00A5, 0x00A5, 0x0123, 0x00B0, 0x00B0, 0x204D, 0x2010, 0x2010, 0x1ED5, - 0x2015, 0x2015, 0x1ED4, 0x2016, 0x2016, 0x1ED7, 0x2018, 0x2019, 0x2059, - 0x201C, 0x201D, 0x2057, 0x2025, 0x2025, 0x1EDA, 0x2026, 0x2026, 0x1ED9, - 0x2032, 0x2032, 0x2051, 0x2033, 0x2033, 0x205B, 0x2190, 0x2190, 0x02E2, - 0x2191, 0x2191, 0x02E0, 0x2192, 0x2192, 0x02E3, 0x2193, 0x2193, 0x02E1, - 0x2195, 0x2195, 0x2FB6, 0x21C4, 0x21C4, 0x2077, 0x21C5, 0x21C5, 0x2076, - 0x21C6, 0x21C6, 0x2078, 0x21E6, 0x21E6, 0x1F4C, 0x21E7, 0x21E7, 0x1F4E, - 0x21E8, 0x21E8, 0x1F4B, 0x21E9, 0x21E9, 0x1F4D, 0x2225, 0x2225, 0x1ED7, - 0x223C, 0x223C, 0x1ED6, 0x22EF, 0x22EF, 0x1ED9, 0x2500, 0x2501, 0x1D39, - 0x2502, 0x2503, 0x1D37, 0x2504, 0x2505, 0x1D3D, 0x2506, 0x2507, 0x1D3B, - 0x2508, 0x2509, 0x1D41, 0x250A, 0x250B, 0x1D3F, 0x250C, 0x250C, 0x1D47, - 0x250D, 0x250D, 0x1D49, 0x250E, 0x250E, 0x1D48, 0x250F, 0x250F, 0x1D4A, - 0x2510, 0x2510, 0x1D4F, 0x2511, 0x2511, 0x1D51, 0x2512, 0x2512, 0x1D50, - 0x2513, 0x2513, 0x1D52, 0x2514, 0x2514, 0x1D43, 0x2515, 0x2515, 0x1D45, - 0x2516, 0x2516, 0x1D44, 0x2517, 0x2517, 0x1D46, 0x2518, 0x2518, 0x1D4B, - 0x2519, 0x2519, 0x1D4D, 0x251A, 0x251A, 0x1D4C, 0x251B, 0x251B, 0x1D4E, - 0x251C, 0x251C, 0x1D63, 0x251D, 0x251D, 0x1D67, 0x251E, 0x251E, 0x1D65, - 0x251F, 0x251F, 0x1D64, 0x2520, 0x2520, 0x1D66, 0x2521, 0x2521, 0x1D69, - 0x2522, 0x2522, 0x1D68, 0x2523, 0x2524, 0x1D6A, 0x2525, 0x2525, 0x1D6F, - 0x2526, 0x2526, 0x1D6D, 0x2527, 0x2527, 0x1D6C, 0x2528, 0x2528, 0x1D6E, - 0x2529, 0x2529, 0x1D71, 0x252A, 0x252A, 0x1D70, 0x252B, 0x252B, 0x1D72, - 0x252C, 0x252C, 0x1D5B, 0x252D, 0x252F, 0x1D5D, 0x2530, 0x2530, 0x1D5C, - 0x2531, 0x2533, 0x1D60, 0x2534, 0x2534, 0x1D53, 0x2535, 0x2537, 0x1D55, - 0x2538, 0x2538, 0x1D54, 0x2539, 0x253B, 0x1D58, 0x253D, 0x253F, 0x1D77, - 0x2540, 0x2540, 0x1D75, 0x2541, 0x2541, 0x1D74, 0x2542, 0x2542, 0x1D76, - 0x2543, 0x2543, 0x1D7B, 0x2544, 0x2544, 0x1D7D, 0x2545, 0x2545, 0x1D7A, - 0x2546, 0x2546, 0x1D7C, 0x2547, 0x2547, 0x1D81, 0x2548, 0x2548, 0x1D80, - 0x2549, 0x254A, 0x1D7E, 0x261C, 0x261C, 0x201D, 0x261D, 0x261D, 0x201B, - 0x261E, 0x261E, 0x201E, 0x261F, 0x261F, 0x201C, 0x2702, 0x2702, 0x2F92, - 0x27A1, 0x27A1, 0x2011, 0x3001, 0x3002, 0x1ECF, 0x3008, 0x3011, 0x1EE3, - 0x3013, 0x3013, 0x204E, 0x3014, 0x3015, 0x1EDD, 0x301C, 0x301C, 0x1ED6, - 0x301D, 0x301D, 0x1F14, 0x301F, 0x301F, 0x1F15, 0x3041, 0x3041, 0x1EEE, - 0x3043, 0x3043, 0x1EEF, 0x3045, 0x3045, 0x1EF0, 0x3047, 0x3047, 0x1EF1, - 0x3049, 0x3049, 0x1EF2, 0x3063, 0x3063, 0x1EF3, 0x3083, 0x3083, 0x1EF4, - 0x3085, 0x3085, 0x1EF5, 0x3087, 0x3087, 0x1EF6, 0x308E, 0x308E, 0x1EF7, - 0x309B, 0x309B, 0x2050, 0x309C, 0x309C, 0x204F, 0x30A1, 0x30A1, 0x1EF8, - 0x30A3, 0x30A3, 0x1EF9, 0x30A5, 0x30A5, 0x1EFA, 0x30A7, 0x30A7, 0x1EFB, - 0x30A9, 0x30A9, 0x1EFC, 0x30C3, 0x30C3, 0x1EFD, 0x30E3, 0x30E3, 0x1EFE, - 0x30E5, 0x30E5, 0x1EFF, 0x30E7, 0x30E7, 0x1F00, 0x30EE, 0x30EE, 0x1F01, - 0x30F5, 0x30F6, 0x1F02, 0x30FC, 0x30FC, 0x1ED3, 0x3300, 0x3300, 0x209E, - 0x3301, 0x3302, 0x2EB6, 0x3303, 0x3303, 0x2092, 0x3304, 0x3304, 0x2EB8, - 0x3305, 0x3305, 0x208D, 0x3306, 0x3306, 0x2EB9, 0x3307, 0x3307, 0x2EBD, - 0x3308, 0x3308, 0x2EBB, 0x3309, 0x3309, 0x2EC0, 0x330A, 0x330A, 0x2EBE, - 0x330B, 0x330B, 0x2EC2, 0x330C, 0x330C, 0x2EC4, 0x330D, 0x330D, 0x1F0E, - 0x330E, 0x3313, 0x2EC5, 0x3314, 0x3314, 0x1F05, 0x3315, 0x3315, 0x2094, - 0x3316, 0x3316, 0x208A, 0x3317, 0x3317, 0x2ECC, 0x3318, 0x3318, 0x2093, - 0x3319, 0x3319, 0x2ECE, 0x331A, 0x331D, 0x2ED0, 0x331E, 0x331E, 0x20A1, - 0x331F, 0x3321, 0x2ED4, 0x3322, 0x3322, 0x2089, 0x3323, 0x3323, 0x209C, - 0x3324, 0x3324, 0x2ED7, 0x3325, 0x3325, 0x2ED9, 0x3326, 0x3326, 0x1F0F, - 0x3327, 0x3327, 0x1F09, 0x3328, 0x3329, 0x2EDC, 0x332A, 0x332A, 0x20A4, - 0x332B, 0x332B, 0x1F11, 0x332D, 0x332D, 0x2EDF, 0x332E, 0x3330, 0x2EE2, - 0x3331, 0x3331, 0x20A6, 0x3332, 0x3332, 0x2EE5, 0x3333, 0x3333, 0x208E, - 0x3334, 0x3335, 0x2EE8, 0x3336, 0x3336, 0x1F0B, 0x3337, 0x3337, 0x2EEE, - 0x3338, 0x3338, 0x2EF0, 0x3339, 0x3339, 0x2097, 0x333A, 0x333A, 0x2EF1, - 0x333B, 0x333B, 0x209D, 0x333C, 0x333C, 0x2EEA, 0x333D, 0x333D, 0x2EF2, - 0x333E, 0x3340, 0x2EF4, 0x3341, 0x3341, 0x2EF3, 0x3342, 0x3342, 0x209B, - 0x3343, 0x3346, 0x2EF7, 0x3347, 0x3347, 0x20A5, 0x3348, 0x3348, 0x2EFB, - 0x3349, 0x3349, 0x1F04, 0x334A, 0x334A, 0x1F12, 0x334B, 0x334C, 0x2EFC, - 0x334D, 0x334D, 0x1F07, 0x334E, 0x334E, 0x2091, 0x334F, 0x3350, 0x2EFE, - 0x3351, 0x3351, 0x1F0C, 0x3352, 0x3352, 0x2F02, 0x3353, 0x3353, 0x2F06, - 0x3354, 0x3354, 0x2F03, 0x3355, 0x3356, 0x2F07, 0x3357, 0x3357, 0x2098, - 0x337F, 0x337F, 0x2084, 0xFF08, 0xFF09, 0x1EDB, 0xFF0C, 0xFF0C, 0x204C, - 0xFF0E, 0xFF0E, 0x2052, 0xFF1D, 0xFF1D, 0x1EED, 0xFF3B, 0xFF3B, 0x1EDF, - 0xFF3D, 0xFF3D, 0x1EE0, 0xFF3F, 0xFF3F, 0x1ED2, 0xFF5B, 0xFF5B, 0x1EE1, - 0xFF5C, 0xFF5C, 0x1ED8, 0xFF5D, 0xFF5D, 0x1EE2, 0xFF5E, 0xFF5E, 0x1ED6, - 0xFFE3, 0xFFE3, 0x1ED1, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp deleted file mode 100644 index f6ae452b2a..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp +++ /dev/null @@ -1,2182 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_UniJIS_UCS2_H_4[9772 * 2] = { - 0x0020, 0x0001, 0x0021, 0x0002, 0x0022, 0x0003, 0x0023, 0x0004, 0x0024, - 0x0005, 0x0025, 0x0006, 0x0026, 0x0007, 0x0027, 0x0008, 0x0028, 0x0009, - 0x0029, 0x000A, 0x002A, 0x000B, 0x002B, 0x000C, 0x002C, 0x000D, 0x002D, - 0x000E, 0x002E, 0x000F, 0x002F, 0x0010, 0x0030, 0x0011, 0x0031, 0x0012, - 0x0032, 0x0013, 0x0033, 0x0014, 0x0034, 0x0015, 0x0035, 0x0016, 0x0036, - 0x0017, 0x0037, 0x0018, 0x0038, 0x0019, 0x0039, 0x001A, 0x003A, 0x001B, - 0x003B, 0x001C, 0x003C, 0x001D, 0x003D, 0x001E, 0x003E, 0x001F, 0x003F, - 0x0020, 0x0040, 0x0021, 0x0041, 0x0022, 0x0042, 0x0023, 0x0043, 0x0024, - 0x0044, 0x0025, 0x0045, 0x0026, 0x0046, 0x0027, 0x0047, 0x0028, 0x0048, - 0x0029, 0x0049, 0x002A, 0x004A, 0x002B, 0x004B, 0x002C, 0x004C, 0x002D, - 0x004D, 0x002E, 0x004E, 0x002F, 0x004F, 0x0030, 0x0050, 0x0031, 0x0051, - 0x0032, 0x0052, 0x0033, 0x0053, 0x0034, 0x0054, 0x0035, 0x0055, 0x0036, - 0x0056, 0x0037, 0x0057, 0x0038, 0x0058, 0x0039, 0x0059, 0x003A, 0x005A, - 0x003B, 0x005B, 0x003C, 0x005C, 0x0061, 0x005D, 0x003E, 0x005E, 0x003F, - 0x005F, 0x0040, 0x0060, 0x0041, 0x0061, 0x0042, 0x0062, 0x0043, 0x0063, - 0x0044, 0x0064, 0x0045, 0x0065, 0x0046, 0x0066, 0x0047, 0x0067, 0x0048, - 0x0068, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B, 0x004C, 0x006C, - 0x004D, 0x006D, 0x004E, 0x006E, 0x004F, 0x006F, 0x0050, 0x0070, 0x0051, - 0x0071, 0x0052, 0x0072, 0x0053, 0x0073, 0x0054, 0x0074, 0x0055, 0x0075, - 0x0056, 0x0076, 0x0057, 0x0077, 0x0058, 0x0078, 0x0059, 0x0079, 0x005A, - 0x007A, 0x005B, 0x007B, 0x005C, 0x007C, 0x005D, 0x007D, 0x005E, 0x007E, - 0x005F, 0x00A1, 0x0065, 0x00A2, 0x0066, 0x00A3, 0x0067, 0x00A4, 0x006B, - 0x00A5, 0x003D, 0x00A6, 0x0063, 0x00A7, 0x02D0, 0x00A8, 0x0287, 0x00A9, - 0x0098, 0x00AA, 0x008C, 0x00AB, 0x006D, 0x00AC, 0x0099, 0x00AD, 0x0097, - 0x00AE, 0x009A, 0x00AF, 0x0081, 0x00B0, 0x02C3, 0x00B1, 0x02B6, 0x00B2, - 0x009D, 0x00B3, 0x009E, 0x00B4, 0x0285, 0x00B5, 0x009F, 0x00B6, 0x030A, - 0x00B7, 0x0075, 0x00B8, 0x0086, 0x00B9, 0x00A0, 0x00BA, 0x0090, 0x00BB, - 0x007B, 0x00BC, 0x00A1, 0x00BD, 0x00A2, 0x00BE, 0x00A3, 0x00BF, 0x007E, - 0x00C0, 0x00A4, 0x00C1, 0x00A5, 0x00C2, 0x00A6, 0x00C3, 0x00A7, 0x00C4, - 0x00A8, 0x00C5, 0x00A9, 0x00C6, 0x008B, 0x00C7, 0x00AA, 0x00C8, 0x00AB, - 0x00C9, 0x00AC, 0x00CA, 0x00AD, 0x00CB, 0x00AE, 0x00CC, 0x00AF, 0x00CD, - 0x00B0, 0x00CE, 0x00B1, 0x00CF, 0x00B2, 0x00D0, 0x00B3, 0x00D1, 0x00B4, - 0x00D2, 0x00B5, 0x00D3, 0x00B6, 0x00D4, 0x00B7, 0x00D5, 0x00B8, 0x00D6, - 0x00B9, 0x00D7, 0x02B7, 0x00D8, 0x008E, 0x00D9, 0x00BB, 0x00DA, 0x00BC, - 0x00DB, 0x00BD, 0x00DC, 0x00BE, 0x00DD, 0x00BF, 0x00DE, 0x00C0, 0x00DF, - 0x0096, 0x00E0, 0x00C1, 0x00E1, 0x00C2, 0x00E2, 0x00C3, 0x00E3, 0x00C4, - 0x00E4, 0x00C5, 0x00E5, 0x00C6, 0x00E6, 0x0091, 0x00E7, 0x00C7, 0x00E8, - 0x00C8, 0x00E9, 0x00C9, 0x00EA, 0x00CA, 0x00EB, 0x00CB, 0x00EC, 0x00CC, - 0x00ED, 0x00CD, 0x00EE, 0x00CE, 0x00EF, 0x00CF, 0x00F0, 0x00D0, 0x00F1, - 0x00D1, 0x00F2, 0x00D2, 0x00F3, 0x00D3, 0x00F4, 0x00D4, 0x00F5, 0x00D5, - 0x00F6, 0x00D6, 0x00F7, 0x02B8, 0x00F8, 0x0094, 0x00F9, 0x00D8, 0x00FA, - 0x00D9, 0x00FB, 0x00DA, 0x00FC, 0x00DB, 0x00FD, 0x00DC, 0x00FE, 0x00DD, - 0x00FF, 0x00DE, 0x0100, 0x2496, 0x0101, 0x2491, 0x0112, 0x2499, 0x0113, - 0x2494, 0x011A, 0x24B3, 0x011B, 0x24BF, 0x0127, 0x2F3C, 0x0128, 0x24B8, - 0x0129, 0x24C4, 0x012A, 0x2497, 0x012B, 0x2492, 0x0131, 0x0092, 0x0141, - 0x008D, 0x0142, 0x0093, 0x014B, 0x24DC, 0x014C, 0x249A, 0x014D, 0x2495, - 0x0152, 0x008F, 0x0153, 0x0095, 0x0160, 0x00DF, 0x0161, 0x00E3, 0x0168, - 0x24BD, 0x0169, 0x24C9, 0x016A, 0x2498, 0x016B, 0x2493, 0x016E, 0x24BC, - 0x016F, 0x24C8, 0x0178, 0x00E0, 0x017D, 0x00E1, 0x017E, 0x00E5, 0x01C0, - 0x0063, 0x01CD, 0x24B2, 0x01CE, 0x24BE, 0x01CF, 0x24B6, 0x01D0, 0x24C2, - 0x01D1, 0x24B9, 0x01D2, 0x24C5, 0x01D3, 0x24BB, 0x01D4, 0x24C7, 0x01FD, - 0x24CD, 0x0251, 0x24CA, 0x0254, 0x24CF, 0x0259, 0x24D2, 0x025A, 0x24D5, - 0x025B, 0x24D8, 0x0275, 0x24DD, 0x0283, 0x24E2, 0x028C, 0x24DE, 0x0292, - 0x24E1, 0x02D0, 0x24E3, 0x0300, 0x0041, 0x0301, 0x007F, 0x0302, 0x0080, - 0x0303, 0x005F, 0x0304, 0x0081, 0x0305, 0x00E2, 0x0306, 0x0082, 0x0307, - 0x0083, 0x0308, 0x0084, 0x030A, 0x0085, 0x030B, 0x0087, 0x030C, 0x0089, - 0x0327, 0x0086, 0x0328, 0x0088, 0x0332, 0x0040, 0x0336, 0x008A, 0x0361, - 0x02F6, 0x0391, 0x03F3, 0x0392, 0x03F4, 0x0393, 0x03F5, 0x0394, 0x03F6, - 0x0395, 0x03F7, 0x0396, 0x03F8, 0x0397, 0x03F9, 0x0398, 0x03FA, 0x0399, - 0x03FB, 0x039A, 0x03FC, 0x039B, 0x03FD, 0x039C, 0x03FE, 0x039D, 0x03FF, - 0x039E, 0x0400, 0x039F, 0x0401, 0x03A0, 0x0402, 0x03A1, 0x0403, 0x03A3, - 0x0404, 0x03A4, 0x0405, 0x03A5, 0x0406, 0x03A6, 0x0407, 0x03A7, 0x0408, - 0x03A8, 0x0409, 0x03A9, 0x040A, 0x03B1, 0x040B, 0x03B2, 0x040C, 0x03B3, - 0x040D, 0x03B4, 0x040E, 0x03B5, 0x040F, 0x03B6, 0x0410, 0x03B7, 0x0411, - 0x03B8, 0x0412, 0x03B9, 0x0413, 0x03BA, 0x0414, 0x03BB, 0x0415, 0x03BC, - 0x0416, 0x03BD, 0x0417, 0x03BE, 0x0418, 0x03BF, 0x0419, 0x03C0, 0x041A, - 0x03C1, 0x041B, 0x03C3, 0x041C, 0x03C4, 0x041D, 0x03C5, 0x041E, 0x03C6, - 0x041F, 0x03C7, 0x0420, 0x03C8, 0x0421, 0x03C9, 0x0422, 0x03D0, 0x2F3A, - 0x03D1, 0x2F40, 0x03DB, 0x2F3F, 0x0401, 0x0429, 0x0410, 0x0423, 0x0411, - 0x0424, 0x0412, 0x0425, 0x0413, 0x0426, 0x0414, 0x0427, 0x0415, 0x0428, - 0x0416, 0x042A, 0x0417, 0x042B, 0x0418, 0x042C, 0x0419, 0x042D, 0x041A, - 0x042E, 0x041B, 0x042F, 0x041C, 0x0430, 0x041D, 0x0431, 0x041E, 0x0432, - 0x041F, 0x0433, 0x0420, 0x0434, 0x0421, 0x0435, 0x0422, 0x0436, 0x0423, - 0x0437, 0x0424, 0x0438, 0x0425, 0x0439, 0x0426, 0x043A, 0x0427, 0x043B, - 0x0428, 0x043C, 0x0429, 0x043D, 0x042A, 0x043E, 0x042B, 0x043F, 0x042C, - 0x0440, 0x042D, 0x0441, 0x042E, 0x0442, 0x042F, 0x0443, 0x0430, 0x0444, - 0x0431, 0x0445, 0x0432, 0x0446, 0x0433, 0x0447, 0x0434, 0x0448, 0x0435, - 0x0449, 0x0436, 0x044B, 0x0437, 0x044C, 0x0438, 0x044D, 0x0439, 0x044E, - 0x043A, 0x044F, 0x043B, 0x0450, 0x043C, 0x0451, 0x043D, 0x0452, 0x043E, - 0x0453, 0x043F, 0x0454, 0x0440, 0x0455, 0x0441, 0x0456, 0x0442, 0x0457, - 0x0443, 0x0458, 0x0444, 0x0459, 0x0445, 0x045A, 0x0446, 0x045B, 0x0447, - 0x045C, 0x0448, 0x045D, 0x0449, 0x045E, 0x044A, 0x045F, 0x044B, 0x0460, - 0x044C, 0x0461, 0x044D, 0x0462, 0x044E, 0x0463, 0x044F, 0x0464, 0x0451, - 0x044A, 0x045B, 0x2F3C, 0x1EBC, 0x24B5, 0x1EBD, 0x24C1, 0x2002, 0x00E7, - 0x2003, 0x0279, 0x2010, 0x0296, 0x2011, 0x000E, 0x2012, 0x0072, 0x2013, - 0x0072, 0x2014, 0x008A, 0x2015, 0x0295, 0x2016, 0x029A, 0x2018, 0x029E, - 0x2019, 0x029F, 0x201A, 0x0078, 0x201C, 0x02A0, 0x201D, 0x02A1, 0x201E, - 0x0079, 0x2020, 0x0308, 0x2021, 0x0309, 0x2022, 0x0077, 0x2025, 0x029D, - 0x2026, 0x029C, 0x2030, 0x0304, 0x2032, 0x02C4, 0x2033, 0x02C5, 0x2039, - 0x006E, 0x203A, 0x006F, 0x203B, 0x02DE, 0x203C, 0x2F4F, 0x203E, 0x0145, - 0x2044, 0x0068, 0x2049, 0x2F50, 0x2070, 0x24A1, 0x2074, 0x24A2, 0x2075, - 0x24A3, 0x2076, 0x24A4, 0x2077, 0x24A5, 0x2078, 0x24A6, 0x2079, 0x24A7, - 0x2080, 0x24A8, 0x2081, 0x24A9, 0x2082, 0x24AA, 0x2083, 0x24AB, 0x2084, - 0x24AC, 0x2085, 0x24AD, 0x2086, 0x24AE, 0x2087, 0x24AF, 0x2088, 0x24B0, - 0x2089, 0x24B1, 0x20AC, 0x248A, 0x20DD, 0x030B, 0x2100, 0x2E4F, 0x2103, - 0x02C6, 0x2105, 0x2E53, 0x2109, 0x2071, 0x210A, 0x2070, 0x210F, 0x2F3C, - 0x2113, 0x1F59, 0x2116, 0x1DBA, 0x2121, 0x1F77, 0x2122, 0x00E4, 0x2126, - 0x248B, 0x212B, 0x0303, 0x2135, 0x2F39, 0x2153, 0x249F, 0x2154, 0x24A0, - 0x215B, 0x249B, 0x215C, 0x249C, 0x215D, 0x249D, 0x215E, 0x249E, 0x2160, - 0x1D97, 0x2161, 0x1D98, 0x2162, 0x1D99, 0x2163, 0x1D9A, 0x2164, 0x1D9B, - 0x2165, 0x1D9C, 0x2166, 0x1D9D, 0x2167, 0x1D9E, 0x2168, 0x1D9F, 0x2169, - 0x1DA0, 0x216A, 0x2021, 0x216B, 0x2022, 0x2170, 0x1F9C, 0x2171, 0x1F9D, - 0x2172, 0x1F9E, 0x2173, 0x1F9F, 0x2174, 0x1FA0, 0x2175, 0x1FA1, 0x2176, - 0x1FA2, 0x2177, 0x1FA3, 0x2178, 0x1FA4, 0x2179, 0x1FA5, 0x217A, 0x206A, - 0x217B, 0x206B, 0x217F, 0x206F, 0x2190, 0x02E1, 0x2191, 0x02E2, 0x2192, - 0x02E0, 0x2193, 0x02E3, 0x2194, 0x2FA9, 0x2195, 0x2FB7, 0x2196, 0x2FAC, - 0x2197, 0x2FAD, 0x2198, 0x2FAA, 0x2199, 0x2FAB, 0x21C4, 0x2076, 0x21C5, - 0x2077, 0x21C6, 0x2075, 0x21CC, 0x2FAE, 0x21D0, 0x2FA8, 0x21D2, 0x02F0, - 0x21D4, 0x02F1, 0x21E6, 0x1F4D, 0x21E7, 0x1F4C, 0x21E8, 0x1F4E, 0x21E9, - 0x1F4B, 0x2200, 0x02F2, 0x2202, 0x02F7, 0x2203, 0x02F3, 0x2205, 0x2F98, - 0x2207, 0x02F8, 0x2208, 0x02E5, 0x220A, 0x2F3B, 0x220B, 0x02E6, 0x2211, - 0x1DC9, 0x2212, 0x02B5, 0x2213, 0x2F56, 0x221A, 0x02FD, 0x221D, 0x02FF, - 0x221E, 0x02BF, 0x221F, 0x1DCD, 0x2220, 0x02F4, 0x2225, 0x029A, 0x2227, - 0x02ED, 0x2228, 0x02EE, 0x2229, 0x02EC, 0x222A, 0x02EB, 0x222B, 0x0301, - 0x222C, 0x0302, 0x222D, 0x2003, 0x222E, 0x1DC8, 0x2234, 0x02C0, 0x2235, - 0x0300, 0x223C, 0x0299, 0x223D, 0x02FE, 0x2243, 0x2F58, 0x2252, 0x02FA, - 0x2260, 0x02BA, 0x2261, 0x02F9, 0x2266, 0x02BD, 0x2267, 0x02BE, 0x226A, - 0x02FB, 0x226B, 0x02FC, 0x2272, 0x2F59, 0x2273, 0x2F5A, 0x2282, 0x02E9, - 0x2283, 0x02EA, 0x2286, 0x02E7, 0x2287, 0x02E8, 0x2295, 0x2F9C, 0x2296, - 0x2F9A, 0x2297, 0x2F9D, 0x2298, 0x2F9B, 0x229D, 0x2F9A, 0x229E, 0x2F9E, - 0x22A0, 0x2F99, 0x22A5, 0x02F5, 0x22BF, 0x1DCE, 0x22EE, 0x1ED9, 0x22EF, - 0x029C, 0x2300, 0x2F98, 0x2307, 0x2FBB, 0x2312, 0x02F6, 0x244A, 0x2F54, - 0x2460, 0x1D83, 0x2461, 0x1D84, 0x2462, 0x1D85, 0x2463, 0x1D86, 0x2464, - 0x1D87, 0x2465, 0x1D88, 0x2466, 0x1D89, 0x2467, 0x1D8A, 0x2468, 0x1D8B, - 0x2469, 0x1D8C, 0x246A, 0x1D8D, 0x246B, 0x1D8E, 0x246C, 0x1D8F, 0x246D, - 0x1D90, 0x246E, 0x1D91, 0x246F, 0x1D92, 0x2470, 0x1D93, 0x2471, 0x1D94, - 0x2472, 0x1D95, 0x2473, 0x1D96, 0x2474, 0x1F87, 0x2475, 0x1F88, 0x2476, - 0x1F89, 0x2477, 0x1F8A, 0x2478, 0x1F8B, 0x2479, 0x1F8C, 0x247A, 0x1F8D, - 0x247B, 0x1F8E, 0x247C, 0x1F8F, 0x247D, 0x1F90, 0x247E, 0x1F91, 0x247F, - 0x1F92, 0x2480, 0x1F93, 0x2481, 0x1F94, 0x2482, 0x1F95, 0x2483, 0x1F96, - 0x2484, 0x1F97, 0x2485, 0x1F98, 0x2486, 0x1F99, 0x2487, 0x1F9A, 0x2488, - 0x1F7E, 0x2489, 0x1F7F, 0x248A, 0x1F80, 0x248B, 0x1F81, 0x248C, 0x1F82, - 0x248D, 0x1F83, 0x248E, 0x1F84, 0x248F, 0x1F85, 0x2490, 0x1F86, 0x249C, - 0x1FB0, 0x249D, 0x1FB1, 0x249E, 0x1FB2, 0x249F, 0x1FB3, 0x24A0, 0x1FB4, - 0x24A1, 0x1FB5, 0x24A2, 0x1FB6, 0x24A3, 0x1FB7, 0x24A4, 0x1FB8, 0x24A5, - 0x1FB9, 0x24A6, 0x1FBA, 0x24A7, 0x1FBB, 0x24A8, 0x1FBC, 0x24A9, 0x1FBD, - 0x24AA, 0x1FBE, 0x24AB, 0x1FBF, 0x24AC, 0x1FC0, 0x24AD, 0x1FC1, 0x24AE, - 0x1FC2, 0x24AF, 0x1FC3, 0x24B0, 0x1FC4, 0x24B1, 0x1FC5, 0x24B2, 0x1FC6, - 0x24B3, 0x1FC7, 0x24B4, 0x1FC8, 0x24B5, 0x1FC9, 0x24B6, 0x2863, 0x24B7, - 0x2864, 0x24B8, 0x2865, 0x24B9, 0x2866, 0x24BA, 0x2867, 0x24BB, 0x2868, - 0x24BC, 0x2869, 0x24BD, 0x286A, 0x24BE, 0x286B, 0x24BF, 0x286C, 0x24C0, - 0x286D, 0x24C1, 0x286E, 0x24C2, 0x286F, 0x24C3, 0x2870, 0x24C4, 0x2871, - 0x24C5, 0x2872, 0x24C6, 0x2873, 0x24C7, 0x2874, 0x24C8, 0x2875, 0x24C9, - 0x2876, 0x24CA, 0x2877, 0x24CB, 0x2878, 0x24CC, 0x2879, 0x24CD, 0x287A, - 0x24CE, 0x287B, 0x24CF, 0x287C, 0x24D0, 0x2849, 0x24D1, 0x284A, 0x24D2, - 0x284B, 0x24D3, 0x284C, 0x24D4, 0x284D, 0x24D5, 0x284E, 0x24D6, 0x284F, - 0x24D7, 0x2850, 0x24D8, 0x2851, 0x24D9, 0x2852, 0x24DA, 0x2853, 0x24DB, - 0x2854, 0x24DC, 0x2855, 0x24DD, 0x2856, 0x24DE, 0x2857, 0x24DF, 0x2858, - 0x24E0, 0x2859, 0x24E1, 0x285A, 0x24E2, 0x285B, 0x24E3, 0x285C, 0x24E4, - 0x285D, 0x24E5, 0x285E, 0x24E6, 0x285F, 0x24E7, 0x2860, 0x24E8, 0x2861, - 0x24E9, 0x2862, 0x24EA, 0x2020, 0x2500, 0x1D37, 0x2501, 0x1D38, 0x2502, - 0x1D39, 0x2503, 0x1D3A, 0x2504, 0x1D3B, 0x2505, 0x1D3C, 0x2506, 0x1D3D, - 0x2507, 0x1D3E, 0x2508, 0x1D3F, 0x2509, 0x1D40, 0x250A, 0x1D41, 0x250B, - 0x1D42, 0x250C, 0x1D43, 0x250D, 0x1D44, 0x250E, 0x1D45, 0x250F, 0x1D46, - 0x2510, 0x1D47, 0x2511, 0x1D48, 0x2512, 0x1D49, 0x2513, 0x1D4A, 0x2514, - 0x1D4B, 0x2515, 0x1D4C, 0x2516, 0x1D4D, 0x2517, 0x1D4E, 0x2518, 0x1D4F, - 0x2519, 0x1D50, 0x251A, 0x1D51, 0x251B, 0x1D52, 0x251C, 0x1D53, 0x251D, - 0x1D54, 0x251E, 0x1D55, 0x251F, 0x1D56, 0x2520, 0x1D57, 0x2521, 0x1D58, - 0x2522, 0x1D59, 0x2523, 0x1D5A, 0x2524, 0x1D5B, 0x2525, 0x1D5C, 0x2526, - 0x1D5D, 0x2527, 0x1D5E, 0x2528, 0x1D5F, 0x2529, 0x1D60, 0x252A, 0x1D61, - 0x252B, 0x1D62, 0x252C, 0x1D63, 0x252D, 0x1D64, 0x252E, 0x1D65, 0x252F, - 0x1D66, 0x2530, 0x1D67, 0x2531, 0x1D68, 0x2532, 0x1D69, 0x2533, 0x1D6A, - 0x2534, 0x1D6B, 0x2535, 0x1D6C, 0x2536, 0x1D6D, 0x2537, 0x1D6E, 0x2538, - 0x1D6F, 0x2539, 0x1D70, 0x253A, 0x1D71, 0x253B, 0x1D72, 0x253C, 0x1D73, - 0x253D, 0x1D74, 0x253E, 0x1D75, 0x253F, 0x1D76, 0x2540, 0x1D77, 0x2541, - 0x1D78, 0x2542, 0x1D79, 0x2543, 0x1D7A, 0x2544, 0x1D7B, 0x2545, 0x1D7C, - 0x2546, 0x1D7D, 0x2547, 0x1D7E, 0x2548, 0x1D7F, 0x2549, 0x1D80, 0x254A, - 0x1D81, 0x254B, 0x1D82, 0x2550, 0x203B, 0x255E, 0x203C, 0x2561, 0x203E, - 0x256A, 0x203D, 0x256D, 0x2037, 0x256E, 0x2038, 0x256F, 0x203A, 0x2570, - 0x2039, 0x2571, 0x2045, 0x2572, 0x2046, 0x2573, 0x2047, 0x2581, 0x2026, - 0x2582, 0x2027, 0x2583, 0x2028, 0x2584, 0x2029, 0x2585, 0x202A, 0x2586, - 0x202B, 0x2587, 0x202C, 0x2588, 0x202D, 0x2589, 0x2034, 0x258A, 0x2033, - 0x258B, 0x2032, 0x258C, 0x2031, 0x258D, 0x2030, 0x258E, 0x202F, 0x258F, - 0x202E, 0x2594, 0x2035, 0x2595, 0x2036, 0x25A0, 0x02D9, 0x25A1, 0x02D8, - 0x25A2, 0x1F4F, 0x25AA, 0x2FCF, 0x25AB, 0x2FCD, 0x25B2, 0x02DB, 0x25B3, - 0x02DA, 0x25B6, 0x2FA3, 0x25B7, 0x1F4A, 0x25BC, 0x02DD, 0x25BD, 0x02DC, - 0x25C0, 0x2FA2, 0x25C1, 0x1F49, 0x25C6, 0x02D7, 0x25C7, 0x02D6, 0x25C9, - 0x2012, 0x25CB, 0x02D3, 0x25CC, 0x2906, 0x25CE, 0x02D5, 0x25CF, 0x02D4, - 0x25E2, 0x203F, 0x25E3, 0x2040, 0x25E4, 0x2042, 0x25E5, 0x2041, 0x25E6, - 0x2FDE, 0x25EF, 0x030B, 0x2600, 0x2017, 0x2601, 0x2018, 0x2602, 0x2019, - 0x2603, 0x201A, 0x2605, 0x02D2, 0x2606, 0x02D1, 0x260E, 0x1F78, 0x2612, - 0x2F99, 0x261C, 0x201C, 0x261D, 0x201D, 0x261E, 0x201B, 0x261F, 0x201E, - 0x2640, 0x02C2, 0x2642, 0x02C1, 0x2660, 0x2013, 0x2661, 0x1F51, 0x2662, - 0x1F53, 0x2663, 0x2015, 0x2664, 0x1F52, 0x2665, 0x2014, 0x2666, 0x2016, - 0x2667, 0x1F50, 0x2668, 0x2F42, 0x2669, 0x2F43, 0x266A, 0x0307, 0x266C, - 0x2F44, 0x266D, 0x0306, 0x266F, 0x0305, 0x2702, 0x2F90, 0x271A, 0x2FD1, - 0x2756, 0x2FE3, 0x2776, 0x205E, 0x2777, 0x205F, 0x2778, 0x2060, 0x2779, - 0x2061, 0x277A, 0x2062, 0x277B, 0x2063, 0x277C, 0x2064, 0x277D, 0x2065, - 0x277E, 0x2066, 0x27A1, 0x200E, 0x2E83, 0x37E1, 0x2E85, 0x3620, 0x2E87, - 0x3719, 0x2E89, 0x3814, 0x2E8B, 0x371E, 0x2E8C, 0x3609, 0x2E8D, 0x360A, - 0x2E8E, 0x1071, 0x2E8F, 0x388C, 0x2E90, 0x1226, 0x2E92, 0x0EB2, 0x2E93, - 0x1283, 0x2E94, 0x12AB, 0x2E95, 0x3C1F, 0x2E96, 0x38C2, 0x2E97, 0x361C, - 0x2E98, 0x38E1, 0x2E99, 0x13C3, 0x2E9B, 0x13E1, 0x2E9F, 0x0E3C, 0x2EA0, - 0x0EBD, 0x2EA1, 0x3961, 0x2EA2, 0x3962, 0x2EA3, 0x399D, 0x2EA4, 0x3C26, - 0x2EA6, 0x374D, 0x2EA8, 0x39BC, 0x2EA9, 0x35A1, 0x2EAA, 0x36AB, 0x2EAB, - 0x3A97, 0x2EAC, 0x08D4, 0x2EAD, 0x3A39, 0x2EAE, 0x3662, 0x2EB1, 0x3A98, - 0x2EB2, 0x3A97, 0x2EB3, 0x376D, 0x2EB7, 0x36FE, 0x2EB9, 0x3713, 0x2EBC, - 0x35B3, 0x2EBD, 0x354E, 0x2EBE, 0x3775, 0x2EBF, 0x3776, 0x2EC0, 0x3777, - 0x2EC1, 0x078B, 0x2EC2, 0x3B0A, 0x2EC3, 0x362E, 0x2EC4, 0x0A62, 0x2EC6, - 0x3572, 0x2ECA, 0x364A, 0x2ECC, 0x3C2B, 0x2ECD, 0x3B50, 0x2ECF, 0x3B9E, - 0x2ED1, 0x0BD5, 0x2ED2, 0x3B97, 0x2ED6, 0x3B9E, 0x2ED7, 0x354D, 0x2ED8, - 0x0A68, 0x2EDD, 0x3617, 0x2EDE, 0x3619, 0x2EDF, 0x3618, 0x2EE4, 0x064E, - 0x2EE8, 0x0D34, 0x2EE9, 0x052B, 0x2EEB, 0x0A6A, 0x2EED, 0x08C3, 0x2EEF, - 0x0F7D, 0x2EF2, 0x064F, 0x2F00, 0x04B0, 0x2F01, 0x20B3, 0x2F02, 0x0FFF, - 0x2F03, 0x1001, 0x2F04, 0x0535, 0x2F05, 0x1006, 0x2F06, 0x0CCB, 0x2F07, - 0x100E, 0x2F08, 0x0A13, 0x2F09, 0x1070, 0x2F0A, 0x0CD6, 0x2F0B, 0x0D40, - 0x2F0C, 0x107B, 0x2F0D, 0x1083, 0x2F0E, 0x1089, 0x2F0F, 0x1093, 0x2F10, - 0x1098, 0x2F11, 0x0C5B, 0x2F12, 0x0F97, 0x2F13, 0x10C6, 0x2F14, 0x10CD, - 0x2F15, 0x10CE, 0x2F16, 0x10D3, 0x2F17, 0x0947, 0x2F18, 0x0E7C, 0x2F19, - 0x10DC, 0x2F1A, 0x10E1, 0x2F1B, 0x10E8, 0x2F1C, 0x0EA2, 0x2F1D, 0x07B1, - 0x2F1E, 0x116B, 0x2F1F, 0x0C54, 0x2F20, 0x089C, 0x2F21, 0x11BA, 0x2F22, - 0x11BB, 0x2F23, 0x0F26, 0x2F24, 0x0B47, 0x2F25, 0x0981, 0x2F26, 0x08A0, - 0x2F27, 0x120E, 0x2F28, 0x0A47, 0x2F29, 0x0996, 0x2F2A, 0x1226, 0x2F2B, - 0x1228, 0x2F2C, 0x1232, 0x2F2D, 0x0881, 0x2F2E, 0x126C, 0x2F2F, 0x07BB, - 0x2F30, 0x077E, 0x2F31, 0x06CA, 0x2F32, 0x05EF, 0x2F33, 0x1283, 0x2F34, - 0x1285, 0x2F35, 0x1299, 0x2F36, 0x129B, 0x2F37, 0x12A0, 0x2F38, 0x0677, - 0x2F39, 0x38B9, 0x2F3A, 0x12AF, 0x2F3B, 0x12B1, 0x2F3C, 0x09FA, 0x2F3D, - 0x1342, 0x2F3E, 0x0781, 0x2F3F, 0x0916, 0x2F40, 0x08A7, 0x2F41, 0x13C2, - 0x2F42, 0x0E08, 0x2F43, 0x0C47, 0x2F44, 0x06CC, 0x2F45, 0x0E4D, 0x2F46, - 0x13E0, 0x2F47, 0x0CD4, 0x2F48, 0x140C, 0x2F49, 0x0744, 0x2F4A, 0x0EE6, - 0x2F4B, 0x073D, 0x2F4C, 0x08AD, 0x2F4D, 0x14E5, 0x2F4E, 0x14F4, 0x2F4F, - 0x14F8, 0x2F50, 0x0D7A, 0x2F51, 0x0EDF, 0x2F52, 0x08AF, 0x2F53, 0x1502, - 0x2F54, 0x0A2B, 0x2F55, 0x0550, 0x2F56, 0x0BFA, 0x2F57, 0x0DD5, 0x2F58, - 0x15E4, 0x2F59, 0x15E6, 0x2F5A, 0x0E22, 0x2F5B, 0x0567, 0x2F5C, 0x0687, - 0x2F5D, 0x0758, 0x2F5E, 0x0770, 0x2F5F, 0x06C4, 0x2F60, 0x04DD, 0x2F61, - 0x05E0, 0x2F62, 0x0601, 0x2F63, 0x0A5C, 0x2F64, 0x0F3B, 0x2F65, 0x0C3E, - 0x2F66, 0x0D97, 0x2F67, 0x3A00, 0x2F68, 0x1697, 0x2F69, 0x0D28, 0x2F6A, - 0x0D7D, 0x2F6B, 0x087C, 0x2F6C, 0x0EE8, 0x2F6D, 0x0EC3, 0x2F6E, 0x0EFC, - 0x2F6F, 0x0A74, 0x2F70, 0x08D4, 0x2F71, 0x3A41, 0x2F72, 0x0553, 0x2F73, - 0x0740, 0x2F74, 0x0F71, 0x2F75, 0x0B9B, 0x2F76, 0x0E16, 0x2F77, 0x08B3, - 0x2F78, 0x0608, 0x2F79, 0x1813, 0x2F7A, 0x0F3D, 0x2F7B, 0x04CB, 0x2F7C, - 0x0FDD, 0x2F7D, 0x08D5, 0x2F7E, 0x183D, 0x2F7F, 0x08D6, 0x2F80, 0x1853, - 0x2F81, 0x0CD1, 0x2F82, 0x0A09, 0x2F83, 0x08D7, 0x2F84, 0x08B8, 0x2F85, - 0x04D3, 0x2F86, 0x0A89, 0x2F87, 0x0AA6, 0x2F88, 0x0938, 0x2F89, 0x0821, - 0x2F8A, 0x09ED, 0x2F8B, 0x18B2, 0x2F8C, 0x194F, 0x2F8D, 0x0BAC, 0x2F8E, - 0x0742, 0x2F8F, 0x07E6, 0x2F90, 0x04A5, 0x2F91, 0x19EB, 0x2F92, 0x075F, - 0x2F93, 0x05AF, 0x2F94, 0x0774, 0x2F95, 0x0B69, 0x2F96, 0x0C7E, 0x2F97, - 0x1A56, 0x2F98, 0x1A59, 0x2F99, 0x058B, 0x2F9A, 0x0A7A, 0x2F9B, 0x0AF8, - 0x2F9C, 0x0B0D, 0x2F9D, 0x0A0E, 0x2F9E, 0x0902, 0x2F9F, 0x0A0F, 0x2FA0, - 0x0B62, 0x2FA1, 0x3B4F, 0x2FA2, 0x0F22, 0x2FA3, 0x0CAB, 0x2FA4, 0x0D64, - 0x2FA5, 0x0F6C, 0x2FA6, 0x06DA, 0x2FA7, 0x0BD5, 0x2FA8, 0x0EF3, 0x2FA9, - 0x0DDE, 0x2FAA, 0x1BC9, 0x2FAB, 0x1BCB, 0x2FAC, 0x04CD, 0x2FAD, 0x21F7, - 0x2FAE, 0x0D87, 0x2FAF, 0x0ED8, 0x2FB0, 0x05B5, 0x2FB1, 0x1C03, 0x2FB2, - 0x1C05, 0x2FB3, 0x053B, 0x2FB4, 0x0E17, 0x2FB5, 0x0DE9, 0x2FB6, 0x0D88, - 0x2FB7, 0x09EF, 0x2FB8, 0x091F, 0x2FB9, 0x07F3, 0x2FBA, 0x0D05, 0x2FBB, - 0x080E, 0x2FBC, 0x07F4, 0x2FBD, 0x1C6C, 0x2FBE, 0x1C7D, 0x2FBF, 0x1C83, - 0x2FC0, 0x1C84, 0x2FC1, 0x064E, 0x2FC2, 0x0695, 0x2FC3, 0x0BD7, 0x2FC4, - 0x1CF6, 0x2FC5, 0x08DB, 0x2FC6, 0x1D01, 0x2FC7, 0x0E91, 0x2FC8, 0x340B, - 0x2FC9, 0x066A, 0x2FCA, 0x0807, 0x2FCB, 0x1D16, 0x2FCC, 0x1D19, 0x2FCD, - 0x0C1E, 0x2FCE, 0x0791, 0x2FCF, 0x0ACF, 0x2FD0, 0x0D93, 0x2FD1, 0x1D21, - 0x2FD2, 0x1D22, 0x2FD3, 0x0F7E, 0x2FD4, 0x1D30, 0x2FD5, 0x1D31, 0x3000, - 0x0279, 0x3001, 0x027A, 0x3002, 0x027B, 0x3003, 0x028F, 0x3004, 0x2074, - 0x3005, 0x0291, 0x3006, 0x0292, 0x3007, 0x0293, 0x3008, 0x02AA, 0x3009, - 0x02AB, 0x300A, 0x02AC, 0x300B, 0x02AD, 0x300C, 0x02AE, 0x300D, 0x02AF, - 0x300E, 0x02B0, 0x300F, 0x02B1, 0x3010, 0x02B2, 0x3011, 0x02B3, 0x3012, - 0x02DF, 0x3013, 0x02E4, 0x3014, 0x02A4, 0x3015, 0x02A5, 0x301C, 0x0299, - 0x301D, 0x1DB8, 0x301F, 0x1DB9, 0x3020, 0x1F7A, 0x3030, 0x2FBA, 0x3033, - 0x2F4C, 0x3034, 0x2F4D, 0x3035, 0x2F4E, 0x3036, 0x1F79, 0x3041, 0x034A, - 0x3042, 0x034B, 0x3043, 0x034C, 0x3044, 0x034D, 0x3045, 0x034E, 0x3046, - 0x034F, 0x3047, 0x0350, 0x3048, 0x0351, 0x3049, 0x0352, 0x304A, 0x0353, - 0x304B, 0x0354, 0x304C, 0x0355, 0x304D, 0x0356, 0x304E, 0x0357, 0x304F, - 0x0358, 0x3050, 0x0359, 0x3051, 0x035A, 0x3052, 0x035B, 0x3053, 0x035C, - 0x3054, 0x035D, 0x3055, 0x035E, 0x3056, 0x035F, 0x3057, 0x0360, 0x3058, - 0x0361, 0x3059, 0x0362, 0x305A, 0x0363, 0x305B, 0x0364, 0x305C, 0x0365, - 0x305D, 0x0366, 0x305E, 0x0367, 0x305F, 0x0368, 0x3060, 0x0369, 0x3061, - 0x036A, 0x3062, 0x036B, 0x3063, 0x036C, 0x3064, 0x036D, 0x3065, 0x036E, - 0x3066, 0x036F, 0x3067, 0x0370, 0x3068, 0x0371, 0x3069, 0x0372, 0x306A, - 0x0373, 0x306B, 0x0374, 0x306C, 0x0375, 0x306D, 0x0376, 0x306E, 0x0377, - 0x306F, 0x0378, 0x3070, 0x0379, 0x3071, 0x037A, 0x3072, 0x037B, 0x3073, - 0x037C, 0x3074, 0x037D, 0x3075, 0x037E, 0x3076, 0x037F, 0x3077, 0x0380, - 0x3078, 0x0381, 0x3079, 0x0382, 0x307A, 0x0383, 0x307B, 0x0384, 0x307C, - 0x0385, 0x307D, 0x0386, 0x307E, 0x0387, 0x307F, 0x0388, 0x3080, 0x0389, - 0x3081, 0x038A, 0x3082, 0x038B, 0x3083, 0x038C, 0x3084, 0x038D, 0x3085, - 0x038E, 0x3086, 0x038F, 0x3087, 0x0390, 0x3088, 0x0391, 0x3089, 0x0392, - 0x308A, 0x0393, 0x308B, 0x0394, 0x308C, 0x0395, 0x308D, 0x0396, 0x308E, - 0x0397, 0x308F, 0x0398, 0x3090, 0x0399, 0x3091, 0x039A, 0x3092, 0x039B, - 0x3093, 0x039C, 0x3094, 0x1F16, 0x309B, 0x0283, 0x309C, 0x0284, 0x309D, - 0x028D, 0x309E, 0x028E, 0x30A1, 0x039D, 0x30A2, 0x039E, 0x30A3, 0x039F, - 0x30A4, 0x03A0, 0x30A5, 0x03A1, 0x30A6, 0x03A2, 0x30A7, 0x03A3, 0x30A8, - 0x03A4, 0x30A9, 0x03A5, 0x30AA, 0x03A6, 0x30AB, 0x03A7, 0x30AC, 0x03A8, - 0x30AD, 0x03A9, 0x30AE, 0x03AA, 0x30AF, 0x03AB, 0x30B0, 0x03AC, 0x30B1, - 0x03AD, 0x30B2, 0x03AE, 0x30B3, 0x03AF, 0x30B4, 0x03B0, 0x30B5, 0x03B1, - 0x30B6, 0x03B2, 0x30B7, 0x03B3, 0x30B8, 0x03B4, 0x30B9, 0x03B5, 0x30BA, - 0x03B6, 0x30BB, 0x03B7, 0x30BC, 0x03B8, 0x30BD, 0x03B9, 0x30BE, 0x03BA, - 0x30BF, 0x03BB, 0x30C0, 0x03BC, 0x30C1, 0x03BD, 0x30C2, 0x03BE, 0x30C3, - 0x03BF, 0x30C4, 0x03C0, 0x30C5, 0x03C1, 0x30C6, 0x03C2, 0x30C7, 0x03C3, - 0x30C8, 0x03C4, 0x30C9, 0x03C5, 0x30CA, 0x03C6, 0x30CB, 0x03C7, 0x30CC, - 0x03C8, 0x30CD, 0x03C9, 0x30CE, 0x03CA, 0x30CF, 0x03CB, 0x30D0, 0x03CC, - 0x30D1, 0x03CD, 0x30D2, 0x03CE, 0x30D3, 0x03CF, 0x30D4, 0x03D0, 0x30D5, - 0x03D1, 0x30D6, 0x03D2, 0x30D7, 0x03D3, 0x30D8, 0x03D4, 0x30D9, 0x03D5, - 0x30DA, 0x03D6, 0x30DB, 0x03D7, 0x30DC, 0x03D8, 0x30DD, 0x03D9, 0x30DE, - 0x03DA, 0x30DF, 0x03DB, 0x30E0, 0x03DC, 0x30E1, 0x03DD, 0x30E2, 0x03DE, - 0x30E3, 0x03DF, 0x30E4, 0x03E0, 0x30E5, 0x03E1, 0x30E6, 0x03E2, 0x30E7, - 0x03E3, 0x30E8, 0x03E4, 0x30E9, 0x03E5, 0x30EA, 0x03E6, 0x30EB, 0x03E7, - 0x30EC, 0x03E8, 0x30ED, 0x03E9, 0x30EE, 0x03EA, 0x30EF, 0x03EB, 0x30F0, - 0x03EC, 0x30F1, 0x03ED, 0x30F2, 0x03EE, 0x30F3, 0x03EF, 0x30F4, 0x03F0, - 0x30F5, 0x03F1, 0x30F6, 0x03F2, 0x30F7, 0x2079, 0x30F8, 0x207A, 0x30F9, - 0x207B, 0x30FA, 0x207C, 0x30FB, 0x027E, 0x30FC, 0x0294, 0x30FD, 0x028B, - 0x30FE, 0x028C, 0x3220, 0x278E, 0x3221, 0x278F, 0x3222, 0x2790, 0x3223, - 0x2791, 0x3224, 0x2792, 0x3225, 0x2793, 0x3226, 0x2794, 0x3227, 0x2795, - 0x3228, 0x2796, 0x3229, 0x2797, 0x322A, 0x2006, 0x322B, 0x2007, 0x322C, - 0x2008, 0x322D, 0x2009, 0x322E, 0x200A, 0x322F, 0x200B, 0x3230, 0x2005, - 0x3231, 0x1DC2, 0x3232, 0x1DC3, 0x3233, 0x1FCF, 0x3234, 0x1FCD, 0x3235, - 0x1FD4, 0x3236, 0x1FD3, 0x3237, 0x200C, 0x3238, 0x1FCE, 0x3239, 0x1DC4, - 0x323A, 0x1FD7, 0x323B, 0x1FD5, 0x323C, 0x1FD0, 0x323D, 0x1FCB, 0x323E, - 0x1FD2, 0x323F, 0x1FCC, 0x3240, 0x1FD6, 0x3241, 0x200D, 0x3242, 0x1FD1, - 0x3243, 0x1FCA, 0x3280, 0x28DD, 0x3281, 0x28DE, 0x3282, 0x28DF, 0x3283, - 0x28E0, 0x3284, 0x28E1, 0x3285, 0x28E2, 0x3286, 0x28E3, 0x3287, 0x28E4, - 0x3288, 0x28E5, 0x3289, 0x28E6, 0x328A, 0x28E8, 0x328B, 0x28E9, 0x328C, - 0x28EA, 0x328D, 0x28EB, 0x328E, 0x28EC, 0x328F, 0x28ED, 0x3290, 0x28E7, - 0x3291, 0x1FE1, 0x3292, 0x1FE0, 0x3293, 0x1FE2, 0x3294, 0x1FDC, 0x3295, - 0x28FF, 0x3296, 0x1FE5, 0x3297, 0x28FC, 0x3298, 0x1FDE, 0x3299, 0x201F, - 0x329A, 0x28F9, 0x329B, 0x28F8, 0x329C, 0x28FE, 0x329D, 0x207F, 0x329E, - 0x1FFF, 0x329F, 0x28EF, 0x32A0, 0x28F6, 0x32A1, 0x28F7, 0x32A2, 0x28FB, - 0x32A3, 0x28FA, 0x32A4, 0x1DBD, 0x32A5, 0x1DBE, 0x32A6, 0x1DBF, 0x32A7, - 0x1DC0, 0x32A8, 0x1DC1, 0x32A9, 0x1FDA, 0x32AA, 0x1FDD, 0x32AB, 0x1FDF, - 0x32AC, 0x1FE3, 0x32AD, 0x1FD9, 0x32AE, 0x1FE4, 0x32AF, 0x1FDB, 0x32B0, - 0x1FD8, 0x32D0, 0x28AD, 0x32D1, 0x28AE, 0x32D2, 0x28AF, 0x32D3, 0x28B0, - 0x32D4, 0x28B1, 0x32D5, 0x28B2, 0x32D6, 0x28B3, 0x32D7, 0x28B4, 0x32D8, - 0x28B5, 0x32D9, 0x28B6, 0x32DA, 0x28B7, 0x32DB, 0x28B8, 0x32DC, 0x28B9, - 0x32DD, 0x28BA, 0x32DE, 0x28BB, 0x32DF, 0x28BC, 0x32E0, 0x28BD, 0x32E1, - 0x28BE, 0x32E2, 0x28BF, 0x32E3, 0x28C0, 0x32E4, 0x28C1, 0x32E5, 0x28C2, - 0x32E6, 0x28C3, 0x32E7, 0x28C4, 0x32E8, 0x28C5, 0x32E9, 0x28C6, 0x32EA, - 0x28C7, 0x32EB, 0x28C8, 0x32EC, 0x28C9, 0x32ED, 0x28CA, 0x32EE, 0x28CB, - 0x32EF, 0x28CC, 0x32F0, 0x28CD, 0x32F1, 0x28CE, 0x32F2, 0x28CF, 0x32F3, - 0x28D0, 0x32F4, 0x28D1, 0x32F5, 0x28D2, 0x32F6, 0x28D3, 0x32F7, 0x28D4, - 0x32F8, 0x28D5, 0x32F9, 0x28D6, 0x32FA, 0x28D7, 0x32FB, 0x28D8, 0x32FC, - 0x28D9, 0x32FD, 0x28DA, 0x32FE, 0x28DB, 0x3300, 0x1F70, 0x3301, 0x2E62, - 0x3302, 0x2E63, 0x3303, 0x1F6A, 0x3304, 0x2E64, 0x3305, 0x1FF7, 0x3306, - 0x2E65, 0x3307, 0x2E69, 0x3308, 0x2E67, 0x3309, 0x2E6C, 0x330A, 0x2E6A, - 0x330B, 0x2E6E, 0x330C, 0x2E70, 0x330D, 0x1DAB, 0x330E, 0x2E71, 0x330F, - 0x2E72, 0x3310, 0x2E73, 0x3311, 0x2E74, 0x3312, 0x2E75, 0x3313, 0x2E76, - 0x3314, 0x1DA2, 0x3315, 0x1F69, 0x3316, 0x1F67, 0x3317, 0x2E78, 0x3318, - 0x1F68, 0x3319, 0x2E7A, 0x331A, 0x2E7C, 0x331B, 0x2E7D, 0x331C, 0x2E7E, - 0x331D, 0x2E7F, 0x331E, 0x1F73, 0x331F, 0x2E80, 0x3320, 0x2E81, 0x3321, - 0x2E82, 0x3322, 0x1F66, 0x3323, 0x1F6B, 0x3324, 0x2E83, 0x3325, 0x2E85, - 0x3326, 0x1DAC, 0x3327, 0x1DA6, 0x3328, 0x2E88, 0x3329, 0x2E89, 0x332A, - 0x1F74, 0x332B, 0x1DAE, 0x332D, 0x2E8B, 0x332E, 0x2E8E, 0x332F, 0x2E8F, - 0x3330, 0x2E90, 0x3331, 0x1F71, 0x3332, 0x2E91, 0x3333, 0x2087, 0x3334, - 0x2E94, 0x3335, 0x2E95, 0x3336, 0x1DA8, 0x3337, 0x2E9A, 0x3338, 0x2E9C, - 0x3339, 0x1F6E, 0x333A, 0x2E9D, 0x333B, 0x1F6F, 0x333C, 0x2E96, 0x333D, - 0x2E9E, 0x333E, 0x2EA0, 0x333F, 0x2EA1, 0x3340, 0x2EA2, 0x3341, 0x2E9F, - 0x3342, 0x1F6D, 0x3343, 0x2EA3, 0x3344, 0x2EA4, 0x3345, 0x2EA5, 0x3346, - 0x2EA6, 0x3347, 0x1F72, 0x3348, 0x2EA7, 0x3349, 0x1DA1, 0x334A, 0x1DAF, - 0x334B, 0x2EA8, 0x334C, 0x2EA9, 0x334D, 0x1DA4, 0x334E, 0x2088, 0x334F, - 0x2EAA, 0x3350, 0x2EAB, 0x3351, 0x1DA9, 0x3352, 0x2EAE, 0x3353, 0x2EB2, - 0x3354, 0x2EAF, 0x3355, 0x2EB3, 0x3356, 0x2EB4, 0x3357, 0x1F6C, 0x3371, - 0x2E55, 0x337B, 0x2083, 0x337C, 0x1DC7, 0x337D, 0x1DC6, 0x337E, 0x1DC5, - 0x337F, 0x1F76, 0x3385, 0x1F5F, 0x3386, 0x1F60, 0x3387, 0x1F61, 0x3388, - 0x2000, 0x3389, 0x2001, 0x338D, 0x2E58, 0x338E, 0x1DB4, 0x338F, 0x1DB5, - 0x3390, 0x1F63, 0x3396, 0x1F65, 0x3397, 0x1F58, 0x3398, 0x1F5A, 0x339B, - 0x2E59, 0x339C, 0x1DB1, 0x339D, 0x1DB2, 0x339E, 0x1DB3, 0x339F, 0x1FFA, - 0x33A0, 0x1F54, 0x33A1, 0x1DB7, 0x33A2, 0x1F55, 0x33A3, 0x1FFB, 0x33A4, - 0x1F56, 0x33A5, 0x1F57, 0x33A6, 0x1FFC, 0x33B0, 0x1F5E, 0x33B1, 0x1F5D, - 0x33B2, 0x1F5C, 0x33B3, 0x1F5B, 0x33C2, 0x2E50, 0x33C4, 0x1DB6, 0x33C8, - 0x2002, 0x33CB, 0x1F62, 0x33CC, 0x1FF6, 0x33CD, 0x1DBB, 0x33D4, 0x1F64, - 0x33D7, 0x2E5D, 0x33D8, 0x2E5E, 0x33DA, 0x2E4B, 0x3402, 0x3582, 0x3405, - 0x3C1B, 0x3427, 0x3656, 0x3488, 0x3C52, 0x34DB, 0x3C41, 0x351F, 0x3629, - 0x353E, 0x371E, 0x378D, 0x361A, 0x37E2, 0x372B, 0x3AF3, 0x3C40, 0x3B22, - 0x3C49, 0x3B88, 0x368D, 0x3E8A, 0x3C43, 0x3EDA, 0x3C48, 0x3FB1, 0x3754, - 0x4093, 0x3C4C, 0x4103, 0x3C4F, 0x4264, 0x3760, 0x4293, 0x3C50, 0x440C, - 0x3C42, 0x4453, 0x3773, 0x457A, 0x3C4B, 0x4665, 0x3C4E, 0x46AE, 0x3C51, - 0x4BE8, 0x3C46, 0x4E00, 0x04B0, 0x4E01, 0x0BB8, 0x4E03, 0x08E3, 0x4E04, - 0x37D8, 0x4E05, 0x37D9, 0x4E07, 0x0EAA, 0x4E08, 0x09CE, 0x4E09, 0x087E, - 0x4E0A, 0x09CD, 0x4E0B, 0x053C, 0x4E0D, 0x0DC6, 0x4E0E, 0x0F29, 0x4E10, - 0x0FFB, 0x4E11, 0x04D1, 0x4E14, 0x05CC, 0x4E15, 0x0FFC, 0x4E16, 0x0A48, - 0x4E17, 0x10D7, 0x4E18, 0x0670, 0x4E19, 0x0E0A, 0x4E1E, 0x09CF, 0x4E1F, - 0x37DA, 0x4E21, 0x0F86, 0x4E26, 0x0E12, 0x4E28, 0x20B3, 0x4E2A, 0x0FFD, - 0x4E2B, 0x37DB, 0x4E2C, 0x374D, 0x4E2D, 0x0BA4, 0x4E2F, 0x37DC, 0x4E30, - 0x37DD, 0x4E31, 0x0FFE, 0x4E32, 0x06F2, 0x4E36, 0x0FFF, 0x4E37, 0x369D, - 0x4E38, 0x0619, 0x4E39, 0x0B6E, 0x4E3B, 0x0913, 0x4E3C, 0x1000, 0x4E3F, - 0x1001, 0x4E40, 0x37DE, 0x4E41, 0x37DF, 0x4E42, 0x1002, 0x4E43, 0x0CEB, - 0x4E44, 0x37E0, 0x4E45, 0x0671, 0x4E48, 0x372E, 0x4E4B, 0x0CED, 0x4E4D, - 0x0CBB, 0x4E4E, 0x0777, 0x4E4F, 0x0E61, 0x4E55, 0x1950, 0x4E56, 0x1003, - 0x4E57, 0x09D0, 0x4E58, 0x1004, 0x4E59, 0x0535, 0x4E5A, 0x37E1, 0x4E5D, - 0x06DD, 0x4E5E, 0x07A4, 0x4E5F, 0x0EF5, 0x4E62, 0x1233, 0x4E71, 0x0F5A, - 0x4E73, 0x0CD5, 0x4E7E, 0x05E1, 0x4E7F, 0x37E2, 0x4E80, 0x064F, 0x4E82, - 0x1005, 0x4E85, 0x1006, 0x4E86, 0x0F83, 0x4E88, 0x0F27, 0x4E89, 0x0AEA, - 0x4E8A, 0x1008, 0x4E8B, 0x08C4, 0x4E8C, 0x0CCB, 0x4E8D, 0x37E3, 0x4E8E, - 0x100B, 0x4E91, 0x04E0, 0x4E92, 0x0793, 0x4E94, 0x0792, 0x4E95, 0x04AA, - 0x4E96, 0x37E4, 0x4E98, 0x0FF1, 0x4E99, 0x0FF0, 0x4E9B, 0x0823, 0x4E9C, - 0x0465, 0x4E9E, 0x100C, 0x4E9F, 0x100D, 0x4EA0, 0x100E, 0x4EA1, 0x0E62, - 0x4EA2, 0x100F, 0x4EA4, 0x07A6, 0x4EA5, 0x04AB, 0x4EA6, 0x0EA0, 0x4EA8, - 0x0696, 0x4EAB, 0x0697, 0x4EAC, 0x0698, 0x4EAD, 0x0BFE, 0x4EAE, 0x0F84, - 0x4EB0, 0x1010, 0x4EB3, 0x1011, 0x4EB6, 0x1012, 0x4EB9, 0x37E5, 0x4EBA, - 0x0A13, 0x4EBB, 0x3620, 0x4EC0, 0x0944, 0x4EC1, 0x0A14, 0x4EC2, 0x1017, - 0x4EC4, 0x1015, 0x4EC6, 0x1016, 0x4EC7, 0x0672, 0x4ECA, 0x0813, 0x4ECB, - 0x0570, 0x4ECD, 0x1014, 0x4ECE, 0x1013, 0x4ECF, 0x0DF9, 0x4ED0, 0x37E6, - 0x4ED4, 0x0894, 0x4ED5, 0x0893, 0x4ED6, 0x0B1E, 0x4ED7, 0x1018, 0x4ED8, - 0x0DC7, 0x4ED9, 0x0A8B, 0x4EDD, 0x0290, 0x4EDE, 0x1019, 0x4EDF, 0x101B, - 0x4EE0, 0x37E7, 0x4EE1, 0x20B4, 0x4EE3, 0x0B45, 0x4EE4, 0x0FA9, 0x4EE5, - 0x048E, 0x4EED, 0x101A, 0x4EEE, 0x053E, 0x4EF0, 0x06BC, 0x4EF2, 0x0BA5, - 0x4EF6, 0x0745, 0x4EF7, 0x101C, 0x4EFB, 0x0CDA, 0x4EFC, 0x20B5, 0x4EFD, - 0x37E8, 0x4EFF, 0x37E9, 0x4F00, 0x20B6, 0x4F01, 0x0627, 0x4F03, 0x20B7, - 0x4F09, 0x101D, 0x4F0A, 0x048F, 0x4F0B, 0x37EA, 0x4F0D, 0x0794, 0x4F0E, - 0x0628, 0x4F0F, 0x0DEC, 0x4F10, 0x0D46, 0x4F11, 0x0673, 0x4F15, 0x37EB, - 0x4F1A, 0x0571, 0x4F1C, 0x1040, 0x4F1D, 0x0C3B, 0x4F2F, 0x0D22, 0x4F30, - 0x101F, 0x4F34, 0x0D50, 0x4F36, 0x0FAA, 0x4F38, 0x09F3, 0x4F39, 0x20B8, - 0x4F3A, 0x0895, 0x4F3B, 0x37ED, 0x4F3C, 0x08C5, 0x4F3D, 0x0540, 0x4F43, - 0x0BED, 0x4F46, 0x0B60, 0x4F47, 0x1023, 0x4F49, 0x37EE, 0x4F4D, 0x0490, - 0x4F4E, 0x0BFF, 0x4F4F, 0x0945, 0x4F50, 0x0824, 0x4F51, 0x0F0E, 0x4F53, - 0x0B2E, 0x4F54, 0x37EF, 0x4F55, 0x053F, 0x4F56, 0x20B9, 0x4F57, 0x1022, - 0x4F59, 0x0F28, 0x4F5A, 0x101E, 0x4F5B, 0x1020, 0x4F5C, 0x085E, 0x4F5D, - 0x1021, 0x4F5E, 0x11D3, 0x4F60, 0x37EC, 0x4F69, 0x1029, 0x4F6F, 0x102C, - 0x4F70, 0x102A, 0x4F73, 0x0542, 0x4F75, 0x0E0B, 0x4F76, 0x1024, 0x4F7A, - 0x37F0, 0x4F7B, 0x1028, 0x4F7C, 0x07A7, 0x4F7D, 0x37F1, 0x4F7E, 0x37F2, - 0x4F7F, 0x0896, 0x4F83, 0x05E2, 0x4F86, 0x102D, 0x4F88, 0x1025, 0x4F8A, - 0x20BB, 0x4F8B, 0x0FAB, 0x4F8D, 0x08C6, 0x4F8F, 0x1026, 0x4F91, 0x102B, - 0x4F92, 0x20BA, 0x4F94, 0x20BD, 0x4F96, 0x102E, 0x4F97, 0x37F3, 0x4F98, - 0x1027, 0x4F9A, 0x20BC, 0x4F9B, 0x0699, 0x4F9D, 0x0491, 0x4FA0, 0x069A, - 0x4FA1, 0x0541, 0x4FAB, 0x11D4, 0x4FAD, 0x0EA7, 0x4FAE, 0x0DE0, 0x4FAF, - 0x07A8, 0x4FB5, 0x09F5, 0x4FB6, 0x0F7F, 0x4FBE, 0x37F4, 0x4FBF, 0x0E28, - 0x4FC2, 0x070E, 0x4FC3, 0x0B05, 0x4FC4, 0x0564, 0x4FC9, 0x20AC, 0x4FCA, - 0x095D, 0x4FCD, 0x20BE, 0x4FCE, 0x1032, 0x4FCF, 0x37F5, 0x4FD0, 0x1037, - 0x4FD1, 0x1035, 0x4FD3, 0x3C2F, 0x4FD4, 0x1030, 0x4FD7, 0x0B0F, 0x4FD8, - 0x1033, 0x4FDA, 0x1036, 0x4FDB, 0x1034, 0x4FDD, 0x0E2D, 0x4FDF, 0x1031, - 0x4FE0, 0x1DEC, 0x4FE1, 0x09F4, 0x4FE3, 0x0EA1, 0x4FE4, 0x1038, 0x4FE5, - 0x1039, 0x4FEE, 0x092E, 0x4FEF, 0x1046, 0x4FF3, 0x0D06, 0x4FF5, 0x0DA8, - 0x4FF6, 0x1041, 0x4FF8, 0x0E40, 0x4FFA, 0x0536, 0x4FFD, 0x37F6, 0x4FFE, - 0x1045, 0x4FFF, 0x20C1, 0x5000, 0x37F7, 0x5001, 0x37F8, 0x5002, 0x3447, - 0x5005, 0x103F, 0x5006, 0x1048, 0x5009, 0x0AD4, 0x500B, 0x0778, 0x500D, - 0x0D12, 0x500F, 0x1600, 0x5010, 0x37F9, 0x5011, 0x1047, 0x5012, 0x0C57, - 0x5014, 0x103C, 0x5016, 0x07AA, 0x5019, 0x07A9, 0x501A, 0x103A, 0x501B, - 0x37FA, 0x501E, 0x20C2, 0x501F, 0x0906, 0x5021, 0x1042, 0x5022, 0x20C0, - 0x5023, 0x0E3F, 0x5024, 0x0B8B, 0x5025, 0x103E, 0x5026, 0x0747, 0x5027, - 0x37FB, 0x5028, 0x103B, 0x5029, 0x1043, 0x502A, 0x103D, 0x502B, 0x0F99, - 0x502C, 0x1044, 0x502D, 0x0FE7, 0x502E, 0x37FC, 0x5036, 0x06DE, 0x5039, - 0x0746, 0x503B, 0x3800, 0x5040, 0x20BF, 0x5042, 0x20C5, 0x5043, 0x1049, - 0x5046, 0x20C3, 0x5047, 0x104A, 0x5048, 0x104E, 0x5049, 0x0492, 0x504F, - 0x0E20, 0x5050, 0x104D, 0x5055, 0x104C, 0x5056, 0x1050, 0x5057, 0x37FD, - 0x505A, 0x104F, 0x505C, 0x0C00, 0x5065, 0x0748, 0x5066, 0x37FE, 0x506A, - 0x37FF, 0x506C, 0x1051, 0x5070, 0x20C4, 0x5072, 0x08F1, 0x5074, 0x0B06, - 0x5075, 0x0C01, 0x5076, 0x06EE, 0x5078, 0x1052, 0x507D, 0x0650, 0x5080, - 0x1053, 0x5085, 0x1055, 0x508D, 0x0E63, 0x508F, 0x3801, 0x5091, 0x073C, - 0x5094, 0x20C6, 0x5096, 0x3802, 0x5098, 0x087F, 0x5099, 0x0D8B, 0x509A, - 0x1054, 0x509C, 0x3803, 0x50AC, 0x0835, 0x50AD, 0x0F2D, 0x50B2, 0x1057, - 0x50B3, 0x105A, 0x50B4, 0x1056, 0x50B5, 0x0834, 0x50B7, 0x0987, 0x50BE, - 0x070F, 0x50C2, 0x105B, 0x50C5, 0x06C7, 0x50C9, 0x1058, 0x50CA, 0x1059, - 0x50CC, 0x3804, 0x50CD, 0x0C87, 0x50CF, 0x0AFE, 0x50D1, 0x069B, 0x50D5, - 0x0E7B, 0x50D6, 0x105C, 0x50D8, 0x20C8, 0x50D9, 0x3C30, 0x50DA, 0x0F85, - 0x50DE, 0x105D, 0x50E3, 0x1060, 0x50E5, 0x105E, 0x50E6, 0x3805, 0x50E7, - 0x0AD0, 0x50E9, 0x3806, 0x50ED, 0x105F, 0x50EE, 0x1061, 0x50EF, 0x3807, - 0x50F0, 0x3C31, 0x50F4, 0x20C7, 0x50F5, 0x1063, 0x50F9, 0x1062, 0x50FB, - 0x0E18, 0x5100, 0x0651, 0x5101, 0x1065, 0x5102, 0x1066, 0x5104, 0x052F, - 0x5108, 0x3808, 0x5109, 0x1064, 0x510B, 0x3809, 0x5110, 0x380A, 0x5112, - 0x0920, 0x5114, 0x1069, 0x5115, 0x1068, 0x5116, 0x1067, 0x5118, 0x102F, - 0x511A, 0x106A, 0x511B, 0x380B, 0x511E, 0x380C, 0x511F, 0x0988, 0x5121, - 0x106B, 0x512A, 0x0F0F, 0x5132, 0x0EE5, 0x5137, 0x106D, 0x513A, 0x106C, - 0x513B, 0x106F, 0x513C, 0x106E, 0x513F, 0x1070, 0x5140, 0x1071, 0x5141, - 0x04B8, 0x5143, 0x0769, 0x5144, 0x0711, 0x5145, 0x0946, 0x5146, 0x0BB9, - 0x5147, 0x069C, 0x5148, 0x0A8C, 0x5149, 0x07AB, 0x514A, 0x20C9, 0x514B, - 0x0800, 0x514C, 0x1073, 0x514D, 0x0ED4, 0x514E, 0x0C40, 0x5150, 0x08C7, - 0x5152, 0x1072, 0x5154, 0x1074, 0x515A, 0x0C58, 0x515C, 0x05D3, 0x515F, - 0x380D, 0x5162, 0x1075, 0x5164, 0x20CA, 0x5165, 0x0CD6, 0x5167, 0x368E, - 0x5168, 0x0AB6, 0x5169, 0x1077, 0x516A, 0x1078, 0x516B, 0x0D40, 0x516C, - 0x07AC, 0x516D, 0x0FE1, 0x516E, 0x1079, 0x5171, 0x069E, 0x5175, 0x0E0C, - 0x5176, 0x0B16, 0x5177, 0x06E9, 0x5178, 0x0C2F, 0x5179, 0x3779, 0x517C, - 0x0749, 0x5180, 0x107A, 0x5182, 0x107B, 0x5185, 0x0CBA, 0x5186, 0x0501, - 0x5189, 0x107E, 0x518A, 0x086D, 0x518C, 0x107D, 0x518D, 0x0836, 0x518F, - 0x107F, 0x5190, 0x185B, 0x5191, 0x1080, 0x5192, 0x0E6F, 0x5193, 0x1081, - 0x5195, 0x1082, 0x5196, 0x1083, 0x5197, 0x09D1, 0x5199, 0x08F8, 0x519D, - 0x20CB, 0x51A0, 0x05E3, 0x51A1, 0x380E, 0x51A2, 0x1086, 0x51A4, 0x1084, - 0x51A5, 0x0EC9, 0x51A6, 0x1085, 0x51A8, 0x0DCC, 0x51A9, 0x1087, 0x51AA, - 0x1088, 0x51AB, 0x1089, 0x51AC, 0x0C59, 0x51B0, 0x108D, 0x51B1, 0x108B, - 0x51B2, 0x108C, 0x51B3, 0x108A, 0x51B4, 0x0853, 0x51B5, 0x108E, 0x51B6, - 0x0EF6, 0x51B7, 0x0FAC, 0x51BC, 0x380F, 0x51BD, 0x108F, 0x51BE, 0x20CC, - 0x51C3, 0x3C32, 0x51C4, 0x0A4C, 0x51C5, 0x1090, 0x51C6, 0x0964, 0x51C9, - 0x1091, 0x51CB, 0x0BBA, 0x51CC, 0x0F87, 0x51CD, 0x0C5A, 0x51D6, 0x10DA, - 0x51DB, 0x1092, 0x51DC, 0x205C, 0x51DD, 0x06BD, 0x51DE, 0x3810, 0x51E0, - 0x1093, 0x51E1, 0x0E8C, 0x51E6, 0x0972, 0x51E7, 0x0B5C, 0x51E9, 0x1095, - 0x51EA, 0x0CBC, 0x51EC, 0x20CD, 0x51ED, 0x1096, 0x51EE, 0x3811, 0x51F0, - 0x1097, 0x51F1, 0x058C, 0x51F4, 0x3812, 0x51F5, 0x1098, 0x51F6, 0x069F, - 0x51F8, 0x0CA4, 0x51F9, 0x051C, 0x51FA, 0x095A, 0x51FD, 0x0D35, 0x51FE, - 0x1099, 0x5200, 0x0C5B, 0x5201, 0x3813, 0x5202, 0x3814, 0x5203, 0x0A15, - 0x5204, 0x109A, 0x5206, 0x0DFC, 0x5207, 0x0A7E, 0x5208, 0x05DE, 0x520A, - 0x05E5, 0x520B, 0x109B, 0x520E, 0x109D, 0x5211, 0x0710, 0x5213, 0x3815, - 0x5214, 0x109C, 0x5215, 0x20CE, 0x5217, 0x0FBB, 0x521D, 0x0973, 0x5224, - 0x0D51, 0x5225, 0x0E1C, 0x5227, 0x109E, 0x5229, 0x0F62, 0x522A, 0x109F, - 0x522E, 0x10A0, 0x5230, 0x0C78, 0x5233, 0x10A1, 0x5236, 0x0A4D, 0x5237, - 0x086E, 0x5238, 0x074A, 0x5239, 0x10A2, 0x523A, 0x0897, 0x523B, 0x0801, - 0x5243, 0x0C02, 0x5244, 0x10A4, 0x5247, 0x0B07, 0x5249, 0x3816, 0x524A, - 0x085F, 0x524B, 0x10A5, 0x524C, 0x10A6, 0x524D, 0x0AB2, 0x524F, 0x10A3, - 0x5254, 0x10A8, 0x5256, 0x0E64, 0x525B, 0x07F6, 0x525D, 0x1E5E, 0x525E, - 0x10A7, 0x5261, 0x3817, 0x5263, 0x074B, 0x5264, 0x084E, 0x5265, 0x0D23, - 0x5266, 0x3818, 0x5269, 0x10AB, 0x526A, 0x10A9, 0x526F, 0x0DED, 0x5270, - 0x09D2, 0x5271, 0x10B2, 0x5272, 0x05C2, 0x5273, 0x10AC, 0x5274, 0x10AA, - 0x5275, 0x0AD1, 0x527D, 0x10AE, 0x527F, 0x10AD, 0x5283, 0x05A2, 0x5287, - 0x0736, 0x5288, 0x10B3, 0x5289, 0x0F75, 0x528D, 0x10AF, 0x5291, 0x10B4, - 0x5292, 0x10B1, 0x5293, 0x3819, 0x5294, 0x10B0, 0x529B, 0x0F97, 0x529C, - 0x20CF, 0x529F, 0x07AD, 0x52A0, 0x0543, 0x52A3, 0x0FBC, 0x52A6, 0x20D0, - 0x52A9, 0x097F, 0x52AA, 0x0C52, 0x52AB, 0x07F7, 0x52AC, 0x10B7, 0x52AD, - 0x10B8, 0x52AF, 0x217D, 0x52B1, 0x0FAD, 0x52B4, 0x0FD1, 0x52B5, 0x10BA, - 0x52B9, 0x07AE, 0x52BC, 0x10B9, 0x52BE, 0x058D, 0x52C0, 0x20D1, 0x52C1, - 0x10BB, 0x52C3, 0x0E84, 0x52C5, 0x0BD8, 0x52C7, 0x0F10, 0x52C8, 0x381A, - 0x52C9, 0x0E29, 0x52CD, 0x10BC, 0x52D0, 0x36E8, 0x52D2, 0x1BEE, 0x52D5, - 0x0C88, 0x52D7, 0x10BD, 0x52D8, 0x05E6, 0x52D9, 0x0EBF, 0x52DB, 0x20D2, - 0x52DD, 0x0989, 0x52DE, 0x10BE, 0x52DF, 0x0E37, 0x52E0, 0x10C2, 0x52E2, - 0x0A4E, 0x52E3, 0x10BF, 0x52E4, 0x06C8, 0x52E6, 0x10C0, 0x52E7, 0x05E7, - 0x52F0, 0x381B, 0x52F2, 0x0704, 0x52F3, 0x10C3, 0x52F5, 0x10C4, 0x52F8, - 0x10C5, 0x52F9, 0x10C6, 0x52FA, 0x0907, 0x52FE, 0x07AF, 0x52FF, 0x0EEA, - 0x5300, 0x20D3, 0x5301, 0x0EF4, 0x5302, 0x0CCF, 0x5305, 0x0E41, 0x5306, - 0x10C7, 0x5307, 0x20D4, 0x5308, 0x10C8, 0x530A, 0x381C, 0x530B, 0x381D, - 0x530D, 0x10CA, 0x530F, 0x10CC, 0x5310, 0x10CB, 0x5315, 0x10CD, 0x5316, - 0x053D, 0x5317, 0x0E7A, 0x5319, 0x086C, 0x531A, 0x10CE, 0x531D, 0x0ADB, - 0x5320, 0x098A, 0x5321, 0x06A1, 0x5323, 0x10CF, 0x5324, 0x20D5, 0x532A, - 0x0D6F, 0x532F, 0x10D0, 0x5331, 0x10D1, 0x5333, 0x10D2, 0x5338, 0x10D3, - 0x5339, 0x0D96, 0x533A, 0x06E0, 0x533B, 0x04A9, 0x533E, 0x381E, 0x533F, - 0x0C97, 0x5340, 0x10D4, 0x5341, 0x0947, 0x5343, 0x0A8D, 0x5345, 0x10D6, - 0x5346, 0x10D5, 0x5347, 0x098B, 0x5348, 0x0795, 0x5349, 0x10D8, 0x534A, - 0x0D52, 0x534B, 0x3820, 0x534C, 0x381F, 0x534D, 0x10D9, 0x5351, 0x0D70, - 0x5352, 0x0B14, 0x5353, 0x0B4E, 0x5354, 0x06A0, 0x5357, 0x0CC6, 0x5358, - 0x0B6F, 0x535A, 0x0D24, 0x535C, 0x0E7C, 0x535E, 0x10DB, 0x5360, 0x0A8E, - 0x5361, 0x3821, 0x5366, 0x070B, 0x5369, 0x10DC, 0x536C, 0x3822, 0x536E, - 0x10DD, 0x536F, 0x04CE, 0x5370, 0x04B9, 0x5371, 0x0629, 0x5372, 0x20D6, - 0x5373, 0x0B08, 0x5374, 0x066B, 0x5375, 0x0F5B, 0x5377, 0x10E0, 0x5378, - 0x0537, 0x537B, 0x10DF, 0x537D, 0x3435, 0x537F, 0x06A2, 0x5382, 0x10E1, - 0x5384, 0x0EFD, 0x5389, 0x37D0, 0x5393, 0x20D7, 0x5396, 0x10E2, 0x5398, - 0x0F9A, 0x539A, 0x07B0, 0x539F, 0x076A, 0x53A0, 0x10E3, 0x53A5, 0x10E5, - 0x53A6, 0x10E4, 0x53A8, 0x0A25, 0x53A9, 0x04DB, 0x53AB, 0x3823, 0x53AD, - 0x0500, 0x53AE, 0x10E6, 0x53B0, 0x10E7, 0x53B2, 0x20D8, 0x53B3, 0x076B, - 0x53B6, 0x10E8, 0x53BB, 0x0688, 0x53C2, 0x0880, 0x53C3, 0x10E9, 0x53C8, - 0x0EA2, 0x53C9, 0x0825, 0x53CA, 0x0674, 0x53CB, 0x0F11, 0x53CC, 0x0AD2, - 0x53CD, 0x0D53, 0x53CE, 0x0929, 0x53D4, 0x0951, 0x53D6, 0x0914, 0x53D7, - 0x0921, 0x53D9, 0x0980, 0x53DA, 0x3824, 0x53DB, 0x0D54, 0x53DD, 0x20D9, - 0x53DF, 0x10EC, 0x53E1, 0x04E5, 0x53E2, 0x0AD3, 0x53E3, 0x07B1, 0x53E4, - 0x0779, 0x53E5, 0x06DF, 0x53E6, 0x3825, 0x53E8, 0x10F0, 0x53E9, 0x0B5F, - 0x53EA, 0x0B5E, 0x53EB, 0x06A3, 0x53EC, 0x098C, 0x53ED, 0x10F1, 0x53EE, - 0x10EF, 0x53EF, 0x0544, 0x53F0, 0x0B46, 0x53F1, 0x08E4, 0x53F2, 0x0899, - 0x53F3, 0x04C8, 0x53F5, 0x3826, 0x53F6, 0x05CE, 0x53F7, 0x07F8, 0x53F8, - 0x0898, 0x53FA, 0x10F2, 0x5401, 0x10F3, 0x5403, 0x0663, 0x5404, 0x05A4, - 0x5408, 0x07F9, 0x5409, 0x0662, 0x540A, 0x0BFB, 0x540B, 0x04C7, 0x540C, - 0x0C89, 0x540D, 0x0ECA, 0x540E, 0x07B3, 0x540F, 0x0F63, 0x5410, 0x0C41, - 0x5411, 0x07B2, 0x541B, 0x0705, 0x541D, 0x10FC, 0x541F, 0x06DB, 0x5420, - 0x0E78, 0x5426, 0x0D71, 0x5427, 0x3827, 0x5429, 0x10FB, 0x542B, 0x061A, - 0x542C, 0x10F6, 0x542D, 0x10F7, 0x542E, 0x10F9, 0x5433, 0x35C0, 0x5436, - 0x10FA, 0x5438, 0x0675, 0x5439, 0x0A27, 0x543B, 0x0DFD, 0x543C, 0x10F8, - 0x543D, 0x10F4, 0x543E, 0x0797, 0x543F, 0x35CF, 0x5440, 0x10F5, 0x5442, - 0x0FCA, 0x5446, 0x0E42, 0x5448, 0x0C04, 0x5449, 0x0796, 0x544A, 0x0802, - 0x544D, 0x3828, 0x544E, 0x10FD, 0x5451, 0x0CB5, 0x5455, 0x3723, 0x545F, - 0x1101, 0x5466, 0x3829, 0x5468, 0x092A, 0x546A, 0x0922, 0x546B, 0x382A, - 0x5470, 0x1104, 0x5471, 0x1102, 0x5473, 0x0EAF, 0x5474, 0x382B, 0x5475, - 0x10FF, 0x5476, 0x1108, 0x5477, 0x1103, 0x547B, 0x1106, 0x547C, 0x077A, - 0x547D, 0x0ECB, 0x5480, 0x1107, 0x5484, 0x1109, 0x5486, 0x110B, 0x548A, - 0x20DC, 0x548B, 0x0860, 0x548C, 0x0FE8, 0x548D, 0x382C, 0x548E, 0x1100, - 0x548F, 0x10FE, 0x5490, 0x110A, 0x5492, 0x1105, 0x5496, 0x382D, 0x549C, - 0x20DB, 0x54A1, 0x382E, 0x54A2, 0x110D, 0x54A4, 0x1116, 0x54A5, 0x110F, - 0x54A8, 0x1113, 0x54A9, 0x20DD, 0x54AB, 0x1114, 0x54AC, 0x1110, 0x54AD, - 0x382F, 0x54AF, 0x1131, 0x54B2, 0x0859, 0x54B3, 0x058F, 0x54B8, 0x110E, - 0x54B9, 0x3830, 0x54BC, 0x1118, 0x54BD, 0x04BA, 0x54BE, 0x1117, 0x54BF, - 0x3831, 0x54C0, 0x0469, 0x54C1, 0x0DBC, 0x54C2, 0x1115, 0x54C4, 0x1111, - 0x54C6, 0x3832, 0x54C7, 0x110C, 0x54C8, 0x1112, 0x54C9, 0x0838, 0x54CD, - 0x3833, 0x54D8, 0x1119, 0x54E1, 0x04BB, 0x54E2, 0x1122, 0x54E5, 0x111A, - 0x54E6, 0x111B, 0x54E8, 0x098D, 0x54E9, 0x0E97, 0x54ED, 0x1120, 0x54EE, - 0x111F, 0x54F2, 0x0C29, 0x54FA, 0x1121, 0x54FD, 0x111E, 0x54FF, 0x20DE, - 0x5504, 0x04D6, 0x5506, 0x0826, 0x5507, 0x09F6, 0x550E, 0x3834, 0x550F, - 0x111C, 0x5510, 0x0C5C, 0x5514, 0x111D, 0x5516, 0x0466, 0x552B, 0x3835, - 0x552E, 0x1127, 0x552F, 0x0F0D, 0x5531, 0x098F, 0x5533, 0x112D, 0x5535, - 0x3836, 0x5538, 0x112C, 0x5539, 0x1123, 0x553E, 0x0B23, 0x5540, 0x1124, - 0x5544, 0x0B4F, 0x5545, 0x1129, 0x5546, 0x098E, 0x554A, 0x3837, 0x554C, - 0x1126, 0x554F, 0x0EF0, 0x5553, 0x0712, 0x5556, 0x112A, 0x5557, 0x112B, - 0x555C, 0x1128, 0x555D, 0x112E, 0x555E, 0x1DD1, 0x5560, 0x3838, 0x5561, - 0x3839, 0x5563, 0x1125, 0x557B, 0x1134, 0x557C, 0x1139, 0x557E, 0x1135, - 0x5580, 0x1130, 0x5583, 0x113A, 0x5584, 0x0AB3, 0x5586, 0x20DF, 0x5587, - 0x113C, 0x5588, 0x383A, 0x5589, 0x07B4, 0x558A, 0x1132, 0x558B, 0x0BBB, - 0x558E, 0x383B, 0x5598, 0x1136, 0x5599, 0x112F, 0x559A, 0x05E9, 0x559C, - 0x062A, 0x559D, 0x05C3, 0x559E, 0x1137, 0x559F, 0x1133, 0x55A7, 0x074C, - 0x55A8, 0x113D, 0x55A9, 0x113B, 0x55AA, 0x0AD5, 0x55AB, 0x0664, 0x55AC, - 0x06A4, 0x55AE, 0x1138, 0x55B0, 0x06EC, 0x55B6, 0x04E6, 0x55C4, 0x1141, - 0x55C5, 0x113F, 0x55C7, 0x1178, 0x55D4, 0x1144, 0x55DA, 0x113E, 0x55DC, - 0x1142, 0x55DF, 0x1140, 0x55E3, 0x089A, 0x55E4, 0x1143, 0x55F7, 0x1146, - 0x55F9, 0x114B, 0x55FD, 0x1149, 0x55FE, 0x1148, 0x5606, 0x0B70, 0x5608, - 0x383C, 0x5609, 0x0545, 0x560E, 0x383D, 0x560F, 0x383E, 0x5614, 0x1145, - 0x5616, 0x1147, 0x5617, 0x0990, 0x5618, 0x04D5, 0x561B, 0x114A, 0x5620, - 0x3C1D, 0x5629, 0x055E, 0x562F, 0x1155, 0x5631, 0x09E4, 0x5632, 0x1151, - 0x5634, 0x114F, 0x5636, 0x1150, 0x5637, 0x383F, 0x5638, 0x1152, 0x563F, - 0x3840, 0x5642, 0x04DF, 0x5649, 0x3841, 0x564B, 0x3842, 0x564C, 0x0ABB, - 0x564E, 0x114C, 0x564F, 0x3843, 0x5650, 0x114D, 0x5653, 0x1F1B, 0x565B, - 0x05D8, 0x5664, 0x1154, 0x5666, 0x3844, 0x5668, 0x062B, 0x5669, 0x3845, - 0x566A, 0x1157, 0x566B, 0x1153, 0x566C, 0x1156, 0x566F, 0x3846, 0x5671, - 0x3847, 0x5672, 0x3848, 0x5674, 0x0DFE, 0x5676, 0x3C33, 0x5678, 0x0CAD, - 0x567A, 0x0D4C, 0x5680, 0x1159, 0x5686, 0x1158, 0x5687, 0x05A3, 0x568A, - 0x115A, 0x568F, 0x115D, 0x5694, 0x115C, 0x5695, 0x3849, 0x5699, 0x1DE6, - 0x569A, 0x384A, 0x56A0, 0x115B, 0x56A2, 0x0CEF, 0x56A5, 0x115E, 0x56AC, - 0x384B, 0x56AD, 0x384C, 0x56AE, 0x115F, 0x56B1, 0x384D, 0x56B4, 0x1161, - 0x56B6, 0x1160, 0x56BC, 0x1163, 0x56C0, 0x1166, 0x56C1, 0x1164, 0x56C2, - 0x1162, 0x56C3, 0x1165, 0x56C8, 0x1167, 0x56C9, 0x384E, 0x56CA, 0x1E5A, - 0x56CE, 0x1168, 0x56D1, 0x1169, 0x56D3, 0x116A, 0x56D7, 0x116B, 0x56D8, - 0x107C, 0x56DA, 0x0928, 0x56DB, 0x089B, 0x56DD, 0x384F, 0x56DE, 0x0573, - 0x56E0, 0x04BC, 0x56E3, 0x0B82, 0x56E4, 0x3850, 0x56EE, 0x116C, 0x56F0, - 0x0814, 0x56F2, 0x0493, 0x56F3, 0x0A24, 0x56F9, 0x116D, 0x56FA, 0x077B, - 0x56FD, 0x0803, 0x56FF, 0x116F, 0x5700, 0x116E, 0x5703, 0x0E30, 0x5704, - 0x1170, 0x5708, 0x1172, 0x5709, 0x1171, 0x570A, 0x3851, 0x570B, 0x1173, - 0x570D, 0x1174, 0x570F, 0x074D, 0x5712, 0x0502, 0x5713, 0x1175, 0x5715, - 0x3852, 0x5716, 0x1177, 0x5718, 0x1176, 0x571C, 0x1179, 0x571F, 0x0C54, - 0x5721, 0x3680, 0x5723, 0x3853, 0x5726, 0x117A, 0x5727, 0x0479, 0x5728, - 0x084F, 0x572D, 0x0713, 0x572F, 0x3854, 0x5730, 0x0B8D, 0x5733, 0x3855, - 0x5734, 0x3856, 0x5737, 0x117B, 0x5738, 0x117C, 0x573B, 0x117E, 0x5740, - 0x117F, 0x5742, 0x0854, 0x5747, 0x06C9, 0x574A, 0x0E65, 0x574C, 0x3857, - 0x574E, 0x117D, 0x574F, 0x1180, 0x5750, 0x0831, 0x5751, 0x07B5, 0x5759, - 0x20E0, 0x5761, 0x1184, 0x5764, 0x0815, 0x5765, 0x20E1, 0x5766, 0x0B71, - 0x5769, 0x1181, 0x576A, 0x0BF6, 0x5770, 0x3858, 0x577F, 0x1185, 0x5782, - 0x0A28, 0x5788, 0x1183, 0x5789, 0x1186, 0x578B, 0x0715, 0x578C, 0x3859, - 0x5793, 0x1187, 0x579C, 0x385A, 0x57A0, 0x1188, 0x57A2, 0x07B6, 0x57A3, - 0x059E, 0x57A4, 0x118A, 0x57AA, 0x118B, 0x57AC, 0x20E2, 0x57B0, 0x118C, - 0x57B3, 0x1189, 0x57B8, 0x385B, 0x57C0, 0x1182, 0x57C3, 0x118D, 0x57C6, - 0x118E, 0x57C7, 0x20E4, 0x57C8, 0x20E3, 0x57CB, 0x0E92, 0x57CE, 0x09D3, - 0x57D2, 0x1190, 0x57D3, 0x1191, 0x57D4, 0x118F, 0x57D6, 0x1193, 0x57DC, - 0x0CEE, 0x57DF, 0x04AC, 0x57E0, 0x0DC8, 0x57E3, 0x1194, 0x57E6, 0x385C, - 0x57ED, 0x385D, 0x57F4, 0x09E5, 0x57F5, 0x385E, 0x57F6, 0x385F, 0x57F7, - 0x08E5, 0x57F9, 0x0D13, 0x57FA, 0x062C, 0x57FC, 0x085B, 0x57FF, 0x3860, - 0x5800, 0x0E87, 0x5802, 0x0C8A, 0x5805, 0x074E, 0x5806, 0x0B2F, 0x5809, - 0x3861, 0x580A, 0x1192, 0x580B, 0x1195, 0x5815, 0x0B24, 0x5819, 0x1196, - 0x581D, 0x1197, 0x5820, 0x3862, 0x5821, 0x1199, 0x5824, 0x0C05, 0x582A, - 0x05EA, 0x582F, 0x1D32, 0x5830, 0x0503, 0x5831, 0x0E43, 0x5832, 0x3863, - 0x5834, 0x09D4, 0x5835, 0x0C42, 0x583A, 0x0856, 0x583D, 0x119F, 0x5840, - 0x0E0D, 0x5841, 0x0FA5, 0x584A, 0x0574, 0x584B, 0x119B, 0x5851, 0x0ABC, - 0x5852, 0x119E, 0x5854, 0x0C5D, 0x5857, 0x0C43, 0x5858, 0x0C5E, 0x5859, - 0x0D4D, 0x585A, 0x0BE9, 0x585E, 0x0839, 0x5861, 0x1E47, 0x5862, 0x119A, - 0x5869, 0x0518, 0x586B, 0x0C30, 0x5870, 0x119C, 0x5872, 0x1198, 0x5875, - 0x0A16, 0x5879, 0x11A0, 0x587C, 0x3864, 0x587E, 0x0958, 0x5880, 0x3865, - 0x5883, 0x06A5, 0x5885, 0x11A1, 0x5893, 0x0E38, 0x5897, 0x0AFF, 0x589C, - 0x0BE2, 0x589E, 0x20E7, 0x589F, 0x11A3, 0x58A8, 0x0E7D, 0x58A9, 0x3866, - 0x58AB, 0x11A4, 0x58AE, 0x11A9, 0x58B2, 0x20E8, 0x58B3, 0x0DFF, 0x58B8, - 0x11A8, 0x58B9, 0x11A2, 0x58BA, 0x11A5, 0x58BB, 0x11A7, 0x58BE, 0x0816, - 0x58C1, 0x0E19, 0x58C5, 0x11AA, 0x58C7, 0x0B83, 0x58CA, 0x0575, 0x58CC, - 0x09D5, 0x58CE, 0x3867, 0x58D0, 0x3868, 0x58D1, 0x11AC, 0x58D3, 0x11AB, - 0x58D4, 0x3869, 0x58D5, 0x07FA, 0x58D7, 0x11AD, 0x58D8, 0x11AF, 0x58D9, - 0x11AE, 0x58DA, 0x386A, 0x58DC, 0x11B1, 0x58DE, 0x11A6, 0x58DF, 0x11B3, - 0x58E4, 0x11B2, 0x58E5, 0x11B0, 0x58E9, 0x386B, 0x58EB, 0x089C, 0x58EC, - 0x0A17, 0x58EE, 0x0AD6, 0x58EF, 0x11B4, 0x58F0, 0x0A60, 0x58F1, 0x04B1, - 0x58F2, 0x0D1A, 0x58F7, 0x0BF7, 0x58F9, 0x11B6, 0x58FA, 0x11B5, 0x58FB, - 0x11B7, 0x58FC, 0x11B8, 0x58FD, 0x11B9, 0x5902, 0x11BA, 0x5909, 0x0E21, - 0x590A, 0x11BB, 0x590B, 0x20E9, 0x590C, 0x386C, 0x590F, 0x0546, 0x5910, - 0x11BC, 0x5915, 0x0F26, 0x5916, 0x058E, 0x5918, 0x10DE, 0x5919, 0x0952, - 0x591A, 0x0B1F, 0x591B, 0x11BD, 0x591C, 0x0EF7, 0x5922, 0x0EC0, 0x5924, - 0x386D, 0x5925, 0x11BF, 0x5927, 0x0B47, 0x5929, 0x0C31, 0x592A, 0x0B20, - 0x592B, 0x0DC9, 0x592C, 0x11C0, 0x592D, 0x11C1, 0x592E, 0x051D, 0x592F, - 0x386E, 0x5931, 0x08E6, 0x5932, 0x11C2, 0x5937, 0x0494, 0x5938, 0x11C3, - 0x5939, 0x3725, 0x593E, 0x11C4, 0x5944, 0x0504, 0x5947, 0x062D, 0x5948, - 0x0CB8, 0x5949, 0x0E44, 0x594E, 0x11C8, 0x594F, 0x0AD7, 0x5950, 0x11C7, - 0x5951, 0x0716, 0x5953, 0x20EA, 0x5954, 0x0E89, 0x5955, 0x11C6, 0x5957, - 0x0C5F, 0x5958, 0x11CA, 0x595A, 0x11C9, 0x595B, 0x20EB, 0x595D, 0x20EC, - 0x5960, 0x11CC, 0x5961, 0x386F, 0x5962, 0x11CB, 0x5963, 0x20ED, 0x5965, - 0x051E, 0x5967, 0x11CD, 0x5968, 0x0991, 0x5969, 0x11CF, 0x596A, 0x0B63, - 0x596C, 0x11CE, 0x596D, 0x3870, 0x596E, 0x0E03, 0x5973, 0x0981, 0x5974, - 0x0C55, 0x5978, 0x11D0, 0x597D, 0x07B7, 0x5981, 0x11D1, 0x5982, 0x0CD7, - 0x5983, 0x0D72, 0x5984, 0x0EDD, 0x598A, 0x0CDB, 0x598D, 0x11DA, 0x5993, - 0x0652, 0x5996, 0x0F2F, 0x5999, 0x0EBB, 0x599B, 0x1239, 0x599D, 0x11D2, - 0x59A3, 0x11D5, 0x59A4, 0x20EE, 0x59A5, 0x0B25, 0x59A8, 0x0E66, 0x59AC, - 0x0C44, 0x59B2, 0x11D6, 0x59B9, 0x0E93, 0x59BA, 0x20EF, 0x59BB, 0x083A, - 0x59BE, 0x0992, 0x59C6, 0x11D7, 0x59C9, 0x089E, 0x59CA, 0x3871, 0x59CB, - 0x089D, 0x59D0, 0x047D, 0x59D1, 0x077C, 0x59D2, 0x3872, 0x59D3, 0x0A4F, - 0x59D4, 0x0495, 0x59D9, 0x11DB, 0x59DA, 0x11DC, 0x59DC, 0x11D9, 0x59DD, - 0x3873, 0x59E3, 0x3874, 0x59E4, 0x3875, 0x59E5, 0x04DA, 0x59E6, 0x05EB, - 0x59E8, 0x11D8, 0x59EA, 0x0ED1, 0x59EB, 0x0DA3, 0x59EC, 0x36AD, 0x59F6, - 0x046C, 0x59FB, 0x04BD, 0x59FF, 0x089F, 0x5A01, 0x0496, 0x5A03, 0x0467, - 0x5A04, 0x3876, 0x5A09, 0x11E1, 0x5A0C, 0x3877, 0x5A11, 0x11DF, 0x5A18, - 0x0EC8, 0x5A1A, 0x11E2, 0x5A1B, 0x35C1, 0x5A1C, 0x11E0, 0x5A1F, 0x11DE, - 0x5A20, 0x09F7, 0x5A23, 0x3878, 0x5A25, 0x11DD, 0x5A29, 0x0E2A, 0x5A2F, - 0x0798, 0x5A35, 0x11E6, 0x5A36, 0x11E7, 0x5A3C, 0x0993, 0x5A40, 0x11E3, - 0x5A41, 0x0FD2, 0x5A46, 0x0D02, 0x5A47, 0x3879, 0x5A49, 0x11E5, 0x5A55, - 0x387A, 0x5A5A, 0x0817, 0x5A62, 0x11E8, 0x5A63, 0x387B, 0x5A66, 0x0DCA, - 0x5A6A, 0x11E9, 0x5A6C, 0x11E4, 0x5A6D, 0x387C, 0x5A7E, 0x387D, 0x5A7F, - 0x0EC7, 0x5A92, 0x0D14, 0x5A9A, 0x11EA, 0x5A9B, 0x0DA4, 0x5A9E, 0x387E, - 0x5AA7, 0x387F, 0x5AAC, 0x3880, 0x5AB3, 0x3881, 0x5ABC, 0x11EB, 0x5ABD, - 0x11EF, 0x5ABE, 0x11EC, 0x5AC1, 0x0547, 0x5AC2, 0x11EE, 0x5AC9, 0x08E7, - 0x5ACB, 0x11ED, 0x5ACC, 0x074F, 0x5AD0, 0x11FB, 0x5AD6, 0x11F4, 0x5AD7, - 0x11F1, 0x5AE0, 0x3882, 0x5AE1, 0x0BA2, 0x5AE3, 0x11F0, 0x5AE6, 0x11F2, - 0x5AE9, 0x11F3, 0x5AFA, 0x11F5, 0x5AFB, 0x11F6, 0x5B00, 0x3883, 0x5B09, - 0x062E, 0x5B0B, 0x11F8, 0x5B0C, 0x11F7, 0x5B16, 0x11F9, 0x5B19, 0x3884, - 0x5B22, 0x09D6, 0x5B25, 0x3885, 0x5B2A, 0x11FC, 0x5B2C, 0x0BF8, 0x5B2D, - 0x3886, 0x5B30, 0x04E7, 0x5B32, 0x11FA, 0x5B36, 0x11FD, 0x5B3E, 0x11FE, - 0x5B40, 0x1201, 0x5B41, 0x3887, 0x5B43, 0x11FF, 0x5B45, 0x1200, 0x5B50, - 0x08A0, 0x5B51, 0x1202, 0x5B54, 0x07B8, 0x5B55, 0x1203, 0x5B56, 0x20F0, - 0x5B57, 0x08C8, 0x5B58, 0x0B18, 0x5B5A, 0x1204, 0x5B5B, 0x1205, 0x5B5C, - 0x08A8, 0x5B5D, 0x07B9, 0x5B5F, 0x0EDE, 0x5B63, 0x0642, 0x5B64, 0x077D, - 0x5B65, 0x1206, 0x5B66, 0x05B6, 0x5B69, 0x1207, 0x5B6B, 0x0B19, 0x5B70, - 0x1208, 0x5B71, 0x1230, 0x5B73, 0x1209, 0x5B75, 0x120A, 0x5B78, 0x120B, - 0x5B7A, 0x120D, 0x5B7C, 0x3888, 0x5B7E, 0x3889, 0x5B7F, 0x388A, 0x5B80, - 0x120E, 0x5B82, 0x3610, 0x5B83, 0x120F, 0x5B85, 0x0B50, 0x5B87, 0x04C9, - 0x5B88, 0x0915, 0x5B89, 0x0486, 0x5B8A, 0x388B, 0x5B8B, 0x0AD9, 0x5B8C, - 0x05EC, 0x5B8D, 0x08E1, 0x5B8F, 0x07BA, 0x5B95, 0x0C60, 0x5B97, 0x092B, - 0x5B98, 0x05ED, 0x5B99, 0x0BA6, 0x5B9A, 0x0C06, 0x5B9B, 0x047C, 0x5B9C, - 0x0653, 0x5B9D, 0x0E45, 0x5B9F, 0x08EE, 0x5BA2, 0x066C, 0x5BA3, 0x0A8F, - 0x5BA4, 0x08E8, 0x5BA5, 0x0F12, 0x5BA6, 0x1210, 0x5BAE, 0x0676, 0x5BB0, - 0x083B, 0x5BB3, 0x0590, 0x5BB4, 0x0505, 0x5BB5, 0x0994, 0x5BB6, 0x0548, - 0x5BB8, 0x1211, 0x5BB9, 0x0F30, 0x5BBF, 0x0953, 0x5BC0, 0x20F1, 0x5BC2, - 0x0910, 0x5BC3, 0x1212, 0x5BC4, 0x062F, 0x5BC5, 0x0CAA, 0x5BC6, 0x0EB5, - 0x5BC7, 0x1213, 0x5BC9, 0x1214, 0x5BCC, 0x0DCB, 0x5BD0, 0x1216, 0x5BD2, - 0x05E4, 0x5BD3, 0x06EF, 0x5BD4, 0x1215, 0x5BD8, 0x20F3, 0x5BDB, 0x05EE, - 0x5BDD, 0x09F8, 0x5BDE, 0x121A, 0x5BDF, 0x086F, 0x5BE1, 0x0549, 0x5BE2, - 0x1219, 0x5BE4, 0x1217, 0x5BE5, 0x121B, 0x5BE6, 0x1218, 0x5BE7, 0x0CE1, - 0x5BE8, 0x148E, 0x5BE9, 0x09F9, 0x5BEB, 0x121C, 0x5BEC, 0x20F4, 0x5BEE, - 0x0F88, 0x5BF0, 0x121D, 0x5BF3, 0x121F, 0x5BF5, 0x0BBC, 0x5BF6, 0x121E, - 0x5BF8, 0x0A47, 0x5BFA, 0x08C9, 0x5BFE, 0x0B30, 0x5BFF, 0x0923, 0x5C01, - 0x0DE7, 0x5C02, 0x0A90, 0x5C04, 0x08F9, 0x5C05, 0x1220, 0x5C06, 0x0995, - 0x5C07, 0x1221, 0x5C08, 0x1222, 0x5C09, 0x0497, 0x5C0A, 0x0B1A, 0x5C0B, - 0x0A18, 0x5C0D, 0x1223, 0x5C0E, 0x0C8B, 0x5C0F, 0x0996, 0x5C11, 0x0997, - 0x5C13, 0x1224, 0x5C14, 0x372A, 0x5C16, 0x0A91, 0x5C19, 0x360B, 0x5C1A, - 0x0998, 0x5C1E, 0x20F5, 0x5C20, 0x1225, 0x5C22, 0x1226, 0x5C23, 0x388C, - 0x5C24, 0x0EEC, 0x5C28, 0x1227, 0x5C2B, 0x388D, 0x5C2D, 0x06BE, 0x5C30, - 0x388E, 0x5C31, 0x092C, 0x5C38, 0x1228, 0x5C39, 0x1229, 0x5C3A, 0x0908, - 0x5C3B, 0x09F2, 0x5C3C, 0x0CCC, 0x5C3D, 0x0A1A, 0x5C3E, 0x0D8C, 0x5C3F, - 0x0CD8, 0x5C40, 0x06C1, 0x5C41, 0x122A, 0x5C45, 0x0689, 0x5C46, 0x122B, - 0x5C48, 0x06F6, 0x5C4A, 0x0CA7, 0x5C4B, 0x0530, 0x5C4D, 0x08A1, 0x5C4E, - 0x122C, 0x5C4F, 0x122F, 0x5C50, 0x122E, 0x5C51, 0x06F5, 0x5C53, 0x122D, - 0x5C55, 0x0C32, 0x5C5B, 0x1E92, 0x5C5E, 0x0B10, 0x5C60, 0x0C45, 0x5C61, - 0x08F4, 0x5C62, 0x1E0D, 0x5C63, 0x388F, 0x5C64, 0x0ADA, 0x5C65, 0x0F64, - 0x5C69, 0x3890, 0x5C6C, 0x1231, 0x5C6E, 0x1232, 0x5C6F, 0x0CAE, 0x5C71, - 0x0881, 0x5C76, 0x1234, 0x5C79, 0x1235, 0x5C7C, 0x3891, 0x5C8C, 0x1236, - 0x5C90, 0x0630, 0x5C91, 0x1237, 0x5C94, 0x1238, 0x5CA1, 0x052C, 0x5CA6, - 0x20F6, 0x5CA8, 0x0ABD, 0x5CA9, 0x0620, 0x5CAB, 0x123A, 0x5CAC, 0x0EB4, - 0x5CB1, 0x0B32, 0x5CB3, 0x05B7, 0x5CB6, 0x123C, 0x5CB7, 0x123E, 0x5CB8, - 0x061B, 0x5CBA, 0x20F7, 0x5CBB, 0x123B, 0x5CBC, 0x123D, 0x5CBE, 0x1240, - 0x5CC5, 0x123F, 0x5CC7, 0x1241, 0x5CCB, 0x3892, 0x5CD2, 0x3893, 0x5CD9, - 0x1242, 0x5CE0, 0x0C95, 0x5CE1, 0x06A6, 0x5CE6, 0x372C, 0x5CE8, 0x0565, - 0x5CE9, 0x1243, 0x5CEA, 0x1248, 0x5CED, 0x1246, 0x5CEF, 0x0E47, 0x5CF0, - 0x0E46, 0x5CF4, 0x3894, 0x5CF5, 0x20F8, 0x5CF6, 0x0C61, 0x5CFA, 0x1245, - 0x5CFB, 0x095E, 0x5CFD, 0x1244, 0x5D07, 0x0A38, 0x5D0B, 0x1249, 0x5D0E, - 0x085A, 0x5D11, 0x124F, 0x5D14, 0x1250, 0x5D15, 0x124A, 0x5D16, 0x0591, - 0x5D17, 0x124B, 0x5D18, 0x1254, 0x5D19, 0x1253, 0x5D1A, 0x1252, 0x5D1B, - 0x124E, 0x5D1F, 0x124D, 0x5D22, 0x1251, 0x5D24, 0x3895, 0x5D26, 0x3896, - 0x5D27, 0x20F9, 0x5D29, 0x0E48, 0x5D42, 0x20FC, 0x5D43, 0x3897, 0x5D46, - 0x3898, 0x5D4A, 0x3899, 0x5D4B, 0x1258, 0x5D4C, 0x1255, 0x5D4E, 0x1257, - 0x5D50, 0x0F5C, 0x5D52, 0x1256, 0x5D53, 0x20FA, 0x5D5C, 0x124C, 0x5D69, - 0x0A39, 0x5D6C, 0x1259, 0x5D6D, 0x20FD, 0x5D6F, 0x0827, 0x5D73, 0x125A, - 0x5D76, 0x125B, 0x5D82, 0x125E, 0x5D84, 0x125D, 0x5D87, 0x125C, 0x5D8B, - 0x0C62, 0x5D8C, 0x1247, 0x5D90, 0x1264, 0x5D92, 0x389A, 0x5D94, 0x389B, - 0x5D99, 0x389C, 0x5D9D, 0x1260, 0x5DA0, 0x389D, 0x5DA2, 0x125F, 0x5DAC, - 0x1261, 0x5DAE, 0x1262, 0x5DB2, 0x3BA5, 0x5DB7, 0x1265, 0x5DB8, 0x20FE, - 0x5DB9, 0x20FF, 0x5DBA, 0x0FAE, 0x5DBC, 0x1266, 0x5DBD, 0x1263, 0x5DC9, - 0x1267, 0x5DCC, 0x061C, 0x5DCD, 0x1268, 0x5DD0, 0x2100, 0x5DD2, 0x126A, - 0x5DD3, 0x1269, 0x5DD6, 0x126B, 0x5DD8, 0x389E, 0x5DDB, 0x126C, 0x5DDD, - 0x0A92, 0x5DDE, 0x092D, 0x5DE0, 0x389F, 0x5DE1, 0x096E, 0x5DE2, 0x3432, - 0x5DE3, 0x0AE5, 0x5DE5, 0x07BB, 0x5DE6, 0x0828, 0x5DE7, 0x07BC, 0x5DE8, - 0x068A, 0x5DEB, 0x126D, 0x5DEE, 0x0829, 0x5DF1, 0x077E, 0x5DF2, 0x126E, - 0x5DF3, 0x0EB2, 0x5DF4, 0x0CF9, 0x5DF5, 0x126F, 0x5DF7, 0x07BD, 0x5DF8, - 0x38A0, 0x5DFB, 0x05E8, 0x5DFD, 0x0B65, 0x5DFE, 0x06CA, 0x5DFF, 0x35E2, - 0x5E00, 0x38A1, 0x5E02, 0x08A2, 0x5E03, 0x0DCD, 0x5E06, 0x0D55, 0x5E0B, - 0x1270, 0x5E0C, 0x0631, 0x5E11, 0x1273, 0x5E12, 0x38A2, 0x5E14, 0x38A3, - 0x5E15, 0x38A4, 0x5E16, 0x0BBD, 0x5E18, 0x38A5, 0x5E19, 0x1272, 0x5E1A, - 0x1271, 0x5E1B, 0x1274, 0x5E1D, 0x0C07, 0x5E25, 0x0A29, 0x5E2B, 0x08A3, - 0x5E2D, 0x0A6E, 0x5E2E, 0x38A6, 0x5E2F, 0x0B33, 0x5E30, 0x063C, 0x5E33, - 0x0BBE, 0x5E36, 0x1275, 0x5E37, 0x1276, 0x5E38, 0x09D7, 0x5E3D, 0x0E67, - 0x5E40, 0x1279, 0x5E43, 0x1278, 0x5E44, 0x1277, 0x5E45, 0x0DEF, 0x5E47, - 0x1280, 0x5E4C, 0x0E88, 0x5E4E, 0x127A, 0x5E54, 0x127C, 0x5E55, 0x0E99, - 0x5E57, 0x127B, 0x5E58, 0x38A7, 0x5E5F, 0x127D, 0x5E61, 0x0D3C, 0x5E62, - 0x127E, 0x5E63, 0x0E0E, 0x5E64, 0x127F, 0x5E6B, 0x38A8, 0x5E6C, 0x38A9, - 0x5E72, 0x05EF, 0x5E73, 0x0E0F, 0x5E74, 0x0CE5, 0x5E75, 0x1281, 0x5E76, - 0x1282, 0x5E78, 0x07BE, 0x5E79, 0x05F0, 0x5E7A, 0x1283, 0x5E7B, 0x076C, - 0x5E7C, 0x0F2E, 0x5E7D, 0x0F13, 0x5E7E, 0x0632, 0x5E7F, 0x1285, 0x5E81, - 0x0BBF, 0x5E83, 0x07BF, 0x5E84, 0x0999, 0x5E87, 0x0D73, 0x5E8A, 0x099A, - 0x5E8F, 0x0982, 0x5E95, 0x0C08, 0x5E96, 0x0E49, 0x5E97, 0x0C33, 0x5E99, - 0x36B0, 0x5E9A, 0x07C0, 0x5E9C, 0x0DCE, 0x5EA0, 0x1286, 0x5EA6, 0x0C53, - 0x5EA7, 0x0832, 0x5EA8, 0x38AA, 0x5EAA, 0x38AB, 0x5EAB, 0x077F, 0x5EAD, - 0x0C09, 0x5EB5, 0x0487, 0x5EB6, 0x0978, 0x5EB7, 0x07C1, 0x5EB8, 0x0F31, - 0x5EBE, 0x38AC, 0x5EBF, 0x38AD, 0x5EC1, 0x1287, 0x5EC2, 0x1288, 0x5EC3, - 0x0D07, 0x5EC8, 0x1289, 0x5EC9, 0x0FBF, 0x5ECA, 0x0FD3, 0x5ECB, 0x38AE, - 0x5ECF, 0x128B, 0x5ED0, 0x128A, 0x5ED2, 0x38AF, 0x5ED3, 0x05A5, 0x5ED6, - 0x128C, 0x5EDA, 0x128F, 0x5EDB, 0x1290, 0x5EDD, 0x128E, 0x5EDF, 0x0DB2, - 0x5EE0, 0x099B, 0x5EE1, 0x1292, 0x5EE2, 0x1291, 0x5EE3, 0x128D, 0x5EE8, - 0x1293, 0x5EE9, 0x1294, 0x5EEC, 0x1295, 0x5EF0, 0x1298, 0x5EF1, 0x1296, - 0x5EF3, 0x1297, 0x5EF4, 0x1299, 0x5EF6, 0x0506, 0x5EF7, 0x0C0A, 0x5EF8, - 0x129A, 0x5EFA, 0x0750, 0x5EFB, 0x0576, 0x5EFC, 0x0CEC, 0x5EFE, 0x129B, - 0x5EFF, 0x0CD3, 0x5F01, 0x0E2B, 0x5F03, 0x129C, 0x5F04, 0x0FD4, 0x5F07, - 0x38B0, 0x5F09, 0x129D, 0x5F0A, 0x0E10, 0x5F0B, 0x12A0, 0x5F0C, 0x0FFA, - 0x5F0D, 0x100A, 0x5F0E, 0x38B1, 0x5F0F, 0x08DC, 0x5F10, 0x0CCD, 0x5F11, - 0x12A1, 0x5F13, 0x0677, 0x5F14, 0x0BC0, 0x5F15, 0x04BE, 0x5F16, 0x12A2, - 0x5F17, 0x0DF6, 0x5F18, 0x07C2, 0x5F1B, 0x0B8E, 0x5F1C, 0x38B2, 0x5F1D, - 0x38B3, 0x5F1F, 0x0C0B, 0x5F21, 0x2101, 0x5F22, 0x38B4, 0x5F25, 0x0EFB, - 0x5F26, 0x076D, 0x5F27, 0x0780, 0x5F28, 0x38B5, 0x5F29, 0x12A3, 0x5F2D, - 0x12A4, 0x5F2F, 0x12AA, 0x5F31, 0x0911, 0x5F34, 0x2102, 0x5F35, 0x0BC1, - 0x5F36, 0x38B6, 0x5F37, 0x06A7, 0x5F38, 0x12A5, 0x5F3A, 0x3598, 0x5F3B, - 0x38B7, 0x5F3C, 0x0D9D, 0x5F3E, 0x0B84, 0x5F40, 0x38B8, 0x5F41, 0x12A6, - 0x5F45, 0x20B2, 0x5F48, 0x12A7, 0x5F4A, 0x06A8, 0x5F4C, 0x12A8, 0x5F4E, - 0x12A9, 0x5F50, 0x38B9, 0x5F51, 0x12AB, 0x5F53, 0x0C70, 0x5F56, 0x12AC, - 0x5F57, 0x12AD, 0x5F58, 0x38BA, 0x5F59, 0x12AE, 0x5F5C, 0x129F, 0x5F5D, - 0x129E, 0x5F61, 0x12AF, 0x5F62, 0x0717, 0x5F64, 0x38BB, 0x5F65, 0x36AC, - 0x5F66, 0x0D99, 0x5F67, 0x2103, 0x5F69, 0x083C, 0x5F6A, 0x0DA9, 0x5F6B, - 0x0BC2, 0x5F6C, 0x0DBD, 0x5F6D, 0x12B0, 0x5F70, 0x099C, 0x5F71, 0x04E8, - 0x5F73, 0x12B1, 0x5F77, 0x12B2, 0x5F79, 0x0EFE, 0x5F7C, 0x0D74, 0x5F7F, - 0x12B5, 0x5F80, 0x051F, 0x5F81, 0x0A50, 0x5F82, 0x12B4, 0x5F83, 0x12B3, - 0x5F84, 0x0718, 0x5F85, 0x0B34, 0x5F87, 0x12B9, 0x5F88, 0x12B7, 0x5F89, - 0x38BC, 0x5F8A, 0x12B6, 0x5F8B, 0x0F6F, 0x5F8C, 0x0799, 0x5F90, 0x0983, - 0x5F91, 0x12B8, 0x5F92, 0x0C46, 0x5F93, 0x0948, 0x5F97, 0x0C98, 0x5F98, - 0x12BC, 0x5F99, 0x12BB, 0x5F9C, 0x38BD, 0x5F9E, 0x12BA, 0x5FA0, 0x12BD, - 0x5FA1, 0x079A, 0x5FA4, 0x38BF, 0x5FA7, 0x38BE, 0x5FA8, 0x12BE, 0x5FA9, - 0x0DEE, 0x5FAA, 0x0965, 0x5FAD, 0x12BF, 0x5FAE, 0x0D8D, 0x5FAF, 0x38C0, - 0x5FB3, 0x0C99, 0x5FB4, 0x0BC3, 0x5FB5, 0x3438, 0x5FB7, 0x2104, 0x5FB8, - 0x38C1, 0x5FB9, 0x0C2A, 0x5FBC, 0x12C0, 0x5FBD, 0x0645, 0x5FC3, 0x09FA, - 0x5FC4, 0x38C2, 0x5FC5, 0x0D9E, 0x5FC9, 0x38C3, 0x5FCC, 0x0633, 0x5FCD, - 0x0CDC, 0x5FD6, 0x12C1, 0x5FD7, 0x08A4, 0x5FD8, 0x0E68, 0x5FD9, 0x0E69, - 0x5FDC, 0x0520, 0x5FDD, 0x12C6, 0x5FDE, 0x2105, 0x5FE0, 0x0BA7, 0x5FE1, - 0x38C4, 0x5FE4, 0x12C3, 0x5FE9, 0x38C5, 0x5FEB, 0x0577, 0x5FED, 0x38C6, - 0x5FF0, 0x12F6, 0x5FF1, 0x12C5, 0x5FF5, 0x0CE6, 0x5FF8, 0x12C4, 0x5FFB, - 0x12C2, 0x5FFC, 0x38C7, 0x5FFD, 0x080C, 0x5FFF, 0x12C8, 0x600E, 0x12CE, - 0x600F, 0x12D4, 0x6010, 0x12CC, 0x6012, 0x0C56, 0x6015, 0x12D1, 0x6016, - 0x0DCF, 0x6017, 0x38C8, 0x6019, 0x12CB, 0x601A, 0x38C9, 0x601B, 0x12D0, - 0x601C, 0x0FAF, 0x601D, 0x08A5, 0x6020, 0x0B35, 0x6021, 0x12C9, 0x6025, - 0x0678, 0x6026, 0x12D3, 0x6027, 0x0A51, 0x6028, 0x0507, 0x6029, 0x12CD, - 0x602A, 0x0578, 0x602B, 0x12D2, 0x602F, 0x06A9, 0x6031, 0x12CF, 0x6033, - 0x38CA, 0x603A, 0x12D5, 0x6041, 0x12D7, 0x6042, 0x12E1, 0x6043, 0x12DF, - 0x6046, 0x12DC, 0x604A, 0x12DB, 0x604B, 0x0FC0, 0x604D, 0x12DD, 0x6050, - 0x06AA, 0x6052, 0x07C3, 0x6055, 0x0984, 0x6059, 0x12E4, 0x605A, 0x12D6, - 0x605D, 0x2106, 0x605F, 0x12DA, 0x6060, 0x12CA, 0x6061, 0x38CB, 0x6062, - 0x057A, 0x6063, 0x12DE, 0x6064, 0x12E0, 0x6065, 0x0B8F, 0x6068, 0x0818, - 0x6069, 0x0538, 0x606A, 0x12D8, 0x606B, 0x12E3, 0x606C, 0x12E2, 0x606D, - 0x06AB, 0x606F, 0x0B09, 0x6070, 0x05C4, 0x6075, 0x0719, 0x6077, 0x12D9, - 0x607F, 0x38CC, 0x6081, 0x12E5, 0x6083, 0x12E8, 0x6084, 0x12EA, 0x6085, - 0x2107, 0x6089, 0x08E9, 0x608A, 0x2108, 0x608B, 0x12F0, 0x608C, 0x0C0C, - 0x608D, 0x12E6, 0x6092, 0x12EE, 0x6094, 0x0579, 0x6096, 0x12EC, 0x6097, - 0x12ED, 0x609A, 0x12E9, 0x609B, 0x12EB, 0x609E, 0x38CD, 0x609F, 0x079B, - 0x60A0, 0x0F14, 0x60A3, 0x05F1, 0x60A4, 0x38CE, 0x60A6, 0x04FB, 0x60A7, - 0x12EF, 0x60A9, 0x0CF0, 0x60AA, 0x0471, 0x60B0, 0x38CF, 0x60B2, 0x0D75, - 0x60B3, 0x12C7, 0x60B4, 0x12F5, 0x60B5, 0x12F9, 0x60B6, 0x0EF1, 0x60B8, - 0x12F2, 0x60BC, 0x0C63, 0x60BD, 0x12F7, 0x60C5, 0x09D8, 0x60C6, 0x12F8, - 0x60C7, 0x0CAF, 0x60CB, 0x38D0, 0x60D1, 0x0FED, 0x60D3, 0x12F4, 0x60D5, - 0x210A, 0x60D8, 0x12FA, 0x60DA, 0x080D, 0x60DB, 0x38D1, 0x60DC, 0x0A6F, - 0x60DE, 0x2109, 0x60DF, 0x0498, 0x60E0, 0x12F3, 0x60E1, 0x12F1, 0x60E3, - 0x0ADC, 0x60E7, 0x12E7, 0x60E8, 0x0882, 0x60F0, 0x0B26, 0x60F1, 0x1306, - 0x60F2, 0x210C, 0x60F3, 0x0ADD, 0x60F4, 0x1301, 0x60F6, 0x12FE, 0x60F7, - 0x12FF, 0x60F8, 0x38D2, 0x60F9, 0x0912, 0x60FA, 0x1302, 0x60FB, 0x1305, - 0x6100, 0x1300, 0x6101, 0x092F, 0x6103, 0x1303, 0x6106, 0x12FD, 0x6108, - 0x0F08, 0x6109, 0x0F07, 0x610D, 0x1307, 0x610E, 0x1308, 0x610F, 0x0499, - 0x6111, 0x210D, 0x6112, 0x38D3, 0x6113, 0x38D4, 0x6114, 0x38D5, 0x6115, - 0x12FC, 0x611A, 0x06EA, 0x611B, 0x046A, 0x611C, 0x38D6, 0x611F, 0x05F2, - 0x6120, 0x210B, 0x6121, 0x1304, 0x6127, 0x130C, 0x6128, 0x130B, 0x612C, - 0x1310, 0x6130, 0x210F, 0x6134, 0x1311, 0x6137, 0x210E, 0x613C, 0x130F, - 0x613D, 0x1312, 0x613E, 0x130A, 0x613F, 0x130E, 0x6142, 0x1313, 0x6144, - 0x1314, 0x6147, 0x1309, 0x6148, 0x08CA, 0x614A, 0x130D, 0x614B, 0x0B36, - 0x614C, 0x07C4, 0x614D, 0x12FB, 0x614E, 0x09FB, 0x6153, 0x1321, 0x6155, - 0x0E39, 0x6158, 0x1317, 0x6159, 0x1318, 0x615A, 0x1319, 0x615D, 0x1320, - 0x615F, 0x131F, 0x6162, 0x0EAB, 0x6163, 0x05F3, 0x6165, 0x131D, 0x6167, - 0x071B, 0x6168, 0x0592, 0x616B, 0x131A, 0x616E, 0x0F80, 0x616F, 0x131C, - 0x6170, 0x049A, 0x6171, 0x131E, 0x6173, 0x1315, 0x6174, 0x131B, 0x6175, - 0x1322, 0x6176, 0x071A, 0x6177, 0x1316, 0x617C, 0x38D7, 0x617E, 0x0F47, - 0x6182, 0x0F15, 0x6187, 0x1325, 0x618A, 0x1329, 0x618D, 0x38D8, 0x618E, - 0x0B00, 0x6190, 0x0FC1, 0x6191, 0x132A, 0x6194, 0x1327, 0x6196, 0x1324, - 0x6198, 0x2110, 0x6199, 0x1323, 0x619A, 0x1328, 0x619F, 0x38D9, 0x61A4, - 0x0E00, 0x61A7, 0x0C8C, 0x61A8, 0x38DA, 0x61A9, 0x071C, 0x61AB, 0x132B, - 0x61AC, 0x1326, 0x61AE, 0x132C, 0x61B2, 0x0751, 0x61B6, 0x0531, 0x61BA, - 0x1334, 0x61BE, 0x05F4, 0x61C2, 0x38DB, 0x61C3, 0x1332, 0x61C6, 0x1333, - 0x61C7, 0x0819, 0x61C8, 0x1331, 0x61C9, 0x132F, 0x61CA, 0x132E, 0x61CB, - 0x1335, 0x61CC, 0x132D, 0x61CD, 0x1337, 0x61D0, 0x057B, 0x61DF, 0x38DC, - 0x61E3, 0x1339, 0x61E6, 0x1338, 0x61F2, 0x0BC4, 0x61F4, 0x133C, 0x61F6, - 0x133A, 0x61F7, 0x1330, 0x61F8, 0x0752, 0x61FA, 0x133B, 0x61FC, 0x133F, - 0x61FD, 0x133E, 0x61FE, 0x1340, 0x61FF, 0x133D, 0x6200, 0x1341, 0x6208, - 0x1342, 0x6209, 0x1343, 0x620A, 0x0E3A, 0x620C, 0x1345, 0x620D, 0x1344, - 0x620E, 0x0949, 0x6210, 0x0A52, 0x6211, 0x0566, 0x6212, 0x057C, 0x6213, - 0x2111, 0x6214, 0x1346, 0x6215, 0x38DD, 0x6216, 0x0483, 0x621A, 0x0A70, - 0x621B, 0x1347, 0x621D, 0x1A64, 0x621E, 0x1348, 0x621F, 0x0737, 0x6221, - 0x1349, 0x6226, 0x0A93, 0x6229, 0x38DE, 0x622A, 0x134A, 0x622E, 0x134B, - 0x622F, 0x0654, 0x6230, 0x134C, 0x6232, 0x134D, 0x6233, 0x134E, 0x6234, - 0x0B37, 0x6236, 0x35BD, 0x6238, 0x0781, 0x623B, 0x0EED, 0x623E, 0x344E, - 0x623F, 0x0E6A, 0x6240, 0x0974, 0x6241, 0x134F, 0x6243, 0x38DF, 0x6246, - 0x38E0, 0x6247, 0x0A94, 0x6248, 0x1B1A, 0x6249, 0x0D76, 0x624B, 0x0916, - 0x624C, 0x38E1, 0x624D, 0x083D, 0x624E, 0x1350, 0x6251, 0x38E2, 0x6253, - 0x0B27, 0x6255, 0x0DF7, 0x6256, 0x38E3, 0x6258, 0x0B51, 0x625B, 0x1353, - 0x625E, 0x1351, 0x6260, 0x1354, 0x6263, 0x1352, 0x6268, 0x1355, 0x626E, - 0x0E01, 0x6271, 0x047B, 0x6276, 0x0DD0, 0x6279, 0x0D77, 0x627C, 0x1356, - 0x627E, 0x1359, 0x627F, 0x099D, 0x6280, 0x0655, 0x6282, 0x1357, 0x6283, - 0x135E, 0x6284, 0x099E, 0x6285, 0x35C5, 0x6289, 0x1358, 0x628A, 0x0CFA, - 0x6291, 0x0F48, 0x6292, 0x135A, 0x6293, 0x135B, 0x6294, 0x135F, 0x6295, - 0x0C64, 0x6296, 0x135C, 0x6297, 0x07C5, 0x6298, 0x0A82, 0x629B, 0x136D, - 0x629C, 0x0D48, 0x629E, 0x0B52, 0x62A6, 0x2112, 0x62AB, 0x0D78, 0x62AC, - 0x13B2, 0x62B1, 0x0E4A, 0x62B5, 0x0C0D, 0x62B9, 0x0EA3, 0x62BB, 0x1362, - 0x62BC, 0x0521, 0x62BD, 0x0BA8, 0x62C2, 0x136B, 0x62C4, 0x38E4, 0x62C5, - 0x0B72, 0x62C6, 0x1365, 0x62C7, 0x136C, 0x62C8, 0x1367, 0x62C9, 0x136E, - 0x62CA, 0x136A, 0x62CC, 0x1369, 0x62CD, 0x0D25, 0x62CF, 0x1363, 0x62D0, - 0x057D, 0x62D1, 0x1361, 0x62D2, 0x068B, 0x62D3, 0x0B53, 0x62D4, 0x135D, - 0x62D7, 0x1360, 0x62D8, 0x07C6, 0x62D9, 0x0A7F, 0x62DB, 0x099F, 0x62DC, - 0x1368, 0x62DD, 0x0D08, 0x62E0, 0x068C, 0x62E1, 0x05A6, 0x62EC, 0x05C5, - 0x62ED, 0x09E7, 0x62EE, 0x1370, 0x62EF, 0x1375, 0x62F1, 0x1371, 0x62F3, - 0x0753, 0x62F5, 0x1376, 0x62F6, 0x0870, 0x62F7, 0x07FB, 0x62FC, 0x38E5, - 0x62FE, 0x0930, 0x62FF, 0x1364, 0x6301, 0x08CB, 0x6302, 0x1373, 0x6307, - 0x08A6, 0x6308, 0x1374, 0x6309, 0x0488, 0x630A, 0x38E6, 0x630C, 0x136F, - 0x630D, 0x38E7, 0x6311, 0x0BC5, 0x6318, 0x38E8, 0x6319, 0x068D, 0x631B, - 0x3737, 0x631F, 0x06AC, 0x6327, 0x1372, 0x6328, 0x046B, 0x632B, 0x0833, - 0x632F, 0x09FC, 0x6339, 0x38E9, 0x633A, 0x0C0E, 0x633D, 0x0D68, 0x633E, - 0x1378, 0x633F, 0x0AE0, 0x6342, 0x38EA, 0x6343, 0x38EB, 0x6349, 0x0B0A, - 0x634C, 0x0879, 0x634D, 0x1379, 0x634F, 0x137B, 0x6350, 0x1377, 0x6355, - 0x0E31, 0x6357, 0x0BD9, 0x635C, 0x0ADE, 0x6365, 0x38EC, 0x6367, 0x0E4B, - 0x6368, 0x08FA, 0x6369, 0x1387, 0x636B, 0x1386, 0x636E, 0x0A3E, 0x6372, - 0x0754, 0x6374, 0x38ED, 0x6376, 0x1380, 0x6377, 0x09A1, 0x637A, 0x0CC0, - 0x637B, 0x0CE7, 0x637D, 0x38EE, 0x6380, 0x137E, 0x6383, 0x0ADF, 0x6384, - 0x38EF, 0x6387, 0x38F0, 0x6388, 0x0924, 0x6389, 0x1383, 0x638C, 0x09A0, - 0x638E, 0x137D, 0x638F, 0x1382, 0x6390, 0x38F1, 0x6392, 0x0D09, 0x6396, - 0x137C, 0x6398, 0x06F7, 0x639B, 0x05BB, 0x639E, 0x38F2, 0x639F, 0x1384, - 0x63A0, 0x0F73, 0x63A1, 0x083E, 0x63A2, 0x0B73, 0x63A3, 0x1381, 0x63A5, - 0x0A80, 0x63A7, 0x07C7, 0x63A8, 0x0A2A, 0x63A9, 0x0508, 0x63AA, 0x0ABE, - 0x63AB, 0x137F, 0x63AC, 0x065F, 0x63B2, 0x071D, 0x63B4, 0x0BEB, 0x63B5, - 0x1385, 0x63BB, 0x0AE1, 0x63BE, 0x1388, 0x63C0, 0x138A, 0x63C3, 0x0B17, - 0x63C4, 0x1390, 0x63C6, 0x138B, 0x63C9, 0x138D, 0x63CF, 0x0DB3, 0x63D0, - 0x0C0F, 0x63D1, 0x38F3, 0x63D2, 0x138E, 0x63D6, 0x0F16, 0x63DA, 0x0F32, - 0x63DB, 0x05F5, 0x63DC, 0x38F4, 0x63E1, 0x0472, 0x63E3, 0x138C, 0x63E9, - 0x1389, 0x63ED, 0x341C, 0x63EE, 0x0634, 0x63F4, 0x0509, 0x63F5, 0x2113, - 0x63F6, 0x138F, 0x63F7, 0x3644, 0x63FA, 0x0F33, 0x6406, 0x1393, 0x6409, - 0x38F5, 0x640D, 0x0B1B, 0x640F, 0x139A, 0x6410, 0x38F6, 0x6413, 0x1394, - 0x6414, 0x1E2C, 0x6416, 0x1391, 0x6417, 0x1398, 0x641C, 0x137A, 0x6422, - 0x38F7, 0x6426, 0x1395, 0x6428, 0x1399, 0x642C, 0x0D56, 0x642D, 0x0C65, - 0x6434, 0x1392, 0x6436, 0x1396, 0x643A, 0x071E, 0x643E, 0x0861, 0x6442, - 0x0A81, 0x644E, 0x139E, 0x6451, 0x1E43, 0x6454, 0x38F8, 0x6458, 0x0C20, - 0x645B, 0x38F9, 0x6460, 0x2114, 0x6467, 0x139B, 0x6469, 0x0E8E, 0x646D, - 0x38FA, 0x646F, 0x139C, 0x6476, 0x139D, 0x6478, 0x0EDA, 0x647A, 0x0A46, - 0x647B, 0x38FB, 0x6483, 0x0738, 0x6488, 0x13A4, 0x6492, 0x0883, 0x6493, - 0x13A1, 0x6495, 0x13A0, 0x649A, 0x0CE8, 0x649D, 0x2115, 0x649E, 0x0C8D, - 0x64A4, 0x0C2B, 0x64A5, 0x13A2, 0x64A9, 0x13A3, 0x64AB, 0x0DE1, 0x64AD, - 0x0CFB, 0x64AE, 0x0871, 0x64B0, 0x0A95, 0x64B2, 0x0E7E, 0x64B9, 0x05A7, - 0x64BB, 0x13AA, 0x64BC, 0x13A5, 0x64BE, 0x38FC, 0x64BF, 0x38FD, 0x64C1, - 0x0F34, 0x64C2, 0x13AC, 0x64C5, 0x13A8, 0x64C7, 0x13A9, 0x64CA, 0x341D, - 0x64CD, 0x0AE2, 0x64CE, 0x2116, 0x64D2, 0x13A7, 0x64D4, 0x1366, 0x64D8, - 0x13AB, 0x64DA, 0x13A6, 0x64E0, 0x13B0, 0x64E1, 0x13B1, 0x64E2, 0x0C21, - 0x64E3, 0x13B3, 0x64E5, 0x38FE, 0x64E6, 0x0872, 0x64E7, 0x13AE, 0x64EC, - 0x0656, 0x64EF, 0x13B4, 0x64F1, 0x13AD, 0x64F2, 0x13B8, 0x64F4, 0x13B7, - 0x64F6, 0x13B6, 0x64F7, 0x38FF, 0x64FA, 0x13B9, 0x64FB, 0x3900, 0x64FD, - 0x13BB, 0x64FE, 0x09D9, 0x6500, 0x13BA, 0x6504, 0x3901, 0x6505, 0x13BE, - 0x6516, 0x3902, 0x6518, 0x13BC, 0x6519, 0x3903, 0x651C, 0x13BD, 0x651D, - 0x1397, 0x6522, 0x1E97, 0x6523, 0x13C0, 0x6524, 0x13BF, 0x652A, 0x139F, - 0x652B, 0x13C1, 0x652C, 0x13B5, 0x652F, 0x08A7, 0x6534, 0x13C2, 0x6535, - 0x13C3, 0x6536, 0x13C5, 0x6537, 0x13C4, 0x6538, 0x13C6, 0x6539, 0x057E, - 0x653B, 0x07C8, 0x653E, 0x0E4C, 0x653F, 0x0A53, 0x6545, 0x0782, 0x6547, - 0x3904, 0x6548, 0x13C8, 0x654D, 0x13CB, 0x654E, 0x2117, 0x654F, 0x0DC4, - 0x6551, 0x0679, 0x6555, 0x13CA, 0x6556, 0x13C9, 0x6557, 0x0D0A, 0x6558, - 0x13CC, 0x6559, 0x06AD, 0x655D, 0x13CE, 0x655E, 0x13CD, 0x6562, 0x05F6, - 0x6563, 0x0884, 0x6566, 0x0CB0, 0x6567, 0x3905, 0x656C, 0x071F, 0x6570, - 0x0A3A, 0x6572, 0x13CF, 0x6574, 0x0A54, 0x6575, 0x0C22, 0x6577, 0x0DD1, - 0x6578, 0x13D0, 0x6581, 0x3906, 0x6582, 0x13D1, 0x6583, 0x13D2, 0x6585, - 0x3907, 0x6587, 0x0E08, 0x6588, 0x120C, 0x6589, 0x0A6A, 0x658C, 0x0DBE, - 0x658E, 0x0848, 0x6590, 0x0D79, 0x6591, 0x0D57, 0x6597, 0x0C47, 0x6599, - 0x0F89, 0x659B, 0x13D4, 0x659C, 0x08FC, 0x659F, 0x13D5, 0x65A1, 0x047A, - 0x65A4, 0x06CC, 0x65A5, 0x0A71, 0x65A7, 0x0DD2, 0x65AB, 0x13D6, 0x65AC, - 0x0890, 0x65AD, 0x0B85, 0x65AF, 0x08A9, 0x65B0, 0x09FD, 0x65B7, 0x13D7, - 0x65B9, 0x0E4D, 0x65BC, 0x0519, 0x65BD, 0x08AA, 0x65C1, 0x13DA, 0x65C2, - 0x3908, 0x65C3, 0x13D8, 0x65C4, 0x13DB, 0x65C5, 0x0F81, 0x65C6, 0x13D9, - 0x65CB, 0x0A9F, 0x65CC, 0x13DC, 0x65CF, 0x0B12, 0x65D2, 0x13DD, 0x65D7, - 0x0636, 0x65D9, 0x13DF, 0x65DB, 0x13DE, 0x65E0, 0x13E0, 0x65E1, 0x13E1, - 0x65E2, 0x0637, 0x65E3, 0x3585, 0x65E5, 0x0CD4, 0x65E6, 0x0B74, 0x65E7, - 0x0686, 0x65E8, 0x08AB, 0x65E9, 0x0AE3, 0x65EC, 0x0966, 0x65ED, 0x0474, - 0x65F0, 0x3909, 0x65F1, 0x13E2, 0x65F2, 0x390A, 0x65FA, 0x0522, 0x65FB, - 0x13E6, 0x6600, 0x2118, 0x6602, 0x07C9, 0x6603, 0x13E5, 0x6606, 0x081B, - 0x6607, 0x09A2, 0x6609, 0x211A, 0x660A, 0x13E4, 0x660C, 0x09A3, 0x660E, - 0x0ECC, 0x660F, 0x081A, 0x6613, 0x049B, 0x6614, 0x0A72, 0x6615, 0x2119, - 0x661C, 0x13EB, 0x661E, 0x211C, 0x661F, 0x0A55, 0x6620, 0x04E9, 0x6624, - 0x211D, 0x6625, 0x095F, 0x6627, 0x0E94, 0x6628, 0x0862, 0x662C, 0x390B, - 0x662D, 0x09A4, 0x662E, 0x211B, 0x662F, 0x0A4B, 0x6631, 0x20AE, 0x6634, - 0x13EA, 0x6635, 0x13E8, 0x6636, 0x13E9, 0x663B, 0x1E00, 0x663C, 0x0BA9, - 0x663F, 0x1409, 0x6641, 0x13EF, 0x6642, 0x08CC, 0x6643, 0x07CA, 0x6644, - 0x13ED, 0x6649, 0x13EE, 0x664B, 0x09FE, 0x664C, 0x390C, 0x664F, 0x13EC, - 0x6652, 0x087D, 0x6657, 0x211F, 0x6659, 0x2120, 0x665B, 0x390D, 0x665C, - 0x390E, 0x665D, 0x13F1, 0x665E, 0x13F0, 0x665F, 0x13F5, 0x6661, 0x390F, - 0x6662, 0x13F6, 0x6663, 0x373A, 0x6664, 0x13F2, 0x6665, 0x211E, 0x6666, - 0x0580, 0x6667, 0x13F3, 0x6668, 0x13F4, 0x6669, 0x0D69, 0x666B, 0x3910, - 0x666E, 0x0DD3, 0x666F, 0x0720, 0x6670, 0x13F7, 0x6673, 0x2122, 0x6674, - 0x0A56, 0x6676, 0x09A5, 0x6677, 0x3911, 0x667A, 0x0B90, 0x6681, 0x06BF, - 0x6683, 0x13F8, 0x6684, 0x13FC, 0x6687, 0x054B, 0x6688, 0x13F9, 0x6689, - 0x13FB, 0x668E, 0x13FA, 0x6691, 0x0975, 0x6696, 0x0B86, 0x6697, 0x0489, - 0x6698, 0x13FD, 0x6699, 0x2123, 0x669D, 0x13FE, 0x66A0, 0x2124, 0x66A2, - 0x0BC6, 0x66A4, 0x3912, 0x66A6, 0x0FB9, 0x66AB, 0x0891, 0x66AE, 0x0E3B, - 0x66B2, 0x2125, 0x66B4, 0x0E6B, 0x66B8, 0x1405, 0x66B9, 0x1400, 0x66BC, - 0x1403, 0x66BE, 0x1402, 0x66BF, 0x2126, 0x66C1, 0x13FF, 0x66C4, 0x1404, - 0x66C6, 0x3455, 0x66C7, 0x0CB6, 0x66C8, 0x3913, 0x66C9, 0x1401, 0x66D6, - 0x1406, 0x66D9, 0x0976, 0x66DA, 0x1407, 0x66DC, 0x0F35, 0x66DD, 0x0D2E, - 0x66E0, 0x1408, 0x66E6, 0x140A, 0x66E9, 0x140B, 0x66EC, 0x3914, 0x66F0, - 0x140C, 0x66F2, 0x06C2, 0x66F3, 0x04EA, 0x66F4, 0x07CB, 0x66F5, 0x140D, - 0x66F7, 0x140E, 0x66F8, 0x097B, 0x66F9, 0x0AE4, 0x66FA, 0x2127, 0x66FB, - 0x20B1, 0x66FC, 0x10ED, 0x66FD, 0x0AC0, 0x66FE, 0x0ABF, 0x66FF, 0x0B38, - 0x6700, 0x0837, 0x6703, 0x104B, 0x6705, 0x3915, 0x6708, 0x0744, 0x6709, - 0x0F17, 0x670B, 0x0E4E, 0x670D, 0x0DF0, 0x670E, 0x2128, 0x670F, 0x140F, - 0x6713, 0x3916, 0x6714, 0x0863, 0x6715, 0x0BDB, 0x6716, 0x1410, 0x6717, - 0x0FD5, 0x671B, 0x0E6C, 0x671D, 0x0BC7, 0x671E, 0x1411, 0x671F, 0x0638, - 0x6726, 0x1412, 0x6727, 0x1413, 0x6728, 0x0EE6, 0x672A, 0x0EB0, 0x672B, - 0x0EA4, 0x672C, 0x0E8A, 0x672D, 0x0873, 0x672E, 0x1415, 0x6731, 0x0917, - 0x6733, 0x3917, 0x6734, 0x0E7F, 0x6736, 0x1417, 0x6737, 0x141A, 0x6738, - 0x1419, 0x673A, 0x0635, 0x673D, 0x067A, 0x673F, 0x1416, 0x6741, 0x1418, - 0x6743, 0x35B7, 0x6746, 0x141B, 0x6748, 0x3918, 0x6749, 0x0A3F, 0x674C, - 0x3919, 0x674E, 0x0F65, 0x674F, 0x048D, 0x6750, 0x0850, 0x6751, 0x0B1C, - 0x6753, 0x0909, 0x6756, 0x09DB, 0x6759, 0x141E, 0x675C, 0x0C48, 0x675E, - 0x141C, 0x675F, 0x0B0B, 0x6760, 0x141D, 0x6761, 0x09DA, 0x6762, 0x0EE9, - 0x6763, 0x141F, 0x6764, 0x1420, 0x6765, 0x0F52, 0x6766, 0x212A, 0x676A, - 0x1425, 0x676D, 0x07CC, 0x676E, 0x3571, 0x676F, 0x0D0B, 0x6770, 0x1422, - 0x6771, 0x0C66, 0x6772, 0x13E3, 0x6773, 0x13E7, 0x6775, 0x0669, 0x6776, - 0x391A, 0x6777, 0x0CFD, 0x677B, 0x391B, 0x677C, 0x1424, 0x677E, 0x09A6, - 0x677F, 0x0D58, 0x6785, 0x142A, 0x6787, 0x0D8E, 0x6789, 0x1421, 0x678B, - 0x1427, 0x678C, 0x1426, 0x6790, 0x0A73, 0x6795, 0x0E9B, 0x6797, 0x0F9B, - 0x679A, 0x0E95, 0x679C, 0x054C, 0x679D, 0x08AC, 0x67A0, 0x0FEE, 0x67A1, - 0x1429, 0x67A2, 0x0A3B, 0x67A6, 0x1428, 0x67A9, 0x1423, 0x67AF, 0x0783, - 0x67B0, 0x391C, 0x67B2, 0x391D, 0x67B3, 0x142F, 0x67B4, 0x142D, 0x67B6, - 0x054D, 0x67B7, 0x142B, 0x67B8, 0x1431, 0x67B9, 0x1437, 0x67BB, 0x212B, - 0x67C0, 0x212D, 0x67C1, 0x0B28, 0x67C4, 0x0E11, 0x67C6, 0x1439, 0x67CA, - 0x0D94, 0x67CE, 0x1438, 0x67CF, 0x0D26, 0x67D0, 0x0E6D, 0x67D1, 0x05F7, - 0x67D3, 0x0A9B, 0x67D4, 0x094A, 0x67D7, 0x391F, 0x67D8, 0x0BEF, 0x67D9, - 0x3920, 0x67DA, 0x0F18, 0x67DD, 0x1434, 0x67DE, 0x1433, 0x67E2, 0x1435, - 0x67E4, 0x1432, 0x67E7, 0x143A, 0x67E9, 0x1430, 0x67EC, 0x142E, 0x67EE, - 0x1436, 0x67EF, 0x142C, 0x67F0, 0x3921, 0x67F1, 0x0BAA, 0x67F3, 0x0F04, - 0x67F4, 0x08F2, 0x67F5, 0x0864, 0x67F9, 0x391E, 0x67FB, 0x082A, 0x67FE, - 0x0E9D, 0x67FF, 0x059F, 0x6801, 0x212E, 0x6802, 0x0BEA, 0x6803, 0x0CA2, - 0x6804, 0x04EB, 0x6805, 0x1E07, 0x6813, 0x0A96, 0x6816, 0x0A58, 0x6817, - 0x0700, 0x681E, 0x143C, 0x6821, 0x07CD, 0x6822, 0x05DA, 0x6829, 0x143E, - 0x682A, 0x05D2, 0x682B, 0x1444, 0x682C, 0x3922, 0x6830, 0x3923, 0x6831, - 0x3924, 0x6832, 0x1441, 0x6834, 0x0A97, 0x6838, 0x05A9, 0x6839, 0x081C, - 0x683C, 0x05A8, 0x683D, 0x083F, 0x6840, 0x143F, 0x6841, 0x073B, 0x6842, - 0x0721, 0x6843, 0x0C67, 0x6844, 0x212F, 0x6846, 0x143D, 0x6848, 0x048A, - 0x684D, 0x1440, 0x684E, 0x1442, 0x6850, 0x06C5, 0x6851, 0x0702, 0x6852, - 0x212C, 0x6853, 0x05F8, 0x6854, 0x0665, 0x6859, 0x1445, 0x685B, 0x3925, - 0x685C, 0x0869, 0x685D, 0x0E9F, 0x685F, 0x0885, 0x6863, 0x1446, 0x6867, - 0x0DA2, 0x6872, 0x3926, 0x6874, 0x1452, 0x6875, 0x3927, 0x6876, 0x0533, - 0x6877, 0x1447, 0x687A, 0x3928, 0x687E, 0x1458, 0x687F, 0x1448, 0x6881, - 0x0F8A, 0x6883, 0x144F, 0x6884, 0x3929, 0x6885, 0x0D15, 0x688D, 0x1457, - 0x688E, 0x1E9C, 0x688F, 0x144A, 0x6893, 0x0478, 0x6894, 0x144C, 0x6897, - 0x07CE, 0x689B, 0x144E, 0x689D, 0x144D, 0x689F, 0x1449, 0x68A0, 0x1454, - 0x68A2, 0x09A7, 0x68A5, 0x392A, 0x68A6, 0x11BE, 0x68A7, 0x079C, 0x68A8, - 0x0F66, 0x68AD, 0x144B, 0x68AF, 0x0C10, 0x68B0, 0x0581, 0x68B1, 0x081D, - 0x68B2, 0x392B, 0x68B3, 0x1443, 0x68B5, 0x1453, 0x68B6, 0x05BF, 0x68B9, - 0x1451, 0x68BA, 0x1455, 0x68BC, 0x0C68, 0x68C4, 0x063A, 0x68C6, 0x1473, - 0x68C8, 0x20AF, 0x68C9, 0x0ED5, 0x68CA, 0x145A, 0x68CB, 0x0639, 0x68CD, - 0x1461, 0x68CF, 0x2130, 0x68D0, 0x392C, 0x68D2, 0x0E6E, 0x68D4, 0x1462, - 0x68D5, 0x1464, 0x68D6, 0x392D, 0x68D7, 0x1468, 0x68D8, 0x145C, 0x68DA, - 0x0B68, 0x68DF, 0x0C69, 0x68E0, 0x146C, 0x68E1, 0x145F, 0x68E3, 0x1469, - 0x68E7, 0x1463, 0x68E8, 0x392E, 0x68ED, 0x392F, 0x68EE, 0x09FF, 0x68EF, - 0x146D, 0x68F0, 0x3930, 0x68F1, 0x3931, 0x68F2, 0x0A57, 0x68F9, 0x146B, - 0x68FA, 0x05F9, 0x68FC, 0x3932, 0x6900, 0x0FF6, 0x6901, 0x1459, 0x6904, - 0x1467, 0x6905, 0x049C, 0x6908, 0x145B, 0x690B, 0x0EC6, 0x690C, 0x1460, - 0x690D, 0x09E8, 0x690E, 0x0BE3, 0x690F, 0x1456, 0x6911, 0x3933, 0x6912, - 0x1466, 0x6913, 0x3934, 0x6919, 0x0A40, 0x691A, 0x1470, 0x691B, 0x05CF, - 0x691C, 0x0755, 0x6921, 0x1472, 0x6922, 0x145D, 0x6923, 0x1471, 0x6925, - 0x146A, 0x6926, 0x145E, 0x6928, 0x146E, 0x692A, 0x146F, 0x6930, 0x1480, - 0x6934, 0x0CA6, 0x6935, 0x3935, 0x6936, 0x1465, 0x6939, 0x147C, 0x693B, - 0x3936, 0x693D, 0x147E, 0x693F, 0x0BF4, 0x694A, 0x0F36, 0x6953, 0x0DE8, - 0x6954, 0x1479, 0x6955, 0x0B2A, 0x6957, 0x3937, 0x6959, 0x147F, 0x695A, - 0x0AC1, 0x695C, 0x1476, 0x695D, 0x1483, 0x695E, 0x1482, 0x6960, 0x0CC7, - 0x6961, 0x1481, 0x6962, 0x0CC2, 0x6963, 0x3938, 0x6968, 0x2132, 0x696A, - 0x1485, 0x696B, 0x1478, 0x696D, 0x06C0, 0x696E, 0x147B, 0x696F, 0x0967, - 0x6972, 0x3939, 0x6973, 0x0D16, 0x6974, 0x147D, 0x6975, 0x06C3, 0x6977, - 0x1475, 0x6978, 0x1477, 0x6979, 0x1474, 0x697C, 0x0FD6, 0x697D, 0x05B8, - 0x697E, 0x147A, 0x697F, 0x393A, 0x6980, 0x393B, 0x6981, 0x1484, 0x6982, - 0x0593, 0x698A, 0x0857, 0x698E, 0x04FF, 0x6991, 0x1495, 0x6994, 0x0FD7, - 0x6995, 0x1498, 0x6998, 0x2134, 0x699B, 0x0A00, 0x699C, 0x1497, 0x69A0, - 0x1496, 0x69A6, 0x393C, 0x69A7, 0x1493, 0x69AD, 0x393D, 0x69AE, 0x1487, - 0x69B1, 0x14A4, 0x69B2, 0x1486, 0x69B4, 0x1499, 0x69B7, 0x393E, 0x69BB, - 0x1491, 0x69BE, 0x148C, 0x69BF, 0x1489, 0x69C1, 0x148A, 0x69C3, 0x1492, - 0x69C7, 0x1D33, 0x69CA, 0x148F, 0x69CB, 0x07CF, 0x69CC, 0x0BE4, 0x69CD, - 0x0AE6, 0x69CE, 0x148D, 0x69D0, 0x1488, 0x69D3, 0x148B, 0x69D6, 0x393F, - 0x69D7, 0x3940, 0x69D8, 0x0F37, 0x69D9, 0x0E98, 0x69DD, 0x1490, 0x69DE, - 0x149A, 0x69E2, 0x2135, 0x69E7, 0x14A2, 0x69E8, 0x149B, 0x69EA, 0x356F, - 0x69EB, 0x14A8, 0x69ED, 0x14A6, 0x69F2, 0x14A1, 0x69F6, 0x373F, 0x69F9, - 0x14A0, 0x69FB, 0x0BEC, 0x69FD, 0x0AE7, 0x69FF, 0x149E, 0x6A01, 0x3941, - 0x6A02, 0x149C, 0x6A05, 0x14A3, 0x6A0A, 0x14A9, 0x6A0B, 0x0D89, 0x6A0C, - 0x14AF, 0x6A0F, 0x3942, 0x6A12, 0x14AA, 0x6A13, 0x14AD, 0x6A14, 0x14A7, - 0x6A15, 0x3943, 0x6A17, 0x0BB2, 0x6A19, 0x0DAA, 0x6A1B, 0x149D, 0x6A1E, - 0x14A5, 0x6A1F, 0x09A8, 0x6A21, 0x0EDB, 0x6A22, 0x14B9, 0x6A23, 0x14AC, - 0x6A28, 0x3944, 0x6A29, 0x0756, 0x6A2A, 0x0523, 0x6A2B, 0x05BD, 0x6A2E, - 0x1494, 0x6A30, 0x2136, 0x6A34, 0x3945, 0x6A35, 0x09A9, 0x6A36, 0x14B1, - 0x6A38, 0x14B8, 0x6A39, 0x0925, 0x6A3A, 0x05D0, 0x6A3D, 0x0B6C, 0x6A3E, - 0x3946, 0x6A44, 0x14AE, 0x6A45, 0x3947, 0x6A46, 0x2138, 0x6A47, 0x14B3, - 0x6A48, 0x14B7, 0x6A4B, 0x06AE, 0x6A50, 0x3948, 0x6A51, 0x3949, 0x6A54, - 0x3C34, 0x6A56, 0x394A, 0x6A58, 0x0666, 0x6A59, 0x14B5, 0x6A5B, 0x394B, - 0x6A5F, 0x063B, 0x6A61, 0x0CA3, 0x6A62, 0x14B4, 0x6A66, 0x14B6, 0x6A6B, - 0x2137, 0x6A72, 0x14B0, 0x6A73, 0x2139, 0x6A78, 0x14B2, 0x6A7E, 0x213A, - 0x6A7F, 0x05BE, 0x6A80, 0x0B87, 0x6A83, 0x394C, 0x6A84, 0x14BD, 0x6A89, - 0x394D, 0x6A8D, 0x14BB, 0x6A8E, 0x079D, 0x6A90, 0x14BA, 0x6A91, 0x394E, - 0x6A97, 0x14C0, 0x6A9C, 0x143B, 0x6A9D, 0x394F, 0x6A9E, 0x3950, 0x6A9F, - 0x3951, 0x6AA0, 0x14BC, 0x6AA2, 0x14BE, 0x6AA3, 0x14BF, 0x6AAA, 0x14CB, - 0x6AAC, 0x14C7, 0x6AAE, 0x1450, 0x6AB3, 0x14C6, 0x6AB8, 0x14C5, 0x6ABB, - 0x14C2, 0x6AC1, 0x14AB, 0x6AC2, 0x14C4, 0x6AC3, 0x14C3, 0x6AD1, 0x14C9, - 0x6AD3, 0x0FCC, 0x6ADA, 0x14CC, 0x6ADB, 0x06F3, 0x6ADC, 0x3952, 0x6ADE, - 0x14C8, 0x6ADF, 0x14CA, 0x6AE2, 0x213B, 0x6AE4, 0x213C, 0x6AE7, 0x3953, - 0x6AE8, 0x0D3B, 0x6AEA, 0x14CD, 0x6AEC, 0x3954, 0x6AFA, 0x14D1, 0x6AFB, - 0x14CE, 0x6B04, 0x0F5D, 0x6B05, 0x14CF, 0x6B0A, 0x149F, 0x6B12, 0x14D2, - 0x6B16, 0x14D3, 0x6B1D, 0x04D7, 0x6B1E, 0x3955, 0x6B1F, 0x14D5, 0x6B20, - 0x073D, 0x6B21, 0x08CD, 0x6B23, 0x06CD, 0x6B24, 0x3956, 0x6B27, 0x0524, - 0x6B32, 0x0F49, 0x6B35, 0x3957, 0x6B37, 0x14D7, 0x6B38, 0x14D6, 0x6B39, - 0x14D9, 0x6B3A, 0x0657, 0x6B3D, 0x06CE, 0x6B3E, 0x05FA, 0x6B43, 0x14DC, - 0x6B46, 0x3958, 0x6B47, 0x14DB, 0x6B49, 0x14DD, 0x6B4C, 0x054E, 0x6B4E, - 0x0B75, 0x6B50, 0x14DE, 0x6B53, 0x05FB, 0x6B54, 0x14E0, 0x6B56, 0x3959, - 0x6B59, 0x14DF, 0x6B5B, 0x14E1, 0x6B5F, 0x14E2, 0x6B60, 0x395A, 0x6B61, - 0x14E3, 0x6B62, 0x08AD, 0x6B63, 0x0A59, 0x6B64, 0x0811, 0x6B65, 0x344A, - 0x6B66, 0x0DE2, 0x6B69, 0x0E32, 0x6B6A, 0x0FEA, 0x6B6F, 0x08C3, 0x6B72, - 0x35D9, 0x6B73, 0x0840, 0x6B74, 0x0FBA, 0x6B77, 0x3456, 0x6B78, 0x14E4, - 0x6B79, 0x14E5, 0x6B7B, 0x08AE, 0x6B7F, 0x14E6, 0x6B80, 0x14E7, 0x6B82, - 0x395B, 0x6B83, 0x14E9, 0x6B84, 0x14E8, 0x6B86, 0x0E86, 0x6B89, 0x0968, - 0x6B8A, 0x0918, 0x6B8B, 0x0892, 0x6B8D, 0x14EA, 0x6B95, 0x14EC, 0x6B96, - 0x09E9, 0x6B98, 0x14EB, 0x6B9E, 0x14ED, 0x6BA4, 0x14EE, 0x6BAA, 0x14EF, - 0x6BAB, 0x14F0, 0x6BAF, 0x14F1, 0x6BB1, 0x14F3, 0x6BB2, 0x14F2, 0x6BB3, - 0x14F4, 0x6BB4, 0x0525, 0x6BB5, 0x0B88, 0x6BB7, 0x14F5, 0x6BBA, 0x0874, - 0x6BBB, 0x05AA, 0x6BBC, 0x14F6, 0x6BBE, 0x395C, 0x6BBF, 0x0C3C, 0x6BC0, - 0x119D, 0x6BC5, 0x063D, 0x6BC6, 0x14F7, 0x6BCB, 0x14F8, 0x6BCC, 0x3744, - 0x6BCD, 0x0E3C, 0x6BCE, 0x0E96, 0x6BCF, 0x344C, 0x6BD2, 0x0C9F, 0x6BD3, - 0x14F9, 0x6BD4, 0x0D7A, 0x6BD6, 0x213D, 0x6BD8, 0x0D8F, 0x6BDB, 0x0EDF, - 0x6BDF, 0x14FA, 0x6BE1, 0x395D, 0x6BEB, 0x14FC, 0x6BEC, 0x14FB, 0x6BEF, - 0x14FE, 0x6BF1, 0x395E, 0x6BF3, 0x14FD, 0x6C08, 0x1500, 0x6C0F, 0x08AF, - 0x6C10, 0x395F, 0x6C11, 0x0EBD, 0x6C13, 0x1501, 0x6C14, 0x1502, 0x6C17, - 0x063E, 0x6C1B, 0x1503, 0x6C23, 0x1505, 0x6C24, 0x1504, 0x6C33, 0x3960, - 0x6C34, 0x0A2B, 0x6C35, 0x3961, 0x6C37, 0x0DAB, 0x6C38, 0x04EC, 0x6C3A, - 0x3962, 0x6C3E, 0x0D59, 0x6C3F, 0x213E, 0x6C40, 0x0C11, 0x6C41, 0x094B, - 0x6C42, 0x067B, 0x6C4E, 0x0D5A, 0x6C50, 0x08DA, 0x6C55, 0x1507, 0x6C57, - 0x05FC, 0x6C59, 0x3963, 0x6C5A, 0x051A, 0x6C5C, 0x213F, 0x6C5D, 0x0CCA, - 0x6C5E, 0x1506, 0x6C5F, 0x07D0, 0x6C60, 0x0B91, 0x6C62, 0x1508, 0x6C68, - 0x1510, 0x6C6A, 0x1509, 0x6C6F, 0x2141, 0x6C70, 0x0B21, 0x6C72, 0x067C, - 0x6C73, 0x1511, 0x6C76, 0x3964, 0x6C7A, 0x073E, 0x6C7B, 0x3965, 0x6C7D, - 0x063F, 0x6C7E, 0x150F, 0x6C81, 0x150D, 0x6C82, 0x150A, 0x6C83, 0x0F4A, - 0x6C85, 0x3966, 0x6C86, 0x2140, 0x6C88, 0x0BDC, 0x6C8C, 0x0CB1, 0x6C8D, - 0x150B, 0x6C90, 0x1513, 0x6C92, 0x1512, 0x6C93, 0x06F9, 0x6C95, 0x3967, - 0x6C96, 0x052D, 0x6C99, 0x082B, 0x6C9A, 0x150C, 0x6C9B, 0x150E, 0x6C9C, - 0x3968, 0x6CA1, 0x0E85, 0x6CA2, 0x0B54, 0x6CAA, 0x3749, 0x6CAB, 0x0EA5, - 0x6CAE, 0x151B, 0x6CB1, 0x151C, 0x6CB3, 0x054F, 0x6CB8, 0x0DF8, 0x6CB9, - 0x0F09, 0x6CBA, 0x151E, 0x6CBB, 0x08CF, 0x6CBC, 0x09AA, 0x6CBD, 0x1517, - 0x6CBE, 0x151D, 0x6CBF, 0x050A, 0x6CC1, 0x06AF, 0x6CC4, 0x1514, 0x6CC5, - 0x1519, 0x6CC9, 0x0A98, 0x6CCA, 0x0D27, 0x6CCC, 0x0D7B, 0x6CD0, 0x3969, - 0x6CD3, 0x1516, 0x6CD4, 0x396A, 0x6CD5, 0x0E4F, 0x6CD6, 0x396B, 0x6CD7, - 0x1518, 0x6CD9, 0x1521, 0x6CDA, 0x2142, 0x6CDB, 0x151F, 0x6CDD, 0x151A, - 0x6CE0, 0x396C, 0x6CE1, 0x0E50, 0x6CE2, 0x0CFE, 0x6CE3, 0x067D, 0x6CE5, - 0x0C1F, 0x6CE8, 0x0BAB, 0x6CEA, 0x1522, 0x6CEB, 0x396D, 0x6CEC, 0x396E, - 0x6CEE, 0x396F, 0x6CEF, 0x1520, 0x6CF0, 0x0B39, 0x6CF1, 0x1515, 0x6CF3, - 0x04ED, 0x6D01, 0x3C35, 0x6D04, 0x2143, 0x6D0A, 0x3970, 0x6D0B, 0x0F38, - 0x6D0C, 0x152D, 0x6D0E, 0x3971, 0x6D11, 0x3972, 0x6D12, 0x152C, 0x6D17, - 0x0A9A, 0x6D19, 0x1529, 0x6D1B, 0x0F56, 0x6D1E, 0x0C8E, 0x6D1F, 0x1523, - 0x6D25, 0x0BE1, 0x6D29, 0x04EE, 0x6D2A, 0x07D1, 0x6D2B, 0x1526, 0x6D2E, - 0x3973, 0x6D32, 0x0931, 0x6D33, 0x152B, 0x6D35, 0x152A, 0x6D36, 0x1525, - 0x6D38, 0x1528, 0x6D3B, 0x05C6, 0x6D3D, 0x1527, 0x6D3E, 0x0CFF, 0x6D41, - 0x0F76, 0x6D44, 0x09DC, 0x6D45, 0x0A99, 0x6D57, 0x3974, 0x6D59, 0x1533, - 0x6D5A, 0x1531, 0x6D5C, 0x0DBF, 0x6D5E, 0x3975, 0x6D63, 0x152E, 0x6D64, - 0x1530, 0x6D65, 0x3976, 0x6D66, 0x04DC, 0x6D69, 0x07D2, 0x6D6A, 0x0FD8, - 0x6D6C, 0x059B, 0x6D6E, 0x0DD4, 0x6D6F, 0x2145, 0x6D74, 0x0F4B, 0x6D77, - 0x0582, 0x6D78, 0x0A01, 0x6D79, 0x1532, 0x6D82, 0x3977, 0x6D85, 0x1537, - 0x6D87, 0x2144, 0x6D88, 0x09AB, 0x6D89, 0x342A, 0x6D8C, 0x0F1A, 0x6D8E, - 0x1534, 0x6D93, 0x152F, 0x6D95, 0x1535, 0x6D96, 0x2146, 0x6D99, 0x0FA6, - 0x6D9B, 0x0C6D, 0x6D9C, 0x0C9A, 0x6DAC, 0x2147, 0x6DAF, 0x0594, 0x6DB2, - 0x04F7, 0x6DB5, 0x153B, 0x6DB8, 0x153E, 0x6DBC, 0x0F8B, 0x6DBF, 0x3978, - 0x6DC0, 0x0F4E, 0x6DC4, 0x3979, 0x6DC5, 0x1545, 0x6DC6, 0x153F, 0x6DC7, - 0x153C, 0x6DCA, 0x397A, 0x6DCB, 0x0F9C, 0x6DCC, 0x1542, 0x6DCF, 0x2148, - 0x6DD0, 0x3C36, 0x6DD1, 0x0954, 0x6DD2, 0x1544, 0x6DD5, 0x1549, 0x6DD6, - 0x397B, 0x6DD8, 0x0C6B, 0x6DD9, 0x1547, 0x6DDA, 0x3453, 0x6DDE, 0x1541, - 0x6DE1, 0x0B76, 0x6DE4, 0x1548, 0x6DE6, 0x153D, 0x6DE8, 0x1543, 0x6DE9, - 0x397C, 0x6DEA, 0x154A, 0x6DEB, 0x04C0, 0x6DEC, 0x1540, 0x6DEE, 0x154B, - 0x6DF1, 0x0A02, 0x6DF2, 0x214A, 0x6DF3, 0x0969, 0x6DF5, 0x0DF5, 0x6DF7, - 0x081E, 0x6DF8, 0x2149, 0x6DF9, 0x1538, 0x6DFA, 0x1546, 0x6DFB, 0x0C34, - 0x6DFC, 0x214B, 0x6E05, 0x0A5A, 0x6E07, 0x05C7, 0x6E08, 0x0841, 0x6E09, - 0x09AC, 0x6E0A, 0x153A, 0x6E0B, 0x094C, 0x6E13, 0x0722, 0x6E15, 0x1539, - 0x6E17, 0x3746, 0x6E19, 0x154F, 0x6E1A, 0x0977, 0x6E1B, 0x076E, 0x6E1D, - 0x155E, 0x6E1F, 0x1558, 0x6E20, 0x068E, 0x6E21, 0x0C49, 0x6E22, 0x397D, - 0x6E23, 0x1553, 0x6E24, 0x155C, 0x6E25, 0x0473, 0x6E26, 0x04D4, 0x6E27, - 0x214E, 0x6E29, 0x0539, 0x6E2B, 0x1555, 0x6E2C, 0x0B0C, 0x6E2D, 0x154C, - 0x6E2E, 0x154E, 0x6E2F, 0x07D3, 0x6E34, 0x3412, 0x6E38, 0x155F, 0x6E39, - 0x214C, 0x6E3A, 0x155A, 0x6E3C, 0x214F, 0x6E3E, 0x1552, 0x6E42, 0x3C37, - 0x6E43, 0x1559, 0x6E4A, 0x0EB7, 0x6E4D, 0x1557, 0x6E4E, 0x155B, 0x6E51, - 0x397E, 0x6E56, 0x0784, 0x6E58, 0x09AD, 0x6E5B, 0x0B77, 0x6E5C, 0x214D, - 0x6E5F, 0x1551, 0x6E67, 0x0F19, 0x6E6B, 0x1554, 0x6E6E, 0x154D, 0x6E6F, - 0x0C6C, 0x6E72, 0x1550, 0x6E76, 0x1556, 0x6E7E, 0x0FF7, 0x6E7F, 0x08EA, - 0x6E80, 0x0EAC, 0x6E82, 0x1560, 0x6E8C, 0x0D42, 0x6E8F, 0x156C, 0x6E90, - 0x076F, 0x6E96, 0x096A, 0x6E98, 0x1562, 0x6E9C, 0x0F77, 0x6E9D, 0x07D4, - 0x6E9F, 0x156F, 0x6EA2, 0x04B2, 0x6EA5, 0x156D, 0x6EAA, 0x1561, 0x6EAB, - 0x340C, 0x6EAF, 0x1567, 0x6EB2, 0x1569, 0x6EB6, 0x0F39, 0x6EB7, 0x1564, - 0x6EBA, 0x0C28, 0x6EBD, 0x1566, 0x6EBF, 0x2150, 0x6EC2, 0x156E, 0x6EC4, - 0x1568, 0x6EC5, 0x0ED3, 0x6EC7, 0x397F, 0x6EC9, 0x1563, 0x6ECA, 0x3980, - 0x6ECB, 0x08CE, 0x6ECC, 0x157B, 0x6ECE, 0x3981, 0x6ED1, 0x05C8, 0x6ED3, - 0x1565, 0x6ED4, 0x156A, 0x6ED5, 0x156B, 0x6ED9, 0x3C38, 0x6EDD, 0x0B4C, - 0x6EDE, 0x0B3A, 0x6EE6, 0x3C24, 0x6EEC, 0x1573, 0x6EEF, 0x1579, 0x6EF2, - 0x1577, 0x6EF4, 0x0C23, 0x6EF7, 0x157E, 0x6EF8, 0x1574, 0x6EFD, 0x3982, - 0x6EFE, 0x1575, 0x6EFF, 0x155D, 0x6F01, 0x0693, 0x6F02, 0x0DAC, 0x6F06, - 0x08EB, 0x6F09, 0x0809, 0x6F0F, 0x0FD9, 0x6F11, 0x1571, 0x6F13, 0x157D, - 0x6F14, 0x050B, 0x6F15, 0x0AE8, 0x6F1A, 0x3983, 0x6F20, 0x0D2F, 0x6F22, - 0x05FD, 0x6F23, 0x0FC2, 0x6F2A, 0x3984, 0x6F2B, 0x0EAD, 0x6F2C, 0x0BEE, - 0x6F2F, 0x3985, 0x6F31, 0x1578, 0x6F32, 0x157A, 0x6F33, 0x3986, 0x6F38, - 0x0AB4, 0x6F3E, 0x157C, 0x6F3F, 0x1576, 0x6F41, 0x1570, 0x6F45, 0x05FF, - 0x6F51, 0x1E60, 0x6F54, 0x073F, 0x6F58, 0x158A, 0x6F5A, 0x3987, 0x6F5B, - 0x1585, 0x6F5C, 0x0A9C, 0x6F5E, 0x3988, 0x6F5F, 0x05C1, 0x6F62, 0x3989, - 0x6F64, 0x096B, 0x6F66, 0x158E, 0x6F6D, 0x1587, 0x6F6E, 0x0BC8, 0x6F6F, - 0x1584, 0x6F70, 0x0BF5, 0x6F74, 0x15A7, 0x6F78, 0x1581, 0x6F7A, 0x1580, - 0x6F7C, 0x1589, 0x6F7D, 0x398A, 0x6F80, 0x1583, 0x6F81, 0x1582, 0x6F82, - 0x1588, 0x6F84, 0x0A45, 0x6F86, 0x157F, 0x6F88, 0x2151, 0x6F8B, 0x398B, - 0x6F8D, 0x398C, 0x6F8E, 0x158B, 0x6F91, 0x158C, 0x6F92, 0x398D, 0x6F94, - 0x398E, 0x6F97, 0x05FE, 0x6F98, 0x363C, 0x6F9A, 0x398F, 0x6FA1, 0x1591, - 0x6FA3, 0x1590, 0x6FA4, 0x1592, 0x6FA7, 0x3990, 0x6FA8, 0x3991, 0x6FAA, - 0x1595, 0x6FB1, 0x0C3D, 0x6FB3, 0x158F, 0x6FB5, 0x2152, 0x6FB6, 0x3992, - 0x6FB9, 0x1593, 0x6FC0, 0x0739, 0x6FC1, 0x0B59, 0x6FC2, 0x158D, 0x6FC3, - 0x0CF1, 0x6FC6, 0x1594, 0x6FD4, 0x1599, 0x6FD5, 0x1597, 0x6FD8, 0x159A, - 0x6FDA, 0x3993, 0x6FDB, 0x159D, 0x6FDE, 0x3994, 0x6FDF, 0x1596, 0x6FE0, - 0x07FC, 0x6FE1, 0x0CDE, 0x6FE4, 0x1536, 0x6FEB, 0x0F5E, 0x6FEC, 0x1598, - 0x6FEE, 0x159C, 0x6FEF, 0x0B55, 0x6FF1, 0x159B, 0x6FF3, 0x1586, 0x6FF5, - 0x2153, 0x6FF6, 0x1BA4, 0x6FF9, 0x3995, 0x6FFA, 0x15A0, 0x6FFE, 0x15A4, - 0x7001, 0x15A2, 0x7005, 0x2154, 0x7006, 0x1E50, 0x7007, 0x2155, 0x7009, - 0x159E, 0x700B, 0x159F, 0x700F, 0x15A3, 0x7011, 0x15A1, 0x7015, 0x0DC0, - 0x7018, 0x15A9, 0x701A, 0x15A6, 0x701B, 0x15A5, 0x701D, 0x15A8, 0x701E, - 0x0CAC, 0x701F, 0x15AA, 0x7026, 0x0BB3, 0x7027, 0x0B4D, 0x7028, 0x2156, - 0x702C, 0x0A49, 0x7030, 0x15AB, 0x7032, 0x15AD, 0x7039, 0x3996, 0x703C, - 0x3997, 0x703E, 0x15AC, 0x704A, 0x3998, 0x704C, 0x1572, 0x7051, 0x15AE, - 0x7054, 0x3999, 0x7058, 0x0CBF, 0x705D, 0x399A, 0x705E, 0x399B, 0x7063, - 0x15AF, 0x7064, 0x399C, 0x706B, 0x0550, 0x706C, 0x399D, 0x706F, 0x0C6E, - 0x7070, 0x0583, 0x7078, 0x067E, 0x707C, 0x090A, 0x707D, 0x0842, 0x707E, - 0x399E, 0x7081, 0x399F, 0x7085, 0x2157, 0x7089, 0x0FCD, 0x708A, 0x0A2C, - 0x708E, 0x050C, 0x7092, 0x15B1, 0x7095, 0x39A0, 0x7099, 0x15B0, 0x70AB, - 0x2158, 0x70AC, 0x15B4, 0x70AD, 0x0B78, 0x70AE, 0x15B7, 0x70AF, 0x15B2, - 0x70B3, 0x15B6, 0x70B7, 0x39A1, 0x70B8, 0x15B5, 0x70B9, 0x0C3A, 0x70BA, - 0x049D, 0x70BB, 0x20AD, 0x70C8, 0x0FBD, 0x70CB, 0x15B9, 0x70CF, 0x04CA, - 0x70D3, 0x39A2, 0x70D4, 0x39A3, 0x70D8, 0x39A4, 0x70D9, 0x15BB, 0x70DC, - 0x39A5, 0x70DD, 0x15BA, 0x70DF, 0x15B8, 0x70F1, 0x15B3, 0x70F9, 0x0E51, - 0x70FD, 0x15BD, 0x7104, 0x215A, 0x7107, 0x39A6, 0x7109, 0x15BC, 0x710F, - 0x2159, 0x7114, 0x050D, 0x7119, 0x15BF, 0x711A, 0x0E02, 0x711C, 0x15BE, - 0x7120, 0x39A7, 0x7121, 0x0EC1, 0x7126, 0x09AF, 0x7130, 0x1DDC, 0x7131, - 0x39A8, 0x7136, 0x0AB5, 0x713C, 0x09AE, 0x7146, 0x215C, 0x7147, 0x215D, - 0x7149, 0x0FC3, 0x714A, 0x39A9, 0x714C, 0x15C5, 0x714E, 0x0A9D, 0x7152, - 0x39AA, 0x7155, 0x15C1, 0x7156, 0x15C6, 0x7159, 0x050E, 0x715C, 0x215B, - 0x7160, 0x39AB, 0x7162, 0x15C4, 0x7164, 0x0D17, 0x7165, 0x15C0, 0x7166, - 0x15C3, 0x7167, 0x09B0, 0x7169, 0x0D65, 0x716C, 0x15C7, 0x716E, 0x08FD, - 0x7179, 0x39AC, 0x717D, 0x0A9E, 0x7184, 0x15CA, 0x7188, 0x15C2, 0x718A, - 0x06FD, 0x718F, 0x15C8, 0x7192, 0x39AD, 0x7194, 0x0F3A, 0x7195, 0x15CB, - 0x7199, 0x205D, 0x719F, 0x0959, 0x71A8, 0x15CC, 0x71AC, 0x15CD, 0x71B1, - 0x0CE4, 0x71B3, 0x39AE, 0x71B9, 0x15CF, 0x71BE, 0x15D0, 0x71C1, 0x215F, - 0x71C3, 0x0CE9, 0x71C8, 0x0C6F, 0x71C9, 0x15D2, 0x71CB, 0x39AF, 0x71CE, - 0x15D4, 0x71D0, 0x0F9D, 0x71D2, 0x15D1, 0x71D3, 0x39B0, 0x71D4, 0x15D3, - 0x71D5, 0x050F, 0x71D6, 0x39B1, 0x71D7, 0x15CE, 0x71DF, 0x114E, 0x71E0, - 0x15D5, 0x71E5, 0x0AE9, 0x71E6, 0x0886, 0x71E7, 0x15D7, 0x71EC, 0x15D6, - 0x71ED, 0x09EA, 0x71EE, 0x10EE, 0x71F5, 0x15D8, 0x71F9, 0x15DA, 0x71FB, - 0x15C9, 0x71FC, 0x15D9, 0x71FE, 0x2160, 0x71FF, 0x15DB, 0x7200, 0x39B2, - 0x7206, 0x0D30, 0x720D, 0x15DC, 0x7210, 0x15DD, 0x721B, 0x15DE, 0x721D, - 0x39B3, 0x7228, 0x15DF, 0x722A, 0x0BFA, 0x722B, 0x39B4, 0x722C, 0x15E1, - 0x722D, 0x15E0, 0x7230, 0x15E2, 0x7232, 0x15E3, 0x7235, 0x090B, 0x7236, - 0x0DD5, 0x7238, 0x39B5, 0x723A, 0x0EF8, 0x723B, 0x15E4, 0x723C, 0x15E5, - 0x723D, 0x0AD8, 0x723E, 0x08D0, 0x723F, 0x15E6, 0x7240, 0x15E7, 0x7241, - 0x39B6, 0x7246, 0x15E8, 0x7247, 0x0E22, 0x7248, 0x0D5B, 0x724B, 0x15E9, - 0x724C, 0x0D0D, 0x7252, 0x0BC9, 0x7253, 0x39B7, 0x7255, 0x39B8, 0x7256, - 0x39B9, 0x7258, 0x15EA, 0x7259, 0x0567, 0x725B, 0x0687, 0x725C, 0x39BA, - 0x725D, 0x0ED2, 0x725F, 0x0EC2, 0x7261, 0x0534, 0x7262, 0x0FDA, 0x7267, - 0x0E80, 0x7269, 0x0DFA, 0x7272, 0x0A5B, 0x7274, 0x15EB, 0x7279, 0x0C9B, - 0x727D, 0x0757, 0x727E, 0x15EC, 0x7280, 0x0844, 0x7281, 0x15EE, 0x7282, - 0x15ED, 0x7287, 0x15EF, 0x728D, 0x39BB, 0x7292, 0x15F0, 0x7296, 0x15F1, - 0x72A0, 0x0658, 0x72A2, 0x15F2, 0x72A7, 0x15F3, 0x72AC, 0x0758, 0x72AD, - 0x39BC, 0x72AF, 0x0D5C, 0x72B1, 0x2161, 0x72B2, 0x15F5, 0x72B4, 0x39BD, - 0x72B6, 0x09DD, 0x72B9, 0x15F4, 0x72BE, 0x2162, 0x72C0, 0x342B, 0x72C2, - 0x06B0, 0x72C3, 0x15F6, 0x72C4, 0x15F8, 0x72C6, 0x15F7, 0x72C7, 0x39BE, - 0x72CE, 0x15F9, 0x72D0, 0x0785, 0x72D2, 0x15FA, 0x72D7, 0x06E1, 0x72D9, - 0x0AC2, 0x72DB, 0x080F, 0x72E0, 0x15FC, 0x72E1, 0x15FD, 0x72E2, 0x15FB, - 0x72E9, 0x0919, 0x72EC, 0x0CA0, 0x72ED, 0x06B1, 0x72F7, 0x15FF, 0x72F8, - 0x0B6A, 0x72F9, 0x15FE, 0x72FB, 0x39BF, 0x72FC, 0x0FDB, 0x72FD, 0x0D18, - 0x7304, 0x39C0, 0x7305, 0x39C1, 0x730A, 0x1602, 0x7316, 0x1604, 0x7317, - 0x1601, 0x731B, 0x0EE0, 0x731C, 0x1603, 0x731D, 0x1605, 0x731F, 0x0F8C, - 0x7324, 0x2163, 0x7325, 0x1609, 0x7328, 0x39C2, 0x7329, 0x1608, 0x732A, - 0x0BB4, 0x732B, 0x0CE3, 0x732E, 0x0759, 0x732F, 0x1607, 0x7331, 0x39C3, - 0x7334, 0x1606, 0x7336, 0x0F1B, 0x7337, 0x0F1C, 0x733E, 0x160A, 0x733F, - 0x0510, 0x7343, 0x39C4, 0x7344, 0x0808, 0x7345, 0x08B0, 0x734E, 0x160B, - 0x734F, 0x160C, 0x7357, 0x160E, 0x7363, 0x094D, 0x7368, 0x1610, 0x736A, - 0x160F, 0x736C, 0x39C5, 0x7370, 0x1611, 0x7372, 0x05AB, 0x7375, 0x1613, - 0x7377, 0x2165, 0x7378, 0x1612, 0x737A, 0x1615, 0x737B, 0x1614, 0x737C, - 0x39C6, 0x7383, 0x39C7, 0x7384, 0x0770, 0x7385, 0x39C8, 0x7386, 0x39C9, - 0x7387, 0x0F70, 0x7389, 0x06C4, 0x738B, 0x0526, 0x7395, 0x39CA, 0x7396, - 0x06E2, 0x739E, 0x39CB, 0x739F, 0x39CC, 0x73A0, 0x39CD, 0x73A6, 0x39CE, - 0x73A8, 0x3C3F, 0x73A9, 0x061D, 0x73AB, 0x39CF, 0x73B2, 0x0FB0, 0x73B3, - 0x1617, 0x73B5, 0x39D0, 0x73B7, 0x39D1, 0x73BA, 0x35EA, 0x73BB, 0x1619, - 0x73BC, 0x39D2, 0x73BD, 0x2166, 0x73C0, 0x161A, 0x73C2, 0x0551, 0x73C8, - 0x1616, 0x73C9, 0x2167, 0x73CA, 0x0887, 0x73CD, 0x0BDD, 0x73CE, 0x1618, - 0x73CF, 0x39D3, 0x73D2, 0x216A, 0x73D6, 0x2168, 0x73D9, 0x39D4, 0x73DE, - 0x161D, 0x73E0, 0x091A, 0x73E3, 0x2169, 0x73E4, 0x3C39, 0x73E5, 0x161B, - 0x73E9, 0x39D5, 0x73EA, 0x0714, 0x73ED, 0x0D5D, 0x73EE, 0x161C, 0x73F1, - 0x1637, 0x73F4, 0x39D6, 0x73F5, 0x216C, 0x73F8, 0x1622, 0x73FD, 0x39D7, - 0x73FE, 0x0771, 0x7403, 0x067F, 0x7404, 0x39D8, 0x7405, 0x161F, 0x7406, - 0x0F67, 0x7407, 0x216B, 0x7409, 0x0F78, 0x740A, 0x39D9, 0x741A, 0x39DA, - 0x741B, 0x39DB, 0x7421, 0x3C3A, 0x7422, 0x0B56, 0x7424, 0x39DC, 0x7425, - 0x1621, 0x7426, 0x216D, 0x7428, 0x39DD, 0x7429, 0x216F, 0x742A, 0x216E, - 0x742C, 0x39DE, 0x742E, 0x2170, 0x742F, 0x39DF, 0x7430, 0x39E0, 0x7431, - 0x39E1, 0x7432, 0x1623, 0x7433, 0x0F9E, 0x7434, 0x06CF, 0x7435, 0x0D90, - 0x7436, 0x0D00, 0x7439, 0x39E2, 0x743A, 0x1624, 0x743F, 0x1626, 0x7441, - 0x1629, 0x7444, 0x39E3, 0x7447, 0x39E4, 0x744B, 0x39E5, 0x744D, 0x39E6, - 0x7451, 0x39E7, 0x7455, 0x1625, 0x7457, 0x39E8, 0x7459, 0x1628, 0x745A, - 0x079E, 0x745B, 0x04EF, 0x745C, 0x162A, 0x745E, 0x0A36, 0x745F, 0x1627, - 0x7460, 0x0FA4, 0x7462, 0x2171, 0x7463, 0x162D, 0x7464, 0x1D35, 0x7466, - 0x39E9, 0x7469, 0x162B, 0x746A, 0x162E, 0x746B, 0x39EA, 0x746F, 0x1620, - 0x7470, 0x162C, 0x7471, 0x39EB, 0x7473, 0x082C, 0x7476, 0x162F, 0x747E, - 0x1630, 0x7480, 0x39EC, 0x7483, 0x0F68, 0x7485, 0x39ED, 0x7486, 0x39EE, - 0x7487, 0x39EF, 0x7489, 0x2172, 0x748B, 0x1631, 0x7490, 0x39F0, 0x7498, - 0x39F1, 0x749C, 0x39F2, 0x749E, 0x1632, 0x749F, 0x2173, 0x74A0, 0x39F3, - 0x74A2, 0x161E, 0x74A3, 0x39F4, 0x74A7, 0x1633, 0x74A8, 0x39F5, 0x74AB, - 0x39F6, 0x74B0, 0x0600, 0x74B5, 0x39F7, 0x74BD, 0x08D1, 0x74BF, 0x39F8, - 0x74C8, 0x39F9, 0x74CA, 0x1634, 0x74CF, 0x1635, 0x74D4, 0x1636, 0x74DA, - 0x39FA, 0x74DC, 0x04DD, 0x74DE, 0x39FB, 0x74E0, 0x1638, 0x74E2, 0x0DAD, - 0x74E3, 0x1639, 0x74E6, 0x05E0, 0x74E7, 0x163A, 0x74E9, 0x163B, 0x74EE, - 0x163C, 0x74EF, 0x3750, 0x74F0, 0x163E, 0x74F1, 0x163F, 0x74F2, 0x163D, - 0x74F6, 0x0DC5, 0x74F7, 0x1641, 0x74F8, 0x1640, 0x7501, 0x2174, 0x7503, - 0x1643, 0x7504, 0x1642, 0x7505, 0x1644, 0x750C, 0x1645, 0x750D, 0x1647, - 0x750E, 0x1646, 0x7511, 0x080B, 0x7513, 0x1649, 0x7515, 0x1648, 0x7518, - 0x0601, 0x751A, 0x0A19, 0x751C, 0x0C36, 0x751E, 0x164A, 0x751F, 0x0A5C, - 0x7522, 0x35DE, 0x7523, 0x0888, 0x7525, 0x051B, 0x7526, 0x164B, 0x7528, - 0x0F3B, 0x752B, 0x0E33, 0x752C, 0x164C, 0x752F, 0x20F2, 0x7530, 0x0C3E, - 0x7531, 0x0F1D, 0x7532, 0x07D5, 0x7533, 0x0A03, 0x7537, 0x0B89, 0x7538, - 0x10C9, 0x753A, 0x0BCA, 0x753B, 0x0568, 0x753C, 0x164D, 0x7544, 0x164E, - 0x7546, 0x1653, 0x7549, 0x1651, 0x754A, 0x1650, 0x754B, 0x13C7, 0x754C, - 0x0584, 0x754D, 0x164F, 0x754E, 0x39FC, 0x754F, 0x049E, 0x7551, 0x0D3E, - 0x7554, 0x0D5E, 0x7559, 0x0F79, 0x755A, 0x1654, 0x755B, 0x1652, 0x755C, - 0x0B9A, 0x755D, 0x0A4A, 0x7560, 0x0D3F, 0x7562, 0x0D9F, 0x7564, 0x1656, - 0x7565, 0x0F74, 0x7566, 0x0723, 0x7567, 0x1657, 0x7569, 0x1655, 0x756A, - 0x0D6A, 0x756B, 0x1658, 0x756C, 0x3C3B, 0x756D, 0x1659, 0x756F, 0x2175, - 0x7570, 0x049F, 0x7573, 0x09DE, 0x7574, 0x165E, 0x7575, 0x3751, 0x7576, - 0x165B, 0x7577, 0x0CC5, 0x7578, 0x165A, 0x7579, 0x39FD, 0x757F, 0x0640, - 0x7581, 0x39FE, 0x7582, 0x1661, 0x7586, 0x165C, 0x7587, 0x165D, 0x7589, - 0x1660, 0x758A, 0x165F, 0x758B, 0x0D97, 0x758E, 0x0AC4, 0x758F, 0x0AC3, - 0x7590, 0x39FF, 0x7591, 0x0659, 0x7592, 0x3A00, 0x7593, 0x3A01, 0x7594, - 0x1662, 0x759A, 0x1663, 0x759D, 0x1664, 0x75A3, 0x1666, 0x75A5, 0x1665, - 0x75AB, 0x04F8, 0x75B1, 0x166E, 0x75B2, 0x0D7C, 0x75B3, 0x1668, 0x75B4, - 0x3A02, 0x75B5, 0x166A, 0x75B8, 0x166C, 0x75B9, 0x0A04, 0x75BC, 0x166D, - 0x75BD, 0x166B, 0x75BE, 0x08EC, 0x75C2, 0x1667, 0x75C3, 0x1669, 0x75C5, - 0x0DB4, 0x75C7, 0x09B1, 0x75CA, 0x1670, 0x75CD, 0x166F, 0x75D2, 0x1671, - 0x75D4, 0x08D2, 0x75D5, 0x081F, 0x75D8, 0x0C71, 0x75D9, 0x1672, 0x75DB, - 0x0BE7, 0x75DE, 0x1674, 0x75E2, 0x0F69, 0x75E3, 0x1673, 0x75E4, 0x3A03, - 0x75E9, 0x0AEB, 0x75EC, 0x3752, 0x75F0, 0x1679, 0x75F2, 0x167B, 0x75F3, - 0x167C, 0x75F4, 0x0B92, 0x75F9, 0x3A04, 0x75FA, 0x167A, 0x75FC, 0x1677, - 0x75FE, 0x1675, 0x75FF, 0x1676, 0x7600, 0x3A05, 0x7601, 0x1678, 0x7609, - 0x167F, 0x760A, 0x3A06, 0x760B, 0x167D, 0x760D, 0x167E, 0x7615, 0x3A07, - 0x7616, 0x3A08, 0x7619, 0x3A09, 0x761E, 0x3A0A, 0x761F, 0x1680, 0x7620, - 0x1682, 0x7621, 0x1683, 0x7622, 0x1684, 0x7624, 0x1685, 0x7626, 0x1E2D, - 0x7627, 0x1681, 0x762D, 0x3A0B, 0x7630, 0x1687, 0x7634, 0x1686, 0x7635, - 0x3A0C, 0x763B, 0x1688, 0x7642, 0x0F8D, 0x7643, 0x3A0D, 0x7646, 0x168B, - 0x7647, 0x1689, 0x7648, 0x168A, 0x764B, 0x3A0E, 0x764C, 0x061E, 0x764E, - 0x3753, 0x7652, 0x0F0A, 0x7656, 0x0E1A, 0x7658, 0x168D, 0x765C, 0x168C, - 0x7661, 0x168E, 0x7662, 0x168F, 0x7665, 0x3A0F, 0x7667, 0x1693, 0x7668, - 0x1690, 0x7669, 0x1691, 0x766A, 0x1692, 0x766C, 0x1694, 0x766D, 0x3A10, - 0x766F, 0x3A11, 0x7670, 0x1695, 0x7671, 0x3A12, 0x7672, 0x1696, 0x7674, - 0x3A13, 0x7676, 0x1697, 0x7678, 0x1698, 0x767A, 0x0D43, 0x767B, 0x0C4A, - 0x767C, 0x1699, 0x767D, 0x0D28, 0x767E, 0x0DA6, 0x7680, 0x169A, 0x7682, - 0x2176, 0x7683, 0x169B, 0x7684, 0x0C24, 0x7686, 0x0585, 0x7687, 0x07D6, - 0x7688, 0x169C, 0x768B, 0x169D, 0x768E, 0x169E, 0x7690, 0x0877, 0x7693, - 0x16A0, 0x7696, 0x169F, 0x7699, 0x16A1, 0x769A, 0x16A2, 0x769B, 0x2179, - 0x769C, 0x2177, 0x769E, 0x2178, 0x76A4, 0x3A14, 0x76A5, 0x3A15, 0x76A6, - 0x217A, 0x76AE, 0x0D7D, 0x76B0, 0x16A3, 0x76B4, 0x16A4, 0x76B7, 0x1D1C, - 0x76B8, 0x16A5, 0x76B9, 0x16A6, 0x76BA, 0x16A7, 0x76BF, 0x087C, 0x76C2, - 0x16A8, 0x76C3, 0x0D0C, 0x76C5, 0x3A16, 0x76C6, 0x0E8D, 0x76C8, 0x04F0, - 0x76CA, 0x04F9, 0x76CC, 0x3A17, 0x76CD, 0x16A9, 0x76D2, 0x16AB, 0x76D6, - 0x16AA, 0x76D7, 0x0C6A, 0x76DB, 0x0A5D, 0x76DC, 0x14D8, 0x76DE, 0x16AC, - 0x76DF, 0x0ECD, 0x76E1, 0x16AD, 0x76E3, 0x0602, 0x76E4, 0x0D6B, 0x76E5, - 0x16AE, 0x76E7, 0x16AF, 0x76EA, 0x16B0, 0x76EC, 0x3A18, 0x76EE, 0x0EE8, - 0x76F2, 0x0EE1, 0x76F4, 0x0BDA, 0x76F8, 0x0AEC, 0x76FB, 0x16B2, 0x76FC, - 0x3A19, 0x76FE, 0x096C, 0x7701, 0x09B2, 0x7704, 0x16B5, 0x7707, 0x16B4, - 0x7708, 0x16B3, 0x7709, 0x0D91, 0x770B, 0x0603, 0x770C, 0x075D, 0x771B, - 0x16BB, 0x771E, 0x16B8, 0x771F, 0x0A05, 0x7720, 0x0EBE, 0x7724, 0x16B7, - 0x7725, 0x16B9, 0x7726, 0x16BA, 0x7729, 0x16B6, 0x7734, 0x3A1A, 0x7736, - 0x3A1B, 0x7737, 0x16BC, 0x7738, 0x16BD, 0x773A, 0x0BCB, 0x773C, 0x061F, - 0x7740, 0x0BA3, 0x7746, 0x217C, 0x7747, 0x16BE, 0x775A, 0x16BF, 0x775B, - 0x16C2, 0x775C, 0x3A1C, 0x775F, 0x3A1D, 0x7760, 0x3A1E, 0x7761, 0x0A2D, - 0x7762, 0x1EC5, 0x7763, 0x0C9C, 0x7765, 0x16C3, 0x7766, 0x0E81, 0x7768, - 0x16C0, 0x776A, 0x3755, 0x776B, 0x16C1, 0x7772, 0x3A1F, 0x7779, 0x16C6, - 0x777D, 0x3A20, 0x777E, 0x16C5, 0x777F, 0x16C4, 0x778B, 0x16C8, 0x778E, - 0x16C7, 0x7791, 0x16C9, 0x7795, 0x3A21, 0x779E, 0x16CB, 0x77A0, 0x16CA, - 0x77A5, 0x0E1D, 0x77A9, 0x3756, 0x77AA, 0x3A22, 0x77AC, 0x0960, 0x77AD, - 0x0F8E, 0x77B0, 0x16CC, 0x77B3, 0x0C8F, 0x77B6, 0x16CD, 0x77B9, 0x16CE, - 0x77BB, 0x16D2, 0x77BC, 0x16D0, 0x77BD, 0x16D1, 0x77BF, 0x16CF, 0x77C7, - 0x16D3, 0x77CD, 0x16D4, 0x77D7, 0x16D5, 0x77DA, 0x16D6, 0x77DB, 0x0EC3, - 0x77DC, 0x16D7, 0x77E2, 0x0EFC, 0x77E3, 0x16D8, 0x77E5, 0x0B8C, 0x77E6, - 0x3A23, 0x77E7, 0x0D20, 0x77E9, 0x06E3, 0x77ED, 0x0B79, 0x77EE, 0x16D9, - 0x77EF, 0x06B2, 0x77F0, 0x3A24, 0x77F3, 0x0A74, 0x77F4, 0x3A25, 0x77FC, - 0x16DA, 0x7802, 0x082D, 0x7806, 0x3A26, 0x780C, 0x16DB, 0x7812, 0x16DC, - 0x7814, 0x075A, 0x7815, 0x0845, 0x7820, 0x16DE, 0x7821, 0x217E, 0x7822, - 0x3A27, 0x7825, 0x0C50, 0x7826, 0x0846, 0x7827, 0x0668, 0x782D, 0x3A28, - 0x782E, 0x3A29, 0x7830, 0x3A2A, 0x7832, 0x0E52, 0x7834, 0x0D01, 0x7835, - 0x3A2B, 0x783A, 0x0C51, 0x783F, 0x07EE, 0x7845, 0x16E0, 0x784E, 0x217F, - 0x784F, 0x341E, 0x7851, 0x3C3C, 0x785D, 0x09B3, 0x7864, 0x2180, 0x7868, - 0x3A2C, 0x786B, 0x0F7A, 0x786C, 0x07D7, 0x786F, 0x075B, 0x7872, 0x0D37, - 0x7874, 0x16E2, 0x787A, 0x2181, 0x787C, 0x16E4, 0x7881, 0x079F, 0x7886, - 0x16E3, 0x7887, 0x0C12, 0x788C, 0x16E6, 0x788D, 0x0595, 0x788E, 0x16E1, - 0x7891, 0x0D7E, 0x7893, 0x04D2, 0x7895, 0x085C, 0x7897, 0x0FF8, 0x789A, - 0x16E5, 0x789E, 0x3A2D, 0x78A3, 0x16E7, 0x78A7, 0x0E1B, 0x78A9, 0x0A7D, - 0x78AA, 0x16E9, 0x78AF, 0x16EA, 0x78B5, 0x16E8, 0x78BA, 0x05AC, 0x78BC, - 0x16F0, 0x78BE, 0x16EF, 0x78C1, 0x08D3, 0x78C5, 0x16F1, 0x78C6, 0x16EC, - 0x78C8, 0x3A2E, 0x78CA, 0x16F2, 0x78CB, 0x16ED, 0x78CC, 0x3A2F, 0x78CE, - 0x3A30, 0x78D0, 0x0D6C, 0x78D1, 0x16EB, 0x78D4, 0x16EE, 0x78DA, 0x16F5, - 0x78E0, 0x3A32, 0x78E1, 0x3A33, 0x78E4, 0x3A31, 0x78E7, 0x16F4, 0x78E8, - 0x0E8F, 0x78EC, 0x16F3, 0x78EF, 0x04AF, 0x78F2, 0x3A34, 0x78F4, 0x16F7, - 0x78F7, 0x3A35, 0x78FB, 0x3A36, 0x78FD, 0x16F6, 0x7901, 0x09B4, 0x7907, - 0x16F8, 0x790E, 0x0AC5, 0x7911, 0x16FA, 0x7912, 0x16F9, 0x7919, 0x16FB, - 0x7926, 0x16DD, 0x792A, 0x16DF, 0x792B, 0x16FD, 0x792C, 0x16FC, 0x7930, - 0x2182, 0x7931, 0x3A37, 0x7934, 0x3A38, 0x793A, 0x08D4, 0x793B, 0x3A39, - 0x793C, 0x0FB1, 0x793D, 0x3A3A, 0x793E, 0x08FE, 0x7940, 0x16FE, 0x7941, - 0x070D, 0x7945, 0x3A3B, 0x7947, 0x065A, 0x7948, 0x0641, 0x7949, 0x08B1, - 0x7950, 0x0F1E, 0x7953, 0x1704, 0x7955, 0x1703, 0x7956, 0x0AC6, 0x7957, - 0x1700, 0x795A, 0x1702, 0x795B, 0x3A3C, 0x795C, 0x3A3D, 0x795D, 0x0955, - 0x795E, 0x0A06, 0x795F, 0x1701, 0x7960, 0x16FF, 0x7962, 0x0CE0, 0x7965, - 0x09B5, 0x7968, 0x0DAE, 0x796D, 0x0847, 0x7977, 0x0C72, 0x797A, 0x1705, - 0x797F, 0x1706, 0x7980, 0x171C, 0x7981, 0x06D0, 0x7984, 0x0FE3, 0x7985, - 0x0AB7, 0x798A, 0x1707, 0x798B, 0x3A3E, 0x798D, 0x0552, 0x798E, 0x0C13, - 0x798F, 0x0DF1, 0x7994, 0x2186, 0x7996, 0x3A3F, 0x7998, 0x3A40, 0x799B, - 0x2188, 0x799D, 0x1708, 0x79A6, 0x0694, 0x79A7, 0x1709, 0x79AA, 0x170B, - 0x79AE, 0x170C, 0x79B0, 0x0CDF, 0x79B1, 0x1E4E, 0x79B3, 0x170D, 0x79B8, - 0x3A41, 0x79B9, 0x170E, 0x79BA, 0x170F, 0x79BB, 0x3A42, 0x79BD, 0x06D1, - 0x79BE, 0x0553, 0x79BF, 0x0C9D, 0x79C0, 0x0932, 0x79C1, 0x08B2, 0x79C9, - 0x1710, 0x79CA, 0x3A43, 0x79CB, 0x0933, 0x79D1, 0x054A, 0x79D2, 0x0DB5, - 0x79D5, 0x1711, 0x79D8, 0x0D7F, 0x79DA, 0x3A44, 0x79DF, 0x0AC7, 0x79E1, - 0x1714, 0x79E3, 0x1715, 0x79E4, 0x0D1F, 0x79E6, 0x0A07, 0x79E7, 0x1712, - 0x79E9, 0x0B9F, 0x79EC, 0x1713, 0x79F0, 0x09B6, 0x79FB, 0x04A0, 0x7A00, - 0x0643, 0x7A03, 0x3A45, 0x7A05, 0x3633, 0x7A08, 0x1716, 0x7A09, 0x3A46, - 0x7A0B, 0x0C14, 0x7A0D, 0x1717, 0x7A0E, 0x0A6B, 0x7A11, 0x3A47, 0x7A14, - 0x0EB9, 0x7A17, 0x0D95, 0x7A18, 0x1718, 0x7A19, 0x1719, 0x7A1A, 0x0B93, - 0x7A1C, 0x0F8F, 0x7A1E, 0x3A48, 0x7A1F, 0x171B, 0x7A20, 0x171A, 0x7A2D, - 0x3A49, 0x7A2E, 0x091B, 0x7A31, 0x171D, 0x7A32, 0x04B4, 0x7A37, 0x1720, - 0x7A39, 0x3A4A, 0x7A3B, 0x171E, 0x7A3C, 0x0554, 0x7A3D, 0x0724, 0x7A3E, - 0x171F, 0x7A3F, 0x07D8, 0x7A40, 0x0804, 0x7A42, 0x0E36, 0x7A43, 0x1721, - 0x7A45, 0x3A4B, 0x7A46, 0x0E82, 0x7A49, 0x1723, 0x7A4C, 0x3A4C, 0x7A4D, - 0x0A75, 0x7A4E, 0x04F1, 0x7A4F, 0x053A, 0x7A50, 0x0470, 0x7A57, 0x1722, - 0x7A5D, 0x3A4D, 0x7A60, 0x3A4E, 0x7A61, 0x1724, 0x7A62, 0x1725, 0x7A63, - 0x09DF, 0x7A69, 0x1726, 0x7A6B, 0x05AD, 0x7A6D, 0x3A4F, 0x7A70, 0x1728, - 0x7A74, 0x0740, 0x7A76, 0x0680, 0x7A78, 0x3A50, 0x7A79, 0x1729, 0x7A7A, - 0x06ED, 0x7A7D, 0x172A, 0x7A7F, 0x0AA0, 0x7A81, 0x0CA5, 0x7A83, 0x0A84, - 0x7A84, 0x0865, 0x7A88, 0x172B, 0x7A92, 0x0BA0, 0x7A93, 0x0AED, 0x7A95, - 0x172D, 0x7A96, 0x172F, 0x7A97, 0x172C, 0x7A98, 0x172E, 0x7A9F, 0x06F8, - 0x7AA0, 0x3A51, 0x7AA3, 0x3A52, 0x7AA9, 0x1730, 0x7AAA, 0x06FC, 0x7AAE, - 0x0681, 0x7AAF, 0x0F3C, 0x7AB0, 0x1732, 0x7AB3, 0x3A53, 0x7AB6, 0x1733, - 0x7ABA, 0x04D0, 0x7ABB, 0x3A54, 0x7ABC, 0x3A55, 0x7ABF, 0x1736, 0x7AC3, - 0x05D4, 0x7AC4, 0x1735, 0x7AC5, 0x1734, 0x7AC6, 0x3A56, 0x7AC7, 0x1738, - 0x7AC8, 0x1731, 0x7ACA, 0x1739, 0x7ACB, 0x0F71, 0x7ACD, 0x173A, 0x7ACF, - 0x173B, 0x7AD1, 0x2189, 0x7AD2, 0x11C5, 0x7AD3, 0x173D, 0x7AD5, 0x173C, - 0x7AD9, 0x173E, 0x7ADA, 0x173F, 0x7ADC, 0x0F7D, 0x7ADD, 0x1740, 0x7ADF, - 0x1C08, 0x7AE0, 0x09B7, 0x7AE1, 0x1741, 0x7AE2, 0x1742, 0x7AE3, 0x0961, - 0x7AE5, 0x0C90, 0x7AE6, 0x1743, 0x7AE7, 0x218A, 0x7AEA, 0x0B66, 0x7AEB, - 0x218C, 0x7AED, 0x1744, 0x7AEF, 0x0B7A, 0x7AF0, 0x1745, 0x7AF6, 0x069D, - 0x7AF8, 0x1076, 0x7AF9, 0x0B9B, 0x7AFA, 0x08DF, 0x7AFF, 0x0604, 0x7B02, - 0x1746, 0x7B04, 0x1753, 0x7B06, 0x1749, 0x7B07, 0x3A57, 0x7B08, 0x0682, - 0x7B0A, 0x1748, 0x7B0B, 0x1755, 0x7B0F, 0x1747, 0x7B11, 0x09B8, 0x7B14, - 0x3A58, 0x7B18, 0x174B, 0x7B19, 0x174C, 0x7B1B, 0x0C25, 0x7B1E, 0x174D, - 0x7B20, 0x05BC, 0x7B25, 0x0A20, 0x7B26, 0x0DD6, 0x7B27, 0x3A59, 0x7B28, - 0x174F, 0x7B2C, 0x0B48, 0x7B31, 0x3A5A, 0x7B33, 0x174A, 0x7B35, 0x174E, - 0x7B36, 0x1750, 0x7B39, 0x086B, 0x7B45, 0x1757, 0x7B46, 0x0DA0, 0x7B47, - 0x3A5B, 0x7B48, 0x0D3A, 0x7B49, 0x0C73, 0x7B4B, 0x06D2, 0x7B4C, 0x1756, - 0x7B4D, 0x1754, 0x7B4E, 0x3A5C, 0x7B4F, 0x0D49, 0x7B50, 0x1751, 0x7B51, - 0x0B9C, 0x7B52, 0x0C75, 0x7B53, 0x375D, 0x7B54, 0x0C74, 0x7B56, 0x0866, - 0x7B5D, 0x1769, 0x7B60, 0x3A5D, 0x7B65, 0x1759, 0x7B67, 0x175B, 0x7B69, - 0x3A5E, 0x7B6C, 0x175E, 0x7B6D, 0x3A5F, 0x7B6E, 0x175F, 0x7B70, 0x175C, - 0x7B71, 0x175D, 0x7B72, 0x3A60, 0x7B74, 0x175A, 0x7B75, 0x1758, 0x7B7A, - 0x1752, 0x7B86, 0x0E1F, 0x7B87, 0x0555, 0x7B8B, 0x1766, 0x7B8D, 0x1763, - 0x7B8F, 0x1768, 0x7B91, 0x3A61, 0x7B92, 0x1767, 0x7B94, 0x0D29, 0x7B95, - 0x0EB3, 0x7B97, 0x0889, 0x7B98, 0x1761, 0x7B99, 0x176A, 0x7B9A, 0x1765, - 0x7B9C, 0x1764, 0x7B9D, 0x1760, 0x7B9E, 0x218D, 0x7B9F, 0x1762, 0x7BA1, - 0x0605, 0x7BAA, 0x0B7B, 0x7BAD, 0x0AA1, 0x7BAF, 0x3A62, 0x7BB1, 0x0D36, - 0x7BB4, 0x176F, 0x7BB8, 0x0D38, 0x7BC0, 0x0A85, 0x7BC1, 0x176C, 0x7BC4, - 0x0D63, 0x7BC6, 0x1770, 0x7BC7, 0x0E23, 0x7BC9, 0x0B99, 0x7BCB, 0x176B, - 0x7BCC, 0x176D, 0x7BCF, 0x176E, 0x7BD7, 0x3A63, 0x7BD9, 0x3A64, 0x7BDD, - 0x1771, 0x7BE0, 0x08F0, 0x7BE4, 0x0C9E, 0x7BE5, 0x1776, 0x7BE6, 0x1775, - 0x7BE9, 0x1772, 0x7BED, 0x0FDC, 0x7BF3, 0x177B, 0x7BF6, 0x177F, 0x7BF7, - 0x177C, 0x7C00, 0x1778, 0x7C07, 0x1779, 0x7C0B, 0x3A65, 0x7C0D, 0x177E, - 0x7C0F, 0x3A66, 0x7C11, 0x1773, 0x7C12, 0x10EA, 0x7C13, 0x177A, 0x7C14, - 0x1774, 0x7C17, 0x177D, 0x7C1E, 0x1E3B, 0x7C1F, 0x1783, 0x7C20, 0x3A67, - 0x7C21, 0x0606, 0x7C23, 0x1780, 0x7C26, 0x3A68, 0x7C27, 0x1781, 0x7C2A, - 0x1782, 0x7C2B, 0x1785, 0x7C31, 0x3A69, 0x7C36, 0x3A6A, 0x7C37, 0x1784, - 0x7C38, 0x0D8A, 0x7C3D, 0x1786, 0x7C3E, 0x0FC4, 0x7C3F, 0x0E3D, 0x7C40, - 0x178B, 0x7C43, 0x1788, 0x7C4C, 0x1787, 0x7C4D, 0x0A76, 0x7C4F, 0x178A, - 0x7C50, 0x178C, 0x7C51, 0x3A6B, 0x7C54, 0x1789, 0x7C56, 0x1790, 0x7C58, - 0x178D, 0x7C59, 0x3A6C, 0x7C5F, 0x178E, 0x7C60, 0x1777, 0x7C64, 0x178F, - 0x7C65, 0x1791, 0x7C67, 0x3A6D, 0x7C6C, 0x1792, 0x7C6E, 0x3A6E, 0x7C70, - 0x3A6F, 0x7C73, 0x0E16, 0x7C75, 0x1793, 0x7C7B, 0x370E, 0x7C7E, 0x0EEE, - 0x7C81, 0x06C6, 0x7C82, 0x06FF, 0x7C83, 0x1794, 0x7C89, 0x0E04, 0x7C8B, - 0x0A2E, 0x7C8D, 0x0EBC, 0x7C90, 0x1795, 0x7C92, 0x0F7B, 0x7C95, 0x0D2A, - 0x7C97, 0x0AC8, 0x7C98, 0x0CEA, 0x7C9B, 0x0957, 0x7C9F, 0x0484, 0x7CA1, - 0x179A, 0x7CA2, 0x1798, 0x7CA4, 0x1796, 0x7CA5, 0x05DD, 0x7CA7, 0x09B9, - 0x7CA8, 0x179B, 0x7CAB, 0x1799, 0x7CAD, 0x1797, 0x7CAE, 0x179F, 0x7CB1, - 0x179E, 0x7CB2, 0x179D, 0x7CB3, 0x179C, 0x7CB9, 0x17A0, 0x7CBC, 0x3A70, - 0x7CBD, 0x17A1, 0x7CBE, 0x0A5E, 0x7CBF, 0x3A71, 0x7CC0, 0x17A2, 0x7CC2, - 0x17A4, 0x7CC5, 0x17A3, 0x7CC8, 0x3A72, 0x7CC9, 0x3A73, 0x7CCA, 0x0786, - 0x7CCE, 0x0ABA, 0x7CD2, 0x17A6, 0x7CD6, 0x0C76, 0x7CD7, 0x3A74, 0x7CD8, - 0x17A5, 0x7CD9, 0x3A75, 0x7CDC, 0x17A7, 0x7CDD, 0x3A76, 0x7CDE, 0x0E05, - 0x7CDF, 0x0AEE, 0x7CE0, 0x07D9, 0x7CE2, 0x17A8, 0x7CE7, 0x0F90, 0x7CEB, - 0x3A77, 0x7CEF, 0x17AA, 0x7CF2, 0x17AB, 0x7CF4, 0x17AC, 0x7CF6, 0x17AD, - 0x7CF8, 0x08B3, 0x7CFA, 0x17AE, 0x7CFB, 0x0725, 0x7CFE, 0x0684, 0x7D00, - 0x0644, 0x7D02, 0x17B0, 0x7D04, 0x0EFF, 0x7D05, 0x07DA, 0x7D06, 0x17AF, - 0x7D07, 0x3A78, 0x7D08, 0x3A79, 0x7D09, 0x3A7A, 0x7D0A, 0x17B3, 0x7D0B, - 0x0EF2, 0x7D0D, 0x0CF2, 0x7D10, 0x0DA5, 0x7D13, 0x3A7B, 0x7D14, 0x096D, - 0x7D15, 0x17B2, 0x7D17, 0x08FF, 0x7D18, 0x07DB, 0x7D19, 0x08B4, 0x7D1A, - 0x0683, 0x7D1B, 0x0E06, 0x7D1C, 0x17B1, 0x7D1D, 0x3A7C, 0x7D20, 0x0AC9, - 0x7D21, 0x0E70, 0x7D22, 0x0867, 0x7D23, 0x3A7D, 0x7D2B, 0x08B5, 0x7D2C, - 0x0BF9, 0x7D2E, 0x17B6, 0x7D2F, 0x0FA7, 0x7D30, 0x0849, 0x7D32, 0x17B7, - 0x7D33, 0x0A08, 0x7D35, 0x17B9, 0x7D39, 0x09BA, 0x7D3A, 0x0820, 0x7D3F, - 0x17B8, 0x7D41, 0x3A7E, 0x7D42, 0x0934, 0x7D43, 0x0772, 0x7D44, 0x0ACA, - 0x7D45, 0x17B4, 0x7D46, 0x17BA, 0x7D48, 0x218F, 0x7D4B, 0x17B5, 0x7D4C, - 0x0726, 0x7D4E, 0x17BD, 0x7D4F, 0x17C1, 0x7D50, 0x0741, 0x7D53, 0x3A7F, - 0x7D56, 0x17BC, 0x7D59, 0x3A80, 0x7D5B, 0x17C5, 0x7D5C, 0x2190, 0x7D5D, - 0x3A81, 0x7D5E, 0x07DC, 0x7D61, 0x0F57, 0x7D62, 0x0480, 0x7D63, 0x17C2, - 0x7D66, 0x0685, 0x7D68, 0x17BF, 0x7D6E, 0x17C0, 0x7D71, 0x0C77, 0x7D72, - 0x17BE, 0x7D73, 0x17BB, 0x7D75, 0x0586, 0x7D76, 0x0A88, 0x7D79, 0x075C, - 0x7D7A, 0x3A82, 0x7D7D, 0x17C7, 0x7D86, 0x3A83, 0x7D89, 0x17C4, 0x7D8B, - 0x3A84, 0x7D8C, 0x3A85, 0x7D8F, 0x17C6, 0x7D93, 0x17C3, 0x7D99, 0x0727, - 0x7D9A, 0x0B13, 0x7D9B, 0x17C8, 0x7D9C, 0x0AF0, 0x7D9F, 0x17D5, 0x7DA0, - 0x2192, 0x7DA2, 0x17D1, 0x7DA3, 0x17CB, 0x7DAB, 0x17CF, 0x7DAC, 0x0926, - 0x7DAD, 0x04A1, 0x7DAE, 0x17CA, 0x7DAF, 0x17D2, 0x7DB0, 0x17D6, 0x7DB1, - 0x07DD, 0x7DB2, 0x0EE2, 0x7DB4, 0x0BF2, 0x7DB5, 0x17CC, 0x7DB7, 0x2191, - 0x7DB8, 0x17D4, 0x7DBA, 0x17C9, 0x7DBB, 0x0B7C, 0x7DBD, 0x17CE, 0x7DBE, - 0x0481, 0x7DBF, 0x0ED6, 0x7DC7, 0x17CD, 0x7DCA, 0x06D3, 0x7DCB, 0x0D80, - 0x7DCC, 0x3A86, 0x7DCF, 0x0AEF, 0x7DD1, 0x0F98, 0x7DD2, 0x0979, 0x7DD5, - 0x17FD, 0x7DD6, 0x2193, 0x7DD8, 0x17D7, 0x7DDA, 0x0AA2, 0x7DDC, 0x17D3, - 0x7DDD, 0x17D8, 0x7DDE, 0x17DA, 0x7DE0, 0x0C15, 0x7DE1, 0x17DD, 0x7DE3, - 0x340A, 0x7DE4, 0x17D9, 0x7DE8, 0x0E24, 0x7DE9, 0x0607, 0x7DEB, 0x3A87, - 0x7DEC, 0x0ED7, 0x7DEF, 0x04A2, 0x7DF1, 0x3A88, 0x7DF2, 0x17DC, 0x7DF4, - 0x0FC5, 0x7DF9, 0x3A89, 0x7DFB, 0x17DB, 0x7E01, 0x0511, 0x7E04, 0x0CC4, - 0x7E05, 0x17DE, 0x7E08, 0x3A8A, 0x7E09, 0x17E5, 0x7E0A, 0x17DF, 0x7E0B, - 0x17E6, 0x7E11, 0x3A8B, 0x7E12, 0x17E2, 0x7E15, 0x3A8C, 0x7E1B, 0x0D31, - 0x7E1E, 0x08F6, 0x7E1F, 0x17E4, 0x7E20, 0x3A8D, 0x7E21, 0x17E1, 0x7E22, - 0x17E7, 0x7E23, 0x17E0, 0x7E26, 0x094E, 0x7E2B, 0x0E53, 0x7E2E, 0x0956, - 0x7E31, 0x17E3, 0x7E32, 0x17EF, 0x7E35, 0x17EB, 0x7E37, 0x17EE, 0x7E39, - 0x17EC, 0x7E3A, 0x17F0, 0x7E3B, 0x17EA, 0x7E3D, 0x17D0, 0x7E3E, 0x0A77, - 0x7E41, 0x0D5F, 0x7E43, 0x17ED, 0x7E46, 0x17E8, 0x7E47, 0x3A8E, 0x7E48, - 0x3767, 0x7E4A, 0x0AA3, 0x7E4B, 0x0728, 0x7E4D, 0x0935, 0x7E52, 0x2194, - 0x7E54, 0x09EB, 0x7E55, 0x0AB8, 0x7E56, 0x17F3, 0x7E59, 0x17F5, 0x7E5A, - 0x17F6, 0x7E5D, 0x17F2, 0x7E5E, 0x17F4, 0x7E61, 0x1E11, 0x7E62, 0x3A8F, - 0x7E66, 0x17E9, 0x7E67, 0x17F1, 0x7E69, 0x17F9, 0x7E6A, 0x17F8, 0x7E6B, - 0x1DF7, 0x7E6D, 0x0EA8, 0x7E6E, 0x3A90, 0x7E70, 0x0701, 0x7E73, 0x3A91, - 0x7E79, 0x17F7, 0x7E7B, 0x17FB, 0x7E7C, 0x17FA, 0x7E7D, 0x17FE, 0x7E7F, - 0x1800, 0x7E82, 0x088A, 0x7E83, 0x17FC, 0x7E88, 0x1801, 0x7E89, 0x1802, - 0x7E8A, 0x20A7, 0x7E8C, 0x1803, 0x7E8D, 0x3A92, 0x7E8E, 0x1809, 0x7E8F, - 0x0C35, 0x7E90, 0x1805, 0x7E91, 0x3A93, 0x7E92, 0x1804, 0x7E93, 0x1806, - 0x7E94, 0x1807, 0x7E96, 0x1808, 0x7E98, 0x3A94, 0x7E9B, 0x180A, 0x7E9C, - 0x180B, 0x7F36, 0x0608, 0x7F38, 0x180C, 0x7F3A, 0x180D, 0x7F44, 0x3A95, - 0x7F45, 0x180E, 0x7F47, 0x2195, 0x7F4C, 0x180F, 0x7F4D, 0x1810, 0x7F4E, - 0x1811, 0x7F4F, 0x3A96, 0x7F50, 0x1812, 0x7F51, 0x1813, 0x7F52, 0x3A97, - 0x7F53, 0x3A98, 0x7F54, 0x1815, 0x7F55, 0x1814, 0x7F58, 0x1816, 0x7F5F, - 0x1817, 0x7F60, 0x1818, 0x7F61, 0x3A99, 0x7F67, 0x181B, 0x7F68, 0x1819, - 0x7F69, 0x181A, 0x7F6A, 0x0851, 0x7F6B, 0x0729, 0x7F6E, 0x0B94, 0x7F70, - 0x0D47, 0x7F72, 0x097A, 0x7F75, 0x0D03, 0x7F77, 0x0D81, 0x7F78, 0x181C, - 0x7F79, 0x1336, 0x7F82, 0x181D, 0x7F83, 0x181F, 0x7F85, 0x0F4F, 0x7F86, - 0x181E, 0x7F87, 0x1821, 0x7F88, 0x1820, 0x7F8A, 0x0F3D, 0x7F8C, 0x1822, - 0x7F8E, 0x0D92, 0x7F91, 0x3A9A, 0x7F94, 0x1823, 0x7F9A, 0x1826, 0x7F9D, - 0x1825, 0x7F9E, 0x1824, 0x7FA1, 0x2196, 0x7FA3, 0x1827, 0x7FA4, 0x0708, - 0x7FA8, 0x0AA4, 0x7FA9, 0x065B, 0x7FAE, 0x182B, 0x7FAF, 0x1828, 0x7FB2, - 0x1829, 0x7FB6, 0x182C, 0x7FB8, 0x182D, 0x7FB9, 0x182A, 0x7FBD, 0x04CB, - 0x7FBF, 0x3A9B, 0x7FC1, 0x0527, 0x7FC5, 0x182F, 0x7FC6, 0x1830, 0x7FCA, - 0x1831, 0x7FCC, 0x0F4C, 0x7FCE, 0x3A9C, 0x7FD2, 0x0936, 0x7FD4, 0x1833, - 0x7FD5, 0x1832, 0x7FDF, 0x3A9D, 0x7FE0, 0x0A2F, 0x7FE1, 0x1834, 0x7FE5, - 0x3A9E, 0x7FE6, 0x1835, 0x7FE9, 0x1836, 0x7FEB, 0x0621, 0x7FEC, 0x3A9F, - 0x7FEE, 0x3AA0, 0x7FEF, 0x3AA1, 0x7FF0, 0x0609, 0x7FF3, 0x1837, 0x7FF9, - 0x1838, 0x7FFA, 0x3AA2, 0x7FFB, 0x0E8B, 0x7FFC, 0x0F4D, 0x8000, 0x0F3E, - 0x8001, 0x0FDD, 0x8002, 0x3713, 0x8003, 0x07DF, 0x8004, 0x183B, 0x8005, - 0x0900, 0x8006, 0x183A, 0x800B, 0x183C, 0x800C, 0x08D5, 0x800E, 0x3AA3, - 0x8010, 0x0B31, 0x8011, 0x3AA4, 0x8012, 0x183D, 0x8014, 0x3AA5, 0x8015, - 0x07DE, 0x8017, 0x0EE3, 0x8018, 0x183E, 0x8019, 0x183F, 0x801C, 0x1840, - 0x8021, 0x1841, 0x8024, 0x3AA6, 0x8026, 0x3AA7, 0x8028, 0x1842, 0x8033, - 0x08D6, 0x8036, 0x0EF9, 0x803A, 0x3AA8, 0x803B, 0x1844, 0x803C, 0x3AA9, - 0x803D, 0x0B7D, 0x803F, 0x1843, 0x8046, 0x1846, 0x804A, 0x1845, 0x8052, - 0x1847, 0x8056, 0x0A5F, 0x8058, 0x1848, 0x805A, 0x1849, 0x805E, 0x0E09, - 0x805F, 0x184A, 0x8060, 0x3AAA, 0x8061, 0x0AF1, 0x8062, 0x184B, 0x8068, - 0x184C, 0x806F, 0x0FC6, 0x8070, 0x184F, 0x8071, 0x3AAB, 0x8072, 0x184E, - 0x8073, 0x184D, 0x8074, 0x0BCC, 0x8075, 0x3AAC, 0x8076, 0x1850, 0x8077, - 0x09EC, 0x8079, 0x1851, 0x807D, 0x1852, 0x807E, 0x0FDE, 0x807F, 0x1853, - 0x8084, 0x1854, 0x8085, 0x1856, 0x8086, 0x1855, 0x8087, 0x0D39, 0x8089, - 0x0CD1, 0x808B, 0x0FE4, 0x808C, 0x0D3D, 0x8093, 0x1858, 0x8096, 0x09BB, - 0x8098, 0x0D9C, 0x809A, 0x1859, 0x809B, 0x1857, 0x809D, 0x060A, 0x809E, - 0x3AAD, 0x80A1, 0x0788, 0x80A2, 0x08B6, 0x80A5, 0x0D82, 0x80A6, 0x3AAE, - 0x80A9, 0x075E, 0x80AA, 0x0E71, 0x80AB, 0x3AAF, 0x80AC, 0x185C, 0x80AD, - 0x185A, 0x80AF, 0x07E0, 0x80B1, 0x07E1, 0x80B2, 0x04AD, 0x80B4, 0x0858, - 0x80BA, 0x0D0F, 0x80C3, 0x04A3, 0x80C4, 0x1861, 0x80C6, 0x0B7E, 0x80CC, - 0x0D0E, 0x80CE, 0x0B3B, 0x80D6, 0x1863, 0x80D7, 0x3AB0, 0x80D8, 0x3AB1, - 0x80D9, 0x185F, 0x80DA, 0x1862, 0x80DB, 0x185D, 0x80DD, 0x1860, 0x80DE, - 0x0E54, 0x80E1, 0x0789, 0x80E4, 0x04C1, 0x80E5, 0x185E, 0x80EF, 0x1865, - 0x80F1, 0x1866, 0x80F4, 0x0C91, 0x80F8, 0x06B3, 0x80FC, 0x1871, 0x80FD, - 0x0CF3, 0x8102, 0x08B7, 0x8105, 0x06B4, 0x8106, 0x0A6C, 0x8107, 0x0FEC, - 0x8108, 0x0EBA, 0x8109, 0x1864, 0x810A, 0x0A78, 0x8116, 0x3AB2, 0x8118, - 0x3AB3, 0x811A, 0x066D, 0x811B, 0x1867, 0x8123, 0x1869, 0x8129, 0x1868, - 0x812B, 0x3659, 0x812F, 0x186A, 0x8131, 0x0B64, 0x8133, 0x0CF4, 0x8139, - 0x0BCD, 0x813A, 0x3AB4, 0x813E, 0x186E, 0x8141, 0x3772, 0x8146, 0x186D, - 0x814A, 0x3AB5, 0x814B, 0x186B, 0x814C, 0x3AB6, 0x814E, 0x0A1B, 0x8150, - 0x0DD7, 0x8151, 0x1870, 0x8153, 0x186F, 0x8154, 0x07E2, 0x8155, 0x0FF9, - 0x815F, 0x1880, 0x8165, 0x1874, 0x8166, 0x1875, 0x816B, 0x091C, 0x816E, - 0x1873, 0x8170, 0x080A, 0x8171, 0x1872, 0x8174, 0x1876, 0x8178, 0x0BCE, - 0x8179, 0x0DF2, 0x817A, 0x0AA5, 0x817F, 0x0B3C, 0x8180, 0x187A, 0x8181, - 0x3AB7, 0x8182, 0x187B, 0x8183, 0x1877, 0x8184, 0x3AB8, 0x8188, 0x1878, - 0x818A, 0x1879, 0x818F, 0x07E3, 0x8193, 0x1881, 0x8195, 0x187D, 0x819A, - 0x0DD8, 0x819C, 0x0E9A, 0x819D, 0x0D9A, 0x81A0, 0x187C, 0x81A3, 0x187F, - 0x81A4, 0x187E, 0x81A8, 0x0E72, 0x81A9, 0x1882, 0x81B0, 0x1883, 0x81B3, - 0x0AB9, 0x81B4, 0x3AB9, 0x81B5, 0x1884, 0x81B8, 0x1886, 0x81BA, 0x188A, - 0x81BD, 0x1887, 0x81BE, 0x1885, 0x81BF, 0x0CF5, 0x81C0, 0x1888, 0x81C2, - 0x1889, 0x81C6, 0x0532, 0x81C8, 0x1890, 0x81C9, 0x188B, 0x81CD, 0x188C, - 0x81CF, 0x3ABA, 0x81D1, 0x188D, 0x81D3, 0x0B01, 0x81D8, 0x188F, 0x81D9, - 0x188E, 0x81DA, 0x1891, 0x81DF, 0x1892, 0x81E0, 0x1893, 0x81E3, 0x0A09, - 0x81E5, 0x0569, 0x81E7, 0x1894, 0x81E8, 0x0F9F, 0x81EA, 0x08D7, 0x81ED, - 0x0937, 0x81F3, 0x08B8, 0x81F4, 0x0B95, 0x81F9, 0x3ABB, 0x81FA, 0x1895, - 0x81FB, 0x1896, 0x81FC, 0x04D3, 0x81FE, 0x1897, 0x8201, 0x1898, 0x8202, - 0x1899, 0x8203, 0x3ABC, 0x8205, 0x189A, 0x8207, 0x189B, 0x8208, 0x06B5, - 0x8209, 0x13AF, 0x820A, 0x189C, 0x820C, 0x0A89, 0x820D, 0x189D, 0x820E, - 0x08F7, 0x8210, 0x189E, 0x8212, 0x1009, 0x8216, 0x189F, 0x8217, 0x0E2E, - 0x8218, 0x0618, 0x821B, 0x0AA6, 0x821C, 0x0962, 0x821E, 0x0DE3, 0x821F, - 0x0938, 0x8221, 0x3ABD, 0x8229, 0x18A0, 0x822A, 0x07E4, 0x822B, 0x18A1, - 0x822C, 0x0D60, 0x822E, 0x18AF, 0x8232, 0x3ABE, 0x8233, 0x18A3, 0x8234, - 0x3ABF, 0x8235, 0x0B29, 0x8236, 0x0D2B, 0x8237, 0x0773, 0x8238, 0x18A2, - 0x8239, 0x0AA7, 0x8240, 0x18A4, 0x8246, 0x3AC0, 0x8247, 0x0C16, 0x824B, - 0x3AC1, 0x824F, 0x3AC2, 0x8258, 0x18A6, 0x8259, 0x18A5, 0x825A, 0x18A8, - 0x825D, 0x18A7, 0x825F, 0x18A9, 0x8262, 0x18AB, 0x8264, 0x18AA, 0x8266, - 0x060B, 0x8268, 0x18AC, 0x826A, 0x18AD, 0x826B, 0x18AE, 0x826E, 0x0821, - 0x826F, 0x0F91, 0x8271, 0x18B0, 0x8272, 0x09ED, 0x8276, 0x0512, 0x8277, - 0x18B1, 0x8278, 0x18B2, 0x8279, 0x3775, 0x827E, 0x18B3, 0x828B, 0x04B6, - 0x828D, 0x18B4, 0x828E, 0x3AC3, 0x8292, 0x18B5, 0x8299, 0x0DD9, 0x829D, - 0x08F3, 0x829F, 0x18B7, 0x82A5, 0x0587, 0x82A6, 0x0476, 0x82AB, 0x18B6, - 0x82AC, 0x18B9, 0x82AD, 0x0D04, 0x82AE, 0x3AC4, 0x82AF, 0x0A0A, 0x82B1, - 0x0556, 0x82B3, 0x0E55, 0x82B7, 0x3AC5, 0x82B8, 0x0733, 0x82B9, 0x06D4, - 0x82BB, 0x18B8, 0x82BD, 0x056A, 0x82BE, 0x3AC6, 0x82C5, 0x05DF, 0x82C6, - 0x3AC7, 0x82D1, 0x0513, 0x82D2, 0x18BD, 0x82D3, 0x0FB2, 0x82D4, 0x0B3D, - 0x82D7, 0x0DB6, 0x82D9, 0x18C9, 0x82DB, 0x0557, 0x82DC, 0x18C7, 0x82DE, - 0x18C5, 0x82DF, 0x18BC, 0x82E1, 0x18BA, 0x82E3, 0x18BB, 0x82E5, 0x090F, - 0x82E6, 0x06E4, 0x82E7, 0x0BB5, 0x82EB, 0x0CA9, 0x82F1, 0x04F3, 0x82F3, - 0x18BF, 0x82F4, 0x18BE, 0x82F9, 0x18C4, 0x82FA, 0x18C0, 0x82FB, 0x18C3, - 0x82FE, 0x3AC8, 0x8301, 0x2198, 0x8302, 0x0EDC, 0x8303, 0x18C2, 0x8304, - 0x0558, 0x8305, 0x05DB, 0x8306, 0x18C6, 0x8309, 0x18C8, 0x830E, 0x072A, - 0x8316, 0x18CC, 0x8317, 0x18D5, 0x8318, 0x18D6, 0x831C, 0x046F, 0x8323, - 0x18DD, 0x8328, 0x04B5, 0x832B, 0x18D4, 0x832F, 0x18D3, 0x8331, 0x18CE, - 0x8332, 0x18CD, 0x8334, 0x18CB, 0x8335, 0x18CA, 0x8336, 0x0BA1, 0x8338, - 0x0B5B, 0x8339, 0x18D0, 0x8340, 0x18CF, 0x8343, 0x3AC9, 0x8345, 0x18D2, - 0x8349, 0x0AF2, 0x834A, 0x072B, 0x834F, 0x04E3, 0x8350, 0x18D1, 0x8351, - 0x3ACA, 0x8352, 0x07E5, 0x8355, 0x3ACB, 0x8358, 0x0AF3, 0x8362, 0x2199, - 0x8373, 0x18E3, 0x8375, 0x18E4, 0x8377, 0x0559, 0x837B, 0x052E, 0x837C, - 0x18E1, 0x837F, 0x219A, 0x8385, 0x18D7, 0x8386, 0x3ACC, 0x8387, 0x18DF, - 0x8389, 0x18E6, 0x838A, 0x18E0, 0x838D, 0x3ACD, 0x838E, 0x18DE, 0x8392, - 0x3ACE, 0x8393, 0x18C1, 0x8396, 0x18DC, 0x8398, 0x3ACF, 0x839A, 0x18D8, - 0x839E, 0x060C, 0x839F, 0x18DA, 0x83A0, 0x18E5, 0x83A2, 0x18DB, 0x83A8, - 0x18E7, 0x83A9, 0x3AD0, 0x83AA, 0x18D9, 0x83AB, 0x0D32, 0x83B1, 0x0F53, - 0x83B5, 0x18E2, 0x83BD, 0x18F8, 0x83BF, 0x3AD1, 0x83C0, 0x3AD2, 0x83C1, - 0x18F0, 0x83C5, 0x0A41, 0x83C7, 0x219B, 0x83CA, 0x0660, 0x83CC, 0x06D5, - 0x83CE, 0x18EB, 0x83D3, 0x055B, 0x83D6, 0x09BC, 0x83D8, 0x18EE, 0x83DC, - 0x084A, 0x83DF, 0x0C4B, 0x83E0, 0x18F3, 0x83E9, 0x0E3E, 0x83EA, 0x3AD3, - 0x83EB, 0x18EA, 0x83EF, 0x055A, 0x83F0, 0x078A, 0x83F1, 0x0D9B, 0x83F2, - 0x18F4, 0x83F4, 0x18E8, 0x83F6, 0x219C, 0x83F7, 0x18F1, 0x83FB, 0x18FB, - 0x83FD, 0x18EC, 0x8403, 0x18ED, 0x8404, 0x0C92, 0x8407, 0x18F2, 0x840A, - 0x1E7F, 0x840B, 0x18EF, 0x840C, 0x0E56, 0x840D, 0x18F5, 0x840E, 0x04A4, - 0x840F, 0x3AD4, 0x8411, 0x3AD5, 0x8413, 0x18E9, 0x8420, 0x18F7, 0x8422, - 0x18F6, 0x8429, 0x0D21, 0x842A, 0x18FD, 0x842C, 0x1908, 0x8431, 0x05DC, - 0x8435, 0x190B, 0x8438, 0x18F9, 0x843C, 0x18FE, 0x843D, 0x0F58, 0x8446, - 0x1907, 0x8448, 0x219D, 0x8449, 0x0F3F, 0x844A, 0x3AD6, 0x844E, 0x0F72, - 0x8457, 0x0BB6, 0x845B, 0x05C9, 0x8461, 0x0DE4, 0x8462, 0x190D, 0x8463, - 0x0C79, 0x8466, 0x0475, 0x8469, 0x1906, 0x846B, 0x1902, 0x846C, 0x0AF4, - 0x846D, 0x18FC, 0x846E, 0x1904, 0x846F, 0x1909, 0x8471, 0x0CE2, 0x8475, - 0x046E, 0x8476, 0x3AD7, 0x8477, 0x1901, 0x8479, 0x190A, 0x847A, 0x0DEA, - 0x8482, 0x1905, 0x8484, 0x1900, 0x848B, 0x09BD, 0x8490, 0x0939, 0x8494, - 0x08D8, 0x8499, 0x0EE4, 0x849C, 0x0DB9, 0x849F, 0x1910, 0x84A1, 0x1919, - 0x84A8, 0x3AD8, 0x84AD, 0x1903, 0x84AF, 0x3AD9, 0x84B2, 0x05D5, 0x84B4, - 0x219E, 0x84B8, 0x09E0, 0x84B9, 0x190E, 0x84BB, 0x1913, 0x84BC, 0x0AF5, - 0x84BF, 0x190F, 0x84C0, 0x3ADA, 0x84C1, 0x1916, 0x84C2, 0x3ADB, 0x84C4, - 0x0B9D, 0x84C6, 0x1917, 0x84C9, 0x0F40, 0x84CA, 0x190C, 0x84CB, 0x0596, - 0x84CD, 0x1912, 0x84D0, 0x1915, 0x84D1, 0x0EB8, 0x84D6, 0x1918, 0x84D9, - 0x1911, 0x84DA, 0x1914, 0x84DC, 0x20AB, 0x84EC, 0x0E57, 0x84EE, 0x0FC7, - 0x84F0, 0x3ADC, 0x84F4, 0x191C, 0x84FC, 0x1923, 0x84FD, 0x3ADD, 0x84FF, - 0x191B, 0x8500, 0x08EF, 0x8506, 0x18FA, 0x850C, 0x3ADE, 0x8511, 0x0E1E, - 0x8513, 0x0EAE, 0x8514, 0x1922, 0x8515, 0x1921, 0x8517, 0x191D, 0x8518, - 0x191E, 0x851A, 0x04D8, 0x851F, 0x1920, 0x8521, 0x191A, 0x8523, 0x1E1A, - 0x8526, 0x0BF1, 0x852C, 0x191F, 0x852D, 0x04C2, 0x8534, 0x3ADF, 0x8535, - 0x0B02, 0x853D, 0x0E13, 0x853E, 0x1EB5, 0x8540, 0x1924, 0x8541, 0x1928, - 0x8543, 0x0D6D, 0x8548, 0x1927, 0x8549, 0x09BE, 0x854A, 0x08F5, 0x854B, - 0x192A, 0x854E, 0x06B6, 0x8553, 0x219F, 0x8555, 0x192B, 0x8557, 0x0DEB, - 0x8558, 0x1926, 0x8559, 0x21A0, 0x855A, 0x18FF, 0x855E, 0x3AE0, 0x8563, - 0x1925, 0x8568, 0x0FF5, 0x8569, 0x0C7A, 0x856A, 0x0DE5, 0x856B, 0x21A1, - 0x856D, 0x1932, 0x8577, 0x1938, 0x857E, 0x1939, 0x8580, 0x192C, 0x8584, - 0x0D2C, 0x8587, 0x1936, 0x8588, 0x192E, 0x858A, 0x1930, 0x858F, 0x3AE1, - 0x8590, 0x193A, 0x8591, 0x192F, 0x8594, 0x1933, 0x8597, 0x0514, 0x8599, - 0x0CBD, 0x859B, 0x1934, 0x859C, 0x1937, 0x85A4, 0x192D, 0x85A6, 0x0AA8, - 0x85A8, 0x1931, 0x85A9, 0x0875, 0x85AA, 0x0A0B, 0x85AB, 0x0706, 0x85AC, - 0x0F00, 0x85AD, 0x3AE4, 0x85AE, 0x0F05, 0x85AF, 0x097C, 0x85B0, 0x21A3, - 0x85B7, 0x3AE2, 0x85B9, 0x193E, 0x85BA, 0x193C, 0x85C1, 0x0FF4, 0x85C9, - 0x193B, 0x85CD, 0x0F5F, 0x85CE, 0x3AE3, 0x85CF, 0x193D, 0x85D0, 0x193F, - 0x85D5, 0x1940, 0x85DC, 0x1943, 0x85DD, 0x1941, 0x85E4, 0x0C7B, 0x85E5, - 0x1942, 0x85E9, 0x0D61, 0x85EA, 0x1935, 0x85F4, 0x3780, 0x85F7, 0x097D, - 0x85F9, 0x1944, 0x85FA, 0x1949, 0x85FB, 0x0AF6, 0x85FE, 0x1948, 0x8602, - 0x1929, 0x8606, 0x194A, 0x8607, 0x0ACB, 0x860A, 0x1945, 0x860B, 0x1947, - 0x8612, 0x3AE5, 0x8613, 0x1946, 0x8616, 0x14D0, 0x8617, 0x14C1, 0x861A, - 0x194C, 0x8622, 0x194B, 0x8629, 0x3AE6, 0x862D, 0x0F60, 0x862F, 0x16B1, - 0x8630, 0x194D, 0x863F, 0x194E, 0x864D, 0x194F, 0x864E, 0x078B, 0x8650, - 0x066E, 0x8652, 0x3AE7, 0x8654, 0x1951, 0x8655, 0x1094, 0x865A, 0x068F, - 0x865B, 0x3418, 0x865C, 0x0F82, 0x865E, 0x06EB, 0x865F, 0x1952, 0x8663, - 0x3AE8, 0x8667, 0x1953, 0x866B, 0x0BAC, 0x866C, 0x3AE9, 0x866F, 0x3AEA, - 0x8671, 0x1954, 0x8679, 0x0CD2, 0x867A, 0x3AEB, 0x867B, 0x047E, 0x867D, - 0x3786, 0x868A, 0x0563, 0x868B, 0x1959, 0x868C, 0x195A, 0x868D, 0x3AEC, - 0x8691, 0x3AED, 0x8693, 0x1955, 0x8695, 0x088B, 0x8698, 0x3AEE, 0x86A3, - 0x1956, 0x86A4, 0x0CF8, 0x86A7, 0x3AEF, 0x86A8, 0x3AF0, 0x86A9, 0x1957, - 0x86AA, 0x1958, 0x86AB, 0x1962, 0x86AF, 0x195C, 0x86B0, 0x195F, 0x86B6, - 0x195B, 0x86C4, 0x195D, 0x86C6, 0x195E, 0x86C7, 0x0904, 0x86C9, 0x1960, - 0x86CB, 0x0B7F, 0x86CD, 0x072C, 0x86CE, 0x05A0, 0x86D4, 0x1963, 0x86D9, - 0x059D, 0x86DB, 0x1968, 0x86DE, 0x1964, 0x86DF, 0x1967, 0x86E4, 0x0D4E, - 0x86E9, 0x1965, 0x86EC, 0x1966, 0x86ED, 0x0DBA, 0x86EE, 0x0D6E, 0x86EF, - 0x1969, 0x86F8, 0x0B5D, 0x86F9, 0x1973, 0x86FA, 0x3AF1, 0x86FB, 0x196F, - 0x86FD, 0x3AF2, 0x86FE, 0x056B, 0x8700, 0x196D, 0x8702, 0x0E58, 0x8703, - 0x196E, 0x8706, 0x196B, 0x8708, 0x196C, 0x8709, 0x1971, 0x870A, 0x1974, - 0x870B, 0x3AF3, 0x870D, 0x1972, 0x8711, 0x1970, 0x8712, 0x196A, 0x8713, - 0x3AF4, 0x8718, 0x0B96, 0x8719, 0x3AF5, 0x871A, 0x197B, 0x871C, 0x0EB6, - 0x871E, 0x3AF6, 0x8725, 0x1979, 0x8728, 0x3AF7, 0x8729, 0x197A, 0x8734, - 0x1975, 0x8737, 0x1977, 0x873B, 0x1978, 0x873E, 0x3AF8, 0x873F, 0x1976, - 0x8749, 0x0A8A, 0x874B, 0x0FDF, 0x874C, 0x197F, 0x874E, 0x1980, 0x8753, - 0x1986, 0x8755, 0x09F0, 0x8757, 0x1982, 0x8759, 0x1985, 0x875F, 0x197D, - 0x8760, 0x197C, 0x8763, 0x1987, 0x8766, 0x055C, 0x8768, 0x1983, 0x876A, - 0x1988, 0x876E, 0x1984, 0x8771, 0x3AF9, 0x8774, 0x1981, 0x8776, 0x0BCF, - 0x8778, 0x197E, 0x877F, 0x0D1E, 0x8782, 0x198C, 0x8788, 0x3AFA, 0x878D, - 0x0F25, 0x8799, 0x3AFB, 0x879F, 0x198B, 0x87A2, 0x198A, 0x87AB, 0x1993, - 0x87AC, 0x3AFC, 0x87AD, 0x3AFD, 0x87AF, 0x198D, 0x87B3, 0x1995, 0x87B5, - 0x3AFE, 0x87BA, 0x0F50, 0x87BB, 0x1998, 0x87BD, 0x198F, 0x87C0, 0x1990, - 0x87C4, 0x1994, 0x87C6, 0x1997, 0x87C7, 0x1996, 0x87CB, 0x198E, 0x87D0, - 0x1991, 0x87D2, 0x19A2, 0x87D6, 0x3AFF, 0x87E0, 0x199B, 0x87EB, 0x3B00, - 0x87EC, 0x1E23, 0x87ED, 0x3B01, 0x87EF, 0x1999, 0x87F2, 0x199A, 0x87F5, - 0x3C3D, 0x87F6, 0x199F, 0x87F7, 0x19A0, 0x87F9, 0x0588, 0x87FB, 0x065C, - 0x87FE, 0x199E, 0x8801, 0x3B02, 0x8803, 0x3B03, 0x8805, 0x1989, 0x8806, - 0x3B04, 0x8807, 0x21A6, 0x880B, 0x3B05, 0x880D, 0x199D, 0x880E, 0x19A1, - 0x880F, 0x199C, 0x8811, 0x19A3, 0x8814, 0x3B06, 0x8815, 0x19A5, 0x8816, - 0x19A4, 0x881C, 0x3B07, 0x881F, 0x1E85, 0x8821, 0x19A7, 0x8822, 0x19A6, - 0x8823, 0x1961, 0x8827, 0x19AB, 0x8831, 0x19A8, 0x8836, 0x19A9, 0x8839, - 0x19AA, 0x883B, 0x19AC, 0x8840, 0x0742, 0x8842, 0x19AE, 0x8844, 0x19AD, - 0x8846, 0x093A, 0x884C, 0x07E6, 0x884D, 0x1524, 0x8852, 0x19AF, 0x8853, - 0x095B, 0x8856, 0x3B08, 0x8857, 0x0597, 0x8859, 0x19B0, 0x885B, 0x04F4, - 0x885D, 0x09BF, 0x885E, 0x19B1, 0x885F, 0x3B09, 0x8861, 0x07E7, 0x8862, - 0x19B2, 0x8863, 0x04A5, 0x8864, 0x3B0A, 0x8868, 0x0DAF, 0x886B, 0x19B3, - 0x8870, 0x0A30, 0x8872, 0x19BA, 0x8875, 0x19B7, 0x8877, 0x0BAD, 0x887D, - 0x19B8, 0x887E, 0x19B5, 0x887F, 0x06D6, 0x8881, 0x19B4, 0x8882, 0x19BB, - 0x8888, 0x070C, 0x888B, 0x0B3E, 0x888D, 0x19C1, 0x8892, 0x19BD, 0x8896, - 0x0B15, 0x8897, 0x19BC, 0x8898, 0x3B0B, 0x8899, 0x19BF, 0x889E, 0x19B6, - 0x88A2, 0x19C0, 0x88A4, 0x19C2, 0x88AA, 0x3B0C, 0x88AB, 0x0D83, 0x88AE, - 0x19BE, 0x88B0, 0x19C3, 0x88B1, 0x19C5, 0x88B4, 0x0787, 0x88B5, 0x19B9, - 0x88B7, 0x0485, 0x88BD, 0x3B0D, 0x88BE, 0x3B0E, 0x88BF, 0x19C4, 0x88C1, - 0x084B, 0x88C2, 0x0FBE, 0x88C3, 0x19C6, 0x88C4, 0x19C7, 0x88C5, 0x0AF7, - 0x88C6, 0x3789, 0x88CA, 0x3B0F, 0x88CF, 0x0F6A, 0x88D2, 0x3B10, 0x88D4, - 0x19C8, 0x88D5, 0x0F1F, 0x88D8, 0x19C9, 0x88D9, 0x19CA, 0x88DB, 0x3B11, - 0x88DC, 0x0E34, 0x88DD, 0x19CB, 0x88DF, 0x0830, 0x88E1, 0x0F6B, 0x88E8, - 0x19D0, 0x88F0, 0x3B12, 0x88F1, 0x3B13, 0x88F2, 0x19D1, 0x88F3, 0x09C0, - 0x88F4, 0x19CF, 0x88F5, 0x21A7, 0x88F8, 0x0F51, 0x88F9, 0x19CC, 0x88FC, - 0x19CE, 0x88FD, 0x0A61, 0x88FE, 0x0A44, 0x8902, 0x19CD, 0x8904, 0x19D2, - 0x8906, 0x3B14, 0x8907, 0x0DF3, 0x890A, 0x19D4, 0x890C, 0x19D3, 0x8910, - 0x05CA, 0x8912, 0x0E59, 0x8913, 0x19D5, 0x8918, 0x3B15, 0x8919, 0x3B16, - 0x891A, 0x3B17, 0x891C, 0x20A8, 0x891D, 0x19E1, 0x891E, 0x19D7, 0x8925, - 0x19D8, 0x8927, 0x3B18, 0x892A, 0x19D9, 0x892B, 0x19DA, 0x8930, 0x3B19, - 0x8936, 0x19DE, 0x8938, 0x19DF, 0x893B, 0x19DD, 0x893E, 0x3B1A, 0x8941, - 0x19DB, 0x8943, 0x19D6, 0x8944, 0x19DC, 0x894C, 0x19E0, 0x894D, 0x1BD0, - 0x8956, 0x0528, 0x895E, 0x19E3, 0x895F, 0x06D7, 0x8960, 0x19E2, 0x8964, - 0x19E5, 0x8966, 0x19E4, 0x896A, 0x19E7, 0x896D, 0x19E6, 0x896F, 0x19E8, - 0x8972, 0x093B, 0x8974, 0x19E9, 0x8977, 0x19EA, 0x897B, 0x3B1B, 0x897E, - 0x19EB, 0x897F, 0x0A62, 0x8980, 0x362E, 0x8981, 0x0F41, 0x8983, 0x19EC, - 0x8986, 0x0DF4, 0x8987, 0x0CFC, 0x8988, 0x19ED, 0x898A, 0x19EE, 0x898B, - 0x075F, 0x898F, 0x0646, 0x8993, 0x19EF, 0x8996, 0x08B9, 0x8997, 0x0CF7, - 0x8998, 0x19F0, 0x899A, 0x05AE, 0x89A1, 0x19F1, 0x89A6, 0x19F3, 0x89A7, - 0x0F61, 0x89A9, 0x19F2, 0x89AA, 0x0A0C, 0x89AC, 0x19F4, 0x89AF, 0x19F5, - 0x89B2, 0x19F6, 0x89B3, 0x060D, 0x89BA, 0x19F7, 0x89BD, 0x19F8, 0x89BF, - 0x19F9, 0x89C0, 0x19FA, 0x89D2, 0x05AF, 0x89D4, 0x3B1C, 0x89D6, 0x3B1D, - 0x89DA, 0x19FB, 0x89DC, 0x19FC, 0x89DD, 0x19FD, 0x89E3, 0x0572, 0x89E5, - 0x3B1E, 0x89E6, 0x09EE, 0x89E7, 0x19FE, 0x89F1, 0x3B1F, 0x89F4, 0x19FF, - 0x89F8, 0x1A00, 0x8A00, 0x0774, 0x8A01, 0x35BC, 0x8A02, 0x0C17, 0x8A03, - 0x1A01, 0x8A07, 0x3B20, 0x8A08, 0x072D, 0x8A0A, 0x0A1C, 0x8A0C, 0x1A04, - 0x8A0E, 0x0C7C, 0x8A0F, 0x3B21, 0x8A10, 0x1A03, 0x8A12, 0x21A8, 0x8A13, - 0x0707, 0x8A15, 0x3B22, 0x8A16, 0x1A02, 0x8A17, 0x0B57, 0x8A18, 0x0647, - 0x8A1B, 0x1A05, 0x8A1D, 0x1A06, 0x8A1F, 0x09C1, 0x8A22, 0x3B23, 0x8A23, - 0x0743, 0x8A25, 0x1A07, 0x8A2A, 0x0E5A, 0x8A2D, 0x0A83, 0x8A31, 0x0690, - 0x8A33, 0x0F01, 0x8A34, 0x0ACC, 0x8A36, 0x1A08, 0x8A37, 0x21A9, 0x8A3A, - 0x0A0D, 0x8A3B, 0x0BAE, 0x8A3C, 0x09C2, 0x8A41, 0x1A09, 0x8A46, 0x1A0C, - 0x8A48, 0x1A0D, 0x8A4E, 0x3B24, 0x8A50, 0x082E, 0x8A51, 0x0B22, 0x8A52, - 0x1A0B, 0x8A54, 0x09C3, 0x8A55, 0x0DB0, 0x8A5B, 0x1A0A, 0x8A5E, 0x08BA, - 0x8A60, 0x04F5, 0x8A62, 0x1A11, 0x8A63, 0x072E, 0x8A66, 0x08BC, 0x8A69, - 0x08BB, 0x8A6B, 0x0FF3, 0x8A6C, 0x1A10, 0x8A6D, 0x1A0F, 0x8A6E, 0x0AA9, - 0x8A70, 0x0667, 0x8A71, 0x0FE9, 0x8A72, 0x0598, 0x8A73, 0x09C4, 0x8A79, - 0x21AA, 0x8A7C, 0x1A0E, 0x8A7F, 0x3B25, 0x8A82, 0x1A13, 0x8A84, 0x1A14, - 0x8A85, 0x1A12, 0x8A87, 0x078C, 0x8A89, 0x0F2A, 0x8A8C, 0x08BD, 0x8A8D, - 0x0CDD, 0x8A91, 0x1A17, 0x8A93, 0x0A64, 0x8A95, 0x0B80, 0x8A98, 0x0F20, - 0x8A9A, 0x1A1A, 0x8A9E, 0x07A0, 0x8AA0, 0x0A63, 0x8AA1, 0x1A16, 0x8AA3, - 0x1A1B, 0x8AA4, 0x07A1, 0x8AA5, 0x1A18, 0x8AA6, 0x1A19, 0x8AA7, 0x21AB, - 0x8AA8, 0x1A15, 0x8AAA, 0x3638, 0x8AAC, 0x0A86, 0x8AAD, 0x0CA1, 0x8AB0, - 0x0B6D, 0x8AB2, 0x055D, 0x8AB9, 0x0D84, 0x8ABC, 0x065D, 0x8ABE, 0x21AC, - 0x8ABF, 0x0BD0, 0x8AC2, 0x1A1E, 0x8AC4, 0x1A1C, 0x8AC7, 0x0B8A, 0x8ACB, - 0x0A65, 0x8ACC, 0x060E, 0x8ACD, 0x1A1D, 0x8ACF, 0x0A21, 0x8AD2, 0x0F92, - 0x8AD6, 0x0FE6, 0x8ADA, 0x1A1F, 0x8ADB, 0x1A2A, 0x8ADC, 0x0BD1, 0x8ADE, - 0x1A29, 0x8ADF, 0x21AD, 0x8AE0, 0x1A26, 0x8AE1, 0x1A2E, 0x8AE2, 0x1A27, - 0x8AE4, 0x1A23, 0x8AE6, 0x0C18, 0x8AE7, 0x1A22, 0x8AEB, 0x1A20, 0x8AED, - 0x0F0B, 0x8AEE, 0x08BE, 0x8AF1, 0x1A24, 0x8AF3, 0x1A21, 0x8AF4, 0x3B26, - 0x8AF6, 0x21AF, 0x8AF7, 0x1A28, 0x8AF8, 0x097E, 0x8AFA, 0x0775, 0x8AFE, - 0x0B5A, 0x8B00, 0x0E73, 0x8B01, 0x04FC, 0x8B02, 0x04A6, 0x8B04, 0x0C7D, - 0x8B07, 0x1A2C, 0x8B0C, 0x1A2B, 0x8B0E, 0x0CBE, 0x8B10, 0x1A30, 0x8B14, - 0x1A25, 0x8B16, 0x1A2F, 0x8B17, 0x1A31, 0x8B19, 0x0760, 0x8B1A, 0x1A2D, - 0x8B1B, 0x07E8, 0x8B1D, 0x0901, 0x8B1F, 0x3B27, 0x8B20, 0x1A32, 0x8B21, - 0x0F42, 0x8B26, 0x1A35, 0x8B28, 0x1A38, 0x8B2B, 0x1A36, 0x8B2C, 0x0DA7, - 0x8B33, 0x1A33, 0x8B37, 0x3B28, 0x8B39, 0x06D8, 0x8B3E, 0x1A37, 0x8B41, - 0x1A39, 0x8B43, 0x3B29, 0x8B44, 0x3B2A, 0x8B49, 0x1A3D, 0x8B4C, 0x1A3A, - 0x8B4E, 0x1A3C, 0x8B4F, 0x1A3B, 0x8B53, 0x21B0, 0x8B54, 0x3B2B, 0x8B56, - 0x1A3E, 0x8B58, 0x08DD, 0x8B5A, 0x1A40, 0x8B5B, 0x1A3F, 0x8B5C, 0x0DDA, - 0x8B5F, 0x1A42, 0x8B66, 0x072F, 0x8B6B, 0x1A41, 0x8B6C, 0x1A43, 0x8B6F, - 0x1A44, 0x8B70, 0x065E, 0x8B71, 0x182E, 0x8B72, 0x09E1, 0x8B74, 0x1A45, - 0x8B77, 0x07A2, 0x8B7D, 0x1A46, 0x8B7F, 0x21B1, 0x8B80, 0x1A47, 0x8B83, - 0x088C, 0x8B8A, 0x13D3, 0x8B8C, 0x1A48, 0x8B8E, 0x1A49, 0x8B90, 0x093C, - 0x8B92, 0x1A4A, 0x8B93, 0x1A4B, 0x8B96, 0x1A4C, 0x8B99, 0x1A4D, 0x8B9A, - 0x1A4E, 0x8B9C, 0x3B2C, 0x8B9E, 0x3B2D, 0x8C37, 0x0B69, 0x8C3A, 0x1A4F, - 0x8C3F, 0x1A51, 0x8C41, 0x1A50, 0x8C46, 0x0C7E, 0x8C47, 0x3B2E, 0x8C48, - 0x1A52, 0x8C4A, 0x0E5B, 0x8C4C, 0x1A53, 0x8C4E, 0x1A54, 0x8C50, 0x1A55, - 0x8C54, 0x3B2F, 0x8C55, 0x1A56, 0x8C5A, 0x0CB2, 0x8C61, 0x09C5, 0x8C62, - 0x1A57, 0x8C6A, 0x07FD, 0x8C6B, 0x1007, 0x8C6C, 0x1A58, 0x8C73, 0x3B30, - 0x8C78, 0x1A59, 0x8C79, 0x0DB1, 0x8C7A, 0x1A5A, 0x8C7C, 0x1A62, 0x8C82, - 0x1A5B, 0x8C85, 0x1A5D, 0x8C89, 0x1A5C, 0x8C8A, 0x1A5E, 0x8C8C, 0x0E74, - 0x8C8D, 0x1A5F, 0x8C8E, 0x1A60, 0x8C94, 0x1A61, 0x8C98, 0x1A63, 0x8C9D, - 0x058B, 0x8C9E, 0x0C03, 0x8CA0, 0x0DDB, 0x8CA1, 0x0852, 0x8CA2, 0x07E9, - 0x8CA4, 0x3B31, 0x8CA7, 0x0DC1, 0x8CA8, 0x055F, 0x8CA9, 0x0D62, 0x8CAA, - 0x1A66, 0x8CAB, 0x060F, 0x8CAC, 0x0A79, 0x8CAD, 0x1A65, 0x8CAE, 0x1A6A, - 0x8CAF, 0x0BB7, 0x8CB0, 0x0EEF, 0x8CB2, 0x1A68, 0x8CB3, 0x1A69, 0x8CB4, - 0x0648, 0x8CB6, 0x1A6B, 0x8CB7, 0x0D19, 0x8CB8, 0x0B3F, 0x8CBB, 0x0D85, - 0x8CBC, 0x0C37, 0x8CBD, 0x1A67, 0x8CBF, 0x0E75, 0x8CC0, 0x056C, 0x8CC1, - 0x1A6D, 0x8CC2, 0x0FCE, 0x8CC3, 0x0BDE, 0x8CC4, 0x0FEB, 0x8CC7, 0x08BF, - 0x8CC8, 0x1A6C, 0x8CCA, 0x0B11, 0x8CCD, 0x1A7D, 0x8CCE, 0x0AAA, 0x8CD1, - 0x0CD0, 0x8CD3, 0x0DC2, 0x8CD9, 0x3B32, 0x8CDA, 0x1A70, 0x8CDB, 0x088D, - 0x8CDC, 0x08C0, 0x8CDE, 0x09C6, 0x8CE0, 0x0D1B, 0x8CE1, 0x3B33, 0x8CE2, - 0x0761, 0x8CE3, 0x1A6F, 0x8CE4, 0x1A6E, 0x8CE6, 0x0DDC, 0x8CEA, 0x08ED, - 0x8CED, 0x0C4C, 0x8CF0, 0x21B2, 0x8CF4, 0x21B3, 0x8CF8, 0x3B34, 0x8CFA, - 0x1A72, 0x8CFB, 0x1A73, 0x8CFC, 0x07EA, 0x8CFD, 0x1A71, 0x8CFE, 0x3B35, - 0x8D04, 0x1A74, 0x8D05, 0x1A75, 0x8D07, 0x1A77, 0x8D08, 0x0B03, 0x8D0A, - 0x1A76, 0x8D0B, 0x0622, 0x8D0D, 0x1A79, 0x8D0F, 0x1A78, 0x8D10, 0x1A7A, - 0x8D12, 0x21B4, 0x8D13, 0x1A7C, 0x8D14, 0x1A7E, 0x8D16, 0x1A7F, 0x8D1B, - 0x3B36, 0x8D64, 0x0A7A, 0x8D66, 0x08FB, 0x8D67, 0x1A80, 0x8D69, 0x3B37, - 0x8D6B, 0x05B0, 0x8D6C, 0x3B38, 0x8D6D, 0x1A81, 0x8D70, 0x0AF8, 0x8D71, - 0x1A82, 0x8D73, 0x1A83, 0x8D74, 0x0DDD, 0x8D76, 0x21B5, 0x8D77, 0x0649, - 0x8D81, 0x1A84, 0x8D84, 0x3B39, 0x8D85, 0x0BD2, 0x8D8A, 0x04FD, 0x8D8D, - 0x3B3A, 0x8D95, 0x3B3B, 0x8D99, 0x1A85, 0x8DA3, 0x091D, 0x8DA6, 0x3B3C, - 0x8DA8, 0x0A3C, 0x8DB3, 0x0B0D, 0x8DBA, 0x1A88, 0x8DBE, 0x1A87, 0x8DC2, - 0x1A86, 0x8DC6, 0x3B3D, 0x8DCB, 0x1A8E, 0x8DCC, 0x1A8C, 0x8DCE, 0x3B3E, - 0x8DCF, 0x1A89, 0x8DD6, 0x1A8B, 0x8DDA, 0x1A8A, 0x8DDB, 0x1A8D, 0x8DDD, - 0x0691, 0x8DDF, 0x1A91, 0x8DE1, 0x0A7B, 0x8DE3, 0x1A92, 0x8DE4, 0x3B3F, - 0x8DE8, 0x078D, 0x8DEA, 0x1A8F, 0x8DEB, 0x1A90, 0x8DEC, 0x3B40, 0x8DEF, - 0x0FCF, 0x8DF3, 0x0BD3, 0x8DF5, 0x0AAB, 0x8DFC, 0x1A93, 0x8DFF, 0x1A96, - 0x8E08, 0x1A94, 0x8E09, 0x1A95, 0x8E0A, 0x0F43, 0x8E0F, 0x0C7F, 0x8E10, - 0x1A99, 0x8E1D, 0x1A97, 0x8E1E, 0x1A98, 0x8E1F, 0x1A9A, 0x8E20, 0x3B41, - 0x8E2A, 0x1AA8, 0x8E30, 0x1A9D, 0x8E34, 0x1A9E, 0x8E35, 0x1A9C, 0x8E42, - 0x1A9B, 0x8E44, 0x0C19, 0x8E47, 0x1AA0, 0x8E48, 0x1AA4, 0x8E49, 0x1AA1, - 0x8E4A, 0x1A9F, 0x8E4B, 0x3B42, 0x8E4C, 0x1AA2, 0x8E50, 0x1AA3, 0x8E55, - 0x1AAA, 0x8E59, 0x1AA5, 0x8E5F, 0x0A7C, 0x8E60, 0x1AA7, 0x8E63, 0x1AA9, - 0x8E64, 0x1AA6, 0x8E6C, 0x3B43, 0x8E70, 0x3B44, 0x8E72, 0x1AAC, 0x8E74, - 0x093D, 0x8E76, 0x1AAB, 0x8E7A, 0x3B45, 0x8E7C, 0x1AAD, 0x8E81, 0x1AAE, - 0x8E84, 0x1AB1, 0x8E85, 0x1AB0, 0x8E87, 0x1AAF, 0x8E8A, 0x1AB3, 0x8E8B, - 0x1AB2, 0x8E8D, 0x0F02, 0x8E91, 0x1AB5, 0x8E92, 0x3B46, 0x8E93, 0x1AB4, - 0x8E94, 0x1AB6, 0x8E99, 0x1AB7, 0x8EA1, 0x1AB9, 0x8EAA, 0x1AB8, 0x8EAB, - 0x0A0E, 0x8EAC, 0x1ABA, 0x8EAE, 0x3B47, 0x8EAF, 0x06E5, 0x8EB0, 0x1ABB, - 0x8EB1, 0x1ABD, 0x8EB3, 0x3B48, 0x8EB6, 0x3703, 0x8EBE, 0x1ABE, 0x8EC0, - 0x1DEF, 0x8EC5, 0x1ABF, 0x8EC6, 0x1ABC, 0x8EC8, 0x1AC0, 0x8ECA, 0x0902, - 0x8ECB, 0x1AC1, 0x8ECC, 0x064A, 0x8ECD, 0x0709, 0x8ECF, 0x21B7, 0x8ED1, - 0x3B49, 0x8ED2, 0x0762, 0x8ED4, 0x3B4A, 0x8EDB, 0x1AC2, 0x8EDF, 0x0CC8, - 0x8EE2, 0x0C38, 0x8EE3, 0x1AC3, 0x8EEB, 0x1AC6, 0x8EF8, 0x08E0, 0x8EF9, - 0x3B4B, 0x8EFB, 0x1AC5, 0x8EFC, 0x1AC4, 0x8EFD, 0x0730, 0x8EFE, 0x1AC7, - 0x8F03, 0x05B1, 0x8F05, 0x1AC9, 0x8F09, 0x084C, 0x8F0A, 0x1AC8, 0x8F0C, - 0x1AD1, 0x8F12, 0x1ACB, 0x8F13, 0x1ACD, 0x8F14, 0x0E35, 0x8F15, 0x1ACA, - 0x8F17, 0x3B4C, 0x8F19, 0x1ACC, 0x8F1B, 0x1AD0, 0x8F1C, 0x1ACE, 0x8F1D, - 0x064B, 0x8F1F, 0x1ACF, 0x8F26, 0x1AD2, 0x8F29, 0x0D10, 0x8F2A, 0x0FA0, - 0x8F2F, 0x093E, 0x8F33, 0x1AD3, 0x8F36, 0x3B4D, 0x8F38, 0x0F0C, 0x8F39, - 0x1AD5, 0x8F3B, 0x1AD4, 0x8F3E, 0x1AD8, 0x8F3F, 0x0F2B, 0x8F42, 0x1AD7, - 0x8F44, 0x05CB, 0x8F45, 0x1AD6, 0x8F46, 0x1ADB, 0x8F49, 0x1ADA, 0x8F4C, - 0x1AD9, 0x8F4D, 0x0C2C, 0x8F4E, 0x1ADC, 0x8F57, 0x1ADD, 0x8F5C, 0x1ADE, - 0x8F5F, 0x07FE, 0x8F61, 0x06FB, 0x8F62, 0x1ADF, 0x8F63, 0x1AE0, 0x8F64, - 0x1AE1, 0x8F9B, 0x0A0F, 0x8F9C, 0x1AE2, 0x8F9E, 0x08D9, 0x8F9F, 0x1AE3, - 0x8FA3, 0x1AE4, 0x8FA6, 0x3B4E, 0x8FA7, 0x10B6, 0x8FA8, 0x10B5, 0x8FAD, - 0x1AE5, 0x8FAE, 0x17FF, 0x8FAF, 0x1AE6, 0x8FB0, 0x0B62, 0x8FB1, 0x09F1, - 0x8FB2, 0x0CF6, 0x8FB5, 0x3B4F, 0x8FB6, 0x3B50, 0x8FB7, 0x1AE7, 0x8FBA, - 0x0E25, 0x8FBB, 0x0BF0, 0x8FBC, 0x0810, 0x8FBF, 0x0B67, 0x8FC2, 0x04CC, - 0x8FC4, 0x0EA6, 0x8FC5, 0x0A1D, 0x8FC6, 0x3B51, 0x8FC8, 0x3799, 0x8FCE, - 0x0734, 0x8FD1, 0x06D9, 0x8FD4, 0x0E26, 0x8FDA, 0x1AE8, 0x8FE0, 0x3B52, - 0x8FE2, 0x1AEA, 0x8FE4, 0x3B53, 0x8FE5, 0x1AE9, 0x8FE6, 0x0560, 0x8FE9, - 0x0CCE, 0x8FEA, 0x1AEB, 0x8FEB, 0x0D2D, 0x8FED, 0x0C2D, 0x8FEF, 0x1AEC, - 0x8FF0, 0x095C, 0x8FF4, 0x1AEE, 0x8FF6, 0x3B54, 0x8FF7, 0x0ECE, 0x8FF8, - 0x1AFD, 0x8FF9, 0x1AF0, 0x8FFA, 0x1AF1, 0x8FFD, 0x0BE5, 0x9000, 0x0B40, - 0x9001, 0x0AF9, 0x9002, 0x3B55, 0x9003, 0x0C80, 0x9005, 0x1AEF, 0x9006, - 0x066F, 0x900B, 0x1AF8, 0x900D, 0x1AF5, 0x900E, 0x1B02, 0x900F, 0x0C81, - 0x9010, 0x0B9E, 0x9011, 0x1AF2, 0x9013, 0x0C1A, 0x9014, 0x0C4D, 0x9015, - 0x1AF3, 0x9016, 0x1AF7, 0x9017, 0x0A26, 0x9019, 0x0D1D, 0x901A, 0x0BE8, - 0x901D, 0x0A66, 0x901E, 0x1AF6, 0x901F, 0x0B0E, 0x9020, 0x0B04, 0x9021, - 0x1AF4, 0x9022, 0x046D, 0x9023, 0x0FC8, 0x9027, 0x1AF9, 0x902C, 0x3B56, - 0x902E, 0x0B41, 0x9031, 0x093F, 0x9032, 0x0A10, 0x9035, 0x1AFB, 0x9036, - 0x1AFA, 0x9038, 0x04B3, 0x9039, 0x1AFC, 0x903C, 0x0DA1, 0x903E, 0x1B04, - 0x9041, 0x0CB3, 0x9042, 0x0A31, 0x9044, 0x3B57, 0x9045, 0x0B97, 0x9047, - 0x06F0, 0x9049, 0x1B03, 0x904A, 0x0F21, 0x904B, 0x04E1, 0x904D, 0x0E27, - 0x904E, 0x0561, 0x904F, 0x1AFE, 0x9050, 0x1AFF, 0x9051, 0x1B00, 0x9052, - 0x1B01, 0x9053, 0x0C93, 0x9054, 0x0B61, 0x9055, 0x04A7, 0x9056, 0x1B05, - 0x9058, 0x1B06, 0x9059, 0x1D34, 0x905C, 0x0B1D, 0x905E, 0x1B07, 0x9060, - 0x0515, 0x9061, 0x0ACE, 0x9063, 0x0763, 0x9065, 0x0F44, 0x9067, 0x21BA, - 0x9068, 0x1B08, 0x9069, 0x0C26, 0x906D, 0x0AFA, 0x906E, 0x0903, 0x906F, - 0x1B09, 0x9072, 0x1B0C, 0x9075, 0x096F, 0x9076, 0x1B0A, 0x9077, 0x0AAD, - 0x9078, 0x0AAC, 0x907A, 0x04A8, 0x907C, 0x0F93, 0x907D, 0x1B0E, 0x907F, - 0x0D86, 0x9080, 0x1B10, 0x9081, 0x1B0F, 0x9082, 0x1B0D, 0x9083, 0x1737, - 0x9084, 0x0610, 0x9087, 0x1AED, 0x9088, 0x3B58, 0x9089, 0x1B12, 0x908A, - 0x1B11, 0x908F, 0x1B13, 0x9091, 0x0F22, 0x9095, 0x3B59, 0x9099, 0x3B5A, - 0x909B, 0x3B5B, 0x90A2, 0x3B5C, 0x90A3, 0x0CB9, 0x90A6, 0x0E5C, 0x90A8, - 0x1B14, 0x90AA, 0x0905, 0x90AF, 0x1B15, 0x90B1, 0x1B16, 0x90B4, 0x3B5D, - 0x90B5, 0x1B17, 0x90B8, 0x0C1B, 0x90C1, 0x04AE, 0x90CA, 0x07EB, 0x90CE, - 0x0FE0, 0x90D7, 0x3B5E, 0x90DB, 0x1B1B, 0x90DD, 0x3B5F, 0x90DE, 0x21BB, - 0x90E1, 0x070A, 0x90E2, 0x1B18, 0x90E4, 0x1B19, 0x90E8, 0x0DE6, 0x90ED, - 0x05B2, 0x90F4, 0x3B60, 0x90F5, 0x0F23, 0x90F7, 0x06B7, 0x90FD, 0x0C4E, - 0x9102, 0x1B1C, 0x9112, 0x1B1D, 0x9115, 0x21BD, 0x9117, 0x3B61, 0x9119, - 0x1B1E, 0x911C, 0x3B62, 0x9127, 0x21BE, 0x912D, 0x0C1C, 0x9130, 0x1B20, - 0x9131, 0x3B63, 0x9132, 0x1B1F, 0x913A, 0x3B64, 0x913D, 0x3B65, 0x9148, - 0x3B66, 0x9149, 0x0CAB, 0x914A, 0x1B21, 0x914B, 0x0940, 0x914C, 0x090C, - 0x914D, 0x0D11, 0x914E, 0x0BAF, 0x9152, 0x091E, 0x9154, 0x0A32, 0x9156, - 0x1B22, 0x9158, 0x1B23, 0x915B, 0x3B67, 0x9161, 0x3B68, 0x9162, 0x0A23, - 0x9163, 0x1B24, 0x9164, 0x3B69, 0x9165, 0x1B25, 0x9169, 0x1B26, 0x916A, - 0x0F59, 0x916C, 0x0941, 0x9172, 0x1B28, 0x9173, 0x1B27, 0x9175, 0x07EC, - 0x9177, 0x0805, 0x9178, 0x088E, 0x9182, 0x1B2B, 0x9187, 0x0970, 0x9189, - 0x1B2A, 0x918B, 0x1B29, 0x918D, 0x0B49, 0x918E, 0x3B6A, 0x9190, 0x07A3, - 0x9192, 0x0A67, 0x9197, 0x0D44, 0x919C, 0x0943, 0x919E, 0x3B6B, 0x91A2, - 0x1B2C, 0x91A4, 0x09C7, 0x91A8, 0x3B6C, 0x91AA, 0x1B2F, 0x91AB, 0x1B2D, - 0x91AC, 0x1E1B, 0x91AD, 0x3B6D, 0x91AE, 0x3B6E, 0x91AF, 0x1B2E, 0x91B1, - 0x1E61, 0x91B2, 0x3B6F, 0x91B4, 0x1B31, 0x91B5, 0x1B30, 0x91B8, 0x09E2, - 0x91BA, 0x1B32, 0x91BC, 0x3B70, 0x91C0, 0x1B33, 0x91C1, 0x1B34, 0x91C6, - 0x0D64, 0x91C7, 0x0843, 0x91C8, 0x090D, 0x91C9, 0x1B35, 0x91CB, 0x1B36, - 0x91CC, 0x0F6C, 0x91CD, 0x094F, 0x91CE, 0x0EFA, 0x91CF, 0x0F94, 0x91D0, - 0x1B37, 0x91D1, 0x06DA, 0x91D6, 0x1B38, 0x91D7, 0x21C0, 0x91D8, 0x0C1D, - 0x91DA, 0x21BF, 0x91DB, 0x1B3B, 0x91DC, 0x05D6, 0x91DD, 0x0A11, 0x91DE, - 0x21C1, 0x91DF, 0x1B39, 0x91E1, 0x1B3A, 0x91E3, 0x0BFC, 0x91E4, 0x21C4, - 0x91E5, 0x21C5, 0x91E6, 0x0E83, 0x91E7, 0x06F4, 0x91ED, 0x21C2, 0x91EE, - 0x21C3, 0x91F0, 0x3B71, 0x91F5, 0x1B3D, 0x91F6, 0x1B3E, 0x91F7, 0x3B72, - 0x91FB, 0x3B73, 0x91FC, 0x1B3C, 0x91FF, 0x1B40, 0x9206, 0x21C6, 0x9207, - 0x3B74, 0x920A, 0x21C8, 0x920D, 0x0CB7, 0x920E, 0x05A1, 0x9210, 0x21C7, - 0x9211, 0x1B44, 0x9214, 0x1B41, 0x9215, 0x1B43, 0x921E, 0x1B3F, 0x9228, - 0x3B75, 0x9229, 0x1B8A, 0x922C, 0x1B42, 0x9233, 0x3B76, 0x9234, 0x0FB3, - 0x9237, 0x078E, 0x9238, 0x3B77, 0x9239, 0x21CF, 0x923A, 0x21C9, 0x923C, - 0x21CB, 0x923F, 0x1B4C, 0x9240, 0x21CA, 0x9243, 0x3B78, 0x9244, 0x0C2E, - 0x9245, 0x1B47, 0x9247, 0x3B79, 0x9248, 0x1B4A, 0x9249, 0x1B48, 0x924B, - 0x1B4D, 0x924E, 0x21CC, 0x924F, 0x3B7A, 0x9250, 0x1B4E, 0x9251, 0x21CE, - 0x9257, 0x1B46, 0x9259, 0x21CD, 0x925A, 0x1B53, 0x925B, 0x0516, 0x925E, - 0x1B45, 0x9260, 0x3B7B, 0x9262, 0x0D41, 0x9264, 0x1B49, 0x9266, 0x09C8, - 0x9267, 0x21D0, 0x9271, 0x07ED, 0x9277, 0x21D2, 0x9278, 0x21D3, 0x927E, - 0x0E76, 0x9280, 0x06DC, 0x9283, 0x0950, 0x9285, 0x0C94, 0x9288, 0x20AA, - 0x9291, 0x0AAF, 0x9293, 0x1B51, 0x9295, 0x1B4B, 0x9296, 0x1B50, 0x9298, - 0x0ECF, 0x929A, 0x0BD4, 0x929B, 0x1B52, 0x929C, 0x1B4F, 0x92A7, 0x21D1, - 0x92AD, 0x0AAE, 0x92B3, 0x3554, 0x92B7, 0x1B56, 0x92B9, 0x1B55, 0x92C2, - 0x3B7C, 0x92CB, 0x3B7D, 0x92CC, 0x3B7E, 0x92CF, 0x1B54, 0x92D0, 0x21D7, - 0x92D2, 0x0E5D, 0x92D3, 0x21DB, 0x92D5, 0x21D9, 0x92D7, 0x21D5, 0x92D9, - 0x21D6, 0x92DF, 0x3B7F, 0x92E0, 0x21DA, 0x92E4, 0x0985, 0x92E7, 0x21D4, - 0x92E9, 0x1B57, 0x92EA, 0x0E2F, 0x92ED, 0x04F6, 0x92F2, 0x0DB8, 0x92F3, - 0x0BB0, 0x92F8, 0x0692, 0x92F9, 0x20B0, 0x92FA, 0x1B59, 0x92FB, 0x21DE, - 0x92FC, 0x07EF, 0x92FF, 0x21E1, 0x9302, 0x21E3, 0x9304, 0x345A, 0x9306, - 0x087A, 0x930D, 0x3B80, 0x930F, 0x1B58, 0x9310, 0x0A33, 0x9315, 0x3B81, - 0x9318, 0x0A34, 0x9319, 0x1B5C, 0x931A, 0x1B5E, 0x931D, 0x21E2, 0x931E, - 0x21E0, 0x931F, 0x3B82, 0x9320, 0x09E3, 0x9321, 0x21DD, 0x9322, 0x1B5D, - 0x9323, 0x1B5F, 0x9325, 0x21DC, 0x9326, 0x06CB, 0x9327, 0x3B83, 0x9328, - 0x0DB7, 0x932B, 0x090E, 0x932C, 0x0FC9, 0x932E, 0x1B5B, 0x932F, 0x0868, - 0x9332, 0x0FE5, 0x9335, 0x1B61, 0x933A, 0x1B60, 0x933B, 0x1B62, 0x9344, - 0x1B5A, 0x9347, 0x3B84, 0x9348, 0x20A9, 0x934A, 0x3458, 0x934B, 0x0CC1, - 0x934D, 0x0C4F, 0x9352, 0x3B85, 0x9354, 0x0BF3, 0x9356, 0x1B67, 0x9357, - 0x21E5, 0x935B, 0x0B81, 0x935C, 0x1B63, 0x9360, 0x1B64, 0x9365, 0x3B86, - 0x936A, 0x3B87, 0x936C, 0x0703, 0x936D, 0x3B88, 0x936E, 0x1B66, 0x9370, - 0x21E4, 0x9375, 0x0764, 0x937C, 0x1B65, 0x937E, 0x09C9, 0x938C, 0x05D7, - 0x9394, 0x1B6B, 0x9396, 0x082F, 0x9397, 0x0AFB, 0x939A, 0x0BE6, 0x939B, - 0x3B89, 0x93A4, 0x21E6, 0x93A7, 0x0599, 0x93A9, 0x3B8B, 0x93AC, 0x1B69, - 0x93AD, 0x1B6A, 0x93AE, 0x0BDF, 0x93B0, 0x1B68, 0x93B9, 0x1B6C, 0x93BA, - 0x3B8A, 0x93C1, 0x3B8C, 0x93C3, 0x1B72, 0x93C6, 0x21E7, 0x93C8, 0x1B75, - 0x93CA, 0x3B8D, 0x93D0, 0x1B74, 0x93D1, 0x0C27, 0x93D6, 0x1B6D, 0x93D7, - 0x1B6E, 0x93D8, 0x1B71, 0x93DD, 0x1B73, 0x93DE, 0x21E8, 0x93E1, 0x06B8, - 0x93E2, 0x3B8E, 0x93E4, 0x1B76, 0x93E5, 0x1B70, 0x93E8, 0x1B6F, 0x93F8, - 0x21E9, 0x93FA, 0x3B8F, 0x93FD, 0x3B90, 0x9403, 0x1B7A, 0x9407, 0x1B7B, - 0x940F, 0x3B91, 0x9410, 0x1B7C, 0x9413, 0x1B79, 0x9414, 0x1B78, 0x9418, - 0x09CA, 0x9419, 0x0C82, 0x941A, 0x1B77, 0x9421, 0x1B80, 0x942B, 0x1B7E, - 0x9431, 0x21EA, 0x9434, 0x3B92, 0x9435, 0x1B7F, 0x9436, 0x1B7D, 0x9438, - 0x0B58, 0x943A, 0x1B81, 0x943F, 0x3B93, 0x9441, 0x1B82, 0x9444, 0x1B84, - 0x9445, 0x21EB, 0x9448, 0x21EC, 0x9451, 0x0611, 0x9452, 0x1B83, 0x9453, - 0x0F06, 0x9455, 0x3B94, 0x945A, 0x1B8F, 0x945B, 0x1B85, 0x945E, 0x1B88, - 0x9460, 0x1B86, 0x9462, 0x1B87, 0x946A, 0x1B89, 0x946B, 0x3B95, 0x9470, - 0x1B8B, 0x9472, 0x3B96, 0x9475, 0x1B8C, 0x9477, 0x1B8D, 0x947C, 0x1B90, - 0x947D, 0x1B8E, 0x947E, 0x1B91, 0x947F, 0x1B93, 0x9481, 0x1B92, 0x9577, - 0x0BD5, 0x9578, 0x3B97, 0x9580, 0x0EF3, 0x9582, 0x1B94, 0x9583, 0x0AB0, - 0x9587, 0x1B95, 0x9589, 0x0E14, 0x958A, 0x1B96, 0x958B, 0x0589, 0x958F, - 0x04DE, 0x9591, 0x0613, 0x9592, 0x21ED, 0x9593, 0x0612, 0x9594, 0x1B97, - 0x9596, 0x1B98, 0x9598, 0x1B99, 0x9599, 0x1B9A, 0x95A0, 0x1B9B, 0x95A2, - 0x0614, 0x95A3, 0x05B3, 0x95A4, 0x07F0, 0x95A5, 0x0D4A, 0x95A6, 0x3B98, - 0x95A7, 0x1B9D, 0x95A8, 0x1B9C, 0x95A9, 0x3B99, 0x95AB, 0x3B9A, 0x95AD, - 0x1B9E, 0x95B1, 0x3555, 0x95B2, 0x04FE, 0x95B4, 0x3B9B, 0x95B9, 0x1BA1, - 0x95BB, 0x1BA0, 0x95BC, 0x1B9F, 0x95BD, 0x3B9C, 0x95BE, 0x1BA2, 0x95C3, - 0x1BA5, 0x95C7, 0x048B, 0x95CA, 0x1BA3, 0x95CC, 0x1BA7, 0x95CD, 0x1BA6, - 0x95D4, 0x1BA9, 0x95D5, 0x1BA8, 0x95D6, 0x1BAA, 0x95D8, 0x0C86, 0x95DA, - 0x3B9D, 0x95DC, 0x1BAB, 0x95E1, 0x1BAC, 0x95E2, 0x1BAE, 0x95E5, 0x1BAD, - 0x961C, 0x0DDE, 0x961D, 0x3B9E, 0x9621, 0x1BAF, 0x9628, 0x1BB0, 0x962A, - 0x0855, 0x962E, 0x1BB1, 0x962F, 0x1BB2, 0x9632, 0x0E77, 0x963B, 0x0ACD, - 0x963F, 0x0468, 0x9640, 0x0B2B, 0x9641, 0x3B9F, 0x9642, 0x1BB3, 0x9644, - 0x0DDF, 0x964B, 0x1BB6, 0x964C, 0x1BB4, 0x964D, 0x07F1, 0x964F, 0x1BB5, - 0x9650, 0x0776, 0x9658, 0x3BA0, 0x965B, 0x0E15, 0x965C, 0x1BB8, 0x965D, - 0x1BBA, 0x965E, 0x1BB9, 0x965F, 0x1BBB, 0x9662, 0x04C3, 0x9663, 0x0A1E, - 0x9664, 0x0986, 0x9665, 0x0615, 0x9666, 0x1BBC, 0x966A, 0x0D1C, 0x966C, - 0x1BBE, 0x9670, 0x04C4, 0x9672, 0x1BBD, 0x9673, 0x0BE0, 0x9675, 0x0F95, - 0x9676, 0x0C83, 0x9677, 0x1BB7, 0x9678, 0x0F6E, 0x967A, 0x0765, 0x967D, - 0x0F45, 0x9684, 0x3BA1, 0x9685, 0x06F1, 0x9686, 0x0F7C, 0x9688, 0x06FE, - 0x968A, 0x0B42, 0x968B, 0x186C, 0x968D, 0x1BBF, 0x968E, 0x058A, 0x968F, - 0x0A35, 0x9694, 0x05B4, 0x9695, 0x1BC1, 0x9697, 0x1BC2, 0x9698, 0x1BC0, - 0x9699, 0x073A, 0x969B, 0x084D, 0x969C, 0x09CB, 0x969D, 0x21F0, 0x96A0, - 0x04C5, 0x96A3, 0x0FA1, 0x96A4, 0x3BA2, 0x96A7, 0x1BC4, 0x96A8, 0x1B0B, - 0x96A9, 0x3BA3, 0x96AA, 0x1BC3, 0x96AF, 0x21F1, 0x96B0, 0x1BC7, 0x96B1, - 0x1BC5, 0x96B2, 0x1BC6, 0x96B4, 0x1BC8, 0x96B6, 0x1BC9, 0x96B7, 0x0FB4, - 0x96B8, 0x1BCA, 0x96B9, 0x1BCB, 0x96BB, 0x0A6D, 0x96BC, 0x0D4F, 0x96C0, - 0x0A43, 0x96C1, 0x0623, 0x96C4, 0x0F24, 0x96C5, 0x056D, 0x96C6, 0x0942, - 0x96C7, 0x078F, 0x96C9, 0x1BCE, 0x96CB, 0x1BCD, 0x96CC, 0x08C1, 0x96CD, - 0x1BCF, 0x96CE, 0x1BCC, 0x96D1, 0x0876, 0x96D2, 0x3BA4, 0x96D5, 0x1BD3, - 0x96D6, 0x1992, 0x96D9, 0x10EB, 0x96DB, 0x0A3D, 0x96DC, 0x1BD1, 0x96DE, - 0x3BA6, 0x96E2, 0x0F6D, 0x96E3, 0x0CC9, 0x96E8, 0x04CD, 0x96E9, 0x3BA7, - 0x96EA, 0x0A87, 0x96EB, 0x08E2, 0x96F0, 0x0E07, 0x96F1, 0x3BA8, 0x96F2, - 0x04E2, 0x96F6, 0x0FB5, 0x96F7, 0x0F55, 0x96F9, 0x1BD4, 0x96FB, 0x0C3F, - 0x9700, 0x0927, 0x9702, 0x3BA9, 0x9704, 0x1BD5, 0x9706, 0x1BD6, 0x9707, - 0x0A12, 0x9708, 0x1BD7, 0x9709, 0x3BAA, 0x970A, 0x0FB6, 0x970D, 0x1BD2, - 0x970E, 0x1BD9, 0x970F, 0x1BDB, 0x9711, 0x1BDA, 0x9713, 0x1BD8, 0x9716, - 0x1BDC, 0x9719, 0x1BDD, 0x971C, 0x0AFC, 0x971E, 0x0562, 0x9724, 0x1BDE, - 0x9727, 0x0EC4, 0x972A, 0x1BDF, 0x9730, 0x1BE0, 0x9732, 0x0FD0, 0x9733, - 0x21F2, 0x9738, 0x1414, 0x9739, 0x1BE1, 0x973B, 0x21F3, 0x973D, 0x1BE2, - 0x973E, 0x1BE3, 0x9742, 0x1BE7, 0x9743, 0x21F4, 0x9744, 0x1BE4, 0x9746, - 0x1BE5, 0x9748, 0x1BE6, 0x9749, 0x1BE8, 0x974D, 0x21F5, 0x974F, 0x21F6, - 0x9751, 0x21F7, 0x9752, 0x0A68, 0x9755, 0x21F8, 0x9756, 0x0F03, 0x9759, - 0x0A69, 0x975A, 0x3BAB, 0x975C, 0x1BE9, 0x975E, 0x0D87, 0x9760, 0x1BEA, - 0x9761, 0x1D06, 0x9762, 0x0ED8, 0x9763, 0x3BAC, 0x9764, 0x1BEB, 0x9766, - 0x1BEC, 0x9768, 0x1BED, 0x9769, 0x05B5, 0x976B, 0x1BEF, 0x976D, 0x0A1F, - 0x976E, 0x3BAD, 0x9771, 0x1BF0, 0x9773, 0x3BAE, 0x9774, 0x06FA, 0x9779, - 0x1BF1, 0x977A, 0x1BF5, 0x977C, 0x1BF3, 0x9781, 0x1BF4, 0x9784, 0x05D1, - 0x9785, 0x1BF2, 0x9786, 0x1BF6, 0x978B, 0x1BF7, 0x978D, 0x048C, 0x978F, - 0x1BF8, 0x9790, 0x1BF9, 0x9798, 0x09CC, 0x979A, 0x3BAF, 0x979C, 0x1BFA, - 0x97A0, 0x0661, 0x97A2, 0x3BB0, 0x97A3, 0x1BFD, 0x97A6, 0x1BFC, 0x97A8, - 0x1BFB, 0x97AB, 0x1A34, 0x97AD, 0x0E2C, 0x97B3, 0x1BFE, 0x97B4, 0x1BFF, - 0x97B5, 0x3BB1, 0x97B6, 0x3BB2, 0x97C3, 0x1C00, 0x97C6, 0x1C01, 0x97C8, - 0x1C02, 0x97CB, 0x1C03, 0x97D3, 0x0616, 0x97D9, 0x3BB3, 0x97DC, 0x1C04, - 0x97DE, 0x3BB4, 0x97ED, 0x1C05, 0x97EE, 0x0CD9, 0x97F2, 0x1C07, 0x97F3, - 0x053B, 0x97F4, 0x3BB5, 0x97F5, 0x1C0A, 0x97F6, 0x1C09, 0x97FB, 0x04C6, - 0x97FF, 0x06B9, 0x9801, 0x0E17, 0x9802, 0x0BD6, 0x9803, 0x0812, 0x9805, - 0x07F2, 0x9806, 0x0971, 0x9808, 0x0A22, 0x980A, 0x3BB6, 0x980C, 0x1C0C, - 0x980E, 0x3BB7, 0x980F, 0x1C0B, 0x9810, 0x0F2C, 0x9811, 0x0624, 0x9812, - 0x0D66, 0x9813, 0x0CB4, 0x9817, 0x0A42, 0x9818, 0x0F96, 0x981A, 0x0731, - 0x981E, 0x3BB8, 0x9821, 0x1C0F, 0x9823, 0x3BB9, 0x9824, 0x1C0E, 0x982B, - 0x3BBA, 0x982C, 0x0E79, 0x982D, 0x0C84, 0x9830, 0x1E73, 0x9834, 0x04F2, - 0x9837, 0x1C10, 0x9838, 0x1C0D, 0x9839, 0x37B3, 0x983B, 0x0DC3, 0x983C, - 0x0F54, 0x983D, 0x1C11, 0x983E, 0x3BBB, 0x9846, 0x1C12, 0x984B, 0x1C14, - 0x984C, 0x0B4A, 0x984D, 0x05B9, 0x984E, 0x05BA, 0x984F, 0x1C13, 0x9852, - 0x3BBC, 0x9853, 0x3BBD, 0x9854, 0x0625, 0x9855, 0x0766, 0x9857, 0x21F9, - 0x9858, 0x0626, 0x9859, 0x3BBE, 0x985A, 0x1E48, 0x985B, 0x0C39, 0x985E, - 0x0FA8, 0x9865, 0x21FA, 0x9867, 0x0790, 0x986B, 0x1C15, 0x986C, 0x3BBF, - 0x986F, 0x1C16, 0x9870, 0x1C17, 0x9871, 0x1C18, 0x9873, 0x1C1A, 0x9874, - 0x1C19, 0x98A8, 0x0DE9, 0x98AA, 0x1C1B, 0x98AF, 0x1C1C, 0x98B1, 0x1C1D, - 0x98B6, 0x1C1E, 0x98B8, 0x3BC0, 0x98BA, 0x3BC1, 0x98BF, 0x3BC2, 0x98C3, - 0x1C20, 0x98C4, 0x1C1F, 0x98C6, 0x1C21, 0x98C8, 0x3BC3, 0x98DB, 0x0D88, - 0x98DC, 0x1839, 0x98DF, 0x09EF, 0x98E0, 0x3618, 0x98E2, 0x064C, 0x98E5, - 0x3BC4, 0x98E9, 0x1C22, 0x98EB, 0x1C23, 0x98ED, 0x10C1, 0x98EE, 0x14DA, - 0x98EF, 0x0D67, 0x98F2, 0x04BF, 0x98F4, 0x047F, 0x98FC, 0x08C2, 0x98FD, - 0x0E5E, 0x98FE, 0x09E6, 0x9903, 0x1C24, 0x9905, 0x0EEB, 0x9909, 0x1C25, - 0x990A, 0x0F46, 0x990C, 0x04E4, 0x9910, 0x088F, 0x9912, 0x1C26, 0x9913, - 0x056E, 0x9914, 0x1C27, 0x9918, 0x1C28, 0x991D, 0x1C2A, 0x991E, 0x1C2B, - 0x9920, 0x1C2D, 0x9921, 0x1C29, 0x9924, 0x1C2C, 0x9927, 0x21FD, 0x9928, - 0x0617, 0x992C, 0x1C2E, 0x992E, 0x1C2F, 0x9932, 0x3BC5, 0x9933, 0x3BC6, - 0x993D, 0x1C30, 0x993E, 0x1C31, 0x9940, 0x3BC7, 0x9942, 0x1C32, 0x9945, - 0x1C34, 0x9949, 0x1C33, 0x994B, 0x1C36, 0x994C, 0x1C39, 0x994D, 0x3BC8, - 0x9950, 0x1C35, 0x9951, 0x1C37, 0x9952, 0x1C38, 0x9955, 0x1C3A, 0x9957, - 0x06BA, 0x995C, 0x3BC9, 0x995F, 0x3BCA, 0x9996, 0x091F, 0x9997, 0x1C3B, - 0x9998, 0x1C3C, 0x9999, 0x07F3, 0x999E, 0x21FF, 0x99A5, 0x1C3D, 0x99A8, - 0x059C, 0x99AC, 0x0D05, 0x99AD, 0x1C3E, 0x99AE, 0x1C3F, 0x99B1, 0x3BCB, - 0x99B3, 0x0B98, 0x99B4, 0x0CC3, 0x99B9, 0x3BCC, 0x99BA, 0x3BCD, 0x99BC, - 0x1C40, 0x99C1, 0x0D33, 0x99C4, 0x0B2C, 0x99C5, 0x04FA, 0x99C6, 0x06E6, - 0x99C8, 0x06E7, 0x99C9, 0x3BCE, 0x99D0, 0x0BB1, 0x99D1, 0x1C45, 0x99D2, - 0x06E8, 0x99D5, 0x056F, 0x99D8, 0x1C44, 0x99DB, 0x1C42, 0x99DD, 0x1C43, - 0x99DF, 0x1C41, 0x99E2, 0x1C4F, 0x99ED, 0x1C46, 0x99EE, 0x1C47, 0x99F1, - 0x1C48, 0x99F2, 0x1C49, 0x99F8, 0x1C4B, 0x99FB, 0x1C4A, 0x99FF, 0x0963, - 0x9A01, 0x1C4C, 0x9A02, 0x3BCF, 0x9A05, 0x1C4E, 0x9A08, 0x37BA, 0x9A0E, - 0x064D, 0x9A0F, 0x1C4D, 0x9A12, 0x0AFD, 0x9A13, 0x0767, 0x9A16, 0x3BD0, - 0x9A19, 0x1C50, 0x9A24, 0x3BD1, 0x9A27, 0x3BD2, 0x9A28, 0x0B2D, 0x9A2B, - 0x1C51, 0x9A2D, 0x3BD3, 0x9A2E, 0x3BD4, 0x9A30, 0x0C85, 0x9A36, 0x3BD5, - 0x9A37, 0x1C52, 0x9A38, 0x3BD6, 0x9A3E, 0x1C57, 0x9A40, 0x1C55, 0x9A42, - 0x1C54, 0x9A43, 0x1C56, 0x9A45, 0x1C53, 0x9A4A, 0x3BD7, 0x9A4D, 0x1C59, - 0x9A4E, 0x2200, 0x9A52, 0x1E2F, 0x9A55, 0x1C58, 0x9A56, 0x3BD8, 0x9A57, - 0x1C5B, 0x9A5A, 0x06BB, 0x9A5B, 0x1C5A, 0x9A5F, 0x1C5C, 0x9A62, 0x1C5D, - 0x9A64, 0x1C5F, 0x9A65, 0x1C5E, 0x9A69, 0x1C60, 0x9A6A, 0x1C62, 0x9A6B, - 0x1C61, 0x9AA8, 0x080E, 0x9AAD, 0x1C63, 0x9AB0, 0x1C64, 0x9AB5, 0x3BD9, - 0x9AB6, 0x3BDA, 0x9AB8, 0x059A, 0x9ABC, 0x1C65, 0x9AC0, 0x1C66, 0x9AC4, - 0x0A37, 0x9ACF, 0x1C67, 0x9AD1, 0x1C68, 0x9AD3, 0x1C69, 0x9AD4, 0x1C6A, - 0x9AD8, 0x07F4, 0x9AD9, 0x2201, 0x9ADC, 0x2202, 0x9ADE, 0x1C6B, 0x9ADF, - 0x1C6C, 0x9AE2, 0x1C6D, 0x9AE3, 0x1C6E, 0x9AE6, 0x1C6F, 0x9AEA, 0x0D45, - 0x9AEB, 0x1C71, 0x9AED, 0x0D98, 0x9AEE, 0x1C72, 0x9AEF, 0x1C70, 0x9AF1, - 0x1C74, 0x9AF4, 0x1C73, 0x9AF7, 0x1C75, 0x9AF9, 0x3BDB, 0x9AFB, 0x1C76, - 0x9B03, 0x3BDC, 0x9B06, 0x1C77, 0x9B18, 0x1C78, 0x9B1A, 0x1C79, 0x9B1F, - 0x1C7A, 0x9B20, 0x3BDD, 0x9B22, 0x1C7B, 0x9B23, 0x1C7C, 0x9B25, 0x1C7D, - 0x9B27, 0x1C7E, 0x9B28, 0x1C7F, 0x9B29, 0x1C80, 0x9B2A, 0x1C81, 0x9B2D, - 0x343C, 0x9B2E, 0x1C82, 0x9B2F, 0x1C83, 0x9B31, 0x14D4, 0x9B32, 0x1C84, - 0x9B33, 0x3BDE, 0x9B34, 0x3BDF, 0x9B3B, 0x17A9, 0x9B3C, 0x064E, 0x9B41, - 0x057F, 0x9B42, 0x0822, 0x9B43, 0x1C86, 0x9B44, 0x1C85, 0x9B45, 0x0EB1, - 0x9B4D, 0x1C88, 0x9B4E, 0x1C89, 0x9B4F, 0x1C87, 0x9B51, 0x1C8A, 0x9B54, - 0x0E90, 0x9B58, 0x1C8B, 0x9B5A, 0x0695, 0x9B6F, 0x0FCB, 0x9B72, 0x2204, - 0x9B73, 0x3BE0, 0x9B74, 0x1C8C, 0x9B75, 0x2203, 0x9B79, 0x3BE1, 0x9B83, - 0x1C8E, 0x9B8E, 0x0482, 0x9B8F, 0x2205, 0x9B91, 0x1C8F, 0x9B92, 0x0DFB, - 0x9B93, 0x1C8D, 0x9B96, 0x1C90, 0x9B97, 0x1C91, 0x9B9F, 0x1C92, 0x9BA0, - 0x1C93, 0x9BA7, 0x3BE2, 0x9BA8, 0x1C94, 0x9BAA, 0x0E9C, 0x9BAB, 0x087B, - 0x9BAD, 0x086A, 0x9BAE, 0x0AB1, 0x9BB1, 0x2206, 0x9BB4, 0x1C95, 0x9BB9, - 0x1C98, 0x9BBB, 0x2207, 0x9BC0, 0x1C96, 0x9BC1, 0x3BE3, 0x9BC6, 0x1C99, - 0x9BC7, 0x3BE4, 0x9BC9, 0x07A5, 0x9BCA, 0x1C97, 0x9BCF, 0x1C9A, 0x9BD1, - 0x1C9B, 0x9BD2, 0x1C9C, 0x9BD4, 0x1CA0, 0x9BD6, 0x0878, 0x9BD7, 0x3BE5, - 0x9BDB, 0x0B44, 0x9BDF, 0x37BF, 0x9BE1, 0x1CA1, 0x9BE2, 0x1C9E, 0x9BE3, - 0x1C9D, 0x9BE4, 0x1C9F, 0x9BE7, 0x3BE6, 0x9BE8, 0x0735, 0x9BEB, 0x3BE7, - 0x9BF0, 0x1CA5, 0x9BF1, 0x1CA4, 0x9BF2, 0x1CA3, 0x9BF5, 0x0477, 0x9BF7, - 0x3BE8, 0x9BFA, 0x3BE9, 0x9BFD, 0x3BEA, 0x9C00, 0x2208, 0x9C04, 0x1CAF, - 0x9C06, 0x1CAB, 0x9C08, 0x1CAC, 0x9C09, 0x1CA8, 0x9C0A, 0x1CAE, 0x9C0B, - 0x3BEB, 0x9C0C, 0x1CAA, 0x9C0D, 0x05C0, 0x9C10, 0x0FF2, 0x9C12, 0x1CAD, - 0x9C13, 0x1CA9, 0x9C14, 0x1CA7, 0x9C15, 0x1CA6, 0x9C1B, 0x1CB1, 0x9C21, - 0x1CB4, 0x9C24, 0x1CB3, 0x9C25, 0x1CB2, 0x9C27, 0x3BEC, 0x9C2A, 0x3BED, - 0x9C2D, 0x0DBB, 0x9C2E, 0x1CB0, 0x9C2F, 0x04B7, 0x9C30, 0x1CB5, 0x9C32, - 0x1CB7, 0x9C36, 0x3BEE, 0x9C39, 0x05CD, 0x9C3A, 0x1CA2, 0x9C3B, 0x04D9, - 0x9C3E, 0x1CB9, 0x9C41, 0x3BEF, 0x9C46, 0x1CB8, 0x9C47, 0x1CB6, 0x9C48, - 0x0B6B, 0x9C52, 0x0E9E, 0x9C53, 0x3BF0, 0x9C57, 0x0FA2, 0x9C5A, 0x1CBA, - 0x9C60, 0x1CBB, 0x9C63, 0x3BF1, 0x9C67, 0x1CBC, 0x9C6A, 0x3BF2, 0x9C76, - 0x1CBD, 0x9C77, 0x3BF3, 0x9C78, 0x1CBE, 0x9CE5, 0x0BD7, 0x9CE7, 0x1CBF, - 0x9CE9, 0x0D4B, 0x9CEB, 0x1CC4, 0x9CEC, 0x1CC0, 0x9CF0, 0x1CC1, 0x9CF3, - 0x0E5F, 0x9CF4, 0x0ED0, 0x9CF6, 0x0CA8, 0x9D02, 0x3BF4, 0x9D03, 0x1CC5, - 0x9D06, 0x1CC6, 0x9D07, 0x0C96, 0x9D08, 0x1CC3, 0x9D09, 0x1CC2, 0x9D0E, - 0x052A, 0x9D12, 0x1CCE, 0x9D15, 0x1CCD, 0x9D1B, 0x0517, 0x9D1F, 0x1CCB, - 0x9D23, 0x1CCA, 0x9D26, 0x1CC8, 0x9D28, 0x05D9, 0x9D2A, 0x1CC7, 0x9D2B, - 0x08DE, 0x9D2C, 0x0529, 0x9D3B, 0x07F5, 0x9D3E, 0x1CD1, 0x9D3F, 0x1CD0, - 0x9D41, 0x1CCF, 0x9D42, 0x3BF5, 0x9D44, 0x1CCC, 0x9D46, 0x1CD2, 0x9D47, - 0x3BF6, 0x9D48, 0x1CD3, 0x9D50, 0x1CD8, 0x9D51, 0x1CD7, 0x9D59, 0x1CD9, - 0x9D5C, 0x04CF, 0x9D5D, 0x1CD4, 0x9D5E, 0x1CD5, 0x9D60, 0x0806, 0x9D61, - 0x0EC5, 0x9D63, 0x3BF7, 0x9D64, 0x1CD6, 0x9D69, 0x3BF8, 0x9D6B, 0x220A, - 0x9D6C, 0x0E60, 0x9D6F, 0x1CDE, 0x9D70, 0x2209, 0x9D72, 0x1CDA, 0x9D7A, - 0x1CDF, 0x9D7C, 0x3BF9, 0x9D7E, 0x3BFA, 0x9D87, 0x1CDC, 0x9D89, 0x1CDB, - 0x9D8D, 0x3BFB, 0x9D8F, 0x0732, 0x9D9A, 0x1CE0, 0x9DA4, 0x1CE1, 0x9DA9, - 0x1CE2, 0x9DAB, 0x1CDD, 0x9DAF, 0x1CC9, 0x9DB1, 0x3BFC, 0x9DB2, 0x1CE3, - 0x9DB4, 0x0BFD, 0x9DB8, 0x1CE7, 0x9DBA, 0x1CE8, 0x9DBB, 0x1CE6, 0x9DC1, - 0x1CE5, 0x9DC2, 0x1CEB, 0x9DC3, 0x3BFD, 0x9DC4, 0x1CE4, 0x9DC6, 0x1CE9, - 0x9DC7, 0x3BFE, 0x9DCF, 0x1CEA, 0x9DD3, 0x1CED, 0x9DD6, 0x3BFF, 0x9DD7, - 0x1DDE, 0x9DD9, 0x1CEC, 0x9DDF, 0x3C00, 0x9DE6, 0x1CEF, 0x9DEB, 0x3C01, - 0x9DED, 0x1CF0, 0x9DEF, 0x1CF1, 0x9DF2, 0x0FEF, 0x9DF4, 0x3C02, 0x9DF8, - 0x1CEE, 0x9DF9, 0x0B4B, 0x9DFA, 0x085D, 0x9DFD, 0x1CF2, 0x9E15, 0x3C03, - 0x9E19, 0x220C, 0x9E1A, 0x1CF3, 0x9E1B, 0x1CF4, 0x9E1D, 0x3C04, 0x9E1E, - 0x1CF5, 0x9E75, 0x1CF6, 0x9E78, 0x0768, 0x9E79, 0x1CF7, 0x9E7C, 0x1DFD, - 0x9E7D, 0x1CF8, 0x9E7F, 0x08DB, 0x9E81, 0x1CF9, 0x9E88, 0x1CFA, 0x9E8B, - 0x1CFB, 0x9E8C, 0x1CFC, 0x9E91, 0x1CFF, 0x9E92, 0x1CFD, 0x9E93, 0x0FE2, - 0x9E95, 0x1CFE, 0x9E97, 0x0FB7, 0x9E9D, 0x1D00, 0x9E9F, 0x0FA3, 0x9EA4, - 0x3C05, 0x9EA5, 0x1D01, 0x9EA6, 0x0D34, 0x9EA8, 0x3C06, 0x9EA9, 0x1D02, - 0x9EAA, 0x1D04, 0x9EAC, 0x3C07, 0x9EAD, 0x1D05, 0x9EB4, 0x1E02, 0x9EB5, - 0x1E75, 0x9EB8, 0x1D03, 0x9EB9, 0x07FF, 0x9EBA, 0x0ED9, 0x9EBB, 0x0E91, - 0x9EBC, 0x1284, 0x9EBE, 0x14FF, 0x9EBF, 0x0EA9, 0x9EC3, 0x340B, 0x9EC4, - 0x052B, 0x9ECC, 0x1D07, 0x9ECD, 0x066A, 0x9ECE, 0x1D08, 0x9ECF, 0x1D09, - 0x9ED0, 0x1D0A, 0x9ED1, 0x220D, 0x9ED2, 0x0807, 0x9ED4, 0x1D0B, 0x9ED8, - 0x160D, 0x9ED9, 0x0EE7, 0x9EDB, 0x0B43, 0x9EDC, 0x1D0C, 0x9EDD, 0x1D0E, - 0x9EDE, 0x1D0D, 0x9EE0, 0x1D0F, 0x9EE5, 0x1D10, 0x9EE7, 0x3C08, 0x9EE8, - 0x1D11, 0x9EEE, 0x3C09, 0x9EEF, 0x1D12, 0x9EF4, 0x1D13, 0x9EF6, 0x1D14, - 0x9EF7, 0x1D15, 0x9EF9, 0x1D16, 0x9EFB, 0x1D17, 0x9EFC, 0x1D18, 0x9EFD, - 0x1D19, 0x9F07, 0x1D1A, 0x9F08, 0x1D1B, 0x9F0E, 0x0C1E, 0x9F10, 0x3C0A, - 0x9F12, 0x3C0B, 0x9F13, 0x0791, 0x9F15, 0x1D1D, 0x9F17, 0x3C0C, 0x9F19, - 0x3C0D, 0x9F20, 0x0ACF, 0x9F21, 0x1D1E, 0x9F2C, 0x1D1F, 0x9F2F, 0x3C0E, - 0x9F37, 0x3C0F, 0x9F39, 0x3C10, 0x9F3B, 0x0D93, 0x9F3E, 0x1D20, 0x9F41, - 0x3C11, 0x9F45, 0x3C12, 0x9F4A, 0x1D21, 0x9F4B, 0x170A, 0x9F4E, 0x1A7B, - 0x9F4F, 0x1C06, 0x9F52, 0x1D22, 0x9F54, 0x1D23, 0x9F57, 0x3C13, 0x9F5F, - 0x1D25, 0x9F60, 0x1D26, 0x9F61, 0x1D27, 0x9F62, 0x0FB8, 0x9F63, 0x1D24, - 0x9F66, 0x1D28, 0x9F67, 0x1D29, 0x9F68, 0x3C14, 0x9F6A, 0x1D2B, 0x9F6C, - 0x1D2A, 0x9F71, 0x3C15, 0x9F72, 0x1D2D, 0x9F75, 0x3C16, 0x9F76, 0x1D2E, - 0x9F77, 0x1D2C, 0x9F8D, 0x0F7E, 0x9F90, 0x3C17, 0x9F94, 0x3C18, 0x9F95, - 0x1D2F, 0x9F9C, 0x1D30, 0x9F9D, 0x1727, 0x9FA0, 0x1D31, 0x9FA2, 0x3C19, - 0xF929, 0x2129, 0xF9DC, 0x21EE, 0xFA0E, 0x20DA, 0xFA0F, 0x20E5, 0xFA10, - 0x20E6, 0xFA11, 0x20FB, 0xFA12, 0x2121, 0xFA13, 0x2131, 0xFA14, 0x2133, - 0xFA15, 0x215E, 0xFA16, 0x2164, 0xFA17, 0x217B, 0xFA18, 0x2183, 0xFA19, - 0x2184, 0xFA1A, 0x2185, 0xFA1B, 0x2187, 0xFA1C, 0x218B, 0xFA1D, 0x218E, - 0xFA1E, 0x2197, 0xFA1F, 0x21A2, 0xFA20, 0x21A4, 0xFA21, 0x21A5, 0xFA22, - 0x21AE, 0xFA23, 0x21B6, 0xFA24, 0x21B8, 0xFA25, 0x21B9, 0xFA26, 0x21BC, - 0xFA27, 0x21D8, 0xFA28, 0x21DF, 0xFA29, 0x21EF, 0xFA2A, 0x21FB, 0xFA2B, - 0x21FC, 0xFA2C, 0x21FE, 0xFA2D, 0x220B, 0xFB00, 0x248E, 0xFB01, 0x0070, - 0xFB02, 0x0071, 0xFB03, 0x248F, 0xFB04, 0x2490, 0xFE30, 0x1EDA, 0xFE31, - 0x1ED4, 0xFE32, 0x1ED5, 0xFE33, 0x1ED2, 0xFE35, 0x1EDB, 0xFE36, 0x1EDC, - 0xFE37, 0x1EE1, 0xFE38, 0x1EE2, 0xFE39, 0x1EDD, 0xFE3A, 0x1EDE, 0xFE3B, - 0x1EEB, 0xFE3C, 0x1EEC, 0xFE3D, 0x1EE5, 0xFE3E, 0x1EE6, 0xFE3F, 0x1EE3, - 0xFE40, 0x1EE4, 0xFE41, 0x1EE7, 0xFE42, 0x1EE8, 0xFE43, 0x1EE9, 0xFE44, - 0x1EEA, 0xFF01, 0x0282, 0xFF02, 0x1F47, 0xFF03, 0x02CC, 0xFF04, 0x02C8, - 0xFF05, 0x02CB, 0xFF06, 0x02CD, 0xFF07, 0x1F46, 0xFF08, 0x02A2, 0xFF09, - 0x02A3, 0xFF0A, 0x02CE, 0xFF0B, 0x02B4, 0xFF0C, 0x027C, 0xFF0D, 0x02B5, - 0xFF0E, 0x027D, 0xFF0F, 0x0297, 0xFF10, 0x030C, 0xFF11, 0x030D, 0xFF12, - 0x030E, 0xFF13, 0x030F, 0xFF14, 0x0310, 0xFF15, 0x0311, 0xFF16, 0x0312, - 0xFF17, 0x0313, 0xFF18, 0x0314, 0xFF19, 0x0315, 0xFF1A, 0x027F, 0xFF1B, - 0x0280, 0xFF1C, 0x02BB, 0xFF1D, 0x02B9, 0xFF1E, 0x02BC, 0xFF1F, 0x0281, - 0xFF20, 0x02CF, 0xFF21, 0x0316, 0xFF22, 0x0317, 0xFF23, 0x0318, 0xFF24, - 0x0319, 0xFF25, 0x031A, 0xFF26, 0x031B, 0xFF27, 0x031C, 0xFF28, 0x031D, - 0xFF29, 0x031E, 0xFF2A, 0x031F, 0xFF2B, 0x0320, 0xFF2C, 0x0321, 0xFF2D, - 0x0322, 0xFF2E, 0x0323, 0xFF2F, 0x0324, 0xFF30, 0x0325, 0xFF31, 0x0326, - 0xFF32, 0x0327, 0xFF33, 0x0328, 0xFF34, 0x0329, 0xFF35, 0x032A, 0xFF36, - 0x032B, 0xFF37, 0x032C, 0xFF38, 0x032D, 0xFF39, 0x032E, 0xFF3A, 0x032F, - 0xFF3B, 0x02A6, 0xFF3C, 0x0298, 0xFF3D, 0x02A7, 0xFF3E, 0x0288, 0xFF3F, - 0x028A, 0xFF40, 0x0286, 0xFF41, 0x0330, 0xFF42, 0x0331, 0xFF43, 0x0332, - 0xFF44, 0x0333, 0xFF45, 0x0334, 0xFF46, 0x0335, 0xFF47, 0x0336, 0xFF48, - 0x0337, 0xFF49, 0x0338, 0xFF4A, 0x0339, 0xFF4B, 0x033A, 0xFF4C, 0x033B, - 0xFF4D, 0x033C, 0xFF4E, 0x033D, 0xFF4F, 0x033E, 0xFF50, 0x033F, 0xFF51, - 0x0340, 0xFF52, 0x0341, 0xFF53, 0x0342, 0xFF54, 0x0343, 0xFF55, 0x0344, - 0xFF56, 0x0345, 0xFF57, 0x0346, 0xFF58, 0x0347, 0xFF59, 0x0348, 0xFF5A, - 0x0349, 0xFF5B, 0x02A8, 0xFF5C, 0x029B, 0xFF5D, 0x02A9, 0xFF5E, 0x0299, - 0xFF61, 0x0147, 0xFF62, 0x0148, 0xFF63, 0x0149, 0xFF64, 0x014A, 0xFF65, - 0x014B, 0xFF66, 0x014C, 0xFF67, 0x014D, 0xFF68, 0x014E, 0xFF69, 0x014F, - 0xFF6A, 0x0150, 0xFF6B, 0x0151, 0xFF6C, 0x0152, 0xFF6D, 0x0153, 0xFF6E, - 0x0154, 0xFF6F, 0x0155, 0xFF70, 0x0156, 0xFF71, 0x0157, 0xFF72, 0x0158, - 0xFF73, 0x0159, 0xFF74, 0x015A, 0xFF75, 0x015B, 0xFF76, 0x015C, 0xFF77, - 0x015D, 0xFF78, 0x015E, 0xFF79, 0x015F, 0xFF7A, 0x0160, 0xFF7B, 0x0161, - 0xFF7C, 0x0162, 0xFF7D, 0x0163, 0xFF7E, 0x0164, 0xFF7F, 0x0165, 0xFF80, - 0x0166, 0xFF81, 0x0167, 0xFF82, 0x0168, 0xFF83, 0x0169, 0xFF84, 0x016A, - 0xFF85, 0x016B, 0xFF86, 0x016C, 0xFF87, 0x016D, 0xFF88, 0x016E, 0xFF89, - 0x016F, 0xFF8A, 0x0170, 0xFF8B, 0x0171, 0xFF8C, 0x0172, 0xFF8D, 0x0173, - 0xFF8E, 0x0174, 0xFF8F, 0x0175, 0xFF90, 0x0176, 0xFF91, 0x0177, 0xFF92, - 0x0178, 0xFF93, 0x0179, 0xFF94, 0x017A, 0xFF95, 0x017B, 0xFF96, 0x017C, - 0xFF97, 0x017D, 0xFF98, 0x017E, 0xFF99, 0x017F, 0xFF9A, 0x0180, 0xFF9B, - 0x0181, 0xFF9C, 0x0182, 0xFF9D, 0x0183, 0xFF9E, 0x0184, 0xFF9F, 0x0185, - 0xFFE0, 0x02C9, 0xFFE1, 0x02CA, 0xFFE2, 0x02EF, 0xFFE3, 0x0289, 0xFFE4, - 0x1F45, 0xFFE5, 0x02C7, 0xFFE8, 0x0143, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp deleted file mode 100644 index bc6190bfb6..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_UniJIS_UCS2_V_4[251 * 2] = { - 0x00B0, 0x204D, 0x2010, 0x1ED5, 0x2015, 0x1ED4, 0x2016, 0x1ED7, 0x2018, - 0x2059, 0x2019, 0x205A, 0x201C, 0x2057, 0x201D, 0x2058, 0x2025, 0x1EDA, - 0x2026, 0x1ED9, 0x2032, 0x2051, 0x2033, 0x205B, 0x2190, 0x02E2, 0x2191, - 0x02E0, 0x2192, 0x02E3, 0x2193, 0x02E1, 0x2195, 0x2FB6, 0x21C4, 0x2077, - 0x21C5, 0x2076, 0x21C6, 0x2078, 0x21E6, 0x1F4C, 0x21E7, 0x1F4E, 0x21E8, - 0x1F4B, 0x21E9, 0x1F4D, 0x2225, 0x1ED7, 0x223C, 0x1ED6, 0x22EF, 0x1ED9, - 0x2500, 0x1D39, 0x2501, 0x1D3A, 0x2502, 0x1D37, 0x2503, 0x1D38, 0x2504, - 0x1D3D, 0x2505, 0x1D3E, 0x2506, 0x1D3B, 0x2507, 0x1D3C, 0x2508, 0x1D41, - 0x2509, 0x1D42, 0x250A, 0x1D3F, 0x250B, 0x1D40, 0x250C, 0x1D47, 0x250D, - 0x1D49, 0x250E, 0x1D48, 0x250F, 0x1D4A, 0x2510, 0x1D4F, 0x2511, 0x1D51, - 0x2512, 0x1D50, 0x2513, 0x1D52, 0x2514, 0x1D43, 0x2515, 0x1D45, 0x2516, - 0x1D44, 0x2517, 0x1D46, 0x2518, 0x1D4B, 0x2519, 0x1D4D, 0x251A, 0x1D4C, - 0x251B, 0x1D4E, 0x251C, 0x1D63, 0x251D, 0x1D67, 0x251E, 0x1D65, 0x251F, - 0x1D64, 0x2520, 0x1D66, 0x2521, 0x1D69, 0x2522, 0x1D68, 0x2523, 0x1D6A, - 0x2524, 0x1D6B, 0x2525, 0x1D6F, 0x2526, 0x1D6D, 0x2527, 0x1D6C, 0x2528, - 0x1D6E, 0x2529, 0x1D71, 0x252A, 0x1D70, 0x252B, 0x1D72, 0x252C, 0x1D5B, - 0x252D, 0x1D5D, 0x252E, 0x1D5E, 0x252F, 0x1D5F, 0x2530, 0x1D5C, 0x2531, - 0x1D60, 0x2532, 0x1D61, 0x2533, 0x1D62, 0x2534, 0x1D53, 0x2535, 0x1D55, - 0x2536, 0x1D56, 0x2537, 0x1D57, 0x2538, 0x1D54, 0x2539, 0x1D58, 0x253A, - 0x1D59, 0x253B, 0x1D5A, 0x253D, 0x1D77, 0x253E, 0x1D78, 0x253F, 0x1D79, - 0x2540, 0x1D75, 0x2541, 0x1D74, 0x2542, 0x1D76, 0x2543, 0x1D7B, 0x2544, - 0x1D7D, 0x2545, 0x1D7A, 0x2546, 0x1D7C, 0x2547, 0x1D81, 0x2548, 0x1D80, - 0x2549, 0x1D7E, 0x254A, 0x1D7F, 0x261C, 0x201D, 0x261D, 0x201B, 0x261E, - 0x201E, 0x261F, 0x201C, 0x2702, 0x2F92, 0x27A1, 0x2011, 0x3001, 0x1ECF, - 0x3002, 0x1ED0, 0x3008, 0x1EE3, 0x3009, 0x1EE4, 0x300A, 0x1EE5, 0x300B, - 0x1EE6, 0x300C, 0x1EE7, 0x300D, 0x1EE8, 0x300E, 0x1EE9, 0x300F, 0x1EEA, - 0x3010, 0x1EEB, 0x3011, 0x1EEC, 0x3013, 0x204E, 0x3014, 0x1EDD, 0x3015, - 0x1EDE, 0x301C, 0x1ED6, 0x301D, 0x1F14, 0x301F, 0x1F15, 0x3041, 0x1EEE, - 0x3043, 0x1EEF, 0x3045, 0x1EF0, 0x3047, 0x1EF1, 0x3049, 0x1EF2, 0x3063, - 0x1EF3, 0x3083, 0x1EF4, 0x3085, 0x1EF5, 0x3087, 0x1EF6, 0x308E, 0x1EF7, - 0x309B, 0x2050, 0x309C, 0x204F, 0x30A1, 0x1EF8, 0x30A3, 0x1EF9, 0x30A5, - 0x1EFA, 0x30A7, 0x1EFB, 0x30A9, 0x1EFC, 0x30C3, 0x1EFD, 0x30E3, 0x1EFE, - 0x30E5, 0x1EFF, 0x30E7, 0x1F00, 0x30EE, 0x1F01, 0x30F5, 0x1F02, 0x30F6, - 0x1F03, 0x30FC, 0x1ED3, 0x3300, 0x209E, 0x3301, 0x2EB6, 0x3302, 0x2EB7, - 0x3303, 0x2092, 0x3304, 0x2EB8, 0x3305, 0x208D, 0x3306, 0x2EB9, 0x3307, - 0x2EBD, 0x3308, 0x2EBB, 0x3309, 0x2EC0, 0x330A, 0x2EBE, 0x330B, 0x2EC2, - 0x330C, 0x2EC4, 0x330D, 0x1F0E, 0x330E, 0x2EC5, 0x330F, 0x2EC6, 0x3310, - 0x2EC7, 0x3311, 0x2EC8, 0x3312, 0x2EC9, 0x3313, 0x2ECA, 0x3314, 0x1F05, - 0x3315, 0x2094, 0x3316, 0x208A, 0x3317, 0x2ECC, 0x3318, 0x2093, 0x3319, - 0x2ECE, 0x331A, 0x2ED0, 0x331B, 0x2ED1, 0x331C, 0x2ED2, 0x331D, 0x2ED3, - 0x331E, 0x20A1, 0x331F, 0x2ED4, 0x3320, 0x2ED5, 0x3321, 0x2ED6, 0x3322, - 0x2089, 0x3323, 0x209C, 0x3324, 0x2ED7, 0x3325, 0x2ED9, 0x3326, 0x1F0F, - 0x3327, 0x1F09, 0x3328, 0x2EDC, 0x3329, 0x2EDD, 0x332A, 0x20A4, 0x332B, - 0x1F11, 0x332D, 0x2EDF, 0x332E, 0x2EE2, 0x332F, 0x2EE3, 0x3330, 0x2EE4, - 0x3331, 0x20A6, 0x3332, 0x2EE5, 0x3333, 0x208E, 0x3334, 0x2EE8, 0x3335, - 0x2EE9, 0x3336, 0x1F0B, 0x3337, 0x2EEE, 0x3338, 0x2EF0, 0x3339, 0x2097, - 0x333A, 0x2EF1, 0x333B, 0x209D, 0x333C, 0x2EEA, 0x333D, 0x2EF2, 0x333E, - 0x2EF4, 0x333F, 0x2EF5, 0x3340, 0x2EF6, 0x3341, 0x2EF3, 0x3342, 0x209B, - 0x3343, 0x2EF7, 0x3344, 0x2EF8, 0x3345, 0x2EF9, 0x3346, 0x2EFA, 0x3347, - 0x20A5, 0x3348, 0x2EFB, 0x3349, 0x1F04, 0x334A, 0x1F12, 0x334B, 0x2EFC, - 0x334C, 0x2EFD, 0x334D, 0x1F07, 0x334E, 0x2091, 0x334F, 0x2EFE, 0x3350, - 0x2EFF, 0x3351, 0x1F0C, 0x3352, 0x2F02, 0x3353, 0x2F06, 0x3354, 0x2F03, - 0x3355, 0x2F07, 0x3356, 0x2F08, 0x3357, 0x2098, 0x337F, 0x2084, 0xFF08, - 0x1EDB, 0xFF09, 0x1EDC, 0xFF0C, 0x204C, 0xFF0E, 0x2052, 0xFF1D, 0x1EED, - 0xFF3B, 0x1EDF, 0xFF3D, 0x1EE0, 0xFF3F, 0x1ED2, 0xFF5B, 0x1EE1, 0xFF5C, - 0x1ED8, 0xFF5D, 0x1EE2, 0xFF5E, 0x1ED6, 0xFFE3, 0x1ED1, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp deleted file mode 100644 index 4f38da8d46..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -const FX_WORD g_FXCMAP_V_1[27 * 3] = { - 0x2122, 0x2123, 0x1ECF, 0x2131, 0x2132, 0x1ED1, 0x213C, 0x213E, 0x1ED3, - 0x2141, 0x2145, 0x1ED6, 0x214A, 0x215B, 0x1EDB, 0x2161, 0x2161, 0x1EED, - 0x2421, 0x2421, 0x1EEE, 0x2423, 0x2423, 0x1EEF, 0x2425, 0x2425, 0x1EF0, - 0x2427, 0x2427, 0x1EF1, 0x2429, 0x2429, 0x1EF2, 0x2443, 0x2443, 0x1EF3, - 0x2463, 0x2463, 0x1EF4, 0x2465, 0x2465, 0x1EF5, 0x2467, 0x2467, 0x1EF6, - 0x246E, 0x246E, 0x1EF7, 0x2521, 0x2521, 0x1EF8, 0x2523, 0x2523, 0x1EF9, - 0x2525, 0x2525, 0x1EFA, 0x2527, 0x2527, 0x1EFB, 0x2529, 0x2529, 0x1EFC, - 0x2543, 0x2543, 0x1EFD, 0x2563, 0x2563, 0x1EFE, 0x2565, 0x2565, 0x1EFF, - 0x2567, 0x2567, 0x1F00, 0x256E, 0x256E, 0x1F01, 0x2575, 0x2576, 0x1F02, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp b/core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp deleted file mode 100644 index 233c12c7ac..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h" - -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). -#include "core/src/fpdfapi/fpdf_cmaps/cmap_int.h" -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -static const FXCMAP_CMap g_FXCMAP_Japan1_cmaps[] = { - {"83pv-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_83pv_RKSJ_H_1, 222, - FXCMAP_CMap::None, NULL, 0, 0}, - {"90ms-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90ms_RKSJ_H_2, 171, - FXCMAP_CMap::None, NULL, 0, 0}, - {"90ms-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_90ms_RKSJ_V_2, 78, - FXCMAP_CMap::None, NULL, 0, -1}, - {"90msp-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90msp_RKSJ_H_2, 170, - FXCMAP_CMap::None, NULL, 0, -2}, - {"90msp-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_90msp_RKSJ_V_2, 78, - FXCMAP_CMap::None, NULL, 0, -1}, - {"90pv-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90pv_RKSJ_H_1, 263, - FXCMAP_CMap::None, NULL, 0, 0}, - {"Add-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_Add_RKSJ_H_1, 635, - FXCMAP_CMap::None, NULL, 0, 0}, - {"Add-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_Add_RKSJ_V_1, 57, - FXCMAP_CMap::None, NULL, 0, -1}, - {"EUC-H", FXCMAP_CMap::Range, g_FXCMAP_EUC_H_1, 120, FXCMAP_CMap::None, - NULL, 0, 0}, - {"EUC-V", FXCMAP_CMap::Range, g_FXCMAP_EUC_V_1, 27, FXCMAP_CMap::None, NULL, - 0, -1}, - {"Ext-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_Ext_RKSJ_H_2, 665, - FXCMAP_CMap::None, NULL, 0, -4}, - {"Ext-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_Ext_RKSJ_V_2, 39, - FXCMAP_CMap::None, NULL, 0, -1}, - {"H", FXCMAP_CMap::Range, g_FXCMAP_H_1, 118, FXCMAP_CMap::None, NULL, 0, 0}, - {"V", FXCMAP_CMap::Range, g_FXCMAP_V_1, 27, FXCMAP_CMap::None, NULL, 0, -1}, - {"UniJIS-UCS2-H", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_H_4, 9772, - FXCMAP_CMap::None, NULL, 0, 0}, - {"UniJIS-UCS2-V", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_V_4, 251, - FXCMAP_CMap::None, NULL, 0, -1}, - {"UniJIS-UCS2-HW-H", FXCMAP_CMap::Range, g_FXCMAP_UniJIS_UCS2_HW_H_4, 4, - FXCMAP_CMap::None, NULL, 0, -2}, - {"UniJIS-UCS2-HW-V", FXCMAP_CMap::Range, g_FXCMAP_UniJIS_UCS2_HW_V_4, 199, - FXCMAP_CMap::None, NULL, 0, -1}, - {"UniJIS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_H_4, 9772, - FXCMAP_CMap::None, NULL, 0, 0}, - {"UniJIS-UTF16-V", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_V_4, 251, - FXCMAP_CMap::None, NULL, 0, -1}, -}; - -void CPDF_ModuleMgr::LoadEmbeddedJapan1CMaps() { - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - pFontGlobals->m_EmbeddedCharsets[CIDSET_JAPAN1].m_pMapList = - g_FXCMAP_Japan1_cmaps; - pFontGlobals->m_EmbeddedCharsets[CIDSET_JAPAN1].m_Count = - FX_ArraySize(g_FXCMAP_Japan1_cmaps); - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_JAPAN1].m_pMap = - g_FXCMAP_Japan1CID2Unicode_4; - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_JAPAN1].m_Count = 15444; -} diff --git a/core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h b/core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h deleted file mode 100644 index 471dd36065..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_ -#define CORE_SRC_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_ - -#include "core/include/fxcrt/fx_system.h" // For FX_WORD. - -extern const FX_WORD g_FXCMAP_83pv_RKSJ_H_1[]; -extern const FX_WORD g_FXCMAP_90ms_RKSJ_H_2[]; -extern const FX_WORD g_FXCMAP_90ms_RKSJ_V_2[]; -extern const FX_WORD g_FXCMAP_90msp_RKSJ_H_2[]; -extern const FX_WORD g_FXCMAP_90msp_RKSJ_V_2[]; -extern const FX_WORD g_FXCMAP_90pv_RKSJ_H_1[]; -extern const FX_WORD g_FXCMAP_Add_RKSJ_H_1[]; -extern const FX_WORD g_FXCMAP_Add_RKSJ_V_1[]; -extern const FX_WORD g_FXCMAP_EUC_H_1[]; -extern const FX_WORD g_FXCMAP_EUC_V_1[]; -extern const FX_WORD g_FXCMAP_Ext_RKSJ_H_2[]; -extern const FX_WORD g_FXCMAP_Ext_RKSJ_V_2[]; -extern const FX_WORD g_FXCMAP_H_1[]; -extern const FX_WORD g_FXCMAP_V_1[]; -extern const FX_WORD g_FXCMAP_UniJIS_UCS2_H_4[]; -extern const FX_WORD g_FXCMAP_UniJIS_UCS2_V_4[]; -extern const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_H_4[]; -extern const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_V_4[]; -extern const FX_WORD g_FXCMAP_UniJIS_UTF16_H_0[]; -extern const FX_WORD g_FXCMAP_UniJIS_UTF16_H_0_DWord[]; -extern const FX_WORD g_FXCMAP_UniJIS_UTF16_V_0[]; -extern const FX_WORD g_FXCMAP_Japan1CID2Unicode_4[]; - -#endif // CORE_SRC_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_ diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp deleted file mode 100644 index 47f7313004..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp +++ /dev/null @@ -1,2050 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_Korea1CID2Unicode_2[18352] = { - 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, - 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, - 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, - 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, - 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, - 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, - 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, - 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, - 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, - 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, - 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20A9, 0x2010, 0x00A9, - 0x2122, 0x22EF, 0x3000, 0x3001, 0x3002, 0x00B7, 0x2025, 0x2026, 0x00A8, - 0x3003, 0x2013, 0x2014, 0x2016, 0xFF3C, 0x223C, 0x2018, 0x2019, 0x201C, - 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, - 0x300E, 0x300F, 0x3010, 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2260, 0x2264, - 0x2265, 0x221E, 0x2234, 0x00B0, 0x2032, 0x2033, 0x2103, 0x212B, 0xFFE0, - 0xFFE1, 0xFFE5, 0x2642, 0x2640, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, - 0x2261, 0x2252, 0x00A7, 0x203B, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, - 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x2192, - 0x2190, 0x2191, 0x2193, 0x2194, 0x3013, 0x226A, 0x226B, 0x221A, 0x223D, - 0x221D, 0x2235, 0x222B, 0x222C, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, - 0x2283, 0x222A, 0x2229, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200, - 0x2203, 0x00B4, 0x02DC, 0x02C7, 0x02D8, 0x02DD, 0x02DA, 0x02D9, 0x00B8, - 0x02DB, 0x00A1, 0x00BF, 0x2236, 0x222E, 0x2211, 0x220F, 0x00A4, 0x2109, - 0x2030, 0x25C1, 0x25C0, 0x25B7, 0x25B6, 0x2664, 0x2660, 0x2661, 0x2665, - 0x2667, 0x2663, 0x2299, 0x25C8, 0x25A3, 0x25D0, 0x25D1, 0x2592, 0x25A4, - 0x25A5, 0x25A8, 0x25A7, 0x25A6, 0x25A9, 0x2668, 0x260F, 0x260E, 0x261C, - 0x261E, 0x00B6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, - 0x266D, 0x2669, 0x266A, 0x266C, 0x327F, 0x321C, 0x2116, 0x33C7, 0x2122, - 0x33C2, 0x33D8, 0x2121, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, 0xFF06, - 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, - 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, - 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, - 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, - 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, - 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFFE6, - 0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, - 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, - 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, - 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0x3131, 0x3132, - 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313A, 0x313B, - 0x313C, 0x313D, 0x313E, 0x313F, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, - 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314A, 0x314B, 0x314C, 0x314D, - 0x314E, 0x314F, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, - 0x3157, 0x3158, 0x3159, 0x315A, 0x315B, 0x315C, 0x315D, 0x315E, 0x315F, - 0x3160, 0x3161, 0x3162, 0x3163, 0x3165, 0x3166, 0x3167, 0x3168, 0x3169, - 0x316A, 0x316B, 0x316C, 0x316D, 0x316E, 0x316F, 0x3170, 0x3171, 0x3172, - 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178, 0x3179, 0x317A, 0x317B, - 0x317C, 0x317D, 0x317E, 0x317F, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, - 0x3185, 0x3186, 0x3187, 0x3188, 0x3189, 0x318A, 0x318B, 0x318C, 0x318D, - 0x318E, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, - 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, - 0x2167, 0x2168, 0x2169, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, - 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, - 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, - 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, - 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, - 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x2500, 0x2502, 0x250C, - 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501, - 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B, - 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525, - 0x2538, 0x2542, 0x2512, 0x2511, 0x251A, 0x2519, 0x2516, 0x2515, 0x250E, - 0x250D, 0x251E, 0x251F, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252A, - 0x252D, 0x252E, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253A, 0x253D, - 0x253E, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, - 0x2549, 0x254A, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33C4, 0x33A3, - 0x33A4, 0x33A5, 0x33A6, 0x3399, 0x339A, 0x339B, 0x339C, 0x339D, 0x339E, - 0x339F, 0x33A0, 0x33A1, 0x33A2, 0x33CA, 0x338D, 0x338E, 0x338F, 0x33CF, - 0x3388, 0x3389, 0x33C8, 0x33A7, 0x33A8, 0x33B0, 0x33B1, 0x33B2, 0x33B3, - 0x33B4, 0x33B5, 0x33B6, 0x33B7, 0x33B8, 0x33B9, 0x3380, 0x3381, 0x3382, - 0x3383, 0x3384, 0x33BA, 0x33BB, 0x33BC, 0x33BD, 0x33BE, 0x33BF, 0x3390, - 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33C0, 0x33C1, 0x338A, 0x338B, - 0x338C, 0x33D6, 0x33C5, 0x33AD, 0x33AE, 0x33AF, 0x33DB, 0x33A9, 0x33AA, - 0x33AB, 0x33AC, 0x33DD, 0x33D0, 0x33D3, 0x33C3, 0x33C9, 0x33DC, 0x33C6, - 0x00C6, 0x00D0, 0x00AA, 0x0126, 0x0132, 0x013F, 0x0141, 0x00D8, 0x0152, - 0x00BA, 0x00DE, 0x0166, 0x014A, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, - 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326A, 0x326B, 0x326C, 0x326D, - 0x326E, 0x326F, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, - 0x3277, 0x3278, 0x3279, 0x327A, 0x327B, 0x24D0, 0x24D1, 0x24D2, 0x24D3, - 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, 0x24DA, 0x24DB, 0x24DC, - 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5, - 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, - 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D, - 0x246E, 0x00BD, 0x2153, 0x2154, 0x00BC, 0x00BE, 0x215B, 0x215C, 0x215D, - 0x215E, 0x00E6, 0x0111, 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, - 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, 0x3200, - 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209, - 0x320A, 0x320B, 0x320C, 0x320D, 0x320E, 0x320F, 0x3210, 0x3211, 0x3212, - 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, 0x3218, 0x3219, 0x321A, 0x321B, - 0x249C, 0x249D, 0x249E, 0x249F, 0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4, - 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD, - 0x24AE, 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x2474, - 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, - 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, 0x00B9, 0x00B2, 0x00B3, 0x2074, - 0x207F, 0x2081, 0x2082, 0x2083, 0x2084, 0x3041, 0x3042, 0x3043, 0x3044, - 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, - 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, - 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, - 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, - 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, - 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, - 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, - 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, - 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, - 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, - 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, - 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, - 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, - 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, - 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, - 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, - 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, - 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, - 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, - 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, - 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, - 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, - 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, - 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, - 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, - 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0xAC00, 0xAC01, 0xAC04, - 0xAC07, 0xAC08, 0xAC09, 0xAC0A, 0xAC10, 0xAC11, 0xAC12, 0xAC13, 0xAC14, - 0xAC15, 0xAC16, 0xAC17, 0xAC19, 0xAC1A, 0xAC1B, 0xAC1C, 0xAC1D, 0xAC20, - 0xAC24, 0xAC2C, 0xAC2D, 0xAC2F, 0xAC30, 0xAC31, 0xAC38, 0xAC39, 0xAC3C, - 0xAC40, 0xAC4B, 0xAC4D, 0xAC54, 0xAC58, 0xAC5C, 0xAC70, 0xAC71, 0xAC74, - 0xAC77, 0xAC78, 0xAC7A, 0xAC80, 0xAC81, 0xAC83, 0xAC84, 0xAC85, 0xAC86, - 0xAC89, 0xAC8A, 0xAC8B, 0xAC8C, 0xAC90, 0xAC94, 0xAC9C, 0xAC9D, 0xAC9F, - 0xACA0, 0xACA1, 0xACA8, 0xACA9, 0xACAA, 0xACAC, 0xACAF, 0xACB0, 0xACB8, - 0xACB9, 0xACBB, 0xACBC, 0xACBD, 0xACC1, 0xACC4, 0xACC8, 0xACCC, 0xACD5, - 0xACD7, 0xACE0, 0xACE1, 0xACE4, 0xACE7, 0xACE8, 0xACEA, 0xACEC, 0xACEF, - 0xACF0, 0xACF1, 0xACF3, 0xACF5, 0xACF6, 0xACFC, 0xACFD, 0xAD00, 0xAD04, - 0xAD06, 0xAD0C, 0xAD0D, 0xAD0F, 0xAD11, 0xAD18, 0xAD1C, 0xAD20, 0xAD29, - 0xAD2C, 0xAD2D, 0xAD34, 0xAD35, 0xAD38, 0xAD3C, 0xAD44, 0xAD45, 0xAD47, - 0xAD49, 0xAD50, 0xAD54, 0xAD58, 0xAD61, 0xAD63, 0xAD6C, 0xAD6D, 0xAD70, - 0xAD73, 0xAD74, 0xAD75, 0xAD76, 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7F, 0xAD81, - 0xAD82, 0xAD88, 0xAD89, 0xAD8C, 0xAD90, 0xAD9C, 0xAD9D, 0xADA4, 0xADB7, - 0xADC0, 0xADC1, 0xADC4, 0xADC8, 0xADD0, 0xADD1, 0xADD3, 0xADDC, 0xADE0, - 0xADE4, 0xADF8, 0xADF9, 0xADFC, 0xADFF, 0xAE00, 0xAE01, 0xAE08, 0xAE09, - 0xAE0B, 0xAE0D, 0xAE14, 0xAE30, 0xAE31, 0xAE34, 0xAE37, 0xAE38, 0xAE3A, - 0xAE40, 0xAE41, 0xAE43, 0xAE45, 0xAE46, 0xAE4A, 0xAE4C, 0xAE4D, 0xAE4E, - 0xAE50, 0xAE54, 0xAE56, 0xAE5C, 0xAE5D, 0xAE5F, 0xAE60, 0xAE61, 0xAE65, - 0xAE68, 0xAE69, 0xAE6C, 0xAE70, 0xAE78, 0xAE79, 0xAE7B, 0xAE7C, 0xAE7D, - 0xAE84, 0xAE85, 0xAE8C, 0xAEBC, 0xAEBD, 0xAEBE, 0xAEC0, 0xAEC4, 0xAECC, - 0xAECD, 0xAECF, 0xAED0, 0xAED1, 0xAED8, 0xAED9, 0xAEDC, 0xAEE8, 0xAEEB, - 0xAEED, 0xAEF4, 0xAEF8, 0xAEFC, 0xAF07, 0xAF08, 0xAF0D, 0xAF10, 0xAF2C, - 0xAF2D, 0xAF30, 0xAF32, 0xAF34, 0xAF3C, 0xAF3D, 0xAF3F, 0xAF41, 0xAF42, - 0xAF43, 0xAF48, 0xAF49, 0xAF50, 0xAF5C, 0xAF5D, 0xAF64, 0xAF65, 0xAF79, - 0xAF80, 0xAF84, 0xAF88, 0xAF90, 0xAF91, 0xAF95, 0xAF9C, 0xAFB8, 0xAFB9, - 0xAFBC, 0xAFC0, 0xAFC7, 0xAFC8, 0xAFC9, 0xAFCB, 0xAFCD, 0xAFCE, 0xAFD4, - 0xAFDC, 0xAFE8, 0xAFE9, 0xAFF0, 0xAFF1, 0xAFF4, 0xAFF8, 0xB000, 0xB001, - 0xB004, 0xB00C, 0xB010, 0xB014, 0xB01C, 0xB01D, 0xB028, 0xB044, 0xB045, - 0xB048, 0xB04A, 0xB04C, 0xB04E, 0xB053, 0xB054, 0xB055, 0xB057, 0xB059, - 0xB05D, 0xB07C, 0xB07D, 0xB080, 0xB084, 0xB08C, 0xB08D, 0xB08F, 0xB091, - 0xB098, 0xB099, 0xB09A, 0xB09C, 0xB09F, 0xB0A0, 0xB0A1, 0xB0A2, 0xB0A8, - 0xB0A9, 0xB0AB, 0xB0AC, 0xB0AD, 0xB0AE, 0xB0AF, 0xB0B1, 0xB0B3, 0xB0B4, - 0xB0B5, 0xB0B8, 0xB0BC, 0xB0C4, 0xB0C5, 0xB0C7, 0xB0C8, 0xB0C9, 0xB0D0, - 0xB0D1, 0xB0D4, 0xB0D8, 0xB0E0, 0xB0E5, 0xB108, 0xB109, 0xB10B, 0xB10C, - 0xB110, 0xB112, 0xB113, 0xB118, 0xB119, 0xB11B, 0xB11C, 0xB11D, 0xB123, - 0xB124, 0xB125, 0xB128, 0xB12C, 0xB134, 0xB135, 0xB137, 0xB138, 0xB139, - 0xB140, 0xB141, 0xB144, 0xB148, 0xB150, 0xB151, 0xB154, 0xB155, 0xB158, - 0xB15C, 0xB160, 0xB178, 0xB179, 0xB17C, 0xB180, 0xB182, 0xB188, 0xB189, - 0xB18B, 0xB18D, 0xB192, 0xB193, 0xB194, 0xB198, 0xB19C, 0xB1A8, 0xB1CC, - 0xB1D0, 0xB1D4, 0xB1DC, 0xB1DD, 0xB1DF, 0xB1E8, 0xB1E9, 0xB1EC, 0xB1F0, - 0xB1F9, 0xB1FB, 0xB1FD, 0xB204, 0xB205, 0xB208, 0xB20B, 0xB20C, 0xB214, - 0xB215, 0xB217, 0xB219, 0xB220, 0xB234, 0xB23C, 0xB258, 0xB25C, 0xB260, - 0xB268, 0xB269, 0xB274, 0xB275, 0xB27C, 0xB284, 0xB285, 0xB289, 0xB290, - 0xB291, 0xB294, 0xB298, 0xB299, 0xB29A, 0xB2A0, 0xB2A1, 0xB2A3, 0xB2A5, - 0xB2A6, 0xB2AA, 0xB2AC, 0xB2B0, 0xB2B4, 0xB2C8, 0xB2C9, 0xB2CC, 0xB2D0, - 0xB2D2, 0xB2D8, 0xB2D9, 0xB2DB, 0xB2DD, 0xB2E2, 0xB2E4, 0xB2E5, 0xB2E6, - 0xB2E8, 0xB2EB, 0xB2EC, 0xB2ED, 0xB2EE, 0xB2EF, 0xB2F3, 0xB2F4, 0xB2F5, - 0xB2F7, 0xB2F8, 0xB2F9, 0xB2FA, 0xB2FB, 0xB2FF, 0xB300, 0xB301, 0xB304, - 0xB308, 0xB310, 0xB311, 0xB313, 0xB314, 0xB315, 0xB31C, 0xB354, 0xB355, - 0xB356, 0xB358, 0xB35B, 0xB35C, 0xB35E, 0xB35F, 0xB364, 0xB365, 0xB367, - 0xB369, 0xB36B, 0xB36E, 0xB370, 0xB371, 0xB374, 0xB378, 0xB380, 0xB381, - 0xB383, 0xB384, 0xB385, 0xB38C, 0xB390, 0xB394, 0xB3A0, 0xB3A1, 0xB3A8, - 0xB3AC, 0xB3C4, 0xB3C5, 0xB3C8, 0xB3CB, 0xB3CC, 0xB3CE, 0xB3D0, 0xB3D4, - 0xB3D5, 0xB3D7, 0xB3D9, 0xB3DB, 0xB3DD, 0xB3E0, 0xB3E4, 0xB3E8, 0xB3FC, - 0xB410, 0xB418, 0xB41C, 0xB420, 0xB428, 0xB429, 0xB42B, 0xB434, 0xB450, - 0xB451, 0xB454, 0xB458, 0xB460, 0xB461, 0xB463, 0xB465, 0xB46C, 0xB480, - 0xB488, 0xB49D, 0xB4A4, 0xB4A8, 0xB4AC, 0xB4B5, 0xB4B7, 0xB4B9, 0xB4C0, - 0xB4C4, 0xB4C8, 0xB4D0, 0xB4D5, 0xB4DC, 0xB4DD, 0xB4E0, 0xB4E3, 0xB4E4, - 0xB4E6, 0xB4EC, 0xB4ED, 0xB4EF, 0xB4F1, 0xB4F8, 0xB514, 0xB515, 0xB518, - 0xB51B, 0xB51C, 0xB524, 0xB525, 0xB527, 0xB528, 0xB529, 0xB52A, 0xB530, - 0xB531, 0xB534, 0xB538, 0xB540, 0xB541, 0xB543, 0xB544, 0xB545, 0xB54B, - 0xB54C, 0xB54D, 0xB550, 0xB554, 0xB55C, 0xB55D, 0xB55F, 0xB560, 0xB561, - 0xB5A0, 0xB5A1, 0xB5A4, 0xB5A8, 0xB5AA, 0xB5AB, 0xB5B0, 0xB5B1, 0xB5B3, - 0xB5B4, 0xB5B5, 0xB5BB, 0xB5BC, 0xB5BD, 0xB5C0, 0xB5C4, 0xB5CC, 0xB5CD, - 0xB5CF, 0xB5D0, 0xB5D1, 0xB5D8, 0xB5EC, 0xB610, 0xB611, 0xB614, 0xB618, - 0xB625, 0xB62C, 0xB634, 0xB648, 0xB664, 0xB668, 0xB69C, 0xB69D, 0xB6A0, - 0xB6A4, 0xB6AB, 0xB6AC, 0xB6B1, 0xB6D4, 0xB6F0, 0xB6F4, 0xB6F8, 0xB700, - 0xB701, 0xB705, 0xB728, 0xB729, 0xB72C, 0xB72F, 0xB730, 0xB738, 0xB739, - 0xB73B, 0xB744, 0xB748, 0xB74C, 0xB754, 0xB755, 0xB760, 0xB764, 0xB768, - 0xB770, 0xB771, 0xB773, 0xB775, 0xB77C, 0xB77D, 0xB780, 0xB784, 0xB78C, - 0xB78D, 0xB78F, 0xB790, 0xB791, 0xB792, 0xB796, 0xB797, 0xB798, 0xB799, - 0xB79C, 0xB7A0, 0xB7A8, 0xB7A9, 0xB7AB, 0xB7AC, 0xB7AD, 0xB7B4, 0xB7B5, - 0xB7B8, 0xB7C7, 0xB7C9, 0xB7EC, 0xB7ED, 0xB7F0, 0xB7F4, 0xB7FC, 0xB7FD, - 0xB7FF, 0xB800, 0xB801, 0xB807, 0xB808, 0xB809, 0xB80C, 0xB810, 0xB818, - 0xB819, 0xB81B, 0xB81D, 0xB824, 0xB825, 0xB828, 0xB82C, 0xB834, 0xB835, - 0xB837, 0xB838, 0xB839, 0xB840, 0xB844, 0xB851, 0xB853, 0xB85C, 0xB85D, - 0xB860, 0xB864, 0xB86C, 0xB86D, 0xB86F, 0xB871, 0xB878, 0xB87C, 0xB88D, - 0xB8A8, 0xB8B0, 0xB8B4, 0xB8B8, 0xB8C0, 0xB8C1, 0xB8C3, 0xB8C5, 0xB8CC, - 0xB8D0, 0xB8D4, 0xB8DD, 0xB8DF, 0xB8E1, 0xB8E8, 0xB8E9, 0xB8EC, 0xB8F0, - 0xB8F8, 0xB8F9, 0xB8FB, 0xB8FD, 0xB904, 0xB918, 0xB920, 0xB93C, 0xB93D, - 0xB940, 0xB944, 0xB94C, 0xB94F, 0xB951, 0xB958, 0xB959, 0xB95C, 0xB960, - 0xB968, 0xB969, 0xB96B, 0xB96D, 0xB974, 0xB975, 0xB978, 0xB97C, 0xB984, - 0xB985, 0xB987, 0xB989, 0xB98A, 0xB98D, 0xB98E, 0xB9AC, 0xB9AD, 0xB9B0, - 0xB9B4, 0xB9BC, 0xB9BD, 0xB9BF, 0xB9C1, 0xB9C8, 0xB9C9, 0xB9CC, 0xB9CE, - 0xB9CF, 0xB9D0, 0xB9D1, 0xB9D2, 0xB9D8, 0xB9D9, 0xB9DB, 0xB9DD, 0xB9DE, - 0xB9E1, 0xB9E3, 0xB9E4, 0xB9E5, 0xB9E8, 0xB9EC, 0xB9F4, 0xB9F5, 0xB9F7, - 0xB9F8, 0xB9F9, 0xB9FA, 0xBA00, 0xBA01, 0xBA08, 0xBA15, 0xBA38, 0xBA39, - 0xBA3C, 0xBA40, 0xBA42, 0xBA48, 0xBA49, 0xBA4B, 0xBA4D, 0xBA4E, 0xBA53, - 0xBA54, 0xBA55, 0xBA58, 0xBA5C, 0xBA64, 0xBA65, 0xBA67, 0xBA68, 0xBA69, - 0xBA70, 0xBA71, 0xBA74, 0xBA78, 0xBA83, 0xBA84, 0xBA85, 0xBA87, 0xBA8C, - 0xBAA8, 0xBAA9, 0xBAAB, 0xBAAC, 0xBAB0, 0xBAB2, 0xBAB8, 0xBAB9, 0xBABB, - 0xBABD, 0xBAC4, 0xBAC8, 0xBAD8, 0xBAD9, 0xBAFC, 0xBB00, 0xBB04, 0xBB0D, - 0xBB0F, 0xBB11, 0xBB18, 0xBB1C, 0xBB20, 0xBB29, 0xBB2B, 0xBB34, 0xBB35, - 0xBB36, 0xBB38, 0xBB3B, 0xBB3C, 0xBB3D, 0xBB3E, 0xBB44, 0xBB45, 0xBB47, - 0xBB49, 0xBB4D, 0xBB4F, 0xBB50, 0xBB54, 0xBB58, 0xBB61, 0xBB63, 0xBB6C, - 0xBB88, 0xBB8C, 0xBB90, 0xBBA4, 0xBBA8, 0xBBAC, 0xBBB4, 0xBBB7, 0xBBC0, - 0xBBC4, 0xBBC8, 0xBBD0, 0xBBD3, 0xBBF8, 0xBBF9, 0xBBFC, 0xBBFF, 0xBC00, - 0xBC02, 0xBC08, 0xBC09, 0xBC0B, 0xBC0C, 0xBC0D, 0xBC0F, 0xBC11, 0xBC14, - 0xBC15, 0xBC16, 0xBC17, 0xBC18, 0xBC1B, 0xBC1C, 0xBC1D, 0xBC1E, 0xBC1F, - 0xBC24, 0xBC25, 0xBC27, 0xBC29, 0xBC2D, 0xBC30, 0xBC31, 0xBC34, 0xBC38, - 0xBC40, 0xBC41, 0xBC43, 0xBC44, 0xBC45, 0xBC49, 0xBC4C, 0xBC4D, 0xBC50, - 0xBC5D, 0xBC84, 0xBC85, 0xBC88, 0xBC8B, 0xBC8C, 0xBC8E, 0xBC94, 0xBC95, - 0xBC97, 0xBC99, 0xBC9A, 0xBCA0, 0xBCA1, 0xBCA4, 0xBCA7, 0xBCA8, 0xBCB0, - 0xBCB1, 0xBCB3, 0xBCB4, 0xBCB5, 0xBCBC, 0xBCBD, 0xBCC0, 0xBCC4, 0xBCCD, - 0xBCCF, 0xBCD0, 0xBCD1, 0xBCD5, 0xBCD8, 0xBCDC, 0xBCF4, 0xBCF5, 0xBCF6, - 0xBCF8, 0xBCFC, 0xBD04, 0xBD05, 0xBD07, 0xBD09, 0xBD10, 0xBD14, 0xBD24, - 0xBD2C, 0xBD40, 0xBD48, 0xBD49, 0xBD4C, 0xBD50, 0xBD58, 0xBD59, 0xBD64, - 0xBD68, 0xBD80, 0xBD81, 0xBD84, 0xBD87, 0xBD88, 0xBD89, 0xBD8A, 0xBD90, - 0xBD91, 0xBD93, 0xBD95, 0xBD99, 0xBD9A, 0xBD9C, 0xBDA4, 0xBDB0, 0xBDB8, - 0xBDD4, 0xBDD5, 0xBDD8, 0xBDDC, 0xBDE9, 0xBDF0, 0xBDF4, 0xBDF8, 0xBE00, - 0xBE03, 0xBE05, 0xBE0C, 0xBE0D, 0xBE10, 0xBE14, 0xBE1C, 0xBE1D, 0xBE1F, - 0xBE44, 0xBE45, 0xBE48, 0xBE4C, 0xBE4E, 0xBE54, 0xBE55, 0xBE57, 0xBE59, - 0xBE5A, 0xBE5B, 0xBE60, 0xBE61, 0xBE64, 0xBE68, 0xBE6A, 0xBE70, 0xBE71, - 0xBE73, 0xBE74, 0xBE75, 0xBE7B, 0xBE7C, 0xBE7D, 0xBE80, 0xBE84, 0xBE8C, - 0xBE8D, 0xBE8F, 0xBE90, 0xBE91, 0xBE98, 0xBE99, 0xBEA8, 0xBED0, 0xBED1, - 0xBED4, 0xBED7, 0xBED8, 0xBEE0, 0xBEE3, 0xBEE4, 0xBEE5, 0xBEEC, 0xBF01, - 0xBF08, 0xBF09, 0xBF18, 0xBF19, 0xBF1B, 0xBF1C, 0xBF1D, 0xBF40, 0xBF41, - 0xBF44, 0xBF48, 0xBF50, 0xBF51, 0xBF55, 0xBF94, 0xBFB0, 0xBFC5, 0xBFCC, - 0xBFCD, 0xBFD0, 0xBFD4, 0xBFDC, 0xBFDF, 0xBFE1, 0xC03C, 0xC051, 0xC058, - 0xC05C, 0xC060, 0xC068, 0xC069, 0xC090, 0xC091, 0xC094, 0xC098, 0xC0A0, - 0xC0A1, 0xC0A3, 0xC0A5, 0xC0AC, 0xC0AD, 0xC0AF, 0xC0B0, 0xC0B3, 0xC0B4, - 0xC0B5, 0xC0B6, 0xC0BC, 0xC0BD, 0xC0BF, 0xC0C0, 0xC0C1, 0xC0C5, 0xC0C8, - 0xC0C9, 0xC0CC, 0xC0D0, 0xC0D8, 0xC0D9, 0xC0DB, 0xC0DC, 0xC0DD, 0xC0E4, - 0xC0E5, 0xC0E8, 0xC0EC, 0xC0F4, 0xC0F5, 0xC0F7, 0xC0F9, 0xC100, 0xC104, - 0xC108, 0xC110, 0xC115, 0xC11C, 0xC11D, 0xC11E, 0xC11F, 0xC120, 0xC123, - 0xC124, 0xC126, 0xC127, 0xC12C, 0xC12D, 0xC12F, 0xC130, 0xC131, 0xC136, - 0xC138, 0xC139, 0xC13C, 0xC140, 0xC148, 0xC149, 0xC14B, 0xC14C, 0xC14D, - 0xC154, 0xC155, 0xC158, 0xC15C, 0xC164, 0xC165, 0xC167, 0xC168, 0xC169, - 0xC170, 0xC174, 0xC178, 0xC185, 0xC18C, 0xC18D, 0xC18E, 0xC190, 0xC194, - 0xC196, 0xC19C, 0xC19D, 0xC19F, 0xC1A1, 0xC1A5, 0xC1A8, 0xC1A9, 0xC1AC, - 0xC1B0, 0xC1BD, 0xC1C4, 0xC1C8, 0xC1CC, 0xC1D4, 0xC1D7, 0xC1D8, 0xC1E0, - 0xC1E4, 0xC1E8, 0xC1F0, 0xC1F1, 0xC1F3, 0xC1FC, 0xC1FD, 0xC200, 0xC204, - 0xC20C, 0xC20D, 0xC20F, 0xC211, 0xC218, 0xC219, 0xC21C, 0xC21F, 0xC220, - 0xC228, 0xC229, 0xC22B, 0xC22D, 0xC22F, 0xC231, 0xC232, 0xC234, 0xC248, - 0xC250, 0xC251, 0xC254, 0xC258, 0xC260, 0xC265, 0xC26C, 0xC26D, 0xC270, - 0xC274, 0xC27C, 0xC27D, 0xC27F, 0xC281, 0xC288, 0xC289, 0xC290, 0xC298, - 0xC29B, 0xC29D, 0xC2A4, 0xC2A5, 0xC2A8, 0xC2AC, 0xC2AD, 0xC2B4, 0xC2B5, - 0xC2B7, 0xC2B9, 0xC2DC, 0xC2DD, 0xC2E0, 0xC2E3, 0xC2E4, 0xC2EB, 0xC2EC, - 0xC2ED, 0xC2EF, 0xC2F1, 0xC2F6, 0xC2F8, 0xC2F9, 0xC2FB, 0xC2FC, 0xC300, - 0xC308, 0xC309, 0xC30C, 0xC30D, 0xC313, 0xC314, 0xC315, 0xC318, 0xC31C, - 0xC324, 0xC325, 0xC328, 0xC329, 0xC345, 0xC368, 0xC369, 0xC36C, 0xC370, - 0xC372, 0xC378, 0xC379, 0xC37C, 0xC37D, 0xC384, 0xC388, 0xC38C, 0xC3C0, - 0xC3D8, 0xC3D9, 0xC3DC, 0xC3DF, 0xC3E0, 0xC3E2, 0xC3E8, 0xC3E9, 0xC3ED, - 0xC3F4, 0xC3F5, 0xC3F8, 0xC408, 0xC410, 0xC424, 0xC42C, 0xC430, 0xC434, - 0xC43C, 0xC43D, 0xC448, 0xC464, 0xC465, 0xC468, 0xC46C, 0xC474, 0xC475, - 0xC479, 0xC480, 0xC494, 0xC49C, 0xC4B8, 0xC4BC, 0xC4E9, 0xC4F0, 0xC4F1, - 0xC4F4, 0xC4F8, 0xC4FA, 0xC4FF, 0xC500, 0xC501, 0xC50C, 0xC510, 0xC514, - 0xC51C, 0xC528, 0xC529, 0xC52C, 0xC530, 0xC538, 0xC539, 0xC53B, 0xC53D, - 0xC544, 0xC545, 0xC548, 0xC549, 0xC54A, 0xC54C, 0xC54D, 0xC54E, 0xC553, - 0xC554, 0xC555, 0xC557, 0xC558, 0xC559, 0xC55D, 0xC55E, 0xC560, 0xC561, - 0xC564, 0xC568, 0xC570, 0xC571, 0xC573, 0xC574, 0xC575, 0xC57C, 0xC57D, - 0xC580, 0xC584, 0xC587, 0xC58C, 0xC58D, 0xC58F, 0xC591, 0xC595, 0xC597, - 0xC598, 0xC59C, 0xC5A0, 0xC5A9, 0xC5B4, 0xC5B5, 0xC5B8, 0xC5B9, 0xC5BB, - 0xC5BC, 0xC5BD, 0xC5BE, 0xC5C4, 0xC5C5, 0xC5C6, 0xC5C7, 0xC5C8, 0xC5C9, - 0xC5CA, 0xC5CC, 0xC5CE, 0xC5D0, 0xC5D1, 0xC5D4, 0xC5D8, 0xC5E0, 0xC5E1, - 0xC5E3, 0xC5E5, 0xC5EC, 0xC5ED, 0xC5EE, 0xC5F0, 0xC5F4, 0xC5F6, 0xC5F7, - 0xC5FC, 0xC5FD, 0xC5FE, 0xC5FF, 0xC600, 0xC601, 0xC605, 0xC606, 0xC607, - 0xC608, 0xC60C, 0xC610, 0xC618, 0xC619, 0xC61B, 0xC61C, 0xC624, 0xC625, - 0xC628, 0xC62C, 0xC62D, 0xC62E, 0xC630, 0xC633, 0xC634, 0xC635, 0xC637, - 0xC639, 0xC63B, 0xC640, 0xC641, 0xC644, 0xC648, 0xC650, 0xC651, 0xC653, - 0xC654, 0xC655, 0xC65C, 0xC65D, 0xC660, 0xC66C, 0xC66F, 0xC671, 0xC678, - 0xC679, 0xC67C, 0xC680, 0xC688, 0xC689, 0xC68B, 0xC68D, 0xC694, 0xC695, - 0xC698, 0xC69C, 0xC6A4, 0xC6A5, 0xC6A7, 0xC6A9, 0xC6B0, 0xC6B1, 0xC6B4, - 0xC6B8, 0xC6B9, 0xC6BA, 0xC6C0, 0xC6C1, 0xC6C3, 0xC6C5, 0xC6CC, 0xC6CD, - 0xC6D0, 0xC6D4, 0xC6DC, 0xC6DD, 0xC6E0, 0xC6E1, 0xC6E8, 0xC6E9, 0xC6EC, - 0xC6F0, 0xC6F8, 0xC6F9, 0xC6FD, 0xC704, 0xC705, 0xC708, 0xC70C, 0xC714, - 0xC715, 0xC717, 0xC719, 0xC720, 0xC721, 0xC724, 0xC728, 0xC730, 0xC731, - 0xC733, 0xC735, 0xC737, 0xC73C, 0xC73D, 0xC740, 0xC744, 0xC74A, 0xC74C, - 0xC74D, 0xC74F, 0xC751, 0xC752, 0xC753, 0xC754, 0xC755, 0xC756, 0xC757, - 0xC758, 0xC75C, 0xC760, 0xC768, 0xC76B, 0xC774, 0xC775, 0xC778, 0xC77C, - 0xC77D, 0xC77E, 0xC783, 0xC784, 0xC785, 0xC787, 0xC788, 0xC789, 0xC78A, - 0xC78E, 0xC790, 0xC791, 0xC794, 0xC796, 0xC797, 0xC798, 0xC79A, 0xC7A0, - 0xC7A1, 0xC7A3, 0xC7A4, 0xC7A5, 0xC7A6, 0xC7AC, 0xC7AD, 0xC7B0, 0xC7B4, - 0xC7BC, 0xC7BD, 0xC7BF, 0xC7C0, 0xC7C1, 0xC7C8, 0xC7C9, 0xC7CC, 0xC7CE, - 0xC7D0, 0xC7D8, 0xC7DD, 0xC7E4, 0xC7E8, 0xC7EC, 0xC800, 0xC801, 0xC804, - 0xC808, 0xC80A, 0xC810, 0xC811, 0xC813, 0xC815, 0xC816, 0xC81C, 0xC81D, - 0xC820, 0xC824, 0xC82C, 0xC82D, 0xC82F, 0xC831, 0xC838, 0xC83C, 0xC840, - 0xC848, 0xC849, 0xC84C, 0xC84D, 0xC854, 0xC870, 0xC871, 0xC874, 0xC878, - 0xC87A, 0xC880, 0xC881, 0xC883, 0xC885, 0xC886, 0xC887, 0xC88B, 0xC88C, - 0xC88D, 0xC894, 0xC89D, 0xC89F, 0xC8A1, 0xC8A8, 0xC8BC, 0xC8BD, 0xC8C4, - 0xC8C8, 0xC8CC, 0xC8D4, 0xC8D5, 0xC8D7, 0xC8D9, 0xC8E0, 0xC8E1, 0xC8E4, - 0xC8F5, 0xC8FC, 0xC8FD, 0xC900, 0xC904, 0xC905, 0xC906, 0xC90C, 0xC90D, - 0xC90F, 0xC911, 0xC918, 0xC92C, 0xC934, 0xC950, 0xC951, 0xC954, 0xC958, - 0xC960, 0xC961, 0xC963, 0xC96C, 0xC970, 0xC974, 0xC97C, 0xC988, 0xC989, - 0xC98C, 0xC990, 0xC998, 0xC999, 0xC99B, 0xC99D, 0xC9C0, 0xC9C1, 0xC9C4, - 0xC9C7, 0xC9C8, 0xC9CA, 0xC9D0, 0xC9D1, 0xC9D3, 0xC9D5, 0xC9D6, 0xC9D9, - 0xC9DA, 0xC9DC, 0xC9DD, 0xC9E0, 0xC9E2, 0xC9E4, 0xC9E7, 0xC9EC, 0xC9ED, - 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F8, 0xC9F9, 0xC9FC, 0xCA00, 0xCA08, 0xCA09, - 0xCA0B, 0xCA0C, 0xCA0D, 0xCA14, 0xCA18, 0xCA29, 0xCA4C, 0xCA4D, 0xCA50, - 0xCA54, 0xCA5C, 0xCA5D, 0xCA5F, 0xCA60, 0xCA61, 0xCA68, 0xCA7D, 0xCA84, - 0xCA98, 0xCABC, 0xCABD, 0xCAC0, 0xCAC4, 0xCACC, 0xCACD, 0xCACF, 0xCAD1, - 0xCAD3, 0xCAD8, 0xCAD9, 0xCAE0, 0xCAEC, 0xCAF4, 0xCB08, 0xCB10, 0xCB14, - 0xCB18, 0xCB20, 0xCB21, 0xCB41, 0xCB48, 0xCB49, 0xCB4C, 0xCB50, 0xCB58, - 0xCB59, 0xCB5D, 0xCB64, 0xCB78, 0xCB79, 0xCB9C, 0xCBB8, 0xCBD4, 0xCBE4, - 0xCBE7, 0xCBE9, 0xCC0C, 0xCC0D, 0xCC10, 0xCC14, 0xCC1C, 0xCC1D, 0xCC21, - 0xCC22, 0xCC27, 0xCC28, 0xCC29, 0xCC2C, 0xCC2E, 0xCC30, 0xCC38, 0xCC39, - 0xCC3B, 0xCC3C, 0xCC3D, 0xCC3E, 0xCC44, 0xCC45, 0xCC48, 0xCC4C, 0xCC54, - 0xCC55, 0xCC57, 0xCC58, 0xCC59, 0xCC60, 0xCC64, 0xCC66, 0xCC68, 0xCC70, - 0xCC75, 0xCC98, 0xCC99, 0xCC9C, 0xCCA0, 0xCCA8, 0xCCA9, 0xCCAB, 0xCCAC, - 0xCCAD, 0xCCB4, 0xCCB5, 0xCCB8, 0xCCBC, 0xCCC4, 0xCCC5, 0xCCC7, 0xCCC9, - 0xCCD0, 0xCCD4, 0xCCE4, 0xCCEC, 0xCCF0, 0xCD01, 0xCD08, 0xCD09, 0xCD0C, - 0xCD10, 0xCD18, 0xCD19, 0xCD1B, 0xCD1D, 0xCD24, 0xCD28, 0xCD2C, 0xCD39, - 0xCD5C, 0xCD60, 0xCD64, 0xCD6C, 0xCD6D, 0xCD6F, 0xCD71, 0xCD78, 0xCD88, - 0xCD94, 0xCD95, 0xCD98, 0xCD9C, 0xCDA4, 0xCDA5, 0xCDA7, 0xCDA9, 0xCDB0, - 0xCDC4, 0xCDCC, 0xCDD0, 0xCDE8, 0xCDEC, 0xCDF0, 0xCDF8, 0xCDF9, 0xCDFB, - 0xCDFD, 0xCE04, 0xCE08, 0xCE0C, 0xCE14, 0xCE19, 0xCE20, 0xCE21, 0xCE24, - 0xCE28, 0xCE30, 0xCE31, 0xCE33, 0xCE35, 0xCE58, 0xCE59, 0xCE5C, 0xCE5F, - 0xCE60, 0xCE61, 0xCE68, 0xCE69, 0xCE6B, 0xCE6D, 0xCE74, 0xCE75, 0xCE78, - 0xCE7C, 0xCE84, 0xCE85, 0xCE87, 0xCE89, 0xCE90, 0xCE91, 0xCE94, 0xCE98, - 0xCEA0, 0xCEA1, 0xCEA3, 0xCEA4, 0xCEA5, 0xCEAC, 0xCEAD, 0xCEC1, 0xCEE4, - 0xCEE5, 0xCEE8, 0xCEEB, 0xCEEC, 0xCEF4, 0xCEF5, 0xCEF7, 0xCEF8, 0xCEF9, - 0xCF00, 0xCF01, 0xCF04, 0xCF08, 0xCF10, 0xCF11, 0xCF13, 0xCF15, 0xCF1C, - 0xCF20, 0xCF24, 0xCF2C, 0xCF2D, 0xCF2F, 0xCF30, 0xCF31, 0xCF38, 0xCF54, - 0xCF55, 0xCF58, 0xCF5C, 0xCF64, 0xCF65, 0xCF67, 0xCF69, 0xCF70, 0xCF71, - 0xCF74, 0xCF78, 0xCF80, 0xCF85, 0xCF8C, 0xCFA1, 0xCFA8, 0xCFB0, 0xCFC4, - 0xCFE0, 0xCFE1, 0xCFE4, 0xCFE8, 0xCFF0, 0xCFF1, 0xCFF3, 0xCFF5, 0xCFFC, - 0xD000, 0xD004, 0xD011, 0xD018, 0xD02D, 0xD034, 0xD035, 0xD038, 0xD03C, - 0xD044, 0xD045, 0xD047, 0xD049, 0xD050, 0xD054, 0xD058, 0xD060, 0xD06C, - 0xD06D, 0xD070, 0xD074, 0xD07C, 0xD07D, 0xD081, 0xD0A4, 0xD0A5, 0xD0A8, - 0xD0AC, 0xD0B4, 0xD0B5, 0xD0B7, 0xD0B9, 0xD0C0, 0xD0C1, 0xD0C4, 0xD0C8, - 0xD0C9, 0xD0D0, 0xD0D1, 0xD0D3, 0xD0D4, 0xD0D5, 0xD0DC, 0xD0DD, 0xD0E0, - 0xD0E4, 0xD0EC, 0xD0ED, 0xD0EF, 0xD0F0, 0xD0F1, 0xD0F8, 0xD10D, 0xD130, - 0xD131, 0xD134, 0xD138, 0xD13A, 0xD140, 0xD141, 0xD143, 0xD144, 0xD145, - 0xD14C, 0xD14D, 0xD150, 0xD154, 0xD15C, 0xD15D, 0xD15F, 0xD161, 0xD168, - 0xD16C, 0xD17C, 0xD184, 0xD188, 0xD1A0, 0xD1A1, 0xD1A4, 0xD1A8, 0xD1B0, - 0xD1B1, 0xD1B3, 0xD1B5, 0xD1BA, 0xD1BC, 0xD1C0, 0xD1D8, 0xD1F4, 0xD1F8, - 0xD207, 0xD209, 0xD210, 0xD22C, 0xD22D, 0xD230, 0xD234, 0xD23C, 0xD23D, - 0xD23F, 0xD241, 0xD248, 0xD25C, 0xD264, 0xD280, 0xD281, 0xD284, 0xD288, - 0xD290, 0xD291, 0xD295, 0xD29C, 0xD2A0, 0xD2A4, 0xD2AC, 0xD2B1, 0xD2B8, - 0xD2B9, 0xD2BC, 0xD2BF, 0xD2C0, 0xD2C2, 0xD2C8, 0xD2C9, 0xD2CB, 0xD2D4, - 0xD2D8, 0xD2DC, 0xD2E4, 0xD2E5, 0xD2F0, 0xD2F1, 0xD2F4, 0xD2F8, 0xD300, - 0xD301, 0xD303, 0xD305, 0xD30C, 0xD30D, 0xD30E, 0xD310, 0xD314, 0xD316, - 0xD31C, 0xD31D, 0xD31F, 0xD320, 0xD321, 0xD325, 0xD328, 0xD329, 0xD32C, - 0xD330, 0xD338, 0xD339, 0xD33B, 0xD33C, 0xD33D, 0xD344, 0xD345, 0xD37C, - 0xD37D, 0xD380, 0xD384, 0xD38C, 0xD38D, 0xD38F, 0xD390, 0xD391, 0xD398, - 0xD399, 0xD39C, 0xD3A0, 0xD3A8, 0xD3A9, 0xD3AB, 0xD3AD, 0xD3B4, 0xD3B8, - 0xD3BC, 0xD3C4, 0xD3C5, 0xD3C8, 0xD3C9, 0xD3D0, 0xD3D8, 0xD3E1, 0xD3E3, - 0xD3EC, 0xD3ED, 0xD3F0, 0xD3F4, 0xD3FC, 0xD3FD, 0xD3FF, 0xD401, 0xD408, - 0xD41D, 0xD440, 0xD444, 0xD45C, 0xD460, 0xD464, 0xD46D, 0xD46F, 0xD478, - 0xD479, 0xD47C, 0xD47F, 0xD480, 0xD482, 0xD488, 0xD489, 0xD48B, 0xD48D, - 0xD494, 0xD4A9, 0xD4CC, 0xD4D0, 0xD4D4, 0xD4DC, 0xD4DF, 0xD4E8, 0xD4EC, - 0xD4F0, 0xD4F8, 0xD4FB, 0xD4FD, 0xD504, 0xD508, 0xD50C, 0xD514, 0xD515, - 0xD517, 0xD53C, 0xD53D, 0xD540, 0xD544, 0xD54C, 0xD54D, 0xD54F, 0xD551, - 0xD558, 0xD559, 0xD55C, 0xD560, 0xD565, 0xD568, 0xD569, 0xD56B, 0xD56D, - 0xD574, 0xD575, 0xD578, 0xD57C, 0xD584, 0xD585, 0xD587, 0xD588, 0xD589, - 0xD590, 0xD5A5, 0xD5C8, 0xD5C9, 0xD5CC, 0xD5D0, 0xD5D2, 0xD5D8, 0xD5D9, - 0xD5DB, 0xD5DD, 0xD5E4, 0xD5E5, 0xD5E8, 0xD5EC, 0xD5F4, 0xD5F5, 0xD5F7, - 0xD5F9, 0xD600, 0xD601, 0xD604, 0xD608, 0xD610, 0xD611, 0xD613, 0xD614, - 0xD615, 0xD61C, 0xD620, 0xD624, 0xD62D, 0xD638, 0xD639, 0xD63C, 0xD640, - 0xD645, 0xD648, 0xD649, 0xD64B, 0xD64D, 0xD651, 0xD654, 0xD655, 0xD658, - 0xD65C, 0xD667, 0xD669, 0xD670, 0xD671, 0xD674, 0xD683, 0xD685, 0xD68C, - 0xD68D, 0xD690, 0xD694, 0xD69D, 0xD69F, 0xD6A1, 0xD6A8, 0xD6AC, 0xD6B0, - 0xD6B9, 0xD6BB, 0xD6C4, 0xD6C5, 0xD6C8, 0xD6CC, 0xD6D1, 0xD6D4, 0xD6D7, - 0xD6D9, 0xD6E0, 0xD6E4, 0xD6E8, 0xD6F0, 0xD6F5, 0xD6FC, 0xD6FD, 0xD700, - 0xD704, 0xD711, 0xD718, 0xD719, 0xD71C, 0xD720, 0xD728, 0xD729, 0xD72B, - 0xD72D, 0xD734, 0xD735, 0xD738, 0xD73C, 0xD744, 0xD747, 0xD749, 0xD750, - 0xD751, 0xD754, 0xD756, 0xD757, 0xD758, 0xD759, 0xD760, 0xD761, 0xD763, - 0xD765, 0xD769, 0xD76C, 0xD770, 0xD774, 0xD77C, 0xD77D, 0xD781, 0xD788, - 0xD789, 0xD78C, 0xD790, 0xD798, 0xD799, 0xD79B, 0xD79D, 0x4F3D, 0x4F73, - 0x5047, 0x50F9, 0x52A0, 0x53EF, 0x5475, 0x54E5, 0x5609, 0x5AC1, 0x5BB6, - 0x6687, 0x67B6, 0x67B7, 0x67EF, 0x6B4C, 0x73C2, 0x75C2, 0x7A3C, 0x82DB, - 0x8304, 0x8857, 0x8888, 0x8A36, 0x8CC8, 0x8DCF, 0x8EFB, 0x8FE6, 0x99D5, - 0x523B, 0x5374, 0x5404, 0x606A, 0x6164, 0x6BBC, 0x73CF, 0x811A, 0x89BA, - 0x89D2, 0x95A3, 0x4F83, 0x520A, 0x58BE, 0x5978, 0x59E6, 0x5E72, 0x5E79, - 0x61C7, 0x63C0, 0x6746, 0x67EC, 0x687F, 0x6F97, 0x764E, 0x770B, 0x78F5, - 0x7A08, 0x7AFF, 0x7C21, 0x809D, 0x826E, 0x8271, 0x8AEB, 0x9593, 0x4E6B, - 0x559D, 0x66F7, 0x6E34, 0x78A3, 0x7AED, 0x845B, 0x8910, 0x874E, 0x97A8, - 0x52D8, 0x574E, 0x582A, 0x5D4C, 0x611F, 0x61BE, 0x6221, 0x6562, 0x67D1, - 0x6A44, 0x6E1B, 0x7518, 0x75B3, 0x76E3, 0x77B0, 0x7D3A, 0x90AF, 0x9451, - 0x9452, 0x9F95, 0x5323, 0x5CAC, 0x7532, 0x80DB, 0x9240, 0x9598, 0x525B, - 0x5808, 0x59DC, 0x5CA1, 0x5D17, 0x5EB7, 0x5F3A, 0x5F4A, 0x6177, 0x6C5F, - 0x757A, 0x7586, 0x7CE0, 0x7D73, 0x7DB1, 0x7F8C, 0x8154, 0x8221, 0x8591, - 0x8941, 0x8B1B, 0x92FC, 0x964D, 0x9C47, 0x4ECB, 0x4EF7, 0x500B, 0x51F1, - 0x584F, 0x6137, 0x613E, 0x6168, 0x6539, 0x69EA, 0x6F11, 0x75A5, 0x7686, - 0x76D6, 0x7B87, 0x82A5, 0x84CB, 0x93A7, 0x958B, 0x5580, 0x5BA2, 0x5751, - 0x7CB3, 0x7FB9, 0x91B5, 0x5028, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x636E, - 0x64DA, 0x64E7, 0x6E20, 0x70AC, 0x795B, 0x8DDD, 0x8E1E, 0x907D, 0x9245, - 0x92F8, 0x4E7E, 0x4EF6, 0x5065, 0x5DFE, 0x5EFA, 0x6106, 0x6957, 0x8171, - 0x8654, 0x8E47, 0x9375, 0x9A2B, 0x4E5E, 0x5091, 0x6770, 0x6840, 0x5109, - 0x528D, 0x5292, 0x6AA2, 0x77BC, 0x9210, 0x9ED4, 0x52AB, 0x602F, 0x8FF2, - 0x5048, 0x61A9, 0x63ED, 0x64CA, 0x683C, 0x6A84, 0x6FC0, 0x8188, 0x89A1, - 0x9694, 0x5805, 0x727D, 0x72AC, 0x7504, 0x7D79, 0x7E6D, 0x80A9, 0x898B, - 0x8B74, 0x9063, 0x9D51, 0x6289, 0x6C7A, 0x6F54, 0x7D50, 0x7F3A, 0x8A23, - 0x517C, 0x614A, 0x7B9D, 0x8B19, 0x9257, 0x938C, 0x4EAC, 0x4FD3, 0x501E, - 0x50BE, 0x5106, 0x52C1, 0x52CD, 0x537F, 0x5770, 0x5883, 0x5E9A, 0x5F91, - 0x6176, 0x61AC, 0x64CE, 0x656C, 0x666F, 0x66BB, 0x66F4, 0x6897, 0x6D87, - 0x7085, 0x70F1, 0x749F, 0x74A5, 0x74CA, 0x75D9, 0x786C, 0x78EC, 0x7ADF, - 0x7AF6, 0x7D45, 0x7D93, 0x8015, 0x803F, 0x811B, 0x8396, 0x8B66, 0x8F15, - 0x9015, 0x93E1, 0x9803, 0x9838, 0x9A5A, 0x9BE8, 0x4FC2, 0x5553, 0x583A, - 0x5951, 0x5B63, 0x5C46, 0x60B8, 0x6212, 0x6842, 0x68B0, 0x68E8, 0x6EAA, - 0x754C, 0x7678, 0x78CE, 0x7A3D, 0x7CFB, 0x7E6B, 0x7E7C, 0x8A08, 0x8AA1, - 0x8C3F, 0x968E, 0x9DC4, 0x53E4, 0x53E9, 0x544A, 0x5471, 0x56FA, 0x59D1, - 0x5B64, 0x5C3B, 0x5EAB, 0x62F7, 0x6537, 0x6545, 0x6572, 0x66A0, 0x67AF, - 0x69C1, 0x6CBD, 0x75FC, 0x7690, 0x777E, 0x7A3F, 0x7F94, 0x8003, 0x80A1, - 0x818F, 0x82E6, 0x82FD, 0x83F0, 0x85C1, 0x8831, 0x88B4, 0x8AA5, 0x8F9C, - 0x932E, 0x96C7, 0x9867, 0x9AD8, 0x9F13, 0x54ED, 0x659B, 0x66F2, 0x688F, - 0x7A40, 0x8C37, 0x9D60, 0x56F0, 0x5764, 0x5D11, 0x6606, 0x68B1, 0x68CD, - 0x6EFE, 0x7428, 0x889E, 0x9BE4, 0x6C68, 0x9AA8, 0x4F9B, 0x516C, 0x5171, - 0x529F, 0x5B54, 0x5DE5, 0x6050, 0x606D, 0x62F1, 0x63A7, 0x653B, 0x73D9, - 0x7A7A, 0x86A3, 0x8CA2, 0x978F, 0x4E32, 0x5BE1, 0x6208, 0x679C, 0x74DC, - 0x79D1, 0x83D3, 0x8A87, 0x8AB2, 0x8DE8, 0x904E, 0x934B, 0x9846, 0x5ED3, - 0x69E8, 0x85FF, 0x90ED, 0x51A0, 0x5B98, 0x5BEC, 0x6163, 0x68FA, 0x6B3E, - 0x704C, 0x742F, 0x74D8, 0x7BA1, 0x7F50, 0x83C5, 0x89C0, 0x8CAB, 0x95DC, - 0x9928, 0x522E, 0x605D, 0x62EC, 0x9002, 0x4F8A, 0x5149, 0x5321, 0x58D9, - 0x5EE3, 0x66E0, 0x6D38, 0x709A, 0x72C2, 0x73D6, 0x7B50, 0x80F1, 0x945B, - 0x5366, 0x639B, 0x7F6B, 0x4E56, 0x5080, 0x584A, 0x58DE, 0x602A, 0x6127, - 0x62D0, 0x69D0, 0x9B41, 0x5B8F, 0x7D18, 0x80B1, 0x8F5F, 0x4EA4, 0x50D1, - 0x54AC, 0x55AC, 0x5B0C, 0x5DA0, 0x5DE7, 0x652A, 0x654E, 0x6821, 0x6A4B, - 0x72E1, 0x768E, 0x77EF, 0x7D5E, 0x7FF9, 0x81A0, 0x854E, 0x86DF, 0x8F03, - 0x8F4E, 0x90CA, 0x9903, 0x9A55, 0x9BAB, 0x4E18, 0x4E45, 0x4E5D, 0x4EC7, - 0x4FF1, 0x5177, 0x52FE, 0x5340, 0x53E3, 0x53E5, 0x548E, 0x5614, 0x5775, - 0x57A2, 0x5BC7, 0x5D87, 0x5ED0, 0x61FC, 0x62D8, 0x6551, 0x67B8, 0x67E9, - 0x69CB, 0x6B50, 0x6BC6, 0x6BEC, 0x6C42, 0x6E9D, 0x7078, 0x72D7, 0x7396, - 0x7403, 0x77BF, 0x77E9, 0x7A76, 0x7D7F, 0x8009, 0x81FC, 0x8205, 0x820A, - 0x82DF, 0x8862, 0x8B33, 0x8CFC, 0x8EC0, 0x9011, 0x90B1, 0x9264, 0x92B6, - 0x99D2, 0x9A45, 0x9CE9, 0x9DD7, 0x9F9C, 0x570B, 0x5C40, 0x83CA, 0x97A0, - 0x97AB, 0x9EB4, 0x541B, 0x7A98, 0x7FA4, 0x88D9, 0x8ECD, 0x90E1, 0x5800, - 0x5C48, 0x6398, 0x7A9F, 0x5BAE, 0x5F13, 0x7A79, 0x7AAE, 0x828E, 0x8EAC, - 0x5026, 0x5238, 0x52F8, 0x5377, 0x5708, 0x62F3, 0x6372, 0x6B0A, 0x6DC3, - 0x7737, 0x53A5, 0x7357, 0x8568, 0x8E76, 0x95D5, 0x673A, 0x6AC3, 0x6F70, - 0x8A6D, 0x8ECC, 0x994B, 0x6677, 0x6B78, 0x8CB4, 0x9B3C, 0x53EB, 0x572D, - 0x594E, 0x63C6, 0x69FB, 0x73EA, 0x7845, 0x7ABA, 0x7AC5, 0x7CFE, 0x8475, - 0x898F, 0x8D73, 0x9035, 0x95A8, 0x52FB, 0x5747, 0x7547, 0x7B60, 0x83CC, - 0x921E, 0x6A58, 0x514B, 0x524B, 0x5287, 0x621F, 0x68D8, 0x6975, 0x9699, - 0x50C5, 0x52A4, 0x52E4, 0x61C3, 0x65A4, 0x6839, 0x69FF, 0x747E, 0x7B4B, - 0x82B9, 0x83EB, 0x89B2, 0x8B39, 0x8FD1, 0x9949, 0x4ECA, 0x5997, 0x64D2, - 0x6611, 0x6A8E, 0x7434, 0x7981, 0x79BD, 0x82A9, 0x887E, 0x887F, 0x895F, - 0x9326, 0x4F0B, 0x53CA, 0x6025, 0x6271, 0x6C72, 0x7D1A, 0x7D66, 0x4E98, - 0x5162, 0x77DC, 0x80AF, 0x4F01, 0x4F0E, 0x5176, 0x5180, 0x55DC, 0x5668, - 0x573B, 0x57FA, 0x57FC, 0x5914, 0x5947, 0x5993, 0x5BC4, 0x5C90, 0x5D0E, - 0x5DF1, 0x5E7E, 0x5FCC, 0x6280, 0x65D7, 0x65E3, 0x671E, 0x671F, 0x675E, - 0x68CB, 0x68C4, 0x6A5F, 0x6B3A, 0x6C23, 0x6C7D, 0x6C82, 0x6DC7, 0x7398, - 0x7426, 0x742A, 0x7482, 0x74A3, 0x7578, 0x757F, 0x7881, 0x78EF, 0x7941, - 0x7947, 0x7948, 0x797A, 0x7B95, 0x7D00, 0x7DBA, 0x7F88, 0x8006, 0x802D, - 0x808C, 0x8A18, 0x8B4F, 0x8C48, 0x8D77, 0x9321, 0x9324, 0x98E2, 0x9951, - 0x9A0E, 0x9A0F, 0x9A65, 0x9E92, 0x7DCA, 0x4F76, 0x5409, 0x62EE, 0x6854, - 0x91D1, 0x55AB, 0x513A, 0x5A1C, 0x61E6, 0x62CF, 0x62FF, 0x90A3, 0x8AFE, - 0x6696, 0x7156, 0x96E3, 0x634F, 0x637A, 0x5357, 0x678F, 0x6960, 0x6E73, - 0x7537, 0x7D0D, 0x8872, 0x56CA, 0x5A18, 0x4E43, 0x5167, 0x5948, 0x67F0, - 0x8010, 0x5973, 0x5E74, 0x649A, 0x79CA, 0x5FF5, 0x606C, 0x62C8, 0x637B, - 0x5BE7, 0x5BD7, 0x52AA, 0x5974, 0x5F29, 0x6012, 0x7459, 0x99D1, 0x6FC3, - 0x81BF, 0x8FB2, 0x60F1, 0x8166, 0x5C3F, 0x5AE9, 0x8A25, 0x677B, 0x7D10, - 0x80FD, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA, 0x591A, 0x8336, 0x4E39, 0x4EB6, - 0x4F46, 0x55AE, 0x5718, 0x58C7, 0x5F56, 0x65B7, 0x65E6, 0x6A80, 0x6BB5, - 0x6E4D, 0x77ED, 0x7AEF, 0x7C1E, 0x7DDE, 0x86CB, 0x8892, 0x9132, 0x935B, - 0x64BB, 0x6FBE, 0x737A, 0x75B8, 0x9054, 0x5556, 0x574D, 0x61BA, 0x64D4, - 0x66C7, 0x6DE1, 0x6E5B, 0x6F6D, 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541, - 0x8983, 0x8AC7, 0x8B5A, 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, 0x905D, - 0x5510, 0x5802, 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, 0x7576, 0x7CD6, - 0x87B3, 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, 0x5C0D, 0x5CB1, 0x5E36, - 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, 0x888B, 0x8CB8, 0x968A, 0x9EDB, - 0x5B85, 0x5FB7, 0x60B3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835, 0x5857, - 0x5C0E, 0x5C60, 0x5CF6, 0x5D8B, 0x5EA6, 0x5F92, 0x60BC, 0x6311, 0x6389, - 0x6417, 0x6843, 0x68F9, 0x6AC2, 0x6DD8, 0x6E21, 0x6ED4, 0x6FE4, 0x71FE, - 0x76DC, 0x7779, 0x79B1, 0x7A3B, 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48, - 0x9003, 0x9014, 0x9053, 0x90FD, 0x934D, 0x9676, 0x97DC, 0x6BD2, 0x7006, - 0x7258, 0x72A2, 0x7368, 0x7763, 0x79BF, 0x7BE4, 0x7E9B, 0x8B80, 0x58A9, - 0x60C7, 0x6566, 0x65FD, 0x66BE, 0x6C8C, 0x711E, 0x71C9, 0x8C5A, 0x9813, - 0x4E6D, 0x7A81, 0x4EDD, 0x51AC, 0x51CD, 0x52D5, 0x540C, 0x61A7, 0x6771, - 0x6850, 0x68DF, 0x6D1E, 0x6F7C, 0x75BC, 0x77B3, 0x7AE5, 0x80F4, 0x8463, - 0x9285, 0x515C, 0x6597, 0x675C, 0x6793, 0x75D8, 0x7AC7, 0x8373, 0x8C46, - 0x9017, 0x982D, 0x5C6F, 0x81C0, 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97, - 0x5D9D, 0x6A59, 0x71C8, 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, 0x9A30, - 0x5587, 0x61F6, 0x7669, 0x7F85, 0x863F, 0x87BA, 0x88F8, 0x908F, 0x6D1B, - 0x70D9, 0x73DE, 0x7D61, 0x843D, 0x916A, 0x99F1, 0x4E82, 0x5375, 0x6B04, - 0x6B12, 0x703E, 0x721B, 0x862D, 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5, - 0x652C, 0x6B16, 0x6FEB, 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, 0x62C9, - 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x7405, 0x746F, 0x8782, - 0x90DE, 0x4F86, 0x5D0D, 0x5FA0, 0x840A, 0x51B7, 0x63A0, 0x7565, 0x4EAE, - 0x5006, 0x5169, 0x51C9, 0x6881, 0x6A11, 0x7CAE, 0x7CB1, 0x7CE7, 0x826F, - 0x8AD2, 0x8F1B, 0x91CF, 0x4FB6, 0x5137, 0x52F5, 0x5442, 0x5EEC, 0x616E, - 0x623E, 0x65C5, 0x6ADA, 0x6FFE, 0x792A, 0x85DC, 0x8823, 0x95AD, 0x9A62, - 0x9A6A, 0x9E97, 0x9ECE, 0x529B, 0x66C6, 0x6B77, 0x701D, 0x792B, 0x8F62, - 0x9742, 0x6190, 0x6200, 0x6523, 0x6F23, 0x7149, 0x7489, 0x7DF4, 0x806F, - 0x84EE, 0x8F26, 0x9023, 0x934A, 0x51BD, 0x5217, 0x52A3, 0x6D0C, 0x70C8, - 0x88C2, 0x5EC9, 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375, 0x4EE4, 0x4F36, - 0x56F9, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, 0x7B2D, 0x7F9A, 0x7FCE, 0x8046, - 0x901E, 0x9234, 0x96F6, 0x9748, 0x9818, 0x9F61, 0x4F8B, 0x6FA7, 0x79AE, - 0x91B4, 0x96B7, 0x52DE, 0x6488, 0x64C4, 0x6AD3, 0x6F5E, 0x7018, 0x7210, - 0x76E7, 0x8001, 0x8606, 0x865C, 0x8DEF, 0x8F05, 0x9732, 0x9B6F, 0x9DFA, - 0x9E75, 0x788C, 0x797F, 0x7DA0, 0x83C9, 0x9304, 0x9E7F, 0x9E93, 0x8AD6, - 0x58DF, 0x5F04, 0x6727, 0x7027, 0x74CF, 0x7C60, 0x807E, 0x5121, 0x7028, - 0x7262, 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4, 0x96F7, 0x4E86, 0x50DA, 0x5BEE, - 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD, 0x804A, 0x84FC, 0x907C, 0x9B27, - 0x9F8D, 0x58D8, 0x5A41, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, 0x763B, 0x7D2F, - 0x7E37, 0x851E, 0x8938, 0x93E4, 0x964B, 0x5289, 0x65D2, 0x67F3, 0x69B4, - 0x6D41, 0x6E9C, 0x700F, 0x7409, 0x7460, 0x7559, 0x7624, 0x786B, 0x8B2C, - 0x985E, 0x516D, 0x622E, 0x9678, 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8, - 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0x9686, 0x52D2, 0x808B, 0x51DC, 0x51CC, - 0x695E, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, 0x5229, 0x5398, 0x540F, - 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, 0x6D6C, 0x7281, 0x72F8, 0x7406, - 0x7483, 0x75E2, 0x7C6C, 0x7F79, 0x7FB8, 0x8389, 0x88CF, 0x88E1, 0x91CC, - 0x91D0, 0x96E2, 0x9BC9, 0x541D, 0x6F7E, 0x71D0, 0x7498, 0x85FA, 0x8EAA, - 0x96A3, 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x7433, 0x81E8, 0x9716, 0x782C, - 0x7ACB, 0x7B20, 0x7C92, 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, 0x99AC, - 0x9B54, 0x9EBB, 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, 0x9088, 0x4E07, - 0x534D, 0x5A29, 0x5DD2, 0x5F4E, 0x6162, 0x633D, 0x6669, 0x66FC, 0x6EFF, - 0x6F2B, 0x7063, 0x779E, 0x842C, 0x8513, 0x883B, 0x8F13, 0x9945, 0x9C3B, - 0x551C, 0x62B9, 0x672B, 0x6CAB, 0x8309, 0x896A, 0x977A, 0x4EA1, 0x5984, - 0x5FD8, 0x5FD9, 0x671B, 0x7DB2, 0x7F54, 0x8292, 0x832B, 0x83BD, 0x8F1E, - 0x9099, 0x57CB, 0x59B9, 0x5A92, 0x5BD0, 0x6627, 0x679A, 0x6885, 0x6BCF, - 0x7164, 0x7F75, 0x8CB7, 0x8CE3, 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C, - 0x9A40, 0x9EA5, 0x5B5F, 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, 0x51AA, - 0x8993, 0x514D, 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, 0x7720, 0x7DBF, - 0x7DEC, 0x9762, 0x9EB5, 0x6EC5, 0x8511, 0x51A5, 0x540D, 0x547D, 0x660E, - 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, 0x8317, 0x84C2, 0x879F, 0x9169, - 0x9298, 0x9CF4, 0x8882, 0x4FAE, 0x5192, 0x52DF, 0x59C6, 0x5E3D, 0x6155, - 0x6478, 0x6479, 0x66AE, 0x67D0, 0x6A21, 0x6BCD, 0x6BDB, 0x725F, 0x7261, - 0x7441, 0x7738, 0x77DB, 0x8017, 0x82BC, 0x8305, 0x8B00, 0x8B28, 0x8C8C, - 0x6728, 0x6C90, 0x7267, 0x76EE, 0x7766, 0x7A46, 0x9DA9, 0x6B7F, 0x6C92, - 0x5922, 0x6726, 0x8499, 0x536F, 0x5893, 0x5999, 0x5EDF, 0x63CF, 0x6634, - 0x6773, 0x6E3A, 0x732B, 0x7AD7, 0x82D7, 0x9328, 0x52D9, 0x5DEB, 0x61AE, - 0x61CB, 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959, 0x6B66, 0x6BCB, 0x7121, - 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, 0x856A, 0x8AA3, 0x8CBF, 0x9727, - 0x9D61, 0x58A8, 0x9ED8, 0x5011, 0x520E, 0x543B, 0x554F, 0x6587, 0x6C76, - 0x7D0A, 0x7D0B, 0x805E, 0x868A, 0x9580, 0x96EF, 0x52FF, 0x6C95, 0x7269, - 0x5473, 0x5A9A, 0x5C3E, 0x5D4B, 0x5F4C, 0x5FAE, 0x672A, 0x68B6, 0x6963, - 0x6E3C, 0x6E44, 0x7709, 0x7C73, 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761, - 0x9EF4, 0x5CB7, 0x60B6, 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, 0x6C11, - 0x6CEF, 0x739F, 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, 0x8B10, 0x525D, - 0x535A, 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, 0x6CCA, 0x73C0, 0x749E, - 0x7B94, 0x7C95, 0x7E1B, 0x818A, 0x8236, 0x8584, 0x8FEB, 0x96F9, 0x99C1, - 0x4F34, 0x534A, 0x53CD, 0x53DB, 0x62CC, 0x642C, 0x6500, 0x6591, 0x69C3, - 0x6CEE, 0x6F58, 0x73ED, 0x7554, 0x7622, 0x76E4, 0x76FC, 0x78D0, 0x78FB, - 0x792C, 0x7D46, 0x822C, 0x87E0, 0x8FD4, 0x9812, 0x98EF, 0x52C3, 0x62D4, - 0x64A5, 0x6E24, 0x6F51, 0x767C, 0x8DCB, 0x91B1, 0x9262, 0x9AEE, 0x9B43, - 0x5023, 0x508D, 0x574A, 0x59A8, 0x5C28, 0x5E47, 0x5F77, 0x623F, 0x653E, - 0x65B9, 0x65C1, 0x6609, 0x678B, 0x699C, 0x6EC2, 0x78C5, 0x7D21, 0x80AA, - 0x8180, 0x822B, 0x82B3, 0x84A1, 0x868C, 0x8A2A, 0x8B17, 0x90A6, 0x9632, - 0x9F90, 0x500D, 0x4FF3, 0x57F9, 0x5F98, 0x62DC, 0x6392, 0x676F, 0x6E43, - 0x7119, 0x76C3, 0x80CC, 0x80DA, 0x88F4, 0x88F5, 0x8919, 0x8CE0, 0x8F29, - 0x914D, 0x966A, 0x4F2F, 0x4F70, 0x5E1B, 0x67CF, 0x6822, 0x767D, 0x767E, - 0x9B44, 0x5E61, 0x6A0A, 0x7169, 0x71D4, 0x756A, 0x7E41, 0x8543, 0x85E9, - 0x98DC, 0x4F10, 0x7B4F, 0x7F70, 0x95A5, 0x51E1, 0x5E06, 0x68B5, 0x6C3E, - 0x6C4E, 0x6CDB, 0x72AF, 0x7BC4, 0x8303, 0x6CD5, 0x743A, 0x50FB, 0x5288, - 0x58C1, 0x64D8, 0x6A97, 0x74A7, 0x7656, 0x78A7, 0x8617, 0x95E2, 0x9739, - 0x535E, 0x5F01, 0x8B8A, 0x8FA8, 0x8FAF, 0x908A, 0x5225, 0x77A5, 0x9C49, - 0x9F08, 0x4E19, 0x5002, 0x5175, 0x5C5B, 0x5E77, 0x661E, 0x663A, 0x67C4, - 0x68C5, 0x70B3, 0x7501, 0x75C5, 0x79C9, 0x7ADD, 0x8F27, 0x9920, 0x9A08, - 0x4FDD, 0x5821, 0x5831, 0x5BF6, 0x666E, 0x6B65, 0x6D11, 0x6E7A, 0x6F7D, - 0x73E4, 0x752B, 0x83E9, 0x88DC, 0x8913, 0x8B5C, 0x8F14, 0x4F0F, 0x50D5, - 0x5310, 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F, 0x8179, 0x832F, 0x8514, - 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, 0x9C12, 0x672C, 0x4E76, 0x4FF8, - 0x5949, 0x5C01, 0x5CEF, 0x5CF0, 0x6367, 0x68D2, 0x70FD, 0x71A2, 0x742B, - 0x7E2B, 0x84EC, 0x8702, 0x9022, 0x92D2, 0x9CF3, 0x4E0D, 0x4ED8, 0x4FEF, - 0x5085, 0x5256, 0x526F, 0x5426, 0x5490, 0x57E0, 0x592B, 0x5A66, 0x5B5A, - 0x5B75, 0x5BCC, 0x5E9C, 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, 0x7236, - 0x7B26, 0x7C3F, 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, 0x8299, 0x83A9, - 0x8A03, 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, 0x90E8, 0x91DC, 0x961C, - 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58B3, 0x5954, - 0x596E, 0x5FFF, 0x61A4, 0x626E, 0x6610, 0x6C7E, 0x711A, 0x76C6, 0x7C89, - 0x7CDE, 0x7D1B, 0x82AC, 0x8CC1, 0x96F0, 0x4F5B, 0x5F17, 0x5F7F, 0x62C2, - 0x5D29, 0x670B, 0x68DA, 0x787C, 0x7E43, 0x9D6C, 0x4E15, 0x5099, 0x5315, - 0x532A, 0x5351, 0x5983, 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249, 0x6279, - 0x6590, 0x6787, 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, 0x6CB8, 0x7435, - 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, 0x7C83, 0x7DCB, 0x7FE1, 0x80A5, - 0x813E, 0x81C2, 0x83F2, 0x871A, 0x88E8, 0x8AB9, 0x8B6C, 0x8CBB, 0x9119, - 0x975E, 0x98DB, 0x9F3B, 0x56AC, 0x5B2A, 0x5F6C, 0x658C, 0x6AB3, 0x6BAF, - 0x6D5C, 0x6FF1, 0x7015, 0x725D, 0x73AD, 0x8CA7, 0x8CD3, 0x983B, 0x6191, - 0x6C37, 0x8058, 0x9A01, 0x4E4D, 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C, - 0x4F7F, 0x4FDF, 0x50FF, 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, 0x58EB, - 0x5962, 0x5A11, 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, 0x5F99, 0x601D, - 0x6368, 0x659C, 0x65AF, 0x67F6, 0x67FB, 0x68AD, 0x6B7B, 0x6C99, 0x6CD7, - 0x6E23, 0x7009, 0x7345, 0x7802, 0x793E, 0x7940, 0x7960, 0x79C1, 0x7BE9, - 0x7D17, 0x7D72, 0x8086, 0x820D, 0x838E, 0x84D1, 0x86C7, 0x88DF, 0x8A50, - 0x8A5E, 0x8B1D, 0x8CDC, 0x8D66, 0x8FAD, 0x90AA, 0x98FC, 0x99DF, 0x9E9D, - 0x524A, 0x6714, 0x5098, 0x522A, 0x5C71, 0x6563, 0x6C55, 0x73CA, 0x7523, - 0x759D, 0x7B97, 0x849C, 0x9178, 0x9730, 0x4E77, 0x6492, 0x6BBA, 0x715E, - 0x85A9, 0x4E09, 0x6749, 0x68EE, 0x6E17, 0x829F, 0x8518, 0x886B, 0x63F7, - 0x6F81, 0x9212, 0x98AF, 0x4E0A, 0x50B7, 0x50CF, 0x511F, 0x5546, 0x55AA, - 0x5617, 0x5B40, 0x5C19, 0x5CE0, 0x5E38, 0x5E8A, 0x5EA0, 0x5EC2, 0x60F3, - 0x6851, 0x6A61, 0x6E58, 0x723D, 0x7240, 0x72C0, 0x76F8, 0x7965, 0x7BB1, - 0x7FD4, 0x88F3, 0x89F4, 0x8A73, 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD, - 0x8CFD, 0x55C7, 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, 0x7525, 0x7B19, - 0x5885, 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, 0x5F90, 0x6055, 0x6292, 0x637F, - 0x654D, 0x6691, 0x66D9, 0x66F8, 0x6816, 0x68F2, 0x7280, 0x745E, 0x7B6E, - 0x7D6E, 0x7DD6, 0x7F72, 0x80E5, 0x8212, 0x85AF, 0x897F, 0x8A93, 0x901D, - 0x92E4, 0x9ECD, 0x9F20, 0x5915, 0x596D, 0x5E2D, 0x60DC, 0x6614, 0x6673, - 0x6790, 0x6C50, 0x6DC5, 0x6F5F, 0x77F3, 0x78A9, 0x84C6, 0x91CB, 0x932B, - 0x4ED9, 0x50CA, 0x5148, 0x5584, 0x5B0B, 0x5BA3, 0x6247, 0x657E, 0x65CB, - 0x6E32, 0x717D, 0x7401, 0x7444, 0x7487, 0x74BF, 0x766C, 0x79AA, 0x7DDA, - 0x7E55, 0x7FA8, 0x817A, 0x81B3, 0x8239, 0x861A, 0x87EC, 0x8A75, 0x8DE3, - 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE, 0x5368, 0x5C51, 0x6954, 0x6CC4, - 0x6D29, 0x6E2B, 0x820C, 0x859B, 0x893B, 0x8A2D, 0x8AAA, 0x96EA, 0x9F67, - 0x5261, 0x66B9, 0x6BB2, 0x7E96, 0x87FE, 0x8D0D, 0x9583, 0x965D, 0x651D, - 0x6D89, 0x71EE, 0x57CE, 0x59D3, 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F, - 0x665F, 0x7329, 0x73F9, 0x76DB, 0x7701, 0x7B6C, 0x8056, 0x8072, 0x8165, - 0x8AA0, 0x9192, 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, 0x7B39, 0x7D30, - 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, 0x5C0F, 0x5C11, 0x5DE2, 0x6240, - 0x6383, 0x6414, 0x662D, 0x68B3, 0x6CBC, 0x6D88, 0x6EAF, 0x701F, 0x70A4, - 0x71D2, 0x7526, 0x758F, 0x758E, 0x7619, 0x7B11, 0x7BE0, 0x7C2B, 0x7D20, - 0x7D39, 0x852C, 0x856D, 0x8607, 0x8A34, 0x900D, 0x9061, 0x90B5, 0x92B7, - 0x97F6, 0x9A37, 0x4FD7, 0x5C6C, 0x675F, 0x6D91, 0x7C9F, 0x7E8C, 0x8B16, - 0x8D16, 0x901F, 0x5B6B, 0x5DFD, 0x640D, 0x84C0, 0x905C, 0x98E1, 0x7387, - 0x5B8B, 0x609A, 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001, 0x980C, 0x5237, - 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, 0x4FEE, 0x53D7, 0x55FD, 0x56DA, - 0x5782, 0x58FD, 0x5AC2, 0x5B88, 0x5CAB, 0x5CC0, 0x5E25, 0x6101, 0x620D, - 0x624B, 0x6388, 0x641C, 0x6536, 0x6578, 0x6A39, 0x6B8A, 0x6C34, 0x6D19, - 0x6F31, 0x71E7, 0x72E9, 0x7378, 0x7407, 0x74B2, 0x7626, 0x7761, 0x79C0, - 0x7A57, 0x7AEA, 0x7CB9, 0x7D8F, 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331, - 0x8490, 0x84DA, 0x85EA, 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, 0x9083, - 0x916C, 0x9296, 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, 0x9700, 0x9808, - 0x9996, 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, 0x5B70, 0x5BBF, 0x6DD1, - 0x6F5A, 0x719F, 0x7421, 0x74B9, 0x8085, 0x83FD, 0x5DE1, 0x5F87, 0x5FAA, - 0x6042, 0x65EC, 0x6812, 0x696F, 0x6A53, 0x6B89, 0x6D35, 0x6DF3, 0x73E3, - 0x76FE, 0x77AC, 0x7B4D, 0x7D14, 0x8123, 0x821C, 0x8340, 0x84F4, 0x8563, - 0x8A62, 0x8AC4, 0x9187, 0x931E, 0x9806, 0x99B4, 0x620C, 0x8853, 0x8FF0, - 0x9265, 0x5D07, 0x5D27, 0x5D69, 0x745F, 0x819D, 0x8768, 0x6FD5, 0x62FE, - 0x7FD2, 0x8936, 0x8972, 0x4E1E, 0x4E58, 0x50E7, 0x52DD, 0x5347, 0x627F, - 0x6607, 0x7E69, 0x8805, 0x965E, 0x4F8D, 0x5319, 0x5636, 0x59CB, 0x5AA4, - 0x5C38, 0x5C4E, 0x5C4D, 0x5E02, 0x5F11, 0x6043, 0x65BD, 0x662F, 0x6642, - 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A, 0x7FC5, 0x8494, 0x84CD, 0x8996, - 0x8A66, 0x8A69, 0x8AE1, 0x8C55, 0x8C7A, 0x57F4, 0x5BD4, 0x5F0F, 0x606F, - 0x62ED, 0x690D, 0x6B96, 0x6E5C, 0x7184, 0x7BD2, 0x8755, 0x8B58, 0x8EFE, - 0x98DF, 0x98FE, 0x4F38, 0x4F81, 0x4FE1, 0x547B, 0x5A20, 0x5BB8, 0x613C, - 0x65B0, 0x6668, 0x71FC, 0x7533, 0x795E, 0x7D33, 0x814E, 0x81E3, 0x8398, - 0x85AA, 0x85CE, 0x8703, 0x8A0A, 0x8EAB, 0x8F9B, 0x8FC5, 0x5931, 0x5BA4, - 0x5BE6, 0x6089, 0x5BE9, 0x5C0B, 0x5FC3, 0x6C81, 0x6DF1, 0x700B, 0x751A, - 0x82AF, 0x8AF6, 0x4EC0, 0x5341, 0x96D9, 0x6C0F, 0x4E9E, 0x4FC4, 0x5152, - 0x555E, 0x5A25, 0x5CE8, 0x6211, 0x7259, 0x82BD, 0x83AA, 0x86FE, 0x8859, - 0x8A1D, 0x963F, 0x96C5, 0x9913, 0x9D09, 0x9D5D, 0x580A, 0x5CB3, 0x5DBD, - 0x5E44, 0x60E1, 0x6115, 0x63E1, 0x6A02, 0x6E25, 0x9102, 0x9354, 0x984E, - 0x9C10, 0x9F77, 0x5B89, 0x5CB8, 0x6309, 0x664F, 0x6848, 0x773C, 0x96C1, - 0x978D, 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB, 0x95BC, 0x5535, 0x5CA9, - 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, 0x95C7, 0x58D3, 0x62BC, 0x72CE, - 0x9D28, 0x4EF0, 0x592E, 0x600F, 0x663B, 0x6B83, 0x79E7, 0x9D26, 0x5393, - 0x54C0, 0x57C3, 0x5D16, 0x611B, 0x66D6, 0x6DAF, 0x788D, 0x827E, 0x9698, - 0x9744, 0x5384, 0x627C, 0x6396, 0x6DB2, 0x7E0A, 0x814B, 0x984D, 0x6AFB, - 0x7F4C, 0x9DAF, 0x9E1A, 0x4E5F, 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6, - 0x6930, 0x723A, 0x8036, 0x91CE, 0x5F31, 0x7D04, 0x82E5, 0x846F, 0x84BB, - 0x85E5, 0x8E8D, 0x4F6F, 0x58E4, 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D, - 0x6698, 0x694A, 0x6A23, 0x6D0B, 0x7001, 0x716C, 0x75D2, 0x760D, 0x79B3, - 0x7A70, 0x7F8A, 0x8944, 0x8B93, 0x91C0, 0x967D, 0x990A, 0x5704, 0x5FA1, - 0x65BC, 0x6F01, 0x7600, 0x79A6, 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C, 0x5104, - 0x61B6, 0x6291, 0x6A8D, 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109, 0x8A00, - 0x8AFA, 0x5B7C, 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, 0x63A9, 0x6DF9, - 0x5DAA, 0x696D, 0x5186, 0x4E88, 0x4F59, 0x5982, 0x6B5F, 0x6C5D, 0x74B5, - 0x7916, 0x8207, 0x8245, 0x8339, 0x8F3F, 0x8F5D, 0x9918, 0x4EA6, 0x57DF, - 0x5F79, 0x6613, 0x75AB, 0x7E79, 0x8B6F, 0x9006, 0x9A5B, 0x56A5, 0x5827, - 0x59F8, 0x5A1F, 0x5BB4, 0x5EF6, 0x6350, 0x633B, 0x693D, 0x6C87, 0x6CBF, - 0x6D8E, 0x6D93, 0x6DF5, 0x6F14, 0x70DF, 0x7136, 0x7159, 0x71C3, 0x71D5, - 0x784F, 0x786F, 0x7B75, 0x7DE3, 0x7E2F, 0x884D, 0x8EDF, 0x925B, 0x9CF6, - 0x6085, 0x6D85, 0x71B1, 0x95B1, 0x53AD, 0x67D3, 0x708E, 0x7130, 0x7430, - 0x8276, 0x82D2, 0x95BB, 0x9AE5, 0x9E7D, 0x66C4, 0x71C1, 0x8449, 0x584B, - 0x5DB8, 0x5F71, 0x6620, 0x668E, 0x6979, 0x69AE, 0x6C38, 0x6CF3, 0x6E36, - 0x6F41, 0x6FDA, 0x701B, 0x702F, 0x7150, 0x71DF, 0x7370, 0x745B, 0x74D4, - 0x76C8, 0x7A4E, 0x7E93, 0x82F1, 0x8A60, 0x8FCE, 0x9348, 0x9719, 0x4E42, - 0x502A, 0x5208, 0x53E1, 0x66F3, 0x6C6D, 0x6FCA, 0x730A, 0x777F, 0x7A62, - 0x82AE, 0x85DD, 0x8602, 0x88D4, 0x8A63, 0x8B7D, 0x8C6B, 0x92B3, 0x9713, - 0x9810, 0x4E94, 0x4F0D, 0x4FC9, 0x50B2, 0x5348, 0x543E, 0x5433, 0x55DA, - 0x5862, 0x58BA, 0x5967, 0x5A1B, 0x5BE4, 0x609F, 0x61CA, 0x6556, 0x65FF, - 0x6664, 0x68A7, 0x6C5A, 0x6FB3, 0x70CF, 0x71AC, 0x7352, 0x7B7D, 0x8708, - 0x8AA4, 0x9C32, 0x9F07, 0x5C4B, 0x6C83, 0x7344, 0x7389, 0x923A, 0x6EAB, - 0x7465, 0x761F, 0x7A69, 0x7E15, 0x860A, 0x5140, 0x58C5, 0x64C1, 0x74EE, - 0x7515, 0x7670, 0x7FC1, 0x9095, 0x96CD, 0x9954, 0x6E26, 0x74E6, 0x7AA9, - 0x7AAA, 0x81E5, 0x86D9, 0x8778, 0x8A1B, 0x5A49, 0x5B8C, 0x5B9B, 0x68A1, - 0x6900, 0x6D63, 0x73A9, 0x7413, 0x742C, 0x7897, 0x7DE9, 0x7FEB, 0x8118, - 0x8155, 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0, 0x5F80, 0x65FA, 0x6789, - 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, 0x77EE, 0x5916, 0x5D6C, 0x5DCD, - 0x7325, 0x754F, 0x50E5, 0x51F9, 0x582F, 0x592D, 0x5996, 0x59DA, 0x5BE5, - 0x5DA2, 0x62D7, 0x6416, 0x6493, 0x64FE, 0x66DC, 0x6A48, 0x71FF, 0x7464, - 0x7A88, 0x7AAF, 0x7E47, 0x7E5E, 0x8000, 0x8170, 0x87EF, 0x8981, 0x8B20, - 0x9059, 0x9080, 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, 0x8925, 0x8FB1, - 0x4FD1, 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, 0x5BB9, 0x5EB8, 0x6142, - 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, 0x7462, 0x7528, 0x752C, 0x8073, - 0x8338, 0x84C9, 0x8E0A, 0x9394, 0x93DE, 0x4E8E, 0x4F51, 0x5076, 0x512A, - 0x53C8, 0x53CB, 0x53F3, 0x5B87, 0x5BD3, 0x5C24, 0x611A, 0x6182, 0x65F4, - 0x725B, 0x7397, 0x7440, 0x76C2, 0x7950, 0x7991, 0x79B9, 0x7D06, 0x7FBD, - 0x828B, 0x85D5, 0x865E, 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685, 0x96E8, - 0x96E9, 0x52D6, 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, 0x7A36, 0x90C1, - 0x980A, 0x4E91, 0x6A52, 0x6B9E, 0x6F90, 0x7189, 0x8018, 0x82B8, 0x8553, - 0x904B, 0x9695, 0x96F2, 0x97FB, 0x851A, 0x9B31, 0x4E90, 0x718A, 0x96C4, - 0x5143, 0x539F, 0x54E1, 0x5713, 0x5712, 0x57A3, 0x5A9B, 0x5AC4, 0x5BC3, - 0x6028, 0x613F, 0x63F4, 0x6C85, 0x6D39, 0x6E72, 0x6E90, 0x7230, 0x733F, - 0x7457, 0x82D1, 0x8881, 0x8F45, 0x9060, 0x9662, 0x9858, 0x9D1B, 0x6708, - 0x8D8A, 0x925E, 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, 0x59D4, 0x5A01, - 0x5C09, 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, 0x7DEF, 0x80C3, 0x840E, - 0x8466, 0x853F, 0x875F, 0x885B, 0x8918, 0x8B02, 0x9055, 0x97CB, 0x9B4F, - 0x4E73, 0x4F91, 0x5112, 0x516A, 0x552F, 0x55A9, 0x5B7A, 0x5BA5, 0x5E7C, - 0x5E7D, 0x5EBE, 0x60A0, 0x60DF, 0x6108, 0x6109, 0x63C4, 0x6538, 0x6709, - 0x67D4, 0x67DA, 0x6961, 0x6962, 0x6CB9, 0x6D27, 0x6E38, 0x6FE1, 0x7336, - 0x7337, 0x745C, 0x7531, 0x7652, 0x7DAD, 0x81FE, 0x8438, 0x88D5, 0x8A98, - 0x8ADB, 0x8AED, 0x8E30, 0x8E42, 0x904A, 0x903E, 0x907A, 0x9149, 0x91C9, - 0x936E, 0x5809, 0x6BD3, 0x8089, 0x80B2, 0x5141, 0x596B, 0x5C39, 0x6F64, - 0x73A7, 0x80E4, 0x8D07, 0x9217, 0x958F, 0x807F, 0x620E, 0x701C, 0x7D68, - 0x878D, 0x57A0, 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, 0x96B1, 0x4E59, - 0x541F, 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, 0x63D6, 0x6CE3, 0x9091, - 0x51DD, 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, 0x501A, 0x5100, 0x5B9C, 0x610F, - 0x61FF, 0x64EC, 0x6905, 0x6BC5, 0x7591, 0x77E3, 0x7FA9, 0x8264, 0x858F, - 0x87FB, 0x8863, 0x8ABC, 0x8B70, 0x91AB, 0x4E8C, 0x4EE5, 0x4F0A, 0x5937, - 0x59E8, 0x5DF2, 0x5F1B, 0x5F5B, 0x6021, 0x723E, 0x73E5, 0x7570, 0x75CD, - 0x79FB, 0x800C, 0x8033, 0x8084, 0x82E1, 0x8351, 0x8CBD, 0x8CB3, 0x9087, - 0x98F4, 0x990C, 0x7037, 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC, 0x8B1A, 0x4EBA, - 0x4EC1, 0x5203, 0x5370, 0x54BD, 0x56E0, 0x59FB, 0x5BC5, 0x5F15, 0x5FCD, - 0x6E6E, 0x7D6A, 0x8335, 0x8693, 0x8A8D, 0x976D, 0x9777, 0x4E00, 0x4F5A, - 0x4F7E, 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, 0x99B9, 0x4EFB, 0x58EC, - 0x598A, 0x59D9, 0x6041, 0x7A14, 0x834F, 0x8CC3, 0x5165, 0x5344, 0x4ECD, - 0x5269, 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, 0x59C9, 0x59FF, 0x5B50, - 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, 0x7099, 0x716E, 0x7386, 0x74F7, - 0x75B5, 0x78C1, 0x7D2B, 0x8005, 0x81EA, 0x8328, 0x8517, 0x85C9, 0x8AEE, - 0x8CC7, 0x96CC, 0x4F5C, 0x52FA, 0x56BC, 0x65AB, 0x6628, 0x707C, 0x70B8, - 0x7235, 0x7DBD, 0x828D, 0x914C, 0x96C0, 0x9D72, 0x5B71, 0x68E7, 0x6B98, - 0x6F7A, 0x76DE, 0x5C91, 0x66AB, 0x6F5B, 0x7BB4, 0x7C2A, 0x8836, 0x96DC, - 0x4E08, 0x4ED7, 0x5320, 0x5834, 0x58BB, 0x58EF, 0x596C, 0x5C07, 0x5E33, - 0x5E84, 0x5F35, 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3, 0x6B0C, 0x6F3F, - 0x7246, 0x7350, 0x748B, 0x7AE0, 0x7CA7, 0x8178, 0x81DF, 0x81E7, 0x838A, - 0x846C, 0x8523, 0x8594, 0x85CF, 0x88DD, 0x8D13, 0x91AC, 0x9577, 0x969C, - 0x518D, 0x54C9, 0x5728, 0x5BB0, 0x624D, 0x6750, 0x683D, 0x6893, 0x6E3D, - 0x6ED3, 0x707D, 0x7E21, 0x88C1, 0x8CA1, 0x8F09, 0x9F4B, 0x9F4E, 0x722D, - 0x7B8F, 0x8ACD, 0x931A, 0x4F47, 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95, - 0x62B5, 0x6775, 0x696E, 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, 0x75BD, - 0x7BB8, 0x7D35, 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, 0x8CAF, 0x8E87, - 0x9019, 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, 0x5AE1, 0x5BC2, 0x6458, - 0x6575, 0x6EF4, 0x72C4, 0x7684, 0x7A4D, 0x7B1B, 0x7C4D, 0x7E3E, 0x7FDF, - 0x837B, 0x8B2B, 0x8CCA, 0x8D64, 0x8DE1, 0x8E5F, 0x8FEA, 0x8FF9, 0x9069, - 0x93D1, 0x4F43, 0x4F7A, 0x50B3, 0x5168, 0x5178, 0x524D, 0x526A, 0x5861, - 0x587C, 0x5960, 0x5C08, 0x5C55, 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF, - 0x6C08, 0x6FB1, 0x714E, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7B4C, - 0x7B8B, 0x7BAD, 0x7BC6, 0x7E8F, 0x8A6E, 0x8F3E, 0x8F49, 0x923F, 0x9293, - 0x9322, 0x942B, 0x96FB, 0x985A, 0x986B, 0x991E, 0x5207, 0x622A, 0x6298, - 0x6D59, 0x7664, 0x7ACA, 0x7BC0, 0x7D76, 0x5360, 0x5CBE, 0x5E97, 0x6F38, - 0x70B9, 0x7C98, 0x9711, 0x9B8E, 0x9EDE, 0x63A5, 0x647A, 0x8776, 0x4E01, - 0x4E95, 0x4EAD, 0x505C, 0x5075, 0x5448, 0x59C3, 0x5B9A, 0x5E40, 0x5EAD, - 0x5EF7, 0x5F81, 0x60C5, 0x633A, 0x653F, 0x6574, 0x65CC, 0x6676, 0x6678, - 0x67FE, 0x6968, 0x6A89, 0x6B63, 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E, - 0x701E, 0x70A1, 0x738E, 0x73FD, 0x753A, 0x775B, 0x7887, 0x798E, 0x7A0B, - 0x7A7D, 0x7CBE, 0x7D8E, 0x8247, 0x8A02, 0x8AEA, 0x8C9E, 0x912D, 0x914A, - 0x91D8, 0x9266, 0x92CC, 0x9320, 0x9706, 0x9756, 0x975C, 0x9802, 0x9F0E, - 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, 0x5F1F, 0x608C, 0x63D0, 0x68AF, - 0x6FDF, 0x796D, 0x7B2C, 0x81CD, 0x85BA, 0x88FD, 0x8AF8, 0x8E44, 0x918D, - 0x9664, 0x969B, 0x973D, 0x984C, 0x9F4A, 0x4FCE, 0x5146, 0x51CB, 0x52A9, - 0x5632, 0x5F14, 0x5F6B, 0x63AA, 0x64CD, 0x65E9, 0x6641, 0x66FA, 0x66F9, - 0x671D, 0x689D, 0x68D7, 0x69FD, 0x6F15, 0x6F6E, 0x7167, 0x71E5, 0x722A, - 0x74AA, 0x773A, 0x7956, 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97, 0x7CDF, - 0x7D44, 0x7E70, 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, 0x8D99, 0x8E81, - 0x9020, 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, 0x65CF, 0x7C07, 0x8DB3, - 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, 0x731D, 0x5027, 0x5B97, 0x5F9E, - 0x60B0, 0x616B, 0x68D5, 0x6DD9, 0x742E, 0x7A2E, 0x7D42, 0x7D9C, 0x7E31, - 0x816B, 0x8E2A, 0x8E35, 0x937E, 0x9418, 0x4F50, 0x5750, 0x5DE6, 0x5EA7, - 0x632B, 0x7F6A, 0x4E3B, 0x4F4F, 0x4F8F, 0x505A, 0x59DD, 0x80C4, 0x546A, - 0x5468, 0x55FE, 0x594F, 0x5B99, 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1, - 0x682A, 0x6CE8, 0x6D32, 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, 0x7C4C, - 0x7D02, 0x7D2C, 0x7DA2, 0x821F, 0x86DB, 0x8A3B, 0x8A85, 0x8D70, 0x8E8A, - 0x8F33, 0x9031, 0x914E, 0x9152, 0x9444, 0x99D0, 0x7AF9, 0x7CA5, 0x4FCA, - 0x5101, 0x51C6, 0x57C8, 0x5BEF, 0x5CFB, 0x6659, 0x6A3D, 0x6D5A, 0x6E96, - 0x6FEC, 0x710C, 0x756F, 0x7AE3, 0x8822, 0x9021, 0x9075, 0x96CB, 0x99FF, - 0x8301, 0x4E2D, 0x4EF2, 0x8846, 0x91CD, 0x537D, 0x6ADB, 0x696B, 0x6C41, - 0x847A, 0x589E, 0x618E, 0x66FE, 0x62EF, 0x70DD, 0x7511, 0x75C7, 0x7E52, - 0x84B8, 0x8B49, 0x8D08, 0x4E4B, 0x53EA, 0x54AB, 0x5730, 0x5740, 0x5FD7, - 0x6301, 0x6307, 0x646F, 0x652F, 0x65E8, 0x667A, 0x679D, 0x67B3, 0x6B62, - 0x6C60, 0x6C9A, 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957, 0x7D19, 0x80A2, - 0x8102, 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, 0x8D04, 0x8DBE, 0x9072, - 0x76F4, 0x7A19, 0x7A37, 0x7E54, 0x8077, 0x5507, 0x55D4, 0x5875, 0x632F, - 0x6422, 0x6649, 0x664B, 0x686D, 0x699B, 0x6B84, 0x6D25, 0x6EB1, 0x73CD, - 0x7468, 0x74A1, 0x755B, 0x75B9, 0x76E1, 0x771E, 0x778B, 0x79E6, 0x7E09, - 0x7E1D, 0x81FB, 0x852F, 0x8897, 0x8A3A, 0x8CD1, 0x8EEB, 0x8FB0, 0x9032, - 0x93AD, 0x9663, 0x9673, 0x9707, 0x4F84, 0x53F1, 0x59EA, 0x5AC9, 0x5E19, - 0x684E, 0x74C6, 0x75BE, 0x79E9, 0x7A92, 0x81A3, 0x86ED, 0x8CEA, 0x8DCC, - 0x8FED, 0x659F, 0x6715, 0x57F7, 0x6F57, 0x7DDD, 0x8F2F, 0x93F6, 0x96C6, - 0x5FB5, 0x61F2, 0x6F84, 0x4E14, 0x4F98, 0x501F, 0x53C9, 0x55DF, 0x5D6F, - 0x5DEE, 0x6B21, 0x6B64, 0x78CB, 0x7B9A, 0x8E49, 0x8ECA, 0x906E, 0x6349, - 0x643E, 0x7740, 0x7A84, 0x932F, 0x947F, 0x9F6A, 0x64B0, 0x6FAF, 0x71E6, - 0x74A8, 0x74DA, 0x7AC4, 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A, 0x8D0A, - 0x947D, 0x9910, 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, 0x7D2E, 0x50ED, - 0x53C3, 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, 0x7AD9, 0x8B92, 0x8B96, - 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, 0x5EE0, 0x5F70, 0x6134, 0x655E, - 0x660C, 0x6636, 0x66A2, 0x69CD, 0x6EC4, 0x6F32, 0x7316, 0x7621, 0x7A93, - 0x8139, 0x8259, 0x83D6, 0x84BC, 0x50B5, 0x57F0, 0x5BC0, 0x5BE8, 0x5F69, - 0x63A1, 0x7826, 0x7DB5, 0x83DC, 0x8521, 0x91C7, 0x91F5, 0x518A, 0x67F5, - 0x7B56, 0x8CAC, 0x51C4, 0x59BB, 0x60BD, 0x8655, 0x501C, 0x5254, 0x5C3A, - 0x617D, 0x621A, 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, 0x810A, 0x8E60, - 0x965F, 0x96BB, 0x4EDF, 0x5343, 0x5598, 0x5929, 0x5DDD, 0x64C5, 0x6CC9, - 0x6DFA, 0x7394, 0x7A7F, 0x821B, 0x85A6, 0x8CE4, 0x8E10, 0x9077, 0x91E7, - 0x95E1, 0x9621, 0x97C6, 0x51F8, 0x54F2, 0x5586, 0x5FB9, 0x64A4, 0x6F88, - 0x7DB4, 0x8F1F, 0x8F4D, 0x9435, 0x50C9, 0x5C16, 0x6CBE, 0x6DFB, 0x751B, - 0x77BB, 0x7C3D, 0x7C64, 0x8A79, 0x8AC2, 0x581E, 0x59BE, 0x5E16, 0x6377, - 0x7252, 0x758A, 0x776B, 0x8ADC, 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8, - 0x807D, 0x83C1, 0x8ACB, 0x9751, 0x9BD6, 0x5243, 0x66FF, 0x6D95, 0x6EEF, - 0x7DE0, 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, 0x527F, 0x54E8, 0x6194, - 0x6284, 0x62DB, 0x68A2, 0x6912, 0x695A, 0x6A35, 0x7092, 0x7126, 0x785D, - 0x7901, 0x790E, 0x79D2, 0x7A0D, 0x8096, 0x8278, 0x82D5, 0x8349, 0x8549, - 0x8C82, 0x8D85, 0x9162, 0x918B, 0x91AE, 0x4FC3, 0x56D1, 0x71ED, 0x77D7, - 0x8700, 0x89F8, 0x5BF8, 0x5FD6, 0x6751, 0x90A8, 0x53E2, 0x585A, 0x5BF5, - 0x60A4, 0x6181, 0x6460, 0x7E3D, 0x8070, 0x8525, 0x9283, 0x64AE, 0x50AC, - 0x5D14, 0x6700, 0x589C, 0x62BD, 0x63A8, 0x690E, 0x6978, 0x6A1E, 0x6E6B, - 0x76BA, 0x79CB, 0x82BB, 0x8429, 0x8ACF, 0x8DA8, 0x8FFD, 0x9112, 0x914B, - 0x919C, 0x9310, 0x9318, 0x939A, 0x96DB, 0x9A36, 0x9C0D, 0x4E11, 0x755C, - 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E, 0x84C4, 0x8E59, 0x8E74, 0x8EF8, - 0x9010, 0x6625, 0x693F, 0x7443, 0x51FA, 0x672E, 0x9EDC, 0x5145, 0x5FE0, - 0x6C96, 0x87F2, 0x885D, 0x8877, 0x60B4, 0x81B5, 0x8403, 0x8D05, 0x53D6, - 0x5439, 0x5634, 0x5A36, 0x5C31, 0x708A, 0x7FE0, 0x805A, 0x8106, 0x81ED, - 0x8DA3, 0x9189, 0x9A5F, 0x9DF2, 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C, - 0x5C64, 0x4F88, 0x5024, 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, 0x6CBB, - 0x6DC4, 0x71BE, 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, 0x7DC7, 0x7DFB, - 0x7F6E, 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, 0x9F52, 0x5247, 0x52C5, - 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, 0x4FB5, 0x5BE2, 0x6795, 0x6C88, - 0x6D78, 0x741B, 0x7827, 0x91DD, 0x937C, 0x87C4, 0x79E4, 0x7A31, 0x5FEB, - 0x4ED6, 0x54A4, 0x553E, 0x58AE, 0x59A5, 0x60F0, 0x6253, 0x62D6, 0x6736, - 0x6955, 0x8235, 0x9640, 0x99B1, 0x99DD, 0x502C, 0x5353, 0x5544, 0x577C, - 0x6258, 0x64E2, 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422, 0x7438, 0x8A17, - 0x9438, 0x5451, 0x5606, 0x5766, 0x5F48, 0x619A, 0x6B4E, 0x7058, 0x70AD, - 0x7DBB, 0x8A95, 0x596A, 0x812B, 0x63A2, 0x7708, 0x803D, 0x8CAA, 0x5854, - 0x642D, 0x69BB, 0x5B95, 0x5E11, 0x6E6F, 0x8569, 0x514C, 0x53F0, 0x592A, - 0x6020, 0x614B, 0x6B86, 0x6C70, 0x6CF0, 0x7B1E, 0x80CE, 0x82D4, 0x8DC6, - 0x90B0, 0x98B1, 0x64C7, 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, 0x571F, - 0x8A0E, 0x615F, 0x6876, 0x75DB, 0x7B52, 0x7D71, 0x901A, 0x5806, 0x69CC, - 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, 0x5957, 0x59AC, 0x6295, 0x900F, - 0x9B2A, 0x615D, 0x7279, 0x95D6, 0x5761, 0x5A46, 0x5DF4, 0x628A, 0x64AD, - 0x64FA, 0x6777, 0x6CE2, 0x6D3E, 0x722C, 0x7436, 0x7834, 0x7F77, 0x82AD, - 0x8DDB, 0x9817, 0x5224, 0x5742, 0x677F, 0x7248, 0x74E3, 0x8CA9, 0x8FA6, - 0x9211, 0x962A, 0x516B, 0x53ED, 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557, - 0x6C9B, 0x6D7F, 0x724C, 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, 0x6F8E, - 0x70F9, 0x81A8, 0x610E, 0x4FBF, 0x504F, 0x6241, 0x7247, 0x7BC7, 0x7DE8, - 0x7FE9, 0x904D, 0x97AD, 0x9A19, 0x8CB6, 0x576A, 0x5E73, 0x67B0, 0x840D, - 0x8A55, 0x5420, 0x5B16, 0x5E63, 0x5EE2, 0x5F0A, 0x6583, 0x80BA, 0x853D, - 0x9589, 0x965B, 0x4F48, 0x5305, 0x530D, 0x530F, 0x5486, 0x54FA, 0x5703, - 0x5E03, 0x6016, 0x629B, 0x62B1, 0x6355, 0x6CE1, 0x6D66, 0x75B1, 0x7832, - 0x80DE, 0x812F, 0x82DE, 0x8461, 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA, - 0x98FD, 0x9B91, 0x5E45, 0x66B4, 0x66DD, 0x7011, 0x7206, 0x4FF5, 0x527D, - 0x5F6A, 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8C79, - 0x98C7, 0x98C4, 0x9A43, 0x54C1, 0x7A1F, 0x6953, 0x8AF7, 0x8C4A, 0x98A8, - 0x99AE, 0x5F7C, 0x62AB, 0x75B2, 0x76AE, 0x88AB, 0x907F, 0x9642, 0x5339, - 0x5F3C, 0x5FC5, 0x6CCC, 0x73CC, 0x7562, 0x758B, 0x7B46, 0x82FE, 0x999D, - 0x4E4F, 0x903C, 0x4E0B, 0x4F55, 0x53A6, 0x590F, 0x5EC8, 0x6630, 0x6CB3, - 0x7455, 0x8377, 0x8766, 0x8CC0, 0x9050, 0x971E, 0x9C15, 0x58D1, 0x5B78, - 0x8650, 0x8B14, 0x9DB4, 0x5BD2, 0x6068, 0x608D, 0x65F1, 0x6C57, 0x6F22, - 0x6FA3, 0x701A, 0x7F55, 0x7FF0, 0x9591, 0x9592, 0x9650, 0x97D3, 0x5272, - 0x8F44, 0x51FD, 0x542B, 0x54B8, 0x5563, 0x558A, 0x6ABB, 0x6DB5, 0x7DD8, - 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408, 0x54C8, 0x76D2, 0x86E4, 0x95A4, - 0x95D4, 0x965C, 0x4EA2, 0x4F09, 0x59EE, 0x5AE6, 0x5DF7, 0x6052, 0x6297, - 0x676D, 0x6841, 0x6C86, 0x6E2F, 0x7F38, 0x809B, 0x822A, 0x9805, 0x4EA5, - 0x5055, 0x54B3, 0x5793, 0x595A, 0x5B69, 0x5BB3, 0x61C8, 0x6977, 0x6D77, - 0x7023, 0x87F9, 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED, 0x9AB8, 0x52BE, - 0x6838, 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, 0x4EAB, 0x5411, 0x56AE, - 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, 0x9999, 0x5653, 0x589F, 0x865B, - 0x8A31, 0x61B2, 0x6AF6, 0x737B, 0x8ED2, 0x6B47, 0x96AA, 0x9A57, 0x5955, - 0x7200, 0x8D6B, 0x9769, 0x4FD4, 0x5CF4, 0x5F26, 0x61F8, 0x665B, 0x6CEB, - 0x70AB, 0x7384, 0x73B9, 0x73FE, 0x7729, 0x774D, 0x7D43, 0x7D62, 0x7E23, - 0x8237, 0x8852, 0x8CE2, 0x9249, 0x986F, 0x5B51, 0x7A74, 0x8840, 0x9801, - 0x5ACC, 0x4FE0, 0x5354, 0x593E, 0x5CFD, 0x633E, 0x6D79, 0x72F9, 0x8105, - 0x8107, 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144, 0x5211, 0x578B, 0x5F62, - 0x6CC2, 0x6ECE, 0x7005, 0x7050, 0x70AF, 0x7192, 0x73E9, 0x7469, 0x834A, - 0x87A2, 0x8861, 0x9008, 0x90A2, 0x93A3, 0x99A8, 0x516E, 0x5F57, 0x60E0, - 0x6167, 0x66B3, 0x8559, 0x8E4A, 0x91AF, 0x978B, 0x4E4E, 0x4E92, 0x547C, - 0x58D5, 0x58FA, 0x597D, 0x5CB5, 0x5F27, 0x6236, 0x6248, 0x660A, 0x6667, - 0x6BEB, 0x6D69, 0x6DCF, 0x6E56, 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D, - 0x72D0, 0x7425, 0x745A, 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, 0x80E1, - 0x82A6, 0x846B, 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, 0x8C6A, 0x93AC, - 0x9800, 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, 0x660F, 0x6DF7, 0x6E3E, - 0x743F, 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, 0x54C4, 0x5F18, 0x6C5E, 0x6CD3, - 0x6D2A, 0x70D8, 0x7D05, 0x8679, 0x8A0C, 0x9D3B, 0x5316, 0x548C, 0x5B05, - 0x6A3A, 0x706B, 0x7575, 0x798D, 0x79BE, 0x82B1, 0x83EF, 0x8A71, 0x8B41, - 0x8CA8, 0x9774, 0x64F4, 0x652B, 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A, - 0x5950, 0x5BA6, 0x5E7B, 0x60A3, 0x63DB, 0x6B61, 0x6665, 0x6853, 0x6E19, - 0x7165, 0x74B0, 0x7D08, 0x9084, 0x9A69, 0x9C25, 0x6D3B, 0x6ED1, 0x733E, - 0x8C41, 0x95CA, 0x51F0, 0x5E4C, 0x5FA8, 0x604D, 0x60F6, 0x6130, 0x614C, - 0x6643, 0x6644, 0x69A5, 0x6CC1, 0x6E5F, 0x6EC9, 0x6F62, 0x714C, 0x749C, - 0x7687, 0x7BC1, 0x7C27, 0x8352, 0x8757, 0x9051, 0x968D, 0x9EC3, 0x532F, - 0x56DE, 0x5EFB, 0x5F8A, 0x6062, 0x6094, 0x61F7, 0x6666, 0x6703, 0x6A9C, - 0x6DEE, 0x6FAE, 0x7070, 0x736A, 0x7E6A, 0x81BE, 0x8334, 0x86D4, 0x8AA8, - 0x8CC4, 0x5283, 0x7372, 0x5B96, 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D, - 0x6548, 0x6585, 0x66C9, 0x689F, 0x6D8D, 0x6DC6, 0x723B, 0x80B4, 0x9175, - 0x9A4D, 0x4FAF, 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, 0x55C5, 0x5E3F, - 0x5F8C, 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, 0x52F3, 0x5864, 0x58CE, - 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, 0x6688, 0x85A8, 0x55A7, 0x6684, - 0x714A, 0x8431, 0x5349, 0x5599, 0x6BC1, 0x5F59, 0x5FBD, 0x63EE, 0x6689, - 0x7147, 0x8AF1, 0x8F1D, 0x9EBE, 0x4F11, 0x643A, 0x70CB, 0x7566, 0x8667, - 0x6064, 0x8B4E, 0x9DF8, 0x5147, 0x51F6, 0x5308, 0x6D36, 0x80F8, 0x9ED1, - 0x6615, 0x6B23, 0x7098, 0x75D5, 0x5403, 0x5C79, 0x7D07, 0x8A16, 0x6B20, - 0x6B3D, 0x6B46, 0x5438, 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6, 0x51DE, - 0x559C, 0x566B, 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, 0x6198, 0x6231, - 0x665E, 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, 0x79A7, 0x7A00, 0x7FB2, - 0x8A70, 0x3001, 0x3002, 0x2025, 0x00AD, 0x2015, 0x2225, 0xFF5E, 0x3014, - 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, - 0x3010, 0x3011, 0x3013, 0xFF01, 0xFF08, 0xFF09, 0xFF0C, 0xFF0E, 0xFF1A, - 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF3B, 0xFF3D, 0xFF3F, 0xFF5B, - 0xFF5C, 0xFF5D, 0xFF5E, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, - 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, - 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, - 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, - 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, - 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, - 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, - 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007E, - 0x005C, 0x231C, 0x231F, 0x0000, 0x0000, 0x0000, 0x0000, 0x300E, 0x300F, - 0x300A, 0x300B, 0x3008, 0x3009, 0x0028, 0x0029, 0x0000, 0x0000, 0x0028, - 0x0029, 0x0028, 0x0029, 0x0000, 0x0000, 0x0028, 0x0029, 0x0000, 0x0000, - 0x3016, 0x3017, 0x3016, 0x3017, 0x3018, 0x3019, 0x005B, 0x005D, 0x0000, - 0x0000, 0x263E, 0x263D, 0x2021, 0x2021, 0x2020, 0x2021, 0x0000, 0x2217, - 0x0000, 0x0000, 0x201F, 0x201B, 0x02D6, 0x02D7, 0x00D7, 0x221E, 0x0000, - 0x00B1, 0x2213, 0x003E, 0x003C, 0x003D, 0x2260, 0x207D, 0x207E, 0x007B, - 0x007D, 0x0000, 0x0000, 0x2229, 0x222A, 0x2282, 0x2208, 0x03A3, 0x0021, - 0x0000, 0x3021, 0x3022, 0x3023, 0x0000, 0x0000, 0x0000, 0x4E03, 0x0000, - 0x0000, 0x5341, 0x0000, 0x0000, 0x0027, 0x3014, 0x3015, 0x002A, 0x0000, - 0x2217, 0x002A, 0xCDCD, 0x3001, 0x3002, 0x0028, 0x0029, 0x0028, 0x0029, - 0x0028, 0x0029, 0x3016, 0x3017, 0x3010, 0x3011, 0x0000, 0x0000, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, - 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, - 0x005D, 0x00B6, 0x0000, 0x0000, 0x22EF, 0x2237, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, - 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x278A, - 0x278B, 0x278C, 0x278D, 0x278E, 0x278F, 0x2790, 0x2791, 0x2792, 0x2793, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x24B6, 0x24B7, 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, - 0x24BF, 0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7, - 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, - 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, - 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, - 0x005D, 0x005D, 0x005D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x22CF, 0x22CE, 0x22CF, - 0x22CE, 0x2280, 0x2281, 0x2270, 0x2271, 0x2272, 0x2273, 0x0000, 0x228A, - 0x0000, 0x228B, 0x2276, 0x2277, 0x2279, 0x22DA, 0x22DB, 0x0000, 0x0000, - 0x0000, 0x0000, 0x2221, 0x2245, 0x2243, 0x2248, 0x0000, 0x22A4, 0x22AB, - 0x0000, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, - 0x2466, 0x2467, 0x2468, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0021, 0x00B0, 0x0027, 0x0022, 0x2034, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0000, 0x0000, 0x2020, 0x2020, 0x2021, 0x2020, 0x00A7, 0x0023, - 0x002A, 0x002A, 0x0000, 0x0000, 0x2042, 0x002A, 0x0000, 0x0000, 0x2042, - 0x002A, 0x0000, 0x0000, 0x2022, 0x20DF, 0x20DF, 0x0000, 0x20DF, 0x3008, - 0x3009, 0x300A, 0x300B, 0x261C, 0x261E, 0x0000, 0x0000, 0x20DE, 0x0000, - 0x20DE, 0x20DE, 0x0000, 0x0000, 0x0000, 0x0000, 0x20DD, 0x20DD, 0x271A, - 0x2716, 0x0000, 0x25EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25CC, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x20A9, 0x0000, 0x0000, 0x262F, 0x0000, 0x262F, - 0x262F, 0x0000, 0x0000, 0x0000, 0x3020, 0x0000, 0x2776, 0x2777, 0x2778, - 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x277F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x2642, 0x22A9, 0x3036, 0x25CB, - 0x25D3, 0x25A1, 0x2302, 0x0000, 0x25AD, 0x25AD, 0x0000, 0x0000, 0x0000, - 0x25C7, 0x0000, 0x0000, 0x2206, 0x22BF, 0x231E, 0x0000, 0x2225, 0x2226, - 0x0000, 0x2253, 0x2251, 0x2266, 0x2267, 0x2213, 0x2295, 0x2296, 0x2297, - 0x20DD, 0x2314, 0x0000, 0x0000, 0x2262, 0x0000, 0x25B1, 0x0000, 0x2222, - 0x2250, 0x00D8, 0x234A, 0x22A3, 0x0338, 0x0000, 0x226E, 0x226F, 0x2285, - 0x2284, 0x2209, 0x220C, 0x22BB, 0x0016, 0x225A, 0x2306, 0x0024, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x329E, 0x0000, 0x203C, 0x003F, 0x0000, - 0x003F, 0x22C4, 0x25C7, 0x22C4, 0x25C6, 0x25AB, 0x25A1, 0x25AB, 0x25A0, - 0x25E6, 0x25CB, 0x25E6, 0x25CF, 0x25BD, 0x25B3, 0x25B7, 0x25C1, 0x2726, - 0x25CF, 0x25A0, 0x0000, 0x25CA, 0x3231, 0x3239, 0x33CB, 0x2483, 0x2494, - 0x2495, 0x2496, 0x2497, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, - 0x0029, 0x0029, 0x0029, 0x0029, 0x2192, 0x2190, 0x2191, 0x2193, 0x2196, - 0x2197, 0x2198, 0x2199, 0x21D0, 0x21CF, 0x21CD, 0x21D4, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2794, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x279C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x27BA, 0x0000, 0x0000, 0x0000, 0x0000, 0x21D1, 0x21D3, - 0x0000, 0x279E, 0x0000, 0x0000, 0x0000, 0x279E, 0x0000, 0x0000, 0x21B5, - 0x21B1, 0x0000, 0x21B4, 0x21B0, 0x21B3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x21E6, 0x21E8, 0x21E7, - 0x21E9, 0x21BC, 0x21C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x21C0, 0x21BC, - 0x0000, 0x0000, 0x0000, 0x0000, 0x21C4, 0x21C5, 0x002E, 0x002E, 0x002E, - 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, - 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, - 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, - 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, - 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, - 0x002E, 0x002E, 0x002E, 0x002E, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x2483, 0x2484, 0x2485, - 0x2486, 0x2487, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x3294, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x32A5, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, - 0x20DD, 0x0029, 0x0029, 0x0029, 0x0029, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2794, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x21E0, 0x21E1, 0x21E2, 0x21E3, 0x0000, 0x27A1, 0x0000, 0x0000, - 0x21E6, 0x21E8, 0x21E7, 0x21E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x261D, 0x261F, 0x0000, - 0x0000, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, - 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, - 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, - 0x005D, 0x005D, 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, - 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, - 0x20DE, 0x20DE, 0x20DE, 0x3290, 0x328A, 0x328B, 0x328C, 0x328D, 0x328E, - 0x328F, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x300C, - 0x300D, 0x300E, 0x300F, 0x21E8, 0x21E6, 0x21E7, 0x21E9, 0x0022, 0x301F, - 0x301D, 0x2036, 0x0060, 0x3001, 0x0000, 0x0021, 0x3021, 0x002C, 0x3002, - 0xAC02, 0xAC03, 0xAC05, 0xAC06, 0xAC0B, 0xAC0C, 0xAC0D, 0xAC0E, 0xAC0F, - 0xAC18, 0xAC1E, 0xAC1F, 0xAC21, 0xAC22, 0xAC23, 0xAC25, 0xAC26, 0xAC27, - 0xAC28, 0xAC29, 0xAC2A, 0xAC2B, 0xAC2E, 0xAC32, 0xAC33, 0xAC34, 0xAC35, - 0xAC36, 0xAC37, 0xAC3A, 0xAC3B, 0xAC3D, 0xAC3E, 0xAC3F, 0xAC41, 0xAC42, - 0xAC43, 0xAC44, 0xAC45, 0xAC46, 0xAC47, 0xAC48, 0xAC49, 0xAC4A, 0xAC4C, - 0xAC4E, 0xAC4F, 0xAC50, 0xAC51, 0xAC52, 0xAC53, 0xAC55, 0xAC56, 0xAC57, - 0xAC59, 0xAC5A, 0xAC5B, 0xAC5D, 0xAC5E, 0xAC5F, 0xAC60, 0xAC61, 0xAC62, - 0xAC63, 0xAC64, 0xAC65, 0xAC66, 0xAC67, 0xAC68, 0xAC69, 0xAC6A, 0xAC6B, - 0xAC6C, 0xAC6D, 0xAC6E, 0xAC6F, 0xAC72, 0xAC73, 0xAC75, 0xAC76, 0xAC79, - 0xAC7B, 0xAC7C, 0xAC7D, 0xAC7E, 0xAC7F, 0xAC82, 0xAC87, 0xAC88, 0xAC8D, - 0xAC8E, 0xAC8F, 0xAC91, 0xAC92, 0xAC93, 0xAC95, 0xAC96, 0xAC97, 0xAC98, - 0xAC99, 0xAC9A, 0xAC9B, 0xAC9E, 0xACA2, 0xACA3, 0xACA4, 0xACA5, 0xACA6, - 0xACA7, 0xACAB, 0xACAD, 0xACAE, 0xACB1, 0xACB2, 0xACB3, 0xACB4, 0xACB5, - 0xACB6, 0xACB7, 0xACBA, 0xACBE, 0xACBF, 0xACC0, 0xACC2, 0xACC3, 0xACC5, - 0xACC6, 0xACC7, 0xACC9, 0xACCA, 0xACCB, 0xACCD, 0xACCE, 0xACCF, 0xACD0, - 0xACD1, 0xACD2, 0xACD3, 0xACD4, 0xACD6, 0xACD8, 0xACD9, 0xACDA, 0xACDB, - 0xACDC, 0xACDD, 0xACDE, 0xACDF, 0xACE2, 0xACE3, 0xACE5, 0xACE6, 0xACE9, - 0xACEB, 0xACED, 0xACEE, 0xACF2, 0xACF4, 0xACF7, 0xACF8, 0xACF9, 0xACFA, - 0xACFB, 0xACFE, 0xACFF, 0xAD01, 0xAD02, 0xAD03, 0xAD05, 0xAD07, 0xAD08, - 0xAD09, 0xAD0A, 0xAD0B, 0xAD0E, 0xAD10, 0xAD12, 0xAD13, 0xAD14, 0xAD15, - 0xAD16, 0xAD17, 0xAD19, 0xAD1A, 0xAD1B, 0xAD1D, 0xAD1E, 0xAD1F, 0xAD21, - 0xAD22, 0xAD23, 0xAD24, 0xAD25, 0xAD26, 0xAD27, 0xAD28, 0xAD2A, 0xAD2B, - 0xAD2E, 0xAD2F, 0xAD30, 0xAD31, 0xAD32, 0xAD33, 0xAD36, 0xAD37, 0xAD39, - 0xAD3A, 0xAD3B, 0xAD3D, 0xAD3E, 0xAD3F, 0xAD40, 0xAD41, 0xAD42, 0xAD43, - 0xAD46, 0xAD48, 0xAD4A, 0xAD4B, 0xAD4C, 0xAD4D, 0xAD4E, 0xAD4F, 0xAD51, - 0xAD52, 0xAD53, 0xAD55, 0xAD56, 0xAD57, 0xAD59, 0xAD5A, 0xAD5B, 0xAD5C, - 0xAD5D, 0xAD5E, 0xAD5F, 0xAD60, 0xAD62, 0xAD64, 0xAD65, 0xAD66, 0xAD67, - 0xAD68, 0xAD69, 0xAD6A, 0xAD6B, 0xAD6E, 0xAD6F, 0xAD71, 0xAD72, 0xAD77, - 0xAD78, 0xAD79, 0xAD7A, 0xAD7E, 0xAD80, 0xAD83, 0xAD84, 0xAD85, 0xAD86, - 0xAD87, 0xAD8A, 0xAD8B, 0xAD8D, 0xAD8E, 0xAD8F, 0xAD91, 0xAD92, 0xAD93, - 0xAD94, 0xAD95, 0xAD96, 0xAD97, 0xAD98, 0xAD99, 0xAD9A, 0xAD9B, 0xAD9E, - 0xAD9F, 0xADA0, 0xADA1, 0xADA2, 0xADA3, 0xADA5, 0xADA6, 0xADA7, 0xADA8, - 0xADA9, 0xADAA, 0xADAB, 0xADAC, 0xADAD, 0xADAE, 0xADAF, 0xADB0, 0xADB1, - 0xADB2, 0xADB3, 0xADB4, 0xADB5, 0xADB6, 0xADB8, 0xADB9, 0xADBA, 0xADBB, - 0xADBC, 0xADBD, 0xADBE, 0xADBF, 0xADC2, 0xADC3, 0xADC5, 0xADC6, 0xADC7, - 0xADC9, 0xADCA, 0xADCB, 0xADCC, 0xADCD, 0xADCE, 0xADCF, 0xADD2, 0xADD4, - 0xADD5, 0xADD6, 0xADD7, 0xADD8, 0xADD9, 0xADDA, 0xADDB, 0xADDD, 0xADDE, - 0xADDF, 0xADE1, 0xADE2, 0xADE3, 0xADE5, 0xADE6, 0xADE7, 0xADE8, 0xADE9, - 0xADEA, 0xADEB, 0xADEC, 0xADED, 0xADEE, 0xADEF, 0xADF0, 0xADF1, 0xADF2, - 0xADF3, 0xADF4, 0xADF5, 0xADF6, 0xADF7, 0xADFA, 0xADFB, 0xADFD, 0xADFE, - 0xAE02, 0xAE03, 0xAE04, 0xAE05, 0xAE06, 0xAE07, 0xAE0A, 0xAE0C, 0xAE0E, - 0xAE0F, 0xAE10, 0xAE11, 0xAE12, 0xAE13, 0xAE15, 0xAE16, 0xAE17, 0xAE18, - 0xAE19, 0xAE1A, 0xAE1B, 0xAE1C, 0xAE1D, 0xAE1E, 0xAE1F, 0xAE20, 0xAE21, - 0xAE22, 0xAE23, 0xAE24, 0xAE25, 0xAE26, 0xAE27, 0xAE28, 0xAE29, 0xAE2A, - 0xAE2B, 0xAE2C, 0xAE2D, 0xAE2E, 0xAE2F, 0xAE32, 0xAE33, 0xAE35, 0xAE36, - 0xAE39, 0xAE3B, 0xAE3C, 0xAE3D, 0xAE3E, 0xAE3F, 0xAE42, 0xAE44, 0xAE47, - 0xAE48, 0xAE49, 0xAE4B, 0xAE4F, 0xAE51, 0xAE52, 0xAE53, 0xAE55, 0xAE57, - 0xAE58, 0xAE59, 0xAE5A, 0xAE5B, 0xAE5E, 0xAE62, 0xAE63, 0xAE64, 0xAE66, - 0xAE67, 0xAE6A, 0xAE6B, 0xAE6D, 0xAE6E, 0xAE6F, 0xAE71, 0xAE72, 0xAE73, - 0xAE74, 0xAE75, 0xAE76, 0xAE77, 0xAE7A, 0xAE7E, 0xAE7F, 0xAE80, 0xAE81, - 0xAE82, 0xAE83, 0xAE86, 0xAE87, 0xAE88, 0xAE89, 0xAE8A, 0xAE8B, 0xAE8D, - 0xAE8E, 0xAE8F, 0xAE90, 0xAE91, 0xAE92, 0xAE93, 0xAE94, 0xAE95, 0xAE96, - 0xAE97, 0xAE98, 0xAE99, 0xAE9A, 0xAE9B, 0xAE9C, 0xAE9D, 0xAE9E, 0xAE9F, - 0xAEA0, 0xAEA1, 0xAEA2, 0xAEA3, 0xAEA4, 0xAEA5, 0xAEA6, 0xAEA7, 0xAEA8, - 0xAEA9, 0xAEAA, 0xAEAB, 0xAEAC, 0xAEAD, 0xAEAE, 0xAEAF, 0xAEB0, 0xAEB1, - 0xAEB2, 0xAEB3, 0xAEB4, 0xAEB5, 0xAEB6, 0xAEB7, 0xAEB8, 0xAEB9, 0xAEBA, - 0xAEBB, 0xAEBF, 0xAEC1, 0xAEC2, 0xAEC3, 0xAEC5, 0xAEC6, 0xAEC7, 0xAEC8, - 0xAEC9, 0xAECA, 0xAECB, 0xAECE, 0xAED2, 0xAED3, 0xAED4, 0xAED5, 0xAED6, - 0xAED7, 0xAEDA, 0xAEDB, 0xAEDD, 0xAEDE, 0xAEDF, 0xAEE0, 0xAEE1, 0xAEE2, - 0xAEE3, 0xAEE4, 0xAEE5, 0xAEE6, 0xAEE7, 0xAEE9, 0xAEEA, 0xAEEC, 0xAEEE, - 0xAEEF, 0xAEF0, 0xAEF1, 0xAEF2, 0xAEF3, 0xAEF5, 0xAEF6, 0xAEF7, 0xAEF9, - 0xAEFA, 0xAEFB, 0xAEFD, 0xAEFE, 0xAEFF, 0xAF00, 0xAF01, 0xAF02, 0xAF03, - 0xAF04, 0xAF05, 0xAF06, 0xAF09, 0xAF0A, 0xAF0B, 0xAF0C, 0xAF0E, 0xAF0F, - 0xAF11, 0xAF12, 0xAF13, 0xAF14, 0xAF15, 0xAF16, 0xAF17, 0xAF18, 0xAF19, - 0xAF1A, 0xAF1B, 0xAF1C, 0xAF1D, 0xAF1E, 0xAF1F, 0xAF20, 0xAF21, 0xAF22, - 0xAF23, 0xAF24, 0xAF25, 0xAF26, 0xAF27, 0xAF28, 0xAF29, 0xAF2A, 0xAF2B, - 0xAF2E, 0xAF2F, 0xAF31, 0xAF33, 0xAF35, 0xAF36, 0xAF37, 0xAF38, 0xAF39, - 0xAF3A, 0xAF3B, 0xAF3E, 0xAF40, 0xAF44, 0xAF45, 0xAF46, 0xAF47, 0xAF4A, - 0xAF4B, 0xAF4C, 0xAF4D, 0xAF4E, 0xAF4F, 0xAF51, 0xAF52, 0xAF53, 0xAF54, - 0xAF55, 0xAF56, 0xAF57, 0xAF58, 0xAF59, 0xAF5A, 0xAF5B, 0xAF5E, 0xAF5F, - 0xAF60, 0xAF61, 0xAF62, 0xAF63, 0xAF66, 0xAF67, 0xAF68, 0xAF69, 0xAF6A, - 0xAF6B, 0xAF6C, 0xAF6D, 0xAF6E, 0xAF6F, 0xAF70, 0xAF71, 0xAF72, 0xAF73, - 0xAF74, 0xAF75, 0xAF76, 0xAF77, 0xAF78, 0xAF7A, 0xAF7B, 0xAF7C, 0xAF7D, - 0xAF7E, 0xAF7F, 0xAF81, 0xAF82, 0xAF83, 0xAF85, 0xAF86, 0xAF87, 0xAF89, - 0xAF8A, 0xAF8B, 0xAF8C, 0xAF8D, 0xAF8E, 0xAF8F, 0xAF92, 0xAF93, 0xAF94, - 0xAF96, 0xAF97, 0xAF98, 0xAF99, 0xAF9A, 0xAF9B, 0xAF9D, 0xAF9E, 0xAF9F, - 0xAFA0, 0xAFA1, 0xAFA2, 0xAFA3, 0xAFA4, 0xAFA5, 0xAFA6, 0xAFA7, 0xAFA8, - 0xAFA9, 0xAFAA, 0xAFAB, 0xAFAC, 0xAFAD, 0xAFAE, 0xAFAF, 0xAFB0, 0xAFB1, - 0xAFB2, 0xAFB3, 0xAFB4, 0xAFB5, 0xAFB6, 0xAFB7, 0xAFBA, 0xAFBB, 0xAFBD, - 0xAFBE, 0xAFBF, 0xAFC1, 0xAFC2, 0xAFC3, 0xAFC4, 0xAFC5, 0xAFC6, 0xAFCA, - 0xAFCC, 0xAFCF, 0xAFD0, 0xAFD1, 0xAFD2, 0xAFD3, 0xAFD5, 0xAFD6, 0xAFD7, - 0xAFD8, 0xAFD9, 0xAFDA, 0xAFDB, 0xAFDD, 0xAFDE, 0xAFDF, 0xAFE0, 0xAFE1, - 0xAFE2, 0xAFE3, 0xAFE4, 0xAFE5, 0xAFE6, 0xAFE7, 0xAFEA, 0xAFEB, 0xAFEC, - 0xAFED, 0xAFEE, 0xAFEF, 0xAFF2, 0xAFF3, 0xAFF5, 0xAFF6, 0xAFF7, 0xAFF9, - 0xAFFA, 0xAFFB, 0xAFFC, 0xAFFD, 0xAFFE, 0xAFFF, 0xB002, 0xB003, 0xB005, - 0xB006, 0xB007, 0xB008, 0xB009, 0xB00A, 0xB00B, 0xB00D, 0xB00E, 0xB00F, - 0xB011, 0xB012, 0xB013, 0xB015, 0xB016, 0xB017, 0xB018, 0xB019, 0xB01A, - 0xB01B, 0xB01E, 0xB01F, 0xB020, 0xB021, 0xB022, 0xB023, 0xB024, 0xB025, - 0xB026, 0xB027, 0xB029, 0xB02A, 0xB02B, 0xB02C, 0xB02D, 0xB02E, 0xB02F, - 0xB030, 0xB031, 0xB032, 0xB033, 0xB034, 0xB035, 0xB036, 0xB037, 0xB038, - 0xB039, 0xB03A, 0xB03B, 0xB03C, 0xB03D, 0xB03E, 0xB03F, 0xB040, 0xB041, - 0xB042, 0xB043, 0xB046, 0xB047, 0xB049, 0xB04B, 0xB04D, 0xB04F, 0xB050, - 0xB051, 0xB052, 0xB056, 0xB058, 0xB05A, 0xB05B, 0xB05C, 0xB05E, 0xB05F, - 0xB060, 0xB061, 0xB062, 0xB063, 0xB064, 0xB065, 0xB066, 0xB067, 0xB068, - 0xB069, 0xB06A, 0xB06B, 0xB06C, 0xB06D, 0xB06E, 0xB06F, 0xB070, 0xB071, - 0xB072, 0xB073, 0xB074, 0xB075, 0xB076, 0xB077, 0xB078, 0xB079, 0xB07A, - 0xB07B, 0xB07E, 0xB07F, 0xB081, 0xB082, 0xB083, 0xB085, 0xB086, 0xB087, - 0xB088, 0xB089, 0xB08A, 0xB08B, 0xB08E, 0xB090, 0xB092, 0xB093, 0xB094, - 0xB095, 0xB096, 0xB097, 0xB09B, 0xB09D, 0xB09E, 0xB0A3, 0xB0A4, 0xB0A5, - 0xB0A6, 0xB0A7, 0xB0AA, 0xB0B0, 0xB0B2, 0xB0B6, 0xB0B7, 0xB0B9, 0xB0BA, - 0xB0BB, 0xB0BD, 0xB0BE, 0xB0BF, 0xB0C0, 0xB0C1, 0xB0C2, 0xB0C3, 0xB0C6, - 0xB0CA, 0xB0CB, 0xB0CC, 0xB0CD, 0xB0CE, 0xB0CF, 0xB0D2, 0xB0D3, 0xB0D5, - 0xB0D6, 0xB0D7, 0xB0D9, 0xB0DA, 0xB0DB, 0xB0DC, 0xB0DD, 0xB0DE, 0xB0DF, - 0xB0E1, 0xB0E2, 0xB0E3, 0xB0E4, 0xB0E6, 0xB0E7, 0xB0E8, 0xB0E9, 0xB0EA, - 0xB0EB, 0xB0EC, 0xB0ED, 0xB0EE, 0xB0EF, 0xB0F0, 0xB0F1, 0xB0F2, 0xB0F3, - 0xB0F4, 0xB0F5, 0xB0F6, 0xB0F7, 0xB0F8, 0xB0F9, 0xB0FA, 0xB0FB, 0xB0FC, - 0xB0FD, 0xB0FE, 0xB0FF, 0xB100, 0xB101, 0xB102, 0xB103, 0xB104, 0xB105, - 0xB106, 0xB107, 0xB10A, 0xB10D, 0xB10E, 0xB10F, 0xB111, 0xB114, 0xB115, - 0xB116, 0xB117, 0xB11A, 0xB11E, 0xB11F, 0xB120, 0xB121, 0xB122, 0xB126, - 0xB127, 0xB129, 0xB12A, 0xB12B, 0xB12D, 0xB12E, 0xB12F, 0xB130, 0xB131, - 0xB132, 0xB133, 0xB136, 0xB13A, 0xB13B, 0xB13C, 0xB13D, 0xB13E, 0xB13F, - 0xB142, 0xB143, 0xB145, 0xB146, 0xB147, 0xB149, 0xB14A, 0xB14B, 0xB14C, - 0xB14D, 0xB14E, 0xB14F, 0xB152, 0xB153, 0xB156, 0xB157, 0xB159, 0xB15A, - 0xB15B, 0xB15D, 0xB15E, 0xB15F, 0xB161, 0xB162, 0xB163, 0xB164, 0xB165, - 0xB166, 0xB167, 0xB168, 0xB169, 0xB16A, 0xB16B, 0xB16C, 0xB16D, 0xB16E, - 0xB16F, 0xB170, 0xB171, 0xB172, 0xB173, 0xB174, 0xB175, 0xB176, 0xB177, - 0xB17A, 0xB17B, 0xB17D, 0xB17E, 0xB17F, 0xB181, 0xB183, 0xB184, 0xB185, - 0xB186, 0xB187, 0xB18A, 0xB18C, 0xB18E, 0xB18F, 0xB190, 0xB191, 0xB195, - 0xB196, 0xB197, 0xB199, 0xB19A, 0xB19B, 0xB19D, 0xB19E, 0xB19F, 0xB1A0, - 0xB1A1, 0xB1A2, 0xB1A3, 0xB1A4, 0xB1A5, 0xB1A6, 0xB1A7, 0xB1A9, 0xB1AA, - 0xB1AB, 0xB1AC, 0xB1AD, 0xB1AE, 0xB1AF, 0xB1B0, 0xB1B1, 0xB1B2, 0xB1B3, - 0xB1B4, 0xB1B5, 0xB1B6, 0xB1B7, 0xB1B8, 0xB1B9, 0xB1BA, 0xB1BB, 0xB1BC, - 0xB1BD, 0xB1BE, 0xB1BF, 0xB1C0, 0xB1C1, 0xB1C2, 0xB1C3, 0xB1C4, 0xB1C5, - 0xB1C6, 0xB1C7, 0xB1C8, 0xB1C9, 0xB1CA, 0xB1CB, 0xB1CD, 0xB1CE, 0xB1CF, - 0xB1D1, 0xB1D2, 0xB1D3, 0xB1D5, 0xB1D6, 0xB1D7, 0xB1D8, 0xB1D9, 0xB1DA, - 0xB1DB, 0xB1DE, 0xB1E0, 0xB1E1, 0xB1E2, 0xB1E3, 0xB1E4, 0xB1E5, 0xB1E6, - 0xB1E7, 0xB1EA, 0xB1EB, 0xB1ED, 0xB1EE, 0xB1EF, 0xB1F1, 0xB1F2, 0xB1F3, - 0xB1F4, 0xB1F5, 0xB1F6, 0xB1F7, 0xB1F8, 0xB1FA, 0xB1FC, 0xB1FE, 0xB1FF, - 0xB200, 0xB201, 0xB202, 0xB203, 0xB206, 0xB207, 0xB209, 0xB20A, 0xB20D, - 0xB20E, 0xB20F, 0xB210, 0xB211, 0xB212, 0xB213, 0xB216, 0xB218, 0xB21A, - 0xB21B, 0xB21C, 0xB21D, 0xB21E, 0xB21F, 0xB221, 0xB222, 0xB223, 0xB224, - 0xB225, 0xB226, 0xB227, 0xB228, 0xB229, 0xB22A, 0xB22B, 0xB22C, 0xB22D, - 0xB22E, 0xB22F, 0xB230, 0xB231, 0xB232, 0xB233, 0xB235, 0xB236, 0xB237, - 0xB238, 0xB239, 0xB23A, 0xB23B, 0xB23D, 0xB23E, 0xB23F, 0xB240, 0xB241, - 0xB242, 0xB243, 0xB244, 0xB245, 0xB246, 0xB247, 0xB248, 0xB249, 0xB24A, - 0xB24B, 0xB24C, 0xB24D, 0xB24E, 0xB24F, 0xB250, 0xB251, 0xB252, 0xB253, - 0xB254, 0xB255, 0xB256, 0xB257, 0xB259, 0xB25A, 0xB25B, 0xB25D, 0xB25E, - 0xB25F, 0xB261, 0xB262, 0xB263, 0xB264, 0xB265, 0xB266, 0xB267, 0xB26A, - 0xB26B, 0xB26C, 0xB26D, 0xB26E, 0xB26F, 0xB270, 0xB271, 0xB272, 0xB273, - 0xB276, 0xB277, 0xB278, 0xB279, 0xB27A, 0xB27B, 0xB27D, 0xB27E, 0xB27F, - 0xB280, 0xB281, 0xB282, 0xB283, 0xB286, 0xB287, 0xB288, 0xB28A, 0xB28B, - 0xB28C, 0xB28D, 0xB28E, 0xB28F, 0xB292, 0xB293, 0xB295, 0xB296, 0xB297, - 0xB29B, 0xB29C, 0xB29D, 0xB29E, 0xB29F, 0xB2A2, 0xB2A4, 0xB2A7, 0xB2A8, - 0xB2A9, 0xB2AB, 0xB2AD, 0xB2AE, 0xB2AF, 0xB2B1, 0xB2B2, 0xB2B3, 0xB2B5, - 0xB2B6, 0xB2B7, 0xB2B8, 0xB2B9, 0xB2BA, 0xB2BB, 0xB2BC, 0xB2BD, 0xB2BE, - 0xB2BF, 0xB2C0, 0xB2C1, 0xB2C2, 0xB2C3, 0xB2C4, 0xB2C5, 0xB2C6, 0xB2C7, - 0xB2CA, 0xB2CB, 0xB2CD, 0xB2CE, 0xB2CF, 0xB2D1, 0xB2D3, 0xB2D4, 0xB2D5, - 0xB2D6, 0xB2D7, 0xB2DA, 0xB2DC, 0xB2DE, 0xB2DF, 0xB2E0, 0xB2E1, 0xB2E3, - 0xB2E7, 0xB2E9, 0xB2EA, 0xB2F0, 0xB2F1, 0xB2F2, 0xB2F6, 0xB2FC, 0xB2FD, - 0xB2FE, 0xB302, 0xB303, 0xB305, 0xB306, 0xB307, 0xB309, 0xB30A, 0xB30B, - 0xB30C, 0xB30D, 0xB30E, 0xB30F, 0xB312, 0xB316, 0xB317, 0xB318, 0xB319, - 0xB31A, 0xB31B, 0xB31D, 0xB31E, 0xB31F, 0xB320, 0xB321, 0xB322, 0xB323, - 0xB324, 0xB325, 0xB326, 0xB327, 0xB328, 0xB329, 0xB32A, 0xB32B, 0xB32C, - 0xB32D, 0xB32E, 0xB32F, 0xB330, 0xB331, 0xB332, 0xB333, 0xB334, 0xB335, - 0xB336, 0xB337, 0xB338, 0xB339, 0xB33A, 0xB33B, 0xB33C, 0xB33D, 0xB33E, - 0xB33F, 0xB340, 0xB341, 0xB342, 0xB343, 0xB344, 0xB345, 0xB346, 0xB347, - 0xB348, 0xB349, 0xB34A, 0xB34B, 0xB34C, 0xB34D, 0xB34E, 0xB34F, 0xB350, - 0xB351, 0xB352, 0xB353, 0xB357, 0xB359, 0xB35A, 0xB35D, 0xB360, 0xB361, - 0xB362, 0xB363, 0xB366, 0xB368, 0xB36A, 0xB36C, 0xB36D, 0xB36F, 0xB372, - 0xB373, 0xB375, 0xB376, 0xB377, 0xB379, 0xB37A, 0xB37B, 0xB37C, 0xB37D, - 0xB37E, 0xB37F, 0xB382, 0xB386, 0xB387, 0xB388, 0xB389, 0xB38A, 0xB38B, - 0xB38D, 0xB38E, 0xB38F, 0xB391, 0xB392, 0xB393, 0xB395, 0xB396, 0xB397, - 0xB398, 0xB399, 0xB39A, 0xB39B, 0xB39C, 0xB39D, 0xB39E, 0xB39F, 0xB3A2, - 0xB3A3, 0xB3A4, 0xB3A5, 0xB3A6, 0xB3A7, 0xB3A9, 0xB3AA, 0xB3AB, 0xB3AD, - 0xB3AE, 0xB3AF, 0xB3B0, 0xB3B1, 0xB3B2, 0xB3B3, 0xB3B4, 0xB3B5, 0xB3B6, - 0xB3B7, 0xB3B8, 0xB3B9, 0xB3BA, 0xB3BB, 0xB3BC, 0xB3BD, 0xB3BE, 0xB3BF, - 0xB3C0, 0xB3C1, 0xB3C2, 0xB3C3, 0xB3C6, 0xB3C7, 0xB3C9, 0xB3CA, 0xB3CD, - 0xB3CF, 0xB3D1, 0xB3D2, 0xB3D3, 0xB3D6, 0xB3D8, 0xB3DA, 0xB3DC, 0xB3DE, - 0xB3DF, 0xB3E1, 0xB3E2, 0xB3E3, 0xB3E5, 0xB3E6, 0xB3E7, 0xB3E9, 0xB3EA, - 0xB3EB, 0xB3EC, 0xB3ED, 0xB3EE, 0xB3EF, 0xB3F0, 0xB3F1, 0xB3F2, 0xB3F3, - 0xB3F4, 0xB3F5, 0xB3F6, 0xB3F7, 0xB3F8, 0xB3F9, 0xB3FA, 0xB3FB, 0xB3FD, - 0xB3FE, 0xB3FF, 0xB400, 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xB406, - 0xB407, 0xB408, 0xB409, 0xB40A, 0xB40B, 0xB40C, 0xB40D, 0xB40E, 0xB40F, - 0xB411, 0xB412, 0xB413, 0xB414, 0xB415, 0xB416, 0xB417, 0xB419, 0xB41A, - 0xB41B, 0xB41D, 0xB41E, 0xB41F, 0xB421, 0xB422, 0xB423, 0xB424, 0xB425, - 0xB426, 0xB427, 0xB42A, 0xB42C, 0xB42D, 0xB42E, 0xB42F, 0xB430, 0xB431, - 0xB432, 0xB433, 0xB435, 0xB436, 0xB437, 0xB438, 0xB439, 0xB43A, 0xB43B, - 0xB43C, 0xB43D, 0xB43E, 0xB43F, 0xB440, 0xB441, 0xB442, 0xB443, 0xB444, - 0xB445, 0xB446, 0xB447, 0xB448, 0xB449, 0xB44A, 0xB44B, 0xB44C, 0xB44D, - 0xB44E, 0xB44F, 0xB452, 0xB453, 0xB455, 0xB456, 0xB457, 0xB459, 0xB45A, - 0xB45B, 0xB45C, 0xB45D, 0xB45E, 0xB45F, 0xB462, 0xB464, 0xB466, 0xB467, - 0xB468, 0xB469, 0xB46A, 0xB46B, 0xB46D, 0xB46E, 0xB46F, 0xB470, 0xB471, - 0xB472, 0xB473, 0xB474, 0xB475, 0xB476, 0xB477, 0xB478, 0xB479, 0xB47A, - 0xB47B, 0xB47C, 0xB47D, 0xB47E, 0xB47F, 0xB481, 0xB482, 0xB483, 0xB484, - 0xB485, 0xB486, 0xB487, 0xB489, 0xB48A, 0xB48B, 0xB48C, 0xB48D, 0xB48E, - 0xB48F, 0xB490, 0xB491, 0xB492, 0xB493, 0xB494, 0xB495, 0xB496, 0xB497, - 0xB498, 0xB499, 0xB49A, 0xB49B, 0xB49C, 0xB49E, 0xB49F, 0xB4A0, 0xB4A1, - 0xB4A2, 0xB4A3, 0xB4A5, 0xB4A6, 0xB4A7, 0xB4A9, 0xB4AA, 0xB4AB, 0xB4AD, - 0xB4AE, 0xB4AF, 0xB4B0, 0xB4B1, 0xB4B2, 0xB4B3, 0xB4B4, 0xB4B6, 0xB4B8, - 0xB4BA, 0xB4BB, 0xB4BC, 0xB4BD, 0xB4BE, 0xB4BF, 0xB4C1, 0xB4C2, 0xB4C3, - 0xB4C5, 0xB4C6, 0xB4C7, 0xB4C9, 0xB4CA, 0xB4CB, 0xB4CC, 0xB4CD, 0xB4CE, - 0xB4CF, 0xB4D1, 0xB4D2, 0xB4D3, 0xB4D4, 0xB4D6, 0xB4D7, 0xB4D8, 0xB4D9, - 0xB4DA, 0xB4DB, 0xB4DE, 0xB4DF, 0xB4E1, 0xB4E2, 0xB4E5, 0xB4E7, 0xB4E8, - 0xB4E9, 0xB4EA, 0xB4EB, 0xB4EE, 0xB4F0, 0xB4F2, 0xB4F3, 0xB4F4, 0xB4F5, - 0xB4F6, 0xB4F7, 0xB4F9, 0xB4FA, 0xB4FB, 0xB4FC, 0xB4FD, 0xB4FE, 0xB4FF, - 0xB500, 0xB501, 0xB502, 0xB503, 0xB504, 0xB505, 0xB506, 0xB507, 0xB508, - 0xB509, 0xB50A, 0xB50B, 0xB50C, 0xB50D, 0xB50E, 0xB50F, 0xB510, 0xB511, - 0xB512, 0xB513, 0xB516, 0xB517, 0xB519, 0xB51A, 0xB51D, 0xB51E, 0xB51F, - 0xB520, 0xB521, 0xB522, 0xB523, 0xB526, 0xB52B, 0xB52C, 0xB52D, 0xB52E, - 0xB52F, 0xB532, 0xB533, 0xB535, 0xB536, 0xB537, 0xB539, 0xB53A, 0xB53B, - 0xB53C, 0xB53D, 0xB53E, 0xB53F, 0xB542, 0xB546, 0xB547, 0xB548, 0xB549, - 0xB54A, 0xB54E, 0xB54F, 0xB551, 0xB552, 0xB553, 0xB555, 0xB556, 0xB557, - 0xB558, 0xB559, 0xB55A, 0xB55B, 0xB55E, 0xB562, 0xB563, 0xB564, 0xB565, - 0xB566, 0xB567, 0xB568, 0xB569, 0xB56A, 0xB56B, 0xB56C, 0xB56D, 0xB56E, - 0xB56F, 0xB570, 0xB571, 0xB572, 0xB573, 0xB574, 0xB575, 0xB576, 0xB577, - 0xB578, 0xB579, 0xB57A, 0xB57B, 0xB57C, 0xB57D, 0xB57E, 0xB57F, 0xB580, - 0xB581, 0xB582, 0xB583, 0xB584, 0xB585, 0xB586, 0xB587, 0xB588, 0xB589, - 0xB58A, 0xB58B, 0xB58C, 0xB58D, 0xB58E, 0xB58F, 0xB590, 0xB591, 0xB592, - 0xB593, 0xB594, 0xB595, 0xB596, 0xB597, 0xB598, 0xB599, 0xB59A, 0xB59B, - 0xB59C, 0xB59D, 0xB59E, 0xB59F, 0xB5A2, 0xB5A3, 0xB5A5, 0xB5A6, 0xB5A7, - 0xB5A9, 0xB5AC, 0xB5AD, 0xB5AE, 0xB5AF, 0xB5B2, 0xB5B6, 0xB5B7, 0xB5B8, - 0xB5B9, 0xB5BA, 0xB5BE, 0xB5BF, 0xB5C1, 0xB5C2, 0xB5C3, 0xB5C5, 0xB5C6, - 0xB5C7, 0xB5C8, 0xB5C9, 0xB5CA, 0xB5CB, 0xB5CE, 0xB5D2, 0xB5D3, 0xB5D4, - 0xB5D5, 0xB5D6, 0xB5D7, 0xB5D9, 0xB5DA, 0xB5DB, 0xB5DC, 0xB5DD, 0xB5DE, - 0xB5DF, 0xB5E0, 0xB5E1, 0xB5E2, 0xB5E3, 0xB5E4, 0xB5E5, 0xB5E6, 0xB5E7, - 0xB5E8, 0xB5E9, 0xB5EA, 0xB5EB, 0xB5ED, 0xB5EE, 0xB5EF, 0xB5F0, 0xB5F1, - 0xB5F2, 0xB5F3, 0xB5F4, 0xB5F5, 0xB5F6, 0xB5F7, 0xB5F8, 0xB5F9, 0xB5FA, - 0xB5FB, 0xB5FC, 0xB5FD, 0xB5FE, 0xB5FF, 0xB600, 0xB601, 0xB602, 0xB603, - 0xB604, 0xB605, 0xB606, 0xB607, 0xB608, 0xB609, 0xB60A, 0xB60B, 0xB60C, - 0xB60D, 0xB60E, 0xB60F, 0xB612, 0xB613, 0xB615, 0xB616, 0xB617, 0xB619, - 0xB61A, 0xB61B, 0xB61C, 0xB61D, 0xB61E, 0xB61F, 0xB620, 0xB621, 0xB622, - 0xB623, 0xB624, 0xB626, 0xB627, 0xB628, 0xB629, 0xB62A, 0xB62B, 0xB62D, - 0xB62E, 0xB62F, 0xB630, 0xB631, 0xB632, 0xB633, 0xB635, 0xB636, 0xB637, - 0xB638, 0xB639, 0xB63A, 0xB63B, 0xB63C, 0xB63D, 0xB63E, 0xB63F, 0xB640, - 0xB641, 0xB642, 0xB643, 0xB644, 0xB645, 0xB646, 0xB647, 0xB649, 0xB64A, - 0xB64B, 0xB64C, 0xB64D, 0xB64E, 0xB64F, 0xB650, 0xB651, 0xB652, 0xB653, - 0xB654, 0xB655, 0xB656, 0xB657, 0xB658, 0xB659, 0xB65A, 0xB65B, 0xB65C, - 0xB65D, 0xB65E, 0xB65F, 0xB660, 0xB661, 0xB662, 0xB663, 0xB665, 0xB666, - 0xB667, 0xB669, 0xB66A, 0xB66B, 0xB66C, 0xB66D, 0xB66E, 0xB66F, 0xB670, - 0xB671, 0xB672, 0xB673, 0xB674, 0xB675, 0xB676, 0xB677, 0xB678, 0xB679, - 0xB67A, 0xB67B, 0xB67C, 0xB67D, 0xB67E, 0xB67F, 0xB680, 0xB681, 0xB682, - 0xB683, 0xB684, 0xB685, 0xB686, 0xB687, 0xB688, 0xB689, 0xB68A, 0xB68B, - 0xB68C, 0xB68D, 0xB68E, 0xB68F, 0xB690, 0xB691, 0xB692, 0xB693, 0xB694, - 0xB695, 0xB696, 0xB697, 0xB698, 0xB699, 0xB69A, 0xB69B, 0xB69E, 0xB69F, - 0xB6A1, 0xB6A2, 0xB6A3, 0xB6A5, 0xB6A6, 0xB6A7, 0xB6A8, 0xB6A9, 0xB6AA, - 0xB6AD, 0xB6AE, 0xB6AF, 0xB6B0, 0xB6B2, 0xB6B3, 0xB6B4, 0xB6B5, 0xB6B6, - 0xB6B7, 0xB6B8, 0xB6B9, 0xB6BA, 0xB6BB, 0xB6BC, 0xB6BD, 0xB6BE, 0xB6BF, - 0xB6C0, 0xB6C1, 0xB6C2, 0xB6C3, 0xB6C4, 0xB6C5, 0xB6C6, 0xB6C7, 0xB6C8, - 0xB6C9, 0xB6CA, 0xB6CB, 0xB6CC, 0xB6CD, 0xB6CE, 0xB6CF, 0xB6D0, 0xB6D1, - 0xB6D2, 0xB6D3, 0xB6D5, 0xB6D6, 0xB6D7, 0xB6D8, 0xB6D9, 0xB6DA, 0xB6DB, - 0xB6DC, 0xB6DD, 0xB6DE, 0xB6DF, 0xB6E0, 0xB6E1, 0xB6E2, 0xB6E3, 0xB6E4, - 0xB6E5, 0xB6E6, 0xB6E7, 0xB6E8, 0xB6E9, 0xB6EA, 0xB6EB, 0xB6EC, 0xB6ED, - 0xB6EE, 0xB6EF, 0xB6F1, 0xB6F2, 0xB6F3, 0xB6F5, 0xB6F6, 0xB6F7, 0xB6F9, - 0xB6FA, 0xB6FB, 0xB6FC, 0xB6FD, 0xB6FE, 0xB6FF, 0xB702, 0xB703, 0xB704, - 0xB706, 0xB707, 0xB708, 0xB709, 0xB70A, 0xB70B, 0xB70C, 0xB70D, 0xB70E, - 0xB70F, 0xB710, 0xB711, 0xB712, 0xB713, 0xB714, 0xB715, 0xB716, 0xB717, - 0xB718, 0xB719, 0xB71A, 0xB71B, 0xB71C, 0xB71D, 0xB71E, 0xB71F, 0xB720, - 0xB721, 0xB722, 0xB723, 0xB724, 0xB725, 0xB726, 0xB727, 0xB72A, 0xB72B, - 0xB72D, 0xB72E, 0xB731, 0xB732, 0xB733, 0xB734, 0xB735, 0xB736, 0xB737, - 0xB73A, 0xB73C, 0xB73D, 0xB73E, 0xB73F, 0xB740, 0xB741, 0xB742, 0xB743, - 0xB745, 0xB746, 0xB747, 0xB749, 0xB74A, 0xB74B, 0xB74D, 0xB74E, 0xB74F, - 0xB750, 0xB751, 0xB752, 0xB753, 0xB756, 0xB757, 0xB758, 0xB759, 0xB75A, - 0xB75B, 0xB75C, 0xB75D, 0xB75E, 0xB75F, 0xB761, 0xB762, 0xB763, 0xB765, - 0xB766, 0xB767, 0xB769, 0xB76A, 0xB76B, 0xB76C, 0xB76D, 0xB76E, 0xB76F, - 0xB772, 0xB774, 0xB776, 0xB777, 0xB778, 0xB779, 0xB77A, 0xB77B, 0xB77E, - 0xB77F, 0xB781, 0xB782, 0xB783, 0xB785, 0xB786, 0xB787, 0xB788, 0xB789, - 0xB78A, 0xB78B, 0xB78E, 0xB793, 0xB794, 0xB795, 0xB79A, 0xB79B, 0xB79D, - 0xB79E, 0xB79F, 0xB7A1, 0xB7A2, 0xB7A3, 0xB7A4, 0xB7A5, 0xB7A6, 0xB7A7, - 0xB7AA, 0xB7AE, 0xB7AF, 0xB7B0, 0xB7B1, 0xB7B2, 0xB7B3, 0xB7B6, 0xB7B7, - 0xB7B9, 0xB7BA, 0xB7BB, 0xB7BC, 0xB7BD, 0xB7BE, 0xB7BF, 0xB7C0, 0xB7C1, - 0xB7C2, 0xB7C3, 0xB7C4, 0xB7C5, 0xB7C6, 0xB7C8, 0xB7CA, 0xB7CB, 0xB7CC, - 0xB7CD, 0xB7CE, 0xB7CF, 0xB7D0, 0xB7D1, 0xB7D2, 0xB7D3, 0xB7D4, 0xB7D5, - 0xB7D6, 0xB7D7, 0xB7D8, 0xB7D9, 0xB7DA, 0xB7DB, 0xB7DC, 0xB7DD, 0xB7DE, - 0xB7DF, 0xB7E0, 0xB7E1, 0xB7E2, 0xB7E3, 0xB7E4, 0xB7E5, 0xB7E6, 0xB7E7, - 0xB7E8, 0xB7E9, 0xB7EA, 0xB7EB, 0xB7EE, 0xB7EF, 0xB7F1, 0xB7F2, 0xB7F3, - 0xB7F5, 0xB7F6, 0xB7F7, 0xB7F8, 0xB7F9, 0xB7FA, 0xB7FB, 0xB7FE, 0xB802, - 0xB803, 0xB804, 0xB805, 0xB806, 0xB80A, 0xB80B, 0xB80D, 0xB80E, 0xB80F, - 0xB811, 0xB812, 0xB813, 0xB814, 0xB815, 0xB816, 0xB817, 0xB81A, 0xB81C, - 0xB81E, 0xB81F, 0xB820, 0xB821, 0xB822, 0xB823, 0xB826, 0xB827, 0xB829, - 0xB82A, 0xB82B, 0xB82D, 0xB82E, 0xB82F, 0xB830, 0xB831, 0xB832, 0xB833, - 0xB836, 0xB83A, 0xB83B, 0xB83C, 0xB83D, 0xB83E, 0xB83F, 0xB841, 0xB842, - 0xB843, 0xB845, 0xB846, 0xB847, 0xB848, 0xB849, 0xB84A, 0xB84B, 0xB84C, - 0xB84D, 0xB84E, 0xB84F, 0xB850, 0xB852, 0xB854, 0xB855, 0xB856, 0xB857, - 0xB858, 0xB859, 0xB85A, 0xB85B, 0xB85E, 0xB85F, 0xB861, 0xB862, 0xB863, - 0xB865, 0xB866, 0xB867, 0xB868, 0xB869, 0xB86A, 0xB86B, 0xB86E, 0xB870, - 0xB872, 0xB873, 0xB874, 0xB875, 0xB876, 0xB877, 0xB879, 0xB87A, 0xB87B, - 0xB87D, 0xB87E, 0xB87F, 0xB880, 0xB881, 0xB882, 0xB883, 0xB884, 0xB885, - 0xB886, 0xB887, 0xB888, 0xB889, 0xB88A, 0xB88B, 0xB88C, 0xB88E, 0xB88F, - 0xB890, 0xB891, 0xB892, 0xB893, 0xB894, 0xB895, 0xB896, 0xB897, 0xB898, - 0xB899, 0xB89A, 0xB89B, 0xB89C, 0xB89D, 0xB89E, 0xB89F, 0xB8A0, 0xB8A1, - 0xB8A2, 0xB8A3, 0xB8A4, 0xB8A5, 0xB8A6, 0xB8A7, 0xB8A9, 0xB8AA, 0xB8AB, - 0xB8AC, 0xB8AD, 0xB8AE, 0xB8AF, 0xB8B1, 0xB8B2, 0xB8B3, 0xB8B5, 0xB8B6, - 0xB8B7, 0xB8B9, 0xB8BA, 0xB8BB, 0xB8BC, 0xB8BD, 0xB8BE, 0xB8BF, 0xB8C2, - 0xB8C4, 0xB8C6, 0xB8C7, 0xB8C8, 0xB8C9, 0xB8CA, 0xB8CB, 0xB8CD, 0xB8CE, - 0xB8CF, 0xB8D1, 0xB8D2, 0xB8D3, 0xB8D5, 0xB8D6, 0xB8D7, 0xB8D8, 0xB8D9, - 0xB8DA, 0xB8DB, 0xB8DC, 0xB8DE, 0xB8E0, 0xB8E2, 0xB8E3, 0xB8E4, 0xB8E5, - 0xB8E6, 0xB8E7, 0xB8EA, 0xB8EB, 0xB8ED, 0xB8EE, 0xB8EF, 0xB8F1, 0xB8F2, - 0xB8F3, 0xB8F4, 0xB8F5, 0xB8F6, 0xB8F7, 0xB8FA, 0xB8FC, 0xB8FE, 0xB8FF, - 0xB900, 0xB901, 0xB902, 0xB903, 0xB905, 0xB906, 0xB907, 0xB908, 0xB909, - 0xB90A, 0xB90B, 0xB90C, 0xB90D, 0xB90E, 0xB90F, 0xB910, 0xB911, 0xB912, - 0xB913, 0xB914, 0xB915, 0xB916, 0xB917, 0xB919, 0xB91A, 0xB91B, 0xB91C, - 0xB91D, 0xB91E, 0xB91F, 0xB921, 0xB922, 0xB923, 0xB924, 0xB925, 0xB926, - 0xB927, 0xB928, 0xB929, 0xB92A, 0xB92B, 0xB92C, 0xB92D, 0xB92E, 0xB92F, - 0xB930, 0xB931, 0xB932, 0xB933, 0xB934, 0xB935, 0xB936, 0xB937, 0xB938, - 0xB939, 0xB93A, 0xB93B, 0xB93E, 0xB93F, 0xB941, 0xB942, 0xB943, 0xB945, - 0xB946, 0xB947, 0xB948, 0xB949, 0xB94A, 0xB94B, 0xB94D, 0xB94E, 0xB950, - 0xB952, 0xB953, 0xB954, 0xB955, 0xB956, 0xB957, 0xB95A, 0xB95B, 0xB95D, - 0xB95E, 0xB95F, 0xB961, 0xB962, 0xB963, 0xB964, 0xB965, 0xB966, 0xB967, - 0xB96A, 0xB96C, 0xB96E, 0xB96F, 0xB970, 0xB971, 0xB972, 0xB973, 0xB976, - 0xB977, 0xB979, 0xB97A, 0xB97B, 0xB97D, 0xB97E, 0xB97F, 0xB980, 0xB981, - 0xB982, 0xB983, 0xB986, 0xB988, 0xB98B, 0xB98C, 0xB98F, 0xB990, 0xB991, - 0xB992, 0xB993, 0xB994, 0xB995, 0xB996, 0xB997, 0xB998, 0xB999, 0xB99A, - 0xB99B, 0xB99C, 0xB99D, 0xB99E, 0xB99F, 0xB9A0, 0xB9A1, 0xB9A2, 0xB9A3, - 0xB9A4, 0xB9A5, 0xB9A6, 0xB9A7, 0xB9A8, 0xB9A9, 0xB9AA, 0xB9AB, 0xB9AE, - 0xB9AF, 0xB9B1, 0xB9B2, 0xB9B3, 0xB9B5, 0xB9B6, 0xB9B7, 0xB9B8, 0xB9B9, - 0xB9BA, 0xB9BB, 0xB9BE, 0xB9C0, 0xB9C2, 0xB9C3, 0xB9C4, 0xB9C5, 0xB9C6, - 0xB9C7, 0xB9CA, 0xB9CB, 0xB9CD, 0xB9D3, 0xB9D4, 0xB9D5, 0xB9D6, 0xB9D7, - 0xB9DA, 0xB9DC, 0xB9DF, 0xB9E0, 0xB9E2, 0xB9E6, 0xB9E7, 0xB9E9, 0xB9EA, - 0xB9EB, 0xB9ED, 0xB9EE, 0xB9EF, 0xB9F0, 0xB9F1, 0xB9F2, 0xB9F3, 0xB9F6, - 0xB9FB, 0xB9FC, 0xB9FD, 0xB9FE, 0xB9FF, 0xBA02, 0xBA03, 0xBA04, 0xBA05, - 0xBA06, 0xBA07, 0xBA09, 0xBA0A, 0xBA0B, 0xBA0C, 0xBA0D, 0xBA0E, 0xBA0F, - 0xBA10, 0xBA11, 0xBA12, 0xBA13, 0xBA14, 0xBA16, 0xBA17, 0xBA18, 0xBA19, - 0xBA1A, 0xBA1B, 0xBA1C, 0xBA1D, 0xBA1E, 0xBA1F, 0xBA20, 0xBA21, 0xBA22, - 0xBA23, 0xBA24, 0xBA25, 0xBA26, 0xBA27, 0xBA28, 0xBA29, 0xBA2A, 0xBA2B, - 0xBA2C, 0xBA2D, 0xBA2E, 0xBA2F, 0xBA30, 0xBA31, 0xBA32, 0xBA33, 0xBA34, - 0xBA35, 0xBA36, 0xBA37, 0xBA3A, 0xBA3B, 0xBA3D, 0xBA3E, 0xBA3F, 0xBA41, - 0xBA43, 0xBA44, 0xBA45, 0xBA46, 0xBA47, 0xBA4A, 0xBA4C, 0xBA4F, 0xBA50, - 0xBA51, 0xBA52, 0xBA56, 0xBA57, 0xBA59, 0xBA5A, 0xBA5B, 0xBA5D, 0xBA5E, - 0xBA5F, 0xBA60, 0xBA61, 0xBA62, 0xBA63, 0xBA66, 0xBA6A, 0xBA6B, 0xBA6C, - 0xBA6D, 0xBA6E, 0xBA6F, 0xBA72, 0xBA73, 0xBA75, 0xBA76, 0xBA77, 0xBA79, - 0xBA7A, 0xBA7B, 0xBA7C, 0xBA7D, 0xBA7E, 0xBA7F, 0xBA80, 0xBA81, 0xBA82, - 0xBA86, 0xBA88, 0xBA89, 0xBA8A, 0xBA8B, 0xBA8D, 0xBA8E, 0xBA8F, 0xBA90, - 0xBA91, 0xBA92, 0xBA93, 0xBA94, 0xBA95, 0xBA96, 0xBA97, 0xBA98, 0xBA99, - 0xBA9A, 0xBA9B, 0xBA9C, 0xBA9D, 0xBA9E, 0xBA9F, 0xBAA0, 0xBAA1, 0xBAA2, - 0xBAA3, 0xBAA4, 0xBAA5, 0xBAA6, 0xBAA7, 0xBAAA, 0xBAAD, 0xBAAE, 0xBAAF, - 0xBAB1, 0xBAB3, 0xBAB4, 0xBAB5, 0xBAB6, 0xBAB7, 0xBABA, 0xBABC, 0xBABE, - 0xBABF, 0xBAC0, 0xBAC1, 0xBAC2, 0xBAC3, 0xBAC5, 0xBAC6, 0xBAC7, 0xBAC9, - 0xBACA, 0xBACB, 0xBACC, 0xBACD, 0xBACE, 0xBACF, 0xBAD0, 0xBAD1, 0xBAD2, - 0xBAD3, 0xBAD4, 0xBAD5, 0xBAD6, 0xBAD7, 0xBADA, 0xBADB, 0xBADC, 0xBADD, - 0xBADE, 0xBADF, 0xBAE0, 0xBAE1, 0xBAE2, 0xBAE3, 0xBAE4, 0xBAE5, 0xBAE6, - 0xBAE7, 0xBAE8, 0xBAE9, 0xBAEA, 0xBAEB, 0xBAEC, 0xBAED, 0xBAEE, 0xBAEF, - 0xBAF0, 0xBAF1, 0xBAF2, 0xBAF3, 0xBAF4, 0xBAF5, 0xBAF6, 0xBAF7, 0xBAF8, - 0xBAF9, 0xBAFA, 0xBAFB, 0xBAFD, 0xBAFE, 0xBAFF, 0xBB01, 0xBB02, 0xBB03, - 0xBB05, 0xBB06, 0xBB07, 0xBB08, 0xBB09, 0xBB0A, 0xBB0B, 0xBB0C, 0xBB0E, - 0xBB10, 0xBB12, 0xBB13, 0xBB14, 0xBB15, 0xBB16, 0xBB17, 0xBB19, 0xBB1A, - 0xBB1B, 0xBB1D, 0xBB1E, 0xBB1F, 0xBB21, 0xBB22, 0xBB23, 0xBB24, 0xBB25, - 0xBB26, 0xBB27, 0xBB28, 0xBB2A, 0xBB2C, 0xBB2D, 0xBB2E, 0xBB2F, 0xBB30, - 0xBB31, 0xBB32, 0xBB33, 0xBB37, 0xBB39, 0xBB3A, 0xBB3F, 0xBB40, 0xBB41, - 0xBB42, 0xBB43, 0xBB46, 0xBB48, 0xBB4A, 0xBB4B, 0xBB4C, 0xBB4E, 0xBB51, - 0xBB52, 0xBB53, 0xBB55, 0xBB56, 0xBB57, 0xBB59, 0xBB5A, 0xBB5B, 0xBB5C, - 0xBB5D, 0xBB5E, 0xBB5F, 0xBB60, 0xBB62, 0xBB64, 0xBB65, 0xBB66, 0xBB67, - 0xBB68, 0xBB69, 0xBB6A, 0xBB6B, 0xBB6D, 0xBB6E, 0xBB6F, 0xBB70, 0xBB71, - 0xBB72, 0xBB73, 0xBB74, 0xBB75, 0xBB76, 0xBB77, 0xBB78, 0xBB79, 0xBB7A, - 0xBB7B, 0xBB7C, 0xBB7D, 0xBB7E, 0xBB7F, 0xBB80, 0xBB81, 0xBB82, 0xBB83, - 0xBB84, 0xBB85, 0xBB86, 0xBB87, 0xBB89, 0xBB8A, 0xBB8B, 0xBB8D, 0xBB8E, - 0xBB8F, 0xBB91, 0xBB92, 0xBB93, 0xBB94, 0xBB95, 0xBB96, 0xBB97, 0xBB98, - 0xBB99, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D, 0xBB9E, 0xBB9F, 0xBBA0, 0xBBA1, - 0xBBA2, 0xBBA3, 0xBBA5, 0xBBA6, 0xBBA7, 0xBBA9, 0xBBAA, 0xBBAB, 0xBBAD, - 0xBBAE, 0xBBAF, 0xBBB0, 0xBBB1, 0xBBB2, 0xBBB3, 0xBBB5, 0xBBB6, 0xBBB8, - 0xBBB9, 0xBBBA, 0xBBBB, 0xBBBC, 0xBBBD, 0xBBBE, 0xBBBF, 0xBBC1, 0xBBC2, - 0xBBC3, 0xBBC5, 0xBBC6, 0xBBC7, 0xBBC9, 0xBBCA, 0xBBCB, 0xBBCC, 0xBBCD, - 0xBBCE, 0xBBCF, 0xBBD1, 0xBBD2, 0xBBD4, 0xBBD5, 0xBBD6, 0xBBD7, 0xBBD8, - 0xBBD9, 0xBBDA, 0xBBDB, 0xBBDC, 0xBBDD, 0xBBDE, 0xBBDF, 0xBBE0, 0xBBE1, - 0xBBE2, 0xBBE3, 0xBBE4, 0xBBE5, 0xBBE6, 0xBBE7, 0xBBE8, 0xBBE9, 0xBBEA, - 0xBBEB, 0xBBEC, 0xBBED, 0xBBEE, 0xBBEF, 0xBBF0, 0xBBF1, 0xBBF2, 0xBBF3, - 0xBBF4, 0xBBF5, 0xBBF6, 0xBBF7, 0xBBFA, 0xBBFB, 0xBBFD, 0xBBFE, 0xBC01, - 0xBC03, 0xBC04, 0xBC05, 0xBC06, 0xBC07, 0xBC0A, 0xBC0E, 0xBC10, 0xBC12, - 0xBC13, 0xBC19, 0xBC1A, 0xBC20, 0xBC21, 0xBC22, 0xBC23, 0xBC26, 0xBC28, - 0xBC2A, 0xBC2B, 0xBC2C, 0xBC2E, 0xBC2F, 0xBC32, 0xBC33, 0xBC35, 0xBC36, - 0xBC37, 0xBC39, 0xBC3A, 0xBC3B, 0xBC3C, 0xBC3D, 0xBC3E, 0xBC3F, 0xBC42, - 0xBC46, 0xBC47, 0xBC48, 0xBC4A, 0xBC4B, 0xBC4E, 0xBC4F, 0xBC51, 0xBC52, - 0xBC53, 0xBC54, 0xBC55, 0xBC56, 0xBC57, 0xBC58, 0xBC59, 0xBC5A, 0xBC5B, - 0xBC5C, 0xBC5E, 0xBC5F, 0xBC60, 0xBC61, 0xBC62, 0xBC63, 0xBC64, 0xBC65, - 0xBC66, 0xBC67, 0xBC68, 0xBC69, 0xBC6A, 0xBC6B, 0xBC6C, 0xBC6D, 0xBC6E, - 0xBC6F, 0xBC70, 0xBC71, 0xBC72, 0xBC73, 0xBC74, 0xBC75, 0xBC76, 0xBC77, - 0xBC78, 0xBC79, 0xBC7A, 0xBC7B, 0xBC7C, 0xBC7D, 0xBC7E, 0xBC7F, 0xBC80, - 0xBC81, 0xBC82, 0xBC83, 0xBC86, 0xBC87, 0xBC89, 0xBC8A, 0xBC8D, 0xBC8F, - 0xBC90, 0xBC91, 0xBC92, 0xBC93, 0xBC96, 0xBC98, 0xBC9B, 0xBC9C, 0xBC9D, - 0xBC9E, 0xBC9F, 0xBCA2, 0xBCA3, 0xBCA5, 0xBCA6, 0xBCA9, 0xBCAA, 0xBCAB, - 0xBCAC, 0xBCAD, 0xBCAE, 0xBCAF, 0xBCB2, 0xBCB6, 0xBCB7, 0xBCB8, 0xBCB9, - 0xBCBA, 0xBCBB, 0xBCBE, 0xBCBF, 0xBCC1, 0xBCC2, 0xBCC3, 0xBCC5, 0xBCC6, - 0xBCC7, 0xBCC8, 0xBCC9, 0xBCCA, 0xBCCB, 0xBCCC, 0xBCCE, 0xBCD2, 0xBCD3, - 0xBCD4, 0xBCD6, 0xBCD7, 0xBCD9, 0xBCDA, 0xBCDB, 0xBCDD, 0xBCDE, 0xBCDF, - 0xBCE0, 0xBCE1, 0xBCE2, 0xBCE3, 0xBCE4, 0xBCE5, 0xBCE6, 0xBCE7, 0xBCE8, - 0xBCE9, 0xBCEA, 0xBCEB, 0xBCEC, 0xBCED, 0xBCEE, 0xBCEF, 0xBCF0, 0xBCF1, - 0xBCF2, 0xBCF3, 0xBCF7, 0xBCF9, 0xBCFA, 0xBCFB, 0xBCFD, 0xBCFE, 0xBCFF, - 0xBD00, 0xBD01, 0xBD02, 0xBD03, 0xBD06, 0xBD08, 0xBD0A, 0xBD0B, 0xBD0C, - 0xBD0D, 0xBD0E, 0xBD0F, 0xBD11, 0xBD12, 0xBD13, 0xBD15, 0xBD16, 0xBD17, - 0xBD18, 0xBD19, 0xBD1A, 0xBD1B, 0xBD1C, 0xBD1D, 0xBD1E, 0xBD1F, 0xBD20, - 0xBD21, 0xBD22, 0xBD23, 0xBD25, 0xBD26, 0xBD27, 0xBD28, 0xBD29, 0xBD2A, - 0xBD2B, 0xBD2D, 0xBD2E, 0xBD2F, 0xBD30, 0xBD31, 0xBD32, 0xBD33, 0xBD34, - 0xBD35, 0xBD36, 0xBD37, 0xBD38, 0xBD39, 0xBD3A, 0xBD3B, 0xBD3C, 0xBD3D, - 0xBD3E, 0xBD3F, 0xBD41, 0xBD42, 0xBD43, 0xBD44, 0xBD45, 0xBD46, 0xBD47, - 0xBD4A, 0xBD4B, 0xBD4D, 0xBD4E, 0xBD4F, 0xBD51, 0xBD52, 0xBD53, 0xBD54, - 0xBD55, 0xBD56, 0xBD57, 0xBD5A, 0xBD5B, 0xBD5C, 0xBD5D, 0xBD5E, 0xBD5F, - 0xBD60, 0xBD61, 0xBD62, 0xBD63, 0xBD65, 0xBD66, 0xBD67, 0xBD69, 0xBD6A, - 0xBD6B, 0xBD6C, 0xBD6D, 0xBD6E, 0xBD6F, 0xBD70, 0xBD71, 0xBD72, 0xBD73, - 0xBD74, 0xBD75, 0xBD76, 0xBD77, 0xBD78, 0xBD79, 0xBD7A, 0xBD7B, 0xBD7C, - 0xBD7D, 0xBD7E, 0xBD7F, 0xBD82, 0xBD83, 0xBD85, 0xBD86, 0xBD8B, 0xBD8C, - 0xBD8D, 0xBD8E, 0xBD8F, 0xBD92, 0xBD94, 0xBD96, 0xBD97, 0xBD98, 0xBD9B, - 0xBD9D, 0xBD9E, 0xBD9F, 0xBDA0, 0xBDA1, 0xBDA2, 0xBDA3, 0xBDA5, 0xBDA6, - 0xBDA7, 0xBDA8, 0xBDA9, 0xBDAA, 0xBDAB, 0xBDAC, 0xBDAD, 0xBDAE, 0xBDAF, - 0xBDB1, 0xBDB2, 0xBDB3, 0xBDB4, 0xBDB5, 0xBDB6, 0xBDB7, 0xBDB9, 0xBDBA, - 0xBDBB, 0xBDBC, 0xBDBD, 0xBDBE, 0xBDBF, 0xBDC0, 0xBDC1, 0xBDC2, 0xBDC3, - 0xBDC4, 0xBDC5, 0xBDC6, 0xBDC7, 0xBDC8, 0xBDC9, 0xBDCA, 0xBDCB, 0xBDCC, - 0xBDCD, 0xBDCE, 0xBDCF, 0xBDD0, 0xBDD1, 0xBDD2, 0xBDD3, 0xBDD6, 0xBDD7, - 0xBDD9, 0xBDDA, 0xBDDB, 0xBDDD, 0xBDDE, 0xBDDF, 0xBDE0, 0xBDE1, 0xBDE2, - 0xBDE3, 0xBDE4, 0xBDE5, 0xBDE6, 0xBDE7, 0xBDE8, 0xBDEA, 0xBDEB, 0xBDEC, - 0xBDED, 0xBDEE, 0xBDEF, 0xBDF1, 0xBDF2, 0xBDF3, 0xBDF5, 0xBDF6, 0xBDF7, - 0xBDF9, 0xBDFA, 0xBDFB, 0xBDFC, 0xBDFD, 0xBDFE, 0xBDFF, 0xBE01, 0xBE02, - 0xBE04, 0xBE06, 0xBE07, 0xBE08, 0xBE09, 0xBE0A, 0xBE0B, 0xBE0E, 0xBE0F, - 0xBE11, 0xBE12, 0xBE13, 0xBE15, 0xBE16, 0xBE17, 0xBE18, 0xBE19, 0xBE1A, - 0xBE1B, 0xBE1E, 0xBE20, 0xBE21, 0xBE22, 0xBE23, 0xBE24, 0xBE25, 0xBE26, - 0xBE27, 0xBE28, 0xBE29, 0xBE2A, 0xBE2B, 0xBE2C, 0xBE2D, 0xBE2E, 0xBE2F, - 0xBE30, 0xBE31, 0xBE32, 0xBE33, 0xBE34, 0xBE35, 0xBE36, 0xBE37, 0xBE38, - 0xBE39, 0xBE3A, 0xBE3B, 0xBE3C, 0xBE3D, 0xBE3E, 0xBE3F, 0xBE40, 0xBE41, - 0xBE42, 0xBE43, 0xBE46, 0xBE47, 0xBE49, 0xBE4A, 0xBE4B, 0xBE4D, 0xBE4F, - 0xBE50, 0xBE51, 0xBE52, 0xBE53, 0xBE56, 0xBE58, 0xBE5C, 0xBE5D, 0xBE5E, - 0xBE5F, 0xBE62, 0xBE63, 0xBE65, 0xBE66, 0xBE67, 0xBE69, 0xBE6B, 0xBE6C, - 0xBE6D, 0xBE6E, 0xBE6F, 0xBE72, 0xBE76, 0xBE77, 0xBE78, 0xBE79, 0xBE7A, - 0xBE7E, 0xBE7F, 0xBE81, 0xBE82, 0xBE83, 0xBE85, 0xBE86, 0xBE87, 0xBE88, - 0xBE89, 0xBE8A, 0xBE8B, 0xBE8E, 0xBE92, 0xBE93, 0xBE94, 0xBE95, 0xBE96, - 0xBE97, 0xBE9A, 0xBE9B, 0xBE9C, 0xBE9D, 0xBE9E, 0xBE9F, 0xBEA0, 0xBEA1, - 0xBEA2, 0xBEA3, 0xBEA4, 0xBEA5, 0xBEA6, 0xBEA7, 0xBEA9, 0xBEAA, 0xBEAB, - 0xBEAC, 0xBEAD, 0xBEAE, 0xBEAF, 0xBEB0, 0xBEB1, 0xBEB2, 0xBEB3, 0xBEB4, - 0xBEB5, 0xBEB6, 0xBEB7, 0xBEB8, 0xBEB9, 0xBEBA, 0xBEBB, 0xBEBC, 0xBEBD, - 0xBEBE, 0xBEBF, 0xBEC0, 0xBEC1, 0xBEC2, 0xBEC3, 0xBEC4, 0xBEC5, 0xBEC6, - 0xBEC7, 0xBEC8, 0xBEC9, 0xBECA, 0xBECB, 0xBECC, 0xBECD, 0xBECE, 0xBECF, - 0xBED2, 0xBED3, 0xBED5, 0xBED6, 0xBED9, 0xBEDA, 0xBEDB, 0xBEDC, 0xBEDD, - 0xBEDE, 0xBEDF, 0xBEE1, 0xBEE2, 0xBEE6, 0xBEE7, 0xBEE8, 0xBEE9, 0xBEEA, - 0xBEEB, 0xBEED, 0xBEEE, 0xBEEF, 0xBEF0, 0xBEF1, 0xBEF2, 0xBEF3, 0xBEF4, - 0xBEF5, 0xBEF6, 0xBEF7, 0xBEF8, 0xBEF9, 0xBEFA, 0xBEFB, 0xBEFC, 0xBEFD, - 0xBEFE, 0xBEFF, 0xBF00, 0xBF02, 0xBF03, 0xBF04, 0xBF05, 0xBF06, 0xBF07, - 0xBF0A, 0xBF0B, 0xBF0C, 0xBF0D, 0xBF0E, 0xBF0F, 0xBF10, 0xBF11, 0xBF12, - 0xBF13, 0xBF14, 0xBF15, 0xBF16, 0xBF17, 0xBF1A, 0xBF1E, 0xBF1F, 0xBF20, - 0xBF21, 0xBF22, 0xBF23, 0xBF24, 0xBF25, 0xBF26, 0xBF27, 0xBF28, 0xBF29, - 0xBF2A, 0xBF2B, 0xBF2C, 0xBF2D, 0xBF2E, 0xBF2F, 0xBF30, 0xBF31, 0xBF32, - 0xBF33, 0xBF34, 0xBF35, 0xBF36, 0xBF37, 0xBF38, 0xBF39, 0xBF3A, 0xBF3B, - 0xBF3C, 0xBF3D, 0xBF3E, 0xBF3F, 0xBF42, 0xBF43, 0xBF45, 0xBF46, 0xBF47, - 0xBF49, 0xBF4A, 0xBF4B, 0xBF4C, 0xBF4D, 0xBF4E, 0xBF4F, 0xBF52, 0xBF53, - 0xBF54, 0xBF56, 0xBF57, 0xBF58, 0xBF59, 0xBF5A, 0xBF5B, 0xBF5C, 0xBF5D, - 0xBF5E, 0xBF5F, 0xBF60, 0xBF61, 0xBF62, 0xBF63, 0xBF64, 0xBF65, 0xBF66, - 0xBF67, 0xBF68, 0xBF69, 0xBF6A, 0xBF6B, 0xBF6C, 0xBF6D, 0xBF6E, 0xBF6F, - 0xBF70, 0xBF71, 0xBF72, 0xBF73, 0xBF74, 0xBF75, 0xBF76, 0xBF77, 0xBF78, - 0xBF79, 0xBF7A, 0xBF7B, 0xBF7C, 0xBF7D, 0xBF7E, 0xBF7F, 0xBF80, 0xBF81, - 0xBF82, 0xBF83, 0xBF84, 0xBF85, 0xBF86, 0xBF87, 0xBF88, 0xBF89, 0xBF8A, - 0xBF8B, 0xBF8C, 0xBF8D, 0xBF8E, 0xBF8F, 0xBF90, 0xBF91, 0xBF92, 0xBF93, - 0xBF95, 0xBF96, 0xBF97, 0xBF98, 0xBF99, 0xBF9A, 0xBF9B, 0xBF9C, 0xBF9D, - 0xBF9E, 0xBF9F, 0xBFA0, 0xBFA1, 0xBFA2, 0xBFA3, 0xBFA4, 0xBFA5, 0xBFA6, - 0xBFA7, 0xBFA8, 0xBFA9, 0xBFAA, 0xBFAB, 0xBFAC, 0xBFAD, 0xBFAE, 0xBFAF, - 0xBFB1, 0xBFB2, 0xBFB3, 0xBFB4, 0xBFB5, 0xBFB6, 0xBFB7, 0xBFB8, 0xBFB9, - 0xBFBA, 0xBFBB, 0xBFBC, 0xBFBD, 0xBFBE, 0xBFBF, 0xBFC0, 0xBFC1, 0xBFC2, - 0xBFC3, 0xBFC4, 0xBFC6, 0xBFC7, 0xBFC8, 0xBFC9, 0xBFCA, 0xBFCB, 0xBFCE, - 0xBFCF, 0xBFD1, 0xBFD2, 0xBFD3, 0xBFD5, 0xBFD6, 0xBFD7, 0xBFD8, 0xBFD9, - 0xBFDA, 0xBFDB, 0xBFDD, 0xBFDE, 0xBFE0, 0xBFE2, 0xBFE3, 0xBFE4, 0xBFE5, - 0xBFE6, 0xBFE7, 0xBFE8, 0xBFE9, 0xBFEA, 0xBFEB, 0xBFEC, 0xBFED, 0xBFEE, - 0xBFEF, 0xBFF0, 0xBFF1, 0xBFF2, 0xBFF3, 0xBFF4, 0xBFF5, 0xBFF6, 0xBFF7, - 0xBFF8, 0xBFF9, 0xBFFA, 0xBFFB, 0xBFFC, 0xBFFD, 0xBFFE, 0xBFFF, 0xC000, - 0xC001, 0xC002, 0xC003, 0xC004, 0xC005, 0xC006, 0xC007, 0xC008, 0xC009, - 0xC00A, 0xC00B, 0xC00C, 0xC00D, 0xC00E, 0xC00F, 0xC010, 0xC011, 0xC012, - 0xC013, 0xC014, 0xC015, 0xC016, 0xC017, 0xC018, 0xC019, 0xC01A, 0xC01B, - 0xC01C, 0xC01D, 0xC01E, 0xC01F, 0xC020, 0xC021, 0xC022, 0xC023, 0xC024, - 0xC025, 0xC026, 0xC027, 0xC028, 0xC029, 0xC02A, 0xC02B, 0xC02C, 0xC02D, - 0xC02E, 0xC02F, 0xC030, 0xC031, 0xC032, 0xC033, 0xC034, 0xC035, 0xC036, - 0xC037, 0xC038, 0xC039, 0xC03A, 0xC03B, 0xC03D, 0xC03E, 0xC03F, 0xC040, - 0xC041, 0xC042, 0xC043, 0xC044, 0xC045, 0xC046, 0xC047, 0xC048, 0xC049, - 0xC04A, 0xC04B, 0xC04C, 0xC04D, 0xC04E, 0xC04F, 0xC050, 0xC052, 0xC053, - 0xC054, 0xC055, 0xC056, 0xC057, 0xC059, 0xC05A, 0xC05B, 0xC05D, 0xC05E, - 0xC05F, 0xC061, 0xC062, 0xC063, 0xC064, 0xC065, 0xC066, 0xC067, 0xC06A, - 0xC06B, 0xC06C, 0xC06D, 0xC06E, 0xC06F, 0xC070, 0xC071, 0xC072, 0xC073, - 0xC074, 0xC075, 0xC076, 0xC077, 0xC078, 0xC079, 0xC07A, 0xC07B, 0xC07C, - 0xC07D, 0xC07E, 0xC07F, 0xC080, 0xC081, 0xC082, 0xC083, 0xC084, 0xC085, - 0xC086, 0xC087, 0xC088, 0xC089, 0xC08A, 0xC08B, 0xC08C, 0xC08D, 0xC08E, - 0xC08F, 0xC092, 0xC093, 0xC095, 0xC096, 0xC097, 0xC099, 0xC09A, 0xC09B, - 0xC09C, 0xC09D, 0xC09E, 0xC09F, 0xC0A2, 0xC0A4, 0xC0A6, 0xC0A7, 0xC0A8, - 0xC0A9, 0xC0AA, 0xC0AB, 0xC0AE, 0xC0B1, 0xC0B2, 0xC0B7, 0xC0B8, 0xC0B9, - 0xC0BA, 0xC0BB, 0xC0BE, 0xC0C2, 0xC0C3, 0xC0C4, 0xC0C6, 0xC0C7, 0xC0CA, - 0xC0CB, 0xC0CD, 0xC0CE, 0xC0CF, 0xC0D1, 0xC0D2, 0xC0D3, 0xC0D4, 0xC0D5, - 0xC0D6, 0xC0D7, 0xC0DA, 0xC0DE, 0xC0DF, 0xC0E0, 0xC0E1, 0xC0E2, 0xC0E3, - 0xC0E6, 0xC0E7, 0xC0E9, 0xC0EA, 0xC0EB, 0xC0ED, 0xC0EE, 0xC0EF, 0xC0F0, - 0xC0F1, 0xC0F2, 0xC0F3, 0xC0F6, 0xC0F8, 0xC0FA, 0xC0FB, 0xC0FC, 0xC0FD, - 0xC0FE, 0xC0FF, 0xC101, 0xC102, 0xC103, 0xC105, 0xC106, 0xC107, 0xC109, - 0xC10A, 0xC10B, 0xC10C, 0xC10D, 0xC10E, 0xC10F, 0xC111, 0xC112, 0xC113, - 0xC114, 0xC116, 0xC117, 0xC118, 0xC119, 0xC11A, 0xC11B, 0xC121, 0xC122, - 0xC125, 0xC128, 0xC129, 0xC12A, 0xC12B, 0xC12E, 0xC132, 0xC133, 0xC134, - 0xC135, 0xC137, 0xC13A, 0xC13B, 0xC13D, 0xC13E, 0xC13F, 0xC141, 0xC142, - 0xC143, 0xC144, 0xC145, 0xC146, 0xC147, 0xC14A, 0xC14E, 0xC14F, 0xC150, - 0xC151, 0xC152, 0xC153, 0xC156, 0xC157, 0xC159, 0xC15A, 0xC15B, 0xC15D, - 0xC15E, 0xC15F, 0xC160, 0xC161, 0xC162, 0xC163, 0xC166, 0xC16A, 0xC16B, - 0xC16C, 0xC16D, 0xC16E, 0xC16F, 0xC171, 0xC172, 0xC173, 0xC175, 0xC176, - 0xC177, 0xC179, 0xC17A, 0xC17B, 0xC17C, 0xC17D, 0xC17E, 0xC17F, 0xC180, - 0xC181, 0xC182, 0xC183, 0xC184, 0xC186, 0xC187, 0xC188, 0xC189, 0xC18A, - 0xC18B, 0xC18F, 0xC191, 0xC192, 0xC193, 0xC195, 0xC197, 0xC198, 0xC199, - 0xC19A, 0xC19B, 0xC19E, 0xC1A0, 0xC1A2, 0xC1A3, 0xC1A4, 0xC1A6, 0xC1A7, - 0xC1AA, 0xC1AB, 0xC1AD, 0xC1AE, 0xC1AF, 0xC1B1, 0xC1B2, 0xC1B3, 0xC1B4, - 0xC1B5, 0xC1B6, 0xC1B7, 0xC1B8, 0xC1B9, 0xC1BA, 0xC1BB, 0xC1BC, 0xC1BE, - 0xC1BF, 0xC1C0, 0xC1C1, 0xC1C2, 0xC1C3, 0xC1C5, 0xC1C6, 0xC1C7, 0xC1C9, - 0xC1CA, 0xC1CB, 0xC1CD, 0xC1CE, 0xC1CF, 0xC1D0, 0xC1D1, 0xC1D2, 0xC1D3, - 0xC1D5, 0xC1D6, 0xC1D9, 0xC1DA, 0xC1DB, 0xC1DC, 0xC1DD, 0xC1DE, 0xC1DF, - 0xC1E1, 0xC1E2, 0xC1E3, 0xC1E5, 0xC1E6, 0xC1E7, 0xC1E9, 0xC1EA, 0xC1EB, - 0xC1EC, 0xC1ED, 0xC1EE, 0xC1EF, 0xC1F2, 0xC1F4, 0xC1F5, 0xC1F6, 0xC1F7, - 0xC1F8, 0xC1F9, 0xC1FA, 0xC1FB, 0xC1FE, 0xC1FF, 0xC201, 0xC202, 0xC203, - 0xC205, 0xC206, 0xC207, 0xC208, 0xC209, 0xC20A, 0xC20B, 0xC20E, 0xC210, - 0xC212, 0xC213, 0xC214, 0xC215, 0xC216, 0xC217, 0xC21A, 0xC21B, 0xC21D, - 0xC21E, 0xC221, 0xC222, 0xC223, 0xC224, 0xC225, 0xC226, 0xC227, 0xC22A, - 0xC22C, 0xC22E, 0xC230, 0xC233, 0xC235, 0xC236, 0xC237, 0xC238, 0xC239, - 0xC23A, 0xC23B, 0xC23C, 0xC23D, 0xC23E, 0xC23F, 0xC240, 0xC241, 0xC242, - 0xC243, 0xC244, 0xC245, 0xC246, 0xC247, 0xC249, 0xC24A, 0xC24B, 0xC24C, - 0xC24D, 0xC24E, 0xC24F, 0xC252, 0xC253, 0xC255, 0xC256, 0xC257, 0xC259, - 0xC25A, 0xC25B, 0xC25C, 0xC25D, 0xC25E, 0xC25F, 0xC261, 0xC262, 0xC263, - 0xC264, 0xC266, 0xC267, 0xC268, 0xC269, 0xC26A, 0xC26B, 0xC26E, 0xC26F, - 0xC271, 0xC272, 0xC273, 0xC275, 0xC276, 0xC277, 0xC278, 0xC279, 0xC27A, - 0xC27B, 0xC27E, 0xC280, 0xC282, 0xC283, 0xC284, 0xC285, 0xC286, 0xC287, - 0xC28A, 0xC28B, 0xC28C, 0xC28D, 0xC28E, 0xC28F, 0xC291, 0xC292, 0xC293, - 0xC294, 0xC295, 0xC296, 0xC297, 0xC299, 0xC29A, 0xC29C, 0xC29E, 0xC29F, - 0xC2A0, 0xC2A1, 0xC2A2, 0xC2A3, 0xC2A6, 0xC2A7, 0xC2A9, 0xC2AA, 0xC2AB, - 0xC2AE, 0xC2AF, 0xC2B0, 0xC2B1, 0xC2B2, 0xC2B3, 0xC2B6, 0xC2B8, 0xC2BA, - 0xC2BB, 0xC2BC, 0xC2BD, 0xC2BE, 0xC2BF, 0xC2C0, 0xC2C1, 0xC2C2, 0xC2C3, - 0xC2C4, 0xC2C5, 0xC2C6, 0xC2C7, 0xC2C8, 0xC2C9, 0xC2CA, 0xC2CB, 0xC2CC, - 0xC2CD, 0xC2CE, 0xC2CF, 0xC2D0, 0xC2D1, 0xC2D2, 0xC2D3, 0xC2D4, 0xC2D5, - 0xC2D6, 0xC2D7, 0xC2D8, 0xC2D9, 0xC2DA, 0xC2DB, 0xC2DE, 0xC2DF, 0xC2E1, - 0xC2E2, 0xC2E5, 0xC2E6, 0xC2E7, 0xC2E8, 0xC2E9, 0xC2EA, 0xC2EE, 0xC2F0, - 0xC2F2, 0xC2F3, 0xC2F4, 0xC2F5, 0xC2F7, 0xC2FA, 0xC2FD, 0xC2FE, 0xC2FF, - 0xC301, 0xC302, 0xC303, 0xC304, 0xC305, 0xC306, 0xC307, 0xC30A, 0xC30B, - 0xC30E, 0xC30F, 0xC310, 0xC311, 0xC312, 0xC316, 0xC317, 0xC319, 0xC31A, - 0xC31B, 0xC31D, 0xC31E, 0xC31F, 0xC320, 0xC321, 0xC322, 0xC323, 0xC326, - 0xC327, 0xC32A, 0xC32B, 0xC32C, 0xC32D, 0xC32E, 0xC32F, 0xC330, 0xC331, - 0xC332, 0xC333, 0xC334, 0xC335, 0xC336, 0xC337, 0xC338, 0xC339, 0xC33A, - 0xC33B, 0xC33C, 0xC33D, 0xC33E, 0xC33F, 0xC340, 0xC341, 0xC342, 0xC343, - 0xC344, 0xC346, 0xC347, 0xC348, 0xC349, 0xC34A, 0xC34B, 0xC34C, 0xC34D, - 0xC34E, 0xC34F, 0xC350, 0xC351, 0xC352, 0xC353, 0xC354, 0xC355, 0xC356, - 0xC357, 0xC358, 0xC359, 0xC35A, 0xC35B, 0xC35C, 0xC35D, 0xC35E, 0xC35F, - 0xC360, 0xC361, 0xC362, 0xC363, 0xC364, 0xC365, 0xC366, 0xC367, 0xC36A, - 0xC36B, 0xC36D, 0xC36E, 0xC36F, 0xC371, 0xC373, 0xC374, 0xC375, 0xC376, - 0xC377, 0xC37A, 0xC37B, 0xC37E, 0xC37F, 0xC380, 0xC381, 0xC382, 0xC383, - 0xC385, 0xC386, 0xC387, 0xC389, 0xC38A, 0xC38B, 0xC38D, 0xC38E, 0xC38F, - 0xC390, 0xC391, 0xC392, 0xC393, 0xC394, 0xC395, 0xC396, 0xC397, 0xC398, - 0xC399, 0xC39A, 0xC39B, 0xC39C, 0xC39D, 0xC39E, 0xC39F, 0xC3A0, 0xC3A1, - 0xC3A2, 0xC3A3, 0xC3A4, 0xC3A5, 0xC3A6, 0xC3A7, 0xC3A8, 0xC3A9, 0xC3AA, - 0xC3AB, 0xC3AC, 0xC3AD, 0xC3AE, 0xC3AF, 0xC3B0, 0xC3B1, 0xC3B2, 0xC3B3, - 0xC3B4, 0xC3B5, 0xC3B6, 0xC3B7, 0xC3B8, 0xC3B9, 0xC3BA, 0xC3BB, 0xC3BC, - 0xC3BD, 0xC3BE, 0xC3BF, 0xC3C1, 0xC3C2, 0xC3C3, 0xC3C4, 0xC3C5, 0xC3C6, - 0xC3C7, 0xC3C8, 0xC3C9, 0xC3CA, 0xC3CB, 0xC3CC, 0xC3CD, 0xC3CE, 0xC3CF, - 0xC3D0, 0xC3D1, 0xC3D2, 0xC3D3, 0xC3D4, 0xC3D5, 0xC3D6, 0xC3D7, 0xC3DA, - 0xC3DB, 0xC3DD, 0xC3DE, 0xC3E1, 0xC3E3, 0xC3E4, 0xC3E5, 0xC3E6, 0xC3E7, - 0xC3EA, 0xC3EB, 0xC3EC, 0xC3EE, 0xC3EF, 0xC3F0, 0xC3F1, 0xC3F2, 0xC3F3, - 0xC3F6, 0xC3F7, 0xC3F9, 0xC3FA, 0xC3FB, 0xC3FC, 0xC3FD, 0xC3FE, 0xC3FF, - 0xC400, 0xC401, 0xC402, 0xC403, 0xC404, 0xC405, 0xC406, 0xC407, 0xC409, - 0xC40A, 0xC40B, 0xC40C, 0xC40D, 0xC40E, 0xC40F, 0xC411, 0xC412, 0xC413, - 0xC414, 0xC415, 0xC416, 0xC417, 0xC418, 0xC419, 0xC41A, 0xC41B, 0xC41C, - 0xC41D, 0xC41E, 0xC41F, 0xC420, 0xC421, 0xC422, 0xC423, 0xC425, 0xC426, - 0xC427, 0xC428, 0xC429, 0xC42A, 0xC42B, 0xC42D, 0xC42E, 0xC42F, 0xC431, - 0xC432, 0xC433, 0xC435, 0xC436, 0xC437, 0xC438, 0xC439, 0xC43A, 0xC43B, - 0xC43E, 0xC43F, 0xC440, 0xC441, 0xC442, 0xC443, 0xC444, 0xC445, 0xC446, - 0xC447, 0xC449, 0xC44A, 0xC44B, 0xC44C, 0xC44D, 0xC44E, 0xC44F, 0xC450, - 0xC451, 0xC452, 0xC453, 0xC454, 0xC455, 0xC456, 0xC457, 0xC458, 0xC459, - 0xC45A, 0xC45B, 0xC45C, 0xC45D, 0xC45E, 0xC45F, 0xC460, 0xC461, 0xC462, - 0xC463, 0xC466, 0xC467, 0xC469, 0xC46A, 0xC46B, 0xC46D, 0xC46E, 0xC46F, - 0xC470, 0xC471, 0xC472, 0xC473, 0xC476, 0xC477, 0xC478, 0xC47A, 0xC47B, - 0xC47C, 0xC47D, 0xC47E, 0xC47F, 0xC481, 0xC482, 0xC483, 0xC484, 0xC485, - 0xC486, 0xC487, 0xC488, 0xC489, 0xC48A, 0xC48B, 0xC48C, 0xC48D, 0xC48E, - 0xC48F, 0xC490, 0xC491, 0xC492, 0xC493, 0xC495, 0xC496, 0xC497, 0xC498, - 0xC499, 0xC49A, 0xC49B, 0xC49D, 0xC49E, 0xC49F, 0xC4A0, 0xC4A1, 0xC4A2, - 0xC4A3, 0xC4A4, 0xC4A5, 0xC4A6, 0xC4A7, 0xC4A8, 0xC4A9, 0xC4AA, 0xC4AB, - 0xC4AC, 0xC4AD, 0xC4AE, 0xC4AF, 0xC4B0, 0xC4B1, 0xC4B2, 0xC4B3, 0xC4B4, - 0xC4B5, 0xC4B6, 0xC4B7, 0xC4B9, 0xC4BA, 0xC4BB, 0xC4BD, 0xC4BE, 0xC4BF, - 0xC4C0, 0xC4C1, 0xC4C2, 0xC4C3, 0xC4C4, 0xC4C5, 0xC4C6, 0xC4C7, 0xC4C8, - 0xC4C9, 0xC4CA, 0xC4CB, 0xC4CC, 0xC4CD, 0xC4CE, 0xC4CF, 0xC4D0, 0xC4D1, - 0xC4D2, 0xC4D3, 0xC4D4, 0xC4D5, 0xC4D6, 0xC4D7, 0xC4D8, 0xC4D9, 0xC4DA, - 0xC4DB, 0xC4DC, 0xC4DD, 0xC4DE, 0xC4DF, 0xC4E0, 0xC4E1, 0xC4E2, 0xC4E3, - 0xC4E4, 0xC4E5, 0xC4E6, 0xC4E7, 0xC4E8, 0xC4EA, 0xC4EB, 0xC4EC, 0xC4ED, - 0xC4EE, 0xC4EF, 0xC4F2, 0xC4F3, 0xC4F5, 0xC4F6, 0xC4F7, 0xC4F9, 0xC4FB, - 0xC4FC, 0xC4FD, 0xC4FE, 0xC502, 0xC503, 0xC504, 0xC505, 0xC506, 0xC507, - 0xC508, 0xC509, 0xC50A, 0xC50B, 0xC50D, 0xC50E, 0xC50F, 0xC511, 0xC512, - 0xC513, 0xC515, 0xC516, 0xC517, 0xC518, 0xC519, 0xC51A, 0xC51B, 0xC51D, - 0xC51E, 0xC51F, 0xC520, 0xC521, 0xC522, 0xC523, 0xC524, 0xC525, 0xC526, - 0xC527, 0xC52A, 0xC52B, 0xC52D, 0xC52E, 0xC52F, 0xC531, 0xC532, 0xC533, - 0xC534, 0xC535, 0xC536, 0xC537, 0xC53A, 0xC53C, 0xC53E, 0xC53F, 0xC540, - 0xC541, 0xC542, 0xC543, 0xC546, 0xC547, 0xC54B, 0xC54F, 0xC550, 0xC551, - 0xC552, 0xC556, 0xC55A, 0xC55B, 0xC55C, 0xC55F, 0xC562, 0xC563, 0xC565, - 0xC566, 0xC567, 0xC569, 0xC56A, 0xC56B, 0xC56C, 0xC56D, 0xC56E, 0xC56F, - 0xC572, 0xC576, 0xC577, 0xC578, 0xC579, 0xC57A, 0xC57B, 0xC57E, 0xC57F, - 0xC581, 0xC582, 0xC583, 0xC585, 0xC586, 0xC588, 0xC589, 0xC58A, 0xC58B, - 0xC58E, 0xC590, 0xC592, 0xC593, 0xC594, 0xC596, 0xC599, 0xC59A, 0xC59B, - 0xC59D, 0xC59E, 0xC59F, 0xC5A1, 0xC5A2, 0xC5A3, 0xC5A4, 0xC5A5, 0xC5A6, - 0xC5A7, 0xC5A8, 0xC5AA, 0xC5AB, 0xC5AC, 0xC5AD, 0xC5AE, 0xC5AF, 0xC5B0, - 0xC5B1, 0xC5B2, 0xC5B3, 0xC5B6, 0xC5B7, 0xC5BA, 0xC5BF, 0xC5C0, 0xC5C1, - 0xC5C2, 0xC5C3, 0xC5CB, 0xC5CD, 0xC5CF, 0xC5D2, 0xC5D3, 0xC5D5, 0xC5D6, - 0xC5D7, 0xC5D9, 0xC5DA, 0xC5DB, 0xC5DC, 0xC5DD, 0xC5DE, 0xC5DF, 0xC5E2, - 0xC5E4, 0xC5E6, 0xC5E7, 0xC5E8, 0xC5E9, 0xC5EA, 0xC5EB, 0xC5EF, 0xC5F1, - 0xC5F2, 0xC5F3, 0xC5F5, 0xC5F8, 0xC5F9, 0xC5FA, 0xC5FB, 0xC602, 0xC603, - 0xC604, 0xC609, 0xC60A, 0xC60B, 0xC60D, 0xC60E, 0xC60F, 0xC611, 0xC612, - 0xC613, 0xC614, 0xC615, 0xC616, 0xC617, 0xC61A, 0xC61D, 0xC61E, 0xC61F, - 0xC620, 0xC621, 0xC622, 0xC623, 0xC626, 0xC627, 0xC629, 0xC62A, 0xC62B, - 0xC62F, 0xC631, 0xC632, 0xC636, 0xC638, 0xC63A, 0xC63C, 0xC63D, 0xC63E, - 0xC63F, 0xC642, 0xC643, 0xC645, 0xC646, 0xC647, 0xC649, 0xC64A, 0xC64B, - 0xC64C, 0xC64D, 0xC64E, 0xC64F, 0xC652, 0xC656, 0xC657, 0xC658, 0xC659, - 0xC65A, 0xC65B, 0xC65E, 0xC65F, 0xC661, 0xC662, 0xC663, 0xC664, 0xC665, - 0xC666, 0xC667, 0xC668, 0xC669, 0xC66A, 0xC66B, 0xC66D, 0xC66E, 0xC670, - 0xC672, 0xC673, 0xC674, 0xC675, 0xC676, 0xC677, 0xC67A, 0xC67B, 0xC67D, - 0xC67E, 0xC67F, 0xC681, 0xC682, 0xC683, 0xC684, 0xC685, 0xC686, 0xC687, - 0xC68A, 0xC68C, 0xC68E, 0xC68F, 0xC690, 0xC691, 0xC692, 0xC693, 0xC696, - 0xC697, 0xC699, 0xC69A, 0xC69B, 0xC69D, 0xC69E, 0xC69F, 0xC6A0, 0xC6A1, - 0xC6A2, 0xC6A3, 0xC6A6, 0xC6A8, 0xC6AA, 0xC6AB, 0xC6AC, 0xC6AD, 0xC6AE, - 0xC6AF, 0xC6B2, 0xC6B3, 0xC6B5, 0xC6B6, 0xC6B7, 0xC6BB, 0xC6BC, 0xC6BD, - 0xC6BE, 0xC6BF, 0xC6C2, 0xC6C4, 0xC6C6, 0xC6C7, 0xC6C8, 0xC6C9, 0xC6CA, - 0xC6CB, 0xC6CE, 0xC6CF, 0xC6D1, 0xC6D2, 0xC6D3, 0xC6D5, 0xC6D6, 0xC6D7, - 0xC6D8, 0xC6D9, 0xC6DA, 0xC6DB, 0xC6DE, 0xC6DF, 0xC6E2, 0xC6E3, 0xC6E4, - 0xC6E5, 0xC6E6, 0xC6E7, 0xC6EA, 0xC6EB, 0xC6ED, 0xC6EE, 0xC6EF, 0xC6F1, - 0xC6F2, 0xC6F3, 0xC6F4, 0xC6F5, 0xC6F6, 0xC6F7, 0xC6FA, 0xC6FB, 0xC6FC, - 0xC6FE, 0xC6FF, 0xC700, 0xC701, 0xC702, 0xC703, 0xC706, 0xC707, 0xC709, - 0xC70A, 0xC70B, 0xC70D, 0xC70E, 0xC70F, 0xC710, 0xC711, 0xC712, 0xC713, - 0xC716, 0xC718, 0xC71A, 0xC71B, 0xC71C, 0xC71D, 0xC71E, 0xC71F, 0xC722, - 0xC723, 0xC725, 0xC726, 0xC727, 0xC729, 0xC72A, 0xC72B, 0xC72C, 0xC72D, - 0xC72E, 0xC72F, 0xC732, 0xC734, 0xC736, 0xC738, 0xC739, 0xC73A, 0xC73B, - 0xC73E, 0xC73F, 0xC741, 0xC742, 0xC743, 0xC745, 0xC746, 0xC747, 0xC748, - 0xC749, 0xC74B, 0xC74E, 0xC750, 0xC759, 0xC75A, 0xC75B, 0xC75D, 0xC75E, - 0xC75F, 0xC761, 0xC762, 0xC763, 0xC764, 0xC765, 0xC766, 0xC767, 0xC769, - 0xC76A, 0xC76C, 0xC76D, 0xC76E, 0xC76F, 0xC770, 0xC771, 0xC772, 0xC773, - 0xC776, 0xC777, 0xC779, 0xC77A, 0xC77B, 0xC77F, 0xC780, 0xC781, 0xC782, - 0xC786, 0xC78B, 0xC78C, 0xC78D, 0xC78F, 0xC792, 0xC793, 0xC795, 0xC799, - 0xC79B, 0xC79C, 0xC79D, 0xC79E, 0xC79F, 0xC7A2, 0xC7A7, 0xC7A8, 0xC7A9, - 0xC7AA, 0xC7AB, 0xC7AE, 0xC7AF, 0xC7B1, 0xC7B2, 0xC7B3, 0xC7B5, 0xC7B6, - 0xC7B7, 0xC7B8, 0xC7B9, 0xC7BA, 0xC7BB, 0xC7BE, 0xC7C2, 0xC7C3, 0xC7C4, - 0xC7C5, 0xC7C6, 0xC7C7, 0xC7CA, 0xC7CB, 0xC7CD, 0xC7CF, 0xC7D1, 0xC7D2, - 0xC7D3, 0xC7D4, 0xC7D5, 0xC7D6, 0xC7D7, 0xC7D9, 0xC7DA, 0xC7DB, 0xC7DC, - 0xC7DE, 0xC7DF, 0xC7E0, 0xC7E1, 0xC7E2, 0xC7E3, 0xC7E5, 0xC7E6, 0xC7E7, - 0xC7E9, 0xC7EA, 0xC7EB, 0xC7ED, 0xC7EE, 0xC7EF, 0xC7F0, 0xC7F1, 0xC7F2, - 0xC7F3, 0xC7F4, 0xC7F5, 0xC7F6, 0xC7F7, 0xC7F8, 0xC7F9, 0xC7FA, 0xC7FB, - 0xC7FC, 0xC7FD, 0xC7FE, 0xC7FF, 0xC802, 0xC803, 0xC805, 0xC806, 0xC807, - 0xC809, 0xC80B, 0xC80C, 0xC80D, 0xC80E, 0xC80F, 0xC812, 0xC814, 0xC817, - 0xC818, 0xC819, 0xC81A, 0xC81B, 0xC81E, 0xC81F, 0xC821, 0xC822, 0xC823, - 0xC825, 0xC826, 0xC827, 0xC828, 0xC829, 0xC82A, 0xC82B, 0xC82E, 0xC830, - 0xC832, 0xC833, 0xC834, 0xC835, 0xC836, 0xC837, 0xC839, 0xC83A, 0xC83B, - 0xC83D, 0xC83E, 0xC83F, 0xC841, 0xC842, 0xC843, 0xC844, 0xC845, 0xC846, - 0xC847, 0xC84A, 0xC84B, 0xC84E, 0xC84F, 0xC850, 0xC851, 0xC852, 0xC853, - 0xC855, 0xC856, 0xC857, 0xC858, 0xC859, 0xC85A, 0xC85B, 0xC85C, 0xC85D, - 0xC85E, 0xC85F, 0xC860, 0xC861, 0xC862, 0xC863, 0xC864, 0xC865, 0xC866, - 0xC867, 0xC868, 0xC869, 0xC86A, 0xC86B, 0xC86C, 0xC86D, 0xC86E, 0xC86F, - 0xC872, 0xC873, 0xC875, 0xC876, 0xC877, 0xC879, 0xC87B, 0xC87C, 0xC87D, - 0xC87E, 0xC87F, 0xC882, 0xC884, 0xC888, 0xC889, 0xC88A, 0xC88E, 0xC88F, - 0xC890, 0xC891, 0xC892, 0xC893, 0xC895, 0xC896, 0xC897, 0xC898, 0xC899, - 0xC89A, 0xC89B, 0xC89C, 0xC89E, 0xC8A0, 0xC8A2, 0xC8A3, 0xC8A4, 0xC8A5, - 0xC8A6, 0xC8A7, 0xC8A9, 0xC8AA, 0xC8AB, 0xC8AC, 0xC8AD, 0xC8AE, 0xC8AF, - 0xC8B0, 0xC8B1, 0xC8B2, 0xC8B3, 0xC8B4, 0xC8B5, 0xC8B6, 0xC8B7, 0xC8B8, - 0xC8B9, 0xC8BA, 0xC8BB, 0xC8BE, 0xC8BF, 0xC8C0, 0xC8C1, 0xC8C2, 0xC8C3, - 0xC8C5, 0xC8C6, 0xC8C7, 0xC8C9, 0xC8CA, 0xC8CB, 0xC8CD, 0xC8CE, 0xC8CF, - 0xC8D0, 0xC8D1, 0xC8D2, 0xC8D3, 0xC8D6, 0xC8D8, 0xC8DA, 0xC8DB, 0xC8DC, - 0xC8DD, 0xC8DE, 0xC8DF, 0xC8E2, 0xC8E3, 0xC8E5, 0xC8E6, 0xC8E7, 0xC8E8, - 0xC8E9, 0xC8EA, 0xC8EB, 0xC8EC, 0xC8ED, 0xC8EE, 0xC8EF, 0xC8F0, 0xC8F1, - 0xC8F2, 0xC8F3, 0xC8F4, 0xC8F6, 0xC8F7, 0xC8F8, 0xC8F9, 0xC8FA, 0xC8FB, - 0xC8FE, 0xC8FF, 0xC901, 0xC902, 0xC903, 0xC907, 0xC908, 0xC909, 0xC90A, - 0xC90B, 0xC90E, 0xC910, 0xC912, 0xC913, 0xC914, 0xC915, 0xC916, 0xC917, - 0xC919, 0xC91A, 0xC91B, 0xC91C, 0xC91D, 0xC91E, 0xC91F, 0xC920, 0xC921, - 0xC922, 0xC923, 0xC924, 0xC925, 0xC926, 0xC927, 0xC928, 0xC929, 0xC92A, - 0xC92B, 0xC92D, 0xC92E, 0xC92F, 0xC930, 0xC931, 0xC932, 0xC933, 0xC935, - 0xC936, 0xC937, 0xC938, 0xC939, 0xC93A, 0xC93B, 0xC93C, 0xC93D, 0xC93E, - 0xC93F, 0xC940, 0xC941, 0xC942, 0xC943, 0xC944, 0xC945, 0xC946, 0xC947, - 0xC948, 0xC949, 0xC94A, 0xC94B, 0xC94C, 0xC94D, 0xC94E, 0xC94F, 0xC952, - 0xC953, 0xC955, 0xC956, 0xC957, 0xC959, 0xC95A, 0xC95B, 0xC95C, 0xC95D, - 0xC95E, 0xC95F, 0xC962, 0xC964, 0xC965, 0xC966, 0xC967, 0xC968, 0xC969, - 0xC96A, 0xC96B, 0xC96D, 0xC96E, 0xC96F, 0xC971, 0xC972, 0xC973, 0xC975, - 0xC976, 0xC977, 0xC978, 0xC979, 0xC97A, 0xC97B, 0xC97D, 0xC97E, 0xC97F, - 0xC980, 0xC981, 0xC982, 0xC983, 0xC984, 0xC985, 0xC986, 0xC987, 0xC98A, - 0xC98B, 0xC98D, 0xC98E, 0xC98F, 0xC991, 0xC992, 0xC993, 0xC994, 0xC995, - 0xC996, 0xC997, 0xC99A, 0xC99C, 0xC99E, 0xC99F, 0xC9A0, 0xC9A1, 0xC9A2, - 0xC9A3, 0xC9A4, 0xC9A5, 0xC9A6, 0xC9A7, 0xC9A8, 0xC9A9, 0xC9AA, 0xC9AB, - 0xC9AC, 0xC9AD, 0xC9AE, 0xC9AF, 0xC9B0, 0xC9B1, 0xC9B2, 0xC9B3, 0xC9B4, - 0xC9B5, 0xC9B6, 0xC9B7, 0xC9B8, 0xC9B9, 0xC9BA, 0xC9BB, 0xC9BC, 0xC9BD, - 0xC9BE, 0xC9BF, 0xC9C2, 0xC9C3, 0xC9C5, 0xC9C6, 0xC9C9, 0xC9CB, 0xC9CC, - 0xC9CD, 0xC9CE, 0xC9CF, 0xC9D2, 0xC9D4, 0xC9D7, 0xC9D8, 0xC9DB, 0xC9DE, - 0xC9DF, 0xC9E1, 0xC9E3, 0xC9E5, 0xC9E6, 0xC9E8, 0xC9E9, 0xC9EA, 0xC9EB, - 0xC9EE, 0xC9F2, 0xC9F3, 0xC9F4, 0xC9F5, 0xC9F6, 0xC9F7, 0xC9FA, 0xC9FB, - 0xC9FD, 0xC9FE, 0xC9FF, 0xCA01, 0xCA02, 0xCA03, 0xCA04, 0xCA05, 0xCA06, - 0xCA07, 0xCA0A, 0xCA0E, 0xCA0F, 0xCA10, 0xCA11, 0xCA12, 0xCA13, 0xCA15, - 0xCA16, 0xCA17, 0xCA19, 0xCA1A, 0xCA1B, 0xCA1C, 0xCA1D, 0xCA1E, 0xCA1F, - 0xCA20, 0xCA21, 0xCA22, 0xCA23, 0xCA24, 0xCA25, 0xCA26, 0xCA27, 0xCA28, - 0xCA2A, 0xCA2B, 0xCA2C, 0xCA2D, 0xCA2E, 0xCA2F, 0xCA30, 0xCA31, 0xCA32, - 0xCA33, 0xCA34, 0xCA35, 0xCA36, 0xCA37, 0xCA38, 0xCA39, 0xCA3A, 0xCA3B, - 0xCA3C, 0xCA3D, 0xCA3E, 0xCA3F, 0xCA40, 0xCA41, 0xCA42, 0xCA43, 0xCA44, - 0xCA45, 0xCA46, 0xCA47, 0xCA48, 0xCA49, 0xCA4A, 0xCA4B, 0xCA4E, 0xCA4F, - 0xCA51, 0xCA52, 0xCA53, 0xCA55, 0xCA56, 0xCA57, 0xCA58, 0xCA59, 0xCA5A, - 0xCA5B, 0xCA5E, 0xCA62, 0xCA63, 0xCA64, 0xCA65, 0xCA66, 0xCA67, 0xCA69, - 0xCA6A, 0xCA6B, 0xCA6C, 0xCA6D, 0xCA6E, 0xCA6F, 0xCA70, 0xCA71, 0xCA72, - 0xCA73, 0xCA74, 0xCA75, 0xCA76, 0xCA77, 0xCA78, 0xCA79, 0xCA7A, 0xCA7B, - 0xCA7C, 0xCA7E, 0xCA7F, 0xCA80, 0xCA81, 0xCA82, 0xCA83, 0xCA85, 0xCA86, - 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xCA8B, 0xCA8C, 0xCA8D, 0xCA8E, 0xCA8F, - 0xCA90, 0xCA91, 0xCA92, 0xCA93, 0xCA94, 0xCA95, 0xCA96, 0xCA97, 0xCA99, - 0xCA9A, 0xCA9B, 0xCA9C, 0xCA9D, 0xCA9E, 0xCA9F, 0xCAA0, 0xCAA1, 0xCAA2, - 0xCAA3, 0xCAA4, 0xCAA5, 0xCAA6, 0xCAA7, 0xCAA8, 0xCAA9, 0xCAAA, 0xCAAB, - 0xCAAC, 0xCAAD, 0xCAAE, 0xCAAF, 0xCAB0, 0xCAB1, 0xCAB2, 0xCAB3, 0xCAB4, - 0xCAB5, 0xCAB6, 0xCAB7, 0xCAB8, 0xCAB9, 0xCABA, 0xCABB, 0xCABE, 0xCABF, - 0xCAC1, 0xCAC2, 0xCAC3, 0xCAC5, 0xCAC6, 0xCAC7, 0xCAC8, 0xCAC9, 0xCACA, - 0xCACB, 0xCACE, 0xCAD0, 0xCAD2, 0xCAD4, 0xCAD5, 0xCAD6, 0xCAD7, 0xCADA, - 0xCADB, 0xCADC, 0xCADD, 0xCADE, 0xCADF, 0xCAE1, 0xCAE2, 0xCAE3, 0xCAE4, - 0xCAE5, 0xCAE6, 0xCAE7, 0xCAE8, 0xCAE9, 0xCAEA, 0xCAEB, 0xCAED, 0xCAEE, - 0xCAEF, 0xCAF0, 0xCAF1, 0xCAF2, 0xCAF3, 0xCAF5, 0xCAF6, 0xCAF7, 0xCAF8, - 0xCAF9, 0xCAFA, 0xCAFB, 0xCAFC, 0xCAFD, 0xCAFE, 0xCAFF, 0xCB00, 0xCB01, - 0xCB02, 0xCB03, 0xCB04, 0xCB05, 0xCB06, 0xCB07, 0xCB09, 0xCB0A, 0xCB0B, - 0xCB0C, 0xCB0D, 0xCB0E, 0xCB0F, 0xCB11, 0xCB12, 0xCB13, 0xCB15, 0xCB16, - 0xCB17, 0xCB19, 0xCB1A, 0xCB1B, 0xCB1C, 0xCB1D, 0xCB1E, 0xCB1F, 0xCB22, - 0xCB23, 0xCB24, 0xCB25, 0xCB26, 0xCB27, 0xCB28, 0xCB29, 0xCB2A, 0xCB2B, - 0xCB2C, 0xCB2D, 0xCB2E, 0xCB2F, 0xCB30, 0xCB31, 0xCB32, 0xCB33, 0xCB34, - 0xCB35, 0xCB36, 0xCB37, 0xCB38, 0xCB39, 0xCB3A, 0xCB3B, 0xCB3C, 0xCB3D, - 0xCB3E, 0xCB3F, 0xCB40, 0xCB42, 0xCB43, 0xCB44, 0xCB45, 0xCB46, 0xCB47, - 0xCB4A, 0xCB4B, 0xCB4D, 0xCB4E, 0xCB4F, 0xCB51, 0xCB52, 0xCB53, 0xCB54, - 0xCB55, 0xCB56, 0xCB57, 0xCB5A, 0xCB5B, 0xCB5C, 0xCB5E, 0xCB5F, 0xCB60, - 0xCB61, 0xCB62, 0xCB63, 0xCB65, 0xCB66, 0xCB67, 0xCB68, 0xCB69, 0xCB6A, - 0xCB6B, 0xCB6C, 0xCB6D, 0xCB6E, 0xCB6F, 0xCB70, 0xCB71, 0xCB72, 0xCB73, - 0xCB74, 0xCB75, 0xCB76, 0xCB77, 0xCB7A, 0xCB7B, 0xCB7C, 0xCB7D, 0xCB7E, - 0xCB7F, 0xCB80, 0xCB81, 0xCB82, 0xCB83, 0xCB84, 0xCB85, 0xCB86, 0xCB87, - 0xCB88, 0xCB89, 0xCB8A, 0xCB8B, 0xCB8C, 0xCB8D, 0xCB8E, 0xCB8F, 0xCB90, - 0xCB91, 0xCB92, 0xCB93, 0xCB94, 0xCB95, 0xCB96, 0xCB97, 0xCB98, 0xCB99, - 0xCB9A, 0xCB9B, 0xCB9D, 0xCB9E, 0xCB9F, 0xCBA0, 0xCBA1, 0xCBA2, 0xCBA3, - 0xCBA4, 0xCBA5, 0xCBA6, 0xCBA7, 0xCBA8, 0xCBA9, 0xCBAA, 0xCBAB, 0xCBAC, - 0xCBAD, 0xCBAE, 0xCBAF, 0xCBB0, 0xCBB1, 0xCBB2, 0xCBB3, 0xCBB4, 0xCBB5, - 0xCBB6, 0xCBB7, 0xCBB9, 0xCBBA, 0xCBBB, 0xCBBC, 0xCBBD, 0xCBBE, 0xCBBF, - 0xCBC0, 0xCBC1, 0xCBC2, 0xCBC3, 0xCBC4, 0xCBC5, 0xCBC6, 0xCBC7, 0xCBC8, - 0xCBC9, 0xCBCA, 0xCBCB, 0xCBCC, 0xCBCD, 0xCBCE, 0xCBCF, 0xCBD0, 0xCBD1, - 0xCBD2, 0xCBD3, 0xCBD5, 0xCBD6, 0xCBD7, 0xCBD8, 0xCBD9, 0xCBDA, 0xCBDB, - 0xCBDC, 0xCBDD, 0xCBDE, 0xCBDF, 0xCBE0, 0xCBE1, 0xCBE2, 0xCBE3, 0xCBE5, - 0xCBE6, 0xCBE8, 0xCBEA, 0xCBEB, 0xCBEC, 0xCBED, 0xCBEE, 0xCBEF, 0xCBF0, - 0xCBF1, 0xCBF2, 0xCBF3, 0xCBF4, 0xCBF5, 0xCBF6, 0xCBF7, 0xCBF8, 0xCBF9, - 0xCBFA, 0xCBFB, 0xCBFC, 0xCBFD, 0xCBFE, 0xCBFF, 0xCC00, 0xCC01, 0xCC02, - 0xCC03, 0xCC04, 0xCC05, 0xCC06, 0xCC07, 0xCC08, 0xCC09, 0xCC0A, 0xCC0B, - 0xCC0E, 0xCC0F, 0xCC11, 0xCC12, 0xCC13, 0xCC15, 0xCC16, 0xCC17, 0xCC18, - 0xCC19, 0xCC1A, 0xCC1B, 0xCC1E, 0xCC1F, 0xCC20, 0xCC23, 0xCC24, 0xCC25, - 0xCC26, 0xCC2A, 0xCC2B, 0xCC2D, 0xCC2F, 0xCC31, 0xCC32, 0xCC33, 0xCC34, - 0xCC35, 0xCC36, 0xCC37, 0xCC3A, 0xCC3F, 0xCC40, 0xCC41, 0xCC42, 0xCC43, - 0xCC46, 0xCC47, 0xCC49, 0xCC4A, 0xCC4B, 0xCC4D, 0xCC4E, 0xCC4F, 0xCC50, - 0xCC51, 0xCC52, 0xCC53, 0xCC56, 0xCC5A, 0xCC5B, 0xCC5C, 0xCC5D, 0xCC5E, - 0xCC5F, 0xCC61, 0xCC62, 0xCC63, 0xCC65, 0xCC67, 0xCC69, 0xCC6A, 0xCC6B, - 0xCC6C, 0xCC6D, 0xCC6E, 0xCC6F, 0xCC71, 0xCC72, 0xCC73, 0xCC74, 0xCC76, - 0xCC77, 0xCC78, 0xCC79, 0xCC7A, 0xCC7B, 0xCC7C, 0xCC7D, 0xCC7E, 0xCC7F, - 0xCC80, 0xCC81, 0xCC82, 0xCC83, 0xCC84, 0xCC85, 0xCC86, 0xCC87, 0xCC88, - 0xCC89, 0xCC8A, 0xCC8B, 0xCC8C, 0xCC8D, 0xCC8E, 0xCC8F, 0xCC90, 0xCC91, - 0xCC92, 0xCC93, 0xCC94, 0xCC95, 0xCC96, 0xCC97, 0xCC9A, 0xCC9B, 0xCC9D, - 0xCC9E, 0xCC9F, 0xCCA1, 0xCCA2, 0xCCA3, 0xCCA4, 0xCCA5, 0xCCA6, 0xCCA7, - 0xCCAA, 0xCCAE, 0xCCAF, 0xCCB0, 0xCCB1, 0xCCB2, 0xCCB3, 0xCCB6, 0xCCB7, - 0xCCB9, 0xCCBA, 0xCCBB, 0xCCBD, 0xCCBE, 0xCCBF, 0xCCC0, 0xCCC1, 0xCCC2, - 0xCCC3, 0xCCC6, 0xCCC8, 0xCCCA, 0xCCCB, 0xCCCC, 0xCCCD, 0xCCCE, 0xCCCF, - 0xCCD1, 0xCCD2, 0xCCD3, 0xCCD5, 0xCCD6, 0xCCD7, 0xCCD8, 0xCCD9, 0xCCDA, - 0xCCDB, 0xCCDC, 0xCCDD, 0xCCDE, 0xCCDF, 0xCCE0, 0xCCE1, 0xCCE2, 0xCCE3, - 0xCCE5, 0xCCE6, 0xCCE7, 0xCCE8, 0xCCE9, 0xCCEA, 0xCCEB, 0xCCED, 0xCCEE, - 0xCCEF, 0xCCF1, 0xCCF2, 0xCCF3, 0xCCF4, 0xCCF5, 0xCCF6, 0xCCF7, 0xCCF8, - 0xCCF9, 0xCCFA, 0xCCFB, 0xCCFC, 0xCCFD, 0xCCFE, 0xCCFF, 0xCD00, 0xCD02, - 0xCD03, 0xCD04, 0xCD05, 0xCD06, 0xCD07, 0xCD0A, 0xCD0B, 0xCD0D, 0xCD0E, - 0xCD0F, 0xCD11, 0xCD12, 0xCD13, 0xCD14, 0xCD15, 0xCD16, 0xCD17, 0xCD1A, - 0xCD1C, 0xCD1E, 0xCD1F, 0xCD20, 0xCD21, 0xCD22, 0xCD23, 0xCD25, 0xCD26, - 0xCD27, 0xCD29, 0xCD2A, 0xCD2B, 0xCD2D, 0xCD2E, 0xCD2F, 0xCD30, 0xCD31, - 0xCD32, 0xCD33, 0xCD34, 0xCD35, 0xCD36, 0xCD37, 0xCD38, 0xCD3A, 0xCD3B, - 0xCD3C, 0xCD3D, 0xCD3E, 0xCD3F, 0xCD40, 0xCD41, 0xCD42, 0xCD43, 0xCD44, - 0xCD45, 0xCD46, 0xCD47, 0xCD48, 0xCD49, 0xCD4A, 0xCD4B, 0xCD4C, 0xCD4D, - 0xCD4E, 0xCD4F, 0xCD50, 0xCD51, 0xCD52, 0xCD53, 0xCD54, 0xCD55, 0xCD56, - 0xCD57, 0xCD58, 0xCD59, 0xCD5A, 0xCD5B, 0xCD5D, 0xCD5E, 0xCD5F, 0xCD61, - 0xCD62, 0xCD63, 0xCD65, 0xCD66, 0xCD67, 0xCD68, 0xCD69, 0xCD6A, 0xCD6B, - 0xCD6E, 0xCD70, 0xCD72, 0xCD73, 0xCD74, 0xCD75, 0xCD76, 0xCD77, 0xCD79, - 0xCD7A, 0xCD7B, 0xCD7C, 0xCD7D, 0xCD7E, 0xCD7F, 0xCD80, 0xCD81, 0xCD82, - 0xCD83, 0xCD84, 0xCD85, 0xCD86, 0xCD87, 0xCD89, 0xCD8A, 0xCD8B, 0xCD8C, - 0xCD8D, 0xCD8E, 0xCD8F, 0xCD90, 0xCD91, 0xCD92, 0xCD93, 0xCD96, 0xCD97, - 0xCD99, 0xCD9A, 0xCD9B, 0xCD9D, 0xCD9E, 0xCD9F, 0xCDA0, 0xCDA1, 0xCDA2, - 0xCDA3, 0xCDA6, 0xCDA8, 0xCDAA, 0xCDAB, 0xCDAC, 0xCDAD, 0xCDAE, 0xCDAF, - 0xCDB1, 0xCDB2, 0xCDB3, 0xCDB4, 0xCDB5, 0xCDB6, 0xCDB7, 0xCDB8, 0xCDB9, - 0xCDBA, 0xCDBB, 0xCDBC, 0xCDBD, 0xCDBE, 0xCDBF, 0xCDC0, 0xCDC1, 0xCDC2, - 0xCDC3, 0xCDC5, 0xCDC6, 0xCDC7, 0xCDC8, 0xCDC9, 0xCDCA, 0xCDCB, 0xCDCD, - 0xCDCE, 0xCDCF, 0xCDD1, 0xCDD2, 0xCDD3, 0xCDD4, 0xCDD5, 0xCDD6, 0xCDD7, - 0xCDD8, 0xCDD9, 0xCDDA, 0xCDDB, 0xCDDC, 0xCDDD, 0xCDDE, 0xCDDF, 0xCDE0, - 0xCDE1, 0xCDE2, 0xCDE3, 0xCDE4, 0xCDE5, 0xCDE6, 0xCDE7, 0xCDE9, 0xCDEA, - 0xCDEB, 0xCDED, 0xCDEE, 0xCDEF, 0xCDF1, 0xCDF2, 0xCDF3, 0xCDF4, 0xCDF5, - 0xCDF6, 0xCDF7, 0xCDFA, 0xCDFC, 0xCDFE, 0xCDFF, 0xCE00, 0xCE01, 0xCE02, - 0xCE03, 0xCE05, 0xCE06, 0xCE07, 0xCE09, 0xCE0A, 0xCE0B, 0xCE0D, 0xCE0E, - 0xCE0F, 0xCE10, 0xCE11, 0xCE12, 0xCE13, 0xCE15, 0xCE16, 0xCE17, 0xCE18, - 0xCE1A, 0xCE1B, 0xCE1C, 0xCE1D, 0xCE1E, 0xCE1F, 0xCE22, 0xCE23, 0xCE25, - 0xCE26, 0xCE27, 0xCE29, 0xCE2A, 0xCE2B, 0xCE2C, 0xCE2D, 0xCE2E, 0xCE2F, - 0xCE32, 0xCE34, 0xCE36, 0xCE37, 0xCE38, 0xCE39, 0xCE3A, 0xCE3B, 0xCE3C, - 0xCE3D, 0xCE3E, 0xCE3F, 0xCE40, 0xCE41, 0xCE42, 0xCE43, 0xCE44, 0xCE45, - 0xCE46, 0xCE47, 0xCE48, 0xCE49, 0xCE4A, 0xCE4B, 0xCE4C, 0xCE4D, 0xCE4E, - 0xCE4F, 0xCE50, 0xCE51, 0xCE52, 0xCE53, 0xCE54, 0xCE55, 0xCE56, 0xCE57, - 0xCE5A, 0xCE5B, 0xCE5D, 0xCE5E, 0xCE62, 0xCE63, 0xCE64, 0xCE65, 0xCE66, - 0xCE67, 0xCE6A, 0xCE6C, 0xCE6E, 0xCE6F, 0xCE70, 0xCE71, 0xCE72, 0xCE73, - 0xCE76, 0xCE77, 0xCE79, 0xCE7A, 0xCE7B, 0xCE7D, 0xCE7E, 0xCE7F, 0xCE80, - 0xCE81, 0xCE82, 0xCE83, 0xCE86, 0xCE88, 0xCE8A, 0xCE8B, 0xCE8C, 0xCE8D, - 0xCE8E, 0xCE8F, 0xCE92, 0xCE93, 0xCE95, 0xCE96, 0xCE97, 0xCE99, 0xCE9A, - 0xCE9B, 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA2, 0xCEA6, 0xCEA7, 0xCEA8, - 0xCEA9, 0xCEAA, 0xCEAB, 0xCEAE, 0xCEAF, 0xCEB0, 0xCEB1, 0xCEB2, 0xCEB3, - 0xCEB4, 0xCEB5, 0xCEB6, 0xCEB7, 0xCEB8, 0xCEB9, 0xCEBA, 0xCEBB, 0xCEBC, - 0xCEBD, 0xCEBE, 0xCEBF, 0xCEC0, 0xCEC2, 0xCEC3, 0xCEC4, 0xCEC5, 0xCEC6, - 0xCEC7, 0xCEC8, 0xCEC9, 0xCECA, 0xCECB, 0xCECC, 0xCECD, 0xCECE, 0xCECF, - 0xCED0, 0xCED1, 0xCED2, 0xCED3, 0xCED4, 0xCED5, 0xCED6, 0xCED7, 0xCED8, - 0xCED9, 0xCEDA, 0xCEDB, 0xCEDC, 0xCEDD, 0xCEDE, 0xCEDF, 0xCEE0, 0xCEE1, - 0xCEE2, 0xCEE3, 0xCEE6, 0xCEE7, 0xCEE9, 0xCEEA, 0xCEED, 0xCEEE, 0xCEEF, - 0xCEF0, 0xCEF1, 0xCEF2, 0xCEF3, 0xCEF6, 0xCEFA, 0xCEFB, 0xCEFC, 0xCEFD, - 0xCEFE, 0xCEFF, 0xCF02, 0xCF03, 0xCF05, 0xCF06, 0xCF07, 0xCF09, 0xCF0A, - 0xCF0B, 0xCF0C, 0xCF0D, 0xCF0E, 0xCF0F, 0xCF12, 0xCF14, 0xCF16, 0xCF17, - 0xCF18, 0xCF19, 0xCF1A, 0xCF1B, 0xCF1D, 0xCF1E, 0xCF1F, 0xCF21, 0xCF22, - 0xCF23, 0xCF25, 0xCF26, 0xCF27, 0xCF28, 0xCF29, 0xCF2A, 0xCF2B, 0xCF2E, - 0xCF32, 0xCF33, 0xCF34, 0xCF35, 0xCF36, 0xCF37, 0xCF39, 0xCF3A, 0xCF3B, - 0xCF3C, 0xCF3D, 0xCF3E, 0xCF3F, 0xCF40, 0xCF41, 0xCF42, 0xCF43, 0xCF44, - 0xCF45, 0xCF46, 0xCF47, 0xCF48, 0xCF49, 0xCF4A, 0xCF4B, 0xCF4C, 0xCF4D, - 0xCF4E, 0xCF4F, 0xCF50, 0xCF51, 0xCF52, 0xCF53, 0xCF56, 0xCF57, 0xCF59, - 0xCF5A, 0xCF5B, 0xCF5D, 0xCF5E, 0xCF5F, 0xCF60, 0xCF61, 0xCF62, 0xCF63, - 0xCF66, 0xCF68, 0xCF6A, 0xCF6B, 0xCF6C, 0xCF6D, 0xCF6E, 0xCF6F, 0xCF72, - 0xCF73, 0xCF75, 0xCF76, 0xCF77, 0xCF79, 0xCF7A, 0xCF7B, 0xCF7C, 0xCF7D, - 0xCF7E, 0xCF7F, 0xCF81, 0xCF82, 0xCF83, 0xCF84, 0xCF86, 0xCF87, 0xCF88, - 0xCF89, 0xCF8A, 0xCF8B, 0xCF8D, 0xCF8E, 0xCF8F, 0xCF90, 0xCF91, 0xCF92, - 0xCF93, 0xCF94, 0xCF95, 0xCF96, 0xCF97, 0xCF98, 0xCF99, 0xCF9A, 0xCF9B, - 0xCF9C, 0xCF9D, 0xCF9E, 0xCF9F, 0xCFA0, 0xCFA2, 0xCFA3, 0xCFA4, 0xCFA5, - 0xCFA6, 0xCFA7, 0xCFA9, 0xCFAA, 0xCFAB, 0xCFAC, 0xCFAD, 0xCFAE, 0xCFAF, - 0xCFB1, 0xCFB2, 0xCFB3, 0xCFB4, 0xCFB5, 0xCFB6, 0xCFB7, 0xCFB8, 0xCFB9, - 0xCFBA, 0xCFBB, 0xCFBC, 0xCFBD, 0xCFBE, 0xCFBF, 0xCFC0, 0xCFC1, 0xCFC2, - 0xCFC3, 0xCFC5, 0xCFC6, 0xCFC7, 0xCFC8, 0xCFC9, 0xCFCA, 0xCFCB, 0xCFCC, - 0xCFCD, 0xCFCE, 0xCFCF, 0xCFD0, 0xCFD1, 0xCFD2, 0xCFD3, 0xCFD4, 0xCFD5, - 0xCFD6, 0xCFD7, 0xCFD8, 0xCFD9, 0xCFDA, 0xCFDB, 0xCFDC, 0xCFDD, 0xCFDE, - 0xCFDF, 0xCFE2, 0xCFE3, 0xCFE5, 0xCFE6, 0xCFE7, 0xCFE9, 0xCFEA, 0xCFEB, - 0xCFEC, 0xCFED, 0xCFEE, 0xCFEF, 0xCFF2, 0xCFF4, 0xCFF6, 0xCFF7, 0xCFF8, - 0xCFF9, 0xCFFA, 0xCFFB, 0xCFFD, 0xCFFE, 0xCFFF, 0xD001, 0xD002, 0xD003, - 0xD005, 0xD006, 0xD007, 0xD008, 0xD009, 0xD00A, 0xD00B, 0xD00C, 0xD00D, - 0xD00E, 0xD00F, 0xD010, 0xD012, 0xD013, 0xD014, 0xD015, 0xD016, 0xD017, - 0xD019, 0xD01A, 0xD01B, 0xD01C, 0xD01D, 0xD01E, 0xD01F, 0xD020, 0xD021, - 0xD022, 0xD023, 0xD024, 0xD025, 0xD026, 0xD027, 0xD028, 0xD029, 0xD02A, - 0xD02B, 0xD02C, 0xD02E, 0xD02F, 0xD030, 0xD031, 0xD032, 0xD033, 0xD036, - 0xD037, 0xD039, 0xD03A, 0xD03B, 0xD03D, 0xD03E, 0xD03F, 0xD040, 0xD041, - 0xD042, 0xD043, 0xD046, 0xD048, 0xD04A, 0xD04B, 0xD04C, 0xD04D, 0xD04E, - 0xD04F, 0xD051, 0xD052, 0xD053, 0xD055, 0xD056, 0xD057, 0xD059, 0xD05A, - 0xD05B, 0xD05C, 0xD05D, 0xD05E, 0xD05F, 0xD061, 0xD062, 0xD063, 0xD064, - 0xD065, 0xD066, 0xD067, 0xD068, 0xD069, 0xD06A, 0xD06B, 0xD06E, 0xD06F, - 0xD071, 0xD072, 0xD073, 0xD075, 0xD076, 0xD077, 0xD078, 0xD079, 0xD07A, - 0xD07B, 0xD07E, 0xD07F, 0xD080, 0xD082, 0xD083, 0xD084, 0xD085, 0xD086, - 0xD087, 0xD088, 0xD089, 0xD08A, 0xD08B, 0xD08C, 0xD08D, 0xD08E, 0xD08F, - 0xD090, 0xD091, 0xD092, 0xD093, 0xD094, 0xD095, 0xD096, 0xD097, 0xD098, - 0xD099, 0xD09A, 0xD09B, 0xD09C, 0xD09D, 0xD09E, 0xD09F, 0xD0A0, 0xD0A1, - 0xD0A2, 0xD0A3, 0xD0A6, 0xD0A7, 0xD0A9, 0xD0AA, 0xD0AB, 0xD0AD, 0xD0AE, - 0xD0AF, 0xD0B0, 0xD0B1, 0xD0B2, 0xD0B3, 0xD0B6, 0xD0B8, 0xD0BA, 0xD0BB, - 0xD0BC, 0xD0BD, 0xD0BE, 0xD0BF, 0xD0C2, 0xD0C3, 0xD0C5, 0xD0C6, 0xD0C7, - 0xD0CA, 0xD0CB, 0xD0CC, 0xD0CD, 0xD0CE, 0xD0CF, 0xD0D2, 0xD0D6, 0xD0D7, - 0xD0D8, 0xD0D9, 0xD0DA, 0xD0DB, 0xD0DE, 0xD0DF, 0xD0E1, 0xD0E2, 0xD0E3, - 0xD0E5, 0xD0E6, 0xD0E7, 0xD0E8, 0xD0E9, 0xD0EA, 0xD0EB, 0xD0EE, 0xD0F2, - 0xD0F3, 0xD0F4, 0xD0F5, 0xD0F6, 0xD0F7, 0xD0F9, 0xD0FA, 0xD0FB, 0xD0FC, - 0xD0FD, 0xD0FE, 0xD0FF, 0xD100, 0xD101, 0xD102, 0xD103, 0xD104, 0xD105, - 0xD106, 0xD107, 0xD108, 0xD109, 0xD10A, 0xD10B, 0xD10C, 0xD10E, 0xD10F, - 0xD110, 0xD111, 0xD112, 0xD113, 0xD114, 0xD115, 0xD116, 0xD117, 0xD118, - 0xD119, 0xD11A, 0xD11B, 0xD11C, 0xD11D, 0xD11E, 0xD11F, 0xD120, 0xD121, - 0xD122, 0xD123, 0xD124, 0xD125, 0xD126, 0xD127, 0xD128, 0xD129, 0xD12A, - 0xD12B, 0xD12C, 0xD12D, 0xD12E, 0xD12F, 0xD132, 0xD133, 0xD135, 0xD136, - 0xD137, 0xD139, 0xD13B, 0xD13C, 0xD13D, 0xD13E, 0xD13F, 0xD142, 0xD146, - 0xD147, 0xD148, 0xD149, 0xD14A, 0xD14B, 0xD14E, 0xD14F, 0xD151, 0xD152, - 0xD153, 0xD155, 0xD156, 0xD157, 0xD158, 0xD159, 0xD15A, 0xD15B, 0xD15E, - 0xD160, 0xD162, 0xD163, 0xD164, 0xD165, 0xD166, 0xD167, 0xD169, 0xD16A, - 0xD16B, 0xD16D, 0xD16E, 0xD16F, 0xD170, 0xD171, 0xD172, 0xD173, 0xD174, - 0xD175, 0xD176, 0xD177, 0xD178, 0xD179, 0xD17A, 0xD17B, 0xD17D, 0xD17E, - 0xD17F, 0xD180, 0xD181, 0xD182, 0xD183, 0xD185, 0xD186, 0xD187, 0xD189, - 0xD18A, 0xD18B, 0xD18C, 0xD18D, 0xD18E, 0xD18F, 0xD190, 0xD191, 0xD192, - 0xD193, 0xD194, 0xD195, 0xD196, 0xD197, 0xD198, 0xD199, 0xD19A, 0xD19B, - 0xD19C, 0xD19D, 0xD19E, 0xD19F, 0xD1A2, 0xD1A3, 0xD1A5, 0xD1A6, 0xD1A7, - 0xD1A9, 0xD1AA, 0xD1AB, 0xD1AC, 0xD1AD, 0xD1AE, 0xD1AF, 0xD1B2, 0xD1B4, - 0xD1B6, 0xD1B7, 0xD1B8, 0xD1B9, 0xD1BB, 0xD1BD, 0xD1BE, 0xD1BF, 0xD1C1, - 0xD1C2, 0xD1C3, 0xD1C4, 0xD1C5, 0xD1C6, 0xD1C7, 0xD1C8, 0xD1C9, 0xD1CA, - 0xD1CB, 0xD1CC, 0xD1CD, 0xD1CE, 0xD1CF, 0xD1D0, 0xD1D1, 0xD1D2, 0xD1D3, - 0xD1D4, 0xD1D5, 0xD1D6, 0xD1D7, 0xD1D9, 0xD1DA, 0xD1DB, 0xD1DC, 0xD1DD, - 0xD1DE, 0xD1DF, 0xD1E0, 0xD1E1, 0xD1E2, 0xD1E3, 0xD1E4, 0xD1E5, 0xD1E6, - 0xD1E7, 0xD1E8, 0xD1E9, 0xD1EA, 0xD1EB, 0xD1EC, 0xD1ED, 0xD1EE, 0xD1EF, - 0xD1F0, 0xD1F1, 0xD1F2, 0xD1F3, 0xD1F5, 0xD1F6, 0xD1F7, 0xD1F9, 0xD1FA, - 0xD1FB, 0xD1FC, 0xD1FD, 0xD1FE, 0xD1FF, 0xD200, 0xD201, 0xD202, 0xD203, - 0xD204, 0xD205, 0xD206, 0xD208, 0xD20A, 0xD20B, 0xD20C, 0xD20D, 0xD20E, - 0xD20F, 0xD211, 0xD212, 0xD213, 0xD214, 0xD215, 0xD216, 0xD217, 0xD218, - 0xD219, 0xD21A, 0xD21B, 0xD21C, 0xD21D, 0xD21E, 0xD21F, 0xD220, 0xD221, - 0xD222, 0xD223, 0xD224, 0xD225, 0xD226, 0xD227, 0xD228, 0xD229, 0xD22A, - 0xD22B, 0xD22E, 0xD22F, 0xD231, 0xD232, 0xD233, 0xD235, 0xD236, 0xD237, - 0xD238, 0xD239, 0xD23A, 0xD23B, 0xD23E, 0xD240, 0xD242, 0xD243, 0xD244, - 0xD245, 0xD246, 0xD247, 0xD249, 0xD24A, 0xD24B, 0xD24C, 0xD24D, 0xD24E, - 0xD24F, 0xD250, 0xD251, 0xD252, 0xD253, 0xD254, 0xD255, 0xD256, 0xD257, - 0xD258, 0xD259, 0xD25A, 0xD25B, 0xD25D, 0xD25E, 0xD25F, 0xD260, 0xD261, - 0xD262, 0xD263, 0xD265, 0xD266, 0xD267, 0xD268, 0xD269, 0xD26A, 0xD26B, - 0xD26C, 0xD26D, 0xD26E, 0xD26F, 0xD270, 0xD271, 0xD272, 0xD273, 0xD274, - 0xD275, 0xD276, 0xD277, 0xD278, 0xD279, 0xD27A, 0xD27B, 0xD27C, 0xD27D, - 0xD27E, 0xD27F, 0xD282, 0xD283, 0xD285, 0xD286, 0xD287, 0xD289, 0xD28A, - 0xD28B, 0xD28C, 0xD28D, 0xD28E, 0xD28F, 0xD292, 0xD293, 0xD294, 0xD296, - 0xD297, 0xD298, 0xD299, 0xD29A, 0xD29B, 0xD29D, 0xD29E, 0xD29F, 0xD2A1, - 0xD2A2, 0xD2A3, 0xD2A5, 0xD2A6, 0xD2A7, 0xD2A8, 0xD2A9, 0xD2AA, 0xD2AB, - 0xD2AD, 0xD2AE, 0xD2AF, 0xD2B0, 0xD2B2, 0xD2B3, 0xD2B4, 0xD2B5, 0xD2B6, - 0xD2B7, 0xD2BA, 0xD2BB, 0xD2BD, 0xD2BE, 0xD2C1, 0xD2C3, 0xD2C4, 0xD2C5, - 0xD2C6, 0xD2C7, 0xD2CA, 0xD2CC, 0xD2CD, 0xD2CE, 0xD2CF, 0xD2D0, 0xD2D1, - 0xD2D2, 0xD2D3, 0xD2D5, 0xD2D6, 0xD2D7, 0xD2D9, 0xD2DA, 0xD2DB, 0xD2DD, - 0xD2DE, 0xD2DF, 0xD2E0, 0xD2E1, 0xD2E2, 0xD2E3, 0xD2E6, 0xD2E7, 0xD2E8, - 0xD2E9, 0xD2EA, 0xD2EB, 0xD2EC, 0xD2ED, 0xD2EE, 0xD2EF, 0xD2F2, 0xD2F3, - 0xD2F5, 0xD2F6, 0xD2F7, 0xD2F9, 0xD2FA, 0xD2FB, 0xD2FC, 0xD2FD, 0xD2FE, - 0xD2FF, 0xD302, 0xD304, 0xD306, 0xD307, 0xD308, 0xD309, 0xD30A, 0xD30B, - 0xD30F, 0xD311, 0xD312, 0xD313, 0xD315, 0xD317, 0xD318, 0xD319, 0xD31A, - 0xD31B, 0xD31E, 0xD322, 0xD323, 0xD324, 0xD326, 0xD327, 0xD32A, 0xD32B, - 0xD32D, 0xD32E, 0xD32F, 0xD331, 0xD332, 0xD333, 0xD334, 0xD335, 0xD336, - 0xD337, 0xD33A, 0xD33E, 0xD33F, 0xD340, 0xD341, 0xD342, 0xD343, 0xD346, - 0xD347, 0xD348, 0xD349, 0xD34A, 0xD34B, 0xD34C, 0xD34D, 0xD34E, 0xD34F, - 0xD350, 0xD351, 0xD352, 0xD353, 0xD354, 0xD355, 0xD356, 0xD357, 0xD358, - 0xD359, 0xD35A, 0xD35B, 0xD35C, 0xD35D, 0xD35E, 0xD35F, 0xD360, 0xD361, - 0xD362, 0xD363, 0xD364, 0xD365, 0xD366, 0xD367, 0xD368, 0xD369, 0xD36A, - 0xD36B, 0xD36C, 0xD36D, 0xD36E, 0xD36F, 0xD370, 0xD371, 0xD372, 0xD373, - 0xD374, 0xD375, 0xD376, 0xD377, 0xD378, 0xD379, 0xD37A, 0xD37B, 0xD37E, - 0xD37F, 0xD381, 0xD382, 0xD383, 0xD385, 0xD386, 0xD387, 0xD388, 0xD389, - 0xD38A, 0xD38B, 0xD38E, 0xD392, 0xD393, 0xD394, 0xD395, 0xD396, 0xD397, - 0xD39A, 0xD39B, 0xD39D, 0xD39E, 0xD39F, 0xD3A1, 0xD3A2, 0xD3A3, 0xD3A4, - 0xD3A5, 0xD3A6, 0xD3A7, 0xD3AA, 0xD3AC, 0xD3AE, 0xD3AF, 0xD3B0, 0xD3B1, - 0xD3B2, 0xD3B3, 0xD3B5, 0xD3B6, 0xD3B7, 0xD3B9, 0xD3BA, 0xD3BB, 0xD3BD, - 0xD3BE, 0xD3BF, 0xD3C0, 0xD3C1, 0xD3C2, 0xD3C3, 0xD3C6, 0xD3C7, 0xD3CA, - 0xD3CB, 0xD3CC, 0xD3CD, 0xD3CE, 0xD3CF, 0xD3D1, 0xD3D2, 0xD3D3, 0xD3D4, - 0xD3D5, 0xD3D6, 0xD3D7, 0xD3D9, 0xD3DA, 0xD3DB, 0xD3DC, 0xD3DD, 0xD3DE, - 0xD3DF, 0xD3E0, 0xD3E2, 0xD3E4, 0xD3E5, 0xD3E6, 0xD3E7, 0xD3E8, 0xD3E9, - 0xD3EA, 0xD3EB, 0xD3EE, 0xD3EF, 0xD3F1, 0xD3F2, 0xD3F3, 0xD3F5, 0xD3F6, - 0xD3F7, 0xD3F8, 0xD3F9, 0xD3FA, 0xD3FB, 0xD3FE, 0xD400, 0xD402, 0xD403, - 0xD404, 0xD405, 0xD406, 0xD407, 0xD409, 0xD40A, 0xD40B, 0xD40C, 0xD40D, - 0xD40E, 0xD40F, 0xD410, 0xD411, 0xD412, 0xD413, 0xD414, 0xD415, 0xD416, - 0xD417, 0xD418, 0xD419, 0xD41A, 0xD41B, 0xD41C, 0xD41E, 0xD41F, 0xD420, - 0xD421, 0xD422, 0xD423, 0xD424, 0xD425, 0xD426, 0xD427, 0xD428, 0xD429, - 0xD42A, 0xD42B, 0xD42C, 0xD42D, 0xD42E, 0xD42F, 0xD430, 0xD431, 0xD432, - 0xD433, 0xD434, 0xD435, 0xD436, 0xD437, 0xD438, 0xD439, 0xD43A, 0xD43B, - 0xD43C, 0xD43D, 0xD43E, 0xD43F, 0xD441, 0xD442, 0xD443, 0xD445, 0xD446, - 0xD447, 0xD448, 0xD449, 0xD44A, 0xD44B, 0xD44C, 0xD44D, 0xD44E, 0xD44F, - 0xD450, 0xD451, 0xD452, 0xD453, 0xD454, 0xD455, 0xD456, 0xD457, 0xD458, - 0xD459, 0xD45A, 0xD45B, 0xD45D, 0xD45E, 0xD45F, 0xD461, 0xD462, 0xD463, - 0xD465, 0xD466, 0xD467, 0xD468, 0xD469, 0xD46A, 0xD46B, 0xD46C, 0xD46E, - 0xD470, 0xD471, 0xD472, 0xD473, 0xD474, 0xD475, 0xD476, 0xD477, 0xD47A, - 0xD47B, 0xD47D, 0xD47E, 0xD481, 0xD483, 0xD484, 0xD485, 0xD486, 0xD487, - 0xD48A, 0xD48C, 0xD48E, 0xD48F, 0xD490, 0xD491, 0xD492, 0xD493, 0xD495, - 0xD496, 0xD497, 0xD498, 0xD499, 0xD49A, 0xD49B, 0xD49C, 0xD49D, 0xD49E, - 0xD49F, 0xD4A0, 0xD4A1, 0xD4A2, 0xD4A3, 0xD4A4, 0xD4A5, 0xD4A6, 0xD4A7, - 0xD4A8, 0xD4AA, 0xD4AB, 0xD4AC, 0xD4AD, 0xD4AE, 0xD4AF, 0xD4B0, 0xD4B1, - 0xD4B2, 0xD4B3, 0xD4B4, 0xD4B5, 0xD4B6, 0xD4B7, 0xD4B8, 0xD4B9, 0xD4BA, - 0xD4BB, 0xD4BC, 0xD4BD, 0xD4BE, 0xD4BF, 0xD4C0, 0xD4C1, 0xD4C2, 0xD4C3, - 0xD4C4, 0xD4C5, 0xD4C6, 0xD4C7, 0xD4C8, 0xD4C9, 0xD4CA, 0xD4CB, 0xD4CD, - 0xD4CE, 0xD4CF, 0xD4D1, 0xD4D2, 0xD4D3, 0xD4D5, 0xD4D6, 0xD4D7, 0xD4D8, - 0xD4D9, 0xD4DA, 0xD4DB, 0xD4DD, 0xD4DE, 0xD4E0, 0xD4E1, 0xD4E2, 0xD4E3, - 0xD4E4, 0xD4E5, 0xD4E6, 0xD4E7, 0xD4E9, 0xD4EA, 0xD4EB, 0xD4ED, 0xD4EE, - 0xD4EF, 0xD4F1, 0xD4F2, 0xD4F3, 0xD4F4, 0xD4F5, 0xD4F6, 0xD4F7, 0xD4F9, - 0xD4FA, 0xD4FC, 0xD4FE, 0xD4FF, 0xD500, 0xD501, 0xD502, 0xD503, 0xD505, - 0xD506, 0xD507, 0xD509, 0xD50A, 0xD50B, 0xD50D, 0xD50E, 0xD50F, 0xD510, - 0xD511, 0xD512, 0xD513, 0xD516, 0xD518, 0xD519, 0xD51A, 0xD51B, 0xD51C, - 0xD51D, 0xD51E, 0xD51F, 0xD520, 0xD521, 0xD522, 0xD523, 0xD524, 0xD525, - 0xD526, 0xD527, 0xD528, 0xD529, 0xD52A, 0xD52B, 0xD52C, 0xD52D, 0xD52E, - 0xD52F, 0xD530, 0xD531, 0xD532, 0xD533, 0xD534, 0xD535, 0xD536, 0xD537, - 0xD538, 0xD539, 0xD53A, 0xD53B, 0xD53E, 0xD53F, 0xD541, 0xD542, 0xD543, - 0xD545, 0xD546, 0xD547, 0xD548, 0xD549, 0xD54A, 0xD54B, 0xD54E, 0xD550, - 0xD552, 0xD553, 0xD554, 0xD555, 0xD556, 0xD557, 0xD55A, 0xD55B, 0xD55D, - 0xD55E, 0xD55F, 0xD561, 0xD562, 0xD563, 0xD564, 0xD566, 0xD567, 0xD56A, - 0xD56C, 0xD56E, 0xD56F, 0xD570, 0xD571, 0xD572, 0xD573, 0xD576, 0xD577, - 0xD579, 0xD57A, 0xD57B, 0xD57D, 0xD57E, 0xD57F, 0xD580, 0xD581, 0xD582, - 0xD583, 0xD586, 0xD58A, 0xD58B, 0xD58C, 0xD58D, 0xD58E, 0xD58F, 0xD591, - 0xD592, 0xD593, 0xD594, 0xD595, 0xD596, 0xD597, 0xD598, 0xD599, 0xD59A, - 0xD59B, 0xD59C, 0xD59D, 0xD59E, 0xD59F, 0xD5A0, 0xD5A1, 0xD5A2, 0xD5A3, - 0xD5A4, 0xD5A6, 0xD5A7, 0xD5A8, 0xD5A9, 0xD5AA, 0xD5AB, 0xD5AC, 0xD5AD, - 0xD5AE, 0xD5AF, 0xD5B0, 0xD5B1, 0xD5B2, 0xD5B3, 0xD5B4, 0xD5B5, 0xD5B6, - 0xD5B7, 0xD5B8, 0xD5B9, 0xD5BA, 0xD5BB, 0xD5BC, 0xD5BD, 0xD5BE, 0xD5BF, - 0xD5C0, 0xD5C1, 0xD5C2, 0xD5C3, 0xD5C4, 0xD5C5, 0xD5C6, 0xD5C7, 0xD5CA, - 0xD5CB, 0xD5CD, 0xD5CE, 0xD5CF, 0xD5D1, 0xD5D3, 0xD5D4, 0xD5D5, 0xD5D6, - 0xD5D7, 0xD5DA, 0xD5DC, 0xD5DE, 0xD5DF, 0xD5E0, 0xD5E1, 0xD5E2, 0xD5E3, - 0xD5E6, 0xD5E7, 0xD5E9, 0xD5EA, 0xD5EB, 0xD5ED, 0xD5EE, 0xD5EF, 0xD5F0, - 0xD5F1, 0xD5F2, 0xD5F3, 0xD5F6, 0xD5F8, 0xD5FA, 0xD5FB, 0xD5FC, 0xD5FD, - 0xD5FE, 0xD5FF, 0xD602, 0xD603, 0xD605, 0xD606, 0xD607, 0xD609, 0xD60A, - 0xD60B, 0xD60C, 0xD60D, 0xD60E, 0xD60F, 0xD612, 0xD616, 0xD617, 0xD618, - 0xD619, 0xD61A, 0xD61B, 0xD61D, 0xD61E, 0xD61F, 0xD621, 0xD622, 0xD623, - 0xD625, 0xD626, 0xD627, 0xD628, 0xD629, 0xD62A, 0xD62B, 0xD62C, 0xD62E, - 0xD62F, 0xD630, 0xD631, 0xD632, 0xD633, 0xD634, 0xD635, 0xD636, 0xD637, - 0xD63A, 0xD63B, 0xD63D, 0xD63E, 0xD63F, 0xD641, 0xD642, 0xD643, 0xD644, - 0xD646, 0xD647, 0xD64A, 0xD64C, 0xD64E, 0xD64F, 0xD650, 0xD652, 0xD653, - 0xD656, 0xD657, 0xD659, 0xD65A, 0xD65B, 0xD65D, 0xD65E, 0xD65F, 0xD660, - 0xD661, 0xD662, 0xD663, 0xD664, 0xD665, 0xD666, 0xD668, 0xD66A, 0xD66B, - 0xD66C, 0xD66D, 0xD66E, 0xD66F, 0xD672, 0xD673, 0xD675, 0xD676, 0xD677, - 0xD678, 0xD679, 0xD67A, 0xD67B, 0xD67C, 0xD67D, 0xD67E, 0xD67F, 0xD680, - 0xD681, 0xD682, 0xD684, 0xD686, 0xD687, 0xD688, 0xD689, 0xD68A, 0xD68B, - 0xD68E, 0xD68F, 0xD691, 0xD692, 0xD693, 0xD695, 0xD696, 0xD697, 0xD698, - 0xD699, 0xD69A, 0xD69B, 0xD69C, 0xD69E, 0xD6A0, 0xD6A2, 0xD6A3, 0xD6A4, - 0xD6A5, 0xD6A6, 0xD6A7, 0xD6A9, 0xD6AA, 0xD6AB, 0xD6AD, 0xD6AE, 0xD6AF, - 0xD6B1, 0xD6B2, 0xD6B3, 0xD6B4, 0xD6B5, 0xD6B6, 0xD6B7, 0xD6B8, 0xD6BA, - 0xD6BC, 0xD6BD, 0xD6BE, 0xD6BF, 0xD6C0, 0xD6C1, 0xD6C2, 0xD6C3, 0xD6C6, - 0xD6C7, 0xD6C9, 0xD6CA, 0xD6CB, 0xD6CD, 0xD6CE, 0xD6CF, 0xD6D0, 0xD6D2, - 0xD6D3, 0xD6D5, 0xD6D6, 0xD6D8, 0xD6DA, 0xD6DB, 0xD6DC, 0xD6DD, 0xD6DE, - 0xD6DF, 0xD6E1, 0xD6E2, 0xD6E3, 0xD6E5, 0xD6E6, 0xD6E7, 0xD6E9, 0xD6EA, - 0xD6EB, 0xD6EC, 0xD6ED, 0xD6EE, 0xD6EF, 0xD6F1, 0xD6F2, 0xD6F3, 0xD6F4, - 0xD6F6, 0xD6F7, 0xD6F8, 0xD6F9, 0xD6FA, 0xD6FB, 0xD6FE, 0xD6FF, 0xD701, - 0xD702, 0xD703, 0xD705, 0xD706, 0xD707, 0xD708, 0xD709, 0xD70A, 0xD70B, - 0xD70C, 0xD70D, 0xD70E, 0xD70F, 0xD710, 0xD712, 0xD713, 0xD714, 0xD715, - 0xD716, 0xD717, 0xD71A, 0xD71B, 0xD71D, 0xD71E, 0xD71F, 0xD721, 0xD722, - 0xD723, 0xD724, 0xD725, 0xD726, 0xD727, 0xD72A, 0xD72C, 0xD72E, 0xD72F, - 0xD730, 0xD731, 0xD732, 0xD733, 0xD736, 0xD737, 0xD739, 0xD73A, 0xD73B, - 0xD73D, 0xD73E, 0xD73F, 0xD740, 0xD741, 0xD742, 0xD743, 0xD745, 0xD746, - 0xD748, 0xD74A, 0xD74B, 0xD74C, 0xD74D, 0xD74E, 0xD74F, 0xD752, 0xD753, - 0xD755, 0xD75A, 0xD75B, 0xD75C, 0xD75D, 0xD75E, 0xD75F, 0xD762, 0xD764, - 0xD766, 0xD767, 0xD768, 0xD76A, 0xD76B, 0xD76D, 0xD76E, 0xD76F, 0xD771, - 0xD772, 0xD773, 0xD775, 0xD776, 0xD777, 0xD778, 0xD779, 0xD77A, 0xD77B, - 0xD77E, 0xD77F, 0xD780, 0xD782, 0xD783, 0xD784, 0xD785, 0xD786, 0xD787, - 0xD78A, 0xD78B, 0xD78D, 0xD78E, 0xD78F, 0xD791, 0xD792, 0xD793, 0xD794, - 0xD795, 0xD796, 0xD797, 0xD79A, 0xD79C, 0xD79E, 0xD79F, 0xD7A0, 0xD7A1, - 0xD7A2, 0xD7A3, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, - 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, - 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, - 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, - 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, - 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, - 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, - 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, - 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, - 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20A9, 0x2010, - 0x00A9, 0x2122, 0x22EF, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, - 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, - 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, - 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, - 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, - 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, - 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, - 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, - 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, - 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007E, - 0x005C, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp deleted file mode 100644 index 17d1d2a042..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_KSC_EUC_H_0[467 * 3] = { - 0x0020, 0x007E, 0x1F9E, 0xA1A1, 0xA1FE, 0x0065, 0xA2A1, 0xA2E5, 0x00C3, - 0xA3A1, 0xA3FE, 0x0108, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199, - 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, - 0xA5E1, 0xA5F8, 0x01EF, 0xA6A1, 0xA6E4, 0x0207, 0xA7A1, 0xA7EF, 0x024B, - 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F, - 0xA8B1, 0xA8FE, 0x02A7, 0xA9A1, 0xA9FE, 0x02F5, 0xAAA1, 0xAAF3, 0x0353, - 0xABA1, 0xABF6, 0x03A6, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D, - 0xB0A1, 0xB0FE, 0x043E, 0xB1A1, 0xB1FE, 0x049C, 0xB2A1, 0xB2FE, 0x04FA, - 0xB3A1, 0xB3FE, 0x0558, 0xB4A1, 0xB4FE, 0x05B6, 0xB5A1, 0xB5FE, 0x0614, - 0xB6A1, 0xB6FE, 0x0672, 0xB7A1, 0xB7FE, 0x06D0, 0xB8A1, 0xB8FE, 0x072E, - 0xB9A1, 0xB9FE, 0x078C, 0xBAA1, 0xBAFE, 0x07EA, 0xBBA1, 0xBBFE, 0x0848, - 0xBCA1, 0xBCFE, 0x08A6, 0xBDA1, 0xBDFE, 0x0904, 0xBEA1, 0xBEFE, 0x0962, - 0xBFA1, 0xBFFE, 0x09C0, 0xC0A1, 0xC0FE, 0x0A1E, 0xC1A1, 0xC1FE, 0x0A7C, - 0xC2A1, 0xC2FE, 0x0ADA, 0xC3A1, 0xC3FE, 0x0B38, 0xC4A1, 0xC4FE, 0x0B96, - 0xC5A1, 0xC5FE, 0x0BF4, 0xC6A1, 0xC6FE, 0x0C52, 0xC7A1, 0xC7FE, 0x0CB0, - 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, 0xCBA1, 0xCBCF, 0x0DCA, - 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, 0xCBD6, 0xCBD6, 0x0E5E, - 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, 0xCBE8, 0xCBFE, 0x0E0E, - 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, 0xCDCF, 0xCDCF, 0x0D84, - 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, 0xCDE9, 0xCDFE, 0x0EC9, - 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, 0xCEAE, 0xCEFE, 0x0EEB, - 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, 0xCFFC, 0xCFFE, 0x0F96, - 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, 0xD0A3, 0xD0B7, 0x0F9A, - 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, 0xD0D0, 0xD0D0, 0x0E7C, - 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, 0xD0DE, 0xD0FE, 0x0FD2, - 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, 0xD1D5, 0xD1D5, 0x103C, - 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, 0xD1D9, 0xD1DA, 0x1028, - 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, 0xD1E2, 0xD1E2, 0x16A8, - 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, 0xD1E7, 0xD1E7, 0x102B, - 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, 0xD1ED, 0xD1ED, 0x1127, - 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, 0xD1F1, 0xD1F1, 0x102E, - 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, 0xD1F6, 0xD1F6, 0x112F, - 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, 0xD1FB, 0xD1FB, 0x1035, - 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, 0xD2A1, 0xD2A1, 0x1036, - 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, 0xD2A7, 0xD2AA, 0x113C, - 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, 0xD2AD, 0xD2AD, 0x1144, - 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, 0xD2B3, 0xD2BD, 0x103F, - 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, 0xD2C2, 0xD2C3, 0x11A1, - 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, 0xD2C6, 0xD2CA, 0x11A6, - 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, 0xD2CD, 0xD2CE, 0x11AD, - 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, 0xD2D8, 0xD2D8, 0x104F, - 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, 0xD2DE, 0xD2DF, 0x11C1, - 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, 0xD2E2, 0xD2E2, 0x11C6, - 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, 0xD2E5, 0xD2E8, 0x11D6, - 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, 0xD2EC, 0xD2EF, 0x1055, - 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, 0xD2F6, 0xD2F6, 0x1059, - 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, 0xD3A1, 0xD3FE, 0x1060, - 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, 0xD4E7, 0xD4FB, 0x1103, - 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, 0xD5A1, 0xD5A4, 0x111A, - 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, 0xD5AB, 0xD5AB, 0x102B, - 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, 0xD5AF, 0xD5FE, 0x1125, - 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, 0xD6B9, 0xD6CC, 0x118C, - 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, 0xD7A1, 0xD7CA, 0x11D1, - 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, 0xD7E4, 0xD7E4, 0x1918, - 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, 0xD9A1, 0xD9FE, 0x128B, - 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, 0xDBC5, 0xDBC5, 0x141F, - 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, 0xDBE5, 0xDBFE, 0x1389, - 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, 0xDCA6, 0xDCFE, 0x13A7, - 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, 0xDDA6, 0xDDD4, 0x1404, - 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, 0xDDF4, 0xDDF4, 0x1DB7, - 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, 0xDEFC, 0xDEFC, 0x15D0, - 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, 0xDFA1, 0xDFB2, 0x14B7, - 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, 0xDFE1, 0xDFE1, 0x14F2, - 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, 0xDFE9, 0xDFFE, 0x14FC, - 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, 0xE0F2, 0xE0FE, 0x1562, - 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, 0xE1AE, 0xE1EC, 0x157B, - 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, 0xE2A1, 0xE2FE, 0x15CB, - 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, 0xE3F6, 0xE3FE, 0x167D, - 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, 0xE4A9, 0xE4A9, 0x162E, - 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, 0xE5AE, 0xE5AE, 0x16F2, - 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, 0xE5B3, 0xE5B8, 0x16F1, - 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, 0xE5BB, 0xE5BC, 0x114D, - 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, 0xE5C5, 0xE5CD, 0x16FF, - 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, 0xE5D0, 0xE5D0, 0x1154, - 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, 0xE5D3, 0xE5D5, 0x170A, - 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, 0xE5FA, 0xE5FB, 0x115A, - 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, 0xE5FE, 0xE5FE, 0x115C, - 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, 0xE6A4, 0xE6A4, 0x1161, - 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, 0xE6A8, 0xE6AC, 0x1735, - 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, 0xE6AF, 0xE6B1, 0x1167, - 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, 0xE6B4, 0xE6B6, 0x173C, - 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, 0xE6BC, 0xE6BC, 0x116F, - 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, 0xE6C5, 0xE6C5, 0x1749, - 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, 0xE6CA, 0xE6CA, 0x1041, - 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, 0xE6D3, 0xE6D5, 0x1753, - 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, 0xE6D9, 0xE6D9, 0x1176, - 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, 0xE6DD, 0xE6DE, 0x175A, - 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, 0xE6E1, 0xE6E1, 0x1178, - 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, 0xE6E5, 0xE6E5, 0x1179, - 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, 0xE6E8, 0xE6E8, 0x117C, - 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, 0xE6EC, 0xE6EC, 0x192F, - 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, 0xE6F0, 0xE6F0, 0x1763, - 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, 0xE6F3, 0xE6F4, 0x1764, - 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, 0xE6F7, 0xE6F7, 0x1046, - 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, 0xE6FA, 0xE6FE, 0x1767, - 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, 0xE7A6, 0xE7A6, 0x1188, - 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, 0xE7AA, 0xE7AA, 0x118B, - 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, 0xE7AD, 0xE7AD, 0x118D, - 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, 0xE7B1, 0xE7BE, 0x1775, - 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, 0xE7C1, 0xE7C1, 0x1E67, - 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, 0xE7C7, 0xE7C7, 0x1193, - 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, 0xE7CC, 0xE7CC, 0x178B, - 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, 0xE7CF, 0xE7D0, 0x1197, - 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, 0xE7D4, 0xE7DE, 0x178F, - 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, 0xE7E4, 0xE7E4, 0x119D, - 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, 0xE7E7, 0xE7F6, 0x179F, - 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, 0xE8A1, 0xE8E6, 0x17B6, - 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, 0xE8F0, 0xE8F0, 0x11C9, - 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, 0xE8F7, 0xE8F7, 0x11CB, - 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, 0xE8FA, 0xE8FA, 0x1809, - 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, 0xE8FE, 0xE8FE, 0x11CD, - 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, 0xE9A8, 0xE9AB, 0x1812, - 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, 0xE9CC, 0xE9CC, 0x11D3, - 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, 0xE9F8, 0xE9FE, 0x185F, - 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, 0xEAC2, 0xEAE4, 0x1886, - 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, 0xEAF4, 0xEAF4, 0x1057, - 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, 0xEAF8, 0xEAFB, 0x18B9, - 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, 0xEAFE, 0xEAFE, 0x11E6, - 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, 0xEBA5, 0xEBA6, 0x18C1, - 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, 0xEBA9, 0xEBA9, 0x11EC, - 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, 0xEBBA, 0xEBBB, 0x11EE, - 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, 0xEBBE, 0xEBC0, 0x18D4, - 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, 0xEBC3, 0xEBC5, 0x18D7, - 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, 0xEBCC, 0xEBCC, 0x11F7, - 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, 0xEBD2, 0xEBD2, 0x15B0, - 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, 0xEBD9, 0xEBFE, 0x18E5, - 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, 0xECA7, 0xECA7, 0x1208, - 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, 0xECAB, 0xECAE, 0x1912, - 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, 0xECB2, 0xECB2, 0x105B, - 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, 0xECB6, 0xECB7, 0x1918, - 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, 0xECBA, 0xECBA, 0x1215, - 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, 0xECC2, 0xECC4, 0x1920, - 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, 0xECC7, 0xECC8, 0x1923, - 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, 0xECD5, 0xECD5, 0x121E, - 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, 0xECDF, 0xECE0, 0x1936, - 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, 0xECE4, 0xECE4, 0x1224, - 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, 0xECE9, 0xECF6, 0x193C, - 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, 0xECFA, 0xECFA, 0x122A, - 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, 0xEDA4, 0xEDED, 0x194F, - 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, 0xEEA1, 0xEEDA, 0x19A9, - 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, 0xEFA1, 0xEFFE, 0x1A06, - 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, 0xF2A1, 0xF2BC, 0x1B20, - 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, 0xF2FA, 0xF2FA, 0x168B, - 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, 0xF3B1, 0xF3B1, 0x105F, - 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, 0xF4A7, 0xF4A7, 0x1954, - 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, 0xF4EF, 0xF4FE, 0x1C25, - 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, 0xF6F4, 0xF6F4, 0x10B7, - 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, 0xF6F7, 0xF6FE, 0x1CE7, - 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, 0xF7B9, 0xF7C7, 0x1D06, - 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, 0xF7D3, 0xF7D3, 0x10F4, - 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, 0xF8DB, 0xF8DB, 0x1D94, - 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, 0xF8F1, 0xF8FE, 0x1D98, - 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, 0xFAA2, 0xFAA2, 0x0DE6, - 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, 0xFAE7, 0xFAFE, 0x1E47, - 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, 0xFCA9, 0xFCA9, 0x0EE7, - 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp deleted file mode 100644 index 211de4bc05..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_KSC_EUC_V_0[16 * 3] = { - 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6, - 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2, - 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C, - 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE, - 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD, - 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp deleted file mode 100644 index fffb3c64b5..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_KSCms_UHC_HW_H_1[675 * 3] = { - 0x0020, 0x007E, 0x1F9E, 0x8141, 0x815A, 0x2475, 0x8161, 0x817A, 0x248F, - 0x8181, 0x81FE, 0x24A9, 0x8241, 0x825A, 0x2527, 0x8261, 0x827A, 0x2541, - 0x8281, 0x82FE, 0x255B, 0x8341, 0x835A, 0x25D9, 0x8361, 0x837A, 0x25F3, - 0x8381, 0x83FE, 0x260D, 0x8441, 0x845A, 0x268B, 0x8461, 0x847A, 0x26A5, - 0x8481, 0x84FE, 0x26BF, 0x8541, 0x855A, 0x273D, 0x8561, 0x857A, 0x2757, - 0x8581, 0x85FE, 0x2771, 0x8641, 0x865A, 0x27EF, 0x8661, 0x867A, 0x2809, - 0x8681, 0x86FE, 0x2823, 0x8741, 0x875A, 0x28A1, 0x8761, 0x877A, 0x28BB, - 0x8781, 0x87FE, 0x28D5, 0x8841, 0x885A, 0x2953, 0x8861, 0x887A, 0x296D, - 0x8881, 0x88FE, 0x2987, 0x8941, 0x895A, 0x2A05, 0x8961, 0x897A, 0x2A1F, - 0x8981, 0x89FE, 0x2A39, 0x8A41, 0x8A5A, 0x2AB7, 0x8A61, 0x8A7A, 0x2AD1, - 0x8A81, 0x8AFE, 0x2AEB, 0x8B41, 0x8B5A, 0x2B69, 0x8B61, 0x8B7A, 0x2B83, - 0x8B81, 0x8BFE, 0x2B9D, 0x8C41, 0x8C5A, 0x2C1B, 0x8C61, 0x8C7A, 0x2C35, - 0x8C81, 0x8CFE, 0x2C4F, 0x8D41, 0x8D5A, 0x2CCD, 0x8D61, 0x8D7A, 0x2CE7, - 0x8D81, 0x8DFE, 0x2D01, 0x8E41, 0x8E5A, 0x2D7F, 0x8E61, 0x8E7A, 0x2D99, - 0x8E81, 0x8EFE, 0x2DB3, 0x8F41, 0x8F5A, 0x2E31, 0x8F61, 0x8F7A, 0x2E4B, - 0x8F81, 0x8FFE, 0x2E65, 0x9041, 0x905A, 0x2EE3, 0x9061, 0x907A, 0x2EFD, - 0x9081, 0x90FE, 0x2F17, 0x9141, 0x915A, 0x2F95, 0x9161, 0x917A, 0x2FAF, - 0x9181, 0x91FE, 0x2FC9, 0x9241, 0x925A, 0x3047, 0x9261, 0x927A, 0x3061, - 0x9281, 0x92FE, 0x307B, 0x9341, 0x935A, 0x30F9, 0x9361, 0x937A, 0x3113, - 0x9381, 0x93FE, 0x312D, 0x9441, 0x945A, 0x31AB, 0x9461, 0x947A, 0x31C5, - 0x9481, 0x94FE, 0x31DF, 0x9541, 0x955A, 0x325D, 0x9561, 0x957A, 0x3277, - 0x9581, 0x95FE, 0x3291, 0x9641, 0x965A, 0x330F, 0x9661, 0x967A, 0x3329, - 0x9681, 0x96FE, 0x3343, 0x9741, 0x975A, 0x33C1, 0x9761, 0x977A, 0x33DB, - 0x9781, 0x97FE, 0x33F5, 0x9841, 0x985A, 0x3473, 0x9861, 0x987A, 0x348D, - 0x9881, 0x98FE, 0x34A7, 0x9941, 0x995A, 0x3525, 0x9961, 0x997A, 0x353F, - 0x9981, 0x99FE, 0x3559, 0x9A41, 0x9A5A, 0x35D7, 0x9A61, 0x9A7A, 0x35F1, - 0x9A81, 0x9AFE, 0x360B, 0x9B41, 0x9B5A, 0x3689, 0x9B61, 0x9B7A, 0x36A3, - 0x9B81, 0x9BFE, 0x36BD, 0x9C41, 0x9C5A, 0x373B, 0x9C61, 0x9C7A, 0x3755, - 0x9C81, 0x9CFE, 0x376F, 0x9D41, 0x9D5A, 0x37ED, 0x9D61, 0x9D7A, 0x3807, - 0x9D81, 0x9DFE, 0x3821, 0x9E41, 0x9E5A, 0x389F, 0x9E61, 0x9E7A, 0x38B9, - 0x9E81, 0x9EFE, 0x38D3, 0x9F41, 0x9F5A, 0x3951, 0x9F61, 0x9F7A, 0x396B, - 0x9F81, 0x9FFE, 0x3985, 0xA041, 0xA05A, 0x3A03, 0xA061, 0xA07A, 0x3A1D, - 0xA081, 0xA0FE, 0x3A37, 0xA141, 0xA15A, 0x3AB5, 0xA161, 0xA17A, 0x3ACF, - 0xA181, 0xA1A0, 0x3AE9, 0xA1A1, 0xA1FE, 0x0065, 0xA241, 0xA25A, 0x3B09, - 0xA261, 0xA27A, 0x3B23, 0xA281, 0xA2A0, 0x3B3D, 0xA2A1, 0xA2E5, 0x00C3, - 0xA341, 0xA35A, 0x3B5D, 0xA361, 0xA37A, 0x3B77, 0xA381, 0xA3A0, 0x3B91, - 0xA3A1, 0xA3FE, 0x0108, 0xA441, 0xA45A, 0x3BB1, 0xA461, 0xA47A, 0x3BCB, - 0xA481, 0xA4A0, 0x3BE5, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199, - 0xA541, 0xA55A, 0x3C05, 0xA561, 0xA57A, 0x3C1F, 0xA581, 0xA5A0, 0x3C39, - 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, - 0xA5E1, 0xA5F8, 0x01EF, 0xA641, 0xA65A, 0x3C59, 0xA661, 0xA67A, 0x3C73, - 0xA681, 0xA6A0, 0x3C8D, 0xA6A1, 0xA6E4, 0x0207, 0xA741, 0xA75A, 0x3CAD, - 0xA761, 0xA77A, 0x3CC7, 0xA781, 0xA7A0, 0x3CE1, 0xA7A1, 0xA7EF, 0x024B, - 0xA841, 0xA85A, 0x3D01, 0xA861, 0xA87A, 0x3D1B, 0xA881, 0xA8A0, 0x3D35, - 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F, - 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA95A, 0x3D55, 0xA961, 0xA97A, 0x3D6F, - 0xA981, 0xA9A0, 0x3D89, 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA5A, 0x3DA9, - 0xAA61, 0xAA7A, 0x3DC3, 0xAA81, 0xAAA0, 0x3DDD, 0xAAA1, 0xAAF3, 0x0353, - 0xAB41, 0xAB5A, 0x3DFD, 0xAB61, 0xAB7A, 0x3E17, 0xAB81, 0xABA0, 0x3E31, - 0xABA1, 0xABF6, 0x03A6, 0xAC41, 0xAC5A, 0x3E51, 0xAC61, 0xAC7A, 0x3E6B, - 0xAC81, 0xACA0, 0x3E85, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D, - 0xAD41, 0xAD5A, 0x3EA5, 0xAD61, 0xAD7A, 0x3EBF, 0xAD81, 0xADA0, 0x3ED9, - 0xAE41, 0xAE5A, 0x3EF9, 0xAE61, 0xAE7A, 0x3F13, 0xAE81, 0xAEA0, 0x3F2D, - 0xAF41, 0xAF5A, 0x3F4D, 0xAF61, 0xAF7A, 0x3F67, 0xAF81, 0xAFA0, 0x3F81, - 0xB041, 0xB05A, 0x3FA1, 0xB061, 0xB07A, 0x3FBB, 0xB081, 0xB0A0, 0x3FD5, - 0xB0A1, 0xB0FE, 0x043E, 0xB141, 0xB15A, 0x3FF5, 0xB161, 0xB17A, 0x400F, - 0xB181, 0xB1A0, 0x4029, 0xB1A1, 0xB1FE, 0x049C, 0xB241, 0xB25A, 0x4049, - 0xB261, 0xB27A, 0x4063, 0xB281, 0xB2A0, 0x407D, 0xB2A1, 0xB2FE, 0x04FA, - 0xB341, 0xB35A, 0x409D, 0xB361, 0xB37A, 0x40B7, 0xB381, 0xB3A0, 0x40D1, - 0xB3A1, 0xB3FE, 0x0558, 0xB441, 0xB45A, 0x40F1, 0xB461, 0xB47A, 0x410B, - 0xB481, 0xB4A0, 0x4125, 0xB4A1, 0xB4FE, 0x05B6, 0xB541, 0xB55A, 0x4145, - 0xB561, 0xB57A, 0x415F, 0xB581, 0xB5A0, 0x4179, 0xB5A1, 0xB5FE, 0x0614, - 0xB641, 0xB65A, 0x4199, 0xB661, 0xB67A, 0x41B3, 0xB681, 0xB6A0, 0x41CD, - 0xB6A1, 0xB6FE, 0x0672, 0xB741, 0xB75A, 0x41ED, 0xB761, 0xB77A, 0x4207, - 0xB781, 0xB7A0, 0x4221, 0xB7A1, 0xB7FE, 0x06D0, 0xB841, 0xB85A, 0x4241, - 0xB861, 0xB87A, 0x425B, 0xB881, 0xB8A0, 0x4275, 0xB8A1, 0xB8FE, 0x072E, - 0xB941, 0xB95A, 0x4295, 0xB961, 0xB97A, 0x42AF, 0xB981, 0xB9A0, 0x42C9, - 0xB9A1, 0xB9FE, 0x078C, 0xBA41, 0xBA5A, 0x42E9, 0xBA61, 0xBA7A, 0x4303, - 0xBA81, 0xBAA0, 0x431D, 0xBAA1, 0xBAFE, 0x07EA, 0xBB41, 0xBB5A, 0x433D, - 0xBB61, 0xBB7A, 0x4357, 0xBB81, 0xBBA0, 0x4371, 0xBBA1, 0xBBFE, 0x0848, - 0xBC41, 0xBC5A, 0x4391, 0xBC61, 0xBC7A, 0x43AB, 0xBC81, 0xBCA0, 0x43C5, - 0xBCA1, 0xBCFE, 0x08A6, 0xBD41, 0xBD5A, 0x43E5, 0xBD61, 0xBD7A, 0x43FF, - 0xBD81, 0xBDA0, 0x4419, 0xBDA1, 0xBDFE, 0x0904, 0xBE41, 0xBE5A, 0x4439, - 0xBE61, 0xBE7A, 0x4453, 0xBE81, 0xBEA0, 0x446D, 0xBEA1, 0xBEFE, 0x0962, - 0xBF41, 0xBF5A, 0x448D, 0xBF61, 0xBF7A, 0x44A7, 0xBF81, 0xBFA0, 0x44C1, - 0xBFA1, 0xBFFE, 0x09C0, 0xC041, 0xC05A, 0x44E1, 0xC061, 0xC07A, 0x44FB, - 0xC081, 0xC0A0, 0x4515, 0xC0A1, 0xC0FE, 0x0A1E, 0xC141, 0xC15A, 0x4535, - 0xC161, 0xC17A, 0x454F, 0xC181, 0xC1A0, 0x4569, 0xC1A1, 0xC1FE, 0x0A7C, - 0xC241, 0xC25A, 0x4589, 0xC261, 0xC27A, 0x45A3, 0xC281, 0xC2A0, 0x45BD, - 0xC2A1, 0xC2FE, 0x0ADA, 0xC341, 0xC35A, 0x45DD, 0xC361, 0xC37A, 0x45F7, - 0xC381, 0xC3A0, 0x4611, 0xC3A1, 0xC3FE, 0x0B38, 0xC441, 0xC45A, 0x4631, - 0xC461, 0xC47A, 0x464B, 0xC481, 0xC4A0, 0x4665, 0xC4A1, 0xC4FE, 0x0B96, - 0xC541, 0xC55A, 0x4685, 0xC561, 0xC57A, 0x469F, 0xC581, 0xC5A0, 0x46B9, - 0xC5A1, 0xC5FE, 0x0BF4, 0xC641, 0xC652, 0x46D9, 0xC6A1, 0xC6FE, 0x0C52, - 0xC7A1, 0xC7FE, 0x0CB0, 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, - 0xCBA1, 0xCBCF, 0x0DCA, 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, - 0xCBD6, 0xCBD6, 0x0E5E, 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, - 0xCBE8, 0xCBFE, 0x0E0E, 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, - 0xCDCF, 0xCDCF, 0x0D84, 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, - 0xCDE9, 0xCDFE, 0x0EC9, 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, - 0xCEAE, 0xCEFE, 0x0EEB, 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, - 0xCFFC, 0xCFFE, 0x0F96, 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, - 0xD0A3, 0xD0B7, 0x0F9A, 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, - 0xD0D0, 0xD0D0, 0x0E7C, 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, - 0xD0DE, 0xD0FE, 0x0FD2, 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, - 0xD1D5, 0xD1D5, 0x103C, 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, - 0xD1D9, 0xD1DA, 0x1028, 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, - 0xD1E2, 0xD1E2, 0x16A8, 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, - 0xD1E7, 0xD1E7, 0x102B, 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, - 0xD1ED, 0xD1ED, 0x1127, 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, - 0xD1F1, 0xD1F1, 0x102E, 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, - 0xD1F6, 0xD1F6, 0x112F, 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, - 0xD1FB, 0xD1FB, 0x1035, 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, - 0xD2A1, 0xD2A1, 0x1036, 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, - 0xD2A7, 0xD2AA, 0x113C, 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, - 0xD2AD, 0xD2AD, 0x1144, 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, - 0xD2B3, 0xD2BD, 0x103F, 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, - 0xD2C2, 0xD2C3, 0x11A1, 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, - 0xD2C6, 0xD2CA, 0x11A6, 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, - 0xD2CD, 0xD2CE, 0x11AD, 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, - 0xD2D8, 0xD2D8, 0x104F, 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, - 0xD2DE, 0xD2DF, 0x11C1, 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, - 0xD2E2, 0xD2E2, 0x11C6, 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, - 0xD2E5, 0xD2E8, 0x11D6, 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, - 0xD2EC, 0xD2EF, 0x1055, 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, - 0xD2F6, 0xD2F6, 0x1059, 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, - 0xD3A1, 0xD3FE, 0x1060, 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, - 0xD4E7, 0xD4FB, 0x1103, 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, - 0xD5A1, 0xD5A4, 0x111A, 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, - 0xD5AB, 0xD5AB, 0x102B, 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, - 0xD5AF, 0xD5FE, 0x1125, 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, - 0xD6B9, 0xD6CC, 0x118C, 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, - 0xD7A1, 0xD7CA, 0x11D1, 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, - 0xD7E4, 0xD7E4, 0x1918, 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, - 0xD9A1, 0xD9FE, 0x128B, 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, - 0xDBC5, 0xDBC5, 0x141F, 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, - 0xDBE5, 0xDBFE, 0x1389, 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, - 0xDCA6, 0xDCFE, 0x13A7, 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, - 0xDDA6, 0xDDD4, 0x1404, 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, - 0xDDF4, 0xDDF4, 0x1DB7, 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, - 0xDEFC, 0xDEFC, 0x15D0, 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, - 0xDFA1, 0xDFB2, 0x14B7, 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, - 0xDFE1, 0xDFE1, 0x14F2, 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, - 0xDFE9, 0xDFFE, 0x14FC, 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, - 0xE0F2, 0xE0FE, 0x1562, 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, - 0xE1AE, 0xE1EC, 0x157B, 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, - 0xE2A1, 0xE2FE, 0x15CB, 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, - 0xE3F6, 0xE3FE, 0x167D, 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, - 0xE4A9, 0xE4A9, 0x162E, 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, - 0xE5AE, 0xE5AE, 0x16F2, 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, - 0xE5B3, 0xE5B8, 0x16F1, 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, - 0xE5BB, 0xE5BC, 0x114D, 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, - 0xE5C5, 0xE5CD, 0x16FF, 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, - 0xE5D0, 0xE5D0, 0x1154, 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, - 0xE5D3, 0xE5D5, 0x170A, 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, - 0xE5FA, 0xE5FB, 0x115A, 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, - 0xE5FE, 0xE5FE, 0x115C, 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, - 0xE6A4, 0xE6A4, 0x1161, 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, - 0xE6A8, 0xE6AC, 0x1735, 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, - 0xE6AF, 0xE6B1, 0x1167, 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, - 0xE6B4, 0xE6B6, 0x173C, 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, - 0xE6BC, 0xE6BC, 0x116F, 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, - 0xE6C5, 0xE6C5, 0x1749, 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, - 0xE6CA, 0xE6CA, 0x1041, 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, - 0xE6D3, 0xE6D5, 0x1753, 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, - 0xE6D9, 0xE6D9, 0x1176, 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, - 0xE6DD, 0xE6DE, 0x175A, 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, - 0xE6E1, 0xE6E1, 0x1178, 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, - 0xE6E5, 0xE6E5, 0x1179, 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, - 0xE6E8, 0xE6E8, 0x117C, 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, - 0xE6EC, 0xE6EC, 0x192F, 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, - 0xE6F0, 0xE6F0, 0x1763, 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, - 0xE6F3, 0xE6F4, 0x1764, 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, - 0xE6F7, 0xE6F7, 0x1046, 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, - 0xE6FA, 0xE6FE, 0x1767, 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, - 0xE7A6, 0xE7A6, 0x1188, 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, - 0xE7AA, 0xE7AA, 0x118B, 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, - 0xE7AD, 0xE7AD, 0x118D, 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, - 0xE7B1, 0xE7BE, 0x1775, 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, - 0xE7C1, 0xE7C1, 0x1E67, 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, - 0xE7C7, 0xE7C7, 0x1193, 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, - 0xE7CC, 0xE7CC, 0x178B, 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, - 0xE7CF, 0xE7D0, 0x1197, 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, - 0xE7D4, 0xE7DE, 0x178F, 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, - 0xE7E4, 0xE7E4, 0x119D, 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, - 0xE7E7, 0xE7F6, 0x179F, 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, - 0xE8A1, 0xE8E6, 0x17B6, 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, - 0xE8F0, 0xE8F0, 0x11C9, 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, - 0xE8F7, 0xE8F7, 0x11CB, 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, - 0xE8FA, 0xE8FA, 0x1809, 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, - 0xE8FE, 0xE8FE, 0x11CD, 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, - 0xE9A8, 0xE9AB, 0x1812, 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, - 0xE9CC, 0xE9CC, 0x11D3, 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, - 0xE9F8, 0xE9FE, 0x185F, 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, - 0xEAC2, 0xEAE4, 0x1886, 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, - 0xEAF4, 0xEAF4, 0x1057, 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, - 0xEAF8, 0xEAFB, 0x18B9, 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, - 0xEAFE, 0xEAFE, 0x11E6, 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, - 0xEBA5, 0xEBA6, 0x18C1, 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, - 0xEBA9, 0xEBA9, 0x11EC, 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, - 0xEBBA, 0xEBBB, 0x11EE, 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, - 0xEBBE, 0xEBC0, 0x18D4, 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, - 0xEBC3, 0xEBC5, 0x18D7, 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, - 0xEBCC, 0xEBCC, 0x11F7, 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, - 0xEBD2, 0xEBD2, 0x15B0, 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, - 0xEBD9, 0xEBFE, 0x18E5, 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, - 0xECA7, 0xECA7, 0x1208, 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, - 0xECAB, 0xECAE, 0x1912, 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, - 0xECB2, 0xECB2, 0x105B, 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, - 0xECB6, 0xECB7, 0x1918, 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, - 0xECBA, 0xECBA, 0x1215, 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, - 0xECC2, 0xECC4, 0x1920, 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, - 0xECC7, 0xECC8, 0x1923, 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, - 0xECD5, 0xECD5, 0x121E, 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, - 0xECDF, 0xECE0, 0x1936, 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, - 0xECE4, 0xECE4, 0x1224, 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, - 0xECE9, 0xECF6, 0x193C, 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, - 0xECFA, 0xECFA, 0x122A, 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, - 0xEDA4, 0xEDED, 0x194F, 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, - 0xEEA1, 0xEEDA, 0x19A9, 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, - 0xEFA1, 0xEFFE, 0x1A06, 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, - 0xF2A1, 0xF2BC, 0x1B20, 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, - 0xF2FA, 0xF2FA, 0x168B, 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, - 0xF3B1, 0xF3B1, 0x105F, 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, - 0xF4A7, 0xF4A7, 0x1954, 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, - 0xF4EF, 0xF4FE, 0x1C25, 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, - 0xF6F4, 0xF6F4, 0x10B7, 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, - 0xF6F7, 0xF6FE, 0x1CE7, 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, - 0xF7B9, 0xF7C7, 0x1D06, 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, - 0xF7D3, 0xF7D3, 0x10F4, 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, - 0xF8DB, 0xF8DB, 0x1D94, 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, - 0xF8F1, 0xF8FE, 0x1D98, 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, - 0xFAA2, 0xFAA2, 0x0DE6, 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, - 0xFAE7, 0xFAFE, 0x1E47, 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, - 0xFCA9, 0xFCA9, 0x0EE7, 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp deleted file mode 100644 index 37690536e6..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_KSCms_UHC_HW_V_1[16 * 3] = { - 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6, - 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2, - 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C, - 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE, - 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD, - 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp deleted file mode 100644 index d14aabba28..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_KSCms_UHC_H_1[675 * 3] = { - 0x0020, 0x007E, 0x0001, 0x8141, 0x815A, 0x2475, 0x8161, 0x817A, 0x248F, - 0x8181, 0x81FE, 0x24A9, 0x8241, 0x825A, 0x2527, 0x8261, 0x827A, 0x2541, - 0x8281, 0x82FE, 0x255B, 0x8341, 0x835A, 0x25D9, 0x8361, 0x837A, 0x25F3, - 0x8381, 0x83FE, 0x260D, 0x8441, 0x845A, 0x268B, 0x8461, 0x847A, 0x26A5, - 0x8481, 0x84FE, 0x26BF, 0x8541, 0x855A, 0x273D, 0x8561, 0x857A, 0x2757, - 0x8581, 0x85FE, 0x2771, 0x8641, 0x865A, 0x27EF, 0x8661, 0x867A, 0x2809, - 0x8681, 0x86FE, 0x2823, 0x8741, 0x875A, 0x28A1, 0x8761, 0x877A, 0x28BB, - 0x8781, 0x87FE, 0x28D5, 0x8841, 0x885A, 0x2953, 0x8861, 0x887A, 0x296D, - 0x8881, 0x88FE, 0x2987, 0x8941, 0x895A, 0x2A05, 0x8961, 0x897A, 0x2A1F, - 0x8981, 0x89FE, 0x2A39, 0x8A41, 0x8A5A, 0x2AB7, 0x8A61, 0x8A7A, 0x2AD1, - 0x8A81, 0x8AFE, 0x2AEB, 0x8B41, 0x8B5A, 0x2B69, 0x8B61, 0x8B7A, 0x2B83, - 0x8B81, 0x8BFE, 0x2B9D, 0x8C41, 0x8C5A, 0x2C1B, 0x8C61, 0x8C7A, 0x2C35, - 0x8C81, 0x8CFE, 0x2C4F, 0x8D41, 0x8D5A, 0x2CCD, 0x8D61, 0x8D7A, 0x2CE7, - 0x8D81, 0x8DFE, 0x2D01, 0x8E41, 0x8E5A, 0x2D7F, 0x8E61, 0x8E7A, 0x2D99, - 0x8E81, 0x8EFE, 0x2DB3, 0x8F41, 0x8F5A, 0x2E31, 0x8F61, 0x8F7A, 0x2E4B, - 0x8F81, 0x8FFE, 0x2E65, 0x9041, 0x905A, 0x2EE3, 0x9061, 0x907A, 0x2EFD, - 0x9081, 0x90FE, 0x2F17, 0x9141, 0x915A, 0x2F95, 0x9161, 0x917A, 0x2FAF, - 0x9181, 0x91FE, 0x2FC9, 0x9241, 0x925A, 0x3047, 0x9261, 0x927A, 0x3061, - 0x9281, 0x92FE, 0x307B, 0x9341, 0x935A, 0x30F9, 0x9361, 0x937A, 0x3113, - 0x9381, 0x93FE, 0x312D, 0x9441, 0x945A, 0x31AB, 0x9461, 0x947A, 0x31C5, - 0x9481, 0x94FE, 0x31DF, 0x9541, 0x955A, 0x325D, 0x9561, 0x957A, 0x3277, - 0x9581, 0x95FE, 0x3291, 0x9641, 0x965A, 0x330F, 0x9661, 0x967A, 0x3329, - 0x9681, 0x96FE, 0x3343, 0x9741, 0x975A, 0x33C1, 0x9761, 0x977A, 0x33DB, - 0x9781, 0x97FE, 0x33F5, 0x9841, 0x985A, 0x3473, 0x9861, 0x987A, 0x348D, - 0x9881, 0x98FE, 0x34A7, 0x9941, 0x995A, 0x3525, 0x9961, 0x997A, 0x353F, - 0x9981, 0x99FE, 0x3559, 0x9A41, 0x9A5A, 0x35D7, 0x9A61, 0x9A7A, 0x35F1, - 0x9A81, 0x9AFE, 0x360B, 0x9B41, 0x9B5A, 0x3689, 0x9B61, 0x9B7A, 0x36A3, - 0x9B81, 0x9BFE, 0x36BD, 0x9C41, 0x9C5A, 0x373B, 0x9C61, 0x9C7A, 0x3755, - 0x9C81, 0x9CFE, 0x376F, 0x9D41, 0x9D5A, 0x37ED, 0x9D61, 0x9D7A, 0x3807, - 0x9D81, 0x9DFE, 0x3821, 0x9E41, 0x9E5A, 0x389F, 0x9E61, 0x9E7A, 0x38B9, - 0x9E81, 0x9EFE, 0x38D3, 0x9F41, 0x9F5A, 0x3951, 0x9F61, 0x9F7A, 0x396B, - 0x9F81, 0x9FFE, 0x3985, 0xA041, 0xA05A, 0x3A03, 0xA061, 0xA07A, 0x3A1D, - 0xA081, 0xA0FE, 0x3A37, 0xA141, 0xA15A, 0x3AB5, 0xA161, 0xA17A, 0x3ACF, - 0xA181, 0xA1A0, 0x3AE9, 0xA1A1, 0xA1FE, 0x0065, 0xA241, 0xA25A, 0x3B09, - 0xA261, 0xA27A, 0x3B23, 0xA281, 0xA2A0, 0x3B3D, 0xA2A1, 0xA2E5, 0x00C3, - 0xA341, 0xA35A, 0x3B5D, 0xA361, 0xA37A, 0x3B77, 0xA381, 0xA3A0, 0x3B91, - 0xA3A1, 0xA3FE, 0x0108, 0xA441, 0xA45A, 0x3BB1, 0xA461, 0xA47A, 0x3BCB, - 0xA481, 0xA4A0, 0x3BE5, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199, - 0xA541, 0xA55A, 0x3C05, 0xA561, 0xA57A, 0x3C1F, 0xA581, 0xA5A0, 0x3C39, - 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, - 0xA5E1, 0xA5F8, 0x01EF, 0xA641, 0xA65A, 0x3C59, 0xA661, 0xA67A, 0x3C73, - 0xA681, 0xA6A0, 0x3C8D, 0xA6A1, 0xA6E4, 0x0207, 0xA741, 0xA75A, 0x3CAD, - 0xA761, 0xA77A, 0x3CC7, 0xA781, 0xA7A0, 0x3CE1, 0xA7A1, 0xA7EF, 0x024B, - 0xA841, 0xA85A, 0x3D01, 0xA861, 0xA87A, 0x3D1B, 0xA881, 0xA8A0, 0x3D35, - 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F, - 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA95A, 0x3D55, 0xA961, 0xA97A, 0x3D6F, - 0xA981, 0xA9A0, 0x3D89, 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA5A, 0x3DA9, - 0xAA61, 0xAA7A, 0x3DC3, 0xAA81, 0xAAA0, 0x3DDD, 0xAAA1, 0xAAF3, 0x0353, - 0xAB41, 0xAB5A, 0x3DFD, 0xAB61, 0xAB7A, 0x3E17, 0xAB81, 0xABA0, 0x3E31, - 0xABA1, 0xABF6, 0x03A6, 0xAC41, 0xAC5A, 0x3E51, 0xAC61, 0xAC7A, 0x3E6B, - 0xAC81, 0xACA0, 0x3E85, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D, - 0xAD41, 0xAD5A, 0x3EA5, 0xAD61, 0xAD7A, 0x3EBF, 0xAD81, 0xADA0, 0x3ED9, - 0xAE41, 0xAE5A, 0x3EF9, 0xAE61, 0xAE7A, 0x3F13, 0xAE81, 0xAEA0, 0x3F2D, - 0xAF41, 0xAF5A, 0x3F4D, 0xAF61, 0xAF7A, 0x3F67, 0xAF81, 0xAFA0, 0x3F81, - 0xB041, 0xB05A, 0x3FA1, 0xB061, 0xB07A, 0x3FBB, 0xB081, 0xB0A0, 0x3FD5, - 0xB0A1, 0xB0FE, 0x043E, 0xB141, 0xB15A, 0x3FF5, 0xB161, 0xB17A, 0x400F, - 0xB181, 0xB1A0, 0x4029, 0xB1A1, 0xB1FE, 0x049C, 0xB241, 0xB25A, 0x4049, - 0xB261, 0xB27A, 0x4063, 0xB281, 0xB2A0, 0x407D, 0xB2A1, 0xB2FE, 0x04FA, - 0xB341, 0xB35A, 0x409D, 0xB361, 0xB37A, 0x40B7, 0xB381, 0xB3A0, 0x40D1, - 0xB3A1, 0xB3FE, 0x0558, 0xB441, 0xB45A, 0x40F1, 0xB461, 0xB47A, 0x410B, - 0xB481, 0xB4A0, 0x4125, 0xB4A1, 0xB4FE, 0x05B6, 0xB541, 0xB55A, 0x4145, - 0xB561, 0xB57A, 0x415F, 0xB581, 0xB5A0, 0x4179, 0xB5A1, 0xB5FE, 0x0614, - 0xB641, 0xB65A, 0x4199, 0xB661, 0xB67A, 0x41B3, 0xB681, 0xB6A0, 0x41CD, - 0xB6A1, 0xB6FE, 0x0672, 0xB741, 0xB75A, 0x41ED, 0xB761, 0xB77A, 0x4207, - 0xB781, 0xB7A0, 0x4221, 0xB7A1, 0xB7FE, 0x06D0, 0xB841, 0xB85A, 0x4241, - 0xB861, 0xB87A, 0x425B, 0xB881, 0xB8A0, 0x4275, 0xB8A1, 0xB8FE, 0x072E, - 0xB941, 0xB95A, 0x4295, 0xB961, 0xB97A, 0x42AF, 0xB981, 0xB9A0, 0x42C9, - 0xB9A1, 0xB9FE, 0x078C, 0xBA41, 0xBA5A, 0x42E9, 0xBA61, 0xBA7A, 0x4303, - 0xBA81, 0xBAA0, 0x431D, 0xBAA1, 0xBAFE, 0x07EA, 0xBB41, 0xBB5A, 0x433D, - 0xBB61, 0xBB7A, 0x4357, 0xBB81, 0xBBA0, 0x4371, 0xBBA1, 0xBBFE, 0x0848, - 0xBC41, 0xBC5A, 0x4391, 0xBC61, 0xBC7A, 0x43AB, 0xBC81, 0xBCA0, 0x43C5, - 0xBCA1, 0xBCFE, 0x08A6, 0xBD41, 0xBD5A, 0x43E5, 0xBD61, 0xBD7A, 0x43FF, - 0xBD81, 0xBDA0, 0x4419, 0xBDA1, 0xBDFE, 0x0904, 0xBE41, 0xBE5A, 0x4439, - 0xBE61, 0xBE7A, 0x4453, 0xBE81, 0xBEA0, 0x446D, 0xBEA1, 0xBEFE, 0x0962, - 0xBF41, 0xBF5A, 0x448D, 0xBF61, 0xBF7A, 0x44A7, 0xBF81, 0xBFA0, 0x44C1, - 0xBFA1, 0xBFFE, 0x09C0, 0xC041, 0xC05A, 0x44E1, 0xC061, 0xC07A, 0x44FB, - 0xC081, 0xC0A0, 0x4515, 0xC0A1, 0xC0FE, 0x0A1E, 0xC141, 0xC15A, 0x4535, - 0xC161, 0xC17A, 0x454F, 0xC181, 0xC1A0, 0x4569, 0xC1A1, 0xC1FE, 0x0A7C, - 0xC241, 0xC25A, 0x4589, 0xC261, 0xC27A, 0x45A3, 0xC281, 0xC2A0, 0x45BD, - 0xC2A1, 0xC2FE, 0x0ADA, 0xC341, 0xC35A, 0x45DD, 0xC361, 0xC37A, 0x45F7, - 0xC381, 0xC3A0, 0x4611, 0xC3A1, 0xC3FE, 0x0B38, 0xC441, 0xC45A, 0x4631, - 0xC461, 0xC47A, 0x464B, 0xC481, 0xC4A0, 0x4665, 0xC4A1, 0xC4FE, 0x0B96, - 0xC541, 0xC55A, 0x4685, 0xC561, 0xC57A, 0x469F, 0xC581, 0xC5A0, 0x46B9, - 0xC5A1, 0xC5FE, 0x0BF4, 0xC641, 0xC652, 0x46D9, 0xC6A1, 0xC6FE, 0x0C52, - 0xC7A1, 0xC7FE, 0x0CB0, 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, - 0xCBA1, 0xCBCF, 0x0DCA, 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, - 0xCBD6, 0xCBD6, 0x0E5E, 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, - 0xCBE8, 0xCBFE, 0x0E0E, 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, - 0xCDCF, 0xCDCF, 0x0D84, 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, - 0xCDE9, 0xCDFE, 0x0EC9, 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, - 0xCEAE, 0xCEFE, 0x0EEB, 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, - 0xCFFC, 0xCFFE, 0x0F96, 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, - 0xD0A3, 0xD0B7, 0x0F9A, 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, - 0xD0D0, 0xD0D0, 0x0E7C, 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, - 0xD0DE, 0xD0FE, 0x0FD2, 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, - 0xD1D5, 0xD1D5, 0x103C, 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, - 0xD1D9, 0xD1DA, 0x1028, 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, - 0xD1E2, 0xD1E2, 0x16A8, 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, - 0xD1E7, 0xD1E7, 0x102B, 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, - 0xD1ED, 0xD1ED, 0x1127, 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, - 0xD1F1, 0xD1F1, 0x102E, 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, - 0xD1F6, 0xD1F6, 0x112F, 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, - 0xD1FB, 0xD1FB, 0x1035, 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, - 0xD2A1, 0xD2A1, 0x1036, 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, - 0xD2A7, 0xD2AA, 0x113C, 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, - 0xD2AD, 0xD2AD, 0x1144, 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, - 0xD2B3, 0xD2BD, 0x103F, 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, - 0xD2C2, 0xD2C3, 0x11A1, 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, - 0xD2C6, 0xD2CA, 0x11A6, 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, - 0xD2CD, 0xD2CE, 0x11AD, 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, - 0xD2D8, 0xD2D8, 0x104F, 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, - 0xD2DE, 0xD2DF, 0x11C1, 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, - 0xD2E2, 0xD2E2, 0x11C6, 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, - 0xD2E5, 0xD2E8, 0x11D6, 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, - 0xD2EC, 0xD2EF, 0x1055, 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, - 0xD2F6, 0xD2F6, 0x1059, 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, - 0xD3A1, 0xD3FE, 0x1060, 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, - 0xD4E7, 0xD4FB, 0x1103, 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, - 0xD5A1, 0xD5A4, 0x111A, 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, - 0xD5AB, 0xD5AB, 0x102B, 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, - 0xD5AF, 0xD5FE, 0x1125, 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, - 0xD6B9, 0xD6CC, 0x118C, 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, - 0xD7A1, 0xD7CA, 0x11D1, 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, - 0xD7E4, 0xD7E4, 0x1918, 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, - 0xD9A1, 0xD9FE, 0x128B, 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, - 0xDBC5, 0xDBC5, 0x141F, 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, - 0xDBE5, 0xDBFE, 0x1389, 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, - 0xDCA6, 0xDCFE, 0x13A7, 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, - 0xDDA6, 0xDDD4, 0x1404, 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, - 0xDDF4, 0xDDF4, 0x1DB7, 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, - 0xDEFC, 0xDEFC, 0x15D0, 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, - 0xDFA1, 0xDFB2, 0x14B7, 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, - 0xDFE1, 0xDFE1, 0x14F2, 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, - 0xDFE9, 0xDFFE, 0x14FC, 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, - 0xE0F2, 0xE0FE, 0x1562, 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, - 0xE1AE, 0xE1EC, 0x157B, 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, - 0xE2A1, 0xE2FE, 0x15CB, 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, - 0xE3F6, 0xE3FE, 0x167D, 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, - 0xE4A9, 0xE4A9, 0x162E, 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, - 0xE5AE, 0xE5AE, 0x16F2, 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, - 0xE5B3, 0xE5B8, 0x16F1, 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, - 0xE5BB, 0xE5BC, 0x114D, 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, - 0xE5C5, 0xE5CD, 0x16FF, 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, - 0xE5D0, 0xE5D0, 0x1154, 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, - 0xE5D3, 0xE5D5, 0x170A, 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, - 0xE5FA, 0xE5FB, 0x115A, 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, - 0xE5FE, 0xE5FE, 0x115C, 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, - 0xE6A4, 0xE6A4, 0x1161, 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, - 0xE6A8, 0xE6AC, 0x1735, 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, - 0xE6AF, 0xE6B1, 0x1167, 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, - 0xE6B4, 0xE6B6, 0x173C, 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, - 0xE6BC, 0xE6BC, 0x116F, 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, - 0xE6C5, 0xE6C5, 0x1749, 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, - 0xE6CA, 0xE6CA, 0x1041, 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, - 0xE6D3, 0xE6D5, 0x1753, 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, - 0xE6D9, 0xE6D9, 0x1176, 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, - 0xE6DD, 0xE6DE, 0x175A, 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, - 0xE6E1, 0xE6E1, 0x1178, 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, - 0xE6E5, 0xE6E5, 0x1179, 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, - 0xE6E8, 0xE6E8, 0x117C, 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, - 0xE6EC, 0xE6EC, 0x192F, 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, - 0xE6F0, 0xE6F0, 0x1763, 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, - 0xE6F3, 0xE6F4, 0x1764, 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, - 0xE6F7, 0xE6F7, 0x1046, 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, - 0xE6FA, 0xE6FE, 0x1767, 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, - 0xE7A6, 0xE7A6, 0x1188, 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, - 0xE7AA, 0xE7AA, 0x118B, 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, - 0xE7AD, 0xE7AD, 0x118D, 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, - 0xE7B1, 0xE7BE, 0x1775, 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, - 0xE7C1, 0xE7C1, 0x1E67, 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, - 0xE7C7, 0xE7C7, 0x1193, 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, - 0xE7CC, 0xE7CC, 0x178B, 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, - 0xE7CF, 0xE7D0, 0x1197, 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, - 0xE7D4, 0xE7DE, 0x178F, 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, - 0xE7E4, 0xE7E4, 0x119D, 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, - 0xE7E7, 0xE7F6, 0x179F, 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, - 0xE8A1, 0xE8E6, 0x17B6, 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, - 0xE8F0, 0xE8F0, 0x11C9, 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, - 0xE8F7, 0xE8F7, 0x11CB, 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, - 0xE8FA, 0xE8FA, 0x1809, 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, - 0xE8FE, 0xE8FE, 0x11CD, 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, - 0xE9A8, 0xE9AB, 0x1812, 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, - 0xE9CC, 0xE9CC, 0x11D3, 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, - 0xE9F8, 0xE9FE, 0x185F, 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, - 0xEAC2, 0xEAE4, 0x1886, 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, - 0xEAF4, 0xEAF4, 0x1057, 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, - 0xEAF8, 0xEAFB, 0x18B9, 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, - 0xEAFE, 0xEAFE, 0x11E6, 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, - 0xEBA5, 0xEBA6, 0x18C1, 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, - 0xEBA9, 0xEBA9, 0x11EC, 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, - 0xEBBA, 0xEBBB, 0x11EE, 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, - 0xEBBE, 0xEBC0, 0x18D4, 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, - 0xEBC3, 0xEBC5, 0x18D7, 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, - 0xEBCC, 0xEBCC, 0x11F7, 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, - 0xEBD2, 0xEBD2, 0x15B0, 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, - 0xEBD9, 0xEBFE, 0x18E5, 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, - 0xECA7, 0xECA7, 0x1208, 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, - 0xECAB, 0xECAE, 0x1912, 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, - 0xECB2, 0xECB2, 0x105B, 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, - 0xECB6, 0xECB7, 0x1918, 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, - 0xECBA, 0xECBA, 0x1215, 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, - 0xECC2, 0xECC4, 0x1920, 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, - 0xECC7, 0xECC8, 0x1923, 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, - 0xECD5, 0xECD5, 0x121E, 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, - 0xECDF, 0xECE0, 0x1936, 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, - 0xECE4, 0xECE4, 0x1224, 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, - 0xECE9, 0xECF6, 0x193C, 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, - 0xECFA, 0xECFA, 0x122A, 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, - 0xEDA4, 0xEDED, 0x194F, 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, - 0xEEA1, 0xEEDA, 0x19A9, 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, - 0xEFA1, 0xEFFE, 0x1A06, 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, - 0xF2A1, 0xF2BC, 0x1B20, 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, - 0xF2FA, 0xF2FA, 0x168B, 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, - 0xF3B1, 0xF3B1, 0x105F, 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, - 0xF4A7, 0xF4A7, 0x1954, 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, - 0xF4EF, 0xF4FE, 0x1C25, 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, - 0xF6F4, 0xF6F4, 0x10B7, 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, - 0xF6F7, 0xF6FE, 0x1CE7, 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, - 0xF7B9, 0xF7C7, 0x1D06, 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, - 0xF7D3, 0xF7D3, 0x10F4, 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, - 0xF8DB, 0xF8DB, 0x1D94, 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, - 0xF8F1, 0xF8FE, 0x1D98, 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, - 0xFAA2, 0xFAA2, 0x0DE6, 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, - 0xFAE7, 0xFAFE, 0x1E47, 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, - 0xFCA9, 0xFCA9, 0x0EE7, 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp deleted file mode 100644 index c0991de205..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_KSCms_UHC_V_1[16 * 3] = { - 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6, - 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2, - 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C, - 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE, - 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD, - 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp deleted file mode 100644 index 9a58d7a4c8..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_KSCpc_EUC_H_0[509 * 3] = { - 0x0020, 0x007E, 0x0001, 0x0081, 0x0083, 0x0060, 0x00FE, 0x00FF, 0x0063, - 0xA141, 0xA17D, 0x1FFF, 0xA181, 0xA19A, 0x203C, 0xA19C, 0xA1A0, 0x2056, - 0xA1A1, 0xA1A1, 0x0065, 0xA1A2, 0xA1A3, 0x205B, 0xA1A4, 0xA1FE, 0x0068, - 0xA241, 0xA24C, 0x205D, 0xA2A1, 0xA2E5, 0x00C3, 0xA2E6, 0xA2FE, 0x2069, - 0xA341, 0xA37D, 0x2082, 0xA381, 0xA39F, 0x20BF, 0xA3A1, 0xA3FE, 0x0108, - 0xA441, 0xA47D, 0x20DE, 0xA481, 0xA49F, 0x211B, 0xA4A1, 0xA4D3, 0x0166, - 0xA4D5, 0xA4FE, 0x0199, 0xA541, 0xA57D, 0x213A, 0xA581, 0xA58B, 0x2177, - 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7, - 0xA5DA, 0xA5DE, 0x2182, 0xA5E1, 0xA5F8, 0x01EF, 0xA5F9, 0xA5FC, 0x2187, - 0xA641, 0xA67D, 0x218B, 0xA681, 0xA68A, 0x21C8, 0xA68D, 0xA693, 0x21D2, - 0xA696, 0xA69B, 0x21D9, 0xA69E, 0xA69F, 0x21DF, 0xA6A1, 0xA6E4, 0x0207, - 0xA6E5, 0xA6FE, 0x21E1, 0xA741, 0xA77D, 0x21FB, 0xA781, 0xA79F, 0x2238, - 0xA7A1, 0xA7EF, 0x024B, 0xA7F0, 0xA7FE, 0x2257, 0xA841, 0xA87D, 0x2266, - 0xA881, 0xA89F, 0x22A3, 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, - 0xA8A8, 0xA8AF, 0x029F, 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA974, 0x22C2, - 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA7D, 0x22F6, 0xAA81, 0xAA9F, 0x2333, - 0xAAA1, 0xAAF3, 0x0353, 0xAAF4, 0xAAFE, 0x2352, 0xAB41, 0xAB7D, 0x235D, - 0xAB81, 0xAB9F, 0x239A, 0xABA1, 0xABF6, 0x03A6, 0xABF7, 0xABFA, 0x23B9, - 0xABFB, 0xABFD, 0x2472, 0xAC41, 0xAC7D, 0x23BD, 0xAC81, 0xAC97, 0x23FA, - 0xACA1, 0xACC1, 0x03FC, 0xACC2, 0xACD0, 0x2411, 0xACD1, 0xACF1, 0x041D, - 0xACF2, 0xACF6, 0x2420, 0xAD41, 0xAD7D, 0x2425, 0xADA1, 0xADB0, 0x2462, - 0xB0A1, 0xB0FE, 0x043E, 0xB1A1, 0xB1FE, 0x049C, 0xB2A1, 0xB2FE, 0x04FA, - 0xB3A1, 0xB3FE, 0x0558, 0xB4A1, 0xB4FE, 0x05B6, 0xB5A1, 0xB5FE, 0x0614, - 0xB6A1, 0xB6FE, 0x0672, 0xB7A1, 0xB7FE, 0x06D0, 0xB8A1, 0xB8FE, 0x072E, - 0xB9A1, 0xB9FE, 0x078C, 0xBAA1, 0xBAFE, 0x07EA, 0xBBA1, 0xBBFE, 0x0848, - 0xBCA1, 0xBCFE, 0x08A6, 0xBDA1, 0xBDFE, 0x0904, 0xBEA1, 0xBEFE, 0x0962, - 0xBFA1, 0xBFFE, 0x09C0, 0xC0A1, 0xC0FE, 0x0A1E, 0xC1A1, 0xC1FE, 0x0A7C, - 0xC2A1, 0xC2FE, 0x0ADA, 0xC3A1, 0xC3FE, 0x0B38, 0xC4A1, 0xC4FE, 0x0B96, - 0xC5A1, 0xC5FE, 0x0BF4, 0xC6A1, 0xC6FE, 0x0C52, 0xC7A1, 0xC7FE, 0x0CB0, - 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, 0xCBA1, 0xCBCF, 0x0DCA, - 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, 0xCBD6, 0xCBD6, 0x0E5E, - 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, 0xCBE8, 0xCBFE, 0x0E0E, - 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, 0xCDCF, 0xCDCF, 0x0D84, - 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, 0xCDE9, 0xCDFE, 0x0EC9, - 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, 0xCEAE, 0xCEFE, 0x0EEB, - 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, 0xCFFC, 0xCFFE, 0x0F96, - 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, 0xD0A3, 0xD0B7, 0x0F9A, - 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, 0xD0D0, 0xD0D0, 0x0E7C, - 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, 0xD0DE, 0xD0FE, 0x0FD2, - 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, 0xD1D5, 0xD1D5, 0x103C, - 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, 0xD1D9, 0xD1DA, 0x1028, - 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, 0xD1E2, 0xD1E2, 0x16A8, - 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, 0xD1E7, 0xD1E7, 0x102B, - 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, 0xD1ED, 0xD1ED, 0x1127, - 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, 0xD1F1, 0xD1F1, 0x102E, - 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, 0xD1F6, 0xD1F6, 0x112F, - 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, 0xD1FB, 0xD1FB, 0x1035, - 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, 0xD2A1, 0xD2A1, 0x1036, - 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, 0xD2A7, 0xD2AA, 0x113C, - 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, 0xD2AD, 0xD2AD, 0x1144, - 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, 0xD2B3, 0xD2BD, 0x103F, - 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, 0xD2C2, 0xD2C3, 0x11A1, - 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, 0xD2C6, 0xD2CA, 0x11A6, - 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, 0xD2CD, 0xD2CE, 0x11AD, - 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, 0xD2D8, 0xD2D8, 0x104F, - 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, 0xD2DE, 0xD2DF, 0x11C1, - 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, 0xD2E2, 0xD2E2, 0x11C6, - 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, 0xD2E5, 0xD2E8, 0x11D6, - 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, 0xD2EC, 0xD2EF, 0x1055, - 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, 0xD2F6, 0xD2F6, 0x1059, - 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, 0xD3A1, 0xD3FE, 0x1060, - 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, 0xD4E7, 0xD4FB, 0x1103, - 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, 0xD5A1, 0xD5A4, 0x111A, - 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, 0xD5AB, 0xD5AB, 0x102B, - 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, 0xD5AF, 0xD5FE, 0x1125, - 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, 0xD6B9, 0xD6CC, 0x118C, - 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, 0xD7A1, 0xD7CA, 0x11D1, - 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, 0xD7E4, 0xD7E4, 0x1918, - 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, 0xD9A1, 0xD9FE, 0x128B, - 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, 0xDBC5, 0xDBC5, 0x141F, - 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, 0xDBE5, 0xDBFE, 0x1389, - 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, 0xDCA6, 0xDCFE, 0x13A7, - 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, 0xDDA6, 0xDDD4, 0x1404, - 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, 0xDDF4, 0xDDF4, 0x1DB7, - 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, 0xDEFC, 0xDEFC, 0x15D0, - 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, 0xDFA1, 0xDFB2, 0x14B7, - 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, 0xDFE1, 0xDFE1, 0x14F2, - 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, 0xDFE9, 0xDFFE, 0x14FC, - 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, 0xE0F2, 0xE0FE, 0x1562, - 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, 0xE1AE, 0xE1EC, 0x157B, - 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, 0xE2A1, 0xE2FE, 0x15CB, - 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, 0xE3F6, 0xE3FE, 0x167D, - 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, 0xE4A9, 0xE4A9, 0x162E, - 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, 0xE5AE, 0xE5AE, 0x16F2, - 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, 0xE5B3, 0xE5B8, 0x16F1, - 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, 0xE5BB, 0xE5BC, 0x114D, - 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, 0xE5C5, 0xE5CD, 0x16FF, - 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, 0xE5D0, 0xE5D0, 0x1154, - 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, 0xE5D3, 0xE5D5, 0x170A, - 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, 0xE5FA, 0xE5FB, 0x115A, - 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, 0xE5FE, 0xE5FE, 0x115C, - 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, 0xE6A4, 0xE6A4, 0x1161, - 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, 0xE6A8, 0xE6AC, 0x1735, - 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, 0xE6AF, 0xE6B1, 0x1167, - 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, 0xE6B4, 0xE6B6, 0x173C, - 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, 0xE6BC, 0xE6BC, 0x116F, - 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, 0xE6C5, 0xE6C5, 0x1749, - 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, 0xE6CA, 0xE6CA, 0x1041, - 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, 0xE6D3, 0xE6D5, 0x1753, - 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, 0xE6D9, 0xE6D9, 0x1176, - 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, 0xE6DD, 0xE6DE, 0x175A, - 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, 0xE6E1, 0xE6E1, 0x1178, - 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, 0xE6E5, 0xE6E5, 0x1179, - 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, 0xE6E8, 0xE6E8, 0x117C, - 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, 0xE6EC, 0xE6EC, 0x192F, - 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, 0xE6F0, 0xE6F0, 0x1763, - 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, 0xE6F3, 0xE6F4, 0x1764, - 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, 0xE6F7, 0xE6F7, 0x1046, - 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, 0xE6FA, 0xE6FE, 0x1767, - 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, 0xE7A6, 0xE7A6, 0x1188, - 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, 0xE7AA, 0xE7AA, 0x118B, - 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, 0xE7AD, 0xE7AD, 0x118D, - 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, 0xE7B1, 0xE7BE, 0x1775, - 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, 0xE7C1, 0xE7C1, 0x1E67, - 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, 0xE7C7, 0xE7C7, 0x1193, - 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, 0xE7CC, 0xE7CC, 0x178B, - 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, 0xE7CF, 0xE7D0, 0x1197, - 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, 0xE7D4, 0xE7DE, 0x178F, - 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, 0xE7E4, 0xE7E4, 0x119D, - 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, 0xE7E7, 0xE7F6, 0x179F, - 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, 0xE8A1, 0xE8E6, 0x17B6, - 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, 0xE8F0, 0xE8F0, 0x11C9, - 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, 0xE8F7, 0xE8F7, 0x11CB, - 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, 0xE8FA, 0xE8FA, 0x1809, - 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, 0xE8FE, 0xE8FE, 0x11CD, - 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, 0xE9A8, 0xE9AB, 0x1812, - 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, 0xE9CC, 0xE9CC, 0x11D3, - 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, 0xE9F8, 0xE9FE, 0x185F, - 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, 0xEAC2, 0xEAE4, 0x1886, - 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, 0xEAF4, 0xEAF4, 0x1057, - 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, 0xEAF8, 0xEAFB, 0x18B9, - 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, 0xEAFE, 0xEAFE, 0x11E6, - 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, 0xEBA5, 0xEBA6, 0x18C1, - 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, 0xEBA9, 0xEBA9, 0x11EC, - 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, 0xEBBA, 0xEBBB, 0x11EE, - 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, 0xEBBE, 0xEBC0, 0x18D4, - 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, 0xEBC3, 0xEBC5, 0x18D7, - 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, 0xEBCC, 0xEBCC, 0x11F7, - 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, 0xEBD2, 0xEBD2, 0x15B0, - 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, 0xEBD9, 0xEBFE, 0x18E5, - 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, 0xECA7, 0xECA7, 0x1208, - 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, 0xECAB, 0xECAE, 0x1912, - 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, 0xECB2, 0xECB2, 0x105B, - 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, 0xECB6, 0xECB7, 0x1918, - 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, 0xECBA, 0xECBA, 0x1215, - 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, 0xECC2, 0xECC4, 0x1920, - 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, 0xECC7, 0xECC8, 0x1923, - 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, 0xECD5, 0xECD5, 0x121E, - 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, 0xECDF, 0xECE0, 0x1936, - 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, 0xECE4, 0xECE4, 0x1224, - 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, 0xECE9, 0xECF6, 0x193C, - 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, 0xECFA, 0xECFA, 0x122A, - 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, 0xEDA4, 0xEDED, 0x194F, - 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, 0xEEA1, 0xEEDA, 0x19A9, - 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, 0xEFA1, 0xEFFE, 0x1A06, - 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, 0xF2A1, 0xF2BC, 0x1B20, - 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, 0xF2FA, 0xF2FA, 0x168B, - 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, 0xF3B1, 0xF3B1, 0x105F, - 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, 0xF4A7, 0xF4A7, 0x1954, - 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, 0xF4EF, 0xF4FE, 0x1C25, - 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, 0xF6F4, 0xF6F4, 0x10B7, - 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, 0xF6F7, 0xF6FE, 0x1CE7, - 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, 0xF7B9, 0xF7C7, 0x1D06, - 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, 0xF7D3, 0xF7D3, 0x10F4, - 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, 0xF8DB, 0xF8DB, 0x1D94, - 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, 0xF8F1, 0xF8FE, 0x1D98, - 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, 0xFAA2, 0xFAA2, 0x0DE6, - 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, 0xFAE7, 0xFAFE, 0x1E47, - 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, 0xFCA9, 0xFCA9, 0x0EE7, - 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp deleted file mode 100644 index 99aae1196b..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp +++ /dev/null @@ -1,2808 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_UniKS_UCS2_H_1[8394 * 3] = { - 0x0020, 0x007E, 0x0001, 0x00A1, 0x00A1, 0x00D0, 0x00A4, 0x00A4, 0x00D6, - 0x00A7, 0x00A7, 0x009B, 0x00A8, 0x00A8, 0x006B, 0x00AA, 0x00AA, 0x029C, - 0x00AB, 0x00AB, 0x00B0, 0x00B0, 0x00B0, 0x008A, 0x00B1, 0x00B1, 0x0082, - 0x00B2, 0x00B3, 0x034B, 0x00B4, 0x00B4, 0x00C7, 0x00B6, 0x00B6, 0x00F4, - 0x00B8, 0x00B8, 0x00CE, 0x00B9, 0x00B9, 0x034A, 0x00BA, 0x00BA, 0x02A3, - 0x00BB, 0x00BB, 0x00B1, 0x00BC, 0x00BC, 0x02EF, 0x00BD, 0x00BD, 0x02EC, - 0x00BE, 0x00BE, 0x02F0, 0x00BF, 0x00BF, 0x00D1, 0x00C6, 0x00C6, 0x029A, - 0x00D0, 0x00D0, 0x029B, 0x00D7, 0x00D7, 0x0083, 0x00D8, 0x00D8, 0x02A1, - 0x00DE, 0x00DE, 0x02A4, 0x00DF, 0x00DF, 0x0300, 0x00E6, 0x00E6, 0x02F5, - 0x00F0, 0x00F0, 0x02F7, 0x00F7, 0x00F7, 0x0084, 0x00F8, 0x00F8, 0x02FE, - 0x00FE, 0x00FE, 0x0301, 0x0111, 0x0111, 0x02F6, 0x0126, 0x0126, 0x029D, - 0x0127, 0x0127, 0x02F8, 0x0131, 0x0131, 0x02F9, 0x0132, 0x0132, 0x029E, - 0x0133, 0x0133, 0x02FA, 0x0138, 0x0138, 0x02FB, 0x013F, 0x013F, 0x029F, - 0x0140, 0x0140, 0x02FC, 0x0141, 0x0141, 0x02A0, 0x0142, 0x0142, 0x02FD, - 0x0149, 0x0149, 0x0304, 0x014A, 0x014A, 0x02A6, 0x014B, 0x014B, 0x0303, - 0x0152, 0x0152, 0x02A2, 0x0153, 0x0153, 0x02FF, 0x0166, 0x0166, 0x02A5, - 0x0167, 0x0167, 0x0302, 0x02BC, 0x02BC, 0x2053, 0x02C7, 0x02C7, 0x00C9, - 0x02D8, 0x02D8, 0x00CA, 0x02D9, 0x02D9, 0x00CD, 0x02DA, 0x02DA, 0x00CC, - 0x02DB, 0x02DB, 0x00CF, 0x02DC, 0x02DC, 0x00C8, 0x02DD, 0x02DD, 0x00CB, - 0x0391, 0x03A1, 0x01D7, 0x03A3, 0x03A9, 0x01E8, 0x03B1, 0x03C1, 0x01EF, - 0x03C3, 0x03C9, 0x0200, 0x0401, 0x0401, 0x0402, 0x0410, 0x0415, 0x03FC, - 0x0416, 0x0435, 0x0403, 0x0436, 0x044F, 0x0424, 0x0451, 0x0451, 0x0423, - 0x2013, 0x2014, 0x006D, 0x2016, 0x2016, 0x006F, 0x2018, 0x2019, 0x0072, - 0x201B, 0x201B, 0x202E, 0x201C, 0x201D, 0x0074, 0x201F, 0x201F, 0x202D, - 0x2020, 0x2021, 0x00F5, 0x2022, 0x2022, 0x219F, 0x2025, 0x2026, 0x0069, - 0x2030, 0x2030, 0x00D8, 0x2032, 0x2033, 0x008B, 0x2034, 0x2034, 0x2186, - 0x2035, 0x2035, 0x246E, 0x2036, 0x2036, 0x246C, 0x2039, 0x203A, 0x21A4, - 0x203B, 0x203B, 0x009C, 0x203C, 0x203C, 0x223B, 0x2042, 0x2042, 0x2197, - 0x2074, 0x2074, 0x034D, 0x207A, 0x207B, 0x202F, 0x207C, 0x207C, 0x2038, - 0x207D, 0x207E, 0x203A, 0x207F, 0x207F, 0x034E, 0x2081, 0x2084, 0x034F, - 0x2103, 0x2103, 0x008D, 0x2109, 0x2109, 0x00D7, 0x2113, 0x2113, 0x024E, - 0x2116, 0x2116, 0x0102, 0x2121, 0x2121, 0x0107, 0x2122, 0x2122, 0x0104, - 0x2126, 0x2126, 0x0283, 0x212B, 0x212B, 0x008E, 0x2153, 0x2154, 0x02ED, - 0x215B, 0x215E, 0x02F1, 0x2160, 0x2169, 0x01CD, 0x2170, 0x2179, 0x01C3, - 0x2190, 0x2191, 0x00AB, 0x2192, 0x2192, 0x00AA, 0x2193, 0x2194, 0x00AD, - 0x2195, 0x2195, 0x00F7, 0x2196, 0x2196, 0x00FA, 0x2197, 0x2197, 0x00F8, - 0x2198, 0x2198, 0x00FB, 0x2199, 0x2199, 0x00F9, 0x21B0, 0x21B0, 0x22A4, - 0x21B1, 0x21B1, 0x22A1, 0x21B2, 0x21B2, 0x22A0, 0x21B3, 0x21B3, 0x22A5, - 0x21B4, 0x21B4, 0x22A3, 0x21BC, 0x21BC, 0x22B4, 0x21C0, 0x21C0, 0x22B5, - 0x21C4, 0x21C5, 0x22C0, 0x21CD, 0x21CD, 0x2270, 0x21CF, 0x21CF, 0x226F, - 0x21D0, 0x21D0, 0x226E, 0x21D1, 0x21D1, 0x2296, 0x21D2, 0x21D2, 0x00C3, - 0x21D3, 0x21D3, 0x2297, 0x21D4, 0x21D4, 0x00C4, 0x21E0, 0x21E0, 0x23E6, - 0x21E1, 0x21E1, 0x23E8, 0x21E2, 0x21E2, 0x23E7, 0x21E3, 0x21E3, 0x23E9, - 0x21E6, 0x21E6, 0x23EE, 0x21E7, 0x21E7, 0x23F0, 0x21E8, 0x21E8, 0x23EF, - 0x21E9, 0x21E9, 0x23F1, 0x2200, 0x2200, 0x00C5, 0x2202, 0x2202, 0x0097, - 0x2203, 0x2203, 0x00C6, 0x2206, 0x2206, 0x220B, 0x2207, 0x2207, 0x0098, - 0x2208, 0x2208, 0x00B8, 0x2209, 0x2209, 0x222D, 0x220B, 0x220B, 0x00B9, - 0x220C, 0x220C, 0x222E, 0x220F, 0x220F, 0x00D5, 0x2211, 0x2211, 0x00D4, - 0x2213, 0x2213, 0x2216, 0x221A, 0x221A, 0x00B2, 0x221D, 0x221D, 0x00B4, - 0x221E, 0x221E, 0x0088, 0x221F, 0x221F, 0x220D, 0x2220, 0x2220, 0x0094, - 0x2222, 0x2222, 0x2222, 0x2225, 0x2226, 0x220F, 0x2227, 0x2228, 0x00C0, - 0x2229, 0x2229, 0x00BF, 0x222A, 0x222A, 0x00BE, 0x222B, 0x222C, 0x00B6, - 0x222E, 0x222E, 0x00D3, 0x2234, 0x2234, 0x0089, 0x2235, 0x2235, 0x00B5, - 0x2236, 0x2236, 0x00D2, 0x2237, 0x2237, 0x2081, 0x223D, 0x223D, 0x00B3, - 0x2243, 0x2243, 0x2134, 0x2245, 0x2245, 0x2133, 0x2248, 0x2248, 0x2135, - 0x2250, 0x2250, 0x2223, 0x2251, 0x2251, 0x2213, 0x2252, 0x2252, 0x009A, - 0x2253, 0x2253, 0x2212, 0x225A, 0x225A, 0x2231, 0x2260, 0x2260, 0x0085, - 0x2261, 0x2261, 0x0099, 0x2262, 0x2262, 0x221E, 0x2264, 0x2265, 0x0086, - 0x2266, 0x2267, 0x2214, 0x226E, 0x226F, 0x2229, 0x2270, 0x2273, 0x2121, - 0x2276, 0x2277, 0x2129, 0x2279, 0x2279, 0x212B, 0x227A, 0x227B, 0x211B, - 0x2280, 0x2281, 0x211F, 0x2282, 0x2283, 0x00BC, 0x2284, 0x2284, 0x222C, - 0x2285, 0x2285, 0x222B, 0x2286, 0x2287, 0x00BA, 0x228A, 0x228A, 0x2126, - 0x228B, 0x228B, 0x2128, 0x2295, 0x2297, 0x2217, 0x22A3, 0x22A3, 0x2226, - 0x22A4, 0x22A4, 0x2137, 0x22A5, 0x22A5, 0x0095, 0x22BB, 0x22BC, 0x222F, - 0x22CE, 0x22CF, 0x211D, 0x22DA, 0x22DB, 0x212C, 0x22EE, 0x22EE, 0x2080, - 0x22EF, 0x22EF, 0x006A, 0x2306, 0x2306, 0x2232, 0x2312, 0x2312, 0x0096, - 0x2314, 0x2314, 0x221B, 0x2460, 0x246E, 0x02DD, 0x246F, 0x2473, 0x2257, - 0x2474, 0x2482, 0x033B, 0x2483, 0x2487, 0x2352, 0x249C, 0x24B5, 0x0321, - 0x24B6, 0x24CF, 0x20C4, 0x24D0, 0x24E9, 0x02C3, 0x2500, 0x2500, 0x0207, - 0x2501, 0x2501, 0x0212, 0x2502, 0x2502, 0x0208, 0x2503, 0x2503, 0x0213, - 0x250C, 0x250C, 0x0209, 0x250D, 0x250D, 0x022E, 0x250E, 0x250E, 0x022D, - 0x250F, 0x250F, 0x0214, 0x2510, 0x2510, 0x020A, 0x2511, 0x2511, 0x0228, - 0x2512, 0x2512, 0x0227, 0x2513, 0x2513, 0x0215, 0x2514, 0x2514, 0x020C, - 0x2515, 0x2515, 0x022C, 0x2516, 0x2516, 0x022B, 0x2517, 0x2517, 0x0217, - 0x2518, 0x2518, 0x020B, 0x2519, 0x2519, 0x022A, 0x251A, 0x251A, 0x0229, - 0x251B, 0x251B, 0x0216, 0x251C, 0x251C, 0x020D, 0x251D, 0x251D, 0x0222, - 0x251E, 0x251F, 0x022F, 0x2520, 0x2520, 0x021D, 0x2521, 0x2522, 0x0231, - 0x2523, 0x2523, 0x0218, 0x2524, 0x2524, 0x020F, 0x2525, 0x2525, 0x0224, - 0x2526, 0x2527, 0x0233, 0x2528, 0x2528, 0x021F, 0x2529, 0x252A, 0x0235, - 0x252B, 0x252B, 0x021A, 0x252C, 0x252C, 0x020E, 0x252D, 0x252E, 0x0237, - 0x252F, 0x252F, 0x021E, 0x2530, 0x2530, 0x0223, 0x2531, 0x2532, 0x0239, - 0x2533, 0x2533, 0x0219, 0x2534, 0x2534, 0x0210, 0x2535, 0x2536, 0x023B, - 0x2537, 0x2537, 0x0220, 0x2538, 0x2538, 0x0225, 0x2539, 0x253A, 0x023D, - 0x253B, 0x253B, 0x021B, 0x253C, 0x253C, 0x0211, 0x253D, 0x253E, 0x023F, - 0x253F, 0x253F, 0x0221, 0x2540, 0x2541, 0x0241, 0x2542, 0x2542, 0x0226, - 0x2543, 0x254A, 0x0243, 0x254B, 0x254B, 0x021C, 0x2592, 0x2592, 0x00E8, - 0x25A0, 0x25A0, 0x00A5, 0x25A1, 0x25A1, 0x00A4, 0x25A3, 0x25A3, 0x00E5, - 0x25A4, 0x25A5, 0x00E9, 0x25A6, 0x25A6, 0x00ED, 0x25A7, 0x25A7, 0x00EC, - 0x25A8, 0x25A8, 0x00EB, 0x25A9, 0x25A9, 0x00EE, 0x25B1, 0x25B1, 0x2220, - 0x25B2, 0x25B2, 0x00A7, 0x25B3, 0x25B3, 0x00A6, 0x25B5, 0x25B5, 0x224C, - 0x25B6, 0x25B6, 0x00DC, 0x25B7, 0x25B7, 0x00DB, 0x25B9, 0x25B9, 0x224D, - 0x25BC, 0x25BC, 0x00A9, 0x25BD, 0x25BD, 0x00A8, 0x25BF, 0x25BF, 0x224B, - 0x25C0, 0x25C0, 0x00DA, 0x25C1, 0x25C1, 0x00D9, 0x25C3, 0x25C3, 0x224E, - 0x25C6, 0x25C6, 0x00A3, 0x25C7, 0x25C7, 0x00A2, 0x25C8, 0x25C8, 0x00E4, - 0x25C9, 0x25C9, 0x00E3, 0x25CA, 0x25CA, 0x2253, 0x25CB, 0x25CB, 0x009F, - 0x25CC, 0x25CC, 0x21BF, 0x25CE, 0x25CE, 0x00A1, 0x25CF, 0x25CF, 0x00A0, - 0x25D0, 0x25D1, 0x00E6, 0x25E6, 0x25E6, 0x2247, 0x25EF, 0x25EF, 0x21B9, - 0x2605, 0x2605, 0x009E, 0x2606, 0x2606, 0x009D, 0x260E, 0x260E, 0x00F1, - 0x260F, 0x260F, 0x00F0, 0x261C, 0x261C, 0x00F2, 0x261D, 0x261D, 0x2406, - 0x261E, 0x261E, 0x00F3, 0x261F, 0x261F, 0x2407, 0x262F, 0x262F, 0x21D8, - 0x2640, 0x2640, 0x0093, 0x2642, 0x2642, 0x0092, 0x2660, 0x2661, 0x00DE, - 0x2663, 0x2663, 0x00E2, 0x2664, 0x2664, 0x00DD, 0x2665, 0x2665, 0x00E0, - 0x2667, 0x2667, 0x00E1, 0x2668, 0x2668, 0x00EF, 0x2669, 0x266A, 0x00FD, - 0x266C, 0x266C, 0x00FF, 0x266D, 0x266D, 0x00FC, 0x266F, 0x266F, 0x2192, - 0x2716, 0x2716, 0x21B7, 0x271A, 0x271A, 0x21B6, 0x273D, 0x273D, 0x219C, - 0x2756, 0x2756, 0x21BD, 0x2776, 0x277F, 0x21E1, 0x278A, 0x2793, 0x2096, - 0x3000, 0x3002, 0x0065, 0x3003, 0x3003, 0x006C, 0x3008, 0x3011, 0x0078, - 0x3012, 0x3012, 0x21FC, 0x3013, 0x3013, 0x00AF, 0x3014, 0x3015, 0x0076, - 0x3016, 0x3019, 0x201B, 0x301E, 0x301F, 0x246A, 0x3020, 0x3020, 0x21DF, - 0x3036, 0x3036, 0x21FD, 0x3041, 0x3093, 0x0353, 0x30A1, 0x30F6, 0x03A6, - 0x30FB, 0x30FB, 0x0068, 0x30FC, 0x30FC, 0x2472, 0x3131, 0x3163, 0x0166, - 0x3164, 0x3164, 0x0065, 0x3165, 0x318E, 0x0199, 0x3200, 0x321B, 0x0305, - 0x321C, 0x321C, 0x0101, 0x3231, 0x3231, 0x2254, 0x3239, 0x3239, 0x2255, - 0x3260, 0x327B, 0x02A7, 0x327F, 0x327F, 0x0100, 0x328A, 0x328F, 0x2455, - 0x3290, 0x3290, 0x2454, 0x3294, 0x3294, 0x2378, 0x329E, 0x329E, 0x2239, - 0x32A5, 0x32A5, 0x2388, 0x3380, 0x3384, 0x0273, 0x3388, 0x3389, 0x0264, - 0x338A, 0x338C, 0x0286, 0x338D, 0x338F, 0x0260, 0x3390, 0x3394, 0x027E, - 0x3395, 0x3397, 0x024B, 0x3398, 0x3398, 0x024F, 0x3399, 0x33A2, 0x0255, - 0x33A3, 0x33A6, 0x0251, 0x33A7, 0x33A8, 0x0267, 0x33A9, 0x33AC, 0x028F, - 0x33AD, 0x33AF, 0x028B, 0x33B0, 0x33B9, 0x0269, 0x33BA, 0x33BF, 0x0278, - 0x33C0, 0x33C1, 0x0284, 0x33C2, 0x33C2, 0x0105, 0x33C3, 0x33C3, 0x0296, - 0x33C4, 0x33C4, 0x0250, 0x33C5, 0x33C5, 0x028A, 0x33C6, 0x33C6, 0x0299, - 0x33C7, 0x33C7, 0x0103, 0x33C8, 0x33C8, 0x0266, 0x33C9, 0x33C9, 0x0297, - 0x33CA, 0x33CA, 0x025F, 0x33CB, 0x33CB, 0x2256, 0x33CF, 0x33CF, 0x0263, - 0x33D0, 0x33D0, 0x0294, 0x33D3, 0x33D3, 0x0295, 0x33D6, 0x33D6, 0x0289, - 0x33D8, 0x33D8, 0x0106, 0x33DB, 0x33DB, 0x028E, 0x33DC, 0x33DC, 0x0298, - 0x33DD, 0x33DD, 0x0293, 0x4E00, 0x4E00, 0x193C, 0x4E01, 0x4E01, 0x1A30, - 0x4E03, 0x4E03, 0x1CC4, 0x4E07, 0x4E07, 0x123E, 0x4E08, 0x4E08, 0x1986, - 0x4E09, 0x4E09, 0x14C8, 0x4E0A, 0x4E0A, 0x14D3, 0x4E0B, 0x4E0B, 0x1DC0, - 0x4E0D, 0x4E0D, 0x13F5, 0x4E11, 0x4E11, 0x1C78, 0x4E14, 0x4E14, 0x1B81, - 0x4E15, 0x4E15, 0x143D, 0x4E16, 0x4E16, 0x1574, 0x4E18, 0x4E18, 0x0F35, - 0x4E19, 0x4E19, 0x13B1, 0x4E1E, 0x4E1E, 0x1632, 0x4E2D, 0x4E2D, 0x1B0A, - 0x4E32, 0x4E32, 0x0EDA, 0x4E38, 0x4E38, 0x1ECA, 0x4E39, 0x4E39, 0x1060, - 0x4E3B, 0x4E3B, 0x1ACC, 0x4E42, 0x4E42, 0x178D, 0x4E43, 0x4E43, 0x103A, - 0x4E45, 0x4E45, 0x0F36, 0x4E4B, 0x4E4B, 0x1B1E, 0x4E4D, 0x4E4D, 0x1479, - 0x4E4E, 0x4E4E, 0x1E78, 0x4E4F, 0x4E4F, 0x1DBE, 0x4E56, 0x4E56, 0x0F0F, - 0x4E58, 0x4E58, 0x1633, 0x4E59, 0x4E59, 0x18EC, 0x4E5D, 0x4E5D, 0x0F37, - 0x4E5E, 0x4E5E, 0x0E1D, 0x4E5F, 0x4E5F, 0x16E6, 0x4E6B, 0x4E6B, 0x0DAC, - 0x4E6D, 0x4E6D, 0x10E9, 0x4E73, 0x4E73, 0x18A5, 0x4E76, 0x4E76, 0x13E4, - 0x4E77, 0x4E77, 0x14C3, 0x4E7E, 0x4E7E, 0x0E11, 0x4E82, 0x4E82, 0x1125, - 0x4E86, 0x4E86, 0x11C7, 0x4E88, 0x4E88, 0x172E, 0x4E8B, 0x4E8B, 0x147A, - 0x4E8C, 0x4E8C, 0x190D, 0x4E8E, 0x4E8E, 0x1835, 0x4E90, 0x4E90, 0x186C, - 0x4E91, 0x4E91, 0x185E, 0x4E92, 0x4E92, 0x1E79, 0x4E94, 0x4E94, 0x17A1, - 0x4E95, 0x4E95, 0x1A31, 0x4E98, 0x4E98, 0x0FDA, 0x4E9B, 0x4E9B, 0x147B, - 0x4E9E, 0x4E9E, 0x168F, 0x4EA1, 0x4EA1, 0x1258, 0x4EA2, 0x4EA2, 0x1DF6, - 0x4EA4, 0x4EA4, 0x0F1C, 0x4EA5, 0x4EA5, 0x1E05, 0x4EA6, 0x4EA6, 0x173B, - 0x4EA8, 0x4EA8, 0x1E5B, 0x4EAB, 0x4EAB, 0x1E1E, 0x4EAC, 0x4EAC, 0x0E4C, - 0x4EAD, 0x4EAD, 0x1A32, 0x4EAE, 0x4EAE, 0x114B, 0x4EB6, 0x4EB6, 0x1061, - 0x4EBA, 0x4EBA, 0x192B, 0x4EC0, 0x4EC0, 0x168B, 0x4EC1, 0x4EC1, 0x192C, - 0x4EC4, 0x4EC4, 0x1CA3, 0x4EC7, 0x4EC7, 0x0F38, 0x4ECA, 0x4ECA, 0x0FC6, - 0x4ECB, 0x4ECB, 0x0DE8, 0x4ECD, 0x4ECD, 0x194F, 0x4ED4, 0x4ED4, 0x1953, - 0x4ED5, 0x4ED5, 0x147C, 0x4ED6, 0x4ED6, 0x1CD4, 0x4ED7, 0x4ED7, 0x1987, - 0x4ED8, 0x4ED8, 0x13F6, 0x4ED9, 0x4ED9, 0x152A, 0x4EDD, 0x4EDD, 0x10EB, - 0x4EDF, 0x4EDF, 0x1BEC, 0x4EE3, 0x4EE3, 0x109A, 0x4EE4, 0x4EE4, 0x1189, - 0x4EE5, 0x4EE5, 0x190E, 0x4EF0, 0x4EF0, 0x16C9, 0x4EF2, 0x4EF2, 0x1B0B, - 0x4EF6, 0x4EF6, 0x0E12, 0x4EF7, 0x4EF7, 0x0DE9, 0x4EFB, 0x4EFB, 0x1945, - 0x4F01, 0x4F01, 0x0FDE, 0x4F09, 0x4F09, 0x1DF7, 0x4F0A, 0x4F0A, 0x190F, - 0x4F0B, 0x4F0B, 0x0FD3, 0x4F0D, 0x4F0D, 0x17A2, 0x4F0E, 0x4F0E, 0x0FDF, - 0x4F0F, 0x4F0F, 0x13D2, 0x4F10, 0x4F10, 0x138D, 0x4F11, 0x4F11, 0x1F45, - 0x4F2F, 0x4F2F, 0x137C, 0x4F34, 0x4F34, 0x1329, 0x4F36, 0x4F36, 0x118A, - 0x4F38, 0x4F38, 0x1667, 0x4F3A, 0x4F3A, 0x147D, 0x4F3C, 0x4F3C, 0x147E, - 0x4F3D, 0x4F3D, 0x0D6C, 0x4F43, 0x4F43, 0x19F3, 0x4F46, 0x4F46, 0x1062, - 0x4F47, 0x4F47, 0x19BF, 0x4F48, 0x4F48, 0x1D78, 0x4F4D, 0x4F4D, 0x188C, - 0x4F4E, 0x4F4E, 0x19C0, 0x4F4F, 0x4F4F, 0x1ACD, 0x4F50, 0x4F50, 0x1AC6, - 0x4F51, 0x4F51, 0x1836, 0x4F55, 0x4F55, 0x1DC1, 0x4F59, 0x4F59, 0x172F, - 0x4F5A, 0x4F5A, 0x193D, 0x4F5B, 0x4F5B, 0x1433, 0x4F5C, 0x4F5C, 0x196D, - 0x4F69, 0x4F69, 0x1D4E, 0x4F6F, 0x4F6F, 0x16F7, 0x4F70, 0x4F70, 0x137D, - 0x4F73, 0x4F73, 0x0D6D, 0x4F76, 0x4F76, 0x101F, 0x4F7A, 0x4F7A, 0x19F4, - 0x4F7E, 0x4F7E, 0x193E, 0x4F7F, 0x4F7F, 0x147F, 0x4F81, 0x4F81, 0x1668, - 0x4F83, 0x4F83, 0x0D94, 0x4F84, 0x4F84, 0x1B67, 0x4F86, 0x4F86, 0x1144, - 0x4F88, 0x4F88, 0x1CA8, 0x4F8A, 0x4F8A, 0x0EFF, 0x4F8B, 0x4F8B, 0x119A, - 0x4F8D, 0x4F8D, 0x163C, 0x4F8F, 0x4F8F, 0x1ACE, 0x4F91, 0x4F91, 0x18A6, - 0x4F96, 0x4F96, 0x11F2, 0x4F98, 0x4F98, 0x1B82, 0x4F9B, 0x4F9B, 0x0ECA, - 0x4F9D, 0x4F9D, 0x18FA, 0x4FAE, 0x4FAE, 0x129C, 0x4FAF, 0x4FAF, 0x1F1E, - 0x4FB5, 0x4FB5, 0x1CC7, 0x4FB6, 0x4FB6, 0x1158, 0x4FBF, 0x4FBF, 0x1D5E, - 0x4FC2, 0x4FC2, 0x0E79, 0x4FC3, 0x4FC3, 0x1C49, 0x4FC4, 0x4FC4, 0x1690, - 0x4FC9, 0x4FC9, 0x17A3, 0x4FCA, 0x4FCA, 0x1AF6, 0x4FCE, 0x4FCE, 0x1A7E, - 0x4FD1, 0x4FD1, 0x181E, 0x4FD3, 0x4FD3, 0x0E4D, 0x4FD4, 0x4FD4, 0x1E36, - 0x4FD7, 0x4FD7, 0x15A1, 0x4FDA, 0x4FDA, 0x1205, 0x4FDD, 0x4FDD, 0x13C2, - 0x4FDF, 0x4FDF, 0x1480, 0x4FE0, 0x4FE0, 0x1E4F, 0x4FE1, 0x4FE1, 0x1669, - 0x4FEE, 0x4FEE, 0x15BF, 0x4FEF, 0x4FEF, 0x13F7, 0x4FF1, 0x4FF1, 0x0F39, - 0x4FF3, 0x4FF3, 0x136A, 0x4FF5, 0x4FF5, 0x1D98, 0x4FF8, 0x4FF8, 0x13E5, - 0x4FFA, 0x4FFA, 0x1725, 0x5002, 0x5002, 0x13B2, 0x5006, 0x5006, 0x114C, - 0x5009, 0x5009, 0x1BB4, 0x500B, 0x500B, 0x0DEA, 0x500D, 0x500D, 0x1369, - 0x5011, 0x5011, 0x12E4, 0x5012, 0x5012, 0x10AD, 0x5016, 0x5016, 0x1E19, - 0x5019, 0x5019, 0x1F1F, 0x501A, 0x501A, 0x18FB, 0x501C, 0x501C, 0x1BDE, - 0x501E, 0x501E, 0x0E4E, 0x501F, 0x501F, 0x1B83, 0x5021, 0x5021, 0x1BB5, - 0x5023, 0x5023, 0x134D, 0x5024, 0x5024, 0x1CA9, 0x5026, 0x5026, 0x0F81, - 0x5027, 0x5027, 0x1AB5, 0x5028, 0x5028, 0x0E01, 0x502A, 0x502A, 0x178E, - 0x502B, 0x502B, 0x11F3, 0x502C, 0x502C, 0x1CE2, 0x502D, 0x502D, 0x17F3, - 0x503B, 0x503B, 0x16E7, 0x5043, 0x5043, 0x171D, 0x5047, 0x5047, 0x0D6E, - 0x5048, 0x5048, 0x0E2B, 0x5049, 0x5049, 0x188D, 0x504F, 0x504F, 0x1D5F, - 0x5055, 0x5055, 0x1E06, 0x505A, 0x505A, 0x1ACF, 0x505C, 0x505C, 0x1A33, - 0x5065, 0x5065, 0x0E13, 0x5074, 0x5074, 0x1CA2, 0x5075, 0x5075, 0x1A34, - 0x5076, 0x5076, 0x1837, 0x5078, 0x5078, 0x1D29, 0x5080, 0x5080, 0x0F10, - 0x5085, 0x5085, 0x13F8, 0x508D, 0x508D, 0x134E, 0x5091, 0x5091, 0x0E1E, - 0x5098, 0x5098, 0x14B7, 0x5099, 0x5099, 0x143E, 0x50AC, 0x50AC, 0x1C5E, - 0x50AD, 0x50AD, 0x181F, 0x50B2, 0x50B2, 0x17A4, 0x50B3, 0x50B3, 0x19F5, - 0x50B5, 0x50B5, 0x1BCA, 0x50B7, 0x50B7, 0x14D4, 0x50BE, 0x50BE, 0x0E4F, - 0x50C5, 0x50C5, 0x0FB7, 0x50C9, 0x50C9, 0x1C09, 0x50CA, 0x50CA, 0x152B, - 0x50CF, 0x50CF, 0x14D5, 0x50D1, 0x50D1, 0x0F1D, 0x50D5, 0x50D5, 0x13D3, - 0x50D6, 0x50D6, 0x1F63, 0x50DA, 0x50DA, 0x11C8, 0x50DE, 0x50DE, 0x188E, - 0x50E5, 0x50E5, 0x17FC, 0x50E7, 0x50E7, 0x1634, 0x50ED, 0x50ED, 0x1BAA, - 0x50F9, 0x50F9, 0x0D6F, 0x50FB, 0x50FB, 0x139C, 0x50FF, 0x50FF, 0x1481, - 0x5100, 0x5100, 0x18FC, 0x5101, 0x5101, 0x1AF7, 0x5104, 0x5104, 0x1718, - 0x5106, 0x5106, 0x0E50, 0x5109, 0x5109, 0x0E21, 0x5112, 0x5112, 0x18A7, - 0x511F, 0x511F, 0x14D6, 0x5121, 0x5121, 0x11BF, 0x512A, 0x512A, 0x1838, - 0x5132, 0x5132, 0x19C1, 0x5137, 0x5137, 0x1159, 0x513A, 0x513A, 0x1025, - 0x513C, 0x513C, 0x1726, 0x5140, 0x5140, 0x17C9, 0x5141, 0x5141, 0x18D7, - 0x5143, 0x5143, 0x186F, 0x5144, 0x5144, 0x1E5C, 0x5145, 0x5145, 0x1C8A, - 0x5146, 0x5146, 0x1A7F, 0x5147, 0x5147, 0x1F4D, 0x5148, 0x5148, 0x152C, - 0x5149, 0x5149, 0x0F00, 0x514B, 0x514B, 0x0FB0, 0x514C, 0x514C, 0x1D07, - 0x514D, 0x514D, 0x127F, 0x514E, 0x514E, 0x1D19, 0x5152, 0x5152, 0x1691, - 0x515C, 0x515C, 0x10FC, 0x5162, 0x5162, 0x0FDB, 0x5165, 0x5165, 0x194D, - 0x5167, 0x5167, 0x103B, 0x5168, 0x5168, 0x19F6, 0x5169, 0x5169, 0x114D, - 0x516A, 0x516A, 0x18A8, 0x516B, 0x516B, 0x1D4B, 0x516C, 0x516C, 0x0ECB, - 0x516D, 0x516D, 0x11EF, 0x516E, 0x516E, 0x1E6F, 0x5171, 0x5171, 0x0ECC, - 0x5175, 0x5175, 0x13B3, 0x5176, 0x5176, 0x0FE0, 0x5177, 0x5177, 0x0F3A, - 0x5178, 0x5178, 0x19F7, 0x517C, 0x517C, 0x0E46, 0x5180, 0x5180, 0x0FE1, - 0x5186, 0x5186, 0x172D, 0x518A, 0x518A, 0x1BD6, 0x518D, 0x518D, 0x19AA, - 0x5192, 0x5192, 0x129D, 0x5195, 0x5195, 0x1280, 0x5197, 0x5197, 0x1820, - 0x51A0, 0x51A0, 0x0EEB, 0x51A5, 0x51A5, 0x128C, 0x51AA, 0x51AA, 0x127D, - 0x51AC, 0x51AC, 0x10EC, 0x51B6, 0x51B6, 0x16E8, 0x51B7, 0x51B7, 0x1148, - 0x51BD, 0x51BD, 0x117D, 0x51C4, 0x51C4, 0x1BDA, 0x51C6, 0x51C6, 0x1AF8, - 0x51C9, 0x51C9, 0x114E, 0x51CB, 0x51CB, 0x1A80, 0x51CC, 0x51CC, 0x11FF, - 0x51CD, 0x51CD, 0x10ED, 0x51DC, 0x51DC, 0x11FE, 0x51DD, 0x51DD, 0x18F6, - 0x51DE, 0x51DE, 0x1F64, 0x51E1, 0x51E1, 0x1391, 0x51F0, 0x51F0, 0x1EE0, - 0x51F1, 0x51F1, 0x0DEB, 0x51F6, 0x51F6, 0x1F4E, 0x51F8, 0x51F8, 0x1BFF, - 0x51F9, 0x51F9, 0x17FD, 0x51FA, 0x51FA, 0x1C87, 0x51FD, 0x51FD, 0x1DE3, - 0x5200, 0x5200, 0x10AE, 0x5203, 0x5203, 0x192D, 0x5206, 0x5206, 0x1420, - 0x5207, 0x5207, 0x1A1C, 0x5208, 0x5208, 0x178F, 0x520A, 0x520A, 0x0D95, - 0x520E, 0x520E, 0x12E5, 0x5211, 0x5211, 0x1E5D, 0x5217, 0x5217, 0x117E, - 0x521D, 0x521D, 0x1C2E, 0x5224, 0x5224, 0x1D42, 0x5225, 0x5225, 0x13AD, - 0x5229, 0x5229, 0x1206, 0x522A, 0x522A, 0x14B8, 0x522E, 0x522E, 0x0EFB, - 0x5230, 0x5230, 0x10AF, 0x5236, 0x5236, 0x1A67, 0x5237, 0x5237, 0x15B9, - 0x5238, 0x5238, 0x0F82, 0x5239, 0x5239, 0x1BA5, 0x523A, 0x523A, 0x1954, - 0x523B, 0x523B, 0x0D89, 0x5243, 0x5243, 0x1C25, 0x5247, 0x5247, 0x1CC0, - 0x524A, 0x524A, 0x14B5, 0x524B, 0x524B, 0x0FB1, 0x524C, 0x524C, 0x112D, - 0x524D, 0x524D, 0x19F8, 0x5254, 0x5254, 0x1BDF, 0x5256, 0x5256, 0x13F9, - 0x525B, 0x525B, 0x0DD0, 0x525D, 0x525D, 0x1316, 0x5261, 0x5261, 0x1557, - 0x5269, 0x5269, 0x1950, 0x526A, 0x526A, 0x19F9, 0x526F, 0x526F, 0x13FA, - 0x5272, 0x5272, 0x1DE1, 0x5275, 0x5275, 0x1BB6, 0x527D, 0x527D, 0x1D99, - 0x527F, 0x527F, 0x1C2F, 0x5283, 0x5283, 0x1F0C, 0x5287, 0x5287, 0x0FB2, - 0x5288, 0x5288, 0x139D, 0x5289, 0x5289, 0x11E1, 0x528D, 0x528D, 0x0E22, - 0x5291, 0x5291, 0x1A68, 0x5292, 0x5292, 0x0E23, 0x529B, 0x529B, 0x116A, - 0x529F, 0x529F, 0x0ECD, 0x52A0, 0x52A0, 0x0D70, 0x52A3, 0x52A3, 0x117F, - 0x52A4, 0x52A4, 0x0FB8, 0x52A9, 0x52A9, 0x1A81, 0x52AA, 0x52AA, 0x1049, - 0x52AB, 0x52AB, 0x0E28, 0x52BE, 0x52BE, 0x1E17, 0x52C1, 0x52C1, 0x0E51, - 0x52C3, 0x52C3, 0x1342, 0x52C5, 0x52C5, 0x1CC1, 0x52C7, 0x52C7, 0x1821, - 0x52C9, 0x52C9, 0x1281, 0x52CD, 0x52CD, 0x0E52, 0x52D2, 0x52D2, 0x11FC, - 0x52D5, 0x52D5, 0x10EE, 0x52D6, 0x52D6, 0x1855, 0x52D8, 0x52D8, 0x0DB6, - 0x52D9, 0x52D9, 0x12CC, 0x52DB, 0x52DB, 0x1F2B, 0x52DD, 0x52DD, 0x1635, - 0x52DE, 0x52DE, 0x119F, 0x52DF, 0x52DF, 0x129E, 0x52E2, 0x52E2, 0x1575, - 0x52E3, 0x52E3, 0x19DB, 0x52E4, 0x52E4, 0x0FB9, 0x52F3, 0x52F3, 0x1F2C, - 0x52F5, 0x52F5, 0x115A, 0x52F8, 0x52F8, 0x0F83, 0x52FA, 0x52FA, 0x196E, - 0x52FB, 0x52FB, 0x0FA9, 0x52FE, 0x52FE, 0x0F3B, 0x52FF, 0x52FF, 0x12F0, - 0x5305, 0x5305, 0x1D79, 0x5308, 0x5308, 0x1F4F, 0x530D, 0x530D, 0x1D7A, - 0x530F, 0x530F, 0x1D7B, 0x5310, 0x5310, 0x13D4, 0x5315, 0x5315, 0x143F, - 0x5316, 0x5316, 0x1EB7, 0x5317, 0x5317, 0x141F, 0x5319, 0x5319, 0x163D, - 0x5320, 0x5320, 0x1988, 0x5321, 0x5321, 0x0F01, 0x5323, 0x5323, 0x0DCA, - 0x532A, 0x532A, 0x1440, 0x532F, 0x532F, 0x1EF8, 0x5339, 0x5339, 0x1DB4, - 0x533F, 0x533F, 0x105C, 0x5340, 0x5340, 0x0F3C, 0x5341, 0x5341, 0x168C, - 0x5343, 0x5343, 0x1BED, 0x5344, 0x5344, 0x194E, 0x5347, 0x5347, 0x1636, - 0x5348, 0x5348, 0x17A5, 0x5349, 0x5349, 0x1F3A, 0x534A, 0x534A, 0x132A, - 0x534D, 0x534D, 0x123F, 0x5351, 0x5351, 0x1441, 0x5352, 0x5352, 0x1AB2, - 0x5353, 0x5353, 0x1CE3, 0x5354, 0x5354, 0x1E50, 0x5357, 0x5357, 0x1031, - 0x535A, 0x535A, 0x1317, 0x535C, 0x535C, 0x13D5, 0x535E, 0x535E, 0x13A7, - 0x5360, 0x5360, 0x1A24, 0x5366, 0x5366, 0x0F0C, 0x5368, 0x5368, 0x154A, - 0x536F, 0x536F, 0x12C0, 0x5370, 0x5370, 0x192E, 0x5371, 0x5371, 0x188F, - 0x5374, 0x5374, 0x0D8A, 0x5375, 0x5375, 0x1126, 0x5377, 0x5377, 0x0F84, - 0x537D, 0x537D, 0x1B0E, 0x537F, 0x537F, 0x0E53, 0x5384, 0x5384, 0x16DB, - 0x5393, 0x5393, 0x16D0, 0x5398, 0x5398, 0x1207, 0x539A, 0x539A, 0x1F20, - 0x539F, 0x539F, 0x1870, 0x53A0, 0x53A0, 0x1CA4, 0x53A5, 0x53A5, 0x0F8B, - 0x53A6, 0x53A6, 0x1DC2, 0x53AD, 0x53AD, 0x1765, 0x53BB, 0x53BB, 0x0E02, - 0x53C3, 0x53C3, 0x1BAB, 0x53C8, 0x53C8, 0x1839, 0x53C9, 0x53C9, 0x1B84, - 0x53CA, 0x53CA, 0x0FD4, 0x53CB, 0x53CB, 0x183A, 0x53CD, 0x53CD, 0x132B, - 0x53D4, 0x53D4, 0x15FC, 0x53D6, 0x53D6, 0x1C94, 0x53D7, 0x53D7, 0x15C0, - 0x53DB, 0x53DB, 0x132C, 0x53E1, 0x53E1, 0x1790, 0x53E2, 0x53E2, 0x1C53, - 0x53E3, 0x53E3, 0x0F3D, 0x53E4, 0x53E4, 0x0E91, 0x53E5, 0x53E5, 0x0F3E, - 0x53E9, 0x53E9, 0x0E92, 0x53EA, 0x53EA, 0x1B1F, 0x53EB, 0x53EB, 0x0F9A, - 0x53EC, 0x53EC, 0x157C, 0x53ED, 0x53ED, 0x1D4C, 0x53EF, 0x53EF, 0x0D71, - 0x53F0, 0x53F0, 0x1D08, 0x53F1, 0x53F1, 0x1B68, 0x53F2, 0x53F2, 0x1482, - 0x53F3, 0x53F3, 0x183B, 0x53F8, 0x53F8, 0x1483, 0x5403, 0x5403, 0x1F57, - 0x5404, 0x5404, 0x0D8B, 0x5408, 0x5408, 0x1DEF, 0x5409, 0x5409, 0x1020, - 0x540A, 0x540A, 0x19DC, 0x540C, 0x540C, 0x10EF, 0x540D, 0x540D, 0x128D, - 0x540E, 0x540E, 0x1F21, 0x540F, 0x540F, 0x1208, 0x5410, 0x5410, 0x1D1A, - 0x5411, 0x5411, 0x1E1F, 0x541B, 0x541B, 0x0F71, 0x541D, 0x541D, 0x121E, - 0x541F, 0x541F, 0x18ED, 0x5420, 0x5420, 0x1D6E, 0x5426, 0x5426, 0x13FB, - 0x5429, 0x5429, 0x1421, 0x542B, 0x542B, 0x1DE4, 0x5433, 0x5433, 0x17A7, - 0x5438, 0x5438, 0x1F5E, 0x5439, 0x5439, 0x1C95, 0x543B, 0x543B, 0x12E6, - 0x543C, 0x543C, 0x1F22, 0x543E, 0x543E, 0x17A6, 0x5442, 0x5442, 0x115B, - 0x5448, 0x5448, 0x1A35, 0x544A, 0x544A, 0x0E93, 0x5451, 0x5451, 0x1CF0, - 0x5468, 0x5468, 0x1AD3, 0x546A, 0x546A, 0x1AD2, 0x5471, 0x5471, 0x0E94, - 0x5473, 0x5473, 0x12F3, 0x5475, 0x5475, 0x0D72, 0x547B, 0x547B, 0x166A, - 0x547C, 0x547C, 0x1E7A, 0x547D, 0x547D, 0x128E, 0x5480, 0x5480, 0x19C2, - 0x5486, 0x5486, 0x1D7C, 0x548C, 0x548C, 0x1EB8, 0x548E, 0x548E, 0x0F3F, - 0x5490, 0x5490, 0x13FC, 0x54A4, 0x54A4, 0x1CD5, 0x54A8, 0x54A8, 0x1955, - 0x54AB, 0x54AB, 0x1B20, 0x54AC, 0x54AC, 0x0F1E, 0x54B3, 0x54B3, 0x1E07, - 0x54B8, 0x54B8, 0x1DE5, 0x54BD, 0x54BD, 0x192F, 0x54C0, 0x54C0, 0x16D1, - 0x54C1, 0x54C1, 0x1DA6, 0x54C4, 0x54C4, 0x1EAD, 0x54C8, 0x54C8, 0x1DF0, - 0x54C9, 0x54C9, 0x19AB, 0x54E1, 0x54E1, 0x1871, 0x54E5, 0x54E5, 0x0D73, - 0x54E8, 0x54E8, 0x1C30, 0x54ED, 0x54ED, 0x0EB7, 0x54EE, 0x54EE, 0x1F11, - 0x54F2, 0x54F2, 0x1C00, 0x54FA, 0x54FA, 0x1D7D, 0x5504, 0x5504, 0x1D4F, - 0x5506, 0x5506, 0x1484, 0x5507, 0x5507, 0x1B44, 0x550E, 0x550E, 0x1209, - 0x5510, 0x5510, 0x108F, 0x551C, 0x551C, 0x1251, 0x552F, 0x552F, 0x18A9, - 0x5531, 0x5531, 0x1BB7, 0x5535, 0x5535, 0x16BD, 0x553E, 0x553E, 0x1CD6, - 0x5544, 0x5544, 0x1CE4, 0x5546, 0x5546, 0x14D7, 0x554F, 0x554F, 0x12E7, - 0x5553, 0x5553, 0x0E7A, 0x5556, 0x5556, 0x1079, 0x555E, 0x555E, 0x1692, - 0x5563, 0x5563, 0x1DE6, 0x557C, 0x557C, 0x1A69, 0x5580, 0x5580, 0x0DFB, - 0x5584, 0x5584, 0x152D, 0x5586, 0x5586, 0x1C01, 0x5587, 0x5587, 0x1116, - 0x5589, 0x5589, 0x1F23, 0x558A, 0x558A, 0x1DE7, 0x5598, 0x5598, 0x1BEE, - 0x5599, 0x5599, 0x1F3B, 0x559A, 0x559A, 0x1ECB, 0x559C, 0x559C, 0x1F65, - 0x559D, 0x559D, 0x0DAD, 0x55A7, 0x55A7, 0x1F36, 0x55A9, 0x55A9, 0x18AA, - 0x55AA, 0x55AA, 0x14D8, 0x55AB, 0x55AB, 0x1024, 0x55AC, 0x55AC, 0x0F1F, - 0x55AE, 0x55AE, 0x1063, 0x55C5, 0x55C5, 0x1F24, 0x55C7, 0x55C7, 0x14F5, - 0x55D4, 0x55D4, 0x1B45, 0x55DA, 0x55DA, 0x17A8, 0x55DC, 0x55DC, 0x0FE2, - 0x55DF, 0x55DF, 0x1B85, 0x55E3, 0x55E3, 0x1485, 0x55E4, 0x55E4, 0x1CAA, - 0x55FD, 0x55FD, 0x15C1, 0x55FE, 0x55FE, 0x1AD4, 0x5606, 0x5606, 0x1CF1, - 0x5609, 0x5609, 0x0D74, 0x5614, 0x5614, 0x0F40, 0x5617, 0x5617, 0x14D9, - 0x562F, 0x562F, 0x157D, 0x5632, 0x5632, 0x1A82, 0x5634, 0x5634, 0x1C96, - 0x5636, 0x5636, 0x163E, 0x5653, 0x5653, 0x1E27, 0x5668, 0x5668, 0x0FE3, - 0x566B, 0x566B, 0x1F66, 0x5674, 0x5674, 0x1422, 0x5686, 0x5686, 0x1F12, - 0x56A5, 0x56A5, 0x1744, 0x56AC, 0x56AC, 0x1467, 0x56AE, 0x56AE, 0x1E20, - 0x56B4, 0x56B4, 0x1727, 0x56BC, 0x56BC, 0x196F, 0x56CA, 0x56CA, 0x1038, - 0x56CD, 0x56CD, 0x1F67, 0x56D1, 0x56D1, 0x1C4A, 0x56DA, 0x56DA, 0x15C2, - 0x56DB, 0x56DB, 0x1486, 0x56DE, 0x56DE, 0x1EF9, 0x56E0, 0x56E0, 0x1930, - 0x56F0, 0x56F0, 0x0EBE, 0x56F9, 0x56F9, 0x118B, 0x56FA, 0x56FA, 0x0E95, - 0x5703, 0x5703, 0x1D7E, 0x5704, 0x5704, 0x170E, 0x5708, 0x5708, 0x0F85, - 0x570B, 0x570B, 0x0F6B, 0x570D, 0x570D, 0x1890, 0x5712, 0x5712, 0x1873, - 0x5713, 0x5713, 0x1872, 0x5716, 0x5716, 0x10B0, 0x5718, 0x5718, 0x1064, - 0x571F, 0x571F, 0x1D1B, 0x5728, 0x5728, 0x19AC, 0x572D, 0x572D, 0x0F9B, - 0x5730, 0x5730, 0x1B21, 0x573B, 0x573B, 0x0FE4, 0x5740, 0x5740, 0x1B22, - 0x5742, 0x5742, 0x1D43, 0x5747, 0x5747, 0x0FAA, 0x574A, 0x574A, 0x134F, - 0x574D, 0x574D, 0x107A, 0x574E, 0x574E, 0x0DB7, 0x5750, 0x5750, 0x1AC7, - 0x5751, 0x5751, 0x0DFD, 0x5761, 0x5761, 0x1D32, 0x5764, 0x5764, 0x0EBF, - 0x5766, 0x5766, 0x1CF2, 0x576A, 0x576A, 0x1D69, 0x576E, 0x576E, 0x109C, - 0x5770, 0x5770, 0x0E54, 0x5775, 0x5775, 0x0F41, 0x577C, 0x577C, 0x1CE5, - 0x5782, 0x5782, 0x15C3, 0x5788, 0x5788, 0x109B, 0x578B, 0x578B, 0x1E5E, - 0x5793, 0x5793, 0x1E08, 0x57A0, 0x57A0, 0x18E5, 0x57A2, 0x57A2, 0x0F42, - 0x57A3, 0x57A3, 0x1874, 0x57C3, 0x57C3, 0x16D2, 0x57C7, 0x57C7, 0x1822, - 0x57C8, 0x57C8, 0x1AF9, 0x57CB, 0x57CB, 0x1264, 0x57CE, 0x57CE, 0x1562, - 0x57DF, 0x57DF, 0x173C, 0x57E0, 0x57E0, 0x13FD, 0x57F0, 0x57F0, 0x1BCB, - 0x57F4, 0x57F4, 0x1658, 0x57F7, 0x57F7, 0x1B78, 0x57F9, 0x57F9, 0x136B, - 0x57FA, 0x57FA, 0x0FE5, 0x57FC, 0x57FC, 0x0FE6, 0x5800, 0x5800, 0x0F77, - 0x5802, 0x5802, 0x1090, 0x5805, 0x5805, 0x0E35, 0x5806, 0x5806, 0x1D23, - 0x5808, 0x5808, 0x0DD1, 0x5809, 0x5809, 0x18D3, 0x580A, 0x580A, 0x16A1, - 0x581E, 0x581E, 0x1C13, 0x5821, 0x5821, 0x13C3, 0x5824, 0x5824, 0x1A6A, - 0x5827, 0x5827, 0x1745, 0x582A, 0x582A, 0x0DB8, 0x582F, 0x582F, 0x17FE, - 0x5830, 0x5830, 0x171E, 0x5831, 0x5831, 0x13C4, 0x5834, 0x5834, 0x1989, - 0x5835, 0x5835, 0x10B1, 0x583A, 0x583A, 0x0E7B, 0x584A, 0x584A, 0x0F11, - 0x584B, 0x584B, 0x1772, 0x584F, 0x584F, 0x0DEC, 0x5851, 0x5851, 0x157E, - 0x5854, 0x5854, 0x1D00, 0x5857, 0x5857, 0x10B2, 0x5858, 0x5858, 0x1091, - 0x585A, 0x585A, 0x1C54, 0x585E, 0x585E, 0x14F2, 0x5861, 0x5861, 0x19FA, - 0x5862, 0x5862, 0x17A9, 0x5864, 0x5864, 0x1F2D, 0x5875, 0x5875, 0x1B46, - 0x5879, 0x5879, 0x1BAC, 0x587C, 0x587C, 0x19FB, 0x587E, 0x587E, 0x15FD, - 0x5883, 0x5883, 0x0E55, 0x5885, 0x5885, 0x14FD, 0x5889, 0x5889, 0x1823, - 0x5893, 0x5893, 0x12C1, 0x589C, 0x589C, 0x1C61, 0x589E, 0x589E, 0x1B13, - 0x589F, 0x589F, 0x1E28, 0x58A8, 0x58A8, 0x12E2, 0x58A9, 0x58A9, 0x10DF, - 0x58AE, 0x58AE, 0x1CD7, 0x58B3, 0x58B3, 0x1423, 0x58BA, 0x58BA, 0x17AA, - 0x58BB, 0x58BB, 0x198A, 0x58BE, 0x58BE, 0x0D96, 0x58C1, 0x58C1, 0x139E, - 0x58C5, 0x58C5, 0x17CA, 0x58C7, 0x58C7, 0x1065, 0x58CE, 0x58CE, 0x1F2E, - 0x58D1, 0x58D1, 0x1DCE, 0x58D3, 0x58D3, 0x16C5, 0x58D5, 0x58D5, 0x1E7B, - 0x58D8, 0x58D8, 0x11D4, 0x58D9, 0x58D9, 0x0F02, 0x58DE, 0x58DE, 0x0F12, - 0x58DF, 0x58DF, 0x11B8, 0x58E4, 0x58E4, 0x16F8, 0x58EB, 0x58EB, 0x1487, - 0x58EC, 0x58EC, 0x1946, 0x58EF, 0x58EF, 0x198B, 0x58F9, 0x58F9, 0x193F, - 0x58FA, 0x58FA, 0x1E7C, 0x58FB, 0x58FB, 0x14FE, 0x58FD, 0x58FD, 0x15C4, - 0x590F, 0x590F, 0x1DC3, 0x5914, 0x5914, 0x0FE7, 0x5915, 0x5915, 0x151B, - 0x5916, 0x5916, 0x17F7, 0x5919, 0x5919, 0x15FE, 0x591A, 0x591A, 0x105E, - 0x591C, 0x591C, 0x16E9, 0x5922, 0x5922, 0x12BD, 0x5927, 0x5927, 0x109D, - 0x5929, 0x5929, 0x1BEF, 0x592A, 0x592A, 0x1D09, 0x592B, 0x592B, 0x13FE, - 0x592D, 0x592D, 0x17FF, 0x592E, 0x592E, 0x16CA, 0x5931, 0x5931, 0x167E, - 0x5937, 0x5937, 0x1910, 0x593E, 0x593E, 0x1E51, 0x5944, 0x5944, 0x1728, - 0x5947, 0x5947, 0x0FE8, 0x5948, 0x5948, 0x103C, 0x5949, 0x5949, 0x13E6, - 0x594E, 0x594E, 0x0F9C, 0x594F, 0x594F, 0x1AD5, 0x5950, 0x5950, 0x1ECC, - 0x5951, 0x5951, 0x0E7C, 0x5954, 0x5954, 0x1424, 0x5955, 0x5955, 0x1E32, - 0x5957, 0x5957, 0x1D2A, 0x595A, 0x595A, 0x1E09, 0x5960, 0x5960, 0x19FC, - 0x5962, 0x5962, 0x1488, 0x5967, 0x5967, 0x17AB, 0x596A, 0x596A, 0x1CFA, - 0x596B, 0x596B, 0x18D8, 0x596C, 0x596C, 0x198C, 0x596D, 0x596D, 0x151C, - 0x596E, 0x596E, 0x1425, 0x5973, 0x5973, 0x103F, 0x5974, 0x5974, 0x104A, - 0x5978, 0x5978, 0x0D97, 0x597D, 0x597D, 0x1E7D, 0x5982, 0x5982, 0x1730, - 0x5983, 0x5983, 0x1442, 0x5984, 0x5984, 0x1259, 0x598A, 0x598A, 0x1947, - 0x5993, 0x5993, 0x0FE9, 0x5996, 0x5996, 0x1800, 0x5997, 0x5997, 0x0FC7, - 0x5999, 0x5999, 0x12C2, 0x59A5, 0x59A5, 0x1CD8, 0x59A8, 0x59A8, 0x1350, - 0x59AC, 0x59AC, 0x1D2B, 0x59B9, 0x59B9, 0x1265, 0x59BB, 0x59BB, 0x1BDB, - 0x59BE, 0x59BE, 0x1C14, 0x59C3, 0x59C3, 0x1A36, 0x59C6, 0x59C6, 0x129F, - 0x59C9, 0x59C9, 0x1956, 0x59CB, 0x59CB, 0x163F, 0x59D0, 0x59D0, 0x19C3, - 0x59D1, 0x59D1, 0x0E96, 0x59D3, 0x59D3, 0x1563, 0x59D4, 0x59D4, 0x1891, - 0x59D9, 0x59D9, 0x1948, 0x59DA, 0x59DA, 0x1801, 0x59DC, 0x59DC, 0x0DD2, - 0x59DD, 0x59DD, 0x1AD0, 0x59E6, 0x59E6, 0x0D98, 0x59E8, 0x59E8, 0x1911, - 0x59EA, 0x59EA, 0x1B69, 0x59EC, 0x59EC, 0x1F68, 0x59EE, 0x59EE, 0x1DF8, - 0x59F8, 0x59F8, 0x1746, 0x59FB, 0x59FB, 0x1931, 0x59FF, 0x59FF, 0x1957, - 0x5A01, 0x5A01, 0x1892, 0x5A03, 0x5A03, 0x17F4, 0x5A11, 0x5A11, 0x1489, - 0x5A18, 0x5A18, 0x1039, 0x5A1B, 0x5A1B, 0x17AC, 0x5A1C, 0x5A1C, 0x1026, - 0x5A1F, 0x5A1F, 0x1747, 0x5A20, 0x5A20, 0x166B, 0x5A25, 0x5A25, 0x1693, - 0x5A29, 0x5A29, 0x1240, 0x5A36, 0x5A36, 0x1C97, 0x5A3C, 0x5A3C, 0x1BB8, - 0x5A41, 0x5A41, 0x11D5, 0x5A46, 0x5A46, 0x1D33, 0x5A49, 0x5A49, 0x17DB, - 0x5A5A, 0x5A5A, 0x1EA4, 0x5A62, 0x5A62, 0x1443, 0x5A66, 0x5A66, 0x13FF, - 0x5A92, 0x5A92, 0x1266, 0x5A9A, 0x5A9A, 0x12F4, 0x5A9B, 0x5A9B, 0x1875, - 0x5AA4, 0x5AA4, 0x1640, 0x5AC1, 0x5AC1, 0x0D75, 0x5AC2, 0x5AC2, 0x15C5, - 0x5AC4, 0x5AC4, 0x1876, 0x5AC9, 0x5AC9, 0x1B6A, 0x5ACC, 0x5ACC, 0x1E4E, - 0x5AE1, 0x5AE1, 0x19DD, 0x5AE6, 0x5AE6, 0x1DF9, 0x5AE9, 0x5AE9, 0x1055, - 0x5B05, 0x5B05, 0x1EB9, 0x5B09, 0x5B09, 0x1F69, 0x5B0B, 0x5B0B, 0x152E, - 0x5B0C, 0x5B0C, 0x0F20, 0x5B16, 0x5B16, 0x1D6F, 0x5B2A, 0x5B2A, 0x1468, - 0x5B40, 0x5B40, 0x14DA, 0x5B43, 0x5B43, 0x16F9, 0x5B50, 0x5B50, 0x1958, - 0x5B51, 0x5B51, 0x1E4A, 0x5B54, 0x5B54, 0x0ECE, 0x5B55, 0x5B55, 0x1951, - 0x5B57, 0x5B57, 0x1959, 0x5B58, 0x5B58, 0x1AB0, 0x5B5A, 0x5B5A, 0x1400, - 0x5B5C, 0x5B5C, 0x195A, 0x5B5D, 0x5B5D, 0x1F13, 0x5B5F, 0x5B5F, 0x1277, - 0x5B63, 0x5B63, 0x0E7D, 0x5B64, 0x5B64, 0x0E97, 0x5B69, 0x5B69, 0x1E0A, - 0x5B6B, 0x5B6B, 0x15AA, 0x5B70, 0x5B70, 0x15FF, 0x5B71, 0x5B71, 0x197A, - 0x5B75, 0x5B75, 0x1401, 0x5B78, 0x5B78, 0x1DCF, 0x5B7A, 0x5B7A, 0x18AB, - 0x5B7C, 0x5B7C, 0x1723, 0x5B85, 0x5B85, 0x10AA, 0x5B87, 0x5B87, 0x183C, - 0x5B88, 0x5B88, 0x15C6, 0x5B89, 0x5B89, 0x16AF, 0x5B8B, 0x5B8B, 0x15B1, - 0x5B8C, 0x5B8C, 0x17DC, 0x5B8F, 0x5B8F, 0x0F18, 0x5B93, 0x5B93, 0x13D6, - 0x5B95, 0x5B95, 0x1D03, 0x5B96, 0x5B96, 0x1F0E, 0x5B97, 0x5B97, 0x1AB6, - 0x5B98, 0x5B98, 0x0EEC, 0x5B99, 0x5B99, 0x1AD6, 0x5B9A, 0x5B9A, 0x1A37, - 0x5B9B, 0x5B9B, 0x17DD, 0x5B9C, 0x5B9C, 0x18FD, 0x5BA2, 0x5BA2, 0x0DFC, - 0x5BA3, 0x5BA3, 0x152F, 0x5BA4, 0x5BA4, 0x167F, 0x5BA5, 0x5BA5, 0x18AC, - 0x5BA6, 0x5BA6, 0x1ECD, 0x5BAC, 0x5BAC, 0x1564, 0x5BAE, 0x5BAE, 0x0F7B, - 0x5BB0, 0x5BB0, 0x19AD, 0x5BB3, 0x5BB3, 0x1E0B, 0x5BB4, 0x5BB4, 0x1748, - 0x5BB5, 0x5BB5, 0x157F, 0x5BB6, 0x5BB6, 0x0D76, 0x5BB8, 0x5BB8, 0x166C, - 0x5BB9, 0x5BB9, 0x1824, 0x5BBF, 0x5BBF, 0x1600, 0x5BC0, 0x5BC0, 0x1BCC, - 0x5BC2, 0x5BC2, 0x19DE, 0x5BC3, 0x5BC3, 0x1877, 0x5BC4, 0x5BC4, 0x0FEA, - 0x5BC5, 0x5BC5, 0x1932, 0x5BC6, 0x5BC6, 0x1313, 0x5BC7, 0x5BC7, 0x0F43, - 0x5BCC, 0x5BCC, 0x1402, 0x5BD0, 0x5BD0, 0x1267, 0x5BD2, 0x5BD2, 0x1DD3, - 0x5BD3, 0x5BD3, 0x183D, 0x5BD4, 0x5BD4, 0x1659, 0x5BD7, 0x5BD7, 0x1048, - 0x5BDE, 0x5BDE, 0x1238, 0x5BDF, 0x5BDF, 0x1BA6, 0x5BE1, 0x5BE1, 0x0EDB, - 0x5BE2, 0x5BE2, 0x1CC8, 0x5BE4, 0x5BE4, 0x17AD, 0x5BE5, 0x5BE5, 0x1802, - 0x5BE6, 0x5BE6, 0x1680, 0x5BE7, 0x5BE7, 0x1047, 0x5BE8, 0x5BE8, 0x1BCD, - 0x5BE9, 0x5BE9, 0x1682, 0x5BEB, 0x5BEB, 0x148A, 0x5BEC, 0x5BEC, 0x0EED, - 0x5BEE, 0x5BEE, 0x11C9, 0x5BEF, 0x5BEF, 0x1AFA, 0x5BF5, 0x5BF5, 0x1C55, - 0x5BF6, 0x5BF6, 0x13C5, 0x5BF8, 0x5BF8, 0x1C4F, 0x5BFA, 0x5BFA, 0x148B, - 0x5C01, 0x5C01, 0x13E7, 0x5C04, 0x5C04, 0x148C, 0x5C07, 0x5C07, 0x198D, - 0x5C08, 0x5C08, 0x19FD, 0x5C09, 0x5C09, 0x1893, 0x5C0A, 0x5C0A, 0x1AB1, - 0x5C0B, 0x5C0B, 0x1683, 0x5C0D, 0x5C0D, 0x109E, 0x5C0E, 0x5C0E, 0x10B3, - 0x5C0F, 0x5C0F, 0x1580, 0x5C11, 0x5C11, 0x1581, 0x5C16, 0x5C16, 0x1C0A, - 0x5C19, 0x5C19, 0x14DB, 0x5C24, 0x5C24, 0x183E, 0x5C28, 0x5C28, 0x1351, - 0x5C31, 0x5C31, 0x1C98, 0x5C38, 0x5C38, 0x1641, 0x5C39, 0x5C39, 0x18D9, - 0x5C3A, 0x5C3A, 0x1BE0, 0x5C3B, 0x5C3B, 0x0E98, 0x5C3C, 0x5C3C, 0x105A, - 0x5C3E, 0x5C3E, 0x12F5, 0x5C3F, 0x5C3F, 0x1054, 0x5C40, 0x5C40, 0x0F6C, - 0x5C45, 0x5C45, 0x0E03, 0x5C46, 0x5C46, 0x0E7E, 0x5C48, 0x5C48, 0x0F78, - 0x5C4B, 0x5C4B, 0x17BE, 0x5C4D, 0x5C4D, 0x1643, 0x5C4E, 0x5C4E, 0x1642, - 0x5C51, 0x5C51, 0x154B, 0x5C55, 0x5C55, 0x19FE, 0x5C5B, 0x5C5B, 0x13B4, - 0x5C60, 0x5C60, 0x10B4, 0x5C62, 0x5C62, 0x11D6, 0x5C64, 0x5C64, 0x1CA7, - 0x5C65, 0x5C65, 0x120A, 0x5C6C, 0x5C6C, 0x15A2, 0x5C6F, 0x5C6F, 0x1106, - 0x5C71, 0x5C71, 0x14B9, 0x5C79, 0x5C79, 0x1F58, 0x5C90, 0x5C90, 0x0FEB, - 0x5C91, 0x5C91, 0x197F, 0x5CA1, 0x5CA1, 0x0DD3, 0x5CA9, 0x5CA9, 0x16BE, - 0x5CAB, 0x5CAB, 0x15C7, 0x5CAC, 0x5CAC, 0x0DCB, 0x5CB1, 0x5CB1, 0x109F, - 0x5CB3, 0x5CB3, 0x16A2, 0x5CB5, 0x5CB5, 0x1E7E, 0x5CB7, 0x5CB7, 0x1306, - 0x5CB8, 0x5CB8, 0x16B0, 0x5CBA, 0x5CBA, 0x118C, 0x5CBE, 0x5CBE, 0x1A25, - 0x5CC0, 0x5CC0, 0x15C8, 0x5CD9, 0x5CD9, 0x1CAB, 0x5CE0, 0x5CE0, 0x14DC, - 0x5CE8, 0x5CE8, 0x1694, 0x5CEF, 0x5CF0, 0x13E8, 0x5CF4, 0x5CF4, 0x1E37, - 0x5CF6, 0x5CF6, 0x10B5, 0x5CFB, 0x5CFB, 0x1AFB, 0x5CFD, 0x5CFD, 0x1E52, - 0x5D07, 0x5D07, 0x1627, 0x5D0D, 0x5D0D, 0x1145, 0x5D0E, 0x5D0E, 0x0FEC, - 0x5D11, 0x5D11, 0x0EC0, 0x5D14, 0x5D14, 0x1C5F, 0x5D16, 0x5D16, 0x16D3, - 0x5D17, 0x5D17, 0x0DD4, 0x5D19, 0x5D19, 0x11F4, 0x5D27, 0x5D27, 0x1628, - 0x5D29, 0x5D29, 0x1437, 0x5D4B, 0x5D4B, 0x12F6, 0x5D4C, 0x5D4C, 0x0DB9, - 0x5D50, 0x5D50, 0x112F, 0x5D69, 0x5D69, 0x1629, 0x5D6C, 0x5D6C, 0x17F8, - 0x5D6F, 0x5D6F, 0x1B86, 0x5D87, 0x5D87, 0x0F44, 0x5D8B, 0x5D8B, 0x10B6, - 0x5D9D, 0x5D9D, 0x110D, 0x5DA0, 0x5DA0, 0x0F21, 0x5DA2, 0x5DA2, 0x1803, - 0x5DAA, 0x5DAA, 0x172B, 0x5DB8, 0x5DB8, 0x1773, 0x5DBA, 0x5DBA, 0x118D, - 0x5DBC, 0x5DBC, 0x14FF, 0x5DBD, 0x5DBD, 0x16A3, 0x5DCD, 0x5DCD, 0x17F9, - 0x5DD2, 0x5DD2, 0x1241, 0x5DD6, 0x5DD6, 0x16BF, 0x5DDD, 0x5DDD, 0x1BF0, - 0x5DDE, 0x5DDE, 0x1AD7, 0x5DE1, 0x5DE1, 0x1608, 0x5DE2, 0x5DE2, 0x1582, - 0x5DE5, 0x5DE5, 0x0ECF, 0x5DE6, 0x5DE6, 0x1AC8, 0x5DE7, 0x5DE7, 0x0F22, - 0x5DE8, 0x5DE8, 0x0E04, 0x5DEB, 0x5DEB, 0x12CD, 0x5DEE, 0x5DEE, 0x1B87, - 0x5DF1, 0x5DF1, 0x0FED, 0x5DF2, 0x5DF2, 0x1912, 0x5DF3, 0x5DF3, 0x148D, - 0x5DF4, 0x5DF4, 0x1D34, 0x5DF7, 0x5DF7, 0x1DFA, 0x5DFD, 0x5DFD, 0x15AB, - 0x5DFE, 0x5DFE, 0x0E14, 0x5E02, 0x5E02, 0x1644, 0x5E03, 0x5E03, 0x1D7F, - 0x5E06, 0x5E06, 0x1392, 0x5E0C, 0x5E0C, 0x1F6A, 0x5E11, 0x5E11, 0x1D04, - 0x5E16, 0x5E16, 0x1C15, 0x5E19, 0x5E19, 0x1B6B, 0x5E1B, 0x5E1B, 0x137E, - 0x5E1D, 0x5E1D, 0x1A6B, 0x5E25, 0x5E25, 0x15C9, 0x5E2B, 0x5E2B, 0x148E, - 0x5E2D, 0x5E2D, 0x151D, 0x5E33, 0x5E33, 0x198E, 0x5E36, 0x5E36, 0x10A0, - 0x5E38, 0x5E38, 0x14DD, 0x5E3D, 0x5E3D, 0x12A0, 0x5E3F, 0x5E3F, 0x1F25, - 0x5E40, 0x5E40, 0x1A38, 0x5E44, 0x5E44, 0x16A4, 0x5E45, 0x5E45, 0x1D93, - 0x5E47, 0x5E47, 0x1352, 0x5E4C, 0x5E4C, 0x1EE1, 0x5E55, 0x5E55, 0x1239, - 0x5E5F, 0x5E5F, 0x1CAC, 0x5E61, 0x5E61, 0x1384, 0x5E62, 0x5E62, 0x1092, - 0x5E63, 0x5E63, 0x1D70, 0x5E72, 0x5E72, 0x0D99, 0x5E73, 0x5E73, 0x1D6A, - 0x5E74, 0x5E74, 0x1040, 0x5E77, 0x5E77, 0x13B5, 0x5E78, 0x5E78, 0x1E1A, - 0x5E79, 0x5E79, 0x0D9A, 0x5E7B, 0x5E7B, 0x1ECE, 0x5E7C, 0x5E7D, 0x18AD, - 0x5E7E, 0x5E7E, 0x0FEE, 0x5E84, 0x5E84, 0x198F, 0x5E87, 0x5E87, 0x1444, - 0x5E8A, 0x5E8A, 0x14DE, 0x5E8F, 0x5E8F, 0x1500, 0x5E95, 0x5E95, 0x19C4, - 0x5E97, 0x5E97, 0x1A26, 0x5E9A, 0x5E9A, 0x0E56, 0x5E9C, 0x5E9C, 0x1403, - 0x5EA0, 0x5EA0, 0x14DF, 0x5EA6, 0x5EA6, 0x10B7, 0x5EA7, 0x5EA7, 0x1AC9, - 0x5EAB, 0x5EAB, 0x0E99, 0x5EAD, 0x5EAD, 0x1A39, 0x5EB5, 0x5EB5, 0x16C0, - 0x5EB6, 0x5EB6, 0x1501, 0x5EB7, 0x5EB7, 0x0DD5, 0x5EB8, 0x5EB8, 0x1825, - 0x5EBE, 0x5EBE, 0x18AF, 0x5EC2, 0x5EC2, 0x14E0, 0x5EC8, 0x5EC8, 0x1DC4, - 0x5EC9, 0x5EC9, 0x1183, 0x5ECA, 0x5ECA, 0x113C, 0x5ED0, 0x5ED0, 0x0F45, - 0x5ED3, 0x5ED3, 0x0EE7, 0x5ED6, 0x5ED6, 0x11CA, 0x5EDA, 0x5EDA, 0x1AD8, - 0x5EDB, 0x5EDB, 0x19FF, 0x5EDF, 0x5EDF, 0x12C3, 0x5EE0, 0x5EE0, 0x1BB9, - 0x5EE2, 0x5EE2, 0x1D71, 0x5EE3, 0x5EE3, 0x0F03, 0x5EEC, 0x5EEC, 0x115C, - 0x5EF3, 0x5EF3, 0x1C1D, 0x5EF6, 0x5EF6, 0x1749, 0x5EF7, 0x5EF7, 0x1A3A, - 0x5EFA, 0x5EFA, 0x0E15, 0x5EFB, 0x5EFB, 0x1EFA, 0x5F01, 0x5F01, 0x13A8, - 0x5F04, 0x5F04, 0x11B9, 0x5F0A, 0x5F0A, 0x1D72, 0x5F0F, 0x5F0F, 0x165A, - 0x5F11, 0x5F11, 0x1645, 0x5F13, 0x5F13, 0x0F7C, 0x5F14, 0x5F14, 0x1A83, - 0x5F15, 0x5F15, 0x1933, 0x5F17, 0x5F17, 0x1434, 0x5F18, 0x5F18, 0x1EAE, - 0x5F1B, 0x5F1B, 0x1913, 0x5F1F, 0x5F1F, 0x1A6C, 0x5F26, 0x5F26, 0x1E38, - 0x5F27, 0x5F27, 0x1E7F, 0x5F29, 0x5F29, 0x104B, 0x5F31, 0x5F31, 0x16F0, - 0x5F35, 0x5F35, 0x1990, 0x5F3A, 0x5F3A, 0x0DD6, 0x5F3C, 0x5F3C, 0x1DB5, - 0x5F48, 0x5F48, 0x1CF3, 0x5F4A, 0x5F4A, 0x0DD7, 0x5F4C, 0x5F4C, 0x12F7, - 0x5F4E, 0x5F4E, 0x1242, 0x5F56, 0x5F56, 0x1066, 0x5F57, 0x5F57, 0x1E70, - 0x5F59, 0x5F59, 0x1F3D, 0x5F5B, 0x5F5B, 0x1914, 0x5F62, 0x5F62, 0x1E5F, - 0x5F66, 0x5F66, 0x171F, 0x5F67, 0x5F67, 0x1856, 0x5F69, 0x5F69, 0x1BCE, - 0x5F6A, 0x5F6A, 0x1D9A, 0x5F6B, 0x5F6B, 0x1A84, 0x5F6C, 0x5F6C, 0x1469, - 0x5F6D, 0x5F6D, 0x1D59, 0x5F70, 0x5F70, 0x1BBA, 0x5F71, 0x5F71, 0x1774, - 0x5F77, 0x5F77, 0x1353, 0x5F79, 0x5F79, 0x173D, 0x5F7C, 0x5F7C, 0x1DAD, - 0x5F7F, 0x5F7F, 0x1435, 0x5F80, 0x5F80, 0x17EE, 0x5F81, 0x5F81, 0x1A3B, - 0x5F85, 0x5F85, 0x10A1, 0x5F87, 0x5F87, 0x1609, 0x5F8A, 0x5F8A, 0x1EFB, - 0x5F8B, 0x5F8B, 0x11F8, 0x5F8C, 0x5F8C, 0x1F26, 0x5F90, 0x5F90, 0x1502, - 0x5F91, 0x5F91, 0x0E57, 0x5F92, 0x5F92, 0x10B8, 0x5F97, 0x5F97, 0x110C, - 0x5F98, 0x5F98, 0x136C, 0x5F99, 0x5F99, 0x148F, 0x5F9E, 0x5F9E, 0x1AB7, - 0x5FA0, 0x5FA0, 0x1146, 0x5FA1, 0x5FA1, 0x170F, 0x5FA8, 0x5FA8, 0x1EE2, - 0x5FA9, 0x5FA9, 0x13D7, 0x5FAA, 0x5FAA, 0x160A, 0x5FAE, 0x5FAE, 0x12F8, - 0x5FB5, 0x5FB5, 0x1B7E, 0x5FB7, 0x5FB7, 0x10AB, 0x5FB9, 0x5FB9, 0x1C02, - 0x5FBD, 0x5FBD, 0x1F3E, 0x5FC3, 0x5FC3, 0x1684, 0x5FC5, 0x5FC5, 0x1DB6, - 0x5FCC, 0x5FCC, 0x0FEF, 0x5FCD, 0x5FCD, 0x1934, 0x5FD6, 0x5FD6, 0x1C50, - 0x5FD7, 0x5FD7, 0x1B23, 0x5FD8, 0x5FD9, 0x125A, 0x5FE0, 0x5FE0, 0x1C8B, - 0x5FEB, 0x5FEB, 0x1CD3, 0x5FF5, 0x5FF5, 0x1043, 0x5FFD, 0x5FFD, 0x1EAA, - 0x5FFF, 0x5FFF, 0x1426, 0x600F, 0x600F, 0x16CB, 0x6012, 0x6012, 0x104C, - 0x6016, 0x6016, 0x1D80, 0x601C, 0x601C, 0x118E, 0x601D, 0x601D, 0x1490, - 0x6020, 0x6020, 0x1D0A, 0x6021, 0x6021, 0x1915, 0x6025, 0x6025, 0x0FD5, - 0x6027, 0x6027, 0x1565, 0x6028, 0x6028, 0x1878, 0x602A, 0x602A, 0x0F13, - 0x602F, 0x602F, 0x0E29, 0x6041, 0x6041, 0x1949, 0x6042, 0x6042, 0x160B, - 0x6043, 0x6043, 0x1646, 0x604D, 0x604D, 0x1EE3, 0x6050, 0x6050, 0x0ED0, - 0x6052, 0x6052, 0x1DFB, 0x6055, 0x6055, 0x1503, 0x6059, 0x6059, 0x16FA, - 0x605D, 0x605D, 0x0EFC, 0x6062, 0x6062, 0x1EFC, 0x6063, 0x6063, 0x195B, - 0x6064, 0x6064, 0x1F4A, 0x6065, 0x6065, 0x1CAD, 0x6068, 0x6068, 0x1DD4, - 0x6069, 0x6069, 0x18E6, 0x606A, 0x606A, 0x0D8C, 0x606C, 0x606C, 0x1044, - 0x606D, 0x606D, 0x0ED1, 0x606F, 0x606F, 0x165B, 0x6070, 0x6070, 0x1F5F, - 0x6085, 0x6085, 0x1761, 0x6089, 0x6089, 0x1681, 0x608C, 0x608C, 0x1A6D, - 0x608D, 0x608D, 0x1DD5, 0x6094, 0x6094, 0x1EFD, 0x6096, 0x6096, 0x1D50, - 0x609A, 0x609A, 0x15B2, 0x609B, 0x609B, 0x1A00, 0x609F, 0x609F, 0x17AE, - 0x60A0, 0x60A0, 0x18B0, 0x60A3, 0x60A3, 0x1ECF, 0x60A4, 0x60A4, 0x1C56, - 0x60A7, 0x60A7, 0x120B, 0x60B0, 0x60B0, 0x1AB8, 0x60B2, 0x60B2, 0x1445, - 0x60B3, 0x60B3, 0x10AC, 0x60B4, 0x60B4, 0x1C90, 0x60B6, 0x60B6, 0x1307, - 0x60B8, 0x60B8, 0x0E7F, 0x60BC, 0x60BC, 0x10B9, 0x60BD, 0x60BD, 0x1BDC, - 0x60C5, 0x60C5, 0x1A3C, 0x60C7, 0x60C7, 0x10E0, 0x60D1, 0x60D1, 0x1EA1, - 0x60DA, 0x60DA, 0x1EAB, 0x60DC, 0x60DC, 0x151E, 0x60DF, 0x60DF, 0x18B1, - 0x60E0, 0x60E0, 0x1E71, 0x60E1, 0x60E1, 0x16A5, 0x60F0, 0x60F0, 0x1CD9, - 0x60F1, 0x60F1, 0x1052, 0x60F3, 0x60F3, 0x14E1, 0x60F6, 0x60F6, 0x1EE4, - 0x60F9, 0x60F9, 0x16EA, 0x60FA, 0x60FA, 0x1566, 0x60FB, 0x60FB, 0x1CA5, - 0x6101, 0x6101, 0x15CA, 0x6106, 0x6106, 0x0E16, 0x6108, 0x6109, 0x18B2, - 0x610D, 0x610D, 0x1308, 0x610E, 0x610E, 0x1D5D, 0x610F, 0x610F, 0x18FE, - 0x6115, 0x6115, 0x16A6, 0x611A, 0x611A, 0x183F, 0x611B, 0x611B, 0x16D4, - 0x611F, 0x611F, 0x0DBA, 0x6127, 0x6127, 0x0F14, 0x6130, 0x6130, 0x1EE5, - 0x6134, 0x6134, 0x1BBB, 0x6137, 0x6137, 0x0DED, 0x613C, 0x613C, 0x166D, - 0x613E, 0x613E, 0x0DEE, 0x613F, 0x613F, 0x1879, 0x6142, 0x6142, 0x1826, - 0x6144, 0x6144, 0x11F9, 0x6147, 0x6147, 0x18E7, 0x6148, 0x6148, 0x195C, - 0x614A, 0x614A, 0x0E47, 0x614B, 0x614B, 0x1D0B, 0x614C, 0x614C, 0x1EE6, - 0x6153, 0x6153, 0x1D9B, 0x6155, 0x6155, 0x12A1, 0x6158, 0x6159, 0x1BAD, - 0x615D, 0x615D, 0x1D2F, 0x615F, 0x615F, 0x1D1D, 0x6162, 0x6162, 0x1243, - 0x6163, 0x6163, 0x0EEE, 0x6164, 0x6164, 0x0D8D, 0x6167, 0x6167, 0x1E72, - 0x6168, 0x6168, 0x0DEF, 0x616B, 0x616B, 0x1AB9, 0x616E, 0x616E, 0x115D, - 0x6170, 0x6170, 0x1894, 0x6176, 0x6176, 0x0E58, 0x6177, 0x6177, 0x0DD8, - 0x617D, 0x617D, 0x1BE1, 0x617E, 0x617E, 0x1818, 0x6181, 0x6181, 0x1C57, - 0x6182, 0x6182, 0x1840, 0x618A, 0x618A, 0x1446, 0x618E, 0x618E, 0x1B14, - 0x6190, 0x6190, 0x1171, 0x6191, 0x6191, 0x1475, 0x6194, 0x6194, 0x1C31, - 0x6198, 0x6198, 0x1F6C, 0x6199, 0x6199, 0x1F6B, 0x619A, 0x619A, 0x1CF4, - 0x61A4, 0x61A4, 0x1427, 0x61A7, 0x61A7, 0x10F0, 0x61A9, 0x61A9, 0x0E2C, - 0x61AB, 0x61AB, 0x1309, 0x61AC, 0x61AC, 0x0E59, 0x61AE, 0x61AE, 0x12CE, - 0x61B2, 0x61B2, 0x1E2B, 0x61B6, 0x61B6, 0x1719, 0x61BA, 0x61BA, 0x107B, - 0x61BE, 0x61BE, 0x0DBB, 0x61C3, 0x61C3, 0x0FBA, 0x61C7, 0x61C7, 0x0D9B, - 0x61C8, 0x61C8, 0x1E0C, 0x61C9, 0x61C9, 0x18F7, 0x61CA, 0x61CA, 0x17AF, - 0x61CB, 0x61CB, 0x12CF, 0x61E6, 0x61E6, 0x1027, 0x61F2, 0x61F2, 0x1B7F, - 0x61F6, 0x61F6, 0x1117, 0x61F7, 0x61F7, 0x1EFE, 0x61F8, 0x61F8, 0x1E39, - 0x61FA, 0x61FA, 0x1BAF, 0x61FC, 0x61FC, 0x0F46, 0x61FF, 0x61FF, 0x18FF, - 0x6200, 0x6200, 0x1172, 0x6207, 0x6207, 0x1093, 0x6208, 0x6208, 0x0EDC, - 0x620A, 0x620A, 0x12D0, 0x620C, 0x620C, 0x1623, 0x620D, 0x620D, 0x15CB, - 0x620E, 0x620E, 0x18E1, 0x6210, 0x6210, 0x1567, 0x6211, 0x6211, 0x1695, - 0x6212, 0x6212, 0x0E80, 0x6216, 0x6216, 0x1EA2, 0x621A, 0x621A, 0x1BE2, - 0x621F, 0x621F, 0x0FB3, 0x6221, 0x6221, 0x0DBC, 0x622A, 0x622A, 0x1A1D, - 0x622E, 0x622E, 0x11F0, 0x6230, 0x6230, 0x1A01, 0x6231, 0x6231, 0x1F6D, - 0x6234, 0x6234, 0x10A2, 0x6236, 0x6236, 0x1E80, 0x623E, 0x623E, 0x115E, - 0x623F, 0x623F, 0x1354, 0x6240, 0x6240, 0x1583, 0x6241, 0x6241, 0x1D60, - 0x6247, 0x6247, 0x1530, 0x6248, 0x6248, 0x1E81, 0x6249, 0x6249, 0x1447, - 0x624B, 0x624B, 0x15CC, 0x624D, 0x624D, 0x19AE, 0x6253, 0x6253, 0x1CDA, - 0x6258, 0x6258, 0x1CE6, 0x626E, 0x626E, 0x1428, 0x6271, 0x6271, 0x0FD6, - 0x6276, 0x6276, 0x1404, 0x6279, 0x6279, 0x1448, 0x627C, 0x627C, 0x16DC, - 0x627F, 0x627F, 0x1637, 0x6280, 0x6280, 0x0FF0, 0x6284, 0x6284, 0x1C32, - 0x6289, 0x6289, 0x0E40, 0x628A, 0x628A, 0x1D35, 0x6291, 0x6291, 0x171A, - 0x6292, 0x6292, 0x1504, 0x6295, 0x6295, 0x1D2C, 0x6297, 0x6297, 0x1DFC, - 0x6298, 0x6298, 0x1A1E, 0x629B, 0x629B, 0x1D81, 0x62AB, 0x62AB, 0x1DAE, - 0x62B1, 0x62B1, 0x1D82, 0x62B5, 0x62B5, 0x19C5, 0x62B9, 0x62B9, 0x1252, - 0x62BC, 0x62BC, 0x16C6, 0x62BD, 0x62BD, 0x1C62, 0x62C2, 0x62C2, 0x1436, - 0x62C7, 0x62C7, 0x12D1, 0x62C8, 0x62C8, 0x1045, 0x62C9, 0x62C9, 0x1139, - 0x62CC, 0x62CC, 0x132D, 0x62CD, 0x62CD, 0x1318, 0x62CF, 0x62CF, 0x1028, - 0x62D0, 0x62D0, 0x0F15, 0x62D2, 0x62D2, 0x0E05, 0x62D3, 0x62D3, 0x1BE3, - 0x62D4, 0x62D4, 0x1343, 0x62D6, 0x62D6, 0x1CDB, 0x62D7, 0x62D7, 0x1804, - 0x62D8, 0x62D8, 0x0F47, 0x62D9, 0x62D9, 0x1AB3, 0x62DB, 0x62DB, 0x1C33, - 0x62DC, 0x62DC, 0x136D, 0x62EC, 0x62EC, 0x0EFD, 0x62ED, 0x62ED, 0x165C, - 0x62EE, 0x62EE, 0x1021, 0x62EF, 0x62EF, 0x1B16, 0x62F1, 0x62F1, 0x0ED2, - 0x62F3, 0x62F3, 0x0F86, 0x62F7, 0x62F7, 0x0E9A, 0x62FE, 0x62FE, 0x162E, - 0x62FF, 0x62FF, 0x1029, 0x6301, 0x6301, 0x1B24, 0x6307, 0x6307, 0x1B25, - 0x6309, 0x6309, 0x16B1, 0x6311, 0x6311, 0x10BA, 0x632B, 0x632B, 0x1ACA, - 0x632F, 0x632F, 0x1B47, 0x633A, 0x633A, 0x1A3D, 0x633B, 0x633B, 0x174B, - 0x633D, 0x633D, 0x1244, 0x633E, 0x633E, 0x1E53, 0x6349, 0x6349, 0x1B8F, - 0x634C, 0x634C, 0x1D4D, 0x634F, 0x634F, 0x102F, 0x6350, 0x6350, 0x174A, - 0x6355, 0x6355, 0x1D83, 0x6367, 0x6367, 0x13EA, 0x6368, 0x6368, 0x1491, - 0x636E, 0x636E, 0x0E06, 0x6372, 0x6372, 0x0F87, 0x6377, 0x6377, 0x1C16, - 0x637A, 0x637A, 0x1030, 0x637B, 0x637B, 0x1046, 0x637F, 0x637F, 0x1505, - 0x6383, 0x6383, 0x1584, 0x6388, 0x6388, 0x15CD, 0x6389, 0x6389, 0x10BB, - 0x638C, 0x638C, 0x1991, 0x6392, 0x6392, 0x136E, 0x6396, 0x6396, 0x16DD, - 0x6398, 0x6398, 0x0F79, 0x639B, 0x639B, 0x0F0D, 0x63A0, 0x63A0, 0x1149, - 0x63A1, 0x63A1, 0x1BCF, 0x63A2, 0x63A2, 0x1CFC, 0x63A5, 0x63A5, 0x1A2D, - 0x63A7, 0x63A7, 0x0ED3, 0x63A8, 0x63A8, 0x1C63, 0x63A9, 0x63A9, 0x1729, - 0x63AA, 0x63AA, 0x1A85, 0x63C0, 0x63C0, 0x0D9C, 0x63C4, 0x63C4, 0x18B4, - 0x63C6, 0x63C6, 0x0F9D, 0x63CF, 0x63CF, 0x12C4, 0x63D0, 0x63D0, 0x1A6E, - 0x63D6, 0x63D6, 0x18F3, 0x63DA, 0x63DA, 0x16FB, 0x63DB, 0x63DB, 0x1ED0, - 0x63E1, 0x63E1, 0x16A7, 0x63ED, 0x63ED, 0x0E2D, 0x63EE, 0x63EE, 0x1F3F, - 0x63F4, 0x63F4, 0x187A, 0x63F6, 0x63F6, 0x16EB, 0x63F7, 0x63F7, 0x14CF, - 0x640D, 0x640D, 0x15AC, 0x640F, 0x640F, 0x1319, 0x6414, 0x6414, 0x1585, - 0x6416, 0x6416, 0x1805, 0x6417, 0x6417, 0x10BC, 0x641C, 0x641C, 0x15CE, - 0x6422, 0x6422, 0x1B48, 0x642C, 0x642C, 0x132E, 0x642D, 0x642D, 0x1D01, - 0x643A, 0x643A, 0x1F46, 0x643E, 0x643E, 0x1B90, 0x6458, 0x6458, 0x19DF, - 0x6460, 0x6460, 0x1C58, 0x6469, 0x6469, 0x1230, 0x646F, 0x646F, 0x1B26, - 0x6478, 0x6479, 0x12A2, 0x647A, 0x647A, 0x1A2E, 0x6488, 0x6488, 0x11A0, - 0x6491, 0x6491, 0x1D17, 0x6492, 0x6492, 0x14C4, 0x6493, 0x6493, 0x1806, - 0x649A, 0x649A, 0x1041, 0x649E, 0x649E, 0x1094, 0x64A4, 0x64A4, 0x1C03, - 0x64A5, 0x64A5, 0x1344, 0x64AB, 0x64AB, 0x12D2, 0x64AD, 0x64AD, 0x1D36, - 0x64AE, 0x64AE, 0x1C5D, 0x64B0, 0x64B0, 0x1B96, 0x64B2, 0x64B2, 0x131A, - 0x64BB, 0x64BB, 0x1074, 0x64C1, 0x64C1, 0x17CB, 0x64C4, 0x64C4, 0x11A1, - 0x64C5, 0x64C5, 0x1BF1, 0x64C7, 0x64C7, 0x1D15, 0x64CA, 0x64CA, 0x0E2E, - 0x64CD, 0x64CD, 0x1A86, 0x64CE, 0x64CE, 0x0E5A, 0x64D2, 0x64D2, 0x0FC8, - 0x64D4, 0x64D4, 0x107C, 0x64D8, 0x64D8, 0x139F, 0x64DA, 0x64DA, 0x0E07, - 0x64E1, 0x64E1, 0x10A3, 0x64E2, 0x64E2, 0x1CE7, 0x64E5, 0x64E5, 0x1130, - 0x64E6, 0x64E6, 0x1BA7, 0x64E7, 0x64E7, 0x0E08, 0x64EC, 0x64EC, 0x1900, - 0x64F2, 0x64F2, 0x1BE4, 0x64F4, 0x64F4, 0x1EC5, 0x64FA, 0x64FA, 0x1D37, - 0x64FE, 0x64FE, 0x1807, 0x6500, 0x6500, 0x132F, 0x6504, 0x6504, 0x1D18, - 0x6518, 0x6518, 0x16FC, 0x651D, 0x651D, 0x155F, 0x6523, 0x6523, 0x1173, - 0x652A, 0x652A, 0x0F23, 0x652B, 0x652B, 0x1EC6, 0x652C, 0x652C, 0x1131, - 0x652F, 0x652F, 0x1B27, 0x6536, 0x6536, 0x15CF, 0x6537, 0x6537, 0x0E9B, - 0x6538, 0x6538, 0x18B5, 0x6539, 0x6539, 0x0DF0, 0x653B, 0x653B, 0x0ED4, - 0x653E, 0x653E, 0x1355, 0x653F, 0x653F, 0x1A3E, 0x6545, 0x6545, 0x0E9C, - 0x6548, 0x6548, 0x1F14, 0x654D, 0x654D, 0x1506, 0x654E, 0x654E, 0x0F24, - 0x654F, 0x654F, 0x130A, 0x6551, 0x6551, 0x0F48, 0x6556, 0x6556, 0x17B0, - 0x6557, 0x6557, 0x1D51, 0x655E, 0x655E, 0x1BBC, 0x6562, 0x6562, 0x0DBD, - 0x6563, 0x6563, 0x14BA, 0x6566, 0x6566, 0x10E1, 0x656C, 0x656C, 0x0E5B, - 0x656D, 0x656D, 0x16FD, 0x6572, 0x6572, 0x0E9D, 0x6574, 0x6574, 0x1A3F, - 0x6575, 0x6575, 0x19E0, 0x6577, 0x6577, 0x1405, 0x6578, 0x6578, 0x15D0, - 0x657E, 0x657E, 0x1531, 0x6582, 0x6582, 0x1184, 0x6583, 0x6583, 0x1D73, - 0x6585, 0x6585, 0x1F15, 0x6587, 0x6587, 0x12E8, 0x658C, 0x658C, 0x146A, - 0x6590, 0x6590, 0x1449, 0x6591, 0x6591, 0x1330, 0x6597, 0x6597, 0x10FD, - 0x6599, 0x6599, 0x11CB, 0x659B, 0x659B, 0x0EB8, 0x659C, 0x659C, 0x1492, - 0x659F, 0x659F, 0x1B76, 0x65A1, 0x65A1, 0x16B9, 0x65A4, 0x65A4, 0x0FBB, - 0x65A5, 0x65A5, 0x1BE5, 0x65A7, 0x65A7, 0x1406, 0x65AB, 0x65AB, 0x1970, - 0x65AC, 0x65AC, 0x1BB0, 0x65AF, 0x65AF, 0x1493, 0x65B0, 0x65B0, 0x166E, - 0x65B7, 0x65B7, 0x1067, 0x65B9, 0x65B9, 0x1356, 0x65BC, 0x65BC, 0x1710, - 0x65BD, 0x65BD, 0x1647, 0x65C1, 0x65C1, 0x1357, 0x65C5, 0x65C5, 0x115F, - 0x65CB, 0x65CB, 0x1532, 0x65CC, 0x65CC, 0x1A40, 0x65CF, 0x65CF, 0x1AAC, - 0x65D2, 0x65D2, 0x11E2, 0x65D7, 0x65D7, 0x0FF1, 0x65E0, 0x65E0, 0x12D3, - 0x65E3, 0x65E3, 0x0FF2, 0x65E5, 0x65E5, 0x1940, 0x65E6, 0x65E6, 0x1068, - 0x65E8, 0x65E8, 0x1B28, 0x65E9, 0x65E9, 0x1A87, 0x65EC, 0x65EC, 0x160C, - 0x65ED, 0x65ED, 0x1857, 0x65F1, 0x65F1, 0x1DD6, 0x65F4, 0x65F4, 0x1841, - 0x65FA, 0x65FA, 0x17EF, 0x65FB, 0x65FC, 0x130B, 0x65FD, 0x65FD, 0x10E2, - 0x65FF, 0x65FF, 0x17B1, 0x6606, 0x6606, 0x0EC1, 0x6607, 0x6607, 0x1638, - 0x6609, 0x6609, 0x1358, 0x660A, 0x660A, 0x1E82, 0x660C, 0x660C, 0x1BBD, - 0x660E, 0x660E, 0x128F, 0x660F, 0x660F, 0x1EA5, 0x6610, 0x6610, 0x1429, - 0x6611, 0x6611, 0x0FC9, 0x6613, 0x6613, 0x173E, 0x6614, 0x6614, 0x151F, - 0x6615, 0x6615, 0x1F53, 0x661E, 0x661E, 0x13B6, 0x661F, 0x661F, 0x1568, - 0x6620, 0x6620, 0x1775, 0x6625, 0x6625, 0x1C84, 0x6627, 0x6627, 0x1268, - 0x6628, 0x6628, 0x1971, 0x662D, 0x662D, 0x1586, 0x662F, 0x662F, 0x1648, - 0x6630, 0x6630, 0x1DC5, 0x6631, 0x6631, 0x1858, 0x6634, 0x6634, 0x12C5, - 0x6636, 0x6636, 0x1BBE, 0x663A, 0x663A, 0x13B7, 0x663B, 0x663B, 0x16CC, - 0x6641, 0x6641, 0x1A88, 0x6642, 0x6642, 0x1649, 0x6643, 0x6644, 0x1EE7, - 0x6649, 0x6649, 0x1B49, 0x664B, 0x664B, 0x1B4A, 0x664F, 0x664F, 0x16B2, - 0x6659, 0x6659, 0x1AFC, 0x665B, 0x665B, 0x1E3A, 0x665D, 0x665D, 0x1AD9, - 0x665E, 0x665E, 0x1F6E, 0x665F, 0x665F, 0x1569, 0x6664, 0x6664, 0x17B2, - 0x6665, 0x6665, 0x1ED2, 0x6666, 0x6666, 0x1EFF, 0x6667, 0x6667, 0x1E83, - 0x6668, 0x6668, 0x166F, 0x6669, 0x6669, 0x1245, 0x666B, 0x666B, 0x1CE8, - 0x666E, 0x666E, 0x13C6, 0x666F, 0x666F, 0x0E5C, 0x6673, 0x6673, 0x1520, - 0x6674, 0x6674, 0x1C1E, 0x6676, 0x6676, 0x1A41, 0x6677, 0x6677, 0x0F96, - 0x6678, 0x6678, 0x1A42, 0x667A, 0x667A, 0x1B29, 0x6684, 0x6684, 0x1F37, - 0x6687, 0x6687, 0x0D77, 0x6688, 0x6688, 0x1F34, 0x6689, 0x6689, 0x1F40, - 0x668E, 0x668E, 0x1776, 0x6690, 0x6690, 0x1895, 0x6691, 0x6691, 0x1507, - 0x6696, 0x6696, 0x102C, 0x6697, 0x6697, 0x16C1, 0x6698, 0x6698, 0x16FE, - 0x669D, 0x669D, 0x1290, 0x66A0, 0x66A0, 0x0E9E, 0x66A2, 0x66A2, 0x1BBF, - 0x66AB, 0x66AB, 0x1980, 0x66AE, 0x66AE, 0x12A4, 0x66B2, 0x66B2, 0x1992, - 0x66B3, 0x66B3, 0x1E73, 0x66B4, 0x66B4, 0x1D94, 0x66B9, 0x66B9, 0x1558, - 0x66BB, 0x66BB, 0x0E5D, 0x66BE, 0x66BE, 0x10E3, 0x66C4, 0x66C4, 0x176F, - 0x66C6, 0x66C6, 0x116B, 0x66C7, 0x66C7, 0x107D, 0x66C9, 0x66C9, 0x1F16, - 0x66D6, 0x66D6, 0x16D5, 0x66D9, 0x66D9, 0x1508, 0x66DC, 0x66DC, 0x1808, - 0x66DD, 0x66DD, 0x1D95, 0x66E0, 0x66E0, 0x0F04, 0x66E6, 0x66E6, 0x1F6F, - 0x66F0, 0x66F0, 0x17ED, 0x66F2, 0x66F2, 0x0EB9, 0x66F3, 0x66F3, 0x1791, - 0x66F4, 0x66F4, 0x0E5E, 0x66F7, 0x66F7, 0x0DAE, 0x66F8, 0x66F8, 0x1509, - 0x66F9, 0x66F9, 0x1A8A, 0x66FA, 0x66FA, 0x1A89, 0x66FC, 0x66FC, 0x1246, - 0x66FE, 0x66FE, 0x1B15, 0x66FF, 0x66FF, 0x1C26, 0x6700, 0x6700, 0x1C60, - 0x6703, 0x6703, 0x1F00, 0x6708, 0x6708, 0x1889, 0x6709, 0x6709, 0x18B6, - 0x670B, 0x670B, 0x1438, 0x670D, 0x670D, 0x13D8, 0x6714, 0x6714, 0x14B6, - 0x6715, 0x6715, 0x1B77, 0x6717, 0x6717, 0x113D, 0x671B, 0x671B, 0x125C, - 0x671D, 0x671D, 0x1A8B, 0x671E, 0x671F, 0x0FF3, 0x6726, 0x6726, 0x12BE, - 0x6727, 0x6727, 0x11BA, 0x6728, 0x6728, 0x12B4, 0x672A, 0x672A, 0x12F9, - 0x672B, 0x672B, 0x1253, 0x672C, 0x672C, 0x13E3, 0x672D, 0x672D, 0x1BA8, - 0x672E, 0x672E, 0x1C88, 0x6731, 0x6731, 0x1ADA, 0x6734, 0x6734, 0x131B, - 0x6736, 0x6736, 0x1CDC, 0x673A, 0x673A, 0x0F90, 0x673D, 0x673D, 0x1F27, - 0x6746, 0x6746, 0x0D9D, 0x6749, 0x6749, 0x14C9, 0x674E, 0x674E, 0x120C, - 0x674F, 0x674F, 0x1E1B, 0x6750, 0x6750, 0x19AF, 0x6751, 0x6751, 0x1C51, - 0x6753, 0x6753, 0x1D9C, 0x6756, 0x6756, 0x1993, 0x675C, 0x675C, 0x10FE, - 0x675E, 0x675E, 0x0FF5, 0x675F, 0x675F, 0x15A3, 0x676D, 0x676D, 0x1DFD, - 0x676F, 0x676F, 0x136F, 0x6770, 0x6770, 0x0E1F, 0x6771, 0x6771, 0x10F1, - 0x6773, 0x6773, 0x12C6, 0x6775, 0x6775, 0x19C6, 0x6777, 0x6777, 0x1D38, - 0x677B, 0x677B, 0x1057, 0x677E, 0x677E, 0x15B3, 0x677F, 0x677F, 0x1D44, - 0x6787, 0x6787, 0x144A, 0x6789, 0x6789, 0x17F0, 0x678B, 0x678B, 0x1359, - 0x678F, 0x678F, 0x1032, 0x6790, 0x6790, 0x1521, 0x6793, 0x6793, 0x10FF, - 0x6795, 0x6795, 0x1CC9, 0x6797, 0x6797, 0x1227, 0x679A, 0x679A, 0x1269, - 0x679C, 0x679C, 0x0EDD, 0x679D, 0x679D, 0x1B2A, 0x67AF, 0x67AF, 0x0E9F, - 0x67B0, 0x67B0, 0x1D6B, 0x67B3, 0x67B3, 0x1B2B, 0x67B6, 0x67B7, 0x0D78, - 0x67B8, 0x67B8, 0x0F49, 0x67BE, 0x67BE, 0x164A, 0x67C4, 0x67C4, 0x13B8, - 0x67CF, 0x67CF, 0x137F, 0x67D0, 0x67D0, 0x12A5, 0x67D1, 0x67D1, 0x0DBE, - 0x67D2, 0x67D2, 0x1CC5, 0x67D3, 0x67D3, 0x1766, 0x67D4, 0x67D4, 0x18B7, - 0x67DA, 0x67DA, 0x18B8, 0x67DD, 0x67DD, 0x1CE9, 0x67E9, 0x67E9, 0x0F4A, - 0x67EC, 0x67EC, 0x0D9E, 0x67EF, 0x67EF, 0x0D7A, 0x67F0, 0x67F0, 0x103D, - 0x67F1, 0x67F1, 0x1ADB, 0x67F3, 0x67F3, 0x11E3, 0x67F4, 0x67F4, 0x164B, - 0x67F5, 0x67F5, 0x1BD7, 0x67F6, 0x67F6, 0x1494, 0x67FB, 0x67FB, 0x1495, - 0x67FE, 0x67FE, 0x1A43, 0x6812, 0x6812, 0x160D, 0x6813, 0x6813, 0x1A02, - 0x6816, 0x6816, 0x150A, 0x6817, 0x6817, 0x11FA, 0x6821, 0x6821, 0x0F25, - 0x6822, 0x6822, 0x1380, 0x682A, 0x682A, 0x1ADC, 0x682F, 0x682F, 0x1859, - 0x6838, 0x6838, 0x1E18, 0x6839, 0x6839, 0x0FBC, 0x683C, 0x683C, 0x0E2F, - 0x683D, 0x683D, 0x19B0, 0x6840, 0x6840, 0x0E20, 0x6841, 0x6841, 0x1DFE, - 0x6842, 0x6842, 0x0E81, 0x6843, 0x6843, 0x10BD, 0x6848, 0x6848, 0x16B3, - 0x684E, 0x684E, 0x1B6C, 0x6850, 0x6850, 0x10F2, 0x6851, 0x6851, 0x14E2, - 0x6853, 0x6853, 0x1ED3, 0x6854, 0x6854, 0x1022, 0x686D, 0x686D, 0x1B4B, - 0x6876, 0x6876, 0x1D1E, 0x687F, 0x687F, 0x0D9F, 0x6881, 0x6881, 0x114F, - 0x6885, 0x6885, 0x126A, 0x688F, 0x688F, 0x0EBA, 0x6893, 0x6893, 0x19B1, - 0x6894, 0x6894, 0x1CAE, 0x6897, 0x6897, 0x0E5F, 0x689D, 0x689D, 0x1A8C, - 0x689F, 0x689F, 0x1F17, 0x68A1, 0x68A1, 0x17DE, 0x68A2, 0x68A2, 0x1C34, - 0x68A7, 0x68A7, 0x17B3, 0x68A8, 0x68A8, 0x120D, 0x68AD, 0x68AD, 0x1496, - 0x68AF, 0x68AF, 0x1A6F, 0x68B0, 0x68B0, 0x0E82, 0x68B1, 0x68B1, 0x0EC2, - 0x68B3, 0x68B3, 0x1587, 0x68B5, 0x68B5, 0x1393, 0x68B6, 0x68B6, 0x12FA, - 0x68C4, 0x68C4, 0x0FF7, 0x68C5, 0x68C5, 0x13B9, 0x68C9, 0x68C9, 0x1282, - 0x68CB, 0x68CB, 0x0FF6, 0x68CD, 0x68CD, 0x0EC3, 0x68D2, 0x68D2, 0x13EB, - 0x68D5, 0x68D5, 0x1ABA, 0x68D7, 0x68D7, 0x1A8D, 0x68D8, 0x68D8, 0x0FB4, - 0x68DA, 0x68DA, 0x1439, 0x68DF, 0x68DF, 0x10F3, 0x68E0, 0x68E0, 0x1095, - 0x68E7, 0x68E7, 0x197B, 0x68E8, 0x68E8, 0x0E83, 0x68EE, 0x68EE, 0x14CA, - 0x68F2, 0x68F2, 0x150B, 0x68F9, 0x68F9, 0x10BE, 0x68FA, 0x68FA, 0x0EEF, - 0x6900, 0x6900, 0x17DF, 0x6905, 0x6905, 0x1901, 0x690D, 0x690D, 0x165D, - 0x690E, 0x690E, 0x1C64, 0x6912, 0x6912, 0x1C35, 0x6927, 0x6927, 0x1291, - 0x6930, 0x6930, 0x16EC, 0x693D, 0x693D, 0x174C, 0x693F, 0x693F, 0x1C85, - 0x694A, 0x694A, 0x16FF, 0x6953, 0x6953, 0x1DA8, 0x6954, 0x6954, 0x154C, - 0x6955, 0x6955, 0x1CDD, 0x6957, 0x6957, 0x0E17, 0x6959, 0x6959, 0x12D4, - 0x695A, 0x695A, 0x1C36, 0x695E, 0x695E, 0x1200, 0x6960, 0x6960, 0x1033, - 0x6961, 0x6962, 0x18B9, 0x6963, 0x6963, 0x12FB, 0x6968, 0x6968, 0x1A44, - 0x696B, 0x696B, 0x1B10, 0x696D, 0x696D, 0x172C, 0x696E, 0x696E, 0x19C7, - 0x696F, 0x696F, 0x160E, 0x6975, 0x6975, 0x0FB5, 0x6977, 0x6977, 0x1E0D, - 0x6978, 0x6978, 0x1C65, 0x6979, 0x6979, 0x1777, 0x6995, 0x6995, 0x1827, - 0x699B, 0x699B, 0x1B4C, 0x699C, 0x699C, 0x135A, 0x69A5, 0x69A5, 0x1EE9, - 0x69A7, 0x69A7, 0x144B, 0x69AE, 0x69AE, 0x1778, 0x69B4, 0x69B4, 0x11E4, - 0x69BB, 0x69BB, 0x1D02, 0x69C1, 0x69C1, 0x0EA0, 0x69C3, 0x69C3, 0x1331, - 0x69CB, 0x69CB, 0x0F4B, 0x69CC, 0x69CC, 0x1D24, 0x69CD, 0x69CD, 0x1BC0, - 0x69D0, 0x69D0, 0x0F16, 0x69E8, 0x69E8, 0x0EE8, 0x69EA, 0x69EA, 0x0DF1, - 0x69FB, 0x69FB, 0x0F9E, 0x69FD, 0x69FD, 0x1A8E, 0x69FF, 0x69FF, 0x0FBD, - 0x6A02, 0x6A02, 0x16A8, 0x6A0A, 0x6A0A, 0x1385, 0x6A11, 0x6A11, 0x1150, - 0x6A13, 0x6A13, 0x11D7, 0x6A17, 0x6A17, 0x19C8, 0x6A19, 0x6A19, 0x1D9D, - 0x6A1E, 0x6A1E, 0x1C66, 0x6A1F, 0x6A1F, 0x1994, 0x6A21, 0x6A21, 0x12A6, - 0x6A23, 0x6A23, 0x1700, 0x6A35, 0x6A35, 0x1C37, 0x6A38, 0x6A38, 0x131C, - 0x6A39, 0x6A39, 0x15D1, 0x6A3A, 0x6A3A, 0x1EBA, 0x6A3D, 0x6A3D, 0x1AFD, - 0x6A44, 0x6A44, 0x0DBF, 0x6A48, 0x6A48, 0x1809, 0x6A4B, 0x6A4B, 0x0F26, - 0x6A52, 0x6A52, 0x185F, 0x6A53, 0x6A53, 0x160F, 0x6A58, 0x6A58, 0x0FAF, - 0x6A59, 0x6A59, 0x110E, 0x6A5F, 0x6A5F, 0x0FF8, 0x6A61, 0x6A61, 0x14E3, - 0x6A6B, 0x6A6B, 0x1F0F, 0x6A80, 0x6A80, 0x1069, 0x6A84, 0x6A84, 0x0E30, - 0x6A89, 0x6A89, 0x1A45, 0x6A8D, 0x6A8D, 0x171B, 0x6A8E, 0x6A8E, 0x0FCA, - 0x6A97, 0x6A97, 0x13A0, 0x6A9C, 0x6A9C, 0x1F01, 0x6AA2, 0x6AA2, 0x0E24, - 0x6AA3, 0x6AA3, 0x1995, 0x6AB3, 0x6AB3, 0x146B, 0x6ABB, 0x6ABB, 0x1DE8, - 0x6AC2, 0x6AC2, 0x10BF, 0x6AC3, 0x6AC3, 0x0F91, 0x6AD3, 0x6AD3, 0x11A2, - 0x6ADA, 0x6ADA, 0x1160, 0x6ADB, 0x6ADB, 0x1B0F, 0x6AF6, 0x6AF6, 0x1E2C, - 0x6AFB, 0x6AFB, 0x16E2, 0x6B04, 0x6B04, 0x1127, 0x6B0A, 0x6B0A, 0x0F88, - 0x6B0C, 0x6B0C, 0x1996, 0x6B12, 0x6B12, 0x1128, 0x6B16, 0x6B16, 0x1132, - 0x6B20, 0x6B20, 0x1F5B, 0x6B21, 0x6B21, 0x1B88, 0x6B23, 0x6B23, 0x1F54, - 0x6B32, 0x6B32, 0x1819, 0x6B3A, 0x6B3A, 0x0FF9, 0x6B3D, 0x6B3D, 0x1F5C, - 0x6B3E, 0x6B3E, 0x0EF0, 0x6B46, 0x6B46, 0x1F5D, 0x6B47, 0x6B47, 0x1E2F, - 0x6B4C, 0x6B4C, 0x0D7B, 0x6B4E, 0x6B4E, 0x1CF5, 0x6B50, 0x6B50, 0x0F4C, - 0x6B5F, 0x6B5F, 0x1731, 0x6B61, 0x6B61, 0x1ED1, 0x6B62, 0x6B62, 0x1B2C, - 0x6B63, 0x6B63, 0x1A46, 0x6B64, 0x6B64, 0x1B89, 0x6B65, 0x6B65, 0x13C7, - 0x6B66, 0x6B66, 0x12D5, 0x6B6A, 0x6B6A, 0x17F5, 0x6B72, 0x6B72, 0x1576, - 0x6B77, 0x6B77, 0x116C, 0x6B78, 0x6B78, 0x0F97, 0x6B7B, 0x6B7B, 0x1497, - 0x6B7F, 0x6B7F, 0x12BB, 0x6B83, 0x6B83, 0x16CD, 0x6B84, 0x6B84, 0x1B4D, - 0x6B86, 0x6B86, 0x1D0C, 0x6B89, 0x6B89, 0x1610, 0x6B8A, 0x6B8A, 0x15D2, - 0x6B96, 0x6B96, 0x165E, 0x6B98, 0x6B98, 0x197C, 0x6B9E, 0x6B9E, 0x1860, - 0x6BAE, 0x6BAE, 0x1185, 0x6BAF, 0x6BAF, 0x146C, 0x6BB2, 0x6BB2, 0x1559, - 0x6BB5, 0x6BB5, 0x106A, 0x6BB7, 0x6BB7, 0x18E8, 0x6BBA, 0x6BBA, 0x14C5, - 0x6BBC, 0x6BBC, 0x0D8E, 0x6BBF, 0x6BBF, 0x1A03, 0x6BC1, 0x6BC1, 0x1F3C, - 0x6BC5, 0x6BC5, 0x1902, 0x6BC6, 0x6BC6, 0x0F4D, 0x6BCB, 0x6BCB, 0x12D6, - 0x6BCD, 0x6BCD, 0x12A7, 0x6BCF, 0x6BCF, 0x126B, 0x6BD2, 0x6BD2, 0x10D5, - 0x6BD3, 0x6BD3, 0x18D4, 0x6BD4, 0x6BD4, 0x144C, 0x6BD6, 0x6BD8, 0x144D, - 0x6BDB, 0x6BDB, 0x12A8, 0x6BEB, 0x6BEB, 0x1E84, 0x6BEC, 0x6BEC, 0x0F4E, - 0x6C08, 0x6C08, 0x1A04, 0x6C0F, 0x6C0F, 0x168E, 0x6C11, 0x6C11, 0x130D, - 0x6C13, 0x6C13, 0x1278, 0x6C23, 0x6C23, 0x0FFA, 0x6C34, 0x6C34, 0x15D3, - 0x6C37, 0x6C37, 0x1476, 0x6C38, 0x6C38, 0x1779, 0x6C3E, 0x6C3E, 0x1394, - 0x6C40, 0x6C40, 0x1A47, 0x6C41, 0x6C41, 0x1B11, 0x6C42, 0x6C42, 0x0F4F, - 0x6C4E, 0x6C4E, 0x1395, 0x6C50, 0x6C50, 0x1522, 0x6C55, 0x6C55, 0x14BB, - 0x6C57, 0x6C57, 0x1DD7, 0x6C5A, 0x6C5A, 0x17B4, 0x6C5D, 0x6C5D, 0x1732, - 0x6C5E, 0x6C5E, 0x1EAF, 0x6C5F, 0x6C5F, 0x0DD9, 0x6C60, 0x6C60, 0x1B2D, - 0x6C68, 0x6C68, 0x0EC8, 0x6C6A, 0x6C6A, 0x17F1, 0x6C6D, 0x6C6D, 0x1792, - 0x6C70, 0x6C70, 0x1D0D, 0x6C72, 0x6C72, 0x0FD7, 0x6C76, 0x6C76, 0x12E9, - 0x6C7A, 0x6C7A, 0x0E41, 0x6C7D, 0x6C7D, 0x0FFB, 0x6C7E, 0x6C7E, 0x142A, - 0x6C81, 0x6C81, 0x1685, 0x6C82, 0x6C82, 0x0FFC, 0x6C83, 0x6C83, 0x17BF, - 0x6C85, 0x6C85, 0x187B, 0x6C86, 0x6C86, 0x1DFF, 0x6C87, 0x6C87, 0x174D, - 0x6C88, 0x6C88, 0x1CCA, 0x6C8C, 0x6C8C, 0x10E4, 0x6C90, 0x6C90, 0x12B5, - 0x6C92, 0x6C92, 0x12BC, 0x6C93, 0x6C93, 0x108A, 0x6C94, 0x6C94, 0x1283, - 0x6C95, 0x6C95, 0x12F1, 0x6C96, 0x6C96, 0x1C8C, 0x6C99, 0x6C99, 0x1498, - 0x6C9A, 0x6C9A, 0x1B2E, 0x6C9B, 0x6C9B, 0x1D52, 0x6CAB, 0x6CAB, 0x1254, - 0x6CAE, 0x6CAE, 0x19C9, 0x6CB3, 0x6CB3, 0x1DC6, 0x6CB8, 0x6CB8, 0x1450, - 0x6CB9, 0x6CB9, 0x18BB, 0x6CBB, 0x6CBB, 0x1CAF, 0x6CBC, 0x6CBC, 0x1588, - 0x6CBD, 0x6CBD, 0x0EA1, 0x6CBE, 0x6CBE, 0x1C0B, 0x6CBF, 0x6CBF, 0x174E, - 0x6CC1, 0x6CC1, 0x1EEA, 0x6CC2, 0x6CC2, 0x1E60, 0x6CC4, 0x6CC4, 0x154D, - 0x6CC9, 0x6CC9, 0x1BF2, 0x6CCA, 0x6CCA, 0x131D, 0x6CCC, 0x6CCC, 0x1DB7, - 0x6CD3, 0x6CD3, 0x1EB0, 0x6CD5, 0x6CD5, 0x139A, 0x6CD7, 0x6CD7, 0x1499, - 0x6CDB, 0x6CDB, 0x1396, 0x6CE1, 0x6CE1, 0x1D84, 0x6CE2, 0x6CE2, 0x1D39, - 0x6CE3, 0x6CE3, 0x18F4, 0x6CE5, 0x6CE5, 0x105B, 0x6CE8, 0x6CE8, 0x1ADD, - 0x6CEB, 0x6CEB, 0x1E3B, 0x6CEE, 0x6CEE, 0x1332, 0x6CEF, 0x6CEF, 0x130E, - 0x6CF0, 0x6CF0, 0x1D0E, 0x6CF3, 0x6CF3, 0x177A, 0x6D0B, 0x6D0B, 0x1701, - 0x6D0C, 0x6D0C, 0x1180, 0x6D11, 0x6D11, 0x13C8, 0x6D17, 0x6D17, 0x1577, - 0x6D19, 0x6D19, 0x15D4, 0x6D1B, 0x6D1B, 0x111E, 0x6D1E, 0x6D1E, 0x10F4, - 0x6D25, 0x6D25, 0x1B4E, 0x6D27, 0x6D27, 0x18BC, 0x6D29, 0x6D29, 0x154E, - 0x6D2A, 0x6D2A, 0x1EB1, 0x6D32, 0x6D32, 0x1ADE, 0x6D35, 0x6D35, 0x1611, - 0x6D36, 0x6D36, 0x1F50, 0x6D38, 0x6D38, 0x0F05, 0x6D39, 0x6D39, 0x187C, - 0x6D3B, 0x6D3B, 0x1EDB, 0x6D3D, 0x6D3D, 0x1F60, 0x6D3E, 0x6D3E, 0x1D3A, - 0x6D41, 0x6D41, 0x11E5, 0x6D59, 0x6D59, 0x1A1F, 0x6D5A, 0x6D5A, 0x1AFE, - 0x6D5C, 0x6D5C, 0x146D, 0x6D63, 0x6D63, 0x17E0, 0x6D66, 0x6D66, 0x1D85, - 0x6D69, 0x6D69, 0x1E85, 0x6D6A, 0x6D6A, 0x113E, 0x6D6C, 0x6D6C, 0x120E, - 0x6D6E, 0x6D6E, 0x1407, 0x6D74, 0x6D74, 0x181A, 0x6D77, 0x6D77, 0x1E0E, - 0x6D78, 0x6D78, 0x1CCB, 0x6D79, 0x6D79, 0x1E54, 0x6D7F, 0x6D7F, 0x1D53, - 0x6D85, 0x6D85, 0x1762, 0x6D87, 0x6D87, 0x0E60, 0x6D88, 0x6D88, 0x1589, - 0x6D89, 0x6D89, 0x1560, 0x6D8C, 0x6D8C, 0x1828, 0x6D8D, 0x6D8D, 0x1F18, - 0x6D8E, 0x6D8E, 0x174F, 0x6D91, 0x6D91, 0x15A4, 0x6D93, 0x6D93, 0x1750, - 0x6D95, 0x6D95, 0x1C27, 0x6DAF, 0x6DAF, 0x16D6, 0x6DB2, 0x6DB2, 0x16DE, - 0x6DB5, 0x6DB5, 0x1DE9, 0x6DC0, 0x6DC0, 0x1A48, 0x6DC3, 0x6DC3, 0x0F89, - 0x6DC4, 0x6DC4, 0x1CB0, 0x6DC5, 0x6DC5, 0x1523, 0x6DC6, 0x6DC6, 0x1F19, - 0x6DC7, 0x6DC7, 0x0FFD, 0x6DCB, 0x6DCB, 0x1228, 0x6DCF, 0x6DCF, 0x1E86, - 0x6DD1, 0x6DD1, 0x1601, 0x6DD8, 0x6DD8, 0x10C0, 0x6DD9, 0x6DD9, 0x1ABB, - 0x6DDA, 0x6DDA, 0x11D8, 0x6DDE, 0x6DDE, 0x15B4, 0x6DE1, 0x6DE1, 0x107E, - 0x6DE8, 0x6DE8, 0x1A49, 0x6DEA, 0x6DEA, 0x11F5, 0x6DEB, 0x6DEB, 0x18EE, - 0x6DEE, 0x6DEE, 0x1F02, 0x6DF1, 0x6DF1, 0x1686, 0x6DF3, 0x6DF3, 0x1612, - 0x6DF5, 0x6DF5, 0x1751, 0x6DF7, 0x6DF7, 0x1EA6, 0x6DF8, 0x6DF8, 0x1C1F, - 0x6DF9, 0x6DF9, 0x172A, 0x6DFA, 0x6DFA, 0x1BF3, 0x6DFB, 0x6DFB, 0x1C0C, - 0x6E17, 0x6E17, 0x14CB, 0x6E19, 0x6E19, 0x1ED4, 0x6E1A, 0x6E1A, 0x19CA, - 0x6E1B, 0x6E1B, 0x0DC0, 0x6E1F, 0x6E1F, 0x1A4A, 0x6E20, 0x6E20, 0x0E09, - 0x6E21, 0x6E21, 0x10C1, 0x6E23, 0x6E23, 0x149A, 0x6E24, 0x6E24, 0x1345, - 0x6E25, 0x6E25, 0x16A9, 0x6E26, 0x6E26, 0x17D3, 0x6E2B, 0x6E2B, 0x154F, - 0x6E2C, 0x6E2C, 0x1CA6, 0x6E2D, 0x6E2D, 0x1896, 0x6E2F, 0x6E2F, 0x1E00, - 0x6E32, 0x6E32, 0x1533, 0x6E34, 0x6E34, 0x0DAF, 0x6E36, 0x6E36, 0x177B, - 0x6E38, 0x6E38, 0x18BD, 0x6E3A, 0x6E3A, 0x12C7, 0x6E3C, 0x6E3C, 0x12FC, - 0x6E3D, 0x6E3D, 0x19B2, 0x6E3E, 0x6E3E, 0x1EA7, 0x6E43, 0x6E43, 0x1370, - 0x6E44, 0x6E44, 0x12FD, 0x6E4A, 0x6E4A, 0x1ADF, 0x6E4D, 0x6E4D, 0x106B, - 0x6E56, 0x6E56, 0x1E87, 0x6E58, 0x6E58, 0x14E4, 0x6E5B, 0x6E5B, 0x107F, - 0x6E5C, 0x6E5C, 0x165F, 0x6E5E, 0x6E5E, 0x1A4B, 0x6E5F, 0x6E5F, 0x1EEB, - 0x6E67, 0x6E67, 0x1829, 0x6E6B, 0x6E6B, 0x1C67, 0x6E6E, 0x6E6E, 0x1935, - 0x6E6F, 0x6E6F, 0x1D05, 0x6E72, 0x6E72, 0x187D, 0x6E73, 0x6E73, 0x1034, - 0x6E7A, 0x6E7A, 0x13C9, 0x6E90, 0x6E90, 0x187E, 0x6E96, 0x6E96, 0x1AFF, - 0x6E9C, 0x6E9C, 0x11E6, 0x6E9D, 0x6E9D, 0x0F50, 0x6E9F, 0x6E9F, 0x1292, - 0x6EA2, 0x6EA2, 0x1941, 0x6EA5, 0x6EA5, 0x1408, 0x6EAA, 0x6EAA, 0x0E84, - 0x6EAB, 0x6EAB, 0x17C3, 0x6EAF, 0x6EAF, 0x158A, 0x6EB1, 0x6EB1, 0x1B4F, - 0x6EB6, 0x6EB6, 0x182A, 0x6EBA, 0x6EBA, 0x105D, 0x6EC2, 0x6EC2, 0x135B, - 0x6EC4, 0x6EC4, 0x1BC1, 0x6EC5, 0x6EC5, 0x128A, 0x6EC9, 0x6EC9, 0x1EEC, - 0x6ECB, 0x6ECB, 0x195D, 0x6ECC, 0x6ECC, 0x1BE6, 0x6ECE, 0x6ECE, 0x1E61, - 0x6ED1, 0x6ED1, 0x1EDC, 0x6ED3, 0x6ED3, 0x19B3, 0x6ED4, 0x6ED4, 0x10C2, - 0x6EEF, 0x6EEF, 0x1C28, 0x6EF4, 0x6EF4, 0x19E1, 0x6EF8, 0x6EF8, 0x1E88, - 0x6EFE, 0x6EFE, 0x0EC4, 0x6EFF, 0x6EFF, 0x1247, 0x6F01, 0x6F01, 0x1711, - 0x6F02, 0x6F02, 0x1D9E, 0x6F06, 0x6F06, 0x1CC6, 0x6F0F, 0x6F0F, 0x11D9, - 0x6F11, 0x6F11, 0x0DF2, 0x6F14, 0x6F14, 0x1752, 0x6F15, 0x6F15, 0x1A8F, - 0x6F20, 0x6F20, 0x123A, 0x6F22, 0x6F22, 0x1DD8, 0x6F23, 0x6F23, 0x1174, - 0x6F2B, 0x6F2B, 0x1248, 0x6F2C, 0x6F2C, 0x1B2F, 0x6F31, 0x6F31, 0x15D5, - 0x6F32, 0x6F32, 0x1BC2, 0x6F38, 0x6F38, 0x1A27, 0x6F3F, 0x6F3F, 0x1997, - 0x6F41, 0x6F41, 0x177C, 0x6F51, 0x6F51, 0x1346, 0x6F54, 0x6F54, 0x0E42, - 0x6F57, 0x6F57, 0x1B79, 0x6F58, 0x6F58, 0x1333, 0x6F5A, 0x6F5A, 0x1602, - 0x6F5B, 0x6F5B, 0x1981, 0x6F5E, 0x6F5E, 0x11A3, 0x6F5F, 0x6F5F, 0x1524, - 0x6F62, 0x6F62, 0x1EED, 0x6F64, 0x6F64, 0x18DA, 0x6F6D, 0x6F6D, 0x1080, - 0x6F6E, 0x6F6E, 0x1A90, 0x6F70, 0x6F70, 0x0F92, 0x6F7A, 0x6F7A, 0x197D, - 0x6F7C, 0x6F7C, 0x10F5, 0x6F7D, 0x6F7D, 0x13CA, 0x6F7E, 0x6F7E, 0x121F, - 0x6F81, 0x6F81, 0x14D0, 0x6F84, 0x6F84, 0x1B80, 0x6F88, 0x6F88, 0x1C04, - 0x6F8D, 0x6F8D, 0x1AE0, 0x6F8E, 0x6F8E, 0x1D5A, 0x6F90, 0x6F90, 0x1861, - 0x6F94, 0x6F94, 0x1E89, 0x6F97, 0x6F97, 0x0DA0, 0x6FA3, 0x6FA3, 0x1DD9, - 0x6FA4, 0x6FA4, 0x1D16, 0x6FA7, 0x6FA7, 0x119B, 0x6FAE, 0x6FAE, 0x1F03, - 0x6FAF, 0x6FAF, 0x1B97, 0x6FB1, 0x6FB1, 0x1A05, 0x6FB3, 0x6FB3, 0x17B5, - 0x6FB9, 0x6FB9, 0x1081, 0x6FBE, 0x6FBE, 0x1075, 0x6FC0, 0x6FC0, 0x0E31, - 0x6FC1, 0x6FC1, 0x1CEA, 0x6FC2, 0x6FC2, 0x1186, 0x6FC3, 0x6FC3, 0x104F, - 0x6FCA, 0x6FCA, 0x1793, 0x6FD5, 0x6FD5, 0x162D, 0x6FDA, 0x6FDA, 0x177D, - 0x6FDF, 0x6FDF, 0x1A70, 0x6FE0, 0x6FE0, 0x1E8A, 0x6FE1, 0x6FE1, 0x18BE, - 0x6FE4, 0x6FE4, 0x10C3, 0x6FE9, 0x6FE9, 0x1E8B, 0x6FEB, 0x6FEB, 0x1133, - 0x6FEC, 0x6FEC, 0x1B00, 0x6FEF, 0x6FEF, 0x1CEB, 0x6FF1, 0x6FF1, 0x146E, - 0x6FFE, 0x6FFE, 0x1161, 0x7001, 0x7001, 0x1702, 0x7005, 0x7005, 0x1E62, - 0x7006, 0x7006, 0x10D6, 0x7009, 0x7009, 0x149B, 0x700B, 0x700B, 0x1687, - 0x700F, 0x700F, 0x11E7, 0x7011, 0x7011, 0x1D96, 0x7015, 0x7015, 0x146F, - 0x7018, 0x7018, 0x11A4, 0x701A, 0x701A, 0x1DDA, 0x701B, 0x701B, 0x177E, - 0x701C, 0x701C, 0x18E2, 0x701D, 0x701D, 0x116D, 0x701E, 0x701E, 0x1A4C, - 0x701F, 0x701F, 0x158B, 0x7023, 0x7023, 0x1E0F, 0x7027, 0x7027, 0x11BB, - 0x7028, 0x7028, 0x11C0, 0x702F, 0x702F, 0x177F, 0x7037, 0x7037, 0x1925, - 0x703E, 0x703E, 0x1129, 0x704C, 0x704C, 0x0EF1, 0x7050, 0x7050, 0x1E63, - 0x7051, 0x7051, 0x15BA, 0x7058, 0x7058, 0x1CF6, 0x705D, 0x705D, 0x1E8C, - 0x7063, 0x7063, 0x1249, 0x706B, 0x706B, 0x1EBB, 0x7070, 0x7070, 0x1F04, - 0x7078, 0x7078, 0x0F51, 0x707C, 0x707C, 0x1972, 0x707D, 0x707D, 0x19B4, - 0x7085, 0x7085, 0x0E61, 0x708A, 0x708A, 0x1C99, 0x708E, 0x708E, 0x1767, - 0x7092, 0x7092, 0x1C38, 0x7098, 0x7098, 0x1F55, 0x7099, 0x7099, 0x195E, - 0x709A, 0x709A, 0x0F06, 0x70A1, 0x70A1, 0x1A4D, 0x70A4, 0x70A4, 0x158C, - 0x70AB, 0x70AB, 0x1E3C, 0x70AC, 0x70AC, 0x0E0A, 0x70AD, 0x70AD, 0x1CF7, - 0x70AF, 0x70AF, 0x1E64, 0x70B3, 0x70B3, 0x13BA, 0x70B7, 0x70B7, 0x1AE1, - 0x70B8, 0x70B8, 0x1973, 0x70B9, 0x70B9, 0x1A28, 0x70C8, 0x70C8, 0x1181, - 0x70CB, 0x70CB, 0x1F47, 0x70CF, 0x70CF, 0x17B6, 0x70D8, 0x70D8, 0x1EB2, - 0x70D9, 0x70D9, 0x111F, 0x70DD, 0x70DD, 0x1B17, 0x70DF, 0x70DF, 0x1753, - 0x70F1, 0x70F1, 0x0E62, 0x70F9, 0x70F9, 0x1D5B, 0x70FD, 0x70FD, 0x13EC, - 0x7104, 0x7104, 0x1F2F, 0x7109, 0x7109, 0x1720, 0x710C, 0x710C, 0x1B01, - 0x7119, 0x7119, 0x1371, 0x711A, 0x711A, 0x142B, 0x711E, 0x711E, 0x10E5, - 0x7121, 0x7121, 0x12D7, 0x7126, 0x7126, 0x1C39, 0x7130, 0x7130, 0x1768, - 0x7136, 0x7136, 0x1754, 0x7147, 0x7147, 0x1F41, 0x7149, 0x7149, 0x1175, - 0x714A, 0x714A, 0x1F38, 0x714C, 0x714C, 0x1EEE, 0x714E, 0x714E, 0x1A06, - 0x7150, 0x7150, 0x1780, 0x7156, 0x7156, 0x102D, 0x7159, 0x7159, 0x1755, - 0x715C, 0x715C, 0x185A, 0x715E, 0x715E, 0x14C6, 0x7164, 0x7164, 0x126C, - 0x7165, 0x7165, 0x1ED5, 0x7166, 0x7166, 0x1F28, 0x7167, 0x7167, 0x1A91, - 0x7169, 0x7169, 0x1386, 0x716C, 0x716C, 0x1703, 0x716E, 0x716E, 0x195F, - 0x717D, 0x717D, 0x1534, 0x7184, 0x7184, 0x1660, 0x7189, 0x7189, 0x1862, - 0x718A, 0x718A, 0x186D, 0x718F, 0x718F, 0x1F30, 0x7192, 0x7192, 0x1E65, - 0x7194, 0x7194, 0x182B, 0x7199, 0x7199, 0x1F70, 0x719F, 0x719F, 0x1603, - 0x71A2, 0x71A2, 0x13ED, 0x71AC, 0x71AC, 0x17B7, 0x71B1, 0x71B1, 0x1763, - 0x71B9, 0x71BA, 0x1F71, 0x71BE, 0x71BE, 0x1CB1, 0x71C1, 0x71C1, 0x1770, - 0x71C3, 0x71C3, 0x1756, 0x71C8, 0x71C8, 0x110F, 0x71C9, 0x71C9, 0x10E6, - 0x71CE, 0x71CE, 0x11CC, 0x71D0, 0x71D0, 0x1220, 0x71D2, 0x71D2, 0x158D, - 0x71D4, 0x71D4, 0x1387, 0x71D5, 0x71D5, 0x1757, 0x71DF, 0x71DF, 0x1781, - 0x71E5, 0x71E5, 0x1A92, 0x71E6, 0x71E6, 0x1B98, 0x71E7, 0x71E7, 0x15D6, - 0x71ED, 0x71ED, 0x1C4B, 0x71EE, 0x71EE, 0x1561, 0x71FB, 0x71FB, 0x1F31, - 0x71FC, 0x71FC, 0x1670, 0x71FE, 0x71FE, 0x10C4, 0x71FF, 0x71FF, 0x180A, - 0x7200, 0x7200, 0x1E33, 0x7206, 0x7206, 0x1D97, 0x7210, 0x7210, 0x11A5, - 0x721B, 0x721B, 0x112A, 0x722A, 0x722A, 0x1A93, 0x722C, 0x722C, 0x1D3B, - 0x722D, 0x722D, 0x19BB, 0x7230, 0x7230, 0x187F, 0x7232, 0x7232, 0x1897, - 0x7235, 0x7235, 0x1974, 0x7236, 0x7236, 0x1409, 0x723A, 0x723A, 0x16ED, - 0x723B, 0x723B, 0x1F1A, 0x723D, 0x723D, 0x14E5, 0x723E, 0x723E, 0x1916, - 0x7240, 0x7240, 0x14E6, 0x7246, 0x7246, 0x1998, 0x7247, 0x7247, 0x1D61, - 0x7248, 0x7248, 0x1D45, 0x724C, 0x724C, 0x1D54, 0x7252, 0x7252, 0x1C17, - 0x7258, 0x7258, 0x10D7, 0x7259, 0x7259, 0x1696, 0x725B, 0x725B, 0x1842, - 0x725D, 0x725D, 0x1470, 0x725F, 0x725F, 0x12A9, 0x7261, 0x7261, 0x12AA, - 0x7262, 0x7262, 0x11C1, 0x7267, 0x7267, 0x12B6, 0x7269, 0x7269, 0x12F2, - 0x7272, 0x7272, 0x14F9, 0x7279, 0x7279, 0x1D30, 0x727D, 0x727D, 0x0E36, - 0x7280, 0x7280, 0x150C, 0x7281, 0x7281, 0x120F, 0x72A2, 0x72A2, 0x10D8, - 0x72A7, 0x72A7, 0x1F73, 0x72AC, 0x72AC, 0x0E37, 0x72AF, 0x72AF, 0x1397, - 0x72C0, 0x72C0, 0x14E7, 0x72C2, 0x72C2, 0x0F07, 0x72C4, 0x72C4, 0x19E2, - 0x72CE, 0x72CE, 0x16C7, 0x72D0, 0x72D0, 0x1E8D, 0x72D7, 0x72D7, 0x0F52, - 0x72D9, 0x72D9, 0x19CB, 0x72E1, 0x72E1, 0x0F27, 0x72E9, 0x72E9, 0x15D7, - 0x72F8, 0x72F8, 0x1210, 0x72F9, 0x72F9, 0x1E55, 0x72FC, 0x72FC, 0x113F, - 0x72FD, 0x72FD, 0x1D55, 0x730A, 0x730A, 0x1794, 0x7316, 0x7316, 0x1BC3, - 0x731B, 0x731B, 0x1279, 0x731C, 0x731C, 0x164C, 0x731D, 0x731D, 0x1AB4, - 0x7325, 0x7325, 0x17FA, 0x7329, 0x7329, 0x156A, 0x732A, 0x732A, 0x19CC, - 0x732B, 0x732B, 0x12C8, 0x7336, 0x7337, 0x18BF, 0x733E, 0x733E, 0x1EDD, - 0x733F, 0x733F, 0x1880, 0x7344, 0x7344, 0x17C0, 0x7345, 0x7345, 0x149C, - 0x7350, 0x7350, 0x1999, 0x7352, 0x7352, 0x17B8, 0x7357, 0x7357, 0x0F8C, - 0x7368, 0x7368, 0x10D9, 0x736A, 0x736A, 0x1F05, 0x7370, 0x7370, 0x1782, - 0x7372, 0x7372, 0x1F0D, 0x7375, 0x7375, 0x1188, 0x7378, 0x7378, 0x15D8, - 0x737A, 0x737A, 0x1076, 0x737B, 0x737B, 0x1E2D, 0x7384, 0x7384, 0x1E3D, - 0x7386, 0x7386, 0x1960, 0x7387, 0x7387, 0x15B0, 0x7389, 0x7389, 0x17C1, - 0x738B, 0x738B, 0x17F2, 0x738E, 0x738E, 0x1A4E, 0x7394, 0x7394, 0x1BF4, - 0x7396, 0x7396, 0x0F53, 0x7397, 0x7397, 0x1843, 0x7398, 0x7398, 0x0FFE, - 0x739F, 0x739F, 0x130F, 0x73A7, 0x73A7, 0x18DB, 0x73A9, 0x73A9, 0x17E1, - 0x73AD, 0x73AD, 0x1471, 0x73B2, 0x73B2, 0x118F, 0x73B3, 0x73B3, 0x10A4, - 0x73B9, 0x73B9, 0x1E3E, 0x73C0, 0x73C0, 0x131E, 0x73C2, 0x73C2, 0x0D7C, - 0x73C9, 0x73C9, 0x1310, 0x73CA, 0x73CA, 0x14BC, 0x73CC, 0x73CC, 0x1DB8, - 0x73CD, 0x73CD, 0x1B50, 0x73CF, 0x73CF, 0x0D8F, 0x73D6, 0x73D6, 0x0F08, - 0x73D9, 0x73D9, 0x0ED5, 0x73DD, 0x73DD, 0x1F29, 0x73DE, 0x73DE, 0x1120, - 0x73E0, 0x73E0, 0x1AE2, 0x73E3, 0x73E3, 0x1613, 0x73E4, 0x73E4, 0x13CB, - 0x73E5, 0x73E5, 0x1917, 0x73E6, 0x73E6, 0x1E21, 0x73E9, 0x73E9, 0x1E66, - 0x73EA, 0x73EA, 0x0F9F, 0x73ED, 0x73ED, 0x1334, 0x73F7, 0x73F7, 0x12D8, - 0x73F9, 0x73F9, 0x156B, 0x73FD, 0x73FD, 0x1A4F, 0x73FE, 0x73FE, 0x1E3F, - 0x7401, 0x7401, 0x1535, 0x7403, 0x7403, 0x0F54, 0x7405, 0x7405, 0x1140, - 0x7406, 0x7406, 0x1211, 0x7407, 0x7407, 0x15D9, 0x7409, 0x7409, 0x11E8, - 0x7413, 0x7413, 0x17E2, 0x741B, 0x741B, 0x1CCC, 0x7420, 0x7420, 0x1A07, - 0x7421, 0x7421, 0x1604, 0x7422, 0x7422, 0x1CEC, 0x7425, 0x7425, 0x1E8E, - 0x7426, 0x7426, 0x0FFF, 0x7428, 0x7428, 0x0EC5, 0x742A, 0x742A, 0x1000, - 0x742B, 0x742B, 0x13EE, 0x742C, 0x742C, 0x17E3, 0x742E, 0x742E, 0x1ABC, - 0x742F, 0x742F, 0x0EF2, 0x7430, 0x7430, 0x1769, 0x7433, 0x7433, 0x1229, - 0x7434, 0x7434, 0x0FCB, 0x7435, 0x7435, 0x1451, 0x7436, 0x7436, 0x1D3C, - 0x7438, 0x7438, 0x1CED, 0x743A, 0x743A, 0x139B, 0x743F, 0x743F, 0x1EA8, - 0x7440, 0x7440, 0x1844, 0x7441, 0x7441, 0x12AB, 0x7443, 0x7443, 0x1C86, - 0x7444, 0x7444, 0x1536, 0x744B, 0x744B, 0x1898, 0x7455, 0x7455, 0x1DC7, - 0x7457, 0x7457, 0x1881, 0x7459, 0x7459, 0x104D, 0x745A, 0x745A, 0x1E8F, - 0x745B, 0x745B, 0x1783, 0x745C, 0x745C, 0x18C1, 0x745E, 0x745E, 0x150D, - 0x745F, 0x745F, 0x162A, 0x7460, 0x7460, 0x11E9, 0x7462, 0x7462, 0x182C, - 0x7464, 0x7464, 0x180B, 0x7465, 0x7465, 0x17C4, 0x7468, 0x7468, 0x1B51, - 0x7469, 0x7469, 0x1E67, 0x746A, 0x746A, 0x1231, 0x746F, 0x746F, 0x1141, - 0x747E, 0x747E, 0x0FBE, 0x7482, 0x7482, 0x1001, 0x7483, 0x7483, 0x1212, - 0x7487, 0x7487, 0x1537, 0x7489, 0x7489, 0x1176, 0x748B, 0x748B, 0x199A, - 0x7498, 0x7498, 0x1221, 0x749C, 0x749C, 0x1EEF, 0x749E, 0x749E, 0x131F, - 0x749F, 0x749F, 0x0E63, 0x74A1, 0x74A1, 0x1B52, 0x74A3, 0x74A3, 0x1002, - 0x74A5, 0x74A5, 0x0E64, 0x74A7, 0x74A7, 0x13A1, 0x74A8, 0x74A8, 0x1B99, - 0x74AA, 0x74AA, 0x1A94, 0x74B0, 0x74B0, 0x1ED6, 0x74B2, 0x74B2, 0x15DA, - 0x74B5, 0x74B5, 0x1733, 0x74B9, 0x74B9, 0x1605, 0x74BD, 0x74BD, 0x14F3, - 0x74BF, 0x74BF, 0x1538, 0x74C6, 0x74C6, 0x1B6D, 0x74CA, 0x74CA, 0x0E65, - 0x74CF, 0x74CF, 0x11BC, 0x74D4, 0x74D4, 0x1784, 0x74D8, 0x74D8, 0x0EF3, - 0x74DA, 0x74DA, 0x1B9A, 0x74DC, 0x74DC, 0x0EDE, 0x74E0, 0x74E0, 0x1E90, - 0x74E2, 0x74E2, 0x1D9F, 0x74E3, 0x74E3, 0x1D46, 0x74E6, 0x74E6, 0x17D4, - 0x74EE, 0x74EE, 0x17CC, 0x74F7, 0x74F7, 0x1961, 0x7501, 0x7501, 0x13BB, - 0x7504, 0x7504, 0x0E38, 0x7511, 0x7511, 0x1B18, 0x7515, 0x7515, 0x17CD, - 0x7518, 0x7518, 0x0DC1, 0x751A, 0x751A, 0x1688, 0x751B, 0x751B, 0x1C0D, - 0x751F, 0x751F, 0x14FA, 0x7523, 0x7523, 0x14BD, 0x7525, 0x7525, 0x14FB, - 0x7526, 0x7526, 0x158E, 0x7528, 0x7528, 0x182D, 0x752B, 0x752B, 0x13CC, - 0x752C, 0x752C, 0x182E, 0x7530, 0x7530, 0x1A08, 0x7531, 0x7531, 0x18C2, - 0x7532, 0x7532, 0x0DCC, 0x7533, 0x7533, 0x1671, 0x7537, 0x7537, 0x1035, - 0x7538, 0x7538, 0x1A09, 0x753A, 0x753A, 0x1A50, 0x7547, 0x7547, 0x0FAB, - 0x754C, 0x754C, 0x0E85, 0x754F, 0x754F, 0x17FB, 0x7551, 0x7551, 0x1A0A, - 0x7553, 0x7553, 0x108B, 0x7554, 0x7554, 0x1335, 0x7559, 0x7559, 0x11EA, - 0x755B, 0x755B, 0x1B53, 0x755C, 0x755C, 0x1C79, 0x755D, 0x755D, 0x12D9, - 0x7562, 0x7562, 0x1DB9, 0x7565, 0x7565, 0x114A, 0x7566, 0x7566, 0x1F48, - 0x756A, 0x756A, 0x1388, 0x756F, 0x756F, 0x1B02, 0x7570, 0x7570, 0x1918, - 0x7575, 0x7575, 0x1EBC, 0x7576, 0x7576, 0x1096, 0x7578, 0x7578, 0x1003, - 0x757A, 0x757A, 0x0DDA, 0x757F, 0x757F, 0x1004, 0x7586, 0x7586, 0x0DDB, - 0x7587, 0x7587, 0x1AE3, 0x758A, 0x758A, 0x1C18, 0x758B, 0x758B, 0x1DBA, - 0x758E, 0x758E, 0x1590, 0x758F, 0x758F, 0x158F, 0x7591, 0x7591, 0x1903, - 0x759D, 0x759D, 0x14BE, 0x75A5, 0x75A5, 0x0DF3, 0x75AB, 0x75AB, 0x173F, - 0x75B1, 0x75B1, 0x1D86, 0x75B2, 0x75B2, 0x1DAF, 0x75B3, 0x75B3, 0x0DC2, - 0x75B5, 0x75B5, 0x1962, 0x75B8, 0x75B8, 0x1077, 0x75B9, 0x75B9, 0x1B54, - 0x75BC, 0x75BC, 0x10F6, 0x75BD, 0x75BD, 0x19CD, 0x75BE, 0x75BE, 0x1B6E, - 0x75C2, 0x75C2, 0x0D7D, 0x75C5, 0x75C5, 0x13BC, 0x75C7, 0x75C7, 0x1B19, - 0x75CD, 0x75CD, 0x1919, 0x75D2, 0x75D2, 0x1704, 0x75D4, 0x75D4, 0x1CB2, - 0x75D5, 0x75D5, 0x1F56, 0x75D8, 0x75D8, 0x1100, 0x75D9, 0x75D9, 0x0E66, - 0x75DB, 0x75DB, 0x1D1F, 0x75E2, 0x75E2, 0x1213, 0x75F0, 0x75F0, 0x1082, - 0x75F2, 0x75F2, 0x1232, 0x75F4, 0x75F4, 0x1CB3, 0x75FA, 0x75FA, 0x1452, - 0x75FC, 0x75FC, 0x0EA2, 0x7600, 0x7600, 0x1712, 0x760D, 0x760D, 0x1705, - 0x7619, 0x7619, 0x1591, 0x761F, 0x761F, 0x17C5, 0x7620, 0x7620, 0x1BE7, - 0x7621, 0x7621, 0x1BC4, 0x7622, 0x7622, 0x1336, 0x7624, 0x7624, 0x11EB, - 0x7626, 0x7626, 0x15DB, 0x763B, 0x763B, 0x11DA, 0x7642, 0x7642, 0x11CD, - 0x764C, 0x764C, 0x16C2, 0x764E, 0x764E, 0x0DA1, 0x7652, 0x7652, 0x18C3, - 0x7656, 0x7656, 0x13A2, 0x7661, 0x7661, 0x1CB4, 0x7664, 0x7664, 0x1A20, - 0x7669, 0x7669, 0x1118, 0x766C, 0x766C, 0x1539, 0x7670, 0x7670, 0x17CE, - 0x7672, 0x7672, 0x1A0B, 0x7678, 0x7678, 0x0E86, 0x767B, 0x767B, 0x1110, - 0x767C, 0x767C, 0x1347, 0x767D, 0x767E, 0x1381, 0x7684, 0x7684, 0x19E3, - 0x7686, 0x7686, 0x0DF4, 0x7687, 0x7687, 0x1EF0, 0x768E, 0x768E, 0x0F28, - 0x7690, 0x7690, 0x0EA3, 0x7693, 0x7693, 0x1E91, 0x76AE, 0x76AE, 0x1DB0, - 0x76BA, 0x76BA, 0x1C68, 0x76BF, 0x76BF, 0x1293, 0x76C2, 0x76C2, 0x1845, - 0x76C3, 0x76C3, 0x1372, 0x76C6, 0x76C6, 0x142C, 0x76C8, 0x76C8, 0x1785, - 0x76CA, 0x76CA, 0x1926, 0x76D2, 0x76D2, 0x1DF1, 0x76D6, 0x76D6, 0x0DF5, - 0x76DB, 0x76DB, 0x156C, 0x76DC, 0x76DC, 0x10C5, 0x76DE, 0x76DE, 0x197E, - 0x76DF, 0x76DF, 0x127B, 0x76E1, 0x76E1, 0x1B55, 0x76E3, 0x76E3, 0x0DC3, - 0x76E4, 0x76E4, 0x1337, 0x76E7, 0x76E7, 0x11A6, 0x76EE, 0x76EE, 0x12B7, - 0x76F2, 0x76F2, 0x127A, 0x76F4, 0x76F4, 0x1B3F, 0x76F8, 0x76F8, 0x14E8, - 0x76FC, 0x76FC, 0x1338, 0x76FE, 0x76FE, 0x1614, 0x7701, 0x7701, 0x156D, - 0x7704, 0x7704, 0x1284, 0x7708, 0x7708, 0x1CFD, 0x7709, 0x7709, 0x12FE, - 0x770B, 0x770B, 0x0DA2, 0x771E, 0x771E, 0x1B56, 0x7720, 0x7720, 0x1285, - 0x7729, 0x7729, 0x1E40, 0x7737, 0x7737, 0x0F8A, 0x7738, 0x7738, 0x12AC, - 0x773A, 0x773A, 0x1A95, 0x773C, 0x773C, 0x16B4, 0x7740, 0x7740, 0x1B91, - 0x774D, 0x774D, 0x1E41, 0x775B, 0x775B, 0x1A51, 0x7761, 0x7761, 0x15DC, - 0x7763, 0x7763, 0x10DA, 0x7766, 0x7766, 0x12B8, 0x776B, 0x776B, 0x1C19, - 0x7779, 0x7779, 0x10C6, 0x777E, 0x777E, 0x0EA4, 0x777F, 0x777F, 0x1795, - 0x778B, 0x778B, 0x1B57, 0x7791, 0x7791, 0x1294, 0x779E, 0x779E, 0x124A, - 0x77A5, 0x77A5, 0x13AE, 0x77AC, 0x77AC, 0x1615, 0x77AD, 0x77AD, 0x11CE, - 0x77B0, 0x77B0, 0x0DC4, 0x77B3, 0x77B3, 0x10F7, 0x77BB, 0x77BB, 0x1C0E, - 0x77BC, 0x77BC, 0x0E25, 0x77BF, 0x77BF, 0x0F55, 0x77D7, 0x77D7, 0x1C4C, - 0x77DB, 0x77DB, 0x12AD, 0x77DC, 0x77DC, 0x0FDC, 0x77E2, 0x77E2, 0x164D, - 0x77E3, 0x77E3, 0x1904, 0x77E5, 0x77E5, 0x1B30, 0x77E9, 0x77E9, 0x0F56, - 0x77ED, 0x77ED, 0x106C, 0x77EE, 0x77EE, 0x17F6, 0x77EF, 0x77EF, 0x0F29, - 0x77F3, 0x77F3, 0x1525, 0x7802, 0x7802, 0x149D, 0x7812, 0x7812, 0x1453, - 0x7825, 0x7825, 0x1B31, 0x7826, 0x7826, 0x1BD0, 0x7827, 0x7827, 0x1CCD, - 0x782C, 0x782C, 0x122C, 0x7832, 0x7832, 0x1D87, 0x7834, 0x7834, 0x1D3D, - 0x7845, 0x7845, 0x0FA0, 0x784F, 0x784F, 0x1758, 0x785D, 0x785D, 0x1C3A, - 0x786B, 0x786B, 0x11EC, 0x786C, 0x786C, 0x0E67, 0x786F, 0x786F, 0x1759, - 0x787C, 0x787C, 0x143A, 0x7881, 0x7881, 0x1005, 0x7887, 0x7887, 0x1A52, - 0x788C, 0x788C, 0x11B0, 0x788D, 0x788D, 0x16D7, 0x788E, 0x788E, 0x15BB, - 0x7891, 0x7891, 0x1454, 0x7897, 0x7897, 0x17E4, 0x78A3, 0x78A3, 0x0DB0, - 0x78A7, 0x78A7, 0x13A3, 0x78A9, 0x78A9, 0x1526, 0x78BA, 0x78BB, 0x1EC7, - 0x78BC, 0x78BC, 0x1233, 0x78C1, 0x78C1, 0x1963, 0x78C5, 0x78C5, 0x135C, - 0x78CA, 0x78CA, 0x11C2, 0x78CB, 0x78CB, 0x1B8A, 0x78CE, 0x78CE, 0x0E87, - 0x78D0, 0x78D0, 0x1339, 0x78E8, 0x78E8, 0x1234, 0x78EC, 0x78EC, 0x0E68, - 0x78EF, 0x78EF, 0x1006, 0x78F5, 0x78F5, 0x0DA3, 0x78FB, 0x78FB, 0x133A, - 0x7901, 0x7901, 0x1C3B, 0x790E, 0x790E, 0x1C3C, 0x7916, 0x7916, 0x1734, - 0x792A, 0x792A, 0x1162, 0x792B, 0x792B, 0x116E, 0x792C, 0x792C, 0x133B, - 0x793A, 0x793A, 0x164E, 0x793E, 0x793E, 0x149E, 0x7940, 0x7940, 0x149F, - 0x7941, 0x7941, 0x1007, 0x7947, 0x7948, 0x1008, 0x7949, 0x7949, 0x1B32, - 0x7950, 0x7950, 0x1846, 0x7956, 0x7956, 0x1A96, 0x7957, 0x7957, 0x1B33, - 0x795A, 0x795A, 0x1A97, 0x795B, 0x795B, 0x0E0B, 0x795C, 0x795C, 0x1E92, - 0x795D, 0x795D, 0x1C7A, 0x795E, 0x795E, 0x1672, 0x7960, 0x7960, 0x14A0, - 0x7965, 0x7965, 0x14E9, 0x7968, 0x7968, 0x1DA0, 0x796D, 0x796D, 0x1A71, - 0x797A, 0x797A, 0x100A, 0x797F, 0x797F, 0x11B1, 0x7981, 0x7981, 0x0FCC, - 0x798D, 0x798D, 0x1EBD, 0x798E, 0x798E, 0x1A53, 0x798F, 0x798F, 0x13D9, - 0x7991, 0x7991, 0x1847, 0x79A6, 0x79A6, 0x1713, 0x79A7, 0x79A7, 0x1F74, - 0x79AA, 0x79AA, 0x153A, 0x79AE, 0x79AE, 0x119C, 0x79B1, 0x79B1, 0x10C7, - 0x79B3, 0x79B3, 0x1706, 0x79B9, 0x79B9, 0x1848, 0x79BD, 0x79BD, 0x0FCD, - 0x79BE, 0x79BE, 0x1EBE, 0x79BF, 0x79BF, 0x10DB, 0x79C0, 0x79C0, 0x15DD, - 0x79C1, 0x79C1, 0x14A1, 0x79C9, 0x79C9, 0x13BD, 0x79CA, 0x79CA, 0x1042, - 0x79CB, 0x79CB, 0x1C69, 0x79D1, 0x79D1, 0x0EDF, 0x79D2, 0x79D2, 0x1C3D, - 0x79D5, 0x79D5, 0x1455, 0x79D8, 0x79D8, 0x1456, 0x79DF, 0x79DF, 0x1A98, - 0x79E4, 0x79E4, 0x1CD1, 0x79E6, 0x79E6, 0x1B58, 0x79E7, 0x79E7, 0x16CE, - 0x79E9, 0x79E9, 0x1B6F, 0x79FB, 0x79FB, 0x191A, 0x7A00, 0x7A00, 0x1F75, - 0x7A05, 0x7A05, 0x1578, 0x7A08, 0x7A08, 0x0DA4, 0x7A0B, 0x7A0B, 0x1A54, - 0x7A0D, 0x7A0D, 0x1C3E, 0x7A14, 0x7A14, 0x194A, 0x7A17, 0x7A17, 0x1D56, - 0x7A19, 0x7A19, 0x1B40, 0x7A1A, 0x7A1A, 0x1CB5, 0x7A1C, 0x7A1C, 0x1201, - 0x7A1F, 0x7A1F, 0x1DA7, 0x7A20, 0x7A20, 0x1A99, 0x7A2E, 0x7A2E, 0x1ABD, - 0x7A31, 0x7A31, 0x1CD2, 0x7A36, 0x7A36, 0x185B, 0x7A37, 0x7A37, 0x1B41, - 0x7A3B, 0x7A3B, 0x10C8, 0x7A3C, 0x7A3C, 0x0D7E, 0x7A3D, 0x7A3D, 0x0E88, - 0x7A3F, 0x7A3F, 0x0EA5, 0x7A40, 0x7A40, 0x0EBB, 0x7A46, 0x7A46, 0x12B9, - 0x7A49, 0x7A49, 0x1CB6, 0x7A4D, 0x7A4D, 0x19E4, 0x7A4E, 0x7A4E, 0x1786, - 0x7A57, 0x7A57, 0x15DE, 0x7A61, 0x7A61, 0x14F6, 0x7A62, 0x7A62, 0x1796, - 0x7A69, 0x7A69, 0x17C6, 0x7A6B, 0x7A6B, 0x1EC9, 0x7A70, 0x7A70, 0x1707, - 0x7A74, 0x7A74, 0x1E4B, 0x7A76, 0x7A76, 0x0F57, 0x7A79, 0x7A79, 0x0F7D, - 0x7A7A, 0x7A7A, 0x0ED6, 0x7A7D, 0x7A7D, 0x1A55, 0x7A7F, 0x7A7F, 0x1BF5, - 0x7A81, 0x7A81, 0x10EA, 0x7A84, 0x7A84, 0x1B92, 0x7A88, 0x7A88, 0x180C, - 0x7A92, 0x7A92, 0x1B70, 0x7A93, 0x7A93, 0x1BC5, 0x7A95, 0x7A95, 0x1A9A, - 0x7A98, 0x7A98, 0x0F72, 0x7A9F, 0x7A9F, 0x0F7A, 0x7AA9, 0x7AAA, 0x17D5, - 0x7AAE, 0x7AAE, 0x0F7E, 0x7AAF, 0x7AAF, 0x180D, 0x7ABA, 0x7ABA, 0x0FA1, - 0x7AC4, 0x7AC4, 0x1B9B, 0x7AC5, 0x7AC5, 0x0FA2, 0x7AC7, 0x7AC7, 0x1101, - 0x7ACA, 0x7ACA, 0x1A21, 0x7ACB, 0x7ACB, 0x122D, 0x7AD7, 0x7AD7, 0x12C9, - 0x7AD9, 0x7AD9, 0x1BB1, 0x7ADD, 0x7ADD, 0x13BE, 0x7ADF, 0x7ADF, 0x0E69, - 0x7AE0, 0x7AE0, 0x199B, 0x7AE3, 0x7AE3, 0x1B03, 0x7AE5, 0x7AE5, 0x10F8, - 0x7AEA, 0x7AEA, 0x15DF, 0x7AED, 0x7AED, 0x0DB1, 0x7AEF, 0x7AEF, 0x106D, - 0x7AF6, 0x7AF6, 0x0E6A, 0x7AF9, 0x7AF9, 0x1AF4, 0x7AFA, 0x7AFA, 0x1C7B, - 0x7AFF, 0x7AFF, 0x0DA5, 0x7B0F, 0x7B0F, 0x1EAC, 0x7B11, 0x7B11, 0x1592, - 0x7B19, 0x7B19, 0x14FC, 0x7B1B, 0x7B1B, 0x19E5, 0x7B1E, 0x7B1E, 0x1D0F, - 0x7B20, 0x7B20, 0x122E, 0x7B26, 0x7B26, 0x140A, 0x7B2C, 0x7B2C, 0x1A72, - 0x7B2D, 0x7B2D, 0x1190, 0x7B39, 0x7B39, 0x1579, 0x7B46, 0x7B46, 0x1DBB, - 0x7B49, 0x7B49, 0x1111, 0x7B4B, 0x7B4B, 0x0FBF, 0x7B4C, 0x7B4C, 0x1A0C, - 0x7B4D, 0x7B4D, 0x1616, 0x7B4F, 0x7B4F, 0x138E, 0x7B50, 0x7B50, 0x0F09, - 0x7B51, 0x7B51, 0x1C7C, 0x7B52, 0x7B52, 0x1D20, 0x7B54, 0x7B54, 0x108C, - 0x7B56, 0x7B56, 0x1BD8, 0x7B60, 0x7B60, 0x0FAC, 0x7B6C, 0x7B6C, 0x156E, - 0x7B6E, 0x7B6E, 0x150E, 0x7B75, 0x7B75, 0x175A, 0x7B7D, 0x7B7D, 0x17B9, - 0x7B87, 0x7B87, 0x0DF6, 0x7B8B, 0x7B8B, 0x1A0D, 0x7B8F, 0x7B8F, 0x19BC, - 0x7B94, 0x7B94, 0x1320, 0x7B95, 0x7B95, 0x100B, 0x7B97, 0x7B97, 0x14BF, - 0x7B9A, 0x7B9A, 0x1B8B, 0x7B9D, 0x7B9D, 0x0E48, 0x7BA1, 0x7BA1, 0x0EF4, - 0x7BAD, 0x7BAD, 0x1A0E, 0x7BB1, 0x7BB1, 0x14EA, 0x7BB4, 0x7BB4, 0x1982, - 0x7BB8, 0x7BB8, 0x19CE, 0x7BC0, 0x7BC0, 0x1A22, 0x7BC1, 0x7BC1, 0x1EF1, - 0x7BC4, 0x7BC4, 0x1398, 0x7BC6, 0x7BC6, 0x1A0F, 0x7BC7, 0x7BC7, 0x1D62, - 0x7BC9, 0x7BC9, 0x1C7D, 0x7BD2, 0x7BD2, 0x1661, 0x7BE0, 0x7BE0, 0x1593, - 0x7BE4, 0x7BE4, 0x10DC, 0x7BE9, 0x7BE9, 0x14A2, 0x7C07, 0x7C07, 0x1AAD, - 0x7C12, 0x7C12, 0x1B9C, 0x7C1E, 0x7C1E, 0x106E, 0x7C21, 0x7C21, 0x0DA6, - 0x7C27, 0x7C27, 0x1EF2, 0x7C2A, 0x7C2A, 0x1983, 0x7C2B, 0x7C2B, 0x1594, - 0x7C3D, 0x7C3D, 0x1C0F, 0x7C3E, 0x7C3E, 0x1187, 0x7C3F, 0x7C3F, 0x140B, - 0x7C43, 0x7C43, 0x1134, 0x7C4C, 0x7C4C, 0x1AE4, 0x7C4D, 0x7C4D, 0x19E6, - 0x7C60, 0x7C60, 0x11BD, 0x7C64, 0x7C64, 0x1C10, 0x7C6C, 0x7C6C, 0x1214, - 0x7C73, 0x7C73, 0x12FF, 0x7C83, 0x7C83, 0x1457, 0x7C89, 0x7C89, 0x142D, - 0x7C92, 0x7C92, 0x122F, 0x7C95, 0x7C95, 0x1321, 0x7C97, 0x7C97, 0x1A9B, - 0x7C98, 0x7C98, 0x1A29, 0x7C9F, 0x7C9F, 0x15A5, 0x7CA5, 0x7CA5, 0x1AF5, - 0x7CA7, 0x7CA7, 0x199C, 0x7CAE, 0x7CAE, 0x1151, 0x7CB1, 0x7CB1, 0x1152, - 0x7CB2, 0x7CB2, 0x1B9E, 0x7CB3, 0x7CB3, 0x0DFE, 0x7CB9, 0x7CB9, 0x15E0, - 0x7CBE, 0x7CBE, 0x1A56, 0x7CCA, 0x7CCA, 0x1E93, 0x7CD6, 0x7CD6, 0x1097, - 0x7CDE, 0x7CDE, 0x142E, 0x7CDF, 0x7CDF, 0x1A9C, 0x7CE0, 0x7CE0, 0x0DDC, - 0x7CE7, 0x7CE7, 0x1153, 0x7CFB, 0x7CFB, 0x0E89, 0x7CFE, 0x7CFE, 0x0FA3, - 0x7D00, 0x7D00, 0x100C, 0x7D02, 0x7D02, 0x1AE5, 0x7D04, 0x7D04, 0x16F1, - 0x7D05, 0x7D05, 0x1EB3, 0x7D06, 0x7D06, 0x1849, 0x7D07, 0x7D07, 0x1F59, - 0x7D08, 0x7D08, 0x1ED7, 0x7D0A, 0x7D0B, 0x12EA, 0x7D0D, 0x7D0D, 0x1036, - 0x7D10, 0x7D10, 0x1058, 0x7D14, 0x7D14, 0x1617, 0x7D17, 0x7D17, 0x14A3, - 0x7D18, 0x7D18, 0x0F19, 0x7D19, 0x7D19, 0x1B34, 0x7D1A, 0x7D1A, 0x0FD8, - 0x7D1B, 0x7D1B, 0x142F, 0x7D20, 0x7D20, 0x1595, 0x7D21, 0x7D21, 0x135D, - 0x7D22, 0x7D22, 0x14F7, 0x7D2B, 0x7D2B, 0x1964, 0x7D2C, 0x7D2C, 0x1AE6, - 0x7D2E, 0x7D2E, 0x1BA9, 0x7D2F, 0x7D2F, 0x11DB, 0x7D30, 0x7D30, 0x157A, - 0x7D33, 0x7D33, 0x1673, 0x7D35, 0x7D35, 0x19CF, 0x7D39, 0x7D39, 0x1596, - 0x7D3A, 0x7D3A, 0x0DC5, 0x7D42, 0x7D42, 0x1ABE, 0x7D43, 0x7D43, 0x1E42, - 0x7D44, 0x7D44, 0x1A9D, 0x7D45, 0x7D45, 0x0E6B, 0x7D46, 0x7D46, 0x133C, - 0x7D50, 0x7D50, 0x0E43, 0x7D5E, 0x7D5E, 0x0F2A, 0x7D61, 0x7D61, 0x1121, - 0x7D62, 0x7D62, 0x1E43, 0x7D66, 0x7D66, 0x0FD9, 0x7D68, 0x7D68, 0x18E3, - 0x7D6A, 0x7D6A, 0x1936, 0x7D6E, 0x7D6E, 0x150F, 0x7D71, 0x7D71, 0x1D21, - 0x7D72, 0x7D72, 0x14A4, 0x7D73, 0x7D73, 0x0DDD, 0x7D76, 0x7D76, 0x1A23, - 0x7D79, 0x7D79, 0x0E39, 0x7D7F, 0x7D7F, 0x0F58, 0x7D8E, 0x7D8E, 0x1A57, - 0x7D8F, 0x7D8F, 0x15E1, 0x7D93, 0x7D93, 0x0E6C, 0x7D9C, 0x7D9C, 0x1ABF, - 0x7DA0, 0x7DA0, 0x11B2, 0x7DA2, 0x7DA2, 0x1AE7, 0x7DAC, 0x7DAC, 0x15E2, - 0x7DAD, 0x7DAD, 0x18C4, 0x7DB1, 0x7DB1, 0x0DDE, 0x7DB2, 0x7DB2, 0x125D, - 0x7DB4, 0x7DB4, 0x1C05, 0x7DB5, 0x7DB5, 0x1BD1, 0x7DB8, 0x7DB8, 0x11F6, - 0x7DBA, 0x7DBA, 0x100D, 0x7DBB, 0x7DBB, 0x1CF8, 0x7DBD, 0x7DBD, 0x1975, - 0x7DBE, 0x7DBE, 0x1202, 0x7DBF, 0x7DBF, 0x1286, 0x7DC7, 0x7DC7, 0x1CB7, - 0x7DCA, 0x7DCA, 0x101E, 0x7DCB, 0x7DCB, 0x1458, 0x7DD6, 0x7DD6, 0x1510, - 0x7DD8, 0x7DD8, 0x1DEA, 0x7DDA, 0x7DDA, 0x153B, 0x7DDD, 0x7DDD, 0x1B7A, - 0x7DDE, 0x7DDE, 0x106F, 0x7DE0, 0x7DE0, 0x1C29, 0x7DE1, 0x7DE1, 0x1311, - 0x7DE3, 0x7DE3, 0x175B, 0x7DE8, 0x7DE8, 0x1D63, 0x7DE9, 0x7DE9, 0x17E5, - 0x7DEC, 0x7DEC, 0x1287, 0x7DEF, 0x7DEF, 0x1899, 0x7DF4, 0x7DF4, 0x1177, - 0x7DFB, 0x7DFB, 0x1CB8, 0x7E09, 0x7E09, 0x1B59, 0x7E0A, 0x7E0A, 0x16DF, - 0x7E15, 0x7E15, 0x17C7, 0x7E1B, 0x7E1B, 0x1322, 0x7E1D, 0x7E1D, 0x1B5A, - 0x7E1E, 0x7E1E, 0x1E94, 0x7E1F, 0x7E1F, 0x181B, 0x7E21, 0x7E21, 0x19B5, - 0x7E23, 0x7E23, 0x1E44, 0x7E2B, 0x7E2B, 0x13EF, 0x7E2E, 0x7E2E, 0x1C7E, - 0x7E2F, 0x7E2F, 0x175C, 0x7E31, 0x7E31, 0x1AC0, 0x7E37, 0x7E37, 0x11DC, - 0x7E3D, 0x7E3D, 0x1C59, 0x7E3E, 0x7E3E, 0x19E7, 0x7E41, 0x7E41, 0x1389, - 0x7E43, 0x7E43, 0x143B, 0x7E46, 0x7E46, 0x12DA, 0x7E47, 0x7E47, 0x180E, - 0x7E52, 0x7E52, 0x1B1A, 0x7E54, 0x7E54, 0x1B42, 0x7E55, 0x7E55, 0x153C, - 0x7E5E, 0x7E5E, 0x180F, 0x7E61, 0x7E61, 0x15E3, 0x7E69, 0x7E69, 0x1639, - 0x7E6A, 0x7E6A, 0x1F06, 0x7E6B, 0x7E6B, 0x0E8A, 0x7E6D, 0x7E6D, 0x0E3A, - 0x7E70, 0x7E70, 0x1A9E, 0x7E79, 0x7E79, 0x1740, 0x7E7C, 0x7E7C, 0x0E8B, - 0x7E82, 0x7E82, 0x1B9D, 0x7E8C, 0x7E8C, 0x15A6, 0x7E8F, 0x7E8F, 0x1A10, - 0x7E93, 0x7E93, 0x1787, 0x7E96, 0x7E96, 0x155A, 0x7E98, 0x7E98, 0x1B9F, - 0x7E9B, 0x7E9B, 0x10DD, 0x7E9C, 0x7E9C, 0x1135, 0x7F36, 0x7F36, 0x140C, - 0x7F38, 0x7F38, 0x1E01, 0x7F3A, 0x7F3A, 0x0E44, 0x7F4C, 0x7F4C, 0x16E3, - 0x7F50, 0x7F50, 0x0EF5, 0x7F54, 0x7F54, 0x125E, 0x7F55, 0x7F55, 0x1DDB, - 0x7F6A, 0x7F6A, 0x1ACB, 0x7F6B, 0x7F6B, 0x0F0E, 0x7F6E, 0x7F6E, 0x1CB9, - 0x7F70, 0x7F70, 0x138F, 0x7F72, 0x7F72, 0x1511, 0x7F75, 0x7F75, 0x126D, - 0x7F77, 0x7F77, 0x1D3E, 0x7F79, 0x7F79, 0x1215, 0x7F85, 0x7F85, 0x1119, - 0x7F88, 0x7F88, 0x100E, 0x7F8A, 0x7F8A, 0x1708, 0x7F8C, 0x7F8C, 0x0DDF, - 0x7F8E, 0x7F8E, 0x1300, 0x7F94, 0x7F94, 0x0EA6, 0x7F9A, 0x7F9A, 0x1191, - 0x7F9E, 0x7F9E, 0x15E4, 0x7FA4, 0x7FA4, 0x0F73, 0x7FA8, 0x7FA8, 0x153D, - 0x7FA9, 0x7FA9, 0x1905, 0x7FB2, 0x7FB2, 0x1F76, 0x7FB8, 0x7FB8, 0x1216, - 0x7FB9, 0x7FB9, 0x0DFF, 0x7FBD, 0x7FBD, 0x184A, 0x7FC1, 0x7FC1, 0x17CF, - 0x7FC5, 0x7FC5, 0x164F, 0x7FCA, 0x7FCA, 0x1927, 0x7FCC, 0x7FCC, 0x1928, - 0x7FCE, 0x7FCE, 0x1192, 0x7FD2, 0x7FD2, 0x162F, 0x7FD4, 0x7FD4, 0x14EB, - 0x7FD5, 0x7FD5, 0x1F61, 0x7FDF, 0x7FDF, 0x19E8, 0x7FE0, 0x7FE0, 0x1C9A, - 0x7FE1, 0x7FE1, 0x1459, 0x7FE9, 0x7FE9, 0x1D64, 0x7FEB, 0x7FEB, 0x17E6, - 0x7FF0, 0x7FF0, 0x1DDC, 0x7FF9, 0x7FF9, 0x0F2B, 0x7FFC, 0x7FFC, 0x1929, - 0x8000, 0x8000, 0x1810, 0x8001, 0x8001, 0x11A7, 0x8003, 0x8003, 0x0EA7, - 0x8005, 0x8005, 0x1965, 0x8006, 0x8006, 0x100F, 0x8009, 0x8009, 0x0F59, - 0x800C, 0x800C, 0x191B, 0x8010, 0x8010, 0x103E, 0x8015, 0x8015, 0x0E6D, - 0x8017, 0x8017, 0x12AE, 0x8018, 0x8018, 0x1863, 0x802D, 0x802D, 0x1010, - 0x8033, 0x8033, 0x191C, 0x8036, 0x8036, 0x16EE, 0x803D, 0x803D, 0x1CFE, - 0x803F, 0x803F, 0x0E6E, 0x8043, 0x8043, 0x1083, 0x8046, 0x8046, 0x1193, - 0x804A, 0x804A, 0x11CF, 0x8056, 0x8056, 0x156F, 0x8058, 0x8058, 0x1477, - 0x805A, 0x805A, 0x1C9B, 0x805E, 0x805E, 0x12EC, 0x806F, 0x806F, 0x1178, - 0x8070, 0x8070, 0x1C5A, 0x8072, 0x8072, 0x1570, 0x8073, 0x8073, 0x182F, - 0x8077, 0x8077, 0x1B43, 0x807D, 0x807D, 0x1C20, 0x807E, 0x807E, 0x11BE, - 0x807F, 0x807F, 0x18E0, 0x8084, 0x8084, 0x191D, 0x8085, 0x8085, 0x1606, - 0x8086, 0x8086, 0x14A5, 0x8087, 0x8087, 0x1A9F, 0x8089, 0x8089, 0x18D5, - 0x808B, 0x808B, 0x11FD, 0x808C, 0x808C, 0x1011, 0x8096, 0x8096, 0x1C3F, - 0x809B, 0x809B, 0x1E02, 0x809D, 0x809D, 0x0DA7, 0x80A1, 0x80A1, 0x0EA8, - 0x80A2, 0x80A2, 0x1B35, 0x80A5, 0x80A5, 0x145A, 0x80A9, 0x80A9, 0x0E3B, - 0x80AA, 0x80AA, 0x135E, 0x80AF, 0x80AF, 0x0FDD, 0x80B1, 0x80B1, 0x0F1A, - 0x80B2, 0x80B2, 0x18D6, 0x80B4, 0x80B4, 0x1F1B, 0x80BA, 0x80BA, 0x1D74, - 0x80C3, 0x80C3, 0x189A, 0x80C4, 0x80C4, 0x1AD1, 0x80CC, 0x80CC, 0x1373, - 0x80CE, 0x80CE, 0x1D10, 0x80DA, 0x80DA, 0x1374, 0x80DB, 0x80DB, 0x0DCD, - 0x80DE, 0x80DE, 0x1D88, 0x80E1, 0x80E1, 0x1E95, 0x80E4, 0x80E4, 0x18DC, - 0x80E5, 0x80E5, 0x1512, 0x80F1, 0x80F1, 0x0F0A, 0x80F4, 0x80F4, 0x10F9, - 0x80F8, 0x80F8, 0x1F51, 0x80FD, 0x80FD, 0x1059, 0x8102, 0x8102, 0x1B36, - 0x8105, 0x8105, 0x1E56, 0x8106, 0x8106, 0x1C9C, 0x8107, 0x8107, 0x1E57, - 0x8108, 0x8108, 0x1272, 0x810A, 0x810A, 0x1BE8, 0x8118, 0x8118, 0x17E7, - 0x811A, 0x811A, 0x0D90, 0x811B, 0x811B, 0x0E6F, 0x8123, 0x8123, 0x1618, - 0x8129, 0x8129, 0x15E5, 0x812B, 0x812B, 0x1CFB, 0x812F, 0x812F, 0x1D89, - 0x8139, 0x8139, 0x1BC6, 0x813E, 0x813E, 0x145B, 0x814B, 0x814B, 0x16E0, - 0x814E, 0x814E, 0x1674, 0x8150, 0x8151, 0x140D, 0x8154, 0x8154, 0x0DE0, - 0x8155, 0x8155, 0x17E8, 0x8165, 0x8165, 0x1571, 0x8166, 0x8166, 0x1053, - 0x816B, 0x816B, 0x1AC1, 0x8170, 0x8170, 0x1811, 0x8171, 0x8171, 0x0E18, - 0x8178, 0x8178, 0x199D, 0x8179, 0x8179, 0x13DA, 0x817A, 0x817A, 0x153E, - 0x817F, 0x817F, 0x1D25, 0x8180, 0x8180, 0x135F, 0x8188, 0x8188, 0x0E32, - 0x818A, 0x818A, 0x1323, 0x818F, 0x818F, 0x0EA9, 0x819A, 0x819A, 0x140F, - 0x819C, 0x819C, 0x123B, 0x819D, 0x819D, 0x162B, 0x81A0, 0x81A0, 0x0F2C, - 0x81A3, 0x81A3, 0x1B71, 0x81A8, 0x81A8, 0x1D5C, 0x81B3, 0x81B3, 0x153F, - 0x81B5, 0x81B5, 0x1C91, 0x81BA, 0x81BA, 0x18F8, 0x81BD, 0x81BD, 0x1084, - 0x81BE, 0x81BE, 0x1F07, 0x81BF, 0x81BF, 0x1050, 0x81C0, 0x81C0, 0x1107, - 0x81C2, 0x81C2, 0x145C, 0x81C6, 0x81C6, 0x171C, 0x81CD, 0x81CD, 0x1A73, - 0x81D8, 0x81D8, 0x113A, 0x81DF, 0x81DF, 0x199E, 0x81E3, 0x81E3, 0x1675, - 0x81E5, 0x81E5, 0x17D7, 0x81E7, 0x81E7, 0x199F, 0x81E8, 0x81E8, 0x122A, - 0x81EA, 0x81EA, 0x1966, 0x81ED, 0x81ED, 0x1C9D, 0x81F3, 0x81F3, 0x1B37, - 0x81F4, 0x81F4, 0x1CBA, 0x81FA, 0x81FA, 0x10A5, 0x81FB, 0x81FB, 0x1B5B, - 0x81FC, 0x81FC, 0x0F5A, 0x81FE, 0x81FE, 0x18C5, 0x8205, 0x8205, 0x0F5B, - 0x8207, 0x8207, 0x1735, 0x8208, 0x8208, 0x1F62, 0x820A, 0x820A, 0x0F5C, - 0x820C, 0x820C, 0x1550, 0x820D, 0x820D, 0x14A6, 0x8212, 0x8212, 0x1513, - 0x821B, 0x821B, 0x1BF6, 0x821C, 0x821C, 0x1619, 0x821E, 0x821E, 0x12DB, - 0x821F, 0x821F, 0x1AE8, 0x8221, 0x8221, 0x0DE1, 0x822A, 0x822A, 0x1E03, - 0x822B, 0x822B, 0x1360, 0x822C, 0x822C, 0x133D, 0x8235, 0x8235, 0x1CDE, - 0x8236, 0x8236, 0x1324, 0x8237, 0x8237, 0x1E45, 0x8239, 0x8239, 0x1540, - 0x8240, 0x8240, 0x1410, 0x8245, 0x8245, 0x1736, 0x8247, 0x8247, 0x1A58, - 0x8259, 0x8259, 0x1BC7, 0x8264, 0x8264, 0x1906, 0x8266, 0x8266, 0x1DEB, - 0x826E, 0x826E, 0x0DA8, 0x826F, 0x826F, 0x1154, 0x8271, 0x8271, 0x0DA9, - 0x8272, 0x8272, 0x14F8, 0x8276, 0x8276, 0x176A, 0x8278, 0x8278, 0x1C40, - 0x827E, 0x827E, 0x16D8, 0x828B, 0x828B, 0x184B, 0x828D, 0x828D, 0x1976, - 0x828E, 0x828E, 0x0F7F, 0x8292, 0x8292, 0x125F, 0x8299, 0x8299, 0x1411, - 0x829A, 0x829A, 0x1108, 0x829D, 0x829D, 0x1B38, 0x829F, 0x829F, 0x14CC, - 0x82A5, 0x82A5, 0x0DF7, 0x82A6, 0x82A6, 0x1E96, 0x82A9, 0x82A9, 0x0FCE, - 0x82AC, 0x82AC, 0x1430, 0x82AD, 0x82AD, 0x1D3F, 0x82AE, 0x82AE, 0x1797, - 0x82AF, 0x82AF, 0x1689, 0x82B1, 0x82B1, 0x1EBF, 0x82B3, 0x82B3, 0x1361, - 0x82B7, 0x82B7, 0x1B39, 0x82B8, 0x82B8, 0x1864, 0x82B9, 0x82B9, 0x0FC0, - 0x82BB, 0x82BB, 0x1C6A, 0x82BC, 0x82BC, 0x12AF, 0x82BD, 0x82BD, 0x1697, - 0x82BF, 0x82BF, 0x1952, 0x82D1, 0x82D1, 0x1882, 0x82D2, 0x82D2, 0x176B, - 0x82D4, 0x82D4, 0x1D11, 0x82D5, 0x82D5, 0x1C41, 0x82D7, 0x82D7, 0x12CA, - 0x82DB, 0x82DB, 0x0D7F, 0x82DE, 0x82DE, 0x1D8A, 0x82DF, 0x82DF, 0x0F5D, - 0x82E1, 0x82E1, 0x191E, 0x82E5, 0x82E5, 0x16F2, 0x82E6, 0x82E6, 0x0EAA, - 0x82E7, 0x82E7, 0x19D0, 0x82F1, 0x82F1, 0x1788, 0x82FD, 0x82FD, 0x0EAB, - 0x82FE, 0x82FE, 0x1DBC, 0x8301, 0x8301, 0x1B09, 0x8302, 0x8302, 0x12DC, - 0x8303, 0x8303, 0x1399, 0x8304, 0x8304, 0x0D80, 0x8305, 0x8305, 0x12B0, - 0x8309, 0x8309, 0x1255, 0x8317, 0x8317, 0x1295, 0x8328, 0x8328, 0x1967, - 0x832B, 0x832B, 0x1260, 0x832F, 0x832F, 0x13DB, 0x8331, 0x8331, 0x15E6, - 0x8334, 0x8334, 0x1F08, 0x8335, 0x8335, 0x1937, 0x8336, 0x8336, 0x105F, - 0x8338, 0x8338, 0x1830, 0x8339, 0x8339, 0x1737, 0x8340, 0x8340, 0x161A, - 0x8347, 0x8347, 0x1E1C, 0x8349, 0x8349, 0x1C42, 0x834A, 0x834A, 0x1E68, - 0x834F, 0x834F, 0x194B, 0x8351, 0x8351, 0x191F, 0x8352, 0x8352, 0x1EF3, - 0x8373, 0x8373, 0x1102, 0x8377, 0x8377, 0x1DC8, 0x837B, 0x837B, 0x19E9, - 0x8389, 0x8389, 0x1217, 0x838A, 0x838A, 0x19A0, 0x838E, 0x838E, 0x14A7, - 0x8396, 0x8396, 0x0E70, 0x8398, 0x8398, 0x1676, 0x839E, 0x839E, 0x17E9, - 0x83A2, 0x83A2, 0x1E58, 0x83A9, 0x83A9, 0x1412, 0x83AA, 0x83AA, 0x1698, - 0x83AB, 0x83AB, 0x123C, 0x83BD, 0x83BD, 0x1261, 0x83C1, 0x83C1, 0x1C21, - 0x83C5, 0x83C5, 0x0EF6, 0x83C9, 0x83C9, 0x11B3, 0x83CA, 0x83CA, 0x0F6D, - 0x83CC, 0x83CC, 0x0FAD, 0x83D3, 0x83D3, 0x0EE0, 0x83D6, 0x83D6, 0x1BC8, - 0x83DC, 0x83DC, 0x1BD2, 0x83E9, 0x83E9, 0x13CD, 0x83EB, 0x83EB, 0x0FC1, - 0x83EF, 0x83EF, 0x1EC0, 0x83F0, 0x83F0, 0x0EAC, 0x83F1, 0x83F1, 0x1203, - 0x83F2, 0x83F2, 0x145D, 0x83F4, 0x83F4, 0x16C3, 0x83F9, 0x83F9, 0x19D1, - 0x83FD, 0x83FD, 0x1607, 0x8403, 0x8403, 0x1C92, 0x8404, 0x8404, 0x10C9, - 0x840A, 0x840A, 0x1147, 0x840C, 0x840C, 0x127C, 0x840D, 0x840D, 0x1D6C, - 0x840E, 0x840E, 0x189B, 0x8429, 0x8429, 0x1C6B, 0x842C, 0x842C, 0x124B, - 0x8431, 0x8431, 0x1F39, 0x8438, 0x8438, 0x18C6, 0x843D, 0x843D, 0x1122, - 0x8449, 0x8449, 0x1771, 0x8457, 0x8457, 0x19D2, 0x845B, 0x845B, 0x0DB2, - 0x8461, 0x8461, 0x1D8B, 0x8463, 0x8463, 0x10FA, 0x8466, 0x8466, 0x189C, - 0x846B, 0x846B, 0x1E97, 0x846C, 0x846C, 0x19A1, 0x846F, 0x846F, 0x16F3, - 0x8475, 0x8475, 0x0FA4, 0x847A, 0x847A, 0x1B12, 0x8490, 0x8490, 0x15E7, - 0x8494, 0x8494, 0x1650, 0x8499, 0x8499, 0x12BF, 0x849C, 0x849C, 0x14C0, - 0x84A1, 0x84A1, 0x1362, 0x84B2, 0x84B2, 0x1D8C, 0x84B8, 0x84B8, 0x1B1B, - 0x84BB, 0x84BB, 0x16F4, 0x84BC, 0x84BC, 0x1BC9, 0x84BF, 0x84BF, 0x1E98, - 0x84C0, 0x84C0, 0x15AD, 0x84C2, 0x84C2, 0x1296, 0x84C4, 0x84C4, 0x1C7F, - 0x84C6, 0x84C6, 0x1527, 0x84C9, 0x84C9, 0x1831, 0x84CB, 0x84CB, 0x0DF8, - 0x84CD, 0x84CD, 0x1651, 0x84D1, 0x84D1, 0x14A8, 0x84DA, 0x84DA, 0x15E8, - 0x84EC, 0x84EC, 0x13F0, 0x84EE, 0x84EE, 0x1179, 0x84F4, 0x84F4, 0x161B, - 0x84FC, 0x84FC, 0x11D0, 0x8511, 0x8511, 0x128B, 0x8513, 0x8513, 0x124C, - 0x8514, 0x8514, 0x13DC, 0x8517, 0x8517, 0x1968, 0x8518, 0x8518, 0x14CD, - 0x851A, 0x851A, 0x186A, 0x851E, 0x851E, 0x11DD, 0x8521, 0x8521, 0x1BD3, - 0x8523, 0x8523, 0x19A2, 0x8525, 0x8525, 0x1C5B, 0x852C, 0x852C, 0x1597, - 0x852D, 0x852D, 0x18EF, 0x852F, 0x852F, 0x1B5C, 0x853D, 0x853D, 0x1D75, - 0x853F, 0x853F, 0x189D, 0x8541, 0x8541, 0x1085, 0x8543, 0x8543, 0x138A, - 0x8549, 0x8549, 0x1C43, 0x854E, 0x854E, 0x0F2D, 0x8553, 0x8553, 0x1865, - 0x8559, 0x8559, 0x1E74, 0x8563, 0x8563, 0x161C, 0x8568, 0x8568, 0x0F8D, - 0x8569, 0x8569, 0x1D06, 0x856A, 0x856A, 0x12DD, 0x856D, 0x856D, 0x1598, - 0x8584, 0x8584, 0x1325, 0x8587, 0x8587, 0x1301, 0x858F, 0x858F, 0x1907, - 0x8591, 0x8591, 0x0DE2, 0x8594, 0x8594, 0x19A3, 0x859B, 0x859B, 0x1551, - 0x85A6, 0x85A6, 0x1BF7, 0x85A8, 0x85A8, 0x1F35, 0x85A9, 0x85A9, 0x14C7, - 0x85AA, 0x85AA, 0x1677, 0x85AF, 0x85AF, 0x1514, 0x85B0, 0x85B0, 0x1F32, - 0x85BA, 0x85BA, 0x1A74, 0x85C1, 0x85C1, 0x0EAD, 0x85C9, 0x85C9, 0x1969, - 0x85CD, 0x85CD, 0x1136, 0x85CE, 0x85CE, 0x1678, 0x85CF, 0x85CF, 0x19A4, - 0x85D5, 0x85D5, 0x184C, 0x85DC, 0x85DC, 0x1163, 0x85DD, 0x85DD, 0x1798, - 0x85E4, 0x85E4, 0x1112, 0x85E5, 0x85E5, 0x16F5, 0x85E9, 0x85E9, 0x138B, - 0x85EA, 0x85EA, 0x15E9, 0x85F7, 0x85F7, 0x19D3, 0x85FA, 0x85FA, 0x1222, - 0x85FB, 0x85FB, 0x1AA0, 0x85FF, 0x85FF, 0x0EE9, 0x8602, 0x8602, 0x1799, - 0x8606, 0x8606, 0x11A8, 0x8607, 0x8607, 0x1599, 0x860A, 0x860A, 0x17C8, - 0x8616, 0x8616, 0x1724, 0x8617, 0x8617, 0x13A4, 0x861A, 0x861A, 0x1541, - 0x862D, 0x862D, 0x112B, 0x863F, 0x863F, 0x111A, 0x864E, 0x864E, 0x1E99, - 0x8650, 0x8650, 0x1DD0, 0x8654, 0x8654, 0x0E19, 0x8655, 0x8655, 0x1BDD, - 0x865B, 0x865B, 0x1E29, 0x865C, 0x865C, 0x11A9, 0x865E, 0x865E, 0x184D, - 0x865F, 0x865F, 0x1E9A, 0x8667, 0x8667, 0x1F49, 0x8679, 0x8679, 0x1EB4, - 0x868A, 0x868A, 0x12ED, 0x868C, 0x868C, 0x1363, 0x8693, 0x8693, 0x1938, - 0x86A3, 0x86A3, 0x0ED7, 0x86A4, 0x86A4, 0x1AA1, 0x86A9, 0x86A9, 0x1CBB, - 0x86C7, 0x86C7, 0x14A9, 0x86CB, 0x86CB, 0x1070, 0x86D4, 0x86D4, 0x1F09, - 0x86D9, 0x86D9, 0x17D8, 0x86DB, 0x86DB, 0x1AE9, 0x86DF, 0x86DF, 0x0F2E, - 0x86E4, 0x86E4, 0x1DF2, 0x86ED, 0x86ED, 0x1B72, 0x86FE, 0x86FE, 0x1699, - 0x8700, 0x8700, 0x1C4D, 0x8702, 0x8702, 0x13F1, 0x8703, 0x8703, 0x1679, - 0x8708, 0x8708, 0x17BA, 0x8718, 0x8718, 0x1B3A, 0x871A, 0x871A, 0x145E, - 0x871C, 0x871C, 0x1314, 0x874E, 0x874E, 0x0DB4, 0x8755, 0x8755, 0x1662, - 0x8757, 0x8757, 0x1EF4, 0x875F, 0x875F, 0x189E, 0x8766, 0x8766, 0x1DC9, - 0x8768, 0x8768, 0x162C, 0x8774, 0x8774, 0x1E9B, 0x8776, 0x8776, 0x1A2F, - 0x8778, 0x8778, 0x17D9, 0x8782, 0x8782, 0x1142, 0x878D, 0x878D, 0x18E4, - 0x879F, 0x879F, 0x1297, 0x87A2, 0x87A2, 0x1E69, 0x87B3, 0x87B3, 0x1098, - 0x87BA, 0x87BA, 0x111B, 0x87C4, 0x87C4, 0x1CD0, 0x87E0, 0x87E0, 0x133E, - 0x87EC, 0x87EC, 0x1542, 0x87EF, 0x87EF, 0x1812, 0x87F2, 0x87F2, 0x1C8D, - 0x87F9, 0x87F9, 0x1E10, 0x87FB, 0x87FB, 0x1908, 0x87FE, 0x87FE, 0x155B, - 0x8805, 0x8805, 0x163A, 0x881F, 0x881F, 0x113B, 0x8822, 0x8822, 0x1B04, - 0x8823, 0x8823, 0x1164, 0x8831, 0x8831, 0x0EAE, 0x8836, 0x8836, 0x1984, - 0x883B, 0x883B, 0x124D, 0x8840, 0x8840, 0x1E4C, 0x8846, 0x8846, 0x1B0C, - 0x884C, 0x884C, 0x1E1D, 0x884D, 0x884D, 0x175D, 0x8852, 0x8852, 0x1E46, - 0x8853, 0x8853, 0x1624, 0x8857, 0x8857, 0x0D81, 0x8859, 0x8859, 0x169A, - 0x885B, 0x885B, 0x189F, 0x885D, 0x885D, 0x1C8E, 0x8861, 0x8861, 0x1E6A, - 0x8862, 0x8862, 0x0F5E, 0x8863, 0x8863, 0x1909, 0x8868, 0x8868, 0x1DA1, - 0x886B, 0x886B, 0x14CE, 0x8870, 0x8870, 0x15BD, 0x8872, 0x8872, 0x1037, - 0x8877, 0x8877, 0x1C8F, 0x887E, 0x887F, 0x0FCF, 0x8881, 0x8881, 0x1883, - 0x8882, 0x8882, 0x129B, 0x8888, 0x8888, 0x0D82, 0x888B, 0x888B, 0x10A6, - 0x888D, 0x888D, 0x1D8D, 0x8892, 0x8892, 0x1071, 0x8896, 0x8896, 0x15EA, - 0x8897, 0x8897, 0x1B5D, 0x889E, 0x889E, 0x0EC6, 0x88AB, 0x88AB, 0x1DB1, - 0x88B4, 0x88B4, 0x0EAF, 0x88C1, 0x88C1, 0x19B6, 0x88C2, 0x88C2, 0x1182, - 0x88CF, 0x88CF, 0x1218, 0x88D4, 0x88D4, 0x179A, 0x88D5, 0x88D5, 0x18C7, - 0x88D9, 0x88D9, 0x0F74, 0x88DC, 0x88DC, 0x13CE, 0x88DD, 0x88DD, 0x19A5, - 0x88DF, 0x88DF, 0x14AA, 0x88E1, 0x88E1, 0x1219, 0x88E8, 0x88E8, 0x145F, - 0x88F3, 0x88F3, 0x14EC, 0x88F4, 0x88F5, 0x1375, 0x88F8, 0x88F8, 0x111C, - 0x88FD, 0x88FD, 0x1A75, 0x8907, 0x8907, 0x13DD, 0x8910, 0x8910, 0x0DB3, - 0x8912, 0x8912, 0x1D8E, 0x8913, 0x8913, 0x13CF, 0x8918, 0x8918, 0x18A0, - 0x8919, 0x8919, 0x1377, 0x8925, 0x8925, 0x181C, 0x892A, 0x892A, 0x1D26, - 0x8936, 0x8936, 0x1630, 0x8938, 0x8938, 0x11DE, 0x893B, 0x893B, 0x1552, - 0x8941, 0x8941, 0x0DE3, 0x8944, 0x8944, 0x1709, 0x895F, 0x895F, 0x0FD1, - 0x8964, 0x8964, 0x1137, 0x896A, 0x896A, 0x1256, 0x8972, 0x8972, 0x1631, - 0x897F, 0x897F, 0x1515, 0x8981, 0x8981, 0x1813, 0x8983, 0x8983, 0x1086, - 0x8986, 0x8986, 0x13DE, 0x8987, 0x8987, 0x1D57, 0x898B, 0x898B, 0x0E3C, - 0x898F, 0x898F, 0x0FA5, 0x8993, 0x8993, 0x127E, 0x8996, 0x8996, 0x1652, - 0x89A1, 0x89A1, 0x0E33, 0x89A9, 0x89A9, 0x10CA, 0x89AA, 0x89AA, 0x1CC3, - 0x89B2, 0x89B2, 0x0FC2, 0x89BA, 0x89BA, 0x0D91, 0x89BD, 0x89BD, 0x1138, - 0x89C0, 0x89C0, 0x0EF7, 0x89D2, 0x89D2, 0x0D92, 0x89E3, 0x89E3, 0x1E11, - 0x89F4, 0x89F4, 0x14ED, 0x89F8, 0x89F8, 0x1C4E, 0x8A00, 0x8A00, 0x1721, - 0x8A02, 0x8A02, 0x1A59, 0x8A03, 0x8A03, 0x1413, 0x8A08, 0x8A08, 0x0E8C, - 0x8A0A, 0x8A0A, 0x167A, 0x8A0C, 0x8A0C, 0x1EB5, 0x8A0E, 0x8A0E, 0x1D1C, - 0x8A13, 0x8A13, 0x1F33, 0x8A16, 0x8A16, 0x1F5A, 0x8A17, 0x8A17, 0x1CEE, - 0x8A18, 0x8A18, 0x1012, 0x8A1B, 0x8A1B, 0x17DA, 0x8A1D, 0x8A1D, 0x169B, - 0x8A1F, 0x8A1F, 0x15B5, 0x8A23, 0x8A23, 0x0E45, 0x8A25, 0x8A25, 0x1056, - 0x8A2A, 0x8A2A, 0x1364, 0x8A2D, 0x8A2D, 0x1553, 0x8A31, 0x8A31, 0x1E2A, - 0x8A34, 0x8A34, 0x159A, 0x8A36, 0x8A36, 0x0D83, 0x8A3A, 0x8A3A, 0x1B5E, - 0x8A3B, 0x8A3B, 0x1AEA, 0x8A50, 0x8A50, 0x14AB, 0x8A54, 0x8A54, 0x1AA2, - 0x8A55, 0x8A55, 0x1D6D, 0x8A5B, 0x8A5B, 0x19D4, 0x8A5E, 0x8A5E, 0x14AC, - 0x8A60, 0x8A60, 0x1789, 0x8A62, 0x8A62, 0x161D, 0x8A63, 0x8A63, 0x179B, - 0x8A66, 0x8A66, 0x1653, 0x8A69, 0x8A69, 0x1654, 0x8A6D, 0x8A6D, 0x0F93, - 0x8A6E, 0x8A6E, 0x1A11, 0x8A70, 0x8A70, 0x1F77, 0x8A71, 0x8A71, 0x1EC1, - 0x8A72, 0x8A72, 0x1E12, 0x8A73, 0x8A73, 0x14EE, 0x8A75, 0x8A75, 0x1543, - 0x8A79, 0x8A79, 0x1C11, 0x8A85, 0x8A85, 0x1AEB, 0x8A87, 0x8A87, 0x0EE1, - 0x8A8C, 0x8A8C, 0x1B3B, 0x8A8D, 0x8A8D, 0x1939, 0x8A93, 0x8A93, 0x1516, - 0x8A95, 0x8A95, 0x1CF9, 0x8A98, 0x8A98, 0x18C8, 0x8A9E, 0x8A9E, 0x1714, - 0x8AA0, 0x8AA0, 0x1572, 0x8AA1, 0x8AA1, 0x0E8D, 0x8AA3, 0x8AA3, 0x12DE, - 0x8AA4, 0x8AA4, 0x17BB, 0x8AA5, 0x8AA5, 0x0EB0, 0x8AA6, 0x8AA6, 0x15B6, - 0x8AA8, 0x8AA8, 0x1F0A, 0x8AAA, 0x8AAA, 0x1554, 0x8AB0, 0x8AB0, 0x15EB, - 0x8AB2, 0x8AB2, 0x0EE2, 0x8AB9, 0x8AB9, 0x1460, 0x8ABC, 0x8ABC, 0x190A, - 0x8ABE, 0x8ABE, 0x18E9, 0x8ABF, 0x8ABF, 0x1AA3, 0x8AC2, 0x8AC2, 0x1C12, - 0x8AC4, 0x8AC4, 0x161E, 0x8AC7, 0x8AC7, 0x1087, 0x8ACB, 0x8ACB, 0x1C22, - 0x8ACD, 0x8ACD, 0x19BD, 0x8ACF, 0x8ACF, 0x1C6C, 0x8AD2, 0x8AD2, 0x1155, - 0x8AD6, 0x8AD6, 0x11B7, 0x8ADB, 0x8ADB, 0x18C9, 0x8ADC, 0x8ADC, 0x1C1A, - 0x8AE1, 0x8AE1, 0x1655, 0x8AE6, 0x8AE6, 0x1C2A, 0x8AE7, 0x8AE7, 0x1E13, - 0x8AEA, 0x8AEA, 0x1A5A, 0x8AEB, 0x8AEB, 0x0DAA, 0x8AED, 0x8AED, 0x18CA, - 0x8AEE, 0x8AEE, 0x196A, 0x8AF1, 0x8AF1, 0x1F42, 0x8AF6, 0x8AF6, 0x168A, - 0x8AF7, 0x8AF7, 0x1DA9, 0x8AF8, 0x8AF8, 0x1A76, 0x8AFA, 0x8AFA, 0x1722, - 0x8AFE, 0x8AFE, 0x102B, 0x8B00, 0x8B00, 0x12B1, 0x8B01, 0x8B01, 0x16BA, - 0x8B02, 0x8B02, 0x18A1, 0x8B04, 0x8B04, 0x1113, 0x8B0E, 0x8B0E, 0x1302, - 0x8B10, 0x8B10, 0x1315, 0x8B14, 0x8B14, 0x1DD1, 0x8B16, 0x8B16, 0x15A7, - 0x8B17, 0x8B17, 0x1365, 0x8B19, 0x8B19, 0x0E49, 0x8B1A, 0x8B1A, 0x192A, - 0x8B1B, 0x8B1B, 0x0DE4, 0x8B1D, 0x8B1D, 0x14AD, 0x8B20, 0x8B20, 0x1814, - 0x8B28, 0x8B28, 0x12B2, 0x8B2B, 0x8B2B, 0x19EA, 0x8B2C, 0x8B2C, 0x11ED, - 0x8B33, 0x8B33, 0x0F5F, 0x8B39, 0x8B39, 0x0FC3, 0x8B41, 0x8B41, 0x1EC2, - 0x8B49, 0x8B49, 0x1B1C, 0x8B4E, 0x8B4E, 0x1F4B, 0x8B4F, 0x8B4F, 0x1013, - 0x8B58, 0x8B58, 0x1663, 0x8B5A, 0x8B5A, 0x1088, 0x8B5C, 0x8B5C, 0x13D0, - 0x8B66, 0x8B66, 0x0E71, 0x8B6C, 0x8B6C, 0x1461, 0x8B6F, 0x8B6F, 0x1741, - 0x8B70, 0x8B70, 0x190B, 0x8B74, 0x8B74, 0x0E3D, 0x8B77, 0x8B77, 0x1E9C, - 0x8B7D, 0x8B7D, 0x179C, 0x8B80, 0x8B80, 0x10DE, 0x8B8A, 0x8B8A, 0x13A9, - 0x8B90, 0x8B90, 0x15EC, 0x8B92, 0x8B92, 0x1BB2, 0x8B93, 0x8B93, 0x170A, - 0x8B96, 0x8B96, 0x1BB3, 0x8B9A, 0x8B9A, 0x1BA0, 0x8C37, 0x8C37, 0x0EBC, - 0x8C3F, 0x8C3F, 0x0E8E, 0x8C41, 0x8C41, 0x1EDE, 0x8C46, 0x8C46, 0x1103, - 0x8C48, 0x8C48, 0x1014, 0x8C4A, 0x8C4A, 0x1DAA, 0x8C4C, 0x8C4C, 0x17EA, - 0x8C55, 0x8C55, 0x1656, 0x8C5A, 0x8C5A, 0x10E7, 0x8C61, 0x8C61, 0x14EF, - 0x8C6A, 0x8C6A, 0x1E9D, 0x8C6B, 0x8C6B, 0x179D, 0x8C79, 0x8C79, 0x1DA2, - 0x8C7A, 0x8C7A, 0x1657, 0x8C82, 0x8C82, 0x1C44, 0x8C8A, 0x8C8A, 0x1273, - 0x8C8C, 0x8C8C, 0x12B3, 0x8C9D, 0x8C9D, 0x1D58, 0x8C9E, 0x8C9E, 0x1A5B, - 0x8CA0, 0x8CA0, 0x1414, 0x8CA1, 0x8CA1, 0x19B7, 0x8CA2, 0x8CA2, 0x0ED8, - 0x8CA7, 0x8CA7, 0x1472, 0x8CA8, 0x8CA8, 0x1EC3, 0x8CA9, 0x8CA9, 0x1D47, - 0x8CAA, 0x8CAA, 0x1CFF, 0x8CAB, 0x8CAB, 0x0EF8, 0x8CAC, 0x8CAC, 0x1BD9, - 0x8CAF, 0x8CAF, 0x19D5, 0x8CB0, 0x8CB0, 0x157B, 0x8CB3, 0x8CB3, 0x1921, - 0x8CB4, 0x8CB4, 0x0F98, 0x8CB6, 0x8CB6, 0x1D68, 0x8CB7, 0x8CB7, 0x126E, - 0x8CB8, 0x8CB8, 0x10A7, 0x8CBB, 0x8CBB, 0x1462, 0x8CBC, 0x8CBC, 0x1C1B, - 0x8CBD, 0x8CBD, 0x1920, 0x8CBF, 0x8CBF, 0x12DF, 0x8CC0, 0x8CC0, 0x1DCA, - 0x8CC1, 0x8CC1, 0x1431, 0x8CC2, 0x8CC2, 0x11C3, 0x8CC3, 0x8CC3, 0x194C, - 0x8CC4, 0x8CC4, 0x1F0B, 0x8CC7, 0x8CC7, 0x196B, 0x8CC8, 0x8CC8, 0x0D84, - 0x8CCA, 0x8CCA, 0x19EB, 0x8CD1, 0x8CD1, 0x1B5F, 0x8CD3, 0x8CD3, 0x1473, - 0x8CDA, 0x8CDA, 0x11C4, 0x8CDC, 0x8CDC, 0x14AE, 0x8CDE, 0x8CDE, 0x14F0, - 0x8CE0, 0x8CE0, 0x1378, 0x8CE2, 0x8CE2, 0x1E47, 0x8CE3, 0x8CE3, 0x126F, - 0x8CE4, 0x8CE4, 0x1BF8, 0x8CE6, 0x8CE6, 0x1415, 0x8CEA, 0x8CEA, 0x1B73, - 0x8CED, 0x8CED, 0x10CB, 0x8CF4, 0x8CF4, 0x11C5, 0x8CFB, 0x8CFB, 0x1416, - 0x8CFC, 0x8CFC, 0x0F60, 0x8CFD, 0x8CFD, 0x14F4, 0x8D04, 0x8D04, 0x1B3C, - 0x8D05, 0x8D05, 0x1C93, 0x8D07, 0x8D07, 0x18DD, 0x8D08, 0x8D08, 0x1B1D, - 0x8D0A, 0x8D0A, 0x1BA1, 0x8D0D, 0x8D0D, 0x155C, 0x8D13, 0x8D13, 0x19A6, - 0x8D16, 0x8D16, 0x15A8, 0x8D64, 0x8D64, 0x19EC, 0x8D66, 0x8D66, 0x14AF, - 0x8D6B, 0x8D6B, 0x1E34, 0x8D70, 0x8D70, 0x1AEC, 0x8D73, 0x8D73, 0x0FA6, - 0x8D74, 0x8D74, 0x1417, 0x8D77, 0x8D77, 0x1015, 0x8D85, 0x8D85, 0x1C45, - 0x8D8A, 0x8D8A, 0x188A, 0x8D99, 0x8D99, 0x1AA4, 0x8DA3, 0x8DA3, 0x1C9E, - 0x8DA8, 0x8DA8, 0x1C6D, 0x8DB3, 0x8DB3, 0x1AAE, 0x8DBA, 0x8DBA, 0x1418, - 0x8DBE, 0x8DBE, 0x1B3D, 0x8DC6, 0x8DC6, 0x1D12, 0x8DCB, 0x8DCB, 0x1348, - 0x8DCC, 0x8DCC, 0x1B74, 0x8DCF, 0x8DCF, 0x0D85, 0x8DDB, 0x8DDB, 0x1D40, - 0x8DDD, 0x8DDD, 0x0E0C, 0x8DE1, 0x8DE1, 0x19ED, 0x8DE3, 0x8DE3, 0x1544, - 0x8DE8, 0x8DE8, 0x0EE3, 0x8DEF, 0x8DEF, 0x11AA, 0x8DF3, 0x8DF3, 0x10CC, - 0x8E0A, 0x8E0A, 0x1832, 0x8E0F, 0x8E0F, 0x108D, 0x8E10, 0x8E10, 0x1BF9, - 0x8E1E, 0x8E1E, 0x0E0D, 0x8E2A, 0x8E2A, 0x1AC2, 0x8E30, 0x8E30, 0x18CB, - 0x8E35, 0x8E35, 0x1AC3, 0x8E42, 0x8E42, 0x18CC, 0x8E44, 0x8E44, 0x1A77, - 0x8E47, 0x8E47, 0x0E1A, 0x8E48, 0x8E48, 0x10CD, 0x8E49, 0x8E49, 0x1B8C, - 0x8E4A, 0x8E4A, 0x1E75, 0x8E59, 0x8E59, 0x1C80, 0x8E5F, 0x8E5F, 0x19EE, - 0x8E60, 0x8E60, 0x1BE9, 0x8E74, 0x8E74, 0x1C81, 0x8E76, 0x8E76, 0x0F8E, - 0x8E81, 0x8E81, 0x1AA5, 0x8E87, 0x8E87, 0x19D6, 0x8E8A, 0x8E8A, 0x1AED, - 0x8E8D, 0x8E8D, 0x16F6, 0x8EAA, 0x8EAA, 0x1223, 0x8EAB, 0x8EAB, 0x167B, - 0x8EAC, 0x8EAC, 0x0F80, 0x8EC0, 0x8EC0, 0x0F61, 0x8ECA, 0x8ECA, 0x1B8D, - 0x8ECB, 0x8ECB, 0x16BB, 0x8ECC, 0x8ECC, 0x0F94, 0x8ECD, 0x8ECD, 0x0F75, - 0x8ED2, 0x8ED2, 0x1E2E, 0x8EDF, 0x8EDF, 0x175E, 0x8EEB, 0x8EEB, 0x1B60, - 0x8EF8, 0x8EF8, 0x1C82, 0x8EFB, 0x8EFB, 0x0D86, 0x8EFE, 0x8EFE, 0x1664, - 0x8F03, 0x8F03, 0x0F2F, 0x8F05, 0x8F05, 0x11AB, 0x8F09, 0x8F09, 0x19B8, - 0x8F12, 0x8F12, 0x1C1C, 0x8F13, 0x8F13, 0x124E, 0x8F14, 0x8F14, 0x13D1, - 0x8F15, 0x8F15, 0x0E72, 0x8F1B, 0x8F1B, 0x1156, 0x8F1C, 0x8F1C, 0x1CBC, - 0x8F1D, 0x8F1D, 0x1F43, 0x8F1E, 0x8F1E, 0x1262, 0x8F1F, 0x8F1F, 0x1C06, - 0x8F26, 0x8F26, 0x117A, 0x8F27, 0x8F27, 0x13BF, 0x8F29, 0x8F29, 0x1379, - 0x8F2A, 0x8F2A, 0x11F7, 0x8F2F, 0x8F2F, 0x1B7B, 0x8F33, 0x8F33, 0x1AEE, - 0x8F38, 0x8F38, 0x15ED, 0x8F39, 0x8F39, 0x13DF, 0x8F3B, 0x8F3B, 0x13E0, - 0x8F3E, 0x8F3E, 0x1A12, 0x8F3F, 0x8F3F, 0x1738, 0x8F44, 0x8F44, 0x1DE2, - 0x8F45, 0x8F45, 0x1884, 0x8F49, 0x8F49, 0x1A13, 0x8F4D, 0x8F4D, 0x1C07, - 0x8F4E, 0x8F4E, 0x0F30, 0x8F5D, 0x8F5D, 0x1739, 0x8F5F, 0x8F5F, 0x0F1B, - 0x8F62, 0x8F62, 0x116F, 0x8F9B, 0x8F9B, 0x167C, 0x8F9C, 0x8F9C, 0x0EB1, - 0x8FA3, 0x8FA3, 0x112E, 0x8FA6, 0x8FA6, 0x1D48, 0x8FA8, 0x8FA8, 0x13AA, - 0x8FAD, 0x8FAD, 0x14B0, 0x8FAF, 0x8FAF, 0x13AB, 0x8FB0, 0x8FB0, 0x1B61, - 0x8FB1, 0x8FB1, 0x181D, 0x8FB2, 0x8FB2, 0x1051, 0x8FC2, 0x8FC2, 0x184E, - 0x8FC5, 0x8FC5, 0x167D, 0x8FCE, 0x8FCE, 0x178A, 0x8FD1, 0x8FD1, 0x0FC4, - 0x8FD4, 0x8FD4, 0x133F, 0x8FE6, 0x8FE6, 0x0D87, 0x8FEA, 0x8FEA, 0x19EF, - 0x8FEB, 0x8FEB, 0x1326, 0x8FED, 0x8FED, 0x1B75, 0x8FF0, 0x8FF0, 0x1625, - 0x8FF2, 0x8FF2, 0x0E2A, 0x8FF7, 0x8FF7, 0x1303, 0x8FF9, 0x8FF9, 0x19F0, - 0x8FFD, 0x8FFD, 0x1C6E, 0x9000, 0x9000, 0x1D27, 0x9001, 0x9001, 0x15B7, - 0x9002, 0x9002, 0x0EFE, 0x9003, 0x9003, 0x10CE, 0x9005, 0x9005, 0x1F2A, - 0x9006, 0x9006, 0x1742, 0x9008, 0x9008, 0x1E6B, 0x900B, 0x900B, 0x1D8F, - 0x900D, 0x900D, 0x159B, 0x900F, 0x900F, 0x1D2D, 0x9010, 0x9010, 0x1C83, - 0x9011, 0x9011, 0x0F62, 0x9014, 0x9014, 0x10CF, 0x9015, 0x9015, 0x0E73, - 0x9017, 0x9017, 0x1104, 0x9019, 0x9019, 0x19D7, 0x901A, 0x901A, 0x1D22, - 0x901D, 0x901D, 0x1517, 0x901E, 0x901E, 0x1194, 0x901F, 0x901F, 0x15A9, - 0x9020, 0x9020, 0x1AA6, 0x9021, 0x9021, 0x1B05, 0x9022, 0x9022, 0x13F2, - 0x9023, 0x9023, 0x117B, 0x902E, 0x902E, 0x1C2B, 0x9031, 0x9031, 0x1AEF, - 0x9032, 0x9032, 0x1B62, 0x9035, 0x9035, 0x0FA7, 0x9038, 0x9038, 0x1942, - 0x903C, 0x903C, 0x1DBF, 0x903E, 0x903E, 0x18CE, 0x9041, 0x9041, 0x1109, - 0x9042, 0x9042, 0x15EE, 0x9047, 0x9047, 0x184F, 0x904A, 0x904A, 0x18CD, - 0x904B, 0x904B, 0x1866, 0x904D, 0x904D, 0x1D65, 0x904E, 0x904E, 0x0EE4, - 0x9050, 0x9050, 0x1DCB, 0x9051, 0x9051, 0x1EF5, 0x9053, 0x9053, 0x10D0, - 0x9054, 0x9054, 0x1078, 0x9055, 0x9055, 0x18A2, 0x9059, 0x9059, 0x1815, - 0x905C, 0x905C, 0x15AE, 0x905D, 0x905D, 0x108E, 0x905E, 0x905E, 0x1C2C, - 0x9060, 0x9060, 0x1885, 0x9061, 0x9061, 0x159C, 0x9063, 0x9063, 0x0E3E, - 0x9069, 0x9069, 0x19F1, 0x906D, 0x906D, 0x1AA7, 0x906E, 0x906E, 0x1B8E, - 0x906F, 0x906F, 0x110A, 0x9072, 0x9072, 0x1B3E, 0x9075, 0x9075, 0x1B06, - 0x9077, 0x9077, 0x1BFA, 0x9078, 0x9078, 0x1545, 0x907A, 0x907A, 0x18CF, - 0x907C, 0x907C, 0x11D1, 0x907D, 0x907D, 0x0E0E, 0x907F, 0x907F, 0x1DB2, - 0x9080, 0x9080, 0x1816, 0x9081, 0x9081, 0x1270, 0x9082, 0x9082, 0x1E14, - 0x9083, 0x9083, 0x15EF, 0x9084, 0x9084, 0x1ED8, 0x9087, 0x9087, 0x1922, - 0x9088, 0x9088, 0x123D, 0x908A, 0x908A, 0x13AC, 0x908F, 0x908F, 0x111D, - 0x9091, 0x9091, 0x18F5, 0x9095, 0x9095, 0x17D0, 0x9099, 0x9099, 0x1263, - 0x90A2, 0x90A2, 0x1E6C, 0x90A3, 0x90A3, 0x102A, 0x90A6, 0x90A6, 0x1366, - 0x90A8, 0x90A8, 0x1C52, 0x90AA, 0x90AA, 0x14B1, 0x90AF, 0x90AF, 0x0DC6, - 0x90B0, 0x90B0, 0x1D13, 0x90B1, 0x90B1, 0x0F63, 0x90B5, 0x90B5, 0x159D, - 0x90B8, 0x90B8, 0x19D8, 0x90C1, 0x90C1, 0x185C, 0x90CA, 0x90CA, 0x0F31, - 0x90DE, 0x90DE, 0x1143, 0x90E1, 0x90E1, 0x0F76, 0x90E8, 0x90E8, 0x1419, - 0x90ED, 0x90ED, 0x0EEA, 0x90F5, 0x90F5, 0x1850, 0x90FD, 0x90FD, 0x10D1, - 0x9102, 0x9102, 0x16AA, 0x9112, 0x9112, 0x1C6F, 0x9115, 0x9115, 0x1E22, - 0x9119, 0x9119, 0x1463, 0x9127, 0x9127, 0x1114, 0x912D, 0x912D, 0x1A5C, - 0x9132, 0x9132, 0x1072, 0x9149, 0x9149, 0x18D0, 0x914A, 0x914A, 0x1A5D, - 0x914B, 0x914B, 0x1C70, 0x914C, 0x914C, 0x1977, 0x914D, 0x914D, 0x137A, - 0x914E, 0x914E, 0x1AF0, 0x9152, 0x9152, 0x1AF1, 0x9162, 0x9162, 0x1C46, - 0x9169, 0x9169, 0x1298, 0x916A, 0x916A, 0x1123, 0x916C, 0x916C, 0x15F0, - 0x9175, 0x9175, 0x1F1C, 0x9177, 0x9177, 0x1EA3, 0x9178, 0x9178, 0x14C1, - 0x9187, 0x9187, 0x161F, 0x9189, 0x9189, 0x1C9F, 0x918B, 0x918B, 0x1C47, - 0x918D, 0x918D, 0x1A78, 0x9192, 0x9192, 0x1573, 0x919C, 0x919C, 0x1C71, - 0x91AB, 0x91AB, 0x190C, 0x91AC, 0x91AC, 0x19A7, 0x91AE, 0x91AE, 0x1C48, - 0x91AF, 0x91AF, 0x1E76, 0x91B1, 0x91B1, 0x1349, 0x91B4, 0x91B4, 0x119D, - 0x91B5, 0x91B5, 0x0E00, 0x91C0, 0x91C0, 0x170B, 0x91C7, 0x91C7, 0x1BD4, - 0x91C9, 0x91C9, 0x18D1, 0x91CB, 0x91CB, 0x1528, 0x91CC, 0x91CC, 0x121A, - 0x91CD, 0x91CD, 0x1B0D, 0x91CE, 0x91CE, 0x16EF, 0x91CF, 0x91CF, 0x1157, - 0x91D0, 0x91D0, 0x121B, 0x91D1, 0x91D1, 0x1023, 0x91D7, 0x91D7, 0x15BE, - 0x91D8, 0x91D8, 0x1A5E, 0x91DC, 0x91DC, 0x141A, 0x91DD, 0x91DD, 0x1CCE, - 0x91E3, 0x91E3, 0x1AA8, 0x91E7, 0x91E7, 0x1BFB, 0x91EA, 0x91EA, 0x1851, - 0x91F5, 0x91F5, 0x1BD5, 0x920D, 0x920D, 0x110B, 0x9210, 0x9210, 0x0E26, - 0x9211, 0x9211, 0x1D49, 0x9212, 0x9212, 0x14D1, 0x9217, 0x9217, 0x18DE, - 0x921E, 0x921E, 0x0FAE, 0x9234, 0x9234, 0x1195, 0x923A, 0x923A, 0x17C2, - 0x923F, 0x923F, 0x1A14, 0x9240, 0x9240, 0x0DCE, 0x9245, 0x9245, 0x0E0F, - 0x9249, 0x9249, 0x1E48, 0x9257, 0x9257, 0x0E4A, 0x925B, 0x925B, 0x175F, - 0x925E, 0x925E, 0x188B, 0x9262, 0x9262, 0x134A, 0x9264, 0x9264, 0x0F64, - 0x9265, 0x9265, 0x1626, 0x9266, 0x9266, 0x1A5F, 0x9280, 0x9280, 0x18EA, - 0x9283, 0x9283, 0x1C5C, 0x9285, 0x9285, 0x10FB, 0x9291, 0x9291, 0x1546, - 0x9293, 0x9293, 0x1A15, 0x9296, 0x9296, 0x15F1, 0x9298, 0x9298, 0x1299, - 0x929C, 0x929C, 0x1DEC, 0x92B3, 0x92B3, 0x179E, 0x92B6, 0x92B6, 0x0F65, - 0x92B7, 0x92B7, 0x159E, 0x92B9, 0x92B9, 0x15F2, 0x92CC, 0x92CC, 0x1A60, - 0x92CF, 0x92CF, 0x1E59, 0x92D2, 0x92D2, 0x13F3, 0x92E4, 0x92E4, 0x1518, - 0x92EA, 0x92EA, 0x1D90, 0x92F8, 0x92F8, 0x0E10, 0x92FC, 0x92FC, 0x0DE5, - 0x9304, 0x9304, 0x11B4, 0x9310, 0x9310, 0x1C72, 0x9318, 0x9318, 0x1C73, - 0x931A, 0x931A, 0x19BE, 0x931E, 0x931E, 0x1620, 0x931F, 0x931F, 0x1089, - 0x9320, 0x9320, 0x1A61, 0x9321, 0x9321, 0x1016, 0x9322, 0x9322, 0x1A16, - 0x9324, 0x9324, 0x1017, 0x9326, 0x9326, 0x0FD2, 0x9328, 0x9328, 0x12CB, - 0x932B, 0x932B, 0x1529, 0x932E, 0x932E, 0x0EB2, 0x932F, 0x932F, 0x1B93, - 0x9348, 0x9348, 0x178B, 0x934A, 0x934A, 0x117C, 0x934B, 0x934B, 0x0EE5, - 0x934D, 0x934D, 0x10D2, 0x9354, 0x9354, 0x16AB, 0x935B, 0x935B, 0x1073, - 0x936E, 0x936E, 0x18D2, 0x9375, 0x9375, 0x0E1B, 0x937C, 0x937C, 0x1CCF, - 0x937E, 0x937E, 0x1AC4, 0x938C, 0x938C, 0x0E4B, 0x9394, 0x9394, 0x1833, - 0x9396, 0x9396, 0x15BC, 0x939A, 0x939A, 0x1C74, 0x93A3, 0x93A3, 0x1E6D, - 0x93A7, 0x93A7, 0x0DF9, 0x93AC, 0x93AC, 0x1E9E, 0x93AD, 0x93AD, 0x1B63, - 0x93B0, 0x93B0, 0x1943, 0x93C3, 0x93C3, 0x1AAF, 0x93D1, 0x93D1, 0x19F2, - 0x93DE, 0x93DE, 0x1834, 0x93E1, 0x93E1, 0x0E74, 0x93E4, 0x93E4, 0x11DF, - 0x93F6, 0x93F6, 0x1B7C, 0x9404, 0x9404, 0x1F10, 0x9418, 0x9418, 0x1AC5, - 0x9425, 0x9425, 0x1547, 0x942B, 0x942B, 0x1A17, 0x9435, 0x9435, 0x1C08, - 0x9438, 0x9438, 0x1CEF, 0x9444, 0x9444, 0x1AF2, 0x9451, 0x9452, 0x0DC7, - 0x945B, 0x945B, 0x0F0B, 0x947D, 0x947D, 0x1BA2, 0x947F, 0x947F, 0x1B94, - 0x9577, 0x9577, 0x19A8, 0x9580, 0x9580, 0x12EE, 0x9583, 0x9583, 0x155D, - 0x9589, 0x9589, 0x1D76, 0x958B, 0x958B, 0x0DFA, 0x958F, 0x958F, 0x18DF, - 0x9591, 0x9592, 0x1DDD, 0x9593, 0x9593, 0x0DAB, 0x9594, 0x9594, 0x1312, - 0x9598, 0x9598, 0x0DCF, 0x95A3, 0x95A3, 0x0D93, 0x95A4, 0x95A4, 0x1DF3, - 0x95A5, 0x95A5, 0x1390, 0x95A8, 0x95A8, 0x0FA8, 0x95AD, 0x95AD, 0x1165, - 0x95B1, 0x95B1, 0x1764, 0x95BB, 0x95BB, 0x176C, 0x95BC, 0x95BC, 0x16BC, - 0x95C7, 0x95C7, 0x16C4, 0x95CA, 0x95CA, 0x1EDF, 0x95D4, 0x95D4, 0x1DF4, - 0x95D5, 0x95D5, 0x0F8F, 0x95D6, 0x95D6, 0x1D31, 0x95DC, 0x95DC, 0x0EF9, - 0x95E1, 0x95E1, 0x1BFC, 0x95E2, 0x95E2, 0x13A5, 0x961C, 0x961C, 0x141B, - 0x9621, 0x9621, 0x1BFD, 0x962A, 0x962A, 0x1D4A, 0x962E, 0x962E, 0x17EB, - 0x9632, 0x9632, 0x1367, 0x963B, 0x963B, 0x1AA9, 0x963F, 0x963F, 0x169C, - 0x9640, 0x9640, 0x1CDF, 0x9642, 0x9642, 0x1DB3, 0x9644, 0x9644, 0x141C, - 0x964B, 0x964B, 0x11E0, 0x964C, 0x964C, 0x1274, 0x964D, 0x964D, 0x0DE6, - 0x9650, 0x9650, 0x1DDF, 0x965B, 0x965B, 0x1D77, 0x965C, 0x965C, 0x1DF5, - 0x965D, 0x965D, 0x155E, 0x965E, 0x965E, 0x163B, 0x965F, 0x965F, 0x1BEA, - 0x9662, 0x9662, 0x1886, 0x9663, 0x9663, 0x1B64, 0x9664, 0x9664, 0x1A79, - 0x966A, 0x966A, 0x137B, 0x9670, 0x9670, 0x18F0, 0x9673, 0x9673, 0x1B65, - 0x9675, 0x9675, 0x1204, 0x9676, 0x9676, 0x10D3, 0x9677, 0x9677, 0x1DED, - 0x9678, 0x9678, 0x11F1, 0x967D, 0x967D, 0x170C, 0x9685, 0x9685, 0x1852, - 0x9686, 0x9686, 0x11FB, 0x968A, 0x968A, 0x10A8, 0x968B, 0x968B, 0x15F3, - 0x968D, 0x968D, 0x1EF6, 0x968E, 0x968E, 0x0E8F, 0x9694, 0x9694, 0x0E34, - 0x9695, 0x9695, 0x1867, 0x9698, 0x9698, 0x16D9, 0x9699, 0x9699, 0x0FB6, - 0x969B, 0x969B, 0x1A7A, 0x969C, 0x969C, 0x19A9, 0x96A3, 0x96A3, 0x1224, - 0x96A7, 0x96A8, 0x15F4, 0x96AA, 0x96AA, 0x1E30, 0x96B1, 0x96B1, 0x18EB, - 0x96B7, 0x96B7, 0x119E, 0x96BB, 0x96BB, 0x1BEB, 0x96C0, 0x96C0, 0x1978, - 0x96C1, 0x96C1, 0x16B5, 0x96C4, 0x96C4, 0x186E, 0x96C5, 0x96C5, 0x169D, - 0x96C6, 0x96C6, 0x1B7D, 0x96C7, 0x96C7, 0x0EB3, 0x96C9, 0x96C9, 0x1CBD, - 0x96CB, 0x96CB, 0x1B07, 0x96CC, 0x96CC, 0x196C, 0x96CD, 0x96CD, 0x17D1, - 0x96CE, 0x96CE, 0x19D9, 0x96D5, 0x96D5, 0x1AAA, 0x96D6, 0x96D6, 0x15F6, - 0x96D9, 0x96D9, 0x168D, 0x96DB, 0x96DB, 0x1C75, 0x96DC, 0x96DC, 0x1985, - 0x96E2, 0x96E2, 0x121C, 0x96E3, 0x96E3, 0x102E, 0x96E8, 0x96E9, 0x1853, - 0x96EA, 0x96EA, 0x1555, 0x96EF, 0x96EF, 0x12EF, 0x96F0, 0x96F0, 0x1432, - 0x96F2, 0x96F2, 0x1868, 0x96F6, 0x96F6, 0x1196, 0x96F7, 0x96F7, 0x11C6, - 0x96F9, 0x96F9, 0x1327, 0x96FB, 0x96FB, 0x1A18, 0x9700, 0x9700, 0x15F7, - 0x9706, 0x9706, 0x1A62, 0x9707, 0x9707, 0x1B66, 0x9711, 0x9711, 0x1A2A, - 0x9713, 0x9713, 0x179F, 0x9716, 0x9716, 0x122B, 0x9719, 0x9719, 0x178C, - 0x971C, 0x971C, 0x14F1, 0x971E, 0x971E, 0x1DCC, 0x9727, 0x9727, 0x12E0, - 0x9730, 0x9730, 0x14C2, 0x9732, 0x9732, 0x11AC, 0x9739, 0x9739, 0x13A6, - 0x973D, 0x973D, 0x1A7B, 0x9742, 0x9742, 0x1170, 0x9744, 0x9744, 0x16DA, - 0x9748, 0x9748, 0x1197, 0x9751, 0x9751, 0x1C23, 0x9756, 0x9756, 0x1A63, - 0x975C, 0x975C, 0x1A64, 0x975E, 0x975E, 0x1464, 0x9761, 0x9761, 0x1304, - 0x9762, 0x9762, 0x1288, 0x9769, 0x9769, 0x1E35, 0x976D, 0x976D, 0x193A, - 0x9774, 0x9774, 0x1EC4, 0x9777, 0x9777, 0x193B, 0x977A, 0x977A, 0x1257, - 0x978B, 0x978B, 0x1E77, 0x978D, 0x978D, 0x16B6, 0x978F, 0x978F, 0x0ED9, - 0x97A0, 0x97A0, 0x0F6E, 0x97A8, 0x97A8, 0x0DB5, 0x97AB, 0x97AB, 0x0F6F, - 0x97AD, 0x97AD, 0x1D66, 0x97C6, 0x97C6, 0x1BFE, 0x97CB, 0x97CB, 0x18A3, - 0x97D3, 0x97D3, 0x1DE0, 0x97DC, 0x97DC, 0x10D4, 0x97F3, 0x97F3, 0x18F1, - 0x97F6, 0x97F6, 0x159F, 0x97FB, 0x97FB, 0x1869, 0x97FF, 0x97FF, 0x1E23, - 0x9800, 0x9800, 0x1E9F, 0x9801, 0x9801, 0x1E4D, 0x9802, 0x9802, 0x1A65, - 0x9803, 0x9803, 0x0E75, 0x9805, 0x9805, 0x1E04, 0x9806, 0x9806, 0x1621, - 0x9808, 0x9808, 0x15F8, 0x980A, 0x980A, 0x185D, 0x980C, 0x980C, 0x15B8, - 0x9810, 0x9810, 0x17A0, 0x9811, 0x9811, 0x17EC, 0x9812, 0x9812, 0x1340, - 0x9813, 0x9813, 0x10E8, 0x9817, 0x9817, 0x1D41, 0x9818, 0x9818, 0x1198, - 0x982D, 0x982D, 0x1105, 0x9830, 0x9830, 0x1E5A, 0x9838, 0x9838, 0x0E76, - 0x9839, 0x9839, 0x1D28, 0x983B, 0x983B, 0x1474, 0x9846, 0x9846, 0x0EE6, - 0x984C, 0x984C, 0x1A7C, 0x984D, 0x984D, 0x16E1, 0x984E, 0x984E, 0x16AC, - 0x9854, 0x9854, 0x16B7, 0x9858, 0x9858, 0x1887, 0x985A, 0x985A, 0x1A19, - 0x985E, 0x985E, 0x11EE, 0x9865, 0x9865, 0x1EA0, 0x9867, 0x9867, 0x0EB4, - 0x986B, 0x986B, 0x1A1A, 0x986F, 0x986F, 0x1E49, 0x98A8, 0x98A8, 0x1DAB, - 0x98AF, 0x98AF, 0x14D2, 0x98B1, 0x98B1, 0x1D14, 0x98C4, 0x98C4, 0x1DA4, - 0x98C7, 0x98C7, 0x1DA3, 0x98DB, 0x98DB, 0x1465, 0x98DC, 0x98DC, 0x138C, - 0x98DF, 0x98DF, 0x1665, 0x98E1, 0x98E1, 0x15AF, 0x98E2, 0x98E2, 0x1018, - 0x98ED, 0x98ED, 0x1CC2, 0x98EE, 0x98EE, 0x18F2, 0x98EF, 0x98EF, 0x1341, - 0x98F4, 0x98F4, 0x1923, 0x98FC, 0x98FC, 0x14B2, 0x98FD, 0x98FD, 0x1D91, - 0x98FE, 0x98FE, 0x1666, 0x9903, 0x9903, 0x0F32, 0x9909, 0x9909, 0x1E24, - 0x990A, 0x990A, 0x170D, 0x990C, 0x990C, 0x1924, 0x9910, 0x9910, 0x1BA3, - 0x9913, 0x9913, 0x169E, 0x9918, 0x9918, 0x173A, 0x991E, 0x991E, 0x1A1B, - 0x9920, 0x9920, 0x13C0, 0x9928, 0x9928, 0x0EFA, 0x9945, 0x9945, 0x124F, - 0x9949, 0x9949, 0x0FC5, 0x994B, 0x994B, 0x0F95, 0x994C, 0x994C, 0x1BA4, - 0x994D, 0x994D, 0x1548, 0x9951, 0x9951, 0x1019, 0x9952, 0x9952, 0x1817, - 0x9954, 0x9954, 0x17D2, 0x9957, 0x9957, 0x1E25, 0x9996, 0x9996, 0x15F9, - 0x9999, 0x9999, 0x1E26, 0x999D, 0x999D, 0x1DBD, 0x99A5, 0x99A5, 0x13E1, - 0x99A8, 0x99A8, 0x1E6E, 0x99AC, 0x99AC, 0x1235, 0x99AD, 0x99AD, 0x1715, - 0x99AE, 0x99AE, 0x1DAC, 0x99B1, 0x99B1, 0x1CE0, 0x99B3, 0x99B3, 0x1CBE, - 0x99B4, 0x99B4, 0x1622, 0x99B9, 0x99B9, 0x1944, 0x99C1, 0x99C1, 0x1328, - 0x99D0, 0x99D0, 0x1AF3, 0x99D1, 0x99D1, 0x104E, 0x99D2, 0x99D2, 0x0F66, - 0x99D5, 0x99D5, 0x0D88, 0x99D9, 0x99D9, 0x141D, 0x99DD, 0x99DD, 0x1CE1, - 0x99DF, 0x99DF, 0x14B3, 0x99ED, 0x99ED, 0x1E15, 0x99F1, 0x99F1, 0x1124, - 0x99FF, 0x99FF, 0x1B08, 0x9A01, 0x9A01, 0x1478, 0x9A08, 0x9A08, 0x13C1, - 0x9A0E, 0x9A0F, 0x101A, 0x9A19, 0x9A19, 0x1D67, 0x9A2B, 0x9A2B, 0x0E1C, - 0x9A30, 0x9A30, 0x1115, 0x9A36, 0x9A36, 0x1C76, 0x9A37, 0x9A37, 0x15A0, - 0x9A40, 0x9A40, 0x1275, 0x9A43, 0x9A43, 0x1DA5, 0x9A45, 0x9A45, 0x0F67, - 0x9A4D, 0x9A4D, 0x1F1D, 0x9A55, 0x9A55, 0x0F33, 0x9A57, 0x9A57, 0x1E31, - 0x9A5A, 0x9A5A, 0x0E77, 0x9A5B, 0x9A5B, 0x1743, 0x9A5F, 0x9A5F, 0x1CA0, - 0x9A62, 0x9A62, 0x1166, 0x9A65, 0x9A65, 0x101C, 0x9A69, 0x9A69, 0x1ED9, - 0x9A6A, 0x9A6A, 0x1167, 0x9AA8, 0x9AA8, 0x0EC9, 0x9AB8, 0x9AB8, 0x1E16, - 0x9AD3, 0x9AD3, 0x15FA, 0x9AD4, 0x9AD4, 0x1C2D, 0x9AD8, 0x9AD8, 0x0EB5, - 0x9AE5, 0x9AE5, 0x176D, 0x9AEE, 0x9AEE, 0x134B, 0x9B1A, 0x9B1A, 0x15FB, - 0x9B27, 0x9B27, 0x11D2, 0x9B2A, 0x9B2A, 0x1D2E, 0x9B31, 0x9B31, 0x186B, - 0x9B3C, 0x9B3C, 0x0F99, 0x9B41, 0x9B41, 0x0F17, 0x9B42, 0x9B42, 0x1EA9, - 0x9B43, 0x9B43, 0x134C, 0x9B44, 0x9B44, 0x1383, 0x9B45, 0x9B45, 0x1271, - 0x9B4F, 0x9B4F, 0x18A4, 0x9B54, 0x9B54, 0x1236, 0x9B5A, 0x9B5A, 0x1716, - 0x9B6F, 0x9B6F, 0x11AD, 0x9B8E, 0x9B8E, 0x1A2B, 0x9B91, 0x9B91, 0x1D92, - 0x9B9F, 0x9B9F, 0x16B8, 0x9BAB, 0x9BAB, 0x0F34, 0x9BAE, 0x9BAE, 0x1549, - 0x9BC9, 0x9BC9, 0x121D, 0x9BD6, 0x9BD6, 0x1C24, 0x9BE4, 0x9BE4, 0x0EC7, - 0x9BE8, 0x9BE8, 0x0E78, 0x9C0D, 0x9C0D, 0x1C77, 0x9C10, 0x9C10, 0x16AD, - 0x9C12, 0x9C12, 0x13E2, 0x9C15, 0x9C15, 0x1DCD, 0x9C25, 0x9C25, 0x1EDA, - 0x9C32, 0x9C32, 0x17BC, 0x9C3B, 0x9C3B, 0x1250, 0x9C47, 0x9C47, 0x0DE7, - 0x9C49, 0x9C49, 0x13AF, 0x9C57, 0x9C57, 0x1225, 0x9CE5, 0x9CE5, 0x1AAB, - 0x9CE7, 0x9CE7, 0x141E, 0x9CE9, 0x9CE9, 0x0F68, 0x9CF3, 0x9CF3, 0x13F4, - 0x9CF4, 0x9CF4, 0x129A, 0x9CF6, 0x9CF6, 0x1760, 0x9D09, 0x9D09, 0x169F, - 0x9D1B, 0x9D1B, 0x1888, 0x9D26, 0x9D26, 0x16CF, 0x9D28, 0x9D28, 0x16C8, - 0x9D3B, 0x9D3B, 0x1EB6, 0x9D51, 0x9D51, 0x0E3F, 0x9D5D, 0x9D5D, 0x16A0, - 0x9D60, 0x9D60, 0x0EBD, 0x9D61, 0x9D61, 0x12E1, 0x9D6C, 0x9D6C, 0x143C, - 0x9D72, 0x9D72, 0x1979, 0x9DA9, 0x9DA9, 0x12BA, 0x9DAF, 0x9DAF, 0x16E4, - 0x9DB4, 0x9DB4, 0x1DD2, 0x9DC4, 0x9DC4, 0x0E90, 0x9DD7, 0x9DD7, 0x0F69, - 0x9DF2, 0x9DF2, 0x1CA1, 0x9DF8, 0x9DF8, 0x1F4C, 0x9DF9, 0x9DF9, 0x18F9, - 0x9DFA, 0x9DFA, 0x11AE, 0x9E1A, 0x9E1A, 0x16E5, 0x9E1E, 0x9E1E, 0x112C, - 0x9E75, 0x9E75, 0x11AF, 0x9E79, 0x9E79, 0x1DEE, 0x9E7D, 0x9E7D, 0x176E, - 0x9E7F, 0x9E7F, 0x11B5, 0x9E92, 0x9E92, 0x101D, 0x9E93, 0x9E93, 0x11B6, - 0x9E97, 0x9E97, 0x1168, 0x9E9D, 0x9E9D, 0x14B4, 0x9E9F, 0x9E9F, 0x1226, - 0x9EA5, 0x9EA5, 0x1276, 0x9EB4, 0x9EB4, 0x0F70, 0x9EB5, 0x9EB5, 0x1289, - 0x9EBB, 0x9EBB, 0x1237, 0x9EBE, 0x9EBE, 0x1F44, 0x9EC3, 0x9EC3, 0x1EF7, - 0x9ECD, 0x9ECD, 0x1519, 0x9ECE, 0x9ECE, 0x1169, 0x9ED1, 0x9ED1, 0x1F52, - 0x9ED4, 0x9ED4, 0x0E27, 0x9ED8, 0x9ED8, 0x12E3, 0x9EDB, 0x9EDB, 0x10A9, - 0x9EDC, 0x9EDC, 0x1C89, 0x9EDE, 0x9EDE, 0x1A2C, 0x9EE8, 0x9EE8, 0x1099, - 0x9EF4, 0x9EF4, 0x1305, 0x9F07, 0x9F07, 0x17BD, 0x9F08, 0x9F08, 0x13B0, - 0x9F0E, 0x9F0E, 0x1A66, 0x9F13, 0x9F13, 0x0EB6, 0x9F20, 0x9F20, 0x151A, - 0x9F3B, 0x9F3B, 0x1466, 0x9F4A, 0x9F4A, 0x1A7D, 0x9F4B, 0x9F4B, 0x19B9, - 0x9F4E, 0x9F4E, 0x19BA, 0x9F52, 0x9F52, 0x1CBF, 0x9F5F, 0x9F5F, 0x19DA, - 0x9F61, 0x9F61, 0x1199, 0x9F67, 0x9F67, 0x1556, 0x9F6A, 0x9F6A, 0x1B95, - 0x9F6C, 0x9F6C, 0x1717, 0x9F77, 0x9F77, 0x16AE, 0x9F8D, 0x9F8D, 0x11D3, - 0x9F90, 0x9F90, 0x1368, 0x9F95, 0x9F95, 0x0DC9, 0x9F9C, 0x9F9C, 0x0F6A, - 0xAC00, 0xAC01, 0x043E, 0xAC02, 0xAC03, 0x2475, 0xAC04, 0xAC04, 0x0440, - 0xAC05, 0xAC06, 0x2477, 0xAC07, 0xAC0A, 0x0441, 0xAC0B, 0xAC0F, 0x2479, - 0xAC10, 0xAC17, 0x0445, 0xAC18, 0xAC18, 0x247E, 0xAC19, 0xAC1D, 0x044D, - 0xAC1E, 0xAC1F, 0x247F, 0xAC20, 0xAC20, 0x0452, 0xAC21, 0xAC23, 0x2481, - 0xAC24, 0xAC24, 0x0453, 0xAC25, 0xAC2B, 0x2484, 0xAC2C, 0xAC2D, 0x0454, - 0xAC2E, 0xAC2E, 0x248B, 0xAC2F, 0xAC31, 0x0456, 0xAC32, 0xAC37, 0x248C, - 0xAC38, 0xAC39, 0x0459, 0xAC3A, 0xAC3B, 0x2492, 0xAC3C, 0xAC3C, 0x045B, - 0xAC3D, 0xAC3F, 0x2494, 0xAC40, 0xAC40, 0x045C, 0xAC41, 0xAC4A, 0x2497, - 0xAC4B, 0xAC4B, 0x045D, 0xAC4C, 0xAC4C, 0x24A1, 0xAC4D, 0xAC4D, 0x045E, - 0xAC4E, 0xAC53, 0x24A2, 0xAC54, 0xAC54, 0x045F, 0xAC55, 0xAC57, 0x24A8, - 0xAC58, 0xAC58, 0x0460, 0xAC59, 0xAC5B, 0x24AB, 0xAC5C, 0xAC5C, 0x0461, - 0xAC5D, 0xAC6F, 0x24AE, 0xAC70, 0xAC71, 0x0462, 0xAC72, 0xAC73, 0x24C1, - 0xAC74, 0xAC74, 0x0464, 0xAC75, 0xAC76, 0x24C3, 0xAC77, 0xAC78, 0x0465, - 0xAC79, 0xAC79, 0x24C5, 0xAC7A, 0xAC7A, 0x0467, 0xAC7B, 0xAC7F, 0x24C6, - 0xAC80, 0xAC81, 0x0468, 0xAC82, 0xAC82, 0x24CB, 0xAC83, 0xAC86, 0x046A, - 0xAC87, 0xAC88, 0x24CC, 0xAC89, 0xAC8C, 0x046E, 0xAC8D, 0xAC8F, 0x24CE, - 0xAC90, 0xAC90, 0x0472, 0xAC91, 0xAC93, 0x24D1, 0xAC94, 0xAC94, 0x0473, - 0xAC95, 0xAC9B, 0x24D4, 0xAC9C, 0xAC9D, 0x0474, 0xAC9E, 0xAC9E, 0x24DB, - 0xAC9F, 0xACA1, 0x0476, 0xACA2, 0xACA7, 0x24DC, 0xACA8, 0xACAA, 0x0479, - 0xACAB, 0xACAB, 0x24E2, 0xACAC, 0xACAC, 0x047C, 0xACAD, 0xACAE, 0x24E3, - 0xACAF, 0xACB0, 0x047D, 0xACB1, 0xACB7, 0x24E5, 0xACB8, 0xACB9, 0x047F, - 0xACBA, 0xACBA, 0x24EC, 0xACBB, 0xACBD, 0x0481, 0xACBE, 0xACC0, 0x24ED, - 0xACC1, 0xACC1, 0x0484, 0xACC2, 0xACC3, 0x24F0, 0xACC4, 0xACC4, 0x0485, - 0xACC5, 0xACC7, 0x24F2, 0xACC8, 0xACC8, 0x0486, 0xACC9, 0xACCB, 0x24F5, - 0xACCC, 0xACCC, 0x0487, 0xACCD, 0xACD4, 0x24F8, 0xACD5, 0xACD5, 0x0488, - 0xACD6, 0xACD6, 0x2500, 0xACD7, 0xACD7, 0x0489, 0xACD8, 0xACDF, 0x2501, - 0xACE0, 0xACE1, 0x048A, 0xACE2, 0xACE3, 0x2509, 0xACE4, 0xACE4, 0x048C, - 0xACE5, 0xACE6, 0x250B, 0xACE7, 0xACE8, 0x048D, 0xACE9, 0xACE9, 0x250D, - 0xACEA, 0xACEA, 0x048F, 0xACEB, 0xACEB, 0x250E, 0xACEC, 0xACEC, 0x0490, - 0xACED, 0xACEE, 0x250F, 0xACEF, 0xACF1, 0x0491, 0xACF2, 0xACF2, 0x2511, - 0xACF3, 0xACF3, 0x0494, 0xACF4, 0xACF4, 0x2512, 0xACF5, 0xACF6, 0x0495, - 0xACF7, 0xACFB, 0x2513, 0xACFC, 0xACFD, 0x0497, 0xACFE, 0xACFF, 0x2518, - 0xAD00, 0xAD00, 0x0499, 0xAD01, 0xAD03, 0x251A, 0xAD04, 0xAD04, 0x049A, - 0xAD05, 0xAD05, 0x251D, 0xAD06, 0xAD06, 0x049B, 0xAD07, 0xAD0B, 0x251E, - 0xAD0C, 0xAD0D, 0x049C, 0xAD0E, 0xAD0E, 0x2523, 0xAD0F, 0xAD0F, 0x049E, - 0xAD10, 0xAD10, 0x2524, 0xAD11, 0xAD11, 0x049F, 0xAD12, 0xAD17, 0x2525, - 0xAD18, 0xAD18, 0x04A0, 0xAD19, 0xAD1B, 0x252B, 0xAD1C, 0xAD1C, 0x04A1, - 0xAD1D, 0xAD1F, 0x252E, 0xAD20, 0xAD20, 0x04A2, 0xAD21, 0xAD28, 0x2531, - 0xAD29, 0xAD29, 0x04A3, 0xAD2A, 0xAD2B, 0x2539, 0xAD2C, 0xAD2D, 0x04A4, - 0xAD2E, 0xAD33, 0x253B, 0xAD34, 0xAD35, 0x04A6, 0xAD36, 0xAD37, 0x2541, - 0xAD38, 0xAD38, 0x04A8, 0xAD39, 0xAD3B, 0x2543, 0xAD3C, 0xAD3C, 0x04A9, - 0xAD3D, 0xAD43, 0x2546, 0xAD44, 0xAD45, 0x04AA, 0xAD46, 0xAD46, 0x254D, - 0xAD47, 0xAD47, 0x04AC, 0xAD48, 0xAD48, 0x254E, 0xAD49, 0xAD49, 0x04AD, - 0xAD4A, 0xAD4F, 0x254F, 0xAD50, 0xAD50, 0x04AE, 0xAD51, 0xAD53, 0x2555, - 0xAD54, 0xAD54, 0x04AF, 0xAD55, 0xAD57, 0x2558, 0xAD58, 0xAD58, 0x04B0, - 0xAD59, 0xAD60, 0x255B, 0xAD61, 0xAD61, 0x04B1, 0xAD62, 0xAD62, 0x2563, - 0xAD63, 0xAD63, 0x04B2, 0xAD64, 0xAD6B, 0x2564, 0xAD6C, 0xAD6D, 0x04B3, - 0xAD6E, 0xAD6F, 0x256C, 0xAD70, 0xAD70, 0x04B5, 0xAD71, 0xAD72, 0x256E, - 0xAD73, 0xAD76, 0x04B6, 0xAD77, 0xAD7A, 0x2570, 0xAD7B, 0xAD7D, 0x04BA, - 0xAD7E, 0xAD7E, 0x2574, 0xAD7F, 0xAD7F, 0x04BD, 0xAD80, 0xAD80, 0x2575, - 0xAD81, 0xAD82, 0x04BE, 0xAD83, 0xAD87, 0x2576, 0xAD88, 0xAD89, 0x04C0, - 0xAD8A, 0xAD8B, 0x257B, 0xAD8C, 0xAD8C, 0x04C2, 0xAD8D, 0xAD8F, 0x257D, - 0xAD90, 0xAD90, 0x04C3, 0xAD91, 0xAD9B, 0x2580, 0xAD9C, 0xAD9D, 0x04C4, - 0xAD9E, 0xADA3, 0x258B, 0xADA4, 0xADA4, 0x04C6, 0xADA5, 0xADB6, 0x2591, - 0xADB7, 0xADB7, 0x04C7, 0xADB8, 0xADBF, 0x25A3, 0xADC0, 0xADC1, 0x04C8, - 0xADC2, 0xADC3, 0x25AB, 0xADC4, 0xADC4, 0x04CA, 0xADC5, 0xADC7, 0x25AD, - 0xADC8, 0xADC8, 0x04CB, 0xADC9, 0xADCF, 0x25B0, 0xADD0, 0xADD1, 0x04CC, - 0xADD2, 0xADD2, 0x25B7, 0xADD3, 0xADD3, 0x04CE, 0xADD4, 0xADDB, 0x25B8, - 0xADDC, 0xADDC, 0x04CF, 0xADDD, 0xADDF, 0x25C0, 0xADE0, 0xADE0, 0x04D0, - 0xADE1, 0xADE3, 0x25C3, 0xADE4, 0xADE4, 0x04D1, 0xADE5, 0xADF7, 0x25C6, - 0xADF8, 0xADF9, 0x04D2, 0xADFA, 0xADFB, 0x25D9, 0xADFC, 0xADFC, 0x04D4, - 0xADFD, 0xADFE, 0x25DB, 0xADFF, 0xADFF, 0x04D5, 0xAE00, 0xAE01, 0x04D6, - 0xAE02, 0xAE07, 0x25DD, 0xAE08, 0xAE09, 0x04D8, 0xAE0A, 0xAE0A, 0x25E3, - 0xAE0B, 0xAE0B, 0x04DA, 0xAE0C, 0xAE0C, 0x25E4, 0xAE0D, 0xAE0D, 0x04DB, - 0xAE0E, 0xAE13, 0x25E5, 0xAE14, 0xAE14, 0x04DC, 0xAE15, 0xAE2F, 0x25EB, - 0xAE30, 0xAE31, 0x04DD, 0xAE32, 0xAE33, 0x2606, 0xAE34, 0xAE34, 0x04DF, - 0xAE35, 0xAE36, 0x2608, 0xAE37, 0xAE38, 0x04E0, 0xAE39, 0xAE39, 0x260A, - 0xAE3A, 0xAE3A, 0x04E2, 0xAE3B, 0xAE3F, 0x260B, 0xAE40, 0xAE41, 0x04E3, - 0xAE42, 0xAE42, 0x2610, 0xAE43, 0xAE43, 0x04E5, 0xAE44, 0xAE44, 0x2611, - 0xAE45, 0xAE46, 0x04E6, 0xAE47, 0xAE49, 0x2612, 0xAE4A, 0xAE4A, 0x04E8, - 0xAE4B, 0xAE4B, 0x2615, 0xAE4C, 0xAE4E, 0x04E9, 0xAE4F, 0xAE4F, 0x2616, - 0xAE50, 0xAE50, 0x04EC, 0xAE51, 0xAE53, 0x2617, 0xAE54, 0xAE54, 0x04ED, - 0xAE55, 0xAE55, 0x261A, 0xAE56, 0xAE56, 0x04EE, 0xAE57, 0xAE5B, 0x261B, - 0xAE5C, 0xAE5D, 0x04EF, 0xAE5E, 0xAE5E, 0x2620, 0xAE5F, 0xAE61, 0x04F1, - 0xAE62, 0xAE64, 0x2621, 0xAE65, 0xAE65, 0x04F4, 0xAE66, 0xAE67, 0x2624, - 0xAE68, 0xAE69, 0x04F5, 0xAE6A, 0xAE6B, 0x2626, 0xAE6C, 0xAE6C, 0x04F7, - 0xAE6D, 0xAE6F, 0x2628, 0xAE70, 0xAE70, 0x04F8, 0xAE71, 0xAE77, 0x262B, - 0xAE78, 0xAE79, 0x04F9, 0xAE7A, 0xAE7A, 0x2632, 0xAE7B, 0xAE7D, 0x04FB, - 0xAE7E, 0xAE83, 0x2633, 0xAE84, 0xAE85, 0x04FE, 0xAE86, 0xAE8B, 0x2639, - 0xAE8C, 0xAE8C, 0x0500, 0xAE8D, 0xAEBB, 0x263F, 0xAEBC, 0xAEBE, 0x0501, - 0xAEBF, 0xAEBF, 0x266E, 0xAEC0, 0xAEC0, 0x0504, 0xAEC1, 0xAEC3, 0x266F, - 0xAEC4, 0xAEC4, 0x0505, 0xAEC5, 0xAECB, 0x2672, 0xAECC, 0xAECD, 0x0506, - 0xAECE, 0xAECE, 0x2679, 0xAECF, 0xAED1, 0x0508, 0xAED2, 0xAED7, 0x267A, - 0xAED8, 0xAED9, 0x050B, 0xAEDA, 0xAEDB, 0x2680, 0xAEDC, 0xAEDC, 0x050D, - 0xAEDD, 0xAEE7, 0x2682, 0xAEE8, 0xAEE8, 0x050E, 0xAEE9, 0xAEEA, 0x268D, - 0xAEEB, 0xAEEB, 0x050F, 0xAEEC, 0xAEEC, 0x268F, 0xAEED, 0xAEED, 0x0510, - 0xAEEE, 0xAEF3, 0x2690, 0xAEF4, 0xAEF4, 0x0511, 0xAEF5, 0xAEF7, 0x2696, - 0xAEF8, 0xAEF8, 0x0512, 0xAEF9, 0xAEFB, 0x2699, 0xAEFC, 0xAEFC, 0x0513, - 0xAEFD, 0xAEFF, 0x269C, 0xAF00, 0xAF06, 0x269F, 0xAF07, 0xAF08, 0x0514, - 0xAF09, 0xAF0C, 0x26A6, 0xAF0D, 0xAF0D, 0x0516, 0xAF0E, 0xAF0F, 0x26AA, - 0xAF10, 0xAF10, 0x0517, 0xAF11, 0xAF2B, 0x26AC, 0xAF2C, 0xAF2D, 0x0518, - 0xAF2E, 0xAF2F, 0x26C7, 0xAF30, 0xAF30, 0x051A, 0xAF31, 0xAF31, 0x26C9, - 0xAF32, 0xAF32, 0x051B, 0xAF33, 0xAF33, 0x26CA, 0xAF34, 0xAF34, 0x051C, - 0xAF35, 0xAF3B, 0x26CB, 0xAF3C, 0xAF3D, 0x051D, 0xAF3E, 0xAF3E, 0x26D2, - 0xAF3F, 0xAF3F, 0x051F, 0xAF40, 0xAF40, 0x26D3, 0xAF41, 0xAF43, 0x0520, - 0xAF44, 0xAF47, 0x26D4, 0xAF48, 0xAF49, 0x0523, 0xAF4A, 0xAF4F, 0x26D8, - 0xAF50, 0xAF50, 0x0525, 0xAF51, 0xAF5B, 0x26DE, 0xAF5C, 0xAF5D, 0x0526, - 0xAF5E, 0xAF63, 0x26E9, 0xAF64, 0xAF65, 0x0528, 0xAF66, 0xAF78, 0x26EF, - 0xAF79, 0xAF79, 0x052A, 0xAF7A, 0xAF7F, 0x2702, 0xAF80, 0xAF80, 0x052B, - 0xAF81, 0xAF83, 0x2708, 0xAF84, 0xAF84, 0x052C, 0xAF85, 0xAF87, 0x270B, - 0xAF88, 0xAF88, 0x052D, 0xAF89, 0xAF8F, 0x270E, 0xAF90, 0xAF91, 0x052E, - 0xAF92, 0xAF94, 0x2715, 0xAF95, 0xAF95, 0x0530, 0xAF96, 0xAF9B, 0x2718, - 0xAF9C, 0xAF9C, 0x0531, 0xAF9D, 0xAFB7, 0x271E, 0xAFB8, 0xAFB9, 0x0532, - 0xAFBA, 0xAFBB, 0x2739, 0xAFBC, 0xAFBC, 0x0534, 0xAFBD, 0xAFBF, 0x273B, - 0xAFC0, 0xAFC0, 0x0535, 0xAFC1, 0xAFC6, 0x273E, 0xAFC7, 0xAFC9, 0x0536, - 0xAFCA, 0xAFCA, 0x2744, 0xAFCB, 0xAFCB, 0x0539, 0xAFCC, 0xAFCC, 0x2745, - 0xAFCD, 0xAFCE, 0x053A, 0xAFCF, 0xAFD3, 0x2746, 0xAFD4, 0xAFD4, 0x053C, - 0xAFD5, 0xAFDB, 0x274B, 0xAFDC, 0xAFDC, 0x053D, 0xAFDD, 0xAFE7, 0x2752, - 0xAFE8, 0xAFE9, 0x053E, 0xAFEA, 0xAFEF, 0x275D, 0xAFF0, 0xAFF1, 0x0540, - 0xAFF2, 0xAFF3, 0x2763, 0xAFF4, 0xAFF4, 0x0542, 0xAFF5, 0xAFF7, 0x2765, - 0xAFF8, 0xAFF8, 0x0543, 0xAFF9, 0xAFFF, 0x2768, 0xB000, 0xB001, 0x0544, - 0xB002, 0xB003, 0x276F, 0xB004, 0xB004, 0x0546, 0xB005, 0xB00B, 0x2771, - 0xB00C, 0xB00C, 0x0547, 0xB00D, 0xB00F, 0x2778, 0xB010, 0xB010, 0x0548, - 0xB011, 0xB013, 0x277B, 0xB014, 0xB014, 0x0549, 0xB015, 0xB01B, 0x277E, - 0xB01C, 0xB01D, 0x054A, 0xB01E, 0xB027, 0x2785, 0xB028, 0xB028, 0x054C, - 0xB029, 0xB043, 0x278F, 0xB044, 0xB045, 0x054D, 0xB046, 0xB047, 0x27AA, - 0xB048, 0xB048, 0x054F, 0xB049, 0xB049, 0x27AC, 0xB04A, 0xB04A, 0x0550, - 0xB04B, 0xB04B, 0x27AD, 0xB04C, 0xB04C, 0x0551, 0xB04D, 0xB04D, 0x27AE, - 0xB04E, 0xB04E, 0x0552, 0xB04F, 0xB052, 0x27AF, 0xB053, 0xB055, 0x0553, - 0xB056, 0xB056, 0x27B3, 0xB057, 0xB057, 0x0556, 0xB058, 0xB058, 0x27B4, - 0xB059, 0xB059, 0x0557, 0xB05A, 0xB05C, 0x27B5, 0xB05D, 0xB05D, 0x0558, - 0xB05E, 0xB07B, 0x27B8, 0xB07C, 0xB07D, 0x0559, 0xB07E, 0xB07F, 0x27D6, - 0xB080, 0xB080, 0x055B, 0xB081, 0xB083, 0x27D8, 0xB084, 0xB084, 0x055C, - 0xB085, 0xB08B, 0x27DB, 0xB08C, 0xB08D, 0x055D, 0xB08E, 0xB08E, 0x27E2, - 0xB08F, 0xB08F, 0x055F, 0xB090, 0xB090, 0x27E3, 0xB091, 0xB091, 0x0560, - 0xB092, 0xB097, 0x27E4, 0xB098, 0xB09A, 0x0561, 0xB09B, 0xB09B, 0x27EA, - 0xB09C, 0xB09C, 0x0564, 0xB09D, 0xB09E, 0x27EB, 0xB09F, 0xB0A2, 0x0565, - 0xB0A3, 0xB0A7, 0x27ED, 0xB0A8, 0xB0A9, 0x0569, 0xB0AA, 0xB0AA, 0x27F2, - 0xB0AB, 0xB0AF, 0x056B, 0xB0B0, 0xB0B0, 0x27F3, 0xB0B1, 0xB0B1, 0x0570, - 0xB0B2, 0xB0B2, 0x27F4, 0xB0B3, 0xB0B5, 0x0571, 0xB0B6, 0xB0B7, 0x27F5, - 0xB0B8, 0xB0B8, 0x0574, 0xB0B9, 0xB0BB, 0x27F7, 0xB0BC, 0xB0BC, 0x0575, - 0xB0BD, 0xB0C3, 0x27FA, 0xB0C4, 0xB0C5, 0x0576, 0xB0C6, 0xB0C6, 0x2801, - 0xB0C7, 0xB0C9, 0x0578, 0xB0CA, 0xB0CF, 0x2802, 0xB0D0, 0xB0D1, 0x057B, - 0xB0D2, 0xB0D3, 0x2808, 0xB0D4, 0xB0D4, 0x057D, 0xB0D5, 0xB0D7, 0x280A, - 0xB0D8, 0xB0D8, 0x057E, 0xB0D9, 0xB0DF, 0x280D, 0xB0E0, 0xB0E0, 0x057F, - 0xB0E1, 0xB0E4, 0x2814, 0xB0E5, 0xB0E5, 0x0580, 0xB0E6, 0xB0FF, 0x2818, - 0xB100, 0xB107, 0x2832, 0xB108, 0xB109, 0x0581, 0xB10A, 0xB10A, 0x283A, - 0xB10B, 0xB10C, 0x0583, 0xB10D, 0xB10F, 0x283B, 0xB110, 0xB110, 0x0585, - 0xB111, 0xB111, 0x283E, 0xB112, 0xB113, 0x0586, 0xB114, 0xB117, 0x283F, - 0xB118, 0xB119, 0x0588, 0xB11A, 0xB11A, 0x2843, 0xB11B, 0xB11D, 0x058A, - 0xB11E, 0xB122, 0x2844, 0xB123, 0xB125, 0x058D, 0xB126, 0xB127, 0x2849, - 0xB128, 0xB128, 0x0590, 0xB129, 0xB12B, 0x284B, 0xB12C, 0xB12C, 0x0591, - 0xB12D, 0xB133, 0x284E, 0xB134, 0xB135, 0x0592, 0xB136, 0xB136, 0x2855, - 0xB137, 0xB139, 0x0594, 0xB13A, 0xB13F, 0x2856, 0xB140, 0xB141, 0x0597, - 0xB142, 0xB143, 0x285C, 0xB144, 0xB144, 0x0599, 0xB145, 0xB147, 0x285E, - 0xB148, 0xB148, 0x059A, 0xB149, 0xB14F, 0x2861, 0xB150, 0xB151, 0x059B, - 0xB152, 0xB153, 0x2868, 0xB154, 0xB155, 0x059D, 0xB156, 0xB157, 0x286A, - 0xB158, 0xB158, 0x059F, 0xB159, 0xB15B, 0x286C, 0xB15C, 0xB15C, 0x05A0, - 0xB15D, 0xB15F, 0x286F, 0xB160, 0xB160, 0x05A1, 0xB161, 0xB177, 0x2872, - 0xB178, 0xB179, 0x05A2, 0xB17A, 0xB17B, 0x2889, 0xB17C, 0xB17C, 0x05A4, - 0xB17D, 0xB17F, 0x288B, 0xB180, 0xB180, 0x05A5, 0xB181, 0xB181, 0x288E, - 0xB182, 0xB182, 0x05A6, 0xB183, 0xB187, 0x288F, 0xB188, 0xB189, 0x05A7, - 0xB18A, 0xB18A, 0x2894, 0xB18B, 0xB18B, 0x05A9, 0xB18C, 0xB18C, 0x2895, - 0xB18D, 0xB18D, 0x05AA, 0xB18E, 0xB191, 0x2896, 0xB192, 0xB194, 0x05AB, - 0xB195, 0xB197, 0x289A, 0xB198, 0xB198, 0x05AE, 0xB199, 0xB19B, 0x289D, - 0xB19C, 0xB19C, 0x05AF, 0xB19D, 0xB1A7, 0x28A0, 0xB1A8, 0xB1A8, 0x05B0, - 0xB1A9, 0xB1CB, 0x28AB, 0xB1CC, 0xB1CC, 0x05B1, 0xB1CD, 0xB1CF, 0x28CE, - 0xB1D0, 0xB1D0, 0x05B2, 0xB1D1, 0xB1D3, 0x28D1, 0xB1D4, 0xB1D4, 0x05B3, - 0xB1D5, 0xB1DB, 0x28D4, 0xB1DC, 0xB1DD, 0x05B4, 0xB1DE, 0xB1DE, 0x28DB, - 0xB1DF, 0xB1DF, 0x05B6, 0xB1E0, 0xB1E7, 0x28DC, 0xB1E8, 0xB1E9, 0x05B7, - 0xB1EA, 0xB1EB, 0x28E4, 0xB1EC, 0xB1EC, 0x05B9, 0xB1ED, 0xB1EF, 0x28E6, - 0xB1F0, 0xB1F0, 0x05BA, 0xB1F1, 0xB1F8, 0x28E9, 0xB1F9, 0xB1F9, 0x05BB, - 0xB1FA, 0xB1FA, 0x28F1, 0xB1FB, 0xB1FB, 0x05BC, 0xB1FC, 0xB1FC, 0x28F2, - 0xB1FD, 0xB1FD, 0x05BD, 0xB1FE, 0xB1FF, 0x28F3, 0xB200, 0xB203, 0x28F5, - 0xB204, 0xB205, 0x05BE, 0xB206, 0xB207, 0x28F9, 0xB208, 0xB208, 0x05C0, - 0xB209, 0xB20A, 0x28FB, 0xB20B, 0xB20C, 0x05C1, 0xB20D, 0xB213, 0x28FD, - 0xB214, 0xB215, 0x05C3, 0xB216, 0xB216, 0x2904, 0xB217, 0xB217, 0x05C5, - 0xB218, 0xB218, 0x2905, 0xB219, 0xB219, 0x05C6, 0xB21A, 0xB21F, 0x2906, - 0xB220, 0xB220, 0x05C7, 0xB221, 0xB233, 0x290C, 0xB234, 0xB234, 0x05C8, - 0xB235, 0xB23B, 0x291F, 0xB23C, 0xB23C, 0x05C9, 0xB23D, 0xB257, 0x2926, - 0xB258, 0xB258, 0x05CA, 0xB259, 0xB25B, 0x2941, 0xB25C, 0xB25C, 0x05CB, - 0xB25D, 0xB25F, 0x2944, 0xB260, 0xB260, 0x05CC, 0xB261, 0xB267, 0x2947, - 0xB268, 0xB269, 0x05CD, 0xB26A, 0xB273, 0x294E, 0xB274, 0xB275, 0x05CF, - 0xB276, 0xB27B, 0x2958, 0xB27C, 0xB27C, 0x05D1, 0xB27D, 0xB283, 0x295E, - 0xB284, 0xB285, 0x05D2, 0xB286, 0xB288, 0x2965, 0xB289, 0xB289, 0x05D4, - 0xB28A, 0xB28F, 0x2968, 0xB290, 0xB291, 0x05D5, 0xB292, 0xB293, 0x296E, - 0xB294, 0xB294, 0x05D7, 0xB295, 0xB297, 0x2970, 0xB298, 0xB29A, 0x05D8, - 0xB29B, 0xB29F, 0x2973, 0xB2A0, 0xB2A1, 0x05DB, 0xB2A2, 0xB2A2, 0x2978, - 0xB2A3, 0xB2A3, 0x05DD, 0xB2A4, 0xB2A4, 0x2979, 0xB2A5, 0xB2A6, 0x05DE, - 0xB2A7, 0xB2A9, 0x297A, 0xB2AA, 0xB2AA, 0x05E0, 0xB2AB, 0xB2AB, 0x297D, - 0xB2AC, 0xB2AC, 0x05E1, 0xB2AD, 0xB2AF, 0x297E, 0xB2B0, 0xB2B0, 0x05E2, - 0xB2B1, 0xB2B3, 0x2981, 0xB2B4, 0xB2B4, 0x05E3, 0xB2B5, 0xB2C7, 0x2984, - 0xB2C8, 0xB2C9, 0x05E4, 0xB2CA, 0xB2CB, 0x2997, 0xB2CC, 0xB2CC, 0x05E6, - 0xB2CD, 0xB2CF, 0x2999, 0xB2D0, 0xB2D0, 0x05E7, 0xB2D1, 0xB2D1, 0x299C, - 0xB2D2, 0xB2D2, 0x05E8, 0xB2D3, 0xB2D7, 0x299D, 0xB2D8, 0xB2D9, 0x05E9, - 0xB2DA, 0xB2DA, 0x29A2, 0xB2DB, 0xB2DB, 0x05EB, 0xB2DC, 0xB2DC, 0x29A3, - 0xB2DD, 0xB2DD, 0x05EC, 0xB2DE, 0xB2E1, 0x29A4, 0xB2E2, 0xB2E2, 0x05ED, - 0xB2E3, 0xB2E3, 0x29A8, 0xB2E4, 0xB2E6, 0x05EE, 0xB2E7, 0xB2E7, 0x29A9, - 0xB2E8, 0xB2E8, 0x05F1, 0xB2E9, 0xB2EA, 0x29AA, 0xB2EB, 0xB2EF, 0x05F2, - 0xB2F0, 0xB2F2, 0x29AC, 0xB2F3, 0xB2F5, 0x05F7, 0xB2F6, 0xB2F6, 0x29AF, - 0xB2F7, 0xB2FB, 0x05FA, 0xB2FC, 0xB2FE, 0x29B0, 0xB2FF, 0xB2FF, 0x05FF, - 0xB300, 0xB301, 0x0600, 0xB302, 0xB303, 0x29B3, 0xB304, 0xB304, 0x0602, - 0xB305, 0xB307, 0x29B5, 0xB308, 0xB308, 0x0603, 0xB309, 0xB30F, 0x29B8, - 0xB310, 0xB311, 0x0604, 0xB312, 0xB312, 0x29BF, 0xB313, 0xB315, 0x0606, - 0xB316, 0xB31B, 0x29C0, 0xB31C, 0xB31C, 0x0609, 0xB31D, 0xB353, 0x29C6, - 0xB354, 0xB356, 0x060A, 0xB357, 0xB357, 0x29FD, 0xB358, 0xB358, 0x060D, - 0xB359, 0xB35A, 0x29FE, 0xB35B, 0xB35C, 0x060E, 0xB35D, 0xB35D, 0x2A00, - 0xB35E, 0xB35F, 0x0610, 0xB360, 0xB363, 0x2A01, 0xB364, 0xB365, 0x0612, - 0xB366, 0xB366, 0x2A05, 0xB367, 0xB367, 0x0614, 0xB368, 0xB368, 0x2A06, - 0xB369, 0xB369, 0x0615, 0xB36A, 0xB36A, 0x2A07, 0xB36B, 0xB36B, 0x0616, - 0xB36C, 0xB36D, 0x2A08, 0xB36E, 0xB36E, 0x0617, 0xB36F, 0xB36F, 0x2A0A, - 0xB370, 0xB371, 0x0618, 0xB372, 0xB373, 0x2A0B, 0xB374, 0xB374, 0x061A, - 0xB375, 0xB377, 0x2A0D, 0xB378, 0xB378, 0x061B, 0xB379, 0xB37F, 0x2A10, - 0xB380, 0xB381, 0x061C, 0xB382, 0xB382, 0x2A17, 0xB383, 0xB385, 0x061E, - 0xB386, 0xB38B, 0x2A18, 0xB38C, 0xB38C, 0x0621, 0xB38D, 0xB38F, 0x2A1E, - 0xB390, 0xB390, 0x0622, 0xB391, 0xB393, 0x2A21, 0xB394, 0xB394, 0x0623, - 0xB395, 0xB39F, 0x2A24, 0xB3A0, 0xB3A1, 0x0624, 0xB3A2, 0xB3A7, 0x2A2F, - 0xB3A8, 0xB3A8, 0x0626, 0xB3A9, 0xB3AB, 0x2A35, 0xB3AC, 0xB3AC, 0x0627, - 0xB3AD, 0xB3C3, 0x2A38, 0xB3C4, 0xB3C5, 0x0628, 0xB3C6, 0xB3C7, 0x2A4F, - 0xB3C8, 0xB3C8, 0x062A, 0xB3C9, 0xB3CA, 0x2A51, 0xB3CB, 0xB3CC, 0x062B, - 0xB3CD, 0xB3CD, 0x2A53, 0xB3CE, 0xB3CE, 0x062D, 0xB3CF, 0xB3CF, 0x2A54, - 0xB3D0, 0xB3D0, 0x062E, 0xB3D1, 0xB3D3, 0x2A55, 0xB3D4, 0xB3D5, 0x062F, - 0xB3D6, 0xB3D6, 0x2A58, 0xB3D7, 0xB3D7, 0x0631, 0xB3D8, 0xB3D8, 0x2A59, - 0xB3D9, 0xB3D9, 0x0632, 0xB3DA, 0xB3DA, 0x2A5A, 0xB3DB, 0xB3DB, 0x0633, - 0xB3DC, 0xB3DC, 0x2A5B, 0xB3DD, 0xB3DD, 0x0634, 0xB3DE, 0xB3DF, 0x2A5C, - 0xB3E0, 0xB3E0, 0x0635, 0xB3E1, 0xB3E3, 0x2A5E, 0xB3E4, 0xB3E4, 0x0636, - 0xB3E5, 0xB3E7, 0x2A61, 0xB3E8, 0xB3E8, 0x0637, 0xB3E9, 0xB3FB, 0x2A64, - 0xB3FC, 0xB3FC, 0x0638, 0xB3FD, 0xB3FF, 0x2A77, 0xB400, 0xB40F, 0x2A7A, - 0xB410, 0xB410, 0x0639, 0xB411, 0xB417, 0x2A8A, 0xB418, 0xB418, 0x063A, - 0xB419, 0xB41B, 0x2A91, 0xB41C, 0xB41C, 0x063B, 0xB41D, 0xB41F, 0x2A94, - 0xB420, 0xB420, 0x063C, 0xB421, 0xB427, 0x2A97, 0xB428, 0xB429, 0x063D, - 0xB42A, 0xB42A, 0x2A9E, 0xB42B, 0xB42B, 0x063F, 0xB42C, 0xB433, 0x2A9F, - 0xB434, 0xB434, 0x0640, 0xB435, 0xB44F, 0x2AA7, 0xB450, 0xB451, 0x0641, - 0xB452, 0xB453, 0x2AC2, 0xB454, 0xB454, 0x0643, 0xB455, 0xB457, 0x2AC4, - 0xB458, 0xB458, 0x0644, 0xB459, 0xB45F, 0x2AC7, 0xB460, 0xB461, 0x0645, - 0xB462, 0xB462, 0x2ACE, 0xB463, 0xB463, 0x0647, 0xB464, 0xB464, 0x2ACF, - 0xB465, 0xB465, 0x0648, 0xB466, 0xB46B, 0x2AD0, 0xB46C, 0xB46C, 0x0649, - 0xB46D, 0xB47F, 0x2AD6, 0xB480, 0xB480, 0x064A, 0xB481, 0xB487, 0x2AE9, - 0xB488, 0xB488, 0x064B, 0xB489, 0xB49C, 0x2AF0, 0xB49D, 0xB49D, 0x064C, - 0xB49E, 0xB4A3, 0x2B04, 0xB4A4, 0xB4A4, 0x064D, 0xB4A5, 0xB4A7, 0x2B0A, - 0xB4A8, 0xB4A8, 0x064E, 0xB4A9, 0xB4AB, 0x2B0D, 0xB4AC, 0xB4AC, 0x064F, - 0xB4AD, 0xB4B4, 0x2B10, 0xB4B5, 0xB4B5, 0x0650, 0xB4B6, 0xB4B6, 0x2B18, - 0xB4B7, 0xB4B7, 0x0651, 0xB4B8, 0xB4B8, 0x2B19, 0xB4B9, 0xB4B9, 0x0652, - 0xB4BA, 0xB4BF, 0x2B1A, 0xB4C0, 0xB4C0, 0x0653, 0xB4C1, 0xB4C3, 0x2B20, - 0xB4C4, 0xB4C4, 0x0654, 0xB4C5, 0xB4C7, 0x2B23, 0xB4C8, 0xB4C8, 0x0655, - 0xB4C9, 0xB4CF, 0x2B26, 0xB4D0, 0xB4D0, 0x0656, 0xB4D1, 0xB4D4, 0x2B2D, - 0xB4D5, 0xB4D5, 0x0657, 0xB4D6, 0xB4DB, 0x2B31, 0xB4DC, 0xB4DD, 0x0658, - 0xB4DE, 0xB4DF, 0x2B37, 0xB4E0, 0xB4E0, 0x065A, 0xB4E1, 0xB4E2, 0x2B39, - 0xB4E3, 0xB4E4, 0x065B, 0xB4E5, 0xB4E5, 0x2B3B, 0xB4E6, 0xB4E6, 0x065D, - 0xB4E7, 0xB4EB, 0x2B3C, 0xB4EC, 0xB4ED, 0x065E, 0xB4EE, 0xB4EE, 0x2B41, - 0xB4EF, 0xB4EF, 0x0660, 0xB4F0, 0xB4F0, 0x2B42, 0xB4F1, 0xB4F1, 0x0661, - 0xB4F2, 0xB4F7, 0x2B43, 0xB4F8, 0xB4F8, 0x0662, 0xB4F9, 0xB4FF, 0x2B49, - 0xB500, 0xB513, 0x2B50, 0xB514, 0xB515, 0x0663, 0xB516, 0xB517, 0x2B64, - 0xB518, 0xB518, 0x0665, 0xB519, 0xB51A, 0x2B66, 0xB51B, 0xB51C, 0x0666, - 0xB51D, 0xB523, 0x2B68, 0xB524, 0xB525, 0x0668, 0xB526, 0xB526, 0x2B6F, - 0xB527, 0xB52A, 0x066A, 0xB52B, 0xB52F, 0x2B70, 0xB530, 0xB531, 0x066E, - 0xB532, 0xB533, 0x2B75, 0xB534, 0xB534, 0x0670, 0xB535, 0xB537, 0x2B77, - 0xB538, 0xB538, 0x0671, 0xB539, 0xB53F, 0x2B7A, 0xB540, 0xB541, 0x0672, - 0xB542, 0xB542, 0x2B81, 0xB543, 0xB545, 0x0674, 0xB546, 0xB54A, 0x2B82, - 0xB54B, 0xB54D, 0x0677, 0xB54E, 0xB54F, 0x2B87, 0xB550, 0xB550, 0x067A, - 0xB551, 0xB553, 0x2B89, 0xB554, 0xB554, 0x067B, 0xB555, 0xB55B, 0x2B8C, - 0xB55C, 0xB55D, 0x067C, 0xB55E, 0xB55E, 0x2B93, 0xB55F, 0xB561, 0x067E, - 0xB562, 0xB59F, 0x2B94, 0xB5A0, 0xB5A1, 0x0681, 0xB5A2, 0xB5A3, 0x2BD2, - 0xB5A4, 0xB5A4, 0x0683, 0xB5A5, 0xB5A7, 0x2BD4, 0xB5A8, 0xB5A8, 0x0684, - 0xB5A9, 0xB5A9, 0x2BD7, 0xB5AA, 0xB5AB, 0x0685, 0xB5AC, 0xB5AF, 0x2BD8, - 0xB5B0, 0xB5B1, 0x0687, 0xB5B2, 0xB5B2, 0x2BDC, 0xB5B3, 0xB5B5, 0x0689, - 0xB5B6, 0xB5BA, 0x2BDD, 0xB5BB, 0xB5BD, 0x068C, 0xB5BE, 0xB5BF, 0x2BE2, - 0xB5C0, 0xB5C0, 0x068F, 0xB5C1, 0xB5C3, 0x2BE4, 0xB5C4, 0xB5C4, 0x0690, - 0xB5C5, 0xB5CB, 0x2BE7, 0xB5CC, 0xB5CD, 0x0691, 0xB5CE, 0xB5CE, 0x2BEE, - 0xB5CF, 0xB5D1, 0x0693, 0xB5D2, 0xB5D7, 0x2BEF, 0xB5D8, 0xB5D8, 0x0696, - 0xB5D9, 0xB5EB, 0x2BF5, 0xB5EC, 0xB5EC, 0x0697, 0xB5ED, 0xB5FF, 0x2C08, - 0xB600, 0xB60F, 0x2C1B, 0xB610, 0xB611, 0x0698, 0xB612, 0xB613, 0x2C2B, - 0xB614, 0xB614, 0x069A, 0xB615, 0xB617, 0x2C2D, 0xB618, 0xB618, 0x069B, - 0xB619, 0xB624, 0x2C30, 0xB625, 0xB625, 0x069C, 0xB626, 0xB62B, 0x2C3C, - 0xB62C, 0xB62C, 0x069D, 0xB62D, 0xB633, 0x2C42, 0xB634, 0xB634, 0x069E, - 0xB635, 0xB647, 0x2C49, 0xB648, 0xB648, 0x069F, 0xB649, 0xB663, 0x2C5C, - 0xB664, 0xB664, 0x06A0, 0xB665, 0xB667, 0x2C77, 0xB668, 0xB668, 0x06A1, - 0xB669, 0xB69B, 0x2C7A, 0xB69C, 0xB69D, 0x06A2, 0xB69E, 0xB69F, 0x2CAD, - 0xB6A0, 0xB6A0, 0x06A4, 0xB6A1, 0xB6A3, 0x2CAF, 0xB6A4, 0xB6A4, 0x06A5, - 0xB6A5, 0xB6AA, 0x2CB2, 0xB6AB, 0xB6AC, 0x06A6, 0xB6AD, 0xB6B0, 0x2CB8, - 0xB6B1, 0xB6B1, 0x06A8, 0xB6B2, 0xB6D3, 0x2CBC, 0xB6D4, 0xB6D4, 0x06A9, - 0xB6D5, 0xB6EF, 0x2CDE, 0xB6F0, 0xB6F0, 0x06AA, 0xB6F1, 0xB6F3, 0x2CF9, - 0xB6F4, 0xB6F4, 0x06AB, 0xB6F5, 0xB6F7, 0x2CFC, 0xB6F8, 0xB6F8, 0x06AC, - 0xB6F9, 0xB6FF, 0x2CFF, 0xB700, 0xB701, 0x06AD, 0xB702, 0xB704, 0x2D06, - 0xB705, 0xB705, 0x06AF, 0xB706, 0xB727, 0x2D09, 0xB728, 0xB729, 0x06B0, - 0xB72A, 0xB72B, 0x2D2B, 0xB72C, 0xB72C, 0x06B2, 0xB72D, 0xB72E, 0x2D2D, - 0xB72F, 0xB730, 0x06B3, 0xB731, 0xB737, 0x2D2F, 0xB738, 0xB739, 0x06B5, - 0xB73A, 0xB73A, 0x2D36, 0xB73B, 0xB73B, 0x06B7, 0xB73C, 0xB743, 0x2D37, - 0xB744, 0xB744, 0x06B8, 0xB745, 0xB747, 0x2D3F, 0xB748, 0xB748, 0x06B9, - 0xB749, 0xB74B, 0x2D42, 0xB74C, 0xB74C, 0x06BA, 0xB74D, 0xB753, 0x2D45, - 0xB754, 0xB755, 0x06BB, 0xB756, 0xB75F, 0x2D4C, 0xB760, 0xB760, 0x06BD, - 0xB761, 0xB763, 0x2D56, 0xB764, 0xB764, 0x06BE, 0xB765, 0xB767, 0x2D59, - 0xB768, 0xB768, 0x06BF, 0xB769, 0xB76F, 0x2D5C, 0xB770, 0xB771, 0x06C0, - 0xB772, 0xB772, 0x2D63, 0xB773, 0xB773, 0x06C2, 0xB774, 0xB774, 0x2D64, - 0xB775, 0xB775, 0x06C3, 0xB776, 0xB77B, 0x2D65, 0xB77C, 0xB77D, 0x06C4, - 0xB77E, 0xB77F, 0x2D6B, 0xB780, 0xB780, 0x06C6, 0xB781, 0xB783, 0x2D6D, - 0xB784, 0xB784, 0x06C7, 0xB785, 0xB78B, 0x2D70, 0xB78C, 0xB78D, 0x06C8, - 0xB78E, 0xB78E, 0x2D77, 0xB78F, 0xB792, 0x06CA, 0xB793, 0xB795, 0x2D78, - 0xB796, 0xB799, 0x06CE, 0xB79A, 0xB79B, 0x2D7B, 0xB79C, 0xB79C, 0x06D2, - 0xB79D, 0xB79F, 0x2D7D, 0xB7A0, 0xB7A0, 0x06D3, 0xB7A1, 0xB7A7, 0x2D80, - 0xB7A8, 0xB7A9, 0x06D4, 0xB7AA, 0xB7AA, 0x2D87, 0xB7AB, 0xB7AD, 0x06D6, - 0xB7AE, 0xB7B3, 0x2D88, 0xB7B4, 0xB7B5, 0x06D9, 0xB7B6, 0xB7B7, 0x2D8E, - 0xB7B8, 0xB7B8, 0x06DB, 0xB7B9, 0xB7C6, 0x2D90, 0xB7C7, 0xB7C7, 0x06DC, - 0xB7C8, 0xB7C8, 0x2D9E, 0xB7C9, 0xB7C9, 0x06DD, 0xB7CA, 0xB7EB, 0x2D9F, - 0xB7EC, 0xB7ED, 0x06DE, 0xB7EE, 0xB7EF, 0x2DC1, 0xB7F0, 0xB7F0, 0x06E0, - 0xB7F1, 0xB7F3, 0x2DC3, 0xB7F4, 0xB7F4, 0x06E1, 0xB7F5, 0xB7FB, 0x2DC6, - 0xB7FC, 0xB7FD, 0x06E2, 0xB7FE, 0xB7FE, 0x2DCD, 0xB7FF, 0xB7FF, 0x06E4, - 0xB800, 0xB801, 0x06E5, 0xB802, 0xB806, 0x2DCE, 0xB807, 0xB809, 0x06E7, - 0xB80A, 0xB80B, 0x2DD3, 0xB80C, 0xB80C, 0x06EA, 0xB80D, 0xB80F, 0x2DD5, - 0xB810, 0xB810, 0x06EB, 0xB811, 0xB817, 0x2DD8, 0xB818, 0xB819, 0x06EC, - 0xB81A, 0xB81A, 0x2DDF, 0xB81B, 0xB81B, 0x06EE, 0xB81C, 0xB81C, 0x2DE0, - 0xB81D, 0xB81D, 0x06EF, 0xB81E, 0xB823, 0x2DE1, 0xB824, 0xB825, 0x06F0, - 0xB826, 0xB827, 0x2DE7, 0xB828, 0xB828, 0x06F2, 0xB829, 0xB82B, 0x2DE9, - 0xB82C, 0xB82C, 0x06F3, 0xB82D, 0xB833, 0x2DEC, 0xB834, 0xB835, 0x06F4, - 0xB836, 0xB836, 0x2DF3, 0xB837, 0xB839, 0x06F6, 0xB83A, 0xB83F, 0x2DF4, - 0xB840, 0xB840, 0x06F9, 0xB841, 0xB843, 0x2DFA, 0xB844, 0xB844, 0x06FA, - 0xB845, 0xB850, 0x2DFD, 0xB851, 0xB851, 0x06FB, 0xB852, 0xB852, 0x2E09, - 0xB853, 0xB853, 0x06FC, 0xB854, 0xB85B, 0x2E0A, 0xB85C, 0xB85D, 0x06FD, - 0xB85E, 0xB85F, 0x2E12, 0xB860, 0xB860, 0x06FF, 0xB861, 0xB863, 0x2E14, - 0xB864, 0xB864, 0x0700, 0xB865, 0xB86B, 0x2E17, 0xB86C, 0xB86D, 0x0701, - 0xB86E, 0xB86E, 0x2E1E, 0xB86F, 0xB86F, 0x0703, 0xB870, 0xB870, 0x2E1F, - 0xB871, 0xB871, 0x0704, 0xB872, 0xB877, 0x2E20, 0xB878, 0xB878, 0x0705, - 0xB879, 0xB87B, 0x2E26, 0xB87C, 0xB87C, 0x0706, 0xB87D, 0xB88C, 0x2E29, - 0xB88D, 0xB88D, 0x0707, 0xB88E, 0xB8A7, 0x2E39, 0xB8A8, 0xB8A8, 0x0708, - 0xB8A9, 0xB8AF, 0x2E53, 0xB8B0, 0xB8B0, 0x0709, 0xB8B1, 0xB8B3, 0x2E5A, - 0xB8B4, 0xB8B4, 0x070A, 0xB8B5, 0xB8B7, 0x2E5D, 0xB8B8, 0xB8B8, 0x070B, - 0xB8B9, 0xB8BF, 0x2E60, 0xB8C0, 0xB8C1, 0x070C, 0xB8C2, 0xB8C2, 0x2E67, - 0xB8C3, 0xB8C3, 0x070E, 0xB8C4, 0xB8C4, 0x2E68, 0xB8C5, 0xB8C5, 0x070F, - 0xB8C6, 0xB8CB, 0x2E69, 0xB8CC, 0xB8CC, 0x0710, 0xB8CD, 0xB8CF, 0x2E6F, - 0xB8D0, 0xB8D0, 0x0711, 0xB8D1, 0xB8D3, 0x2E72, 0xB8D4, 0xB8D4, 0x0712, - 0xB8D5, 0xB8DC, 0x2E75, 0xB8DD, 0xB8DD, 0x0713, 0xB8DE, 0xB8DE, 0x2E7D, - 0xB8DF, 0xB8DF, 0x0714, 0xB8E0, 0xB8E0, 0x2E7E, 0xB8E1, 0xB8E1, 0x0715, - 0xB8E2, 0xB8E7, 0x2E7F, 0xB8E8, 0xB8E9, 0x0716, 0xB8EA, 0xB8EB, 0x2E85, - 0xB8EC, 0xB8EC, 0x0718, 0xB8ED, 0xB8EF, 0x2E87, 0xB8F0, 0xB8F0, 0x0719, - 0xB8F1, 0xB8F7, 0x2E8A, 0xB8F8, 0xB8F9, 0x071A, 0xB8FA, 0xB8FA, 0x2E91, - 0xB8FB, 0xB8FB, 0x071C, 0xB8FC, 0xB8FC, 0x2E92, 0xB8FD, 0xB8FD, 0x071D, - 0xB8FE, 0xB8FF, 0x2E93, 0xB900, 0xB903, 0x2E95, 0xB904, 0xB904, 0x071E, - 0xB905, 0xB917, 0x2E99, 0xB918, 0xB918, 0x071F, 0xB919, 0xB91F, 0x2EAC, - 0xB920, 0xB920, 0x0720, 0xB921, 0xB93B, 0x2EB3, 0xB93C, 0xB93D, 0x0721, - 0xB93E, 0xB93F, 0x2ECE, 0xB940, 0xB940, 0x0723, 0xB941, 0xB943, 0x2ED0, - 0xB944, 0xB944, 0x0724, 0xB945, 0xB94B, 0x2ED3, 0xB94C, 0xB94C, 0x0725, - 0xB94D, 0xB94E, 0x2EDA, 0xB94F, 0xB94F, 0x0726, 0xB950, 0xB950, 0x2EDC, - 0xB951, 0xB951, 0x0727, 0xB952, 0xB957, 0x2EDD, 0xB958, 0xB959, 0x0728, - 0xB95A, 0xB95B, 0x2EE3, 0xB95C, 0xB95C, 0x072A, 0xB95D, 0xB95F, 0x2EE5, - 0xB960, 0xB960, 0x072B, 0xB961, 0xB967, 0x2EE8, 0xB968, 0xB969, 0x072C, - 0xB96A, 0xB96A, 0x2EEF, 0xB96B, 0xB96B, 0x072E, 0xB96C, 0xB96C, 0x2EF0, - 0xB96D, 0xB96D, 0x072F, 0xB96E, 0xB973, 0x2EF1, 0xB974, 0xB975, 0x0730, - 0xB976, 0xB977, 0x2EF7, 0xB978, 0xB978, 0x0732, 0xB979, 0xB97B, 0x2EF9, - 0xB97C, 0xB97C, 0x0733, 0xB97D, 0xB983, 0x2EFC, 0xB984, 0xB985, 0x0734, - 0xB986, 0xB986, 0x2F03, 0xB987, 0xB987, 0x0736, 0xB988, 0xB988, 0x2F04, - 0xB989, 0xB98A, 0x0737, 0xB98B, 0xB98C, 0x2F05, 0xB98D, 0xB98E, 0x0739, - 0xB98F, 0xB9AB, 0x2F07, 0xB9AC, 0xB9AD, 0x073B, 0xB9AE, 0xB9AF, 0x2F24, - 0xB9B0, 0xB9B0, 0x073D, 0xB9B1, 0xB9B3, 0x2F26, 0xB9B4, 0xB9B4, 0x073E, - 0xB9B5, 0xB9BB, 0x2F29, 0xB9BC, 0xB9BD, 0x073F, 0xB9BE, 0xB9BE, 0x2F30, - 0xB9BF, 0xB9BF, 0x0741, 0xB9C0, 0xB9C0, 0x2F31, 0xB9C1, 0xB9C1, 0x0742, - 0xB9C2, 0xB9C7, 0x2F32, 0xB9C8, 0xB9C9, 0x0743, 0xB9CA, 0xB9CB, 0x2F38, - 0xB9CC, 0xB9CC, 0x0745, 0xB9CD, 0xB9CD, 0x2F3A, 0xB9CE, 0xB9D2, 0x0746, - 0xB9D3, 0xB9D7, 0x2F3B, 0xB9D8, 0xB9D9, 0x074B, 0xB9DA, 0xB9DA, 0x2F40, - 0xB9DB, 0xB9DB, 0x074D, 0xB9DC, 0xB9DC, 0x2F41, 0xB9DD, 0xB9DE, 0x074E, - 0xB9DF, 0xB9E0, 0x2F42, 0xB9E1, 0xB9E1, 0x0750, 0xB9E2, 0xB9E2, 0x2F44, - 0xB9E3, 0xB9E5, 0x0751, 0xB9E6, 0xB9E7, 0x2F45, 0xB9E8, 0xB9E8, 0x0754, - 0xB9E9, 0xB9EB, 0x2F47, 0xB9EC, 0xB9EC, 0x0755, 0xB9ED, 0xB9F3, 0x2F4A, - 0xB9F4, 0xB9F5, 0x0756, 0xB9F6, 0xB9F6, 0x2F51, 0xB9F7, 0xB9FA, 0x0758, - 0xB9FB, 0xB9FF, 0x2F52, 0xBA00, 0xBA01, 0x075C, 0xBA02, 0xBA07, 0x2F57, - 0xBA08, 0xBA08, 0x075E, 0xBA09, 0xBA14, 0x2F5D, 0xBA15, 0xBA15, 0x075F, - 0xBA16, 0xBA37, 0x2F69, 0xBA38, 0xBA39, 0x0760, 0xBA3A, 0xBA3B, 0x2F8B, - 0xBA3C, 0xBA3C, 0x0762, 0xBA3D, 0xBA3F, 0x2F8D, 0xBA40, 0xBA40, 0x0763, - 0xBA41, 0xBA41, 0x2F90, 0xBA42, 0xBA42, 0x0764, 0xBA43, 0xBA47, 0x2F91, - 0xBA48, 0xBA49, 0x0765, 0xBA4A, 0xBA4A, 0x2F96, 0xBA4B, 0xBA4B, 0x0767, - 0xBA4C, 0xBA4C, 0x2F97, 0xBA4D, 0xBA4E, 0x0768, 0xBA4F, 0xBA52, 0x2F98, - 0xBA53, 0xBA55, 0x076A, 0xBA56, 0xBA57, 0x2F9C, 0xBA58, 0xBA58, 0x076D, - 0xBA59, 0xBA5B, 0x2F9E, 0xBA5C, 0xBA5C, 0x076E, 0xBA5D, 0xBA63, 0x2FA1, - 0xBA64, 0xBA65, 0x076F, 0xBA66, 0xBA66, 0x2FA8, 0xBA67, 0xBA69, 0x0771, - 0xBA6A, 0xBA6F, 0x2FA9, 0xBA70, 0xBA71, 0x0774, 0xBA72, 0xBA73, 0x2FAF, - 0xBA74, 0xBA74, 0x0776, 0xBA75, 0xBA77, 0x2FB1, 0xBA78, 0xBA78, 0x0777, - 0xBA79, 0xBA82, 0x2FB4, 0xBA83, 0xBA85, 0x0778, 0xBA86, 0xBA86, 0x2FBE, - 0xBA87, 0xBA87, 0x077B, 0xBA88, 0xBA8B, 0x2FBF, 0xBA8C, 0xBA8C, 0x077C, - 0xBA8D, 0xBAA7, 0x2FC3, 0xBAA8, 0xBAA9, 0x077D, 0xBAAA, 0xBAAA, 0x2FDE, - 0xBAAB, 0xBAAC, 0x077F, 0xBAAD, 0xBAAF, 0x2FDF, 0xBAB0, 0xBAB0, 0x0781, - 0xBAB1, 0xBAB1, 0x2FE2, 0xBAB2, 0xBAB2, 0x0782, 0xBAB3, 0xBAB7, 0x2FE3, - 0xBAB8, 0xBAB9, 0x0783, 0xBABA, 0xBABA, 0x2FE8, 0xBABB, 0xBABB, 0x0785, - 0xBABC, 0xBABC, 0x2FE9, 0xBABD, 0xBABD, 0x0786, 0xBABE, 0xBAC3, 0x2FEA, - 0xBAC4, 0xBAC4, 0x0787, 0xBAC5, 0xBAC7, 0x2FF0, 0xBAC8, 0xBAC8, 0x0788, - 0xBAC9, 0xBAD7, 0x2FF3, 0xBAD8, 0xBAD9, 0x0789, 0xBADA, 0xBAFB, 0x3002, - 0xBAFC, 0xBAFC, 0x078B, 0xBAFD, 0xBAFF, 0x3024, 0xBB00, 0xBB00, 0x078C, - 0xBB01, 0xBB03, 0x3027, 0xBB04, 0xBB04, 0x078D, 0xBB05, 0xBB0C, 0x302A, - 0xBB0D, 0xBB0D, 0x078E, 0xBB0E, 0xBB0E, 0x3032, 0xBB0F, 0xBB0F, 0x078F, - 0xBB10, 0xBB10, 0x3033, 0xBB11, 0xBB11, 0x0790, 0xBB12, 0xBB17, 0x3034, - 0xBB18, 0xBB18, 0x0791, 0xBB19, 0xBB1B, 0x303A, 0xBB1C, 0xBB1C, 0x0792, - 0xBB1D, 0xBB1F, 0x303D, 0xBB20, 0xBB20, 0x0793, 0xBB21, 0xBB28, 0x3040, - 0xBB29, 0xBB29, 0x0794, 0xBB2A, 0xBB2A, 0x3048, 0xBB2B, 0xBB2B, 0x0795, - 0xBB2C, 0xBB33, 0x3049, 0xBB34, 0xBB36, 0x0796, 0xBB37, 0xBB37, 0x3051, - 0xBB38, 0xBB38, 0x0799, 0xBB39, 0xBB3A, 0x3052, 0xBB3B, 0xBB3E, 0x079A, - 0xBB3F, 0xBB43, 0x3054, 0xBB44, 0xBB45, 0x079E, 0xBB46, 0xBB46, 0x3059, - 0xBB47, 0xBB47, 0x07A0, 0xBB48, 0xBB48, 0x305A, 0xBB49, 0xBB49, 0x07A1, - 0xBB4A, 0xBB4C, 0x305B, 0xBB4D, 0xBB4D, 0x07A2, 0xBB4E, 0xBB4E, 0x305E, - 0xBB4F, 0xBB50, 0x07A3, 0xBB51, 0xBB53, 0x305F, 0xBB54, 0xBB54, 0x07A5, - 0xBB55, 0xBB57, 0x3062, 0xBB58, 0xBB58, 0x07A6, 0xBB59, 0xBB60, 0x3065, - 0xBB61, 0xBB61, 0x07A7, 0xBB62, 0xBB62, 0x306D, 0xBB63, 0xBB63, 0x07A8, - 0xBB64, 0xBB6B, 0x306E, 0xBB6C, 0xBB6C, 0x07A9, 0xBB6D, 0xBB87, 0x3076, - 0xBB88, 0xBB88, 0x07AA, 0xBB89, 0xBB8B, 0x3091, 0xBB8C, 0xBB8C, 0x07AB, - 0xBB8D, 0xBB8F, 0x3094, 0xBB90, 0xBB90, 0x07AC, 0xBB91, 0xBBA3, 0x3097, - 0xBBA4, 0xBBA4, 0x07AD, 0xBBA5, 0xBBA7, 0x30AA, 0xBBA8, 0xBBA8, 0x07AE, - 0xBBA9, 0xBBAB, 0x30AD, 0xBBAC, 0xBBAC, 0x07AF, 0xBBAD, 0xBBB3, 0x30B0, - 0xBBB4, 0xBBB4, 0x07B0, 0xBBB5, 0xBBB6, 0x30B7, 0xBBB7, 0xBBB7, 0x07B1, - 0xBBB8, 0xBBBF, 0x30B9, 0xBBC0, 0xBBC0, 0x07B2, 0xBBC1, 0xBBC3, 0x30C1, - 0xBBC4, 0xBBC4, 0x07B3, 0xBBC5, 0xBBC7, 0x30C4, 0xBBC8, 0xBBC8, 0x07B4, - 0xBBC9, 0xBBCF, 0x30C7, 0xBBD0, 0xBBD0, 0x07B5, 0xBBD1, 0xBBD2, 0x30CE, - 0xBBD3, 0xBBD3, 0x07B6, 0xBBD4, 0xBBF7, 0x30D0, 0xBBF8, 0xBBF9, 0x07B7, - 0xBBFA, 0xBBFB, 0x30F4, 0xBBFC, 0xBBFC, 0x07B9, 0xBBFD, 0xBBFE, 0x30F6, - 0xBBFF, 0xBBFF, 0x07BA, 0xBC00, 0xBC00, 0x07BB, 0xBC01, 0xBC01, 0x30F8, - 0xBC02, 0xBC02, 0x07BC, 0xBC03, 0xBC07, 0x30F9, 0xBC08, 0xBC09, 0x07BD, - 0xBC0A, 0xBC0A, 0x30FE, 0xBC0B, 0xBC0D, 0x07BF, 0xBC0E, 0xBC0E, 0x30FF, - 0xBC0F, 0xBC0F, 0x07C2, 0xBC10, 0xBC10, 0x3100, 0xBC11, 0xBC11, 0x07C3, - 0xBC12, 0xBC13, 0x3101, 0xBC14, 0xBC18, 0x07C4, 0xBC19, 0xBC1A, 0x3103, - 0xBC1B, 0xBC1F, 0x07C9, 0xBC20, 0xBC23, 0x3105, 0xBC24, 0xBC25, 0x07CE, - 0xBC26, 0xBC26, 0x3109, 0xBC27, 0xBC27, 0x07D0, 0xBC28, 0xBC28, 0x310A, - 0xBC29, 0xBC29, 0x07D1, 0xBC2A, 0xBC2C, 0x310B, 0xBC2D, 0xBC2D, 0x07D2, - 0xBC2E, 0xBC2F, 0x310E, 0xBC30, 0xBC31, 0x07D3, 0xBC32, 0xBC33, 0x3110, - 0xBC34, 0xBC34, 0x07D5, 0xBC35, 0xBC37, 0x3112, 0xBC38, 0xBC38, 0x07D6, - 0xBC39, 0xBC3F, 0x3115, 0xBC40, 0xBC41, 0x07D7, 0xBC42, 0xBC42, 0x311C, - 0xBC43, 0xBC45, 0x07D9, 0xBC46, 0xBC48, 0x311D, 0xBC49, 0xBC49, 0x07DC, - 0xBC4A, 0xBC4B, 0x3120, 0xBC4C, 0xBC4D, 0x07DD, 0xBC4E, 0xBC4F, 0x3122, - 0xBC50, 0xBC50, 0x07DF, 0xBC51, 0xBC5C, 0x3124, 0xBC5D, 0xBC5D, 0x07E0, - 0xBC5E, 0xBC83, 0x3130, 0xBC84, 0xBC85, 0x07E1, 0xBC86, 0xBC87, 0x3156, - 0xBC88, 0xBC88, 0x07E3, 0xBC89, 0xBC8A, 0x3158, 0xBC8B, 0xBC8C, 0x07E4, - 0xBC8D, 0xBC8D, 0x315A, 0xBC8E, 0xBC8E, 0x07E6, 0xBC8F, 0xBC93, 0x315B, - 0xBC94, 0xBC95, 0x07E7, 0xBC96, 0xBC96, 0x3160, 0xBC97, 0xBC97, 0x07E9, - 0xBC98, 0xBC98, 0x3161, 0xBC99, 0xBC9A, 0x07EA, 0xBC9B, 0xBC9F, 0x3162, - 0xBCA0, 0xBCA1, 0x07EC, 0xBCA2, 0xBCA3, 0x3167, 0xBCA4, 0xBCA4, 0x07EE, - 0xBCA5, 0xBCA6, 0x3169, 0xBCA7, 0xBCA8, 0x07EF, 0xBCA9, 0xBCAF, 0x316B, - 0xBCB0, 0xBCB1, 0x07F1, 0xBCB2, 0xBCB2, 0x3172, 0xBCB3, 0xBCB5, 0x07F3, - 0xBCB6, 0xBCBB, 0x3173, 0xBCBC, 0xBCBD, 0x07F6, 0xBCBE, 0xBCBF, 0x3179, - 0xBCC0, 0xBCC0, 0x07F8, 0xBCC1, 0xBCC3, 0x317B, 0xBCC4, 0xBCC4, 0x07F9, - 0xBCC5, 0xBCCC, 0x317E, 0xBCCD, 0xBCCD, 0x07FA, 0xBCCE, 0xBCCE, 0x3186, - 0xBCCF, 0xBCD1, 0x07FB, 0xBCD2, 0xBCD4, 0x3187, 0xBCD5, 0xBCD5, 0x07FE, - 0xBCD6, 0xBCD7, 0x318A, 0xBCD8, 0xBCD8, 0x07FF, 0xBCD9, 0xBCDB, 0x318C, - 0xBCDC, 0xBCDC, 0x0800, 0xBCDD, 0xBCF3, 0x318F, 0xBCF4, 0xBCF6, 0x0801, - 0xBCF7, 0xBCF7, 0x31A6, 0xBCF8, 0xBCF8, 0x0804, 0xBCF9, 0xBCFB, 0x31A7, - 0xBCFC, 0xBCFC, 0x0805, 0xBCFD, 0xBCFF, 0x31AA, 0xBD00, 0xBD03, 0x31AD, - 0xBD04, 0xBD05, 0x0806, 0xBD06, 0xBD06, 0x31B1, 0xBD07, 0xBD07, 0x0808, - 0xBD08, 0xBD08, 0x31B2, 0xBD09, 0xBD09, 0x0809, 0xBD0A, 0xBD0F, 0x31B3, - 0xBD10, 0xBD10, 0x080A, 0xBD11, 0xBD13, 0x31B9, 0xBD14, 0xBD14, 0x080B, - 0xBD15, 0xBD23, 0x31BC, 0xBD24, 0xBD24, 0x080C, 0xBD25, 0xBD2B, 0x31CB, - 0xBD2C, 0xBD2C, 0x080D, 0xBD2D, 0xBD3F, 0x31D2, 0xBD40, 0xBD40, 0x080E, - 0xBD41, 0xBD47, 0x31E5, 0xBD48, 0xBD49, 0x080F, 0xBD4A, 0xBD4B, 0x31EC, - 0xBD4C, 0xBD4C, 0x0811, 0xBD4D, 0xBD4F, 0x31EE, 0xBD50, 0xBD50, 0x0812, - 0xBD51, 0xBD57, 0x31F1, 0xBD58, 0xBD59, 0x0813, 0xBD5A, 0xBD63, 0x31F8, - 0xBD64, 0xBD64, 0x0815, 0xBD65, 0xBD67, 0x3202, 0xBD68, 0xBD68, 0x0816, - 0xBD69, 0xBD7F, 0x3205, 0xBD80, 0xBD81, 0x0817, 0xBD82, 0xBD83, 0x321C, - 0xBD84, 0xBD84, 0x0819, 0xBD85, 0xBD86, 0x321E, 0xBD87, 0xBD8A, 0x081A, - 0xBD8B, 0xBD8F, 0x3220, 0xBD90, 0xBD91, 0x081E, 0xBD92, 0xBD92, 0x3225, - 0xBD93, 0xBD93, 0x0820, 0xBD94, 0xBD94, 0x3226, 0xBD95, 0xBD95, 0x0821, - 0xBD96, 0xBD98, 0x3227, 0xBD99, 0xBD9A, 0x0822, 0xBD9B, 0xBD9B, 0x322A, - 0xBD9C, 0xBD9C, 0x0824, 0xBD9D, 0xBDA3, 0x322B, 0xBDA4, 0xBDA4, 0x0825, - 0xBDA5, 0xBDAF, 0x3232, 0xBDB0, 0xBDB0, 0x0826, 0xBDB1, 0xBDB7, 0x323D, - 0xBDB8, 0xBDB8, 0x0827, 0xBDB9, 0xBDD3, 0x3244, 0xBDD4, 0xBDD5, 0x0828, - 0xBDD6, 0xBDD7, 0x325F, 0xBDD8, 0xBDD8, 0x082A, 0xBDD9, 0xBDDB, 0x3261, - 0xBDDC, 0xBDDC, 0x082B, 0xBDDD, 0xBDE8, 0x3264, 0xBDE9, 0xBDE9, 0x082C, - 0xBDEA, 0xBDEF, 0x3270, 0xBDF0, 0xBDF0, 0x082D, 0xBDF1, 0xBDF3, 0x3276, - 0xBDF4, 0xBDF4, 0x082E, 0xBDF5, 0xBDF7, 0x3279, 0xBDF8, 0xBDF8, 0x082F, - 0xBDF9, 0xBDFF, 0x327C, 0xBE00, 0xBE00, 0x0830, 0xBE01, 0xBE02, 0x3283, - 0xBE03, 0xBE03, 0x0831, 0xBE04, 0xBE04, 0x3285, 0xBE05, 0xBE05, 0x0832, - 0xBE06, 0xBE0B, 0x3286, 0xBE0C, 0xBE0D, 0x0833, 0xBE0E, 0xBE0F, 0x328C, - 0xBE10, 0xBE10, 0x0835, 0xBE11, 0xBE13, 0x328E, 0xBE14, 0xBE14, 0x0836, - 0xBE15, 0xBE1B, 0x3291, 0xBE1C, 0xBE1D, 0x0837, 0xBE1E, 0xBE1E, 0x3298, - 0xBE1F, 0xBE1F, 0x0839, 0xBE20, 0xBE43, 0x3299, 0xBE44, 0xBE45, 0x083A, - 0xBE46, 0xBE47, 0x32BD, 0xBE48, 0xBE48, 0x083C, 0xBE49, 0xBE4B, 0x32BF, - 0xBE4C, 0xBE4C, 0x083D, 0xBE4D, 0xBE4D, 0x32C2, 0xBE4E, 0xBE4E, 0x083E, - 0xBE4F, 0xBE53, 0x32C3, 0xBE54, 0xBE55, 0x083F, 0xBE56, 0xBE56, 0x32C8, - 0xBE57, 0xBE57, 0x0841, 0xBE58, 0xBE58, 0x32C9, 0xBE59, 0xBE5B, 0x0842, - 0xBE5C, 0xBE5F, 0x32CA, 0xBE60, 0xBE61, 0x0845, 0xBE62, 0xBE63, 0x32CE, - 0xBE64, 0xBE64, 0x0847, 0xBE65, 0xBE67, 0x32D0, 0xBE68, 0xBE68, 0x0848, - 0xBE69, 0xBE69, 0x32D3, 0xBE6A, 0xBE6A, 0x0849, 0xBE6B, 0xBE6F, 0x32D4, - 0xBE70, 0xBE71, 0x084A, 0xBE72, 0xBE72, 0x32D9, 0xBE73, 0xBE75, 0x084C, - 0xBE76, 0xBE7A, 0x32DA, 0xBE7B, 0xBE7D, 0x084F, 0xBE7E, 0xBE7F, 0x32DF, - 0xBE80, 0xBE80, 0x0852, 0xBE81, 0xBE83, 0x32E1, 0xBE84, 0xBE84, 0x0853, - 0xBE85, 0xBE8B, 0x32E4, 0xBE8C, 0xBE8D, 0x0854, 0xBE8E, 0xBE8E, 0x32EB, - 0xBE8F, 0xBE91, 0x0856, 0xBE92, 0xBE97, 0x32EC, 0xBE98, 0xBE99, 0x0859, - 0xBE9A, 0xBEA7, 0x32F2, 0xBEA8, 0xBEA8, 0x085B, 0xBEA9, 0xBECF, 0x3300, - 0xBED0, 0xBED1, 0x085C, 0xBED2, 0xBED3, 0x3327, 0xBED4, 0xBED4, 0x085E, - 0xBED5, 0xBED6, 0x3329, 0xBED7, 0xBED8, 0x085F, 0xBED9, 0xBEDF, 0x332B, - 0xBEE0, 0xBEE0, 0x0861, 0xBEE1, 0xBEE2, 0x3332, 0xBEE3, 0xBEE5, 0x0862, - 0xBEE6, 0xBEEB, 0x3334, 0xBEEC, 0xBEEC, 0x0865, 0xBEED, 0xBEFF, 0x333A, - 0xBF00, 0xBF00, 0x334D, 0xBF01, 0xBF01, 0x0866, 0xBF02, 0xBF07, 0x334E, - 0xBF08, 0xBF09, 0x0867, 0xBF0A, 0xBF17, 0x3354, 0xBF18, 0xBF19, 0x0869, - 0xBF1A, 0xBF1A, 0x3362, 0xBF1B, 0xBF1D, 0x086B, 0xBF1E, 0xBF3F, 0x3363, - 0xBF40, 0xBF41, 0x086E, 0xBF42, 0xBF43, 0x3385, 0xBF44, 0xBF44, 0x0870, - 0xBF45, 0xBF47, 0x3387, 0xBF48, 0xBF48, 0x0871, 0xBF49, 0xBF4F, 0x338A, - 0xBF50, 0xBF51, 0x0872, 0xBF52, 0xBF54, 0x3391, 0xBF55, 0xBF55, 0x0874, - 0xBF56, 0xBF93, 0x3394, 0xBF94, 0xBF94, 0x0875, 0xBF95, 0xBFAF, 0x33D2, - 0xBFB0, 0xBFB0, 0x0876, 0xBFB1, 0xBFC4, 0x33ED, 0xBFC5, 0xBFC5, 0x0877, - 0xBFC6, 0xBFCB, 0x3401, 0xBFCC, 0xBFCD, 0x0878, 0xBFCE, 0xBFCF, 0x3407, - 0xBFD0, 0xBFD0, 0x087A, 0xBFD1, 0xBFD3, 0x3409, 0xBFD4, 0xBFD4, 0x087B, - 0xBFD5, 0xBFDB, 0x340C, 0xBFDC, 0xBFDC, 0x087C, 0xBFDD, 0xBFDE, 0x3413, - 0xBFDF, 0xBFDF, 0x087D, 0xBFE0, 0xBFE0, 0x3415, 0xBFE1, 0xBFE1, 0x087E, - 0xBFE2, 0xBFFF, 0x3416, 0xC000, 0xC03B, 0x3434, 0xC03C, 0xC03C, 0x087F, - 0xC03D, 0xC050, 0x3470, 0xC051, 0xC051, 0x0880, 0xC052, 0xC057, 0x3484, - 0xC058, 0xC058, 0x0881, 0xC059, 0xC05B, 0x348A, 0xC05C, 0xC05C, 0x0882, - 0xC05D, 0xC05F, 0x348D, 0xC060, 0xC060, 0x0883, 0xC061, 0xC067, 0x3490, - 0xC068, 0xC069, 0x0884, 0xC06A, 0xC08F, 0x3497, 0xC090, 0xC091, 0x0886, - 0xC092, 0xC093, 0x34BD, 0xC094, 0xC094, 0x0888, 0xC095, 0xC097, 0x34BF, - 0xC098, 0xC098, 0x0889, 0xC099, 0xC09F, 0x34C2, 0xC0A0, 0xC0A1, 0x088A, - 0xC0A2, 0xC0A2, 0x34C9, 0xC0A3, 0xC0A3, 0x088C, 0xC0A4, 0xC0A4, 0x34CA, - 0xC0A5, 0xC0A5, 0x088D, 0xC0A6, 0xC0AB, 0x34CB, 0xC0AC, 0xC0AD, 0x088E, - 0xC0AE, 0xC0AE, 0x34D1, 0xC0AF, 0xC0B0, 0x0890, 0xC0B1, 0xC0B2, 0x34D2, - 0xC0B3, 0xC0B6, 0x0892, 0xC0B7, 0xC0BB, 0x34D4, 0xC0BC, 0xC0BD, 0x0896, - 0xC0BE, 0xC0BE, 0x34D9, 0xC0BF, 0xC0C1, 0x0898, 0xC0C2, 0xC0C4, 0x34DA, - 0xC0C5, 0xC0C5, 0x089B, 0xC0C6, 0xC0C7, 0x34DD, 0xC0C8, 0xC0C9, 0x089C, - 0xC0CA, 0xC0CB, 0x34DF, 0xC0CC, 0xC0CC, 0x089E, 0xC0CD, 0xC0CF, 0x34E1, - 0xC0D0, 0xC0D0, 0x089F, 0xC0D1, 0xC0D7, 0x34E4, 0xC0D8, 0xC0D9, 0x08A0, - 0xC0DA, 0xC0DA, 0x34EB, 0xC0DB, 0xC0DD, 0x08A2, 0xC0DE, 0xC0E3, 0x34EC, - 0xC0E4, 0xC0E5, 0x08A5, 0xC0E6, 0xC0E7, 0x34F2, 0xC0E8, 0xC0E8, 0x08A7, - 0xC0E9, 0xC0EB, 0x34F4, 0xC0EC, 0xC0EC, 0x08A8, 0xC0ED, 0xC0F3, 0x34F7, - 0xC0F4, 0xC0F5, 0x08A9, 0xC0F6, 0xC0F6, 0x34FE, 0xC0F7, 0xC0F7, 0x08AB, - 0xC0F8, 0xC0F8, 0x34FF, 0xC0F9, 0xC0F9, 0x08AC, 0xC0FA, 0xC0FF, 0x3500, - 0xC100, 0xC100, 0x08AD, 0xC101, 0xC103, 0x3506, 0xC104, 0xC104, 0x08AE, - 0xC105, 0xC107, 0x3509, 0xC108, 0xC108, 0x08AF, 0xC109, 0xC10F, 0x350C, - 0xC110, 0xC110, 0x08B0, 0xC111, 0xC114, 0x3513, 0xC115, 0xC115, 0x08B1, - 0xC116, 0xC11B, 0x3517, 0xC11C, 0xC120, 0x08B2, 0xC121, 0xC122, 0x351D, - 0xC123, 0xC124, 0x08B7, 0xC125, 0xC125, 0x351F, 0xC126, 0xC127, 0x08B9, - 0xC128, 0xC12B, 0x3520, 0xC12C, 0xC12D, 0x08BB, 0xC12E, 0xC12E, 0x3524, - 0xC12F, 0xC131, 0x08BD, 0xC132, 0xC135, 0x3525, 0xC136, 0xC136, 0x08C0, - 0xC137, 0xC137, 0x3529, 0xC138, 0xC139, 0x08C1, 0xC13A, 0xC13B, 0x352A, - 0xC13C, 0xC13C, 0x08C3, 0xC13D, 0xC13F, 0x352C, 0xC140, 0xC140, 0x08C4, - 0xC141, 0xC147, 0x352F, 0xC148, 0xC149, 0x08C5, 0xC14A, 0xC14A, 0x3536, - 0xC14B, 0xC14D, 0x08C7, 0xC14E, 0xC153, 0x3537, 0xC154, 0xC155, 0x08CA, - 0xC156, 0xC157, 0x353D, 0xC158, 0xC158, 0x08CC, 0xC159, 0xC15B, 0x353F, - 0xC15C, 0xC15C, 0x08CD, 0xC15D, 0xC163, 0x3542, 0xC164, 0xC165, 0x08CE, - 0xC166, 0xC166, 0x3549, 0xC167, 0xC169, 0x08D0, 0xC16A, 0xC16F, 0x354A, - 0xC170, 0xC170, 0x08D3, 0xC171, 0xC173, 0x3550, 0xC174, 0xC174, 0x08D4, - 0xC175, 0xC177, 0x3553, 0xC178, 0xC178, 0x08D5, 0xC179, 0xC184, 0x3556, - 0xC185, 0xC185, 0x08D6, 0xC186, 0xC18B, 0x3562, 0xC18C, 0xC18E, 0x08D7, - 0xC18F, 0xC18F, 0x3568, 0xC190, 0xC190, 0x08DA, 0xC191, 0xC193, 0x3569, - 0xC194, 0xC194, 0x08DB, 0xC195, 0xC195, 0x356C, 0xC196, 0xC196, 0x08DC, - 0xC197, 0xC19B, 0x356D, 0xC19C, 0xC19D, 0x08DD, 0xC19E, 0xC19E, 0x3572, - 0xC19F, 0xC19F, 0x08DF, 0xC1A0, 0xC1A0, 0x3573, 0xC1A1, 0xC1A1, 0x08E0, - 0xC1A2, 0xC1A4, 0x3574, 0xC1A5, 0xC1A5, 0x08E1, 0xC1A6, 0xC1A7, 0x3577, - 0xC1A8, 0xC1A9, 0x08E2, 0xC1AA, 0xC1AB, 0x3579, 0xC1AC, 0xC1AC, 0x08E4, - 0xC1AD, 0xC1AF, 0x357B, 0xC1B0, 0xC1B0, 0x08E5, 0xC1B1, 0xC1BC, 0x357E, - 0xC1BD, 0xC1BD, 0x08E6, 0xC1BE, 0xC1C3, 0x358A, 0xC1C4, 0xC1C4, 0x08E7, - 0xC1C5, 0xC1C7, 0x3590, 0xC1C8, 0xC1C8, 0x08E8, 0xC1C9, 0xC1CB, 0x3593, - 0xC1CC, 0xC1CC, 0x08E9, 0xC1CD, 0xC1D3, 0x3596, 0xC1D4, 0xC1D4, 0x08EA, - 0xC1D5, 0xC1D6, 0x359D, 0xC1D7, 0xC1D8, 0x08EB, 0xC1D9, 0xC1DF, 0x359F, - 0xC1E0, 0xC1E0, 0x08ED, 0xC1E1, 0xC1E3, 0x35A6, 0xC1E4, 0xC1E4, 0x08EE, - 0xC1E5, 0xC1E7, 0x35A9, 0xC1E8, 0xC1E8, 0x08EF, 0xC1E9, 0xC1EF, 0x35AC, - 0xC1F0, 0xC1F1, 0x08F0, 0xC1F2, 0xC1F2, 0x35B3, 0xC1F3, 0xC1F3, 0x08F2, - 0xC1F4, 0xC1FB, 0x35B4, 0xC1FC, 0xC1FD, 0x08F3, 0xC1FE, 0xC1FF, 0x35BC, - 0xC200, 0xC200, 0x08F5, 0xC201, 0xC203, 0x35BE, 0xC204, 0xC204, 0x08F6, - 0xC205, 0xC20B, 0x35C1, 0xC20C, 0xC20D, 0x08F7, 0xC20E, 0xC20E, 0x35C8, - 0xC20F, 0xC20F, 0x08F9, 0xC210, 0xC210, 0x35C9, 0xC211, 0xC211, 0x08FA, - 0xC212, 0xC217, 0x35CA, 0xC218, 0xC219, 0x08FB, 0xC21A, 0xC21B, 0x35D0, - 0xC21C, 0xC21C, 0x08FD, 0xC21D, 0xC21E, 0x35D2, 0xC21F, 0xC220, 0x08FE, - 0xC221, 0xC227, 0x35D4, 0xC228, 0xC229, 0x0900, 0xC22A, 0xC22A, 0x35DB, - 0xC22B, 0xC22B, 0x0902, 0xC22C, 0xC22C, 0x35DC, 0xC22D, 0xC22D, 0x0903, - 0xC22E, 0xC22E, 0x35DD, 0xC22F, 0xC22F, 0x0904, 0xC230, 0xC230, 0x35DE, - 0xC231, 0xC232, 0x0905, 0xC233, 0xC233, 0x35DF, 0xC234, 0xC234, 0x0907, - 0xC235, 0xC247, 0x35E0, 0xC248, 0xC248, 0x0908, 0xC249, 0xC24F, 0x35F3, - 0xC250, 0xC251, 0x0909, 0xC252, 0xC253, 0x35FA, 0xC254, 0xC254, 0x090B, - 0xC255, 0xC257, 0x35FC, 0xC258, 0xC258, 0x090C, 0xC259, 0xC25F, 0x35FF, - 0xC260, 0xC260, 0x090D, 0xC261, 0xC264, 0x3606, 0xC265, 0xC265, 0x090E, - 0xC266, 0xC26B, 0x360A, 0xC26C, 0xC26D, 0x090F, 0xC26E, 0xC26F, 0x3610, - 0xC270, 0xC270, 0x0911, 0xC271, 0xC273, 0x3612, 0xC274, 0xC274, 0x0912, - 0xC275, 0xC27B, 0x3615, 0xC27C, 0xC27D, 0x0913, 0xC27E, 0xC27E, 0x361C, - 0xC27F, 0xC27F, 0x0915, 0xC280, 0xC280, 0x361D, 0xC281, 0xC281, 0x0916, - 0xC282, 0xC287, 0x361E, 0xC288, 0xC289, 0x0917, 0xC28A, 0xC28F, 0x3624, - 0xC290, 0xC290, 0x0919, 0xC291, 0xC297, 0x362A, 0xC298, 0xC298, 0x091A, - 0xC299, 0xC29A, 0x3631, 0xC29B, 0xC29B, 0x091B, 0xC29C, 0xC29C, 0x3633, - 0xC29D, 0xC29D, 0x091C, 0xC29E, 0xC2A3, 0x3634, 0xC2A4, 0xC2A5, 0x091D, - 0xC2A6, 0xC2A7, 0x363A, 0xC2A8, 0xC2A8, 0x091F, 0xC2A9, 0xC2AB, 0x363C, - 0xC2AC, 0xC2AD, 0x0920, 0xC2AE, 0xC2B3, 0x363F, 0xC2B4, 0xC2B5, 0x0922, - 0xC2B6, 0xC2B6, 0x3645, 0xC2B7, 0xC2B7, 0x0924, 0xC2B8, 0xC2B8, 0x3646, - 0xC2B9, 0xC2B9, 0x0925, 0xC2BA, 0xC2DB, 0x3647, 0xC2DC, 0xC2DD, 0x0926, - 0xC2DE, 0xC2DF, 0x3669, 0xC2E0, 0xC2E0, 0x0928, 0xC2E1, 0xC2E2, 0x366B, - 0xC2E3, 0xC2E4, 0x0929, 0xC2E5, 0xC2EA, 0x366D, 0xC2EB, 0xC2ED, 0x092B, - 0xC2EE, 0xC2EE, 0x3673, 0xC2EF, 0xC2EF, 0x092E, 0xC2F0, 0xC2F0, 0x3674, - 0xC2F1, 0xC2F1, 0x092F, 0xC2F2, 0xC2F5, 0x3675, 0xC2F6, 0xC2F6, 0x0930, - 0xC2F7, 0xC2F7, 0x3679, 0xC2F8, 0xC2F9, 0x0931, 0xC2FA, 0xC2FA, 0x367A, - 0xC2FB, 0xC2FC, 0x0933, 0xC2FD, 0xC2FF, 0x367B, 0xC300, 0xC300, 0x0935, - 0xC301, 0xC307, 0x367E, 0xC308, 0xC309, 0x0936, 0xC30A, 0xC30B, 0x3685, - 0xC30C, 0xC30D, 0x0938, 0xC30E, 0xC312, 0x3687, 0xC313, 0xC315, 0x093A, - 0xC316, 0xC317, 0x368C, 0xC318, 0xC318, 0x093D, 0xC319, 0xC31B, 0x368E, - 0xC31C, 0xC31C, 0x093E, 0xC31D, 0xC323, 0x3691, 0xC324, 0xC325, 0x093F, - 0xC326, 0xC327, 0x3698, 0xC328, 0xC329, 0x0941, 0xC32A, 0xC344, 0x369A, - 0xC345, 0xC345, 0x0943, 0xC346, 0xC367, 0x36B5, 0xC368, 0xC369, 0x0944, - 0xC36A, 0xC36B, 0x36D7, 0xC36C, 0xC36C, 0x0946, 0xC36D, 0xC36F, 0x36D9, - 0xC370, 0xC370, 0x0947, 0xC371, 0xC371, 0x36DC, 0xC372, 0xC372, 0x0948, - 0xC373, 0xC377, 0x36DD, 0xC378, 0xC379, 0x0949, 0xC37A, 0xC37B, 0x36E2, - 0xC37C, 0xC37D, 0x094B, 0xC37E, 0xC383, 0x36E4, 0xC384, 0xC384, 0x094D, - 0xC385, 0xC387, 0x36EA, 0xC388, 0xC388, 0x094E, 0xC389, 0xC38B, 0x36ED, - 0xC38C, 0xC38C, 0x094F, 0xC38D, 0xC3BF, 0x36F0, 0xC3C0, 0xC3C0, 0x0950, - 0xC3C1, 0xC3D7, 0x3723, 0xC3D8, 0xC3D9, 0x0951, 0xC3DA, 0xC3DB, 0x373A, - 0xC3DC, 0xC3DC, 0x0953, 0xC3DD, 0xC3DE, 0x373C, 0xC3DF, 0xC3E0, 0x0954, - 0xC3E1, 0xC3E1, 0x373E, 0xC3E2, 0xC3E2, 0x0956, 0xC3E3, 0xC3E7, 0x373F, - 0xC3E8, 0xC3E9, 0x0957, 0xC3EA, 0xC3EC, 0x3744, 0xC3ED, 0xC3ED, 0x0959, - 0xC3EE, 0xC3F3, 0x3747, 0xC3F4, 0xC3F5, 0x095A, 0xC3F6, 0xC3F7, 0x374D, - 0xC3F8, 0xC3F8, 0x095C, 0xC3F9, 0xC3FF, 0x374F, 0xC400, 0xC407, 0x3756, - 0xC408, 0xC408, 0x095D, 0xC409, 0xC40F, 0x375E, 0xC410, 0xC410, 0x095E, - 0xC411, 0xC423, 0x3765, 0xC424, 0xC424, 0x095F, 0xC425, 0xC42B, 0x3778, - 0xC42C, 0xC42C, 0x0960, 0xC42D, 0xC42F, 0x377F, 0xC430, 0xC430, 0x0961, - 0xC431, 0xC433, 0x3782, 0xC434, 0xC434, 0x0962, 0xC435, 0xC43B, 0x3785, - 0xC43C, 0xC43D, 0x0963, 0xC43E, 0xC447, 0x378C, 0xC448, 0xC448, 0x0965, - 0xC449, 0xC463, 0x3796, 0xC464, 0xC465, 0x0966, 0xC466, 0xC467, 0x37B1, - 0xC468, 0xC468, 0x0968, 0xC469, 0xC46B, 0x37B3, 0xC46C, 0xC46C, 0x0969, - 0xC46D, 0xC473, 0x37B6, 0xC474, 0xC475, 0x096A, 0xC476, 0xC478, 0x37BD, - 0xC479, 0xC479, 0x096C, 0xC47A, 0xC47F, 0x37C0, 0xC480, 0xC480, 0x096D, - 0xC481, 0xC493, 0x37C6, 0xC494, 0xC494, 0x096E, 0xC495, 0xC49B, 0x37D9, - 0xC49C, 0xC49C, 0x096F, 0xC49D, 0xC4B7, 0x37E0, 0xC4B8, 0xC4B8, 0x0970, - 0xC4B9, 0xC4BB, 0x37FB, 0xC4BC, 0xC4BC, 0x0971, 0xC4BD, 0xC4E8, 0x37FE, - 0xC4E9, 0xC4E9, 0x0972, 0xC4EA, 0xC4EF, 0x382A, 0xC4F0, 0xC4F1, 0x0973, - 0xC4F2, 0xC4F3, 0x3830, 0xC4F4, 0xC4F4, 0x0975, 0xC4F5, 0xC4F7, 0x3832, - 0xC4F8, 0xC4F8, 0x0976, 0xC4F9, 0xC4F9, 0x3835, 0xC4FA, 0xC4FA, 0x0977, - 0xC4FB, 0xC4FE, 0x3836, 0xC4FF, 0xC4FF, 0x0978, 0xC500, 0xC501, 0x0979, - 0xC502, 0xC50B, 0x383A, 0xC50C, 0xC50C, 0x097B, 0xC50D, 0xC50F, 0x3844, - 0xC510, 0xC510, 0x097C, 0xC511, 0xC513, 0x3847, 0xC514, 0xC514, 0x097D, - 0xC515, 0xC51B, 0x384A, 0xC51C, 0xC51C, 0x097E, 0xC51D, 0xC527, 0x3851, - 0xC528, 0xC529, 0x097F, 0xC52A, 0xC52B, 0x385C, 0xC52C, 0xC52C, 0x0981, - 0xC52D, 0xC52F, 0x385E, 0xC530, 0xC530, 0x0982, 0xC531, 0xC537, 0x3861, - 0xC538, 0xC539, 0x0983, 0xC53A, 0xC53A, 0x3868, 0xC53B, 0xC53B, 0x0985, - 0xC53C, 0xC53C, 0x3869, 0xC53D, 0xC53D, 0x0986, 0xC53E, 0xC543, 0x386A, - 0xC544, 0xC545, 0x0987, 0xC546, 0xC547, 0x3870, 0xC548, 0xC54A, 0x0989, - 0xC54B, 0xC54B, 0x3872, 0xC54C, 0xC54E, 0x098C, 0xC54F, 0xC552, 0x3873, - 0xC553, 0xC555, 0x098F, 0xC556, 0xC556, 0x3877, 0xC557, 0xC559, 0x0992, - 0xC55A, 0xC55C, 0x3878, 0xC55D, 0xC55E, 0x0995, 0xC55F, 0xC55F, 0x387B, - 0xC560, 0xC561, 0x0997, 0xC562, 0xC563, 0x387C, 0xC564, 0xC564, 0x0999, - 0xC565, 0xC567, 0x387E, 0xC568, 0xC568, 0x099A, 0xC569, 0xC56F, 0x3881, - 0xC570, 0xC571, 0x099B, 0xC572, 0xC572, 0x3888, 0xC573, 0xC575, 0x099D, - 0xC576, 0xC57B, 0x3889, 0xC57C, 0xC57D, 0x09A0, 0xC57E, 0xC57F, 0x388F, - 0xC580, 0xC580, 0x09A2, 0xC581, 0xC583, 0x3891, 0xC584, 0xC584, 0x09A3, - 0xC585, 0xC586, 0x3894, 0xC587, 0xC587, 0x09A4, 0xC588, 0xC58B, 0x3896, - 0xC58C, 0xC58D, 0x09A5, 0xC58E, 0xC58E, 0x389A, 0xC58F, 0xC58F, 0x09A7, - 0xC590, 0xC590, 0x389B, 0xC591, 0xC591, 0x09A8, 0xC592, 0xC594, 0x389C, - 0xC595, 0xC595, 0x09A9, 0xC596, 0xC596, 0x389F, 0xC597, 0xC598, 0x09AA, - 0xC599, 0xC59B, 0x38A0, 0xC59C, 0xC59C, 0x09AC, 0xC59D, 0xC59F, 0x38A3, - 0xC5A0, 0xC5A0, 0x09AD, 0xC5A1, 0xC5A8, 0x38A6, 0xC5A9, 0xC5A9, 0x09AE, - 0xC5AA, 0xC5B3, 0x38AE, 0xC5B4, 0xC5B5, 0x09AF, 0xC5B6, 0xC5B7, 0x38B8, - 0xC5B8, 0xC5B9, 0x09B1, 0xC5BA, 0xC5BA, 0x38BA, 0xC5BB, 0xC5BE, 0x09B3, - 0xC5BF, 0xC5C3, 0x38BB, 0xC5C4, 0xC5CA, 0x09B7, 0xC5CB, 0xC5CB, 0x38C0, - 0xC5CC, 0xC5CC, 0x09BE, 0xC5CD, 0xC5CD, 0x38C1, 0xC5CE, 0xC5CE, 0x09BF, - 0xC5CF, 0xC5CF, 0x38C2, 0xC5D0, 0xC5D1, 0x09C0, 0xC5D2, 0xC5D3, 0x38C3, - 0xC5D4, 0xC5D4, 0x09C2, 0xC5D5, 0xC5D7, 0x38C5, 0xC5D8, 0xC5D8, 0x09C3, - 0xC5D9, 0xC5DF, 0x38C8, 0xC5E0, 0xC5E1, 0x09C4, 0xC5E2, 0xC5E2, 0x38CF, - 0xC5E3, 0xC5E3, 0x09C6, 0xC5E4, 0xC5E4, 0x38D0, 0xC5E5, 0xC5E5, 0x09C7, - 0xC5E6, 0xC5EB, 0x38D1, 0xC5EC, 0xC5EE, 0x09C8, 0xC5EF, 0xC5EF, 0x38D7, - 0xC5F0, 0xC5F0, 0x09CB, 0xC5F1, 0xC5F3, 0x38D8, 0xC5F4, 0xC5F4, 0x09CC, - 0xC5F5, 0xC5F5, 0x38DB, 0xC5F6, 0xC5F7, 0x09CD, 0xC5F8, 0xC5FB, 0x38DC, - 0xC5FC, 0xC5FF, 0x09CF, 0xC600, 0xC601, 0x09D3, 0xC602, 0xC604, 0x38E0, - 0xC605, 0xC608, 0x09D5, 0xC609, 0xC60B, 0x38E3, 0xC60C, 0xC60C, 0x09D9, - 0xC60D, 0xC60F, 0x38E6, 0xC610, 0xC610, 0x09DA, 0xC611, 0xC617, 0x38E9, - 0xC618, 0xC619, 0x09DB, 0xC61A, 0xC61A, 0x38F0, 0xC61B, 0xC61C, 0x09DD, - 0xC61D, 0xC623, 0x38F1, 0xC624, 0xC625, 0x09DF, 0xC626, 0xC627, 0x38F8, - 0xC628, 0xC628, 0x09E1, 0xC629, 0xC62B, 0x38FA, 0xC62C, 0xC62E, 0x09E2, - 0xC62F, 0xC62F, 0x38FD, 0xC630, 0xC630, 0x09E5, 0xC631, 0xC632, 0x38FE, - 0xC633, 0xC635, 0x09E6, 0xC636, 0xC636, 0x3900, 0xC637, 0xC637, 0x09E9, - 0xC638, 0xC638, 0x3901, 0xC639, 0xC639, 0x09EA, 0xC63A, 0xC63A, 0x3902, - 0xC63B, 0xC63B, 0x09EB, 0xC63C, 0xC63F, 0x3903, 0xC640, 0xC641, 0x09EC, - 0xC642, 0xC643, 0x3907, 0xC644, 0xC644, 0x09EE, 0xC645, 0xC647, 0x3909, - 0xC648, 0xC648, 0x09EF, 0xC649, 0xC64F, 0x390C, 0xC650, 0xC651, 0x09F0, - 0xC652, 0xC652, 0x3913, 0xC653, 0xC655, 0x09F2, 0xC656, 0xC65B, 0x3914, - 0xC65C, 0xC65D, 0x09F5, 0xC65E, 0xC65F, 0x391A, 0xC660, 0xC660, 0x09F7, - 0xC661, 0xC66B, 0x391C, 0xC66C, 0xC66C, 0x09F8, 0xC66D, 0xC66E, 0x3927, - 0xC66F, 0xC66F, 0x09F9, 0xC670, 0xC670, 0x3929, 0xC671, 0xC671, 0x09FA, - 0xC672, 0xC677, 0x392A, 0xC678, 0xC679, 0x09FB, 0xC67A, 0xC67B, 0x3930, - 0xC67C, 0xC67C, 0x09FD, 0xC67D, 0xC67F, 0x3932, 0xC680, 0xC680, 0x09FE, - 0xC681, 0xC687, 0x3935, 0xC688, 0xC689, 0x09FF, 0xC68A, 0xC68A, 0x393C, - 0xC68B, 0xC68B, 0x0A01, 0xC68C, 0xC68C, 0x393D, 0xC68D, 0xC68D, 0x0A02, - 0xC68E, 0xC693, 0x393E, 0xC694, 0xC695, 0x0A03, 0xC696, 0xC697, 0x3944, - 0xC698, 0xC698, 0x0A05, 0xC699, 0xC69B, 0x3946, 0xC69C, 0xC69C, 0x0A06, - 0xC69D, 0xC6A3, 0x3949, 0xC6A4, 0xC6A5, 0x0A07, 0xC6A6, 0xC6A6, 0x3950, - 0xC6A7, 0xC6A7, 0x0A09, 0xC6A8, 0xC6A8, 0x3951, 0xC6A9, 0xC6A9, 0x0A0A, - 0xC6AA, 0xC6AF, 0x3952, 0xC6B0, 0xC6B1, 0x0A0B, 0xC6B2, 0xC6B3, 0x3958, - 0xC6B4, 0xC6B4, 0x0A0D, 0xC6B5, 0xC6B7, 0x395A, 0xC6B8, 0xC6BA, 0x0A0E, - 0xC6BB, 0xC6BF, 0x395D, 0xC6C0, 0xC6C1, 0x0A11, 0xC6C2, 0xC6C2, 0x3962, - 0xC6C3, 0xC6C3, 0x0A13, 0xC6C4, 0xC6C4, 0x3963, 0xC6C5, 0xC6C5, 0x0A14, - 0xC6C6, 0xC6CB, 0x3964, 0xC6CC, 0xC6CD, 0x0A15, 0xC6CE, 0xC6CF, 0x396A, - 0xC6D0, 0xC6D0, 0x0A17, 0xC6D1, 0xC6D3, 0x396C, 0xC6D4, 0xC6D4, 0x0A18, - 0xC6D5, 0xC6DB, 0x396F, 0xC6DC, 0xC6DD, 0x0A19, 0xC6DE, 0xC6DF, 0x3976, - 0xC6E0, 0xC6E1, 0x0A1B, 0xC6E2, 0xC6E7, 0x3978, 0xC6E8, 0xC6E9, 0x0A1D, - 0xC6EA, 0xC6EB, 0x397E, 0xC6EC, 0xC6EC, 0x0A1F, 0xC6ED, 0xC6EF, 0x3980, - 0xC6F0, 0xC6F0, 0x0A20, 0xC6F1, 0xC6F7, 0x3983, 0xC6F8, 0xC6F9, 0x0A21, - 0xC6FA, 0xC6FC, 0x398A, 0xC6FD, 0xC6FD, 0x0A23, 0xC6FE, 0xC6FF, 0x398D, - 0xC700, 0xC703, 0x398F, 0xC704, 0xC705, 0x0A24, 0xC706, 0xC707, 0x3993, - 0xC708, 0xC708, 0x0A26, 0xC709, 0xC70B, 0x3995, 0xC70C, 0xC70C, 0x0A27, - 0xC70D, 0xC713, 0x3998, 0xC714, 0xC715, 0x0A28, 0xC716, 0xC716, 0x399F, - 0xC717, 0xC717, 0x0A2A, 0xC718, 0xC718, 0x39A0, 0xC719, 0xC719, 0x0A2B, - 0xC71A, 0xC71F, 0x39A1, 0xC720, 0xC721, 0x0A2C, 0xC722, 0xC723, 0x39A7, - 0xC724, 0xC724, 0x0A2E, 0xC725, 0xC727, 0x39A9, 0xC728, 0xC728, 0x0A2F, - 0xC729, 0xC72F, 0x39AC, 0xC730, 0xC731, 0x0A30, 0xC732, 0xC732, 0x39B3, - 0xC733, 0xC733, 0x0A32, 0xC734, 0xC734, 0x39B4, 0xC735, 0xC735, 0x0A33, - 0xC736, 0xC736, 0x39B5, 0xC737, 0xC737, 0x0A34, 0xC738, 0xC73B, 0x39B6, - 0xC73C, 0xC73D, 0x0A35, 0xC73E, 0xC73F, 0x39BA, 0xC740, 0xC740, 0x0A37, - 0xC741, 0xC743, 0x39BC, 0xC744, 0xC744, 0x0A38, 0xC745, 0xC749, 0x39BF, - 0xC74A, 0xC74A, 0x0A39, 0xC74B, 0xC74B, 0x39C4, 0xC74C, 0xC74D, 0x0A3A, - 0xC74E, 0xC74E, 0x39C5, 0xC74F, 0xC74F, 0x0A3C, 0xC750, 0xC750, 0x39C6, - 0xC751, 0xC758, 0x0A3D, 0xC759, 0xC75B, 0x39C7, 0xC75C, 0xC75C, 0x0A45, - 0xC75D, 0xC75F, 0x39CA, 0xC760, 0xC760, 0x0A46, 0xC761, 0xC767, 0x39CD, - 0xC768, 0xC768, 0x0A47, 0xC769, 0xC76A, 0x39D4, 0xC76B, 0xC76B, 0x0A48, - 0xC76C, 0xC773, 0x39D6, 0xC774, 0xC775, 0x0A49, 0xC776, 0xC777, 0x39DE, - 0xC778, 0xC778, 0x0A4B, 0xC779, 0xC77B, 0x39E0, 0xC77C, 0xC77E, 0x0A4C, - 0xC77F, 0xC782, 0x39E3, 0xC783, 0xC785, 0x0A4F, 0xC786, 0xC786, 0x39E7, - 0xC787, 0xC78A, 0x0A52, 0xC78B, 0xC78D, 0x39E8, 0xC78E, 0xC78E, 0x0A56, - 0xC78F, 0xC78F, 0x39EB, 0xC790, 0xC791, 0x0A57, 0xC792, 0xC793, 0x39EC, - 0xC794, 0xC794, 0x0A59, 0xC795, 0xC795, 0x39EE, 0xC796, 0xC798, 0x0A5A, - 0xC799, 0xC799, 0x39EF, 0xC79A, 0xC79A, 0x0A5D, 0xC79B, 0xC79F, 0x39F0, - 0xC7A0, 0xC7A1, 0x0A5E, 0xC7A2, 0xC7A2, 0x39F5, 0xC7A3, 0xC7A6, 0x0A60, - 0xC7A7, 0xC7AB, 0x39F6, 0xC7AC, 0xC7AD, 0x0A64, 0xC7AE, 0xC7AF, 0x39FB, - 0xC7B0, 0xC7B0, 0x0A66, 0xC7B1, 0xC7B3, 0x39FD, 0xC7B4, 0xC7B4, 0x0A67, - 0xC7B5, 0xC7BB, 0x3A00, 0xC7BC, 0xC7BD, 0x0A68, 0xC7BE, 0xC7BE, 0x3A07, - 0xC7BF, 0xC7C1, 0x0A6A, 0xC7C2, 0xC7C7, 0x3A08, 0xC7C8, 0xC7C9, 0x0A6D, - 0xC7CA, 0xC7CB, 0x3A0E, 0xC7CC, 0xC7CC, 0x0A6F, 0xC7CD, 0xC7CD, 0x3A10, - 0xC7CE, 0xC7CE, 0x0A70, 0xC7CF, 0xC7CF, 0x3A11, 0xC7D0, 0xC7D0, 0x0A71, - 0xC7D1, 0xC7D7, 0x3A12, 0xC7D8, 0xC7D8, 0x0A72, 0xC7D9, 0xC7DC, 0x3A19, - 0xC7DD, 0xC7DD, 0x0A73, 0xC7DE, 0xC7E3, 0x3A1D, 0xC7E4, 0xC7E4, 0x0A74, - 0xC7E5, 0xC7E7, 0x3A23, 0xC7E8, 0xC7E8, 0x0A75, 0xC7E9, 0xC7EB, 0x3A26, - 0xC7EC, 0xC7EC, 0x0A76, 0xC7ED, 0xC7FF, 0x3A29, 0xC800, 0xC801, 0x0A77, - 0xC802, 0xC803, 0x3A3C, 0xC804, 0xC804, 0x0A79, 0xC805, 0xC807, 0x3A3E, - 0xC808, 0xC808, 0x0A7A, 0xC809, 0xC809, 0x3A41, 0xC80A, 0xC80A, 0x0A7B, - 0xC80B, 0xC80F, 0x3A42, 0xC810, 0xC811, 0x0A7C, 0xC812, 0xC812, 0x3A47, - 0xC813, 0xC813, 0x0A7E, 0xC814, 0xC814, 0x3A48, 0xC815, 0xC816, 0x0A7F, - 0xC817, 0xC81B, 0x3A49, 0xC81C, 0xC81D, 0x0A81, 0xC81E, 0xC81F, 0x3A4E, - 0xC820, 0xC820, 0x0A83, 0xC821, 0xC823, 0x3A50, 0xC824, 0xC824, 0x0A84, - 0xC825, 0xC82B, 0x3A53, 0xC82C, 0xC82D, 0x0A85, 0xC82E, 0xC82E, 0x3A5A, - 0xC82F, 0xC82F, 0x0A87, 0xC830, 0xC830, 0x3A5B, 0xC831, 0xC831, 0x0A88, - 0xC832, 0xC837, 0x3A5C, 0xC838, 0xC838, 0x0A89, 0xC839, 0xC83B, 0x3A62, - 0xC83C, 0xC83C, 0x0A8A, 0xC83D, 0xC83F, 0x3A65, 0xC840, 0xC840, 0x0A8B, - 0xC841, 0xC847, 0x3A68, 0xC848, 0xC849, 0x0A8C, 0xC84A, 0xC84B, 0x3A6F, - 0xC84C, 0xC84D, 0x0A8E, 0xC84E, 0xC853, 0x3A71, 0xC854, 0xC854, 0x0A90, - 0xC855, 0xC86F, 0x3A77, 0xC870, 0xC871, 0x0A91, 0xC872, 0xC873, 0x3A92, - 0xC874, 0xC874, 0x0A93, 0xC875, 0xC877, 0x3A94, 0xC878, 0xC878, 0x0A94, - 0xC879, 0xC879, 0x3A97, 0xC87A, 0xC87A, 0x0A95, 0xC87B, 0xC87F, 0x3A98, - 0xC880, 0xC881, 0x0A96, 0xC882, 0xC882, 0x3A9D, 0xC883, 0xC883, 0x0A98, - 0xC884, 0xC884, 0x3A9E, 0xC885, 0xC887, 0x0A99, 0xC888, 0xC88A, 0x3A9F, - 0xC88B, 0xC88D, 0x0A9C, 0xC88E, 0xC893, 0x3AA2, 0xC894, 0xC894, 0x0A9F, - 0xC895, 0xC89C, 0x3AA8, 0xC89D, 0xC89D, 0x0AA0, 0xC89E, 0xC89E, 0x3AB0, - 0xC89F, 0xC89F, 0x0AA1, 0xC8A0, 0xC8A0, 0x3AB1, 0xC8A1, 0xC8A1, 0x0AA2, - 0xC8A2, 0xC8A7, 0x3AB2, 0xC8A8, 0xC8A8, 0x0AA3, 0xC8A9, 0xC8BB, 0x3AB8, - 0xC8BC, 0xC8BD, 0x0AA4, 0xC8BE, 0xC8C3, 0x3ACB, 0xC8C4, 0xC8C4, 0x0AA6, - 0xC8C5, 0xC8C7, 0x3AD1, 0xC8C8, 0xC8C8, 0x0AA7, 0xC8C9, 0xC8CB, 0x3AD4, - 0xC8CC, 0xC8CC, 0x0AA8, 0xC8CD, 0xC8D3, 0x3AD7, 0xC8D4, 0xC8D5, 0x0AA9, - 0xC8D6, 0xC8D6, 0x3ADE, 0xC8D7, 0xC8D7, 0x0AAB, 0xC8D8, 0xC8D8, 0x3ADF, - 0xC8D9, 0xC8D9, 0x0AAC, 0xC8DA, 0xC8DF, 0x3AE0, 0xC8E0, 0xC8E1, 0x0AAD, - 0xC8E2, 0xC8E3, 0x3AE6, 0xC8E4, 0xC8E4, 0x0AAF, 0xC8E5, 0xC8F4, 0x3AE8, - 0xC8F5, 0xC8F5, 0x0AB0, 0xC8F6, 0xC8FB, 0x3AF8, 0xC8FC, 0xC8FD, 0x0AB1, - 0xC8FE, 0xC8FF, 0x3AFE, 0xC900, 0xC900, 0x0AB3, 0xC901, 0xC903, 0x3B00, - 0xC904, 0xC906, 0x0AB4, 0xC907, 0xC90B, 0x3B03, 0xC90C, 0xC90D, 0x0AB7, - 0xC90E, 0xC90E, 0x3B08, 0xC90F, 0xC90F, 0x0AB9, 0xC910, 0xC910, 0x3B09, - 0xC911, 0xC911, 0x0ABA, 0xC912, 0xC917, 0x3B0A, 0xC918, 0xC918, 0x0ABB, - 0xC919, 0xC92B, 0x3B10, 0xC92C, 0xC92C, 0x0ABC, 0xC92D, 0xC933, 0x3B23, - 0xC934, 0xC934, 0x0ABD, 0xC935, 0xC94F, 0x3B2A, 0xC950, 0xC951, 0x0ABE, - 0xC952, 0xC953, 0x3B45, 0xC954, 0xC954, 0x0AC0, 0xC955, 0xC957, 0x3B47, - 0xC958, 0xC958, 0x0AC1, 0xC959, 0xC95F, 0x3B4A, 0xC960, 0xC961, 0x0AC2, - 0xC962, 0xC962, 0x3B51, 0xC963, 0xC963, 0x0AC4, 0xC964, 0xC96B, 0x3B52, - 0xC96C, 0xC96C, 0x0AC5, 0xC96D, 0xC96F, 0x3B5A, 0xC970, 0xC970, 0x0AC6, - 0xC971, 0xC973, 0x3B5D, 0xC974, 0xC974, 0x0AC7, 0xC975, 0xC97B, 0x3B60, - 0xC97C, 0xC97C, 0x0AC8, 0xC97D, 0xC987, 0x3B67, 0xC988, 0xC989, 0x0AC9, - 0xC98A, 0xC98B, 0x3B72, 0xC98C, 0xC98C, 0x0ACB, 0xC98D, 0xC98F, 0x3B74, - 0xC990, 0xC990, 0x0ACC, 0xC991, 0xC997, 0x3B77, 0xC998, 0xC999, 0x0ACD, - 0xC99A, 0xC99A, 0x3B7E, 0xC99B, 0xC99B, 0x0ACF, 0xC99C, 0xC99C, 0x3B7F, - 0xC99D, 0xC99D, 0x0AD0, 0xC99E, 0xC9BF, 0x3B80, 0xC9C0, 0xC9C1, 0x0AD1, - 0xC9C2, 0xC9C3, 0x3BA2, 0xC9C4, 0xC9C4, 0x0AD3, 0xC9C5, 0xC9C6, 0x3BA4, - 0xC9C7, 0xC9C8, 0x0AD4, 0xC9C9, 0xC9C9, 0x3BA6, 0xC9CA, 0xC9CA, 0x0AD6, - 0xC9CB, 0xC9CF, 0x3BA7, 0xC9D0, 0xC9D1, 0x0AD7, 0xC9D2, 0xC9D2, 0x3BAC, - 0xC9D3, 0xC9D3, 0x0AD9, 0xC9D4, 0xC9D4, 0x3BAD, 0xC9D5, 0xC9D6, 0x0ADA, - 0xC9D7, 0xC9D8, 0x3BAE, 0xC9D9, 0xC9DA, 0x0ADC, 0xC9DB, 0xC9DB, 0x3BB0, - 0xC9DC, 0xC9DD, 0x0ADE, 0xC9DE, 0xC9DF, 0x3BB1, 0xC9E0, 0xC9E0, 0x0AE0, - 0xC9E1, 0xC9E1, 0x3BB3, 0xC9E2, 0xC9E2, 0x0AE1, 0xC9E3, 0xC9E3, 0x3BB4, - 0xC9E4, 0xC9E4, 0x0AE2, 0xC9E5, 0xC9E6, 0x3BB5, 0xC9E7, 0xC9E7, 0x0AE3, - 0xC9E8, 0xC9EB, 0x3BB7, 0xC9EC, 0xC9ED, 0x0AE4, 0xC9EE, 0xC9EE, 0x3BBB, - 0xC9EF, 0xC9F1, 0x0AE6, 0xC9F2, 0xC9F7, 0x3BBC, 0xC9F8, 0xC9F9, 0x0AE9, - 0xC9FA, 0xC9FB, 0x3BC2, 0xC9FC, 0xC9FC, 0x0AEB, 0xC9FD, 0xC9FF, 0x3BC4, - 0xCA00, 0xCA00, 0x0AEC, 0xCA01, 0xCA07, 0x3BC7, 0xCA08, 0xCA09, 0x0AED, - 0xCA0A, 0xCA0A, 0x3BCE, 0xCA0B, 0xCA0D, 0x0AEF, 0xCA0E, 0xCA13, 0x3BCF, - 0xCA14, 0xCA14, 0x0AF2, 0xCA15, 0xCA17, 0x3BD5, 0xCA18, 0xCA18, 0x0AF3, - 0xCA19, 0xCA28, 0x3BD8, 0xCA29, 0xCA29, 0x0AF4, 0xCA2A, 0xCA4B, 0x3BE8, - 0xCA4C, 0xCA4D, 0x0AF5, 0xCA4E, 0xCA4F, 0x3C0A, 0xCA50, 0xCA50, 0x0AF7, - 0xCA51, 0xCA53, 0x3C0C, 0xCA54, 0xCA54, 0x0AF8, 0xCA55, 0xCA5B, 0x3C0F, - 0xCA5C, 0xCA5D, 0x0AF9, 0xCA5E, 0xCA5E, 0x3C16, 0xCA5F, 0xCA61, 0x0AFB, - 0xCA62, 0xCA67, 0x3C17, 0xCA68, 0xCA68, 0x0AFE, 0xCA69, 0xCA7C, 0x3C1D, - 0xCA7D, 0xCA7D, 0x0AFF, 0xCA7E, 0xCA83, 0x3C31, 0xCA84, 0xCA84, 0x0B00, - 0xCA85, 0xCA97, 0x3C37, 0xCA98, 0xCA98, 0x0B01, 0xCA99, 0xCABB, 0x3C4A, - 0xCABC, 0xCABD, 0x0B02, 0xCABE, 0xCABF, 0x3C6D, 0xCAC0, 0xCAC0, 0x0B04, - 0xCAC1, 0xCAC3, 0x3C6F, 0xCAC4, 0xCAC4, 0x0B05, 0xCAC5, 0xCACB, 0x3C72, - 0xCACC, 0xCACD, 0x0B06, 0xCACE, 0xCACE, 0x3C79, 0xCACF, 0xCACF, 0x0B08, - 0xCAD0, 0xCAD0, 0x3C7A, 0xCAD1, 0xCAD1, 0x0B09, 0xCAD2, 0xCAD2, 0x3C7B, - 0xCAD3, 0xCAD3, 0x0B0A, 0xCAD4, 0xCAD7, 0x3C7C, 0xCAD8, 0xCAD9, 0x0B0B, - 0xCADA, 0xCADF, 0x3C80, 0xCAE0, 0xCAE0, 0x0B0D, 0xCAE1, 0xCAEB, 0x3C86, - 0xCAEC, 0xCAEC, 0x0B0E, 0xCAED, 0xCAF3, 0x3C91, 0xCAF4, 0xCAF4, 0x0B0F, - 0xCAF5, 0xCAFF, 0x3C98, 0xCB00, 0xCB07, 0x3CA3, 0xCB08, 0xCB08, 0x0B10, - 0xCB09, 0xCB0F, 0x3CAB, 0xCB10, 0xCB10, 0x0B11, 0xCB11, 0xCB13, 0x3CB2, - 0xCB14, 0xCB14, 0x0B12, 0xCB15, 0xCB17, 0x3CB5, 0xCB18, 0xCB18, 0x0B13, - 0xCB19, 0xCB1F, 0x3CB8, 0xCB20, 0xCB21, 0x0B14, 0xCB22, 0xCB40, 0x3CBF, - 0xCB41, 0xCB41, 0x0B16, 0xCB42, 0xCB47, 0x3CDE, 0xCB48, 0xCB49, 0x0B17, - 0xCB4A, 0xCB4B, 0x3CE4, 0xCB4C, 0xCB4C, 0x0B19, 0xCB4D, 0xCB4F, 0x3CE6, - 0xCB50, 0xCB50, 0x0B1A, 0xCB51, 0xCB57, 0x3CE9, 0xCB58, 0xCB59, 0x0B1B, - 0xCB5A, 0xCB5C, 0x3CF0, 0xCB5D, 0xCB5D, 0x0B1D, 0xCB5E, 0xCB63, 0x3CF3, - 0xCB64, 0xCB64, 0x0B1E, 0xCB65, 0xCB77, 0x3CF9, 0xCB78, 0xCB79, 0x0B1F, - 0xCB7A, 0xCB9B, 0x3D0C, 0xCB9C, 0xCB9C, 0x0B21, 0xCB9D, 0xCBB7, 0x3D2E, - 0xCBB8, 0xCBB8, 0x0B22, 0xCBB9, 0xCBD3, 0x3D49, 0xCBD4, 0xCBD4, 0x0B23, - 0xCBD5, 0xCBE3, 0x3D64, 0xCBE4, 0xCBE4, 0x0B24, 0xCBE5, 0xCBE6, 0x3D73, - 0xCBE7, 0xCBE7, 0x0B25, 0xCBE8, 0xCBE8, 0x3D75, 0xCBE9, 0xCBE9, 0x0B26, - 0xCBEA, 0xCBFF, 0x3D76, 0xCC00, 0xCC0B, 0x3D8C, 0xCC0C, 0xCC0D, 0x0B27, - 0xCC0E, 0xCC0F, 0x3D98, 0xCC10, 0xCC10, 0x0B29, 0xCC11, 0xCC13, 0x3D9A, - 0xCC14, 0xCC14, 0x0B2A, 0xCC15, 0xCC1B, 0x3D9D, 0xCC1C, 0xCC1D, 0x0B2B, - 0xCC1E, 0xCC20, 0x3DA4, 0xCC21, 0xCC22, 0x0B2D, 0xCC23, 0xCC26, 0x3DA7, - 0xCC27, 0xCC29, 0x0B2F, 0xCC2A, 0xCC2B, 0x3DAB, 0xCC2C, 0xCC2C, 0x0B32, - 0xCC2D, 0xCC2D, 0x3DAD, 0xCC2E, 0xCC2E, 0x0B33, 0xCC2F, 0xCC2F, 0x3DAE, - 0xCC30, 0xCC30, 0x0B34, 0xCC31, 0xCC37, 0x3DAF, 0xCC38, 0xCC39, 0x0B35, - 0xCC3A, 0xCC3A, 0x3DB6, 0xCC3B, 0xCC3E, 0x0B37, 0xCC3F, 0xCC43, 0x3DB7, - 0xCC44, 0xCC45, 0x0B3B, 0xCC46, 0xCC47, 0x3DBC, 0xCC48, 0xCC48, 0x0B3D, - 0xCC49, 0xCC4B, 0x3DBE, 0xCC4C, 0xCC4C, 0x0B3E, 0xCC4D, 0xCC53, 0x3DC1, - 0xCC54, 0xCC55, 0x0B3F, 0xCC56, 0xCC56, 0x3DC8, 0xCC57, 0xCC59, 0x0B41, - 0xCC5A, 0xCC5F, 0x3DC9, 0xCC60, 0xCC60, 0x0B44, 0xCC61, 0xCC63, 0x3DCF, - 0xCC64, 0xCC64, 0x0B45, 0xCC65, 0xCC65, 0x3DD2, 0xCC66, 0xCC66, 0x0B46, - 0xCC67, 0xCC67, 0x3DD3, 0xCC68, 0xCC68, 0x0B47, 0xCC69, 0xCC6F, 0x3DD4, - 0xCC70, 0xCC70, 0x0B48, 0xCC71, 0xCC74, 0x3DDB, 0xCC75, 0xCC75, 0x0B49, - 0xCC76, 0xCC97, 0x3DDF, 0xCC98, 0xCC99, 0x0B4A, 0xCC9A, 0xCC9B, 0x3E01, - 0xCC9C, 0xCC9C, 0x0B4C, 0xCC9D, 0xCC9F, 0x3E03, 0xCCA0, 0xCCA0, 0x0B4D, - 0xCCA1, 0xCCA7, 0x3E06, 0xCCA8, 0xCCA9, 0x0B4E, 0xCCAA, 0xCCAA, 0x3E0D, - 0xCCAB, 0xCCAD, 0x0B50, 0xCCAE, 0xCCB3, 0x3E0E, 0xCCB4, 0xCCB5, 0x0B53, - 0xCCB6, 0xCCB7, 0x3E14, 0xCCB8, 0xCCB8, 0x0B55, 0xCCB9, 0xCCBB, 0x3E16, - 0xCCBC, 0xCCBC, 0x0B56, 0xCCBD, 0xCCC3, 0x3E19, 0xCCC4, 0xCCC5, 0x0B57, - 0xCCC6, 0xCCC6, 0x3E20, 0xCCC7, 0xCCC7, 0x0B59, 0xCCC8, 0xCCC8, 0x3E21, - 0xCCC9, 0xCCC9, 0x0B5A, 0xCCCA, 0xCCCF, 0x3E22, 0xCCD0, 0xCCD0, 0x0B5B, - 0xCCD1, 0xCCD3, 0x3E28, 0xCCD4, 0xCCD4, 0x0B5C, 0xCCD5, 0xCCE3, 0x3E2B, - 0xCCE4, 0xCCE4, 0x0B5D, 0xCCE5, 0xCCEB, 0x3E3A, 0xCCEC, 0xCCEC, 0x0B5E, - 0xCCED, 0xCCEF, 0x3E41, 0xCCF0, 0xCCF0, 0x0B5F, 0xCCF1, 0xCCFF, 0x3E44, - 0xCD00, 0xCD00, 0x3E53, 0xCD01, 0xCD01, 0x0B60, 0xCD02, 0xCD07, 0x3E54, - 0xCD08, 0xCD09, 0x0B61, 0xCD0A, 0xCD0B, 0x3E5A, 0xCD0C, 0xCD0C, 0x0B63, - 0xCD0D, 0xCD0F, 0x3E5C, 0xCD10, 0xCD10, 0x0B64, 0xCD11, 0xCD17, 0x3E5F, - 0xCD18, 0xCD19, 0x0B65, 0xCD1A, 0xCD1A, 0x3E66, 0xCD1B, 0xCD1B, 0x0B67, - 0xCD1C, 0xCD1C, 0x3E67, 0xCD1D, 0xCD1D, 0x0B68, 0xCD1E, 0xCD23, 0x3E68, - 0xCD24, 0xCD24, 0x0B69, 0xCD25, 0xCD27, 0x3E6E, 0xCD28, 0xCD28, 0x0B6A, - 0xCD29, 0xCD2B, 0x3E71, 0xCD2C, 0xCD2C, 0x0B6B, 0xCD2D, 0xCD38, 0x3E74, - 0xCD39, 0xCD39, 0x0B6C, 0xCD3A, 0xCD5B, 0x3E80, 0xCD5C, 0xCD5C, 0x0B6D, - 0xCD5D, 0xCD5F, 0x3EA2, 0xCD60, 0xCD60, 0x0B6E, 0xCD61, 0xCD63, 0x3EA5, - 0xCD64, 0xCD64, 0x0B6F, 0xCD65, 0xCD6B, 0x3EA8, 0xCD6C, 0xCD6D, 0x0B70, - 0xCD6E, 0xCD6E, 0x3EAF, 0xCD6F, 0xCD6F, 0x0B72, 0xCD70, 0xCD70, 0x3EB0, - 0xCD71, 0xCD71, 0x0B73, 0xCD72, 0xCD77, 0x3EB1, 0xCD78, 0xCD78, 0x0B74, - 0xCD79, 0xCD87, 0x3EB7, 0xCD88, 0xCD88, 0x0B75, 0xCD89, 0xCD93, 0x3EC6, - 0xCD94, 0xCD95, 0x0B76, 0xCD96, 0xCD97, 0x3ED1, 0xCD98, 0xCD98, 0x0B78, - 0xCD99, 0xCD9B, 0x3ED3, 0xCD9C, 0xCD9C, 0x0B79, 0xCD9D, 0xCDA3, 0x3ED6, - 0xCDA4, 0xCDA5, 0x0B7A, 0xCDA6, 0xCDA6, 0x3EDD, 0xCDA7, 0xCDA7, 0x0B7C, - 0xCDA8, 0xCDA8, 0x3EDE, 0xCDA9, 0xCDA9, 0x0B7D, 0xCDAA, 0xCDAF, 0x3EDF, - 0xCDB0, 0xCDB0, 0x0B7E, 0xCDB1, 0xCDC3, 0x3EE5, 0xCDC4, 0xCDC4, 0x0B7F, - 0xCDC5, 0xCDCB, 0x3EF8, 0xCDCC, 0xCDCC, 0x0B80, 0xCDCD, 0xCDCF, 0x3EFF, - 0xCDD0, 0xCDD0, 0x0B81, 0xCDD1, 0xCDE7, 0x3F02, 0xCDE8, 0xCDE8, 0x0B82, - 0xCDE9, 0xCDEB, 0x3F19, 0xCDEC, 0xCDEC, 0x0B83, 0xCDED, 0xCDEF, 0x3F1C, - 0xCDF0, 0xCDF0, 0x0B84, 0xCDF1, 0xCDF7, 0x3F1F, 0xCDF8, 0xCDF9, 0x0B85, - 0xCDFA, 0xCDFA, 0x3F26, 0xCDFB, 0xCDFB, 0x0B87, 0xCDFC, 0xCDFC, 0x3F27, - 0xCDFD, 0xCDFD, 0x0B88, 0xCDFE, 0xCDFF, 0x3F28, 0xCE00, 0xCE03, 0x3F2A, - 0xCE04, 0xCE04, 0x0B89, 0xCE05, 0xCE07, 0x3F2E, 0xCE08, 0xCE08, 0x0B8A, - 0xCE09, 0xCE0B, 0x3F31, 0xCE0C, 0xCE0C, 0x0B8B, 0xCE0D, 0xCE13, 0x3F34, - 0xCE14, 0xCE14, 0x0B8C, 0xCE15, 0xCE18, 0x3F3B, 0xCE19, 0xCE19, 0x0B8D, - 0xCE1A, 0xCE1F, 0x3F3F, 0xCE20, 0xCE21, 0x0B8E, 0xCE22, 0xCE23, 0x3F45, - 0xCE24, 0xCE24, 0x0B90, 0xCE25, 0xCE27, 0x3F47, 0xCE28, 0xCE28, 0x0B91, - 0xCE29, 0xCE2F, 0x3F4A, 0xCE30, 0xCE31, 0x0B92, 0xCE32, 0xCE32, 0x3F51, - 0xCE33, 0xCE33, 0x0B94, 0xCE34, 0xCE34, 0x3F52, 0xCE35, 0xCE35, 0x0B95, - 0xCE36, 0xCE57, 0x3F53, 0xCE58, 0xCE59, 0x0B96, 0xCE5A, 0xCE5B, 0x3F75, - 0xCE5C, 0xCE5C, 0x0B98, 0xCE5D, 0xCE5E, 0x3F77, 0xCE5F, 0xCE61, 0x0B99, - 0xCE62, 0xCE67, 0x3F79, 0xCE68, 0xCE69, 0x0B9C, 0xCE6A, 0xCE6A, 0x3F7F, - 0xCE6B, 0xCE6B, 0x0B9E, 0xCE6C, 0xCE6C, 0x3F80, 0xCE6D, 0xCE6D, 0x0B9F, - 0xCE6E, 0xCE73, 0x3F81, 0xCE74, 0xCE75, 0x0BA0, 0xCE76, 0xCE77, 0x3F87, - 0xCE78, 0xCE78, 0x0BA2, 0xCE79, 0xCE7B, 0x3F89, 0xCE7C, 0xCE7C, 0x0BA3, - 0xCE7D, 0xCE83, 0x3F8C, 0xCE84, 0xCE85, 0x0BA4, 0xCE86, 0xCE86, 0x3F93, - 0xCE87, 0xCE87, 0x0BA6, 0xCE88, 0xCE88, 0x3F94, 0xCE89, 0xCE89, 0x0BA7, - 0xCE8A, 0xCE8F, 0x3F95, 0xCE90, 0xCE91, 0x0BA8, 0xCE92, 0xCE93, 0x3F9B, - 0xCE94, 0xCE94, 0x0BAA, 0xCE95, 0xCE97, 0x3F9D, 0xCE98, 0xCE98, 0x0BAB, - 0xCE99, 0xCE9F, 0x3FA0, 0xCEA0, 0xCEA1, 0x0BAC, 0xCEA2, 0xCEA2, 0x3FA7, - 0xCEA3, 0xCEA5, 0x0BAE, 0xCEA6, 0xCEAB, 0x3FA8, 0xCEAC, 0xCEAD, 0x0BB1, - 0xCEAE, 0xCEC0, 0x3FAE, 0xCEC1, 0xCEC1, 0x0BB3, 0xCEC2, 0xCEE3, 0x3FC1, - 0xCEE4, 0xCEE5, 0x0BB4, 0xCEE6, 0xCEE7, 0x3FE3, 0xCEE8, 0xCEE8, 0x0BB6, - 0xCEE9, 0xCEEA, 0x3FE5, 0xCEEB, 0xCEEC, 0x0BB7, 0xCEED, 0xCEF3, 0x3FE7, - 0xCEF4, 0xCEF5, 0x0BB9, 0xCEF6, 0xCEF6, 0x3FEE, 0xCEF7, 0xCEF9, 0x0BBB, - 0xCEFA, 0xCEFF, 0x3FEF, 0xCF00, 0xCF01, 0x0BBE, 0xCF02, 0xCF03, 0x3FF5, - 0xCF04, 0xCF04, 0x0BC0, 0xCF05, 0xCF07, 0x3FF7, 0xCF08, 0xCF08, 0x0BC1, - 0xCF09, 0xCF0F, 0x3FFA, 0xCF10, 0xCF11, 0x0BC2, 0xCF12, 0xCF12, 0x4001, - 0xCF13, 0xCF13, 0x0BC4, 0xCF14, 0xCF14, 0x4002, 0xCF15, 0xCF15, 0x0BC5, - 0xCF16, 0xCF1B, 0x4003, 0xCF1C, 0xCF1C, 0x0BC6, 0xCF1D, 0xCF1F, 0x4009, - 0xCF20, 0xCF20, 0x0BC7, 0xCF21, 0xCF23, 0x400C, 0xCF24, 0xCF24, 0x0BC8, - 0xCF25, 0xCF2B, 0x400F, 0xCF2C, 0xCF2D, 0x0BC9, 0xCF2E, 0xCF2E, 0x4016, - 0xCF2F, 0xCF31, 0x0BCB, 0xCF32, 0xCF37, 0x4017, 0xCF38, 0xCF38, 0x0BCE, - 0xCF39, 0xCF53, 0x401D, 0xCF54, 0xCF55, 0x0BCF, 0xCF56, 0xCF57, 0x4038, - 0xCF58, 0xCF58, 0x0BD1, 0xCF59, 0xCF5B, 0x403A, 0xCF5C, 0xCF5C, 0x0BD2, - 0xCF5D, 0xCF63, 0x403D, 0xCF64, 0xCF65, 0x0BD3, 0xCF66, 0xCF66, 0x4044, - 0xCF67, 0xCF67, 0x0BD5, 0xCF68, 0xCF68, 0x4045, 0xCF69, 0xCF69, 0x0BD6, - 0xCF6A, 0xCF6F, 0x4046, 0xCF70, 0xCF71, 0x0BD7, 0xCF72, 0xCF73, 0x404C, - 0xCF74, 0xCF74, 0x0BD9, 0xCF75, 0xCF77, 0x404E, 0xCF78, 0xCF78, 0x0BDA, - 0xCF79, 0xCF7F, 0x4051, 0xCF80, 0xCF80, 0x0BDB, 0xCF81, 0xCF84, 0x4058, - 0xCF85, 0xCF85, 0x0BDC, 0xCF86, 0xCF8B, 0x405C, 0xCF8C, 0xCF8C, 0x0BDD, - 0xCF8D, 0xCFA0, 0x4062, 0xCFA1, 0xCFA1, 0x0BDE, 0xCFA2, 0xCFA7, 0x4076, - 0xCFA8, 0xCFA8, 0x0BDF, 0xCFA9, 0xCFAF, 0x407C, 0xCFB0, 0xCFB0, 0x0BE0, - 0xCFB1, 0xCFC3, 0x4083, 0xCFC4, 0xCFC4, 0x0BE1, 0xCFC5, 0xCFDF, 0x4096, - 0xCFE0, 0xCFE1, 0x0BE2, 0xCFE2, 0xCFE3, 0x40B1, 0xCFE4, 0xCFE4, 0x0BE4, - 0xCFE5, 0xCFE7, 0x40B3, 0xCFE8, 0xCFE8, 0x0BE5, 0xCFE9, 0xCFEF, 0x40B6, - 0xCFF0, 0xCFF1, 0x0BE6, 0xCFF2, 0xCFF2, 0x40BD, 0xCFF3, 0xCFF3, 0x0BE8, - 0xCFF4, 0xCFF4, 0x40BE, 0xCFF5, 0xCFF5, 0x0BE9, 0xCFF6, 0xCFFB, 0x40BF, - 0xCFFC, 0xCFFC, 0x0BEA, 0xCFFD, 0xCFFF, 0x40C5, 0xD000, 0xD000, 0x0BEB, - 0xD001, 0xD003, 0x40C8, 0xD004, 0xD004, 0x0BEC, 0xD005, 0xD010, 0x40CB, - 0xD011, 0xD011, 0x0BED, 0xD012, 0xD017, 0x40D7, 0xD018, 0xD018, 0x0BEE, - 0xD019, 0xD02C, 0x40DD, 0xD02D, 0xD02D, 0x0BEF, 0xD02E, 0xD033, 0x40F1, - 0xD034, 0xD035, 0x0BF0, 0xD036, 0xD037, 0x40F7, 0xD038, 0xD038, 0x0BF2, - 0xD039, 0xD03B, 0x40F9, 0xD03C, 0xD03C, 0x0BF3, 0xD03D, 0xD043, 0x40FC, - 0xD044, 0xD045, 0x0BF4, 0xD046, 0xD046, 0x4103, 0xD047, 0xD047, 0x0BF6, - 0xD048, 0xD048, 0x4104, 0xD049, 0xD049, 0x0BF7, 0xD04A, 0xD04F, 0x4105, - 0xD050, 0xD050, 0x0BF8, 0xD051, 0xD053, 0x410B, 0xD054, 0xD054, 0x0BF9, - 0xD055, 0xD057, 0x410E, 0xD058, 0xD058, 0x0BFA, 0xD059, 0xD05F, 0x4111, - 0xD060, 0xD060, 0x0BFB, 0xD061, 0xD06B, 0x4118, 0xD06C, 0xD06D, 0x0BFC, - 0xD06E, 0xD06F, 0x4123, 0xD070, 0xD070, 0x0BFE, 0xD071, 0xD073, 0x4125, - 0xD074, 0xD074, 0x0BFF, 0xD075, 0xD07B, 0x4128, 0xD07C, 0xD07D, 0x0C00, - 0xD07E, 0xD080, 0x412F, 0xD081, 0xD081, 0x0C02, 0xD082, 0xD0A3, 0x4132, - 0xD0A4, 0xD0A5, 0x0C03, 0xD0A6, 0xD0A7, 0x4154, 0xD0A8, 0xD0A8, 0x0C05, - 0xD0A9, 0xD0AB, 0x4156, 0xD0AC, 0xD0AC, 0x0C06, 0xD0AD, 0xD0B3, 0x4159, - 0xD0B4, 0xD0B5, 0x0C07, 0xD0B6, 0xD0B6, 0x4160, 0xD0B7, 0xD0B7, 0x0C09, - 0xD0B8, 0xD0B8, 0x4161, 0xD0B9, 0xD0B9, 0x0C0A, 0xD0BA, 0xD0BF, 0x4162, - 0xD0C0, 0xD0C1, 0x0C0B, 0xD0C2, 0xD0C3, 0x4168, 0xD0C4, 0xD0C4, 0x0C0D, - 0xD0C5, 0xD0C7, 0x416A, 0xD0C8, 0xD0C9, 0x0C0E, 0xD0CA, 0xD0CF, 0x416D, - 0xD0D0, 0xD0D1, 0x0C10, 0xD0D2, 0xD0D2, 0x4173, 0xD0D3, 0xD0D5, 0x0C12, - 0xD0D6, 0xD0DB, 0x4174, 0xD0DC, 0xD0DD, 0x0C15, 0xD0DE, 0xD0DF, 0x417A, - 0xD0E0, 0xD0E0, 0x0C17, 0xD0E1, 0xD0E3, 0x417C, 0xD0E4, 0xD0E4, 0x0C18, - 0xD0E5, 0xD0EB, 0x417F, 0xD0EC, 0xD0ED, 0x0C19, 0xD0EE, 0xD0EE, 0x4186, - 0xD0EF, 0xD0F1, 0x0C1B, 0xD0F2, 0xD0F7, 0x4187, 0xD0F8, 0xD0F8, 0x0C1E, - 0xD0F9, 0xD0FF, 0x418D, 0xD100, 0xD10C, 0x4194, 0xD10D, 0xD10D, 0x0C1F, - 0xD10E, 0xD12F, 0x41A1, 0xD130, 0xD131, 0x0C20, 0xD132, 0xD133, 0x41C3, - 0xD134, 0xD134, 0x0C22, 0xD135, 0xD137, 0x41C5, 0xD138, 0xD138, 0x0C23, - 0xD139, 0xD139, 0x41C8, 0xD13A, 0xD13A, 0x0C24, 0xD13B, 0xD13F, 0x41C9, - 0xD140, 0xD141, 0x0C25, 0xD142, 0xD142, 0x41CE, 0xD143, 0xD145, 0x0C27, - 0xD146, 0xD14B, 0x41CF, 0xD14C, 0xD14D, 0x0C2A, 0xD14E, 0xD14F, 0x41D5, - 0xD150, 0xD150, 0x0C2C, 0xD151, 0xD153, 0x41D7, 0xD154, 0xD154, 0x0C2D, - 0xD155, 0xD15B, 0x41DA, 0xD15C, 0xD15D, 0x0C2E, 0xD15E, 0xD15E, 0x41E1, - 0xD15F, 0xD15F, 0x0C30, 0xD160, 0xD160, 0x41E2, 0xD161, 0xD161, 0x0C31, - 0xD162, 0xD167, 0x41E3, 0xD168, 0xD168, 0x0C32, 0xD169, 0xD16B, 0x41E9, - 0xD16C, 0xD16C, 0x0C33, 0xD16D, 0xD17B, 0x41EC, 0xD17C, 0xD17C, 0x0C34, - 0xD17D, 0xD183, 0x41FB, 0xD184, 0xD184, 0x0C35, 0xD185, 0xD187, 0x4202, - 0xD188, 0xD188, 0x0C36, 0xD189, 0xD19F, 0x4205, 0xD1A0, 0xD1A1, 0x0C37, - 0xD1A2, 0xD1A3, 0x421C, 0xD1A4, 0xD1A4, 0x0C39, 0xD1A5, 0xD1A7, 0x421E, - 0xD1A8, 0xD1A8, 0x0C3A, 0xD1A9, 0xD1AF, 0x4221, 0xD1B0, 0xD1B1, 0x0C3B, - 0xD1B2, 0xD1B2, 0x4228, 0xD1B3, 0xD1B3, 0x0C3D, 0xD1B4, 0xD1B4, 0x4229, - 0xD1B5, 0xD1B5, 0x0C3E, 0xD1B6, 0xD1B9, 0x422A, 0xD1BA, 0xD1BA, 0x0C3F, - 0xD1BB, 0xD1BB, 0x422E, 0xD1BC, 0xD1BC, 0x0C40, 0xD1BD, 0xD1BF, 0x422F, - 0xD1C0, 0xD1C0, 0x0C41, 0xD1C1, 0xD1D7, 0x4232, 0xD1D8, 0xD1D8, 0x0C42, - 0xD1D9, 0xD1F3, 0x4249, 0xD1F4, 0xD1F4, 0x0C43, 0xD1F5, 0xD1F7, 0x4264, - 0xD1F8, 0xD1F8, 0x0C44, 0xD1F9, 0xD1FF, 0x4267, 0xD200, 0xD206, 0x426E, - 0xD207, 0xD207, 0x0C45, 0xD208, 0xD208, 0x4275, 0xD209, 0xD209, 0x0C46, - 0xD20A, 0xD20F, 0x4276, 0xD210, 0xD210, 0x0C47, 0xD211, 0xD22B, 0x427C, - 0xD22C, 0xD22D, 0x0C48, 0xD22E, 0xD22F, 0x4297, 0xD230, 0xD230, 0x0C4A, - 0xD231, 0xD233, 0x4299, 0xD234, 0xD234, 0x0C4B, 0xD235, 0xD23B, 0x429C, - 0xD23C, 0xD23D, 0x0C4C, 0xD23E, 0xD23E, 0x42A3, 0xD23F, 0xD23F, 0x0C4E, - 0xD240, 0xD240, 0x42A4, 0xD241, 0xD241, 0x0C4F, 0xD242, 0xD247, 0x42A5, - 0xD248, 0xD248, 0x0C50, 0xD249, 0xD25B, 0x42AB, 0xD25C, 0xD25C, 0x0C51, - 0xD25D, 0xD263, 0x42BE, 0xD264, 0xD264, 0x0C52, 0xD265, 0xD27F, 0x42C5, - 0xD280, 0xD281, 0x0C53, 0xD282, 0xD283, 0x42E0, 0xD284, 0xD284, 0x0C55, - 0xD285, 0xD287, 0x42E2, 0xD288, 0xD288, 0x0C56, 0xD289, 0xD28F, 0x42E5, - 0xD290, 0xD291, 0x0C57, 0xD292, 0xD294, 0x42EC, 0xD295, 0xD295, 0x0C59, - 0xD296, 0xD29B, 0x42EF, 0xD29C, 0xD29C, 0x0C5A, 0xD29D, 0xD29F, 0x42F5, - 0xD2A0, 0xD2A0, 0x0C5B, 0xD2A1, 0xD2A3, 0x42F8, 0xD2A4, 0xD2A4, 0x0C5C, - 0xD2A5, 0xD2AB, 0x42FB, 0xD2AC, 0xD2AC, 0x0C5D, 0xD2AD, 0xD2B0, 0x4302, - 0xD2B1, 0xD2B1, 0x0C5E, 0xD2B2, 0xD2B7, 0x4306, 0xD2B8, 0xD2B9, 0x0C5F, - 0xD2BA, 0xD2BB, 0x430C, 0xD2BC, 0xD2BC, 0x0C61, 0xD2BD, 0xD2BE, 0x430E, - 0xD2BF, 0xD2C0, 0x0C62, 0xD2C1, 0xD2C1, 0x4310, 0xD2C2, 0xD2C2, 0x0C64, - 0xD2C3, 0xD2C7, 0x4311, 0xD2C8, 0xD2C9, 0x0C65, 0xD2CA, 0xD2CA, 0x4316, - 0xD2CB, 0xD2CB, 0x0C67, 0xD2CC, 0xD2D3, 0x4317, 0xD2D4, 0xD2D4, 0x0C68, - 0xD2D5, 0xD2D7, 0x431F, 0xD2D8, 0xD2D8, 0x0C69, 0xD2D9, 0xD2DB, 0x4322, - 0xD2DC, 0xD2DC, 0x0C6A, 0xD2DD, 0xD2E3, 0x4325, 0xD2E4, 0xD2E5, 0x0C6B, - 0xD2E6, 0xD2EF, 0x432C, 0xD2F0, 0xD2F1, 0x0C6D, 0xD2F2, 0xD2F3, 0x4336, - 0xD2F4, 0xD2F4, 0x0C6F, 0xD2F5, 0xD2F7, 0x4338, 0xD2F8, 0xD2F8, 0x0C70, - 0xD2F9, 0xD2FF, 0x433B, 0xD300, 0xD301, 0x0C71, 0xD302, 0xD302, 0x4342, - 0xD303, 0xD303, 0x0C73, 0xD304, 0xD304, 0x4343, 0xD305, 0xD305, 0x0C74, - 0xD306, 0xD30B, 0x4344, 0xD30C, 0xD30E, 0x0C75, 0xD30F, 0xD30F, 0x434A, - 0xD310, 0xD310, 0x0C78, 0xD311, 0xD313, 0x434B, 0xD314, 0xD314, 0x0C79, - 0xD315, 0xD315, 0x434E, 0xD316, 0xD316, 0x0C7A, 0xD317, 0xD31B, 0x434F, - 0xD31C, 0xD31D, 0x0C7B, 0xD31E, 0xD31E, 0x4354, 0xD31F, 0xD321, 0x0C7D, - 0xD322, 0xD324, 0x4355, 0xD325, 0xD325, 0x0C80, 0xD326, 0xD327, 0x4358, - 0xD328, 0xD329, 0x0C81, 0xD32A, 0xD32B, 0x435A, 0xD32C, 0xD32C, 0x0C83, - 0xD32D, 0xD32F, 0x435C, 0xD330, 0xD330, 0x0C84, 0xD331, 0xD337, 0x435F, - 0xD338, 0xD339, 0x0C85, 0xD33A, 0xD33A, 0x4366, 0xD33B, 0xD33D, 0x0C87, - 0xD33E, 0xD343, 0x4367, 0xD344, 0xD345, 0x0C8A, 0xD346, 0xD37B, 0x436D, - 0xD37C, 0xD37D, 0x0C8C, 0xD37E, 0xD37F, 0x43A3, 0xD380, 0xD380, 0x0C8E, - 0xD381, 0xD383, 0x43A5, 0xD384, 0xD384, 0x0C8F, 0xD385, 0xD38B, 0x43A8, - 0xD38C, 0xD38D, 0x0C90, 0xD38E, 0xD38E, 0x43AF, 0xD38F, 0xD391, 0x0C92, - 0xD392, 0xD397, 0x43B0, 0xD398, 0xD399, 0x0C95, 0xD39A, 0xD39B, 0x43B6, - 0xD39C, 0xD39C, 0x0C97, 0xD39D, 0xD39F, 0x43B8, 0xD3A0, 0xD3A0, 0x0C98, - 0xD3A1, 0xD3A7, 0x43BB, 0xD3A8, 0xD3A9, 0x0C99, 0xD3AA, 0xD3AA, 0x43C2, - 0xD3AB, 0xD3AB, 0x0C9B, 0xD3AC, 0xD3AC, 0x43C3, 0xD3AD, 0xD3AD, 0x0C9C, - 0xD3AE, 0xD3B3, 0x43C4, 0xD3B4, 0xD3B4, 0x0C9D, 0xD3B5, 0xD3B7, 0x43CA, - 0xD3B8, 0xD3B8, 0x0C9E, 0xD3B9, 0xD3BB, 0x43CD, 0xD3BC, 0xD3BC, 0x0C9F, - 0xD3BD, 0xD3C3, 0x43D0, 0xD3C4, 0xD3C5, 0x0CA0, 0xD3C6, 0xD3C7, 0x43D7, - 0xD3C8, 0xD3C9, 0x0CA2, 0xD3CA, 0xD3CF, 0x43D9, 0xD3D0, 0xD3D0, 0x0CA4, - 0xD3D1, 0xD3D7, 0x43DF, 0xD3D8, 0xD3D8, 0x0CA5, 0xD3D9, 0xD3E0, 0x43E6, - 0xD3E1, 0xD3E1, 0x0CA6, 0xD3E2, 0xD3E2, 0x43EE, 0xD3E3, 0xD3E3, 0x0CA7, - 0xD3E4, 0xD3EB, 0x43EF, 0xD3EC, 0xD3ED, 0x0CA8, 0xD3EE, 0xD3EF, 0x43F7, - 0xD3F0, 0xD3F0, 0x0CAA, 0xD3F1, 0xD3F3, 0x43F9, 0xD3F4, 0xD3F4, 0x0CAB, - 0xD3F5, 0xD3FB, 0x43FC, 0xD3FC, 0xD3FD, 0x0CAC, 0xD3FE, 0xD3FE, 0x4403, - 0xD3FF, 0xD3FF, 0x0CAE, 0xD400, 0xD400, 0x4404, 0xD401, 0xD401, 0x0CAF, - 0xD402, 0xD407, 0x4405, 0xD408, 0xD408, 0x0CB0, 0xD409, 0xD41C, 0x440B, - 0xD41D, 0xD41D, 0x0CB1, 0xD41E, 0xD43F, 0x441F, 0xD440, 0xD440, 0x0CB2, - 0xD441, 0xD443, 0x4441, 0xD444, 0xD444, 0x0CB3, 0xD445, 0xD45B, 0x4444, - 0xD45C, 0xD45C, 0x0CB4, 0xD45D, 0xD45F, 0x445B, 0xD460, 0xD460, 0x0CB5, - 0xD461, 0xD463, 0x445E, 0xD464, 0xD464, 0x0CB6, 0xD465, 0xD46C, 0x4461, - 0xD46D, 0xD46D, 0x0CB7, 0xD46E, 0xD46E, 0x4469, 0xD46F, 0xD46F, 0x0CB8, - 0xD470, 0xD477, 0x446A, 0xD478, 0xD479, 0x0CB9, 0xD47A, 0xD47B, 0x4472, - 0xD47C, 0xD47C, 0x0CBB, 0xD47D, 0xD47E, 0x4474, 0xD47F, 0xD480, 0x0CBC, - 0xD481, 0xD481, 0x4476, 0xD482, 0xD482, 0x0CBE, 0xD483, 0xD487, 0x4477, - 0xD488, 0xD489, 0x0CBF, 0xD48A, 0xD48A, 0x447C, 0xD48B, 0xD48B, 0x0CC1, - 0xD48C, 0xD48C, 0x447D, 0xD48D, 0xD48D, 0x0CC2, 0xD48E, 0xD493, 0x447E, - 0xD494, 0xD494, 0x0CC3, 0xD495, 0xD4A8, 0x4484, 0xD4A9, 0xD4A9, 0x0CC4, - 0xD4AA, 0xD4CB, 0x4498, 0xD4CC, 0xD4CC, 0x0CC5, 0xD4CD, 0xD4CF, 0x44BA, - 0xD4D0, 0xD4D0, 0x0CC6, 0xD4D1, 0xD4D3, 0x44BD, 0xD4D4, 0xD4D4, 0x0CC7, - 0xD4D5, 0xD4DB, 0x44C0, 0xD4DC, 0xD4DC, 0x0CC8, 0xD4DD, 0xD4DE, 0x44C7, - 0xD4DF, 0xD4DF, 0x0CC9, 0xD4E0, 0xD4E7, 0x44C9, 0xD4E8, 0xD4E8, 0x0CCA, - 0xD4E9, 0xD4EB, 0x44D1, 0xD4EC, 0xD4EC, 0x0CCB, 0xD4ED, 0xD4EF, 0x44D4, - 0xD4F0, 0xD4F0, 0x0CCC, 0xD4F1, 0xD4F7, 0x44D7, 0xD4F8, 0xD4F8, 0x0CCD, - 0xD4F9, 0xD4FA, 0x44DE, 0xD4FB, 0xD4FB, 0x0CCE, 0xD4FC, 0xD4FC, 0x44E0, - 0xD4FD, 0xD4FD, 0x0CCF, 0xD4FE, 0xD4FF, 0x44E1, 0xD500, 0xD503, 0x44E3, - 0xD504, 0xD504, 0x0CD0, 0xD505, 0xD507, 0x44E7, 0xD508, 0xD508, 0x0CD1, - 0xD509, 0xD50B, 0x44EA, 0xD50C, 0xD50C, 0x0CD2, 0xD50D, 0xD513, 0x44ED, - 0xD514, 0xD515, 0x0CD3, 0xD516, 0xD516, 0x44F4, 0xD517, 0xD517, 0x0CD5, - 0xD518, 0xD53B, 0x44F5, 0xD53C, 0xD53D, 0x0CD6, 0xD53E, 0xD53F, 0x4519, - 0xD540, 0xD540, 0x0CD8, 0xD541, 0xD543, 0x451B, 0xD544, 0xD544, 0x0CD9, - 0xD545, 0xD54B, 0x451E, 0xD54C, 0xD54D, 0x0CDA, 0xD54E, 0xD54E, 0x4525, - 0xD54F, 0xD54F, 0x0CDC, 0xD550, 0xD550, 0x4526, 0xD551, 0xD551, 0x0CDD, - 0xD552, 0xD557, 0x4527, 0xD558, 0xD559, 0x0CDE, 0xD55A, 0xD55B, 0x452D, - 0xD55C, 0xD55C, 0x0CE0, 0xD55D, 0xD55F, 0x452F, 0xD560, 0xD560, 0x0CE1, - 0xD561, 0xD564, 0x4532, 0xD565, 0xD565, 0x0CE2, 0xD566, 0xD567, 0x4536, - 0xD568, 0xD569, 0x0CE3, 0xD56A, 0xD56A, 0x4538, 0xD56B, 0xD56B, 0x0CE5, - 0xD56C, 0xD56C, 0x4539, 0xD56D, 0xD56D, 0x0CE6, 0xD56E, 0xD573, 0x453A, - 0xD574, 0xD575, 0x0CE7, 0xD576, 0xD577, 0x4540, 0xD578, 0xD578, 0x0CE9, - 0xD579, 0xD57B, 0x4542, 0xD57C, 0xD57C, 0x0CEA, 0xD57D, 0xD583, 0x4545, - 0xD584, 0xD585, 0x0CEB, 0xD586, 0xD586, 0x454C, 0xD587, 0xD589, 0x0CED, - 0xD58A, 0xD58F, 0x454D, 0xD590, 0xD590, 0x0CF0, 0xD591, 0xD5A4, 0x4553, - 0xD5A5, 0xD5A5, 0x0CF1, 0xD5A6, 0xD5C7, 0x4567, 0xD5C8, 0xD5C9, 0x0CF2, - 0xD5CA, 0xD5CB, 0x4589, 0xD5CC, 0xD5CC, 0x0CF4, 0xD5CD, 0xD5CF, 0x458B, - 0xD5D0, 0xD5D0, 0x0CF5, 0xD5D1, 0xD5D1, 0x458E, 0xD5D2, 0xD5D2, 0x0CF6, - 0xD5D3, 0xD5D7, 0x458F, 0xD5D8, 0xD5D9, 0x0CF7, 0xD5DA, 0xD5DA, 0x4594, - 0xD5DB, 0xD5DB, 0x0CF9, 0xD5DC, 0xD5DC, 0x4595, 0xD5DD, 0xD5DD, 0x0CFA, - 0xD5DE, 0xD5E3, 0x4596, 0xD5E4, 0xD5E5, 0x0CFB, 0xD5E6, 0xD5E7, 0x459C, - 0xD5E8, 0xD5E8, 0x0CFD, 0xD5E9, 0xD5EB, 0x459E, 0xD5EC, 0xD5EC, 0x0CFE, - 0xD5ED, 0xD5F3, 0x45A1, 0xD5F4, 0xD5F5, 0x0CFF, 0xD5F6, 0xD5F6, 0x45A8, - 0xD5F7, 0xD5F7, 0x0D01, 0xD5F8, 0xD5F8, 0x45A9, 0xD5F9, 0xD5F9, 0x0D02, - 0xD5FA, 0xD5FF, 0x45AA, 0xD600, 0xD601, 0x0D03, 0xD602, 0xD603, 0x45B0, - 0xD604, 0xD604, 0x0D05, 0xD605, 0xD607, 0x45B2, 0xD608, 0xD608, 0x0D06, - 0xD609, 0xD60F, 0x45B5, 0xD610, 0xD611, 0x0D07, 0xD612, 0xD612, 0x45BC, - 0xD613, 0xD615, 0x0D09, 0xD616, 0xD61B, 0x45BD, 0xD61C, 0xD61C, 0x0D0C, - 0xD61D, 0xD61F, 0x45C3, 0xD620, 0xD620, 0x0D0D, 0xD621, 0xD623, 0x45C6, - 0xD624, 0xD624, 0x0D0E, 0xD625, 0xD62C, 0x45C9, 0xD62D, 0xD62D, 0x0D0F, - 0xD62E, 0xD637, 0x45D1, 0xD638, 0xD639, 0x0D10, 0xD63A, 0xD63B, 0x45DB, - 0xD63C, 0xD63C, 0x0D12, 0xD63D, 0xD63F, 0x45DD, 0xD640, 0xD640, 0x0D13, - 0xD641, 0xD644, 0x45E0, 0xD645, 0xD645, 0x0D14, 0xD646, 0xD647, 0x45E4, - 0xD648, 0xD649, 0x0D15, 0xD64A, 0xD64A, 0x45E6, 0xD64B, 0xD64B, 0x0D17, - 0xD64C, 0xD64C, 0x45E7, 0xD64D, 0xD64D, 0x0D18, 0xD64E, 0xD650, 0x45E8, - 0xD651, 0xD651, 0x0D19, 0xD652, 0xD653, 0x45EB, 0xD654, 0xD655, 0x0D1A, - 0xD656, 0xD657, 0x45ED, 0xD658, 0xD658, 0x0D1C, 0xD659, 0xD65B, 0x45EF, - 0xD65C, 0xD65C, 0x0D1D, 0xD65D, 0xD666, 0x45F2, 0xD667, 0xD667, 0x0D1E, - 0xD668, 0xD668, 0x45FC, 0xD669, 0xD669, 0x0D1F, 0xD66A, 0xD66F, 0x45FD, - 0xD670, 0xD671, 0x0D20, 0xD672, 0xD673, 0x4603, 0xD674, 0xD674, 0x0D22, - 0xD675, 0xD682, 0x4605, 0xD683, 0xD683, 0x0D23, 0xD684, 0xD684, 0x4613, - 0xD685, 0xD685, 0x0D24, 0xD686, 0xD68B, 0x4614, 0xD68C, 0xD68D, 0x0D25, - 0xD68E, 0xD68F, 0x461A, 0xD690, 0xD690, 0x0D27, 0xD691, 0xD693, 0x461C, - 0xD694, 0xD694, 0x0D28, 0xD695, 0xD69C, 0x461F, 0xD69D, 0xD69D, 0x0D29, - 0xD69E, 0xD69E, 0x4627, 0xD69F, 0xD69F, 0x0D2A, 0xD6A0, 0xD6A0, 0x4628, - 0xD6A1, 0xD6A1, 0x0D2B, 0xD6A2, 0xD6A7, 0x4629, 0xD6A8, 0xD6A8, 0x0D2C, - 0xD6A9, 0xD6AB, 0x462F, 0xD6AC, 0xD6AC, 0x0D2D, 0xD6AD, 0xD6AF, 0x4632, - 0xD6B0, 0xD6B0, 0x0D2E, 0xD6B1, 0xD6B8, 0x4635, 0xD6B9, 0xD6B9, 0x0D2F, - 0xD6BA, 0xD6BA, 0x463D, 0xD6BB, 0xD6BB, 0x0D30, 0xD6BC, 0xD6C3, 0x463E, - 0xD6C4, 0xD6C5, 0x0D31, 0xD6C6, 0xD6C7, 0x4646, 0xD6C8, 0xD6C8, 0x0D33, - 0xD6C9, 0xD6CB, 0x4648, 0xD6CC, 0xD6CC, 0x0D34, 0xD6CD, 0xD6D0, 0x464B, - 0xD6D1, 0xD6D1, 0x0D35, 0xD6D2, 0xD6D3, 0x464F, 0xD6D4, 0xD6D4, 0x0D36, - 0xD6D5, 0xD6D6, 0x4651, 0xD6D7, 0xD6D7, 0x0D37, 0xD6D8, 0xD6D8, 0x4653, - 0xD6D9, 0xD6D9, 0x0D38, 0xD6DA, 0xD6DF, 0x4654, 0xD6E0, 0xD6E0, 0x0D39, - 0xD6E1, 0xD6E3, 0x465A, 0xD6E4, 0xD6E4, 0x0D3A, 0xD6E5, 0xD6E7, 0x465D, - 0xD6E8, 0xD6E8, 0x0D3B, 0xD6E9, 0xD6EF, 0x4660, 0xD6F0, 0xD6F0, 0x0D3C, - 0xD6F1, 0xD6F4, 0x4667, 0xD6F5, 0xD6F5, 0x0D3D, 0xD6F6, 0xD6FB, 0x466B, - 0xD6FC, 0xD6FD, 0x0D3E, 0xD6FE, 0xD6FF, 0x4671, 0xD700, 0xD700, 0x0D40, - 0xD701, 0xD703, 0x4673, 0xD704, 0xD704, 0x0D41, 0xD705, 0xD710, 0x4676, - 0xD711, 0xD711, 0x0D42, 0xD712, 0xD717, 0x4682, 0xD718, 0xD719, 0x0D43, - 0xD71A, 0xD71B, 0x4688, 0xD71C, 0xD71C, 0x0D45, 0xD71D, 0xD71F, 0x468A, - 0xD720, 0xD720, 0x0D46, 0xD721, 0xD727, 0x468D, 0xD728, 0xD729, 0x0D47, - 0xD72A, 0xD72A, 0x4694, 0xD72B, 0xD72B, 0x0D49, 0xD72C, 0xD72C, 0x4695, - 0xD72D, 0xD72D, 0x0D4A, 0xD72E, 0xD733, 0x4696, 0xD734, 0xD735, 0x0D4B, - 0xD736, 0xD737, 0x469C, 0xD738, 0xD738, 0x0D4D, 0xD739, 0xD73B, 0x469E, - 0xD73C, 0xD73C, 0x0D4E, 0xD73D, 0xD743, 0x46A1, 0xD744, 0xD744, 0x0D4F, - 0xD745, 0xD746, 0x46A8, 0xD747, 0xD747, 0x0D50, 0xD748, 0xD748, 0x46AA, - 0xD749, 0xD749, 0x0D51, 0xD74A, 0xD74F, 0x46AB, 0xD750, 0xD751, 0x0D52, - 0xD752, 0xD753, 0x46B1, 0xD754, 0xD754, 0x0D54, 0xD755, 0xD755, 0x46B3, - 0xD756, 0xD759, 0x0D55, 0xD75A, 0xD75F, 0x46B4, 0xD760, 0xD761, 0x0D59, - 0xD762, 0xD762, 0x46BA, 0xD763, 0xD763, 0x0D5B, 0xD764, 0xD764, 0x46BB, - 0xD765, 0xD765, 0x0D5C, 0xD766, 0xD768, 0x46BC, 0xD769, 0xD769, 0x0D5D, - 0xD76A, 0xD76B, 0x46BF, 0xD76C, 0xD76C, 0x0D5E, 0xD76D, 0xD76F, 0x46C1, - 0xD770, 0xD770, 0x0D5F, 0xD771, 0xD773, 0x46C4, 0xD774, 0xD774, 0x0D60, - 0xD775, 0xD77B, 0x46C7, 0xD77C, 0xD77D, 0x0D61, 0xD77E, 0xD780, 0x46CE, - 0xD781, 0xD781, 0x0D63, 0xD782, 0xD787, 0x46D1, 0xD788, 0xD789, 0x0D64, - 0xD78A, 0xD78B, 0x46D7, 0xD78C, 0xD78C, 0x0D66, 0xD78D, 0xD78F, 0x46D9, - 0xD790, 0xD790, 0x0D67, 0xD791, 0xD797, 0x46DC, 0xD798, 0xD799, 0x0D68, - 0xD79A, 0xD79A, 0x46E3, 0xD79B, 0xD79B, 0x0D6A, 0xD79C, 0xD79C, 0x46E4, - 0xD79D, 0xD79D, 0x0D6B, 0xD79E, 0xD7A3, 0x46E5, 0xF900, 0xF900, 0x1014, - 0xF901, 0xF901, 0x0E5E, 0xF902, 0xF902, 0x1B8D, 0xF903, 0xF903, 0x0D84, - 0xF904, 0xF904, 0x1EDC, 0xF905, 0xF905, 0x0EDA, 0xF906, 0xF906, 0x0F3E, - 0xF907, 0xF907, 0x0F6A, 0xF908, 0xF908, 0x0F6A, 0xF909, 0xF909, 0x0E7C, - 0xF90A, 0xF90A, 0x1023, 0xF90B, 0xF90B, 0x1116, 0xF90C, 0xF90C, 0x103C, - 0xF90D, 0xF913, 0x1117, 0xF914, 0xF914, 0x16A8, 0xF915, 0xF917, 0x111E, - 0xF918, 0xF91D, 0x1122, 0xF91E, 0xF920, 0x112A, 0xF921, 0xF921, 0x112F, - 0xF922, 0xF922, 0x1133, 0xF923, 0xF924, 0x1136, 0xF925, 0xF92B, 0x1139, - 0xF92C, 0xF92D, 0x1143, 0xF92E, 0xF92E, 0x1148, 0xF92F, 0xF92F, 0x119F, - 0xF930, 0xF931, 0x11A1, 0xF932, 0xF937, 0x11A5, 0xF938, 0xF93A, 0x11AC, - 0xF93B, 0xF940, 0x11B0, 0xF941, 0xF943, 0x11B7, 0xF944, 0xF945, 0x11BD, - 0xF946, 0xF948, 0x11C1, 0xF949, 0xF949, 0x11C6, 0xF94A, 0xF94A, 0x11D4, - 0xF94B, 0xF94E, 0x11D6, 0xF94F, 0xF950, 0x11DB, 0xF951, 0xF951, 0x11E0, - 0xF952, 0xF955, 0x11FC, 0xF956, 0xF959, 0x1201, 0xF95A, 0xF95A, 0x10DE, - 0xF95B, 0xF95B, 0x1028, 0xF95C, 0xF95C, 0x16A8, 0xF95D, 0xF95D, 0x102B, - 0xF95E, 0xF95E, 0x1060, 0xF95F, 0xF95F, 0x1047, 0xF960, 0xF960, 0x104C, - 0xF961, 0xF961, 0x15B0, 0xF962, 0xF962, 0x1918, 0xF963, 0xF963, 0x141F, - 0xF964, 0xF964, 0x133A, 0xF965, 0xF965, 0x1D5E, 0xF966, 0xF966, 0x13D7, - 0xF967, 0xF967, 0x13F5, 0xF968, 0xF968, 0x1DB7, 0xF969, 0xF969, 0x15D0, - 0xF96A, 0xF96A, 0x14F7, 0xF96B, 0xF96B, 0x1BAB, 0xF96C, 0xF96C, 0x14F2, - 0xF96D, 0xF96D, 0x156D, 0xF96E, 0xF96E, 0x1771, 0xF96F, 0xF96F, 0x1554, - 0xF970, 0xF970, 0x14C5, 0xF971, 0xF971, 0x1B61, 0xF972, 0xF972, 0x1CCA, - 0xF973, 0xF973, 0x162E, 0xF974, 0xF974, 0x16F2, 0xF975, 0xF977, 0x1149, - 0xF978, 0xF97A, 0x114D, 0xF97B, 0xF97D, 0x1153, 0xF97E, 0xF97E, 0x1157, - 0xF97F, 0xF980, 0x115A, 0xF981, 0xF981, 0x103F, 0xF982, 0xF982, 0x115C, - 0xF983, 0xF983, 0x115F, 0xF984, 0xF985, 0x1161, 0xF986, 0xF986, 0x1165, - 0xF987, 0xF98C, 0x1167, 0xF98D, 0xF98D, 0x116F, 0xF98E, 0xF98E, 0x1040, - 0xF98F, 0xF990, 0x1171, 0xF991, 0xF991, 0x1041, 0xF992, 0xF994, 0x1174, - 0xF995, 0xF995, 0x1042, 0xF996, 0xF997, 0x1177, 0xF998, 0xF998, 0x117A, - 0xF999, 0xF999, 0x1179, 0xF99A, 0xF99B, 0x117B, 0xF99C, 0xF99D, 0x117E, - 0xF99E, 0xF99E, 0x192F, 0xF99F, 0xF9A0, 0x1181, 0xF9A1, 0xF9A1, 0x1554, - 0xF9A2, 0xF9A2, 0x1183, 0xF9A3, 0xF9A3, 0x1043, 0xF9A4, 0xF9A4, 0x1046, - 0xF9A5, 0xF9A5, 0x1185, 0xF9A6, 0xF9A8, 0x1187, 0xF9A9, 0xF9A9, 0x118B, - 0xF9AA, 0xF9AA, 0x1047, 0xF9AB, 0xF9AD, 0x118D, 0xF9AE, 0xF9AE, 0x1E67, - 0xF9AF, 0xF9AF, 0x1191, 0xF9B0, 0xF9B0, 0x1193, 0xF9B1, 0xF9B4, 0x1195, - 0xF9B5, 0xF9B5, 0x119A, 0xF9B6, 0xF9B8, 0x119C, 0xF9B9, 0xF9B9, 0x16A5, - 0xF9BA, 0xF9BC, 0x11C7, 0xF9BD, 0xF9BD, 0x1054, 0xF9BE, 0xF9BE, 0x11CB, - 0xF9BF, 0xF9BF, 0x16A8, 0xF9C0, 0xF9C1, 0x11CC, 0xF9C2, 0xF9C3, 0x11D0, - 0xF9C4, 0xF9C4, 0x11D3, 0xF9C5, 0xF9C5, 0x1F34, 0xF9C6, 0xF9C6, 0x17EB, - 0xF9C7, 0xF9C7, 0x11E1, 0xF9C8, 0xF9C8, 0x1057, 0xF9C9, 0xF9C9, 0x11E3, - 0xF9CA, 0xF9CB, 0x11E5, 0xF9CC, 0xF9CC, 0x11E8, 0xF9CD, 0xF9CD, 0x11EA, - 0xF9CE, 0xF9CE, 0x11EC, 0xF9CF, 0xF9CF, 0x1058, 0xF9D0, 0xF9D3, 0x11EE, - 0xF9D4, 0xF9D6, 0x11F3, 0xF9D7, 0xF9DA, 0x11F7, 0xF9DB, 0xF9DB, 0x15B0, - 0xF9DC, 0xF9DC, 0x11FB, 0xF9DD, 0xF9DD, 0x1206, 0xF9DE, 0xF9DE, 0x1208, - 0xF9DF, 0xF9DF, 0x120A, 0xF9E0, 0xF9E0, 0x173E, 0xF9E1, 0xF9E2, 0x120C, - 0xF9E3, 0xF9E3, 0x105B, 0xF9E4, 0xF9E4, 0x1211, 0xF9E5, 0xF9E5, 0x1213, - 0xF9E6, 0xF9E6, 0x1215, 0xF9E7, 0xF9E9, 0x1218, 0xF9EA, 0xF9EA, 0x121C, - 0xF9EB, 0xF9EC, 0x105C, 0xF9ED, 0xF9ED, 0x121E, 0xF9EE, 0xF9F0, 0x1220, - 0xF9F1, 0xF9F5, 0x1224, 0xF9F6, 0xF9F6, 0x122A, 0xF9F7, 0xF9F9, 0x122D, - 0xF9FA, 0xF9FA, 0x14E7, 0xF9FB, 0xF9FB, 0x195E, 0xF9FC, 0xF9FC, 0x1663, - 0xF9FD, 0xF9FD, 0x168B, 0xF9FE, 0xF9FE, 0x105F, 0xF9FF, 0xF9FF, 0x1954, - 0xFA00, 0xFA00, 0x1A1C, 0xFA01, 0xFA01, 0x10B7, 0xFA02, 0xFA02, 0x1BE3, - 0xFA03, 0xFA03, 0x1097, 0xFA04, 0xFA04, 0x10AA, 0xFA05, 0xFA05, 0x10F4, - 0xFA06, 0xFA06, 0x1D94, 0xFA07, 0xFA07, 0x13E0, 0xFA08, 0xFA08, 0x1E1D, - 0xFA09, 0xFA09, 0x0DE6, 0xFA0A, 0xFA0A, 0x0E3C, 0xFA0B, 0xFA0B, 0x0EE7, - 0xFF01, 0xFF3B, 0x0108, 0xFF3C, 0xFF3C, 0x0070, 0xFF3D, 0xFF5D, 0x0144, - 0xFF5E, 0xFF5E, 0x0071, 0xFFE0, 0xFFE1, 0x008F, 0xFFE2, 0xFFE2, 0x00C2, - 0xFFE3, 0xFFE3, 0x0165, 0xFFE5, 0xFFE5, 0x0091, 0xFFE6, 0xFFE6, 0x0143, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp deleted file mode 100644 index 19638f68bf..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_UniKS_UCS2_V_1[18 * 3] = { - 0x2013, 0x2014, 0x1F7B, 0x2016, 0x2016, 0x1F7D, 0x2025, 0x2025, 0x1F7A, - 0x3001, 0x3002, 0x1F78, 0x3008, 0x3011, 0x1F81, 0x3013, 0x3013, 0x1F8B, - 0x3014, 0x3015, 0x1F7F, 0xFF01, 0xFF01, 0x1F8C, 0xFF08, 0xFF09, 0x1F8D, - 0xFF0C, 0xFF0C, 0x1F8F, 0xFF0E, 0xFF0E, 0x1F90, 0xFF1A, 0xFF1F, 0x1F91, - 0xFF3B, 0xFF3B, 0x1F97, 0xFF3D, 0xFF3D, 0x1F98, 0xFF3F, 0xFF3F, 0x1F99, - 0xFF5B, 0xFF5D, 0x1F9A, 0xFF5E, 0xFF5E, 0x1F7E, 0xFFE3, 0xFFE3, 0x1F9D, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp deleted file mode 100644 index 23aba2f2bd..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -const FX_WORD g_FXCMAP_UniKS_UTF16_H_0[158 * 2] = { - 0x00A9, 0x0062, 0x2010, 0x0061, 0x20A9, 0x0060, 0x2F00, 0x193C, 0x2F04, - 0x18EC, 0x2F06, 0x190D, 0x2F08, 0x192B, 0x2F0A, 0x194D, 0x2F0B, 0x1D4B, - 0x2F11, 0x10AE, 0x2F12, 0x116A, 0x2F14, 0x143F, 0x2F17, 0x168C, 0x2F18, - 0x13D5, 0x2F1C, 0x1839, 0x2F1D, 0x0F3D, 0x2F1F, 0x1D1B, 0x2F20, 0x1487, - 0x2F23, 0x151B, 0x2F24, 0x109D, 0x2F25, 0x103F, 0x2F26, 0x1958, 0x2F28, - 0x1C4F, 0x2F29, 0x1580, 0x2F2B, 0x1641, 0x2F2D, 0x14B9, 0x2F2F, 0x0ECF, - 0x2F30, 0x0FED, 0x2F31, 0x0E14, 0x2F32, 0x0D99, 0x2F38, 0x0F7C, 0x2F3C, - 0x1684, 0x2F3D, 0x0EDC, 0x2F3E, 0x1E80, 0x2F3F, 0x15CC, 0x2F40, 0x1B27, - 0x2F42, 0x12E8, 0x2F43, 0x10FD, 0x2F44, 0x0FBB, 0x2F45, 0x1356, 0x2F46, - 0x12D3, 0x2F47, 0x1940, 0x2F48, 0x17ED, 0x2F49, 0x1889, 0x2F4A, 0x12B4, - 0x2F4B, 0x1F5B, 0x2F4C, 0x1B2C, 0x2F4F, 0x12D6, 0x2F50, 0x144C, 0x2F51, - 0x12A8, 0x2F52, 0x168E, 0x2F54, 0x15D3, 0x2F55, 0x1EBB, 0x2F56, 0x1A93, - 0x2F57, 0x1409, 0x2F58, 0x1F1A, 0x2F5A, 0x1D61, 0x2F5B, 0x1696, 0x2F5C, - 0x1842, 0x2F5D, 0x0E37, 0x2F5E, 0x1E3D, 0x2F5F, 0x17C1, 0x2F60, 0x0EDE, - 0x2F61, 0x17D4, 0x2F62, 0x0DC1, 0x2F63, 0x14FA, 0x2F64, 0x182D, 0x2F65, - 0x1A08, 0x2F66, 0x1DBA, 0x2F69, 0x1381, 0x2F6A, 0x1DB0, 0x2F6B, 0x1293, - 0x2F6C, 0x12B7, 0x2F6D, 0x12AD, 0x2F6E, 0x164D, 0x2F6F, 0x1525, 0x2F70, - 0x164E, 0x2F72, 0x1EBE, 0x2F73, 0x1E4B, 0x2F74, 0x122D, 0x2F75, 0x1AF4, - 0x2F76, 0x12FF, 0x2F78, 0x140C, 0x2F7A, 0x1708, 0x2F7B, 0x184A, 0x2F7C, - 0x11A7, 0x2F7D, 0x191B, 0x2F7F, 0x191C, 0x2F80, 0x18E0, 0x2F81, 0x18D5, - 0x2F82, 0x1675, 0x2F83, 0x1966, 0x2F84, 0x1B37, 0x2F85, 0x0F5A, 0x2F86, - 0x1550, 0x2F87, 0x1BF6, 0x2F88, 0x1AE8, 0x2F89, 0x0DA8, 0x2F8A, 0x14F8, - 0x2F8B, 0x1C40, 0x2F8E, 0x1E4C, 0x2F8F, 0x1E1D, 0x2F90, 0x1909, 0x2F92, - 0x0E3C, 0x2F93, 0x0D92, 0x2F94, 0x1721, 0x2F95, 0x0EBC, 0x2F96, 0x1103, - 0x2F97, 0x1656, 0x2F99, 0x1D58, 0x2F9A, 0x19EC, 0x2F9B, 0x1AEC, 0x2F9C, - 0x1AAE, 0x2F9D, 0x167B, 0x2F9E, 0x1B8D, 0x2F9F, 0x167C, 0x2FA0, 0x1B61, - 0x2FA2, 0x18F5, 0x2FA3, 0x18D0, 0x2FA5, 0x121A, 0x2FA6, 0x1023, 0x2FA7, - 0x19A8, 0x2FA8, 0x12EE, 0x2FA9, 0x141B, 0x2FAC, 0x1853, 0x2FAD, 0x1C23, - 0x2FAE, 0x1464, 0x2FAF, 0x1288, 0x2FB0, 0x1E35, 0x2FB1, 0x18A3, 0x2FB3, - 0x18F1, 0x2FB4, 0x1E4D, 0x2FB5, 0x1DAB, 0x2FB6, 0x1465, 0x2FB7, 0x1665, - 0x2FB8, 0x15F9, 0x2FB9, 0x1E26, 0x2FBA, 0x1235, 0x2FBB, 0x0EC9, 0x2FBC, - 0x0EB5, 0x2FC1, 0x0F99, 0x2FC2, 0x1716, 0x2FC3, 0x1AAB, 0x2FC4, 0x11AF, - 0x2FC5, 0x11B5, 0x2FC6, 0x1276, 0x2FC7, 0x1237, 0x2FC8, 0x1EF7, 0x2FC9, - 0x1519, 0x2FCA, 0x1F52, 0x2FCD, 0x1A66, 0x2FCE, 0x0EB6, 0x2FCF, 0x151A, - 0x2FD0, 0x1466, 0x2FD1, 0x1A7D, 0x2FD2, 0x1CBF, 0x2FD3, 0x11D3, 0x2FD4, - 0x0F6A, -}; diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp b/core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp deleted file mode 100644 index 9ae97e0b50..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h" - -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize(). -#include "core/src/fpdfapi/fpdf_cmaps/cmap_int.h" -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -static const FXCMAP_CMap g_FXCMAP_Korea1_cmaps[] = { - {"KSC-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_KSC_EUC_H_0, 467, - FXCMAP_CMap::None, NULL, 0, 0}, - {"KSC-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_KSC_EUC_V_0, 16, - FXCMAP_CMap::None, NULL, 0, -1}, - {"KSCms-UHC-H", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_H_1, 675, - FXCMAP_CMap::None, NULL, 0, -2}, - {"KSCms-UHC-V", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_V_1, 16, - FXCMAP_CMap::None, NULL, 0, -1}, - {"KSCms-UHC-HW-H", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_HW_H_1, 675, - FXCMAP_CMap::None, NULL, 0, 0}, - {"KSCms-UHC-HW-V", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_HW_V_1, 16, - FXCMAP_CMap::None, NULL, 0, -1}, - {"KSCpc-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_KSCpc_EUC_H_0, 509, - FXCMAP_CMap::None, NULL, 0, -6}, - {"UniKS-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_H_1, 8394, - FXCMAP_CMap::None, NULL, 0, 0}, - {"UniKS-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_V_1, 18, - FXCMAP_CMap::None, NULL, 0, -1}, - {"UniKS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniKS_UTF16_H_0, 158, - FXCMAP_CMap::None, NULL, 0, -2}, - {"UniKS-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_V_1, 18, - FXCMAP_CMap::None, NULL, 0, -1}, -}; - -void CPDF_ModuleMgr::LoadEmbeddedKorea1CMaps() { - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - pFontGlobals->m_EmbeddedCharsets[CIDSET_KOREA1].m_pMapList = - g_FXCMAP_Korea1_cmaps; - pFontGlobals->m_EmbeddedCharsets[CIDSET_KOREA1].m_Count = - FX_ArraySize(g_FXCMAP_Korea1_cmaps); - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_KOREA1].m_pMap = - g_FXCMAP_Korea1CID2Unicode_2; - pFontGlobals->m_EmbeddedToUnicodes[CIDSET_KOREA1].m_Count = 18352; -} diff --git a/core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h b/core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h deleted file mode 100644 index 646a9b9cf1..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_ -#define CORE_SRC_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_ - -#include "core/include/fxcrt/fx_system.h" // For FX_WORD. - -extern const FX_WORD g_FXCMAP_KSC_EUC_H_0[]; -extern const FX_WORD g_FXCMAP_KSC_EUC_V_0[]; -extern const FX_WORD g_FXCMAP_KSCms_UHC_H_1[]; -extern const FX_WORD g_FXCMAP_KSCms_UHC_V_1[]; -extern const FX_WORD g_FXCMAP_KSCms_UHC_HW_H_1[]; -extern const FX_WORD g_FXCMAP_KSCms_UHC_HW_V_1[]; -extern const FX_WORD g_FXCMAP_KSCpc_EUC_H_0[]; -extern const FX_WORD g_FXCMAP_UniKS_UCS2_H_1[]; -extern const FX_WORD g_FXCMAP_UniKS_UCS2_V_1[]; -extern const FX_WORD g_FXCMAP_UniKS_UTF16_H_0[]; -extern const FX_WORD g_FXCMAP_Korea1CID2Unicode_2[]; - -#endif // CORE_SRC_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_ diff --git a/core/src/fpdfapi/fpdf_cmaps/cmap_int.h b/core/src/fpdfapi/fpdf_cmaps/cmap_int.h deleted file mode 100644 index a486ac3d4a..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/cmap_int.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_ -#define CORE_SRC_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_ - -#include "core/include/fxcrt/fx_system.h" // For FX_WORD. - -struct FXCMAP_CMap { - enum MapType { None, Single, Range, Reverse }; - - const char* m_Name; - MapType m_WordMapType; - const FX_WORD* m_pWordMap; - int m_WordCount; - MapType m_DWordMapType; - const FX_WORD* m_pDWordMap; - int m_DWordCount; - int m_UseOffset; -}; - -void FPDFAPI_FindEmbeddedCMap(const char* name, - int charset, - int coding, - const FXCMAP_CMap*& pMap); -FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, FX_DWORD charcode); -FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid); - -#endif // CORE_SRC_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_ diff --git a/core/src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp b/core/src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp deleted file mode 100644 index 4964f41f18..0000000000 --- a/core/src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_cmaps/cmap_int.h" - -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -void FPDFAPI_FindEmbeddedCMap(const char* name, - int charset, - int coding, - const FXCMAP_CMap*& pMap) { - pMap = NULL; - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - const FXCMAP_CMap* pCMaps = - pFontGlobals->m_EmbeddedCharsets[charset].m_pMapList; - int nCMaps = pFontGlobals->m_EmbeddedCharsets[charset].m_Count; - for (int i = 0; i < nCMaps; i++) { - if (FXSYS_strcmp(name, pCMaps[i].m_Name)) { - continue; - } - pMap = &pCMaps[i]; - break; - } -} -extern "C" { -static int compareWord(const void* p1, const void* p2) { - return (*(FX_WORD*)p1) - (*(FX_WORD*)p2); -} -}; -extern "C" { -static int compareWordRange(const void* key, const void* element) { - if (*(FX_WORD*)key < *(FX_WORD*)element) { - return -1; - } - if (*(FX_WORD*)key > ((FX_WORD*)element)[1]) { - return 1; - } - return 0; -} -}; -extern "C" { -static int compareDWordRange(const void* p1, const void* p2) { - FX_DWORD key = *(FX_DWORD*)p1; - FX_WORD hiword = (FX_WORD)(key >> 16); - FX_WORD* element = (FX_WORD*)p2; - if (hiword < element[0]) { - return -1; - } - if (hiword > element[0]) { - return 1; - } - FX_WORD loword = (FX_WORD)key; - if (loword < element[1]) { - return -1; - } - if (loword > element[2]) { - return 1; - } - return 0; -} -}; -extern "C" { -static int compareDWordSingle(const void* p1, const void* p2) { - FX_DWORD key = *(FX_DWORD*)p1; - FX_DWORD value = ((*(FX_WORD*)p2) << 16) | ((FX_WORD*)p2)[1]; - if (key < value) { - return -1; - } - if (key > value) { - return 1; - } - return 0; -} -}; -FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, FX_DWORD charcode) { - if (charcode >> 16) { - while (1) { - if (pMap->m_DWordMapType == FXCMAP_CMap::Range) { - FX_WORD* found = - (FX_WORD*)FXSYS_bsearch(&charcode, pMap->m_pDWordMap, - pMap->m_DWordCount, 8, compareDWordRange); - if (found) { - return found[3] + (FX_WORD)charcode - found[1]; - } - } else if (pMap->m_DWordMapType == FXCMAP_CMap::Single) { - FX_WORD* found = - (FX_WORD*)FXSYS_bsearch(&charcode, pMap->m_pDWordMap, - pMap->m_DWordCount, 6, compareDWordSingle); - if (found) { - return found[2]; - } - } - if (pMap->m_UseOffset == 0) { - return 0; - } - pMap = pMap + pMap->m_UseOffset; - } - return 0; - } - FX_WORD code = (FX_WORD)charcode; - while (1) { - if (!pMap->m_pWordMap) { - return 0; - } - if (pMap->m_WordMapType == FXCMAP_CMap::Single) { - FX_WORD* found = (FX_WORD*)FXSYS_bsearch( - &code, pMap->m_pWordMap, pMap->m_WordCount, 4, compareWord); - if (found) { - return found[1]; - } - } else if (pMap->m_WordMapType == FXCMAP_CMap::Range) { - FX_WORD* found = (FX_WORD*)FXSYS_bsearch( - &code, pMap->m_pWordMap, pMap->m_WordCount, 6, compareWordRange); - if (found) { - return found[2] + code - found[0]; - } - } - if (pMap->m_UseOffset == 0) { - return 0; - } - pMap = pMap + pMap->m_UseOffset; - } - return 0; -} -FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid) { - while (1) { - if (pMap->m_WordMapType == FXCMAP_CMap::Single) { - const FX_WORD* pCur = pMap->m_pWordMap; - const FX_WORD* pEnd = pMap->m_pWordMap + pMap->m_WordCount * 2; - while (pCur < pEnd) { - if (pCur[1] == cid) { - return pCur[0]; - } - pCur += 2; - } - } else if (pMap->m_WordMapType == FXCMAP_CMap::Range) { - const FX_WORD* pCur = pMap->m_pWordMap; - const FX_WORD* pEnd = pMap->m_pWordMap + pMap->m_WordCount * 3; - while (pCur < pEnd) { - if (cid >= pCur[2] && cid <= pCur[2] + pCur[1] - pCur[0]) { - return pCur[0] + cid - pCur[2]; - } - pCur += 3; - } - } - if (pMap->m_UseOffset == 0) { - return 0; - } - pMap = pMap + pMap->m_UseOffset; - } - while (1) { - if (pMap->m_DWordMapType == FXCMAP_CMap::Range) { - const FX_WORD* pCur = pMap->m_pDWordMap; - const FX_WORD* pEnd = pMap->m_pDWordMap + pMap->m_DWordCount * 4; - while (pCur < pEnd) { - if (cid >= pCur[3] && cid <= pCur[3] + pCur[2] - pCur[1]) { - return (((FX_DWORD)pCur[0] << 16) | pCur[1]) + cid - pCur[3]; - } - pCur += 4; - } - } else if (pMap->m_DWordMapType == FXCMAP_CMap::Single) { - const FX_WORD* pCur = pMap->m_pDWordMap; - const FX_WORD* pEnd = pMap->m_pDWordMap + pMap->m_DWordCount * 3; - while (pCur < pEnd) { - if (pCur[2] == cid) { - return ((FX_DWORD)pCur[0] << 16) | pCur[1]; - } - pCur += 3; - } - } - if (pMap->m_UseOffset == 0) { - return 0; - } - pMap = pMap + pMap->m_UseOffset; - } - return 0; -} - -void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset, - const FX_WORD*& pMap, - FX_DWORD& count) { - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - pMap = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; - count = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count; -} diff --git a/core/src/fpdfapi/fpdf_edit/editint.h b/core/src/fpdfapi/fpdf_edit/editint.h deleted file mode 100644 index 411de0f0fb..0000000000 --- a/core/src/fpdfapi/fpdf_edit/editint.h +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_EDIT_EDITINT_H_ -#define CORE_SRC_FPDFAPI_FPDF_EDIT_EDITINT_H_ - -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_stream.h" -#include "core/include/fxcrt/fx_system.h" - -class CPDF_Creator; -class CPDF_Object; - -class CPDF_ObjectStream { - public: - CPDF_ObjectStream(); - - FX_BOOL Start(); - - int32_t CompressIndirectObject(FX_DWORD dwObjNum, const CPDF_Object* pObj); - int32_t CompressIndirectObject(FX_DWORD dwObjNum, - const uint8_t* pBuffer, - FX_DWORD dwSize); - - FX_FILESIZE End(CPDF_Creator* pCreator); - - CFX_DWordArray m_ObjNumArray; - - CFX_ByteTextBuf m_Buffer; - FX_DWORD m_dwObjNum; - int32_t m_index; - - protected: - CFX_DWordArray m_OffsetArray; -}; -class CPDF_XRefStream { - public: - struct Index { - FX_DWORD objnum; - FX_DWORD count; - }; - - CPDF_XRefStream(); - - FX_BOOL Start(); - int32_t CompressIndirectObject(FX_DWORD dwObjNum, - const CPDF_Object* pObj, - CPDF_Creator* pCreator); - int32_t CompressIndirectObject(FX_DWORD dwObjNum, - const uint8_t* pBuffer, - FX_DWORD dwSize, - CPDF_Creator* pCreator); - FX_BOOL End(CPDF_Creator* pCreator, FX_BOOL bEOF = FALSE); - void AddObjectNumberToIndexArray(FX_DWORD objnum); - FX_BOOL EndXRefStream(CPDF_Creator* pCreator); - - std::vector m_IndexArray; - FX_FILESIZE m_PrevOffset; - FX_DWORD m_dwTempObjNum; - - protected: - int32_t EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF = TRUE); - FX_BOOL GenerateXRefStream(CPDF_Creator* pCreator, FX_BOOL bEOF); - size_t m_iSeg; - CPDF_ObjectStream m_ObjStream; - CFX_ByteTextBuf m_Buffer; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_EDIT_EDITINT_H_ diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp deleted file mode 100644 index a8fddf6cfc..0000000000 --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fpdfapi/fpdf_serial.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& ar, CFX_Matrix& matrix) { - ar << matrix.a << " " << matrix.b << " " << matrix.c << " " << matrix.d << " " - << matrix.e << " " << matrix.f; - return ar; -} - -CPDF_PageContentGenerator::CPDF_PageContentGenerator(CPDF_Page* pPage) - : m_pPage(pPage), m_pDocument(m_pPage->m_pDocument) { - for (const auto& pObj : *pPage->GetPageObjectList()) - InsertPageObject(pObj.get()); -} - -FX_BOOL CPDF_PageContentGenerator::InsertPageObject( - CPDF_PageObject* pPageObject) { - return pPageObject && m_pageObjects.Add(pPageObject); -} - -void CPDF_PageContentGenerator::GenerateContent() { - CFX_ByteTextBuf buf; - CPDF_Dictionary* pPageDict = m_pPage->m_pFormDict; - for (int i = 0; i < m_pageObjects.GetSize(); ++i) { - CPDF_PageObject* pPageObj = m_pageObjects[i]; - if (!pPageObj || !pPageObj->IsImage()) { - continue; - } - ProcessImage(buf, pPageObj->AsImage()); - } - CPDF_Object* pContent = - pPageDict ? pPageDict->GetElementValue("Contents") : NULL; - if (pContent) { - pPageDict->RemoveAt("Contents"); - } - CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); - pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); - m_pDocument->AddIndirectObject(pStream); - pPageDict->SetAtReference("Contents", m_pDocument, pStream->GetObjNum()); -} -CFX_ByteString CPDF_PageContentGenerator::RealizeResource( - CPDF_Object* pResourceObj, - const FX_CHAR* szType) { - if (!m_pPage->m_pResources) { - m_pPage->m_pResources = new CPDF_Dictionary; - int objnum = m_pDocument->AddIndirectObject(m_pPage->m_pResources); - m_pPage->m_pFormDict->SetAtReference("Resources", m_pDocument, objnum); - } - CPDF_Dictionary* pResList = m_pPage->m_pResources->GetDictBy(szType); - if (!pResList) { - pResList = new CPDF_Dictionary; - m_pPage->m_pResources->SetAt(szType, pResList); - } - m_pDocument->AddIndirectObject(pResourceObj); - CFX_ByteString name; - int idnum = 1; - while (1) { - name.Format("FX%c%d", szType[0], idnum); - if (!pResList->KeyExist(name)) { - break; - } - idnum++; - } - pResList->AddReference(name, m_pDocument, pResourceObj->GetObjNum()); - return name; -} -void CPDF_PageContentGenerator::ProcessImage(CFX_ByteTextBuf& buf, - CPDF_ImageObject* pImageObj) { - if ((pImageObj->m_Matrix.a == 0 && pImageObj->m_Matrix.b == 0) || - (pImageObj->m_Matrix.c == 0 && pImageObj->m_Matrix.d == 0)) { - return; - } - buf << "q " << pImageObj->m_Matrix << " cm "; - if (!pImageObj->m_pImage->IsInline()) { - CPDF_Stream* pStream = pImageObj->m_pImage->GetStream(); - FX_DWORD dwSavedObjNum = pStream->GetObjNum(); - CFX_ByteString name = RealizeResource(pStream, "XObject"); - if (dwSavedObjNum == 0) { - if (pImageObj->m_pImage) - pImageObj->m_pImage->Release(); - pImageObj->m_pImage = m_pDocument->GetPageData()->GetImage(pStream); - } - buf << "/" << PDF_NameEncode(name) << " Do Q\n"; - } -} -void CPDF_PageContentGenerator::ProcessForm(CFX_ByteTextBuf& buf, - const uint8_t* data, - FX_DWORD size, - CFX_Matrix& matrix) { - if (!data || !size) { - return; - } - CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); - CPDF_Dictionary* pFormDict = new CPDF_Dictionary; - pFormDict->SetAtName("Type", "XObject"); - pFormDict->SetAtName("Subtype", "Form"); - CFX_FloatRect bbox = m_pPage->GetPageBBox(); - matrix.TransformRect(bbox); - pFormDict->SetAtRect("BBox", bbox); - pStream->InitStream((uint8_t*)data, size, pFormDict); - buf << "q " << matrix << " cm "; - CFX_ByteString name = RealizeResource(pStream, "XObject"); - buf << "/" << PDF_NameEncode(name) << " Do Q\n"; -} -void CPDF_PageContentGenerator::TransformContent(CFX_Matrix& matrix) { - CPDF_Dictionary* pDict = m_pPage->m_pFormDict; - CPDF_Object* pContent = pDict ? pDict->GetElementValue("Contents") : NULL; - if (!pContent) - return; - - CFX_ByteTextBuf buf; - if (CPDF_Array* pArray = pContent->AsArray()) { - int iCount = pArray->GetCount(); - CPDF_StreamAcc** pContentArray = FX_Alloc(CPDF_StreamAcc*, iCount); - int size = 0; - int i = 0; - for (i = 0; i < iCount; ++i) { - pContent = pArray->GetElement(i); - CPDF_Stream* pStream = ToStream(pContent); - if (!pStream) - continue; - - CPDF_StreamAcc* pStreamAcc = new CPDF_StreamAcc(); - pStreamAcc->LoadAllData(pStream); - pContentArray[i] = pStreamAcc; - size += pContentArray[i]->GetSize() + 1; - } - int pos = 0; - uint8_t* pBuf = FX_Alloc(uint8_t, size); - for (i = 0; i < iCount; ++i) { - FXSYS_memcpy(pBuf + pos, pContentArray[i]->GetData(), - pContentArray[i]->GetSize()); - pos += pContentArray[i]->GetSize() + 1; - pBuf[pos - 1] = ' '; - delete pContentArray[i]; - } - ProcessForm(buf, pBuf, size, matrix); - FX_Free(pBuf); - FX_Free(pContentArray); - } else if (CPDF_Stream* pStream = pContent->AsStream()) { - CPDF_StreamAcc contentStream; - contentStream.LoadAllData(pStream); - ProcessForm(buf, contentStream.GetData(), contentStream.GetSize(), matrix); - } - CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL); - pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE); - m_pDocument->AddIndirectObject(pStream); - m_pPage->m_pFormDict->SetAtReference("Contents", m_pDocument, - pStream->GetObjNum()); -} diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp deleted file mode 100644 index f3797c2532..0000000000 --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp +++ /dev/null @@ -1,2076 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_edit/editint.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fpdfapi/fpdf_serial.h" -#include "core/include/fpdfapi/ipdf_crypto_handler.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h" -#include "third_party/base/stl_util.h" - -#define PDF_OBJECTSTREAM_MAXLENGTH (256 * 1024) -#define PDF_XREFSTREAM_MAXSIZE 10000 - -// TODO(ochang): Make helper for appending "objnum 0 R ". - -namespace { - -int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj, - CFX_FileBufferArchive* pFile, - FX_FILESIZE& offset) { - int32_t len = 0; - if (!pObj) { - if (pFile->AppendString(" null") < 0) { - return -1; - } - offset += 5; - return 1; - } - switch (pObj->GetType()) { - case CPDF_Object::NULLOBJ: - if (pFile->AppendString(" null") < 0) { - return -1; - } - offset += 5; - break; - case CPDF_Object::BOOLEAN: - case CPDF_Object::NUMBER: - if (pFile->AppendString(" ") < 0) { - return -1; - } - if ((len = pFile->AppendString(pObj->GetString())) < 0) { - return -1; - } - offset += len + 1; - break; - case CPDF_Object::STRING: { - CFX_ByteString str = pObj->GetString(); - FX_BOOL bHex = pObj->AsString()->IsHex(); - if ((len = pFile->AppendString(PDF_EncodeString(str, bHex))) < 0) { - return -1; - } - offset += len; - break; - } - case CPDF_Object::NAME: { - if (pFile->AppendString("/") < 0) { - return -1; - } - CFX_ByteString str = pObj->GetString(); - if ((len = pFile->AppendString(PDF_NameEncode(str))) < 0) { - return -1; - } - offset += len + 1; - break; - } - case CPDF_Object::REFERENCE: { - if (pFile->AppendString(" ") < 0) - return -1; - if ((len = pFile->AppendDWord(pObj->AsReference()->GetRefObjNum())) < 0) - return -1; - if (pFile->AppendString(" 0 R ") < 0) - return -1; - offset += len + 6; - break; - } - case CPDF_Object::ARRAY: { - if (pFile->AppendString("[") < 0) { - return -1; - } - offset += 1; - const CPDF_Array* p = pObj->AsArray(); - for (FX_DWORD i = 0; i < p->GetCount(); i++) { - CPDF_Object* pElement = p->GetElement(i); - if (pElement->GetObjNum()) { - if (pFile->AppendString(" ") < 0) { - return -1; - } - if ((len = pFile->AppendDWord(pElement->GetObjNum())) < 0) { - return -1; - } - if (pFile->AppendString(" 0 R") < 0) { - return -1; - } - offset += len + 5; - } else { - if (PDF_CreatorAppendObject(pElement, pFile, offset) < 0) { - return -1; - } - } - } - if (pFile->AppendString("]") < 0) { - return -1; - } - offset += 1; - break; - } - case CPDF_Object::DICTIONARY: { - if (pFile->AppendString("<<") < 0) { - return -1; - } - offset += 2; - const CPDF_Dictionary* p = pObj->AsDictionary(); - for (const auto& it : *p) { - const CFX_ByteString& key = it.first; - CPDF_Object* pValue = it.second; - if (pFile->AppendString("/") < 0) { - return -1; - } - if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) { - return -1; - } - offset += len + 1; - if (pValue->GetObjNum()) { - if (pFile->AppendString(" ") < 0) { - return -1; - } - if ((len = pFile->AppendDWord(pValue->GetObjNum())) < 0) { - return -1; - } - if (pFile->AppendString(" 0 R") < 0) { - return -1; - } - offset += len + 5; - } else { - if (PDF_CreatorAppendObject(pValue, pFile, offset) < 0) { - return -1; - } - } - } - if (pFile->AppendString(">>") < 0) { - return -1; - } - offset += 2; - break; - } - case CPDF_Object::STREAM: { - const CPDF_Stream* p = pObj->AsStream(); - if (PDF_CreatorAppendObject(p->GetDict(), pFile, offset) < 0) { - return -1; - } - if (pFile->AppendString("stream\r\n") < 0) { - return -1; - } - offset += 8; - CPDF_StreamAcc acc; - acc.LoadAllData(p, TRUE); - if (pFile->AppendBlock(acc.GetData(), acc.GetSize()) < 0) { - return -1; - } - offset += acc.GetSize(); - if ((len = pFile->AppendString("\r\nendstream")) < 0) { - return -1; - } - offset += len; - break; - } - default: - ASSERT(FALSE); - break; - } - return 1; -} - -int32_t PDF_CreatorWriteTrailer(CPDF_Document* pDocument, - CFX_FileBufferArchive* pFile, - CPDF_Array* pIDArray, - FX_BOOL bCompress) { - FX_FILESIZE offset = 0; - int32_t len = 0; - FXSYS_assert(pDocument && pFile); - CPDF_Parser* pParser = (CPDF_Parser*)pDocument->GetParser(); - if (pParser) { - CPDF_Dictionary* p = pParser->GetTrailer(); - for (const auto& it : *p) { - const CFX_ByteString& key = it.first; - CPDF_Object* pValue = it.second; - if (key == "Encrypt" || key == "Size" || key == "Filter" || - key == "Index" || key == "Length" || key == "Prev" || key == "W" || - key == "XRefStm" || key == "Type" || key == "ID") { - continue; - } - if (bCompress && key == "DecodeParms") { - continue; - } - if (pFile->AppendString(("/")) < 0) { - return -1; - } - if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) { - return -1; - } - offset += len + 1; - if (pValue->GetObjNum()) { - if (pFile->AppendString(" ") < 0) { - return -1; - } - if ((len = pFile->AppendDWord(pValue->GetObjNum())) < 0) { - return -1; - } - if (pFile->AppendString(" 0 R ") < 0) { - return -1; - } - offset += len + 6; - } else { - if (PDF_CreatorAppendObject(pValue, pFile, offset) < 0) { - return -1; - } - } - } - if (pIDArray) { - if (pFile->AppendString(("/ID")) < 0) { - return -1; - } - offset += 3; - if (PDF_CreatorAppendObject(pIDArray, pFile, offset) < 0) { - return -1; - } - } - return offset; - } - if (pFile->AppendString("\r\n/Root ") < 0) { - return -1; - } - if ((len = pFile->AppendDWord(pDocument->GetRoot()->GetObjNum())) < 0) { - return -1; - } - if (pFile->AppendString(" 0 R\r\n") < 0) { - return -1; - } - offset += len + 14; - if (pDocument->GetInfo()) { - if (pFile->AppendString("/Info ") < 0) { - return -1; - } - if ((len = pFile->AppendDWord(pDocument->GetInfo()->GetObjNum())) < 0) { - return -1; - } - if (pFile->AppendString(" 0 R\r\n") < 0) { - return -1; - } - offset += len + 12; - } - if (pIDArray) { - if (pFile->AppendString(("/ID")) < 0) { - return -1; - } - offset += 3; - if (PDF_CreatorAppendObject(pIDArray, pFile, offset) < 0) { - return -1; - } - } - return offset; -} - -int32_t PDF_CreatorWriteEncrypt(const CPDF_Dictionary* pEncryptDict, - FX_DWORD dwObjNum, - CFX_FileBufferArchive* pFile) { - if (!pEncryptDict) { - return 0; - } - FXSYS_assert(pFile); - FX_FILESIZE offset = 0; - int32_t len = 0; - if (pFile->AppendString("/Encrypt") < 0) { - return -1; - } - offset += 8; - if (pFile->AppendString(" ") < 0) { - return -1; - } - if ((len = pFile->AppendDWord(dwObjNum)) < 0) { - return -1; - } - if (pFile->AppendString(" 0 R ") < 0) { - return -1; - } - offset += len + 6; - return offset; -} - -std::vector PDF_GenerateFileID(FX_DWORD dwSeed1, FX_DWORD dwSeed2) { - std::vector buffer(sizeof(FX_DWORD) * 4); - FX_DWORD* pBuffer = reinterpret_cast(buffer.data()); - void* pContext = FX_Random_MT_Start(dwSeed1); - for (int i = 0; i < 2; ++i) - *pBuffer++ = FX_Random_MT_Generate(pContext); - FX_Random_MT_Close(pContext); - pContext = FX_Random_MT_Start(dwSeed2); - for (int i = 0; i < 2; ++i) - *pBuffer++ = FX_Random_MT_Generate(pContext); - FX_Random_MT_Close(pContext); - return buffer; -} - -void AppendIndex0(CFX_ByteTextBuf& buffer, bool bFirstObject) { - buffer.AppendByte(0); - buffer.AppendByte(0); - buffer.AppendByte(0); - buffer.AppendByte(0); - buffer.AppendByte(0); - const uint8_t byte = bFirstObject ? 0xFF : 0; - buffer.AppendByte(byte); - buffer.AppendByte(byte); -} - -void AppendIndex1(CFX_ByteTextBuf& buffer, FX_FILESIZE offset) { - buffer.AppendByte(1); - buffer.AppendByte(FX_GETBYTEOFFSET24(offset)); - buffer.AppendByte(FX_GETBYTEOFFSET16(offset)); - buffer.AppendByte(FX_GETBYTEOFFSET8(offset)); - buffer.AppendByte(FX_GETBYTEOFFSET0(offset)); - buffer.AppendByte(0); - buffer.AppendByte(0); -} - -void AppendIndex2(CFX_ByteTextBuf& buffer, FX_DWORD objnum, int32_t index) { - buffer.AppendByte(2); - buffer.AppendByte(FX_GETBYTEOFFSET24(objnum)); - buffer.AppendByte(FX_GETBYTEOFFSET16(objnum)); - buffer.AppendByte(FX_GETBYTEOFFSET8(objnum)); - buffer.AppendByte(FX_GETBYTEOFFSET0(objnum)); - buffer.AppendByte(FX_GETBYTEOFFSET8(index)); - buffer.AppendByte(FX_GETBYTEOFFSET0(index)); -} - -bool IsXRefNeedEnd(CPDF_XRefStream* pXRef, FX_DWORD flag) { - if (!(flag & FPDFCREATE_INCREMENTAL)) - return false; - - FX_DWORD iCount = 0; - for (const auto& pair : pXRef->m_IndexArray) - iCount += pair.count; - - return iCount >= PDF_XREFSTREAM_MAXSIZE; -} - -int32_t OutputIndex(CFX_FileBufferArchive* pFile, FX_FILESIZE offset) { - if (sizeof(offset) > 4) { - if (FX_GETBYTEOFFSET32(offset)) { - if (pFile->AppendByte(FX_GETBYTEOFFSET56(offset)) < 0) - return -1; - if (pFile->AppendByte(FX_GETBYTEOFFSET48(offset)) < 0) - return -1; - if (pFile->AppendByte(FX_GETBYTEOFFSET40(offset)) < 0) - return -1; - if (pFile->AppendByte(FX_GETBYTEOFFSET32(offset)) < 0) - return -1; - } - } - if (pFile->AppendByte(FX_GETBYTEOFFSET24(offset)) < 0) - return -1; - if (pFile->AppendByte(FX_GETBYTEOFFSET16(offset)) < 0) - return -1; - if (pFile->AppendByte(FX_GETBYTEOFFSET8(offset)) < 0) - return -1; - if (pFile->AppendByte(FX_GETBYTEOFFSET0(offset)) < 0) - return -1; - if (pFile->AppendByte(0) < 0) - return -1; - return 0; -} - -class CPDF_FlateEncoder { - public: - CPDF_FlateEncoder(); - ~CPDF_FlateEncoder(); - FX_BOOL Initialize(CPDF_Stream* pStream, FX_BOOL bFlateEncode); - FX_BOOL Initialize(const uint8_t* pBuffer, - FX_DWORD size, - FX_BOOL bFlateEncode, - FX_BOOL bXRefStream = FALSE); - void CloneDict(); - uint8_t* m_pData; - FX_DWORD m_dwSize; - CPDF_Dictionary* m_pDict; - FX_BOOL m_bCloned; - FX_BOOL m_bNewData; - CPDF_StreamAcc m_Acc; -}; -CPDF_FlateEncoder::CPDF_FlateEncoder() { - m_pData = NULL; - m_dwSize = 0; - m_pDict = NULL; - m_bCloned = FALSE; - m_bNewData = FALSE; -} -void CPDF_FlateEncoder::CloneDict() { - if (!m_bCloned) { - m_pDict = ToDictionary(m_pDict->Clone()); - ASSERT(m_pDict); - m_bCloned = TRUE; - } -} -FX_BOOL CPDF_FlateEncoder::Initialize(CPDF_Stream* pStream, - FX_BOOL bFlateEncode) { - m_Acc.LoadAllData(pStream, TRUE); - if ((pStream && pStream->GetDict() && - pStream->GetDict()->KeyExist("Filter")) || - !bFlateEncode) { - if (pStream->GetDict()->KeyExist("Filter") && !bFlateEncode) { - CPDF_StreamAcc destAcc; - destAcc.LoadAllData(pStream); - m_dwSize = destAcc.GetSize(); - m_pData = (uint8_t*)destAcc.DetachData(); - m_pDict = ToDictionary(pStream->GetDict()->Clone()); - m_pDict->RemoveAt("Filter"); - m_bNewData = TRUE; - m_bCloned = TRUE; - } else { - m_pData = (uint8_t*)m_Acc.GetData(); - m_dwSize = m_Acc.GetSize(); - m_pDict = pStream->GetDict(); - } - return TRUE; - } - m_pData = NULL; - m_dwSize = 0; - m_bNewData = TRUE; - m_bCloned = TRUE; - ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), m_pData, m_dwSize); - m_pDict = ToDictionary(pStream->GetDict()->Clone()); - m_pDict->SetAtInteger("Length", m_dwSize); - m_pDict->SetAtName("Filter", "FlateDecode"); - m_pDict->RemoveAt("DecodeParms"); - return TRUE; -} -FX_BOOL CPDF_FlateEncoder::Initialize(const uint8_t* pBuffer, - FX_DWORD size, - FX_BOOL bFlateEncode, - FX_BOOL bXRefStream) { - if (!bFlateEncode) { - m_pData = (uint8_t*)pBuffer; - m_dwSize = size; - return TRUE; - } - m_bNewData = TRUE; - if (bXRefStream) { - ::FlateEncode(pBuffer, size, 12, 1, 8, 7, m_pData, m_dwSize); - } else { - ::FlateEncode(pBuffer, size, m_pData, m_dwSize); - } - return TRUE; -} -CPDF_FlateEncoder::~CPDF_FlateEncoder() { - if (m_bCloned && m_pDict) { - m_pDict->Release(); - } - if (m_bNewData) { - FX_Free(m_pData); - } -} -class CPDF_Encryptor { - public: - CPDF_Encryptor(); - ~CPDF_Encryptor(); - FX_BOOL Initialize(IPDF_CryptoHandler* pHandler, - int objnum, - uint8_t* src_data, - FX_DWORD src_size); - uint8_t* m_pData; - FX_DWORD m_dwSize; - FX_BOOL m_bNewBuf; -}; -CPDF_Encryptor::CPDF_Encryptor() { - m_pData = NULL; - m_dwSize = 0; - m_bNewBuf = FALSE; -} -FX_BOOL CPDF_Encryptor::Initialize(IPDF_CryptoHandler* pHandler, - int objnum, - uint8_t* src_data, - FX_DWORD src_size) { - if (src_size == 0) { - return TRUE; - } - if (!pHandler) { - m_pData = (uint8_t*)src_data; - m_dwSize = src_size; - m_bNewBuf = FALSE; - return TRUE; - } - m_dwSize = pHandler->EncryptGetSize(objnum, 0, src_data, src_size); - m_pData = FX_Alloc(uint8_t, m_dwSize); - pHandler->EncryptContent(objnum, 0, src_data, src_size, m_pData, m_dwSize); - m_bNewBuf = TRUE; - return TRUE; -} -CPDF_Encryptor::~CPDF_Encryptor() { - if (m_bNewBuf) { - FX_Free(m_pData); - } -} - -} // namespace - -CPDF_ObjectStream::CPDF_ObjectStream() : m_dwObjNum(0), m_index(0) {} -FX_BOOL CPDF_ObjectStream::Start() { - m_ObjNumArray.RemoveAll(); - m_OffsetArray.RemoveAll(); - m_Buffer.Clear(); - m_dwObjNum = 0; - m_index = 0; - return TRUE; -} -int32_t CPDF_ObjectStream::CompressIndirectObject(FX_DWORD dwObjNum, - const CPDF_Object* pObj) { - m_ObjNumArray.Add(dwObjNum); - m_OffsetArray.Add(m_Buffer.GetLength()); - m_Buffer << pObj; - return 1; -} -int32_t CPDF_ObjectStream::CompressIndirectObject(FX_DWORD dwObjNum, - const uint8_t* pBuffer, - FX_DWORD dwSize) { - m_ObjNumArray.Add(dwObjNum); - m_OffsetArray.Add(m_Buffer.GetLength()); - m_Buffer.AppendBlock(pBuffer, dwSize); - return 1; -} -FX_FILESIZE CPDF_ObjectStream::End(CPDF_Creator* pCreator) { - FXSYS_assert(pCreator); - if (m_ObjNumArray.GetSize() == 0) { - return 0; - } - CFX_FileBufferArchive* pFile = &pCreator->m_File; - IPDF_CryptoHandler* pHandler = pCreator->m_pCryptoHandler; - FX_FILESIZE ObjOffset = pCreator->m_Offset; - if (!m_dwObjNum) { - m_dwObjNum = ++pCreator->m_dwLastObjNum; - } - CFX_ByteTextBuf tempBuffer; - int32_t iCount = m_ObjNumArray.GetSize(); - for (int32_t i = 0; i < iCount; i++) { - tempBuffer << m_ObjNumArray.ElementAt(i) << " " - << m_OffsetArray.ElementAt(i) << " "; - } - FX_FILESIZE& offset = pCreator->m_Offset; - int32_t len = pFile->AppendDWord(m_dwObjNum); - if (len < 0) { - return -1; - } - offset += len; - if ((len = pFile->AppendString(" 0 obj\r\n<AppendDWord((FX_DWORD)iCount)) < 0) { - return -1; - } - offset += len; - if (pFile->AppendString("/First ") < 0) { - return -1; - } - if ((len = pFile->AppendDWord((FX_DWORD)tempBuffer.GetLength())) < 0) { - return -1; - } - if (pFile->AppendString("/Length ") < 0) { - return -1; - } - offset += len + 15; - if (!pCreator->m_bCompress && !pHandler) { - if ((len = pFile->AppendDWord( - (FX_DWORD)(tempBuffer.GetLength() + m_Buffer.GetLength()))) < 0) { - return -1; - } - offset += len; - if ((len = pFile->AppendString(">>stream\r\n")) < 0) { - return -1; - } - if (pFile->AppendBlock(tempBuffer.GetBuffer(), tempBuffer.GetLength()) < - 0) { - return -1; - } - if (pFile->AppendBlock(m_Buffer.GetBuffer(), m_Buffer.GetLength()) < 0) { - return -1; - } - offset += len + tempBuffer.GetLength() + m_Buffer.GetLength(); - } else { - tempBuffer << m_Buffer; - CPDF_FlateEncoder encoder; - encoder.Initialize(tempBuffer.GetBuffer(), tempBuffer.GetLength(), - pCreator->m_bCompress); - CPDF_Encryptor encryptor; - encryptor.Initialize(pHandler, m_dwObjNum, encoder.m_pData, - encoder.m_dwSize); - if ((len = pFile->AppendDWord(encryptor.m_dwSize)) < 0) { - return -1; - } - offset += len; - if (pCreator->m_bCompress) { - if (pFile->AppendString("/Filter /FlateDecode") < 0) { - return -1; - } - offset += 20; - } - if ((len = pFile->AppendString(">>stream\r\n")) < 0) { - return -1; - } - if (pFile->AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) { - return -1; - } - offset += len + encryptor.m_dwSize; - } - if ((len = pFile->AppendString("\r\nendstream\r\nendobj\r\n")) < 0) { - return -1; - } - offset += len; - return ObjOffset; -} -CPDF_XRefStream::CPDF_XRefStream() - : m_PrevOffset(0), m_dwTempObjNum(0), m_iSeg(0) {} -FX_BOOL CPDF_XRefStream::Start() { - m_IndexArray.clear(); - m_Buffer.Clear(); - m_iSeg = 0; - return TRUE; -} -int32_t CPDF_XRefStream::CompressIndirectObject(FX_DWORD dwObjNum, - const CPDF_Object* pObj, - CPDF_Creator* pCreator) { - if (!pCreator) { - return 0; - } - m_ObjStream.CompressIndirectObject(dwObjNum, pObj); - if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize && - m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) { - return 1; - } - return EndObjectStream(pCreator); -} -int32_t CPDF_XRefStream::CompressIndirectObject(FX_DWORD dwObjNum, - const uint8_t* pBuffer, - FX_DWORD dwSize, - CPDF_Creator* pCreator) { - if (!pCreator) { - return 0; - } - m_ObjStream.CompressIndirectObject(dwObjNum, pBuffer, dwSize); - if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize && - m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) { - return 1; - } - return EndObjectStream(pCreator); -} - -int32_t CPDF_XRefStream::EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF) { - FX_FILESIZE objOffset = 0; - if (bEOF) { - objOffset = m_ObjStream.End(pCreator); - if (objOffset < 0) { - return -1; - } - } - FX_DWORD& dwObjStmNum = m_ObjStream.m_dwObjNum; - if (!dwObjStmNum) { - dwObjStmNum = ++pCreator->m_dwLastObjNum; - } - int32_t iSize = m_ObjStream.m_ObjNumArray.GetSize(); - size_t iSeg = m_IndexArray.size(); - if (!(pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL)) { - if (m_dwTempObjNum == 0) { - AppendIndex0(m_Buffer, true); - m_dwTempObjNum++; - } - FX_DWORD end_num = m_IndexArray.back().objnum + m_IndexArray.back().count; - int index = 0; - for (; m_dwTempObjNum < end_num; m_dwTempObjNum++) { - FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(m_dwTempObjNum); - if (offset) { - if (index >= iSize || - m_dwTempObjNum != m_ObjStream.m_ObjNumArray[index]) { - AppendIndex1(m_Buffer, *offset); - } else { - AppendIndex2(m_Buffer, dwObjStmNum, index++); - } - } else { - AppendIndex0(m_Buffer, false); - } - } - if (iSize > 0 && bEOF) { - pCreator->m_ObjectOffset.Add(dwObjStmNum, 1); - pCreator->m_ObjectOffset[dwObjStmNum] = objOffset; - } - m_iSeg = iSeg; - if (bEOF) { - m_ObjStream.Start(); - } - return 1; - } - for (auto it = m_IndexArray.begin() + m_iSeg; it != m_IndexArray.end(); - ++it) { - for (FX_DWORD m = it->objnum; m < it->objnum + it->count; ++m) { - if (m_ObjStream.m_index >= iSize || - m != m_ObjStream.m_ObjNumArray.ElementAt(it - m_IndexArray.begin())) { - AppendIndex1(m_Buffer, pCreator->m_ObjectOffset[m]); - } else { - AppendIndex2(m_Buffer, dwObjStmNum, m_ObjStream.m_index++); - } - } - } - if (iSize > 0 && bEOF) { - AppendIndex1(m_Buffer, objOffset); - m_IndexArray.push_back({dwObjStmNum, 1}); - iSeg += 1; - } - m_iSeg = iSeg; - if (bEOF) { - m_ObjStream.Start(); - } - return 1; -} -FX_BOOL CPDF_XRefStream::GenerateXRefStream(CPDF_Creator* pCreator, - FX_BOOL bEOF) { - FX_FILESIZE offset_tmp = pCreator->m_Offset; - FX_DWORD objnum = ++pCreator->m_dwLastObjNum; - CFX_FileBufferArchive* pFile = &pCreator->m_File; - FX_BOOL bIncremental = (pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL) != 0; - if (bIncremental) { - AddObjectNumberToIndexArray(objnum); - } else { - for (; m_dwTempObjNum < pCreator->m_dwLastObjNum; m_dwTempObjNum++) { - FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(m_dwTempObjNum); - if (offset) { - AppendIndex1(m_Buffer, *offset); - } else { - AppendIndex0(m_Buffer, false); - } - } - } - AppendIndex1(m_Buffer, offset_tmp); - FX_FILESIZE& offset = pCreator->m_Offset; - int32_t len = pFile->AppendDWord(objnum); - if (len < 0) { - return FALSE; - } - offset += len; - if ((len = pFile->AppendString(" 0 obj\r\n<AppendDWord(0)) < 0) { - return FALSE; - } - if ((len = pFile->AppendString(" ")) < 0) { - return FALSE; - } - offset += len + 1; - if ((len = pFile->AppendDWord(objnum + 1)) < 0) { - return FALSE; - } - offset += len; - } else { - for (const auto& pair : m_IndexArray) { - if ((len = pFile->AppendDWord(pair.objnum)) < 0) { - return FALSE; - } - if (pFile->AppendString(" ") < 0) { - return FALSE; - } - offset += len + 1; - if ((len = pFile->AppendDWord(pair.count)) < 0) { - return FALSE; - } - if (pFile->AppendString(" ") < 0) { - return FALSE; - } - offset += len + 1; - } - } - if (pFile->AppendString("]/Size ") < 0) { - return FALSE; - } - if ((len = pFile->AppendDWord(objnum + 1)) < 0) { - return FALSE; - } - offset += len + 7; - if (m_PrevOffset > 0) { - if (pFile->AppendString("/Prev ") < 0) { - return FALSE; - } - FX_CHAR offset_buf[20]; - FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); - FXSYS_i64toa(m_PrevOffset, offset_buf, 10); - int32_t len = (int32_t)FXSYS_strlen(offset_buf); - if (pFile->AppendBlock(offset_buf, len) < 0) { - return FALSE; - } - offset += len + 6; - } - FX_BOOL bPredictor = TRUE; - CPDF_FlateEncoder encoder; - encoder.Initialize(m_Buffer.GetBuffer(), m_Buffer.GetLength(), - pCreator->m_bCompress, bPredictor); - if (pCreator->m_bCompress) { - if (pFile->AppendString("/Filter /FlateDecode") < 0) { - return FALSE; - } - offset += 20; - if (bPredictor) { - if ((len = pFile->AppendString( - "/DecodeParms<>")) < 0) { - return FALSE; - } - offset += len; - } - } - if (pFile->AppendString("/Length ") < 0) { - return FALSE; - } - if ((len = pFile->AppendDWord(encoder.m_dwSize)) < 0) { - return FALSE; - } - offset += len + 8; - if (bEOF) { - if ((len = PDF_CreatorWriteTrailer(pCreator->m_pDocument, pFile, - pCreator->m_pIDArray, - pCreator->m_bCompress)) < 0) { - return FALSE; - } - offset += len; - if (pCreator->m_pEncryptDict) { - FX_DWORD dwEncryptObjNum = pCreator->m_pEncryptDict->GetObjNum(); - if (dwEncryptObjNum == 0) { - dwEncryptObjNum = pCreator->m_dwEnryptObjNum; - } - if ((len = PDF_CreatorWriteEncrypt(pCreator->m_pEncryptDict, - dwEncryptObjNum, pFile)) < 0) { - return FALSE; - } - offset += len; - } - } - if ((len = pFile->AppendString(">>stream\r\n")) < 0) { - return FALSE; - } - offset += len; - if (pFile->AppendBlock(encoder.m_pData, encoder.m_dwSize) < 0) { - return FALSE; - } - if ((len = pFile->AppendString("\r\nendstream\r\nendobj\r\n")) < 0) { - return FALSE; - } - offset += encoder.m_dwSize + len; - m_PrevOffset = offset_tmp; - return TRUE; -} -FX_BOOL CPDF_XRefStream::End(CPDF_Creator* pCreator, FX_BOOL bEOF) { - if (EndObjectStream(pCreator, bEOF) < 0) { - return FALSE; - } - return GenerateXRefStream(pCreator, bEOF); -} -FX_BOOL CPDF_XRefStream::EndXRefStream(CPDF_Creator* pCreator) { - if (!(pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL)) { - AppendIndex0(m_Buffer, true); - for (FX_DWORD i = 1; i < pCreator->m_dwLastObjNum + 1; i++) { - FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(i); - if (offset) { - AppendIndex1(m_Buffer, *offset); - } else { - AppendIndex0(m_Buffer, false); - } - } - } else { - for (const auto& pair : m_IndexArray) { - for (FX_DWORD j = pair.objnum; j < pair.objnum + pair.count; ++j) - AppendIndex1(m_Buffer, pCreator->m_ObjectOffset[j]); - } - } - return GenerateXRefStream(pCreator, FALSE); -} -void CPDF_XRefStream::AddObjectNumberToIndexArray(FX_DWORD objnum) { - if (m_IndexArray.empty()) { - m_IndexArray.push_back({objnum, 1}); - return; - } - FX_DWORD next_objnum = m_IndexArray.back().objnum + m_IndexArray.back().count; - if (objnum == next_objnum) - m_IndexArray.back().count += 1; - else - m_IndexArray.push_back({objnum, 1}); -} -CPDF_Creator::CPDF_Creator(CPDF_Document* pDoc) { - m_pDocument = pDoc; - m_pParser = (CPDF_Parser*)pDoc->m_pParser; - m_bCompress = TRUE; - if (m_pParser) { - m_pEncryptDict = m_pParser->GetEncryptDict(); - m_pCryptoHandler = m_pParser->GetCryptoHandler(); - } else { - m_pEncryptDict = NULL; - m_pCryptoHandler = NULL; - } - m_bSecurityChanged = FALSE; - m_bStandardSecurity = FALSE; - m_pMetadata = NULL; - m_bEncryptCloned = FALSE; - m_bEncryptMetadata = FALSE; - m_Offset = 0; - m_iStage = -1; - m_dwFlags = 0; - m_Pos = NULL; - m_XrefStart = 0; - m_pXRefStream = NULL; - m_ObjectStreamSize = 200; - m_dwLastObjNum = m_pDocument->GetLastObjNum(); - m_pIDArray = NULL; - m_FileVersion = 0; - m_dwEnryptObjNum = 0; - m_bNewCrypto = FALSE; -} -CPDF_Creator::~CPDF_Creator() { - ResetStandardSecurity(); - if (m_bEncryptCloned && m_pEncryptDict) { - m_pEncryptDict->Release(); - m_pEncryptDict = NULL; - } - Clear(); -} - -int32_t CPDF_Creator::WriteIndirectObjectToStream(const CPDF_Object* pObj) { - if (!m_pXRefStream) - return 1; - - FX_DWORD objnum = pObj->GetObjNum(); - if (m_pParser && m_pParser->GetObjectGenNum(objnum) > 0) - return 1; - - if (pObj->IsNumber()) - return 1; - - CPDF_Dictionary* pDict = pObj->GetDict(); - if (pObj->IsStream()) { - if (pDict && pDict->GetStringBy("Type") == "XRef") - return 0; - return 1; - } - - if (pDict) { - if (pDict == m_pDocument->m_pRootDict || pDict == m_pEncryptDict) - return 1; - if (pDict->IsSignatureDict()) - return 1; - if (pDict->GetStringBy("Type") == "Page") - return 1; - } - - m_pXRefStream->AddObjectNumberToIndexArray(objnum); - if (m_pXRefStream->CompressIndirectObject(objnum, pObj, this) < 0) - return -1; - if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) - return 0; - if (!m_pXRefStream->End(this)) - return -1; - if (!m_pXRefStream->Start()) - return -1; - return 0; -} -int32_t CPDF_Creator::WriteIndirectObjectToStream(FX_DWORD objnum, - const uint8_t* pBuffer, - FX_DWORD dwSize) { - if (!m_pXRefStream) { - return 1; - } - m_pXRefStream->AddObjectNumberToIndexArray(objnum); - int32_t iRet = - m_pXRefStream->CompressIndirectObject(objnum, pBuffer, dwSize, this); - if (iRet < 1) { - return iRet; - } - if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) { - return 0; - } - if (!m_pXRefStream->End(this)) { - return -1; - } - if (!m_pXRefStream->Start()) { - return -1; - } - return 0; -} -int32_t CPDF_Creator::AppendObjectNumberToXRef(FX_DWORD objnum) { - if (!m_pXRefStream) { - return 1; - } - m_pXRefStream->AddObjectNumberToIndexArray(objnum); - if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) { - return 0; - } - if (!m_pXRefStream->End(this)) { - return -1; - } - if (!m_pXRefStream->Start()) { - return -1; - } - return 0; -} -int32_t CPDF_Creator::WriteStream(const CPDF_Object* pStream, - FX_DWORD objnum, - IPDF_CryptoHandler* pCrypto) { - CPDF_FlateEncoder encoder; - encoder.Initialize(const_cast(pStream->AsStream()), - pStream == m_pMetadata ? FALSE : m_bCompress); - CPDF_Encryptor encryptor; - if (!encryptor.Initialize(pCrypto, objnum, encoder.m_pData, - encoder.m_dwSize)) { - return -1; - } - if ((FX_DWORD)encoder.m_pDict->GetIntegerBy("Length") != encryptor.m_dwSize) { - encoder.CloneDict(); - encoder.m_pDict->SetAtInteger("Length", encryptor.m_dwSize); - } - if (WriteDirectObj(objnum, encoder.m_pDict) < 0) { - return -1; - } - int len = m_File.AppendString("stream\r\n"); - if (len < 0) { - return -1; - } - m_Offset += len; - if (m_File.AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) { - return -1; - } - m_Offset += encryptor.m_dwSize; - if ((len = m_File.AppendString("\r\nendstream")) < 0) { - return -1; - } - m_Offset += len; - return 1; -} -int32_t CPDF_Creator::WriteIndirectObj(FX_DWORD objnum, - const CPDF_Object* pObj) { - int32_t len = m_File.AppendDWord(objnum); - if (len < 0) - return -1; - - m_Offset += len; - if ((len = m_File.AppendString(" 0 obj\r\n")) < 0) - return -1; - - m_Offset += len; - if (pObj->IsStream()) { - IPDF_CryptoHandler* pHandler = nullptr; - pHandler = - (pObj == m_pMetadata && !m_bEncryptMetadata) ? NULL : m_pCryptoHandler; - if (WriteStream(pObj, objnum, pHandler) < 0) - return -1; - } else { - if (WriteDirectObj(objnum, pObj) < 0) - return -1; - } - if ((len = m_File.AppendString("\r\nendobj\r\n")) < 0) - return -1; - - m_Offset += len; - if (AppendObjectNumberToXRef(objnum) < 0) - return -1; - return 0; -} -int32_t CPDF_Creator::WriteIndirectObj(const CPDF_Object* pObj) { - int32_t iRet = WriteIndirectObjectToStream(pObj); - if (iRet < 1) { - return iRet; - } - return WriteIndirectObj(pObj->GetObjNum(), pObj); -} -int32_t CPDF_Creator::WriteDirectObj(FX_DWORD objnum, - const CPDF_Object* pObj, - FX_BOOL bEncrypt) { - int32_t len = 0; - if (!pObj) { - if (m_File.AppendString(" null") < 0) { - return -1; - } - m_Offset += 5; - return 1; - } - switch (pObj->GetType()) { - case CPDF_Object::NULLOBJ: - if (m_File.AppendString(" null") < 0) { - return -1; - } - m_Offset += 5; - break; - case CPDF_Object::BOOLEAN: - case CPDF_Object::NUMBER: - if (m_File.AppendString(" ") < 0) { - return -1; - } - if ((len = m_File.AppendString(pObj->GetString())) < 0) { - return -1; - } - m_Offset += len + 1; - break; - case CPDF_Object::STRING: { - CFX_ByteString str = pObj->GetString(); - FX_BOOL bHex = pObj->AsString()->IsHex(); - if (!m_pCryptoHandler || !bEncrypt) { - CFX_ByteString content = PDF_EncodeString(str, bHex); - if ((len = m_File.AppendString(content)) < 0) { - return -1; - } - m_Offset += len; - break; - } - CPDF_Encryptor encryptor; - encryptor.Initialize(m_pCryptoHandler, objnum, (uint8_t*)str.c_str(), - str.GetLength()); - CFX_ByteString content = PDF_EncodeString( - CFX_ByteString((const FX_CHAR*)encryptor.m_pData, encryptor.m_dwSize), - bHex); - if ((len = m_File.AppendString(content)) < 0) { - return -1; - } - m_Offset += len; - break; - } - case CPDF_Object::STREAM: { - CPDF_FlateEncoder encoder; - encoder.Initialize(const_cast(pObj->AsStream()), - m_bCompress); - CPDF_Encryptor encryptor; - IPDF_CryptoHandler* pHandler = m_pCryptoHandler; - encryptor.Initialize(pHandler, objnum, encoder.m_pData, encoder.m_dwSize); - if ((FX_DWORD)encoder.m_pDict->GetIntegerBy("Length") != - encryptor.m_dwSize) { - encoder.CloneDict(); - encoder.m_pDict->SetAtInteger("Length", encryptor.m_dwSize); - } - if (WriteDirectObj(objnum, encoder.m_pDict) < 0) { - return -1; - } - if ((len = m_File.AppendString("stream\r\n")) < 0) { - return -1; - } - m_Offset += len; - if (m_File.AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) { - return -1; - } - m_Offset += encryptor.m_dwSize; - if ((len = m_File.AppendString("\r\nendstream")) < 0) { - return -1; - } - m_Offset += len; - break; - } - case CPDF_Object::NAME: { - if (m_File.AppendString("/") < 0) { - return -1; - } - CFX_ByteString str = pObj->GetString(); - if ((len = m_File.AppendString(PDF_NameEncode(str))) < 0) { - return -1; - } - m_Offset += len + 1; - break; - } - case CPDF_Object::REFERENCE: { - if (m_File.AppendString(" ") < 0) - return -1; - if ((len = m_File.AppendDWord(pObj->AsReference()->GetRefObjNum())) < 0) - return -1; - if (m_File.AppendString(" 0 R") < 0) - return -1; - m_Offset += len + 5; - break; - } - case CPDF_Object::ARRAY: { - if (m_File.AppendString("[") < 0) { - return -1; - } - m_Offset += 1; - const CPDF_Array* p = pObj->AsArray(); - for (FX_DWORD i = 0; i < p->GetCount(); i++) { - CPDF_Object* pElement = p->GetElement(i); - if (pElement->GetObjNum()) { - if (m_File.AppendString(" ") < 0) { - return -1; - } - if ((len = m_File.AppendDWord(pElement->GetObjNum())) < 0) { - return -1; - } - if (m_File.AppendString(" 0 R") < 0) { - return -1; - } - m_Offset += len + 5; - } else { - if (WriteDirectObj(objnum, pElement) < 0) { - return -1; - } - } - } - if (m_File.AppendString("]") < 0) { - return -1; - } - m_Offset += 1; - break; - } - case CPDF_Object::DICTIONARY: { - if (!m_pCryptoHandler || pObj == m_pEncryptDict) { - return PDF_CreatorAppendObject(pObj, &m_File, m_Offset); - } - if (m_File.AppendString("<<") < 0) { - return -1; - } - m_Offset += 2; - const CPDF_Dictionary* p = pObj->AsDictionary(); - bool bSignDict = p->IsSignatureDict(); - for (const auto& it : *p) { - FX_BOOL bSignValue = FALSE; - const CFX_ByteString& key = it.first; - CPDF_Object* pValue = it.second; - if (m_File.AppendString("/") < 0) { - return -1; - } - if ((len = m_File.AppendString(PDF_NameEncode(key))) < 0) { - return -1; - } - m_Offset += len + 1; - if (bSignDict && key == "Contents") { - bSignValue = TRUE; - } - if (pValue->GetObjNum()) { - if (m_File.AppendString(" ") < 0) { - return -1; - } - if ((len = m_File.AppendDWord(pValue->GetObjNum())) < 0) { - return -1; - } - if (m_File.AppendString(" 0 R ") < 0) { - return -1; - } - m_Offset += len + 6; - } else { - if (WriteDirectObj(objnum, pValue, !bSignValue) < 0) { - return -1; - } - } - } - if (m_File.AppendString(">>") < 0) { - return -1; - } - m_Offset += 2; - break; - } - } - return 1; -} -int32_t CPDF_Creator::WriteOldIndirectObject(FX_DWORD objnum) { - if (m_pParser->IsObjectFreeOrNull(objnum)) - return 0; - - m_ObjectOffset[objnum] = m_Offset; - FX_BOOL bExistInMap = - pdfium::ContainsKey(m_pDocument->m_IndirectObjs, objnum); - const uint8_t object_type = m_pParser->GetObjectType(objnum); - bool bObjStm = (object_type == 2) && m_pEncryptDict && !m_pXRefStream; - if (m_pParser->IsVersionUpdated() || m_bSecurityChanged || bExistInMap || - bObjStm) { - CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum); - if (!pObj) { - m_ObjectOffset[objnum] = 0; - return 0; - } - if (WriteIndirectObj(pObj)) { - return -1; - } - if (!bExistInMap) { - m_pDocument->ReleaseIndirectObject(objnum); - } - } else { - uint8_t* pBuffer; - FX_DWORD size; - m_pParser->GetIndirectBinary(objnum, pBuffer, size); - if (!pBuffer) { - return 0; - } - if (object_type == 2) { - if (m_pXRefStream) { - if (WriteIndirectObjectToStream(objnum, pBuffer, size) < 0) { - FX_Free(pBuffer); - return -1; - } - } else { - int32_t len = m_File.AppendDWord(objnum); - if (len < 0) { - return -1; - } - if (m_File.AppendString(" 0 obj ") < 0) { - return -1; - } - m_Offset += len + 7; - if (m_File.AppendBlock(pBuffer, size) < 0) { - return -1; - } - m_Offset += size; - if (m_File.AppendString("\r\nendobj\r\n") < 0) { - return -1; - } - m_Offset += 10; - } - } else { - if (m_File.AppendBlock(pBuffer, size) < 0) { - return -1; - } - m_Offset += size; - if (AppendObjectNumberToXRef(objnum) < 0) { - return -1; - } - } - FX_Free(pBuffer); - } - return 1; -} -int32_t CPDF_Creator::WriteOldObjs(IFX_Pause* pPause) { - FX_DWORD nLastObjNum = m_pParser->GetLastObjNum(); - if (!m_pParser->IsValidObjectNumber(nLastObjNum)) - return 0; - - FX_DWORD objnum = (FX_DWORD)(uintptr_t)m_Pos; - for (; objnum <= nLastObjNum; ++objnum) { - int32_t iRet = WriteOldIndirectObject(objnum); - if (iRet < 0) - return iRet; - - if (!iRet) - continue; - - if (pPause && pPause->NeedToPauseNow()) { - m_Pos = (void*)(uintptr_t)(objnum + 1); - return 1; - } - } - return 0; -} -int32_t CPDF_Creator::WriteNewObjs(FX_BOOL bIncremental, IFX_Pause* pPause) { - int32_t iCount = m_NewObjNumArray.GetSize(); - int32_t index = (int32_t)(uintptr_t)m_Pos; - while (index < iCount) { - FX_DWORD objnum = m_NewObjNumArray.ElementAt(index); - auto it = m_pDocument->m_IndirectObjs.find(objnum); - if (it == m_pDocument->m_IndirectObjs.end()) { - ++index; - continue; - } - m_ObjectOffset[objnum] = m_Offset; - if (WriteIndirectObj(it->second)) { - return -1; - } - index++; - if (pPause && pPause->NeedToPauseNow()) { - m_Pos = (FX_POSITION)(uintptr_t)index; - return 1; - } - } - return 0; -} -void CPDF_Creator::InitOldObjNumOffsets() { - if (!m_pParser) { - return; - } - FX_DWORD j = 0; - FX_DWORD dwStart = 0; - FX_DWORD dwEnd = m_pParser->GetLastObjNum(); - while (dwStart <= dwEnd) { - while (dwStart <= dwEnd && m_pParser->IsObjectFreeOrNull(dwStart)) - dwStart++; - - if (dwStart > dwEnd) - break; - - j = dwStart; - while (j <= dwEnd && !m_pParser->IsObjectFreeOrNull(j)) - j++; - - m_ObjectOffset.Add(dwStart, j - dwStart); - dwStart = j; - } -} -void CPDF_Creator::InitNewObjNumOffsets() { - FX_BOOL bIncremental = (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0; - FX_BOOL bNoOriginal = (m_dwFlags & FPDFCREATE_NO_ORIGINAL) != 0; - for (const auto& pair : m_pDocument->m_IndirectObjs) { - const FX_DWORD objnum = pair.first; - const CPDF_Object* pObj = pair.second; - if (pObj->GetObjNum() == -1) - continue; - if (bIncremental) { - if (!pObj->IsModified()) - continue; - } else if (m_pParser && m_pParser->IsValidObjectNumber(objnum) && - m_pParser->GetObjectType(objnum)) { - continue; - } - AppendNewObjNum(objnum); - } - - int32_t iCount = m_NewObjNumArray.GetSize(); - if (iCount == 0) { - return; - } - int32_t i = 0; - FX_DWORD dwStartObjNum = 0; - FX_BOOL bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0; - while (i < iCount) { - dwStartObjNum = m_NewObjNumArray.ElementAt(i); - if ((bIncremental && (bNoOriginal || bCrossRefValid)) || - !m_ObjectOffset.GetPtrAt(dwStartObjNum)) { - break; - } - i++; - } - if (i >= iCount) { - return; - } - FX_DWORD dwLastObjNum = dwStartObjNum; - i++; - FX_BOOL bNewStart = FALSE; - for (; i < iCount; i++) { - FX_DWORD dwCurObjNum = m_NewObjNumArray.ElementAt(i); - bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) && - m_ObjectOffset.GetPtrAt(dwCurObjNum); - if (bExist || dwCurObjNum - dwLastObjNum > 1) { - if (!bNewStart) - m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); - dwStartObjNum = dwCurObjNum; - } - if (bNewStart) { - dwStartObjNum = dwCurObjNum; - } - bNewStart = bExist; - dwLastObjNum = dwCurObjNum; - } - m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); -} -void CPDF_Creator::AppendNewObjNum(FX_DWORD objbum) { - int32_t iStart = 0, iFind = 0; - int32_t iEnd = m_NewObjNumArray.GetUpperBound(); - while (iStart <= iEnd) { - int32_t iMid = (iStart + iEnd) / 2; - FX_DWORD dwMid = m_NewObjNumArray.ElementAt(iMid); - if (objbum < dwMid) { - iEnd = iMid - 1; - } else { - if (iMid == iEnd) { - iFind = iMid + 1; - break; - } - FX_DWORD dwNext = m_NewObjNumArray.ElementAt(iMid + 1); - if (objbum < dwNext) { - iFind = iMid + 1; - break; - } - iStart = iMid + 1; - } - } - m_NewObjNumArray.InsertAt(iFind, objbum); -} -int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { - FXSYS_assert(m_iStage > -1 || m_iStage < 20); - if (m_iStage == 0) { - if (!m_pParser) { - m_dwFlags &= ~FPDFCREATE_INCREMENTAL; - } - if (m_bSecurityChanged && (m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0) { - m_dwFlags &= ~FPDFCREATE_INCREMENTAL; - } - CPDF_Dictionary* pDict = m_pDocument->GetRoot(); - m_pMetadata = pDict ? pDict->GetElementValue("Metadata") : NULL; - if (m_dwFlags & FPDFCREATE_OBJECTSTREAM) { - m_pXRefStream = new CPDF_XRefStream; - m_pXRefStream->Start(); - if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser) { - FX_FILESIZE prev = m_pParser->GetLastXRefOffset(); - m_pXRefStream->m_PrevOffset = prev; - } - } - m_iStage = 10; - } - if (m_iStage == 10) { - if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0) { - if (m_File.AppendString("%PDF-1.") < 0) { - return -1; - } - m_Offset += 7; - int32_t version = 7; - if (m_FileVersion) { - version = m_FileVersion; - } else if (m_pParser) { - version = m_pParser->GetFileVersion(); - } - int32_t len = m_File.AppendDWord(version % 10); - if (len < 0) { - return -1; - } - m_Offset += len; - if ((len = m_File.AppendString("\r\n%\xA1\xB3\xC5\xD7\r\n")) < 0) { - return -1; - } - m_Offset += len; - InitOldObjNumOffsets(); - m_iStage = 20; - } else { - IFX_FileRead* pSrcFile = m_pParser->GetFileAccess(); - m_Offset = pSrcFile->GetSize(); - m_Pos = (void*)(uintptr_t)m_Offset; - m_iStage = 15; - } - } - if (m_iStage == 15) { - if ((m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0 && m_Pos) { - IFX_FileRead* pSrcFile = m_pParser->GetFileAccess(); - uint8_t buffer[4096]; - FX_DWORD src_size = (FX_DWORD)(uintptr_t)m_Pos; - while (src_size) { - FX_DWORD block_size = src_size > 4096 ? 4096 : src_size; - if (!pSrcFile->ReadBlock(buffer, m_Offset - src_size, block_size)) { - return -1; - } - if (m_File.AppendBlock(buffer, block_size) < 0) { - return -1; - } - src_size -= block_size; - if (pPause && pPause->NeedToPauseNow()) { - m_Pos = (void*)(uintptr_t)src_size; - return 1; - } - } - } - if ((m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0 && - m_pParser->GetLastXRefOffset() == 0) { - InitOldObjNumOffsets(); - FX_DWORD dwEnd = m_pParser->GetLastObjNum(); - bool bObjStm = (m_dwFlags & FPDFCREATE_OBJECTSTREAM) != 0; - for (FX_DWORD objnum = 0; objnum <= dwEnd; objnum++) { - if (m_pParser->IsObjectFreeOrNull(objnum)) - continue; - - m_ObjectOffset[objnum] = m_pParser->GetObjectPositionOrZero(objnum); - if (bObjStm) { - m_pXRefStream->AddObjectNumberToIndexArray(objnum); - } - } - if (bObjStm) { - m_pXRefStream->EndXRefStream(this); - m_pXRefStream->Start(); - } - } - m_iStage = 20; - } - InitNewObjNumOffsets(); - return m_iStage; -} -int32_t CPDF_Creator::WriteDoc_Stage2(IFX_Pause* pPause) { - FXSYS_assert(m_iStage >= 20 || m_iStage < 30); - if (m_iStage == 20) { - if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 && m_pParser) { - m_Pos = (void*)(uintptr_t)0; - m_iStage = 21; - } else { - m_iStage = 25; - } - } - if (m_iStage == 21) { - int32_t iRet = WriteOldObjs(pPause); - if (iRet) { - return iRet; - } - m_iStage = 25; - } - if (m_iStage == 25) { - m_Pos = (void*)(uintptr_t)0; - m_iStage = 26; - } - if (m_iStage == 26) { - int32_t iRet = - WriteNewObjs((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0, pPause); - if (iRet) { - return iRet; - } - m_iStage = 27; - } - if (m_iStage == 27) { - if (NULL != m_pEncryptDict && 0 == m_pEncryptDict->GetObjNum()) { - m_dwLastObjNum += 1; - FX_FILESIZE saveOffset = m_Offset; - if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) { - return -1; - } - m_ObjectOffset.Add(m_dwLastObjNum, 1); - m_ObjectOffset[m_dwLastObjNum] = saveOffset; - m_dwEnryptObjNum = m_dwLastObjNum; - if (m_dwFlags & FPDFCREATE_INCREMENTAL) { - m_NewObjNumArray.Add(m_dwLastObjNum); - } - } - m_iStage = 80; - } - return m_iStage; -} -int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) { - FXSYS_assert(m_iStage >= 80 || m_iStage < 90); - FX_DWORD dwLastObjNum = m_dwLastObjNum; - if (m_iStage == 80) { - m_XrefStart = m_Offset; - if (m_dwFlags & FPDFCREATE_OBJECTSTREAM) { - m_pXRefStream->End(this, TRUE); - m_XrefStart = m_pXRefStream->m_PrevOffset; - m_iStage = 90; - } else if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 || - !m_pParser->IsXRefStream()) { - if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 || - m_pParser->GetLastXRefOffset() == 0) { - CFX_ByteString str; - str = m_ObjectOffset.GetPtrAt(1) - ? "xref\r\n" - : "xref\r\n0 1\r\n0000000000 65535 f\r\n"; - if (m_File.AppendString(str) < 0) { - return -1; - } - m_Pos = (void*)(uintptr_t)1; - m_iStage = 81; - } else { - if (m_File.AppendString("xref\r\n") < 0) { - return -1; - } - m_Pos = (void*)(uintptr_t)0; - m_iStage = 82; - } - } else { - m_iStage = 90; - } - } - if (m_iStage == 81) { - CFX_ByteString str; - FX_DWORD i = (FX_DWORD)(uintptr_t)m_Pos, j; - while (i <= dwLastObjNum) { - while (i <= dwLastObjNum && !m_ObjectOffset.GetPtrAt(i)) { - i++; - } - if (i > dwLastObjNum) { - break; - } - j = i; - while (j <= dwLastObjNum && m_ObjectOffset.GetPtrAt(j)) { - j++; - } - if (i == 1) { - str.Format("0 %d\r\n0000000000 65535 f\r\n", j); - } else { - str.Format("%d %d\r\n", i, j - i); - } - if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { - return -1; - } - while (i < j) { - str.Format("%010d 00000 n\r\n", m_ObjectOffset[i++]); - if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { - return -1; - } - } - if (i > dwLastObjNum) { - break; - } - if (pPause && pPause->NeedToPauseNow()) { - m_Pos = (void*)(uintptr_t)i; - return 1; - } - } - m_iStage = 90; - } - if (m_iStage == 82) { - CFX_ByteString str; - int32_t iCount = m_NewObjNumArray.GetSize(); - int32_t i = (int32_t)(uintptr_t)m_Pos; - while (i < iCount) { - int32_t j = i; - FX_DWORD objnum = m_NewObjNumArray.ElementAt(i); - while (j < iCount) { - if (++j == iCount) { - break; - } - FX_DWORD dwCurrent = m_NewObjNumArray.ElementAt(j); - if (dwCurrent - objnum > 1) { - break; - } - objnum = dwCurrent; - } - objnum = m_NewObjNumArray.ElementAt(i); - if (objnum == 1) { - str.Format("0 %d\r\n0000000000 65535 f\r\n", j - i + 1); - } else { - str.Format("%d %d\r\n", objnum, j - i); - } - if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { - return -1; - } - while (i < j) { - objnum = m_NewObjNumArray.ElementAt(i++); - str.Format("%010d 00000 n\r\n", m_ObjectOffset[objnum]); - if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { - return -1; - } - } - if (pPause && (i % 100) == 0 && pPause->NeedToPauseNow()) { - m_Pos = (void*)(uintptr_t)i; - return 1; - } - } - m_iStage = 90; - } - return m_iStage; -} - -int32_t CPDF_Creator::WriteDoc_Stage4(IFX_Pause* pPause) { - FXSYS_assert(m_iStage >= 90); - if ((m_dwFlags & FPDFCREATE_OBJECTSTREAM) == 0) { - FX_BOOL bXRefStream = - (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser->IsXRefStream(); - if (!bXRefStream) { - if (m_File.AppendString("trailer\r\n<<") < 0) { - return -1; - } - } else { - if (m_File.AppendDWord(m_pDocument->m_LastObjNum + 1) < 0) { - return -1; - } - if (m_File.AppendString(" 0 obj <<") < 0) { - return -1; - } - } - if (m_pParser) { - CPDF_Dictionary* p = m_pParser->GetTrailer(); - for (const auto& it : *p) { - const CFX_ByteString& key = it.first; - CPDF_Object* pValue = it.second; - // TODO(ochang): Consolidate with similar check in - // PDF_CreatorWriteTrailer. - if (key == "Encrypt" || key == "Size" || key == "Filter" || - key == "Index" || key == "Length" || key == "Prev" || key == "W" || - key == "XRefStm" || key == "ID") { - continue; - } - if (m_File.AppendString(("/")) < 0) { - return -1; - } - if (m_File.AppendString(PDF_NameEncode(key)) < 0) { - return -1; - } - if (pValue->GetObjNum()) { - if (m_File.AppendString(" ") < 0) { - return -1; - } - if (m_File.AppendDWord(pValue->GetObjNum()) < 0) { - return -1; - } - if (m_File.AppendString(" 0 R ") < 0) { - return -1; - } - } else { - FX_FILESIZE offset = 0; - if (PDF_CreatorAppendObject(pValue, &m_File, offset) < 0) { - return -1; - } - } - } - } else { - if (m_File.AppendString("\r\n/Root ") < 0) { - return -1; - } - if (m_File.AppendDWord(m_pDocument->m_pRootDict->GetObjNum()) < 0) { - return -1; - } - if (m_File.AppendString(" 0 R\r\n") < 0) { - return -1; - } - if (m_pDocument->m_pInfoDict) { - if (m_File.AppendString("/Info ") < 0) { - return -1; - } - if (m_File.AppendDWord(m_pDocument->m_pInfoDict->GetObjNum()) < 0) { - return -1; - } - if (m_File.AppendString(" 0 R\r\n") < 0) { - return -1; - } - } - } - if (m_pEncryptDict) { - if (m_File.AppendString("/Encrypt") < 0) { - return -1; - } - FX_DWORD dwObjNum = m_pEncryptDict->GetObjNum(); - if (dwObjNum == 0) { - dwObjNum = m_pDocument->GetLastObjNum() + 1; - } - if (m_File.AppendString(" ") < 0) { - return -1; - } - if (m_File.AppendDWord(dwObjNum) < 0) { - return -1; - } - if (m_File.AppendString(" 0 R ") < 0) { - return -1; - } - } - if (m_File.AppendString("/Size ") < 0) { - return -1; - } - if (m_File.AppendDWord(m_dwLastObjNum + (bXRefStream ? 2 : 1)) < 0) { - return -1; - } - if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0) { - FX_FILESIZE prev = m_pParser->GetLastXRefOffset(); - if (prev) { - if (m_File.AppendString("/Prev ") < 0) { - return -1; - } - FX_CHAR offset_buf[20]; - FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); - FXSYS_i64toa(prev, offset_buf, 10); - if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { - return -1; - } - } - } - if (m_pIDArray) { - if (m_File.AppendString(("/ID")) < 0) { - return -1; - } - FX_FILESIZE offset = 0; - if (PDF_CreatorAppendObject(m_pIDArray, &m_File, offset) < 0) { - return -1; - } - } - if (!bXRefStream) { - if (m_File.AppendString(">>") < 0) { - return -1; - } - } else { - if (m_File.AppendString("/W[0 4 1]/Index[") < 0) { - return -1; - } - if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser && - m_pParser->GetLastXRefOffset() == 0) { - FX_DWORD i = 0; - for (i = 0; i < m_dwLastObjNum; i++) { - if (!m_ObjectOffset.GetPtrAt(i)) { - continue; - } - if (m_File.AppendDWord(i) < 0) { - return -1; - } - if (m_File.AppendString(" 1 ") < 0) { - return -1; - } - } - if (m_File.AppendString("]/Length ") < 0) { - return -1; - } - if (m_File.AppendDWord(m_dwLastObjNum * 5) < 0) { - return -1; - } - if (m_File.AppendString(">>stream\r\n") < 0) { - return -1; - } - for (i = 0; i < m_dwLastObjNum; i++) { - FX_FILESIZE* offset = m_ObjectOffset.GetPtrAt(i); - if (!offset) { - continue; - } - OutputIndex(&m_File, *offset); - } - } else { - int count = m_NewObjNumArray.GetSize(); - int32_t i = 0; - for (i = 0; i < count; i++) { - FX_DWORD objnum = m_NewObjNumArray.ElementAt(i); - if (m_File.AppendDWord(objnum) < 0) { - return -1; - } - if (m_File.AppendString(" 1 ") < 0) { - return -1; - } - } - if (m_File.AppendString("]/Length ") < 0) { - return -1; - } - if (m_File.AppendDWord(count * 5) < 0) { - return -1; - } - if (m_File.AppendString(">>stream\r\n") < 0) { - return -1; - } - for (i = 0; i < count; i++) { - FX_DWORD objnum = m_NewObjNumArray.ElementAt(i); - FX_FILESIZE offset = m_ObjectOffset[objnum]; - OutputIndex(&m_File, offset); - } - } - if (m_File.AppendString("\r\nendstream") < 0) { - return -1; - } - } - } - if (m_File.AppendString("\r\nstartxref\r\n") < 0) { - return -1; - } - FX_CHAR offset_buf[20]; - FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); - FXSYS_i64toa(m_XrefStart, offset_buf, 10); - if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { - return -1; - } - if (m_File.AppendString("\r\n%%EOF\r\n") < 0) { - return -1; - } - m_File.Flush(); - return m_iStage = 100; -} -void CPDF_Creator::Clear() { - delete m_pXRefStream; - m_pXRefStream = NULL; - m_File.Clear(); - m_NewObjNumArray.RemoveAll(); - if (m_pIDArray) { - m_pIDArray->Release(); - m_pIDArray = NULL; - } -} - -bool CPDF_Creator::Create(IFX_StreamWrite* pFile, FX_DWORD flags) { - m_File.AttachFile(pFile); - return Create(flags); -} - -bool CPDF_Creator::Create(FX_DWORD flags) { - m_dwFlags = flags; - m_iStage = 0; - m_Offset = 0; - m_dwLastObjNum = m_pDocument->GetLastObjNum(); - m_ObjectOffset.Clear(); - m_NewObjNumArray.RemoveAll(); - InitID(); - if (flags & FPDFCREATE_PROGRESSIVE) { - return true; - } - return Continue(NULL) > -1; -} -void CPDF_Creator::InitID(FX_BOOL bDefault) { - CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : NULL; - FX_BOOL bNewId = !m_pIDArray; - if (!m_pIDArray) { - m_pIDArray = new CPDF_Array; - CPDF_Object* pID1 = pOldIDArray ? pOldIDArray->GetElement(0) : NULL; - if (pID1) { - m_pIDArray->Add(pID1->Clone()); - } else { - std::vector buffer = - PDF_GenerateFileID((FX_DWORD)(uintptr_t) this, m_dwLastObjNum); - CFX_ByteStringC bsBuffer(buffer.data(), buffer.size()); - m_pIDArray->Add(new CPDF_String(bsBuffer, TRUE), m_pDocument); - } - } - if (!bDefault) { - return; - } - if (pOldIDArray) { - CPDF_Object* pID2 = pOldIDArray->GetElement(1); - if ((m_dwFlags & FPDFCREATE_INCREMENTAL) && m_pEncryptDict && pID2) { - m_pIDArray->Add(pID2->Clone()); - return; - } - std::vector buffer = - PDF_GenerateFileID((FX_DWORD)(uintptr_t) this, m_dwLastObjNum); - CFX_ByteStringC bsBuffer(buffer.data(), buffer.size()); - m_pIDArray->Add(new CPDF_String(bsBuffer, TRUE), m_pDocument); - return; - } - m_pIDArray->Add(m_pIDArray->GetElement(0)->Clone()); - if (m_pEncryptDict && !pOldIDArray && m_pParser && bNewId) { - if (m_pEncryptDict->GetStringBy("Filter") == "Standard") { - CPDF_StandardSecurityHandler handler; - CFX_ByteString user_pass = m_pParser->GetPassword(); - FX_DWORD flag = PDF_ENCRYPT_CONTENT; - handler.OnCreate(m_pEncryptDict, m_pIDArray, (const uint8_t*)user_pass, - user_pass.GetLength(), flag); - if (m_bNewCrypto) { - delete m_pCryptoHandler; - } - m_pCryptoHandler = new CPDF_StandardCryptoHandler; - m_pCryptoHandler->Init(m_pEncryptDict, &handler); - m_bNewCrypto = TRUE; - m_bSecurityChanged = TRUE; - } - } -} -int32_t CPDF_Creator::Continue(IFX_Pause* pPause) { - if (m_iStage < 0) { - return m_iStage; - } - int32_t iRet = 0; - while (m_iStage < 100) { - if (m_iStage < 20) { - iRet = WriteDoc_Stage1(pPause); - } else if (m_iStage < 30) { - iRet = WriteDoc_Stage2(pPause); - } else if (m_iStage < 90) { - iRet = WriteDoc_Stage3(pPause); - } else { - iRet = WriteDoc_Stage4(pPause); - } - if (iRet < m_iStage) { - break; - } - } - if (iRet < 1 || m_iStage == 100) { - m_iStage = -1; - Clear(); - return iRet > 99 ? 0 : (iRet < 1 ? -1 : iRet); - } - return m_iStage; -} -FX_BOOL CPDF_Creator::SetFileVersion(int32_t fileVersion) { - if (fileVersion < 10 || fileVersion > 17) { - return FALSE; - } - m_FileVersion = fileVersion; - return TRUE; -} -void CPDF_Creator::RemoveSecurity() { - ResetStandardSecurity(); - m_bSecurityChanged = TRUE; - m_pEncryptDict = NULL; - m_pCryptoHandler = NULL; -} -void CPDF_Creator::ResetStandardSecurity() { - if (m_bStandardSecurity || m_bNewCrypto) { - delete m_pCryptoHandler; - m_pCryptoHandler = NULL; - } - m_bNewCrypto = FALSE; - if (!m_bStandardSecurity) { - return; - } - if (m_pEncryptDict) { - m_pEncryptDict->Release(); - m_pEncryptDict = NULL; - } - m_bStandardSecurity = FALSE; -} diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp deleted file mode 100644 index 1d21727f72..0000000000 --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp +++ /dev/null @@ -1,1156 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -CPDF_Document::CPDF_Document() : CPDF_IndirectObjectHolder(NULL) { - m_pRootDict = NULL; - m_pInfoDict = NULL; - m_bLinearized = FALSE; - m_dwFirstPageNo = 0; - m_dwFirstPageObjNum = 0; - m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this); - m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this); -} -void CPDF_Document::CreateNewDoc() { - ASSERT(!m_pRootDict && !m_pInfoDict); - m_pRootDict = new CPDF_Dictionary; - m_pRootDict->SetAtName("Type", "Catalog"); - int objnum = AddIndirectObject(m_pRootDict); - CPDF_Dictionary* pPages = new CPDF_Dictionary; - pPages->SetAtName("Type", "Pages"); - pPages->SetAtNumber("Count", 0); - pPages->SetAt("Kids", new CPDF_Array); - objnum = AddIndirectObject(pPages); - m_pRootDict->SetAtReference("Pages", this, objnum); - m_pInfoDict = new CPDF_Dictionary; - AddIndirectObject(m_pInfoDict); -} -static const FX_WCHAR g_FX_CP874Unicodes[128] = { - 0x20AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x2026, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x0E01, 0x0E02, 0x0E03, - 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, - 0x0E0D, 0x0E0E, 0x0E0F, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, - 0x0E16, 0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, - 0x0E1F, 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27, - 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, 0x0E30, - 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38, 0x0E39, - 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F, 0x0E40, 0x0E41, 0x0E42, - 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, - 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, - 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000, - 0x0000, 0x0000, -}; -static const FX_WCHAR g_FX_CP1250Unicodes[128] = { - 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000, - 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, 0x0000, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0161, - 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, 0x00A0, 0x02C7, 0x02D8, 0x0141, - 0x00A4, 0x0104, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, - 0x00AD, 0x00AE, 0x017B, 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, - 0x00B6, 0x00B7, 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, - 0x017C, 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, - 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, 0x0110, - 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, 0x0158, 0x016E, - 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, 0x0155, 0x00E1, 0x00E2, - 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB, - 0x011B, 0x00ED, 0x00EE, 0x010F, 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, - 0x0151, 0x00F6, 0x00F7, 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, - 0x0163, 0x02D9, -}; -static const FX_WCHAR g_FX_CP1251Unicodes[128] = { - 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC, - 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, 0x0452, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0459, - 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, 0x00A0, 0x040E, 0x045E, 0x0408, - 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, - 0x00AD, 0x00AE, 0x0407, 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, - 0x00B6, 0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, - 0x0457, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, - 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, - 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, - 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, - 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, - 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, - 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, - 0x044E, 0x044F, -}; -static const FX_WCHAR g_FX_CP1253Unicodes[128] = { - 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000, - 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000, - 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x0385, 0x0386, 0x00A3, - 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC, - 0x00AD, 0x00AE, 0x2015, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, - 0x00B6, 0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, - 0x038F, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, - 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, - 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, - 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, 0x03B0, 0x03B1, 0x03B2, - 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, - 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, - 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, - 0x03CE, 0x0000, -}; -static const FX_WCHAR g_FX_CP1254Unicodes[128] = { - 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, - 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, - 0x203A, 0x0153, 0x0000, 0x0000, 0x0178, 0x00A0, 0x00A1, 0x00A2, 0x00A3, - 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, - 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, - 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, - 0x00BF, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, - 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x011E, - 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9, - 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, 0x00E0, 0x00E1, 0x00E2, - 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, - 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, - 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, - 0x015F, 0x00FF, -}; -static const FX_WCHAR g_FX_CP1255Unicodes[128] = { - 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, - 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0000, - 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x00A1, 0x00A2, 0x00A3, - 0x20AA, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC, - 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, - 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, - 0x00BF, 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, - 0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, 0x05C0, - 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05D0, 0x05D1, 0x05D2, - 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, - 0x05DC, 0x05DD, 0x05DE, 0x05DF, 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, - 0x05E5, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, - 0x200F, 0x0000, -}; -static const FX_WCHAR g_FX_CP1256Unicodes[128] = { - 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, - 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, 0x06AF, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x06A9, 0x2122, 0x0691, - 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, 0x00A0, 0x060C, 0x00A2, 0x00A3, - 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC, - 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, - 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, - 0x061F, 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, - 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, 0x0630, - 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, 0x0637, 0x0638, - 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, 0x00E0, 0x0644, 0x00E2, - 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, - 0x0649, 0x064A, 0x00EE, 0x00EF, 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, - 0x064F, 0x0650, 0x00F7, 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, - 0x200F, 0x06D2, -}; -static const FX_WCHAR g_FX_CP1257Unicodes[128] = { - 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000, - 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8, 0x0000, 0x2018, - 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000, - 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000, 0x00A0, 0x0000, 0x00A2, 0x00A3, - 0x00A4, 0x0000, 0x00A6, 0x00A7, 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, - 0x00AD, 0x00AE, 0x00C6, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, - 0x00B6, 0x00B7, 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, - 0x00E6, 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, - 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, 0x0160, - 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, 0x0172, 0x0141, - 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, 0x0105, 0x012F, 0x0101, - 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, 0x010D, 0x00E9, 0x017A, 0x0117, - 0x0123, 0x0137, 0x012B, 0x013C, 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, - 0x00F5, 0x00F6, 0x00F7, 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, - 0x017E, 0x02D9, -}; -typedef struct { - uint8_t m_Charset; - const FX_WCHAR* m_pUnicodes; -} FX_CharsetUnicodes; -const FX_CharsetUnicodes g_FX_CharsetUnicodes[] = { - {FXFONT_THAI_CHARSET, g_FX_CP874Unicodes}, - {FXFONT_EASTEUROPE_CHARSET, g_FX_CP1250Unicodes}, - {FXFONT_RUSSIAN_CHARSET, g_FX_CP1251Unicodes}, - {FXFONT_GREEK_CHARSET, g_FX_CP1253Unicodes}, - {FXFONT_TURKISH_CHARSET, g_FX_CP1254Unicodes}, - {FXFONT_HEBREW_CHARSET, g_FX_CP1255Unicodes}, - {FXFONT_ARABIC_CHARSET, g_FX_CP1256Unicodes}, - {FXFONT_BALTIC_CHARSET, g_FX_CP1257Unicodes}, -}; -#if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_) -static void _InsertWidthArray(HDC hDC, - int start, - int end, - CPDF_Array* pWidthArray) { - int size = end - start + 1; - int* widths = FX_Alloc(int, size); - GetCharWidth(hDC, start, end, widths); - int i; - for (i = 1; i < size; i++) - if (widths[i] != *widths) { - break; - } - if (i == size) { - int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1); - pWidthArray->AddInteger(first + size - 1); - pWidthArray->AddInteger(*widths); - } else { - CPDF_Array* pWidthArray1 = new CPDF_Array; - pWidthArray->Add(pWidthArray1); - for (i = 0; i < size; i++) { - pWidthArray1->AddInteger(widths[i]); - } - } - FX_Free(widths); -} -CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTW* pLogFont, - FX_BOOL bVert, - FX_BOOL bTranslateName) { - LOGFONTA lfa; - FXSYS_memcpy(&lfa, pLogFont, (char*)lfa.lfFaceName - (char*)&lfa); - CFX_ByteString face = CFX_ByteString::FromUnicode(pLogFont->lfFaceName); - if (face.GetLength() >= LF_FACESIZE) { - return NULL; - } - FXSYS_strcpy(lfa.lfFaceName, face.c_str()); - return AddWindowsFont(&lfa, bVert, bTranslateName); -} -CFX_ByteString _FPDF_GetPSNameFromTT(HDC hDC) { - CFX_ByteString result; - DWORD size = ::GetFontData(hDC, 'eman', 0, NULL, 0); - if (size != GDI_ERROR) { - LPBYTE buffer = FX_Alloc(BYTE, size); - ::GetFontData(hDC, 'eman', 0, buffer, size); - result = GetNameFromTT(buffer, 6); - FX_Free(buffer); - } - return result; -} -CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont, - FX_BOOL bVert, - FX_BOOL bTranslateName) { - pLogFont->lfHeight = -1000; - pLogFont->lfWidth = 0; - HGDIOBJ hFont = CreateFontIndirectA(pLogFont); - HDC hDC = CreateCompatibleDC(NULL); - hFont = SelectObject(hDC, hFont); - int tm_size = GetOutlineTextMetrics(hDC, 0, NULL); - if (tm_size == 0) { - hFont = SelectObject(hDC, hFont); - DeleteObject(hFont); - DeleteDC(hDC); - return NULL; - } - LPBYTE tm_buf = FX_Alloc(BYTE, tm_size); - OUTLINETEXTMETRIC* ptm = (OUTLINETEXTMETRIC*)tm_buf; - GetOutlineTextMetrics(hDC, tm_size, ptm); - int flags = 0, italicangle, ascend, descend, capheight, bbox[4]; - if (pLogFont->lfItalic) { - flags |= PDFFONT_ITALIC; - } - if ((pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH) { - flags |= PDFFONT_FIXEDPITCH; - } - if ((pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN) { - flags |= PDFFONT_SERIF; - } - if ((pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT) { - flags |= PDFFONT_SCRIPT; - } - bool bCJK = pLogFont->lfCharSet == CHINESEBIG5_CHARSET || - pLogFont->lfCharSet == GB2312_CHARSET || - pLogFont->lfCharSet == HANGEUL_CHARSET || - pLogFont->lfCharSet == SHIFTJIS_CHARSET; - CFX_ByteString basefont; - if (bTranslateName && bCJK) { - basefont = _FPDF_GetPSNameFromTT(hDC); - } - if (basefont.IsEmpty()) { - basefont = pLogFont->lfFaceName; - } - italicangle = ptm->otmItalicAngle / 10; - ascend = ptm->otmrcFontBox.top; - descend = ptm->otmrcFontBox.bottom; - capheight = ptm->otmsCapEmHeight; - bbox[0] = ptm->otmrcFontBox.left; - bbox[1] = ptm->otmrcFontBox.bottom; - bbox[2] = ptm->otmrcFontBox.right; - bbox[3] = ptm->otmrcFontBox.top; - FX_Free(tm_buf); - basefont.Replace(" ", ""); - CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; - pBaseDict->SetAtName("Type", "Font"); - CPDF_Dictionary* pFontDict = pBaseDict; - if (!bCJK) { - if (pLogFont->lfCharSet == ANSI_CHARSET || - pLogFont->lfCharSet == DEFAULT_CHARSET || - pLogFont->lfCharSet == SYMBOL_CHARSET) { - if (pLogFont->lfCharSet == SYMBOL_CHARSET) { - flags |= PDFFONT_SYMBOLIC; - } else { - flags |= PDFFONT_NONSYMBOLIC; - } - pBaseDict->SetAtName("Encoding", "WinAnsiEncoding"); - } else { - flags |= PDFFONT_NONSYMBOLIC; - int i; - for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes); - i++) - if (g_FX_CharsetUnicodes[i].m_Charset == pLogFont->lfCharSet) { - break; - } - if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) { - CPDF_Dictionary* pEncoding = new CPDF_Dictionary; - pEncoding->SetAtName("BaseEncoding", "WinAnsiEncoding"); - CPDF_Array* pArray = new CPDF_Array; - pArray->AddInteger(128); - const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes; - for (int j = 0; j < 128; j++) { - CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]); - if (name.IsEmpty()) { - pArray->AddName(".notdef"); - } else { - pArray->AddName(name); - } - } - pEncoding->SetAt("Differences", pArray); - AddIndirectObject(pEncoding); - pBaseDict->SetAtReference("Encoding", this, pEncoding); - } - } - if (pLogFont->lfWeight > FW_MEDIUM && pLogFont->lfItalic) { - basefont += ",BoldItalic"; - } else if (pLogFont->lfWeight > FW_MEDIUM) { - basefont += ",Bold"; - } else if (pLogFont->lfItalic) { - basefont += ",Italic"; - } - pBaseDict->SetAtName("Subtype", "TrueType"); - pBaseDict->SetAtName("BaseFont", basefont); - pBaseDict->SetAtNumber("FirstChar", 32); - pBaseDict->SetAtNumber("LastChar", 255); - int char_widths[224]; - GetCharWidth(hDC, 32, 255, char_widths); - CPDF_Array* pWidths = new CPDF_Array; - for (int i = 0; i < 224; i++) { - pWidths->AddInteger(char_widths[i]); - } - pBaseDict->SetAt("Widths", pWidths); - } else { - flags |= PDFFONT_NONSYMBOLIC; - pFontDict = new CPDF_Dictionary; - CFX_ByteString cmap; - CFX_ByteString ordering; - int supplement; - CPDF_Array* pWidthArray = new CPDF_Array; - switch (pLogFont->lfCharSet) { - case CHINESEBIG5_CHARSET: - cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H"; - ordering = "CNS1"; - supplement = 4; - pWidthArray->AddInteger(1); - _InsertWidthArray(hDC, 0x20, 0x7e, pWidthArray); - break; - case GB2312_CHARSET: - cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H"; - ordering = "GB1", supplement = 2; - pWidthArray->AddInteger(7716); - _InsertWidthArray(hDC, 0x20, 0x20, pWidthArray); - pWidthArray->AddInteger(814); - _InsertWidthArray(hDC, 0x21, 0x7e, pWidthArray); - break; - case HANGEUL_CHARSET: - cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H"; - ordering = "Korea1"; - supplement = 2; - pWidthArray->AddInteger(1); - _InsertWidthArray(hDC, 0x20, 0x7e, pWidthArray); - break; - case SHIFTJIS_CHARSET: - cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H"; - ordering = "Japan1"; - supplement = 5; - pWidthArray->AddInteger(231); - _InsertWidthArray(hDC, 0x20, 0x7d, pWidthArray); - pWidthArray->AddInteger(326); - _InsertWidthArray(hDC, 0xa0, 0xa0, pWidthArray); - pWidthArray->AddInteger(327); - _InsertWidthArray(hDC, 0xa1, 0xdf, pWidthArray); - pWidthArray->AddInteger(631); - _InsertWidthArray(hDC, 0x7e, 0x7e, pWidthArray); - break; - } - pBaseDict->SetAtName("Subtype", "Type0"); - pBaseDict->SetAtName("BaseFont", basefont); - pBaseDict->SetAtName("Encoding", cmap); - pFontDict->SetAt("W", pWidthArray); - pFontDict->SetAtName("Type", "Font"); - pFontDict->SetAtName("Subtype", "CIDFontType2"); - pFontDict->SetAtName("BaseFont", basefont); - CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary; - pCIDSysInfo->SetAtString("Registry", "Adobe"); - pCIDSysInfo->SetAtString("Ordering", ordering); - pCIDSysInfo->SetAtInteger("Supplement", supplement); - pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo); - CPDF_Array* pArray = new CPDF_Array; - pBaseDict->SetAt("DescendantFonts", pArray); - AddIndirectObject(pFontDict); - pArray->AddReference(this, pFontDict); - } - AddIndirectObject(pBaseDict); - CPDF_Dictionary* pFontDesc = new CPDF_Dictionary; - pFontDesc->SetAtName("Type", "FontDescriptor"); - pFontDesc->SetAtName("FontName", basefont); - pFontDesc->SetAtInteger("Flags", flags); - CPDF_Array* pBBox = new CPDF_Array; - for (int i = 0; i < 4; i++) { - pBBox->AddInteger(bbox[i]); - } - pFontDesc->SetAt("FontBBox", pBBox); - pFontDesc->SetAtInteger("ItalicAngle", italicangle); - pFontDesc->SetAtInteger("Ascent", ascend); - pFontDesc->SetAtInteger("Descent", descend); - pFontDesc->SetAtInteger("CapHeight", capheight); - pFontDesc->SetAtInteger("StemV", pLogFont->lfWeight / 5); - AddIndirectObject(pFontDesc); - pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); - hFont = SelectObject(hDC, hFont); - DeleteObject(hFont); - DeleteDC(hDC); - return LoadFont(pBaseDict); -} -#endif - -#if (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_) -uint32_t FX_GetLangHashCode(const FX_CHAR* pStr) { - FXSYS_assert(pStr); - int32_t iLength = FXSYS_strlen(pStr); - const FX_CHAR* pStrEnd = pStr + iLength; - uint32_t uHashCode = 0; - while (pStr < pStrEnd) { - uHashCode = 31 * uHashCode + tolower(*pStr++); - } - return uHashCode; -} -struct FX_LANG2CS { - FX_DWORD uLang; - int uCharset; -} * FX_LPLANG2CS; -static const FX_LANG2CS gs_FXLang2CharsetTable[] = { - {3109, 0}, {3121, 178}, {3129, 162}, {3139, 204}, {3141, 204}, - {3166, 0}, {3184, 238}, {3197, 0}, {3201, 0}, {3239, 161}, - {3241, 0}, {3246, 0}, {3247, 186}, {3248, 0}, {3259, 178}, - {3267, 0}, {3273, 0}, {3276, 0}, {3301, 0}, {3310, 1}, - {3325, 177}, {3329, 1}, {3338, 238}, {3341, 238}, {3345, 1}, - {3355, 0}, {3370, 0}, {3371, 0}, {3383, 128}, {3424, 204}, - {3427, 1}, {3428, 129}, {3436, 178}, {3464, 186}, {3466, 186}, - {3486, 204}, {3487, 0}, {3493, 1}, {3494, 0}, {3508, 0}, - {3518, 0}, {3520, 0}, {3569, 1}, {3580, 238}, {3588, 0}, - {3645, 238}, {3651, 204}, {3672, 238}, {3673, 238}, {3678, 238}, - {3679, 238}, {3683, 0}, {3684, 0}, {3693, 1}, {3697, 1}, - {3700, 222}, {3710, 162}, {3734, 204}, {3741, 178}, {3749, 162}, - {3763, 163}, {3886, 134}, {105943, 0}, {106375, 1}, {3923451837, 134}, - {3923451838, 136}, -}; -static FX_WORD FX_GetCsFromLangCode(uint32_t uCode) { - int32_t iStart = 0; - int32_t iEnd = sizeof(gs_FXLang2CharsetTable) / sizeof(FX_LANG2CS) - 1; - while (iStart <= iEnd) { - int32_t iMid = (iStart + iEnd) / 2; - const FX_LANG2CS& charset = gs_FXLang2CharsetTable[iMid]; - if (uCode == charset.uLang) { - return charset.uCharset; - } - if (uCode < charset.uLang) { - iEnd = iMid - 1; - } else { - iStart = iMid + 1; - } - } - return 0; -} -static FX_WORD FX_GetCharsetFromLang(const FX_CHAR* pLang, int32_t iLength) { - FXSYS_assert(pLang); - if (iLength < 0) { - iLength = FXSYS_strlen(pLang); - } - uint32_t uHash = FX_GetLangHashCode(pLang); - return FX_GetCsFromLangCode(uHash); -} -static void _CFString2CFXByteString(CFStringRef src, CFX_ByteString& dest) { - SInt32 len = CFStringGetLength(src); - CFRange range = CFRangeMake(0, len); - CFIndex used = 0; - UInt8* pBuffer = (UInt8*)calloc(len + 1, sizeof(UInt8)); - CFStringGetBytes(src, range, kCFStringEncodingASCII, 0, false, pBuffer, len, - &used); - dest = (FX_CHAR*)pBuffer; - free(pBuffer); -} -FX_BOOL IsHasCharSet(CFArrayRef languages, const CFX_DWordArray& charSets) { - int iCount = charSets.GetSize(); - for (int i = 0; i < CFArrayGetCount(languages); ++i) { - CFStringRef language = (CFStringRef)CFArrayGetValueAtIndex(languages, i); - FX_DWORD CharSet = FX_GetCharsetFromLang( - CFStringGetCStringPtr(language, kCFStringEncodingMacRoman), -1); - for (int j = 0; j < iCount; ++j) { - if (CharSet == charSets[j]) { - return TRUE; - } - } - } - return FALSE; -} -void FX_GetCharWidth(CTFontRef font, UniChar start, UniChar end, int* width) { - CGFloat size = CTFontGetSize(font); - for (; start <= end; ++start) { - CGGlyph pGlyph = 0; - CFIndex count = 1; - CTFontGetGlyphsForCharacters(font, &start, &pGlyph, count); - CGSize advances; - CTFontGetAdvancesForGlyphs(font, kCTFontDefaultOrientation, &pGlyph, - &advances, 1); - *width = (int)(advances.width / size * 1000); - width++; - } -} -static void _InsertWidthArray(CTFontRef font, - int start, - int end, - CPDF_Array* pWidthArray) { - int size = end - start + 1; - int* widths = FX_Alloc(int, size); - FX_GetCharWidth(font, start, end, widths); - int i; - for (i = 1; i < size; i++) - if (widths[i] != *widths) { - break; - } - if (i == size) { - int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1); - pWidthArray->AddInteger(first + size - 1); - pWidthArray->AddInteger(*widths); - } else { - CPDF_Array* pWidthArray1 = new CPDF_Array; - pWidthArray->Add(pWidthArray1); - for (i = 0; i < size; i++) { - pWidthArray1->AddInteger(widths[i]); - } - } - FX_Free(widths); -} -CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont, - FX_BOOL bVert, - FX_BOOL bTranslateName) { - CTFontRef font = (CTFontRef)pFont; - CTFontDescriptorRef descriptor = CTFontCopyFontDescriptor(font); - if (!descriptor) { - return NULL; - } - CFX_ByteString basefont; - FX_BOOL bCJK = FALSE; - int flags = 0, italicangle = 0, ascend = 0, descend = 0, capheight = 0, - bbox[4]; - FXSYS_memset(bbox, 0, sizeof(int) * 4); - CFArrayRef languages = (CFArrayRef)CTFontDescriptorCopyAttribute( - descriptor, kCTFontLanguagesAttribute); - if (!languages) { - CFRelease(descriptor); - return NULL; - } - CFX_DWordArray charSets; - charSets.Add(FXFONT_CHINESEBIG5_CHARSET); - charSets.Add(FXFONT_GB2312_CHARSET); - charSets.Add(FXFONT_HANGEUL_CHARSET); - charSets.Add(FXFONT_SHIFTJIS_CHARSET); - if (IsHasCharSet(languages, charSets)) { - bCJK = TRUE; - } - CFRelease(descriptor); - CFDictionaryRef traits = (CFDictionaryRef)CTFontCopyTraits(font); - if (!traits) { - CFRelease(languages); - return NULL; - } - CFNumberRef sybolicTrait = - (CFNumberRef)CFDictionaryGetValue(traits, kCTFontSymbolicTrait); - CTFontSymbolicTraits trait = 0; - CFNumberGetValue(sybolicTrait, kCFNumberSInt32Type, &trait); - if (trait & kCTFontItalicTrait) { - flags |= PDFFONT_ITALIC; - } - if (trait & kCTFontMonoSpaceTrait) { - flags |= PDFFONT_FIXEDPITCH; - } - if (trait & kCTFontModernSerifsClass) { - flags |= PDFFONT_SERIF; - } - if (trait & kCTFontScriptsClass) { - flags |= PDFFONT_SCRIPT; - } - CFNumberRef weightTrait = - (CFNumberRef)CFDictionaryGetValue(traits, kCTFontWeightTrait); - Float32 weight = 0; - CFNumberGetValue(weightTrait, kCFNumberFloat32Type, &weight); - italicangle = CTFontGetSlantAngle(font); - ascend = CTFontGetAscent(font); - descend = CTFontGetDescent(font); - capheight = CTFontGetCapHeight(font); - CGRect box = CTFontGetBoundingBox(font); - bbox[0] = box.origin.x; - bbox[1] = box.origin.y; - bbox[2] = box.origin.x + box.size.width; - bbox[3] = box.origin.y + box.size.height; - if (bTranslateName && bCJK) { - CFStringRef postName = CTFontCopyPostScriptName(font); - _CFString2CFXByteString(postName, basefont); - CFRelease(postName); - } - if (basefont.IsEmpty()) { - CFStringRef fullName = CTFontCopyFullName(font); - _CFString2CFXByteString(fullName, basefont); - CFRelease(fullName); - } - basefont.Replace(" ", ""); - CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; - CPDF_Dictionary* pFontDict = pBaseDict; - if (!bCJK) { - charSets.RemoveAll(); - charSets.Add(FXFONT_ANSI_CHARSET); - charSets.Add(FXFONT_DEFAULT_CHARSET); - charSets.Add(FXFONT_SYMBOL_CHARSET); - if (IsHasCharSet(languages, charSets)) { - charSets.RemoveAll(); - charSets.Add(FXFONT_SYMBOL_CHARSET); - if (IsHasCharSet(languages, charSets)) { - flags |= PDFFONT_SYMBOLIC; - } else { - flags |= PDFFONT_NONSYMBOLIC; - } - pBaseDict->SetAtName("Encoding", "WinAnsiEncoding"); - } else { - flags |= PDFFONT_NONSYMBOLIC; - size_t i; - for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes); - i++) { - charSets.RemoveAll(); - charSets.Add(g_FX_CharsetUnicodes[i].m_Charset); - if (IsHasCharSet(languages, charSets)) { - break; - } - } - if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) { - CPDF_Dictionary* pEncoding = new CPDF_Dictionary; - pEncoding->SetAtName("BaseEncoding", "WinAnsiEncoding"); - CPDF_Array* pArray = new CPDF_Array; - pArray->AddInteger(128); - const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes; - for (int j = 0; j < 128; j++) { - CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]); - if (name.IsEmpty()) { - pArray->AddName(".notdef"); - } else { - pArray->AddName(name); - } - } - pEncoding->SetAt("Differences", pArray); - AddIndirectObject(pEncoding); - pBaseDict->SetAtReference("Encoding", this, pEncoding); - } - } - if (weight > 0.0 && trait & kCTFontItalicTrait) { - basefont += ",BoldItalic"; - } else if (weight > 0.0) { - basefont += ",Bold"; - } else if (trait & kCTFontItalicTrait) { - basefont += ",Italic"; - } - pBaseDict->SetAtName("Subtype", "TrueType"); - pBaseDict->SetAtName("BaseFont", basefont); - pBaseDict->SetAtNumber("FirstChar", 32); - pBaseDict->SetAtNumber("LastChar", 255); - int char_widths[224]; - FX_GetCharWidth(font, 32, 255, char_widths); - CPDF_Array* pWidths = new CPDF_Array; - for (int i = 0; i < 224; i++) { - pWidths->AddInteger(char_widths[i]); - } - pBaseDict->SetAt("Widths", pWidths); - } else { - flags |= PDFFONT_NONSYMBOLIC; - CPDF_Array* pArray = NULL; - pFontDict = new CPDF_Dictionary; - CFX_ByteString cmap; - CFX_ByteString ordering; - int supplement; - FX_BOOL bFound = FALSE; - CPDF_Array* pWidthArray = new CPDF_Array; - charSets.RemoveAll(); - charSets.Add(FXFONT_CHINESEBIG5_CHARSET); - if (IsHasCharSet(languages, charSets)) { - cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H"; - ordering = "CNS1"; - supplement = 4; - pWidthArray->AddInteger(1); - _InsertWidthArray(font, 0x20, 0x7e, pWidthArray); - bFound = TRUE; - } - charSets.RemoveAll(); - charSets.Add(FXFONT_GB2312_CHARSET); - if (!bFound && IsHasCharSet(languages, charSets)) { - cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H"; - ordering = "GB1", supplement = 2; - pWidthArray->AddInteger(7716); - _InsertWidthArray(font, 0x20, 0x20, pWidthArray); - pWidthArray->AddInteger(814); - _InsertWidthArray(font, 0x21, 0x7e, pWidthArray); - bFound = TRUE; - } - charSets.RemoveAll(); - charSets.Add(FXFONT_HANGEUL_CHARSET); - if (!bFound && IsHasCharSet(languages, charSets)) { - cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H"; - ordering = "Korea1"; - supplement = 2; - pWidthArray->AddInteger(1); - _InsertWidthArray(font, 0x20, 0x7e, pWidthArray); - bFound = TRUE; - } - charSets.RemoveAll(); - charSets.Add(FXFONT_SHIFTJIS_CHARSET); - if (!bFound && IsHasCharSet(languages, charSets)) { - cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H"; - ordering = "Japan1"; - supplement = 5; - pWidthArray->AddInteger(231); - _InsertWidthArray(font, 0x20, 0x7d, pWidthArray); - pWidthArray->AddInteger(326); - _InsertWidthArray(font, 0xa0, 0xa0, pWidthArray); - pWidthArray->AddInteger(327); - _InsertWidthArray(font, 0xa1, 0xdf, pWidthArray); - pWidthArray->AddInteger(631); - _InsertWidthArray(font, 0x7e, 0x7e, pWidthArray); - } - pBaseDict->SetAtName("Subtype", "Type0"); - pBaseDict->SetAtName("BaseFont", basefont); - pBaseDict->SetAtName("Encoding", cmap); - pFontDict->SetAt("W", pWidthArray); - pFontDict->SetAtName("Type", "Font"); - pFontDict->SetAtName("Subtype", "CIDFontType2"); - pFontDict->SetAtName("BaseFont", basefont); - CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary; - pCIDSysInfo->SetAtString("Registry", "Adobe"); - pCIDSysInfo->SetAtString("Ordering", ordering); - pCIDSysInfo->SetAtInteger("Supplement", supplement); - pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo); - pArray = new CPDF_Array; - pBaseDict->SetAt("DescendantFonts", pArray); - AddIndirectObject(pFontDict); - pArray->AddReference(this, pFontDict); - } - AddIndirectObject(pBaseDict); - CPDF_Dictionary* pFontDesc = new CPDF_Dictionary; - pFontDesc->SetAtName("Type", "FontDescriptor"); - pFontDesc->SetAtName("FontName", basefont); - pFontDesc->SetAtInteger("Flags", flags); - CPDF_Array* pBBox = new CPDF_Array; - for (int i = 0; i < 4; i++) { - pBBox->AddInteger(bbox[i]); - } - pFontDesc->SetAt("FontBBox", pBBox); - pFontDesc->SetAtInteger("ItalicAngle", italicangle); - pFontDesc->SetAtInteger("Ascent", ascend); - pFontDesc->SetAtInteger("Descent", descend); - pFontDesc->SetAtInteger("CapHeight", capheight); - CGFloat fStemV = 0; - int16_t min_width = SHRT_MAX; - - static const UniChar stem_chars[] = {'i', 'I', '!', '1'}; - CGGlyph glyphs[FX_ArraySize(stem_chars)]; - CGRect boundingRects[FX_ArraySize(stem_chars)]; - - const size_t count = FX_ArraySize(stem_chars); - if (CTFontGetGlyphsForCharacters(font, stem_chars, glyphs, count)) { - CTFontGetBoundingRectsForGlyphs(font, kCTFontHorizontalOrientation, glyphs, - boundingRects, count); - for (size_t i = 0; i < count; i++) { - int16_t width = boundingRects[i].size.width; - if (width > 0 && width < min_width) { - min_width = width; - fStemV = min_width; - } - } - } - pFontDesc->SetAtInteger("StemV", fStemV); - AddIndirectObject(pFontDesc); - pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); - CFRelease(traits); - CFRelease(languages); - return LoadFont(pBaseDict); -} -#endif // (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_) - -static void _InsertWidthArray1(CFX_Font* pFont, - CFX_UnicodeEncoding* pEncoding, - FX_WCHAR start, - FX_WCHAR end, - CPDF_Array* pWidthArray) { - int size = end - start + 1; - int* widths = FX_Alloc(int, size); - int i; - for (i = 0; i < size; i++) { - int glyph_index = pEncoding->GlyphFromCharCode(start + i); - widths[i] = pFont->GetGlyphWidth(glyph_index); - } - for (i = 1; i < size; i++) - if (widths[i] != *widths) { - break; - } - if (i == size) { - int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1); - pWidthArray->AddInteger(first + size - 1); - pWidthArray->AddInteger(*widths); - } else { - CPDF_Array* pWidthArray1 = new CPDF_Array; - pWidthArray->Add(pWidthArray1); - for (i = 0; i < size; i++) { - pWidthArray1->AddInteger(widths[i]); - } - } - FX_Free(widths); -} - -CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) { - if (!pFont) { - return NULL; - } - bool bCJK = charset == FXFONT_CHINESEBIG5_CHARSET || - charset == FXFONT_GB2312_CHARSET || - charset == FXFONT_HANGEUL_CHARSET || - charset == FXFONT_SHIFTJIS_CHARSET; - CFX_ByteString basefont = pFont->GetFamilyName(); - basefont.Replace(" ", ""); - int flags = 0; - if (pFont->IsBold()) { - flags |= PDFFONT_FORCEBOLD; - } - if (pFont->IsItalic()) { - flags |= PDFFONT_ITALIC; - } - if (pFont->IsFixedWidth()) { - flags |= PDFFONT_FIXEDPITCH; - } - CPDF_Dictionary* pBaseDict = new CPDF_Dictionary; - pBaseDict->SetAtName("Type", "Font"); - std::unique_ptr pEncoding( - new CFX_UnicodeEncoding(pFont)); - CPDF_Dictionary* pFontDict = pBaseDict; - if (!bCJK) { - CPDF_Array* pWidths = new CPDF_Array; - int charcode; - for (charcode = 32; charcode < 128; charcode++) { - int glyph_index = pEncoding->GlyphFromCharCode(charcode); - int char_width = pFont->GetGlyphWidth(glyph_index); - pWidths->AddInteger(char_width); - } - if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_DEFAULT_CHARSET || - charset == FXFONT_SYMBOL_CHARSET) { - if (charset == FXFONT_SYMBOL_CHARSET) { - flags |= PDFFONT_SYMBOLIC; - } else { - flags |= PDFFONT_NONSYMBOLIC; - } - pBaseDict->SetAtName("Encoding", "WinAnsiEncoding"); - for (charcode = 128; charcode <= 255; charcode++) { - int glyph_index = pEncoding->GlyphFromCharCode(charcode); - int char_width = pFont->GetGlyphWidth(glyph_index); - pWidths->AddInteger(char_width); - } - } else { - flags |= PDFFONT_NONSYMBOLIC; - size_t i; - for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes); - i++) - if (g_FX_CharsetUnicodes[i].m_Charset == charset) { - break; - } - if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) { - CPDF_Dictionary* pEncodingDict = new CPDF_Dictionary; - pEncodingDict->SetAtName("BaseEncoding", "WinAnsiEncoding"); - CPDF_Array* pArray = new CPDF_Array; - pArray->AddInteger(128); - const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes; - for (int j = 0; j < 128; j++) { - CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]); - if (name.IsEmpty()) { - pArray->AddName(".notdef"); - } else { - pArray->AddName(name); - } - int glyph_index = pEncoding->GlyphFromCharCode(pUnicodes[j]); - int char_width = pFont->GetGlyphWidth(glyph_index); - pWidths->AddInteger(char_width); - } - pEncodingDict->SetAt("Differences", pArray); - AddIndirectObject(pEncodingDict); - pBaseDict->SetAtReference("Encoding", this, pEncodingDict); - } - } - if (pFont->IsBold() && pFont->IsItalic()) { - basefont += ",BoldItalic"; - } else if (pFont->IsBold()) { - basefont += ",Bold"; - } else if (pFont->IsItalic()) { - basefont += ",Italic"; - } - pBaseDict->SetAtName("Subtype", "TrueType"); - pBaseDict->SetAtName("BaseFont", basefont); - pBaseDict->SetAtNumber("FirstChar", 32); - pBaseDict->SetAtNumber("LastChar", 255); - pBaseDict->SetAt("Widths", pWidths); - } else { - flags |= PDFFONT_NONSYMBOLIC; - pFontDict = new CPDF_Dictionary; - CFX_ByteString cmap; - CFX_ByteString ordering; - int supplement; - CPDF_Array* pWidthArray = new CPDF_Array; - switch (charset) { - case FXFONT_CHINESEBIG5_CHARSET: - cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H"; - ordering = "CNS1"; - supplement = 4; - pWidthArray->AddInteger(1); - _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7e, pWidthArray); - break; - case FXFONT_GB2312_CHARSET: - cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H"; - ordering = "GB1", supplement = 2; - pWidthArray->AddInteger(7716); - _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x20, pWidthArray); - pWidthArray->AddInteger(814); - _InsertWidthArray1(pFont, pEncoding.get(), 0x21, 0x7e, pWidthArray); - break; - case FXFONT_HANGEUL_CHARSET: - cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H"; - ordering = "Korea1"; - supplement = 2; - pWidthArray->AddInteger(1); - _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7e, pWidthArray); - break; - case FXFONT_SHIFTJIS_CHARSET: - cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H"; - ordering = "Japan1"; - supplement = 5; - pWidthArray->AddInteger(231); - _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7d, pWidthArray); - pWidthArray->AddInteger(326); - _InsertWidthArray1(pFont, pEncoding.get(), 0xa0, 0xa0, pWidthArray); - pWidthArray->AddInteger(327); - _InsertWidthArray1(pFont, pEncoding.get(), 0xa1, 0xdf, pWidthArray); - pWidthArray->AddInteger(631); - _InsertWidthArray1(pFont, pEncoding.get(), 0x7e, 0x7e, pWidthArray); - break; - } - pBaseDict->SetAtName("Subtype", "Type0"); - pBaseDict->SetAtName("BaseFont", basefont); - pBaseDict->SetAtName("Encoding", cmap); - pFontDict->SetAt("W", pWidthArray); - pFontDict->SetAtName("Type", "Font"); - pFontDict->SetAtName("Subtype", "CIDFontType2"); - pFontDict->SetAtName("BaseFont", basefont); - CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary; - pCIDSysInfo->SetAtString("Registry", "Adobe"); - pCIDSysInfo->SetAtString("Ordering", ordering); - pCIDSysInfo->SetAtInteger("Supplement", supplement); - pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo); - CPDF_Array* pArray = new CPDF_Array; - pBaseDict->SetAt("DescendantFonts", pArray); - AddIndirectObject(pFontDict); - pArray->AddReference(this, pFontDict); - } - AddIndirectObject(pBaseDict); - CPDF_Dictionary* pFontDesc = new CPDF_Dictionary; - pFontDesc->SetAtName("Type", "FontDescriptor"); - pFontDesc->SetAtName("FontName", basefont); - pFontDesc->SetAtInteger("Flags", flags); - pFontDesc->SetAtInteger( - "ItalicAngle", - pFont->GetSubstFont() ? pFont->GetSubstFont()->m_ItalicAngle : 0); - pFontDesc->SetAtInteger("Ascent", pFont->GetAscent()); - pFontDesc->SetAtInteger("Descent", pFont->GetDescent()); - FX_RECT bbox; - pFont->GetBBox(bbox); - CPDF_Array* pBBox = new CPDF_Array; - pBBox->AddInteger(bbox.left); - pBBox->AddInteger(bbox.bottom); - pBBox->AddInteger(bbox.right); - pBBox->AddInteger(bbox.top); - pFontDesc->SetAt("FontBBox", pBBox); - int32_t nStemV = 0; - if (pFont->GetSubstFont()) { - nStemV = pFont->GetSubstFont()->m_Weight / 5; - } else { - static const FX_CHAR stem_chars[] = {'i', 'I', '!', '1'}; - const size_t count = sizeof(stem_chars) / sizeof(stem_chars[0]); - FX_DWORD glyph = pEncoding->GlyphFromCharCode(stem_chars[0]); - nStemV = pFont->GetGlyphWidth(glyph); - for (size_t i = 1; i < count; i++) { - glyph = pEncoding->GlyphFromCharCode(stem_chars[i]); - int width = pFont->GetGlyphWidth(glyph); - if (width > 0 && width < nStemV) { - nStemV = width; - } - } - } - pFontDesc->SetAtInteger("StemV", nStemV); - AddIndirectObject(pFontDesc); - pFontDict->SetAtReference("FontDescriptor", this, pFontDesc); - return LoadFont(pBaseDict); -} -static int InsertDeletePDFPage(CPDF_Document* pDoc, - CPDF_Dictionary* pPages, - int nPagesToGo, - CPDF_Dictionary* pPage, - FX_BOOL bInsert, - CFX_ArrayTemplate& stackList) { - CPDF_Array* pKidList = pPages->GetArrayBy("Kids"); - if (!pKidList) { - return -1; - } - int nKids = pKidList->GetCount(); - for (int i = 0; i < nKids; i++) { - CPDF_Dictionary* pKid = pKidList->GetDictAt(i); - if (pKid->GetStringBy("Type") == "Page") { - if (nPagesToGo == 0) { - if (bInsert) { - pKidList->InsertAt(i, new CPDF_Reference(pDoc, pPage->GetObjNum())); - pPage->SetAtReference("Parent", pDoc, pPages->GetObjNum()); - } else { - pKidList->RemoveAt(i); - } - pPages->SetAtInteger( - "Count", pPages->GetIntegerBy("Count") + (bInsert ? 1 : -1)); - return 1; - } - nPagesToGo--; - } else { - int nPages = pKid->GetIntegerBy("Count"); - if (nPagesToGo < nPages) { - int stackCount = stackList.GetSize(); - for (int j = 0; j < stackCount; ++j) { - if (pKid == stackList[j]) { - return -1; - } - } - stackList.Add(pKid); - if (InsertDeletePDFPage(pDoc, pKid, nPagesToGo, pPage, bInsert, - stackList) < 0) { - return -1; - } - stackList.RemoveAt(stackCount); - pPages->SetAtInteger( - "Count", pPages->GetIntegerBy("Count") + (bInsert ? 1 : -1)); - return 1; - } - nPagesToGo -= nPages; - } - } - return 0; -} -static int InsertNewPage(CPDF_Document* pDoc, - int iPage, - CPDF_Dictionary* pPageDict, - CFX_DWordArray& pageList) { - CPDF_Dictionary* pRoot = pDoc->GetRoot(); - if (!pRoot) { - return -1; - } - CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); - if (!pPages) { - return -1; - } - int nPages = pDoc->GetPageCount(); - if (iPage < 0 || iPage > nPages) { - return -1; - } - if (iPage == nPages) { - CPDF_Array* pPagesList = pPages->GetArrayBy("Kids"); - if (!pPagesList) { - pPagesList = new CPDF_Array; - pPages->SetAt("Kids", pPagesList); - } - pPagesList->Add(pPageDict, pDoc); - pPages->SetAtInteger("Count", nPages + 1); - pPageDict->SetAtReference("Parent", pDoc, pPages->GetObjNum()); - } else { - CFX_ArrayTemplate stack; - stack.Add(pPages); - if (InsertDeletePDFPage(pDoc, pPages, iPage, pPageDict, TRUE, stack) < 0) { - return -1; - } - } - pageList.InsertAt(iPage, pPageDict->GetObjNum()); - return iPage; -} -CPDF_Dictionary* CPDF_Document::CreateNewPage(int iPage) { - CPDF_Dictionary* pDict = new CPDF_Dictionary; - pDict->SetAtName("Type", "Page"); - FX_DWORD dwObjNum = AddIndirectObject(pDict); - if (InsertNewPage(this, iPage, pDict, m_PageList) < 0) { - ReleaseIndirectObject(dwObjNum); - return NULL; - } - return pDict; -} - -CPDF_Font* CPDF_Document::AddStandardFont(const FX_CHAR* font, - CPDF_FontEncoding* pEncoding) { - CFX_ByteString name(font); - if (PDF_GetStandardFontName(&name) < 0) - return nullptr; - return GetPageData()->GetStandardFont(name, pEncoding); -} - -void CPDF_Document::DeletePage(int iPage) { - CPDF_Dictionary* pRoot = GetRoot(); - if (!pRoot) { - return; - } - CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); - if (!pPages) { - return; - } - int nPages = pPages->GetIntegerBy("Count"); - if (iPage < 0 || iPage >= nPages) { - return; - } - CFX_ArrayTemplate stack; - stack.Add(pPages); - if (InsertDeletePDFPage(this, pPages, iPage, NULL, FALSE, stack) < 0) { - return; - } - m_PageList.RemoveAt(iPage); -} -CPDF_Object* FPDFAPI_GetPageAttr(CPDF_Dictionary* pPageDict, - const CFX_ByteStringC& name); -void FPDFAPI_FlatPageAttr(CPDF_Dictionary* pPageDict, - const CFX_ByteStringC& name) { - if (pPageDict->KeyExist(name)) { - return; - } - CPDF_Object* pObj = FPDFAPI_GetPageAttr(pPageDict, name); - if (pObj) { - pPageDict->SetAt(name, pObj->Clone()); - } -} diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp deleted file mode 100644 index 47e8367420..0000000000 --- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp +++ /dev/null @@ -1,391 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_boolean.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/include/fxcodec/fx_codec.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" -#include "core/src/fpdfapi/fpdf_render/render_int.h" - -CPDF_Dictionary* CPDF_Image::InitJPEG(uint8_t* pData, FX_DWORD size) { - int32_t width; - int32_t height; - int32_t num_comps; - int32_t bits; - FX_BOOL color_trans; - if (!CPDF_ModuleMgr::Get()->GetJpegModule()->LoadInfo( - pData, size, width, height, num_comps, bits, color_trans)) { - return NULL; - } - CPDF_Dictionary* pDict = new CPDF_Dictionary; - pDict->SetAtName("Type", "XObject"); - pDict->SetAtName("Subtype", "Image"); - pDict->SetAtInteger("Width", width); - pDict->SetAtInteger("Height", height); - const FX_CHAR* csname = NULL; - if (num_comps == 1) { - csname = "DeviceGray"; - } else if (num_comps == 3) { - csname = "DeviceRGB"; - } else if (num_comps == 4) { - csname = "DeviceCMYK"; - CPDF_Array* pDecode = new CPDF_Array; - for (int n = 0; n < 4; n++) { - pDecode->AddInteger(1); - pDecode->AddInteger(0); - } - pDict->SetAt("Decode", pDecode); - } - pDict->SetAtName("ColorSpace", csname); - pDict->SetAtInteger("BitsPerComponent", bits); - pDict->SetAtName("Filter", "DCTDecode"); - if (!color_trans) { - CPDF_Dictionary* pParms = new CPDF_Dictionary; - pDict->SetAt("DecodeParms", pParms); - pParms->SetAtInteger("ColorTransform", 0); - } - m_bIsMask = FALSE; - m_Width = width; - m_Height = height; - if (!m_pStream) { - m_pStream = new CPDF_Stream(NULL, 0, NULL); - } - return pDict; -} -void CPDF_Image::SetJpegImage(uint8_t* pData, FX_DWORD size) { - CPDF_Dictionary* pDict = InitJPEG(pData, size); - if (!pDict) { - return; - } - m_pStream->InitStream(pData, size, pDict); -} -void CPDF_Image::SetJpegImage(IFX_FileRead* pFile) { - FX_DWORD size = (FX_DWORD)pFile->GetSize(); - if (!size) { - return; - } - FX_DWORD dwEstimateSize = size; - if (dwEstimateSize > 8192) { - dwEstimateSize = 8192; - } - uint8_t* pData = FX_Alloc(uint8_t, dwEstimateSize); - pFile->ReadBlock(pData, 0, dwEstimateSize); - CPDF_Dictionary* pDict = InitJPEG(pData, dwEstimateSize); - FX_Free(pData); - if (!pDict && size > dwEstimateSize) { - pData = FX_Alloc(uint8_t, size); - pFile->ReadBlock(pData, 0, size); - pDict = InitJPEG(pData, size); - FX_Free(pData); - } - if (!pDict) { - return; - } - m_pStream->InitStreamFromFile(pFile, pDict); -} -void _DCTEncodeBitmap(CPDF_Dictionary* pBitmapDict, - const CFX_DIBitmap* pBitmap, - int quality, - uint8_t*& buf, - FX_STRSIZE& size) {} -void _JBIG2EncodeBitmap(CPDF_Dictionary* pBitmapDict, - const CFX_DIBitmap* pBitmap, - CPDF_Document* pDoc, - uint8_t*& buf, - FX_STRSIZE& size, - FX_BOOL bLossLess) {} -void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap, - int32_t iCompress, - IFX_FileWrite* pFileWrite, - IFX_FileRead* pFileRead, - const CFX_DIBitmap* pMask, - const CPDF_ImageSetParam* pParam) { - int32_t BitmapWidth = pBitmap->GetWidth(); - int32_t BitmapHeight = pBitmap->GetHeight(); - if (BitmapWidth < 1 || BitmapHeight < 1) { - return; - } - uint8_t* src_buf = pBitmap->GetBuffer(); - int32_t src_pitch = pBitmap->GetPitch(); - int32_t bpp = pBitmap->GetBPP(); - FX_BOOL bUseMatte = - pParam && pParam->pMatteColor && (pBitmap->GetFormat() == FXDIB_Argb); - CPDF_Dictionary* pDict = new CPDF_Dictionary; - pDict->SetAtName("Type", "XObject"); - pDict->SetAtName("Subtype", "Image"); - pDict->SetAtInteger("Width", BitmapWidth); - pDict->SetAtInteger("Height", BitmapHeight); - uint8_t* dest_buf = NULL; - FX_STRSIZE dest_pitch = 0, dest_size = 0, opType = -1; - if (bpp == 1) { - int32_t reset_a = 0, reset_r = 0, reset_g = 0, reset_b = 0; - int32_t set_a = 0, set_r = 0, set_g = 0, set_b = 0; - if (!pBitmap->IsAlphaMask()) { - ArgbDecode(pBitmap->GetPaletteArgb(0), reset_a, reset_r, reset_g, - reset_b); - ArgbDecode(pBitmap->GetPaletteArgb(1), set_a, set_r, set_g, set_b); - } - if (set_a == 0 || reset_a == 0) { - pDict->SetAt("ImageMask", new CPDF_Boolean(TRUE)); - if (reset_a == 0) { - CPDF_Array* pArray = new CPDF_Array; - pArray->AddInteger(1); - pArray->AddInteger(0); - pDict->SetAt("Decode", pArray); - } - } else { - CPDF_Array* pCS = new CPDF_Array; - pCS->AddName("Indexed"); - pCS->AddName("DeviceRGB"); - pCS->AddInteger(1); - CFX_ByteString ct; - FX_CHAR* pBuf = ct.GetBuffer(6); - pBuf[0] = (FX_CHAR)reset_r; - pBuf[1] = (FX_CHAR)reset_g; - pBuf[2] = (FX_CHAR)reset_b; - pBuf[3] = (FX_CHAR)set_r; - pBuf[4] = (FX_CHAR)set_g; - pBuf[5] = (FX_CHAR)set_b; - ct.ReleaseBuffer(6); - pCS->Add(new CPDF_String(ct, TRUE)); - pDict->SetAt("ColorSpace", pCS); - } - pDict->SetAtInteger("BitsPerComponent", 1); - dest_pitch = (BitmapWidth + 7) / 8; - if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { - opType = 1; - } else { - opType = 0; - } - } else if (bpp == 8) { - int32_t iPalette = pBitmap->GetPaletteSize(); - if (iPalette > 0) { - CPDF_Array* pCS = new CPDF_Array; - m_pDocument->AddIndirectObject(pCS); - pCS->AddName("Indexed"); - pCS->AddName("DeviceRGB"); - pCS->AddInteger(iPalette - 1); - uint8_t* pColorTable = FX_Alloc2D(uint8_t, iPalette, 3); - uint8_t* ptr = pColorTable; - for (int32_t i = 0; i < iPalette; i++) { - FX_DWORD argb = pBitmap->GetPaletteArgb(i); - ptr[0] = (uint8_t)(argb >> 16); - ptr[1] = (uint8_t)(argb >> 8); - ptr[2] = (uint8_t)argb; - ptr += 3; - } - CPDF_Stream* pCTS = - new CPDF_Stream(pColorTable, iPalette * 3, new CPDF_Dictionary); - m_pDocument->AddIndirectObject(pCTS); - pCS->AddReference(m_pDocument, pCTS); - pDict->SetAtReference("ColorSpace", m_pDocument, pCS); - } else { - pDict->SetAtName("ColorSpace", "DeviceGray"); - } - pDict->SetAtInteger("BitsPerComponent", 8); - if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { - dest_pitch = BitmapWidth; - opType = 1; - } else { - opType = 0; - } - } else { - pDict->SetAtName("ColorSpace", "DeviceRGB"); - pDict->SetAtInteger("BitsPerComponent", 8); - if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) { - dest_pitch = BitmapWidth * 3; - opType = 2; - } else { - opType = 0; - } - } - const CFX_DIBitmap* pMaskBitmap = NULL; - FX_BOOL bDeleteMask = FALSE; - if (pBitmap->HasAlpha()) { - pMaskBitmap = pBitmap->GetAlphaMask(); - bDeleteMask = TRUE; - } - if (!pMaskBitmap && pMask) { - FXDIB_Format maskFormat = pMask->GetFormat(); - if (maskFormat == FXDIB_1bppMask || maskFormat == FXDIB_8bppMask) { - pMaskBitmap = pMask; - } - } - if (pMaskBitmap) { - int32_t maskWidth = pMaskBitmap->GetWidth(); - int32_t maskHeight = pMaskBitmap->GetHeight(); - uint8_t* mask_buf = NULL; - FX_STRSIZE mask_size = 0; - CPDF_Dictionary* pMaskDict = new CPDF_Dictionary; - pMaskDict->SetAtName("Type", "XObject"); - pMaskDict->SetAtName("Subtype", "Image"); - pMaskDict->SetAtInteger("Width", maskWidth); - pMaskDict->SetAtInteger("Height", maskHeight); - pMaskDict->SetAtName("ColorSpace", "DeviceGray"); - pMaskDict->SetAtInteger("BitsPerComponent", 8); - if (pMaskBitmap->GetBPP() == 8 && - (iCompress & PDF_IMAGE_MASK_LOSSY_COMPRESS) != 0) { - _DCTEncodeBitmap(pMaskDict, pMaskBitmap, pParam ? pParam->nQuality : 75, - mask_buf, mask_size); - } else if (pMaskBitmap->GetFormat() == FXDIB_1bppMask) { - _JBIG2EncodeBitmap(pMaskDict, pMaskBitmap, m_pDocument, mask_buf, - mask_size, TRUE); - } else { - mask_buf = FX_Alloc2D(uint8_t, maskHeight, maskWidth); - mask_size = maskHeight * maskWidth; // Safe since checked alloc returned. - for (int32_t a = 0; a < maskHeight; a++) { - FXSYS_memcpy(mask_buf + a * maskWidth, pMaskBitmap->GetScanline(a), - maskWidth); - } - } - pMaskDict->SetAtInteger("Length", mask_size); - if (bUseMatte) { - int a, r, g, b; - ArgbDecode(*(pParam->pMatteColor), a, r, g, b); - CPDF_Array* pMatte = new CPDF_Array; - pMatte->AddInteger(r); - pMatte->AddInteger(g); - pMatte->AddInteger(b); - pMaskDict->SetAt("Matte", pMatte); - } - CPDF_Stream* pMaskStream = new CPDF_Stream(mask_buf, mask_size, pMaskDict); - m_pDocument->AddIndirectObject(pMaskStream); - pDict->SetAtReference("SMask", m_pDocument, pMaskStream); - if (bDeleteMask) { - delete pMaskBitmap; - } - } - FX_BOOL bStream = pFileWrite && pFileRead; - if (opType == 0) { - if (iCompress & PDF_IMAGE_LOSSLESS_COMPRESS) { - if (pBitmap->GetBPP() == 1) { - _JBIG2EncodeBitmap(pDict, pBitmap, m_pDocument, dest_buf, dest_size, - TRUE); - } - } else { - if (pBitmap->GetBPP() == 1) { - _JBIG2EncodeBitmap(pDict, pBitmap, m_pDocument, dest_buf, dest_size, - FALSE); - } else if (pBitmap->GetBPP() >= 8 && pBitmap->GetPalette()) { - CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap(); - pNewBitmap->Copy(pBitmap); - pNewBitmap->ConvertFormat(FXDIB_Rgb); - SetImage(pNewBitmap, iCompress, pFileWrite, pFileRead); - if (pDict) { - pDict->Release(); - pDict = NULL; - } - FX_Free(dest_buf); - dest_buf = NULL; - dest_size = 0; - delete pNewBitmap; - return; - } else { - if (bUseMatte) { - CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap(); - pNewBitmap->Create(BitmapWidth, BitmapHeight, FXDIB_Argb); - uint8_t* dst_buf = pNewBitmap->GetBuffer(); - int32_t src_offset = 0; - for (int32_t row = 0; row < BitmapHeight; row++) { - src_offset = row * src_pitch; - for (int32_t column = 0; column < BitmapWidth; column++) { - FX_FLOAT alpha = src_buf[src_offset + 3] / 255.0f; - dst_buf[src_offset] = (uint8_t)(src_buf[src_offset] * alpha); - dst_buf[src_offset + 1] = - (uint8_t)(src_buf[src_offset + 1] * alpha); - dst_buf[src_offset + 2] = - (uint8_t)(src_buf[src_offset + 2] * alpha); - dst_buf[src_offset + 3] = (uint8_t)(src_buf[src_offset + 3]); - src_offset += 4; - } - } - _DCTEncodeBitmap(pDict, pNewBitmap, pParam ? pParam->nQuality : 75, - dest_buf, dest_size); - delete pNewBitmap; - } else { - _DCTEncodeBitmap(pDict, pBitmap, pParam ? pParam->nQuality : 75, - dest_buf, dest_size); - } - } - } - if (bStream) { - pFileWrite->WriteBlock(dest_buf, dest_size); - FX_Free(dest_buf); - dest_buf = NULL; - } - } else if (opType == 1) { - if (!bStream) { - dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight); - dest_size = - dest_pitch * BitmapHeight; // Safe since checked alloc returned. - } - uint8_t* pDest = dest_buf; - for (int32_t i = 0; i < BitmapHeight; i++) { - if (!bStream) { - FXSYS_memcpy(pDest, src_buf, dest_pitch); - pDest += dest_pitch; - } else { - pFileWrite->WriteBlock(src_buf, dest_pitch); - } - src_buf += src_pitch; - } - } else if (opType == 2) { - if (!bStream) { - dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight); - dest_size = - dest_pitch * BitmapHeight; // Safe since checked alloc returned. - } else { - dest_buf = FX_Alloc(uint8_t, dest_pitch); - } - uint8_t* pDest = dest_buf; - int32_t src_offset = 0; - int32_t dest_offset = 0; - for (int32_t row = 0; row < BitmapHeight; row++) { - src_offset = row * src_pitch; - for (int32_t column = 0; column < BitmapWidth; column++) { - FX_FLOAT alpha = bUseMatte ? src_buf[src_offset + 3] / 255.0f : 1; - pDest[dest_offset] = (uint8_t)(src_buf[src_offset + 2] * alpha); - pDest[dest_offset + 1] = (uint8_t)(src_buf[src_offset + 1] * alpha); - pDest[dest_offset + 2] = (uint8_t)(src_buf[src_offset] * alpha); - dest_offset += 3; - src_offset += bpp == 24 ? 3 : 4; - } - if (bStream) { - pFileWrite->WriteBlock(pDest, dest_pitch); - pDest = dest_buf; - } else { - pDest += dest_pitch; - } - dest_offset = 0; - } - if (bStream) { - FX_Free(dest_buf); - dest_buf = NULL; - } - } - if (!m_pStream) { - m_pStream = new CPDF_Stream(NULL, 0, NULL); - } - if (!bStream) { - m_pStream->InitStream(dest_buf, dest_size, pDict); - } else { - pFileWrite->Flush(); - m_pStream->InitStreamFromFile(pFileRead, pDict); - } - m_bIsMask = pBitmap->IsAlphaMask(); - m_Width = BitmapWidth; - m_Height = BitmapHeight; - FX_Free(dest_buf); -} -void CPDF_Image::ResetCache(CPDF_Page* pPage, const CFX_DIBitmap* pBitmap) { - pPage->GetRenderCache()->ResetBitmap(m_pStream, pBitmap); -} diff --git a/core/src/fpdfapi/fpdf_font/font_int.h b/core/src/fpdfapi/fpdf_font/font_int.h deleted file mode 100644 index dc28010de3..0000000000 --- a/core/src/fpdfapi/fpdf_font/font_int.h +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ -#define CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ - -#include -#include - -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcrt/fx_basic.h" - -class CPDF_CID2UnicodeMap; -class CPDF_CMap; -class CPDF_Font; -class CPDF_Stream; - -typedef void* FXFT_Library; - -short TT2PDF(int m, FXFT_Face face); -FX_BOOL FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id); - -class CPDF_CMapManager { - public: - CPDF_CMapManager(); - ~CPDF_CMapManager(); - void* GetPackage(FX_BOOL bPrompt); - CPDF_CMap* GetPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPromptCJK); - CPDF_CID2UnicodeMap* GetCID2UnicodeMap(CIDSet charset, FX_BOOL bPromptCJK); - void ReloadAll(); - - private: - CPDF_CMap* LoadPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPromptCJK); - CPDF_CID2UnicodeMap* LoadCID2UnicodeMap(CIDSet charset, FX_BOOL bPromptCJK); - - FX_BOOL m_bPrompted; - std::map m_CMaps; - CPDF_CID2UnicodeMap* m_CID2UnicodeMaps[6]; -}; - -class CFX_StockFontArray { - public: - CFX_StockFontArray(); - ~CFX_StockFontArray(); - - // Takes ownership of |pFont|. - void SetFont(int index, CPDF_Font* pFont); - CPDF_Font* GetFont(int index) const; - - private: - std::unique_ptr m_StockFonts[14]; -}; - -class CPDF_FontGlobals { - public: - CPDF_FontGlobals(); - ~CPDF_FontGlobals(); - - void Clear(CPDF_Document* pDoc); - CPDF_Font* Find(CPDF_Document* pDoc, int index); - - // Takes ownership of |pFont|. - void Set(CPDF_Document* key, int index, CPDF_Font* pFont); - - CPDF_CMapManager m_CMapManager; - struct { - const struct FXCMAP_CMap* m_pMapList; - int m_Count; - } m_EmbeddedCharsets[CIDSET_NUM_SETS]; - struct { - const FX_WORD* m_pMap; - int m_Count; - } m_EmbeddedToUnicodes[CIDSET_NUM_SETS]; - - private: - std::map> m_StockMap; -}; - -struct CMap_CodeRange { - int m_CharSize; - uint8_t m_Lower[4]; - uint8_t m_Upper[4]; -}; - -class CPDF_CMapParser { - public: - CPDF_CMapParser(); - ~CPDF_CMapParser() {} - FX_BOOL Initialize(CPDF_CMap* pMap); - void ParseWord(const CFX_ByteStringC& str); - CFX_BinaryBuf m_AddMaps; - - private: - friend class fpdf_font_cid_CMap_GetCode_Test; - friend class fpdf_font_cid_CMap_GetCodeRange_Test; - - static FX_DWORD CMap_GetCode(const CFX_ByteStringC& word); - static bool CMap_GetCodeRange(CMap_CodeRange& range, - const CFX_ByteStringC& first, - const CFX_ByteStringC& second); - - CPDF_CMap* m_pCMap; - int m_Status; - int m_CodeSeq; - FX_DWORD m_CodePoints[4]; - CFX_ArrayTemplate m_CodeRanges; - CFX_ByteString m_Registry, m_Ordering, m_Supplement; - CFX_ByteString m_LastWord; -}; -#define CIDCODING_UNKNOWN 0 -#define CIDCODING_GB 1 -#define CIDCODING_BIG5 2 -#define CIDCODING_JIS 3 -#define CIDCODING_KOREA 4 -#define CIDCODING_UCS2 5 -#define CIDCODING_CID 6 -#define CIDCODING_UTF16 7 -class CPDF_CMap { - public: - CPDF_CMap(); - FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr, - const FX_CHAR* name, - FX_BOOL bPromptCJK); - FX_BOOL LoadEmbedded(const uint8_t* pData, FX_DWORD dwSize); - void Release(); - FX_BOOL IsLoaded() const { return m_bLoaded; } - FX_BOOL IsVertWriting() const { return m_bVertical; } - FX_WORD CIDFromCharCode(FX_DWORD charcode) const; - FX_DWORD CharCodeFromCID(FX_WORD CID) const; - int GetCharSize(FX_DWORD charcode) const; - FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const; - int CountChar(const FX_CHAR* pString, int size) const; - int AppendChar(FX_CHAR* str, FX_DWORD charcode) const; - typedef enum { - OneByte, - TwoBytes, - MixedTwoBytes, - MixedFourBytes - } CodingScheme; - - protected: - ~CPDF_CMap(); - friend class CPDF_CMapParser; - friend class CPDF_CMapManager; - friend class CPDF_CIDFont; - - protected: - CFX_ByteString m_PredefinedCMap; - FX_BOOL m_bVertical; - CIDSet m_Charset; - int m_Coding; - CodingScheme m_CodingScheme; - int m_nCodeRanges; - uint8_t* m_pLeadingBytes; - FX_WORD* m_pMapping; - uint8_t* m_pAddMapping; - FX_BOOL m_bLoaded; - const FXCMAP_CMap* m_pEmbedMap; - CPDF_CMap* m_pUseMap; -}; - -class CPDF_CID2UnicodeMap { - public: - CPDF_CID2UnicodeMap(); - ~CPDF_CID2UnicodeMap(); - FX_BOOL Initialize(); - FX_BOOL IsLoaded(); - void Load(CPDF_CMapManager* pMgr, CIDSet charset, FX_BOOL bPromptCJK); - FX_WCHAR UnicodeFromCID(FX_WORD CID); - - protected: - CIDSet m_Charset; - const FX_WORD* m_pEmbeddedMap; - FX_DWORD m_EmbeddedCount; -}; - -class CPDF_ToUnicodeMap { - public: - void Load(CPDF_Stream* pStream); - CFX_WideString Lookup(FX_DWORD charcode); - FX_DWORD ReverseLookup(FX_WCHAR unicode); - - protected: - std::map m_Map; - CPDF_CID2UnicodeMap* m_pBaseMap; - CFX_WideTextBuf m_MultiCharBuf; - - private: - friend class fpdf_font_StringToCode_Test; - friend class fpdf_font_StringToWideString_Test; - - static FX_DWORD StringToCode(const CFX_ByteStringC& str); - static CFX_WideString StringToWideString(const CFX_ByteStringC& str); -}; - -void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset, - const FX_WORD*& pMap, - FX_DWORD& count); - -#endif // CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp deleted file mode 100644 index ae6ebdd9f8..0000000000 --- a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp +++ /dev/null @@ -1,1815 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_simple_parser.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxge/fx_freetype.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" -#include "third_party/base/stl_util.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ -#include "core/src/fxge/apple/apple_int.h" -#endif - -namespace { - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ -struct GlyphNameMap { - const FX_CHAR* m_pStrAdobe; - const FX_CHAR* m_pStrUnicode; -}; - -const GlyphNameMap g_GlyphNameSubsts[] = {{"ff", "uniFB00"}, - {"fi", "uniFB01"}, - {"fl", "uniFB02"}, - {"ffi", "uniFB03"}, - {"ffl", "uniFB04"}}; - -int compareString(const void* key, const void* element) { - return FXSYS_stricmp((const FX_CHAR*)key, - ((GlyphNameMap*)element)->m_pStrAdobe); -} - -const FX_CHAR* GlyphNameRemap(const FX_CHAR* pStrAdobe) { - GlyphNameMap* found = (GlyphNameMap*)FXSYS_bsearch( - pStrAdobe, g_GlyphNameSubsts, - sizeof(g_GlyphNameSubsts) / sizeof(GlyphNameMap), sizeof(GlyphNameMap), - compareString); - if (found) - return found->m_pStrUnicode; - return NULL; -} -#endif - -const uint8_t ChineseFontNames[][5] = {{0xCB, 0xCE, 0xCC, 0xE5, 0x00}, - {0xBF, 0xAC, 0xCC, 0xE5, 0x00}, - {0xBA, 0xDA, 0xCC, 0xE5, 0x00}, - {0xB7, 0xC2, 0xCB, 0xCE, 0x00}, - {0xD0, 0xC2, 0xCB, 0xCE, 0x00}}; - -FX_BOOL GetPredefinedEncoding(int& basemap, const CFX_ByteString& value) { - if (value == "WinAnsiEncoding") { - basemap = PDFFONT_ENCODING_WINANSI; - } else if (value == "MacRomanEncoding") { - basemap = PDFFONT_ENCODING_MACROMAN; - } else if (value == "MacExpertEncoding") { - basemap = PDFFONT_ENCODING_MACEXPERT; - } else if (value == "PDFDocEncoding") { - basemap = PDFFONT_ENCODING_PDFDOC; - } else { - return FALSE; - } - return TRUE; -} - -FX_BOOL FT_UseType1Charmap(FXFT_Face face) { - if (FXFT_Get_Face_CharmapCount(face) == 0) { - return FALSE; - } - if (FXFT_Get_Face_CharmapCount(face) == 1 && - FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) == - FXFT_ENCODING_UNICODE) { - return FALSE; - } - if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) == - FXFT_ENCODING_UNICODE) { - FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[1]); - } else { - FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]); - } - return TRUE; -} - -} // namespace - -FX_BOOL FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id) { - for (int i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) { - if (FXFT_Get_Charmap_PlatformID(FXFT_Get_Face_Charmaps(face)[i]) == - platform_id && - FXFT_Get_Charmap_EncodingID(FXFT_Get_Face_Charmaps(face)[i]) == - encoding_id) { - FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]); - return TRUE; - } - } - return FALSE; -} - -CFX_StockFontArray::CFX_StockFontArray() {} - -CFX_StockFontArray::~CFX_StockFontArray() { - for (size_t i = 0; i < FX_ArraySize(m_StockFonts); ++i) { - if (!m_StockFonts[i]) - continue; - CPDF_Dictionary* pFontDict = m_StockFonts[i]->GetFontDict(); - if (pFontDict) - pFontDict->Release(); - } -} - -CPDF_Font* CFX_StockFontArray::GetFont(int index) const { - if (index < 0 || index >= FX_ArraySize(m_StockFonts)) - return nullptr; - return m_StockFonts[index].get(); -} - -void CFX_StockFontArray::SetFont(int index, CPDF_Font* font) { - if (index < 0 || index >= FX_ArraySize(m_StockFonts)) - return; - m_StockFonts[index].reset(font); -} - -CPDF_FontGlobals::CPDF_FontGlobals() { - FXSYS_memset(m_EmbeddedCharsets, 0, sizeof(m_EmbeddedCharsets)); - FXSYS_memset(m_EmbeddedToUnicodes, 0, sizeof(m_EmbeddedToUnicodes)); -} - -CPDF_FontGlobals::~CPDF_FontGlobals() { -} - -CPDF_Font* CPDF_FontGlobals::Find(CPDF_Document* pDoc, int index) { - auto it = m_StockMap.find(pDoc); - if (it == m_StockMap.end()) - return nullptr; - return it->second ? it->second->GetFont(index) : nullptr; -} - -void CPDF_FontGlobals::Set(CPDF_Document* pDoc, int index, CPDF_Font* pFont) { - if (!pdfium::ContainsKey(m_StockMap, pDoc)) - m_StockMap[pDoc].reset(new CFX_StockFontArray); - m_StockMap[pDoc]->SetFont(index, pFont); -} - -void CPDF_FontGlobals::Clear(CPDF_Document* pDoc) { - m_StockMap.erase(pDoc); -} - -CPDF_Font::CPDF_Font() - : m_pFontFile(nullptr), - m_pFontDict(nullptr), - m_pToUnicodeMap(nullptr), - m_bToUnicodeLoaded(FALSE), - m_Flags(0), - m_StemV(0), - m_Ascent(0), - m_Descent(0), - m_ItalicAngle(0) {} - -CPDF_Font::~CPDF_Font() { - delete m_pToUnicodeMap; - m_pToUnicodeMap = NULL; - - if (m_pFontFile) { - m_pDocument->GetPageData()->ReleaseFontFileStreamAcc( - const_cast(m_pFontFile->GetStream()->AsStream())); - } -} - -bool CPDF_Font::IsType1Font() const { - return false; -} - -bool CPDF_Font::IsTrueTypeFont() const { - return false; -} - -bool CPDF_Font::IsType3Font() const { - return false; -} - -bool CPDF_Font::IsCIDFont() const { - return false; -} - -const CPDF_Type1Font* CPDF_Font::AsType1Font() const { - return nullptr; -} - -CPDF_Type1Font* CPDF_Font::AsType1Font() { - return nullptr; -} - -const CPDF_TrueTypeFont* CPDF_Font::AsTrueTypeFont() const { - return nullptr; -} - -CPDF_TrueTypeFont* CPDF_Font::AsTrueTypeFont() { - return nullptr; -} - -const CPDF_Type3Font* CPDF_Font::AsType3Font() const { - return nullptr; -} - -CPDF_Type3Font* CPDF_Font::AsType3Font() { - return nullptr; -} - -const CPDF_CIDFont* CPDF_Font::AsCIDFont() const { - return nullptr; -} - -CPDF_CIDFont* CPDF_Font::AsCIDFont() { - return nullptr; -} - -FX_BOOL CPDF_Font::IsUnicodeCompatible() const { - return FALSE; -} - -int CPDF_Font::CountChar(const FX_CHAR* pString, int size) const { - return size; -} - -int CPDF_Font::GetCharSize(FX_DWORD charcode) const { - return 1; -} - -int CPDF_Font::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) { - ASSERT(false); - return 0; -} - -int CPDF_Font::GlyphFromCharCodeExt(FX_DWORD charcode) { - return GlyphFromCharCode(charcode); -} - -FX_BOOL CPDF_Font::IsVertWriting() const { - FX_BOOL bVertWriting = FALSE; - const CPDF_CIDFont* pCIDFont = AsCIDFont(); - if (pCIDFont) { - bVertWriting = pCIDFont->IsVertWriting(); - } else { - bVertWriting = m_Font.IsVertical(); - } - return bVertWriting; -} - -int CPDF_Font::AppendChar(FX_CHAR* buf, FX_DWORD charcode) const { - *buf = (FX_CHAR)charcode; - return 1; -} - -void CPDF_Font::AppendChar(CFX_ByteString& str, FX_DWORD charcode) const { - char buf[4]; - int len = AppendChar(buf, charcode); - if (len == 1) { - str += buf[0]; - } else { - str += CFX_ByteString(buf, len); - } -} - -CFX_WideString CPDF_Font::UnicodeFromCharCode(FX_DWORD charcode) const { - if (!m_bToUnicodeLoaded) - ((CPDF_Font*)this)->LoadUnicodeMap(); - - if (m_pToUnicodeMap) - return m_pToUnicodeMap->Lookup(charcode); - return CFX_WideString(); -} - -FX_DWORD CPDF_Font::CharCodeFromUnicode(FX_WCHAR unicode) const { - if (!m_bToUnicodeLoaded) - ((CPDF_Font*)this)->LoadUnicodeMap(); - - if (m_pToUnicodeMap) - return m_pToUnicodeMap->ReverseLookup(unicode); - return 0; -} - -void CPDF_Font::LoadFontDescriptor(CPDF_Dictionary* pFontDesc) { - m_Flags = pFontDesc->GetIntegerBy("Flags", PDFFONT_NONSYMBOLIC); - int ItalicAngle = 0; - FX_BOOL bExistItalicAngle = FALSE; - if (pFontDesc->KeyExist("ItalicAngle")) { - ItalicAngle = pFontDesc->GetIntegerBy("ItalicAngle"); - bExistItalicAngle = TRUE; - } - if (ItalicAngle < 0) { - m_Flags |= PDFFONT_ITALIC; - m_ItalicAngle = ItalicAngle; - } - FX_BOOL bExistStemV = FALSE; - if (pFontDesc->KeyExist("StemV")) { - m_StemV = pFontDesc->GetIntegerBy("StemV"); - bExistStemV = TRUE; - } - FX_BOOL bExistAscent = FALSE; - if (pFontDesc->KeyExist("Ascent")) { - m_Ascent = pFontDesc->GetIntegerBy("Ascent"); - bExistAscent = TRUE; - } - FX_BOOL bExistDescent = FALSE; - if (pFontDesc->KeyExist("Descent")) { - m_Descent = pFontDesc->GetIntegerBy("Descent"); - bExistDescent = TRUE; - } - FX_BOOL bExistCapHeight = FALSE; - if (pFontDesc->KeyExist("CapHeight")) { - bExistCapHeight = TRUE; - } - if (bExistItalicAngle && bExistAscent && bExistCapHeight && bExistDescent && - bExistStemV) { - m_Flags |= PDFFONT_USEEXTERNATTR; - } - if (m_Descent > 10) { - m_Descent = -m_Descent; - } - CPDF_Array* pBBox = pFontDesc->GetArrayBy("FontBBox"); - if (pBBox) { - m_FontBBox.left = pBBox->GetIntegerAt(0); - m_FontBBox.bottom = pBBox->GetIntegerAt(1); - m_FontBBox.right = pBBox->GetIntegerAt(2); - m_FontBBox.top = pBBox->GetIntegerAt(3); - } - - CPDF_Stream* pFontFile = pFontDesc->GetStreamBy("FontFile"); - if (!pFontFile) - pFontFile = pFontDesc->GetStreamBy("FontFile2"); - if (!pFontFile) - pFontFile = pFontDesc->GetStreamBy("FontFile3"); - if (!pFontFile) - return; - - m_pFontFile = m_pDocument->LoadFontFile(pFontFile); - if (!m_pFontFile) - return; - - const uint8_t* pFontData = m_pFontFile->GetData(); - FX_DWORD dwFontSize = m_pFontFile->GetSize(); - if (!m_Font.LoadEmbedded(pFontData, dwFontSize)) { - m_pDocument->GetPageData()->ReleaseFontFileStreamAcc( - const_cast(m_pFontFile->GetStream()->AsStream())); - m_pFontFile = nullptr; - } -} - -short TT2PDF(int m, FXFT_Face face) { - int upm = FXFT_Get_Face_UnitsPerEM(face); - if (upm == 0) { - return (short)m; - } - return (m * 1000 + upm / 2) / upm; -} - -void CPDF_Font::CheckFontMetrics() { - if (m_FontBBox.top == 0 && m_FontBBox.bottom == 0 && m_FontBBox.left == 0 && - m_FontBBox.right == 0) { - FXFT_Face face = m_Font.GetFace(); - if (face) { - m_FontBBox.left = TT2PDF(FXFT_Get_Face_xMin(face), face); - m_FontBBox.bottom = TT2PDF(FXFT_Get_Face_yMin(face), face); - m_FontBBox.right = TT2PDF(FXFT_Get_Face_xMax(face), face); - m_FontBBox.top = TT2PDF(FXFT_Get_Face_yMax(face), face); - m_Ascent = TT2PDF(FXFT_Get_Face_Ascender(face), face); - m_Descent = TT2PDF(FXFT_Get_Face_Descender(face), face); - } else { - FX_BOOL bFirst = TRUE; - for (int i = 0; i < 256; i++) { - FX_RECT rect = GetCharBBox(i); - if (rect.left == rect.right) { - continue; - } - if (bFirst) { - m_FontBBox = rect; - bFirst = FALSE; - } else { - if (m_FontBBox.top < rect.top) { - m_FontBBox.top = rect.top; - } - if (m_FontBBox.right < rect.right) { - m_FontBBox.right = rect.right; - } - if (m_FontBBox.left > rect.left) { - m_FontBBox.left = rect.left; - } - if (m_FontBBox.bottom > rect.bottom) { - m_FontBBox.bottom = rect.bottom; - } - } - } - } - } - if (m_Ascent == 0 && m_Descent == 0) { - FX_RECT rect = GetCharBBox('A'); - m_Ascent = rect.bottom == rect.top ? m_FontBBox.top : rect.top; - rect = GetCharBBox('g'); - m_Descent = rect.bottom == rect.top ? m_FontBBox.bottom : rect.bottom; - } -} - -void CPDF_Font::LoadUnicodeMap() { - m_bToUnicodeLoaded = TRUE; - CPDF_Stream* pStream = m_pFontDict->GetStreamBy("ToUnicode"); - if (!pStream) { - return; - } - m_pToUnicodeMap = new CPDF_ToUnicodeMap; - m_pToUnicodeMap->Load(pStream); -} - -int CPDF_Font::GetStringWidth(const FX_CHAR* pString, int size) { - int offset = 0; - int width = 0; - while (offset < size) { - FX_DWORD charcode = GetNextChar(pString, size, offset); - width += GetCharWidthF(charcode); - } - return width; -} - -CPDF_Font* CPDF_Font::GetStockFont(CPDF_Document* pDoc, - const CFX_ByteStringC& name) { - CFX_ByteString fontname(name); - int font_id = PDF_GetStandardFontName(&fontname); - if (font_id < 0) { - return nullptr; - } - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - CPDF_Font* pFont = pFontGlobals->Find(pDoc, font_id); - if (pFont) { - return pFont; - } - CPDF_Dictionary* pDict = new CPDF_Dictionary; - pDict->SetAtName("Type", "Font"); - pDict->SetAtName("Subtype", "Type1"); - pDict->SetAtName("BaseFont", fontname); - pDict->SetAtName("Encoding", "WinAnsiEncoding"); - pFont = CPDF_Font::CreateFontF(NULL, pDict); - pFontGlobals->Set(pDoc, font_id, pFont); - return pFont; -} - -CPDF_Font* CPDF_Font::CreateFontF(CPDF_Document* pDoc, - CPDF_Dictionary* pFontDict) { - CFX_ByteString type = pFontDict->GetStringBy("Subtype"); - CPDF_Font* pFont; - if (type == "TrueType") { - { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - CFX_ByteString basefont = pFontDict->GetStringBy("BaseFont"); - CFX_ByteString tag = basefont.Left(4); - int i; - int count = sizeof(ChineseFontNames) / sizeof(ChineseFontNames[0]); - for (i = 0; i < count; ++i) { - if (tag == CFX_ByteString((const FX_CHAR*)ChineseFontNames[i])) { - break; - } - } - if (i < count) { - CPDF_Dictionary* pFontDesc = pFontDict->GetDictBy("FontDescriptor"); - if (!pFontDesc || !pFontDesc->KeyExist("FontFile2")) { - pFont = new CPDF_CIDFont; - pFont->m_pFontDict = pFontDict; - pFont->m_pDocument = pDoc; - pFont->m_BaseFont = pFontDict->GetStringBy("BaseFont"); - if (!pFont->Load()) { - delete pFont; - return NULL; - } - return pFont; - } - } -#endif - } - pFont = new CPDF_TrueTypeFont; - } else if (type == "Type3") { - pFont = new CPDF_Type3Font; - } else if (type == "Type0") { - pFont = new CPDF_CIDFont; - } else { - pFont = new CPDF_Type1Font; - } - pFont->m_pFontDict = pFontDict; - pFont->m_pDocument = pDoc; - pFont->m_BaseFont = pFontDict->GetStringBy("BaseFont"); - if (!pFont->Load()) { - delete pFont; - return NULL; - } - return pFont; -} - -CFX_WideString CPDF_ToUnicodeMap::Lookup(FX_DWORD charcode) { - auto it = m_Map.find(charcode); - if (it != m_Map.end()) { - FX_DWORD value = it->second; - FX_WCHAR unicode = (FX_WCHAR)(value & 0xffff); - if (unicode != 0xffff) { - return unicode; - } - const FX_WCHAR* buf = m_MultiCharBuf.GetBuffer(); - FX_DWORD buf_len = m_MultiCharBuf.GetLength(); - if (!buf || buf_len == 0) { - return CFX_WideString(); - } - FX_DWORD index = value >> 16; - if (index >= buf_len) { - return CFX_WideString(); - } - FX_DWORD len = buf[index]; - if (index + len < index || index + len >= buf_len) { - return CFX_WideString(); - } - return CFX_WideString(buf + index + 1, len); - } - if (m_pBaseMap) { - return m_pBaseMap->UnicodeFromCID((FX_WORD)charcode); - } - return CFX_WideString(); -} - -FX_DWORD CPDF_ToUnicodeMap::ReverseLookup(FX_WCHAR unicode) { - for (const auto& pair : m_Map) { - if (pair.second == unicode) - return pair.first; - } - return 0; -} - -// Static. -FX_DWORD CPDF_ToUnicodeMap::StringToCode(const CFX_ByteStringC& str) { - const FX_CHAR* buf = str.GetCStr(); - int len = str.GetLength(); - if (len == 0) - return 0; - - int result = 0; - if (buf[0] == '<') { - for (int i = 1; i < len && std::isxdigit(buf[i]); ++i) - result = result * 16 + FXSYS_toHexDigit(buf[i]); - return result; - } - - for (int i = 0; i < len && std::isdigit(buf[i]); ++i) - result = result * 10 + FXSYS_toDecimalDigit(buf[i]); - - return result; -} - -static CFX_WideString StringDataAdd(CFX_WideString str) { - CFX_WideString ret; - int len = str.GetLength(); - FX_WCHAR value = 1; - for (int i = len - 1; i >= 0; --i) { - FX_WCHAR ch = str[i] + value; - if (ch < str[i]) { - ret.Insert(0, 0); - } else { - ret.Insert(0, ch); - value = 0; - } - } - if (value) { - ret.Insert(0, value); - } - return ret; -} - -// Static. -CFX_WideString CPDF_ToUnicodeMap::StringToWideString( - const CFX_ByteStringC& str) { - const FX_CHAR* buf = str.GetCStr(); - int len = str.GetLength(); - if (len == 0) - return CFX_WideString(); - - CFX_WideString result; - if (buf[0] == '<') { - int byte_pos = 0; - FX_WCHAR ch = 0; - for (int i = 1; i < len && std::isxdigit(buf[i]); ++i) { - ch = ch * 16 + FXSYS_toHexDigit(buf[i]); - byte_pos++; - if (byte_pos == 4) { - result += ch; - byte_pos = 0; - ch = 0; - } - } - return result; - } - return result; -} - -void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { - CIDSet cid_set = CIDSET_UNKNOWN; - CPDF_StreamAcc stream; - stream.LoadAllData(pStream, FALSE); - CPDF_SimpleParser parser(stream.GetData(), stream.GetSize()); - while (1) { - CFX_ByteStringC word = parser.GetWord(); - if (word.IsEmpty()) { - break; - } - if (word == "beginbfchar") { - while (1) { - word = parser.GetWord(); - if (word.IsEmpty() || word == "endbfchar") { - break; - } - FX_DWORD srccode = StringToCode(word); - word = parser.GetWord(); - CFX_WideString destcode = StringToWideString(word); - int len = destcode.GetLength(); - if (len == 0) { - continue; - } - if (len == 1) { - m_Map[srccode] = destcode.GetAt(0); - } else { - m_Map[srccode] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; - m_MultiCharBuf.AppendChar(destcode.GetLength()); - m_MultiCharBuf << destcode; - } - } - } else if (word == "beginbfrange") { - while (1) { - CFX_ByteString low, high; - low = parser.GetWord(); - if (low.IsEmpty() || low == "endbfrange") { - break; - } - high = parser.GetWord(); - FX_DWORD lowcode = StringToCode(low); - FX_DWORD highcode = - (lowcode & 0xffffff00) | (StringToCode(high) & 0xff); - if (highcode == (FX_DWORD)-1) { - break; - } - CFX_ByteString start = parser.GetWord(); - if (start == "[") { - for (FX_DWORD code = lowcode; code <= highcode; code++) { - CFX_ByteString dest = parser.GetWord(); - CFX_WideString destcode = StringToWideString(dest); - int len = destcode.GetLength(); - if (len == 0) { - continue; - } - if (len == 1) { - m_Map[code] = destcode.GetAt(0); - } else { - m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; - m_MultiCharBuf.AppendChar(destcode.GetLength()); - m_MultiCharBuf << destcode; - } - } - parser.GetWord(); - } else { - CFX_WideString destcode = StringToWideString(start); - int len = destcode.GetLength(); - FX_DWORD value = 0; - if (len == 1) { - value = StringToCode(start); - for (FX_DWORD code = lowcode; code <= highcode; code++) { - m_Map[code] = value++; - } - } else { - for (FX_DWORD code = lowcode; code <= highcode; code++) { - CFX_WideString retcode; - if (code == lowcode) { - retcode = destcode; - } else { - retcode = StringDataAdd(destcode); - } - m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff; - m_MultiCharBuf.AppendChar(retcode.GetLength()); - m_MultiCharBuf << retcode; - destcode = retcode; - } - } - } - } - } else if (word == "/Adobe-Korea1-UCS2") { - cid_set = CIDSET_KOREA1; - } else if (word == "/Adobe-Japan1-UCS2") { - cid_set = CIDSET_JAPAN1; - } else if (word == "/Adobe-CNS1-UCS2") { - cid_set = CIDSET_CNS1; - } else if (word == "/Adobe-GB1-UCS2") { - cid_set = CIDSET_GB1; - } - } - if (cid_set) { - m_pBaseMap = CPDF_ModuleMgr::Get() - ->GetPageModule() - ->GetFontGlobals() - ->m_CMapManager.GetCID2UnicodeMap(cid_set, FALSE); - } else { - m_pBaseMap = NULL; - } -} - -FX_DWORD CPDF_Font::GetNextChar(const FX_CHAR* pString, - int nStrLen, - int& offset) const { - if (offset < 0 || nStrLen < 1) { - return 0; - } - uint8_t ch = offset < nStrLen ? pString[offset++] : pString[nStrLen - 1]; - return static_cast(ch); -} - -void CPDF_Font::LoadPDFEncoding(CPDF_Object* pEncoding, - int& iBaseEncoding, - CFX_ByteString*& pCharNames, - FX_BOOL bEmbedded, - FX_BOOL bTrueType) { - if (!pEncoding) { - if (m_BaseFont == "Symbol") { - iBaseEncoding = bTrueType ? PDFFONT_ENCODING_MS_SYMBOL - : PDFFONT_ENCODING_ADOBE_SYMBOL; - } else if (!bEmbedded && iBaseEncoding == PDFFONT_ENCODING_BUILTIN) { - iBaseEncoding = PDFFONT_ENCODING_WINANSI; - } - return; - } - if (pEncoding->IsName()) { - if (iBaseEncoding == PDFFONT_ENCODING_ADOBE_SYMBOL || - iBaseEncoding == PDFFONT_ENCODING_ZAPFDINGBATS) { - return; - } - if ((m_Flags & PDFFONT_SYMBOLIC) && m_BaseFont == "Symbol") { - if (!bTrueType) { - iBaseEncoding = PDFFONT_ENCODING_ADOBE_SYMBOL; - } - return; - } - CFX_ByteString bsEncoding = pEncoding->GetString(); - if (bsEncoding.Compare("MacExpertEncoding") == 0) { - bsEncoding = "WinAnsiEncoding"; - } - GetPredefinedEncoding(iBaseEncoding, bsEncoding); - return; - } - - CPDF_Dictionary* pDict = pEncoding->AsDictionary(); - if (!pDict) - return; - - if (iBaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL && - iBaseEncoding != PDFFONT_ENCODING_ZAPFDINGBATS) { - CFX_ByteString bsEncoding = pDict->GetStringBy("BaseEncoding"); - if (bsEncoding.Compare("MacExpertEncoding") == 0 && bTrueType) { - bsEncoding = "WinAnsiEncoding"; - } - GetPredefinedEncoding(iBaseEncoding, bsEncoding); - } - if ((!bEmbedded || bTrueType) && iBaseEncoding == PDFFONT_ENCODING_BUILTIN) { - iBaseEncoding = PDFFONT_ENCODING_STANDARD; - } - CPDF_Array* pDiffs = pDict->GetArrayBy("Differences"); - if (!pDiffs) { - return; - } - pCharNames = new CFX_ByteString[256]; - FX_DWORD cur_code = 0; - for (FX_DWORD i = 0; i < pDiffs->GetCount(); i++) { - CPDF_Object* pElement = pDiffs->GetElementValue(i); - if (!pElement) - continue; - - if (CPDF_Name* pName = pElement->AsName()) { - if (cur_code < 256) - pCharNames[cur_code] = pName->GetString(); - cur_code++; - } else { - cur_code = pElement->GetInteger(); - } - } -} - -FX_BOOL CPDF_Font::IsStandardFont() const { - if (!IsType1Font()) - return FALSE; - if (m_pFontFile) - return FALSE; - if (AsType1Font()->GetBase14Font() < 0) - return FALSE; - return TRUE; -} - -CPDF_SimpleFont::CPDF_SimpleFont() - : m_pCharNames(nullptr), m_BaseEncoding(PDFFONT_ENCODING_BUILTIN) { - FXSYS_memset(m_CharWidth, 0xff, sizeof m_CharWidth); - FXSYS_memset(m_GlyphIndex, 0xff, sizeof m_GlyphIndex); - FXSYS_memset(m_ExtGID, 0xff, sizeof m_ExtGID); -} - -CPDF_SimpleFont::~CPDF_SimpleFont() { - delete[] m_pCharNames; -} - -int CPDF_SimpleFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) { - if (pVertGlyph) { - *pVertGlyph = FALSE; - } - if (charcode > 0xff) { - return -1; - } - int index = m_GlyphIndex[(uint8_t)charcode]; - if (index == 0xffff) { - return -1; - } - return index; -} - -void CPDF_SimpleFont::LoadCharMetrics(int charcode) { - if (!m_Font.GetFace()) - return; - - if (charcode < 0 || charcode > 0xff) { - return; - } - int glyph_index = m_GlyphIndex[charcode]; - if (glyph_index == 0xffff) { - if (!m_pFontFile && charcode != 32) { - LoadCharMetrics(32); - m_CharBBox[charcode] = m_CharBBox[32]; - if (m_bUseFontWidth) { - m_CharWidth[charcode] = m_CharWidth[32]; - } - } - return; - } - FXFT_Face face = m_Font.GetFace(); - int err = FXFT_Load_Glyph( - face, glyph_index, - FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); - if (err) { - return; - } - m_CharBBox[charcode] = FX_SMALL_RECT( - TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face), - TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face), - TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) + FXFT_Get_Glyph_Width(face), - face), - TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) - FXFT_Get_Glyph_Height(face), - face)); - - if (m_bUseFontWidth) { - int TT_Width = TT2PDF(FXFT_Get_Glyph_HoriAdvance(face), face); - if (m_CharWidth[charcode] == 0xffff) { - m_CharWidth[charcode] = TT_Width; - } else if (TT_Width && !IsEmbedded()) { - m_CharBBox[charcode].right = - m_CharBBox[charcode].right * m_CharWidth[charcode] / TT_Width; - m_CharBBox[charcode].left = - m_CharBBox[charcode].left * m_CharWidth[charcode] / TT_Width; - } - } -} - -int CPDF_SimpleFont::GetCharWidthF(FX_DWORD charcode, int level) { - if (charcode > 0xff) { - charcode = 0; - } - if (m_CharWidth[charcode] == 0xffff) { - LoadCharMetrics(charcode); - if (m_CharWidth[charcode] == 0xffff) { - m_CharWidth[charcode] = 0; - } - } - return (int16_t)m_CharWidth[charcode]; -} - -FX_RECT CPDF_SimpleFont::GetCharBBox(FX_DWORD charcode, int level) { - if (charcode > 0xff) - charcode = 0; - - if (m_CharBBox[charcode].left == FX_SMALL_RECT::kInvalid) - LoadCharMetrics(charcode); - - return FX_RECT(m_CharBBox[charcode]); -} - -const FX_CHAR* GetAdobeCharName(int iBaseEncoding, - const CFX_ByteString* pCharNames, - int charcode) { - ASSERT(charcode >= 0 && charcode < 256); - if (charcode < 0 || charcode >= 256) { - return NULL; - } - const FX_CHAR* name = NULL; - if (pCharNames) { - name = pCharNames[charcode]; - } - if ((!name || name[0] == 0) && iBaseEncoding) { - name = PDF_CharNameFromPredefinedCharSet(iBaseEncoding, charcode); - } - return name && name[0] ? name : nullptr; -} - -FX_BOOL CPDF_SimpleFont::LoadCommon() { - CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor"); - if (pFontDesc) { - LoadFontDescriptor(pFontDesc); - } - CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths"); - int width_start = 0, width_end = -1; - m_bUseFontWidth = TRUE; - if (pWidthArray) { - m_bUseFontWidth = FALSE; - if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) { - int MissingWidth = pFontDesc->GetIntegerBy("MissingWidth"); - for (int i = 0; i < 256; i++) { - m_CharWidth[i] = MissingWidth; - } - } - width_start = m_pFontDict->GetIntegerBy("FirstChar", 0); - width_end = m_pFontDict->GetIntegerBy("LastChar", 0); - if (width_start >= 0 && width_start <= 255) { - if (width_end <= 0 || - width_end >= width_start + (int)pWidthArray->GetCount()) { - width_end = width_start + pWidthArray->GetCount() - 1; - } - if (width_end > 255) { - width_end = 255; - } - for (int i = width_start; i <= width_end; i++) { - m_CharWidth[i] = pWidthArray->GetIntegerAt(i - width_start); - } - } - } - if (m_pFontFile) { - if (m_BaseFont.GetLength() > 8 && m_BaseFont[7] == '+') { - m_BaseFont = m_BaseFont.Mid(8); - } - } else { - LoadSubstFont(); - } - if (!(m_Flags & PDFFONT_SYMBOLIC)) { - m_BaseEncoding = PDFFONT_ENCODING_STANDARD; - } - CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); - LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, m_pFontFile != NULL, - m_Font.IsTTFont()); - LoadGlyphMap(); - delete[] m_pCharNames; - m_pCharNames = NULL; - if (!m_Font.GetFace()) - return TRUE; - - if (m_Flags & PDFFONT_ALLCAP) { - unsigned char lowercases[] = {'a', 'z', 0xe0, 0xf6, 0xf8, 0xfd}; - for (size_t range = 0; range < sizeof lowercases / 2; range++) { - for (int i = lowercases[range * 2]; i <= lowercases[range * 2 + 1]; i++) { - if (m_GlyphIndex[i] != 0xffff && m_pFontFile) { - continue; - } - m_GlyphIndex[i] = m_GlyphIndex[i - 32]; - if (m_CharWidth[i - 32]) { - m_CharWidth[i] = m_CharWidth[i - 32]; - m_CharBBox[i] = m_CharBBox[i - 32]; - } - } - } - } - CheckFontMetrics(); - return TRUE; -} - -void CPDF_SimpleFont::LoadSubstFont() { - if (!m_bUseFontWidth && !(m_Flags & PDFFONT_FIXEDPITCH)) { - int width = 0, i; - for (i = 0; i < 256; i++) { - if (m_CharWidth[i] == 0 || m_CharWidth[i] == 0xffff) { - continue; - } - if (width == 0) { - width = m_CharWidth[i]; - } else if (width != m_CharWidth[i]) { - break; - } - } - if (i == 256 && width) { - m_Flags |= PDFFONT_FIXEDPITCH; - } - } - int weight = m_StemV < 140 ? m_StemV * 5 : (m_StemV * 4 + 140); - m_Font.LoadSubst(m_BaseFont, IsTrueTypeFont(), m_Flags, weight, m_ItalicAngle, - 0); - if (m_Font.GetSubstFont()->m_SubstFlags & FXFONT_SUBST_NONSYMBOL) { - } -} - -FX_BOOL CPDF_SimpleFont::IsUnicodeCompatible() const { - return m_BaseEncoding != PDFFONT_ENCODING_BUILTIN && - m_BaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL && - m_BaseEncoding != PDFFONT_ENCODING_ZAPFDINGBATS; -} - -CFX_WideString CPDF_SimpleFont::UnicodeFromCharCode(FX_DWORD charcode) const { - CFX_WideString unicode = CPDF_Font::UnicodeFromCharCode(charcode); - if (!unicode.IsEmpty()) - return unicode; - FX_WCHAR ret = m_Encoding.UnicodeFromCharCode((uint8_t)charcode); - if (ret == 0) - return CFX_WideString(); - return ret; -} - -FX_DWORD CPDF_SimpleFont::CharCodeFromUnicode(FX_WCHAR unicode) const { - FX_DWORD ret = CPDF_Font::CharCodeFromUnicode(unicode); - if (ret) - return ret; - return m_Encoding.CharCodeFromUnicode(unicode); -} - -CPDF_Type1Font::CPDF_Type1Font() : m_Base14Font(-1) {} - -bool CPDF_Type1Font::IsType1Font() const { - return true; -} - -const CPDF_Type1Font* CPDF_Type1Font::AsType1Font() const { - return this; -} - -CPDF_Type1Font* CPDF_Type1Font::AsType1Font() { - return this; -} - -FX_BOOL CPDF_Type1Font::Load() { - m_Base14Font = PDF_GetStandardFontName(&m_BaseFont); - if (m_Base14Font >= 0) { - CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor"); - if (pFontDesc && pFontDesc->KeyExist("Flags")) - m_Flags = pFontDesc->GetIntegerBy("Flags"); - else - m_Flags = m_Base14Font >= 12 ? PDFFONT_SYMBOLIC : PDFFONT_NONSYMBOLIC; - - if (m_Base14Font < 4) { - for (int i = 0; i < 256; i++) - m_CharWidth[i] = 600; - } - if (m_Base14Font == 12) - m_BaseEncoding = PDFFONT_ENCODING_ADOBE_SYMBOL; - else if (m_Base14Font == 13) - m_BaseEncoding = PDFFONT_ENCODING_ZAPFDINGBATS; - else if (m_Flags & PDFFONT_NONSYMBOLIC) - m_BaseEncoding = PDFFONT_ENCODING_STANDARD; - } - return LoadCommon(); -} - -int CPDF_Type1Font::GlyphFromCharCodeExt(FX_DWORD charcode) { - if (charcode > 0xff) { - return -1; - } - int index = m_ExtGID[(uint8_t)charcode]; - if (index == 0xffff) { - return -1; - } - return index; -} - -void CPDF_Type1Font::LoadGlyphMap() { - if (!m_Font.GetFace()) - return; - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - FX_BOOL bCoreText = TRUE; - CQuartz2D& quartz2d = - ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; - if (!m_Font.GetPlatformFont()) { - if (m_Font.GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) { - bCoreText = FALSE; - } - m_Font.SetPlatformFont( - quartz2d.CreateFont(m_Font.GetFontData(), m_Font.GetSize())); - if (!m_Font.GetPlatformFont()) { - bCoreText = FALSE; - } - } -#endif - if (!IsEmbedded() && (m_Base14Font < 12) && m_Font.IsTTFont()) { - if (FT_UseTTCharmap(m_Font.GetFace(), 3, 0)) { - FX_BOOL bGotOne = FALSE; - for (int charcode = 0; charcode < 256; charcode++) { - const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2}; - for (int j = 0; j < 4; j++) { - FX_WORD unicode = prefix[j] * 256 + charcode; - m_GlyphIndex[charcode] = - FXFT_Get_Char_Index(m_Font.GetFace(), unicode); -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - FX_CHAR name_glyph[256]; - FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], - name_glyph, 256); - name_glyph[255] = 0; - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, - kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } -#endif - if (m_GlyphIndex[charcode]) { - bGotOne = TRUE; - break; - } - } - } - if (bGotOne) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (!bCoreText) { - FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); - } -#endif - return; - } - } - FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE); - if (m_BaseEncoding == 0) { - m_BaseEncoding = PDFFONT_ENCODING_STANDARD; - } - for (int charcode = 0; charcode < 256; charcode++) { - const FX_CHAR* name = - GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); - if (!name) { - continue; - } - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - FX_CHAR name_glyph[256]; - FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], name_glyph, - 256); - name_glyph[255] = 0; - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, - kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } -#endif - if (m_GlyphIndex[charcode] == 0 && FXSYS_strcmp(name, ".notdef") == 0) { - m_Encoding.m_Unicodes[charcode] = 0x20; - m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 0x20); -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - FX_CHAR name_glyph[256]; - FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], - name_glyph, 256); - name_glyph[255] = 0; - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, - kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } -#endif - } - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (!bCoreText) { - FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); - } -#endif - return; - } - FT_UseType1Charmap(m_Font.GetFace()); -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (bCoreText) { - if (m_Flags & PDFFONT_SYMBOLIC) { - for (int charcode = 0; charcode < 256; charcode++) { - const FX_CHAR* name = - GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); - if (name) { - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - m_GlyphIndex[charcode] = - FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name, kCFStringEncodingASCII, - kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } - } else { - m_GlyphIndex[charcode] = - FXFT_Get_Char_Index(m_Font.GetFace(), charcode); - FX_WCHAR unicode = 0; - if (m_GlyphIndex[charcode]) { - unicode = - FT_UnicodeFromCharCode(PDFFONT_ENCODING_STANDARD, charcode); - } - FX_CHAR name_glyph[256]; - FXSYS_memset(name_glyph, 0, sizeof(name_glyph)); - FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], - name_glyph, 256); - name_glyph[255] = 0; - if (unicode == 0 && name_glyph[0] != 0) { - unicode = PDF_UnicodeFromAdobeName(name_glyph); - } - m_Encoding.m_Unicodes[charcode] = unicode; - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, - kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } - } - } - return; - } - FX_BOOL bUnicode = FALSE; - if (0 == FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE)) { - bUnicode = TRUE; - } - for (int charcode = 0; charcode < 256; charcode++) { - const FX_CHAR* name = - GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); - if (!name) { - continue; - } - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - const FX_CHAR* pStrUnicode = GlyphNameRemap(name); - if (pStrUnicode && - 0 == FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name)) { - name = pStrUnicode; - } - m_GlyphIndex[charcode] = - FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name, kCFStringEncodingASCII, kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } - if (m_GlyphIndex[charcode] == 0) { - if (FXSYS_strcmp(name, ".notdef") != 0 && - FXSYS_strcmp(name, "space") != 0) { - m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), - bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode); - FX_CHAR name_glyph[256]; - FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], - name_glyph, 256); - name_glyph[255] = 0; - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, - kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } - } else { - m_Encoding.m_Unicodes[charcode] = 0x20; - m_GlyphIndex[charcode] = - bUnicode ? FXFT_Get_Char_Index(m_Font.GetFace(), 0x20) : 0xffff; - FX_CHAR name_glyph[256]; - FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], - name_glyph, 256); - name_glyph[255] = 0; - CFStringRef name_ct = CFStringCreateWithCStringNoCopy( - kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII, - kCFAllocatorNull); - m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName( - (CGFontRef)m_Font.GetPlatformFont(), name_ct); - if (name_ct) { - CFRelease(name_ct); - } - } - } - } - return; - } -#endif - if (m_Flags & PDFFONT_SYMBOLIC) { - for (int charcode = 0; charcode < 256; charcode++) { - const FX_CHAR* name = - GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); - if (name) { - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - m_GlyphIndex[charcode] = - FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); - } else { - m_GlyphIndex[charcode] = - FXFT_Get_Char_Index(m_Font.GetFace(), charcode); - if (m_GlyphIndex[charcode]) { - FX_WCHAR unicode = - FT_UnicodeFromCharCode(PDFFONT_ENCODING_STANDARD, charcode); - if (unicode == 0) { - FX_CHAR name_glyph[256]; - FXSYS_memset(name_glyph, 0, sizeof(name_glyph)); - FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], - name_glyph, 256); - name_glyph[255] = 0; - if (name_glyph[0] != 0) { - unicode = PDF_UnicodeFromAdobeName(name_glyph); - } - } - m_Encoding.m_Unicodes[charcode] = unicode; - } - } - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (!bCoreText) { - FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); - } -#endif - return; - } - FX_BOOL bUnicode = FALSE; - if (0 == FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE)) { - bUnicode = TRUE; - } - for (int charcode = 0; charcode < 256; charcode++) { - const FX_CHAR* name = - GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); - if (!name) { - continue; - } - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); - if (m_GlyphIndex[charcode] == 0) { - if (FXSYS_strcmp(name, ".notdef") != 0 && - FXSYS_strcmp(name, "space") != 0) { - m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), - bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode); - } else { - m_Encoding.m_Unicodes[charcode] = 0x20; - m_GlyphIndex[charcode] = 0xffff; - } - } - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (!bCoreText) { - FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256); - } -#endif -} - -CPDF_FontEncoding::CPDF_FontEncoding() { - FXSYS_memset(m_Unicodes, 0, sizeof(m_Unicodes)); -} - -int CPDF_FontEncoding::CharCodeFromUnicode(FX_WCHAR unicode) const { - for (int i = 0; i < 256; i++) - if (m_Unicodes[i] == unicode) { - return i; - } - return -1; -} - -CPDF_FontEncoding::CPDF_FontEncoding(int PredefinedEncoding) { - const FX_WORD* pSrc = PDF_UnicodesForPredefinedCharSet(PredefinedEncoding); - if (!pSrc) { - FXSYS_memset(m_Unicodes, 0, sizeof(m_Unicodes)); - } else { - for (int i = 0; i < 256; i++) - m_Unicodes[i] = pSrc[i]; - } -} - -FX_BOOL CPDF_FontEncoding::IsIdentical(CPDF_FontEncoding* pAnother) const { - return FXSYS_memcmp(m_Unicodes, pAnother->m_Unicodes, sizeof(m_Unicodes)) == - 0; -} - -CPDF_Object* CPDF_FontEncoding::Realize() { - int predefined = 0; - for (int cs = PDFFONT_ENCODING_WINANSI; cs < PDFFONT_ENCODING_ZAPFDINGBATS; - cs++) { - const FX_WORD* pSrc = PDF_UnicodesForPredefinedCharSet(cs); - FX_BOOL match = TRUE; - for (int i = 0; i < 256; ++i) { - if (m_Unicodes[i] != pSrc[i]) { - match = FALSE; - break; - } - } - if (match) { - predefined = cs; - break; - } - } - if (predefined) { - if (predefined == PDFFONT_ENCODING_WINANSI) { - return new CPDF_Name("WinAnsiEncoding"); - } - if (predefined == PDFFONT_ENCODING_MACROMAN) { - return new CPDF_Name("MacRomanEncoding"); - } - if (predefined == PDFFONT_ENCODING_MACEXPERT) { - return new CPDF_Name("MacExpertEncoding"); - } - return NULL; - } - const FX_WORD* pStandard = - PDF_UnicodesForPredefinedCharSet(PDFFONT_ENCODING_WINANSI); - CPDF_Array* pDiff = new CPDF_Array; - for (int i = 0; i < 256; i++) { - if (pStandard[i] == m_Unicodes[i]) { - continue; - } - pDiff->Add(new CPDF_Number(i)); - pDiff->Add(new CPDF_Name(PDF_AdobeNameFromUnicode(m_Unicodes[i]))); - } - - CPDF_Dictionary* pDict = new CPDF_Dictionary; - pDict->SetAtName("BaseEncoding", "WinAnsiEncoding"); - pDict->SetAt("Differences", pDiff); - return pDict; -} - -CPDF_TrueTypeFont::CPDF_TrueTypeFont() {} - -bool CPDF_TrueTypeFont::IsTrueTypeFont() const { - return true; -} - -const CPDF_TrueTypeFont* CPDF_TrueTypeFont::AsTrueTypeFont() const { - return this; -} - -CPDF_TrueTypeFont* CPDF_TrueTypeFont::AsTrueTypeFont() { - return this; -} - -FX_BOOL CPDF_TrueTypeFont::Load() { - return LoadCommon(); -} - -void CPDF_TrueTypeFont::LoadGlyphMap() { - if (!m_Font.GetFace()) - return; - - int baseEncoding = m_BaseEncoding; - if (m_pFontFile && m_Font.GetFace()->num_charmaps > 0 && - (baseEncoding == PDFFONT_ENCODING_MACROMAN || - baseEncoding == PDFFONT_ENCODING_WINANSI) && - (m_Flags & PDFFONT_SYMBOLIC)) { - FX_BOOL bSupportWin = FALSE; - FX_BOOL bSupportMac = FALSE; - for (int i = 0; i < FXFT_Get_Face_CharmapCount(m_Font.GetFace()); i++) { - int platform_id = FXFT_Get_Charmap_PlatformID( - FXFT_Get_Face_Charmaps(m_Font.GetFace())[i]); - if (platform_id == 0 || platform_id == 3) { - bSupportWin = TRUE; - } else if (platform_id == 0 || platform_id == 1) { - bSupportMac = TRUE; - } - } - if (baseEncoding == PDFFONT_ENCODING_WINANSI && !bSupportWin) { - baseEncoding = - bSupportMac ? PDFFONT_ENCODING_MACROMAN : PDFFONT_ENCODING_BUILTIN; - } else if (baseEncoding == PDFFONT_ENCODING_MACROMAN && !bSupportMac) { - baseEncoding = - bSupportWin ? PDFFONT_ENCODING_WINANSI : PDFFONT_ENCODING_BUILTIN; - } - } - if (((baseEncoding == PDFFONT_ENCODING_MACROMAN || - baseEncoding == PDFFONT_ENCODING_WINANSI) && - !m_pCharNames) || - (m_Flags & PDFFONT_NONSYMBOLIC)) { - if (!FXFT_Has_Glyph_Names(m_Font.GetFace()) && - (!m_Font.GetFace()->num_charmaps || !m_Font.GetFace()->charmaps)) { - int nStartChar = m_pFontDict->GetIntegerBy("FirstChar"); - if (nStartChar < 0 || nStartChar > 255) - return; - - int charcode = 0; - for (; charcode < nStartChar; charcode++) { - m_GlyphIndex[charcode] = 0; - } - FX_WORD nGlyph = charcode - nStartChar + 3; - for (; charcode < 256; charcode++, nGlyph++) { - m_GlyphIndex[charcode] = nGlyph; - } - return; - } - FX_BOOL bMSUnicode = FT_UseTTCharmap(m_Font.GetFace(), 3, 1); - FX_BOOL bMacRoman = FALSE, bMSSymbol = FALSE; - if (!bMSUnicode) { - if (m_Flags & PDFFONT_NONSYMBOLIC) { - bMacRoman = FT_UseTTCharmap(m_Font.GetFace(), 1, 0); - bMSSymbol = !bMacRoman && FT_UseTTCharmap(m_Font.GetFace(), 3, 0); - } else { - bMSSymbol = FT_UseTTCharmap(m_Font.GetFace(), 3, 0); - bMacRoman = !bMSSymbol && FT_UseTTCharmap(m_Font.GetFace(), 1, 0); - } - } - FX_BOOL bToUnicode = m_pFontDict->KeyExist("ToUnicode"); - for (int charcode = 0; charcode < 256; charcode++) { - const FX_CHAR* name = - GetAdobeCharName(baseEncoding, m_pCharNames, charcode); - if (!name) { - m_GlyphIndex[charcode] = - m_pFontFile ? FXFT_Get_Char_Index(m_Font.GetFace(), charcode) : -1; - continue; - } - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - if (bMSSymbol) { - const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2}; - for (int j = 0; j < 4; j++) { - FX_WORD unicode = prefix[j] * 256 + charcode; - m_GlyphIndex[charcode] = - FXFT_Get_Char_Index(m_Font.GetFace(), unicode); - if (m_GlyphIndex[charcode]) { - break; - } - } - } else if (m_Encoding.m_Unicodes[charcode]) { - if (bMSUnicode) { - m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); - } else if (bMacRoman) { - FX_DWORD maccode = FT_CharCodeFromUnicode( - FXFT_ENCODING_APPLE_ROMAN, m_Encoding.m_Unicodes[charcode]); - if (!maccode) { - m_GlyphIndex[charcode] = - FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); - } else { - m_GlyphIndex[charcode] = - FXFT_Get_Char_Index(m_Font.GetFace(), maccode); - } - } - } - if ((m_GlyphIndex[charcode] == 0 || m_GlyphIndex[charcode] == 0xffff) && - name) { - if (name[0] == '.' && FXSYS_strcmp(name, ".notdef") == 0) { - m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 32); - } else { - m_GlyphIndex[charcode] = - FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name); - if (m_GlyphIndex[charcode] == 0) { - if (bToUnicode) { - CFX_WideString wsUnicode = UnicodeFromCharCode(charcode); - if (!wsUnicode.IsEmpty()) { - m_GlyphIndex[charcode] = - FXFT_Get_Char_Index(m_Font.GetFace(), wsUnicode[0]); - m_Encoding.m_Unicodes[charcode] = wsUnicode[0]; - } - } - if (m_GlyphIndex[charcode] == 0) { - m_GlyphIndex[charcode] = - FXFT_Get_Char_Index(m_Font.GetFace(), charcode); - } - } - } - } - } - return; - } - if (FT_UseTTCharmap(m_Font.GetFace(), 3, 0)) { - const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2}; - FX_BOOL bGotOne = FALSE; - for (int charcode = 0; charcode < 256; charcode++) { - for (int j = 0; j < 4; j++) { - FX_WORD unicode = prefix[j] * 256 + charcode; - m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), unicode); - if (m_GlyphIndex[charcode]) { - bGotOne = TRUE; - break; - } - } - } - if (bGotOne) { - if (baseEncoding != PDFFONT_ENCODING_BUILTIN) { - for (int charcode = 0; charcode < 256; charcode++) { - const FX_CHAR* name = - GetAdobeCharName(baseEncoding, m_pCharNames, charcode); - if (!name) { - continue; - } - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - } - } else if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) { - for (int charcode = 0; charcode < 256; charcode++) { - m_Encoding.m_Unicodes[charcode] = - FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode); - } - } - return; - } - } - if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) { - FX_BOOL bGotOne = FALSE; - for (int charcode = 0; charcode < 256; charcode++) { - m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), charcode); - m_Encoding.m_Unicodes[charcode] = - FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode); - if (m_GlyphIndex[charcode]) { - bGotOne = TRUE; - } - } - if (m_pFontFile || bGotOne) { - return; - } - } - if (FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE) == 0) { - FX_BOOL bGotOne = FALSE; - const FX_WORD* pUnicodes = PDF_UnicodesForPredefinedCharSet(baseEncoding); - for (int charcode = 0; charcode < 256; charcode++) { - if (m_pFontFile) { - m_Encoding.m_Unicodes[charcode] = charcode; - } else { - const FX_CHAR* name = GetAdobeCharName(0, m_pCharNames, charcode); - if (name) { - m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name); - } else if (pUnicodes) { - m_Encoding.m_Unicodes[charcode] = pUnicodes[charcode]; - } - } - m_GlyphIndex[charcode] = FXFT_Get_Char_Index( - m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]); - if (m_GlyphIndex[charcode]) { - bGotOne = TRUE; - } - } - if (bGotOne) { - return; - } - } - for (int charcode = 0; charcode < 256; charcode++) { - m_GlyphIndex[charcode] = charcode; - } -} - -CPDF_Type3Font::CPDF_Type3Font() - : m_pCharProcs(nullptr), - m_pPageResources(nullptr), - m_pFontResources(nullptr) { - FXSYS_memset(m_CharWidthL, 0, sizeof(m_CharWidthL)); -} - -CPDF_Type3Font::~CPDF_Type3Font() { - for (auto it : m_CacheMap) - delete it.second; -} - -bool CPDF_Type3Font::IsType3Font() const { - return true; -} - -const CPDF_Type3Font* CPDF_Type3Font::AsType3Font() const { - return this; -} - -CPDF_Type3Font* CPDF_Type3Font::AsType3Font() { - return this; -} - -FX_BOOL CPDF_Type3Font::Load() { - m_pFontResources = m_pFontDict->GetDictBy("Resources"); - CPDF_Array* pMatrix = m_pFontDict->GetArrayBy("FontMatrix"); - FX_FLOAT xscale = 1.0f, yscale = 1.0f; - if (pMatrix) { - m_FontMatrix = pMatrix->GetMatrix(); - xscale = m_FontMatrix.a; - yscale = m_FontMatrix.d; - } - CPDF_Array* pBBox = m_pFontDict->GetArrayBy("FontBBox"); - if (pBBox) { - m_FontBBox.left = (int32_t)(pBBox->GetNumberAt(0) * xscale * 1000); - m_FontBBox.bottom = (int32_t)(pBBox->GetNumberAt(1) * yscale * 1000); - m_FontBBox.right = (int32_t)(pBBox->GetNumberAt(2) * xscale * 1000); - m_FontBBox.top = (int32_t)(pBBox->GetNumberAt(3) * yscale * 1000); - } - int StartChar = m_pFontDict->GetIntegerBy("FirstChar"); - CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths"); - if (pWidthArray && (StartChar >= 0 && StartChar < 256)) { - FX_DWORD count = pWidthArray->GetCount(); - if (count > 256) { - count = 256; - } - if (StartChar + count > 256) { - count = 256 - StartChar; - } - for (FX_DWORD i = 0; i < count; i++) { - m_CharWidthL[StartChar + i] = - FXSYS_round(pWidthArray->GetNumberAt(i) * xscale * 1000); - } - } - m_pCharProcs = m_pFontDict->GetDictBy("CharProcs"); - CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); - if (pEncoding) { - LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, FALSE, FALSE); - if (m_pCharNames) { - for (int i = 0; i < 256; i++) { - m_Encoding.m_Unicodes[i] = PDF_UnicodeFromAdobeName(m_pCharNames[i]); - if (m_Encoding.m_Unicodes[i] == 0) { - m_Encoding.m_Unicodes[i] = i; - } - } - } - } - return TRUE; -} - -void CPDF_Type3Font::CheckType3FontMetrics() { - CheckFontMetrics(); -} - -CPDF_Type3Char* CPDF_Type3Font::LoadChar(FX_DWORD charcode, int level) { - if (level >= _FPDF_MAX_TYPE3_FORM_LEVEL_) - return nullptr; - - auto it = m_CacheMap.find(charcode); - if (it != m_CacheMap.end()) - return it->second; - - const FX_CHAR* name = - GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode); - if (!name) - return nullptr; - - CPDF_Stream* pStream = - ToStream(m_pCharProcs ? m_pCharProcs->GetElementValue(name) : nullptr); - if (!pStream) - return nullptr; - - std::unique_ptr pNewChar(new CPDF_Type3Char(new CPDF_Form( - m_pDocument, m_pFontResources ? m_pFontResources : m_pPageResources, - pStream, nullptr))); - - // This can trigger recursion into this method. The content of |m_CacheMap| - // can change as a result. Thus after it returns, check the cache again for - // a cache hit. - pNewChar->m_pForm->ParseContent(nullptr, nullptr, pNewChar.get(), nullptr, - level + 1); - it = m_CacheMap.find(charcode); - if (it != m_CacheMap.end()) - return it->second; - - FX_FLOAT scale = m_FontMatrix.GetXUnit(); - pNewChar->m_Width = (int32_t)(pNewChar->m_Width * scale + 0.5f); - FX_RECT& rcBBox = pNewChar->m_BBox; - CFX_FloatRect char_rect( - (FX_FLOAT)rcBBox.left / 1000.0f, (FX_FLOAT)rcBBox.bottom / 1000.0f, - (FX_FLOAT)rcBBox.right / 1000.0f, (FX_FLOAT)rcBBox.top / 1000.0f); - if (rcBBox.right <= rcBBox.left || rcBBox.bottom >= rcBBox.top) - char_rect = pNewChar->m_pForm->CalcBoundingBox(); - - char_rect.Transform(&m_FontMatrix); - rcBBox.left = FXSYS_round(char_rect.left * 1000); - rcBBox.right = FXSYS_round(char_rect.right * 1000); - rcBBox.top = FXSYS_round(char_rect.top * 1000); - rcBBox.bottom = FXSYS_round(char_rect.bottom * 1000); - - ASSERT(!pdfium::ContainsKey(m_CacheMap, charcode)); - CPDF_Type3Char* pCachedChar = pNewChar.release(); - m_CacheMap[charcode] = pCachedChar; - if (pCachedChar->m_pForm->GetPageObjectList()->empty()) { - delete pCachedChar->m_pForm; - pCachedChar->m_pForm = nullptr; - } - return pCachedChar; -} - -int CPDF_Type3Font::GetCharWidthF(FX_DWORD charcode, int level) { - if (charcode >= FX_ArraySize(m_CharWidthL)) - charcode = 0; - - if (m_CharWidthL[charcode]) - return m_CharWidthL[charcode]; - - const CPDF_Type3Char* pChar = LoadChar(charcode, level); - return pChar ? pChar->m_Width : 0; -} - -FX_RECT CPDF_Type3Font::GetCharBBox(FX_DWORD charcode, int level) { - const CPDF_Type3Char* pChar = LoadChar(charcode, level); - return pChar ? pChar->m_BBox : FX_RECT(); -} - -CPDF_Type3Char::CPDF_Type3Char(CPDF_Form* pForm) - : m_pForm(pForm), m_pBitmap(nullptr), m_bColored(FALSE) {} - -CPDF_Type3Char::~CPDF_Type3Char() { - delete m_pForm; - delete m_pBitmap; -} diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp deleted file mode 100644 index a4167914d1..0000000000 --- a/core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp +++ /dev/null @@ -1,1782 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxge/fx_freetype.h" - -static const struct _UnicodeAlt { - FX_WORD m_Unicode; - const FX_CHAR* m_Alter; -} UnicodeAlts[] = { - {0x00a0, " "}, {0x00a1, "!"}, {0x00a2, "c"}, {0x00a3, "P"}, - {0x00a4, "o"}, {0x00a5, "Y"}, {0x00a6, "|"}, {0x00a7, "S"}, - {0x00a9, "(C)"}, {0x00aa, "a"}, {0x00ab, "<<"}, {0x00ac, "-|"}, - {0x00ae, "(R)"}, {0x00af, "-"}, {0x00b0, "o"}, {0x00b1, "+/-"}, - {0x00b2, "^2"}, {0x00b3, "^3"}, {0x00b4, "'"}, {0x00b5, "u"}, - {0x00b6, "P"}, {0x00b7, "."}, {0x00b9, "^1"}, {0x00ba, "o"}, - {0x00bb, ">>"}, {0x00bc, "1/4"}, {0x00bd, "1/2"}, {0x00be, "3/4"}, - {0x00bf, "?"}, {0x00c0, "A"}, {0x00c1, "A"}, {0x00c2, "A"}, - {0x00c3, "A"}, {0x00c4, "A"}, {0x00c5, "A"}, {0x00c6, "AE"}, - {0x00c7, "C"}, {0x00c8, "E"}, {0x00c9, "E"}, {0x00ca, "E"}, - {0x00cb, "E"}, {0x00cc, "I"}, {0x00cd, "I"}, {0x00ce, "I"}, - {0x00cf, "I"}, {0x00d1, "N"}, {0x00d2, "O"}, {0x00d3, "O"}, - {0x00d4, "O"}, {0x00d5, "O"}, {0x00d6, "O"}, {0x00d7, "x"}, - {0x00d8, "O"}, {0x00d9, "U"}, {0x00da, "U"}, {0x00db, "U"}, - {0x00dc, "U"}, {0x00dd, "Y"}, {0x00df, "S"}, {0x00e0, "a"}, - {0x00e1, "a"}, {0x00e2, "a"}, {0x00e3, "a"}, {0x00e4, "a"}, - {0x00e5, "a"}, {0x00e6, "ae"}, {0x00e7, "c"}, {0x00e8, "e"}, - {0x00e9, "e"}, {0x00ea, "e"}, {0x00eb, "e"}, {0x00ec, "i"}, - {0x00ed, "i"}, {0x00ee, "i"}, {0x00ef, "i"}, {0x00f1, "n"}, - {0x00f2, "o"}, {0x00f3, "o"}, {0x00f4, "o"}, {0x00f5, "o"}, - {0x00f6, "o"}, {0x00f7, "/"}, {0x00f8, "o"}, {0x00f9, "u"}, - {0x00fa, "u"}, {0x00fb, "u"}, {0x00fc, "u"}, {0x00fd, "y"}, - {0x00ff, "y"}, {0x02b0, "h"}, {0x02b2, "j"}, {0x02b3, "r"}, - {0x02b7, "w"}, {0x02b8, "y"}, {0x02b9, "'"}, {0x02ba, "\""}, - {0x02bb, "'"}, {0x02bc, "'"}, {0x02bd, "'"}, {0x02be, "'"}, - {0x02bf, "'"}, {0x02c2, "<"}, {0x02c3, ">"}, {0x02c4, "^"}, - {0x02c5, "v"}, {0x02c6, "^"}, {0x02c7, "v"}, {0x02c8, "'"}, - {0x02c9, "-"}, {0x02ca, "'"}, {0x02cb, "'"}, {0x02cc, "."}, - {0x02cd, "_"}, {0x2010, "-"}, {0x2012, "-"}, {0x2013, "-"}, - {0x2014, "--"}, {0x2015, "--"}, {0x2016, "|"}, {0x2017, "_"}, - {0x2018, "'"}, {0x2019, "'"}, {0x201a, ","}, {0x201b, "'"}, - {0x201c, "\""}, {0x201d, "\""}, {0x201e, ","}, {0x201f, "'"}, - {0x2020, "+"}, {0x2021, "+"}, {0x2022, "*"}, {0x2023, ">"}, - {0x2024, "."}, {0x2025, ".."}, {0x2027, "."}, {0x2032, "'"}, - {0x2033, "\""}, {0x2035, "'"}, {0x2036, "\""}, {0x2038, "^"}, - {0x2039, "<"}, {0x203a, ">"}, {0x203b, "*"}, {0x203c, "!!"}, - {0x203d, "?!"}, {0x203e, "-"}, {0x2044, "/"}, {0x2047, "??"}, - {0x2048, "?!"}, {0x2049, "!?"}, {0x204e, "*"}, {0x2052, "%"}, - {0x2122, "(TM)"}, {0x2212, "-"}, {0x2215, "/"}, {0x2216, "\\"}, - {0x2217, "*"}, {0x2218, "*"}, {0x2219, "*"}, {0x2223, "|"}, - {0x22c5, "."}, {0x266f, "#"}, {0XF6D9, "(C)"}, {0XF6DA, "(C)"}, - {0XF6DB, "(TM)"}, {0XF8E8, "(C)"}, {0xf8e9, "(C)"}, {0XF8EA, "(TM)"}, - {0xfb01, "fi"}, {0xfb02, "fl"}}; -const FX_CHAR* FCS_GetAltStr(FX_WCHAR unicode) { - int begin = 0; - int end = sizeof UnicodeAlts / sizeof(struct _UnicodeAlt) - 1; - while (begin <= end) { - int middle = (begin + end) / 2; - FX_WORD middlecode = UnicodeAlts[middle].m_Unicode; - if (middlecode > unicode) { - end = middle - 1; - } else if (middlecode < unicode) { - begin = middle + 1; - } else { - return UnicodeAlts[middle].m_Alter; - } - } - return NULL; -} -static const FX_WORD StandardEncoding[256] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023, - 0x0024, 0x0025, 0x0026, 0x2019, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, - 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, - 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, - 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x2018, 0x0061, 0x0062, - 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, - 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, - 0x007e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a1, - 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7, 0x00a4, 0x0027, 0x201c, - 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x0000, 0x2013, 0x2020, 0x2021, - 0x00b7, 0x0000, 0x00b6, 0x2022, 0x201a, 0x201e, 0x201d, 0x00bb, 0x2026, - 0x2030, 0x0000, 0x00bf, 0x0000, 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x00af, - 0x02d8, 0x02d9, 0x00a8, 0x0000, 0x02da, 0x00b8, 0x0000, 0x02dd, 0x02db, - 0x02c7, 0x2014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x00c6, 0x0000, 0x00aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0141, 0x00d8, - 0x0152, 0x00ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x0000, - 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, 0x0142, 0x00f8, 0x0153, 0x00df, - 0x0000, 0x0000, 0x0000, 0x0000}; -static const FX_WORD MacRomanEncoding[256] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023, - 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, - 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, - 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, - 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, - 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, - 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, - 0x007e, 0x0000, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, - 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, - 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2, - 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0, - 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122, - 0x00b4, 0x00a8, 0x0000, 0x00c6, 0x00d8, 0x0000, 0x00b1, 0x0000, 0x0000, - 0x00a5, 0x00b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00aa, 0x00ba, - 0x0000, 0x00e6, 0x00f8, 0x00bf, 0x00a3, 0x00ac, 0x0000, 0x0192, 0x0000, - 0x0000, 0x00ab, 0x00bb, 0x2026, 0x0020, 0x00c0, 0x00c3, 0x00d5, 0x0152, - 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0000, - 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x2021, - 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8, - 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0x0000, 0x00d2, 0x00da, - 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da, - 0x00b8, 0x02dd, 0x02db, 0x02c7}; -static const FX_WORD AdobeWinAnsiEncoding[256] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023, - 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, - 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, - 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, - 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, - 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, - 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, - 0x007e, 0x2022, 0x20ac, 0x2022, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, - 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x2022, 0x017d, 0x2022, - 0x2022, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, - 0x2122, 0x0161, 0x203a, 0x0153, 0x2022, 0x017e, 0x0178, 0x0020, 0x00a1, - 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, - 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, - 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, - 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, - 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, - 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, - 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, - 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, - 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, - 0x00fc, 0x00fd, 0x00fe, 0x00ff}; -static const FX_WORD MacExpertEncoding[256] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xf721, 0xf6f8, 0xf7a2, - 0xf724, 0xf6e4, 0xf726, 0xf7b4, 0x207d, 0x207e, 0x2025, 0x2024, 0x002c, - 0x002d, 0x002e, 0x2044, 0xf730, 0xf731, 0xf732, 0xf733, 0xf734, 0xf735, - 0xf736, 0xf737, 0xf738, 0xf739, 0x003a, 0x003b, 0x0000, 0xf6de, 0x0000, - 0xf73f, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7f0, 0x0000, 0x0000, 0x00bc, - 0x00bd, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, 0x2153, 0x2154, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfb01, 0xfb02, 0xfb03, - 0xfb04, 0x208d, 0x0000, 0x208e, 0xf6f6, 0xf6e5, 0xf760, 0xf761, 0xf762, - 0xf763, 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b, - 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, 0xf774, - 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0x20a1, 0xf6dc, 0xf6dd, - 0xf6fe, 0x0000, 0x0000, 0xf6e9, 0xf6e0, 0x0000, 0x0000, 0x0000, 0x0000, - 0xf7e1, 0xf7e0, 0xf7e2, 0xf7e4, 0xf7e3, 0xf7e5, 0xf7e7, 0xf7e9, 0xf7e8, - 0xf7ea, 0xf7eb, 0xf7ed, 0xf7ec, 0xf7ee, 0xf7ef, 0xf7f1, 0xf7f3, 0xf7f2, - 0xf7f4, 0xf7f6, 0xf7f5, 0xf7fa, 0xf7f9, 0xf7fb, 0xf7fc, 0x0000, 0x2078, - 0x2084, 0x2083, 0x2086, 0x2088, 0x2087, 0xf6fd, 0x0000, 0xf6df, 0x2082, - 0x0000, 0xf7a8, 0x0000, 0xf6f5, 0xf6fd, 0x2085, 0x0000, 0xf6e1, 0xf6e7, - 0xf7fd, 0x0000, 0xf6e3, 0x0000, 0x0000, 0xf7fe, 0x0000, 0x2089, 0x2080, - 0xf6ff, 0xf7e6, 0xf7f8, 0xf7bf, 0x2081, 0xf6e9, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0xf7b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0xf6fa, 0x2012, 0xf6e6, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7a1, 0x0000, - 0xf7ff, 0x0000, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077, - 0x2079, 0x2070, 0x0000, 0xf6ec, 0xf6f1, 0x0000, 0x0000, 0x0000, 0xf6ed, - 0xf6f2, 0xf6eb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6ee, 0xf6fb, - 0xf6f4, 0xf7af, 0xf6ea, 0x207f, 0xf6ef, 0xf6e2, 0xf6e8, 0xf6f7, 0xf6fc, - 0x0000, 0x0000, 0x0000, 0x0000}; -static const FX_WORD AdobeSymbolEncoding[256] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x2200, 0x0023, - 0x2203, 0x0025, 0x0026, 0x220B, 0x0028, 0x0029, 0x2217, 0x002B, 0x002C, - 0x2212, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, - 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, - 0x003F, 0x2245, 0x0391, 0x0392, 0x03A7, 0x0394, 0x0395, 0x03A6, 0x0393, - 0x0397, 0x0399, 0x03D1, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, 0x03A0, - 0x0398, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03C2, 0x03A9, 0x039E, 0x03A8, - 0x0396, 0x005B, 0x2234, 0x005D, 0x22A5, 0x005F, 0xF8E5, 0x03B1, 0x03B2, - 0x03C7, 0x03B4, 0x03B5, 0x03C6, 0x03B3, 0x03B7, 0x03B9, 0x03D5, 0x03BA, - 0x03BB, 0x03BC, 0x03BD, 0x03BF, 0x03C0, 0x03B8, 0x03C1, 0x03C3, 0x03C4, - 0x03C5, 0x03D6, 0x03C9, 0x03BE, 0x03C8, 0x03B6, 0x007B, 0x007C, 0x007D, - 0x223C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20AC, 0x03D2, - 0x2032, 0x2264, 0x2044, 0x221E, 0x0192, 0x2663, 0x2666, 0x2665, 0x2660, - 0x2194, 0x2190, 0x2191, 0x2192, 0x2193, 0x00B0, 0x00B1, 0x2033, 0x2265, - 0x00D7, 0x221D, 0x2202, 0x2022, 0x00F7, 0x2260, 0x2261, 0x2248, 0x2026, - 0xF8E6, 0xF8E7, 0x21B5, 0x2135, 0x2111, 0x211C, 0x2118, 0x2297, 0x2295, - 0x2205, 0x2229, 0x222A, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, - 0x2209, 0x2220, 0x2207, 0xF6DA, 0xF6D9, 0xF6DB, 0x220F, 0x221A, 0x22C5, - 0x00AC, 0x2227, 0x2228, 0x21D4, 0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x25CA, - 0x2329, 0xF8E8, 0xF8E9, 0xF8EA, 0x2211, 0xF8EB, 0xF8EC, 0xF8ED, 0xF8EE, - 0xF8EF, 0xF8F0, 0xF8F1, 0xF8F2, 0xF8F3, 0xF8F4, 0x0000, 0x232A, 0x222B, - 0x2320, 0xF8F5, 0x2321, 0xF8F6, 0xF8F7, 0xF8F8, 0xF8F9, 0xF8FA, 0xF8FB, - 0xF8FC, 0xF8FD, 0xF8FE, 0x0000, -}; -static const FX_WORD ZapfEncoding[256] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x2701, 0x2702, 0x2703, - 0x2704, 0x260E, 0x2706, 0x2707, 0x2708, 0x2709, 0x261B, 0x261E, 0x270C, - 0x270D, 0x270E, 0x270F, 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, - 0x2716, 0x2717, 0x2718, 0x2719, 0x271A, 0x271B, 0x271C, 0x271D, 0x271E, - 0x271F, 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, - 0x2605, 0x2729, 0x272A, 0x272B, 0x272C, 0x272D, 0x272E, 0x272F, 0x2730, - 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, - 0x273A, 0x273B, 0x273C, 0x273D, 0x273E, 0x273F, 0x2740, 0x2741, 0x2742, - 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274A, 0x274B, - 0x25CF, 0x274D, 0x25A0, 0x274F, 0x2750, 0x2751, 0x2752, 0x25B2, 0x25BC, - 0x25C6, 0x2756, 0x25D7, 0x2758, 0x2759, 0x275A, 0x275B, 0x275C, 0x275D, - 0x275E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2761, - 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2663, 0x2666, 0x2665, - 0x2660, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, - 0x2468, 0x2469, 0x2776, 0x2777, 0x2778, 0x2779, 0x277A, 0x277B, 0x277C, - 0x277D, 0x277E, 0x277F, 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, - 0x2786, 0x2787, 0x2788, 0x2789, 0x278A, 0x278B, 0x278C, 0x278D, 0x278E, - 0x278F, 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195, - 0x2798, 0x2799, 0x279A, 0x279B, 0x279C, 0x279D, 0x279E, 0x279F, 0x27A0, - 0x27A1, 0x27A2, 0x27A3, 0x27A4, 0x27A5, 0x27A6, 0x27A7, 0x27A8, 0x27A9, - 0x27AA, 0x27AB, 0x27AC, 0x27AD, 0x27AE, 0x27AF, 0x0000, 0x27B1, 0x27B2, - 0x27B3, 0x27B4, 0x27B5, 0x27B6, 0x27B7, 0x27B8, 0x27B9, 0x27BA, 0x27BB, - 0x27BC, 0x27BD, 0x27BE, 0x0000, -}; -static const FX_CHAR* const StandardEncodingNames[224] = { - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quoteright", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "quoteleft", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - "exclamdown", - "cent", - "sterling", - "fraction", - "yen", - "florin", - "section", - "currency", - "quotesingle", - "quotedblleft", - "guillemotleft", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - NULL, - "endash", - "dagger", - "daggerdbl", - "periodcentered", - NULL, - "paragraph", - "bullet", - "quotesinglbase", - "quotedblbase", - "quotedblright", - "guillemotright", - "ellipsis", - "perthousand", - NULL, - "questiondown", - NULL, - "grave", - "acute", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "dieresis", - NULL, - "ring", - "cedilla", - NULL, - "hungarumlaut", - "ogonek", - "caron", - "emdash", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - "AE", - NULL, - "ordfeminine", - NULL, - NULL, - NULL, - NULL, - "Lslash", - "Oslash", - "OE", - "ordmasculine", - NULL, - NULL, - NULL, - NULL, - NULL, - "ae", - NULL, - NULL, - NULL, - "dotlessi", - NULL, - NULL, - "lslash", - "oslash", - "oe", - "germandbls", - NULL, - NULL, - NULL, - NULL, -}; -static const FX_CHAR* const AdobeWinAnsiEncodingNames[224] = { - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quotesingle", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "grave", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "bullet", - "Euro", - "bullet", - "quotesinglbase", - "florin", - "quotedblbase", - "ellipsis", - "dagger", - "daggerdbl", - "circumflex", - "perthousand", - "Scaron", - "guilsinglleft", - "OE", - "bullet", - "Zcaron", - "bullet", - "bullet", - "quoteleft", - "quoteright", - "quotedblleft", - "quotedblright", - "bullet", - "endash", - "emdash", - "tilde", - "trademark", - "scaron", - "guilsinglright", - "oe", - "bullet", - "zcaron", - "Ydieresis", - "space", - "exclamdown", - "cent", - "sterling", - "currency", - "yen", - "brokenbar", - "section", - "dieresis", - "copyright", - "ordfeminine", - "guillemotleft", - "logicalnot", - "hyphen", - "registered", - "macron", - "degree", - "plusminus", - "twosuperior", - "threesuperior", - "acute", - "mu", - "paragraph", - "periodcentered", - "cedilla", - "onesuperior", - "ordmasculine", - "guillemotright", - "onequarter", - "onehalf", - "threequarters", - "questiondown", - "Agrave", - "Aacute", - "Acircumflex", - "Atilde", - "Adieresis", - "Aring", - "AE", - "Ccedilla", - "Egrave", - "Eacute", - "Ecircumflex", - "Edieresis", - "Igrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Eth", - "Ntilde", - "Ograve", - "Oacute", - "Ocircumflex", - "Otilde", - "Odieresis", - "multiply", - "Oslash", - "Ugrave", - "Uacute", - "Ucircumflex", - "Udieresis", - "Yacute", - "Thorn", - "germandbls", - "agrave", - "aacute", - "acircumflex", - "atilde", - "adieresis", - "aring", - "ae", - "ccedilla", - "egrave", - "eacute", - "ecircumflex", - "edieresis", - "igrave", - "iacute", - "icircumflex", - "idieresis", - "eth", - "ntilde", - "ograve", - "oacute", - "ocircumflex", - "otilde", - "odieresis", - "divide", - "oslash", - "ugrave", - "uacute", - "ucircumflex", - "udieresis", - "yacute", - "thorn", - "ydieresis", -}; -static const FX_CHAR* const MacRomanEncodingNames[224] = { - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quotesingle", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "grave", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - NULL, - "Adieresis", - "Aring", - "Ccedilla", - "Eacute", - "Ntilde", - "Odieresis", - "Udieresis", - "aacute", - "agrave", - "acircumflex", - "adieresis", - "atilde", - "aring", - "ccedilla", - "eacute", - "egrave", - "ecircumflex", - "edieresis", - "iacute", - "igrave", - "icircumflex", - "idieresis", - "ntilde", - "oacute", - "ograve", - "ocircumflex", - "odieresis", - "otilde", - "uacute", - "ugrave", - "ucircumflex", - "udieresis", - "dagger", - "degree", - "cent", - "sterling", - "section", - "bullet", - "paragraph", - "germandbls", - "registered", - "copyright", - "trademark", - "acute", - "dieresis", - "notequal", - "AE", - "Oslash", - "infinity", - "plusminus", - "lessequal", - "greaterequal", - "yen", - "mu", - "partialdiff", - "summation", - "product", - "pi", - "integral", - "ordfeminine", - "ordmasculine", - "Omega", - "ae", - "oslash", - "questiondown", - "exclamdown", - "logicalnot", - "radical", - "florin", - "approxequal", - "Delta", - "guillemotleft", - "guillemotright", - "ellipsis", - "space", - "Agrave", - "Atilde", - "Otilde", - "OE", - "oe", - "endash", - "emdash", - "quotedblleft", - "quotedblright", - "quoteleft", - "quoteright", - "divide", - "lozenge", - "ydieresis", - "Ydieresis", - "fraction", - "currency", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "daggerdbl", - "periodcentered", - "quotesinglbase", - "quotedblbase", - "perthousand", - "Acircumflex", - "Ecircumflex", - "Aacute", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Oacute", - "Ocircumflex", - "apple", - "Ograve", - "Uacute", - "Ucircumflex", - "Ugrave", - "dotlessi", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", -}; -static const FX_CHAR* const MacExpertEncodingNames[224] = { - "space", - "exclamsmall", - "Hungarumlautsmall", - "centoldstyle", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "comma", - "hyphen", - "period", - "fraction", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "colon", - "semicolon", - NULL, - "threequartersemdash", - NULL, - "questionsmall", - NULL, - NULL, - NULL, - NULL, - "Ethsmall", - NULL, - NULL, - "onequarter", - "onehalf", - "threequarters", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - "ff", - "fi", - "fl", - "ffi", - "ffl", - "parenleftinferior", - NULL, - "parenrightinferior", - "Circumflexsmall", - "hypheninferior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - NULL, - NULL, - "asuperior", - "centsuperior", - NULL, - NULL, - NULL, - NULL, - "Aacutesmall", - "Agravesmall", - "Acircumflexsmall", - "Adieresissmall", - "Atildesmall", - "Aringsmall", - "Ccedillasmall", - "Eacutesmall", - "Egravesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Iacutesmall", - "Igravesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ntildesmall", - "Oacutesmall", - "Ogravesmall", - "Ocircumflexsmall", - "Odieresissmall", - "Otildesmall", - "Uacutesmall", - "Ugravesmall", - "Ucircumflexsmall", - "Udieresissmall", - NULL, - "eightsuperior", - "fourinferior", - "threeinferior", - "sixinferior", - "eightinferior", - "seveninferior", - "Scaronsmall", - NULL, - "centinferior", - "twoinferior", - NULL, - "Dieresissmall", - NULL, - "Caronsmall", - "Scaronsmall", - "fiveinferior", - NULL, - "commainferior", - "periodinferior", - "Yacutesmall", - NULL, - "dollarinferior", - NULL, - NULL, - "Thornsmall", - NULL, - "nineinferior", - "zeroinferior", - "Zcaronsmall", - "AEsmall", - "Oslashsmall", - "questiondownsmall", - "oneinferior", - "asuperior", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - "Cedillasmall", - NULL, - NULL, - NULL, - NULL, - NULL, - "OEsmall", - "figuredash", - "hyphensuperior", - NULL, - NULL, - NULL, - NULL, - "exclamdownsmall", - NULL, - "Ydieresissmall", - NULL, - "onesuperior", - "twosuperior", - "threesuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "ninesuperior", - "zerosuperior", - NULL, - "esuperior", - "rsuperior", - NULL, - NULL, - NULL, - "isuperior", - "ssuperior", - "dsuperior", - NULL, - NULL, - NULL, - NULL, - NULL, - "lsuperior", - "Ogoneksmall", - "Brevesmall", - "Macronsmall", - "bsuperior", - "nsuperior", - "msuperior", - "commasuperior", - "periodsuperior", - "Dotaccentsmall", - "Ringsmall", - NULL, - NULL, - NULL, - NULL, -}; -static const FX_CHAR* const PDFDocEncodingNames[232] = { - "breve", - "caron", - "circumflex", - "dotaccent", - "hungarumlaut", - "ogonek", - "ring", - "tilde", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quotesingle", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "grave", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - NULL, - "bullet3", - "dagger", - "daggerdbl", - "ellipsis", - "emdash", - "endash", - "florin", - "fraction", - "guilsinglleft", - "guilsinglright", - "minus", - "perthousand", - "quotedblbase", - "quotedblleft", - "quotedblright", - "quoteleft", - "quoteright", - "quotesinglbase", - "trademark", - "fi", - "fl", - "Lslash", - "OE", - "Scaron", - "Ydieresis", - "Zcaron2", - "dotlessi", - "lslash", - "oe", - "scaron", - "zcaron2", - NULL, - "Euro", - "exclamdown", - "cent", - "sterling", - "currency", - "yen", - "brokenbar", - "section", - "dieresis", - "copyright", - "ordfeminine", - "guillemotleft4", - "logicalnot", - NULL, - "registered", - "macron", - "degree", - "plusminus", - "twosuperior", - "threesuperior", - "acute", - "mu", - "paragraph", - "periodcentered", - "cedilla", - "onesuperior", - "ordmasculine", - "guillemotright4", - "onequarter", - "onehalf", - "threequarters", - "questiondown", - "Agrave", - "Aacute", - "Acircumflex", - "Atilde", - "Adieresis", - "Aring", - "AE", - "Ccedilla", - "Egrave", - "Eacute", - "Ecircumflex", - "Edieresis", - "Igrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Eth", - "Ntilde", - "Ograve", - "Oacute", - "Ocircumflex", - "Otilde", - "Odieresis", - "multiply", - "Oslash", - "Ugrave", - "Uacute", - "Ucircumflex", - "Udieresis", - "Yacute", - "Thorn", - "germandbls", - "agrave", - "aacute", - "acircumflex", - "atilde", - "adieresis", - "aring", - "ae", - "ccedilla", - "egrave", - "eacute", - "ecircumflex", - "edieresis", - "igrave", - "iacute", - "icircumflex", - "idieresis", - "eth", - "ntilde", - "ograve", - "oacute", - "ocircumflex", - "otilde", - "odieresis", - "divide", - "oslash", - "ugrave", - "uacute", - "ucircumflex", - "udieresis", - "yacute", - "thorn", - "ydieresis", -}; -static const FX_CHAR* const AdobeSymbolEncodingNames[224] = { - "space", - "exclam", - "universal", - "numbersign", - "existential", - "percent", - "ampersand", - "suchthat", - "parenleft", - "parenright", - "asteriskmath", - "plus", - "comma", - "minus", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "congruent", - "Alpha", - "Beta", - "Chi", - "Delta", - "Epsilon", - "Phi", - "Gamma", - "Eta", - "Iota", - "theta1", - "Kappa", - "Lambda", - "Mu", - "Nu", - "Omicron", - "Pi", - "Theta", - "Rho", - "Sigma", - "Tau", - "Upsilon", - "sigma1", - "Omega", - "Xi", - "Psi", - "Zeta", - "bracketleft", - "therefore", - "bracketright", - "perpendicular", - "underscore", - "radicalex", - "alpha", - "beta", - "chi", - "delta", - "epsilon", - "phi", - "gamma", - "eta", - "iota", - "phi1", - "kappa", - "lambda", - "mu", - "nu", - "omicron", - "pi", - "theta", - "rho", - "sigma", - "tau", - "upsilon", - "omega1", - "omega", - "xi", - "psi", - "zeta", - "braceleft", - "bar", - "braceright", - "similar", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - "Euro", - "Upsilon1", - "minute", - "lessequal", - "fraction", - "infinity", - "florin", - "club", - "diamond", - "heart", - "spade", - "arrowboth", - "arrowleft", - "arrowup", - "arrowright", - "arrowdown", - "degree", - "plusminus", - "second", - "greaterequal", - "multiply", - "proportional", - "partialdiff", - "bullet", - "divide", - "notequal", - "equivalence", - "approxequal", - "ellipsis", - "arrowvertex", - "arrowhorizex", - "carriagereturn", - "aleph", - "Ifraktur", - "Rfraktur", - "weierstrass", - "circlemultiply", - "circleplus", - "emptyset", - "intersection", - "union", - "propersuperset", - "reflexsuperset", - "notsubset", - "propersubset", - "reflexsubset", - "element", - "notelement", - "angle", - "gradient", - "registerserif", - "copyrightserif", - "trademarkserif", - "product", - "radical", - "dotmath", - "logicalnot", - "logicaland", - "logicalor", - "arrowdblboth", - "arrowdblleft", - "arrowdblup", - "arrowdblright", - "arrowdbldown", - "lozenge", - "angleleft", - "registersans", - "copyrightsans", - "trademarksans", - "summation", - "parenlefttp", - "parenleftex", - "parenleftbt", - "bracketlefttp", - "bracketleftex", - "bracketleftbt", - "bracelefttp", - "braceleftmid", - "braceleftbt", - "braceex", - NULL, - "angleright", - "integral", - "integraltp", - "integralex", - "integralbt", - "parenrighttp", - "parenrightex", - "parenrightbt", - "bracketrighttp", - "bracketrightex", - "bracketrightbt", - "bracerighttp", - "bracerightmid", - "bracerightbt", - NULL, -}; -static const FX_CHAR* const ZapfEncodingNames[224] = { - "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", "a118", - "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17", - "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26", - "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30", - "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39", - "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48", - "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57", - "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66", - "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203", - "a75", "a204", "a76", "a77", "a78", "a79", "a81", "a82", "a83", - "a84", "a97", "a98", "a99", "a100", NULL, "a89", "a90", "a93", - "a94", "a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88", - "a95", "a96", NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, "a101", "a102", "a103", "a104", "a106", "a107", - "a108", "a112", "a111", "a110", "a109", "a120", "a121", "a122", "a123", - "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132", - "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141", - "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150", - "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159", - "a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167", - "a168", "a169", "a170", "a171", "a172", "a173", "a162", "a174", "a175", - "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", "a200", - "a182", NULL, "a201", "a183", "a184", "a197", "a185", "a194", "a198", - "a186", "a195", "a187", "a188", "a189", "a190", "a191", NULL}; -const FX_CHAR* PDF_CharNameFromPredefinedCharSet(int encoding, - uint8_t charcode) { - if (encoding == PDFFONT_ENCODING_PDFDOC) { - if (charcode < 24) { - return NULL; - } - charcode -= 24; - } else { - if (charcode < 32) { - return NULL; - } - charcode -= 32; - } - switch (encoding) { - case PDFFONT_ENCODING_WINANSI: - return AdobeWinAnsiEncodingNames[charcode]; - case PDFFONT_ENCODING_MACROMAN: - return MacRomanEncodingNames[charcode]; - case PDFFONT_ENCODING_MACEXPERT: - return MacExpertEncodingNames[charcode]; - case PDFFONT_ENCODING_STANDARD: - return StandardEncodingNames[charcode]; - case PDFFONT_ENCODING_ADOBE_SYMBOL: - return AdobeSymbolEncodingNames[charcode]; - case PDFFONT_ENCODING_ZAPFDINGBATS: - return ZapfEncodingNames[charcode]; - case PDFFONT_ENCODING_PDFDOC: - return PDFDocEncodingNames[charcode]; - } - return NULL; -} -FX_WCHAR FT_UnicodeFromCharCode(int encoding, FX_DWORD charcode) { - switch (encoding) { - case FXFT_ENCODING_UNICODE: - return (FX_WORD)charcode; - case FXFT_ENCODING_ADOBE_STANDARD: - return StandardEncoding[(uint8_t)charcode]; - case FXFT_ENCODING_ADOBE_EXPERT: - return MacExpertEncoding[(uint8_t)charcode]; - case FXFT_ENCODING_ADOBE_LATIN_1: - return AdobeWinAnsiEncoding[(uint8_t)charcode]; - case FXFT_ENCODING_APPLE_ROMAN: - return MacRomanEncoding[(uint8_t)charcode]; - case PDFFONT_ENCODING_PDFDOC: - return PDFDocEncoding[(uint8_t)charcode]; - } - return 0; -} -static FX_DWORD PDF_FindCode(const FX_WORD* pCodes, FX_WORD unicode) { - for (FX_DWORD i = 0; i < 256; i++) - if (pCodes[i] == unicode) { - return i; - } - return 0; -} -static const FX_WORD MSSymbolEncoding[256] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 32, 33, 8704, 35, - 8707, 37, 38, 8715, 40, 41, 8727, 43, 44, - 8722, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 8773, 913, 914, 935, 916, 917, 934, 915, - 919, 921, 977, 922, 923, 924, 925, 927, 928, - 920, 929, 931, 932, 933, 962, 937, 926, 936, - 918, 91, 8756, 93, 8869, 95, 8254, 945, 946, - 967, 948, 949, 966, 947, 951, 953, 981, 954, - 955, 956, 957, 959, 960, 952, 961, 963, 964, - 965, 982, 969, 958, 968, 950, 123, 124, 125, - 8764, 0, 0, 0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 978, - 8242, 8804, 8725, 8734, 402, 9827, 9830, 9828, 9824, - 8596, 8592, 8593, 8594, 8595, 176, 177, 8243, 8805, - 215, 8733, 8706, 8729, 247, 8800, 8801, 8776, 8943, - 0, 0, 8629, 0, 8465, 8476, 8472, 8855, 8853, - 8709, 8745, 8746, 8835, 8839, 8836, 8834, 8838, 8712, - 8713, 8736, 8711, 174, 169, 8482, 8719, 8730, 8901, - 172, 8743, 8744, 8660, 8656, 8657, 8658, 8659, 9674, - 9001, 0, 0, 0, 8721, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0x0000, 9002, 8747, - 8992, 0, 8993, 0, 0, 0, 0, 0, 0, - 0x0000, 0x0000, 0x0000, 0x0000}; -FX_DWORD FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode) { - switch (encoding) { - case FXFT_ENCODING_UNICODE: - return unicode; - case FXFT_ENCODING_ADOBE_STANDARD: - return PDF_FindCode(StandardEncoding, unicode); - case FXFT_ENCODING_ADOBE_EXPERT: - return PDF_FindCode(MacExpertEncoding, unicode); - case FXFT_ENCODING_ADOBE_LATIN_1: - return PDF_FindCode(AdobeWinAnsiEncoding, unicode); - case FXFT_ENCODING_APPLE_ROMAN: - return PDF_FindCode(MacRomanEncoding, unicode); - case FXFT_ENCODING_ADOBE_CUSTOM: - return PDF_FindCode(PDFDocEncoding, unicode); - case FXFT_ENCODING_MS_SYMBOL: - return PDF_FindCode(MSSymbolEncoding, unicode); - } - return 0; -} -const FX_WORD* PDF_UnicodesForPredefinedCharSet(int encoding) { - switch (encoding) { - case PDFFONT_ENCODING_WINANSI: - return AdobeWinAnsiEncoding; - case PDFFONT_ENCODING_MACROMAN: - return MacRomanEncoding; - case PDFFONT_ENCODING_MACEXPERT: - return MacExpertEncoding; - case PDFFONT_ENCODING_STANDARD: - return StandardEncoding; - case PDFFONT_ENCODING_ADOBE_SYMBOL: - return AdobeSymbolEncoding; - case PDFFONT_ENCODING_ZAPFDINGBATS: - return ZapfEncoding; - case PDFFONT_ENCODING_PDFDOC: - return PDFDocEncoding; - case PDFFONT_ENCODING_MS_SYMBOL: - return MSSymbolEncoding; - } - return NULL; -} -FX_DWORD PDF_PredefinedCharCodeFromUnicode(int encoding, FX_WCHAR unicode) { - return PDF_FindCode(PDF_UnicodesForPredefinedCharSet(encoding), unicode); -} -FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name) { - return (FX_WCHAR)(FXFT_unicode_from_adobe_name(name) & 0x7FFFFFFF); -} -CFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode) { - char glyph_name[64]; - FXFT_adobe_name_from_unicode(glyph_name, unicode); - return CFX_ByteString(glyph_name); -} diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp deleted file mode 100644 index b86c2778db..0000000000 --- a/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp +++ /dev/null @@ -1,1754 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_simple_parser.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fpdfapi/fpdf_cmaps/cmap_int.h" -#include "core/src/fpdfapi/fpdf_font/ttgsubtable.h" - -namespace { - -const FX_CHAR* const g_CharsetNames[CIDSET_NUM_SETS] = - {nullptr, "GB1", "CNS1", "Japan1", "Korea1", "UCS"}; - -const int g_CharsetCPs[CIDSET_NUM_SETS] = {0, 936, 950, 932, 949, 1200}; - -class CPDF_PredefinedCMap { - public: - const FX_CHAR* m_pName; - CIDSet m_Charset; - int m_Coding; - CPDF_CMap::CodingScheme m_CodingScheme; - FX_DWORD m_LeadingSegCount; - uint8_t m_LeadingSegs[4]; -}; - -const CPDF_PredefinedCMap g_PredefinedCMaps[] = { - {"GB-EUC", - CIDSET_GB1, - CIDCODING_GB, - CPDF_CMap::MixedTwoBytes, - 1, - {0xa1, 0xfe}}, - {"GBpc-EUC", - CIDSET_GB1, - CIDCODING_GB, - CPDF_CMap::MixedTwoBytes, - 1, - {0xa1, 0xfc}}, - {"GBK-EUC", - CIDSET_GB1, - CIDCODING_GB, - CPDF_CMap::MixedTwoBytes, - 1, - {0x81, 0xfe}}, - {"GBKp-EUC", - CIDSET_GB1, - CIDCODING_GB, - CPDF_CMap::MixedTwoBytes, - 1, - {0x81, 0xfe}}, - {"GBK2K-EUC", - CIDSET_GB1, - CIDCODING_GB, - CPDF_CMap::MixedTwoBytes, - 1, - {0x81, 0xfe}}, - {"GBK2K", - CIDSET_GB1, - CIDCODING_GB, - CPDF_CMap::MixedTwoBytes, - 1, - {0x81, 0xfe}}, - {"UniGB-UCS2", CIDSET_GB1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, - {"UniGB-UTF16", CIDSET_GB1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}}, - {"B5pc", - CIDSET_CNS1, - CIDCODING_BIG5, - CPDF_CMap::MixedTwoBytes, - 1, - {0xa1, 0xfc}}, - {"HKscs-B5", - CIDSET_CNS1, - CIDCODING_BIG5, - CPDF_CMap::MixedTwoBytes, - 1, - {0x88, 0xfe}}, - {"ETen-B5", - CIDSET_CNS1, - CIDCODING_BIG5, - CPDF_CMap::MixedTwoBytes, - 1, - {0xa1, 0xfe}}, - {"ETenms-B5", - CIDSET_CNS1, - CIDCODING_BIG5, - CPDF_CMap::MixedTwoBytes, - 1, - {0xa1, 0xfe}}, - {"UniCNS-UCS2", CIDSET_CNS1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, - {"UniCNS-UTF16", CIDSET_CNS1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}}, - {"83pv-RKSJ", - CIDSET_JAPAN1, - CIDCODING_JIS, - CPDF_CMap::MixedTwoBytes, - 2, - {0x81, 0x9f, 0xe0, 0xfc}}, - {"90ms-RKSJ", - CIDSET_JAPAN1, - CIDCODING_JIS, - CPDF_CMap::MixedTwoBytes, - 2, - {0x81, 0x9f, 0xe0, 0xfc}}, - {"90msp-RKSJ", - CIDSET_JAPAN1, - CIDCODING_JIS, - CPDF_CMap::MixedTwoBytes, - 2, - {0x81, 0x9f, 0xe0, 0xfc}}, - {"90pv-RKSJ", - CIDSET_JAPAN1, - CIDCODING_JIS, - CPDF_CMap::MixedTwoBytes, - 2, - {0x81, 0x9f, 0xe0, 0xfc}}, - {"Add-RKSJ", - CIDSET_JAPAN1, - CIDCODING_JIS, - CPDF_CMap::MixedTwoBytes, - 2, - {0x81, 0x9f, 0xe0, 0xfc}}, - {"EUC", - CIDSET_JAPAN1, - CIDCODING_JIS, - CPDF_CMap::MixedTwoBytes, - 2, - {0x8e, 0x8e, 0xa1, 0xfe}}, - {"H", CIDSET_JAPAN1, CIDCODING_JIS, CPDF_CMap::TwoBytes, 1, {0x21, 0x7e}}, - {"V", CIDSET_JAPAN1, CIDCODING_JIS, CPDF_CMap::TwoBytes, 1, {0x21, 0x7e}}, - {"Ext-RKSJ", - CIDSET_JAPAN1, - CIDCODING_JIS, - CPDF_CMap::MixedTwoBytes, - 2, - {0x81, 0x9f, 0xe0, 0xfc}}, - {"UniJIS-UCS2", CIDSET_JAPAN1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, - {"UniJIS-UCS2-HW", - CIDSET_JAPAN1, - CIDCODING_UCS2, - CPDF_CMap::TwoBytes, - 0, - {}}, - {"UniJIS-UTF16", - CIDSET_JAPAN1, - CIDCODING_UTF16, - CPDF_CMap::TwoBytes, - 0, - {}}, - {"KSC-EUC", - CIDSET_KOREA1, - CIDCODING_KOREA, - CPDF_CMap::MixedTwoBytes, - 1, - {0xa1, 0xfe}}, - {"KSCms-UHC", - CIDSET_KOREA1, - CIDCODING_KOREA, - CPDF_CMap::MixedTwoBytes, - 1, - {0x81, 0xfe}}, - {"KSCms-UHC-HW", - CIDSET_KOREA1, - CIDCODING_KOREA, - CPDF_CMap::MixedTwoBytes, - 1, - {0x81, 0xfe}}, - {"KSCpc-EUC", - CIDSET_KOREA1, - CIDCODING_KOREA, - CPDF_CMap::MixedTwoBytes, - 1, - {0xa1, 0xfd}}, - {"UniKS-UCS2", CIDSET_KOREA1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}}, - {"UniKS-UTF16", CIDSET_KOREA1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}}, -}; - -CIDSet CIDSetFromSizeT(size_t index) { - if (index >= CIDSET_NUM_SETS) { - NOTREACHED(); - return CIDSET_UNKNOWN; - } - return static_cast(index); -} - -CIDSet CharsetFromOrdering(const CFX_ByteString& ordering) { - for (size_t charset = 1; charset < FX_ArraySize(g_CharsetNames); ++charset) { - if (ordering == CFX_ByteStringC(g_CharsetNames[charset])) - return CIDSetFromSizeT(charset); - } - return CIDSET_UNKNOWN; -} - -CFX_ByteString CMap_GetString(const CFX_ByteStringC& word) { - return word.Mid(1, word.GetLength() - 2); -} - -int CompareDWORD(const void* data1, const void* data2) { - return (*(FX_DWORD*)data1) - (*(FX_DWORD*)data2); -} - -int CompareCID(const void* key, const void* element) { - if ((*(FX_DWORD*)key) < (*(FX_DWORD*)element)) { - return -1; - } - if ((*(FX_DWORD*)key) > - (*(FX_DWORD*)element) + ((FX_DWORD*)element)[1] / 65536) { - return 1; - } - return 0; -} - -int CheckCodeRange(uint8_t* codes, - int size, - CMap_CodeRange* pRanges, - int nRanges) { - int iSeg = nRanges - 1; - while (iSeg >= 0) { - if (pRanges[iSeg].m_CharSize < size) { - --iSeg; - continue; - } - int iChar = 0; - while (iChar < size) { - if (codes[iChar] < pRanges[iSeg].m_Lower[iChar] || - codes[iChar] > pRanges[iSeg].m_Upper[iChar]) { - break; - } - ++iChar; - } - if (iChar == pRanges[iSeg].m_CharSize) - return 2; - - if (iChar) - return (size == pRanges[iSeg].m_CharSize) ? 2 : 1; - iSeg--; - } - return 0; -} - -int GetCharSizeImpl(FX_DWORD charcode, - CMap_CodeRange* pRanges, - int iRangesSize) { - if (!iRangesSize) - return 1; - - uint8_t codes[4]; - codes[0] = codes[1] = 0x00; - codes[2] = (uint8_t)(charcode >> 8 & 0xFF); - codes[3] = (uint8_t)charcode; - int offset = 0; - int size = 4; - for (int i = 0; i < 4; ++i) { - int iSeg = iRangesSize - 1; - while (iSeg >= 0) { - if (pRanges[iSeg].m_CharSize < size) { - --iSeg; - continue; - } - int iChar = 0; - while (iChar < size) { - if (codes[offset + iChar] < pRanges[iSeg].m_Lower[iChar] || - codes[offset + iChar] > pRanges[iSeg].m_Upper[iChar]) { - break; - } - ++iChar; - } - if (iChar == pRanges[iSeg].m_CharSize) - return size; - --iSeg; - } - --size; - ++offset; - } - return 1; -} - -bool IsValidEmbeddedCharcodeFromUnicodeCharset(CIDSet charset) { - switch (charset) { - case CIDSET_GB1: - case CIDSET_CNS1: - case CIDSET_JAPAN1: - case CIDSET_KOREA1: - return true; - - default: - return false; - } -} - -#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ -FX_DWORD EmbeddedCharcodeFromUnicode(const FXCMAP_CMap* pEmbedMap, - CIDSet charset, - FX_WCHAR unicode) { - if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset)) - return 0; - - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - const FX_WORD* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; - if (!pCodes) - return 0; - - int nCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count; - for (int i = 0; i < nCodes; ++i) { - if (pCodes[i] == unicode) { - FX_DWORD CharCode = FPDFAPI_CharCodeFromCID(pEmbedMap, i); - if (CharCode != 0) { - return CharCode; - } - } - } - return 0; -} -#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ - -FX_WCHAR EmbeddedUnicodeFromCharcode(const FXCMAP_CMap* pEmbedMap, - CIDSet charset, - FX_DWORD charcode) { - if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset)) - return 0; - - FX_WORD cid = FPDFAPI_CIDFromCharCode(pEmbedMap, charcode); - if (cid == 0) - return 0; - - CPDF_FontGlobals* pFontGlobals = - CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); - const FX_WORD* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; - if (!pCodes) - return 0; - - if (cid < pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count) - return pCodes[cid]; - return 0; -} - -void FT_UseCIDCharmap(FXFT_Face face, int coding) { - int encoding; - switch (coding) { - case CIDCODING_GB: - encoding = FXFT_ENCODING_GB2312; - break; - case CIDCODING_BIG5: - encoding = FXFT_ENCODING_BIG5; - break; - case CIDCODING_JIS: - encoding = FXFT_ENCODING_SJIS; - break; - case CIDCODING_KOREA: - encoding = FXFT_ENCODING_JOHAB; - break; - default: - encoding = FXFT_ENCODING_UNICODE; - } - int err = FXFT_Select_Charmap(face, encoding); - if (err) { - err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE); - } - if (err && FXFT_Get_Face_Charmaps(face)) { - FXFT_Set_Charmap(face, *FXFT_Get_Face_Charmaps(face)); - } -} - -const struct CIDTransform { - FX_WORD CID; - uint8_t a, b, c, d, e, f; -} g_Japan1_VertCIDs[] = { - {97, 129, 0, 0, 127, 55, 0}, - {7887, 127, 0, 0, 127, 76, 89}, - {7888, 127, 0, 0, 127, 79, 94}, - {7889, 0, 129, 127, 0, 17, 127}, - {7890, 0, 129, 127, 0, 17, 127}, - {7891, 0, 129, 127, 0, 17, 127}, - {7892, 0, 129, 127, 0, 17, 127}, - {7893, 0, 129, 127, 0, 17, 127}, - {7894, 0, 129, 127, 0, 17, 127}, - {7895, 0, 129, 127, 0, 17, 127}, - {7896, 0, 129, 127, 0, 17, 127}, - {7897, 0, 129, 127, 0, 17, 127}, - {7898, 0, 129, 127, 0, 17, 127}, - {7899, 0, 129, 127, 0, 17, 104}, - {7900, 0, 129, 127, 0, 17, 127}, - {7901, 0, 129, 127, 0, 17, 104}, - {7902, 0, 129, 127, 0, 17, 127}, - {7903, 0, 129, 127, 0, 17, 127}, - {7904, 0, 129, 127, 0, 17, 127}, - {7905, 0, 129, 127, 0, 17, 114}, - {7906, 0, 129, 127, 0, 17, 127}, - {7907, 0, 129, 127, 0, 17, 127}, - {7908, 0, 129, 127, 0, 17, 127}, - {7909, 0, 129, 127, 0, 17, 127}, - {7910, 0, 129, 127, 0, 17, 127}, - {7911, 0, 129, 127, 0, 17, 127}, - {7912, 0, 129, 127, 0, 17, 127}, - {7913, 0, 129, 127, 0, 17, 127}, - {7914, 0, 129, 127, 0, 17, 127}, - {7915, 0, 129, 127, 0, 17, 114}, - {7916, 0, 129, 127, 0, 17, 127}, - {7917, 0, 129, 127, 0, 17, 127}, - {7918, 127, 0, 0, 127, 18, 25}, - {7919, 127, 0, 0, 127, 18, 25}, - {7920, 127, 0, 0, 127, 18, 25}, - {7921, 127, 0, 0, 127, 18, 25}, - {7922, 127, 0, 0, 127, 18, 25}, - {7923, 127, 0, 0, 127, 18, 25}, - {7924, 127, 0, 0, 127, 18, 25}, - {7925, 127, 0, 0, 127, 18, 25}, - {7926, 127, 0, 0, 127, 18, 25}, - {7927, 127, 0, 0, 127, 18, 25}, - {7928, 127, 0, 0, 127, 18, 25}, - {7929, 127, 0, 0, 127, 18, 25}, - {7930, 127, 0, 0, 127, 18, 25}, - {7931, 127, 0, 0, 127, 18, 25}, - {7932, 127, 0, 0, 127, 18, 25}, - {7933, 127, 0, 0, 127, 18, 25}, - {7934, 127, 0, 0, 127, 18, 25}, - {7935, 127, 0, 0, 127, 18, 25}, - {7936, 127, 0, 0, 127, 18, 25}, - {7937, 127, 0, 0, 127, 18, 25}, - {7938, 127, 0, 0, 127, 18, 25}, - {7939, 127, 0, 0, 127, 18, 25}, - {8720, 0, 129, 127, 0, 19, 102}, - {8721, 0, 129, 127, 0, 13, 127}, - {8722, 0, 129, 127, 0, 19, 108}, - {8723, 0, 129, 127, 0, 19, 102}, - {8724, 0, 129, 127, 0, 19, 102}, - {8725, 0, 129, 127, 0, 19, 102}, - {8726, 0, 129, 127, 0, 19, 102}, - {8727, 0, 129, 127, 0, 19, 102}, - {8728, 0, 129, 127, 0, 19, 114}, - {8729, 0, 129, 127, 0, 19, 114}, - {8730, 0, 129, 127, 0, 38, 108}, - {8731, 0, 129, 127, 0, 13, 108}, - {8732, 0, 129, 127, 0, 19, 108}, - {8733, 0, 129, 127, 0, 19, 108}, - {8734, 0, 129, 127, 0, 19, 108}, - {8735, 0, 129, 127, 0, 19, 108}, - {8736, 0, 129, 127, 0, 19, 102}, - {8737, 0, 129, 127, 0, 19, 102}, - {8738, 0, 129, 127, 0, 19, 102}, - {8739, 0, 129, 127, 0, 19, 102}, - {8740, 0, 129, 127, 0, 19, 102}, - {8741, 0, 129, 127, 0, 19, 102}, - {8742, 0, 129, 127, 0, 19, 102}, - {8743, 0, 129, 127, 0, 19, 102}, - {8744, 0, 129, 127, 0, 19, 102}, - {8745, 0, 129, 127, 0, 19, 102}, - {8746, 0, 129, 127, 0, 19, 114}, - {8747, 0, 129, 127, 0, 19, 114}, - {8748, 0, 129, 127, 0, 19, 102}, - {8749, 0, 129, 127, 0, 19, 102}, - {8750, 0, 129, 127, 0, 19, 102}, - {8751, 0, 129, 127, 0, 19, 102}, - {8752, 0, 129, 127, 0, 19, 102}, - {8753, 0, 129, 127, 0, 19, 102}, - {8754, 0, 129, 127, 0, 19, 102}, - {8755, 0, 129, 127, 0, 19, 102}, - {8756, 0, 129, 127, 0, 19, 102}, - {8757, 0, 129, 127, 0, 19, 102}, - {8758, 0, 129, 127, 0, 19, 102}, - {8759, 0, 129, 127, 0, 19, 102}, - {8760, 0, 129, 127, 0, 19, 102}, - {8761, 0, 129, 127, 0, 19, 102}, - {8762, 0, 129, 127, 0, 19, 102}, - {8763, 0, 129, 127, 0, 19, 102}, - {8764, 0, 129, 127, 0, 19, 102}, - {8765, 0, 129, 127, 0, 19, 102}, - {8766, 0, 129, 127, 0, 19, 102}, - {8767, 0, 129, 127, 0, 19, 102}, - {8768, 0, 129, 127, 0, 19, 102}, - {8769, 0, 129, 127, 0, 19, 102}, - {8770, 0, 129, 127, 0, 19, 102}, - {8771, 0, 129, 127, 0, 19, 102}, - {8772, 0, 129, 127, 0, 19, 102}, - {8773, 0, 129, 127, 0, 19, 102}, - {8774, 0, 129, 127, 0, 19, 102}, - {8775, 0, 129, 127, 0, 19, 102}, - {8776, 0, 129, 127, 0, 19, 102}, - {8777, 0, 129, 127, 0, 19, 102}, - {8778, 0, 129, 127, 0, 19, 102}, - {8779, 0, 129, 127, 0, 19, 114}, - {8780, 0, 129, 127, 0, 19, 108}, - {8781, 0, 129, 127, 0, 19, 114}, - {8782, 0, 129, 127, 0, 13, 114}, - {8783, 0, 129, 127, 0, 19, 108}, - {8784, 0, 129, 127, 0, 13, 114}, - {8785, 0, 129, 127, 0, 19, 108}, - {8786, 0, 129, 127, 0, 19, 108}, - {8787, 0, 129, 127, 0, 19, 108}, - {8788, 0, 129, 127, 0, 19, 108}, - {8789, 0, 129, 127, 0, 19, 108}, - {8790, 0, 129, 127, 0, 19, 108}, - {8791, 0, 129, 127, 0, 19, 108}, - {8792, 0, 129, 127, 0, 19, 108}, - {8793, 0, 129, 127, 0, 19, 108}, - {8794, 0, 129, 127, 0, 19, 108}, - {8795, 0, 129, 127, 0, 19, 108}, - {8796, 0, 129, 127, 0, 19, 108}, - {8797, 0, 129, 127, 0, 19, 108}, - {8798, 0, 129, 127, 0, 19, 108}, - {8799, 0, 129, 127, 0, 19, 108}, - {8800, 0, 129, 127, 0, 19, 108}, - {8801, 0, 129, 127, 0, 19, 108}, - {8802, 0, 129, 127, 0, 19, 108}, - {8803, 0, 129, 127, 0, 19, 108}, - {8804, 0, 129, 127, 0, 19, 108}, - {8805, 0, 129, 127, 0, 19, 108}, - {8806, 0, 129, 127, 0, 19, 108}, - {8807, 0, 129, 127, 0, 19, 108}, - {8808, 0, 129, 127, 0, 19, 108}, - {8809, 0, 129, 127, 0, 19, 108}, - {8810, 0, 129, 127, 0, 19, 108}, - {8811, 0, 129, 127, 0, 19, 114}, - {8812, 0, 129, 127, 0, 19, 102}, - {8813, 0, 129, 127, 0, 19, 114}, - {8814, 0, 129, 127, 0, 76, 102}, - {8815, 0, 129, 127, 0, 13, 121}, - {8816, 0, 129, 127, 0, 19, 114}, - {8817, 0, 129, 127, 0, 19, 127}, - {8818, 0, 129, 127, 0, 19, 114}, - {8819, 0, 129, 127, 0, 218, 108}, -}; - -int CompareCIDTransform(const void* key, const void* element) { - FX_WORD CID = *static_cast(key); - return CID - static_cast(element)->CID; -} - -} // namespace - -CPDF_CMapManager::CPDF_CMapManager() { - m_bPrompted = FALSE; - FXSYS_memset(m_CID2UnicodeMaps, 0, sizeof m_CID2UnicodeMaps); -} -CPDF_CMapManager::~CPDF_CMapManager() { - for (const auto& pair : m_CMaps) { - delete pair.second; - } - m_CMaps.clear(); - for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { - delete m_CID2UnicodeMaps[i]; - } -} -CPDF_CMap* CPDF_CMapManager::GetPredefinedCMap(const CFX_ByteString& name, - FX_BOOL bPromptCJK) { - auto it = m_CMaps.find(name); - if (it != m_CMaps.end()) { - return it->second; - } - CPDF_CMap* pCMap = LoadPredefinedCMap(name, bPromptCJK); - if (!name.IsEmpty()) { - m_CMaps[name] = pCMap; - } - return pCMap; -} -CPDF_CMap* CPDF_CMapManager::LoadPredefinedCMap(const CFX_ByteString& name, - FX_BOOL bPromptCJK) { - CPDF_CMap* pCMap = new CPDF_CMap; - const FX_CHAR* pname = name; - if (*pname == '/') { - pname++; - } - pCMap->LoadPredefined(this, pname, bPromptCJK); - return pCMap; -} - -void CPDF_CMapManager::ReloadAll() { - for (const auto& pair : m_CMaps) { - CPDF_CMap* pCMap = pair.second; - pCMap->LoadPredefined(this, pair.first, FALSE); - } - for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) { - if (CPDF_CID2UnicodeMap* pMap = m_CID2UnicodeMaps[i]) { - pMap->Load(this, CIDSetFromSizeT(i), FALSE); - } - } -} -CPDF_CID2UnicodeMap* CPDF_CMapManager::GetCID2UnicodeMap(CIDSet charset, - FX_BOOL bPromptCJK) { - if (!m_CID2UnicodeMaps[charset]) - m_CID2UnicodeMaps[charset] = LoadCID2UnicodeMap(charset, bPromptCJK); - return m_CID2UnicodeMaps[charset]; -} -CPDF_CID2UnicodeMap* CPDF_CMapManager::LoadCID2UnicodeMap(CIDSet charset, - FX_BOOL bPromptCJK) { - CPDF_CID2UnicodeMap* pMap = new CPDF_CID2UnicodeMap(); - if (!pMap->Initialize()) { - delete pMap; - return NULL; - } - pMap->Load(this, charset, bPromptCJK); - return pMap; -} -CPDF_CMapParser::CPDF_CMapParser() { - m_pCMap = NULL; - m_Status = 0; - m_CodeSeq = 0; -} -FX_BOOL CPDF_CMapParser::Initialize(CPDF_CMap* pCMap) { - m_pCMap = pCMap; - m_Status = 0; - m_CodeSeq = 0; - m_AddMaps.EstimateSize(0, 10240); - return TRUE; -} - -void CPDF_CMapParser::ParseWord(const CFX_ByteStringC& word) { - if (word.IsEmpty()) { - return; - } - if (word == "begincidchar") { - m_Status = 1; - m_CodeSeq = 0; - } else if (word == "begincidrange") { - m_Status = 2; - m_CodeSeq = 0; - } else if (word == "endcidrange" || word == "endcidchar") { - m_Status = 0; - } else if (word == "/WMode") { - m_Status = 6; - } else if (word == "/Registry") { - m_Status = 3; - } else if (word == "/Ordering") { - m_Status = 4; - } else if (word == "/Supplement") { - m_Status = 5; - } else if (word == "begincodespacerange") { - m_Status = 7; - m_CodeSeq = 0; - } else if (word == "usecmap") { - } else if (m_Status == 1 || m_Status == 2) { - m_CodePoints[m_CodeSeq] = CMap_GetCode(word); - m_CodeSeq++; - FX_DWORD StartCode, EndCode; - FX_WORD StartCID; - if (m_Status == 1) { - if (m_CodeSeq < 2) { - return; - } - EndCode = StartCode = m_CodePoints[0]; - StartCID = (FX_WORD)m_CodePoints[1]; - } else { - if (m_CodeSeq < 3) { - return; - } - StartCode = m_CodePoints[0]; - EndCode = m_CodePoints[1]; - StartCID = (FX_WORD)m_CodePoints[2]; - } - if (EndCode < 0x10000) { - for (FX_DWORD code = StartCode; code <= EndCode; code++) { - m_pCMap->m_pMapping[code] = (FX_WORD)(StartCID + code - StartCode); - } - } else { - FX_DWORD buf[2]; - buf[0] = StartCode; - buf[1] = ((EndCode - StartCode) << 16) + StartCID; - m_AddMaps.AppendBlock(buf, sizeof buf); - } - m_CodeSeq = 0; - } else if (m_Status == 3) { - CMap_GetString(word); - m_Status = 0; - } else if (m_Status == 4) { - m_pCMap->m_Charset = CharsetFromOrdering(CMap_GetString(word)); - m_Status = 0; - } else if (m_Status == 5) { - CMap_GetCode(word); - m_Status = 0; - } else if (m_Status == 6) { - m_pCMap->m_bVertical = CMap_GetCode(word); - m_Status = 0; - } else if (m_Status == 7) { - if (word == "endcodespacerange") { - int nSegs = m_CodeRanges.GetSize(); - if (nSegs > 1) { - m_pCMap->m_CodingScheme = CPDF_CMap::MixedFourBytes; - m_pCMap->m_nCodeRanges = nSegs; - m_pCMap->m_pLeadingBytes = - FX_Alloc2D(uint8_t, nSegs, sizeof(CMap_CodeRange)); - FXSYS_memcpy(m_pCMap->m_pLeadingBytes, m_CodeRanges.GetData(), - nSegs * sizeof(CMap_CodeRange)); - } else if (nSegs == 1) { - m_pCMap->m_CodingScheme = (m_CodeRanges[0].m_CharSize == 2) - ? CPDF_CMap::TwoBytes - : CPDF_CMap::OneByte; - } - m_Status = 0; - } else { - if (word.GetLength() == 0 || word.GetAt(0) != '<') { - return; - } - if (m_CodeSeq % 2) { - CMap_CodeRange range; - if (CMap_GetCodeRange(range, m_LastWord, word)) { - m_CodeRanges.Add(range); - } - } - m_CodeSeq++; - } - } - m_LastWord = word; -} - -// Static. -FX_DWORD CPDF_CMapParser::CMap_GetCode(const CFX_ByteStringC& word) { - int num = 0; - if (word.GetAt(0) == '<') { - for (int i = 1; i < word.GetLength() && std::isxdigit(word.GetAt(i)); ++i) - num = num * 16 + FXSYS_toHexDigit(word.GetAt(i)); - return num; - } - - for (int i = 0; i < word.GetLength() && std::isdigit(word.GetAt(i)); ++i) - num = num * 10 + FXSYS_toDecimalDigit(static_cast(word.GetAt(i))); - return num; -} - -// Static. -bool CPDF_CMapParser::CMap_GetCodeRange(CMap_CodeRange& range, - const CFX_ByteStringC& first, - const CFX_ByteStringC& second) { - if (first.GetLength() == 0 || first.GetAt(0) != '<') - return false; - - int i; - for (i = 1; i < first.GetLength(); ++i) { - if (first.GetAt(i) == '>') { - break; - } - } - range.m_CharSize = (i - 1) / 2; - if (range.m_CharSize > 4) - return false; - - for (i = 0; i < range.m_CharSize; ++i) { - uint8_t digit1 = first.GetAt(i * 2 + 1); - uint8_t digit2 = first.GetAt(i * 2 + 2); - range.m_Lower[i] = FXSYS_toHexDigit(digit1) * 16 + FXSYS_toHexDigit(digit2); - } - - FX_DWORD size = second.GetLength(); - for (i = 0; i < range.m_CharSize; ++i) { - uint8_t digit1 = ((FX_DWORD)i * 2 + 1 < size) - ? second.GetAt((FX_STRSIZE)i * 2 + 1) - : '0'; - uint8_t digit2 = ((FX_DWORD)i * 2 + 2 < size) - ? second.GetAt((FX_STRSIZE)i * 2 + 2) - : '0'; - range.m_Upper[i] = FXSYS_toHexDigit(digit1) * 16 + FXSYS_toHexDigit(digit2); - } - return true; -} - -CPDF_CMap::CPDF_CMap() { - m_Charset = CIDSET_UNKNOWN; - m_Coding = CIDCODING_UNKNOWN; - m_CodingScheme = TwoBytes; - m_bVertical = 0; - m_bLoaded = FALSE; - m_pMapping = NULL; - m_pLeadingBytes = NULL; - m_pAddMapping = NULL; - m_pEmbedMap = NULL; - m_pUseMap = NULL; - m_nCodeRanges = 0; -} -CPDF_CMap::~CPDF_CMap() { - FX_Free(m_pMapping); - FX_Free(m_pAddMapping); - FX_Free(m_pLeadingBytes); - delete m_pUseMap; -} -void CPDF_CMap::Release() { - if (m_PredefinedCMap.IsEmpty()) { - delete this; - } -} - -FX_BOOL CPDF_CMap::LoadPredefined(CPDF_CMapManager* pMgr, - const FX_CHAR* pName, - FX_BOOL bPromptCJK) { - m_PredefinedCMap = pName; - if (m_PredefinedCMap == "Identity-H" || m_PredefinedCMap == "Identity-V") { - m_Coding = CIDCODING_CID; - m_bVertical = pName[9] == 'V'; - m_bLoaded = TRUE; - return TRUE; - } - CFX_ByteString cmapid = m_PredefinedCMap; - m_bVertical = cmapid.Right(1) == "V"; - if (cmapid.GetLength() > 2) { - cmapid = cmapid.Left(cmapid.GetLength() - 2); - } - const CPDF_PredefinedCMap* map = nullptr; - for (size_t i = 0; i < FX_ArraySize(g_PredefinedCMaps); ++i) { - if (cmapid == CFX_ByteStringC(g_PredefinedCMaps[i].m_pName)) { - map = &g_PredefinedCMaps[i]; - break; - } - } - if (!map) - return FALSE; - - m_Charset = map->m_Charset; - m_Coding = map->m_Coding; - m_CodingScheme = map->m_CodingScheme; - if (m_CodingScheme == MixedTwoBytes) { - m_pLeadingBytes = FX_Alloc(uint8_t, 256); - for (FX_DWORD i = 0; i < map->m_LeadingSegCount; ++i) { - const uint8_t* segs = map->m_LeadingSegs; - for (int b = segs[i * 2]; b <= segs[i * 2 + 1]; ++b) { - m_pLeadingBytes[b] = 1; - } - } - } - FPDFAPI_FindEmbeddedCMap(pName, m_Charset, m_Coding, m_pEmbedMap); - if (m_pEmbedMap) { - m_bLoaded = TRUE; - return TRUE; - } - return FALSE; -} -FX_BOOL CPDF_CMap::LoadEmbedded(const uint8_t* pData, FX_DWORD size) { - m_pMapping = FX_Alloc(FX_WORD, 65536); - CPDF_CMapParser parser; - parser.Initialize(this); - CPDF_SimpleParser syntax(pData, size); - while (1) { - CFX_ByteStringC word = syntax.GetWord(); - if (word.IsEmpty()) { - break; - } - parser.ParseWord(word); - } - if (m_CodingScheme == MixedFourBytes && parser.m_AddMaps.GetSize()) { - m_pAddMapping = FX_Alloc(uint8_t, parser.m_AddMaps.GetSize() + 4); - *(FX_DWORD*)m_pAddMapping = parser.m_AddMaps.GetSize() / 8; - FXSYS_memcpy(m_pAddMapping + 4, parser.m_AddMaps.GetBuffer(), - parser.m_AddMaps.GetSize()); - FXSYS_qsort(m_pAddMapping + 4, parser.m_AddMaps.GetSize() / 8, 8, - CompareDWORD); - } - return TRUE; -} - -FX_WORD CPDF_CMap::CIDFromCharCode(FX_DWORD charcode) const { - if (m_Coding == CIDCODING_CID) { - return (FX_WORD)charcode; - } - if (m_pEmbedMap) { - return FPDFAPI_CIDFromCharCode(m_pEmbedMap, charcode); - } - if (!m_pMapping) { - return (FX_WORD)charcode; - } - if (charcode >> 16) { - if (m_pAddMapping) { - void* found = FXSYS_bsearch(&charcode, m_pAddMapping + 4, - *(FX_DWORD*)m_pAddMapping, 8, CompareCID); - if (!found) { - if (m_pUseMap) { - return m_pUseMap->CIDFromCharCode(charcode); - } - return 0; - } - return (FX_WORD)(((FX_DWORD*)found)[1] % 65536 + charcode - - *(FX_DWORD*)found); - } - if (m_pUseMap) - return m_pUseMap->CIDFromCharCode(charcode); - return 0; - } - FX_DWORD CID = m_pMapping[charcode]; - if (!CID && m_pUseMap) - return m_pUseMap->CIDFromCharCode(charcode); - return (FX_WORD)CID; -} - -FX_DWORD CPDF_CMap::GetNextChar(const FX_CHAR* pString, - int nStrLen, - int& offset) const { - switch (m_CodingScheme) { - case OneByte: - return ((uint8_t*)pString)[offset++]; - case TwoBytes: - offset += 2; - return ((uint8_t*)pString)[offset - 2] * 256 + - ((uint8_t*)pString)[offset - 1]; - case MixedTwoBytes: { - uint8_t byte1 = ((uint8_t*)pString)[offset++]; - if (!m_pLeadingBytes[byte1]) { - return byte1; - } - uint8_t byte2 = ((uint8_t*)pString)[offset++]; - return byte1 * 256 + byte2; - } - case MixedFourBytes: { - uint8_t codes[4]; - int char_size = 1; - codes[0] = ((uint8_t*)pString)[offset++]; - CMap_CodeRange* pRanges = (CMap_CodeRange*)m_pLeadingBytes; - while (1) { - int ret = CheckCodeRange(codes, char_size, pRanges, m_nCodeRanges); - if (ret == 0) { - return 0; - } - if (ret == 2) { - FX_DWORD charcode = 0; - for (int i = 0; i < char_size; i++) { - charcode = (charcode << 8) + codes[i]; - } - return charcode; - } - if (char_size == 4 || offset == nStrLen) { - return 0; - } - codes[char_size++] = ((uint8_t*)pString)[offset++]; - } - break; - } - } - return 0; -} -int CPDF_CMap::GetCharSize(FX_DWORD charcode) const { - switch (m_CodingScheme) { - case OneByte: - return 1; - case TwoBytes: - return 2; - case MixedTwoBytes: - case MixedFourBytes: - if (charcode < 0x100) { - return 1; - } - if (charcode < 0x10000) { - return 2; - } - if (charcode < 0x1000000) { - return 3; - } - return 4; - } - return 1; -} -int CPDF_CMap::CountChar(const FX_CHAR* pString, int size) const { - switch (m_CodingScheme) { - case OneByte: - return size; - case TwoBytes: - return (size + 1) / 2; - case MixedTwoBytes: { - int count = 0; - for (int i = 0; i < size; i++) { - count++; - if (m_pLeadingBytes[((uint8_t*)pString)[i]]) { - i++; - } - } - return count; - } - case MixedFourBytes: { - int count = 0, offset = 0; - while (offset < size) { - GetNextChar(pString, size, offset); - count++; - } - return count; - } - } - return size; -} - -int CPDF_CMap::AppendChar(FX_CHAR* str, FX_DWORD charcode) const { - switch (m_CodingScheme) { - case OneByte: - str[0] = (uint8_t)charcode; - return 1; - case TwoBytes: - str[0] = (uint8_t)(charcode / 256); - str[1] = (uint8_t)(charcode % 256); - return 2; - case MixedTwoBytes: - case MixedFourBytes: - if (charcode < 0x100) { - CMap_CodeRange* pRanges = (CMap_CodeRange*)m_pLeadingBytes; - int iSize = GetCharSizeImpl(charcode, pRanges, m_nCodeRanges); - if (iSize == 0) { - iSize = 1; - } - if (iSize > 1) { - FXSYS_memset(str, 0, sizeof(uint8_t) * iSize); - } - str[iSize - 1] = (uint8_t)charcode; - return iSize; - } - if (charcode < 0x10000) { - str[0] = (uint8_t)(charcode >> 8); - str[1] = (uint8_t)charcode; - return 2; - } - if (charcode < 0x1000000) { - str[0] = (uint8_t)(charcode >> 16); - str[1] = (uint8_t)(charcode >> 8); - str[2] = (uint8_t)charcode; - return 3; - } - str[0] = (uint8_t)(charcode >> 24); - str[1] = (uint8_t)(charcode >> 16); - str[2] = (uint8_t)(charcode >> 8); - str[3] = (uint8_t)charcode; - return 4; - } - return 0; -} -CPDF_CID2UnicodeMap::CPDF_CID2UnicodeMap() { - m_EmbeddedCount = 0; -} -CPDF_CID2UnicodeMap::~CPDF_CID2UnicodeMap() {} -FX_BOOL CPDF_CID2UnicodeMap::Initialize() { - return TRUE; -} -FX_BOOL CPDF_CID2UnicodeMap::IsLoaded() { - return m_EmbeddedCount != 0; -} -FX_WCHAR CPDF_CID2UnicodeMap::UnicodeFromCID(FX_WORD CID) { - if (m_Charset == CIDSET_UNICODE) { - return CID; - } - if (CID < m_EmbeddedCount) { - return m_pEmbeddedMap[CID]; - } - return 0; -} - -void CPDF_CID2UnicodeMap::Load(CPDF_CMapManager* pMgr, - CIDSet charset, - FX_BOOL bPromptCJK) { - m_Charset = charset; - FPDFAPI_LoadCID2UnicodeMap(charset, m_pEmbeddedMap, m_EmbeddedCount); -} - -CPDF_CIDFont::CPDF_CIDFont() - : m_pCMap(nullptr), - m_pAllocatedCMap(nullptr), - m_pCID2UnicodeMap(nullptr), - m_pCIDToGIDMap(nullptr), - m_bCIDIsGID(FALSE), - m_pAnsiWidths(nullptr), - m_bAdobeCourierStd(FALSE), - m_pTTGSUBTable(nullptr) { -} - -CPDF_CIDFont::~CPDF_CIDFont() { - if (m_pAnsiWidths) { - FX_Free(m_pAnsiWidths); - } - delete m_pAllocatedCMap; - delete m_pCIDToGIDMap; - delete m_pTTGSUBTable; -} - -bool CPDF_CIDFont::IsCIDFont() const { - return true; -} - -const CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() const { - return this; -} - -CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() { - return this; -} - -FX_WORD CPDF_CIDFont::CIDFromCharCode(FX_DWORD charcode) const { - if (!m_pCMap) { - return (FX_WORD)charcode; - } - return m_pCMap->CIDFromCharCode(charcode); -} - -FX_BOOL CPDF_CIDFont::IsVertWriting() const { - return m_pCMap ? m_pCMap->IsVertWriting() : FALSE; -} - -CFX_WideString CPDF_CIDFont::UnicodeFromCharCode(FX_DWORD charcode) const { - CFX_WideString str = CPDF_Font::UnicodeFromCharCode(charcode); - if (!str.IsEmpty()) - return str; - FX_WCHAR ret = GetUnicodeFromCharCode(charcode); - if (ret == 0) - return CFX_WideString(); - return ret; -} - -FX_WCHAR CPDF_CIDFont::GetUnicodeFromCharCode(FX_DWORD charcode) const { - switch (m_pCMap->m_Coding) { - case CIDCODING_UCS2: - case CIDCODING_UTF16: - return (FX_WCHAR)charcode; - case CIDCODING_CID: - if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) { - return 0; - } - return m_pCID2UnicodeMap->UnicodeFromCID((FX_WORD)charcode); - } - if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap || - !m_pCID2UnicodeMap->IsLoaded()) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - FX_WCHAR unicode; - int charsize = 1; - if (charcode > 255) { - charcode = (charcode % 256) * 256 + (charcode / 256); - charsize = 2; - } - int ret = FXSYS_MultiByteToWideChar(g_CharsetCPs[m_pCMap->m_Coding], 0, - (const FX_CHAR*)&charcode, charsize, - &unicode, 1); - if (ret != 1) { - return 0; - } - return unicode; -#endif - if (m_pCMap->m_pEmbedMap) { - return EmbeddedUnicodeFromCharcode(m_pCMap->m_pEmbedMap, - m_pCMap->m_Charset, charcode); - } - return 0; - } - return m_pCID2UnicodeMap->UnicodeFromCID(CIDFromCharCode(charcode)); -} - -FX_DWORD CPDF_CIDFont::CharCodeFromUnicode(FX_WCHAR unicode) const { - FX_DWORD charcode = CPDF_Font::CharCodeFromUnicode(unicode); - if (charcode) - return charcode; - switch (m_pCMap->m_Coding) { - case CIDCODING_UNKNOWN: - return 0; - case CIDCODING_UCS2: - case CIDCODING_UTF16: - return unicode; - case CIDCODING_CID: { - if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) { - return 0; - } - FX_DWORD CID = 0; - while (CID < 65536) { - FX_WCHAR this_unicode = m_pCID2UnicodeMap->UnicodeFromCID((FX_WORD)CID); - if (this_unicode == unicode) { - return CID; - } - CID++; - } - break; - } - } - - if (unicode < 0x80) { - return static_cast(unicode); - } - if (m_pCMap->m_Coding == CIDCODING_CID) { - return 0; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - uint8_t buffer[32]; - int ret = - FXSYS_WideCharToMultiByte(g_CharsetCPs[m_pCMap->m_Coding], 0, &unicode, 1, - (char*)buffer, 4, NULL, NULL); - if (ret == 1) { - return buffer[0]; - } - if (ret == 2) { - return buffer[0] * 256 + buffer[1]; - } -#else - if (m_pCMap->m_pEmbedMap) { - return EmbeddedCharcodeFromUnicode(m_pCMap->m_pEmbedMap, m_pCMap->m_Charset, - unicode); - } -#endif - return 0; -} - -FX_BOOL CPDF_CIDFont::Load() { - if (m_pFontDict->GetStringBy("Subtype") == "TrueType") { - return LoadGB2312(); - } - CPDF_Array* pFonts = m_pFontDict->GetArrayBy("DescendantFonts"); - if (!pFonts) { - return FALSE; - } - if (pFonts->GetCount() != 1) { - return FALSE; - } - CPDF_Dictionary* pCIDFontDict = pFonts->GetDictAt(0); - if (!pCIDFontDict) { - return FALSE; - } - m_BaseFont = pCIDFontDict->GetStringBy("BaseFont"); - if ((m_BaseFont.Compare("CourierStd") == 0 || - m_BaseFont.Compare("CourierStd-Bold") == 0 || - m_BaseFont.Compare("CourierStd-BoldOblique") == 0 || - m_BaseFont.Compare("CourierStd-Oblique") == 0) && - !IsEmbedded()) { - m_bAdobeCourierStd = TRUE; - } - CPDF_Dictionary* pFontDesc = pCIDFontDict->GetDictBy("FontDescriptor"); - if (pFontDesc) { - LoadFontDescriptor(pFontDesc); - } - CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding"); - if (!pEncoding) { - return FALSE; - } - CFX_ByteString subtype = pCIDFontDict->GetStringBy("Subtype"); - m_bType1 = (subtype == "CIDFontType0"); - - if (pEncoding->IsName()) { - CFX_ByteString cmap = pEncoding->GetString(); - m_pCMap = - CPDF_ModuleMgr::Get() - ->GetPageModule() - ->GetFontGlobals() - ->m_CMapManager.GetPredefinedCMap(cmap, m_pFontFile && m_bType1); - } else if (CPDF_Stream* pStream = pEncoding->AsStream()) { - m_pAllocatedCMap = m_pCMap = new CPDF_CMap; - CPDF_StreamAcc acc; - acc.LoadAllData(pStream, FALSE); - m_pCMap->LoadEmbedded(acc.GetData(), acc.GetSize()); - } else { - return FALSE; - } - if (!m_pCMap) { - return FALSE; - } - m_Charset = m_pCMap->m_Charset; - if (m_Charset == CIDSET_UNKNOWN) { - CPDF_Dictionary* pCIDInfo = pCIDFontDict->GetDictBy("CIDSystemInfo"); - if (pCIDInfo) { - m_Charset = CharsetFromOrdering(pCIDInfo->GetStringBy("Ordering")); - } - } - if (m_Charset != CIDSET_UNKNOWN) - m_pCID2UnicodeMap = - CPDF_ModuleMgr::Get() - ->GetPageModule() - ->GetFontGlobals() - ->m_CMapManager.GetCID2UnicodeMap( - m_Charset, - !m_pFontFile && (m_pCMap->m_Coding == CIDCODING_CID || - pCIDFontDict->KeyExist("W"))); - if (m_Font.GetFace()) { - if (m_bType1) { - FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE); - } else { - FT_UseCIDCharmap(m_Font.GetFace(), m_pCMap->m_Coding); - } - } - m_DefaultWidth = pCIDFontDict->GetIntegerBy("DW", 1000); - CPDF_Array* pWidthArray = pCIDFontDict->GetArrayBy("W"); - if (pWidthArray) { - LoadMetricsArray(pWidthArray, m_WidthList, 1); - } - if (!IsEmbedded()) { - LoadSubstFont(); - } - if (1) { - if (m_pFontFile || (GetSubstFont()->m_SubstFlags & FXFONT_SUBST_EXACT)) { - CPDF_Object* pmap = pCIDFontDict->GetElementValue("CIDToGIDMap"); - if (pmap) { - if (CPDF_Stream* pStream = pmap->AsStream()) { - m_pCIDToGIDMap = new CPDF_StreamAcc; - m_pCIDToGIDMap->LoadAllData(pStream, FALSE); - } else if (pmap->GetString() == "Identity") { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (m_pFontFile) { - m_bCIDIsGID = TRUE; - } -#else - m_bCIDIsGID = TRUE; -#endif - } - } - } - } - CheckFontMetrics(); - if (IsVertWriting()) { - pWidthArray = pCIDFontDict->GetArrayBy("W2"); - if (pWidthArray) { - LoadMetricsArray(pWidthArray, m_VertMetrics, 3); - } - CPDF_Array* pDefaultArray = pCIDFontDict->GetArrayBy("DW2"); - if (pDefaultArray) { - m_DefaultVY = pDefaultArray->GetIntegerAt(0); - m_DefaultW1 = pDefaultArray->GetIntegerAt(1); - } else { - m_DefaultVY = 880; - m_DefaultW1 = -1000; - } - } - return TRUE; -} - -FX_RECT CPDF_CIDFont::GetCharBBox(FX_DWORD charcode, int level) { - if (charcode < 256 && m_CharBBox[charcode].right != FX_SMALL_RECT::kInvalid) - return FX_RECT(m_CharBBox[charcode]); - - FX_RECT rect; - FX_BOOL bVert = FALSE; - int glyph_index = GlyphFromCharCode(charcode, &bVert); - FXFT_Face face = m_Font.GetFace(); - if (face) { - if (FXFT_Is_Face_Tricky(face)) { - int err = FXFT_Load_Glyph(face, glyph_index, - FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); - if (!err) { - FXFT_BBox cbox; - FXFT_Glyph glyph; - err = FXFT_Get_Glyph(((FXFT_Face)face)->glyph, &glyph); - if (!err) { - FXFT_Glyph_Get_CBox(glyph, FXFT_GLYPH_BBOX_PIXELS, &cbox); - int pixel_size_x = ((FXFT_Face)face)->size->metrics.x_ppem; - int pixel_size_y = ((FXFT_Face)face)->size->metrics.y_ppem; - if (pixel_size_x == 0 || pixel_size_y == 0) { - rect = FX_RECT(cbox.xMin, cbox.yMax, cbox.xMax, cbox.yMin); - } else { - rect = FX_RECT(cbox.xMin * 1000 / pixel_size_x, - cbox.yMax * 1000 / pixel_size_y, - cbox.xMax * 1000 / pixel_size_x, - cbox.yMin * 1000 / pixel_size_y); - } - if (rect.top > FXFT_Get_Face_Ascender(face)) { - rect.top = FXFT_Get_Face_Ascender(face); - } - if (rect.bottom < FXFT_Get_Face_Descender(face)) { - rect.bottom = FXFT_Get_Face_Descender(face); - } - FXFT_Done_Glyph(glyph); - } - } - } else { - int err = FXFT_Load_Glyph(face, glyph_index, FXFT_LOAD_NO_SCALE); - if (err == 0) { - rect = FX_RECT(TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face), - TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face), - TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) + - FXFT_Get_Glyph_Width(face), - face), - TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) - - FXFT_Get_Glyph_Height(face), - face)); - rect.top += rect.top / 64; - } - } - } - if (!m_pFontFile && m_Charset == CIDSET_JAPAN1) { - FX_WORD CID = CIDFromCharCode(charcode); - const uint8_t* pTransform = GetCIDTransform(CID); - if (pTransform && !bVert) { - CFX_Matrix matrix(CIDTransformToFloat(pTransform[0]), - CIDTransformToFloat(pTransform[1]), - CIDTransformToFloat(pTransform[2]), - CIDTransformToFloat(pTransform[3]), - CIDTransformToFloat(pTransform[4]) * 1000, - CIDTransformToFloat(pTransform[5]) * 1000); - CFX_FloatRect rect_f(rect); - rect_f.Transform(&matrix); - rect = rect_f.GetOutterRect(); - } - } - if (charcode < 256) - m_CharBBox[charcode] = rect.ToSmallRect(); - - return rect; -} -int CPDF_CIDFont::GetCharWidthF(FX_DWORD charcode, int level) { - if (m_pAnsiWidths && charcode < 0x80) { - return m_pAnsiWidths[charcode]; - } - FX_WORD cid = CIDFromCharCode(charcode); - int size = m_WidthList.GetSize(); - FX_DWORD* list = m_WidthList.GetData(); - for (int i = 0; i < size; i += 3) { - if (cid >= list[i] && cid <= list[i + 1]) { - return (int)list[i + 2]; - } - } - return m_DefaultWidth; -} -short CPDF_CIDFont::GetVertWidth(FX_WORD CID) const { - FX_DWORD vertsize = m_VertMetrics.GetSize() / 5; - if (vertsize == 0) { - return m_DefaultW1; - } - const FX_DWORD* pTable = m_VertMetrics.GetData(); - for (FX_DWORD i = 0; i < vertsize; i++) - if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) { - return (short)(int)pTable[i * 5 + 2]; - } - return m_DefaultW1; -} -void CPDF_CIDFont::GetVertOrigin(FX_WORD CID, short& vx, short& vy) const { - FX_DWORD vertsize = m_VertMetrics.GetSize() / 5; - if (vertsize) { - const FX_DWORD* pTable = m_VertMetrics.GetData(); - for (FX_DWORD i = 0; i < vertsize; i++) - if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) { - vx = (short)(int)pTable[i * 5 + 3]; - vy = (short)(int)pTable[i * 5 + 4]; - return; - } - } - FX_DWORD dwWidth = m_DefaultWidth; - int size = m_WidthList.GetSize(); - const FX_DWORD* list = m_WidthList.GetData(); - for (int i = 0; i < size; i += 3) { - if (CID >= list[i] && CID <= list[i + 1]) { - dwWidth = (FX_WORD)list[i + 2]; - break; - } - } - vx = (short)dwWidth / 2; - vy = (short)m_DefaultVY; -} -int CPDF_CIDFont::GetGlyphIndex(FX_DWORD unicode, FX_BOOL* pVertGlyph) { - if (pVertGlyph) { - *pVertGlyph = FALSE; - } - FXFT_Face face = m_Font.GetFace(); - int index = FXFT_Get_Char_Index(face, unicode); - if (unicode == 0x2502) { - return index; - } - if (index && IsVertWriting()) { - if (m_pTTGSUBTable) { - uint32_t vindex = 0; - m_pTTGSUBTable->GetVerticalGlyph(index, &vindex); - if (vindex) { - index = vindex; - if (pVertGlyph) { - *pVertGlyph = TRUE; - } - } - return index; - } - if (!m_Font.GetSubData()) { - unsigned long length = 0; - int error = FXFT_Load_Sfnt_Table(face, FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, - NULL, &length); - if (!error) { - m_Font.SetSubData(FX_Alloc(uint8_t, length)); - } - } - int error = FXFT_Load_Sfnt_Table(face, FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, - m_Font.GetSubData(), NULL); - if (!error && m_Font.GetSubData()) { - m_pTTGSUBTable = new CFX_CTTGSUBTable; - m_pTTGSUBTable->LoadGSUBTable((FT_Bytes)m_Font.GetSubData()); - uint32_t vindex = 0; - m_pTTGSUBTable->GetVerticalGlyph(index, &vindex); - if (vindex) { - index = vindex; - if (pVertGlyph) { - *pVertGlyph = TRUE; - } - } - } - return index; - } - if (pVertGlyph) { - *pVertGlyph = FALSE; - } - return index; -} -int CPDF_CIDFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) { - if (pVertGlyph) { - *pVertGlyph = FALSE; - } - if (!m_pFontFile && !m_pCIDToGIDMap) { - FX_WORD cid = CIDFromCharCode(charcode); - FX_WCHAR unicode = 0; - if (m_bCIDIsGID) { -#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ - return cid; -#else - if (m_Flags & PDFFONT_SYMBOLIC) { - return cid; - } - CFX_WideString uni_str = UnicodeFromCharCode(charcode); - if (uni_str.IsEmpty()) { - return cid; - } - unicode = uni_str.GetAt(0); -#endif - } else { - if (cid && m_pCID2UnicodeMap && m_pCID2UnicodeMap->IsLoaded()) { - unicode = m_pCID2UnicodeMap->UnicodeFromCID(cid); - } - if (unicode == 0) { - unicode = GetUnicodeFromCharCode(charcode); - } - if (unicode == 0 && !(m_Flags & PDFFONT_SYMBOLIC)) { - unicode = UnicodeFromCharCode(charcode).GetAt(0); - } - } - FXFT_Face face = m_Font.GetFace(); - if (unicode == 0) { - if (!m_bAdobeCourierStd) { - return charcode == 0 ? -1 : (int)charcode; - } - charcode += 31; - int index = 0, iBaseEncoding; - FX_BOOL bMSUnicode = FT_UseTTCharmap(face, 3, 1); - FX_BOOL bMacRoman = FALSE; - if (!bMSUnicode) { - bMacRoman = FT_UseTTCharmap(face, 1, 0); - } - iBaseEncoding = PDFFONT_ENCODING_STANDARD; - if (bMSUnicode) { - iBaseEncoding = PDFFONT_ENCODING_WINANSI; - } else if (bMacRoman) { - iBaseEncoding = PDFFONT_ENCODING_MACROMAN; - } - const FX_CHAR* name = GetAdobeCharName(iBaseEncoding, NULL, charcode); - if (!name) { - return charcode == 0 ? -1 : (int)charcode; - } - FX_WORD unicode = PDF_UnicodeFromAdobeName(name); - if (unicode) { - if (bMSUnicode) { - index = FXFT_Get_Char_Index(face, unicode); - } else if (bMacRoman) { - FX_DWORD maccode = - FT_CharCodeFromUnicode(FXFT_ENCODING_APPLE_ROMAN, unicode); - index = !maccode ? FXFT_Get_Name_Index(face, (char*)name) - : FXFT_Get_Char_Index(face, maccode); - } else { - return FXFT_Get_Char_Index(face, unicode); - } - } else { - return charcode == 0 ? -1 : (int)charcode; - } - if (index == 0 || index == 0xffff) { - return charcode == 0 ? -1 : (int)charcode; - } - return index; - } - if (m_Charset == CIDSET_JAPAN1) { - if (unicode == '\\') { - unicode = '/'; -#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ - } else if (unicode == 0xa5) { - unicode = 0x5c; -#endif - } - } - if (!face) - return unicode; - - int err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE); - if (err != 0) { - int i; - for (i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) { - FX_DWORD ret = FT_CharCodeFromUnicode( - FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]), - (FX_WCHAR)charcode); - if (ret == 0) { - continue; - } - FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]); - unicode = (FX_WCHAR)ret; - break; - } - if (i == FXFT_Get_Face_CharmapCount(face) && i) { - FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]); - unicode = (FX_WCHAR)charcode; - } - } - if (FXFT_Get_Face_Charmap(face)) { - int index = GetGlyphIndex(unicode, pVertGlyph); - if (index == 0) - return -1; - return index; - } - return unicode; - } - if (!m_Font.GetFace()) - return -1; - - FX_WORD cid = CIDFromCharCode(charcode); - if (m_bType1) { - if (!m_pCIDToGIDMap) { - return cid; - } - } else { - if (!m_pCIDToGIDMap) { - if (m_pFontFile && !m_pCMap->m_pMapping) - return cid; - if (m_pCMap->m_Coding == CIDCODING_UNKNOWN || - !FXFT_Get_Face_Charmap(m_Font.GetFace())) { - return cid; - } - if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmap(m_Font.GetFace())) == - FXFT_ENCODING_UNICODE) { - CFX_WideString unicode_str = UnicodeFromCharCode(charcode); - if (unicode_str.IsEmpty()) { - return -1; - } - charcode = unicode_str.GetAt(0); - } - return GetGlyphIndex(charcode, pVertGlyph); - } - } - FX_DWORD byte_pos = cid * 2; - if (byte_pos + 2 > m_pCIDToGIDMap->GetSize()) - return -1; - - const uint8_t* pdata = m_pCIDToGIDMap->GetData() + byte_pos; - return pdata[0] * 256 + pdata[1]; -} -FX_DWORD CPDF_CIDFont::GetNextChar(const FX_CHAR* pString, - int nStrLen, - int& offset) const { - return m_pCMap->GetNextChar(pString, nStrLen, offset); -} -int CPDF_CIDFont::GetCharSize(FX_DWORD charcode) const { - return m_pCMap->GetCharSize(charcode); -} -int CPDF_CIDFont::CountChar(const FX_CHAR* pString, int size) const { - return m_pCMap->CountChar(pString, size); -} -int CPDF_CIDFont::AppendChar(FX_CHAR* str, FX_DWORD charcode) const { - return m_pCMap->AppendChar(str, charcode); -} -FX_BOOL CPDF_CIDFont::IsUnicodeCompatible() const { - if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap || - !m_pCID2UnicodeMap->IsLoaded()) { - return m_pCMap->m_Coding != CIDCODING_UNKNOWN; - } - return TRUE; -} -FX_BOOL CPDF_CIDFont::IsFontStyleFromCharCode(FX_DWORD charcode) const { - return TRUE; -} -void CPDF_CIDFont::LoadSubstFont() { - m_Font.LoadSubst(m_BaseFont, !m_bType1, m_Flags, m_StemV * 5, m_ItalicAngle, - g_CharsetCPs[m_Charset], IsVertWriting()); -} -void CPDF_CIDFont::LoadMetricsArray(CPDF_Array* pArray, - CFX_DWordArray& result, - int nElements) { - int width_status = 0; - int iCurElement = 0; - int first_code = 0, last_code; - FX_DWORD count = pArray->GetCount(); - for (FX_DWORD i = 0; i < count; i++) { - CPDF_Object* pObj = pArray->GetElementValue(i); - if (!pObj) - continue; - - if (CPDF_Array* pArray = pObj->AsArray()) { - if (width_status != 1) - return; - - FX_DWORD count = pArray->GetCount(); - for (FX_DWORD j = 0; j < count; j += nElements) { - result.Add(first_code); - result.Add(first_code); - for (int k = 0; k < nElements; k++) { - result.Add(pArray->GetIntegerAt(j + k)); - } - first_code++; - } - width_status = 0; - } else { - if (width_status == 0) { - first_code = pObj->GetInteger(); - width_status = 1; - } else if (width_status == 1) { - last_code = pObj->GetInteger(); - width_status = 2; - iCurElement = 0; - } else { - if (!iCurElement) { - result.Add(first_code); - result.Add(last_code); - } - result.Add(pObj->GetInteger()); - iCurElement++; - if (iCurElement == nElements) { - width_status = 0; - } - } - } - } -} - -// static -FX_FLOAT CPDF_CIDFont::CIDTransformToFloat(uint8_t ch) { - if (ch < 128) { - return ch * 1.0f / 127; - } - return (-255 + ch) * 1.0f / 127; -} - -FX_BOOL CPDF_CIDFont::LoadGB2312() { - m_BaseFont = m_pFontDict->GetStringBy("BaseFont"); - CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor"); - if (pFontDesc) { - LoadFontDescriptor(pFontDesc); - } - m_Charset = CIDSET_GB1; - m_bType1 = FALSE; - m_pCMap = CPDF_ModuleMgr::Get() - ->GetPageModule() - ->GetFontGlobals() - ->m_CMapManager.GetPredefinedCMap("GBK-EUC-H", FALSE); - m_pCID2UnicodeMap = CPDF_ModuleMgr::Get() - ->GetPageModule() - ->GetFontGlobals() - ->m_CMapManager.GetCID2UnicodeMap(m_Charset, FALSE); - if (!IsEmbedded()) { - LoadSubstFont(); - } - CheckFontMetrics(); - m_DefaultWidth = 1000; - m_pAnsiWidths = FX_Alloc(FX_WORD, 128); - for (int i = 32; i < 127; i++) { - m_pAnsiWidths[i] = 500; - } - return TRUE; -} - -const uint8_t* CPDF_CIDFont::GetCIDTransform(FX_WORD CID) const { - if (m_Charset != CIDSET_JAPAN1 || m_pFontFile) - return nullptr; - - const struct CIDTransform* found = (const struct CIDTransform*)FXSYS_bsearch( - &CID, g_Japan1_VertCIDs, FX_ArraySize(g_Japan1_VertCIDs), - sizeof(g_Japan1_VertCIDs[0]), CompareCIDTransform); - return found ? &found->a : nullptr; -} diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp deleted file mode 100644 index 61961c95e6..0000000000 --- a/core/src/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/src/fpdfapi/fpdf_font/font_int.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace { - -bool uint_ranges_equal(uint8_t* a, uint8_t* b, size_t count) { - for (size_t i = 0; i < count; ++i) { - if (a[i] != b[i]) - return false; - } - return true; -} - -} // namespace - -TEST(fpdf_font_cid, CMap_GetCode) { - EXPECT_EQ(0, CPDF_CMapParser::CMap_GetCode("")); - EXPECT_EQ(0, CPDF_CMapParser::CMap_GetCode("<")); - EXPECT_EQ(194, CPDF_CMapParser::CMap_GetCode("", "")); - EXPECT_EQ(5, range.m_CharSize); - - EXPECT_TRUE( - CPDF_CMapParser::CMap_GetCodeRange(range, "<12345678>", "<87654321>")); - EXPECT_EQ(4, range.m_CharSize); - { - uint8_t lower[4] = {18, 52, 86, 120}; - uint8_t upper[4] = {135, 101, 67, 33}; - EXPECT_TRUE(uint_ranges_equal(lower, range.m_Lower, range.m_CharSize)); - EXPECT_TRUE(uint_ranges_equal(upper, range.m_Upper, range.m_CharSize)); - } - - // Hex characters - EXPECT_TRUE(CPDF_CMapParser::CMap_GetCodeRange(range, "", "")); - EXPECT_EQ(1, range.m_CharSize); - EXPECT_EQ(161, range.m_Lower[0]); - EXPECT_EQ(243, range.m_Upper[0]); - - // The second string should return 0's if it is shorter - EXPECT_TRUE(CPDF_CMapParser::CMap_GetCodeRange(range, "", "")); - EXPECT_EQ(1, range.m_CharSize); - EXPECT_EQ(161, range.m_Lower[0]); - EXPECT_EQ(0, range.m_Upper[0]); -} diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font_unittest.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font_unittest.cpp deleted file mode 100644 index 7ea17408ee..0000000000 --- a/core/src/fpdfapi/fpdf_font/fpdf_font_unittest.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/src/fpdfapi/fpdf_font/font_int.h" -#include "testing/gtest/include/gtest/gtest.h" - -TEST(fpdf_font, StringToCode) { - EXPECT_EQ(0, CPDF_ToUnicodeMap::StringToCode("")); - EXPECT_EQ(194, CPDF_ToUnicodeMap::StringToCode(" - -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge.h" -#include "third_party/base/stl_util.h" - -CFX_GlyphMap::CFX_GlyphMap() {} -CFX_GlyphMap::~CFX_GlyphMap() {} -extern "C" { -static int _CompareInt(const void* p1, const void* p2) { - return (*(FX_DWORD*)p1) - (*(FX_DWORD*)p2); -} -}; -struct _IntPair { - int32_t key; - int32_t value; -}; -void CFX_GlyphMap::SetAt(int key, int value) { - FX_DWORD count = m_Buffer.GetSize() / sizeof(_IntPair); - _IntPair* buf = (_IntPair*)m_Buffer.GetBuffer(); - _IntPair pair = {key, value}; - if (count == 0 || key > buf[count - 1].key) { - m_Buffer.AppendBlock(&pair, sizeof(_IntPair)); - return; - } - int low = 0, high = count - 1; - while (low <= high) { - int mid = (low + high) / 2; - if (buf[mid].key < key) { - low = mid + 1; - } else if (buf[mid].key > key) { - high = mid - 1; - } else { - buf[mid].value = value; - return; - } - } - m_Buffer.InsertBlock(low * sizeof(_IntPair), &pair, sizeof(_IntPair)); -} -FX_BOOL CFX_GlyphMap::Lookup(int key, int& value) { - void* pResult = FXSYS_bsearch(&key, m_Buffer.GetBuffer(), - m_Buffer.GetSize() / sizeof(_IntPair), - sizeof(_IntPair), _CompareInt); - if (!pResult) { - return FALSE; - } - value = ((FX_DWORD*)pResult)[1]; - return TRUE; -} -bool CFX_CTTGSUBTable::LoadGSUBTable(FT_Bytes gsub) { - header.Version = gsub[0] << 24 | gsub[1] << 16 | gsub[2] << 8 | gsub[3]; - if (header.Version != 0x00010000) { - return false; - } - header.ScriptList = gsub[4] << 8 | gsub[5]; - header.FeatureList = gsub[6] << 8 | gsub[7]; - header.LookupList = gsub[8] << 8 | gsub[9]; - return Parse(&gsub[header.ScriptList], &gsub[header.FeatureList], - &gsub[header.LookupList]); -} -bool CFX_CTTGSUBTable::GetVerticalGlyph(uint32_t glyphnum, - uint32_t* vglyphnum) { - uint32_t tag[] = { - (uint8_t)'v' << 24 | (uint8_t)'r' << 16 | (uint8_t)'t' << 8 | - (uint8_t)'2', - (uint8_t)'v' << 24 | (uint8_t)'e' << 16 | (uint8_t)'r' << 8 | - (uint8_t)'t', - }; - if (!m_bFeautureMapLoad) { - for (int i = 0; i < ScriptList.ScriptCount; i++) { - for (int j = 0; j < (ScriptList.ScriptRecord + i)->Script.LangSysCount; - ++j) { - for (int k = 0; - k < ((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) - ->LangSys.FeatureCount; - ++k) { - FX_DWORD index = - *(((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) - ->LangSys.FeatureIndex + - k); - if (FeatureList.FeatureRecord[index].FeatureTag == tag[0] || - FeatureList.FeatureRecord[index].FeatureTag == tag[1]) { - if (!pdfium::ContainsKey(m_featureMap, index)) { - m_featureMap[index] = index; - } - } - } - } - } - if (m_featureMap.empty()) { - for (int i = 0; i < FeatureList.FeatureCount; i++) { - if (FeatureList.FeatureRecord[i].FeatureTag == tag[0] || - FeatureList.FeatureRecord[i].FeatureTag == tag[1]) { - m_featureMap[i] = i; - } - } - } - m_bFeautureMapLoad = TRUE; - } - for (const auto& pair : m_featureMap) { - if (GetVerticalGlyphSub(glyphnum, vglyphnum, - &FeatureList.FeatureRecord[pair.second].Feature)) { - return true; - } - } - return false; -} -bool CFX_CTTGSUBTable::GetVerticalGlyphSub(uint32_t glyphnum, - uint32_t* vglyphnum, - struct TFeature* Feature) { - for (int i = 0; i < Feature->LookupCount; i++) { - int index = Feature->LookupListIndex[i]; - if (index < 0 || LookupList.LookupCount < index) { - continue; - } - if (LookupList.Lookup[index].LookupType == 1) { - if (GetVerticalGlyphSub2(glyphnum, vglyphnum, - &LookupList.Lookup[index])) { - return true; - } - } - } - return false; -} -bool CFX_CTTGSUBTable::GetVerticalGlyphSub2(uint32_t glyphnum, - uint32_t* vglyphnum, - struct TLookup* Lookup) { - for (int i = 0; i < Lookup->SubTableCount; i++) { - switch (Lookup->SubTable[i]->SubstFormat) { - case 1: { - TSingleSubstFormat1* tbl1 = (TSingleSubstFormat1*)Lookup->SubTable[i]; - if (GetCoverageIndex(tbl1->Coverage, glyphnum) >= 0) { - *vglyphnum = glyphnum + tbl1->DeltaGlyphID; - return true; - } - break; - } - case 2: { - TSingleSubstFormat2* tbl2 = (TSingleSubstFormat2*)Lookup->SubTable[i]; - int index = -1; - index = GetCoverageIndex(tbl2->Coverage, glyphnum); - if (0 <= index && index < tbl2->GlyphCount) { - *vglyphnum = tbl2->Substitute[index]; - return true; - } - break; - } - } - } - return false; -} -int CFX_CTTGSUBTable::GetCoverageIndex(struct TCoverageFormatBase* Coverage, - uint32_t g) { - int i = 0; - if (!Coverage) { - return -1; - } - switch (Coverage->CoverageFormat) { - case 1: { - TCoverageFormat1* c1 = (TCoverageFormat1*)Coverage; - for (i = 0; i < c1->GlyphCount; i++) { - if ((uint32_t)c1->GlyphArray[i] == g) { - return i; - } - } - return -1; - } - case 2: { - TCoverageFormat2* c2 = (TCoverageFormat2*)Coverage; - for (i = 0; i < c2->RangeCount; i++) { - uint32_t s = c2->RangeRecord[i].Start; - uint32_t e = c2->RangeRecord[i].End; - uint32_t si = c2->RangeRecord[i].StartCoverageIndex; - if (s <= g && g <= e) { - return si + g - s; - } - } - return -1; - } - } - return -1; -} -bool CFX_CTTGSUBTable::Parse(FT_Bytes scriptlist, - FT_Bytes featurelist, - FT_Bytes lookuplist) { - ParseScriptList(scriptlist, &ScriptList); - ParseFeatureList(featurelist, &FeatureList); - ParseLookupList(lookuplist, &LookupList); - return true; -} -void CFX_CTTGSUBTable::ParseScriptList(FT_Bytes raw, struct TScriptList* rec) { - int i; - FT_Bytes sp = raw; - rec->ScriptCount = GetUInt16(sp); - if (rec->ScriptCount <= 0) { - return; - } - rec->ScriptRecord = new struct TScriptRecord[rec->ScriptCount]; - for (i = 0; i < rec->ScriptCount; i++) { - rec->ScriptRecord[i].ScriptTag = GetUInt32(sp); - uint16_t offset = GetUInt16(sp); - ParseScript(&raw[offset], &rec->ScriptRecord[i].Script); - } -} -void CFX_CTTGSUBTable::ParseScript(FT_Bytes raw, struct TScript* rec) { - int i; - FT_Bytes sp = raw; - rec->DefaultLangSys = GetUInt16(sp); - rec->LangSysCount = GetUInt16(sp); - if (rec->LangSysCount <= 0) { - return; - } - rec->LangSysRecord = new struct TLangSysRecord[rec->LangSysCount]; - for (i = 0; i < rec->LangSysCount; i++) { - rec->LangSysRecord[i].LangSysTag = GetUInt32(sp); - uint16_t offset = GetUInt16(sp); - ParseLangSys(&raw[offset], &rec->LangSysRecord[i].LangSys); - } -} -void CFX_CTTGSUBTable::ParseLangSys(FT_Bytes raw, struct TLangSys* rec) { - FT_Bytes sp = raw; - rec->LookupOrder = GetUInt16(sp); - rec->ReqFeatureIndex = GetUInt16(sp); - rec->FeatureCount = GetUInt16(sp); - if (rec->FeatureCount <= 0) { - return; - } - rec->FeatureIndex = new uint16_t[rec->FeatureCount]; - FXSYS_memset(rec->FeatureIndex, 0, sizeof(uint16_t) * rec->FeatureCount); - for (int i = 0; i < rec->FeatureCount; ++i) { - rec->FeatureIndex[i] = GetUInt16(sp); - } -} -void CFX_CTTGSUBTable::ParseFeatureList(FT_Bytes raw, TFeatureList* rec) { - int i; - FT_Bytes sp = raw; - rec->FeatureCount = GetUInt16(sp); - if (rec->FeatureCount <= 0) { - return; - } - rec->FeatureRecord = new struct TFeatureRecord[rec->FeatureCount]; - for (i = 0; i < rec->FeatureCount; i++) { - rec->FeatureRecord[i].FeatureTag = GetUInt32(sp); - uint16_t offset = GetUInt16(sp); - ParseFeature(&raw[offset], &rec->FeatureRecord[i].Feature); - } -} -void CFX_CTTGSUBTable::ParseFeature(FT_Bytes raw, TFeature* rec) { - int i; - FT_Bytes sp = raw; - rec->FeatureParams = GetUInt16(sp); - rec->LookupCount = GetUInt16(sp); - if (rec->LookupCount <= 0) { - return; - } - rec->LookupListIndex = new uint16_t[rec->LookupCount]; - for (i = 0; i < rec->LookupCount; i++) { - rec->LookupListIndex[i] = GetUInt16(sp); - } -} -void CFX_CTTGSUBTable::ParseLookupList(FT_Bytes raw, TLookupList* rec) { - int i; - FT_Bytes sp = raw; - rec->LookupCount = GetUInt16(sp); - if (rec->LookupCount <= 0) { - return; - } - rec->Lookup = new struct TLookup[rec->LookupCount]; - for (i = 0; i < rec->LookupCount; i++) { - uint16_t offset = GetUInt16(sp); - ParseLookup(&raw[offset], &rec->Lookup[i]); - } -} -void CFX_CTTGSUBTable::ParseLookup(FT_Bytes raw, TLookup* rec) { - int i; - FT_Bytes sp = raw; - rec->LookupType = GetUInt16(sp); - rec->LookupFlag = GetUInt16(sp); - rec->SubTableCount = GetUInt16(sp); - if (rec->SubTableCount <= 0) { - return; - } - rec->SubTable = new struct TSubTableBase*[rec->SubTableCount]; - for (i = 0; i < rec->SubTableCount; i++) { - rec->SubTable[i] = NULL; - } - if (rec->LookupType != 1) { - return; - } - for (i = 0; i < rec->SubTableCount; i++) { - uint16_t offset = GetUInt16(sp); - ParseSingleSubst(&raw[offset], &rec->SubTable[i]); - } -} -void CFX_CTTGSUBTable::ParseCoverage(FT_Bytes raw, TCoverageFormatBase** rec) { - FT_Bytes sp = raw; - uint16_t Format = GetUInt16(sp); - switch (Format) { - case 1: - *rec = new TCoverageFormat1(); - ParseCoverageFormat1(raw, (TCoverageFormat1*)*rec); - break; - case 2: - *rec = new TCoverageFormat2(); - ParseCoverageFormat2(raw, (TCoverageFormat2*)*rec); - break; - } -} -void CFX_CTTGSUBTable::ParseCoverageFormat1(FT_Bytes raw, - TCoverageFormat1* rec) { - int i; - FT_Bytes sp = raw; - GetUInt16(sp); - rec->GlyphCount = GetUInt16(sp); - if (rec->GlyphCount <= 0) { - return; - } - rec->GlyphArray = new uint16_t[rec->GlyphCount]; - for (i = 0; i < rec->GlyphCount; i++) { - rec->GlyphArray[i] = GetUInt16(sp); - } -} -void CFX_CTTGSUBTable::ParseCoverageFormat2(FT_Bytes raw, - TCoverageFormat2* rec) { - int i; - FT_Bytes sp = raw; - GetUInt16(sp); - rec->RangeCount = GetUInt16(sp); - if (rec->RangeCount <= 0) { - return; - } - rec->RangeRecord = new TRangeRecord[rec->RangeCount]; - for (i = 0; i < rec->RangeCount; i++) { - rec->RangeRecord[i].Start = GetUInt16(sp); - rec->RangeRecord[i].End = GetUInt16(sp); - rec->RangeRecord[i].StartCoverageIndex = GetUInt16(sp); - } -} -void CFX_CTTGSUBTable::ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec) { - FT_Bytes sp = raw; - uint16_t Format = GetUInt16(sp); - switch (Format) { - case 1: - *rec = new TSingleSubstFormat1(); - ParseSingleSubstFormat1(raw, (TSingleSubstFormat1*)*rec); - break; - case 2: - *rec = new TSingleSubstFormat2(); - ParseSingleSubstFormat2(raw, (TSingleSubstFormat2*)*rec); - break; - } -} -void CFX_CTTGSUBTable::ParseSingleSubstFormat1(FT_Bytes raw, - TSingleSubstFormat1* rec) { - FT_Bytes sp = raw; - GetUInt16(sp); - uint16_t offset = GetUInt16(sp); - ParseCoverage(&raw[offset], &rec->Coverage); - rec->DeltaGlyphID = GetInt16(sp); -} -void CFX_CTTGSUBTable::ParseSingleSubstFormat2(FT_Bytes raw, - TSingleSubstFormat2* rec) { - int i; - FT_Bytes sp = raw; - GetUInt16(sp); - uint16_t offset = GetUInt16(sp); - ParseCoverage(&raw[offset], &rec->Coverage); - rec->GlyphCount = GetUInt16(sp); - if (rec->GlyphCount <= 0) { - return; - } - rec->Substitute = new uint16_t[rec->GlyphCount]; - for (i = 0; i < rec->GlyphCount; i++) { - rec->Substitute[i] = GetUInt16(sp); - } -} -FX_BOOL CFX_GSUBTable::GetVerticalGlyph(FX_DWORD glyphnum, - FX_DWORD* vglyphnum) { - return m_GsubImp.GetVerticalGlyph(glyphnum, vglyphnum); -} -// static -IFX_GSUBTable* IFX_GSUBTable::Create(CFX_Font* pFont) { - if (!pFont) { - return NULL; - } - if (!pFont->GetSubData()) { - unsigned long length = 0; - int error = FXFT_Load_Sfnt_Table( - pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, NULL, &length); - if (!error) { - pFont->SetSubData(FX_Alloc(uint8_t, length)); - } - if (!pFont->GetSubData()) { - return NULL; - } - } - int error = - FXFT_Load_Sfnt_Table(pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, - pFont->GetSubData(), NULL); - if (!error && pFont->GetSubData()) { - std::unique_ptr pGsubTable(new CFX_GSUBTable); - if (pGsubTable->m_GsubImp.LoadGSUBTable((FT_Bytes)pFont->GetSubData())) { - return pGsubTable.release(); - } - } - return NULL; -} diff --git a/core/src/fpdfapi/fpdf_font/ttgsubtable.h b/core/src/fpdfapi/fpdf_font/ttgsubtable.h deleted file mode 100644 index 605d25fd57..0000000000 --- a/core/src/fpdfapi/fpdf_font/ttgsubtable.h +++ /dev/null @@ -1,363 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ -#define CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ - -#include - -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxge/fx_font.h" -#include "core/include/fxge/fx_freetype.h" - -class CFX_GlyphMap { - public: - CFX_GlyphMap(); - ~CFX_GlyphMap(); - void SetAt(int key, int value); - FX_BOOL Lookup(int key, int& value); - - protected: - CFX_BinaryBuf m_Buffer; -}; -class CFX_CTTGSUBTable { - public: - CFX_CTTGSUBTable(void) : m_bFeautureMapLoad(FALSE), loaded(false) {} - CFX_CTTGSUBTable(FT_Bytes gsub) : m_bFeautureMapLoad(FALSE), loaded(false) { - LoadGSUBTable(gsub); - } - virtual ~CFX_CTTGSUBTable() {} - bool IsOk(void) const { return loaded; } - bool LoadGSUBTable(FT_Bytes gsub); - bool GetVerticalGlyph(uint32_t glyphnum, uint32_t* vglyphnum); - - private: - struct tt_gsub_header { - uint32_t Version; - uint16_t ScriptList; - uint16_t FeatureList; - uint16_t LookupList; - }; - struct TLangSys { - uint16_t LookupOrder; - uint16_t ReqFeatureIndex; - uint16_t FeatureCount; - uint16_t* FeatureIndex; - TLangSys() - : LookupOrder(0), - ReqFeatureIndex(0), - FeatureCount(0), - FeatureIndex(NULL) {} - ~TLangSys() { delete[] FeatureIndex; } - - private: - TLangSys(const TLangSys&); - TLangSys& operator=(const TLangSys&); - }; - struct TLangSysRecord { - uint32_t LangSysTag; - struct TLangSys LangSys; - TLangSysRecord() : LangSysTag(0) {} - - private: - TLangSysRecord(const TLangSysRecord&); - TLangSysRecord& operator=(const TLangSysRecord&); - }; - struct TScript { - uint16_t DefaultLangSys; - uint16_t LangSysCount; - struct TLangSysRecord* LangSysRecord; - TScript() : DefaultLangSys(0), LangSysCount(0), LangSysRecord(NULL) {} - ~TScript() { delete[] LangSysRecord; } - - private: - TScript(const TScript&); - TScript& operator=(const TScript&); - }; - struct TScriptRecord { - uint32_t ScriptTag; - struct TScript Script; - TScriptRecord() : ScriptTag(0) {} - - private: - TScriptRecord(const TScriptRecord&); - TScriptRecord& operator=(const TScriptRecord&); - }; - struct TScriptList { - uint16_t ScriptCount; - struct TScriptRecord* ScriptRecord; - TScriptList() : ScriptCount(0), ScriptRecord(NULL) {} - ~TScriptList() { delete[] ScriptRecord; } - - private: - TScriptList(const TScriptList&); - TScriptList& operator=(const TScriptList&); - }; - struct TFeature { - uint16_t FeatureParams; - int LookupCount; - uint16_t* LookupListIndex; - TFeature() : FeatureParams(0), LookupCount(0), LookupListIndex(NULL) {} - ~TFeature() { delete[] LookupListIndex; } - - private: - TFeature(const TFeature&); - TFeature& operator=(const TFeature&); - }; - struct TFeatureRecord { - uint32_t FeatureTag; - struct TFeature Feature; - TFeatureRecord() : FeatureTag(0) {} - - private: - TFeatureRecord(const TFeatureRecord&); - TFeatureRecord& operator=(const TFeatureRecord&); - }; - struct TFeatureList { - int FeatureCount; - struct TFeatureRecord* FeatureRecord; - TFeatureList() : FeatureCount(0), FeatureRecord(NULL) {} - ~TFeatureList() { delete[] FeatureRecord; } - - private: - TFeatureList(const TFeatureList&); - TFeatureList& operator=(const TFeatureList&); - }; - enum TLookupFlag { - LOOKUPFLAG_RightToLeft = 0x0001, - LOOKUPFLAG_IgnoreBaseGlyphs = 0x0002, - LOOKUPFLAG_IgnoreLigatures = 0x0004, - LOOKUPFLAG_IgnoreMarks = 0x0008, - LOOKUPFLAG_Reserved = 0x00F0, - LOOKUPFLAG_MarkAttachmentType = 0xFF00, - }; - struct TCoverageFormatBase { - uint16_t CoverageFormat; - CFX_GlyphMap m_glyphMap; - TCoverageFormatBase() : CoverageFormat(0) {} - virtual ~TCoverageFormatBase() {} - - private: - TCoverageFormatBase(const TCoverageFormatBase&); - TCoverageFormatBase& operator=(const TCoverageFormatBase&); - }; - struct TCoverageFormat1 : public TCoverageFormatBase { - uint16_t GlyphCount; - uint16_t* GlyphArray; - TCoverageFormat1() : GlyphCount(0), GlyphArray(NULL) { CoverageFormat = 1; } - ~TCoverageFormat1() override { delete[] GlyphArray; } - - private: - TCoverageFormat1(const TCoverageFormat1&); - TCoverageFormat1& operator=(const TCoverageFormat1&); - }; - struct TRangeRecord { - uint16_t Start; - uint16_t End; - uint16_t StartCoverageIndex; - TRangeRecord() : Start(0), End(0), StartCoverageIndex(0) {} - friend bool operator>(const TRangeRecord& r1, const TRangeRecord& r2) { - return r1.Start > r2.Start; - } - - private: - TRangeRecord(const TRangeRecord&); - }; - struct TCoverageFormat2 : public TCoverageFormatBase { - uint16_t RangeCount; - struct TRangeRecord* RangeRecord; - TCoverageFormat2() : RangeCount(0), RangeRecord(NULL) { - CoverageFormat = 2; - } - ~TCoverageFormat2() override { delete[] RangeRecord; } - - private: - TCoverageFormat2(const TCoverageFormat2&); - TCoverageFormat2& operator=(const TCoverageFormat2&); - }; - struct TClassDefFormatBase { - uint16_t ClassFormat; - TClassDefFormatBase() : ClassFormat(0) {} - virtual ~TClassDefFormatBase() {} - - private: - TClassDefFormatBase(const TClassDefFormatBase&); - TClassDefFormatBase& operator=(const TClassDefFormatBase&); - }; - struct TClassDefFormat1 : public TClassDefFormatBase { - uint16_t StartGlyph; - uint16_t GlyphCount; - uint16_t* ClassValueArray; - TClassDefFormat1() : StartGlyph(0), GlyphCount(0), ClassValueArray(NULL) { - ClassFormat = 1; - } - ~TClassDefFormat1() override { delete[] ClassValueArray; } - - private: - TClassDefFormat1(const TClassDefFormat1&); - TClassDefFormat1& operator=(const TClassDefFormat1&); - }; - struct TClassRangeRecord { - uint16_t Start; - uint16_t End; - uint16_t Class; - TClassRangeRecord() : Start(0), End(0), Class(0) {} - - private: - TClassRangeRecord(const TClassRangeRecord&); - TClassRangeRecord& operator=(const TClassRangeRecord&); - }; - struct TClassDefFormat2 : public TClassDefFormatBase { - uint16_t ClassRangeCount; - struct TClassRangeRecord* ClassRangeRecord; - TClassDefFormat2() : ClassRangeCount(0), ClassRangeRecord(NULL) { - ClassFormat = 2; - } - ~TClassDefFormat2() override { delete[] ClassRangeRecord; } - - private: - TClassDefFormat2(const TClassDefFormat2&); - TClassDefFormat2& operator=(const TClassDefFormat2&); - }; - struct TDevice { - uint16_t StartSize; - uint16_t EndSize; - uint16_t DeltaFormat; - TDevice() : StartSize(0), EndSize(0), DeltaFormat(0) {} - - private: - TDevice(const TDevice&); - TDevice& operator=(const TDevice&); - }; - struct TSubTableBase { - uint16_t SubstFormat; - TSubTableBase() : SubstFormat(0) {} - virtual ~TSubTableBase() {} - - private: - TSubTableBase(const TSubTableBase&); - TSubTableBase& operator=(const TSubTableBase&); - }; - struct TSingleSubstFormat1 : public TSubTableBase { - TCoverageFormatBase* Coverage; - int16_t DeltaGlyphID; - TSingleSubstFormat1() : Coverage(NULL), DeltaGlyphID(0) { SubstFormat = 1; } - ~TSingleSubstFormat1() override { delete Coverage; } - - private: - TSingleSubstFormat1(const TSingleSubstFormat1&); - TSingleSubstFormat1& operator=(const TSingleSubstFormat1&); - }; - struct TSingleSubstFormat2 : public TSubTableBase { - TCoverageFormatBase* Coverage; - uint16_t GlyphCount; - uint16_t* Substitute; - TSingleSubstFormat2() : Coverage(NULL), GlyphCount(0), Substitute(NULL) { - SubstFormat = 2; - } - ~TSingleSubstFormat2() override { - delete Coverage; - delete[] Substitute; - } - - private: - TSingleSubstFormat2(const TSingleSubstFormat2&); - TSingleSubstFormat2& operator=(const TSingleSubstFormat2&); - }; - struct TLookup { - uint16_t LookupType; - uint16_t LookupFlag; - uint16_t SubTableCount; - struct TSubTableBase** SubTable; - TLookup() - : LookupType(0), LookupFlag(0), SubTableCount(0), SubTable(NULL) {} - ~TLookup() { - if (SubTable) { - for (int i = 0; i < SubTableCount; ++i) - delete SubTable[i]; - delete[] SubTable; - } - } - - private: - TLookup(const TLookup&); - TLookup& operator=(const TLookup&); - }; - struct TLookupList { - int LookupCount; - struct TLookup* Lookup; - TLookupList() : LookupCount(0), Lookup(NULL) {} - ~TLookupList() { delete[] Lookup; } - - private: - TLookupList(const TLookupList&); - TLookupList& operator=(const TLookupList&); - }; - bool Parse(FT_Bytes scriptlist, FT_Bytes featurelist, FT_Bytes lookuplist); - void ParseScriptList(FT_Bytes raw, TScriptList* rec); - void ParseScript(FT_Bytes raw, TScript* rec); - void ParseLangSys(FT_Bytes raw, TLangSys* rec); - void ParseFeatureList(FT_Bytes raw, TFeatureList* rec); - void ParseFeature(FT_Bytes raw, TFeature* rec); - void ParseLookupList(FT_Bytes raw, TLookupList* rec); - void ParseLookup(FT_Bytes raw, TLookup* rec); - void ParseCoverage(FT_Bytes raw, TCoverageFormatBase** rec); - void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec); - void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec); - void ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec); - void ParseSingleSubstFormat1(FT_Bytes raw, TSingleSubstFormat1* rec); - void ParseSingleSubstFormat2(FT_Bytes raw, TSingleSubstFormat2* rec); - bool GetVerticalGlyphSub(uint32_t glyphnum, - uint32_t* vglyphnum, - struct TFeature* Feature); - bool GetVerticalGlyphSub2(uint32_t glyphnum, - uint32_t* vglyphnum, - struct TLookup* Lookup); - int GetCoverageIndex(struct TCoverageFormatBase* Coverage, uint32_t g); - uint8_t GetUInt8(FT_Bytes& p) const { - uint8_t ret = p[0]; - p += 1; - return ret; - } - int16_t GetInt16(FT_Bytes& p) const { - uint16_t ret = p[0] << 8 | p[1]; - p += 2; - return *(int16_t*)&ret; - } - uint16_t GetUInt16(FT_Bytes& p) const { - uint16_t ret = p[0] << 8 | p[1]; - p += 2; - return ret; - } - int32_t GetInt32(FT_Bytes& p) const { - uint32_t ret = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3]; - p += 4; - return *(int32_t*)&ret; - } - uint32_t GetUInt32(FT_Bytes& p) const { - uint32_t ret = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3]; - p += 4; - return ret; - } - std::map m_featureMap; - FX_BOOL m_bFeautureMapLoad; - bool loaded; - struct tt_gsub_header header; - struct TScriptList ScriptList; - struct TFeatureList FeatureList; - struct TLookupList LookupList; -}; -class CFX_GSUBTable final : public IFX_GSUBTable { - public: - ~CFX_GSUBTable() override {} - FX_BOOL GetVerticalGlyph(FX_DWORD glyphnum, FX_DWORD* vglyphnum) override; - - CFX_CTTGSUBTable m_GsubImp; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_ diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page.cpp deleted file mode 100644 index c7ebc67452..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page.cpp +++ /dev/null @@ -1,764 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "third_party/base/stl_util.h" - -CPDF_PageObject::CPDF_PageObject() {} - -CPDF_PageObject::~CPDF_PageObject() {} - -void CPDF_PageObject::CopyData(const CPDF_PageObject* pSrc) { - CopyStates(*pSrc); - m_Left = pSrc->m_Left; - m_Right = pSrc->m_Right; - m_Top = pSrc->m_Top; - m_Bottom = pSrc->m_Bottom; -} - -void CPDF_PageObject::TransformClipPath(CFX_Matrix& matrix) { - if (m_ClipPath.IsNull()) { - return; - } - m_ClipPath.GetModify(); - m_ClipPath.Transform(matrix); -} - -void CPDF_PageObject::TransformGeneralState(CFX_Matrix& matrix) { - if (m_GeneralState.IsNull()) { - return; - } - CPDF_GeneralStateData* pGS = m_GeneralState.GetModify(); - pGS->m_Matrix.Concat(matrix); -} - -FX_RECT CPDF_PageObject::GetBBox(const CFX_Matrix* pMatrix) const { - CFX_FloatRect rect(m_Left, m_Bottom, m_Right, m_Top); - if (pMatrix) { - pMatrix->TransformRect(rect); - } - return rect.GetOutterRect(); -} - -CPDF_TextObject::CPDF_TextObject() - : m_PosX(0), - m_PosY(0), - m_nChars(0), - m_pCharCodes(nullptr), - m_pCharPos(nullptr) {} - -CPDF_TextObject::~CPDF_TextObject() { - if (m_nChars > 1) { - FX_Free(m_pCharCodes); - } - FX_Free(m_pCharPos); -} - -void CPDF_TextObject::GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const { - pInfo->m_CharCode = - m_nChars == 1 ? (FX_DWORD)(uintptr_t)m_pCharCodes : m_pCharCodes[index]; - pInfo->m_OriginX = index ? m_pCharPos[index - 1] : 0; - pInfo->m_OriginY = 0; - if (pInfo->m_CharCode == -1) { - return; - } - CPDF_Font* pFont = m_TextState.GetFont(); - if (!pFont->IsCIDFont()) { - return; - } - if (!pFont->AsCIDFont()->IsVertWriting()) { - return; - } - FX_WORD CID = pFont->AsCIDFont()->CIDFromCharCode(pInfo->m_CharCode); - pInfo->m_OriginY = pInfo->m_OriginX; - pInfo->m_OriginX = 0; - short vx, vy; - pFont->AsCIDFont()->GetVertOrigin(CID, vx, vy); - FX_FLOAT fontsize = m_TextState.GetFontSize(); - pInfo->m_OriginX -= fontsize * vx / 1000; - pInfo->m_OriginY -= fontsize * vy / 1000; -} - -int CPDF_TextObject::CountChars() const { - if (m_nChars == 1) { - return 1; - } - int count = 0; - for (int i = 0; i < m_nChars; ++i) - if (m_pCharCodes[i] != (FX_DWORD)-1) { - ++count; - } - return count; -} - -void CPDF_TextObject::GetCharInfo(int index, - FX_DWORD& charcode, - FX_FLOAT& kerning) const { - if (m_nChars == 1) { - charcode = (FX_DWORD)(uintptr_t)m_pCharCodes; - kerning = 0; - return; - } - int count = 0; - for (int i = 0; i < m_nChars; ++i) { - if (m_pCharCodes[i] != (FX_DWORD)-1) { - if (count == index) { - charcode = m_pCharCodes[i]; - if (i == m_nChars - 1 || m_pCharCodes[i + 1] != (FX_DWORD)-1) { - kerning = 0; - } else { - kerning = m_pCharPos[i]; - } - return; - } - ++count; - } - } -} - -void CPDF_TextObject::GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const { - if (m_nChars == 1) { - GetItemInfo(0, pInfo); - return; - } - int count = 0; - for (int i = 0; i < m_nChars; ++i) { - FX_DWORD charcode = m_pCharCodes[i]; - if (charcode == (FX_DWORD)-1) { - continue; - } - if (count == index) { - GetItemInfo(i, pInfo); - break; - } - ++count; - } -} - -CPDF_TextObject* CPDF_TextObject::Clone() const { - CPDF_TextObject* obj = new CPDF_TextObject; - obj->CopyData(this); - - obj->m_nChars = m_nChars; - if (m_nChars > 1) { - obj->m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars); - FXSYS_memcpy(obj->m_pCharCodes, m_pCharCodes, m_nChars * sizeof(FX_DWORD)); - obj->m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1); - FXSYS_memcpy(obj->m_pCharPos, m_pCharPos, - (m_nChars - 1) * sizeof(FX_FLOAT)); - } else { - obj->m_pCharCodes = m_pCharCodes; - } - obj->m_PosX = m_PosX; - obj->m_PosY = m_PosY; - return obj; -} - -void CPDF_TextObject::GetTextMatrix(CFX_Matrix* pMatrix) const { - FX_FLOAT* pTextMatrix = m_TextState.GetMatrix(); - pMatrix->Set(pTextMatrix[0], pTextMatrix[2], pTextMatrix[1], pTextMatrix[3], - m_PosX, m_PosY); -} - -void CPDF_TextObject::SetSegments(const CFX_ByteString* pStrs, - FX_FLOAT* pKerning, - int nsegs) { - if (m_nChars > 1) { - FX_Free(m_pCharCodes); - m_pCharCodes = nullptr; - } - FX_Free(m_pCharPos); - m_pCharPos = nullptr; - CPDF_Font* pFont = m_TextState.GetFont(); - m_nChars = 0; - for (int i = 0; i < nsegs; ++i) { - m_nChars += pFont->CountChar(pStrs[i], pStrs[i].GetLength()); - } - m_nChars += nsegs - 1; - if (m_nChars > 1) { - m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars); - m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1); - int index = 0; - for (int i = 0; i < nsegs; ++i) { - const FX_CHAR* segment = pStrs[i]; - int offset = 0, len = pStrs[i].GetLength(); - while (offset < len) { - m_pCharCodes[index++] = pFont->GetNextChar(segment, len, offset); - } - if (i != nsegs - 1) { - m_pCharPos[index - 1] = pKerning[i]; - m_pCharCodes[index++] = (FX_DWORD)-1; - } - } - } else { - int offset = 0; - m_pCharCodes = (FX_DWORD*)(uintptr_t)pFont->GetNextChar( - pStrs[0], pStrs[0].GetLength(), offset); - } -} - -void CPDF_TextObject::SetText(const CFX_ByteString& str) { - SetSegments(&str, nullptr, 1); - RecalcPositionData(); -} - -FX_FLOAT CPDF_TextObject::GetCharWidth(FX_DWORD charcode) const { - FX_FLOAT fontsize = m_TextState.GetFontSize() / 1000; - CPDF_Font* pFont = m_TextState.GetFont(); - FX_BOOL bVertWriting = FALSE; - CPDF_CIDFont* pCIDFont = pFont->AsCIDFont(); - if (pCIDFont) { - bVertWriting = pCIDFont->IsVertWriting(); - } - if (!bVertWriting) - return pFont->GetCharWidthF(charcode, 0) * fontsize; - - FX_WORD CID = pCIDFont->CIDFromCharCode(charcode); - return pCIDFont->GetVertWidth(CID) * fontsize; -} - -void CPDF_TextObject::CalcPositionData(FX_FLOAT* pTextAdvanceX, - FX_FLOAT* pTextAdvanceY, - FX_FLOAT horz_scale, - int level) { - FX_FLOAT curpos = 0; - FX_FLOAT min_x = 10000 * 1.0f; - FX_FLOAT max_x = -10000 * 1.0f; - FX_FLOAT min_y = 10000 * 1.0f; - FX_FLOAT max_y = -10000 * 1.0f; - CPDF_Font* pFont = m_TextState.GetFont(); - FX_BOOL bVertWriting = FALSE; - CPDF_CIDFont* pCIDFont = pFont->AsCIDFont(); - if (pCIDFont) { - bVertWriting = pCIDFont->IsVertWriting(); - } - FX_FLOAT fontsize = m_TextState.GetFontSize(); - for (int i = 0; i < m_nChars; ++i) { - FX_DWORD charcode = - m_nChars == 1 ? (FX_DWORD)(uintptr_t)m_pCharCodes : m_pCharCodes[i]; - if (i > 0) { - if (charcode == (FX_DWORD)-1) { - curpos -= (m_pCharPos[i - 1] * fontsize) / 1000; - continue; - } - m_pCharPos[i - 1] = curpos; - } - FX_RECT char_rect = pFont->GetCharBBox(charcode, level); - FX_FLOAT charwidth; - if (!bVertWriting) { - if (min_y > char_rect.top) { - min_y = (FX_FLOAT)char_rect.top; - } - if (max_y < char_rect.top) { - max_y = (FX_FLOAT)char_rect.top; - } - if (min_y > char_rect.bottom) { - min_y = (FX_FLOAT)char_rect.bottom; - } - if (max_y < char_rect.bottom) { - max_y = (FX_FLOAT)char_rect.bottom; - } - FX_FLOAT char_left = curpos + char_rect.left * fontsize / 1000; - FX_FLOAT char_right = curpos + char_rect.right * fontsize / 1000; - if (min_x > char_left) { - min_x = char_left; - } - if (max_x < char_left) { - max_x = char_left; - } - if (min_x > char_right) { - min_x = char_right; - } - if (max_x < char_right) { - max_x = char_right; - } - charwidth = pFont->GetCharWidthF(charcode, level) * fontsize / 1000; - } else { - FX_WORD CID = pCIDFont->CIDFromCharCode(charcode); - short vx; - short vy; - pCIDFont->GetVertOrigin(CID, vx, vy); - char_rect.left -= vx; - char_rect.right -= vx; - char_rect.top -= vy; - char_rect.bottom -= vy; - if (min_x > char_rect.left) { - min_x = (FX_FLOAT)char_rect.left; - } - if (max_x < char_rect.left) { - max_x = (FX_FLOAT)char_rect.left; - } - if (min_x > char_rect.right) { - min_x = (FX_FLOAT)char_rect.right; - } - if (max_x < char_rect.right) { - max_x = (FX_FLOAT)char_rect.right; - } - FX_FLOAT char_top = curpos + char_rect.top * fontsize / 1000; - FX_FLOAT char_bottom = curpos + char_rect.bottom * fontsize / 1000; - if (min_y > char_top) { - min_y = char_top; - } - if (max_y < char_top) { - max_y = char_top; - } - if (min_y > char_bottom) { - min_y = char_bottom; - } - if (max_y < char_bottom) { - max_y = char_bottom; - } - charwidth = pCIDFont->GetVertWidth(CID) * fontsize / 1000; - } - curpos += charwidth; - if (charcode == ' ' && (!pCIDFont || pCIDFont->GetCharSize(32) == 1)) { - curpos += m_TextState.GetObject()->m_WordSpace; - } - curpos += m_TextState.GetObject()->m_CharSpace; - } - if (bVertWriting) { - if (pTextAdvanceX) { - *pTextAdvanceX = 0; - } - if (pTextAdvanceY) { - *pTextAdvanceY = curpos; - } - min_x = min_x * fontsize / 1000; - max_x = max_x * fontsize / 1000; - } else { - if (pTextAdvanceX) { - *pTextAdvanceX = curpos * horz_scale; - } - if (pTextAdvanceY) { - *pTextAdvanceY = 0; - } - min_y = min_y * fontsize / 1000; - max_y = max_y * fontsize / 1000; - } - CFX_Matrix matrix; - GetTextMatrix(&matrix); - m_Left = min_x; - m_Right = max_x; - m_Bottom = min_y; - m_Top = max_y; - matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); - int textmode = m_TextState.GetObject()->m_TextMode; - if (textmode == 1 || textmode == 2 || textmode == 5 || textmode == 6) { - FX_FLOAT half_width = m_GraphState.GetObject()->m_LineWidth / 2; - m_Left -= half_width; - m_Right += half_width; - m_Top += half_width; - m_Bottom -= half_width; - } -} - -void CPDF_TextObject::Transform(const CFX_Matrix& matrix) { - m_TextState.GetModify(); - CFX_Matrix text_matrix; - GetTextMatrix(&text_matrix); - text_matrix.Concat(matrix); - FX_FLOAT* pTextMatrix = m_TextState.GetMatrix(); - pTextMatrix[0] = text_matrix.GetA(); - pTextMatrix[1] = text_matrix.GetC(); - pTextMatrix[2] = text_matrix.GetB(); - pTextMatrix[3] = text_matrix.GetD(); - m_PosX = text_matrix.GetE(); - m_PosY = text_matrix.GetF(); - CalcPositionData(nullptr, nullptr, 0); -} - -void CPDF_TextObject::SetPosition(FX_FLOAT x, FX_FLOAT y) { - FX_FLOAT dx = x - m_PosX; - FX_FLOAT dy = y - m_PosY; - m_PosX = x; - m_PosY = y; - m_Left += dx; - m_Right += dx; - m_Top += dy; - m_Bottom += dy; -} - -CPDF_ShadingObject::CPDF_ShadingObject() : m_pShading(nullptr) {} - -CPDF_ShadingObject::~CPDF_ShadingObject() {} - -CPDF_ShadingObject* CPDF_ShadingObject::Clone() const { - CPDF_ShadingObject* obj = new CPDF_ShadingObject; - obj->CopyData(this); - - obj->m_pShading = m_pShading; - if (obj->m_pShading && obj->m_pShading->m_pDocument) { - CPDF_DocPageData* pDocPageData = - obj->m_pShading->m_pDocument->GetPageData(); - obj->m_pShading = (CPDF_ShadingPattern*)pDocPageData->GetPattern( - obj->m_pShading->m_pShadingObj, m_pShading->m_bShadingObj, - &obj->m_pShading->m_ParentMatrix); - } - obj->m_Matrix = m_Matrix; - return obj; -} - -void CPDF_ShadingObject::Transform(const CFX_Matrix& matrix) { - if (!m_ClipPath.IsNull()) { - m_ClipPath.GetModify(); - m_ClipPath.Transform(matrix); - } - m_Matrix.Concat(matrix); - if (!m_ClipPath.IsNull()) { - CalcBoundingBox(); - } else { - matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); - } -} - -void CPDF_ShadingObject::CalcBoundingBox() { - if (m_ClipPath.IsNull()) { - return; - } - CFX_FloatRect rect = m_ClipPath.GetClipBox(); - m_Left = rect.left; - m_Bottom = rect.bottom; - m_Right = rect.right; - m_Top = rect.top; -} - -CPDF_FormObject::CPDF_FormObject() : m_pForm(nullptr) {} - -CPDF_FormObject::~CPDF_FormObject() { - delete m_pForm; -} - -void CPDF_FormObject::Transform(const CFX_Matrix& matrix) { - m_FormMatrix.Concat(matrix); - CalcBoundingBox(); -} - -CPDF_FormObject* CPDF_FormObject::Clone() const { - CPDF_FormObject* obj = new CPDF_FormObject; - obj->CopyData(this); - - obj->m_pForm = m_pForm->Clone(); - obj->m_FormMatrix = m_FormMatrix; - return obj; -} - -void CPDF_FormObject::CalcBoundingBox() { - CFX_FloatRect form_rect = m_pForm->CalcBoundingBox(); - form_rect.Transform(&m_FormMatrix); - m_Left = form_rect.left; - m_Bottom = form_rect.bottom; - m_Right = form_rect.right; - m_Top = form_rect.top; -} - -CPDF_PageObject* CPDF_PageObjectList::GetPageObjectByIndex(int index) { - if (index < 0 || index >= pdfium::CollectionSize(*this)) - return nullptr; - return (*this)[index].get(); -} - -CPDF_PageObjectHolder::CPDF_PageObjectHolder() - : m_pFormDict(nullptr), - m_pFormStream(nullptr), - m_pDocument(nullptr), - m_pPageResources(nullptr), - m_pResources(nullptr), - m_Transparency(0), - m_bBackgroundAlphaNeeded(FALSE), - m_bHasImageMask(FALSE), - m_ParseState(CONTENT_NOT_PARSED) {} - -void CPDF_PageObjectHolder::ContinueParse(IFX_Pause* pPause) { - if (!m_pParser) { - return; - } - m_pParser->Continue(pPause); - if (m_pParser->GetStatus() == CPDF_ContentParser::Done) { - m_ParseState = CONTENT_PARSED; - m_pParser.reset(); - } -} - -void CPDF_PageObjectHolder::Transform(const CFX_Matrix& matrix) { - for (auto& pObj : m_PageObjectList) - pObj->Transform(matrix); -} - -CFX_FloatRect CPDF_PageObjectHolder::CalcBoundingBox() const { - if (m_PageObjectList.empty()) - return CFX_FloatRect(0, 0, 0, 0); - - FX_FLOAT left = 1000000.0f; - FX_FLOAT right = -1000000.0f; - FX_FLOAT bottom = 1000000.0f; - FX_FLOAT top = -1000000.0f; - for (const auto& pObj : m_PageObjectList) { - left = std::min(left, pObj->m_Left); - right = std::max(right, pObj->m_Right); - bottom = std::min(bottom, pObj->m_Bottom); - top = std::max(top, pObj->m_Top); - } - return CFX_FloatRect(left, bottom, right, top); -} - -void CPDF_PageObjectHolder::LoadTransInfo() { - if (!m_pFormDict) { - return; - } - CPDF_Dictionary* pGroup = m_pFormDict->GetDictBy("Group"); - if (!pGroup) { - return; - } - if (pGroup->GetStringBy("S") != "Transparency") { - return; - } - m_Transparency |= PDFTRANS_GROUP; - if (pGroup->GetIntegerBy("I")) { - m_Transparency |= PDFTRANS_ISOLATED; - } - if (pGroup->GetIntegerBy("K")) { - m_Transparency |= PDFTRANS_KNOCKOUT; - } -} - -CPDF_Page::CPDF_Page() : m_pPageRender(nullptr) {} - -void CPDF_Page::Load(CPDF_Document* pDocument, - CPDF_Dictionary* pPageDict, - FX_BOOL bPageCache) { - m_pDocument = (CPDF_Document*)pDocument; - m_pFormDict = pPageDict; - if (bPageCache) { - m_pPageRender = - CPDF_ModuleMgr::Get()->GetRenderModule()->CreatePageCache(this); - } - if (!pPageDict) { - m_PageWidth = m_PageHeight = 100 * 1.0f; - m_pPageResources = m_pResources = NULL; - return; - } - CPDF_Object* pageAttr = GetPageAttr("Resources"); - m_pResources = pageAttr ? pageAttr->GetDict() : NULL; - m_pPageResources = m_pResources; - CPDF_Object* pRotate = GetPageAttr("Rotate"); - int rotate = 0; - if (pRotate) { - rotate = pRotate->GetInteger() / 90 % 4; - } - if (rotate < 0) { - rotate += 4; - } - CPDF_Array* pMediaBox = ToArray(GetPageAttr("MediaBox")); - CFX_FloatRect mediabox; - if (pMediaBox) { - mediabox = pMediaBox->GetRect(); - mediabox.Normalize(); - } - if (mediabox.IsEmpty()) { - mediabox = CFX_FloatRect(0, 0, 612, 792); - } - - CPDF_Array* pCropBox = ToArray(GetPageAttr("CropBox")); - if (pCropBox) { - m_BBox = pCropBox->GetRect(); - m_BBox.Normalize(); - } - if (m_BBox.IsEmpty()) { - m_BBox = mediabox; - } else { - m_BBox.Intersect(mediabox); - } - if (rotate % 2) { - m_PageHeight = m_BBox.right - m_BBox.left; - m_PageWidth = m_BBox.top - m_BBox.bottom; - } else { - m_PageWidth = m_BBox.right - m_BBox.left; - m_PageHeight = m_BBox.top - m_BBox.bottom; - } - switch (rotate) { - case 0: - m_PageMatrix.Set(1.0f, 0, 0, 1.0f, -m_BBox.left, -m_BBox.bottom); - break; - case 1: - m_PageMatrix.Set(0, -1.0f, 1.0f, 0, -m_BBox.bottom, m_BBox.right); - break; - case 2: - m_PageMatrix.Set(-1.0f, 0, 0, -1.0f, m_BBox.right, m_BBox.top); - break; - case 3: - m_PageMatrix.Set(0, 1.0f, -1.0f, 0, m_BBox.top, -m_BBox.left); - break; - } - m_Transparency = PDFTRANS_ISOLATED; - LoadTransInfo(); -} - -void CPDF_Page::StartParse(CPDF_ParseOptions* pOptions) { - if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { - return; - } - m_pParser.reset(new CPDF_ContentParser); - m_pParser->Start(this, pOptions); - m_ParseState = CONTENT_PARSING; -} - -void CPDF_Page::ParseContent(CPDF_ParseOptions* pOptions) { - StartParse(pOptions); - ContinueParse(nullptr); -} - -CPDF_Page::~CPDF_Page() { - if (m_pPageRender) { - IPDF_RenderModule* pModule = CPDF_ModuleMgr::Get()->GetRenderModule(); - pModule->DestroyPageCache(m_pPageRender); - } -} - -CPDF_Object* FPDFAPI_GetPageAttr(CPDF_Dictionary* pPageDict, - const CFX_ByteStringC& name) { - int level = 0; - while (1) { - CPDF_Object* pObj = pPageDict->GetElementValue(name); - if (pObj) { - return pObj; - } - CPDF_Dictionary* pParent = pPageDict->GetDictBy("Parent"); - if (!pParent || pParent == pPageDict) { - return NULL; - } - pPageDict = pParent; - level++; - if (level == 1000) { - return NULL; - } - } -} - -CPDF_Object* CPDF_Page::GetPageAttr(const CFX_ByteStringC& name) const { - return FPDFAPI_GetPageAttr(m_pFormDict, name); -} - -CPDF_Form::CPDF_Form(CPDF_Document* pDoc, - CPDF_Dictionary* pPageResources, - CPDF_Stream* pFormStream, - CPDF_Dictionary* pParentResources) { - m_pDocument = pDoc; - m_pFormStream = pFormStream; - m_pFormDict = pFormStream ? pFormStream->GetDict() : NULL; - m_pResources = m_pFormDict->GetDictBy("Resources"); - m_pPageResources = pPageResources; - if (!m_pResources) { - m_pResources = pParentResources; - } - if (!m_pResources) { - m_pResources = pPageResources; - } - m_Transparency = 0; - LoadTransInfo(); -} - -CPDF_Form::~CPDF_Form() {} - -void CPDF_Form::StartParse(CPDF_AllStates* pGraphicStates, - CFX_Matrix* pParentMatrix, - CPDF_Type3Char* pType3Char, - CPDF_ParseOptions* pOptions, - int level) { - if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) { - return; - } - m_pParser.reset(new CPDF_ContentParser); - m_pParser->Start(this, pGraphicStates, pParentMatrix, pType3Char, pOptions, - level); - m_ParseState = CONTENT_PARSING; -} - -void CPDF_Form::ParseContent(CPDF_AllStates* pGraphicStates, - CFX_Matrix* pParentMatrix, - CPDF_Type3Char* pType3Char, - CPDF_ParseOptions* pOptions, - int level) { - StartParse(pGraphicStates, pParentMatrix, pType3Char, pOptions, level); - ContinueParse(NULL); -} - -CPDF_Form* CPDF_Form::Clone() const { - CPDF_Form* pCloneForm = - new CPDF_Form(m_pDocument, m_pPageResources, m_pFormStream, m_pResources); - for (const auto& pObj : m_PageObjectList) - pCloneForm->m_PageObjectList.emplace_back(pObj->Clone()); - - return pCloneForm; -} - -void CPDF_Page::GetDisplayMatrix(CFX_Matrix& matrix, - int xPos, - int yPos, - int xSize, - int ySize, - int iRotate) const { - if (m_PageWidth == 0 || m_PageHeight == 0) { - return; - } - CFX_Matrix display_matrix; - int x0, y0, x1, y1, x2, y2; - iRotate %= 4; - switch (iRotate) { - case 0: - x0 = xPos; - y0 = yPos + ySize; - x1 = xPos; - y1 = yPos; - x2 = xPos + xSize; - y2 = yPos + ySize; - break; - case 1: - x0 = xPos; - y0 = yPos; - x1 = xPos + xSize; - y1 = yPos; - x2 = xPos; - y2 = yPos + ySize; - break; - case 2: - x0 = xPos + xSize; - y0 = yPos; - x1 = xPos + xSize; - y1 = yPos + ySize; - x2 = xPos; - y2 = yPos; - break; - case 3: - x0 = xPos + xSize; - y0 = yPos + ySize; - x1 = xPos; - y1 = yPos + ySize; - x2 = xPos + xSize; - y2 = yPos; - break; - } - display_matrix.Set( - ((FX_FLOAT)(x2 - x0)) / m_PageWidth, ((FX_FLOAT)(y2 - y0)) / m_PageWidth, - ((FX_FLOAT)(x1 - x0)) / m_PageHeight, - ((FX_FLOAT)(y1 - y0)) / m_PageHeight, (FX_FLOAT)x0, (FX_FLOAT)y0); - matrix = m_PageMatrix; - matrix.Concat(display_matrix); -} - -CPDF_ParseOptions::CPDF_ParseOptions() { - m_bTextOnly = FALSE; - m_bMarkedContent = TRUE; - m_bSeparateForm = TRUE; - m_bDecodeInlineImage = FALSE; -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp deleted file mode 100644 index 9a4c41017d..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp +++ /dev/null @@ -1,1550 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fxcodec/fx_codec.h" - -namespace { - -void sRGB_to_AdobeCMYK(FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B, - FX_FLOAT& c, - FX_FLOAT& m, - FX_FLOAT& y, - FX_FLOAT& k) { - c = 1.0f - R; - m = 1.0f - G; - y = 1.0f - B; - k = c; - if (m < k) { - k = m; - } - if (y < k) { - k = y; - } -} - -FX_DWORD ComponentsForFamily(int family) { - if (family == PDFCS_DEVICERGB) - return 3; - if (family == PDFCS_DEVICEGRAY) - return 1; - return 4; -} - -void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels) { - if (pDestBuf == pSrcBuf) { - for (int i = 0; i < pixels; i++) { - uint8_t temp = pDestBuf[2]; - pDestBuf[2] = pDestBuf[0]; - pDestBuf[0] = temp; - pDestBuf += 3; - } - } else { - for (int i = 0; i < pixels; i++) { - *pDestBuf++ = pSrcBuf[2]; - *pDestBuf++ = pSrcBuf[1]; - *pDestBuf++ = pSrcBuf[0]; - pSrcBuf += 3; - } - } -} - -} // namespace - -CPDF_DeviceCS::CPDF_DeviceCS(CPDF_Document* pDoc, int family) - : CPDF_ColorSpace(pDoc, family, ComponentsForFamily(family)) {} - -FX_BOOL CPDF_DeviceCS::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - if (m_Family == PDFCS_DEVICERGB) { - R = pBuf[0]; - if (R < 0) { - R = 0; - } else if (R > 1) { - R = 1; - } - G = pBuf[1]; - if (G < 0) { - G = 0; - } else if (G > 1) { - G = 1; - } - B = pBuf[2]; - if (B < 0) { - B = 0; - } else if (B > 1) { - B = 1; - } - } else if (m_Family == PDFCS_DEVICEGRAY) { - R = *pBuf; - if (R < 0) { - R = 0; - } else if (R > 1) { - R = 1; - } - G = B = R; - } else if (m_Family == PDFCS_DEVICECMYK) { - if (!m_dwStdConversion) { - AdobeCMYK_to_sRGB(pBuf[0], pBuf[1], pBuf[2], pBuf[3], R, G, B); - } else { - FX_FLOAT k = pBuf[3]; - R = 1.0f - std::min(1.0f, pBuf[0] + k); - G = 1.0f - std::min(1.0f, pBuf[1] + k); - B = 1.0f - std::min(1.0f, pBuf[2] + k); - } - } else { - ASSERT(m_Family == PDFCS_PATTERN); - R = G = B = 0; - return FALSE; - } - return TRUE; -} -FX_BOOL CPDF_DeviceCS::v_GetCMYK(FX_FLOAT* pBuf, - FX_FLOAT& c, - FX_FLOAT& m, - FX_FLOAT& y, - FX_FLOAT& k) const { - if (m_Family != PDFCS_DEVICECMYK) { - return FALSE; - } - c = pBuf[0]; - m = pBuf[1]; - y = pBuf[2]; - k = pBuf[3]; - return TRUE; -} -FX_BOOL CPDF_DeviceCS::SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const { - if (m_Family == PDFCS_DEVICERGB) { - pBuf[0] = R; - pBuf[1] = G; - pBuf[2] = B; - return TRUE; - } - if (m_Family == PDFCS_DEVICEGRAY) { - if (R == G && R == B) { - *pBuf = R; - return TRUE; - } - return FALSE; - } - if (m_Family == PDFCS_DEVICECMYK) { - sRGB_to_AdobeCMYK(R, G, B, pBuf[0], pBuf[1], pBuf[2], pBuf[3]); - return TRUE; - } - return FALSE; -} -FX_BOOL CPDF_DeviceCS::v_SetCMYK(FX_FLOAT* pBuf, - FX_FLOAT c, - FX_FLOAT m, - FX_FLOAT y, - FX_FLOAT k) const { - if (m_Family == PDFCS_DEVICERGB) { - AdobeCMYK_to_sRGB(c, m, y, k, pBuf[0], pBuf[1], pBuf[2]); - return TRUE; - } - if (m_Family == PDFCS_DEVICECMYK) { - pBuf[0] = c; - pBuf[1] = m; - pBuf[2] = y; - pBuf[3] = k; - return TRUE; - } - return FALSE; -} - -void CPDF_DeviceCS::TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask) const { - if (bTransMask && m_Family == PDFCS_DEVICECMYK) { - for (int i = 0; i < pixels; i++) { - int k = 255 - pSrcBuf[3]; - pDestBuf[0] = ((255 - pSrcBuf[0]) * k) / 255; - pDestBuf[1] = ((255 - pSrcBuf[1]) * k) / 255; - pDestBuf[2] = ((255 - pSrcBuf[2]) * k) / 255; - pDestBuf += 3; - pSrcBuf += 4; - } - return; - } - if (m_Family == PDFCS_DEVICERGB) { - ReverseRGB(pDestBuf, pSrcBuf, pixels); - } else if (m_Family == PDFCS_DEVICEGRAY) { - for (int i = 0; i < pixels; i++) { - *pDestBuf++ = pSrcBuf[i]; - *pDestBuf++ = pSrcBuf[i]; - *pDestBuf++ = pSrcBuf[i]; - } - } else { - for (int i = 0; i < pixels; i++) { - if (!m_dwStdConversion) { - AdobeCMYK_to_sRGB1(pSrcBuf[0], pSrcBuf[1], pSrcBuf[2], pSrcBuf[3], - pDestBuf[2], pDestBuf[1], pDestBuf[0]); - } else { - uint8_t k = pSrcBuf[3]; - pDestBuf[2] = 255 - std::min(255, pSrcBuf[0] + k); - pDestBuf[1] = 255 - std::min(255, pSrcBuf[1] + k); - pDestBuf[0] = 255 - std::min(255, pSrcBuf[2] + k); - } - pSrcBuf += 4; - pDestBuf += 3; - } - } -} -const uint8_t g_sRGBSamples1[] = { - 0, 3, 6, 10, 13, 15, 18, 20, 22, 23, 25, 27, 28, 30, 31, - 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 49, 50, 51, 52, 53, 53, 54, 55, 56, 56, 57, 58, 58, - 59, 60, 61, 61, 62, 62, 63, 64, 64, 65, 66, 66, 67, 67, 68, - 68, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 76, 76, - 77, 77, 78, 78, 79, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, - 84, 84, 85, 85, 85, 86, 86, 87, 87, 88, 88, 88, 89, 89, 90, - 90, 91, 91, 91, 92, 92, 93, 93, 93, 94, 94, 95, 95, 95, 96, - 96, 97, 97, 97, 98, 98, 98, 99, 99, 99, 100, 100, 101, 101, 101, - 102, 102, 102, 103, 103, 103, 104, 104, 104, 105, 105, 106, 106, 106, 107, - 107, 107, 108, 108, 108, 109, 109, 109, 110, 110, 110, 110, 111, 111, 111, - 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 115, 116, 116, - 116, 117, 117, 117, 118, 118, 118, 118, 119, 119, 119, 120, -}; -const uint8_t g_sRGBSamples2[] = { - 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 148, 149, - 150, 151, 152, 153, 154, 155, 155, 156, 157, 158, 159, 159, 160, 161, 162, - 163, 163, 164, 165, 166, 167, 167, 168, 169, 170, 170, 171, 172, 173, 173, - 174, 175, 175, 176, 177, 178, 178, 179, 180, 180, 181, 182, 182, 183, 184, - 185, 185, 186, 187, 187, 188, 189, 189, 190, 190, 191, 192, 192, 193, 194, - 194, 195, 196, 196, 197, 197, 198, 199, 199, 200, 200, 201, 202, 202, 203, - 203, 204, 205, 205, 206, 206, 207, 208, 208, 209, 209, 210, 210, 211, 212, - 212, 213, 213, 214, 214, 215, 215, 216, 216, 217, 218, 218, 219, 219, 220, - 220, 221, 221, 222, 222, 223, 223, 224, 224, 225, 226, 226, 227, 227, 228, - 228, 229, 229, 230, 230, 231, 231, 232, 232, 233, 233, 234, 234, 235, 235, - 236, 236, 237, 237, 238, 238, 238, 239, 239, 240, 240, 241, 241, 242, 242, - 243, 243, 244, 244, 245, 245, 246, 246, 246, 247, 247, 248, 248, 249, 249, - 250, 250, 251, 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, -}; - -static FX_FLOAT RGB_Conversion(FX_FLOAT colorComponent) { - if (colorComponent > 1) { - colorComponent = 1; - } - if (colorComponent < 0) { - colorComponent = 0; - } - int scale = (int)(colorComponent * 1023); - if (scale < 0) { - scale = 0; - } - if (scale < 192) { - colorComponent = (g_sRGBSamples1[scale] / 255.0f); - } else { - colorComponent = (g_sRGBSamples2[scale / 4 - 48] / 255.0f); - } - return colorComponent; -} - -static void XYZ_to_sRGB(FX_FLOAT X, - FX_FLOAT Y, - FX_FLOAT Z, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) { - FX_FLOAT R1 = 3.2410f * X - 1.5374f * Y - 0.4986f * Z; - FX_FLOAT G1 = -0.9692f * X + 1.8760f * Y + 0.0416f * Z; - FX_FLOAT B1 = 0.0556f * X - 0.2040f * Y + 1.0570f * Z; - - R = RGB_Conversion(R1); - G = RGB_Conversion(G1); - B = RGB_Conversion(B1); -} - -static void XYZ_to_sRGB_WhitePoint(FX_FLOAT X, - FX_FLOAT Y, - FX_FLOAT Z, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B, - FX_FLOAT Xw, - FX_FLOAT Yw, - FX_FLOAT Zw) { - // The following RGB_xyz is based on - // sRGB value {Rx,Ry}={0.64, 0.33}, {Gx,Gy}={0.30, 0.60}, {Bx,By}={0.15, 0.06} - - FX_FLOAT Rx = 0.64f, Ry = 0.33f; - FX_FLOAT Gx = 0.30f, Gy = 0.60f; - FX_FLOAT Bx = 0.15f, By = 0.06f; - CFX_Matrix_3by3 RGB_xyz(Rx, Gx, Bx, Ry, Gy, By, 1 - Rx - Ry, 1 - Gx - Gy, - 1 - Bx - By); - CFX_Vector_3by1 whitePoint(Xw, Yw, Zw); - CFX_Vector_3by1 XYZ(X, Y, Z); - - CFX_Vector_3by1 RGB_Sum_XYZ = RGB_xyz.Inverse().TransformVector(whitePoint); - CFX_Matrix_3by3 RGB_SUM_XYZ_DIAG(RGB_Sum_XYZ.a, 0, 0, 0, RGB_Sum_XYZ.b, 0, 0, - 0, RGB_Sum_XYZ.c); - CFX_Matrix_3by3 M = RGB_xyz.Multiply(RGB_SUM_XYZ_DIAG); - CFX_Vector_3by1 RGB = M.Inverse().TransformVector(XYZ); - - R = RGB_Conversion(RGB.a); - G = RGB_Conversion(RGB.b); - B = RGB_Conversion(RGB.c); -} -class CPDF_CalGray : public CPDF_ColorSpace { - public: - explicit CPDF_CalGray(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_CALGRAY, 1) {} - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - FX_BOOL SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const override; - void TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask = FALSE) const override; - - private: - FX_FLOAT m_WhitePoint[3]; - FX_FLOAT m_BlackPoint[3]; - FX_FLOAT m_Gamma; -}; - -FX_BOOL CPDF_CalGray::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - CPDF_Dictionary* pDict = pArray->GetDictAt(1); - if (!pDict) - return FALSE; - - CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint"); - int i; - for (i = 0; i < 3; i++) { - m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0; - } - pParam = pDict->GetArrayBy("BlackPoint"); - for (i = 0; i < 3; i++) { - m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0; - } - m_Gamma = pDict->GetNumberBy("Gamma"); - if (m_Gamma == 0) { - m_Gamma = 1.0f; - } - return TRUE; -} -FX_BOOL CPDF_CalGray::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - R = G = B = *pBuf; - return TRUE; -} -FX_BOOL CPDF_CalGray::SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const { - if (R == G && R == B) { - *pBuf = R; - return TRUE; - } - return FALSE; -} -void CPDF_CalGray::TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask) const { - for (int i = 0; i < pixels; i++) { - *pDestBuf++ = pSrcBuf[i]; - *pDestBuf++ = pSrcBuf[i]; - *pDestBuf++ = pSrcBuf[i]; - } -} -class CPDF_CalRGB : public CPDF_ColorSpace { - public: - explicit CPDF_CalRGB(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_CALRGB, 3) {} - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - FX_BOOL SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const override; - void TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask = FALSE) const override; - - FX_FLOAT m_WhitePoint[3]; - FX_FLOAT m_BlackPoint[3]; - FX_FLOAT m_Gamma[3]; - FX_FLOAT m_Matrix[9]; - FX_BOOL m_bGamma; - FX_BOOL m_bMatrix; -}; -FX_BOOL CPDF_CalRGB::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - CPDF_Dictionary* pDict = pArray->GetDictAt(1); - if (!pDict) - return FALSE; - - CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint"); - int i; - for (i = 0; i < 3; i++) { - m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0; - } - pParam = pDict->GetArrayBy("BlackPoint"); - for (i = 0; i < 3; i++) { - m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0; - } - pParam = pDict->GetArrayBy("Gamma"); - if (pParam) { - m_bGamma = TRUE; - for (i = 0; i < 3; i++) { - m_Gamma[i] = pParam->GetNumberAt(i); - } - } else { - m_bGamma = FALSE; - } - pParam = pDict->GetArrayBy("Matrix"); - if (pParam) { - m_bMatrix = TRUE; - for (i = 0; i < 9; i++) { - m_Matrix[i] = pParam->GetNumberAt(i); - } - } else { - m_bMatrix = FALSE; - } - return TRUE; -} -FX_BOOL CPDF_CalRGB::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - FX_FLOAT A_ = pBuf[0]; - FX_FLOAT B_ = pBuf[1]; - FX_FLOAT C_ = pBuf[2]; - if (m_bGamma) { - A_ = (FX_FLOAT)FXSYS_pow(A_, m_Gamma[0]); - B_ = (FX_FLOAT)FXSYS_pow(B_, m_Gamma[1]); - C_ = (FX_FLOAT)FXSYS_pow(C_, m_Gamma[2]); - } - FX_FLOAT X, Y, Z; - if (m_bMatrix) { - X = m_Matrix[0] * A_ + m_Matrix[3] * B_ + m_Matrix[6] * C_; - Y = m_Matrix[1] * A_ + m_Matrix[4] * B_ + m_Matrix[7] * C_; - Z = m_Matrix[2] * A_ + m_Matrix[5] * B_ + m_Matrix[8] * C_; - } else { - X = A_; - Y = B_; - Z = C_; - } - XYZ_to_sRGB_WhitePoint(X, Y, Z, R, G, B, m_WhitePoint[0], m_WhitePoint[1], - m_WhitePoint[2]); - return TRUE; -} -FX_BOOL CPDF_CalRGB::SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const { - pBuf[0] = R; - pBuf[1] = G; - pBuf[2] = B; - return TRUE; -} -void CPDF_CalRGB::TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask) const { - if (bTransMask) { - FX_FLOAT Cal[3]; - FX_FLOAT R, G, B; - for (int i = 0; i < pixels; i++) { - Cal[0] = ((FX_FLOAT)pSrcBuf[2]) / 255; - Cal[1] = ((FX_FLOAT)pSrcBuf[1]) / 255; - Cal[2] = ((FX_FLOAT)pSrcBuf[0]) / 255; - GetRGB(Cal, R, G, B); - pDestBuf[0] = FXSYS_round(B * 255); - pDestBuf[1] = FXSYS_round(G * 255); - pDestBuf[2] = FXSYS_round(R * 255); - pSrcBuf += 3; - pDestBuf += 3; - } - } - ReverseRGB(pDestBuf, pSrcBuf, pixels); -} -class CPDF_LabCS : public CPDF_ColorSpace { - public: - explicit CPDF_LabCS(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_LAB, 3) {} - void GetDefaultValue(int iComponent, - FX_FLOAT& value, - FX_FLOAT& min, - FX_FLOAT& max) const override; - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - FX_BOOL SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const override; - void TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask = FALSE) const override; - - FX_FLOAT m_WhitePoint[3]; - FX_FLOAT m_BlackPoint[3]; - FX_FLOAT m_Ranges[4]; -}; -FX_BOOL CPDF_LabCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - CPDF_Dictionary* pDict = pArray->GetDictAt(1); - if (!pDict) { - return FALSE; - } - CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint"); - int i; - for (i = 0; i < 3; i++) { - m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0; - } - pParam = pDict->GetArrayBy("BlackPoint"); - for (i = 0; i < 3; i++) { - m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0; - } - pParam = pDict->GetArrayBy("Range"); - const FX_FLOAT def_ranges[4] = {-100 * 1.0f, 100 * 1.0f, -100 * 1.0f, - 100 * 1.0f}; - for (i = 0; i < 4; i++) { - m_Ranges[i] = pParam ? pParam->GetNumberAt(i) : def_ranges[i]; - } - return TRUE; -} -void CPDF_LabCS::GetDefaultValue(int iComponent, - FX_FLOAT& value, - FX_FLOAT& min, - FX_FLOAT& max) const { - assert(iComponent < 3); - value = 0; - if (iComponent == 0) { - min = 0; - max = 100 * 1.0f; - } else { - min = m_Ranges[iComponent * 2 - 2]; - max = m_Ranges[iComponent * 2 - 1]; - if (value < min) { - value = min; - } else if (value > max) { - value = max; - } - } -} -FX_BOOL CPDF_LabCS::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - FX_FLOAT Lstar = pBuf[0]; - FX_FLOAT astar = pBuf[1]; - FX_FLOAT bstar = pBuf[2]; - FX_FLOAT M = (Lstar + 16.0f) / 116.0f; - FX_FLOAT L = M + astar / 500.0f; - FX_FLOAT N = M - bstar / 200.0f; - FX_FLOAT X, Y, Z; - if (L < 0.2069f) { - X = 0.957f * 0.12842f * (L - 0.1379f); - } else { - X = 0.957f * L * L * L; - } - if (M < 0.2069f) { - Y = 0.12842f * (M - 0.1379f); - } else { - Y = M * M * M; - } - if (N < 0.2069f) { - Z = 1.0889f * 0.12842f * (N - 0.1379f); - } else { - Z = 1.0889f * N * N * N; - } - XYZ_to_sRGB(X, Y, Z, R, G, B); - return TRUE; -} -FX_BOOL CPDF_LabCS::SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const { - return FALSE; -} -void CPDF_LabCS::TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask) const { - for (int i = 0; i < pixels; i++) { - FX_FLOAT lab[3]; - FX_FLOAT R, G, B; - lab[0] = (pSrcBuf[0] * 100 / 255.0f); - lab[1] = (FX_FLOAT)(pSrcBuf[1] - 128); - lab[2] = (FX_FLOAT)(pSrcBuf[2] - 128); - GetRGB(lab, R, G, B); - pDestBuf[0] = (int32_t)(B * 255); - pDestBuf[1] = (int32_t)(G * 255); - pDestBuf[2] = (int32_t)(R * 255); - pDestBuf += 3; - pSrcBuf += 3; - } -} -CPDF_IccProfile::CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize) - : m_bsRGB(FALSE), m_pTransform(NULL), m_nSrcComponents(0) { - if (dwSize == 3144 && - FXSYS_memcmp(pData + 0x190, "sRGB IEC61966-2.1", 17) == 0) { - m_bsRGB = TRUE; - m_nSrcComponents = 3; - } else if (CPDF_ModuleMgr::Get()->GetIccModule()) { - m_pTransform = CPDF_ModuleMgr::Get()->GetIccModule()->CreateTransform_sRGB( - pData, dwSize, m_nSrcComponents); - } -} -CPDF_IccProfile::~CPDF_IccProfile() { - if (m_pTransform) { - CPDF_ModuleMgr::Get()->GetIccModule()->DestroyTransform(m_pTransform); - } -} -class CPDF_ICCBasedCS : public CPDF_ColorSpace { - public: - explicit CPDF_ICCBasedCS(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_ICCBASED, 0), - m_pAlterCS(nullptr), - m_pProfile(nullptr), - m_pCache(nullptr), - m_pRanges(nullptr), - m_bOwn(FALSE) {} - ~CPDF_ICCBasedCS() override; - - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - FX_BOOL SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const override; - FX_BOOL v_GetCMYK(FX_FLOAT* pBuf, - FX_FLOAT& c, - FX_FLOAT& m, - FX_FLOAT& y, - FX_FLOAT& k) const override; - void EnableStdConversion(FX_BOOL bEnabled) override; - void TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask = FALSE) const override; - - CPDF_ColorSpace* m_pAlterCS; - CPDF_IccProfile* m_pProfile; - uint8_t* m_pCache; - FX_FLOAT* m_pRanges; - FX_BOOL m_bOwn; -}; - -CPDF_ICCBasedCS::~CPDF_ICCBasedCS() { - FX_Free(m_pCache); - FX_Free(m_pRanges); - if (m_pAlterCS && m_bOwn) { - m_pAlterCS->ReleaseCS(); - } - if (m_pProfile && m_pDocument) { - m_pDocument->GetPageData()->ReleaseIccProfile(m_pProfile); - } -} - -FX_BOOL CPDF_ICCBasedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - CPDF_Stream* pStream = pArray->GetStreamAt(1); - if (!pStream) { - return FALSE; - } - m_pProfile = pDoc->LoadIccProfile(pStream); - if (!m_pProfile) { - return FALSE; - } - m_nComponents = - m_pProfile - ->GetComponents(); // Try using the nComponents from ICC profile - CPDF_Dictionary* pDict = pStream->GetDict(); - if (!m_pProfile->m_pTransform) { // No valid ICC profile or using sRGB - CPDF_Object* pAlterCSObj = - pDict ? pDict->GetElementValue("Alternate") : NULL; - if (pAlterCSObj) { - CPDF_ColorSpace* pAlterCS = CPDF_ColorSpace::Load(pDoc, pAlterCSObj); - if (pAlterCS) { - if (m_nComponents == 0) { // NO valid ICC profile - if (pAlterCS->CountComponents() > 0) { // Use Alternative colorspace - m_nComponents = pAlterCS->CountComponents(); - m_pAlterCS = pAlterCS; - m_bOwn = TRUE; - } else { // No valid alternative colorspace - pAlterCS->ReleaseCS(); - int32_t nDictComponents = pDict ? pDict->GetIntegerBy("N") : 0; - if (nDictComponents != 1 && nDictComponents != 3 && - nDictComponents != 4) { - return FALSE; - } - m_nComponents = nDictComponents; - } - - } else { // Using sRGB - if (pAlterCS->CountComponents() != m_nComponents) { - pAlterCS->ReleaseCS(); - } else { - m_pAlterCS = pAlterCS; - m_bOwn = TRUE; - } - } - } - } - if (!m_pAlterCS) { - if (m_nComponents == 1) { - m_pAlterCS = GetStockCS(PDFCS_DEVICEGRAY); - } else if (m_nComponents == 3) { - m_pAlterCS = GetStockCS(PDFCS_DEVICERGB); - } else if (m_nComponents == 4) { - m_pAlterCS = GetStockCS(PDFCS_DEVICECMYK); - } - } - } - CPDF_Array* pRanges = pDict->GetArrayBy("Range"); - m_pRanges = FX_Alloc2D(FX_FLOAT, m_nComponents, 2); - for (int i = 0; i < m_nComponents * 2; i++) { - if (pRanges) { - m_pRanges[i] = pRanges->GetNumberAt(i); - } else if (i % 2) { - m_pRanges[i] = 1.0f; - } else { - m_pRanges[i] = 0; - } - } - return TRUE; -} -FX_BOOL CPDF_ICCBasedCS::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - if (m_pProfile && m_pProfile->m_bsRGB) { - R = pBuf[0]; - G = pBuf[1]; - B = pBuf[2]; - return TRUE; - } - ICodec_IccModule* pIccModule = CPDF_ModuleMgr::Get()->GetIccModule(); - if (!m_pProfile->m_pTransform || !pIccModule) { - if (m_pAlterCS) { - return m_pAlterCS->GetRGB(pBuf, R, G, B); - } - R = G = B = 0.0f; - return TRUE; - } - FX_FLOAT rgb[3]; - pIccModule->SetComponents(m_nComponents); - pIccModule->Translate(m_pProfile->m_pTransform, pBuf, rgb); - R = rgb[0]; - G = rgb[1]; - B = rgb[2]; - return TRUE; -} -FX_BOOL CPDF_ICCBasedCS::v_GetCMYK(FX_FLOAT* pBuf, - FX_FLOAT& c, - FX_FLOAT& m, - FX_FLOAT& y, - FX_FLOAT& k) const { - if (m_nComponents != 4) { - return FALSE; - } - c = pBuf[0]; - m = pBuf[1]; - y = pBuf[2]; - k = pBuf[3]; - return TRUE; -} -FX_BOOL CPDF_ICCBasedCS::SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const { - return FALSE; -} -void CPDF_ICCBasedCS::EnableStdConversion(FX_BOOL bEnabled) { - CPDF_ColorSpace::EnableStdConversion(bEnabled); - if (m_pAlterCS) { - m_pAlterCS->EnableStdConversion(bEnabled); - } -} -void CPDF_ICCBasedCS::TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask) const { - if (m_pProfile->m_bsRGB) { - ReverseRGB(pDestBuf, pSrcBuf, pixels); - } else if (m_pProfile->m_pTransform) { - int nMaxColors = 1; - for (int i = 0; i < m_nComponents; i++) { - nMaxColors *= 52; - } - if (m_nComponents > 3 || image_width * image_height < nMaxColors * 3 / 2) { - CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline( - m_pProfile->m_pTransform, pDestBuf, pSrcBuf, pixels); - } else { - if (!m_pCache) { - ((CPDF_ICCBasedCS*)this)->m_pCache = FX_Alloc2D(uint8_t, nMaxColors, 3); - uint8_t* temp_src = FX_Alloc2D(uint8_t, nMaxColors, m_nComponents); - uint8_t* pSrc = temp_src; - for (int i = 0; i < nMaxColors; i++) { - FX_DWORD color = i; - FX_DWORD order = nMaxColors / 52; - for (int c = 0; c < m_nComponents; c++) { - *pSrc++ = (uint8_t)(color / order * 5); - color %= order; - order /= 52; - } - } - CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline( - m_pProfile->m_pTransform, m_pCache, temp_src, nMaxColors); - FX_Free(temp_src); - } - for (int i = 0; i < pixels; i++) { - int index = 0; - for (int c = 0; c < m_nComponents; c++) { - index = index * 52 + (*pSrcBuf) / 5; - pSrcBuf++; - } - index *= 3; - *pDestBuf++ = m_pCache[index]; - *pDestBuf++ = m_pCache[index + 1]; - *pDestBuf++ = m_pCache[index + 2]; - } - } - } else if (m_pAlterCS) { - m_pAlterCS->TranslateImageLine(pDestBuf, pSrcBuf, pixels, image_width, - image_height); - } -} -class CPDF_IndexedCS : public CPDF_ColorSpace { - public: - explicit CPDF_IndexedCS(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_INDEXED, 1), - m_pBaseCS(nullptr), - m_pCountedBaseCS(nullptr), - m_pCompMinMax(nullptr) {} - ~CPDF_IndexedCS() override; - - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - CPDF_ColorSpace* GetBaseCS() const override; - void EnableStdConversion(FX_BOOL bEnabled) override; - - CPDF_ColorSpace* m_pBaseCS; - CPDF_CountedColorSpace* m_pCountedBaseCS; - int m_nBaseComponents; - int m_MaxIndex; - CFX_ByteString m_Table; - FX_FLOAT* m_pCompMinMax; -}; -CPDF_IndexedCS::~CPDF_IndexedCS() { - FX_Free(m_pCompMinMax); - CPDF_ColorSpace* pCS = m_pCountedBaseCS ? m_pCountedBaseCS->get() : NULL; - if (pCS && m_pDocument) { - m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); - } -} -FX_BOOL CPDF_IndexedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - if (pArray->GetCount() < 4) { - return FALSE; - } - CPDF_Object* pBaseObj = pArray->GetElementValue(1); - if (pBaseObj == m_pArray) { - return FALSE; - } - CPDF_DocPageData* pDocPageData = pDoc->GetPageData(); - m_pBaseCS = pDocPageData->GetColorSpace(pBaseObj, NULL); - if (!m_pBaseCS) { - return FALSE; - } - m_pCountedBaseCS = pDocPageData->FindColorSpacePtr(m_pBaseCS->GetArray()); - m_nBaseComponents = m_pBaseCS->CountComponents(); - m_pCompMinMax = FX_Alloc2D(FX_FLOAT, m_nBaseComponents, 2); - FX_FLOAT defvalue; - for (int i = 0; i < m_nBaseComponents; i++) { - m_pBaseCS->GetDefaultValue(i, defvalue, m_pCompMinMax[i * 2], - m_pCompMinMax[i * 2 + 1]); - m_pCompMinMax[i * 2 + 1] -= m_pCompMinMax[i * 2]; - } - m_MaxIndex = pArray->GetIntegerAt(2); - - CPDF_Object* pTableObj = pArray->GetElementValue(3); - if (!pTableObj) - return FALSE; - - if (CPDF_String* pString = pTableObj->AsString()) { - m_Table = pString->GetString(); - } else if (CPDF_Stream* pStream = pTableObj->AsStream()) { - CPDF_StreamAcc acc; - acc.LoadAllData(pStream, FALSE); - m_Table = CFX_ByteStringC(acc.GetData(), acc.GetSize()); - } - return TRUE; -} - -FX_BOOL CPDF_IndexedCS::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - int index = (int32_t)(*pBuf); - if (index < 0 || index > m_MaxIndex) { - return FALSE; - } - if (m_nBaseComponents) { - if (index == INT_MAX || (index + 1) > INT_MAX / m_nBaseComponents || - (index + 1) * m_nBaseComponents > (int)m_Table.GetLength()) { - R = G = B = 0; - return FALSE; - } - } - CFX_FixedBufGrow Comps(m_nBaseComponents); - FX_FLOAT* comps = Comps; - const uint8_t* pTable = m_Table; - for (int i = 0; i < m_nBaseComponents; i++) { - comps[i] = - m_pCompMinMax[i * 2] + - m_pCompMinMax[i * 2 + 1] * pTable[index * m_nBaseComponents + i] / 255; - } - return m_pBaseCS->GetRGB(comps, R, G, B); -} -CPDF_ColorSpace* CPDF_IndexedCS::GetBaseCS() const { - return m_pBaseCS; -} -void CPDF_IndexedCS::EnableStdConversion(FX_BOOL bEnabled) { - CPDF_ColorSpace::EnableStdConversion(bEnabled); - if (m_pBaseCS) { - m_pBaseCS->EnableStdConversion(bEnabled); - } -} - -#define MAX_PATTERN_COLORCOMPS 16 -struct PatternValue { - CPDF_Pattern* m_pPattern; - CPDF_CountedPattern* m_pCountedPattern; - int m_nComps; - FX_FLOAT m_Comps[MAX_PATTERN_COLORCOMPS]; -}; - -CPDF_PatternCS::~CPDF_PatternCS() { - CPDF_ColorSpace* pCS = m_pCountedBaseCS ? m_pCountedBaseCS->get() : NULL; - if (pCS && m_pDocument) { - m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); - } -} -FX_BOOL CPDF_PatternCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - CPDF_Object* pBaseCS = pArray->GetElementValue(1); - if (pBaseCS == m_pArray) { - return FALSE; - } - CPDF_DocPageData* pDocPageData = pDoc->GetPageData(); - m_pBaseCS = pDocPageData->GetColorSpace(pBaseCS, NULL); - if (m_pBaseCS) { - if (m_pBaseCS->GetFamily() == PDFCS_PATTERN) { - return FALSE; - } - m_pCountedBaseCS = pDocPageData->FindColorSpacePtr(m_pBaseCS->GetArray()); - m_nComponents = m_pBaseCS->CountComponents() + 1; - if (m_pBaseCS->CountComponents() > MAX_PATTERN_COLORCOMPS) { - return FALSE; - } - } else { - m_nComponents = 1; - } - return TRUE; -} -FX_BOOL CPDF_PatternCS::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - if (m_pBaseCS) { - ASSERT(m_pBaseCS->GetFamily() != PDFCS_PATTERN); - PatternValue* pvalue = (PatternValue*)pBuf; - if (m_pBaseCS->GetRGB(pvalue->m_Comps, R, G, B)) { - return TRUE; - } - } - R = G = B = 0.75f; - return FALSE; -} -CPDF_ColorSpace* CPDF_PatternCS::GetBaseCS() const { - return m_pBaseCS; -} -class CPDF_SeparationCS : public CPDF_ColorSpace { - public: - explicit CPDF_SeparationCS(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_SEPARATION, 1), - m_pAltCS(nullptr), - m_pFunc(nullptr) {} - ~CPDF_SeparationCS() override; - - // CPDF_ColorSpace: - void GetDefaultValue(int iComponent, - FX_FLOAT& value, - FX_FLOAT& min, - FX_FLOAT& max) const override; - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - void EnableStdConversion(FX_BOOL bEnabled) override; - - CPDF_ColorSpace* m_pAltCS; - CPDF_Function* m_pFunc; - enum { None, All, Colorant } m_Type; -}; -CPDF_SeparationCS::~CPDF_SeparationCS() { - if (m_pAltCS) { - m_pAltCS->ReleaseCS(); - } - delete m_pFunc; -} -void CPDF_SeparationCS::GetDefaultValue(int iComponent, - FX_FLOAT& value, - FX_FLOAT& min, - FX_FLOAT& max) const { - value = 1.0f; - min = 0; - max = 1.0f; -} -FX_BOOL CPDF_SeparationCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - CFX_ByteString name = pArray->GetStringAt(1); - if (name == "None") { - m_Type = None; - } else { - m_Type = Colorant; - CPDF_Object* pAltCS = pArray->GetElementValue(2); - if (pAltCS == m_pArray) { - return FALSE; - } - m_pAltCS = Load(pDoc, pAltCS); - if (!m_pAltCS) { - return FALSE; - } - CPDF_Object* pFuncObj = pArray->GetElementValue(3); - if (pFuncObj && !pFuncObj->IsName()) - m_pFunc = CPDF_Function::Load(pFuncObj); - - if (m_pFunc && m_pFunc->CountOutputs() < m_pAltCS->CountComponents()) { - delete m_pFunc; - m_pFunc = NULL; - } - } - return TRUE; -} -FX_BOOL CPDF_SeparationCS::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - if (m_Type == None) { - return FALSE; - } - if (!m_pFunc) { - if (!m_pAltCS) { - return FALSE; - } - int nComps = m_pAltCS->CountComponents(); - CFX_FixedBufGrow results(nComps); - for (int i = 0; i < nComps; i++) { - results[i] = *pBuf; - } - return m_pAltCS->GetRGB(results, R, G, B); - } - CFX_FixedBufGrow results(m_pFunc->CountOutputs()); - int nresults = 0; - m_pFunc->Call(pBuf, 1, results, nresults); - if (nresults == 0) { - return FALSE; - } - if (m_pAltCS) { - return m_pAltCS->GetRGB(results, R, G, B); - } - R = G = B = 0; - return FALSE; -} -void CPDF_SeparationCS::EnableStdConversion(FX_BOOL bEnabled) { - CPDF_ColorSpace::EnableStdConversion(bEnabled); - if (m_pAltCS) { - m_pAltCS->EnableStdConversion(bEnabled); - } -} -class CPDF_DeviceNCS : public CPDF_ColorSpace { - public: - explicit CPDF_DeviceNCS(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_DEVICEN, 0), - m_pAltCS(nullptr), - m_pFunc(nullptr) {} - ~CPDF_DeviceNCS() override; - - // CPDF_ColorSpace: - void GetDefaultValue(int iComponent, - FX_FLOAT& value, - FX_FLOAT& min, - FX_FLOAT& max) const override; - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - void EnableStdConversion(FX_BOOL bEnabled) override; - - CPDF_ColorSpace* m_pAltCS; - CPDF_Function* m_pFunc; -}; -CPDF_DeviceNCS::~CPDF_DeviceNCS() { - delete m_pFunc; - if (m_pAltCS) { - m_pAltCS->ReleaseCS(); - } -} -void CPDF_DeviceNCS::GetDefaultValue(int iComponent, - FX_FLOAT& value, - FX_FLOAT& min, - FX_FLOAT& max) const { - value = 1.0f; - min = 0; - max = 1.0f; -} -FX_BOOL CPDF_DeviceNCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) { - CPDF_Array* pObj = ToArray(pArray->GetElementValue(1)); - if (!pObj) - return FALSE; - - m_nComponents = pObj->GetCount(); - CPDF_Object* pAltCS = pArray->GetElementValue(2); - if (!pAltCS || pAltCS == m_pArray) { - return FALSE; - } - m_pAltCS = Load(pDoc, pAltCS); - m_pFunc = CPDF_Function::Load(pArray->GetElementValue(3)); - if (!m_pAltCS || !m_pFunc) { - return FALSE; - } - if (m_pFunc->CountOutputs() < m_pAltCS->CountComponents()) { - return FALSE; - } - return TRUE; -} -FX_BOOL CPDF_DeviceNCS::GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const { - if (!m_pFunc) { - return FALSE; - } - CFX_FixedBufGrow results(m_pFunc->CountOutputs()); - int nresults = 0; - m_pFunc->Call(pBuf, m_nComponents, results, nresults); - if (nresults == 0) { - return FALSE; - } - return m_pAltCS->GetRGB(results, R, G, B); -} -void CPDF_DeviceNCS::EnableStdConversion(FX_BOOL bEnabled) { - CPDF_ColorSpace::EnableStdConversion(bEnabled); - if (m_pAltCS) { - m_pAltCS->EnableStdConversion(bEnabled); - } -} - -CPDF_ColorSpace* CPDF_ColorSpace::GetStockCS(int family) { - return CPDF_ModuleMgr::Get()->GetPageModule()->GetStockCS(family); -} - -CPDF_ColorSpace* _CSFromName(const CFX_ByteString& name) { - if (name == "DeviceRGB" || name == "RGB") { - return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); - } - if (name == "DeviceGray" || name == "G") { - return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); - } - if (name == "DeviceCMYK" || name == "CMYK") { - return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); - } - if (name == "Pattern") { - return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); - } - return NULL; -} -CPDF_ColorSpace* CPDF_ColorSpace::Load(CPDF_Document* pDoc, CPDF_Object* pObj) { - if (!pObj) - return nullptr; - if (pObj->IsName()) - return _CSFromName(pObj->GetString()); - - if (CPDF_Stream* pStream = pObj->AsStream()) { - CPDF_Dictionary* pDict = pStream->GetDict(); - if (!pDict) - return nullptr; - - for (const auto& it : *pDict) { - CPDF_ColorSpace* pRet = nullptr; - CPDF_Object* pValue = it.second; - if (ToName(pValue)) - pRet = _CSFromName(pValue->GetString()); - if (pRet) - return pRet; - } - return nullptr; - } - - CPDF_Array* pArray = pObj->AsArray(); - if (!pArray || pArray->GetCount() == 0) - return nullptr; - - CPDF_Object* pFamilyObj = pArray->GetElementValue(0); - if (!pFamilyObj) - return nullptr; - - CFX_ByteString familyname = pFamilyObj->GetString(); - if (pArray->GetCount() == 1) - return _CSFromName(familyname); - - CPDF_ColorSpace* pCS = NULL; - FX_DWORD id = familyname.GetID(); - if (id == FXBSTR_ID('C', 'a', 'l', 'G')) { - pCS = new CPDF_CalGray(pDoc); - } else if (id == FXBSTR_ID('C', 'a', 'l', 'R')) { - pCS = new CPDF_CalRGB(pDoc); - } else if (id == FXBSTR_ID('L', 'a', 'b', 0)) { - pCS = new CPDF_LabCS(pDoc); - } else if (id == FXBSTR_ID('I', 'C', 'C', 'B')) { - pCS = new CPDF_ICCBasedCS(pDoc); - } else if (id == FXBSTR_ID('I', 'n', 'd', 'e') || - id == FXBSTR_ID('I', 0, 0, 0)) { - pCS = new CPDF_IndexedCS(pDoc); - } else if (id == FXBSTR_ID('S', 'e', 'p', 'a')) { - pCS = new CPDF_SeparationCS(pDoc); - } else if (id == FXBSTR_ID('D', 'e', 'v', 'i')) { - pCS = new CPDF_DeviceNCS(pDoc); - } else if (id == FXBSTR_ID('P', 'a', 't', 't')) { - pCS = new CPDF_PatternCS(pDoc); - } else { - return NULL; - } - pCS->m_pArray = pArray; - if (!pCS->v_Load(pDoc, pArray)) { - pCS->ReleaseCS(); - return NULL; - } - return pCS; -} -void CPDF_ColorSpace::ReleaseCS() { - if (this == GetStockCS(PDFCS_DEVICERGB)) { - return; - } - if (this == GetStockCS(PDFCS_DEVICEGRAY)) { - return; - } - if (this == GetStockCS(PDFCS_DEVICECMYK)) { - return; - } - if (this == GetStockCS(PDFCS_PATTERN)) { - return; - } - delete this; -} -int CPDF_ColorSpace::GetBufSize() const { - if (m_Family == PDFCS_PATTERN) { - return sizeof(PatternValue); - } - return m_nComponents * sizeof(FX_FLOAT); -} -FX_FLOAT* CPDF_ColorSpace::CreateBuf() { - int size = GetBufSize(); - uint8_t* pBuf = FX_Alloc(uint8_t, size); - return (FX_FLOAT*)pBuf; -} -FX_BOOL CPDF_ColorSpace::sRGB() const { - if (m_Family == PDFCS_DEVICERGB) { - return TRUE; - } - if (m_Family != PDFCS_ICCBASED) { - return FALSE; - } - CPDF_ICCBasedCS* pCS = (CPDF_ICCBasedCS*)this; - return pCS->m_pProfile->m_bsRGB; -} -FX_BOOL CPDF_ColorSpace::GetCMYK(FX_FLOAT* pBuf, - FX_FLOAT& c, - FX_FLOAT& m, - FX_FLOAT& y, - FX_FLOAT& k) const { - if (v_GetCMYK(pBuf, c, m, y, k)) { - return TRUE; - } - FX_FLOAT R, G, B; - if (!GetRGB(pBuf, R, G, B)) { - return FALSE; - } - sRGB_to_AdobeCMYK(R, G, B, c, m, y, k); - return TRUE; -} -FX_BOOL CPDF_ColorSpace::SetCMYK(FX_FLOAT* pBuf, - FX_FLOAT c, - FX_FLOAT m, - FX_FLOAT y, - FX_FLOAT k) const { - if (v_SetCMYK(pBuf, c, m, y, k)) { - return TRUE; - } - FX_FLOAT R, G, B; - AdobeCMYK_to_sRGB(c, m, y, k, R, G, B); - return SetRGB(pBuf, R, G, B); -} -void CPDF_ColorSpace::GetDefaultColor(FX_FLOAT* buf) const { - if (!buf || m_Family == PDFCS_PATTERN) { - return; - } - FX_FLOAT min, max; - for (int i = 0; i < m_nComponents; i++) { - GetDefaultValue(i, buf[i], min, max); - } -} -int CPDF_ColorSpace::GetMaxIndex() const { - if (m_Family != PDFCS_INDEXED) { - return 0; - } - CPDF_IndexedCS* pCS = (CPDF_IndexedCS*)this; - return pCS->m_MaxIndex; -} -void CPDF_ColorSpace::TranslateImageLine(uint8_t* dest_buf, - const uint8_t* src_buf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask) const { - CFX_FixedBufGrow srcbuf(m_nComponents); - FX_FLOAT* src = srcbuf; - FX_FLOAT R, G, B; - for (int i = 0; i < pixels; i++) { - for (int j = 0; j < m_nComponents; j++) - if (m_Family == PDFCS_INDEXED) { - src[j] = (FX_FLOAT)(*src_buf++); - } else { - src[j] = (FX_FLOAT)(*src_buf++) / 255; - } - GetRGB(src, R, G, B); - *dest_buf++ = (int32_t)(B * 255); - *dest_buf++ = (int32_t)(G * 255); - *dest_buf++ = (int32_t)(R * 255); - } -} -void CPDF_ColorSpace::EnableStdConversion(FX_BOOL bEnabled) { - if (bEnabled) { - m_dwStdConversion++; - } else if (m_dwStdConversion) { - m_dwStdConversion--; - } -} -CPDF_Color::CPDF_Color(int family) { - m_pCS = CPDF_ColorSpace::GetStockCS(family); - int nComps = 3; - if (family == PDFCS_DEVICEGRAY) { - nComps = 1; - } else if (family == PDFCS_DEVICECMYK) { - nComps = 4; - } - m_pBuffer = FX_Alloc(FX_FLOAT, nComps); - for (int i = 0; i < nComps; i++) { - m_pBuffer[i] = 0; - } -} -CPDF_Color::~CPDF_Color() { - ReleaseBuffer(); - ReleaseColorSpace(); -} -void CPDF_Color::ReleaseBuffer() { - if (!m_pBuffer) { - return; - } - if (m_pCS->GetFamily() == PDFCS_PATTERN) { - PatternValue* pvalue = (PatternValue*)m_pBuffer; - CPDF_Pattern* pPattern = - pvalue->m_pCountedPattern ? pvalue->m_pCountedPattern->get() : NULL; - if (pPattern && pPattern->m_pDocument) { - CPDF_DocPageData* pPageData = pPattern->m_pDocument->GetPageData(); - if (pPageData) { - pPageData->ReleasePattern(pPattern->m_pPatternObj); - } - } - } - FX_Free(m_pBuffer); - m_pBuffer = NULL; -} -void CPDF_Color::ReleaseColorSpace() { - if (m_pCS && m_pCS->m_pDocument && m_pCS->GetArray()) { - m_pCS->m_pDocument->GetPageData()->ReleaseColorSpace(m_pCS->GetArray()); - m_pCS = NULL; - } -} -void CPDF_Color::SetColorSpace(CPDF_ColorSpace* pCS) { - if (m_pCS == pCS) { - if (!m_pBuffer) { - m_pBuffer = pCS->CreateBuf(); - } - ReleaseColorSpace(); - m_pCS = pCS; - return; - } - ReleaseBuffer(); - ReleaseColorSpace(); - m_pCS = pCS; - if (m_pCS) { - m_pBuffer = pCS->CreateBuf(); - pCS->GetDefaultColor(m_pBuffer); - } -} -void CPDF_Color::SetValue(FX_FLOAT* comps) { - if (!m_pBuffer) { - return; - } - if (m_pCS->GetFamily() != PDFCS_PATTERN) { - FXSYS_memcpy(m_pBuffer, comps, m_pCS->CountComponents() * sizeof(FX_FLOAT)); - } -} -void CPDF_Color::SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comps, int ncomps) { - if (ncomps > MAX_PATTERN_COLORCOMPS) { - return; - } - if (!m_pCS || m_pCS->GetFamily() != PDFCS_PATTERN) { - FX_Free(m_pBuffer); - m_pCS = CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); - m_pBuffer = m_pCS->CreateBuf(); - } - CPDF_DocPageData* pDocPageData = NULL; - PatternValue* pvalue = (PatternValue*)m_pBuffer; - if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) { - pDocPageData = pvalue->m_pPattern->m_pDocument->GetPageData(); - if (pDocPageData) { - pDocPageData->ReleasePattern(pvalue->m_pPattern->m_pPatternObj); - } - } - pvalue->m_nComps = ncomps; - pvalue->m_pPattern = pPattern; - if (ncomps) { - FXSYS_memcpy(pvalue->m_Comps, comps, ncomps * sizeof(FX_FLOAT)); - } - pvalue->m_pCountedPattern = NULL; - if (pPattern && pPattern->m_pDocument) { - if (!pDocPageData) { - pDocPageData = pPattern->m_pDocument->GetPageData(); - } - pvalue->m_pCountedPattern = - pDocPageData->FindPatternPtr(pPattern->m_pPatternObj); - } -} -void CPDF_Color::Copy(const CPDF_Color* pSrc) { - ReleaseBuffer(); - ReleaseColorSpace(); - m_pCS = pSrc->m_pCS; - if (m_pCS && m_pCS->m_pDocument) { - CPDF_Array* pArray = m_pCS->GetArray(); - if (pArray) { - m_pCS = m_pCS->m_pDocument->GetPageData()->GetCopiedColorSpace(pArray); - } - } - if (!m_pCS) { - return; - } - m_pBuffer = m_pCS->CreateBuf(); - FXSYS_memcpy(m_pBuffer, pSrc->m_pBuffer, m_pCS->GetBufSize()); - if (m_pCS->GetFamily() == PDFCS_PATTERN) { - PatternValue* pvalue = (PatternValue*)m_pBuffer; - if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) { - pvalue->m_pPattern = - pvalue->m_pPattern->m_pDocument->GetPageData()->GetPattern( - pvalue->m_pPattern->m_pPatternObj, FALSE, - &pvalue->m_pPattern->m_ParentMatrix); - } - } -} -FX_BOOL CPDF_Color::GetRGB(int& R, int& G, int& B) const { - if (!m_pCS || !m_pBuffer) { - return FALSE; - } - FX_FLOAT r = 0.0f, g = 0.0f, b = 0.0f; - if (!m_pCS->GetRGB(m_pBuffer, r, g, b)) { - return FALSE; - } - R = (int32_t)(r * 255 + 0.5f); - G = (int32_t)(g * 255 + 0.5f); - B = (int32_t)(b * 255 + 0.5f); - return TRUE; -} -CPDF_Pattern* CPDF_Color::GetPattern() const { - if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) { - return NULL; - } - PatternValue* pvalue = (PatternValue*)m_pBuffer; - return pvalue->m_pPattern; -} -CPDF_ColorSpace* CPDF_Color::GetPatternCS() const { - if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) { - return NULL; - } - return m_pCS->GetBaseCS(); -} -FX_FLOAT* CPDF_Color::GetPatternColor() const { - if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) { - return NULL; - } - PatternValue* pvalue = (PatternValue*)m_pBuffer; - return pvalue->m_nComps ? pvalue->m_Comps : NULL; -} -FX_BOOL CPDF_Color::IsEqual(const CPDF_Color& other) const { - return m_pCS && m_pCS == other.m_pCS && - FXSYS_memcmp(m_pBuffer, other.m_pBuffer, m_pCS->GetBufSize()) == 0; -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp deleted file mode 100644 index 7c5a0eab42..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp +++ /dev/null @@ -1,610 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include "core/include/fdrm/fx_crypt.h" -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/src/fpdfapi/fpdf_font/font_int.h" - -class CPDF_PageModule : public IPDF_PageModule { - public: - CPDF_PageModule() - : m_StockGrayCS(nullptr, PDFCS_DEVICEGRAY), - m_StockRGBCS(nullptr, PDFCS_DEVICERGB), - m_StockCMYKCS(nullptr, PDFCS_DEVICECMYK), - m_StockPatternCS(nullptr) {} - - private: - ~CPDF_PageModule() override {} - - CPDF_DocPageData* CreateDocData(CPDF_Document* pDoc) override { - return new CPDF_DocPageData(pDoc); - } - - void ReleaseDoc(CPDF_Document* pDoc) override; - void ClearDoc(CPDF_Document* pDoc) override; - - CPDF_FontGlobals* GetFontGlobals() override { return &m_FontGlobals; } - - void ClearStockFont(CPDF_Document* pDoc) override { - m_FontGlobals.Clear(pDoc); - } - - CPDF_ColorSpace* GetStockCS(int family) override; - void NotifyCJKAvailable() override; - - CPDF_FontGlobals m_FontGlobals; - CPDF_DeviceCS m_StockGrayCS; - CPDF_DeviceCS m_StockRGBCS; - CPDF_DeviceCS m_StockCMYKCS; - CPDF_PatternCS m_StockPatternCS; -}; - -CPDF_ColorSpace* CPDF_PageModule::GetStockCS(int family) { - if (family == PDFCS_DEVICEGRAY) { - return &m_StockGrayCS; - } - if (family == PDFCS_DEVICERGB) { - return &m_StockRGBCS; - } - if (family == PDFCS_DEVICECMYK) { - return &m_StockCMYKCS; - } - if (family == PDFCS_PATTERN) { - return &m_StockPatternCS; - } - return NULL; -} - -void CPDF_ModuleMgr::InitPageModule() { - m_pPageModule.reset(new CPDF_PageModule); -} - -void CPDF_PageModule::ReleaseDoc(CPDF_Document* pDoc) { - delete pDoc->GetPageData(); -} -void CPDF_PageModule::ClearDoc(CPDF_Document* pDoc) { - pDoc->GetPageData()->Clear(FALSE); -} -void CPDF_PageModule::NotifyCJKAvailable() { - m_FontGlobals.m_CMapManager.ReloadAll(); -} - -CPDF_Font* CPDF_Document::LoadFont(CPDF_Dictionary* pFontDict) { - ASSERT(pFontDict); - return GetValidatePageData()->GetFont(pFontDict, FALSE); -} - -CPDF_StreamAcc* CPDF_Document::LoadFontFile(CPDF_Stream* pStream) { - return GetValidatePageData()->GetFontFileStreamAcc(pStream); -} - -CPDF_ColorSpace* _CSFromName(const CFX_ByteString& name); -CPDF_ColorSpace* CPDF_Document::LoadColorSpace(CPDF_Object* pCSObj, - CPDF_Dictionary* pResources) { - return GetValidatePageData()->GetColorSpace(pCSObj, pResources); -} -CPDF_Pattern* CPDF_Document::LoadPattern(CPDF_Object* pPatternObj, - FX_BOOL bShading, - const CFX_Matrix* matrix) { - return GetValidatePageData()->GetPattern(pPatternObj, bShading, matrix); -} -CPDF_IccProfile* CPDF_Document::LoadIccProfile(CPDF_Stream* pStream) { - return GetValidatePageData()->GetIccProfile(pStream); -} -CPDF_Image* CPDF_Document::LoadImageF(CPDF_Object* pObj) { - if (!pObj) { - return NULL; - } - FXSYS_assert(pObj->GetObjNum()); - return GetValidatePageData()->GetImage(pObj); -} -void CPDF_Document::RemoveColorSpaceFromPageData(CPDF_Object* pCSObj) { - if (!pCSObj) { - return; - } - GetPageData()->ReleaseColorSpace(pCSObj); -} -CPDF_DocPageData::CPDF_DocPageData(CPDF_Document* pPDFDoc) - : m_pPDFDoc(pPDFDoc), m_bForceClear(FALSE) {} - -CPDF_DocPageData::~CPDF_DocPageData() { - Clear(FALSE); - Clear(TRUE); - - for (auto& it : m_PatternMap) - delete it.second; - m_PatternMap.clear(); - - for (auto& it : m_FontMap) - delete it.second; - m_FontMap.clear(); - - for (auto& it : m_ColorSpaceMap) - delete it.second; - m_ColorSpaceMap.clear(); -} - -void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) { - m_bForceClear = bForceRelease; - - for (auto& it : m_PatternMap) { - CPDF_CountedPattern* ptData = it.second; - if (!ptData->get()) - continue; - - if (bForceRelease || ptData->use_count() < 2) { - ptData->get()->SetForceClear(bForceRelease); - ptData->clear(); - } - } - - for (auto& it : m_FontMap) { - CPDF_CountedFont* fontData = it.second; - if (!fontData->get()) - continue; - - if (bForceRelease || fontData->use_count() < 2) { - fontData->clear(); - } - } - - for (auto& it : m_ColorSpaceMap) { - CPDF_CountedColorSpace* csData = it.second; - if (!csData->get()) - continue; - - if (bForceRelease || csData->use_count() < 2) { - csData->get()->ReleaseCS(); - csData->reset(nullptr); - } - } - - for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end();) { - auto curr_it = it++; - CPDF_CountedIccProfile* ipData = curr_it->second; - if (!ipData->get()) - continue; - - if (bForceRelease || ipData->use_count() < 2) { - for (auto hash_it = m_HashProfileMap.begin(); - hash_it != m_HashProfileMap.end(); ++hash_it) { - if (curr_it->first == hash_it->second) { - m_HashProfileMap.erase(hash_it); - break; - } - } - delete ipData->get(); - delete ipData; - m_IccProfileMap.erase(curr_it); - } - } - - for (auto it = m_FontFileMap.begin(); it != m_FontFileMap.end();) { - auto curr_it = it++; - CPDF_CountedStreamAcc* ftData = curr_it->second; - if (!ftData->get()) - continue; - - if (bForceRelease || ftData->use_count() < 2) { - delete ftData->get(); - delete ftData; - m_FontFileMap.erase(curr_it); - } - } - - for (auto it = m_ImageMap.begin(); it != m_ImageMap.end();) { - auto curr_it = it++; - CPDF_CountedImage* imageData = curr_it->second; - if (!imageData->get()) - continue; - - if (bForceRelease || imageData->use_count() < 2) { - delete imageData->get(); - delete imageData; - m_ImageMap.erase(curr_it); - } - } -} - -CPDF_Font* CPDF_DocPageData::GetFont(CPDF_Dictionary* pFontDict, - FX_BOOL findOnly) { - if (!pFontDict) { - return NULL; - } - if (findOnly) { - auto it = m_FontMap.find(pFontDict); - if (it != m_FontMap.end() && it->second->get()) { - return it->second->AddRef(); - } - return nullptr; - } - - CPDF_CountedFont* fontData = nullptr; - auto it = m_FontMap.find(pFontDict); - if (it != m_FontMap.end()) { - fontData = it->second; - if (fontData->get()) { - return fontData->AddRef(); - } - } - - CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pFontDict); - if (!pFont) { - return nullptr; - } - if (!fontData) { - fontData = new CPDF_CountedFont(pFont); - m_FontMap[pFontDict] = fontData; - } else { - fontData->reset(pFont); - } - return fontData->AddRef(); -} - -CPDF_Font* CPDF_DocPageData::GetStandardFont(const CFX_ByteStringC& fontName, - CPDF_FontEncoding* pEncoding) { - if (fontName.IsEmpty()) - return nullptr; - - for (auto& it : m_FontMap) { - CPDF_CountedFont* fontData = it.second; - CPDF_Font* pFont = fontData->get(); - if (!pFont) - continue; - if (pFont->GetBaseFont() != fontName) - continue; - if (pFont->IsEmbedded()) - continue; - if (!pFont->IsType1Font()) - continue; - if (pFont->GetFontDict()->KeyExist("Widths")) - continue; - - CPDF_Type1Font* pT1Font = pFont->AsType1Font(); - if (pEncoding && !pT1Font->GetEncoding()->IsIdentical(pEncoding)) - continue; - - return fontData->AddRef(); - } - - CPDF_Dictionary* pDict = new CPDF_Dictionary; - pDict->SetAtName("Type", "Font"); - pDict->SetAtName("Subtype", "Type1"); - pDict->SetAtName("BaseFont", fontName); - if (pEncoding) { - pDict->SetAt("Encoding", pEncoding->Realize()); - } - m_pPDFDoc->AddIndirectObject(pDict); - CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pDict); - if (!pFont) { - return nullptr; - } - CPDF_CountedFont* fontData = new CPDF_CountedFont(pFont); - m_FontMap[pDict] = fontData; - return fontData->AddRef(); -} - -void CPDF_DocPageData::ReleaseFont(CPDF_Dictionary* pFontDict) { - if (!pFontDict) - return; - - auto it = m_FontMap.find(pFontDict); - if (it == m_FontMap.end()) - return; - - CPDF_CountedFont* fontData = it->second; - if (fontData->get()) { - fontData->RemoveRef(); - if (fontData->use_count() == 0) { - fontData->clear(); - } - } -} - -CPDF_ColorSpace* CPDF_DocPageData::GetColorSpace( - CPDF_Object* pCSObj, - const CPDF_Dictionary* pResources) { - if (!pCSObj) - return nullptr; - - if (pCSObj->IsName()) { - CFX_ByteString name = pCSObj->GetConstString(); - CPDF_ColorSpace* pCS = _CSFromName(name); - if (!pCS && pResources) { - CPDF_Dictionary* pList = pResources->GetDictBy("ColorSpace"); - if (pList) { - pCSObj = pList->GetElementValue(name); - return GetColorSpace(pCSObj, nullptr); - } - } - if (!pCS || !pResources) - return pCS; - - CPDF_Dictionary* pColorSpaces = pResources->GetDictBy("ColorSpace"); - if (!pColorSpaces) - return pCS; - - CPDF_Object* pDefaultCS = nullptr; - switch (pCS->GetFamily()) { - case PDFCS_DEVICERGB: - pDefaultCS = pColorSpaces->GetElementValue("DefaultRGB"); - break; - case PDFCS_DEVICEGRAY: - pDefaultCS = pColorSpaces->GetElementValue("DefaultGray"); - break; - case PDFCS_DEVICECMYK: - pDefaultCS = pColorSpaces->GetElementValue("DefaultCMYK"); - break; - } - return pDefaultCS ? GetColorSpace(pDefaultCS, nullptr) : pCS; - } - - CPDF_Array* pArray = pCSObj->AsArray(); - if (!pArray || pArray->GetCount() == 0) - return nullptr; - if (pArray->GetCount() == 1) - return GetColorSpace(pArray->GetElementValue(0), pResources); - - CPDF_CountedColorSpace* csData = nullptr; - auto it = m_ColorSpaceMap.find(pCSObj); - if (it != m_ColorSpaceMap.end()) { - csData = it->second; - if (csData->get()) { - return csData->AddRef(); - } - } - - CPDF_ColorSpace* pCS = CPDF_ColorSpace::Load(m_pPDFDoc, pArray); - if (!pCS) - return nullptr; - - if (!csData) { - csData = new CPDF_CountedColorSpace(pCS); - m_ColorSpaceMap[pCSObj] = csData; - } else { - csData->reset(pCS); - } - return csData->AddRef(); -} - -CPDF_ColorSpace* CPDF_DocPageData::GetCopiedColorSpace(CPDF_Object* pCSObj) { - if (!pCSObj) - return nullptr; - - auto it = m_ColorSpaceMap.find(pCSObj); - if (it != m_ColorSpaceMap.end()) - return it->second->AddRef(); - - return nullptr; -} - -void CPDF_DocPageData::ReleaseColorSpace(CPDF_Object* pColorSpace) { - if (!pColorSpace) - return; - - auto it = m_ColorSpaceMap.find(pColorSpace); - if (it == m_ColorSpaceMap.end()) - return; - - CPDF_CountedColorSpace* csData = it->second; - if (csData->get()) { - csData->RemoveRef(); - if (csData->use_count() == 0) { - csData->get()->ReleaseCS(); - csData->reset(nullptr); - } - } -} - -CPDF_Pattern* CPDF_DocPageData::GetPattern(CPDF_Object* pPatternObj, - FX_BOOL bShading, - const CFX_Matrix* matrix) { - if (!pPatternObj) - return nullptr; - - CPDF_CountedPattern* ptData = nullptr; - auto it = m_PatternMap.find(pPatternObj); - if (it != m_PatternMap.end()) { - ptData = it->second; - if (ptData->get()) { - return ptData->AddRef(); - } - } - CPDF_Pattern* pPattern = nullptr; - if (bShading) { - pPattern = - new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, bShading, matrix); - } else { - CPDF_Dictionary* pDict = pPatternObj ? pPatternObj->GetDict() : nullptr; - if (pDict) { - int type = pDict->GetIntegerBy("PatternType"); - if (type == 1) { - pPattern = new CPDF_TilingPattern(m_pPDFDoc, pPatternObj, matrix); - } else if (type == 2) { - pPattern = - new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, FALSE, matrix); - } - } - } - if (!pPattern) - return nullptr; - - if (!ptData) { - ptData = new CPDF_CountedPattern(pPattern); - m_PatternMap[pPatternObj] = ptData; - } else { - ptData->reset(pPattern); - } - return ptData->AddRef(); -} - -void CPDF_DocPageData::ReleasePattern(CPDF_Object* pPatternObj) { - if (!pPatternObj) - return; - - auto it = m_PatternMap.find(pPatternObj); - if (it == m_PatternMap.end()) - return; - - CPDF_CountedPattern* ptData = it->second; - if (ptData->get()) { - ptData->RemoveRef(); - if (ptData->use_count() == 0) { - ptData->clear(); - } - } -} - -CPDF_Image* CPDF_DocPageData::GetImage(CPDF_Object* pImageStream) { - if (!pImageStream) - return nullptr; - - const FX_DWORD dwImageObjNum = pImageStream->GetObjNum(); - auto it = m_ImageMap.find(dwImageObjNum); - if (it != m_ImageMap.end()) { - return it->second->AddRef(); - } - - CPDF_Image* pImage = new CPDF_Image(m_pPDFDoc); - pImage->LoadImageF(pImageStream->AsStream(), FALSE); - - CPDF_CountedImage* imageData = new CPDF_CountedImage(pImage); - m_ImageMap[dwImageObjNum] = imageData; - return imageData->AddRef(); -} - -void CPDF_DocPageData::ReleaseImage(CPDF_Object* pImageStream) { - if (!pImageStream || !pImageStream->GetObjNum()) - return; - - auto it = m_ImageMap.find(pImageStream->GetObjNum()); - if (it == m_ImageMap.end()) - return; - - CPDF_CountedImage* image = it->second; - if (!image) - return; - - image->RemoveRef(); - if (image->use_count() == 0) { - delete image->get(); - delete image; - m_ImageMap.erase(it); - } -} - -CPDF_IccProfile* CPDF_DocPageData::GetIccProfile( - CPDF_Stream* pIccProfileStream) { - if (!pIccProfileStream) - return NULL; - - auto it = m_IccProfileMap.find(pIccProfileStream); - if (it != m_IccProfileMap.end()) { - return it->second->AddRef(); - } - - CPDF_StreamAcc stream; - stream.LoadAllData(pIccProfileStream, FALSE); - uint8_t digest[20]; - CRYPT_SHA1Generate(stream.GetData(), stream.GetSize(), digest); - auto hash_it = m_HashProfileMap.find(CFX_ByteStringC(digest, 20)); - if (hash_it != m_HashProfileMap.end()) { - auto it_copied_stream = m_IccProfileMap.find(hash_it->second); - return it_copied_stream->second->AddRef(); - } - CPDF_IccProfile* pProfile = - new CPDF_IccProfile(stream.GetData(), stream.GetSize()); - CPDF_CountedIccProfile* ipData = new CPDF_CountedIccProfile(pProfile); - m_IccProfileMap[pIccProfileStream] = ipData; - m_HashProfileMap[CFX_ByteStringC(digest, 20)] = pIccProfileStream; - return ipData->AddRef(); -} - -void CPDF_DocPageData::ReleaseIccProfile(CPDF_IccProfile* pIccProfile) { - ASSERT(pIccProfile); - - for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end(); ++it) { - CPDF_CountedIccProfile* profile = it->second; - if (profile->get() != pIccProfile) - continue; - - profile->RemoveRef(); - if (profile->use_count() == 0) { - delete profile->get(); - delete profile; - m_IccProfileMap.erase(it); - return; - } - } -} - -CPDF_StreamAcc* CPDF_DocPageData::GetFontFileStreamAcc( - CPDF_Stream* pFontStream) { - ASSERT(pFontStream); - - auto it = m_FontFileMap.find(pFontStream); - if (it != m_FontFileMap.end()) - return it->second->AddRef(); - - CPDF_Dictionary* pFontDict = pFontStream->GetDict(); - int32_t org_size = pFontDict->GetIntegerBy("Length1") + - pFontDict->GetIntegerBy("Length2") + - pFontDict->GetIntegerBy("Length3"); - if (org_size < 0) - org_size = 0; - - CPDF_StreamAcc* pFontFile = new CPDF_StreamAcc; - pFontFile->LoadAllData(pFontStream, FALSE, org_size); - - CPDF_CountedStreamAcc* ftData = new CPDF_CountedStreamAcc(pFontFile); - m_FontFileMap[pFontStream] = ftData; - return ftData->AddRef(); -} - -void CPDF_DocPageData::ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, - FX_BOOL bForce) { - if (!pFontStream) - return; - - auto it = m_FontFileMap.find(pFontStream); - if (it == m_FontFileMap.end()) - return; - - CPDF_CountedStreamAcc* findData = it->second; - if (!findData) - return; - - findData->RemoveRef(); - if (findData->use_count() == 0 || bForce) { - delete findData->get(); - delete findData; - m_FontFileMap.erase(it); - } -} - -CPDF_CountedColorSpace* CPDF_DocPageData::FindColorSpacePtr( - CPDF_Object* pCSObj) const { - if (!pCSObj) - return nullptr; - - auto it = m_ColorSpaceMap.find(pCSObj); - return it != m_ColorSpaceMap.end() ? it->second : nullptr; -} - -CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr( - CPDF_Object* pPatternObj) const { - if (!pPatternObj) - return nullptr; - - auto it = m_PatternMap.find(pPatternObj); - return it != m_PatternMap.end() ? it->second : nullptr; -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp deleted file mode 100644 index 1d7bf64903..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp +++ /dev/null @@ -1,966 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include - -#include -#include -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_simple_parser.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "third_party/base/numerics/safe_conversions_impl.h" - -namespace { - -enum PDF_PSOP { - PSOP_ADD, - PSOP_SUB, - PSOP_MUL, - PSOP_DIV, - PSOP_IDIV, - PSOP_MOD, - PSOP_NEG, - PSOP_ABS, - PSOP_CEILING, - PSOP_FLOOR, - PSOP_ROUND, - PSOP_TRUNCATE, - PSOP_SQRT, - PSOP_SIN, - PSOP_COS, - PSOP_ATAN, - PSOP_EXP, - PSOP_LN, - PSOP_LOG, - PSOP_CVI, - PSOP_CVR, - PSOP_EQ, - PSOP_NE, - PSOP_GT, - PSOP_GE, - PSOP_LT, - PSOP_LE, - PSOP_AND, - PSOP_OR, - PSOP_XOR, - PSOP_NOT, - PSOP_BITSHIFT, - PSOP_TRUE, - PSOP_FALSE, - PSOP_IF, - PSOP_IFELSE, - PSOP_POP, - PSOP_EXCH, - PSOP_DUP, - PSOP_COPY, - PSOP_INDEX, - PSOP_ROLL, - PSOP_PROC, - PSOP_CONST -}; - -class CPDF_PSEngine; -class CPDF_PSProc; - -class CPDF_PSOP { - public: - explicit CPDF_PSOP(PDF_PSOP op) : m_op(op), m_value(0) { - ASSERT(m_op != PSOP_CONST); - ASSERT(m_op != PSOP_PROC); - } - explicit CPDF_PSOP(FX_FLOAT value) : m_op(PSOP_CONST), m_value(value) {} - explicit CPDF_PSOP(std::unique_ptr proc) - : m_op(PSOP_PROC), m_value(0), m_proc(std::move(proc)) {} - - FX_FLOAT GetFloatValue() const { - if (m_op == PSOP_CONST) - return m_value; - - ASSERT(false); - return 0; - } - CPDF_PSProc* GetProc() const { - if (m_op == PSOP_PROC) - return m_proc.get(); - ASSERT(false); - return nullptr; - } - - PDF_PSOP GetOp() const { return m_op; } - - private: - const PDF_PSOP m_op; - const FX_FLOAT m_value; - std::unique_ptr m_proc; -}; - -class CPDF_PSProc { - public: - CPDF_PSProc() {} - ~CPDF_PSProc() {} - - FX_BOOL Parse(CPDF_SimpleParser* parser); - FX_BOOL Execute(CPDF_PSEngine* pEngine); - - private: - std::vector> m_Operators; -}; - -const size_t PSENGINE_STACKSIZE = 100; - -class CPDF_PSEngine { - public: - CPDF_PSEngine(); - ~CPDF_PSEngine(); - - FX_BOOL Parse(const FX_CHAR* str, int size); - FX_BOOL Execute() { return m_MainProc.Execute(this); } - FX_BOOL DoOperator(PDF_PSOP op); - void Reset() { m_StackCount = 0; } - void Push(FX_FLOAT value); - void Push(int value) { Push((FX_FLOAT)value); } - FX_FLOAT Pop(); - int GetStackSize() const { return m_StackCount; } - - private: - FX_FLOAT m_Stack[PSENGINE_STACKSIZE]; - int m_StackCount; - CPDF_PSProc m_MainProc; -}; - -FX_BOOL CPDF_PSProc::Execute(CPDF_PSEngine* pEngine) { - for (size_t i = 0; i < m_Operators.size(); ++i) { - const PDF_PSOP op = m_Operators[i]->GetOp(); - if (op == PSOP_PROC) - continue; - - if (op == PSOP_CONST) { - pEngine->Push(m_Operators[i]->GetFloatValue()); - continue; - } - - if (op == PSOP_IF) { - if (i == 0 || m_Operators[i - 1]->GetOp() != PSOP_PROC) - return FALSE; - - if (static_cast(pEngine->Pop())) - m_Operators[i - 1]->GetProc()->Execute(pEngine); - } else if (op == PSOP_IFELSE) { - if (i < 2 || m_Operators[i - 1]->GetOp() != PSOP_PROC || - m_Operators[i - 2]->GetOp() != PSOP_PROC) { - return FALSE; - } - size_t offset = static_cast(pEngine->Pop()) ? 2 : 1; - m_Operators[i - offset]->GetProc()->Execute(pEngine); - } else { - pEngine->DoOperator(op); - } - } - return TRUE; -} - -CPDF_PSEngine::CPDF_PSEngine() { - m_StackCount = 0; -} -CPDF_PSEngine::~CPDF_PSEngine() {} -void CPDF_PSEngine::Push(FX_FLOAT v) { - if (m_StackCount == PSENGINE_STACKSIZE) { - return; - } - m_Stack[m_StackCount++] = v; -} -FX_FLOAT CPDF_PSEngine::Pop() { - if (m_StackCount == 0) { - return 0; - } - return m_Stack[--m_StackCount]; -} -const struct PDF_PSOpName { - const FX_CHAR* name; - PDF_PSOP op; -} PDF_PSOpNames[] = {{"add", PSOP_ADD}, {"sub", PSOP_SUB}, - {"mul", PSOP_MUL}, {"div", PSOP_DIV}, - {"idiv", PSOP_IDIV}, {"mod", PSOP_MOD}, - {"neg", PSOP_NEG}, {"abs", PSOP_ABS}, - {"ceiling", PSOP_CEILING}, {"floor", PSOP_FLOOR}, - {"round", PSOP_ROUND}, {"truncate", PSOP_TRUNCATE}, - {"sqrt", PSOP_SQRT}, {"sin", PSOP_SIN}, - {"cos", PSOP_COS}, {"atan", PSOP_ATAN}, - {"exp", PSOP_EXP}, {"ln", PSOP_LN}, - {"log", PSOP_LOG}, {"cvi", PSOP_CVI}, - {"cvr", PSOP_CVR}, {"eq", PSOP_EQ}, - {"ne", PSOP_NE}, {"gt", PSOP_GT}, - {"ge", PSOP_GE}, {"lt", PSOP_LT}, - {"le", PSOP_LE}, {"and", PSOP_AND}, - {"or", PSOP_OR}, {"xor", PSOP_XOR}, - {"not", PSOP_NOT}, {"bitshift", PSOP_BITSHIFT}, - {"true", PSOP_TRUE}, {"false", PSOP_FALSE}, - {"if", PSOP_IF}, {"ifelse", PSOP_IFELSE}, - {"pop", PSOP_POP}, {"exch", PSOP_EXCH}, - {"dup", PSOP_DUP}, {"copy", PSOP_COPY}, - {"index", PSOP_INDEX}, {"roll", PSOP_ROLL}}; - -FX_BOOL CPDF_PSEngine::Parse(const FX_CHAR* str, int size) { - CPDF_SimpleParser parser((uint8_t*)str, size); - CFX_ByteStringC word = parser.GetWord(); - if (word != "{") { - return FALSE; - } - return m_MainProc.Parse(&parser); -} -FX_BOOL CPDF_PSProc::Parse(CPDF_SimpleParser* parser) { - while (1) { - CFX_ByteStringC word = parser->GetWord(); - if (word.IsEmpty()) { - return FALSE; - } - if (word == "}") { - return TRUE; - } - if (word == "{") { - std::unique_ptr proc(new CPDF_PSProc); - std::unique_ptr op(new CPDF_PSOP(std::move(proc))); - m_Operators.push_back(std::move(op)); - if (!m_Operators.back()->GetProc()->Parse(parser)) { - return FALSE; - } - } else { - bool found = false; - for (const PDF_PSOpName& op_name : PDF_PSOpNames) { - if (word == CFX_ByteStringC(op_name.name)) { - std::unique_ptr op(new CPDF_PSOP(op_name.op)); - m_Operators.push_back(std::move(op)); - found = true; - break; - } - } - if (!found) { - std::unique_ptr op(new CPDF_PSOP(FX_atof(word))); - m_Operators.push_back(std::move(op)); - } - } - } -} - -FX_BOOL CPDF_PSEngine::DoOperator(PDF_PSOP op) { - int i1, i2; - FX_FLOAT d1, d2; - switch (op) { - case PSOP_ADD: - d1 = Pop(); - d2 = Pop(); - Push(d1 + d2); - break; - case PSOP_SUB: - d2 = Pop(); - d1 = Pop(); - Push(d1 - d2); - break; - case PSOP_MUL: - d1 = Pop(); - d2 = Pop(); - Push(d1 * d2); - break; - case PSOP_DIV: - d2 = Pop(); - d1 = Pop(); - Push(d1 / d2); - break; - case PSOP_IDIV: - i2 = (int)Pop(); - i1 = (int)Pop(); - Push(i1 / i2); - break; - case PSOP_MOD: - i2 = (int)Pop(); - i1 = (int)Pop(); - Push(i1 % i2); - break; - case PSOP_NEG: - d1 = Pop(); - Push(-d1); - break; - case PSOP_ABS: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_fabs(d1)); - break; - case PSOP_CEILING: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_ceil(d1)); - break; - case PSOP_FLOOR: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_floor(d1)); - break; - case PSOP_ROUND: - d1 = Pop(); - Push(FXSYS_round(d1)); - break; - case PSOP_TRUNCATE: - i1 = (int)Pop(); - Push(i1); - break; - case PSOP_SQRT: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_sqrt(d1)); - break; - case PSOP_SIN: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_sin(d1 * FX_PI / 180.0f)); - break; - case PSOP_COS: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_cos(d1 * FX_PI / 180.0f)); - break; - case PSOP_ATAN: - d2 = Pop(); - d1 = Pop(); - d1 = (FX_FLOAT)(FXSYS_atan2(d1, d2) * 180.0 / FX_PI); - if (d1 < 0) { - d1 += 360; - } - Push(d1); - break; - case PSOP_EXP: - d2 = Pop(); - d1 = Pop(); - Push((FX_FLOAT)FXSYS_pow(d1, d2)); - break; - case PSOP_LN: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_log(d1)); - break; - case PSOP_LOG: - d1 = Pop(); - Push((FX_FLOAT)FXSYS_log10(d1)); - break; - case PSOP_CVI: - i1 = (int)Pop(); - Push(i1); - break; - case PSOP_CVR: - break; - case PSOP_EQ: - d2 = Pop(); - d1 = Pop(); - Push((int)(d1 == d2)); - break; - case PSOP_NE: - d2 = Pop(); - d1 = Pop(); - Push((int)(d1 != d2)); - break; - case PSOP_GT: - d2 = Pop(); - d1 = Pop(); - Push((int)(d1 > d2)); - break; - case PSOP_GE: - d2 = Pop(); - d1 = Pop(); - Push((int)(d1 >= d2)); - break; - case PSOP_LT: - d2 = Pop(); - d1 = Pop(); - Push((int)(d1 < d2)); - break; - case PSOP_LE: - d2 = Pop(); - d1 = Pop(); - Push((int)(d1 <= d2)); - break; - case PSOP_AND: - i1 = (int)Pop(); - i2 = (int)Pop(); - Push(i1 & i2); - break; - case PSOP_OR: - i1 = (int)Pop(); - i2 = (int)Pop(); - Push(i1 | i2); - break; - case PSOP_XOR: - i1 = (int)Pop(); - i2 = (int)Pop(); - Push(i1 ^ i2); - break; - case PSOP_NOT: - i1 = (int)Pop(); - Push((int)!i1); - break; - case PSOP_BITSHIFT: { - int shift = (int)Pop(); - int i = (int)Pop(); - if (shift > 0) { - Push(i << shift); - } else { - Push(i >> -shift); - } - break; - } - case PSOP_TRUE: - Push(1); - break; - case PSOP_FALSE: - Push(0); - break; - case PSOP_POP: - Pop(); - break; - case PSOP_EXCH: - d2 = Pop(); - d1 = Pop(); - Push(d2); - Push(d1); - break; - case PSOP_DUP: - d1 = Pop(); - Push(d1); - Push(d1); - break; - case PSOP_COPY: { - int n = (int)Pop(); - if (n < 0 || n > PSENGINE_STACKSIZE || - m_StackCount + n > PSENGINE_STACKSIZE || n > m_StackCount) { - break; - } - for (int i = 0; i < n; i++) { - m_Stack[m_StackCount + i] = m_Stack[m_StackCount + i - n]; - } - m_StackCount += n; - break; - } - case PSOP_INDEX: { - int n = (int)Pop(); - if (n < 0 || n >= m_StackCount) { - break; - } - Push(m_Stack[m_StackCount - n - 1]); - break; - } - case PSOP_ROLL: { - int j = (int)Pop(); - int n = (int)Pop(); - if (m_StackCount == 0) { - break; - } - if (n < 0 || n > m_StackCount) { - break; - } - if (j < 0) { - for (int i = 0; i < -j; i++) { - FX_FLOAT first = m_Stack[m_StackCount - n]; - for (int ii = 0; ii < n - 1; ii++) { - m_Stack[m_StackCount - n + ii] = m_Stack[m_StackCount - n + ii + 1]; - } - m_Stack[m_StackCount - 1] = first; - } - } else { - for (int i = 0; i < j; i++) { - FX_FLOAT last = m_Stack[m_StackCount - 1]; - int ii; - for (ii = 0; ii < n - 1; ii++) { - m_Stack[m_StackCount - ii - 1] = m_Stack[m_StackCount - ii - 2]; - } - m_Stack[m_StackCount - ii - 1] = last; - } - } - break; - } - default: - break; - } - return TRUE; -} -static FX_FLOAT PDF_Interpolate(FX_FLOAT x, - FX_FLOAT xmin, - FX_FLOAT xmax, - FX_FLOAT ymin, - FX_FLOAT ymax) { - return ((x - xmin) * (ymax - ymin) / (xmax - xmin)) + ymin; -} -static FX_DWORD _GetBits32(const uint8_t* pData, int bitpos, int nbits) { - int result = 0; - for (int i = 0; i < nbits; i++) - if (pData[(bitpos + i) / 8] & (1 << (7 - (bitpos + i) % 8))) { - result |= 1 << (nbits - i - 1); - } - return result; -} -typedef struct { - FX_FLOAT encode_max, encode_min; - int sizes; -} SampleEncodeInfo; -typedef struct { FX_FLOAT decode_max, decode_min; } SampleDecodeInfo; - -class CPDF_SampledFunc : public CPDF_Function { - public: - CPDF_SampledFunc(); - ~CPDF_SampledFunc() override; - - // CPDF_Function - FX_BOOL v_Init(CPDF_Object* pObj) override; - FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; - - SampleEncodeInfo* m_pEncodeInfo; - SampleDecodeInfo* m_pDecodeInfo; - FX_DWORD m_nBitsPerSample; - FX_DWORD m_SampleMax; - CPDF_StreamAcc* m_pSampleStream; -}; - -CPDF_SampledFunc::CPDF_SampledFunc() { - m_pSampleStream = NULL; - m_pEncodeInfo = NULL; - m_pDecodeInfo = NULL; -} -CPDF_SampledFunc::~CPDF_SampledFunc() { - delete m_pSampleStream; - FX_Free(m_pEncodeInfo); - FX_Free(m_pDecodeInfo); -} -FX_BOOL CPDF_SampledFunc::v_Init(CPDF_Object* pObj) { - CPDF_Stream* pStream = pObj->AsStream(); - if (!pStream) - return false; - - CPDF_Dictionary* pDict = pStream->GetDict(); - CPDF_Array* pSize = pDict->GetArrayBy("Size"); - CPDF_Array* pEncode = pDict->GetArrayBy("Encode"); - CPDF_Array* pDecode = pDict->GetArrayBy("Decode"); - m_nBitsPerSample = pDict->GetIntegerBy("BitsPerSample"); - if (m_nBitsPerSample > 32) { - return FALSE; - } - m_SampleMax = 0xffffffff >> (32 - m_nBitsPerSample); - m_pSampleStream = new CPDF_StreamAcc; - m_pSampleStream->LoadAllData(pStream, FALSE); - m_pEncodeInfo = FX_Alloc(SampleEncodeInfo, m_nInputs); - FX_SAFE_DWORD nTotalSampleBits = 1; - for (int i = 0; i < m_nInputs; i++) { - m_pEncodeInfo[i].sizes = pSize ? pSize->GetIntegerAt(i) : 0; - if (!pSize && i == 0) { - m_pEncodeInfo[i].sizes = pDict->GetIntegerBy("Size"); - } - nTotalSampleBits *= m_pEncodeInfo[i].sizes; - if (pEncode) { - m_pEncodeInfo[i].encode_min = pEncode->GetFloatAt(i * 2); - m_pEncodeInfo[i].encode_max = pEncode->GetFloatAt(i * 2 + 1); - } else { - m_pEncodeInfo[i].encode_min = 0; - if (m_pEncodeInfo[i].sizes == 1) { - m_pEncodeInfo[i].encode_max = 1; - } else { - m_pEncodeInfo[i].encode_max = (FX_FLOAT)m_pEncodeInfo[i].sizes - 1; - } - } - } - nTotalSampleBits *= m_nBitsPerSample; - nTotalSampleBits *= m_nOutputs; - FX_SAFE_DWORD nTotalSampleBytes = nTotalSampleBits; - nTotalSampleBytes += 7; - nTotalSampleBytes /= 8; - if (!nTotalSampleBytes.IsValid() || nTotalSampleBytes.ValueOrDie() == 0 || - nTotalSampleBytes.ValueOrDie() > m_pSampleStream->GetSize()) { - return FALSE; - } - m_pDecodeInfo = FX_Alloc(SampleDecodeInfo, m_nOutputs); - for (int i = 0; i < m_nOutputs; i++) { - if (pDecode) { - m_pDecodeInfo[i].decode_min = pDecode->GetFloatAt(2 * i); - m_pDecodeInfo[i].decode_max = pDecode->GetFloatAt(2 * i + 1); - } else { - m_pDecodeInfo[i].decode_min = m_pRanges[i * 2]; - m_pDecodeInfo[i].decode_max = m_pRanges[i * 2 + 1]; - } - } - return TRUE; -} -FX_BOOL CPDF_SampledFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { - int pos = 0; - CFX_FixedBufGrow encoded_input_buf(m_nInputs); - FX_FLOAT* encoded_input = encoded_input_buf; - CFX_FixedBufGrow int_buf(m_nInputs * 2); - int* index = int_buf; - int* blocksize = index + m_nInputs; - for (int i = 0; i < m_nInputs; i++) { - if (i == 0) { - blocksize[i] = 1; - } else { - blocksize[i] = blocksize[i - 1] * m_pEncodeInfo[i - 1].sizes; - } - encoded_input[i] = PDF_Interpolate( - inputs[i], m_pDomains[i * 2], m_pDomains[i * 2 + 1], - m_pEncodeInfo[i].encode_min, m_pEncodeInfo[i].encode_max); - index[i] = (int)encoded_input[i]; - if (index[i] < 0) { - index[i] = 0; - } else if (index[i] > m_pEncodeInfo[i].sizes - 1) { - index[i] = m_pEncodeInfo[i].sizes - 1; - } - pos += index[i] * blocksize[i]; - } - FX_SAFE_INT32 bits_to_output = m_nOutputs; - bits_to_output *= m_nBitsPerSample; - if (!bits_to_output.IsValid()) { - return FALSE; - } - FX_SAFE_INT32 bitpos = pos; - bitpos *= bits_to_output.ValueOrDie(); - if (!bitpos.IsValid()) { - return FALSE; - } - FX_SAFE_INT32 range_check = bitpos; - range_check += bits_to_output.ValueOrDie(); - if (!range_check.IsValid()) { - return FALSE; - } - const uint8_t* pSampleData = m_pSampleStream->GetData(); - if (!pSampleData) { - return FALSE; - } - for (int j = 0; j < m_nOutputs; j++) { - FX_DWORD sample = - _GetBits32(pSampleData, bitpos.ValueOrDie() + j * m_nBitsPerSample, - m_nBitsPerSample); - FX_FLOAT encoded = (FX_FLOAT)sample; - for (int i = 0; i < m_nInputs; i++) { - if (index[i] == m_pEncodeInfo[i].sizes - 1) { - if (index[i] == 0) { - encoded = encoded_input[i] * (FX_FLOAT)sample; - } - } else { - FX_SAFE_INT32 bitpos2 = blocksize[i]; - bitpos2 += pos; - bitpos2 *= m_nOutputs; - bitpos2 += j; - bitpos2 *= m_nBitsPerSample; - if (!bitpos2.IsValid()) { - return FALSE; - } - FX_DWORD sample1 = - _GetBits32(pSampleData, bitpos2.ValueOrDie(), m_nBitsPerSample); - encoded += (encoded_input[i] - index[i]) * - ((FX_FLOAT)sample1 - (FX_FLOAT)sample); - } - } - results[j] = PDF_Interpolate(encoded, 0, (FX_FLOAT)m_SampleMax, - m_pDecodeInfo[j].decode_min, - m_pDecodeInfo[j].decode_max); - } - return TRUE; -} - -class CPDF_PSFunc : public CPDF_Function { - public: - // CPDF_Function - FX_BOOL v_Init(CPDF_Object* pObj) override; - FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; - - CPDF_PSEngine m_PS; -}; - -FX_BOOL CPDF_PSFunc::v_Init(CPDF_Object* pObj) { - CPDF_Stream* pStream = pObj->AsStream(); - CPDF_StreamAcc acc; - acc.LoadAllData(pStream, FALSE); - return m_PS.Parse((const FX_CHAR*)acc.GetData(), acc.GetSize()); -} -FX_BOOL CPDF_PSFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { - CPDF_PSEngine& PS = (CPDF_PSEngine&)m_PS; - PS.Reset(); - int i; - for (i = 0; i < m_nInputs; i++) { - PS.Push(inputs[i]); - } - PS.Execute(); - if (PS.GetStackSize() < m_nOutputs) { - return FALSE; - } - for (i = 0; i < m_nOutputs; i++) { - results[m_nOutputs - i - 1] = PS.Pop(); - } - return TRUE; -} - -class CPDF_ExpIntFunc : public CPDF_Function { - public: - CPDF_ExpIntFunc(); - ~CPDF_ExpIntFunc() override; - - // CPDF_Function - FX_BOOL v_Init(CPDF_Object* pObj) override; - FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; - - FX_FLOAT m_Exponent; - FX_FLOAT* m_pBeginValues; - FX_FLOAT* m_pEndValues; - int m_nOrigOutputs; -}; - -CPDF_ExpIntFunc::CPDF_ExpIntFunc() { - m_pBeginValues = NULL; - m_pEndValues = NULL; -} -CPDF_ExpIntFunc::~CPDF_ExpIntFunc() { - FX_Free(m_pBeginValues); - FX_Free(m_pEndValues); -} -FX_BOOL CPDF_ExpIntFunc::v_Init(CPDF_Object* pObj) { - CPDF_Dictionary* pDict = pObj->GetDict(); - if (!pDict) { - return FALSE; - } - CPDF_Array* pArray0 = pDict->GetArrayBy("C0"); - if (m_nOutputs == 0) { - m_nOutputs = 1; - if (pArray0) { - m_nOutputs = pArray0->GetCount(); - } - } - CPDF_Array* pArray1 = pDict->GetArrayBy("C1"); - m_pBeginValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); - m_pEndValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); - for (int i = 0; i < m_nOutputs; i++) { - m_pBeginValues[i] = pArray0 ? pArray0->GetFloatAt(i) : 0.0f; - m_pEndValues[i] = pArray1 ? pArray1->GetFloatAt(i) : 1.0f; - } - m_Exponent = pDict->GetFloatBy("N"); - m_nOrigOutputs = m_nOutputs; - if (m_nOutputs && m_nInputs > INT_MAX / m_nOutputs) { - return FALSE; - } - m_nOutputs *= m_nInputs; - return TRUE; -} -FX_BOOL CPDF_ExpIntFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const { - for (int i = 0; i < m_nInputs; i++) - for (int j = 0; j < m_nOrigOutputs; j++) { - results[i * m_nOrigOutputs + j] = - m_pBeginValues[j] + - (FX_FLOAT)FXSYS_pow(inputs[i], m_Exponent) * - (m_pEndValues[j] - m_pBeginValues[j]); - } - return TRUE; -} - -class CPDF_StitchFunc : public CPDF_Function { - public: - CPDF_StitchFunc(); - ~CPDF_StitchFunc() override; - - // CPDF_Function - FX_BOOL v_Init(CPDF_Object* pObj) override; - FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override; - - std::vector m_pSubFunctions; - FX_FLOAT* m_pBounds; - FX_FLOAT* m_pEncode; - - static const int kRequiredNumInputs = 1; -}; - -CPDF_StitchFunc::CPDF_StitchFunc() { - m_pBounds = NULL; - m_pEncode = NULL; -} -CPDF_StitchFunc::~CPDF_StitchFunc() { - for (auto& sub : m_pSubFunctions) { - delete sub; - } - FX_Free(m_pBounds); - FX_Free(m_pEncode); -} -FX_BOOL CPDF_StitchFunc::v_Init(CPDF_Object* pObj) { - CPDF_Dictionary* pDict = pObj->GetDict(); - if (!pDict) { - return FALSE; - } - if (m_nInputs != kRequiredNumInputs) { - return FALSE; - } - CPDF_Array* pArray = pDict->GetArrayBy("Functions"); - if (!pArray) { - return FALSE; - } - FX_DWORD nSubs = pArray->GetCount(); - if (nSubs == 0) { - return FALSE; - } - m_nOutputs = 0; - for (FX_DWORD i = 0; i < nSubs; i++) { - CPDF_Object* pSub = pArray->GetElementValue(i); - if (pSub == pObj) { - return FALSE; - } - std::unique_ptr pFunc(CPDF_Function::Load(pSub)); - if (!pFunc) { - return FALSE; - } - // Check that the input dimensionality is 1, and that all output - // dimensionalities are the same. - if (pFunc->CountInputs() != kRequiredNumInputs) { - return FALSE; - } - if (pFunc->CountOutputs() != m_nOutputs) { - if (m_nOutputs) - return FALSE; - - m_nOutputs = pFunc->CountOutputs(); - } - - m_pSubFunctions.push_back(pFunc.release()); - } - m_pBounds = FX_Alloc(FX_FLOAT, nSubs + 1); - m_pBounds[0] = m_pDomains[0]; - pArray = pDict->GetArrayBy("Bounds"); - if (!pArray) { - return FALSE; - } - for (FX_DWORD i = 0; i < nSubs - 1; i++) { - m_pBounds[i + 1] = pArray->GetFloatAt(i); - } - m_pBounds[nSubs] = m_pDomains[1]; - m_pEncode = FX_Alloc2D(FX_FLOAT, nSubs, 2); - pArray = pDict->GetArrayBy("Encode"); - if (!pArray) { - return FALSE; - } - for (FX_DWORD i = 0; i < nSubs * 2; i++) { - m_pEncode[i] = pArray->GetFloatAt(i); - } - return TRUE; -} -FX_BOOL CPDF_StitchFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* outputs) const { - FX_FLOAT input = inputs[0]; - size_t i; - for (i = 0; i < m_pSubFunctions.size() - 1; i++) - if (input < m_pBounds[i + 1]) { - break; - } - if (!m_pSubFunctions[i]) { - return FALSE; - } - input = PDF_Interpolate(input, m_pBounds[i], m_pBounds[i + 1], - m_pEncode[i * 2], m_pEncode[i * 2 + 1]); - int nresults; - m_pSubFunctions[i]->Call(&input, kRequiredNumInputs, outputs, nresults); - return TRUE; -} - -} // namespace - -CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) { - if (!pFuncObj) { - return NULL; - } - CPDF_Function* pFunc = NULL; - int type; - if (CPDF_Stream* pStream = pFuncObj->AsStream()) { - type = pStream->GetDict()->GetIntegerBy("FunctionType"); - } else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary()) { - type = pDict->GetIntegerBy("FunctionType"); - } else { - return NULL; - } - if (type == 0) { - pFunc = new CPDF_SampledFunc; - } else if (type == 2) { - pFunc = new CPDF_ExpIntFunc; - } else if (type == 3) { - pFunc = new CPDF_StitchFunc; - } else if (type == 4) { - pFunc = new CPDF_PSFunc; - } else { - return NULL; - } - if (!pFunc->Init(pFuncObj)) { - delete pFunc; - return NULL; - } - return pFunc; -} -CPDF_Function::CPDF_Function() { - m_pDomains = NULL; - m_pRanges = NULL; -} -CPDF_Function::~CPDF_Function() { - FX_Free(m_pDomains); - FX_Free(m_pRanges); -} -FX_BOOL CPDF_Function::Init(CPDF_Object* pObj) { - CPDF_Stream* pStream = pObj->AsStream(); - CPDF_Dictionary* pDict = pStream ? pStream->GetDict() : pObj->AsDictionary(); - - CPDF_Array* pDomains = pDict->GetArrayBy("Domain"); - if (!pDomains) - return FALSE; - - m_nInputs = pDomains->GetCount() / 2; - if (m_nInputs == 0) - return FALSE; - - m_pDomains = FX_Alloc2D(FX_FLOAT, m_nInputs, 2); - for (int i = 0; i < m_nInputs * 2; i++) { - m_pDomains[i] = pDomains->GetFloatAt(i); - } - CPDF_Array* pRanges = pDict->GetArrayBy("Range"); - m_nOutputs = 0; - if (pRanges) { - m_nOutputs = pRanges->GetCount() / 2; - m_pRanges = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2); - for (int i = 0; i < m_nOutputs * 2; i++) { - m_pRanges[i] = pRanges->GetFloatAt(i); - } - } - FX_DWORD old_outputs = m_nOutputs; - if (!v_Init(pObj)) { - return FALSE; - } - if (m_pRanges && m_nOutputs > (int)old_outputs) { - m_pRanges = FX_Realloc(FX_FLOAT, m_pRanges, m_nOutputs * 2); - if (m_pRanges) { - FXSYS_memset(m_pRanges + (old_outputs * 2), 0, - sizeof(FX_FLOAT) * (m_nOutputs - old_outputs) * 2); - } - } - return TRUE; -} -FX_BOOL CPDF_Function::Call(FX_FLOAT* inputs, - int ninputs, - FX_FLOAT* results, - int& nresults) const { - if (m_nInputs != ninputs) { - return FALSE; - } - nresults = m_nOutputs; - for (int i = 0; i < m_nInputs; i++) { - if (inputs[i] < m_pDomains[i * 2]) { - inputs[i] = m_pDomains[i * 2]; - } else if (inputs[i] > m_pDomains[i * 2 + 1]) { - inputs[i] = m_pDomains[i * 2] + 1; - } - } - v_Call(inputs, results); - if (m_pRanges) { - for (int i = 0; i < m_nOutputs; i++) { - if (results[i] < m_pRanges[i * 2]) { - results[i] = m_pRanges[i * 2]; - } else if (results[i] > m_pRanges[i * 2 + 1]) { - results[i] = m_pRanges[i * 2 + 1]; - } - } - } - return TRUE; -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp deleted file mode 100644 index 2892036882..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "testing/embedder_test.h" -#include "testing/gtest/include/gtest/gtest.h" - -class FPDFPageFuncEmbeddertest : public EmbedderTest {}; - -TEST_F(FPDFPageFuncEmbeddertest, Bug_551460) { - // Should not crash under ASan. - // Tests that the number of inputs is not simply calculated from the domain - // and trusted. The number of inputs has to be 1. - EXPECT_TRUE(OpenDocument("bug_551460.pdf")); - FPDF_PAGE page = LoadPage(0); - EXPECT_NE(nullptr, page); - FPDF_BITMAP bitmap = RenderPage(page); - FPDFBitmap_Destroy(bitmap); - UnloadPage(page); -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp deleted file mode 100644 index 1659cacc33..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp +++ /dev/null @@ -1,697 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/src/fpdfapi/fpdf_render/render_int.h" -#include "third_party/base/stl_util.h" - -namespace { - -FX_FLOAT ClipFloat(FX_FLOAT f) { - return std::max(0.0f, std::min(1.0f, f)); -} - -} // namespace - -void CPDF_GraphicStates::DefaultStates() { - m_ColorState.New()->Default(); -} -void CPDF_GraphicStates::CopyStates(const CPDF_GraphicStates& src) { - m_ClipPath = src.m_ClipPath; - m_GraphState = src.m_GraphState; - m_ColorState = src.m_ColorState; - m_TextState = src.m_TextState; - m_GeneralState = src.m_GeneralState; -} -CPDF_ClipPathData::CPDF_ClipPathData() { - m_PathCount = 0; - m_pPathList = NULL; - m_pTypeList = NULL; - m_TextCount = 0; - m_pTextList = NULL; -} -CPDF_ClipPathData::~CPDF_ClipPathData() { - int i; - delete[] m_pPathList; - FX_Free(m_pTypeList); - for (i = m_TextCount - 1; i > -1; i--) - delete m_pTextList[i]; - FX_Free(m_pTextList); -} -CPDF_ClipPathData::CPDF_ClipPathData(const CPDF_ClipPathData& src) { - m_pPathList = NULL; - m_pPathList = NULL; - m_pTextList = NULL; - m_PathCount = src.m_PathCount; - if (m_PathCount) { - int alloc_size = m_PathCount; - if (alloc_size % 8) { - alloc_size += 8 - (alloc_size % 8); - } - m_pPathList = new CPDF_Path[alloc_size]; - for (int i = 0; i < m_PathCount; i++) { - m_pPathList[i] = src.m_pPathList[i]; - } - m_pTypeList = FX_Alloc(uint8_t, alloc_size); - FXSYS_memcpy(m_pTypeList, src.m_pTypeList, m_PathCount); - } else { - m_pPathList = NULL; - m_pTypeList = NULL; - } - m_TextCount = src.m_TextCount; - if (m_TextCount) { - m_pTextList = FX_Alloc(CPDF_TextObject*, m_TextCount); - for (int i = 0; i < m_TextCount; i++) { - if (src.m_pTextList[i]) { - m_pTextList[i] = src.m_pTextList[i]->Clone(); - } else { - m_pTextList[i] = NULL; - } - } - } else { - m_pTextList = NULL; - } -} -void CPDF_ClipPathData::SetCount(int path_count, int text_count) { - ASSERT(m_TextCount == 0 && m_PathCount == 0); - if (path_count) { - m_PathCount = path_count; - int alloc_size = (path_count + 7) / 8 * 8; - m_pPathList = new CPDF_Path[alloc_size]; - m_pTypeList = FX_Alloc(uint8_t, alloc_size); - } - if (text_count) { - m_TextCount = text_count; - m_pTextList = FX_Alloc(CPDF_TextObject*, text_count); - } -} -CFX_FloatRect CPDF_ClipPath::GetClipBox() const { - CFX_FloatRect rect; - FX_BOOL bStarted = FALSE; - int count = GetPathCount(); - if (count) { - rect = GetPath(0).GetBoundingBox(); - for (int i = 1; i < count; i++) { - CFX_FloatRect path_rect = GetPath(i).GetBoundingBox(); - rect.Intersect(path_rect); - } - bStarted = TRUE; - } - count = GetTextCount(); - if (count) { - CFX_FloatRect layer_rect; - FX_BOOL bLayerStarted = FALSE; - for (int i = 0; i < count; i++) { - CPDF_TextObject* pTextObj = GetText(i); - if (!pTextObj) { - if (!bStarted) { - rect = layer_rect; - bStarted = TRUE; - } else { - rect.Intersect(layer_rect); - } - bLayerStarted = FALSE; - } else { - if (!bLayerStarted) { - layer_rect = CFX_FloatRect(pTextObj->GetBBox(nullptr)); - bLayerStarted = TRUE; - } else { - layer_rect.Union(CFX_FloatRect(pTextObj->GetBBox(nullptr))); - } - } - } - } - return rect; -} -void CPDF_ClipPath::AppendPath(CPDF_Path path, int type, FX_BOOL bAutoMerge) { - CPDF_ClipPathData* pData = GetModify(); - if (pData->m_PathCount && bAutoMerge) { - CPDF_Path old_path = pData->m_pPathList[pData->m_PathCount - 1]; - if (old_path.IsRect()) { - CFX_FloatRect old_rect(old_path.GetPointX(0), old_path.GetPointY(0), - old_path.GetPointX(2), old_path.GetPointY(2)); - CFX_FloatRect new_rect = path.GetBoundingBox(); - if (old_rect.Contains(new_rect)) { - pData->m_PathCount--; - pData->m_pPathList[pData->m_PathCount].SetNull(); - } - } - } - if (pData->m_PathCount % 8 == 0) { - CPDF_Path* pNewPath = new CPDF_Path[pData->m_PathCount + 8]; - for (int i = 0; i < pData->m_PathCount; i++) { - pNewPath[i] = pData->m_pPathList[i]; - } - delete[] pData->m_pPathList; - uint8_t* pNewType = FX_Alloc(uint8_t, pData->m_PathCount + 8); - FXSYS_memcpy(pNewType, pData->m_pTypeList, pData->m_PathCount); - FX_Free(pData->m_pTypeList); - pData->m_pPathList = pNewPath; - pData->m_pTypeList = pNewType; - } - pData->m_pPathList[pData->m_PathCount] = path; - pData->m_pTypeList[pData->m_PathCount] = (uint8_t)type; - pData->m_PathCount++; -} -void CPDF_ClipPath::DeletePath(int index) { - CPDF_ClipPathData* pData = GetModify(); - if (index >= pData->m_PathCount) { - return; - } - pData->m_pPathList[index].SetNull(); - for (int i = index; i < pData->m_PathCount - 1; i++) { - pData->m_pPathList[i] = pData->m_pPathList[i + 1]; - } - pData->m_pPathList[pData->m_PathCount - 1].SetNull(); - FXSYS_memmove(pData->m_pTypeList + index, pData->m_pTypeList + index + 1, - pData->m_PathCount - index - 1); - pData->m_PathCount--; -} -#define FPDF_CLIPPATH_MAX_TEXTS 1024 -void CPDF_ClipPath::AppendTexts(CPDF_TextObject** pTexts, int count) { - CPDF_ClipPathData* pData = GetModify(); - if (pData->m_TextCount + count > FPDF_CLIPPATH_MAX_TEXTS) { - for (int i = 0; i < count; i++) { - delete pTexts[i]; - } - return; - } - CPDF_TextObject** pNewList = - FX_Alloc(CPDF_TextObject*, pData->m_TextCount + count + 1); - if (pData->m_pTextList) { - FXSYS_memcpy(pNewList, pData->m_pTextList, - pData->m_TextCount * sizeof(CPDF_TextObject*)); - FX_Free(pData->m_pTextList); - } - pData->m_pTextList = pNewList; - for (int i = 0; i < count; i++) { - pData->m_pTextList[pData->m_TextCount + i] = pTexts[i]; - } - pData->m_pTextList[pData->m_TextCount + count] = NULL; - pData->m_TextCount += count + 1; -} -void CPDF_ClipPath::Transform(const CFX_Matrix& matrix) { - CPDF_ClipPathData* pData = GetModify(); - int i; - for (i = 0; i < pData->m_PathCount; i++) { - pData->m_pPathList[i].Transform(&matrix); - } - for (i = 0; i < pData->m_TextCount; i++) - if (pData->m_pTextList[i]) { - pData->m_pTextList[i]->Transform(matrix); - } -} -CPDF_ColorStateData::CPDF_ColorStateData(const CPDF_ColorStateData& src) { - m_FillColor.Copy(&src.m_FillColor); - m_FillRGB = src.m_FillRGB; - m_StrokeColor.Copy(&src.m_StrokeColor); - m_StrokeRGB = src.m_StrokeRGB; -} -void CPDF_ColorStateData::Default() { - m_FillRGB = m_StrokeRGB = 0; - m_FillColor.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)); - m_StrokeColor.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)); -} -void CPDF_ColorState::SetFillColor(CPDF_ColorSpace* pCS, - FX_FLOAT* pValue, - int nValues) { - CPDF_ColorStateData* pData = GetModify(); - SetColor(pData->m_FillColor, pData->m_FillRGB, pCS, pValue, nValues); -} -void CPDF_ColorState::SetStrokeColor(CPDF_ColorSpace* pCS, - FX_FLOAT* pValue, - int nValues) { - CPDF_ColorStateData* pData = GetModify(); - SetColor(pData->m_StrokeColor, pData->m_StrokeRGB, pCS, pValue, nValues); -} -void CPDF_ColorState::SetColor(CPDF_Color& color, - FX_DWORD& rgb, - CPDF_ColorSpace* pCS, - FX_FLOAT* pValue, - int nValues) { - if (pCS) { - color.SetColorSpace(pCS); - } else if (color.IsNull()) { - color.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY)); - } - if (color.m_pCS->CountComponents() > nValues) { - return; - } - color.SetValue(pValue); - int R, G, B; - rgb = color.GetRGB(R, G, B) ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1; -} -void CPDF_ColorState::SetFillPattern(CPDF_Pattern* pPattern, - FX_FLOAT* pValue, - int nValues) { - CPDF_ColorStateData* pData = GetModify(); - pData->m_FillColor.SetValue(pPattern, pValue, nValues); - int R, G, B; - FX_BOOL ret = pData->m_FillColor.GetRGB(R, G, B); - if (pPattern->m_PatternType == 1 && - ((CPDF_TilingPattern*)pPattern)->m_bColored && !ret) { - pData->m_FillRGB = 0x00BFBFBF; - return; - } - pData->m_FillRGB = ret ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1; -} -void CPDF_ColorState::SetStrokePattern(CPDF_Pattern* pPattern, - FX_FLOAT* pValue, - int nValues) { - CPDF_ColorStateData* pData = GetModify(); - pData->m_StrokeColor.SetValue(pPattern, pValue, nValues); - int R, G, B; - FX_BOOL ret = pData->m_StrokeColor.GetRGB(R, G, B); - if (pPattern->m_PatternType == 1 && - ((CPDF_TilingPattern*)pPattern)->m_bColored && !ret) { - pData->m_StrokeRGB = 0x00BFBFBF; - return; - } - pData->m_StrokeRGB = - pData->m_StrokeColor.GetRGB(R, G, B) ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1; -} -CPDF_TextStateData::CPDF_TextStateData() { - m_pFont = NULL; - m_pDocument = NULL; - m_FontSize = 1.0f; - m_WordSpace = 0; - m_CharSpace = 0; - m_TextMode = 0; - m_Matrix[0] = m_Matrix[3] = 1.0f; - m_Matrix[1] = m_Matrix[2] = 0; - m_CTM[0] = m_CTM[3] = 1.0f; - m_CTM[1] = m_CTM[2] = 0; -} -CPDF_TextStateData::CPDF_TextStateData(const CPDF_TextStateData& src) { - if (this == &src) { - return; - } - FXSYS_memcpy(this, &src, sizeof(CPDF_TextStateData)); - if (m_pDocument && m_pFont) { - m_pFont = - m_pDocument->GetPageData()->GetFont(m_pFont->GetFontDict(), FALSE); - } -} -CPDF_TextStateData::~CPDF_TextStateData() { - if (m_pDocument && m_pFont) { - CPDF_DocPageData* pPageData = m_pDocument->GetPageData(); - if (pPageData && !pPageData->IsForceClear()) { - pPageData->ReleaseFont(m_pFont->GetFontDict()); - } - } -} -void CPDF_TextState::SetFont(CPDF_Font* pFont) { - CPDF_TextStateData* pStateData = GetModify(); - if (pStateData) { - CPDF_Document* pDoc = pStateData->m_pDocument; - CPDF_DocPageData* pPageData = pDoc ? pDoc->GetPageData() : NULL; - if (pPageData && pStateData->m_pFont && !pPageData->IsForceClear()) { - pPageData->ReleaseFont(pStateData->m_pFont->GetFontDict()); - } - pStateData->m_pDocument = pFont ? pFont->m_pDocument : NULL; - pStateData->m_pFont = pFont; - } -} -FX_FLOAT CPDF_TextState::GetFontSizeV() const { - FX_FLOAT* pMatrix = GetMatrix(); - FX_FLOAT unit = FXSYS_sqrt2(pMatrix[1], pMatrix[3]); - FX_FLOAT size = unit * GetFontSize(); - return (FX_FLOAT)FXSYS_fabs(size); -} -FX_FLOAT CPDF_TextState::GetFontSizeH() const { - FX_FLOAT* pMatrix = GetMatrix(); - FX_FLOAT unit = FXSYS_sqrt2(pMatrix[0], pMatrix[2]); - FX_FLOAT size = unit * GetFontSize(); - return (FX_FLOAT)FXSYS_fabs(size); -} -FX_FLOAT CPDF_TextState::GetBaselineAngle() const { - FX_FLOAT* m_Matrix = GetMatrix(); - return FXSYS_atan2(m_Matrix[2], m_Matrix[0]); -} -FX_FLOAT CPDF_TextState::GetShearAngle() const { - FX_FLOAT* m_Matrix = GetMatrix(); - FX_FLOAT shear_angle = FXSYS_atan2(m_Matrix[1], m_Matrix[3]); - return GetBaselineAngle() + shear_angle; -} -CPDF_GeneralStateData::CPDF_GeneralStateData() { - FXSYS_memset(this, 0, sizeof(CPDF_GeneralStateData)); - FXSYS_strcpy((FX_CHAR*)m_BlendMode, "Normal"); - m_StrokeAlpha = 1.0f; - m_FillAlpha = 1.0f; - m_Flatness = 1.0f; - m_Matrix.SetIdentity(); -} -CPDF_GeneralStateData::CPDF_GeneralStateData(const CPDF_GeneralStateData& src) { - FXSYS_memcpy(this, &src, sizeof(CPDF_GeneralStateData)); - if (src.m_pTransferFunc && src.m_pTransferFunc->m_pPDFDoc) { - CPDF_DocRenderData* pDocCache = - src.m_pTransferFunc->m_pPDFDoc->GetRenderData(); - if (!pDocCache) { - return; - } - m_pTransferFunc = pDocCache->GetTransferFunc(m_pTR); - } -} -CPDF_GeneralStateData::~CPDF_GeneralStateData() { - if (m_pTransferFunc && m_pTransferFunc->m_pPDFDoc) { - CPDF_DocRenderData* pDocCache = m_pTransferFunc->m_pPDFDoc->GetRenderData(); - if (!pDocCache) { - return; - } - pDocCache->ReleaseTransferFunc(m_pTR); - } -} -static int GetBlendType(const CFX_ByteStringC& mode) { - switch (mode.GetID()) { - case FXBSTR_ID('N', 'o', 'r', 'm'): - case FXBSTR_ID('C', 'o', 'm', 'p'): - return FXDIB_BLEND_NORMAL; - case FXBSTR_ID('M', 'u', 'l', 't'): - return FXDIB_BLEND_MULTIPLY; - case FXBSTR_ID('S', 'c', 'r', 'e'): - return FXDIB_BLEND_SCREEN; - case FXBSTR_ID('O', 'v', 'e', 'r'): - return FXDIB_BLEND_OVERLAY; - case FXBSTR_ID('D', 'a', 'r', 'k'): - return FXDIB_BLEND_DARKEN; - case FXBSTR_ID('L', 'i', 'g', 'h'): - return FXDIB_BLEND_LIGHTEN; - case FXBSTR_ID('C', 'o', 'l', 'o'): - if (mode.GetLength() == 10) { - return FXDIB_BLEND_COLORDODGE; - } - if (mode.GetLength() == 9) { - return FXDIB_BLEND_COLORBURN; - } - return FXDIB_BLEND_COLOR; - case FXBSTR_ID('H', 'a', 'r', 'd'): - return FXDIB_BLEND_HARDLIGHT; - case FXBSTR_ID('S', 'o', 'f', 't'): - return FXDIB_BLEND_SOFTLIGHT; - case FXBSTR_ID('D', 'i', 'f', 'f'): - return FXDIB_BLEND_DIFFERENCE; - case FXBSTR_ID('E', 'x', 'c', 'l'): - return FXDIB_BLEND_EXCLUSION; - case FXBSTR_ID('H', 'u', 'e', 0): - return FXDIB_BLEND_HUE; - case FXBSTR_ID('S', 'a', 't', 'u'): - return FXDIB_BLEND_SATURATION; - case FXBSTR_ID('L', 'u', 'm', 'i'): - return FXDIB_BLEND_LUMINOSITY; - } - return FXDIB_BLEND_NORMAL; -} -void CPDF_GeneralStateData::SetBlendMode(const CFX_ByteStringC& blend_mode) { - if (blend_mode.GetLength() > 15) { - return; - } - FXSYS_memcpy(m_BlendMode, blend_mode.GetPtr(), blend_mode.GetLength()); - m_BlendMode[blend_mode.GetLength()] = 0; - m_BlendType = ::GetBlendType(blend_mode); -} -int RI_StringToId(const CFX_ByteString& ri) { - FX_DWORD id = ri.GetID(); - if (id == FXBSTR_ID('A', 'b', 's', 'o')) { - return 1; - } - if (id == FXBSTR_ID('S', 'a', 't', 'u')) { - return 2; - } - if (id == FXBSTR_ID('P', 'e', 'r', 'c')) { - return 3; - } - return 0; -} -void CPDF_GeneralState::SetRenderIntent(const CFX_ByteString& ri) { - GetModify()->m_RenderIntent = RI_StringToId(ri); -} -CPDF_AllStates::CPDF_AllStates() { - m_TextX = m_TextY = m_TextLineX = m_TextLineY = 0; - m_TextLeading = 0; - m_TextRise = 0; - m_TextHorzScale = 1.0f; -} -CPDF_AllStates::~CPDF_AllStates() {} -void CPDF_AllStates::Copy(const CPDF_AllStates& src) { - CopyStates(src); - m_TextMatrix.Copy(src.m_TextMatrix); - m_ParentMatrix.Copy(src.m_ParentMatrix); - m_CTM.Copy(src.m_CTM); - m_TextX = src.m_TextX; - m_TextY = src.m_TextY; - m_TextLineX = src.m_TextLineX; - m_TextLineY = src.m_TextLineY; - m_TextLeading = src.m_TextLeading; - m_TextRise = src.m_TextRise; - m_TextHorzScale = src.m_TextHorzScale; -} -void CPDF_AllStates::SetLineDash(CPDF_Array* pArray, - FX_FLOAT phase, - FX_FLOAT scale) { - CFX_GraphStateData* pData = m_GraphState.GetModify(); - pData->m_DashPhase = phase * scale; - pData->SetDashCount(pArray->GetCount()); - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - pData->m_DashArray[i] = pArray->GetNumberAt(i) * scale; - } -} -void CPDF_AllStates::ProcessExtGS(CPDF_Dictionary* pGS, - CPDF_StreamContentParser* pParser) { - CPDF_GeneralStateData* pGeneralState = m_GeneralState.GetModify(); - for (const auto& it : *pGS) { - const CFX_ByteString& key_str = it.first; - CPDF_Object* pElement = it.second; - CPDF_Object* pObject = pElement ? pElement->GetDirect() : nullptr; - if (!pObject) - continue; - - FX_DWORD key = key_str.GetID(); - switch (key) { - case FXBSTR_ID('L', 'W', 0, 0): - m_GraphState.GetModify()->m_LineWidth = pObject->GetNumber(); - break; - case FXBSTR_ID('L', 'C', 0, 0): - m_GraphState.GetModify()->m_LineCap = - (CFX_GraphStateData::LineCap)pObject->GetInteger(); - break; - case FXBSTR_ID('L', 'J', 0, 0): - m_GraphState.GetModify()->m_LineJoin = - (CFX_GraphStateData::LineJoin)pObject->GetInteger(); - break; - case FXBSTR_ID('M', 'L', 0, 0): - m_GraphState.GetModify()->m_MiterLimit = pObject->GetNumber(); - break; - case FXBSTR_ID('D', 0, 0, 0): { - CPDF_Array* pDash = pObject->AsArray(); - if (!pDash) - break; - - CPDF_Array* pArray = pDash->GetArrayAt(0); - if (!pArray) - break; - - SetLineDash(pArray, pDash->GetNumberAt(1), 1.0f); - break; - } - case FXBSTR_ID('R', 'I', 0, 0): - m_GeneralState.SetRenderIntent(pObject->GetString()); - break; - case FXBSTR_ID('F', 'o', 'n', 't'): { - CPDF_Array* pFont = pObject->AsArray(); - if (!pFont) - break; - - m_TextState.GetModify()->m_FontSize = pFont->GetNumberAt(1); - m_TextState.SetFont(pParser->FindFont(pFont->GetStringAt(0))); - break; - } - case FXBSTR_ID('T', 'R', 0, 0): - if (pGS->KeyExist("TR2")) { - continue; - } - case FXBSTR_ID('T', 'R', '2', 0): - pGeneralState->m_pTR = - (pObject && !pObject->IsName()) ? pObject : nullptr; - break; - case FXBSTR_ID('B', 'M', 0, 0): { - CPDF_Array* pArray = pObject->AsArray(); - CFX_ByteString mode = - pArray ? pArray->GetStringAt(0) : pObject->GetString(); - - pGeneralState->SetBlendMode(mode); - if (pGeneralState->m_BlendType > FXDIB_BLEND_MULTIPLY) { - pParser->GetPageObjectHolder()->SetBackgroundAlphaNeeded(TRUE); - } - break; - } - case FXBSTR_ID('S', 'M', 'a', 's'): - if (ToDictionary(pObject)) { - pGeneralState->m_pSoftMask = pObject; - FXSYS_memcpy(pGeneralState->m_SMaskMatrix, - &pParser->GetCurStates()->m_CTM, sizeof(CFX_Matrix)); - } else { - pGeneralState->m_pSoftMask = NULL; - } - break; - case FXBSTR_ID('C', 'A', 0, 0): - pGeneralState->m_StrokeAlpha = ClipFloat(pObject->GetNumber()); - break; - case FXBSTR_ID('c', 'a', 0, 0): - pGeneralState->m_FillAlpha = ClipFloat(pObject->GetNumber()); - break; - case FXBSTR_ID('O', 'P', 0, 0): - pGeneralState->m_StrokeOP = pObject->GetInteger(); - if (!pGS->KeyExist("op")) { - pGeneralState->m_FillOP = pObject->GetInteger(); - } - break; - case FXBSTR_ID('o', 'p', 0, 0): - pGeneralState->m_FillOP = pObject->GetInteger(); - break; - case FXBSTR_ID('O', 'P', 'M', 0): - pGeneralState->m_OPMode = pObject->GetInteger(); - break; - case FXBSTR_ID('B', 'G', 0, 0): - if (pGS->KeyExist("BG2")) { - continue; - } - case FXBSTR_ID('B', 'G', '2', 0): - pGeneralState->m_pBG = pObject; - break; - case FXBSTR_ID('U', 'C', 'R', 0): - if (pGS->KeyExist("UCR2")) { - continue; - } - case FXBSTR_ID('U', 'C', 'R', '2'): - pGeneralState->m_pUCR = pObject; - break; - case FXBSTR_ID('H', 'T', 0, 0): - pGeneralState->m_pHT = pObject; - break; - case FXBSTR_ID('F', 'L', 0, 0): - pGeneralState->m_Flatness = pObject->GetNumber(); - break; - case FXBSTR_ID('S', 'M', 0, 0): - pGeneralState->m_Smoothness = pObject->GetNumber(); - break; - case FXBSTR_ID('S', 'A', 0, 0): - pGeneralState->m_StrokeAdjust = pObject->GetInteger(); - break; - case FXBSTR_ID('A', 'I', 'S', 0): - pGeneralState->m_AlphaSource = pObject->GetInteger(); - break; - case FXBSTR_ID('T', 'K', 0, 0): - pGeneralState->m_TextKnockout = pObject->GetInteger(); - break; - } - } - pGeneralState->m_Matrix = m_CTM; -} -CPDF_ContentMarkItem::CPDF_ContentMarkItem() { - m_ParamType = None; -} -CPDF_ContentMarkItem::CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src) { - m_MarkName = src.m_MarkName; - m_ParamType = src.m_ParamType; - if (m_ParamType == DirectDict) { - m_pParam = ToDictionary(src.m_pParam->Clone()); - } else { - m_pParam = src.m_pParam; - } -} -CPDF_ContentMarkItem::~CPDF_ContentMarkItem() { - if (m_ParamType == DirectDict && m_pParam) - m_pParam->Release(); -} -FX_BOOL CPDF_ContentMarkItem::HasMCID() const { - if (m_pParam && - (m_ParamType == DirectDict || m_ParamType == PropertiesDict)) { - return m_pParam->KeyExist("MCID"); - } - return FALSE; -} - -CPDF_ContentMarkData::CPDF_ContentMarkData(const CPDF_ContentMarkData& src) - : m_Marks(src.m_Marks) {} - -int CPDF_ContentMarkData::CountItems() const { - return pdfium::CollectionSize(m_Marks); -} - -int CPDF_ContentMarkData::GetMCID() const { - for (const auto& mark : m_Marks) { - CPDF_ContentMarkItem::ParamType type = mark.GetParamType(); - if (type == CPDF_ContentMarkItem::PropertiesDict || - type == CPDF_ContentMarkItem::DirectDict) { - CPDF_Dictionary* pDict = mark.GetParam(); - if (pDict->KeyExist("MCID")) - return pDict->GetIntegerBy("MCID"); - } - } - return -1; -} - -void CPDF_ContentMarkData::AddMark(const CFX_ByteString& name, - CPDF_Dictionary* pDict, - FX_BOOL bDirect) { - CPDF_ContentMarkItem item; - item.SetName(name); - if (pDict) { - if (bDirect) { - item.SetParam(CPDF_ContentMarkItem::DirectDict, - ToDictionary(pDict->Clone())); - } else { - item.SetParam(CPDF_ContentMarkItem::PropertiesDict, pDict); - } - } - m_Marks.push_back(item); -} - -void CPDF_ContentMarkData::DeleteLastMark() { - if (!m_Marks.empty()) - m_Marks.pop_back(); -} - -FX_BOOL CPDF_ContentMark::HasMark(const CFX_ByteStringC& mark) const { - if (!m_pObject) { - return FALSE; - } - for (int i = 0; i < m_pObject->CountItems(); i++) { - CPDF_ContentMarkItem& item = m_pObject->GetItem(i); - if (item.GetName() == mark) { - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_ContentMark::LookupMark(const CFX_ByteStringC& mark, - CPDF_Dictionary*& pDict) const { - if (!m_pObject) { - return FALSE; - } - for (int i = 0; i < m_pObject->CountItems(); i++) { - CPDF_ContentMarkItem& item = m_pObject->GetItem(i); - if (item.GetName() == mark) { - pDict = NULL; - if (item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict || - item.GetParamType() == CPDF_ContentMarkItem::DirectDict) { - pDict = item.GetParam(); - } - return TRUE; - } - } - return FALSE; -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp deleted file mode 100644 index b7e3e5e116..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" - -CPDF_ImageObject::CPDF_ImageObject() : m_pImage(nullptr) {} - -CPDF_ImageObject::~CPDF_ImageObject() { - if (!m_pImage) { - return; - } - if (m_pImage->IsInline() || - (m_pImage->GetStream() && m_pImage->GetStream()->GetObjNum() == 0)) { - delete m_pImage; - } else { - m_pImage->GetDocument()->GetPageData()->ReleaseImage(m_pImage->GetStream()); - } -} - -CPDF_ImageObject* CPDF_ImageObject::Clone() const { - CPDF_ImageObject* obj = new CPDF_ImageObject; - obj->CopyData(this); - - obj->m_pImage = m_pImage->Clone(); - obj->m_Matrix = m_Matrix; - return obj; -} - -void CPDF_ImageObject::Transform(const CFX_Matrix& matrix) { - m_Matrix.Concat(matrix); - CalcBoundingBox(); -} -void CPDF_ImageObject::CalcBoundingBox() { - m_Left = m_Bottom = 0; - m_Right = m_Top = 1.0f; - m_Matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom); -} -void CPDF_Image::Release() { - if (m_bInline || (m_pStream && m_pStream->GetObjNum() == 0)) { - delete this; - } -} -CPDF_Image* CPDF_Image::Clone() { - if (m_pStream->GetObjNum()) - return m_pDocument->GetPageData()->GetImage(m_pStream); - - CPDF_Image* pImage = new CPDF_Image(m_pDocument); - pImage->LoadImageF(ToStream(m_pStream->Clone()), m_bInline); - if (m_bInline) - pImage->SetInlineDict(ToDictionary(m_pInlineDict->Clone(TRUE))); - - return pImage; -} -CPDF_Image::CPDF_Image(CPDF_Document* pDoc) { - m_pDocument = pDoc; - m_pStream = NULL; - m_pOC = NULL; - m_bInline = FALSE; - m_pInlineDict = NULL; - m_pDIBSource = NULL; - m_pMask = NULL; - m_MatteColor = 0; -} -CPDF_Image::~CPDF_Image() { - if (m_bInline) { - if (m_pStream) { - m_pStream->Release(); - } - if (m_pInlineDict) { - m_pInlineDict->Release(); - } - } -} -FX_BOOL CPDF_Image::LoadImageF(CPDF_Stream* pStream, FX_BOOL bInline) { - m_pStream = pStream; - if (m_bInline && m_pInlineDict) { - m_pInlineDict->Release(); - m_pInlineDict = NULL; - } - m_bInline = bInline; - CPDF_Dictionary* pDict = pStream->GetDict(); - if (m_bInline) { - m_pInlineDict = ToDictionary(pDict->Clone()); - } - m_pOC = pDict->GetDictBy("OC"); - m_bIsMask = - !pDict->KeyExist("ColorSpace") || pDict->GetIntegerBy("ImageMask"); - m_bInterpolate = pDict->GetIntegerBy("Interpolate"); - m_Height = pDict->GetIntegerBy("Height"); - m_Width = pDict->GetIntegerBy("Width"); - return TRUE; -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp deleted file mode 100644 index 1b6e5ac965..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp +++ /dev/null @@ -1,1819 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fpdfapi/fpdf_serial.h" - -namespace { - -const char kPathOperatorSubpath = 'm'; -const char kPathOperatorLine = 'l'; -const char kPathOperatorCubicBezier1 = 'c'; -const char kPathOperatorCubicBezier2 = 'v'; -const char kPathOperatorCubicBezier3 = 'y'; -const char kPathOperatorClosePath = 'h'; -const char kPathOperatorRectangle[] = "re"; - -struct _FX_BSTR { - const FX_CHAR* m_Ptr; - int m_Size; -}; -#define _FX_BSTRC(str) \ - { str, sizeof(str) - 1 } - -struct PDF_AbbrPairs { - _FX_BSTR full_name; - _FX_BSTR abbr; -}; - -const PDF_AbbrPairs PDF_InlineKeyAbbr[] = { - {_FX_BSTRC("BitsPerComponent"), _FX_BSTRC("BPC")}, - {_FX_BSTRC("ColorSpace"), _FX_BSTRC("CS")}, - {_FX_BSTRC("Decode"), _FX_BSTRC("D")}, - {_FX_BSTRC("DecodeParms"), _FX_BSTRC("DP")}, - {_FX_BSTRC("Filter"), _FX_BSTRC("F")}, - {_FX_BSTRC("Height"), _FX_BSTRC("H")}, - {_FX_BSTRC("ImageMask"), _FX_BSTRC("IM")}, - {_FX_BSTRC("Interpolate"), _FX_BSTRC("I")}, - {_FX_BSTRC("Width"), _FX_BSTRC("W")}, -}; - -const PDF_AbbrPairs PDF_InlineValueAbbr[] = { - {_FX_BSTRC("DeviceGray"), _FX_BSTRC("G")}, - {_FX_BSTRC("DeviceRGB"), _FX_BSTRC("RGB")}, - {_FX_BSTRC("DeviceCMYK"), _FX_BSTRC("CMYK")}, - {_FX_BSTRC("Indexed"), _FX_BSTRC("I")}, - {_FX_BSTRC("ASCIIHexDecode"), _FX_BSTRC("AHx")}, - {_FX_BSTRC("ASCII85Decode"), _FX_BSTRC("A85")}, - {_FX_BSTRC("LZWDecode"), _FX_BSTRC("LZW")}, - {_FX_BSTRC("FlateDecode"), _FX_BSTRC("Fl")}, - {_FX_BSTRC("RunLengthDecode"), _FX_BSTRC("RL")}, - {_FX_BSTRC("CCITTFaxDecode"), _FX_BSTRC("CCF")}, - {_FX_BSTRC("DCTDecode"), _FX_BSTRC("DCT")}, -}; - -struct AbbrReplacementOp { - bool is_replace_key; - CFX_ByteString key; - CFX_ByteStringC replacement; -}; - -class CPDF_StreamParserAutoClearer { - public: - CPDF_StreamParserAutoClearer(CPDF_StreamParser** scoped_variable, - CPDF_StreamParser* new_parser) - : scoped_variable_(scoped_variable) { - *scoped_variable_ = new_parser; - } - ~CPDF_StreamParserAutoClearer() { *scoped_variable_ = NULL; } - - private: - CPDF_StreamParser** scoped_variable_; -}; - -CFX_ByteStringC PDF_FindFullName(const PDF_AbbrPairs* table, - size_t count, - const CFX_ByteStringC& abbr) { - for (size_t i = 0; i < count; ++i) { - if (abbr.GetLength() != table[i].abbr.m_Size) - continue; - if (memcmp(abbr.GetPtr(), table[i].abbr.m_Ptr, abbr.GetLength())) - continue; - return CFX_ByteStringC(table[i].full_name.m_Ptr, table[i].full_name.m_Size); - } - return CFX_ByteStringC(); -} - -} // namespace - -bool IsPathOperator(const uint8_t* buf, size_t len) { - if (len == 1) { - uint8_t op = buf[0]; - if (op == kPathOperatorSubpath || op == kPathOperatorLine || - op == kPathOperatorCubicBezier1 || op == kPathOperatorCubicBezier2 || - op == kPathOperatorCubicBezier3) { - return true; - } - } else if (len == 2) { - if (buf[0] == kPathOperatorRectangle[0] && - buf[1] == kPathOperatorRectangle[1]) { - return true; - } - } - return false; -} - -CPDF_StreamContentParser::CPDF_StreamContentParser( - CPDF_Document* pDocument, - CPDF_Dictionary* pPageResources, - CPDF_Dictionary* pParentResources, - CFX_Matrix* pmtContentToUser, - CPDF_PageObjectHolder* pObjHolder, - CPDF_Dictionary* pResources, - CFX_FloatRect* pBBox, - CPDF_ParseOptions* pOptions, - CPDF_AllStates* pStates, - int level) - : m_pDocument(pDocument), - m_pPageResources(pPageResources), - m_pParentResources(pParentResources), - m_pResources(pResources), - m_pObjectHolder(pObjHolder), - m_Level(level), - m_ParamStartPos(0), - m_ParamCount(0), - m_pCurStates(new CPDF_AllStates), - m_pLastTextObject(nullptr), - m_DefFontSize(0), - m_pPathPoints(nullptr), - m_PathPointCount(0), - m_PathAllocSize(0), - m_PathCurrentX(0.0f), - m_PathCurrentY(0.0f), - m_PathClipType(0), - m_pLastImage(nullptr), - m_pLastImageDict(nullptr), - m_pLastCloneImageDict(nullptr), - m_bReleaseLastDict(TRUE), - m_bColored(FALSE), - m_bResourceMissing(FALSE) { - if (pmtContentToUser) { - m_mtContentToUser = *pmtContentToUser; - } - if (pOptions) { - m_Options = *pOptions; - } - if (!m_pResources) { - m_pResources = m_pParentResources; - } - if (!m_pResources) { - m_pResources = m_pPageResources; - } - if (pBBox) { - m_BBox = *pBBox; - } - if (pStates) { - m_pCurStates->Copy(*pStates); - } else { - m_pCurStates->m_GeneralState.New(); - m_pCurStates->m_GraphState.New(); - m_pCurStates->m_TextState.New(); - m_pCurStates->m_ColorState.New(); - } - for (size_t i = 0; i < FX_ArraySize(m_Type3Data); ++i) { - m_Type3Data[i] = 0.0; - } -} - -CPDF_StreamContentParser::~CPDF_StreamContentParser() { - ClearAllParams(); - FX_Free(m_pPathPoints); - if (m_pLastImageDict) { - m_pLastImageDict->Release(); - } - if (m_pLastCloneImageDict) { - m_pLastCloneImageDict->Release(); - } -} - -int CPDF_StreamContentParser::GetNextParamPos() { - if (m_ParamCount == PARAM_BUF_SIZE) { - m_ParamStartPos++; - if (m_ParamStartPos == PARAM_BUF_SIZE) { - m_ParamStartPos = 0; - } - if (m_ParamBuf[m_ParamStartPos].m_Type == 0) { - if (CPDF_Object* pObject = m_ParamBuf[m_ParamStartPos].m_pObject) - pObject->Release(); - } - return m_ParamStartPos; - } - int index = m_ParamStartPos + m_ParamCount; - if (index >= PARAM_BUF_SIZE) { - index -= PARAM_BUF_SIZE; - } - m_ParamCount++; - return index; -} - -void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) { - int index = GetNextParamPos(); - if (len > 32) { - m_ParamBuf[index].m_Type = ContentParam::OBJECT; - m_ParamBuf[index].m_pObject = - new CPDF_Name(PDF_NameDecode(CFX_ByteStringC(name, len))); - } else { - m_ParamBuf[index].m_Type = ContentParam::NAME; - if (!FXSYS_memchr(name, '#', len)) { - FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, name, len); - m_ParamBuf[index].m_Name.m_Len = len; - } else { - CFX_ByteString str = PDF_NameDecode(CFX_ByteStringC(name, len)); - FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, str.c_str(), - str.GetLength()); - m_ParamBuf[index].m_Name.m_Len = str.GetLength(); - } - } -} - -void CPDF_StreamContentParser::AddNumberParam(const FX_CHAR* str, int len) { - int index = GetNextParamPos(); - m_ParamBuf[index].m_Type = ContentParam::NUMBER; - FX_atonum(CFX_ByteStringC(str, len), m_ParamBuf[index].m_Number.m_bInteger, - &m_ParamBuf[index].m_Number.m_Integer); -} -void CPDF_StreamContentParser::AddObjectParam(CPDF_Object* pObj) { - int index = GetNextParamPos(); - m_ParamBuf[index].m_Type = ContentParam::OBJECT; - m_ParamBuf[index].m_pObject = pObj; -} -void CPDF_StreamContentParser::ClearAllParams() { - FX_DWORD index = m_ParamStartPos; - for (FX_DWORD i = 0; i < m_ParamCount; i++) { - if (m_ParamBuf[index].m_Type == 0) { - if (CPDF_Object* pObject = m_ParamBuf[index].m_pObject) - pObject->Release(); - } - index++; - if (index == PARAM_BUF_SIZE) { - index = 0; - } - } - m_ParamStartPos = 0; - m_ParamCount = 0; -} - -CPDF_Object* CPDF_StreamContentParser::GetObject(FX_DWORD index) { - if (index >= m_ParamCount) { - return NULL; - } - int real_index = m_ParamStartPos + m_ParamCount - index - 1; - if (real_index >= PARAM_BUF_SIZE) { - real_index -= PARAM_BUF_SIZE; - } - ContentParam& param = m_ParamBuf[real_index]; - if (param.m_Type == ContentParam::NUMBER) { - CPDF_Number* pNumber = param.m_Number.m_bInteger - ? new CPDF_Number(param.m_Number.m_Integer) - : new CPDF_Number(param.m_Number.m_Float); - - param.m_Type = ContentParam::OBJECT; - param.m_pObject = pNumber; - return pNumber; - } - if (param.m_Type == ContentParam::NAME) { - CPDF_Name* pName = new CPDF_Name( - CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len)); - param.m_Type = ContentParam::OBJECT; - param.m_pObject = pName; - return pName; - } - if (param.m_Type == ContentParam::OBJECT) { - return param.m_pObject; - } - ASSERT(FALSE); - return NULL; -} - -CFX_ByteString CPDF_StreamContentParser::GetString(FX_DWORD index) { - if (index >= m_ParamCount) { - return CFX_ByteString(); - } - int real_index = m_ParamStartPos + m_ParamCount - index - 1; - if (real_index >= PARAM_BUF_SIZE) { - real_index -= PARAM_BUF_SIZE; - } - ContentParam& param = m_ParamBuf[real_index]; - if (param.m_Type == ContentParam::NAME) { - return CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len); - } - if (param.m_Type == 0 && param.m_pObject) { - return param.m_pObject->GetString(); - } - return CFX_ByteString(); -} - -FX_FLOAT CPDF_StreamContentParser::GetNumber(FX_DWORD index) { - if (index >= m_ParamCount) { - return 0; - } - int real_index = m_ParamStartPos + m_ParamCount - index - 1; - if (real_index >= PARAM_BUF_SIZE) { - real_index -= PARAM_BUF_SIZE; - } - ContentParam& param = m_ParamBuf[real_index]; - if (param.m_Type == ContentParam::NUMBER) { - return param.m_Number.m_bInteger ? (FX_FLOAT)param.m_Number.m_Integer - : param.m_Number.m_Float; - } - if (param.m_Type == 0 && param.m_pObject) { - return param.m_pObject->GetNumber(); - } - return 0; -} - -FX_FLOAT CPDF_StreamContentParser::GetNumber16(FX_DWORD index) { - return GetNumber(index); -} - -void CPDF_StreamContentParser::SetGraphicStates(CPDF_PageObject* pObj, - FX_BOOL bColor, - FX_BOOL bText, - FX_BOOL bGraph) { - pObj->m_GeneralState = m_pCurStates->m_GeneralState; - pObj->m_ClipPath = m_pCurStates->m_ClipPath; - pObj->m_ContentMark = m_CurContentMark; - if (bColor) { - pObj->m_ColorState = m_pCurStates->m_ColorState; - } - if (bGraph) { - pObj->m_GraphState = m_pCurStates->m_GraphState; - } - if (bText) { - pObj->m_TextState = m_pCurStates->m_TextState; - } -} - -// static -CPDF_StreamContentParser::OpCodes -CPDF_StreamContentParser::InitializeOpCodes() { - return OpCodes({ - {FXBSTR_ID('"', 0, 0, 0), - &CPDF_StreamContentParser::Handle_NextLineShowText_Space}, - {FXBSTR_ID('\'', 0, 0, 0), - &CPDF_StreamContentParser::Handle_NextLineShowText}, - {FXBSTR_ID('B', 0, 0, 0), - &CPDF_StreamContentParser::Handle_FillStrokePath}, - {FXBSTR_ID('B', '*', 0, 0), - &CPDF_StreamContentParser::Handle_EOFillStrokePath}, - {FXBSTR_ID('B', 'D', 'C', 0), - &CPDF_StreamContentParser::Handle_BeginMarkedContent_Dictionary}, - {FXBSTR_ID('B', 'I', 0, 0), &CPDF_StreamContentParser::Handle_BeginImage}, - {FXBSTR_ID('B', 'M', 'C', 0), - &CPDF_StreamContentParser::Handle_BeginMarkedContent}, - {FXBSTR_ID('B', 'T', 0, 0), &CPDF_StreamContentParser::Handle_BeginText}, - {FXBSTR_ID('C', 'S', 0, 0), - &CPDF_StreamContentParser::Handle_SetColorSpace_Stroke}, - {FXBSTR_ID('D', 'P', 0, 0), - &CPDF_StreamContentParser::Handle_MarkPlace_Dictionary}, - {FXBSTR_ID('D', 'o', 0, 0), - &CPDF_StreamContentParser::Handle_ExecuteXObject}, - {FXBSTR_ID('E', 'I', 0, 0), &CPDF_StreamContentParser::Handle_EndImage}, - {FXBSTR_ID('E', 'M', 'C', 0), - &CPDF_StreamContentParser::Handle_EndMarkedContent}, - {FXBSTR_ID('E', 'T', 0, 0), &CPDF_StreamContentParser::Handle_EndText}, - {FXBSTR_ID('F', 0, 0, 0), &CPDF_StreamContentParser::Handle_FillPathOld}, - {FXBSTR_ID('G', 0, 0, 0), - &CPDF_StreamContentParser::Handle_SetGray_Stroke}, - {FXBSTR_ID('I', 'D', 0, 0), - &CPDF_StreamContentParser::Handle_BeginImageData}, - {FXBSTR_ID('J', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineCap}, - {FXBSTR_ID('K', 0, 0, 0), - &CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke}, - {FXBSTR_ID('M', 0, 0, 0), - &CPDF_StreamContentParser::Handle_SetMiterLimit}, - {FXBSTR_ID('M', 'P', 0, 0), &CPDF_StreamContentParser::Handle_MarkPlace}, - {FXBSTR_ID('Q', 0, 0, 0), - &CPDF_StreamContentParser::Handle_RestoreGraphState}, - {FXBSTR_ID('R', 'G', 0, 0), - &CPDF_StreamContentParser::Handle_SetRGBColor_Stroke}, - {FXBSTR_ID('S', 0, 0, 0), &CPDF_StreamContentParser::Handle_StrokePath}, - {FXBSTR_ID('S', 'C', 0, 0), - &CPDF_StreamContentParser::Handle_SetColor_Stroke}, - {FXBSTR_ID('S', 'C', 'N', 0), - &CPDF_StreamContentParser::Handle_SetColorPS_Stroke}, - {FXBSTR_ID('T', '*', 0, 0), - &CPDF_StreamContentParser::Handle_MoveToNextLine}, - {FXBSTR_ID('T', 'D', 0, 0), - &CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading}, - {FXBSTR_ID('T', 'J', 0, 0), - &CPDF_StreamContentParser::Handle_ShowText_Positioning}, - {FXBSTR_ID('T', 'L', 0, 0), - &CPDF_StreamContentParser::Handle_SetTextLeading}, - {FXBSTR_ID('T', 'c', 0, 0), - &CPDF_StreamContentParser::Handle_SetCharSpace}, - {FXBSTR_ID('T', 'd', 0, 0), - &CPDF_StreamContentParser::Handle_MoveTextPoint}, - {FXBSTR_ID('T', 'f', 0, 0), &CPDF_StreamContentParser::Handle_SetFont}, - {FXBSTR_ID('T', 'j', 0, 0), &CPDF_StreamContentParser::Handle_ShowText}, - {FXBSTR_ID('T', 'm', 0, 0), - &CPDF_StreamContentParser::Handle_SetTextMatrix}, - {FXBSTR_ID('T', 'r', 0, 0), - &CPDF_StreamContentParser::Handle_SetTextRenderMode}, - {FXBSTR_ID('T', 's', 0, 0), - &CPDF_StreamContentParser::Handle_SetTextRise}, - {FXBSTR_ID('T', 'w', 0, 0), - &CPDF_StreamContentParser::Handle_SetWordSpace}, - {FXBSTR_ID('T', 'z', 0, 0), - &CPDF_StreamContentParser::Handle_SetHorzScale}, - {FXBSTR_ID('W', 0, 0, 0), &CPDF_StreamContentParser::Handle_Clip}, - {FXBSTR_ID('W', '*', 0, 0), &CPDF_StreamContentParser::Handle_EOClip}, - {FXBSTR_ID('b', 0, 0, 0), - &CPDF_StreamContentParser::Handle_CloseFillStrokePath}, - {FXBSTR_ID('b', '*', 0, 0), - &CPDF_StreamContentParser::Handle_CloseEOFillStrokePath}, - {FXBSTR_ID('c', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_123}, - {FXBSTR_ID('c', 'm', 0, 0), - &CPDF_StreamContentParser::Handle_ConcatMatrix}, - {FXBSTR_ID('c', 's', 0, 0), - &CPDF_StreamContentParser::Handle_SetColorSpace_Fill}, - {FXBSTR_ID('d', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetDash}, - {FXBSTR_ID('d', '0', 0, 0), - &CPDF_StreamContentParser::Handle_SetCharWidth}, - {FXBSTR_ID('d', '1', 0, 0), - &CPDF_StreamContentParser::Handle_SetCachedDevice}, - {FXBSTR_ID('f', 0, 0, 0), &CPDF_StreamContentParser::Handle_FillPath}, - {FXBSTR_ID('f', '*', 0, 0), &CPDF_StreamContentParser::Handle_EOFillPath}, - {FXBSTR_ID('g', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetGray_Fill}, - {FXBSTR_ID('g', 's', 0, 0), - &CPDF_StreamContentParser::Handle_SetExtendGraphState}, - {FXBSTR_ID('h', 0, 0, 0), &CPDF_StreamContentParser::Handle_ClosePath}, - {FXBSTR_ID('i', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetFlat}, - {FXBSTR_ID('j', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineJoin}, - {FXBSTR_ID('k', 0, 0, 0), - &CPDF_StreamContentParser::Handle_SetCMYKColor_Fill}, - {FXBSTR_ID('l', 0, 0, 0), &CPDF_StreamContentParser::Handle_LineTo}, - {FXBSTR_ID('m', 0, 0, 0), &CPDF_StreamContentParser::Handle_MoveTo}, - {FXBSTR_ID('n', 0, 0, 0), &CPDF_StreamContentParser::Handle_EndPath}, - {FXBSTR_ID('q', 0, 0, 0), - &CPDF_StreamContentParser::Handle_SaveGraphState}, - {FXBSTR_ID('r', 'e', 0, 0), &CPDF_StreamContentParser::Handle_Rectangle}, - {FXBSTR_ID('r', 'g', 0, 0), - &CPDF_StreamContentParser::Handle_SetRGBColor_Fill}, - {FXBSTR_ID('r', 'i', 0, 0), - &CPDF_StreamContentParser::Handle_SetRenderIntent}, - {FXBSTR_ID('s', 0, 0, 0), - &CPDF_StreamContentParser::Handle_CloseStrokePath}, - {FXBSTR_ID('s', 'c', 0, 0), - &CPDF_StreamContentParser::Handle_SetColor_Fill}, - {FXBSTR_ID('s', 'c', 'n', 0), - &CPDF_StreamContentParser::Handle_SetColorPS_Fill}, - {FXBSTR_ID('s', 'h', 0, 0), &CPDF_StreamContentParser::Handle_ShadeFill}, - {FXBSTR_ID('v', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_23}, - {FXBSTR_ID('w', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineWidth}, - {FXBSTR_ID('y', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_13}, - }); -} - -void CPDF_StreamContentParser::OnOperator(const FX_CHAR* op) { - int i = 0; - FX_DWORD opid = 0; - while (i < 4 && op[i]) { - opid = (opid << 8) + op[i]; - i++; - } - while (i < 4) { - opid <<= 8; - i++; - } - - static const OpCodes s_OpCodes = InitializeOpCodes(); - - auto it = s_OpCodes.find(opid); - if (it != s_OpCodes.end()) - (this->*it->second)(); -} - -void CPDF_StreamContentParser::Handle_CloseFillStrokePath() { - if (m_Options.m_bTextOnly) { - return; - } - Handle_ClosePath(); - AddPathObject(FXFILL_WINDING, TRUE); -} - -void CPDF_StreamContentParser::Handle_FillStrokePath() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathObject(FXFILL_WINDING, TRUE); -} - -void CPDF_StreamContentParser::Handle_CloseEOFillStrokePath() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE); - AddPathObject(FXFILL_ALTERNATE, TRUE); -} - -void CPDF_StreamContentParser::Handle_EOFillStrokePath() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathObject(FXFILL_ALTERNATE, TRUE); -} - -void CPDF_StreamContentParser::Handle_BeginMarkedContent_Dictionary() { - if (!m_Options.m_bMarkedContent) { - return; - } - CFX_ByteString tag = GetString(1); - CPDF_Object* pProperty = GetObject(0); - if (!pProperty) { - return; - } - FX_BOOL bDirect = TRUE; - if (pProperty->IsName()) { - pProperty = FindResourceObj("Properties", pProperty->GetString()); - if (!pProperty) - return; - bDirect = FALSE; - } - if (CPDF_Dictionary* pDict = pProperty->AsDictionary()) { - m_CurContentMark.GetModify()->AddMark(tag, pDict, bDirect); - } -} - -void CPDF_StreamContentParser::Handle_BeginImage() { - FX_FILESIZE savePos = m_pSyntax->GetPos(); - CPDF_Dictionary* pDict = new CPDF_Dictionary; - while (1) { - CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement(); - if (type == CPDF_StreamParser::Keyword) { - CFX_ByteString bsKeyword(m_pSyntax->GetWordBuf(), - m_pSyntax->GetWordSize()); - if (bsKeyword != "ID") { - m_pSyntax->SetPos(savePos); - pDict->Release(); - return; - } - } - if (type != CPDF_StreamParser::Name) { - break; - } - CFX_ByteString key((const FX_CHAR*)m_pSyntax->GetWordBuf() + 1, - m_pSyntax->GetWordSize() - 1); - std::unique_ptr> pObj( - m_pSyntax->ReadNextObject()); - if (!key.IsEmpty()) { - FX_DWORD dwObjNum = pObj ? pObj->GetObjNum() : 0; - if (dwObjNum) - pDict->SetAtReference(key, m_pDocument, dwObjNum); - else - pDict->SetAt(key, pObj.release()); - } - } - PDF_ReplaceAbbr(pDict); - CPDF_Object* pCSObj = NULL; - if (pDict->KeyExist("ColorSpace")) { - pCSObj = pDict->GetElementValue("ColorSpace"); - if (pCSObj->IsName()) { - CFX_ByteString name = pCSObj->GetString(); - if (name != "DeviceRGB" && name != "DeviceGray" && name != "DeviceCMYK") { - pCSObj = FindResourceObj("ColorSpace", name); - if (pCSObj && !pCSObj->GetObjNum()) { - pCSObj = pCSObj->Clone(); - pDict->SetAt("ColorSpace", pCSObj); - } - } - } - } - CPDF_Stream* pStream = m_pSyntax->ReadInlineStream( - m_pDocument, pDict, pCSObj, m_Options.m_bDecodeInlineImage); - while (1) { - CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement(); - if (type == CPDF_StreamParser::EndOfData) { - break; - } - if (type != CPDF_StreamParser::Keyword) { - continue; - } - if (m_pSyntax->GetWordSize() == 2 && m_pSyntax->GetWordBuf()[0] == 'E' && - m_pSyntax->GetWordBuf()[1] == 'I') { - break; - } - } - if (m_Options.m_bTextOnly) { - if (pStream) { - pStream->Release(); - } else { - pDict->Release(); - } - return; - } - pDict->SetAtName("Subtype", "Image"); - CPDF_ImageObject* pImgObj = AddImage(pStream, NULL, TRUE); - if (!pImgObj) { - if (pStream) { - pStream->Release(); - } else { - pDict->Release(); - } - } -} - -void CPDF_StreamContentParser::Handle_BeginMarkedContent() { - if (!m_Options.m_bMarkedContent) { - return; - } - CFX_ByteString tag = GetString(0); - m_CurContentMark.GetModify()->AddMark(tag, NULL, FALSE); -} - -void CPDF_StreamContentParser::Handle_BeginText() { - m_pCurStates->m_TextMatrix.Set(1.0f, 0, 0, 1.0f, 0, 0); - OnChangeTextMatrix(); - m_pCurStates->m_TextX = 0; - m_pCurStates->m_TextY = 0; - m_pCurStates->m_TextLineX = 0; - m_pCurStates->m_TextLineY = 0; -} - -void CPDF_StreamContentParser::Handle_CurveTo_123() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathPoint(GetNumber(5), GetNumber(4), FXPT_BEZIERTO); - AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); - AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); -} - -void CPDF_StreamContentParser::Handle_ConcatMatrix() { - FX_FLOAT a2 = GetNumber16(5), b2 = GetNumber16(4), c2 = GetNumber16(3), - d2 = GetNumber16(2); - FX_FLOAT e2 = GetNumber(1), f2 = GetNumber(0); - CFX_Matrix new_matrix(a2, b2, c2, d2, e2, f2); - new_matrix.Concat(m_pCurStates->m_CTM); - m_pCurStates->m_CTM = new_matrix; - OnChangeTextMatrix(); -} - -void CPDF_StreamContentParser::Handle_SetColorSpace_Fill() { - if (m_Options.m_bTextOnly) { - return; - } - CFX_ByteString csname = GetString(0); - CPDF_ColorSpace* pCS = FindColorSpace(csname); - if (!pCS) { - return; - } - m_pCurStates->m_ColorState.GetModify()->m_FillColor.SetColorSpace(pCS); -} - -void CPDF_StreamContentParser::Handle_SetColorSpace_Stroke() { - if (m_Options.m_bTextOnly) { - return; - } - CFX_ByteString csname = GetString(0); - CPDF_ColorSpace* pCS = FindColorSpace(csname); - if (!pCS) { - return; - } - m_pCurStates->m_ColorState.GetModify()->m_StrokeColor.SetColorSpace(pCS); -} - -void CPDF_StreamContentParser::Handle_SetDash() { - if (m_Options.m_bTextOnly) { - return; - } - CPDF_Array* pArray = GetObject(1) ? GetObject(1)->GetArray() : NULL; - if (!pArray) { - return; - } - m_pCurStates->SetLineDash(pArray, GetNumber(0), 1.0f); -} - -void CPDF_StreamContentParser::Handle_SetCharWidth() { - m_Type3Data[0] = GetNumber(1); - m_Type3Data[1] = GetNumber(0); - m_bColored = TRUE; -} - -void CPDF_StreamContentParser::Handle_SetCachedDevice() { - for (int i = 0; i < 6; i++) { - m_Type3Data[i] = GetNumber(5 - i); - } - m_bColored = FALSE; -} - -void CPDF_StreamContentParser::Handle_ExecuteXObject() { - CFX_ByteString name = GetString(0); - if (name == m_LastImageName && m_pLastImage && m_pLastImage->GetStream() && - m_pLastImage->GetStream()->GetObjNum()) { - AddImage(nullptr, m_pLastImage, FALSE); - return; - } - - if (m_Options.m_bTextOnly) { - if (!m_pResources) - return; - - CPDF_Dictionary* pList = m_pResources->GetDictBy("XObject"); - if (!pList && m_pPageResources && m_pResources != m_pPageResources) - pList = m_pPageResources->GetDictBy("XObject"); - if (!pList) - return; - CPDF_Reference* pRes = ToReference(pList->GetElement(name)); - if (!pRes) - return; - - FX_BOOL bForm; - if (m_pDocument->IsFormStream(pRes->GetRefObjNum(), bForm) && !bForm) - return; - } - - CPDF_Stream* pXObject = ToStream(FindResourceObj("XObject", name)); - if (!pXObject) { - m_bResourceMissing = TRUE; - return; - } - - CFX_ByteStringC type = pXObject->GetDict() - ? pXObject->GetDict()->GetConstStringBy("Subtype") - : CFX_ByteStringC(); - if (type == "Image") { - if (m_Options.m_bTextOnly) { - return; - } - CPDF_ImageObject* pObj = AddImage(pXObject, NULL, FALSE); - m_LastImageName = name; - m_pLastImage = pObj->m_pImage; - if (!m_pObjectHolder->HasImageMask()) - m_pObjectHolder->SetHasImageMask(m_pLastImage->IsMask()); - } else if (type == "Form") { - AddForm(pXObject); - } else { - return; - } -} - -void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) { - if (!m_Options.m_bSeparateForm) { - CPDF_Dictionary* pResources = pStream->GetDict()->GetDictBy("Resources"); - CFX_Matrix form_matrix = pStream->GetDict()->GetMatrixBy("Matrix"); - form_matrix.Concat(m_pCurStates->m_CTM); - CPDF_Array* pBBox = pStream->GetDict()->GetArrayBy("BBox"); - CFX_FloatRect form_bbox; - CPDF_Path ClipPath; - if (pBBox) { - form_bbox = pStream->GetDict()->GetRectBy("BBox"); - ClipPath.New(); - ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right, - form_bbox.top); - ClipPath.Transform(&form_matrix); - form_bbox.Transform(&form_matrix); - } - CPDF_StreamContentParser parser(m_pDocument, m_pPageResources, m_pResources, - &m_mtContentToUser, m_pObjectHolder, - pResources, &form_bbox, &m_Options, - m_pCurStates.get(), m_Level + 1); - parser.m_pCurStates->m_CTM = form_matrix; - if (ClipPath.NotNull()) { - parser.m_pCurStates->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING, - TRUE); - } - CPDF_StreamAcc stream; - stream.LoadAllData(pStream, FALSE); - if (stream.GetSize() == 0) { - return; - } - parser.Parse(stream.GetData(), stream.GetSize(), 0); - return; - } - std::unique_ptr pFormObj(new CPDF_FormObject); - pFormObj->m_pForm = - new CPDF_Form(m_pDocument, m_pPageResources, pStream, m_pResources); - pFormObj->m_FormMatrix = m_pCurStates->m_CTM; - pFormObj->m_FormMatrix.Concat(m_mtContentToUser); - CPDF_AllStates status; - status.m_GeneralState = m_pCurStates->m_GeneralState; - status.m_GraphState = m_pCurStates->m_GraphState; - status.m_ColorState = m_pCurStates->m_ColorState; - status.m_TextState = m_pCurStates->m_TextState; - pFormObj->m_pForm->ParseContent(&status, NULL, NULL, &m_Options, m_Level + 1); - if (!m_pObjectHolder->BackgroundAlphaNeeded() && - pFormObj->m_pForm->BackgroundAlphaNeeded()) { - m_pObjectHolder->SetBackgroundAlphaNeeded(TRUE); - } - pFormObj->CalcBoundingBox(); - SetGraphicStates(pFormObj.get(), TRUE, TRUE, TRUE); - m_pObjectHolder->GetPageObjectList()->push_back(std::move(pFormObj)); -} - -CPDF_ImageObject* CPDF_StreamContentParser::AddImage(CPDF_Stream* pStream, - CPDF_Image* pImage, - FX_BOOL bInline) { - if (!pStream && !pImage) { - return NULL; - } - CFX_Matrix ImageMatrix; - ImageMatrix.Copy(m_pCurStates->m_CTM); - ImageMatrix.Concat(m_mtContentToUser); - - std::unique_ptr pImageObj(new CPDF_ImageObject); - if (pImage) { - pImageObj->m_pImage = - m_pDocument->GetPageData()->GetImage(pImage->GetStream()); - } else if (pStream->GetObjNum()) { - pImageObj->m_pImage = m_pDocument->LoadImageF(pStream); - } else { - pImageObj->m_pImage = new CPDF_Image(m_pDocument); - pImageObj->m_pImage->LoadImageF(pStream, bInline); - } - SetGraphicStates(pImageObj.get(), pImageObj->m_pImage->IsMask(), FALSE, - FALSE); - pImageObj->m_Matrix = ImageMatrix; - pImageObj->CalcBoundingBox(); - CPDF_ImageObject* pRet = pImageObj.get(); - m_pObjectHolder->GetPageObjectList()->push_back(std::move(pImageObj)); - return pRet; -} - -void CPDF_StreamContentParser::Handle_MarkPlace_Dictionary() {} - -void CPDF_StreamContentParser::Handle_EndImage() {} - -void CPDF_StreamContentParser::Handle_EndMarkedContent() { - if (!m_Options.m_bMarkedContent) { - return; - } - if (m_CurContentMark.IsNull()) { - return; - } - int count = m_CurContentMark.GetObject()->CountItems(); - if (count == 1) { - m_CurContentMark.SetNull(); - return; - } - m_CurContentMark.GetModify()->DeleteLastMark(); -} - -void CPDF_StreamContentParser::Handle_EndText() { - int count = m_ClipTextList.GetSize(); - if (count == 0) { - return; - } - if (m_pCurStates->m_TextState.GetObject()->m_TextMode < 4) { - for (int i = 0; i < count; i++) { - delete m_ClipTextList.GetAt(i); - } - } else { - m_pCurStates->m_ClipPath.AppendTexts(m_ClipTextList.GetData(), count); - } - m_ClipTextList.RemoveAll(); -} - -void CPDF_StreamContentParser::Handle_FillPath() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathObject(FXFILL_WINDING, FALSE); -} - -void CPDF_StreamContentParser::Handle_FillPathOld() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathObject(FXFILL_WINDING, FALSE); -} - -void CPDF_StreamContentParser::Handle_EOFillPath() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathObject(FXFILL_ALTERNATE, FALSE); -} - -void CPDF_StreamContentParser::Handle_SetGray_Fill() { - FX_FLOAT value = GetNumber(0); - CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); - m_pCurStates->m_ColorState.SetFillColor(pCS, &value, 1); -} - -void CPDF_StreamContentParser::Handle_SetGray_Stroke() { - FX_FLOAT value = GetNumber(0); - CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); - m_pCurStates->m_ColorState.SetStrokeColor(pCS, &value, 1); -} - -void CPDF_StreamContentParser::Handle_SetExtendGraphState() { - CFX_ByteString name = GetString(0); - CPDF_Dictionary* pGS = ToDictionary(FindResourceObj("ExtGState", name)); - if (!pGS) { - m_bResourceMissing = TRUE; - return; - } - m_pCurStates->ProcessExtGS(pGS, this); -} - -void CPDF_StreamContentParser::Handle_ClosePath() { - if (m_Options.m_bTextOnly) { - return; - } - if (m_PathPointCount == 0) { - return; - } - if (m_PathStartX != m_PathCurrentX || m_PathStartY != m_PathCurrentY) { - AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE); - } else if (m_pPathPoints[m_PathPointCount - 1].m_Flag != FXPT_MOVETO) { - m_pPathPoints[m_PathPointCount - 1].m_Flag |= FXPT_CLOSEFIGURE; - } -} - -void CPDF_StreamContentParser::Handle_SetFlat() { - m_pCurStates->m_GeneralState.GetModify()->m_Flatness = GetNumber(0); -} - -void CPDF_StreamContentParser::Handle_BeginImageData() {} - -void CPDF_StreamContentParser::Handle_SetLineJoin() { - m_pCurStates->m_GraphState.GetModify()->m_LineJoin = - (CFX_GraphStateData::LineJoin)GetInteger(0); -} - -void CPDF_StreamContentParser::Handle_SetLineCap() { - m_pCurStates->m_GraphState.GetModify()->m_LineCap = - (CFX_GraphStateData::LineCap)GetInteger(0); -} - -void CPDF_StreamContentParser::Handle_SetCMYKColor_Fill() { - if (m_ParamCount != 4) - return; - - FX_FLOAT values[4]; - for (int i = 0; i < 4; i++) { - values[i] = GetNumber(3 - i); - } - CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); - m_pCurStates->m_ColorState.SetFillColor(pCS, values, 4); -} - -void CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke() { - if (m_ParamCount != 4) - return; - - FX_FLOAT values[4]; - for (int i = 0; i < 4; i++) { - values[i] = GetNumber(3 - i); - } - CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); - m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 4); -} - -void CPDF_StreamContentParser::Handle_LineTo() { - if (m_ParamCount != 2) - return; - - if (m_Options.m_bTextOnly) { - return; - } - AddPathPoint(GetNumber(1), GetNumber(0), FXPT_LINETO); -} - -void CPDF_StreamContentParser::Handle_MoveTo() { - if (m_ParamCount != 2) - return; - - if (m_Options.m_bTextOnly) { - m_pSyntax->SkipPathObject(); - return; - } - AddPathPoint(GetNumber(1), GetNumber(0), FXPT_MOVETO); - ParsePathObject(); -} - -void CPDF_StreamContentParser::Handle_SetMiterLimit() { - m_pCurStates->m_GraphState.GetModify()->m_MiterLimit = GetNumber(0); -} - -void CPDF_StreamContentParser::Handle_MarkPlace() {} - -void CPDF_StreamContentParser::Handle_EndPath() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathObject(0, FALSE); -} - -void CPDF_StreamContentParser::Handle_SaveGraphState() { - std::unique_ptr pStates(new CPDF_AllStates); - pStates->Copy(*m_pCurStates); - m_StateStack.push_back(std::move(pStates)); -} - -void CPDF_StreamContentParser::Handle_RestoreGraphState() { - if (m_StateStack.empty()) - return; - std::unique_ptr pStates = std::move(m_StateStack.back()); - m_StateStack.pop_back(); - m_pCurStates->Copy(*pStates); -} - -void CPDF_StreamContentParser::Handle_Rectangle() { - if (m_Options.m_bTextOnly) { - return; - } - FX_FLOAT x = GetNumber(3), y = GetNumber(2); - FX_FLOAT w = GetNumber(1), h = GetNumber(0); - AddPathRect(x, y, w, h); -} - -void CPDF_StreamContentParser::AddPathRect(FX_FLOAT x, - FX_FLOAT y, - FX_FLOAT w, - FX_FLOAT h) { - AddPathPoint(x, y, FXPT_MOVETO); - AddPathPoint(x + w, y, FXPT_LINETO); - AddPathPoint(x + w, y + h, FXPT_LINETO); - AddPathPoint(x, y + h, FXPT_LINETO); - AddPathPoint(x, y, FXPT_LINETO | FXPT_CLOSEFIGURE); -} - -void CPDF_StreamContentParser::Handle_SetRGBColor_Fill() { - if (m_ParamCount != 3) - return; - - FX_FLOAT values[3]; - for (int i = 0; i < 3; i++) { - values[i] = GetNumber(2 - i); - } - CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); - m_pCurStates->m_ColorState.SetFillColor(pCS, values, 3); -} - -void CPDF_StreamContentParser::Handle_SetRGBColor_Stroke() { - if (m_ParamCount != 3) - return; - - FX_FLOAT values[3]; - for (int i = 0; i < 3; i++) { - values[i] = GetNumber(2 - i); - } - CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); - m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 3); -} - -void CPDF_StreamContentParser::Handle_SetRenderIntent() {} - -void CPDF_StreamContentParser::Handle_CloseStrokePath() { - if (m_Options.m_bTextOnly) { - return; - } - Handle_ClosePath(); - AddPathObject(0, TRUE); -} - -void CPDF_StreamContentParser::Handle_StrokePath() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathObject(0, TRUE); -} - -void CPDF_StreamContentParser::Handle_SetColor_Fill() { - if (m_Options.m_bTextOnly) { - return; - } - FX_FLOAT values[4]; - int nargs = m_ParamCount; - if (nargs > 4) { - nargs = 4; - } - for (int i = 0; i < nargs; i++) { - values[i] = GetNumber(nargs - i - 1); - } - m_pCurStates->m_ColorState.SetFillColor(NULL, values, nargs); -} - -void CPDF_StreamContentParser::Handle_SetColor_Stroke() { - if (m_Options.m_bTextOnly) { - return; - } - FX_FLOAT values[4]; - int nargs = m_ParamCount; - if (nargs > 4) { - nargs = 4; - } - for (int i = 0; i < nargs; i++) { - values[i] = GetNumber(nargs - i - 1); - } - m_pCurStates->m_ColorState.SetStrokeColor(NULL, values, nargs); -} - -void CPDF_StreamContentParser::Handle_SetColorPS_Fill() { - if (m_Options.m_bTextOnly) { - return; - } - CPDF_Object* pLastParam = GetObject(0); - if (!pLastParam) { - return; - } - int nargs = m_ParamCount; - int nvalues = nargs; - if (pLastParam->IsName()) { - nvalues--; - } - FX_FLOAT* values = NULL; - if (nvalues) { - values = FX_Alloc(FX_FLOAT, nvalues); - for (int i = 0; i < nvalues; i++) { - values[i] = GetNumber(nargs - i - 1); - } - } - if (nvalues != nargs) { - CPDF_Pattern* pPattern = FindPattern(GetString(0), FALSE); - if (pPattern) { - m_pCurStates->m_ColorState.SetFillPattern(pPattern, values, nvalues); - } - } else { - m_pCurStates->m_ColorState.SetFillColor(NULL, values, nvalues); - } - FX_Free(values); -} - -void CPDF_StreamContentParser::Handle_SetColorPS_Stroke() { - if (m_Options.m_bTextOnly) { - return; - } - CPDF_Object* pLastParam = GetObject(0); - if (!pLastParam) { - return; - } - int nargs = m_ParamCount; - int nvalues = nargs; - if (pLastParam->IsName()) - nvalues--; - - FX_FLOAT* values = NULL; - if (nvalues) { - values = FX_Alloc(FX_FLOAT, nvalues); - for (int i = 0; i < nvalues; i++) { - values[i] = GetNumber(nargs - i - 1); - } - } - if (nvalues != nargs) { - CPDF_Pattern* pPattern = FindPattern(GetString(0), FALSE); - if (pPattern) { - m_pCurStates->m_ColorState.SetStrokePattern(pPattern, values, nvalues); - } - } else { - m_pCurStates->m_ColorState.SetStrokeColor(NULL, values, nvalues); - } - FX_Free(values); -} - -CFX_FloatRect GetShadingBBox(CPDF_Stream* pStream, - ShadingType type, - const CFX_Matrix* pMatrix, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS); - -void CPDF_StreamContentParser::Handle_ShadeFill() { - if (m_Options.m_bTextOnly) { - return; - } - CPDF_Pattern* pPattern = FindPattern(GetString(0), TRUE); - if (!pPattern) { - return; - } - if (pPattern->m_PatternType != CPDF_Pattern::SHADING) { - return; - } - CPDF_ShadingPattern* pShading = static_cast(pPattern); - if (!pShading->m_bShadingObj) { - return; - } - if (!pShading->Load()) { - return; - } - std::unique_ptr pObj(new CPDF_ShadingObject); - pObj->m_pShading = pShading; - SetGraphicStates(pObj.get(), FALSE, FALSE, FALSE); - pObj->m_Matrix = m_pCurStates->m_CTM; - pObj->m_Matrix.Concat(m_mtContentToUser); - CFX_FloatRect bbox; - if (!pObj->m_ClipPath.IsNull()) { - bbox = pObj->m_ClipPath.GetClipBox(); - } else { - bbox = m_BBox; - } - if (pShading->IsMeshShading()) { - bbox.Intersect(GetShadingBBox(ToStream(pShading->m_pShadingObj), - pShading->m_ShadingType, &pObj->m_Matrix, - pShading->m_pFunctions, pShading->m_nFuncs, - pShading->m_pCS)); - } - pObj->m_Left = bbox.left; - pObj->m_Right = bbox.right; - pObj->m_Top = bbox.top; - pObj->m_Bottom = bbox.bottom; - m_pObjectHolder->GetPageObjectList()->push_back(std::move(pObj)); -} - -void CPDF_StreamContentParser::Handle_SetCharSpace() { - m_pCurStates->m_TextState.GetModify()->m_CharSpace = GetNumber(0); -} - -void CPDF_StreamContentParser::Handle_MoveTextPoint() { - m_pCurStates->m_TextLineX += GetNumber(1); - m_pCurStates->m_TextLineY += GetNumber(0); - m_pCurStates->m_TextX = m_pCurStates->m_TextLineX; - m_pCurStates->m_TextY = m_pCurStates->m_TextLineY; -} - -void CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading() { - Handle_MoveTextPoint(); - m_pCurStates->m_TextLeading = -GetNumber(0); -} - -void CPDF_StreamContentParser::Handle_SetFont() { - FX_FLOAT fs = GetNumber(0); - if (fs == 0) { - fs = m_DefFontSize; - } - m_pCurStates->m_TextState.GetModify()->m_FontSize = fs; - CPDF_Font* pFont = FindFont(GetString(1)); - if (pFont) { - m_pCurStates->m_TextState.SetFont(pFont); - } -} - -CPDF_Object* CPDF_StreamContentParser::FindResourceObj( - const CFX_ByteStringC& type, - const CFX_ByteString& name) { - if (!m_pResources) { - return NULL; - } - if (m_pResources == m_pPageResources) { - CPDF_Dictionary* pList = m_pResources->GetDictBy(type); - if (!pList) { - return NULL; - } - CPDF_Object* pRes = pList->GetElementValue(name); - return pRes; - } - CPDF_Dictionary* pList = m_pResources->GetDictBy(type); - if (!pList) { - if (!m_pPageResources) { - return NULL; - } - CPDF_Dictionary* pList = m_pPageResources->GetDictBy(type); - if (!pList) { - return NULL; - } - CPDF_Object* pRes = pList->GetElementValue(name); - return pRes; - } - CPDF_Object* pRes = pList->GetElementValue(name); - return pRes; -} - -CPDF_Font* CPDF_StreamContentParser::FindFont(const CFX_ByteString& name) { - CPDF_Dictionary* pFontDict = ToDictionary(FindResourceObj("Font", name)); - if (!pFontDict) { - m_bResourceMissing = TRUE; - return CPDF_Font::GetStockFont(m_pDocument, "Helvetica"); - } - - CPDF_Font* pFont = m_pDocument->LoadFont(pFontDict); - if (pFont && pFont->IsType3Font()) { - pFont->AsType3Font()->SetPageResources(m_pResources); - pFont->AsType3Font()->CheckType3FontMetrics(); - } - return pFont; -} - -CPDF_ColorSpace* CPDF_StreamContentParser::FindColorSpace( - const CFX_ByteString& name) { - if (name == "Pattern") { - return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN); - } - if (name == "DeviceGray" || name == "DeviceCMYK" || name == "DeviceRGB") { - CFX_ByteString defname = "Default"; - defname += name.Mid(7); - CPDF_Object* pDefObj = FindResourceObj("ColorSpace", defname); - if (!pDefObj) { - if (name == "DeviceGray") { - return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY); - } - if (name == "DeviceRGB") { - return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB); - } - return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); - } - return m_pDocument->LoadColorSpace(pDefObj); - } - CPDF_Object* pCSObj = FindResourceObj("ColorSpace", name); - if (!pCSObj) { - m_bResourceMissing = TRUE; - return NULL; - } - return m_pDocument->LoadColorSpace(pCSObj); -} - -CPDF_Pattern* CPDF_StreamContentParser::FindPattern(const CFX_ByteString& name, - FX_BOOL bShading) { - CPDF_Object* pPattern = - FindResourceObj(bShading ? "Shading" : "Pattern", name); - if (!pPattern || (!pPattern->IsDictionary() && !pPattern->IsStream())) { - m_bResourceMissing = TRUE; - return NULL; - } - return m_pDocument->LoadPattern(pPattern, bShading, - &m_pCurStates->m_ParentMatrix); -} - -void CPDF_StreamContentParser::ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y) { - m_pCurStates->m_TextMatrix.Transform(x, y, x, y); - ConvertUserSpace(x, y); -} - -void CPDF_StreamContentParser::ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y) { - m_pCurStates->m_CTM.Transform(x, y, x, y); - m_mtContentToUser.Transform(x, y, x, y); -} - -void CPDF_StreamContentParser::AddTextObject(CFX_ByteString* pStrs, - FX_FLOAT fInitKerning, - FX_FLOAT* pKerning, - int nsegs) { - CPDF_Font* pFont = m_pCurStates->m_TextState.GetFont(); - if (!pFont) { - return; - } - if (fInitKerning != 0) { - if (!pFont->IsVertWriting()) { - m_pCurStates->m_TextX -= - (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000; - } else { - m_pCurStates->m_TextY -= - (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000; - } - } - if (nsegs == 0) { - return; - } - int textmode; - if (pFont->IsType3Font()) { - textmode = 0; - } else { - textmode = m_pCurStates->m_TextState.GetObject()->m_TextMode; - } - { - std::unique_ptr pText(new CPDF_TextObject); - m_pLastTextObject = pText.get(); - SetGraphicStates(m_pLastTextObject, TRUE, TRUE, TRUE); - if (textmode && textmode != 3 && textmode != 4 && textmode != 7) { - FX_FLOAT* pCTM = pText->m_TextState.GetModify()->m_CTM; - pCTM[0] = m_pCurStates->m_CTM.a; - pCTM[1] = m_pCurStates->m_CTM.c; - pCTM[2] = m_pCurStates->m_CTM.b; - pCTM[3] = m_pCurStates->m_CTM.d; - } - pText->SetSegments(pStrs, pKerning, nsegs); - pText->m_PosX = m_pCurStates->m_TextX; - pText->m_PosY = m_pCurStates->m_TextY + m_pCurStates->m_TextRise; - ConvertTextSpace(pText->m_PosX, pText->m_PosY); - FX_FLOAT x_advance; - FX_FLOAT y_advance; - pText->CalcPositionData(&x_advance, &y_advance, - m_pCurStates->m_TextHorzScale, m_Level); - m_pCurStates->m_TextX += x_advance; - m_pCurStates->m_TextY += y_advance; - if (textmode > 3) - m_ClipTextList.Add(pText->Clone()); - m_pObjectHolder->GetPageObjectList()->push_back(std::move(pText)); - } - if (pKerning && pKerning[nsegs - 1] != 0) { - if (!pFont->IsVertWriting()) { - m_pCurStates->m_TextX -= - (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) / - 1000; - } else { - m_pCurStates->m_TextY -= - (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) / - 1000; - } - } -} - -void CPDF_StreamContentParser::Handle_ShowText() { - CFX_ByteString str = GetString(0); - if (str.IsEmpty()) { - return; - } - AddTextObject(&str, 0, NULL, 1); -} - -void CPDF_StreamContentParser::Handle_ShowText_Positioning() { - CPDF_Array* pArray = GetObject(0) ? GetObject(0)->GetArray() : NULL; - if (!pArray) { - return; - } - int n = pArray->GetCount(); - int nsegs = 0; - for (int i = 0; i < n; i++) { - if (pArray->GetElementValue(i)->IsString()) - nsegs++; - } - if (nsegs == 0) { - for (int i = 0; i < n; i++) { - m_pCurStates->m_TextX -= - (pArray->GetNumberAt(i) * m_pCurStates->m_TextState.GetFontSize()) / - 1000; - } - return; - } - CFX_ByteString* pStrs = new CFX_ByteString[nsegs]; - FX_FLOAT* pKerning = FX_Alloc(FX_FLOAT, nsegs); - int iSegment = 0; - FX_FLOAT fInitKerning = 0; - for (int i = 0; i < n; i++) { - CPDF_Object* pObj = pArray->GetElementValue(i); - if (pObj->IsString()) { - CFX_ByteString str = pObj->GetString(); - if (str.IsEmpty()) { - continue; - } - pStrs[iSegment] = str; - pKerning[iSegment++] = 0; - } else { - FX_FLOAT num = pObj ? pObj->GetNumber() : 0; - if (iSegment == 0) { - fInitKerning += num; - } else { - pKerning[iSegment - 1] += num; - } - } - } - AddTextObject(pStrs, fInitKerning, pKerning, iSegment); - delete[] pStrs; - FX_Free(pKerning); -} - -void CPDF_StreamContentParser::Handle_SetTextLeading() { - m_pCurStates->m_TextLeading = GetNumber(0); -} - -void CPDF_StreamContentParser::Handle_SetTextMatrix() { - m_pCurStates->m_TextMatrix.Set(GetNumber16(5), GetNumber16(4), GetNumber16(3), - GetNumber16(2), GetNumber(1), GetNumber(0)); - OnChangeTextMatrix(); - m_pCurStates->m_TextX = 0; - m_pCurStates->m_TextY = 0; - m_pCurStates->m_TextLineX = 0; - m_pCurStates->m_TextLineY = 0; -} - -void CPDF_StreamContentParser::OnChangeTextMatrix() { - CFX_Matrix text_matrix(m_pCurStates->m_TextHorzScale, 0.0f, 0.0f, 1.0f, 0.0f, - 0.0f); - text_matrix.Concat(m_pCurStates->m_TextMatrix); - text_matrix.Concat(m_pCurStates->m_CTM); - text_matrix.Concat(m_mtContentToUser); - FX_FLOAT* pTextMatrix = m_pCurStates->m_TextState.GetModify()->m_Matrix; - pTextMatrix[0] = text_matrix.a; - pTextMatrix[1] = text_matrix.c; - pTextMatrix[2] = text_matrix.b; - pTextMatrix[3] = text_matrix.d; -} - -void CPDF_StreamContentParser::Handle_SetTextRenderMode() { - int mode = GetInteger(0); - if (mode < 0 || mode > 7) { - return; - } - m_pCurStates->m_TextState.GetModify()->m_TextMode = mode; -} - -void CPDF_StreamContentParser::Handle_SetTextRise() { - m_pCurStates->m_TextRise = GetNumber(0); -} - -void CPDF_StreamContentParser::Handle_SetWordSpace() { - m_pCurStates->m_TextState.GetModify()->m_WordSpace = GetNumber(0); -} - -void CPDF_StreamContentParser::Handle_SetHorzScale() { - if (m_ParamCount != 1) { - return; - } - m_pCurStates->m_TextHorzScale = GetNumber(0) / 100; - OnChangeTextMatrix(); -} - -void CPDF_StreamContentParser::Handle_MoveToNextLine() { - m_pCurStates->m_TextLineY -= m_pCurStates->m_TextLeading; - m_pCurStates->m_TextX = m_pCurStates->m_TextLineX; - m_pCurStates->m_TextY = m_pCurStates->m_TextLineY; -} - -void CPDF_StreamContentParser::Handle_CurveTo_23() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO); - AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); - AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); -} - -void CPDF_StreamContentParser::Handle_SetLineWidth() { - FX_FLOAT width = GetNumber(0); - m_pCurStates->m_GraphState.GetModify()->m_LineWidth = width; -} - -void CPDF_StreamContentParser::Handle_Clip() { - m_PathClipType = FXFILL_WINDING; -} - -void CPDF_StreamContentParser::Handle_EOClip() { - m_PathClipType = FXFILL_ALTERNATE; -} - -void CPDF_StreamContentParser::Handle_CurveTo_13() { - if (m_Options.m_bTextOnly) { - return; - } - AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO); - AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); - AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO); -} - -void CPDF_StreamContentParser::Handle_NextLineShowText() { - Handle_MoveToNextLine(); - Handle_ShowText(); -} - -void CPDF_StreamContentParser::Handle_NextLineShowText_Space() { - m_pCurStates->m_TextState.GetModify()->m_WordSpace = GetNumber(2); - m_pCurStates->m_TextState.GetModify()->m_CharSpace = GetNumber(1); - Handle_NextLineShowText(); -} - -void CPDF_StreamContentParser::Handle_Invalid() {} - -void CPDF_StreamContentParser::AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag) { - m_PathCurrentX = x; - m_PathCurrentY = y; - if (flag == FXPT_MOVETO) { - m_PathStartX = x; - m_PathStartY = y; - if (m_PathPointCount && - m_pPathPoints[m_PathPointCount - 1].m_Flag == FXPT_MOVETO) { - m_pPathPoints[m_PathPointCount - 1].m_PointX = x; - m_pPathPoints[m_PathPointCount - 1].m_PointY = y; - return; - } - } else if (m_PathPointCount == 0) { - return; - } - m_PathPointCount++; - if (m_PathPointCount > m_PathAllocSize) { - int newsize = m_PathPointCount + 256; - FX_PATHPOINT* pNewPoints = FX_Alloc(FX_PATHPOINT, newsize); - if (m_PathAllocSize) { - FXSYS_memcpy(pNewPoints, m_pPathPoints, - m_PathAllocSize * sizeof(FX_PATHPOINT)); - FX_Free(m_pPathPoints); - } - m_pPathPoints = pNewPoints; - m_PathAllocSize = newsize; - } - m_pPathPoints[m_PathPointCount - 1].m_Flag = flag; - m_pPathPoints[m_PathPointCount - 1].m_PointX = x; - m_pPathPoints[m_PathPointCount - 1].m_PointY = y; -} - -void CPDF_StreamContentParser::AddPathObject(int FillType, FX_BOOL bStroke) { - int PathPointCount = m_PathPointCount, PathClipType = m_PathClipType; - m_PathPointCount = 0; - m_PathClipType = 0; - if (PathPointCount <= 1) { - if (PathPointCount && PathClipType) { - CPDF_Path path; - path.New()->AppendRect(0, 0, 0, 0); - m_pCurStates->m_ClipPath.AppendPath(path, FXFILL_WINDING, TRUE); - } - return; - } - if (PathPointCount && - m_pPathPoints[PathPointCount - 1].m_Flag == FXPT_MOVETO) { - PathPointCount--; - } - CPDF_Path Path; - CFX_PathData* pPathData = Path.New(); - pPathData->SetPointCount(PathPointCount); - FXSYS_memcpy(pPathData->GetPoints(), m_pPathPoints, - sizeof(FX_PATHPOINT) * PathPointCount); - CFX_Matrix matrix = m_pCurStates->m_CTM; - matrix.Concat(m_mtContentToUser); - if (bStroke || FillType) { - std::unique_ptr pPathObj(new CPDF_PathObject); - pPathObj->m_bStroke = bStroke; - pPathObj->m_FillType = FillType; - pPathObj->m_Path = Path; - pPathObj->m_Matrix = matrix; - SetGraphicStates(pPathObj.get(), TRUE, FALSE, TRUE); - pPathObj->CalcBoundingBox(); - m_pObjectHolder->GetPageObjectList()->push_back(std::move(pPathObj)); - } - if (PathClipType) { - if (!matrix.IsIdentity()) { - Path.Transform(&matrix); - matrix.SetIdentity(); - } - m_pCurStates->m_ClipPath.AppendPath(Path, PathClipType, TRUE); - } -} - -FX_DWORD CPDF_StreamContentParser::Parse(const uint8_t* pData, - FX_DWORD dwSize, - FX_DWORD max_cost) { - if (m_Level > _FPDF_MAX_FORM_LEVEL_) { - return dwSize; - } - FX_DWORD InitObjCount = m_pObjectHolder->GetPageObjectList()->size(); - CPDF_StreamParser syntax(pData, dwSize); - CPDF_StreamParserAutoClearer auto_clearer(&m_pSyntax, &syntax); - while (1) { - FX_DWORD cost = m_pObjectHolder->GetPageObjectList()->size() - InitObjCount; - if (max_cost && cost >= max_cost) { - break; - } - switch (syntax.ParseNextElement()) { - case CPDF_StreamParser::EndOfData: - return m_pSyntax->GetPos(); - case CPDF_StreamParser::Keyword: - OnOperator((char*)syntax.GetWordBuf()); - ClearAllParams(); - break; - case CPDF_StreamParser::Number: - AddNumberParam((char*)syntax.GetWordBuf(), syntax.GetWordSize()); - break; - case CPDF_StreamParser::Name: - AddNameParam((const FX_CHAR*)syntax.GetWordBuf() + 1, - syntax.GetWordSize() - 1); - break; - default: - AddObjectParam(syntax.GetObject()); - } - } - return m_pSyntax->GetPos(); -} - -void CPDF_StreamContentParser::ParsePathObject() { - FX_FLOAT params[6] = {}; - int nParams = 0; - int last_pos = m_pSyntax->GetPos(); - while (1) { - CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement(); - FX_BOOL bProcessed = TRUE; - switch (type) { - case CPDF_StreamParser::EndOfData: - return; - case CPDF_StreamParser::Keyword: { - int len = m_pSyntax->GetWordSize(); - if (len == 1) { - switch (m_pSyntax->GetWordBuf()[0]) { - case kPathOperatorSubpath: - AddPathPoint(params[0], params[1], FXPT_MOVETO); - nParams = 0; - break; - case kPathOperatorLine: - AddPathPoint(params[0], params[1], FXPT_LINETO); - nParams = 0; - break; - case kPathOperatorCubicBezier1: - AddPathPoint(params[0], params[1], FXPT_BEZIERTO); - AddPathPoint(params[2], params[3], FXPT_BEZIERTO); - AddPathPoint(params[4], params[5], FXPT_BEZIERTO); - nParams = 0; - break; - case kPathOperatorCubicBezier2: - AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO); - AddPathPoint(params[0], params[1], FXPT_BEZIERTO); - AddPathPoint(params[2], params[3], FXPT_BEZIERTO); - nParams = 0; - break; - case kPathOperatorCubicBezier3: - AddPathPoint(params[0], params[1], FXPT_BEZIERTO); - AddPathPoint(params[2], params[3], FXPT_BEZIERTO); - AddPathPoint(params[2], params[3], FXPT_BEZIERTO); - nParams = 0; - break; - case kPathOperatorClosePath: - Handle_ClosePath(); - nParams = 0; - break; - default: - bProcessed = FALSE; - break; - } - } else if (len == 2) { - if (m_pSyntax->GetWordBuf()[0] == kPathOperatorRectangle[0] && - m_pSyntax->GetWordBuf()[1] == kPathOperatorRectangle[1]) { - AddPathRect(params[0], params[1], params[2], params[3]); - nParams = 0; - } else { - bProcessed = FALSE; - } - } else { - bProcessed = FALSE; - } - if (bProcessed) { - last_pos = m_pSyntax->GetPos(); - } - break; - } - case CPDF_StreamParser::Number: { - if (nParams == 6) { - break; - } - FX_BOOL bInteger; - int value; - FX_atonum( - CFX_ByteStringC(m_pSyntax->GetWordBuf(), m_pSyntax->GetWordSize()), - bInteger, &value); - params[nParams++] = bInteger ? (FX_FLOAT)value : *(FX_FLOAT*)&value; - break; - } - default: - bProcessed = FALSE; - } - if (!bProcessed) { - m_pSyntax->SetPos(last_pos); - return; - } - } -} - -void PDF_ReplaceAbbr(CPDF_Object* pObj) { - switch (pObj->GetType()) { - case CPDF_Object::DICTIONARY: { - CPDF_Dictionary* pDict = pObj->AsDictionary(); - std::vector replacements; - for (const auto& it : *pDict) { - CFX_ByteString key = it.first; - CPDF_Object* value = it.second; - CFX_ByteStringC fullname = PDF_FindFullName( - PDF_InlineKeyAbbr, FX_ArraySize(PDF_InlineKeyAbbr), key); - if (!fullname.IsEmpty()) { - AbbrReplacementOp op; - op.is_replace_key = true; - op.key = key; - op.replacement = fullname; - replacements.push_back(op); - key = fullname; - } - - if (value->IsName()) { - CFX_ByteString name = value->GetString(); - fullname = PDF_FindFullName(PDF_InlineValueAbbr, - FX_ArraySize(PDF_InlineValueAbbr), name); - if (!fullname.IsEmpty()) { - AbbrReplacementOp op; - op.is_replace_key = false; - op.key = key; - op.replacement = fullname; - replacements.push_back(op); - } - } else { - PDF_ReplaceAbbr(value); - } - } - for (const auto& op : replacements) { - if (op.is_replace_key) - pDict->ReplaceKey(op.key, op.replacement); - else - pDict->SetAtName(op.key, op.replacement); - } - break; - } - case CPDF_Object::ARRAY: { - CPDF_Array* pArray = pObj->AsArray(); - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - CPDF_Object* pElement = pArray->GetElement(i); - if (pElement->IsName()) { - CFX_ByteString name = pElement->GetString(); - CFX_ByteStringC fullname = PDF_FindFullName( - PDF_InlineValueAbbr, FX_ArraySize(PDF_InlineValueAbbr), name); - if (!fullname.IsEmpty()) { - pArray->SetAt(i, new CPDF_Name(fullname)); - } - } else { - PDF_ReplaceAbbr(pElement); - } - } - break; - } - default: - break; - } -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp deleted file mode 100644 index feb2cde346..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp +++ /dev/null @@ -1,888 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_boolean.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_null.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" - -CPDF_StreamParser::CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize) { - m_pBuf = pData; - m_Size = dwSize; - m_Pos = 0; - m_pLastObj = NULL; -} - -CPDF_StreamParser::~CPDF_StreamParser() { - if (m_pLastObj) { - m_pLastObj->Release(); - } -} - -FX_DWORD _DecodeAllScanlines(ICodec_ScanlineDecoder* pDecoder, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - if (!pDecoder) { - return (FX_DWORD)-1; - } - int ncomps = pDecoder->CountComps(); - int bpc = pDecoder->GetBPC(); - int width = pDecoder->GetWidth(); - int height = pDecoder->GetHeight(); - int pitch = (width * ncomps * bpc + 7) / 8; - if (height == 0 || pitch > (1 << 30) / height) { - delete pDecoder; - return -1; - } - dest_buf = FX_Alloc2D(uint8_t, pitch, height); - dest_size = pitch * height; // Safe since checked alloc returned. - for (int row = 0; row < height; row++) { - const uint8_t* pLine = pDecoder->GetScanline(row); - if (!pLine) - break; - - FXSYS_memcpy(dest_buf + row * pitch, pLine, pitch); - } - FX_DWORD srcoff = pDecoder->GetSrcOffset(); - delete pDecoder; - return srcoff; -} - -ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - const CPDF_Dictionary* pParams); - -FX_DWORD PDF_DecodeInlineStream(const uint8_t* src_buf, - FX_DWORD limit, - int width, - int height, - CFX_ByteString& decoder, - CPDF_Dictionary* pParam, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - if (decoder == "CCITTFaxDecode" || decoder == "CCF") { - ICodec_ScanlineDecoder* pDecoder = - FPDFAPI_CreateFaxDecoder(src_buf, limit, width, height, pParam); - return _DecodeAllScanlines(pDecoder, dest_buf, dest_size); - } - if (decoder == "ASCII85Decode" || decoder == "A85") { - return A85Decode(src_buf, limit, dest_buf, dest_size); - } - if (decoder == "ASCIIHexDecode" || decoder == "AHx") { - return HexDecode(src_buf, limit, dest_buf, dest_size); - } - if (decoder == "FlateDecode" || decoder == "Fl") { - return FPDFAPI_FlateOrLZWDecode(FALSE, src_buf, limit, pParam, dest_size, - dest_buf, dest_size); - } - if (decoder == "LZWDecode" || decoder == "LZW") { - return FPDFAPI_FlateOrLZWDecode(TRUE, src_buf, limit, pParam, 0, dest_buf, - dest_size); - } - if (decoder == "DCTDecode" || decoder == "DCT") { - ICodec_ScanlineDecoder* pDecoder = - CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder( - src_buf, limit, width, height, 0, - pParam ? pParam->GetIntegerBy("ColorTransform", 1) : 1); - return _DecodeAllScanlines(pDecoder, dest_buf, dest_size); - } - if (decoder == "RunLengthDecode" || decoder == "RL") { - return RunLengthDecode(src_buf, limit, dest_buf, dest_size); - } - dest_size = 0; - dest_buf = 0; - return (FX_DWORD)-1; -} - -CPDF_Stream* CPDF_StreamParser::ReadInlineStream(CPDF_Document* pDoc, - CPDF_Dictionary* pDict, - CPDF_Object* pCSObj, - FX_BOOL bDecode) { - if (m_Pos == m_Size) - return nullptr; - - if (PDFCharIsWhitespace(m_pBuf[m_Pos])) - m_Pos++; - - CFX_ByteString Decoder; - CPDF_Dictionary* pParam = nullptr; - CPDF_Object* pFilter = pDict->GetElementValue("Filter"); - if (pFilter) { - if (CPDF_Array* pArray = pFilter->AsArray()) { - Decoder = pArray->GetStringAt(0); - CPDF_Array* pParams = pDict->GetArrayBy("DecodeParms"); - if (pParams) - pParam = pParams->GetDictAt(0); - } else { - Decoder = pFilter->GetString(); - pParam = pDict->GetDictBy("DecodeParms"); - } - } - FX_DWORD width = pDict->GetIntegerBy("Width"); - FX_DWORD height = pDict->GetIntegerBy("Height"); - FX_DWORD OrigSize = 0; - if (pCSObj) { - FX_DWORD bpc = pDict->GetIntegerBy("BitsPerComponent"); - FX_DWORD nComponents = 1; - CPDF_ColorSpace* pCS = pDoc->LoadColorSpace(pCSObj); - if (!pCS) { - nComponents = 3; - } else { - nComponents = pCS->CountComponents(); - pDoc->GetPageData()->ReleaseColorSpace(pCSObj); - } - FX_DWORD pitch = width; - if (bpc && pitch > INT_MAX / bpc) { - return NULL; - } - pitch *= bpc; - if (nComponents && pitch > INT_MAX / nComponents) { - return NULL; - } - pitch *= nComponents; - if (pitch > INT_MAX - 7) { - return NULL; - } - pitch += 7; - pitch /= 8; - OrigSize = pitch; - } else { - if (width > INT_MAX - 7) { - return NULL; - } - OrigSize = ((width + 7) / 8); - } - if (height && OrigSize > INT_MAX / height) { - return NULL; - } - OrigSize *= height; - uint8_t* pData = NULL; - FX_DWORD dwStreamSize; - if (Decoder.IsEmpty()) { - if (OrigSize > m_Size - m_Pos) { - OrigSize = m_Size - m_Pos; - } - pData = FX_Alloc(uint8_t, OrigSize); - FXSYS_memcpy(pData, m_pBuf + m_Pos, OrigSize); - dwStreamSize = OrigSize; - m_Pos += OrigSize; - } else { - FX_DWORD dwDestSize = OrigSize; - dwStreamSize = - PDF_DecodeInlineStream(m_pBuf + m_Pos, m_Size - m_Pos, width, height, - Decoder, pParam, pData, dwDestSize); - if ((int)dwStreamSize < 0) { - FX_Free(pData); - return NULL; - } - if (bDecode) { - m_Pos += dwStreamSize; - dwStreamSize = dwDestSize; - if (CPDF_Array* pArray = pFilter->AsArray()) { - pArray->RemoveAt(0); - CPDF_Array* pParams = pDict->GetArrayBy("DecodeParms"); - if (pParams) - pParams->RemoveAt(0); - } else { - pDict->RemoveAt("Filter"); - pDict->RemoveAt("DecodeParms"); - } - } else { - FX_Free(pData); - FX_DWORD dwSavePos = m_Pos; - m_Pos += dwStreamSize; - while (1) { - FX_DWORD dwPrevPos = m_Pos; - CPDF_StreamParser::SyntaxType type = ParseNextElement(); - if (type == CPDF_StreamParser::EndOfData) { - break; - } - if (type != CPDF_StreamParser::Keyword) { - dwStreamSize += m_Pos - dwPrevPos; - continue; - } - if (GetWordSize() == 2 && GetWordBuf()[0] == 'E' && - GetWordBuf()[1] == 'I') { - m_Pos = dwPrevPos; - break; - } - dwStreamSize += m_Pos - dwPrevPos; - } - m_Pos = dwSavePos; - pData = FX_Alloc(uint8_t, dwStreamSize); - FXSYS_memcpy(pData, m_pBuf + m_Pos, dwStreamSize); - m_Pos += dwStreamSize; - } - } - pDict->SetAtInteger("Length", (int)dwStreamSize); - return new CPDF_Stream(pData, dwStreamSize, pDict); -} - -#define MAX_WORD_BUFFER 256 -#define MAX_STRING_LENGTH 32767 -#define FXDWORD_TRUE FXDWORD_FROM_LSBFIRST(0x65757274) -#define FXDWORD_NULL FXDWORD_FROM_LSBFIRST(0x6c6c756e) -#define FXDWORD_FALS FXDWORD_FROM_LSBFIRST(0x736c6166) -CPDF_StreamParser::SyntaxType CPDF_StreamParser::ParseNextElement() { - if (m_pLastObj) { - m_pLastObj->Release(); - m_pLastObj = nullptr; - } - - m_WordSize = 0; - FX_BOOL bIsNumber = TRUE; - if (!PositionIsInBounds()) - return EndOfData; - - int ch = m_pBuf[m_Pos++]; - while (1) { - while (PDFCharIsWhitespace(ch)) { - if (!PositionIsInBounds()) - return EndOfData; - - ch = m_pBuf[m_Pos++]; - } - - if (ch != '%') - break; - - while (1) { - if (!PositionIsInBounds()) - return EndOfData; - - ch = m_pBuf[m_Pos++]; - if (PDFCharIsLineEnding(ch)) - break; - } - } - - if (PDFCharIsDelimiter(ch) && ch != '/') { - m_Pos--; - m_pLastObj = ReadNextObject(); - return Others; - } - - while (1) { - if (m_WordSize < MAX_WORD_BUFFER) - m_WordBuffer[m_WordSize++] = ch; - - if (!PDFCharIsNumeric(ch)) - bIsNumber = FALSE; - - if (!PositionIsInBounds()) - break; - - ch = m_pBuf[m_Pos++]; - - if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { - m_Pos--; - break; - } - } - - m_WordBuffer[m_WordSize] = 0; - if (bIsNumber) - return Number; - if (m_WordBuffer[0] == '/') - return Name; - - if (m_WordSize == 4) { - if (*(FX_DWORD*)m_WordBuffer == FXDWORD_TRUE) { - m_pLastObj = new CPDF_Boolean(TRUE); - return Others; - } - if (*(FX_DWORD*)m_WordBuffer == FXDWORD_NULL) { - m_pLastObj = new CPDF_Null; - return Others; - } - } else if (m_WordSize == 5) { - if (*(FX_DWORD*)m_WordBuffer == FXDWORD_FALS && m_WordBuffer[4] == 'e') { - m_pLastObj = new CPDF_Boolean(FALSE); - return Others; - } - } - return Keyword; -} - -void CPDF_StreamParser::SkipPathObject() { - FX_DWORD command_startpos = m_Pos; - if (!PositionIsInBounds()) - return; - - int ch = m_pBuf[m_Pos++]; - while (1) { - while (PDFCharIsWhitespace(ch)) { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - } - - if (!PDFCharIsNumeric(ch)) { - m_Pos = command_startpos; - return; - } - - while (1) { - while (!PDFCharIsWhitespace(ch)) { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - } - - while (PDFCharIsWhitespace(ch)) { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - } - - if (PDFCharIsNumeric(ch)) - continue; - - FX_DWORD op_startpos = m_Pos - 1; - while (!PDFCharIsWhitespace(ch) && !PDFCharIsDelimiter(ch)) { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - } - - if (IsPathOperator(&m_pBuf[op_startpos], m_Pos - 1 - op_startpos)) { - command_startpos = m_Pos; - break; - } - m_Pos = command_startpos; - return; - } - } -} - -CPDF_Object* CPDF_StreamParser::ReadNextObject(FX_BOOL bAllowNestedArray, - FX_BOOL bInArray) { - FX_BOOL bIsNumber; - GetNextWord(bIsNumber); - if (m_WordSize == 0) { - return NULL; - } - if (bIsNumber) { - m_WordBuffer[m_WordSize] = 0; - return new CPDF_Number(CFX_ByteStringC(m_WordBuffer, m_WordSize)); - } - int first_char = m_WordBuffer[0]; - if (first_char == '/') { - return new CPDF_Name( - PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); - } - if (first_char == '(') { - return new CPDF_String(ReadString(), FALSE); - } - if (first_char == '<') { - if (m_WordSize == 1) { - return new CPDF_String(ReadHexString(), TRUE); - } - CPDF_Dictionary* pDict = new CPDF_Dictionary; - while (1) { - GetNextWord(bIsNumber); - if (m_WordSize == 0) { - pDict->Release(); - return nullptr; - } - if (m_WordSize == 2 && m_WordBuffer[0] == '>') { - break; - } - if (m_WordBuffer[0] != '/') { - pDict->Release(); - return nullptr; - } - CFX_ByteString key = - PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1)); - CPDF_Object* pObj = ReadNextObject(TRUE); - if (!pObj) { - pDict->Release(); - return nullptr; - } - if (!key.IsEmpty()) { - pDict->SetAt(key, pObj); - } else { - pObj->Release(); - } - } - return pDict; - } - if (first_char == '[') { - if (!bAllowNestedArray && bInArray) { - return NULL; - } - CPDF_Array* pArray = new CPDF_Array; - while (1) { - CPDF_Object* pObj = ReadNextObject(bAllowNestedArray, TRUE); - if (pObj) { - pArray->Add(pObj); - continue; - } - - if (m_WordSize == 0 || m_WordBuffer[0] == ']') - break; - } - return pArray; - } - if (m_WordSize == 4) { - if (*(FX_DWORD*)m_WordBuffer == FXDWORD_TRUE) { - return new CPDF_Boolean(TRUE); - } - if (*(FX_DWORD*)m_WordBuffer == FXDWORD_NULL) { - return new CPDF_Null; - } - } else if (m_WordSize == 5) { - if (*(FX_DWORD*)m_WordBuffer == FXDWORD_FALS && m_WordBuffer[4] == 'e') { - return new CPDF_Boolean(FALSE); - } - } - return NULL; -} - -void CPDF_StreamParser::GetNextWord(FX_BOOL& bIsNumber) { - m_WordSize = 0; - bIsNumber = TRUE; - if (!PositionIsInBounds()) - return; - - int ch = m_pBuf[m_Pos++]; - while (1) { - while (PDFCharIsWhitespace(ch)) { - if (!PositionIsInBounds()) { - return; - } - ch = m_pBuf[m_Pos++]; - } - - if (ch != '%') - break; - - while (1) { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - if (PDFCharIsLineEnding(ch)) - break; - } - } - - if (PDFCharIsDelimiter(ch)) { - bIsNumber = FALSE; - m_WordBuffer[m_WordSize++] = ch; - if (ch == '/') { - while (1) { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { - m_Pos--; - return; - } - - if (m_WordSize < MAX_WORD_BUFFER) - m_WordBuffer[m_WordSize++] = ch; - } - } else if (ch == '<') { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - if (ch == '<') - m_WordBuffer[m_WordSize++] = ch; - else - m_Pos--; - } else if (ch == '>') { - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - if (ch == '>') - m_WordBuffer[m_WordSize++] = ch; - else - m_Pos--; - } - return; - } - - while (1) { - if (m_WordSize < MAX_WORD_BUFFER) - m_WordBuffer[m_WordSize++] = ch; - if (!PDFCharIsNumeric(ch)) - bIsNumber = FALSE; - - if (!PositionIsInBounds()) - return; - ch = m_pBuf[m_Pos++]; - if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { - m_Pos--; - break; - } - } -} - -CFX_ByteString CPDF_StreamParser::ReadString() { - if (!PositionIsInBounds()) - return CFX_ByteString(); - - uint8_t ch = m_pBuf[m_Pos++]; - CFX_ByteTextBuf buf; - int parlevel = 0; - int status = 0; - int iEscCode = 0; - while (1) { - switch (status) { - case 0: - if (ch == ')') { - if (parlevel == 0) { - if (buf.GetLength() > MAX_STRING_LENGTH) { - return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH); - } - return buf.GetByteString(); - } - parlevel--; - buf.AppendChar(')'); - } else if (ch == '(') { - parlevel++; - buf.AppendChar('('); - } else if (ch == '\\') { - status = 1; - } else { - buf.AppendChar((char)ch); - } - break; - case 1: - if (ch >= '0' && ch <= '7') { - iEscCode = FXSYS_toDecimalDigit(static_cast(ch)); - status = 2; - break; - } - if (ch == 'n') { - buf.AppendChar('\n'); - } else if (ch == 'r') { - buf.AppendChar('\r'); - } else if (ch == 't') { - buf.AppendChar('\t'); - } else if (ch == 'b') { - buf.AppendChar('\b'); - } else if (ch == 'f') { - buf.AppendChar('\f'); - } else if (ch == '\r') { - status = 4; - break; - } else if (ch == '\n') { - } else { - buf.AppendChar(ch); - } - status = 0; - break; - case 2: - if (ch >= '0' && ch <= '7') { - iEscCode = - iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); - status = 3; - } else { - buf.AppendChar(iEscCode); - status = 0; - continue; - } - break; - case 3: - if (ch >= '0' && ch <= '7') { - iEscCode = - iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); - buf.AppendChar(iEscCode); - status = 0; - } else { - buf.AppendChar(iEscCode); - status = 0; - continue; - } - break; - case 4: - status = 0; - if (ch != '\n') { - continue; - } - break; - } - if (!PositionIsInBounds()) - break; - - ch = m_pBuf[m_Pos++]; - } - if (PositionIsInBounds()) - ++m_Pos; - - if (buf.GetLength() > MAX_STRING_LENGTH) { - return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH); - } - return buf.GetByteString(); -} - -CFX_ByteString CPDF_StreamParser::ReadHexString() { - if (!PositionIsInBounds()) - return CFX_ByteString(); - - CFX_ByteTextBuf buf; - bool bFirst = true; - int code = 0; - while (PositionIsInBounds()) { - int ch = m_pBuf[m_Pos++]; - - if (ch == '>') - break; - - if (!std::isxdigit(ch)) - continue; - - int val = FXSYS_toHexDigit(ch); - if (bFirst) { - code = val * 16; - } else { - code += val; - buf.AppendByte((uint8_t)code); - } - bFirst = !bFirst; - } - if (!bFirst) - buf.AppendChar((char)code); - - if (buf.GetLength() > MAX_STRING_LENGTH) - return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH); - - return buf.GetByteString(); -} - -bool CPDF_StreamParser::PositionIsInBounds() const { - return m_Pos < m_Size; -} - -CPDF_ContentParser::CPDF_ContentParser() - : m_Status(Ready), - m_InternalStage(STAGE_GETCONTENT), - m_pObjectHolder(nullptr), - m_bForm(false), - m_pType3Char(nullptr), - m_pData(nullptr), - m_Size(0), - m_CurrentOffset(0) {} - -CPDF_ContentParser::~CPDF_ContentParser() { - if (!m_pSingleStream) - FX_Free(m_pData); -} - -void CPDF_ContentParser::Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions) { - if (m_Status != Ready || !pPage || !pPage->m_pDocument || - !pPage->m_pFormDict) { - m_Status = Done; - return; - } - m_pObjectHolder = pPage; - m_bForm = FALSE; - if (pOptions) { - m_Options = *pOptions; - } - m_Status = ToBeContinued; - m_InternalStage = STAGE_GETCONTENT; - m_CurrentOffset = 0; - - CPDF_Object* pContent = pPage->m_pFormDict->GetElementValue("Contents"); - if (!pContent) { - m_Status = Done; - return; - } - if (CPDF_Stream* pStream = pContent->AsStream()) { - m_nStreams = 0; - m_pSingleStream.reset(new CPDF_StreamAcc); - m_pSingleStream->LoadAllData(pStream, FALSE); - } else if (CPDF_Array* pArray = pContent->AsArray()) { - m_nStreams = pArray->GetCount(); - if (m_nStreams) - m_StreamArray.resize(m_nStreams); - else - m_Status = Done; - } else { - m_Status = Done; - } -} - -void CPDF_ContentParser::Start(CPDF_Form* pForm, - CPDF_AllStates* pGraphicStates, - CFX_Matrix* pParentMatrix, - CPDF_Type3Char* pType3Char, - CPDF_ParseOptions* pOptions, - int level) { - m_pType3Char = pType3Char; - m_pObjectHolder = pForm; - m_bForm = TRUE; - CFX_Matrix form_matrix = pForm->m_pFormDict->GetMatrixBy("Matrix"); - if (pGraphicStates) { - form_matrix.Concat(pGraphicStates->m_CTM); - } - CPDF_Array* pBBox = pForm->m_pFormDict->GetArrayBy("BBox"); - CFX_FloatRect form_bbox; - CPDF_Path ClipPath; - if (pBBox) { - form_bbox = pBBox->GetRect(); - ClipPath.New(); - ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right, - form_bbox.top); - ClipPath.Transform(&form_matrix); - if (pParentMatrix) { - ClipPath.Transform(pParentMatrix); - } - form_bbox.Transform(&form_matrix); - if (pParentMatrix) { - form_bbox.Transform(pParentMatrix); - } - } - CPDF_Dictionary* pResources = pForm->m_pFormDict->GetDictBy("Resources"); - m_pParser.reset(new CPDF_StreamContentParser( - pForm->m_pDocument, pForm->m_pPageResources, pForm->m_pResources, - pParentMatrix, pForm, pResources, &form_bbox, pOptions, pGraphicStates, - level)); - m_pParser->GetCurStates()->m_CTM = form_matrix; - m_pParser->GetCurStates()->m_ParentMatrix = form_matrix; - if (ClipPath.NotNull()) { - m_pParser->GetCurStates()->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING, - TRUE); - } - if (pForm->m_Transparency & PDFTRANS_GROUP) { - CPDF_GeneralStateData* pData = - m_pParser->GetCurStates()->m_GeneralState.GetModify(); - pData->m_BlendType = FXDIB_BLEND_NORMAL; - pData->m_StrokeAlpha = 1.0f; - pData->m_FillAlpha = 1.0f; - pData->m_pSoftMask = NULL; - } - m_nStreams = 0; - m_pSingleStream.reset(new CPDF_StreamAcc); - m_pSingleStream->LoadAllData(pForm->m_pFormStream, FALSE); - m_pData = (uint8_t*)m_pSingleStream->GetData(); - m_Size = m_pSingleStream->GetSize(); - m_Status = ToBeContinued; - m_InternalStage = STAGE_PARSE; - m_CurrentOffset = 0; -} - -void CPDF_ContentParser::Continue(IFX_Pause* pPause) { - int steps = 0; - while (m_Status == ToBeContinued) { - if (m_InternalStage == STAGE_GETCONTENT) { - if (m_CurrentOffset == m_nStreams) { - if (!m_StreamArray.empty()) { - FX_SAFE_DWORD safeSize = 0; - for (const auto& stream : m_StreamArray) { - safeSize += stream->GetSize(); - safeSize += 1; - } - if (!safeSize.IsValid()) { - m_Status = Done; - return; - } - m_Size = safeSize.ValueOrDie(); - m_pData = FX_Alloc(uint8_t, m_Size); - FX_DWORD pos = 0; - for (const auto& stream : m_StreamArray) { - FXSYS_memcpy(m_pData + pos, stream->GetData(), stream->GetSize()); - pos += stream->GetSize(); - m_pData[pos++] = ' '; - } - m_StreamArray.clear(); - } else { - m_pData = (uint8_t*)m_pSingleStream->GetData(); - m_Size = m_pSingleStream->GetSize(); - } - m_InternalStage = STAGE_PARSE; - m_CurrentOffset = 0; - } else { - CPDF_Array* pContent = - m_pObjectHolder->m_pFormDict->GetArrayBy("Contents"); - m_StreamArray[m_CurrentOffset].reset(new CPDF_StreamAcc); - CPDF_Stream* pStreamObj = ToStream( - pContent ? pContent->GetElementValue(m_CurrentOffset) : nullptr); - m_StreamArray[m_CurrentOffset]->LoadAllData(pStreamObj, FALSE); - m_CurrentOffset++; - } - } - if (m_InternalStage == STAGE_PARSE) { - if (!m_pParser) { - m_pParser.reset(new CPDF_StreamContentParser( - m_pObjectHolder->m_pDocument, m_pObjectHolder->m_pPageResources, - nullptr, nullptr, m_pObjectHolder, m_pObjectHolder->m_pResources, - &m_pObjectHolder->m_BBox, &m_Options, nullptr, 0)); - m_pParser->GetCurStates()->m_ColorState.GetModify()->Default(); - } - if (m_CurrentOffset >= m_Size) { - m_InternalStage = STAGE_CHECKCLIP; - } else { - m_CurrentOffset += - m_pParser->Parse(m_pData + m_CurrentOffset, - m_Size - m_CurrentOffset, PARSE_STEP_LIMIT); - } - } - if (m_InternalStage == STAGE_CHECKCLIP) { - if (m_pType3Char) { - m_pType3Char->m_bColored = m_pParser->IsColored(); - m_pType3Char->m_Width = - FXSYS_round(m_pParser->GetType3Data()[0] * 1000); - m_pType3Char->m_BBox.left = - FXSYS_round(m_pParser->GetType3Data()[2] * 1000); - m_pType3Char->m_BBox.bottom = - FXSYS_round(m_pParser->GetType3Data()[3] * 1000); - m_pType3Char->m_BBox.right = - FXSYS_round(m_pParser->GetType3Data()[4] * 1000); - m_pType3Char->m_BBox.top = - FXSYS_round(m_pParser->GetType3Data()[5] * 1000); - } - for (auto& pObj : *m_pObjectHolder->GetPageObjectList()) { - if (pObj->m_ClipPath.IsNull()) { - continue; - } - if (pObj->m_ClipPath.GetPathCount() != 1) { - continue; - } - if (pObj->m_ClipPath.GetTextCount()) { - continue; - } - CPDF_Path ClipPath = pObj->m_ClipPath.GetPath(0); - if (!ClipPath.IsRect() || pObj->IsShading()) { - continue; - } - CFX_FloatRect old_rect(ClipPath.GetPointX(0), ClipPath.GetPointY(0), - ClipPath.GetPointX(2), ClipPath.GetPointY(2)); - CFX_FloatRect obj_rect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, - pObj->m_Top); - if (old_rect.Contains(obj_rect)) { - pObj->m_ClipPath.SetNull(); - } - } - m_Status = Done; - return; - } - steps++; - if (pPause && pPause->NeedToPauseNow()) { - break; - } - } -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp deleted file mode 100644 index 846166521d..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/src/fpdfapi/fpdf_page/pageint.h" -#include "testing/gtest/include/gtest/gtest.h" - -TEST(fpdf_page_parser_old, ReadHexString) { - { - // Position out of bounds. - uint8_t data[] = "12ab>"; - CPDF_StreamParser parser(data, 5); - parser.SetPos(6); - EXPECT_EQ("", parser.ReadHexString()); - } - - { - // Regular conversion. - uint8_t data[] = "1A2b>abcd"; - CPDF_StreamParser parser(data, 5); - EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); - EXPECT_EQ(5, parser.GetPos()); - } - - { - // Missing ending > - uint8_t data[] = "1A2b"; - CPDF_StreamParser parser(data, 5); - EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); - EXPECT_EQ(5, parser.GetPos()); - } - - { - // Uneven number of bytes. - uint8_t data[] = "1A2>asdf"; - CPDF_StreamParser parser(data, 5); - EXPECT_EQ("\x1a\x20", parser.ReadHexString()); - EXPECT_EQ(4, parser.GetPos()); - } - - { - uint8_t data[] = ">"; - CPDF_StreamParser parser(data, 5); - EXPECT_EQ("", parser.ReadHexString()); - EXPECT_EQ(1, parser.GetPos()); - } -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp deleted file mode 100644 index 75d7d2a362..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" - -CPDF_PathObject::CPDF_PathObject() {} - -CPDF_PathObject::~CPDF_PathObject() {} - -CPDF_PathObject* CPDF_PathObject::Clone() const { - CPDF_PathObject* obj = new CPDF_PathObject; - obj->CopyData(this); - - obj->m_Path = m_Path; - obj->m_FillType = m_FillType; - obj->m_bStroke = m_bStroke; - obj->m_Matrix = m_Matrix; - return obj; -} - -void CPDF_PathObject::Transform(const CFX_Matrix& matrix) { - m_Matrix.Concat(matrix); - CalcBoundingBox(); -} - -void CPDF_PathObject::CalcBoundingBox() { - if (m_Path.IsNull()) { - return; - } - CFX_FloatRect rect; - FX_FLOAT width = m_GraphState.GetObject()->m_LineWidth; - if (m_bStroke && width != 0) { - rect = m_Path.GetBoundingBox(width, m_GraphState.GetObject()->m_MiterLimit); - } else { - rect = m_Path.GetBoundingBox(); - } - rect.Transform(&m_Matrix); - if (width == 0 && m_bStroke) { - rect.left += -0.5f; - rect.right += 0.5f; - rect.bottom += -0.5f; - rect.top += 0.5f; - } - m_Left = rect.left; - m_Right = rect.right; - m_Top = rect.top; - m_Bottom = rect.bottom; -} diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp deleted file mode 100644 index 0db1c403a4..0000000000 --- a/core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp +++ /dev/null @@ -1,320 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_page.h" - -namespace { - -const int kSingleCoordinatePair = 1; -const int kTensorCoordinatePairs = 16; -const int kCoonsCoordinatePairs = 12; - -const int kSingleColorPerPatch = 1; -const int kQuadColorsPerPatch = 4; - -ShadingType ToShadingType(int type) { - return (type > static_cast(kInvalidShading) && - type < static_cast(kMaxShading)) - ? static_cast(type) - : kInvalidShading; -} - -} // namespace - -CPDF_Pattern::CPDF_Pattern(PatternType type, - CPDF_Document* pDoc, - CPDF_Object* pObj, - const CFX_Matrix* pParentMatrix) - : m_PatternType(type), - m_pDocument(pDoc), - m_pPatternObj(pObj), - m_bForceClear(FALSE) { - if (pParentMatrix) - m_ParentMatrix = *pParentMatrix; -} -CPDF_Pattern::~CPDF_Pattern() {} -CPDF_TilingPattern::CPDF_TilingPattern(CPDF_Document* pDoc, - CPDF_Object* pPatternObj, - const CFX_Matrix* parentMatrix) - : CPDF_Pattern(TILING, pDoc, pPatternObj, parentMatrix) { - CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); - m_Pattern2Form = pDict->GetMatrixBy("Matrix"); - m_bColored = pDict->GetIntegerBy("PaintType") == 1; - if (parentMatrix) { - m_Pattern2Form.Concat(*parentMatrix); - } - m_pForm = NULL; -} -CPDF_TilingPattern::~CPDF_TilingPattern() { - delete m_pForm; - m_pForm = NULL; -} -FX_BOOL CPDF_TilingPattern::Load() { - if (m_pForm) - return TRUE; - - CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); - if (!pDict) - return FALSE; - - m_bColored = pDict->GetIntegerBy("PaintType") == 1; - m_XStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumberBy("XStep")); - m_YStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumberBy("YStep")); - - CPDF_Stream* pStream = m_pPatternObj->AsStream(); - if (!pStream) - return FALSE; - - m_pForm = new CPDF_Form(m_pDocument, NULL, pStream); - m_pForm->ParseContent(NULL, &m_ParentMatrix, NULL, NULL); - m_BBox = pDict->GetRectBy("BBox"); - return TRUE; -} -CPDF_ShadingPattern::CPDF_ShadingPattern(CPDF_Document* pDoc, - CPDF_Object* pPatternObj, - FX_BOOL bShading, - const CFX_Matrix* parentMatrix) - : CPDF_Pattern(SHADING, - pDoc, - bShading ? nullptr : pPatternObj, - parentMatrix), - m_ShadingType(kInvalidShading), - m_bShadingObj(bShading), - m_pShadingObj(pPatternObj), - m_pCS(nullptr), - m_pCountedCS(nullptr), - m_nFuncs(0) { - if (!bShading) { - CPDF_Dictionary* pDict = m_pPatternObj->GetDict(); - m_Pattern2Form = pDict->GetMatrixBy("Matrix"); - m_pShadingObj = pDict->GetElementValue("Shading"); - if (parentMatrix) - m_Pattern2Form.Concat(*parentMatrix); - } - for (int i = 0; i < FX_ArraySize(m_pFunctions); ++i) - m_pFunctions[i] = nullptr; -} - -CPDF_ShadingPattern::~CPDF_ShadingPattern() { - for (int i = 0; i < m_nFuncs; ++i) - delete m_pFunctions[i]; - - CPDF_ColorSpace* pCS = m_pCountedCS ? m_pCountedCS->get() : NULL; - if (pCS && m_pDocument) - m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); -} - -FX_BOOL CPDF_ShadingPattern::Load() { - if (m_ShadingType != kInvalidShading) - return TRUE; - - CPDF_Dictionary* pShadingDict = - m_pShadingObj ? m_pShadingObj->GetDict() : NULL; - if (!pShadingDict) { - return FALSE; - } - if (m_nFuncs) { - for (int i = 0; i < m_nFuncs; i++) - delete m_pFunctions[i]; - m_nFuncs = 0; - } - CPDF_Object* pFunc = pShadingDict->GetElementValue("Function"); - if (pFunc) { - if (CPDF_Array* pArray = pFunc->AsArray()) { - m_nFuncs = std::min(pArray->GetCount(), 4); - - for (int i = 0; i < m_nFuncs; i++) { - m_pFunctions[i] = CPDF_Function::Load(pArray->GetElementValue(i)); - } - } else { - m_pFunctions[0] = CPDF_Function::Load(pFunc); - m_nFuncs = 1; - } - } - CPDF_Object* pCSObj = pShadingDict->GetElementValue("ColorSpace"); - if (!pCSObj) { - return FALSE; - } - CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData(); - m_pCS = pDocPageData->GetColorSpace(pCSObj, NULL); - if (m_pCS) { - m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray()); - } - - m_ShadingType = ToShadingType(pShadingDict->GetIntegerBy("ShadingType")); - - // We expect to have a stream if our shading type is a mesh. - if (IsMeshShading() && !ToStream(m_pShadingObj)) - return FALSE; - - return TRUE; -} -FX_BOOL CPDF_MeshStream::Load(CPDF_Stream* pShadingStream, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS) { - m_Stream.LoadAllData(pShadingStream); - m_BitStream.Init(m_Stream.GetData(), m_Stream.GetSize()); - m_pFuncs = pFuncs; - m_nFuncs = nFuncs; - m_pCS = pCS; - CPDF_Dictionary* pDict = pShadingStream->GetDict(); - m_nCoordBits = pDict->GetIntegerBy("BitsPerCoordinate"); - m_nCompBits = pDict->GetIntegerBy("BitsPerComponent"); - m_nFlagBits = pDict->GetIntegerBy("BitsPerFlag"); - if (!m_nCoordBits || !m_nCompBits) { - return FALSE; - } - FX_DWORD nComps = pCS->CountComponents(); - if (nComps > 8) { - return FALSE; - } - m_nComps = nFuncs ? 1 : nComps; - if (((int)m_nComps < 0) || m_nComps > 8) { - return FALSE; - } - m_CoordMax = m_nCoordBits == 32 ? -1 : (1 << m_nCoordBits) - 1; - m_CompMax = (1 << m_nCompBits) - 1; - CPDF_Array* pDecode = pDict->GetArrayBy("Decode"); - if (!pDecode || pDecode->GetCount() != 4 + m_nComps * 2) { - return FALSE; - } - m_xmin = pDecode->GetNumberAt(0); - m_xmax = pDecode->GetNumberAt(1); - m_ymin = pDecode->GetNumberAt(2); - m_ymax = pDecode->GetNumberAt(3); - for (FX_DWORD i = 0; i < m_nComps; i++) { - m_ColorMin[i] = pDecode->GetNumberAt(i * 2 + 4); - m_ColorMax[i] = pDecode->GetNumberAt(i * 2 + 5); - } - return TRUE; -} -FX_DWORD CPDF_MeshStream::GetFlag() { - return m_BitStream.GetBits(m_nFlagBits) & 0x03; -} -void CPDF_MeshStream::GetCoords(FX_FLOAT& x, FX_FLOAT& y) { - if (m_nCoordBits == 32) { - x = m_xmin + (FX_FLOAT)(m_BitStream.GetBits(m_nCoordBits) * - (m_xmax - m_xmin) / (double)m_CoordMax); - y = m_ymin + (FX_FLOAT)(m_BitStream.GetBits(m_nCoordBits) * - (m_ymax - m_ymin) / (double)m_CoordMax); - } else { - x = m_xmin + - m_BitStream.GetBits(m_nCoordBits) * (m_xmax - m_xmin) / m_CoordMax; - y = m_ymin + - m_BitStream.GetBits(m_nCoordBits) * (m_ymax - m_ymin) / m_CoordMax; - } -} -void CPDF_MeshStream::GetColor(FX_FLOAT& r, FX_FLOAT& g, FX_FLOAT& b) { - FX_DWORD i; - FX_FLOAT color_value[8]; - for (i = 0; i < m_nComps; i++) { - color_value[i] = m_ColorMin[i] + - m_BitStream.GetBits(m_nCompBits) * - (m_ColorMax[i] - m_ColorMin[i]) / m_CompMax; - } - if (m_nFuncs) { - static const int kMaxResults = 8; - FX_FLOAT result[kMaxResults]; - int nResults; - FXSYS_memset(result, 0, sizeof(result)); - for (FX_DWORD i = 0; i < m_nFuncs; i++) { - if (m_pFuncs[i] && m_pFuncs[i]->CountOutputs() <= kMaxResults) { - m_pFuncs[i]->Call(color_value, 1, result, nResults); - } - } - m_pCS->GetRGB(result, r, g, b); - } else { - m_pCS->GetRGB(color_value, r, g, b); - } -} -FX_DWORD CPDF_MeshStream::GetVertex(CPDF_MeshVertex& vertex, - CFX_Matrix* pObject2Bitmap) { - FX_DWORD flag = GetFlag(); - GetCoords(vertex.x, vertex.y); - pObject2Bitmap->Transform(vertex.x, vertex.y); - GetColor(vertex.r, vertex.g, vertex.b); - m_BitStream.ByteAlign(); - return flag; -} -FX_BOOL CPDF_MeshStream::GetVertexRow(CPDF_MeshVertex* vertex, - int count, - CFX_Matrix* pObject2Bitmap) { - for (int i = 0; i < count; i++) { - if (m_BitStream.IsEOF()) { - return FALSE; - } - GetCoords(vertex[i].x, vertex[i].y); - pObject2Bitmap->Transform(vertex[i].x, vertex[i].y); - GetColor(vertex[i].r, vertex[i].g, vertex[i].b); - m_BitStream.ByteAlign(); - } - return TRUE; -} - -CFX_FloatRect GetShadingBBox(CPDF_Stream* pStream, - ShadingType type, - const CFX_Matrix* pMatrix, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS) { - if (!pStream || !pStream->IsStream() || !pFuncs || !pCS) - return CFX_FloatRect(0, 0, 0, 0); - - CPDF_MeshStream stream; - if (!stream.Load(pStream, pFuncs, nFuncs, pCS)) - return CFX_FloatRect(0, 0, 0, 0); - - CFX_FloatRect rect; - bool bStarted = false; - bool bGouraud = type == kFreeFormGouraudTriangleMeshShading || - type == kLatticeFormGouraudTriangleMeshShading; - - int point_count = kSingleCoordinatePair; - if (type == kTensorProductPatchMeshShading) - point_count = kTensorCoordinatePairs; - else if (type == kCoonsPatchMeshShading) - point_count = kCoonsCoordinatePairs; - - int color_count = kSingleColorPerPatch; - if (type == kCoonsPatchMeshShading || type == kTensorProductPatchMeshShading) - color_count = kQuadColorsPerPatch; - - while (!stream.m_BitStream.IsEOF()) { - FX_DWORD flag = 0; - if (type != kLatticeFormGouraudTriangleMeshShading) - flag = stream.GetFlag(); - - if (!bGouraud && flag) { - point_count -= 4; - color_count -= 2; - } - - for (int i = 0; i < point_count; i++) { - FX_FLOAT x, y; - stream.GetCoords(x, y); - if (bStarted) { - rect.UpdateRect(x, y); - } else { - rect.InitRect(x, y); - bStarted = TRUE; - } - } - stream.m_BitStream.SkipBits(stream.m_nComps * stream.m_nCompBits * - color_count); - if (bGouraud) - stream.m_BitStream.ByteAlign(); - } - rect.Transform(pMatrix); - return rect; -} diff --git a/core/src/fpdfapi/fpdf_page/pageint.h b/core/src/fpdfapi/fpdf_page/pageint.h deleted file mode 100644 index 517c0a4055..0000000000 --- a/core/src/fpdfapi/fpdf_page/pageint.h +++ /dev/null @@ -1,459 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ -#define CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ - -#include -#include -#include -#include - -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" - -class CPDF_AllStates; -class CPDF_ParseOptions; -class CPDF_IccProfile; - -#define PARSE_STEP_LIMIT 100 - -class CPDF_StreamParser { - public: - enum SyntaxType { EndOfData, Number, Keyword, Name, Others }; - - CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize); - ~CPDF_StreamParser(); - - CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc, - CPDF_Dictionary* pDict, - CPDF_Object* pCSObj, - FX_BOOL bDecode); - SyntaxType ParseNextElement(); - uint8_t* GetWordBuf() { return m_WordBuffer; } - FX_DWORD GetWordSize() const { return m_WordSize; } - CPDF_Object* GetObject() { - CPDF_Object* pObj = m_pLastObj; - m_pLastObj = NULL; - return pObj; - } - FX_DWORD GetPos() const { return m_Pos; } - void SetPos(FX_DWORD pos) { m_Pos = pos; } - CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE, - FX_BOOL bInArray = FALSE); - void SkipPathObject(); - - protected: - friend class fpdf_page_parser_old_ReadHexString_Test; - - void GetNextWord(FX_BOOL& bIsNumber); - CFX_ByteString ReadString(); - CFX_ByteString ReadHexString(); - const uint8_t* m_pBuf; - - // Length in bytes of m_pBuf. - FX_DWORD m_Size; - - // Current byte position within m_pBuf. - FX_DWORD m_Pos; - - uint8_t m_WordBuffer[256]; - FX_DWORD m_WordSize; - CPDF_Object* m_pLastObj; - - private: - bool PositionIsInBounds() const; -}; - -#define PARAM_BUF_SIZE 16 -struct ContentParam { - enum Type { OBJECT = 0, NUMBER, NAME }; - Type m_Type; - union { - struct { - FX_BOOL m_bInteger; - union { - int m_Integer; - FX_FLOAT m_Float; - }; - } m_Number; - CPDF_Object* m_pObject; - struct { - int m_Len; - char m_Buffer[32]; - } m_Name; - }; -}; -#define _FPDF_MAX_FORM_LEVEL_ 30 -#define _FPDF_MAX_TYPE3_FORM_LEVEL_ 4 -#define _FPDF_MAX_OBJECT_STACK_SIZE_ 512 -class CPDF_StreamContentParser { - public: - CPDF_StreamContentParser(CPDF_Document* pDoc, - CPDF_Dictionary* pPageResources, - CPDF_Dictionary* pParentResources, - CFX_Matrix* pmtContentToUser, - CPDF_PageObjectHolder* pObjectHolder, - CPDF_Dictionary* pResources, - CFX_FloatRect* pBBox, - CPDF_ParseOptions* pOptions, - CPDF_AllStates* pAllStates, - int level); - ~CPDF_StreamContentParser(); - - CPDF_PageObjectHolder* GetPageObjectHolder() const { return m_pObjectHolder; } - CPDF_AllStates* GetCurStates() const { return m_pCurStates.get(); } - FX_BOOL IsColored() const { return m_bColored; } - const FX_FLOAT* GetType3Data() const { return m_Type3Data; } - - void AddNumberParam(const FX_CHAR* str, int len); - void AddObjectParam(CPDF_Object* pObj); - void AddNameParam(const FX_CHAR* name, int size); - int GetNextParamPos(); - void ClearAllParams(); - CPDF_Object* GetObject(FX_DWORD index); - CFX_ByteString GetString(FX_DWORD index); - FX_FLOAT GetNumber(FX_DWORD index); - FX_FLOAT GetNumber16(FX_DWORD index); - int GetInteger(FX_DWORD index) { return (int32_t)(GetNumber(index)); } - void OnOperator(const FX_CHAR* op); - void BigCaseCaller(int index); - FX_DWORD GetParsePos() { return m_pSyntax->GetPos(); } - void AddTextObject(CFX_ByteString* pText, - FX_FLOAT fInitKerning, - FX_FLOAT* pKerning, - int count); - - void ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y); - void ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y); - void OnChangeTextMatrix(); - FX_DWORD Parse(const uint8_t* pData, FX_DWORD dwSize, FX_DWORD max_cost); - void ParsePathObject(); - void AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag); - void AddPathRect(FX_FLOAT x, FX_FLOAT y, FX_FLOAT w, FX_FLOAT h); - void AddPathObject(int FillType, FX_BOOL bStroke); - CPDF_ImageObject* AddImage(CPDF_Stream* pStream, - CPDF_Image* pImage, - FX_BOOL bInline); - void AddDuplicateImage(); - void AddForm(CPDF_Stream* pStream); - void SetGraphicStates(CPDF_PageObject* pObj, - FX_BOOL bColor, - FX_BOOL bText, - FX_BOOL bGraph); - void SaveStates(CPDF_AllStates* pState); - void RestoreStates(CPDF_AllStates* pState); - CPDF_Font* FindFont(const CFX_ByteString& name); - CPDF_ColorSpace* FindColorSpace(const CFX_ByteString& name); - CPDF_Pattern* FindPattern(const CFX_ByteString& name, FX_BOOL bShading); - CPDF_Object* FindResourceObj(const CFX_ByteStringC& type, - const CFX_ByteString& name); - - protected: - using OpCodes = - std::unordered_map; - static OpCodes InitializeOpCodes(); - - void Handle_CloseFillStrokePath(); - void Handle_FillStrokePath(); - void Handle_CloseEOFillStrokePath(); - void Handle_EOFillStrokePath(); - void Handle_BeginMarkedContent_Dictionary(); - void Handle_BeginImage(); - void Handle_BeginMarkedContent(); - void Handle_BeginText(); - void Handle_CurveTo_123(); - void Handle_ConcatMatrix(); - void Handle_SetColorSpace_Fill(); - void Handle_SetColorSpace_Stroke(); - void Handle_SetDash(); - void Handle_SetCharWidth(); - void Handle_SetCachedDevice(); - void Handle_ExecuteXObject(); - void Handle_MarkPlace_Dictionary(); - void Handle_EndImage(); - void Handle_EndMarkedContent(); - void Handle_EndText(); - void Handle_FillPath(); - void Handle_FillPathOld(); - void Handle_EOFillPath(); - void Handle_SetGray_Fill(); - void Handle_SetGray_Stroke(); - void Handle_SetExtendGraphState(); - void Handle_ClosePath(); - void Handle_SetFlat(); - void Handle_BeginImageData(); - void Handle_SetLineJoin(); - void Handle_SetLineCap(); - void Handle_SetCMYKColor_Fill(); - void Handle_SetCMYKColor_Stroke(); - void Handle_LineTo(); - void Handle_MoveTo(); - void Handle_SetMiterLimit(); - void Handle_MarkPlace(); - void Handle_EndPath(); - void Handle_SaveGraphState(); - void Handle_RestoreGraphState(); - void Handle_Rectangle(); - void Handle_SetRGBColor_Fill(); - void Handle_SetRGBColor_Stroke(); - void Handle_SetRenderIntent(); - void Handle_CloseStrokePath(); - void Handle_StrokePath(); - void Handle_SetColor_Fill(); - void Handle_SetColor_Stroke(); - void Handle_SetColorPS_Fill(); - void Handle_SetColorPS_Stroke(); - void Handle_ShadeFill(); - void Handle_SetCharSpace(); - void Handle_MoveTextPoint(); - void Handle_MoveTextPoint_SetLeading(); - void Handle_SetFont(); - void Handle_ShowText(); - void Handle_ShowText_Positioning(); - void Handle_SetTextLeading(); - void Handle_SetTextMatrix(); - void Handle_SetTextRenderMode(); - void Handle_SetTextRise(); - void Handle_SetWordSpace(); - void Handle_SetHorzScale(); - void Handle_MoveToNextLine(); - void Handle_CurveTo_23(); - void Handle_SetLineWidth(); - void Handle_Clip(); - void Handle_EOClip(); - void Handle_CurveTo_13(); - void Handle_NextLineShowText(); - void Handle_NextLineShowText_Space(); - void Handle_Invalid(); - - CPDF_Document* const m_pDocument; - CPDF_Dictionary* m_pPageResources; - CPDF_Dictionary* m_pParentResources; - CPDF_Dictionary* m_pResources; - CPDF_PageObjectHolder* m_pObjectHolder; - int m_Level; - CFX_Matrix m_mtContentToUser; - CFX_FloatRect m_BBox; - CPDF_ParseOptions m_Options; - ContentParam m_ParamBuf[PARAM_BUF_SIZE]; - FX_DWORD m_ParamStartPos; - FX_DWORD m_ParamCount; - CPDF_StreamParser* m_pSyntax; - std::unique_ptr m_pCurStates; - CPDF_ContentMark m_CurContentMark; - CFX_ArrayTemplate m_ClipTextList; - CPDF_TextObject* m_pLastTextObject; - FX_FLOAT m_DefFontSize; - FX_PATHPOINT* m_pPathPoints; - int m_PathPointCount; - int m_PathAllocSize; - FX_FLOAT m_PathStartX; - FX_FLOAT m_PathStartY; - FX_FLOAT m_PathCurrentX; - FX_FLOAT m_PathCurrentY; - int m_PathClipType; - CFX_ByteString m_LastImageName; - CPDF_Image* m_pLastImage; - CFX_BinaryBuf m_LastImageDict; - CFX_BinaryBuf m_LastImageData; - CPDF_Dictionary* m_pLastImageDict; - CPDF_Dictionary* m_pLastCloneImageDict; - FX_BOOL m_bReleaseLastDict; - FX_BOOL m_bSameLastDict; - FX_BOOL m_bColored; - FX_FLOAT m_Type3Data[6]; - FX_BOOL m_bResourceMissing; - std::vector> m_StateStack; -}; -class CPDF_ContentParser { - public: - enum ParseStatus { Ready, ToBeContinued, Done }; - - CPDF_ContentParser(); - ~CPDF_ContentParser(); - - ParseStatus GetStatus() const { return m_Status; } - void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions); - void Start(CPDF_Form* pForm, - CPDF_AllStates* pGraphicStates, - CFX_Matrix* pParentMatrix, - CPDF_Type3Char* pType3Char, - CPDF_ParseOptions* pOptions, - int level); - void Continue(IFX_Pause* pPause); - - private: - enum InternalStage { - STAGE_GETCONTENT = 1, - STAGE_PARSE, - STAGE_CHECKCLIP, - }; - - ParseStatus m_Status; - InternalStage m_InternalStage; - CPDF_PageObjectHolder* m_pObjectHolder; - FX_BOOL m_bForm; - CPDF_ParseOptions m_Options; - CPDF_Type3Char* m_pType3Char; - FX_DWORD m_nStreams; - std::unique_ptr m_pSingleStream; - std::vector> m_StreamArray; - uint8_t* m_pData; - FX_DWORD m_Size; - FX_DWORD m_CurrentOffset; - std::unique_ptr m_pParser; -}; -class CPDF_AllStates : public CPDF_GraphicStates { - public: - CPDF_AllStates(); - ~CPDF_AllStates(); - void Copy(const CPDF_AllStates& src); - void ProcessExtGS(CPDF_Dictionary* pGS, CPDF_StreamContentParser* pParser); - void SetLineDash(CPDF_Array*, FX_FLOAT, FX_FLOAT scale); - CFX_Matrix m_TextMatrix, m_CTM, m_ParentMatrix; - FX_FLOAT m_TextX, m_TextY, m_TextLineX, m_TextLineY; - FX_FLOAT m_TextLeading, m_TextRise, m_TextHorzScale; -}; - -class CPDF_DocPageData { - public: - explicit CPDF_DocPageData(CPDF_Document* pPDFDoc); - ~CPDF_DocPageData(); - - void Clear(FX_BOOL bRelease = FALSE); - CPDF_Font* GetFont(CPDF_Dictionary* pFontDict, FX_BOOL findOnly); - CPDF_Font* GetStandardFont(const CFX_ByteStringC& fontName, - CPDF_FontEncoding* pEncoding); - void ReleaseFont(CPDF_Dictionary* pFontDict); - CPDF_ColorSpace* GetColorSpace(CPDF_Object* pCSObj, - const CPDF_Dictionary* pResources); - CPDF_ColorSpace* GetCopiedColorSpace(CPDF_Object* pCSObj); - void ReleaseColorSpace(CPDF_Object* pColorSpace); - CPDF_Pattern* GetPattern(CPDF_Object* pPatternObj, - FX_BOOL bShading, - const CFX_Matrix* matrix); - void ReleasePattern(CPDF_Object* pPatternObj); - CPDF_Image* GetImage(CPDF_Object* pImageStream); - void ReleaseImage(CPDF_Object* pImageStream); - CPDF_IccProfile* GetIccProfile(CPDF_Stream* pIccProfileStream); - void ReleaseIccProfile(CPDF_IccProfile* pIccProfile); - CPDF_StreamAcc* GetFontFileStreamAcc(CPDF_Stream* pFontStream); - void ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, - FX_BOOL bForce = FALSE); - FX_BOOL IsForceClear() const { return m_bForceClear; } - CPDF_CountedColorSpace* FindColorSpacePtr(CPDF_Object* pCSObj) const; - CPDF_CountedPattern* FindPatternPtr(CPDF_Object* pPatternObj) const; - - private: - using CPDF_CountedFont = CPDF_CountedObject; - using CPDF_CountedIccProfile = CPDF_CountedObject; - using CPDF_CountedImage = CPDF_CountedObject; - using CPDF_CountedStreamAcc = CPDF_CountedObject; - - using CPDF_ColorSpaceMap = std::map; - using CPDF_FontFileMap = std::map; - using CPDF_FontMap = std::map; - using CPDF_IccProfileMap = std::map; - using CPDF_ImageMap = std::map; - using CPDF_PatternMap = std::map; - - CPDF_Document* const m_pPDFDoc; - FX_BOOL m_bForceClear; - std::map m_HashProfileMap; - CPDF_ColorSpaceMap m_ColorSpaceMap; - CPDF_FontFileMap m_FontFileMap; - CPDF_FontMap m_FontMap; - CPDF_IccProfileMap m_IccProfileMap; - CPDF_ImageMap m_ImageMap; - CPDF_PatternMap m_PatternMap; -}; - -class CPDF_Function { - public: - static CPDF_Function* Load(CPDF_Object* pFuncObj); - virtual ~CPDF_Function(); - FX_BOOL Call(FX_FLOAT* inputs, - int ninputs, - FX_FLOAT* results, - int& nresults) const; - int CountInputs() { return m_nInputs; } - int CountOutputs() { return m_nOutputs; } - - protected: - CPDF_Function(); - int m_nInputs, m_nOutputs; - FX_FLOAT* m_pDomains; - FX_FLOAT* m_pRanges; - FX_BOOL Init(CPDF_Object* pObj); - virtual FX_BOOL v_Init(CPDF_Object* pObj) = 0; - virtual FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const = 0; -}; -class CPDF_IccProfile { - public: - CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize); - ~CPDF_IccProfile(); - FX_DWORD GetComponents() const { return m_nSrcComponents; } - FX_BOOL m_bsRGB; - void* m_pTransform; - - private: - FX_DWORD m_nSrcComponents; -}; - -class CPDF_DeviceCS : public CPDF_ColorSpace { - public: - CPDF_DeviceCS(CPDF_Document* pDoc, int family); - - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - FX_BOOL SetRGB(FX_FLOAT* pBuf, - FX_FLOAT R, - FX_FLOAT G, - FX_FLOAT B) const override; - FX_BOOL v_GetCMYK(FX_FLOAT* pBuf, - FX_FLOAT& c, - FX_FLOAT& m, - FX_FLOAT& y, - FX_FLOAT& k) const override; - FX_BOOL v_SetCMYK(FX_FLOAT* pBuf, - FX_FLOAT c, - FX_FLOAT m, - FX_FLOAT y, - FX_FLOAT k) const override; - void TranslateImageLine(uint8_t* pDestBuf, - const uint8_t* pSrcBuf, - int pixels, - int image_width, - int image_height, - FX_BOOL bTransMask = FALSE) const override; -}; - -class CPDF_PatternCS : public CPDF_ColorSpace { - public: - explicit CPDF_PatternCS(CPDF_Document* pDoc) - : CPDF_ColorSpace(pDoc, PDFCS_PATTERN, 1), - m_pBaseCS(nullptr), - m_pCountedBaseCS(nullptr) {} - ~CPDF_PatternCS() override; - FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; - FX_BOOL GetRGB(FX_FLOAT* pBuf, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) const override; - CPDF_ColorSpace* GetBaseCS() const override; - - private: - CPDF_ColorSpace* m_pBaseCS; - CPDF_CountedColorSpace* m_pCountedBaseCS; -}; - -void PDF_ReplaceAbbr(CPDF_Object* pObj); -bool IsPathOperator(const uint8_t* buf, size_t len); - -#endif // CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ diff --git a/core/src/fpdfapi/fpdf_parser/cfdf_document.cpp b/core/src/fpdfapi/fpdf_parser/cfdf_document.cpp deleted file mode 100644 index 2d1a04f081..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cfdf_document.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cfdf_document.h" - -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/fpdf_serial.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" - -CFDF_Document::CFDF_Document() : CPDF_IndirectObjectHolder(NULL) { - m_pRootDict = NULL; - m_pFile = NULL; - m_bOwnFile = FALSE; -} -CFDF_Document::~CFDF_Document() { - if (m_bOwnFile && m_pFile) { - m_pFile->Release(); - } -} -CFDF_Document* CFDF_Document::CreateNewDoc() { - CFDF_Document* pDoc = new CFDF_Document; - pDoc->m_pRootDict = new CPDF_Dictionary; - pDoc->AddIndirectObject(pDoc->m_pRootDict); - CPDF_Dictionary* pFDFDict = new CPDF_Dictionary; - pDoc->m_pRootDict->SetAt("FDF", pFDFDict); - return pDoc; -} -CFDF_Document* CFDF_Document::ParseFile(IFX_FileRead* pFile, FX_BOOL bOwnFile) { - if (!pFile) { - return NULL; - } - CFDF_Document* pDoc = new CFDF_Document; - pDoc->ParseStream(pFile, bOwnFile); - if (!pDoc->m_pRootDict) { - delete pDoc; - return NULL; - } - return pDoc; -} -CFDF_Document* CFDF_Document::ParseMemory(const uint8_t* pData, FX_DWORD size) { - return CFDF_Document::ParseFile(FX_CreateMemoryStream((uint8_t*)pData, size), - TRUE); -} -void CFDF_Document::ParseStream(IFX_FileRead* pFile, FX_BOOL bOwnFile) { - m_pFile = pFile; - m_bOwnFile = bOwnFile; - CPDF_SyntaxParser parser; - parser.InitParser(m_pFile, 0); - while (1) { - bool bNumber; - CFX_ByteString word = parser.GetNextWord(&bNumber); - if (bNumber) { - FX_DWORD objnum = FXSYS_atoui(word); - word = parser.GetNextWord(&bNumber); - if (!bNumber) { - break; - } - word = parser.GetNextWord(nullptr); - if (word != "obj") { - break; - } - CPDF_Object* pObj = parser.GetObject(this, objnum, 0, true); - if (!pObj) { - break; - } - InsertIndirectObject(objnum, pObj); - word = parser.GetNextWord(nullptr); - if (word != "endobj") { - break; - } - } else { - if (word != "trailer") { - break; - } - if (CPDF_Dictionary* pMainDict = - ToDictionary(parser.GetObject(this, 0, 0, true))) { - m_pRootDict = pMainDict->GetDictBy("Root"); - pMainDict->Release(); - } - break; - } - } -} -FX_BOOL CFDF_Document::WriteBuf(CFX_ByteTextBuf& buf) const { - if (!m_pRootDict) { - return FALSE; - } - buf << "%FDF-1.2\r\n"; - for (const auto& pair : m_IndirectObjs) { - buf << pair.first << " 0 obj\r\n" << pair.second << "\r\nendobj\r\n\r\n"; - } - buf << "trailer\r\n<GetObjNum() - << " 0 R>>\r\n%%EOF\r\n"; - return TRUE; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_array.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_array.cpp deleted file mode 100644 index 3b21a45ae2..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_array.cpp +++ /dev/null @@ -1,207 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" - -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/include/fpdfapi/cpdf_string.h" - -CPDF_Array::CPDF_Array() {} - -CPDF_Array::~CPDF_Array() { - int size = m_Objects.GetSize(); - CPDF_Object** pList = m_Objects.GetData(); - for (int i = 0; i < size; i++) { - if (pList[i]) - pList[i]->Release(); - } -} - -CPDF_Object::Type CPDF_Array::GetType() const { - return ARRAY; -} - -CPDF_Array* CPDF_Array::GetArray() const { - // The method should be made non-const if we want to not be const. - // See bug #234. - return const_cast(this); -} - -bool CPDF_Array::IsArray() const { - return true; -} - -CPDF_Array* CPDF_Array::AsArray() { - return this; -} - -const CPDF_Array* CPDF_Array::AsArray() const { - return this; -} - -CPDF_Object* CPDF_Array::Clone(FX_BOOL bDirect) const { - CPDF_Array* pCopy = new CPDF_Array(); - for (int i = 0; i < GetCount(); i++) { - CPDF_Object* value = m_Objects.GetAt(i); - pCopy->m_Objects.Add(value->Clone(bDirect)); - } - return pCopy; -} - -CFX_FloatRect CPDF_Array::GetRect() { - CFX_FloatRect rect; - if (!IsArray() || m_Objects.GetSize() != 4) - return rect; - - rect.left = GetNumberAt(0); - rect.bottom = GetNumberAt(1); - rect.right = GetNumberAt(2); - rect.top = GetNumberAt(3); - return rect; -} - -CFX_Matrix CPDF_Array::GetMatrix() { - CFX_Matrix matrix; - if (!IsArray() || m_Objects.GetSize() != 6) - return matrix; - - matrix.Set(GetNumberAt(0), GetNumberAt(1), GetNumberAt(2), GetNumberAt(3), - GetNumberAt(4), GetNumberAt(5)); - return matrix; -} - -CPDF_Object* CPDF_Array::GetElement(FX_DWORD i) const { - if (i >= (FX_DWORD)m_Objects.GetSize()) - return nullptr; - return m_Objects.GetAt(i); -} - -CPDF_Object* CPDF_Array::GetElementValue(FX_DWORD i) const { - if (i >= (FX_DWORD)m_Objects.GetSize()) - return nullptr; - return m_Objects.GetAt(i)->GetDirect(); -} - -CFX_ByteString CPDF_Array::GetStringAt(FX_DWORD i) const { - if (i >= (FX_DWORD)m_Objects.GetSize()) - return CFX_ByteString(); - return m_Objects.GetAt(i)->GetString(); -} - -CFX_ByteStringC CPDF_Array::GetConstStringAt(FX_DWORD i) const { - if (i >= (FX_DWORD)m_Objects.GetSize()) - return CFX_ByteStringC(); - return m_Objects.GetAt(i)->GetConstString(); -} - -int CPDF_Array::GetIntegerAt(FX_DWORD i) const { - if (i >= (FX_DWORD)m_Objects.GetSize()) - return 0; - return m_Objects.GetAt(i)->GetInteger(); -} - -FX_FLOAT CPDF_Array::GetNumberAt(FX_DWORD i) const { - if (i >= (FX_DWORD)m_Objects.GetSize()) - return 0; - return m_Objects.GetAt(i)->GetNumber(); -} - -CPDF_Dictionary* CPDF_Array::GetDictAt(FX_DWORD i) const { - CPDF_Object* p = GetElementValue(i); - if (!p) - return NULL; - if (CPDF_Dictionary* pDict = p->AsDictionary()) - return pDict; - if (CPDF_Stream* pStream = p->AsStream()) - return pStream->GetDict(); - return NULL; -} - -CPDF_Stream* CPDF_Array::GetStreamAt(FX_DWORD i) const { - return ToStream(GetElementValue(i)); -} - -CPDF_Array* CPDF_Array::GetArrayAt(FX_DWORD i) const { - return ToArray(GetElementValue(i)); -} - -void CPDF_Array::RemoveAt(FX_DWORD i, int nCount) { - if (i >= (FX_DWORD)m_Objects.GetSize()) - return; - - if (nCount <= 0 || nCount > m_Objects.GetSize() - i) - return; - - for (int j = 0; j < nCount; ++j) { - if (CPDF_Object* p = m_Objects.GetAt(i + j)) - p->Release(); - } - m_Objects.RemoveAt(i, nCount); -} - -void CPDF_Array::SetAt(FX_DWORD i, - CPDF_Object* pObj, - CPDF_IndirectObjectHolder* pObjs) { - ASSERT(IsArray()); - ASSERT(i < (FX_DWORD)m_Objects.GetSize()); - if (i >= (FX_DWORD)m_Objects.GetSize()) - return; - if (CPDF_Object* pOld = m_Objects.GetAt(i)) - pOld->Release(); - if (pObj->GetObjNum()) { - ASSERT(pObjs); - pObj = new CPDF_Reference(pObjs, pObj->GetObjNum()); - } - m_Objects.SetAt(i, pObj); -} - -void CPDF_Array::InsertAt(FX_DWORD index, - CPDF_Object* pObj, - CPDF_IndirectObjectHolder* pObjs) { - if (pObj->GetObjNum()) { - ASSERT(pObjs); - pObj = new CPDF_Reference(pObjs, pObj->GetObjNum()); - } - m_Objects.InsertAt(index, pObj); -} - -void CPDF_Array::Add(CPDF_Object* pObj, CPDF_IndirectObjectHolder* pObjs) { - if (pObj->GetObjNum()) { - ASSERT(pObjs); - pObj = new CPDF_Reference(pObjs, pObj->GetObjNum()); - } - m_Objects.Add(pObj); -} - -void CPDF_Array::AddName(const CFX_ByteString& str) { - ASSERT(IsArray()); - Add(new CPDF_Name(str)); -} - -void CPDF_Array::AddString(const CFX_ByteString& str) { - ASSERT(IsArray()); - Add(new CPDF_String(str, FALSE)); -} - -void CPDF_Array::AddInteger(int i) { - ASSERT(IsArray()); - Add(new CPDF_Number(i)); -} - -void CPDF_Array::AddNumber(FX_FLOAT f) { - ASSERT(IsArray()); - CPDF_Number* pNumber = new CPDF_Number(f); - Add(pNumber); -} - -void CPDF_Array::AddReference(CPDF_IndirectObjectHolder* pDoc, - FX_DWORD objnum) { - ASSERT(IsArray()); - Add(new CPDF_Reference(pDoc, objnum)); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_boolean.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_boolean.cpp deleted file mode 100644 index 75f2203954..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_boolean.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_boolean.h" - -CPDF_Boolean::CPDF_Boolean() : m_bValue(false) {} - -CPDF_Boolean::CPDF_Boolean(FX_BOOL value) : m_bValue(value) {} - -CPDF_Boolean::~CPDF_Boolean() {} - -CPDF_Object::Type CPDF_Boolean::GetType() const { - return BOOLEAN; -} - -CPDF_Object* CPDF_Boolean::Clone(FX_BOOL bDirect) const { - return new CPDF_Boolean(m_bValue); -} - -CFX_ByteString CPDF_Boolean::GetString() const { - return m_bValue ? "true" : "false"; -} - -int CPDF_Boolean::GetInteger() const { - return m_bValue; -} - -void CPDF_Boolean::SetString(const CFX_ByteString& str) { - m_bValue = (str == "true"); -} - -bool CPDF_Boolean::IsBoolean() const { - return true; -} - -CPDF_Boolean* CPDF_Boolean::AsBoolean() { - return this; -} - -const CPDF_Boolean* CPDF_Boolean::AsBoolean() const { - return this; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_data_avail.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_data_avail.cpp deleted file mode 100644 index 5ab15a3b76..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_data_avail.cpp +++ /dev/null @@ -1,1841 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h" -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" -#include "third_party/base/stl_util.h" - -IPDF_DataAvail::IPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail, - IFX_FileRead* pFileRead) - : m_pFileAvail(pFileAvail), m_pFileRead(pFileRead) {} - -IPDF_DataAvail::~IPDF_DataAvail() {} - -IPDF_DataAvail::FileAvail::~FileAvail() {} - -IPDF_DataAvail::DownloadHints::~DownloadHints() {} - -// static -IPDF_DataAvail* IPDF_DataAvail::Create(IPDF_DataAvail::FileAvail* pFileAvail, - IFX_FileRead* pFileRead) { - return new CPDF_DataAvail(pFileAvail, pFileRead, TRUE); -} - -// static -int CPDF_DataAvail::s_CurrentDataAvailRecursionDepth = 0; - -CPDF_DataAvail::CPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail, - IFX_FileRead* pFileRead, - FX_BOOL bSupportHintTable) - : IPDF_DataAvail(pFileAvail, pFileRead) { - m_Pos = 0; - m_dwFileLen = 0; - if (m_pFileRead) { - m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize(); - } - m_dwCurrentOffset = 0; - m_dwXRefOffset = 0; - m_bufferOffset = 0; - m_dwFirstPageNo = 0; - m_bufferSize = 0; - m_PagesObjNum = 0; - m_dwCurrentXRefSteam = 0; - m_dwAcroFormObjNum = 0; - m_dwInfoObjNum = 0; - m_pDocument = 0; - m_dwEncryptObjNum = 0; - m_dwPrevXRefOffset = 0; - m_dwLastXRefOffset = 0; - m_bDocAvail = FALSE; - m_bMainXRefLoadTried = FALSE; - m_bDocAvail = FALSE; - m_bLinearized = FALSE; - m_bPagesLoad = FALSE; - m_bPagesTreeLoad = FALSE; - m_bMainXRefLoadedOK = FALSE; - m_bAnnotsLoad = FALSE; - m_bHaveAcroForm = FALSE; - m_bAcroFormLoad = FALSE; - m_bPageLoadedOK = FALSE; - m_bNeedDownLoadResource = FALSE; - m_bLinearizedFormParamLoad = FALSE; - m_pLinearized = NULL; - m_pRoot = NULL; - m_pTrailer = NULL; - m_pCurrentParser = NULL; - m_pAcroForm = NULL; - m_pPageDict = NULL; - m_pPageResource = NULL; - m_docStatus = PDF_DATAAVAIL_HEADER; - m_parser.m_bOwnFileRead = false; - m_bTotalLoadPageTree = FALSE; - m_bCurPageDictLoadOK = FALSE; - m_bLinearedDataOK = FALSE; - m_bSupportHintTable = bSupportHintTable; -} -CPDF_DataAvail::~CPDF_DataAvail() { - if (m_pLinearized) - m_pLinearized->Release(); - - if (m_pRoot) - m_pRoot->Release(); - - if (m_pTrailer) - m_pTrailer->Release(); - - int iSize = m_arrayAcroforms.GetSize(); - for (int i = 0; i < iSize; ++i) - m_arrayAcroforms.GetAt(i)->Release(); -} - -void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) { - m_pDocument = pDoc; -} - -FX_DWORD CPDF_DataAvail::GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset) { - CPDF_Parser* pParser = m_pDocument->GetParser(); - if (!pParser || !pParser->IsValidObjectNumber(objnum)) - return 0; - - if (pParser->GetObjectType(objnum) == 2) - objnum = pParser->GetObjectPositionOrZero(objnum); - - if (pParser->GetObjectType(objnum) != 1 && - pParser->GetObjectType(objnum) != 255) { - return 0; - } - - offset = pParser->GetObjectPositionOrZero(objnum); - if (offset == 0) - return 0; - - auto it = pParser->m_SortedOffset.find(offset); - if (it == pParser->m_SortedOffset.end() || - ++it == pParser->m_SortedOffset.end()) { - return 0; - } - return *it - offset; -} - -FX_BOOL CPDF_DataAvail::IsObjectsAvail( - CFX_ArrayTemplate& obj_array, - FX_BOOL bParsePage, - IPDF_DataAvail::DownloadHints* pHints, - CFX_ArrayTemplate& ret_array) { - if (!obj_array.GetSize()) - return TRUE; - - FX_DWORD count = 0; - CFX_ArrayTemplate new_obj_array; - int32_t i = 0; - for (i = 0; i < obj_array.GetSize(); i++) { - CPDF_Object* pObj = obj_array[i]; - if (!pObj) - continue; - - int32_t type = pObj->GetType(); - switch (type) { - case CPDF_Object::ARRAY: { - CPDF_Array* pArray = pObj->GetArray(); - for (FX_DWORD k = 0; k < pArray->GetCount(); ++k) - new_obj_array.Add(pArray->GetElement(k)); - } break; - case CPDF_Object::STREAM: - pObj = pObj->GetDict(); - case CPDF_Object::DICTIONARY: { - CPDF_Dictionary* pDict = pObj->GetDict(); - if (pDict && pDict->GetStringBy("Type") == "Page" && !bParsePage) - continue; - - for (const auto& it : *pDict) { - const CFX_ByteString& key = it.first; - CPDF_Object* value = it.second; - if (key != "Parent") - new_obj_array.Add(value); - } - } break; - case CPDF_Object::REFERENCE: { - CPDF_Reference* pRef = pObj->AsReference(); - FX_DWORD dwNum = pRef->GetRefObjNum(); - - FX_FILESIZE offset; - FX_DWORD size = GetObjectSize(dwNum, offset); - if (size == 0 || offset < 0 || offset >= m_dwFileLen) - break; - - if (!IsDataAvail(offset, size, pHints)) { - ret_array.Add(pObj); - count++; - } else if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) { - m_ObjectSet.insert(dwNum); - CPDF_Object* pReferred = - m_pDocument->GetIndirectObject(pRef->GetRefObjNum()); - if (pReferred) - new_obj_array.Add(pReferred); - } - } break; - } - } - - if (count > 0) { - int32_t iSize = new_obj_array.GetSize(); - for (i = 0; i < iSize; ++i) { - CPDF_Object* pObj = new_obj_array[i]; - if (CPDF_Reference* pRef = pObj->AsReference()) { - FX_DWORD dwNum = pRef->GetRefObjNum(); - if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) - ret_array.Add(pObj); - } else { - ret_array.Add(pObj); - } - } - return FALSE; - } - - obj_array.RemoveAll(); - obj_array.Append(new_obj_array); - return IsObjectsAvail(obj_array, FALSE, pHints, ret_array); -} - -IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail( - IPDF_DataAvail::DownloadHints* pHints) { - if (!m_dwFileLen && m_pFileRead) { - m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize(); - if (!m_dwFileLen) - return DataError; - } - - while (!m_bDocAvail) { - if (!CheckDocStatus(pHints)) - return DataNotAvailable; - } - - return DataAvailable; -} - -FX_BOOL CPDF_DataAvail::CheckAcroFormSubObject( - IPDF_DataAvail::DownloadHints* pHints) { - if (!m_objs_array.GetSize()) { - m_objs_array.RemoveAll(); - m_ObjectSet.clear(); - CFX_ArrayTemplate obj_array; - obj_array.Append(m_arrayAcroforms); - FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array); - if (bRet) - m_objs_array.RemoveAll(); - return bRet; - } - - CFX_ArrayTemplate new_objs_array; - FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); - if (bRet) { - int32_t iSize = m_arrayAcroforms.GetSize(); - for (int32_t i = 0; i < iSize; ++i) { - m_arrayAcroforms.GetAt(i)->Release(); - } - m_arrayAcroforms.RemoveAll(); - } else { - m_objs_array.RemoveAll(); - m_objs_array.Append(new_objs_array); - } - return bRet; -} - -FX_BOOL CPDF_DataAvail::CheckAcroForm(IPDF_DataAvail::DownloadHints* pHints) { - FX_BOOL bExist = FALSE; - m_pAcroForm = GetObject(m_dwAcroFormObjNum, pHints, &bExist); - if (!bExist) { - m_docStatus = PDF_DATAAVAIL_PAGETREE; - return TRUE; - } - - if (!m_pAcroForm) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - return FALSE; - } - - m_arrayAcroforms.Add(m_pAcroForm); - m_docStatus = PDF_DATAAVAIL_PAGETREE; - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckDocStatus(IPDF_DataAvail::DownloadHints* pHints) { - switch (m_docStatus) { - case PDF_DATAAVAIL_HEADER: - return CheckHeader(pHints); - case PDF_DATAAVAIL_FIRSTPAGE: - case PDF_DATAAVAIL_FIRSTPAGE_PREPARE: - return CheckFirstPage(pHints); - case PDF_DATAAVAIL_HINTTABLE: - return CheckHintTables(pHints); - case PDF_DATAAVAIL_END: - return CheckEnd(pHints); - case PDF_DATAAVAIL_CROSSREF: - return CheckCrossRef(pHints); - case PDF_DATAAVAIL_CROSSREF_ITEM: - return CheckCrossRefItem(pHints); - case PDF_DATAAVAIL_CROSSREF_STREAM: - return CheckAllCrossRefStream(pHints); - case PDF_DATAAVAIL_TRAILER: - return CheckTrailer(pHints); - case PDF_DATAAVAIL_TRAILER_APPEND: - return CheckTrailerAppend(pHints); - case PDF_DATAAVAIL_LOADALLCROSSREF: - return LoadAllXref(pHints); - case PDF_DATAAVAIL_LOADALLFILE: - return LoadAllFile(pHints); - case PDF_DATAAVAIL_ROOT: - return CheckRoot(pHints); - case PDF_DATAAVAIL_INFO: - return CheckInfo(pHints); - case PDF_DATAAVAIL_ACROFORM: - return CheckAcroForm(pHints); - case PDF_DATAAVAIL_PAGETREE: - if (m_bTotalLoadPageTree) - return CheckPages(pHints); - return LoadDocPages(pHints); - case PDF_DATAAVAIL_PAGE: - if (m_bTotalLoadPageTree) - return CheckPage(pHints); - m_docStatus = PDF_DATAAVAIL_PAGE_LATERLOAD; - return TRUE; - case PDF_DATAAVAIL_ERROR: - return LoadAllFile(pHints); - case PDF_DATAAVAIL_PAGE_LATERLOAD: - m_docStatus = PDF_DATAAVAIL_PAGE; - default: - m_bDocAvail = TRUE; - return TRUE; - } -} - -FX_BOOL CPDF_DataAvail::CheckPageStatus(IPDF_DataAvail::DownloadHints* pHints) { - switch (m_docStatus) { - case PDF_DATAAVAIL_PAGETREE: - return CheckPages(pHints); - case PDF_DATAAVAIL_PAGE: - return CheckPage(pHints); - case PDF_DATAAVAIL_ERROR: - return LoadAllFile(pHints); - default: - m_bPagesTreeLoad = TRUE; - m_bPagesLoad = TRUE; - return TRUE; - } -} - -FX_BOOL CPDF_DataAvail::LoadAllFile(IPDF_DataAvail::DownloadHints* pHints) { - if (m_pFileAvail->IsDataAvail(0, (FX_DWORD)m_dwFileLen)) { - m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; - } - - pHints->AddSegment(0, (FX_DWORD)m_dwFileLen); - return FALSE; -} - -FX_BOOL CPDF_DataAvail::LoadAllXref(IPDF_DataAvail::DownloadHints* pHints) { - m_parser.m_pSyntax->InitParser(m_pFileRead, (FX_DWORD)m_dwHeaderOffset); - m_parser.m_bOwnFileRead = false; - if (!m_parser.LoadAllCrossRefV4(m_dwLastXRefOffset) && - !m_parser.LoadAllCrossRefV5(m_dwLastXRefOffset)) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return FALSE; - } - - m_dwRootObjNum = m_parser.GetRootObjNum(); - m_dwInfoObjNum = m_parser.GetInfoObjNum(); - m_pCurrentParser = &m_parser; - m_docStatus = PDF_DATAAVAIL_ROOT; - return TRUE; -} - -CPDF_Object* CPDF_DataAvail::GetObject(FX_DWORD objnum, - IPDF_DataAvail::DownloadHints* pHints, - FX_BOOL* pExistInFile) { - CPDF_Object* pRet = nullptr; - FX_DWORD size = 0; - FX_FILESIZE offset = 0; - CPDF_Parser* pParser = nullptr; - - if (pExistInFile) - *pExistInFile = TRUE; - - if (m_pDocument) { - size = GetObjectSize(objnum, offset); - pParser = m_pDocument->GetParser(); - } else { - size = (FX_DWORD)m_parser.GetObjectSize(objnum); - offset = m_parser.GetObjectOffset(objnum); - pParser = &m_parser; - } - - if (!IsDataAvail(offset, size, pHints)) - return nullptr; - - if (pParser) - pRet = pParser->ParseIndirectObject(nullptr, objnum); - - if (!pRet && pExistInFile) - *pExistInFile = FALSE; - - return pRet; -} - -FX_BOOL CPDF_DataAvail::CheckInfo(IPDF_DataAvail::DownloadHints* pHints) { - FX_BOOL bExist = FALSE; - CPDF_Object* pInfo = GetObject(m_dwInfoObjNum, pHints, &bExist); - if (!bExist) { - m_docStatus = - (m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE); - return TRUE; - } - - if (!pInfo) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - - if (m_Pos == m_dwFileLen) - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (pInfo) - pInfo->Release(); - - m_docStatus = - (m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE); - - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckRoot(IPDF_DataAvail::DownloadHints* pHints) { - FX_BOOL bExist = FALSE; - m_pRoot = GetObject(m_dwRootObjNum, pHints, &bExist); - if (!bExist) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - - if (!m_pRoot) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - return FALSE; - } - - CPDF_Dictionary* pDict = m_pRoot->GetDict(); - if (!pDict) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - CPDF_Reference* pRef = ToReference(pDict->GetElement("Pages")); - if (!pRef) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - m_PagesObjNum = pRef->GetRefObjNum(); - CPDF_Reference* pAcroFormRef = - ToReference(m_pRoot->GetDict()->GetElement("AcroForm")); - if (pAcroFormRef) { - m_bHaveAcroForm = TRUE; - m_dwAcroFormObjNum = pAcroFormRef->GetRefObjNum(); - } - - if (m_dwInfoObjNum) { - m_docStatus = PDF_DATAAVAIL_INFO; - } else { - m_docStatus = - m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE; - } - return TRUE; -} - -FX_BOOL CPDF_DataAvail::PreparePageItem() { - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); - CPDF_Reference* pRef = - ToReference(pRoot ? pRoot->GetElement("Pages") : nullptr); - if (!pRef) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - m_PagesObjNum = pRef->GetRefObjNum(); - m_pCurrentParser = m_pDocument->GetParser(); - m_docStatus = PDF_DATAAVAIL_PAGETREE; - return TRUE; -} - -bool CPDF_DataAvail::IsFirstCheck(int iPage) { - return m_pageMapCheckState.insert(iPage).second; -} - -void CPDF_DataAvail::ResetFirstCheck(int iPage) { - m_pageMapCheckState.erase(iPage); -} - -FX_BOOL CPDF_DataAvail::CheckPage(IPDF_DataAvail::DownloadHints* pHints) { - FX_DWORD iPageObjs = m_PageObjList.GetSize(); - CFX_DWordArray UnavailObjList; - for (FX_DWORD i = 0; i < iPageObjs; ++i) { - FX_DWORD dwPageObjNum = m_PageObjList.GetAt(i); - FX_BOOL bExist = FALSE; - CPDF_Object* pObj = GetObject(dwPageObjNum, pHints, &bExist); - if (!pObj) { - if (bExist) - UnavailObjList.Add(dwPageObjNum); - continue; - } - - if (pObj->IsArray()) { - CPDF_Array* pArray = pObj->GetArray(); - if (pArray) { - int32_t iSize = pArray->GetCount(); - for (int32_t j = 0; j < iSize; ++j) { - if (CPDF_Reference* pRef = ToReference(pArray->GetElement(j))) - UnavailObjList.Add(pRef->GetRefObjNum()); - } - } - } - - if (!pObj->IsDictionary()) { - pObj->Release(); - continue; - } - - CFX_ByteString type = pObj->GetDict()->GetStringBy("Type"); - if (type == "Pages") { - m_PagesArray.Add(pObj); - continue; - } - pObj->Release(); - } - - m_PageObjList.RemoveAll(); - if (UnavailObjList.GetSize()) { - m_PageObjList.Append(UnavailObjList); - return FALSE; - } - - FX_DWORD iPages = m_PagesArray.GetSize(); - for (FX_DWORD i = 0; i < iPages; i++) { - CPDF_Object* pPages = m_PagesArray.GetAt(i); - if (!pPages) - continue; - - if (!GetPageKids(m_pCurrentParser, pPages)) { - pPages->Release(); - while (++i < iPages) { - pPages = m_PagesArray.GetAt(i); - pPages->Release(); - } - m_PagesArray.RemoveAll(); - - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - pPages->Release(); - } - - m_PagesArray.RemoveAll(); - if (!m_PageObjList.GetSize()) - m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; -} - -FX_BOOL CPDF_DataAvail::GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages) { - if (!pParser) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - CPDF_Dictionary* pDict = pPages->GetDict(); - CPDF_Object* pKids = pDict ? pDict->GetElement("Kids") : NULL; - if (!pKids) - return TRUE; - - switch (pKids->GetType()) { - case CPDF_Object::REFERENCE: - m_PageObjList.Add(pKids->AsReference()->GetRefObjNum()); - break; - case CPDF_Object::ARRAY: { - CPDF_Array* pKidsArray = pKids->AsArray(); - for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) { - if (CPDF_Reference* pRef = ToReference(pKidsArray->GetElement(i))) - m_PageObjList.Add(pRef->GetRefObjNum()); - } - } break; - default: - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckPages(IPDF_DataAvail::DownloadHints* pHints) { - FX_BOOL bExist = FALSE; - CPDF_Object* pPages = GetObject(m_PagesObjNum, pHints, &bExist); - if (!bExist) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - - if (!pPages) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - return FALSE; - } - - if (!GetPageKids(m_pCurrentParser, pPages)) { - pPages->Release(); - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - pPages->Release(); - m_docStatus = PDF_DATAAVAIL_PAGE; - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckHeader(IPDF_DataAvail::DownloadHints* pHints) { - FX_DWORD req_size = 1024; - if ((FX_FILESIZE)req_size > m_dwFileLen) - req_size = (FX_DWORD)m_dwFileLen; - - if (m_pFileAvail->IsDataAvail(0, req_size)) { - uint8_t buffer[1024]; - m_pFileRead->ReadBlock(buffer, 0, req_size); - - if (IsLinearizedFile(buffer, req_size)) { - m_docStatus = PDF_DATAAVAIL_FIRSTPAGE; - } else { - if (m_docStatus == PDF_DATAAVAIL_ERROR) - return FALSE; - m_docStatus = PDF_DATAAVAIL_END; - } - return TRUE; - } - - pHints->AddSegment(0, req_size); - return FALSE; -} - -FX_BOOL CPDF_DataAvail::CheckFirstPage(IPDF_DataAvail::DownloadHints* pHints) { - CPDF_Dictionary* pDict = m_pLinearized->GetDict(); - CPDF_Object* pEndOffSet = pDict ? pDict->GetElement("E") : NULL; - if (!pEndOffSet) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - CPDF_Object* pXRefOffset = pDict ? pDict->GetElement("T") : NULL; - if (!pXRefOffset) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - CPDF_Object* pFileLen = pDict ? pDict->GetElement("L") : NULL; - if (!pFileLen) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - FX_BOOL bNeedDownLoad = FALSE; - if (pEndOffSet->IsNumber()) { - FX_DWORD dwEnd = pEndOffSet->GetInteger(); - dwEnd += 512; - if ((FX_FILESIZE)dwEnd > m_dwFileLen) - dwEnd = (FX_DWORD)m_dwFileLen; - - int32_t iStartPos = (int32_t)(m_dwFileLen > 1024 ? 1024 : m_dwFileLen); - int32_t iSize = dwEnd > 1024 ? dwEnd - 1024 : 0; - if (!m_pFileAvail->IsDataAvail(iStartPos, iSize)) { - pHints->AddSegment(iStartPos, iSize); - bNeedDownLoad = TRUE; - } - } - - m_dwLastXRefOffset = 0; - FX_FILESIZE dwFileLen = 0; - if (pXRefOffset->IsNumber()) - m_dwLastXRefOffset = pXRefOffset->GetInteger(); - - if (pFileLen->IsNumber()) - dwFileLen = pFileLen->GetInteger(); - - if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset, - (FX_DWORD)(dwFileLen - m_dwLastXRefOffset))) { - if (m_docStatus == PDF_DATAAVAIL_FIRSTPAGE) { - FX_DWORD dwSize = (FX_DWORD)(dwFileLen - m_dwLastXRefOffset); - FX_FILESIZE offset = m_dwLastXRefOffset; - if (dwSize < 512 && dwFileLen > 512) { - dwSize = 512; - offset = dwFileLen - 512; - } - pHints->AddSegment(offset, dwSize); - } - } else { - m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE; - } - - if (bNeedDownLoad || m_docStatus != PDF_DATAAVAIL_FIRSTPAGE_PREPARE) { - m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE; - return FALSE; - } - - m_docStatus = - m_bSupportHintTable ? PDF_DATAAVAIL_HINTTABLE : PDF_DATAAVAIL_DONE; - return TRUE; -} - -FX_BOOL CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset, - FX_DWORD size, - IPDF_DataAvail::DownloadHints* pHints) { - if (offset > m_dwFileLen) - return TRUE; - - FX_SAFE_DWORD safeSize = pdfium::base::checked_cast(offset); - safeSize += size; - safeSize += 512; - if (!safeSize.IsValid() || safeSize.ValueOrDie() > m_dwFileLen) - size = m_dwFileLen - offset; - else - size += 512; - - if (!m_pFileAvail->IsDataAvail(offset, size)) { - pHints->AddSegment(offset, size); - return FALSE; - } - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckHintTables(IPDF_DataAvail::DownloadHints* pHints) { - CPDF_Dictionary* pDict = m_pLinearized->GetDict(); - if (!pDict) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (!pDict->KeyExist("H") || !pDict->KeyExist("O") || !pDict->KeyExist("N")) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - int nPageCount = pDict->GetElementValue("N")->GetInteger(); - if (nPageCount <= 1) { - m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; - } - - CPDF_Array* pHintStreamRange = pDict->GetArrayBy("H"); - FX_FILESIZE szHSStart = - pHintStreamRange->GetElementValue(0) - ? pHintStreamRange->GetElementValue(0)->GetInteger() - : 0; - FX_FILESIZE szHSLength = - pHintStreamRange->GetElementValue(1) - ? pHintStreamRange->GetElementValue(1)->GetInteger() - : 0; - if (szHSStart < 0 || szHSLength <= 0) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (!IsDataAvail(szHSStart, szHSLength, pHints)) - return FALSE; - - m_syntaxParser.InitParser(m_pFileRead, m_dwHeaderOffset); - - std::unique_ptr pHintTables( - new CPDF_HintTables(this, pDict)); - std::unique_ptr> pHintStream( - ParseIndirectObjectAt(szHSStart, 0)); - CPDF_Stream* pStream = ToStream(pHintStream.get()); - if (pStream && pHintTables->LoadHintStream(pStream)) - m_pHintTables = std::move(pHintTables); - - m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; -} - -CPDF_Object* CPDF_DataAvail::ParseIndirectObjectAt( - FX_FILESIZE pos, - FX_DWORD objnum, - CPDF_IndirectObjectHolder* pObjList) { - FX_FILESIZE SavedPos = m_syntaxParser.SavePos(); - m_syntaxParser.RestorePos(pos); - - bool bIsNumber; - CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber); - if (!bIsNumber) - return nullptr; - - FX_DWORD parser_objnum = FXSYS_atoui(word); - if (objnum && parser_objnum != objnum) - return nullptr; - - word = m_syntaxParser.GetNextWord(&bIsNumber); - if (!bIsNumber) - return nullptr; - - FX_DWORD gennum = FXSYS_atoui(word); - if (m_syntaxParser.GetKeyword() != "obj") { - m_syntaxParser.RestorePos(SavedPos); - return nullptr; - } - - CPDF_Object* pObj = - m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true); - m_syntaxParser.RestorePos(SavedPos); - return pObj; -} - -IPDF_DataAvail::DocLinearizationStatus CPDF_DataAvail::IsLinearizedPDF() { - FX_DWORD req_size = 1024; - if (!m_pFileAvail->IsDataAvail(0, req_size)) - return LinearizationUnknown; - - if (!m_pFileRead) - return NotLinearized; - - FX_FILESIZE dwSize = m_pFileRead->GetSize(); - if (dwSize < (FX_FILESIZE)req_size) - return LinearizationUnknown; - - uint8_t buffer[1024]; - m_pFileRead->ReadBlock(buffer, 0, req_size); - if (IsLinearizedFile(buffer, req_size)) - return Linearized; - - return NotLinearized; -} -FX_BOOL CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen) { - ScopedFileStream file(FX_CreateMemoryStream(pData, (size_t)dwLen, FALSE)); - - int32_t offset = GetHeaderOffset(file.get()); - if (offset == -1) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - m_dwHeaderOffset = offset; - m_syntaxParser.InitParser(file.get(), offset); - m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9); - - bool bNumber; - CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber); - if (!bNumber) - return FALSE; - - FX_DWORD objnum = FXSYS_atoui(wordObjNum); - if (m_pLinearized) { - m_pLinearized->Release(); - m_pLinearized = nullptr; - } - - m_pLinearized = - ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum); - if (!m_pLinearized) - return FALSE; - - CPDF_Dictionary* pDict = m_pLinearized->GetDict(); - if (pDict && pDict->GetElement("Linearized")) { - CPDF_Object* pLen = pDict->GetElement("L"); - if (!pLen) - return FALSE; - - if ((FX_FILESIZE)pLen->GetInteger() != m_pFileRead->GetSize()) - return FALSE; - - m_bLinearized = TRUE; - - if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P"))) - m_dwFirstPageNo = pNo->GetInteger(); - - return TRUE; - } - return FALSE; -} - -FX_BOOL CPDF_DataAvail::CheckEnd(IPDF_DataAvail::DownloadHints* pHints) { - FX_DWORD req_pos = (FX_DWORD)(m_dwFileLen > 1024 ? m_dwFileLen - 1024 : 0); - FX_DWORD dwSize = (FX_DWORD)(m_dwFileLen - req_pos); - - if (m_pFileAvail->IsDataAvail(req_pos, dwSize)) { - uint8_t buffer[1024]; - m_pFileRead->ReadBlock(buffer, req_pos, dwSize); - - ScopedFileStream file(FX_CreateMemoryStream(buffer, (size_t)dwSize, FALSE)); - m_syntaxParser.InitParser(file.get(), 0); - m_syntaxParser.RestorePos(dwSize - 1); - - if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) { - m_syntaxParser.GetNextWord(nullptr); - - bool bNumber; - CFX_ByteString xrefpos_str = m_syntaxParser.GetNextWord(&bNumber); - if (!bNumber) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - m_dwXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str); - if (!m_dwXRefOffset || m_dwXRefOffset > m_dwFileLen) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - - m_dwLastXRefOffset = m_dwXRefOffset; - SetStartOffset(m_dwXRefOffset); - m_docStatus = PDF_DATAAVAIL_CROSSREF; - return TRUE; - } - - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - - pHints->AddSegment(req_pos, dwSize); - return FALSE; -} - -int32_t CPDF_DataAvail::CheckCrossRefStream( - IPDF_DataAvail::DownloadHints* pHints, - FX_FILESIZE& xref_offset) { - xref_offset = 0; - FX_DWORD req_size = - (FX_DWORD)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); - - if (m_pFileAvail->IsDataAvail(m_Pos, req_size)) { - int32_t iSize = (int32_t)(m_Pos + req_size - m_dwCurrentXRefSteam); - CFX_BinaryBuf buf(iSize); - uint8_t* pBuf = buf.GetBuffer(); - - m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize); - - ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); - m_parser.m_pSyntax->InitParser(file.get(), 0); - - bool bNumber; - CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber); - if (!bNumber) - return -1; - - FX_DWORD objNum = FXSYS_atoui(objnum); - CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum); - if (!pObj) { - m_Pos += m_parser.m_pSyntax->SavePos(); - return 0; - } - - CPDF_Dictionary* pDict = pObj->GetDict(); - CPDF_Name* pName = ToName(pDict ? pDict->GetElement("Type") : nullptr); - if (pName) { - if (pName->GetString() == "XRef") { - m_Pos += m_parser.m_pSyntax->SavePos(); - xref_offset = pObj->GetDict()->GetIntegerBy("Prev"); - pObj->Release(); - return 1; - } - } - pObj->Release(); - return -1; - } - pHints->AddSegment(m_Pos, req_size); - return 0; -} - -inline void CPDF_DataAvail::SetStartOffset(FX_FILESIZE dwOffset) { - m_Pos = dwOffset; -} - -FX_BOOL CPDF_DataAvail::GetNextToken(CFX_ByteString& token) { - uint8_t ch; - if (!GetNextChar(ch)) - return FALSE; - - while (1) { - while (PDFCharIsWhitespace(ch)) { - if (!GetNextChar(ch)) - return FALSE; - } - - if (ch != '%') - break; - - while (1) { - if (!GetNextChar(ch)) - return FALSE; - if (PDFCharIsLineEnding(ch)) - break; - } - } - - uint8_t buffer[256]; - FX_DWORD index = 0; - if (PDFCharIsDelimiter(ch)) { - buffer[index++] = ch; - if (ch == '/') { - while (1) { - if (!GetNextChar(ch)) - return FALSE; - - if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { - m_Pos--; - CFX_ByteString ret(buffer, index); - token = ret; - return TRUE; - } - - if (index < sizeof(buffer)) - buffer[index++] = ch; - } - } else if (ch == '<') { - if (!GetNextChar(ch)) - return FALSE; - - if (ch == '<') - buffer[index++] = ch; - else - m_Pos--; - } else if (ch == '>') { - if (!GetNextChar(ch)) - return FALSE; - - if (ch == '>') - buffer[index++] = ch; - else - m_Pos--; - } - - CFX_ByteString ret(buffer, index); - token = ret; - return TRUE; - } - - while (1) { - if (index < sizeof(buffer)) - buffer[index++] = ch; - - if (!GetNextChar(ch)) - return FALSE; - - if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { - m_Pos--; - break; - } - } - - token = CFX_ByteString(buffer, index); - return TRUE; -} - -FX_BOOL CPDF_DataAvail::GetNextChar(uint8_t& ch) { - FX_FILESIZE pos = m_Pos; - if (pos >= m_dwFileLen) - return FALSE; - - if (m_bufferOffset >= pos || - (FX_FILESIZE)(m_bufferOffset + m_bufferSize) <= pos) { - FX_FILESIZE read_pos = pos; - FX_DWORD read_size = 512; - if ((FX_FILESIZE)read_size > m_dwFileLen) - read_size = (FX_DWORD)m_dwFileLen; - - if ((FX_FILESIZE)(read_pos + read_size) > m_dwFileLen) - read_pos = m_dwFileLen - read_size; - - if (!m_pFileRead->ReadBlock(m_bufferData, read_pos, read_size)) - return FALSE; - - m_bufferOffset = read_pos; - m_bufferSize = read_size; - } - ch = m_bufferData[pos - m_bufferOffset]; - m_Pos++; - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckCrossRefItem( - IPDF_DataAvail::DownloadHints* pHints) { - int32_t iSize = 0; - CFX_ByteString token; - while (1) { - if (!GetNextToken(token)) { - iSize = (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); - pHints->AddSegment(m_Pos, iSize); - return FALSE; - } - - if (token == "trailer") { - m_dwTrailerOffset = m_Pos; - m_docStatus = PDF_DATAAVAIL_TRAILER; - return TRUE; - } - } -} - -FX_BOOL CPDF_DataAvail::CheckAllCrossRefStream( - IPDF_DataAvail::DownloadHints* pHints) { - FX_FILESIZE xref_offset = 0; - - int32_t nRet = CheckCrossRefStream(pHints, xref_offset); - if (nRet == 1) { - if (!xref_offset) { - m_docStatus = PDF_DATAAVAIL_LOADALLCROSSREF; - } else { - m_dwCurrentXRefSteam = xref_offset; - m_Pos = xref_offset; - } - return TRUE; - } - - if (nRet == -1) - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; -} - -FX_BOOL CPDF_DataAvail::CheckCrossRef(IPDF_DataAvail::DownloadHints* pHints) { - int32_t iSize = 0; - CFX_ByteString token; - if (!GetNextToken(token)) { - iSize = (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); - pHints->AddSegment(m_Pos, iSize); - return FALSE; - } - - if (token == "xref") { - while (1) { - if (!GetNextToken(token)) { - iSize = - (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); - pHints->AddSegment(m_Pos, iSize); - m_docStatus = PDF_DATAAVAIL_CROSSREF_ITEM; - return FALSE; - } - - if (token == "trailer") { - m_dwTrailerOffset = m_Pos; - m_docStatus = PDF_DATAAVAIL_TRAILER; - return TRUE; - } - } - } else { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - return FALSE; -} - -FX_BOOL CPDF_DataAvail::CheckTrailerAppend( - IPDF_DataAvail::DownloadHints* pHints) { - if (m_Pos < m_dwFileLen) { - FX_FILESIZE dwAppendPos = m_Pos + m_syntaxParser.SavePos(); - int32_t iSize = (int32_t)( - dwAppendPos + 512 > m_dwFileLen ? m_dwFileLen - dwAppendPos : 512); - - if (!m_pFileAvail->IsDataAvail(dwAppendPos, iSize)) { - pHints->AddSegment(dwAppendPos, iSize); - return FALSE; - } - } - - if (m_dwPrevXRefOffset) { - SetStartOffset(m_dwPrevXRefOffset); - m_docStatus = PDF_DATAAVAIL_CROSSREF; - } else { - m_docStatus = PDF_DATAAVAIL_LOADALLCROSSREF; - } - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckTrailer(IPDF_DataAvail::DownloadHints* pHints) { - int32_t iTrailerSize = - (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512); - if (m_pFileAvail->IsDataAvail(m_Pos, iTrailerSize)) { - int32_t iSize = (int32_t)(m_Pos + iTrailerSize - m_dwTrailerOffset); - CFX_BinaryBuf buf(iSize); - uint8_t* pBuf = buf.GetBuffer(); - if (!pBuf) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (!m_pFileRead->ReadBlock(pBuf, m_dwTrailerOffset, iSize)) - return FALSE; - - ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE)); - m_syntaxParser.InitParser(file.get(), 0); - - std::unique_ptr> pTrailer( - m_syntaxParser.GetObject(nullptr, 0, 0, true)); - if (!pTrailer) { - m_Pos += m_syntaxParser.SavePos(); - pHints->AddSegment(m_Pos, iTrailerSize); - return FALSE; - } - - if (!pTrailer->IsDictionary()) - return FALSE; - - CPDF_Dictionary* pTrailerDict = pTrailer->GetDict(); - CPDF_Object* pEncrypt = pTrailerDict->GetElement("Encrypt"); - if (ToReference(pEncrypt)) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - return TRUE; - } - - FX_DWORD xrefpos = GetDirectInteger(pTrailerDict, "Prev"); - if (xrefpos) { - m_dwPrevXRefOffset = GetDirectInteger(pTrailerDict, "XRefStm"); - if (m_dwPrevXRefOffset) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - } else { - m_dwPrevXRefOffset = xrefpos; - if (m_dwPrevXRefOffset >= m_dwFileLen) { - m_docStatus = PDF_DATAAVAIL_LOADALLFILE; - } else { - SetStartOffset(m_dwPrevXRefOffset); - m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND; - } - } - return TRUE; - } - m_dwPrevXRefOffset = 0; - m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND; - return TRUE; - } - pHints->AddSegment(m_Pos, iTrailerSize); - return FALSE; -} - -FX_BOOL CPDF_DataAvail::CheckPage(int32_t iPage, - IPDF_DataAvail::DownloadHints* pHints) { - while (TRUE) { - switch (m_docStatus) { - case PDF_DATAAVAIL_PAGETREE: - if (!LoadDocPages(pHints)) - return FALSE; - break; - case PDF_DATAAVAIL_PAGE: - if (!LoadDocPage(iPage, pHints)) - return FALSE; - break; - case PDF_DATAAVAIL_ERROR: - return LoadAllFile(pHints); - default: - m_bPagesTreeLoad = TRUE; - m_bPagesLoad = TRUE; - m_bCurPageDictLoadOK = TRUE; - m_docStatus = PDF_DATAAVAIL_PAGE; - return TRUE; - } - } -} - -FX_BOOL CPDF_DataAvail::CheckArrayPageNode( - FX_DWORD dwPageNo, - CPDF_DataAvail::PageNode* pPageNode, - IPDF_DataAvail::DownloadHints* pHints) { - FX_BOOL bExist = FALSE; - CPDF_Object* pPages = GetObject(dwPageNo, pHints, &bExist); - if (!bExist) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (!pPages) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - return FALSE; - } - - CPDF_Array* pArray = pPages->AsArray(); - if (!pArray) { - pPages->Release(); - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - pPageNode->m_type = PDF_PAGENODE_PAGES; - for (FX_DWORD i = 0; i < pArray->GetCount(); ++i) { - CPDF_Reference* pKid = ToReference(pArray->GetElement(i)); - if (!pKid) - continue; - - PageNode* pNode = new PageNode(); - pPageNode->m_childNode.Add(pNode); - pNode->m_dwPageNo = pKid->GetRefObjNum(); - } - pPages->Release(); - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckUnkownPageNode( - FX_DWORD dwPageNo, - CPDF_DataAvail::PageNode* pPageNode, - IPDF_DataAvail::DownloadHints* pHints) { - FX_BOOL bExist = FALSE; - CPDF_Object* pPage = GetObject(dwPageNo, pHints, &bExist); - if (!bExist) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (!pPage) { - if (m_docStatus == PDF_DATAAVAIL_ERROR) - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (pPage->IsArray()) { - pPageNode->m_dwPageNo = dwPageNo; - pPageNode->m_type = PDF_PAGENODE_ARRAY; - pPage->Release(); - return TRUE; - } - - if (!pPage->IsDictionary()) { - pPage->Release(); - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - pPageNode->m_dwPageNo = dwPageNo; - CPDF_Dictionary* pDict = pPage->GetDict(); - CFX_ByteString type = pDict->GetStringBy("Type"); - if (type == "Pages") { - pPageNode->m_type = PDF_PAGENODE_PAGES; - CPDF_Object* pKids = pDict->GetElement("Kids"); - if (!pKids) { - m_docStatus = PDF_DATAAVAIL_PAGE; - return TRUE; - } - - switch (pKids->GetType()) { - case CPDF_Object::REFERENCE: { - CPDF_Reference* pKid = pKids->AsReference(); - PageNode* pNode = new PageNode(); - pPageNode->m_childNode.Add(pNode); - pNode->m_dwPageNo = pKid->GetRefObjNum(); - } break; - case CPDF_Object::ARRAY: { - CPDF_Array* pKidsArray = pKids->AsArray(); - for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) { - CPDF_Reference* pKid = ToReference(pKidsArray->GetElement(i)); - if (!pKid) - continue; - - PageNode* pNode = new PageNode(); - pPageNode->m_childNode.Add(pNode); - pNode->m_dwPageNo = pKid->GetRefObjNum(); - } - } break; - default: - break; - } - } else if (type == "Page") { - pPageNode->m_type = PDF_PAGENODE_PAGE; - } else { - pPage->Release(); - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - pPage->Release(); - return TRUE; -} - -FX_BOOL CPDF_DataAvail::CheckPageNode(CPDF_DataAvail::PageNode& pageNodes, - int32_t iPage, - int32_t& iCount, - IPDF_DataAvail::DownloadHints* pHints, - int level) { - if (level >= kMaxPageRecursionDepth) - return FALSE; - - int32_t iSize = pageNodes.m_childNode.GetSize(); - if (iSize <= 0 || iPage >= iSize) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - for (int32_t i = 0; i < iSize; ++i) { - PageNode* pNode = pageNodes.m_childNode.GetAt(i); - if (!pNode) - continue; - - switch (pNode->m_type) { - case PDF_PAGENODE_UNKNOWN: - if (!CheckUnkownPageNode(pNode->m_dwPageNo, pNode, pHints)) { - return FALSE; - } - --i; - break; - case PDF_PAGENODE_PAGE: - iCount++; - if (iPage == iCount && m_pDocument) - m_pDocument->m_PageList.SetAt(iPage, pNode->m_dwPageNo); - break; - case PDF_PAGENODE_PAGES: - if (!CheckPageNode(*pNode, iPage, iCount, pHints, level + 1)) - return FALSE; - break; - case PDF_PAGENODE_ARRAY: - if (!CheckArrayPageNode(pNode->m_dwPageNo, pNode, pHints)) - return FALSE; - --i; - break; - } - - if (iPage == iCount) { - m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; - } - } - return TRUE; -} - -FX_BOOL CPDF_DataAvail::LoadDocPage(int32_t iPage, - IPDF_DataAvail::DownloadHints* pHints) { - if (m_pDocument->GetPageCount() <= iPage || - m_pDocument->m_PageList.GetAt(iPage)) { - m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; - } - - if (m_pageNodes.m_type == PDF_PAGENODE_PAGE) { - if (iPage == 0) { - m_docStatus = PDF_DATAAVAIL_DONE; - return TRUE; - } - m_docStatus = PDF_DATAAVAIL_ERROR; - return TRUE; - } - int32_t iCount = -1; - return CheckPageNode(m_pageNodes, iPage, iCount, pHints, 0); -} - -FX_BOOL CPDF_DataAvail::CheckPageCount(IPDF_DataAvail::DownloadHints* pHints) { - FX_BOOL bExist = FALSE; - CPDF_Object* pPages = GetObject(m_PagesObjNum, pHints, &bExist); - if (!bExist) { - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (!pPages) - return FALSE; - - CPDF_Dictionary* pPagesDict = pPages->GetDict(); - if (!pPagesDict) { - pPages->Release(); - m_docStatus = PDF_DATAAVAIL_ERROR; - return FALSE; - } - - if (!pPagesDict->KeyExist("Kids")) { - pPages->Release(); - return TRUE; - } - - int count = pPagesDict->GetIntegerBy("Count"); - if (count > 0) { - pPages->Release(); - return TRUE; - } - - pPages->Release(); - return FALSE; -} - -FX_BOOL CPDF_DataAvail::LoadDocPages(IPDF_DataAvail::DownloadHints* pHints) { - if (!CheckUnkownPageNode(m_PagesObjNum, &m_pageNodes, pHints)) - return FALSE; - - if (CheckPageCount(pHints)) { - m_docStatus = PDF_DATAAVAIL_PAGE; - return TRUE; - } - - m_bTotalLoadPageTree = TRUE; - return FALSE; -} - -FX_BOOL CPDF_DataAvail::LoadPages(IPDF_DataAvail::DownloadHints* pHints) { - while (!m_bPagesTreeLoad) { - if (!CheckPageStatus(pHints)) - return FALSE; - } - - if (m_bPagesLoad) - return TRUE; - - m_pDocument->LoadPages(); - return FALSE; -} - -IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedData( - IPDF_DataAvail::DownloadHints* pHints) { - if (m_bLinearedDataOK) - return DataAvailable; - - if (!m_bMainXRefLoadTried) { - FX_SAFE_DWORD data_size = m_dwFileLen; - data_size -= m_dwLastXRefOffset; - if (!data_size.IsValid()) - return DataError; - - if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset, - data_size.ValueOrDie())) { - pHints->AddSegment(m_dwLastXRefOffset, data_size.ValueOrDie()); - return DataNotAvailable; - } - - CPDF_Parser::Error eRet = - m_pDocument->GetParser()->LoadLinearizedMainXRefTable(); - m_bMainXRefLoadTried = TRUE; - if (eRet != CPDF_Parser::SUCCESS) - return DataError; - - if (!PreparePageItem()) - return DataNotAvailable; - - m_bMainXRefLoadedOK = TRUE; - m_bLinearedDataOK = TRUE; - } - - return m_bLinearedDataOK ? DataAvailable : DataNotAvailable; -} - -FX_BOOL CPDF_DataAvail::CheckPageAnnots(int32_t iPage, - IPDF_DataAvail::DownloadHints* pHints) { - if (!m_objs_array.GetSize()) { - m_objs_array.RemoveAll(); - m_ObjectSet.clear(); - - CPDF_Dictionary* pPageDict = m_pDocument->GetPage(iPage); - if (!pPageDict) - return TRUE; - - CPDF_Object* pAnnots = pPageDict->GetElement("Annots"); - if (!pAnnots) - return TRUE; - - CFX_ArrayTemplate obj_array; - obj_array.Add(pAnnots); - - FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array); - if (bRet) - m_objs_array.RemoveAll(); - - return bRet; - } - - CFX_ArrayTemplate new_objs_array; - FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); - m_objs_array.RemoveAll(); - if (!bRet) - m_objs_array.Append(new_objs_array); - - return bRet; -} - -IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedFirstPage( - int32_t iPage, - IPDF_DataAvail::DownloadHints* pHints) { - if (!m_bAnnotsLoad) { - if (!CheckPageAnnots(iPage, pHints)) - return DataNotAvailable; - m_bAnnotsLoad = TRUE; - } - - DocAvailStatus nRet = CheckLinearizedData(pHints); - if (nRet == DataAvailable) - m_bPageLoadedOK = FALSE; - return nRet; -} - -FX_BOOL CPDF_DataAvail::HaveResourceAncestor(CPDF_Dictionary* pDict) { - CFX_AutoRestorer restorer(&s_CurrentDataAvailRecursionDepth); - if (++s_CurrentDataAvailRecursionDepth > kMaxDataAvailRecursionDepth) - return FALSE; - - CPDF_Object* pParent = pDict->GetElement("Parent"); - if (!pParent) - return FALSE; - - CPDF_Dictionary* pParentDict = pParent->GetDict(); - if (!pParentDict) - return FALSE; - - CPDF_Object* pRet = pParentDict->GetElement("Resources"); - if (pRet) { - m_pPageResource = pRet; - return TRUE; - } - - return HaveResourceAncestor(pParentDict); -} - -IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail( - int32_t iPage, - IPDF_DataAvail::DownloadHints* pHints) { - if (!m_pDocument) - return DataError; - - if (IsFirstCheck(iPage)) { - m_bCurPageDictLoadOK = FALSE; - m_bPageLoadedOK = FALSE; - m_bAnnotsLoad = FALSE; - m_bNeedDownLoadResource = FALSE; - m_objs_array.RemoveAll(); - m_ObjectSet.clear(); - } - - if (pdfium::ContainsKey(m_pagesLoadState, iPage)) - return DataAvailable; - - if (m_bLinearized) { - if ((FX_DWORD)iPage == m_dwFirstPageNo) { - DocAvailStatus nRet = CheckLinearizedFirstPage(iPage, pHints); - if (nRet == DataAvailable) - m_pagesLoadState.insert(iPage); - return nRet; - } - - DocAvailStatus nResult = CheckLinearizedData(pHints); - if (nResult != DataAvailable) - return nResult; - - if (m_pHintTables) { - nResult = m_pHintTables->CheckPage(iPage, pHints); - if (nResult != DataAvailable) - return nResult; - m_pagesLoadState.insert(iPage); - return DataAvailable; - } - - if (m_bMainXRefLoadedOK) { - if (m_bTotalLoadPageTree) { - if (!LoadPages(pHints)) - return DataNotAvailable; - } else { - if (!m_bCurPageDictLoadOK && !CheckPage(iPage, pHints)) - return DataNotAvailable; - } - } else { - if (!LoadAllFile(pHints)) - return DataNotAvailable; - m_pDocument->GetParser()->RebuildCrossRef(); - ResetFirstCheck(iPage); - return DataAvailable; - } - } else { - if (!m_bTotalLoadPageTree && !m_bCurPageDictLoadOK && - !CheckPage(iPage, pHints)) { - return DataNotAvailable; - } - } - - if (m_bHaveAcroForm && !m_bAcroFormLoad) { - if (!CheckAcroFormSubObject(pHints)) - return DataNotAvailable; - m_bAcroFormLoad = TRUE; - } - - if (!m_bPageLoadedOK) { - if (!m_objs_array.GetSize()) { - m_objs_array.RemoveAll(); - m_ObjectSet.clear(); - - m_pPageDict = m_pDocument->GetPage(iPage); - if (!m_pPageDict) { - ResetFirstCheck(iPage); - return DataAvailable; - } - - CFX_ArrayTemplate obj_array; - obj_array.Add(m_pPageDict); - FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); - if (!bRet) - return DataNotAvailable; - - m_objs_array.RemoveAll(); - } else { - CFX_ArrayTemplate new_objs_array; - FX_BOOL bRet = - IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); - - m_objs_array.RemoveAll(); - if (!bRet) { - m_objs_array.Append(new_objs_array); - return DataNotAvailable; - } - } - m_bPageLoadedOK = TRUE; - } - - if (!m_bAnnotsLoad) { - if (!CheckPageAnnots(iPage, pHints)) - return DataNotAvailable; - m_bAnnotsLoad = TRUE; - } - - if (m_pPageDict && !m_bNeedDownLoadResource) { - m_pPageResource = m_pPageDict->GetElement("Resources"); - if (!m_pPageResource) - m_bNeedDownLoadResource = HaveResourceAncestor(m_pPageDict); - else - m_bNeedDownLoadResource = TRUE; - } - - if (m_bNeedDownLoadResource) { - FX_BOOL bRet = CheckResources(pHints); - if (!bRet) - return DataNotAvailable; - m_bNeedDownLoadResource = FALSE; - } - - m_bPageLoadedOK = FALSE; - m_bAnnotsLoad = FALSE; - m_bCurPageDictLoadOK = FALSE; - - ResetFirstCheck(iPage); - m_pagesLoadState.insert(iPage); - return DataAvailable; -} - -FX_BOOL CPDF_DataAvail::CheckResources(IPDF_DataAvail::DownloadHints* pHints) { - if (!m_objs_array.GetSize()) { - m_objs_array.RemoveAll(); - CFX_ArrayTemplate obj_array; - obj_array.Add(m_pPageResource); - - FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array); - if (bRet) - m_objs_array.RemoveAll(); - return bRet; - } - - CFX_ArrayTemplate new_objs_array; - FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); - m_objs_array.RemoveAll(); - if (!bRet) - m_objs_array.Append(new_objs_array); - return bRet; -} - -void CPDF_DataAvail::GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, - FX_DWORD* pSize) { - if (pPos) - *pPos = m_dwLastXRefOffset; - if (pSize) - *pSize = (FX_DWORD)(m_dwFileLen - m_dwLastXRefOffset); -} - -int CPDF_DataAvail::GetPageCount() const { - if (m_pLinearized) { - CPDF_Dictionary* pDict = m_pLinearized->GetDict(); - CPDF_Object* pObj = pDict ? pDict->GetElementValue("N") : nullptr; - return pObj ? pObj->GetInteger() : 0; - } - return m_pDocument ? m_pDocument->GetPageCount() : 0; -} - -CPDF_Dictionary* CPDF_DataAvail::GetPage(int index) { - if (!m_pDocument || index < 0 || index >= GetPageCount()) - return nullptr; - - if (m_pLinearized) { - CPDF_Dictionary* pDict = m_pLinearized->GetDict(); - CPDF_Object* pObj = pDict ? pDict->GetElementValue("P") : nullptr; - - int pageNum = pObj ? pObj->GetInteger() : 0; - if (m_pHintTables && index != pageNum) { - FX_FILESIZE szPageStartPos = 0; - FX_FILESIZE szPageLength = 0; - FX_DWORD dwObjNum = 0; - FX_BOOL bPagePosGot = m_pHintTables->GetPagePos(index, szPageStartPos, - szPageLength, dwObjNum); - if (!bPagePosGot) - return nullptr; - - m_syntaxParser.InitParser(m_pFileRead, (FX_DWORD)szPageStartPos); - CPDF_Object* pPageDict = ParseIndirectObjectAt(0, dwObjNum, m_pDocument); - if (!pPageDict) - return nullptr; - - if (!m_pDocument->InsertIndirectObject(dwObjNum, pPageDict)) - return nullptr; - return pPageDict->GetDict(); - } - } - return m_pDocument->GetPage(index); -} - -IPDF_DataAvail::DocFormStatus CPDF_DataAvail::IsFormAvail( - IPDF_DataAvail::DownloadHints* pHints) { - if (!m_pDocument) - return FormAvailable; - - if (!m_bLinearizedFormParamLoad) { - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); - if (!pRoot) - return FormAvailable; - - CPDF_Object* pAcroForm = pRoot->GetElement("AcroForm"); - if (!pAcroForm) - return FormNotExist; - - DocAvailStatus nDocStatus = CheckLinearizedData(pHints); - if (nDocStatus == DataError) - return FormError; - if (nDocStatus == DataNotAvailable) - return FormNotAvailable; - - if (!m_objs_array.GetSize()) - m_objs_array.Add(pAcroForm->GetDict()); - m_bLinearizedFormParamLoad = TRUE; - } - - CFX_ArrayTemplate new_objs_array; - FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array); - m_objs_array.RemoveAll(); - if (!bRet) { - m_objs_array.Append(new_objs_array); - return FormNotAvailable; - } - return FormAvailable; -} - -CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {} - -CPDF_DataAvail::PageNode::~PageNode() { - for (int32_t i = 0; i < m_childNode.GetSize(); ++i) - delete m_childNode[i]; - m_childNode.RemoveAll(); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h b/core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h deleted file mode 100644 index 3fc26c368a..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h +++ /dev/null @@ -1,217 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_ -#define CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_ - -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fpdfapi/ipdf_data_avail.h" -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" - -class CPDF_Dictionary; -class CPDF_IndirectObjectHolder; -class CPDF_Parser; - -enum PDF_DATAAVAIL_STATUS { - PDF_DATAAVAIL_HEADER = 0, - PDF_DATAAVAIL_FIRSTPAGE, - PDF_DATAAVAIL_FIRSTPAGE_PREPARE, - PDF_DATAAVAIL_HINTTABLE, - PDF_DATAAVAIL_END, - PDF_DATAAVAIL_CROSSREF, - PDF_DATAAVAIL_CROSSREF_ITEM, - PDF_DATAAVAIL_CROSSREF_STREAM, - PDF_DATAAVAIL_TRAILER, - PDF_DATAAVAIL_LOADALLCROSSREF, - PDF_DATAAVAIL_ROOT, - PDF_DATAAVAIL_INFO, - PDF_DATAAVAIL_ACROFORM, - PDF_DATAAVAIL_ACROFORM_SUBOBJECT, - PDF_DATAAVAIL_PAGETREE, - PDF_DATAAVAIL_PAGE, - PDF_DATAAVAIL_PAGE_LATERLOAD, - PDF_DATAAVAIL_RESOURCES, - PDF_DATAAVAIL_DONE, - PDF_DATAAVAIL_ERROR, - PDF_DATAAVAIL_LOADALLFILE, - PDF_DATAAVAIL_TRAILER_APPEND -}; - -enum PDF_PAGENODE_TYPE { - PDF_PAGENODE_UNKNOWN = 0, - PDF_PAGENODE_PAGE, - PDF_PAGENODE_PAGES, - PDF_PAGENODE_ARRAY, -}; - -class CPDF_DataAvail final : public IPDF_DataAvail { - public: - CPDF_DataAvail(FileAvail* pFileAvail, - IFX_FileRead* pFileRead, - FX_BOOL bSupportHintTable); - ~CPDF_DataAvail() override; - - // IPDF_DataAvail: - DocAvailStatus IsDocAvail(DownloadHints* pHints) override; - void SetDocument(CPDF_Document* pDoc) override; - DocAvailStatus IsPageAvail(int iPage, DownloadHints* pHints) override; - DocFormStatus IsFormAvail(DownloadHints* pHints) override; - DocLinearizationStatus IsLinearizedPDF() override; - FX_BOOL IsLinearized() override { return m_bLinearized; } - void GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, FX_DWORD* pSize) override; - - int GetPageCount() const; - CPDF_Dictionary* GetPage(int index); - - friend class CPDF_HintTables; - - protected: - class PageNode { - public: - PageNode(); - ~PageNode(); - - PDF_PAGENODE_TYPE m_type; - FX_DWORD m_dwPageNo; - CFX_ArrayTemplate m_childNode; - }; - - static const int kMaxDataAvailRecursionDepth = 64; - static int s_CurrentDataAvailRecursionDepth; - static const int kMaxPageRecursionDepth = 1024; - - FX_DWORD GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset); - FX_BOOL IsObjectsAvail(CFX_ArrayTemplate& obj_array, - FX_BOOL bParsePage, - IPDF_DataAvail::DownloadHints* pHints, - CFX_ArrayTemplate& ret_array); - FX_BOOL CheckDocStatus(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckHeader(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckFirstPage(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckHintTables(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckEnd(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckCrossRef(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckCrossRefItem(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckTrailer(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckRoot(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckInfo(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckPages(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckPage(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckResources(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckAnnots(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckAcroForm(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckAcroFormSubObject(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckTrailerAppend(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckPageStatus(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckAllCrossRefStream(IPDF_DataAvail::DownloadHints* pHints); - - int32_t CheckCrossRefStream(IPDF_DataAvail::DownloadHints* pHints, - FX_FILESIZE& xref_offset); - FX_BOOL IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen); - void SetStartOffset(FX_FILESIZE dwOffset); - FX_BOOL GetNextToken(CFX_ByteString& token); - FX_BOOL GetNextChar(uint8_t& ch); - CPDF_Object* ParseIndirectObjectAt( - FX_FILESIZE pos, - FX_DWORD objnum, - CPDF_IndirectObjectHolder* pObjList = nullptr); - CPDF_Object* GetObject(FX_DWORD objnum, - IPDF_DataAvail::DownloadHints* pHints, - FX_BOOL* pExistInFile); - FX_BOOL GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages); - FX_BOOL PreparePageItem(); - FX_BOOL LoadPages(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL LoadAllXref(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL LoadAllFile(IPDF_DataAvail::DownloadHints* pHints); - DocAvailStatus CheckLinearizedData(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckPageAnnots(int iPage, IPDF_DataAvail::DownloadHints* pHints); - - DocAvailStatus CheckLinearizedFirstPage( - int iPage, - IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL HaveResourceAncestor(CPDF_Dictionary* pDict); - FX_BOOL CheckPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL LoadDocPages(IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL LoadDocPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckPageNode(PageNode& pageNodes, - int32_t iPage, - int32_t& iCount, - IPDF_DataAvail::DownloadHints* pHints, - int level); - FX_BOOL CheckUnkownPageNode(FX_DWORD dwPageNo, - PageNode* pPageNode, - IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckArrayPageNode(FX_DWORD dwPageNo, - PageNode* pPageNode, - IPDF_DataAvail::DownloadHints* pHints); - FX_BOOL CheckPageCount(IPDF_DataAvail::DownloadHints* pHints); - bool IsFirstCheck(int iPage); - void ResetFirstCheck(int iPage); - FX_BOOL IsDataAvail(FX_FILESIZE offset, - FX_DWORD size, - IPDF_DataAvail::DownloadHints* pHints); - - CPDF_Parser m_parser; - CPDF_SyntaxParser m_syntaxParser; - CPDF_Object* m_pRoot; - FX_DWORD m_dwRootObjNum; - FX_DWORD m_dwInfoObjNum; - CPDF_Object* m_pLinearized; - CPDF_Object* m_pTrailer; - FX_BOOL m_bDocAvail; - FX_FILESIZE m_dwHeaderOffset; - FX_FILESIZE m_dwLastXRefOffset; - FX_FILESIZE m_dwXRefOffset; - FX_FILESIZE m_dwTrailerOffset; - FX_FILESIZE m_dwCurrentOffset; - PDF_DATAAVAIL_STATUS m_docStatus; - FX_FILESIZE m_dwFileLen; - CPDF_Document* m_pDocument; - std::set m_ObjectSet; - CFX_ArrayTemplate m_objs_array; - FX_FILESIZE m_Pos; - FX_FILESIZE m_bufferOffset; - FX_DWORD m_bufferSize; - CFX_ByteString m_WordBuf; - uint8_t m_bufferData[512]; - CFX_DWordArray m_XRefStreamList; - CFX_DWordArray m_PageObjList; - FX_DWORD m_PagesObjNum; - FX_BOOL m_bLinearized; - FX_DWORD m_dwFirstPageNo; - FX_BOOL m_bLinearedDataOK; - FX_BOOL m_bMainXRefLoadTried; - FX_BOOL m_bMainXRefLoadedOK; - FX_BOOL m_bPagesTreeLoad; - FX_BOOL m_bPagesLoad; - CPDF_Parser* m_pCurrentParser; - FX_FILESIZE m_dwCurrentXRefSteam; - FX_BOOL m_bAnnotsLoad; - FX_BOOL m_bHaveAcroForm; - FX_DWORD m_dwAcroFormObjNum; - FX_BOOL m_bAcroFormLoad; - CPDF_Object* m_pAcroForm; - CFX_ArrayTemplate m_arrayAcroforms; - CPDF_Dictionary* m_pPageDict; - CPDF_Object* m_pPageResource; - FX_BOOL m_bNeedDownLoadResource; - FX_BOOL m_bPageLoadedOK; - FX_BOOL m_bLinearizedFormParamLoad; - CFX_ArrayTemplate m_PagesArray; - FX_DWORD m_dwEncryptObjNum; - FX_FILESIZE m_dwPrevXRefOffset; - FX_BOOL m_bTotalLoadPageTree; - FX_BOOL m_bCurPageDictLoadOK; - PageNode m_pageNodes; - std::set m_pageMapCheckState; - std::set m_pagesLoadState; - std::unique_ptr m_pHintTables; - FX_BOOL m_bSupportHintTable; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_ diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_dictionary.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_dictionary.cpp deleted file mode 100644 index 864cd59744..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_dictionary.cpp +++ /dev/null @@ -1,271 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_dictionary.h" - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_boolean.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "third_party/base/stl_util.h" - -CPDF_Dictionary::CPDF_Dictionary() {} - -CPDF_Dictionary::~CPDF_Dictionary() { - for (const auto& it : m_Map) - it.second->Release(); -} - -CPDF_Object::Type CPDF_Dictionary::GetType() const { - return DICTIONARY; -} - -CPDF_Dictionary* CPDF_Dictionary::GetDict() const { - // The method should be made non-const if we want to not be const. - // See bug #234. - return const_cast(this); -} - -bool CPDF_Dictionary::IsDictionary() const { - return true; -} - -CPDF_Dictionary* CPDF_Dictionary::AsDictionary() { - return this; -} - -const CPDF_Dictionary* CPDF_Dictionary::AsDictionary() const { - return this; -} - -CPDF_Object* CPDF_Dictionary::Clone(FX_BOOL bDirect) const { - CPDF_Dictionary* pCopy = new CPDF_Dictionary(); - for (const auto& it : *this) - pCopy->m_Map.insert(std::make_pair(it.first, it.second->Clone(bDirect))); - return pCopy; -} - -CPDF_Object* CPDF_Dictionary::GetElement(const CFX_ByteStringC& key) const { - auto it = m_Map.find(key); - if (it == m_Map.end()) - return nullptr; - return it->second; -} -CPDF_Object* CPDF_Dictionary::GetElementValue( - const CFX_ByteStringC& key) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetDirect() : nullptr; -} - -CFX_ByteString CPDF_Dictionary::GetStringBy(const CFX_ByteStringC& key) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetString() : CFX_ByteString(); -} - -CFX_ByteStringC CPDF_Dictionary::GetConstStringBy( - const CFX_ByteStringC& key) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetConstString() : CFX_ByteStringC(); -} - -CFX_WideString CPDF_Dictionary::GetUnicodeTextBy( - const CFX_ByteStringC& key) const { - CPDF_Object* p = GetElement(key); - if (CPDF_Reference* pRef = ToReference(p)) - p = pRef->GetDirect(); - return p ? p->GetUnicodeText() : CFX_WideString(); -} - -CFX_ByteString CPDF_Dictionary::GetStringBy(const CFX_ByteStringC& key, - const CFX_ByteStringC& def) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetString() : CFX_ByteString(def); -} - -CFX_ByteStringC CPDF_Dictionary::GetConstStringBy( - const CFX_ByteStringC& key, - const CFX_ByteStringC& def) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetConstString() : CFX_ByteStringC(def); -} - -int CPDF_Dictionary::GetIntegerBy(const CFX_ByteStringC& key) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetInteger() : 0; -} - -int CPDF_Dictionary::GetIntegerBy(const CFX_ByteStringC& key, int def) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetInteger() : def; -} - -FX_FLOAT CPDF_Dictionary::GetNumberBy(const CFX_ByteStringC& key) const { - CPDF_Object* p = GetElement(key); - return p ? p->GetNumber() : 0; -} - -FX_BOOL CPDF_Dictionary::GetBooleanBy(const CFX_ByteStringC& key, - FX_BOOL bDefault) const { - CPDF_Object* p = GetElement(key); - return ToBoolean(p) ? p->GetInteger() : bDefault; -} - -CPDF_Dictionary* CPDF_Dictionary::GetDictBy(const CFX_ByteStringC& key) const { - CPDF_Object* p = GetElementValue(key); - if (!p) - return nullptr; - if (CPDF_Dictionary* pDict = p->AsDictionary()) - return pDict; - if (CPDF_Stream* pStream = p->AsStream()) - return pStream->GetDict(); - return nullptr; -} - -CPDF_Array* CPDF_Dictionary::GetArrayBy(const CFX_ByteStringC& key) const { - return ToArray(GetElementValue(key)); -} - -CPDF_Stream* CPDF_Dictionary::GetStreamBy(const CFX_ByteStringC& key) const { - return ToStream(GetElementValue(key)); -} - -CFX_FloatRect CPDF_Dictionary::GetRectBy(const CFX_ByteStringC& key) const { - CFX_FloatRect rect; - CPDF_Array* pArray = GetArrayBy(key); - if (pArray) - rect = pArray->GetRect(); - return rect; -} - -CFX_Matrix CPDF_Dictionary::GetMatrixBy(const CFX_ByteStringC& key) const { - CFX_Matrix matrix; - CPDF_Array* pArray = GetArrayBy(key); - if (pArray) - matrix = pArray->GetMatrix(); - return matrix; -} - -FX_BOOL CPDF_Dictionary::KeyExist(const CFX_ByteStringC& key) const { - return pdfium::ContainsKey(m_Map, key); -} - -bool CPDF_Dictionary::IsSignatureDict() const { - CPDF_Object* pType = GetElementValue("Type"); - if (!pType) - pType = GetElementValue("FT"); - return pType && pType->GetString() == "Sig"; -} - -void CPDF_Dictionary::SetAt(const CFX_ByteStringC& key, CPDF_Object* pObj) { - ASSERT(IsDictionary()); - // Avoid 2 constructions of CFX_ByteString. - CFX_ByteString key_bytestring = key; - auto it = m_Map.find(key_bytestring); - if (it == m_Map.end()) { - if (pObj) - m_Map.insert(std::make_pair(key_bytestring, pObj)); - return; - } - - if (it->second == pObj) - return; - it->second->Release(); - - if (pObj) - it->second = pObj; - else - m_Map.erase(it); -} - -void CPDF_Dictionary::RemoveAt(const CFX_ByteStringC& key) { - auto it = m_Map.find(key); - if (it == m_Map.end()) - return; - - it->second->Release(); - m_Map.erase(it); -} - -void CPDF_Dictionary::ReplaceKey(const CFX_ByteStringC& oldkey, - const CFX_ByteStringC& newkey) { - auto old_it = m_Map.find(oldkey); - if (old_it == m_Map.end()) - return; - - // Avoid 2 constructions of CFX_ByteString. - CFX_ByteString newkey_bytestring = newkey; - auto new_it = m_Map.find(newkey_bytestring); - if (new_it == old_it) - return; - - if (new_it != m_Map.end()) { - new_it->second->Release(); - new_it->second = old_it->second; - } else { - m_Map.insert(std::make_pair(newkey_bytestring, old_it->second)); - } - m_Map.erase(old_it); -} - -void CPDF_Dictionary::SetAtInteger(const CFX_ByteStringC& key, int i) { - SetAt(key, new CPDF_Number(i)); -} - -void CPDF_Dictionary::SetAtName(const CFX_ByteStringC& key, - const CFX_ByteString& name) { - SetAt(key, new CPDF_Name(name)); -} - -void CPDF_Dictionary::SetAtString(const CFX_ByteStringC& key, - const CFX_ByteString& str) { - SetAt(key, new CPDF_String(str, FALSE)); -} - -void CPDF_Dictionary::SetAtReference(const CFX_ByteStringC& key, - CPDF_IndirectObjectHolder* pDoc, - FX_DWORD objnum) { - SetAt(key, new CPDF_Reference(pDoc, objnum)); -} - -void CPDF_Dictionary::AddReference(const CFX_ByteStringC& key, - CPDF_IndirectObjectHolder* pDoc, - FX_DWORD objnum) { - SetAt(key, new CPDF_Reference(pDoc, objnum)); -} - -void CPDF_Dictionary::SetAtNumber(const CFX_ByteStringC& key, FX_FLOAT f) { - CPDF_Number* pNumber = new CPDF_Number(f); - SetAt(key, pNumber); -} - -void CPDF_Dictionary::SetAtBoolean(const CFX_ByteStringC& key, FX_BOOL bValue) { - SetAt(key, new CPDF_Boolean(bValue)); -} - -void CPDF_Dictionary::SetAtRect(const CFX_ByteStringC& key, - const CFX_FloatRect& rect) { - CPDF_Array* pArray = new CPDF_Array; - pArray->AddNumber(rect.left); - pArray->AddNumber(rect.bottom); - pArray->AddNumber(rect.right); - pArray->AddNumber(rect.top); - SetAt(key, pArray); -} - -void CPDF_Dictionary::SetAtMatrix(const CFX_ByteStringC& key, - const CFX_Matrix& matrix) { - CPDF_Array* pArray = new CPDF_Array; - pArray->AddNumber(matrix.a); - pArray->AddNumber(matrix.b); - pArray->AddNumber(matrix.c); - pArray->AddNumber(matrix.d); - pArray->AddNumber(matrix.e); - pArray->AddNumber(matrix.f); - SetAt(key, pArray); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_document.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_document.cpp deleted file mode 100644 index b5789410e5..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_document.cpp +++ /dev/null @@ -1,354 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_document.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fxge/fx_font.h" -#include "core/src/fpdfapi/fpdf_render/render_int.h" -#include "third_party/base/stl_util.h" - -namespace { - -int CountPages(CPDF_Dictionary* pPages, - std::set* visited_pages) { - int count = pPages->GetIntegerBy("Count"); - if (count > 0 && count < FPDF_PAGE_MAX_NUM) { - return count; - } - CPDF_Array* pKidList = pPages->GetArrayBy("Kids"); - if (!pKidList) { - return 0; - } - count = 0; - for (FX_DWORD i = 0; i < pKidList->GetCount(); i++) { - CPDF_Dictionary* pKid = pKidList->GetDictAt(i); - if (!pKid || pdfium::ContainsKey(*visited_pages, pKid)) { - continue; - } - if (pKid->KeyExist("Kids")) { - // Use |visited_pages| to help detect circular references of pages. - pdfium::ScopedSetInsertion local_add(visited_pages, - pKid); - count += CountPages(pKid, visited_pages); - } else { - // This page is a leaf node. - count++; - } - } - pPages->SetAtInteger("Count", count); - return count; -} - -} // namespace - -CPDF_Document::CPDF_Document(CPDF_Parser* pParser) - : CPDF_IndirectObjectHolder(pParser) { - ASSERT(pParser); - m_pRootDict = NULL; - m_pInfoDict = NULL; - m_bLinearized = FALSE; - m_dwFirstPageNo = 0; - m_dwFirstPageObjNum = 0; - m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this); - m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this); -} -CPDF_DocPageData* CPDF_Document::GetValidatePageData() { - if (m_pDocPage) { - return m_pDocPage; - } - m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this); - return m_pDocPage; -} -CPDF_DocRenderData* CPDF_Document::GetValidateRenderData() { - if (m_pDocRender) { - return m_pDocRender; - } - m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this); - return m_pDocRender; -} -void CPDF_Document::LoadDoc() { - m_LastObjNum = m_pParser->GetLastObjNum(); - CPDF_Object* pRootObj = GetIndirectObject(m_pParser->GetRootObjNum()); - if (!pRootObj) { - return; - } - m_pRootDict = pRootObj->GetDict(); - if (!m_pRootDict) { - return; - } - CPDF_Object* pInfoObj = GetIndirectObject(m_pParser->GetInfoObjNum()); - if (pInfoObj) { - m_pInfoDict = pInfoObj->GetDict(); - } - CPDF_Array* pIDArray = m_pParser->GetIDArray(); - if (pIDArray) { - m_ID1 = pIDArray->GetStringAt(0); - m_ID2 = pIDArray->GetStringAt(1); - } - m_PageList.SetSize(RetrievePageCount()); -} -void CPDF_Document::LoadAsynDoc(CPDF_Dictionary* pLinearized) { - m_bLinearized = TRUE; - m_LastObjNum = m_pParser->GetLastObjNum(); - CPDF_Object* pIndirectObj = GetIndirectObject(m_pParser->GetRootObjNum()); - m_pRootDict = pIndirectObj ? pIndirectObj->GetDict() : nullptr; - if (!m_pRootDict) { - return; - } - pIndirectObj = GetIndirectObject(m_pParser->GetInfoObjNum()); - m_pInfoDict = pIndirectObj ? pIndirectObj->GetDict() : nullptr; - CPDF_Array* pIDArray = m_pParser->GetIDArray(); - if (pIDArray) { - m_ID1 = pIDArray->GetStringAt(0); - m_ID2 = pIDArray->GetStringAt(1); - } - FX_DWORD dwPageCount = 0; - CPDF_Object* pCount = pLinearized->GetElement("N"); - if (ToNumber(pCount)) - dwPageCount = pCount->GetInteger(); - - m_PageList.SetSize(dwPageCount); - CPDF_Object* pNo = pLinearized->GetElement("P"); - if (ToNumber(pNo)) - m_dwFirstPageNo = pNo->GetInteger(); - - CPDF_Object* pObjNum = pLinearized->GetElement("O"); - if (ToNumber(pObjNum)) - m_dwFirstPageObjNum = pObjNum->GetInteger(); -} -void CPDF_Document::LoadPages() { - m_PageList.SetSize(RetrievePageCount()); -} -CPDF_Document::~CPDF_Document() { - if (m_pDocPage) { - CPDF_ModuleMgr::Get()->GetPageModule()->ReleaseDoc(this); - CPDF_ModuleMgr::Get()->GetPageModule()->ClearStockFont(this); - } - if (m_pDocRender) { - CPDF_ModuleMgr::Get()->GetRenderModule()->DestroyDocData(m_pDocRender); - } -} -#define FX_MAX_PAGE_LEVEL 1024 -CPDF_Dictionary* CPDF_Document::_FindPDFPage(CPDF_Dictionary* pPages, - int iPage, - int nPagesToGo, - int level) { - CPDF_Array* pKidList = pPages->GetArrayBy("Kids"); - if (!pKidList) { - if (nPagesToGo == 0) { - return pPages; - } - return NULL; - } - if (level >= FX_MAX_PAGE_LEVEL) { - return NULL; - } - int nKids = pKidList->GetCount(); - for (int i = 0; i < nKids; i++) { - CPDF_Dictionary* pKid = pKidList->GetDictAt(i); - if (!pKid) { - nPagesToGo--; - continue; - } - if (pKid == pPages) { - continue; - } - if (!pKid->KeyExist("Kids")) { - if (nPagesToGo == 0) { - return pKid; - } - m_PageList.SetAt(iPage - nPagesToGo, pKid->GetObjNum()); - nPagesToGo--; - } else { - int nPages = pKid->GetIntegerBy("Count"); - if (nPagesToGo < nPages) { - return _FindPDFPage(pKid, iPage, nPagesToGo, level + 1); - } - nPagesToGo -= nPages; - } - } - return NULL; -} - -CPDF_Dictionary* CPDF_Document::GetPage(int iPage) { - if (iPage < 0 || iPage >= m_PageList.GetSize()) - return nullptr; - - if (m_bLinearized && (iPage == (int)m_dwFirstPageNo)) { - if (CPDF_Dictionary* pDict = - ToDictionary(GetIndirectObject(m_dwFirstPageObjNum))) { - return pDict; - } - } - - int objnum = m_PageList.GetAt(iPage); - if (objnum) { - if (CPDF_Dictionary* pDict = ToDictionary(GetIndirectObject(objnum))) - return pDict; - } - - CPDF_Dictionary* pRoot = GetRoot(); - if (!pRoot) - return nullptr; - - CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); - if (!pPages) - return nullptr; - - CPDF_Dictionary* pPage = _FindPDFPage(pPages, iPage, iPage, 0); - if (!pPage) - return nullptr; - - m_PageList.SetAt(iPage, pPage->GetObjNum()); - return pPage; -} - -int CPDF_Document::_FindPageIndex(CPDF_Dictionary* pNode, - FX_DWORD& skip_count, - FX_DWORD objnum, - int& index, - int level) { - if (pNode->KeyExist("Kids")) { - CPDF_Array* pKidList = pNode->GetArrayBy("Kids"); - if (!pKidList) { - return -1; - } - if (level >= FX_MAX_PAGE_LEVEL) { - return -1; - } - FX_DWORD count = pNode->GetIntegerBy("Count"); - if (count <= skip_count) { - skip_count -= count; - index += count; - return -1; - } - if (count && count == pKidList->GetCount()) { - for (FX_DWORD i = 0; i < count; i++) { - if (CPDF_Reference* pKid = ToReference(pKidList->GetElement(i))) { - if (pKid->GetRefObjNum() == objnum) { - m_PageList.SetAt(index + i, objnum); - return index + i; - } - } - } - } - for (FX_DWORD i = 0; i < pKidList->GetCount(); i++) { - CPDF_Dictionary* pKid = pKidList->GetDictAt(i); - if (!pKid) { - continue; - } - if (pKid == pNode) { - continue; - } - int found_index = - _FindPageIndex(pKid, skip_count, objnum, index, level + 1); - if (found_index >= 0) { - return found_index; - } - } - } else { - if (objnum == pNode->GetObjNum()) { - return index; - } - if (skip_count) { - skip_count--; - } - index++; - } - return -1; -} -int CPDF_Document::GetPageIndex(FX_DWORD objnum) { - FX_DWORD nPages = m_PageList.GetSize(); - FX_DWORD skip_count = 0; - FX_BOOL bSkipped = FALSE; - for (FX_DWORD i = 0; i < nPages; i++) { - FX_DWORD objnum1 = m_PageList.GetAt(i); - if (objnum1 == objnum) { - return i; - } - if (!bSkipped && objnum1 == 0) { - skip_count = i; - bSkipped = TRUE; - } - } - CPDF_Dictionary* pRoot = GetRoot(); - if (!pRoot) { - return -1; - } - CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); - if (!pPages) { - return -1; - } - int index = 0; - return _FindPageIndex(pPages, skip_count, objnum, index); -} -int CPDF_Document::GetPageCount() const { - return m_PageList.GetSize(); -} - -int CPDF_Document::RetrievePageCount() const { - CPDF_Dictionary* pRoot = GetRoot(); - if (!pRoot) { - return 0; - } - CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages"); - if (!pPages) { - return 0; - } - if (!pPages->KeyExist("Kids")) { - return 1; - } - std::set visited_pages; - visited_pages.insert(pPages); - return CountPages(pPages, &visited_pages); -} - -FX_DWORD CPDF_Document::GetUserPermissions(FX_BOOL bCheckRevision) const { - if (!m_pParser) { - return (FX_DWORD)-1; - } - return m_pParser->GetPermissions(bCheckRevision); -} - -FX_BOOL CPDF_Document::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) const { - auto it = m_IndirectObjs.find(objnum); - if (it != m_IndirectObjs.end()) { - CPDF_Stream* pStream = it->second->AsStream(); - bForm = pStream && pStream->GetDict()->GetStringBy("Subtype") == "Form"; - return TRUE; - } - if (!m_pParser) { - bForm = FALSE; - return TRUE; - } - return m_pParser->IsFormStream(objnum, bForm); -} - -void CPDF_Document::ClearPageData() { - if (m_pDocPage) - CPDF_ModuleMgr::Get()->GetPageModule()->ClearDoc(this); -} - -void CPDF_Document::ClearRenderData() { - if (m_pDocRender) - CPDF_ModuleMgr::Get()->GetRenderModule()->ClearDocData(m_pDocRender); -} - -void CPDF_Document::ClearRenderFont() { - if (!m_pDocRender) - return; - - CFX_FontCache* pCache = m_pDocRender->GetFontCache(); - if (pCache) - pCache->FreeCache(FALSE); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp deleted file mode 100644 index 84464fcff2..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp +++ /dev/null @@ -1,469 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h" - -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h" - -namespace { - -bool CanReadFromBitStream(const CFX_BitStream* hStream, - const FX_SAFE_DWORD& num_bits) { - return num_bits.IsValid() && - hStream->BitsRemaining() >= num_bits.ValueOrDie(); -} - -} // namespace - -CPDF_HintTables::~CPDF_HintTables() { - m_dwDeltaNObjsArray.RemoveAll(); - m_dwNSharedObjsArray.RemoveAll(); - m_dwSharedObjNumArray.RemoveAll(); - m_dwIdentifierArray.RemoveAll(); -} - -FX_DWORD CPDF_HintTables::GetItemLength( - int index, - const std::vector& szArray) { - if (index < 0 || szArray.size() < 2 || - static_cast(index) > szArray.size() - 2 || - szArray[index] > szArray[index + 1]) { - return 0; - } - return szArray[index + 1] - szArray[index]; -} - -FX_BOOL CPDF_HintTables::ReadPageHintTable(CFX_BitStream* hStream) { - if (!hStream || hStream->IsEOF()) - return FALSE; - - int nStreamOffset = ReadPrimaryHintStreamOffset(); - int nStreamLen = ReadPrimaryHintStreamLength(); - if (nStreamOffset < 0 || nStreamLen < 1) - return FALSE; - - const FX_DWORD kHeaderSize = 288; - if (hStream->BitsRemaining() < kHeaderSize) - return FALSE; - - // Item 1: The least number of objects in a page. - FX_DWORD dwObjLeastNum = hStream->GetBits(32); - - // Item 2: The location of the first page's page object. - FX_DWORD dwFirstObjLoc = hStream->GetBits(32); - if (dwFirstObjLoc > nStreamOffset) { - FX_SAFE_DWORD safeLoc = pdfium::base::checked_cast(nStreamLen); - safeLoc += dwFirstObjLoc; - if (!safeLoc.IsValid()) - return FALSE; - m_szFirstPageObjOffset = - pdfium::base::checked_cast(safeLoc.ValueOrDie()); - } else { - m_szFirstPageObjOffset = - pdfium::base::checked_cast(dwFirstObjLoc); - } - - // Item 3: The number of bits needed to represent the difference - // between the greatest and least number of objects in a page. - FX_DWORD dwDeltaObjectsBits = hStream->GetBits(16); - - // Item 4: The least length of a page in bytes. - FX_DWORD dwPageLeastLen = hStream->GetBits(32); - - // Item 5: The number of bits needed to represent the difference - // between the greatest and least length of a page, in bytes. - FX_DWORD dwDeltaPageLenBits = hStream->GetBits(16); - - // Skip Item 6, 7, 8, 9 total 96 bits. - hStream->SkipBits(96); - - // Item 10: The number of bits needed to represent the greatest - // number of shared object references. - FX_DWORD dwSharedObjBits = hStream->GetBits(16); - - // Item 11: The number of bits needed to represent the numerically - // greatest shared object identifier used by the pages. - FX_DWORD dwSharedIdBits = hStream->GetBits(16); - - // Item 12: The number of bits needed to represent the numerator of - // the fractional position for each shared object reference. For each - // shared object referenced from a page, there is an indication of - // where in the page's content stream the object is first referenced. - FX_DWORD dwSharedNumeratorBits = hStream->GetBits(16); - - // Item 13: Skip Item 13 which has 16 bits. - hStream->SkipBits(16); - - CPDF_Object* pPageNum = m_pLinearizedDict->GetElementValue("N"); - int nPages = pPageNum ? pPageNum->GetInteger() : 0; - if (nPages < 1) - return FALSE; - - FX_SAFE_DWORD required_bits = dwDeltaObjectsBits; - required_bits *= pdfium::base::checked_cast(nPages); - if (!CanReadFromBitStream(hStream, required_bits)) - return FALSE; - - for (int i = 0; i < nPages; ++i) { - FX_SAFE_DWORD safeDeltaObj = hStream->GetBits(dwDeltaObjectsBits); - safeDeltaObj += dwObjLeastNum; - if (!safeDeltaObj.IsValid()) - return FALSE; - m_dwDeltaNObjsArray.Add(safeDeltaObj.ValueOrDie()); - } - hStream->ByteAlign(); - - required_bits = dwDeltaPageLenBits; - required_bits *= pdfium::base::checked_cast(nPages); - if (!CanReadFromBitStream(hStream, required_bits)) - return FALSE; - - CFX_DWordArray dwPageLenArray; - for (int i = 0; i < nPages; ++i) { - FX_SAFE_DWORD safePageLen = hStream->GetBits(dwDeltaPageLenBits); - safePageLen += dwPageLeastLen; - if (!safePageLen.IsValid()) - return FALSE; - dwPageLenArray.Add(safePageLen.ValueOrDie()); - } - - CPDF_Object* pOffsetE = m_pLinearizedDict->GetElementValue("E"); - int nOffsetE = pOffsetE ? pOffsetE->GetInteger() : -1; - if (nOffsetE < 0) - return FALSE; - - CPDF_Object* pFirstPageNum = m_pLinearizedDict->GetElementValue("P"); - int nFirstPageNum = pFirstPageNum ? pFirstPageNum->GetInteger() : 0; - for (int i = 0; i < nPages; ++i) { - if (i == nFirstPageNum) { - m_szPageOffsetArray.push_back(m_szFirstPageObjOffset); - } else if (i == nFirstPageNum + 1) { - if (i == 1) { - m_szPageOffsetArray.push_back(nOffsetE); - } else { - m_szPageOffsetArray.push_back(m_szPageOffsetArray[i - 2] + - dwPageLenArray[i - 2]); - } - } else { - if (i == 0) { - m_szPageOffsetArray.push_back(nOffsetE); - } else { - m_szPageOffsetArray.push_back(m_szPageOffsetArray[i - 1] + - dwPageLenArray[i - 1]); - } - } - } - - if (nPages > 0) { - m_szPageOffsetArray.push_back(m_szPageOffsetArray[nPages - 1] + - dwPageLenArray[nPages - 1]); - } - hStream->ByteAlign(); - - // Number of shared objects. - required_bits = dwSharedObjBits; - required_bits *= pdfium::base::checked_cast(nPages); - if (!CanReadFromBitStream(hStream, required_bits)) - return FALSE; - - for (int i = 0; i < nPages; i++) - m_dwNSharedObjsArray.Add(hStream->GetBits(dwSharedObjBits)); - hStream->ByteAlign(); - - // Array of identifiers, size = nshared_objects. - for (int i = 0; i < nPages; i++) { - required_bits = dwSharedIdBits; - required_bits *= m_dwNSharedObjsArray[i]; - if (!CanReadFromBitStream(hStream, required_bits)) - return FALSE; - - for (int j = 0; j < m_dwNSharedObjsArray[i]; j++) - m_dwIdentifierArray.Add(hStream->GetBits(dwSharedIdBits)); - } - hStream->ByteAlign(); - - for (int i = 0; i < nPages; i++) { - FX_SAFE_DWORD safeSize = m_dwNSharedObjsArray[i]; - safeSize *= dwSharedNumeratorBits; - if (!CanReadFromBitStream(hStream, safeSize)) - return FALSE; - - hStream->SkipBits(safeSize.ValueOrDie()); - } - hStream->ByteAlign(); - - FX_SAFE_DWORD safeTotalPageLen = pdfium::base::checked_cast(nPages); - safeTotalPageLen *= dwDeltaPageLenBits; - if (!CanReadFromBitStream(hStream, safeTotalPageLen)) - return FALSE; - - hStream->SkipBits(safeTotalPageLen.ValueOrDie()); - hStream->ByteAlign(); - return TRUE; -} - -FX_BOOL CPDF_HintTables::ReadSharedObjHintTable(CFX_BitStream* hStream, - FX_DWORD offset) { - if (!hStream || hStream->IsEOF()) - return FALSE; - - int nStreamOffset = ReadPrimaryHintStreamOffset(); - int nStreamLen = ReadPrimaryHintStreamLength(); - if (nStreamOffset < 0 || nStreamLen < 1) - return FALSE; - - FX_SAFE_DWORD bit_offset = offset; - bit_offset *= 8; - if (!bit_offset.IsValid() || hStream->GetPos() > bit_offset.ValueOrDie()) - return FALSE; - hStream->SkipBits(bit_offset.ValueOrDie() - hStream->GetPos()); - - const FX_DWORD kHeaderSize = 192; - if (hStream->BitsRemaining() < kHeaderSize) - return FALSE; - - // Item 1: The object number of the first object in the shared objects - // section. - FX_DWORD dwFirstSharedObjNum = hStream->GetBits(32); - - // Item 2: The location of the first object in the shared objects section. - FX_DWORD dwFirstSharedObjLoc = hStream->GetBits(32); - if (dwFirstSharedObjLoc > nStreamOffset) - dwFirstSharedObjLoc += nStreamLen; - - // Item 3: The number of shared object entries for the first page. - m_nFirstPageSharedObjs = hStream->GetBits(32); - - // Item 4: The number of shared object entries for the shared objects - // section, including the number of shared object entries for the first page. - FX_DWORD dwSharedObjTotal = hStream->GetBits(32); - - // Item 5: The number of bits needed to represent the greatest number of - // objects in a shared object group. Skipped. - hStream->SkipBits(16); - - // Item 6: The least length of a shared object group in bytes. - FX_DWORD dwGroupLeastLen = hStream->GetBits(32); - - // Item 7: The number of bits needed to represent the difference between the - // greatest and least length of a shared object group, in bytes. - FX_DWORD dwDeltaGroupLen = hStream->GetBits(16); - CPDF_Object* pFirstPageObj = m_pLinearizedDict->GetElementValue("O"); - int nFirstPageObjNum = pFirstPageObj ? pFirstPageObj->GetInteger() : -1; - if (nFirstPageObjNum < 0) - return FALSE; - - FX_DWORD dwPrevObjLen = 0; - FX_DWORD dwCurObjLen = 0; - FX_SAFE_DWORD required_bits = dwSharedObjTotal; - required_bits *= dwDeltaGroupLen; - if (!CanReadFromBitStream(hStream, required_bits)) - return FALSE; - - for (FX_DWORD i = 0; i < dwSharedObjTotal; ++i) { - dwPrevObjLen = dwCurObjLen; - FX_SAFE_DWORD safeObjLen = hStream->GetBits(dwDeltaGroupLen); - safeObjLen += dwGroupLeastLen; - if (!safeObjLen.IsValid()) - return FALSE; - - dwCurObjLen = safeObjLen.ValueOrDie(); - if (i < m_nFirstPageSharedObjs) { - m_dwSharedObjNumArray.Add(nFirstPageObjNum + i); - if (i == 0) - m_szSharedObjOffsetArray.push_back(m_szFirstPageObjOffset); - } else { - FX_SAFE_DWORD safeObjNum = dwFirstSharedObjNum; - safeObjNum += i - m_nFirstPageSharedObjs; - if (!safeObjNum.IsValid()) - return FALSE; - - m_dwSharedObjNumArray.Add(safeObjNum.ValueOrDie()); - if (i == m_nFirstPageSharedObjs) { - m_szSharedObjOffsetArray.push_back( - pdfium::base::checked_cast(dwFirstSharedObjLoc)); - } - } - - if (i != 0 && i != m_nFirstPageSharedObjs) { - FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast(dwPrevObjLen); - safeLoc += m_szSharedObjOffsetArray[i - 1]; - if (!safeLoc.IsValid()) - return FALSE; - - m_szSharedObjOffsetArray.push_back(safeLoc.ValueOrDie()); - } - } - - if (dwSharedObjTotal > 0) { - FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast(dwCurObjLen); - safeLoc += m_szSharedObjOffsetArray[dwSharedObjTotal - 1]; - if (!safeLoc.IsValid()) - return FALSE; - - m_szSharedObjOffsetArray.push_back(safeLoc.ValueOrDie()); - } - - hStream->ByteAlign(); - if (hStream->BitsRemaining() < dwSharedObjTotal) - return FALSE; - - hStream->SkipBits(dwSharedObjTotal); - hStream->ByteAlign(); - return TRUE; -} - -FX_BOOL CPDF_HintTables::GetPagePos(int index, - FX_FILESIZE& szPageStartPos, - FX_FILESIZE& szPageLength, - FX_DWORD& dwObjNum) { - if (!m_pLinearizedDict) - return FALSE; - - szPageStartPos = m_szPageOffsetArray[index]; - szPageLength = GetItemLength(index, m_szPageOffsetArray); - - CPDF_Object* pFirstPageNum = m_pLinearizedDict->GetElementValue("P"); - int nFirstPageNum = pFirstPageNum ? pFirstPageNum->GetInteger() : 0; - - CPDF_Object* pFirstPageObjNum = m_pLinearizedDict->GetElementValue("O"); - if (!pFirstPageObjNum) - return FALSE; - - int nFirstPageObjNum = pFirstPageObjNum->GetInteger(); - if (index == nFirstPageNum) { - dwObjNum = nFirstPageObjNum; - return TRUE; - } - - // The object number of remaining pages starts from 1. - dwObjNum = 1; - for (int i = 0; i < index; ++i) { - if (i == nFirstPageNum) - continue; - dwObjNum += m_dwDeltaNObjsArray[i]; - } - return TRUE; -} - -IPDF_DataAvail::DocAvailStatus CPDF_HintTables::CheckPage( - int index, - IPDF_DataAvail::DownloadHints* pHints) { - if (!m_pLinearizedDict || !pHints) - return IPDF_DataAvail::DataError; - - CPDF_Object* pFirstAvailPage = m_pLinearizedDict->GetElementValue("P"); - int nFirstAvailPage = pFirstAvailPage ? pFirstAvailPage->GetInteger() : 0; - if (index == nFirstAvailPage) - return IPDF_DataAvail::DataAvailable; - - FX_DWORD dwLength = GetItemLength(index, m_szPageOffsetArray); - // If two pages have the same offset, it should be treated as an error. - if (!dwLength) - return IPDF_DataAvail::DataError; - - if (!m_pDataAvail->IsDataAvail(m_szPageOffsetArray[index], dwLength, pHints)) - return IPDF_DataAvail::DataNotAvailable; - - // Download data of shared objects in the page. - FX_DWORD offset = 0; - for (int i = 0; i < index; ++i) - offset += m_dwNSharedObjsArray[i]; - - CPDF_Object* pFirstPageObj = m_pLinearizedDict->GetElementValue("O"); - int nFirstPageObjNum = pFirstPageObj ? pFirstPageObj->GetInteger() : -1; - if (nFirstPageObjNum < 0) - return IPDF_DataAvail::DataError; - - FX_DWORD dwIndex = 0; - FX_DWORD dwObjNum = 0; - for (int j = 0; j < m_dwNSharedObjsArray[index]; ++j) { - dwIndex = m_dwIdentifierArray[offset + j]; - if (dwIndex >= m_dwSharedObjNumArray.GetSize()) - return IPDF_DataAvail::DataNotAvailable; - - dwObjNum = m_dwSharedObjNumArray[dwIndex]; - if (dwObjNum >= nFirstPageObjNum && - dwObjNum < nFirstPageObjNum + m_nFirstPageSharedObjs) { - continue; - } - - dwLength = GetItemLength(dwIndex, m_szSharedObjOffsetArray); - // If two objects have the same offset, it should be treated as an error. - if (!dwLength) - return IPDF_DataAvail::DataError; - - if (!m_pDataAvail->IsDataAvail(m_szSharedObjOffsetArray[dwIndex], dwLength, - pHints)) { - return IPDF_DataAvail::DataNotAvailable; - } - } - return IPDF_DataAvail::DataAvailable; -} - -FX_BOOL CPDF_HintTables::LoadHintStream(CPDF_Stream* pHintStream) { - if (!pHintStream || !m_pLinearizedDict) - return FALSE; - - CPDF_Dictionary* pDict = pHintStream->GetDict(); - CPDF_Object* pOffset = pDict ? pDict->GetElement("S") : nullptr; - if (!pOffset || !pOffset->IsNumber()) - return FALSE; - - int shared_hint_table_offset = pOffset->GetInteger(); - CPDF_StreamAcc acc; - acc.LoadAllData(pHintStream); - - FX_DWORD size = acc.GetSize(); - // The header section of page offset hint table is 36 bytes. - // The header section of shared object hint table is 24 bytes. - // Hint table has at least 60 bytes. - const FX_DWORD MIN_STREAM_LEN = 60; - if (size < MIN_STREAM_LEN || shared_hint_table_offset <= 0 || - size < shared_hint_table_offset) { - return FALSE; - } - - CFX_BitStream bs; - bs.Init(acc.GetData(), size); - return ReadPageHintTable(&bs) && - ReadSharedObjHintTable(&bs, pdfium::base::checked_cast( - shared_hint_table_offset)); -} - -int CPDF_HintTables::ReadPrimaryHintStreamOffset() const { - if (!m_pLinearizedDict) - return -1; - - CPDF_Array* pRange = m_pLinearizedDict->GetArrayBy("H"); - if (!pRange) - return -1; - - CPDF_Object* pStreamOffset = pRange->GetElementValue(0); - if (!pStreamOffset) - return -1; - - return pStreamOffset->GetInteger(); -} - -int CPDF_HintTables::ReadPrimaryHintStreamLength() const { - if (!m_pLinearizedDict) - return -1; - - CPDF_Array* pRange = m_pLinearizedDict->GetArrayBy("H"); - if (!pRange) - return -1; - - CPDF_Object* pStreamLen = pRange->GetElementValue(1); - if (!pStreamLen) - return -1; - - return pStreamLen->GetInteger(); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h b/core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h deleted file mode 100644 index 2ddad2f655..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_ -#define CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_ - -#include - -#include "core/include/fpdfapi/ipdf_data_avail.h" -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_stream.h" - -class CFX_BitStream; -class CPDF_DataAvail; -class CPDF_Dictionary; -class CPDF_Stream; - -class CPDF_HintTables { - public: - CPDF_HintTables(CPDF_DataAvail* pDataAvail, CPDF_Dictionary* pLinearized) - : m_pLinearizedDict(pLinearized), - m_pDataAvail(pDataAvail), - m_nFirstPageSharedObjs(0), - m_szFirstPageObjOffset(0) {} - ~CPDF_HintTables(); - - FX_BOOL GetPagePos(int index, - FX_FILESIZE& szPageStartPos, - FX_FILESIZE& szPageLength, - FX_DWORD& dwObjNum); - - IPDF_DataAvail::DocAvailStatus CheckPage( - int index, - IPDF_DataAvail::DownloadHints* pHints); - - FX_BOOL LoadHintStream(CPDF_Stream* pHintStream); - - protected: - FX_BOOL ReadPageHintTable(CFX_BitStream* hStream); - FX_BOOL ReadSharedObjHintTable(CFX_BitStream* hStream, FX_DWORD offset); - FX_DWORD GetItemLength(int index, const std::vector& szArray); - - private: - int ReadPrimaryHintStreamOffset() const; - int ReadPrimaryHintStreamLength() const; - - CPDF_Dictionary* m_pLinearizedDict; - CPDF_DataAvail* m_pDataAvail; - FX_DWORD m_nFirstPageSharedObjs; - FX_FILESIZE m_szFirstPageObjOffset; - CFX_DWordArray m_dwDeltaNObjsArray; - CFX_DWordArray m_dwNSharedObjsArray; - CFX_DWordArray m_dwSharedObjNumArray; - CFX_DWordArray m_dwIdentifierArray; - std::vector m_szPageOffsetArray; - std::vector m_szSharedObjOffsetArray; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_ diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp deleted file mode 100644 index b1606f9857..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" -#include "core/include/fpdfapi/cpdf_object.h" -#include "core/include/fpdfapi/cpdf_parser.h" - -CPDF_IndirectObjectHolder::CPDF_IndirectObjectHolder(CPDF_Parser* pParser) - : m_pParser(pParser), m_LastObjNum(0) { - if (pParser) - m_LastObjNum = m_pParser->GetLastObjNum(); -} - -CPDF_IndirectObjectHolder::~CPDF_IndirectObjectHolder() { - for (const auto& pair : m_IndirectObjs) - pair.second->Destroy(); -} - -CPDF_Object* CPDF_IndirectObjectHolder::GetIndirectObject(FX_DWORD objnum) { - if (objnum == 0) - return nullptr; - - auto it = m_IndirectObjs.find(objnum); - if (it != m_IndirectObjs.end()) - return it->second->GetObjNum() != -1 ? it->second : nullptr; - - if (!m_pParser) - return nullptr; - - CPDF_Object* pObj = m_pParser->ParseIndirectObject(this, objnum); - if (!pObj) - return nullptr; - - pObj->m_ObjNum = objnum; - m_LastObjNum = std::max(m_LastObjNum, objnum); - if (m_IndirectObjs[objnum]) - m_IndirectObjs[objnum]->Destroy(); - - m_IndirectObjs[objnum] = pObj; - return pObj; -} - -FX_DWORD CPDF_IndirectObjectHolder::AddIndirectObject(CPDF_Object* pObj) { - if (pObj->m_ObjNum) - return pObj->m_ObjNum; - - m_LastObjNum++; - m_IndirectObjs[m_LastObjNum] = pObj; - pObj->m_ObjNum = m_LastObjNum; - return m_LastObjNum; -} - -void CPDF_IndirectObjectHolder::ReleaseIndirectObject(FX_DWORD objnum) { - auto it = m_IndirectObjs.find(objnum); - if (it == m_IndirectObjs.end() || it->second->GetObjNum() == -1) - return; - it->second->Destroy(); - m_IndirectObjs.erase(it); -} - -FX_BOOL CPDF_IndirectObjectHolder::InsertIndirectObject(FX_DWORD objnum, - CPDF_Object* pObj) { - if (!objnum || !pObj) - return FALSE; - auto it = m_IndirectObjs.find(objnum); - if (it != m_IndirectObjs.end()) { - if (pObj->GetGenNum() <= it->second->GetGenNum()) { - pObj->Destroy(); - return FALSE; - } - it->second->Destroy(); - } - pObj->m_ObjNum = objnum; - m_IndirectObjs[objnum] = pObj; - m_LastObjNum = std::max(m_LastObjNum, objnum); - return TRUE; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_name.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_name.cpp deleted file mode 100644 index 03d523db19..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_name.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_name.h" - -#include "core/include/fpdfapi/fpdf_parser_decode.h" - -CPDF_Name::CPDF_Name(const CFX_ByteString& str) : m_Name(str) {} - -CPDF_Name::CPDF_Name(const CFX_ByteStringC& str) : m_Name(str) {} - -CPDF_Name::CPDF_Name(const FX_CHAR* str) : m_Name(str) {} - -CPDF_Name::~CPDF_Name() {} - -CPDF_Object::Type CPDF_Name::GetType() const { - return NAME; -} - -CPDF_Object* CPDF_Name::Clone(FX_BOOL bDirect) const { - return new CPDF_Name(m_Name); -} - -CFX_ByteString CPDF_Name::GetString() const { - return m_Name; -} - -CFX_ByteStringC CPDF_Name::GetConstString() const { - return CFX_ByteStringC(m_Name); -} - -void CPDF_Name::SetString(const CFX_ByteString& str) { - m_Name = str; -} - -bool CPDF_Name::IsName() const { - return true; -} - -CPDF_Name* CPDF_Name::AsName() { - return this; -} - -const CPDF_Name* CPDF_Name::AsName() const { - return this; -} - -CFX_WideString CPDF_Name::GetUnicodeText() const { - return PDF_DecodeText(m_Name); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_null.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_null.cpp deleted file mode 100644 index c18449d08f..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_null.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_null.h" - -CPDF_Null::CPDF_Null() {} - -CPDF_Object::Type CPDF_Null::GetType() const { - return NULLOBJ; -} - -CPDF_Object* CPDF_Null::Clone(FX_BOOL bDirect) const { - return new CPDF_Null; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_number.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_number.cpp deleted file mode 100644 index ddc7aa11a2..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_number.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_number.h" - -CPDF_Number::CPDF_Number() : m_bInteger(TRUE), m_Integer(0) {} - -CPDF_Number::CPDF_Number(int value) : m_bInteger(TRUE), m_Integer(value) {} - -CPDF_Number::CPDF_Number(FX_FLOAT value) : m_bInteger(FALSE), m_Float(value) {} - -CPDF_Number::CPDF_Number(const CFX_ByteStringC& str) { - FX_atonum(str, m_bInteger, &m_Integer); -} - -CPDF_Number::~CPDF_Number() {} - -CPDF_Object::Type CPDF_Number::GetType() const { - return NUMBER; -} - -CPDF_Object* CPDF_Number::Clone(FX_BOOL bDirect) const { - return m_bInteger ? new CPDF_Number(m_Integer) : new CPDF_Number(m_Float); -} - -FX_FLOAT CPDF_Number::GetNumber() const { - return m_bInteger ? static_cast(m_Integer) : m_Float; -} - -int CPDF_Number::GetInteger() const { - return m_bInteger ? m_Integer : static_cast(m_Float); -} - -bool CPDF_Number::IsNumber() const { - return true; -} - -CPDF_Number* CPDF_Number::AsNumber() { - return this; -} - -const CPDF_Number* CPDF_Number::AsNumber() const { - return this; -} - -void CPDF_Number::SetString(const CFX_ByteString& str) { - FX_atonum(str, m_bInteger, &m_Integer); -} - -CFX_ByteString CPDF_Number::GetString() const { - return m_bInteger ? CFX_ByteString::FormatInteger(m_Integer, FXFORMAT_SIGNED) - : CFX_ByteString::FormatFloat(m_Float); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_object.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_object.cpp deleted file mode 100644 index 208bca8e6c..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_object.cpp +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_object.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fxcrt/fx_string.h" -#include "third_party/base/stl_util.h" - -CPDF_Object::~CPDF_Object() {} - -CPDF_Object* CPDF_Object::GetDirect() const { - return const_cast(this); -} - -void CPDF_Object::Release() { - if (m_ObjNum) - return; - - Destroy(); -} - -CFX_ByteString CPDF_Object::GetString() const { - return CFX_ByteString(); -} - -CFX_ByteStringC CPDF_Object::GetConstString() const { - return CFX_ByteStringC(); -} - -CFX_WideString CPDF_Object::GetUnicodeText() const { - return CFX_WideString(); -} - -FX_FLOAT CPDF_Object::GetNumber() const { - return 0; -} - -int CPDF_Object::GetInteger() const { - return 0; -} - -CPDF_Dictionary* CPDF_Object::GetDict() const { - return nullptr; -} - -CPDF_Array* CPDF_Object::GetArray() const { - return nullptr; -} - -void CPDF_Object::SetString(const CFX_ByteString& str) { - ASSERT(FALSE); -} - -bool CPDF_Object::IsArray() const { - return false; -} - -bool CPDF_Object::IsBoolean() const { - return false; -} - -bool CPDF_Object::IsDictionary() const { - return false; -} - -bool CPDF_Object::IsName() const { - return false; -} - -bool CPDF_Object::IsNumber() const { - return false; -} - -bool CPDF_Object::IsReference() const { - return false; -} - -bool CPDF_Object::IsStream() const { - return false; -} - -bool CPDF_Object::IsString() const { - return false; -} - -CPDF_Array* CPDF_Object::AsArray() { - return nullptr; -} - -const CPDF_Array* CPDF_Object::AsArray() const { - return nullptr; -} - -CPDF_Boolean* CPDF_Object::AsBoolean() { - return nullptr; -} - -const CPDF_Boolean* CPDF_Object::AsBoolean() const { - return nullptr; -} - -CPDF_Dictionary* CPDF_Object::AsDictionary() { - return nullptr; -} - -const CPDF_Dictionary* CPDF_Object::AsDictionary() const { - return nullptr; -} - -CPDF_Name* CPDF_Object::AsName() { - return nullptr; -} - -const CPDF_Name* CPDF_Object::AsName() const { - return nullptr; -} - -CPDF_Number* CPDF_Object::AsNumber() { - return nullptr; -} - -const CPDF_Number* CPDF_Object::AsNumber() const { - return nullptr; -} - -CPDF_Reference* CPDF_Object::AsReference() { - return nullptr; -} - -const CPDF_Reference* CPDF_Object::AsReference() const { - return nullptr; -} - -CPDF_Stream* CPDF_Object::AsStream() { - return nullptr; -} - -const CPDF_Stream* CPDF_Object::AsStream() const { - return nullptr; -} - -CPDF_String* CPDF_Object::AsString() { - return nullptr; -} - -const CPDF_String* CPDF_Object::AsString() const { - return nullptr; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp deleted file mode 100644 index 87ef34fd6a..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp +++ /dev/null @@ -1,776 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_boolean.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_null.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/cpdf_stream.h" - -#include -#include -#include - -#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" -#include "core/include/fxcrt/fx_basic.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace { - -using ScopedArray = std::unique_ptr>; - -void TestArrayAccessors(const CPDF_Array* arr, - size_t index, - const char* str_val, - const char* const_str_val, - int int_val, - float float_val, - CPDF_Array* arr_val, - CPDF_Dictionary* dict_val, - CPDF_Stream* stream_val) { - EXPECT_STREQ(str_val, arr->GetStringAt(index).c_str()); - EXPECT_STREQ(const_str_val, arr->GetConstStringAt(index).GetCStr()); - EXPECT_EQ(int_val, arr->GetIntegerAt(index)); - EXPECT_EQ(float_val, arr->GetNumberAt(index)); - EXPECT_EQ(float_val, arr->GetFloatAt(index)); - EXPECT_EQ(arr_val, arr->GetArrayAt(index)); - EXPECT_EQ(dict_val, arr->GetDictAt(index)); - EXPECT_EQ(stream_val, arr->GetStreamAt(index)); -} - -} // namespace - -class PDFObjectsTest : public testing::Test { - public: - void SetUp() override { - // Initialize different kinds of objects. - // Boolean objects. - CPDF_Boolean* boolean_false_obj = new CPDF_Boolean(false); - CPDF_Boolean* boolean_true_obj = new CPDF_Boolean(true); - // Number objects. - CPDF_Number* number_int_obj = new CPDF_Number(1245); - CPDF_Number* number_float_obj = new CPDF_Number(9.00345f); - // String objects. - CPDF_String* str_reg_obj = new CPDF_String(L"A simple test"); - CPDF_String* str_spec_obj = new CPDF_String(L"\t\n"); - // Name object. - CPDF_Name* name_obj = new CPDF_Name("space"); - // Array object. - m_ArrayObj = new CPDF_Array; - m_ArrayObj->InsertAt(0, new CPDF_Number(8902)); - m_ArrayObj->InsertAt(1, new CPDF_Name("address")); - // Dictionary object. - m_DictObj = new CPDF_Dictionary; - m_DictObj->SetAt("bool", new CPDF_Boolean(false)); - m_DictObj->SetAt("num", new CPDF_Number(0.23f)); - // Stream object. - const char content[] = "abcdefghijklmnopqrstuvwxyz"; - size_t buf_len = FX_ArraySize(content); - uint8_t* buf = reinterpret_cast(malloc(buf_len)); - memcpy(buf, content, buf_len); - m_StreamDictObj = new CPDF_Dictionary; - m_StreamDictObj->SetAt("key1", new CPDF_String(L" test dict")); - m_StreamDictObj->SetAt("key2", new CPDF_Number(-1)); - CPDF_Stream* stream_obj = new CPDF_Stream(buf, buf_len, m_StreamDictObj); - // Null Object. - CPDF_Null* null_obj = new CPDF_Null; - // All direct objects. - CPDF_Object* objs[] = {boolean_false_obj, boolean_true_obj, number_int_obj, - number_float_obj, str_reg_obj, str_spec_obj, - name_obj, m_ArrayObj, m_DictObj, - stream_obj, null_obj}; - m_DirectObjTypes = { - CPDF_Object::BOOLEAN, CPDF_Object::BOOLEAN, CPDF_Object::NUMBER, - CPDF_Object::NUMBER, CPDF_Object::STRING, CPDF_Object::STRING, - CPDF_Object::NAME, CPDF_Object::ARRAY, CPDF_Object::DICTIONARY, - CPDF_Object::STREAM, CPDF_Object::NULLOBJ}; - for (size_t i = 0; i < FX_ArraySize(objs); ++i) - m_DirectObjs.emplace_back(objs[i]); - - // Indirect references to indirect objects. - m_ObjHolder.reset(new CPDF_IndirectObjectHolder(nullptr)); - m_IndirectObjs = {boolean_true_obj, number_int_obj, str_spec_obj, name_obj, - m_ArrayObj, m_DictObj, stream_obj}; - for (size_t i = 0; i < m_IndirectObjs.size(); ++i) { - m_ObjHolder->AddIndirectObject(m_IndirectObjs[i]); - m_RefObjs.emplace_back(new CPDF_Reference( - m_ObjHolder.get(), m_IndirectObjs[i]->GetObjNum())); - } - } - - bool Equal(CPDF_Object* obj1, CPDF_Object* obj2) { - if (obj1 == obj2) - return true; - if (!obj1 || !obj2 || obj1->GetType() != obj2->GetType()) - return false; - switch (obj1->GetType()) { - case CPDF_Object::BOOLEAN: - return obj1->GetInteger() == obj2->GetInteger(); - case CPDF_Object::NUMBER: - return obj1->AsNumber()->IsInteger() == obj2->AsNumber()->IsInteger() && - obj1->GetInteger() == obj2->GetInteger(); - case CPDF_Object::STRING: - case CPDF_Object::NAME: - return obj1->GetString() == obj2->GetString(); - case CPDF_Object::ARRAY: { - const CPDF_Array* array1 = obj1->AsArray(); - const CPDF_Array* array2 = obj2->AsArray(); - if (array1->GetCount() != array2->GetCount()) - return false; - for (size_t i = 0; i < array1->GetCount(); ++i) { - if (!Equal(array1->GetElement(i), array2->GetElement(i))) - return false; - } - return true; - } - case CPDF_Object::DICTIONARY: { - const CPDF_Dictionary* dict1 = obj1->AsDictionary(); - const CPDF_Dictionary* dict2 = obj2->AsDictionary(); - if (dict1->GetCount() != dict2->GetCount()) - return false; - for (CPDF_Dictionary::const_iterator it = dict1->begin(); - it != dict1->end(); ++it) { - if (!Equal(it->second, dict2->GetElement(it->first))) - return false; - } - return true; - } - case CPDF_Object::NULLOBJ: - return true; - case CPDF_Object::STREAM: { - const CPDF_Stream* stream1 = obj1->AsStream(); - const CPDF_Stream* stream2 = obj2->AsStream(); - if (!stream1->GetDict() && !stream2->GetDict()) - return true; - // Compare dictionaries. - if (!Equal(stream1->GetDict(), stream2->GetDict())) - return false; - // Compare sizes. - if (stream1->GetRawSize() != stream2->GetRawSize()) - return false; - // Compare contents. - // Since this function is used for testing Clone(), only memory based - // streams need to be handled. - if (!stream1->IsMemoryBased() || !stream2->IsMemoryBased()) - return false; - return FXSYS_memcmp(stream1->GetRawData(), stream2->GetRawData(), - stream1->GetRawSize()) == 0; - } - case CPDF_Object::REFERENCE: - return obj1->AsReference()->GetRefObjNum() == - obj2->AsReference()->GetRefObjNum(); - } - return false; - } - - protected: - using ScopedObj = std::unique_ptr>; - - // m_ObjHolder needs to be declared first and destructed last since it also - // refers to some objects in m_DirectObjs. - std::unique_ptr m_ObjHolder; - std::vector m_DirectObjs; - std::vector m_DirectObjTypes; - std::vector m_RefObjs; - CPDF_Dictionary* m_DictObj; - CPDF_Dictionary* m_StreamDictObj; - CPDF_Array* m_ArrayObj; - std::vector m_IndirectObjs; -}; - -TEST_F(PDFObjectsTest, GetString) { - const char* direct_obj_results[] = { - "false", "true", "1245", "9.00345", "A simple test", "\t\n", "space", - "", "", "", ""}; - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_STREQ(direct_obj_results[i], m_DirectObjs[i]->GetString().c_str()); - - // Check indirect references. - const char* indirect_obj_results[] = {"true", "1245", "\t\n", "space", - "", "", ""}; - for (size_t i = 0; i < m_RefObjs.size(); ++i) { - EXPECT_STREQ(indirect_obj_results[i], m_RefObjs[i]->GetString().c_str()); - } -} - -TEST_F(PDFObjectsTest, GetConstString) { - const char* direct_obj_results[] = { - nullptr, nullptr, nullptr, nullptr, "A simple test", "\t\n", - "space", nullptr, nullptr, nullptr, nullptr}; - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) { - if (!direct_obj_results[i]) { - EXPECT_EQ(direct_obj_results[i], - m_DirectObjs[i]->GetConstString().GetCStr()); - } else { - EXPECT_STREQ(direct_obj_results[i], - m_DirectObjs[i]->GetConstString().GetCStr()); - } - } - // Check indirect references. - const char* indirect_obj_results[] = {nullptr, nullptr, "\t\n", "space", - nullptr, nullptr, nullptr}; - for (size_t i = 0; i < m_RefObjs.size(); ++i) { - if (!indirect_obj_results[i]) { - EXPECT_EQ(nullptr, m_RefObjs[i]->GetConstString().GetCStr()); - } else { - EXPECT_STREQ(indirect_obj_results[i], - m_RefObjs[i]->GetConstString().GetCStr()); - } - } -} - -TEST_F(PDFObjectsTest, GetUnicodeText) { - const wchar_t* direct_obj_results[] = { - L"", L"", L"", L"", L"A simple test", - L"\t\n", L"space", L"", L"", L"abcdefghijklmnopqrstuvwxyz", - L""}; - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_STREQ(direct_obj_results[i], - m_DirectObjs[i]->GetUnicodeText().c_str()); - - // Check indirect references. - for (const auto& it : m_RefObjs) - EXPECT_STREQ(L"", it->GetUnicodeText().c_str()); -} - -TEST_F(PDFObjectsTest, GetNumber) { - const FX_FLOAT direct_obj_results[] = {0, 0, 1245, 9.00345f, 0, 0, - 0, 0, 0, 0, 0}; - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetNumber()); - - // Check indirect references. - const FX_FLOAT indirect_obj_results[] = {0, 1245, 0, 0, 0, 0, 0}; - for (size_t i = 0; i < m_RefObjs.size(); ++i) - EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetNumber()); -} - -TEST_F(PDFObjectsTest, GetInteger) { - const int direct_obj_results[] = {0, 1, 1245, 9, 0, 0, 0, 0, 0, 0, 0}; - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetInteger()); - - // Check indirect references. - const int indirect_obj_results[] = {1, 1245, 0, 0, 0, 0, 0}; - for (size_t i = 0; i < m_RefObjs.size(); ++i) - EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetInteger()); -} - -TEST_F(PDFObjectsTest, GetDict) { - const CPDF_Dictionary* direct_obj_results[] = { - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, nullptr, m_DictObj, m_StreamDictObj, nullptr}; - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetDict()); - - // Check indirect references. - const CPDF_Dictionary* indirect_obj_results[] = { - nullptr, nullptr, nullptr, nullptr, nullptr, m_DictObj, m_StreamDictObj}; - for (size_t i = 0; i < m_RefObjs.size(); ++i) - EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetDict()); -} - -TEST_F(PDFObjectsTest, GetArray) { - const CPDF_Array* direct_obj_results[] = { - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - nullptr, m_ArrayObj, nullptr, nullptr, nullptr}; - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetArray()); - - // Check indirect references. - for (const auto& it : m_RefObjs) - EXPECT_EQ(nullptr, it->GetArray()); -} - -TEST_F(PDFObjectsTest, Clone) { - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) { - ScopedObj obj(m_DirectObjs[i]->Clone()); - EXPECT_TRUE(Equal(m_DirectObjs[i].get(), obj.get())); - } - - // Check indirect references. - for (const auto& it : m_RefObjs) { - ScopedObj obj(it->Clone()); - EXPECT_TRUE(Equal(it.get(), obj.get())); - } -} - -TEST_F(PDFObjectsTest, GetType) { - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_EQ(m_DirectObjTypes[i], m_DirectObjs[i]->GetType()); - - // Check indirect references. - for (const auto& it : m_RefObjs) - EXPECT_EQ(CPDF_Object::REFERENCE, it->GetType()); -} - -TEST_F(PDFObjectsTest, GetDirect) { - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->GetDirect()); - - // Check indirect references. - for (size_t i = 0; i < m_RefObjs.size(); ++i) - EXPECT_EQ(m_IndirectObjs[i], m_RefObjs[i]->GetDirect()); -} - -TEST_F(PDFObjectsTest, SetString) { - // Check for direct objects. - const char* const set_values[] = {"true", "fake", "3.125f", "097", - "changed", "", "NewName"}; - const char* expected[] = {"true", "false", "3.125", "97", - "changed", "", "NewName"}; - for (size_t i = 0; i < FX_ArraySize(set_values); ++i) { - m_DirectObjs[i]->SetString(set_values[i]); - EXPECT_STREQ(expected[i], m_DirectObjs[i]->GetString().c_str()); - } -} - -TEST_F(PDFObjectsTest, IsTypeAndAsType) { - // Check for direct objects. - for (size_t i = 0; i < m_DirectObjs.size(); ++i) { - if (m_DirectObjTypes[i] == CPDF_Object::ARRAY) { - EXPECT_TRUE(m_DirectObjs[i]->IsArray()); - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsArray()); - } else { - EXPECT_FALSE(m_DirectObjs[i]->IsArray()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsArray()); - } - - if (m_DirectObjTypes[i] == CPDF_Object::BOOLEAN) { - EXPECT_TRUE(m_DirectObjs[i]->IsBoolean()); - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsBoolean()); - } else { - EXPECT_FALSE(m_DirectObjs[i]->IsBoolean()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsBoolean()); - } - - if (m_DirectObjTypes[i] == CPDF_Object::NAME) { - EXPECT_TRUE(m_DirectObjs[i]->IsName()); - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsName()); - } else { - EXPECT_FALSE(m_DirectObjs[i]->IsName()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsName()); - } - - if (m_DirectObjTypes[i] == CPDF_Object::NUMBER) { - EXPECT_TRUE(m_DirectObjs[i]->IsNumber()); - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsNumber()); - } else { - EXPECT_FALSE(m_DirectObjs[i]->IsNumber()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsNumber()); - } - - if (m_DirectObjTypes[i] == CPDF_Object::STRING) { - EXPECT_TRUE(m_DirectObjs[i]->IsString()); - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsString()); - } else { - EXPECT_FALSE(m_DirectObjs[i]->IsString()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsString()); - } - - if (m_DirectObjTypes[i] == CPDF_Object::DICTIONARY) { - EXPECT_TRUE(m_DirectObjs[i]->IsDictionary()); - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsDictionary()); - } else { - EXPECT_FALSE(m_DirectObjs[i]->IsDictionary()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsDictionary()); - } - - if (m_DirectObjTypes[i] == CPDF_Object::STREAM) { - EXPECT_TRUE(m_DirectObjs[i]->IsStream()); - EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsStream()); - } else { - EXPECT_FALSE(m_DirectObjs[i]->IsStream()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsStream()); - } - - EXPECT_FALSE(m_DirectObjs[i]->IsReference()); - EXPECT_EQ(nullptr, m_DirectObjs[i]->AsReference()); - } - // Check indirect references. - for (size_t i = 0; i < m_RefObjs.size(); ++i) { - EXPECT_TRUE(m_RefObjs[i]->IsReference()); - EXPECT_EQ(m_RefObjs[i].get(), m_RefObjs[i]->AsReference()); - } -} - -TEST(PDFArrayTest, GetMatrix) { - float elems[][6] = {{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, - {1, 2, 3, 4, 5, 6}, - {2.3f, 4.05f, 3, -2, -3, 0.0f}, - {0.05f, 0.1f, 0.56f, 0.67f, 1.34f, 99.9f}}; - for (size_t i = 0; i < FX_ArraySize(elems); ++i) { - ScopedArray arr(new CPDF_Array); - CFX_Matrix matrix(elems[i][0], elems[i][1], elems[i][2], elems[i][3], - elems[i][4], elems[i][5]); - for (size_t j = 0; j < 6; ++j) - arr->AddNumber(elems[i][j]); - CFX_Matrix arr_matrix = arr->GetMatrix(); - EXPECT_EQ(matrix.GetA(), arr_matrix.GetA()); - EXPECT_EQ(matrix.GetB(), arr_matrix.GetB()); - EXPECT_EQ(matrix.GetC(), arr_matrix.GetC()); - EXPECT_EQ(matrix.GetD(), arr_matrix.GetD()); - EXPECT_EQ(matrix.GetE(), arr_matrix.GetE()); - EXPECT_EQ(matrix.GetF(), arr_matrix.GetF()); - } -} - -TEST(PDFArrayTest, GetRect) { - float elems[][4] = {{0.0f, 0.0f, 0.0f, 0.0f}, - {1, 2, 5, 6}, - {2.3f, 4.05f, -3, 0.0f}, - {0.05f, 0.1f, 1.34f, 99.9f}}; - for (size_t i = 0; i < FX_ArraySize(elems); ++i) { - ScopedArray arr(new CPDF_Array); - CFX_FloatRect rect(elems[i]); - for (size_t j = 0; j < 4; ++j) - arr->AddNumber(elems[i][j]); - CFX_FloatRect arr_rect = arr->GetRect(); - EXPECT_EQ(rect.left, arr_rect.left); - EXPECT_EQ(rect.right, arr_rect.right); - EXPECT_EQ(rect.bottom, arr_rect.bottom); - EXPECT_EQ(rect.top, arr_rect.top); - } -} - -TEST(PDFArrayTest, GetTypeAt) { - { - // Boolean array. - bool vals[] = {true, false, false, true, true}; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) - arr->InsertAt(i, new CPDF_Boolean(vals[i])); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - TestArrayAccessors(arr.get(), i, // Array and index. - vals[i] ? "true" : "false", // String value. - nullptr, // Const string value. - vals[i] ? 1 : 0, // Integer value. - 0, // Float value. - nullptr, // Array value. - nullptr, // Dictionary value. - nullptr); // Stream value. - } - } - { - // Integer array. - int vals[] = {10, 0, -345, 2089345456, -1000000000, 567, 93658767}; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) - arr->InsertAt(i, new CPDF_Number(vals[i])); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - char buf[33]; - TestArrayAccessors(arr.get(), i, // Array and index. - FXSYS_itoa(vals[i], buf, 10), // String value. - nullptr, // Const string value. - vals[i], // Integer value. - vals[i], // Float value. - nullptr, // Array value. - nullptr, // Dictionary value. - nullptr); // Stream value. - } - } - { - // Float array. - float vals[] = {0.0f, 0, 10, 10.0f, 0.0345f, - 897.34f, -2.5f, -1.0f, -345.0f, -0.0f}; - const char* expected_str[] = {"0", "0", "10", "10", "0.0345", - "897.34", "-2.5", "-1", "-345", "0"}; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - arr->InsertAt(i, new CPDF_Number(vals[i])); - } - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - TestArrayAccessors(arr.get(), i, // Array and index. - expected_str[i], // String value. - nullptr, // Const string value. - vals[i], // Integer value. - vals[i], // Float value. - nullptr, // Array value. - nullptr, // Dictionary value. - nullptr); // Stream value. - } - } - { - // String and name array - const char* const vals[] = {"this", "adsde$%^", "\r\t", "\"012", - ".", "EYREW", "It is a joke :)"}; - ScopedArray string_array(new CPDF_Array); - ScopedArray name_array(new CPDF_Array); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - string_array->InsertAt(i, new CPDF_String(vals[i], false)); - name_array->InsertAt(i, new CPDF_Name(vals[i])); - } - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - TestArrayAccessors(string_array.get(), i, // Array and index. - vals[i], // String value. - vals[i], // Const string value. - 0, // Integer value. - 0, // Float value. - nullptr, // Array value. - nullptr, // Dictionary value. - nullptr); // Stream value. - TestArrayAccessors(name_array.get(), i, // Array and index. - vals[i], // String value. - vals[i], // Const string value. - 0, // Integer value. - 0, // Float value. - nullptr, // Array value. - nullptr, // Dictionary value. - nullptr); // Stream value. - } - } - { - // Null element array. - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < 3; ++i) - arr->InsertAt(i, new CPDF_Null); - for (size_t i = 0; i < 3; ++i) { - TestArrayAccessors(arr.get(), i, // Array and index. - "", // String value. - nullptr, // Const string value. - 0, // Integer value. - 0, // Float value. - nullptr, // Array value. - nullptr, // Dictionary value. - nullptr); // Stream value. - } - } - { - // Array of array. - CPDF_Array* vals[3]; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < 3; ++i) { - vals[i] = new CPDF_Array; - for (size_t j = 0; j < 3; ++j) { - int value = j + 100; - vals[i]->InsertAt(i, new CPDF_Number(value)); - } - arr->InsertAt(i, vals[i]); - } - for (size_t i = 0; i < 3; ++i) { - TestArrayAccessors(arr.get(), i, // Array and index. - "", // String value. - nullptr, // Const string value. - 0, // Integer value. - 0, // Float value. - vals[i], // Array value. - nullptr, // Dictionary value. - nullptr); // Stream value. - } - } - { - // Dictionary array. - CPDF_Dictionary* vals[3]; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < 3; ++i) { - vals[i] = new CPDF_Dictionary; - for (size_t j = 0; j < 3; ++j) { - std::string key("key"); - char buf[33]; - key.append(FXSYS_itoa(j, buf, 10)); - int value = j + 200; - vals[i]->SetAt(CFX_ByteStringC(key.c_str()), new CPDF_Number(value)); - } - arr->InsertAt(i, vals[i]); - } - for (size_t i = 0; i < 3; ++i) { - TestArrayAccessors(arr.get(), i, // Array and index. - "", // String value. - nullptr, // Const string value. - 0, // Integer value. - 0, // Float value. - nullptr, // Array value. - vals[i], // Dictionary value. - nullptr); // Stream value. - } - } - { - // Stream array. - CPDF_Dictionary* vals[3]; - CPDF_Stream* stream_vals[3]; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < 3; ++i) { - vals[i] = new CPDF_Dictionary; - for (size_t j = 0; j < 3; ++j) { - std::string key("key"); - char buf[33]; - key.append(FXSYS_itoa(j, buf, 10)); - int value = j + 200; - vals[i]->SetAt(CFX_ByteStringC(key.c_str()), new CPDF_Number(value)); - } - uint8_t content[] = "content: this is a stream"; - size_t data_size = FX_ArraySize(content); - uint8_t* data = reinterpret_cast(malloc(data_size)); - memcpy(data, content, data_size); - stream_vals[i] = new CPDF_Stream(data, data_size, vals[i]); - arr->InsertAt(i, stream_vals[i]); - } - for (size_t i = 0; i < 3; ++i) { - TestArrayAccessors(arr.get(), i, // Array and index. - "", // String value. - nullptr, // Const string value. - 0, // Integer value. - 0, // Float value. - nullptr, // Array value. - vals[i], // Dictionary value. - stream_vals[i]); // Stream value. - } - } - { - // Mixed array. - ScopedArray arr(new CPDF_Array); - // Array arr will take ownership of all the objects inserted. - arr->InsertAt(0, new CPDF_Boolean(true)); - arr->InsertAt(1, new CPDF_Boolean(false)); - arr->InsertAt(2, new CPDF_Number(0)); - arr->InsertAt(3, new CPDF_Number(-1234)); - arr->InsertAt(4, new CPDF_Number(2345.0f)); - arr->InsertAt(5, new CPDF_Number(0.05f)); - arr->InsertAt(6, new CPDF_String("", false)); - arr->InsertAt(7, new CPDF_String("It is a test!", false)); - arr->InsertAt(8, new CPDF_Name("NAME")); - arr->InsertAt(9, new CPDF_Name("test")); - arr->InsertAt(10, new CPDF_Null()); - CPDF_Array* arr_val = new CPDF_Array; - arr_val->AddNumber(1); - arr_val->AddNumber(2); - arr->InsertAt(11, arr_val); - CPDF_Dictionary* dict_val = new CPDF_Dictionary; - dict_val->SetAt("key1", new CPDF_String("Linda", false)); - dict_val->SetAt("key2", new CPDF_String("Zoe", false)); - arr->InsertAt(12, dict_val); - CPDF_Dictionary* stream_dict = new CPDF_Dictionary; - stream_dict->SetAt("key1", new CPDF_String("John", false)); - stream_dict->SetAt("key2", new CPDF_String("King", false)); - uint8_t data[] = "A stream for test"; - // The data buffer will be owned by stream object, so it needs to be - // dynamically allocated. - size_t buf_size = sizeof(data); - uint8_t* buf = reinterpret_cast(malloc(buf_size)); - memcpy(buf, data, buf_size); - CPDF_Stream* stream_val = new CPDF_Stream(buf, buf_size, stream_dict); - arr->InsertAt(13, stream_val); - const char* const expected_str[] = { - "true", "false", "0", "-1234", "2345", "0.05", "", - "It is a test!", "NAME", "test", "", "", "", ""}; - const char* const expected_cstr[] = { - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, - "It is a test!", "NAME", "test", nullptr, nullptr, nullptr, nullptr}; - const int expected_int[] = {1, 0, 0, -1234, 2345, 0, 0, - 0, 0, 0, 0, 0, 0, 0}; - const float expected_float[] = {0, 0, 0, -1234, 2345, 0.05f, 0, - 0, 0, 0, 0, 0, 0, 0}; - for (size_t i = 0; i < arr->GetCount(); ++i) { - EXPECT_STREQ(expected_str[i], arr->GetStringAt(i).c_str()); - EXPECT_STREQ(expected_cstr[i], arr->GetConstStringAt(i).GetCStr()); - EXPECT_EQ(expected_int[i], arr->GetIntegerAt(i)); - EXPECT_EQ(expected_float[i], arr->GetNumberAt(i)); - EXPECT_EQ(expected_float[i], arr->GetFloatAt(i)); - if (i == 11) - EXPECT_EQ(arr_val, arr->GetArrayAt(i)); - else - EXPECT_EQ(nullptr, arr->GetArrayAt(i)); - if (i == 13) { - EXPECT_EQ(stream_dict, arr->GetDictAt(i)); - EXPECT_EQ(stream_val, arr->GetStreamAt(i)); - } else { - EXPECT_EQ(nullptr, arr->GetStreamAt(i)); - if (i == 12) - EXPECT_EQ(dict_val, arr->GetDictAt(i)); - else - EXPECT_EQ(nullptr, arr->GetDictAt(i)); - } - } - } -} - -TEST(PDFArrayTest, AddNumber) { - float vals[] = {1.0f, -1.0f, 0, 0.456734f, - 12345.54321f, 0.5f, 1000, 0.000045f}; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) - arr->AddNumber(vals[i]); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - EXPECT_EQ(CPDF_Object::NUMBER, arr->GetElement(i)->GetType()); - EXPECT_EQ(vals[i], arr->GetElement(i)->GetNumber()); - } -} - -TEST(PDFArrayTest, AddInteger) { - int vals[] = {0, 1, 934435456, 876, 10000, -1, -24354656, -100}; - ScopedArray arr(new CPDF_Array); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) - arr->AddInteger(vals[i]); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - EXPECT_EQ(CPDF_Object::NUMBER, arr->GetElement(i)->GetType()); - EXPECT_EQ(vals[i], arr->GetElement(i)->GetNumber()); - } -} - -TEST(PDFArrayTest, AddStringAndName) { - const char* vals[] = {"", "a", "ehjhRIOYTTFdfcdnv", "122323", - "$#%^&**", " ", "This is a test.\r\n"}; - ScopedArray string_array(new CPDF_Array); - ScopedArray name_array(new CPDF_Array); - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - string_array->AddString(vals[i]); - name_array->AddName(vals[i]); - } - for (size_t i = 0; i < FX_ArraySize(vals); ++i) { - EXPECT_EQ(CPDF_Object::STRING, string_array->GetElement(i)->GetType()); - EXPECT_STREQ(vals[i], string_array->GetElement(i)->GetString().c_str()); - EXPECT_EQ(CPDF_Object::NAME, name_array->GetElement(i)->GetType()); - EXPECT_STREQ(vals[i], name_array->GetElement(i)->GetString().c_str()); - } -} - -TEST(PDFArrayTest, AddReferenceAndGetElement) { - std::unique_ptr holder( - new CPDF_IndirectObjectHolder(nullptr)); - CPDF_Boolean* boolean_obj = new CPDF_Boolean(true); - CPDF_Number* int_obj = new CPDF_Number(-1234); - CPDF_Number* float_obj = new CPDF_Number(2345.089f); - CPDF_String* str_obj = new CPDF_String("Adsfdsf 343434 %&&*\n", false); - CPDF_Name* name_obj = new CPDF_Name("Title:"); - CPDF_Null* null_obj = new CPDF_Null(); - CPDF_Object* indirect_objs[] = {boolean_obj, int_obj, float_obj, - str_obj, name_obj, null_obj}; - unsigned int obj_nums[] = {2, 4, 7, 2345, 799887, 1}; - ScopedArray arr(new CPDF_Array); - ScopedArray arr1(new CPDF_Array); - // Create two arrays of references by different AddReference() APIs. - for (size_t i = 0; i < FX_ArraySize(indirect_objs); ++i) { - // All the indirect objects inserted will be owned by holder. - holder->InsertIndirectObject(obj_nums[i], indirect_objs[i]); - arr->AddReference(holder.get(), obj_nums[i]); - arr1->AddReference(holder.get(), indirect_objs[i]); - } - // Check indirect objects. - for (size_t i = 0; i < FX_ArraySize(obj_nums); ++i) - EXPECT_EQ(indirect_objs[i], holder->GetIndirectObject(obj_nums[i])); - // Check arrays. - EXPECT_EQ(arr->GetCount(), arr1->GetCount()); - for (size_t i = 0; i < arr->GetCount(); ++i) { - EXPECT_EQ(CPDF_Object::REFERENCE, arr->GetElement(i)->GetType()); - EXPECT_EQ(indirect_objs[i], arr->GetElement(i)->GetDirect()); - EXPECT_EQ(indirect_objs[i], arr->GetElementValue(i)); - EXPECT_EQ(CPDF_Object::REFERENCE, arr1->GetElement(i)->GetType()); - EXPECT_EQ(indirect_objs[i], arr1->GetElement(i)->GetDirect()); - EXPECT_EQ(indirect_objs[i], arr1->GetElementValue(i)); - } -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_parser.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_parser.cpp deleted file mode 100644 index e9332901c0..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_parser.cpp +++ /dev/null @@ -1,1652 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_parser.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/ipdf_crypto_handler.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" -#include "third_party/base/stl_util.h" - -namespace { - -// A limit on the size of the xref table. Theoretical limits are higher, but -// this may be large enough in practice. -const int32_t kMaxXRefSize = 1048576; - -// A limit on the maximum object number in the xref table. Theoretical limits -// are higher, but this may be large enough in practice. -const FX_DWORD kMaxObjectNumber = 1048576; - -FX_DWORD GetVarInt(const uint8_t* p, int32_t n) { - FX_DWORD result = 0; - for (int32_t i = 0; i < n; ++i) - result = result * 256 + p[i]; - return result; -} - -int32_t GetStreamNCount(CPDF_StreamAcc* pObjStream) { - return pObjStream->GetDict()->GetIntegerBy("N"); -} - -int32_t GetStreamFirst(CPDF_StreamAcc* pObjStream) { - return pObjStream->GetDict()->GetIntegerBy("First"); -} - -} // namespace - -CPDF_Parser::CPDF_Parser() - : m_pDocument(nullptr), - m_bOwnFileRead(true), - m_FileVersion(0), - m_pTrailer(nullptr), - m_pEncryptDict(nullptr), - m_bVersionUpdated(false), - m_pLinearized(nullptr), - m_dwFirstPageNo(0), - m_dwXrefStartObjNum(0) { - m_pSyntax.reset(new CPDF_SyntaxParser); -} - -CPDF_Parser::~CPDF_Parser() { - CloseParser(); -} - -FX_DWORD CPDF_Parser::GetLastObjNum() const { - return m_ObjectInfo.empty() ? 0 : m_ObjectInfo.rbegin()->first; -} - -bool CPDF_Parser::IsValidObjectNumber(FX_DWORD objnum) const { - return !m_ObjectInfo.empty() && objnum <= m_ObjectInfo.rbegin()->first; -} - -FX_FILESIZE CPDF_Parser::GetObjectPositionOrZero(FX_DWORD objnum) const { - auto it = m_ObjectInfo.find(objnum); - return it != m_ObjectInfo.end() ? it->second.pos : 0; -} - -uint8_t CPDF_Parser::GetObjectType(FX_DWORD objnum) const { - ASSERT(IsValidObjectNumber(objnum)); - auto it = m_ObjectInfo.find(objnum); - return it != m_ObjectInfo.end() ? it->second.type : 0; -} - -uint16_t CPDF_Parser::GetObjectGenNum(FX_DWORD objnum) const { - ASSERT(IsValidObjectNumber(objnum)); - auto it = m_ObjectInfo.find(objnum); - return it != m_ObjectInfo.end() ? it->second.gennum : 0; -} - -bool CPDF_Parser::IsObjectFreeOrNull(FX_DWORD objnum) const { - uint8_t type = GetObjectType(objnum); - return type == 0 || type == 255; -} - -void CPDF_Parser::SetEncryptDictionary(CPDF_Dictionary* pDict) { - m_pEncryptDict = pDict; -} - -IPDF_CryptoHandler* CPDF_Parser::GetCryptoHandler() { - return m_pSyntax->m_pCryptoHandler.get(); -} - -IFX_FileRead* CPDF_Parser::GetFileAccess() const { - return m_pSyntax->m_pFileAccess; -} - -void CPDF_Parser::ShrinkObjectMap(FX_DWORD objnum) { - if (objnum == 0) { - m_ObjectInfo.clear(); - return; - } - - auto it = m_ObjectInfo.lower_bound(objnum); - while (it != m_ObjectInfo.end()) { - auto saved_it = it++; - m_ObjectInfo.erase(saved_it); - } - - if (!pdfium::ContainsKey(m_ObjectInfo, objnum - 1)) - m_ObjectInfo[objnum - 1].pos = 0; -} - -void CPDF_Parser::CloseParser() { - m_bVersionUpdated = false; - delete m_pDocument; - m_pDocument = nullptr; - - if (m_pTrailer) { - m_pTrailer->Release(); - m_pTrailer = nullptr; - } - ReleaseEncryptHandler(); - SetEncryptDictionary(nullptr); - - if (m_bOwnFileRead && m_pSyntax->m_pFileAccess) { - m_pSyntax->m_pFileAccess->Release(); - m_pSyntax->m_pFileAccess = nullptr; - } - - m_ObjectStreamMap.clear(); - m_ObjCache.clear(); - m_SortedOffset.clear(); - m_ObjectInfo.clear(); - - int32_t iLen = m_Trailers.GetSize(); - for (int32_t i = 0; i < iLen; ++i) { - if (CPDF_Dictionary* trailer = m_Trailers.GetAt(i)) - trailer->Release(); - } - m_Trailers.RemoveAll(); - - if (m_pLinearized) { - m_pLinearized->Release(); - m_pLinearized = nullptr; - } -} - -CPDF_Parser::Error CPDF_Parser::StartParse(IFX_FileRead* pFileAccess) { - CloseParser(); - - m_bXRefStream = FALSE; - m_LastXRefOffset = 0; - m_bOwnFileRead = true; - - int32_t offset = GetHeaderOffset(pFileAccess); - if (offset == -1) { - if (pFileAccess) - pFileAccess->Release(); - return FORMAT_ERROR; - } - m_pSyntax->InitParser(pFileAccess, offset); - - uint8_t ch; - if (!m_pSyntax->GetCharAt(5, ch)) - return FORMAT_ERROR; - if (std::isdigit(ch)) - m_FileVersion = FXSYS_toDecimalDigit(static_cast(ch)) * 10; - - if (!m_pSyntax->GetCharAt(7, ch)) - return FORMAT_ERROR; - if (std::isdigit(ch)) - m_FileVersion += FXSYS_toDecimalDigit(static_cast(ch)); - - if (m_pSyntax->m_FileLen < m_pSyntax->m_HeaderOffset + 9) - return FORMAT_ERROR; - - m_pSyntax->RestorePos(m_pSyntax->m_FileLen - m_pSyntax->m_HeaderOffset - 9); - m_pDocument = new CPDF_Document(this); - - FX_BOOL bXRefRebuilt = FALSE; - if (m_pSyntax->SearchWord("startxref", TRUE, FALSE, 4096)) { - m_SortedOffset.insert(m_pSyntax->SavePos()); - m_pSyntax->GetKeyword(); - - bool bNumber; - CFX_ByteString xrefpos_str = m_pSyntax->GetNextWord(&bNumber); - if (!bNumber) - return FORMAT_ERROR; - - m_LastXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str); - if (!LoadAllCrossRefV4(m_LastXRefOffset) && - !LoadAllCrossRefV5(m_LastXRefOffset)) { - if (!RebuildCrossRef()) - return FORMAT_ERROR; - - bXRefRebuilt = TRUE; - m_LastXRefOffset = 0; - } - } else { - if (!RebuildCrossRef()) - return FORMAT_ERROR; - - bXRefRebuilt = TRUE; - } - Error eRet = SetEncryptHandler(); - if (eRet != SUCCESS) - return eRet; - - m_pDocument->LoadDoc(); - if (!m_pDocument->GetRoot() || m_pDocument->GetPageCount() == 0) { - if (bXRefRebuilt) - return FORMAT_ERROR; - - ReleaseEncryptHandler(); - if (!RebuildCrossRef()) - return FORMAT_ERROR; - - eRet = SetEncryptHandler(); - if (eRet != SUCCESS) - return eRet; - - m_pDocument->LoadDoc(); - if (!m_pDocument->GetRoot()) - return FORMAT_ERROR; - } - if (GetRootObjNum() == 0) { - ReleaseEncryptHandler(); - if (!RebuildCrossRef() || GetRootObjNum() == 0) - return FORMAT_ERROR; - - eRet = SetEncryptHandler(); - if (eRet != SUCCESS) - return eRet; - } - if (m_pSecurityHandler && !m_pSecurityHandler->IsMetadataEncrypted()) { - CPDF_Reference* pMetadata = - ToReference(m_pDocument->GetRoot()->GetElement("Metadata")); - if (pMetadata) - m_pSyntax->m_MetadataObjnum = pMetadata->GetRefObjNum(); - } - return SUCCESS; -} -CPDF_Parser::Error CPDF_Parser::SetEncryptHandler() { - ReleaseEncryptHandler(); - SetEncryptDictionary(nullptr); - - if (!m_pTrailer) - return FORMAT_ERROR; - - CPDF_Object* pEncryptObj = m_pTrailer->GetElement("Encrypt"); - if (pEncryptObj) { - if (CPDF_Dictionary* pEncryptDict = pEncryptObj->AsDictionary()) { - SetEncryptDictionary(pEncryptDict); - } else if (CPDF_Reference* pRef = pEncryptObj->AsReference()) { - pEncryptObj = m_pDocument->GetIndirectObject(pRef->GetRefObjNum()); - if (pEncryptObj) - SetEncryptDictionary(pEncryptObj->GetDict()); - } - } - - if (m_pEncryptDict) { - CFX_ByteString filter = m_pEncryptDict->GetStringBy("Filter"); - std::unique_ptr pSecurityHandler; - Error err = HANDLER_ERROR; - if (filter == "Standard") { - pSecurityHandler.reset(new CPDF_StandardSecurityHandler); - err = PASSWORD_ERROR; - } - if (!pSecurityHandler) - return HANDLER_ERROR; - - if (!pSecurityHandler->OnInit(this, m_pEncryptDict)) - return err; - - m_pSecurityHandler = std::move(pSecurityHandler); - std::unique_ptr pCryptoHandler( - m_pSecurityHandler->CreateCryptoHandler()); - if (!pCryptoHandler->Init(m_pEncryptDict, m_pSecurityHandler.get())) - return HANDLER_ERROR; - m_pSyntax->SetEncrypt(std::move(pCryptoHandler)); - } - return SUCCESS; -} - -void CPDF_Parser::ReleaseEncryptHandler() { - m_pSyntax->m_pCryptoHandler.reset(); - m_pSecurityHandler.reset(); -} - -FX_FILESIZE CPDF_Parser::GetObjectOffset(FX_DWORD objnum) const { - if (!IsValidObjectNumber(objnum)) - return 0; - - if (GetObjectType(objnum) == 1) - return GetObjectPositionOrZero(objnum); - - if (GetObjectType(objnum) == 2) { - FX_FILESIZE pos = GetObjectPositionOrZero(objnum); - return GetObjectPositionOrZero(pos); - } - return 0; -} - -FX_BOOL CPDF_Parser::LoadAllCrossRefV4(FX_FILESIZE xrefpos) { - if (!LoadCrossRefV4(xrefpos, 0, TRUE)) - return FALSE; - - m_pTrailer = LoadTrailerV4(); - if (!m_pTrailer) - return FALSE; - - int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); - if (xrefsize > 0 && xrefsize <= kMaxXRefSize) - ShrinkObjectMap(xrefsize); - - std::vector CrossRefList; - std::vector XRefStreamList; - std::set seen_xrefpos; - - CrossRefList.push_back(xrefpos); - XRefStreamList.push_back(GetDirectInteger(m_pTrailer, "XRefStm")); - seen_xrefpos.insert(xrefpos); - - // When |m_pTrailer| doesn't have Prev entry or Prev entry value is not - // numerical, GetDirectInteger() returns 0. Loading will end. - xrefpos = GetDirectInteger(m_pTrailer, "Prev"); - while (xrefpos) { - // Check for circular references. - if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) - return FALSE; - - seen_xrefpos.insert(xrefpos); - - // SLOW ... - CrossRefList.insert(CrossRefList.begin(), xrefpos); - LoadCrossRefV4(xrefpos, 0, TRUE); - - std::unique_ptr> pDict( - LoadTrailerV4()); - if (!pDict) - return FALSE; - - xrefpos = GetDirectInteger(pDict.get(), "Prev"); - - // SLOW ... - XRefStreamList.insert(XRefStreamList.begin(), - pDict->GetIntegerBy("XRefStm")); - m_Trailers.Add(pDict.release()); - } - - for (size_t i = 0; i < CrossRefList.size(); ++i) { - if (!LoadCrossRefV4(CrossRefList[i], XRefStreamList[i], FALSE)) - return FALSE; - } - return TRUE; -} - -FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV4(FX_FILESIZE xrefpos, - FX_DWORD dwObjCount) { - if (!LoadLinearizedCrossRefV4(xrefpos, dwObjCount)) - return FALSE; - - m_pTrailer = LoadTrailerV4(); - if (!m_pTrailer) - return FALSE; - - int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); - if (xrefsize == 0) - return FALSE; - - std::vector CrossRefList; - std::vector XRefStreamList; - std::set seen_xrefpos; - - CrossRefList.push_back(xrefpos); - XRefStreamList.push_back(GetDirectInteger(m_pTrailer, "XRefStm")); - seen_xrefpos.insert(xrefpos); - - xrefpos = GetDirectInteger(m_pTrailer, "Prev"); - while (xrefpos) { - // Check for circular references. - if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) - return FALSE; - - seen_xrefpos.insert(xrefpos); - - // SLOW ... - CrossRefList.insert(CrossRefList.begin(), xrefpos); - LoadCrossRefV4(xrefpos, 0, TRUE); - - std::unique_ptr> pDict( - LoadTrailerV4()); - if (!pDict) - return FALSE; - - xrefpos = GetDirectInteger(pDict.get(), "Prev"); - - // SLOW ... - XRefStreamList.insert(XRefStreamList.begin(), - pDict->GetIntegerBy("XRefStm")); - m_Trailers.Add(pDict.release()); - } - - for (size_t i = 1; i < CrossRefList.size(); ++i) { - if (!LoadCrossRefV4(CrossRefList[i], XRefStreamList[i], FALSE)) - return FALSE; - } - return TRUE; -} - -FX_BOOL CPDF_Parser::LoadLinearizedCrossRefV4(FX_FILESIZE pos, - FX_DWORD dwObjCount) { - FX_FILESIZE dwStartPos = pos - m_pSyntax->m_HeaderOffset; - - m_pSyntax->RestorePos(dwStartPos); - m_SortedOffset.insert(pos); - - FX_DWORD start_objnum = 0; - FX_DWORD count = dwObjCount; - FX_FILESIZE SavedPos = m_pSyntax->SavePos(); - - const int32_t recordsize = 20; - std::vector buf(1024 * recordsize + 1); - buf[1024 * recordsize] = '\0'; - - int32_t nBlocks = count / 1024 + 1; - for (int32_t block = 0; block < nBlocks; block++) { - int32_t block_size = block == nBlocks - 1 ? count % 1024 : 1024; - FX_DWORD dwReadSize = block_size * recordsize; - if ((FX_FILESIZE)(dwStartPos + dwReadSize) > m_pSyntax->m_FileLen) - return FALSE; - - if (!m_pSyntax->ReadBlock(reinterpret_cast(buf.data()), - dwReadSize)) { - return FALSE; - } - - for (int32_t i = 0; i < block_size; i++) { - FX_DWORD objnum = start_objnum + block * 1024 + i; - char* pEntry = &buf[i * recordsize]; - if (pEntry[17] == 'f') { - m_ObjectInfo[objnum].pos = 0; - m_ObjectInfo[objnum].type = 0; - } else { - int32_t offset = FXSYS_atoi(pEntry); - if (offset == 0) { - for (int32_t c = 0; c < 10; c++) { - if (!std::isdigit(pEntry[c])) - return FALSE; - } - } - - m_ObjectInfo[objnum].pos = offset; - int32_t version = FXSYS_atoi(pEntry + 11); - if (version >= 1) - m_bVersionUpdated = true; - - m_ObjectInfo[objnum].gennum = version; - if (m_ObjectInfo[objnum].pos < m_pSyntax->m_FileLen) - m_SortedOffset.insert(m_ObjectInfo[objnum].pos); - - m_ObjectInfo[objnum].type = 1; - } - } - } - m_pSyntax->RestorePos(SavedPos + count * recordsize); - return TRUE; -} - -bool CPDF_Parser::LoadCrossRefV4(FX_FILESIZE pos, - FX_FILESIZE streampos, - FX_BOOL bSkip) { - m_pSyntax->RestorePos(pos); - if (m_pSyntax->GetKeyword() != "xref") - return false; - - m_SortedOffset.insert(pos); - if (streampos) - m_SortedOffset.insert(streampos); - - while (1) { - FX_FILESIZE SavedPos = m_pSyntax->SavePos(); - bool bIsNumber; - CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); - if (word.IsEmpty()) - return false; - - if (!bIsNumber) { - m_pSyntax->RestorePos(SavedPos); - break; - } - - FX_DWORD start_objnum = FXSYS_atoui(word); - if (start_objnum >= kMaxObjectNumber) - return false; - - FX_DWORD count = m_pSyntax->GetDirectNum(); - m_pSyntax->ToNextWord(); - SavedPos = m_pSyntax->SavePos(); - const int32_t recordsize = 20; - - m_dwXrefStartObjNum = start_objnum; - if (!bSkip) { - std::vector buf(1024 * recordsize + 1); - buf[1024 * recordsize] = '\0'; - - int32_t nBlocks = count / 1024 + 1; - for (int32_t block = 0; block < nBlocks; block++) { - int32_t block_size = block == nBlocks - 1 ? count % 1024 : 1024; - m_pSyntax->ReadBlock(reinterpret_cast(buf.data()), - block_size * recordsize); - - for (int32_t i = 0; i < block_size; i++) { - FX_DWORD objnum = start_objnum + block * 1024 + i; - char* pEntry = &buf[i * recordsize]; - if (pEntry[17] == 'f') { - m_ObjectInfo[objnum].pos = 0; - m_ObjectInfo[objnum].type = 0; - } else { - FX_FILESIZE offset = (FX_FILESIZE)FXSYS_atoi64(pEntry); - if (offset == 0) { - for (int32_t c = 0; c < 10; c++) { - if (!std::isdigit(pEntry[c])) - return false; - } - } - - m_ObjectInfo[objnum].pos = offset; - int32_t version = FXSYS_atoi(pEntry + 11); - if (version >= 1) - m_bVersionUpdated = true; - - m_ObjectInfo[objnum].gennum = version; - if (m_ObjectInfo[objnum].pos < m_pSyntax->m_FileLen) - m_SortedOffset.insert(m_ObjectInfo[objnum].pos); - - m_ObjectInfo[objnum].type = 1; - } - } - } - } - m_pSyntax->RestorePos(SavedPos + count * recordsize); - } - return !streampos || LoadCrossRefV5(&streampos, FALSE); -} - -FX_BOOL CPDF_Parser::LoadAllCrossRefV5(FX_FILESIZE xrefpos) { - if (!LoadCrossRefV5(&xrefpos, TRUE)) - return FALSE; - - std::set seen_xrefpos; - while (xrefpos) { - seen_xrefpos.insert(xrefpos); - if (!LoadCrossRefV5(&xrefpos, FALSE)) - return FALSE; - - // Check for circular references. - if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) - return FALSE; - } - m_ObjectStreamMap.clear(); - m_bXRefStream = TRUE; - return TRUE; -} - -FX_BOOL CPDF_Parser::RebuildCrossRef() { - m_ObjectInfo.clear(); - m_SortedOffset.clear(); - if (m_pTrailer) { - m_pTrailer->Release(); - m_pTrailer = nullptr; - } - - ParserState state = ParserState::kDefault; - - int32_t inside_index = 0; - FX_DWORD objnum = 0; - FX_DWORD gennum = 0; - int32_t depth = 0; - - const FX_DWORD kBufferSize = 4096; - std::vector buffer(kBufferSize); - - FX_FILESIZE pos = m_pSyntax->m_HeaderOffset; - FX_FILESIZE start_pos = 0; - FX_FILESIZE start_pos1 = 0; - FX_FILESIZE last_obj = -1; - FX_FILESIZE last_xref = -1; - FX_FILESIZE last_trailer = -1; - - while (pos < m_pSyntax->m_FileLen) { - const FX_FILESIZE saved_pos = pos; - bool bOverFlow = false; - FX_DWORD size = - std::min((FX_DWORD)(m_pSyntax->m_FileLen - pos), kBufferSize); - if (!m_pSyntax->m_pFileAccess->ReadBlock(buffer.data(), pos, size)) - break; - - for (FX_DWORD i = 0; i < size; i++) { - uint8_t byte = buffer[i]; - switch (state) { - case ParserState::kDefault: - if (PDFCharIsWhitespace(byte)) { - state = ParserState::kWhitespace; - } else if (std::isdigit(byte)) { - --i; - state = ParserState::kWhitespace; - } else if (byte == '%') { - inside_index = 0; - state = ParserState::kComment; - } else if (byte == '(') { - state = ParserState::kString; - depth = 1; - } else if (byte == '<') { - inside_index = 1; - state = ParserState::kHexString; - } else if (byte == '\\') { - state = ParserState::kEscapedString; - } else if (byte == 't') { - state = ParserState::kTrailer; - inside_index = 1; - } - break; - - case ParserState::kWhitespace: - if (std::isdigit(byte)) { - start_pos = pos + i; - state = ParserState::kObjNum; - objnum = FXSYS_toDecimalDigit(static_cast(byte)); - } else if (byte == 't') { - state = ParserState::kTrailer; - inside_index = 1; - } else if (byte == 'x') { - state = ParserState::kXref; - inside_index = 1; - } else if (!PDFCharIsWhitespace(byte)) { - --i; - state = ParserState::kDefault; - } - break; - - case ParserState::kObjNum: - if (std::isdigit(byte)) { - objnum = - objnum * 10 + FXSYS_toDecimalDigit(static_cast(byte)); - } else if (PDFCharIsWhitespace(byte)) { - state = ParserState::kPostObjNum; - } else { - --i; - state = ParserState::kEndObj; - inside_index = 0; - } - break; - - case ParserState::kPostObjNum: - if (std::isdigit(byte)) { - start_pos1 = pos + i; - state = ParserState::kGenNum; - gennum = FXSYS_toDecimalDigit(static_cast(byte)); - } else if (byte == 't') { - state = ParserState::kTrailer; - inside_index = 1; - } else if (!PDFCharIsWhitespace(byte)) { - --i; - state = ParserState::kDefault; - } - break; - - case ParserState::kGenNum: - if (std::isdigit(byte)) { - gennum = - gennum * 10 + FXSYS_toDecimalDigit(static_cast(byte)); - } else if (PDFCharIsWhitespace(byte)) { - state = ParserState::kPostGenNum; - } else { - --i; - state = ParserState::kDefault; - } - break; - - case ParserState::kPostGenNum: - if (byte == 'o') { - state = ParserState::kBeginObj; - inside_index = 1; - } else if (std::isdigit(byte)) { - objnum = gennum; - gennum = FXSYS_toDecimalDigit(static_cast(byte)); - start_pos = start_pos1; - start_pos1 = pos + i; - state = ParserState::kGenNum; - } else if (byte == 't') { - state = ParserState::kTrailer; - inside_index = 1; - } else if (!PDFCharIsWhitespace(byte)) { - --i; - state = ParserState::kDefault; - } - break; - - case ParserState::kBeginObj: - switch (inside_index) { - case 1: - if (byte != 'b') { - --i; - state = ParserState::kDefault; - } else { - inside_index++; - } - break; - case 2: - if (byte != 'j') { - --i; - state = ParserState::kDefault; - } else { - inside_index++; - } - break; - case 3: - if (PDFCharIsWhitespace(byte) || PDFCharIsDelimiter(byte)) { - FX_FILESIZE obj_pos = start_pos - m_pSyntax->m_HeaderOffset; - m_SortedOffset.insert(obj_pos); - last_obj = start_pos; - FX_FILESIZE obj_end = 0; - CPDF_Object* pObject = ParseIndirectObjectAtByStrict( - m_pDocument, obj_pos, objnum, &obj_end); - if (CPDF_Stream* pStream = ToStream(pObject)) { - if (CPDF_Dictionary* pDict = pStream->GetDict()) { - if ((pDict->KeyExist("Type")) && - (pDict->GetStringBy("Type") == "XRef" && - pDict->KeyExist("Size"))) { - CPDF_Object* pRoot = pDict->GetElement("Root"); - if (pRoot && pRoot->GetDict() && - pRoot->GetDict()->GetElement("Pages")) { - if (m_pTrailer) - m_pTrailer->Release(); - m_pTrailer = ToDictionary(pDict->Clone()); - } - } - } - } - - FX_FILESIZE offset = 0; - m_pSyntax->RestorePos(obj_pos); - offset = m_pSyntax->FindTag("obj", 0); - if (offset == -1) - offset = 0; - else - offset += 3; - - FX_FILESIZE nLen = obj_end - obj_pos - offset; - if ((FX_DWORD)nLen > size - i) { - pos = obj_end + m_pSyntax->m_HeaderOffset; - bOverFlow = true; - } else { - i += (FX_DWORD)nLen; - } - - if (!m_ObjectInfo.empty() && IsValidObjectNumber(objnum) && - m_ObjectInfo[objnum].pos) { - if (pObject) { - FX_DWORD oldgen = GetObjectGenNum(objnum); - m_ObjectInfo[objnum].pos = obj_pos; - m_ObjectInfo[objnum].gennum = gennum; - if (oldgen != gennum) - m_bVersionUpdated = true; - } - } else { - m_ObjectInfo[objnum].pos = obj_pos; - m_ObjectInfo[objnum].type = 1; - m_ObjectInfo[objnum].gennum = gennum; - } - - if (pObject) - pObject->Release(); - } - --i; - state = ParserState::kDefault; - break; - } - break; - - case ParserState::kTrailer: - if (inside_index == 7) { - if (PDFCharIsWhitespace(byte) || PDFCharIsDelimiter(byte)) { - last_trailer = pos + i - 7; - m_pSyntax->RestorePos(pos + i - m_pSyntax->m_HeaderOffset); - - CPDF_Object* pObj = m_pSyntax->GetObject(m_pDocument, 0, 0, true); - if (pObj) { - if (!pObj->IsDictionary() && !pObj->AsStream()) { - pObj->Release(); - } else { - CPDF_Stream* pStream = pObj->AsStream(); - if (CPDF_Dictionary* pTrailer = - pStream ? pStream->GetDict() : pObj->AsDictionary()) { - if (m_pTrailer) { - CPDF_Object* pRoot = pTrailer->GetElement("Root"); - CPDF_Reference* pRef = ToReference(pRoot); - if (!pRoot || - (pRef && IsValidObjectNumber(pRef->GetRefObjNum()) && - m_ObjectInfo[pRef->GetRefObjNum()].pos != 0)) { - auto it = pTrailer->begin(); - while (it != pTrailer->end()) { - const CFX_ByteString& key = it->first; - CPDF_Object* pElement = it->second; - ++it; - FX_DWORD dwObjNum = - pElement ? pElement->GetObjNum() : 0; - if (dwObjNum) { - m_pTrailer->SetAtReference(key, m_pDocument, - dwObjNum); - } else { - m_pTrailer->SetAt(key, pElement->Clone()); - } - } - } - pObj->Release(); - } else { - if (pObj->IsStream()) { - m_pTrailer = ToDictionary(pTrailer->Clone()); - pObj->Release(); - } else { - m_pTrailer = pTrailer; - } - - FX_FILESIZE dwSavePos = m_pSyntax->SavePos(); - CFX_ByteString strWord = m_pSyntax->GetKeyword(); - if (!strWord.Compare("startxref")) { - bool bNumber; - CFX_ByteString bsOffset = - m_pSyntax->GetNextWord(&bNumber); - if (bNumber) - m_LastXRefOffset = FXSYS_atoi(bsOffset); - } - m_pSyntax->RestorePos(dwSavePos); - } - } else { - pObj->Release(); - } - } - } - } - --i; - state = ParserState::kDefault; - } else if (byte == "trailer"[inside_index]) { - inside_index++; - } else { - --i; - state = ParserState::kDefault; - } - break; - - case ParserState::kXref: - if (inside_index == 4) { - last_xref = pos + i - 4; - state = ParserState::kWhitespace; - } else if (byte == "xref"[inside_index]) { - inside_index++; - } else { - --i; - state = ParserState::kDefault; - } - break; - - case ParserState::kComment: - if (PDFCharIsLineEnding(byte)) - state = ParserState::kDefault; - break; - - case ParserState::kString: - if (byte == ')') { - if (depth > 0) - depth--; - } else if (byte == '(') { - depth++; - } - - if (!depth) - state = ParserState::kDefault; - break; - - case ParserState::kHexString: - if (byte == '>' || (byte == '<' && inside_index == 1)) - state = ParserState::kDefault; - inside_index = 0; - break; - - case ParserState::kEscapedString: - if (PDFCharIsDelimiter(byte) || PDFCharIsWhitespace(byte)) { - --i; - state = ParserState::kDefault; - } - break; - - case ParserState::kEndObj: - if (PDFCharIsWhitespace(byte)) { - state = ParserState::kDefault; - } else if (byte == '%' || byte == '(' || byte == '<' || - byte == '\\') { - state = ParserState::kDefault; - --i; - } else if (inside_index == 6) { - state = ParserState::kDefault; - --i; - } else if (byte == "endobj"[inside_index]) { - inside_index++; - } - break; - } - - if (bOverFlow) { - size = 0; - break; - } - } - pos += size; - - // If the position has not changed at all in a loop iteration, then break - // out to prevent infinite looping. - if (pos == saved_pos) - break; - } - - if (last_xref != -1 && last_xref > last_obj) - last_trailer = last_xref; - else if (last_trailer == -1 || last_xref < last_obj) - last_trailer = m_pSyntax->m_FileLen; - - m_SortedOffset.insert(last_trailer - m_pSyntax->m_HeaderOffset); - return m_pTrailer && !m_ObjectInfo.empty(); -} - -FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE* pos, FX_BOOL bMainXRef) { - CPDF_Object* pObject = ParseIndirectObjectAt(m_pDocument, *pos, 0); - if (!pObject) - return FALSE; - - if (m_pDocument) { - FX_BOOL bInserted = FALSE; - CPDF_Dictionary* pDict = m_pDocument->GetRoot(); - if (!pDict || pDict->GetObjNum() != pObject->m_ObjNum) { - bInserted = m_pDocument->InsertIndirectObject(pObject->m_ObjNum, pObject); - } else { - if (pObject->IsStream()) - pObject->Release(); - } - - if (!bInserted) - return FALSE; - } - - CPDF_Stream* pStream = pObject->AsStream(); - if (!pStream) - return FALSE; - - *pos = pStream->GetDict()->GetIntegerBy("Prev"); - int32_t size = pStream->GetDict()->GetIntegerBy("Size"); - if (size < 0) { - pStream->Release(); - return FALSE; - } - - if (bMainXRef) { - m_pTrailer = ToDictionary(pStream->GetDict()->Clone()); - ShrinkObjectMap(size); - for (auto& it : m_ObjectInfo) - it.second.type = 0; - } else { - m_Trailers.Add(ToDictionary(pStream->GetDict()->Clone())); - } - - std::vector> arrIndex; - CPDF_Array* pArray = pStream->GetDict()->GetArrayBy("Index"); - if (pArray) { - FX_DWORD nPairSize = pArray->GetCount() / 2; - for (FX_DWORD i = 0; i < nPairSize; i++) { - CPDF_Object* pStartNumObj = pArray->GetElement(i * 2); - CPDF_Object* pCountObj = pArray->GetElement(i * 2 + 1); - - if (ToNumber(pStartNumObj) && ToNumber(pCountObj)) { - int nStartNum = pStartNumObj->GetInteger(); - int nCount = pCountObj->GetInteger(); - if (nStartNum >= 0 && nCount > 0) - arrIndex.push_back(std::make_pair(nStartNum, nCount)); - } - } - } - - if (arrIndex.size() == 0) - arrIndex.push_back(std::make_pair(0, size)); - - pArray = pStream->GetDict()->GetArrayBy("W"); - if (!pArray) { - pStream->Release(); - return FALSE; - } - - CFX_DWordArray WidthArray; - FX_SAFE_DWORD dwAccWidth = 0; - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - WidthArray.Add(pArray->GetIntegerAt(i)); - dwAccWidth += WidthArray[i]; - } - - if (!dwAccWidth.IsValid() || WidthArray.GetSize() < 3) { - pStream->Release(); - return FALSE; - } - - FX_DWORD totalWidth = dwAccWidth.ValueOrDie(); - CPDF_StreamAcc acc; - acc.LoadAllData(pStream); - - const uint8_t* pData = acc.GetData(); - FX_DWORD dwTotalSize = acc.GetSize(); - FX_DWORD segindex = 0; - for (FX_DWORD i = 0; i < arrIndex.size(); i++) { - int32_t startnum = arrIndex[i].first; - if (startnum < 0) - continue; - - m_dwXrefStartObjNum = - pdfium::base::checked_cast(startnum); - FX_DWORD count = - pdfium::base::checked_cast(arrIndex[i].second); - FX_SAFE_DWORD dwCaculatedSize = segindex; - dwCaculatedSize += count; - dwCaculatedSize *= totalWidth; - if (!dwCaculatedSize.IsValid() || - dwCaculatedSize.ValueOrDie() > dwTotalSize) { - continue; - } - - const uint8_t* segstart = pData + segindex * totalWidth; - FX_SAFE_DWORD dwMaxObjNum = startnum; - dwMaxObjNum += count; - FX_DWORD dwV5Size = m_ObjectInfo.empty() ? 0 : GetLastObjNum() + 1; - if (!dwMaxObjNum.IsValid() || dwMaxObjNum.ValueOrDie() > dwV5Size) - continue; - - for (FX_DWORD j = 0; j < count; j++) { - int32_t type = 1; - const uint8_t* entrystart = segstart + j * totalWidth; - if (WidthArray[0]) - type = GetVarInt(entrystart, WidthArray[0]); - - if (GetObjectType(startnum + j) == 255) { - FX_FILESIZE offset = - GetVarInt(entrystart + WidthArray[0], WidthArray[1]); - m_ObjectInfo[startnum + j].pos = offset; - m_SortedOffset.insert(offset); - continue; - } - - if (GetObjectType(startnum + j)) - continue; - - m_ObjectInfo[startnum + j].type = type; - if (type == 0) { - m_ObjectInfo[startnum + j].pos = 0; - } else { - FX_FILESIZE offset = - GetVarInt(entrystart + WidthArray[0], WidthArray[1]); - m_ObjectInfo[startnum + j].pos = offset; - if (type == 1) { - m_SortedOffset.insert(offset); - } else { - if (offset < 0 || !IsValidObjectNumber(offset)) { - pStream->Release(); - return FALSE; - } - m_ObjectInfo[offset].type = 255; - } - } - } - segindex += count; - } - pStream->Release(); - return TRUE; -} - -CPDF_Array* CPDF_Parser::GetIDArray() { - CPDF_Object* pID = m_pTrailer ? m_pTrailer->GetElement("ID") : nullptr; - if (!pID) - return nullptr; - - if (CPDF_Reference* pRef = pID->AsReference()) { - pID = ParseIndirectObject(nullptr, pRef->GetRefObjNum()); - m_pTrailer->SetAt("ID", pID); - } - return ToArray(pID); -} - -FX_DWORD CPDF_Parser::GetRootObjNum() { - CPDF_Reference* pRef = - ToReference(m_pTrailer ? m_pTrailer->GetElement("Root") : nullptr); - return pRef ? pRef->GetRefObjNum() : 0; -} - -FX_DWORD CPDF_Parser::GetInfoObjNum() { - CPDF_Reference* pRef = - ToReference(m_pTrailer ? m_pTrailer->GetElement("Info") : nullptr); - return pRef ? pRef->GetRefObjNum() : 0; -} - -FX_BOOL CPDF_Parser::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) { - bForm = FALSE; - if (!IsValidObjectNumber(objnum)) - return TRUE; - - if (GetObjectType(objnum) == 0) - return TRUE; - - if (GetObjectType(objnum) == 2) - return TRUE; - - FX_FILESIZE pos = m_ObjectInfo[objnum].pos; - auto it = m_SortedOffset.find(pos); - if (it == m_SortedOffset.end()) - return TRUE; - - if (++it == m_SortedOffset.end()) - return FALSE; - - FX_FILESIZE size = *it - pos; - FX_FILESIZE SavedPos = m_pSyntax->SavePos(); - m_pSyntax->RestorePos(pos); - - const char kFormStream[] = "/Form\0stream"; - const CFX_ByteStringC kFormStreamStr(kFormStream, sizeof(kFormStream) - 1); - bForm = m_pSyntax->SearchMultiWord(kFormStreamStr, TRUE, size) == 0; - m_pSyntax->RestorePos(SavedPos); - return TRUE; -} - -CPDF_Object* CPDF_Parser::ParseIndirectObject( - CPDF_IndirectObjectHolder* pObjList, - FX_DWORD objnum) { - if (!IsValidObjectNumber(objnum)) - return nullptr; - - // Prevent circular parsing the same object. - if (pdfium::ContainsKey(m_ParsingObjNums, objnum)) - return nullptr; - - pdfium::ScopedSetInsertion local_insert(&m_ParsingObjNums, objnum); - if (GetObjectType(objnum) == 1 || GetObjectType(objnum) == 255) { - FX_FILESIZE pos = m_ObjectInfo[objnum].pos; - if (pos <= 0) - return nullptr; - return ParseIndirectObjectAt(pObjList, pos, objnum); - } - if (GetObjectType(objnum) != 2) - return nullptr; - - CPDF_StreamAcc* pObjStream = GetObjectStream(m_ObjectInfo[objnum].pos); - if (!pObjStream) - return nullptr; - - ScopedFileStream file(FX_CreateMemoryStream( - (uint8_t*)pObjStream->GetData(), (size_t)pObjStream->GetSize(), FALSE)); - CPDF_SyntaxParser syntax; - syntax.InitParser(file.get(), 0); - const int32_t offset = GetStreamFirst(pObjStream); - - // Read object numbers from |pObjStream| into a cache. - if (!pdfium::ContainsKey(m_ObjCache, pObjStream)) { - for (int32_t i = GetStreamNCount(pObjStream); i > 0; --i) { - FX_DWORD thisnum = syntax.GetDirectNum(); - FX_DWORD thisoff = syntax.GetDirectNum(); - m_ObjCache[pObjStream][thisnum] = thisoff; - } - } - - const auto it = m_ObjCache[pObjStream].find(objnum); - if (it == m_ObjCache[pObjStream].end()) - return nullptr; - - syntax.RestorePos(offset + it->second); - return syntax.GetObject(pObjList, 0, 0, true); -} - -CPDF_StreamAcc* CPDF_Parser::GetObjectStream(FX_DWORD objnum) { - auto it = m_ObjectStreamMap.find(objnum); - if (it != m_ObjectStreamMap.end()) - return it->second.get(); - - if (!m_pDocument) - return nullptr; - - const CPDF_Stream* pStream = ToStream(m_pDocument->GetIndirectObject(objnum)); - if (!pStream) - return nullptr; - - CPDF_StreamAcc* pStreamAcc = new CPDF_StreamAcc; - pStreamAcc->LoadAllData(pStream); - m_ObjectStreamMap[objnum].reset(pStreamAcc); - return pStreamAcc; -} - -FX_FILESIZE CPDF_Parser::GetObjectSize(FX_DWORD objnum) const { - if (!IsValidObjectNumber(objnum)) - return 0; - - if (GetObjectType(objnum) == 2) - objnum = GetObjectPositionOrZero(objnum); - - if (GetObjectType(objnum) != 1 && GetObjectType(objnum) != 255) - return 0; - - FX_FILESIZE offset = GetObjectPositionOrZero(objnum); - if (offset == 0) - return 0; - - auto it = m_SortedOffset.find(offset); - if (it == m_SortedOffset.end() || ++it == m_SortedOffset.end()) - return 0; - - return *it - offset; -} - -void CPDF_Parser::GetIndirectBinary(FX_DWORD objnum, - uint8_t*& pBuffer, - FX_DWORD& size) { - pBuffer = nullptr; - size = 0; - if (!IsValidObjectNumber(objnum)) - return; - - if (GetObjectType(objnum) == 2) { - CPDF_StreamAcc* pObjStream = GetObjectStream(m_ObjectInfo[objnum].pos); - if (!pObjStream) - return; - - int32_t offset = GetStreamFirst(pObjStream); - const uint8_t* pData = pObjStream->GetData(); - FX_DWORD totalsize = pObjStream->GetSize(); - ScopedFileStream file( - FX_CreateMemoryStream((uint8_t*)pData, (size_t)totalsize, FALSE)); - - CPDF_SyntaxParser syntax; - syntax.InitParser(file.get(), 0); - for (int i = GetStreamNCount(pObjStream); i > 0; --i) { - FX_DWORD thisnum = syntax.GetDirectNum(); - FX_DWORD thisoff = syntax.GetDirectNum(); - if (thisnum != objnum) - continue; - - if (i == 1) { - size = totalsize - (thisoff + offset); - } else { - syntax.GetDirectNum(); // Skip nextnum. - FX_DWORD nextoff = syntax.GetDirectNum(); - size = nextoff - thisoff; - } - - pBuffer = FX_Alloc(uint8_t, size); - FXSYS_memcpy(pBuffer, pData + thisoff + offset, size); - return; - } - return; - } - - if (GetObjectType(objnum) != 1) - return; - - FX_FILESIZE pos = m_ObjectInfo[objnum].pos; - if (pos == 0) - return; - - FX_FILESIZE SavedPos = m_pSyntax->SavePos(); - m_pSyntax->RestorePos(pos); - - bool bIsNumber; - CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) { - m_pSyntax->RestorePos(SavedPos); - return; - } - - FX_DWORD parser_objnum = FXSYS_atoui(word); - if (parser_objnum && parser_objnum != objnum) { - m_pSyntax->RestorePos(SavedPos); - return; - } - - word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) { - m_pSyntax->RestorePos(SavedPos); - return; - } - - if (m_pSyntax->GetKeyword() != "obj") { - m_pSyntax->RestorePos(SavedPos); - return; - } - - auto it = m_SortedOffset.find(pos); - if (it == m_SortedOffset.end() || ++it == m_SortedOffset.end()) { - m_pSyntax->RestorePos(SavedPos); - return; - } - - FX_FILESIZE nextoff = *it; - FX_BOOL bNextOffValid = FALSE; - if (nextoff != pos) { - m_pSyntax->RestorePos(nextoff); - word = m_pSyntax->GetNextWord(&bIsNumber); - if (word == "xref") { - bNextOffValid = TRUE; - } else if (bIsNumber) { - word = m_pSyntax->GetNextWord(&bIsNumber); - if (bIsNumber && m_pSyntax->GetKeyword() == "obj") { - bNextOffValid = TRUE; - } - } - } - - if (!bNextOffValid) { - m_pSyntax->RestorePos(pos); - while (1) { - if (m_pSyntax->GetKeyword() == "endobj") - break; - - if (m_pSyntax->SavePos() == m_pSyntax->m_FileLen) - break; - } - nextoff = m_pSyntax->SavePos(); - } - - size = (FX_DWORD)(nextoff - pos); - pBuffer = FX_Alloc(uint8_t, size); - m_pSyntax->RestorePos(pos); - m_pSyntax->ReadBlock(pBuffer, size); - m_pSyntax->RestorePos(SavedPos); -} - -CPDF_Object* CPDF_Parser::ParseIndirectObjectAt( - CPDF_IndirectObjectHolder* pObjList, - FX_FILESIZE pos, - FX_DWORD objnum) { - FX_FILESIZE SavedPos = m_pSyntax->SavePos(); - m_pSyntax->RestorePos(pos); - bool bIsNumber; - CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - FX_FILESIZE objOffset = m_pSyntax->SavePos(); - objOffset -= word.GetLength(); - FX_DWORD parser_objnum = FXSYS_atoui(word); - if (objnum && parser_objnum != objnum) { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - FX_DWORD parser_gennum = FXSYS_atoui(word); - if (m_pSyntax->GetKeyword() != "obj") { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - CPDF_Object* pObj = - m_pSyntax->GetObject(pObjList, objnum, parser_gennum, true); - m_pSyntax->SavePos(); - - CFX_ByteString bsWord = m_pSyntax->GetKeyword(); - if (bsWord == "endobj") - m_pSyntax->SavePos(); - - m_pSyntax->RestorePos(SavedPos); - if (pObj) { - if (!objnum) - pObj->m_ObjNum = parser_objnum; - pObj->m_GenNum = parser_gennum; - } - return pObj; -} - -CPDF_Object* CPDF_Parser::ParseIndirectObjectAtByStrict( - CPDF_IndirectObjectHolder* pObjList, - FX_FILESIZE pos, - FX_DWORD objnum, - FX_FILESIZE* pResultPos) { - FX_FILESIZE SavedPos = m_pSyntax->SavePos(); - m_pSyntax->RestorePos(pos); - - bool bIsNumber; - CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - FX_DWORD parser_objnum = FXSYS_atoui(word); - if (objnum && parser_objnum != objnum) { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - FX_DWORD gennum = FXSYS_atoui(word); - if (m_pSyntax->GetKeyword() != "obj") { - m_pSyntax->RestorePos(SavedPos); - return nullptr; - } - - CPDF_Object* pObj = m_pSyntax->GetObjectByStrict(pObjList, objnum, gennum); - if (pResultPos) - *pResultPos = m_pSyntax->m_Pos; - - m_pSyntax->RestorePos(SavedPos); - return pObj; -} - -CPDF_Dictionary* CPDF_Parser::LoadTrailerV4() { - if (m_pSyntax->GetKeyword() != "trailer") - return nullptr; - - std::unique_ptr> pObj( - m_pSyntax->GetObject(m_pDocument, 0, 0, true)); - if (!ToDictionary(pObj.get())) - return nullptr; - return pObj.release()->AsDictionary(); -} - -FX_DWORD CPDF_Parser::GetPermissions(FX_BOOL bCheckRevision) { - if (!m_pSecurityHandler) - return (FX_DWORD)-1; - - FX_DWORD dwPermission = m_pSecurityHandler->GetPermissions(); - if (m_pEncryptDict && m_pEncryptDict->GetStringBy("Filter") == "Standard") { - dwPermission &= 0xFFFFFFFC; - dwPermission |= 0xFFFFF0C0; - if (bCheckRevision && m_pEncryptDict->GetIntegerBy("R") == 2) - dwPermission &= 0xFFFFF0FF; - } - return dwPermission; -} - -FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess, - FX_DWORD offset) { - m_pSyntax->InitParser(pFileAccess, offset); - m_pSyntax->RestorePos(m_pSyntax->m_HeaderOffset + 9); - - FX_FILESIZE SavedPos = m_pSyntax->SavePos(); - bool bIsNumber; - CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) - return FALSE; - - FX_DWORD objnum = FXSYS_atoui(word); - word = m_pSyntax->GetNextWord(&bIsNumber); - if (!bIsNumber) - return FALSE; - - FX_DWORD gennum = FXSYS_atoui(word); - if (m_pSyntax->GetKeyword() != "obj") { - m_pSyntax->RestorePos(SavedPos); - return FALSE; - } - - m_pLinearized = m_pSyntax->GetObject(nullptr, objnum, gennum, true); - if (!m_pLinearized) - return FALSE; - - CPDF_Dictionary* pDict = m_pLinearized->GetDict(); - if (pDict && pDict->GetElement("Linearized")) { - m_pSyntax->GetNextWord(nullptr); - - CPDF_Object* pLen = pDict->GetElement("L"); - if (!pLen) { - m_pLinearized->Release(); - m_pLinearized = nullptr; - return FALSE; - } - - if (pLen->GetInteger() != (int)pFileAccess->GetSize()) - return FALSE; - - if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P"))) - m_dwFirstPageNo = pNo->GetInteger(); - - if (CPDF_Number* pTable = ToNumber(pDict->GetElement("T"))) - m_LastXRefOffset = pTable->GetInteger(); - - return TRUE; - } - m_pLinearized->Release(); - m_pLinearized = nullptr; - return FALSE; -} - -CPDF_Parser::Error CPDF_Parser::StartAsyncParse(IFX_FileRead* pFileAccess) { - CloseParser(); - m_bXRefStream = FALSE; - m_LastXRefOffset = 0; - m_bOwnFileRead = true; - - int32_t offset = GetHeaderOffset(pFileAccess); - if (offset == -1) - return FORMAT_ERROR; - - if (!IsLinearizedFile(pFileAccess, offset)) { - m_pSyntax->m_pFileAccess = nullptr; - return StartParse(pFileAccess); - } - - m_pDocument = new CPDF_Document(this); - FX_FILESIZE dwFirstXRefOffset = m_pSyntax->SavePos(); - - FX_BOOL bXRefRebuilt = FALSE; - FX_BOOL bLoadV4 = FALSE; - if (!(bLoadV4 = LoadCrossRefV4(dwFirstXRefOffset, 0, FALSE)) && - !LoadCrossRefV5(&dwFirstXRefOffset, TRUE)) { - if (!RebuildCrossRef()) - return FORMAT_ERROR; - - bXRefRebuilt = TRUE; - m_LastXRefOffset = 0; - } - - if (bLoadV4) { - m_pTrailer = LoadTrailerV4(); - if (!m_pTrailer) - return SUCCESS; - - int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size"); - if (xrefsize > 0) - ShrinkObjectMap(xrefsize); - } - - Error eRet = SetEncryptHandler(); - if (eRet != SUCCESS) - return eRet; - - m_pDocument->LoadAsynDoc(m_pLinearized->GetDict()); - if (!m_pDocument->GetRoot() || m_pDocument->GetPageCount() == 0) { - if (bXRefRebuilt) - return FORMAT_ERROR; - - ReleaseEncryptHandler(); - if (!RebuildCrossRef()) - return FORMAT_ERROR; - - eRet = SetEncryptHandler(); - if (eRet != SUCCESS) - return eRet; - - m_pDocument->LoadAsynDoc(m_pLinearized->GetDict()); - if (!m_pDocument->GetRoot()) - return FORMAT_ERROR; - } - - if (GetRootObjNum() == 0) { - ReleaseEncryptHandler(); - if (!RebuildCrossRef() || GetRootObjNum() == 0) - return FORMAT_ERROR; - - eRet = SetEncryptHandler(); - if (eRet != SUCCESS) - return eRet; - } - - if (m_pSecurityHandler && m_pSecurityHandler->IsMetadataEncrypted()) { - if (CPDF_Reference* pMetadata = - ToReference(m_pDocument->GetRoot()->GetElement("Metadata"))) - m_pSyntax->m_MetadataObjnum = pMetadata->GetRefObjNum(); - } - return SUCCESS; -} - -FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV5(FX_FILESIZE xrefpos) { - if (!LoadCrossRefV5(&xrefpos, FALSE)) - return FALSE; - - std::set seen_xrefpos; - while (xrefpos) { - seen_xrefpos.insert(xrefpos); - if (!LoadCrossRefV5(&xrefpos, FALSE)) - return FALSE; - - // Check for circular references. - if (pdfium::ContainsKey(seen_xrefpos, xrefpos)) - return FALSE; - } - m_ObjectStreamMap.clear(); - m_bXRefStream = TRUE; - return TRUE; -} - -CPDF_Parser::Error CPDF_Parser::LoadLinearizedMainXRefTable() { - FX_DWORD dwSaveMetadataObjnum = m_pSyntax->m_MetadataObjnum; - m_pSyntax->m_MetadataObjnum = 0; - if (m_pTrailer) { - m_pTrailer->Release(); - m_pTrailer = nullptr; - } - - m_pSyntax->RestorePos(m_LastXRefOffset - m_pSyntax->m_HeaderOffset); - uint8_t ch = 0; - FX_DWORD dwCount = 0; - m_pSyntax->GetNextChar(ch); - while (PDFCharIsWhitespace(ch)) { - ++dwCount; - if (m_pSyntax->m_FileLen >= - (FX_FILESIZE)(m_pSyntax->SavePos() + m_pSyntax->m_HeaderOffset)) { - break; - } - m_pSyntax->GetNextChar(ch); - } - m_LastXRefOffset += dwCount; - m_ObjectStreamMap.clear(); - m_ObjCache.clear(); - - if (!LoadLinearizedAllCrossRefV4(m_LastXRefOffset, m_dwXrefStartObjNum) && - !LoadLinearizedAllCrossRefV5(m_LastXRefOffset)) { - m_LastXRefOffset = 0; - m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum; - return FORMAT_ERROR; - } - - m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum; - return SUCCESS; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp deleted file mode 100644 index f427ec5d81..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "testing/embedder_test.h" -#include "testing/gtest/include/gtest/gtest.h" - -class CPDFParserEmbeddertest : public EmbedderTest {}; - -TEST_F(CPDFParserEmbeddertest, LoadError_454695) { - // Test a dictionary with hex string instead of correct content. - // Verify that the defective pdf shouldn't be opened correctly. - EXPECT_FALSE(OpenDocument("bug_454695.pdf")); -} - -TEST_F(CPDFParserEmbeddertest, Bug_481363) { - // Test colorspace object with malformed dictionary. - EXPECT_TRUE(OpenDocument("bug_481363.pdf")); - FPDF_PAGE page = LoadPage(0); - EXPECT_NE(nullptr, page); - UnloadPage(page); -} - -TEST_F(CPDFParserEmbeddertest, Bug_544880) { - // Test self referencing /Pages object. - EXPECT_TRUE(OpenDocument("bug_544880.pdf")); - // Shouldn't crash. We don't check the return value here because we get the - // the count from the "/Count 1" in the testcase (at the time of writing) - // rather than the actual count (0). - (void)GetPageCount(); -} - -TEST_F(CPDFParserEmbeddertest, Feature_Linearized_Loading) { - EXPECT_TRUE(OpenDocument("feature_linearized_loading.pdf", true)); -} - -TEST_F(CPDFParserEmbeddertest, Bug_325) { - EXPECT_FALSE(OpenDocument("bug_325_a.pdf")); - EXPECT_FALSE(OpenDocument("bug_325_b.pdf")); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp deleted file mode 100644 index ec84171059..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include -#include - -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fxcrt/fx_stream.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/utils/path_service.h" - -// Provide a way to read test data from a buffer instead of a file. -class CFX_TestBufferRead : public IFX_FileRead { - public: - CFX_TestBufferRead(const unsigned char* buffer_in, size_t buf_size) - : buffer_(buffer_in), total_size_(buf_size) {} - - // IFX_Stream - void Release() override { delete this; } - - // IFX_FileRead - FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { - if (offset < 0 || offset + size > total_size_) { - return FALSE; - } - - memcpy(buffer, buffer_ + offset, size); - return TRUE; - } - FX_FILESIZE GetSize() override { return (FX_FILESIZE)total_size_; }; - - protected: - const unsigned char* buffer_; - size_t total_size_; -}; - -// A wrapper class to help test member functions of CPDF_Parser. -class CPDF_TestParser : public CPDF_Parser { - public: - CPDF_TestParser() {} - ~CPDF_TestParser() {} - - // Setup reading from a file and initial states. - bool InitTestFromFile(const FX_CHAR* path) { - IFX_FileRead* pFileAccess = FX_CreateFileRead(path); - if (!pFileAccess) - return false; - - // For the test file, the header is set at the beginning. - m_pSyntax->InitParser(pFileAccess, 0); - return true; - } - - // Setup reading from a buffer and initial states. - bool InitTestFromBuffer(const unsigned char* buffer, size_t len) { - CFX_TestBufferRead* buffer_reader = new CFX_TestBufferRead(buffer, len); - - // For the test file, the header is set at the beginning. - m_pSyntax->InitParser(buffer_reader, 0); - return true; - } - - private: - // Add test cases here as private friend so that protected members in - // CPDF_Parser can be accessed by test cases. - // Need to access RebuildCrossRef. - FRIEND_TEST(cpdf_parser, RebuildCrossRefCorrectly); - FRIEND_TEST(cpdf_parser, RebuildCrossRefFailed); - // Need to access LoadCrossRefV4. - FRIEND_TEST(cpdf_parser, LoadCrossRefV4); -}; - -TEST(cpdf_parser, RebuildCrossRefCorrectly) { - CPDF_TestParser parser; - std::string test_file; - ASSERT_TRUE(PathService::GetTestFilePath("parser_rebuildxref_correct.pdf", - &test_file)); - ASSERT_TRUE(parser.InitTestFromFile(test_file.c_str())) << test_file; - - ASSERT_TRUE(parser.RebuildCrossRef()); - const FX_FILESIZE offsets[] = {0, 15, 61, 154, 296, 374, 450}; - const FX_WORD versions[] = {0, 0, 2, 4, 6, 8, 0}; - for (size_t i = 0; i < FX_ArraySize(offsets); ++i) - EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); - for (size_t i = 0; i < FX_ArraySize(versions); ++i) - EXPECT_EQ(versions[i], parser.m_ObjectInfo[i].gennum); -} - -TEST(cpdf_parser, RebuildCrossRefFailed) { - CPDF_TestParser parser; - std::string test_file; - ASSERT_TRUE(PathService::GetTestFilePath( - "parser_rebuildxref_error_notrailer.pdf", &test_file)); - ASSERT_TRUE(parser.InitTestFromFile(test_file.c_str())) << test_file; - - ASSERT_FALSE(parser.RebuildCrossRef()); -} - -TEST(cpdf_parser, LoadCrossRefV4) { - { - const unsigned char xref_table[] = - "xref \n" - "0 6 \n" - "0000000003 65535 f \n" - "0000000017 00000 n \n" - "0000000081 00000 n \n" - "0000000000 00007 f \n" - "0000000331 00000 n \n" - "0000000409 00000 n \n" - "trail"; // Needed to end cross ref table reading. - CPDF_TestParser parser; - ASSERT_TRUE( - parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); - - ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); - const FX_FILESIZE offsets[] = {0, 17, 81, 0, 331, 409}; - const uint8_t types[] = {0, 1, 1, 0, 1, 1}; - for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { - EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); - EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); - } - } - { - const unsigned char xref_table[] = - "xref \n" - "0 1 \n" - "0000000000 65535 f \n" - "3 1 \n" - "0000025325 00000 n \n" - "8 2 \n" - "0000025518 00002 n \n" - "0000025635 00000 n \n" - "12 1 \n" - "0000025777 00000 n \n" - "trail"; // Needed to end cross ref table reading. - CPDF_TestParser parser; - ASSERT_TRUE( - parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); - - ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); - const FX_FILESIZE offsets[] = {0, 0, 0, 25325, 0, 0, 0, - 0, 25518, 25635, 0, 0, 25777}; - const uint8_t types[] = {0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1}; - for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { - EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); - EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); - } - } - { - const unsigned char xref_table[] = - "xref \n" - "0 1 \n" - "0000000000 65535 f \n" - "3 1 \n" - "0000025325 00000 n \n" - "8 2 \n" - "0000000000 65535 f \n" - "0000025635 00000 n \n" - "12 1 \n" - "0000025777 00000 n \n" - "trail"; // Needed to end cross ref table reading. - CPDF_TestParser parser; - ASSERT_TRUE( - parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); - - ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); - const FX_FILESIZE offsets[] = {0, 0, 0, 25325, 0, 0, 0, - 0, 0, 25635, 0, 0, 25777}; - const uint8_t types[] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1}; - for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { - EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); - EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); - } - } - { - const unsigned char xref_table[] = - "xref \n" - "0 7 \n" - "0000000002 65535 f \n" - "0000000023 00000 n \n" - "0000000003 65535 f \n" - "0000000004 65535 f \n" - "0000000000 65535 f \n" - "0000000045 00000 n \n" - "0000000179 00000 n \n" - "trail"; // Needed to end cross ref table reading. - CPDF_TestParser parser; - ASSERT_TRUE( - parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table))); - - ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE)); - const FX_FILESIZE offsets[] = {0, 23, 0, 0, 0, 45, 179}; - const uint8_t types[] = {0, 1, 0, 0, 0, 1, 1}; - for (size_t i = 0; i < FX_ArraySize(offsets); ++i) { - EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos); - EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type); - } - } -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_reference.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_reference.cpp deleted file mode 100644 index 4aede7d07a..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_reference.cpp +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_reference.h" - -#include "core/include/fpdfapi/cpdf_indirect_object_holder.h" - -CPDF_Reference::CPDF_Reference(CPDF_IndirectObjectHolder* pDoc, int objnum) - : m_pObjList(pDoc), m_RefObjNum(objnum) {} - -CPDF_Reference::~CPDF_Reference() {} - -CPDF_Object::Type CPDF_Reference::GetType() const { - return REFERENCE; -} - -CFX_ByteString CPDF_Reference::GetString() const { - CPDF_Object* obj = SafeGetDirect(); - return obj ? obj->GetString() : CFX_ByteString(); -} - -CFX_ByteStringC CPDF_Reference::GetConstString() const { - CPDF_Object* obj = SafeGetDirect(); - return obj ? obj->GetConstString() : CFX_ByteStringC(); -} - -FX_FLOAT CPDF_Reference::GetNumber() const { - CPDF_Object* obj = SafeGetDirect(); - return obj ? obj->GetNumber() : 0; -} - -int CPDF_Reference::GetInteger() const { - CPDF_Object* obj = SafeGetDirect(); - return obj ? obj->GetInteger() : 0; -} - -CPDF_Dictionary* CPDF_Reference::GetDict() const { - CPDF_Object* obj = SafeGetDirect(); - return obj ? obj->GetDict() : nullptr; -} - -bool CPDF_Reference::IsReference() const { - return true; -} - -CPDF_Reference* CPDF_Reference::AsReference() { - return this; -} - -const CPDF_Reference* CPDF_Reference::AsReference() const { - return this; -} - -CPDF_Object* CPDF_Reference::Clone(FX_BOOL bDirect) const { - if (bDirect) { - auto* pDirect = GetDirect(); - return pDirect ? pDirect->Clone(TRUE) : nullptr; - } - return new CPDF_Reference(m_pObjList, m_RefObjNum); -} - -void CPDF_Reference::SetRef(CPDF_IndirectObjectHolder* pDoc, FX_DWORD objnum) { - m_pObjList = pDoc; - m_RefObjNum = objnum; -} - -CPDF_Object* CPDF_Reference::GetDirect() const { - return m_pObjList ? m_pObjList->GetIndirectObject(m_RefObjNum) : nullptr; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp deleted file mode 100644 index ad656795f2..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_simple_parser.h" - -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" - -CPDF_SimpleParser::CPDF_SimpleParser(const uint8_t* pData, FX_DWORD dwSize) - : m_pData(pData), m_dwSize(dwSize), m_dwCurPos(0) {} - -CPDF_SimpleParser::CPDF_SimpleParser(const CFX_ByteStringC& str) - : m_pData(str.GetPtr()), m_dwSize(str.GetLength()), m_dwCurPos(0) {} - -void CPDF_SimpleParser::ParseWord(const uint8_t*& pStart, FX_DWORD& dwSize) { - pStart = nullptr; - dwSize = 0; - uint8_t ch; - while (1) { - if (m_dwSize <= m_dwCurPos) - return; - ch = m_pData[m_dwCurPos++]; - while (PDFCharIsWhitespace(ch)) { - if (m_dwSize <= m_dwCurPos) - return; - ch = m_pData[m_dwCurPos++]; - } - - if (ch != '%') - break; - - while (1) { - if (m_dwSize <= m_dwCurPos) - return; - ch = m_pData[m_dwCurPos++]; - if (PDFCharIsLineEnding(ch)) - break; - } - } - - FX_DWORD start_pos = m_dwCurPos - 1; - pStart = m_pData + start_pos; - if (PDFCharIsDelimiter(ch)) { - if (ch == '/') { - while (1) { - if (m_dwSize <= m_dwCurPos) - return; - ch = m_pData[m_dwCurPos++]; - if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { - m_dwCurPos--; - dwSize = m_dwCurPos - start_pos; - return; - } - } - } else { - dwSize = 1; - if (ch == '<') { - if (m_dwSize <= m_dwCurPos) - return; - ch = m_pData[m_dwCurPos++]; - if (ch == '<') - dwSize = 2; - else - m_dwCurPos--; - } else if (ch == '>') { - if (m_dwSize <= m_dwCurPos) - return; - ch = m_pData[m_dwCurPos++]; - if (ch == '>') - dwSize = 2; - else - m_dwCurPos--; - } - } - return; - } - - dwSize = 1; - while (1) { - if (m_dwSize <= m_dwCurPos) - return; - ch = m_pData[m_dwCurPos++]; - - if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { - m_dwCurPos--; - break; - } - dwSize++; - } -} - -CFX_ByteStringC CPDF_SimpleParser::GetWord() { - const uint8_t* pStart; - FX_DWORD dwSize; - ParseWord(pStart, dwSize); - if (dwSize == 1 && pStart[0] == '<') { - while (m_dwCurPos < m_dwSize && m_pData[m_dwCurPos] != '>') { - m_dwCurPos++; - } - if (m_dwCurPos < m_dwSize) { - m_dwCurPos++; - } - return CFX_ByteStringC(pStart, - (FX_STRSIZE)(m_dwCurPos - (pStart - m_pData))); - } - if (dwSize == 1 && pStart[0] == '(') { - int level = 1; - while (m_dwCurPos < m_dwSize) { - if (m_pData[m_dwCurPos] == ')') { - level--; - if (level == 0) { - break; - } - } - if (m_pData[m_dwCurPos] == '\\') { - if (m_dwSize <= m_dwCurPos) { - break; - } - m_dwCurPos++; - } else if (m_pData[m_dwCurPos] == '(') { - level++; - } - if (m_dwSize <= m_dwCurPos) { - break; - } - m_dwCurPos++; - } - if (m_dwCurPos < m_dwSize) { - m_dwCurPos++; - } - return CFX_ByteStringC(pStart, - (FX_STRSIZE)(m_dwCurPos - (pStart - m_pData))); - } - return CFX_ByteStringC(pStart, dwSize); -} - -bool CPDF_SimpleParser::FindTagParamFromStart(const CFX_ByteStringC& token, - int nParams) { - nParams++; - FX_DWORD* pBuf = FX_Alloc(FX_DWORD, nParams); - int buf_index = 0; - int buf_count = 0; - m_dwCurPos = 0; - while (1) { - pBuf[buf_index++] = m_dwCurPos; - if (buf_index == nParams) { - buf_index = 0; - } - buf_count++; - if (buf_count > nParams) { - buf_count = nParams; - } - CFX_ByteStringC word = GetWord(); - if (word.IsEmpty()) { - FX_Free(pBuf); - return false; - } - if (word == token) { - if (buf_count < nParams) { - continue; - } - m_dwCurPos = pBuf[buf_index]; - FX_Free(pBuf); - return true; - } - } - return false; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp deleted file mode 100644 index bfcb0afc7f..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fpdfapi/cpdf_simple_parser.h" - -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/test_support.h" - -TEST(SimpleParserTest, GetWord) { - pdfium::StrFuncTestData test_data[] = { - // Empty src string. - STR_IN_OUT_CASE("", ""), - // Content with whitespaces only. - STR_IN_OUT_CASE(" \t \0 \n", ""), - // Content with comments only. - STR_IN_OUT_CASE("%this is a test case\r\n%2nd line", ""), - // Mixed whitespaces and comments. - STR_IN_OUT_CASE(" \t \0%try()%haha\n %another line \aa", ""), - // Name. - STR_IN_OUT_CASE(" /Tester ", "/Tester"), - // String. - STR_IN_OUT_CASE("\t(nice day)!\n ", "(nice day)"), - // String with nested braces. - STR_IN_OUT_CASE("\t(It is a (long) day)!\n ", "(It is a (long) day)"), - // String with escaped chars. - STR_IN_OUT_CASE("\t(It is a \\(long\\) day!)hi\n ", - "(It is a \\(long\\) day!)"), - // Hex string. - STR_IN_OUT_CASE(" \n<4545acdfedertt>abc ", "<4545acdfedertt>"), - STR_IN_OUT_CASE(" \n<4545aertt>abc ", "<4545a"), - // Dictionary. - STR_IN_OUT_CASE("<>", "<<"), - STR_IN_OUT_CASE("\t\t<< /abc>>", "<<"), - // Handling ending delimiters. - STR_IN_OUT_CASE("> little bear", ">"), - STR_IN_OUT_CASE(") another bear", ")"), - STR_IN_OUT_CASE(">> end ", ">>"), - // No ending delimiters. - STR_IN_OUT_CASE("(sdfgfgbcv", "(sdfgfgbcv"), - // Regular cases. - STR_IN_OUT_CASE("apple pear", "apple"), - STR_IN_OUT_CASE(" pi=3.1415 ", "pi=3.1415"), - STR_IN_OUT_CASE(" p t x c ", "p"), - STR_IN_OUT_CASE(" pt\0xc ", "pt"), - STR_IN_OUT_CASE(" $^&&*\t\0sdff ", "$^&&*"), - STR_IN_OUT_CASE("\n\r+3.5656 -11.0", "+3.5656"), - }; - for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { - const pdfium::StrFuncTestData& data = test_data[i]; - CPDF_SimpleParser parser(data.input, data.input_size); - CFX_ByteStringC word = parser.GetWord(); - EXPECT_EQ(std::string(reinterpret_cast(data.expected), - data.expected_size), - std::string(word.GetCStr(), word.GetLength())) - << " for case " << i; - } -} - -TEST(SimpleParserTest, FindTagParamFromStart) { - struct FindTagTestStruct { - const unsigned char* input; - unsigned int input_size; - const char* token; - int num_params; - bool result; - unsigned int result_pos; - } test_data[] = { - // Empty strings. - STR_IN_TEST_CASE("", "Tj", 1, false, 0), - STR_IN_TEST_CASE("", "", 1, false, 0), - // Empty token. - STR_IN_TEST_CASE(" T j", "", 1, false, 5), - // No parameter. - STR_IN_TEST_CASE("Tj", "Tj", 1, false, 2), - STR_IN_TEST_CASE("(Tj", "Tj", 1, false, 3), - // Partial token match. - STR_IN_TEST_CASE("\r12\t34 56 78Tj", "Tj", 1, false, 15), - // Regular cases with various parameters. - STR_IN_TEST_CASE("\r\0abd Tj", "Tj", 1, true, 0), - STR_IN_TEST_CASE("12 4 Tj 3 46 Tj", "Tj", 1, true, 2), - STR_IN_TEST_CASE("er^ 2 (34) (5667) Tj", "Tj", 2, true, 5), - STR_IN_TEST_CASE("<344> (232)\t343.4\n12 45 Tj", "Tj", 3, true, 11), - STR_IN_TEST_CASE("1 2 3 4 5 6 7 8 cm", "cm", 6, true, 3), - }; - for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { - const FindTagTestStruct& data = test_data[i]; - CPDF_SimpleParser parser(data.input, data.input_size); - EXPECT_EQ(data.result, - parser.FindTagParamFromStart(data.token, data.num_params)) - << " for case " << i; - EXPECT_EQ(data.result_pos, parser.GetCurPos()) << " for case " << i; - } -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp deleted file mode 100644 index b656572cff..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h" - -#include - -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fpdfapi/cpdf_simple_parser.h" -#include "core/include/fpdfapi/ipdf_security_handler.h" -#include "core/include/fdrm/fx_crypt.h" - -IPDF_CryptoHandler::~IPDF_CryptoHandler() {} - -void IPDF_CryptoHandler::Decrypt(FX_DWORD objnum, - FX_DWORD gennum, - CFX_ByteString& str) { - CFX_BinaryBuf dest_buf; - void* context = DecryptStart(objnum, gennum); - DecryptStream(context, (const uint8_t*)str, str.GetLength(), dest_buf); - DecryptFinish(context, dest_buf); - str = dest_buf; -} - -void CPDF_StandardCryptoHandler::CryptBlock(FX_BOOL bEncrypt, - FX_DWORD objnum, - FX_DWORD gennum, - const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t* dest_buf, - FX_DWORD& dest_size) { - if (m_Cipher == FXCIPHER_NONE) { - FXSYS_memcpy(dest_buf, src_buf, src_size); - return; - } - uint8_t realkey[16]; - int realkeylen = 16; - if (m_Cipher != FXCIPHER_AES || m_KeyLen != 32) { - uint8_t key1[32]; - FXSYS_memcpy(key1, m_EncryptKey, m_KeyLen); - key1[m_KeyLen + 0] = (uint8_t)objnum; - key1[m_KeyLen + 1] = (uint8_t)(objnum >> 8); - key1[m_KeyLen + 2] = (uint8_t)(objnum >> 16); - key1[m_KeyLen + 3] = (uint8_t)gennum; - key1[m_KeyLen + 4] = (uint8_t)(gennum >> 8); - FXSYS_memcpy(key1 + m_KeyLen, &objnum, 3); - FXSYS_memcpy(key1 + m_KeyLen + 3, &gennum, 2); - if (m_Cipher == FXCIPHER_AES) { - FXSYS_memcpy(key1 + m_KeyLen + 5, "sAlT", 4); - } - CRYPT_MD5Generate( - key1, m_Cipher == FXCIPHER_AES ? m_KeyLen + 9 : m_KeyLen + 5, realkey); - realkeylen = m_KeyLen + 5; - if (realkeylen > 16) { - realkeylen = 16; - } - } - if (m_Cipher == FXCIPHER_AES) { - CRYPT_AESSetKey(m_pAESContext, 16, m_KeyLen == 32 ? m_EncryptKey : realkey, - m_KeyLen, bEncrypt); - if (bEncrypt) { - uint8_t iv[16]; - for (int i = 0; i < 16; i++) { - iv[i] = (uint8_t)rand(); - } - CRYPT_AESSetIV(m_pAESContext, iv); - FXSYS_memcpy(dest_buf, iv, 16); - int nblocks = src_size / 16; - CRYPT_AESEncrypt(m_pAESContext, dest_buf + 16, src_buf, nblocks * 16); - uint8_t padding[16]; - FXSYS_memcpy(padding, src_buf + nblocks * 16, src_size % 16); - FXSYS_memset(padding + src_size % 16, 16 - src_size % 16, - 16 - src_size % 16); - CRYPT_AESEncrypt(m_pAESContext, dest_buf + nblocks * 16 + 16, padding, - 16); - dest_size = 32 + nblocks * 16; - } else { - CRYPT_AESSetIV(m_pAESContext, src_buf); - CRYPT_AESDecrypt(m_pAESContext, dest_buf, src_buf + 16, src_size - 16); - dest_size = src_size - 16; - dest_size -= dest_buf[dest_size - 1]; - } - } else { - ASSERT(dest_size == src_size); - if (dest_buf != src_buf) { - FXSYS_memcpy(dest_buf, src_buf, src_size); - } - CRYPT_ArcFourCryptBlock(dest_buf, dest_size, realkey, realkeylen); - } -} - -struct AESCryptContext { - uint8_t m_Context[2048]; - FX_BOOL m_bIV; - uint8_t m_Block[16]; - FX_DWORD m_BlockOffset; -}; - -void* CPDF_StandardCryptoHandler::CryptStart(FX_DWORD objnum, - FX_DWORD gennum, - FX_BOOL bEncrypt) { - if (m_Cipher == FXCIPHER_NONE) { - return this; - } - if (m_Cipher == FXCIPHER_AES && m_KeyLen == 32) { - AESCryptContext* pContext = FX_Alloc(AESCryptContext, 1); - pContext->m_bIV = TRUE; - pContext->m_BlockOffset = 0; - CRYPT_AESSetKey(pContext->m_Context, 16, m_EncryptKey, 32, bEncrypt); - if (bEncrypt) { - for (int i = 0; i < 16; i++) { - pContext->m_Block[i] = (uint8_t)rand(); - } - CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block); - } - return pContext; - } - uint8_t key1[48]; - FXSYS_memcpy(key1, m_EncryptKey, m_KeyLen); - FXSYS_memcpy(key1 + m_KeyLen, &objnum, 3); - FXSYS_memcpy(key1 + m_KeyLen + 3, &gennum, 2); - if (m_Cipher == FXCIPHER_AES) { - FXSYS_memcpy(key1 + m_KeyLen + 5, "sAlT", 4); - } - uint8_t realkey[16]; - CRYPT_MD5Generate( - key1, m_Cipher == FXCIPHER_AES ? m_KeyLen + 9 : m_KeyLen + 5, realkey); - int realkeylen = m_KeyLen + 5; - if (realkeylen > 16) { - realkeylen = 16; - } - if (m_Cipher == FXCIPHER_AES) { - AESCryptContext* pContext = FX_Alloc(AESCryptContext, 1); - pContext->m_bIV = TRUE; - pContext->m_BlockOffset = 0; - CRYPT_AESSetKey(pContext->m_Context, 16, realkey, 16, bEncrypt); - if (bEncrypt) { - for (int i = 0; i < 16; i++) { - pContext->m_Block[i] = (uint8_t)rand(); - } - CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block); - } - return pContext; - } - void* pContext = FX_Alloc(uint8_t, 1040); - CRYPT_ArcFourSetup(pContext, realkey, realkeylen); - return pContext; -} -FX_BOOL CPDF_StandardCryptoHandler::CryptStream(void* context, - const uint8_t* src_buf, - FX_DWORD src_size, - CFX_BinaryBuf& dest_buf, - FX_BOOL bEncrypt) { - if (!context) { - return FALSE; - } - if (m_Cipher == FXCIPHER_NONE) { - dest_buf.AppendBlock(src_buf, src_size); - return TRUE; - } - if (m_Cipher == FXCIPHER_RC4) { - int old_size = dest_buf.GetSize(); - dest_buf.AppendBlock(src_buf, src_size); - CRYPT_ArcFourCrypt(context, dest_buf.GetBuffer() + old_size, src_size); - return TRUE; - } - AESCryptContext* pContext = (AESCryptContext*)context; - if (pContext->m_bIV && bEncrypt) { - dest_buf.AppendBlock(pContext->m_Block, 16); - pContext->m_bIV = FALSE; - } - FX_DWORD src_off = 0; - FX_DWORD src_left = src_size; - while (1) { - FX_DWORD copy_size = 16 - pContext->m_BlockOffset; - if (copy_size > src_left) { - copy_size = src_left; - } - FXSYS_memcpy(pContext->m_Block + pContext->m_BlockOffset, src_buf + src_off, - copy_size); - src_off += copy_size; - src_left -= copy_size; - pContext->m_BlockOffset += copy_size; - if (pContext->m_BlockOffset == 16) { - if (!bEncrypt && pContext->m_bIV) { - CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block); - pContext->m_bIV = FALSE; - pContext->m_BlockOffset = 0; - } else if (src_off < src_size) { - uint8_t block_buf[16]; - if (bEncrypt) { - CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, - 16); - } else { - CRYPT_AESDecrypt(pContext->m_Context, block_buf, pContext->m_Block, - 16); - } - dest_buf.AppendBlock(block_buf, 16); - pContext->m_BlockOffset = 0; - } - } - if (!src_left) { - break; - } - } - return TRUE; -} -FX_BOOL CPDF_StandardCryptoHandler::CryptFinish(void* context, - CFX_BinaryBuf& dest_buf, - FX_BOOL bEncrypt) { - if (!context) { - return FALSE; - } - if (m_Cipher == FXCIPHER_NONE) { - return TRUE; - } - if (m_Cipher == FXCIPHER_RC4) { - FX_Free(context); - return TRUE; - } - AESCryptContext* pContext = (AESCryptContext*)context; - if (bEncrypt) { - uint8_t block_buf[16]; - if (pContext->m_BlockOffset == 16) { - CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, 16); - dest_buf.AppendBlock(block_buf, 16); - pContext->m_BlockOffset = 0; - } - FXSYS_memset(pContext->m_Block + pContext->m_BlockOffset, - (uint8_t)(16 - pContext->m_BlockOffset), - 16 - pContext->m_BlockOffset); - CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, 16); - dest_buf.AppendBlock(block_buf, 16); - } else if (pContext->m_BlockOffset == 16) { - uint8_t block_buf[16]; - CRYPT_AESDecrypt(pContext->m_Context, block_buf, pContext->m_Block, 16); - if (block_buf[15] <= 16) { - dest_buf.AppendBlock(block_buf, 16 - block_buf[15]); - } - } - FX_Free(pContext); - return TRUE; -} -void* CPDF_StandardCryptoHandler::DecryptStart(FX_DWORD objnum, - FX_DWORD gennum) { - return CryptStart(objnum, gennum, FALSE); -} -FX_DWORD CPDF_StandardCryptoHandler::DecryptGetSize(FX_DWORD src_size) { - return m_Cipher == FXCIPHER_AES ? src_size - 16 : src_size; -} - -FX_BOOL CPDF_StandardCryptoHandler::Init( - CPDF_Dictionary* pEncryptDict, - IPDF_SecurityHandler* pSecurityHandler) { - const uint8_t* key; - if (!pSecurityHandler->GetCryptInfo(m_Cipher, key, m_KeyLen)) { - return FALSE; - } - if (m_KeyLen > 32 || m_KeyLen < 0) { - return FALSE; - } - if (m_Cipher != FXCIPHER_NONE) { - FXSYS_memcpy(m_EncryptKey, key, m_KeyLen); - } - if (m_Cipher == FXCIPHER_AES) { - m_pAESContext = FX_Alloc(uint8_t, 2048); - } - return TRUE; -} - -FX_BOOL CPDF_StandardCryptoHandler::Init(int cipher, - const uint8_t* key, - int keylen) { - if (cipher == FXCIPHER_AES) { - switch (keylen) { - case 16: - case 24: - case 32: - break; - default: - return FALSE; - } - } else if (cipher == FXCIPHER_AES2) { - if (keylen != 32) { - return FALSE; - } - } else if (cipher == FXCIPHER_RC4) { - if (keylen < 5 || keylen > 16) { - return FALSE; - } - } else { - if (keylen > 32) { - keylen = 32; - } - } - m_Cipher = cipher; - m_KeyLen = keylen; - FXSYS_memcpy(m_EncryptKey, key, keylen); - if (m_Cipher == FXCIPHER_AES) { - m_pAESContext = FX_Alloc(uint8_t, 2048); - } - return TRUE; -} -FX_BOOL CPDF_StandardCryptoHandler::DecryptStream(void* context, - const uint8_t* src_buf, - FX_DWORD src_size, - CFX_BinaryBuf& dest_buf) { - return CryptStream(context, src_buf, src_size, dest_buf, FALSE); -} -FX_BOOL CPDF_StandardCryptoHandler::DecryptFinish(void* context, - CFX_BinaryBuf& dest_buf) { - return CryptFinish(context, dest_buf, FALSE); -} -FX_DWORD CPDF_StandardCryptoHandler::EncryptGetSize(FX_DWORD objnum, - FX_DWORD version, - const uint8_t* src_buf, - FX_DWORD src_size) { - if (m_Cipher == FXCIPHER_AES) { - return src_size + 32; - } - return src_size; -} -FX_BOOL CPDF_StandardCryptoHandler::EncryptContent(FX_DWORD objnum, - FX_DWORD gennum, - const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t* dest_buf, - FX_DWORD& dest_size) { - CryptBlock(TRUE, objnum, gennum, src_buf, src_size, dest_buf, dest_size); - return TRUE; -} -CPDF_StandardCryptoHandler::CPDF_StandardCryptoHandler() { - m_pAESContext = NULL; - m_Cipher = FXCIPHER_NONE; - m_KeyLen = 0; -} -CPDF_StandardCryptoHandler::~CPDF_StandardCryptoHandler() { - FX_Free(m_pAESContext); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h b/core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h deleted file mode 100644 index 3ef1f7143f..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_ -#define CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_ - -#include "core/include/fpdfapi/ipdf_crypto_handler.h" - -class CPDF_StandardCryptoHandler : public IPDF_CryptoHandler { - public: - CPDF_StandardCryptoHandler(); - ~CPDF_StandardCryptoHandler() override; - - // IPDF_CryptoHandler - FX_BOOL Init(CPDF_Dictionary* pEncryptDict, - IPDF_SecurityHandler* pSecurityHandler) override; - FX_DWORD DecryptGetSize(FX_DWORD src_size) override; - void* DecryptStart(FX_DWORD objnum, FX_DWORD gennum) override; - FX_BOOL DecryptStream(void* context, - const uint8_t* src_buf, - FX_DWORD src_size, - CFX_BinaryBuf& dest_buf) override; - FX_BOOL DecryptFinish(void* context, CFX_BinaryBuf& dest_buf) override; - FX_DWORD EncryptGetSize(FX_DWORD objnum, - FX_DWORD version, - const uint8_t* src_buf, - FX_DWORD src_size) override; - FX_BOOL EncryptContent(FX_DWORD objnum, - FX_DWORD version, - const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t* dest_buf, - FX_DWORD& dest_size) override; - - FX_BOOL Init(int cipher, const uint8_t* key, int keylen); - - protected: - virtual void CryptBlock(FX_BOOL bEncrypt, - FX_DWORD objnum, - FX_DWORD gennum, - const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t* dest_buf, - FX_DWORD& dest_size); - virtual void* CryptStart(FX_DWORD objnum, FX_DWORD gennum, FX_BOOL bEncrypt); - virtual FX_BOOL CryptStream(void* context, - const uint8_t* src_buf, - FX_DWORD src_size, - CFX_BinaryBuf& dest_buf, - FX_BOOL bEncrypt); - virtual FX_BOOL CryptFinish(void* context, - CFX_BinaryBuf& dest_buf, - FX_BOOL bEncrypt); - - uint8_t m_EncryptKey[32]; - int m_KeyLen; - int m_Cipher; - uint8_t* m_pAESContext; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_ diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp deleted file mode 100644 index feb152ba4a..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp +++ /dev/null @@ -1,714 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h" - -#include - -#include "core/include/fdrm/fx_crypt.h" -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fpdfapi/cpdf_object.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h" - -namespace { - -const uint8_t defpasscode[32] = { - 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, - 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, - 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a}; - -void CalcEncryptKey(CPDF_Dictionary* pEncrypt, - const uint8_t* password, - FX_DWORD pass_size, - uint8_t* key, - int keylen, - FX_BOOL bIgnoreMeta, - CPDF_Array* pIdArray) { - int revision = pEncrypt->GetIntegerBy("R"); - uint8_t passcode[32]; - for (FX_DWORD i = 0; i < 32; i++) { - passcode[i] = i < pass_size ? password[i] : defpasscode[i - pass_size]; - } - uint8_t md5[100]; - CRYPT_MD5Start(md5); - CRYPT_MD5Update(md5, passcode, 32); - CFX_ByteString okey = pEncrypt->GetStringBy("O"); - CRYPT_MD5Update(md5, (uint8_t*)okey.c_str(), okey.GetLength()); - FX_DWORD perm = pEncrypt->GetIntegerBy("P"); - CRYPT_MD5Update(md5, (uint8_t*)&perm, 4); - if (pIdArray) { - CFX_ByteString id = pIdArray->GetStringAt(0); - CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength()); - } - if (!bIgnoreMeta && revision >= 3 && - !pEncrypt->GetIntegerBy("EncryptMetadata", 1)) { - FX_DWORD tag = (FX_DWORD)-1; - CRYPT_MD5Update(md5, (uint8_t*)&tag, 4); - } - uint8_t digest[16]; - CRYPT_MD5Finish(md5, digest); - FX_DWORD copy_len = keylen; - if (copy_len > sizeof(digest)) { - copy_len = sizeof(digest); - } - if (revision >= 3) { - for (int i = 0; i < 50; i++) { - CRYPT_MD5Generate(digest, copy_len, digest); - } - } - FXSYS_memset(key, 0, keylen); - FXSYS_memcpy(key, digest, copy_len); -} - -} // namespace - -IPDF_SecurityHandler::~IPDF_SecurityHandler() {} - -CPDF_StandardSecurityHandler::CPDF_StandardSecurityHandler() { - m_Version = 0; - m_Revision = 0; - m_pParser = NULL; - m_pEncryptDict = NULL; - m_Permissions = 0; - m_Cipher = FXCIPHER_NONE; - m_KeyLen = 0; -} - -CPDF_StandardSecurityHandler::~CPDF_StandardSecurityHandler() {} - -IPDF_CryptoHandler* CPDF_StandardSecurityHandler::CreateCryptoHandler() { - return new CPDF_StandardCryptoHandler; -} - -FX_BOOL CPDF_StandardSecurityHandler::OnInit(CPDF_Parser* pParser, - CPDF_Dictionary* pEncryptDict) { - m_pParser = pParser; - if (!LoadDict(pEncryptDict)) { - return FALSE; - } - if (m_Cipher == FXCIPHER_NONE) { - return TRUE; - } - return CheckSecurity(m_KeyLen); -} -FX_BOOL CPDF_StandardSecurityHandler::CheckSecurity(int32_t key_len) { - CFX_ByteString password = m_pParser->GetPassword(); - if (CheckPassword(password, password.GetLength(), TRUE, m_EncryptKey, - key_len)) { - if (password.IsEmpty()) { - if (!CheckPassword(password, password.GetLength(), FALSE, m_EncryptKey, - key_len)) { - return FALSE; - } - } - return TRUE; - } - return CheckPassword(password, password.GetLength(), FALSE, m_EncryptKey, - key_len); -} -FX_DWORD CPDF_StandardSecurityHandler::GetPermissions() { - return m_Permissions; -} -static FX_BOOL _LoadCryptInfo(CPDF_Dictionary* pEncryptDict, - const CFX_ByteStringC& name, - int& cipher, - int& keylen) { - int Version = pEncryptDict->GetIntegerBy("V"); - cipher = FXCIPHER_RC4; - keylen = 0; - if (Version >= 4) { - CPDF_Dictionary* pCryptFilters = pEncryptDict->GetDictBy("CF"); - if (!pCryptFilters) { - return FALSE; - } - if (name == "Identity") { - cipher = FXCIPHER_NONE; - } else { - CPDF_Dictionary* pDefFilter = pCryptFilters->GetDictBy(name); - if (!pDefFilter) { - return FALSE; - } - int nKeyBits = 0; - if (Version == 4) { - nKeyBits = pDefFilter->GetIntegerBy("Length", 0); - if (nKeyBits == 0) { - nKeyBits = pEncryptDict->GetIntegerBy("Length", 128); - } - } else { - nKeyBits = pEncryptDict->GetIntegerBy("Length", 256); - } - if (nKeyBits < 40) { - nKeyBits *= 8; - } - keylen = nKeyBits / 8; - CFX_ByteString cipher_name = pDefFilter->GetStringBy("CFM"); - if (cipher_name == "AESV2" || cipher_name == "AESV3") { - cipher = FXCIPHER_AES; - } - } - } else { - keylen = Version > 1 ? pEncryptDict->GetIntegerBy("Length", 40) / 8 : 5; - } - if (keylen > 32 || keylen < 0) { - return FALSE; - } - return TRUE; -} - -FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict) { - m_pEncryptDict = pEncryptDict; - m_Version = pEncryptDict->GetIntegerBy("V"); - m_Revision = pEncryptDict->GetIntegerBy("R"); - m_Permissions = pEncryptDict->GetIntegerBy("P", -1); - if (m_Version < 4) { - return _LoadCryptInfo(pEncryptDict, CFX_ByteString(), m_Cipher, m_KeyLen); - } - CFX_ByteString stmf_name = pEncryptDict->GetStringBy("StmF"); - CFX_ByteString strf_name = pEncryptDict->GetStringBy("StrF"); - if (stmf_name != strf_name) { - return FALSE; - } - if (!_LoadCryptInfo(pEncryptDict, strf_name, m_Cipher, m_KeyLen)) { - return FALSE; - } - return TRUE; -} - -FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict, - FX_DWORD type, - int& cipher, - int& key_len) { - m_pEncryptDict = pEncryptDict; - m_Version = pEncryptDict->GetIntegerBy("V"); - m_Revision = pEncryptDict->GetIntegerBy("R"); - m_Permissions = pEncryptDict->GetIntegerBy("P", -1); - CFX_ByteString strf_name, stmf_name; - if (m_Version >= 4) { - stmf_name = pEncryptDict->GetStringBy("StmF"); - strf_name = pEncryptDict->GetStringBy("StrF"); - if (stmf_name != strf_name) { - return FALSE; - } - } - if (!_LoadCryptInfo(pEncryptDict, strf_name, cipher, key_len)) { - return FALSE; - } - m_Cipher = cipher; - m_KeyLen = key_len; - return TRUE; -} - -FX_BOOL CPDF_StandardSecurityHandler::GetCryptInfo(int& cipher, - const uint8_t*& buffer, - int& keylen) { - cipher = m_Cipher; - buffer = m_EncryptKey; - keylen = m_KeyLen; - return TRUE; -} -#define FX_GET_32WORD(n, b, i) \ - { \ - (n) = (FX_DWORD)( \ - ((uint64_t)(b)[(i)] << 24) | ((uint64_t)(b)[(i) + 1] << 16) | \ - ((uint64_t)(b)[(i) + 2] << 8) | ((uint64_t)(b)[(i) + 3])); \ - } -int BigOrder64BitsMod3(uint8_t* data) { - uint64_t ret = 0; - for (int i = 0; i < 4; ++i) { - FX_DWORD value; - FX_GET_32WORD(value, data, 4 * i); - ret <<= 32; - ret |= value; - ret %= 3; - } - return (int)ret; -} -void Revision6_Hash(const uint8_t* password, - FX_DWORD size, - const uint8_t* salt, - const uint8_t* vector, - uint8_t* hash) { - int iBlockSize = 32; - uint8_t sha[128]; - CRYPT_SHA256Start(sha); - CRYPT_SHA256Update(sha, password, size); - CRYPT_SHA256Update(sha, salt, 8); - if (vector) { - CRYPT_SHA256Update(sha, vector, 48); - } - uint8_t digest[32]; - CRYPT_SHA256Finish(sha, digest); - CFX_ByteTextBuf buf; - uint8_t* input = digest; - uint8_t* key = input; - uint8_t* iv = input + 16; - uint8_t* E = buf.GetBuffer(); - int iBufLen = buf.GetLength(); - CFX_ByteTextBuf interDigest; - int i = 0; - uint8_t* aes = FX_Alloc(uint8_t, 2048); - while (i < 64 || i < E[iBufLen - 1] + 32) { - int iRoundSize = size + iBlockSize; - if (vector) { - iRoundSize += 48; - } - iBufLen = iRoundSize * 64; - buf.EstimateSize(iBufLen); - E = buf.GetBuffer(); - CFX_ByteTextBuf content; - for (int j = 0; j < 64; ++j) { - content.AppendBlock(password, size); - content.AppendBlock(input, iBlockSize); - if (vector) { - content.AppendBlock(vector, 48); - } - } - CRYPT_AESSetKey(aes, 16, key, 16, TRUE); - CRYPT_AESSetIV(aes, iv); - CRYPT_AESEncrypt(aes, E, content.GetBuffer(), iBufLen); - int iHash = 0; - switch (BigOrder64BitsMod3(E)) { - case 0: - iHash = 0; - iBlockSize = 32; - break; - case 1: - iHash = 1; - iBlockSize = 48; - break; - default: - iHash = 2; - iBlockSize = 64; - break; - } - interDigest.EstimateSize(iBlockSize); - input = interDigest.GetBuffer(); - if (iHash == 0) { - CRYPT_SHA256Generate(E, iBufLen, input); - } else if (iHash == 1) { - CRYPT_SHA384Generate(E, iBufLen, input); - } else if (iHash == 2) { - CRYPT_SHA512Generate(E, iBufLen, input); - } - key = input; - iv = input + 16; - ++i; - } - FX_Free(aes); - if (hash) { - FXSYS_memcpy(hash, input, 32); - } -} -FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword( - const uint8_t* password, - FX_DWORD size, - FX_BOOL bOwner, - uint8_t* key) { - CFX_ByteString okey = - m_pEncryptDict ? m_pEncryptDict->GetStringBy("O") : CFX_ByteString(); - if (okey.GetLength() < 48) { - return FALSE; - } - CFX_ByteString ukey = - m_pEncryptDict ? m_pEncryptDict->GetStringBy("U") : CFX_ByteString(); - if (ukey.GetLength() < 48) { - return FALSE; - } - const uint8_t* pkey = bOwner ? (const uint8_t*)okey : (const uint8_t*)ukey; - uint8_t sha[128]; - uint8_t digest[32]; - if (m_Revision >= 6) { - Revision6_Hash(password, size, (const uint8_t*)pkey + 32, - (bOwner ? (const uint8_t*)ukey : NULL), digest); - } else { - CRYPT_SHA256Start(sha); - CRYPT_SHA256Update(sha, password, size); - CRYPT_SHA256Update(sha, pkey + 32, 8); - if (bOwner) { - CRYPT_SHA256Update(sha, ukey, 48); - } - CRYPT_SHA256Finish(sha, digest); - } - if (FXSYS_memcmp(digest, pkey, 32) != 0) { - return FALSE; - } - if (!key) { - return TRUE; - } - if (m_Revision >= 6) { - Revision6_Hash(password, size, (const uint8_t*)pkey + 40, - (bOwner ? (const uint8_t*)ukey : NULL), digest); - } else { - CRYPT_SHA256Start(sha); - CRYPT_SHA256Update(sha, password, size); - CRYPT_SHA256Update(sha, pkey + 40, 8); - if (bOwner) { - CRYPT_SHA256Update(sha, ukey, 48); - } - CRYPT_SHA256Finish(sha, digest); - } - CFX_ByteString ekey = m_pEncryptDict - ? m_pEncryptDict->GetStringBy(bOwner ? "OE" : "UE") - : CFX_ByteString(); - if (ekey.GetLength() < 32) { - return FALSE; - } - uint8_t* aes = FX_Alloc(uint8_t, 2048); - CRYPT_AESSetKey(aes, 16, digest, 32, FALSE); - uint8_t iv[16]; - FXSYS_memset(iv, 0, 16); - CRYPT_AESSetIV(aes, iv); - CRYPT_AESDecrypt(aes, key, ekey, 32); - CRYPT_AESSetKey(aes, 16, key, 32, FALSE); - CRYPT_AESSetIV(aes, iv); - CFX_ByteString perms = m_pEncryptDict->GetStringBy("Perms"); - if (perms.IsEmpty()) { - return FALSE; - } - uint8_t perms_buf[16]; - FXSYS_memset(perms_buf, 0, sizeof(perms_buf)); - FX_DWORD copy_len = sizeof(perms_buf); - if (copy_len > (FX_DWORD)perms.GetLength()) { - copy_len = perms.GetLength(); - } - FXSYS_memcpy(perms_buf, (const uint8_t*)perms, copy_len); - uint8_t buf[16]; - CRYPT_AESDecrypt(aes, buf, perms_buf, 16); - FX_Free(aes); - if (buf[9] != 'a' || buf[10] != 'd' || buf[11] != 'b') { - return FALSE; - } - if (FXDWORD_GET_LSBFIRST(buf) != m_Permissions) { - return FALSE; - } - if ((buf[8] == 'T' && !IsMetadataEncrypted()) || - (buf[8] == 'F' && IsMetadataEncrypted())) { - return FALSE; - } - return TRUE; -} - -int CPDF_StandardSecurityHandler::CheckPassword(const uint8_t* password, - FX_DWORD size, - FX_BOOL bOwner, - uint8_t* key, - int32_t key_len) { - if (m_Revision >= 5) { - return AES256_CheckPassword(password, size, bOwner, key); - } - uint8_t keybuf[32]; - if (!key) { - key = keybuf; - } - if (bOwner) { - return CheckOwnerPassword(password, size, key, key_len); - } - return CheckUserPassword(password, size, FALSE, key, key_len) || - CheckUserPassword(password, size, TRUE, key, key_len); -} -FX_BOOL CPDF_StandardSecurityHandler::CheckUserPassword( - const uint8_t* password, - FX_DWORD pass_size, - FX_BOOL bIgnoreEncryptMeta, - uint8_t* key, - int32_t key_len) { - CalcEncryptKey(m_pEncryptDict, password, pass_size, key, key_len, - bIgnoreEncryptMeta, m_pParser->GetIDArray()); - CFX_ByteString ukey = - m_pEncryptDict ? m_pEncryptDict->GetStringBy("U") : CFX_ByteString(); - if (ukey.GetLength() < 16) { - return FALSE; - } - uint8_t ukeybuf[32]; - if (m_Revision == 2) { - FXSYS_memcpy(ukeybuf, defpasscode, 32); - CRYPT_ArcFourCryptBlock(ukeybuf, 32, key, key_len); - } else { - uint8_t test[32], tmpkey[32]; - FX_DWORD copy_len = sizeof(test); - if (copy_len > (FX_DWORD)ukey.GetLength()) { - copy_len = ukey.GetLength(); - } - FXSYS_memset(test, 0, sizeof(test)); - FXSYS_memset(tmpkey, 0, sizeof(tmpkey)); - FXSYS_memcpy(test, ukey.c_str(), copy_len); - for (int i = 19; i >= 0; i--) { - for (int j = 0; j < key_len; j++) { - tmpkey[j] = key[j] ^ i; - } - CRYPT_ArcFourCryptBlock(test, 32, tmpkey, key_len); - } - uint8_t md5[100]; - CRYPT_MD5Start(md5); - CRYPT_MD5Update(md5, defpasscode, 32); - CPDF_Array* pIdArray = m_pParser->GetIDArray(); - if (pIdArray) { - CFX_ByteString id = pIdArray->GetStringAt(0); - CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength()); - } - CRYPT_MD5Finish(md5, ukeybuf); - return FXSYS_memcmp(test, ukeybuf, 16) == 0; - } - if (FXSYS_memcmp((void*)ukey.c_str(), ukeybuf, 16) == 0) { - return TRUE; - } - return FALSE; -} -CFX_ByteString CPDF_StandardSecurityHandler::GetUserPassword( - const uint8_t* owner_pass, - FX_DWORD pass_size, - int32_t key_len) { - CFX_ByteString okey = m_pEncryptDict->GetStringBy("O"); - uint8_t passcode[32]; - FX_DWORD i; - for (i = 0; i < 32; i++) { - passcode[i] = i < pass_size ? owner_pass[i] : defpasscode[i - pass_size]; - } - uint8_t digest[16]; - CRYPT_MD5Generate(passcode, 32, digest); - if (m_Revision >= 3) { - for (int i = 0; i < 50; i++) { - CRYPT_MD5Generate(digest, 16, digest); - } - } - uint8_t enckey[32]; - FXSYS_memset(enckey, 0, sizeof(enckey)); - FX_DWORD copy_len = key_len; - if (copy_len > sizeof(digest)) { - copy_len = sizeof(digest); - } - FXSYS_memcpy(enckey, digest, copy_len); - int okeylen = okey.GetLength(); - if (okeylen > 32) { - okeylen = 32; - } - uint8_t okeybuf[64]; - FXSYS_memset(okeybuf, 0, sizeof(okeybuf)); - FXSYS_memcpy(okeybuf, okey.c_str(), okeylen); - if (m_Revision == 2) { - CRYPT_ArcFourCryptBlock(okeybuf, okeylen, enckey, key_len); - } else { - for (int i = 19; i >= 0; i--) { - uint8_t tempkey[32]; - FXSYS_memset(tempkey, 0, sizeof(tempkey)); - for (int j = 0; j < m_KeyLen; j++) { - tempkey[j] = enckey[j] ^ i; - } - CRYPT_ArcFourCryptBlock(okeybuf, okeylen, tempkey, key_len); - } - } - int len = 32; - while (len && defpasscode[len - 1] == okeybuf[len - 1]) { - len--; - } - return CFX_ByteString(okeybuf, len); -} -FX_BOOL CPDF_StandardSecurityHandler::CheckOwnerPassword( - const uint8_t* password, - FX_DWORD pass_size, - uint8_t* key, - int32_t key_len) { - CFX_ByteString user_pass = GetUserPassword(password, pass_size, key_len); - if (CheckUserPassword(user_pass, user_pass.GetLength(), FALSE, key, - key_len)) { - return TRUE; - } - return CheckUserPassword(user_pass, user_pass.GetLength(), TRUE, key, - key_len); -} -FX_BOOL CPDF_StandardSecurityHandler::IsMetadataEncrypted() { - return m_pEncryptDict->GetBooleanBy("EncryptMetadata", TRUE); -} - -void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict, - CPDF_Array* pIdArray, - const uint8_t* user_pass, - FX_DWORD user_size, - const uint8_t* owner_pass, - FX_DWORD owner_size, - FX_BOOL bDefault, - FX_DWORD type) { - int cipher = 0, key_len = 0; - if (!LoadDict(pEncryptDict, type, cipher, key_len)) { - return; - } - if (bDefault && (!owner_pass || owner_size == 0)) { - owner_pass = user_pass; - owner_size = user_size; - } - if (m_Revision >= 5) { - int t = (int)time(NULL); - uint8_t sha[128]; - CRYPT_SHA256Start(sha); - CRYPT_SHA256Update(sha, (uint8_t*)&t, sizeof t); - CRYPT_SHA256Update(sha, m_EncryptKey, 32); - CRYPT_SHA256Update(sha, (uint8_t*)"there", 5); - CRYPT_SHA256Finish(sha, m_EncryptKey); - AES256_SetPassword(pEncryptDict, user_pass, user_size, FALSE, m_EncryptKey); - if (bDefault) { - AES256_SetPassword(pEncryptDict, owner_pass, owner_size, TRUE, - m_EncryptKey); - AES256_SetPerms(pEncryptDict, m_Permissions, - pEncryptDict->GetBooleanBy("EncryptMetadata", TRUE), - m_EncryptKey); - } - return; - } - if (bDefault) { - uint8_t passcode[32]; - FX_DWORD i; - for (i = 0; i < 32; i++) { - passcode[i] = - i < owner_size ? owner_pass[i] : defpasscode[i - owner_size]; - } - uint8_t digest[16]; - CRYPT_MD5Generate(passcode, 32, digest); - if (m_Revision >= 3) { - for (int i = 0; i < 50; i++) { - CRYPT_MD5Generate(digest, 16, digest); - } - } - uint8_t enckey[32]; - FXSYS_memcpy(enckey, digest, key_len); - for (i = 0; i < 32; i++) { - passcode[i] = i < user_size ? user_pass[i] : defpasscode[i - user_size]; - } - CRYPT_ArcFourCryptBlock(passcode, 32, enckey, key_len); - uint8_t tempkey[32]; - if (m_Revision >= 3) { - for (i = 1; i <= 19; i++) { - for (int j = 0; j < key_len; j++) { - tempkey[j] = enckey[j] ^ (uint8_t)i; - } - CRYPT_ArcFourCryptBlock(passcode, 32, tempkey, key_len); - } - } - pEncryptDict->SetAtString("O", CFX_ByteString(passcode, 32)); - } - CalcEncryptKey(m_pEncryptDict, (uint8_t*)user_pass, user_size, m_EncryptKey, - key_len, FALSE, pIdArray); - if (m_Revision < 3) { - uint8_t tempbuf[32]; - FXSYS_memcpy(tempbuf, defpasscode, 32); - CRYPT_ArcFourCryptBlock(tempbuf, 32, m_EncryptKey, key_len); - pEncryptDict->SetAtString("U", CFX_ByteString(tempbuf, 32)); - } else { - uint8_t md5[100]; - CRYPT_MD5Start(md5); - CRYPT_MD5Update(md5, defpasscode, 32); - if (pIdArray) { - CFX_ByteString id = pIdArray->GetStringAt(0); - CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength()); - } - uint8_t digest[32]; - CRYPT_MD5Finish(md5, digest); - CRYPT_ArcFourCryptBlock(digest, 16, m_EncryptKey, key_len); - uint8_t tempkey[32]; - for (int i = 1; i <= 19; i++) { - for (int j = 0; j < key_len; j++) { - tempkey[j] = m_EncryptKey[j] ^ (uint8_t)i; - } - CRYPT_ArcFourCryptBlock(digest, 16, tempkey, key_len); - } - CRYPT_MD5Generate(digest, 16, digest + 16); - pEncryptDict->SetAtString("U", CFX_ByteString(digest, 32)); - } -} -void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict, - CPDF_Array* pIdArray, - const uint8_t* user_pass, - FX_DWORD user_size, - const uint8_t* owner_pass, - FX_DWORD owner_size, - FX_DWORD type) { - OnCreate(pEncryptDict, pIdArray, user_pass, user_size, owner_pass, owner_size, - TRUE, type); -} -void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict, - CPDF_Array* pIdArray, - const uint8_t* user_pass, - FX_DWORD user_size, - FX_DWORD type) { - OnCreate(pEncryptDict, pIdArray, user_pass, user_size, NULL, 0, FALSE, type); -} -void CPDF_StandardSecurityHandler::AES256_SetPassword( - CPDF_Dictionary* pEncryptDict, - const uint8_t* password, - FX_DWORD size, - FX_BOOL bOwner, - const uint8_t* key) { - uint8_t sha[128]; - CRYPT_SHA1Start(sha); - CRYPT_SHA1Update(sha, key, 32); - CRYPT_SHA1Update(sha, (uint8_t*)"hello", 5); - uint8_t digest[20]; - CRYPT_SHA1Finish(sha, digest); - CFX_ByteString ukey = pEncryptDict->GetStringBy("U"); - uint8_t digest1[48]; - if (m_Revision >= 6) { - Revision6_Hash(password, size, digest, - (bOwner ? (const uint8_t*)ukey : NULL), digest1); - } else { - CRYPT_SHA256Start(sha); - CRYPT_SHA256Update(sha, password, size); - CRYPT_SHA256Update(sha, digest, 8); - if (bOwner) { - CRYPT_SHA256Update(sha, ukey, ukey.GetLength()); - } - CRYPT_SHA256Finish(sha, digest1); - } - FXSYS_memcpy(digest1 + 32, digest, 16); - pEncryptDict->SetAtString(bOwner ? "O" : "U", CFX_ByteString(digest1, 48)); - if (m_Revision >= 6) { - Revision6_Hash(password, size, digest + 8, - (bOwner ? (const uint8_t*)ukey : NULL), digest1); - } else { - CRYPT_SHA256Start(sha); - CRYPT_SHA256Update(sha, password, size); - CRYPT_SHA256Update(sha, digest + 8, 8); - if (bOwner) { - CRYPT_SHA256Update(sha, ukey, ukey.GetLength()); - } - CRYPT_SHA256Finish(sha, digest1); - } - uint8_t* aes = FX_Alloc(uint8_t, 2048); - CRYPT_AESSetKey(aes, 16, digest1, 32, TRUE); - uint8_t iv[16]; - FXSYS_memset(iv, 0, 16); - CRYPT_AESSetIV(aes, iv); - CRYPT_AESEncrypt(aes, digest1, key, 32); - FX_Free(aes); - pEncryptDict->SetAtString(bOwner ? "OE" : "UE", CFX_ByteString(digest1, 32)); -} -void CPDF_StandardSecurityHandler::AES256_SetPerms( - CPDF_Dictionary* pEncryptDict, - FX_DWORD permissions, - FX_BOOL bEncryptMetadata, - const uint8_t* key) { - uint8_t buf[16]; - buf[0] = (uint8_t)permissions; - buf[1] = (uint8_t)(permissions >> 8); - buf[2] = (uint8_t)(permissions >> 16); - buf[3] = (uint8_t)(permissions >> 24); - buf[4] = 0xff; - buf[5] = 0xff; - buf[6] = 0xff; - buf[7] = 0xff; - buf[8] = bEncryptMetadata ? 'T' : 'F'; - buf[9] = 'a'; - buf[10] = 'd'; - buf[11] = 'b'; - uint8_t* aes = FX_Alloc(uint8_t, 2048); - CRYPT_AESSetKey(aes, 16, key, 32, TRUE); - uint8_t iv[16], buf1[16]; - FXSYS_memset(iv, 0, 16); - CRYPT_AESSetIV(aes, iv); - CRYPT_AESEncrypt(aes, buf1, buf, 16); - FX_Free(aes); - pEncryptDict->SetAtString("Perms", CFX_ByteString(buf1, 16)); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h b/core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h deleted file mode 100644 index fa761a1846..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_ -#define CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_ - -#include "core/include/fpdfapi/ipdf_security_handler.h" -#include "core/include/fxcrt/fx_string.h" -#include "core/include/fxcrt/fx_system.h" - -class CPDF_Array; - -#define PDF_ENCRYPT_CONTENT 0 - -class CPDF_StandardSecurityHandler : public IPDF_SecurityHandler { - public: - CPDF_StandardSecurityHandler(); - ~CPDF_StandardSecurityHandler() override; - - // IPDF_SecurityHandler: - FX_BOOL OnInit(CPDF_Parser* pParser, CPDF_Dictionary* pEncryptDict) override; - FX_DWORD GetPermissions() override; - FX_BOOL GetCryptInfo(int& cipher, - const uint8_t*& buffer, - int& keylen) override; - FX_BOOL IsMetadataEncrypted() override; - IPDF_CryptoHandler* CreateCryptoHandler() override; - - void OnCreate(CPDF_Dictionary* pEncryptDict, - CPDF_Array* pIdArray, - const uint8_t* user_pass, - FX_DWORD user_size, - const uint8_t* owner_pass, - FX_DWORD owner_size, - FX_DWORD type = PDF_ENCRYPT_CONTENT); - - void OnCreate(CPDF_Dictionary* pEncryptDict, - CPDF_Array* pIdArray, - const uint8_t* user_pass, - FX_DWORD user_size, - FX_DWORD type = PDF_ENCRYPT_CONTENT); - - CFX_ByteString GetUserPassword(const uint8_t* owner_pass, - FX_DWORD pass_size, - int32_t key_len); - int CheckPassword(const uint8_t* password, - FX_DWORD pass_size, - FX_BOOL bOwner, - uint8_t* key, - int key_len); - - private: - FX_BOOL LoadDict(CPDF_Dictionary* pEncryptDict); - FX_BOOL LoadDict(CPDF_Dictionary* pEncryptDict, - FX_DWORD type, - int& cipher, - int& key_len); - - FX_BOOL CheckUserPassword(const uint8_t* password, - FX_DWORD pass_size, - FX_BOOL bIgnoreEncryptMeta, - uint8_t* key, - int32_t key_len); - - FX_BOOL CheckOwnerPassword(const uint8_t* password, - FX_DWORD pass_size, - uint8_t* key, - int32_t key_len); - FX_BOOL AES256_CheckPassword(const uint8_t* password, - FX_DWORD size, - FX_BOOL bOwner, - uint8_t* key); - void AES256_SetPassword(CPDF_Dictionary* pEncryptDict, - const uint8_t* password, - FX_DWORD size, - FX_BOOL bOwner, - const uint8_t* key); - void AES256_SetPerms(CPDF_Dictionary* pEncryptDict, - FX_DWORD permission, - FX_BOOL bEncryptMetadata, - const uint8_t* key); - void OnCreate(CPDF_Dictionary* pEncryptDict, - CPDF_Array* pIdArray, - const uint8_t* user_pass, - FX_DWORD user_size, - const uint8_t* owner_pass, - FX_DWORD owner_size, - FX_BOOL bDefault, - FX_DWORD type); - FX_BOOL CheckSecurity(int32_t key_len); - - int m_Version; - int m_Revision; - CPDF_Parser* m_pParser; - CPDF_Dictionary* m_pEncryptDict; - FX_DWORD m_Permissions; - int m_Cipher; - uint8_t m_EncryptKey[32]; - int m_KeyLen; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_ diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_stream.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_stream.cpp deleted file mode 100644 index 45c946ab5f..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_stream.cpp +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_stream.h" - -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" - -CPDF_Stream::CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict) - : m_pDict(pDict), - m_dwSize(size), - m_GenNum(kMemoryBasedGenNum), - m_pDataBuf(pData) {} - -CPDF_Stream::~CPDF_Stream() { - if (IsMemoryBased()) - FX_Free(m_pDataBuf); - - if (m_pDict) - m_pDict->Release(); -} - -CPDF_Object::Type CPDF_Stream::GetType() const { - return STREAM; -} - -CPDF_Dictionary* CPDF_Stream::GetDict() const { - return m_pDict; -} - -bool CPDF_Stream::IsStream() const { - return true; -} - -CPDF_Stream* CPDF_Stream::AsStream() { - return this; -} - -const CPDF_Stream* CPDF_Stream::AsStream() const { - return this; -} - -void CPDF_Stream::InitStreamInternal(CPDF_Dictionary* pDict) { - if (pDict) { - if (m_pDict) - m_pDict->Release(); - m_pDict = pDict; - } - if (IsMemoryBased()) - FX_Free(m_pDataBuf); - - m_GenNum = 0; - m_pFile = nullptr; -} - -void CPDF_Stream::InitStream(uint8_t* pData, - FX_DWORD size, - CPDF_Dictionary* pDict) { - InitStreamInternal(pDict); - m_GenNum = kMemoryBasedGenNum; - m_pDataBuf = FX_Alloc(uint8_t, size); - if (pData) - FXSYS_memcpy(m_pDataBuf, pData, size); - - m_dwSize = size; - if (m_pDict) - m_pDict->SetAtInteger("Length", size); -} - -CPDF_Object* CPDF_Stream::Clone(FX_BOOL bDirect) const { - CPDF_StreamAcc acc; - acc.LoadAllData(this, TRUE); - FX_DWORD streamSize = acc.GetSize(); - CPDF_Dictionary* pDict = GetDict(); - if (pDict) - pDict = ToDictionary(pDict->Clone(bDirect)); - - return new CPDF_Stream(acc.DetachData(), streamSize, pDict); -} - -void CPDF_Stream::SetData(const uint8_t* pData, - FX_DWORD size, - FX_BOOL bCompressed, - FX_BOOL bKeepBuf) { - if (IsMemoryBased()) - FX_Free(m_pDataBuf); - m_GenNum = kMemoryBasedGenNum; - - if (bKeepBuf) { - m_pDataBuf = const_cast(pData); - } else { - m_pDataBuf = FX_Alloc(uint8_t, size); - if (pData) { - FXSYS_memcpy(m_pDataBuf, pData, size); - } - } - m_dwSize = size; - if (!m_pDict) - m_pDict = new CPDF_Dictionary; - m_pDict->SetAtInteger("Length", size); - if (!bCompressed) { - m_pDict->RemoveAt("Filter"); - m_pDict->RemoveAt("DecodeParms"); - } -} - -FX_BOOL CPDF_Stream::ReadRawData(FX_FILESIZE offset, - uint8_t* buf, - FX_DWORD size) const { - if (!IsMemoryBased() && m_pFile) - return m_pFile->ReadBlock(buf, offset, size); - - if (m_pDataBuf) - FXSYS_memcpy(buf, m_pDataBuf + offset, size); - - return TRUE; -} - -void CPDF_Stream::InitStreamFromFile(IFX_FileRead* pFile, - CPDF_Dictionary* pDict) { - InitStreamInternal(pDict); - m_pFile = pFile; - m_dwSize = (FX_DWORD)pFile->GetSize(); - if (m_pDict) - m_pDict->SetAtInteger("Length", m_dwSize); -} - -CFX_WideString CPDF_Stream::GetUnicodeText() const { - CPDF_StreamAcc stream; - stream.LoadAllData(this, FALSE); - return PDF_DecodeText(stream.GetData(), stream.GetSize()); -} - -CPDF_StreamAcc::CPDF_StreamAcc() - : m_pData(nullptr), - m_dwSize(0), - m_bNewBuf(FALSE), - m_pImageParam(nullptr), - m_pStream(nullptr), - m_pSrcData(nullptr) {} - -void CPDF_StreamAcc::LoadAllData(const CPDF_Stream* pStream, - FX_BOOL bRawAccess, - FX_DWORD estimated_size, - FX_BOOL bImageAcc) { - if (!pStream) - return; - - m_pStream = pStream; - if (pStream->IsMemoryBased() && - (!pStream->GetDict()->KeyExist("Filter") || bRawAccess)) { - m_dwSize = pStream->GetRawSize(); - m_pData = pStream->GetRawData(); - return; - } - uint8_t* pSrcData; - FX_DWORD dwSrcSize = pStream->GetRawSize(); - if (dwSrcSize == 0) - return; - - if (!pStream->IsMemoryBased()) { - pSrcData = m_pSrcData = FX_Alloc(uint8_t, dwSrcSize); - if (!pStream->ReadRawData(0, pSrcData, dwSrcSize)) - return; - } else { - pSrcData = pStream->GetRawData(); - } - uint8_t* pDecryptedData = pSrcData; - FX_DWORD dwDecryptedSize = dwSrcSize; - if (!pStream->GetDict()->KeyExist("Filter") || bRawAccess) { - m_pData = pDecryptedData; - m_dwSize = dwDecryptedSize; - } else { - FX_BOOL bRet = PDF_DataDecode( - pDecryptedData, dwDecryptedSize, m_pStream->GetDict(), m_pData, - m_dwSize, m_ImageDecoder, m_pImageParam, estimated_size, bImageAcc); - if (!bRet) { - m_pData = pDecryptedData; - m_dwSize = dwDecryptedSize; - } - } - if (pSrcData != pStream->GetRawData() && pSrcData != m_pData) { - FX_Free(pSrcData); - } - if (pDecryptedData != pSrcData && pDecryptedData != m_pData) { - FX_Free(pDecryptedData); - } - m_pSrcData = nullptr; - m_bNewBuf = m_pData != pStream->GetRawData(); -} - -CPDF_StreamAcc::~CPDF_StreamAcc() { - if (m_bNewBuf) { - FX_Free(m_pData); - } - FX_Free(m_pSrcData); -} - -const uint8_t* CPDF_StreamAcc::GetData() const { - if (m_bNewBuf) { - return m_pData; - } - if (!m_pStream) { - return nullptr; - } - return m_pStream->GetRawData(); -} - -FX_DWORD CPDF_StreamAcc::GetSize() const { - if (m_bNewBuf) { - return m_dwSize; - } - if (!m_pStream) { - return 0; - } - return m_pStream->GetRawSize(); -} - -uint8_t* CPDF_StreamAcc::DetachData() { - if (m_bNewBuf) { - uint8_t* p = m_pData; - m_pData = nullptr; - m_dwSize = 0; - return p; - } - uint8_t* p = FX_Alloc(uint8_t, m_dwSize); - FXSYS_memcpy(p, m_pData, m_dwSize); - return p; -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_string.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_string.cpp deleted file mode 100644 index 1d0bf0b829..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_string.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_string.h" - -#include "core/include/fpdfapi/fpdf_parser_decode.h" - -CPDF_String::CPDF_String() : m_bHex(FALSE) {} - -CPDF_String::CPDF_String(const CFX_ByteString& str, FX_BOOL bHex) - : m_String(str), m_bHex(bHex) {} - -CPDF_String::CPDF_String(const CFX_WideString& str) : m_bHex(FALSE) { - m_String = PDF_EncodeText(str); -} - -CPDF_String::~CPDF_String() {} - -CPDF_Object::Type CPDF_String::GetType() const { - return STRING; -} - -CPDF_Object* CPDF_String::Clone(FX_BOOL bDirect) const { - return new CPDF_String(m_String, m_bHex); -} - -CFX_ByteString CPDF_String::GetString() const { - return m_String; -} - -CFX_ByteStringC CPDF_String::GetConstString() const { - return CFX_ByteStringC(m_String); -} - -void CPDF_String::SetString(const CFX_ByteString& str) { - m_String = str; -} - -bool CPDF_String::IsString() const { - return true; -} - -CPDF_String* CPDF_String::AsString() { - return this; -} - -const CPDF_String* CPDF_String::AsString() const { - return this; -} - -CFX_WideString CPDF_String::GetUnicodeText() const { - return PDF_DecodeText(m_String); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp deleted file mode 100644 index 89ad5eec33..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp +++ /dev/null @@ -1,990 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_boolean.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "core/include/fpdfapi/cpdf_null.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fpdfapi/ipdf_crypto_handler.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" -#include "third_party/base/numerics/safe_math.h" - -namespace { - -struct SearchTagRecord { - const char* m_pTag; - FX_DWORD m_Len; - FX_DWORD m_Offset; -}; - -} // namespace - -// static -int CPDF_SyntaxParser::s_CurrentRecursionDepth = 0; - -CPDF_SyntaxParser::CPDF_SyntaxParser() - : m_MetadataObjnum(0), - m_pFileAccess(nullptr), - m_pFileBuf(nullptr), - m_BufSize(CPDF_ModuleMgr::kFileBufSize) {} - -CPDF_SyntaxParser::~CPDF_SyntaxParser() { - FX_Free(m_pFileBuf); -} - -FX_BOOL CPDF_SyntaxParser::GetCharAt(FX_FILESIZE pos, uint8_t& ch) { - CFX_AutoRestorer save_pos(&m_Pos); - m_Pos = pos; - return GetNextChar(ch); -} - -FX_BOOL CPDF_SyntaxParser::GetNextChar(uint8_t& ch) { - FX_FILESIZE pos = m_Pos + m_HeaderOffset; - if (pos >= m_FileLen) - return FALSE; - - if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) { - FX_FILESIZE read_pos = pos; - FX_DWORD read_size = m_BufSize; - if ((FX_FILESIZE)read_size > m_FileLen) - read_size = (FX_DWORD)m_FileLen; - - if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) { - if (m_FileLen < (FX_FILESIZE)read_size) { - read_pos = 0; - read_size = (FX_DWORD)m_FileLen; - } else { - read_pos = m_FileLen - read_size; - } - } - - if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size)) - return FALSE; - - m_BufOffset = read_pos; - } - ch = m_pFileBuf[pos - m_BufOffset]; - m_Pos++; - return TRUE; -} - -FX_BOOL CPDF_SyntaxParser::GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch) { - pos += m_HeaderOffset; - if (pos >= m_FileLen) - return FALSE; - - if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) { - FX_FILESIZE read_pos; - if (pos < (FX_FILESIZE)m_BufSize) - read_pos = 0; - else - read_pos = pos - m_BufSize + 1; - - FX_DWORD read_size = m_BufSize; - if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) { - if (m_FileLen < (FX_FILESIZE)read_size) { - read_pos = 0; - read_size = (FX_DWORD)m_FileLen; - } else { - read_pos = m_FileLen - read_size; - } - } - - if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size)) - return FALSE; - - m_BufOffset = read_pos; - } - ch = m_pFileBuf[pos - m_BufOffset]; - return TRUE; -} - -FX_BOOL CPDF_SyntaxParser::ReadBlock(uint8_t* pBuf, FX_DWORD size) { - if (!m_pFileAccess->ReadBlock(pBuf, m_Pos + m_HeaderOffset, size)) - return FALSE; - m_Pos += size; - return TRUE; -} - -void CPDF_SyntaxParser::GetNextWordInternal(bool* bIsNumber) { - m_WordSize = 0; - if (bIsNumber) - *bIsNumber = true; - - uint8_t ch; - if (!GetNextChar(ch)) - return; - - while (1) { - while (PDFCharIsWhitespace(ch)) { - if (!GetNextChar(ch)) - return; - } - - if (ch != '%') - break; - - while (1) { - if (!GetNextChar(ch)) - return; - if (PDFCharIsLineEnding(ch)) - break; - } - } - - if (PDFCharIsDelimiter(ch)) { - if (bIsNumber) - *bIsNumber = false; - - m_WordBuffer[m_WordSize++] = ch; - if (ch == '/') { - while (1) { - if (!GetNextChar(ch)) - return; - - if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) { - m_Pos--; - return; - } - - if (m_WordSize < sizeof(m_WordBuffer) - 1) - m_WordBuffer[m_WordSize++] = ch; - } - } else if (ch == '<') { - if (!GetNextChar(ch)) - return; - - if (ch == '<') - m_WordBuffer[m_WordSize++] = ch; - else - m_Pos--; - } else if (ch == '>') { - if (!GetNextChar(ch)) - return; - - if (ch == '>') - m_WordBuffer[m_WordSize++] = ch; - else - m_Pos--; - } - return; - } - - while (1) { - if (m_WordSize < sizeof(m_WordBuffer) - 1) - m_WordBuffer[m_WordSize++] = ch; - - if (!PDFCharIsNumeric(ch)) { - if (bIsNumber) - *bIsNumber = false; - } - - if (!GetNextChar(ch)) - return; - - if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) { - m_Pos--; - break; - } - } -} - -CFX_ByteString CPDF_SyntaxParser::ReadString() { - uint8_t ch; - if (!GetNextChar(ch)) - return CFX_ByteString(); - - CFX_ByteTextBuf buf; - int32_t parlevel = 0; - int32_t status = 0; - int32_t iEscCode = 0; - while (1) { - switch (status) { - case 0: - if (ch == ')') { - if (parlevel == 0) { - return buf.GetByteString(); - } - parlevel--; - buf.AppendChar(')'); - } else if (ch == '(') { - parlevel++; - buf.AppendChar('('); - } else if (ch == '\\') { - status = 1; - } else { - buf.AppendChar(ch); - } - break; - case 1: - if (ch >= '0' && ch <= '7') { - iEscCode = FXSYS_toDecimalDigit(static_cast(ch)); - status = 2; - break; - } - - if (ch == 'n') { - buf.AppendChar('\n'); - } else if (ch == 'r') { - buf.AppendChar('\r'); - } else if (ch == 't') { - buf.AppendChar('\t'); - } else if (ch == 'b') { - buf.AppendChar('\b'); - } else if (ch == 'f') { - buf.AppendChar('\f'); - } else if (ch == '\r') { - status = 4; - break; - } else if (ch != '\n') { - buf.AppendChar(ch); - } - status = 0; - break; - case 2: - if (ch >= '0' && ch <= '7') { - iEscCode = - iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); - status = 3; - } else { - buf.AppendChar(iEscCode); - status = 0; - continue; - } - break; - case 3: - if (ch >= '0' && ch <= '7') { - iEscCode = - iEscCode * 8 + FXSYS_toDecimalDigit(static_cast(ch)); - buf.AppendChar(iEscCode); - status = 0; - } else { - buf.AppendChar(iEscCode); - status = 0; - continue; - } - break; - case 4: - status = 0; - if (ch != '\n') - continue; - break; - } - - if (!GetNextChar(ch)) - break; - } - - GetNextChar(ch); - return buf.GetByteString(); -} - -CFX_ByteString CPDF_SyntaxParser::ReadHexString() { - uint8_t ch; - if (!GetNextChar(ch)) - return CFX_ByteString(); - - CFX_ByteTextBuf buf; - bool bFirst = true; - uint8_t code = 0; - while (1) { - if (ch == '>') - break; - - if (std::isxdigit(ch)) { - int val = FXSYS_toHexDigit(ch); - if (bFirst) { - code = val * 16; - } else { - code += val; - buf.AppendByte(code); - } - bFirst = !bFirst; - } - - if (!GetNextChar(ch)) - break; - } - if (!bFirst) - buf.AppendByte(code); - - return buf.GetByteString(); -} - -void CPDF_SyntaxParser::ToNextLine() { - uint8_t ch; - while (GetNextChar(ch)) { - if (ch == '\n') - break; - - if (ch == '\r') { - GetNextChar(ch); - if (ch != '\n') - --m_Pos; - break; - } - } -} - -void CPDF_SyntaxParser::ToNextWord() { - uint8_t ch; - if (!GetNextChar(ch)) - return; - - while (1) { - while (PDFCharIsWhitespace(ch)) { - if (!GetNextChar(ch)) - return; - } - - if (ch != '%') - break; - - while (1) { - if (!GetNextChar(ch)) - return; - if (PDFCharIsLineEnding(ch)) - break; - } - } - m_Pos--; -} - -CFX_ByteString CPDF_SyntaxParser::GetNextWord(bool* bIsNumber) { - GetNextWordInternal(bIsNumber); - return CFX_ByteString((const FX_CHAR*)m_WordBuffer, m_WordSize); -} - -CFX_ByteString CPDF_SyntaxParser::GetKeyword() { - return GetNextWord(nullptr); -} - -CPDF_Object* CPDF_SyntaxParser::GetObject(CPDF_IndirectObjectHolder* pObjList, - FX_DWORD objnum, - FX_DWORD gennum, - FX_BOOL bDecrypt) { - CFX_AutoRestorer restorer(&s_CurrentRecursionDepth); - if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) - return nullptr; - - FX_FILESIZE SavedPos = m_Pos; - bool bIsNumber; - CFX_ByteString word = GetNextWord(&bIsNumber); - if (word.GetLength() == 0) - return nullptr; - - if (bIsNumber) { - FX_FILESIZE SavedPos = m_Pos; - CFX_ByteString nextword = GetNextWord(&bIsNumber); - if (bIsNumber) { - CFX_ByteString nextword2 = GetNextWord(nullptr); - if (nextword2 == "R") { - FX_DWORD objnum = FXSYS_atoui(word); - return new CPDF_Reference(pObjList, objnum); - } - } - m_Pos = SavedPos; - return new CPDF_Number(word); - } - - if (word == "true" || word == "false") - return new CPDF_Boolean(word == "true"); - - if (word == "null") - return new CPDF_Null; - - if (word == "(") { - CFX_ByteString str = ReadString(); - if (m_pCryptoHandler && bDecrypt) - m_pCryptoHandler->Decrypt(objnum, gennum, str); - return new CPDF_String(str, FALSE); - } - - if (word == "<") { - CFX_ByteString str = ReadHexString(); - if (m_pCryptoHandler && bDecrypt) - m_pCryptoHandler->Decrypt(objnum, gennum, str); - - return new CPDF_String(str, TRUE); - } - - if (word == "[") { - CPDF_Array* pArray = new CPDF_Array; - while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true)) - pArray->Add(pObj); - - return pArray; - } - - if (word[0] == '/') { - return new CPDF_Name( - PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); - } - - if (word == "<<") { - int32_t nKeys = 0; - FX_FILESIZE dwSignValuePos = 0; - - std::unique_ptr> pDict( - new CPDF_Dictionary); - while (1) { - CFX_ByteString key = GetNextWord(nullptr); - if (key.IsEmpty()) - return nullptr; - - FX_FILESIZE SavedPos = m_Pos - key.GetLength(); - if (key == ">>") - break; - - if (key == "endobj") { - m_Pos = SavedPos; - break; - } - - if (key[0] != '/') - continue; - - ++nKeys; - key = PDF_NameDecode(key); - if (key.IsEmpty()) - continue; - - if (key == "/Contents") - dwSignValuePos = m_Pos; - - CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true); - if (!pObj) - continue; - - CFX_ByteStringC keyNoSlash(key.c_str() + 1, key.GetLength() - 1); - pDict->SetAt(keyNoSlash, pObj); - } - - // Only when this is a signature dictionary and has contents, we reset the - // contents to the un-decrypted form. - if (pDict->IsSignatureDict() && dwSignValuePos) { - CFX_AutoRestorer save_pos(&m_Pos); - m_Pos = dwSignValuePos; - pDict->SetAt("Contents", GetObject(pObjList, objnum, gennum, false)); - } - - FX_FILESIZE SavedPos = m_Pos; - CFX_ByteString nextword = GetNextWord(nullptr); - if (nextword != "stream") { - m_Pos = SavedPos; - return pDict.release(); - } - return ReadStream(pDict.release(), objnum, gennum); - } - - if (word == ">>") - m_Pos = SavedPos; - - return nullptr; -} - -CPDF_Object* CPDF_SyntaxParser::GetObjectByStrict( - CPDF_IndirectObjectHolder* pObjList, - FX_DWORD objnum, - FX_DWORD gennum) { - CFX_AutoRestorer restorer(&s_CurrentRecursionDepth); - if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth) - return nullptr; - - FX_FILESIZE SavedPos = m_Pos; - bool bIsNumber; - CFX_ByteString word = GetNextWord(&bIsNumber); - if (word.GetLength() == 0) - return nullptr; - - if (bIsNumber) { - FX_FILESIZE SavedPos = m_Pos; - CFX_ByteString nextword = GetNextWord(&bIsNumber); - if (bIsNumber) { - CFX_ByteString nextword2 = GetNextWord(nullptr); - if (nextword2 == "R") - return new CPDF_Reference(pObjList, FXSYS_atoui(word)); - } - m_Pos = SavedPos; - return new CPDF_Number(word); - } - - if (word == "true" || word == "false") - return new CPDF_Boolean(word == "true"); - - if (word == "null") - return new CPDF_Null; - - if (word == "(") { - CFX_ByteString str = ReadString(); - if (m_pCryptoHandler) - m_pCryptoHandler->Decrypt(objnum, gennum, str); - return new CPDF_String(str, FALSE); - } - - if (word == "<") { - CFX_ByteString str = ReadHexString(); - if (m_pCryptoHandler) - m_pCryptoHandler->Decrypt(objnum, gennum, str); - return new CPDF_String(str, TRUE); - } - - if (word == "[") { - std::unique_ptr> pArray( - new CPDF_Array); - while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true)) - pArray->Add(pObj); - - return m_WordBuffer[0] == ']' ? pArray.release() : nullptr; - } - - if (word[0] == '/') { - return new CPDF_Name( - PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1))); - } - - if (word == "<<") { - std::unique_ptr> pDict( - new CPDF_Dictionary); - while (1) { - FX_FILESIZE SavedPos = m_Pos; - CFX_ByteString key = GetNextWord(nullptr); - if (key.IsEmpty()) - return nullptr; - - if (key == ">>") - break; - - if (key == "endobj") { - m_Pos = SavedPos; - break; - } - - if (key[0] != '/') - continue; - - key = PDF_NameDecode(key); - std::unique_ptr> obj( - GetObject(pObjList, objnum, gennum, true)); - if (!obj) { - uint8_t ch; - while (GetNextChar(ch) && ch != 0x0A && ch != 0x0D) { - continue; - } - return nullptr; - } - - if (key.GetLength() > 1) { - pDict->SetAt(CFX_ByteStringC(key.c_str() + 1, key.GetLength() - 1), - obj.release()); - } - } - - FX_FILESIZE SavedPos = m_Pos; - CFX_ByteString nextword = GetNextWord(nullptr); - if (nextword != "stream") { - m_Pos = SavedPos; - return pDict.release(); - } - - return ReadStream(pDict.release(), objnum, gennum); - } - - if (word == ">>") - m_Pos = SavedPos; - - return nullptr; -} - -unsigned int CPDF_SyntaxParser::ReadEOLMarkers(FX_FILESIZE pos) { - unsigned char byte1 = 0; - unsigned char byte2 = 0; - - GetCharAt(pos, byte1); - GetCharAt(pos + 1, byte2); - - if (byte1 == '\r' && byte2 == '\n') - return 2; - - if (byte1 == '\r' || byte1 == '\n') - return 1; - - return 0; -} - -CPDF_Stream* CPDF_SyntaxParser::ReadStream(CPDF_Dictionary* pDict, - FX_DWORD objnum, - FX_DWORD gennum) { - CPDF_Object* pLenObj = pDict->GetElement("Length"); - FX_FILESIZE len = -1; - CPDF_Reference* pLenObjRef = ToReference(pLenObj); - - bool differingObjNum = !pLenObjRef || (pLenObjRef->GetObjList() && - pLenObjRef->GetRefObjNum() != objnum); - if (pLenObj && differingObjNum) - len = pLenObj->GetInteger(); - - // Locate the start of stream. - ToNextLine(); - FX_FILESIZE streamStartPos = m_Pos; - - const CFX_ByteStringC kEndStreamStr("endstream"); - const CFX_ByteStringC kEndObjStr("endobj"); - - IPDF_CryptoHandler* pCryptoHandler = - objnum == (FX_DWORD)m_MetadataObjnum ? nullptr : m_pCryptoHandler.get(); - if (!pCryptoHandler) { - FX_BOOL bSearchForKeyword = TRUE; - if (len >= 0) { - pdfium::base::CheckedNumeric pos = m_Pos; - pos += len; - if (pos.IsValid() && pos.ValueOrDie() < m_FileLen) - m_Pos = pos.ValueOrDie(); - - m_Pos += ReadEOLMarkers(m_Pos); - FXSYS_memset(m_WordBuffer, 0, kEndStreamStr.GetLength() + 1); - GetNextWordInternal(nullptr); - // Earlier version of PDF specification doesn't require EOL marker before - // 'endstream' keyword. If keyword 'endstream' follows the bytes in - // specified length, it signals the end of stream. - if (FXSYS_memcmp(m_WordBuffer, kEndStreamStr.GetPtr(), - kEndStreamStr.GetLength()) == 0) { - bSearchForKeyword = FALSE; - } - } - - if (bSearchForKeyword) { - // If len is not available, len needs to be calculated - // by searching the keywords "endstream" or "endobj". - m_Pos = streamStartPos; - FX_FILESIZE endStreamOffset = 0; - while (endStreamOffset >= 0) { - endStreamOffset = FindTag(kEndStreamStr, 0); - - // Can't find "endstream". - if (endStreamOffset < 0) - break; - - // Stop searching when "endstream" is found. - if (IsWholeWord(m_Pos - kEndStreamStr.GetLength(), m_FileLen, - kEndStreamStr, TRUE)) { - endStreamOffset = m_Pos - streamStartPos - kEndStreamStr.GetLength(); - break; - } - } - - m_Pos = streamStartPos; - FX_FILESIZE endObjOffset = 0; - while (endObjOffset >= 0) { - endObjOffset = FindTag(kEndObjStr, 0); - - // Can't find "endobj". - if (endObjOffset < 0) - break; - - // Stop searching when "endobj" is found. - if (IsWholeWord(m_Pos - kEndObjStr.GetLength(), m_FileLen, kEndObjStr, - TRUE)) { - endObjOffset = m_Pos - streamStartPos - kEndObjStr.GetLength(); - break; - } - } - - // Can't find "endstream" or "endobj". - if (endStreamOffset < 0 && endObjOffset < 0) { - pDict->Release(); - return nullptr; - } - - if (endStreamOffset < 0 && endObjOffset >= 0) { - // Correct the position of end stream. - endStreamOffset = endObjOffset; - } else if (endStreamOffset >= 0 && endObjOffset < 0) { - // Correct the position of end obj. - endObjOffset = endStreamOffset; - } else if (endStreamOffset > endObjOffset) { - endStreamOffset = endObjOffset; - } - - len = endStreamOffset; - int numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 2); - if (numMarkers == 2) { - len -= 2; - } else { - numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 1); - if (numMarkers == 1) { - len -= 1; - } - } - - if (len < 0) { - pDict->Release(); - return nullptr; - } - pDict->SetAtInteger("Length", len); - } - m_Pos = streamStartPos; - } - - if (len < 0) { - pDict->Release(); - return nullptr; - } - - uint8_t* pData = nullptr; - if (len > 0) { - pData = FX_Alloc(uint8_t, len); - ReadBlock(pData, len); - if (pCryptoHandler) { - CFX_BinaryBuf dest_buf; - dest_buf.EstimateSize(pCryptoHandler->DecryptGetSize(len)); - - void* context = pCryptoHandler->DecryptStart(objnum, gennum); - pCryptoHandler->DecryptStream(context, pData, len, dest_buf); - pCryptoHandler->DecryptFinish(context, dest_buf); - - FX_Free(pData); - pData = dest_buf.GetBuffer(); - len = dest_buf.GetSize(); - dest_buf.DetachBuffer(); - } - } - - CPDF_Stream* pStream = new CPDF_Stream(pData, len, pDict); - streamStartPos = m_Pos; - FXSYS_memset(m_WordBuffer, 0, kEndObjStr.GetLength() + 1); - - GetNextWordInternal(nullptr); - - int numMarkers = ReadEOLMarkers(m_Pos); - if (m_WordSize == static_cast(kEndObjStr.GetLength()) && - numMarkers != 0 && - FXSYS_memcmp(m_WordBuffer, kEndObjStr.GetPtr(), kEndObjStr.GetLength()) == - 0) { - m_Pos = streamStartPos; - } - return pStream; -} - -void CPDF_SyntaxParser::InitParser(IFX_FileRead* pFileAccess, - FX_DWORD HeaderOffset) { - FX_Free(m_pFileBuf); - - m_pFileBuf = FX_Alloc(uint8_t, m_BufSize); - m_HeaderOffset = HeaderOffset; - m_FileLen = pFileAccess->GetSize(); - m_Pos = 0; - m_pFileAccess = pFileAccess; - m_BufOffset = 0; - pFileAccess->ReadBlock( - m_pFileBuf, 0, - (size_t)((FX_FILESIZE)m_BufSize > m_FileLen ? m_FileLen : m_BufSize)); -} - -uint32_t CPDF_SyntaxParser::GetDirectNum() { - bool bIsNumber; - GetNextWordInternal(&bIsNumber); - if (!bIsNumber) - return 0; - - m_WordBuffer[m_WordSize] = 0; - return FXSYS_atoui(reinterpret_cast(m_WordBuffer)); -} - -bool CPDF_SyntaxParser::IsWholeWord(FX_FILESIZE startpos, - FX_FILESIZE limit, - const CFX_ByteStringC& tag, - FX_BOOL checkKeyword) { - const FX_DWORD taglen = tag.GetLength(); - - bool bCheckLeft = !PDFCharIsDelimiter(tag[0]) && !PDFCharIsWhitespace(tag[0]); - bool bCheckRight = !PDFCharIsDelimiter(tag[taglen - 1]) && - !PDFCharIsWhitespace(tag[taglen - 1]); - - uint8_t ch; - if (bCheckRight && startpos + (int32_t)taglen <= limit && - GetCharAt(startpos + (int32_t)taglen, ch)) { - if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) || - (checkKeyword && PDFCharIsDelimiter(ch))) { - return false; - } - } - - if (bCheckLeft && startpos > 0 && GetCharAt(startpos - 1, ch)) { - if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) || - (checkKeyword && PDFCharIsDelimiter(ch))) { - return false; - } - } - return true; -} - -// TODO(dsinclair): Split into a SearchWordForward and SearchWordBackwards -// and drop the bool. -FX_BOOL CPDF_SyntaxParser::SearchWord(const CFX_ByteStringC& tag, - FX_BOOL bWholeWord, - FX_BOOL bForward, - FX_FILESIZE limit) { - int32_t taglen = tag.GetLength(); - if (taglen == 0) - return FALSE; - - FX_FILESIZE pos = m_Pos; - int32_t offset = 0; - if (!bForward) - offset = taglen - 1; - - const uint8_t* tag_data = tag.GetPtr(); - uint8_t byte; - while (1) { - if (bForward) { - if (limit && pos >= m_Pos + limit) - return FALSE; - - if (!GetCharAt(pos, byte)) - return FALSE; - - } else { - if (limit && pos <= m_Pos - limit) - return FALSE; - - if (!GetCharAtBackward(pos, byte)) - return FALSE; - } - - if (byte == tag_data[offset]) { - if (bForward) { - offset++; - if (offset < taglen) { - pos++; - continue; - } - } else { - offset--; - if (offset >= 0) { - pos--; - continue; - } - } - - FX_FILESIZE startpos = bForward ? pos - taglen + 1 : pos; - if (!bWholeWord || IsWholeWord(startpos, limit, tag, FALSE)) { - m_Pos = startpos; - return TRUE; - } - } - - if (bForward) { - offset = byte == tag_data[0] ? 1 : 0; - pos++; - } else { - offset = byte == tag_data[taglen - 1] ? taglen - 2 : taglen - 1; - pos--; - } - - if (pos < 0) - return FALSE; - } - - return FALSE; -} - -int32_t CPDF_SyntaxParser::SearchMultiWord(const CFX_ByteStringC& tags, - FX_BOOL bWholeWord, - FX_FILESIZE limit) { - int32_t ntags = 1; - for (int i = 0; i < tags.GetLength(); ++i) { - if (tags[i] == 0) - ++ntags; - } - - std::vector patterns(ntags); - FX_DWORD start = 0; - FX_DWORD itag = 0; - FX_DWORD max_len = 0; - for (int i = 0; i <= tags.GetLength(); ++i) { - if (tags[i] == 0) { - FX_DWORD len = i - start; - max_len = std::max(len, max_len); - patterns[itag].m_pTag = tags.GetCStr() + start; - patterns[itag].m_Len = len; - patterns[itag].m_Offset = 0; - start = i + 1; - ++itag; - } - } - - const FX_FILESIZE pos_limit = m_Pos + limit; - for (FX_FILESIZE pos = m_Pos; !limit || pos < pos_limit; ++pos) { - uint8_t byte; - if (!GetCharAt(pos, byte)) - break; - - for (int i = 0; i < ntags; ++i) { - SearchTagRecord& pat = patterns[i]; - if (pat.m_pTag[pat.m_Offset] != byte) { - pat.m_Offset = (pat.m_pTag[0] == byte) ? 1 : 0; - continue; - } - - ++pat.m_Offset; - if (pat.m_Offset != pat.m_Len) - continue; - - if (!bWholeWord || - IsWholeWord(pos - pat.m_Len, limit, - CFX_ByteStringC(pat.m_pTag, pat.m_Len), FALSE)) { - return i; - } - - pat.m_Offset = (pat.m_pTag[0] == byte) ? 1 : 0; - } - } - return -1; -} - -FX_FILESIZE CPDF_SyntaxParser::FindTag(const CFX_ByteStringC& tag, - FX_FILESIZE limit) { - int32_t taglen = tag.GetLength(); - int32_t match = 0; - limit += m_Pos; - FX_FILESIZE startpos = m_Pos; - - while (1) { - uint8_t ch; - if (!GetNextChar(ch)) - return -1; - - if (ch == tag[match]) { - match++; - if (match == taglen) - return m_Pos - startpos - taglen; - } else { - match = ch == tag[0] ? 1 : 0; - } - - if (limit && m_Pos == limit) - return -1; - } - return -1; -} - -void CPDF_SyntaxParser::SetEncrypt( - std::unique_ptr pCryptoHandler) { - m_pCryptoHandler = std::move(pCryptoHandler); -} diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h b/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h deleted file mode 100644 index f8794bcb7f..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_ -#define CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_ - -#include - -#include "core/include/fxcrt/fx_basic.h" - -class CPDF_Dictionary; -class CPDF_IndirectObjectHolder; -class CPDF_Object; -class CPDF_Stream; -class IFX_FileRead; -class IPDF_CryptoHandler; - -class CPDF_SyntaxParser { - public: - CPDF_SyntaxParser(); - ~CPDF_SyntaxParser(); - - void InitParser(IFX_FileRead* pFileAccess, FX_DWORD HeaderOffset); - - FX_FILESIZE SavePos() const { return m_Pos; } - void RestorePos(FX_FILESIZE pos) { m_Pos = pos; } - - CPDF_Object* GetObject(CPDF_IndirectObjectHolder* pObjList, - FX_DWORD objnum, - FX_DWORD gennum, - FX_BOOL bDecrypt); - CPDF_Object* GetObjectByStrict(CPDF_IndirectObjectHolder* pObjList, - FX_DWORD objnum, - FX_DWORD gennum); - CFX_ByteString GetKeyword(); - - void ToNextLine(); - void ToNextWord(); - - FX_BOOL SearchWord(const CFX_ByteStringC& word, - FX_BOOL bWholeWord, - FX_BOOL bForward, - FX_FILESIZE limit); - int SearchMultiWord(const CFX_ByteStringC& words, - FX_BOOL bWholeWord, - FX_FILESIZE limit); - FX_FILESIZE FindTag(const CFX_ByteStringC& tag, FX_FILESIZE limit); - - void SetEncrypt(std::unique_ptr pCryptoHandler); - - FX_BOOL ReadBlock(uint8_t* pBuf, FX_DWORD size); - FX_BOOL GetCharAt(FX_FILESIZE pos, uint8_t& ch); - CFX_ByteString GetNextWord(bool* bIsNumber); - - private: - friend class CPDF_Parser; - friend class CPDF_DataAvail; - friend class cpdf_syntax_parser_ReadHexString_Test; - - static const int kParserMaxRecursionDepth = 64; - static int s_CurrentRecursionDepth; - - uint32_t GetDirectNum(); - - FX_BOOL GetNextChar(uint8_t& ch); - FX_BOOL GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch); - void GetNextWordInternal(bool* bIsNumber); - bool IsWholeWord(FX_FILESIZE startpos, - FX_FILESIZE limit, - const CFX_ByteStringC& tag, - FX_BOOL checkKeyword); - - CFX_ByteString ReadString(); - CFX_ByteString ReadHexString(); - unsigned int ReadEOLMarkers(FX_FILESIZE pos); - CPDF_Stream* ReadStream(CPDF_Dictionary* pDict, - FX_DWORD objnum, - FX_DWORD gennum); - - FX_FILESIZE m_Pos; - int m_MetadataObjnum; - IFX_FileRead* m_pFileAccess; - FX_DWORD m_HeaderOffset; - FX_FILESIZE m_FileLen; - uint8_t* m_pFileBuf; - FX_DWORD m_BufSize; - FX_FILESIZE m_BufOffset; - std::unique_ptr m_pCryptoHandler; - uint8_t m_WordBuffer[257]; - FX_DWORD m_WordSize; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_ diff --git a/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp b/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp deleted file mode 100644 index b03b1af450..0000000000 --- a/core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include -#include - -#include "core/include/fpdfapi/cpdf_parser.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_stream.h" -#include "core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/utils/path_service.h" - -TEST(cpdf_syntax_parser, ReadHexString) { - { - // Empty string. - uint8_t data[] = ""; - ScopedFileStream stream(FX_CreateMemoryStream(data, 0, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("", parser.ReadHexString()); - EXPECT_EQ(0, parser.SavePos()); - } - - { - // Blank string. - uint8_t data[] = " "; - ScopedFileStream stream(FX_CreateMemoryStream(data, 2, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("", parser.ReadHexString()); - EXPECT_EQ(2, parser.SavePos()); - } - - { - // Skips unknown characters. - uint8_t data[] = "z12b"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\x12\xb0", parser.ReadHexString()); - EXPECT_EQ(4, parser.SavePos()); - } - - { - // Skips unknown characters. - uint8_t data[] = "*<&*#$^&@1"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 10, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\x10", parser.ReadHexString()); - EXPECT_EQ(10, parser.SavePos()); - } - - { - // Skips unknown characters. - uint8_t data[] = "\x80zab"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\xab", parser.ReadHexString()); - EXPECT_EQ(4, parser.SavePos()); - } - - { - // Skips unknown characters. - uint8_t data[] = "\xffzab"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\xab", parser.ReadHexString()); - EXPECT_EQ(4, parser.SavePos()); - } - - { - // Regular conversion. - uint8_t data[] = "1A2b>abcd"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 9, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); - EXPECT_EQ(5, parser.SavePos()); - } - - { - // Position out of bounds. - uint8_t data[] = "12ab>"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 5, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - parser.RestorePos(5); - EXPECT_EQ("", parser.ReadHexString()); - - parser.RestorePos(6); - EXPECT_EQ("", parser.ReadHexString()); - - parser.RestorePos(-1); - EXPECT_EQ("", parser.ReadHexString()); - - parser.RestorePos(std::numeric_limits::max()); - EXPECT_EQ("", parser.ReadHexString()); - - // Check string still parses when set to 0. - parser.RestorePos(0); - EXPECT_EQ("\x12\xab", parser.ReadHexString()); - } - - { - // Missing ending >. - uint8_t data[] = "1A2b"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\x1a\x2b", parser.ReadHexString()); - EXPECT_EQ(4, parser.SavePos()); - } - - { - // Missing ending >. - uint8_t data[] = "12abz"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 5, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\x12\xab", parser.ReadHexString()); - EXPECT_EQ(5, parser.SavePos()); - } - - { - // Uneven number of bytes. - uint8_t data[] = "1A2>asdf"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 8, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\x1a\x20", parser.ReadHexString()); - EXPECT_EQ(4, parser.SavePos()); - } - - { - // Uneven number of bytes. - uint8_t data[] = "1A2zasdf"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 8, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("\x1a\x2a\xdf", parser.ReadHexString()); - EXPECT_EQ(8, parser.SavePos()); - } - - { - // Just ending character. - uint8_t data[] = ">"; - ScopedFileStream stream(FX_CreateMemoryStream(data, 1, FALSE)); - - CPDF_SyntaxParser parser; - parser.InitParser(stream.get(), 0); - EXPECT_EQ("", parser.ReadHexString()); - EXPECT_EQ(1, parser.SavePos()); - } -} diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp deleted file mode 100644 index e6de7cb7ff..0000000000 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp +++ /dev/null @@ -1,592 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/fpdf_parser_decode.h" - -#include -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" -#include "third_party/base/stl_util.h" - -#define _STREAM_MAX_SIZE_ 20 * 1024 * 1024 - -const FX_WORD PDFDocEncoding[256] = { - 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, - 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, - 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x02d8, 0x02c7, 0x02c6, - 0x02d9, 0x02dd, 0x02db, 0x02da, 0x02dc, 0x0020, 0x0021, 0x0022, 0x0023, - 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, - 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, - 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, - 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, - 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, - 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, - 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, - 0x007e, 0x0000, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x0192, - 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, - 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x0141, 0x0152, 0x0160, 0x0178, - 0x017d, 0x0131, 0x0142, 0x0153, 0x0161, 0x017e, 0x0000, 0x20ac, 0x00a1, - 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, - 0x00ab, 0x00ac, 0x0000, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, - 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, - 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, - 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, - 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, - 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, - 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, - 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, - 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, - 0x00fc, 0x00fd, 0x00fe, 0x00ff}; - -FX_DWORD A85Decode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - dest_size = 0; - dest_buf = nullptr; - if (src_size == 0) - return 0; - - // Count legal characters and zeros. - FX_DWORD zcount = 0; - FX_DWORD pos = 0; - while (pos < src_size) { - uint8_t ch = src_buf[pos]; - if (ch == 'z') { - zcount++; - } else if ((ch < '!' || ch > 'u') && !PDFCharIsLineEnding(ch) && - ch != ' ' && ch != '\t') { - break; - } - pos++; - } - // No content to decode. - if (pos == 0) - return 0; - - // Count the space needed to contain non-zero characters. The encoding ratio - // of Ascii85 is 4:5. - FX_DWORD space_for_non_zeroes = (pos - zcount) / 5 * 4 + 4; - if (zcount > (UINT_MAX - space_for_non_zeroes) / 4) { - return (FX_DWORD)-1; - } - dest_buf = FX_Alloc(uint8_t, zcount * 4 + space_for_non_zeroes); - size_t state = 0; - uint32_t res = 0; - pos = dest_size = 0; - while (pos < src_size) { - uint8_t ch = src_buf[pos++]; - if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t') - continue; - - if (ch == 'z') { - FXSYS_memset(dest_buf + dest_size, 0, 4); - state = 0; - res = 0; - dest_size += 4; - } else if (ch >= '!' && ch <= 'u') { - res = res * 85 + ch - 33; - state++; - if (state == 5) { - for (size_t i = 0; i < 4; i++) { - dest_buf[dest_size++] = (uint8_t)(res >> (3 - i) * 8); - } - state = 0; - res = 0; - } - } else { - // The end or illegal character. - break; - } - } - // Handle partial group. - if (state) { - for (size_t i = state; i < 5; i++) - res = res * 85 + 84; - for (size_t i = 0; i < state - 1; i++) - dest_buf[dest_size++] = (uint8_t)(res >> (3 - i) * 8); - } - if (pos < src_size && src_buf[pos] == '>') - pos++; - return pos; -} - -FX_DWORD HexDecode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - dest_size = 0; - if (src_size == 0) { - dest_buf = nullptr; - return 0; - } - - FX_DWORD i = 0; - // Find the end of data. - while (i < src_size && src_buf[i] != '>') - i++; - - dest_buf = FX_Alloc(uint8_t, i / 2 + 1); - bool bFirst = true; - for (i = 0; i < src_size; i++) { - uint8_t ch = src_buf[i]; - if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t') - continue; - - if (ch == '>') { - ++i; - break; - } - if (!std::isxdigit(ch)) - continue; - - int digit = FXSYS_toHexDigit(ch); - if (bFirst) - dest_buf[dest_size] = digit * 16; - else - dest_buf[dest_size++] += digit; - - bFirst = !bFirst; - } - if (!bFirst) - dest_size++; - return i; -} - -FX_DWORD RunLengthDecode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - FX_DWORD i = 0; - FX_DWORD old; - dest_size = 0; - while (i < src_size) { - if (src_buf[i] < 128) { - old = dest_size; - dest_size += src_buf[i] + 1; - if (dest_size < old) { - return (FX_DWORD)-1; - } - i += src_buf[i] + 2; - } else if (src_buf[i] > 128) { - old = dest_size; - dest_size += 257 - src_buf[i]; - if (dest_size < old) { - return (FX_DWORD)-1; - } - i += 2; - } else { - break; - } - } - if (dest_size >= _STREAM_MAX_SIZE_) { - return -1; - } - dest_buf = FX_Alloc(uint8_t, dest_size); - i = 0; - int dest_count = 0; - while (i < src_size) { - if (src_buf[i] < 128) { - FX_DWORD copy_len = src_buf[i] + 1; - FX_DWORD buf_left = src_size - i - 1; - if (buf_left < copy_len) { - FX_DWORD delta = copy_len - buf_left; - copy_len = buf_left; - FXSYS_memset(dest_buf + dest_count + copy_len, '\0', delta); - } - FXSYS_memcpy(dest_buf + dest_count, src_buf + i + 1, copy_len); - dest_count += src_buf[i] + 1; - i += src_buf[i] + 2; - } else if (src_buf[i] > 128) { - int fill = 0; - if (i < src_size - 1) { - fill = src_buf[i + 1]; - } - FXSYS_memset(dest_buf + dest_count, fill, 257 - src_buf[i]); - dest_count += 257 - src_buf[i]; - i += 2; - } else { - break; - } - } - FX_DWORD ret = i + 1; - if (ret > src_size) { - ret = src_size; - } - return ret; -} - -ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - const CPDF_Dictionary* pParams) { - int K = 0; - FX_BOOL EndOfLine = FALSE; - FX_BOOL ByteAlign = FALSE; - FX_BOOL BlackIs1 = FALSE; - int Columns = 1728; - int Rows = 0; - if (pParams) { - K = pParams->GetIntegerBy("K"); - EndOfLine = pParams->GetIntegerBy("EndOfLine"); - ByteAlign = pParams->GetIntegerBy("EncodedByteAlign"); - BlackIs1 = pParams->GetIntegerBy("BlackIs1"); - Columns = pParams->GetIntegerBy("Columns", 1728); - Rows = pParams->GetIntegerBy("Rows"); - if (Rows > USHRT_MAX) { - Rows = 0; - } - if (Columns <= 0 || Rows < 0 || Columns > USHRT_MAX || Rows > USHRT_MAX) { - return nullptr; - } - } - return CPDF_ModuleMgr::Get()->GetFaxModule()->CreateDecoder( - src_buf, src_size, width, height, K, EndOfLine, ByteAlign, BlackIs1, - Columns, Rows); -} - -static FX_BOOL CheckFlateDecodeParams(int Colors, - int BitsPerComponent, - int Columns) { - if (Columns < 0) { - return FALSE; - } - int check = Columns; - if (Colors < 0 || (check > 0 && Colors > INT_MAX / check)) { - return FALSE; - } - check *= Colors; - if (BitsPerComponent < 0 || - (check > 0 && BitsPerComponent > INT_MAX / check)) { - return FALSE; - } - check *= BitsPerComponent; - if (check > INT_MAX - 7) { - return FALSE; - } - return TRUE; -} - -ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc, - const CPDF_Dictionary* pParams) { - int predictor = 0; - int Colors = 0, BitsPerComponent = 0, Columns = 0; - if (pParams) { - predictor = pParams->GetIntegerBy("Predictor"); - Colors = pParams->GetIntegerBy("Colors", 1); - BitsPerComponent = pParams->GetIntegerBy("BitsPerComponent", 8); - Columns = pParams->GetIntegerBy("Columns", 1); - if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) { - return nullptr; - } - } - return CPDF_ModuleMgr::Get()->GetFlateModule()->CreateDecoder( - src_buf, src_size, width, height, nComps, bpc, predictor, Colors, - BitsPerComponent, Columns); -} - -FX_DWORD FPDFAPI_FlateOrLZWDecode(FX_BOOL bLZW, - const uint8_t* src_buf, - FX_DWORD src_size, - CPDF_Dictionary* pParams, - FX_DWORD estimated_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - int predictor = 0; - FX_BOOL bEarlyChange = TRUE; - int Colors = 0, BitsPerComponent = 0, Columns = 0; - if (pParams) { - predictor = pParams->GetIntegerBy("Predictor"); - bEarlyChange = pParams->GetIntegerBy("EarlyChange", 1); - Colors = pParams->GetIntegerBy("Colors", 1); - BitsPerComponent = pParams->GetIntegerBy("BitsPerComponent", 8); - Columns = pParams->GetIntegerBy("Columns", 1); - if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) { - return (FX_DWORD)-1; - } - } - return CPDF_ModuleMgr::Get()->GetFlateModule()->FlateOrLZWDecode( - bLZW, src_buf, src_size, bEarlyChange, predictor, Colors, - BitsPerComponent, Columns, estimated_size, dest_buf, dest_size); -} - -FX_BOOL PDF_DataDecode(const uint8_t* src_buf, - FX_DWORD src_size, - const CPDF_Dictionary* pDict, - uint8_t*& dest_buf, - FX_DWORD& dest_size, - CFX_ByteString& ImageEncoding, - CPDF_Dictionary*& pImageParms, - FX_DWORD last_estimated_size, - FX_BOOL bImageAcc) { - CPDF_Object* pDecoder = pDict ? pDict->GetElementValue("Filter") : nullptr; - if (!pDecoder || (!pDecoder->IsArray() && !pDecoder->IsName())) - return FALSE; - - CPDF_Object* pParams = - pDict ? pDict->GetElementValue("DecodeParms") : nullptr; - std::vector DecoderList; - CFX_ArrayTemplate ParamList; - if (CPDF_Array* pDecoders = pDecoder->AsArray()) { - CPDF_Array* pParamsArray = ToArray(pParams); - if (!pParamsArray) - pParams = nullptr; - - for (FX_DWORD i = 0; i < pDecoders->GetCount(); i++) { - DecoderList.push_back(pDecoders->GetConstStringAt(i)); - ParamList.Add(pParams ? pParamsArray->GetDictAt(i) : nullptr); - } - } else { - DecoderList.push_back(pDecoder->GetConstString()); - ParamList.Add(pParams ? pParams->GetDict() : nullptr); - } - uint8_t* last_buf = (uint8_t*)src_buf; - FX_DWORD last_size = src_size; - int nSize = pdfium::CollectionSize(DecoderList); - for (int i = 0; i < nSize; i++) { - int estimated_size = i == nSize - 1 ? last_estimated_size : 0; - CFX_ByteString decoder = DecoderList[i]; - // Use ToDictionary here because we can push nullptr into the ParamList. - CPDF_Dictionary* pParam = ToDictionary(ParamList[i]); - uint8_t* new_buf = nullptr; - FX_DWORD new_size = (FX_DWORD)-1; - int offset = -1; - if (decoder == "FlateDecode" || decoder == "Fl") { - if (bImageAcc && i == nSize - 1) { - ImageEncoding = "FlateDecode"; - dest_buf = (uint8_t*)last_buf; - dest_size = last_size; - pImageParms = pParam; - return TRUE; - } - offset = FPDFAPI_FlateOrLZWDecode(FALSE, last_buf, last_size, pParam, - estimated_size, new_buf, new_size); - } else if (decoder == "LZWDecode" || decoder == "LZW") { - offset = FPDFAPI_FlateOrLZWDecode(TRUE, last_buf, last_size, pParam, - estimated_size, new_buf, new_size); - } else if (decoder == "ASCII85Decode" || decoder == "A85") { - offset = A85Decode(last_buf, last_size, new_buf, new_size); - } else if (decoder == "ASCIIHexDecode" || decoder == "AHx") { - offset = HexDecode(last_buf, last_size, new_buf, new_size); - } else if (decoder == "RunLengthDecode" || decoder == "RL") { - if (bImageAcc && i == nSize - 1) { - ImageEncoding = "RunLengthDecode"; - dest_buf = (uint8_t*)last_buf; - dest_size = last_size; - pImageParms = pParam; - return TRUE; - } - offset = RunLengthDecode(last_buf, last_size, new_buf, new_size); - } else if (decoder == "Crypt") { - continue; - } else { - // If we get here, assume it's an image decoder. - if (decoder == "DCT") { - decoder = "DCTDecode"; - } else if (decoder == "CCF") { - decoder = "CCITTFaxDecode"; - } - ImageEncoding = decoder; - pImageParms = pParam; - dest_buf = (uint8_t*)last_buf; - dest_size = last_size; - if (CPDF_Array* pDecoders = pDecoder->AsArray()) - pDecoders->RemoveAt(i + 1, pDecoders->GetCount() - i - 1); - return TRUE; - } - if (last_buf != src_buf) { - FX_Free(last_buf); - } - if (offset == -1) { - FX_Free(new_buf); - return FALSE; - } - last_buf = new_buf; - last_size = new_size; - } - ImageEncoding = ""; - pImageParms = nullptr; - dest_buf = last_buf; - dest_size = last_size; - return TRUE; -} - -CFX_WideString PDF_DecodeText(const uint8_t* src_data, FX_DWORD src_len) { - CFX_WideString result; - if (src_len >= 2 && ((src_data[0] == 0xfe && src_data[1] == 0xff) || - (src_data[0] == 0xff && src_data[1] == 0xfe))) { - bool bBE = src_data[0] == 0xfe; - FX_DWORD max_chars = (src_len - 2) / 2; - if (!max_chars) { - return result; - } - if (src_data[0] == 0xff) { - bBE = !src_data[2]; - } - FX_WCHAR* dest_buf = result.GetBuffer(max_chars); - const uint8_t* uni_str = src_data + 2; - int dest_pos = 0; - for (FX_DWORD i = 0; i < max_chars * 2; i += 2) { - FX_WORD unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) - : (uni_str[i + 1] << 8 | uni_str[i]); - if (unicode == 0x1b) { - i += 2; - while (i < max_chars * 2) { - FX_WORD unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1]) - : (uni_str[i + 1] << 8 | uni_str[i]); - i += 2; - if (unicode == 0x1b) { - break; - } - } - } else { - dest_buf[dest_pos++] = unicode; - } - } - result.ReleaseBuffer(dest_pos); - } else { - FX_WCHAR* dest_buf = result.GetBuffer(src_len); - for (FX_DWORD i = 0; i < src_len; i++) - dest_buf[i] = PDFDocEncoding[src_data[i]]; - result.ReleaseBuffer(src_len); - } - return result; -} - -CFX_WideString PDF_DecodeText(const CFX_ByteString& bstr) { - return PDF_DecodeText((const uint8_t*)bstr.c_str(), bstr.GetLength()); -} - -CFX_ByteString PDF_EncodeText(const FX_WCHAR* pString, int len) { - if (len == -1) { - len = FXSYS_wcslen(pString); - } - CFX_ByteString result; - FX_CHAR* dest_buf1 = result.GetBuffer(len); - int i; - for (i = 0; i < len; i++) { - int code; - for (code = 0; code < 256; code++) - if (PDFDocEncoding[code] == pString[i]) { - break; - } - if (code == 256) { - break; - } - dest_buf1[i] = code; - } - result.ReleaseBuffer(i); - if (i == len) { - return result; - } - - if (len > INT_MAX / 2 - 1) { - result.ReleaseBuffer(0); - return result; - } - - int encLen = len * 2 + 2; - - uint8_t* dest_buf2 = (uint8_t*)result.GetBuffer(encLen); - dest_buf2[0] = 0xfe; - dest_buf2[1] = 0xff; - dest_buf2 += 2; - for (int i = 0; i < len; i++) { - *dest_buf2++ = pString[i] >> 8; - *dest_buf2++ = (uint8_t)pString[i]; - } - result.ReleaseBuffer(encLen); - return result; -} - -CFX_ByteString PDF_EncodeText(const CFX_WideString& str) { - return PDF_EncodeText(str.c_str(), str.GetLength()); -} - -CFX_ByteString PDF_EncodeString(const CFX_ByteString& src, FX_BOOL bHex) { - CFX_ByteTextBuf result; - int srclen = src.GetLength(); - if (bHex) { - result.AppendChar('<'); - for (int i = 0; i < srclen; i++) { - result.AppendChar("0123456789ABCDEF"[src[i] / 16]); - result.AppendChar("0123456789ABCDEF"[src[i] % 16]); - } - result.AppendChar('>'); - return result.GetByteString(); - } - result.AppendChar('('); - for (int i = 0; i < srclen; i++) { - uint8_t ch = src[i]; - if (ch == ')' || ch == '\\' || ch == '(') { - result.AppendChar('\\'); - } else if (ch == 0x0a) { - result << "\\n"; - continue; - } else if (ch == 0x0d) { - result << "\\r"; - continue; - } - result.AppendChar(ch); - } - result.AppendChar(')'); - return result.GetByteString(); -} - -void FlateEncode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); - if (pEncoders) { - pEncoders->GetFlateModule()->Encode(src_buf, src_size, dest_buf, dest_size); - } -} - -void FlateEncode(const uint8_t* src_buf, - FX_DWORD src_size, - int predictor, - int Colors, - int BitsPerComponent, - int Columns, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); - if (pEncoders) { - pEncoders->GetFlateModule()->Encode(src_buf, src_size, predictor, Colors, - BitsPerComponent, Columns, dest_buf, - dest_size); - } -} - -FX_DWORD FlateDecode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule(); - if (pEncoders) { - return pEncoders->GetFlateModule()->FlateOrLZWDecode( - FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size); - } - return 0; -} diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp deleted file mode 100644 index 2412f4310c..0000000000 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fpdfapi/fpdf_parser_decode.h" - -#include -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "testing/embedder_test.h" -#include "testing/fx_string_testhelpers.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/test_support.h" - -class FPDFParserDecodeEmbeddertest : public EmbedderTest {}; - -// NOTE: python's zlib.compress() and zlib.decompress() may be useful for -// external validation of the FlateEncode/FlateDecode test cases. - -TEST_F(FPDFParserDecodeEmbeddertest, FlateEncode) { - pdfium::StrFuncTestData flate_encode_cases[] = { - STR_IN_OUT_CASE("", "\x78\x9c\x03\x00\x00\x00\x00\x01"), - STR_IN_OUT_CASE(" ", "\x78\x9c\x53\x00\x00\x00\x21\x00\x21"), - STR_IN_OUT_CASE("123", "\x78\x9c\x33\x34\x32\x06\x00\01\x2d\x00\x97"), - STR_IN_OUT_CASE("\x00\xff", "\x78\x9c\x63\xf8\x0f\x00\x01\x01\x01\x00"), - STR_IN_OUT_CASE( - "1 0 0 -1 29 763 cm\n0 0 555 735 re\nW n\nq\n0 0 555 734.394 re\n" - "W n\nq\n0.8009 0 0 0.8009 0 0 cm\n1 1 1 RG 1 1 1 rg\n/G0 gs\n" - "0 0 693 917 re\nf\nQ\nQ\n", - "\x78\x9c\x33\x54\x30\x00\x42\x5d\x43\x05\x23\x4b\x05\x73\x33\x63" - "\x85\xe4\x5c\x2e\x90\x80\xa9\xa9\xa9\x82\xb9\xb1\xa9\x42\x51\x2a" - "\x57\xb8\x42\x1e\x57\x21\x92\xa0\x89\x9e\xb1\xa5\x09\x92\x84\x9e" - "\x85\x81\x81\x25\xd8\x14\x24\x26\xd0\x18\x43\x05\x10\x0c\x72\x57" - "\x80\x30\x8a\xd2\xb9\xf4\xdd\x0d\x14\xd2\x8b\xc1\x46\x99\x59\x1a" - "\x2b\x58\x1a\x9a\x83\x8c\x49\xe3\x0a\x04\x42\x00\x37\x4c\x1b\x42"), - }; - - for (size_t i = 0; i < FX_ArraySize(flate_encode_cases); ++i) { - const pdfium::StrFuncTestData& data = flate_encode_cases[i]; - unsigned char* result; - unsigned int result_size; - FlateEncode(data.input, data.input_size, result, result_size); - ASSERT_TRUE(result); - EXPECT_EQ(std::string((const char*)data.expected, data.expected_size), - std::string((const char*)result, result_size)) - << " for case " << i; - FX_Free(result); - } -} - -TEST_F(FPDFParserDecodeEmbeddertest, FlateDecode) { - pdfium::DecodeTestData flate_decode_cases[] = { - STR_IN_OUT_CASE("", "", 0), - STR_IN_OUT_CASE("preposterous nonsense", "", 2), - STR_IN_OUT_CASE("\x78\x9c\x03\x00\x00\x00\x00\x01", "", 8), - STR_IN_OUT_CASE("\x78\x9c\x53\x00\x00\x00\x21\x00\x21", " ", 9), - STR_IN_OUT_CASE("\x78\x9c\x33\x34\x32\x06\x00\01\x2d\x00\x97", "123", 11), - STR_IN_OUT_CASE("\x78\x9c\x63\xf8\x0f\x00\x01\x01\x01\x00", "\x00\xff", - 10), - STR_IN_OUT_CASE( - "\x78\x9c\x33\x54\x30\x00\x42\x5d\x43\x05\x23\x4b\x05\x73\x33\x63" - "\x85\xe4\x5c\x2e\x90\x80\xa9\xa9\xa9\x82\xb9\xb1\xa9\x42\x51\x2a" - "\x57\xb8\x42\x1e\x57\x21\x92\xa0\x89\x9e\xb1\xa5\x09\x92\x84\x9e" - "\x85\x81\x81\x25\xd8\x14\x24\x26\xd0\x18\x43\x05\x10\x0c\x72\x57" - "\x80\x30\x8a\xd2\xb9\xf4\xdd\x0d\x14\xd2\x8b\xc1\x46\x99\x59\x1a" - "\x2b\x58\x1a\x9a\x83\x8c\x49\xe3\x0a\x04\x42\x00\x37\x4c\x1b\x42", - "1 0 0 -1 29 763 cm\n0 0 555 735 re\nW n\nq\n0 0 555 734.394 re\n" - "W n\nq\n0.8009 0 0 0.8009 0 0 cm\n1 1 1 RG 1 1 1 rg\n/G0 gs\n" - "0 0 693 917 re\nf\nQ\nQ\n", - 96), - }; - - for (size_t i = 0; i < FX_ArraySize(flate_decode_cases); ++i) { - const pdfium::DecodeTestData& data = flate_decode_cases[i]; - unsigned char* result; - unsigned int result_size; - EXPECT_EQ(data.processed_size, - FlateDecode(data.input, data.input_size, result, result_size)) - << " for case " << i; - ASSERT_TRUE(result); - EXPECT_EQ(std::string((const char*)data.expected, data.expected_size), - std::string((const char*)result, result_size)) - << " for case " << i; - FX_Free(result); - } -} - -TEST_F(FPDFParserDecodeEmbeddertest, Bug_552046) { - // Tests specifying multiple image filters for a stream. Should not cause a - // crash when rendered. - EXPECT_TRUE(OpenDocument("bug_552046.pdf")); - FPDF_PAGE page = LoadPage(0); - FPDF_BITMAP bitmap = RenderPage(page); - FPDFBitmap_Destroy(bitmap); - UnloadPage(page); -} - -TEST_F(FPDFParserDecodeEmbeddertest, Bug_555784) { - // Tests bad input to the run length decoder that caused a heap overflow. - // Should not cause a crash when rendered. - EXPECT_TRUE(OpenDocument("bug_555784.pdf")); - FPDF_PAGE page = LoadPage(0); - FPDF_BITMAP bitmap = RenderPage(page); - FPDFBitmap_Destroy(bitmap); - UnloadPage(page); -} - -TEST_F(FPDFParserDecodeEmbeddertest, Bug_455199) { - // Tests object numbers with a value > 01000000. - // Should open successfully. - EXPECT_TRUE(OpenDocument("bug_455199.pdf")); - FPDF_PAGE page = LoadPage(0); - FPDF_BITMAP bitmap = RenderPage(page); - FPDFBitmap_Destroy(bitmap); - UnloadPage(page); -} diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp deleted file mode 100644 index e00759da7a..0000000000 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fpdfapi/fpdf_parser_decode.h" - -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/test_support.h" - -TEST(fpdf_parser_decode, A85Decode) { - pdfium::DecodeTestData test_data[] = { - // Empty src string. - STR_IN_OUT_CASE("", "", 0), - // Empty content in src string. - STR_IN_OUT_CASE("~>", "", 0), - // Regular conversion. - STR_IN_OUT_CASE("FCfN8~>", "test", 7), - // End at the ending mark. - STR_IN_OUT_CASE("FCfN8~>FCfN8", "test", 7), - // Skip whitespaces. - STR_IN_OUT_CASE("\t F C\r\n \tf N 8 ~>", "test", 17), - // No ending mark. - STR_IN_OUT_CASE("@3B0)DJj_BF*)>@Gp#-s", "a funny story :)", 20), - // Non-multiple length. - STR_IN_OUT_CASE("12A", "2k", 3), - // Stop at unknown characters. - STR_IN_OUT_CASE("FCfN8FCfN8vw", "testtest", 11), - }; - for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { - pdfium::DecodeTestData* ptr = &test_data[i]; - uint8_t* result = nullptr; - FX_DWORD result_size; - EXPECT_EQ(ptr->processed_size, - A85Decode(ptr->input, ptr->input_size, result, result_size)) - << "for case " << i; - ASSERT_EQ(ptr->expected_size, result_size); - for (size_t j = 0; j < result_size; ++j) { - EXPECT_EQ(ptr->expected[j], result[j]) << "for case " << i << " char " - << j; - } - FX_Free(result); - } -} - -TEST(fpdf_parser_decode, HexDecode) { - pdfium::DecodeTestData test_data[] = { - // Empty src string. - STR_IN_OUT_CASE("", "", 0), - // Empty content in src string. - STR_IN_OUT_CASE(">", "", 1), - // Only whitespaces in src string. - STR_IN_OUT_CASE("\t \r\n>", "", 7), - // Regular conversion. - STR_IN_OUT_CASE("12Ac>zzz", "\x12\xac", 5), - // Skip whitespaces. - STR_IN_OUT_CASE("12 Ac\t02\r\nBF>zzz>", "\x12\xac\x02\xbf", 13), - // Non-multiple length. - STR_IN_OUT_CASE("12A>zzz", "\x12\xa0", 4), - // Skips unknown characters. - STR_IN_OUT_CASE("12tk \tAc>zzz", "\x12\xac", 10), - // No ending mark. - STR_IN_OUT_CASE("12AcED3c3456", "\x12\xac\xed\x3c\x34\x56", 12), - }; - for (size_t i = 0; i < FX_ArraySize(test_data); ++i) { - pdfium::DecodeTestData* ptr = &test_data[i]; - uint8_t* result = nullptr; - FX_DWORD result_size; - EXPECT_EQ(ptr->processed_size, - HexDecode(ptr->input, ptr->input_size, result, result_size)) - << "for case " << i; - ASSERT_EQ(ptr->expected_size, result_size); - for (size_t j = 0; j < result_size; ++j) { - EXPECT_EQ(ptr->expected[j], result[j]) << "for case " << i << " char " - << j; - } - FX_Free(result); - } -} diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp deleted file mode 100644 index c5d21f4bdd..0000000000 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h" - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/fpdf_parser_decode.h" -#include "core/include/fxcrt/fx_ext.h" - -// Indexed by 8-bit character code, contains either: -// 'W' - for whitespace: NUL, TAB, CR, LF, FF, SPACE, 0x80, 0xff -// 'N' - for numeric: 0123456789+-. -// 'D' - for delimiter: %()/<>[]{} -// 'R' - otherwise. -const char PDF_CharType[256] = { - // NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO - // SI - 'W', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'W', 'W', 'R', 'W', 'W', 'R', - 'R', - - // DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS - // US - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', - - // SP ! " # $ % & ´ ( ) * + , - . - // / - 'W', 'R', 'R', 'R', 'R', 'D', 'R', 'R', 'D', 'D', 'R', 'N', 'R', 'N', 'N', - 'D', - - // 0 1 2 3 4 5 6 7 8 9 : ; < = > ? - 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'R', 'R', 'D', 'R', 'D', - 'R', - - // @ A B C D E F G H I J K L M N O - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', - - // P Q R S T U V W X Y Z [ \ ] ^ _ - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'D', 'R', 'D', 'R', - 'R', - - // ` a b c d e f g h i j k l m n o - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', - - // p q r s t u v w x y z { | } ~ - // DEL - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'D', 'R', 'D', 'R', - 'R', - - 'W', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', - 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'W'}; - -int32_t GetHeaderOffset(IFX_FileRead* pFile) { - // TODO(dsinclair): This is a complicated way of saying %PDF, simplify? - const FX_DWORD tag = FXDWORD_FROM_LSBFIRST(0x46445025); - - const size_t kBufSize = 4; - uint8_t buf[kBufSize]; - int32_t offset = 0; - while (offset <= 1024) { - if (!pFile->ReadBlock(buf, offset, kBufSize)) - return -1; - - if (*(FX_DWORD*)buf == tag) - return offset; - - ++offset; - } - return -1; -} - -int32_t GetDirectInteger(CPDF_Dictionary* pDict, const CFX_ByteStringC& key) { - CPDF_Number* pObj = ToNumber(pDict->GetElement(key)); - return pObj ? pObj->GetInteger() : 0; -} - -CFX_ByteString PDF_NameDecode(const CFX_ByteStringC& bstr) { - int size = bstr.GetLength(); - const FX_CHAR* pSrc = bstr.GetCStr(); - if (!FXSYS_memchr(pSrc, '#', size)) { - return bstr; - } - CFX_ByteString result; - FX_CHAR* pDestStart = result.GetBuffer(size); - FX_CHAR* pDest = pDestStart; - for (int i = 0; i < size; i++) { - if (pSrc[i] == '#' && i < size - 2) { - *pDest++ = - FXSYS_toHexDigit(pSrc[i + 1]) * 16 + FXSYS_toHexDigit(pSrc[i + 2]); - i += 2; - } else { - *pDest++ = pSrc[i]; - } - } - result.ReleaseBuffer((FX_STRSIZE)(pDest - pDestStart)); - return result; -} - -CFX_ByteString PDF_NameDecode(const CFX_ByteString& orig) { - if (!FXSYS_memchr(orig.c_str(), '#', orig.GetLength())) { - return orig; - } - return PDF_NameDecode(CFX_ByteStringC(orig)); -} - -CFX_ByteString PDF_NameEncode(const CFX_ByteString& orig) { - uint8_t* src_buf = (uint8_t*)orig.c_str(); - int src_len = orig.GetLength(); - int dest_len = 0; - int i; - for (i = 0; i < src_len; i++) { - uint8_t ch = src_buf[i]; - if (ch >= 0x80 || PDFCharIsWhitespace(ch) || ch == '#' || - PDFCharIsDelimiter(ch)) { - dest_len += 3; - } else { - dest_len++; - } - } - if (dest_len == src_len) - return orig; - - CFX_ByteString res; - FX_CHAR* dest_buf = res.GetBuffer(dest_len); - dest_len = 0; - for (i = 0; i < src_len; i++) { - uint8_t ch = src_buf[i]; - if (ch >= 0x80 || PDFCharIsWhitespace(ch) || ch == '#' || - PDFCharIsDelimiter(ch)) { - dest_buf[dest_len++] = '#'; - dest_buf[dest_len++] = "0123456789ABCDEF"[ch / 16]; - dest_buf[dest_len++] = "0123456789ABCDEF"[ch % 16]; - } else { - dest_buf[dest_len++] = ch; - } - } - dest_buf[dest_len] = 0; - res.ReleaseBuffer(); - return res; -} - -CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& buf, const CPDF_Object* pObj) { - if (!pObj) { - buf << " null"; - return buf; - } - switch (pObj->GetType()) { - case CPDF_Object::NULLOBJ: - buf << " null"; - break; - case CPDF_Object::BOOLEAN: - case CPDF_Object::NUMBER: - buf << " " << pObj->GetString(); - break; - case CPDF_Object::STRING: - buf << PDF_EncodeString(pObj->GetString(), pObj->AsString()->IsHex()); - break; - case CPDF_Object::NAME: { - CFX_ByteString str = pObj->GetString(); - buf << "/" << PDF_NameEncode(str); - break; - } - case CPDF_Object::REFERENCE: { - buf << " " << pObj->AsReference()->GetRefObjNum() << " 0 R "; - break; - } - case CPDF_Object::ARRAY: { - const CPDF_Array* p = pObj->AsArray(); - buf << "["; - for (FX_DWORD i = 0; i < p->GetCount(); i++) { - CPDF_Object* pElement = p->GetElement(i); - if (pElement->GetObjNum()) { - buf << " " << pElement->GetObjNum() << " 0 R"; - } else { - buf << pElement; - } - } - buf << "]"; - break; - } - case CPDF_Object::DICTIONARY: { - const CPDF_Dictionary* p = pObj->AsDictionary(); - buf << "<<"; - for (const auto& it : *p) { - const CFX_ByteString& key = it.first; - CPDF_Object* pValue = it.second; - buf << "/" << PDF_NameEncode(key); - if (pValue && pValue->GetObjNum()) { - buf << " " << pValue->GetObjNum() << " 0 R "; - } else { - buf << pValue; - } - } - buf << ">>"; - break; - } - case CPDF_Object::STREAM: { - const CPDF_Stream* p = pObj->AsStream(); - buf << p->GetDict() << "stream\r\n"; - CPDF_StreamAcc acc; - acc.LoadAllData(p, TRUE); - buf.AppendBlock(acc.GetData(), acc.GetSize()); - buf << "\r\nendstream"; - break; - } - default: - ASSERT(FALSE); - break; - } - return buf; -} diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h b/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h deleted file mode 100644 index cdc1199623..0000000000 --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_ -#define CORE_SRC_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_ - -#include "core/include/fxcrt/fx_string.h" -#include "core/include/fxcrt/fx_system.h" - -class IFX_FileRead; -class CPDF_Dictionary; - -// Use the accessors below instead of directly accessing PDF_CharType. -extern const char PDF_CharType[256]; - -inline bool PDFCharIsWhitespace(uint8_t c) { - return PDF_CharType[c] == 'W'; -} -inline bool PDFCharIsNumeric(uint8_t c) { - return PDF_CharType[c] == 'N'; -} -inline bool PDFCharIsDelimiter(uint8_t c) { - return PDF_CharType[c] == 'D'; -} -inline bool PDFCharIsOther(uint8_t c) { - return PDF_CharType[c] == 'R'; -} - -inline bool PDFCharIsLineEnding(uint8_t c) { - return c == '\r' || c == '\n'; -} - -int32_t GetHeaderOffset(IFX_FileRead* pFile); -int32_t GetDirectInteger(CPDF_Dictionary* pDict, const CFX_ByteStringC& key); - -#endif // CORE_SRC_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_ diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render.cpp deleted file mode 100644 index 1a7a83a55f..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render.cpp +++ /dev/null @@ -1,1339 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_render/render_int.h" - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -CPDF_DocRenderData::CPDF_DocRenderData(CPDF_Document* pPDFDoc) - : m_pPDFDoc(pPDFDoc), m_pFontCache(new CFX_FontCache) {} - -CPDF_DocRenderData::~CPDF_DocRenderData() { - Clear(TRUE); -} - -void CPDF_DocRenderData::Clear(FX_BOOL bRelease) { - for (auto it = m_Type3FaceMap.begin(); it != m_Type3FaceMap.end();) { - auto curr_it = it++; - CPDF_CountedObject* cache = curr_it->second; - if (bRelease || cache->use_count() < 2) { - delete cache->get(); - delete cache; - m_Type3FaceMap.erase(curr_it); - } - } - - for (auto it = m_TransferFuncMap.begin(); it != m_TransferFuncMap.end();) { - auto curr_it = it++; - CPDF_CountedObject* value = curr_it->second; - if (bRelease || value->use_count() < 2) { - delete value->get(); - delete value; - m_TransferFuncMap.erase(curr_it); - } - } - - if (m_pFontCache) { - if (bRelease) { - delete m_pFontCache; - m_pFontCache = NULL; - } else { - m_pFontCache->FreeCache(FALSE); - } - } -} - -CPDF_Type3Cache* CPDF_DocRenderData::GetCachedType3(CPDF_Type3Font* pFont) { - CPDF_CountedObject* pCache; - auto it = m_Type3FaceMap.find(pFont); - if (it == m_Type3FaceMap.end()) { - CPDF_Type3Cache* pType3 = new CPDF_Type3Cache(pFont); - pCache = new CPDF_CountedObject(pType3); - m_Type3FaceMap[pFont] = pCache; - } else { - pCache = it->second; - } - return pCache->AddRef(); -} - -void CPDF_DocRenderData::ReleaseCachedType3(CPDF_Type3Font* pFont) { - auto it = m_Type3FaceMap.find(pFont); - if (it != m_Type3FaceMap.end()) - it->second->RemoveRef(); -} - -class CPDF_RenderModule : public IPDF_RenderModule { - public: - CPDF_RenderModule() {} - - private: - ~CPDF_RenderModule() override {} - - CPDF_DocRenderData* CreateDocData(CPDF_Document* pDoc) override; - void DestroyDocData(CPDF_DocRenderData* p) override; - void ClearDocData(CPDF_DocRenderData* p) override; - - CPDF_DocRenderData* GetRenderData() override { return &m_RenderData; } - - CPDF_PageRenderCache* CreatePageCache(CPDF_Page* pPage) override { - return new CPDF_PageRenderCache(pPage); - } - - void DestroyPageCache(CPDF_PageRenderCache* pCache) override; - - CPDF_DocRenderData m_RenderData; -}; - -CPDF_DocRenderData* CPDF_RenderModule::CreateDocData(CPDF_Document* pDoc) { - return new CPDF_DocRenderData(pDoc); -} -void CPDF_RenderModule::DestroyDocData(CPDF_DocRenderData* pDocData) { - delete pDocData; -} -void CPDF_RenderModule::ClearDocData(CPDF_DocRenderData* p) { - if (p) { - p->Clear(FALSE); - } -} -void CPDF_RenderModule::DestroyPageCache(CPDF_PageRenderCache* pCache) { - delete pCache; -} - -void CPDF_ModuleMgr::InitRenderModule() { - m_pRenderModule.reset(new CPDF_RenderModule); -} - -CPDF_RenderOptions::CPDF_RenderOptions() - : m_ColorMode(RENDER_COLOR_NORMAL), - m_Flags(RENDER_CLEARTYPE), - m_Interpolation(0), - m_AddFlags(0), - m_pOCContext(NULL), - m_dwLimitCacheSize(1024 * 1024 * 100), - m_HalftoneLimit(-1) {} -FX_ARGB CPDF_RenderOptions::TranslateColor(FX_ARGB argb) const { - if (m_ColorMode == RENDER_COLOR_NORMAL) { - return argb; - } - if (m_ColorMode == RENDER_COLOR_ALPHA) { - return argb; - } - int a, r, g, b; - ArgbDecode(argb, a, r, g, b); - int gray = FXRGB2GRAY(r, g, b); - if (m_ColorMode == RENDER_COLOR_TWOCOLOR) { - int color = (r - gray) * (r - gray) + (g - gray) * (g - gray) + - (b - gray) * (b - gray); - if (gray < 35 && color < 20) { - return ArgbEncode(a, m_ForeColor); - } - if (gray > 221 && color < 20) { - return ArgbEncode(a, m_BackColor); - } - return argb; - } - int fr = FXSYS_GetRValue(m_ForeColor); - int fg = FXSYS_GetGValue(m_ForeColor); - int fb = FXSYS_GetBValue(m_ForeColor); - int br = FXSYS_GetRValue(m_BackColor); - int bg = FXSYS_GetGValue(m_BackColor); - int bb = FXSYS_GetBValue(m_BackColor); - r = (br - fr) * gray / 255 + fr; - g = (bg - fg) * gray / 255 + fg; - b = (bb - fb) * gray / 255 + fb; - return ArgbEncode(a, r, g, b); -} - -// static -int CPDF_RenderStatus::s_CurrentRecursionDepth = 0; - -CPDF_RenderStatus::CPDF_RenderStatus() - : m_pFormResource(nullptr), - m_pPageResource(nullptr), - m_pContext(nullptr), - m_bStopped(FALSE), - m_pDevice(nullptr), - m_pCurObj(nullptr), - m_pStopObj(nullptr), - m_HalftoneLimit(0), - m_bPrint(FALSE), - m_Transparency(0), - m_DitherBits(0), - m_bDropObjects(FALSE), - m_bStdCS(FALSE), - m_GroupFamily(0), - m_bLoadMask(FALSE), - m_pType3Char(nullptr), - m_T3FillColor(0), - m_curBlend(FXDIB_BLEND_NORMAL) {} - -CPDF_RenderStatus::~CPDF_RenderStatus() { -} - -FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext, - CFX_RenderDevice* pDevice, - const CFX_Matrix* pDeviceMatrix, - const CPDF_PageObject* pStopObj, - const CPDF_RenderStatus* pParentState, - const CPDF_GraphicStates* pInitialStates, - const CPDF_RenderOptions* pOptions, - int transparency, - FX_BOOL bDropObjects, - CPDF_Dictionary* pFormResource, - FX_BOOL bStdCS, - CPDF_Type3Char* pType3Char, - FX_ARGB fill_color, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask) { - m_pContext = pContext; - m_pDevice = pDevice; - m_DitherBits = pDevice->GetDeviceCaps(FXDC_DITHER_BITS); - m_bPrint = m_pDevice->GetDeviceClass() != FXDC_DISPLAY; - if (pDeviceMatrix) { - m_DeviceMatrix = *pDeviceMatrix; - } - m_pStopObj = pStopObj; - if (pOptions) { - m_Options = *pOptions; - } - m_bDropObjects = bDropObjects; - m_bStdCS = bStdCS; - m_T3FillColor = fill_color; - m_pType3Char = pType3Char; - m_GroupFamily = GroupFamily; - m_bLoadMask = bLoadMask; - m_pFormResource = pFormResource; - m_pPageResource = m_pContext->GetPageResources(); - if (pInitialStates && !m_pType3Char) { - m_InitialStates.CopyStates(*pInitialStates); - if (pParentState) { - CPDF_ColorStateData* pColorData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - m_InitialStates.m_ColorState; - CPDF_ColorStateData* pParentData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - pParentState->m_InitialStates.m_ColorState; - if (!pColorData || pColorData->m_FillColor.IsNull()) { - CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); - pData->m_FillRGB = pParentData->m_FillRGB; - pData->m_FillColor.Copy(&pParentData->m_FillColor); - } - if (!pColorData || pColorData->m_StrokeColor.IsNull()) { - CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify(); - pData->m_StrokeRGB = pParentData->m_FillRGB; - pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor); - } - } - } else { - m_InitialStates.DefaultStates(); - } - m_pObjectRenderer.reset(); - m_Transparency = transparency; - return TRUE; -} -void CPDF_RenderStatus::RenderObjectList( - const CPDF_PageObjectHolder* pObjectHolder, - const CFX_Matrix* pObj2Device) { - CFX_FloatRect clip_rect(m_pDevice->GetClipBox()); - CFX_Matrix device2object; - device2object.SetReverse(*pObj2Device); - device2object.TransformRect(clip_rect); - - for (const auto& pCurObj : *pObjectHolder->GetPageObjectList()) { - if (pCurObj.get() == m_pStopObj) { - m_bStopped = TRUE; - return; - } - if (!pCurObj) - continue; - - if (pCurObj->m_Left > clip_rect.right || - pCurObj->m_Right < clip_rect.left || - pCurObj->m_Bottom > clip_rect.top || - pCurObj->m_Top < clip_rect.bottom) { - continue; - } - RenderSingleObject(pCurObj.get(), pObj2Device); - if (m_bStopped) - return; - } -} -void CPDF_RenderStatus::RenderSingleObject(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device) { - CFX_AutoRestorer restorer(&s_CurrentRecursionDepth); - if (++s_CurrentRecursionDepth > kRenderMaxRecursionDepth) { - return; - } - m_pCurObj = pObj; - if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull()) { - if (!m_Options.m_pOCContext->CheckObjectVisible(pObj)) { - return; - } - } - ProcessClipPath(pObj->m_ClipPath, pObj2Device); - if (ProcessTransparency(pObj, pObj2Device)) { - return; - } - ProcessObjectNoClip(pObj, pObj2Device); -} - -FX_BOOL CPDF_RenderStatus::ContinueSingleObject(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device, - IFX_Pause* pPause) { - if (m_pObjectRenderer) { - if (m_pObjectRenderer->Continue(pPause)) - return TRUE; - - if (!m_pObjectRenderer->m_Result) - DrawObjWithBackground(pObj, pObj2Device); - m_pObjectRenderer.reset(); - return FALSE; - } - - m_pCurObj = pObj; - if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull() && - !m_Options.m_pOCContext->CheckObjectVisible(pObj)) { - return FALSE; - } - - ProcessClipPath(pObj->m_ClipPath, pObj2Device); - if (ProcessTransparency(pObj, pObj2Device)) - return FALSE; - - if (pObj->IsImage()) { - m_pObjectRenderer.reset(IPDF_ObjectRenderer::Create()); - if (!m_pObjectRenderer->Start(this, pObj, pObj2Device, FALSE)) { - if (!m_pObjectRenderer->m_Result) - DrawObjWithBackground(pObj, pObj2Device); - m_pObjectRenderer.reset(); - return FALSE; - } - return ContinueSingleObject(pObj, pObj2Device, pPause); - } - - ProcessObjectNoClip(pObj, pObj2Device); - return FALSE; -} - -IPDF_ObjectRenderer* IPDF_ObjectRenderer::Create() { - return new CPDF_ImageRenderer; -} - -FX_BOOL CPDF_RenderStatus::GetObjectClippedRect(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bLogical, - FX_RECT& rect) const { - rect = pObj->GetBBox(pObj2Device); - FX_RECT rtClip = m_pDevice->GetClipBox(); - if (!bLogical) { - CFX_Matrix dCTM = m_pDevice->GetCTM(); - FX_FLOAT a = FXSYS_fabs(dCTM.a); - FX_FLOAT d = FXSYS_fabs(dCTM.d); - if (a != 1.0f || d != 1.0f) { - rect.right = rect.left + (int32_t)FXSYS_ceil((FX_FLOAT)rect.Width() * a); - rect.bottom = rect.top + (int32_t)FXSYS_ceil((FX_FLOAT)rect.Height() * d); - rtClip.right = - rtClip.left + (int32_t)FXSYS_ceil((FX_FLOAT)rtClip.Width() * a); - rtClip.bottom = - rtClip.top + (int32_t)FXSYS_ceil((FX_FLOAT)rtClip.Height() * d); - } - } - rect.Intersect(rtClip); - return rect.IsEmpty(); -} -void CPDF_RenderStatus::DitherObjectArea(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device) { - CFX_DIBitmap* pBitmap = m_pDevice->GetBitmap(); - if (!pBitmap) { - return; - } - FX_RECT rect; - if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) { - return; - } - if (m_DitherBits == 2) { - static FX_ARGB pal[4] = {0, 85, 170, 255}; - pBitmap->DitherFS(pal, 4, &rect); - } else if (m_DitherBits == 3) { - static FX_ARGB pal[8] = {0, 36, 73, 109, 146, 182, 219, 255}; - pBitmap->DitherFS(pal, 8, &rect); - } else if (m_DitherBits == 4) { - static FX_ARGB pal[16] = {0, 17, 34, 51, 68, 85, 102, 119, - 136, 153, 170, 187, 204, 221, 238, 255}; - pBitmap->DitherFS(pal, 16, &rect); - } -} -void CPDF_RenderStatus::ProcessObjectNoClip(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device) { - FX_BOOL bRet = FALSE; - switch (pObj->GetType()) { - case CPDF_PageObject::TEXT: - bRet = ProcessText(pObj->AsText(), pObj2Device, NULL); - break; - case CPDF_PageObject::PATH: - bRet = ProcessPath(pObj->AsPath(), pObj2Device); - break; - case CPDF_PageObject::IMAGE: - bRet = ProcessImage(pObj->AsImage(), pObj2Device); - break; - case CPDF_PageObject::SHADING: - bRet = ProcessShading(pObj->AsShading(), pObj2Device); - break; - case CPDF_PageObject::FORM: - bRet = ProcessForm(pObj->AsForm(), pObj2Device); - break; - } - if (!bRet) { - DrawObjWithBackground(pObj, pObj2Device); - } -} -FX_BOOL CPDF_RenderStatus::DrawObjWithBlend(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device) { - FX_BOOL bRet = FALSE; - switch (pObj->GetType()) { - case CPDF_PageObject::PATH: - bRet = ProcessPath(pObj->AsPath(), pObj2Device); - break; - case CPDF_PageObject::IMAGE: - bRet = ProcessImage(pObj->AsImage(), pObj2Device); - break; - case CPDF_PageObject::FORM: - bRet = ProcessForm(pObj->AsForm(), pObj2Device); - break; - default: - break; - } - return bRet; -} -void CPDF_RenderStatus::GetScaledMatrix(CFX_Matrix& matrix) const { - CFX_Matrix dCTM = m_pDevice->GetCTM(); - matrix.a *= FXSYS_fabs(dCTM.a); - matrix.d *= FXSYS_fabs(dCTM.d); -} -void CPDF_RenderStatus::DrawObjWithBackground(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device) { - FX_RECT rect; - if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) { - return; - } - int res = 300; - if (pObj->IsImage() && - m_pDevice->GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINTER) { - res = 0; - } - CPDF_ScaledRenderBuffer buffer; - if (!buffer.Initialize(m_pContext, m_pDevice, rect, pObj, &m_Options, res)) { - return; - } - CFX_Matrix matrix = *pObj2Device; - matrix.Concat(*buffer.GetMatrix()); - GetScaledMatrix(matrix); - CPDF_Dictionary* pFormResource = NULL; - if (pObj->IsForm()) { - const CPDF_FormObject* pFormObj = pObj->AsForm(); - if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) { - pFormResource = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources"); - } - } - CPDF_RenderStatus status; - status.Initialize(m_pContext, buffer.GetDevice(), buffer.GetMatrix(), NULL, - NULL, NULL, &m_Options, m_Transparency, m_bDropObjects, - pFormResource); - status.RenderSingleObject(pObj, &matrix); - buffer.OutputToDevice(); -} -FX_BOOL CPDF_RenderStatus::ProcessForm(const CPDF_FormObject* pFormObj, - const CFX_Matrix* pObj2Device) { - CPDF_Dictionary* pOC = pFormObj->m_pForm->m_pFormDict->GetDictBy("OC"); - if (pOC && m_Options.m_pOCContext && - !m_Options.m_pOCContext->CheckOCGVisible(pOC)) { - return TRUE; - } - CFX_Matrix matrix = pFormObj->m_FormMatrix; - matrix.Concat(*pObj2Device); - CPDF_Dictionary* pResources = NULL; - if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) { - pResources = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources"); - } - CPDF_RenderStatus status; - status.Initialize(m_pContext, m_pDevice, NULL, m_pStopObj, this, pFormObj, - &m_Options, m_Transparency, m_bDropObjects, pResources, - FALSE); - status.m_curBlend = m_curBlend; - m_pDevice->SaveState(); - status.RenderObjectList(pFormObj->m_pForm, &matrix); - m_bStopped = status.m_bStopped; - m_pDevice->RestoreState(); - return TRUE; -} -FX_BOOL IsAvailableMatrix(const CFX_Matrix& matrix) { - if (matrix.a == 0 || matrix.d == 0) { - return matrix.b != 0 && matrix.c != 0; - } - if (matrix.b == 0 || matrix.c == 0) { - return matrix.a != 0 && matrix.d != 0; - } - return TRUE; -} -FX_BOOL CPDF_RenderStatus::ProcessPath(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device) { - int FillType = pPathObj->m_FillType; - FX_BOOL bStroke = pPathObj->m_bStroke; - ProcessPathPattern(pPathObj, pObj2Device, FillType, bStroke); - if (FillType == 0 && !bStroke) { - return TRUE; - } - FX_DWORD fill_argb = 0; - if (FillType) { - fill_argb = GetFillArgb(pPathObj); - } - FX_DWORD stroke_argb = 0; - if (bStroke) { - stroke_argb = GetStrokeArgb(pPathObj); - } - CFX_Matrix path_matrix = pPathObj->m_Matrix; - path_matrix.Concat(*pObj2Device); - if (!IsAvailableMatrix(path_matrix)) { - return TRUE; - } - if (FillType && (m_Options.m_Flags & RENDER_RECT_AA)) { - FillType |= FXFILL_RECT_AA; - } - if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) { - FillType |= FXFILL_FULLCOVER; - } - if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { - FillType |= FXFILL_NOPATHSMOOTH; - } - if (bStroke) { - FillType |= FX_FILL_STROKE; - } - const CPDF_GeneralStateData* pGeneralData = - ((CPDF_PageObject*)pPathObj)->m_GeneralState; - if (pGeneralData && pGeneralData->m_StrokeAdjust) { - FillType |= FX_STROKE_ADJUST; - } - if (m_pType3Char) { - FillType |= FX_FILL_TEXT_MODE; - } - CFX_GraphStateData graphState(*pPathObj->m_GraphState); - if (m_Options.m_Flags & RENDER_THINLINE) { - graphState.m_LineWidth = 0; - } - return m_pDevice->DrawPath(pPathObj->m_Path, &path_matrix, &graphState, - fill_argb, stroke_argb, FillType, 0, NULL, - m_curBlend); -} -CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const { - ASSERT(pObj); - CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData(); - return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr; -} -FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj, - FX_BOOL bType3) const { - CPDF_ColorStateData* pColorData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; - if (m_pType3Char && !bType3 && - (!m_pType3Char->m_bColored || - (m_pType3Char->m_bColored && - (!pColorData || pColorData->m_FillColor.IsNull())))) { - return m_T3FillColor; - } - if (!pColorData || pColorData->m_FillColor.IsNull()) { - pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - m_InitialStates.m_ColorState; - } - FX_COLORREF rgb = pColorData->m_FillRGB; - if (rgb == (FX_DWORD)-1) { - return 0; - } - const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; - int alpha; - if (pGeneralData) { - alpha = (int32_t)(pGeneralData->m_FillAlpha * 255); - if (pGeneralData->m_pTR) { - if (!pGeneralData->m_pTransferFunc) { - ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = - GetTransferFunc(pGeneralData->m_pTR); - } - if (pGeneralData->m_pTransferFunc) { - rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); - } - } - } else { - alpha = 255; - } - return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); -} -FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const { - CPDF_ColorStateData* pColorData = - (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState; - if (m_pType3Char && (!m_pType3Char->m_bColored || - (m_pType3Char->m_bColored && - (!pColorData || pColorData->m_StrokeColor.IsNull())))) { - return m_T3FillColor; - } - if (!pColorData || pColorData->m_StrokeColor.IsNull()) { - pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*) - m_InitialStates.m_ColorState; - } - FX_COLORREF rgb = pColorData->m_StrokeRGB; - if (rgb == (FX_DWORD)-1) { - return 0; - } - const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState; - int alpha; - if (pGeneralData) { - alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255); - if (pGeneralData->m_pTR) { - if (!pGeneralData->m_pTransferFunc) { - ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc = - GetTransferFunc(pGeneralData->m_pTR); - } - if (pGeneralData->m_pTransferFunc) { - rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb); - } - } - } else { - alpha = 255; - } - return m_Options.TranslateColor(ArgbEncode(alpha, rgb)); -} -void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath, - const CFX_Matrix* pObj2Device) { - if (ClipPath.IsNull()) { - if (!m_LastClipPath.IsNull()) { - m_pDevice->RestoreState(TRUE); - m_LastClipPath.SetNull(); - } - return; - } - if (m_LastClipPath == ClipPath) - return; - - m_LastClipPath = ClipPath; - m_pDevice->RestoreState(TRUE); - int nClipPath = ClipPath.GetPathCount(); - for (int i = 0; i < nClipPath; ++i) { - const CFX_PathData* pPathData = ClipPath.GetPath(i); - if (!pPathData) - continue; - - if (pPathData->GetPointCount() == 0) { - CFX_PathData EmptyPath; - EmptyPath.AppendRect(-1, -1, 0, 0); - int fill_mode = FXFILL_WINDING; - m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode); - } else { - int ClipType = ClipPath.GetClipType(i); - m_pDevice->SetClip_PathFill(pPathData, pObj2Device, ClipType); - } - } - int textcount = ClipPath.GetTextCount(); - if (textcount == 0) - return; - - if (m_pDevice->GetDeviceClass() == FXDC_DISPLAY && - !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) { - return; - } - - std::unique_ptr pTextClippingPath; - for (int i = 0; i < textcount; ++i) { - CPDF_TextObject* pText = ClipPath.GetText(i); - if (pText) { - if (!pTextClippingPath) - pTextClippingPath.reset(new CFX_PathData); - ProcessText(pText, pObj2Device, pTextClippingPath.get()); - continue; - } - - if (!pTextClippingPath) - continue; - - int fill_mode = FXFILL_WINDING; - if (m_Options.m_Flags & RENDER_NOTEXTSMOOTH) - fill_mode |= FXFILL_NOPATHSMOOTH; - m_pDevice->SetClip_PathFill(pTextClippingPath.get(), nullptr, fill_mode); - pTextClippingPath.reset(); - } -} - -void CPDF_RenderStatus::DrawClipPath(CPDF_ClipPath ClipPath, - const CFX_Matrix* pObj2Device) { - if (ClipPath.IsNull()) { - return; - } - int fill_mode = 0; - if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { - fill_mode |= FXFILL_NOPATHSMOOTH; - } - int nClipPath = ClipPath.GetPathCount(); - int i; - for (i = 0; i < nClipPath; i++) { - const CFX_PathData* pPathData = ClipPath.GetPath(i); - if (!pPathData) { - continue; - } - CFX_GraphStateData stroke_state; - if (m_Options.m_Flags & RENDER_THINLINE) { - stroke_state.m_LineWidth = 0; - } - m_pDevice->DrawPath(pPathData, pObj2Device, &stroke_state, 0, 0xffff0000, - fill_mode); - } -} -FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStroke) { - CFX_Matrix path_matrix = pPathObj->m_Matrix; - path_matrix.Concat(*pObj2Device); - if (bStroke) { - CFX_GraphStateData graphState(*pPathObj->m_GraphState); - if (m_Options.m_Flags & RENDER_THINLINE) { - graphState.m_LineWidth = 0; - } - return m_pDevice->SetClip_PathStroke(pPathObj->m_Path, &path_matrix, - &graphState); - } - int fill_mode = pPathObj->m_FillType; - if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) { - fill_mode |= FXFILL_NOPATHSMOOTH; - } - return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode); -} -FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj, - const CFX_Matrix* pObj2Device) { - const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState; - int blend_type = - pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL; - if (blend_type == FXDIB_BLEND_UNSUPPORTED) { - return TRUE; - } - CPDF_Dictionary* pSMaskDict = - pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : NULL; - if (pSMaskDict) { - if (pPageObj->IsImage() && - pPageObj->AsImage()->m_pImage->GetDict()->KeyExist("SMask")) { - pSMaskDict = NULL; - } - } - CPDF_Dictionary* pFormResource = NULL; - FX_FLOAT group_alpha = 1.0f; - int Transparency = m_Transparency; - FX_BOOL bGroupTransparent = FALSE; - if (pPageObj->IsForm()) { - const CPDF_FormObject* pFormObj = pPageObj->AsForm(); - const CPDF_GeneralStateData* pStateData = - pFormObj->m_GeneralState.GetObject(); - if (pStateData) { - group_alpha = pStateData->m_FillAlpha; - } - Transparency = pFormObj->m_pForm->m_Transparency; - bGroupTransparent = !!(Transparency & PDFTRANS_ISOLATED); - if (pFormObj->m_pForm->m_pFormDict) { - pFormResource = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources"); - } - } - FX_BOOL bTextClip = FALSE; - if (pPageObj->m_ClipPath.NotNull() && pPageObj->m_ClipPath.GetTextCount() && - m_pDevice->GetDeviceClass() == FXDC_DISPLAY && - !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) { - bTextClip = TRUE; - } - if ((m_Options.m_Flags & RENDER_OVERPRINT) && pPageObj->IsImage() && - pGeneralState && pGeneralState->m_FillOP && pGeneralState->m_StrokeOP) { - CPDF_Document* pDocument = NULL; - CPDF_Page* pPage = NULL; - if (m_pContext->GetPageCache()) { - pPage = m_pContext->GetPageCache()->GetPage(); - pDocument = pPage->m_pDocument; - } else { - pDocument = pPageObj->AsImage()->m_pImage->GetDocument(); - } - CPDF_Dictionary* pPageResources = pPage ? pPage->m_pPageResources : NULL; - CPDF_Object* pCSObj = - pPageObj->AsImage()->m_pImage->GetStream()->GetDict()->GetElementValue( - "ColorSpace"); - CPDF_ColorSpace* pColorSpace = - pDocument->LoadColorSpace(pCSObj, pPageResources); - if (pColorSpace) { - int format = pColorSpace->GetFamily(); - if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION || - format == PDFCS_DEVICEN) { - blend_type = FXDIB_BLEND_DARKEN; - } - pDocument->GetPageData()->ReleaseColorSpace(pCSObj); - } - } - if (!pSMaskDict && group_alpha == 1.0f && blend_type == FXDIB_BLEND_NORMAL && - !bTextClip && !bGroupTransparent) { - return FALSE; - } - FX_BOOL isolated = Transparency & PDFTRANS_ISOLATED; - if (m_bPrint) { - FX_BOOL bRet = FALSE; - int rendCaps = m_pDevice->GetRenderCaps(); - if (!((Transparency & PDFTRANS_ISOLATED) || pSMaskDict || bTextClip) && - (rendCaps & FXRC_BLEND_MODE)) { - int oldBlend = m_curBlend; - m_curBlend = blend_type; - bRet = DrawObjWithBlend(pPageObj, pObj2Device); - m_curBlend = oldBlend; - } - if (!bRet) { - DrawObjWithBackground(pPageObj, pObj2Device); - } - return TRUE; - } - FX_RECT rect = pPageObj->GetBBox(pObj2Device); - rect.Intersect(m_pDevice->GetClipBox()); - if (rect.IsEmpty()) { - return TRUE; - } - CFX_Matrix deviceCTM = m_pDevice->GetCTM(); - FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a); - FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d); - int width = FXSYS_round((FX_FLOAT)rect.Width() * scaleX); - int height = FXSYS_round((FX_FLOAT)rect.Height() * scaleY); - CFX_FxgeDevice bitmap_device; - std::unique_ptr oriDevice; - if (!isolated && (m_pDevice->GetRenderCaps() & FXRC_GET_BITS)) { - oriDevice.reset(new CFX_DIBitmap); - if (!m_pDevice->CreateCompatibleBitmap(oriDevice.get(), width, height)) - return TRUE; - - m_pDevice->GetDIBits(oriDevice.get(), rect.left, rect.top); - } - if (!bitmap_device.Create(width, height, FXDIB_Argb, 0, oriDevice.get())) - return TRUE; - - CFX_DIBitmap* bitmap = bitmap_device.GetBitmap(); - bitmap->Clear(0); - CFX_Matrix new_matrix = *pObj2Device; - new_matrix.TranslateI(-rect.left, -rect.top); - new_matrix.Scale(scaleX, scaleY); - std::unique_ptr pTextMask; - if (bTextClip) { - pTextMask.reset(new CFX_DIBitmap); - if (!pTextMask->Create(width, height, FXDIB_8bppMask)) - return TRUE; - - pTextMask->Clear(0); - CFX_FxgeDevice text_device; - text_device.Attach(pTextMask.get()); - for (FX_DWORD i = 0; i < pPageObj->m_ClipPath.GetTextCount(); i++) { - CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i); - if (!textobj) { - break; - } - CFX_Matrix text_matrix; - textobj->GetTextMatrix(&text_matrix); - CPDF_TextRenderer::DrawTextPath( - &text_device, textobj->m_nChars, textobj->m_pCharCodes, - textobj->m_pCharPos, textobj->m_TextState.GetFont(), - textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix, - textobj->m_GraphState, (FX_ARGB)-1, 0, NULL); - } - } - CPDF_RenderStatus bitmap_render; - bitmap_render.Initialize(m_pContext, &bitmap_device, NULL, m_pStopObj, NULL, - NULL, &m_Options, 0, m_bDropObjects, pFormResource, - TRUE); - bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix); - m_bStopped = bitmap_render.m_bStopped; - if (pSMaskDict) { - CFX_Matrix smask_matrix; - FXSYS_memcpy(&smask_matrix, pGeneralState->m_SMaskMatrix, - sizeof smask_matrix); - smask_matrix.Concat(*pObj2Device); - std::unique_ptr pSMaskSource( - LoadSMask(pSMaskDict, &rect, &smask_matrix)); - if (pSMaskSource) - bitmap->MultiplyAlpha(pSMaskSource.get()); - } - if (pTextMask) { - bitmap->MultiplyAlpha(pTextMask.get()); - pTextMask.reset(); - } - if (Transparency & PDFTRANS_GROUP && group_alpha != 1.0f) { - bitmap->MultiplyAlpha((int32_t)(group_alpha * 255)); - } - Transparency = m_Transparency; - if (pPageObj->IsForm()) { - Transparency |= PDFTRANS_GROUP; - } - CompositeDIBitmap(bitmap, rect.left, rect.top, 0, 255, blend_type, - Transparency); - return TRUE; -} - -CFX_DIBitmap* CPDF_RenderStatus::GetBackdrop(const CPDF_PageObject* pObj, - const FX_RECT& rect, - int& left, - int& top, - FX_BOOL bBackAlphaRequired) { - FX_RECT bbox = rect; - bbox.Intersect(m_pDevice->GetClipBox()); - left = bbox.left; - top = bbox.top; - CFX_Matrix deviceCTM = m_pDevice->GetCTM(); - FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a); - FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d); - int width = FXSYS_round(bbox.Width() * scaleX); - int height = FXSYS_round(bbox.Height() * scaleY); - std::unique_ptr pBackdrop(new CFX_DIBitmap); - if (bBackAlphaRequired && !m_bDropObjects) - pBackdrop->Create(width, height, FXDIB_Argb); - else - m_pDevice->CreateCompatibleBitmap(pBackdrop.get(), width, height); - - if (!pBackdrop->GetBuffer()) - return nullptr; - - FX_BOOL bNeedDraw; - if (pBackdrop->HasAlpha()) - bNeedDraw = !(m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT); - else - bNeedDraw = !(m_pDevice->GetRenderCaps() & FXRC_GET_BITS); - - if (!bNeedDraw) { - m_pDevice->GetDIBits(pBackdrop.get(), left, top); - return pBackdrop.release(); - } - - CFX_Matrix FinalMatrix = m_DeviceMatrix; - FinalMatrix.TranslateI(-left, -top); - FinalMatrix.Scale(scaleX, scaleY); - pBackdrop->Clear(pBackdrop->HasAlpha() ? 0 : 0xffffffff); - CFX_FxgeDevice device; - device.Attach(pBackdrop.get()); - m_pContext->Render(&device, pObj, &m_Options, &FinalMatrix); - return pBackdrop.release(); -} - -void CPDF_RenderContext::GetBackground(CFX_DIBitmap* pBuffer, - const CPDF_PageObject* pObj, - const CPDF_RenderOptions* pOptions, - CFX_Matrix* pFinalMatrix) { - CFX_FxgeDevice device; - device.Attach(pBuffer); - - FX_RECT rect(0, 0, device.GetWidth(), device.GetHeight()); - device.FillRect(&rect, 0xffffffff); - Render(&device, pObj, pOptions, pFinalMatrix); -} -CPDF_GraphicStates* CPDF_RenderStatus::CloneObjStates( - const CPDF_GraphicStates* pSrcStates, - FX_BOOL bStroke) { - if (!pSrcStates) { - return NULL; - } - CPDF_GraphicStates* pStates = new CPDF_GraphicStates; - pStates->CopyStates(*pSrcStates); - CPDF_Color* pObjColor = bStroke ? pSrcStates->m_ColorState.GetStrokeColor() - : pSrcStates->m_ColorState.GetFillColor(); - if (!pObjColor->IsNull()) { - CPDF_ColorStateData* pColorData = pStates->m_ColorState.GetModify(); - pColorData->m_FillRGB = - bStroke ? pSrcStates->m_ColorState.GetObject()->m_StrokeRGB - : pSrcStates->m_ColorState.GetObject()->m_FillRGB; - pColorData->m_StrokeRGB = pColorData->m_FillRGB; - } - return pStates; -} - -CPDF_RenderContext::CPDF_RenderContext(CPDF_Page* pPage) - : m_pDocument(pPage->m_pDocument), - m_pPageResources(pPage->m_pPageResources), - m_pPageCache(pPage->GetRenderCache()), - m_bFirstLayer(TRUE) {} - -CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc, - CPDF_PageRenderCache* pPageCache) - : m_pDocument(pDoc), - m_pPageResources(nullptr), - m_pPageCache(pPageCache), - m_bFirstLayer(TRUE) {} - -CPDF_RenderContext::~CPDF_RenderContext() {} - -void CPDF_RenderContext::AppendLayer(CPDF_PageObjectHolder* pObjectHolder, - const CFX_Matrix* pObject2Device) { - Layer* pLayer = m_Layers.AddSpace(); - pLayer->m_pObjectHolder = pObjectHolder; - if (pObject2Device) { - pLayer->m_Matrix = *pObject2Device; - } else { - pLayer->m_Matrix.SetIdentity(); - } -} -void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, - const CPDF_RenderOptions* pOptions, - const CFX_Matrix* pLastMatrix) { - Render(pDevice, NULL, pOptions, pLastMatrix); -} -void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice, - const CPDF_PageObject* pStopObj, - const CPDF_RenderOptions* pOptions, - const CFX_Matrix* pLastMatrix) { - int count = m_Layers.GetSize(); - for (int j = 0; j < count; j++) { - pDevice->SaveState(); - Layer* pLayer = m_Layers.GetDataPtr(j); - if (pLastMatrix) { - CFX_Matrix FinalMatrix = pLayer->m_Matrix; - FinalMatrix.Concat(*pLastMatrix); - CPDF_RenderStatus status; - status.Initialize(this, pDevice, pLastMatrix, pStopObj, NULL, NULL, - pOptions, pLayer->m_pObjectHolder->m_Transparency, - FALSE, NULL); - status.RenderObjectList(pLayer->m_pObjectHolder, &FinalMatrix); - if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { - m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize); - } - if (status.m_bStopped) { - pDevice->RestoreState(); - break; - } - } else { - CPDF_RenderStatus status; - status.Initialize(this, pDevice, NULL, pStopObj, NULL, NULL, pOptions, - pLayer->m_pObjectHolder->m_Transparency, FALSE, NULL); - status.RenderObjectList(pLayer->m_pObjectHolder, &pLayer->m_Matrix); - if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { - m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize); - } - if (status.m_bStopped) { - pDevice->RestoreState(); - break; - } - } - pDevice->RestoreState(); - } -} - -CPDF_ProgressiveRenderer::CPDF_ProgressiveRenderer( - CPDF_RenderContext* pContext, - CFX_RenderDevice* pDevice, - const CPDF_RenderOptions* pOptions) - : m_Status(Ready), - m_pContext(pContext), - m_pDevice(pDevice), - m_pOptions(pOptions), - m_LayerIndex(0), - m_pCurrentLayer(nullptr) {} - -CPDF_ProgressiveRenderer::~CPDF_ProgressiveRenderer() { - if (m_pRenderStatus) - m_pDevice->RestoreState(); -} - -void CPDF_ProgressiveRenderer::Start(IFX_Pause* pPause) { - if (!m_pContext || !m_pDevice || m_Status != Ready) { - m_Status = Failed; - return; - } - m_Status = ToBeContinued; - Continue(pPause); -} - -void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) { - while (m_Status == ToBeContinued) { - if (!m_pCurrentLayer) { - if (m_LayerIndex >= m_pContext->CountLayers()) { - m_Status = Done; - return; - } - m_pCurrentLayer = m_pContext->GetLayer(m_LayerIndex); - m_LastObjectRendered = - m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end(); - m_pRenderStatus.reset(new CPDF_RenderStatus()); - m_pRenderStatus->Initialize( - m_pContext, m_pDevice, NULL, NULL, NULL, NULL, m_pOptions, - m_pCurrentLayer->m_pObjectHolder->m_Transparency, FALSE, NULL); - m_pDevice->SaveState(); - m_ClipRect = CFX_FloatRect(m_pDevice->GetClipBox()); - CFX_Matrix device2object; - device2object.SetReverse(m_pCurrentLayer->m_Matrix); - device2object.TransformRect(m_ClipRect); - } - CPDF_PageObjectList::iterator iter; - CPDF_PageObjectList::iterator iterEnd = - m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end(); - if (m_LastObjectRendered != iterEnd) { - iter = m_LastObjectRendered; - ++iter; - } else { - iter = m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->begin(); - } - int nObjsToGo = kStepLimit; - while (iter != iterEnd) { - CPDF_PageObject* pCurObj = iter->get(); - if (pCurObj && pCurObj->m_Left <= m_ClipRect.right && - pCurObj->m_Right >= m_ClipRect.left && - pCurObj->m_Bottom <= m_ClipRect.top && - pCurObj->m_Top >= m_ClipRect.bottom) { - if (m_pRenderStatus->ContinueSingleObject( - pCurObj, &m_pCurrentLayer->m_Matrix, pPause)) { - return; - } - if (pCurObj->IsImage() && - m_pRenderStatus->m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) { - m_pContext->GetPageCache()->CacheOptimization( - m_pRenderStatus->m_Options.m_dwLimitCacheSize); - } - if (pCurObj->IsForm() || pCurObj->IsShading()) { - nObjsToGo = 0; - } else { - --nObjsToGo; - } - } - m_LastObjectRendered = iter; - if (nObjsToGo == 0) { - if (pPause && pPause->NeedToPauseNow()) - return; - nObjsToGo = kStepLimit; - } - ++iter; - } - if (m_pCurrentLayer->m_pObjectHolder->IsParsed()) { - m_pRenderStatus.reset(); - m_pDevice->RestoreState(); - m_pCurrentLayer = nullptr; - m_LayerIndex++; - if (pPause && pPause->NeedToPauseNow()) { - return; - } - } else { - m_pCurrentLayer->m_pObjectHolder->ContinueParse(pPause); - if (!m_pCurrentLayer->m_pObjectHolder->IsParsed()) - return; - } - } -} - -CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) { - if (!pObj) - return nullptr; - - auto it = m_TransferFuncMap.find(pObj); - if (it != m_TransferFuncMap.end()) { - CPDF_CountedObject* pTransferCounter = it->second; - return pTransferCounter->AddRef(); - } - - std::unique_ptr pFuncs[3]; - FX_BOOL bUniTransfer = TRUE; - FX_BOOL bIdentity = TRUE; - if (CPDF_Array* pArray = pObj->AsArray()) { - bUniTransfer = FALSE; - if (pArray->GetCount() < 3) - return nullptr; - - for (FX_DWORD i = 0; i < 3; ++i) { - pFuncs[2 - i].reset(CPDF_Function::Load(pArray->GetElementValue(i))); - if (!pFuncs[2 - i]) - return nullptr; - } - } else { - pFuncs[0].reset(CPDF_Function::Load(pObj)); - if (!pFuncs[0]) - return nullptr; - } - CPDF_TransferFunc* pTransfer = new CPDF_TransferFunc(m_pPDFDoc); - CPDF_CountedObject* pTransferCounter = - new CPDF_CountedObject(pTransfer); - m_TransferFuncMap[pObj] = pTransferCounter; - static const int kMaxOutputs = 16; - FX_FLOAT output[kMaxOutputs]; - FXSYS_memset(output, 0, sizeof(output)); - FX_FLOAT input; - int noutput; - for (int v = 0; v < 256; ++v) { - input = (FX_FLOAT)v / 255.0f; - if (bUniTransfer) { - if (pFuncs[0] && pFuncs[0]->CountOutputs() <= kMaxOutputs) - pFuncs[0]->Call(&input, 1, output, noutput); - int o = FXSYS_round(output[0] * 255); - if (o != v) - bIdentity = FALSE; - for (int i = 0; i < 3; ++i) { - pTransfer->m_Samples[i * 256 + v] = o; - } - } else { - for (int i = 0; i < 3; ++i) { - if (pFuncs[i] && pFuncs[i]->CountOutputs() <= kMaxOutputs) { - pFuncs[i]->Call(&input, 1, output, noutput); - int o = FXSYS_round(output[0] * 255); - if (o != v) - bIdentity = FALSE; - pTransfer->m_Samples[i * 256 + v] = o; - } else { - pTransfer->m_Samples[i * 256 + v] = v; - } - } - } - } - - pTransfer->m_bIdentity = bIdentity; - return pTransferCounter->AddRef(); -} - -void CPDF_DocRenderData::ReleaseTransferFunc(CPDF_Object* pObj) { - auto it = m_TransferFuncMap.find(pObj); - if (it != m_TransferFuncMap.end()) - it->second->RemoveRef(); -} - -CPDF_DeviceBuffer::CPDF_DeviceBuffer() - : m_pDevice(nullptr), m_pContext(nullptr), m_pObject(nullptr) {} - -CPDF_DeviceBuffer::~CPDF_DeviceBuffer() { -} - -FX_BOOL CPDF_DeviceBuffer::Initialize(CPDF_RenderContext* pContext, - CFX_RenderDevice* pDevice, - FX_RECT* pRect, - const CPDF_PageObject* pObj, - int max_dpi) { - m_pDevice = pDevice; - m_pContext = pContext; - m_Rect = *pRect; - m_pObject = pObj; - m_Matrix.TranslateI(-pRect->left, -pRect->top); -#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ - int horz_size = pDevice->GetDeviceCaps(FXDC_HORZ_SIZE); - int vert_size = pDevice->GetDeviceCaps(FXDC_VERT_SIZE); - if (horz_size && vert_size && max_dpi) { - int dpih = - pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10); - int dpiv = - pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10); - if (dpih > max_dpi) { - m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f); - } - if (dpiv > max_dpi) { - m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv); - } - } -#endif - CFX_Matrix ctm = m_pDevice->GetCTM(); - FX_FLOAT fScaleX = FXSYS_fabs(ctm.a); - FX_FLOAT fScaleY = FXSYS_fabs(ctm.d); - m_Matrix.Concat(fScaleX, 0, 0, fScaleY, 0, 0); - CFX_FloatRect rect(*pRect); - m_Matrix.TransformRect(rect); - FX_RECT bitmap_rect = rect.GetOutterRect(); - m_pBitmap.reset(new CFX_DIBitmap); - m_pBitmap->Create(bitmap_rect.Width(), bitmap_rect.Height(), FXDIB_Argb); - return TRUE; -} -void CPDF_DeviceBuffer::OutputToDevice() { - if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) { - if (m_Matrix.a == 1.0f && m_Matrix.d == 1.0f) { - m_pDevice->SetDIBits(m_pBitmap.get(), m_Rect.left, m_Rect.top); - } else { - m_pDevice->StretchDIBits(m_pBitmap.get(), m_Rect.left, m_Rect.top, - m_Rect.Width(), m_Rect.Height()); - } - } else { - CFX_DIBitmap buffer; - m_pDevice->CreateCompatibleBitmap(&buffer, m_pBitmap->GetWidth(), - m_pBitmap->GetHeight()); - m_pContext->GetBackground(&buffer, m_pObject, NULL, &m_Matrix); - buffer.CompositeBitmap(0, 0, buffer.GetWidth(), buffer.GetHeight(), - m_pBitmap.get(), 0, 0); - m_pDevice->StretchDIBits(&buffer, m_Rect.left, m_Rect.top, m_Rect.Width(), - m_Rect.Height()); - } -} - -CPDF_ScaledRenderBuffer::CPDF_ScaledRenderBuffer() {} - -CPDF_ScaledRenderBuffer::~CPDF_ScaledRenderBuffer() {} - -#define _FPDFAPI_IMAGESIZE_LIMIT_ (30 * 1024 * 1024) -FX_BOOL CPDF_ScaledRenderBuffer::Initialize(CPDF_RenderContext* pContext, - CFX_RenderDevice* pDevice, - const FX_RECT& pRect, - const CPDF_PageObject* pObj, - const CPDF_RenderOptions* pOptions, - int max_dpi) { - m_pDevice = pDevice; - if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) { - return TRUE; - } - m_pContext = pContext; - m_Rect = pRect; - m_pObject = pObj; - m_Matrix.TranslateI(-pRect.left, -pRect.top); - int horz_size = pDevice->GetDeviceCaps(FXDC_HORZ_SIZE); - int vert_size = pDevice->GetDeviceCaps(FXDC_VERT_SIZE); - if (horz_size && vert_size && max_dpi) { - int dpih = - pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10); - int dpiv = - pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10); - if (dpih > max_dpi) { - m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f); - } - if (dpiv > max_dpi) { - m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv); - } - } - m_pBitmapDevice.reset(new CFX_FxgeDevice); - FXDIB_Format dibFormat = FXDIB_Rgb; - int32_t bpp = 24; - if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_ALPHA_OUTPUT) { - dibFormat = FXDIB_Argb; - bpp = 32; - } - while (1) { - CFX_FloatRect rect(pRect); - m_Matrix.TransformRect(rect); - FX_RECT bitmap_rect = rect.GetOutterRect(); - int32_t iWidth = bitmap_rect.Width(); - int32_t iHeight = bitmap_rect.Height(); - int32_t iPitch = (iWidth * bpp + 31) / 32 * 4; - if (iWidth * iHeight < 1) - return FALSE; - - if (iPitch * iHeight <= _FPDFAPI_IMAGESIZE_LIMIT_ && - m_pBitmapDevice->Create(iWidth, iHeight, dibFormat)) { - break; - } - m_Matrix.Scale(0.5f, 0.5f); - } - m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions, - &m_Matrix); - return TRUE; -} -void CPDF_ScaledRenderBuffer::OutputToDevice() { - if (m_pBitmapDevice) { - m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left, - m_Rect.top, m_Rect.Width(), m_Rect.Height()); - } -} -FX_BOOL IPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) { - const CPDF_ContentMarkData* pData = pObj->m_ContentMark; - int nItems = pData->CountItems(); - for (int i = 0; i < nItems; i++) { - const CPDF_ContentMarkItem& item = pData->GetItem(i); - if (item.GetName() == "OC" && - item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict && - !CheckOCGVisible(item.GetParam())) { - return FALSE; - } - } - return TRUE; -} diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp deleted file mode 100644 index 9636d1b23a..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp +++ /dev/null @@ -1,334 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_render/render_int.h" - -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -struct CACHEINFO { - FX_DWORD time; - CPDF_Stream* pStream; -}; - -extern "C" { -static int compare(const void* data1, const void* data2) { - return ((CACHEINFO*)data1)->time - ((CACHEINFO*)data2)->time; -} -} // extern "C" - -CPDF_PageRenderCache::~CPDF_PageRenderCache() { - for (const auto& it : m_ImageCache) - delete it.second; -} -void CPDF_PageRenderCache::CacheOptimization(int32_t dwLimitCacheSize) { - if (m_nCacheSize <= (FX_DWORD)dwLimitCacheSize) - return; - - size_t nCount = m_ImageCache.size(); - CACHEINFO* pCACHEINFO = FX_Alloc(CACHEINFO, nCount); - size_t i = 0; - for (const auto& it : m_ImageCache) { - pCACHEINFO[i].time = it.second->GetTimeCount(); - pCACHEINFO[i++].pStream = it.second->GetStream(); - } - FXSYS_qsort(pCACHEINFO, nCount, sizeof(CACHEINFO), compare); - FX_DWORD nTimeCount = m_nTimeCount; - - // Check if time value is about to roll over and reset all entries. - // The comparision is legal because FX_DWORD is an unsigned type. - if (nTimeCount + 1 < nTimeCount) { - for (i = 0; i < nCount; i++) - m_ImageCache[pCACHEINFO[i].pStream]->m_dwTimeCount = i; - m_nTimeCount = nCount; - } - - i = 0; - while (i + 15 < nCount) - ClearImageCacheEntry(pCACHEINFO[i++].pStream); - - while (i < nCount && m_nCacheSize > (FX_DWORD)dwLimitCacheSize) - ClearImageCacheEntry(pCACHEINFO[i++].pStream); - - FX_Free(pCACHEINFO); -} -void CPDF_PageRenderCache::ClearImageCacheEntry(CPDF_Stream* pStream) { - auto it = m_ImageCache.find(pStream); - if (it == m_ImageCache.end()) - return; - - m_nCacheSize -= it->second->EstimateSize(); - delete it->second; - m_ImageCache.erase(it); -} -FX_DWORD CPDF_PageRenderCache::EstimateSize() { - FX_DWORD dwSize = 0; - for (const auto& it : m_ImageCache) - dwSize += it.second->EstimateSize(); - - m_nCacheSize = dwSize; - return dwSize; -} -void CPDF_PageRenderCache::GetCachedBitmap(CPDF_Stream* pStream, - CFX_DIBSource*& pBitmap, - CFX_DIBSource*& pMask, - FX_DWORD& MatteColor, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask, - CPDF_RenderStatus* pRenderStatus, - int32_t downsampleWidth, - int32_t downsampleHeight) { - CPDF_ImageCacheEntry* pEntry; - const auto it = m_ImageCache.find(pStream); - FX_BOOL bFound = it != m_ImageCache.end(); - if (bFound) - pEntry = it->second; - else - pEntry = new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream); - - m_nTimeCount++; - FX_BOOL bAlreadyCached = pEntry->GetCachedBitmap( - pBitmap, pMask, MatteColor, m_pPage->m_pPageResources, bStdCS, - GroupFamily, bLoadMask, pRenderStatus, downsampleWidth, downsampleHeight); - - if (!bFound) - m_ImageCache[pStream] = pEntry; - - if (!bAlreadyCached) - m_nCacheSize += pEntry->EstimateSize(); -} -FX_BOOL CPDF_PageRenderCache::StartGetCachedBitmap( - CPDF_Stream* pStream, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask, - CPDF_RenderStatus* pRenderStatus, - int32_t downsampleWidth, - int32_t downsampleHeight) { - const auto it = m_ImageCache.find(pStream); - m_bCurFindCache = it != m_ImageCache.end(); - if (m_bCurFindCache) { - m_pCurImageCacheEntry = it->second; - } else { - m_pCurImageCacheEntry = - new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream); - } - int ret = m_pCurImageCacheEntry->StartGetCachedBitmap( - pRenderStatus->m_pFormResource, m_pPage->m_pPageResources, bStdCS, - GroupFamily, bLoadMask, pRenderStatus, downsampleWidth, downsampleHeight); - if (ret == 2) - return TRUE; - - m_nTimeCount++; - if (!m_bCurFindCache) - m_ImageCache[pStream] = m_pCurImageCacheEntry; - - if (!ret) - m_nCacheSize += m_pCurImageCacheEntry->EstimateSize(); - - return FALSE; -} -FX_BOOL CPDF_PageRenderCache::Continue(IFX_Pause* pPause) { - int ret = m_pCurImageCacheEntry->Continue(pPause); - if (ret == 2) - return TRUE; - m_nTimeCount++; - if (!m_bCurFindCache) - m_ImageCache[m_pCurImageCacheEntry->GetStream()] = m_pCurImageCacheEntry; - if (!ret) - m_nCacheSize += m_pCurImageCacheEntry->EstimateSize(); - return FALSE; -} -void CPDF_PageRenderCache::ResetBitmap(CPDF_Stream* pStream, - const CFX_DIBitmap* pBitmap) { - CPDF_ImageCacheEntry* pEntry; - const auto it = m_ImageCache.find(pStream); - if (it == m_ImageCache.end()) { - if (!pBitmap) - return; - pEntry = new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream); - m_ImageCache[pStream] = pEntry; - } else { - pEntry = it->second; - } - m_nCacheSize -= pEntry->EstimateSize(); - pEntry->Reset(pBitmap); - m_nCacheSize += pEntry->EstimateSize(); -} -CPDF_ImageCacheEntry::CPDF_ImageCacheEntry(CPDF_Document* pDoc, - CPDF_Stream* pStream) - : m_dwTimeCount(0), - m_pCurBitmap(NULL), - m_pCurMask(NULL), - m_MatteColor(0), - m_pRenderStatus(NULL), - m_pDocument(pDoc), - m_pStream(pStream), - m_pCachedBitmap(NULL), - m_pCachedMask(NULL), - m_dwCacheSize(0) {} -CPDF_ImageCacheEntry::~CPDF_ImageCacheEntry() { - delete m_pCachedBitmap; - delete m_pCachedMask; -} -void CPDF_ImageCacheEntry::Reset(const CFX_DIBitmap* pBitmap) { - delete m_pCachedBitmap; - m_pCachedBitmap = NULL; - if (pBitmap) { - m_pCachedBitmap = pBitmap->Clone(); - } - CalcSize(); -} -void CPDF_PageRenderCache::ClearImageData() { - for (const auto& it : m_ImageCache) - it.second->ClearImageData(); -} -void CPDF_ImageCacheEntry::ClearImageData() { - if (m_pCachedBitmap && !m_pCachedBitmap->GetBuffer()) { - ((CPDF_DIBSource*)m_pCachedBitmap)->ClearImageData(); - } -} -static FX_DWORD FPDF_ImageCache_EstimateImageSize(const CFX_DIBSource* pDIB) { - return pDIB && pDIB->GetBuffer() - ? (FX_DWORD)pDIB->GetHeight() * pDIB->GetPitch() + - (FX_DWORD)pDIB->GetPaletteSize() * 4 - : 0; -} -FX_BOOL CPDF_ImageCacheEntry::GetCachedBitmap(CFX_DIBSource*& pBitmap, - CFX_DIBSource*& pMask, - FX_DWORD& MatteColor, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask, - CPDF_RenderStatus* pRenderStatus, - int32_t downsampleWidth, - int32_t downsampleHeight) { - if (m_pCachedBitmap) { - pBitmap = m_pCachedBitmap; - pMask = m_pCachedMask; - MatteColor = m_MatteColor; - return TRUE; - } - if (!pRenderStatus) { - return FALSE; - } - CPDF_RenderContext* pContext = pRenderStatus->GetContext(); - CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache(); - m_dwTimeCount = pPageRenderCache->GetTimeCount(); - CPDF_DIBSource* pSrc = new CPDF_DIBSource; - CPDF_DIBSource* pMaskSrc = NULL; - if (!pSrc->Load(m_pDocument, m_pStream, &pMaskSrc, &MatteColor, - pRenderStatus->m_pFormResource, pPageResources, bStdCS, - GroupFamily, bLoadMask)) { - delete pSrc; - pBitmap = NULL; - return FALSE; - } - m_MatteColor = MatteColor; - if (pSrc->GetPitch() * pSrc->GetHeight() < FPDF_HUGE_IMAGE_SIZE) { - m_pCachedBitmap = pSrc->Clone(); - delete pSrc; - } else { - m_pCachedBitmap = pSrc; - } - if (pMaskSrc) { - m_pCachedMask = pMaskSrc->Clone(); - delete pMaskSrc; - } - - pBitmap = m_pCachedBitmap; - pMask = m_pCachedMask; - CalcSize(); - return FALSE; -} -CFX_DIBSource* CPDF_ImageCacheEntry::DetachBitmap() { - CFX_DIBSource* pDIBSource = m_pCurBitmap; - m_pCurBitmap = NULL; - return pDIBSource; -} -CFX_DIBSource* CPDF_ImageCacheEntry::DetachMask() { - CFX_DIBSource* pDIBSource = m_pCurMask; - m_pCurMask = NULL; - return pDIBSource; -} -int CPDF_ImageCacheEntry::StartGetCachedBitmap(CPDF_Dictionary* pFormResources, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask, - CPDF_RenderStatus* pRenderStatus, - int32_t downsampleWidth, - int32_t downsampleHeight) { - if (m_pCachedBitmap) { - m_pCurBitmap = m_pCachedBitmap; - m_pCurMask = m_pCachedMask; - return 1; - } - if (!pRenderStatus) { - return 0; - } - m_pRenderStatus = pRenderStatus; - m_pCurBitmap = new CPDF_DIBSource; - int ret = - ((CPDF_DIBSource*)m_pCurBitmap) - ->StartLoadDIBSource(m_pDocument, m_pStream, TRUE, pFormResources, - pPageResources, bStdCS, GroupFamily, bLoadMask); - if (ret == 2) { - return ret; - } - if (!ret) { - delete m_pCurBitmap; - m_pCurBitmap = NULL; - return 0; - } - ContinueGetCachedBitmap(); - return 0; -} -void CPDF_ImageCacheEntry::ContinueGetCachedBitmap() { - m_MatteColor = ((CPDF_DIBSource*)m_pCurBitmap)->GetMatteColor(); - m_pCurMask = ((CPDF_DIBSource*)m_pCurBitmap)->DetachMask(); - CPDF_RenderContext* pContext = m_pRenderStatus->GetContext(); - CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache(); - m_dwTimeCount = pPageRenderCache->GetTimeCount(); - if (m_pCurBitmap->GetPitch() * m_pCurBitmap->GetHeight() < - FPDF_HUGE_IMAGE_SIZE) { - m_pCachedBitmap = m_pCurBitmap->Clone(); - delete m_pCurBitmap; - m_pCurBitmap = NULL; - } else { - m_pCachedBitmap = m_pCurBitmap; - } - if (m_pCurMask) { - m_pCachedMask = m_pCurMask->Clone(); - delete m_pCurMask; - m_pCurMask = NULL; - } - m_pCurBitmap = m_pCachedBitmap; - m_pCurMask = m_pCachedMask; - CalcSize(); -} -int CPDF_ImageCacheEntry::Continue(IFX_Pause* pPause) { - int ret = ((CPDF_DIBSource*)m_pCurBitmap)->ContinueLoadDIBSource(pPause); - if (ret == 2) { - return ret; - } - if (!ret) { - delete m_pCurBitmap; - m_pCurBitmap = NULL; - return 0; - } - ContinueGetCachedBitmap(); - return 0; -} -void CPDF_ImageCacheEntry::CalcSize() { - m_dwCacheSize = FPDF_ImageCache_EstimateImageSize(m_pCachedBitmap) + - FPDF_ImageCache_EstimateImageSize(m_pCachedMask); -} diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp deleted file mode 100644 index 237be06c82..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp +++ /dev/null @@ -1,999 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_render/render_int.h" - -#include -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -FX_BOOL CPDF_RenderStatus::ProcessImage(const CPDF_ImageObject* pImageObj, - const CFX_Matrix* pObj2Device) { - CPDF_ImageRenderer render; - if (render.Start(this, pImageObj, pObj2Device, m_bStdCS, m_curBlend)) { - render.Continue(NULL); - } - return render.m_Result; -} -void CPDF_RenderStatus::CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, - int left, - int top, - FX_ARGB mask_argb, - int bitmap_alpha, - int blend_mode, - int Transparency) { - if (!pDIBitmap) { - return; - } - FX_BOOL bIsolated = Transparency & PDFTRANS_ISOLATED; - FX_BOOL bGroup = Transparency & PDFTRANS_GROUP; - if (blend_mode == FXDIB_BLEND_NORMAL) { - if (!pDIBitmap->IsAlphaMask()) { - if (bitmap_alpha < 255) { - pDIBitmap->MultiplyAlpha(bitmap_alpha); - } - if (m_pDevice->SetDIBits(pDIBitmap, left, top)) { - return; - } - } else { - FX_DWORD fill_argb = m_Options.TranslateColor(mask_argb); - if (bitmap_alpha < 255) { - ((uint8_t*)&fill_argb)[3] = - ((uint8_t*)&fill_argb)[3] * bitmap_alpha / 255; - } - if (m_pDevice->SetBitMask(pDIBitmap, left, top, fill_argb)) { - return; - } - } - } - FX_BOOL bBackAlphaRequired = blend_mode && bIsolated && !m_bDropObjects; - FX_BOOL bGetBackGround = - ((m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT)) || - (!(m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT) && - (m_pDevice->GetRenderCaps() & FXRC_GET_BITS) && !bBackAlphaRequired); - if (bGetBackGround) { - if (bIsolated || !bGroup) { - if (pDIBitmap->IsAlphaMask()) { - return; - } - m_pDevice->SetDIBits(pDIBitmap, left, top, blend_mode); - } else { - FX_RECT rect(left, top, left + pDIBitmap->GetWidth(), - top + pDIBitmap->GetHeight()); - rect.Intersect(m_pDevice->GetClipBox()); - CFX_DIBitmap* pClone = NULL; - FX_BOOL bClone = FALSE; - if (m_pDevice->GetBackDrop() && m_pDevice->GetBitmap()) { - bClone = TRUE; - pClone = m_pDevice->GetBackDrop()->Clone(&rect); - CFX_DIBitmap* pForeBitmap = m_pDevice->GetBitmap(); - pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(), - pForeBitmap, rect.left, rect.top); - left = left >= 0 ? 0 : left; - top = top >= 0 ? 0 : top; - if (!pDIBitmap->IsAlphaMask()) - pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(), - pDIBitmap, left, top, blend_mode); - else - pClone->CompositeMask(0, 0, pClone->GetWidth(), pClone->GetHeight(), - pDIBitmap, mask_argb, left, top, blend_mode); - } else { - pClone = pDIBitmap; - } - if (m_pDevice->GetBackDrop()) { - m_pDevice->SetDIBits(pClone, rect.left, rect.top); - } else { - if (pDIBitmap->IsAlphaMask()) { - return; - } - m_pDevice->SetDIBits(pDIBitmap, rect.left, rect.top, blend_mode); - } - if (bClone) { - delete pClone; - } - } - return; - } - int back_left, back_top; - FX_RECT rect(left, top, left + pDIBitmap->GetWidth(), - top + pDIBitmap->GetHeight()); - std::unique_ptr pBackdrop( - GetBackdrop(m_pCurObj, rect, back_left, back_top, - blend_mode > FXDIB_BLEND_NORMAL && bIsolated)); - if (!pBackdrop) - return; - - if (!pDIBitmap->IsAlphaMask()) { - pBackdrop->CompositeBitmap(left - back_left, top - back_top, - pDIBitmap->GetWidth(), pDIBitmap->GetHeight(), - pDIBitmap, 0, 0, blend_mode); - } else { - pBackdrop->CompositeMask(left - back_left, top - back_top, - pDIBitmap->GetWidth(), pDIBitmap->GetHeight(), - pDIBitmap, mask_argb, 0, 0, blend_mode); - } - - std::unique_ptr pBackdrop1(new CFX_DIBitmap); - pBackdrop1->Create(pBackdrop->GetWidth(), pBackdrop->GetHeight(), - FXDIB_Rgb32); - pBackdrop1->Clear((FX_DWORD)-1); - pBackdrop1->CompositeBitmap(0, 0, pBackdrop->GetWidth(), - pBackdrop->GetHeight(), pBackdrop.get(), 0, 0); - pBackdrop = std::move(pBackdrop1); - m_pDevice->SetDIBits(pBackdrop.get(), back_left, back_top); -} - -CPDF_TransferFunc::CPDF_TransferFunc(CPDF_Document* pDoc) : m_pPDFDoc(pDoc) {} - -FX_COLORREF CPDF_TransferFunc::TranslateColor(FX_COLORREF rgb) const { - return FXSYS_RGB(m_Samples[FXSYS_GetRValue(rgb)], - m_Samples[256 + FXSYS_GetGValue(rgb)], - m_Samples[512 + FXSYS_GetBValue(rgb)]); -} - -CFX_DIBSource* CPDF_TransferFunc::TranslateImage(const CFX_DIBSource* pSrc, - FX_BOOL bAutoDropSrc) { - CPDF_DIBTransferFunc* pDest = new CPDF_DIBTransferFunc(this); - pDest->LoadSrc(pSrc, bAutoDropSrc); - return pDest; -} - -CPDF_DIBTransferFunc::~CPDF_DIBTransferFunc() { -} - -FXDIB_Format CPDF_DIBTransferFunc::GetDestFormat() { - if (m_pSrc->IsAlphaMask()) { - return FXDIB_8bppMask; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - return (m_pSrc->HasAlpha()) ? FXDIB_Argb : FXDIB_Rgb32; -#else - return (m_pSrc->HasAlpha()) ? FXDIB_Argb : FXDIB_Rgb; -#endif -} -CPDF_DIBTransferFunc::CPDF_DIBTransferFunc( - const CPDF_TransferFunc* pTransferFunc) { - m_RampR = pTransferFunc->m_Samples; - m_RampG = &pTransferFunc->m_Samples[256]; - m_RampB = &pTransferFunc->m_Samples[512]; -} -void CPDF_DIBTransferFunc::TranslateScanline(uint8_t* dest_buf, - const uint8_t* src_buf) const { - int i; - FX_BOOL bSkip = FALSE; - switch (m_pSrc->GetFormat()) { - case FXDIB_1bppRgb: { - int r0 = m_RampR[0], g0 = m_RampG[0], b0 = m_RampB[0]; - int r1 = m_RampR[255], g1 = m_RampG[255], b1 = m_RampB[255]; - for (i = 0; i < m_Width; i++) { - if (src_buf[i / 8] & (1 << (7 - i % 8))) { - *dest_buf++ = b1; - *dest_buf++ = g1; - *dest_buf++ = r1; - } else { - *dest_buf++ = b0; - *dest_buf++ = g0; - *dest_buf++ = r0; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - dest_buf++; -#endif - } - break; - } - case FXDIB_1bppMask: { - int m0 = m_RampR[0], m1 = m_RampR[255]; - for (i = 0; i < m_Width; i++) { - if (src_buf[i / 8] & (1 << (7 - i % 8))) { - *dest_buf++ = m1; - } else { - *dest_buf++ = m0; - } - } - break; - } - case FXDIB_8bppRgb: { - FX_ARGB* pPal = m_pSrc->GetPalette(); - for (i = 0; i < m_Width; i++) { - if (pPal) { - FX_ARGB src_argb = pPal[*src_buf]; - *dest_buf++ = m_RampB[FXARGB_R(src_argb)]; - *dest_buf++ = m_RampG[FXARGB_G(src_argb)]; - *dest_buf++ = m_RampR[FXARGB_B(src_argb)]; - } else { - FX_DWORD src_byte = *src_buf; - *dest_buf++ = m_RampB[src_byte]; - *dest_buf++ = m_RampG[src_byte]; - *dest_buf++ = m_RampR[src_byte]; - } - src_buf++; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - dest_buf++; -#endif - } - break; - } - case FXDIB_8bppMask: - for (i = 0; i < m_Width; i++) { - *dest_buf++ = m_RampR[*(src_buf++)]; - } - break; - case FXDIB_Rgb: - for (i = 0; i < m_Width; i++) { - *dest_buf++ = m_RampB[*(src_buf++)]; - *dest_buf++ = m_RampG[*(src_buf++)]; - *dest_buf++ = m_RampR[*(src_buf++)]; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - dest_buf++; -#endif - } - break; - case FXDIB_Rgb32: - bSkip = TRUE; - case FXDIB_Argb: - for (i = 0; i < m_Width; i++) { - *dest_buf++ = m_RampB[*(src_buf++)]; - *dest_buf++ = m_RampG[*(src_buf++)]; - *dest_buf++ = m_RampR[*(src_buf++)]; - if (!bSkip) { - *dest_buf++ = *src_buf; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - } else { - dest_buf++; -#endif - } - src_buf++; - } - break; - default: - break; - } -} -void CPDF_DIBTransferFunc::TranslateDownSamples(uint8_t* dest_buf, - const uint8_t* src_buf, - int pixels, - int Bpp) const { - if (Bpp == 8) { - for (int i = 0; i < pixels; i++) { - *dest_buf++ = m_RampR[*(src_buf++)]; - } - } else if (Bpp == 24) { - for (int i = 0; i < pixels; i++) { - *dest_buf++ = m_RampB[*(src_buf++)]; - *dest_buf++ = m_RampG[*(src_buf++)]; - *dest_buf++ = m_RampR[*(src_buf++)]; - } - } else { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (!m_pSrc->HasAlpha()) { - for (int i = 0; i < pixels; i++) { - *dest_buf++ = m_RampB[*(src_buf++)]; - *dest_buf++ = m_RampG[*(src_buf++)]; - *dest_buf++ = m_RampR[*(src_buf++)]; - dest_buf++; - src_buf++; - } - } else { -#endif - for (int i = 0; i < pixels; i++) { - *dest_buf++ = m_RampB[*(src_buf++)]; - *dest_buf++ = m_RampG[*(src_buf++)]; - *dest_buf++ = m_RampR[*(src_buf++)]; - *dest_buf++ = *(src_buf++); - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - } -#endif - } -} -CPDF_ImageRenderer::CPDF_ImageRenderer() { - m_pRenderStatus = NULL; - m_pImageObject = NULL; - m_Result = TRUE; - m_Status = 0; - m_pTransformer = NULL; - m_DeviceHandle = NULL; - m_LoadHandle = NULL; - m_pClone = NULL; - m_bStdCS = FALSE; - m_bPatternColor = FALSE; - m_BlendType = FXDIB_BLEND_NORMAL; - m_pPattern = NULL; - m_pObj2Device = NULL; -} -CPDF_ImageRenderer::~CPDF_ImageRenderer() { - delete m_pTransformer; - if (m_DeviceHandle) { - m_pRenderStatus->m_pDevice->CancelDIBits(m_DeviceHandle); - } - delete m_LoadHandle; - delete m_pClone; -} -FX_BOOL CPDF_ImageRenderer::StartLoadDIBSource() { - CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect(); - FX_RECT image_rect = image_rect_f.GetOutterRect(); - int dest_width = image_rect.Width(); - int dest_height = image_rect.Height(); - if (m_ImageMatrix.a < 0) { - dest_width = -dest_width; - } - if (m_ImageMatrix.d > 0) { - dest_height = -dest_height; - } - if (m_Loader.Start(m_pImageObject, - m_pRenderStatus->m_pContext->GetPageCache(), m_LoadHandle, - m_bStdCS, m_pRenderStatus->m_GroupFamily, - m_pRenderStatus->m_bLoadMask, m_pRenderStatus, dest_width, - dest_height)) { - if (m_LoadHandle) { - m_Status = 4; - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_ImageRenderer::StartRenderDIBSource() { - if (!m_Loader.m_pBitmap) { - return FALSE; - } - m_BitmapAlpha = 255; - const CPDF_GeneralStateData* pGeneralState = m_pImageObject->m_GeneralState; - if (pGeneralState) { - m_BitmapAlpha = FXSYS_round(pGeneralState->m_FillAlpha * 255); - } - m_pDIBSource = m_Loader.m_pBitmap; - if (m_pRenderStatus->m_Options.m_ColorMode == RENDER_COLOR_ALPHA && - !m_Loader.m_pMask) { - return StartBitmapAlpha(); - } - if (pGeneralState && pGeneralState->m_pTR) { - if (!pGeneralState->m_pTransferFunc) { - ((CPDF_GeneralStateData*)pGeneralState)->m_pTransferFunc = - m_pRenderStatus->GetTransferFunc(pGeneralState->m_pTR); - } - if (pGeneralState->m_pTransferFunc && - !pGeneralState->m_pTransferFunc->m_bIdentity) { - m_pDIBSource = m_Loader.m_pBitmap = - pGeneralState->m_pTransferFunc->TranslateImage(m_Loader.m_pBitmap, - !m_Loader.m_bCached); - if (m_Loader.m_bCached && m_Loader.m_pMask) { - m_Loader.m_pMask = m_Loader.m_pMask->Clone(); - } - m_Loader.m_bCached = FALSE; - } - } - m_FillArgb = 0; - m_bPatternColor = FALSE; - m_pPattern = NULL; - if (m_pDIBSource->IsAlphaMask()) { - CPDF_Color* pColor = m_pImageObject->m_ColorState.GetFillColor(); - if (pColor && pColor->IsPattern()) { - m_pPattern = pColor->GetPattern(); - if (m_pPattern) { - m_bPatternColor = TRUE; - } - } - m_FillArgb = m_pRenderStatus->GetFillArgb(m_pImageObject); - } else if (m_pRenderStatus->m_Options.m_ColorMode == RENDER_COLOR_GRAY) { - m_pClone = m_pDIBSource->Clone(); - m_pClone->ConvertColorScale(m_pRenderStatus->m_Options.m_BackColor, - m_pRenderStatus->m_Options.m_ForeColor); - m_pDIBSource = m_pClone; - } - m_Flags = 0; - if (m_pRenderStatus->m_Options.m_Flags & RENDER_FORCE_DOWNSAMPLE) { - m_Flags |= RENDER_FORCE_DOWNSAMPLE; - } else if (m_pRenderStatus->m_Options.m_Flags & RENDER_FORCE_HALFTONE) { - m_Flags |= RENDER_FORCE_HALFTONE; - } - if (m_pRenderStatus->m_pDevice->GetDeviceClass() != FXDC_DISPLAY) { - CPDF_Object* pFilters = - m_pImageObject->m_pImage->GetStream()->GetDict()->GetElementValue( - "Filter"); - if (pFilters) { - if (pFilters->IsName()) { - CFX_ByteStringC bsDecodeType = pFilters->GetConstString(); - if (bsDecodeType == "DCTDecode" || bsDecodeType == "JPXDecode") { - m_Flags |= FXRENDER_IMAGE_LOSSY; - } - } else if (CPDF_Array* pArray = pFilters->AsArray()) { - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - CFX_ByteStringC bsDecodeType = pArray->GetConstStringAt(i); - if (bsDecodeType == "DCTDecode" || bsDecodeType == "JPXDecode") { - m_Flags |= FXRENDER_IMAGE_LOSSY; - break; - } - } - } - } - } - if (m_pRenderStatus->m_Options.m_Flags & RENDER_NOIMAGESMOOTH) { - m_Flags |= FXDIB_NOSMOOTH; - } else if (m_pImageObject->m_pImage->IsInterpol()) { - m_Flags |= FXDIB_INTERPOL; - } - if (m_Loader.m_pMask) { - return DrawMaskedImage(); - } - if (m_bPatternColor) { - return DrawPatternImage(m_pObj2Device); - } - if (m_BitmapAlpha == 255 && pGeneralState && pGeneralState->m_FillOP && - pGeneralState->m_OPMode == 0 && - pGeneralState->m_BlendType == FXDIB_BLEND_NORMAL && - pGeneralState->m_StrokeAlpha == 1 && pGeneralState->m_FillAlpha == 1) { - CPDF_Document* pDocument = NULL; - CPDF_Page* pPage = NULL; - if (m_pRenderStatus->m_pContext->GetPageCache()) { - pPage = m_pRenderStatus->m_pContext->GetPageCache()->GetPage(); - pDocument = pPage->m_pDocument; - } else { - pDocument = m_pImageObject->m_pImage->GetDocument(); - } - CPDF_Dictionary* pPageResources = pPage ? pPage->m_pPageResources : NULL; - CPDF_Object* pCSObj = - m_pImageObject->m_pImage->GetStream()->GetDict()->GetElementValue( - "ColorSpace"); - CPDF_ColorSpace* pColorSpace = - pDocument->LoadColorSpace(pCSObj, pPageResources); - if (pColorSpace) { - int format = pColorSpace->GetFamily(); - if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION || - format == PDFCS_DEVICEN) { - m_BlendType = FXDIB_BLEND_DARKEN; - } - pDocument->GetPageData()->ReleaseColorSpace(pCSObj); - } - } - return StartDIBSource(); -} -FX_BOOL CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus, - const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStdCS, - int blendType) { - m_pRenderStatus = pStatus; - m_bStdCS = bStdCS; - m_pImageObject = pObj->AsImage(); - m_BlendType = blendType; - m_pObj2Device = pObj2Device; - CPDF_Dictionary* pOC = m_pImageObject->m_pImage->GetOC(); - if (pOC && m_pRenderStatus->m_Options.m_pOCContext && - !m_pRenderStatus->m_Options.m_pOCContext->CheckOCGVisible(pOC)) { - return FALSE; - } - m_ImageMatrix = m_pImageObject->m_Matrix; - m_ImageMatrix.Concat(*pObj2Device); - if (StartLoadDIBSource()) { - return TRUE; - } - return StartRenderDIBSource(); -} -FX_BOOL CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus, - const CFX_DIBSource* pDIBSource, - FX_ARGB bitmap_argb, - int bitmap_alpha, - const CFX_Matrix* pImage2Device, - FX_DWORD flags, - FX_BOOL bStdCS, - int blendType) { - m_pRenderStatus = pStatus; - m_pDIBSource = pDIBSource; - m_FillArgb = bitmap_argb; - m_BitmapAlpha = bitmap_alpha; - m_ImageMatrix = *pImage2Device; - m_Flags = flags; - m_bStdCS = bStdCS; - m_BlendType = blendType; - return StartDIBSource(); -} -FX_BOOL CPDF_ImageRenderer::DrawPatternImage(const CFX_Matrix* pObj2Device) { - if (m_pRenderStatus->m_bPrint && - !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { - m_Result = FALSE; - return FALSE; - } - FX_RECT rect = m_ImageMatrix.GetUnitRect().GetOutterRect(); - rect.Intersect(m_pRenderStatus->m_pDevice->GetClipBox()); - if (rect.IsEmpty()) { - return FALSE; - } - CFX_Matrix new_matrix = m_ImageMatrix; - new_matrix.TranslateI(-rect.left, -rect.top); - int width = rect.Width(); - int height = rect.Height(); - CFX_FxgeDevice bitmap_device1; - if (!bitmap_device1.Create(rect.Width(), rect.Height(), FXDIB_Rgb32)) { - return TRUE; - } - bitmap_device1.GetBitmap()->Clear(0xffffff); - { - CPDF_RenderStatus bitmap_render; - bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, NULL, - NULL, NULL, NULL, &m_pRenderStatus->m_Options, 0, - m_pRenderStatus->m_bDropObjects, NULL, TRUE); - CFX_Matrix patternDevice = *pObj2Device; - patternDevice.Translate((FX_FLOAT)-rect.left, (FX_FLOAT)-rect.top); - if (m_pPattern->m_PatternType == CPDF_Pattern::TILING) { - bitmap_render.DrawTilingPattern( - static_cast(m_pPattern), m_pImageObject, - &patternDevice, FALSE); - } else { - bitmap_render.DrawShadingPattern( - static_cast(m_pPattern), m_pImageObject, - &patternDevice, FALSE); - } - } - { - CFX_FxgeDevice bitmap_device2; - if (!bitmap_device2.Create(rect.Width(), rect.Height(), FXDIB_8bppRgb)) { - return TRUE; - } - bitmap_device2.GetBitmap()->Clear(0); - CPDF_RenderStatus bitmap_render; - bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, NULL, - NULL, NULL, NULL, NULL, 0, - m_pRenderStatus->m_bDropObjects, NULL, TRUE); - CPDF_ImageRenderer image_render; - if (image_render.Start(&bitmap_render, m_pDIBSource, 0xffffffff, 255, - &new_matrix, m_Flags, TRUE)) { - image_render.Continue(NULL); - } - if (m_Loader.m_MatteColor != 0xffffffff) { - int matte_r = FXARGB_R(m_Loader.m_MatteColor); - int matte_g = FXARGB_G(m_Loader.m_MatteColor); - int matte_b = FXARGB_B(m_Loader.m_MatteColor); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = - (uint8_t*)bitmap_device1.GetBitmap()->GetScanline(row); - const uint8_t* mask_scan = bitmap_device2.GetBitmap()->GetScanline(row); - for (int col = 0; col < width; col++) { - int alpha = *mask_scan++; - if (alpha) { - int orig = (*dest_scan - matte_b) * 255 / alpha + matte_b; - if (orig < 0) { - orig = 0; - } else if (orig > 255) { - orig = 255; - } - *dest_scan++ = orig; - orig = (*dest_scan - matte_g) * 255 / alpha + matte_g; - if (orig < 0) { - orig = 0; - } else if (orig > 255) { - orig = 255; - } - *dest_scan++ = orig; - orig = (*dest_scan - matte_r) * 255 / alpha + matte_r; - if (orig < 0) { - orig = 0; - } else if (orig > 255) { - orig = 255; - } - *dest_scan++ = orig; - dest_scan++; - } else { - dest_scan += 4; - } - } - } - } - bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask); - bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap()); - bitmap_device1.GetBitmap()->MultiplyAlpha(255); - } - m_pRenderStatus->m_pDevice->SetDIBits(bitmap_device1.GetBitmap(), rect.left, - rect.top, m_BlendType); - return FALSE; -} -FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() { - if (m_pRenderStatus->m_bPrint && - !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { - m_Result = FALSE; - return FALSE; - } - FX_RECT rect = m_ImageMatrix.GetUnitRect().GetOutterRect(); - rect.Intersect(m_pRenderStatus->m_pDevice->GetClipBox()); - if (rect.IsEmpty()) { - return FALSE; - } - CFX_Matrix new_matrix = m_ImageMatrix; - new_matrix.TranslateI(-rect.left, -rect.top); - int width = rect.Width(); - int height = rect.Height(); - CFX_FxgeDevice bitmap_device1; - if (!bitmap_device1.Create(width, height, FXDIB_Rgb32)) { - return TRUE; - } - bitmap_device1.GetBitmap()->Clear(0xffffff); - { - CPDF_RenderStatus bitmap_render; - bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, NULL, - NULL, NULL, NULL, NULL, 0, - m_pRenderStatus->m_bDropObjects, NULL, TRUE); - CPDF_ImageRenderer image_render; - if (image_render.Start(&bitmap_render, m_pDIBSource, 0, 255, &new_matrix, - m_Flags, TRUE)) { - image_render.Continue(NULL); - } - } - { - CFX_FxgeDevice bitmap_device2; - if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb)) { - return TRUE; - } - bitmap_device2.GetBitmap()->Clear(0); - CPDF_RenderStatus bitmap_render; - bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, NULL, - NULL, NULL, NULL, NULL, 0, - m_pRenderStatus->m_bDropObjects, NULL, TRUE); - CPDF_ImageRenderer image_render; - if (image_render.Start(&bitmap_render, m_Loader.m_pMask, 0xffffffff, 255, - &new_matrix, m_Flags, TRUE)) { - image_render.Continue(NULL); - } - if (m_Loader.m_MatteColor != 0xffffffff) { - int matte_r = FXARGB_R(m_Loader.m_MatteColor); - int matte_g = FXARGB_G(m_Loader.m_MatteColor); - int matte_b = FXARGB_B(m_Loader.m_MatteColor); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = - (uint8_t*)bitmap_device1.GetBitmap()->GetScanline(row); - const uint8_t* mask_scan = bitmap_device2.GetBitmap()->GetScanline(row); - for (int col = 0; col < width; col++) { - int alpha = *mask_scan++; - if (alpha) { - int orig = (*dest_scan - matte_b) * 255 / alpha + matte_b; - if (orig < 0) { - orig = 0; - } else if (orig > 255) { - orig = 255; - } - *dest_scan++ = orig; - orig = (*dest_scan - matte_g) * 255 / alpha + matte_g; - if (orig < 0) { - orig = 0; - } else if (orig > 255) { - orig = 255; - } - *dest_scan++ = orig; - orig = (*dest_scan - matte_r) * 255 / alpha + matte_r; - if (orig < 0) { - orig = 0; - } else if (orig > 255) { - orig = 255; - } - *dest_scan++ = orig; - dest_scan++; - } else { - dest_scan += 4; - } - } - } - } - bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask); - bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap()); - if (m_BitmapAlpha < 255) { - bitmap_device1.GetBitmap()->MultiplyAlpha(m_BitmapAlpha); - } - } - m_pRenderStatus->m_pDevice->SetDIBits(bitmap_device1.GetBitmap(), rect.left, - rect.top, m_BlendType); - return FALSE; -} -FX_BOOL CPDF_ImageRenderer::StartDIBSource() { - if (!(m_Flags & RENDER_FORCE_DOWNSAMPLE) && m_pDIBSource->GetBPP() > 1) { - int image_size = m_pDIBSource->GetBPP() / 8 * m_pDIBSource->GetWidth() * - m_pDIBSource->GetHeight(); - if (image_size > FPDF_HUGE_IMAGE_SIZE && - !(m_Flags & RENDER_FORCE_HALFTONE)) { - m_Flags |= RENDER_FORCE_DOWNSAMPLE; - } - } - if (m_pRenderStatus->m_pDevice->StartDIBits( - m_pDIBSource, m_BitmapAlpha, m_FillArgb, &m_ImageMatrix, m_Flags, - m_DeviceHandle, 0, NULL, m_BlendType)) { - if (m_DeviceHandle) { - m_Status = 3; - return TRUE; - } - return FALSE; - } - CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect(); - FX_RECT image_rect = image_rect_f.GetOutterRect(); - int dest_width = image_rect.Width(); - int dest_height = image_rect.Height(); - if ((FXSYS_fabs(m_ImageMatrix.b) >= 0.5f || m_ImageMatrix.a == 0) || - (FXSYS_fabs(m_ImageMatrix.c) >= 0.5f || m_ImageMatrix.d == 0)) { - if (m_pRenderStatus->m_bPrint && - !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { - m_Result = FALSE; - return FALSE; - } - FX_RECT clip_box = m_pRenderStatus->m_pDevice->GetClipBox(); - clip_box.Intersect(image_rect); - m_Status = 2; - m_pTransformer = new CFX_ImageTransformer; - m_pTransformer->Start(m_pDIBSource, &m_ImageMatrix, m_Flags, &clip_box); - return TRUE; - } - if (m_ImageMatrix.a < 0) { - dest_width = -dest_width; - } - if (m_ImageMatrix.d > 0) { - dest_height = -dest_height; - } - int dest_left, dest_top; - dest_left = dest_width > 0 ? image_rect.left : image_rect.right; - dest_top = dest_height > 0 ? image_rect.top : image_rect.bottom; - if (m_pDIBSource->IsOpaqueImage() && m_BitmapAlpha == 255) { - if (m_pRenderStatus->m_pDevice->StretchDIBits( - m_pDIBSource, dest_left, dest_top, dest_width, dest_height, m_Flags, - NULL, m_BlendType)) { - return FALSE; - } - } - if (m_pDIBSource->IsAlphaMask()) { - if (m_BitmapAlpha != 255) { - m_FillArgb = FXARGB_MUL_ALPHA(m_FillArgb, m_BitmapAlpha); - } - if (m_pRenderStatus->m_pDevice->StretchBitMask( - m_pDIBSource, dest_left, dest_top, dest_width, dest_height, - m_FillArgb, m_Flags)) { - return FALSE; - } - } - if (m_pRenderStatus->m_bPrint && - !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) { - m_Result = FALSE; - return TRUE; - } - FX_RECT clip_box = m_pRenderStatus->m_pDevice->GetClipBox(); - FX_RECT dest_rect = clip_box; - dest_rect.Intersect(image_rect); - FX_RECT dest_clip( - dest_rect.left - image_rect.left, dest_rect.top - image_rect.top, - dest_rect.right - image_rect.left, dest_rect.bottom - image_rect.top); - std::unique_ptr pStretched( - m_pDIBSource->StretchTo(dest_width, dest_height, m_Flags, &dest_clip)); - if (pStretched) { - m_pRenderStatus->CompositeDIBitmap(pStretched.get(), dest_rect.left, - dest_rect.top, m_FillArgb, m_BitmapAlpha, - m_BlendType, FALSE); - } - return FALSE; -} -FX_BOOL CPDF_ImageRenderer::StartBitmapAlpha() { - if (m_pDIBSource->IsOpaqueImage()) { - CFX_PathData path; - path.AppendRect(0, 0, 1, 1); - path.Transform(&m_ImageMatrix); - FX_DWORD fill_color = - ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha); - m_pRenderStatus->m_pDevice->DrawPath(&path, NULL, NULL, fill_color, 0, - FXFILL_WINDING); - } else { - const CFX_DIBSource* pAlphaMask = m_pDIBSource->IsAlphaMask() - ? m_pDIBSource - : m_pDIBSource->GetAlphaMask(); - if (FXSYS_fabs(m_ImageMatrix.b) >= 0.5f || - FXSYS_fabs(m_ImageMatrix.c) >= 0.5f) { - int left, top; - std::unique_ptr pTransformed( - pAlphaMask->TransformTo(&m_ImageMatrix, left, top)); - if (!pTransformed) - return TRUE; - - m_pRenderStatus->m_pDevice->SetBitMask( - pTransformed.get(), left, top, - ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha)); - } else { - CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect(); - FX_RECT image_rect = image_rect_f.GetOutterRect(); - int dest_width = - m_ImageMatrix.a > 0 ? image_rect.Width() : -image_rect.Width(); - int dest_height = - m_ImageMatrix.d > 0 ? -image_rect.Height() : image_rect.Height(); - int left = dest_width > 0 ? image_rect.left : image_rect.right; - int top = dest_height > 0 ? image_rect.top : image_rect.bottom; - m_pRenderStatus->m_pDevice->StretchBitMask( - pAlphaMask, left, top, dest_width, dest_height, - ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha)); - } - if (m_pDIBSource != pAlphaMask) { - delete pAlphaMask; - } - } - return FALSE; -} -FX_BOOL CPDF_ImageRenderer::Continue(IFX_Pause* pPause) { - if (m_Status == 2) { - if (m_pTransformer->Continue(pPause)) { - return TRUE; - } - CFX_DIBitmap* pBitmap = m_pTransformer->m_Storer.Detach(); - if (!pBitmap) { - return FALSE; - } - if (pBitmap->IsAlphaMask()) { - if (m_BitmapAlpha != 255) { - m_FillArgb = FXARGB_MUL_ALPHA(m_FillArgb, m_BitmapAlpha); - } - m_Result = m_pRenderStatus->m_pDevice->SetBitMask( - pBitmap, m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop, - m_FillArgb); - } else { - if (m_BitmapAlpha != 255) { - pBitmap->MultiplyAlpha(m_BitmapAlpha); - } - m_Result = m_pRenderStatus->m_pDevice->SetDIBits( - pBitmap, m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop, - m_BlendType); - } - delete pBitmap; - return FALSE; - } - if (m_Status == 3) { - return m_pRenderStatus->m_pDevice->ContinueDIBits(m_DeviceHandle, pPause); - } - if (m_Status == 4) { - if (m_Loader.Continue(m_LoadHandle, pPause)) { - return TRUE; - } - if (StartRenderDIBSource()) { - return Continue(pPause); - } - } - return FALSE; -} -ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc, - const CPDF_Dictionary* pParams); -CFX_DIBitmap* CPDF_RenderStatus::LoadSMask(CPDF_Dictionary* pSMaskDict, - FX_RECT* pClipRect, - const CFX_Matrix* pMatrix) { - if (!pSMaskDict) { - return NULL; - } - int width = pClipRect->right - pClipRect->left; - int height = pClipRect->bottom - pClipRect->top; - FX_BOOL bLuminosity = FALSE; - bLuminosity = pSMaskDict->GetConstStringBy("S") != "Alpha"; - CPDF_Stream* pGroup = pSMaskDict->GetStreamBy("G"); - if (!pGroup) { - return NULL; - } - std::unique_ptr pFunc; - CPDF_Object* pFuncObj = pSMaskDict->GetElementValue("TR"); - if (pFuncObj && (pFuncObj->IsDictionary() || pFuncObj->IsStream())) - pFunc.reset(CPDF_Function::Load(pFuncObj)); - - CFX_Matrix matrix = *pMatrix; - matrix.TranslateI(-pClipRect->left, -pClipRect->top); - CPDF_Form form(m_pContext->GetDocument(), m_pContext->GetPageResources(), - pGroup); - form.ParseContent(NULL, NULL, NULL, NULL); - CFX_FxgeDevice bitmap_device; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (!bitmap_device.Create(width, height, - bLuminosity ? FXDIB_Rgb32 : FXDIB_8bppMask)) { - return NULL; - } -#else - if (!bitmap_device.Create(width, height, - bLuminosity ? FXDIB_Rgb : FXDIB_8bppMask)) { - return NULL; - } -#endif - CFX_DIBitmap& bitmap = *bitmap_device.GetBitmap(); - CPDF_Object* pCSObj = NULL; - CPDF_ColorSpace* pCS = NULL; - if (bLuminosity) { - CPDF_Array* pBC = pSMaskDict->GetArrayBy("BC"); - FX_ARGB back_color = 0xff000000; - if (pBC) { - CPDF_Dictionary* pDict = pGroup->GetDict(); - if (pDict && pDict->GetDictBy("Group")) - pCSObj = pDict->GetDictBy("Group")->GetElementValue("CS"); - else - pCSObj = NULL; - pCS = m_pContext->GetDocument()->LoadColorSpace(pCSObj); - if (pCS) { - FX_FLOAT R, G, B; - FX_DWORD comps = 8; - if (pCS->CountComponents() > comps) { - comps = pCS->CountComponents(); - } - CFX_FixedBufGrow float_array(comps); - FX_FLOAT* pFloats = float_array; - FX_SAFE_DWORD num_floats = comps; - num_floats *= sizeof(FX_FLOAT); - if (!num_floats.IsValid()) { - return NULL; - } - FXSYS_memset(pFloats, 0, num_floats.ValueOrDie()); - int count = pBC->GetCount() > 8 ? 8 : pBC->GetCount(); - for (int i = 0; i < count; i++) { - pFloats[i] = pBC->GetNumberAt(i); - } - pCS->GetRGB(pFloats, R, G, B); - back_color = 0xff000000 | ((int32_t)(R * 255) << 16) | - ((int32_t)(G * 255) << 8) | (int32_t)(B * 255); - m_pContext->GetDocument()->GetPageData()->ReleaseColorSpace(pCSObj); - } - } - bitmap.Clear(back_color); - } else { - bitmap.Clear(0); - } - CPDF_Dictionary* pFormResource = NULL; - if (form.m_pFormDict) { - pFormResource = form.m_pFormDict->GetDictBy("Resources"); - } - CPDF_RenderOptions options; - options.m_ColorMode = bLuminosity ? RENDER_COLOR_NORMAL : RENDER_COLOR_ALPHA; - CPDF_RenderStatus status; - status.Initialize(m_pContext, &bitmap_device, NULL, NULL, NULL, NULL, - &options, 0, m_bDropObjects, pFormResource, TRUE, NULL, 0, - pCS ? pCS->GetFamily() : 0, bLuminosity); - status.RenderObjectList(&form, &matrix); - std::unique_ptr pMask(new CFX_DIBitmap); - if (!pMask->Create(width, height, FXDIB_8bppMask)) - return nullptr; - - uint8_t* dest_buf = pMask->GetBuffer(); - int dest_pitch = pMask->GetPitch(); - uint8_t* src_buf = bitmap.GetBuffer(); - int src_pitch = bitmap.GetPitch(); - std::vector transfers(256); - if (pFunc) { - CFX_FixedBufGrow results(pFunc->CountOutputs()); - for (int i = 0; i < 256; i++) { - FX_FLOAT input = (FX_FLOAT)i / 255.0f; - int nresult; - pFunc->Call(&input, 1, results, nresult); - transfers[i] = FXSYS_round(results[0] * 255); - } - } else { - for (int i = 0; i < 256; i++) { - transfers[i] = i; - } - } - if (bLuminosity) { - int Bpp = bitmap.GetBPP() / 8; - for (int row = 0; row < height; row++) { - uint8_t* dest_pos = dest_buf + row * dest_pitch; - uint8_t* src_pos = src_buf + row * src_pitch; - for (int col = 0; col < width; col++) { - *dest_pos++ = transfers[FXRGB2GRAY(src_pos[2], src_pos[1], *src_pos)]; - src_pos += Bpp; - } - } - } else if (pFunc) { - int size = dest_pitch * height; - for (int i = 0; i < size; i++) { - dest_buf[i] = transfers[src_buf[i]]; - } - } else { - FXSYS_memcpy(dest_buf, src_buf, dest_pitch * height); - } - return pMask.release(); -} diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp deleted file mode 100644 index 93b867005c..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp +++ /dev/null @@ -1,1656 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_render/render_int.h" - -#include -#include -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -namespace { - -unsigned int GetBits8(const uint8_t* pData, uint64_t bitpos, size_t nbits) { - ASSERT(nbits == 1 || nbits == 2 || nbits == 4 || nbits == 8 || nbits == 16); - ASSERT((bitpos & (nbits - 1)) == 0); - unsigned int byte = pData[bitpos / 8]; - if (nbits == 8) { - return byte; - } else if (nbits == 16) { - return byte * 256 + pData[bitpos / 8 + 1]; - } - - return (byte >> (8 - nbits - (bitpos % 8))) & ((1 << nbits) - 1); -} - -FX_SAFE_DWORD CalculatePitch8(FX_DWORD bpc, FX_DWORD components, int width) { - FX_SAFE_DWORD pitch = bpc; - pitch *= components; - pitch *= width; - pitch += 7; - pitch /= 8; - return pitch; -} - -FX_SAFE_DWORD CalculatePitch32(int bpp, int width) { - FX_SAFE_DWORD pitch = bpp; - pitch *= width; - pitch += 31; - pitch /= 32; // quantized to number of 32-bit words. - pitch *= 4; // and then back to bytes, (not just /8 in one step). - return pitch; -} - -bool IsAllowedBPCValue(int bpc) { - return bpc == 1 || bpc == 2 || bpc == 4 || bpc == 8 || bpc == 16; -} - -template -T ClampValue(T value, T max_value) { - value = std::min(value, max_value); - value = std::max(0, value); - return value; -} - -// Wrapper class to use with std::unique_ptr for CJPX_Decoder. -class JpxBitMapContext { - public: - explicit JpxBitMapContext(ICodec_JpxModule* jpx_module) - : jpx_module_(jpx_module), decoder_(nullptr) {} - - ~JpxBitMapContext() { - jpx_module_->DestroyDecoder(decoder_); - } - - // Takes ownership of |decoder|. - void set_decoder(CJPX_Decoder* decoder) { decoder_ = decoder; } - - CJPX_Decoder* decoder() { return decoder_; } - - private: - ICodec_JpxModule* const jpx_module_; // Weak pointer. - CJPX_Decoder* decoder_; // Decoder, owned. - - // Disallow evil constructors - JpxBitMapContext(const JpxBitMapContext&); - void operator=(const JpxBitMapContext&); -}; - -const int kMaxImageDimension = 0x01FFFF; - -} // namespace - -CFX_DIBSource* CPDF_Image::LoadDIBSource(CFX_DIBSource** ppMask, - FX_DWORD* pMatteColor, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask) const { - std::unique_ptr source(new CPDF_DIBSource); - if (source->Load(m_pDocument, m_pStream, - reinterpret_cast(ppMask), pMatteColor, - nullptr, nullptr, bStdCS, GroupFamily, bLoadMask)) { - return source.release(); - } - return nullptr; -} - -CFX_DIBSource* CPDF_Image::DetachBitmap() { - CFX_DIBSource* pBitmap = m_pDIBSource; - m_pDIBSource = nullptr; - return pBitmap; -} - -CFX_DIBSource* CPDF_Image::DetachMask() { - CFX_DIBSource* pBitmap = m_pMask; - m_pMask = nullptr; - return pBitmap; -} - -FX_BOOL CPDF_Image::StartLoadDIBSource(CPDF_Dictionary* pFormResource, - CPDF_Dictionary* pPageResource, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask) { - std::unique_ptr source(new CPDF_DIBSource); - int ret = - source->StartLoadDIBSource(m_pDocument, m_pStream, TRUE, pFormResource, - pPageResource, bStdCS, GroupFamily, bLoadMask); - if (ret == 2) { - m_pDIBSource = source.release(); - return TRUE; - } - if (!ret) { - m_pDIBSource = nullptr; - return FALSE; - } - m_pMask = source->DetachMask(); - m_MatteColor = source->GetMatteColor(); - m_pDIBSource = source.release(); - return FALSE; -} - -FX_BOOL CPDF_Image::Continue(IFX_Pause* pPause) { - CPDF_DIBSource* pSource = static_cast(m_pDIBSource); - int ret = pSource->ContinueLoadDIBSource(pPause); - if (ret == 2) { - return TRUE; - } - if (!ret) { - delete m_pDIBSource; - m_pDIBSource = nullptr; - return FALSE; - } - m_pMask = pSource->DetachMask(); - m_MatteColor = pSource->GetMatteColor(); - return FALSE; -} - -CPDF_DIBSource::CPDF_DIBSource() - : m_pDocument(nullptr), - m_pStream(nullptr), - m_pDict(nullptr), - m_pColorSpace(nullptr), - m_Family(0), - m_bpc(0), - m_bpc_orig(0), - m_nComponents(0), - m_GroupFamily(0), - m_MatteColor(0), - m_bLoadMask(FALSE), - m_bDefaultDecode(TRUE), - m_bImageMask(FALSE), - m_bDoBpcCheck(TRUE), - m_bColorKey(FALSE), - m_bHasMask(FALSE), - m_bStdCS(FALSE), - m_pCompData(nullptr), - m_pLineBuf(nullptr), - m_pMaskedLine(nullptr), - m_pJbig2Context(nullptr), - m_pMask(nullptr), - m_pMaskStream(nullptr), - m_Status(0) {} - -CPDF_DIBSource::~CPDF_DIBSource() { - FX_Free(m_pMaskedLine); - FX_Free(m_pLineBuf); - m_pCachedBitmap.reset(); - FX_Free(m_pCompData); - CPDF_ColorSpace* pCS = m_pColorSpace; - if (pCS && m_pDocument) { - m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray()); - } - if (m_pJbig2Context) { - ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module(); - pJbig2Module->DestroyJbig2Context(m_pJbig2Context); - } -} - -CFX_DIBitmap* CPDF_DIBSource::GetBitmap() const { - return m_pCachedBitmap ? m_pCachedBitmap.get() : Clone(); -} - -void CPDF_DIBSource::ReleaseBitmap(CFX_DIBitmap* pBitmap) const { - if (pBitmap && pBitmap != m_pCachedBitmap.get()) { - delete pBitmap; - } -} - -FX_BOOL CPDF_DIBSource::Load(CPDF_Document* pDoc, - const CPDF_Stream* pStream, - CPDF_DIBSource** ppMask, - FX_DWORD* pMatteColor, - CPDF_Dictionary* pFormResources, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask) { - if (!pStream) { - return FALSE; - } - m_pDocument = pDoc; - m_pDict = pStream->GetDict(); - if (!m_pDict) { - return FALSE; - } - m_pStream = pStream; - m_Width = m_pDict->GetIntegerBy("Width"); - m_Height = m_pDict->GetIntegerBy("Height"); - if (m_Width <= 0 || m_Height <= 0 || m_Width > kMaxImageDimension || - m_Height > kMaxImageDimension) { - return FALSE; - } - m_GroupFamily = GroupFamily; - m_bLoadMask = bLoadMask; - if (!LoadColorInfo(m_pStream->GetObjNum() != 0 ? nullptr : pFormResources, - pPageResources)) { - return FALSE; - } - if (m_bDoBpcCheck && (m_bpc == 0 || m_nComponents == 0)) { - return FALSE; - } - FX_SAFE_DWORD src_size = - CalculatePitch8(m_bpc, m_nComponents, m_Width) * m_Height; - if (!src_size.IsValid()) { - return FALSE; - } - m_pStreamAcc.reset(new CPDF_StreamAcc); - m_pStreamAcc->LoadAllData(pStream, FALSE, src_size.ValueOrDie(), TRUE); - if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData()) { - return FALSE; - } - if (!CreateDecoder()) { - return FALSE; - } - if (m_bImageMask) { - m_bpp = 1; - m_bpc = 1; - m_nComponents = 1; - m_AlphaFlag = 1; - } else if (m_bpc * m_nComponents == 1) { - m_bpp = 1; - } else if (m_bpc * m_nComponents <= 8) { - m_bpp = 8; - } else { - m_bpp = 24; - } - FX_SAFE_DWORD pitch = CalculatePitch32(m_bpp, m_Width); - if (!pitch.IsValid()) { - return FALSE; - } - m_pLineBuf = FX_Alloc(uint8_t, pitch.ValueOrDie()); - if (m_pColorSpace && bStdCS) { - m_pColorSpace->EnableStdConversion(TRUE); - } - LoadPalette(); - if (m_bColorKey) { - m_bpp = 32; - m_AlphaFlag = 2; - pitch = CalculatePitch32(m_bpp, m_Width); - if (!pitch.IsValid()) { - return FALSE; - } - m_pMaskedLine = FX_Alloc(uint8_t, pitch.ValueOrDie()); - } - m_Pitch = pitch.ValueOrDie(); - if (ppMask) { - *ppMask = LoadMask(*pMatteColor); - } - if (m_pColorSpace && bStdCS) { - m_pColorSpace->EnableStdConversion(FALSE); - } - return TRUE; -} - -int CPDF_DIBSource::ContinueToLoadMask() { - if (m_bImageMask) { - m_bpp = 1; - m_bpc = 1; - m_nComponents = 1; - m_AlphaFlag = 1; - } else if (m_bpc * m_nComponents == 1) { - m_bpp = 1; - } else if (m_bpc * m_nComponents <= 8) { - m_bpp = 8; - } else { - m_bpp = 24; - } - if (!m_bpc || !m_nComponents) { - return 0; - } - FX_SAFE_DWORD pitch = CalculatePitch32(m_bpp, m_Width); - if (!pitch.IsValid()) { - return 0; - } - m_pLineBuf = FX_Alloc(uint8_t, pitch.ValueOrDie()); - if (m_pColorSpace && m_bStdCS) { - m_pColorSpace->EnableStdConversion(TRUE); - } - LoadPalette(); - if (m_bColorKey) { - m_bpp = 32; - m_AlphaFlag = 2; - pitch = CalculatePitch32(m_bpp, m_Width); - if (!pitch.IsValid()) { - return 0; - } - m_pMaskedLine = FX_Alloc(uint8_t, pitch.ValueOrDie()); - } - m_Pitch = pitch.ValueOrDie(); - return 1; -} - -int CPDF_DIBSource::StartLoadDIBSource(CPDF_Document* pDoc, - const CPDF_Stream* pStream, - FX_BOOL bHasMask, - CPDF_Dictionary* pFormResources, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask) { - if (!pStream) { - return 0; - } - m_pDocument = pDoc; - m_pDict = pStream->GetDict(); - m_pStream = pStream; - m_bStdCS = bStdCS; - m_bHasMask = bHasMask; - m_Width = m_pDict->GetIntegerBy("Width"); - m_Height = m_pDict->GetIntegerBy("Height"); - if (m_Width <= 0 || m_Height <= 0 || m_Width > kMaxImageDimension || - m_Height > kMaxImageDimension) { - return 0; - } - m_GroupFamily = GroupFamily; - m_bLoadMask = bLoadMask; - if (!LoadColorInfo(m_pStream->GetObjNum() != 0 ? nullptr : pFormResources, - pPageResources)) { - return 0; - } - if (m_bDoBpcCheck && (m_bpc == 0 || m_nComponents == 0)) { - return 0; - } - FX_SAFE_DWORD src_size = - CalculatePitch8(m_bpc, m_nComponents, m_Width) * m_Height; - if (!src_size.IsValid()) { - return 0; - } - m_pStreamAcc.reset(new CPDF_StreamAcc); - m_pStreamAcc->LoadAllData(pStream, FALSE, src_size.ValueOrDie(), TRUE); - if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData()) { - return 0; - } - int ret = CreateDecoder(); - if (!ret) - return ret; - - if (ret != 1) { - if (!ContinueToLoadMask()) { - return 0; - } - if (m_bHasMask) { - StratLoadMask(); - } - return ret; - } - if (!ContinueToLoadMask()) { - return 0; - } - if (m_bHasMask) { - ret = StratLoadMask(); - } - if (ret == 2) { - return ret; - } - if (m_pColorSpace && m_bStdCS) { - m_pColorSpace->EnableStdConversion(FALSE); - } - return ret; -} - -int CPDF_DIBSource::ContinueLoadDIBSource(IFX_Pause* pPause) { - FXCODEC_STATUS ret; - if (m_Status == 1) { - const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder(); - if (decoder == "JPXDecode") { - return 0; - } - ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module(); - if (!m_pJbig2Context) { - m_pJbig2Context = pJbig2Module->CreateJbig2Context(); - if (m_pStreamAcc->GetImageParam()) { - CPDF_Stream* pGlobals = - m_pStreamAcc->GetImageParam()->GetStreamBy("JBIG2Globals"); - if (pGlobals) { - m_pGlobalStream.reset(new CPDF_StreamAcc); - m_pGlobalStream->LoadAllData(pGlobals, FALSE); - } - } - ret = pJbig2Module->StartDecode( - m_pJbig2Context, m_pDocument, m_Width, m_Height, m_pStreamAcc.get(), - m_pGlobalStream.get(), m_pCachedBitmap->GetBuffer(), - m_pCachedBitmap->GetPitch(), pPause); - if (ret < 0) { - m_pCachedBitmap.reset(); - m_pGlobalStream.reset(); - pJbig2Module->DestroyJbig2Context(m_pJbig2Context); - m_pJbig2Context = nullptr; - return 0; - } - if (ret == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - return 2; - } - int ret1 = 1; - if (m_bHasMask) { - ret1 = ContinueLoadMaskDIB(pPause); - m_Status = 2; - } - if (ret1 == 2) { - return ret1; - } - if (m_pColorSpace && m_bStdCS) { - m_pColorSpace->EnableStdConversion(FALSE); - } - return ret1; - } - FXCODEC_STATUS ret = pJbig2Module->ContinueDecode(m_pJbig2Context, pPause); - if (ret < 0) { - m_pCachedBitmap.reset(); - m_pGlobalStream.reset(); - pJbig2Module->DestroyJbig2Context(m_pJbig2Context); - m_pJbig2Context = nullptr; - return 0; - } - if (ret == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - return 2; - } - int ret1 = 1; - if (m_bHasMask) { - ret1 = ContinueLoadMaskDIB(pPause); - m_Status = 2; - } - if (ret1 == 2) { - return ret1; - } - if (m_pColorSpace && m_bStdCS) { - m_pColorSpace->EnableStdConversion(FALSE); - } - return ret1; - } - if (m_Status == 2) { - return ContinueLoadMaskDIB(pPause); - } - return 0; -} - -bool CPDF_DIBSource::LoadColorInfo(const CPDF_Dictionary* pFormResources, - const CPDF_Dictionary* pPageResources) { - m_bpc_orig = m_pDict->GetIntegerBy("BitsPerComponent"); - if (m_pDict->GetIntegerBy("ImageMask")) - m_bImageMask = TRUE; - - if (m_bImageMask || !m_pDict->KeyExist("ColorSpace")) { - if (!m_bImageMask) { - CPDF_Object* pFilter = m_pDict->GetElementValue("Filter"); - if (pFilter) { - CFX_ByteString filter; - if (pFilter->IsName()) { - filter = pFilter->GetString(); - } else if (CPDF_Array* pArray = pFilter->AsArray()) { - filter = pArray->GetStringAt(pArray->GetCount() - 1); - } - - if (filter == "JPXDecode") { - m_bDoBpcCheck = FALSE; - return true; - } - } - } - m_bImageMask = TRUE; - m_bpc = m_nComponents = 1; - CPDF_Array* pDecode = m_pDict->GetArrayBy("Decode"); - m_bDefaultDecode = !pDecode || !pDecode->GetIntegerAt(0); - return true; - } - - CPDF_Object* pCSObj = m_pDict->GetElementValue("ColorSpace"); - if (!pCSObj) - return false; - - CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData(); - if (pFormResources) - m_pColorSpace = pDocPageData->GetColorSpace(pCSObj, pFormResources); - if (!m_pColorSpace) - m_pColorSpace = pDocPageData->GetColorSpace(pCSObj, pPageResources); - if (!m_pColorSpace) - return false; - - m_Family = m_pColorSpace->GetFamily(); - m_nComponents = m_pColorSpace->CountComponents(); - if (m_Family == PDFCS_ICCBASED && pCSObj->IsName()) { - CFX_ByteString cs = pCSObj->GetString(); - if (cs == "DeviceGray") { - m_nComponents = 1; - } else if (cs == "DeviceRGB") { - m_nComponents = 3; - } else if (cs == "DeviceCMYK") { - m_nComponents = 4; - } - } - ValidateDictParam(); - m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey); - return !!m_pCompData; -} - -DIB_COMP_DATA* CPDF_DIBSource::GetDecodeAndMaskArray(FX_BOOL& bDefaultDecode, - FX_BOOL& bColorKey) { - if (!m_pColorSpace) { - return nullptr; - } - DIB_COMP_DATA* pCompData = FX_Alloc(DIB_COMP_DATA, m_nComponents); - int max_data = (1 << m_bpc) - 1; - CPDF_Array* pDecode = m_pDict->GetArrayBy("Decode"); - if (pDecode) { - for (FX_DWORD i = 0; i < m_nComponents; i++) { - pCompData[i].m_DecodeMin = pDecode->GetNumberAt(i * 2); - FX_FLOAT max = pDecode->GetNumberAt(i * 2 + 1); - pCompData[i].m_DecodeStep = (max - pCompData[i].m_DecodeMin) / max_data; - FX_FLOAT def_value; - FX_FLOAT def_min; - FX_FLOAT def_max; - m_pColorSpace->GetDefaultValue(i, def_value, def_min, def_max); - if (m_Family == PDFCS_INDEXED) { - def_max = max_data; - } - if (def_min != pCompData[i].m_DecodeMin || def_max != max) { - bDefaultDecode = FALSE; - } - } - } else { - for (FX_DWORD i = 0; i < m_nComponents; i++) { - FX_FLOAT def_value; - m_pColorSpace->GetDefaultValue(i, def_value, pCompData[i].m_DecodeMin, - pCompData[i].m_DecodeStep); - if (m_Family == PDFCS_INDEXED) { - pCompData[i].m_DecodeStep = max_data; - } - pCompData[i].m_DecodeStep = - (pCompData[i].m_DecodeStep - pCompData[i].m_DecodeMin) / max_data; - } - } - if (!m_pDict->KeyExist("SMask")) { - CPDF_Object* pMask = m_pDict->GetElementValue("Mask"); - if (!pMask) { - return pCompData; - } - if (CPDF_Array* pArray = pMask->AsArray()) { - if (pArray->GetCount() >= m_nComponents * 2) { - for (FX_DWORD i = 0; i < m_nComponents; i++) { - int min_num = pArray->GetIntegerAt(i * 2); - int max_num = pArray->GetIntegerAt(i * 2 + 1); - pCompData[i].m_ColorKeyMin = std::max(min_num, 0); - pCompData[i].m_ColorKeyMax = std::min(max_num, max_data); - } - } - bColorKey = TRUE; - } - } - return pCompData; -} - -ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - const CPDF_Dictionary* pParams); - -ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc, - const CPDF_Dictionary* pParams); - -int CPDF_DIBSource::CreateDecoder() { - const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder(); - if (decoder.IsEmpty()) { - return 1; - } - if (m_bDoBpcCheck && m_bpc == 0) { - return 0; - } - const uint8_t* src_data = m_pStreamAcc->GetData(); - FX_DWORD src_size = m_pStreamAcc->GetSize(); - const CPDF_Dictionary* pParams = m_pStreamAcc->GetImageParam(); - if (decoder == "CCITTFaxDecode") { - m_pDecoder.reset(FPDFAPI_CreateFaxDecoder(src_data, src_size, m_Width, - m_Height, pParams)); - } else if (decoder == "DCTDecode") { - m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder( - src_data, src_size, m_Width, m_Height, m_nComponents, - pParams ? pParams->GetIntegerBy("ColorTransform", 1) : 1)); - if (!m_pDecoder) { - FX_BOOL bTransform = FALSE; - int comps; - int bpc; - ICodec_JpegModule* pJpegModule = CPDF_ModuleMgr::Get()->GetJpegModule(); - if (pJpegModule->LoadInfo(src_data, src_size, m_Width, m_Height, comps, - bpc, bTransform)) { - if (m_nComponents != static_cast(comps)) { - FX_Free(m_pCompData); - m_nComponents = static_cast(comps); - if (m_Family == PDFCS_LAB && m_nComponents != 3) { - m_pCompData = nullptr; - return 0; - } - m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey); - if (!m_pCompData) { - return 0; - } - } - m_bpc = bpc; - m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder( - src_data, src_size, m_Width, m_Height, m_nComponents, bTransform)); - } - } - } else if (decoder == "FlateDecode") { - m_pDecoder.reset(FPDFAPI_CreateFlateDecoder( - src_data, src_size, m_Width, m_Height, m_nComponents, m_bpc, pParams)); - } else if (decoder == "JPXDecode") { - LoadJpxBitmap(); - return m_pCachedBitmap ? 1 : 0; - } else if (decoder == "JBIG2Decode") { - m_pCachedBitmap.reset(new CFX_DIBitmap); - if (!m_pCachedBitmap->Create( - m_Width, m_Height, m_bImageMask ? FXDIB_1bppMask : FXDIB_1bppRgb)) { - m_pCachedBitmap.reset(); - return 0; - } - m_Status = 1; - return 2; - } else if (decoder == "RunLengthDecode") { - m_pDecoder.reset(CPDF_ModuleMgr::Get() - ->GetCodecModule() - ->GetBasicModule() - ->CreateRunLengthDecoder(src_data, src_size, m_Width, - m_Height, m_nComponents, - m_bpc)); - } - if (!m_pDecoder) - return 0; - - FX_SAFE_DWORD requested_pitch = - CalculatePitch8(m_bpc, m_nComponents, m_Width); - if (!requested_pitch.IsValid()) { - return 0; - } - FX_SAFE_DWORD provided_pitch = CalculatePitch8( - m_pDecoder->GetBPC(), m_pDecoder->CountComps(), m_pDecoder->GetWidth()); - if (!provided_pitch.IsValid()) { - return 0; - } - if (provided_pitch.ValueOrDie() < requested_pitch.ValueOrDie()) { - return 0; - } - return 1; -} - -void CPDF_DIBSource::LoadJpxBitmap() { - ICodec_JpxModule* pJpxModule = CPDF_ModuleMgr::Get()->GetJpxModule(); - if (!pJpxModule) - return; - - std::unique_ptr context(new JpxBitMapContext(pJpxModule)); - context->set_decoder(pJpxModule->CreateDecoder( - m_pStreamAcc->GetData(), m_pStreamAcc->GetSize(), m_pColorSpace)); - if (!context->decoder()) - return; - - FX_DWORD width = 0; - FX_DWORD height = 0; - FX_DWORD components = 0; - pJpxModule->GetImageInfo(context->decoder(), &width, &height, &components); - if (static_cast(width) < m_Width || static_cast(height) < m_Height) - return; - - FX_BOOL bSwapRGB = FALSE; - if (m_pColorSpace) { - if (components != m_pColorSpace->CountComponents()) - return; - - if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB)) { - bSwapRGB = TRUE; - m_pColorSpace = nullptr; - } - } else { - if (components == 3) { - bSwapRGB = TRUE; - } else if (components == 4) { - m_pColorSpace = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK); - } - m_nComponents = components; - } - - FXDIB_Format format; - if (components == 1) { - format = FXDIB_8bppRgb; - } else if (components <= 3) { - format = FXDIB_Rgb; - } else if (components == 4) { - format = FXDIB_Rgb32; - } else { - width = (width * components + 2) / 3; - format = FXDIB_Rgb; - } - - m_pCachedBitmap.reset(new CFX_DIBitmap); - if (!m_pCachedBitmap->Create(width, height, format)) { - m_pCachedBitmap.reset(); - return; - } - m_pCachedBitmap->Clear(0xFFFFFFFF); - std::vector output_offsets(components); - for (FX_DWORD i = 0; i < components; ++i) - output_offsets[i] = i; - if (bSwapRGB) { - output_offsets[0] = 2; - output_offsets[2] = 0; - } - if (!pJpxModule->Decode(context->decoder(), m_pCachedBitmap->GetBuffer(), - m_pCachedBitmap->GetPitch(), output_offsets)) { - m_pCachedBitmap.reset(); - return; - } - if (m_pColorSpace && m_pColorSpace->GetFamily() == PDFCS_INDEXED && - m_bpc < 8) { - int scale = 8 - m_bpc; - for (FX_DWORD row = 0; row < height; ++row) { - uint8_t* scanline = - const_cast(m_pCachedBitmap->GetScanline(row)); - for (FX_DWORD col = 0; col < width; ++col) { - *scanline = (*scanline) >> scale; - ++scanline; - } - } - } - m_bpc = 8; -} - -CPDF_DIBSource* CPDF_DIBSource::LoadMask(FX_DWORD& MatteColor) { - MatteColor = 0xFFFFFFFF; - CPDF_Stream* pSoftMask = m_pDict->GetStreamBy("SMask"); - if (pSoftMask) { - CPDF_Array* pMatte = pSoftMask->GetDict()->GetArrayBy("Matte"); - if (pMatte && m_pColorSpace && - m_pColorSpace->CountComponents() <= m_nComponents) { - std::vector colors(m_nComponents); - for (FX_DWORD i = 0; i < m_nComponents; i++) { - colors[i] = pMatte->GetFloatAt(i); - } - FX_FLOAT R, G, B; - m_pColorSpace->GetRGB(colors.data(), R, G, B); - MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), - FXSYS_round(B * 255)); - } - return LoadMaskDIB(pSoftMask); - } - - if (CPDF_Stream* pStream = ToStream(m_pDict->GetElementValue("Mask"))) - return LoadMaskDIB(pStream); - - return nullptr; -} - -int CPDF_DIBSource::StratLoadMask() { - m_MatteColor = 0XFFFFFFFF; - m_pMaskStream = m_pDict->GetStreamBy("SMask"); - if (m_pMaskStream) { - CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArrayBy("Matte"); - if (pMatte && m_pColorSpace && - m_pColorSpace->CountComponents() <= m_nComponents) { - FX_FLOAT R, G, B; - std::vector colors(m_nComponents); - for (FX_DWORD i = 0; i < m_nComponents; i++) { - colors[i] = pMatte->GetFloatAt(i); - } - m_pColorSpace->GetRGB(colors.data(), R, G, B); - m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255), - FXSYS_round(B * 255)); - } - return StartLoadMaskDIB(); - } - - m_pMaskStream = ToStream(m_pDict->GetElementValue("Mask")); - return m_pMaskStream ? StartLoadMaskDIB() : 1; -} - -int CPDF_DIBSource::ContinueLoadMaskDIB(IFX_Pause* pPause) { - if (!m_pMask) { - return 1; - } - int ret = m_pMask->ContinueLoadDIBSource(pPause); - if (ret == 2) { - return ret; - } - if (m_pColorSpace && m_bStdCS) { - m_pColorSpace->EnableStdConversion(FALSE); - } - if (!ret) { - delete m_pMask; - m_pMask = nullptr; - return ret; - } - return 1; -} - -CPDF_DIBSource* CPDF_DIBSource::DetachMask() { - CPDF_DIBSource* pDIBSource = m_pMask; - m_pMask = nullptr; - return pDIBSource; -} - -CPDF_DIBSource* CPDF_DIBSource::LoadMaskDIB(CPDF_Stream* pMask) { - CPDF_DIBSource* pMaskSource = new CPDF_DIBSource; - if (!pMaskSource->Load(m_pDocument, pMask, nullptr, nullptr, nullptr, nullptr, - TRUE)) { - delete pMaskSource; - return nullptr; - } - return pMaskSource; -} - -int CPDF_DIBSource::StartLoadMaskDIB() { - m_pMask = new CPDF_DIBSource; - int ret = m_pMask->StartLoadDIBSource(m_pDocument, m_pMaskStream, FALSE, - nullptr, nullptr, TRUE); - if (ret == 2) { - if (m_Status == 0) - m_Status = 2; - return 2; - } - if (!ret) { - delete m_pMask; - m_pMask = nullptr; - return 1; - } - return 1; -} - -void CPDF_DIBSource::LoadPalette() { - if (m_bpc == 0) { - return; - } - if (m_bpc * m_nComponents > 8) { - return; - } - if (!m_pColorSpace) { - return; - } - if (m_bpc * m_nComponents == 1) { - if (m_bDefaultDecode && - (m_Family == PDFCS_DEVICEGRAY || m_Family == PDFCS_DEVICERGB)) { - return; - } - if (m_pColorSpace->CountComponents() > 3) { - return; - } - FX_FLOAT color_values[3]; - color_values[0] = m_pCompData[0].m_DecodeMin; - color_values[1] = color_values[2] = color_values[0]; - FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; - m_pColorSpace->GetRGB(color_values, R, G, B); - FX_ARGB argb0 = ArgbEncode(255, FXSYS_round(R * 255), FXSYS_round(G * 255), - FXSYS_round(B * 255)); - color_values[0] += m_pCompData[0].m_DecodeStep; - color_values[1] += m_pCompData[0].m_DecodeStep; - color_values[2] += m_pCompData[0].m_DecodeStep; - m_pColorSpace->GetRGB(color_values, R, G, B); - FX_ARGB argb1 = ArgbEncode(255, FXSYS_round(R * 255), FXSYS_round(G * 255), - FXSYS_round(B * 255)); - if (argb0 != 0xFF000000 || argb1 != 0xFFFFFFFF) { - SetPaletteArgb(0, argb0); - SetPaletteArgb(1, argb1); - } - return; - } - if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY) && - m_bpc == 8 && m_bDefaultDecode) { - } else { - int palette_count = 1 << (m_bpc * m_nComponents); - CFX_FixedBufGrow color_values(m_nComponents); - FX_FLOAT* color_value = color_values; - for (int i = 0; i < palette_count; i++) { - int color_data = i; - for (FX_DWORD j = 0; j < m_nComponents; j++) { - int encoded_component = color_data % (1 << m_bpc); - color_data /= 1 << m_bpc; - color_value[j] = m_pCompData[j].m_DecodeMin + - m_pCompData[j].m_DecodeStep * encoded_component; - } - FX_FLOAT R = 0, G = 0, B = 0; - if (m_nComponents == 1 && m_Family == PDFCS_ICCBASED && - m_pColorSpace->CountComponents() > 1) { - int nComponents = m_pColorSpace->CountComponents(); - std::vector temp_buf(nComponents); - for (int i = 0; i < nComponents; i++) { - temp_buf[i] = *color_value; - } - m_pColorSpace->GetRGB(temp_buf.data(), R, G, B); - } else { - m_pColorSpace->GetRGB(color_value, R, G, B); - } - SetPaletteArgb(i, ArgbEncode(255, FXSYS_round(R * 255), - FXSYS_round(G * 255), FXSYS_round(B * 255))); - } - } -} - -void CPDF_DIBSource::ValidateDictParam() { - m_bpc = m_bpc_orig; - CPDF_Object* pFilter = m_pDict->GetElementValue("Filter"); - if (pFilter) { - if (pFilter->IsName()) { - CFX_ByteString filter = pFilter->GetString(); - if (filter == "CCITTFaxDecode" || filter == "JBIG2Decode") { - m_bpc = 1; - m_nComponents = 1; - } else if (filter == "RunLengthDecode") { - if (m_bpc != 1) { - m_bpc = 8; - } - } else if (filter == "DCTDecode") { - m_bpc = 8; - } - } else if (CPDF_Array* pArray = pFilter->AsArray()) { - CFX_ByteString filter = pArray->GetStringAt(pArray->GetCount() - 1); - if (filter == "CCITTFaxDecode" || filter == "JBIG2Decode") { - m_bpc = 1; - m_nComponents = 1; - } else if (filter == "DCTDecode") { - // Previously, filter == "RunLengthDecode" was checked in the "if" - // statement as well, but too many documents don't conform to it. - m_bpc = 8; - } - } - } - - if (!IsAllowedBPCValue(m_bpc)) - m_bpc = 0; -} - -void CPDF_DIBSource::TranslateScanline24bpp(uint8_t* dest_scan, - const uint8_t* src_scan) const { - if (m_bpc == 0) { - return; - } - unsigned int max_data = (1 << m_bpc) - 1; - if (m_bDefaultDecode) { - if (m_Family == PDFCS_DEVICERGB || m_Family == PDFCS_CALRGB) { - const uint8_t* src_pos = src_scan; - switch (m_bpc) { - case 16: - for (int col = 0; col < m_Width; col++) { - *dest_scan++ = src_pos[4]; - *dest_scan++ = src_pos[2]; - *dest_scan++ = *src_pos; - src_pos += 6; - } - break; - case 8: - for (int column = 0; column < m_Width; column++) { - *dest_scan++ = src_pos[2]; - *dest_scan++ = src_pos[1]; - *dest_scan++ = *src_pos; - src_pos += 3; - } - break; - default: - uint64_t src_bit_pos = 0; - size_t dest_byte_pos = 0; - for (int column = 0; column < m_Width; column++) { - unsigned int R = GetBits8(src_scan, src_bit_pos, m_bpc); - src_bit_pos += m_bpc; - unsigned int G = GetBits8(src_scan, src_bit_pos, m_bpc); - src_bit_pos += m_bpc; - unsigned int B = GetBits8(src_scan, src_bit_pos, m_bpc); - src_bit_pos += m_bpc; - R = std::min(R, max_data); - G = std::min(G, max_data); - B = std::min(B, max_data); - dest_scan[dest_byte_pos] = B * 255 / max_data; - dest_scan[dest_byte_pos + 1] = G * 255 / max_data; - dest_scan[dest_byte_pos + 2] = R * 255 / max_data; - dest_byte_pos += 3; - } - break; - } - return; - } - if (m_bpc == 8) { - if (m_nComponents == m_pColorSpace->CountComponents()) - m_pColorSpace->TranslateImageLine(dest_scan, src_scan, m_Width, m_Width, - m_Height, TransMask()); - return; - } - } - CFX_FixedBufGrow color_values1(m_nComponents); - FX_FLOAT* color_values = color_values1; - FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; - if (m_bpc == 8) { - uint64_t src_byte_pos = 0; - size_t dest_byte_pos = 0; - for (int column = 0; column < m_Width; column++) { - for (FX_DWORD color = 0; color < m_nComponents; color++) { - uint8_t data = src_scan[src_byte_pos++]; - color_values[color] = m_pCompData[color].m_DecodeMin + - m_pCompData[color].m_DecodeStep * data; - } - if (TransMask()) { - FX_FLOAT k = 1.0f - color_values[3]; - R = (1.0f - color_values[0]) * k; - G = (1.0f - color_values[1]) * k; - B = (1.0f - color_values[2]) * k; - } else { - m_pColorSpace->GetRGB(color_values, R, G, B); - } - R = ClampValue(R, 1.0f); - G = ClampValue(G, 1.0f); - B = ClampValue(B, 1.0f); - dest_scan[dest_byte_pos] = static_cast(B * 255); - dest_scan[dest_byte_pos + 1] = static_cast(G * 255); - dest_scan[dest_byte_pos + 2] = static_cast(R * 255); - dest_byte_pos += 3; - } - } else { - uint64_t src_bit_pos = 0; - size_t dest_byte_pos = 0; - for (int column = 0; column < m_Width; column++) { - for (FX_DWORD color = 0; color < m_nComponents; color++) { - unsigned int data = GetBits8(src_scan, src_bit_pos, m_bpc); - color_values[color] = m_pCompData[color].m_DecodeMin + - m_pCompData[color].m_DecodeStep * data; - src_bit_pos += m_bpc; - } - if (TransMask()) { - FX_FLOAT k = 1.0f - color_values[3]; - R = (1.0f - color_values[0]) * k; - G = (1.0f - color_values[1]) * k; - B = (1.0f - color_values[2]) * k; - } else { - m_pColorSpace->GetRGB(color_values, R, G, B); - } - R = ClampValue(R, 1.0f); - G = ClampValue(G, 1.0f); - B = ClampValue(B, 1.0f); - dest_scan[dest_byte_pos] = static_cast(B * 255); - dest_scan[dest_byte_pos + 1] = static_cast(G * 255); - dest_scan[dest_byte_pos + 2] = static_cast(R * 255); - dest_byte_pos += 3; - } - } -} - -uint8_t* CPDF_DIBSource::GetBuffer() const { - return m_pCachedBitmap ? m_pCachedBitmap->GetBuffer() : nullptr; -} - -const uint8_t* CPDF_DIBSource::GetScanline(int line) const { - if (m_bpc == 0) { - return nullptr; - } - FX_SAFE_DWORD src_pitch = CalculatePitch8(m_bpc, m_nComponents, m_Width); - if (!src_pitch.IsValid()) - return nullptr; - FX_DWORD src_pitch_value = src_pitch.ValueOrDie(); - const uint8_t* pSrcLine = nullptr; - if (m_pCachedBitmap && src_pitch_value <= m_pCachedBitmap->GetPitch()) { - if (line >= m_pCachedBitmap->GetHeight()) { - line = m_pCachedBitmap->GetHeight() - 1; - } - pSrcLine = m_pCachedBitmap->GetScanline(line); - } else if (m_pDecoder) { - pSrcLine = m_pDecoder->GetScanline(line); - } else { - if (m_pStreamAcc->GetSize() >= (line + 1) * src_pitch_value) { - pSrcLine = m_pStreamAcc->GetData() + line * src_pitch_value; - } - } - if (!pSrcLine) { - uint8_t* pLineBuf = m_pMaskedLine ? m_pMaskedLine : m_pLineBuf; - FXSYS_memset(pLineBuf, 0xFF, m_Pitch); - return pLineBuf; - } - if (m_bpc * m_nComponents == 1) { - if (m_bImageMask && m_bDefaultDecode) { - for (FX_DWORD i = 0; i < src_pitch_value; i++) { - m_pLineBuf[i] = ~pSrcLine[i]; - } - } else if (m_bColorKey) { - FX_DWORD reset_argb, set_argb; - reset_argb = m_pPalette ? m_pPalette[0] : 0xFF000000; - set_argb = m_pPalette ? m_pPalette[1] : 0xFFFFFFFF; - if (m_pCompData[0].m_ColorKeyMin == 0) { - reset_argb = 0; - } - if (m_pCompData[0].m_ColorKeyMax == 1) { - set_argb = 0; - } - set_argb = FXARGB_TODIB(set_argb); - reset_argb = FXARGB_TODIB(reset_argb); - FX_DWORD* dest_scan = reinterpret_cast(m_pMaskedLine); - for (int col = 0; col < m_Width; col++) { - if (pSrcLine[col / 8] & (1 << (7 - col % 8))) { - *dest_scan = set_argb; - } else { - *dest_scan = reset_argb; - } - dest_scan++; - } - return m_pMaskedLine; - } else { - FXSYS_memcpy(m_pLineBuf, pSrcLine, src_pitch_value); - } - return m_pLineBuf; - } - if (m_bpc * m_nComponents <= 8) { - if (m_bpc == 8) { - FXSYS_memcpy(m_pLineBuf, pSrcLine, src_pitch_value); - } else { - uint64_t src_bit_pos = 0; - for (int col = 0; col < m_Width; col++) { - unsigned int color_index = 0; - for (FX_DWORD color = 0; color < m_nComponents; color++) { - unsigned int data = GetBits8(pSrcLine, src_bit_pos, m_bpc); - color_index |= data << (color * m_bpc); - src_bit_pos += m_bpc; - } - m_pLineBuf[col] = color_index; - } - } - if (m_bColorKey) { - uint8_t* pDestPixel = m_pMaskedLine; - const uint8_t* pSrcPixel = m_pLineBuf; - for (int col = 0; col < m_Width; col++) { - uint8_t index = *pSrcPixel++; - if (m_pPalette) { - *pDestPixel++ = FXARGB_B(m_pPalette[index]); - *pDestPixel++ = FXARGB_G(m_pPalette[index]); - *pDestPixel++ = FXARGB_R(m_pPalette[index]); - } else { - *pDestPixel++ = index; - *pDestPixel++ = index; - *pDestPixel++ = index; - } - *pDestPixel = (index < m_pCompData[0].m_ColorKeyMin || - index > m_pCompData[0].m_ColorKeyMax) - ? 0xFF - : 0; - pDestPixel++; - } - return m_pMaskedLine; - } - return m_pLineBuf; - } - if (m_bColorKey) { - if (m_nComponents == 3 && m_bpc == 8) { - uint8_t* alpha_channel = m_pMaskedLine + 3; - for (int col = 0; col < m_Width; col++) { - const uint8_t* pPixel = pSrcLine + col * 3; - alpha_channel[col * 4] = (pPixel[0] < m_pCompData[0].m_ColorKeyMin || - pPixel[0] > m_pCompData[0].m_ColorKeyMax || - pPixel[1] < m_pCompData[1].m_ColorKeyMin || - pPixel[1] > m_pCompData[1].m_ColorKeyMax || - pPixel[2] < m_pCompData[2].m_ColorKeyMin || - pPixel[2] > m_pCompData[2].m_ColorKeyMax) - ? 0xFF - : 0; - } - } else { - FXSYS_memset(m_pMaskedLine, 0xFF, m_Pitch); - } - } - if (m_pColorSpace) { - TranslateScanline24bpp(m_pLineBuf, pSrcLine); - pSrcLine = m_pLineBuf; - } - if (m_bColorKey) { - const uint8_t* pSrcPixel = pSrcLine; - uint8_t* pDestPixel = m_pMaskedLine; - for (int col = 0; col < m_Width; col++) { - *pDestPixel++ = *pSrcPixel++; - *pDestPixel++ = *pSrcPixel++; - *pDestPixel++ = *pSrcPixel++; - pDestPixel++; - } - return m_pMaskedLine; - } - return pSrcLine; -} - -FX_BOOL CPDF_DIBSource::SkipToScanline(int line, IFX_Pause* pPause) const { - return m_pDecoder && m_pDecoder->SkipToScanline(line, pPause); -} - -void CPDF_DIBSource::DownSampleScanline(int line, - uint8_t* dest_scan, - int dest_bpp, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const { - if (line < 0 || !dest_scan || dest_bpp <= 0 || dest_width <= 0 || - clip_left < 0 || clip_width <= 0) { - return; - } - - FX_DWORD src_width = m_Width; - FX_SAFE_DWORD pitch = CalculatePitch8(m_bpc, m_nComponents, m_Width); - if (!pitch.IsValid()) - return; - - const uint8_t* pSrcLine = nullptr; - if (m_pCachedBitmap) { - pSrcLine = m_pCachedBitmap->GetScanline(line); - } else if (m_pDecoder) { - pSrcLine = m_pDecoder->GetScanline(line); - } else { - FX_DWORD src_pitch = pitch.ValueOrDie(); - pitch *= (line + 1); - if (!pitch.IsValid()) { - return; - } - - if (m_pStreamAcc->GetSize() >= pitch.ValueOrDie()) { - pSrcLine = m_pStreamAcc->GetData() + line * src_pitch; - } - } - int orig_Bpp = m_bpc * m_nComponents / 8; - int dest_Bpp = dest_bpp / 8; - if (!pSrcLine) { - FXSYS_memset(dest_scan, 0xFF, dest_Bpp * clip_width); - return; - } - - FX_SAFE_INT32 max_src_x = clip_left; - max_src_x += clip_width - 1; - max_src_x *= src_width; - max_src_x /= dest_width; - if (!max_src_x.IsValid()) - return; - - if (m_bpc * m_nComponents == 1) { - DownSampleScanline1Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan, - dest_width, bFlipX, clip_left, clip_width); - } else if (m_bpc * m_nComponents <= 8) { - DownSampleScanline8Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan, - dest_width, bFlipX, clip_left, clip_width); - } else { - DownSampleScanline32Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan, - dest_width, bFlipX, clip_left, clip_width); - } -} - -void CPDF_DIBSource::DownSampleScanline1Bit(int orig_Bpp, - int dest_Bpp, - FX_DWORD src_width, - const uint8_t* pSrcLine, - uint8_t* dest_scan, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const { - FX_DWORD set_argb = (FX_DWORD)-1; - FX_DWORD reset_argb = 0; - if (m_bImageMask) { - if (m_bDefaultDecode) { - set_argb = 0; - reset_argb = (FX_DWORD)-1; - } - } else if (m_bColorKey) { - reset_argb = m_pPalette ? m_pPalette[0] : 0xFF000000; - set_argb = m_pPalette ? m_pPalette[1] : 0xFFFFFFFF; - if (m_pCompData[0].m_ColorKeyMin == 0) { - reset_argb = 0; - } - if (m_pCompData[0].m_ColorKeyMax == 1) { - set_argb = 0; - } - set_argb = FXARGB_TODIB(set_argb); - reset_argb = FXARGB_TODIB(reset_argb); - FX_DWORD* dest_scan_dword = reinterpret_cast(dest_scan); - for (int i = 0; i < clip_width; i++) { - FX_DWORD src_x = (clip_left + i) * src_width / dest_width; - if (bFlipX) { - src_x = src_width - src_x - 1; - } - src_x %= src_width; - if (pSrcLine[src_x / 8] & (1 << (7 - src_x % 8))) { - dest_scan_dword[i] = set_argb; - } else { - dest_scan_dword[i] = reset_argb; - } - } - return; - } else { - if (dest_Bpp == 1) { - } else if (m_pPalette) { - reset_argb = m_pPalette[0]; - set_argb = m_pPalette[1]; - } - } - for (int i = 0; i < clip_width; i++) { - FX_DWORD src_x = (clip_left + i) * src_width / dest_width; - if (bFlipX) { - src_x = src_width - src_x - 1; - } - src_x %= src_width; - int dest_pos = i * dest_Bpp; - if (pSrcLine[src_x / 8] & (1 << (7 - src_x % 8))) { - if (dest_Bpp == 1) { - dest_scan[dest_pos] = static_cast(set_argb); - } else if (dest_Bpp == 3) { - dest_scan[dest_pos] = FXARGB_B(set_argb); - dest_scan[dest_pos + 1] = FXARGB_G(set_argb); - dest_scan[dest_pos + 2] = FXARGB_R(set_argb); - } else { - *reinterpret_cast(dest_scan + dest_pos) = set_argb; - } - } else { - if (dest_Bpp == 1) { - dest_scan[dest_pos] = static_cast(reset_argb); - } else if (dest_Bpp == 3) { - dest_scan[dest_pos] = FXARGB_B(reset_argb); - dest_scan[dest_pos + 1] = FXARGB_G(reset_argb); - dest_scan[dest_pos + 2] = FXARGB_R(reset_argb); - } else { - *reinterpret_cast(dest_scan + dest_pos) = reset_argb; - } - } - } -} - -void CPDF_DIBSource::DownSampleScanline8Bit(int orig_Bpp, - int dest_Bpp, - FX_DWORD src_width, - const uint8_t* pSrcLine, - uint8_t* dest_scan, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const { - if (m_bpc < 8) { - uint64_t src_bit_pos = 0; - for (FX_DWORD col = 0; col < src_width; col++) { - unsigned int color_index = 0; - for (FX_DWORD color = 0; color < m_nComponents; color++) { - unsigned int data = GetBits8(pSrcLine, src_bit_pos, m_bpc); - color_index |= data << (color * m_bpc); - src_bit_pos += m_bpc; - } - m_pLineBuf[col] = color_index; - } - pSrcLine = m_pLineBuf; - } - if (m_bColorKey) { - for (int i = 0; i < clip_width; i++) { - FX_DWORD src_x = (clip_left + i) * src_width / dest_width; - if (bFlipX) { - src_x = src_width - src_x - 1; - } - src_x %= src_width; - uint8_t* pDestPixel = dest_scan + i * 4; - uint8_t index = pSrcLine[src_x]; - if (m_pPalette) { - *pDestPixel++ = FXARGB_B(m_pPalette[index]); - *pDestPixel++ = FXARGB_G(m_pPalette[index]); - *pDestPixel++ = FXARGB_R(m_pPalette[index]); - } else { - *pDestPixel++ = index; - *pDestPixel++ = index; - *pDestPixel++ = index; - } - *pDestPixel = (index < m_pCompData[0].m_ColorKeyMin || - index > m_pCompData[0].m_ColorKeyMax) - ? 0xFF - : 0; - } - return; - } - for (int i = 0; i < clip_width; i++) { - FX_DWORD src_x = (clip_left + i) * src_width / dest_width; - if (bFlipX) { - src_x = src_width - src_x - 1; - } - src_x %= src_width; - uint8_t index = pSrcLine[src_x]; - if (dest_Bpp == 1) { - dest_scan[i] = index; - } else { - int dest_pos = i * dest_Bpp; - FX_ARGB argb = m_pPalette[index]; - dest_scan[dest_pos] = FXARGB_B(argb); - dest_scan[dest_pos + 1] = FXARGB_G(argb); - dest_scan[dest_pos + 2] = FXARGB_R(argb); - } - } -} - -void CPDF_DIBSource::DownSampleScanline32Bit(int orig_Bpp, - int dest_Bpp, - FX_DWORD src_width, - const uint8_t* pSrcLine, - uint8_t* dest_scan, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const { - // last_src_x used to store the last seen src_x position which should be - // in [0, src_width). Set the initial value to be an invalid src_x value. - FX_DWORD last_src_x = src_width; - FX_ARGB last_argb = FXARGB_MAKE(0xFF, 0xFF, 0xFF, 0xFF); - FX_FLOAT unit_To8Bpc = 255.0f / ((1 << m_bpc) - 1); - for (int i = 0; i < clip_width; i++) { - int dest_x = clip_left + i; - FX_DWORD src_x = (bFlipX ? (dest_width - dest_x - 1) : dest_x) * - (int64_t)src_width / dest_width; - src_x %= src_width; - - uint8_t* pDestPixel = dest_scan + i * dest_Bpp; - FX_ARGB argb; - if (src_x == last_src_x) { - argb = last_argb; - } else { - CFX_FixedBufGrow extracted_components(m_nComponents); - const uint8_t* pSrcPixel = nullptr; - if (m_bpc % 8 != 0) { - // No need to check for 32-bit overflow, as |src_x| is bounded by - // |src_width| and DownSampleScanline() already checked for overflow - // with the pitch calculation. - size_t num_bits = src_x * m_bpc * m_nComponents; - uint64_t src_bit_pos = num_bits % 8; - pSrcPixel = pSrcLine + num_bits / 8; - for (FX_DWORD j = 0; j < m_nComponents; ++j) { - extracted_components[j] = static_cast( - GetBits8(pSrcPixel, src_bit_pos, m_bpc) * unit_To8Bpc); - src_bit_pos += m_bpc; - } - pSrcPixel = extracted_components; - } else { - pSrcPixel = pSrcLine + src_x * orig_Bpp; - if (m_bpc == 16) { - for (FX_DWORD j = 0; j < m_nComponents; ++j) - extracted_components[j] = pSrcPixel[j * 2]; - pSrcPixel = extracted_components; - } - } - - if (m_pColorSpace) { - uint8_t color[4]; - const FX_BOOL bTransMask = TransMask(); - if (m_bDefaultDecode) { - m_pColorSpace->TranslateImageLine(color, pSrcPixel, 1, 0, 0, - bTransMask); - } else { - for (FX_DWORD j = 0; j < m_nComponents; ++j) { - FX_FLOAT component_value = - static_cast(extracted_components[j]); - int color_value = static_cast( - (m_pCompData[j].m_DecodeMin + - m_pCompData[j].m_DecodeStep * component_value) * - 255.0f + - 0.5f); - extracted_components[j] = - color_value > 255 ? 255 : (color_value < 0 ? 0 : color_value); - } - m_pColorSpace->TranslateImageLine(color, extracted_components, 1, 0, - 0, bTransMask); - } - argb = FXARGB_MAKE(0xFF, color[2], color[1], color[0]); - } else { - argb = FXARGB_MAKE(0xFF, pSrcPixel[2], pSrcPixel[1], pSrcPixel[0]); - } - if (m_bColorKey) { - int alpha = 0xFF; - if (m_nComponents == 3 && m_bpc == 8) { - alpha = (pSrcPixel[0] < m_pCompData[0].m_ColorKeyMin || - pSrcPixel[0] > m_pCompData[0].m_ColorKeyMax || - pSrcPixel[1] < m_pCompData[1].m_ColorKeyMin || - pSrcPixel[1] > m_pCompData[1].m_ColorKeyMax || - pSrcPixel[2] < m_pCompData[2].m_ColorKeyMin || - pSrcPixel[2] > m_pCompData[2].m_ColorKeyMax) - ? 0xFF - : 0; - } - argb &= 0xFFFFFF; - argb |= alpha << 24; - } - last_src_x = src_x; - last_argb = argb; - } - if (dest_Bpp == 4) { - *reinterpret_cast(pDestPixel) = FXARGB_TODIB(argb); - } else { - *pDestPixel++ = FXARGB_B(argb); - *pDestPixel++ = FXARGB_G(argb); - *pDestPixel = FXARGB_R(argb); - } - } -} - -FX_BOOL CPDF_DIBSource::TransMask() const { - return m_bLoadMask && m_GroupFamily == PDFCS_DEVICECMYK && - m_Family == PDFCS_DEVICECMYK; -} - -void CPDF_DIBSource::SetDownSampleSize(int dest_width, int dest_height) { - if (m_pDecoder) { - m_pDecoder->DownScale(dest_width, dest_height); - m_Width = m_pDecoder->GetWidth(); - m_Height = m_pDecoder->GetHeight(); - } -} - -void CPDF_DIBSource::ClearImageData() { - if (m_pDecoder) { - m_pDecoder->ClearImageData(); - } -} - -CPDF_ImageLoaderHandle::CPDF_ImageLoaderHandle() { - m_pImageLoader = nullptr; - m_pCache = nullptr; - m_pImage = nullptr; -} - -CPDF_ImageLoaderHandle::~CPDF_ImageLoaderHandle() {} - -FX_BOOL CPDF_ImageLoaderHandle::Start(CPDF_ImageLoader* pImageLoader, - const CPDF_ImageObject* pImage, - CPDF_PageRenderCache* pCache, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask, - CPDF_RenderStatus* pRenderStatus, - int32_t nDownsampleWidth, - int32_t nDownsampleHeight) { - m_pImageLoader = pImageLoader; - m_pCache = pCache; - m_pImage = const_cast(pImage); - m_nDownsampleWidth = nDownsampleWidth; - m_nDownsampleHeight = nDownsampleHeight; - FX_BOOL ret; - if (pCache) { - ret = pCache->StartGetCachedBitmap(pImage->m_pImage->GetStream(), bStdCS, - GroupFamily, bLoadMask, pRenderStatus, - m_nDownsampleWidth, m_nDownsampleHeight); - if (!ret) { - m_pImageLoader->m_bCached = TRUE; - m_pImageLoader->m_pBitmap = - pCache->GetCurImageCacheEntry()->DetachBitmap(); - m_pImageLoader->m_pMask = pCache->GetCurImageCacheEntry()->DetachMask(); - m_pImageLoader->m_MatteColor = - pCache->GetCurImageCacheEntry()->m_MatteColor; - } - } else { - ret = pImage->m_pImage->StartLoadDIBSource(pRenderStatus->m_pFormResource, - pRenderStatus->m_pPageResource, - bStdCS, GroupFamily, bLoadMask); - if (!ret) { - m_pImageLoader->m_bCached = FALSE; - m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap(); - m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask(); - m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor; - } - } - return ret; -} - -FX_BOOL CPDF_ImageLoaderHandle::Continue(IFX_Pause* pPause) { - FX_BOOL ret; - if (m_pCache) { - ret = m_pCache->Continue(pPause); - if (!ret) { - m_pImageLoader->m_bCached = TRUE; - m_pImageLoader->m_pBitmap = - m_pCache->GetCurImageCacheEntry()->DetachBitmap(); - m_pImageLoader->m_pMask = m_pCache->GetCurImageCacheEntry()->DetachMask(); - m_pImageLoader->m_MatteColor = - m_pCache->GetCurImageCacheEntry()->m_MatteColor; - } - } else { - ret = m_pImage->m_pImage->Continue(pPause); - if (!ret) { - m_pImageLoader->m_bCached = FALSE; - m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap(); - m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask(); - m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor; - } - } - return ret; -} - -FX_BOOL CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage, - CPDF_PageRenderCache* pCache, - CPDF_ImageLoaderHandle*& LoadHandle, - FX_BOOL bStdCS, - FX_DWORD GroupFamily, - FX_BOOL bLoadMask, - CPDF_RenderStatus* pRenderStatus, - int32_t nDownsampleWidth, - int32_t nDownsampleHeight) { - m_nDownsampleWidth = nDownsampleWidth; - m_nDownsampleHeight = nDownsampleHeight; - LoadHandle = new CPDF_ImageLoaderHandle; - return LoadHandle->Start(this, pImage, pCache, bStdCS, GroupFamily, bLoadMask, - pRenderStatus, m_nDownsampleWidth, - m_nDownsampleHeight); -} - -FX_BOOL CPDF_ImageLoader::Continue(CPDF_ImageLoaderHandle* LoadHandle, - IFX_Pause* pPause) { - return LoadHandle->Continue(pPause); -} - -CPDF_ImageLoader::~CPDF_ImageLoader() { - if (!m_bCached) { - delete m_pBitmap; - delete m_pMask; - } -} diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp deleted file mode 100644 index 427abb8e37..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "testing/embedder_test.h" -#include "testing/gtest/include/gtest/gtest.h" - -class FPDFRenderLoadImageEmbeddertest : public EmbedderTest {}; - -TEST_F(FPDFRenderLoadImageEmbeddertest, Bug_554151) { - // Test scanline downsampling with a BitsPerComponent of 4. - // Should not crash. - EXPECT_TRUE(OpenDocument("bug_554151.pdf")); - FPDF_PAGE page = LoadPage(0); - EXPECT_NE(nullptr, page); - FPDF_BITMAP bitmap = RenderPage(page); - FPDFBitmap_Destroy(bitmap); - UnloadPage(page); -} - -TEST_F(FPDFRenderLoadImageEmbeddertest, Bug_557223) { - // Should not crash - EXPECT_TRUE(OpenDocument("bug_557223.pdf")); - FPDF_PAGE page = LoadPage(0); - EXPECT_NE(nullptr, page); - FPDF_BITMAP bitmap = RenderPage(page); - FPDFBitmap_Destroy(bitmap); - UnloadPage(page); -} diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp deleted file mode 100644 index 7e45399eef..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp +++ /dev/null @@ -1,1207 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_render/render_int.h" - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -#define SHADING_STEPS 256 -static void DrawAxialShading(CFX_DIBitmap* pBitmap, - CFX_Matrix* pObject2Bitmap, - CPDF_Dictionary* pDict, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS, - int alpha) { - ASSERT(pBitmap->GetFormat() == FXDIB_Argb); - CPDF_Array* pCoords = pDict->GetArrayBy("Coords"); - if (!pCoords) { - return; - } - FX_FLOAT start_x = pCoords->GetNumberAt(0); - FX_FLOAT start_y = pCoords->GetNumberAt(1); - FX_FLOAT end_x = pCoords->GetNumberAt(2); - FX_FLOAT end_y = pCoords->GetNumberAt(3); - FX_FLOAT t_min = 0, t_max = 1.0f; - CPDF_Array* pArray = pDict->GetArrayBy("Domain"); - if (pArray) { - t_min = pArray->GetNumberAt(0); - t_max = pArray->GetNumberAt(1); - } - FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE; - pArray = pDict->GetArrayBy("Extend"); - if (pArray) { - bStartExtend = pArray->GetIntegerAt(0); - bEndExtend = pArray->GetIntegerAt(1); - } - int width = pBitmap->GetWidth(); - int height = pBitmap->GetHeight(); - FX_FLOAT x_span = end_x - start_x; - FX_FLOAT y_span = end_y - start_y; - FX_FLOAT axis_len_square = (x_span * x_span) + (y_span * y_span); - CFX_Matrix matrix; - matrix.SetReverse(*pObject2Bitmap); - int total_results = 0; - for (int j = 0; j < nFuncs; j++) { - if (pFuncs[j]) { - total_results += pFuncs[j]->CountOutputs(); - } - } - if (pCS->CountComponents() > total_results) { - total_results = pCS->CountComponents(); - } - CFX_FixedBufGrow result_array(total_results); - FX_FLOAT* pResults = result_array; - FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT)); - FX_DWORD rgb_array[SHADING_STEPS]; - for (int i = 0; i < SHADING_STEPS; i++) { - FX_FLOAT input = (t_max - t_min) * i / SHADING_STEPS + t_min; - int offset = 0; - for (int j = 0; j < nFuncs; j++) { - if (pFuncs[j]) { - int nresults = 0; - if (pFuncs[j]->Call(&input, 1, pResults + offset, nresults)) { - offset += nresults; - } - } - } - FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; - pCS->GetRGB(pResults, R, G, B); - rgb_array[i] = - FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255), - FXSYS_round(G * 255), FXSYS_round(B * 255))); - } - int pitch = pBitmap->GetPitch(); - for (int row = 0; row < height; row++) { - FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); - for (int column = 0; column < width; column++) { - FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; - matrix.Transform(x, y); - FX_FLOAT scale = (((x - start_x) * x_span) + ((y - start_y) * y_span)) / - axis_len_square; - int index = (int32_t)(scale * (SHADING_STEPS - 1)); - if (index < 0) { - if (!bStartExtend) { - continue; - } - index = 0; - } else if (index >= SHADING_STEPS) { - if (!bEndExtend) { - continue; - } - index = SHADING_STEPS - 1; - } - dib_buf[column] = rgb_array[index]; - } - } -} -static void DrawRadialShading(CFX_DIBitmap* pBitmap, - CFX_Matrix* pObject2Bitmap, - CPDF_Dictionary* pDict, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS, - int alpha) { - ASSERT(pBitmap->GetFormat() == FXDIB_Argb); - CPDF_Array* pCoords = pDict->GetArrayBy("Coords"); - if (!pCoords) { - return; - } - FX_FLOAT start_x = pCoords->GetNumberAt(0); - FX_FLOAT start_y = pCoords->GetNumberAt(1); - FX_FLOAT start_r = pCoords->GetNumberAt(2); - FX_FLOAT end_x = pCoords->GetNumberAt(3); - FX_FLOAT end_y = pCoords->GetNumberAt(4); - FX_FLOAT end_r = pCoords->GetNumberAt(5); - CFX_Matrix matrix; - matrix.SetReverse(*pObject2Bitmap); - FX_FLOAT t_min = 0, t_max = 1.0f; - CPDF_Array* pArray = pDict->GetArrayBy("Domain"); - if (pArray) { - t_min = pArray->GetNumberAt(0); - t_max = pArray->GetNumberAt(1); - } - FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE; - pArray = pDict->GetArrayBy("Extend"); - if (pArray) { - bStartExtend = pArray->GetIntegerAt(0); - bEndExtend = pArray->GetIntegerAt(1); - } - int total_results = 0; - for (int j = 0; j < nFuncs; j++) { - if (pFuncs[j]) { - total_results += pFuncs[j]->CountOutputs(); - } - } - if (pCS->CountComponents() > total_results) { - total_results = pCS->CountComponents(); - } - CFX_FixedBufGrow result_array(total_results); - FX_FLOAT* pResults = result_array; - FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT)); - FX_DWORD rgb_array[SHADING_STEPS]; - for (int i = 0; i < SHADING_STEPS; i++) { - FX_FLOAT input = (t_max - t_min) * i / SHADING_STEPS + t_min; - int offset = 0; - for (int j = 0; j < nFuncs; j++) { - if (pFuncs[j]) { - int nresults; - if (pFuncs[j]->Call(&input, 1, pResults + offset, nresults)) { - offset += nresults; - } - } - } - FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; - pCS->GetRGB(pResults, R, G, B); - rgb_array[i] = - FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255), - FXSYS_round(G * 255), FXSYS_round(B * 255))); - } - FX_FLOAT a = ((start_x - end_x) * (start_x - end_x)) + - ((start_y - end_y) * (start_y - end_y)) - - ((start_r - end_r) * (start_r - end_r)); - int width = pBitmap->GetWidth(); - int height = pBitmap->GetHeight(); - int pitch = pBitmap->GetPitch(); - FX_BOOL bDecreasing = FALSE; - if (start_r > end_r) { - int length = (int)FXSYS_sqrt((((start_x - end_x) * (start_x - end_x)) + - ((start_y - end_y) * (start_y - end_y)))); - if (length < start_r - end_r) { - bDecreasing = TRUE; - } - } - for (int row = 0; row < height; row++) { - FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); - for (int column = 0; column < width; column++) { - FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; - matrix.Transform(x, y); - FX_FLOAT b = -2 * (((x - start_x) * (end_x - start_x)) + - ((y - start_y) * (end_y - start_y)) + - (start_r * (end_r - start_r))); - FX_FLOAT c = ((x - start_x) * (x - start_x)) + - ((y - start_y) * (y - start_y)) - (start_r * start_r); - FX_FLOAT s; - if (a == 0) { - s = -c / b; - } else { - FX_FLOAT b2_4ac = (b * b) - 4 * (a * c); - if (b2_4ac < 0) { - continue; - } - FX_FLOAT root = FXSYS_sqrt(b2_4ac); - FX_FLOAT s1, s2; - if (a > 0) { - s1 = (-b - root) / (2 * a); - s2 = (-b + root) / (2 * a); - } else { - s2 = (-b - root) / (2 * a); - s1 = (-b + root) / (2 * a); - } - if (bDecreasing) { - if (s1 >= 0 || bStartExtend) { - s = s1; - } else { - s = s2; - } - } else { - if (s2 <= 1.0f || bEndExtend) { - s = s2; - } else { - s = s1; - } - } - if ((start_r + s * (end_r - start_r)) < 0) { - continue; - } - } - int index = (int32_t)(s * (SHADING_STEPS - 1)); - if (index < 0) { - if (!bStartExtend) { - continue; - } - index = 0; - } - if (index >= SHADING_STEPS) { - if (!bEndExtend) { - continue; - } - index = SHADING_STEPS - 1; - } - dib_buf[column] = rgb_array[index]; - } - } -} -static void DrawFuncShading(CFX_DIBitmap* pBitmap, - CFX_Matrix* pObject2Bitmap, - CPDF_Dictionary* pDict, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS, - int alpha) { - ASSERT(pBitmap->GetFormat() == FXDIB_Argb); - CPDF_Array* pDomain = pDict->GetArrayBy("Domain"); - FX_FLOAT xmin = 0, ymin = 0, xmax = 1.0f, ymax = 1.0f; - if (pDomain) { - xmin = pDomain->GetNumberAt(0); - xmax = pDomain->GetNumberAt(1); - ymin = pDomain->GetNumberAt(2); - ymax = pDomain->GetNumberAt(3); - } - CFX_Matrix mtDomain2Target = pDict->GetMatrixBy("Matrix"); - CFX_Matrix matrix, reverse_matrix; - matrix.SetReverse(*pObject2Bitmap); - reverse_matrix.SetReverse(mtDomain2Target); - matrix.Concat(reverse_matrix); - int width = pBitmap->GetWidth(); - int height = pBitmap->GetHeight(); - int pitch = pBitmap->GetPitch(); - int total_results = 0; - for (int j = 0; j < nFuncs; j++) { - if (pFuncs[j]) { - total_results += pFuncs[j]->CountOutputs(); - } - } - if (pCS->CountComponents() > total_results) { - total_results = pCS->CountComponents(); - } - CFX_FixedBufGrow result_array(total_results); - FX_FLOAT* pResults = result_array; - FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT)); - for (int row = 0; row < height; row++) { - FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch); - for (int column = 0; column < width; column++) { - FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row; - matrix.Transform(x, y); - if (x < xmin || x > xmax || y < ymin || y > ymax) { - continue; - } - FX_FLOAT input[2]; - int offset = 0; - input[0] = x; - input[1] = y; - for (int j = 0; j < nFuncs; j++) { - if (pFuncs[j]) { - int nresults; - if (pFuncs[j]->Call(input, 2, pResults + offset, nresults)) { - offset += nresults; - } - } - } - FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; - pCS->GetRGB(pResults, R, G, B); - dib_buf[column] = FXARGB_TODIB(FXARGB_MAKE( - alpha, (int32_t)(R * 255), (int32_t)(G * 255), (int32_t)(B * 255))); - } - } -} -FX_BOOL _GetScanlineIntersect(int y, - FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_FLOAT& x) { - if (y1 == y2) { - return FALSE; - } - if (y1 < y2) { - if (y < y1 || y > y2) { - return FALSE; - } - } else { - if (y < y2 || y > y1) { - return FALSE; - } - } - x = x1 + ((x2 - x1) * (y - y1) / (y2 - y1)); - return TRUE; -} -static void DrawGouraud(CFX_DIBitmap* pBitmap, - int alpha, - CPDF_MeshVertex triangle[3]) { - FX_FLOAT min_y = triangle[0].y, max_y = triangle[0].y; - for (int i = 1; i < 3; i++) { - if (min_y > triangle[i].y) { - min_y = triangle[i].y; - } - if (max_y < triangle[i].y) { - max_y = triangle[i].y; - } - } - if (min_y == max_y) { - return; - } - int min_yi = (int)FXSYS_floor(min_y), max_yi = (int)FXSYS_ceil(max_y); - if (min_yi < 0) { - min_yi = 0; - } - if (max_yi >= pBitmap->GetHeight()) { - max_yi = pBitmap->GetHeight() - 1; - } - for (int y = min_yi; y <= max_yi; y++) { - int nIntersects = 0; - FX_FLOAT inter_x[3], r[3], g[3], b[3]; - for (int i = 0; i < 3; i++) { - CPDF_MeshVertex& vertex1 = triangle[i]; - CPDF_MeshVertex& vertex2 = triangle[(i + 1) % 3]; - FX_BOOL bIntersect = _GetScanlineIntersect( - y, vertex1.x, vertex1.y, vertex2.x, vertex2.y, inter_x[nIntersects]); - if (!bIntersect) { - continue; - } - - FX_FLOAT y_dist = (y - vertex1.y) / (vertex2.y - vertex1.y); - r[nIntersects] = vertex1.r + ((vertex2.r - vertex1.r) * y_dist); - g[nIntersects] = vertex1.g + ((vertex2.g - vertex1.g) * y_dist); - b[nIntersects] = vertex1.b + ((vertex2.b - vertex1.b) * y_dist); - nIntersects++; - } - if (nIntersects != 2) { - continue; - } - int min_x, max_x, start_index, end_index; - if (inter_x[0] < inter_x[1]) { - min_x = (int)FXSYS_floor(inter_x[0]); - max_x = (int)FXSYS_ceil(inter_x[1]); - start_index = 0; - end_index = 1; - } else { - min_x = (int)FXSYS_floor(inter_x[1]); - max_x = (int)FXSYS_ceil(inter_x[0]); - start_index = 1; - end_index = 0; - } - int start_x = min_x, end_x = max_x; - if (start_x < 0) { - start_x = 0; - } - if (end_x > pBitmap->GetWidth()) { - end_x = pBitmap->GetWidth(); - } - uint8_t* dib_buf = - pBitmap->GetBuffer() + y * pBitmap->GetPitch() + start_x * 4; - FX_FLOAT r_unit = (r[end_index] - r[start_index]) / (max_x - min_x); - FX_FLOAT g_unit = (g[end_index] - g[start_index]) / (max_x - min_x); - FX_FLOAT b_unit = (b[end_index] - b[start_index]) / (max_x - min_x); - FX_FLOAT R = r[start_index] + (start_x - min_x) * r_unit; - FX_FLOAT G = g[start_index] + (start_x - min_x) * g_unit; - FX_FLOAT B = b[start_index] + (start_x - min_x) * b_unit; - for (int x = start_x; x < end_x; x++) { - R += r_unit; - G += g_unit; - B += b_unit; - FXARGB_SETDIB(dib_buf, - FXARGB_MAKE(alpha, (int32_t)(R * 255), (int32_t)(G * 255), - (int32_t)(B * 255))); - dib_buf += 4; - } - } -} -static void DrawFreeGouraudShading(CFX_DIBitmap* pBitmap, - CFX_Matrix* pObject2Bitmap, - CPDF_Stream* pShadingStream, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS, - int alpha) { - ASSERT(pBitmap->GetFormat() == FXDIB_Argb); - - CPDF_MeshStream stream; - if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS)) - return; - - CPDF_MeshVertex triangle[3]; - FXSYS_memset(triangle, 0, sizeof(triangle)); - - while (!stream.m_BitStream.IsEOF()) { - CPDF_MeshVertex vertex; - FX_DWORD flag = stream.GetVertex(vertex, pObject2Bitmap); - if (flag == 0) { - triangle[0] = vertex; - for (int j = 1; j < 3; j++) { - stream.GetVertex(triangle[j], pObject2Bitmap); - } - } else { - if (flag == 1) { - triangle[0] = triangle[1]; - } - triangle[1] = triangle[2]; - triangle[2] = vertex; - } - DrawGouraud(pBitmap, alpha, triangle); - } -} -static void DrawLatticeGouraudShading(CFX_DIBitmap* pBitmap, - CFX_Matrix* pObject2Bitmap, - CPDF_Stream* pShadingStream, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS, - int alpha) { - ASSERT(pBitmap->GetFormat() == FXDIB_Argb); - - int row_verts = pShadingStream->GetDict()->GetIntegerBy("VerticesPerRow"); - if (row_verts < 2) - return; - - CPDF_MeshStream stream; - if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS)) - return; - - CPDF_MeshVertex* vertex = FX_Alloc2D(CPDF_MeshVertex, row_verts, 2); - if (!stream.GetVertexRow(vertex, row_verts, pObject2Bitmap)) { - FX_Free(vertex); - return; - } - int last_index = 0; - while (1) { - CPDF_MeshVertex* last_row = vertex + last_index * row_verts; - CPDF_MeshVertex* this_row = vertex + (1 - last_index) * row_verts; - if (!stream.GetVertexRow(this_row, row_verts, pObject2Bitmap)) { - FX_Free(vertex); - return; - } - CPDF_MeshVertex triangle[3]; - for (int i = 1; i < row_verts; i++) { - triangle[0] = last_row[i]; - triangle[1] = this_row[i - 1]; - triangle[2] = last_row[i - 1]; - DrawGouraud(pBitmap, alpha, triangle); - triangle[2] = this_row[i]; - DrawGouraud(pBitmap, alpha, triangle); - } - last_index = 1 - last_index; - } - FX_Free(vertex); -} -struct Coon_BezierCoeff { - float a, b, c, d; - void FromPoints(float p0, float p1, float p2, float p3) { - a = -p0 + 3 * p1 - 3 * p2 + p3; - b = 3 * p0 - 6 * p1 + 3 * p2; - c = -3 * p0 + 3 * p1; - d = p0; - } - Coon_BezierCoeff first_half() { - Coon_BezierCoeff result; - result.a = a / 8; - result.b = b / 4; - result.c = c / 2; - result.d = d; - return result; - } - Coon_BezierCoeff second_half() { - Coon_BezierCoeff result; - result.a = a / 8; - result.b = 3 * a / 8 + b / 4; - result.c = 3 * a / 8 + b / 2 + c / 2; - result.d = a / 8 + b / 4 + c / 2 + d; - return result; - } - void GetPoints(float p[4]) { - p[0] = d; - p[1] = c / 3 + p[0]; - p[2] = b / 3 - p[0] + 2 * p[1]; - p[3] = a + p[0] - 3 * p[1] + 3 * p[2]; - } - void GetPointsReverse(float p[4]) { - p[3] = d; - p[2] = c / 3 + p[3]; - p[1] = b / 3 - p[3] + 2 * p[2]; - p[0] = a + p[3] - 3 * p[2] + 3 * p[1]; - } - void BezierInterpol(Coon_BezierCoeff& C1, - Coon_BezierCoeff& C2, - Coon_BezierCoeff& D1, - Coon_BezierCoeff& D2) { - a = (D1.a + D2.a) / 2; - b = (D1.b + D2.b) / 2; - c = (D1.c + D2.c) / 2 - (C1.a / 8 + C1.b / 4 + C1.c / 2) + - (C2.a / 8 + C2.b / 4) + (-C1.d + D2.d) / 2 - (C2.a + C2.b) / 2; - d = C1.a / 8 + C1.b / 4 + C1.c / 2 + C1.d; - } - float Distance() { - float dis = a + b + c; - return dis < 0 ? -dis : dis; - } -}; -struct Coon_Bezier { - Coon_BezierCoeff x, y; - void FromPoints(float x0, - float y0, - float x1, - float y1, - float x2, - float y2, - float x3, - float y3) { - x.FromPoints(x0, x1, x2, x3); - y.FromPoints(y0, y1, y2, y3); - } - Coon_Bezier first_half() { - Coon_Bezier result; - result.x = x.first_half(); - result.y = y.first_half(); - return result; - } - Coon_Bezier second_half() { - Coon_Bezier result; - result.x = x.second_half(); - result.y = y.second_half(); - return result; - } - void BezierInterpol(Coon_Bezier& C1, - Coon_Bezier& C2, - Coon_Bezier& D1, - Coon_Bezier& D2) { - x.BezierInterpol(C1.x, C2.x, D1.x, D2.x); - y.BezierInterpol(C1.y, C2.y, D1.y, D2.y); - } - void GetPoints(FX_PATHPOINT* pPoints) { - float p[4]; - int i; - x.GetPoints(p); - for (i = 0; i < 4; i++) { - pPoints[i].m_PointX = p[i]; - } - y.GetPoints(p); - for (i = 0; i < 4; i++) { - pPoints[i].m_PointY = p[i]; - } - } - void GetPointsReverse(FX_PATHPOINT* pPoints) { - float p[4]; - int i; - x.GetPointsReverse(p); - for (i = 0; i < 4; i++) { - pPoints[i].m_PointX = p[i]; - } - y.GetPointsReverse(p); - for (i = 0; i < 4; i++) { - pPoints[i].m_PointY = p[i]; - } - } - float Distance() { return x.Distance() + y.Distance(); } -}; -static int _BiInterpol(int c0, - int c1, - int c2, - int c3, - int x, - int y, - int x_scale, - int y_scale) { - int x1 = c0 + (c3 - c0) * x / x_scale; - int x2 = c1 + (c2 - c1) * x / x_scale; - return x1 + (x2 - x1) * y / y_scale; -} -struct Coon_Color { - Coon_Color() { FXSYS_memset(comp, 0, sizeof(int) * 3); } - int comp[3]; - void BiInterpol(Coon_Color colors[4], - int x, - int y, - int x_scale, - int y_scale) { - for (int i = 0; i < 3; i++) - comp[i] = - _BiInterpol(colors[0].comp[i], colors[1].comp[i], colors[2].comp[i], - colors[3].comp[i], x, y, x_scale, y_scale); - } - int Distance(Coon_Color& o) { - int max, diff; - max = FXSYS_abs(comp[0] - o.comp[0]); - diff = FXSYS_abs(comp[1] - o.comp[1]); - if (max < diff) { - max = diff; - } - diff = FXSYS_abs(comp[2] - o.comp[2]); - if (max < diff) { - max = diff; - } - return max; - } -}; -struct CPDF_PatchDrawer { - Coon_Color patch_colors[4]; - int max_delta; - CFX_PathData path; - CFX_RenderDevice* pDevice; - int fill_mode; - int alpha; - void Draw(int x_scale, - int y_scale, - int left, - int bottom, - Coon_Bezier C1, - Coon_Bezier C2, - Coon_Bezier D1, - Coon_Bezier D2) { - FX_BOOL bSmall = C1.Distance() < 2 && C2.Distance() < 2 && - D1.Distance() < 2 && D2.Distance() < 2; - Coon_Color div_colors[4]; - int d_bottom, d_left, d_top, d_right; - div_colors[0].BiInterpol(patch_colors, left, bottom, x_scale, y_scale); - if (!bSmall) { - div_colors[1].BiInterpol(patch_colors, left, bottom + 1, x_scale, - y_scale); - div_colors[2].BiInterpol(patch_colors, left + 1, bottom + 1, x_scale, - y_scale); - div_colors[3].BiInterpol(patch_colors, left + 1, bottom, x_scale, - y_scale); - d_bottom = div_colors[3].Distance(div_colors[0]); - d_left = div_colors[1].Distance(div_colors[0]); - d_top = div_colors[1].Distance(div_colors[2]); - d_right = div_colors[2].Distance(div_colors[3]); - } -#define COONCOLOR_THRESHOLD 4 - if (bSmall || - (d_bottom < COONCOLOR_THRESHOLD && d_left < COONCOLOR_THRESHOLD && - d_top < COONCOLOR_THRESHOLD && d_right < COONCOLOR_THRESHOLD)) { - FX_PATHPOINT* pPoints = path.GetPoints(); - C1.GetPoints(pPoints); - D2.GetPoints(pPoints + 3); - C2.GetPointsReverse(pPoints + 6); - D1.GetPointsReverse(pPoints + 9); - int fillFlags = FXFILL_WINDING | FXFILL_FULLCOVER; - if (fill_mode & RENDER_NOPATHSMOOTH) { - fillFlags |= FXFILL_NOPATHSMOOTH; - } - pDevice->DrawPath( - &path, NULL, NULL, - FXARGB_MAKE(alpha, div_colors[0].comp[0], div_colors[0].comp[1], - div_colors[0].comp[2]), - 0, fillFlags); - } else { - if (d_bottom < COONCOLOR_THRESHOLD && d_top < COONCOLOR_THRESHOLD) { - Coon_Bezier m1; - m1.BezierInterpol(D1, D2, C1, C2); - y_scale *= 2; - bottom *= 2; - Draw(x_scale, y_scale, left, bottom, C1, m1, D1.first_half(), - D2.first_half()); - Draw(x_scale, y_scale, left, bottom + 1, m1, C2, D1.second_half(), - D2.second_half()); - } else if (d_left < COONCOLOR_THRESHOLD && - d_right < COONCOLOR_THRESHOLD) { - Coon_Bezier m2; - m2.BezierInterpol(C1, C2, D1, D2); - x_scale *= 2; - left *= 2; - Draw(x_scale, y_scale, left, bottom, C1.first_half(), C2.first_half(), - D1, m2); - Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(), - C2.second_half(), m2, D2); - } else { - Coon_Bezier m1, m2; - m1.BezierInterpol(D1, D2, C1, C2); - m2.BezierInterpol(C1, C2, D1, D2); - Coon_Bezier m1f = m1.first_half(); - Coon_Bezier m1s = m1.second_half(); - Coon_Bezier m2f = m2.first_half(); - Coon_Bezier m2s = m2.second_half(); - x_scale *= 2; - y_scale *= 2; - left *= 2; - bottom *= 2; - Draw(x_scale, y_scale, left, bottom, C1.first_half(), m1f, - D1.first_half(), m2f); - Draw(x_scale, y_scale, left, bottom + 1, m1f, C2.first_half(), - D1.second_half(), m2s); - Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(), m1s, m2f, - D2.first_half()); - Draw(x_scale, y_scale, left + 1, bottom + 1, m1s, C2.second_half(), m2s, - D2.second_half()); - } - } - } -}; - -bool _CheckCoonTensorPara(const CPDF_MeshStream& stream) { - bool bCoorBits = (stream.m_nCoordBits == 1 || stream.m_nCoordBits == 2 || - stream.m_nCoordBits == 4 || stream.m_nCoordBits == 8 || - stream.m_nCoordBits == 12 || stream.m_nCoordBits == 16 || - stream.m_nCoordBits == 24 || stream.m_nCoordBits == 32); - - bool bCompBits = (stream.m_nCompBits == 1 || stream.m_nCompBits == 2 || - stream.m_nCompBits == 4 || stream.m_nCompBits == 8 || - stream.m_nCompBits == 12 || stream.m_nCompBits == 16); - - bool bFlagBits = (stream.m_nFlagBits == 2 || stream.m_nFlagBits == 4 || - stream.m_nFlagBits == 8); - - return bCoorBits && bCompBits && bFlagBits; -} - -static void DrawCoonPatchMeshes(FX_BOOL bTensor, - CFX_DIBitmap* pBitmap, - CFX_Matrix* pObject2Bitmap, - CPDF_Stream* pShadingStream, - CPDF_Function** pFuncs, - int nFuncs, - CPDF_ColorSpace* pCS, - int fill_mode, - int alpha) { - ASSERT(pBitmap->GetFormat() == FXDIB_Argb); - - CFX_FxgeDevice device; - device.Attach(pBitmap); - CPDF_MeshStream stream; - if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS)) - return; - if (!_CheckCoonTensorPara(stream)) - return; - - CPDF_PatchDrawer patch; - patch.alpha = alpha; - patch.pDevice = &device; - patch.fill_mode = fill_mode; - patch.path.SetPointCount(13); - FX_PATHPOINT* pPoints = patch.path.GetPoints(); - pPoints[0].m_Flag = FXPT_MOVETO; - for (int i = 1; i < 13; i++) { - pPoints[i].m_Flag = FXPT_BEZIERTO; - } - CFX_PointF coords[16]; - int point_count = bTensor ? 16 : 12; - while (!stream.m_BitStream.IsEOF()) { - FX_DWORD flag = stream.GetFlag(); - int iStartPoint = 0, iStartColor = 0, i = 0; - if (flag) { - iStartPoint = 4; - iStartColor = 2; - CFX_PointF tempCoords[4]; - for (i = 0; i < 4; i++) { - tempCoords[i] = coords[(flag * 3 + i) % 12]; - } - FXSYS_memcpy(coords, tempCoords, sizeof(tempCoords)); - Coon_Color tempColors[2]; - tempColors[0] = patch.patch_colors[flag]; - tempColors[1] = patch.patch_colors[(flag + 1) % 4]; - FXSYS_memcpy(patch.patch_colors, tempColors, sizeof(Coon_Color) * 2); - } - for (i = iStartPoint; i < point_count; i++) { - stream.GetCoords(coords[i].x, coords[i].y); - pObject2Bitmap->Transform(coords[i].x, coords[i].y); - } - for (i = iStartColor; i < 4; i++) { - FX_FLOAT r = 0.0f, g = 0.0f, b = 0.0f; - stream.GetColor(r, g, b); - patch.patch_colors[i].comp[0] = (int32_t)(r * 255); - patch.patch_colors[i].comp[1] = (int32_t)(g * 255); - patch.patch_colors[i].comp[2] = (int32_t)(b * 255); - } - CFX_FloatRect bbox = CFX_FloatRect::GetBBox(coords, point_count); - if (bbox.right <= 0 || bbox.left >= (FX_FLOAT)pBitmap->GetWidth() || - bbox.top <= 0 || bbox.bottom >= (FX_FLOAT)pBitmap->GetHeight()) { - continue; - } - Coon_Bezier C1, C2, D1, D2; - C1.FromPoints(coords[0].x, coords[0].y, coords[11].x, coords[11].y, - coords[10].x, coords[10].y, coords[9].x, coords[9].y); - C2.FromPoints(coords[3].x, coords[3].y, coords[4].x, coords[4].y, - coords[5].x, coords[5].y, coords[6].x, coords[6].y); - D1.FromPoints(coords[0].x, coords[0].y, coords[1].x, coords[1].y, - coords[2].x, coords[2].y, coords[3].x, coords[3].y); - D2.FromPoints(coords[9].x, coords[9].y, coords[8].x, coords[8].y, - coords[7].x, coords[7].y, coords[6].x, coords[6].y); - patch.Draw(1, 1, 0, 0, C1, C2, D1, D2); - } -} -void CPDF_RenderStatus::DrawShading(CPDF_ShadingPattern* pPattern, - CFX_Matrix* pMatrix, - FX_RECT& clip_rect, - int alpha, - FX_BOOL bAlphaMode) { - CPDF_Function** pFuncs = pPattern->m_pFunctions; - int nFuncs = pPattern->m_nFuncs; - CPDF_Dictionary* pDict = pPattern->m_pShadingObj->GetDict(); - CPDF_ColorSpace* pColorSpace = pPattern->m_pCS; - if (!pColorSpace) { - return; - } - FX_ARGB background = 0; - if (!pPattern->m_bShadingObj && - pPattern->m_pShadingObj->GetDict()->KeyExist("Background")) { - CPDF_Array* pBackColor = - pPattern->m_pShadingObj->GetDict()->GetArrayBy("Background"); - if (pBackColor && - pBackColor->GetCount() >= pColorSpace->CountComponents()) { - CFX_FixedBufGrow comps(pColorSpace->CountComponents()); - for (int i = 0; i < pColorSpace->CountComponents(); i++) { - comps[i] = pBackColor->GetNumberAt(i); - } - FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f; - pColorSpace->GetRGB(comps, R, G, B); - background = ArgbEncode(255, (int32_t)(R * 255), (int32_t)(G * 255), - (int32_t)(B * 255)); - } - } - if (pDict->KeyExist("BBox")) { - CFX_FloatRect rect = pDict->GetRectBy("BBox"); - rect.Transform(pMatrix); - clip_rect.Intersect(rect.GetOutterRect()); - } - CPDF_DeviceBuffer buffer; - buffer.Initialize(m_pContext, m_pDevice, &clip_rect, m_pCurObj, 150); - CFX_Matrix FinalMatrix = *pMatrix; - FinalMatrix.Concat(*buffer.GetMatrix()); - CFX_DIBitmap* pBitmap = buffer.GetBitmap(); - if (!pBitmap->GetBuffer()) { - return; - } - pBitmap->Clear(background); - int fill_mode = m_Options.m_Flags; - switch (pPattern->m_ShadingType) { - case kInvalidShading: - case kMaxShading: - return; - case kFunctionBasedShading: - DrawFuncShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs, pColorSpace, - alpha); - break; - case kAxialShading: - DrawAxialShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs, - pColorSpace, alpha); - break; - case kRadialShading: - DrawRadialShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs, - pColorSpace, alpha); - break; - case kFreeFormGouraudTriangleMeshShading: { - DrawFreeGouraudShading(pBitmap, &FinalMatrix, - ToStream(pPattern->m_pShadingObj), pFuncs, nFuncs, - pColorSpace, alpha); - } break; - case kLatticeFormGouraudTriangleMeshShading: { - DrawLatticeGouraudShading(pBitmap, &FinalMatrix, - ToStream(pPattern->m_pShadingObj), pFuncs, - nFuncs, pColorSpace, alpha); - } break; - case kCoonsPatchMeshShading: - case kTensorProductPatchMeshShading: { - DrawCoonPatchMeshes( - pPattern->m_ShadingType == kTensorProductPatchMeshShading, pBitmap, - &FinalMatrix, ToStream(pPattern->m_pShadingObj), pFuncs, nFuncs, - pColorSpace, fill_mode, alpha); - } break; - } - if (bAlphaMode) { - pBitmap->LoadChannel(FXDIB_Red, pBitmap, FXDIB_Alpha); - } - if (m_Options.m_ColorMode == RENDER_COLOR_GRAY) { - pBitmap->ConvertColorScale(m_Options.m_ForeColor, m_Options.m_BackColor); - } - buffer.OutputToDevice(); -} -void CPDF_RenderStatus::DrawShadingPattern(CPDF_ShadingPattern* pattern, - const CPDF_PageObject* pPageObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStroke) { - if (!pattern->Load()) { - return; - } - m_pDevice->SaveState(); - if (pPageObj->IsPath()) { - if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) { - m_pDevice->RestoreState(); - return; - } - } else if (pPageObj->IsImage()) { - m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device)); - } else { - return; - } - FX_RECT rect; - if (GetObjectClippedRect(pPageObj, pObj2Device, FALSE, rect)) { - m_pDevice->RestoreState(); - return; - } - CFX_Matrix matrix = pattern->m_Pattern2Form; - matrix.Concat(*pObj2Device); - GetScaledMatrix(matrix); - int alpha = pPageObj->m_GeneralState.GetAlpha(bStroke); - DrawShading(pattern, &matrix, rect, alpha, - m_Options.m_ColorMode == RENDER_COLOR_ALPHA); - m_pDevice->RestoreState(); -} -FX_BOOL CPDF_RenderStatus::ProcessShading(const CPDF_ShadingObject* pShadingObj, - const CFX_Matrix* pObj2Device) { - FX_RECT rect = pShadingObj->GetBBox(pObj2Device); - FX_RECT clip_box = m_pDevice->GetClipBox(); - rect.Intersect(clip_box); - if (rect.IsEmpty()) { - return TRUE; - } - CFX_Matrix matrix = pShadingObj->m_Matrix; - matrix.Concat(*pObj2Device); - DrawShading(pShadingObj->m_pShading, &matrix, rect, - pShadingObj->m_GeneralState.GetAlpha(FALSE), - m_Options.m_ColorMode == RENDER_COLOR_ALPHA); - return TRUE; -} -static CFX_DIBitmap* DrawPatternBitmap(CPDF_Document* pDoc, - CPDF_PageRenderCache* pCache, - CPDF_TilingPattern* pPattern, - const CFX_Matrix* pObject2Device, - int width, - int height, - int flags) { - CFX_DIBitmap* pBitmap = new CFX_DIBitmap; - if (!pBitmap->Create(width, height, - pPattern->m_bColored ? FXDIB_Argb : FXDIB_8bppMask)) { - delete pBitmap; - return NULL; - } - CFX_FxgeDevice bitmap_device; - bitmap_device.Attach(pBitmap); - pBitmap->Clear(0); - CFX_FloatRect cell_bbox = pPattern->m_BBox; - pPattern->m_Pattern2Form.TransformRect(cell_bbox); - pObject2Device->TransformRect(cell_bbox); - CFX_FloatRect bitmap_rect(0.0f, 0.0f, (FX_FLOAT)width, (FX_FLOAT)height); - CFX_Matrix mtAdjust; - mtAdjust.MatchRect(bitmap_rect, cell_bbox); - CFX_Matrix mtPattern2Bitmap = *pObject2Device; - mtPattern2Bitmap.Concat(mtAdjust); - CPDF_RenderOptions options; - if (!pPattern->m_bColored) { - options.m_ColorMode = RENDER_COLOR_ALPHA; - } - flags |= RENDER_FORCE_HALFTONE; - options.m_Flags = flags; - CPDF_RenderContext context(pDoc, pCache); - context.AppendLayer(pPattern->m_pForm, &mtPattern2Bitmap); - context.Render(&bitmap_device, &options, nullptr); - return pBitmap; -} -void CPDF_RenderStatus::DrawTilingPattern(CPDF_TilingPattern* pPattern, - const CPDF_PageObject* pPageObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStroke) { - if (!pPattern->Load()) { - return; - } - m_pDevice->SaveState(); - if (pPageObj->IsPath()) { - if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) { - m_pDevice->RestoreState(); - return; - } - } else if (pPageObj->IsImage()) { - m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device)); - } else { - return; - } - FX_RECT clip_box = m_pDevice->GetClipBox(); - if (clip_box.IsEmpty()) { - m_pDevice->RestoreState(); - return; - } - CFX_Matrix dCTM = m_pDevice->GetCTM(); - FX_FLOAT sa = FXSYS_fabs(dCTM.a); - FX_FLOAT sd = FXSYS_fabs(dCTM.d); - clip_box.right = clip_box.left + (int32_t)FXSYS_ceil(clip_box.Width() * sa); - clip_box.bottom = clip_box.top + (int32_t)FXSYS_ceil(clip_box.Height() * sd); - CFX_Matrix mtPattern2Device = pPattern->m_Pattern2Form; - mtPattern2Device.Concat(*pObj2Device); - GetScaledMatrix(mtPattern2Device); - FX_BOOL bAligned = FALSE; - if (pPattern->m_BBox.left == 0 && pPattern->m_BBox.bottom == 0 && - pPattern->m_BBox.right == pPattern->m_XStep && - pPattern->m_BBox.top == pPattern->m_YStep && - (mtPattern2Device.IsScaled() || mtPattern2Device.Is90Rotated())) { - bAligned = TRUE; - } - CFX_FloatRect cell_bbox = pPattern->m_BBox; - mtPattern2Device.TransformRect(cell_bbox); - int width = (int)FXSYS_ceil(cell_bbox.Width()); - int height = (int)FXSYS_ceil(cell_bbox.Height()); - if (width == 0) { - width = 1; - } - if (height == 0) { - height = 1; - } - int min_col, max_col, min_row, max_row; - CFX_Matrix mtDevice2Pattern; - mtDevice2Pattern.SetReverse(mtPattern2Device); - CFX_FloatRect clip_box_p(clip_box); - clip_box_p.Transform(&mtDevice2Pattern); - - min_col = (int)FXSYS_ceil((clip_box_p.left - pPattern->m_BBox.right) / - pPattern->m_XStep); - max_col = (int)FXSYS_floor((clip_box_p.right - pPattern->m_BBox.left) / - pPattern->m_XStep); - min_row = (int)FXSYS_ceil((clip_box_p.bottom - pPattern->m_BBox.top) / - pPattern->m_YStep); - max_row = (int)FXSYS_floor((clip_box_p.top - pPattern->m_BBox.bottom) / - pPattern->m_YStep); - - if (width > clip_box.Width() || height > clip_box.Height() || - width * height > clip_box.Width() * clip_box.Height()) { - CPDF_GraphicStates* pStates = NULL; - if (!pPattern->m_bColored) { - pStates = CloneObjStates(pPageObj, bStroke); - } - CPDF_Dictionary* pFormResource = NULL; - if (pPattern->m_pForm->m_pFormDict) { - pFormResource = pPattern->m_pForm->m_pFormDict->GetDictBy("Resources"); - } - for (int col = min_col; col <= max_col; col++) - for (int row = min_row; row <= max_row; row++) { - FX_FLOAT orig_x, orig_y; - orig_x = col * pPattern->m_XStep; - orig_y = row * pPattern->m_YStep; - mtPattern2Device.Transform(orig_x, orig_y); - CFX_Matrix matrix = *pObj2Device; - matrix.Translate(orig_x - mtPattern2Device.e, - orig_y - mtPattern2Device.f); - m_pDevice->SaveState(); - CPDF_RenderStatus status; - status.Initialize(m_pContext, m_pDevice, NULL, NULL, this, pStates, - &m_Options, pPattern->m_pForm->m_Transparency, - m_bDropObjects, pFormResource); - status.RenderObjectList(pPattern->m_pForm, &matrix); - m_pDevice->RestoreState(); - } - m_pDevice->RestoreState(); - delete pStates; - return; - } - if (bAligned) { - int orig_x = FXSYS_round(mtPattern2Device.e); - int orig_y = FXSYS_round(mtPattern2Device.f); - min_col = (clip_box.left - orig_x) / width; - if (clip_box.left < orig_x) { - min_col--; - } - max_col = (clip_box.right - orig_x) / width; - if (clip_box.right <= orig_x) { - max_col--; - } - min_row = (clip_box.top - orig_y) / height; - if (clip_box.top < orig_y) { - min_row--; - } - max_row = (clip_box.bottom - orig_y) / height; - if (clip_box.bottom <= orig_y) { - max_row--; - } - } - FX_FLOAT left_offset = cell_bbox.left - mtPattern2Device.e; - FX_FLOAT top_offset = cell_bbox.bottom - mtPattern2Device.f; - CFX_DIBitmap* pPatternBitmap = NULL; - if (width * height < 16) { - CFX_DIBitmap* pEnlargedBitmap = - DrawPatternBitmap(m_pContext->GetDocument(), m_pContext->GetPageCache(), - pPattern, pObj2Device, 8, 8, m_Options.m_Flags); - pPatternBitmap = pEnlargedBitmap->StretchTo(width, height); - delete pEnlargedBitmap; - } else { - pPatternBitmap = DrawPatternBitmap( - m_pContext->GetDocument(), m_pContext->GetPageCache(), pPattern, - pObj2Device, width, height, m_Options.m_Flags); - } - if (!pPatternBitmap) { - m_pDevice->RestoreState(); - return; - } - if (m_Options.m_ColorMode == RENDER_COLOR_GRAY) { - pPatternBitmap->ConvertColorScale(m_Options.m_ForeColor, - m_Options.m_BackColor); - } - FX_ARGB fill_argb = GetFillArgb(pPageObj); - int clip_width = clip_box.right - clip_box.left; - int clip_height = clip_box.bottom - clip_box.top; - CFX_DIBitmap screen; - if (!screen.Create(clip_width, clip_height, FXDIB_Argb)) { - return; - } - screen.Clear(0); - FX_DWORD* src_buf = (FX_DWORD*)pPatternBitmap->GetBuffer(); - for (int col = min_col; col <= max_col; col++) { - for (int row = min_row; row <= max_row; row++) { - int start_x, start_y; - if (bAligned) { - start_x = FXSYS_round(mtPattern2Device.e) + col * width - clip_box.left; - start_y = FXSYS_round(mtPattern2Device.f) + row * height - clip_box.top; - } else { - FX_FLOAT orig_x = col * pPattern->m_XStep; - FX_FLOAT orig_y = row * pPattern->m_YStep; - mtPattern2Device.Transform(orig_x, orig_y); - start_x = FXSYS_round(orig_x + left_offset) - clip_box.left; - start_y = FXSYS_round(orig_y + top_offset) - clip_box.top; - } - if (width == 1 && height == 1) { - if (start_x < 0 || start_x >= clip_box.Width() || start_y < 0 || - start_y >= clip_box.Height()) { - continue; - } - FX_DWORD* dest_buf = - (FX_DWORD*)(screen.GetBuffer() + screen.GetPitch() * start_y + - start_x * 4); - if (pPattern->m_bColored) { - *dest_buf = *src_buf; - } else { - *dest_buf = (*(uint8_t*)src_buf << 24) | (fill_argb & 0xffffff); - } - } else { - if (pPattern->m_bColored) { - screen.CompositeBitmap(start_x, start_y, width, height, - pPatternBitmap, 0, 0); - } else { - screen.CompositeMask(start_x, start_y, width, height, pPatternBitmap, - fill_argb, 0, 0); - } - } - } - } - CompositeDIBitmap(&screen, clip_box.left, clip_box.top, 0, 255, - FXDIB_BLEND_NORMAL, FALSE); - m_pDevice->RestoreState(); - delete pPatternBitmap; -} -void CPDF_RenderStatus::DrawPathWithPattern(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device, - CPDF_Color* pColor, - FX_BOOL bStroke) { - CPDF_Pattern* pattern = pColor->GetPattern(); - if (!pattern) { - return; - } - if (pattern->m_PatternType == CPDF_Pattern::TILING) { - DrawTilingPattern(static_cast(pattern), pPathObj, - pObj2Device, bStroke); - } else { - DrawShadingPattern(static_cast(pattern), pPathObj, - pObj2Device, bStroke); - } -} -void CPDF_RenderStatus::ProcessPathPattern(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device, - int& filltype, - FX_BOOL& bStroke) { - if (filltype) { - CPDF_Color& FillColor = *pPathObj->m_ColorState.GetFillColor(); - if (FillColor.m_pCS && FillColor.m_pCS->GetFamily() == PDFCS_PATTERN) { - DrawPathWithPattern(pPathObj, pObj2Device, &FillColor, FALSE); - filltype = 0; - } - } - if (bStroke) { - CPDF_Color& StrokeColor = *pPathObj->m_ColorState.GetStrokeColor(); - if (StrokeColor.m_pCS && StrokeColor.m_pCS->GetFamily() == PDFCS_PATTERN) { - DrawPathWithPattern(pPathObj, pObj2Device, &StrokeColor, TRUE); - bStroke = FALSE; - } - } -} diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp deleted file mode 100644 index 176c923372..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "testing/embedder_test.h" -#include "testing/gtest/include/gtest/gtest.h" - -class FPDFRenderPatternEmbeddertest : public EmbedderTest {}; - -TEST_F(FPDFRenderPatternEmbeddertest, LoadError_547706) { - // Test shading where object is a dictionary instead of a stream. - EXPECT_TRUE(OpenDocument("bug_547706.pdf")); - FPDF_PAGE page = LoadPage(0); - FPDF_BITMAP bitmap = RenderPage(page); - FPDFBitmap_Destroy(bitmap); - UnloadPage(page); -} diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp deleted file mode 100644 index c817c7c374..0000000000 --- a/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp +++ /dev/null @@ -1,788 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdfapi/fpdf_render/render_int.h" - -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_render.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fpdfapi/fpdf_page/pageint.h" - -CPDF_Type3Cache::~CPDF_Type3Cache() { - for (const auto& pair : m_SizeMap) { - delete pair.second; - } - m_SizeMap.clear(); -} -CFX_GlyphBitmap* CPDF_Type3Cache::LoadGlyph(FX_DWORD charcode, - const CFX_Matrix* pMatrix, - FX_FLOAT retinaScaleX, - FX_FLOAT retinaScaleY) { - _CPDF_UniqueKeyGen keygen; - keygen.Generate( - 4, FXSYS_round(pMatrix->a * 10000), FXSYS_round(pMatrix->b * 10000), - FXSYS_round(pMatrix->c * 10000), FXSYS_round(pMatrix->d * 10000)); - CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen); - CPDF_Type3Glyphs* pSizeCache; - auto it = m_SizeMap.find(FaceGlyphsKey); - if (it == m_SizeMap.end()) { - pSizeCache = new CPDF_Type3Glyphs; - m_SizeMap[FaceGlyphsKey] = pSizeCache; - } else { - pSizeCache = it->second; - } - auto it2 = pSizeCache->m_GlyphMap.find(charcode); - if (it2 != pSizeCache->m_GlyphMap.end()) - return it2->second; - - CFX_GlyphBitmap* pGlyphBitmap = - RenderGlyph(pSizeCache, charcode, pMatrix, retinaScaleX, retinaScaleY); - pSizeCache->m_GlyphMap[charcode] = pGlyphBitmap; - return pGlyphBitmap; -} -CPDF_Type3Glyphs::~CPDF_Type3Glyphs() { - for (const auto& pair : m_GlyphMap) - delete pair.second; -} -static int _AdjustBlue(FX_FLOAT pos, int& count, int blues[]) { - FX_FLOAT min_distance = 1000000.0f * 1.0f; - int closest_pos = -1; - for (int i = 0; i < count; i++) { - FX_FLOAT distance = (FX_FLOAT)FXSYS_fabs(pos - (FX_FLOAT)blues[i]); - if (distance < 1.0f * 80.0f / 100.0f && distance < min_distance) { - min_distance = distance; - closest_pos = i; - } - } - if (closest_pos >= 0) { - return blues[closest_pos]; - } - int new_pos = FXSYS_round(pos); - if (count == TYPE3_MAX_BLUES) { - return new_pos; - } - blues[count++] = new_pos; - return new_pos; -} -void CPDF_Type3Glyphs::AdjustBlue(FX_FLOAT top, - FX_FLOAT bottom, - int& top_line, - int& bottom_line) { - top_line = _AdjustBlue(top, m_TopBlueCount, m_TopBlue); - bottom_line = _AdjustBlue(bottom, m_BottomBlueCount, m_BottomBlue); -} - -static FX_BOOL _IsScanLine1bpp(uint8_t* pBuf, int width) { - int size = width / 8; - for (int i = 0; i < size; i++) { - if (pBuf[i]) - return TRUE; - } - return (width % 8) && (pBuf[width / 8] & (0xff << (8 - width % 8))); -} - -static FX_BOOL _IsScanLine8bpp(uint8_t* pBuf, int width) { - for (int i = 0; i < width; i++) { - if (pBuf[i] > 0x40) - return TRUE; - } - return FALSE; -} - -static int _DetectFirstLastScan(const CFX_DIBitmap* pBitmap, FX_BOOL bFirst) { - int height = pBitmap->GetHeight(), pitch = pBitmap->GetPitch(), - width = pBitmap->GetWidth(); - int bpp = pBitmap->GetBPP(); - if (bpp > 8) { - width *= bpp / 8; - } - uint8_t* pBuf = pBitmap->GetBuffer(); - int line = bFirst ? 0 : height - 1; - int line_step = bFirst ? 1 : -1; - int line_end = bFirst ? height : -1; - while (line != line_end) { - if (bpp == 1) { - if (_IsScanLine1bpp(pBuf + line * pitch, width)) { - return line; - } - } else { - if (_IsScanLine8bpp(pBuf + line * pitch, width)) { - return line; - } - } - line += line_step; - } - return -1; -} -CFX_GlyphBitmap* CPDF_Type3Cache::RenderGlyph(CPDF_Type3Glyphs* pSize, - FX_DWORD charcode, - const CFX_Matrix* pMatrix, - FX_FLOAT retinaScaleX, - FX_FLOAT retinaScaleY) { - const CPDF_Type3Char* pChar = m_pFont->LoadChar(charcode); - if (!pChar || !pChar->m_pBitmap) - return nullptr; - - CFX_DIBitmap* pBitmap = pChar->m_pBitmap; - CFX_Matrix image_matrix, text_matrix; - image_matrix = pChar->m_ImageMatrix; - text_matrix.Set(pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d, 0, 0); - image_matrix.Concat(text_matrix); - CFX_DIBitmap* pResBitmap = NULL; - int left, top; - if (FXSYS_fabs(image_matrix.b) < FXSYS_fabs(image_matrix.a) / 100 && - FXSYS_fabs(image_matrix.c) < FXSYS_fabs(image_matrix.d) / 100) { - int top_line, bottom_line; - top_line = _DetectFirstLastScan(pBitmap, TRUE); - bottom_line = _DetectFirstLastScan(pBitmap, FALSE); - if (top_line == 0 && bottom_line == pBitmap->GetHeight() - 1) { - FX_FLOAT top_y = image_matrix.d + image_matrix.f; - FX_FLOAT bottom_y = image_matrix.f; - FX_BOOL bFlipped = top_y > bottom_y; - if (bFlipped) { - FX_FLOAT temp = top_y; - top_y = bottom_y; - bottom_y = temp; - } - pSize->AdjustBlue(top_y, bottom_y, top_line, bottom_line); - pResBitmap = pBitmap->StretchTo( - (int)(FXSYS_round(image_matrix.a) * retinaScaleX), - (int)((bFlipped ? top_line - bottom_line : bottom_line - top_line) * - retinaScaleY)); - top = top_line; - if (image_matrix.a < 0) { - image_matrix.Scale(retinaScaleX, retinaScaleY); - left = FXSYS_round(image_matrix.e + image_matrix.a); - } else { - left = FXSYS_round(image_matrix.e); - } - } else { - } - } - if (!pResBitmap) { - image_matrix.Scale(retinaScaleX, retinaScaleY); - pResBitmap = pBitmap->TransformTo(&image_matrix, left, top); - } - if (!pResBitmap) { - return NULL; - } - CFX_GlyphBitmap* pGlyph = new CFX_GlyphBitmap; - pGlyph->m_Left = left; - pGlyph->m_Top = -top; - pGlyph->m_Bitmap.TakeOver(pResBitmap); - delete pResBitmap; - return pGlyph; -} -void _CPDF_UniqueKeyGen::Generate(int count, ...) { - va_list argList; - va_start(argList, count); - for (int i = 0; i < count; i++) { - int p = va_arg(argList, int); - ((FX_DWORD*)m_Key)[i] = p; - } - va_end(argList); - m_KeyLen = count * sizeof(FX_DWORD); -} -FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj, - const CFX_Matrix* pObj2Device, - CFX_PathData* pClippingPath) { - if (textobj->m_nChars == 0) { - return TRUE; - } - int text_render_mode = textobj->m_TextState.GetObject()->m_TextMode; - if (text_render_mode == 3) { - return TRUE; - } - CPDF_Font* pFont = textobj->m_TextState.GetFont(); - if (pFont->IsType3Font()) { - return ProcessType3Text(textobj, pObj2Device); - } - FX_BOOL bFill = FALSE, bStroke = FALSE, bClip = FALSE; - if (pClippingPath) { - bClip = TRUE; - } else { - switch (text_render_mode) { - case 0: - case 4: - bFill = TRUE; - break; - case 1: - case 5: - if (!pFont->GetFace() && - !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) { - bFill = TRUE; - } else { - bStroke = TRUE; - } - break; - case 2: - case 6: - if (!pFont->GetFace() && - !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) { - bFill = TRUE; - } else { - bFill = bStroke = TRUE; - } - break; - case 3: - case 7: - return TRUE; - default: - bFill = TRUE; - } - } - FX_ARGB stroke_argb = 0, fill_argb = 0; - FX_BOOL bPattern = FALSE; - if (bStroke) { - if (textobj->m_ColorState.GetStrokeColor()->IsPattern()) { - bPattern = TRUE; - } else { - stroke_argb = GetStrokeArgb(textobj); - } - } - if (bFill) { - if (textobj->m_ColorState.GetFillColor()->IsPattern()) { - bPattern = TRUE; - } else { - fill_argb = GetFillArgb(textobj); - } - } - CFX_Matrix text_matrix; - textobj->GetTextMatrix(&text_matrix); - if (IsAvailableMatrix(text_matrix) == FALSE) { - return TRUE; - } - FX_FLOAT font_size = textobj->m_TextState.GetFontSize(); - if (bPattern) { - DrawTextPathWithPattern(textobj, pObj2Device, pFont, font_size, - &text_matrix, bFill, bStroke); - return TRUE; - } - if (bClip || bStroke) { - const CFX_Matrix* pDeviceMatrix = pObj2Device; - CFX_Matrix device_matrix; - if (bStroke) { - const FX_FLOAT* pCTM = textobj->m_TextState.GetObject()->m_CTM; - if (pCTM[0] != 1.0f || pCTM[3] != 1.0f) { - CFX_Matrix ctm(pCTM[0], pCTM[1], pCTM[2], pCTM[3], 0, 0); - text_matrix.ConcatInverse(ctm); - device_matrix.Copy(ctm); - device_matrix.Concat(*pObj2Device); - pDeviceMatrix = &device_matrix; - } - } - int flag = 0; - if (bStroke && bFill) { - flag |= FX_FILL_STROKE; - flag |= FX_STROKE_TEXT_MODE; - } - const CPDF_GeneralStateData* pGeneralData = - ((CPDF_PageObject*)textobj)->m_GeneralState; - if (pGeneralData && pGeneralData->m_StrokeAdjust) { - flag |= FX_STROKE_ADJUST; - } - if (m_Options.m_Flags & RENDER_NOTEXTSMOOTH) { - flag |= FXFILL_NOPATHSMOOTH; - } - return CPDF_TextRenderer::DrawTextPath( - m_pDevice, textobj->m_nChars, textobj->m_pCharCodes, - textobj->m_pCharPos, pFont, font_size, &text_matrix, pDeviceMatrix, - textobj->m_GraphState, fill_argb, stroke_argb, pClippingPath, flag); - } - text_matrix.Concat(*pObj2Device); - return CPDF_TextRenderer::DrawNormalText( - m_pDevice, textobj->m_nChars, textobj->m_pCharCodes, textobj->m_pCharPos, - pFont, font_size, &text_matrix, fill_argb, &m_Options); -} -CPDF_Type3Cache* CPDF_RenderStatus::GetCachedType3(CPDF_Type3Font* pFont) { - if (!pFont->m_pDocument) { - return NULL; - } - pFont->m_pDocument->GetPageData()->GetFont(pFont->GetFontDict(), FALSE); - return pFont->m_pDocument->GetRenderData()->GetCachedType3(pFont); -} -static void ReleaseCachedType3(CPDF_Type3Font* pFont) { - if (!pFont->m_pDocument) { - return; - } - pFont->m_pDocument->GetRenderData()->ReleaseCachedType3(pFont); - pFont->m_pDocument->GetPageData()->ReleaseFont(pFont->GetFontDict()); -} -FX_BOOL CPDF_Type3Char::LoadBitmap(CPDF_RenderContext* pContext) { - if (m_pBitmap || !m_pForm) { - return TRUE; - } - if (m_pForm->GetPageObjectList()->size() == 1 && !m_bColored) { - auto& pPageObj = m_pForm->GetPageObjectList()->front(); - if (pPageObj->IsImage()) { - m_ImageMatrix = pPageObj->AsImage()->m_Matrix; - const CFX_DIBSource* pSource = - pPageObj->AsImage()->m_pImage->LoadDIBSource(); - if (pSource) { - m_pBitmap = pSource->Clone(); - delete pSource; - } - delete m_pForm; - m_pForm = NULL; - return TRUE; - } - } - return FALSE; -} -class CPDF_RefType3Cache { - public: - CPDF_RefType3Cache(CPDF_Type3Font* pType3Font) { - m_dwCount = 0; - m_pType3Font = pType3Font; - } - ~CPDF_RefType3Cache() { - while (m_dwCount--) { - ReleaseCachedType3(m_pType3Font); - } - } - FX_DWORD m_dwCount; - CPDF_Type3Font* m_pType3Font; -}; -FX_BOOL CPDF_RenderStatus::ProcessType3Text(const CPDF_TextObject* textobj, - const CFX_Matrix* pObj2Device) { - CPDF_Type3Font* pType3Font = textobj->m_TextState.GetFont()->AsType3Font(); - for (int j = 0; j < m_Type3FontCache.GetSize(); j++) { - if (m_Type3FontCache.GetAt(j) == pType3Font) - return TRUE; - } - CFX_Matrix dCTM = m_pDevice->GetCTM(); - FX_FLOAT sa = FXSYS_fabs(dCTM.a); - FX_FLOAT sd = FXSYS_fabs(dCTM.d); - CFX_Matrix text_matrix; - textobj->GetTextMatrix(&text_matrix); - CFX_Matrix char_matrix = pType3Font->GetFontMatrix(); - FX_FLOAT font_size = textobj->m_TextState.GetFontSize(); - char_matrix.Scale(font_size, font_size); - FX_ARGB fill_argb = GetFillArgb(textobj, TRUE); - int fill_alpha = FXARGB_A(fill_argb); - int device_class = m_pDevice->GetDeviceClass(); - FXTEXT_GLYPHPOS* pGlyphAndPos = NULL; - if (device_class == FXDC_DISPLAY) { - pGlyphAndPos = FX_Alloc(FXTEXT_GLYPHPOS, textobj->m_nChars); - } else if (fill_alpha < 255) { - return FALSE; - } - CPDF_RefType3Cache refTypeCache(pType3Font); - FX_DWORD* pChars = textobj->m_pCharCodes; - if (textobj->m_nChars == 1) { - pChars = (FX_DWORD*)(&textobj->m_pCharCodes); - } - for (int iChar = 0; iChar < textobj->m_nChars; iChar++) { - FX_DWORD charcode = pChars[iChar]; - if (charcode == (FX_DWORD)-1) { - continue; - } - CPDF_Type3Char* pType3Char = pType3Font->LoadChar(charcode); - if (!pType3Char) { - continue; - } - CFX_Matrix matrix = char_matrix; - matrix.e += iChar ? textobj->m_pCharPos[iChar - 1] : 0; - matrix.Concat(text_matrix); - matrix.Concat(*pObj2Device); - if (!pType3Char->LoadBitmap(m_pContext)) { - if (pGlyphAndPos) { - for (int i = 0; i < iChar; i++) { - FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[i]; - if (!glyph.m_pGlyph) { - continue; - } - m_pDevice->SetBitMask(&glyph.m_pGlyph->m_Bitmap, - glyph.m_OriginX + glyph.m_pGlyph->m_Left, - glyph.m_OriginY - glyph.m_pGlyph->m_Top, - fill_argb); - } - FX_Free(pGlyphAndPos); - pGlyphAndPos = NULL; - } - CPDF_GraphicStates* pStates = CloneObjStates(textobj, FALSE); - CPDF_RenderOptions Options = m_Options; - Options.m_Flags |= RENDER_FORCE_HALFTONE | RENDER_RECT_AA; - Options.m_Flags &= ~RENDER_FORCE_DOWNSAMPLE; - CPDF_Dictionary* pFormResource = NULL; - if (pType3Char->m_pForm && pType3Char->m_pForm->m_pFormDict) { - pFormResource = - pType3Char->m_pForm->m_pFormDict->GetDictBy("Resources"); - } - if (fill_alpha == 255) { - CPDF_RenderStatus status; - status.Initialize(m_pContext, m_pDevice, NULL, NULL, this, pStates, - &Options, pType3Char->m_pForm->m_Transparency, - m_bDropObjects, pFormResource, FALSE, pType3Char, - fill_argb); - status.m_Type3FontCache.Append(m_Type3FontCache); - status.m_Type3FontCache.Add(pType3Font); - m_pDevice->SaveState(); - status.RenderObjectList(pType3Char->m_pForm, &matrix); - m_pDevice->RestoreState(); - } else { - CFX_FloatRect rect_f = pType3Char->m_pForm->CalcBoundingBox(); - rect_f.Transform(&matrix); - FX_RECT rect = rect_f.GetOutterRect(); - CFX_FxgeDevice bitmap_device; - if (!bitmap_device.Create((int)(rect.Width() * sa), - (int)(rect.Height() * sd), FXDIB_Argb)) { - return TRUE; - } - bitmap_device.GetBitmap()->Clear(0); - CPDF_RenderStatus status; - status.Initialize(m_pContext, &bitmap_device, NULL, NULL, this, pStates, - &Options, pType3Char->m_pForm->m_Transparency, - m_bDropObjects, pFormResource, FALSE, pType3Char, - fill_argb); - status.m_Type3FontCache.Append(m_Type3FontCache); - status.m_Type3FontCache.Add(pType3Font); - matrix.TranslateI(-rect.left, -rect.top); - matrix.Scale(sa, sd); - status.RenderObjectList(pType3Char->m_pForm, &matrix); - m_pDevice->SetDIBits(bitmap_device.GetBitmap(), rect.left, rect.top); - } - delete pStates; - } else if (pType3Char->m_pBitmap) { - if (device_class == FXDC_DISPLAY) { - CPDF_Type3Cache* pCache = GetCachedType3(pType3Font); - refTypeCache.m_dwCount++; - CFX_GlyphBitmap* pBitmap = pCache->LoadGlyph(charcode, &matrix, sa, sd); - if (!pBitmap) { - continue; - } - int origin_x = FXSYS_round(matrix.e); - int origin_y = FXSYS_round(matrix.f); - if (pGlyphAndPos) { - pGlyphAndPos[iChar].m_pGlyph = pBitmap; - pGlyphAndPos[iChar].m_OriginX = origin_x; - pGlyphAndPos[iChar].m_OriginY = origin_y; - } else { - m_pDevice->SetBitMask(&pBitmap->m_Bitmap, origin_x + pBitmap->m_Left, - origin_y - pBitmap->m_Top, fill_argb); - } - } else { - CFX_Matrix image_matrix = pType3Char->m_ImageMatrix; - image_matrix.Concat(matrix); - CPDF_ImageRenderer renderer; - if (renderer.Start(this, pType3Char->m_pBitmap, fill_argb, 255, - &image_matrix, 0, FALSE)) { - renderer.Continue(NULL); - } - if (!renderer.m_Result) { - return FALSE; - } - } - } - } - if (pGlyphAndPos) { - FX_RECT rect = - FXGE_GetGlyphsBBox(pGlyphAndPos, textobj->m_nChars, 0, sa, sd); - CFX_DIBitmap bitmap; - if (!bitmap.Create((int)(rect.Width() * sa), (int)(rect.Height() * sd), - FXDIB_8bppMask)) { - FX_Free(pGlyphAndPos); - return TRUE; - } - bitmap.Clear(0); - for (int iChar = 0; iChar < textobj->m_nChars; iChar++) { - FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; - if (!glyph.m_pGlyph) { - continue; - } - bitmap.TransferBitmap( - (int)((glyph.m_OriginX + glyph.m_pGlyph->m_Left - rect.left) * sa), - (int)((glyph.m_OriginY - glyph.m_pGlyph->m_Top - rect.top) * sd), - glyph.m_pGlyph->m_Bitmap.GetWidth(), - glyph.m_pGlyph->m_Bitmap.GetHeight(), &glyph.m_pGlyph->m_Bitmap, 0, - 0); - } - m_pDevice->SetBitMask(&bitmap, rect.left, rect.top, fill_argb); - FX_Free(pGlyphAndPos); - } - return TRUE; -} -class CPDF_CharPosList { - public: - CPDF_CharPosList(); - ~CPDF_CharPosList(); - void Load(int nChars, - FX_DWORD* pCharCodes, - FX_FLOAT* pCharPos, - CPDF_Font* pFont, - FX_FLOAT font_size); - FXTEXT_CHARPOS* m_pCharPos; - FX_DWORD m_nChars; -}; - -CPDF_CharPosList::CPDF_CharPosList() { - m_pCharPos = NULL; -} -CPDF_CharPosList::~CPDF_CharPosList() { - FX_Free(m_pCharPos); -} -void CPDF_CharPosList::Load(int nChars, - FX_DWORD* pCharCodes, - FX_FLOAT* pCharPos, - CPDF_Font* pFont, - FX_FLOAT FontSize) { - m_pCharPos = FX_Alloc(FXTEXT_CHARPOS, nChars); - m_nChars = 0; - CPDF_CIDFont* pCIDFont = pFont->AsCIDFont(); - FX_BOOL bVertWriting = pCIDFont && pCIDFont->IsVertWriting(); - for (int iChar = 0; iChar < nChars; iChar++) { - FX_DWORD CharCode = - nChars == 1 ? (FX_DWORD)(uintptr_t)pCharCodes : pCharCodes[iChar]; - if (CharCode == (FX_DWORD)-1) { - continue; - } - FX_BOOL bVert = FALSE; - FXTEXT_CHARPOS& charpos = m_pCharPos[m_nChars++]; - if (pCIDFont) { - charpos.m_bFontStyle = pCIDFont->IsFontStyleFromCharCode(CharCode); - } - charpos.m_GlyphIndex = pFont->GlyphFromCharCode(CharCode, &bVert); -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - charpos.m_ExtGID = pFont->GlyphFromCharCodeExt(CharCode); -#endif - if (!pFont->IsEmbedded() && !pFont->IsCIDFont()) { - charpos.m_FontCharWidth = pFont->GetCharWidthF(CharCode); - } else { - charpos.m_FontCharWidth = 0; - } - charpos.m_OriginX = iChar ? pCharPos[iChar - 1] : 0; - charpos.m_OriginY = 0; - charpos.m_bGlyphAdjust = FALSE; - if (!pCIDFont) { - continue; - } - FX_WORD CID = pCIDFont->CIDFromCharCode(CharCode); - if (bVertWriting) { - charpos.m_OriginY = charpos.m_OriginX; - charpos.m_OriginX = 0; - short vx, vy; - pCIDFont->GetVertOrigin(CID, vx, vy); - charpos.m_OriginX -= FontSize * vx / 1000; - charpos.m_OriginY -= FontSize * vy / 1000; - } - const uint8_t* pTransform = pCIDFont->GetCIDTransform(CID); - if (pTransform && !bVert) { - charpos.m_AdjustMatrix[0] = pCIDFont->CIDTransformToFloat(pTransform[0]); - charpos.m_AdjustMatrix[2] = pCIDFont->CIDTransformToFloat(pTransform[2]); - charpos.m_AdjustMatrix[1] = pCIDFont->CIDTransformToFloat(pTransform[1]); - charpos.m_AdjustMatrix[3] = pCIDFont->CIDTransformToFloat(pTransform[3]); - charpos.m_OriginX += - pCIDFont->CIDTransformToFloat(pTransform[4]) * FontSize; - charpos.m_OriginY += - pCIDFont->CIDTransformToFloat(pTransform[5]) * FontSize; - charpos.m_bGlyphAdjust = TRUE; - } - } -} -FX_BOOL CPDF_TextRenderer::DrawTextPath(CFX_RenderDevice* pDevice, - int nChars, - FX_DWORD* pCharCodes, - FX_FLOAT* pCharPos, - CPDF_Font* pFont, - FX_FLOAT font_size, - const CFX_Matrix* pText2User, - const CFX_Matrix* pUser2Device, - const CFX_GraphStateData* pGraphState, - FX_ARGB fill_argb, - FX_ARGB stroke_argb, - CFX_PathData* pClippingPath, - int nFlag) { - CFX_FontCache* pCache = - pFont->m_pDocument ? pFont->m_pDocument->GetRenderData()->GetFontCache() - : NULL; - CPDF_CharPosList CharPosList; - CharPosList.Load(nChars, pCharCodes, pCharPos, pFont, font_size); - return pDevice->DrawTextPath(CharPosList.m_nChars, CharPosList.m_pCharPos, - &pFont->m_Font, pCache, font_size, pText2User, - pUser2Device, pGraphState, fill_argb, - stroke_argb, pClippingPath, nFlag); -} -void CPDF_TextRenderer::DrawTextString(CFX_RenderDevice* pDevice, - int left, - int top, - CPDF_Font* pFont, - int height, - const CFX_ByteString& str, - FX_ARGB argb) { - FX_RECT font_bbox; - pFont->GetFontBBox(font_bbox); - FX_FLOAT font_size = - (FX_FLOAT)height * 1000.0f / (FX_FLOAT)(font_bbox.top - font_bbox.bottom); - FX_FLOAT origin_x = (FX_FLOAT)left; - FX_FLOAT origin_y = - (FX_FLOAT)top + font_size * (FX_FLOAT)font_bbox.top / 1000.0f; - CFX_Matrix matrix(1.0f, 0, 0, -1.0f, 0, 0); - DrawTextString(pDevice, origin_x, origin_y, pFont, font_size, &matrix, str, - argb); -} -void CPDF_TextRenderer::DrawTextString(CFX_RenderDevice* pDevice, - FX_FLOAT origin_x, - FX_FLOAT origin_y, - CPDF_Font* pFont, - FX_FLOAT font_size, - const CFX_Matrix* pMatrix, - const CFX_ByteString& str, - FX_ARGB fill_argb, - FX_ARGB stroke_argb, - const CFX_GraphStateData* pGraphState, - const CPDF_RenderOptions* pOptions) { - int nChars = pFont->CountChar(str, str.GetLength()); - if (nChars == 0) { - return; - } - FX_DWORD charcode; - int offset = 0; - FX_DWORD* pCharCodes; - FX_FLOAT* pCharPos; - if (nChars == 1) { - charcode = pFont->GetNextChar(str, str.GetLength(), offset); - pCharCodes = (FX_DWORD*)(uintptr_t)charcode; - pCharPos = NULL; - } else { - pCharCodes = FX_Alloc(FX_DWORD, nChars); - pCharPos = FX_Alloc(FX_FLOAT, nChars - 1); - FX_FLOAT cur_pos = 0; - for (int i = 0; i < nChars; i++) { - pCharCodes[i] = pFont->GetNextChar(str, str.GetLength(), offset); - if (i) { - pCharPos[i - 1] = cur_pos; - } - cur_pos += pFont->GetCharWidthF(pCharCodes[i]) * font_size / 1000; - } - } - CFX_Matrix matrix; - if (pMatrix) - matrix = *pMatrix; - - matrix.e = origin_x; - matrix.f = origin_y; - - if (!pFont->IsType3Font()) { - if (stroke_argb == 0) { - DrawNormalText(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, - &matrix, fill_argb, pOptions); - } else { - DrawTextPath(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size, - &matrix, NULL, pGraphState, fill_argb, stroke_argb, NULL); - } - } - - if (nChars > 1) { - FX_Free(pCharCodes); - FX_Free(pCharPos); - } -} -FX_BOOL CPDF_TextRenderer::DrawNormalText(CFX_RenderDevice* pDevice, - int nChars, - FX_DWORD* pCharCodes, - FX_FLOAT* pCharPos, - CPDF_Font* pFont, - FX_FLOAT font_size, - const CFX_Matrix* pText2Device, - FX_ARGB fill_argb, - const CPDF_RenderOptions* pOptions) { - CFX_FontCache* pCache = - pFont->m_pDocument ? pFont->m_pDocument->GetRenderData()->GetFontCache() - : NULL; - CPDF_CharPosList CharPosList; - CharPosList.Load(nChars, pCharCodes, pCharPos, pFont, font_size); - int FXGE_flags = 0; - if (pOptions) { - FX_DWORD dwFlags = pOptions->m_Flags; - if (dwFlags & RENDER_CLEARTYPE) { - FXGE_flags |= FXTEXT_CLEARTYPE; - if (dwFlags & RENDER_BGR_STRIPE) { - FXGE_flags |= FXTEXT_BGR_STRIPE; - } - } - if (dwFlags & RENDER_NOTEXTSMOOTH) { - FXGE_flags |= FXTEXT_NOSMOOTH; - } - if (dwFlags & RENDER_PRINTGRAPHICTEXT) { - FXGE_flags |= FXTEXT_PRINTGRAPHICTEXT; - } - if (dwFlags & RENDER_NO_NATIVETEXT) { - FXGE_flags |= FXTEXT_NO_NATIVETEXT; - } - if (dwFlags & RENDER_PRINTIMAGETEXT) { - FXGE_flags |= FXTEXT_PRINTIMAGETEXT; - } - } else { - FXGE_flags = FXTEXT_CLEARTYPE; - } - if (pFont->IsCIDFont()) { - FXGE_flags |= FXFONT_CIDFONT; - } - return pDevice->DrawNormalText(CharPosList.m_nChars, CharPosList.m_pCharPos, - &pFont->m_Font, pCache, font_size, - pText2Device, fill_argb, FXGE_flags); -} -void CPDF_RenderStatus::DrawTextPathWithPattern(const CPDF_TextObject* textobj, - const CFX_Matrix* pObj2Device, - CPDF_Font* pFont, - FX_FLOAT font_size, - const CFX_Matrix* pTextMatrix, - FX_BOOL bFill, - FX_BOOL bStroke) { - if (!bStroke) { - CPDF_PathObject path; - CPDF_TextObject* pCopy = textobj->Clone(); - path.m_bStroke = FALSE; - path.m_FillType = FXFILL_WINDING; - path.m_ClipPath.AppendTexts(&pCopy, 1); - path.m_ColorState = textobj->m_ColorState; - path.m_Path.New()->AppendRect(textobj->m_Left, textobj->m_Bottom, - textobj->m_Right, textobj->m_Top); - path.m_Left = textobj->m_Left; - path.m_Bottom = textobj->m_Bottom; - path.m_Right = textobj->m_Right; - path.m_Top = textobj->m_Top; - RenderSingleObject(&path, pObj2Device); - return; - } - CFX_FontCache* pCache; - if (pFont->m_pDocument) { - pCache = pFont->m_pDocument->GetRenderData()->GetFontCache(); - } else { - pCache = CFX_GEModule::Get()->GetFontCache(); - } - CFX_FaceCache* pFaceCache = pCache->GetCachedFace(&pFont->m_Font); - FX_FONTCACHE_DEFINE(pCache, &pFont->m_Font); - CPDF_CharPosList CharPosList; - CharPosList.Load(textobj->m_nChars, textobj->m_pCharCodes, - textobj->m_pCharPos, pFont, font_size); - for (FX_DWORD i = 0; i < CharPosList.m_nChars; i++) { - FXTEXT_CHARPOS& charpos = CharPosList.m_pCharPos[i]; - const CFX_PathData* pPath = pFaceCache->LoadGlyphPath( - &pFont->m_Font, charpos.m_GlyphIndex, charpos.m_FontCharWidth); - if (!pPath) { - continue; - } - CPDF_PathObject path; - path.m_GraphState = textobj->m_GraphState; - path.m_ColorState = textobj->m_ColorState; - CFX_Matrix matrix; - if (charpos.m_bGlyphAdjust) - matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], - charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); - matrix.Concat(font_size, 0, 0, font_size, charpos.m_OriginX, - charpos.m_OriginY); - path.m_Path.New()->Append(pPath, &matrix); - path.m_Matrix = *pTextMatrix; - path.m_bStroke = bStroke; - path.m_FillType = bFill ? FXFILL_WINDING : 0; - path.CalcBoundingBox(); - ProcessPath(&path, pObj2Device); - } -} - diff --git a/core/src/fpdfapi/fpdf_render/render_int.h b/core/src/fpdfapi/fpdf_render/render_int.h deleted file mode 100644 index d691f7dc52..0000000000 --- a/core/src/fpdfapi/fpdf_render/render_int.h +++ /dev/null @@ -1,619 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ -#define CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ - -#include -#include - -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_render.h" - -class CFX_GlyphBitmap; -class CFX_ImageTransformer; -class CPDF_ImageCacheEntry; -class CPDF_ImageLoaderHandle; -class ICodec_ScanlineDecoder; - -#define TYPE3_MAX_BLUES 16 - -class CPDF_Type3Glyphs { - public: - CPDF_Type3Glyphs() : m_TopBlueCount(0), m_BottomBlueCount(0) {} - ~CPDF_Type3Glyphs(); - void AdjustBlue(FX_FLOAT top, - FX_FLOAT bottom, - int& top_line, - int& bottom_line); - - std::map m_GlyphMap; - int m_TopBlue[TYPE3_MAX_BLUES]; - int m_BottomBlue[TYPE3_MAX_BLUES]; - int m_TopBlueCount; - int m_BottomBlueCount; -}; -class CPDF_Type3Cache { - public: - explicit CPDF_Type3Cache(CPDF_Type3Font* pFont) : m_pFont(pFont) {} - ~CPDF_Type3Cache(); - - CFX_GlyphBitmap* LoadGlyph(FX_DWORD charcode, - const CFX_Matrix* pMatrix, - FX_FLOAT retinaScaleX = 1.0f, - FX_FLOAT retinaScaleY = 1.0f); - - protected: - CFX_GlyphBitmap* RenderGlyph(CPDF_Type3Glyphs* pSize, - FX_DWORD charcode, - const CFX_Matrix* pMatrix, - FX_FLOAT retinaScaleX = 1.0f, - FX_FLOAT retinaScaleY = 1.0f); - CPDF_Type3Font* const m_pFont; - std::map m_SizeMap; -}; - -class CPDF_TransferFunc { - public: - explicit CPDF_TransferFunc(CPDF_Document* pDoc); - - FX_COLORREF TranslateColor(FX_COLORREF src) const; - CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc, - FX_BOOL bAutoDropSrc); - - CPDF_Document* const m_pPDFDoc; - FX_BOOL m_bIdentity; - uint8_t m_Samples[256 * 3]; -}; - -class CPDF_DocRenderData { - public: - CPDF_DocRenderData(CPDF_Document* pPDFDoc = NULL); - ~CPDF_DocRenderData(); - CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); - CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj); - CFX_FontCache* GetFontCache() { return m_pFontCache; } - void Clear(FX_BOOL bRelease = FALSE); - void ReleaseCachedType3(CPDF_Type3Font* pFont); - void ReleaseTransferFunc(CPDF_Object* pObj); - - private: - using CPDF_Type3CacheMap = - std::map*>; - using CPDF_TransferFuncMap = - std::map*>; - - CPDF_Document* m_pPDFDoc; - CFX_FontCache* m_pFontCache; - CPDF_Type3CacheMap m_Type3FaceMap; - CPDF_TransferFuncMap m_TransferFuncMap; -}; - -class IPDF_ObjectRenderer { - public: - static IPDF_ObjectRenderer* Create(); - virtual ~IPDF_ObjectRenderer() {} - virtual FX_BOOL Start(CPDF_RenderStatus* pRenderStatus, - const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStdCS, - int blendType = FXDIB_BLEND_NORMAL) = 0; - virtual FX_BOOL Continue(IFX_Pause* pPause) = 0; - FX_BOOL m_Result; -}; - -class CPDF_RenderStatus { - public: - CPDF_RenderStatus(); - ~CPDF_RenderStatus(); - FX_BOOL Initialize(class CPDF_RenderContext* pContext, - CFX_RenderDevice* pDevice, - const CFX_Matrix* pDeviceMatrix, - const CPDF_PageObject* pStopObj, - const CPDF_RenderStatus* pParentStatus, - const CPDF_GraphicStates* pInitialStates, - const CPDF_RenderOptions* pOptions, - int transparency, - FX_BOOL bDropObjects, - CPDF_Dictionary* pFormResource = NULL, - FX_BOOL bStdCS = FALSE, - CPDF_Type3Char* pType3Char = NULL, - FX_ARGB fill_color = 0, - FX_DWORD GroupFamily = 0, - FX_BOOL bLoadMask = FALSE); - void RenderObjectList(const CPDF_PageObjectHolder* pObjectHolder, - const CFX_Matrix* pObj2Device); - void RenderSingleObject(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device); - FX_BOOL ContinueSingleObject(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device, - IFX_Pause* pPause); - CPDF_RenderContext* GetContext() { return m_pContext; } - - CPDF_RenderOptions m_Options; - CPDF_Dictionary* m_pFormResource; - CPDF_Dictionary* m_pPageResource; - CFX_ArrayTemplate m_Type3FontCache; - - protected: - friend class CPDF_ImageRenderer; - friend class CPDF_RenderContext; - void ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); - void DrawClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device); - FX_BOOL ProcessTransparency(const CPDF_PageObject* PageObj, - const CFX_Matrix* pObj2Device); - void ProcessObjectNoClip(const CPDF_PageObject* PageObj, - const CFX_Matrix* pObj2Device); - void DrawObjWithBackground(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device); - FX_BOOL DrawObjWithBlend(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device); - FX_BOOL ProcessPath(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device); - void ProcessPathPattern(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device, - int& filltype, - FX_BOOL& bStroke); - void DrawPathWithPattern(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device, - CPDF_Color* pColor, - FX_BOOL bStroke); - void DrawTilingPattern(CPDF_TilingPattern* pPattern, - const CPDF_PageObject* pPageObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStroke); - void DrawShadingPattern(CPDF_ShadingPattern* pPattern, - const CPDF_PageObject* pPageObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStroke); - FX_BOOL SelectClipPath(const CPDF_PathObject* pPathObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStroke); - FX_BOOL ProcessImage(const CPDF_ImageObject* pImageObj, - const CFX_Matrix* pObj2Device); - FX_BOOL OutputBitmapAlpha(CPDF_ImageObject* pImageObj, - const CFX_Matrix* pImage2Device); - FX_BOOL OutputImage(CPDF_ImageObject* pImageObj, - const CFX_Matrix* pImage2Device); - FX_BOOL OutputDIBSource(const CFX_DIBSource* pOutputBitmap, - FX_ARGB fill_argb, - int bitmap_alpha, - const CFX_Matrix* pImage2Device, - CPDF_ImageCacheEntry* pImageCache, - FX_DWORD flags); - void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap, - int left, - int top, - FX_ARGB mask_argb, - int bitmap_alpha, - int blend_mode, - int bIsolated); - FX_BOOL ProcessShading(const CPDF_ShadingObject* pShadingObj, - const CFX_Matrix* pObj2Device); - void DrawShading(CPDF_ShadingPattern* pPattern, - CFX_Matrix* pMatrix, - FX_RECT& clip_rect, - int alpha, - FX_BOOL bAlphaMode); - FX_BOOL ProcessType3Text(const CPDF_TextObject* textobj, - const CFX_Matrix* pObj2Device); - FX_BOOL ProcessText(const CPDF_TextObject* textobj, - const CFX_Matrix* pObj2Device, - CFX_PathData* pClippingPath); - void DrawTextPathWithPattern(const CPDF_TextObject* textobj, - const CFX_Matrix* pObj2Device, - CPDF_Font* pFont, - FX_FLOAT font_size, - const CFX_Matrix* pTextMatrix, - FX_BOOL bFill, - FX_BOOL bStroke); - FX_BOOL ProcessForm(const CPDF_FormObject* pFormObj, - const CFX_Matrix* pObj2Device); - CFX_DIBitmap* GetBackdrop(const CPDF_PageObject* pObj, - const FX_RECT& rect, - int& left, - int& top, - FX_BOOL bBackAlphaRequired); - CFX_DIBitmap* LoadSMask(CPDF_Dictionary* pSMaskDict, - FX_RECT* pClipRect, - const CFX_Matrix* pMatrix); - void Init(CPDF_RenderContext* pParent); - static class CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont); - static CPDF_GraphicStates* CloneObjStates(const CPDF_GraphicStates* pPathObj, - FX_BOOL bStroke); - CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObject) const; - FX_ARGB GetFillArgb(const CPDF_PageObject* pObj, - FX_BOOL bType3 = FALSE) const; - FX_ARGB GetStrokeArgb(const CPDF_PageObject* pObj) const; - CPDF_RenderContext* m_pContext; - FX_BOOL m_bStopped; - void DitherObjectArea(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device); - FX_BOOL GetObjectClippedRect(const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bLogical, - FX_RECT& rect) const; - void GetScaledMatrix(CFX_Matrix& matrix) const; - - protected: - static const int kRenderMaxRecursionDepth = 64; - static int s_CurrentRecursionDepth; - - CFX_RenderDevice* m_pDevice; - CFX_Matrix m_DeviceMatrix; - CPDF_ClipPath m_LastClipPath; - const CPDF_PageObject* m_pCurObj; - const CPDF_PageObject* m_pStopObj; - CPDF_GraphicStates m_InitialStates; - int m_HalftoneLimit; - std::unique_ptr m_pObjectRenderer; - FX_BOOL m_bPrint; - int m_Transparency; - int m_DitherBits; - FX_BOOL m_bDropObjects; - FX_BOOL m_bStdCS; - FX_DWORD m_GroupFamily; - FX_BOOL m_bLoadMask; - CPDF_Type3Char* m_pType3Char; - FX_ARGB m_T3FillColor; - int m_curBlend; -}; -class CPDF_ImageLoader { - public: - CPDF_ImageLoader() - : m_pBitmap(nullptr), - m_pMask(nullptr), - m_MatteColor(0), - m_bCached(FALSE), - m_nDownsampleWidth(0), - m_nDownsampleHeight(0) {} - ~CPDF_ImageLoader(); - - FX_BOOL Start(const CPDF_ImageObject* pImage, - CPDF_PageRenderCache* pCache, - CPDF_ImageLoaderHandle*& LoadHandle, - FX_BOOL bStdCS = FALSE, - FX_DWORD GroupFamily = 0, - FX_BOOL bLoadMask = FALSE, - CPDF_RenderStatus* pRenderStatus = NULL, - int32_t nDownsampleWidth = 0, - int32_t nDownsampleHeight = 0); - FX_BOOL Continue(CPDF_ImageLoaderHandle* LoadHandle, IFX_Pause* pPause); - - CFX_DIBSource* m_pBitmap; - CFX_DIBSource* m_pMask; - FX_DWORD m_MatteColor; - FX_BOOL m_bCached; - - protected: - int32_t m_nDownsampleWidth; - int32_t m_nDownsampleHeight; -}; -class CPDF_ImageLoaderHandle { - public: - CPDF_ImageLoaderHandle(); - ~CPDF_ImageLoaderHandle(); - - FX_BOOL Start(CPDF_ImageLoader* pImageLoader, - const CPDF_ImageObject* pImage, - CPDF_PageRenderCache* pCache, - FX_BOOL bStdCS = FALSE, - FX_DWORD GroupFamily = 0, - FX_BOOL bLoadMask = FALSE, - CPDF_RenderStatus* pRenderStatus = NULL, - int32_t nDownsampleWidth = 0, - int32_t nDownsampleHeight = 0); - FX_BOOL Continue(IFX_Pause* pPause); - - protected: - CPDF_ImageLoader* m_pImageLoader; - CPDF_PageRenderCache* m_pCache; - CPDF_ImageObject* m_pImage; - int32_t m_nDownsampleWidth; - int32_t m_nDownsampleHeight; -}; - -class CPDF_ImageRenderer : public IPDF_ObjectRenderer { - public: - CPDF_ImageRenderer(); - ~CPDF_ImageRenderer() override; - - // IPDF_ObjectRenderer - FX_BOOL Start(CPDF_RenderStatus* pStatus, - const CPDF_PageObject* pObj, - const CFX_Matrix* pObj2Device, - FX_BOOL bStdCS, - int blendType = FXDIB_BLEND_NORMAL) override; - FX_BOOL Continue(IFX_Pause* pPause) override; - - FX_BOOL Start(CPDF_RenderStatus* pStatus, - const CFX_DIBSource* pDIBSource, - FX_ARGB bitmap_argb, - int bitmap_alpha, - const CFX_Matrix* pImage2Device, - FX_DWORD flags, - FX_BOOL bStdCS, - int blendType = FXDIB_BLEND_NORMAL); - - protected: - CPDF_RenderStatus* m_pRenderStatus; - const CPDF_ImageObject* m_pImageObject; - int m_Status; - const CFX_Matrix* m_pObj2Device; - CFX_Matrix m_ImageMatrix; - CPDF_ImageLoader m_Loader; - const CFX_DIBSource* m_pDIBSource; - CFX_DIBitmap* m_pClone; - int m_BitmapAlpha; - FX_BOOL m_bPatternColor; - CPDF_Pattern* m_pPattern; - FX_ARGB m_FillArgb; - FX_DWORD m_Flags; - CFX_ImageTransformer* m_pTransformer; - void* m_DeviceHandle; - CPDF_ImageLoaderHandle* m_LoadHandle; - FX_BOOL m_bStdCS; - int m_BlendType; - FX_BOOL StartBitmapAlpha(); - FX_BOOL StartDIBSource(); - FX_BOOL StartRenderDIBSource(); - FX_BOOL StartLoadDIBSource(); - FX_BOOL DrawMaskedImage(); - FX_BOOL DrawPatternImage(const CFX_Matrix* pObj2Device); -}; - -class CPDF_ScaledRenderBuffer { - public: - CPDF_ScaledRenderBuffer(); - ~CPDF_ScaledRenderBuffer(); - - FX_BOOL Initialize(CPDF_RenderContext* pContext, - CFX_RenderDevice* pDevice, - const FX_RECT& pRect, - const CPDF_PageObject* pObj, - const CPDF_RenderOptions* pOptions = NULL, - int max_dpi = 0); - CFX_RenderDevice* GetDevice() { - return m_pBitmapDevice ? m_pBitmapDevice.get() : m_pDevice; - } - CFX_Matrix* GetMatrix() { return &m_Matrix; } - void OutputToDevice(); - - private: - CFX_RenderDevice* m_pDevice; - CPDF_RenderContext* m_pContext; - FX_RECT m_Rect; - const CPDF_PageObject* m_pObject; - std::unique_ptr m_pBitmapDevice; - CFX_Matrix m_Matrix; -}; - -class CPDF_DeviceBuffer { - public: - CPDF_DeviceBuffer(); - ~CPDF_DeviceBuffer(); - FX_BOOL Initialize(CPDF_RenderContext* pContext, - CFX_RenderDevice* pDevice, - FX_RECT* pRect, - const CPDF_PageObject* pObj, - int max_dpi = 0); - void OutputToDevice(); - CFX_DIBitmap* GetBitmap() const { return m_pBitmap.get(); } - const CFX_Matrix* GetMatrix() const { return &m_Matrix; } - - private: - CFX_RenderDevice* m_pDevice; - CPDF_RenderContext* m_pContext; - FX_RECT m_Rect; - const CPDF_PageObject* m_pObject; - std::unique_ptr m_pBitmap; - CFX_Matrix m_Matrix; -}; - -class CPDF_ImageCacheEntry { - public: - CPDF_ImageCacheEntry(CPDF_Document* pDoc, CPDF_Stream* pStream); - ~CPDF_ImageCacheEntry(); - void ClearImageData(); - void Reset(const CFX_DIBitmap* pBitmap); - FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap, - CFX_DIBSource*& pMask, - FX_DWORD& MatteColor, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS = FALSE, - FX_DWORD GroupFamily = 0, - FX_BOOL bLoadMask = FALSE, - CPDF_RenderStatus* pRenderStatus = NULL, - int32_t downsampleWidth = 0, - int32_t downsampleHeight = 0); - FX_DWORD EstimateSize() const { return m_dwCacheSize; } - FX_DWORD GetTimeCount() const { return m_dwTimeCount; } - CPDF_Stream* GetStream() const { return m_pStream; } - void SetTimeCount(FX_DWORD dwTimeCount) { m_dwTimeCount = dwTimeCount; } - int m_dwTimeCount; - - public: - int StartGetCachedBitmap(CPDF_Dictionary* pFormResources, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS = FALSE, - FX_DWORD GroupFamily = 0, - FX_BOOL bLoadMask = FALSE, - CPDF_RenderStatus* pRenderStatus = NULL, - int32_t downsampleWidth = 0, - int32_t downsampleHeight = 0); - int Continue(IFX_Pause* pPause); - CFX_DIBSource* DetachBitmap(); - CFX_DIBSource* DetachMask(); - CFX_DIBSource* m_pCurBitmap; - CFX_DIBSource* m_pCurMask; - FX_DWORD m_MatteColor; - CPDF_RenderStatus* m_pRenderStatus; - - protected: - void ContinueGetCachedBitmap(); - - CPDF_Document* m_pDocument; - CPDF_Stream* m_pStream; - CFX_DIBSource* m_pCachedBitmap; - CFX_DIBSource* m_pCachedMask; - FX_DWORD m_dwCacheSize; - void CalcSize(); -}; -typedef struct { - FX_FLOAT m_DecodeMin; - FX_FLOAT m_DecodeStep; - int m_ColorKeyMin; - int m_ColorKeyMax; -} DIB_COMP_DATA; - -class CPDF_DIBSource : public CFX_DIBSource { - public: - CPDF_DIBSource(); - ~CPDF_DIBSource() override; - - FX_BOOL Load(CPDF_Document* pDoc, - const CPDF_Stream* pStream, - CPDF_DIBSource** ppMask, - FX_DWORD* pMatteColor, - CPDF_Dictionary* pFormResources, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS = FALSE, - FX_DWORD GroupFamily = 0, - FX_BOOL bLoadMask = FALSE); - - // CFX_DIBSource - FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) const override; - uint8_t* GetBuffer() const override; - const uint8_t* GetScanline(int line) const override; - void DownSampleScanline(int line, - uint8_t* dest_scan, - int dest_bpp, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const override; - void SetDownSampleSize(int dest_width, int dest_height) override; - - CFX_DIBitmap* GetBitmap() const; - void ReleaseBitmap(CFX_DIBitmap* pBitmap) const; - void ClearImageData(); - FX_DWORD GetMatteColor() const { return m_MatteColor; } - - int StartLoadDIBSource(CPDF_Document* pDoc, - const CPDF_Stream* pStream, - FX_BOOL bHasMask, - CPDF_Dictionary* pFormResources, - CPDF_Dictionary* pPageResources, - FX_BOOL bStdCS = FALSE, - FX_DWORD GroupFamily = 0, - FX_BOOL bLoadMask = FALSE); - int ContinueLoadDIBSource(IFX_Pause* pPause); - int StratLoadMask(); - int StartLoadMaskDIB(); - int ContinueLoadMaskDIB(IFX_Pause* pPause); - int ContinueToLoadMask(); - CPDF_DIBSource* DetachMask(); - - private: - bool LoadColorInfo(const CPDF_Dictionary* pFormResources, - const CPDF_Dictionary* pPageResources); - DIB_COMP_DATA* GetDecodeAndMaskArray(FX_BOOL& bDefaultDecode, - FX_BOOL& bColorKey); - CPDF_DIBSource* LoadMask(FX_DWORD& MatteColor); - CPDF_DIBSource* LoadMaskDIB(CPDF_Stream* pMask); - void LoadJpxBitmap(); - void LoadPalette(); - int CreateDecoder(); - void TranslateScanline24bpp(uint8_t* dest_scan, - const uint8_t* src_scan) const; - void ValidateDictParam(); - void DownSampleScanline1Bit(int orig_Bpp, - int dest_Bpp, - FX_DWORD src_width, - const uint8_t* pSrcLine, - uint8_t* dest_scan, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const; - void DownSampleScanline8Bit(int orig_Bpp, - int dest_Bpp, - FX_DWORD src_width, - const uint8_t* pSrcLine, - uint8_t* dest_scan, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const; - void DownSampleScanline32Bit(int orig_Bpp, - int dest_Bpp, - FX_DWORD src_width, - const uint8_t* pSrcLine, - uint8_t* dest_scan, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const; - FX_BOOL TransMask() const; - - CPDF_Document* m_pDocument; - const CPDF_Stream* m_pStream; - std::unique_ptr m_pStreamAcc; - const CPDF_Dictionary* m_pDict; - CPDF_ColorSpace* m_pColorSpace; - FX_DWORD m_Family; - FX_DWORD m_bpc; - FX_DWORD m_bpc_orig; - FX_DWORD m_nComponents; - FX_DWORD m_GroupFamily; - FX_DWORD m_MatteColor; - FX_BOOL m_bLoadMask; - FX_BOOL m_bDefaultDecode; - FX_BOOL m_bImageMask; - FX_BOOL m_bDoBpcCheck; - FX_BOOL m_bColorKey; - FX_BOOL m_bHasMask; - FX_BOOL m_bStdCS; - DIB_COMP_DATA* m_pCompData; - uint8_t* m_pLineBuf; - uint8_t* m_pMaskedLine; - std::unique_ptr m_pCachedBitmap; - std::unique_ptr m_pDecoder; - void* m_pJbig2Context; - CPDF_DIBSource* m_pMask; - std::unique_ptr m_pGlobalStream; - CPDF_Stream* m_pMaskStream; - int m_Status; -}; - -#define FPDF_HUGE_IMAGE_SIZE 60000000 -class CPDF_DIBTransferFunc : public CFX_FilteredDIB { - public: - CPDF_DIBTransferFunc(const CPDF_TransferFunc* pTransferFunc); - ~CPDF_DIBTransferFunc() override; - - // CFX_FilteredDIB - FXDIB_Format GetDestFormat() override; - FX_ARGB* GetDestPalette() override { return NULL; } - void TranslateScanline(uint8_t* dest_buf, - const uint8_t* src_buf) const override; - void TranslateDownSamples(uint8_t* dest_buf, - const uint8_t* src_buf, - int pixels, - int Bpp) const override; - - const uint8_t* m_RampR; - const uint8_t* m_RampG; - const uint8_t* m_RampB; -}; - -struct _CPDF_UniqueKeyGen { - void Generate(int count, ...); - FX_CHAR m_Key[128]; - int m_KeyLen; -}; - -#endif // CORE_SRC_FPDFAPI_FPDF_RENDER_RENDER_INT_H_ diff --git a/core/src/fpdfdoc/doc_action.cpp b/core/src/fpdfdoc/doc_action.cpp deleted file mode 100644 index 0af219e47e..0000000000 --- a/core/src/fpdfdoc/doc_action.cpp +++ /dev/null @@ -1,295 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfdoc/fpdf_doc.h" - -CPDF_Dest CPDF_Action::GetDest(CPDF_Document* pDoc) const { - if (!m_pDict) { - return CPDF_Dest(); - } - CFX_ByteString type = m_pDict->GetStringBy("S"); - if (type != "GoTo" && type != "GoToR") { - return CPDF_Dest(); - } - CPDF_Object* pDest = m_pDict->GetElementValue("D"); - if (!pDest) { - return CPDF_Dest(); - } - if (pDest->IsString() || pDest->IsName()) { - CPDF_NameTree name_tree(pDoc, "Dests"); - CFX_ByteStringC name = pDest->GetString(); - return CPDF_Dest(name_tree.LookupNamedDest(pDoc, name)); - } - if (CPDF_Array* pArray = pDest->AsArray()) - return CPDF_Dest(pArray); - return CPDF_Dest(); -} -const FX_CHAR* g_sATypes[] = { - "Unknown", "GoTo", "GoToR", "GoToE", "Launch", - "Thread", "URI", "Sound", "Movie", "Hide", - "Named", "SubmitForm", "ResetForm", "ImportData", "JavaScript", - "SetOCGState", "Rendition", "Trans", "GoTo3DView", ""}; -CPDF_Action::ActionType CPDF_Action::GetType() const { - ActionType eType = Unknown; - if (m_pDict) { - CFX_ByteString csType = m_pDict->GetStringBy("S"); - if (!csType.IsEmpty()) { - int i = 0; - while (g_sATypes[i][0] != '\0') { - if (csType == g_sATypes[i]) { - return (ActionType)i; - } - i++; - } - } - } - return eType; -} -CFX_WideString CPDF_Action::GetFilePath() const { - CFX_ByteString type = m_pDict->GetStringBy("S"); - if (type != "GoToR" && type != "Launch" && type != "SubmitForm" && - type != "ImportData") { - return CFX_WideString(); - } - CPDF_Object* pFile = m_pDict->GetElementValue("F"); - CFX_WideString path; - if (!pFile) { - if (type == "Launch") { - CPDF_Dictionary* pWinDict = m_pDict->GetDictBy("Win"); - if (pWinDict) { - return CFX_WideString::FromLocal(pWinDict->GetStringBy("F")); - } - } - return path; - } - CPDF_FileSpec filespec(pFile); - filespec.GetFileName(&path); - return path; -} -CFX_ByteString CPDF_Action::GetURI(CPDF_Document* pDoc) const { - CFX_ByteString csURI; - if (!m_pDict) { - return csURI; - } - if (m_pDict->GetStringBy("S") != "URI") { - return csURI; - } - csURI = m_pDict->GetStringBy("URI"); - CPDF_Dictionary* pRoot = pDoc->GetRoot(); - CPDF_Dictionary* pURI = pRoot->GetDictBy("URI"); - if (pURI) { - if (csURI.Find(":", 0) < 1) { - csURI = pURI->GetStringBy("Base") + csURI; - } - } - return csURI; -} -FX_DWORD CPDF_ActionFields::GetFieldsCount() const { - if (!m_pAction) { - return 0; - } - CPDF_Dictionary* pDict = m_pAction->GetDict(); - if (!pDict) { - return 0; - } - CFX_ByteString csType = pDict->GetStringBy("S"); - CPDF_Object* pFields = NULL; - if (csType == "Hide") { - pFields = pDict->GetElementValue("T"); - } else { - pFields = pDict->GetArrayBy("Fields"); - } - if (!pFields) - return 0; - if (pFields->IsDictionary()) - return 1; - if (pFields->IsString()) - return 1; - if (CPDF_Array* pArray = pFields->AsArray()) - return pArray->GetCount(); - return 0; -} - -std::vector CPDF_ActionFields::GetAllFields() const { - std::vector fields; - if (!m_pAction) - return fields; - - CPDF_Dictionary* pDict = m_pAction->GetDict(); - if (!pDict) - return fields; - - CFX_ByteString csType = pDict->GetStringBy("S"); - CPDF_Object* pFields; - if (csType == "Hide") - pFields = pDict->GetElementValue("T"); - else - pFields = pDict->GetArrayBy("Fields"); - if (!pFields) - return fields; - - if (pFields->IsDictionary() || pFields->IsString()) { - fields.push_back(pFields); - } else if (CPDF_Array* pArray = pFields->AsArray()) { - FX_DWORD iCount = pArray->GetCount(); - for (FX_DWORD i = 0; i < iCount; ++i) { - CPDF_Object* pObj = pArray->GetElementValue(i); - if (pObj) { - fields.push_back(pObj); - } - } - } - return fields; -} - -CPDF_Object* CPDF_ActionFields::GetField(FX_DWORD iIndex) const { - if (!m_pAction) { - return NULL; - } - CPDF_Dictionary* pDict = m_pAction->GetDict(); - if (!pDict) { - return NULL; - } - CFX_ByteString csType = pDict->GetStringBy("S"); - CPDF_Object* pFields = NULL; - if (csType == "Hide") { - pFields = pDict->GetElementValue("T"); - } else { - pFields = pDict->GetArrayBy("Fields"); - } - if (!pFields) { - return NULL; - } - CPDF_Object* pFindObj = NULL; - if (pFields->IsDictionary() || pFields->IsString()) { - if (iIndex == 0) - pFindObj = pFields; - } else if (CPDF_Array* pArray = pFields->AsArray()) { - pFindObj = pArray->GetElementValue(iIndex); - } - return pFindObj; -} - -CFX_WideString CPDF_Action::GetJavaScript() const { - CFX_WideString csJS; - if (!m_pDict) { - return csJS; - } - CPDF_Object* pJS = m_pDict->GetElementValue("JS"); - return pJS ? pJS->GetUnicodeText() : csJS; -} -CPDF_Dictionary* CPDF_Action::GetAnnot() const { - if (!m_pDict) { - return nullptr; - } - CFX_ByteString csType = m_pDict->GetStringBy("S"); - if (csType == "Rendition") { - return m_pDict->GetDictBy("AN"); - } - if (csType == "Movie") { - return m_pDict->GetDictBy("Annotation"); - } - return nullptr; -} -int32_t CPDF_Action::GetOperationType() const { - if (!m_pDict) { - return 0; - } - CFX_ByteString csType = m_pDict->GetStringBy("S"); - if (csType == "Rendition") { - return m_pDict->GetIntegerBy("OP"); - } - if (csType == "Movie") { - CFX_ByteString csOP = m_pDict->GetStringBy("Operation"); - if (csOP == "Play") { - return 0; - } - if (csOP == "Stop") { - return 1; - } - if (csOP == "Pause") { - return 2; - } - if (csOP == "Resume") { - return 3; - } - } - return 0; -} -FX_DWORD CPDF_Action::GetSubActionsCount() const { - if (!m_pDict || !m_pDict->KeyExist("Next")) - return 0; - - CPDF_Object* pNext = m_pDict->GetElementValue("Next"); - if (!pNext) - return 0; - if (pNext->IsDictionary()) - return 1; - if (CPDF_Array* pArray = pNext->AsArray()) - return pArray->GetCount(); - return 0; -} -CPDF_Action CPDF_Action::GetSubAction(FX_DWORD iIndex) const { - if (!m_pDict || !m_pDict->KeyExist("Next")) { - return CPDF_Action(); - } - CPDF_Object* pNext = m_pDict->GetElementValue("Next"); - if (CPDF_Dictionary* pDict = ToDictionary(pNext)) { - if (iIndex == 0) - return CPDF_Action(pDict); - } else if (CPDF_Array* pArray = ToArray(pNext)) { - return CPDF_Action(pArray->GetDictAt(iIndex)); - } - return CPDF_Action(); -} -const FX_CHAR* g_sAATypes[] = {"E", "X", "D", "U", "Fo", "Bl", "PO", "PC", - "PV", "PI", "O", "C", "K", "F", "V", "C", - "WC", "WS", "DS", "WP", "DP", ""}; -FX_BOOL CPDF_AAction::ActionExist(AActionType eType) const { - return m_pDict && m_pDict->KeyExist(g_sAATypes[(int)eType]); -} -CPDF_Action CPDF_AAction::GetAction(AActionType eType) const { - if (!m_pDict) { - return CPDF_Action(); - } - return CPDF_Action(m_pDict->GetDictBy(g_sAATypes[(int)eType])); -} - -CPDF_DocJSActions::CPDF_DocJSActions(CPDF_Document* pDoc) : m_pDocument(pDoc) {} - -int CPDF_DocJSActions::CountJSActions() const { - ASSERT(m_pDocument); - CPDF_NameTree name_tree(m_pDocument, "JavaScript"); - return name_tree.GetCount(); -} -CPDF_Action CPDF_DocJSActions::GetJSAction(int index, - CFX_ByteString& csName) const { - ASSERT(m_pDocument); - CPDF_NameTree name_tree(m_pDocument, "JavaScript"); - CPDF_Object* pAction = name_tree.LookupValue(index, csName); - if (!ToDictionary(pAction)) { - return CPDF_Action(); - } - return CPDF_Action(pAction->GetDict()); -} -CPDF_Action CPDF_DocJSActions::GetJSAction(const CFX_ByteString& csName) const { - ASSERT(m_pDocument); - CPDF_NameTree name_tree(m_pDocument, "JavaScript"); - CPDF_Object* pAction = name_tree.LookupValue(csName); - if (!ToDictionary(pAction)) { - return CPDF_Action(); - } - return CPDF_Action(pAction->GetDict()); -} -int CPDF_DocJSActions::FindJSAction(const CFX_ByteString& csName) const { - ASSERT(m_pDocument); - CPDF_NameTree name_tree(m_pDocument, "JavaScript"); - return name_tree.GetIndex(csName); -} diff --git a/core/src/fpdfdoc/doc_annot.cpp b/core/src/fpdfdoc/doc_annot.cpp deleted file mode 100644 index b17347cce3..0000000000 --- a/core/src/fpdfdoc/doc_annot.cpp +++ /dev/null @@ -1,350 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfdoc/fpdf_doc.h" - -CPDF_AnnotList::CPDF_AnnotList(CPDF_Page* pPage) - : m_pDocument(pPage->m_pDocument) { - if (!pPage->m_pFormDict) - return; - - CPDF_Array* pAnnots = pPage->m_pFormDict->GetArrayBy("Annots"); - if (!pAnnots) - return; - - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); - CPDF_Dictionary* pAcroForm = pRoot->GetDictBy("AcroForm"); - FX_BOOL bRegenerateAP = - pAcroForm && pAcroForm->GetBooleanBy("NeedAppearances"); - for (FX_DWORD i = 0; i < pAnnots->GetCount(); ++i) { - CPDF_Dictionary* pDict = ToDictionary(pAnnots->GetElementValue(i)); - if (!pDict) - continue; - - FX_DWORD dwObjNum = pDict->GetObjNum(); - if (dwObjNum == 0) { - dwObjNum = m_pDocument->AddIndirectObject(pDict); - CPDF_Reference* pAction = new CPDF_Reference(m_pDocument, dwObjNum); - pAnnots->InsertAt(i, pAction); - pAnnots->RemoveAt(i + 1); - pDict = pAnnots->GetDictAt(i); - } - m_AnnotList.push_back(new CPDF_Annot(pDict, this)); - if (bRegenerateAP && pDict->GetConstStringBy("Subtype") == "Widget" && - CPDF_InterForm::UpdatingAPEnabled()) { - FPDF_GenerateAP(m_pDocument, pDict); - } - } -} - -CPDF_AnnotList::~CPDF_AnnotList() { - for (CPDF_Annot* annot : m_AnnotList) - delete annot; -} - -void CPDF_AnnotList::DisplayPass(CPDF_Page* pPage, - CFX_RenderDevice* pDevice, - CPDF_RenderContext* pContext, - FX_BOOL bPrinting, - CFX_Matrix* pMatrix, - FX_BOOL bWidgetPass, - CPDF_RenderOptions* pOptions, - FX_RECT* clip_rect) { - for (CPDF_Annot* pAnnot : m_AnnotList) { - bool bWidget = pAnnot->GetSubType() == "Widget"; - if ((bWidgetPass && !bWidget) || (!bWidgetPass && bWidget)) - continue; - - FX_DWORD annot_flags = pAnnot->GetFlags(); - if (annot_flags & ANNOTFLAG_HIDDEN) - continue; - - if (bPrinting && (annot_flags & ANNOTFLAG_PRINT) == 0) - continue; - - if (!bPrinting && (annot_flags & ANNOTFLAG_NOVIEW)) - continue; - - if (pOptions) { - IPDF_OCContext* pOCContext = pOptions->m_pOCContext; - CPDF_Dictionary* pAnnotDict = pAnnot->GetAnnotDict(); - if (pOCContext && pAnnotDict && - !pOCContext->CheckOCGVisible(pAnnotDict->GetDictBy("OC"))) { - continue; - } - } - CFX_FloatRect annot_rect_f; - pAnnot->GetRect(annot_rect_f); - CFX_Matrix matrix = *pMatrix; - if (clip_rect) { - annot_rect_f.Transform(&matrix); - FX_RECT annot_rect = annot_rect_f.GetOutterRect(); - annot_rect.Intersect(*clip_rect); - if (annot_rect.IsEmpty()) { - continue; - } - } - if (pContext) { - pAnnot->DrawInContext(pPage, pContext, &matrix, CPDF_Annot::Normal); - } else if (!pAnnot->DrawAppearance(pPage, pDevice, &matrix, - CPDF_Annot::Normal, pOptions)) { - pAnnot->DrawBorder(pDevice, &matrix, pOptions); - } - } -} - -void CPDF_AnnotList::DisplayAnnots(CPDF_Page* pPage, - CFX_RenderDevice* pDevice, - CPDF_RenderContext* pContext, - FX_BOOL bPrinting, - CFX_Matrix* pUser2Device, - FX_DWORD dwAnnotFlags, - CPDF_RenderOptions* pOptions, - FX_RECT* pClipRect) { - if (dwAnnotFlags & 0x01) { - DisplayPass(pPage, pDevice, pContext, bPrinting, pUser2Device, FALSE, - pOptions, pClipRect); - } - if (dwAnnotFlags & 0x02) { - DisplayPass(pPage, pDevice, pContext, bPrinting, pUser2Device, TRUE, - pOptions, pClipRect); - } -} - -CPDF_Annot::CPDF_Annot(CPDF_Dictionary* pDict, CPDF_AnnotList* pList) - : m_pAnnotDict(pDict), - m_pList(pList), - m_sSubtype(m_pAnnotDict->GetConstStringBy("Subtype")) {} -CPDF_Annot::~CPDF_Annot() { - ClearCachedAP(); -} -void CPDF_Annot::ClearCachedAP() { - for (const auto& pair : m_APMap) { - delete pair.second; - } - m_APMap.clear(); -} -CFX_ByteString CPDF_Annot::GetSubType() const { - return m_sSubtype; -} - -void CPDF_Annot::GetRect(CFX_FloatRect& rect) const { - if (!m_pAnnotDict) { - return; - } - rect = m_pAnnotDict->GetRectBy("Rect"); - rect.Normalize(); -} - -FX_DWORD CPDF_Annot::GetFlags() const { - return m_pAnnotDict->GetIntegerBy("F"); -} - -CPDF_Stream* FPDFDOC_GetAnnotAP(CPDF_Dictionary* pAnnotDict, - CPDF_Annot::AppearanceMode mode) { - CPDF_Dictionary* pAP = pAnnotDict->GetDictBy("AP"); - if (!pAP) { - return NULL; - } - const FX_CHAR* ap_entry = "N"; - if (mode == CPDF_Annot::Down) - ap_entry = "D"; - else if (mode == CPDF_Annot::Rollover) - ap_entry = "R"; - if (!pAP->KeyExist(ap_entry)) - ap_entry = "N"; - - CPDF_Object* psub = pAP->GetElementValue(ap_entry); - if (!psub) - return nullptr; - if (CPDF_Stream* pStream = psub->AsStream()) - return pStream; - - if (CPDF_Dictionary* pDict = psub->AsDictionary()) { - CFX_ByteString as = pAnnotDict->GetStringBy("AS"); - if (as.IsEmpty()) { - CFX_ByteString value = pAnnotDict->GetStringBy("V"); - if (value.IsEmpty()) { - CPDF_Dictionary* pDict = pAnnotDict->GetDictBy("Parent"); - value = pDict ? pDict->GetStringBy("V") : CFX_ByteString(); - } - if (value.IsEmpty() || !pDict->KeyExist(value)) - as = "Off"; - else - as = value; - } - return pDict->GetStreamBy(as); - } - return nullptr; -} - -CPDF_Form* CPDF_Annot::GetAPForm(const CPDF_Page* pPage, AppearanceMode mode) { - CPDF_Stream* pStream = FPDFDOC_GetAnnotAP(m_pAnnotDict, mode); - if (!pStream) - return nullptr; - - auto it = m_APMap.find(pStream); - if (it != m_APMap.end()) - return it->second; - - CPDF_Form* pNewForm = - new CPDF_Form(m_pList->GetDocument(), pPage->m_pResources, pStream); - pNewForm->ParseContent(nullptr, nullptr, nullptr, nullptr); - m_APMap[pStream] = pNewForm; - return pNewForm; -} - -static CPDF_Form* FPDFDOC_Annot_GetMatrix(const CPDF_Page* pPage, - CPDF_Annot* pAnnot, - CPDF_Annot::AppearanceMode mode, - const CFX_Matrix* pUser2Device, - CFX_Matrix& matrix) { - CPDF_Form* pForm = pAnnot->GetAPForm(pPage, mode); - if (!pForm) { - return NULL; - } - CFX_FloatRect form_bbox = pForm->m_pFormDict->GetRectBy("BBox"); - CFX_Matrix form_matrix = pForm->m_pFormDict->GetMatrixBy("Matrix"); - form_matrix.TransformRect(form_bbox); - CFX_FloatRect arect; - pAnnot->GetRect(arect); - matrix.MatchRect(arect, form_bbox); - matrix.Concat(*pUser2Device); - return pForm; -} -FX_BOOL CPDF_Annot::DrawAppearance(CPDF_Page* pPage, - CFX_RenderDevice* pDevice, - const CFX_Matrix* pUser2Device, - AppearanceMode mode, - const CPDF_RenderOptions* pOptions) { - CFX_Matrix matrix; - CPDF_Form* pForm = - FPDFDOC_Annot_GetMatrix(pPage, this, mode, pUser2Device, matrix); - if (!pForm) { - return FALSE; - } - CPDF_RenderContext context(pPage); - context.AppendLayer(pForm, &matrix); - context.Render(pDevice, pOptions, nullptr); - return TRUE; -} -FX_BOOL CPDF_Annot::DrawInContext(const CPDF_Page* pPage, - CPDF_RenderContext* pContext, - const CFX_Matrix* pUser2Device, - AppearanceMode mode) { - CFX_Matrix matrix; - CPDF_Form* pForm = - FPDFDOC_Annot_GetMatrix(pPage, this, mode, pUser2Device, matrix); - if (!pForm) { - return FALSE; - } - pContext->AppendLayer(pForm, &matrix); - return TRUE; -} -void CPDF_Annot::DrawBorder(CFX_RenderDevice* pDevice, - const CFX_Matrix* pUser2Device, - const CPDF_RenderOptions* pOptions) { - if (GetSubType() == "Popup") { - return; - } - FX_DWORD annot_flags = GetFlags(); - if (annot_flags & ANNOTFLAG_HIDDEN) { - return; - } - bool bPrinting = pDevice->GetDeviceClass() == FXDC_PRINTER || - (pOptions && (pOptions->m_Flags & RENDER_PRINTPREVIEW)); - if (bPrinting && (annot_flags & ANNOTFLAG_PRINT) == 0) { - return; - } - if (!bPrinting && (annot_flags & ANNOTFLAG_NOVIEW)) { - return; - } - CPDF_Dictionary* pBS = m_pAnnotDict->GetDictBy("BS"); - char style_char; - FX_FLOAT width; - CPDF_Array* pDashArray = NULL; - if (!pBS) { - CPDF_Array* pBorderArray = m_pAnnotDict->GetArrayBy("Border"); - style_char = 'S'; - if (pBorderArray) { - width = pBorderArray->GetNumberAt(2); - if (pBorderArray->GetCount() == 4) { - pDashArray = pBorderArray->GetArrayAt(3); - if (!pDashArray) { - return; - } - int nLen = pDashArray->GetCount(); - int i = 0; - for (; i < nLen; ++i) { - CPDF_Object* pObj = pDashArray->GetElementValue(i); - if (pObj && pObj->GetInteger()) { - break; - } - } - if (i == nLen) { - return; - } - style_char = 'D'; - } - } else { - width = 1; - } - } else { - CFX_ByteString style = pBS->GetStringBy("S"); - pDashArray = pBS->GetArrayBy("D"); - style_char = style[1]; - width = pBS->GetNumberBy("W"); - } - if (width <= 0) { - return; - } - CPDF_Array* pColor = m_pAnnotDict->GetArrayBy("C"); - FX_DWORD argb = 0xff000000; - if (pColor) { - int R = (int32_t)(pColor->GetNumberAt(0) * 255); - int G = (int32_t)(pColor->GetNumberAt(1) * 255); - int B = (int32_t)(pColor->GetNumberAt(2) * 255); - argb = ArgbEncode(0xff, R, G, B); - } - CFX_GraphStateData graph_state; - graph_state.m_LineWidth = width; - if (style_char == 'D') { - if (pDashArray) { - FX_DWORD dash_count = pDashArray->GetCount(); - if (dash_count % 2) { - dash_count++; - } - graph_state.m_DashArray = FX_Alloc(FX_FLOAT, dash_count); - graph_state.m_DashCount = dash_count; - FX_DWORD i; - for (i = 0; i < pDashArray->GetCount(); ++i) { - graph_state.m_DashArray[i] = pDashArray->GetNumberAt(i); - } - if (i < dash_count) { - graph_state.m_DashArray[i] = graph_state.m_DashArray[i - 1]; - } - } else { - graph_state.m_DashArray = FX_Alloc(FX_FLOAT, 2); - graph_state.m_DashCount = 2; - graph_state.m_DashArray[0] = graph_state.m_DashArray[1] = 3 * 1.0f; - } - } - CFX_FloatRect rect; - GetRect(rect); - CFX_PathData path; - width /= 2; - path.AppendRect(rect.left + width, rect.bottom + width, rect.right - width, - rect.top - width); - int fill_type = 0; - if (pOptions && (pOptions->m_Flags & RENDER_NOPATHSMOOTH)) { - fill_type |= FXFILL_NOPATHSMOOTH; - } - pDevice->DrawPath(&path, pUser2Device, &graph_state, argb, argb, fill_type); -} diff --git a/core/src/fpdfdoc/doc_ap.cpp b/core/src/fpdfdoc/doc_ap.cpp deleted file mode 100644 index d91b4678ca..0000000000 --- a/core/src/fpdfdoc/doc_ap.cpp +++ /dev/null @@ -1,936 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_simple_parser.h" -#include "core/include/fpdfdoc/fpdf_ap.h" -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/include/fpdfdoc/fpdf_vt.h" -#include "core/src/fpdfdoc/doc_utils.h" -#include "core/src/fpdfdoc/pdf_vt.h" - -#define PBS_SOLID 0 -#define PBS_DASH 1 -#define PBS_BEVELED 2 -#define PBS_INSET 3 -#define PBS_UNDERLINED 4 - -FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict) { - if (!pAnnotDict || pAnnotDict->GetConstStringBy("Subtype") != "Widget") { - return FALSE; - } - CFX_ByteString field_type = FPDF_GetFieldAttr(pAnnotDict, "FT")->GetString(); - FX_DWORD flags = FPDF_GetFieldAttr(pAnnotDict, "Ff") - ? FPDF_GetFieldAttr(pAnnotDict, "Ff")->GetInteger() - : 0; - if (field_type == "Tx") { - return CPVT_GenerateAP::GenerateTextFieldAP(pDoc, pAnnotDict); - } - if (field_type == "Ch") { - return (flags & (1 << 17)) - ? CPVT_GenerateAP::GenerateComboBoxAP(pDoc, pAnnotDict) - : CPVT_GenerateAP::GenerateListBoxAP(pDoc, pAnnotDict); - } - if (field_type == "Btn") { - if (!(flags & (1 << 16))) { - if (!pAnnotDict->KeyExist("AS")) { - if (CPDF_Dictionary* pParentDict = pAnnotDict->GetDictBy("Parent")) { - if (pParentDict->KeyExist("AS")) { - pAnnotDict->SetAtString("AS", pParentDict->GetStringBy("AS")); - } - } - } - } - } - return FALSE; -} - -class CPVT_FontMap : public IPVT_FontMap { - public: - CPVT_FontMap(CPDF_Document* pDoc, - CPDF_Dictionary* pResDict, - CPDF_Font* pDefFont, - const CFX_ByteString& sDefFontAlias); - ~CPVT_FontMap() override; - - // IPVT_FontMap - CPDF_Font* GetPDFFont(int32_t nFontIndex) override; - CFX_ByteString GetPDFFontAlias(int32_t nFontIndex) override; - - static void GetAnnotSysPDFFont(CPDF_Document* pDoc, - CPDF_Dictionary* pResDict, - CPDF_Font*& pSysFont, - CFX_ByteString& sSysFontAlias); - - private: - CPDF_Document* m_pDocument; - CPDF_Dictionary* m_pResDict; - CPDF_Font* m_pDefFont; - CFX_ByteString m_sDefFontAlias; - CPDF_Font* m_pSysFont; - CFX_ByteString m_sSysFontAlias; -}; - -CPVT_FontMap::CPVT_FontMap(CPDF_Document* pDoc, - CPDF_Dictionary* pResDict, - CPDF_Font* pDefFont, - const CFX_ByteString& sDefFontAlias) - : m_pDocument(pDoc), - m_pResDict(pResDict), - m_pDefFont(pDefFont), - m_sDefFontAlias(sDefFontAlias), - m_pSysFont(NULL), - m_sSysFontAlias() {} -CPVT_FontMap::~CPVT_FontMap() {} -void CPVT_FontMap::GetAnnotSysPDFFont(CPDF_Document* pDoc, - CPDF_Dictionary* pResDict, - CPDF_Font*& pSysFont, - CFX_ByteString& sSysFontAlias) { - if (pDoc && pResDict) { - CFX_ByteString sFontAlias; - CPDF_Dictionary* pFormDict = pDoc->GetRoot()->GetDictBy("AcroForm"); - if (CPDF_Font* pPDFFont = - AddNativeInterFormFont(pFormDict, pDoc, sSysFontAlias)) { - if (CPDF_Dictionary* pFontList = pResDict->GetDictBy("Font")) { - if (!pFontList->KeyExist(sSysFontAlias)) { - pFontList->SetAtReference(sSysFontAlias, pDoc, - pPDFFont->GetFontDict()); - } - } - pSysFont = pPDFFont; - } - } -} -CPDF_Font* CPVT_FontMap::GetPDFFont(int32_t nFontIndex) { - switch (nFontIndex) { - case 0: - return m_pDefFont; - case 1: - if (!m_pSysFont) { - GetAnnotSysPDFFont(m_pDocument, m_pResDict, m_pSysFont, - m_sSysFontAlias); - } - return m_pSysFont; - } - return NULL; -} -CFX_ByteString CPVT_FontMap::GetPDFFontAlias(int32_t nFontIndex) { - switch (nFontIndex) { - case 0: - return m_sDefFontAlias; - case 1: - if (!m_pSysFont) { - GetAnnotSysPDFFont(m_pDocument, m_pResDict, m_pSysFont, - m_sSysFontAlias); - } - return m_sSysFontAlias; - } - return ""; -} -CPVT_Provider::CPVT_Provider(IPVT_FontMap* pFontMap) : m_pFontMap(pFontMap) { - ASSERT(m_pFontMap); -} -CPVT_Provider::~CPVT_Provider() {} -int32_t CPVT_Provider::GetCharWidth(int32_t nFontIndex, - FX_WORD word, - int32_t nWordStyle) { - if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) { - FX_DWORD charcode = pPDFFont->CharCodeFromUnicode(word); - if (charcode != CPDF_Font::kInvalidCharCode) { - return pPDFFont->GetCharWidthF(charcode); - } - } - return 0; -} -int32_t CPVT_Provider::GetTypeAscent(int32_t nFontIndex) { - if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) { - return pPDFFont->GetTypeAscent(); - } - return 0; -} -int32_t CPVT_Provider::GetTypeDescent(int32_t nFontIndex) { - if (CPDF_Font* pPDFFont = m_pFontMap->GetPDFFont(nFontIndex)) { - return pPDFFont->GetTypeDescent(); - } - return 0; -} -int32_t CPVT_Provider::GetWordFontIndex(FX_WORD word, - int32_t charset, - int32_t nFontIndex) { - if (CPDF_Font* pDefFont = m_pFontMap->GetPDFFont(0)) { - if (pDefFont->CharCodeFromUnicode(word) != CPDF_Font::kInvalidCharCode) { - return 0; - } - } - if (CPDF_Font* pSysFont = m_pFontMap->GetPDFFont(1)) { - if (pSysFont->CharCodeFromUnicode(word) != CPDF_Font::kInvalidCharCode) { - return 1; - } - } - return -1; -} -FX_BOOL CPVT_Provider::IsLatinWord(FX_WORD word) { - if ((word >= 0x61 && word <= 0x7A) || (word >= 0x41 && word <= 0x5A) || - word == 0x2D || word == 0x27) { - return TRUE; - } - return FALSE; -} -int32_t CPVT_Provider::GetDefaultFontIndex() { - return 0; -} - -static CFX_ByteString GetPDFWordString(IPVT_FontMap* pFontMap, - int32_t nFontIndex, - FX_WORD Word, - FX_WORD SubWord) { - CFX_ByteString sWord; - if (SubWord > 0) { - sWord.Format("%c", SubWord); - return sWord; - } - - if (!pFontMap) - return sWord; - - if (CPDF_Font* pPDFFont = pFontMap->GetPDFFont(nFontIndex)) { - if (pPDFFont->GetBaseFont().Compare("Symbol") == 0 || - pPDFFont->GetBaseFont().Compare("ZapfDingbats") == 0) { - sWord.Format("%c", Word); - } else { - FX_DWORD dwCharCode = pPDFFont->CharCodeFromUnicode(Word); - if (dwCharCode != CPDF_Font::kInvalidCharCode) { - pPDFFont->AppendChar(sWord, dwCharCode); - } - } - } - return sWord; -} - -static CFX_ByteString GetWordRenderString(const CFX_ByteString& strWords) { - if (strWords.GetLength() > 0) { - return PDF_EncodeString(strWords) + " Tj\n"; - } - return ""; -} -static CFX_ByteString GetFontSetString(IPVT_FontMap* pFontMap, - int32_t nFontIndex, - FX_FLOAT fFontSize) { - CFX_ByteTextBuf sRet; - if (pFontMap) { - CFX_ByteString sFontAlias = pFontMap->GetPDFFontAlias(nFontIndex); - if (sFontAlias.GetLength() > 0 && fFontSize > 0) { - sRet << "/" << sFontAlias << " " << fFontSize << " Tf\n"; - } - } - return sRet.GetByteString(); -} -static CPVT_Color ParseColor(const CFX_ByteString& str) { - CPDF_SimpleParser syntax(str); - if (syntax.FindTagParamFromStart("g", 1)) { - return CPVT_Color(CPVT_Color::kGray, FX_atof(syntax.GetWord())); - } - if (syntax.FindTagParamFromStart("rg", 3)) { - FX_FLOAT f1 = FX_atof(syntax.GetWord()); - FX_FLOAT f2 = FX_atof(syntax.GetWord()); - FX_FLOAT f3 = FX_atof(syntax.GetWord()); - return CPVT_Color(CPVT_Color::kRGB, f1, f2, f3); - } - if (syntax.FindTagParamFromStart("k", 4)) { - FX_FLOAT f1 = FX_atof(syntax.GetWord()); - FX_FLOAT f2 = FX_atof(syntax.GetWord()); - FX_FLOAT f3 = FX_atof(syntax.GetWord()); - FX_FLOAT f4 = FX_atof(syntax.GetWord()); - return CPVT_Color(CPVT_Color::kCMYK, f1, f2, f3, f4); - } - return CPVT_Color(CPVT_Color::kTransparent); -} -static CPVT_Color ParseColor(const CPDF_Array& array) { - CPVT_Color rt; - switch (array.GetCount()) { - case 1: - rt = CPVT_Color(CPVT_Color::kGray, array.GetFloatAt(0)); - break; - case 3: - rt = CPVT_Color(CPVT_Color::kRGB, array.GetFloatAt(0), - array.GetFloatAt(1), array.GetFloatAt(2)); - break; - case 4: - rt = CPVT_Color(CPVT_Color::kCMYK, array.GetFloatAt(0), - array.GetFloatAt(1), array.GetFloatAt(2), - array.GetFloatAt(3)); - break; - } - return rt; -} -static FX_BOOL GenerateWidgetAP(CPDF_Document* pDoc, - CPDF_Dictionary* pAnnotDict, - const int32_t& nWidgetType) { - CPDF_Dictionary* pFormDict = NULL; - if (CPDF_Dictionary* pRootDict = pDoc->GetRoot()) { - pFormDict = pRootDict->GetDictBy("AcroForm"); - } - if (!pFormDict) { - return FALSE; - } - CFX_ByteString DA; - if (CPDF_Object* pDAObj = FPDF_GetFieldAttr(pAnnotDict, "DA")) { - DA = pDAObj->GetString(); - } - if (DA.IsEmpty()) { - DA = pFormDict->GetStringBy("DA"); - } - if (DA.IsEmpty()) { - return FALSE; - } - CPDF_SimpleParser syntax(DA); - syntax.FindTagParamFromStart("Tf", 2); - CFX_ByteString sFontName = syntax.GetWord(); - sFontName = PDF_NameDecode(sFontName); - if (sFontName.IsEmpty()) { - return FALSE; - } - FX_FLOAT fFontSize = FX_atof(syntax.GetWord()); - CPVT_Color crText = ParseColor(DA); - FX_BOOL bUseFormRes = FALSE; - CPDF_Dictionary* pFontDict = NULL; - CPDF_Dictionary* pDRDict = pAnnotDict->GetDictBy("DR"); - if (!pDRDict) { - pDRDict = pFormDict->GetDictBy("DR"); - bUseFormRes = TRUE; - } - CPDF_Dictionary* pDRFontDict = NULL; - if (pDRDict && (pDRFontDict = pDRDict->GetDictBy("Font"))) { - pFontDict = pDRFontDict->GetDictBy(sFontName.Mid(1)); - if (!pFontDict && !bUseFormRes) { - pDRDict = pFormDict->GetDictBy("DR"); - pDRFontDict = pDRDict->GetDictBy("Font"); - if (pDRFontDict) { - pFontDict = pDRFontDict->GetDictBy(sFontName.Mid(1)); - } - } - } - if (!pDRFontDict) { - return FALSE; - } - if (!pFontDict) { - pFontDict = new CPDF_Dictionary; - pFontDict->SetAtName("Type", "Font"); - pFontDict->SetAtName("Subtype", "Type1"); - pFontDict->SetAtName("BaseFont", "Helvetica"); - pFontDict->SetAtName("Encoding", "WinAnsiEncoding"); - pDoc->AddIndirectObject(pFontDict); - pDRFontDict->SetAtReference(sFontName.Mid(1), pDoc, pFontDict); - } - CPDF_Font* pDefFont = pDoc->LoadFont(pFontDict); - if (!pDefFont) { - return FALSE; - } - CFX_FloatRect rcAnnot = pAnnotDict->GetRectBy("Rect"); - int32_t nRotate = 0; - if (CPDF_Dictionary* pMKDict = pAnnotDict->GetDictBy("MK")) { - nRotate = pMKDict->GetIntegerBy("R"); - } - CFX_FloatRect rcBBox; - CFX_Matrix matrix; - switch (nRotate % 360) { - case 0: - rcBBox = CFX_FloatRect(0, 0, rcAnnot.right - rcAnnot.left, - rcAnnot.top - rcAnnot.bottom); - break; - case 90: - matrix = CFX_Matrix(0, 1, -1, 0, rcAnnot.right - rcAnnot.left, 0); - rcBBox = CFX_FloatRect(0, 0, rcAnnot.top - rcAnnot.bottom, - rcAnnot.right - rcAnnot.left); - break; - case 180: - matrix = CFX_Matrix(-1, 0, 0, -1, rcAnnot.right - rcAnnot.left, - rcAnnot.top - rcAnnot.bottom); - rcBBox = CFX_FloatRect(0, 0, rcAnnot.right - rcAnnot.left, - rcAnnot.top - rcAnnot.bottom); - break; - case 270: - matrix = CFX_Matrix(0, -1, 1, 0, 0, rcAnnot.top - rcAnnot.bottom); - rcBBox = CFX_FloatRect(0, 0, rcAnnot.top - rcAnnot.bottom, - rcAnnot.right - rcAnnot.left); - break; - } - int32_t nBorderStyle = PBS_SOLID; - FX_FLOAT fBorderWidth = 1; - CPVT_Dash dsBorder(3, 0, 0); - CPVT_Color crLeftTop, crRightBottom; - if (CPDF_Dictionary* pBSDict = pAnnotDict->GetDictBy("BS")) { - if (pBSDict->KeyExist("W")) { - fBorderWidth = pBSDict->GetNumberBy("W"); - } - if (CPDF_Array* pArray = pBSDict->GetArrayBy("D")) { - dsBorder = CPVT_Dash(pArray->GetIntegerAt(0), pArray->GetIntegerAt(1), - pArray->GetIntegerAt(2)); - } - switch (pBSDict->GetStringBy("S").GetAt(0)) { - case 'S': - nBorderStyle = PBS_SOLID; - break; - case 'D': - nBorderStyle = PBS_DASH; - break; - case 'B': - nBorderStyle = PBS_BEVELED; - fBorderWidth *= 2; - crLeftTop = CPVT_Color(CPVT_Color::kGray, 1); - crRightBottom = CPVT_Color(CPVT_Color::kGray, 0.5); - break; - case 'I': - nBorderStyle = PBS_INSET; - fBorderWidth *= 2; - crLeftTop = CPVT_Color(CPVT_Color::kGray, 0.5); - crRightBottom = CPVT_Color(CPVT_Color::kGray, 0.75); - break; - case 'U': - nBorderStyle = PBS_UNDERLINED; - break; - } - } - CPVT_Color crBorder, crBG; - if (CPDF_Dictionary* pMKDict = pAnnotDict->GetDictBy("MK")) { - if (CPDF_Array* pArray = pMKDict->GetArrayBy("BC")) { - crBorder = ParseColor(*pArray); - } - if (CPDF_Array* pArray = pMKDict->GetArrayBy("BG")) { - crBG = ParseColor(*pArray); - } - } - CFX_ByteTextBuf sAppStream; - CFX_ByteString sBG = CPVT_GenerateAP::GenerateColorAP(crBG, TRUE); - if (sBG.GetLength() > 0) { - sAppStream << "q\n" << sBG << rcBBox.left << " " << rcBBox.bottom << " " - << rcBBox.Width() << " " << rcBBox.Height() << " re f\n" - << "Q\n"; - } - CFX_ByteString sBorderStream = CPVT_GenerateAP::GenerateBorderAP( - rcBBox, fBorderWidth, crBorder, crLeftTop, crRightBottom, nBorderStyle, - dsBorder); - if (sBorderStream.GetLength() > 0) { - sAppStream << "q\n" << sBorderStream << "Q\n"; - } - CFX_FloatRect rcBody = - CFX_FloatRect(rcBBox.left + fBorderWidth, rcBBox.bottom + fBorderWidth, - rcBBox.right - fBorderWidth, rcBBox.top - fBorderWidth); - rcBody.Normalize(); - CPDF_Dictionary* pAPDict = pAnnotDict->GetDictBy("AP"); - if (!pAPDict) { - pAPDict = new CPDF_Dictionary; - pAnnotDict->SetAt("AP", pAPDict); - } - CPDF_Stream* pNormalStream = pAPDict->GetStreamBy("N"); - if (!pNormalStream) { - pNormalStream = new CPDF_Stream(nullptr, 0, nullptr); - int32_t objnum = pDoc->AddIndirectObject(pNormalStream); - pAnnotDict->GetDictBy("AP")->SetAtReference("N", pDoc, objnum); - } - CPDF_Dictionary* pStreamDict = pNormalStream->GetDict(); - if (pStreamDict) { - pStreamDict->SetAtMatrix("Matrix", matrix); - pStreamDict->SetAtRect("BBox", rcBBox); - CPDF_Dictionary* pStreamResList = pStreamDict->GetDictBy("Resources"); - if (pStreamResList) { - CPDF_Dictionary* pStreamResFontList = pStreamResList->GetDictBy("Font"); - if (!pStreamResFontList) { - pStreamResFontList = new CPDF_Dictionary; - pStreamResList->SetAt("Font", pStreamResFontList); - } - if (!pStreamResFontList->KeyExist(sFontName)) { - pStreamResFontList->SetAtReference(sFontName, pDoc, pFontDict); - } - } else { - pStreamDict->SetAt("Resources", pFormDict->GetDictBy("DR")->Clone()); - pStreamResList = pStreamDict->GetDictBy("Resources"); - } - } - switch (nWidgetType) { - case 0: { - CFX_WideString swValue = - FPDF_GetFieldAttr(pAnnotDict, "V") - ? FPDF_GetFieldAttr(pAnnotDict, "V")->GetUnicodeText() - : CFX_WideString(); - int32_t nAlign = FPDF_GetFieldAttr(pAnnotDict, "Q") - ? FPDF_GetFieldAttr(pAnnotDict, "Q")->GetInteger() - : 0; - FX_DWORD dwFlags = FPDF_GetFieldAttr(pAnnotDict, "Ff") - ? FPDF_GetFieldAttr(pAnnotDict, "Ff")->GetInteger() - : 0; - FX_DWORD dwMaxLen = - FPDF_GetFieldAttr(pAnnotDict, "MaxLen") - ? FPDF_GetFieldAttr(pAnnotDict, "MaxLen")->GetInteger() - : 0; - CPVT_FontMap map(pDoc, - pStreamDict ? pStreamDict->GetDictBy("Resources") : NULL, - pDefFont, sFontName.Right(sFontName.GetLength() - 1)); - CPVT_Provider prd(&map); - CPDF_VariableText vt; - vt.SetProvider(&prd); - vt.SetPlateRect(rcBody); - vt.SetAlignment(nAlign); - if (IsFloatZero(fFontSize)) { - vt.SetAutoFontSize(TRUE); - } else { - vt.SetFontSize(fFontSize); - } - FX_BOOL bMultiLine = (dwFlags >> 12) & 1; - if (bMultiLine) { - vt.SetMultiLine(TRUE); - vt.SetAutoReturn(TRUE); - } - FX_WORD subWord = 0; - if ((dwFlags >> 13) & 1) { - subWord = '*'; - vt.SetPasswordChar(subWord); - } - FX_BOOL bCharArray = (dwFlags >> 24) & 1; - if (bCharArray) { - vt.SetCharArray(dwMaxLen); - } else { - vt.SetLimitChar(dwMaxLen); - } - vt.Initialize(); - vt.SetText(swValue.c_str()); - vt.RearrangeAll(); - CFX_FloatRect rcContent = vt.GetContentRect(); - CFX_FloatPoint ptOffset(0.0f, 0.0f); - if (!bMultiLine) { - ptOffset = - CFX_FloatPoint(0.0f, (rcContent.Height() - rcBody.Height()) / 2.0f); - } - CFX_ByteString sBody = CPVT_GenerateAP::GenerateEditAP( - &map, vt.GetIterator(), ptOffset, !bCharArray, subWord); - if (sBody.GetLength() > 0) { - sAppStream << "/Tx BMC\n" - << "q\n"; - if (rcContent.Width() > rcBody.Width() || - rcContent.Height() > rcBody.Height()) { - sAppStream << rcBody.left << " " << rcBody.bottom << " " - << rcBody.Width() << " " << rcBody.Height() - << " re\nW\nn\n"; - } - sAppStream << "BT\n" << CPVT_GenerateAP::GenerateColorAP(crText, TRUE) - << sBody << "ET\n" - << "Q\nEMC\n"; - } - } break; - case 1: { - CFX_WideString swValue = - FPDF_GetFieldAttr(pAnnotDict, "V") - ? FPDF_GetFieldAttr(pAnnotDict, "V")->GetUnicodeText() - : CFX_WideString(); - CPVT_FontMap map(pDoc, - pStreamDict ? pStreamDict->GetDictBy("Resources") : NULL, - pDefFont, sFontName.Right(sFontName.GetLength() - 1)); - CPVT_Provider prd(&map); - CPDF_VariableText vt; - vt.SetProvider(&prd); - CFX_FloatRect rcButton = rcBody; - rcButton.left = rcButton.right - 13; - rcButton.Normalize(); - CFX_FloatRect rcEdit = rcBody; - rcEdit.right = rcButton.left; - rcEdit.Normalize(); - vt.SetPlateRect(rcEdit); - if (IsFloatZero(fFontSize)) { - vt.SetAutoFontSize(TRUE); - } else { - vt.SetFontSize(fFontSize); - } - vt.Initialize(); - vt.SetText(swValue.c_str()); - vt.RearrangeAll(); - CFX_FloatRect rcContent = vt.GetContentRect(); - CFX_FloatPoint ptOffset = - CFX_FloatPoint(0.0f, (rcContent.Height() - rcEdit.Height()) / 2.0f); - CFX_ByteString sEdit = CPVT_GenerateAP::GenerateEditAP( - &map, vt.GetIterator(), ptOffset, TRUE, 0); - if (sEdit.GetLength() > 0) { - sAppStream << "/Tx BMC\n" - << "q\n"; - sAppStream << rcEdit.left << " " << rcEdit.bottom << " " - << rcEdit.Width() << " " << rcEdit.Height() << " re\nW\nn\n"; - sAppStream << "BT\n" << CPVT_GenerateAP::GenerateColorAP(crText, TRUE) - << sEdit << "ET\n" - << "Q\nEMC\n"; - } - CFX_ByteString sButton = CPVT_GenerateAP::GenerateColorAP( - CPVT_Color(CPVT_Color::kRGB, 220.0f / 255.0f, 220.0f / 255.0f, - 220.0f / 255.0f), - TRUE); - if (sButton.GetLength() > 0 && !rcButton.IsEmpty()) { - sAppStream << "q\n" << sButton; - sAppStream << rcButton.left << " " << rcButton.bottom << " " - << rcButton.Width() << " " << rcButton.Height() << " re f\n"; - sAppStream << "Q\n"; - CFX_ByteString sButtonBorder = CPVT_GenerateAP::GenerateBorderAP( - rcButton, 2, CPVT_Color(CPVT_Color::kGray, 0), - CPVT_Color(CPVT_Color::kGray, 1), - CPVT_Color(CPVT_Color::kGray, 0.5), PBS_BEVELED, - CPVT_Dash(3, 0, 0)); - if (sButtonBorder.GetLength() > 0) { - sAppStream << "q\n" << sButtonBorder << "Q\n"; - } - CFX_FloatPoint ptCenter = - CFX_FloatPoint((rcButton.left + rcButton.right) / 2, - (rcButton.top + rcButton.bottom) / 2); - if (IsFloatBigger(rcButton.Width(), 6) && - IsFloatBigger(rcButton.Height(), 6)) { - sAppStream << "q\n" - << " 0 g\n"; - sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " m\n"; - sAppStream << ptCenter.x + 3 << " " << ptCenter.y + 1.5f << " l\n"; - sAppStream << ptCenter.x << " " << ptCenter.y - 1.5f << " l\n"; - sAppStream << ptCenter.x - 3 << " " << ptCenter.y + 1.5f << " l f\n"; - sAppStream << sButton << "Q\n"; - } - } - } break; - case 2: { - CPVT_FontMap map(pDoc, - pStreamDict ? pStreamDict->GetDictBy("Resources") : NULL, - pDefFont, sFontName.Right(sFontName.GetLength() - 1)); - CPVT_Provider prd(&map); - CPDF_Array* pOpts = FPDF_GetFieldAttr(pAnnotDict, "Opt") - ? FPDF_GetFieldAttr(pAnnotDict, "Opt")->GetArray() - : NULL; - CPDF_Array* pSels = FPDF_GetFieldAttr(pAnnotDict, "I") - ? FPDF_GetFieldAttr(pAnnotDict, "I")->GetArray() - : NULL; - int32_t nTop = FPDF_GetFieldAttr(pAnnotDict, "TI") - ? FPDF_GetFieldAttr(pAnnotDict, "TI")->GetInteger() - : 0; - CFX_ByteTextBuf sBody; - if (pOpts) { - FX_FLOAT fy = rcBody.top; - for (int32_t i = nTop, sz = pOpts->GetCount(); i < sz; i++) { - if (IsFloatSmaller(fy, rcBody.bottom)) { - break; - } - if (CPDF_Object* pOpt = pOpts->GetElementValue(i)) { - CFX_WideString swItem; - if (pOpt->IsString()) - swItem = pOpt->GetUnicodeText(); - else if (CPDF_Array* pArray = pOpt->AsArray()) - swItem = pArray->GetElementValue(1)->GetUnicodeText(); - - FX_BOOL bSelected = FALSE; - if (pSels) { - for (FX_DWORD s = 0, ssz = pSels->GetCount(); s < ssz; s++) { - if (i == pSels->GetIntegerAt(s)) { - bSelected = TRUE; - break; - } - } - } - CPDF_VariableText vt; - vt.SetProvider(&prd); - vt.SetPlateRect( - CFX_FloatRect(rcBody.left, 0.0f, rcBody.right, 0.0f)); - if (IsFloatZero(fFontSize)) { - vt.SetFontSize(12.0f); - } else { - vt.SetFontSize(fFontSize); - } - vt.Initialize(); - vt.SetText(swItem.c_str()); - vt.RearrangeAll(); - FX_FLOAT fItemHeight = vt.GetContentRect().Height(); - if (bSelected) { - CFX_FloatRect rcItem = CFX_FloatRect( - rcBody.left, fy - fItemHeight, rcBody.right, fy); - sBody << "q\n" << CPVT_GenerateAP::GenerateColorAP( - CPVT_Color(CPVT_Color::kRGB, 0, - 51.0f / 255.0f, 113.0f / 255.0f), - TRUE) - << rcItem.left << " " << rcItem.bottom << " " - << rcItem.Width() << " " << rcItem.Height() << " re f\n" - << "Q\n"; - sBody << "BT\n" << CPVT_GenerateAP::GenerateColorAP( - CPVT_Color(CPVT_Color::kGray, 1), TRUE) - << CPVT_GenerateAP::GenerateEditAP(&map, vt.GetIterator(), - CFX_FloatPoint(0.0f, fy), - TRUE, 0) - << "ET\n"; - } else { - sBody << "BT\n" << CPVT_GenerateAP::GenerateColorAP(crText, TRUE) - << CPVT_GenerateAP::GenerateEditAP(&map, vt.GetIterator(), - CFX_FloatPoint(0.0f, fy), - TRUE, 0) - << "ET\n"; - } - fy -= fItemHeight; - } - } - } - if (sBody.GetSize() > 0) { - sAppStream << "/Tx BMC\n" - << "q\n"; - sAppStream << rcBody.left << " " << rcBody.bottom << " " - << rcBody.Width() << " " << rcBody.Height() << " re\nW\nn\n"; - sAppStream << sBody.GetByteString() << "Q\nEMC\n"; - } - } break; - } - if (pNormalStream) { - pNormalStream->SetData((uint8_t*)sAppStream.GetBuffer(), - sAppStream.GetSize(), FALSE, FALSE); - pStreamDict = pNormalStream->GetDict(); - if (pStreamDict) { - pStreamDict->SetAtMatrix("Matrix", matrix); - pStreamDict->SetAtRect("BBox", rcBBox); - CPDF_Dictionary* pStreamResList = pStreamDict->GetDictBy("Resources"); - if (pStreamResList) { - CPDF_Dictionary* pStreamResFontList = pStreamResList->GetDictBy("Font"); - if (!pStreamResFontList) { - pStreamResFontList = new CPDF_Dictionary; - pStreamResList->SetAt("Font", pStreamResFontList); - } - if (!pStreamResFontList->KeyExist(sFontName)) { - pStreamResFontList->SetAtReference(sFontName, pDoc, pFontDict); - } - } else { - pStreamDict->SetAt("Resources", pFormDict->GetDictBy("DR")->Clone()); - pStreamResList = pStreamDict->GetDictBy("Resources"); - } - } - } - return TRUE; -} -FX_BOOL CPVT_GenerateAP::GenerateTextFieldAP(CPDF_Document* pDoc, - CPDF_Dictionary* pAnnotDict) { - return GenerateWidgetAP(pDoc, pAnnotDict, 0); -} -FX_BOOL CPVT_GenerateAP::GenerateComboBoxAP(CPDF_Document* pDoc, - CPDF_Dictionary* pAnnotDict) { - return GenerateWidgetAP(pDoc, pAnnotDict, 1); -} -FX_BOOL CPVT_GenerateAP::GenerateListBoxAP(CPDF_Document* pDoc, - CPDF_Dictionary* pAnnotDict) { - return GenerateWidgetAP(pDoc, pAnnotDict, 2); -} -CFX_ByteString CPVT_GenerateAP::GenerateEditAP( - IPVT_FontMap* pFontMap, - IPDF_VariableText_Iterator* pIterator, - const CFX_FloatPoint& ptOffset, - FX_BOOL bContinuous, - FX_WORD SubWord, - const CPVT_WordRange* pVisible) { - CFX_ByteTextBuf sEditStream, sLineStream, sWords; - CFX_FloatPoint ptOld(0.0f, 0.0f), ptNew(0.0f, 0.0f); - int32_t nCurFontIndex = -1; - if (pIterator) { - if (pVisible) { - pIterator->SetAt(pVisible->BeginPos); - } else { - pIterator->SetAt(0); - } - CPVT_WordPlace oldplace; - while (pIterator->NextWord()) { - CPVT_WordPlace place = pIterator->GetAt(); - if (pVisible && place.WordCmp(pVisible->EndPos) > 0) { - break; - } - if (bContinuous) { - if (place.LineCmp(oldplace) != 0) { - if (sWords.GetSize() > 0) { - sLineStream << GetWordRenderString(sWords.GetByteString()); - sEditStream << sLineStream; - sLineStream.Clear(); - sWords.Clear(); - } - CPVT_Word word; - if (pIterator->GetWord(word)) { - ptNew = CFX_FloatPoint(word.ptWord.x + ptOffset.x, - word.ptWord.y + ptOffset.y); - } else { - CPVT_Line line; - pIterator->GetLine(line); - ptNew = CFX_FloatPoint(line.ptLine.x + ptOffset.x, - line.ptLine.y + ptOffset.y); - } - if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) { - sLineStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y - << " Td\n"; - ptOld = ptNew; - } - } - CPVT_Word word; - if (pIterator->GetWord(word)) { - if (word.nFontIndex != nCurFontIndex) { - if (sWords.GetSize() > 0) { - sLineStream << GetWordRenderString(sWords.GetByteString()); - sWords.Clear(); - } - sLineStream << GetFontSetString(pFontMap, word.nFontIndex, - word.fFontSize); - nCurFontIndex = word.nFontIndex; - } - sWords << GetPDFWordString(pFontMap, nCurFontIndex, word.Word, - SubWord); - } - oldplace = place; - } else { - CPVT_Word word; - if (pIterator->GetWord(word)) { - ptNew = CFX_FloatPoint(word.ptWord.x + ptOffset.x, - word.ptWord.y + ptOffset.y); - if (ptNew.x != ptOld.x || ptNew.y != ptOld.y) { - sEditStream << ptNew.x - ptOld.x << " " << ptNew.y - ptOld.y - << " Td\n"; - ptOld = ptNew; - } - if (word.nFontIndex != nCurFontIndex) { - sEditStream << GetFontSetString(pFontMap, word.nFontIndex, - word.fFontSize); - nCurFontIndex = word.nFontIndex; - } - sEditStream << GetWordRenderString( - GetPDFWordString(pFontMap, nCurFontIndex, word.Word, SubWord)); - } - } - } - if (sWords.GetSize() > 0) { - sLineStream << GetWordRenderString(sWords.GetByteString()); - sEditStream << sLineStream; - sWords.Clear(); - } - } - return sEditStream.GetByteString(); -} -CFX_ByteString CPVT_GenerateAP::GenerateBorderAP( - const CFX_FloatRect& rect, - FX_FLOAT fWidth, - const CPVT_Color& color, - const CPVT_Color& crLeftTop, - const CPVT_Color& crRightBottom, - int32_t nStyle, - const CPVT_Dash& dash) { - CFX_ByteTextBuf sAppStream; - CFX_ByteString sColor; - FX_FLOAT fLeft = rect.left; - FX_FLOAT fRight = rect.right; - FX_FLOAT fTop = rect.top; - FX_FLOAT fBottom = rect.bottom; - if (fWidth > 0.0f) { - FX_FLOAT fHalfWidth = fWidth / 2.0f; - switch (nStyle) { - default: - case PBS_SOLID: - sColor = GenerateColorAP(color, TRUE); - if (sColor.GetLength() > 0) { - sAppStream << sColor; - sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " - << fTop - fBottom << " re\n"; - sAppStream << fLeft + fWidth << " " << fBottom + fWidth << " " - << fRight - fLeft - fWidth * 2 << " " - << fTop - fBottom - fWidth * 2 << " re\n"; - sAppStream << "f*\n"; - } - break; - case PBS_DASH: - sColor = GenerateColorAP(color, FALSE); - if (sColor.GetLength() > 0) { - sAppStream << sColor; - sAppStream << fWidth << " w" - << " [" << dash.nDash << " " << dash.nGap << "] " - << dash.nPhase << " d\n"; - sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 - << " m\n"; - sAppStream << fLeft + fWidth / 2 << " " << fTop - fWidth / 2 - << " l\n"; - sAppStream << fRight - fWidth / 2 << " " << fTop - fWidth / 2 - << " l\n"; - sAppStream << fRight - fWidth / 2 << " " << fBottom + fWidth / 2 - << " l\n"; - sAppStream << fLeft + fWidth / 2 << " " << fBottom + fWidth / 2 - << " l S\n"; - } - break; - case PBS_BEVELED: - case PBS_INSET: - sColor = GenerateColorAP(crLeftTop, TRUE); - if (sColor.GetLength() > 0) { - sAppStream << sColor; - sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth - << " m\n"; - sAppStream << fLeft + fHalfWidth << " " << fTop - fHalfWidth - << " l\n"; - sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth - << " l\n"; - sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 - << " l\n"; - sAppStream << fLeft + fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 - << " l\n"; - sAppStream << fLeft + fHalfWidth * 2 << " " - << fBottom + fHalfWidth * 2 << " l f\n"; - } - sColor = GenerateColorAP(crRightBottom, TRUE); - if (sColor.GetLength() > 0) { - sAppStream << sColor; - sAppStream << fRight - fHalfWidth << " " << fTop - fHalfWidth - << " m\n"; - sAppStream << fRight - fHalfWidth << " " << fBottom + fHalfWidth - << " l\n"; - sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth - << " l\n"; - sAppStream << fLeft + fHalfWidth * 2 << " " - << fBottom + fHalfWidth * 2 << " l\n"; - sAppStream << fRight - fHalfWidth * 2 << " " - << fBottom + fHalfWidth * 2 << " l\n"; - sAppStream << fRight - fHalfWidth * 2 << " " << fTop - fHalfWidth * 2 - << " l f\n"; - } - sColor = GenerateColorAP(color, TRUE); - if (sColor.GetLength() > 0) { - sAppStream << sColor; - sAppStream << fLeft << " " << fBottom << " " << fRight - fLeft << " " - << fTop - fBottom << " re\n"; - sAppStream << fLeft + fHalfWidth << " " << fBottom + fHalfWidth << " " - << fRight - fLeft - fHalfWidth * 2 << " " - << fTop - fBottom - fHalfWidth * 2 << " re f*\n"; - } - break; - case PBS_UNDERLINED: - sColor = GenerateColorAP(color, FALSE); - if (sColor.GetLength() > 0) { - sAppStream << sColor; - sAppStream << fWidth << " w\n"; - sAppStream << fLeft << " " << fBottom + fWidth / 2 << " m\n"; - sAppStream << fRight << " " << fBottom + fWidth / 2 << " l S\n"; - } - break; - } - } - return sAppStream.GetByteString(); -} -CFX_ByteString CPVT_GenerateAP::GenerateColorAP(const CPVT_Color& color, - const FX_BOOL& bFillOrStroke) { - CFX_ByteTextBuf sColorStream; - switch (color.nColorType) { - case CPVT_Color::kRGB: - sColorStream << color.fColor1 << " " << color.fColor2 << " " - << color.fColor3 << " " << (bFillOrStroke ? "rg" : "RG") - << "\n"; - break; - case CPVT_Color::kGray: - sColorStream << color.fColor1 << " " << (bFillOrStroke ? "g" : "G") - << "\n"; - break; - case CPVT_Color::kCMYK: - sColorStream << color.fColor1 << " " << color.fColor2 << " " - << color.fColor3 << " " << color.fColor4 << " " - << (bFillOrStroke ? "k" : "K") << "\n"; - break; - case CPVT_Color::kTransparent: - break; - } - return sColorStream.GetByteString(); -} diff --git a/core/src/fpdfdoc/doc_basic.cpp b/core/src/fpdfdoc/doc_basic.cpp deleted file mode 100644 index 40c61d22bf..0000000000 --- a/core/src/fpdfdoc/doc_basic.cpp +++ /dev/null @@ -1,510 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/src/fpdfdoc/doc_utils.h" - -const int nMaxRecursion = 32; -int CPDF_Dest::GetPageIndex(CPDF_Document* pDoc) { - CPDF_Array* pArray = ToArray(m_pObj); - if (!pArray) - return 0; - - CPDF_Object* pPage = pArray->GetElementValue(0); - if (!pPage) - return 0; - if (pPage->IsNumber()) - return pPage->GetInteger(); - if (!pPage->IsDictionary()) - return 0; - return pDoc->GetPageIndex(pPage->GetObjNum()); -} -FX_DWORD CPDF_Dest::GetPageObjNum() { - CPDF_Array* pArray = ToArray(m_pObj); - if (!pArray) - return 0; - - CPDF_Object* pPage = pArray->GetElementValue(0); - if (!pPage) - return 0; - if (pPage->IsNumber()) - return pPage->GetInteger(); - if (pPage->IsDictionary()) - return pPage->GetObjNum(); - return 0; -} -const FX_CHAR* g_sZoomModes[] = {"XYZ", "Fit", "FitH", "FitV", "FitR", - "FitB", "FitBH", "FitBV", ""}; -int CPDF_Dest::GetZoomMode() { - CPDF_Array* pArray = ToArray(m_pObj); - if (!pArray) - return 0; - - CFX_ByteString mode; - CPDF_Object* pObj = pArray->GetElementValue(1); - mode = pObj ? pObj->GetString() : CFX_ByteString(); - int i = 0; - while (g_sZoomModes[i][0] != '\0') { - if (mode == g_sZoomModes[i]) { - return i + 1; - } - i++; - } - return 0; -} -FX_FLOAT CPDF_Dest::GetParam(int index) { - CPDF_Array* pArray = ToArray(m_pObj); - return pArray ? pArray->GetNumberAt(2 + index) : 0; -} -CFX_ByteString CPDF_Dest::GetRemoteName() { - return m_pObj ? m_pObj->GetString() : CFX_ByteString(); -} -CPDF_NameTree::CPDF_NameTree(CPDF_Document* pDoc, - const CFX_ByteStringC& category) { - if (pDoc->GetRoot() && pDoc->GetRoot()->GetDictBy("Names")) - m_pRoot = pDoc->GetRoot()->GetDictBy("Names")->GetDictBy(category); - else - m_pRoot = NULL; -} -static CPDF_Object* SearchNameNode(CPDF_Dictionary* pNode, - const CFX_ByteString& csName, - int& nIndex, - CPDF_Array** ppFind, - int nLevel = 0) { - if (nLevel > nMaxRecursion) { - return NULL; - } - CPDF_Array* pLimits = pNode->GetArrayBy("Limits"); - if (pLimits) { - CFX_ByteString csLeft = pLimits->GetStringAt(0); - CFX_ByteString csRight = pLimits->GetStringAt(1); - if (csLeft.Compare(csRight) > 0) { - CFX_ByteString csTmp = csRight; - csRight = csLeft; - csLeft = csTmp; - } - if (csName.Compare(csLeft) < 0 || csName.Compare(csRight) > 0) { - return NULL; - } - } - CPDF_Array* pNames = pNode->GetArrayBy("Names"); - if (pNames) { - FX_DWORD dwCount = pNames->GetCount() / 2; - for (FX_DWORD i = 0; i < dwCount; i++) { - CFX_ByteString csValue = pNames->GetStringAt(i * 2); - int32_t iCompare = csValue.Compare(csName); - if (iCompare <= 0) { - if (ppFind) { - *ppFind = pNames; - } - if (iCompare < 0) { - continue; - } - } else { - break; - } - nIndex += i; - return pNames->GetElementValue(i * 2 + 1); - } - nIndex += dwCount; - return NULL; - } - CPDF_Array* pKids = pNode->GetArrayBy("Kids"); - if (!pKids) { - return NULL; - } - for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { - CPDF_Dictionary* pKid = pKids->GetDictAt(i); - if (!pKid) { - continue; - } - CPDF_Object* pFound = - SearchNameNode(pKid, csName, nIndex, ppFind, nLevel + 1); - if (pFound) { - return pFound; - } - } - return NULL; -} -static CPDF_Object* SearchNameNode(CPDF_Dictionary* pNode, - int nIndex, - int& nCurIndex, - CFX_ByteString& csName, - CPDF_Array** ppFind, - int nLevel = 0) { - if (nLevel > nMaxRecursion) { - return NULL; - } - CPDF_Array* pNames = pNode->GetArrayBy("Names"); - if (pNames) { - int nCount = pNames->GetCount() / 2; - if (nIndex >= nCurIndex + nCount) { - nCurIndex += nCount; - return NULL; - } - if (ppFind) { - *ppFind = pNames; - } - csName = pNames->GetStringAt((nIndex - nCurIndex) * 2); - return pNames->GetElementValue((nIndex - nCurIndex) * 2 + 1); - } - CPDF_Array* pKids = pNode->GetArrayBy("Kids"); - if (!pKids) { - return NULL; - } - for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { - CPDF_Dictionary* pKid = pKids->GetDictAt(i); - if (!pKid) { - continue; - } - CPDF_Object* pFound = - SearchNameNode(pKid, nIndex, nCurIndex, csName, ppFind, nLevel + 1); - if (pFound) { - return pFound; - } - } - return NULL; -} -static int CountNames(CPDF_Dictionary* pNode, int nLevel = 0) { - if (nLevel > nMaxRecursion) { - return 0; - } - CPDF_Array* pNames = pNode->GetArrayBy("Names"); - if (pNames) { - return pNames->GetCount() / 2; - } - CPDF_Array* pKids = pNode->GetArrayBy("Kids"); - if (!pKids) { - return 0; - } - int nCount = 0; - for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { - CPDF_Dictionary* pKid = pKids->GetDictAt(i); - if (!pKid) { - continue; - } - nCount += CountNames(pKid, nLevel + 1); - } - return nCount; -} -int CPDF_NameTree::GetCount() const { - if (!m_pRoot) { - return 0; - } - return ::CountNames(m_pRoot); -} -int CPDF_NameTree::GetIndex(const CFX_ByteString& csName) const { - if (!m_pRoot) { - return -1; - } - int nIndex = 0; - if (!SearchNameNode(m_pRoot, csName, nIndex, NULL)) { - return -1; - } - return nIndex; -} -CPDF_Object* CPDF_NameTree::LookupValue(int nIndex, - CFX_ByteString& csName) const { - if (!m_pRoot) { - return NULL; - } - int nCurIndex = 0; - return SearchNameNode(m_pRoot, nIndex, nCurIndex, csName, NULL); -} -CPDF_Object* CPDF_NameTree::LookupValue(const CFX_ByteString& csName) const { - if (!m_pRoot) { - return NULL; - } - int nIndex = 0; - return SearchNameNode(m_pRoot, csName, nIndex, NULL); -} -CPDF_Array* CPDF_NameTree::LookupNamedDest(CPDF_Document* pDoc, - const CFX_ByteStringC& sName) { - CPDF_Object* pValue = LookupValue(sName); - if (!pValue) { - CPDF_Dictionary* pDests = pDoc->GetRoot()->GetDictBy("Dests"); - if (!pDests) - return nullptr; - pValue = pDests->GetElementValue(sName); - } - if (!pValue) - return nullptr; - if (CPDF_Array* pArray = pValue->AsArray()) - return pArray; - if (CPDF_Dictionary* pDict = pValue->AsDictionary()) - return pDict->GetArrayBy("D"); - return nullptr; -} - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -static CFX_WideString ChangeSlashToPlatform(const FX_WCHAR* str) { - CFX_WideString result; - while (*str) { - if (*str == '/') { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - result += ':'; -#else - result += '\\'; -#endif - } else { - result += *str; - } - str++; - } - return result; -} - -static CFX_WideString ChangeSlashToPDF(const FX_WCHAR* str) { - CFX_WideString result; - while (*str) { - if (*str == '\\' || *str == ':') { - result += '/'; - } else { - result += *str; - } - str++; - } - return result; -} -#endif // _FXM_PLATFORM_APPLE_ || _FXM_PLATFORM_WINDOWS_ - -CFX_WideString CPDF_FileSpec::DecodeFileName(const CFX_WideStringC& filepath) { - if (filepath.GetLength() <= 1) - return CFX_WideString(); - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (filepath.Left(sizeof("/Mac") - 1) == CFX_WideStringC(L"/Mac")) - return ChangeSlashToPlatform(filepath.GetPtr() + 1); - return ChangeSlashToPlatform(filepath.GetPtr()); -#elif _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - if (filepath.GetAt(0) != '/') - return ChangeSlashToPlatform(filepath.GetPtr()); - if (filepath.GetAt(1) == '/') - return ChangeSlashToPlatform(filepath.GetPtr() + 1); - if (filepath.GetAt(2) == '/') { - CFX_WideString result; - result += filepath.GetAt(1); - result += ':'; - result += ChangeSlashToPlatform(filepath.GetPtr() + 2); - return result; - } - CFX_WideString result; - result += '\\'; - result += ChangeSlashToPlatform(filepath.GetPtr()); - return result; -#else - return filepath; -#endif -} - -bool CPDF_FileSpec::GetFileName(CFX_WideString* csFileName) const { - if (CPDF_Dictionary* pDict = m_pObj->AsDictionary()) { - *csFileName = pDict->GetUnicodeTextBy("UF"); - if (csFileName->IsEmpty()) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("F")); - } - if (pDict->GetStringBy("FS") == "URL") - return true; - if (csFileName->IsEmpty()) { - if (pDict->KeyExist("DOS")) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("DOS")); - } else if (pDict->KeyExist("Mac")) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("Mac")); - } else if (pDict->KeyExist("Unix")) { - *csFileName = CFX_WideString::FromLocal(pDict->GetStringBy("Unix")); - } else { - return false; - } - } - } else if (m_pObj->IsString()) { - *csFileName = CFX_WideString::FromLocal(m_pObj->GetString()); - } else { - return false; - } - *csFileName = DecodeFileName(*csFileName); - return true; -} - -CPDF_FileSpec::CPDF_FileSpec() { - m_pObj = new CPDF_Dictionary; - m_pObj->AsDictionary()->SetAtName("Type", "Filespec"); -} - -CFX_WideString CPDF_FileSpec::EncodeFileName(const CFX_WideStringC& filepath) { - if (filepath.GetLength() <= 1) { - return CFX_WideString(); - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - if (filepath.GetAt(1) == ':') { - CFX_WideString result; - result = '/'; - result += filepath.GetAt(0); - if (filepath.GetAt(2) != '\\') { - result += '/'; - } - result += ChangeSlashToPDF(filepath.GetPtr() + 2); - return result; - } - if (filepath.GetAt(0) == '\\' && filepath.GetAt(1) == '\\') { - return ChangeSlashToPDF(filepath.GetPtr() + 1); - } - if (filepath.GetAt(0) == '\\') { - CFX_WideString result; - result = '/'; - result += ChangeSlashToPDF(filepath.GetPtr()); - return result; - } - return ChangeSlashToPDF(filepath.GetPtr()); -#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (filepath.Left(sizeof("Mac") - 1) == FX_WSTRC(L"Mac")) { - CFX_WideString result; - result = '/'; - result += ChangeSlashToPDF(filepath.GetPtr()); - return result; - } - return ChangeSlashToPDF(filepath.GetPtr()); -#else - return filepath; -#endif -} - -void CPDF_FileSpec::SetFileName(const CFX_WideStringC& wsFileName) { - if (!m_pObj) - return; - - CFX_WideString wsStr = EncodeFileName(wsFileName); - if (m_pObj->IsString()) { - m_pObj->SetString(CFX_ByteString::FromUnicode(wsStr)); - } else if (CPDF_Dictionary* pDict = m_pObj->AsDictionary()) { - pDict->SetAtString("F", CFX_ByteString::FromUnicode(wsStr)); - pDict->SetAtString("UF", PDF_EncodeText(wsStr)); - } -} - -static CFX_WideString _MakeRoman(int num) { - const int arabic[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; - const CFX_WideString roman[] = {L"m", L"cm", L"d", L"cd", L"c", - L"xc", L"l", L"xl", L"x", L"ix", - L"v", L"iv", L"i"}; - const int nMaxNum = 1000000; - num %= nMaxNum; - int i = 0; - CFX_WideString wsRomanNumber; - while (num > 0) { - while (num >= arabic[i]) { - num = num - arabic[i]; - wsRomanNumber += roman[i]; - } - i = i + 1; - } - return wsRomanNumber; -} - -static CFX_WideString _MakeLetters(int num) { - if (num == 0) { - return CFX_WideString(); - } - CFX_WideString wsLetters; - const int nMaxCount = 1000; - const int nLetterCount = 26; - num -= 1; - int count = num / nLetterCount + 1; - count %= nMaxCount; - FX_WCHAR ch = L'a' + num % nLetterCount; - for (int i = 0; i < count; i++) { - wsLetters += ch; - } - return wsLetters; -} -static CFX_WideString _GetLabelNumPortion(int num, - const CFX_ByteString& bsStyle) { - CFX_WideString wsNumPortion; - if (bsStyle.IsEmpty()) { - return wsNumPortion; - } - if (bsStyle == "D") { - wsNumPortion.Format(L"%d", num); - } else if (bsStyle == "R") { - wsNumPortion = _MakeRoman(num); - wsNumPortion.MakeUpper(); - } else if (bsStyle == "r") { - wsNumPortion = _MakeRoman(num); - } else if (bsStyle == "A") { - wsNumPortion = _MakeLetters(num); - wsNumPortion.MakeUpper(); - } else if (bsStyle == "a") { - wsNumPortion = _MakeLetters(num); - } - return wsNumPortion; -} -CFX_WideString CPDF_PageLabel::GetLabel(int nPage) const { - CFX_WideString wsLabel; - if (!m_pDocument) { - return wsLabel; - } - CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); - if (!pPDFRoot) { - return wsLabel; - } - CPDF_Dictionary* pLabels = pPDFRoot->GetDictBy("PageLabels"); - CPDF_NumberTree numberTree(pLabels); - CPDF_Object* pValue = NULL; - int n = nPage; - while (n >= 0) { - pValue = numberTree.LookupValue(n); - if (pValue) { - break; - } - n--; - } - if (pValue) { - pValue = pValue->GetDirect(); - if (CPDF_Dictionary* pLabel = pValue->AsDictionary()) { - if (pLabel->KeyExist("P")) { - wsLabel += pLabel->GetUnicodeTextBy("P"); - } - CFX_ByteString bsNumberingStyle = pLabel->GetStringBy("S", NULL); - int nLabelNum = nPage - n + pLabel->GetIntegerBy("St", 1); - CFX_WideString wsNumPortion = - _GetLabelNumPortion(nLabelNum, bsNumberingStyle); - wsLabel += wsNumPortion; - return wsLabel; - } - } - wsLabel.Format(L"%d", nPage + 1); - return wsLabel; -} -int32_t CPDF_PageLabel::GetPageByLabel(const CFX_ByteStringC& bsLabel) const { - if (!m_pDocument) { - return -1; - } - CPDF_Dictionary* pPDFRoot = m_pDocument->GetRoot(); - if (!pPDFRoot) { - return -1; - } - int nPages = m_pDocument->GetPageCount(); - CFX_ByteString bsLbl; - CFX_ByteString bsOrig = bsLabel; - for (int i = 0; i < nPages; i++) { - bsLbl = PDF_EncodeText(GetLabel(i)); - if (!bsLbl.Compare(bsOrig)) { - return i; - } - } - bsLbl = bsOrig; - int nPage = FXSYS_atoi(bsLbl); - if (nPage > 0 && nPage <= nPages) { - return nPage; - } - return -1; -} -int32_t CPDF_PageLabel::GetPageByLabel(const CFX_WideStringC& wsLabel) const { - CFX_ByteString bsLabel = PDF_EncodeText(wsLabel.GetPtr()); - return GetPageByLabel(bsLabel); -} diff --git a/core/src/fpdfdoc/doc_basic_unittest.cpp b/core/src/fpdfdoc/doc_basic_unittest.cpp deleted file mode 100644 index 60bc1345ca..0000000000 --- a/core/src/fpdfdoc/doc_basic_unittest.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fpdfdoc/fpdf_doc.h" - -#include -#include - -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/cpdf_name.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/test_support.h" - -namespace { - -using ScopedObj = std::unique_ptr>; -using ScopedDict = - std::unique_ptr>; -} - -TEST(doc_basic_filespec, EncodeDecodeFileName) { - std::vector test_data = { - // Empty src string. - {L"", L""}, - // only file name. - {L"test.pdf", L"test.pdf"}, -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - // With drive identifier. - {L"r:\\pdfdocs\\spec.pdf", L"/r/pdfdocs/spec.pdf"}, - // Relative path. - {L"My Document\\test.pdf", L"My Document/test.pdf"}, - // Absolute path without drive identifier. - {L"\\pdfdocs\\spec.pdf", L"//pdfdocs/spec.pdf"}, - // Absolute path with double backslashes. - {L"\\\\pdfdocs\\spec.pdf", L"/pdfdocs/spec.pdf"}, - // Network resource name. It is not supported yet. - // {L"pclib/eng:\\pdfdocs\\spec.pdf", L"/pclib/eng/pdfdocs/spec.pdf"}, -#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - // Absolute path with colon separator. - {L"Mac HD:PDFDocs:spec.pdf", L"/Mac HD/PDFDocs/spec.pdf"}, - // Relative path with colon separator. - {L"PDFDocs:spec.pdf", L"PDFDocs/spec.pdf"}, -#else - // Relative path. - {L"./docs/test.pdf", L"./docs/test.pdf"}, - // Relative path with parent dir. - {L"../test_docs/test.pdf", L"../test_docs/test.pdf"}, - // Absolute path. - {L"/usr/local/home/test.pdf", L"/usr/local/home/test.pdf"}, -#endif - }; - for (const auto& data : test_data) { - CFX_WideString encoded_str = CPDF_FileSpec::EncodeFileName(data.input); - EXPECT_TRUE(encoded_str.Equal(data.expected)); - // DecodeFileName is the reverse procedure of EncodeFileName. - CFX_WideString decoded_str = CPDF_FileSpec::DecodeFileName(data.expected); - EXPECT_TRUE(decoded_str.Equal(data.input)); - } -} - -TEST(doc_basic_filespec, GetFileName) { - { - // String object. - pdfium::NullTermWstrFuncTestData test_data = { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - L"/C/docs/test.pdf", - L"C:\\docs\\test.pdf" -#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - L"/Mac HD/docs/test.pdf", - L"Mac HD:docs:test.pdf" -#else - L"/docs/test.pdf", - L"/docs/test.pdf" -#endif - }; - ScopedObj str_obj(new CPDF_String(test_data.input)); - CPDF_FileSpec file_spec(str_obj.get()); - CFX_WideString file_name; - EXPECT_TRUE(file_spec.GetFileName(&file_name)); - EXPECT_TRUE(file_name.Equal(test_data.expected)); - } - { - // Dictionary object. - pdfium::NullTermWstrFuncTestData test_data[5] = { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - {L"/C/docs/test.pdf", L"C:\\docs\\test.pdf"}, - {L"/D/docs/test.pdf", L"D:\\docs\\test.pdf"}, - {L"/E/docs/test.pdf", L"E:\\docs\\test.pdf"}, - {L"/F/docs/test.pdf", L"F:\\docs\\test.pdf"}, - {L"/G/docs/test.pdf", L"G:\\docs\\test.pdf"}, -#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - {L"/Mac HD/docs1/test.pdf", L"Mac HD:docs1:test.pdf"}, - {L"/Mac HD/docs2/test.pdf", L"Mac HD:docs2:test.pdf"}, - {L"/Mac HD/docs3/test.pdf", L"Mac HD:docs3:test.pdf"}, - {L"/Mac HD/docs4/test.pdf", L"Mac HD:docs4:test.pdf"}, - {L"/Mac HD/docs5/test.pdf", L"Mac HD:docs5:test.pdf"}, -#else - {L"/docs/a/test.pdf", L"/docs/a/test.pdf"}, - {L"/docs/b/test.pdf", L"/docs/b/test.pdf"}, - {L"/docs/c/test.pdf", L"/docs/c/test.pdf"}, - {L"/docs/d/test.pdf", L"/docs/d/test.pdf"}, - {L"/docs/e/test.pdf", L"/docs/e/test.pdf"}, -#endif - }; - // Keyword fields in reverse order of precedence to retrieve the file name. - const char* const keywords[5] = {"Unix", "Mac", "DOS", "F", "UF"}; - ScopedDict dict_obj(new CPDF_Dictionary); - CPDF_FileSpec file_spec(dict_obj.get()); - CFX_WideString file_name; - for (int i = 0; i < 5; ++i) { - dict_obj->SetAt(keywords[i], new CPDF_String(test_data[i].input)); - EXPECT_TRUE(file_spec.GetFileName(&file_name)); - EXPECT_TRUE(file_name.Equal(test_data[i].expected)); - } - - // With all the former fields and 'FS' field suggests 'URL' type. - dict_obj->SetAtString("FS", "URL"); - EXPECT_TRUE(file_spec.GetFileName(&file_name)); - // Url string is not decoded. - EXPECT_TRUE(file_name.Equal(test_data[4].input)); - } - { - // Invalid object. - ScopedObj name_obj(new CPDF_Name("test.pdf")); - CPDF_FileSpec file_spec(name_obj.get()); - CFX_WideString file_name; - EXPECT_FALSE(file_spec.GetFileName(&file_name)); - } -} - -TEST(doc_basic_filespec, SetFileName) { - pdfium::NullTermWstrFuncTestData test_data = { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - L"C:\\docs\\test.pdf", - L"/C/docs/test.pdf" -#elif _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - L"Mac HD:docs:test.pdf", - L"/Mac HD/docs/test.pdf" -#else - L"/docs/test.pdf", - L"/docs/test.pdf" -#endif - }; - // String object. - ScopedObj str_obj(new CPDF_String(L"babababa")); - CPDF_FileSpec file_spec1(str_obj.get()); - file_spec1.SetFileName(test_data.input); - // Check internal object value. - CFX_ByteString str = CFX_ByteString::FromUnicode(test_data.expected); - EXPECT_TRUE(str == str_obj->GetString()); - // Check we can get the file name back. - CFX_WideString file_name; - EXPECT_TRUE(file_spec1.GetFileName(&file_name)); - EXPECT_TRUE(file_name.Equal(test_data.input)); - - // Dictionary object. - ScopedDict dict_obj(new CPDF_Dictionary); - CPDF_FileSpec file_spec2(dict_obj.get()); - file_spec2.SetFileName(test_data.input); - // Check internal object value. - file_name = dict_obj->GetUnicodeTextBy("F"); - EXPECT_TRUE(file_name.Equal(test_data.expected)); - file_name = dict_obj->GetUnicodeTextBy("UF"); - EXPECT_TRUE(file_name.Equal(test_data.expected)); - // Check we can get the file name back. - EXPECT_TRUE(file_spec2.GetFileName(&file_name)); - EXPECT_TRUE(file_name.Equal(test_data.input)); -} diff --git a/core/src/fpdfdoc/doc_bookmark.cpp b/core/src/fpdfdoc/doc_bookmark.cpp deleted file mode 100644 index c338e5d48c..0000000000 --- a/core/src/fpdfdoc/doc_bookmark.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfdoc/fpdf_doc.h" - -CPDF_Bookmark CPDF_BookmarkTree::GetFirstChild( - const CPDF_Bookmark& parent) const { - if (!parent.GetDict()) { - CPDF_Dictionary* pRoot = m_pDocument->GetRoot()->GetDictBy("Outlines"); - if (!pRoot) - return CPDF_Bookmark(); - return CPDF_Bookmark(pRoot->GetDictBy("First")); - } - return CPDF_Bookmark(parent.GetDict()->GetDictBy("First")); -} - -CPDF_Bookmark CPDF_BookmarkTree::GetNextSibling( - const CPDF_Bookmark& bookmark) const { - if (!bookmark.GetDict()) - return CPDF_Bookmark(); - - CPDF_Dictionary* pNext = bookmark.GetDict()->GetDictBy("Next"); - return pNext == bookmark.GetDict() ? CPDF_Bookmark() : CPDF_Bookmark(pNext); -} - -FX_DWORD CPDF_Bookmark::GetColorRef() const { - if (!m_pDict) { - return 0; - } - CPDF_Array* pColor = m_pDict->GetArrayBy("C"); - if (!pColor) { - return FXSYS_RGB(0, 0, 0); - } - int r = FXSYS_round(pColor->GetNumberAt(0) * 255); - int g = FXSYS_round(pColor->GetNumberAt(1) * 255); - int b = FXSYS_round(pColor->GetNumberAt(2) * 255); - return FXSYS_RGB(r, g, b); -} -FX_DWORD CPDF_Bookmark::GetFontStyle() const { - if (!m_pDict) { - return 0; - } - return m_pDict->GetIntegerBy("F"); -} -CFX_WideString CPDF_Bookmark::GetTitle() const { - if (!m_pDict) { - return CFX_WideString(); - } - CPDF_String* pString = ToString(m_pDict->GetElementValue("Title")); - if (!pString) - return CFX_WideString(); - - CFX_WideString title = pString->GetUnicodeText(); - int len = title.GetLength(); - if (!len) { - return CFX_WideString(); - } - std::unique_ptr buf(new FX_WCHAR[len]); - for (int i = 0; i < len; i++) { - FX_WCHAR w = title[i]; - buf[i] = w > 0x20 ? w : 0x20; - } - return CFX_WideString(buf.get(), len); -} -CPDF_Dest CPDF_Bookmark::GetDest(CPDF_Document* pDocument) const { - if (!m_pDict) - return CPDF_Dest(); - - CPDF_Object* pDest = m_pDict->GetElementValue("Dest"); - if (!pDest) - return CPDF_Dest(); - if (pDest->IsString() || pDest->IsName()) { - CPDF_NameTree name_tree(pDocument, "Dests"); - CFX_ByteStringC name = pDest->GetString(); - return CPDF_Dest(name_tree.LookupNamedDest(pDocument, name)); - } - if (CPDF_Array* pArray = pDest->AsArray()) - return CPDF_Dest(pArray); - return CPDF_Dest(); -} -CPDF_Action CPDF_Bookmark::GetAction() const { - if (!m_pDict) { - return CPDF_Action(); - } - return CPDF_Action(m_pDict->GetDictBy("A")); -} diff --git a/core/src/fpdfdoc/doc_form.cpp b/core/src/fpdfdoc/doc_form.cpp deleted file mode 100644 index 076d3b6363..0000000000 --- a/core/src/fpdfdoc/doc_form.cpp +++ /dev/null @@ -1,1207 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fpdfapi/cfdf_document.h" -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/src/fpdfdoc/doc_utils.h" -#include "third_party/base/stl_util.h" - -namespace { - -const int nMaxRecursion = 32; - -const struct SupportFieldEncoding { - const FX_CHAR* m_name; - FX_WORD m_codePage; -} g_fieldEncoding[] = { - {"BigFive", 950}, - {"GBK", 936}, - {"Shift-JIS", 932}, - {"UHC", 949}, -}; - -CFX_WideString FPDFDOC_FDF_GetFieldValue(const CPDF_Dictionary& pFieldDict, - const CFX_ByteString& bsEncoding) { - const CFX_ByteString csBValue = pFieldDict.GetStringBy("V"); - for (const auto& encoding : g_fieldEncoding) { - if (bsEncoding == encoding.m_name) - return CFX_WideString::FromCodePage(csBValue, encoding.m_codePage); - } - CFX_ByteString csTemp = csBValue.Left(2); - if (csTemp == "\xFF\xFE" || csTemp == "\xFE\xFF") - return PDF_DecodeText(csBValue); - return CFX_WideString::FromLocal(csBValue); -} - -} // namespace - -class CFieldNameExtractor { - public: - explicit CFieldNameExtractor(const CFX_WideString& full_name) { - m_pStart = full_name.c_str(); - m_pEnd = m_pStart + full_name.GetLength(); - m_pCur = m_pStart; - } - void GetNext(const FX_WCHAR*& pSubName, FX_STRSIZE& size) { - pSubName = m_pCur; - while (m_pCur < m_pEnd && m_pCur[0] != L'.') { - m_pCur++; - } - size = (FX_STRSIZE)(m_pCur - pSubName); - if (m_pCur < m_pEnd && m_pCur[0] == L'.') { - m_pCur++; - } - } - - protected: - const FX_WCHAR* m_pStart; - const FX_WCHAR* m_pEnd; - const FX_WCHAR* m_pCur; -}; -class CFieldTree { - public: - struct _Node { - _Node* parent; - CFX_ArrayTemplate<_Node*> children; - CFX_WideString short_name; - CPDF_FormField* field_ptr; - int CountFields(int nLevel = 0) { - if (nLevel > nMaxRecursion) { - return 0; - } - if (field_ptr) { - return 1; - } - int count = 0; - for (int i = 0; i < children.GetSize(); i++) { - count += children.GetAt(i)->CountFields(nLevel + 1); - } - return count; - } - CPDF_FormField* GetField(int* fields_to_go) { - if (field_ptr) { - if (*fields_to_go == 0) { - return field_ptr; - } - --*fields_to_go; - return NULL; - } - for (int i = 0; i < children.GetSize(); i++) { - if (CPDF_FormField* pField = children.GetAt(i)->GetField(fields_to_go)) - return pField; - } - return NULL; - } - CPDF_FormField* GetField(int index) { - int fields_to_go = index; - return GetField(&fields_to_go); - } - }; - CFieldTree(); - ~CFieldTree(); - void SetField(const CFX_WideString& full_name, CPDF_FormField* field_ptr); - CPDF_FormField* GetField(const CFX_WideString& full_name); - CPDF_FormField* RemoveField(const CFX_WideString& full_name); - void RemoveAll(); - _Node* FindNode(const CFX_WideString& full_name); - _Node* AddChild(_Node* pParent, - const CFX_WideString& short_name, - CPDF_FormField* field_ptr); - void RemoveNode(_Node* pNode, int nLevel = 0); - _Node* _Lookup(_Node* pParent, const CFX_WideString& short_name); - _Node m_Root; -}; -CFieldTree::CFieldTree() { - m_Root.parent = NULL; - m_Root.field_ptr = NULL; -} -CFieldTree::~CFieldTree() { - RemoveAll(); -} -CFieldTree::_Node* CFieldTree::AddChild(_Node* pParent, - const CFX_WideString& short_name, - CPDF_FormField* field_ptr) { - if (!pParent) { - return NULL; - } - _Node* pNode = new _Node; - pNode->parent = pParent; - pNode->short_name = short_name; - pNode->field_ptr = field_ptr; - pParent->children.Add(pNode); - return pNode; -} -void CFieldTree::RemoveNode(_Node* pNode, int nLevel) { - if (!pNode) { - return; - } - if (nLevel <= nMaxRecursion) { - for (int i = 0; i < pNode->children.GetSize(); i++) { - RemoveNode(pNode->children[i], nLevel + 1); - } - } - delete pNode; -} -CFieldTree::_Node* CFieldTree::_Lookup(_Node* pParent, - const CFX_WideString& short_name) { - if (!pParent) { - return NULL; - } - for (int i = 0; i < pParent->children.GetSize(); i++) { - _Node* pNode = pParent->children[i]; - if (pNode->short_name.GetLength() == short_name.GetLength() && - FXSYS_memcmp(pNode->short_name.c_str(), short_name.c_str(), - short_name.GetLength() * sizeof(FX_WCHAR)) == 0) { - return pNode; - } - } - return NULL; -} -void CFieldTree::RemoveAll() { - for (int i = 0; i < m_Root.children.GetSize(); i++) { - RemoveNode(m_Root.children[i]); - } -} -void CFieldTree::SetField(const CFX_WideString& full_name, - CPDF_FormField* field_ptr) { - if (full_name == L"") { - return; - } - CFieldNameExtractor name_extractor(full_name); - const FX_WCHAR* pName; - FX_STRSIZE nLength; - name_extractor.GetNext(pName, nLength); - _Node *pNode = &m_Root, *pLast = NULL; - while (nLength > 0) { - pLast = pNode; - CFX_WideString name = CFX_WideString(pName, nLength); - pNode = _Lookup(pLast, name); - if (!pNode) { - pNode = AddChild(pLast, name, NULL); - } - name_extractor.GetNext(pName, nLength); - } - if (pNode != &m_Root) { - pNode->field_ptr = field_ptr; - } -} -CPDF_FormField* CFieldTree::GetField(const CFX_WideString& full_name) { - if (full_name == L"") { - return NULL; - } - CFieldNameExtractor name_extractor(full_name); - const FX_WCHAR* pName; - FX_STRSIZE nLength; - name_extractor.GetNext(pName, nLength); - _Node *pNode = &m_Root, *pLast = NULL; - while (nLength > 0 && pNode) { - pLast = pNode; - CFX_WideString name = CFX_WideString(pName, nLength); - pNode = _Lookup(pLast, name); - name_extractor.GetNext(pName, nLength); - } - return pNode ? pNode->field_ptr : NULL; -} -CPDF_FormField* CFieldTree::RemoveField(const CFX_WideString& full_name) { - if (full_name == L"") { - return NULL; - } - CFieldNameExtractor name_extractor(full_name); - const FX_WCHAR* pName; - FX_STRSIZE nLength; - name_extractor.GetNext(pName, nLength); - _Node *pNode = &m_Root, *pLast = NULL; - while (nLength > 0 && pNode) { - pLast = pNode; - CFX_WideString name = CFX_WideString(pName, nLength); - pNode = _Lookup(pLast, name); - name_extractor.GetNext(pName, nLength); - } - if (pNode && pNode != &m_Root) { - for (int i = 0; i < pLast->children.GetSize(); i++) { - if (pNode == pLast->children[i]) { - pLast->children.RemoveAt(i); - break; - } - } - CPDF_FormField* pField = pNode->field_ptr; - RemoveNode(pNode); - return pField; - } - return NULL; -} -CFieldTree::_Node* CFieldTree::FindNode(const CFX_WideString& full_name) { - if (full_name == L"") { - return NULL; - } - CFieldNameExtractor name_extractor(full_name); - const FX_WCHAR* pName; - FX_STRSIZE nLength; - name_extractor.GetNext(pName, nLength); - _Node *pNode = &m_Root, *pLast = NULL; - while (nLength > 0 && pNode) { - pLast = pNode; - CFX_WideString name = CFX_WideString(pName, nLength); - pNode = _Lookup(pLast, name); - name_extractor.GetNext(pName, nLength); - } - return pNode; -} -CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bGenerateAP) - : CFX_PrivateData(), - m_pDocument(pDocument), - m_bGenerateAP(bGenerateAP), - m_pFormDict(nullptr), - m_pFieldTree(new CFieldTree), - m_pFormNotify(nullptr), - m_bUpdated(FALSE) { - CPDF_Dictionary* pRoot = m_pDocument->GetRoot(); - if (!pRoot) - return; - - m_pFormDict = pRoot->GetDictBy("AcroForm"); - if (!m_pFormDict) - return; - - CPDF_Array* pFields = m_pFormDict->GetArrayBy("Fields"); - if (!pFields) - return; - - int count = pFields->GetCount(); - for (int i = 0; i < count; i++) { - LoadField(pFields->GetDictAt(i)); - } -} - -CPDF_InterForm::~CPDF_InterForm() { - for (auto it : m_ControlMap) - delete it.second; - - int nCount = m_pFieldTree->m_Root.CountFields(); - for (int i = 0; i < nCount; ++i) { - delete m_pFieldTree->m_Root.GetField(i); - } -} - -FX_BOOL CPDF_InterForm::m_bUpdateAP = TRUE; -FX_BOOL CPDF_InterForm::UpdatingAPEnabled() { - return m_bUpdateAP; -} -void CPDF_InterForm::EnableUpdateAP(FX_BOOL bUpdateAP) { - m_bUpdateAP = bUpdateAP; -} -CFX_ByteString CPDF_InterForm::GenerateNewResourceName( - const CPDF_Dictionary* pResDict, - const FX_CHAR* csType, - int iMinLen, - const FX_CHAR* csPrefix) { - CFX_ByteString csStr = csPrefix; - CFX_ByteString csBType = csType; - if (csStr.IsEmpty()) { - if (csBType == "ExtGState") { - csStr = "GS"; - } else if (csBType == "ColorSpace") { - csStr = "CS"; - } else if (csBType == "Font") { - csStr = "ZiTi"; - } else { - csStr = "Res"; - } - } - CFX_ByteString csTmp = csStr; - int iCount = csStr.GetLength(); - int m = 0; - if (iMinLen > 0) { - csTmp = ""; - while (m < iMinLen && m < iCount) { - csTmp += csStr[m++]; - } - while (m < iMinLen) { - csTmp += '0' + m % 10; - m++; - } - } else { - m = iCount; - } - if (!pResDict) { - return csTmp; - } - CPDF_Dictionary* pDict = pResDict->GetDictBy(csType); - if (!pDict) { - return csTmp; - } - int num = 0; - CFX_ByteString bsNum; - while (TRUE) { - if (!pDict->KeyExist(csTmp + bsNum)) { - return csTmp + bsNum; - } - if (m < iCount) { - csTmp += csStr[m++]; - } else { - bsNum.Format("%d", num++); - } - m++; - } - return csTmp; -} -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -typedef struct PDF_FONTDATA_ { - FX_BOOL bFind; - LOGFONTA lf; -} PDF_FONTDATA, FAR* LPDF_FONTDATA; -static int CALLBACK EnumFontFamExProc(ENUMLOGFONTEXA* lpelfe, - NEWTEXTMETRICEX* lpntme, - DWORD FontType, - LPARAM lParam) { - if (FontType != 0x004 || strchr(lpelfe->elfLogFont.lfFaceName, '@')) { - return 1; - } - LPDF_FONTDATA pData = (LPDF_FONTDATA)lParam; - memcpy(&pData->lf, &lpelfe->elfLogFont, sizeof(LOGFONTA)); - pData->bFind = TRUE; - return 0; -} -static FX_BOOL RetrieveSpecificFont(LOGFONTA& lf) { - PDF_FONTDATA fd; - memset(&fd, 0, sizeof(PDF_FONTDATA)); - HDC hDC = ::GetDC(NULL); - EnumFontFamiliesExA(hDC, &lf, (FONTENUMPROCA)EnumFontFamExProc, (LPARAM)&fd, - 0); - ::ReleaseDC(NULL, hDC); - if (fd.bFind) { - memcpy(&lf, &fd.lf, sizeof(LOGFONTA)); - } - return fd.bFind; -} -static FX_BOOL RetrieveSpecificFont(uint8_t charSet, - uint8_t pitchAndFamily, - LPCSTR pcsFontName, - LOGFONTA& lf) { - memset(&lf, 0, sizeof(LOGFONTA)); - lf.lfCharSet = charSet; - lf.lfPitchAndFamily = pitchAndFamily; - if (pcsFontName) { - // TODO(dsinclair): Should this be strncpy? - strcpy(lf.lfFaceName, pcsFontName); - } - return RetrieveSpecificFont(lf); -} -#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - -CPDF_Font* CPDF_InterForm::AddStandardFont(CPDF_Document* pDocument, - CFX_ByteString csFontName) { - if (!pDocument || csFontName.IsEmpty()) - return nullptr; - - if (csFontName == "ZapfDingbats") - return pDocument->AddStandardFont(csFontName.c_str(), nullptr); - - CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI); - return pDocument->AddStandardFont(csFontName.c_str(), &encoding); -} - -CFX_ByteString CPDF_InterForm::GetNativeFont(uint8_t charSet, void* pLogFont) { - CFX_ByteString csFontName; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - LOGFONTA lf; - FX_BOOL bRet; - if (charSet == ANSI_CHARSET) { - csFontName = "Helvetica"; - return csFontName; - } - bRet = FALSE; - if (charSet == SHIFTJIS_CHARSET) { - bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, - "MS Mincho", lf); - } else if (charSet == GB2312_CHARSET) { - bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "SimSun", - lf); - } else if (charSet == CHINESEBIG5_CHARSET) { - bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, "MingLiU", - lf); - } - if (!bRet) { - bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, - "Arial Unicode MS", lf); - } - if (!bRet) { - bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, - "Microsoft Sans Serif", lf); - } - if (!bRet) { - bRet = RetrieveSpecificFont(charSet, DEFAULT_PITCH | FF_DONTCARE, NULL, lf); - } - if (bRet) { - if (pLogFont) { - memcpy(pLogFont, &lf, sizeof(LOGFONTA)); - } - csFontName = lf.lfFaceName; - return csFontName; - } -#endif - return csFontName; -} -CFX_ByteString CPDF_InterForm::GetNativeFont(void* pLogFont) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - uint8_t charSet = GetNativeCharSet(); - return GetNativeFont(charSet, pLogFont); -#else - return CFX_ByteString(); -#endif -} -uint8_t CPDF_InterForm::GetNativeCharSet() { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - uint8_t charSet = ANSI_CHARSET; - UINT iCodePage = ::GetACP(); - switch (iCodePage) { - case 932: - charSet = SHIFTJIS_CHARSET; - break; - case 936: - charSet = GB2312_CHARSET; - break; - case 950: - charSet = CHINESEBIG5_CHARSET; - break; - case 1252: - charSet = ANSI_CHARSET; - break; - case 874: - charSet = THAI_CHARSET; - break; - case 949: - charSet = HANGUL_CHARSET; - break; - case 1200: - charSet = ANSI_CHARSET; - break; - case 1250: - charSet = EASTEUROPE_CHARSET; - break; - case 1251: - charSet = RUSSIAN_CHARSET; - break; - case 1253: - charSet = GREEK_CHARSET; - break; - case 1254: - charSet = TURKISH_CHARSET; - break; - case 1255: - charSet = HEBREW_CHARSET; - break; - case 1256: - charSet = ARABIC_CHARSET; - break; - case 1257: - charSet = BALTIC_CHARSET; - break; - case 1258: - charSet = VIETNAMESE_CHARSET; - break; - case 1361: - charSet = JOHAB_CHARSET; - break; - } - return charSet; -#else - return 0; -#endif -} - -CPDF_Font* CPDF_InterForm::AddNativeFont(uint8_t charSet, - CPDF_Document* pDocument) { - if (!pDocument) - return nullptr; - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - LOGFONTA lf; - CFX_ByteString csFontName = GetNativeFont(charSet, &lf); - if (!csFontName.IsEmpty()) { - if (csFontName == "Helvetica") - return AddStandardFont(pDocument, csFontName); - return pDocument->AddWindowsFont(&lf, FALSE, TRUE); - } -#endif - return nullptr; -} - -CPDF_Font* CPDF_InterForm::AddNativeFont(CPDF_Document* pDocument) { - return pDocument ? AddNativeFont(GetNativeCharSet(), pDocument) : nullptr; -} - -FX_BOOL CPDF_InterForm::ValidateFieldName( - CFX_WideString& csNewFieldName, - int iType, - const CPDF_FormField* pExcludedField, - const CPDF_FormControl* pExcludedControl) { - if (csNewFieldName.IsEmpty()) { - return FALSE; - } - int iPos = 0; - int iLength = csNewFieldName.GetLength(); - CFX_WideString csSub; - while (TRUE) { - while (iPos < iLength && - (csNewFieldName[iPos] == L'.' || csNewFieldName[iPos] == L' ')) { - iPos++; - } - if (iPos < iLength && !csSub.IsEmpty()) { - csSub += L'.'; - } - while (iPos < iLength && csNewFieldName[iPos] != L'.') { - csSub += csNewFieldName[iPos++]; - } - for (int i = csSub.GetLength() - 1; i > -1; i--) { - if (csSub[i] == L' ' || csSub[i] == L'.') { - csSub.SetAt(i, L'\0'); - } else { - break; - } - } - FX_DWORD dwCount = m_pFieldTree->m_Root.CountFields(); - for (FX_DWORD m = 0; m < dwCount; m++) { - CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(m); - if (!pField) { - continue; - } - if (pField == pExcludedField) { - if (pExcludedControl) { - if (pField->CountControls() < 2) { - continue; - } - } else { - continue; - } - } - CFX_WideString csFullName = pField->GetFullName(); - int iRet = CompareFieldName(csSub, csFullName); - if (iRet == 1) { - if (pField->GetFieldType() != iType) { - return FALSE; - } - } else if (iRet == 2 && csSub == csNewFieldName) { - if (csFullName[iPos] == L'.') { - return FALSE; - } - } else if (iRet == 3 && csSub == csNewFieldName) { - if (csNewFieldName[csFullName.GetLength()] == L'.') { - return FALSE; - } - } - } - if (iPos >= iLength) { - break; - } - } - if (csSub.IsEmpty()) { - return FALSE; - } - csNewFieldName = csSub; - return TRUE; -} -FX_BOOL CPDF_InterForm::ValidateFieldName(CFX_WideString& csNewFieldName, - int iType) { - return ValidateFieldName(csNewFieldName, iType, NULL, NULL); -} -FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormField* pField, - CFX_WideString& csNewFieldName) { - return pField && !csNewFieldName.IsEmpty() && - ValidateFieldName(csNewFieldName, - ((CPDF_FormField*)pField)->GetFieldType(), pField, - NULL); -} -FX_BOOL CPDF_InterForm::ValidateFieldName(const CPDF_FormControl* pControl, - CFX_WideString& csNewFieldName) { - if (!pControl || csNewFieldName.IsEmpty()) { - return FALSE; - } - CPDF_FormField* pField = ((CPDF_FormControl*)pControl)->GetField(); - return ValidateFieldName(csNewFieldName, pField->GetFieldType(), pField, - pControl); -} -int CPDF_InterForm::CompareFieldName(const CFX_ByteString& name1, - const CFX_ByteString& name2) { - const FX_CHAR* ptr1 = name1; - const FX_CHAR* ptr2 = name2; - if (name1.GetLength() == name2.GetLength()) { - return name1 == name2 ? 1 : 0; - } - int i = 0; - while (ptr1[i] == ptr2[i]) { - i++; - } - if (i == name1.GetLength()) { - return 2; - } - if (i == name2.GetLength()) { - return 3; - } - return 0; -} -int CPDF_InterForm::CompareFieldName(const CFX_WideString& name1, - const CFX_WideString& name2) { - const FX_WCHAR* ptr1 = name1.c_str(); - const FX_WCHAR* ptr2 = name2.c_str(); - if (name1.GetLength() == name2.GetLength()) { - return name1 == name2 ? 1 : 0; - } - int i = 0; - while (ptr1[i] == ptr2[i]) { - i++; - } - if (i == name1.GetLength()) { - return 2; - } - if (i == name2.GetLength()) { - return 3; - } - return 0; -} -FX_DWORD CPDF_InterForm::CountFields(const CFX_WideString& csFieldName) { - if (csFieldName.IsEmpty()) { - return (FX_DWORD)m_pFieldTree->m_Root.CountFields(); - } - CFieldTree::_Node* pNode = m_pFieldTree->FindNode(csFieldName); - return pNode ? pNode->CountFields() : 0; -} -CPDF_FormField* CPDF_InterForm::GetField(FX_DWORD index, - const CFX_WideString& csFieldName) { - if (csFieldName == L"") { - return m_pFieldTree->m_Root.GetField(index); - } - CFieldTree::_Node* pNode = m_pFieldTree->FindNode(csFieldName); - return pNode ? pNode->GetField(index) : nullptr; -} - -CPDF_FormField* CPDF_InterForm::GetFieldByDict( - CPDF_Dictionary* pFieldDict) const { - if (!pFieldDict) { - return NULL; - } - CFX_WideString csWName = GetFullName(pFieldDict); - return m_pFieldTree->GetField(csWName); -} - -CPDF_FormControl* CPDF_InterForm::GetControlAtPoint(CPDF_Page* pPage, - FX_FLOAT pdf_x, - FX_FLOAT pdf_y, - int* z_order) const { - CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArrayBy("Annots"); - if (!pAnnotList) - return nullptr; - - for (FX_DWORD i = pAnnotList->GetCount(); i > 0; --i) { - FX_DWORD annot_index = i - 1; - CPDF_Dictionary* pAnnot = pAnnotList->GetDictAt(annot_index); - if (!pAnnot) - continue; - - const auto it = m_ControlMap.find(pAnnot); - if (it == m_ControlMap.end()) - continue; - - CPDF_FormControl* pControl = it->second; - CFX_FloatRect rect = pControl->GetRect(); - if (!rect.Contains(pdf_x, pdf_y)) - continue; - - if (z_order) - *z_order = annot_index; - return pControl; - } - return nullptr; -} - -CPDF_FormControl* CPDF_InterForm::GetControlByDict( - const CPDF_Dictionary* pWidgetDict) const { - const auto it = m_ControlMap.find(pWidgetDict); - return it != m_ControlMap.end() ? it->second : nullptr; -} - -FX_BOOL CPDF_InterForm::NeedConstructAP() { - return m_pFormDict && m_pFormDict->GetBooleanBy("NeedAppearances"); -} -void CPDF_InterForm::NeedConstructAP(FX_BOOL bNeedAP) { - if (!m_pFormDict) { - InitInterFormDict(m_pFormDict, m_pDocument); - } - m_pFormDict->SetAtBoolean("NeedAppearances", bNeedAP); - m_bGenerateAP = bNeedAP; -} -int CPDF_InterForm::CountFieldsInCalculationOrder() { - if (!m_pFormDict) { - return 0; - } - CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); - return pArray ? pArray->GetCount() : 0; -} -CPDF_FormField* CPDF_InterForm::GetFieldInCalculationOrder(int index) { - if (!m_pFormDict || index < 0) { - return NULL; - } - CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); - if (!pArray) { - return NULL; - } - if (CPDF_Dictionary* pElement = - ToDictionary(pArray->GetElementValue(index))) { - return GetFieldByDict(pElement); - } - return NULL; -} -int CPDF_InterForm::FindFieldInCalculationOrder(const CPDF_FormField* pField) { - if (!m_pFormDict || !pField) { - return -1; - } - CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO"); - if (!pArray) { - return -1; - } - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - CPDF_Object* pElement = pArray->GetElementValue(i); - if (pElement == pField->m_pDict) { - return i; - } - } - return -1; -} -FX_DWORD CPDF_InterForm::CountFormFonts() { - return CountInterFormFonts(m_pFormDict); -} -CPDF_Font* CPDF_InterForm::GetFormFont(FX_DWORD index, - CFX_ByteString& csNameTag) { - return GetInterFormFont(m_pFormDict, m_pDocument, index, csNameTag); -} -CPDF_Font* CPDF_InterForm::GetFormFont(CFX_ByteString csNameTag) { - return GetInterFormFont(m_pFormDict, m_pDocument, csNameTag); -} -CPDF_Font* CPDF_InterForm::GetFormFont(CFX_ByteString csFontName, - CFX_ByteString& csNameTag) { - return GetInterFormFont(m_pFormDict, m_pDocument, csFontName, csNameTag); -} -CPDF_Font* CPDF_InterForm::GetNativeFormFont(uint8_t charSet, - CFX_ByteString& csNameTag) { - return GetNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); -} -CPDF_Font* CPDF_InterForm::GetNativeFormFont(CFX_ByteString& csNameTag) { - return GetNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); -} -FX_BOOL CPDF_InterForm::FindFormFont(const CPDF_Font* pFont, - CFX_ByteString& csNameTag) { - return FindInterFormFont(m_pFormDict, pFont, csNameTag); -} -FX_BOOL CPDF_InterForm::FindFormFont(CFX_ByteString csFontName, - CPDF_Font*& pFont, - CFX_ByteString& csNameTag) { - return FindInterFormFont(m_pFormDict, m_pDocument, csFontName, pFont, - csNameTag); -} -void CPDF_InterForm::AddFormFont(const CPDF_Font* pFont, - CFX_ByteString& csNameTag) { - AddInterFormFont(m_pFormDict, m_pDocument, pFont, csNameTag); - m_bUpdated = TRUE; -} -CPDF_Font* CPDF_InterForm::AddNativeFormFont(uint8_t charSet, - CFX_ByteString& csNameTag) { - m_bUpdated = TRUE; - return AddNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag); -} -CPDF_Font* CPDF_InterForm::AddNativeFormFont(CFX_ByteString& csNameTag) { - m_bUpdated = TRUE; - return AddNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); -} -void CPDF_InterForm::RemoveFormFont(const CPDF_Font* pFont) { - m_bUpdated = TRUE; - RemoveInterFormFont(m_pFormDict, pFont); -} -void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) { - m_bUpdated = TRUE; - RemoveInterFormFont(m_pFormDict, csNameTag); -} - -CPDF_DefaultAppearance CPDF_InterForm::GetDefaultAppearance() { - if (!m_pFormDict) - return CPDF_DefaultAppearance(); - return CPDF_DefaultAppearance(m_pFormDict->GetStringBy("DA")); -} - -CPDF_Font* CPDF_InterForm::GetDefaultFormFont() { - return GetDefaultInterFormFont(m_pFormDict, m_pDocument); -} -int CPDF_InterForm::GetFormAlignment() { - return m_pFormDict ? m_pFormDict->GetIntegerBy("Q", 0) : 0; -} - -bool CPDF_InterForm::ResetForm(const std::vector& fields, - bool bIncludeOrExclude, - bool bNotify) { - if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormReset(this) < 0) - return false; - - int nCount = m_pFieldTree->m_Root.CountFields(); - for (int i = 0; i < nCount; ++i) { - CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); - if (!pField) - continue; - - if (bIncludeOrExclude == pdfium::ContainsValue(fields, pField)) - pField->ResetField(bNotify); - } - if (bNotify && m_pFormNotify) - m_pFormNotify->AfterFormReset(this); - return true; -} - -bool CPDF_InterForm::ResetForm(bool bNotify) { - if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormReset(this) < 0) - return false; - - int nCount = m_pFieldTree->m_Root.CountFields(); - for (int i = 0; i < nCount; ++i) { - CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); - if (!pField) - continue; - - pField->ResetField(bNotify); - } - if (bNotify && m_pFormNotify) - m_pFormNotify->AfterFormReset(this); - return true; -} - -void CPDF_InterForm::LoadField(CPDF_Dictionary* pFieldDict, int nLevel) { - if (nLevel > nMaxRecursion) { - return; - } - if (!pFieldDict) { - return; - } - FX_DWORD dwParentObjNum = pFieldDict->GetObjNum(); - CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); - if (!pKids) { - AddTerminalField(pFieldDict); - return; - } - CPDF_Dictionary* pFirstKid = pKids->GetDictAt(0); - if (!pFirstKid) { - return; - } - if (pFirstKid->KeyExist("T") || pFirstKid->KeyExist("Kids")) { - for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { - CPDF_Dictionary* pChildDict = pKids->GetDictAt(i); - if (pChildDict) { - if (pChildDict->GetObjNum() != dwParentObjNum) { - LoadField(pChildDict, nLevel + 1); - } - } - } - } else { - AddTerminalField(pFieldDict); - } -} -FX_BOOL CPDF_InterForm::HasXFAForm() const { - return m_pFormDict && m_pFormDict->GetArrayBy("XFA"); -} -void CPDF_InterForm::FixPageFields(const CPDF_Page* pPage) { - CPDF_Dictionary* pPageDict = pPage->m_pFormDict; - if (!pPageDict) { - return; - } - CPDF_Array* pAnnots = pPageDict->GetArrayBy("Annots"); - if (!pAnnots) { - return; - } - int iAnnotCount = pAnnots->GetCount(); - for (int i = 0; i < iAnnotCount; i++) { - CPDF_Dictionary* pAnnot = pAnnots->GetDictAt(i); - if (pAnnot && pAnnot->GetStringBy("Subtype") == "Widget") { - LoadField(pAnnot); - } - } -} -CPDF_FormField* CPDF_InterForm::AddTerminalField(CPDF_Dictionary* pFieldDict) { - if (!pFieldDict->KeyExist("T")) { - return NULL; - } - CPDF_Dictionary* pDict = pFieldDict; - CFX_WideString csWName = GetFullName(pFieldDict); - if (csWName.IsEmpty()) { - return NULL; - } - CPDF_FormField* pField = NULL; - pField = m_pFieldTree->GetField(csWName); - if (!pField) { - CPDF_Dictionary* pParent = pFieldDict; - if (!pFieldDict->KeyExist("T") && - pFieldDict->GetStringBy("Subtype") == "Widget") { - pParent = pFieldDict->GetDictBy("Parent"); - if (!pParent) { - pParent = pFieldDict; - } - } - if (pParent && pParent != pFieldDict && !pParent->KeyExist("FT")) { - if (pFieldDict->KeyExist("FT")) { - CPDF_Object* pFTValue = pFieldDict->GetElementValue("FT"); - if (pFTValue) { - pParent->SetAt("FT", pFTValue->Clone()); - } - } - if (pFieldDict->KeyExist("Ff")) { - CPDF_Object* pFfValue = pFieldDict->GetElementValue("Ff"); - if (pFfValue) { - pParent->SetAt("Ff", pFfValue->Clone()); - } - } - } - pField = new CPDF_FormField(this, pParent); - CPDF_Object* pTObj = pDict->GetElement("T"); - if (ToReference(pTObj)) { - CPDF_Object* pClone = pTObj->Clone(TRUE); - if (pClone) - pDict->SetAt("T", pClone); - else - pDict->SetAtName("T", ""); - } - m_pFieldTree->SetField(csWName, pField); - } - CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); - if (!pKids) { - if (pFieldDict->GetStringBy("Subtype") == "Widget") { - AddControl(pField, pFieldDict); - } - } else { - for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { - CPDF_Dictionary* pKid = pKids->GetDictAt(i); - if (!pKid) { - continue; - } - if (pKid->GetStringBy("Subtype") != "Widget") { - continue; - } - AddControl(pField, pKid); - } - } - return pField; -} -CPDF_FormControl* CPDF_InterForm::AddControl(const CPDF_FormField* pField, - CPDF_Dictionary* pWidgetDict) { - const auto it = m_ControlMap.find(pWidgetDict); - if (it != m_ControlMap.end()) - return it->second; - - CPDF_FormControl* pControl = - new CPDF_FormControl((CPDF_FormField*)pField, pWidgetDict); - m_ControlMap[pWidgetDict] = pControl; - ((CPDF_FormField*)pField)->m_ControlList.Add(pControl); - return pControl; -} - -CPDF_FormField* CPDF_InterForm::CheckRequiredFields( - const std::vector* fields, - bool bIncludeOrExclude) const { - int nCount = m_pFieldTree->m_Root.CountFields(); - for (int i = 0; i < nCount; ++i) { - CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); - if (!pField) - continue; - - int32_t iType = pField->GetType(); - if (iType == CPDF_FormField::PushButton || - iType == CPDF_FormField::CheckBox || iType == CPDF_FormField::ListBox) { - continue; - } - FX_DWORD dwFlags = pField->GetFieldFlags(); - // TODO(thestig): Look up these magic numbers and add constants for them. - if (dwFlags & 0x04) - continue; - - bool bFind = true; - if (fields) - bFind = pdfium::ContainsValue(*fields, pField); - if (bIncludeOrExclude == bFind) { - CPDF_Dictionary* pFieldDict = pField->m_pDict; - if ((dwFlags & 0x02) != 0 && pFieldDict->GetStringBy("V").IsEmpty()) { - return pField; - } - } - } - return nullptr; -} - -CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, - bool bSimpleFileSpec) const { - std::vector fields; - int nCount = m_pFieldTree->m_Root.CountFields(); - for (int i = 0; i < nCount; ++i) - fields.push_back(m_pFieldTree->m_Root.GetField(i)); - return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec); -} - -CFDF_Document* CPDF_InterForm::ExportToFDF( - const CFX_WideStringC& pdf_path, - const std::vector& fields, - bool bIncludeOrExclude, - bool bSimpleFileSpec) const { - CFDF_Document* pDoc = CFDF_Document::CreateNewDoc(); - if (!pDoc) { - return NULL; - } - CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDictBy("FDF"); - if (!pdf_path.IsEmpty()) { - if (bSimpleFileSpec) { - CFX_WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path); - pMainDict->SetAtString("F", CFX_ByteString::FromUnicode(wsFilePath)); - pMainDict->SetAtString("UF", PDF_EncodeText(wsFilePath)); - } else { - CPDF_FileSpec filespec; - filespec.SetFileName(pdf_path); - pMainDict->SetAt("F", filespec.GetObj()); - } - } - CPDF_Array* pFields = new CPDF_Array; - pMainDict->SetAt("Fields", pFields); - int nCount = m_pFieldTree->m_Root.CountFields(); - for (int i = 0; i < nCount; i++) { - CPDF_FormField* pField = m_pFieldTree->m_Root.GetField(i); - if (!pField || pField->GetType() == CPDF_FormField::PushButton) { - continue; - } - FX_DWORD dwFlags = pField->GetFieldFlags(); - if (dwFlags & 0x04) - continue; - - if (bIncludeOrExclude == pdfium::ContainsValue(fields, pField)) { - if ((dwFlags & 0x02) != 0 && pField->m_pDict->GetStringBy("V").IsEmpty()) - continue; - - CFX_WideString fullname = GetFullName(pField->GetFieldDict()); - CPDF_Dictionary* pFieldDict = new CPDF_Dictionary; - pFieldDict->SetAt("T", new CPDF_String(fullname)); - if (pField->GetType() == CPDF_FormField::CheckBox || - pField->GetType() == CPDF_FormField::RadioButton) { - CFX_WideString csExport = pField->GetCheckValue(FALSE); - CFX_ByteString csBExport = PDF_EncodeText(csExport); - CPDF_Object* pOpt = FPDF_GetFieldAttr(pField->m_pDict, "Opt"); - if (pOpt) - pFieldDict->SetAtString("V", csBExport); - else - pFieldDict->SetAtName("V", csBExport); - } else { - CPDF_Object* pV = FPDF_GetFieldAttr(pField->m_pDict, "V"); - if (pV) - pFieldDict->SetAt("V", pV->Clone(TRUE)); - } - pFields->Add(pFieldDict); - } - } - return pDoc; -} - -void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict, - const CFX_WideString& parent_name, - FX_BOOL bNotify, - int nLevel) { - CFX_WideString name; - if (!parent_name.IsEmpty()) { - name = parent_name + L"."; - } - name += pFieldDict->GetUnicodeTextBy("T"); - CPDF_Array* pKids = pFieldDict->GetArrayBy("Kids"); - if (pKids) { - for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { - CPDF_Dictionary* pKid = pKids->GetDictAt(i); - if (!pKid) { - continue; - } - if (nLevel <= nMaxRecursion) { - FDF_ImportField(pKid, name, bNotify, nLevel + 1); - } - } - return; - } - if (!pFieldDict->KeyExist("V")) { - return; - } - CPDF_FormField* pField = m_pFieldTree->GetField(name); - if (!pField) { - return; - } - CFX_WideString csWValue = - FPDFDOC_FDF_GetFieldValue(*pFieldDict, m_bsEncoding); - int iType = pField->GetFieldType(); - if (bNotify && m_pFormNotify) { - int iRet = 0; - if (iType == FIELDTYPE_LISTBOX) { - iRet = m_pFormNotify->BeforeSelectionChange(pField, csWValue); - } else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) { - iRet = m_pFormNotify->BeforeValueChange(pField, csWValue); - } - if (iRet < 0) { - return; - } - } - pField->SetValue(csWValue); - CPDF_FormField::Type eType = pField->GetType(); - if ((eType == CPDF_FormField::ListBox || eType == CPDF_FormField::ComboBox) && - pFieldDict->KeyExist("Opt")) { - pField->m_pDict->SetAt("Opt", - pFieldDict->GetElementValue("Opt")->Clone(TRUE)); - } - if (bNotify && m_pFormNotify) { - if (iType == FIELDTYPE_CHECKBOX || iType == FIELDTYPE_RADIOBUTTON) { - m_pFormNotify->AfterCheckedStatusChange(pField); - } else if (iType == FIELDTYPE_LISTBOX) { - m_pFormNotify->AfterSelectionChange(pField); - } else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) { - m_pFormNotify->AfterValueChange(pField); - } - } - if (CPDF_InterForm::m_bUpdateAP) { - pField->UpdateAP(NULL); - } -} -FX_BOOL CPDF_InterForm::ImportFromFDF(const CFDF_Document* pFDF, - FX_BOOL bNotify) { - if (!pFDF) { - return FALSE; - } - CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDictBy("FDF"); - if (!pMainDict) { - return FALSE; - } - CPDF_Array* pFields = pMainDict->GetArrayBy("Fields"); - if (!pFields) { - return FALSE; - } - m_bsEncoding = pMainDict->GetStringBy("Encoding"); - if (bNotify && m_pFormNotify) { - int iRet = m_pFormNotify->BeforeFormImportData(this); - if (iRet < 0) { - return FALSE; - } - } - for (FX_DWORD i = 0; i < pFields->GetCount(); i++) { - CPDF_Dictionary* pField = pFields->GetDictAt(i); - if (!pField) { - continue; - } - FDF_ImportField(pField, L"", bNotify); - } - if (bNotify && m_pFormNotify) { - m_pFormNotify->AfterFormImportData(this); - } - return TRUE; -} -void CPDF_InterForm::SetFormNotify(const CPDF_FormNotify* pNotify) { - m_pFormNotify = (CPDF_FormNotify*)pNotify; -} diff --git a/core/src/fpdfdoc/doc_formcontrol.cpp b/core/src/fpdfdoc/doc_formcontrol.cpp deleted file mode 100644 index 15ff7b5e64..0000000000 --- a/core/src/fpdfdoc/doc_formcontrol.cpp +++ /dev/null @@ -1,432 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfdoc/fpdf_doc.h" - -CPDF_FormControl::CPDF_FormControl(CPDF_FormField* pField, - CPDF_Dictionary* pWidgetDict) { - m_pField = pField; - m_pWidgetDict = pWidgetDict; - m_pForm = m_pField->m_pForm; -} -CFX_FloatRect CPDF_FormControl::GetRect() const { - return m_pWidgetDict->GetRectBy("Rect"); -} -CFX_ByteString CPDF_FormControl::GetOnStateName() const { - ASSERT(GetType() == CPDF_FormField::CheckBox || - GetType() == CPDF_FormField::RadioButton); - CFX_ByteString csOn; - CPDF_Dictionary* pAP = m_pWidgetDict->GetDictBy("AP"); - if (!pAP) { - return csOn; - } - CPDF_Dictionary* pN = pAP->GetDictBy("N"); - if (!pN) { - return csOn; - } - for (const auto& it : *pN) { - if (it.first != "Off") { - return it.first; - } - } - return CFX_ByteString(); -} -void CPDF_FormControl::SetOnStateName(const CFX_ByteString& csOn) { - ASSERT(GetType() == CPDF_FormField::CheckBox || - GetType() == CPDF_FormField::RadioButton); - CFX_ByteString csValue = csOn; - if (csValue.IsEmpty()) { - csValue = "Yes"; - } - if (csValue == "Off") { - csValue = "Yes"; - } - CFX_ByteString csAS = m_pWidgetDict->GetStringBy("AS", "Off"); - if (csAS != "Off") { - m_pWidgetDict->SetAtName("AS", csValue); - } - CPDF_Dictionary* pAP = m_pWidgetDict->GetDictBy("AP"); - if (!pAP) { - return; - } - for (const auto& it : *pAP) { - CPDF_Object* pObj1 = it.second; - if (!pObj1) { - continue; - } - CPDF_Object* pObjDirect1 = pObj1->GetDirect(); - CPDF_Dictionary* pSubDict = pObjDirect1->AsDictionary(); - if (!pSubDict) - continue; - - auto subdict_it = pSubDict->begin(); - while (subdict_it != pSubDict->end()) { - const CFX_ByteString& csKey2 = subdict_it->first; - CPDF_Object* pObj2 = subdict_it->second; - ++subdict_it; - if (!pObj2) { - continue; - } - if (csKey2 != "Off") { - pSubDict->ReplaceKey(csKey2, csValue); - break; - } - } - } -} -CFX_ByteString CPDF_FormControl::GetCheckedAPState() { - ASSERT(GetType() == CPDF_FormField::CheckBox || - GetType() == CPDF_FormField::RadioButton); - CFX_ByteString csOn = GetOnStateName(); - if (GetType() == CPDF_FormField::RadioButton || - GetType() == CPDF_FormField::CheckBox) { - if (ToArray(FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"))) { - int iIndex = m_pField->GetControlIndex(this); - csOn.Format("%d", iIndex); - } - } - if (csOn.IsEmpty()) - csOn = "Yes"; - return csOn; -} -CFX_WideString CPDF_FormControl::GetExportValue() { - ASSERT(GetType() == CPDF_FormField::CheckBox || - GetType() == CPDF_FormField::RadioButton); - CFX_ByteString csOn = GetOnStateName(); - if (GetType() == CPDF_FormField::RadioButton || - GetType() == CPDF_FormField::CheckBox) { - if (CPDF_Array* pArray = - ToArray(FPDF_GetFieldAttr(m_pField->m_pDict, "Opt"))) { - int iIndex = m_pField->GetControlIndex(this); - csOn = pArray->GetStringAt(iIndex); - } - } - if (csOn.IsEmpty()) { - csOn = "Yes"; - } - CFX_WideString csWOn = PDF_DecodeText(csOn); - return csWOn; -} - -bool CPDF_FormControl::IsChecked() const { - ASSERT(GetType() == CPDF_FormField::CheckBox || - GetType() == CPDF_FormField::RadioButton); - CFX_ByteString csOn = GetOnStateName(); - CFX_ByteString csAS = m_pWidgetDict->GetStringBy("AS"); - return csAS == csOn; -} - -bool CPDF_FormControl::IsDefaultChecked() const { - ASSERT(GetType() == CPDF_FormField::CheckBox || - GetType() == CPDF_FormField::RadioButton); - CPDF_Object* pDV = FPDF_GetFieldAttr(m_pField->m_pDict, "DV"); - if (!pDV) { - return FALSE; - } - CFX_ByteString csDV = pDV->GetString(); - CFX_ByteString csOn = GetOnStateName(); - return (csDV == csOn); -} - -void CPDF_FormControl::CheckControl(FX_BOOL bChecked) { - ASSERT(GetType() == CPDF_FormField::CheckBox || - GetType() == CPDF_FormField::RadioButton); - CFX_ByteString csOn = GetOnStateName(); - CFX_ByteString csOldAS = m_pWidgetDict->GetStringBy("AS", "Off"); - CFX_ByteString csAS = "Off"; - if (bChecked) { - csAS = csOn; - } - if (csOldAS == csAS) { - return; - } - m_pWidgetDict->SetAtName("AS", csAS); - m_pForm->m_bUpdated = TRUE; -} -CPDF_Stream* FPDFDOC_GetAnnotAP(CPDF_Dictionary* pAnnotDict, - CPDF_Annot::AppearanceMode mode); -void CPDF_FormControl::DrawControl(CFX_RenderDevice* pDevice, - CFX_Matrix* pMatrix, - CPDF_Page* pPage, - CPDF_Annot::AppearanceMode mode, - const CPDF_RenderOptions* pOptions) { - if (m_pWidgetDict->GetIntegerBy("F") & ANNOTFLAG_HIDDEN) { - return; - } - CPDF_Stream* pStream = FPDFDOC_GetAnnotAP(m_pWidgetDict, mode); - if (!pStream) { - return; - } - CFX_FloatRect form_bbox = pStream->GetDict()->GetRectBy("BBox"); - CFX_Matrix form_matrix = pStream->GetDict()->GetMatrixBy("Matrix"); - form_matrix.TransformRect(form_bbox); - CFX_FloatRect arect = m_pWidgetDict->GetRectBy("Rect"); - CFX_Matrix matrix; - matrix.MatchRect(arect, form_bbox); - matrix.Concat(*pMatrix); - CPDF_Form form(m_pField->m_pForm->m_pDocument, - m_pField->m_pForm->m_pFormDict->GetDictBy("DR"), pStream); - form.ParseContent(NULL, NULL, NULL, NULL); - CPDF_RenderContext context(pPage); - context.AppendLayer(&form, &matrix); - context.Render(pDevice, pOptions, nullptr); -} -static const FX_CHAR* const g_sHighlightingMode[] = { - // Must match order of HiglightingMode enum. - "N", "I", "O", "P", "T", nullptr}; -CPDF_FormControl::HighlightingMode CPDF_FormControl::GetHighlightingMode() { - if (!m_pWidgetDict) { - return Invert; - } - CFX_ByteString csH = m_pWidgetDict->GetStringBy("H", "I"); - for (int i = 0; g_sHighlightingMode[i]; ++i) { - if (csH.Equal(g_sHighlightingMode[i])) - return static_cast(i); - } - return Invert; -} - -CPDF_ApSettings CPDF_FormControl::GetMK() const { - return CPDF_ApSettings(m_pWidgetDict ? m_pWidgetDict->GetDictBy("MK") - : nullptr); -} - -bool CPDF_FormControl::HasMKEntry(CFX_ByteString csEntry) const { - return GetMK().HasMKEntry(csEntry); -} - -int CPDF_FormControl::GetRotation() { - return GetMK().GetRotation(); -} - -FX_ARGB CPDF_FormControl::GetColor(int& iColorType, CFX_ByteString csEntry) { - return GetMK().GetColor(iColorType, csEntry); -} - -FX_FLOAT CPDF_FormControl::GetOriginalColor(int index, CFX_ByteString csEntry) { - return GetMK().GetOriginalColor(index, csEntry); -} - -void CPDF_FormControl::GetOriginalColor(int& iColorType, - FX_FLOAT fc[4], - CFX_ByteString csEntry) { - GetMK().GetOriginalColor(iColorType, fc, csEntry); -} -CFX_WideString CPDF_FormControl::GetCaption(CFX_ByteString csEntry) { - return GetMK().GetCaption(csEntry); -} - -CPDF_Stream* CPDF_FormControl::GetIcon(CFX_ByteString csEntry) { - return GetMK().GetIcon(csEntry); -} - -CPDF_IconFit CPDF_FormControl::GetIconFit() { - return GetMK().GetIconFit(); -} - -int CPDF_FormControl::GetTextPosition() { - return GetMK().GetTextPosition(); -} - -CPDF_Action CPDF_FormControl::GetAction() { - if (!m_pWidgetDict) { - return CPDF_Action(); - } - if (m_pWidgetDict->KeyExist("A")) { - return CPDF_Action(m_pWidgetDict->GetDictBy("A")); - } - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "A"); - if (!pObj) { - return CPDF_Action(); - } - return CPDF_Action(pObj->GetDict()); -} - -CPDF_AAction CPDF_FormControl::GetAdditionalAction() { - if (!m_pWidgetDict) - return CPDF_AAction(); - - if (m_pWidgetDict->KeyExist("AA")) - return CPDF_AAction(m_pWidgetDict->GetDictBy("AA")); - return m_pField->GetAdditionalAction(); -} - -CPDF_DefaultAppearance CPDF_FormControl::GetDefaultAppearance() { - if (!m_pWidgetDict) - return CPDF_DefaultAppearance(); - - if (m_pWidgetDict->KeyExist("DA")) - return CPDF_DefaultAppearance(m_pWidgetDict->GetStringBy("DA")); - - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "DA"); - if (pObj) - return CPDF_DefaultAppearance(pObj->GetString()); - return m_pField->m_pForm->GetDefaultAppearance(); -} - -CPDF_Font* CPDF_FormControl::GetDefaultControlFont() { - CPDF_DefaultAppearance cDA = GetDefaultAppearance(); - CFX_ByteString csFontNameTag; - FX_FLOAT fFontSize; - cDA.GetFont(csFontNameTag, fFontSize); - if (csFontNameTag.IsEmpty()) - return nullptr; - - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pWidgetDict, "DR"); - if (CPDF_Dictionary* pDict = ToDictionary(pObj)) { - CPDF_Dictionary* pFonts = pDict->GetDictBy("Font"); - if (pFonts) { - CPDF_Dictionary* pElement = pFonts->GetDictBy(csFontNameTag); - if (pElement) { - CPDF_Font* pFont = m_pField->m_pForm->m_pDocument->LoadFont(pElement); - if (pFont) { - return pFont; - } - } - } - } - if (CPDF_Font* pFormFont = m_pField->m_pForm->GetFormFont(csFontNameTag)) - return pFormFont; - - CPDF_Dictionary* pPageDict = m_pWidgetDict->GetDictBy("P"); - pObj = FPDF_GetFieldAttr(pPageDict, "Resources"); - if (CPDF_Dictionary* pDict = ToDictionary(pObj)) { - CPDF_Dictionary* pFonts = pDict->GetDictBy("Font"); - if (pFonts) { - CPDF_Dictionary* pElement = pFonts->GetDictBy(csFontNameTag); - if (pElement) { - CPDF_Font* pFont = m_pField->m_pForm->m_pDocument->LoadFont(pElement); - if (pFont) { - return pFont; - } - } - } - } - return nullptr; -} - -int CPDF_FormControl::GetControlAlignment() { - if (!m_pWidgetDict) { - return 0; - } - if (m_pWidgetDict->KeyExist("Q")) { - return m_pWidgetDict->GetIntegerBy("Q", 0); - } - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "Q"); - if (pObj) - return pObj->GetInteger(); - return m_pField->m_pForm->GetFormAlignment(); -} - -CPDF_ApSettings::CPDF_ApSettings(CPDF_Dictionary* pDict) : m_pDict(pDict) {} - -bool CPDF_ApSettings::HasMKEntry(const CFX_ByteStringC& csEntry) const { - return m_pDict && m_pDict->KeyExist(csEntry); -} - -int CPDF_ApSettings::GetRotation() const { - return m_pDict ? m_pDict->GetIntegerBy("R") : 0; -} - -FX_ARGB CPDF_ApSettings::GetColor(int& iColorType, - const CFX_ByteStringC& csEntry) const { - iColorType = COLORTYPE_TRANSPARENT; - if (!m_pDict) - return 0; - - CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); - if (!pEntry) - return 0; - - FX_ARGB color = 0; - FX_DWORD dwCount = pEntry->GetCount(); - if (dwCount == 1) { - iColorType = COLORTYPE_GRAY; - FX_FLOAT g = pEntry->GetNumberAt(0) * 255; - color = ArgbEncode(255, (int)g, (int)g, (int)g); - } else if (dwCount == 3) { - iColorType = COLORTYPE_RGB; - FX_FLOAT r = pEntry->GetNumberAt(0) * 255; - FX_FLOAT g = pEntry->GetNumberAt(1) * 255; - FX_FLOAT b = pEntry->GetNumberAt(2) * 255; - color = ArgbEncode(255, (int)r, (int)g, (int)b); - } else if (dwCount == 4) { - iColorType = COLORTYPE_CMYK; - FX_FLOAT c = pEntry->GetNumberAt(0); - FX_FLOAT m = pEntry->GetNumberAt(1); - FX_FLOAT y = pEntry->GetNumberAt(2); - FX_FLOAT k = pEntry->GetNumberAt(3); - FX_FLOAT r = 1.0f - std::min(1.0f, c + k); - FX_FLOAT g = 1.0f - std::min(1.0f, m + k); - FX_FLOAT b = 1.0f - std::min(1.0f, y + k); - color = ArgbEncode(255, (int)(r * 255), (int)(g * 255), (int)(b * 255)); - } - return color; -} - -FX_FLOAT CPDF_ApSettings::GetOriginalColor( - int index, - const CFX_ByteStringC& csEntry) const { - if (!m_pDict) - return 0; - - CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); - return pEntry ? pEntry->GetNumberAt(index) : 0; -} - -void CPDF_ApSettings::GetOriginalColor(int& iColorType, - FX_FLOAT fc[4], - const CFX_ByteStringC& csEntry) const { - iColorType = COLORTYPE_TRANSPARENT; - for (int i = 0; i < 4; i++) { - fc[i] = 0; - } - if (!m_pDict) { - return; - } - CPDF_Array* pEntry = m_pDict->GetArrayBy(csEntry); - if (!pEntry) { - return; - } - FX_DWORD dwCount = pEntry->GetCount(); - if (dwCount == 1) { - iColorType = COLORTYPE_GRAY; - fc[0] = pEntry->GetNumberAt(0); - } else if (dwCount == 3) { - iColorType = COLORTYPE_RGB; - fc[0] = pEntry->GetNumberAt(0); - fc[1] = pEntry->GetNumberAt(1); - fc[2] = pEntry->GetNumberAt(2); - } else if (dwCount == 4) { - iColorType = COLORTYPE_CMYK; - fc[0] = pEntry->GetNumberAt(0); - fc[1] = pEntry->GetNumberAt(1); - fc[2] = pEntry->GetNumberAt(2); - fc[3] = pEntry->GetNumberAt(3); - } -} - -CFX_WideString CPDF_ApSettings::GetCaption( - const CFX_ByteStringC& csEntry) const { - return m_pDict ? m_pDict->GetUnicodeTextBy(csEntry) : CFX_WideString(); -} - -CPDF_Stream* CPDF_ApSettings::GetIcon(const CFX_ByteStringC& csEntry) const { - return m_pDict ? m_pDict->GetStreamBy(csEntry) : nullptr; -} - -CPDF_IconFit CPDF_ApSettings::GetIconFit() const { - return CPDF_IconFit(m_pDict ? m_pDict->GetDictBy("IF") : nullptr); -} - -int CPDF_ApSettings::GetTextPosition() const { - return m_pDict ? m_pDict->GetIntegerBy("TP", TEXTPOS_CAPTION) - : TEXTPOS_CAPTION; -} diff --git a/core/src/fpdfdoc/doc_formfield.cpp b/core/src/fpdfdoc/doc_formfield.cpp deleted file mode 100644 index 4bce85e831..0000000000 --- a/core/src/fpdfdoc/doc_formfield.cpp +++ /dev/null @@ -1,1097 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cfdf_document.h" -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_number.h" -#include "core/include/fpdfapi/cpdf_simple_parser.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/src/fpdfdoc/doc_utils.h" - -FX_BOOL PDF_FormField_IsUnison(CPDF_FormField* pField) { - FX_BOOL bUnison = FALSE; - if (pField->GetType() == CPDF_FormField::CheckBox) { - bUnison = TRUE; - } else { - FX_DWORD dwFlags = pField->GetFieldFlags(); - bUnison = ((dwFlags & 0x2000000) != 0); - } - return bUnison; -} -CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict) { - m_pDict = pDict; - m_Type = Unknown; - m_pForm = pForm; - m_pFont = NULL; - m_FontSize = 0; - SyncFieldFlags(); -} -CPDF_FormField::~CPDF_FormField() {} -void CPDF_FormField::SyncFieldFlags() { - CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT") - ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString() - : CFX_ByteString(); - FX_DWORD flags = FPDF_GetFieldAttr(m_pDict, "Ff") - ? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger() - : 0; - m_Flags = 0; - if (flags & 1) { - m_Flags |= FORMFIELD_READONLY; - } - if (flags & 2) { - m_Flags |= FORMFIELD_REQUIRED; - } - if (flags & 4) { - m_Flags |= FORMFIELD_NOEXPORT; - } - if (type_name == "Btn") { - if (flags & 0x8000) { - m_Type = RadioButton; - if (flags & 0x4000) { - m_Flags |= FORMRADIO_NOTOGGLEOFF; - } - if (flags & 0x2000000) { - m_Flags |= FORMRADIO_UNISON; - } - } else if (flags & 0x10000) { - m_Type = PushButton; - } else { - m_Type = CheckBox; - } - } else if (type_name == "Tx") { - if (flags & 0x100000) { - m_Type = File; - } else if (flags & 0x2000000) { - m_Type = RichText; - } else { - m_Type = Text; - if (flags & 0x1000) { - m_Flags |= FORMTEXT_MULTILINE; - } - if (flags & 0x2000) { - m_Flags |= FORMTEXT_PASSWORD; - } - if (flags & 0x800000) { - m_Flags |= FORMTEXT_NOSCROLL; - } - if (flags & 0x100000) { - m_Flags |= FORMTEXT_COMB; - } - } - LoadDA(); - } else if (type_name == "Ch") { - if (flags & 0x20000) { - m_Type = ComboBox; - if (flags & 0x40000) { - m_Flags |= FORMCOMBO_EDIT; - } - } else { - m_Type = ListBox; - if (flags & 0x200000) { - m_Flags |= FORMLIST_MULTISELECT; - } - } - LoadDA(); - } else if (type_name == "Sig") { - m_Type = Sign; - } -} -CFX_WideString CPDF_FormField::GetFullName() { - return ::GetFullName(m_pDict); -} -FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) { - switch (m_Type) { - case CPDF_FormField::CheckBox: - case CPDF_FormField::RadioButton: { - int iCount = CountControls(); - if (iCount) { - // TODO(weili): Check whether anything special needs to be done for - // unison field. Otherwise, merge these branches. - if (PDF_FormField_IsUnison(this)) { - for (int i = 0; i < iCount; i++) { - CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); - } - } else { - for (int i = 0; i < iCount; i++) { - CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); - } - } - } - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); - } - } break; - case CPDF_FormField::ComboBox: { - CFX_WideString csValue; - ClearSelection(); - int iIndex = GetDefaultSelectedItem(); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - SetItemSelection(iIndex, TRUE); - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - } break; - case CPDF_FormField::ListBox: { - CFX_WideString csValue; - ClearSelection(); - int iIndex = GetDefaultSelectedItem(); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - SetItemSelection(iIndex, TRUE); - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - } break; - case CPDF_FormField::Text: - case CPDF_FormField::RichText: - case CPDF_FormField::File: - default: { - CPDF_Object* pDV = FPDF_GetFieldAttr(m_pDict, "DV"); - CFX_WideString csDValue; - if (pDV) { - csDValue = pDV->GetUnicodeText(); - } - CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); - CFX_WideString csValue; - if (pV) { - csValue = pV->GetUnicodeText(); - } - CPDF_Object* pRV = FPDF_GetFieldAttr(m_pDict, "RV"); - if (!pRV && (csDValue == csValue)) { - return FALSE; - } - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csDValue); - if (iRet < 0) { - return FALSE; - } - } - if (pDV) { - CPDF_Object* pClone = pDV->Clone(); - if (!pClone) { - return FALSE; - } - m_pDict->SetAt("V", pClone); - if (pRV) { - CPDF_Object* pCloneR = pDV->Clone(); - m_pDict->SetAt("RV", pCloneR); - } - } else { - m_pDict->RemoveAt("V"); - m_pDict->RemoveAt("RV"); - } - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - m_pForm->m_bUpdated = TRUE; - } break; - } - return TRUE; -} -int CPDF_FormField::GetControlIndex(const CPDF_FormControl* pControl) { - if (!pControl) { - return -1; - } - for (int i = 0; i < m_ControlList.GetSize(); i++) { - if (m_ControlList.GetAt(i) == pControl) - return i; - } - return -1; -} -int CPDF_FormField::GetFieldType() { - switch (m_Type) { - case PushButton: - return FIELDTYPE_PUSHBUTTON; - case CheckBox: - return FIELDTYPE_CHECKBOX; - case RadioButton: - return FIELDTYPE_RADIOBUTTON; - case ComboBox: - return FIELDTYPE_COMBOBOX; - case ListBox: - return FIELDTYPE_LISTBOX; - case Text: - case RichText: - case File: - return FIELDTYPE_TEXTFIELD; - case Sign: - return FIELDTYPE_SIGNATURE; - default: - break; - } - return FIELDTYPE_UNKNOWN; -} - -CPDF_AAction CPDF_FormField::GetAdditionalAction() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "AA"); - return CPDF_AAction(pObj ? pObj->GetDict() : nullptr); -} - -CFX_WideString CPDF_FormField::GetAlternateName() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TU"); - if (!pObj) { - return L""; - } - return pObj->GetUnicodeText(); -} -CFX_WideString CPDF_FormField::GetMappingName() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TM"); - if (!pObj) { - return L""; - } - return pObj->GetUnicodeText(); -} -FX_DWORD CPDF_FormField::GetFieldFlags() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "Ff"); - if (!pObj) { - return 0; - } - return pObj->GetInteger(); -} -CFX_ByteString CPDF_FormField::GetDefaultStyle() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "DS"); - if (!pObj) { - return ""; - } - return pObj->GetString(); -} -CFX_WideString CPDF_FormField::GetRichTextString() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "RV"); - if (!pObj) { - return L""; - } - return pObj->GetUnicodeText(); -} -CFX_WideString CPDF_FormField::GetValue(FX_BOOL bDefault) { - if (GetType() == CheckBox || GetType() == RadioButton) { - return GetCheckValue(bDefault); - } - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, bDefault ? "DV" : "V"); - if (!pValue) { - if (!bDefault) { - if (m_Type == RichText) { - pValue = FPDF_GetFieldAttr(m_pDict, "V"); - } - if (!pValue && m_Type != Text) { - pValue = FPDF_GetFieldAttr(m_pDict, "DV"); - } - } - if (!pValue) { - return CFX_WideString(); - } - } - switch (pValue->GetType()) { - case CPDF_Object::STRING: - case CPDF_Object::STREAM: - return pValue->GetUnicodeText(); - case CPDF_Object::ARRAY: - pValue = pValue->AsArray()->GetElementValue(0); - if (pValue) - return pValue->GetUnicodeText(); - break; - default: - break; - } - return CFX_WideString(); -} -CFX_WideString CPDF_FormField::GetValue() { - return GetValue(FALSE); -} -CFX_WideString CPDF_FormField::GetDefaultValue() { - return GetValue(TRUE); -} -FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, - FX_BOOL bDefault, - FX_BOOL bNotify) { - switch (m_Type) { - case CheckBox: - case RadioButton: { - SetCheckValue(value, bDefault, bNotify); - return TRUE; - } - case File: - case RichText: - case Text: - case ComboBox: { - CFX_WideString csValue = value; - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - int iIndex = FindOptionValue(csValue); - if (iIndex < 0) { - CFX_ByteString bsEncodeText = PDF_EncodeText(csValue); - m_pDict->SetAtString(bDefault ? "DV" : "V", bsEncodeText); - if (m_Type == RichText && !bDefault) { - m_pDict->SetAtString("RV", bsEncodeText); - } - m_pDict->RemoveAt("I"); - } else { - m_pDict->SetAtString(bDefault ? "DV" : "V", PDF_EncodeText(csValue)); - if (bDefault) { - } else { - ClearSelection(); - SetItemSelection(iIndex, TRUE); - } - } - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - m_pForm->m_bUpdated = TRUE; - } break; - case ListBox: { - int iIndex = FindOptionValue(value); - if (iIndex < 0) { - return FALSE; - } - if (bDefault && iIndex == GetDefaultSelectedItem()) { - return FALSE; - } - if (bNotify && m_pForm->m_pFormNotify) { - CFX_WideString csValue = value; - int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - if (bDefault) { - } else { - ClearSelection(); - SetItemSelection(iIndex, TRUE); - } - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - m_pForm->m_bUpdated = TRUE; - break; - } - default: - break; - } - if (CPDF_InterForm::m_bUpdateAP) { - UpdateAP(NULL); - } - return TRUE; -} -FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bNotify) { - return SetValue(value, FALSE, bNotify); -} -int CPDF_FormField::GetMaxLen() { - if (CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "MaxLen")) - return pObj->GetInteger(); - - for (int i = 0; i < m_ControlList.GetSize(); i++) { - CPDF_FormControl* pControl = m_ControlList.GetAt(i); - if (!pControl) - continue; - - CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict; - if (pWidgetDict->KeyExist("MaxLen")) - return pWidgetDict->GetIntegerBy("MaxLen"); - } - return 0; -} -int CPDF_FormField::CountSelectedItems() { - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); - if (!pValue) { - pValue = FPDF_GetFieldAttr(m_pDict, "I"); - if (!pValue) - return 0; - } - - if (pValue->IsString() || pValue->IsNumber()) - return pValue->GetString().IsEmpty() ? 0 : 1; - if (CPDF_Array* pArray = pValue->AsArray()) - return pArray->GetCount(); - return 0; -} -int CPDF_FormField::GetSelectedIndex(int index) { - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); - if (!pValue) { - pValue = FPDF_GetFieldAttr(m_pDict, "I"); - if (!pValue) - return -1; - } - if (pValue->IsNumber()) - return pValue->GetInteger(); - - CFX_WideString sel_value; - if (pValue->IsString()) { - if (index != 0) - return -1; - sel_value = pValue->GetUnicodeText(); - } else { - CPDF_Array* pArray = pValue->AsArray(); - if (!pArray || index < 0) - return -1; - - CPDF_Object* elementValue = pArray->GetElementValue(index); - sel_value = - elementValue ? elementValue->GetUnicodeText() : CFX_WideString(); - } - if (index < CountSelectedOptions()) { - int iOptIndex = GetSelectedOptionIndex(index); - CFX_WideString csOpt = GetOptionValue(iOptIndex); - if (csOpt == sel_value) { - return iOptIndex; - } - } - int nOpts = CountOptions(); - for (int i = 0; i < nOpts; i++) { - if (sel_value == GetOptionValue(i)) { - return i; - } - } - return -1; -} -FX_BOOL CPDF_FormField::ClearSelection(FX_BOOL bNotify) { - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = 0; - CFX_WideString csValue; - int iIndex = GetSelectedIndex(0); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - } - if (iRet < 0) { - return FALSE; - } - } - m_pDict->RemoveAt("V"); - m_pDict->RemoveAt("I"); - if (bNotify && m_pForm->m_pFormNotify) { - if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - } - if (CPDF_InterForm::m_bUpdateAP) { - UpdateAP(NULL); - } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -FX_BOOL CPDF_FormField::IsItemSelected(int index) { - ASSERT(GetType() == ComboBox || GetType() == ListBox); - if (index < 0 || index >= CountOptions()) { - return FALSE; - } - if (IsOptionSelected(index)) { - return TRUE; - } - CFX_WideString opt_value = GetOptionValue(index); - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); - if (!pValue) { - pValue = FPDF_GetFieldAttr(m_pDict, "I"); - if (!pValue) { - return FALSE; - } - } - - if (pValue->IsString()) - return pValue->GetUnicodeText() == opt_value; - - if (pValue->IsNumber()) { - if (pValue->GetString().IsEmpty()) - return FALSE; - return (pValue->GetInteger() == index); - } - - CPDF_Array* pArray = pValue->AsArray(); - if (!pArray) - return FALSE; - - int iPos = -1; - for (int j = 0; j < CountSelectedOptions(); j++) { - if (GetSelectedOptionIndex(j) == index) { - iPos = j; - break; - } - } - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) - if (pArray->GetElementValue(i)->GetUnicodeText() == opt_value && - (int)i == iPos) { - return TRUE; - } - return FALSE; -} -FX_BOOL CPDF_FormField::SetItemSelection(int index, - FX_BOOL bSelected, - FX_BOOL bNotify) { - ASSERT(GetType() == ComboBox || GetType() == ListBox); - if (index < 0 || index >= CountOptions()) { - return FALSE; - } - CFX_WideString opt_value = GetOptionValue(index); - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = 0; - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, opt_value); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, opt_value); - } - if (iRet < 0) { - return FALSE; - } - } - if (!bSelected) { - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); - if (pValue) { - if (m_Type == ListBox) { - SelectOption(index, FALSE); - if (pValue->IsString()) { - if (pValue->GetUnicodeText() == opt_value) { - m_pDict->RemoveAt("V"); - } - } else if (pValue->IsArray()) { - CPDF_Array* pArray = new CPDF_Array; - int iCount = CountOptions(); - for (int i = 0; i < iCount; i++) { - if (i != index) { - if (IsItemSelected(i)) { - opt_value = GetOptionValue(i); - pArray->AddString(PDF_EncodeText(opt_value)); - } - } - } - if (pArray->GetCount() < 1) { - pArray->Release(); - } else { - m_pDict->SetAt("V", pArray); - } - } - } else if (m_Type == ComboBox) { - m_pDict->RemoveAt("V"); - m_pDict->RemoveAt("I"); - } - } - } else { - if (m_Type == ListBox) { - SelectOption(index, TRUE); - if (!(m_Flags & FORMLIST_MULTISELECT)) { - m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); - } else { - CPDF_Array* pArray = new CPDF_Array; - int iCount = CountOptions(); - for (int i = 0; i < iCount; i++) { - FX_BOOL bSelected; - if (i != index) { - bSelected = IsItemSelected(i); - } else { - bSelected = TRUE; - } - if (bSelected) { - opt_value = GetOptionValue(i); - pArray->AddString(PDF_EncodeText(opt_value)); - } - } - m_pDict->SetAt("V", pArray); - } - } else if (m_Type == ComboBox) { - m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); - CPDF_Array* pI = new CPDF_Array; - pI->AddInteger(index); - m_pDict->SetAt("I", pI); - } - } - if (bNotify && m_pForm->m_pFormNotify) { - if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - } - if (CPDF_InterForm::m_bUpdateAP) { - UpdateAP(NULL); - } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -FX_BOOL CPDF_FormField::IsItemDefaultSelected(int index) { - ASSERT(GetType() == ComboBox || GetType() == ListBox); - if (index < 0 || index >= CountOptions()) { - return FALSE; - } - int iDVIndex = GetDefaultSelectedItem(); - if (iDVIndex < 0) { - return FALSE; - } - return (iDVIndex == index); -} -int CPDF_FormField::GetDefaultSelectedItem() { - ASSERT(GetType() == ComboBox || GetType() == ListBox); - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "DV"); - if (!pValue) { - return -1; - } - CFX_WideString csDV = pValue->GetUnicodeText(); - if (csDV.IsEmpty()) { - return -1; - } - int iCount = CountOptions(); - for (int i = 0; i < iCount; i++) { - if (csDV == GetOptionValue(i)) { - return i; - } - } - return -1; -} -void CPDF_FormField::UpdateAP(CPDF_FormControl* pControl) { - if (m_Type == PushButton) { - return; - } - if (m_Type == RadioButton || m_Type == CheckBox) { - return; - } - if (!m_pForm->m_bGenerateAP) { - return; - } - for (int i = 0; i < CountControls(); i++) { - CPDF_FormControl* pControl = GetControl(i); - FPDF_GenerateAP(m_pForm->m_pDocument, pControl->m_pWidgetDict); - } -} -int CPDF_FormField::CountOptions() { - CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "Opt")); - return pArray ? pArray->GetCount() : 0; -} -CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) { - CPDF_Array* pArray = ToArray(FPDF_GetFieldAttr(m_pDict, "Opt")); - if (!pArray) - return CFX_WideString(); - - CPDF_Object* pOption = pArray->GetElementValue(index); - if (!pOption) - return CFX_WideString(); - if (CPDF_Array* pOptionArray = pOption->AsArray()) - pOption = pOptionArray->GetElementValue(sub_index); - - CPDF_String* pString = ToString(pOption); - return pString ? pString->GetUnicodeText() : CFX_WideString(); -} -CFX_WideString CPDF_FormField::GetOptionLabel(int index) { - return GetOptionText(index, 1); -} -CFX_WideString CPDF_FormField::GetOptionValue(int index) { - return GetOptionText(index, 0); -} -int CPDF_FormField::FindOption(CFX_WideString csOptLabel) { - int iCount = CountOptions(); - for (int i = 0; i < iCount; i++) { - CFX_WideString csValue = GetOptionValue(i); - if (csValue == csOptLabel) { - return i; - } - } - return -1; -} -int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue, - int iStartIndex) { - if (iStartIndex < 0) { - iStartIndex = 0; - } - int iCount = CountOptions(); - for (; iStartIndex < iCount; iStartIndex++) { - CFX_WideString csValue = GetOptionValue(iStartIndex); - if (csValue == csOptValue) { - return iStartIndex; - } - } - return -1; -} -#ifdef PDF_ENABLE_XFA -int CPDF_FormField::InsertOption(CFX_WideString csOptLabel, - int index, - FX_BOOL bNotify) { - if (csOptLabel.IsEmpty()) - return -1; - - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = 0; - if (GetType() == ListBox) - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csOptLabel); - if (GetType() == ComboBox) - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csOptLabel); - if (iRet < 0) - return -1; - } - - CFX_ByteString csStr = PDF_EncodeText(csOptLabel, csOptLabel.GetLength()); - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); - CPDF_Array* pOpt = ToArray(pValue); - if (!pOpt) { - pOpt = new CPDF_Array; - m_pDict->SetAt("Opt", pOpt); - } - - int iCount = (int)pOpt->GetCount(); - if (index < 0 || index >= iCount) { - pOpt->AddString(csStr); - index = iCount; - } else { - CPDF_String* pString = new CPDF_String(csStr, FALSE); - pOpt->InsertAt(index, pString); - } - - if (bNotify && m_pForm->m_pFormNotify) { - if (GetType() == ListBox) - m_pForm->m_pFormNotify->AfterSelectionChange(this); - if (GetType() == ComboBox) - m_pForm->m_pFormNotify->AfterValueChange(this); - } - m_pForm->m_bUpdated = TRUE; - return index; -} -FX_BOOL CPDF_FormField::ClearOptions(FX_BOOL bNotify) { - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = 0; - CFX_WideString csValue; - int iIndex = GetSelectedIndex(0); - if (iIndex >= 0) - csValue = GetOptionLabel(iIndex); - if (GetType() == ListBox) - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - if (GetType() == ComboBox) - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - if (iRet < 0) - return FALSE; - } - - m_pDict->RemoveAt("Opt"); - m_pDict->RemoveAt("V"); - m_pDict->RemoveAt("DV"); - m_pDict->RemoveAt("I"); - m_pDict->RemoveAt("TI"); - - if (bNotify && m_pForm->m_pFormNotify) { - if (GetType() == ListBox) - m_pForm->m_pFormNotify->AfterSelectionChange(this); - if (GetType() == ComboBox) - m_pForm->m_pFormNotify->AfterValueChange(this); - } - - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -#endif // PDF_ENABLE_XFA -FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, - bool bChecked, - bool bNotify) { - ASSERT(GetType() == CheckBox || GetType() == RadioButton); - CPDF_FormControl* pControl = GetControl(iControlIndex); - if (!pControl) { - return FALSE; - } - if (!bChecked && pControl->IsChecked() == bChecked) { - return FALSE; - } - CFX_WideString csWExport = pControl->GetExportValue(); - CFX_ByteString csBExport = PDF_EncodeText(csWExport); - int iCount = CountControls(); - FX_BOOL bUnison = PDF_FormField_IsUnison(this); - for (int i = 0; i < iCount; i++) { - CPDF_FormControl* pCtrl = GetControl(i); - if (bUnison) { - CFX_WideString csEValue = pCtrl->GetExportValue(); - if (csEValue == csWExport) { - if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { - pCtrl->CheckControl(bChecked); - } else if (bChecked) { - pCtrl->CheckControl(FALSE); - } - } else if (bChecked) { - pCtrl->CheckControl(FALSE); - } - } else { - if (i == iControlIndex) { - pCtrl->CheckControl(bChecked); - } else if (bChecked) { - pCtrl->CheckControl(FALSE); - } - } - } - CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pDict, "Opt"); - if (!ToArray(pOpt)) { - if (bChecked) { - m_pDict->SetAtName("V", csBExport); - } else { - CFX_ByteString csV; - CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); - if (pV) { - csV = pV->GetString(); - } - if (csV == csBExport) { - m_pDict->SetAtName("V", "Off"); - } - } - } else if (bChecked) { - CFX_ByteString csIndex; - csIndex.Format("%d", iControlIndex); - m_pDict->SetAtName("V", csIndex); - } - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); - } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) { - ASSERT(GetType() == CheckBox || GetType() == RadioButton); - CFX_WideString csExport = L"Off"; - FX_BOOL bChecked; - int iCount = CountControls(); - for (int i = 0; i < iCount; i++) { - CPDF_FormControl* pControl = GetControl(i); - if (bDefault) { - bChecked = pControl->IsDefaultChecked(); - } else { - bChecked = pControl->IsChecked(); - } - if (bChecked) { - csExport = pControl->GetExportValue(); - break; - } - } - return csExport; -} -FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, - FX_BOOL bDefault, - FX_BOOL bNotify) { - ASSERT(GetType() == CheckBox || GetType() == RadioButton); - int iCount = CountControls(); - for (int i = 0; i < iCount; i++) { - CPDF_FormControl* pControl = GetControl(i); - CFX_WideString csExport = pControl->GetExportValue(); - if (csExport == value) { - if (bDefault) { - } else { - CheckControl(GetControlIndex(pControl), TRUE); - } - break; - } else { - if (bDefault) { - } else { - CheckControl(GetControlIndex(pControl), FALSE); - } - } - } - if (bNotify && m_pForm->m_pFormNotify) { - m_pForm->m_pFormNotify->AfterCheckedStatusChange(this); - } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -int CPDF_FormField::GetTopVisibleIndex() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); - if (!pObj) { - return 0; - } - return pObj->GetInteger(); -} -int CPDF_FormField::CountSelectedOptions() { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); - if (!pObj) { - return 0; - } - CPDF_Array* pArray = pObj->GetArray(); - if (!pArray) { - return 0; - } - return (int)pArray->GetCount(); -} -int CPDF_FormField::GetSelectedOptionIndex(int index) { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); - if (!pObj) { - return -1; - } - CPDF_Array* pArray = pObj->GetArray(); - if (!pArray) { - return -1; - } - int iCount = (int)pArray->GetCount(); - if (iCount > 0 && index < iCount) { - return pArray->GetIntegerAt(index); - } - return -1; -} -FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) { - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); - if (!pObj) { - return FALSE; - } - CPDF_Array* pArray = pObj->GetArray(); - if (!pArray) { - return FALSE; - } - int iCount = (int)pArray->GetCount(); - for (int i = 0; i < iCount; i++) { - if (pArray->GetIntegerAt(i) == iOptIndex) { - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, - FX_BOOL bSelected, - FX_BOOL bNotify) { - CPDF_Array* pArray = m_pDict->GetArrayBy("I"); - if (!pArray) { - if (!bSelected) { - return TRUE; - } - pArray = new CPDF_Array; - m_pDict->SetAt("I", pArray); - } - FX_BOOL bReturn = FALSE; - for (int i = 0; i < (int)pArray->GetCount(); i++) { - int iFind = pArray->GetIntegerAt(i); - if (iFind == iOptIndex) { - if (bSelected) { - return TRUE; - } - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = 0; - CFX_WideString csValue = GetOptionLabel(iOptIndex); - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - } - if (iRet < 0) { - return FALSE; - } - } - pArray->RemoveAt(i); - bReturn = TRUE; - break; - } else if (iFind > iOptIndex) { - if (!bSelected) { - continue; - } - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = 0; - CFX_WideString csValue = GetOptionLabel(iOptIndex); - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - } - if (iRet < 0) { - return FALSE; - } - } - CPDF_Number* pNum = new CPDF_Number(iOptIndex); - pArray->InsertAt(i, pNum); - bReturn = TRUE; - break; - } - } - if (!bReturn) { - if (bSelected) { - pArray->AddInteger(iOptIndex); - } - if (pArray->GetCount() == 0) { - m_pDict->RemoveAt("I"); - } - } - if (bNotify && m_pForm->m_pFormNotify) { - if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -FX_BOOL CPDF_FormField::ClearSelectedOptions(FX_BOOL bNotify) { - if (bNotify && m_pForm->m_pFormNotify) { - int iRet = 0; - CFX_WideString csValue; - int iIndex = GetSelectedIndex(0); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - } - if (iRet < 0) { - return FALSE; - } - } - m_pDict->RemoveAt("I"); - if (bNotify && m_pForm->m_pFormNotify) { - if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -void CPDF_FormField::LoadDA() { - CFX_ByteString DA; - if (CPDF_Object* pObj_t = FPDF_GetFieldAttr(m_pDict, "DA")) { - DA = pObj_t->GetString(); - } - if (DA.IsEmpty() && m_pForm->m_pFormDict) { - DA = m_pForm->m_pFormDict->GetStringBy("DA"); - } - if (DA.IsEmpty()) { - return; - } - CPDF_SimpleParser syntax(DA); - syntax.FindTagParamFromStart("Tf", 2); - CFX_ByteString font_name = syntax.GetWord(); - CPDF_Dictionary* pFontDict = NULL; - if (m_pForm->m_pFormDict && m_pForm->m_pFormDict->GetDictBy("DR") && - m_pForm->m_pFormDict->GetDictBy("DR")->GetDictBy("Font")) - pFontDict = m_pForm->m_pFormDict->GetDictBy("DR") - ->GetDictBy("Font") - ->GetDictBy(font_name); - - if (!pFontDict) { - return; - } - m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); - m_FontSize = FX_atof(syntax.GetWord()); -} diff --git a/core/src/fpdfdoc/doc_link.cpp b/core/src/fpdfdoc/doc_link.cpp deleted file mode 100644 index a32d4c7a2d..0000000000 --- a/core/src/fpdfdoc/doc_link.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfdoc/fpdf_doc.h" - -#include - -#include "core/include/fpdfapi/cpdf_array.h" - -CPDF_LinkList::CPDF_LinkList() { -} - -CPDF_LinkList::~CPDF_LinkList() { -} - -const std::vector* CPDF_LinkList::GetPageLinks( - CPDF_Page* pPage) { - FX_DWORD objnum = pPage->m_pFormDict->GetObjNum(); - if (objnum == 0) - return nullptr; - - auto it = m_PageMap.find(objnum); - if (it != m_PageMap.end()) - return &it->second; - - // std::map::operator[] forces the creation of a map entry. - std::vector& page_link_list = m_PageMap[objnum]; - LoadPageLinks(pPage, &page_link_list); - return &page_link_list; -} - -CPDF_Link CPDF_LinkList::GetLinkAtPoint(CPDF_Page* pPage, - FX_FLOAT pdf_x, - FX_FLOAT pdf_y, - int* z_order) { - const std::vector* pPageLinkList = GetPageLinks(pPage); - if (!pPageLinkList) - return CPDF_Link(); - - for (size_t i = pPageLinkList->size(); i > 0; --i) { - size_t annot_index = i - 1; - CPDF_Dictionary* pAnnot = (*pPageLinkList)[annot_index]; - if (!pAnnot) - continue; - - CPDF_Link link(pAnnot); - CFX_FloatRect rect = link.GetRect(); - if (!rect.Contains(pdf_x, pdf_y)) - continue; - - if (z_order) - *z_order = annot_index; - return link; - } - return CPDF_Link(); -} - -void CPDF_LinkList::LoadPageLinks(CPDF_Page* pPage, - std::vector* pList) { - CPDF_Array* pAnnotList = pPage->m_pFormDict->GetArrayBy("Annots"); - if (!pAnnotList) - return; - - for (FX_DWORD i = 0; i < pAnnotList->GetCount(); ++i) { - CPDF_Dictionary* pAnnot = pAnnotList->GetDictAt(i); - bool add_link = (pAnnot && pAnnot->GetStringBy("Subtype") == "Link"); - // Add non-links as nullptrs to preserve z-order. - pList->push_back(add_link ? pAnnot : nullptr); - } -} - -CFX_FloatRect CPDF_Link::GetRect() { - return m_pDict->GetRectBy("Rect"); -} -CPDF_Dest CPDF_Link::GetDest(CPDF_Document* pDoc) { - CPDF_Object* pDest = m_pDict->GetElementValue("Dest"); - if (!pDest) - return CPDF_Dest(); - - if (pDest->IsString() || pDest->IsName()) { - CPDF_NameTree name_tree(pDoc, "Dests"); - CFX_ByteStringC name = pDest->GetString(); - return CPDF_Dest(name_tree.LookupNamedDest(pDoc, name)); - } - if (CPDF_Array* pArray = pDest->AsArray()) - return CPDF_Dest(pArray); - return CPDF_Dest(); -} -CPDF_Action CPDF_Link::GetAction() { - return CPDF_Action(m_pDict->GetDictBy("A")); -} diff --git a/core/src/fpdfdoc/doc_metadata.cpp b/core/src/fpdfdoc/doc_metadata.cpp deleted file mode 100644 index 78364c4cbf..0000000000 --- a/core/src/fpdfdoc/doc_metadata.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/include/fxcrt/fx_xml.h" - -CPDF_Metadata::CPDF_Metadata(CPDF_Document* pDoc) { - CPDF_Dictionary* pRoot = pDoc->GetRoot(); - if (!pRoot) - return; - - CPDF_Stream* pStream = pRoot->GetStreamBy("Metadata"); - if (!pStream) - return; - - CPDF_StreamAcc acc; - acc.LoadAllData(pStream, FALSE); - m_pXmlElement.reset(CXML_Element::Parse(acc.GetData(), acc.GetSize())); -} - -CPDF_Metadata::~CPDF_Metadata() {} - -const CXML_Element* CPDF_Metadata::GetRoot() const { - return m_pXmlElement.get(); -} diff --git a/core/src/fpdfdoc/doc_ocg.cpp b/core/src/fpdfdoc/doc_ocg.cpp deleted file mode 100644 index 3af745580c..0000000000 --- a/core/src/fpdfdoc/doc_ocg.cpp +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfdoc/fpdf_doc.h" - -static int32_t FPDFDOC_OCG_FindGroup(const CPDF_Object* pObject, - const CPDF_Dictionary* pGroupDict) { - if (!pObject || !pGroupDict) - return -1; - - if (const CPDF_Array* pArray = pObject->AsArray()) { - FX_DWORD dwCount = pArray->GetCount(); - for (FX_DWORD i = 0; i < dwCount; i++) { - if (pArray->GetDictAt(i) == pGroupDict) - return i; - } - return -1; - } - return pObject->GetDict() == pGroupDict ? 0 : -1; -} -static FX_BOOL FPDFDOC_OCG_HasIntent(const CPDF_Dictionary* pDict, - const CFX_ByteStringC& csElement, - const CFX_ByteStringC& csDef = "") { - CPDF_Object* pIntent = pDict->GetElementValue("Intent"); - if (!pIntent) { - return csElement == csDef; - } - CFX_ByteString bsIntent; - if (CPDF_Array* pArray = pIntent->AsArray()) { - FX_DWORD dwCount = pArray->GetCount(); - for (FX_DWORD i = 0; i < dwCount; i++) { - bsIntent = pArray->GetStringAt(i); - if (bsIntent == "All" || bsIntent == csElement) - return TRUE; - } - return FALSE; - } - bsIntent = pIntent->GetString(); - return bsIntent == "All" || bsIntent == csElement; -} -static CPDF_Dictionary* FPDFDOC_OCG_GetConfig(CPDF_Document* pDoc, - const CPDF_Dictionary* pOCGDict, - const CFX_ByteStringC& bsState) { - FXSYS_assert(pDoc && pOCGDict); - CPDF_Dictionary* pOCProperties = pDoc->GetRoot()->GetDictBy("OCProperties"); - if (!pOCProperties) { - return NULL; - } - CPDF_Array* pOCGs = pOCProperties->GetArrayBy("OCGs"); - if (!pOCGs) { - return NULL; - } - if (FPDFDOC_OCG_FindGroup(pOCGs, pOCGDict) < 0) { - return NULL; - } - CPDF_Dictionary* pConfig = pOCProperties->GetDictBy("D"); - CPDF_Array* pConfigs = pOCProperties->GetArrayBy("Configs"); - if (pConfigs) { - CPDF_Dictionary* pFind; - int32_t iCount = pConfigs->GetCount(); - for (int32_t i = 0; i < iCount; i++) { - pFind = pConfigs->GetDictAt(i); - if (!pFind) { - continue; - } - if (!FPDFDOC_OCG_HasIntent(pFind, "View", "View")) { - continue; - } - pConfig = pFind; - break; - } - } - return pConfig; -} -static CFX_ByteString FPDFDOC_OCG_GetUsageTypeString( - CPDF_OCContext::UsageType eType) { - CFX_ByteString csState = "View"; - if (eType == CPDF_OCContext::Design) { - csState = "Design"; - } else if (eType == CPDF_OCContext::Print) { - csState = "Print"; - } else if (eType == CPDF_OCContext::Export) { - csState = "Export"; - } - return csState; -} -CPDF_OCContext::CPDF_OCContext(CPDF_Document* pDoc, UsageType eUsageType) { - FXSYS_assert(pDoc); - m_pDocument = pDoc; - m_eUsageType = eUsageType; -} -CPDF_OCContext::~CPDF_OCContext() { - m_OCGStates.clear(); -} -FX_BOOL CPDF_OCContext::LoadOCGStateFromConfig(const CFX_ByteStringC& csConfig, - const CPDF_Dictionary* pOCGDict, - FX_BOOL& bValidConfig) const { - CPDF_Dictionary* pConfig = - FPDFDOC_OCG_GetConfig(m_pDocument, pOCGDict, csConfig); - if (!pConfig) { - return TRUE; - } - bValidConfig = TRUE; - FX_BOOL bState = pConfig->GetStringBy("BaseState", "ON") != "OFF"; - CPDF_Array* pArray = pConfig->GetArrayBy("ON"); - if (pArray) { - if (FPDFDOC_OCG_FindGroup(pArray, pOCGDict) >= 0) { - bState = TRUE; - } - } - pArray = pConfig->GetArrayBy("OFF"); - if (pArray) { - if (FPDFDOC_OCG_FindGroup(pArray, pOCGDict) >= 0) { - bState = FALSE; - } - } - pArray = pConfig->GetArrayBy("AS"); - if (pArray) { - CFX_ByteString csFind = csConfig + "State"; - int32_t iCount = pArray->GetCount(); - for (int32_t i = 0; i < iCount; i++) { - CPDF_Dictionary* pUsage = pArray->GetDictAt(i); - if (!pUsage) { - continue; - } - if (pUsage->GetStringBy("Event", "View") != csConfig) { - continue; - } - CPDF_Array* pOCGs = pUsage->GetArrayBy("OCGs"); - if (!pOCGs) { - continue; - } - if (FPDFDOC_OCG_FindGroup(pOCGs, pOCGDict) < 0) { - continue; - } - CPDF_Dictionary* pState = pUsage->GetDictBy(csConfig); - if (!pState) { - continue; - } - bState = pState->GetStringBy(csFind) != "OFF"; - } - } - return bState; -} -FX_BOOL CPDF_OCContext::LoadOCGState(const CPDF_Dictionary* pOCGDict) const { - if (!FPDFDOC_OCG_HasIntent(pOCGDict, "View", "View")) { - return TRUE; - } - CFX_ByteString csState = FPDFDOC_OCG_GetUsageTypeString(m_eUsageType); - CPDF_Dictionary* pUsage = pOCGDict->GetDictBy("Usage"); - if (pUsage) { - CPDF_Dictionary* pState = pUsage->GetDictBy(csState); - if (pState) { - CFX_ByteString csFind = csState + "State"; - if (pState->KeyExist(csFind)) { - return pState->GetStringBy(csFind) != "OFF"; - } - } - if (csState != "View") { - pState = pUsage->GetDictBy("View"); - if (pState && pState->KeyExist("ViewState")) { - return pState->GetStringBy("ViewState") != "OFF"; - } - } - } - FX_BOOL bDefValid = FALSE; - return LoadOCGStateFromConfig(csState, pOCGDict, bDefValid); -} - -FX_BOOL CPDF_OCContext::GetOCGVisible(const CPDF_Dictionary* pOCGDict) { - if (!pOCGDict) - return FALSE; - - const auto it = m_OCGStates.find(pOCGDict); - if (it != m_OCGStates.end()) - return it->second; - - FX_BOOL bState = LoadOCGState(pOCGDict); - m_OCGStates[pOCGDict] = bState; - return bState; -} - -FX_BOOL CPDF_OCContext::GetOCGVE(CPDF_Array* pExpression, - FX_BOOL bFromConfig, - int nLevel) { - if (nLevel > 32) { - return FALSE; - } - if (!pExpression) { - return FALSE; - } - int32_t iCount = pExpression->GetCount(); - CPDF_Object* pOCGObj; - CFX_ByteString csOperator = pExpression->GetStringAt(0); - if (csOperator == "Not") { - pOCGObj = pExpression->GetElementValue(1); - if (!pOCGObj) - return FALSE; - if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) - return !(bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict)); - if (CPDF_Array* pArray = pOCGObj->AsArray()) - return !GetOCGVE(pArray, bFromConfig, nLevel + 1); - return FALSE; - } - if (csOperator == "Or" || csOperator == "And") { - FX_BOOL bValue = FALSE; - for (int32_t i = 1; i < iCount; i++) { - pOCGObj = pExpression->GetElementValue(1); - if (!pOCGObj) { - continue; - } - FX_BOOL bItem = FALSE; - if (CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) - bItem = bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict); - else if (CPDF_Array* pArray = pOCGObj->AsArray()) - bItem = GetOCGVE(pArray, bFromConfig, nLevel + 1); - - if (i == 1) { - bValue = bItem; - } else { - if (csOperator == "Or") { - bValue = bValue || bItem; - } else { - bValue = bValue && bItem; - } - } - } - return bValue; - } - return FALSE; -} -FX_BOOL CPDF_OCContext::LoadOCMDState(const CPDF_Dictionary* pOCMDDict, - FX_BOOL bFromConfig) { - CPDF_Array* pVE = pOCMDDict->GetArrayBy("VE"); - if (pVE) { - return GetOCGVE(pVE, bFromConfig); - } - CFX_ByteString csP = pOCMDDict->GetStringBy("P", "AnyOn"); - CPDF_Object* pOCGObj = pOCMDDict->GetElementValue("OCGs"); - if (!pOCGObj) - return TRUE; - if (const CPDF_Dictionary* pDict = pOCGObj->AsDictionary()) - return bFromConfig ? LoadOCGState(pDict) : GetOCGVisible(pDict); - - CPDF_Array* pArray = pOCGObj->AsArray(); - if (!pArray) - return TRUE; - - FX_BOOL bState = FALSE; - if (csP == "AllOn" || csP == "AllOff") { - bState = TRUE; - } - int32_t iCount = pArray->GetCount(); - for (int32_t i = 0; i < iCount; i++) { - FX_BOOL bItem = TRUE; - CPDF_Dictionary* pItemDict = pArray->GetDictAt(i); - if (pItemDict) - bItem = bFromConfig ? LoadOCGState(pItemDict) : GetOCGVisible(pItemDict); - - if ((csP == "AnyOn" && bItem) || (csP == "AnyOff" && !bItem)) - return TRUE; - if ((csP == "AllOn" && !bItem) || (csP == "AllOff" && bItem)) - return FALSE; - } - return bState; -} -FX_BOOL CPDF_OCContext::CheckOCGVisible(const CPDF_Dictionary* pOCGDict) { - if (!pOCGDict) { - return TRUE; - } - CFX_ByteString csType = pOCGDict->GetStringBy("Type", "OCG"); - if (csType == "OCG") { - return GetOCGVisible(pOCGDict); - } - return LoadOCMDState(pOCGDict, FALSE); -} -void CPDF_OCContext::ResetOCContext() { - m_OCGStates.clear(); -} diff --git a/core/src/fpdfdoc/doc_tagged.cpp b/core/src/fpdfdoc/doc_tagged.cpp deleted file mode 100644 index 523800b43b..0000000000 --- a/core/src/fpdfdoc/doc_tagged.cpp +++ /dev/null @@ -1,440 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_reference.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfdoc/fpdf_tagged.h" -#include "core/src/fpdfdoc/doc_utils.h" -#include "core/src/fpdfdoc/tagged_int.h" - -const int nMaxRecursion = 32; -static FX_BOOL IsTagged(const CPDF_Document* pDoc) { - CPDF_Dictionary* pCatalog = pDoc->GetRoot(); - CPDF_Dictionary* pMarkInfo = pCatalog->GetDictBy("MarkInfo"); - return pMarkInfo && pMarkInfo->GetIntegerBy("Marked"); -} -CPDF_StructTree* CPDF_StructTree::LoadPage(const CPDF_Document* pDoc, - const CPDF_Dictionary* pPageDict) { - if (!IsTagged(pDoc)) { - return NULL; - } - CPDF_StructTreeImpl* pTree = new CPDF_StructTreeImpl(pDoc); - pTree->LoadPageTree(pPageDict); - return pTree; -} -CPDF_StructTree* CPDF_StructTree::LoadDoc(const CPDF_Document* pDoc) { - if (!IsTagged(pDoc)) { - return NULL; - } - CPDF_StructTreeImpl* pTree = new CPDF_StructTreeImpl(pDoc); - pTree->LoadDocTree(); - return pTree; -} -CPDF_StructTreeImpl::CPDF_StructTreeImpl(const CPDF_Document* pDoc) { - CPDF_Dictionary* pCatalog = pDoc->GetRoot(); - m_pTreeRoot = pCatalog->GetDictBy("StructTreeRoot"); - if (!m_pTreeRoot) { - return; - } - m_pRoleMap = m_pTreeRoot->GetDictBy("RoleMap"); -} -CPDF_StructTreeImpl::~CPDF_StructTreeImpl() { - for (int i = 0; i < m_Kids.GetSize(); i++) - if (m_Kids[i]) { - m_Kids[i]->Release(); - } -} -void CPDF_StructTreeImpl::LoadDocTree() { - m_pPage = nullptr; - if (!m_pTreeRoot) - return; - - CPDF_Object* pKids = m_pTreeRoot->GetElementValue("K"); - if (!pKids) - return; - if (CPDF_Dictionary* pDict = pKids->AsDictionary()) { - CPDF_StructElementImpl* pStructElementImpl = - new CPDF_StructElementImpl(this, nullptr, pDict); - m_Kids.Add(pStructElementImpl); - return; - } - CPDF_Array* pArray = pKids->AsArray(); - if (!pArray) - return; - - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - CPDF_Dictionary* pKid = pArray->GetDictAt(i); - CPDF_StructElementImpl* pStructElementImpl = - new CPDF_StructElementImpl(this, nullptr, pKid); - m_Kids.Add(pStructElementImpl); - } -} -void CPDF_StructTreeImpl::LoadPageTree(const CPDF_Dictionary* pPageDict) { - m_pPage = pPageDict; - if (!m_pTreeRoot) - return; - - CPDF_Object* pKids = m_pTreeRoot->GetElementValue("K"); - if (!pKids) - return; - - FX_DWORD dwKids = 0; - if (pKids->IsDictionary()) - dwKids = 1; - else if (CPDF_Array* pArray = pKids->AsArray()) - dwKids = pArray->GetCount(); - else - return; - - FX_DWORD i; - m_Kids.SetSize(dwKids); - for (i = 0; i < dwKids; i++) { - m_Kids[i] = NULL; - } - std::map element_map; - CPDF_Dictionary* pParentTree = m_pTreeRoot->GetDictBy("ParentTree"); - if (!pParentTree) { - return; - } - CPDF_NumberTree parent_tree(pParentTree); - int parents_id = pPageDict->GetIntegerBy("StructParents", -1); - if (parents_id >= 0) { - CPDF_Array* pParentArray = ToArray(parent_tree.LookupValue(parents_id)); - if (!pParentArray) - return; - - for (i = 0; i < pParentArray->GetCount(); i++) { - CPDF_Dictionary* pParent = pParentArray->GetDictAt(i); - if (!pParent) { - continue; - } - AddPageNode(pParent, element_map); - } - } -} -CPDF_StructElementImpl* CPDF_StructTreeImpl::AddPageNode( - CPDF_Dictionary* pDict, - std::map& map, - int nLevel) { - if (nLevel > nMaxRecursion) - return NULL; - - auto it = map.find(pDict); - if (it != map.end()) - return it->second; - - CPDF_StructElementImpl* pElement = - new CPDF_StructElementImpl(this, NULL, pDict); - map[pDict] = pElement; - CPDF_Dictionary* pParent = pDict->GetDictBy("P"); - if (!pParent || pParent->GetStringBy("Type") == "StructTreeRoot") { - if (!AddTopLevelNode(pDict, pElement)) { - pElement->Release(); - map.erase(pDict); - } - } else { - CPDF_StructElementImpl* pParentElement = - AddPageNode(pParent, map, nLevel + 1); - FX_BOOL bSave = FALSE; - for (int i = 0; i < pParentElement->m_Kids.GetSize(); i++) { - if (pParentElement->m_Kids[i].m_Type != CPDF_StructKid::Element) { - continue; - } - if (pParentElement->m_Kids[i].m_Element.m_pDict != pDict) { - continue; - } - pParentElement->m_Kids[i].m_Element.m_pElement = pElement->Retain(); - bSave = TRUE; - } - if (!bSave) { - pElement->Release(); - map.erase(pDict); - } - } - return pElement; -} -FX_BOOL CPDF_StructTreeImpl::AddTopLevelNode(CPDF_Dictionary* pDict, - CPDF_StructElementImpl* pElement) { - CPDF_Object* pObj = m_pTreeRoot->GetElementValue("K"); - if (!pObj) { - return FALSE; - } - if (pObj->IsDictionary()) { - if (pObj->GetObjNum() == pDict->GetObjNum()) { - if (m_Kids[0]) { - m_Kids[0]->Release(); - } - m_Kids[0] = pElement->Retain(); - } else { - return FALSE; - } - } - if (CPDF_Array* pTopKids = pObj->AsArray()) { - FX_DWORD i; - FX_BOOL bSave = FALSE; - for (i = 0; i < pTopKids->GetCount(); i++) { - CPDF_Reference* pKidRef = ToReference(pTopKids->GetElement(i)); - if (!pKidRef) - continue; - if (pKidRef->GetRefObjNum() != pDict->GetObjNum()) - continue; - - if (m_Kids[i]) - m_Kids[i]->Release(); - m_Kids[i] = pElement->Retain(); - bSave = TRUE; - } - if (!bSave) - return FALSE; - } - return TRUE; -} -CPDF_StructElementImpl::CPDF_StructElementImpl(CPDF_StructTreeImpl* pTree, - CPDF_StructElementImpl* pParent, - CPDF_Dictionary* pDict) - : m_RefCount(0) { - m_pTree = pTree; - m_pDict = pDict; - m_Type = pDict->GetStringBy("S"); - if (pTree->m_pRoleMap) { - CFX_ByteString mapped = pTree->m_pRoleMap->GetStringBy(m_Type); - if (!mapped.IsEmpty()) { - m_Type = mapped; - } - } - m_pParent = pParent; - LoadKids(pDict); -} -CPDF_StructElementImpl::~CPDF_StructElementImpl() { - for (int i = 0; i < m_Kids.GetSize(); i++) { - if (m_Kids[i].m_Type == CPDF_StructKid::Element && - m_Kids[i].m_Element.m_pElement) { - ((CPDF_StructElementImpl*)m_Kids[i].m_Element.m_pElement)->Release(); - } - } -} -CPDF_StructElementImpl* CPDF_StructElementImpl::Retain() { - m_RefCount++; - return this; -} -void CPDF_StructElementImpl::Release() { - if (--m_RefCount < 1) { - delete this; - } -} -void CPDF_StructElementImpl::LoadKids(CPDF_Dictionary* pDict) { - CPDF_Object* pObj = pDict->GetElement("Pg"); - FX_DWORD PageObjNum = 0; - if (CPDF_Reference* pRef = ToReference(pObj)) - PageObjNum = pRef->GetRefObjNum(); - - CPDF_Object* pKids = pDict->GetElementValue("K"); - if (!pKids) - return; - - if (CPDF_Array* pArray = pKids->AsArray()) { - m_Kids.SetSize(pArray->GetCount()); - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - CPDF_Object* pKid = pArray->GetElementValue(i); - LoadKid(PageObjNum, pKid, &m_Kids[i]); - } - } else { - m_Kids.SetSize(1); - LoadKid(PageObjNum, pKids, &m_Kids[0]); - } -} -void CPDF_StructElementImpl::LoadKid(FX_DWORD PageObjNum, - CPDF_Object* pKidObj, - CPDF_StructKid* pKid) { - pKid->m_Type = CPDF_StructKid::Invalid; - if (!pKidObj) - return; - - if (pKidObj->IsNumber()) { - if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) { - return; - } - pKid->m_Type = CPDF_StructKid::PageContent; - pKid->m_PageContent.m_ContentId = pKidObj->GetInteger(); - pKid->m_PageContent.m_PageObjNum = PageObjNum; - return; - } - - CPDF_Dictionary* pKidDict = pKidObj->AsDictionary(); - if (!pKidDict) - return; - - if (CPDF_Reference* pRef = ToReference(pKidDict->GetElement("Pg"))) - PageObjNum = pRef->GetRefObjNum(); - - CFX_ByteString type = pKidDict->GetStringBy("Type"); - if (type == "MCR") { - if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) { - return; - } - pKid->m_Type = CPDF_StructKid::StreamContent; - if (CPDF_Reference* pRef = ToReference(pKidDict->GetElement("Stm"))) { - pKid->m_StreamContent.m_RefObjNum = pRef->GetRefObjNum(); - } else { - pKid->m_StreamContent.m_RefObjNum = 0; - } - pKid->m_StreamContent.m_PageObjNum = PageObjNum; - pKid->m_StreamContent.m_ContentId = pKidDict->GetIntegerBy("MCID"); - } else if (type == "OBJR") { - if (m_pTree->m_pPage && m_pTree->m_pPage->GetObjNum() != PageObjNum) { - return; - } - pKid->m_Type = CPDF_StructKid::Object; - if (CPDF_Reference* pObj = ToReference(pKidDict->GetElement("Obj"))) { - pKid->m_Object.m_RefObjNum = pObj->GetRefObjNum(); - } else { - pKid->m_Object.m_RefObjNum = 0; - } - pKid->m_Object.m_PageObjNum = PageObjNum; - } else { - pKid->m_Type = CPDF_StructKid::Element; - pKid->m_Element.m_pDict = pKidDict; - if (!m_pTree->m_pPage) { - pKid->m_Element.m_pElement = - new CPDF_StructElementImpl(m_pTree, this, pKidDict); - } else { - pKid->m_Element.m_pElement = NULL; - } - } -} -static CPDF_Dictionary* FindAttrDict(CPDF_Object* pAttrs, - const CFX_ByteStringC& owner, - FX_FLOAT nLevel = 0.0F) { - if (nLevel > nMaxRecursion) - return nullptr; - if (!pAttrs) - return nullptr; - - CPDF_Dictionary* pDict = nullptr; - if (pAttrs->IsDictionary()) { - pDict = pAttrs->AsDictionary(); - } else if (CPDF_Stream* pStream = pAttrs->AsStream()) { - pDict = pStream->GetDict(); - } else if (CPDF_Array* pArray = pAttrs->AsArray()) { - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - CPDF_Object* pElement = pArray->GetElementValue(i); - pDict = FindAttrDict(pElement, owner, nLevel + 1); - if (pDict) - return pDict; - } - } - if (pDict && pDict->GetStringBy("O") == owner) - return pDict; - return nullptr; -} -CPDF_Object* CPDF_StructElementImpl::GetAttr(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_BOOL bInheritable, - FX_FLOAT fLevel) { - if (fLevel > nMaxRecursion) { - return NULL; - } - if (bInheritable) { - CPDF_Object* pAttr = GetAttr(owner, name, FALSE); - if (pAttr) { - return pAttr; - } - if (!m_pParent) { - return NULL; - } - return m_pParent->GetAttr(owner, name, TRUE, fLevel + 1); - } - CPDF_Object* pA = m_pDict->GetElementValue("A"); - if (pA) { - CPDF_Dictionary* pAttrDict = FindAttrDict(pA, owner); - if (pAttrDict) { - CPDF_Object* pAttr = pAttrDict->GetElementValue(name); - if (pAttr) { - return pAttr; - } - } - } - CPDF_Object* pC = m_pDict->GetElementValue("C"); - if (!pC) - return nullptr; - - CPDF_Dictionary* pClassMap = m_pTree->m_pTreeRoot->GetDictBy("ClassMap"); - if (!pClassMap) - return nullptr; - - if (CPDF_Array* pArray = pC->AsArray()) { - for (FX_DWORD i = 0; i < pArray->GetCount(); i++) { - CFX_ByteString class_name = pArray->GetStringAt(i); - CPDF_Dictionary* pClassDict = pClassMap->GetDictBy(class_name); - if (pClassDict && pClassDict->GetStringBy("O") == owner) - return pClassDict->GetElementValue(name); - } - return nullptr; - } - CFX_ByteString class_name = pC->GetString(); - CPDF_Dictionary* pClassDict = pClassMap->GetDictBy(class_name); - if (pClassDict && pClassDict->GetStringBy("O") == owner) - return pClassDict->GetElementValue(name); - return nullptr; -} -CPDF_Object* CPDF_StructElementImpl::GetAttr(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_BOOL bInheritable, - int subindex) { - CPDF_Object* pAttr = GetAttr(owner, name, bInheritable); - CPDF_Array* pArray = ToArray(pAttr); - if (!pArray || subindex == -1) - return pAttr; - - if (subindex >= static_cast(pArray->GetCount())) - return pAttr; - return pArray->GetElementValue(subindex); -} -CFX_ByteString CPDF_StructElementImpl::GetName( - const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - const CFX_ByteStringC& default_value, - FX_BOOL bInheritable, - int subindex) { - CPDF_Object* pAttr = GetAttr(owner, name, bInheritable, subindex); - if (ToName(pAttr)) - return pAttr->GetString(); - return default_value; -} - -FX_ARGB CPDF_StructElementImpl::GetColor(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_ARGB default_value, - FX_BOOL bInheritable, - int subindex) { - CPDF_Array* pArray = ToArray(GetAttr(owner, name, bInheritable, subindex)); - if (!pArray) - return default_value; - return 0xff000000 | ((int)(pArray->GetNumberAt(0) * 255) << 16) | - ((int)(pArray->GetNumberAt(1) * 255) << 8) | - (int)(pArray->GetNumberAt(2) * 255); -} -FX_FLOAT CPDF_StructElementImpl::GetNumber(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_FLOAT default_value, - FX_BOOL bInheritable, - int subindex) { - CPDF_Object* pAttr = GetAttr(owner, name, bInheritable, subindex); - return ToNumber(pAttr) ? pAttr->GetNumber() : default_value; -} -int CPDF_StructElementImpl::GetInteger(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - int default_value, - FX_BOOL bInheritable, - int subindex) { - CPDF_Object* pAttr = GetAttr(owner, name, bInheritable, subindex); - return ToNumber(pAttr) ? pAttr->GetInteger() : default_value; -} diff --git a/core/src/fpdfdoc/doc_utils.cpp b/core/src/fpdfdoc/doc_utils.cpp deleted file mode 100644 index 5005e213ab..0000000000 --- a/core/src/fpdfdoc/doc_utils.cpp +++ /dev/null @@ -1,753 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include -#include - -#include "core/include/fpdfapi/cpdf_array.h" -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfapi/cpdf_simple_parser.h" -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/src/fpdfdoc/doc_utils.h" - -namespace { - -const int FPDFDOC_UTILS_MAXRECURSION = 32; - -CPDF_Object* SearchNumberNode(const CPDF_Dictionary* pNode, int num) { - CPDF_Array* pLimits = pNode->GetArrayBy("Limits"); - if (pLimits && - (num < pLimits->GetIntegerAt(0) || num > pLimits->GetIntegerAt(1))) { - return NULL; - } - CPDF_Array* pNumbers = pNode->GetArrayBy("Nums"); - if (pNumbers) { - FX_DWORD dwCount = pNumbers->GetCount() / 2; - for (FX_DWORD i = 0; i < dwCount; i++) { - int index = pNumbers->GetIntegerAt(i * 2); - if (num == index) { - return pNumbers->GetElementValue(i * 2 + 1); - } - if (index > num) { - break; - } - } - return NULL; - } - CPDF_Array* pKids = pNode->GetArrayBy("Kids"); - if (!pKids) { - return NULL; - } - for (FX_DWORD i = 0; i < pKids->GetCount(); i++) { - CPDF_Dictionary* pKid = pKids->GetDictAt(i); - if (!pKid) { - continue; - } - CPDF_Object* pFound = SearchNumberNode(pKid, num); - if (pFound) { - return pFound; - } - } - return NULL; -} - -} // namespace - -CPDF_Object* CPDF_NumberTree::LookupValue(int num) const { - return SearchNumberNode(m_pRoot, num); -} - -CFX_WideString GetFullName(CPDF_Dictionary* pFieldDict) { - CFX_WideString full_name; - CPDF_Dictionary* pLevel = pFieldDict; - while (pLevel) { - CFX_WideString short_name = pLevel->GetUnicodeTextBy("T"); - if (short_name != L"") { - if (full_name == L"") { - full_name = short_name; - } else { - full_name = short_name + L"." + full_name; - } - } - pLevel = pLevel->GetDictBy("Parent"); - } - return full_name; -} -FX_BOOL CPDF_DefaultAppearance::HasFont() { - if (m_csDA.IsEmpty()) { - return FALSE; - } - CPDF_SimpleParser syntax(m_csDA); - return syntax.FindTagParamFromStart("Tf", 2); -} -CFX_ByteString CPDF_DefaultAppearance::GetFontString() { - CFX_ByteString csFont; - if (m_csDA.IsEmpty()) { - return csFont; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart("Tf", 2)) { - csFont += (CFX_ByteString)syntax.GetWord(); - csFont += " "; - csFont += (CFX_ByteString)syntax.GetWord(); - csFont += " "; - csFont += (CFX_ByteString)syntax.GetWord(); - } - return csFont; -} -void CPDF_DefaultAppearance::GetFont(CFX_ByteString& csFontNameTag, - FX_FLOAT& fFontSize) { - csFontNameTag = ""; - fFontSize = 0; - if (m_csDA.IsEmpty()) { - return; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart("Tf", 2)) { - csFontNameTag = (CFX_ByteString)syntax.GetWord(); - csFontNameTag.Delete(0, 1); - fFontSize = FX_atof((CFX_ByteString)syntax.GetWord()); - } - csFontNameTag = PDF_NameDecode(csFontNameTag); -} -FX_BOOL CPDF_DefaultAppearance::HasColor(FX_BOOL bStrokingOperation) { - if (m_csDA.IsEmpty()) { - return FALSE; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { - return TRUE; - } - if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { - return TRUE; - } - return syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4); -} -CFX_ByteString CPDF_DefaultAppearance::GetColorString( - FX_BOOL bStrokingOperation) { - CFX_ByteString csColor; - if (m_csDA.IsEmpty()) { - return csColor; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - return csColor; - } - if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - return csColor; - } - if (syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4)) { - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - csColor += " "; - csColor += (CFX_ByteString)syntax.GetWord(); - } - return csColor; -} -void CPDF_DefaultAppearance::GetColor(int& iColorType, - FX_FLOAT fc[4], - FX_BOOL bStrokingOperation) { - iColorType = COLORTYPE_TRANSPARENT; - for (int c = 0; c < 4; c++) { - fc[c] = 0; - } - if (m_csDA.IsEmpty()) { - return; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { - iColorType = COLORTYPE_GRAY; - fc[0] = FX_atof((CFX_ByteString)syntax.GetWord()); - return; - } - if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { - iColorType = COLORTYPE_RGB; - fc[0] = FX_atof((CFX_ByteString)syntax.GetWord()); - fc[1] = FX_atof((CFX_ByteString)syntax.GetWord()); - fc[2] = FX_atof((CFX_ByteString)syntax.GetWord()); - return; - } - if (syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4)) { - iColorType = COLORTYPE_CMYK; - fc[0] = FX_atof((CFX_ByteString)syntax.GetWord()); - fc[1] = FX_atof((CFX_ByteString)syntax.GetWord()); - fc[2] = FX_atof((CFX_ByteString)syntax.GetWord()); - fc[3] = FX_atof((CFX_ByteString)syntax.GetWord()); - } -} -void CPDF_DefaultAppearance::GetColor(FX_ARGB& color, - int& iColorType, - FX_BOOL bStrokingOperation) { - color = 0; - iColorType = COLORTYPE_TRANSPARENT; - if (m_csDA.IsEmpty()) { - return; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart(bStrokingOperation ? "G" : "g", 1)) { - iColorType = COLORTYPE_GRAY; - FX_FLOAT g = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; - color = ArgbEncode(255, (int)g, (int)g, (int)g); - return; - } - if (syntax.FindTagParamFromStart(bStrokingOperation ? "RG" : "rg", 3)) { - iColorType = COLORTYPE_RGB; - FX_FLOAT r = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; - FX_FLOAT g = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; - FX_FLOAT b = FX_atof((CFX_ByteString)syntax.GetWord()) * 255 + 0.5f; - color = ArgbEncode(255, (int)r, (int)g, (int)b); - return; - } - if (syntax.FindTagParamFromStart(bStrokingOperation ? "K" : "k", 4)) { - iColorType = COLORTYPE_CMYK; - FX_FLOAT c = FX_atof((CFX_ByteString)syntax.GetWord()); - FX_FLOAT m = FX_atof((CFX_ByteString)syntax.GetWord()); - FX_FLOAT y = FX_atof((CFX_ByteString)syntax.GetWord()); - FX_FLOAT k = FX_atof((CFX_ByteString)syntax.GetWord()); - FX_FLOAT r = 1.0f - std::min(1.0f, c + k); - FX_FLOAT g = 1.0f - std::min(1.0f, m + k); - FX_FLOAT b = 1.0f - std::min(1.0f, y + k); - color = ArgbEncode(255, (int)(r * 255 + 0.5f), (int)(g * 255 + 0.5f), - (int)(b * 255 + 0.5f)); - } -} -FX_BOOL CPDF_DefaultAppearance::HasTextMatrix() { - if (m_csDA.IsEmpty()) { - return FALSE; - } - CPDF_SimpleParser syntax(m_csDA); - return syntax.FindTagParamFromStart("Tm", 6); -} -CFX_ByteString CPDF_DefaultAppearance::GetTextMatrixString() { - CFX_ByteString csTM; - if (m_csDA.IsEmpty()) { - return csTM; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart("Tm", 6)) { - for (int i = 0; i < 6; i++) { - csTM += (CFX_ByteString)syntax.GetWord(); - csTM += " "; - } - csTM += (CFX_ByteString)syntax.GetWord(); - } - return csTM; -} -CFX_Matrix CPDF_DefaultAppearance::GetTextMatrix() { - CFX_Matrix tm; - if (m_csDA.IsEmpty()) { - return tm; - } - CPDF_SimpleParser syntax(m_csDA); - if (syntax.FindTagParamFromStart("Tm", 6)) { - FX_FLOAT f[6]; - for (int i = 0; i < 6; i++) { - f[i] = FX_atof((CFX_ByteString)syntax.GetWord()); - } - tm.Set(f[0], f[1], f[2], f[3], f[4], f[5]); - } - return tm; -} -void InitInterFormDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument) { - if (!pDocument) { - return; - } - if (!pFormDict) { - pFormDict = new CPDF_Dictionary; - FX_DWORD dwObjNum = pDocument->AddIndirectObject(pFormDict); - CPDF_Dictionary* pRoot = pDocument->GetRoot(); - pRoot->SetAtReference("AcroForm", pDocument, dwObjNum); - } - CFX_ByteString csDA; - if (!pFormDict->KeyExist("DR")) { - CPDF_Font* pFont = NULL; - CFX_ByteString csBaseName, csDefault; - uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); - pFont = CPDF_InterForm::AddStandardFont(pDocument, "Helvetica"); - if (pFont) { - AddInterFormFont(pFormDict, pDocument, pFont, csBaseName); - csDefault = csBaseName; - } - if (charSet != 0) { - CFX_ByteString csFontName = CPDF_InterForm::GetNativeFont(charSet, NULL); - if (!pFont || csFontName != "Helvetica") { - pFont = CPDF_InterForm::AddNativeFont(pDocument); - if (pFont) { - csBaseName = ""; - AddInterFormFont(pFormDict, pDocument, pFont, csBaseName); - csDefault = csBaseName; - } - } - } - if (pFont) { - csDA = "/" + PDF_NameEncode(csDefault) + " 0 Tf"; - } - } - if (!csDA.IsEmpty()) { - csDA += " "; - } - csDA += "0 g"; - if (!pFormDict->KeyExist("DA")) { - pFormDict->SetAtString("DA", csDA); - } -} -FX_DWORD CountInterFormFonts(CPDF_Dictionary* pFormDict) { - if (!pFormDict) { - return 0; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return 0; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return 0; - } - FX_DWORD dwCount = 0; - for (const auto& it : *pFonts) { - CPDF_Object* pObj = it.second; - if (!pObj) { - continue; - } - if (CPDF_Dictionary* pDirect = ToDictionary(pObj->GetDirect())) { - if (pDirect->GetStringBy("Type") == "Font") { - dwCount++; - } - } - } - return dwCount; -} -CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - FX_DWORD index, - CFX_ByteString& csNameTag) { - if (!pFormDict) { - return NULL; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return NULL; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return NULL; - } - FX_DWORD dwCount = 0; - for (const auto& it : *pFonts) { - const CFX_ByteString& csKey = it.first; - CPDF_Object* pObj = it.second; - if (!pObj) { - continue; - } - CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); - if (!pElement) - continue; - if (pElement->GetStringBy("Type") != "Font") - continue; - if (dwCount == index) { - csNameTag = csKey; - return pDocument->LoadFont(pElement); - } - dwCount++; - } - return NULL; -} -CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString csNameTag) { - CFX_ByteString csAlias = PDF_NameDecode(csNameTag); - if (!pFormDict || csAlias.IsEmpty()) { - return NULL; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return NULL; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return NULL; - } - CPDF_Dictionary* pElement = pFonts->GetDictBy(csAlias); - if (!pElement) { - return NULL; - } - if (pElement->GetStringBy("Type") == "Font") { - return pDocument->LoadFont(pElement); - } - return NULL; -} -CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString csFontName, - CFX_ByteString& csNameTag) { - if (!pFormDict || csFontName.IsEmpty()) { - return NULL; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return NULL; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return NULL; - } - for (const auto& it : *pFonts) { - const CFX_ByteString& csKey = it.first; - CPDF_Object* pObj = it.second; - if (!pObj) { - continue; - } - CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); - if (!pElement) - continue; - if (pElement->GetStringBy("Type") != "Font") - continue; - - CPDF_Font* pFind = pDocument->LoadFont(pElement); - if (!pFind) - continue; - - CFX_ByteString csBaseFont; - csBaseFont = pFind->GetBaseFont(); - csBaseFont.Remove(' '); - if (csBaseFont == csFontName) { - csNameTag = csKey; - return pFind; - } - } - return NULL; -} -CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - uint8_t charSet, - CFX_ByteString& csNameTag) { - if (!pFormDict) { - return NULL; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return NULL; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return NULL; - } - for (const auto& it : *pFonts) { - const CFX_ByteString& csKey = it.first; - CPDF_Object* pObj = it.second; - if (!pObj) { - continue; - } - CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); - if (!pElement) - continue; - if (pElement->GetStringBy("Type") != "Font") - continue; - CPDF_Font* pFind = pDocument->LoadFont(pElement); - if (!pFind) { - continue; - } - CFX_SubstFont* pSubst = (CFX_SubstFont*)pFind->GetSubstFont(); - if (!pSubst) { - continue; - } - if (pSubst->m_Charset == (int)charSet) { - csNameTag = csKey; - return pFind; - } - } - return NULL; -} -CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString& csNameTag) { - csNameTag = ""; - uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); - CFX_SubstFont* pSubst; - CPDF_Font* pFont = GetDefaultInterFormFont(pFormDict, pDocument); - if (pFont) { - pSubst = (CFX_SubstFont*)pFont->GetSubstFont(); - if (pSubst && pSubst->m_Charset == (int)charSet) { - FindInterFormFont(pFormDict, pFont, csNameTag); - return pFont; - } - } - return GetNativeInterFormFont(pFormDict, pDocument, charSet, csNameTag); -} -FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, - const CPDF_Font* pFont, - CFX_ByteString& csNameTag) { - if (!pFormDict || !pFont) { - return FALSE; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return FALSE; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return FALSE; - } - for (const auto& it : *pFonts) { - const CFX_ByteString& csKey = it.first; - CPDF_Object* pObj = it.second; - if (!pObj) { - continue; - } - CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); - if (!pElement) - continue; - if (pElement->GetStringBy("Type") != "Font") { - continue; - } - if (pFont->GetFontDict() == pElement) { - csNameTag = csKey; - return TRUE; - } - } - return FALSE; -} -FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString csFontName, - CPDF_Font*& pFont, - CFX_ByteString& csNameTag) { - if (!pFormDict) { - return FALSE; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return FALSE; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return FALSE; - } - if (csFontName.GetLength() > 0) { - csFontName.Remove(' '); - } - for (const auto& it : *pFonts) { - const CFX_ByteString& csKey = it.first; - CPDF_Object* pObj = it.second; - if (!pObj) { - continue; - } - CPDF_Dictionary* pElement = ToDictionary(pObj->GetDirect()); - if (!pElement) - continue; - if (pElement->GetStringBy("Type") != "Font") { - continue; - } - pFont = pDocument->LoadFont(pElement); - if (!pFont) { - continue; - } - CFX_ByteString csBaseFont; - csBaseFont = pFont->GetBaseFont(); - csBaseFont.Remove(' '); - if (csBaseFont == csFontName) { - csNameTag = csKey; - return TRUE; - } - } - return FALSE; -} -void AddInterFormFont(CPDF_Dictionary*& pFormDict, - CPDF_Document* pDocument, - const CPDF_Font* pFont, - CFX_ByteString& csNameTag) { - if (!pFont) { - return; - } - if (!pFormDict) { - InitInterFormDict(pFormDict, pDocument); - } - CFX_ByteString csTag; - if (FindInterFormFont(pFormDict, pFont, csTag)) { - csNameTag = csTag; - return; - } - if (!pFormDict) { - InitInterFormDict(pFormDict, pDocument); - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - pDR = new CPDF_Dictionary; - pFormDict->SetAt("DR", pDR); - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - pFonts = new CPDF_Dictionary; - pDR->SetAt("Font", pFonts); - } - if (csNameTag.IsEmpty()) { - csNameTag = pFont->GetBaseFont(); - } - csNameTag.Remove(' '); - csNameTag = - CPDF_InterForm::GenerateNewResourceName(pDR, "Font", 4, csNameTag); - pFonts->SetAtReference(csNameTag, pDocument, pFont->GetFontDict()); -} -CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, - CPDF_Document* pDocument, - uint8_t charSet, - CFX_ByteString& csNameTag) { - if (!pFormDict) { - InitInterFormDict(pFormDict, pDocument); - } - CFX_ByteString csTemp; - CPDF_Font* pFont = - GetNativeInterFormFont(pFormDict, pDocument, charSet, csTemp); - if (pFont) { - csNameTag = csTemp; - return pFont; - } - CFX_ByteString csFontName = CPDF_InterForm::GetNativeFont(charSet); - if (!csFontName.IsEmpty()) { - if (FindInterFormFont(pFormDict, pDocument, csFontName, pFont, csNameTag)) { - return pFont; - } - } - pFont = CPDF_InterForm::AddNativeFont(charSet, pDocument); - if (pFont) { - AddInterFormFont(pFormDict, pDocument, pFont, csNameTag); - } - return pFont; -} -CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, - CPDF_Document* pDocument, - CFX_ByteString& csNameTag) { - uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); - return AddNativeInterFormFont(pFormDict, pDocument, charSet, csNameTag); -} -void RemoveInterFormFont(CPDF_Dictionary* pFormDict, const CPDF_Font* pFont) { - if (!pFormDict || !pFont) { - return; - } - CFX_ByteString csTag; - if (!FindInterFormFont(pFormDict, pFont, csTag)) { - return; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - pFonts->RemoveAt(csTag); -} -void RemoveInterFormFont(CPDF_Dictionary* pFormDict, CFX_ByteString csNameTag) { - if (!pFormDict || csNameTag.IsEmpty()) { - return; - } - CPDF_Dictionary* pDR = pFormDict->GetDictBy("DR"); - if (!pDR) { - return; - } - CPDF_Dictionary* pFonts = pDR->GetDictBy("Font"); - if (!pFonts) { - return; - } - pFonts->RemoveAt(csNameTag); -} - -CPDF_Font* GetDefaultInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument) { - if (!pFormDict) { - return NULL; - } - CPDF_DefaultAppearance cDA(pFormDict->GetStringBy("DA")); - CFX_ByteString csFontNameTag; - FX_FLOAT fFontSize; - cDA.GetFont(csFontNameTag, fFontSize); - return GetInterFormFont(pFormDict, pDocument, csFontNameTag); -} - -CPDF_IconFit::ScaleMethod CPDF_IconFit::GetScaleMethod() { - if (!m_pDict) { - return Always; - } - CFX_ByteString csSW = m_pDict->GetStringBy("SW", "A"); - if (csSW == "B") { - return Bigger; - } - if (csSW == "S") { - return Smaller; - } - if (csSW == "N") { - return Never; - } - return Always; -} -FX_BOOL CPDF_IconFit::IsProportionalScale() { - if (!m_pDict) { - return TRUE; - } - return m_pDict->GetStringBy("S", "P") != "A"; -} -void CPDF_IconFit::GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom) { - fLeft = fBottom = 0.5; - if (!m_pDict) { - return; - } - CPDF_Array* pA = m_pDict->GetArrayBy("A"); - if (pA) { - FX_DWORD dwCount = pA->GetCount(); - if (dwCount > 0) { - fLeft = pA->GetNumberAt(0); - } - if (dwCount > 1) { - fBottom = pA->GetNumberAt(1); - } - } -} -FX_BOOL CPDF_IconFit::GetFittingBounds() { - if (!m_pDict) { - return FALSE; - } - return m_pDict->GetBooleanBy("FB"); -} - -std::vector SaveCheckedFieldStatus(CPDF_FormField* pField) { - std::vector result; - int iCount = pField->CountControls(); - for (int i = 0; i < iCount; ++i) { - if (CPDF_FormControl* pControl = pField->GetControl(i)) - result.push_back(pControl->IsChecked()); - } - return result; -} - -CPDF_Object* FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict, - const FX_CHAR* name, - int nLevel) { - if (nLevel > FPDFDOC_UTILS_MAXRECURSION) { - return NULL; - } - if (!pFieldDict) { - return NULL; - } - CPDF_Object* pAttr = pFieldDict->GetElementValue(name); - if (pAttr) { - return pAttr; - } - CPDF_Dictionary* pParent = pFieldDict->GetDictBy("Parent"); - if (!pParent) { - return NULL; - } - return FPDF_GetFieldAttr(pParent, name, nLevel + 1); -} diff --git a/core/src/fpdfdoc/doc_utils.h b/core/src/fpdfdoc/doc_utils.h deleted file mode 100644 index d69652fedc..0000000000 --- a/core/src/fpdfdoc/doc_utils.h +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFDOC_DOC_UTILS_H_ -#define CORE_SRC_FPDFDOC_DOC_UTILS_H_ - -#include - -class CPDF_Dictionary; -class CPDF_FormField; - -class CPDF_NumberTree { - public: - CPDF_NumberTree(CPDF_Dictionary* pRoot) : m_pRoot(pRoot) {} - CPDF_Object* LookupValue(int num) const; - - protected: - CPDF_Dictionary* const m_pRoot; -}; - -CFX_WideString GetFullName(CPDF_Dictionary* pFieldDict); -void InitInterFormDict(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument); -FX_DWORD CountInterFormFonts(CPDF_Dictionary* pFormDict); -CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - FX_DWORD index, - CFX_ByteString& csNameTag); -CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString csNameTag); -CPDF_Font* GetInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString csFontName, - CFX_ByteString& csNameTag); -CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - uint8_t charSet, - CFX_ByteString& csNameTag); -CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString& csNameTag); -FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, - const CPDF_Font* pFont, - CFX_ByteString& csNameTag); -FX_BOOL FindInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument, - CFX_ByteString csFontName, - CPDF_Font*& pFont, - CFX_ByteString& csNameTag); -void AddInterFormFont(CPDF_Dictionary*& pFormDict, - CPDF_Document* pDocument, - const CPDF_Font* pFont, - CFX_ByteString& csNameTag); -CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, - CPDF_Document* pDocument, - uint8_t charSet, - CFX_ByteString& csNameTag); -CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, - CPDF_Document* pDocument, - CFX_ByteString& csNameTag); -void RemoveInterFormFont(CPDF_Dictionary* pFormDict, const CPDF_Font* pFont); -void RemoveInterFormFont(CPDF_Dictionary* pFormDict, CFX_ByteString csNameTag); -CPDF_Font* GetDefaultInterFormFont(CPDF_Dictionary* pFormDict, - CPDF_Document* pDocument); -void SetDefaultInterFormFont(CPDF_Dictionary*& pFormDict, - CPDF_Document* pDocument, - const CPDF_Font* pFont); -std::vector SaveCheckedFieldStatus(CPDF_FormField* pField); -FX_BOOL NeedPDFEncodeForFieldFullName(const CFX_WideString& csFieldName); -FX_BOOL NeedPDFEncodeForFieldTree(CPDF_Dictionary* pFieldDict, int nLevel = 0); -void EncodeFieldName(const CFX_WideString& csName, CFX_ByteString& csT); -void UpdateEncodeFieldName(CPDF_Dictionary* pFieldDict, int nLevel = 0); - -#endif // CORE_SRC_FPDFDOC_DOC_UTILS_H_ diff --git a/core/src/fpdfdoc/doc_viewerPreferences.cpp b/core/src/fpdfdoc/doc_viewerPreferences.cpp deleted file mode 100644 index 582f3a5a93..0000000000 --- a/core/src/fpdfdoc/doc_viewerPreferences.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfapi/cpdf_document.h" -#include "core/include/fpdfdoc/fpdf_doc.h" - -CPDF_ViewerPreferences::CPDF_ViewerPreferences(CPDF_Document* pDoc) - : m_pDoc(pDoc) {} -CPDF_ViewerPreferences::~CPDF_ViewerPreferences() {} -FX_BOOL CPDF_ViewerPreferences::IsDirectionR2L() const { - CPDF_Dictionary* pDict = m_pDoc->GetRoot(); - pDict = pDict->GetDictBy("ViewerPreferences"); - if (!pDict) { - return FALSE; - } - return "R2L" == pDict->GetStringBy("Direction"); -} -FX_BOOL CPDF_ViewerPreferences::PrintScaling() const { - CPDF_Dictionary* pDict = m_pDoc->GetRoot(); - pDict = pDict->GetDictBy("ViewerPreferences"); - if (!pDict) { - return TRUE; - } - return "None" != pDict->GetStringBy("PrintScaling"); -} -int32_t CPDF_ViewerPreferences::NumCopies() const { - CPDF_Dictionary* pDict = m_pDoc->GetRoot(); - pDict = pDict->GetDictBy("ViewerPreferences"); - if (!pDict) { - return 1; - } - return pDict->GetIntegerBy("NumCopies"); -} -CPDF_Array* CPDF_ViewerPreferences::PrintPageRange() const { - CPDF_Dictionary* pDict = m_pDoc->GetRoot(); - CPDF_Array* pRange = NULL; - pDict = pDict->GetDictBy("ViewerPreferences"); - if (!pDict) { - return pRange; - } - pRange = pDict->GetArrayBy("PrintPageRange"); - return pRange; -} -CFX_ByteString CPDF_ViewerPreferences::Duplex() const { - CPDF_Dictionary* pDict = m_pDoc->GetRoot(); - pDict = pDict->GetDictBy("ViewerPreferences"); - if (!pDict) { - return "None"; - } - return pDict->GetStringBy("Duplex"); -} diff --git a/core/src/fpdfdoc/doc_vt.cpp b/core/src/fpdfdoc/doc_vt.cpp deleted file mode 100644 index 477df25a14..0000000000 --- a/core/src/fpdfdoc/doc_vt.cpp +++ /dev/null @@ -1,1825 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/include/fpdfdoc/fpdf_vt.h" -#include "core/src/fpdfdoc/pdf_vt.h" - -const uint8_t gFontSizeSteps[] = {4, 6, 8, 9, 10, 12, 14, 18, 20, - 25, 30, 35, 40, 45, 50, 55, 60, 70, - 80, 90, 100, 110, 120, 130, 144}; -#define PVT_RETURN_LENGTH 1 -#define PVT_DEFAULT_FONTSIZE 18.0f -#define PVTWORD_SCRIPT_NORMAL 0 -#define PVTWORD_SCRIPT_SUPER 1 -#define PVTWORD_SCRIPT_SUB 2 -#define PVT_FONTSCALE 0.001f -#define PVT_PERCENT 0.01f -#define PVT_HALF 0.5f -CLine::CLine() {} -CLine::~CLine() {} -CPVT_WordPlace CLine::GetBeginWordPlace() const { - return CPVT_WordPlace(LinePlace.nSecIndex, LinePlace.nLineIndex, -1); -} -CPVT_WordPlace CLine::GetEndWordPlace() const { - return CPVT_WordPlace(LinePlace.nSecIndex, LinePlace.nLineIndex, - m_LineInfo.nEndWordIndex); -} -CPVT_WordPlace CLine::GetPrevWordPlace(const CPVT_WordPlace& place) const { - if (place.nWordIndex > m_LineInfo.nEndWordIndex) { - return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, - m_LineInfo.nEndWordIndex); - } - return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, - place.nWordIndex - 1); -} -CPVT_WordPlace CLine::GetNextWordPlace(const CPVT_WordPlace& place) const { - if (place.nWordIndex < m_LineInfo.nBeginWordIndex) { - return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, - m_LineInfo.nBeginWordIndex); - } - return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, - place.nWordIndex + 1); -} -CSection::CSection(CPDF_VariableText* pVT) : m_pVT(pVT) {} -CSection::~CSection() { - ResetAll(); -} -void CSection::ResetAll() { - ResetWordArray(); - ResetLineArray(); -} -void CSection::ResetLineArray() { - m_LineArray.RemoveAll(); -} -void CSection::ResetWordArray() { - for (int32_t i = 0, sz = m_WordArray.GetSize(); i < sz; i++) { - delete m_WordArray.GetAt(i); - } - m_WordArray.RemoveAll(); -} -void CSection::ResetLinePlace() { - for (int32_t i = 0, sz = m_LineArray.GetSize(); i < sz; i++) { - if (CLine* pLine = m_LineArray.GetAt(i)) { - pLine->LinePlace = CPVT_WordPlace(SecPlace.nSecIndex, i, -1); - } - } -} -CPVT_WordPlace CSection::AddWord(const CPVT_WordPlace& place, - const CPVT_WordInfo& wordinfo) { - CPVT_WordInfo* pWord = new CPVT_WordInfo(wordinfo); - int32_t nWordIndex = - std::max(std::min(place.nWordIndex, m_WordArray.GetSize()), 0); - if (nWordIndex == m_WordArray.GetSize()) { - m_WordArray.Add(pWord); - } else { - m_WordArray.InsertAt(nWordIndex, pWord); - } - return place; -} -CPVT_WordPlace CSection::AddLine(const CPVT_LineInfo& lineinfo) { - return CPVT_WordPlace(SecPlace.nSecIndex, m_LineArray.Add(lineinfo), -1); -} -CPVT_FloatRect CSection::Rearrange() { - if (m_pVT->m_nCharArray > 0) { - return CTypeset(this).CharArray(); - } - return CTypeset(this).Typeset(); -} -CPVT_Size CSection::GetSectionSize(FX_FLOAT fFontSize) { - return CTypeset(this).GetEditSize(fFontSize); -} -CPVT_WordPlace CSection::GetBeginWordPlace() const { - if (CLine* pLine = m_LineArray.GetAt(0)) { - return pLine->GetBeginWordPlace(); - } - return SecPlace; -} -CPVT_WordPlace CSection::GetEndWordPlace() const { - if (CLine* pLine = m_LineArray.GetAt(m_LineArray.GetSize() - 1)) { - return pLine->GetEndWordPlace(); - } - return SecPlace; -} -CPVT_WordPlace CSection::GetPrevWordPlace(const CPVT_WordPlace& place) const { - if (place.nLineIndex < 0) { - return GetBeginWordPlace(); - } - if (place.nLineIndex >= m_LineArray.GetSize()) { - return GetEndWordPlace(); - } - if (CLine* pLine = m_LineArray.GetAt(place.nLineIndex)) { - if (place.nWordIndex == pLine->m_LineInfo.nBeginWordIndex) { - return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, -1); - } - if (place.nWordIndex < pLine->m_LineInfo.nBeginWordIndex) { - if (CLine* pPrevLine = m_LineArray.GetAt(place.nLineIndex - 1)) { - return pPrevLine->GetEndWordPlace(); - } - } else { - return pLine->GetPrevWordPlace(place); - } - } - return place; -} -CPVT_WordPlace CSection::GetNextWordPlace(const CPVT_WordPlace& place) const { - if (place.nLineIndex < 0) { - return GetBeginWordPlace(); - } - if (place.nLineIndex >= m_LineArray.GetSize()) { - return GetEndWordPlace(); - } - if (CLine* pLine = m_LineArray.GetAt(place.nLineIndex)) { - if (place.nWordIndex >= pLine->m_LineInfo.nEndWordIndex) { - if (CLine* pNextLine = m_LineArray.GetAt(place.nLineIndex + 1)) { - return pNextLine->GetBeginWordPlace(); - } - } else { - return pLine->GetNextWordPlace(place); - } - } - return place; -} -void CSection::UpdateWordPlace(CPVT_WordPlace& place) const { - int32_t nLeft = 0; - int32_t nRight = m_LineArray.GetSize() - 1; - int32_t nMid = (nLeft + nRight) / 2; - while (nLeft <= nRight) { - if (CLine* pLine = m_LineArray.GetAt(nMid)) { - if (place.nWordIndex < pLine->m_LineInfo.nBeginWordIndex) { - nRight = nMid - 1; - nMid = (nLeft + nRight) / 2; - } else if (place.nWordIndex > pLine->m_LineInfo.nEndWordIndex) { - nLeft = nMid + 1; - nMid = (nLeft + nRight) / 2; - } else { - place.nLineIndex = nMid; - return; - } - } else { - break; - } - } -} -CPVT_WordPlace CSection::SearchWordPlace(const CFX_FloatPoint& point) const { - ASSERT(m_pVT); - CPVT_WordPlace place = GetBeginWordPlace(); - FX_BOOL bUp = TRUE; - FX_BOOL bDown = TRUE; - int32_t nLeft = 0; - int32_t nRight = m_LineArray.GetSize() - 1; - int32_t nMid = m_LineArray.GetSize() / 2; - FX_FLOAT fTop = 0; - FX_FLOAT fBottom = 0; - while (nLeft <= nRight) { - if (CLine* pLine = m_LineArray.GetAt(nMid)) { - fTop = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineAscent - - m_pVT->GetLineLeading(m_SecInfo); - fBottom = pLine->m_LineInfo.fLineY - pLine->m_LineInfo.fLineDescent; - if (IsFloatBigger(point.y, fTop)) { - bUp = FALSE; - } - if (IsFloatSmaller(point.y, fBottom)) { - bDown = FALSE; - } - if (IsFloatSmaller(point.y, fTop)) { - nRight = nMid - 1; - nMid = (nLeft + nRight) / 2; - continue; - } else if (IsFloatBigger(point.y, fBottom)) { - nLeft = nMid + 1; - nMid = (nLeft + nRight) / 2; - continue; - } else { - place = SearchWordPlace( - point.x, - CPVT_WordRange(pLine->GetNextWordPlace(pLine->GetBeginWordPlace()), - pLine->GetEndWordPlace())); - place.nLineIndex = nMid; - return place; - } - } - } - if (bUp) { - place = GetBeginWordPlace(); - } - if (bDown) { - place = GetEndWordPlace(); - } - return place; -} -CPVT_WordPlace CSection::SearchWordPlace( - FX_FLOAT fx, - const CPVT_WordPlace& lineplace) const { - if (CLine* pLine = m_LineArray.GetAt(lineplace.nLineIndex)) { - return SearchWordPlace( - fx - m_SecInfo.rcSection.left, - CPVT_WordRange(pLine->GetNextWordPlace(pLine->GetBeginWordPlace()), - pLine->GetEndWordPlace())); - } - return GetBeginWordPlace(); -} -CPVT_WordPlace CSection::SearchWordPlace(FX_FLOAT fx, - const CPVT_WordRange& range) const { - CPVT_WordPlace wordplace = range.BeginPos; - wordplace.nWordIndex = -1; - if (!m_pVT) { - return wordplace; - } - int32_t nLeft = range.BeginPos.nWordIndex; - int32_t nRight = range.EndPos.nWordIndex + 1; - int32_t nMid = (nLeft + nRight) / 2; - while (nLeft < nRight) { - if (nMid == nLeft) { - break; - } - if (nMid == nRight) { - nMid--; - break; - } - if (CPVT_WordInfo* pWord = m_WordArray.GetAt(nMid)) { - if (fx > pWord->fWordX + m_pVT->GetWordWidth(*pWord) * PVT_HALF) { - nLeft = nMid; - nMid = (nLeft + nRight) / 2; - continue; - } else { - nRight = nMid; - nMid = (nLeft + nRight) / 2; - continue; - } - } else { - break; - } - } - if (CPVT_WordInfo* pWord = m_WordArray.GetAt(nMid)) { - if (fx > pWord->fWordX + m_pVT->GetWordWidth(*pWord) * PVT_HALF) { - wordplace.nWordIndex = nMid; - } - } - return wordplace; -} -void CSection::ClearLeftWords(int32_t nWordIndex) { - for (int32_t i = nWordIndex; i >= 0; i--) { - delete m_WordArray.GetAt(i); - m_WordArray.RemoveAt(i); - } -} -void CSection::ClearRightWords(int32_t nWordIndex) { - for (int32_t i = m_WordArray.GetSize() - 1; i > nWordIndex; i--) { - delete m_WordArray.GetAt(i); - m_WordArray.RemoveAt(i); - } -} -void CSection::ClearMidWords(int32_t nBeginIndex, int32_t nEndIndex) { - for (int32_t i = nEndIndex; i > nBeginIndex; i--) { - delete m_WordArray.GetAt(i); - m_WordArray.RemoveAt(i); - } -} -void CSection::ClearWords(const CPVT_WordRange& PlaceRange) { - CPVT_WordPlace SecBeginPos = GetBeginWordPlace(); - CPVT_WordPlace SecEndPos = GetEndWordPlace(); - if (PlaceRange.BeginPos.WordCmp(SecBeginPos) >= 0) { - if (PlaceRange.EndPos.WordCmp(SecEndPos) <= 0) { - ClearMidWords(PlaceRange.BeginPos.nWordIndex, - PlaceRange.EndPos.nWordIndex); - } else { - ClearRightWords(PlaceRange.BeginPos.nWordIndex); - } - } else if (PlaceRange.EndPos.WordCmp(SecEndPos) <= 0) { - ClearLeftWords(PlaceRange.EndPos.nWordIndex); - } else { - ResetWordArray(); - } -} -void CSection::ClearWord(const CPVT_WordPlace& place) { - delete m_WordArray.GetAt(place.nWordIndex); - m_WordArray.RemoveAt(place.nWordIndex); -} -CTypeset::CTypeset(CSection* pSection) - : m_rcRet(0.0f, 0.0f, 0.0f, 0.0f), - m_pVT(pSection->m_pVT), - m_pSection(pSection) {} -CTypeset::~CTypeset() {} -CPVT_FloatRect CTypeset::CharArray() { - ASSERT(m_pSection); - FX_FLOAT fLineAscent = - m_pVT->GetFontAscent(m_pVT->GetDefaultFontIndex(), m_pVT->GetFontSize()); - FX_FLOAT fLineDescent = - m_pVT->GetFontDescent(m_pVT->GetDefaultFontIndex(), m_pVT->GetFontSize()); - m_rcRet.Default(); - FX_FLOAT x = 0.0f, y = 0.0f; - FX_FLOAT fNextWidth; - int32_t nStart = 0; - FX_FLOAT fNodeWidth = m_pVT->GetPlateWidth() / - (m_pVT->m_nCharArray <= 0 ? 1 : m_pVT->m_nCharArray); - if (CLine* pLine = m_pSection->m_LineArray.GetAt(0)) { - x = 0.0f; - y += m_pVT->GetLineLeading(m_pSection->m_SecInfo); - y += fLineAscent; - nStart = 0; - switch (m_pVT->GetAlignment(m_pSection->m_SecInfo)) { - case 0: - pLine->m_LineInfo.fLineX = fNodeWidth * PVT_HALF; - break; - case 1: - nStart = (m_pVT->m_nCharArray - m_pSection->m_WordArray.GetSize()) / 2; - pLine->m_LineInfo.fLineX = fNodeWidth * nStart - fNodeWidth * PVT_HALF; - break; - case 2: - nStart = m_pVT->m_nCharArray - m_pSection->m_WordArray.GetSize(); - pLine->m_LineInfo.fLineX = fNodeWidth * nStart - fNodeWidth * PVT_HALF; - break; - } - for (int32_t w = 0, sz = m_pSection->m_WordArray.GetSize(); w < sz; w++) { - if (w >= m_pVT->m_nCharArray) { - break; - } - fNextWidth = 0; - if (CPVT_WordInfo* pNextWord = - (CPVT_WordInfo*)m_pSection->m_WordArray.GetAt(w + 1)) { - pNextWord->fWordTail = 0; - fNextWidth = m_pVT->GetWordWidth(*pNextWord); - } - if (CPVT_WordInfo* pWord = - (CPVT_WordInfo*)m_pSection->m_WordArray.GetAt(w)) { - pWord->fWordTail = 0; - FX_FLOAT fWordWidth = m_pVT->GetWordWidth(*pWord); - FX_FLOAT fWordAscent = m_pVT->GetWordAscent(*pWord); - FX_FLOAT fWordDescent = m_pVT->GetWordDescent(*pWord); - x = (FX_FLOAT)(fNodeWidth * (w + nStart + 0.5) - fWordWidth * PVT_HALF); - pWord->fWordX = x; - pWord->fWordY = y; - if (w == 0) { - pLine->m_LineInfo.fLineX = x; - } - if (w != m_pSection->m_WordArray.GetSize() - 1) { - pWord->fWordTail = - (fNodeWidth - (fWordWidth + fNextWidth) * PVT_HALF > 0 - ? fNodeWidth - (fWordWidth + fNextWidth) * PVT_HALF - : 0); - } else { - pWord->fWordTail = 0; - } - x += fWordWidth; - fLineAscent = std::max(fLineAscent, fWordAscent); - fLineDescent = std::min(fLineDescent, fWordDescent); - } - } - pLine->m_LineInfo.nBeginWordIndex = 0; - pLine->m_LineInfo.nEndWordIndex = m_pSection->m_WordArray.GetSize() - 1; - pLine->m_LineInfo.fLineY = y; - pLine->m_LineInfo.fLineWidth = x - pLine->m_LineInfo.fLineX; - pLine->m_LineInfo.fLineAscent = fLineAscent; - pLine->m_LineInfo.fLineDescent = fLineDescent; - y += (-fLineDescent); - } - return m_rcRet = CPVT_FloatRect(0, 0, x, y); -} -CPVT_Size CTypeset::GetEditSize(FX_FLOAT fFontSize) { - ASSERT(m_pSection); - ASSERT(m_pVT); - SplitLines(FALSE, fFontSize); - return CPVT_Size(m_rcRet.Width(), m_rcRet.Height()); -} -CPVT_FloatRect CTypeset::Typeset() { - ASSERT(m_pVT); - m_pSection->m_LineArray.Empty(); - SplitLines(TRUE, 0.0f); - m_pSection->m_LineArray.Clear(); - OutputLines(); - return m_rcRet; -} -static int special_chars[128] = { - 0x0000, 0x000C, 0x0008, 0x000C, 0x0008, 0x0000, 0x0020, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0008, 0x0000, - 0x0010, 0x0000, 0x0000, 0x0028, 0x000C, 0x0008, 0x0000, 0x0000, 0x0028, - 0x0028, 0x0028, 0x0028, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, - 0x0002, 0x0002, 0x0002, 0x0002, 0x0008, 0x0008, 0x0000, 0x0000, 0x0000, - 0x0008, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, - 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, - 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, - 0x0001, 0x000C, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, - 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, - 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, - 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x000C, 0x0000, 0x0008, - 0x0000, 0x0000, -}; -static FX_BOOL IsLatin(FX_WORD word) { - if (word <= 0x007F) { - if (special_chars[word] & 0x0001) { - return TRUE; - } - } - if ((word >= 0x00C0 && word <= 0x00FF) || - (word >= 0x0100 && word <= 0x024F) || - (word >= 0x1E00 && word <= 0x1EFF) || - (word >= 0x2C60 && word <= 0x2C7F) || - (word >= 0xA720 && word <= 0xA7FF) || - (word >= 0xFF21 && word <= 0xFF3A) || - (word >= 0xFF41 && word <= 0xFF5A)) { - return TRUE; - } - return FALSE; -} -static FX_BOOL IsDigit(FX_DWORD word) { - return word >= 0x0030 && word <= 0x0039; -} -static FX_BOOL IsCJK(FX_DWORD word) { - if ((word >= 0x1100 && word <= 0x11FF) || - (word >= 0x2E80 && word <= 0x2FFF) || - (word >= 0x3040 && word <= 0x9FBF) || - (word >= 0xAC00 && word <= 0xD7AF) || - (word >= 0xF900 && word <= 0xFAFF) || - (word >= 0xFE30 && word <= 0xFE4F) || - (word >= 0x20000 && word <= 0x2A6DF) || - (word >= 0x2F800 && word <= 0x2FA1F)) { - return TRUE; - } - if (word >= 0x3000 && word <= 0x303F) { - if (word == 0x3005 || word == 0x3006 || word == 0x3021 || word == 0x3022 || - word == 0x3023 || word == 0x3024 || word == 0x3025 || word == 0x3026 || - word == 0x3027 || word == 0x3028 || word == 0x3029 || word == 0x3031 || - word == 0x3032 || word == 0x3033 || word == 0x3034 || word == 0x3035) { - return TRUE; - } - return FALSE; - } - if (word >= 0xFF66 && word <= 0xFF9D) { - return TRUE; - } - return FALSE; -} -static FX_BOOL IsPunctuation(FX_DWORD word) { - if (word <= 0x007F) { - if ((special_chars[word] >> 3) & 1) { - return TRUE; - } - } else if (word >= 0x0080 && word <= 0x00FF) { - if (word == 0x0082 || word == 0x0084 || word == 0x0085 || word == 0x0091 || - word == 0x0092 || word == 0x0093 || word <= 0x0094 || word == 0x0096 || - word == 0x00B4 || word == 0x00B8) { - return TRUE; - } - } else if (word >= 0x2000 && word <= 0x206F) { - if (word == 0x2010 || word == 0x2011 || word == 0x2012 || word == 0x2013 || - word == 0x2018 || word == 0x2019 || word == 0x201A || word == 0x201B || - word == 0x201C || word == 0x201D || word == 0x201E || word == 0x201F || - word == 0x2032 || word == 0x2033 || word == 0x2034 || word == 0x2035 || - word == 0x2036 || word == 0x2037 || word == 0x203C || word == 0x203D || - word == 0x203E || word == 0x2044) { - return TRUE; - } - } else if (word >= 0x3000 && word <= 0x303F) { - if (word == 0x3001 || word == 0x3002 || word == 0x3003 || word == 0x3005 || - word == 0x3009 || word == 0x300A || word == 0x300B || word == 0x300C || - word == 0x300D || word == 0x300F || word == 0x300E || word == 0x3010 || - word == 0x3011 || word == 0x3014 || word == 0x3015 || word == 0x3016 || - word == 0x3017 || word == 0x3018 || word == 0x3019 || word == 0x301A || - word == 0x301B || word == 0x301D || word == 0x301E || word == 0x301F) { - return TRUE; - } - } else if (word >= 0xFE50 && word <= 0xFE6F) { - if ((word >= 0xFE50 && word <= 0xFE5E) || word == 0xFE63) { - return TRUE; - } - } else if (word >= 0xFF00 && word <= 0xFFEF) { - if (word == 0xFF01 || word == 0xFF02 || word == 0xFF07 || word == 0xFF08 || - word == 0xFF09 || word == 0xFF0C || word == 0xFF0E || word == 0xFF0F || - word == 0xFF1A || word == 0xFF1B || word == 0xFF1F || word == 0xFF3B || - word == 0xFF3D || word == 0xFF40 || word == 0xFF5B || word == 0xFF5C || - word == 0xFF5D || word == 0xFF61 || word == 0xFF62 || word == 0xFF63 || - word == 0xFF64 || word == 0xFF65 || word == 0xFF9E || word == 0xFF9F) { - return TRUE; - } - } - return FALSE; -} -static FX_BOOL IsConnectiveSymbol(FX_DWORD word) { - if (word <= 0x007F) { - if ((special_chars[word] >> 5) & 1) { - return TRUE; - } - } - return FALSE; -} -static FX_BOOL IsOpenStylePunctuation(FX_DWORD word) { - if (word <= 0x007F) { - if ((special_chars[word] >> 2) & 1) { - return TRUE; - } - } else if (word == 0x300A || word == 0x300C || word == 0x300E || - word == 0x3010 || word == 0x3014 || word == 0x3016 || - word == 0x3018 || word == 0x301A || word == 0xFF08 || - word == 0xFF3B || word == 0xFF5B || word == 0xFF62) { - return TRUE; - } - return FALSE; -} -static FX_BOOL IsCurrencySymbol(FX_WORD word) { - if (word == 0x0024 || word == 0x0080 || word == 0x00A2 || word == 0x00A3 || - word == 0x00A4 || word == 0x00A5 || (word >= 0x20A0 && word <= 0x20CF) || - word == 0xFE69 || word == 0xFF04 || word == 0xFFE0 || word == 0xFFE1 || - word == 0xFFE5 || word == 0xFFE6) { - return TRUE; - } - return FALSE; -} -static FX_BOOL IsPrefixSymbol(FX_WORD word) { - if (IsCurrencySymbol(word)) { - return TRUE; - } - if (word == 0x2116) { - return TRUE; - } - return FALSE; -} -static FX_BOOL IsSpace(FX_WORD word) { - return word == 0x0020 || word == 0x3000; -} -static FX_BOOL NeedDivision(FX_WORD prevWord, FX_WORD curWord) { - if ((IsLatin(prevWord) || IsDigit(prevWord)) && - (IsLatin(curWord) || IsDigit(curWord))) { - return FALSE; - } - if (IsSpace(curWord) || IsPunctuation(curWord)) { - return FALSE; - } - if (IsConnectiveSymbol(prevWord) || IsConnectiveSymbol(curWord)) { - return FALSE; - } - if (IsSpace(prevWord) || IsPunctuation(prevWord)) { - return TRUE; - } - if (IsPrefixSymbol(prevWord)) { - return FALSE; - } - if (IsPrefixSymbol(curWord) || IsCJK(curWord)) { - return TRUE; - } - if (IsCJK(prevWord)) { - return TRUE; - } - return FALSE; -} -void CTypeset::SplitLines(FX_BOOL bTypeset, FX_FLOAT fFontSize) { - ASSERT(m_pVT); - ASSERT(m_pSection); - int32_t nLineHead = 0; - int32_t nLineTail = 0; - FX_FLOAT fMaxX = 0.0f, fMaxY = 0.0f; - FX_FLOAT fLineWidth = 0.0f, fBackupLineWidth = 0.0f; - FX_FLOAT fLineAscent = 0.0f, fBackupLineAscent = 0.0f; - FX_FLOAT fLineDescent = 0.0f, fBackupLineDescent = 0.0f; - int32_t nWordStartPos = 0; - FX_BOOL bFullWord = FALSE; - int32_t nLineFullWordIndex = 0; - int32_t nCharIndex = 0; - CPVT_LineInfo line; - FX_FLOAT fWordWidth = 0; - FX_FLOAT fTypesetWidth = std::max( - m_pVT->GetPlateWidth() - m_pVT->GetLineIndent(m_pSection->m_SecInfo), - 0.0f); - int32_t nTotalWords = m_pSection->m_WordArray.GetSize(); - FX_BOOL bOpened = FALSE; - if (nTotalWords > 0) { - int32_t i = 0; - while (i < nTotalWords) { - CPVT_WordInfo* pWord = m_pSection->m_WordArray.GetAt(i); - CPVT_WordInfo* pOldWord = pWord; - if (i > 0) { - pOldWord = m_pSection->m_WordArray.GetAt(i - 1); - } - if (pWord) { - if (bTypeset) { - fLineAscent = - std::max(fLineAscent, m_pVT->GetWordAscent(*pWord, TRUE)); - fLineDescent = - std::min(fLineDescent, m_pVT->GetWordDescent(*pWord, TRUE)); - fWordWidth = m_pVT->GetWordWidth(*pWord); - } else { - fLineAscent = - std::max(fLineAscent, m_pVT->GetWordAscent(*pWord, fFontSize)); - fLineDescent = - std::min(fLineDescent, m_pVT->GetWordDescent(*pWord, fFontSize)); - fWordWidth = m_pVT->GetWordWidth( - pWord->nFontIndex, pWord->Word, m_pVT->m_wSubWord, - m_pVT->m_fCharSpace, m_pVT->m_nHorzScale, fFontSize, - pWord->fWordTail, 0); - } - if (!bOpened) { - if (IsOpenStylePunctuation(pWord->Word)) { - bOpened = TRUE; - bFullWord = TRUE; - } else if (pOldWord) { - if (NeedDivision(pOldWord->Word, pWord->Word)) { - bFullWord = TRUE; - } - } - } else { - if (!IsSpace(pWord->Word) && !IsOpenStylePunctuation(pWord->Word)) { - bOpened = FALSE; - } - } - if (bFullWord) { - bFullWord = FALSE; - if (nCharIndex > 0) { - nLineFullWordIndex++; - } - nWordStartPos = i; - fBackupLineWidth = fLineWidth; - fBackupLineAscent = fLineAscent; - fBackupLineDescent = fLineDescent; - } - nCharIndex++; - } - if (m_pVT->m_bLimitWidth && fTypesetWidth > 0 && - fLineWidth + fWordWidth > fTypesetWidth) { - if (nLineFullWordIndex > 0) { - i = nWordStartPos; - fLineWidth = fBackupLineWidth; - fLineAscent = fBackupLineAscent; - fLineDescent = fBackupLineDescent; - } - if (nCharIndex == 1) { - fLineWidth = fWordWidth; - i++; - } - nLineTail = i - 1; - if (bTypeset) { - line.nBeginWordIndex = nLineHead; - line.nEndWordIndex = nLineTail; - line.nTotalWord = nLineTail - nLineHead + 1; - line.fLineWidth = fLineWidth; - line.fLineAscent = fLineAscent; - line.fLineDescent = fLineDescent; - m_pSection->AddLine(line); - } - fMaxY += (fLineAscent + m_pVT->GetLineLeading(m_pSection->m_SecInfo)); - fMaxY += (-fLineDescent); - fMaxX = std::max(fLineWidth, fMaxX); - nLineHead = i; - fLineWidth = 0.0f; - fLineAscent = 0.0f; - fLineDescent = 0.0f; - nCharIndex = 0; - nLineFullWordIndex = 0; - bFullWord = FALSE; - } else { - fLineWidth += fWordWidth; - i++; - } - } - if (nLineHead <= nTotalWords - 1) { - nLineTail = nTotalWords - 1; - if (bTypeset) { - line.nBeginWordIndex = nLineHead; - line.nEndWordIndex = nLineTail; - line.nTotalWord = nLineTail - nLineHead + 1; - line.fLineWidth = fLineWidth; - line.fLineAscent = fLineAscent; - line.fLineDescent = fLineDescent; - m_pSection->AddLine(line); - } - fMaxY += (fLineAscent + m_pVT->GetLineLeading(m_pSection->m_SecInfo)); - fMaxY += (-fLineDescent); - fMaxX = std::max(fLineWidth, fMaxX); - } - } else { - if (bTypeset) { - fLineAscent = m_pVT->GetLineAscent(m_pSection->m_SecInfo); - fLineDescent = m_pVT->GetLineDescent(m_pSection->m_SecInfo); - } else { - fLineAscent = - m_pVT->GetFontAscent(m_pVT->GetDefaultFontIndex(), fFontSize); - fLineDescent = - m_pVT->GetFontDescent(m_pVT->GetDefaultFontIndex(), fFontSize); - } - if (bTypeset) { - line.nBeginWordIndex = -1; - line.nEndWordIndex = -1; - line.nTotalWord = 0; - line.fLineWidth = 0; - line.fLineAscent = fLineAscent; - line.fLineDescent = fLineDescent; - m_pSection->AddLine(line); - } - fMaxY += (m_pVT->GetLineLeading(m_pSection->m_SecInfo) + fLineAscent + - (-fLineDescent)); - } - m_rcRet = CPVT_FloatRect(0, 0, fMaxX, fMaxY); -} -void CTypeset::OutputLines() { - ASSERT(m_pVT); - ASSERT(m_pSection); - FX_FLOAT fMinX = 0.0f, fMinY = 0.0f, fMaxX = 0.0f, fMaxY = 0.0f; - FX_FLOAT fPosX = 0.0f, fPosY = 0.0f; - FX_FLOAT fLineIndent = m_pVT->GetLineIndent(m_pSection->m_SecInfo); - FX_FLOAT fTypesetWidth = std::max(m_pVT->GetPlateWidth() - fLineIndent, 0.0f); - switch (m_pVT->GetAlignment(m_pSection->m_SecInfo)) { - default: - case 0: - fMinX = 0.0f; - break; - case 1: - fMinX = (fTypesetWidth - m_rcRet.Width()) * PVT_HALF; - break; - case 2: - fMinX = fTypesetWidth - m_rcRet.Width(); - break; - } - fMaxX = fMinX + m_rcRet.Width(); - fMinY = 0.0f; - fMaxY = m_rcRet.Height(); - int32_t nTotalLines = m_pSection->m_LineArray.GetSize(); - if (nTotalLines > 0) { - m_pSection->m_SecInfo.nTotalLine = nTotalLines; - for (int32_t l = 0; l < nTotalLines; l++) { - if (CLine* pLine = m_pSection->m_LineArray.GetAt(l)) { - switch (m_pVT->GetAlignment(m_pSection->m_SecInfo)) { - default: - case 0: - fPosX = 0; - break; - case 1: - fPosX = (fTypesetWidth - pLine->m_LineInfo.fLineWidth) * PVT_HALF; - break; - case 2: - fPosX = fTypesetWidth - pLine->m_LineInfo.fLineWidth; - break; - } - fPosX += fLineIndent; - fPosY += m_pVT->GetLineLeading(m_pSection->m_SecInfo); - fPosY += pLine->m_LineInfo.fLineAscent; - pLine->m_LineInfo.fLineX = fPosX - fMinX; - pLine->m_LineInfo.fLineY = fPosY - fMinY; - for (int32_t w = pLine->m_LineInfo.nBeginWordIndex; - w <= pLine->m_LineInfo.nEndWordIndex; w++) { - if (CPVT_WordInfo* pWord = m_pSection->m_WordArray.GetAt(w)) { - pWord->fWordX = fPosX - fMinX; - if (pWord->pWordProps) { - switch (pWord->pWordProps->nScriptType) { - default: - case PVTWORD_SCRIPT_NORMAL: - pWord->fWordY = fPosY - fMinY; - break; - case PVTWORD_SCRIPT_SUPER: - pWord->fWordY = fPosY - m_pVT->GetWordAscent(*pWord) - fMinY; - break; - case PVTWORD_SCRIPT_SUB: - pWord->fWordY = fPosY - m_pVT->GetWordDescent(*pWord) - fMinY; - break; - } - } else { - pWord->fWordY = fPosY - fMinY; - } - fPosX += m_pVT->GetWordWidth(*pWord); - } - } - fPosY += (-pLine->m_LineInfo.fLineDescent); - } - } - } - m_rcRet = CPVT_FloatRect(fMinX, fMinY, fMaxX, fMaxY); -} -CPDF_VariableText::CPDF_VariableText() - : m_nLimitChar(0), - m_nCharArray(0), - m_bMultiLine(FALSE), - m_bLimitWidth(FALSE), - m_bAutoFontSize(FALSE), - m_nAlignment(0), - m_fLineLeading(0.0f), - m_fCharSpace(0.0f), - m_nHorzScale(100), - m_wSubWord(0), - m_fFontSize(0.0f), - m_bInitial(FALSE), - m_bRichText(FALSE), - m_pVTProvider(NULL), - m_pVTIterator(NULL) {} -CPDF_VariableText::~CPDF_VariableText() { - delete m_pVTIterator; - m_pVTIterator = NULL; - ResetAll(); -} -void CPDF_VariableText::Initialize() { - if (!m_bInitial) { - CPVT_SectionInfo secinfo; - if (m_bRichText) { - secinfo.pSecProps = new CPVT_SecProps(0.0f, 0.0f, 0); - secinfo.pWordProps = new CPVT_WordProps(GetDefaultFontIndex(), - PVT_DEFAULT_FONTSIZE, 0, 0, 0); - } - CPVT_WordPlace place; - place.nSecIndex = 0; - AddSection(place, secinfo); - CPVT_LineInfo lineinfo; - lineinfo.fLineAscent = GetFontAscent(GetDefaultFontIndex(), GetFontSize()); - lineinfo.fLineDescent = - GetFontDescent(GetDefaultFontIndex(), GetFontSize()); - AddLine(place, lineinfo); - if (CSection* pSection = m_SectionArray.GetAt(0)) { - pSection->ResetLinePlace(); - } - m_bInitial = TRUE; - } -} -void CPDF_VariableText::ResetAll() { - m_bInitial = FALSE; - ResetSectionArray(); -} -CPVT_WordPlace CPDF_VariableText::InsertWord(const CPVT_WordPlace& place, - FX_WORD word, - int32_t charset, - const CPVT_WordProps* pWordProps) { - int32_t nTotlaWords = GetTotalWords(); - if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) { - return place; - } - if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) { - return place; - } - CPVT_WordPlace newplace = place; - newplace.nWordIndex++; - if (m_bRichText) { - CPVT_WordProps* pNewProps = - pWordProps ? new CPVT_WordProps(*pWordProps) : new CPVT_WordProps(); - pNewProps->nFontIndex = - GetWordFontIndex(word, charset, pWordProps->nFontIndex); - return AddWord(newplace, CPVT_WordInfo(word, charset, -1, pNewProps)); - } - int32_t nFontIndex = - GetSubWord() > 0 ? GetDefaultFontIndex() - : GetWordFontIndex(word, charset, GetDefaultFontIndex()); - return AddWord(newplace, CPVT_WordInfo(word, charset, nFontIndex, NULL)); -} -CPVT_WordPlace CPDF_VariableText::InsertSection( - const CPVT_WordPlace& place, - const CPVT_SecProps* pSecProps, - const CPVT_WordProps* pWordProps) { - int32_t nTotlaWords = GetTotalWords(); - if (m_nLimitChar > 0 && nTotlaWords >= m_nLimitChar) { - return place; - } - if (m_nCharArray > 0 && nTotlaWords >= m_nCharArray) { - return place; - } - if (!m_bMultiLine) { - return place; - } - CPVT_WordPlace wordplace = place; - UpdateWordPlace(wordplace); - CPVT_WordPlace newplace = place; - if (CSection* pSection = m_SectionArray.GetAt(wordplace.nSecIndex)) { - CPVT_WordPlace NewPlace(wordplace.nSecIndex + 1, 0, -1); - CPVT_SectionInfo secinfo; - if (m_bRichText) { - if (pSecProps) { - secinfo.pSecProps = new CPVT_SecProps(*pSecProps); - } - if (pWordProps) { - secinfo.pWordProps = new CPVT_WordProps(*pWordProps); - } - } - AddSection(NewPlace, secinfo); - newplace = NewPlace; - if (CSection* pNewSection = m_SectionArray.GetAt(NewPlace.nSecIndex)) { - for (int32_t w = wordplace.nWordIndex + 1, - sz = pSection->m_WordArray.GetSize(); - w < sz; w++) { - if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(w)) { - NewPlace.nWordIndex++; - pNewSection->AddWord(NewPlace, *pWord); - } - } - } - ClearSectionRightWords(wordplace); - } - return newplace; -} -CPVT_WordPlace CPDF_VariableText::InsertText(const CPVT_WordPlace& place, - const FX_WCHAR* text, - int32_t charset, - const CPVT_SecProps* pSecProps, - const CPVT_WordProps* pProps) { - CFX_WideString swText = text; - CPVT_WordPlace wp = place; - for (int32_t i = 0, sz = swText.GetLength(); i < sz; i++) { - CPVT_WordPlace oldwp = wp; - FX_WORD word = swText.GetAt(i); - switch (word) { - case 0x0D: - if (m_bMultiLine) { - if (swText.GetAt(i + 1) == 0x0A) { - i += 1; - } - wp = InsertSection(wp, pSecProps, pProps); - } - break; - case 0x0A: - if (m_bMultiLine) { - if (swText.GetAt(i + 1) == 0x0D) { - i += 1; - } - wp = InsertSection(wp, pSecProps, pProps); - } - break; - case 0x09: - word = 0x20; - default: - wp = InsertWord(wp, word, charset, pProps); - break; - } - if (wp == oldwp) { - break; - } - } - return wp; -} -CPVT_WordPlace CPDF_VariableText::DeleteWords( - const CPVT_WordRange& PlaceRange) { - FX_BOOL bLastSecPos = FALSE; - if (CSection* pSection = m_SectionArray.GetAt(PlaceRange.EndPos.nSecIndex)) { - bLastSecPos = (PlaceRange.EndPos == pSection->GetEndWordPlace()); - } - ClearWords(PlaceRange); - if (PlaceRange.BeginPos.nSecIndex != PlaceRange.EndPos.nSecIndex) { - ClearEmptySections(PlaceRange); - if (!bLastSecPos) { - LinkLatterSection(PlaceRange.BeginPos); - } - } - return PlaceRange.BeginPos; -} -CPVT_WordPlace CPDF_VariableText::DeleteWord(const CPVT_WordPlace& place) { - return ClearRightWord(AdjustLineHeader(place, TRUE)); -} -CPVT_WordPlace CPDF_VariableText::BackSpaceWord(const CPVT_WordPlace& place) { - return ClearLeftWord(AdjustLineHeader(place, TRUE)); -} -void CPDF_VariableText::SetText(const FX_WCHAR* text, - int32_t charset, - const CPVT_SecProps* pSecProps, - const CPVT_WordProps* pWordProps) { - DeleteWords(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); - CFX_WideString swText = text; - CPVT_WordPlace wp(0, 0, -1); - CPVT_SectionInfo secinfo; - if (m_bRichText) { - if (pSecProps) { - secinfo.pSecProps = new CPVT_SecProps(*pSecProps); - } - if (pWordProps) { - secinfo.pWordProps = new CPVT_WordProps(*pWordProps); - } - } - if (CSection* pSection = m_SectionArray.GetAt(0)) { - pSection->m_SecInfo = secinfo; - } - int32_t nCharCount = 0; - for (int32_t i = 0, sz = swText.GetLength(); i < sz; i++) { - if (m_nLimitChar > 0 && nCharCount >= m_nLimitChar) { - break; - } - if (m_nCharArray > 0 && nCharCount >= m_nCharArray) { - break; - } - FX_WORD word = swText.GetAt(i); - switch (word) { - case 0x0D: - if (m_bMultiLine) { - if (swText.GetAt(i + 1) == 0x0A) { - i += 1; - } - wp.nSecIndex++; - wp.nLineIndex = 0; - wp.nWordIndex = -1; - AddSection(wp, secinfo); - } - break; - case 0x0A: - if (m_bMultiLine) { - if (swText.GetAt(i + 1) == 0x0D) { - i += 1; - } - wp.nSecIndex++; - wp.nLineIndex = 0; - wp.nWordIndex = -1; - AddSection(wp, secinfo); - } - break; - case 0x09: - word = 0x20; - default: - wp = InsertWord(wp, word, charset, pWordProps); - break; - } - nCharCount++; - } -} -void CPDF_VariableText::UpdateWordPlace(CPVT_WordPlace& place) const { - if (place.nSecIndex < 0) { - place = GetBeginWordPlace(); - } - if (place.nSecIndex >= m_SectionArray.GetSize()) { - place = GetEndWordPlace(); - } - place = AdjustLineHeader(place, TRUE); - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - pSection->UpdateWordPlace(place); - } -} -int32_t CPDF_VariableText::WordPlaceToWordIndex( - const CPVT_WordPlace& place) const { - CPVT_WordPlace newplace = place; - UpdateWordPlace(newplace); - int32_t nIndex = 0; - int32_t i = 0; - int32_t sz = 0; - for (i = 0, sz = m_SectionArray.GetSize(); i < sz && i < newplace.nSecIndex; - i++) { - if (CSection* pSection = m_SectionArray.GetAt(i)) { - nIndex += pSection->m_WordArray.GetSize(); - if (i != m_SectionArray.GetSize() - 1) { - nIndex += PVT_RETURN_LENGTH; - } - } - } - if (i >= 0 && i < m_SectionArray.GetSize()) { - nIndex += newplace.nWordIndex + PVT_RETURN_LENGTH; - } - return nIndex; -} -CPVT_WordPlace CPDF_VariableText::WordIndexToWordPlace(int32_t index) const { - CPVT_WordPlace place = GetBeginWordPlace(); - int32_t nOldIndex = 0, nIndex = 0; - FX_BOOL bFind = FALSE; - for (int32_t i = 0, sz = m_SectionArray.GetSize(); i < sz; i++) { - if (CSection* pSection = m_SectionArray.GetAt(i)) { - nIndex += pSection->m_WordArray.GetSize(); - if (nIndex == index) { - place = pSection->GetEndWordPlace(); - bFind = TRUE; - break; - } else if (nIndex > index) { - place.nSecIndex = i; - place.nWordIndex = index - nOldIndex - 1; - pSection->UpdateWordPlace(place); - bFind = TRUE; - break; - } - if (i != m_SectionArray.GetSize() - 1) { - nIndex += PVT_RETURN_LENGTH; - } - nOldIndex = nIndex; - } - } - if (!bFind) { - place = GetEndWordPlace(); - } - return place; -} -CPVT_WordPlace CPDF_VariableText::GetBeginWordPlace() const { - return m_bInitial ? CPVT_WordPlace(0, 0, -1) : CPVT_WordPlace(); -} -CPVT_WordPlace CPDF_VariableText::GetEndWordPlace() const { - if (CSection* pSection = m_SectionArray.GetAt(m_SectionArray.GetSize() - 1)) { - return pSection->GetEndWordPlace(); - } - return CPVT_WordPlace(); -} -CPVT_WordPlace CPDF_VariableText::GetPrevWordPlace( - const CPVT_WordPlace& place) const { - if (place.nSecIndex < 0) { - return GetBeginWordPlace(); - } - if (place.nSecIndex >= m_SectionArray.GetSize()) { - return GetEndWordPlace(); - } - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - if (place.WordCmp(pSection->GetBeginWordPlace()) <= 0) { - if (CSection* pPrevSection = m_SectionArray.GetAt(place.nSecIndex - 1)) { - return pPrevSection->GetEndWordPlace(); - } - return GetBeginWordPlace(); - } - return pSection->GetPrevWordPlace(place); - } - return place; -} -CPVT_WordPlace CPDF_VariableText::GetNextWordPlace( - const CPVT_WordPlace& place) const { - if (place.nSecIndex < 0) { - return GetBeginWordPlace(); - } - if (place.nSecIndex >= m_SectionArray.GetSize()) { - return GetEndWordPlace(); - } - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - if (place.WordCmp(pSection->GetEndWordPlace()) >= 0) { - if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { - return pNextSection->GetBeginWordPlace(); - } - return GetEndWordPlace(); - } - return pSection->GetNextWordPlace(place); - } - return place; -} -CPVT_WordPlace CPDF_VariableText::SearchWordPlace( - const CFX_FloatPoint& point) const { - CFX_FloatPoint pt = OutToIn(point); - CPVT_WordPlace place = GetBeginWordPlace(); - int32_t nLeft = 0; - int32_t nRight = m_SectionArray.GetSize() - 1; - int32_t nMid = m_SectionArray.GetSize() / 2; - FX_BOOL bUp = TRUE; - FX_BOOL bDown = TRUE; - while (nLeft <= nRight) { - if (CSection* pSection = m_SectionArray.GetAt(nMid)) { - if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.top)) { - bUp = FALSE; - } - if (IsFloatBigger(pSection->m_SecInfo.rcSection.bottom, pt.y)) { - bDown = FALSE; - } - if (IsFloatSmaller(pt.y, pSection->m_SecInfo.rcSection.top)) { - nRight = nMid - 1; - nMid = (nLeft + nRight) / 2; - continue; - } else if (IsFloatBigger(pt.y, pSection->m_SecInfo.rcSection.bottom)) { - nLeft = nMid + 1; - nMid = (nLeft + nRight) / 2; - continue; - } else { - place = pSection->SearchWordPlace( - CFX_FloatPoint(pt.x - pSection->m_SecInfo.rcSection.left, - pt.y - pSection->m_SecInfo.rcSection.top)); - place.nSecIndex = nMid; - return place; - } - } else { - break; - } - } - if (bUp) { - place = GetBeginWordPlace(); - } - if (bDown) { - place = GetEndWordPlace(); - } - return place; -} -CPVT_WordPlace CPDF_VariableText::GetUpWordPlace( - const CPVT_WordPlace& place, - const CFX_FloatPoint& point) const { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - CPVT_WordPlace temp = place; - CFX_FloatPoint pt = OutToIn(point); - if (temp.nLineIndex-- > 0) { - return pSection->SearchWordPlace( - pt.x - pSection->m_SecInfo.rcSection.left, temp); - } - if (temp.nSecIndex-- > 0) { - if (CSection* pLastSection = m_SectionArray.GetAt(temp.nSecIndex)) { - temp.nLineIndex = pLastSection->m_LineArray.GetSize() - 1; - return pLastSection->SearchWordPlace( - pt.x - pLastSection->m_SecInfo.rcSection.left, temp); - } - } - } - return place; -} -CPVT_WordPlace CPDF_VariableText::GetDownWordPlace( - const CPVT_WordPlace& place, - const CFX_FloatPoint& point) const { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - CPVT_WordPlace temp = place; - CFX_FloatPoint pt = OutToIn(point); - if (temp.nLineIndex++ < pSection->m_LineArray.GetSize() - 1) { - return pSection->SearchWordPlace( - pt.x - pSection->m_SecInfo.rcSection.left, temp); - } - if (temp.nSecIndex++ < m_SectionArray.GetSize() - 1) { - if (CSection* pNextSection = m_SectionArray.GetAt(temp.nSecIndex)) { - temp.nLineIndex = 0; - return pNextSection->SearchWordPlace( - pt.x - pSection->m_SecInfo.rcSection.left, temp); - } - } - } - return place; -} -CPVT_WordPlace CPDF_VariableText::GetLineBeginPlace( - const CPVT_WordPlace& place) const { - return CPVT_WordPlace(place.nSecIndex, place.nLineIndex, -1); -} -CPVT_WordPlace CPDF_VariableText::GetLineEndPlace( - const CPVT_WordPlace& place) const { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - if (CLine* pLine = pSection->m_LineArray.GetAt(place.nLineIndex)) - return pLine->GetEndWordPlace(); - } - return place; -} -CPVT_WordPlace CPDF_VariableText::GetSectionBeginPlace( - const CPVT_WordPlace& place) const { - return CPVT_WordPlace(place.nSecIndex, 0, -1); -} -CPVT_WordPlace CPDF_VariableText::GetSectionEndPlace( - const CPVT_WordPlace& place) const { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - return pSection->GetEndWordPlace(); - } - return place; -} -int32_t CPDF_VariableText::GetTotalWords() const { - int32_t nTotal = 0; - for (int32_t i = 0, sz = m_SectionArray.GetSize(); i < sz; i++) - if (CSection* pSection = m_SectionArray.GetAt(i)) { - nTotal += (pSection->m_WordArray.GetSize() + PVT_RETURN_LENGTH); - } - return nTotal - PVT_RETURN_LENGTH; -} -void CPDF_VariableText::ResetSectionArray() { - for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { - delete m_SectionArray.GetAt(s); - } - m_SectionArray.RemoveAll(); -} -CPVT_WordPlace CPDF_VariableText::AddSection(const CPVT_WordPlace& place, - const CPVT_SectionInfo& secinfo) { - if (IsValid() && !m_bMultiLine) { - return place; - } - int32_t nSecIndex = - std::max(std::min(place.nSecIndex, m_SectionArray.GetSize()), 0); - CSection* pSection = new CSection(this); - pSection->m_SecInfo = secinfo; - pSection->SecPlace.nSecIndex = nSecIndex; - if (nSecIndex == m_SectionArray.GetSize()) { - m_SectionArray.Add(pSection); - } else { - m_SectionArray.InsertAt(nSecIndex, pSection); - } - return place; -} -CPVT_WordPlace CPDF_VariableText::AddLine(const CPVT_WordPlace& place, - const CPVT_LineInfo& lineinfo) { - if (m_SectionArray.IsEmpty()) { - return place; - } - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - return pSection->AddLine(lineinfo); - } - return place; -} -CPVT_WordPlace CPDF_VariableText::AddWord(const CPVT_WordPlace& place, - const CPVT_WordInfo& wordinfo) { - if (m_SectionArray.GetSize() <= 0) { - return place; - } - CPVT_WordPlace newplace = place; - newplace.nSecIndex = - std::max(std::min(newplace.nSecIndex, m_SectionArray.GetSize() - 1), 0); - if (CSection* pSection = m_SectionArray.GetAt(newplace.nSecIndex)) { - return pSection->AddWord(newplace, wordinfo); - } - return place; -} -FX_BOOL CPDF_VariableText::GetWordInfo(const CPVT_WordPlace& place, - CPVT_WordInfo& wordinfo) { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(place.nWordIndex)) { - wordinfo = *pWord; - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText::SetWordInfo(const CPVT_WordPlace& place, - const CPVT_WordInfo& wordinfo) { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - if (CPVT_WordInfo* pWord = pSection->m_WordArray.GetAt(place.nWordIndex)) { - *pWord = wordinfo; - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText::GetLineInfo(const CPVT_WordPlace& place, - CPVT_LineInfo& lineinfo) { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - if (CLine* pLine = pSection->m_LineArray.GetAt(place.nLineIndex)) { - lineinfo = pLine->m_LineInfo; - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText::GetSectionInfo(const CPVT_WordPlace& place, - CPVT_SectionInfo& secinfo) { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - secinfo = pSection->m_SecInfo; - return TRUE; - } - return FALSE; -} -CFX_FloatRect CPDF_VariableText::GetContentRect() const { - return InToOut(CPVT_FloatRect(CPDF_EditContainer::GetContentRect())); -} -FX_FLOAT CPDF_VariableText::GetWordFontSize(const CPVT_WordInfo& WordInfo, - FX_BOOL bFactFontSize) { - return m_bRichText && WordInfo.pWordProps - ? (WordInfo.pWordProps->nScriptType == PVTWORD_SCRIPT_NORMAL || - bFactFontSize - ? WordInfo.pWordProps->fFontSize - : WordInfo.pWordProps->fFontSize * PVT_HALF) - : GetFontSize(); -} -int32_t CPDF_VariableText::GetWordFontIndex(const CPVT_WordInfo& WordInfo) { - return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nFontIndex - : WordInfo.nFontIndex; -} -FX_FLOAT CPDF_VariableText::GetWordWidth(int32_t nFontIndex, - FX_WORD Word, - FX_WORD SubWord, - FX_FLOAT fCharSpace, - int32_t nHorzScale, - FX_FLOAT fFontSize, - FX_FLOAT fWordTail, - int32_t nWordStyle) { - return (GetCharWidth(nFontIndex, Word, SubWord, nWordStyle) * fFontSize * - PVT_FONTSCALE + - fCharSpace) * - nHorzScale * PVT_PERCENT + - fWordTail; -} -FX_FLOAT CPDF_VariableText::GetWordWidth(const CPVT_WordInfo& WordInfo) { - return GetWordWidth( - GetWordFontIndex(WordInfo), WordInfo.Word, GetSubWord(), - GetCharSpace(WordInfo), GetHorzScale(WordInfo), GetWordFontSize(WordInfo), - WordInfo.fWordTail, - WordInfo.pWordProps ? WordInfo.pWordProps->nWordStyle : 0); -} -FX_FLOAT CPDF_VariableText::GetLineAscent(const CPVT_SectionInfo& SecInfo) { - return m_bRichText && SecInfo.pWordProps - ? GetFontAscent(SecInfo.pWordProps->nFontIndex, - SecInfo.pWordProps->fFontSize) - : GetFontAscent(GetDefaultFontIndex(), GetFontSize()); -} -FX_FLOAT CPDF_VariableText::GetLineDescent(const CPVT_SectionInfo& SecInfo) { - return m_bRichText && SecInfo.pWordProps - ? GetFontDescent(SecInfo.pWordProps->nFontIndex, - SecInfo.pWordProps->fFontSize) - : GetFontDescent(GetDefaultFontIndex(), GetFontSize()); -} -FX_FLOAT CPDF_VariableText::GetFontAscent(int32_t nFontIndex, - FX_FLOAT fFontSize) { - return (FX_FLOAT)GetTypeAscent(nFontIndex) * fFontSize * PVT_FONTSCALE; -} -FX_FLOAT CPDF_VariableText::GetFontDescent(int32_t nFontIndex, - FX_FLOAT fFontSize) { - return (FX_FLOAT)GetTypeDescent(nFontIndex) * fFontSize * PVT_FONTSCALE; -} -FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo& WordInfo, - FX_FLOAT fFontSize) { - return GetFontAscent(GetWordFontIndex(WordInfo), fFontSize); -} -FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo& WordInfo, - FX_FLOAT fFontSize) { - return GetFontDescent(GetWordFontIndex(WordInfo), fFontSize); -} -FX_FLOAT CPDF_VariableText::GetWordAscent(const CPVT_WordInfo& WordInfo, - FX_BOOL bFactFontSize) { - return GetFontAscent(GetWordFontIndex(WordInfo), - GetWordFontSize(WordInfo, bFactFontSize)); -} -FX_FLOAT CPDF_VariableText::GetWordDescent(const CPVT_WordInfo& WordInfo, - FX_BOOL bFactFontSize) { - return GetFontDescent(GetWordFontIndex(WordInfo), - GetWordFontSize(WordInfo, bFactFontSize)); -} -FX_FLOAT CPDF_VariableText::GetLineLeading(const CPVT_SectionInfo& SecInfo) { - return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineLeading - : m_fLineLeading; -} -FX_FLOAT CPDF_VariableText::GetLineIndent(const CPVT_SectionInfo& SecInfo) { - return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->fLineIndent - : 0.0f; -} -int32_t CPDF_VariableText::GetAlignment(const CPVT_SectionInfo& SecInfo) { - return m_bRichText && SecInfo.pSecProps ? SecInfo.pSecProps->nAlignment - : m_nAlignment; -} -FX_FLOAT CPDF_VariableText::GetCharSpace(const CPVT_WordInfo& WordInfo) { - return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->fCharSpace - : m_fCharSpace; -} -int32_t CPDF_VariableText::GetHorzScale(const CPVT_WordInfo& WordInfo) { - return m_bRichText && WordInfo.pWordProps ? WordInfo.pWordProps->nHorzScale - : m_nHorzScale; -} -void CPDF_VariableText::ClearSectionRightWords(const CPVT_WordPlace& place) { - CPVT_WordPlace wordplace = AdjustLineHeader(place, TRUE); - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - for (int32_t w = pSection->m_WordArray.GetSize() - 1; - w > wordplace.nWordIndex; w--) { - delete pSection->m_WordArray.GetAt(w); - pSection->m_WordArray.RemoveAt(w); - } - } -} -CPVT_WordPlace CPDF_VariableText::AdjustLineHeader(const CPVT_WordPlace& place, - FX_BOOL bPrevOrNext) const { - if (place.nWordIndex < 0 && place.nLineIndex > 0) { - return bPrevOrNext ? GetPrevWordPlace(place) : GetNextWordPlace(place); - } - return place; -} -FX_BOOL CPDF_VariableText::ClearEmptySection(const CPVT_WordPlace& place) { - if (place.nSecIndex == 0 && m_SectionArray.GetSize() == 1) { - return FALSE; - } - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - if (pSection->m_WordArray.GetSize() == 0) { - delete pSection; - m_SectionArray.RemoveAt(place.nSecIndex); - return TRUE; - } - } - return FALSE; -} -void CPDF_VariableText::ClearEmptySections(const CPVT_WordRange& PlaceRange) { - CPVT_WordPlace wordplace; - for (int32_t s = PlaceRange.EndPos.nSecIndex; - s > PlaceRange.BeginPos.nSecIndex; s--) { - wordplace.nSecIndex = s; - ClearEmptySection(wordplace); - } -} -void CPDF_VariableText::LinkLatterSection(const CPVT_WordPlace& place) { - CPVT_WordPlace oldplace = AdjustLineHeader(place, TRUE); - if (CSection* pNextSection = m_SectionArray.GetAt(place.nSecIndex + 1)) { - if (CSection* pSection = m_SectionArray.GetAt(oldplace.nSecIndex)) { - for (int32_t w = 0, sz = pNextSection->m_WordArray.GetSize(); w < sz; - w++) { - if (CPVT_WordInfo* pWord = pNextSection->m_WordArray.GetAt(w)) { - oldplace.nWordIndex++; - pSection->AddWord(oldplace, *pWord); - } - } - } - delete pNextSection; - m_SectionArray.RemoveAt(place.nSecIndex + 1); - } -} -void CPDF_VariableText::ClearWords(const CPVT_WordRange& PlaceRange) { - CPVT_WordRange NewRange; - NewRange.BeginPos = AdjustLineHeader(PlaceRange.BeginPos, TRUE); - NewRange.EndPos = AdjustLineHeader(PlaceRange.EndPos, TRUE); - for (int32_t s = NewRange.EndPos.nSecIndex; s >= NewRange.BeginPos.nSecIndex; - s--) { - if (CSection* pSection = m_SectionArray.GetAt(s)) { - pSection->ClearWords(NewRange); - } - } -} -CPVT_WordPlace CPDF_VariableText::ClearLeftWord(const CPVT_WordPlace& place) { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - CPVT_WordPlace leftplace = GetPrevWordPlace(place); - if (leftplace != place) { - if (leftplace.nSecIndex != place.nSecIndex) { - if (pSection->m_WordArray.GetSize() == 0) { - ClearEmptySection(place); - } else { - LinkLatterSection(leftplace); - } - } else { - pSection->ClearWord(place); - } - } - return leftplace; - } - return place; -} -CPVT_WordPlace CPDF_VariableText::ClearRightWord(const CPVT_WordPlace& place) { - if (CSection* pSection = m_SectionArray.GetAt(place.nSecIndex)) { - CPVT_WordPlace rightplace = - AdjustLineHeader(GetNextWordPlace(place), FALSE); - if (rightplace != place) { - if (rightplace.nSecIndex != place.nSecIndex) { - LinkLatterSection(place); - } else { - pSection->ClearWord(rightplace); - } - } - } - return place; -} -void CPDF_VariableText::RearrangeAll() { - Rearrange(CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); -} -void CPDF_VariableText::RearrangePart(const CPVT_WordRange& PlaceRange) { - Rearrange(PlaceRange); -} -CPVT_FloatRect CPDF_VariableText::Rearrange(const CPVT_WordRange& PlaceRange) { - CPVT_FloatRect rcRet; - if (IsValid()) { - if (m_bAutoFontSize) { - SetFontSize(GetAutoFontSize()); - rcRet = RearrangeSections( - CPVT_WordRange(GetBeginWordPlace(), GetEndWordPlace())); - } else { - rcRet = RearrangeSections(PlaceRange); - } - } - SetContentRect(rcRet); - return rcRet; -} -FX_FLOAT CPDF_VariableText::GetAutoFontSize() { - int32_t nTotal = sizeof(gFontSizeSteps) / sizeof(uint8_t); - if (IsMultiLine()) { - nTotal /= 4; - } - if (nTotal <= 0) { - return 0; - } - if (GetPlateWidth() <= 0) { - return 0; - } - int32_t nLeft = 0; - int32_t nRight = nTotal - 1; - int32_t nMid = nTotal / 2; - while (nLeft <= nRight) { - if (IsBigger(gFontSizeSteps[nMid])) { - nRight = nMid - 1; - nMid = (nLeft + nRight) / 2; - continue; - } else { - nLeft = nMid + 1; - nMid = (nLeft + nRight) / 2; - continue; - } - } - return (FX_FLOAT)gFontSizeSteps[nMid]; -} -FX_BOOL CPDF_VariableText::IsBigger(FX_FLOAT fFontSize) { - FX_BOOL bBigger = FALSE; - CPVT_Size szTotal; - for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { - if (CSection* pSection = m_SectionArray.GetAt(s)) { - CPVT_Size size = pSection->GetSectionSize(fFontSize); - szTotal.x = std::max(size.x, szTotal.x); - szTotal.y += size.y; - if (IsFloatBigger(szTotal.x, GetPlateWidth()) || - IsFloatBigger(szTotal.y, GetPlateHeight())) { - bBigger = TRUE; - break; - } - } - } - return bBigger; -} -CPVT_FloatRect CPDF_VariableText::RearrangeSections( - const CPVT_WordRange& PlaceRange) { - CPVT_WordPlace place; - FX_FLOAT fPosY = 0; - FX_FLOAT fOldHeight; - int32_t nSSecIndex = PlaceRange.BeginPos.nSecIndex; - int32_t nESecIndex = PlaceRange.EndPos.nSecIndex; - CPVT_FloatRect rcRet; - for (int32_t s = 0, sz = m_SectionArray.GetSize(); s < sz; s++) { - place.nSecIndex = s; - if (CSection* pSection = m_SectionArray.GetAt(s)) { - pSection->SecPlace = place; - CPVT_FloatRect rcSec = pSection->m_SecInfo.rcSection; - if (s >= nSSecIndex) { - if (s <= nESecIndex) { - rcSec = pSection->Rearrange(); - rcSec.top += fPosY; - rcSec.bottom += fPosY; - } else { - fOldHeight = pSection->m_SecInfo.rcSection.bottom - - pSection->m_SecInfo.rcSection.top; - rcSec.top = fPosY; - rcSec.bottom = fPosY + fOldHeight; - } - pSection->m_SecInfo.rcSection = rcSec; - pSection->ResetLinePlace(); - } - if (s == 0) { - rcRet = rcSec; - } else { - rcRet.left = std::min(rcSec.left, rcRet.left); - rcRet.top = std::min(rcSec.top, rcRet.top); - rcRet.right = std::max(rcSec.right, rcRet.right); - rcRet.bottom = std::max(rcSec.bottom, rcRet.bottom); - } - fPosY += rcSec.Height(); - } - } - return rcRet; -} -int32_t CPDF_VariableText::GetCharWidth(int32_t nFontIndex, - FX_WORD Word, - FX_WORD SubWord, - int32_t nWordStyle) { - if (!m_pVTProvider) { - return 0; - } - if (SubWord > 0) { - return m_pVTProvider->GetCharWidth(nFontIndex, SubWord, nWordStyle); - } - return m_pVTProvider->GetCharWidth(nFontIndex, Word, nWordStyle); -} -int32_t CPDF_VariableText::GetTypeAscent(int32_t nFontIndex) { - return m_pVTProvider ? m_pVTProvider->GetTypeAscent(nFontIndex) : 0; -} -int32_t CPDF_VariableText::GetTypeDescent(int32_t nFontIndex) { - return m_pVTProvider ? m_pVTProvider->GetTypeDescent(nFontIndex) : 0; -} -int32_t CPDF_VariableText::GetWordFontIndex(FX_WORD word, - int32_t charset, - int32_t nFontIndex) { - return m_pVTProvider - ? m_pVTProvider->GetWordFontIndex(word, charset, nFontIndex) - : -1; -} -int32_t CPDF_VariableText::GetDefaultFontIndex() { - return m_pVTProvider ? m_pVTProvider->GetDefaultFontIndex() : -1; -} -FX_BOOL CPDF_VariableText::IsLatinWord(FX_WORD word) { - return m_pVTProvider ? m_pVTProvider->IsLatinWord(word) : FALSE; -} -IPDF_VariableText_Iterator* CPDF_VariableText::GetIterator() { - if (!m_pVTIterator) { - m_pVTIterator = new CPDF_VariableText_Iterator(this); - } - return m_pVTIterator; -} -IPDF_VariableText_Provider* CPDF_VariableText::SetProvider( - IPDF_VariableText_Provider* pProvider) { - IPDF_VariableText_Provider* pOld = m_pVTProvider; - m_pVTProvider = pProvider; - return pOld; -} -CPDF_VariableText_Iterator::CPDF_VariableText_Iterator(CPDF_VariableText* pVT) - : m_CurPos(-1, -1, -1), m_pVT(pVT) {} -CPDF_VariableText_Iterator::~CPDF_VariableText_Iterator() {} -void CPDF_VariableText_Iterator::SetAt(int32_t nWordIndex) { - m_CurPos = m_pVT->WordIndexToWordPlace(nWordIndex); -} -void CPDF_VariableText_Iterator::SetAt(const CPVT_WordPlace& place) { - ASSERT(m_pVT); - m_CurPos = place; -} -FX_BOOL CPDF_VariableText_Iterator::NextWord() { - if (m_CurPos == m_pVT->GetEndWordPlace()) { - return FALSE; - } - m_CurPos = m_pVT->GetNextWordPlace(m_CurPos); - return TRUE; -} -FX_BOOL CPDF_VariableText_Iterator::PrevWord() { - if (m_CurPos == m_pVT->GetBeginWordPlace()) { - return FALSE; - } - m_CurPos = m_pVT->GetPrevWordPlace(m_CurPos); - return TRUE; -} -FX_BOOL CPDF_VariableText_Iterator::NextLine() { - if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { - if (m_CurPos.nLineIndex < pSection->m_LineArray.GetSize() - 1) { - m_CurPos = - CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex + 1, -1); - return TRUE; - } - if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { - m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::PrevLine() { - if (m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { - if (m_CurPos.nLineIndex > 0) { - m_CurPos = - CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex - 1, -1); - return TRUE; - } - if (m_CurPos.nSecIndex > 0) { - if (CSection* pLastSection = - m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex - 1)) { - m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, - pLastSection->m_LineArray.GetSize() - 1, -1); - return TRUE; - } - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::NextSection() { - if (m_CurPos.nSecIndex < m_pVT->m_SectionArray.GetSize() - 1) { - m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex + 1, 0, -1); - return TRUE; - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::PrevSection() { - ASSERT(m_pVT); - if (m_CurPos.nSecIndex > 0) { - m_CurPos = CPVT_WordPlace(m_CurPos.nSecIndex - 1, 0, -1); - return TRUE; - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::GetWord(CPVT_Word& word) const { - word.WordPlace = m_CurPos; - if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { - if (pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { - if (CPVT_WordInfo* pWord = - pSection->m_WordArray.GetAt(m_CurPos.nWordIndex)) { - word.Word = pWord->Word; - word.nCharset = pWord->nCharset; - word.fWidth = m_pVT->GetWordWidth(*pWord); - word.ptWord = m_pVT->InToOut( - CFX_FloatPoint(pWord->fWordX + pSection->m_SecInfo.rcSection.left, - pWord->fWordY + pSection->m_SecInfo.rcSection.top)); - word.fAscent = m_pVT->GetWordAscent(*pWord); - word.fDescent = m_pVT->GetWordDescent(*pWord); - if (pWord->pWordProps) { - word.WordProps = *pWord->pWordProps; - } - word.nFontIndex = m_pVT->GetWordFontIndex(*pWord); - word.fFontSize = m_pVT->GetWordFontSize(*pWord); - return TRUE; - } - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::SetWord(const CPVT_Word& word) { - if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { - if (CPVT_WordInfo* pWord = - pSection->m_WordArray.GetAt(m_CurPos.nWordIndex)) { - if (pWord->pWordProps) { - *pWord->pWordProps = word.WordProps; - } - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::GetLine(CPVT_Line& line) const { - ASSERT(m_pVT); - line.lineplace = CPVT_WordPlace(m_CurPos.nSecIndex, m_CurPos.nLineIndex, -1); - if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { - if (CLine* pLine = pSection->m_LineArray.GetAt(m_CurPos.nLineIndex)) { - line.ptLine = m_pVT->InToOut(CFX_FloatPoint( - pLine->m_LineInfo.fLineX + pSection->m_SecInfo.rcSection.left, - pLine->m_LineInfo.fLineY + pSection->m_SecInfo.rcSection.top)); - line.fLineWidth = pLine->m_LineInfo.fLineWidth; - line.fLineAscent = pLine->m_LineInfo.fLineAscent; - line.fLineDescent = pLine->m_LineInfo.fLineDescent; - line.lineEnd = pLine->GetEndWordPlace(); - return TRUE; - } - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::GetSection(CPVT_Section& section) const { - section.secplace = CPVT_WordPlace(m_CurPos.nSecIndex, 0, -1); - if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { - section.rcSection = m_pVT->InToOut(pSection->m_SecInfo.rcSection); - if (pSection->m_SecInfo.pSecProps) { - section.SecProps = *pSection->m_SecInfo.pSecProps; - } - if (pSection->m_SecInfo.pWordProps) { - section.WordProps = *pSection->m_SecInfo.pWordProps; - } - return TRUE; - } - return FALSE; -} -FX_BOOL CPDF_VariableText_Iterator::SetSection(const CPVT_Section& section) { - if (CSection* pSection = m_pVT->m_SectionArray.GetAt(m_CurPos.nSecIndex)) { - if (pSection->m_SecInfo.pSecProps) { - *pSection->m_SecInfo.pSecProps = section.SecProps; - } - if (pSection->m_SecInfo.pWordProps) { - *pSection->m_SecInfo.pWordProps = section.WordProps; - } - return TRUE; - } - return FALSE; -} diff --git a/core/src/fpdfdoc/doc_vtmodule.cpp b/core/src/fpdfdoc/doc_vtmodule.cpp deleted file mode 100644 index d5ea91f67e..0000000000 --- a/core/src/fpdfdoc/doc_vtmodule.cpp +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fpdfdoc/fpdf_doc.h" -#include "core/include/fpdfdoc/fpdf_vt.h" -#include "core/src/fpdfdoc/pdf_vt.h" - -IPDF_VariableText* IPDF_VariableText::NewVariableText() { - return new CPDF_VariableText(); -} -void IPDF_VariableText::DelVariableText(IPDF_VariableText* pVT) { - delete (CPDF_VariableText*)pVT; -} diff --git a/core/src/fpdfdoc/pdf_vt.h b/core/src/fpdfdoc/pdf_vt.h deleted file mode 100644 index 13ec71a125..0000000000 --- a/core/src/fpdfdoc/pdf_vt.h +++ /dev/null @@ -1,561 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFDOC_PDF_VT_H_ -#define CORE_SRC_FPDFDOC_PDF_VT_H_ - -class CPVT_Size; -class CPVT_FloatRect; -struct CPVT_SectionInfo; -struct CPVT_LineInfo; -struct CPVT_WordInfo; -class CLine; -class CLines; -class CSection; -class CTypeset; -class CPDF_EditContainer; -class CPDF_VariableText; -class CPDF_VariableText_Iterator; -#define IsFloatZero(f) ((f) < 0.0001 && (f) > -0.0001) -#define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb))) -#define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb))) - -class CPVT_Size { - public: - CPVT_Size() : x(0.0f), y(0.0f) {} - CPVT_Size(FX_FLOAT other_x, FX_FLOAT other_y) { - x = other_x; - y = other_y; - } - FX_FLOAT x, y; -}; -class CPVT_FloatRect : public CFX_FloatRect { - public: - CPVT_FloatRect() { left = top = right = bottom = 0.0f; } - CPVT_FloatRect(FX_FLOAT other_left, - FX_FLOAT other_top, - FX_FLOAT other_right, - FX_FLOAT other_bottom) { - left = other_left; - top = other_top; - right = other_right; - bottom = other_bottom; - } - explicit CPVT_FloatRect(const CFX_FloatRect& rect) { - left = rect.left; - top = rect.top; - right = rect.right; - bottom = rect.bottom; - } - void Default() { left = top = right = bottom = 0.0f; } - FX_FLOAT Height() const { - if (top > bottom) - return top - bottom; - return bottom - top; - } -}; -struct CPVT_SectionInfo { - CPVT_SectionInfo() - : rcSection(), nTotalLine(0), pSecProps(NULL), pWordProps(NULL) {} - virtual ~CPVT_SectionInfo() { - delete pSecProps; - delete pWordProps; - } - CPVT_SectionInfo(const CPVT_SectionInfo& other) - : rcSection(), nTotalLine(0), pSecProps(NULL), pWordProps(NULL) { - operator=(other); - } - void operator=(const CPVT_SectionInfo& other) { - if (this == &other) { - return; - } - rcSection = other.rcSection; - nTotalLine = other.nTotalLine; - if (other.pSecProps) { - if (pSecProps) { - *pSecProps = *other.pSecProps; - } else { - pSecProps = new CPVT_SecProps(*other.pSecProps); - } - } - if (other.pWordProps) { - if (pWordProps) { - *pWordProps = *other.pWordProps; - } else { - pWordProps = new CPVT_WordProps(*other.pWordProps); - } - } - } - CPVT_FloatRect rcSection; - int32_t nTotalLine; - CPVT_SecProps* pSecProps; - CPVT_WordProps* pWordProps; -}; -struct CPVT_LineInfo { - CPVT_LineInfo() - : nTotalWord(0), - nBeginWordIndex(-1), - nEndWordIndex(-1), - fLineX(0.0f), - fLineY(0.0f), - fLineWidth(0.0f), - fLineAscent(0.0f), - fLineDescent(0.0f) {} - int32_t nTotalWord; - int32_t nBeginWordIndex; - int32_t nEndWordIndex; - FX_FLOAT fLineX; - FX_FLOAT fLineY; - FX_FLOAT fLineWidth; - FX_FLOAT fLineAscent; - FX_FLOAT fLineDescent; -}; -struct CPVT_WordInfo { - CPVT_WordInfo() - : Word(0), - nCharset(0), - fWordX(0.0f), - fWordY(0.0f), - fWordTail(0.0f), - nFontIndex(-1), - pWordProps(NULL) {} - CPVT_WordInfo(FX_WORD word, - int32_t charset, - int32_t fontIndex, - CPVT_WordProps* pProps) - : Word(word), - nCharset(charset), - fWordX(0.0f), - fWordY(0.0f), - fWordTail(0.0f), - nFontIndex(fontIndex), - pWordProps(pProps) {} - virtual ~CPVT_WordInfo() { delete pWordProps; } - CPVT_WordInfo(const CPVT_WordInfo& word) - : Word(0), - nCharset(0), - fWordX(0.0f), - fWordY(0.0f), - fWordTail(0.0f), - nFontIndex(-1), - pWordProps(NULL) { - operator=(word); - } - void operator=(const CPVT_WordInfo& word) { - if (this == &word) { - return; - } - Word = word.Word; - nCharset = word.nCharset; - nFontIndex = word.nFontIndex; - if (word.pWordProps) { - if (pWordProps) { - *pWordProps = *word.pWordProps; - } else { - pWordProps = new CPVT_WordProps(*word.pWordProps); - } - } - } - FX_WORD Word; - int32_t nCharset; - FX_FLOAT fWordX; - FX_FLOAT fWordY; - FX_FLOAT fWordTail; - int32_t nFontIndex; - CPVT_WordProps* pWordProps; -}; -struct CPVT_FloatRange { - CPVT_FloatRange() : fMin(0.0f), fMax(0.0f) {} - CPVT_FloatRange(FX_FLOAT min, FX_FLOAT max) : fMin(min), fMax(max) {} - FX_FLOAT Range() const { return fMax - fMin; } - FX_FLOAT fMin, fMax; -}; -template -class CPVT_ArrayTemplate : public CFX_ArrayTemplate { - public: - FX_BOOL IsEmpty() { return CFX_ArrayTemplate::GetSize() <= 0; } - TYPE GetAt(int nIndex) const { - if (nIndex >= 0 && nIndex < CFX_ArrayTemplate::GetSize()) { - return CFX_ArrayTemplate::GetAt(nIndex); - } - return NULL; - } - void RemoveAt(int nIndex) { - if (nIndex >= 0 && nIndex < CFX_ArrayTemplate::GetSize()) { - CFX_ArrayTemplate::RemoveAt(nIndex); - } - } -}; -class CLine { - public: - CLine(); - virtual ~CLine(); - CPVT_WordPlace GetBeginWordPlace() const; - CPVT_WordPlace GetEndWordPlace() const; - CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace& place) const; - CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace& place) const; - CPVT_WordPlace LinePlace; - CPVT_LineInfo m_LineInfo; -}; -class CLines { - public: - CLines() : m_nTotal(0) {} - virtual ~CLines() { RemoveAll(); } - int32_t GetSize() const { return m_Lines.GetSize(); } - CLine* GetAt(int32_t nIndex) const { return m_Lines.GetAt(nIndex); } - void Empty() { m_nTotal = 0; } - void RemoveAll() { - for (int32_t i = 0, sz = GetSize(); i < sz; i++) { - delete GetAt(i); - } - m_Lines.RemoveAll(); - m_nTotal = 0; - } - int32_t Add(const CPVT_LineInfo& lineinfo) { - if (m_nTotal >= GetSize()) { - CLine* pLine = new CLine; - pLine->m_LineInfo = lineinfo; - m_Lines.Add(pLine); - } else if (CLine* pLine = GetAt(m_nTotal)) { - pLine->m_LineInfo = lineinfo; - } - return m_nTotal++; - } - void Clear() { - for (int32_t i = GetSize() - 1; i >= m_nTotal; i--) { - delete GetAt(i); - m_Lines.RemoveAt(i); - } - } - - private: - CPVT_ArrayTemplate m_Lines; - int32_t m_nTotal; -}; -class CSection { - friend class CTypeset; - - public: - explicit CSection(CPDF_VariableText* pVT); - virtual ~CSection(); - void ResetAll(); - void ResetLineArray(); - void ResetWordArray(); - void ResetLinePlace(); - CPVT_WordPlace AddWord(const CPVT_WordPlace& place, - const CPVT_WordInfo& wordinfo); - CPVT_WordPlace AddLine(const CPVT_LineInfo& lineinfo); - void ClearWords(const CPVT_WordRange& PlaceRange); - void ClearWord(const CPVT_WordPlace& place); - CPVT_FloatRect Rearrange(); - CPVT_Size GetSectionSize(FX_FLOAT fFontSize); - CPVT_WordPlace GetBeginWordPlace() const; - CPVT_WordPlace GetEndWordPlace() const; - CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace& place) const; - CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace& place) const; - void UpdateWordPlace(CPVT_WordPlace& place) const; - CPVT_WordPlace SearchWordPlace(const CFX_FloatPoint& point) const; - CPVT_WordPlace SearchWordPlace(FX_FLOAT fx, - const CPVT_WordPlace& lineplace) const; - CPVT_WordPlace SearchWordPlace(FX_FLOAT fx, - const CPVT_WordRange& range) const; - - public: - CPVT_WordPlace SecPlace; - CPVT_SectionInfo m_SecInfo; - CLines m_LineArray; - CPVT_ArrayTemplate m_WordArray; - - private: - void ClearLeftWords(int32_t nWordIndex); - void ClearRightWords(int32_t nWordIndex); - void ClearMidWords(int32_t nBeginIndex, int32_t nEndIndex); - - CPDF_VariableText* m_pVT; -}; -class CTypeset { - public: - explicit CTypeset(CSection* pSection); - virtual ~CTypeset(); - CPVT_Size GetEditSize(FX_FLOAT fFontSize); - CPVT_FloatRect Typeset(); - CPVT_FloatRect CharArray(); - - private: - void SplitLines(FX_BOOL bTypeset, FX_FLOAT fFontSize); - void OutputLines(); - - CPVT_FloatRect m_rcRet; - CPDF_VariableText* m_pVT; - CSection* m_pSection; -}; -class CPDF_EditContainer { - public: - CPDF_EditContainer() : m_rcPlate(0, 0, 0, 0), m_rcContent(0, 0, 0, 0) {} - virtual ~CPDF_EditContainer() {} - virtual void SetPlateRect(const CFX_FloatRect& rect) { m_rcPlate = rect; } - virtual const CFX_FloatRect& GetPlateRect() const { return m_rcPlate; } - virtual void SetContentRect(const CPVT_FloatRect& rect) { - m_rcContent = rect; - } - virtual CFX_FloatRect GetContentRect() const { return m_rcContent; } - FX_FLOAT GetPlateWidth() const { return m_rcPlate.right - m_rcPlate.left; } - FX_FLOAT GetPlateHeight() const { return m_rcPlate.top - m_rcPlate.bottom; } - CPVT_Size GetPlateSize() const { - return CPVT_Size(GetPlateWidth(), GetPlateHeight()); - } - CFX_FloatPoint GetBTPoint() const { - return CFX_FloatPoint(m_rcPlate.left, m_rcPlate.top); - } - CFX_FloatPoint GetETPoint() const { - return CFX_FloatPoint(m_rcPlate.right, m_rcPlate.bottom); - } - inline CFX_FloatPoint InToOut(const CFX_FloatPoint& point) const { - return CFX_FloatPoint(point.x + GetBTPoint().x, GetBTPoint().y - point.y); - } - inline CFX_FloatPoint OutToIn(const CFX_FloatPoint& point) const { - return CFX_FloatPoint(point.x - GetBTPoint().x, GetBTPoint().y - point.y); - } - inline CFX_FloatRect InToOut(const CPVT_FloatRect& rect) const { - CFX_FloatPoint ptLeftTop = InToOut(CFX_FloatPoint(rect.left, rect.top)); - CFX_FloatPoint ptRightBottom = - InToOut(CFX_FloatPoint(rect.right, rect.bottom)); - return CFX_FloatRect(ptLeftTop.x, ptRightBottom.y, ptRightBottom.x, - ptLeftTop.y); - } - inline CPVT_FloatRect OutToIn(const CFX_FloatRect& rect) const { - CFX_FloatPoint ptLeftTop = OutToIn(CFX_FloatPoint(rect.left, rect.top)); - CFX_FloatPoint ptRightBottom = - OutToIn(CFX_FloatPoint(rect.right, rect.bottom)); - return CPVT_FloatRect(ptLeftTop.x, ptLeftTop.y, ptRightBottom.x, - ptRightBottom.y); - } - - private: - CFX_FloatRect m_rcPlate; - CPVT_FloatRect m_rcContent; -}; - -class CPDF_VariableText : public IPDF_VariableText, private CPDF_EditContainer { - friend class CTypeset; - friend class CSection; - friend class CPDF_VariableText_Iterator; - - public: - CPDF_VariableText(); - ~CPDF_VariableText() override; - - // IPDF_VariableText - IPDF_VariableText_Provider* SetProvider( - IPDF_VariableText_Provider* pProvider) override; - IPDF_VariableText_Iterator* GetIterator() override; - void SetPlateRect(const CFX_FloatRect& rect) override { - CPDF_EditContainer::SetPlateRect(rect); - } - void SetAlignment(int32_t nFormat = 0) override { m_nAlignment = nFormat; } - void SetPasswordChar(FX_WORD wSubWord = '*') override { - m_wSubWord = wSubWord; - } - void SetLimitChar(int32_t nLimitChar = 0) override { - m_nLimitChar = nLimitChar; - } - void SetCharSpace(FX_FLOAT fCharSpace = 0.0f) override { - m_fCharSpace = fCharSpace; - } - void SetHorzScale(int32_t nHorzScale = 100) override { - m_nHorzScale = nHorzScale; - } - void SetMultiLine(FX_BOOL bMultiLine = TRUE) override { - m_bMultiLine = bMultiLine; - } - void SetAutoReturn(FX_BOOL bAuto = TRUE) override { m_bLimitWidth = bAuto; } - void SetFontSize(FX_FLOAT fFontSize) override { m_fFontSize = fFontSize; } - void SetCharArray(int32_t nCharArray = 0) override { - m_nCharArray = nCharArray; - } - void SetAutoFontSize(FX_BOOL bAuto = TRUE) override { - m_bAutoFontSize = bAuto; - } - void SetRichText(FX_BOOL bRichText) override { m_bRichText = bRichText; } - void SetLineLeading(FX_FLOAT fLineLeading) override { - m_fLineLeading = fLineLeading; - } - void Initialize() override; - FX_BOOL IsValid() const override { return m_bInitial; } - FX_BOOL IsRichText() const override { return m_bRichText; } - void RearrangeAll() override; - void RearrangePart(const CPVT_WordRange& PlaceRange) override; - void ResetAll() override; - void SetText(const FX_WCHAR* text, - int32_t charset = 1, - const CPVT_SecProps* pSecProps = NULL, - const CPVT_WordProps* pWordProps = NULL) override; - CPVT_WordPlace InsertWord(const CPVT_WordPlace& place, - FX_WORD word, - int32_t charset = 1, - const CPVT_WordProps* pWordProps = NULL) override; - CPVT_WordPlace InsertSection( - const CPVT_WordPlace& place, - const CPVT_SecProps* pSecProps = NULL, - const CPVT_WordProps* pWordProps = NULL) override; - CPVT_WordPlace InsertText(const CPVT_WordPlace& place, - const FX_WCHAR* text, - int32_t charset = 1, - const CPVT_SecProps* pSecProps = NULL, - const CPVT_WordProps* pWordProps = NULL) override; - CPVT_WordPlace DeleteWords(const CPVT_WordRange& PlaceRange) override; - CPVT_WordPlace DeleteWord(const CPVT_WordPlace& place) override; - CPVT_WordPlace BackSpaceWord(const CPVT_WordPlace& place) override; - const CFX_FloatRect& GetPlateRect() const override { - return CPDF_EditContainer::GetPlateRect(); - } - CFX_FloatRect GetContentRect() const override; - int32_t GetTotalWords() const override; - FX_FLOAT GetFontSize() const override { return m_fFontSize; } - int32_t GetAlignment() const override { return m_nAlignment; } - FX_WORD GetPasswordChar() const override { return GetSubWord(); } - int32_t GetCharArray() const override { return m_nCharArray; } - int32_t GetLimitChar() const override { return m_nLimitChar; } - FX_BOOL IsMultiLine() const override { return m_bMultiLine; } - int32_t GetHorzScale() const override { return m_nHorzScale; } - FX_FLOAT GetCharSpace() const override { return m_fCharSpace; } - CPVT_WordPlace GetBeginWordPlace() const override; - CPVT_WordPlace GetEndWordPlace() const override; - CPVT_WordPlace GetPrevWordPlace(const CPVT_WordPlace& place) const override; - CPVT_WordPlace GetNextWordPlace(const CPVT_WordPlace& place) const override; - CPVT_WordPlace SearchWordPlace(const CFX_FloatPoint& point) const override; - CPVT_WordPlace GetUpWordPlace(const CPVT_WordPlace& place, - const CFX_FloatPoint& point) const override; - CPVT_WordPlace GetDownWordPlace(const CPVT_WordPlace& place, - const CFX_FloatPoint& point) const override; - CPVT_WordPlace GetLineBeginPlace(const CPVT_WordPlace& place) const override; - CPVT_WordPlace GetLineEndPlace(const CPVT_WordPlace& place) const override; - CPVT_WordPlace GetSectionBeginPlace( - const CPVT_WordPlace& place) const override; - CPVT_WordPlace GetSectionEndPlace(const CPVT_WordPlace& place) const override; - void UpdateWordPlace(CPVT_WordPlace& place) const override; - CPVT_WordPlace AdjustLineHeader(const CPVT_WordPlace& place, - FX_BOOL bPrevOrNext) const override; - int32_t WordPlaceToWordIndex(const CPVT_WordPlace& place) const override; - CPVT_WordPlace WordIndexToWordPlace(int32_t index) const override; - - FX_WORD GetSubWord() const { return m_wSubWord; } - - private: - int32_t GetCharWidth(int32_t nFontIndex, - FX_WORD Word, - FX_WORD SubWord, - int32_t nWordStyle); - int32_t GetTypeAscent(int32_t nFontIndex); - int32_t GetTypeDescent(int32_t nFontIndex); - int32_t GetWordFontIndex(FX_WORD word, int32_t charset, int32_t nFontIndex); - int32_t GetDefaultFontIndex(); - FX_BOOL IsLatinWord(FX_WORD word); - - CPVT_WordPlace AddSection(const CPVT_WordPlace& place, - const CPVT_SectionInfo& secinfo); - CPVT_WordPlace AddLine(const CPVT_WordPlace& place, - const CPVT_LineInfo& lineinfo); - CPVT_WordPlace AddWord(const CPVT_WordPlace& place, - const CPVT_WordInfo& wordinfo); - FX_BOOL GetWordInfo(const CPVT_WordPlace& place, CPVT_WordInfo& wordinfo); - FX_BOOL SetWordInfo(const CPVT_WordPlace& place, - const CPVT_WordInfo& wordinfo); - FX_BOOL GetLineInfo(const CPVT_WordPlace& place, CPVT_LineInfo& lineinfo); - FX_BOOL GetSectionInfo(const CPVT_WordPlace& place, - CPVT_SectionInfo& secinfo); - FX_FLOAT GetWordFontSize(const CPVT_WordInfo& WordInfo, - FX_BOOL bFactFontSize = FALSE); - FX_FLOAT GetWordWidth(int32_t nFontIndex, - FX_WORD Word, - FX_WORD SubWord, - FX_FLOAT fCharSpace, - int32_t nHorzScale, - FX_FLOAT fFontSize, - FX_FLOAT fWordTail, - int32_t nWordStyle); - FX_FLOAT GetWordWidth(const CPVT_WordInfo& WordInfo); - FX_FLOAT GetWordAscent(const CPVT_WordInfo& WordInfo, FX_FLOAT fFontSize); - FX_FLOAT GetWordDescent(const CPVT_WordInfo& WordInfo, FX_FLOAT fFontSize); - FX_FLOAT GetWordAscent(const CPVT_WordInfo& WordInfo, - FX_BOOL bFactFontSize = FALSE); - FX_FLOAT GetWordDescent(const CPVT_WordInfo& WordInfo, - FX_BOOL bFactFontSize = FALSE); - FX_FLOAT GetLineAscent(const CPVT_SectionInfo& SecInfo); - FX_FLOAT GetLineDescent(const CPVT_SectionInfo& SecInfo); - FX_FLOAT GetFontAscent(int32_t nFontIndex, FX_FLOAT fFontSize); - FX_FLOAT GetFontDescent(int32_t nFontIndex, FX_FLOAT fFontSize); - int32_t GetWordFontIndex(const CPVT_WordInfo& WordInfo); - FX_FLOAT GetCharSpace(const CPVT_WordInfo& WordInfo); - int32_t GetHorzScale(const CPVT_WordInfo& WordInfo); - FX_FLOAT GetLineLeading(const CPVT_SectionInfo& SecInfo); - FX_FLOAT GetLineIndent(const CPVT_SectionInfo& SecInfo); - int32_t GetAlignment(const CPVT_SectionInfo& SecInfo); - - void ClearSectionRightWords(const CPVT_WordPlace& place); - - FX_BOOL ClearEmptySection(const CPVT_WordPlace& place); - void ClearEmptySections(const CPVT_WordRange& PlaceRange); - void LinkLatterSection(const CPVT_WordPlace& place); - void ClearWords(const CPVT_WordRange& PlaceRange); - CPVT_WordPlace ClearLeftWord(const CPVT_WordPlace& place); - CPVT_WordPlace ClearRightWord(const CPVT_WordPlace& place); - - private: - CPVT_FloatRect Rearrange(const CPVT_WordRange& PlaceRange); - FX_FLOAT GetAutoFontSize(); - FX_BOOL IsBigger(FX_FLOAT fFontSize); - CPVT_FloatRect RearrangeSections(const CPVT_WordRange& PlaceRange); - - void ResetSectionArray(); - - CPVT_ArrayTemplate m_SectionArray; - int32_t m_nLimitChar; - int32_t m_nCharArray; - FX_BOOL m_bMultiLine; - FX_BOOL m_bLimitWidth; - FX_BOOL m_bAutoFontSize; - int32_t m_nAlignment; - FX_FLOAT m_fLineLeading; - FX_FLOAT m_fCharSpace; - int32_t m_nHorzScale; - FX_WORD m_wSubWord; - FX_FLOAT m_fFontSize; - - private: - FX_BOOL m_bInitial; - FX_BOOL m_bRichText; - IPDF_VariableText_Provider* m_pVTProvider; - CPDF_VariableText_Iterator* m_pVTIterator; -}; - -class CPDF_VariableText_Iterator : public IPDF_VariableText_Iterator { - public: - explicit CPDF_VariableText_Iterator(CPDF_VariableText* pVT); - ~CPDF_VariableText_Iterator() override; - - // IPDF_VariableText_Iterator - FX_BOOL NextWord() override; - FX_BOOL PrevWord() override; - FX_BOOL NextLine() override; - FX_BOOL PrevLine() override; - FX_BOOL NextSection() override; - FX_BOOL PrevSection() override; - FX_BOOL SetWord(const CPVT_Word& word) override; - FX_BOOL GetWord(CPVT_Word& word) const override; - FX_BOOL GetLine(CPVT_Line& line) const override; - FX_BOOL GetSection(CPVT_Section& section) const override; - FX_BOOL SetSection(const CPVT_Section& section) override; - void SetAt(int32_t nWordIndex) override; - void SetAt(const CPVT_WordPlace& place) override; - const CPVT_WordPlace& GetAt() const override { return m_CurPos; } - - private: - CPVT_WordPlace m_CurPos; - CPDF_VariableText* m_pVT; -}; - -#endif // CORE_SRC_FPDFDOC_PDF_VT_H_ diff --git a/core/src/fpdfdoc/tagged_int.h b/core/src/fpdfdoc/tagged_int.h deleted file mode 100644 index 7dc9549569..0000000000 --- a/core/src/fpdfdoc/tagged_int.h +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFDOC_TAGGED_INT_H_ -#define CORE_SRC_FPDFDOC_TAGGED_INT_H_ - -#include - -#include "core/include/fpdfdoc/fpdf_tagged.h" - -class CPDF_StructElementImpl; - -class CPDF_StructTreeImpl : public CPDF_StructTree { - public: - explicit CPDF_StructTreeImpl(const CPDF_Document* pDoc); - ~CPDF_StructTreeImpl() override; - - // CPDF_StructTree - int CountTopElements() const override { return m_Kids.GetSize(); } - CPDF_StructElement* GetTopElement(int i) const override { - return (CPDF_StructElement*)m_Kids.GetAt(i); - } - - void LoadDocTree(); - void LoadPageTree(const CPDF_Dictionary* pPageDict); - CPDF_StructElementImpl* AddPageNode( - CPDF_Dictionary* pElement, - std::map& map, - int nLevel = 0); - FX_BOOL AddTopLevelNode(CPDF_Dictionary* pDict, - CPDF_StructElementImpl* pElement); - - protected: - const CPDF_Dictionary* m_pTreeRoot; - const CPDF_Dictionary* m_pRoleMap; - const CPDF_Dictionary* m_pPage; - CFX_ArrayTemplate m_Kids; - friend class CPDF_StructElementImpl; -}; - -class CPDF_StructElementImpl final : public CPDF_StructElement { - public: - CPDF_StructElementImpl(CPDF_StructTreeImpl* pTree, - CPDF_StructElementImpl* pParent, - CPDF_Dictionary* pDict); - - // CPDF_StructTreeImpl - CPDF_StructTree* GetTree() const override { return m_pTree; } - const CFX_ByteString& GetType() const override { return m_Type; } - CPDF_StructElement* GetParent() const override { return m_pParent; } - CPDF_Dictionary* GetDict() const override { return m_pDict; } - int CountKids() const override { return m_Kids.GetSize(); } - const CPDF_StructKid& GetKid(int index) const override { - return m_Kids.GetData()[index]; - } - CPDF_Object* GetAttr(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_BOOL bInheritable = FALSE, - FX_FLOAT fLevel = 0.0F) override; - CFX_ByteString GetName(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - const CFX_ByteStringC& default_value, - FX_BOOL bInheritable = FALSE, - int subindex = -1) override; - FX_ARGB GetColor(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_ARGB default_value, - FX_BOOL bInheritable = FALSE, - int subindex = -1) override; - FX_FLOAT GetNumber(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_FLOAT default_value, - FX_BOOL bInheritable = FALSE, - int subindex = -1) override; - int GetInteger(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - int default_value, - FX_BOOL bInheritable = FALSE, - int subindex = -1) override; - - void LoadKids(CPDF_Dictionary* pDict); - void LoadKid(FX_DWORD PageObjNum, CPDF_Object* pObj, CPDF_StructKid* pKid); - CPDF_Object* GetAttr(const CFX_ByteStringC& owner, - const CFX_ByteStringC& name, - FX_BOOL bInheritable, - int subindex); - CPDF_StructElementImpl* Retain(); - void Release(); - - protected: - ~CPDF_StructElementImpl() override; - - CPDF_StructTreeImpl* m_pTree; - CFX_ByteString m_Type; - CPDF_StructElementImpl* m_pParent; - CPDF_Dictionary* m_pDict; - CFX_ArrayTemplate m_Kids; - int m_RefCount; - - friend class CPDF_StructTreeImpl; -}; - -#endif // CORE_SRC_FPDFDOC_TAGGED_INT_H_ diff --git a/core/src/fpdftext/fpdf_text_int.cpp b/core/src/fpdftext/fpdf_text_int.cpp deleted file mode 100644 index 16e2c8529b..0000000000 --- a/core/src/fpdftext/fpdf_text_int.cpp +++ /dev/null @@ -1,2501 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fpdftext/text_int.h" - -#include -#include -#include -#include -#include -#include - -#include "core/include/fpdfapi/cpdf_dictionary.h" -#include "core/include/fpdfapi/cpdf_string.h" -#include "core/include/fpdfapi/fpdf_module.h" -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdfapi/fpdf_pageobj.h" -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fpdftext/fpdf_text.h" -#include "core/include/fxcrt/fx_bidi.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_ucd.h" -#include "third_party/base/stl_util.h" - -namespace { - -FX_BOOL _IsIgnoreSpaceCharacter(FX_WCHAR curChar) { - if (curChar < 255) { - return FALSE; - } - if ((curChar >= 0x0600 && curChar <= 0x06FF) || - (curChar >= 0xFE70 && curChar <= 0xFEFF) || - (curChar >= 0xFB50 && curChar <= 0xFDFF) || - (curChar >= 0x0400 && curChar <= 0x04FF) || - (curChar >= 0x0500 && curChar <= 0x052F) || - (curChar >= 0xA640 && curChar <= 0xA69F) || - (curChar >= 0x2DE0 && curChar <= 0x2DFF) || curChar == 8467 || - (curChar >= 0x2000 && curChar <= 0x206F)) { - return FALSE; - } - return TRUE; -} - -FX_FLOAT _NormalizeThreshold(FX_FLOAT threshold) { - if (threshold < 300) { - return threshold / 2.0f; - } - if (threshold < 500) { - return threshold / 4.0f; - } - if (threshold < 700) { - return threshold / 5.0f; - } - return threshold / 6.0f; -} - -FX_FLOAT _CalculateBaseSpace(const CPDF_TextObject* pTextObj, - const CFX_Matrix& matrix) { - FX_FLOAT baseSpace = 0.0; - const int nItems = pTextObj->CountItems(); - if (pTextObj->m_TextState.GetObject()->m_CharSpace && nItems >= 3) { - FX_BOOL bAllChar = TRUE; - FX_FLOAT spacing = matrix.TransformDistance( - pTextObj->m_TextState.GetObject()->m_CharSpace); - baseSpace = spacing; - for (int i = 0; i < nItems; i++) { - CPDF_TextObjectItem item; - pTextObj->GetItemInfo(i, &item); - if (item.m_CharCode == (FX_DWORD)-1) { - FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH(); - FX_FLOAT kerning = -fontsize_h * item.m_OriginX / 1000; - baseSpace = std::min(baseSpace, kerning + spacing); - bAllChar = FALSE; - } - } - if (baseSpace < 0.0 || (nItems == 3 && !bAllChar)) { - baseSpace = 0.0; - } - } - return baseSpace; -} - -const FX_FLOAT kDefaultFontSize = 1.0f; - -} // namespace - -IPDF_TextPage* IPDF_TextPage::CreateTextPage(const CPDF_Page* pPage, - int flags) { - return new CPDF_TextPage(pPage, flags); -} - -IPDF_TextPageFind* IPDF_TextPageFind::CreatePageFind( - const IPDF_TextPage* pTextPage) { - return pTextPage ? new CPDF_TextPageFind(pTextPage) : nullptr; -} - -IPDF_LinkExtract* IPDF_LinkExtract::CreateLinkExtract() { - return new CPDF_LinkExtract(); -} - -#define TEXT_BLANK_CHAR L' ' -#define TEXT_LINEFEED_CHAR L'\n' -#define TEXT_RETURN_CHAR L'\r' -#define TEXT_EMPTY L"" -#define TEXT_BLANK L" " -#define TEXT_RETURN_LINEFEED L"\r\n" -#define TEXT_LINEFEED L"\n" -#define TEXT_CHARRATIO_GAPDELTA 0.070 - -CPDF_TextPage::CPDF_TextPage(const CPDF_Page* pPage, int flags) - : m_pPage(pPage), - m_parserflag(flags), - m_pPreTextObj(nullptr), - m_bIsParsed(false), - m_TextlineDir(-1), - m_CurlineRect(0, 0, 0, 0) { - m_TextBuf.EstimateSize(0, 10240); - pPage->GetDisplayMatrix(m_DisplayMatrix, 0, 0, (int)pPage->GetPageWidth(), - (int)pPage->GetPageHeight(), 0); -} - -bool CPDF_TextPage::IsControlChar(const PAGECHAR_INFO& charInfo) { - switch (charInfo.m_Unicode) { - case 0x2: - case 0x3: - case 0x93: - case 0x94: - case 0x96: - case 0x97: - case 0x98: - case 0xfffe: - return charInfo.m_Flag != FPDFTEXT_CHAR_HYPHEN; - default: - return false; - } -} - -void CPDF_TextPage::ParseTextPage() { - m_bIsParsed = false; - m_TextBuf.Clear(); - m_CharList.clear(); - m_pPreTextObj = NULL; - ProcessObject(); - - m_bIsParsed = true; - m_CharIndex.clear(); - int nCount = pdfium::CollectionSize(m_CharList); - if (nCount) { - m_CharIndex.push_back(0); - } - for (int i = 0; i < nCount; i++) { - int indexSize = pdfium::CollectionSize(m_CharIndex); - FX_BOOL bNormal = FALSE; - const PAGECHAR_INFO& charinfo = m_CharList[i]; - if (charinfo.m_Flag == FPDFTEXT_CHAR_GENERATED) { - bNormal = TRUE; - } else if (charinfo.m_Unicode == 0 || IsControlChar(charinfo)) { - bNormal = FALSE; - } else { - bNormal = TRUE; - } - if (bNormal) { - if (indexSize % 2) { - m_CharIndex.push_back(1); - } else { - if (indexSize <= 0) { - continue; - } - m_CharIndex[indexSize - 1] += 1; - } - } else { - if (indexSize % 2) { - if (indexSize <= 0) { - continue; - } - m_CharIndex[indexSize - 1] = i + 1; - } else { - m_CharIndex.push_back(i + 1); - } - } - } - int indexSize = pdfium::CollectionSize(m_CharIndex); - if (indexSize % 2) { - m_CharIndex.erase(m_CharIndex.begin() + indexSize - 1); - } -} - -int CPDF_TextPage::CountChars() const { - return pdfium::CollectionSize(m_CharList); -} - -int CPDF_TextPage::CharIndexFromTextIndex(int TextIndex) const { - int indexSize = pdfium::CollectionSize(m_CharIndex); - int count = 0; - for (int i = 0; i < indexSize; i += 2) { - count += m_CharIndex[i + 1]; - if (count > TextIndex) - return TextIndex - count + m_CharIndex[i + 1] + m_CharIndex[i]; - } - return -1; -} - -int CPDF_TextPage::TextIndexFromCharIndex(int CharIndex) const { - int indexSize = pdfium::CollectionSize(m_CharIndex); - int count = 0; - for (int i = 0; i < indexSize; i += 2) { - count += m_CharIndex[i + 1]; - if (m_CharIndex[i + 1] + m_CharIndex[i] > CharIndex) { - if (CharIndex - m_CharIndex[i] < 0) - return -1; - - return CharIndex - m_CharIndex[i] + count - m_CharIndex[i + 1]; - } - } - return -1; -} - -void CPDF_TextPage::GetRectArray(int start, - int nCount, - CFX_RectArray& rectArray) const { - if (start < 0 || nCount == 0) { - return; - } - if (!m_bIsParsed) { - return; - } - CPDF_TextObject* pCurObj = NULL; - CFX_FloatRect rect; - int curPos = start; - FX_BOOL flagNewRect = TRUE; - if (nCount + start > pdfium::CollectionSize(m_CharList) || - nCount == -1) { - nCount = pdfium::CollectionSize(m_CharList) - start; - } - while (nCount--) { - PAGECHAR_INFO info_curchar = m_CharList[curPos++]; - if (info_curchar.m_Flag == FPDFTEXT_CHAR_GENERATED) { - continue; - } - if (info_curchar.m_CharBox.Width() < 0.01 || - info_curchar.m_CharBox.Height() < 0.01) { - continue; - } - if (!pCurObj) { - pCurObj = info_curchar.m_pTextObj; - } - if (pCurObj != info_curchar.m_pTextObj) { - rectArray.Add(rect); - pCurObj = info_curchar.m_pTextObj; - flagNewRect = TRUE; - } - if (flagNewRect) { - FX_FLOAT orgX = info_curchar.m_OriginX, orgY = info_curchar.m_OriginY; - CFX_Matrix matrix, matrix_reverse; - info_curchar.m_pTextObj->GetTextMatrix(&matrix); - matrix.Concat(info_curchar.m_Matrix); - matrix_reverse.SetReverse(matrix); - matrix_reverse.Transform(orgX, orgY); - rect.left = info_curchar.m_CharBox.left; - rect.right = info_curchar.m_CharBox.right; - if (pCurObj->GetFont()->GetTypeDescent()) { - rect.bottom = orgY + - pCurObj->GetFont()->GetTypeDescent() * - pCurObj->GetFontSize() / 1000; - FX_FLOAT xPosTemp = orgX; - matrix.Transform(xPosTemp, rect.bottom); - } else { - rect.bottom = info_curchar.m_CharBox.bottom; - } - if (pCurObj->GetFont()->GetTypeAscent()) { - rect.top = - orgY + - pCurObj->GetFont()->GetTypeAscent() * pCurObj->GetFontSize() / 1000; - FX_FLOAT xPosTemp = - orgX + - GetCharWidth(info_curchar.m_CharCode, pCurObj->GetFont()) * - pCurObj->GetFontSize() / 1000; - matrix.Transform(xPosTemp, rect.top); - } else { - rect.top = info_curchar.m_CharBox.top; - } - flagNewRect = FALSE; - rect = info_curchar.m_CharBox; - rect.Normalize(); - } else { - info_curchar.m_CharBox.Normalize(); - if (rect.left > info_curchar.m_CharBox.left) { - rect.left = info_curchar.m_CharBox.left; - } - if (rect.right < info_curchar.m_CharBox.right) { - rect.right = info_curchar.m_CharBox.right; - } - if (rect.top < info_curchar.m_CharBox.top) { - rect.top = info_curchar.m_CharBox.top; - } - if (rect.bottom > info_curchar.m_CharBox.bottom) { - rect.bottom = info_curchar.m_CharBox.bottom; - } - } - } - rectArray.Add(rect); -} - -int CPDF_TextPage::GetIndexAtPos(CFX_FloatPoint point, - FX_FLOAT xTolerance, - FX_FLOAT yTolerance) const { - if (!m_bIsParsed) - return -3; - - int pos = 0; - int NearPos = -1; - double xdif = 5000; - double ydif = 5000; - while (pos < pdfium::CollectionSize(m_CharList)) { - PAGECHAR_INFO charinfo = m_CharList[pos]; - CFX_FloatRect charrect = charinfo.m_CharBox; - if (charrect.Contains(point.x, point.y)) { - break; - } - if (xTolerance > 0 || yTolerance > 0) { - CFX_FloatRect charRectExt; - charrect.Normalize(); - charRectExt.left = charrect.left - xTolerance / 2; - charRectExt.right = charrect.right + xTolerance / 2; - charRectExt.top = charrect.top + yTolerance / 2; - charRectExt.bottom = charrect.bottom - yTolerance / 2; - if (charRectExt.Contains(point.x, point.y)) { - double curXdif, curYdif; - curXdif = FXSYS_fabs(point.x - charrect.left) < - FXSYS_fabs(point.x - charrect.right) - ? FXSYS_fabs(point.x - charrect.left) - : FXSYS_fabs(point.x - charrect.right); - curYdif = FXSYS_fabs(point.y - charrect.bottom) < - FXSYS_fabs(point.y - charrect.top) - ? FXSYS_fabs(point.y - charrect.bottom) - : FXSYS_fabs(point.y - charrect.top); - if (curYdif + curXdif < xdif + ydif) { - ydif = curYdif; - xdif = curXdif; - NearPos = pos; - } - } - } - ++pos; - } - return pos < pdfium::CollectionSize(m_CharList) ? pos : NearPos; -} - -CFX_WideString CPDF_TextPage::GetTextByRect(const CFX_FloatRect& rect) const { - if (!m_bIsParsed) - return CFX_WideString(); - - FX_FLOAT posy = 0; - bool IsContainPreChar = false; - bool IsAddLineFeed = false; - CFX_WideString strText; - for (const auto& charinfo : m_CharList) { - if (IsRectIntersect(rect, charinfo.m_CharBox)) { - if (FXSYS_fabs(posy - charinfo.m_OriginY) > 0 && !IsContainPreChar && - IsAddLineFeed) { - posy = charinfo.m_OriginY; - if (strText.GetLength() > 0) { - strText += L"\r\n"; - } - } - IsContainPreChar = true; - IsAddLineFeed = false; - if (charinfo.m_Unicode) { - strText += charinfo.m_Unicode; - } - } else if (charinfo.m_Unicode == 32) { - if (IsContainPreChar && charinfo.m_Unicode) { - strText += charinfo.m_Unicode; - IsContainPreChar = false; - IsAddLineFeed = false; - } - } else { - IsContainPreChar = false; - IsAddLineFeed = true; - } - } - return strText; -} - -void CPDF_TextPage::GetRectsArrayByRect(const CFX_FloatRect& rect, - CFX_RectArray& resRectArray) const { - if (!m_bIsParsed) - return; - - CFX_FloatRect curRect; - bool flagNewRect = true; - CPDF_TextObject* pCurObj = nullptr; - for (auto info_curchar : m_CharList) { - if (info_curchar.m_Flag == FPDFTEXT_CHAR_GENERATED) { - continue; - } - if (!IsRectIntersect(rect, info_curchar.m_CharBox)) { - continue; - } - if (!pCurObj) { - pCurObj = info_curchar.m_pTextObj; - } - if (pCurObj != info_curchar.m_pTextObj) { - resRectArray.Add(curRect); - pCurObj = info_curchar.m_pTextObj; - flagNewRect = true; - } - if (flagNewRect) { - curRect = info_curchar.m_CharBox; - curRect.Normalize(); - flagNewRect = false; - } else { - info_curchar.m_CharBox.Normalize(); - curRect.left = std::min(curRect.left, info_curchar.m_CharBox.left); - curRect.bottom = std::min(curRect.bottom, info_curchar.m_CharBox.bottom); - curRect.right = std::max(curRect.right, info_curchar.m_CharBox.right); - curRect.top = std::max(curRect.top, info_curchar.m_CharBox.top); - } - } - resRectArray.Add(curRect); -} - -int CPDF_TextPage::GetIndexAtPos(FX_FLOAT x, - FX_FLOAT y, - FX_FLOAT xTolerance, - FX_FLOAT yTolerance) const { - CFX_FloatPoint point(x, y); - return GetIndexAtPos(point, xTolerance, yTolerance); -} - -void CPDF_TextPage::GetCharInfo(int index, FPDF_CHAR_INFO* info) const { - if (!m_bIsParsed) - return; - - if (index < 0 || index >= pdfium::CollectionSize(m_CharList)) - return; - - const PAGECHAR_INFO& charinfo = m_CharList[index]; - info->m_Charcode = charinfo.m_CharCode; - info->m_OriginX = charinfo.m_OriginX; - info->m_OriginY = charinfo.m_OriginY; - info->m_Unicode = charinfo.m_Unicode; - info->m_Flag = charinfo.m_Flag; - info->m_CharBox = charinfo.m_CharBox; - info->m_pTextObj = charinfo.m_pTextObj; - if (charinfo.m_pTextObj && charinfo.m_pTextObj->GetFont()) { - info->m_FontSize = charinfo.m_pTextObj->GetFontSize(); - } else { - info->m_FontSize = kDefaultFontSize; - } - info->m_Matrix.Copy(charinfo.m_Matrix); -} - -void CPDF_TextPage::CheckMarkedContentObject(int32_t& start, - int32_t& nCount) const { - PAGECHAR_INFO charinfo = m_CharList[start]; - PAGECHAR_INFO charinfo2 = m_CharList[start + nCount - 1]; - if (FPDFTEXT_CHAR_PIECE != charinfo.m_Flag && - FPDFTEXT_CHAR_PIECE != charinfo2.m_Flag) { - return; - } - if (FPDFTEXT_CHAR_PIECE == charinfo.m_Flag) { - PAGECHAR_INFO charinfo1 = charinfo; - int startIndex = start; - while (FPDFTEXT_CHAR_PIECE == charinfo1.m_Flag && - charinfo1.m_Index == charinfo.m_Index) { - startIndex--; - if (startIndex < 0) { - break; - } - charinfo1 = m_CharList[startIndex]; - } - startIndex++; - start = startIndex; - } - if (FPDFTEXT_CHAR_PIECE == charinfo2.m_Flag) { - PAGECHAR_INFO charinfo3 = charinfo2; - int endIndex = start + nCount - 1; - while (FPDFTEXT_CHAR_PIECE == charinfo3.m_Flag && - charinfo3.m_Index == charinfo2.m_Index) { - endIndex++; - if (endIndex >= pdfium::CollectionSize(m_CharList)) { - break; - } - charinfo3 = m_CharList[endIndex]; - } - endIndex--; - nCount = endIndex - start + 1; - } -} - -CFX_WideString CPDF_TextPage::GetPageText(int start, int nCount) const { - if (!m_bIsParsed || nCount == 0) - return L""; - - if (start < 0) - start = 0; - - if (nCount == -1) { - nCount = pdfium::CollectionSize(m_CharList) - start; - return m_TextBuf.GetWideString().Mid(start, - m_TextBuf.GetWideString().GetLength()); - } - if (nCount <= 0 || m_CharList.empty()) { - return L""; - } - if (nCount + start > pdfium::CollectionSize(m_CharList) - 1) { - nCount = pdfium::CollectionSize(m_CharList) - start; - } - if (nCount <= 0) { - return L""; - } - CheckMarkedContentObject(start, nCount); - int startindex = 0; - PAGECHAR_INFO charinfo = m_CharList[start]; - int startOffset = 0; - while (charinfo.m_Index == -1) { - startOffset++; - if (startOffset > nCount || - start + startOffset >= pdfium::CollectionSize(m_CharList)) { - return L""; - } - charinfo = m_CharList[start + startOffset]; - } - startindex = charinfo.m_Index; - charinfo = m_CharList[start + nCount - 1]; - int nCountOffset = 0; - while (charinfo.m_Index == -1) { - nCountOffset++; - if (nCountOffset >= nCount) { - return L""; - } - charinfo = m_CharList[start + nCount - nCountOffset - 1]; - } - nCount = start + nCount - nCountOffset - startindex; - if (nCount <= 0) { - return L""; - } - return m_TextBuf.GetWideString().Mid(startindex, nCount); -} - -int CPDF_TextPage::CountRects(int start, int nCount) { - if (!m_bIsParsed || start < 0) - return -1; - - if (nCount == -1 || - nCount + start > pdfium::CollectionSize(m_CharList)) { - nCount = pdfium::CollectionSize(m_CharList) - start; - } - m_SelRects.RemoveAll(); - GetRectArray(start, nCount, m_SelRects); - return m_SelRects.GetSize(); -} - -void CPDF_TextPage::GetRect(int rectIndex, - FX_FLOAT& left, - FX_FLOAT& top, - FX_FLOAT& right, - FX_FLOAT& bottom) const { - if (!m_bIsParsed) - return; - - if (rectIndex < 0 || rectIndex >= m_SelRects.GetSize()) - return; - - left = m_SelRects.GetAt(rectIndex).left; - top = m_SelRects.GetAt(rectIndex).top; - right = m_SelRects.GetAt(rectIndex).right; - bottom = m_SelRects.GetAt(rectIndex).bottom; -} - -FX_BOOL CPDF_TextPage::GetBaselineRotate(int start, int end, int& Rotate) { - if (end == start) { - return FALSE; - } - FPDF_CHAR_INFO info_start; - FPDF_CHAR_INFO info_end; - GetCharInfo(start, &info_start); - GetCharInfo(end, &info_end); - while (info_end.m_CharBox.Width() == 0 || info_end.m_CharBox.Height() == 0) { - if (--end <= start) - return FALSE; - - GetCharInfo(end, &info_end); - } - FX_FLOAT dx = (info_end.m_OriginX - info_start.m_OriginX); - FX_FLOAT dy = (info_end.m_OriginY - info_start.m_OriginY); - if (dx == 0) { - if (dy > 0) { - Rotate = 90; - } else if (dy < 0) { - Rotate = 270; - } else { - Rotate = 0; - } - } else { - float a = FXSYS_atan2(dy, dx); - Rotate = (int)(a * 180 / FX_PI + 0.5); - } - if (Rotate < 0) { - Rotate = -Rotate; - } else if (Rotate > 0) { - Rotate = 360 - Rotate; - } - return TRUE; -} - -FX_BOOL CPDF_TextPage::GetBaselineRotate(const CFX_FloatRect& rect, - int& Rotate) { - int start, end, count, - n = CountBoundedSegments(rect.left, rect.top, rect.right, rect.bottom, - TRUE); - if (n < 1) { - return FALSE; - } - if (n > 1) { - GetBoundedSegment(n - 1, start, count); - end = start + count - 1; - GetBoundedSegment(0, start, count); - } else { - GetBoundedSegment(0, start, count); - end = start + count - 1; - } - return GetBaselineRotate(start, end, Rotate); -} -FX_BOOL CPDF_TextPage::GetBaselineRotate(int rectIndex, int& Rotate) { - if (!m_bIsParsed) - return FALSE; - - if (rectIndex < 0 || rectIndex >= m_SelRects.GetSize()) - return FALSE; - - CFX_FloatRect rect = m_SelRects.GetAt(rectIndex); - return GetBaselineRotate(rect, Rotate); -} - -int CPDF_TextPage::CountBoundedSegments(FX_FLOAT left, - FX_FLOAT top, - FX_FLOAT right, - FX_FLOAT bottom, - FX_BOOL bContains) { - m_Segments.RemoveAll(); - if (!m_bIsParsed) - return -1; - - CFX_FloatRect rect(left, bottom, right, top); - rect.Normalize(); - - FPDF_SEGMENT segment; - segment.m_Start = 0; - segment.m_nCount = 0; - - int pos = 0; - int segmentStatus = 0; - FX_BOOL IsContainPreChar = FALSE; - for (const auto& charinfo : m_CharList) { - if (bContains && rect.Contains(charinfo.m_CharBox)) { - if (segmentStatus == 0 || segmentStatus == 2) { - segment.m_Start = pos; - segment.m_nCount = 1; - segmentStatus = 1; - } else if (segmentStatus == 1) { - segment.m_nCount++; - } - IsContainPreChar = TRUE; - } else if (!bContains && - (IsRectIntersect(rect, charinfo.m_CharBox) || - rect.Contains(charinfo.m_OriginX, charinfo.m_OriginY))) { - if (segmentStatus == 0 || segmentStatus == 2) { - segment.m_Start = pos; - segment.m_nCount = 1; - segmentStatus = 1; - } else if (segmentStatus == 1) { - segment.m_nCount++; - } - IsContainPreChar = TRUE; - } else if (charinfo.m_Unicode == 32) { - if (IsContainPreChar == TRUE) { - if (segmentStatus == 0 || segmentStatus == 2) { - segment.m_Start = pos; - segment.m_nCount = 1; - segmentStatus = 1; - } else if (segmentStatus == 1) { - segment.m_nCount++; - } - IsContainPreChar = FALSE; - } else { - if (segmentStatus == 1) { - segmentStatus = 2; - m_Segments.Add(segment); - segment.m_Start = 0; - segment.m_nCount = 0; - } - } - } else { - if (segmentStatus == 1) { - segmentStatus = 2; - m_Segments.Add(segment); - segment.m_Start = 0; - segment.m_nCount = 0; - } - IsContainPreChar = FALSE; - } - pos++; - } - if (segmentStatus == 1) { - segmentStatus = 2; - m_Segments.Add(segment); - segment.m_Start = 0; - segment.m_nCount = 0; - } - return m_Segments.GetSize(); -} - -void CPDF_TextPage::GetBoundedSegment(int index, int& start, int& count) const { - if (index < 0 || index >= m_Segments.GetSize()) { - return; - } - start = m_Segments.GetAt(index).m_Start; - count = m_Segments.GetAt(index).m_nCount; -} - -int CPDF_TextPage::GetWordBreak(int index, int direction) const { - if (!m_bIsParsed) - return -1; - - if (direction != FPDFTEXT_LEFT && direction != FPDFTEXT_RIGHT) - return -1; - - if (index < 0 || index >= pdfium::CollectionSize(m_CharList)) - return -1; - - const PAGECHAR_INFO& charinfo = m_CharList[index]; - if (charinfo.m_Index == -1 || charinfo.m_Flag == FPDFTEXT_CHAR_GENERATED) { - return index; - } - if (!IsLetter(charinfo.m_Unicode)) { - return index; - } - int breakPos = index; - if (direction == FPDFTEXT_LEFT) { - while (--breakPos > 0) { - if (!IsLetter(m_CharList[breakPos].m_Unicode)) - break; - } - } else if (direction == FPDFTEXT_RIGHT) { - while (++breakPos < pdfium::CollectionSize(m_CharList)) { - if (!IsLetter(m_CharList[breakPos].m_Unicode)) - break; - } - } - return breakPos; -} - -int32_t CPDF_TextPage::FindTextlineFlowDirection() { - const int32_t nPageWidth = static_cast(m_pPage->GetPageWidth()); - const int32_t nPageHeight = static_cast(m_pPage->GetPageHeight()); - std::vector nHorizontalMask(nPageWidth); - std::vector nVerticalMask(nPageHeight); - uint8_t* pDataH = nHorizontalMask.data(); - uint8_t* pDataV = nVerticalMask.data(); - int32_t index = 0; - FX_FLOAT fLineHeight = 0.0f; - if (m_pPage->GetPageObjectList()->empty()) - return -1; - - for (auto& pPageObj : *m_pPage->GetPageObjectList()) { - if (!pPageObj || !pPageObj->IsText()) - continue; - - int32_t minH = - (int32_t)pPageObj->m_Left < 0 ? 0 : (int32_t)pPageObj->m_Left; - int32_t maxH = (int32_t)pPageObj->m_Right > nPageWidth - ? nPageWidth - : (int32_t)pPageObj->m_Right; - int32_t minV = - (int32_t)pPageObj->m_Bottom < 0 ? 0 : (int32_t)pPageObj->m_Bottom; - int32_t maxV = (int32_t)pPageObj->m_Top > nPageHeight - ? nPageHeight - : (int32_t)pPageObj->m_Top; - if (minH >= maxH || minV >= maxV) - continue; - - FXSYS_memset(pDataH + minH, 1, maxH - minH); - FXSYS_memset(pDataV + minV, 1, maxV - minV); - if (fLineHeight <= 0.0f) - fLineHeight = pPageObj->m_Top - pPageObj->m_Bottom; - } - int32_t nStartH = 0; - int32_t nEndH = 0; - FX_FLOAT nSumH = 0.0f; - for (index = 0; index < nPageWidth; index++) { - if (1 == nHorizontalMask[index]) - break; - } - nStartH = index; - for (index = nPageWidth; index > 0; index--) { - if (1 == nHorizontalMask[index - 1]) - break; - } - nEndH = index; - for (index = nStartH; index < nEndH; index++) { - nSumH += nHorizontalMask[index]; - } - nSumH /= nEndH - nStartH; - int32_t nStartV = 0; - int32_t nEndV = 0; - FX_FLOAT nSumV = 0.0f; - for (index = 0; index < nPageHeight; index++) { - if (1 == nVerticalMask[index]) - break; - } - nStartV = index; - for (index = nPageHeight; index > 0; index--) { - if (1 == nVerticalMask[index - 1]) - break; - } - nEndV = index; - for (index = nStartV; index < nEndV; index++) { - nSumV += nVerticalMask[index]; - } - nSumV /= nEndV - nStartV; - if ((nEndV - nStartV) < (int32_t)(2 * fLineHeight)) { - return 0; - } - if ((nEndH - nStartH) < (int32_t)(2 * fLineHeight)) { - return 1; - } - if (nSumH > 0.8f) { - return 0; - } - if (nSumH - nSumV > 0.0f) { - return 0; - } - if (nSumV - nSumH > 0.0f) { - return 1; - } - return -1; -} - -void CPDF_TextPage::ProcessObject() { - if (m_pPage->GetPageObjectList()->empty()) - return; - - m_TextlineDir = FindTextlineFlowDirection(); - const CPDF_PageObjectList* pObjList = m_pPage->GetPageObjectList(); - for (auto it = pObjList->begin(); it != pObjList->end(); ++it) { - if (CPDF_PageObject* pObj = it->get()) { - if (pObj->IsText()) { - CFX_Matrix matrix; - ProcessTextObject(pObj->AsText(), matrix, pObjList, it); - } else if (pObj->IsForm()) { - CFX_Matrix formMatrix(1, 0, 0, 1, 0, 0); - ProcessFormObject(pObj->AsForm(), formMatrix); - } - } - } - for (int i = 0; i < m_LineObj.GetSize(); i++) - ProcessTextObject(m_LineObj.GetAt(i)); - - m_LineObj.RemoveAll(); - CloseTempLine(); -} - -void CPDF_TextPage::ProcessFormObject(CPDF_FormObject* pFormObj, - const CFX_Matrix& formMatrix) { - CPDF_PageObjectList* pObjectList = pFormObj->m_pForm->GetPageObjectList(); - if (pObjectList->empty()) - return; - - CFX_Matrix curFormMatrix; - curFormMatrix.Copy(pFormObj->m_FormMatrix); - curFormMatrix.Concat(formMatrix); - - for (auto it = pObjectList->begin(); it != pObjectList->end(); ++it) { - if (CPDF_PageObject* pPageObj = it->get()) { - if (pPageObj->IsText()) { - ProcessTextObject(pPageObj->AsText(), curFormMatrix, pObjectList, it); - } else if (pPageObj->IsForm()) { - ProcessFormObject(pPageObj->AsForm(), curFormMatrix); - } - } - } -} - -int CPDF_TextPage::GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const { - if (charCode == -1) - return 0; - - if (int w = pFont->GetCharWidthF(charCode)) - return w; - - CFX_ByteString str; - pFont->AppendChar(str, charCode); - if (int w = pFont->GetStringWidth(str, 1)) - return w; - - return pFont->GetCharBBox(charCode).Width(); -} - -void CPDF_TextPage::OnPiece(CFX_BidiChar* pBidi, CFX_WideString& str) { - CFX_BidiChar::Segment seg = pBidi->GetSegmentInfo(); - if (seg.direction == CFX_BidiChar::RIGHT) { - for (int i = seg.start + seg.count; i > seg.start; i--) { - m_TextBuf.AppendChar(str.GetAt(i - i)); - m_CharList.push_back(m_TempCharList[i - 1]); - } - } else { - for (int i = seg.start; i < seg.start + seg.count; i++) { - m_TextBuf.AppendChar(str.GetAt(i)); - m_CharList.push_back(m_TempCharList[i]); - } - } -} - -void CPDF_TextPage::AddCharInfoByLRDirection(FX_WCHAR wChar, - PAGECHAR_INFO info) { - if (!IsControlChar(info)) { - info.m_Index = m_TextBuf.GetLength(); - if (wChar >= 0xFB00 && wChar <= 0xFB06) { - FX_WCHAR* pDst = NULL; - FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); - if (nCount >= 1) { - pDst = FX_Alloc(FX_WCHAR, nCount); - FX_Unicode_GetNormalization(wChar, pDst); - for (int nIndex = 0; nIndex < nCount; nIndex++) { - PAGECHAR_INFO info2 = info; - info2.m_Unicode = pDst[nIndex]; - info2.m_Flag = FPDFTEXT_CHAR_PIECE; - m_TextBuf.AppendChar(info2.m_Unicode); - m_CharList.push_back(info2); - } - FX_Free(pDst); - return; - } - } - m_TextBuf.AppendChar(wChar); - } else { - info.m_Index = -1; - } - m_CharList.push_back(info); -} - -void CPDF_TextPage::AddCharInfoByRLDirection(FX_WCHAR wChar, - PAGECHAR_INFO info) { - if (!IsControlChar(info)) { - info.m_Index = m_TextBuf.GetLength(); - wChar = FX_GetMirrorChar(wChar, TRUE, FALSE); - FX_WCHAR* pDst = NULL; - FX_STRSIZE nCount = FX_Unicode_GetNormalization(wChar, pDst); - if (nCount >= 1) { - pDst = FX_Alloc(FX_WCHAR, nCount); - FX_Unicode_GetNormalization(wChar, pDst); - for (int nIndex = 0; nIndex < nCount; nIndex++) { - PAGECHAR_INFO info2 = info; - info2.m_Unicode = pDst[nIndex]; - info2.m_Flag = FPDFTEXT_CHAR_PIECE; - m_TextBuf.AppendChar(info2.m_Unicode); - m_CharList.push_back(info2); - } - FX_Free(pDst); - return; - } - info.m_Unicode = wChar; - m_TextBuf.AppendChar(info.m_Unicode); - } else { - info.m_Index = -1; - } - m_CharList.push_back(info); -} - -void CPDF_TextPage::CloseTempLine() { - if (m_TempCharList.empty()) - return; - - CFX_WideString str = m_TempTextBuf.GetWideString(); - FX_BOOL bPrevSpace = FALSE; - for (int i = 0; i < str.GetLength(); i++) { - if (str.GetAt(i) != ' ') { - bPrevSpace = FALSE; - continue; - } - if (bPrevSpace) { - m_TempTextBuf.Delete(i, 1); - m_TempCharList.erase(m_TempCharList.begin() + i); - str.Delete(i); - i--; - } - bPrevSpace = TRUE; - } - CFX_BidiString bidi(str); - if (m_parserflag == FPDFTEXT_RLTB) - bidi.SetOverallDirectionRight(); - CFX_BidiChar::Direction eCurrentDirection = bidi.OverallDirection(); - for (const auto& segment : bidi) { - if (segment.direction == CFX_BidiChar::RIGHT || - (segment.direction == CFX_BidiChar::NEUTRAL && - eCurrentDirection == CFX_BidiChar::RIGHT)) { - eCurrentDirection = CFX_BidiChar::RIGHT; - for (int m = segment.start + segment.count; m > segment.start; --m) - AddCharInfoByRLDirection(bidi.CharAt(m - 1), m_TempCharList[m - 1]); - } else { - eCurrentDirection = CFX_BidiChar::LEFT; - for (int m = segment.start; m < segment.start + segment.count; m++) - AddCharInfoByLRDirection(bidi.CharAt(m), m_TempCharList[m]); - } - } - m_TempCharList.clear(); - m_TempTextBuf.Delete(0, m_TempTextBuf.GetLength()); -} - -void CPDF_TextPage::ProcessTextObject( - CPDF_TextObject* pTextObj, - const CFX_Matrix& formMatrix, - const CPDF_PageObjectList* pObjList, - CPDF_PageObjectList::const_iterator ObjPos) { - CFX_FloatRect re(pTextObj->m_Left, pTextObj->m_Bottom, pTextObj->m_Right, - pTextObj->m_Top); - if (FXSYS_fabs(pTextObj->m_Right - pTextObj->m_Left) < 0.01f) { - return; - } - int count = m_LineObj.GetSize(); - PDFTEXT_Obj Obj; - Obj.m_pTextObj = pTextObj; - Obj.m_formMatrix = formMatrix; - if (count == 0) { - m_LineObj.Add(Obj); - return; - } - if (IsSameAsPreTextObject(pTextObj, pObjList, ObjPos)) { - return; - } - PDFTEXT_Obj prev_Obj = m_LineObj.GetAt(count - 1); - CPDF_TextObjectItem item; - int nItem = prev_Obj.m_pTextObj->CountItems(); - prev_Obj.m_pTextObj->GetItemInfo(nItem - 1, &item); - FX_FLOAT prev_width = - GetCharWidth(item.m_CharCode, prev_Obj.m_pTextObj->GetFont()) * - prev_Obj.m_pTextObj->GetFontSize() / 1000; - CFX_Matrix prev_matrix; - prev_Obj.m_pTextObj->GetTextMatrix(&prev_matrix); - prev_width = FXSYS_fabs(prev_width); - prev_matrix.Concat(prev_Obj.m_formMatrix); - prev_width = prev_matrix.TransformDistance(prev_width); - pTextObj->GetItemInfo(0, &item); - FX_FLOAT this_width = GetCharWidth(item.m_CharCode, pTextObj->GetFont()) * - pTextObj->GetFontSize() / 1000; - this_width = FXSYS_fabs(this_width); - CFX_Matrix this_matrix; - pTextObj->GetTextMatrix(&this_matrix); - this_width = FXSYS_fabs(this_width); - this_matrix.Concat(formMatrix); - this_width = this_matrix.TransformDistance(this_width); - FX_FLOAT threshold = - prev_width > this_width ? prev_width / 4 : this_width / 4; - FX_FLOAT prev_x = prev_Obj.m_pTextObj->GetPosX(), - prev_y = prev_Obj.m_pTextObj->GetPosY(); - prev_Obj.m_formMatrix.Transform(prev_x, prev_y); - m_DisplayMatrix.Transform(prev_x, prev_y); - FX_FLOAT this_x = pTextObj->GetPosX(), this_y = pTextObj->GetPosY(); - formMatrix.Transform(this_x, this_y); - m_DisplayMatrix.Transform(this_x, this_y); - if (FXSYS_fabs(this_y - prev_y) > threshold * 2) { - for (int i = 0; i < count; i++) { - ProcessTextObject(m_LineObj.GetAt(i)); - } - m_LineObj.RemoveAll(); - m_LineObj.Add(Obj); - return; - } - int i = 0; - for (i = count - 1; i >= 0; i--) { - PDFTEXT_Obj prev_Obj = m_LineObj.GetAt(i); - CFX_Matrix prev_matrix; - prev_Obj.m_pTextObj->GetTextMatrix(&prev_matrix); - FX_FLOAT Prev_x = prev_Obj.m_pTextObj->GetPosX(), - Prev_y = prev_Obj.m_pTextObj->GetPosY(); - prev_Obj.m_formMatrix.Transform(Prev_x, Prev_y); - m_DisplayMatrix.Transform(Prev_x, Prev_y); - if (this_x >= Prev_x) { - if (i == count - 1) { - m_LineObj.Add(Obj); - } else { - m_LineObj.InsertAt(i + 1, Obj); - } - break; - } - } - if (i < 0) { - m_LineObj.InsertAt(0, Obj); - } -} - -int32_t CPDF_TextPage::PreMarkedContent(PDFTEXT_Obj Obj) { - CPDF_TextObject* pTextObj = Obj.m_pTextObj; - CPDF_ContentMarkData* pMarkData = - (CPDF_ContentMarkData*)pTextObj->m_ContentMark.GetObject(); - if (!pMarkData) - return FPDFTEXT_MC_PASS; - - int nContentMark = pMarkData->CountItems(); - if (nContentMark < 1) - return FPDFTEXT_MC_PASS; - CFX_WideString actText; - FX_BOOL bExist = FALSE; - CPDF_Dictionary* pDict = NULL; - int n = 0; - for (n = 0; n < nContentMark; n++) { - CPDF_ContentMarkItem& item = pMarkData->GetItem(n); - if (item.GetParamType() == CPDF_ContentMarkItem::ParamType::None) - continue; - pDict = item.GetParam(); - CPDF_String* temp = - ToString(pDict ? pDict->GetElement("ActualText") : nullptr); - if (temp) { - bExist = TRUE; - actText = temp->GetUnicodeText(); - } - } - if (!bExist) - return FPDFTEXT_MC_PASS; - - if (m_pPreTextObj) { - CPDF_ContentMarkData* pPreMarkData = - (CPDF_ContentMarkData*)m_pPreTextObj->m_ContentMark.GetObject(); - if (pPreMarkData && pPreMarkData->CountItems() == n && - pDict == pPreMarkData->GetItem(n - 1).GetParam()) { - return FPDFTEXT_MC_DONE; - } - } - FX_STRSIZE nItems = actText.GetLength(); - if (nItems < 1) - return FPDFTEXT_MC_PASS; - - CPDF_Font* pFont = pTextObj->GetFont(); - bExist = FALSE; - for (FX_STRSIZE i = 0; i < nItems; i++) { - if (pFont->CharCodeFromUnicode(actText.GetAt(i)) != -1) { - bExist = TRUE; - break; - } - } - if (!bExist) - return FPDFTEXT_MC_PASS; - - bExist = FALSE; - for (FX_STRSIZE i = 0; i < nItems; i++) { - FX_WCHAR wChar = actText.GetAt(i); - if ((wChar > 0x80 && wChar < 0xFFFD) || (wChar <= 0x80 && isprint(wChar))) { - bExist = TRUE; - break; - } - } - if (!bExist) - return FPDFTEXT_MC_DONE; - - return FPDFTEXT_MC_DELAY; -} - -void CPDF_TextPage::ProcessMarkedContent(PDFTEXT_Obj Obj) { - CPDF_TextObject* pTextObj = Obj.m_pTextObj; - CPDF_ContentMarkData* pMarkData = - (CPDF_ContentMarkData*)pTextObj->m_ContentMark.GetObject(); - if (!pMarkData) - return; - - int nContentMark = pMarkData->CountItems(); - if (nContentMark < 1) - return; - CFX_WideString actText; - CPDF_Dictionary* pDict = NULL; - for (int n = 0; n < nContentMark; n++) { - CPDF_ContentMarkItem& item = pMarkData->GetItem(n); - if (item.GetParamType() == CPDF_ContentMarkItem::ParamType::None) - continue; - pDict = item.GetParam(); - if (pDict) - actText = pDict->GetUnicodeTextBy("ActualText"); - } - FX_STRSIZE nItems = actText.GetLength(); - if (nItems < 1) - return; - - CPDF_Font* pFont = pTextObj->GetFont(); - CFX_Matrix formMatrix = Obj.m_formMatrix; - CFX_Matrix matrix; - pTextObj->GetTextMatrix(&matrix); - matrix.Concat(formMatrix); - FX_FLOAT fPosX = pTextObj->GetPosX(); - FX_FLOAT fPosY = pTextObj->GetPosY(); - int nCharInfoIndex = m_TextBuf.GetLength(); - CFX_FloatRect charBox; - charBox.top = pTextObj->m_Top; - charBox.left = pTextObj->m_Left; - charBox.right = pTextObj->m_Right; - charBox.bottom = pTextObj->m_Bottom; - for (FX_STRSIZE k = 0; k < nItems; k++) { - FX_WCHAR wChar = actText.GetAt(k); - if (wChar <= 0x80 && !isprint(wChar)) { - wChar = 0x20; - } - if (wChar >= 0xFFFD) { - continue; - } - PAGECHAR_INFO charinfo; - charinfo.m_OriginX = fPosX; - charinfo.m_OriginY = fPosY; - charinfo.m_Index = nCharInfoIndex; - charinfo.m_Unicode = wChar; - charinfo.m_CharCode = pFont->CharCodeFromUnicode(wChar); - charinfo.m_Flag = FPDFTEXT_CHAR_PIECE; - charinfo.m_pTextObj = pTextObj; - charinfo.m_CharBox.top = charBox.top; - charinfo.m_CharBox.left = charBox.left; - charinfo.m_CharBox.right = charBox.right; - charinfo.m_CharBox.bottom = charBox.bottom; - charinfo.m_Matrix.Copy(matrix); - m_TempTextBuf.AppendChar(wChar); - m_TempCharList.push_back(charinfo); - } -} - -void CPDF_TextPage::FindPreviousTextObject() { - if (m_TempCharList.empty() && m_CharList.empty()) - return; - - PAGECHAR_INFO preChar = - m_TempCharList.empty() ? m_CharList.back() : m_TempCharList.back(); - - if (preChar.m_pTextObj) - m_pPreTextObj = preChar.m_pTextObj; -} -void CPDF_TextPage::SwapTempTextBuf(int32_t iCharListStartAppend, - int32_t iBufStartAppend) { - int32_t i = iCharListStartAppend; - int32_t j = pdfium::CollectionSize(m_TempCharList) - 1; - for (; i < j; i++, j--) { - std::swap(m_TempCharList[i], m_TempCharList[j]); - std::swap(m_TempCharList[i].m_Index, m_TempCharList[j].m_Index); - } - FX_WCHAR* pTempBuffer = m_TempTextBuf.GetBuffer(); - i = iBufStartAppend; - j = m_TempTextBuf.GetLength() - 1; - for (; i < j; i++, j--) { - std::swap(pTempBuffer[i], pTempBuffer[j]); - } -} - -FX_BOOL CPDF_TextPage::IsRightToLeft(const CPDF_TextObject* pTextObj, - const CPDF_Font* pFont, - int nItems) const { - CFX_WideString str; - for (int32_t i = 0; i < nItems; i++) { - CPDF_TextObjectItem item; - pTextObj->GetItemInfo(i, &item); - if (item.m_CharCode == (FX_DWORD)-1) { - continue; - } - CFX_WideString wstrItem = pFont->UnicodeFromCharCode(item.m_CharCode); - FX_WCHAR wChar = wstrItem.GetAt(0); - if ((wstrItem.IsEmpty() || wChar == 0) && item.m_CharCode) { - wChar = (FX_WCHAR)item.m_CharCode; - } - if (wChar) - str += wChar; - } - return CFX_BidiString(str).OverallDirection() == CFX_BidiChar::RIGHT; -} - -void CPDF_TextPage::ProcessTextObject(PDFTEXT_Obj Obj) { - CPDF_TextObject* pTextObj = Obj.m_pTextObj; - if (FXSYS_fabs(pTextObj->m_Right - pTextObj->m_Left) < 0.01f) { - return; - } - CFX_Matrix formMatrix = Obj.m_formMatrix; - CPDF_Font* pFont = pTextObj->GetFont(); - CFX_Matrix matrix; - pTextObj->GetTextMatrix(&matrix); - matrix.Concat(formMatrix); - int32_t bPreMKC = PreMarkedContent(Obj); - if (FPDFTEXT_MC_DONE == bPreMKC) { - m_pPreTextObj = pTextObj; - m_perMatrix.Copy(formMatrix); - return; - } - int result = 0; - if (m_pPreTextObj) { - result = ProcessInsertObject(pTextObj, formMatrix); - if (2 == result) { - m_CurlineRect = - CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_Bottom, - Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top); - } else { - m_CurlineRect.Union( - CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_Bottom, - Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top)); - } - PAGECHAR_INFO generateChar; - if (result == 1) { - if (GenerateCharInfo(TEXT_BLANK_CHAR, generateChar)) { - if (!formMatrix.IsIdentity()) { - generateChar.m_Matrix.Copy(formMatrix); - } - m_TempTextBuf.AppendChar(TEXT_BLANK_CHAR); - m_TempCharList.push_back(generateChar); - } - } else if (result == 2) { - CloseTempLine(); - if (m_TextBuf.GetSize()) { - if (GenerateCharInfo(TEXT_RETURN_CHAR, generateChar)) { - m_TextBuf.AppendChar(TEXT_RETURN_CHAR); - if (!formMatrix.IsIdentity()) { - generateChar.m_Matrix.Copy(formMatrix); - } - m_CharList.push_back(generateChar); - } - if (GenerateCharInfo(TEXT_LINEFEED_CHAR, generateChar)) { - m_TextBuf.AppendChar(TEXT_LINEFEED_CHAR); - if (!formMatrix.IsIdentity()) { - generateChar.m_Matrix.Copy(formMatrix); - } - m_CharList.push_back(generateChar); - } - } - } else if (result == 3) { - int32_t nChars = pTextObj->CountChars(); - if (nChars == 1) { - CPDF_TextObjectItem item; - pTextObj->GetCharInfo(0, &item); - CFX_WideString wstrItem = - pTextObj->GetFont()->UnicodeFromCharCode(item.m_CharCode); - if (wstrItem.IsEmpty()) { - wstrItem += (FX_WCHAR)item.m_CharCode; - } - FX_WCHAR curChar = wstrItem.GetAt(0); - if (0x2D == curChar || 0xAD == curChar) { - return; - } - } - while (m_TempTextBuf.GetSize() > 0 && - m_TempTextBuf.GetWideString().GetAt(m_TempTextBuf.GetLength() - - 1) == 0x20) { - m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); - m_TempCharList.pop_back(); - } - PAGECHAR_INFO* charinfo = &m_TempCharList.back(); - m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); - charinfo->m_Unicode = 0x2; - charinfo->m_Flag = FPDFTEXT_CHAR_HYPHEN; - m_TempTextBuf.AppendChar(0xfffe); - } - } else { - m_CurlineRect = - CFX_FloatRect(Obj.m_pTextObj->m_Left, Obj.m_pTextObj->m_Bottom, - Obj.m_pTextObj->m_Right, Obj.m_pTextObj->m_Top); - } - if (FPDFTEXT_MC_DELAY == bPreMKC) { - ProcessMarkedContent(Obj); - m_pPreTextObj = pTextObj; - m_perMatrix.Copy(formMatrix); - return; - } - m_pPreTextObj = pTextObj; - m_perMatrix.Copy(formMatrix); - int nItems = pTextObj->CountItems(); - FX_FLOAT baseSpace = _CalculateBaseSpace(pTextObj, matrix); - - const FX_BOOL bR2L = IsRightToLeft(pTextObj, pFont, nItems); - const FX_BOOL bIsBidiAndMirrorInverse = - bR2L && (matrix.a * matrix.d - matrix.b * matrix.c) < 0; - int32_t iBufStartAppend = m_TempTextBuf.GetLength(); - int32_t iCharListStartAppend = - pdfium::CollectionSize(m_TempCharList); - - FX_FLOAT spacing = 0; - for (int i = 0; i < nItems; i++) { - CPDF_TextObjectItem item; - PAGECHAR_INFO charinfo; - charinfo.m_OriginX = 0; - charinfo.m_OriginY = 0; - pTextObj->GetItemInfo(i, &item); - if (item.m_CharCode == (FX_DWORD)-1) { - CFX_WideString str = m_TempTextBuf.GetWideString(); - if (str.IsEmpty()) { - str = m_TextBuf.GetWideString(); - } - if (str.IsEmpty() || str.GetAt(str.GetLength() - 1) == TEXT_BLANK_CHAR) { - continue; - } - FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH(); - spacing = -fontsize_h * item.m_OriginX / 1000; - continue; - } - FX_FLOAT charSpace = pTextObj->m_TextState.GetObject()->m_CharSpace; - if (charSpace > 0.001) { - spacing += matrix.TransformDistance(charSpace); - } else if (charSpace < -0.001) { - spacing -= matrix.TransformDistance(FXSYS_fabs(charSpace)); - } - spacing -= baseSpace; - if (spacing && i > 0) { - int last_width = 0; - FX_FLOAT fontsize_h = pTextObj->m_TextState.GetFontSizeH(); - FX_DWORD space_charcode = pFont->CharCodeFromUnicode(' '); - FX_FLOAT threshold = 0; - if (space_charcode != -1) { - threshold = fontsize_h * pFont->GetCharWidthF(space_charcode) / 1000; - } - if (threshold > fontsize_h / 3) { - threshold = 0; - } else { - threshold /= 2; - } - if (threshold == 0) { - threshold = fontsize_h; - int this_width = FXSYS_abs(GetCharWidth(item.m_CharCode, pFont)); - threshold = this_width > last_width ? (FX_FLOAT)this_width - : (FX_FLOAT)last_width; - threshold = _NormalizeThreshold(threshold); - threshold = fontsize_h * threshold / 1000; - } - if (threshold && (spacing && spacing >= threshold)) { - charinfo.m_Unicode = TEXT_BLANK_CHAR; - charinfo.m_Flag = FPDFTEXT_CHAR_GENERATED; - charinfo.m_pTextObj = pTextObj; - charinfo.m_Index = m_TextBuf.GetLength(); - m_TempTextBuf.AppendChar(TEXT_BLANK_CHAR); - charinfo.m_CharCode = -1; - charinfo.m_Matrix.Copy(formMatrix); - matrix.Transform(item.m_OriginX, item.m_OriginY, charinfo.m_OriginX, - charinfo.m_OriginY); - charinfo.m_CharBox = - CFX_FloatRect(charinfo.m_OriginX, charinfo.m_OriginY, - charinfo.m_OriginX, charinfo.m_OriginY); - m_TempCharList.push_back(charinfo); - } - if (item.m_CharCode == (FX_DWORD)-1) { - continue; - } - } - spacing = 0; - CFX_WideString wstrItem = pFont->UnicodeFromCharCode(item.m_CharCode); - FX_BOOL bNoUnicode = FALSE; - FX_WCHAR wChar = wstrItem.GetAt(0); - if ((wstrItem.IsEmpty() || wChar == 0) && item.m_CharCode) { - if (wstrItem.IsEmpty()) { - wstrItem += (FX_WCHAR)item.m_CharCode; - } else { - wstrItem.SetAt(0, (FX_WCHAR)item.m_CharCode); - } - bNoUnicode = TRUE; - } - charinfo.m_Index = -1; - charinfo.m_CharCode = item.m_CharCode; - if (bNoUnicode) { - charinfo.m_Flag = FPDFTEXT_CHAR_UNUNICODE; - } else { - charinfo.m_Flag = FPDFTEXT_CHAR_NORMAL; - } - charinfo.m_pTextObj = pTextObj; - charinfo.m_OriginX = 0, charinfo.m_OriginY = 0; - matrix.Transform(item.m_OriginX, item.m_OriginY, charinfo.m_OriginX, - charinfo.m_OriginY); - FX_RECT rect = - charinfo.m_pTextObj->GetFont()->GetCharBBox(charinfo.m_CharCode); - charinfo.m_CharBox.top = - rect.top * pTextObj->GetFontSize() / 1000 + item.m_OriginY; - charinfo.m_CharBox.left = - rect.left * pTextObj->GetFontSize() / 1000 + item.m_OriginX; - charinfo.m_CharBox.right = - rect.right * pTextObj->GetFontSize() / 1000 + item.m_OriginX; - charinfo.m_CharBox.bottom = - rect.bottom * pTextObj->GetFontSize() / 1000 + item.m_OriginY; - if (fabsf(charinfo.m_CharBox.top - charinfo.m_CharBox.bottom) < 0.01f) { - charinfo.m_CharBox.top = - charinfo.m_CharBox.bottom + pTextObj->GetFontSize(); - } - if (fabsf(charinfo.m_CharBox.right - charinfo.m_CharBox.left) < 0.01f) { - charinfo.m_CharBox.right = - charinfo.m_CharBox.left + pTextObj->GetCharWidth(charinfo.m_CharCode); - } - matrix.TransformRect(charinfo.m_CharBox); - charinfo.m_Matrix.Copy(matrix); - if (wstrItem.IsEmpty()) { - charinfo.m_Unicode = 0; - m_TempCharList.push_back(charinfo); - m_TempTextBuf.AppendChar(0xfffe); - continue; - } else { - int nTotal = wstrItem.GetLength(); - FX_BOOL bDel = FALSE; - const int count = - std::min(pdfium::CollectionSize(m_TempCharList), 7); - FX_FLOAT threshold = charinfo.m_Matrix.TransformXDistance( - (FX_FLOAT)TEXT_CHARRATIO_GAPDELTA * pTextObj->GetFontSize()); - for (int n = pdfium::CollectionSize(m_TempCharList); - n > pdfium::CollectionSize(m_TempCharList) - count; n--) { - const PAGECHAR_INFO& charinfo1 = m_TempCharList[n - 1]; - if (charinfo1.m_CharCode == charinfo.m_CharCode && - charinfo1.m_pTextObj->GetFont() == charinfo.m_pTextObj->GetFont() && - FXSYS_fabs(charinfo1.m_OriginX - charinfo.m_OriginX) < threshold && - FXSYS_fabs(charinfo1.m_OriginY - charinfo.m_OriginY) < threshold) { - bDel = TRUE; - break; - } - } - if (!bDel) { - for (int nIndex = 0; nIndex < nTotal; nIndex++) { - charinfo.m_Unicode = wstrItem.GetAt(nIndex); - if (charinfo.m_Unicode) { - charinfo.m_Index = m_TextBuf.GetLength(); - m_TempTextBuf.AppendChar(charinfo.m_Unicode); - } else { - m_TempTextBuf.AppendChar(0xfffe); - } - m_TempCharList.push_back(charinfo); - } - } else if (i == 0) { - CFX_WideString str = m_TempTextBuf.GetWideString(); - if (!str.IsEmpty() && - str.GetAt(str.GetLength() - 1) == TEXT_BLANK_CHAR) { - m_TempTextBuf.Delete(m_TempTextBuf.GetLength() - 1, 1); - m_TempCharList.pop_back(); - } - } - } - } - if (bIsBidiAndMirrorInverse) { - SwapTempTextBuf(iCharListStartAppend, iBufStartAppend); - } -} - -int32_t CPDF_TextPage::GetTextObjectWritingMode( - const CPDF_TextObject* pTextObj) { - int32_t nChars = pTextObj->CountChars(); - if (nChars == 1) { - return m_TextlineDir; - } - CPDF_TextObjectItem first, last; - pTextObj->GetCharInfo(0, &first); - pTextObj->GetCharInfo(nChars - 1, &last); - CFX_Matrix textMatrix; - pTextObj->GetTextMatrix(&textMatrix); - textMatrix.TransformPoint(first.m_OriginX, first.m_OriginY); - textMatrix.TransformPoint(last.m_OriginX, last.m_OriginY); - FX_FLOAT dX = FXSYS_fabs(last.m_OriginX - first.m_OriginX); - FX_FLOAT dY = FXSYS_fabs(last.m_OriginY - first.m_OriginY); - if (dX <= 0.0001f && dY <= 0.0001f) { - return -1; - } - CFX_VectorF v(dX, dY); - v.Normalize(); - if (v.y <= 0.0872f) { - return v.x <= 0.0872f ? m_TextlineDir : 0; - } - if (v.x <= 0.0872f) { - return 1; - } - return m_TextlineDir; -} -FX_BOOL CPDF_TextPage::IsHyphen(FX_WCHAR curChar) { - CFX_WideString strCurText = m_TempTextBuf.GetWideString(); - if (strCurText.GetLength() == 0) { - strCurText = m_TextBuf.GetWideString(); - } - FX_STRSIZE nCount = strCurText.GetLength(); - int nIndex = nCount - 1; - FX_WCHAR wcTmp = strCurText.GetAt(nIndex); - while (wcTmp == 0x20 && nIndex <= nCount - 1 && nIndex >= 0) { - wcTmp = strCurText.GetAt(--nIndex); - } - if (0x2D == wcTmp || 0xAD == wcTmp) { - if (--nIndex > 0) { - FX_WCHAR preChar = strCurText.GetAt((nIndex)); - if (((preChar >= L'A' && preChar <= L'Z') || - (preChar >= L'a' && preChar <= L'z')) && - ((curChar >= L'A' && curChar <= L'Z') || - (curChar >= L'a' && curChar <= L'z'))) { - return TRUE; - } - } - const PAGECHAR_INFO* preInfo; - if (!m_TempCharList.empty()) { - preInfo = &m_TempCharList.back(); - } else if (!m_CharList.empty()) { - preInfo = &m_CharList.back(); - } else { - return FALSE; - } - if (FPDFTEXT_CHAR_PIECE == preInfo->m_Flag && - (0xAD == preInfo->m_Unicode || 0x2D == preInfo->m_Unicode)) { - return TRUE; - } - } - return FALSE; -} - -int CPDF_TextPage::ProcessInsertObject(const CPDF_TextObject* pObj, - const CFX_Matrix& formMatrix) { - FindPreviousTextObject(); - FX_BOOL bNewline = FALSE; - int WritingMode = GetTextObjectWritingMode(pObj); - if (WritingMode == -1) { - WritingMode = GetTextObjectWritingMode(m_pPreTextObj); - } - CFX_FloatRect this_rect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right, - pObj->m_Top); - CFX_FloatRect prev_rect(m_pPreTextObj->m_Left, m_pPreTextObj->m_Bottom, - m_pPreTextObj->m_Right, m_pPreTextObj->m_Top); - CPDF_TextObjectItem PrevItem, item; - int nItem = m_pPreTextObj->CountItems(); - m_pPreTextObj->GetItemInfo(nItem - 1, &PrevItem); - pObj->GetItemInfo(0, &item); - CFX_WideString wstrItem = - pObj->GetFont()->UnicodeFromCharCode(item.m_CharCode); - if (wstrItem.IsEmpty()) { - wstrItem += (FX_WCHAR)item.m_CharCode; - } - FX_WCHAR curChar = wstrItem.GetAt(0); - if (WritingMode == 0) { - if (this_rect.Height() > 4.5 && prev_rect.Height() > 4.5) { - FX_FLOAT top = - this_rect.top < prev_rect.top ? this_rect.top : prev_rect.top; - FX_FLOAT bottom = this_rect.bottom > prev_rect.bottom ? this_rect.bottom - : prev_rect.bottom; - if (bottom >= top) { - if (IsHyphen(curChar)) { - return 3; - } - return 2; - } - } - } else if (WritingMode == 1) { - if (this_rect.Width() > pObj->GetFontSize() * 0.1f && - prev_rect.Width() > m_pPreTextObj->GetFontSize() * 0.1f) { - FX_FLOAT left = this_rect.left > m_CurlineRect.left ? this_rect.left - : m_CurlineRect.left; - FX_FLOAT right = this_rect.right < m_CurlineRect.right - ? this_rect.right - : m_CurlineRect.right; - if (right <= left) { - if (IsHyphen(curChar)) { - return 3; - } - return 2; - } - } - } - FX_FLOAT last_pos = PrevItem.m_OriginX; - int nLastWidth = GetCharWidth(PrevItem.m_CharCode, m_pPreTextObj->GetFont()); - FX_FLOAT last_width = nLastWidth * m_pPreTextObj->GetFontSize() / 1000; - last_width = FXSYS_fabs(last_width); - int nThisWidth = GetCharWidth(item.m_CharCode, pObj->GetFont()); - FX_FLOAT this_width = nThisWidth * pObj->GetFontSize() / 1000; - this_width = FXSYS_fabs(this_width); - FX_FLOAT threshold = - last_width > this_width ? last_width / 4 : this_width / 4; - CFX_Matrix prev_matrix, prev_reverse; - m_pPreTextObj->GetTextMatrix(&prev_matrix); - prev_matrix.Concat(m_perMatrix); - prev_reverse.SetReverse(prev_matrix); - FX_FLOAT x = pObj->GetPosX(); - FX_FLOAT y = pObj->GetPosY(); - formMatrix.Transform(x, y); - prev_reverse.Transform(x, y); - if (last_width < this_width) { - threshold = prev_reverse.TransformDistance(threshold); - } - CFX_FloatRect rect1(m_pPreTextObj->m_Left, pObj->m_Bottom, - m_pPreTextObj->m_Right, pObj->m_Top); - CFX_FloatRect rect2(m_pPreTextObj->m_Left, m_pPreTextObj->m_Bottom, - m_pPreTextObj->m_Right, m_pPreTextObj->m_Top); - CFX_FloatRect rect3 = rect1; - rect1.Intersect(rect2); - if (WritingMode == 0) { - if ((rect1.IsEmpty() && rect2.Height() > 5 && rect3.Height() > 5) || - ((y > threshold * 2 || y < threshold * -3) && - (FXSYS_fabs(y) < 1 ? FXSYS_fabs(x) < FXSYS_fabs(y) : TRUE))) { - bNewline = TRUE; - if (nItem > 1) { - CPDF_TextObjectItem tempItem; - m_pPreTextObj->GetItemInfo(0, &tempItem); - CFX_Matrix m; - m_pPreTextObj->GetTextMatrix(&m); - if (PrevItem.m_OriginX > tempItem.m_OriginX && - m_DisplayMatrix.a > 0.9 && m_DisplayMatrix.b < 0.1 && - m_DisplayMatrix.c < 0.1 && m_DisplayMatrix.d < -0.9 && m.b < 0.1 && - m.c < 0.1) { - CFX_FloatRect re(0, m_pPreTextObj->m_Bottom, 1000, - m_pPreTextObj->m_Top); - if (re.Contains(pObj->GetPosX(), pObj->GetPosY())) { - bNewline = FALSE; - } else { - CFX_FloatRect re(0, pObj->m_Bottom, 1000, pObj->m_Top); - if (re.Contains(m_pPreTextObj->GetPosX(), - m_pPreTextObj->GetPosY())) { - bNewline = FALSE; - } - } - } - } - } - } - if (bNewline) - return IsHyphen(curChar) ? 3 : 2; - - int32_t nChars = pObj->CountChars(); - if (nChars == 1 && (0x2D == curChar || 0xAD == curChar) && - IsHyphen(curChar)) { - return 3; - } - CFX_WideString PrevStr = - m_pPreTextObj->GetFont()->UnicodeFromCharCode(PrevItem.m_CharCode); - FX_WCHAR preChar = PrevStr.GetAt(PrevStr.GetLength() - 1); - CFX_Matrix matrix; - pObj->GetTextMatrix(&matrix); - matrix.Concat(formMatrix); - threshold = (FX_FLOAT)(nLastWidth > nThisWidth ? nLastWidth : nThisWidth); - threshold = threshold > 400 - ? (threshold < 700 - ? threshold / 4 - : (threshold > 800 ? threshold / 6 : threshold / 5)) - : (threshold / 2); - if (nLastWidth >= nThisWidth) { - threshold *= FXSYS_fabs(m_pPreTextObj->GetFontSize()); - } else { - threshold *= FXSYS_fabs(pObj->GetFontSize()); - threshold = matrix.TransformDistance(threshold); - threshold = prev_reverse.TransformDistance(threshold); - } - threshold /= 1000; - if ((threshold < 1.4881 && threshold > 1.4879) || - (threshold < 1.39001 && threshold > 1.38999)) { - threshold *= 1.5; - } - if (FXSYS_fabs(last_pos + last_width - x) > threshold && curChar != L' ' && - preChar != L' ') { - if (curChar != L' ' && preChar != L' ') { - if ((x - last_pos - last_width) > threshold || - (last_pos - x - last_width) > threshold) { - return 1; - } - if (x < 0 && (last_pos - x - last_width) > threshold) { - return 1; - } - if ((x - last_pos - last_width) > this_width || - (x - last_pos - this_width) > last_width) { - return 1; - } - } - } - return 0; -} - -FX_BOOL CPDF_TextPage::IsSameTextObject(CPDF_TextObject* pTextObj1, - CPDF_TextObject* pTextObj2) { - if (!pTextObj1 || !pTextObj2) { - return FALSE; - } - CFX_FloatRect rcPreObj(pTextObj2->m_Left, pTextObj2->m_Bottom, - pTextObj2->m_Right, pTextObj2->m_Top); - CFX_FloatRect rcCurObj(pTextObj1->m_Left, pTextObj1->m_Bottom, - pTextObj1->m_Right, pTextObj1->m_Top); - if (rcPreObj.IsEmpty() && rcCurObj.IsEmpty()) { - FX_FLOAT dbXdif = FXSYS_fabs(rcPreObj.left - rcCurObj.left); - size_t nCount = m_CharList.size(); - if (nCount >= 2) { - PAGECHAR_INFO perCharTemp = m_CharList[nCount - 2]; - FX_FLOAT dbSpace = perCharTemp.m_CharBox.Width(); - if (dbXdif > dbSpace) { - return FALSE; - } - } - } - if (!rcPreObj.IsEmpty() || !rcCurObj.IsEmpty()) { - rcPreObj.Intersect(rcCurObj); - if (rcPreObj.IsEmpty()) { - return FALSE; - } - if (FXSYS_fabs(rcPreObj.Width() - rcCurObj.Width()) > - rcCurObj.Width() / 2) { - return FALSE; - } - if (pTextObj2->GetFontSize() != pTextObj1->GetFontSize()) { - return FALSE; - } - } - int nPreCount = pTextObj2->CountItems(); - int nCurCount = pTextObj1->CountItems(); - if (nPreCount != nCurCount) { - return FALSE; - } - CPDF_TextObjectItem itemPer, itemCur; - for (int i = 0; i < nPreCount; i++) { - pTextObj2->GetItemInfo(i, &itemPer); - pTextObj1->GetItemInfo(i, &itemCur); - if (itemCur.m_CharCode != itemPer.m_CharCode) { - return FALSE; - } - } - if (FXSYS_fabs(pTextObj1->GetPosX() - pTextObj2->GetPosX()) > - GetCharWidth(itemPer.m_CharCode, pTextObj2->GetFont()) * - pTextObj2->GetFontSize() / 1000 * 0.9 || - FXSYS_fabs(pTextObj1->GetPosY() - pTextObj2->GetPosY()) > - std::max(std::max(rcPreObj.Height(), rcPreObj.Width()), - pTextObj2->GetFontSize()) / - 8) { - return FALSE; - } - return TRUE; -} -FX_BOOL CPDF_TextPage::IsSameAsPreTextObject( - CPDF_TextObject* pTextObj, - const CPDF_PageObjectList* pObjList, - CPDF_PageObjectList::const_iterator iter) { - int i = 0; - while (i < 5 && iter != pObjList->begin()) { - --iter; - CPDF_PageObject* pOtherObj = iter->get(); - if (pOtherObj == pTextObj || !pOtherObj->IsText()) - continue; - if (IsSameTextObject(pOtherObj->AsText(), pTextObj)) - return TRUE; - ++i; - } - return FALSE; -} - -FX_BOOL CPDF_TextPage::GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info) { - const PAGECHAR_INFO* preChar; - if (!m_TempCharList.empty()) { - preChar = &m_TempCharList.back(); - } else if (!m_CharList.empty()) { - preChar = &m_CharList.back(); - } else { - return FALSE; - } - info.m_Index = m_TextBuf.GetLength(); - info.m_Unicode = unicode; - info.m_pTextObj = NULL; - info.m_CharCode = -1; - info.m_Flag = FPDFTEXT_CHAR_GENERATED; - int preWidth = 0; - if (preChar->m_pTextObj && preChar->m_CharCode != (FX_DWORD)-1) - preWidth = - GetCharWidth(preChar->m_CharCode, preChar->m_pTextObj->GetFont()); - - FX_FLOAT fFontSize = preChar->m_pTextObj ? preChar->m_pTextObj->GetFontSize() - : preChar->m_CharBox.Height(); - if (!fFontSize) - fFontSize = kDefaultFontSize; - - info.m_OriginX = preChar->m_OriginX + preWidth * (fFontSize) / 1000; - info.m_OriginY = preChar->m_OriginY; - info.m_CharBox = CFX_FloatRect(info.m_OriginX, info.m_OriginY, info.m_OriginX, - info.m_OriginY); - return TRUE; -} - -FX_BOOL CPDF_TextPage::IsRectIntersect(const CFX_FloatRect& rect1, - const CFX_FloatRect& rect2) { - CFX_FloatRect rect = rect1; - rect.Intersect(rect2); - return !rect.IsEmpty(); -} - -FX_BOOL CPDF_TextPage::IsLetter(FX_WCHAR unicode) { - if (unicode < L'A') { - return FALSE; - } - if (unicode > L'Z' && unicode < L'a') { - return FALSE; - } - if (unicode > L'z') { - return FALSE; - } - return TRUE; -} - -CPDF_TextPageFind::CPDF_TextPageFind(const IPDF_TextPage* pTextPage) - : m_pTextPage(pTextPage), - m_flags(0), - m_findNextStart(-1), - m_findPreStart(-1), - m_bMatchCase(FALSE), - m_bMatchWholeWord(FALSE), - m_resStart(0), - m_resEnd(-1), - m_IsFind(FALSE) { - m_strText = m_pTextPage->GetPageText(); - int nCount = pTextPage->CountChars(); - if (nCount) { - m_CharIndex.push_back(0); - } - for (int i = 0; i < nCount; i++) { - FPDF_CHAR_INFO info; - pTextPage->GetCharInfo(i, &info); - int indexSize = pdfium::CollectionSize(m_CharIndex); - if (info.m_Flag == CHAR_NORMAL || info.m_Flag == CHAR_GENERATED) { - if (indexSize % 2) { - m_CharIndex.push_back(1); - } else { - if (indexSize <= 0) { - continue; - } - m_CharIndex[indexSize - 1] += 1; - } - } else { - if (indexSize % 2) { - if (indexSize <= 0) { - continue; - } - m_CharIndex[indexSize - 1] = i + 1; - } else { - m_CharIndex.push_back(i + 1); - } - } - } - int indexSize = pdfium::CollectionSize(m_CharIndex); - if (indexSize % 2) { - m_CharIndex.erase(m_CharIndex.begin() + indexSize - 1); - } -} - -int CPDF_TextPageFind::GetCharIndex(int index) const { - return m_pTextPage->CharIndexFromTextIndex(index); -} - -FX_BOOL CPDF_TextPageFind::FindFirst(const CFX_WideString& findwhat, - int flags, - int startPos) { - if (!m_pTextPage) { - return FALSE; - } - if (m_strText.IsEmpty() || m_bMatchCase != (flags & FPDFTEXT_MATCHCASE)) { - m_strText = m_pTextPage->GetPageText(); - } - CFX_WideString findwhatStr = findwhat; - m_findWhat = findwhatStr; - m_flags = flags; - m_bMatchCase = flags & FPDFTEXT_MATCHCASE; - if (m_strText.IsEmpty()) { - m_IsFind = FALSE; - return TRUE; - } - FX_STRSIZE len = findwhatStr.GetLength(); - if (!m_bMatchCase) { - findwhatStr.MakeLower(); - m_strText.MakeLower(); - } - m_bMatchWholeWord = flags & FPDFTEXT_MATCHWHOLEWORD; - m_findNextStart = startPos; - if (startPos == -1) { - m_findPreStart = m_strText.GetLength() - 1; - } else { - m_findPreStart = startPos; - } - m_csFindWhatArray.clear(); - int i = 0; - while (i < len) { - if (findwhatStr.GetAt(i) != ' ') { - break; - } - i++; - } - if (i < len) { - ExtractFindWhat(findwhatStr); - } else { - m_csFindWhatArray.push_back(findwhatStr); - } - if (m_csFindWhatArray.empty()) { - return FALSE; - } - m_IsFind = TRUE; - m_resStart = 0; - m_resEnd = -1; - return TRUE; -} - -FX_BOOL CPDF_TextPageFind::FindNext() { - if (!m_pTextPage) { - return FALSE; - } - m_resArray.RemoveAll(); - if (m_findNextStart == -1) { - return FALSE; - } - if (m_strText.IsEmpty()) { - m_IsFind = FALSE; - return m_IsFind; - } - int strLen = m_strText.GetLength(); - if (m_findNextStart > strLen - 1) { - m_IsFind = FALSE; - return m_IsFind; - } - int nCount = pdfium::CollectionSize(m_csFindWhatArray); - int nResultPos = 0; - int nStartPos = 0; - nStartPos = m_findNextStart; - FX_BOOL bSpaceStart = FALSE; - for (int iWord = 0; iWord < nCount; iWord++) { - CFX_WideString csWord = m_csFindWhatArray[iWord]; - if (csWord.IsEmpty()) { - if (iWord == nCount - 1) { - FX_WCHAR strInsert = m_strText.GetAt(nStartPos); - if (strInsert == TEXT_LINEFEED_CHAR || strInsert == TEXT_BLANK_CHAR || - strInsert == TEXT_RETURN_CHAR || strInsert == 160) { - nResultPos = nStartPos + 1; - break; - } - iWord = -1; - } else if (iWord == 0) { - bSpaceStart = TRUE; - } - continue; - } - int endIndex; - nResultPos = m_strText.Find(csWord.c_str(), nStartPos); - if (nResultPos == -1) { - m_IsFind = FALSE; - return m_IsFind; - } - endIndex = nResultPos + csWord.GetLength() - 1; - if (iWord == 0) { - m_resStart = nResultPos; - } - FX_BOOL bMatch = TRUE; - if (iWord != 0 && !bSpaceStart) { - int PreResEndPos = nStartPos; - int curChar = csWord.GetAt(0); - CFX_WideString lastWord = m_csFindWhatArray[iWord - 1]; - int lastChar = lastWord.GetAt(lastWord.GetLength() - 1); - if (nStartPos == nResultPos && - !(_IsIgnoreSpaceCharacter(lastChar) || - _IsIgnoreSpaceCharacter(curChar))) { - bMatch = FALSE; - } - for (int d = PreResEndPos; d < nResultPos; d++) { - FX_WCHAR strInsert = m_strText.GetAt(d); - if (strInsert != TEXT_LINEFEED_CHAR && strInsert != TEXT_BLANK_CHAR && - strInsert != TEXT_RETURN_CHAR && strInsert != 160) { - bMatch = FALSE; - break; - } - } - } else if (bSpaceStart) { - if (nResultPos > 0) { - FX_WCHAR strInsert = m_strText.GetAt(nResultPos - 1); - if (strInsert != TEXT_LINEFEED_CHAR && strInsert != TEXT_BLANK_CHAR && - strInsert != TEXT_RETURN_CHAR && strInsert != 160) { - bMatch = FALSE; - m_resStart = nResultPos; - } else { - m_resStart = nResultPos - 1; - } - } - } - if (m_bMatchWholeWord && bMatch) { - bMatch = IsMatchWholeWord(m_strText, nResultPos, endIndex); - } - nStartPos = endIndex + 1; - if (!bMatch) { - iWord = -1; - if (bSpaceStart) { - nStartPos = m_resStart + m_csFindWhatArray[1].GetLength(); - } else { - nStartPos = m_resStart + m_csFindWhatArray[0].GetLength(); - } - } - } - m_resEnd = nResultPos + m_csFindWhatArray.back().GetLength() - 1; - m_IsFind = TRUE; - int resStart = GetCharIndex(m_resStart); - int resEnd = GetCharIndex(m_resEnd); - m_pTextPage->GetRectArray(resStart, resEnd - resStart + 1, m_resArray); - if (m_flags & FPDFTEXT_CONSECUTIVE) { - m_findNextStart = m_resStart + 1; - m_findPreStart = m_resEnd - 1; - } else { - m_findNextStart = m_resEnd + 1; - m_findPreStart = m_resStart - 1; - } - return m_IsFind; -} - -FX_BOOL CPDF_TextPageFind::FindPrev() { - if (!m_pTextPage) { - return FALSE; - } - m_resArray.RemoveAll(); - if (m_strText.IsEmpty() || m_findPreStart < 0) { - m_IsFind = FALSE; - return m_IsFind; - } - CPDF_TextPageFind findEngine(m_pTextPage); - FX_BOOL ret = findEngine.FindFirst(m_findWhat, m_flags); - if (!ret) { - m_IsFind = FALSE; - return m_IsFind; - } - int order = -1, MatchedCount = 0; - while (ret) { - ret = findEngine.FindNext(); - if (ret) { - int order1 = findEngine.GetCurOrder(); - int MatchedCount1 = findEngine.GetMatchedCount(); - if (((order1 + MatchedCount1) - 1) > m_findPreStart) { - break; - } - order = order1; - MatchedCount = MatchedCount1; - } - } - if (order == -1) { - m_IsFind = FALSE; - return m_IsFind; - } - m_resStart = m_pTextPage->TextIndexFromCharIndex(order); - m_resEnd = m_pTextPage->TextIndexFromCharIndex(order + MatchedCount - 1); - m_IsFind = TRUE; - m_pTextPage->GetRectArray(order, MatchedCount, m_resArray); - if (m_flags & FPDFTEXT_CONSECUTIVE) { - m_findNextStart = m_resStart + 1; - m_findPreStart = m_resEnd - 1; - } else { - m_findNextStart = m_resEnd + 1; - m_findPreStart = m_resStart - 1; - } - return m_IsFind; -} - -void CPDF_TextPageFind::ExtractFindWhat(const CFX_WideString& findwhat) { - if (findwhat.IsEmpty()) { - return; - } - int index = 0; - while (1) { - CFX_WideString csWord = TEXT_EMPTY; - int ret = - ExtractSubString(csWord, findwhat.c_str(), index, TEXT_BLANK_CHAR); - if (csWord.IsEmpty()) { - if (ret) { - m_csFindWhatArray.push_back(L""); - index++; - continue; - } else { - break; - } - } - int pos = 0; - while (pos < csWord.GetLength()) { - CFX_WideString curStr = csWord.Mid(pos, 1); - FX_WCHAR curChar = csWord.GetAt(pos); - if (_IsIgnoreSpaceCharacter(curChar)) { - if (pos > 0 && curChar == 0x2019) { - pos++; - continue; - } - if (pos > 0) { - m_csFindWhatArray.push_back(csWord.Mid(0, pos)); - } - m_csFindWhatArray.push_back(curStr); - if (pos == csWord.GetLength() - 1) { - csWord.Empty(); - break; - } - csWord = csWord.Right(csWord.GetLength() - pos - 1); - pos = 0; - continue; - } - pos++; - } - if (!csWord.IsEmpty()) { - m_csFindWhatArray.push_back(csWord); - } - index++; - } -} - -FX_BOOL CPDF_TextPageFind::IsMatchWholeWord(const CFX_WideString& csPageText, - int startPos, - int endPos) { - FX_WCHAR char_left = 0; - FX_WCHAR char_right = 0; - int char_count = endPos - startPos + 1; - if (char_count < 1) { - return FALSE; - } - if (char_count == 1 && csPageText.GetAt(startPos) > 255) { - return TRUE; - } - if (startPos - 1 >= 0) { - char_left = csPageText.GetAt(startPos - 1); - } - if (startPos + char_count < csPageText.GetLength()) { - char_right = csPageText.GetAt(startPos + char_count); - } - if ((char_left > 'A' && char_left < 'a') || - (char_left > 'a' && char_left < 'z') || - (char_left > 0xfb00 && char_left < 0xfb06) || std::iswdigit(char_left) || - (char_right > 'A' && char_right < 'a') || - (char_right > 'a' && char_right < 'z') || - (char_right > 0xfb00 && char_right < 0xfb06) || - std::iswdigit(char_right)) { - return FALSE; - } - if (!(('A' > char_left || char_left > 'Z') && - ('a' > char_left || char_left > 'z') && - ('A' > char_right || char_right > 'Z') && - ('a' > char_right || char_right > 'z'))) { - return FALSE; - } - if (char_count > 0) { - if (csPageText.GetAt(startPos) >= L'0' && - csPageText.GetAt(startPos) <= L'9' && char_left >= L'0' && - char_left <= L'9') { - return FALSE; - } - if (csPageText.GetAt(endPos) >= L'0' && csPageText.GetAt(endPos) <= L'9' && - char_right >= L'0' && char_right <= L'9') { - return FALSE; - } - } - return TRUE; -} - -FX_BOOL CPDF_TextPageFind::ExtractSubString(CFX_WideString& rString, - const FX_WCHAR* lpszFullString, - int iSubString, - FX_WCHAR chSep) { - if (!lpszFullString) { - return FALSE; - } - while (iSubString--) { - lpszFullString = FXSYS_wcschr(lpszFullString, chSep); - if (!lpszFullString) { - rString.Empty(); - return FALSE; - } - lpszFullString++; - while (*lpszFullString == chSep) { - lpszFullString++; - } - } - const FX_WCHAR* lpchEnd = FXSYS_wcschr(lpszFullString, chSep); - int nLen = lpchEnd ? (int)(lpchEnd - lpszFullString) - : (int)FXSYS_wcslen(lpszFullString); - ASSERT(nLen >= 0); - FXSYS_memcpy(rString.GetBuffer(nLen), lpszFullString, - nLen * sizeof(FX_WCHAR)); - rString.ReleaseBuffer(); - return TRUE; -} - -CFX_WideString CPDF_TextPageFind::MakeReverse(const CFX_WideString& str) { - CFX_WideString str2; - str2.Empty(); - int nlen = str.GetLength(); - for (int i = nlen - 1; i >= 0; i--) { - str2 += str.GetAt(i); - } - return str2; -} - -void CPDF_TextPageFind::GetRectArray(CFX_RectArray& rects) const { - rects.Copy(m_resArray); -} - -int CPDF_TextPageFind::GetCurOrder() const { - return GetCharIndex(m_resStart); -} - -int CPDF_TextPageFind::GetMatchedCount() const { - int resStart = GetCharIndex(m_resStart); - int resEnd = GetCharIndex(m_resEnd); - return resEnd - resStart + 1; -} - -CPDF_LinkExtract::CPDF_LinkExtract() - : m_pTextPage(nullptr), m_bIsParsed(false) { -} - -CPDF_LinkExtract::~CPDF_LinkExtract() { - DeleteLinkList(); -} - -FX_BOOL CPDF_LinkExtract::ExtractLinks(const IPDF_TextPage* pTextPage) { - if (!pTextPage || !pTextPage->IsParsed()) - return FALSE; - - m_pTextPage = (const CPDF_TextPage*)pTextPage; - m_strPageText = m_pTextPage->GetPageText(0, -1); - DeleteLinkList(); - if (m_strPageText.IsEmpty()) { - return FALSE; - } - ParseLink(); - m_bIsParsed = true; - return TRUE; -} - -void CPDF_LinkExtract::DeleteLinkList() { - while (m_LinkList.GetSize()) { - CPDF_LinkExt* linkinfo = NULL; - linkinfo = m_LinkList.GetAt(0); - m_LinkList.RemoveAt(0); - delete linkinfo; - } - m_LinkList.RemoveAll(); -} - -int CPDF_LinkExtract::CountLinks() const { - if (!m_bIsParsed) { - return -1; - } - return m_LinkList.GetSize(); -} - -void CPDF_LinkExtract::ParseLink() { - int start = 0, pos = 0; - int TotalChar = m_pTextPage->CountChars(); - while (pos < TotalChar) { - FPDF_CHAR_INFO pageChar; - m_pTextPage->GetCharInfo(pos, &pageChar); - if (pageChar.m_Flag == CHAR_GENERATED || pageChar.m_Unicode == 0x20 || - pos == TotalChar - 1) { - int nCount = pos - start; - if (pos == TotalChar - 1) { - nCount++; - } - CFX_WideString strBeCheck; - strBeCheck = m_pTextPage->GetPageText(start, nCount); - if (strBeCheck.GetLength() > 5) { - while (strBeCheck.GetLength() > 0) { - FX_WCHAR ch = strBeCheck.GetAt(strBeCheck.GetLength() - 1); - if (ch == L')' || ch == L',' || ch == L'>' || ch == L'.') { - strBeCheck = strBeCheck.Mid(0, strBeCheck.GetLength() - 1); - nCount--; - } else { - break; - } - } - if (nCount > 5 && - (CheckWebLink(strBeCheck) || CheckMailLink(strBeCheck))) { - AppendToLinkList(start, nCount, strBeCheck); - } - } - start = ++pos; - } else { - pos++; - } - } -} - -FX_BOOL CPDF_LinkExtract::CheckWebLink(CFX_WideString& strBeCheck) { - CFX_WideString str = strBeCheck; - str.MakeLower(); - if (str.Find(L"http://www.") != -1) { - strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"http://www.")); - return TRUE; - } - if (str.Find(L"http://") != -1) { - strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"http://")); - return TRUE; - } - if (str.Find(L"https://www.") != -1) { - strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"https://www.")); - return TRUE; - } - if (str.Find(L"https://") != -1) { - strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"https://")); - return TRUE; - } - if (str.Find(L"www.") != -1) { - strBeCheck = strBeCheck.Right(str.GetLength() - str.Find(L"www.")); - strBeCheck = L"http://" + strBeCheck; - return TRUE; - } - return FALSE; -} - -bool CPDF_LinkExtract::CheckMailLink(CFX_WideString& str) { - int aPos = str.Find(L'@'); - // Invalid when no '@'. - if (aPos < 1) { - return FALSE; - } - - // Check the local part. - int pPos = aPos; // Used to track the position of '@' or '.'. - for (int i = aPos - 1; i >= 0; i--) { - FX_WCHAR ch = str.GetAt(i); - if (ch == L'_' || ch == L'-' || FXSYS_iswalnum(ch)) { - continue; - } - if (ch != L'.' || i == pPos - 1 || i == 0) { - if (i == aPos - 1) { - // There is '.' or invalid char before '@'. - return FALSE; - } - // End extracting for other invalid chars, '.' at the beginning, or - // consecutive '.'. - int removed_len = i == pPos - 1 ? i + 2 : i + 1; - str = str.Right(str.GetLength() - removed_len); - break; - } - // Found a valid '.'. - pPos = i; - } - - // Check the domain name part. - aPos = str.Find(L'@'); - if (aPos < 1) { - return FALSE; - } - str.TrimRight(L'.'); - // At least one '.' in domain name, but not at the beginning. - // TODO(weili): RFC5322 allows domain names to be a local name without '.'. - // Check whether we should remove this check. - int ePos = str.Find(L'.', aPos + 1); - if (ePos == -1 || ePos == aPos + 1) { - return FALSE; - } - // Validate all other chars in domain name. - int nLen = str.GetLength(); - pPos = 0; // Used to track the position of '.'. - for (int i = aPos + 1; i < nLen; i++) { - FX_WCHAR wch = str.GetAt(i); - if (wch == L'-' || FXSYS_iswalnum(wch)) { - continue; - } - if (wch != L'.' || i == pPos + 1) { - // Domain name should end before invalid char. - int host_end = i == pPos + 1 ? i - 2 : i - 1; - if (pPos > 0 && host_end - aPos >= 3) { - // Trim the ending invalid chars if there is at least one '.' and name. - str = str.Left(host_end + 1); - break; - } - return FALSE; - } - pPos = i; - } - - if (str.Find(L"mailto:") == -1) { - str = L"mailto:" + str; - } - return TRUE; -} - -void CPDF_LinkExtract::AppendToLinkList(int start, - int count, - const CFX_WideString& strUrl) { - CPDF_LinkExt* linkInfo = new CPDF_LinkExt; - linkInfo->m_strUrl = strUrl; - linkInfo->m_Start = start; - linkInfo->m_Count = count; - m_LinkList.Add(linkInfo); -} - -CFX_WideString CPDF_LinkExtract::GetURL(int index) const { - if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) { - return L""; - } - CPDF_LinkExt* link = NULL; - link = m_LinkList.GetAt(index); - if (!link) { - return L""; - } - return link->m_strUrl; -} -void CPDF_LinkExtract::GetBoundedSegment(int index, - int& start, - int& count) const { - if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) { - return; - } - CPDF_LinkExt* link = NULL; - link = m_LinkList.GetAt(index); - if (!link) { - return; - } - start = link->m_Start; - count = link->m_Count; -} - -void CPDF_LinkExtract::GetRects(int index, CFX_RectArray& rects) const { - if (!m_bIsParsed || index < 0 || index >= m_LinkList.GetSize()) { - return; - } - CPDF_LinkExt* link = NULL; - link = m_LinkList.GetAt(index); - if (!link) { - return; - } - m_pTextPage->GetRectArray(link->m_Start, link->m_Count, rects); -} diff --git a/core/src/fpdftext/fpdf_text_int_unittest.cpp b/core/src/fpdftext/fpdf_text_int_unittest.cpp deleted file mode 100644 index b482f02be4..0000000000 --- a/core/src/fpdftext/fpdf_text_int_unittest.cpp +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "testing/gtest/include/gtest/gtest.h" - -#include "core/src/fpdftext/text_int.h" - -// Class to help test functions in CPDF_LinkExtract class. -class CPDF_TestLinkExtract : public CPDF_LinkExtract { - private: - // Add test cases as friends to access protected member functions. - // Access CheckMailLink. - FRIEND_TEST(fpdf_text_int, CheckMailLink); -}; - -TEST(fpdf_text_int, CheckMailLink) { - CPDF_TestLinkExtract extractor; - // Check cases that fail to extract valid mail link. - const wchar_t* invalid_strs[] = { - L"", - L"peter.pan" // '@' is required. - L"abc@server", // Domain name needs at least one '.'. - L"abc.@gmail.com", // '.' can not immediately precede '@'. - L"abc@xyz&q.org", // Domain name should not contain '&'. - L"abc@.xyz.org", // Domain name should not start with '.'. - L"fan@g..com" // Domain name should not have consecutive '.' - }; - for (int i = 0; i < FX_ArraySize(invalid_strs); ++i) { - CFX_WideString text_str(invalid_strs[i]); - EXPECT_FALSE(extractor.CheckMailLink(text_str)); - } - - // Check cases that can extract valid mail link. - // An array of {input_string, expected_extracted_email_address}. - const wchar_t* valid_strs[][2] = { - {L"peter@abc.d", L"peter@abc.d"}, - {L"red.teddy.b@abc.com", L"red.teddy.b@abc.com"}, - {L"abc_@gmail.com", L"abc_@gmail.com"}, // '_' is ok before '@'. - {L"dummy-hi@gmail.com", - L"dummy-hi@gmail.com"}, // '-' is ok in user name. - {L"a..df@gmail.com", L"df@gmail.com"}, // Stop at consecutive '.'. - {L".john@yahoo.com", L"john@yahoo.com"}, // Remove heading '.'. - {L"abc@xyz.org?/", L"abc@xyz.org"}, // Trim ending invalid chars. - {L"fan{abc@xyz.org", L"abc@xyz.org"}, // Trim beginning invalid chars. - {L"fan@g.com..", L"fan@g.com"}, // Trim the ending periods. - {L"CAP.cap@Gmail.Com", L"CAP.cap@Gmail.Com"}, // Keep the original case. - }; - for (int i = 0; i < FX_ArraySize(valid_strs); ++i) { - CFX_WideString text_str(valid_strs[i][0]); - CFX_WideString expected_str(L"mailto:"); - expected_str += valid_strs[i][1]; - EXPECT_TRUE(extractor.CheckMailLink(text_str)); - EXPECT_STREQ(text_str.c_str(), expected_str.c_str()); - } -} diff --git a/core/src/fpdftext/text_int.h b/core/src/fpdftext/text_int.h deleted file mode 100644 index dd30148094..0000000000 --- a/core/src/fpdftext/text_int.h +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFTEXT_TEXT_INT_H_ -#define CORE_SRC_FPDFTEXT_TEXT_INT_H_ - -#include -#include - -#include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdftext/fpdf_text.h" -#include "core/include/fxcrt/fx_basic.h" - -class CFX_BidiChar; -class CPDF_FormObject; -class CPDF_LinkExtract; -class CPDF_TextPageFind; - -#define FPDFTEXT_CHAR_ERROR -1 -#define FPDFTEXT_CHAR_NORMAL 0 -#define FPDFTEXT_CHAR_GENERATED 1 -#define FPDFTEXT_CHAR_UNUNICODE 2 -#define FPDFTEXT_CHAR_HYPHEN 3 -#define FPDFTEXT_CHAR_PIECE 4 -#define FPDFTEXT_MC_PASS 0 -#define FPDFTEXT_MC_DONE 1 -#define FPDFTEXT_MC_DELAY 2 - -struct PAGECHAR_INFO { - int m_CharCode; - FX_WCHAR m_Unicode; - FX_FLOAT m_OriginX; - FX_FLOAT m_OriginY; - int32_t m_Flag; - CFX_FloatRect m_CharBox; - CPDF_TextObject* m_pTextObj; - CFX_Matrix m_Matrix; - int m_Index; -}; - -struct FPDF_SEGMENT { - int m_Start; - int m_nCount; -}; - -struct PDFTEXT_Obj { - CPDF_TextObject* m_pTextObj; - CFX_Matrix m_formMatrix; -}; - -class CPDF_TextPage : public IPDF_TextPage { - public: - CPDF_TextPage(const CPDF_Page* pPage, int flags); - ~CPDF_TextPage() override {} - - // IPDF_TextPage: - void ParseTextPage() override; - bool IsParsed() const override { return m_bIsParsed; } - int CharIndexFromTextIndex(int TextIndex) const override; - int TextIndexFromCharIndex(int CharIndex) const override; - int CountChars() const override; - void GetCharInfo(int index, FPDF_CHAR_INFO* info) const override; - void GetRectArray(int start, - int nCount, - CFX_RectArray& rectArray) const override; - int GetIndexAtPos(CFX_FloatPoint point, - FX_FLOAT xTolerance, - FX_FLOAT yTolerance) const override; - int GetIndexAtPos(FX_FLOAT x, - FX_FLOAT y, - FX_FLOAT xTolerance, - FX_FLOAT yTolerance) const override; - CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const override; - void GetRectsArrayByRect(const CFX_FloatRect& rect, - CFX_RectArray& resRectArray) const override; - CFX_WideString GetPageText(int start = 0, int nCount = -1) const override; - int CountRects(int start, int nCount) override; - void GetRect(int rectIndex, - FX_FLOAT& left, - FX_FLOAT& top, - FX_FLOAT& right, - FX_FLOAT& bottom) const override; - FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) override; - FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) override; - int CountBoundedSegments(FX_FLOAT left, - FX_FLOAT top, - FX_FLOAT right, - FX_FLOAT bottom, - FX_BOOL bContains = FALSE) override; - void GetBoundedSegment(int index, int& start, int& count) const override; - int GetWordBreak(int index, int direction) const override; - - static FX_BOOL IsRectIntersect(const CFX_FloatRect& rect1, - const CFX_FloatRect& rect2); - static FX_BOOL IsLetter(FX_WCHAR unicode); - - private: - FX_BOOL IsHyphen(FX_WCHAR curChar); - bool IsControlChar(const PAGECHAR_INFO& charInfo); - FX_BOOL GetBaselineRotate(int start, int end, int& Rotate); - void ProcessObject(); - void ProcessFormObject(CPDF_FormObject* pFormObj, - const CFX_Matrix& formMatrix); - void ProcessTextObject(PDFTEXT_Obj pObj); - void ProcessTextObject(CPDF_TextObject* pTextObj, - const CFX_Matrix& formMatrix, - const CPDF_PageObjectList* pObjList, - CPDF_PageObjectList::const_iterator ObjPos); - int ProcessInsertObject(const CPDF_TextObject* pObj, - const CFX_Matrix& formMatrix); - FX_BOOL GenerateCharInfo(FX_WCHAR unicode, PAGECHAR_INFO& info); - FX_BOOL IsSameAsPreTextObject(CPDF_TextObject* pTextObj, - const CPDF_PageObjectList* pObjList, - CPDF_PageObjectList::const_iterator ObjPos); - FX_BOOL IsSameTextObject(CPDF_TextObject* pTextObj1, - CPDF_TextObject* pTextObj2); - int GetCharWidth(FX_DWORD charCode, CPDF_Font* pFont) const; - void CloseTempLine(); - void OnPiece(CFX_BidiChar* pBidi, CFX_WideString& str); - int32_t PreMarkedContent(PDFTEXT_Obj pObj); - void ProcessMarkedContent(PDFTEXT_Obj pObj); - void CheckMarkedContentObject(int32_t& start, int32_t& nCount) const; - void FindPreviousTextObject(void); - void AddCharInfoByLRDirection(FX_WCHAR wChar, PAGECHAR_INFO info); - void AddCharInfoByRLDirection(FX_WCHAR wChar, PAGECHAR_INFO info); - int32_t GetTextObjectWritingMode(const CPDF_TextObject* pTextObj); - int32_t FindTextlineFlowDirection(); - - void SwapTempTextBuf(int32_t iCharListStartAppend, int32_t iBufStartAppend); - FX_BOOL IsRightToLeft(const CPDF_TextObject* pTextObj, - const CPDF_Font* pFont, - int nItems) const; - - const CPDF_Page* const m_pPage; - std::vector m_CharIndex; - std::deque m_CharList; - std::deque m_TempCharList; - CFX_WideTextBuf m_TextBuf; - CFX_WideTextBuf m_TempTextBuf; - const int m_parserflag; - CPDF_TextObject* m_pPreTextObj; - CFX_Matrix m_perMatrix; - bool m_bIsParsed; - CFX_Matrix m_DisplayMatrix; - CFX_ArrayTemplate m_Segments; - CFX_RectArray m_SelRects; - CFX_ArrayTemplate m_LineObj; - int32_t m_TextlineDir; - CFX_FloatRect m_CurlineRect; -}; - -class CPDF_TextPageFind : public IPDF_TextPageFind { - public: - explicit CPDF_TextPageFind(const IPDF_TextPage* pTextPage); - ~CPDF_TextPageFind() override {} - - // IPDF_TextPageFind - FX_BOOL FindFirst(const CFX_WideString& findwhat, - int flags, - int startPos = 0) override; - FX_BOOL FindNext() override; - FX_BOOL FindPrev() override; - void GetRectArray(CFX_RectArray& rects) const override; - int GetCurOrder() const override; - int GetMatchedCount() const override; - - protected: - void ExtractFindWhat(const CFX_WideString& findwhat); - FX_BOOL IsMatchWholeWord(const CFX_WideString& csPageText, - int startPos, - int endPos); - FX_BOOL ExtractSubString(CFX_WideString& rString, - const FX_WCHAR* lpszFullString, - int iSubString, - FX_WCHAR chSep); - CFX_WideString MakeReverse(const CFX_WideString& str); - int ReverseFind(const CFX_WideString& csPageText, - const CFX_WideString& csWord, - int nStartPos, - int& WordLength); - int GetCharIndex(int index) const; - - private: - std::vector m_CharIndex; - const IPDF_TextPage* m_pTextPage; - CFX_WideString m_strText; - CFX_WideString m_findWhat; - int m_flags; - std::vector m_csFindWhatArray; - int m_findNextStart; - int m_findPreStart; - FX_BOOL m_bMatchCase; - FX_BOOL m_bMatchWholeWord; - int m_resStart; - int m_resEnd; - CFX_RectArray m_resArray; - FX_BOOL m_IsFind; -}; - -class CPDF_LinkExt { - public: - CPDF_LinkExt() {} - int m_Start; - int m_Count; - CFX_WideString m_strUrl; - virtual ~CPDF_LinkExt() {} -}; - -typedef CFX_ArrayTemplate LINK_InfoArray; - -class CPDF_LinkExtract : public IPDF_LinkExtract { - public: - CPDF_LinkExtract(); - ~CPDF_LinkExtract() override; - - // IPDF_LinkExtract - FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) override; - int CountLinks() const override; - CFX_WideString GetURL(int index) const override; - void GetBoundedSegment(int index, int& start, int& count) const override; - void GetRects(int index, CFX_RectArray& rects) const override; - - FX_BOOL IsExtract() const { return m_bIsParsed; } - - protected: - void ParseLink(); - void DeleteLinkList(); - FX_BOOL CheckWebLink(CFX_WideString& strBeCheck); - bool CheckMailLink(CFX_WideString& str); - void AppendToLinkList(int start, int count, const CFX_WideString& strUrl); - - private: - LINK_InfoArray m_LinkList; - const CPDF_TextPage* m_pTextPage; - CFX_WideString m_strPageText; - bool m_bIsParsed; -}; - -FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst); - -#endif // CORE_SRC_FPDFTEXT_TEXT_INT_H_ diff --git a/core/src/fpdftext/unicodenormalization.cpp b/core/src/fpdftext/unicodenormalization.cpp deleted file mode 100644 index d3b404dfcf..0000000000 --- a/core/src/fpdftext/unicodenormalization.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_string.h" -#include "core/src/fpdftext/unicodenormalizationdata.h" - -const FX_WCHAR* const g_UnicodeData_Normalization_Maps[5] = { - nullptr, - g_UnicodeData_Normalization_Map1, - g_UnicodeData_Normalization_Map2, - g_UnicodeData_Normalization_Map3, - g_UnicodeData_Normalization_Map4}; - -FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst) { - wch = wch & 0xFFFF; - FX_WCHAR wFind = g_UnicodeData_Normalization[wch]; - if (!wFind) { - if (pDst) { - *pDst = wch; - } - return 1; - } - if (wFind >= 0x8000) { - wch = wFind - 0x8000; - wFind = 1; - } else { - wch = wFind & 0x0FFF; - wFind >>= 12; - } - const FX_WCHAR* pMap = g_UnicodeData_Normalization_Maps[wFind]; - if (pMap == g_UnicodeData_Normalization_Map4) { - pMap = g_UnicodeData_Normalization_Map4 + wch; - wFind = (FX_WCHAR)(*pMap++); - } else { - pMap += wch; - } - if (pDst) { - FX_WCHAR n = wFind; - while (n--) { - *pDst++ = *pMap++; - } - } - return (FX_STRSIZE)wFind; -} -FX_STRSIZE FX_WideString_GetNormalization(const CFX_WideStringC& wsSrc, - FX_WCHAR* pDst) { - FX_STRSIZE nCount = 0; - for (FX_STRSIZE len = 0; len < wsSrc.GetLength(); len++) { - FX_WCHAR wch = wsSrc.GetAt(len); - if (pDst) { - nCount += FX_Unicode_GetNormalization(wch, pDst + nCount); - } else { - nCount += FX_Unicode_GetNormalization(wch, pDst); - } - } - return nCount; -} -FX_STRSIZE FX_WideString_GetNormalization(const CFX_WideStringC& wsSrc, - CFX_WideString& wsDst) { - FX_STRSIZE nLen = FX_WideString_GetNormalization(wsSrc, (FX_WCHAR*)NULL); - if (!nLen) { - return 0; - } - FX_WCHAR* pBuf = wsDst.GetBuffer(nLen); - FX_WideString_GetNormalization(wsSrc, pBuf); - wsDst.ReleaseBuffer(nLen); - return nLen; -} diff --git a/core/src/fpdftext/unicodenormalizationdata.cpp b/core/src/fpdftext/unicodenormalizationdata.cpp deleted file mode 100644 index f3843603d4..0000000000 --- a/core/src/fpdftext/unicodenormalizationdata.cpp +++ /dev/null @@ -1,8275 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" -#include "core/src/fpdftext/unicodenormalizationdata.h" - -const FX_WCHAR g_UnicodeData_Normalization[65536] = { - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8001, 0x0000, 0x2000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x2002, 0x8002, 0x0000, 0x2004, 0x0000, 0x0000, 0x8003, 0x8004, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8005, 0x0000, 0x8006, - 0x0000, 0x0000, 0x0000, 0x8007, 0x8008, 0x0000, 0x0000, 0x8009, 0x800A, - 0x800B, 0x800C, 0x0000, 0x0000, 0x800D, 0x800E, 0x800F, 0x0000, 0x3000, - 0x3003, 0x3006, 0x0000, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, - 0x0000, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, 0x801B, 0x801C, 0x801D, - 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x0000, - 0x8026, 0x8027, 0x8028, 0x8029, 0x802A, 0x802B, 0x0000, 0x0000, 0x802C, - 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x0000, 0x8032, 0x8033, 0x8034, - 0x8035, 0x8036, 0x8037, 0x8038, 0x8039, 0x803A, 0x0000, 0x803B, 0x803C, - 0x803D, 0x803E, 0x803F, 0x8040, 0x0000, 0x8041, 0x8042, 0x8043, 0x8044, - 0x8045, 0x8046, 0x0000, 0x8047, 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, - 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, - 0x8056, 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, - 0x805F, 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, - 0x8068, 0x8069, 0x806A, 0x806B, 0x806C, 0x806D, 0x806E, 0x806F, 0x8070, - 0x8071, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, 0x8078, 0x0000, - 0x2006, 0x2008, 0x8079, 0x807A, 0x807B, 0x807C, 0x807D, 0x807E, 0x807F, - 0x8080, 0x8081, 0x8082, 0x8083, 0x8084, 0x8085, 0x8086, 0x8087, 0x8088, - 0x8089, 0x808A, 0x808B, 0x808C, 0x808D, 0x808E, 0x0000, 0x0000, 0x808F, - 0x8090, 0x8091, 0x8092, 0x8093, 0x8094, 0x200A, 0x200C, 0x8095, 0x8096, - 0x8097, 0x8098, 0x8099, 0x809A, 0x809B, 0x809C, 0x809D, 0x809E, 0x809F, - 0x80A0, 0x80A1, 0x80A2, 0x80A3, 0x80A4, 0x80A5, 0x80A6, 0x80A7, 0x80A8, - 0x80A9, 0x80AA, 0x80AB, 0x80AC, 0x80AD, 0x80AE, 0x80AF, 0x80B0, 0x80B1, - 0x80B2, 0x80B3, 0x80B4, 0x80B5, 0x80B6, 0x80B7, 0x80B8, 0x80B9, 0x80BA, - 0x80BB, 0x80BC, 0x80BD, 0x80BE, 0x80BF, 0x80C0, 0x80C1, 0x80C2, 0x80C3, - 0x80C4, 0x0000, 0x0000, 0x0000, 0x80C5, 0x80C6, 0x80C7, 0x80C8, 0x80C9, - 0x80CA, 0x0000, 0x80CB, 0x0000, 0x80CC, 0x80CD, 0x80CE, 0x80CF, 0x0000, - 0x0000, 0x0000, 0x80D0, 0x80D1, 0x80D2, 0x80D3, 0x0000, 0x80D4, 0x80D5, - 0x80D6, 0x80D7, 0x80D8, 0x80D9, 0x0000, 0x0000, 0x80DA, 0x80DB, 0x0000, - 0x0000, 0x0000, 0x0000, 0x80DC, 0x80DD, 0x80DE, 0x80DF, 0x80E0, 0x80E1, - 0x80E2, 0x0000, 0x80E3, 0x80E4, 0x80E5, 0x80E6, 0x80E7, 0x0000, 0x80E8, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x200E, 0x2010, 0x2012, 0x2014, 0x2016, 0x2018, 0x201A, - 0x201C, 0x201E, 0x80E9, 0x80EA, 0x80EB, 0x80EC, 0x80ED, 0x80EE, 0x80EF, - 0x80F0, 0x80F1, 0x80F2, 0x80F3, 0x80F4, 0x80F5, 0x80F6, 0x80F7, 0x80F8, - 0x80F9, 0x80FA, 0x80FB, 0x80FC, 0x80FD, 0x80FE, 0x80FF, 0x8100, 0x8101, - 0x8102, 0x8103, 0x8104, 0x8105, 0x8106, 0x8107, 0x8108, 0x8109, 0x810A, - 0x810B, 0x810C, 0x2020, 0x2022, 0x2024, 0x810D, 0x810E, 0x0000, 0x0000, - 0x810F, 0x8110, 0x8111, 0x8112, 0x8113, 0x8114, 0x8115, 0x8116, 0x8117, - 0x8118, 0x8119, 0x811A, 0x811B, 0x811C, 0x811D, 0x811E, 0x811F, 0x8120, - 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128, 0x8129, - 0x812A, 0x812B, 0x812C, 0x812D, 0x812E, 0x812F, 0x8130, 0x8131, 0x8132, - 0x0000, 0x0000, 0x8133, 0x8134, 0x8135, 0x8136, 0x0000, 0x0000, 0x8137, - 0x8138, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D, 0x813E, 0x813F, 0x8140, - 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149, - 0x814A, 0x2026, 0x2028, 0x814B, 0x814C, 0x814D, 0x814E, 0x814F, 0x8150, - 0x8151, 0x0000, 0x0000, 0x8152, 0x8153, 0x8154, 0x8155, 0x8156, 0x8157, - 0x8158, 0x8159, 0x815A, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x0000, - 0x8160, 0x8161, 0x8162, 0x8163, 0x8164, 0x8165, 0x8166, 0x0000, 0x8167, - 0x8168, 0x8169, 0x816A, 0x816B, 0x816C, 0x816D, 0x816E, 0x816F, 0x0000, - 0x0000, 0x8170, 0x8171, 0x0000, 0x8172, 0x0000, 0x8173, 0x8174, 0x8175, - 0x8176, 0x0000, 0x8177, 0x8178, 0x8179, 0x817A, 0x817B, 0x817C, 0x817D, - 0x202A, 0x0000, 0x0000, 0x817E, 0x817F, 0x8180, 0x8181, 0x8182, 0x8183, - 0x8184, 0x8185, 0x8186, 0x8187, 0x0000, 0x8188, 0x8189, 0x818A, 0x818B, - 0x818C, 0x818D, 0x0000, 0x818E, 0x818F, 0x8190, 0x8191, 0x8192, 0x8193, - 0x8194, 0x0000, 0x8195, 0x0000, 0x0000, 0x0000, 0x8196, 0x0000, 0x8197, - 0x8198, 0x8199, 0x819A, 0x819B, 0x819C, 0x819D, 0x819E, 0x0000, 0x0000, - 0x202C, 0x202E, 0x2030, 0x2032, 0x2034, 0x2036, 0x2038, 0x203A, 0x203C, - 0x0000, 0x0000, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A3, 0x81A4, 0x81A5, - 0x81A6, 0x81A7, 0x81A8, 0x81A9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81AA, 0x81AB, - 0x81AC, 0x81AD, 0x81AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x81AF, 0x81B0, 0x0000, 0x81B1, 0x81B2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x81B3, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, - 0x81B9, 0x81BA, 0x81BB, 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x0000, 0x0000, - 0x0000, 0x0000, 0x81C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x81C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x81C2, 0x81C3, 0x81C4, 0x81C5, 0x81C6, 0x81C7, 0x81C8, 0x0000, 0x81C9, - 0x0000, 0x81CA, 0x81CB, 0x81CC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, 0x81D2, 0x81D3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81D4, 0x81D5, - 0x81D6, 0x81D7, 0x81D8, 0x0000, 0x81D9, 0x81DA, 0x81DB, 0x81DC, 0x81DD, - 0x81DE, 0x81DF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x81E0, 0x81E1, 0x81E2, 0x0000, 0x81E3, 0x81E4, 0x0000, 0x0000, 0x0000, - 0x81E5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81E6, 0x81E7, - 0x0000, 0x81E8, 0x0000, 0x0000, 0x0000, 0x81E9, 0x0000, 0x0000, 0x0000, - 0x0000, 0x81EA, 0x81EB, 0x81EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81ED, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x81EE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81EF, 0x81F0, 0x0000, - 0x81F1, 0x0000, 0x0000, 0x0000, 0x81F2, 0x0000, 0x0000, 0x0000, 0x0000, - 0x81F3, 0x81F4, 0x81F5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x81F6, 0x81F7, 0x0000, 0x0000, 0x81F8, 0x81F9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x81FA, - 0x81FB, 0x0000, 0x0000, 0x0000, 0x0000, 0x81FC, 0x81FD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x81FE, 0x81FF, 0x0000, 0x0000, 0x8200, 0x8201, 0x8202, 0x8203, - 0x8204, 0x8205, 0x8206, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B, 0x820C, - 0x820D, 0x820E, 0x820F, 0x8210, 0x8211, 0x8212, 0x8213, 0x8214, 0x8215, - 0x203E, 0x2040, 0x8216, 0x8217, 0x0000, 0x0000, 0x8218, 0x8219, 0x821A, - 0x821B, 0x0000, 0x0000, 0x821C, 0x821D, 0x821E, 0x821F, 0x2042, 0x2044, - 0x8220, 0x8221, 0x8222, 0x8223, 0x0000, 0x0000, 0x8224, 0x8225, 0x8226, - 0x8227, 0x0000, 0x8228, 0x8229, 0x822A, 0x822B, 0x822C, 0x822D, 0x822E, - 0x822F, 0x8230, 0x8231, 0x0000, 0x0000, 0x8232, 0x8233, 0x0000, 0x8234, - 0x8235, 0x8236, 0x8237, 0x2046, 0x2048, 0x8238, 0x8239, 0x0000, 0x0000, - 0x823A, 0x823B, 0x823C, 0x823D, 0x823E, 0x823F, 0x0000, 0x0000, 0x8240, - 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x0000, 0x0000, 0x8246, 0x8247, - 0x8248, 0x8249, 0x824A, 0x824B, 0x824C, 0x824D, 0x824E, 0x824F, 0x8250, - 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8258, 0x8259, - 0x825A, 0x825B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x825C, 0x825D, 0x825E, 0x825F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x204A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x204C, 0x204E, 0x2050, - 0x2052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x2054, 0x0000, 0x2056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x2058, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x205A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x205C, 0x0000, 0x0000, 0x205E, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2060, 0x2062, - 0x2064, 0x2066, 0x2068, 0x206A, 0x206C, 0x206E, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2070, 0x2072, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x2074, 0x2076, 0x0000, 0x2078, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x207A, 0x0000, 0x0000, 0x207C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x207E, 0x2080, 0x2082, 0x0000, 0x0000, 0x2084, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2086, - 0x0000, 0x0000, 0x2088, 0x208A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x208C, 0x208E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x2090, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x2092, 0x2094, 0x2096, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x2098, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x209A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x209C, 0x209E, 0x0000, 0x20A0, 0x20A2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x20A4, 0x20A6, 0x20A8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x20AA, 0x0000, 0x20AC, 0x20AE, 0x20B0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20B2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x20B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20B6, 0x20B8, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8260, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x20BA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x20BC, 0x0000, 0x0000, 0x0000, 0x0000, 0x20BE, 0x0000, - 0x0000, 0x0000, 0x0000, 0x20C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x20C2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x20C4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x20C6, 0x0000, 0x20C8, 0x20CA, 0x20CC, - 0x20CE, 0x20D0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x20D2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x20D4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x20D6, 0x0000, 0x0000, 0x0000, 0x0000, 0x20D8, 0x0000, 0x0000, - 0x0000, 0x0000, 0x20DA, 0x0000, 0x0000, 0x0000, 0x0000, 0x20DC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x20DE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x20E0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8261, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20E2, 0x0000, 0x20E4, - 0x0000, 0x20E6, 0x0000, 0x20E8, 0x0000, 0x20EA, 0x0000, 0x0000, 0x0000, - 0x20EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20EE, 0x0000, 0x20F0, 0x0000, - 0x0000, 0x20F2, 0x20F4, 0x0000, 0x20F6, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8262, 0x8263, - 0x8264, 0x8265, 0x8266, 0x8267, 0x8268, 0x8269, 0x826A, 0x826B, 0x826C, - 0x826D, 0x826E, 0x826F, 0x8270, 0x0000, 0x8271, 0x8272, 0x8273, 0x8274, - 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827A, 0x827B, 0x827C, 0x827D, - 0x827E, 0x827F, 0x8280, 0x8281, 0x8282, 0x0000, 0x8283, 0x8284, 0x8285, - 0x8286, 0x8287, 0x8288, 0x8289, 0x828A, 0x828B, 0x828C, 0x828D, 0x828E, - 0x828F, 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, - 0x8298, 0x8299, 0x829A, 0x829B, 0x829C, 0x829D, 0x829E, 0x0000, 0x829F, - 0x82A0, 0x82A1, 0x82A2, 0x82A3, 0x82A4, 0x82A5, 0x82A6, 0x82A7, 0x82A8, - 0x82A9, 0x82AA, 0x82AB, 0x0000, 0x20F8, 0x82AC, 0x0000, 0x82AD, 0x82AE, - 0x82AF, 0x82B0, 0x82B1, 0x82B2, 0x82B3, 0x82B4, 0x82B5, 0x82B6, 0x82B7, - 0x82B8, 0x82B9, 0x82BA, 0x82BB, 0x82BC, 0x82BD, 0x82BE, 0x82BF, 0x82C0, - 0x82C1, 0x82C2, 0x82C3, 0x82C4, 0x82C5, 0x82C6, 0x0000, 0x82C7, 0x0000, - 0x0000, 0x82C8, 0x82C9, 0x82CA, 0x82CB, 0x82CC, 0x82CD, 0x82CE, 0x82CF, - 0x82D0, 0x82D1, 0x82D2, 0x82D3, 0x82D4, 0x82D5, 0x82D6, 0x82D7, 0x82D8, - 0x82D9, 0x82DA, 0x82DB, 0x82DC, 0x82DD, 0x82DE, 0x82DF, 0x82E0, 0x82E1, - 0x82E2, 0x82E3, 0x82E4, 0x82E5, 0x82E6, 0x82E7, 0x82E8, 0x82E9, 0x82EA, - 0x82EB, 0x82EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x82ED, 0x82EE, 0x82EF, 0x82F0, 0x82F1, 0x82F2, - 0x82F3, 0x82F4, 0x82F5, 0x82F6, 0x82F7, 0x82F8, 0x82F9, 0x82FA, 0x82FB, - 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, 0x8301, 0x8302, 0x8303, 0x8304, - 0x8305, 0x8306, 0x8307, 0x8308, 0x8309, 0x830A, 0x830B, 0x830C, 0x830D, - 0x830E, 0x830F, 0x8310, 0x8311, 0x8312, 0x8313, 0x8314, 0x8315, 0x8316, - 0x8317, 0x8318, 0x8319, 0x831A, 0x831B, 0x831C, 0x831D, 0x831E, 0x831F, - 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8327, 0x8328, - 0x8329, 0x832A, 0x832B, 0x832C, 0x832D, 0x832E, 0x832F, 0x8330, 0x8331, - 0x8332, 0x8333, 0x8334, 0x8335, 0x8336, 0x8337, 0x8338, 0x8339, 0x833A, - 0x833B, 0x833C, 0x833D, 0x833E, 0x833F, 0x8340, 0x8341, 0x8342, 0x8343, - 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834A, 0x834B, 0x834C, - 0x834D, 0x834E, 0x834F, 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, - 0x8356, 0x8357, 0x8358, 0x8359, 0x835A, 0x835B, 0x835C, 0x835D, 0x835E, - 0x835F, 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, - 0x8368, 0x8369, 0x836A, 0x836B, 0x836C, 0x836D, 0x836E, 0x836F, 0x8370, - 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, 0x8378, 0x8379, - 0x837A, 0x837B, 0x837C, 0x837D, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382, - 0x8383, 0x8384, 0x8385, 0x8386, 0x8387, 0x8388, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8389, 0x838A, 0x838B, 0x838C, 0x838D, 0x838E, 0x838F, 0x8390, - 0x8391, 0x8392, 0x8393, 0x8394, 0x8395, 0x8396, 0x8397, 0x8398, 0x8399, - 0x839A, 0x839B, 0x839C, 0x839D, 0x839E, 0x839F, 0x83A0, 0x83A1, 0x83A2, - 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83A8, 0x83A9, 0x83AA, 0x83AB, - 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B0, 0x83B1, 0x83B2, 0x83B3, 0x83B4, - 0x83B5, 0x83B6, 0x83B7, 0x83B8, 0x83B9, 0x83BA, 0x83BB, 0x83BC, 0x83BD, - 0x83BE, 0x83BF, 0x83C0, 0x83C1, 0x83C2, 0x83C3, 0x83C4, 0x83C5, 0x83C6, - 0x83C7, 0x83C8, 0x83C9, 0x83CA, 0x83CB, 0x83CC, 0x83CD, 0x83CE, 0x83CF, - 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D4, 0x83D5, 0x83D6, 0x83D7, 0x83D8, - 0x83D9, 0x83DA, 0x83DB, 0x83DC, 0x83DD, 0x83DE, 0x83DF, 0x83E0, 0x83E1, - 0x83E2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x83E3, 0x83E4, - 0x83E5, 0x83E6, 0x83E7, 0x83E8, 0x83E9, 0x83EA, 0x83EB, 0x83EC, 0x83ED, - 0x83EE, 0x83EF, 0x83F0, 0x83F1, 0x83F2, 0x83F3, 0x83F4, 0x83F5, 0x83F6, - 0x83F7, 0x83F8, 0x0000, 0x0000, 0x83F9, 0x83FA, 0x83FB, 0x83FC, 0x83FD, - 0x83FE, 0x0000, 0x0000, 0x83FF, 0x8400, 0x8401, 0x8402, 0x8403, 0x8404, - 0x8405, 0x8406, 0x8407, 0x8408, 0x8409, 0x840A, 0x840B, 0x840C, 0x840D, - 0x840E, 0x840F, 0x8410, 0x8411, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, - 0x8417, 0x8418, 0x8419, 0x841A, 0x841B, 0x841C, 0x841D, 0x841E, 0x841F, - 0x8420, 0x8421, 0x8422, 0x8423, 0x8424, 0x0000, 0x0000, 0x8425, 0x8426, - 0x8427, 0x8428, 0x8429, 0x842A, 0x0000, 0x0000, 0x842B, 0x842C, 0x842D, - 0x842E, 0x842F, 0x8430, 0x8431, 0x8432, 0x0000, 0x8433, 0x0000, 0x8434, - 0x0000, 0x8435, 0x0000, 0x8436, 0x8437, 0x8438, 0x8439, 0x843A, 0x843B, - 0x843C, 0x843D, 0x843E, 0x843F, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, - 0x8445, 0x8446, 0x8447, 0x8448, 0x8449, 0x844A, 0x844B, 0x844C, 0x844D, - 0x844E, 0x844F, 0x8450, 0x8451, 0x8452, 0x8453, 0x8454, 0x0000, 0x0000, - 0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845A, 0x845B, 0x845C, 0x845D, - 0x845E, 0x845F, 0x8460, 0x8461, 0x8462, 0x8463, 0x8464, 0x8465, 0x8466, - 0x8467, 0x8468, 0x8469, 0x846A, 0x846B, 0x846C, 0x846D, 0x846E, 0x846F, - 0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476, 0x8477, 0x8478, - 0x8479, 0x847A, 0x847B, 0x847C, 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, - 0x8482, 0x8483, 0x8484, 0x8485, 0x8486, 0x8487, 0x8488, 0x8489, 0x0000, - 0x848A, 0x848B, 0x848C, 0x848D, 0x848E, 0x848F, 0x8490, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8491, 0x8492, 0x8493, 0x0000, 0x8494, 0x8495, - 0x8496, 0x8497, 0x8498, 0x8499, 0x849A, 0x0000, 0x0000, 0x0000, 0x849B, - 0x849C, 0x849D, 0x849E, 0x0000, 0x0000, 0x849F, 0x84A0, 0x84A1, 0x84A2, - 0x84A3, 0x84A4, 0x0000, 0x0000, 0x0000, 0x0000, 0x84A5, 0x84A6, 0x84A7, - 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84AF, 0x84B0, - 0x84B1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84B2, 0x84B3, 0x84B4, - 0x0000, 0x84B5, 0x84B6, 0x84B7, 0x84B8, 0x84B9, 0x84BA, 0x84BB, 0x84BC, - 0x84BD, 0x0000, 0x84BE, 0x84BF, 0x84C0, 0x84C1, 0x84C2, 0x84C3, 0x84C4, - 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x84C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84CA, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x84CB, 0x20FA, 0x3009, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x84CC, 0x0000, 0x0000, 0x0000, 0x20FC, - 0x300C, 0x0000, 0x20FE, 0x300F, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, - 0x0000, 0x2102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x2104, 0x2106, 0x2108, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84CD, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x84CE, 0x84CF, 0x0000, - 0x0000, 0x84D0, 0x84D1, 0x84D2, 0x84D3, 0x84D4, 0x84D5, 0x84D6, 0x84D7, - 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DD, 0x84DE, 0x84DF, 0x84E0, - 0x84E1, 0x84E2, 0x84E3, 0x84E4, 0x84E5, 0x84E6, 0x84E7, 0x84E8, 0x84E9, - 0x84EA, 0x0000, 0x84EB, 0x84EC, 0x84ED, 0x84EE, 0x84EF, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x210A, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3012, 0x3015, 0x84F0, - 0x210C, 0x0000, 0x3018, 0x301B, 0x84F1, 0x0000, 0x210E, 0x84F2, 0x84F3, - 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0x84F9, 0x84FA, 0x84FB, 0x0000, - 0x84FC, 0x2110, 0x0000, 0x0000, 0x84FD, 0x84FE, 0x84FF, 0x8500, 0x8501, - 0x8502, 0x8503, 0x2112, 0x301E, 0x2114, 0x8504, 0x8505, 0x0000, 0x8506, - 0x8507, 0x8508, 0x0000, 0x8509, 0x850A, 0x850B, 0x850C, 0x850D, 0x850E, - 0x850F, 0x8510, 0x0000, 0x8511, 0x8512, 0x8513, 0x8514, 0x8515, 0x8516, - 0x8517, 0x0000, 0x3021, 0x8518, 0x8519, 0x851A, 0x851B, 0x851C, 0x0000, - 0x0000, 0x0000, 0x0000, 0x851D, 0x851E, 0x851F, 0x8520, 0x8521, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3024, 0x3027, 0x4005, 0x302A, - 0x302D, 0x3030, 0x3033, 0x3036, 0x3039, 0x303C, 0x303F, 0x3042, 0x3045, - 0x3048, 0x304B, 0x2116, 0x8522, 0x2118, 0x304E, 0x211A, 0x8523, 0x211C, - 0x3051, 0x400A, 0x211E, 0x8524, 0x2120, 0x3054, 0x8525, 0x8526, 0x8527, - 0x8528, 0x8529, 0x2122, 0x3057, 0x2124, 0x852A, 0x2126, 0x305A, 0x400F, - 0x2128, 0x852B, 0x212A, 0x305D, 0x852C, 0x852D, 0x852E, 0x852F, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3060, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212C, 0x212E, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x2130, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x2132, 0x2134, 0x2136, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8530, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8531, 0x0000, 0x0000, 0x8532, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x2138, 0x0000, 0x213A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x213C, 0x3063, 0x0000, 0x213E, 0x3066, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x2140, 0x0000, 0x0000, 0x2142, 0x0000, 0x0000, - 0x2144, 0x0000, 0x2146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2148, 0x0000, - 0x214A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x214C, 0x214E, 0x2150, 0x2152, 0x2154, 0x0000, 0x0000, - 0x2156, 0x2158, 0x0000, 0x0000, 0x215A, 0x215C, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x215E, 0x2160, 0x0000, 0x0000, 0x2162, 0x2164, - 0x0000, 0x0000, 0x2166, 0x2168, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x216A, 0x216C, 0x216E, 0x2170, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x2172, 0x2174, 0x2176, 0x2178, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x217A, 0x217C, 0x217E, 0x2180, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8533, 0x8534, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x3069, 0x306C, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x2182, - 0x2184, 0x2186, 0x2188, 0x218A, 0x218C, 0x218E, 0x2190, 0x3081, 0x3084, - 0x3087, 0x308A, 0x308D, 0x3090, 0x3093, 0x3096, 0x3099, 0x2192, 0x309C, - 0x309F, 0x2194, 0x2196, 0x2198, 0x219A, 0x219C, 0x30A2, 0x8535, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8536, 0x8537, 0x8538, - 0x8539, 0x853A, 0x853B, 0x853C, 0x853D, 0x853E, 0x219E, 0x21A0, 0x21A2, - 0x21A4, 0x21A6, 0x21A8, 0x21AA, 0x21AC, 0x21AE, 0x21B0, 0x21B2, 0x30A5, - 0x30A8, 0x30AB, 0x30AE, 0x30B1, 0x30B4, 0x30B7, 0x30BA, 0x30BD, 0x4014, - 0x4019, 0x401E, 0x4023, 0x4028, 0x402D, 0x4032, 0x4037, 0x403C, 0x4041, - 0x4046, 0x21B4, 0x21B6, 0x21B8, 0x21BA, 0x21BC, 0x21BE, 0x21C0, 0x21C2, - 0x21C4, 0x30C0, 0x30C3, 0x30C6, 0x30C9, 0x30CC, 0x30CF, 0x30D2, 0x30D5, - 0x30D8, 0x30DB, 0x30DE, 0x30E1, 0x30E4, 0x30E7, 0x30EA, 0x30ED, 0x30F0, - 0x30F3, 0x30F6, 0x30F9, 0x30FC, 0x30FF, 0x3102, 0x3105, 0x3108, 0x310B, - 0x310E, 0x3111, 0x3114, 0x3117, 0x311A, 0x311D, 0x3120, 0x3123, 0x3126, - 0x3129, 0x312C, 0x853F, 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, - 0x8546, 0x8547, 0x8548, 0x8549, 0x854A, 0x854B, 0x854C, 0x854D, 0x854E, - 0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, - 0x8558, 0x8559, 0x855A, 0x855B, 0x855C, 0x855D, 0x855E, 0x855F, 0x8560, - 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567, 0x8568, 0x8569, - 0x856A, 0x856B, 0x856C, 0x856D, 0x856E, 0x856F, 0x8570, 0x8571, 0x8572, - 0x8573, 0x21C6, 0x21C8, 0x21CA, 0x21CC, 0x21CE, 0x21D0, 0x21D2, 0x21D4, - 0x21D6, 0x21D8, 0x8574, 0x8575, 0x8576, 0x8577, 0x8578, 0x8579, 0x857A, - 0x857B, 0x857C, 0x21DA, 0x857D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x857E, 0x857F, 0x8580, 0x8581, 0x8582, - 0x8583, 0x8584, 0x8585, 0x8586, 0x21DC, 0x8587, 0x8588, 0x8589, 0x858A, - 0x858B, 0x858C, 0x858D, 0x858E, 0x858F, 0x21DE, 0x8590, 0x8591, 0x8592, - 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x21E0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x404B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x312F, 0x21E2, 0x3132, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x21E4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8599, 0x859A, 0x859B, 0x859C, 0x859D, 0x859E, 0x859F, - 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A4, 0x85A5, 0x0000, 0x0000, 0x0000, - 0x0000, 0x85A6, 0x85A7, 0x85A8, 0x85A9, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x85AA, 0x85AB, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x85AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x85AD, 0x85AE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85AF, - 0x0000, 0x0000, 0x85B0, 0x0000, 0x85B1, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85B2, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x85B3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x85B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85B5, 0x85B6, 0x0000, - 0x0000, 0x0000, 0x85B7, 0x85B8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x85B9, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x85BA, - 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C1, 0x85C2, 0x85C3, - 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85C9, 0x85CA, 0x85CB, 0x85CC, - 0x85CD, 0x85CE, 0x85CF, 0x85D0, 0x85D1, 0x85D2, 0x85D3, 0x85D4, 0x85D5, - 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, 0x85DC, 0x85DD, 0x85DE, - 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E4, 0x85E5, 0x85E6, 0x85E7, - 0x85E8, 0x85E9, 0x85EA, 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, 0x85F0, - 0x85F1, 0x85F2, 0x85F3, 0x85F4, 0x85F5, 0x85F6, 0x85F7, 0x85F8, 0x85F9, - 0x85FA, 0x85FB, 0x85FC, 0x85FD, 0x85FE, 0x85FF, 0x8600, 0x8601, 0x8602, - 0x8603, 0x8604, 0x8605, 0x8606, 0x8607, 0x8608, 0x8609, 0x860A, 0x860B, - 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8611, 0x8612, 0x8613, 0x8614, - 0x8615, 0x8616, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, 0x861C, 0x861D, - 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, - 0x8627, 0x8628, 0x8629, 0x862A, 0x862B, 0x862C, 0x862D, 0x862E, 0x862F, - 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, 0x8638, - 0x8639, 0x863A, 0x863B, 0x863C, 0x863D, 0x863E, 0x863F, 0x8640, 0x8641, - 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864A, - 0x864B, 0x864C, 0x864D, 0x864E, 0x864F, 0x8650, 0x8651, 0x8652, 0x8653, - 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865A, 0x865B, 0x865C, - 0x865D, 0x865E, 0x865F, 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8665, - 0x8666, 0x8667, 0x8668, 0x8669, 0x866A, 0x866B, 0x866C, 0x866D, 0x866E, - 0x866F, 0x8670, 0x8671, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, - 0x8678, 0x8679, 0x867A, 0x867B, 0x867C, 0x867D, 0x867E, 0x867F, 0x8680, - 0x8681, 0x8682, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, 0x8689, - 0x868A, 0x868B, 0x868C, 0x868D, 0x868E, 0x868F, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8690, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8691, 0x0000, 0x8692, 0x8693, 0x8694, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x21E6, 0x0000, - 0x21E8, 0x0000, 0x21EA, 0x0000, 0x21EC, 0x0000, 0x21EE, 0x0000, 0x21F0, - 0x0000, 0x21F2, 0x0000, 0x21F4, 0x0000, 0x21F6, 0x0000, 0x21F8, 0x0000, - 0x21FA, 0x0000, 0x21FC, 0x0000, 0x0000, 0x21FE, 0x0000, 0x2200, 0x0000, - 0x2202, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2204, 0x2206, - 0x0000, 0x2208, 0x220A, 0x0000, 0x220C, 0x220E, 0x0000, 0x2210, 0x2212, - 0x0000, 0x2214, 0x2216, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2218, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x221A, 0x221C, 0x0000, 0x221E, - 0x2220, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x2222, 0x0000, 0x2224, 0x0000, 0x2226, - 0x0000, 0x2228, 0x0000, 0x222A, 0x0000, 0x222C, 0x0000, 0x222E, 0x0000, - 0x2230, 0x0000, 0x2232, 0x0000, 0x2234, 0x0000, 0x2236, 0x0000, 0x2238, - 0x0000, 0x0000, 0x223A, 0x0000, 0x223C, 0x0000, 0x223E, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x2240, 0x2242, 0x0000, 0x2244, 0x2246, - 0x0000, 0x2248, 0x224A, 0x0000, 0x224C, 0x224E, 0x0000, 0x2250, 0x2252, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x2254, 0x0000, 0x0000, 0x2256, 0x2258, - 0x225A, 0x225C, 0x0000, 0x0000, 0x0000, 0x225E, 0x2260, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8695, 0x8696, 0x8697, 0x8698, 0x8699, 0x869A, 0x869B, - 0x869C, 0x869D, 0x869E, 0x869F, 0x86A0, 0x86A1, 0x86A2, 0x86A3, 0x86A4, - 0x86A5, 0x86A6, 0x86A7, 0x86A8, 0x86A9, 0x86AA, 0x86AB, 0x86AC, 0x86AD, - 0x86AE, 0x86AF, 0x86B0, 0x86B1, 0x86B2, 0x86B3, 0x86B4, 0x86B5, 0x86B6, - 0x86B7, 0x86B8, 0x86B9, 0x86BA, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, - 0x86C0, 0x86C1, 0x86C2, 0x86C3, 0x86C4, 0x86C5, 0x86C6, 0x86C7, 0x86C8, - 0x86C9, 0x86CA, 0x86CB, 0x86CC, 0x86CD, 0x86CE, 0x86CF, 0x86D0, 0x86D1, - 0x86D2, 0x86D3, 0x86D4, 0x86D5, 0x86D6, 0x86D7, 0x86D8, 0x86D9, 0x86DA, - 0x86DB, 0x86DC, 0x86DD, 0x86DE, 0x86DF, 0x86E0, 0x86E1, 0x86E2, 0x86E3, - 0x86E4, 0x86E5, 0x86E6, 0x86E7, 0x86E8, 0x86E9, 0x86EA, 0x86EB, 0x86EC, - 0x86ED, 0x86EE, 0x86EF, 0x86F0, 0x86F1, 0x86F2, 0x0000, 0x0000, 0x0000, - 0x86F3, 0x86F4, 0x86F5, 0x86F6, 0x86F7, 0x86F8, 0x86F9, 0x86FA, 0x86FB, - 0x86FC, 0x86FD, 0x86FE, 0x86FF, 0x8700, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x3135, 0x3138, 0x313B, 0x313E, 0x3141, 0x3144, 0x3147, - 0x314A, 0x314D, 0x3150, 0x3153, 0x3156, 0x3159, 0x315C, 0x4050, 0x4055, - 0x405A, 0x405F, 0x4064, 0x4069, 0x406E, 0x4073, 0x4078, 0x407D, 0x4082, - 0x4087, 0x408C, 0x4091, 0x4096, 0x409B, 0x40A3, 0x0000, 0x315F, 0x3162, - 0x3165, 0x3168, 0x316B, 0x316E, 0x3171, 0x3174, 0x3177, 0x317A, 0x317D, - 0x3180, 0x3183, 0x3186, 0x3189, 0x318C, 0x318F, 0x3192, 0x3195, 0x3198, - 0x319B, 0x319E, 0x31A1, 0x31A4, 0x31A7, 0x31AA, 0x31AD, 0x31B0, 0x31B3, - 0x31B6, 0x31B9, 0x31BC, 0x31BF, 0x31C2, 0x31C5, 0x31C8, 0x8701, 0x8702, - 0x8703, 0x8704, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x31CB, 0x2262, 0x2264, 0x2266, 0x2268, 0x226A, 0x226C, 0x226E, - 0x2270, 0x2272, 0x2274, 0x2276, 0x2278, 0x227A, 0x227C, 0x227E, 0x8705, - 0x8706, 0x8707, 0x8708, 0x8709, 0x870A, 0x870B, 0x870C, 0x870D, 0x870E, - 0x870F, 0x8710, 0x8711, 0x8712, 0x2280, 0x2282, 0x2284, 0x2286, 0x2288, - 0x228A, 0x228C, 0x228E, 0x2290, 0x2292, 0x2294, 0x2296, 0x2298, 0x229A, - 0x40AA, 0x40B0, 0x229C, 0x0000, 0x8713, 0x8714, 0x8715, 0x8716, 0x8717, - 0x8718, 0x8719, 0x871A, 0x871B, 0x871C, 0x871D, 0x871E, 0x871F, 0x8720, - 0x8721, 0x8722, 0x8723, 0x8724, 0x8725, 0x8726, 0x8727, 0x8728, 0x8729, - 0x872A, 0x872B, 0x872C, 0x872D, 0x872E, 0x872F, 0x8730, 0x8731, 0x8732, - 0x8733, 0x8734, 0x8735, 0x8736, 0x8737, 0x8738, 0x8739, 0x873A, 0x873B, - 0x873C, 0x873D, 0x873E, 0x873F, 0x8740, 0x8741, 0x8742, 0x8743, 0x229E, - 0x22A0, 0x22A2, 0x22A4, 0x22A6, 0x22A8, 0x22AA, 0x22AC, 0x22AE, 0x22B0, - 0x22B2, 0x22B4, 0x22B6, 0x22B8, 0x22BA, 0x22BC, 0x22BE, 0x22C0, 0x22C2, - 0x22C4, 0x22C6, 0x22C8, 0x22CA, 0x22CC, 0x31CE, 0x31D1, 0x31D4, 0x22CE, - 0x31D7, 0x22D0, 0x31DA, 0x8744, 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, - 0x874A, 0x874B, 0x874C, 0x874D, 0x874E, 0x874F, 0x8750, 0x8751, 0x8752, - 0x8753, 0x8754, 0x8755, 0x8756, 0x8757, 0x8758, 0x8759, 0x875A, 0x875B, - 0x875C, 0x875D, 0x875E, 0x875F, 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, - 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D, - 0x876E, 0x876F, 0x8770, 0x8771, 0x8772, 0x0000, 0x40B5, 0x40BA, 0x40BF, - 0x31DD, 0x40C4, 0x31E0, 0x31E3, 0x40C9, 0x40CF, 0x31E6, 0x31E9, 0x31EC, - 0x40D4, 0x40D9, 0x31EF, 0x31F2, 0x22D2, 0x31F5, 0x40DE, 0x40E3, 0x22D4, - 0x40E8, 0x40EE, 0x40F5, 0x31F8, 0x40FB, 0x4101, 0x4107, 0x31FB, 0x31FE, - 0x3201, 0x410C, 0x4111, 0x4117, 0x3204, 0x3207, 0x320A, 0x22D6, 0x22D8, - 0x22DA, 0x22DC, 0x320D, 0x3210, 0x411C, 0x3213, 0x4122, 0x4127, 0x3216, - 0x22DE, 0x22E0, 0x412D, 0x4133, 0x4138, 0x3219, 0x413E, 0x22E2, 0x321C, - 0x321F, 0x3222, 0x3225, 0x3228, 0x4144, 0x322B, 0x22E4, 0x322E, 0x3231, - 0x3234, 0x4149, 0x3237, 0x323A, 0x323D, 0x414E, 0x4154, 0x22E6, 0x4159, - 0x22E8, 0x415F, 0x4164, 0x3240, 0x3243, 0x3246, 0x4169, 0x22EA, 0x3249, - 0x416E, 0x22EC, 0x4173, 0x324C, 0x22EE, 0x22F0, 0x22F2, 0x22F4, 0x22F6, - 0x22F8, 0x22FA, 0x22FC, 0x22FE, 0x2300, 0x324F, 0x3252, 0x3255, 0x3258, - 0x325B, 0x325E, 0x3261, 0x3264, 0x3267, 0x326A, 0x326D, 0x3270, 0x3273, - 0x3276, 0x3279, 0x327C, 0x2302, 0x2304, 0x327F, 0x2306, 0x2308, 0x230A, - 0x3282, 0x3285, 0x230C, 0x230E, 0x2310, 0x2312, 0x2314, 0x4179, 0x2316, - 0x2318, 0x231A, 0x231C, 0x231E, 0x2320, 0x2322, 0x2324, 0x3288, 0x417E, - 0x2326, 0x2328, 0x232A, 0x232C, 0x232E, 0x2330, 0x2332, 0x328B, 0x328E, - 0x3291, 0x3294, 0x2334, 0x2336, 0x2338, 0x233A, 0x233C, 0x233E, 0x2340, - 0x2342, 0x2344, 0x2346, 0x3297, 0x329A, 0x2348, 0x329D, 0x32A0, 0x32A3, - 0x234A, 0x32A6, 0x32A9, 0x4183, 0x234C, 0x32AC, 0x32AF, 0x32B2, 0x32B5, - 0x4188, 0x418E, 0x234E, 0x2350, 0x2352, 0x2354, 0x2356, 0x2358, 0x235A, - 0x235C, 0x235E, 0x2360, 0x2362, 0x2364, 0x2366, 0x2368, 0x236A, 0x236C, - 0x236E, 0x2370, 0x4195, 0x2372, 0x2374, 0x2376, 0x419A, 0x32B8, 0x2378, - 0x237A, 0x237C, 0x237E, 0x2380, 0x2382, 0x2384, 0x2386, 0x2388, 0x238A, - 0x32BB, 0x238C, 0x238E, 0x32BE, 0x32C1, 0x2390, 0x419F, 0x32C4, 0x2392, - 0x2394, 0x2396, 0x2398, 0x32C7, 0x32CA, 0x239A, 0x239C, 0x239E, 0x23A0, - 0x23A2, 0x23A4, 0x23A6, 0x23A8, 0x23AA, 0x32CD, 0x32D0, 0x32D3, 0x32D6, - 0x32D9, 0x32DC, 0x32DF, 0x32E2, 0x32E5, 0x32E8, 0x32EB, 0x32EE, 0x32F1, - 0x32F4, 0x32F7, 0x32FA, 0x32FD, 0x3300, 0x3303, 0x3306, 0x3309, 0x330C, - 0x330F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8773, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8774, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8775, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8776, 0x0000, 0x0000, - 0x0000, 0x8777, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8778, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8779, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x877A, 0x877B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x877C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x877D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x877E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x877F, 0x8780, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8781, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8782, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8783, 0x0000, 0x0000, 0x8784, 0x0000, 0x8785, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8786, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8787, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8788, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8789, 0x878A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x878B, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x878C, 0x0000, 0x0000, - 0x0000, 0x0000, 0x878D, 0x0000, 0x878E, 0x878F, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8790, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8791, 0x0000, - 0x8792, 0x0000, 0x0000, 0x0000, 0x8793, 0x8794, 0x8795, 0x0000, 0x8796, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8797, 0x0000, 0x0000, - 0x0000, 0x8798, 0x0000, 0x0000, 0x8799, 0x0000, 0x0000, 0x0000, 0x879A, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x879B, 0x0000, - 0x0000, 0x0000, 0x879C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x879D, 0x0000, 0x0000, 0x879E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x879F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x87A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87A1, 0x0000, 0x87A2, 0x0000, 0x87A3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87A4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87A5, 0x0000, - 0x0000, 0x0000, 0x87A6, 0x87A7, 0x0000, 0x0000, 0x87A8, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x87A9, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87AA, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87AB, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87AC, 0x0000, 0x0000, 0x87AD, 0x87AE, 0x87AF, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87B0, - 0x0000, 0x0000, 0x0000, 0x0000, 0x87B1, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87B2, 0x0000, 0x0000, 0x0000, 0x0000, 0x87B3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x87B4, 0x0000, 0x87B5, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x87B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87B7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87B8, 0x87B9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87BA, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x87BB, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87BC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87BD, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87BE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87BF, 0x0000, 0x0000, 0x87C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87C2, 0x0000, 0x87C3, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87C4, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x87C5, 0x87C6, 0x0000, 0x87C7, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87C8, 0x0000, 0x0000, 0x0000, 0x87C9, 0x0000, 0x87CA, 0x87CB, 0x0000, - 0x87CC, 0x87CD, 0x0000, 0x0000, 0x0000, 0x87CE, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87CF, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87D0, 0x0000, 0x87D1, 0x0000, 0x87D2, 0x0000, 0x0000, 0x0000, - 0x87D3, 0x87D4, 0x0000, 0x0000, 0x0000, 0x87D5, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x87D6, 0x0000, 0x87D7, 0x0000, 0x87D8, 0x0000, 0x0000, - 0x87D9, 0x0000, 0x0000, 0x87DA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87DB, - 0x0000, 0x87DC, 0x0000, 0x87DD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87DE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x87DF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x87E0, 0x0000, 0x87E1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87E2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87E3, 0x0000, 0x0000, 0x0000, 0x0000, 0x87E4, 0x0000, 0x87E5, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87E6, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87E7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x87E8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87E9, 0x0000, 0x0000, 0x87EA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87EB, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x87EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x87ED, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x87EE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x87F1, 0x87F2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F4, 0x0000, 0x87F5, - 0x0000, 0x87F6, 0x0000, 0x0000, 0x0000, 0x87F7, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87F8, 0x87F9, - 0x0000, 0x0000, 0x87FA, 0x0000, 0x0000, 0x0000, 0x87FB, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x87FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87FD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x87FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x87FF, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8800, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8801, 0x0000, 0x8802, 0x8803, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8804, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8805, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8806, 0x8807, 0x8808, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8809, 0x0000, 0x0000, 0x880A, 0x0000, 0x0000, 0x0000, 0x0000, - 0x880B, 0x0000, 0x0000, 0x0000, 0x880C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x880D, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x880E, 0x0000, 0x0000, 0x880F, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8810, 0x8811, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8812, 0x0000, 0x0000, 0x8813, - 0x0000, 0x8814, 0x0000, 0x0000, 0x0000, 0x8815, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8816, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8817, 0x0000, 0x0000, 0x0000, 0x0000, 0x8818, 0x0000, - 0x0000, 0x0000, 0x8819, 0x0000, 0x0000, 0x0000, 0x0000, 0x881A, 0x0000, - 0x0000, 0x0000, 0x881B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x881C, 0x0000, 0x881D, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x881E, 0x881F, 0x8820, 0x0000, 0x8821, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8822, 0x8823, 0x8824, 0x0000, - 0x0000, 0x8825, 0x0000, 0x0000, 0x8826, 0x8827, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8828, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8829, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x882A, 0x0000, 0x0000, 0x0000, 0x882B, - 0x0000, 0x882C, 0x0000, 0x0000, 0x0000, 0x0000, 0x882D, 0x882E, 0x0000, - 0x0000, 0x882F, 0x0000, 0x8830, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8831, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8832, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8833, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8834, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8835, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8836, 0x0000, 0x8837, 0x0000, 0x0000, 0x8838, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8839, 0x883A, 0x0000, 0x0000, 0x0000, 0x883B, - 0x0000, 0x0000, 0x883C, 0x0000, 0x0000, 0x0000, 0x0000, 0x883D, 0x0000, - 0x0000, 0x883E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x883F, 0x0000, 0x8840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8841, 0x0000, 0x0000, 0x0000, 0x8842, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8843, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8844, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8845, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8846, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8847, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8849, 0x0000, 0x0000, 0x0000, - 0x0000, 0x884A, 0x884B, 0x884C, 0x0000, 0x0000, 0x0000, 0x884D, 0x884E, - 0x0000, 0x0000, 0x884F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8851, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8852, - 0x0000, 0x8853, 0x8854, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8855, 0x0000, 0x8856, 0x0000, 0x0000, 0x8857, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8858, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8859, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x885A, 0x0000, 0x885B, 0x885C, 0x0000, 0x0000, 0x0000, 0x885D, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x885E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x885F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8860, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8861, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8862, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8863, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8864, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8865, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8866, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8867, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8868, - 0x8869, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x886A, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x886B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x886C, - 0x0000, 0x0000, 0x0000, 0x886D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x886E, 0x0000, 0x0000, 0x886F, 0x8870, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8871, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8872, 0x0000, 0x0000, 0x8873, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8874, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8875, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8876, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8877, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8879, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x887A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x887B, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x887C, 0x0000, 0x0000, 0x0000, - 0x887D, 0x887E, 0x0000, 0x887F, 0x0000, 0x8880, 0x8881, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8882, 0x8883, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8884, 0x8885, 0x0000, - 0x0000, 0x8886, 0x0000, 0x8887, 0x8888, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8889, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x888A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x888B, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x888C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x888D, 0x0000, - 0x888E, 0x0000, 0x0000, 0x888F, 0x8890, 0x0000, 0x0000, 0x0000, 0x8891, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8892, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8893, 0x0000, 0x8894, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8895, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8896, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8897, - 0x0000, 0x8898, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8899, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x889A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x889B, 0x0000, 0x0000, - 0x889C, 0x0000, 0x0000, 0x889D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x889E, 0x0000, - 0x0000, 0x889F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x88A0, 0x0000, 0x88A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x88A2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88A3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x88A4, 0x0000, 0x0000, 0x0000, 0x88A5, 0x0000, - 0x88A6, 0x0000, 0x88A7, 0x88A8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88A9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88AA, 0x0000, 0x88AB, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x88AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88AD, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88AE, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88AF, 0x0000, 0x0000, 0x88B0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88B1, - 0x0000, 0x0000, 0x88B2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88B3, 0x88B4, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x88B5, 0x0000, 0x0000, 0x0000, 0x88B6, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88B7, 0x88B8, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x88B9, 0x0000, 0x0000, 0x0000, 0x0000, 0x88BA, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88BB, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x88BC, 0x88BD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x88BE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x88BF, 0x0000, 0x0000, 0x88C0, 0x0000, 0x88C1, 0x88C2, 0x88C3, 0x88C4, - 0x88C5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88C6, 0x0000, 0x0000, - 0x88C7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88C8, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x88C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88CA, - 0x0000, 0x88CB, 0x0000, 0x88CC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x88CD, 0x0000, 0x0000, 0x0000, 0x88CE, 0x0000, 0x88CF, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88D0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88D1, 0x0000, - 0x0000, 0x0000, 0x0000, 0x88D2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88D3, 0x0000, - 0x88D4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x88D5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x88D6, 0x0000, 0x0000, 0x0000, 0x88D7, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88D8, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88D9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88DA, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88DB, 0x88DC, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88DD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88DE, 0x88DF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x88E1, 0x88E2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E3, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E4, - 0x0000, 0x0000, 0x88E5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x88E6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88E7, 0x0000, 0x88E8, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88E9, - 0x0000, 0x88EA, 0x0000, 0x0000, 0x0000, 0x0000, 0x88EB, 0x0000, 0x0000, - 0x0000, 0x88EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88ED, - 0x88EE, 0x0000, 0x0000, 0x88EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x88F0, - 0x0000, 0x0000, 0x88F1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x88F2, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x88F3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x88F4, 0x88F5, 0x88F6, 0x0000, 0x0000, 0x0000, 0x88F7, 0x0000, - 0x0000, 0x0000, 0x88F8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x88F9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x88FA, 0x0000, 0x0000, 0x88FB, 0x0000, 0x0000, 0x0000, 0x88FC, - 0x0000, 0x0000, 0x0000, 0x88FD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x88FE, 0x0000, 0x88FF, 0x0000, 0x0000, 0x8900, 0x8901, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8902, - 0x0000, 0x0000, 0x0000, 0x8903, 0x0000, 0x0000, 0x0000, 0x0000, 0x8904, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8905, 0x0000, 0x0000, 0x0000, 0x8906, 0x8907, 0x8908, 0x0000, 0x8909, - 0x0000, 0x890A, 0x0000, 0x890B, 0x0000, 0x890C, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x890D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x890E, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x890F, - 0x0000, 0x8910, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8911, - 0x0000, 0x8912, 0x0000, 0x0000, 0x0000, 0x8913, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8914, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8915, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8916, 0x0000, 0x0000, 0x8917, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8918, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8919, 0x891A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x891B, 0x0000, 0x891C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x891D, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x891E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x891F, 0x8920, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8921, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8922, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8923, - 0x8924, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8925, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8926, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8927, 0x0000, 0x0000, - 0x8928, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8929, 0x0000, - 0x0000, 0x0000, 0x892A, 0x0000, 0x0000, 0x892B, 0x0000, 0x0000, 0x0000, - 0x0000, 0x892C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x892D, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x892E, 0x0000, 0x0000, 0x892F, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8930, 0x0000, 0x0000, 0x0000, 0x8931, 0x0000, 0x8932, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8933, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8934, 0x8935, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8936, 0x0000, 0x0000, 0x8937, 0x8938, 0x0000, 0x8939, - 0x0000, 0x0000, 0x893A, 0x0000, 0x0000, 0x893B, 0x0000, 0x0000, 0x893C, - 0x893D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x893E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x893F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8940, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8941, 0x0000, 0x0000, - 0x8942, 0x8943, 0x8944, 0x8945, 0x0000, 0x8946, 0x0000, 0x0000, 0x8947, - 0x0000, 0x0000, 0x8948, 0x8949, 0x894A, 0x0000, 0x894B, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x894C, 0x0000, 0x894D, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x894E, 0x0000, 0x0000, 0x0000, - 0x0000, 0x894F, 0x0000, 0x8950, 0x0000, 0x0000, 0x8951, 0x0000, 0x8952, - 0x8953, 0x8954, 0x0000, 0x0000, 0x0000, 0x0000, 0x8955, 0x8956, 0x8957, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8958, 0x0000, 0x8959, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x895A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x895B, 0x895C, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x895D, - 0x0000, 0x0000, 0x895E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x895F, 0x8960, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8961, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8962, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8963, 0x0000, 0x0000, 0x0000, 0x0000, 0x8964, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8966, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8967, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8968, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8969, 0x896A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x896B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x896C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x896D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x896E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x896F, 0x0000, 0x8970, 0x8971, 0x0000, 0x8972, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8973, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8974, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8975, 0x0000, 0x0000, 0x0000, 0x8976, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8977, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8978, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8979, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x897A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x897B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x897C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x897D, 0x0000, 0x0000, - 0x0000, 0x897E, 0x0000, 0x0000, 0x0000, 0x0000, 0x897F, 0x0000, 0x8980, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8981, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8982, 0x8983, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8984, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8985, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8986, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8987, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8988, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8989, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x898A, 0x0000, 0x0000, 0x0000, 0x0000, 0x898B, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x898C, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x898D, 0x0000, 0x0000, 0x0000, - 0x898E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x898F, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8990, 0x0000, 0x8991, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8992, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8993, 0x0000, 0x0000, 0x8994, 0x8995, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8996, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8997, 0x8998, 0x0000, 0x0000, 0x8999, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x899A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x899B, - 0x0000, 0x0000, 0x0000, 0x0000, 0x899C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x899D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x899E, 0x899F, 0x89A0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x89A1, 0x0000, 0x0000, 0x89A2, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89A3, 0x0000, 0x0000, - 0x89A4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x89A5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89A6, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x89A7, 0x0000, 0x89A8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89A9, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89AA, 0x0000, 0x0000, 0x89AB, 0x0000, - 0x0000, 0x89AC, 0x89AD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89AE, 0x89AF, 0x0000, 0x0000, 0x0000, - 0x89B0, 0x0000, 0x0000, 0x0000, 0x0000, 0x89B1, 0x0000, 0x0000, 0x89B2, - 0x0000, 0x0000, 0x89B3, 0x0000, 0x0000, 0x0000, 0x0000, 0x89B4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89B5, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x89B6, 0x89B7, 0x0000, 0x89B8, 0x89B9, 0x89BA, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89BB, 0x0000, 0x89BC, 0x89BD, - 0x0000, 0x89BE, 0x89BF, 0x89C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x89C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x89C2, 0x0000, 0x89C3, - 0x89C4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x89C5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89C6, 0x0000, 0x0000, - 0x0000, 0x0000, 0x89C7, 0x0000, 0x0000, 0x89C8, 0x0000, 0x0000, 0x0000, - 0x89C9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x89CA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89CB, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x89CC, 0x0000, 0x89CD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x89CE, 0x0000, 0x0000, 0x0000, 0x0000, 0x89CF, 0x89D0, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89D1, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89D2, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x89D3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89D4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89D5, 0x0000, 0x0000, 0x89D6, - 0x89D7, 0x0000, 0x0000, 0x89D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x89D9, 0x0000, 0x89DA, 0x0000, 0x0000, 0x0000, 0x89DB, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89DC, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89DD, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89DE, - 0x0000, 0x0000, 0x0000, 0x89DF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E0, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E1, 0x89E2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x89E4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E5, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89E6, 0x0000, 0x0000, - 0x0000, 0x0000, 0x89E7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89E8, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x89E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89EA, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89EB, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x89EC, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x89ED, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89EE, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89EF, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F0, - 0x0000, 0x0000, 0x89F1, 0x0000, 0x89F2, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F3, 0x89F4, 0x0000, - 0x0000, 0x0000, 0x89F5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F6, 0x0000, 0x89F7, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89F8, 0x0000, 0x0000, - 0x0000, 0x89F9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89FA, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89FB, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x89FC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x89FD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x89FE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x89FF, 0x8A00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A01, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A02, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A03, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A04, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A05, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A06, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A07, 0x8A08, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A09, 0x0000, 0x8A0A, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A0B, 0x0000, 0x0000, 0x8A0C, 0x0000, 0x0000, 0x8A0D, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A0E, 0x0000, 0x0000, 0x8A0F, 0x0000, - 0x0000, 0x8A10, 0x8A11, 0x0000, 0x8A12, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A13, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A14, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A15, 0x8A16, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A17, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A18, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A19, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A1A, 0x0000, 0x8A1B, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A1C, 0x0000, 0x0000, 0x8A1D, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A1E, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A1F, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A20, 0x8A21, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A22, 0x8A23, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A24, 0x8A25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A28, 0x0000, 0x0000, 0x0000, 0x8A29, 0x0000, 0x8A2A, 0x0000, - 0x0000, 0x8A2B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A2C, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A2D, 0x0000, - 0x8A2E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A2F, 0x0000, 0x0000, 0x8A30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A31, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A32, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A33, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A34, 0x8A35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A36, 0x0000, 0x8A37, 0x0000, 0x8A38, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A39, 0x8A3A, 0x0000, 0x0000, 0x8A3B, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A3C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A3D, 0x0000, 0x0000, 0x8A3E, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A3F, 0x0000, 0x8A40, 0x8A41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A42, 0x8A43, 0x8A44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A46, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A47, 0x8A48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A49, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A4B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4C, 0x8A4D, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4E, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A4F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A50, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A51, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A52, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A53, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A57, 0x0000, 0x0000, 0x8A58, 0x0000, 0x0000, 0x0000, 0x8A59, - 0x0000, 0x0000, 0x8A5A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A5B, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A5C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A5D, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A5E, 0x0000, 0x0000, 0x8A5F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A60, 0x8A61, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A62, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A63, 0x0000, 0x0000, 0x8A64, 0x0000, 0x0000, - 0x8A65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A66, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A67, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A69, 0x0000, 0x8A6A, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A6B, 0x0000, 0x0000, 0x8A6C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A6D, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A6E, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A6F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A70, 0x0000, 0x0000, 0x0000, 0x8A71, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A72, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A73, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A74, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A75, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A76, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A77, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A7A, 0x0000, 0x0000, 0x0000, 0x8A7B, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A7C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A7E, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A7F, 0x0000, 0x0000, 0x8A80, 0x8A81, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A82, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A83, 0x0000, 0x8A84, - 0x8A85, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A86, 0x0000, 0x8A87, 0x0000, - 0x0000, 0x8A88, 0x0000, 0x8A89, 0x8A8A, 0x0000, 0x8A8B, 0x8A8C, 0x8A8D, - 0x0000, 0x0000, 0x0000, 0x8A8E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8A8F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8A90, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A91, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A92, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A93, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A94, 0x8A95, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8A96, 0x8A97, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A98, - 0x0000, 0x0000, 0x8A99, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A9A, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8A9B, 0x0000, 0x8A9C, 0x0000, 0x0000, - 0x8A9D, 0x0000, 0x0000, 0x0000, 0x0000, 0x8A9E, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8A9F, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8AA2, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA3, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AA4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA5, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8AA6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8AA7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AA8, 0x8AA9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8AAA, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AAB, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AAC, - 0x8AAD, 0x0000, 0x0000, 0x0000, 0x8AAE, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AAF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8AB0, 0x0000, 0x0000, 0x8AB1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AB2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB5, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB6, 0x0000, 0x8AB7, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AB9, 0x0000, - 0x0000, 0x8ABA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ABB, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8ABC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ABD, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ABE, 0x0000, - 0x0000, 0x0000, 0x8ABF, 0x8AC0, 0x0000, 0x8AC1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8AC2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8AC3, 0x0000, 0x0000, 0x8AC4, 0x0000, 0x8AC5, 0x0000, 0x0000, 0x8AC6, - 0x0000, 0x8AC7, 0x0000, 0x0000, 0x8AC8, 0x8AC9, 0x8ACA, 0x0000, 0x8ACB, - 0x8ACC, 0x8ACD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8ACE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ACF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8AD0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AD1, - 0x0000, 0x8AD2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AD3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AD4, - 0x0000, 0x8AD5, 0x0000, 0x0000, 0x8AD6, 0x0000, 0x8AD7, 0x8AD8, 0x0000, - 0x0000, 0x8AD9, 0x0000, 0x0000, 0x8ADA, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8ADB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ADC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ADD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8ADE, 0x0000, 0x8ADF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE0, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE1, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AE2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AE3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8AE5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AE6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE7, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8AE8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AE9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AEA, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8AEB, 0x0000, 0x0000, 0x0000, 0x8AEC, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AED, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8AEE, 0x0000, 0x0000, 0x0000, 0x8AEF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8AF0, 0x0000, 0x8AF1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF2, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF3, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF4, 0x0000, 0x0000, 0x0000, - 0x8AF5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF6, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8AF7, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8AF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8AF9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8AFA, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8AFB, 0x0000, 0x0000, 0x0000, 0x8AFC, 0x8AFD, 0x8AFE, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8AFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B00, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8B01, 0x8B02, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8B03, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8B04, 0x0000, 0x0000, 0x0000, 0x8B05, 0x0000, 0x0000, - 0x0000, 0x8B06, 0x0000, 0x0000, 0x8B07, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B0A, 0x0000, - 0x0000, 0x8B0B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8B0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8B0D, 0x0000, 0x0000, 0x8B0E, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B0F, 0x8B10, 0x8B11, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B12, - 0x8B13, 0x8B14, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B15, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B16, 0x8B17, 0x0000, 0x0000, 0x0000, 0x8B18, 0x8B19, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8B1A, 0x8B1B, 0x0000, 0x0000, 0x0000, 0x8B1C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B1D, 0x8B1E, 0x0000, 0x8B1F, 0x0000, 0x0000, 0x8B20, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B21, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8B22, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8B23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8B24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8B25, 0x0000, 0x0000, 0x0000, 0x8B26, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B27, 0x0000, 0x0000, 0x0000, 0x8B28, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B29, 0x0000, 0x8B2A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8B2B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B2C, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B2D, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B2E, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8B2F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B30, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8B31, 0x0000, 0x0000, 0x8B32, 0x0000, - 0x8B33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B34, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8B35, 0x0000, 0x8B36, 0x0000, 0x0000, 0x0000, 0x8B37, - 0x8B38, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B39, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B3A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B3B, 0x0000, 0x8B3C, 0x8B3D, 0x0000, 0x0000, 0x8B3E, 0x8B3F, 0x0000, - 0x0000, 0x0000, 0x8B40, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B41, 0x0000, - 0x0000, 0x8B42, 0x0000, 0x8B43, 0x0000, 0x0000, 0x0000, 0x8B44, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B45, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8B46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B47, 0x8B48, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B49, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B4A, - 0x8B4B, 0x0000, 0x8B4C, 0x0000, 0x8B4D, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8B4E, 0x0000, 0x8B4F, 0x0000, 0x8B50, 0x0000, - 0x8B51, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B56, 0x0000, 0x8B57, 0x0000, - 0x8B58, 0x0000, 0x0000, 0x8B59, 0x0000, 0x0000, 0x8B5A, 0x8B5B, 0x8B5C, - 0x0000, 0x8B5D, 0x0000, 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x0000, - 0x0000, 0x0000, 0x8B63, 0x0000, 0x0000, 0x0000, 0x8B64, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B65, 0x0000, 0x8B66, - 0x8B67, 0x8B68, 0x8B69, 0x0000, 0x8B6A, 0x0000, 0x0000, 0x0000, 0x8B6B, - 0x8B6C, 0x0000, 0x8B6D, 0x0000, 0x0000, 0x8B6E, 0x8B6F, 0x0000, 0x8B70, - 0x8B71, 0x8B72, 0x0000, 0x8B73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8B74, 0x0000, 0x8B75, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B77, 0x0000, 0x8B78, - 0x8B79, 0x0000, 0x0000, 0x8B7A, 0x8B7B, 0x0000, 0x0000, 0x0000, 0x8B7C, - 0x0000, 0x8B7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B7E, 0x8B7F, 0x8B80, 0x8B81, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8B82, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B83, - 0x0000, 0x8B84, 0x0000, 0x0000, 0x8B85, 0x0000, 0x8B86, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8B87, 0x0000, 0x0000, 0x0000, 0x8B88, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B89, - 0x0000, 0x8B8A, 0x0000, 0x8B8B, 0x0000, 0x8B8C, 0x8B8D, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B8E, 0x8B8F, 0x0000, - 0x0000, 0x8B90, 0x8B91, 0x8B92, 0x0000, 0x8B93, 0x0000, 0x0000, 0x0000, - 0x8B94, 0x8B95, 0x8B96, 0x8B97, 0x0000, 0x8B98, 0x8B99, 0x8B9A, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8B9B, 0x0000, 0x0000, 0x8B9C, 0x0000, 0x0000, - 0x8B9D, 0x8B9E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8B9F, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8BA0, 0x8BA1, 0x8BA2, 0x8BA3, 0x0000, - 0x0000, 0x8BA4, 0x8BA5, 0x0000, 0x8BA6, 0x8BA7, 0x0000, 0x8BA8, 0x0000, - 0x0000, 0x8BA9, 0x0000, 0x8BAA, 0x8BAB, 0x0000, 0x0000, 0x8BAC, 0x0000, - 0x0000, 0x8BAD, 0x0000, 0x8BAE, 0x8BAF, 0x0000, 0x8BB0, 0x0000, 0x8BB1, - 0x0000, 0x0000, 0x8BB2, 0x0000, 0x8BB3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BB4, - 0x8BB5, 0x8BB6, 0x8BB7, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BB8, 0x8BB9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BBA, 0x0000, 0x0000, 0x0000, - 0x8BBB, 0x0000, 0x8BBC, 0x8BBD, 0x8BBE, 0x0000, 0x0000, 0x0000, 0x8BBF, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BC0, 0x0000, - 0x0000, 0x8BC1, 0x0000, 0x0000, 0x8BC2, 0x8BC3, 0x0000, 0x0000, 0x8BC4, - 0x8BC5, 0x8BC6, 0x0000, 0x8BC7, 0x0000, 0x0000, 0x0000, 0x8BC8, 0x8BC9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8BCA, 0x0000, 0x8BCB, 0x8BCC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8BCD, 0x0000, 0x8BCE, 0x8BCF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8BD0, 0x0000, 0x0000, 0x0000, 0x8BD1, 0x0000, 0x0000, 0x8BD2, 0x8BD3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BD4, 0x8BD5, 0x8BD6, - 0x0000, 0x8BD7, 0x0000, 0x8BD8, 0x8BD9, 0x0000, 0x0000, 0x8BDA, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8BDB, 0x0000, 0x0000, 0x8BDC, 0x8BDD, - 0x8BDE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8BDF, 0x0000, 0x8BE0, 0x0000, 0x8BE1, 0x0000, 0x0000, 0x8BE2, - 0x0000, 0x0000, 0x0000, 0x8BE3, 0x0000, 0x0000, 0x8BE4, 0x0000, 0x8BE5, - 0x0000, 0x0000, 0x0000, 0x8BE6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8BE7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BE8, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BE9, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8BEA, 0x0000, 0x8BEB, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8BEC, 0x8BED, 0x0000, 0x8BEE, 0x0000, 0x0000, 0x8BEF, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF0, 0x0000, - 0x0000, 0x8BF1, 0x8BF2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8BF5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF6, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8BF7, 0x0000, 0x0000, 0x0000, 0x8BF8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8BF9, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8BFA, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8BFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8BFC, 0x8BFD, 0x0000, 0x8BFE, 0x8BFF, 0x0000, 0x8C00, - 0x8C01, 0x8C02, 0x0000, 0x8C03, 0x0000, 0x0000, 0x0000, 0x8C04, 0x8C05, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C06, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C07, - 0x0000, 0x0000, 0x8C08, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C0A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C0B, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C0C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C0D, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C0E, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C0F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C11, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C12, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C13, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C14, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C15, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C16, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C17, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C18, 0x8C19, 0x8C1A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C1B, 0x0000, 0x0000, - 0x0000, 0x8C1C, 0x0000, 0x8C1D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C1E, 0x0000, 0x8C1F, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C20, 0x8C21, 0x0000, 0x8C22, 0x0000, 0x0000, 0x8C23, 0x0000, - 0x0000, 0x8C24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C26, 0x8C27, 0x8C28, 0x8C29, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C2A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C2B, - 0x0000, 0x8C2C, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C2D, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C2E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C2F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C30, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C31, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C32, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C33, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C34, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C36, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C37, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C38, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C39, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3A, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3B, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3C, 0x0000, 0x0000, 0x8C3D, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3E, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C3F, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C40, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C41, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C44, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C45, 0x0000, 0x0000, - 0x0000, 0x8C46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C48, 0x0000, 0x0000, 0x0000, - 0x8C49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C4A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C4B, 0x8C4C, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C4D, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C4E, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C4F, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C50, 0x0000, 0x8C51, 0x8C52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C54, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C55, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C56, 0x0000, - 0x0000, 0x0000, 0x8C57, 0x0000, 0x0000, 0x8C58, 0x0000, 0x0000, 0x8C59, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C5A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C5B, - 0x0000, 0x0000, 0x8C5C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C5D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C5E, 0x0000, 0x8C5F, 0x0000, 0x8C60, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C61, 0x0000, 0x0000, 0x8C62, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C63, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C64, 0x0000, 0x0000, 0x8C65, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C66, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C67, 0x0000, 0x0000, 0x0000, 0x8C68, - 0x8C69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C6A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C6B, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C6C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C6D, 0x0000, 0x0000, 0x8C6E, 0x8C6F, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C70, 0x0000, 0x0000, 0x0000, - 0x8C71, 0x0000, 0x8C72, 0x8C73, 0x0000, 0x0000, 0x8C74, 0x8C75, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8C76, 0x0000, 0x0000, 0x8C77, 0x0000, 0x0000, 0x0000, 0x8C78, - 0x0000, 0x0000, 0x0000, 0x8C79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C7A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C7C, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C7E, 0x8C7F, 0x0000, - 0x0000, 0x8C80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8C81, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C82, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C83, 0x8C84, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C85, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8C86, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C87, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C88, 0x0000, 0x8C89, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8C8A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C8B, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C8C, 0x0000, 0x0000, 0x0000, - 0x8C8D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C8E, 0x0000, - 0x0000, 0x0000, 0x8C8F, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C90, 0x0000, - 0x0000, 0x0000, 0x8C91, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C92, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C93, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8C94, 0x0000, 0x0000, 0x8C95, 0x0000, 0x0000, 0x8C96, - 0x0000, 0x0000, 0x0000, 0x8C97, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C98, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C99, 0x0000, 0x0000, 0x0000, - 0x8C9A, 0x8C9B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8C9C, - 0x0000, 0x0000, 0x8C9D, 0x8C9E, 0x0000, 0x0000, 0x8C9F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA0, - 0x0000, 0x0000, 0x0000, 0x8CA1, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA4, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8CA5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8CA6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA7, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CA8, 0x0000, 0x8CA9, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8CAA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CAB, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CAC, - 0x8CAD, 0x0000, 0x0000, 0x0000, 0x8CAE, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CAF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8CB1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB2, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB3, 0x8CB4, 0x0000, 0x8CB5, 0x0000, - 0x0000, 0x8CB6, 0x0000, 0x0000, 0x8CB7, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8CB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8CB9, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8CBA, 0x0000, 0x0000, 0x8CBB, 0x0000, 0x0000, 0x0000, - 0x8CBC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CBD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8CBE, 0x0000, 0x0000, 0x8CBF, 0x0000, 0x8CC0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8CC1, 0x0000, 0x0000, 0x0000, 0x8CC2, 0x0000, - 0x0000, 0x0000, 0x8CC3, 0x0000, 0x0000, 0x8CC4, 0x0000, 0x8CC5, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CC6, 0x0000, - 0x0000, 0x0000, 0x8CC7, 0x8CC8, 0x0000, 0x0000, 0x0000, 0x8CC9, 0x0000, - 0x8CCA, 0x0000, 0x0000, 0x8CCB, 0x0000, 0x0000, 0x8CCC, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8CCD, 0x0000, 0x0000, 0x8CCE, 0x0000, 0x0000, 0x8CCF, - 0x0000, 0x8CD0, 0x8CD1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8CD2, 0x0000, 0x8CD3, 0x0000, 0x8CD4, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CD5, 0x8CD6, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8CD7, 0x0000, 0x8CD8, 0x0000, 0x8CD9, 0x0000, 0x8CDA, - 0x0000, 0x8CDB, 0x0000, 0x0000, 0x8CDC, 0x0000, 0x8CDD, 0x8CDE, 0x8CDF, - 0x8CE0, 0x0000, 0x0000, 0x8CE1, 0x0000, 0x8CE2, 0x0000, 0x8CE3, 0x0000, - 0x0000, 0x0000, 0x8CE4, 0x0000, 0x8CE5, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8CE6, 0x0000, 0x0000, 0x8CE7, 0x0000, 0x0000, 0x0000, 0x8CE8, 0x0000, - 0x0000, 0x8CE9, 0x0000, 0x8CEA, 0x0000, 0x0000, 0x0000, 0x8CEB, 0x0000, - 0x8CEC, 0x0000, 0x0000, 0x0000, 0x0000, 0x8CED, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8CEE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8CEF, 0x0000, 0x8CF0, 0x0000, 0x8CF1, 0x0000, 0x8CF2, 0x8CF3, 0x0000, - 0x0000, 0x8CF4, 0x0000, 0x0000, 0x8CF5, 0x0000, 0x0000, 0x8CF6, 0x0000, - 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x0000, 0x0000, 0x8CFB, 0x0000, 0x0000, - 0x8CFC, 0x0000, 0x8CFD, 0x8CFE, 0x8CFF, 0x8D00, 0x0000, 0x8D01, 0x8D02, - 0x8D03, 0x8D04, 0x0000, 0x8D05, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8D06, 0x0000, 0x0000, 0x8D07, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D0C, - 0x8D0D, 0x0000, 0x0000, 0x0000, 0x8D0E, 0x8D0F, 0x0000, 0x0000, 0x8D10, - 0x0000, 0x0000, 0x8D11, 0x0000, 0x8D12, 0x0000, 0x0000, 0x0000, 0x8D13, - 0x0000, 0x8D14, 0x8D15, 0x0000, 0x8D16, 0x8D17, 0x8D18, 0x8D19, 0x0000, - 0x8D1A, 0x0000, 0x8D1B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D1C, - 0x0000, 0x8D1D, 0x0000, 0x0000, 0x0000, 0x8D1E, 0x0000, 0x0000, 0x8D1F, - 0x0000, 0x0000, 0x8D20, 0x0000, 0x0000, 0x8D21, 0x0000, 0x0000, 0x8D22, - 0x0000, 0x8D23, 0x0000, 0x0000, 0x8D24, 0x0000, 0x8D25, 0x0000, 0x8D26, - 0x0000, 0x8D27, 0x0000, 0x8D28, 0x0000, 0x8D29, 0x8D2A, 0x0000, 0x0000, - 0x0000, 0x8D2B, 0x8D2C, 0x0000, 0x0000, 0x0000, 0x8D2D, 0x8D2E, 0x8D2F, - 0x8D30, 0x0000, 0x0000, 0x8D31, 0x8D32, 0x0000, 0x8D33, 0x0000, 0x8D34, - 0x8D35, 0x0000, 0x0000, 0x0000, 0x8D36, 0x0000, 0x8D37, 0x8D38, 0x0000, - 0x0000, 0x8D39, 0x0000, 0x8D3A, 0x0000, 0x0000, 0x8D3B, 0x8D3C, 0x8D3D, - 0x0000, 0x8D3E, 0x0000, 0x8D3F, 0x0000, 0x8D40, 0x0000, 0x8D41, 0x8D42, - 0x8D43, 0x0000, 0x8D44, 0x8D45, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D46, - 0x0000, 0x0000, 0x0000, 0x8D47, 0x0000, 0x8D48, 0x0000, 0x0000, 0x0000, - 0x8D49, 0x0000, 0x8D4A, 0x8D4B, 0x0000, 0x8D4C, 0x0000, 0x8D4D, 0x0000, - 0x8D4E, 0x0000, 0x0000, 0x8D4F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8D50, 0x0000, 0x0000, 0x8D51, 0x8D52, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8D53, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8D54, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D55, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D56, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8D57, 0x8D58, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8D59, 0x0000, 0x8D5A, 0x8D5B, 0x8D5C, 0x0000, - 0x8D5D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D5E, 0x0000, 0x0000, - 0x0000, 0x8D5F, 0x8D60, 0x0000, 0x0000, 0x0000, 0x8D61, 0x0000, 0x0000, - 0x8D62, 0x8D63, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D64, 0x8D65, 0x0000, - 0x8D66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8D67, 0x8D68, 0x0000, 0x0000, 0x8D69, 0x0000, 0x0000, 0x0000, - 0x8D6A, 0x8D6B, 0x0000, 0x8D6C, 0x8D6D, 0x0000, 0x0000, 0x0000, 0x8D6E, - 0x0000, 0x8D6F, 0x0000, 0x8D70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8D71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D72, - 0x0000, 0x8D73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8D74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8D75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D76, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D77, 0x8D78, 0x0000, - 0x8D79, 0x8D7A, 0x8D7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x8D7C, 0x8D7D, - 0x8D7E, 0x8D7F, 0x8D80, 0x8D81, 0x0000, 0x0000, 0x8D82, 0x8D83, 0x0000, - 0x8D84, 0x8D85, 0x8D86, 0x0000, 0x8D87, 0x8D88, 0x8D89, 0x0000, 0x8D8A, - 0x8D8B, 0x8D8C, 0x8D8D, 0x0000, 0x8D8E, 0x8D8F, 0x8D90, 0x8D91, 0x8D92, - 0x8D93, 0x8D94, 0x0000, 0x8D95, 0x8D96, 0x0000, 0x8D97, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8D98, 0x8D99, 0x8D9A, 0x0000, 0x8D9B, - 0x0000, 0x0000, 0x0000, 0x8D9C, 0x8D9D, 0x0000, 0x8D9E, 0x0000, 0x8D9F, - 0x0000, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA3, 0x8DA4, 0x0000, 0x8DA5, 0x8DA6, - 0x0000, 0x0000, 0x8DA7, 0x0000, 0x8DA8, 0x8DA9, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8DAA, 0x8DAB, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8DB1, 0x8DB2, 0x0000, 0x8DB3, 0x8DB4, 0x0000, 0x8DB5, 0x0000, - 0x0000, 0x8DB6, 0x0000, 0x8DB7, 0x8DB8, 0x0000, 0x0000, 0x8DB9, 0x8DBA, - 0x0000, 0x8DBB, 0x8DBC, 0x0000, 0x0000, 0x0000, 0x8DBD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DBE, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8DBF, 0x0000, 0x0000, 0x0000, 0x8DC0, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8DC1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC2, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC4, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC5, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC6, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC7, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DC8, 0x0000, - 0x0000, 0x8DC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DCA, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DCB, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8DCC, 0x8DCD, 0x8DCE, 0x0000, 0x8DCF, 0x0000, - 0x0000, 0x0000, 0x8DD0, 0x8DD1, 0x8DD2, 0x0000, 0x8DD3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8DD4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8DD5, 0x0000, 0x0000, 0x0000, 0x8DD6, 0x8DD7, 0x0000, 0x0000, 0x0000, - 0x8DD8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8DD9, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DDA, 0x8DDB, 0x8DDC, 0x8DDD, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8DDE, 0x0000, 0x8DDF, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8DE0, 0x0000, 0x0000, 0x0000, 0x8DE1, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8DE2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8DE3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DE4, 0x8DE5, 0x8DE6, - 0x8DE7, 0x8DE8, 0x0000, 0x8DE9, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DEA, - 0x0000, 0x8DEB, 0x0000, 0x8DEC, 0x8DED, 0x8DEE, 0x8DEF, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DF0, 0x0000, 0x8DF1, 0x8DF2, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DF3, 0x8DF4, 0x8DF5, 0x8DF6, - 0x8DF7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DF8, 0x8DF9, 0x0000, - 0x0000, 0x8DFA, 0x8DFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DFC, 0x0000, - 0x0000, 0x0000, 0x8DFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x8DFE, 0x0000, - 0x0000, 0x8DFF, 0x0000, 0x0000, 0x8E00, 0x8E01, 0x8E02, 0x0000, 0x8E03, - 0x0000, 0x8E04, 0x8E05, 0x8E06, 0x0000, 0x0000, 0x8E07, 0x0000, 0x0000, - 0x0000, 0x8E08, 0x8E09, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E0A, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8E0B, 0x0000, 0x8E0C, 0x8E0D, 0x0000, 0x8E0E, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8E0F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E10, 0x8E11, - 0x8E12, 0x0000, 0x0000, 0x8E13, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E14, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E15, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8E16, 0x8E17, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8E18, 0x8E19, 0x0000, 0x0000, 0x8E1A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8E1B, 0x8E1C, 0x0000, 0x0000, 0x0000, 0x8E1D, - 0x0000, 0x0000, 0x8E1E, 0x0000, 0x8E1F, 0x0000, 0x8E20, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E21, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E22, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8E23, 0x8E24, 0x0000, 0x8E25, 0x0000, 0x8E26, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8E27, 0x0000, 0x0000, 0x8E28, 0x0000, 0x0000, - 0x8E29, 0x0000, 0x0000, 0x8E2A, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E2B, - 0x8E2C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E2D, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8E2E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8E2F, 0x0000, 0x0000, 0x8E30, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8E31, 0x0000, 0x8E32, 0x0000, 0x8E33, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E34, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8E35, 0x0000, 0x0000, 0x8E36, 0x0000, - 0x8E37, 0x0000, 0x8E38, 0x0000, 0x8E39, 0x0000, 0x0000, 0x0000, 0x8E3A, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8E3B, 0x8E3C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8E3D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E3E, 0x0000, - 0x8E3F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8E40, 0x8E41, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8E42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E43, 0x8E44, - 0x0000, 0x8E45, 0x0000, 0x8E46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8E47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8E48, 0x8E49, 0x0000, 0x8E4A, 0x8E4B, 0x8E4C, 0x0000, 0x0000, 0x0000, - 0x8E4D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E4E, 0x8E4F, 0x0000, - 0x0000, 0x8E50, 0x0000, 0x8E51, 0x0000, 0x0000, 0x8E52, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E53, 0x0000, 0x8E54, - 0x0000, 0x8E55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E56, - 0x8E57, 0x0000, 0x8E58, 0x8E59, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E5A, - 0x0000, 0x0000, 0x0000, 0x8E5B, 0x0000, 0x0000, 0x8E5C, 0x8E5D, 0x0000, - 0x0000, 0x8E5E, 0x8E5F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8E60, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E61, 0x0000, - 0x0000, 0x8E62, 0x8E63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8E64, 0x0000, 0x8E65, 0x0000, 0x0000, 0x8E66, 0x8E67, 0x0000, 0x0000, - 0x8E68, 0x8E69, 0x8E6A, 0x8E6B, 0x0000, 0x0000, 0x8E6C, 0x8E6D, 0x8E6E, - 0x8E6F, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E70, 0x0000, 0x0000, 0x8E71, - 0x8E72, 0x0000, 0x8E73, 0x0000, 0x8E74, 0x0000, 0x0000, 0x0000, 0x8E75, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E76, 0x0000, 0x0000, 0x8E77, - 0x8E78, 0x0000, 0x0000, 0x8E79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8E7A, 0x0000, 0x8E7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E7C, - 0x8E7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8E7E, 0x0000, 0x8E7F, 0x0000, 0x8E80, 0x8E81, 0x0000, 0x0000, 0x0000, - 0x8E82, 0x8E83, 0x0000, 0x0000, 0x8E84, 0x0000, 0x8E85, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E86, 0x0000, 0x0000, 0x0000, - 0x8E87, 0x0000, 0x8E88, 0x0000, 0x0000, 0x8E89, 0x0000, 0x8E8A, 0x0000, - 0x8E8B, 0x8E8C, 0x8E8D, 0x0000, 0x0000, 0x0000, 0x8E8E, 0x0000, 0x0000, - 0x8E8F, 0x0000, 0x8E90, 0x8E91, 0x0000, 0x8E92, 0x0000, 0x8E93, 0x8E94, - 0x8E95, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E96, 0x0000, - 0x0000, 0x0000, 0x8E97, 0x0000, 0x8E98, 0x0000, 0x8E99, 0x8E9A, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8E9B, 0x0000, 0x8E9C, 0x0000, 0x8E9D, 0x0000, - 0x8E9E, 0x0000, 0x0000, 0x0000, 0x0000, 0x8E9F, 0x0000, 0x0000, 0x8EA0, - 0x0000, 0x0000, 0x8EA1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8EA2, 0x0000, 0x8EA3, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8EA4, 0x8EA5, 0x8EA6, 0x0000, 0x8EA7, 0x8EA8, 0x8EA9, - 0x0000, 0x0000, 0x0000, 0x8EAA, 0x8EAB, 0x8EAC, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8EAD, 0x0000, 0x0000, 0x0000, 0x8EAE, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8EAF, 0x0000, 0x0000, 0x8EB0, 0x0000, - 0x8EB1, 0x0000, 0x8EB2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8EB3, 0x8EB4, 0x0000, 0x8EB5, 0x0000, 0x0000, 0x8EB6, 0x0000, 0x0000, - 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBA, 0x0000, 0x0000, 0x0000, 0x8EBB, 0x8EBC, - 0x8EBD, 0x8EBE, 0x0000, 0x0000, 0x0000, 0x8EBF, 0x0000, 0x8EC0, 0x8EC1, - 0x0000, 0x8EC2, 0x0000, 0x0000, 0x8EC3, 0x8EC4, 0x0000, 0x0000, 0x0000, - 0x8EC5, 0x0000, 0x0000, 0x8EC6, 0x0000, 0x8EC7, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EC8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8EC9, 0x8ECA, 0x0000, 0x0000, 0x8ECB, 0x8ECC, 0x0000, 0x8ECD, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ECE, 0x0000, 0x0000, - 0x0000, 0x8ECF, 0x0000, 0x8ED0, 0x8ED1, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8ED2, 0x0000, 0x0000, 0x0000, 0x8ED3, 0x8ED4, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8ED5, 0x0000, 0x0000, 0x0000, 0x8ED6, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8ED7, 0x8ED8, 0x0000, 0x0000, 0x0000, 0x8ED9, - 0x0000, 0x0000, 0x0000, 0x8EDA, 0x0000, 0x0000, 0x0000, 0x8EDB, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EDC, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EDD, 0x0000, - 0x8EDE, 0x0000, 0x8EDF, 0x0000, 0x0000, 0x8EE0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8EE1, 0x8EE2, 0x8EE3, 0x0000, 0x0000, 0x8EE4, 0x8EE5, - 0x0000, 0x8EE6, 0x8EE7, 0x0000, 0x8EE8, 0x0000, 0x8EE9, 0x0000, 0x8EEA, - 0x0000, 0x0000, 0x8EEB, 0x0000, 0x8EEC, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8EED, 0x0000, 0x0000, 0x0000, 0x8EEE, 0x8EEF, 0x0000, 0x0000, 0x0000, - 0x8EF0, 0x8EF1, 0x0000, 0x0000, 0x8EF2, 0x8EF3, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8EF4, 0x8EF5, 0x0000, 0x0000, 0x0000, 0x8EF6, 0x8EF7, - 0x8EF8, 0x8EF9, 0x0000, 0x8EFA, 0x8EFB, 0x0000, 0x8EFC, 0x0000, 0x0000, - 0x0000, 0x8EFD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8EFE, 0x0000, 0x0000, 0x0000, 0x0000, 0x8EFF, 0x0000, 0x0000, 0x0000, - 0x8F00, 0x0000, 0x0000, 0x0000, 0x8F01, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8F02, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F03, 0x0000, 0x0000, 0x8F04, - 0x8F05, 0x0000, 0x0000, 0x0000, 0x8F06, 0x8F07, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8F08, 0x8F09, 0x0000, 0x0000, 0x8F0A, 0x0000, 0x0000, 0x8F0B, - 0x0000, 0x0000, 0x0000, 0x8F0C, 0x8F0D, 0x0000, 0x8F0E, 0x8F0F, 0x0000, - 0x8F10, 0x0000, 0x8F11, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F12, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8F13, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8F14, 0x0000, 0x8F15, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F16, 0x0000, - 0x0000, 0x0000, 0x8F17, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8F18, 0x0000, 0x8F19, 0x0000, 0x0000, 0x8F1A, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F1B, - 0x0000, 0x0000, 0x8F1C, 0x8F1D, 0x8F1E, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8F1F, 0x0000, 0x8F20, 0x0000, 0x0000, 0x8F21, 0x8F22, 0x8F23, 0x8F24, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F25, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F26, 0x0000, 0x8F27, 0x8F28, 0x0000, - 0x0000, 0x8F29, 0x0000, 0x8F2A, 0x8F2B, 0x0000, 0x8F2C, 0x8F2D, 0x0000, - 0x8F2E, 0x8F2F, 0x0000, 0x0000, 0x8F30, 0x8F31, 0x8F32, 0x0000, 0x0000, - 0x0000, 0x8F33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8F34, 0x0000, 0x8F35, 0x0000, 0x8F36, 0x0000, 0x0000, 0x8F37, - 0x8F38, 0x0000, 0x8F39, 0x8F3A, 0x8F3B, 0x0000, 0x0000, 0x0000, 0x8F3C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F3D, 0x0000, 0x0000, 0x8F3E, 0x0000, - 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43, 0x0000, 0x0000, 0x0000, 0x8F44, - 0x0000, 0x0000, 0x8F45, 0x8F46, 0x8F47, 0x0000, 0x8F48, 0x8F49, 0x8F4A, - 0x0000, 0x0000, 0x0000, 0x8F4B, 0x0000, 0x8F4C, 0x8F4D, 0x8F4E, 0x8F4F, - 0x8F50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F51, 0x0000, 0x8F52, - 0x0000, 0x8F53, 0x8F54, 0x8F55, 0x0000, 0x8F56, 0x8F57, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F58, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8F59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F5A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8F5B, 0x0000, 0x0000, 0x8F5C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8F5D, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F5E, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F5F, - 0x8F60, 0x0000, 0x0000, 0x0000, 0x8F61, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8F62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F63, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8F64, 0x0000, 0x8F65, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8F66, 0x0000, 0x0000, 0x8F67, 0x0000, 0x0000, - 0x0000, 0x8F68, 0x0000, 0x0000, 0x8F69, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8F6A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F6B, 0x0000, 0x0000, 0x8F6C, 0x0000, - 0x8F6D, 0x8F6E, 0x0000, 0x8F6F, 0x0000, 0x0000, 0x0000, 0x8F70, 0x8F71, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F72, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F73, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F74, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F75, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F76, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F77, 0x0000, 0x8F78, 0x0000, 0x8F79, - 0x0000, 0x8F7A, 0x8F7B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8F7C, 0x0000, 0x8F7D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F7E, 0x0000, 0x8F7F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8F80, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8F81, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F82, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F83, 0x0000, 0x8F84, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8F85, 0x0000, 0x8F86, 0x8F87, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8F88, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8F89, 0x0000, 0x0000, 0x8F8A, 0x0000, 0x8F8B, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8F8C, 0x0000, 0x0000, 0x0000, 0x8F8D, 0x0000, 0x8F8E, 0x8F8F, 0x8F90, - 0x0000, 0x8F91, 0x8F92, 0x8F93, 0x8F94, 0x0000, 0x8F95, 0x0000, 0x8F96, - 0x0000, 0x8F97, 0x8F98, 0x8F99, 0x8F9A, 0x8F9B, 0x8F9C, 0x0000, 0x0000, - 0x0000, 0x8F9D, 0x8F9E, 0x0000, 0x0000, 0x0000, 0x8F9F, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8FA0, 0x0000, 0x0000, 0x8FA1, 0x0000, 0x8FA2, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FA3, 0x0000, 0x0000, 0x8FA4, - 0x0000, 0x8FA5, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FA6, 0x8FA7, 0x8FA8, - 0x0000, 0x8FA9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8FAA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x8FAB, 0x8FAC, 0x8FAD, 0x8FAE, 0x0000, 0x0000, 0x8FAF, 0x8FB0, 0x0000, - 0x0000, 0x0000, 0x0000, 0x8FB1, 0x8FB2, 0x0000, 0x8FB3, 0x0000, 0x0000, - 0x8FB4, 0x0000, 0x0000, 0x0000, 0x8FB5, 0x0000, 0x0000, 0x8FB6, 0x0000, - 0x8FB7, 0x0000, 0x0000, 0x0000, 0x8FB8, 0x8FB9, 0x0000, 0x0000, 0x8FBA, - 0x8FBB, 0x8FBC, 0x0000, 0x8FBD, 0x8FBE, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8FBF, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FC0, 0x8FC1, - 0x8FC2, 0x0000, 0x8FC3, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FC4, 0x0000, - 0x8FC5, 0x0000, 0x8FC6, 0x8FC7, 0x8FC8, 0x0000, 0x0000, 0x0000, 0x8FC9, - 0x0000, 0x0000, 0x0000, 0x8FCA, 0x0000, 0x8FCB, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FCC, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FCD, 0x8FCE, 0x0000, - 0x8FCF, 0x0000, 0x0000, 0x0000, 0x8FD0, 0x8FD1, 0x8FD2, 0x0000, 0x8FD3, - 0x0000, 0x8FD4, 0x0000, 0x0000, 0x8FD5, 0x0000, 0x8FD6, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FD7, 0x8FD8, 0x8FD9, 0x8FDA, - 0x0000, 0x0000, 0x0000, 0x8FDB, 0x8FDC, 0x8FDD, 0x0000, 0x0000, 0x0000, - 0x8FDE, 0x8FDF, 0x0000, 0x8FE0, 0x0000, 0x8FE1, 0x0000, 0x0000, 0x8FE2, - 0x8FE3, 0x8FE4, 0x0000, 0x0000, 0x8FE5, 0x0000, 0x8FE6, 0x0000, 0x8FE7, - 0x8FE8, 0x8FE9, 0x0000, 0x8FEA, 0x0000, 0x0000, 0x8FEB, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8FEC, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x8FED, 0x0000, 0x8FEE, 0x0000, 0x8FEF, - 0x8FF0, 0x0000, 0x0000, 0x0000, 0x8FF1, 0x0000, 0x8FF2, 0x0000, 0x8FF3, - 0x8FF4, 0x0000, 0x8FF5, 0x0000, 0x8FF6, 0x0000, 0x8FF7, 0x0000, 0x0000, - 0x8FF8, 0x8FF9, 0x0000, 0x8FFA, 0x8FFB, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x8FFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x8FFD, 0x0000, 0x0000, - 0x0000, 0x0000, 0x8FFE, 0x0000, 0x8FFF, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x9000, 0x9001, 0x9002, 0x0000, 0x0000, 0x9003, 0x0000, 0x9004, - 0x9005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9006, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x9007, 0x9008, 0x9009, 0x0000, 0x900A, 0x900B, 0x0000, 0x0000, - 0x900C, 0x900D, 0x0000, 0x900E, 0x0000, 0x900F, 0x0000, 0x9010, 0x0000, - 0x0000, 0x9011, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x9012, 0x0000, 0x0000, 0x9013, 0x9014, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9015, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x9016, 0x0000, 0x9017, 0x9018, 0x0000, 0x0000, - 0x9019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x901A, - 0x901B, 0x901C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x901D, - 0x0000, 0x0000, 0x901E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x901F, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x9020, 0x0000, 0x9021, 0x9022, 0x0000, 0x9023, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9024, 0x9025, 0x9026, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x9027, 0x0000, 0x9028, 0x9029, 0x902A, 0x902B, - 0x902C, 0x902D, 0x0000, 0x0000, 0x0000, 0x0000, 0x902E, 0x0000, 0x902F, - 0x9030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9031, - 0x0000, 0x9032, 0x0000, 0x0000, 0x9033, 0x9034, 0x0000, 0x0000, 0x0000, - 0x9035, 0x0000, 0x0000, 0x9036, 0x0000, 0x9037, 0x9038, 0x9039, 0x0000, - 0x0000, 0x0000, 0x903A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x903B, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x903C, 0x0000, 0x0000, 0x903D, 0x0000, - 0x903E, 0x903F, 0x9040, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9041, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9042, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x9043, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9044, 0x0000, 0x0000, - 0x9045, 0x0000, 0x9046, 0x0000, 0x9047, 0x0000, 0x0000, 0x0000, 0x0000, - 0x9048, 0x0000, 0x0000, 0x9049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x904A, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x904B, 0x0000, 0x904C, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x904D, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x904E, 0x0000, 0x0000, 0x0000, 0x0000, 0x904F, 0x0000, - 0x0000, 0x9050, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x9051, 0x0000, 0x9052, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9053, 0x9054, 0x0000, 0x9055, - 0x9056, 0x9057, 0x9058, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x9059, 0x0000, 0x0000, 0x0000, 0x905A, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x905B, 0x0000, 0x0000, 0x0000, 0x905C, 0x905D, - 0x0000, 0x905E, 0x905F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x9060, 0x9061, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x9062, 0x0000, 0x9063, 0x9064, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9065, 0x9066, 0x9067, 0x9068, 0x0000, - 0x0000, 0x0000, 0x9069, 0x0000, 0x906A, 0x0000, 0x0000, 0x0000, 0x906B, - 0x906C, 0x0000, 0x906D, 0x0000, 0x0000, 0x906E, 0x906F, 0x0000, 0x9070, - 0x9071, 0x0000, 0x0000, 0x0000, 0x0000, 0x9072, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x9073, 0x0000, 0x9074, 0x0000, 0x0000, 0x9075, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x9076, 0x9077, 0x0000, 0x0000, 0x0000, 0x9078, 0x0000, - 0x0000, 0x0000, 0x0000, 0x9079, 0x907A, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x907B, 0x0000, 0x0000, 0x907C, 0x0000, - 0x0000, 0x0000, 0x907D, 0x0000, 0x907E, 0x0000, 0x0000, 0x907F, 0x9080, - 0x0000, 0x0000, 0x0000, 0x9081, 0x9082, 0x0000, 0x0000, 0x9083, 0x9084, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9085, 0x0000, 0x9086, 0x9087, 0x9088, - 0x0000, 0x0000, 0x9089, 0x0000, 0x0000, 0x0000, 0x908A, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x908B, 0x908C, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x908D, 0x0000, 0x908E, 0x0000, 0x908F, - 0x9090, 0x9091, 0x0000, 0x0000, 0x0000, 0x0000, 0x9092, 0x0000, 0x9093, - 0x9094, 0x0000, 0x0000, 0x9095, 0x0000, 0x0000, 0x0000, 0x9096, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x9097, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9098, 0x9099, 0x0000, 0x909A, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x909B, 0x0000, - 0x909C, 0x0000, 0x909D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x909E, 0x909F, 0x90A0, 0x0000, 0x90A1, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x90A2, 0x90A3, 0x0000, 0x90A4, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90A5, 0x0000, - 0x0000, 0x90A6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90A7, 0x0000, - 0x90A8, 0x90A9, 0x90AA, 0x0000, 0x0000, 0x0000, 0x90AB, 0x0000, 0x0000, - 0x90AC, 0x0000, 0x90AD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x90AE, 0x90AF, 0x0000, 0x0000, 0x0000, 0x90B0, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x90B1, 0x0000, 0x0000, 0x0000, 0x90B2, 0x0000, - 0x0000, 0x90B3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90B4, 0x90B5, - 0x90B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x90B7, 0x90B8, 0x0000, 0x0000, 0x90B9, 0x90BA, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90BB, 0x0000, 0x90BC, 0x0000, - 0x0000, 0x90BD, 0x0000, 0x0000, 0x90BE, 0x0000, 0x0000, 0x0000, 0x0000, - 0x90BF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90C0, 0x0000, - 0x90C1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x90C2, 0x0000, 0x0000, 0x90C3, 0x0000, 0x90C4, 0x0000, 0x90C5, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90C6, 0x0000, 0x0000, - 0x90C7, 0x90C8, 0x0000, 0x0000, 0x0000, 0x90C9, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x90CA, 0x0000, 0x0000, 0x90CB, 0x0000, 0x90CC, 0x0000, - 0x0000, 0x0000, 0x0000, 0x90CD, 0x90CE, 0x90CF, 0x90D0, 0x0000, 0x0000, - 0x90D1, 0x0000, 0x90D2, 0x90D3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x90D4, 0x0000, 0x0000, 0x90D5, 0x90D6, 0x0000, 0x90D7, - 0x90D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x90D9, 0x90DA, 0x0000, 0x0000, 0x0000, 0x0000, 0x90DB, - 0x0000, 0x0000, 0x0000, 0x90DC, 0x0000, 0x0000, 0x90DD, 0x0000, 0x90DE, - 0x0000, 0x0000, 0x0000, 0x90DF, 0x90E0, 0x90E1, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x90E2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90E3, 0x0000, 0x0000, 0x90E4, - 0x0000, 0x90E5, 0x90E6, 0x0000, 0x90E7, 0x90E8, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x90E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x90EA, 0x0000, - 0x90EB, 0x90EC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x90ED, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90EE, 0x0000, 0x0000, 0x0000, - 0x90EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x90F0, 0x90F1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x90F2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90F3, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90F4, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90F5, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x90F6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x90F7, 0x0000, 0x90F8, 0x90F9, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x90FA, 0x0000, 0x90FB, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90FC, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x90FD, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90FE, - 0x90FF, 0x0000, 0x0000, 0x9100, 0x9101, 0x0000, 0x0000, 0x9102, 0x0000, - 0x9103, 0x9104, 0x0000, 0x0000, 0x0000, 0x9105, 0x0000, 0x0000, 0x9106, - 0x0000, 0x0000, 0x9107, 0x9108, 0x9109, 0x0000, 0x0000, 0x0000, 0x0000, - 0x910A, 0x0000, 0x0000, 0x0000, 0x910B, 0x0000, 0x910C, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x910D, 0x0000, 0x0000, 0x0000, 0x0000, 0x910E, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x910F, 0x9110, 0x0000, 0x9111, 0x0000, 0x0000, - 0x0000, 0x9112, 0x9113, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x9114, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9115, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9116, 0x9117, 0x9118, - 0x9119, 0x911A, 0x911B, 0x911C, 0x911D, 0x911E, 0x911F, 0x9120, 0x9121, - 0x9122, 0x9123, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128, 0x9129, 0x912A, - 0x912B, 0x912C, 0x912D, 0x912E, 0x912F, 0x9130, 0x9131, 0x9132, 0x9133, - 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x9139, 0x913A, 0x913B, 0x913C, - 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, 0x9142, 0x9143, 0x9144, 0x9145, - 0x9146, 0x9147, 0x9148, 0x9149, 0x914A, 0x914B, 0x914C, 0x914D, 0x914E, - 0x914F, 0x9150, 0x9151, 0x9152, 0x9153, 0x9154, 0x9155, 0x9156, 0x9157, - 0x9158, 0x9159, 0x915A, 0x915B, 0x915C, 0x915D, 0x915E, 0x915F, 0x9160, - 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, - 0x916A, 0x916B, 0x916C, 0x916D, 0x916E, 0x916F, 0x9170, 0x9171, 0x9172, - 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917A, 0x917B, - 0x917C, 0x917D, 0x917E, 0x917F, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, - 0x9185, 0x9186, 0x9187, 0x9188, 0x9189, 0x918A, 0x918B, 0x918C, 0x918D, - 0x918E, 0x918F, 0x9190, 0x9191, 0x9192, 0x9193, 0x9194, 0x9195, 0x9196, - 0x9197, 0x9198, 0x9199, 0x919A, 0x919B, 0x919C, 0x919D, 0x919E, 0x919F, - 0x91A0, 0x91A1, 0x91A2, 0x91A3, 0x91A4, 0x91A5, 0x91A6, 0x91A7, 0x91A8, - 0x91A9, 0x91AA, 0x91AB, 0x91AC, 0x91AD, 0x91AE, 0x91AF, 0x91B0, 0x91B1, - 0x91B2, 0x91B3, 0x91B4, 0x91B5, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BA, - 0x91BB, 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3, - 0x91C4, 0x91C5, 0x91C6, 0x91C7, 0x91C8, 0x91C9, 0x91CA, 0x91CB, 0x91CC, - 0x91CD, 0x91CE, 0x91CF, 0x91D0, 0x91D1, 0x91D2, 0x91D3, 0x91D4, 0x91D5, - 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB, 0x91DC, 0x91DD, 0x91DE, - 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4, 0x91E5, 0x91E6, 0x91E7, - 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF, 0x91F0, - 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5, 0x91F6, 0x91F7, 0x91F8, 0x91F9, - 0x91FA, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF, 0x9200, 0x9201, 0x9202, - 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, 0x9208, 0x9209, 0x920A, 0x920B, - 0x920C, 0x920D, 0x920E, 0x920F, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, - 0x9215, 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D, - 0x921E, 0x921F, 0x9220, 0x9221, 0x9222, 0x9223, 0x0000, 0x0000, 0x9224, - 0x0000, 0x9225, 0x0000, 0x0000, 0x9226, 0x9227, 0x9228, 0x9229, 0x922A, - 0x922B, 0x922C, 0x922D, 0x922E, 0x922F, 0x0000, 0x9230, 0x0000, 0x9231, - 0x0000, 0x0000, 0x9232, 0x9233, 0x0000, 0x0000, 0x0000, 0x9234, 0x9235, - 0x9236, 0x9237, 0x0000, 0x0000, 0x9238, 0x9239, 0x923A, 0x923B, 0x923C, - 0x923D, 0x923E, 0x923F, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, - 0x9246, 0x9247, 0x9248, 0x9249, 0x924A, 0x924B, 0x924C, 0x924D, 0x924E, - 0x924F, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, - 0x9258, 0x9259, 0x925A, 0x925B, 0x925C, 0x925D, 0x925E, 0x925F, 0x9260, - 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, - 0x926A, 0x926B, 0x926C, 0x926D, 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, - 0x9273, 0x0000, 0x9274, 0x0000, 0x0000, 0x9275, 0x9276, 0x9277, 0x9278, - 0x9279, 0x927A, 0x927B, 0x927C, 0x927D, 0x927E, 0x927F, 0x9280, 0x9281, - 0x9282, 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, - 0x928B, 0x928C, 0x928D, 0x928E, 0x928F, 0x9290, 0x9291, 0x9292, 0x9293, - 0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929A, 0x929B, 0x929C, - 0x929D, 0x929E, 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, 0x92A4, 0x92A5, - 0x92A6, 0x92A7, 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, 0x92AE, - 0x92AF, 0x92B0, 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B7, - 0x92B8, 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, 0x92BF, 0x92C0, - 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C8, 0x92C9, - 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, 0x92D0, 0x92D1, 0x92D2, - 0x92D3, 0x0000, 0x0000, 0x0000, 0x92D4, 0x92D5, 0x92D6, 0x0000, 0x0000, - 0x0000, 0x92D7, 0x92D8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23AC, 0x23AE, 0x23B0, 0x3312, - 0x3315, 0x23B2, 0x23B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23B6, 0x23B8, 0x23BA, - 0x23BC, 0x23BE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x23C0, 0x0000, - 0x23C2, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, 0x92E0, - 0x92E1, 0x92E2, 0x23C4, 0x23C6, 0x23C8, 0x23CA, 0x23CC, 0x23CE, 0x23D0, - 0x23D2, 0x23D4, 0x23D6, 0x23D8, 0x23DA, 0x23DC, 0x0000, 0x23DE, 0x23E0, - 0x23E2, 0x23E4, 0x23E6, 0x0000, 0x23E8, 0x0000, 0x23EA, 0x23EC, 0x0000, - 0x23EE, 0x23F0, 0x0000, 0x23F2, 0x23F4, 0x23F6, 0x23F8, 0x23FA, 0x23FC, - 0x23FE, 0x2400, 0x2402, 0x2404, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, - 0x92E8, 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0, - 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, 0x92F8, 0x92F9, - 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, 0x9300, 0x9301, 0x9302, - 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309, 0x930A, 0x930B, - 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, - 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, 0x931A, 0x931B, 0x931C, 0x931D, - 0x931E, 0x931F, 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, - 0x9327, 0x9328, 0x9329, 0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, - 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, - 0x9339, 0x933A, 0x933B, 0x933C, 0x933D, 0x933E, 0x933F, 0x9340, 0x9341, - 0x9342, 0x9343, 0x9344, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934A, 0x934B, 0x934C, 0x934D, - 0x934E, 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, - 0x9357, 0x9358, 0x9359, 0x935A, 0x935B, 0x2406, 0x2408, 0x240A, 0x240C, - 0x240E, 0x2410, 0x2412, 0x2414, 0x2416, 0x2418, 0x241A, 0x241C, 0x241E, - 0x2420, 0x2422, 0x2424, 0x2426, 0x2428, 0x935C, 0x935D, 0x935E, 0x935F, - 0x242A, 0x242C, 0x242E, 0x2430, 0x2432, 0x2434, 0x2436, 0x2438, 0x243A, - 0x243C, 0x243E, 0x2440, 0x2442, 0x2444, 0x2446, 0x2448, 0x244A, 0x244C, - 0x244E, 0x2450, 0x2452, 0x2454, 0x2456, 0x2458, 0x245A, 0x245C, 0x245E, - 0x2460, 0x2462, 0x2464, 0x2466, 0x2468, 0x246A, 0x246C, 0x246E, 0x2470, - 0x2472, 0x2474, 0x2476, 0x2478, 0x247A, 0x247C, 0x247E, 0x2480, 0x2482, - 0x2484, 0x2486, 0x2488, 0x248A, 0x248C, 0x248E, 0x2490, 0x2492, 0x2494, - 0x2496, 0x2498, 0x249A, 0x249C, 0x249E, 0x24A0, 0x24A2, 0x24A4, 0x24A6, - 0x24A8, 0x24AA, 0x24AC, 0x24AE, 0x24B0, 0x24B2, 0x24B4, 0x24B6, 0x24B8, - 0x24BA, 0x24BC, 0x24BE, 0x24C0, 0x24C2, 0x24C4, 0x24C6, 0x24C8, 0x24CA, - 0x24CC, 0x24CE, 0x24D0, 0x24D2, 0x24D4, 0x24D6, 0x24D8, 0x24DA, 0x24DC, - 0x24DE, 0x24E0, 0x24E2, 0x24E4, 0x24E6, 0x24E8, 0x24EA, 0x24EC, 0x24EE, - 0x24F0, 0x24F2, 0x24F4, 0x24F6, 0x24F8, 0x24FA, 0x24FC, 0x24FE, 0x2500, - 0x2502, 0x2504, 0x2506, 0x2508, 0x250A, 0x250C, 0x250E, 0x2510, 0x2512, - 0x2514, 0x2516, 0x2518, 0x251A, 0x251C, 0x251E, 0x2520, 0x2522, 0x2524, - 0x2526, 0x2528, 0x252A, 0x252C, 0x252E, 0x2530, 0x2532, 0x2534, 0x2536, - 0x2538, 0x253A, 0x253C, 0x253E, 0x2540, 0x2542, 0x2544, 0x2546, 0x2548, - 0x254A, 0x254C, 0x254E, 0x2550, 0x2552, 0x2554, 0x2556, 0x2558, 0x255A, - 0x255C, 0x255E, 0x2560, 0x2562, 0x2564, 0x2566, 0x2568, 0x256A, 0x256C, - 0x256E, 0x2570, 0x2572, 0x2574, 0x2576, 0x2578, 0x257A, 0x257C, 0x257E, - 0x2580, 0x2582, 0x2584, 0x2586, 0x2588, 0x258A, 0x258C, 0x258E, 0x2590, - 0x2592, 0x2594, 0x2596, 0x2598, 0x259A, 0x259C, 0x259E, 0x25A0, 0x25A2, - 0x25A4, 0x25A6, 0x25A8, 0x25AA, 0x25AC, 0x25AE, 0x25B0, 0x25B2, 0x25B4, - 0x25B6, 0x25B8, 0x25BA, 0x25BC, 0x25BE, 0x25C0, 0x25C2, 0x25C4, 0x25C6, - 0x25C8, 0x25CA, 0x25CC, 0x25CE, 0x25D0, 0x25D2, 0x25D4, 0x25D6, 0x25D8, - 0x25DA, 0x25DC, 0x25DE, 0x25E0, 0x25E2, 0x25E4, 0x25E6, 0x25E8, 0x25EA, - 0x25EC, 0x25EE, 0x25F0, 0x25F2, 0x25F4, 0x25F6, 0x25F8, 0x25FA, 0x25FC, - 0x25FE, 0x2600, 0x2602, 0x2604, 0x2606, 0x2608, 0x260A, 0x260C, 0x3318, - 0x331B, 0x331E, 0x260E, 0x2610, 0x2612, 0x2614, 0x2616, 0x2618, 0x261A, - 0x261C, 0x261E, 0x2620, 0x2622, 0x2624, 0x2626, 0x2628, 0x262A, 0x262C, - 0x262E, 0x2630, 0x2632, 0x2634, 0x2636, 0x2638, 0x263A, 0x263C, 0x263E, - 0x2640, 0x2642, 0x2644, 0x2646, 0x2648, 0x264A, 0x264C, 0x264E, 0x2650, - 0x2652, 0x2654, 0x2656, 0x2658, 0x265A, 0x265C, 0x265E, 0x2660, 0x2662, - 0x2664, 0x2666, 0x2668, 0x266A, 0x266C, 0x266E, 0x2670, 0x2672, 0x2674, - 0x2676, 0x2678, 0x267A, 0x267C, 0x267E, 0x2680, 0x2682, 0x2684, 0x2686, - 0x2688, 0x268A, 0x268C, 0x268E, 0x2690, 0x2692, 0x2694, 0x2696, 0x2698, - 0x269A, 0x269C, 0x269E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x3321, 0x3324, 0x3327, 0x332A, 0x332D, 0x3330, - 0x3333, 0x3336, 0x3339, 0x333C, 0x333F, 0x3342, 0x3345, 0x3348, 0x334B, - 0x334E, 0x3351, 0x3354, 0x3357, 0x335A, 0x335D, 0x3360, 0x3363, 0x3366, - 0x3369, 0x336C, 0x336F, 0x3372, 0x3375, 0x3378, 0x337B, 0x337E, 0x3381, - 0x3384, 0x3387, 0x338A, 0x338D, 0x3390, 0x3393, 0x3396, 0x3399, 0x339C, - 0x339F, 0x33A2, 0x33A5, 0x33A8, 0x33AB, 0x33AE, 0x33B1, 0x33B4, 0x33B7, - 0x33BA, 0x33BD, 0x33C0, 0x33C3, 0x33C6, 0x33C9, 0x33CC, 0x33CF, 0x33D2, - 0x33D5, 0x33D8, 0x33DB, 0x33DE, 0x0000, 0x0000, 0x33E1, 0x33E4, 0x33E7, - 0x33EA, 0x33ED, 0x33F0, 0x33F3, 0x33F6, 0x33F9, 0x33FC, 0x33FF, 0x3402, - 0x3405, 0x3408, 0x340B, 0x340E, 0x3411, 0x3414, 0x3417, 0x341A, 0x341D, - 0x3420, 0x3423, 0x3426, 0x3429, 0x342C, 0x342F, 0x3432, 0x3435, 0x3438, - 0x343B, 0x343E, 0x3441, 0x3444, 0x3447, 0x344A, 0x344D, 0x3450, 0x3453, - 0x3456, 0x3459, 0x345C, 0x345F, 0x3462, 0x3465, 0x3468, 0x346B, 0x346E, - 0x3471, 0x3474, 0x3477, 0x347A, 0x347D, 0x3480, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x3483, 0x3486, 0x41A4, 0x41A9, 0x41AE, 0x41B3, 0x41B8, 0x41BD, - 0x41C2, 0x3489, 0x41C7, 0x41DA, 0x41E3, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9360, 0x9361, 0x9362, - 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x936A, 0x936B, 0x936C, 0x936D, 0x936E, 0x936F, 0x9370, - 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, - 0x937A, 0x937B, 0x937C, 0x937D, 0x937E, 0x0000, 0x0000, 0x937F, 0x9380, - 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, - 0x938A, 0x0000, 0x938B, 0x938C, 0x938D, 0x938E, 0x938F, 0x9390, 0x9391, - 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939A, - 0x939B, 0x939C, 0x939D, 0x0000, 0x939E, 0x939F, 0x93A0, 0x93A1, 0x0000, - 0x0000, 0x0000, 0x0000, 0x93A2, 0x26A0, 0x93A3, 0x0000, 0x93A4, 0x0000, - 0x93A5, 0x26A2, 0x93A6, 0x26A4, 0x93A7, 0x26A6, 0x93A8, 0x26A8, 0x93A9, - 0x26AA, 0x93AA, 0x93AB, 0x93AC, 0x93AD, 0x93AE, 0x93AF, 0x93B0, 0x93B1, - 0x93B2, 0x93B3, 0x93B4, 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, - 0x93BB, 0x93BC, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3, - 0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CA, 0x93CB, 0x93CC, - 0x93CD, 0x93CE, 0x93CF, 0x93D0, 0x93D1, 0x93D2, 0x93D3, 0x93D4, 0x93D5, - 0x93D6, 0x93D7, 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0x93DC, 0x93DD, 0x93DE, - 0x93DF, 0x93E0, 0x93E1, 0x93E2, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0x93E7, - 0x93E8, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, 0x93EE, 0x93EF, 0x93F0, - 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6, 0x93F7, 0x93F8, 0x93F9, - 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402, - 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A, 0x940B, - 0x940C, 0x940D, 0x940E, 0x940F, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, - 0x9415, 0x9416, 0x9417, 0x9418, 0x9419, 0x941A, 0x941B, 0x941C, 0x941D, - 0x941E, 0x26AC, 0x26AE, 0x26B0, 0x26B2, 0x26B4, 0x26B6, 0x26B8, 0x26BA, - 0x0000, 0x0000, 0x0000, 0x0000, 0x941F, 0x9420, 0x9421, 0x9422, 0x9423, - 0x9424, 0x9425, 0x9426, 0x9427, 0x9428, 0x9429, 0x942A, 0x942B, 0x942C, - 0x942D, 0x942E, 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, - 0x9436, 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, 0x943D, 0x943E, - 0x943F, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, - 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F, 0x9450, - 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, - 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F, 0x9460, 0x9461, 0x9462, - 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946A, 0x946B, - 0x946C, 0x946D, 0x946E, 0x946F, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, - 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, - 0x947E, 0x947F, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, - 0x9487, 0x9488, 0x9489, 0x948A, 0x948B, 0x948C, 0x948D, 0x948E, 0x948F, - 0x9490, 0x9491, 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, 0x9498, - 0x9499, 0x949A, 0x949B, 0x949C, 0x949D, 0x949E, 0x949F, 0x94A0, 0x94A1, - 0x94A2, 0x94A3, 0x94A4, 0x94A5, 0x94A6, 0x94A7, 0x94A8, 0x94A9, 0x94AA, - 0x94AB, 0x94AC, 0x94AD, 0x94AE, 0x94AF, 0x94B0, 0x94B1, 0x94B2, 0x94B3, - 0x94B4, 0x94B5, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BB, 0x94BC, - 0x94BD, 0x94BE, 0x94BF, 0x94C0, 0x94C1, 0x94C2, 0x94C3, 0x94C4, 0x94C5, - 0x94C6, 0x94C7, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, - 0x94CF, 0x94D0, 0x94D1, 0x94D2, 0x94D3, 0x94D4, 0x94D5, 0x94D6, 0x94D7, - 0x94D8, 0x94D9, 0x94DA, 0x94DB, 0x94DC, 0x0000, 0x0000, 0x0000, 0x94DD, - 0x94DE, 0x94DF, 0x94E0, 0x94E1, 0x94E2, 0x0000, 0x0000, 0x94E3, 0x94E4, - 0x94E5, 0x94E6, 0x94E7, 0x94E8, 0x0000, 0x0000, 0x94E9, 0x94EA, 0x94EB, - 0x94EC, 0x94ED, 0x94EE, 0x0000, 0x0000, 0x94EF, 0x94F0, 0x94F1, 0x0000, - 0x0000, 0x0000, 0x94F2, 0x94F3, 0x94F4, 0x94F5, 0x94F6, 0x94F7, 0x94F8, - 0x0000, 0x94F9, 0x94FA, 0x94FB, 0x94FC, 0x94FD, 0x94FE, 0x94FF, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000}; - -const FX_WCHAR g_UnicodeData_Normalization_Map1[5376] = { - 0x0066, 0x0053, 0x0053, 0x0059, 0x0020, 0x0308, 0x0061, 0x0052, 0x0304, - 0x0032, 0x0033, 0x0301, 0x03BC, 0x0327, 0x0031, 0x006F, 0x0041, 0x0041, - 0x0041, 0x0041, 0x0041, 0x0041, 0x0043, 0x0045, 0x0045, 0x0045, 0x0045, - 0x0049, 0x0049, 0x0049, 0x0049, 0x0044, 0x004E, 0x004F, 0x004F, 0x004F, - 0x004F, 0x004F, 0x004F, 0x0055, 0x0055, 0x0055, 0x0055, 0x0059, 0x0061, - 0x0061, 0x0061, 0x0061, 0x0061, 0x0061, 0x0063, 0x0065, 0x0065, 0x0065, - 0x0065, 0x0069, 0x0069, 0x0069, 0x0069, 0x006E, 0x006F, 0x006F, 0x006F, - 0x006F, 0x006F, 0x006F, 0x0075, 0x0075, 0x0075, 0x0075, 0x0079, 0x0079, - 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0043, 0x0063, 0x0043, - 0x0063, 0x0043, 0x0063, 0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, - 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, - 0x0065, 0x0047, 0x0067, 0x0047, 0x0067, 0x0047, 0x0067, 0x0047, 0x0067, - 0x0048, 0x0068, 0x0048, 0x0068, 0x0049, 0x0069, 0x0049, 0x0069, 0x0049, - 0x0069, 0x0049, 0x0069, 0x0049, 0x004A, 0x006A, 0x004B, 0x006B, 0x004B, - 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, - 0x006C, 0x004E, 0x006E, 0x004E, 0x006E, 0x004E, 0x006E, 0x006E, 0x004F, - 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x0052, 0x0072, 0x0052, 0x0072, - 0x0052, 0x0072, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, - 0x0073, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074, 0x0055, 0x0075, - 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, - 0x0075, 0x0057, 0x0077, 0x0059, 0x0079, 0x0059, 0x005A, 0x007A, 0x005A, - 0x007A, 0x005A, 0x007A, 0x0073, 0x0062, 0x0042, 0x0042, 0x0062, 0x0043, - 0x0063, 0x0044, 0x0044, 0x0044, 0x0064, 0x0045, 0x0045, 0x0046, 0x0066, - 0x0047, 0x0049, 0x004B, 0x006B, 0x006C, 0x004D, 0x004E, 0x006E, 0x004F, - 0x004F, 0x006F, 0x0050, 0x0070, 0x0283, 0x0074, 0x0054, 0x0074, 0x0054, - 0x0055, 0x0075, 0x0056, 0x0059, 0x0079, 0x005A, 0x007A, 0x01B7, 0x0041, - 0x0061, 0x0049, 0x0069, 0x004F, 0x006F, 0x0055, 0x0075, 0x00DC, 0x00FC, - 0x00DC, 0x00FC, 0x00DC, 0x00FC, 0x00DC, 0x00FC, 0x0065, 0x0041, 0x0061, - 0x0041, 0x0061, 0x00C6, 0x00E6, 0x0047, 0x0067, 0x0047, 0x0067, 0x004B, - 0x006B, 0x004F, 0x006F, 0x01EA, 0x01EB, 0x01B7, 0x0292, 0x006A, 0x0047, - 0x0067, 0x004E, 0x006E, 0x0041, 0x0061, 0x00C6, 0x00E6, 0x00D8, 0x00F8, - 0x0041, 0x0061, 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065, 0x0049, - 0x0069, 0x0049, 0x0069, 0x004F, 0x006F, 0x004F, 0x006F, 0x0052, 0x0072, - 0x0052, 0x0072, 0x0055, 0x0075, 0x0055, 0x0075, 0x0053, 0x0073, 0x0054, - 0x0074, 0x0048, 0x0068, 0x004E, 0x0064, 0x005A, 0x007A, 0x0041, 0x0061, - 0x0045, 0x0065, 0x00D6, 0x00F6, 0x00D5, 0x00F5, 0x004F, 0x006F, 0x022E, - 0x022F, 0x0059, 0x0079, 0x006C, 0x006E, 0x0074, 0x006A, 0x0041, 0x0043, - 0x0063, 0x004C, 0x0054, 0x0053, 0x005A, 0x0042, 0x0055, 0x0056, 0x0045, - 0x0065, 0x004A, 0x006A, 0x0051, 0x0071, 0x0052, 0x0072, 0x0059, 0x0079, - 0x0061, 0x0251, 0x0062, 0x006F, 0x0063, 0x0064, 0x0064, 0x0065, 0x0259, - 0x0065, 0x0065, 0x0065, 0x0065, 0x006A, 0x0067, 0x0067, 0x0047, 0x0068, - 0x0068, 0x0069, 0x0049, 0x006C, 0x006C, 0x006C, 0x006D, 0x006D, 0x006D, - 0x006E, 0x006E, 0x006E, 0x006F, 0x0072, 0x0072, 0x0072, 0x0072, 0x0072, - 0x0072, 0x0072, 0x0052, 0x0052, 0x0073, 0x006A, 0x0283, 0x0283, 0x0074, - 0x0074, 0x0055, 0x0076, 0x0076, 0x0077, 0x0079, 0x0059, 0x007A, 0x007A, - 0x0292, 0x0043, 0x0042, 0x0065, 0x0047, 0x0048, 0x006A, 0x006B, 0x004C, - 0x0071, 0x0068, 0x0068, 0x0068, 0x0068, 0x006A, 0x0072, 0x0279, 0x027B, - 0x0281, 0x0077, 0x0079, 0x0263, 0x006C, 0x0073, 0x0078, 0x0295, 0x0300, - 0x0301, 0x0313, 0x0308, 0x0061, 0x0065, 0x0069, 0x006F, 0x0075, 0x0063, - 0x0064, 0x0068, 0x006D, 0x0072, 0x0074, 0x0076, 0x0078, 0x02B9, 0x003B, - 0x0020, 0x00A8, 0x0391, 0x00B7, 0x0395, 0x0397, 0x0399, 0x039F, 0x03A5, - 0x03A9, 0x03CA, 0x0399, 0x03A5, 0x03B1, 0x03B5, 0x03B7, 0x03B9, 0x03CB, - 0x03B9, 0x03C5, 0x03BF, 0x03C5, 0x03C9, 0x03B2, 0x03B8, 0x03A5, 0x03D2, - 0x03D2, 0x03C6, 0x03C0, 0x03BA, 0x03C1, 0x03C2, 0x0398, 0x03B5, 0x03A3, - 0x0415, 0x0415, 0x0413, 0x0406, 0x041A, 0x0418, 0x0423, 0x0418, 0x0438, - 0x0435, 0x0435, 0x0433, 0x0456, 0x043A, 0x0438, 0x0443, 0x0466, 0x0467, - 0x046A, 0x046B, 0x0474, 0x0475, 0x0460, 0x0461, 0x0419, 0x0439, 0x0420, - 0x0440, 0x0413, 0x0433, 0x0413, 0x0433, 0x0413, 0x0433, 0x0416, 0x0436, - 0x0417, 0x0437, 0x041A, 0x043A, 0x041A, 0x043A, 0x041A, 0x043A, 0x041A, - 0x043A, 0x041D, 0x043D, 0x041F, 0x043F, 0x0421, 0x0441, 0x0422, 0x0442, - 0x04AE, 0x04AF, 0x0425, 0x0445, 0x0427, 0x0447, 0x0427, 0x0447, 0x0416, - 0x0436, 0x04BC, 0x04BD, 0x0416, 0x0436, 0x041A, 0x043A, 0x041B, 0x043B, - 0x041D, 0x043D, 0x041D, 0x043D, 0x041C, 0x043C, 0x0410, 0x0430, 0x0410, - 0x0430, 0x0415, 0x0435, 0x04D8, 0x04D9, 0x0416, 0x0436, 0x0417, 0x0437, - 0x0418, 0x0438, 0x0418, 0x0438, 0x041E, 0x043E, 0x04E8, 0x04E9, 0x042D, - 0x044D, 0x0423, 0x0443, 0x0423, 0x0443, 0x0423, 0x0443, 0x0427, 0x0447, - 0x0413, 0x0433, 0x042B, 0x044B, 0x0413, 0x0433, 0x0425, 0x0445, 0x0425, - 0x0445, 0x0417, 0x0437, 0x041B, 0x043B, 0x0F0B, 0x10DC, 0x0041, 0x00C6, - 0x0042, 0x0042, 0x0044, 0x0045, 0x018E, 0x0047, 0x0048, 0x0049, 0x004A, - 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0222, 0x0050, 0x0052, 0x0054, - 0x0055, 0x0057, 0x0061, 0x0250, 0x0251, 0x1D02, 0x0062, 0x0064, 0x0065, - 0x0259, 0x025B, 0x025C, 0x0067, 0x006B, 0x006D, 0x014B, 0x006F, 0x0254, - 0x1D16, 0x1D17, 0x0070, 0x0074, 0x0075, 0x1D1D, 0x026F, 0x0076, 0x1D25, - 0x03B2, 0x03B3, 0x03B4, 0x03C6, 0x03C7, 0x0069, 0x0072, 0x0075, 0x0076, - 0x03B2, 0x03B3, 0x03C1, 0x03C6, 0x03C7, 0x0062, 0x0064, 0x0066, 0x006D, - 0x006E, 0x0070, 0x0072, 0x0072, 0x0073, 0x0074, 0x007A, 0x0067, 0x043D, - 0x004C, 0x0070, 0x0055, 0x028A, 0x0062, 0x0064, 0x0066, 0x0067, 0x006B, - 0x006C, 0x006D, 0x006E, 0x0070, 0x0072, 0x0073, 0x0283, 0x0076, 0x0078, - 0x007A, 0x0061, 0x0251, 0x0064, 0x0065, 0x0065, 0x0065, 0x0065, 0x0069, - 0x0283, 0x0252, 0x0063, 0x0255, 0x00F0, 0x025C, 0x0066, 0x025F, 0x0261, - 0x0265, 0x0268, 0x0269, 0x026A, 0x1D7B, 0x029D, 0x026D, 0x1D85, 0x029F, - 0x0271, 0x0270, 0x0272, 0x0273, 0x0274, 0x0275, 0x0278, 0x0282, 0x0283, - 0x01AB, 0x0289, 0x028A, 0x1D1C, 0x028B, 0x028C, 0x007A, 0x0290, 0x0291, - 0x0292, 0x03B8, 0x0041, 0x0061, 0x0042, 0x0062, 0x0042, 0x0062, 0x0042, - 0x0062, 0x0043, 0x0063, 0x0044, 0x0064, 0x0044, 0x0064, 0x0044, 0x0064, - 0x0044, 0x0064, 0x0044, 0x0064, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, - 0x0065, 0x0045, 0x0065, 0x0228, 0x0229, 0x0046, 0x0066, 0x0047, 0x0067, - 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, 0x0068, 0x0048, - 0x0068, 0x0049, 0x0069, 0x00CF, 0x00EF, 0x004B, 0x006B, 0x004B, 0x006B, - 0x004B, 0x006B, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, 0x006C, 0x004C, - 0x006C, 0x004D, 0x006D, 0x004D, 0x006D, 0x004D, 0x006D, 0x004E, 0x006E, - 0x004E, 0x006E, 0x004E, 0x006E, 0x004E, 0x006E, 0x00D5, 0x00F5, 0x00D5, - 0x00F5, 0x014C, 0x014D, 0x014C, 0x014D, 0x0050, 0x0070, 0x0050, 0x0070, - 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0052, 0x0072, 0x0053, - 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, 0x0053, 0x0073, - 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074, 0x0054, 0x0074, 0x0055, - 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0168, 0x0169, 0x016A, 0x016B, - 0x0056, 0x0076, 0x0056, 0x0076, 0x0057, 0x0077, 0x0057, 0x0077, 0x0057, - 0x0077, 0x0057, 0x0077, 0x0057, 0x0077, 0x0058, 0x0078, 0x0058, 0x0078, - 0x0059, 0x0079, 0x005A, 0x007A, 0x005A, 0x007A, 0x005A, 0x007A, 0x0068, - 0x0074, 0x0077, 0x0079, 0x0061, 0x017F, 0x0041, 0x0061, 0x0041, 0x0061, - 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, - 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, 0x0041, 0x0061, - 0x0041, 0x0061, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, - 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, 0x0045, 0x0065, - 0x0049, 0x0069, 0x0049, 0x0069, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, - 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, - 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, 0x006F, 0x004F, - 0x006F, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, - 0x0055, 0x0075, 0x0055, 0x0075, 0x0055, 0x0075, 0x0059, 0x0079, 0x0059, - 0x0079, 0x0059, 0x0079, 0x0059, 0x0079, 0x03B1, 0x03B1, 0x03B1, 0x03B1, - 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, - 0x0391, 0x0391, 0x0391, 0x03B5, 0x03B5, 0x03B5, 0x03B5, 0x03B5, 0x03B5, - 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x0395, 0x03B7, 0x03B7, 0x03B7, - 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x0397, 0x0397, 0x0397, 0x0397, - 0x0397, 0x0397, 0x0397, 0x0397, 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x03B9, - 0x03B9, 0x03B9, 0x03B9, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, 0x0399, - 0x0399, 0x0399, 0x03BF, 0x03BF, 0x03BF, 0x03BF, 0x03BF, 0x03BF, 0x039F, - 0x039F, 0x039F, 0x039F, 0x039F, 0x039F, 0x03C5, 0x03C5, 0x03C5, 0x03C5, - 0x03C5, 0x03C5, 0x03C5, 0x03C5, 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03C9, - 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03A9, 0x03A9, - 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03B1, 0x03B1, 0x03B5, - 0x03B5, 0x03B7, 0x03B7, 0x03B9, 0x03B9, 0x03BF, 0x03BF, 0x03C5, 0x03C5, - 0x03C9, 0x03C9, 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x03B1, 0x03B1, - 0x03B1, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, - 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x0397, - 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x0397, 0x03C9, 0x03C9, - 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03C9, 0x03A9, 0x03A9, 0x03A9, - 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03A9, 0x03B1, 0x03B1, 0x03B1, 0x03B1, - 0x03B1, 0x03B1, 0x03B1, 0x0391, 0x0391, 0x0391, 0x0391, 0x0391, 0x03B7, - 0x03B7, 0x03B7, 0x03B7, 0x03B7, 0x0395, 0x0395, 0x0397, 0x0397, 0x0397, - 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x03B9, 0x0399, 0x0399, 0x0399, - 0x0399, 0x03C5, 0x03C5, 0x03C5, 0x03C5, 0x03C1, 0x03C1, 0x03C5, 0x03C5, - 0x03A5, 0x03A5, 0x03A5, 0x03A5, 0x03A1, 0x03C9, 0x03C9, 0x03C9, 0x03C9, - 0x03C9, 0x039F, 0x039F, 0x03A9, 0x03A9, 0x03A9, 0x00B4, 0x0314, 0x0020, - 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, - 0x0020, 0x2010, 0x0333, 0x002E, 0x0020, 0x0020, 0x0030, 0x0069, 0x0034, - 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x002B, 0x2212, 0x003D, 0x0028, - 0x0029, 0x006E, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, - 0x0037, 0x0038, 0x0039, 0x002B, 0x2212, 0x003D, 0x0028, 0x0029, 0x0061, - 0x0065, 0x006F, 0x0078, 0x0259, 0x0043, 0x0190, 0x0067, 0x0048, 0x0048, - 0x0048, 0x0068, 0x0068, 0x0049, 0x0049, 0x004C, 0x006C, 0x004E, 0x0050, - 0x0051, 0x0052, 0x0052, 0x0052, 0x0052, 0x0052, 0x0056, 0x005A, 0x03A9, - 0x01B1, 0x005A, 0x004B, 0x00C5, 0x0042, 0x0043, 0x0065, 0x0065, 0x0045, - 0x0046, 0x004D, 0x006F, 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x0069, 0x03C0, - 0x03B3, 0x0393, 0x03A0, 0x2211, 0x0044, 0x0064, 0x0065, 0x0069, 0x006A, - 0x0049, 0x0056, 0x0058, 0x004C, 0x0043, 0x0044, 0x004D, 0x0069, 0x0076, - 0x0078, 0x006C, 0x0063, 0x0064, 0x006D, 0x2203, 0x2208, 0x220B, 0x3008, - 0x3009, 0x0062, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, - 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, - 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, - 0x005A, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, - 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, - 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, - 0x0039, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, - 0x0038, 0x0039, 0x004C, 0x006C, 0x004C, 0x0050, 0x0052, 0x0061, 0x0074, - 0x0048, 0x0068, 0x004B, 0x006B, 0x005A, 0x007A, 0x0076, 0x0057, 0x0058, - 0x0076, 0x006A, 0x0056, 0x2D61, 0x6BCD, 0x6C11, 0x864E, 0x897F, 0x89D2, - 0x957F, 0x9752, 0x98DF, 0x9AA8, 0x9B3C, 0x9EA6, 0x9EC4, 0x9F9F, 0x4E00, - 0x4E28, 0x4E36, 0x4E3F, 0x4E59, 0x4E85, 0x4E8C, 0x4EA0, 0x4EBA, 0x513F, - 0x5165, 0x516B, 0x5182, 0x5196, 0x51AB, 0x51E0, 0x51F5, 0x5200, 0x529B, - 0x52F9, 0x5315, 0x531A, 0x5338, 0x5341, 0x535C, 0x5369, 0x5382, 0x53B6, - 0x53C8, 0x53E3, 0x56D7, 0x571F, 0x58EB, 0x5902, 0x590A, 0x5915, 0x5927, - 0x5973, 0x5B50, 0x5B80, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C6E, 0x5C71, - 0x5DDB, 0x5DE5, 0x5DF1, 0x5DFE, 0x5E72, 0x5E7A, 0x5E7F, 0x5EF4, 0x5EFE, - 0x5F0B, 0x5F13, 0x5F50, 0x5F61, 0x5F73, 0x5FC3, 0x6208, 0x6236, 0x624B, - 0x652F, 0x6534, 0x6587, 0x6597, 0x65A4, 0x65B9, 0x65E0, 0x65E5, 0x66F0, - 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BB3, 0x6BCB, 0x6BD4, 0x6BDB, - 0x6C0F, 0x6C14, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x723F, 0x7247, - 0x7259, 0x725B, 0x72AC, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, - 0x7528, 0x7530, 0x758B, 0x7592, 0x7676, 0x767D, 0x76AE, 0x76BF, 0x76EE, - 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79B8, 0x79BE, 0x7A74, 0x7ACB, 0x7AF9, - 0x7C73, 0x7CF8, 0x7F36, 0x7F51, 0x7F8A, 0x7FBD, 0x8001, 0x800C, 0x8012, - 0x8033, 0x807F, 0x8089, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, - 0x821F, 0x826E, 0x8272, 0x8278, 0x864D, 0x866B, 0x8840, 0x884C, 0x8863, - 0x897E, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C78, 0x8C9D, - 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, 0x8FB0, 0x8FB5, 0x9091, - 0x9149, 0x91C6, 0x91CC, 0x91D1, 0x9577, 0x9580, 0x961C, 0x96B6, 0x96B9, - 0x96E8, 0x9751, 0x975E, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, - 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x99AC, 0x9AA8, 0x9AD8, 0x9ADF, - 0x9B25, 0x9B2F, 0x9B32, 0x9B3C, 0x9B5A, 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, - 0x9EBB, 0x9EC3, 0x9ECD, 0x9ED1, 0x9EF9, 0x9EFD, 0x9F0E, 0x9F13, 0x9F20, - 0x9F3B, 0x9F4A, 0x9F52, 0x9F8D, 0x9F9C, 0x9FA0, 0x0020, 0x3012, 0x5341, - 0x5344, 0x5345, 0x1100, 0x1101, 0x11AA, 0x1102, 0x11AC, 0x11AD, 0x1103, - 0x1104, 0x1105, 0x11B0, 0x11B1, 0x11B2, 0x11B3, 0x11B4, 0x11B5, 0x111A, - 0x1106, 0x1107, 0x1108, 0x1121, 0x1109, 0x110A, 0x110B, 0x110C, 0x110D, - 0x110E, 0x110F, 0x1110, 0x1111, 0x1112, 0x1161, 0x1162, 0x1163, 0x1164, - 0x1165, 0x1166, 0x1167, 0x1168, 0x1169, 0x116A, 0x116B, 0x116C, 0x116D, - 0x116E, 0x116F, 0x1170, 0x1171, 0x1172, 0x1173, 0x1174, 0x1175, 0x1160, - 0x1114, 0x1115, 0x11C7, 0x11C8, 0x11CC, 0x11CE, 0x11D3, 0x11D7, 0x11D9, - 0x111C, 0x11DD, 0x11DF, 0x111D, 0x111E, 0x1120, 0x1122, 0x1123, 0x1127, - 0x1129, 0x112B, 0x112C, 0x112D, 0x112E, 0x112F, 0x1132, 0x1136, 0x1140, - 0x1147, 0x114C, 0x11F1, 0x11F2, 0x1157, 0x1158, 0x1159, 0x1184, 0x1185, - 0x1188, 0x1191, 0x1192, 0x1194, 0x119E, 0x11A1, 0x4E00, 0x4E8C, 0x4E09, - 0x56DB, 0x4E0A, 0x4E2D, 0x4E0B, 0x7532, 0x4E59, 0x4E19, 0x4E01, 0x5929, - 0x5730, 0x4EBA, 0x554F, 0x5E7C, 0x6587, 0x7B8F, 0x1100, 0x1102, 0x1103, - 0x1105, 0x1106, 0x1107, 0x1109, 0x110B, 0x110C, 0x110E, 0x110F, 0x1110, - 0x1111, 0x1112, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, - 0x516B, 0x4E5D, 0x5341, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, - 0x65E5, 0x682A, 0x6709, 0x793E, 0x540D, 0x7279, 0x8CA1, 0x795D, 0x52B4, - 0x79D8, 0x7537, 0x5973, 0x9069, 0x512A, 0x5370, 0x6CE8, 0x9805, 0x4F11, - 0x5199, 0x6B63, 0x4E0A, 0x4E2D, 0x4E0B, 0x5DE6, 0x53F3, 0x533B, 0x5B97, - 0x5B66, 0x76E3, 0x4F01, 0x8CC7, 0x5354, 0x591C, 0x30A2, 0x30A4, 0x30A6, - 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, - 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, - 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, - 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, - 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x4E22, - 0x5E76, 0x5E7A, 0x5E72, 0x4E71, 0x4E98, 0x4E9A, 0x4F2B, 0x5E03, 0x5360, - 0x6765, 0x4FA3, 0x4FE3, 0x7CFB, 0x4FA0, 0x4F25, 0x4FE9, 0x4ED3, 0x4E2A, - 0x4EEC, 0x4F26, 0x4F1F, 0x4FA7, 0x4FA6, 0x4F2A, 0x6770, 0x4F27, 0x4F1E, - 0x5907, 0x5BB6, 0x4F63, 0x506C, 0x4F20, 0x4F1B, 0x503A, 0x4F24, 0x503E, - 0x507B, 0x4EC5, 0x4F65, 0x4FA8, 0x4EC6, 0x4FA5, 0x507E, 0x96C7, 0x4EF7, - 0x4EEA, 0x4FAC, 0x4EBF, 0x4FED, 0x50A7, 0x4FE6, 0x4FAA, 0x5C3D, 0x507F, - 0x4F18, 0x50A8, 0x4FEA, 0x50A9, 0x50A5, 0x4FE8, 0x51F6, 0x5151, 0x513F, - 0x5156, 0x5185, 0x4E24, 0x518C, 0x80C4, 0x5199, 0x5E42, 0x51BB, 0x51DB, - 0x51EF, 0x522B, 0x5220, 0x522D, 0x5219, 0x5239, 0x521A, 0x5265, 0x5250, - 0x5240, 0x521B, 0x522C, 0x5212, 0x5267, 0x5218, 0x523D, 0x523F, 0x5251, - 0x5242, 0x52B2, 0x52A8, 0x52D6, 0x52A1, 0x80DC, 0x52B3, 0x52BF, 0x52A2, - 0x52CB, 0x52B1, 0x529D, 0x5300, 0x5326, 0x6C47, 0x532E, 0x533A, 0x534F, - 0x6064, 0x5374, 0x538D, 0x538C, 0x5389, 0x53A3, 0x53C2, 0x4E1B, 0x54A4, - 0x5434, 0x5450, 0x5415, 0x5458, 0x55B1, 0x5457, 0x5FF5, 0x95EE, 0x54D1, - 0x542F, 0x5524, 0x4E27, 0x4E54, 0x5355, 0x54DF, 0x545B, 0x556C, 0x551D, - 0x5417, 0x545C, 0x5522, 0x54D4, 0x53F9, 0x55BD, 0x5455, 0x5567, 0x5C1D, - 0x551B, 0x54D7, 0x5520, 0x5578, 0x53FD, 0x54D3, 0x5452, 0x5574, 0x6076, - 0x5618, 0x549D, 0x54D2, 0x54DD, 0x54D5, 0x55F3, 0x54D9, 0x55B7, 0x5428, - 0x549B, 0x5413, 0x54DC, 0x5C1D, 0x565C, 0x556E, 0x5456, 0x5499, 0x4EB8, - 0x55BE, 0x4E25, 0x5624, 0x556D, 0x55EB, 0x56A3, 0x5181, 0x5453, 0x5570, - 0x5631, 0x56F1, 0x56F5, 0x56FD, 0x56F4, 0x56ED, 0x5706, 0x56FE, 0x56E2, - 0x57AD, 0x6267, 0x575A, 0x57A9, 0x57DA, 0x5C27, 0x62A5, 0x573A, 0x5757, - 0x8314, 0x57B2, 0x57D8, 0x6D82, 0x51A2, 0x575E, 0x57D9, 0x5C18, 0x5811, - 0x57AB, 0x5760, 0x5815, 0x575F, 0x57A6, 0x575B, 0x538B, 0x5792, 0x5739, - 0x5786, 0x574F, 0x5785, 0x575C, 0x575D, 0x58EE, 0x58F6, 0x58F8, 0x5BFF, - 0x591F, 0x68A6, 0x4F19, 0x5939, 0x5942, 0x5965, 0x5941, 0x593A, 0x594B, - 0x59F9, 0x5986, 0x59D7, 0x5978, 0x5A31, 0x5A04, 0x5987, 0x5A05, 0x5A32, - 0x59AB, 0x5AAA, 0x5988, 0x59AA, 0x59A9, 0x5A34, 0x5A73, 0x5A06, 0x5A75, - 0x5A07, 0x5AF1, 0x5AD2, 0x5B37, 0x5AD4, 0x5A74, 0x5A76, 0x5A08, 0x5B59, - 0x5B66, 0x5B6A, 0x5BAB, 0x5BDD, 0x5B9E, 0x5B81, 0x5BA1, 0x5199, 0x5BBD, - 0x5BA0, 0x5B9D, 0x5C06, 0x4E13, 0x5BFB, 0x5BF9, 0x5BFC, 0x5C34, 0x5C4A, - 0x5C38, 0x5C49, 0x5C61, 0x5C42, 0x5C5F, 0x5C66, 0x5C5E, 0x5188, 0x5C98, - 0x5C9B, 0x5CE1, 0x5D03, 0x5C97, 0x4ED1, 0x5CE5, 0x5C9A, 0x5D5D, 0x5D2D, - 0x5C96, 0x5D5A, 0x5D02, 0x5CE4, 0x5CE3, 0x5CC4, 0x5D04, 0x5C99, 0x5D58, - 0x5CAD, 0x5C7F, 0x5CB3, 0x5CBF, 0x5CE6, 0x5DC5, 0x5DEF, 0x5E05, 0x5E08, - 0x5E10, 0x5E26, 0x5E27, 0x5E0F, 0x5E3C, 0x5E3B, 0x5E1C, 0x5E01, 0x5E2E, - 0x5E31, 0x5E72, 0x51E0, 0x5E93, 0x5395, 0x53A2, 0x53A6, 0x53A8, 0x53AE, - 0x5E99, 0x5382, 0x5E91, 0x5E9F, 0x5E7F, 0x5EEA, 0x5E90, 0x5385, 0x5F11, - 0x5F2A, 0x5F20, 0x5F3A, 0x5F39, 0x5F25, 0x5F2F, 0x5F66, 0x540E, 0x5F84, - 0x4ECE, 0x5F95, 0x590D, 0x5F81, 0x5F7B, 0x6052, 0x803B, 0x60A6, 0x6005, - 0x95F7, 0x6076, 0x607C, 0x607D, 0x607B, 0x7231, 0x60EC, 0x60AB, 0x6006, - 0x607A, 0x5FFE, 0x6001, 0x6120, 0x60E8, 0x60ED, 0x6078, 0x60EF, 0x6004, - 0x6002, 0x8651, 0x60AD, 0x5E86, 0x5FE7, 0x60EB, 0x601C, 0x51ED, 0x6126, - 0x616D, 0x60EE, 0x6124, 0x60AF, 0x6003, 0x5BAA, 0x5FC6, 0x6073, 0x5E94, - 0x603F, 0x61D4, 0x603C, 0x61D1, 0x6079, 0x60E9, 0x61D2, 0x6000, 0x60AC, - 0x5FCF, 0x60E7, 0x6151, 0x604B, 0x6206, 0x620B, 0x6217, 0x622C, 0x6218, - 0x620F, 0x6237, 0x629B, 0x631F, 0x820D, 0x626A, 0x5377, 0x626B, 0x62A1, - 0x6323, 0x6302, 0x91C7, 0x62E3, 0x626C, 0x6362, 0x6325, 0x635F, 0x6447, - 0x6363, 0x62A2, 0x63B4, 0x63BC, 0x6402, 0x631A, 0x62A0, 0x629F, 0x63BA, - 0x635E, 0x6491, 0x6320, 0x6322, 0x63B8, 0x62E8, 0x629A, 0x6251, 0x63FF, - 0x631E, 0x631D, 0x6361, 0x62E5, 0x63B3, 0x62E9, 0x51FB, 0x6321, 0x62C5, - 0x636E, 0x6324, 0x62DF, 0x6448, 0x62E7, 0x6401, 0x63B7, 0x6269, 0x64B7, - 0x6446, 0x64DE, 0x64B8, 0x6270, 0x6445, 0x64B5, 0x62E2, 0x62E6, 0x6484, - 0x6400, 0x64BA, 0x643A, 0x6444, 0x6512, 0x631B, 0x644A, 0x6405, 0x63FD, - 0x668B, 0x8D25, 0x53D9, 0x654C, 0x6570, 0x655B, 0x6BD9, 0x6593, 0x65A9, - 0x65AD, 0x4E8E, 0x5347, 0x65F6, 0x664B, 0x663C, 0x6655, 0x6656, 0x65F8, - 0x7545, 0x6682, 0x6635, 0x6654, 0x5386, 0x6619, 0x6653, 0x66A7, 0x65F7, - 0x663D, 0x6652, 0x4E66, 0x4F1A, 0x80E7, 0x4E1C, 0x6805, 0x6746, 0x6800, - 0x67A7, 0x6761, 0x67AD, 0x5F03, 0x67A8, 0x67A3, 0x680B, 0x6808, 0x6816, - 0x6860, 0x6768, 0x67AB, 0x6862, 0x4E1A, 0x6781, 0x6769, 0x8363, 0x6864, - 0x6784, 0x67AA, 0x6760, 0x68BF, 0x6920, 0x6901, 0x6868, 0x6869, 0x4E50, - 0x679E, 0x697C, 0x6807, 0x67A2, 0x6837, 0x6734, 0x6811, 0x6866, 0x6861, - 0x6865, 0x673A, 0x692D, 0x6A2A, 0x6AA9, 0x69DC, 0x67FD, 0x6863, 0x6867, - 0x69DA, 0x68C0, 0x6A2F, 0x68BC, 0x53F0, 0x69DF, 0x67E0, 0x69DB, 0x82D8, - 0x67DC, 0x6A79, 0x6988, 0x6809, 0x691F, 0x6A7C, 0x680E, 0x6A71, 0x69E0, - 0x680C, 0x67A5, 0x6A65, 0x6987, 0x680A, 0x6989, 0x68C2, 0x6A31, 0x680F, - 0x6743, 0x6924, 0x683E, 0x6984, 0x94A6, 0x6B27, 0x6B24, 0x6B22, 0x5C81, - 0x5386, 0x5F52, 0x6B81, 0x6B8B, 0x6B92, 0x6B87, 0x6B9A, 0x6B93, 0x6BA1, - 0x6B7C, 0x6740, 0x58F3, 0x6BC1, 0x6BB4, 0x6BF5, 0x6BE1, 0x6C07, 0x6C14, - 0x6C22, 0x6C29, 0x6C32, 0x51FC, 0x51B3, 0x51B1, 0x6CA1, 0x51B5, 0x6CC4, - 0x6C79, 0x6D43, 0x6CFE, 0x51C9, 0x51C4, 0x6CEA, 0x6E0C, 0x51C0, 0x6CA6, - 0x6E0A, 0x6D9E, 0x6D45, 0x6DA3, 0x51CF, 0x6CA8, 0x6DA1, 0x6D4B, 0x6D51, - 0x51D1, 0x6D48, 0x6D8C, 0x6D07, 0x6C64, 0x6CA9, 0x51C6, 0x6C9F, 0x6E29, - 0x6DA2, 0x6E7F, 0x6CA7, 0x706D, 0x6DA4, 0x8365, 0x6CAA, 0x6EDE, 0x6E17, - 0x6D52, 0x6D50, 0x6EDA, 0x6EE1, 0x6E14, 0x6E87, 0x6CA4, 0x6C49, 0x6D9F, - 0x6E0D, 0x6DA8, 0x6E10, 0x6D46, 0x988D, 0x6CFC, 0x6D01, 0x6F5C, 0x6DA6, - 0x6D54, 0x6E83, 0x6DA0, 0x6DA9, 0x6D47, 0x6D9D, 0x6C84, 0x6DA7, 0x6E11, - 0x6CFD, 0x6EEA, 0x6CF6, 0x6D4D, 0x6D4A, 0x6D53, 0x6E7F, 0x6CDE, 0x6D4E, - 0x6D9B, 0x6EE5, 0x6F4D, 0x6EE8, 0x6E85, 0x6CFA, 0x6EE4, 0x6EE2, 0x6E0E, - 0x6CFB, 0x6D4F, 0x6FD2, 0x6CF8, 0x6CA5, 0x6F47, 0x6F46, 0x6F74, 0x6CF7, - 0x6FD1, 0x6F4B, 0x6F9C, 0x6CA3, 0x6EE0, 0x6D12, 0x6EE9, 0x704F, 0x6E7E, - 0x6EE6, 0x6EDF, 0x707E, 0x4E3A, 0x4E4C, 0x70C3, 0x65E0, 0x70BC, 0x709C, - 0x70DF, 0x8315, 0x7115, 0x70E6, 0x7080, 0x8367, 0x709D, 0x70ED, 0x70BD, - 0x70E8, 0x706F, 0x7096, 0x70E7, 0x70EB, 0x7116, 0x8425, 0x707F, 0x70DB, - 0x70E9, 0x70EC, 0x7118, 0x70C1, 0x7089, 0x70C2, 0x4E89, 0x4E3A, 0x7237, - 0x5C14, 0x5899, 0x724D, 0x7275, 0x8366, 0x7266, 0x728A, 0x727A, 0x72B6, - 0x72ED, 0x72C8, 0x72F0, 0x72B9, 0x72F2, 0x72B8, 0x72F1, 0x72EE, 0x5956, - 0x72EC, 0x72EF, 0x7303, 0x72DE, 0x83B7, 0x730E, 0x72B7, 0x517D, 0x736D, - 0x732E, 0x7315, 0x7321, 0x73B0, 0x73D0, 0x73F2, 0x73AE, 0x739A, 0x7410, - 0x7476, 0x83B9, 0x739B, 0x7405, 0x73B1, 0x740F, 0x740E, 0x7391, 0x7477, - 0x73F0, 0x73AF, 0x7399, 0x73BA, 0x743C, 0x73D1, 0x748E, 0x74D2, 0x74EF, - 0x74EE, 0x4EA7, 0x4EA7, 0x4EA9, 0x6BD5, 0x753B, 0x7572, 0x5F02, 0x5F53, - 0x7574, 0x53E0, 0x75C9, 0x9178, 0x75F9, 0x75D6, 0x75AF, 0x75A1, 0x75EA, - 0x7617, 0x75AE, 0x759F, 0x75AD, 0x7618, 0x7597, 0x75E8, 0x75EB, 0x7605, - 0x75A0, 0x762A, 0x75D2, 0x7596, 0x75AC, 0x765E, 0x7663, 0x763F, 0x763E, - 0x75C8, 0x762B, 0x766B, 0x53D1, 0x7691, 0x75B1, 0x76B2, 0x76B1, 0x676F, - 0x76D7, 0x76CF, 0x5C3D, 0x76D1, 0x76D8, 0x5362, 0x8361, 0x7726, 0x4F17, - 0x56F0, 0x7741, 0x7750, 0x772F, 0x7792, 0x4E86, 0x7786, 0x7751, 0x772C, - 0x77A9, 0x77EB, 0x7845, 0x70AE, 0x7841, 0x7856, 0x7817, 0x781A, 0x7855, - 0x7800, 0x786E, 0x7801, 0x7859, 0x7816, 0x789C, 0x789B, 0x77F6, 0x7857, - 0x785A, 0x7840, 0x788D, 0x77FF, 0x783A, 0x783E, 0x77FE, 0x783B, 0x7984, - 0x7978, 0x796F, 0x794E, 0x5FA1, 0x7985, 0x793C, 0x7977, 0x79C3, 0x7C7C, - 0x7A0E, 0x79C6, 0x68F1, 0x79CD, 0x79F0, 0x7A23, 0x79EF, 0x9896, 0x79FE, - 0x7A51, 0x79FD, 0x7A33, 0x7A9D, 0x6D3C, 0x7A77, 0x7A91, 0x7A8E, 0x7AAD, - 0x7AA5, 0x7A9C, 0x7A8D, 0x7AA6, 0x7A83, 0x7ADE, 0x7B14, 0x7B0B, 0x7B15, - 0x7B3A, 0x7B5D, 0x8282, 0x8303, 0x7B51, 0x7BA7, 0x7B7C, 0x7B03, 0x7B5B, - 0x7B5A, 0x7BA6, 0x7BD3, 0x7BAA, 0x7B80, 0x7BD1, 0x7BAB, 0x6A90, 0x7B5C, - 0x7B7E, 0x5E18, 0x7BEE, 0x7B79, 0x7B93, 0x7BEF, 0x7BA8, 0x7C41, 0x7B3C, - 0x7B7E, 0x7B3E, 0x7BF1, 0x7BA9, 0x5401, 0x5986, 0x7CA4, 0x7CC1, 0x7CAA, - 0x7CAE, 0x7CF5, 0x7C9D, 0x7C74, 0x7C9C, 0x7EA0, 0x7EAA, 0x7EA3, 0x7EA6, - 0x7EA2, 0x7EA1, 0x7EA5, 0x7EA8, 0x7EAB, 0x7EB9, 0x7EB3, 0x7EBD, 0x7EBE, - 0x7EAF, 0x7EB0, 0x7EB1, 0x7EB8, 0x7EA7, 0x7EB7, 0x7EAD, 0x7EB4, 0x7EBA, - 0x624E, 0x624E, 0x7EC6, 0x7EC2, 0x7EC1, 0x7EC5, 0x7EBB, 0x7ECD, 0x7EC0, - 0x7ECB, 0x7ED0, 0x7ECC, 0x7EC8, 0x5F26, 0x7EC4, 0x7ECA, 0x7ED7, 0x7ED3, - 0x7EDD, 0x7EE6, 0x7ED4, 0x7EDE, 0x7EDC, 0x7EDA, 0x7ED9, 0x7ED2, 0x7ED6, - 0x7EDF, 0x4E1D, 0x7EDB, 0x7EE2, 0x7ED1, 0x7EE1, 0x7EE0, 0x7EE8, 0x7EE5, - 0x7ECF, 0x7EFC, 0x7F0D, 0x7EFF, 0x7EF8, 0x7EFB, 0x7EF6, 0x7EF4, 0x7EFE, - 0x7EB2, 0x7F51, 0x7F00, 0x7EB6, 0x7EFA, 0x7EEE, 0x7EFD, 0x7EF0, 0x7EEB, - 0x7EF5, 0x7EF2, 0x7F01, 0x7D27, 0x7EEF, 0x7EEA, 0x7F03, 0x7F04, 0x7F02, - 0x7EBF, 0x7F09, 0x7F0E, 0x7F14, 0x7F17, 0x7F18, 0x7F0C, 0x7F16, 0x7F13, - 0x7F05, 0x7EAC, 0x7F11, 0x7F08, 0x7EC3, 0x7F0F, 0x7F07, 0x81F4, 0x8426, - 0x7F19, 0x7F22, 0x7F12, 0x7EC9, 0x7F23, 0x7F1E, 0x7F1A, 0x7F1C, 0x7F1F, - 0x7F1B, 0x53BF, 0x7F1D, 0x7F29, 0x7EB5, 0x7F27, 0x7F26, 0x7D77, 0x7F15, - 0x7F25, 0x603B, 0x7EE9, 0x7EF7, 0x7F2B, 0x7F2A, 0x7F2F, 0x7EC7, 0x7F2E, - 0x7F2D, 0x7ED5, 0x7EE3, 0x7F0B, 0x7EF3, 0x7ED8, 0x7CFB, 0x8327, 0x7F33, - 0x7F32, 0x7F34, 0x7ECE, 0x7EE7, 0x7F24, 0x7F31, 0x7F2C, 0x7EA9, 0x7EED, - 0x7F20, 0x7F28, 0x7EA4, 0x7F35, 0x7F06, 0x94B5, 0x7F42, 0x7F5A, 0x9A82, - 0x7F62, 0x7F57, 0x7F74, 0x7F81, 0x8288, 0x7F9F, 0x7FA1, 0x4E49, 0x81BB, - 0x4E60, 0x7FC6, 0x7FDA, 0x7FD8, 0x7FD9, 0x8027, 0x5723, 0x95FB, 0x8054, - 0x806A, 0x58F0, 0x8038, 0x8069, 0x8042, 0x804C, 0x804D, 0x542C, 0x804B, - 0x8083, 0x80C1, 0x8109, 0x80EB, 0x8131, 0x80C0, 0x80BE, 0x80E8, 0x8136, - 0x8111, 0x80BF, 0x811A, 0x80A0, 0x817D, 0x8158, 0x80A4, 0x80F6, 0x817B, - 0x80C6, 0x810D, 0x8113, 0x8138, 0x8110, 0x8191, 0x814A, 0x80EA, 0x810F, - 0x8114, 0x81DC, 0x5367, 0x4E34, 0x53F0, 0x4E0E, 0x5174, 0x4E3E, 0x65E7, - 0x8231, 0x8223, 0x8230, 0x823B, 0x8270, 0x8273, 0x82C4, 0x520D, 0x82CE, - 0x5179, 0x8346, 0x8C46, 0x5E84, 0x830E, 0x835A, 0x82CB, 0x534E, 0x70DF, - 0x82CC, 0x83B1, 0x4E07, 0x83B4, 0x53F6, 0x836D, 0x7740, 0x82C7, 0x8364, - 0x641C, 0x83B3, 0x8385, 0x82CD, 0x836A, 0x76D6, 0x83B2, 0x82C1, 0x83BC, - 0x835C, 0x848C, 0x848B, 0x8471, 0x8311, 0x836B, 0x8368, 0x8487, 0x835E, - 0x836C, 0x83B8, 0x835B, 0x8489, 0x829C, 0x8427, 0x84E3, 0x835F, 0x84DF, - 0x8297, 0x59DC, 0x8537, 0x83B6, 0x8350, 0x8428, 0x8360, 0x501F, 0x84DD, - 0x8369, 0x827A, 0x836F, 0x85AE, 0x82C8, 0x853C, 0x853A, 0x841A, 0x8572, - 0x82A6, 0x82CF, 0x8574, 0x82F9, 0x8616, 0x85D3, 0x8539, 0x830F, 0x5170, - 0x84E0, 0x841D, 0x5904, 0x865A, 0x864F, 0x53F7, 0x4E8F, 0x866C, 0x86F1, - 0x8715, 0x86AC, 0x8680, 0x732C, 0x867E, 0x8671, 0x8717, 0x86F3, 0x8682, - 0x8424, 0x877C, 0x8780, 0x86F0, 0x8748, 0x87A8, 0x866E, 0x8749, 0x86F2, - 0x866B, 0x86CF, 0x8681, 0x8683, 0x8747, 0x867F, 0x874E, 0x86F4, 0x877E, - 0x869D, 0x8721, 0x86CE, 0x87CF, 0x86CA, 0x8695, 0x86EE, 0x4F17, 0x672F, - 0x536B, 0x51B2, 0x886E, 0x8885, 0x8865, 0x88C5, 0x91CC, 0x5236, 0x590D, - 0x88C8, 0x8886, 0x88E4, 0x88E2, 0x7F21, 0x891B, 0x4EB5, 0x88E5, 0x8884, - 0x88E3, 0x88C6, 0x8934, 0x889C, 0x886C, 0x88AD, 0x8955, 0x89C1, 0x89C4, - 0x89C5, 0x89C6, 0x89C7, 0x89CB, 0x89CD, 0x89CE, 0x4EB2, 0x89CA, 0x89CF, - 0x89D0, 0x89D1, 0x89C9, 0x89C8, 0x89CC, 0x89C2, 0x89DE, 0x89EF, 0x89E6, - 0x8BA2, 0x8BA3, 0x8BA1, 0x8BAF, 0x8BA7, 0x8BA8, 0x8BA6, 0x8BAD, 0x8BAA, - 0x8BAB, 0x8BAC, 0x8BB0, 0x8BB9, 0x8BB6, 0x8BBC, 0x8BC0, 0x8BB7, 0x8BBF, - 0x8BBE, 0x8BB8, 0x8BC9, 0x8BC3, 0x8BCA, 0x8BC1, 0x8BC2, 0x8BCB, 0x8BB5, - 0x8BC8, 0x8BD2, 0x8BCF, 0x8BC4, 0x8BCE, 0x8BC5, 0x8BCD, 0x548F, 0x8BE9, - 0x8BE2, 0x8BE3, 0x8BD5, 0x8BD7, 0x8BE7, 0x8BDF, 0x8BE1, 0x8BE0, 0x8BD8, - 0x8BDD, 0x8BE5, 0x8BE6, 0x8BDC, 0x8BD9, 0x8BD6, 0x8BD4, 0x8BDB, 0x8BD3, - 0x5938, 0x5FD7, 0x8BA4, 0x8BF3, 0x8BF6, 0x8BDE, 0x8BF1, 0x8BEE, 0x8BED, - 0x8BDA, 0x8BEB, 0x8BEC, 0x8BEF, 0x8BF0, 0x8BF5, 0x8BF2, 0x8BF4, 0x8C01, - 0x8BFE, 0x8C07, 0x8BFD, 0x8C0A, 0x8C03, 0x8C04, 0x8C06, 0x8C08, 0x8BFF, - 0x8BF7, 0x8BE4, 0x8BF9, 0x8BFC, 0x8C05, 0x8BBA, 0x8C02, 0x8C00, 0x8C0D, - 0x8C1E, 0x8C1D, 0x8C25, 0x8BE8, 0x8C14, 0x8C1B, 0x8C10, 0x8C0F, 0x8C15, - 0x8C18, 0x8BB3, 0x8C19, 0x8C0C, 0x8BBD, 0x8BF8, 0x8C1A, 0x8C16, 0x8BFA, - 0x8C0B, 0x8C12, 0x8C13, 0x8A8A, 0x8BCC, 0x8C0E, 0x8C1C, 0x8C27, 0x8C11, - 0x8C21, 0x8C24, 0x8C26, 0x8BB2, 0x8C22, 0x8C23, 0x8C1F, 0x8C2A, 0x8C2C, - 0x8BB4, 0x8C28, 0x8C29, 0x8BC1, 0x8C32, 0x8BA5, 0x8C2E, 0x8BC6, 0x8C2F, - 0x8C2D, 0x8C31, 0x8C35, 0x8BD1, 0x8BAE, 0x8C34, 0x62A4, 0x8BEA, 0x8A89, - 0x8C2B, 0x8BFB, 0x53D8, 0x8A5F, 0x96E0, 0x8C17, 0x8BA9, 0x8C30, 0x8C36, - 0x8D5E, 0x8C20, 0x8C33, 0x5C82, 0x7AD6, 0x4E30, 0x732A, 0x8C6E, 0x732B, - 0x8D1D, 0x8D1E, 0x8D1F, 0x8D22, 0x8D21, 0x8D2B, 0x8D27, 0x8D29, 0x8D2A, - 0x8D2F, 0x8D23, 0x8D2E, 0x8D33, 0x8D40, 0x8D30, 0x8D35, 0x8D2C, 0x4E70, - 0x8D37, 0x8D36, 0x8D39, 0x8D34, 0x8D3B, 0x8D38, 0x8D3A, 0x8D32, 0x8D42, - 0x8D41, 0x8D3F, 0x8D45, 0x8D44, 0x8D3E, 0x8D3C, 0x8D48, 0x8D4A, 0x5BBE, - 0x8D47, 0x8D52, 0x8D49, 0x8D50, 0x8D4F, 0x8D54, 0x8D53, 0x8D24, 0x5356, - 0x8D31, 0x8D4B, 0x8D55, 0x8D28, 0x8D26, 0x8D4C, 0x8D56, 0x8D57, 0x8D5A, - 0x8D59, 0x8D2D, 0x8D5B, 0x8D5C, 0x8D3D, 0x8D58, 0x8D5F, 0x8D60, 0x8D5E, - 0x8D61, 0x8D62, 0x8D46, 0x8D43, 0x8D51, 0x8D4E, 0x8D5D, 0x8D63, 0x8D6A, - 0x8D76, 0x8D75, 0x8D8B, 0x8DB1, 0x8FF9, 0x8DF5, 0x8E0A, 0x8DC4, 0x8DF8, - 0x8DD6, 0x8E52, 0x8DF7, 0x8DF6, 0x8DB8, 0x8E0C, 0x8DFB, 0x8DC3, 0x8E2F, - 0x8DDE, 0x8E2C, 0x8E70, 0x8DF9, 0x8E51, 0x8E7F, 0x8E9C, 0x8E8F, 0x8EAF, - 0x8F66, 0x8F67, 0x8F68, 0x519B, 0x8F69, 0x8F6B, 0x8F6D, 0x8F6F, 0x8F78, - 0x8F71, 0x8F74, 0x8F75, 0x8F7A, 0x8F72, 0x8F76, 0x8F7C, 0x8F83, 0x8F82, - 0x8F81, 0x8F80, 0x8F7D, 0x8F7E, 0x8F84, 0x8F85, 0x8F7B, 0x8F86, 0x8F8E, - 0x8F89, 0x8F8B, 0x8F8D, 0x8F8A, 0x8F87, 0x8F88, 0x8F6E, 0x8F91, 0x8F8F, - 0x8F93, 0x8F90, 0x8F97, 0x8206, 0x8F92, 0x6BC2, 0x8F96, 0x8F95, 0x8F98, - 0x8F6C, 0x8F99, 0x8F7F, 0x8F9A, 0x8F70, 0x8F94, 0x8F79, 0x8F73, 0x529E, - 0x8F9E, 0x8FAB, 0x8FA9, 0x519C, 0x8FD9, 0x8FDE, 0x5468, 0x8FDB, 0x6E38, - 0x8FD0, 0x8FC7, 0x8FBE, 0x8FDD, 0x9065, 0x900A, 0x9012, 0x8FDC, 0x9002, - 0x8FDF, 0x8FC1, 0x9009, 0x9057, 0x8FBD, 0x8FC8, 0x8FD8, 0x8FE9, 0x8FB9, - 0x903B, 0x9026, 0x90CF, 0x90AE, 0x90D3, 0x4E61, 0x90B9, 0x90AC, 0x90E7, - 0x9093, 0x90D1, 0x90BB, 0x90F8, 0x90BA, 0x90D0, 0x909D, 0x9142, 0x90E6, - 0x814C, 0x4E11, 0x915D, 0x533B, 0x9171, 0x9166, 0x917F, 0x8845, 0x917E, - 0x917D, 0x91CA, 0x9487, 0x948C, 0x948A, 0x9489, 0x948B, 0x9488, 0x9493, - 0x9490, 0x948F, 0x9492, 0x948E, 0x9497, 0x948D, 0x9495, 0x94AF, 0x94AB, - 0x9498, 0x94AD, 0x94A0, 0x949D, 0x94A4, 0x94A3, 0x949E, 0x94AE, 0x94A7, - 0x9499, 0x949B, 0x94AA, 0x94CC, 0x94C8, 0x94B6, 0x94C3, 0x94B4, 0x94B9, - 0x94CD, 0x94B0, 0x94B8, 0x94C0, 0x94BF, 0x94BE, 0x949C, 0x94CA, 0x94C9, - 0x94C7, 0x94CB, 0x94C2, 0x94B3, 0x94C6, 0x94C5, 0x94BA, 0x94A9, 0x94B2, - 0x94BC, 0x94BD, 0x94CF, 0x94F0, 0x94D2, 0x94EC, 0x94EA, 0x94F6, 0x94F3, - 0x94DC, 0x94DA, 0x94E3, 0x94E8, 0x94E2, 0x94ED, 0x94EB, 0x94E6, 0x8854, - 0x94D1, 0x94F7, 0x94F1, 0x94DF, 0x94F5, 0x94D5, 0x94EF, 0x94D0, 0x9510, - 0x9500, 0x9508, 0x9511, 0x9509, 0x94DD, 0x9512, 0x950C, 0x94A1, 0x94E4, - 0x94D7, 0x950B, 0x950A, 0x9513, 0x9504, 0x9503, 0x9514, 0x9507, 0x94D3, - 0x94FA, 0x94D6, 0x9506, 0x9502, 0x952F, 0x94A2, 0x951E, 0x5F55, 0x9516, - 0x9529, 0x94D4, 0x9525, 0x9515, 0x951F, 0x9524, 0x9531, 0x94EE, 0x951B, - 0x952C, 0x952D, 0x951C, 0x94B1, 0x9526, 0x951A, 0x9520, 0x9521, 0x9522, - 0x9519, 0x9530, 0x8868, 0x94FC, 0x9528, 0x9494, 0x9534, 0x94FE, 0x9505, - 0x9540, 0x9537, 0x94E1, 0x9496, 0x953B, 0x953D, 0x9538, 0x9532, 0x9539, - 0x953E, 0x952E, 0x9536, 0x9517, 0x953A, 0x9541, 0x9551, 0x9555, 0x9501, - 0x9549, 0x9548, 0x9543, 0x94A8, 0x84E5, 0x954F, 0x94E0, 0x94E9, 0x953C, - 0x9550, 0x9547, 0x9552, 0x954D, 0x9553, 0x955E, 0x955F, 0x94FE, 0x9546, - 0x9559, 0x9560, 0x955D, 0x94FF, 0x9535, 0x9557, 0x9558, 0x955B, 0x94F2, - 0x955C, 0x9556, 0x9542, 0x933E, 0x955A, 0x94E7, 0x956A, 0x9508, 0x94D9, - 0x9563, 0x9566, 0x9561, 0x949F, 0x956B, 0x950F, 0x9544, 0x954C, 0x9570, - 0x956F, 0x956D, 0x94C1, 0x956E, 0x94CE, 0x94DB, 0x9571, 0x94F8, 0x956C, - 0x9554, 0x9274, 0x9527, 0x9574, 0x94C4, 0x9573, 0x9567, 0x94A5, 0x9575, - 0x9576, 0x954A, 0x9569, 0x9523, 0x94BB, 0x92AE, 0x51FF, 0x957F, 0x95E8, - 0x95E9, 0x95EA, 0x95EB, 0x95EC, 0x95ED, 0x5F00, 0x95F6, 0x95F3, 0x95F0, - 0x95F2, 0x95F4, 0x95F5, 0x95F8, 0x9602, 0x9601, 0x9600, 0x95FA, 0x95FD, - 0x9603, 0x9606, 0x95FE, 0x9605, 0x960A, 0x9609, 0x960E, 0x960F, 0x960D, - 0x9608, 0x960C, 0x9612, 0x677F, 0x6697, 0x95F1, 0x9614, 0x9615, 0x9611, - 0x9617, 0x9618, 0x95FF, 0x9616, 0x9619, 0x95EF, 0x5173, 0x961A, 0x9613, - 0x9610, 0x8F9F, 0x961B, 0x95FC, 0x9649, 0x9655, 0x9635, 0x9634, 0x9648, - 0x9646, 0x9633, 0x9667, 0x961F, 0x9636, 0x9668, 0x9645, 0x968F, 0x9669, - 0x9690, 0x9647, 0x96B6, 0x53EA, 0x96BD, 0x867D, 0x53CC, 0x96CF, 0x6742, - 0x9E21, 0x79BB, 0x96BE, 0x4E91, 0x7535, 0x9721, 0x96FE, 0x9701, 0x96F3, - 0x972D, 0x53C7, 0x7075, 0x53C6, 0x9753, 0x9759, 0x817C, 0x9765, 0x9F17, - 0x5DE9, 0x979F, 0x7F30, 0x9791, 0x97AF, 0x97E6, 0x97E7, 0x97E9, 0x97EA, - 0x97EC, 0x97EB, 0x97F5, 0x54CD, 0x9875, 0x9876, 0x9877, 0x9879, 0x987A, - 0x9878, 0x987B, 0x987C, 0x9882, 0x9880, 0x9883, 0x9884, 0x987D, 0x9881, - 0x987F, 0x9887, 0x9886, 0x988C, 0x9889, 0x9890, 0x988F, 0x5934, 0x988A, - 0x988B, 0x9894, 0x9888, 0x9893, 0x9891, 0x9897, 0x9898, 0x989D, 0x989A, - 0x989C, 0x9899, 0x989B, 0x613F, 0x98A1, 0x98A0, 0x7C7B, 0x989F, 0x98A2, - 0x987E, 0x98A4, 0x98A5, 0x663E, 0x98A6, 0x9885, 0x989E, 0x98A7, 0x98CE, - 0x98D0, 0x98D1, 0x98D2, 0x53F0, 0x98D3, 0x98D4, 0x98CF, 0x98D6, 0x98D5, - 0x98D7, 0x98D8, 0x98D9, 0x98DE, 0x9965, 0x9964, 0x9966, 0x9968, 0x996A, - 0x996B, 0x996C, 0x996D, 0x996E, 0x9974, 0x9972, 0x9971, 0x9970, 0x9973, - 0x997A, 0x9978, 0x997C, 0x9977, 0x517B, 0x9975, 0x9979, 0x997D, 0x9981, - 0x997F, 0x997E, 0x4F59, 0x80B4, 0x9984, 0x9983, 0x996F, 0x9985, 0x9986, - 0x7CC7, 0x9967, 0x5582, 0x9989, 0x998E, 0x9969, 0x998F, 0x998A, 0x998C, - 0x998D, 0x9992, 0x9990, 0x9991, 0x9988, 0x9994, 0x9976, 0x98E8, 0x990D, - 0x998B, 0x9A6C, 0x9A6D, 0x51AF, 0x9A6E, 0x9A70, 0x9A6F, 0x9A73, 0x9A7B, - 0x9A7D, 0x9A79, 0x9A75, 0x9A7E, 0x9A80, 0x9A78, 0x9A76, 0x9A7C, 0x9A77, - 0x9A88, 0x9A87, 0x9A83, 0x9A86, 0x9A8E, 0x9A8F, 0x9A8B, 0x9A8D, 0x9A93, - 0x9A92, 0x9A91, 0x9A90, 0x9A9B, 0x9A97, 0x9A99, 0x9A9E, 0x9A98, 0x9A9D, - 0x817E, 0x9A7A, 0x9A9A, 0x9A9F, 0x9AA1, 0x84E6, 0x9A9C, 0x9A96, 0x9AA0, - 0x9AA2, 0x9A71, 0x9A85, 0x9A95, 0x9A81, 0x9A84, 0x9A8C, 0x60CA, 0x9A7F, - 0x9AA4, 0x9A74, 0x9AA7, 0x9AA5, 0x9AA6, 0x9A8A, 0x80AE, 0x9AC5, 0x810F, - 0x4F53, 0x9ACC, 0x9ACB, 0x53D1, 0x677E, 0x80E1, 0x9B13, 0x6597, 0x95F9, - 0x960B, 0x9604, 0x90C1, 0x9B49, 0x9B47, 0x9C7C, 0x9C80, 0x9C81, 0x9C82, - 0x9C7F, 0x9C85, 0x9C86, 0x9C8F, 0x9C87, 0x9C90, 0x9C8D, 0x9C8B, 0x9C8A, - 0x9C92, 0x9C95, 0x9C96, 0x9C94, 0x9C9B, 0x9C91, 0x9C9C, 0x9CA7, 0x9CA0, - 0x9CA9, 0x9CA4, 0x9CA8, 0x9CBB, 0x9CAF, 0x9CAD, 0x9C9E, 0x9CB7, 0x9CB4, - 0x9CB1, 0x9CB5, 0x9CB2, 0x9CB3, 0x9CB8, 0x9CAE, 0x9CB0, 0x9CB6, 0x9CAB, - 0x9CCA, 0x9C97, 0x9CBD, 0x9CC7, 0x9CC5, 0x9CC6, 0x9CC3, 0x9CD2, 0x9CD1, - 0x9CA5, 0x9CCF, 0x9CCE, 0x9CD0, 0x9CCD, 0x9CC1, 0x9CA2, 0x9CCC, 0x9CA6, - 0x9CA3, 0x9CB9, 0x9CD7, 0x9CD4, 0x9CC9, 0x9CD5, 0x9CD6, 0x9CDF, 0x9CDD, - 0x9CDC, 0x9CDE, 0x9C9F, 0x9CBC, 0x9C8E, 0x9C99, 0x9CE3, 0x9CE2, 0x9C9A, - 0x9CC4, 0x9C88, 0x9CA1, 0x9E1F, 0x51EB, 0x9E20, 0x9E24, 0x51E4, 0x9E23, - 0x9E22, 0x9E29, 0x9E28, 0x9E26, 0x9E30, 0x9E35, 0x9E33, 0x9E32, 0x9E2E, - 0x9E31, 0x9E2A, 0x9E2F, 0x9E2D, 0x9E38, 0x9E39, 0x9E3B, 0x9E3F, 0x9E3D, - 0x9E3A, 0x9E43, 0x9E46, 0x9E41, 0x9E48, 0x9E45, 0x9E44, 0x9E49, 0x9E4C, - 0x9E4F, 0x9E4E, 0x9E4A, 0x9E53, 0x9E2B, 0x9E51, 0x9E4B, 0x9E59, 0x9E55, - 0x9E57, 0x9E56, 0x9E4D, 0x9E5B, 0x9E5C, 0x83BA, 0x9E5F, 0x9E64, 0x9E60, - 0x9E61, 0x9E58, 0x9E63, 0x9E5A, 0x9E62, 0x9E5E, 0x9E67, 0x9E65, 0x9E25, - 0x9E37, 0x9E68, 0x9E36, 0x9E6A, 0x9E54, 0x9E69, 0x9E6B, 0x9E47, 0x9E6C, - 0x9E70, 0x9E6D, 0x9E6F, 0x9E2C, 0x9E74, 0x9E66, 0x9E73, 0x9E42, 0x9E3E, - 0x5364, 0x9E7E, 0x7877, 0x76D0, 0x4E3D, 0x9EA6, 0x9EB8, 0x9EB9, 0x9762, - 0x4E48, 0x9EC4, 0x9EC9, 0x70B9, 0x515A, 0x9709, 0x9EE1, 0x9EE9, 0x9EFE, - 0x9F0B, 0x9F0D, 0x9F39, 0x9F50, 0x658B, 0x8D4D, 0x9F51, 0x9F7F, 0x9F80, - 0x9F81, 0x9F85, 0x9F87, 0x9F83, 0x9F86, 0x9F84, 0x9F88, 0x9F8A, 0x9F89, - 0x9F8B, 0x9F8C, 0x9F99, 0x5390, 0x5E9E, 0x9F9A, 0x9F9B, 0x9F9F, 0xA76F, - 0x8C48, 0x66F4, 0x8ECA, 0x8CC8, 0x6ED1, 0x4E32, 0x53E5, 0x9F9C, 0x9F9C, - 0x5951, 0x91D1, 0x5587, 0x5948, 0x61F6, 0x7669, 0x7F85, 0x863F, 0x87BA, - 0x88F8, 0x908F, 0x6A02, 0x6D1B, 0x70D9, 0x73DE, 0x843D, 0x916A, 0x99F1, - 0x4E82, 0x5375, 0x6B04, 0x721B, 0x862D, 0x9E1E, 0x5D50, 0x6FEB, 0x85CD, - 0x8964, 0x62C9, 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x90CE, - 0x4F86, 0x51B7, 0x52DE, 0x64C4, 0x6AD3, 0x7210, 0x76E7, 0x8001, 0x8606, - 0x865C, 0x8DEF, 0x9732, 0x9B6F, 0x9DFA, 0x788C, 0x797F, 0x7DA0, 0x83C9, - 0x9304, 0x9E7F, 0x8AD6, 0x58DF, 0x5F04, 0x7C60, 0x807E, 0x7262, 0x78CA, - 0x8CC2, 0x96F7, 0x58D8, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, 0x7D2F, 0x7E37, - 0x964B, 0x52D2, 0x808B, 0x51DC, 0x51CC, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, - 0x8B80, 0x62CF, 0x6A02, 0x8AFE, 0x4E39, 0x5BE7, 0x6012, 0x7387, 0x7570, - 0x5317, 0x78FB, 0x4FBF, 0x5FA9, 0x4E0D, 0x6CCC, 0x6578, 0x7D22, 0x53C3, - 0x585E, 0x7701, 0x8449, 0x8AAA, 0x6BBA, 0x8FB0, 0x6C88, 0x62FE, 0x82E5, - 0x63A0, 0x7565, 0x4EAE, 0x5169, 0x51C9, 0x6881, 0x7CE7, 0x826F, 0x8AD2, - 0x91CF, 0x52F5, 0x5442, 0x5973, 0x5EEC, 0x65C5, 0x6FFE, 0x792A, 0x95AD, - 0x9A6A, 0x9E97, 0x9ECE, 0x529B, 0x66C6, 0x6B77, 0x8F62, 0x5E74, 0x6190, - 0x6200, 0x649A, 0x6F23, 0x7149, 0x7489, 0x79CA, 0x7DF4, 0x806F, 0x8F26, - 0x84EE, 0x9023, 0x934A, 0x5217, 0x52A3, 0x54BD, 0x70C8, 0x88C2, 0x8AAA, - 0x5EC9, 0x5FF5, 0x637B, 0x6BAE, 0x7C3E, 0x7375, 0x4EE4, 0x56F9, 0x5BE7, - 0x5DBA, 0x601C, 0x73B2, 0x7469, 0x7F9A, 0x8046, 0x9234, 0x96F6, 0x9748, - 0x9818, 0x4F8B, 0x79AE, 0x91B4, 0x96B8, 0x60E1, 0x4E86, 0x50DA, 0x5BEE, - 0x5C3F, 0x6599, 0x6A02, 0x71CE, 0x7642, 0x84FC, 0x907C, 0x9F8D, 0x6688, - 0x962E, 0x5289, 0x677B, 0x67F3, 0x6D41, 0x6E9C, 0x7409, 0x7559, 0x786B, - 0x7D10, 0x985E, 0x516D, 0x622E, 0x9678, 0x502B, 0x5D19, 0x6DEA, 0x8F2A, - 0x5F8B, 0x6144, 0x6817, 0x7387, 0x9686, 0x5229, 0x540F, 0x5C65, 0x6613, - 0x674E, 0x68A8, 0x6CE5, 0x7406, 0x75E2, 0x7F79, 0x88CF, 0x88E1, 0x91CC, - 0x96E2, 0x533F, 0x6EBA, 0x541D, 0x71D0, 0x7498, 0x85FA, 0x96A3, 0x9C57, - 0x9E9F, 0x6797, 0x6DCB, 0x81E8, 0x7ACB, 0x7B20, 0x7C92, 0x72C0, 0x7099, - 0x8B58, 0x4EC0, 0x8336, 0x523A, 0x5207, 0x5EA6, 0x62D3, 0x7CD6, 0x5B85, - 0x6D1E, 0x66B4, 0x8F3B, 0x884C, 0x964D, 0x898B, 0x5ED3, 0x5140, 0x55C0, - 0x585A, 0x6674, 0x51DE, 0x732A, 0x76CA, 0x793C, 0x795E, 0x7965, 0x798F, - 0x9756, 0x7CBE, 0x7FBD, 0x8612, 0x8AF8, 0x9038, 0x90FD, 0x98EF, 0x98FC, - 0x9928, 0x9DB4, 0x4FAE, 0x50E7, 0x514D, 0x52C9, 0x52E4, 0x5351, 0x559D, - 0x5606, 0x5668, 0x5840, 0x58A8, 0x5C64, 0x5C6E, 0x6094, 0x6168, 0x618E, - 0x61F2, 0x654F, 0x65E2, 0x6691, 0x6885, 0x6D77, 0x6E1A, 0x6F22, 0x716E, - 0x722B, 0x7422, 0x7891, 0x793E, 0x7949, 0x7948, 0x7950, 0x7956, 0x795D, - 0x798D, 0x798E, 0x7A40, 0x7A81, 0x7BC0, 0x7DF4, 0x7E09, 0x7E41, 0x7F72, - 0x8005, 0x81ED, 0x8279, 0x8279, 0x8457, 0x8910, 0x8996, 0x8B01, 0x8B39, - 0x8CD3, 0x8D08, 0x8FB6, 0x9038, 0x96E3, 0x97FF, 0x983B, 0x6075, 0x8218, - 0x4E26, 0x51B5, 0x5168, 0x4F80, 0x5145, 0x5180, 0x52C7, 0x52FA, 0x559D, - 0x5555, 0x5599, 0x55E2, 0x585A, 0x58B3, 0x5944, 0x5954, 0x5A62, 0x5B28, - 0x5ED2, 0x5ED9, 0x5F69, 0x5FAD, 0x60D8, 0x614E, 0x6108, 0x618E, 0x6160, - 0x61F2, 0x6234, 0x63C4, 0x641C, 0x6452, 0x6556, 0x6674, 0x6717, 0x671B, - 0x6756, 0x6B79, 0x6BBA, 0x6D41, 0x6EDB, 0x6ECB, 0x6F22, 0x701E, 0x716E, - 0x77A7, 0x7235, 0x72AF, 0x732A, 0x7471, 0x7506, 0x753B, 0x761D, 0x761F, - 0x76CA, 0x76DB, 0x76F4, 0x774A, 0x7740, 0x78CC, 0x7AB1, 0x7BC0, 0x7C7B, - 0x7D5B, 0x7DF4, 0x7F3E, 0x8005, 0x8352, 0x83EF, 0x8779, 0x8941, 0x8986, - 0x8996, 0x8ABF, 0x8AF8, 0x8ACB, 0x8B01, 0x8AFE, 0x8AED, 0x8B39, 0x8B8A, - 0x8D08, 0x8F38, 0x9072, 0x9199, 0x9276, 0x967C, 0x96E3, 0x9756, 0x97DB, - 0x97FF, 0x980B, 0x983B, 0x9B12, 0x9F9C, 0x3B9D, 0x4018, 0x4039, 0x9F43, - 0x9F8E, 0x05E2, 0x05D0, 0x05D3, 0x05D4, 0x05DB, 0x05DC, 0x05DD, 0x05E8, - 0x05EA, 0x002B, 0x0671, 0x0671, 0x067B, 0x067B, 0x067B, 0x067B, 0x067E, - 0x067E, 0x067E, 0x067E, 0x0680, 0x0680, 0x0680, 0x0680, 0x067A, 0x067A, - 0x067A, 0x067A, 0x067F, 0x067F, 0x067F, 0x067F, 0x0679, 0x0679, 0x0679, - 0x0679, 0x06A4, 0x06A4, 0x06A4, 0x06A4, 0x06A6, 0x06A6, 0x06A6, 0x06A6, - 0x0684, 0x0684, 0x0684, 0x0684, 0x0683, 0x0683, 0x0683, 0x0683, 0x0686, - 0x0686, 0x0686, 0x0686, 0x0687, 0x0687, 0x0687, 0x0687, 0x068D, 0x068D, - 0x068C, 0x068C, 0x068E, 0x068E, 0x0688, 0x0688, 0x0698, 0x0698, 0x0691, - 0x0691, 0x06A9, 0x06A9, 0x06A9, 0x06A9, 0x06AF, 0x06AF, 0x06AF, 0x06AF, - 0x06B3, 0x06B3, 0x06B3, 0x06B3, 0x06B1, 0x06B1, 0x06B1, 0x06B1, 0x06BA, - 0x06BA, 0x06BB, 0x06BB, 0x06BB, 0x06BB, 0x06C0, 0x06C0, 0x06C1, 0x06C1, - 0x06C1, 0x06C1, 0x06BE, 0x06BE, 0x06BE, 0x06BE, 0x06D2, 0x06D2, 0x06D3, - 0x06D3, 0x06AD, 0x06AD, 0x06AD, 0x06AD, 0x06C7, 0x06C7, 0x06C6, 0x06C6, - 0x06C8, 0x06C8, 0x0677, 0x06CB, 0x06CB, 0x06C5, 0x06C5, 0x06C9, 0x06C9, - 0x06D0, 0x06D0, 0x06D0, 0x06D0, 0x0649, 0x0649, 0x06CC, 0x06CC, 0x06CC, - 0x06CC, 0x002C, 0x3001, 0x3002, 0x003A, 0x003B, 0x0021, 0x003F, 0x3016, - 0x3017, 0x2026, 0x2025, 0x2014, 0x2013, 0x005F, 0x005F, 0x0028, 0x0029, - 0x007B, 0x007D, 0x3014, 0x3015, 0x3010, 0x3011, 0x300A, 0x300B, 0x3008, - 0x3009, 0x300C, 0x300D, 0x300E, 0x300F, 0x005B, 0x005D, 0x203E, 0x203E, - 0x203E, 0x203E, 0x005F, 0x005F, 0x005F, 0x002C, 0x3001, 0x002E, 0x003B, - 0x003A, 0x003F, 0x0021, 0x2014, 0x0028, 0x0029, 0x007B, 0x007D, 0x3014, - 0x3015, 0x0023, 0x0026, 0x002A, 0x002B, 0x002D, 0x003C, 0x003E, 0x003D, - 0x005C, 0x0024, 0x0025, 0x0040, 0x064B, 0x064C, 0x064D, 0x064E, 0x064F, - 0x0650, 0x0651, 0x0652, 0x0621, 0x0622, 0x0622, 0x0623, 0x0623, 0x0624, - 0x0624, 0x0625, 0x0625, 0x0626, 0x0626, 0x0626, 0x0626, 0x0627, 0x0627, - 0x0628, 0x0628, 0x0628, 0x0628, 0x0629, 0x0629, 0x062A, 0x062A, 0x062A, - 0x062A, 0x062B, 0x062B, 0x062B, 0x062B, 0x062C, 0x062C, 0x062C, 0x062C, - 0x062D, 0x062D, 0x062D, 0x062D, 0x062E, 0x062E, 0x062E, 0x062E, 0x062F, - 0x062F, 0x0630, 0x0630, 0x0631, 0x0631, 0x0632, 0x0632, 0x0633, 0x0633, - 0x0633, 0x0633, 0x0634, 0x0634, 0x0634, 0x0634, 0x0635, 0x0635, 0x0635, - 0x0635, 0x0636, 0x0636, 0x0636, 0x0636, 0x0637, 0x0637, 0x0637, 0x0637, - 0x0638, 0x0638, 0x0638, 0x0638, 0x0639, 0x0639, 0x0639, 0x0639, 0x063A, - 0x063A, 0x063A, 0x063A, 0x0641, 0x0641, 0x0641, 0x0641, 0x0642, 0x0642, - 0x0642, 0x0642, 0x0643, 0x0643, 0x0643, 0x0643, 0x0644, 0x0644, 0x0644, - 0x0644, 0x0645, 0x0645, 0x0645, 0x0645, 0x0646, 0x0646, 0x0646, 0x0646, - 0x0647, 0x0647, 0x0647, 0x0647, 0x0648, 0x0648, 0x0649, 0x0649, 0x064A, - 0x064A, 0x064A, 0x064A, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, - 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, - 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, - 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, - 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, - 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, - 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, - 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, - 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, - 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, - 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x2985, 0x2986, - 0x3002, 0x300C, 0x300D, 0x3001, 0x30FB, 0x30F2, 0x30A1, 0x30A3, 0x30A5, - 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, 0x30FC, 0x30A2, 0x30A4, - 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, - 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, - 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, - 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, - 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F3, 0x3099, 0x309A, - 0x3164, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, - 0x3139, 0x313A, 0x313B, 0x313C, 0x313D, 0x313E, 0x313F, 0x3140, 0x3141, - 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314A, - 0x314B, 0x314C, 0x314D, 0x314E, 0x314F, 0x3150, 0x3151, 0x3152, 0x3153, - 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315A, 0x315B, 0x315C, - 0x315D, 0x315E, 0x315F, 0x3160, 0x3161, 0x3162, 0x3163, 0x00A2, 0x00A3, - 0x00AC, 0x00AF, 0x00A6, 0x00A5, 0x20A9, 0x2502, 0x2190, 0x2191, 0x2192, - 0x2193, 0x25A0, 0x25CB}; - -const FX_WCHAR g_UnicodeData_Normalization_Map2[1724] = { - 0x004F, 0x0045, 0x0054, 0x004D, 0x006F, 0x0065, 0x0049, 0x004A, 0x0069, - 0x006A, 0x004F, 0x0045, 0x006F, 0x0065, 0x0044, 0x017D, 0x0044, 0x017E, - 0x0064, 0x017E, 0x004C, 0x004A, 0x004C, 0x006A, 0x006C, 0x006A, 0x004E, - 0x004A, 0x004E, 0x006A, 0x006E, 0x006A, 0x0044, 0x005A, 0x0044, 0x007A, - 0x0064, 0x007A, 0x0064, 0x0062, 0x0071, 0x0070, 0x004F, 0x0045, 0x0064, - 0x007A, 0x0064, 0x0292, 0x0064, 0x007A, 0x0074, 0x0073, 0x0074, 0x0283, - 0x0074, 0x0063, 0x0066, 0x014B, 0x006C, 0x0073, 0x006C, 0x007A, 0x041D, - 0x0413, 0x043D, 0x0433, 0x0422, 0x0426, 0x0442, 0x0446, 0x0410, 0x0415, - 0x0430, 0x0435, 0x0565, 0x0582, 0x0627, 0x0674, 0x0648, 0x0674, 0x06C7, - 0x0674, 0x064A, 0x0674, 0x06D5, 0x0654, 0x06C1, 0x0654, 0x06D2, 0x0654, - 0x0928, 0x093C, 0x0930, 0x093C, 0x0933, 0x093C, 0x0915, 0x093C, 0x0916, - 0x093C, 0x0917, 0x093C, 0x091C, 0x093C, 0x0921, 0x093C, 0x0922, 0x093C, - 0x092B, 0x093C, 0x092F, 0x093C, 0x09C7, 0x09BE, 0x09C7, 0x09D7, 0x09A1, - 0x09BC, 0x09A2, 0x09BC, 0x09AF, 0x09BC, 0x0A32, 0x0A3C, 0x0A38, 0x0A3C, - 0x0A16, 0x0A3C, 0x0A17, 0x0A3C, 0x0A1C, 0x0A3C, 0x0A2B, 0x0A3C, 0x0B47, - 0x0B56, 0x0B47, 0x0B3E, 0x0B47, 0x0B57, 0x0B21, 0x0B3C, 0x0B22, 0x0B3C, - 0x0B92, 0x0BD7, 0x0BC6, 0x0BBE, 0x0BC7, 0x0BBE, 0x0BC6, 0x0BD7, 0x0C46, - 0x0C56, 0x0CBF, 0x0CD5, 0x0CC6, 0x0CD5, 0x0CC6, 0x0CD6, 0x0CC6, 0x0CC2, - 0x0CCA, 0x0CD5, 0x0D46, 0x0D3E, 0x0D47, 0x0D3E, 0x0D46, 0x0D57, 0x0DD9, - 0x0DCA, 0x0DD9, 0x0DCF, 0x0DDC, 0x0DCA, 0x0DD9, 0x0DDF, 0x0E4D, 0x0E32, - 0x0ECD, 0x0EB2, 0x0EAB, 0x0E99, 0x0EAB, 0x0EA1, 0x0F42, 0x0FB7, 0x0F4C, - 0x0FB7, 0x0F51, 0x0FB7, 0x0F56, 0x0FB7, 0x0F5B, 0x0FB7, 0x0F40, 0x0FB5, - 0x0F71, 0x0F72, 0x0F71, 0x0F74, 0x0FB2, 0x0F80, 0x0FB2, 0x0F81, 0x0FB3, - 0x0F80, 0x0FB3, 0x0F81, 0x0F71, 0x0F80, 0x0F92, 0x0FB7, 0x0F9C, 0x0FB7, - 0x0FA1, 0x0FB7, 0x0FA6, 0x0FB7, 0x0FAB, 0x0FB7, 0x0F90, 0x0FB5, 0x1025, - 0x102E, 0x1B05, 0x1B35, 0x1B07, 0x1B35, 0x1B09, 0x1B35, 0x1B0B, 0x1B35, - 0x1B0D, 0x1B35, 0x1B11, 0x1B35, 0x1B3A, 0x1B35, 0x1B3C, 0x1B35, 0x1B3E, - 0x1B35, 0x1B3F, 0x1B35, 0x1B42, 0x1B35, 0x0074, 0x0068, 0x002E, 0x002E, - 0x2032, 0x2032, 0x2035, 0x2035, 0x0021, 0x0021, 0x0020, 0x0305, 0x003F, - 0x003F, 0x003F, 0x0021, 0x0021, 0x003F, 0x0052, 0x0073, 0x00B0, 0x0043, - 0x00B0, 0x0046, 0x004E, 0x006F, 0x0053, 0x004D, 0x0054, 0x004D, 0x0031, - 0x002F, 0x0049, 0x0049, 0x0049, 0x0056, 0x0056, 0x0049, 0x0049, 0x0058, - 0x0058, 0x0049, 0x0069, 0x0069, 0x0069, 0x0076, 0x0076, 0x0069, 0x0069, - 0x0078, 0x0078, 0x0069, 0x2190, 0x0338, 0x2192, 0x0338, 0x2194, 0x0338, - 0x21D0, 0x0338, 0x21D4, 0x0338, 0x21D2, 0x0338, 0x2223, 0x0338, 0x2225, - 0x0338, 0x222B, 0x222B, 0x222E, 0x222E, 0x223C, 0x0338, 0x2243, 0x0338, - 0x2245, 0x0338, 0x2248, 0x0338, 0x003D, 0x002F, 0x2261, 0x002F, 0x224D, - 0x002F, 0x003C, 0x002F, 0x003E, 0x002F, 0x2264, 0x002F, 0x2265, 0x002F, - 0x2272, 0x002F, 0x2273, 0x002F, 0x2276, 0x002F, 0x2277, 0x002F, 0x227A, - 0x002F, 0x227B, 0x002F, 0x2282, 0x002F, 0x2283, 0x002F, 0x2286, 0x002F, - 0x2287, 0x002F, 0x22A2, 0x002F, 0x22A8, 0x002F, 0x22A9, 0x002F, 0x22AB, - 0x002F, 0x227C, 0x002F, 0x227D, 0x002F, 0x2291, 0x002F, 0x2292, 0x002F, - 0x22B2, 0x002F, 0x22B3, 0x002F, 0x22B4, 0x002F, 0x22B5, 0x002F, 0x0042, - 0x0053, 0x0048, 0x0054, 0x004C, 0x0046, 0x0056, 0x0054, 0x0046, 0x0046, - 0x0043, 0x0052, 0x0053, 0x0053, 0x0053, 0x0049, 0x0045, 0x004D, 0x0046, - 0x0053, 0x0047, 0x0053, 0x0052, 0x0053, 0x0055, 0x0053, 0x0053, 0x0050, - 0x0031, 0x0030, 0x0031, 0x0031, 0x0031, 0x0032, 0x0031, 0x0033, 0x0031, - 0x0034, 0x0031, 0x0035, 0x0031, 0x0036, 0x0031, 0x0037, 0x0031, 0x0038, - 0x0031, 0x0039, 0x0032, 0x0030, 0x0031, 0x002E, 0x0032, 0x002E, 0x0033, - 0x002E, 0x0034, 0x002E, 0x0035, 0x002E, 0x0036, 0x002E, 0x0037, 0x002E, - 0x0038, 0x002E, 0x0039, 0x002E, 0x0031, 0x0031, 0x0031, 0x0032, 0x0031, - 0x0033, 0x0031, 0x0034, 0x0031, 0x0035, 0x0031, 0x0036, 0x0031, 0x0037, - 0x0031, 0x0038, 0x0031, 0x0039, 0x0032, 0x0030, 0x0031, 0x0030, 0x0031, - 0x0030, 0x0031, 0x0030, 0x0031, 0x0030, 0x003D, 0x003D, 0x2ADD, 0x002F, - 0x304B, 0x3099, 0x304D, 0x3099, 0x304F, 0x3099, 0x3051, 0x3099, 0x3053, - 0x3099, 0x3055, 0x3099, 0x3057, 0x3099, 0x3059, 0x3099, 0x305B, 0x3099, - 0x305D, 0x3099, 0x305F, 0x3099, 0x3061, 0x3099, 0x3064, 0x3099, 0x3066, - 0x3099, 0x3068, 0x3099, 0x306F, 0x3099, 0x306F, 0x309A, 0x3072, 0x3099, - 0x3072, 0x309A, 0x3075, 0x3099, 0x3075, 0x309A, 0x3078, 0x3099, 0x3078, - 0x309A, 0x307B, 0x3099, 0x307B, 0x309A, 0x3046, 0x3099, 0x0020, 0x3099, - 0x0020, 0x309A, 0x309D, 0x3099, 0x3088, 0x308A, 0x30AB, 0x3099, 0x30AD, - 0x3099, 0x30AF, 0x3099, 0x30B1, 0x3099, 0x30B3, 0x3099, 0x30B5, 0x3099, - 0x30B7, 0x3099, 0x30B9, 0x3099, 0x30BB, 0x3099, 0x30BD, 0x3099, 0x30BF, - 0x3099, 0x30C1, 0x3099, 0x30C4, 0x3099, 0x30C6, 0x3099, 0x30C8, 0x3099, - 0x30CF, 0x3099, 0x30CF, 0x309A, 0x30D2, 0x3099, 0x30D2, 0x309A, 0x30D5, - 0x3099, 0x30D5, 0x309A, 0x30D8, 0x3099, 0x30D8, 0x309A, 0x30DB, 0x3099, - 0x30DB, 0x309A, 0x30A6, 0x3099, 0x30EF, 0x3099, 0x30F0, 0x3099, 0x30F1, - 0x3099, 0x30F2, 0x3099, 0x30FD, 0x3099, 0x30B3, 0x30C8, 0x0032, 0x0031, - 0x0032, 0x0032, 0x0032, 0x0033, 0x0032, 0x0034, 0x0032, 0x0035, 0x0032, - 0x0036, 0x0032, 0x0037, 0x0032, 0x0038, 0x0032, 0x0039, 0x0033, 0x0030, - 0x0033, 0x0031, 0x0033, 0x0032, 0x0033, 0x0033, 0x0033, 0x0034, 0x0033, - 0x0035, 0x1100, 0x1161, 0x1102, 0x1161, 0x1103, 0x1161, 0x1105, 0x1161, - 0x1106, 0x1161, 0x1107, 0x1161, 0x1109, 0x1161, 0x110B, 0x1161, 0x110C, - 0x1161, 0x110E, 0x1161, 0x110F, 0x1161, 0x1110, 0x1161, 0x1111, 0x1161, - 0x1112, 0x1161, 0x110B, 0x116E, 0x0033, 0x0036, 0x0033, 0x0037, 0x0033, - 0x0038, 0x0033, 0x0039, 0x0034, 0x0030, 0x0034, 0x0031, 0x0034, 0x0032, - 0x0034, 0x0033, 0x0034, 0x0034, 0x0034, 0x0035, 0x0034, 0x0036, 0x0034, - 0x0037, 0x0034, 0x0038, 0x0034, 0x0039, 0x0035, 0x0030, 0x0031, 0x6708, - 0x0032, 0x6708, 0x0033, 0x6708, 0x0034, 0x6708, 0x0035, 0x6708, 0x0036, - 0x6708, 0x0037, 0x6708, 0x0038, 0x6708, 0x0039, 0x6708, 0x0048, 0x0067, - 0x0065, 0x0056, 0x30AE, 0x30AC, 0x30AD, 0x30ED, 0x30C7, 0x30B7, 0x30C9, - 0x30EB, 0x30C8, 0x30F3, 0x30CA, 0x30CE, 0x30D4, 0x30B3, 0x30D3, 0x30EB, - 0x30DA, 0x30BD, 0x30DB, 0x30F3, 0x30DF, 0x30EA, 0x30E1, 0x30AC, 0x30EA, - 0x30E9, 0x30EC, 0x30E0, 0x0030, 0x70B9, 0x0031, 0x70B9, 0x0032, 0x70B9, - 0x0033, 0x70B9, 0x0034, 0x70B9, 0x0035, 0x70B9, 0x0036, 0x70B9, 0x0037, - 0x70B9, 0x0038, 0x70B9, 0x0039, 0x70B9, 0x0064, 0x0061, 0x0041, 0x0055, - 0x006F, 0x0056, 0x0070, 0x0063, 0x0064, 0x006D, 0x0049, 0x0055, 0x5E73, - 0x6210, 0x662D, 0x548C, 0x5927, 0x6B63, 0x660E, 0x6CBB, 0x0070, 0x0041, - 0x006E, 0x0041, 0x03BC, 0x0041, 0x006D, 0x0041, 0x006B, 0x0041, 0x004B, - 0x0042, 0x004D, 0x0042, 0x0047, 0x0042, 0x0070, 0x0046, 0x006E, 0x0046, - 0x03BC, 0x0046, 0x03BC, 0x0067, 0x006D, 0x0067, 0x006B, 0x0067, 0x0048, - 0x007A, 0x03BC, 0x2113, 0x006D, 0x2113, 0x0064, 0x2113, 0x006B, 0x2113, - 0x0066, 0x006D, 0x006E, 0x006D, 0x03BC, 0x006D, 0x006D, 0x006D, 0x0063, - 0x006D, 0x006B, 0x006D, 0x006D, 0x00B2, 0x006D, 0x00B3, 0x0050, 0x0061, - 0x0070, 0x0073, 0x006E, 0x0073, 0x03BC, 0x0073, 0x006D, 0x0073, 0x0070, - 0x0056, 0x006E, 0x0056, 0x03BC, 0x0056, 0x006D, 0x0056, 0x006B, 0x0056, - 0x004D, 0x0056, 0x0070, 0x0057, 0x006E, 0x0057, 0x03BC, 0x0057, 0x006D, - 0x0057, 0x006B, 0x0057, 0x004D, 0x0057, 0x006B, 0x03A9, 0x004D, 0x03A9, - 0x0042, 0x0071, 0x0063, 0x0063, 0x0063, 0x0064, 0x0064, 0x0042, 0x0047, - 0x0079, 0x0068, 0x0061, 0x0048, 0x0050, 0x0069, 0x006E, 0x004B, 0x004B, - 0x004B, 0x004D, 0x006B, 0x0074, 0x006C, 0x006D, 0x006C, 0x006E, 0x006C, - 0x0078, 0x006D, 0x0062, 0x0050, 0x0048, 0x0050, 0x0052, 0x0073, 0x0072, - 0x0053, 0x0076, 0x0057, 0x0062, 0x0031, 0x65E5, 0x0032, 0x65E5, 0x0033, - 0x65E5, 0x0034, 0x65E5, 0x0035, 0x65E5, 0x0036, 0x65E5, 0x0037, 0x65E5, - 0x0038, 0x65E5, 0x0039, 0x65E5, 0x0066, 0x0066, 0x0066, 0x0069, 0x0066, - 0x006C, 0x017F, 0x0074, 0x0073, 0x0074, 0x0574, 0x0576, 0x0574, 0x0565, - 0x0574, 0x056B, 0x057E, 0x0576, 0x0574, 0x056D, 0x05D9, 0x05B4, 0x05F2, - 0x05B7, 0x05E9, 0x05C1, 0x05E9, 0x05C2, 0xFB49, 0x05C1, 0xFB49, 0x05C2, - 0x05D0, 0x05B7, 0x05D0, 0x05B8, 0x05D0, 0x05BC, 0x05D1, 0x05BC, 0x05D2, - 0x05BC, 0x05D3, 0x05BC, 0x05D4, 0x05BC, 0x05D5, 0x05BC, 0x05D6, 0x05BC, - 0x05D8, 0x05BC, 0x05D9, 0x05BC, 0x05DA, 0x05BC, 0x05DB, 0x05BC, 0x05DC, - 0x05BC, 0x05DE, 0x05BC, 0x05E0, 0x05BC, 0x05E1, 0x05BC, 0x05E3, 0x05BC, - 0x05E4, 0x05BC, 0x05E6, 0x05BC, 0x05E7, 0x05BC, 0x05E8, 0x05BC, 0x05E9, - 0x05BC, 0x05EA, 0x05BC, 0x05D5, 0x05B9, 0x05D1, 0x05BF, 0x05DB, 0x05BF, - 0x05E4, 0x05BF, 0x05D0, 0x05DC, 0x0626, 0x0627, 0x0626, 0x0627, 0x0626, - 0x06D5, 0x0626, 0x06D5, 0x0626, 0x0648, 0x0626, 0x0648, 0x0626, 0x06C7, - 0x0626, 0x06C7, 0x0626, 0x06C6, 0x0626, 0x06C6, 0x0626, 0x06C8, 0x0626, - 0x06C8, 0x0626, 0x06D0, 0x0626, 0x06D0, 0x0626, 0x06D0, 0x0626, 0x0649, - 0x0626, 0x0649, 0x0626, 0x0649, 0x0626, 0x062C, 0x0626, 0x062D, 0x0626, - 0x0645, 0x0626, 0x0649, 0x0626, 0x064A, 0x0628, 0x062C, 0x0628, 0x062D, - 0x0628, 0x062E, 0x0628, 0x0645, 0x0628, 0x0649, 0x0628, 0x064A, 0x062A, - 0x062C, 0x062A, 0x062D, 0x062A, 0x062E, 0x062A, 0x0645, 0x062A, 0x0649, - 0x062A, 0x064A, 0x062B, 0x062C, 0x062B, 0x0645, 0x062B, 0x0649, 0x062B, - 0x064A, 0x062C, 0x062D, 0x062C, 0x0645, 0x062D, 0x062C, 0x062D, 0x0645, - 0x062E, 0x062C, 0x062E, 0x062D, 0x062E, 0x0645, 0x0633, 0x062C, 0x0633, - 0x062D, 0x0633, 0x062E, 0x0633, 0x0645, 0x0635, 0x062D, 0x0635, 0x0645, - 0x0636, 0x062C, 0x0636, 0x062D, 0x0636, 0x062E, 0x0636, 0x0645, 0x0637, - 0x062D, 0x0637, 0x0645, 0x0638, 0x0645, 0x0639, 0x062C, 0x0639, 0x0645, - 0x063A, 0x062C, 0x063A, 0x0645, 0x0641, 0x062C, 0x0641, 0x062D, 0x0641, - 0x062E, 0x0641, 0x0645, 0x0641, 0x0649, 0x0641, 0x064A, 0x0642, 0x062D, - 0x0642, 0x0645, 0x0642, 0x0649, 0x0642, 0x064A, 0x0643, 0x0627, 0x0643, - 0x062C, 0x0643, 0x062D, 0x0643, 0x062E, 0x0643, 0x0644, 0x0643, 0x0645, - 0x0643, 0x0649, 0x0643, 0x064A, 0x0644, 0x062C, 0x0644, 0x062D, 0x0644, - 0x062E, 0x0644, 0x0645, 0x0644, 0x0649, 0x0644, 0x064A, 0x0645, 0x062C, - 0x0645, 0x062D, 0x0645, 0x062E, 0x0645, 0x0645, 0x0645, 0x0649, 0x0645, - 0x064A, 0x0646, 0x062C, 0x0646, 0x062D, 0x0646, 0x062E, 0x0646, 0x0645, - 0x0646, 0x0649, 0x0646, 0x064A, 0x0647, 0x062C, 0x0647, 0x0645, 0x0647, - 0x0649, 0x0647, 0x064A, 0x064A, 0x062C, 0x064A, 0x062D, 0x064A, 0x062E, - 0x064A, 0x0645, 0x064A, 0x0649, 0x064A, 0x064A, 0x0630, 0x0670, 0x0631, - 0x0670, 0x0649, 0x0670, 0x064C, 0x0651, 0x064D, 0x0651, 0x064E, 0x0651, - 0x064F, 0x0651, 0x0650, 0x0651, 0x0651, 0x0670, 0x0626, 0x0631, 0x0626, - 0x0632, 0x0626, 0x0645, 0x0626, 0x0646, 0x0626, 0x0649, 0x0626, 0x064A, - 0x0628, 0x0631, 0x0628, 0x0632, 0x0628, 0x0645, 0x0628, 0x0646, 0x0628, - 0x0649, 0x0628, 0x064A, 0x062A, 0x0631, 0x062A, 0x0632, 0x062A, 0x0645, - 0x062A, 0x0646, 0x062A, 0x0649, 0x062A, 0x064A, 0x062B, 0x0631, 0x062B, - 0x0632, 0x062B, 0x0645, 0x062B, 0x0646, 0x062B, 0x0649, 0x062B, 0x064A, - 0x0641, 0x0649, 0x0641, 0x064A, 0x0642, 0x0649, 0x0642, 0x064A, 0x0643, - 0x0627, 0x0643, 0x0644, 0x0643, 0x0645, 0x0643, 0x0649, 0x0643, 0x064A, - 0x0644, 0x0645, 0x0644, 0x0649, 0x0644, 0x064A, 0x0645, 0x0627, 0x0645, - 0x0645, 0x0646, 0x0631, 0x0646, 0x0632, 0x0646, 0x0645, 0x0646, 0x0646, - 0x0646, 0x0649, 0x0646, 0x064A, 0x0649, 0x0670, 0x064A, 0x0631, 0x064A, - 0x0632, 0x064A, 0x0645, 0x064A, 0x0646, 0x064A, 0x0649, 0x064A, 0x064A, - 0x0626, 0x062C, 0x0626, 0x062D, 0x0626, 0x062E, 0x0626, 0x0645, 0x0626, - 0x0647, 0x0628, 0x062C, 0x0628, 0x062D, 0x0628, 0x062E, 0x0628, 0x0645, - 0x0628, 0x0647, 0x062A, 0x062C, 0x062A, 0x062D, 0x062A, 0x062E, 0x062A, - 0x0645, 0x062A, 0x0647, 0x062B, 0x0645, 0x062C, 0x062D, 0x062C, 0x0645, - 0x062D, 0x062C, 0x062D, 0x0645, 0x062E, 0x062C, 0x062E, 0x0645, 0x0633, - 0x062C, 0x0633, 0x062D, 0x0633, 0x062E, 0x0633, 0x0645, 0x0635, 0x062D, - 0x0635, 0x062E, 0x0635, 0x0645, 0x0636, 0x062C, 0x0636, 0x062D, 0x0636, - 0x062E, 0x0636, 0x0645, 0x0637, 0x062D, 0x0638, 0x0645, 0x0639, 0x062C, - 0x0639, 0x0645, 0x063A, 0x062C, 0x063A, 0x0645, 0x0641, 0x062C, 0x0641, - 0x062D, 0x0641, 0x062E, 0x0641, 0x0645, 0x0642, 0x062D, 0x0642, 0x0645, - 0x0643, 0x062C, 0x0643, 0x062D, 0x0643, 0x062E, 0x0643, 0x0644, 0x0643, - 0x0645, 0x0644, 0x062C, 0x0644, 0x062D, 0x0644, 0x062E, 0x0644, 0x0645, - 0x0644, 0x0647, 0x0645, 0x062C, 0x0645, 0x062D, 0x0645, 0x062E, 0x0645, - 0x0645, 0x0646, 0x062C, 0x0646, 0x062D, 0x0646, 0x062E, 0x0646, 0x0645, - 0x0646, 0x0647, 0x0647, 0x062C, 0x0647, 0x0645, 0x0647, 0x0670, 0x064A, - 0x062C, 0x064A, 0x062D, 0x064A, 0x062E, 0x064A, 0x0645, 0x064A, 0x0647, - 0x0626, 0x0645, 0x0626, 0x0647, 0x0628, 0x0645, 0x0628, 0x0647, 0x062A, - 0x0645, 0x062A, 0x0647, 0x062B, 0x0645, 0x062B, 0x0647, 0x0633, 0x0645, - 0x0633, 0x0647, 0x0634, 0x0645, 0x0634, 0x0647, 0x0643, 0x0644, 0x0643, - 0x0645, 0x0644, 0x0645, 0x0646, 0x0645, 0x0646, 0x0647, 0x064A, 0x0645, - 0x064A, 0x0647, 0x0637, 0x0649, 0x0637, 0x064A, 0x0639, 0x0649, 0x0639, - 0x064A, 0x063A, 0x0649, 0x063A, 0x064A, 0x0633, 0x0649, 0x0633, 0x064A, - 0x0634, 0x0649, 0x0634, 0x064A, 0x062D, 0x0649, 0x062D, 0x064A, 0x062C, - 0x0649, 0x062C, 0x064A, 0x062E, 0x0649, 0x062E, 0x064A, 0x0635, 0x0649, - 0x0635, 0x064A, 0x0636, 0x0649, 0x0636, 0x064A, 0x0634, 0x062C, 0x0634, - 0x062D, 0x0634, 0x062E, 0x0634, 0x0645, 0x0634, 0x0631, 0x0633, 0x0631, - 0x0635, 0x0631, 0x0636, 0x0631, 0x0637, 0x0649, 0x0637, 0x064A, 0x0639, - 0x0649, 0x0639, 0x064A, 0x063A, 0x0649, 0x063A, 0x064A, 0x0633, 0x0649, - 0x0633, 0x064A, 0x0634, 0x0649, 0x0634, 0x064A, 0x062D, 0x0649, 0x062D, - 0x064A, 0x062C, 0x0649, 0x062C, 0x064A, 0x062E, 0x0649, 0x062E, 0x064A, - 0x0635, 0x0649, 0x0635, 0x064A, 0x0636, 0x0649, 0x0636, 0x064A, 0x0634, - 0x062C, 0x0634, 0x062D, 0x0634, 0x062E, 0x0634, 0x0645, 0x0634, 0x0631, - 0x0633, 0x0631, 0x0635, 0x0631, 0x0636, 0x0631, 0x0634, 0x062C, 0x0634, - 0x062D, 0x0634, 0x062E, 0x0634, 0x0645, 0x0633, 0x0647, 0x0634, 0x0647, - 0x0637, 0x0645, 0x0633, 0x062C, 0x0633, 0x062D, 0x0633, 0x062E, 0x0634, - 0x062C, 0x0634, 0x062D, 0x0634, 0x062E, 0x0637, 0x0645, 0x0638, 0x0645, - 0x0627, 0x064B, 0x0627, 0x064B, 0x0640, 0x064B, 0x0640, 0x064E, 0x0640, - 0x064F, 0x0640, 0x0650, 0x0640, 0x0651, 0x0640, 0x0652, 0x0644, 0x0622, - 0x0644, 0x0622, 0x0644, 0x0623, 0x0644, 0x0623, 0x0644, 0x0625, 0x0644, - 0x0625, 0x0644, 0x0627, 0x0644, 0x0627}; - -const FX_WCHAR g_UnicodeData_Normalization_Map3[1164] = { - 0x0031, 0x002F, 0x0034, 0x0031, 0x002F, 0x0032, 0x0033, 0x002F, 0x0034, - 0x002E, 0x002E, 0x002E, 0x2032, 0x2032, 0x2032, 0x2035, 0x2035, 0x2035, - 0x0061, 0x002F, 0x0063, 0x0061, 0x002F, 0x0073, 0x0063, 0x002F, 0x006F, - 0x0063, 0x002F, 0x0075, 0x0054, 0x0045, 0x004C, 0x0046, 0x0041, 0x0058, - 0x0031, 0x002F, 0x0037, 0x0031, 0x002F, 0x0039, 0x0031, 0x002F, 0x0033, - 0x0032, 0x002F, 0x0033, 0x0031, 0x002F, 0x0035, 0x0032, 0x002F, 0x0035, - 0x0033, 0x002F, 0x0035, 0x0034, 0x002F, 0x0035, 0x0031, 0x002F, 0x0036, - 0x0035, 0x002F, 0x0036, 0x0031, 0x002F, 0x0038, 0x0033, 0x002F, 0x0038, - 0x0035, 0x002F, 0x0038, 0x0037, 0x002F, 0x0038, 0x0049, 0x0049, 0x0049, - 0x0056, 0x0049, 0x0049, 0x0058, 0x0049, 0x0049, 0x0069, 0x0069, 0x0069, - 0x0076, 0x0069, 0x0069, 0x0078, 0x0069, 0x0069, 0x0030, 0x2044, 0x0033, - 0x222B, 0x222B, 0x222B, 0x222E, 0x222E, 0x222E, 0x004E, 0x0055, 0x004C, - 0x0053, 0x004F, 0x0048, 0x0053, 0x0054, 0x0058, 0x0045, 0x0054, 0x0058, - 0x0045, 0x004F, 0x0054, 0x0045, 0x004E, 0x0051, 0x0041, 0x0043, 0x004B, - 0x0042, 0x0045, 0x004C, 0x0044, 0x004C, 0x0045, 0x0044, 0x0043, 0x0031, - 0x0044, 0x0043, 0x0032, 0x0044, 0x0043, 0x0033, 0x0044, 0x0043, 0x0034, - 0x004E, 0x0041, 0x004B, 0x0053, 0x0059, 0x004E, 0x0045, 0x0054, 0x0042, - 0x0043, 0x0041, 0x004E, 0x0053, 0x0055, 0x0042, 0x0045, 0x0053, 0x0043, - 0x0044, 0x0045, 0x004C, 0x0028, 0x0031, 0x0029, 0x0028, 0x0032, 0x0029, - 0x0028, 0x0033, 0x0029, 0x0028, 0x0034, 0x0029, 0x0028, 0x0035, 0x0029, - 0x0028, 0x0036, 0x0029, 0x0028, 0x0037, 0x0029, 0x0028, 0x0038, 0x0029, - 0x0028, 0x0039, 0x0029, 0x0031, 0x0030, 0x002E, 0x0031, 0x0031, 0x002E, - 0x0031, 0x0032, 0x002E, 0x0031, 0x0033, 0x002E, 0x0031, 0x0034, 0x002E, - 0x0031, 0x0035, 0x002E, 0x0031, 0x0036, 0x002E, 0x0031, 0x0037, 0x002E, - 0x0031, 0x0038, 0x002E, 0x0031, 0x0039, 0x002E, 0x0032, 0x0030, 0x002E, - 0x0028, 0x0061, 0x0029, 0x0028, 0x0062, 0x0029, 0x0028, 0x0063, 0x0029, - 0x0028, 0x0064, 0x0029, 0x0028, 0x0065, 0x0029, 0x0028, 0x0066, 0x0029, - 0x0028, 0x0067, 0x0029, 0x0028, 0x0068, 0x0029, 0x0028, 0x0069, 0x0029, - 0x0028, 0x006A, 0x0029, 0x0028, 0x006B, 0x0029, 0x0028, 0x006C, 0x0029, - 0x0028, 0x006D, 0x0029, 0x0028, 0x006E, 0x0029, 0x0028, 0x006F, 0x0029, - 0x0028, 0x0070, 0x0029, 0x0028, 0x0071, 0x0029, 0x0028, 0x0072, 0x0029, - 0x0028, 0x0073, 0x0029, 0x0028, 0x0074, 0x0029, 0x0028, 0x0075, 0x0029, - 0x0028, 0x0076, 0x0029, 0x0028, 0x0077, 0x0029, 0x0028, 0x0078, 0x0029, - 0x0028, 0x0079, 0x0029, 0x0028, 0x007A, 0x0029, 0x003A, 0x003A, 0x003D, - 0x003D, 0x003D, 0x003D, 0x0028, 0x1100, 0x0029, 0x0028, 0x1102, 0x0029, - 0x0028, 0x1103, 0x0029, 0x0028, 0x1105, 0x0029, 0x0028, 0x1106, 0x0029, - 0x0028, 0x1107, 0x0029, 0x0028, 0x1109, 0x0029, 0x0028, 0x110B, 0x0029, - 0x0028, 0x110C, 0x0029, 0x0028, 0x110E, 0x0029, 0x0028, 0x110F, 0x0029, - 0x0028, 0x1110, 0x0029, 0x0028, 0x1111, 0x0029, 0x0028, 0x1112, 0x0029, - 0x0028, 0x4E00, 0x0029, 0x0028, 0x4E8C, 0x0029, 0x0028, 0x4E09, 0x0029, - 0x0028, 0x56DB, 0x0029, 0x0028, 0x4E94, 0x0029, 0x0028, 0x516D, 0x0029, - 0x0028, 0x4E03, 0x0029, 0x0028, 0x516B, 0x0029, 0x0028, 0x4E5D, 0x0029, - 0x0028, 0x5341, 0x0029, 0x0028, 0x6708, 0x0029, 0x0028, 0x706B, 0x0029, - 0x0028, 0x6C34, 0x0029, 0x0028, 0x6728, 0x0029, 0x0028, 0x91D1, 0x0029, - 0x0028, 0x571F, 0x0029, 0x0028, 0x65E5, 0x0029, 0x0028, 0x682A, 0x0029, - 0x0028, 0x6709, 0x0029, 0x0028, 0x793E, 0x0029, 0x0028, 0x540D, 0x0029, - 0x0028, 0x7279, 0x0029, 0x0028, 0x8CA1, 0x0029, 0x0028, 0x795D, 0x0029, - 0x0028, 0x52B4, 0x0029, 0x0028, 0x4EE3, 0x0029, 0x0028, 0x547C, 0x0029, - 0x0028, 0x5B66, 0x0029, 0x0028, 0x76E3, 0x0029, 0x0028, 0x4F01, 0x0029, - 0x0028, 0x8CC7, 0x0029, 0x0028, 0x5354, 0x0029, 0x0028, 0x796D, 0x0029, - 0x0028, 0x4F11, 0x0029, 0x0028, 0x81EA, 0x0029, 0x0028, 0x81F3, 0x0029, - 0x0050, 0x0054, 0x0045, 0x0031, 0x0030, 0x6708, 0x0031, 0x0031, 0x6708, - 0x0031, 0x0032, 0x6708, 0x0065, 0x0072, 0x0067, 0x004C, 0x0054, 0x0044, - 0x30A2, 0x30FC, 0x30EB, 0x30A4, 0x30F3, 0x30C1, 0x30A6, 0x30A9, 0x30F3, - 0x30AA, 0x30F3, 0x30B9, 0x30AA, 0x30FC, 0x30E0, 0x30AB, 0x30A4, 0x30EA, - 0x30AC, 0x30ED, 0x30F3, 0x30AC, 0x30F3, 0x30DE, 0x30AE, 0x30CB, 0x30FC, - 0x30B0, 0x30E9, 0x30E0, 0x30B1, 0x30FC, 0x30B9, 0x30B3, 0x30EB, 0x30CA, - 0x30B3, 0x30FC, 0x30DD, 0x30BB, 0x30F3, 0x30C1, 0x30BB, 0x30F3, 0x30C8, - 0x30C0, 0x30FC, 0x30B9, 0x30CE, 0x30C3, 0x30C8, 0x30CF, 0x30A4, 0x30C4, - 0x30D1, 0x30FC, 0x30C4, 0x30D4, 0x30AF, 0x30EB, 0x30D5, 0x30E9, 0x30F3, - 0x30DA, 0x30CB, 0x30D2, 0x30D8, 0x30EB, 0x30C4, 0x30DA, 0x30F3, 0x30B9, - 0x30DA, 0x30FC, 0x30B8, 0x30D9, 0x30FC, 0x30BF, 0x30DC, 0x30EB, 0x30C8, - 0x30DD, 0x30F3, 0x30C9, 0x30DB, 0x30FC, 0x30EB, 0x30DB, 0x30FC, 0x30F3, - 0x30DE, 0x30A4, 0x30EB, 0x30DE, 0x30C3, 0x30CF, 0x30DE, 0x30EB, 0x30AF, - 0x30E4, 0x30FC, 0x30C9, 0x30E4, 0x30FC, 0x30EB, 0x30E6, 0x30A2, 0x30F3, - 0x30EB, 0x30D4, 0x30FC, 0x30EF, 0x30C3, 0x30C8, 0x0031, 0x0030, 0x70B9, - 0x0031, 0x0031, 0x70B9, 0x0031, 0x0032, 0x70B9, 0x0031, 0x0033, 0x70B9, - 0x0031, 0x0034, 0x70B9, 0x0031, 0x0035, 0x70B9, 0x0031, 0x0036, 0x70B9, - 0x0031, 0x0037, 0x70B9, 0x0031, 0x0038, 0x70B9, 0x0031, 0x0039, 0x70B9, - 0x0032, 0x0030, 0x70B9, 0x0032, 0x0031, 0x70B9, 0x0032, 0x0032, 0x70B9, - 0x0032, 0x0033, 0x70B9, 0x0032, 0x0034, 0x70B9, 0x0068, 0x0050, 0x0061, - 0x0062, 0x0061, 0x0072, 0x0064, 0x006D, 0x00B2, 0x0064, 0x006D, 0x00B3, - 0x0063, 0x0061, 0x006C, 0x006B, 0x0048, 0x007A, 0x004D, 0x0048, 0x007A, - 0x0047, 0x0048, 0x007A, 0x0054, 0x0048, 0x007A, 0x006D, 0x006D, 0x00B2, - 0x0063, 0x006D, 0x00B2, 0x006B, 0x006D, 0x00B2, 0x006D, 0x006D, 0x00B3, - 0x0063, 0x006D, 0x00B3, 0x006B, 0x006D, 0x00B3, 0x006D, 0x2215, 0x0073, - 0x006B, 0x0050, 0x0061, 0x004D, 0x0050, 0x0061, 0x0047, 0x0050, 0x0061, - 0x0072, 0x0061, 0x0064, 0x0043, 0x006F, 0x002E, 0x006C, 0x006F, 0x0067, - 0x006D, 0x0069, 0x006C, 0x006D, 0x006F, 0x006C, 0x0050, 0x0050, 0x004D, - 0x0056, 0x2215, 0x006D, 0x0041, 0x2215, 0x006D, 0x0031, 0x0030, 0x65E5, - 0x0031, 0x0031, 0x65E5, 0x0031, 0x0032, 0x65E5, 0x0031, 0x0033, 0x65E5, - 0x0031, 0x0034, 0x65E5, 0x0031, 0x0035, 0x65E5, 0x0031, 0x0036, 0x65E5, - 0x0031, 0x0037, 0x65E5, 0x0031, 0x0038, 0x65E5, 0x0031, 0x0039, 0x65E5, - 0x0032, 0x0030, 0x65E5, 0x0032, 0x0031, 0x65E5, 0x0032, 0x0032, 0x65E5, - 0x0032, 0x0033, 0x65E5, 0x0032, 0x0034, 0x65E5, 0x0032, 0x0035, 0x65E5, - 0x0032, 0x0036, 0x65E5, 0x0032, 0x0037, 0x65E5, 0x0032, 0x0038, 0x65E5, - 0x0032, 0x0039, 0x65E5, 0x0033, 0x0030, 0x65E5, 0x0033, 0x0031, 0x65E5, - 0x0067, 0x0061, 0x006C, 0x0066, 0x0066, 0x0069, 0x0066, 0x0066, 0x006C, - 0x0640, 0x064E, 0x0651, 0x0640, 0x064F, 0x0651, 0x0640, 0x0650, 0x0651, - 0x062A, 0x062C, 0x0645, 0x062A, 0x062D, 0x062C, 0x062A, 0x062D, 0x062C, - 0x062A, 0x062D, 0x0645, 0x062A, 0x062E, 0x0645, 0x062A, 0x0645, 0x062C, - 0x062A, 0x0645, 0x062D, 0x062A, 0x0645, 0x062E, 0x062C, 0x0645, 0x062D, - 0x062C, 0x0645, 0x062D, 0x062D, 0x0645, 0x064A, 0x062D, 0x0645, 0x0649, - 0x0633, 0x062D, 0x062C, 0x0633, 0x062C, 0x062D, 0x0633, 0x062C, 0x0649, - 0x0633, 0x0645, 0x062D, 0x0633, 0x0645, 0x062D, 0x0633, 0x0645, 0x062C, - 0x0633, 0x0645, 0x0645, 0x0633, 0x0645, 0x0645, 0x0635, 0x062D, 0x062D, - 0x0635, 0x062D, 0x062D, 0x0635, 0x0645, 0x0645, 0x0634, 0x062D, 0x0645, - 0x0634, 0x062D, 0x0645, 0x0634, 0x062C, 0x064A, 0x0634, 0x0645, 0x062E, - 0x0634, 0x0645, 0x062E, 0x0634, 0x0645, 0x0645, 0x0634, 0x0645, 0x0645, - 0x0636, 0x062D, 0x0649, 0x0636, 0x062E, 0x0645, 0x0636, 0x062E, 0x0645, - 0x0637, 0x0645, 0x062D, 0x0637, 0x0645, 0x062D, 0x0637, 0x0645, 0x0645, - 0x0637, 0x0645, 0x064A, 0x0639, 0x062C, 0x0645, 0x0639, 0x0645, 0x0645, - 0x0639, 0x0645, 0x0645, 0x0639, 0x0645, 0x0649, 0x063A, 0x0645, 0x0645, - 0x063A, 0x0645, 0x064A, 0x063A, 0x0645, 0x0649, 0x0641, 0x062E, 0x0645, - 0x0641, 0x062E, 0x0645, 0x0642, 0x0645, 0x062D, 0x0642, 0x0645, 0x0645, - 0x0644, 0x062D, 0x0645, 0x0644, 0x062D, 0x064A, 0x0644, 0x062D, 0x0649, - 0x0644, 0x062C, 0x062C, 0x0644, 0x062C, 0x062C, 0x0644, 0x062E, 0x0645, - 0x0644, 0x062E, 0x0645, 0x0644, 0x0645, 0x062D, 0x0644, 0x0645, 0x062D, - 0x0645, 0x062D, 0x062C, 0x0645, 0x062D, 0x0645, 0x0645, 0x062D, 0x064A, - 0x0645, 0x062C, 0x062D, 0x0645, 0x062C, 0x0645, 0x0645, 0x062E, 0x062C, - 0x0645, 0x062E, 0x0645, 0x0645, 0x062C, 0x062E, 0x0647, 0x0645, 0x062C, - 0x0647, 0x0645, 0x0645, 0x0646, 0x062D, 0x0645, 0x0646, 0x062D, 0x0649, - 0x0646, 0x062C, 0x0645, 0x0646, 0x062C, 0x0645, 0x0646, 0x062C, 0x0649, - 0x0646, 0x0645, 0x064A, 0x0646, 0x0645, 0x0649, 0x064A, 0x0645, 0x0645, - 0x064A, 0x0645, 0x0645, 0x0628, 0x062E, 0x064A, 0x062A, 0x062C, 0x064A, - 0x062A, 0x062C, 0x0649, 0x062A, 0x062E, 0x064A, 0x062A, 0x062E, 0x0649, - 0x062A, 0x0645, 0x064A, 0x062A, 0x0645, 0x0649, 0x062C, 0x0645, 0x064A, - 0x062C, 0x062D, 0x0649, 0x062C, 0x0645, 0x0649, 0x0633, 0x062E, 0x0649, - 0x0635, 0x062D, 0x064A, 0x0634, 0x062D, 0x064A, 0x0636, 0x062D, 0x064A, - 0x0644, 0x062C, 0x064A, 0x0644, 0x0645, 0x064A, 0x064A, 0x062D, 0x064A, - 0x064A, 0x062C, 0x064A, 0x064A, 0x0645, 0x064A, 0x0645, 0x0645, 0x064A, - 0x0642, 0x0645, 0x064A, 0x0646, 0x062D, 0x064A, 0x0642, 0x0645, 0x062D, - 0x0644, 0x062D, 0x0645, 0x0639, 0x0645, 0x064A, 0x0643, 0x0645, 0x064A, - 0x0646, 0x062C, 0x062D, 0x0645, 0x062E, 0x064A, 0x0644, 0x062C, 0x0645, - 0x0643, 0x0645, 0x0645, 0x0644, 0x062C, 0x0645, 0x0646, 0x062C, 0x062D, - 0x062C, 0x062D, 0x064A, 0x062D, 0x062C, 0x064A, 0x0645, 0x062C, 0x064A, - 0x0641, 0x0645, 0x064A, 0x0628, 0x062D, 0x064A, 0x0643, 0x0645, 0x0645, - 0x0639, 0x062C, 0x0645, 0x0635, 0x0645, 0x0645, 0x0633, 0x062E, 0x064A, - 0x0646, 0x062C, 0x064A, 0x0635, 0x0644, 0x06D2, 0x0642, 0x0644, 0x06D2, - 0x0635, 0x0644, 0x0649}; - -const FX_WCHAR g_UnicodeData_Normalization_Map4[488] = { - 0x0004, 0x2032, 0x2032, 0x2032, 0x2032, 0x0004, 0x0031, 0x002F, 0x0031, - 0x0030, 0x0004, 0x0056, 0x0049, 0x0049, 0x0049, 0x0004, 0x0076, 0x0069, - 0x0069, 0x0069, 0x0004, 0x0028, 0x0031, 0x0030, 0x0029, 0x0004, 0x0028, - 0x0031, 0x0031, 0x0029, 0x0004, 0x0028, 0x0031, 0x0032, 0x0029, 0x0004, - 0x0028, 0x0031, 0x0033, 0x0029, 0x0004, 0x0028, 0x0031, 0x0034, 0x0029, - 0x0004, 0x0028, 0x0031, 0x0035, 0x0029, 0x0004, 0x0028, 0x0031, 0x0036, - 0x0029, 0x0004, 0x0028, 0x0031, 0x0037, 0x0029, 0x0004, 0x0028, 0x0031, - 0x0038, 0x0029, 0x0004, 0x0028, 0x0031, 0x0039, 0x0029, 0x0004, 0x0028, - 0x0032, 0x0030, 0x0029, 0x0004, 0x222B, 0x222B, 0x222B, 0x222B, 0x0004, - 0x0028, 0x1100, 0x1161, 0x0029, 0x0004, 0x0028, 0x1102, 0x1161, 0x0029, - 0x0004, 0x0028, 0x1103, 0x1161, 0x0029, 0x0004, 0x0028, 0x1105, 0x1161, - 0x0029, 0x0004, 0x0028, 0x1106, 0x1161, 0x0029, 0x0004, 0x0028, 0x1107, - 0x1161, 0x0029, 0x0004, 0x0028, 0x1109, 0x1161, 0x0029, 0x0004, 0x0028, - 0x110B, 0x1161, 0x0029, 0x0004, 0x0028, 0x110C, 0x1161, 0x0029, 0x0004, - 0x0028, 0x110E, 0x1161, 0x0029, 0x0004, 0x0028, 0x110F, 0x1161, 0x0029, - 0x0004, 0x0028, 0x1110, 0x1161, 0x0029, 0x0004, 0x0028, 0x1111, 0x1161, - 0x0029, 0x0004, 0x0028, 0x1112, 0x1161, 0x0029, 0x0004, 0x0028, 0x110C, - 0x116E, 0x0029, 0x0007, 0x0028, 0x110B, 0x1169, 0x110C, 0x1165, 0x11AB, - 0x0029, 0x0006, 0x0028, 0x110B, 0x1169, 0x1112, 0x116E, 0x0029, 0x0005, - 0x110E, 0x1161, 0x11B7, 0x1100, 0x1169, 0x0004, 0x110C, 0x116E, 0x110B, - 0x1174, 0x0004, 0x30A2, 0x30D1, 0x30FC, 0x30C8, 0x0004, 0x30A2, 0x30EB, - 0x30D5, 0x30A1, 0x0004, 0x30A2, 0x30F3, 0x30DA, 0x30A2, 0x0004, 0x30A4, - 0x30CB, 0x30F3, 0x30B0, 0x0005, 0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9, - 0x0004, 0x30A8, 0x30FC, 0x30AB, 0x30FC, 0x0004, 0x30AB, 0x30E9, 0x30C3, - 0x30C8, 0x0004, 0x30AB, 0x30ED, 0x30EA, 0x30FC, 0x0004, 0x30AD, 0x30E5, - 0x30EA, 0x30FC, 0x0004, 0x30AE, 0x30EB, 0x30C0, 0x30FC, 0x0005, 0x30AD, - 0x30ED, 0x30B0, 0x30E9, 0x30E0, 0x0006, 0x30AD, 0x30ED, 0x30E1, 0x30FC, - 0x30C8, 0x30EB, 0x0005, 0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8, 0x0005, - 0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3, 0x0005, 0x30AF, 0x30EB, 0x30BC, - 0x30A4, 0x30ED, 0x0004, 0x30AF, 0x30ED, 0x30FC, 0x30CD, 0x0004, 0x30B5, - 0x30A4, 0x30AF, 0x30EB, 0x0005, 0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0, - 0x0004, 0x30B7, 0x30EA, 0x30F3, 0x30B0, 0x0005, 0x30D1, 0x30FC, 0x30BB, - 0x30F3, 0x30C8, 0x0004, 0x30D0, 0x30FC, 0x30EC, 0x30EB, 0x0005, 0x30D4, - 0x30A2, 0x30B9, 0x30C8, 0x30EB, 0x0005, 0x30D5, 0x30A1, 0x30E9, 0x30C3, - 0x30C9, 0x0004, 0x30D5, 0x30A3, 0x30FC, 0x30C8, 0x0005, 0x30D6, 0x30C3, - 0x30B7, 0x30A7, 0x30EB, 0x0005, 0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB, - 0x0004, 0x30DD, 0x30A4, 0x30F3, 0x30C8, 0x0004, 0x30DE, 0x30A4, 0x30AF, - 0x30ED, 0x0005, 0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3, 0x0004, 0x30DF, - 0x30AF, 0x30ED, 0x30F3, 0x0005, 0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB, - 0x0004, 0x30E1, 0x30AC, 0x30C8, 0x30F3, 0x0004, 0x30E1, 0x30FC, 0x30C8, - 0x30EB, 0x0004, 0x30EA, 0x30C3, 0x30C8, 0x30EB, 0x0004, 0x30EB, 0x30FC, - 0x30D6, 0x30EB, 0x0005, 0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3, 0x0004, - 0x682A, 0x5F0F, 0x4F1A, 0x793E, 0x0004, 0x006B, 0x0063, 0x0061, 0x006C, - 0x0004, 0x006D, 0x2215, 0x0073, 0x00B2, 0x0005, 0x0072, 0x0061, 0x0064, - 0x2215, 0x0073, 0x0006, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00B2, - 0x0004, 0x0061, 0x002E, 0x006D, 0x002E, 0x0004, 0x0043, 0x2215, 0x006B, - 0x0067, 0x0004, 0x0070, 0x002E, 0x006D, 0x002E, 0x0004, 0x0627, 0x0644, - 0x0644, 0x0647, 0x0004, 0x0627, 0x0643, 0x0628, 0x0631, 0x0004, 0x0645, - 0x062D, 0x0645, 0x062F, 0x0004, 0x0635, 0x0644, 0x0639, 0x0645, 0x0004, - 0x0631, 0x0633, 0x0648, 0x0644, 0x0004, 0x0639, 0x0644, 0x064A, 0x0647, - 0x0004, 0x0648, 0x0633, 0x0644, 0x0645, 0x0012, 0x0635, 0x0644, 0x0649, - 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, - 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0x0008, 0x062C, 0x0644, - 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647, 0x0004, 0x0631, 0x06CC, - 0x0627, 0x0644}; diff --git a/core/src/fpdftext/unicodenormalizationdata.h b/core/src/fpdftext/unicodenormalizationdata.h deleted file mode 100644 index c0f07b35ab..0000000000 --- a/core/src/fpdftext/unicodenormalizationdata.h +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FPDFTEXT_UNICODENORMALIZATIONDATA_H_ -#define CORE_SRC_FPDFTEXT_UNICODENORMALIZATIONDATA_H_ - -#include "core/include/fxcrt/fx_system.h" - -extern const FX_WCHAR g_UnicodeData_Normalization[]; -extern const FX_WCHAR g_UnicodeData_Normalization_Map1[]; -extern const FX_WCHAR g_UnicodeData_Normalization_Map2[]; -extern const FX_WCHAR g_UnicodeData_Normalization_Map3[]; -extern const FX_WCHAR g_UnicodeData_Normalization_Map4[]; - -#endif // CORE_SRC_FPDFTEXT_UNICODENORMALIZATIONDATA_H_ diff --git a/core/src/fxcodec/DEPS b/core/src/fxcodec/DEPS deleted file mode 100644 index a88b3294a9..0000000000 --- a/core/src/fxcodec/DEPS +++ /dev/null @@ -1,8 +0,0 @@ -include_rules = [ - '+third_party/lcms2-2.6', - '+third_party/libjpeg/jpeglib.h', - # For non-standalone builds that may use libjpeg_turbo. - '+third_party/libjpeg_turbo/jpeglib.h', - '+third_party/libopenjpeg20', - '+third_party/zlib_v128', -] diff --git a/core/src/fxcodec/codec/DEPS b/core/src/fxcodec/codec/DEPS deleted file mode 100644 index 495d288992..0000000000 --- a/core/src/fxcodec/codec/DEPS +++ /dev/null @@ -1,4 +0,0 @@ -include_rules = [ - '+third_party/libpng16/png.h', - '+third_party/libtiff/tiffiop.h', -] diff --git a/core/src/fxcodec/codec/codec_int.h b/core/src/fxcodec/codec/codec_int.h deleted file mode 100644 index 5c784adad6..0000000000 --- a/core/src/fxcodec/codec/codec_int.h +++ /dev/null @@ -1,428 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_CODEC_CODEC_INT_H_ -#define CORE_SRC_FXCODEC_CODEC_CODEC_INT_H_ - -#include - -#include -#include -#include -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/src/fxcodec/jbig2/JBig2_Context.h" -#include "third_party/libopenjpeg20/openjpeg.h" // For OPJ_SIZE_T. - -class CFX_IccProfileCache; -class CFX_IccTransformCache; -class CPDF_ColorSpace; - -class CCodec_BasicModule : public ICodec_BasicModule { - public: - // ICodec_BasicModule: - FX_BOOL RunLengthEncode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) override; - FX_BOOL A85Encode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) override; - ICodec_ScanlineDecoder* CreateRunLengthDecoder(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc) override; -}; - -class CCodec_ScanlineDecoder : public ICodec_ScanlineDecoder { - public: - CCodec_ScanlineDecoder(); - ~CCodec_ScanlineDecoder() override; - - // ICodec_ScanlineDecoder - FX_DWORD GetSrcOffset() override { return -1; } - void DownScale(int dest_width, int dest_height) override; - const uint8_t* GetScanline(int line) override; - FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) override; - int GetWidth() override { return m_OutputWidth; } - int GetHeight() override { return m_OutputHeight; } - int CountComps() override { return m_nComps; } - int GetBPC() override { return m_bpc; } - FX_BOOL IsColorTransformed() override { return m_bColorTransformed; } - void ClearImageData() override { m_pDataCache.reset(); } - - protected: - class ImageDataCache { - public: - ImageDataCache(int width, int height, FX_DWORD pitch); - ~ImageDataCache(); - - bool AllocateCache(); - void AppendLine(const uint8_t* line); - - int NumLines() const { return m_nCachedLines; } - const uint8_t* GetLine(int line) const; - bool IsSameDimensions(int width, int height) const { - return width == m_Width && height == m_Height; - } - - private: - bool IsValid() const { return m_Data.get() != nullptr; } - - const int m_Width; - const int m_Height; - const FX_DWORD m_Pitch; - int m_nCachedLines; - std::unique_ptr m_Data; - }; - - virtual FX_BOOL v_Rewind() = 0; - virtual uint8_t* v_GetNextLine() = 0; - virtual void v_DownScale(int dest_width, int dest_height) = 0; - - uint8_t* ReadNextLine(); - - int m_OrigWidth; - int m_OrigHeight; - int m_DownScale; - int m_OutputWidth; - int m_OutputHeight; - int m_nComps; - int m_bpc; - FX_DWORD m_Pitch; - FX_BOOL m_bColorTransformed; - int m_NextLine; - uint8_t* m_pLastScanline; - std::unique_ptr m_pDataCache; -}; - -class CCodec_FaxModule : public ICodec_FaxModule { - public: - // ICodec_FaxModule: - ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int K, - FX_BOOL EndOfLine, - FX_BOOL EncodedByteAlign, - FX_BOOL BlackIs1, - int Columns, - int Rows) override; - FX_BOOL Encode(const uint8_t* src_buf, - int width, - int height, - int pitch, - uint8_t*& dest_buf, - FX_DWORD& dest_size) override; -}; - -class CCodec_FlateModule : public ICodec_FlateModule { - public: - virtual ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc, - int predictor, - int Colors, - int BitsPerComponent, - int Columns); - virtual FX_DWORD FlateOrLZWDecode(FX_BOOL bLZW, - const uint8_t* src_buf, - FX_DWORD src_size, - FX_BOOL bEarlyChange, - int predictor, - int Colors, - int BitsPerComponent, - int Columns, - FX_DWORD estimated_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size); - virtual FX_BOOL Encode(const uint8_t* src_buf, - FX_DWORD src_size, - int predictor, - int Colors, - int BitsPerComponent, - int Columns, - uint8_t*& dest_buf, - FX_DWORD& dest_size); - virtual FX_BOOL Encode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size); -}; - -class CCodec_JpegModule : public ICodec_JpegModule { - public: - CCodec_JpegModule() {} - ICodec_ScanlineDecoder* CreateDecoder(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - FX_BOOL ColorTransform) override; - FX_BOOL LoadInfo(const uint8_t* src_buf, - FX_DWORD src_size, - int& width, - int& height, - int& num_components, - int& bits_per_components, - FX_BOOL& color_transform, - uint8_t** icc_buf_ptr, - FX_DWORD* icc_length) override; - FX_BOOL Encode(const CFX_DIBSource* pSource, - uint8_t*& dest_buf, - FX_STRSIZE& dest_size, - int quality, - const uint8_t* icc_buf, - FX_DWORD icc_length) override; - void* Start() override; - void Finish(void* pContext) override; - void Input(void* pContext, - const uint8_t* src_buf, - FX_DWORD src_size) override; -#ifndef PDF_ENABLE_XFA - int ReadHeader(void* pContext, int* width, int* height, int* nComps) override; -#else // PDF_ENABLE_XFA - int ReadHeader(void* pContext, - int* width, - int* height, - int* nComps, - CFX_DIBAttribute* pAttribute) override; -#endif // PDF_ENABLE_XFA - int StartScanline(void* pContext, int down_scale) override; - FX_BOOL ReadScanline(void* pContext, uint8_t* dest_buf) override; - FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr) override; -}; - -#ifdef PDF_ENABLE_XFA -#define PNG_ERROR_SIZE 256 -class CCodec_PngModule : public ICodec_PngModule { - public: - CCodec_PngModule() { FXSYS_memset(m_szLastError, '\0', PNG_ERROR_SIZE); } - - virtual void* Start(void* pModule); - virtual void Finish(void* pContext); - virtual FX_BOOL Input(void* pContext, - const uint8_t* src_buf, - FX_DWORD src_size, - CFX_DIBAttribute* pAttribute); - - protected: - FX_CHAR m_szLastError[PNG_ERROR_SIZE]; -}; -class CCodec_GifModule : public ICodec_GifModule { - public: - CCodec_GifModule() { FXSYS_memset(m_szLastError, '\0', 256); } - virtual void* Start(void* pModule); - virtual void Finish(void* pContext); - virtual FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr); - virtual void Input(void* pContext, const uint8_t* src_buf, FX_DWORD src_size); - - virtual int32_t ReadHeader(void* pContext, - int* width, - int* height, - int* pal_num, - void** pal_pp, - int* bg_index, - CFX_DIBAttribute* pAttribute); - - virtual int32_t LoadFrameInfo(void* pContext, int* frame_num); - - virtual int32_t LoadFrame(void* pContext, - int frame_num, - CFX_DIBAttribute* pAttribute); - - protected: - FX_CHAR m_szLastError[256]; -}; -class CCodec_BmpModule : public ICodec_BmpModule { - public: - CCodec_BmpModule() { FXSYS_memset(m_szLastError, 0, sizeof(m_szLastError)); } - void* Start(void* pModule) override; - void Finish(void* pContext) override; - FX_DWORD GetAvailInput(void* pContext, uint8_t** avail_buf_ptr) override; - void Input(void* pContext, - const uint8_t* src_buf, - FX_DWORD src_size) override; - int32_t ReadHeader(void* pContext, - int32_t* width, - int32_t* height, - FX_BOOL* tb_flag, - int32_t* components, - int32_t* pal_num, - FX_DWORD** pal_pp, - CFX_DIBAttribute* pAttribute) override; - int32_t LoadImage(void* pContext) override; - - protected: - FX_CHAR m_szLastError[256]; -}; -#endif // PDF_ENABLE_XFA - -class CCodec_IccModule : public ICodec_IccModule { - public: - ~CCodec_IccModule() override; - - // ICodec_IccModule: - IccCS GetProfileCS(const uint8_t* pProfileData, - unsigned int dwProfileSize) override; - IccCS GetProfileCS(IFX_FileRead* pFile) override; - void* CreateTransform(ICodec_IccModule::IccParam* pInputParam, - ICodec_IccModule::IccParam* pOutputParam, - ICodec_IccModule::IccParam* pProofParam = NULL, - FX_DWORD dwIntent = Icc_INTENT_PERCEPTUAL, - FX_DWORD dwFlag = Icc_FLAGS_DEFAULT, - FX_DWORD dwPrfIntent = Icc_INTENT_ABSOLUTE_COLORIMETRIC, - FX_DWORD dwPrfFlag = Icc_FLAGS_SOFTPROOFING) override; - void* CreateTransform_sRGB( - const uint8_t* pProfileData, - FX_DWORD dwProfileSize, - FX_DWORD& nComponents, - int32_t intent = 0, - FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT) override; - void* CreateTransform_CMYK( - const uint8_t* pSrcProfileData, - FX_DWORD dwSrcProfileSize, - FX_DWORD& nSrcComponents, - const uint8_t* pDstProfileData, - FX_DWORD dwDstProfileSize, - int32_t intent = 0, - FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT, - FX_DWORD dwDstFormat = Icc_FORMAT_DEFAULT) override; - void DestroyTransform(void* pTransform) override; - void Translate(void* pTransform, - FX_FLOAT* pSrcValues, - FX_FLOAT* pDestValues) override; - void TranslateScanline(void* pTransform, - uint8_t* pDest, - const uint8_t* pSrc, - int pixels) override; - void SetComponents(FX_DWORD nComponents) override { - m_nComponents = nComponents; - } - - protected: - enum Icc_CLASS { - Icc_CLASS_INPUT = 0, - Icc_CLASS_OUTPUT, - Icc_CLASS_PROOF, - Icc_CLASS_MAX - }; - void* CreateProfile(ICodec_IccModule::IccParam* pIccParam, - Icc_CLASS ic, - CFX_BinaryBuf* pTransformKey); - - FX_DWORD m_nComponents; - std::map m_MapTranform; - std::map m_MapProfile; -}; - -class CCodec_JpxModule : public ICodec_JpxModule { - public: - CCodec_JpxModule(); - ~CCodec_JpxModule() override; - - // ICodec_JpxModule: - CJPX_Decoder* CreateDecoder(const uint8_t* src_buf, - FX_DWORD src_size, - CPDF_ColorSpace* cs) override; - void GetImageInfo(CJPX_Decoder* pDecoder, - FX_DWORD* width, - FX_DWORD* height, - FX_DWORD* components) override; - bool Decode(CJPX_Decoder* pDecoder, - uint8_t* dest_data, - int pitch, - const std::vector& offsets) override; - void DestroyDecoder(CJPX_Decoder* pDecoder) override; -}; - -#ifdef PDF_ENABLE_XFA -class CCodec_TiffModule : public ICodec_TiffModule { - public: - // ICodec_TiffModule - void* CreateDecoder(IFX_FileRead* file_ptr) override; - void GetFrames(void* ctx, int32_t& frames) override; - FX_BOOL LoadFrameInfo(void* ctx, - int32_t frame, - FX_DWORD& width, - FX_DWORD& height, - FX_DWORD& comps, - FX_DWORD& bpc, - CFX_DIBAttribute* pAttribute) override; - FX_BOOL Decode(void* ctx, class CFX_DIBitmap* pDIBitmap) override; - void DestroyDecoder(void* ctx) override; - - protected: - ~CCodec_TiffModule() override {} -}; -#endif // PDF_ENABLE_XFA - -class CCodec_Jbig2Context { - public: - CCodec_Jbig2Context(); - ~CCodec_Jbig2Context() {} - - FX_DWORD m_width; - FX_DWORD m_height; - CPDF_StreamAcc* m_pGlobalStream; - CPDF_StreamAcc* m_pSrcStream; - uint8_t* m_dest_buf; - FX_DWORD m_dest_pitch; - IFX_Pause* m_pPause; - CJBig2_Context* m_pContext; - CJBig2_Image* m_dest_image; -}; -class CCodec_Jbig2Module : public ICodec_Jbig2Module { - public: - CCodec_Jbig2Module() {} - ~CCodec_Jbig2Module() override; - - // ICodec_Jbig2Module - void* CreateJbig2Context() override; - FXCODEC_STATUS StartDecode(void* pJbig2Context, - CFX_PrivateData* pPrivateData, - FX_DWORD width, - FX_DWORD height, - CPDF_StreamAcc* src_stream, - CPDF_StreamAcc* global_stream, - uint8_t* dest_buf, - FX_DWORD dest_pitch, - IFX_Pause* pPause) override; - FXCODEC_STATUS ContinueDecode(void* pJbig2Context, - IFX_Pause* pPause) override; - void DestroyJbig2Context(void* pJbig2Context) override; -}; - -struct DecodeData { - public: - DecodeData(unsigned char* src_data, OPJ_SIZE_T src_size) - : src_data(src_data), src_size(src_size), offset(0) {} - unsigned char* src_data; - OPJ_SIZE_T src_size; - OPJ_SIZE_T offset; -}; - -void sycc420_to_rgb(opj_image_t* img); - -/* Wrappers for C-style callbacks. */ -OPJ_SIZE_T opj_read_from_memory(void* p_buffer, - OPJ_SIZE_T nb_bytes, - void* p_user_data); -OPJ_SIZE_T opj_write_from_memory(void* p_buffer, - OPJ_SIZE_T nb_bytes, - void* p_user_data); -OPJ_OFF_T opj_skip_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data); -OPJ_BOOL opj_seek_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data); - -#endif // CORE_SRC_FXCODEC_CODEC_CODEC_INT_H_ diff --git a/core/src/fxcodec/codec/fx_codec.cpp b/core/src/fxcodec/codec/fx_codec.cpp deleted file mode 100644 index 17e665d608..0000000000 --- a/core/src/fxcodec/codec/fx_codec.cpp +++ /dev/null @@ -1,490 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" - -#include -#include - -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/src/fxcodec/codec/codec_int.h" -#include "third_party/base/logging.h" - -CCodec_ModuleMgr::CCodec_ModuleMgr() - : m_pBasicModule(new CCodec_BasicModule), - m_pFaxModule(new CCodec_FaxModule), - m_pJpegModule(new CCodec_JpegModule), - m_pJpxModule(new CCodec_JpxModule), - m_pJbig2Module(new CCodec_Jbig2Module), - m_pIccModule(new CCodec_IccModule), -#ifdef PDF_ENABLE_XFA - m_pPngModule(new CCodec_PngModule), - m_pGifModule(new CCodec_GifModule), - m_pBmpModule(new CCodec_BmpModule), - m_pTiffModule(new CCodec_TiffModule), -#endif // PDF_ENABLE_XFA - m_pFlateModule(new CCodec_FlateModule) { -} - -CCodec_ScanlineDecoder::ImageDataCache::ImageDataCache(int width, - int height, - FX_DWORD pitch) - : m_Width(width), m_Height(height), m_Pitch(pitch), m_nCachedLines(0) {} - -CCodec_ScanlineDecoder::ImageDataCache::~ImageDataCache() { -} - -bool CCodec_ScanlineDecoder::ImageDataCache::AllocateCache() { - if (m_Pitch == 0 || m_Height < 0) - return false; - - FX_SAFE_SIZE_T size = m_Pitch; - size *= m_Height; - if (!size.IsValid()) - return false; - - m_Data.reset(FX_TryAlloc(uint8_t, size.ValueOrDie())); - return IsValid(); -} - -void CCodec_ScanlineDecoder::ImageDataCache::AppendLine(const uint8_t* line) { - // If the callers adds more lines than there is room, fail. - if (m_Pitch == 0 || m_nCachedLines >= m_Height) { - NOTREACHED(); - return; - } - - size_t offset = m_Pitch; - FXSYS_memcpy(m_Data.get() + offset * m_nCachedLines, line, m_Pitch); - ++m_nCachedLines; -} - -const uint8_t* CCodec_ScanlineDecoder::ImageDataCache::GetLine(int line) const { - if (m_Pitch == 0 || line < 0 || line >= m_nCachedLines) - return nullptr; - - size_t offset = m_Pitch; - return m_Data.get() + offset * line; -} - -CCodec_ScanlineDecoder::CCodec_ScanlineDecoder() - : m_NextLine(-1), m_pLastScanline(nullptr) { -} - -CCodec_ScanlineDecoder::~CCodec_ScanlineDecoder() { -} - -const uint8_t* CCodec_ScanlineDecoder::GetScanline(int line) { - if (m_pDataCache && line < m_pDataCache->NumLines()) - return m_pDataCache->GetLine(line); - - if (m_NextLine == line + 1) - return m_pLastScanline; - - if (m_NextLine < 0 || m_NextLine > line) { - if (!v_Rewind()) - return nullptr; - m_NextLine = 0; - } - while (m_NextLine < line) { - ReadNextLine(); - m_NextLine++; - } - m_pLastScanline = ReadNextLine(); - m_NextLine++; - return m_pLastScanline; -} - -FX_BOOL CCodec_ScanlineDecoder::SkipToScanline(int line, IFX_Pause* pPause) { - if (m_pDataCache && line < m_pDataCache->NumLines()) - return FALSE; - - if (m_NextLine == line || m_NextLine == line + 1) - return FALSE; - - if (m_NextLine < 0 || m_NextLine > line) { - v_Rewind(); - m_NextLine = 0; - } - m_pLastScanline = nullptr; - while (m_NextLine < line) { - m_pLastScanline = ReadNextLine(); - m_NextLine++; - if (pPause && pPause->NeedToPauseNow()) { - return TRUE; - } - } - return FALSE; -} - -uint8_t* CCodec_ScanlineDecoder::ReadNextLine() { - uint8_t* pLine = v_GetNextLine(); - if (!pLine) - return nullptr; - - if (m_pDataCache && m_NextLine == m_pDataCache->NumLines()) - m_pDataCache->AppendLine(pLine); - return pLine; -} - -void CCodec_ScanlineDecoder::DownScale(int dest_width, int dest_height) { - dest_width = std::abs(dest_width); - dest_height = std::abs(dest_height); - v_DownScale(dest_width, dest_height); - - if (m_pDataCache && - m_pDataCache->IsSameDimensions(m_OutputWidth, m_OutputHeight)) { - return; - } - - std::unique_ptr cache( - new ImageDataCache(m_OutputWidth, m_OutputHeight, m_Pitch)); - if (!cache->AllocateCache()) - return; - - m_pDataCache = std::move(cache); -} - -FX_BOOL CCodec_BasicModule::RunLengthEncode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - return FALSE; -} - -#define EXPONENT_DETECT(ptr) \ - for (;; ptr++) { \ - if (!std::isdigit(*ptr)) { \ - if (endptr) \ - *endptr = (char*)ptr; \ - break; \ - } else { \ - exp_ret *= 10; \ - exp_ret += FXSYS_toDecimalDigit(*ptr); \ - continue; \ - } \ - } - -extern "C" double FXstrtod(const char* nptr, char** endptr) { - double ret = 0.0; - const char* ptr = nptr; - const char* exp_ptr = NULL; - int e_number = 0, e_signal = 0, e_point = 0, is_negative = 0; - int exp_ret = 0, exp_sig = 1, fra_ret = 0, fra_count = 0, fra_base = 1; - if (!nptr) { - return 0.0; - } - for (;; ptr++) { - if (!e_number && !e_point && (*ptr == '\t' || *ptr == ' ')) - continue; - - if (std::isdigit(*ptr)) { - if (!e_number) - e_number = 1; - - if (!e_point) { - ret *= 10; - ret += FXSYS_toDecimalDigit(*ptr); - } else { - fra_count++; - fra_ret *= 10; - fra_ret += FXSYS_toDecimalDigit(*ptr); - } - continue; - } - if (!e_point && *ptr == '.') { - e_point = 1; - continue; - } - if (!e_number && !e_point && !e_signal) { - switch (*ptr) { - case '-': - is_negative = 1; - case '+': - e_signal = 1; - continue; - } - } - if (e_number && (*ptr == 'e' || *ptr == 'E')) { - exp_ptr = ptr++; - if (*ptr == '+' || *ptr == '-') { - exp_sig = (*ptr++ == '+') ? 1 : -1; - if (!std::isdigit(*ptr)) { - if (endptr) { - *endptr = (char*)exp_ptr; - } - break; - } - EXPONENT_DETECT(ptr); - } else if (std::isdigit(*ptr)) { - EXPONENT_DETECT(ptr); - } else { - if (endptr) { - *endptr = (char*)exp_ptr; - } - break; - } - break; - } - if (ptr != nptr && !e_number) { - if (endptr) { - *endptr = (char*)nptr; - } - break; - } - if (endptr) { - *endptr = (char*)ptr; - } - break; - } - while (fra_count--) { - fra_base *= 10; - } - ret += (double)fra_ret / (double)fra_base; - if (exp_sig == 1) { - while (exp_ret--) { - ret *= 10.0; - } - } else { - while (exp_ret--) { - ret /= 10.0; - } - } - return is_negative ? -ret : ret; -} -#undef EXPONENT_DETECT - -FX_BOOL CCodec_BasicModule::A85Encode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - return FALSE; -} - -#ifdef PDF_ENABLE_XFA -CFX_DIBAttribute::CFX_DIBAttribute() - : m_nXDPI(-1), - m_nYDPI(-1), - m_fAspectRatio(-1.0f), - m_wDPIUnit(0), - m_nGifLeft(0), - m_nGifTop(0), - m_pGifLocalPalette(nullptr), - m_nGifLocalPalNum(0), - m_nBmpCompressType(0) { - FXSYS_memset(m_strTime, 0, sizeof(m_strTime)); -} -CFX_DIBAttribute::~CFX_DIBAttribute() { - for (const auto& pair : m_Exif) - FX_Free(pair.second); -} -#endif // PDF_ENABLE_XFA - -class CCodec_RLScanlineDecoder : public CCodec_ScanlineDecoder { - public: - CCodec_RLScanlineDecoder(); - ~CCodec_RLScanlineDecoder() override; - - FX_BOOL Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc); - - // CCodec_ScanlineDecoder - void v_DownScale(int dest_width, int dest_height) override {} - FX_BOOL v_Rewind() override; - uint8_t* v_GetNextLine() override; - FX_DWORD GetSrcOffset() override { return m_SrcOffset; } - - protected: - FX_BOOL CheckDestSize(); - void GetNextOperator(); - void UpdateOperator(uint8_t used_bytes); - - uint8_t* m_pScanline; - const uint8_t* m_pSrcBuf; - FX_DWORD m_SrcSize; - FX_DWORD m_dwLineBytes; - FX_DWORD m_SrcOffset; - FX_BOOL m_bEOD; - uint8_t m_Operator; -}; -CCodec_RLScanlineDecoder::CCodec_RLScanlineDecoder() - : m_pScanline(NULL), - m_pSrcBuf(NULL), - m_SrcSize(0), - m_dwLineBytes(0), - m_SrcOffset(0), - m_bEOD(FALSE), - m_Operator(0) {} -CCodec_RLScanlineDecoder::~CCodec_RLScanlineDecoder() { - FX_Free(m_pScanline); -} -FX_BOOL CCodec_RLScanlineDecoder::CheckDestSize() { - FX_DWORD i = 0; - FX_DWORD old_size = 0; - FX_DWORD dest_size = 0; - while (i < m_SrcSize) { - if (m_pSrcBuf[i] < 128) { - old_size = dest_size; - dest_size += m_pSrcBuf[i] + 1; - if (dest_size < old_size) { - return FALSE; - } - i += m_pSrcBuf[i] + 2; - } else if (m_pSrcBuf[i] > 128) { - old_size = dest_size; - dest_size += 257 - m_pSrcBuf[i]; - if (dest_size < old_size) { - return FALSE; - } - i += 2; - } else { - break; - } - } - if (((FX_DWORD)m_OrigWidth * m_nComps * m_bpc * m_OrigHeight + 7) / 8 > - dest_size) { - return FALSE; - } - return TRUE; -} -FX_BOOL CCodec_RLScanlineDecoder::Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc) { - m_pSrcBuf = src_buf; - m_SrcSize = src_size; - m_OutputWidth = m_OrigWidth = width; - m_OutputHeight = m_OrigHeight = height; - m_nComps = nComps; - m_bpc = bpc; - m_bColorTransformed = FALSE; - m_DownScale = 1; - // Aligning the pitch to 4 bytes requires an integer overflow check. - FX_SAFE_DWORD pitch = width; - pitch *= nComps; - pitch *= bpc; - pitch += 31; - pitch /= 32; - pitch *= 4; - if (!pitch.IsValid()) { - return FALSE; - } - m_Pitch = pitch.ValueOrDie(); - // Overflow should already have been checked before this is called. - m_dwLineBytes = (static_cast(width) * nComps * bpc + 7) / 8; - m_pScanline = FX_Alloc(uint8_t, m_Pitch); - return CheckDestSize(); -} -FX_BOOL CCodec_RLScanlineDecoder::v_Rewind() { - FXSYS_memset(m_pScanline, 0, m_Pitch); - m_SrcOffset = 0; - m_bEOD = FALSE; - m_Operator = 0; - return TRUE; -} -uint8_t* CCodec_RLScanlineDecoder::v_GetNextLine() { - if (m_SrcOffset == 0) { - GetNextOperator(); - } else { - if (m_bEOD) { - return NULL; - } - } - FXSYS_memset(m_pScanline, 0, m_Pitch); - FX_DWORD col_pos = 0; - FX_BOOL eol = FALSE; - while (m_SrcOffset < m_SrcSize && !eol) { - if (m_Operator < 128) { - FX_DWORD copy_len = m_Operator + 1; - if (col_pos + copy_len >= m_dwLineBytes) { - copy_len = m_dwLineBytes - col_pos; - eol = TRUE; - } - if (copy_len >= m_SrcSize - m_SrcOffset) { - copy_len = m_SrcSize - m_SrcOffset; - m_bEOD = TRUE; - } - FXSYS_memcpy(m_pScanline + col_pos, m_pSrcBuf + m_SrcOffset, copy_len); - col_pos += copy_len; - UpdateOperator((uint8_t)copy_len); - } else if (m_Operator > 128) { - int fill = 0; - if (m_SrcOffset - 1 < m_SrcSize - 1) { - fill = m_pSrcBuf[m_SrcOffset]; - } - FX_DWORD duplicate_len = 257 - m_Operator; - if (col_pos + duplicate_len >= m_dwLineBytes) { - duplicate_len = m_dwLineBytes - col_pos; - eol = TRUE; - } - FXSYS_memset(m_pScanline + col_pos, fill, duplicate_len); - col_pos += duplicate_len; - UpdateOperator((uint8_t)duplicate_len); - } else { - m_bEOD = TRUE; - break; - } - } - return m_pScanline; -} -void CCodec_RLScanlineDecoder::GetNextOperator() { - if (m_SrcOffset >= m_SrcSize) { - m_Operator = 128; - return; - } - m_Operator = m_pSrcBuf[m_SrcOffset]; - m_SrcOffset++; -} -void CCodec_RLScanlineDecoder::UpdateOperator(uint8_t used_bytes) { - if (used_bytes == 0) { - return; - } - if (m_Operator < 128) { - FXSYS_assert((FX_DWORD)m_Operator + 1 >= used_bytes); - if (used_bytes == m_Operator + 1) { - m_SrcOffset += used_bytes; - GetNextOperator(); - return; - } - m_Operator -= used_bytes; - m_SrcOffset += used_bytes; - if (m_SrcOffset >= m_SrcSize) { - m_Operator = 128; - } - return; - } - uint8_t count = 257 - m_Operator; - FXSYS_assert((FX_DWORD)count >= used_bytes); - if (used_bytes == count) { - m_SrcOffset++; - GetNextOperator(); - return; - } - count -= used_bytes; - m_Operator = 257 - count; -} -ICodec_ScanlineDecoder* CCodec_BasicModule::CreateRunLengthDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc) { - CCodec_RLScanlineDecoder* pRLScanlineDecoder = new CCodec_RLScanlineDecoder; - if (!pRLScanlineDecoder->Create(src_buf, src_size, width, height, nComps, - bpc)) { - delete pRLScanlineDecoder; - return NULL; - } - return pRLScanlineDecoder; -} diff --git a/core/src/fxcodec/codec/fx_codec_bmp.cpp b/core/src/fxcodec/codec/fx_codec_bmp.cpp deleted file mode 100644 index 41a881d3ae..0000000000 --- a/core/src/fxcodec/codec/fx_codec_bmp.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_dib.h" -#include "core/src/fxcodec/codec/codec_int.h" -#include "core/src/fxcodec/lbmp/fx_bmp.h" -struct FXBMP_Context { - bmp_decompress_struct_p bmp_ptr; - void* parent_ptr; - void* child_ptr; - - void* (*m_AllocFunc)(unsigned int); - void (*m_FreeFunc)(void*); -}; -extern "C" { -static void* bmp_alloc_func(unsigned int size) { - return FX_Alloc(char, size); -} -static void bmp_free_func(void* p) { - FX_Free(p); -} -}; -static void bmp_error_data(bmp_decompress_struct_p bmp_ptr, - const FX_CHAR* err_msg) { - FXSYS_strncpy((char*)bmp_ptr->err_ptr, err_msg, BMP_MAX_ERROR_SIZE - 1); - longjmp(bmp_ptr->jmpbuf, 1); -} -static void bmp_read_scanline(bmp_decompress_struct_p bmp_ptr, - int32_t row_num, - uint8_t* row_buf) { - FXBMP_Context* p = (FXBMP_Context*)bmp_ptr->context_ptr; - CCodec_BmpModule* pModule = (CCodec_BmpModule*)p->parent_ptr; - pModule->ReadScanlineCallback(p->child_ptr, row_num, row_buf); -} -static FX_BOOL bmp_get_data_position(bmp_decompress_struct_p bmp_ptr, - FX_DWORD rcd_pos) { - FXBMP_Context* p = (FXBMP_Context*)bmp_ptr->context_ptr; - CCodec_BmpModule* pModule = (CCodec_BmpModule*)p->parent_ptr; - return pModule->InputImagePositionBufCallback(p->child_ptr, rcd_pos); -} -void* CCodec_BmpModule::Start(void* pModule) { - FXBMP_Context* p = (FXBMP_Context*)FX_Alloc(uint8_t, sizeof(FXBMP_Context)); - if (p == NULL) { - return NULL; - } - FXSYS_memset(p, 0, sizeof(FXBMP_Context)); - if (p == NULL) { - return NULL; - } - p->m_AllocFunc = bmp_alloc_func; - p->m_FreeFunc = bmp_free_func; - p->bmp_ptr = NULL; - p->parent_ptr = (void*)this; - p->child_ptr = pModule; - p->bmp_ptr = bmp_create_decompress(); - if (p->bmp_ptr == NULL) { - FX_Free(p); - return NULL; - } - p->bmp_ptr->context_ptr = (void*)p; - p->bmp_ptr->err_ptr = m_szLastError; - p->bmp_ptr->bmp_error_fn = bmp_error_data; - p->bmp_ptr->bmp_get_row_fn = bmp_read_scanline; - p->bmp_ptr->bmp_get_data_position_fn = bmp_get_data_position; - return p; -} -void CCodec_BmpModule::Finish(void* pContext) { - FXBMP_Context* p = (FXBMP_Context*)pContext; - if (p) { - bmp_destroy_decompress(&p->bmp_ptr); - p->m_FreeFunc(p); - } -} -int32_t CCodec_BmpModule::ReadHeader(void* pContext, - int32_t* width, - int32_t* height, - FX_BOOL* tb_flag, - int32_t* components, - int32_t* pal_num, - FX_DWORD** pal_pp, - CFX_DIBAttribute* pAttribute) { - FXBMP_Context* p = (FXBMP_Context*)pContext; - if (setjmp(p->bmp_ptr->jmpbuf)) { - return 0; - } - int32_t ret = bmp_read_header(p->bmp_ptr); - if (ret != 1) { - return ret; - } - *width = p->bmp_ptr->width; - *height = p->bmp_ptr->height; - *tb_flag = p->bmp_ptr->imgTB_flag; - *components = p->bmp_ptr->components; - *pal_num = p->bmp_ptr->pal_num; - *pal_pp = p->bmp_ptr->pal_ptr; - if (pAttribute) { - pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_METER; - pAttribute->m_nXDPI = p->bmp_ptr->dpi_x; - pAttribute->m_nYDPI = p->bmp_ptr->dpi_y; - pAttribute->m_nBmpCompressType = p->bmp_ptr->compress_flag; - } - return 1; -} -int32_t CCodec_BmpModule::LoadImage(void* pContext) { - FXBMP_Context* p = (FXBMP_Context*)pContext; - if (setjmp(p->bmp_ptr->jmpbuf)) { - return 0; - } - return bmp_decode_image(p->bmp_ptr); -} -FX_DWORD CCodec_BmpModule::GetAvailInput(void* pContext, - uint8_t** avial_buf_ptr) { - FXBMP_Context* p = (FXBMP_Context*)pContext; - return bmp_get_avail_input(p->bmp_ptr, avial_buf_ptr); -} -void CCodec_BmpModule::Input(void* pContext, - const uint8_t* src_buf, - FX_DWORD src_size) { - FXBMP_Context* p = (FXBMP_Context*)pContext; - bmp_input_buffer(p->bmp_ptr, (uint8_t*)src_buf, src_size); -} diff --git a/core/src/fxcodec/codec/fx_codec_fax.cpp b/core/src/fxcodec/codec/fx_codec_fax.cpp deleted file mode 100644 index 36b92f06ff..0000000000 --- a/core/src/fxcodec/codec/fx_codec_fax.cpp +++ /dev/null @@ -1,830 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/src/fxcodec/codec/codec_int.h" - -namespace { - -const uint8_t OneLeadPos[256] = { - 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; -const uint8_t ZeroLeadPos[256] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, -}; - -int FindBit(const uint8_t* data_buf, int max_pos, int start_pos, int bit) { - if (start_pos >= max_pos) { - return max_pos; - } - const uint8_t* leading_pos = bit ? OneLeadPos : ZeroLeadPos; - if (start_pos % 8) { - uint8_t data = data_buf[start_pos / 8]; - if (bit) { - data &= 0xff >> (start_pos % 8); - } else { - data |= 0xff << (8 - start_pos % 8); - } - if (leading_pos[data] < 8) { - return start_pos / 8 * 8 + leading_pos[data]; - } - start_pos += 7; - } - uint8_t skip = bit ? 0x00 : 0xff; - int byte_pos = start_pos / 8; - int max_byte = (max_pos + 7) / 8; - while (byte_pos < max_byte) { - if (data_buf[byte_pos] != skip) { - break; - } - byte_pos++; - } - if (byte_pos == max_byte) { - return max_pos; - } - int pos = leading_pos[data_buf[byte_pos]] + byte_pos * 8; - if (pos > max_pos) { - pos = max_pos; - } - return pos; -} - -void FaxG4FindB1B2(const uint8_t* ref_buf, - int columns, - int a0, - bool a0color, - int& b1, - int& b2) { - uint8_t first_bit = - (a0 < 0) ? 1 : ((ref_buf[a0 / 8] & (1 << (7 - a0 % 8))) != 0); - b1 = FindBit(ref_buf, columns, a0 + 1, !first_bit); - if (b1 >= columns) { - b1 = b2 = columns; - return; - } - if (first_bit == !a0color) { - b1 = FindBit(ref_buf, columns, b1 + 1, first_bit); - first_bit = !first_bit; - } - if (b1 >= columns) { - b1 = b2 = columns; - return; - } - b2 = FindBit(ref_buf, columns, b1 + 1, first_bit); -} - -void FaxFillBits(uint8_t* dest_buf, int columns, int startpos, int endpos) { - if (startpos < 0) { - startpos = 0; - } - if (endpos < 0) { - endpos = 0; - } - if (endpos >= columns) { - endpos = columns; - } - if (startpos >= endpos) { - return; - } - int first_byte = startpos / 8; - int last_byte = (endpos - 1) / 8; - if (first_byte == last_byte) { - for (int i = startpos % 8; i <= (endpos - 1) % 8; i++) { - dest_buf[first_byte] -= 1 << (7 - i); - } - return; - } - int i; - for (i = startpos % 8; i < 8; i++) { - dest_buf[first_byte] -= 1 << (7 - i); - } - for (i = 0; i <= (endpos - 1) % 8; i++) { - dest_buf[last_byte] -= 1 << (7 - i); - } - if (last_byte > first_byte + 1) { - FXSYS_memset(dest_buf + first_byte + 1, 0, last_byte - first_byte - 1); - } -} - -#define NEXTBIT \ - src_buf[bitpos / 8] & (1 << (7 - bitpos % 8)); \ - bitpos++; -#define ADDBIT(code, bit) \ - code = code << 1; \ - if (bit) \ - code++; -#define GETBIT(bitpos) src_buf[bitpos / 8] & (1 << (7 - bitpos % 8)) - -const uint8_t FaxBlackRunIns[] = { - 0, 2, 0x02, 3, 0, 0x03, - 2, 0, 2, 0x02, 1, 0, - 0x03, 4, 0, 2, 0x02, 6, - 0, 0x03, 5, 0, 1, 0x03, - 7, 0, 2, 0x04, 9, 0, - 0x05, 8, 0, 3, 0x04, 10, - 0, 0x05, 11, 0, 0x07, 12, - 0, 2, 0x04, 13, 0, 0x07, - 14, 0, 1, 0x18, 15, 0, - 5, 0x08, 18, 0, 0x0f, 64, - 0, 0x17, 16, 0, 0x18, 17, - 0, 0x37, 0, 0, 10, 0x08, - 0x00, 0x07, 0x0c, 0x40, 0x07, 0x0d, - 0x80, 0x07, 0x17, 24, 0, 0x18, - 25, 0, 0x28, 23, 0, 0x37, - 22, 0, 0x67, 19, 0, 0x68, - 20, 0, 0x6c, 21, 0, 54, - 0x12, 1984 % 256, 1984 / 256, 0x13, 2048 % 256, 2048 / 256, - 0x14, 2112 % 256, 2112 / 256, 0x15, 2176 % 256, 2176 / 256, - 0x16, 2240 % 256, 2240 / 256, 0x17, 2304 % 256, 2304 / 256, - 0x1c, 2368 % 256, 2368 / 256, 0x1d, 2432 % 256, 2432 / 256, - 0x1e, 2496 % 256, 2496 / 256, 0x1f, 2560 % 256, 2560 / 256, - 0x24, 52, 0, 0x27, 55, 0, - 0x28, 56, 0, 0x2b, 59, 0, - 0x2c, 60, 0, 0x33, 320 % 256, 320 / 256, - 0x34, 384 % 256, 384 / 256, 0x35, 448 % 256, 448 / 256, - 0x37, 53, 0, 0x38, 54, 0, - 0x52, 50, 0, 0x53, 51, 0, - 0x54, 44, 0, 0x55, 45, 0, - 0x56, 46, 0, 0x57, 47, 0, - 0x58, 57, 0, 0x59, 58, 0, - 0x5a, 61, 0, 0x5b, 256 % 256, 256 / 256, - 0x64, 48, 0, 0x65, 49, 0, - 0x66, 62, 0, 0x67, 63, 0, - 0x68, 30, 0, 0x69, 31, 0, - 0x6a, 32, 0, 0x6b, 33, 0, - 0x6c, 40, 0, 0x6d, 41, 0, - 0xc8, 128, 0, 0xc9, 192, 0, - 0xca, 26, 0, 0xcb, 27, 0, - 0xcc, 28, 0, 0xcd, 29, 0, - 0xd2, 34, 0, 0xd3, 35, 0, - 0xd4, 36, 0, 0xd5, 37, 0, - 0xd6, 38, 0, 0xd7, 39, 0, - 0xda, 42, 0, 0xdb, 43, 0, - 20, 0x4a, 640 % 256, 640 / 256, 0x4b, 704 % 256, - 704 / 256, 0x4c, 768 % 256, 768 / 256, 0x4d, 832 % 256, - 832 / 256, 0x52, 1280 % 256, 1280 / 256, 0x53, 1344 % 256, - 1344 / 256, 0x54, 1408 % 256, 1408 / 256, 0x55, 1472 % 256, - 1472 / 256, 0x5a, 1536 % 256, 1536 / 256, 0x5b, 1600 % 256, - 1600 / 256, 0x64, 1664 % 256, 1664 / 256, 0x65, 1728 % 256, - 1728 / 256, 0x6c, 512 % 256, 512 / 256, 0x6d, 576 % 256, - 576 / 256, 0x72, 896 % 256, 896 / 256, 0x73, 960 % 256, - 960 / 256, 0x74, 1024 % 256, 1024 / 256, 0x75, 1088 % 256, - 1088 / 256, 0x76, 1152 % 256, 1152 / 256, 0x77, 1216 % 256, - 1216 / 256, 0xff}; - -const uint8_t FaxWhiteRunIns[] = { - 0, 0, 0, 6, 0x07, 2, - 0, 0x08, 3, 0, 0x0B, 4, - 0, 0x0C, 5, 0, 0x0E, 6, - 0, 0x0F, 7, 0, 6, 0x07, - 10, 0, 0x08, 11, 0, 0x12, - 128, 0, 0x13, 8, 0, 0x14, - 9, 0, 0x1b, 64, 0, 9, - 0x03, 13, 0, 0x07, 1, 0, - 0x08, 12, 0, 0x17, 192, 0, - 0x18, 1664 % 256, 1664 / 256, 0x2a, 16, 0, - 0x2B, 17, 0, 0x34, 14, 0, - 0x35, 15, 0, 12, 0x03, 22, - 0, 0x04, 23, 0, 0x08, 20, - 0, 0x0c, 19, 0, 0x13, 26, - 0, 0x17, 21, 0, 0x18, 28, - 0, 0x24, 27, 0, 0x27, 18, - 0, 0x28, 24, 0, 0x2B, 25, - 0, 0x37, 256 % 256, 256 / 256, 42, 0x02, - 29, 0, 0x03, 30, 0, 0x04, - 45, 0, 0x05, 46, 0, 0x0a, - 47, 0, 0x0b, 48, 0, 0x12, - 33, 0, 0x13, 34, 0, 0x14, - 35, 0, 0x15, 36, 0, 0x16, - 37, 0, 0x17, 38, 0, 0x1a, - 31, 0, 0x1b, 32, 0, 0x24, - 53, 0, 0x25, 54, 0, 0x28, - 39, 0, 0x29, 40, 0, 0x2a, - 41, 0, 0x2b, 42, 0, 0x2c, - 43, 0, 0x2d, 44, 0, 0x32, - 61, 0, 0x33, 62, 0, 0x34, - 63, 0, 0x35, 0, 0, 0x36, - 320 % 256, 320 / 256, 0x37, 384 % 256, 384 / 256, 0x4a, - 59, 0, 0x4b, 60, 0, 0x52, - 49, 0, 0x53, 50, 0, 0x54, - 51, 0, 0x55, 52, 0, 0x58, - 55, 0, 0x59, 56, 0, 0x5a, - 57, 0, 0x5b, 58, 0, 0x64, - 448 % 256, 448 / 256, 0x65, 512 % 256, 512 / 256, 0x67, - 640 % 256, 640 / 256, 0x68, 576 % 256, 576 / 256, 16, - 0x98, 1472 % 256, 1472 / 256, 0x99, 1536 % 256, 1536 / 256, - 0x9a, 1600 % 256, 1600 / 256, 0x9b, 1728 % 256, 1728 / 256, - 0xcc, 704 % 256, 704 / 256, 0xcd, 768 % 256, 768 / 256, - 0xd2, 832 % 256, 832 / 256, 0xd3, 896 % 256, 896 / 256, - 0xd4, 960 % 256, 960 / 256, 0xd5, 1024 % 256, 1024 / 256, - 0xd6, 1088 % 256, 1088 / 256, 0xd7, 1152 % 256, 1152 / 256, - 0xd8, 1216 % 256, 1216 / 256, 0xd9, 1280 % 256, 1280 / 256, - 0xda, 1344 % 256, 1344 / 256, 0xdb, 1408 % 256, 1408 / 256, - 0, 3, 0x08, 1792 % 256, 1792 / 256, 0x0c, - 1856 % 256, 1856 / 256, 0x0d, 1920 % 256, 1920 / 256, 10, - 0x12, 1984 % 256, 1984 / 256, 0x13, 2048 % 256, 2048 / 256, - 0x14, 2112 % 256, 2112 / 256, 0x15, 2176 % 256, 2176 / 256, - 0x16, 2240 % 256, 2240 / 256, 0x17, 2304 % 256, 2304 / 256, - 0x1c, 2368 % 256, 2368 / 256, 0x1d, 2432 % 256, 2432 / 256, - 0x1e, 2496 % 256, 2496 / 256, 0x1f, 2560 % 256, 2560 / 256, - 0xff, -}; - -int FaxGetRun(const uint8_t* ins_array, - const uint8_t* src_buf, - int& bitpos, - int bitsize) { - FX_DWORD code = 0; - int ins_off = 0; - while (1) { - uint8_t ins = ins_array[ins_off++]; - if (ins == 0xff) { - return -1; - } - if (bitpos >= bitsize) { - return -1; - } - code <<= 1; - if (src_buf[bitpos / 8] & (1 << (7 - bitpos % 8))) { - code++; - } - bitpos++; - int next_off = ins_off + ins * 3; - for (; ins_off < next_off; ins_off += 3) { - if (ins_array[ins_off] == code) { - return ins_array[ins_off + 1] + ins_array[ins_off + 2] * 256; - } - } - } -} - -FX_BOOL FaxG4GetRow(const uint8_t* src_buf, - int bitsize, - int& bitpos, - uint8_t* dest_buf, - const uint8_t* ref_buf, - int columns) { - int a0 = -1; - bool a0color = true; - while (1) { - if (bitpos >= bitsize) { - return FALSE; - } - int a1, a2, b1, b2; - FaxG4FindB1B2(ref_buf, columns, a0, a0color, b1, b2); - FX_BOOL bit = NEXTBIT; - int v_delta = 0; - if (bit) { - } else { - if (bitpos >= bitsize) { - return FALSE; - } - FX_BOOL bit1 = NEXTBIT; - if (bitpos >= bitsize) { - return FALSE; - } - FX_BOOL bit2 = NEXTBIT; - if (bit1 && bit2) { - v_delta = 1; - } else if (bit1) { - v_delta = -1; - } else if (bit2) { - int run_len1 = 0; - while (1) { - int run = FaxGetRun(a0color ? FaxWhiteRunIns : FaxBlackRunIns, - src_buf, bitpos, bitsize); - run_len1 += run; - if (run < 64) { - break; - } - } - if (a0 < 0) { - run_len1++; - } - a1 = a0 + run_len1; - if (!a0color) { - FaxFillBits(dest_buf, columns, a0, a1); - } - int run_len2 = 0; - while (1) { - int run = FaxGetRun(a0color ? FaxBlackRunIns : FaxWhiteRunIns, - src_buf, bitpos, bitsize); - run_len2 += run; - if (run < 64) { - break; - } - } - a2 = a1 + run_len2; - if (a0color) { - FaxFillBits(dest_buf, columns, a1, a2); - } - a0 = a2; - if (a0 < columns) { - continue; - } - return TRUE; - } else { - if (bitpos >= bitsize) { - return FALSE; - } - bit = NEXTBIT; - if (bit) { - if (!a0color) { - FaxFillBits(dest_buf, columns, a0, b2); - } - if (b2 >= columns) { - return TRUE; - } - a0 = b2; - continue; - } else { - if (bitpos >= bitsize) { - return FALSE; - } - FX_BOOL bit1 = NEXTBIT; - if (bitpos >= bitsize) { - return FALSE; - } - FX_BOOL bit2 = NEXTBIT; - if (bit1 && bit2) { - v_delta = 2; - } else if (bit1) { - v_delta = -2; - } else if (bit2) { - if (bitpos >= bitsize) { - return FALSE; - } - bit = NEXTBIT; - if (bit) { - v_delta = 3; - } else { - v_delta = -3; - } - } else { - if (bitpos >= bitsize) { - return FALSE; - } - bit = NEXTBIT; - if (bit) { - bitpos += 3; - continue; - } else { - bitpos += 5; - return TRUE; - } - } - } - } - } - a1 = b1 + v_delta; - if (!a0color) { - FaxFillBits(dest_buf, columns, a0, a1); - } - if (a1 >= columns) { - return TRUE; - } - a0 = a1; - a0color = !a0color; - } -} - -FX_BOOL FaxSkipEOL(const uint8_t* src_buf, int bitsize, int& bitpos) { - int startbit = bitpos; - while (bitpos < bitsize) { - int bit = NEXTBIT; - if (bit) { - if (bitpos - startbit <= 11) { - bitpos = startbit; - } - return TRUE; - } - } - return FALSE; -} - -FX_BOOL FaxGet1DLine(const uint8_t* src_buf, - int bitsize, - int& bitpos, - uint8_t* dest_buf, - int columns) { - bool color = true; - int startpos = 0; - while (1) { - if (bitpos >= bitsize) { - return FALSE; - } - int run_len = 0; - while (1) { - int run = FaxGetRun(color ? FaxWhiteRunIns : FaxBlackRunIns, src_buf, - bitpos, bitsize); - if (run < 0) { - while (bitpos < bitsize) { - int bit = NEXTBIT; - if (bit) { - return TRUE; - } - } - return FALSE; - } - run_len += run; - if (run < 64) { - break; - } - } - if (!color) { - FaxFillBits(dest_buf, columns, startpos, startpos + run_len); - } - startpos += run_len; - if (startpos >= columns) { - break; - } - color = !color; - } - return TRUE; -} - -const uint8_t BlackRunTerminator[128] = { - 0x37, 10, 0x02, 3, 0x03, 2, 0x02, 2, 0x03, 3, 0x03, 4, 0x02, 4, - 0x03, 5, 0x05, 6, 0x04, 6, 0x04, 7, 0x05, 7, 0x07, 7, 0x04, 8, - 0x07, 8, 0x18, 9, 0x17, 10, 0x18, 10, 0x08, 10, 0x67, 11, 0x68, 11, - 0x6c, 11, 0x37, 11, 0x28, 11, 0x17, 11, 0x18, 11, 0xca, 12, 0xcb, 12, - 0xcc, 12, 0xcd, 12, 0x68, 12, 0x69, 12, 0x6a, 12, 0x6b, 12, 0xd2, 12, - 0xd3, 12, 0xd4, 12, 0xd5, 12, 0xd6, 12, 0xd7, 12, 0x6c, 12, 0x6d, 12, - 0xda, 12, 0xdb, 12, 0x54, 12, 0x55, 12, 0x56, 12, 0x57, 12, 0x64, 12, - 0x65, 12, 0x52, 12, 0x53, 12, 0x24, 12, 0x37, 12, 0x38, 12, 0x27, 12, - 0x28, 12, 0x58, 12, 0x59, 12, 0x2b, 12, 0x2c, 12, 0x5a, 12, 0x66, 12, - 0x67, 12, -}; - -const uint8_t BlackRunMarkup[80] = { - 0x0f, 10, 0xc8, 12, 0xc9, 12, 0x5b, 12, 0x33, 12, 0x34, 12, 0x35, 12, - 0x6c, 13, 0x6d, 13, 0x4a, 13, 0x4b, 13, 0x4c, 13, 0x4d, 13, 0x72, 13, - 0x73, 13, 0x74, 13, 0x75, 13, 0x76, 13, 0x77, 13, 0x52, 13, 0x53, 13, - 0x54, 13, 0x55, 13, 0x5a, 13, 0x5b, 13, 0x64, 13, 0x65, 13, 0x08, 11, - 0x0c, 11, 0x0d, 11, 0x12, 12, 0x13, 12, 0x14, 12, 0x15, 12, 0x16, 12, - 0x17, 12, 0x1c, 12, 0x1d, 12, 0x1e, 12, 0x1f, 12, -}; - -const uint8_t WhiteRunTerminator[128] = { - 0x35, 8, 0x07, 6, 0x07, 4, 0x08, 4, 0x0B, 4, 0x0C, 4, 0x0E, 4, 0x0F, 4, - 0x13, 5, 0x14, 5, 0x07, 5, 0x08, 5, 0x08, 6, 0x03, 6, 0x34, 6, 0x35, 6, - 0x2a, 6, 0x2B, 6, 0x27, 7, 0x0c, 7, 0x08, 7, 0x17, 7, 0x03, 7, 0x04, 7, - 0x28, 7, 0x2B, 7, 0x13, 7, 0x24, 7, 0x18, 7, 0x02, 8, 0x03, 8, 0x1a, 8, - 0x1b, 8, 0x12, 8, 0x13, 8, 0x14, 8, 0x15, 8, 0x16, 8, 0x17, 8, 0x28, 8, - 0x29, 8, 0x2a, 8, 0x2b, 8, 0x2c, 8, 0x2d, 8, 0x04, 8, 0x05, 8, 0x0a, 8, - 0x0b, 8, 0x52, 8, 0x53, 8, 0x54, 8, 0x55, 8, 0x24, 8, 0x25, 8, 0x58, 8, - 0x59, 8, 0x5a, 8, 0x5b, 8, 0x4a, 8, 0x4b, 8, 0x32, 8, 0x33, 8, 0x34, 8, -}; - -const uint8_t WhiteRunMarkup[80] = { - 0x1b, 5, 0x12, 5, 0x17, 6, 0x37, 7, 0x36, 8, 0x37, 8, 0x64, 8, - 0x65, 8, 0x68, 8, 0x67, 8, 0xcc, 9, 0xcd, 9, 0xd2, 9, 0xd3, 9, - 0xd4, 9, 0xd5, 9, 0xd6, 9, 0xd7, 9, 0xd8, 9, 0xd9, 9, 0xda, 9, - 0xdb, 9, 0x98, 9, 0x99, 9, 0x9a, 9, 0x18, 6, 0x9b, 9, 0x08, 11, - 0x0c, 11, 0x0d, 11, 0x12, 12, 0x13, 12, 0x14, 12, 0x15, 12, 0x16, 12, - 0x17, 12, 0x1c, 12, 0x1d, 12, 0x1e, 12, 0x1f, 12, -}; - -void AddBitStream(uint8_t* dest_buf, int& dest_bitpos, int data, int bitlen) { - for (int i = bitlen - 1; i >= 0; i--) { - if (data & (1 << i)) { - dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); - } - dest_bitpos++; - } -} - -void FaxEncodeRun(uint8_t* dest_buf, int& dest_bitpos, int run, bool bWhite) { - while (run >= 2560) { - AddBitStream(dest_buf, dest_bitpos, 0x1f, 12); - run -= 2560; - } - if (run >= 64) { - int markup = run - run % 64; - const uint8_t* p = bWhite ? WhiteRunMarkup : BlackRunMarkup; - p += (markup / 64 - 1) * 2; - AddBitStream(dest_buf, dest_bitpos, *p, p[1]); - } - run %= 64; - const uint8_t* p = bWhite ? WhiteRunTerminator : BlackRunTerminator; - p += run * 2; - AddBitStream(dest_buf, dest_bitpos, *p, p[1]); -} - -void FaxEncode2DLine(uint8_t* dest_buf, - int& dest_bitpos, - const uint8_t* src_buf, - const uint8_t* ref_buf, - int cols) { - int a0 = -1; - bool a0color = true; - while (1) { - int a1 = FindBit(src_buf, cols, a0 + 1, !a0color); - int b1, b2; - FaxG4FindB1B2(ref_buf, cols, a0, a0color, b1, b2); - if (b2 < a1) { - dest_bitpos += 3; - dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); - dest_bitpos++; - a0 = b2; - } else if (a1 - b1 <= 3 && b1 - a1 <= 3) { - int delta = a1 - b1; - switch (delta) { - case 0: - dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); - break; - case 1: - case 2: - case 3: - dest_bitpos += delta == 1 ? 1 : delta + 2; - dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); - dest_bitpos++; - dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); - break; - case -1: - case -2: - case -3: - dest_bitpos += delta == -1 ? 1 : -delta + 2; - dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); - dest_bitpos++; - break; - } - dest_bitpos++; - a0 = a1; - a0color = !a0color; - } else { - int a2 = FindBit(src_buf, cols, a1 + 1, a0color); - dest_bitpos++; - dest_bitpos++; - dest_buf[dest_bitpos / 8] |= 1 << (7 - dest_bitpos % 8); - dest_bitpos++; - if (a0 < 0) { - a0 = 0; - } - FaxEncodeRun(dest_buf, dest_bitpos, a1 - a0, a0color); - FaxEncodeRun(dest_buf, dest_bitpos, a2 - a1, !a0color); - a0 = a2; - } - if (a0 >= cols) { - return; - } - } -} - -} // namespace - -class CCodec_FaxDecoder : public CCodec_ScanlineDecoder { - public: - CCodec_FaxDecoder(); - ~CCodec_FaxDecoder() override; - - FX_BOOL Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int K, - FX_BOOL EndOfLine, - FX_BOOL EncodedByteAlign, - FX_BOOL BlackIs1, - int Columns, - int Rows); - - // CCodec_ScanlineDecoder - void v_DownScale(int dest_width, int dest_height) override {} - FX_BOOL v_Rewind() override; - uint8_t* v_GetNextLine() override; - FX_DWORD GetSrcOffset() override; - - int m_Encoding, m_bEndOfLine, m_bByteAlign, m_bBlack; - int bitpos; - const uint8_t* m_pSrcBuf; - FX_DWORD m_SrcSize; - uint8_t* m_pScanlineBuf; - uint8_t* m_pRefBuf; -}; - -CCodec_FaxDecoder::CCodec_FaxDecoder() { - m_pScanlineBuf = NULL; - m_pRefBuf = NULL; -} -CCodec_FaxDecoder::~CCodec_FaxDecoder() { - FX_Free(m_pScanlineBuf); - FX_Free(m_pRefBuf); -} -FX_BOOL CCodec_FaxDecoder::Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int K, - FX_BOOL EndOfLine, - FX_BOOL EncodedByteAlign, - FX_BOOL BlackIs1, - int Columns, - int Rows) { - m_Encoding = K; - m_bEndOfLine = EndOfLine; - m_bByteAlign = EncodedByteAlign; - m_bBlack = BlackIs1; - m_OrigWidth = Columns; - m_OrigHeight = Rows; - if (m_OrigWidth == 0) { - m_OrigWidth = width; - } - if (m_OrigHeight == 0) { - m_OrigHeight = height; - } - // Should not overflow. Checked by FPDFAPI_CreateFaxDecoder. - m_Pitch = (static_cast(m_OrigWidth) + 31) / 32 * 4; - m_OutputWidth = m_OrigWidth; - m_OutputHeight = m_OrigHeight; - m_pScanlineBuf = FX_Alloc(uint8_t, m_Pitch); - m_pRefBuf = FX_Alloc(uint8_t, m_Pitch); - m_pSrcBuf = src_buf; - m_SrcSize = src_size; - m_nComps = 1; - m_bpc = 1; - m_bColorTransformed = FALSE; - return TRUE; -} -FX_BOOL CCodec_FaxDecoder::v_Rewind() { - FXSYS_memset(m_pRefBuf, 0xff, m_Pitch); - bitpos = 0; - return TRUE; -} -uint8_t* CCodec_FaxDecoder::v_GetNextLine() { - int bitsize = m_SrcSize * 8; - FaxSkipEOL(m_pSrcBuf, bitsize, bitpos); - if (bitpos >= bitsize) { - return NULL; - } - FXSYS_memset(m_pScanlineBuf, 0xff, m_Pitch); - if (m_Encoding < 0) { - FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, - m_OrigWidth); - FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch); - } else if (m_Encoding == 0) { - FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidth); - } else { - FX_BOOL bNext1D = m_pSrcBuf[bitpos / 8] & (1 << (7 - bitpos % 8)); - bitpos++; - if (bNext1D) { - FaxGet1DLine(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_OrigWidth); - } else { - FaxG4GetRow(m_pSrcBuf, bitsize, bitpos, m_pScanlineBuf, m_pRefBuf, - m_OrigWidth); - } - FXSYS_memcpy(m_pRefBuf, m_pScanlineBuf, m_Pitch); - } - if (m_bEndOfLine) { - FaxSkipEOL(m_pSrcBuf, bitsize, bitpos); - } - if (m_bByteAlign && bitpos < bitsize) { - int bitpos0 = bitpos; - int bitpos1 = (bitpos + 7) / 8 * 8; - while (m_bByteAlign && bitpos0 < bitpos1) { - int bit = m_pSrcBuf[bitpos0 / 8] & (1 << (7 - bitpos0 % 8)); - if (bit != 0) { - m_bByteAlign = FALSE; - } else { - bitpos0++; - } - } - if (m_bByteAlign) { - bitpos = bitpos1; - } - } - if (m_bBlack) { - for (FX_DWORD i = 0; i < m_Pitch; i++) { - m_pScanlineBuf[i] = ~m_pScanlineBuf[i]; - } - } - return m_pScanlineBuf; -} -FX_DWORD CCodec_FaxDecoder::GetSrcOffset() { - FX_DWORD ret = (bitpos + 7) / 8; - if (ret > m_SrcSize) { - ret = m_SrcSize; - } - return ret; -} - -void FaxG4Decode(const uint8_t* src_buf, - FX_DWORD src_size, - int* pbitpos, - uint8_t* dest_buf, - int width, - int height, - int pitch) { - if (pitch == 0) { - pitch = (width + 7) / 8; - } - uint8_t* ref_buf = FX_Alloc(uint8_t, pitch); - FXSYS_memset(ref_buf, 0xff, pitch); - int bitpos = *pbitpos; - for (int iRow = 0; iRow < height; iRow++) { - uint8_t* line_buf = dest_buf + iRow * pitch; - FXSYS_memset(line_buf, 0xff, pitch); - FaxG4GetRow(src_buf, src_size << 3, bitpos, line_buf, ref_buf, width); - FXSYS_memcpy(ref_buf, line_buf, pitch); - } - FX_Free(ref_buf); - *pbitpos = bitpos; -} - -class CCodec_FaxEncoder { - public: - CCodec_FaxEncoder(const uint8_t* src_buf, int width, int height, int pitch); - ~CCodec_FaxEncoder(); - void Encode(uint8_t*& dest_buf, FX_DWORD& dest_size); - void Encode2DLine(const uint8_t* scan_line); - CFX_BinaryBuf m_DestBuf; - uint8_t* m_pRefLine; - uint8_t* m_pLineBuf; - int m_Cols, m_Rows, m_Pitch; - const uint8_t* m_pSrcBuf; -}; -CCodec_FaxEncoder::CCodec_FaxEncoder(const uint8_t* src_buf, - int width, - int height, - int pitch) { - m_pSrcBuf = src_buf; - m_Cols = width; - m_Rows = height; - m_Pitch = pitch; - m_pRefLine = FX_Alloc(uint8_t, m_Pitch); - FXSYS_memset(m_pRefLine, 0xff, m_Pitch); - m_pLineBuf = FX_Alloc2D(uint8_t, m_Pitch, 8); - m_DestBuf.EstimateSize(0, 10240); -} -CCodec_FaxEncoder::~CCodec_FaxEncoder() { - FX_Free(m_pRefLine); - FX_Free(m_pLineBuf); -} -void CCodec_FaxEncoder::Encode(uint8_t*& dest_buf, FX_DWORD& dest_size) { - int dest_bitpos = 0; - uint8_t last_byte = 0; - for (int i = 0; i < m_Rows; i++) { - const uint8_t* scan_line = m_pSrcBuf + i * m_Pitch; - FXSYS_memset(m_pLineBuf, 0, m_Pitch * 8); - m_pLineBuf[0] = last_byte; - FaxEncode2DLine(m_pLineBuf, dest_bitpos, scan_line, m_pRefLine, m_Cols); - m_DestBuf.AppendBlock(m_pLineBuf, dest_bitpos / 8); - last_byte = m_pLineBuf[dest_bitpos / 8]; - dest_bitpos %= 8; - FXSYS_memcpy(m_pRefLine, scan_line, m_Pitch); - } - if (dest_bitpos) { - m_DestBuf.AppendByte(last_byte); - } - dest_size = m_DestBuf.GetSize(); - dest_buf = m_DestBuf.DetachBuffer(); -} -FX_BOOL CCodec_FaxModule::Encode(const uint8_t* src_buf, - int width, - int height, - int pitch, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - CCodec_FaxEncoder encoder(src_buf, width, height, pitch); - encoder.Encode(dest_buf, dest_size); - return TRUE; -} -ICodec_ScanlineDecoder* CCodec_FaxModule::CreateDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int K, - FX_BOOL EndOfLine, - FX_BOOL EncodedByteAlign, - FX_BOOL BlackIs1, - int Columns, - int Rows) { - CCodec_FaxDecoder* pDecoder = new CCodec_FaxDecoder; - pDecoder->Create(src_buf, src_size, width, height, K, EndOfLine, - EncodedByteAlign, BlackIs1, Columns, Rows); - return pDecoder; -} diff --git a/core/src/fxcodec/codec/fx_codec_flate.cpp b/core/src/fxcodec/codec/fx_codec_flate.cpp deleted file mode 100644 index faffebda28..0000000000 --- a/core/src/fxcodec/codec/fx_codec_flate.cpp +++ /dev/null @@ -1,1007 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/codec/codec_int.h" - -#include -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxcodec/fx_codec_flate.h" -#include "third_party/zlib_v128/zlib.h" - -extern "C" { -static void* my_alloc_func(void* opaque, - unsigned int items, - unsigned int size) { - return FX_Alloc2D(uint8_t, items, size); -} -static void my_free_func(void* opaque, void* address) { - FX_Free(address); -} -static int FPDFAPI_FlateGetTotalOut(void* context) { - return ((z_stream*)context)->total_out; -} -static int FPDFAPI_FlateGetTotalIn(void* context) { - return ((z_stream*)context)->total_in; -} -static void FPDFAPI_FlateCompress(unsigned char* dest_buf, - unsigned long* dest_size, - const unsigned char* src_buf, - unsigned long src_size) { - compress(dest_buf, dest_size, src_buf, src_size); -} -void* FPDFAPI_FlateInit(void* (*alloc_func)(void*, unsigned int, unsigned int), - void (*free_func)(void*, void*)) { - z_stream* p = (z_stream*)alloc_func(0, 1, sizeof(z_stream)); - if (!p) { - return NULL; - } - FXSYS_memset(p, 0, sizeof(z_stream)); - p->zalloc = alloc_func; - p->zfree = free_func; - inflateInit(p); - return p; -} -void FPDFAPI_FlateInput(void* context, - const unsigned char* src_buf, - unsigned int src_size) { - ((z_stream*)context)->next_in = (unsigned char*)src_buf; - ((z_stream*)context)->avail_in = src_size; -} -int FPDFAPI_FlateOutput(void* context, - unsigned char* dest_buf, - unsigned int dest_size) { - ((z_stream*)context)->next_out = dest_buf; - ((z_stream*)context)->avail_out = dest_size; - unsigned int pre_pos = (unsigned int)FPDFAPI_FlateGetTotalOut(context); - int ret = inflate((z_stream*)context, Z_SYNC_FLUSH); - unsigned int post_pos = (unsigned int)FPDFAPI_FlateGetTotalOut(context); - unsigned int written = post_pos - pre_pos; - if (written < dest_size) { - FXSYS_memset(dest_buf + written, '\0', dest_size - written); - } - return ret; -} -int FPDFAPI_FlateGetAvailIn(void* context) { - return ((z_stream*)context)->avail_in; -} -int FPDFAPI_FlateGetAvailOut(void* context) { - return ((z_stream*)context)->avail_out; -} -void FPDFAPI_FlateEnd(void* context) { - inflateEnd((z_stream*)context); - ((z_stream*)context)->zfree(0, context); -} -} // extern "C" - -namespace { - -class CLZWDecoder { - public: - int Decode(uint8_t* output, - FX_DWORD& outlen, - const uint8_t* input, - FX_DWORD& size, - FX_BOOL bEarlyChange); - - private: - void AddCode(FX_DWORD prefix_code, uint8_t append_char); - void DecodeString(FX_DWORD code); - - FX_DWORD m_InPos; - FX_DWORD m_OutPos; - uint8_t* m_pOutput; - const uint8_t* m_pInput; - FX_BOOL m_Early; - FX_DWORD m_CodeArray[5021]; - FX_DWORD m_nCodes; - uint8_t m_DecodeStack[4000]; - FX_DWORD m_StackLen; - int m_CodeLen; -}; -void CLZWDecoder::AddCode(FX_DWORD prefix_code, uint8_t append_char) { - if (m_nCodes + m_Early == 4094) { - return; - } - m_CodeArray[m_nCodes++] = (prefix_code << 16) | append_char; - if (m_nCodes + m_Early == 512 - 258) { - m_CodeLen = 10; - } else if (m_nCodes + m_Early == 1024 - 258) { - m_CodeLen = 11; - } else if (m_nCodes + m_Early == 2048 - 258) { - m_CodeLen = 12; - } -} -void CLZWDecoder::DecodeString(FX_DWORD code) { - while (1) { - int index = code - 258; - if (index < 0 || index >= (int)m_nCodes) { - break; - } - FX_DWORD data = m_CodeArray[index]; - if (m_StackLen >= sizeof(m_DecodeStack)) { - return; - } - m_DecodeStack[m_StackLen++] = (uint8_t)data; - code = data >> 16; - } - if (m_StackLen >= sizeof(m_DecodeStack)) { - return; - } - m_DecodeStack[m_StackLen++] = (uint8_t)code; -} -int CLZWDecoder::Decode(uint8_t* dest_buf, - FX_DWORD& dest_size, - const uint8_t* src_buf, - FX_DWORD& src_size, - FX_BOOL bEarlyChange) { - m_CodeLen = 9; - m_InPos = 0; - m_OutPos = 0; - m_pInput = src_buf; - m_pOutput = dest_buf; - m_Early = bEarlyChange ? 1 : 0; - m_nCodes = 0; - FX_DWORD old_code = (FX_DWORD)-1; - uint8_t last_char; - while (1) { - if (m_InPos + m_CodeLen > src_size * 8) { - break; - } - int byte_pos = m_InPos / 8; - int bit_pos = m_InPos % 8, bit_left = m_CodeLen; - FX_DWORD code = 0; - if (bit_pos) { - bit_left -= 8 - bit_pos; - code = (m_pInput[byte_pos++] & ((1 << (8 - bit_pos)) - 1)) << bit_left; - } - if (bit_left < 8) { - code |= m_pInput[byte_pos] >> (8 - bit_left); - } else { - bit_left -= 8; - code |= m_pInput[byte_pos++] << bit_left; - if (bit_left) { - code |= m_pInput[byte_pos] >> (8 - bit_left); - } - } - m_InPos += m_CodeLen; - if (code < 256) { - if (m_OutPos == dest_size) { - return -5; - } - if (m_pOutput) { - m_pOutput[m_OutPos] = (uint8_t)code; - } - m_OutPos++; - last_char = (uint8_t)code; - if (old_code != (FX_DWORD)-1) { - AddCode(old_code, last_char); - } - old_code = code; - } else if (code == 256) { - m_CodeLen = 9; - m_nCodes = 0; - old_code = (FX_DWORD)-1; - } else if (code == 257) { - break; - } else { - if (old_code == (FX_DWORD)-1) { - return 2; - } - m_StackLen = 0; - if (code >= m_nCodes + 258) { - if (m_StackLen < sizeof(m_DecodeStack)) { - m_DecodeStack[m_StackLen++] = last_char; - } - DecodeString(old_code); - } else { - DecodeString(code); - } - if (m_OutPos + m_StackLen > dest_size) { - return -5; - } - if (m_pOutput) { - for (FX_DWORD i = 0; i < m_StackLen; i++) { - m_pOutput[m_OutPos + i] = m_DecodeStack[m_StackLen - i - 1]; - } - } - m_OutPos += m_StackLen; - last_char = m_DecodeStack[m_StackLen - 1]; - if (old_code < 256) { - AddCode(old_code, last_char); - } else if (old_code - 258 >= m_nCodes) { - dest_size = m_OutPos; - src_size = (m_InPos + 7) / 8; - return 0; - } else { - AddCode(old_code, last_char); - } - old_code = code; - } - } - dest_size = m_OutPos; - src_size = (m_InPos + 7) / 8; - return 0; -} - -uint8_t PaethPredictor(int a, int b, int c) { - int p = a + b - c; - int pa = FXSYS_abs(p - a); - int pb = FXSYS_abs(p - b); - int pc = FXSYS_abs(p - c); - if (pa <= pb && pa <= pc) { - return (uint8_t)a; - } - if (pb <= pc) { - return (uint8_t)b; - } - return (uint8_t)c; -} - -FX_BOOL PNG_PredictorEncode(uint8_t*& data_buf, - FX_DWORD& data_size, - int predictor, - int Colors, - int BitsPerComponent, - int Columns) { - const int BytesPerPixel = (Colors * BitsPerComponent + 7) / 8; - const int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; - if (row_size <= 0) - return FALSE; - const int row_count = (data_size + row_size - 1) / row_size; - const int last_row_size = data_size % row_size; - uint8_t* dest_buf = FX_Alloc2D(uint8_t, row_size + 1, row_count); - int byte_cnt = 0; - uint8_t* pSrcData = data_buf; - uint8_t* pDestData = dest_buf; - for (int row = 0; row < row_count; row++) { - if (predictor == 10) { - pDestData[0] = 0; - int move_size = row_size; - if (move_size * (row + 1) > (int)data_size) { - move_size = data_size - (move_size * row); - } - FXSYS_memmove(pDestData + 1, pSrcData, move_size); - pDestData += (move_size + 1); - pSrcData += move_size; - byte_cnt += move_size; - continue; - } - for (int byte = 0; byte < row_size && byte_cnt < (int)data_size; byte++) { - switch (predictor) { - case 11: { - pDestData[0] = 1; - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pSrcData[byte - BytesPerPixel]; - } - pDestData[byte + 1] = pSrcData[byte] - left; - } break; - case 12: { - pDestData[0] = 2; - uint8_t up = 0; - if (row) { - up = pSrcData[byte - row_size]; - } - pDestData[byte + 1] = pSrcData[byte] - up; - } break; - case 13: { - pDestData[0] = 3; - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pSrcData[byte - BytesPerPixel]; - } - uint8_t up = 0; - if (row) { - up = pSrcData[byte - row_size]; - } - pDestData[byte + 1] = pSrcData[byte] - (left + up) / 2; - } break; - case 14: { - pDestData[0] = 4; - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pSrcData[byte - BytesPerPixel]; - } - uint8_t up = 0; - if (row) { - up = pSrcData[byte - row_size]; - } - uint8_t upper_left = 0; - if (byte >= BytesPerPixel && row) { - upper_left = pSrcData[byte - row_size - BytesPerPixel]; - } - pDestData[byte + 1] = - pSrcData[byte] - PaethPredictor(left, up, upper_left); - } break; - default: { pDestData[byte + 1] = pSrcData[byte]; } break; - } - byte_cnt++; - } - pDestData += (row_size + 1); - pSrcData += row_size; - } - FX_Free(data_buf); - data_buf = dest_buf; - data_size = (row_size + 1) * row_count - - (last_row_size > 0 ? (row_size - last_row_size) : 0); - return TRUE; -} - -void PNG_PredictLine(uint8_t* pDestData, - const uint8_t* pSrcData, - const uint8_t* pLastLine, - int bpc, - int nColors, - int nPixels) { - int row_size = (nPixels * bpc * nColors + 7) / 8; - int BytesPerPixel = (bpc * nColors + 7) / 8; - uint8_t tag = pSrcData[0]; - if (tag == 0) { - FXSYS_memmove(pDestData, pSrcData + 1, row_size); - return; - } - for (int byte = 0; byte < row_size; byte++) { - uint8_t raw_byte = pSrcData[byte + 1]; - switch (tag) { - case 1: { - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pDestData[byte - BytesPerPixel]; - } - pDestData[byte] = raw_byte + left; - break; - } - case 2: { - uint8_t up = 0; - if (pLastLine) { - up = pLastLine[byte]; - } - pDestData[byte] = raw_byte + up; - break; - } - case 3: { - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pDestData[byte - BytesPerPixel]; - } - uint8_t up = 0; - if (pLastLine) { - up = pLastLine[byte]; - } - pDestData[byte] = raw_byte + (up + left) / 2; - break; - } - case 4: { - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pDestData[byte - BytesPerPixel]; - } - uint8_t up = 0; - if (pLastLine) { - up = pLastLine[byte]; - } - uint8_t upper_left = 0; - if (byte >= BytesPerPixel && pLastLine) { - upper_left = pLastLine[byte - BytesPerPixel]; - } - pDestData[byte] = raw_byte + PaethPredictor(left, up, upper_left); - break; - } - default: - pDestData[byte] = raw_byte; - break; - } - } -} - -FX_BOOL PNG_Predictor(uint8_t*& data_buf, - FX_DWORD& data_size, - int Colors, - int BitsPerComponent, - int Columns) { - const int BytesPerPixel = (Colors * BitsPerComponent + 7) / 8; - const int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; - if (row_size <= 0) - return FALSE; - const int row_count = (data_size + row_size) / (row_size + 1); - if (row_count <= 0) - return FALSE; - const int last_row_size = data_size % (row_size + 1); - uint8_t* dest_buf = FX_Alloc2D(uint8_t, row_size, row_count); - int byte_cnt = 0; - uint8_t* pSrcData = data_buf; - uint8_t* pDestData = dest_buf; - for (int row = 0; row < row_count; row++) { - uint8_t tag = pSrcData[0]; - byte_cnt++; - if (tag == 0) { - int move_size = row_size; - if ((row + 1) * (move_size + 1) > (int)data_size) { - move_size = last_row_size - 1; - } - FXSYS_memmove(pDestData, pSrcData + 1, move_size); - pSrcData += move_size + 1; - pDestData += move_size; - byte_cnt += move_size; - continue; - } - for (int byte = 0; byte < row_size && byte_cnt < (int)data_size; byte++) { - uint8_t raw_byte = pSrcData[byte + 1]; - switch (tag) { - case 1: { - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pDestData[byte - BytesPerPixel]; - } - pDestData[byte] = raw_byte + left; - break; - } - case 2: { - uint8_t up = 0; - if (row) { - up = pDestData[byte - row_size]; - } - pDestData[byte] = raw_byte + up; - break; - } - case 3: { - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pDestData[byte - BytesPerPixel]; - } - uint8_t up = 0; - if (row) { - up = pDestData[byte - row_size]; - } - pDestData[byte] = raw_byte + (up + left) / 2; - break; - } - case 4: { - uint8_t left = 0; - if (byte >= BytesPerPixel) { - left = pDestData[byte - BytesPerPixel]; - } - uint8_t up = 0; - if (row) { - up = pDestData[byte - row_size]; - } - uint8_t upper_left = 0; - if (byte >= BytesPerPixel && row) { - upper_left = pDestData[byte - row_size - BytesPerPixel]; - } - pDestData[byte] = raw_byte + PaethPredictor(left, up, upper_left); - break; - } - default: - pDestData[byte] = raw_byte; - break; - } - byte_cnt++; - } - pSrcData += row_size + 1; - pDestData += row_size; - } - FX_Free(data_buf); - data_buf = dest_buf; - data_size = row_size * row_count - - (last_row_size > 0 ? (row_size + 1 - last_row_size) : 0); - return TRUE; -} - -void TIFF_PredictorEncodeLine(uint8_t* dest_buf, - int row_size, - int BitsPerComponent, - int Colors, - int Columns) { - int BytesPerPixel = BitsPerComponent * Colors / 8; - if (BitsPerComponent < 8) { - uint8_t mask = 0x01; - if (BitsPerComponent == 2) { - mask = 0x03; - } else if (BitsPerComponent == 4) { - mask = 0x0F; - } - int row_bits = Colors * BitsPerComponent * Columns; - for (int i = row_bits - BitsPerComponent; i >= BitsPerComponent; - i -= BitsPerComponent) { - int col = i % 8; - int index = i / 8; - int col_pre = - (col == 0) ? (8 - BitsPerComponent) : (col - BitsPerComponent); - int index_pre = (col == 0) ? (index - 1) : index; - uint8_t cur = (dest_buf[index] >> (8 - col - BitsPerComponent)) & mask; - uint8_t left = - (dest_buf[index_pre] >> (8 - col_pre - BitsPerComponent)) & mask; - cur -= left; - cur &= mask; - cur <<= (8 - col - BitsPerComponent); - dest_buf[index] &= ~(mask << ((8 - col - BitsPerComponent))); - dest_buf[index] |= cur; - } - } else if (BitsPerComponent == 8) { - for (int i = row_size - 1; i >= BytesPerPixel; i--) { - dest_buf[i] -= dest_buf[i - BytesPerPixel]; - } - } else { - for (int i = row_size - BytesPerPixel; i >= BytesPerPixel; - i -= BytesPerPixel) { - FX_WORD pixel = (dest_buf[i] << 8) | dest_buf[i + 1]; - pixel -= - (dest_buf[i - BytesPerPixel] << 8) | dest_buf[i - BytesPerPixel + 1]; - dest_buf[i] = pixel >> 8; - dest_buf[i + 1] = (uint8_t)pixel; - } - } -} - -FX_BOOL TIFF_PredictorEncode(uint8_t*& data_buf, - FX_DWORD& data_size, - int Colors, - int BitsPerComponent, - int Columns) { - int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; - if (row_size == 0) - return FALSE; - const int row_count = (data_size + row_size - 1) / row_size; - const int last_row_size = data_size % row_size; - for (int row = 0; row < row_count; row++) { - uint8_t* scan_line = data_buf + row * row_size; - if ((row + 1) * row_size > (int)data_size) { - row_size = last_row_size; - } - TIFF_PredictorEncodeLine(scan_line, row_size, BitsPerComponent, Colors, - Columns); - } - return TRUE; -} - -void TIFF_PredictLine(uint8_t* dest_buf, - FX_DWORD row_size, - int BitsPerComponent, - int Colors, - int Columns) { - if (BitsPerComponent == 1) { - int row_bits = std::min(BitsPerComponent * Colors * Columns, - pdfium::base::checked_cast(row_size * 8)); - int index_pre = 0; - int col_pre = 0; - for (int i = 1; i < row_bits; i++) { - int col = i % 8; - int index = i / 8; - if (((dest_buf[index] >> (7 - col)) & 1) ^ - ((dest_buf[index_pre] >> (7 - col_pre)) & 1)) { - dest_buf[index] |= 1 << (7 - col); - } else { - dest_buf[index] &= ~(1 << (7 - col)); - } - index_pre = index; - col_pre = col; - } - return; - } - int BytesPerPixel = BitsPerComponent * Colors / 8; - if (BitsPerComponent == 16) { - for (FX_DWORD i = BytesPerPixel; i < row_size; i += 2) { - FX_WORD pixel = - (dest_buf[i - BytesPerPixel] << 8) | dest_buf[i - BytesPerPixel + 1]; - pixel += (dest_buf[i] << 8) | dest_buf[i + 1]; - dest_buf[i] = pixel >> 8; - dest_buf[i + 1] = (uint8_t)pixel; - } - } else { - for (FX_DWORD i = BytesPerPixel; i < row_size; i++) { - dest_buf[i] += dest_buf[i - BytesPerPixel]; - } - } -} - -FX_BOOL TIFF_Predictor(uint8_t*& data_buf, - FX_DWORD& data_size, - int Colors, - int BitsPerComponent, - int Columns) { - int row_size = (Colors * BitsPerComponent * Columns + 7) / 8; - if (row_size == 0) - return FALSE; - const int row_count = (data_size + row_size - 1) / row_size; - const int last_row_size = data_size % row_size; - for (int row = 0; row < row_count; row++) { - uint8_t* scan_line = data_buf + row * row_size; - if ((row + 1) * row_size > (int)data_size) { - row_size = last_row_size; - } - TIFF_PredictLine(scan_line, row_size, BitsPerComponent, Colors, Columns); - } - return TRUE; -} - -void FlateUncompress(const uint8_t* src_buf, - FX_DWORD src_size, - FX_DWORD orig_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size, - FX_DWORD& offset) { - FX_DWORD guess_size = orig_size ? orig_size : src_size * 2; - const FX_DWORD kStepSize = 10240; - FX_DWORD alloc_step = orig_size ? kStepSize : std::min(src_size, kStepSize); - static const FX_DWORD kMaxInitialAllocSize = 10000000; - if (guess_size > kMaxInitialAllocSize) { - guess_size = kMaxInitialAllocSize; - alloc_step = kMaxInitialAllocSize; - } - FX_DWORD buf_size = guess_size; - FX_DWORD last_buf_size = buf_size; - - dest_buf = nullptr; - dest_size = 0; - void* context = FPDFAPI_FlateInit(my_alloc_func, my_free_func); - if (!context) - return; - - std::unique_ptr guess_buf( - FX_Alloc(uint8_t, guess_size + 1)); - guess_buf.get()[guess_size] = '\0'; - - FPDFAPI_FlateInput(context, src_buf, src_size); - - if (src_size < kStepSize) { - // This is the old implementation. - uint8_t* cur_buf = guess_buf.get(); - while (1) { - int32_t ret = FPDFAPI_FlateOutput(context, cur_buf, buf_size); - if (ret != Z_OK) - break; - int32_t avail_buf_size = FPDFAPI_FlateGetAvailOut(context); - if (avail_buf_size != 0) - break; - - FX_DWORD old_size = guess_size; - guess_size += alloc_step; - if (guess_size < old_size || guess_size + 1 < guess_size) { - FPDFAPI_FlateEnd(context); - return; - } - - { - uint8_t* new_buf = - FX_Realloc(uint8_t, guess_buf.release(), guess_size + 1); - guess_buf.reset(new_buf); - } - guess_buf.get()[guess_size] = '\0'; - cur_buf = guess_buf.get() + old_size; - buf_size = guess_size - old_size; - } - dest_size = FPDFAPI_FlateGetTotalOut(context); - offset = FPDFAPI_FlateGetTotalIn(context); - if (guess_size / 2 > dest_size) { - { - uint8_t* new_buf = - FX_Realloc(uint8_t, guess_buf.release(), dest_size + 1); - guess_buf.reset(new_buf); - } - guess_size = dest_size; - guess_buf.get()[guess_size] = '\0'; - } - dest_buf = guess_buf.release(); - } else { - CFX_ArrayTemplate result_tmp_bufs; - uint8_t* cur_buf = guess_buf.release(); - while (1) { - int32_t ret = FPDFAPI_FlateOutput(context, cur_buf, buf_size); - int32_t avail_buf_size = FPDFAPI_FlateGetAvailOut(context); - if (ret != Z_OK) { - last_buf_size = buf_size - avail_buf_size; - result_tmp_bufs.Add(cur_buf); - break; - } - if (avail_buf_size != 0) { - last_buf_size = buf_size - avail_buf_size; - result_tmp_bufs.Add(cur_buf); - break; - } - - result_tmp_bufs.Add(cur_buf); - cur_buf = FX_Alloc(uint8_t, buf_size + 1); - cur_buf[buf_size] = '\0'; - } - dest_size = FPDFAPI_FlateGetTotalOut(context); - offset = FPDFAPI_FlateGetTotalIn(context); - if (result_tmp_bufs.GetSize() == 1) { - dest_buf = result_tmp_bufs[0]; - } else { - uint8_t* result_buf = FX_Alloc(uint8_t, dest_size); - FX_DWORD result_pos = 0; - for (int32_t i = 0; i < result_tmp_bufs.GetSize(); i++) { - uint8_t* tmp_buf = result_tmp_bufs[i]; - FX_DWORD tmp_buf_size = buf_size; - if (i == result_tmp_bufs.GetSize() - 1) { - tmp_buf_size = last_buf_size; - } - FXSYS_memcpy(result_buf + result_pos, tmp_buf, tmp_buf_size); - result_pos += tmp_buf_size; - FX_Free(result_tmp_bufs[i]); - } - dest_buf = result_buf; - } - } - FPDFAPI_FlateEnd(context); -} - -} // namespace - -class CCodec_FlateScanlineDecoder : public CCodec_ScanlineDecoder { - public: - CCodec_FlateScanlineDecoder(); - ~CCodec_FlateScanlineDecoder() override; - - void Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc, - int predictor, - int Colors, - int BitsPerComponent, - int Columns); - void Destroy() { delete this; } - - // CCodec_ScanlineDecoder - void v_DownScale(int dest_width, int dest_height) override {} - FX_BOOL v_Rewind() override; - uint8_t* v_GetNextLine() override; - FX_DWORD GetSrcOffset() override; - - void* m_pFlate; - const uint8_t* m_SrcBuf; - FX_DWORD m_SrcSize; - uint8_t* m_pScanline; - uint8_t* m_pLastLine; - uint8_t* m_pPredictBuffer; - uint8_t* m_pPredictRaw; - int m_Predictor; - int m_Colors; - int m_BitsPerComponent; - int m_Columns; - FX_DWORD m_PredictPitch; - size_t m_LeftOver; -}; - -CCodec_FlateScanlineDecoder::CCodec_FlateScanlineDecoder() { - m_pFlate = NULL; - m_pScanline = NULL; - m_pLastLine = NULL; - m_pPredictBuffer = NULL; - m_pPredictRaw = NULL; - m_LeftOver = 0; -} -CCodec_FlateScanlineDecoder::~CCodec_FlateScanlineDecoder() { - FX_Free(m_pScanline); - FX_Free(m_pLastLine); - FX_Free(m_pPredictBuffer); - FX_Free(m_pPredictRaw); - if (m_pFlate) { - FPDFAPI_FlateEnd(m_pFlate); - } -} -void CCodec_FlateScanlineDecoder::Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc, - int predictor, - int Colors, - int BitsPerComponent, - int Columns) { - m_SrcBuf = src_buf; - m_SrcSize = src_size; - m_OutputWidth = m_OrigWidth = width; - m_OutputHeight = m_OrigHeight = height; - m_nComps = nComps; - m_bpc = bpc; - m_bColorTransformed = FALSE; - m_Pitch = (static_cast(width) * nComps * bpc + 7) / 8; - m_pScanline = FX_Alloc(uint8_t, m_Pitch); - m_Predictor = 0; - if (predictor) { - if (predictor >= 10) { - m_Predictor = 2; - } else if (predictor == 2) { - m_Predictor = 1; - } - if (m_Predictor) { - if (BitsPerComponent * Colors * Columns == 0) { - BitsPerComponent = m_bpc; - Colors = m_nComps; - Columns = m_OrigWidth; - } - m_Colors = Colors; - m_BitsPerComponent = BitsPerComponent; - m_Columns = Columns; - m_PredictPitch = - (static_cast(m_BitsPerComponent) * m_Colors * m_Columns + - 7) / - 8; - m_pLastLine = FX_Alloc(uint8_t, m_PredictPitch); - m_pPredictRaw = FX_Alloc(uint8_t, m_PredictPitch + 1); - m_pPredictBuffer = FX_Alloc(uint8_t, m_PredictPitch); - } - } -} -FX_BOOL CCodec_FlateScanlineDecoder::v_Rewind() { - if (m_pFlate) { - FPDFAPI_FlateEnd(m_pFlate); - } - m_pFlate = FPDFAPI_FlateInit(my_alloc_func, my_free_func); - if (!m_pFlate) { - return FALSE; - } - FPDFAPI_FlateInput(m_pFlate, m_SrcBuf, m_SrcSize); - m_LeftOver = 0; - return TRUE; -} -uint8_t* CCodec_FlateScanlineDecoder::v_GetNextLine() { - if (m_Predictor) { - if (m_Pitch == m_PredictPitch) { - if (m_Predictor == 2) { - FPDFAPI_FlateOutput(m_pFlate, m_pPredictRaw, m_PredictPitch + 1); - PNG_PredictLine(m_pScanline, m_pPredictRaw, m_pLastLine, - m_BitsPerComponent, m_Colors, m_Columns); - FXSYS_memcpy(m_pLastLine, m_pScanline, m_PredictPitch); - } else { - FPDFAPI_FlateOutput(m_pFlate, m_pScanline, m_Pitch); - TIFF_PredictLine(m_pScanline, m_PredictPitch, m_bpc, m_nComps, - m_OutputWidth); - } - } else { - size_t bytes_to_go = m_Pitch; - size_t read_leftover = - m_LeftOver > bytes_to_go ? bytes_to_go : m_LeftOver; - if (read_leftover) { - FXSYS_memcpy(m_pScanline, - m_pPredictBuffer + m_PredictPitch - m_LeftOver, - read_leftover); - m_LeftOver -= read_leftover; - bytes_to_go -= read_leftover; - } - while (bytes_to_go) { - if (m_Predictor == 2) { - FPDFAPI_FlateOutput(m_pFlate, m_pPredictRaw, m_PredictPitch + 1); - PNG_PredictLine(m_pPredictBuffer, m_pPredictRaw, m_pLastLine, - m_BitsPerComponent, m_Colors, m_Columns); - FXSYS_memcpy(m_pLastLine, m_pPredictBuffer, m_PredictPitch); - } else { - FPDFAPI_FlateOutput(m_pFlate, m_pPredictBuffer, m_PredictPitch); - TIFF_PredictLine(m_pPredictBuffer, m_PredictPitch, m_BitsPerComponent, - m_Colors, m_Columns); - } - size_t read_bytes = - m_PredictPitch > bytes_to_go ? bytes_to_go : m_PredictPitch; - FXSYS_memcpy(m_pScanline + m_Pitch - bytes_to_go, m_pPredictBuffer, - read_bytes); - m_LeftOver += m_PredictPitch - read_bytes; - bytes_to_go -= read_bytes; - } - } - } else { - FPDFAPI_FlateOutput(m_pFlate, m_pScanline, m_Pitch); - } - return m_pScanline; -} -FX_DWORD CCodec_FlateScanlineDecoder::GetSrcOffset() { - return FPDFAPI_FlateGetTotalIn(m_pFlate); -} - -ICodec_ScanlineDecoder* CCodec_FlateModule::CreateDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - int bpc, - int predictor, - int Colors, - int BitsPerComponent, - int Columns) { - CCodec_FlateScanlineDecoder* pDecoder = new CCodec_FlateScanlineDecoder; - pDecoder->Create(src_buf, src_size, width, height, nComps, bpc, predictor, - Colors, BitsPerComponent, Columns); - return pDecoder; -} -FX_DWORD CCodec_FlateModule::FlateOrLZWDecode(FX_BOOL bLZW, - const uint8_t* src_buf, - FX_DWORD src_size, - FX_BOOL bEarlyChange, - int predictor, - int Colors, - int BitsPerComponent, - int Columns, - FX_DWORD estimated_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - dest_buf = NULL; - FX_DWORD offset = 0; - int predictor_type = 0; - if (predictor) { - if (predictor >= 10) { - predictor_type = 2; - } else if (predictor == 2) { - predictor_type = 1; - } - } - if (bLZW) { - { - std::unique_ptr decoder(new CLZWDecoder); - dest_size = (FX_DWORD)-1; - offset = src_size; - int err = decoder->Decode(NULL, dest_size, src_buf, offset, bEarlyChange); - if (err || dest_size == 0 || dest_size + 1 < dest_size) { - return -1; - } - } - { - std::unique_ptr decoder(new CLZWDecoder); - dest_buf = FX_Alloc(uint8_t, dest_size + 1); - dest_buf[dest_size] = '\0'; - decoder->Decode(dest_buf, dest_size, src_buf, offset, bEarlyChange); - } - } else { - FlateUncompress(src_buf, src_size, estimated_size, dest_buf, dest_size, - offset); - } - if (predictor_type == 0) { - return offset; - } - FX_BOOL ret = TRUE; - if (predictor_type == 2) { - ret = PNG_Predictor(dest_buf, dest_size, Colors, BitsPerComponent, Columns); - } else if (predictor_type == 1) { - ret = - TIFF_Predictor(dest_buf, dest_size, Colors, BitsPerComponent, Columns); - } - return ret ? offset : -1; -} -FX_BOOL CCodec_FlateModule::Encode(const uint8_t* src_buf, - FX_DWORD src_size, - int predictor, - int Colors, - int BitsPerComponent, - int Columns, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - if (predictor != 2 && predictor < 10) { - return Encode(src_buf, src_size, dest_buf, dest_size); - } - uint8_t* pSrcBuf = NULL; - pSrcBuf = FX_Alloc(uint8_t, src_size); - FXSYS_memcpy(pSrcBuf, src_buf, src_size); - FX_BOOL ret = TRUE; - if (predictor == 2) { - ret = TIFF_PredictorEncode(pSrcBuf, src_size, Colors, BitsPerComponent, - Columns); - } else if (predictor >= 10) { - ret = PNG_PredictorEncode(pSrcBuf, src_size, predictor, Colors, - BitsPerComponent, Columns); - } - if (ret) - ret = Encode(pSrcBuf, src_size, dest_buf, dest_size); - FX_Free(pSrcBuf); - return ret; -} -FX_BOOL CCodec_FlateModule::Encode(const uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - dest_size = src_size + src_size / 1000 + 12; - dest_buf = FX_Alloc(uint8_t, dest_size); - unsigned long temp_size = dest_size; - FPDFAPI_FlateCompress(dest_buf, &temp_size, src_buf, src_size); - dest_size = (FX_DWORD)temp_size; - return TRUE; -} diff --git a/core/src/fxcodec/codec/fx_codec_gif.cpp b/core/src/fxcodec/codec/fx_codec_gif.cpp deleted file mode 100644 index 661732fb3f..0000000000 --- a/core/src/fxcodec/codec/fx_codec_gif.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_dib.h" -#include "core/src/fxcodec/codec/codec_int.h" -#include "core/src/fxcodec/lgif/fx_gif.h" -struct FXGIF_Context { - gif_decompress_struct_p gif_ptr; - void* parent_ptr; - void* child_ptr; - - void* (*m_AllocFunc)(unsigned int); - void (*m_FreeFunc)(void*); -}; -extern "C" { -static void* gif_alloc_func(unsigned int size) { - return FX_Alloc(char, size); -} -static void gif_free_func(void* p) { - FX_Free(p); -} -}; -static void gif_error_data(gif_decompress_struct_p gif_ptr, - const FX_CHAR* err_msg) { - FXSYS_strncpy((char*)gif_ptr->err_ptr, err_msg, GIF_MAX_ERROR_SIZE - 1); - longjmp(gif_ptr->jmpbuf, 1); -} -static uint8_t* gif_ask_buf_for_pal(gif_decompress_struct_p gif_ptr, - int32_t pal_size) { - FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; - CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; - return pModule->AskLocalPaletteBufCallback( - p->child_ptr, gif_get_frame_num(gif_ptr), pal_size); -} -static void gif_record_current_position(gif_decompress_struct_p gif_ptr, - FX_DWORD* cur_pos_ptr) { - FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; - CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; - pModule->RecordCurrentPositionCallback(p->child_ptr, *cur_pos_ptr); -} -static void gif_read_scanline(gif_decompress_struct_p gif_ptr, - int32_t row_num, - uint8_t* row_buf) { - FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; - CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; - pModule->ReadScanlineCallback(p->child_ptr, row_num, row_buf); -} -static FX_BOOL gif_get_record_position(gif_decompress_struct_p gif_ptr, - FX_DWORD cur_pos, - int32_t left, - int32_t top, - int32_t width, - int32_t height, - int32_t pal_num, - void* pal_ptr, - int32_t delay_time, - FX_BOOL user_input, - int32_t trans_index, - int32_t disposal_method, - FX_BOOL interlace) { - FXGIF_Context* p = (FXGIF_Context*)gif_ptr->context_ptr; - CCodec_GifModule* pModule = (CCodec_GifModule*)p->parent_ptr; - return pModule->InputRecordPositionBufCallback( - p->child_ptr, cur_pos, FX_RECT(left, top, left + width, top + height), - pal_num, pal_ptr, delay_time, user_input, trans_index, disposal_method, - interlace); -} -void* CCodec_GifModule::Start(void* pModule) { - FXGIF_Context* p = (FXGIF_Context*)FX_Alloc(uint8_t, sizeof(FXGIF_Context)); - if (p == NULL) { - return NULL; - } - FXSYS_memset(p, 0, sizeof(FXGIF_Context)); - p->m_AllocFunc = gif_alloc_func; - p->m_FreeFunc = gif_free_func; - p->gif_ptr = NULL; - p->parent_ptr = (void*)this; - p->child_ptr = pModule; - p->gif_ptr = gif_create_decompress(); - if (p->gif_ptr == NULL) { - FX_Free(p); - return NULL; - } - p->gif_ptr->context_ptr = (void*)p; - p->gif_ptr->err_ptr = m_szLastError; - p->gif_ptr->gif_error_fn = gif_error_data; - p->gif_ptr->gif_ask_buf_for_pal_fn = gif_ask_buf_for_pal; - p->gif_ptr->gif_record_current_position_fn = gif_record_current_position; - p->gif_ptr->gif_get_row_fn = gif_read_scanline; - p->gif_ptr->gif_get_record_position_fn = gif_get_record_position; - return p; -} -void CCodec_GifModule::Finish(void* pContext) { - FXGIF_Context* p = (FXGIF_Context*)pContext; - if (p) { - gif_destroy_decompress(&p->gif_ptr); - p->m_FreeFunc(p); - } -} -int32_t CCodec_GifModule::ReadHeader(void* pContext, - int* width, - int* height, - int* pal_num, - void** pal_pp, - int* bg_index, - CFX_DIBAttribute* pAttribute) { - FXGIF_Context* p = (FXGIF_Context*)pContext; - if (setjmp(p->gif_ptr->jmpbuf)) { - return 0; - } - int32_t ret = gif_read_header(p->gif_ptr); - if (ret != 1) { - return ret; - } - if (pAttribute) { - } - *width = p->gif_ptr->width; - *height = p->gif_ptr->height; - *pal_num = p->gif_ptr->global_pal_num; - *pal_pp = p->gif_ptr->global_pal_ptr; - *bg_index = p->gif_ptr->bc_index; - return 1; -} -int32_t CCodec_GifModule::LoadFrameInfo(void* pContext, int* frame_num) { - FXGIF_Context* p = (FXGIF_Context*)pContext; - if (setjmp(p->gif_ptr->jmpbuf)) { - return 0; - } - int32_t ret = gif_get_frame(p->gif_ptr); - if (ret != 1) { - return ret; - } - *frame_num = gif_get_frame_num(p->gif_ptr); - return 1; -} -int32_t CCodec_GifModule::LoadFrame(void* pContext, - int frame_num, - CFX_DIBAttribute* pAttribute) { - FXGIF_Context* p = (FXGIF_Context*)pContext; - if (setjmp(p->gif_ptr->jmpbuf)) { - return 0; - } - int32_t ret = gif_load_frame(p->gif_ptr, frame_num); - if (ret == 1) { - if (pAttribute) { - pAttribute->m_nGifLeft = - p->gif_ptr->img_ptr_arr_ptr->GetAt(frame_num)->image_info_ptr->left; - pAttribute->m_nGifTop = - p->gif_ptr->img_ptr_arr_ptr->GetAt(frame_num)->image_info_ptr->top; - pAttribute->m_fAspectRatio = p->gif_ptr->pixel_aspect; - if (p->gif_ptr->cmt_data_ptr) { - const uint8_t* buf = - (const uint8_t*)p->gif_ptr->cmt_data_ptr->GetBuffer(0); - FX_DWORD len = p->gif_ptr->cmt_data_ptr->GetLength(); - if (len > 21) { - uint8_t size = *buf++; - if (size) { - pAttribute->m_strAuthor = CFX_ByteString(buf, size); - } else { - pAttribute->m_strAuthor.Empty(); - } - buf += size; - size = *buf++; - if (size == 20) { - FXSYS_memcpy(pAttribute->m_strTime, buf, size); - } - } - } - } - } - return ret; -} -FX_DWORD CCodec_GifModule::GetAvailInput(void* pContext, - uint8_t** avial_buf_ptr) { - FXGIF_Context* p = (FXGIF_Context*)pContext; - return gif_get_avail_input(p->gif_ptr, avial_buf_ptr); -} -void CCodec_GifModule::Input(void* pContext, - const uint8_t* src_buf, - FX_DWORD src_size) { - FXGIF_Context* p = (FXGIF_Context*)pContext; - gif_input_buffer(p->gif_ptr, (uint8_t*)src_buf, src_size); -} diff --git a/core/src/fxcodec/codec/fx_codec_icc.cpp b/core/src/fxcodec/codec/fx_codec_icc.cpp deleted file mode 100644 index ebec0b0a34..0000000000 --- a/core/src/fxcodec/codec/fx_codec_icc.cpp +++ /dev/null @@ -1,1986 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/src/fxcodec/codec/codec_int.h" -#include "third_party/lcms2-2.6/include/lcms2.h" - -const FX_DWORD N_COMPONENT_LAB = 3; -const FX_DWORD N_COMPONENT_GRAY = 1; -const FX_DWORD N_COMPONENT_RGB = 3; -const FX_DWORD N_COMPONENT_CMYK = 4; -const FX_DWORD N_COMPONENT_DEFAULT = 3; - -FX_BOOL MD5ComputeID(const void* buf, FX_DWORD dwSize, uint8_t ID[16]) { - return cmsMD5computeIDExt(buf, dwSize, ID); -} -struct CLcmsCmm { - cmsHTRANSFORM m_hTransform; - int m_nSrcComponents; - int m_nDstComponents; - FX_BOOL m_bLab; -}; -extern "C" { -int ourHandler(int ErrorCode, const char* ErrorText) { - return TRUE; -} -}; -FX_BOOL CheckComponents(cmsColorSpaceSignature cs, - int nComponents, - FX_BOOL bDst) { - if (nComponents <= 0 || nComponents > 15) { - return FALSE; - } - switch (cs) { - case cmsSigLabData: - if (nComponents < 3) { - return FALSE; - } - break; - case cmsSigGrayData: - if (bDst && nComponents != 1) { - return FALSE; - } - if (!bDst && nComponents > 2) { - return FALSE; - } - break; - case cmsSigRgbData: - if (bDst && nComponents != 3) { - return FALSE; - } - break; - case cmsSigCmykData: - if (bDst && nComponents != 4) { - return FALSE; - } - break; - default: - if (nComponents != 3) { - return FALSE; - } - break; - } - return TRUE; -} - -FX_DWORD GetCSComponents(cmsColorSpaceSignature cs) { - FX_DWORD components; - switch (cs) { - case cmsSigLabData: - components = N_COMPONENT_LAB; - break; - case cmsSigGrayData: - components = N_COMPONENT_GRAY; - break; - case cmsSigRgbData: - components = N_COMPONENT_RGB; - break; - case cmsSigCmykData: - components = N_COMPONENT_CMYK; - break; - default: - components = N_COMPONENT_DEFAULT; - break; - } - return components; -} - -void* IccLib_CreateTransform(const unsigned char* pSrcProfileData, - FX_DWORD dwSrcProfileSize, - FX_DWORD& nSrcComponents, - const unsigned char* pDstProfileData, - FX_DWORD dwDstProfileSize, - int32_t nDstComponents, - int intent, - FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT, - FX_DWORD dwDstFormat = Icc_FORMAT_DEFAULT) { - cmsHPROFILE srcProfile = NULL; - cmsHPROFILE dstProfile = NULL; - cmsHTRANSFORM hTransform = NULL; - CLcmsCmm* pCmm = NULL; - nSrcComponents = 0; - srcProfile = cmsOpenProfileFromMem((void*)pSrcProfileData, dwSrcProfileSize); - if (!srcProfile) { - return NULL; - } - if (!pDstProfileData && dwDstProfileSize == 0 && nDstComponents == 3) { - dstProfile = cmsCreate_sRGBProfile(); - } else { - dstProfile = - cmsOpenProfileFromMem((void*)pDstProfileData, dwDstProfileSize); - } - if (!dstProfile) { - cmsCloseProfile(srcProfile); - return NULL; - } - int srcFormat; - FX_BOOL bLab = FALSE; - cmsColorSpaceSignature srcCS = cmsGetColorSpace(srcProfile); - nSrcComponents = GetCSComponents(srcCS); - if (srcCS == cmsSigLabData) { - srcFormat = - COLORSPACE_SH(PT_Lab) | CHANNELS_SH(nSrcComponents) | BYTES_SH(0); - bLab = TRUE; - } else { - srcFormat = - COLORSPACE_SH(PT_ANY) | CHANNELS_SH(nSrcComponents) | BYTES_SH(1); - if (srcCS == cmsSigRgbData && T_DOSWAP(dwSrcFormat)) { - srcFormat |= DOSWAP_SH(1); - } - } - cmsColorSpaceSignature dstCS = cmsGetColorSpace(dstProfile); - if (!CheckComponents(dstCS, nDstComponents, TRUE)) { - cmsCloseProfile(srcProfile); - cmsCloseProfile(dstProfile); - return NULL; - } - switch (dstCS) { - case cmsSigGrayData: - hTransform = cmsCreateTransform(srcProfile, srcFormat, dstProfile, - TYPE_GRAY_8, intent, 0); - break; - case cmsSigRgbData: - hTransform = cmsCreateTransform(srcProfile, srcFormat, dstProfile, - TYPE_BGR_8, intent, 0); - break; - case cmsSigCmykData: - hTransform = cmsCreateTransform( - srcProfile, srcFormat, dstProfile, - T_DOSWAP(dwDstFormat) ? TYPE_KYMC_8 : TYPE_CMYK_8, intent, 0); - break; - default: - break; - } - if (!hTransform) { - cmsCloseProfile(srcProfile); - cmsCloseProfile(dstProfile); - return NULL; - } - pCmm = new CLcmsCmm; - pCmm->m_nSrcComponents = nSrcComponents; - pCmm->m_nDstComponents = nDstComponents; - pCmm->m_hTransform = hTransform; - pCmm->m_bLab = bLab; - cmsCloseProfile(srcProfile); - cmsCloseProfile(dstProfile); - return pCmm; -} -void* IccLib_CreateTransform_sRGB(const unsigned char* pProfileData, - FX_DWORD dwProfileSize, - FX_DWORD& nComponents, - int32_t intent, - FX_DWORD dwSrcFormat) { - return IccLib_CreateTransform(pProfileData, dwProfileSize, nComponents, NULL, - 0, 3, intent, dwSrcFormat); -} -void IccLib_DestroyTransform(void* pTransform) { - if (!pTransform) { - return; - } - cmsDeleteTransform(((CLcmsCmm*)pTransform)->m_hTransform); - delete (CLcmsCmm*)pTransform; -} -void IccLib_Translate(void* pTransform, - FX_DWORD nSrcComponents, - FX_FLOAT* pSrcValues, - FX_FLOAT* pDestValues) { - if (!pTransform) { - return; - } - CLcmsCmm* p = (CLcmsCmm*)pTransform; - uint8_t output[4]; - if (p->m_bLab) { - CFX_FixedBufGrow inputs(nSrcComponents); - double* input = inputs; - for (FX_DWORD i = 0; i < nSrcComponents; i++) { - input[i] = pSrcValues[i]; - } - cmsDoTransform(p->m_hTransform, input, output, 1); - } else { - CFX_FixedBufGrow inputs(nSrcComponents); - uint8_t* input = inputs; - for (FX_DWORD i = 0; i < nSrcComponents; i++) { - if (pSrcValues[i] > 1.0f) { - input[i] = 255; - } else if (pSrcValues[i] < 0) { - input[i] = 0; - } else { - input[i] = (int)(pSrcValues[i] * 255.0f); - } - } - cmsDoTransform(p->m_hTransform, input, output, 1); - } - switch (p->m_nDstComponents) { - case 1: - pDestValues[0] = output[0] / 255.0f; - break; - case 3: - pDestValues[0] = output[2] / 255.0f; - pDestValues[1] = output[1] / 255.0f; - pDestValues[2] = output[0] / 255.0f; - break; - case 4: - pDestValues[0] = output[0] / 255.0f; - pDestValues[1] = output[1] / 255.0f; - pDestValues[2] = output[2] / 255.0f; - pDestValues[3] = output[3] / 255.0f; - break; - } -} -void IccLib_TranslateImage(void* pTransform, - unsigned char* pDest, - const unsigned char* pSrc, - int32_t pixels) { - cmsDoTransform(((CLcmsCmm*)pTransform)->m_hTransform, (void*)pSrc, pDest, - pixels); -} -void* CreateProfile_Gray(double gamma) { - cmsCIExyY* D50 = (cmsCIExyY*)cmsD50_xyY(); - if (!cmsWhitePointFromTemp(D50, 6504)) { - return NULL; - } - cmsToneCurve* curve = cmsBuildGamma(NULL, gamma); - if (!curve) { - return NULL; - } - void* profile = cmsCreateGrayProfile(D50, curve); - cmsFreeToneCurve(curve); - return profile; -} -ICodec_IccModule::IccCS GetProfileCSFromHandle(void* pProfile) { - if (!pProfile) { - return ICodec_IccModule::IccCS_Unknown; - } - switch (cmsGetColorSpace(pProfile)) { - case cmsSigXYZData: - return ICodec_IccModule::IccCS_XYZ; - case cmsSigLabData: - return ICodec_IccModule::IccCS_Lab; - case cmsSigLuvData: - return ICodec_IccModule::IccCS_Luv; - case cmsSigYCbCrData: - return ICodec_IccModule::IccCS_YCbCr; - case cmsSigYxyData: - return ICodec_IccModule::IccCS_Yxy; - case cmsSigRgbData: - return ICodec_IccModule::IccCS_Rgb; - case cmsSigGrayData: - return ICodec_IccModule::IccCS_Gray; - case cmsSigHsvData: - return ICodec_IccModule::IccCS_Hsv; - case cmsSigHlsData: - return ICodec_IccModule::IccCS_Hls; - case cmsSigCmykData: - return ICodec_IccModule::IccCS_Cmyk; - case cmsSigCmyData: - return ICodec_IccModule::IccCS_Cmy; - default: - return ICodec_IccModule::IccCS_Unknown; - } -} -ICodec_IccModule::IccCS CCodec_IccModule::GetProfileCS( - const uint8_t* pProfileData, - FX_DWORD dwProfileSize) { - ICodec_IccModule::IccCS cs; - cmsHPROFILE hProfile = - cmsOpenProfileFromMem((void*)pProfileData, dwProfileSize); - if (!hProfile) { - return IccCS_Unknown; - } - cs = GetProfileCSFromHandle(hProfile); - if (hProfile) { - cmsCloseProfile(hProfile); - } - return cs; -} -ICodec_IccModule::IccCS CCodec_IccModule::GetProfileCS(IFX_FileRead* pFile) { - if (!pFile) { - return IccCS_Unknown; - } - ICodec_IccModule::IccCS cs; - FX_DWORD dwSize = (FX_DWORD)pFile->GetSize(); - uint8_t* pBuf = FX_Alloc(uint8_t, dwSize); - pFile->ReadBlock(pBuf, 0, dwSize); - cs = GetProfileCS(pBuf, dwSize); - FX_Free(pBuf); - return cs; -} -FX_DWORD TransferProfileType(void* pProfile, FX_DWORD dwFormat) { - cmsColorSpaceSignature cs = cmsGetColorSpace(pProfile); - switch (cs) { - case cmsSigXYZData: - return TYPE_XYZ_16; - case cmsSigLabData: - return TYPE_Lab_DBL; - case cmsSigLuvData: - return TYPE_YUV_8; - case cmsSigYCbCrData: - return TYPE_YCbCr_8; - case cmsSigYxyData: - return TYPE_Yxy_16; - case cmsSigRgbData: - return T_DOSWAP(dwFormat) ? TYPE_RGB_8 : TYPE_BGR_8; - case cmsSigGrayData: - return TYPE_GRAY_8; - case cmsSigHsvData: - return TYPE_HSV_8; - case cmsSigHlsData: - return TYPE_HLS_8; - case cmsSigCmykData: - return T_DOSWAP(dwFormat) ? TYPE_KYMC_8 : TYPE_CMYK_8; - case cmsSigCmyData: - return TYPE_CMY_8; - case cmsSigMCH5Data: - return T_DOSWAP(dwFormat) ? TYPE_KYMC5_8 : TYPE_CMYK5_8; - case cmsSigMCH6Data: - return TYPE_CMYK6_8; - case cmsSigMCH7Data: - return T_DOSWAP(dwFormat) ? TYPE_KYMC7_8 : TYPE_CMYK7_8; - case cmsSigMCH8Data: - return T_DOSWAP(dwFormat) ? TYPE_KYMC8_8 : TYPE_CMYK8_8; - case cmsSigMCH9Data: - return T_DOSWAP(dwFormat) ? TYPE_KYMC9_8 : TYPE_CMYK9_8; - case cmsSigMCHAData: - return T_DOSWAP(dwFormat) ? TYPE_KYMC10_8 : TYPE_CMYK10_8; - case cmsSigMCHBData: - return T_DOSWAP(dwFormat) ? TYPE_KYMC11_8 : TYPE_CMYK11_8; - case cmsSigMCHCData: - return T_DOSWAP(dwFormat) ? TYPE_KYMC12_8 : TYPE_CMYK12_8; - default: - return 0; - } -} -class CFX_IccProfileCache { - public: - CFX_IccProfileCache(); - ~CFX_IccProfileCache(); - void* m_pProfile; - FX_DWORD m_dwRate; - - protected: - void Purge(); -}; -CFX_IccProfileCache::CFX_IccProfileCache() { - m_pProfile = NULL; - m_dwRate = 1; -} -CFX_IccProfileCache::~CFX_IccProfileCache() { - if (m_pProfile) { - cmsCloseProfile(m_pProfile); - } -} -void CFX_IccProfileCache::Purge() {} -class CFX_IccTransformCache { - public: - CFX_IccTransformCache(CLcmsCmm* pCmm = NULL); - ~CFX_IccTransformCache(); - void* m_pIccTransform; - FX_DWORD m_dwRate; - CLcmsCmm* m_pCmm; - - protected: - void Purge(); -}; -CFX_IccTransformCache::CFX_IccTransformCache(CLcmsCmm* pCmm) { - m_pIccTransform = NULL; - m_dwRate = 1; - m_pCmm = pCmm; -} -CFX_IccTransformCache::~CFX_IccTransformCache() { - if (m_pIccTransform) { - cmsDeleteTransform(m_pIccTransform); - } - FX_Free(m_pCmm); -} -void CFX_IccTransformCache::Purge() {} -class CFX_ByteStringKey : public CFX_BinaryBuf { - public: - CFX_ByteStringKey() : CFX_BinaryBuf() {} - CFX_ByteStringKey& operator<<(FX_DWORD i); -}; -CFX_ByteStringKey& CFX_ByteStringKey::operator<<(FX_DWORD i) { - AppendBlock(&i, sizeof(FX_DWORD)); - return *this; -} -void* CCodec_IccModule::CreateProfile(ICodec_IccModule::IccParam* pIccParam, - Icc_CLASS ic, - CFX_BinaryBuf* pTransformKey) { - CFX_IccProfileCache* pCache = NULL; - CFX_ByteStringKey key; - CFX_ByteString text; - key << pIccParam->ColorSpace << (pIccParam->dwProfileType | ic << 8); - uint8_t ID[16]; - switch (pIccParam->dwProfileType) { - case Icc_PARAMTYPE_NONE: - return NULL; - case Icc_PARAMTYPE_BUFFER: - MD5ComputeID(pIccParam->pProfileData, pIccParam->dwProfileSize, ID); - break; - case Icc_PARAMTYPE_PARAM: - FXSYS_memset(ID, 0, 16); - switch (pIccParam->ColorSpace) { - case IccCS_Gray: - text.Format("%lf", pIccParam->Gamma); - break; - default: - break; - } - MD5ComputeID(text.GetBuffer(0), text.GetLength(), ID); - break; - default: - break; - } - key.AppendBlock(ID, 16); - CFX_ByteString ProfileKey(key.GetBuffer(), key.GetSize()); - ASSERT(pTransformKey); - pTransformKey->AppendBlock(ProfileKey.GetBuffer(0), ProfileKey.GetLength()); - auto it = m_MapProfile.find(ProfileKey); - if (it == m_MapProfile.end()) { - pCache = new CFX_IccProfileCache; - switch (pIccParam->dwProfileType) { - case Icc_PARAMTYPE_BUFFER: - pCache->m_pProfile = cmsOpenProfileFromMem(pIccParam->pProfileData, - pIccParam->dwProfileSize); - break; - case Icc_PARAMTYPE_PARAM: - switch (pIccParam->ColorSpace) { - case IccCS_Rgb: - pCache->m_pProfile = cmsCreate_sRGBProfile(); - break; - case IccCS_Gray: - pCache->m_pProfile = CreateProfile_Gray(pIccParam->Gamma); - break; - default: - break; - } - break; - default: - break; - } - m_MapProfile[ProfileKey] = pCache; - } else { - pCache = it->second; - pCache->m_dwRate++; - } - return pCache->m_pProfile; -} -void* CCodec_IccModule::CreateTransform( - ICodec_IccModule::IccParam* pInputParam, - ICodec_IccModule::IccParam* pOutputParam, - ICodec_IccModule::IccParam* pProofParam, - FX_DWORD dwIntent, - FX_DWORD dwFlag, - FX_DWORD dwPrfIntent, - FX_DWORD dwPrfFlag) { - CLcmsCmm* pCmm = NULL; - ASSERT(pInputParam && pOutputParam); - CFX_ByteStringKey key; - void* pInputProfile = CreateProfile(pInputParam, Icc_CLASS_INPUT, &key); - if (!pInputProfile) { - return NULL; - } - void* pOutputProfile = CreateProfile(pOutputParam, Icc_CLASS_OUTPUT, &key); - if (!pOutputProfile) { - return NULL; - } - FX_DWORD dwInputProfileType = - TransferProfileType(pInputProfile, pInputParam->dwFormat); - FX_DWORD dwOutputProfileType = - TransferProfileType(pOutputProfile, pOutputParam->dwFormat); - if (dwInputProfileType == 0 || dwOutputProfileType == 0) { - return NULL; - } - void* pProofProfile = NULL; - if (pProofParam) { - pProofProfile = CreateProfile(pProofParam, Icc_CLASS_PROOF, &key); - } - key << dwInputProfileType << dwOutputProfileType << dwIntent << dwFlag - << (pProofProfile != NULL) << dwPrfIntent << dwPrfFlag; - CFX_ByteStringC TransformKey(key.GetBuffer(), key.GetSize()); - CFX_IccTransformCache* pTransformCache; - auto it = m_MapTranform.find(TransformKey); - if (it == m_MapTranform.end()) { - pCmm = FX_Alloc(CLcmsCmm, 1); - pCmm->m_nSrcComponents = T_CHANNELS(dwInputProfileType); - pCmm->m_nDstComponents = T_CHANNELS(dwOutputProfileType); - pCmm->m_bLab = T_COLORSPACE(pInputParam->dwFormat) == PT_Lab; - pTransformCache = new CFX_IccTransformCache(pCmm); - if (pProofProfile) { - pTransformCache->m_pIccTransform = cmsCreateProofingTransform( - pInputProfile, dwInputProfileType, pOutputProfile, - dwOutputProfileType, pProofProfile, dwIntent, dwPrfIntent, dwPrfFlag); - } else { - pTransformCache->m_pIccTransform = - cmsCreateTransform(pInputProfile, dwInputProfileType, pOutputProfile, - dwOutputProfileType, dwIntent, dwFlag); - } - pCmm->m_hTransform = pTransformCache->m_pIccTransform; - m_MapTranform[TransformKey] = pTransformCache; - } else { - pTransformCache = it->second; - pTransformCache->m_dwRate++; - } - return pTransformCache->m_pCmm; -} -CCodec_IccModule::~CCodec_IccModule() { - for (const auto& pair : m_MapProfile) { - delete pair.second; - } - m_MapProfile.clear(); - for (const auto& pair : m_MapTranform) { - delete pair.second; - } - m_MapTranform.clear(); -} -void* CCodec_IccModule::CreateTransform_sRGB(const uint8_t* pProfileData, - FX_DWORD dwProfileSize, - FX_DWORD& nComponents, - int32_t intent, - FX_DWORD dwSrcFormat) { - return IccLib_CreateTransform_sRGB(pProfileData, dwProfileSize, nComponents, - intent, dwSrcFormat); -} - -void* CCodec_IccModule::CreateTransform_CMYK(const uint8_t* pSrcProfileData, - FX_DWORD dwSrcProfileSize, - FX_DWORD& nSrcComponents, - const uint8_t* pDstProfileData, - FX_DWORD dwDstProfileSize, - int32_t intent, - FX_DWORD dwSrcFormat, - FX_DWORD dwDstFormat) { - return IccLib_CreateTransform( - pSrcProfileData, dwSrcProfileSize, nSrcComponents, pDstProfileData, - dwDstProfileSize, 4, intent, dwSrcFormat, dwDstFormat); -} - -void CCodec_IccModule::DestroyTransform(void* pTransform) { - IccLib_DestroyTransform(pTransform); -} -void CCodec_IccModule::Translate(void* pTransform, - FX_FLOAT* pSrcValues, - FX_FLOAT* pDestValues) { - IccLib_Translate(pTransform, m_nComponents, pSrcValues, pDestValues); -} -void CCodec_IccModule::TranslateScanline(void* pTransform, - uint8_t* pDest, - const uint8_t* pSrc, - int32_t pixels) { - IccLib_TranslateImage(pTransform, pDest, pSrc, pixels); -} -const uint8_t g_CMYKSamples[81 * 81 * 3] = { - 255, 255, 255, 225, 226, 228, 199, 200, 202, 173, 174, 178, 147, 149, 152, - 123, 125, 128, 99, 99, 102, 69, 70, 71, 34, 30, 31, 255, 253, 229, - 226, 224, 203, 200, 199, 182, 173, 173, 158, 149, 148, 135, 125, 124, 113, - 99, 99, 90, 70, 69, 63, 33, 29, 24, 255, 251, 204, 228, 223, 182, - 201, 198, 163, 174, 172, 142, 150, 147, 122, 125, 123, 101, 99, 98, 80, - 70, 68, 54, 32, 28, 16, 255, 249, 179, 230, 222, 160, 203, 197, 144, - 174, 170, 124, 150, 145, 105, 125, 122, 88, 99, 97, 69, 70, 68, 46, - 31, 28, 6, 255, 247, 154, 229, 220, 138, 203, 195, 122, 176, 169, 107, - 150, 145, 91, 125, 121, 74, 100, 96, 57, 70, 67, 35, 29, 26, 0, - 255, 246, 128, 231, 217, 114, 205, 194, 101, 176, 167, 88, 150, 144, 75, - 125, 120, 60, 100, 96, 44, 70, 66, 24, 28, 26, 0, 255, 244, 96, - 231, 217, 87, 203, 192, 78, 175, 167, 66, 150, 143, 56, 125, 119, 43, - 100, 95, 29, 69, 66, 7, 26, 26, 0, 255, 243, 51, 232, 215, 51, - 204, 191, 43, 176, 165, 38, 150, 142, 28, 125, 118, 17, 99, 94, 0, - 68, 65, 0, 24, 25, 0, 255, 241, 0, 231, 215, 0, 203, 190, 0, - 176, 164, 0, 150, 141, 0, 126, 117, 0, 99, 93, 0, 68, 65, 0, - 24, 25, 0, 252, 228, 238, 222, 201, 211, 197, 180, 190, 171, 156, 166, - 147, 133, 143, 123, 111, 119, 99, 88, 94, 71, 61, 66, 34, 22, 26, - 254, 226, 213, 224, 201, 191, 199, 179, 171, 172, 155, 148, 147, 133, 128, - 123, 110, 106, 98, 87, 83, 70, 59, 57, 33, 21, 18, 254, 224, 191, - 224, 199, 172, 200, 177, 153, 173, 154, 133, 147, 132, 115, 123, 109, 94, - 98, 86, 74, 70, 59, 49, 32, 21, 9, 255, 222, 168, 227, 198, 150, - 200, 175, 135, 173, 153, 118, 148, 130, 99, 123, 109, 82, 98, 86, 64, - 69, 58, 40, 31, 19, 0, 255, 221, 145, 227, 196, 129, 201, 174, 115, - 173, 151, 99, 148, 129, 85, 124, 108, 69, 98, 85, 52, 69, 58, 30, - 30, 19, 0, 255, 219, 121, 227, 195, 109, 201, 174, 97, 174, 150, 83, - 148, 129, 70, 124, 107, 55, 98, 84, 40, 69, 58, 19, 28, 18, 0, - 255, 218, 92, 229, 194, 82, 202, 173, 75, 174, 150, 63, 149, 128, 51, - 124, 106, 39, 98, 84, 24, 68, 57, 3, 26, 18, 0, 255, 217, 54, - 228, 193, 52, 201, 172, 46, 174, 148, 36, 148, 127, 27, 123, 105, 14, - 98, 83, 0, 68, 56, 0, 25, 18, 0, 255, 216, 0, 229, 192, 2, - 202, 171, 4, 173, 148, 0, 148, 126, 0, 124, 105, 0, 98, 83, 0, - 68, 56, 0, 24, 17, 0, 249, 204, 223, 219, 181, 199, 195, 160, 178, - 170, 140, 156, 146, 119, 134, 123, 99, 112, 98, 77, 88, 70, 52, 61, - 34, 11, 20, 250, 201, 200, 221, 180, 178, 197, 159, 161, 171, 139, 139, - 147, 119, 120, 123, 98, 99, 98, 77, 78, 69, 51, 52, 34, 11, 10, - 252, 201, 180, 223, 179, 162, 197, 159, 144, 170, 138, 125, 146, 117, 107, - 122, 97, 89, 98, 76, 69, 69, 50, 44, 32, 11, 2, 252, 199, 158, - 222, 177, 143, 199, 158, 127, 171, 137, 110, 147, 117, 93, 122, 96, 76, - 97, 75, 58, 69, 50, 36, 32, 10, 0, 253, 198, 137, 223, 177, 123, - 198, 156, 110, 171, 136, 95, 146, 116, 80, 122, 96, 65, 97, 75, 47, - 69, 50, 25, 30, 10, 0, 254, 197, 115, 225, 175, 104, 198, 156, 92, - 172, 135, 79, 147, 115, 66, 123, 95, 52, 98, 74, 37, 69, 49, 15, - 29, 10, 0, 254, 196, 89, 224, 175, 80, 199, 154, 70, 172, 134, 59, - 146, 114, 48, 122, 95, 36, 97, 74, 21, 68, 49, 0, 27, 9, 0, - 255, 195, 57, 225, 173, 52, 198, 154, 44, 172, 133, 36, 147, 113, 26, - 123, 94, 14, 98, 74, 0, 68, 49, 0, 26, 10, 0, 254, 194, 15, - 225, 172, 12, 198, 153, 7, 172, 132, 3, 146, 113, 0, 123, 93, 0, - 98, 73, 0, 68, 49, 0, 26, 9, 0, 246, 178, 209, 218, 159, 186, - 194, 140, 166, 168, 122, 145, 144, 104, 125, 121, 85, 103, 97, 65, 81, - 69, 41, 55, 34, 0, 12, 248, 176, 186, 219, 157, 166, 195, 139, 149, - 168, 121, 130, 144, 103, 111, 121, 85, 91, 97, 65, 71, 69, 41, 46, - 34, 0, 4, 249, 175, 168, 220, 156, 150, 196, 139, 135, 169, 121, 116, - 144, 103, 100, 122, 84, 83, 98, 65, 63, 70, 41, 39, 33, 0, 0, - 249, 175, 148, 220, 155, 133, 196, 138, 119, 169, 120, 103, 145, 101, 87, - 121, 83, 71, 97, 65, 54, 69, 41, 31, 32, 0, 0, 249, 173, 128, - 222, 154, 115, 195, 137, 102, 170, 119, 88, 145, 101, 74, 122, 83, 59, - 97, 64, 43, 68, 40, 20, 30, 0, 0, 250, 172, 108, 221, 154, 98, - 195, 136, 86, 170, 118, 73, 145, 100, 61, 122, 82, 48, 97, 63, 32, - 69, 40, 11, 28, 0, 0, 250, 171, 85, 221, 153, 76, 196, 136, 67, - 170, 117, 56, 145, 99, 44, 121, 82, 33, 97, 63, 17, 68, 40, 0, - 28, 0, 0, 251, 171, 58, 222, 152, 50, 197, 135, 43, 169, 117, 34, - 146, 99, 25, 121, 81, 10, 96, 63, 0, 68, 40, 0, 27, 0, 0, - 250, 170, 26, 222, 151, 19, 196, 134, 13, 169, 116, 4, 145, 99, 0, - 122, 81, 0, 97, 63, 0, 67, 40, 0, 26, 0, 0, 244, 153, 194, - 215, 136, 173, 192, 121, 155, 167, 104, 135, 143, 89, 115, 121, 72, 96, - 97, 54, 75, 70, 31, 49, 34, 0, 6, 245, 153, 173, 216, 136, 155, - 192, 120, 138, 167, 104, 121, 144, 88, 103, 121, 71, 85, 97, 54, 66, - 69, 31, 42, 34, 0, 0, 246, 152, 157, 217, 135, 140, 193, 120, 126, - 167, 103, 109, 143, 88, 92, 121, 72, 76, 97, 54, 58, 69, 31, 35, - 33, 0, 0, 245, 150, 139, 218, 134, 125, 193, 119, 111, 167, 103, 96, - 144, 87, 80, 121, 71, 66, 96, 53, 49, 68, 31, 26, 32, 0, 0, - 246, 151, 122, 218, 133, 108, 194, 118, 96, 168, 102, 81, 144, 86, 69, - 120, 71, 55, 95, 53, 39, 68, 30, 17, 31, 0, 0, 248, 150, 103, - 218, 133, 91, 193, 118, 81, 168, 102, 69, 143, 86, 56, 120, 70, 43, - 96, 53, 28, 68, 31, 6, 29, 0, 0, 247, 149, 81, 218, 132, 72, - 194, 117, 62, 168, 101, 52, 144, 86, 42, 121, 70, 29, 96, 52, 13, - 68, 30, 0, 28, 0, 0, 247, 148, 55, 219, 131, 50, 194, 117, 43, - 167, 101, 32, 144, 85, 22, 120, 69, 8, 96, 52, 0, 67, 30, 0, - 27, 0, 0, 247, 147, 29, 218, 131, 24, 194, 116, 20, 168, 100, 11, - 144, 85, 0, 120, 69, 0, 96, 52, 0, 67, 30, 0, 26, 0, 0, - 242, 130, 179, 214, 114, 160, 190, 101, 143, 166, 87, 125, 143, 72, 107, - 120, 58, 88, 96, 42, 68, 69, 17, 44, 35, 0, 0, 243, 129, 161, - 215, 114, 143, 191, 101, 128, 166, 87, 113, 143, 73, 96, 120, 58, 79, - 96, 41, 60, 69, 18, 37, 33, 0, 0, 243, 129, 146, 216, 114, 130, - 192, 101, 117, 166, 87, 101, 143, 72, 86, 121, 58, 69, 96, 42, 52, - 69, 18, 29, 31, 0, 0, 243, 128, 130, 216, 114, 115, 191, 101, 102, - 165, 86, 88, 142, 72, 75, 120, 58, 60, 95, 42, 43, 68, 19, 21, - 30, 0, 0, 244, 127, 112, 217, 113, 101, 192, 99, 89, 166, 85, 75, - 142, 72, 63, 119, 57, 50, 96, 41, 35, 68, 19, 13, 30, 0, 0, - 244, 127, 96, 216, 112, 86, 191, 99, 75, 166, 86, 64, 143, 72, 52, - 120, 57, 40, 95, 41, 24, 67, 20, 1, 29, 0, 0, 245, 126, 77, - 216, 113, 68, 191, 100, 59, 166, 85, 49, 142, 71, 38, 119, 57, 26, - 95, 41, 10, 67, 20, 0, 28, 0, 0, 244, 126, 55, 216, 112, 48, - 191, 99, 40, 166, 85, 31, 143, 71, 20, 119, 57, 6, 95, 42, 0, - 67, 20, 0, 28, 0, 0, 245, 126, 33, 217, 112, 26, 192, 99, 22, - 166, 84, 11, 142, 70, 0, 119, 57, 0, 95, 41, 0, 66, 20, 0, - 27, 0, 0, 241, 102, 167, 213, 90, 149, 189, 79, 133, 165, 66, 115, - 141, 54, 98, 119, 41, 81, 96, 25, 63, 69, 0, 38, 30, 0, 0, - 241, 102, 149, 213, 90, 133, 189, 79, 119, 165, 66, 103, 142, 55, 88, - 119, 41, 71, 96, 25, 53, 69, 0, 31, 28, 0, 0, 241, 102, 135, - 214, 90, 121, 190, 79, 108, 165, 66, 92, 141, 55, 78, 119, 42, 63, - 96, 26, 46, 69, 0, 24, 28, 0, 0, 241, 101, 120, 214, 90, 107, - 189, 79, 95, 165, 67, 83, 141, 54, 68, 118, 41, 54, 95, 27, 39, - 68, 0, 16, 27, 0, 0, 241, 102, 106, 213, 90, 93, 189, 78, 82, - 164, 67, 70, 141, 55, 58, 118, 42, 45, 94, 27, 29, 67, 2, 6, - 27, 0, 0, 242, 101, 90, 214, 89, 79, 190, 79, 69, 166, 67, 59, - 141, 55, 47, 118, 41, 35, 95, 27, 19, 67, 3, 0, 26, 0, 0, - 242, 102, 72, 213, 89, 63, 191, 79, 56, 164, 67, 45, 141, 55, 34, - 118, 42, 22, 94, 28, 6, 67, 3, 0, 26, 0, 0, 242, 100, 51, - 214, 89, 45, 190, 78, 38, 164, 67, 30, 141, 55, 18, 118, 42, 3, - 95, 28, 0, 66, 4, 0, 26, 0, 0, 243, 100, 33, 214, 90, 27, - 190, 78, 22, 165, 67, 13, 141, 55, 0, 118, 43, 0, 94, 29, 0, - 66, 5, 0, 26, 0, 0, 237, 69, 153, 211, 58, 135, 187, 51, 121, - 163, 41, 105, 141, 28, 90, 118, 15, 73, 96, 0, 56, 68, 0, 33, - 25, 0, 0, 239, 67, 137, 212, 60, 123, 189, 50, 110, 163, 41, 94, - 141, 29, 79, 118, 17, 65, 95, 0, 48, 69, 0, 26, 25, 0, 0, - 240, 69, 124, 211, 60, 111, 188, 50, 98, 163, 42, 85, 141, 31, 72, - 118, 18, 57, 94, 0, 41, 68, 0, 19, 25, 0, 0, 240, 70, 112, - 212, 61, 99, 188, 52, 87, 163, 41, 74, 140, 31, 62, 118, 20, 48, - 94, 2, 32, 68, 0, 11, 24, 0, 0, 239, 70, 98, 212, 62, 86, - 188, 53, 77, 164, 42, 64, 140, 32, 52, 118, 20, 40, 94, 3, 24, - 67, 0, 3, 23, 0, 0, 239, 71, 85, 212, 61, 74, 187, 53, 65, - 163, 44, 54, 140, 34, 43, 118, 22, 30, 95, 3, 14, 67, 0, 0, - 23, 0, 0, 239, 70, 67, 212, 62, 59, 188, 53, 51, 163, 45, 42, - 141, 34, 31, 117, 22, 17, 94, 5, 2, 66, 0, 0, 23, 0, 0, - 239, 71, 50, 213, 62, 43, 188, 54, 37, 164, 45, 28, 139, 34, 16, - 117, 22, 2, 94, 7, 0, 65, 0, 0, 23, 0, 0, 240, 71, 34, - 212, 63, 29, 189, 54, 24, 163, 46, 15, 139, 36, 2, 117, 25, 0, - 94, 8, 0, 66, 0, 0, 23, 0, 0, 237, 0, 140, 209, 0, 124, - 186, 0, 112, 162, 0, 97, 141, 0, 82, 118, 0, 67, 95, 0, 49, - 68, 0, 27, 20, 0, 0, 237, 0, 126, 210, 0, 113, 187, 0, 99, - 163, 0, 86, 139, 0, 72, 118, 0, 58, 95, 0, 42, 67, 0, 20, - 20, 0, 0, 237, 1, 114, 209, 1, 102, 187, 0, 90, 163, 0, 78, - 139, 0, 64, 118, 0, 50, 95, 0, 35, 67, 0, 13, 20, 0, 0, - 236, 16, 102, 209, 7, 91, 186, 0, 80, 162, 0, 68, 139, 0, 56, - 117, 0, 43, 94, 0, 27, 67, 0, 6, 20, 0, 0, 238, 15, 89, - 209, 13, 79, 186, 6, 69, 162, 0, 58, 139, 0, 47, 117, 0, 34, - 93, 0, 20, 66, 0, 2, 20, 0, 0, 237, 20, 78, 210, 12, 68, - 187, 4, 59, 163, 0, 49, 139, 0, 38, 116, 0, 26, 94, 0, 11, - 66, 0, 0, 20, 0, 0, 237, 25, 64, 210, 18, 56, 186, 11, 48, - 162, 4, 39, 138, 0, 27, 117, 0, 14, 93, 0, 0, 66, 0, 0, - 20, 0, 0, 238, 25, 48, 210, 22, 43, 186, 15, 35, 162, 8, 26, - 140, 0, 14, 117, 0, 0, 93, 0, 0, 65, 0, 0, 20, 0, 0, - 238, 28, 35, 210, 21, 30, 187, 15, 24, 162, 8, 16, 139, 1, 2, - 117, 0, 0, 93, 0, 0, 65, 0, 0, 22, 0, 0, 219, 242, 252, - 195, 214, 225, 172, 191, 201, 148, 165, 175, 127, 142, 150, 106, 119, 126, - 84, 95, 101, 58, 66, 72, 24, 27, 32, 222, 239, 226, 196, 213, 202, - 173, 189, 180, 150, 165, 158, 129, 141, 135, 107, 118, 113, 85, 94, 90, - 58, 66, 63, 21, 26, 24, 223, 237, 203, 198, 211, 182, 175, 188, 163, - 152, 164, 141, 129, 140, 121, 107, 117, 101, 85, 93, 80, 58, 64, 54, - 21, 26, 18, 226, 236, 179, 201, 210, 160, 177, 187, 143, 153, 162, 125, - 130, 139, 106, 108, 116, 89, 85, 92, 69, 58, 64, 45, 20, 25, 8, - 227, 234, 153, 201, 208, 139, 178, 185, 124, 154, 161, 107, 131, 138, 91, - 108, 115, 75, 85, 91, 58, 58, 63, 35, 17, 25, 0, 229, 233, 130, - 203, 207, 116, 178, 184, 104, 154, 160, 90, 131, 137, 76, 109, 114, 62, - 85, 90, 46, 58, 63, 25, 16, 24, 0, 230, 231, 100, 202, 205, 90, - 179, 183, 80, 154, 159, 69, 131, 136, 57, 109, 113, 46, 86, 90, 32, - 58, 63, 10, 14, 24, 0, 230, 230, 65, 204, 204, 58, 180, 182, 52, - 155, 157, 44, 132, 135, 35, 110, 113, 24, 86, 89, 9, 57, 62, 0, - 11, 24, 0, 232, 230, 19, 204, 204, 19, 180, 181, 17, 155, 157, 10, - 131, 134, 2, 109, 112, 0, 85, 89, 0, 57, 62, 0, 10, 23, 0, - 218, 216, 236, 194, 192, 211, 172, 171, 188, 149, 149, 164, 128, 127, 141, - 106, 106, 119, 84, 84, 94, 59, 57, 66, 25, 18, 26, 221, 214, 211, - 196, 191, 190, 174, 170, 170, 150, 148, 148, 128, 126, 127, 107, 105, 106, - 85, 83, 84, 59, 56, 58, 23, 17, 18, 222, 213, 190, 197, 189, 170, - 175, 169, 153, 151, 147, 133, 129, 126, 113, 108, 105, 94, 85, 82, 74, - 59, 56, 49, 22, 17, 11, 224, 211, 168, 199, 188, 151, 175, 168, 135, - 152, 146, 117, 129, 124, 99, 107, 103, 82, 84, 82, 64, 59, 55, 41, - 21, 17, 1, 224, 210, 145, 199, 187, 130, 176, 166, 117, 152, 145, 101, - 129, 123, 86, 107, 103, 70, 85, 81, 53, 58, 55, 31, 19, 17, 0, - 227, 208, 123, 200, 186, 110, 177, 165, 98, 153, 143, 84, 130, 122, 70, - 108, 102, 57, 85, 80, 41, 58, 54, 20, 18, 16, 0, 227, 208, 97, - 202, 185, 86, 177, 164, 77, 153, 142, 65, 130, 122, 54, 108, 101, 42, - 85, 80, 27, 58, 54, 7, 16, 16, 0, 228, 206, 66, 202, 184, 58, - 178, 163, 50, 154, 141, 42, 131, 121, 33, 109, 101, 21, 86, 79, 5, - 58, 54, 0, 13, 16, 0, 228, 206, 29, 202, 183, 25, 178, 163, 20, - 154, 141, 15, 131, 121, 5, 108, 100, 0, 85, 79, 0, 58, 53, 0, - 13, 16, 0, 217, 193, 221, 193, 172, 198, 172, 153, 178, 149, 133, 154, - 128, 114, 132, 107, 94, 111, 85, 74, 89, 59, 49, 61, 25, 8, 22, - 219, 191, 198, 195, 171, 178, 173, 153, 159, 149, 132, 139, 128, 113, 119, - 107, 94, 100, 85, 73, 79, 59, 48, 52, 25, 7, 14, 221, 191, 180, - 196, 170, 160, 174, 152, 144, 150, 132, 125, 129, 113, 107, 107, 93, 89, - 85, 73, 69, 59, 48, 45, 23, 7, 4, 222, 189, 159, 197, 169, 142, - 174, 151, 127, 151, 131, 110, 129, 112, 94, 108, 93, 78, 85, 72, 60, - 58, 47, 37, 22, 7, 0, 223, 188, 138, 197, 168, 123, 175, 150, 109, - 151, 130, 95, 130, 111, 81, 108, 92, 65, 85, 72, 49, 59, 47, 27, - 21, 7, 0, 224, 187, 118, 198, 167, 105, 176, 149, 93, 152, 129, 79, - 130, 110, 68, 108, 91, 54, 85, 71, 38, 59, 47, 17, 18, 7, 0, - 224, 187, 93, 199, 166, 83, 176, 148, 73, 152, 128, 62, 129, 109, 51, - 108, 90, 39, 85, 71, 25, 58, 46, 3, 16, 8, 0, 226, 186, 64, - 200, 165, 57, 177, 147, 50, 153, 127, 40, 130, 108, 31, 108, 90, 19, - 85, 70, 3, 58, 46, 0, 16, 8, 0, 227, 185, 35, 200, 165, 30, - 176, 146, 25, 152, 127, 18, 130, 108, 7, 108, 89, 0, 85, 70, 0, - 57, 46, 0, 14, 8, 0, 216, 169, 205, 192, 150, 184, 171, 134, 164, - 149, 116, 144, 128, 99, 124, 107, 81, 103, 85, 63, 81, 60, 39, 55, - 26, 0, 15, 217, 168, 186, 193, 150, 165, 172, 134, 149, 150, 116, 130, - 128, 99, 111, 107, 81, 92, 85, 62, 72, 59, 39, 47, 25, 0, 6, - 219, 168, 168, 194, 149, 150, 173, 133, 135, 150, 116, 117, 128, 98, 99, - 107, 80, 82, 86, 62, 63, 59, 38, 39, 24, 0, 0, 219, 166, 148, - 195, 149, 133, 173, 133, 119, 150, 115, 103, 128, 98, 88, 107, 80, 72, - 85, 61, 54, 59, 38, 32, 23, 0, 0, 220, 166, 129, 196, 148, 116, - 174, 132, 103, 151, 114, 89, 129, 97, 75, 107, 79, 60, 85, 61, 44, - 59, 38, 22, 21, 0, 0, 222, 164, 110, 197, 147, 99, 175, 131, 87, - 151, 113, 75, 129, 96, 63, 107, 79, 49, 85, 61, 33, 58, 38, 12, - 19, 0, 0, 222, 164, 88, 197, 146, 79, 174, 130, 69, 151, 113, 58, - 129, 95, 47, 107, 78, 35, 85, 60, 20, 58, 38, 0, 18, 0, 0, - 223, 164, 63, 198, 145, 55, 175, 129, 48, 151, 112, 39, 129, 95, 29, - 107, 78, 16, 85, 60, 1, 58, 38, 0, 17, 0, 0, 223, 163, 36, - 198, 145, 32, 174, 129, 26, 151, 111, 17, 129, 95, 7, 107, 78, 0, - 84, 60, 0, 57, 37, 0, 15, 0, 0, 215, 147, 192, 191, 130, 172, - 170, 116, 153, 148, 100, 133, 127, 85, 115, 107, 69, 96, 85, 51, 75, - 60, 28, 50, 25, 0, 8, 217, 146, 173, 192, 130, 154, 171, 115, 138, - 149, 100, 121, 128, 84, 103, 107, 68, 85, 85, 51, 66, 60, 28, 42, - 25, 0, 0, 217, 145, 157, 193, 129, 140, 173, 115, 125, 149, 100, 109, - 128, 84, 92, 107, 68, 76, 85, 51, 58, 59, 28, 35, 23, 0, 0, - 218, 145, 140, 193, 129, 125, 172, 114, 110, 149, 99, 96, 128, 83, 81, - 107, 67, 65, 84, 51, 49, 59, 29, 27, 22, 0, 0, 219, 144, 121, - 194, 128, 108, 172, 113, 96, 149, 98, 83, 128, 83, 69, 107, 68, 55, - 85, 50, 40, 59, 28, 18, 20, 0, 0, 220, 143, 104, 195, 128, 93, - 173, 114, 82, 150, 98, 69, 127, 82, 58, 107, 67, 45, 85, 50, 30, - 59, 28, 7, 19, 0, 0, 220, 143, 84, 195, 127, 74, 173, 113, 65, - 149, 97, 55, 128, 82, 44, 106, 67, 32, 84, 50, 16, 58, 28, 0, - 18, 0, 0, 221, 142, 62, 196, 126, 53, 173, 112, 46, 150, 97, 37, - 128, 82, 26, 107, 66, 14, 84, 50, 0, 58, 28, 0, 16, 0, 0, - 222, 142, 38, 196, 126, 34, 174, 112, 27, 150, 96, 17, 128, 82, 6, - 106, 66, 0, 84, 50, 0, 57, 29, 0, 16, 0, 0, 214, 123, 179, - 191, 110, 159, 169, 98, 143, 147, 84, 124, 126, 70, 106, 107, 55, 88, - 85, 39, 69, 60, 15, 45, 23, 0, 2, 216, 123, 161, 192, 110, 144, - 170, 98, 129, 148, 84, 112, 127, 70, 95, 107, 55, 79, 85, 39, 61, - 60, 15, 37, 20, 0, 0, 217, 122, 145, 192, 110, 130, 170, 97, 116, - 149, 84, 101, 127, 70, 85, 106, 55, 70, 85, 39, 53, 59, 16, 30, - 19, 0, 0, 217, 123, 131, 192, 109, 116, 171, 96, 103, 149, 83, 89, - 127, 70, 75, 106, 55, 60, 85, 40, 45, 59, 16, 23, 17, 0, 0, - 217, 122, 114, 193, 109, 101, 172, 96, 91, 149, 82, 77, 128, 69, 64, - 106, 55, 50, 84, 39, 35, 59, 17, 14, 17, 0, 0, 218, 122, 98, - 194, 108, 87, 171, 96, 77, 149, 82, 65, 127, 69, 52, 106, 55, 40, - 84, 40, 25, 59, 18, 3, 15, 0, 0, 219, 122, 80, 193, 108, 70, - 172, 95, 61, 149, 82, 51, 127, 69, 40, 106, 55, 28, 84, 39, 12, - 58, 17, 0, 13, 0, 0, 219, 121, 59, 194, 108, 52, 172, 96, 44, - 149, 82, 35, 127, 68, 24, 106, 55, 11, 84, 40, 0, 57, 18, 0, - 13, 0, 0, 219, 121, 40, 193, 108, 33, 172, 95, 26, 149, 81, 19, - 128, 68, 6, 106, 54, 0, 84, 39, 0, 57, 18, 0, 13, 0, 0, - 213, 99, 165, 189, 87, 148, 169, 76, 132, 147, 64, 115, 126, 52, 98, - 106, 39, 81, 85, 23, 63, 60, 0, 39, 16, 0, 0, 214, 98, 149, - 191, 87, 133, 170, 76, 119, 148, 65, 103, 127, 53, 88, 106, 39, 72, - 85, 24, 55, 60, 0, 32, 15, 0, 0, 215, 99, 136, 191, 87, 121, - 170, 77, 108, 148, 65, 93, 126, 53, 79, 106, 40, 64, 85, 24, 47, - 59, 0, 25, 14, 0, 0, 215, 99, 121, 192, 87, 108, 170, 77, 96, - 148, 65, 82, 126, 53, 69, 106, 40, 55, 85, 25, 39, 59, 0, 18, - 13, 0, 0, 216, 99, 106, 191, 87, 95, 170, 76, 83, 148, 65, 71, - 126, 53, 58, 106, 41, 45, 85, 26, 30, 59, 0, 8, 11, 0, 0, - 216, 98, 91, 192, 88, 82, 170, 77, 71, 148, 65, 60, 127, 53, 48, - 105, 41, 36, 83, 26, 21, 58, 1, 2, 11, 0, 0, 217, 99, 75, - 192, 87, 66, 170, 76, 57, 148, 65, 47, 126, 53, 36, 105, 41, 24, - 83, 26, 8, 57, 2, 0, 9, 0, 0, 217, 98, 57, 192, 87, 49, - 171, 77, 41, 147, 65, 32, 126, 53, 21, 105, 41, 8, 84, 27, 0, - 57, 3, 0, 9, 0, 0, 217, 98, 40, 193, 87, 34, 171, 76, 27, - 148, 65, 19, 126, 53, 6, 105, 41, 0, 83, 27, 0, 57, 4, 0, - 9, 0, 0, 211, 67, 152, 189, 58, 136, 168, 50, 122, 147, 39, 105, - 127, 28, 89, 106, 14, 74, 85, 0, 56, 59, 0, 33, 9, 0, 0, - 213, 68, 138, 190, 59, 123, 169, 51, 109, 148, 40, 95, 126, 30, 80, - 106, 16, 65, 85, 0, 48, 59, 0, 27, 9, 0, 0, 214, 69, 125, - 190, 59, 111, 168, 51, 99, 148, 41, 86, 126, 31, 72, 106, 18, 58, - 85, 0, 41, 59, 0, 20, 7, 0, 0, 215, 70, 112, 190, 61, 100, - 169, 52, 88, 147, 42, 76, 126, 32, 63, 106, 19, 49, 84, 1, 34, - 58, 0, 13, 7, 0, 0, 214, 70, 99, 190, 62, 88, 169, 53, 77, - 147, 43, 65, 125, 32, 53, 106, 20, 40, 84, 3, 26, 58, 0, 4, - 7, 0, 0, 214, 71, 86, 190, 61, 75, 169, 53, 65, 146, 43, 54, - 126, 33, 44, 105, 21, 31, 83, 4, 17, 57, 0, 0, 7, 0, 0, - 215, 71, 71, 191, 62, 62, 169, 53, 53, 147, 44, 44, 126, 34, 33, - 105, 22, 20, 83, 5, 4, 57, 0, 0, 7, 0, 0, 215, 71, 54, - 191, 62, 47, 169, 54, 39, 147, 44, 30, 126, 35, 20, 105, 23, 6, - 83, 6, 0, 56, 0, 0, 5, 0, 0, 215, 71, 41, 191, 63, 34, - 170, 54, 27, 147, 45, 17, 126, 35, 6, 105, 23, 0, 83, 8, 0, - 56, 0, 0, 5, 0, 0, 210, 13, 140, 189, 1, 125, 167, 0, 110, - 146, 0, 96, 126, 0, 81, 106, 0, 67, 85, 0, 51, 59, 0, 28, - 4, 0, 0, 212, 18, 126, 190, 7, 113, 168, 0, 100, 146, 0, 86, - 126, 0, 73, 106, 0, 59, 84, 0, 43, 59, 0, 22, 4, 0, 0, - 212, 21, 115, 190, 13, 103, 168, 3, 91, 146, 0, 78, 125, 0, 65, - 105, 0, 52, 84, 0, 36, 58, 0, 16, 4, 0, 0, 213, 24, 103, - 189, 19, 91, 168, 9, 82, 146, 0, 69, 125, 0, 57, 105, 0, 44, - 84, 0, 29, 58, 0, 7, 4, 0, 0, 213, 27, 92, 188, 21, 81, - 168, 14, 71, 146, 1, 59, 125, 0, 48, 105, 0, 36, 84, 0, 21, - 58, 0, 4, 4, 0, 0, 213, 30, 80, 189, 22, 69, 168, 17, 61, - 146, 5, 50, 125, 0, 39, 104, 0, 27, 83, 0, 12, 57, 0, 0, - 4, 0, 0, 214, 30, 67, 189, 25, 57, 168, 20, 50, 146, 9, 40, - 125, 0, 29, 104, 0, 17, 83, 0, 2, 56, 0, 0, 4, 0, 0, - 214, 32, 53, 189, 27, 44, 169, 20, 38, 146, 13, 28, 124, 2, 17, - 104, 0, 4, 83, 0, 0, 56, 0, 0, 4, 0, 0, 214, 33, 41, - 190, 27, 33, 168, 23, 27, 146, 13, 18, 125, 3, 5, 105, 0, 0, - 83, 0, 0, 56, 0, 0, 4, 0, 0, 185, 229, 250, 164, 204, 223, - 146, 182, 199, 127, 158, 174, 108, 136, 149, 89, 113, 125, 70, 90, 100, - 46, 62, 71, 10, 25, 33, 189, 227, 225, 168, 202, 201, 148, 181, 179, - 129, 157, 156, 109, 135, 134, 90, 113, 113, 70, 89, 90, 46, 62, 62, - 8, 24, 25, 192, 226, 202, 170, 202, 182, 151, 179, 162, 130, 156, 141, - 110, 133, 121, 91, 112, 101, 71, 89, 80, 46, 61, 54, 7, 24, 19, - 194, 224, 179, 173, 200, 160, 153, 178, 144, 132, 155, 125, 112, 133, 107, - 92, 111, 89, 71, 88, 69, 46, 61, 45, 6, 23, 10, 196, 223, 155, - 174, 198, 139, 154, 176, 124, 132, 153, 107, 113, 131, 91, 92, 110, 75, - 72, 87, 58, 47, 60, 37, 4, 23, 0, 198, 221, 131, 175, 197, 117, - 155, 175, 105, 133, 152, 91, 113, 130, 76, 92, 109, 63, 72, 86, 47, - 46, 60, 26, 3, 23, 0, 200, 220, 104, 176, 196, 94, 156, 175, 84, - 134, 151, 72, 113, 129, 59, 93, 108, 47, 72, 85, 33, 46, 59, 13, - 0, 23, 0, 201, 219, 73, 179, 195, 65, 157, 173, 57, 135, 150, 48, - 114, 129, 39, 94, 108, 28, 72, 85, 15, 47, 59, 0, 0, 22, 0, - 203, 219, 42, 178, 195, 37, 157, 173, 32, 135, 150, 26, 114, 128, 16, - 94, 107, 6, 73, 85, 0, 46, 58, 0, 0, 22, 0, 186, 205, 233, - 165, 183, 209, 148, 163, 187, 128, 142, 163, 109, 121, 140, 91, 101, 118, - 71, 80, 94, 48, 54, 66, 12, 15, 27, 189, 204, 211, 169, 182, 189, - 151, 163, 169, 131, 141, 147, 111, 121, 126, 92, 101, 105, 72, 79, 84, - 48, 54, 58, 11, 15, 19, 192, 202, 190, 171, 181, 170, 152, 161, 152, - 131, 141, 133, 112, 120, 113, 93, 100, 94, 72, 79, 74, 48, 53, 50, - 10, 15, 11, 195, 201, 169, 172, 179, 151, 153, 160, 135, 132, 139, 117, - 113, 119, 100, 93, 99, 82, 72, 78, 64, 48, 53, 41, 9, 14, 3, - 195, 200, 146, 174, 179, 131, 154, 159, 117, 133, 138, 101, 113, 118, 86, - 93, 98, 70, 73, 77, 53, 48, 52, 32, 8, 15, 0, 198, 199, 125, - 175, 177, 111, 155, 158, 100, 133, 137, 85, 113, 117, 71, 93, 97, 57, - 72, 77, 42, 47, 52, 22, 5, 14, 0, 199, 198, 101, 176, 177, 89, - 155, 157, 79, 134, 136, 68, 113, 116, 56, 94, 97, 44, 73, 76, 30, - 47, 52, 10, 2, 15, 0, 200, 197, 72, 178, 176, 63, 157, 156, 56, - 135, 136, 46, 114, 116, 37, 94, 96, 26, 73, 76, 11, 47, 51, 0, - 0, 14, 0, 201, 197, 45, 177, 175, 38, 156, 155, 31, 135, 135, 25, - 114, 115, 17, 94, 96, 5, 73, 75, 0, 46, 51, 0, 0, 14, 0, - 187, 183, 218, 167, 165, 197, 149, 147, 176, 129, 127, 153, 111, 109, 132, - 92, 90, 111, 73, 70, 89, 49, 46, 62, 15, 4, 22, 190, 183, 197, - 170, 164, 177, 151, 146, 159, 130, 127, 139, 112, 109, 119, 93, 90, 99, - 72, 70, 78, 49, 45, 53, 14, 4, 15, 192, 182, 179, 171, 163, 161, - 153, 145, 144, 132, 126, 125, 113, 108, 107, 93, 89, 88, 73, 70, 69, - 49, 45, 45, 13, 5, 6, 195, 181, 159, 172, 162, 142, 152, 145, 127, - 132, 125, 111, 113, 107, 94, 93, 88, 77, 73, 69, 59, 48, 45, 37, - 11, 5, 0, 195, 180, 139, 173, 161, 124, 153, 143, 110, 133, 125, 96, - 113, 106, 81, 94, 88, 66, 73, 68, 49, 49, 44, 28, 9, 6, 0, - 196, 179, 118, 174, 160, 106, 154, 142, 94, 133, 124, 81, 113, 105, 68, - 94, 87, 54, 73, 68, 39, 48, 44, 18, 5, 5, 0, 197, 178, 96, - 176, 159, 86, 155, 141, 75, 134, 123, 64, 114, 105, 53, 94, 87, 40, - 73, 68, 26, 48, 44, 5, 2, 6, 0, 199, 178, 70, 176, 158, 62, - 156, 141, 54, 134, 122, 44, 114, 104, 35, 94, 86, 23, 73, 67, 8, - 47, 44, 0, 2, 6, 0, 199, 177, 45, 178, 158, 40, 156, 140, 32, - 135, 122, 26, 114, 104, 16, 94, 86, 4, 73, 67, 0, 47, 44, 0, - 0, 7, 0, 188, 161, 204, 168, 144, 183, 149, 129, 164, 130, 112, 144, - 112, 95, 123, 93, 78, 103, 74, 60, 81, 50, 36, 56, 16, 0, 16, - 190, 160, 185, 170, 144, 165, 151, 128, 148, 132, 111, 130, 112, 95, 110, - 93, 78, 92, 74, 59, 72, 50, 36, 48, 16, 0, 8, 192, 160, 167, - 171, 143, 150, 153, 128, 134, 132, 111, 117, 112, 94, 100, 94, 77, 82, - 74, 59, 63, 50, 36, 40, 14, 0, 0, 193, 159, 149, 172, 143, 134, - 153, 127, 119, 133, 110, 103, 113, 94, 87, 93, 77, 72, 73, 59, 54, - 50, 36, 32, 12, 0, 0, 195, 159, 131, 173, 142, 117, 153, 127, 104, - 132, 110, 90, 113, 93, 76, 93, 76, 61, 74, 59, 45, 49, 36, 23, - 9, 0, 0, 196, 158, 113, 174, 141, 101, 155, 126, 89, 133, 109, 76, - 113, 93, 64, 94, 76, 51, 74, 58, 35, 49, 36, 14, 6, 0, 0, - 197, 157, 92, 174, 141, 80, 154, 125, 71, 134, 108, 60, 114, 92, 50, - 94, 75, 37, 73, 58, 22, 48, 36, 1, 5, 0, 0, 197, 157, 68, - 175, 140, 59, 155, 124, 51, 134, 108, 41, 113, 91, 32, 94, 75, 21, - 73, 57, 5, 48, 35, 0, 5, 0, 0, 198, 156, 46, 176, 140, 40, - 155, 124, 32, 134, 107, 24, 114, 91, 14, 94, 75, 2, 73, 57, 0, - 48, 36, 0, 3, 0, 0, 189, 140, 191, 168, 126, 172, 150, 112, 154, - 131, 97, 134, 112, 82, 115, 94, 66, 96, 74, 49, 75, 51, 25, 50, - 12, 0, 10, 191, 139, 173, 170, 125, 154, 152, 111, 138, 132, 96, 121, - 113, 81, 103, 94, 66, 85, 74, 48, 66, 50, 26, 42, 12, 0, 1, - 192, 139, 157, 171, 125, 140, 152, 111, 125, 132, 96, 109, 113, 81, 92, - 94, 65, 76, 74, 48, 58, 50, 26, 35, 9, 0, 0, 193, 139, 140, - 172, 124, 125, 153, 110, 112, 133, 95, 96, 113, 80, 82, 94, 65, 66, - 74, 49, 50, 50, 26, 28, 7, 0, 0, 194, 138, 123, 172, 123, 109, - 153, 110, 97, 133, 95, 84, 113, 80, 70, 94, 65, 56, 74, 48, 40, - 50, 26, 20, 6, 0, 0, 194, 138, 105, 173, 123, 94, 153, 109, 83, - 133, 94, 70, 112, 79, 59, 94, 64, 46, 74, 48, 31, 50, 26, 9, - 4, 0, 0, 196, 138, 87, 174, 122, 77, 153, 109, 67, 133, 93, 56, - 113, 79, 46, 94, 64, 34, 73, 48, 18, 49, 27, 0, 4, 0, 0, - 196, 137, 65, 174, 122, 57, 154, 108, 49, 133, 93, 39, 113, 79, 29, - 94, 64, 18, 74, 48, 3, 49, 27, 0, 2, 0, 0, 197, 137, 47, - 175, 122, 40, 155, 108, 32, 133, 93, 23, 114, 79, 14, 94, 64, 1, - 73, 48, 0, 48, 27, 0, 2, 0, 0, 189, 119, 177, 168, 106, 159, - 150, 94, 142, 131, 81, 124, 113, 67, 107, 94, 53, 89, 74, 37, 69, - 51, 11, 45, 6, 0, 3, 191, 119, 161, 170, 106, 144, 152, 94, 129, - 132, 81, 112, 113, 67, 96, 94, 53, 79, 74, 37, 61, 51, 13, 38, - 6, 0, 0, 192, 119, 146, 170, 106, 131, 152, 94, 117, 132, 80, 101, - 112, 67, 85, 94, 53, 70, 74, 37, 53, 50, 14, 31, 4, 0, 0, - 192, 119, 131, 171, 106, 117, 153, 94, 105, 132, 80, 89, 113, 67, 75, - 94, 54, 61, 74, 38, 45, 51, 14, 23, 3, 0, 0, 193, 118, 114, - 171, 106, 102, 153, 93, 90, 132, 80, 78, 113, 67, 65, 94, 53, 52, - 74, 37, 36, 50, 15, 16, 1, 0, 0, 194, 118, 99, 172, 105, 89, - 153, 93, 78, 132, 80, 66, 113, 67, 54, 94, 53, 42, 74, 38, 27, - 50, 16, 5, 1, 0, 0, 194, 118, 82, 173, 105, 72, 153, 93, 63, - 132, 79, 53, 113, 67, 42, 94, 53, 30, 74, 38, 15, 49, 16, 0, - 0, 0, 0, 195, 117, 63, 173, 105, 55, 154, 93, 47, 133, 79, 37, - 113, 66, 27, 94, 53, 15, 73, 38, 0, 48, 16, 0, 0, 0, 0, - 195, 117, 46, 173, 104, 39, 154, 92, 32, 133, 79, 22, 113, 66, 13, - 94, 53, 0, 73, 38, 0, 48, 17, 0, 0, 0, 0, 189, 96, 166, - 168, 85, 147, 150, 74, 132, 131, 62, 115, 113, 51, 99, 94, 38, 82, - 74, 21, 63, 51, 0, 40, 1, 0, 0, 190, 96, 150, 170, 85, 133, - 152, 75, 119, 132, 63, 104, 113, 51, 88, 94, 38, 72, 75, 22, 55, - 51, 0, 33, 1, 0, 0, 192, 96, 137, 170, 85, 121, 152, 74, 108, - 132, 64, 94, 113, 52, 79, 94, 39, 64, 74, 23, 48, 50, 0, 26, - 0, 0, 0, 192, 96, 122, 171, 86, 109, 152, 75, 96, 132, 63, 83, - 113, 52, 69, 94, 39, 56, 74, 24, 41, 50, 0, 19, 0, 0, 0, - 193, 96, 107, 171, 85, 96, 152, 75, 84, 132, 64, 72, 113, 52, 60, - 94, 39, 47, 74, 24, 32, 50, 1, 10, 0, 0, 0, 193, 96, 93, - 172, 85, 82, 152, 75, 72, 133, 63, 61, 113, 51, 49, 94, 39, 37, - 73, 25, 23, 49, 2, 2, 0, 0, 0, 194, 96, 78, 172, 85, 68, - 152, 75, 59, 132, 63, 49, 113, 52, 39, 94, 40, 26, 73, 25, 11, - 48, 3, 0, 0, 0, 0, 194, 96, 60, 173, 85, 52, 153, 75, 44, - 132, 64, 35, 112, 52, 25, 94, 40, 12, 73, 26, 0, 48, 4, 0, - 0, 0, 0, 195, 96, 46, 173, 85, 38, 154, 74, 31, 133, 63, 22, - 113, 52, 11, 93, 40, 0, 73, 26, 0, 47, 5, 0, 0, 0, 0, - 188, 67, 153, 168, 58, 137, 151, 49, 122, 131, 39, 106, 113, 28, 90, - 94, 13, 75, 75, 0, 57, 51, 0, 35, 0, 0, 0, 190, 68, 138, - 170, 59, 123, 152, 50, 110, 132, 41, 96, 113, 29, 80, 94, 16, 66, - 75, 0, 49, 50, 0, 27, 0, 0, 0, 191, 69, 126, 170, 59, 112, - 151, 52, 100, 132, 42, 86, 113, 30, 73, 95, 17, 58, 75, 0, 42, - 50, 0, 21, 0, 0, 0, 192, 70, 113, 170, 61, 100, 151, 52, 89, - 132, 42, 77, 113, 31, 64, 94, 19, 50, 74, 1, 35, 50, 0, 14, - 0, 0, 0, 192, 70, 100, 170, 62, 89, 151, 53, 77, 131, 43, 66, - 112, 32, 54, 94, 20, 42, 74, 2, 27, 49, 0, 5, 0, 0, 0, - 192, 71, 87, 171, 61, 77, 152, 53, 67, 131, 44, 57, 112, 33, 45, - 94, 21, 33, 74, 4, 19, 49, 0, 1, 0, 0, 0, 193, 71, 74, - 171, 62, 64, 152, 53, 55, 132, 44, 45, 113, 34, 34, 94, 22, 23, - 73, 5, 7, 48, 0, 0, 0, 0, 0, 193, 70, 58, 172, 62, 50, - 152, 54, 42, 132, 44, 32, 112, 35, 22, 93, 23, 10, 73, 6, 0, - 47, 0, 0, 0, 0, 0, 193, 70, 45, 172, 62, 38, 153, 54, 31, - 132, 44, 21, 112, 35, 9, 94, 23, 0, 73, 7, 0, 47, 0, 0, - 0, 0, 0, 189, 26, 141, 169, 15, 126, 150, 2, 112, 131, 0, 97, - 113, 0, 82, 94, 0, 67, 75, 0, 51, 50, 0, 29, 0, 0, 0, - 190, 28, 128, 170, 18, 114, 151, 8, 101, 132, 0, 88, 113, 0, 74, - 94, 0, 60, 75, 0, 44, 50, 0, 23, 0, 0, 0, 191, 30, 117, - 170, 23, 104, 152, 11, 92, 132, 1, 79, 113, 0, 67, 95, 0, 53, - 75, 0, 37, 50, 0, 17, 0, 0, 0, 191, 33, 105, 170, 26, 93, - 151, 18, 83, 132, 6, 70, 112, 0, 58, 94, 0, 45, 75, 0, 30, - 49, 0, 8, 0, 0, 0, 191, 34, 93, 170, 27, 82, 151, 20, 72, - 131, 8, 61, 112, 0, 49, 94, 0, 38, 74, 0, 23, 49, 0, 4, - 0, 0, 0, 191, 36, 82, 170, 29, 71, 151, 22, 63, 131, 11, 52, - 112, 0, 41, 93, 0, 29, 74, 0, 14, 48, 0, 1, 0, 0, 0, - 191, 38, 69, 170, 31, 60, 151, 24, 51, 131, 14, 41, 112, 1, 31, - 93, 0, 19, 73, 0, 3, 48, 0, 0, 0, 0, 0, 192, 37, 56, - 171, 31, 47, 152, 25, 40, 131, 17, 30, 112, 4, 19, 93, 0, 7, - 73, 0, 0, 47, 0, 0, 0, 0, 0, 192, 38, 45, 171, 33, 36, - 152, 26, 30, 131, 18, 21, 111, 7, 9, 93, 0, 0, 73, 0, 0, - 47, 0, 0, 0, 0, 0, 149, 218, 248, 133, 194, 222, 119, 173, 198, - 102, 151, 173, 86, 130, 148, 70, 108, 125, 53, 85, 100, 32, 59, 71, - 0, 22, 33, 154, 216, 223, 137, 193, 200, 122, 172, 178, 106, 150, 156, - 89, 128, 133, 73, 107, 112, 54, 85, 89, 31, 59, 63, 0, 22, 26, - 159, 215, 202, 141, 192, 181, 126, 171, 161, 108, 149, 141, 90, 128, 121, - 74, 107, 100, 55, 85, 80, 32, 58, 55, 0, 22, 19, 161, 213, 179, - 144, 190, 160, 126, 170, 143, 109, 148, 125, 92, 127, 107, 74, 106, 89, - 56, 84, 69, 32, 58, 46, 0, 21, 11, 163, 211, 156, 144, 189, 139, - 129, 168, 125, 110, 147, 108, 93, 126, 92, 75, 105, 76, 57, 83, 58, - 33, 58, 37, 0, 21, 1, 167, 211, 133, 147, 188, 120, 130, 167, 105, - 110, 145, 92, 93, 125, 78, 76, 104, 64, 58, 83, 48, 33, 57, 27, - 0, 21, 0, 169, 210, 108, 149, 187, 96, 131, 166, 86, 112, 144, 74, - 94, 124, 62, 77, 103, 49, 58, 82, 35, 33, 57, 15, 0, 21, 0, - 170, 209, 80, 151, 186, 71, 133, 165, 62, 114, 143, 52, 95, 123, 42, - 77, 103, 32, 58, 81, 18, 33, 56, 0, 0, 21, 0, 173, 208, 55, - 152, 186, 49, 134, 165, 41, 114, 143, 34, 95, 122, 25, 77, 102, 14, - 58, 81, 0, 33, 56, 0, 0, 21, 0, 154, 195, 232, 137, 174, 207, - 122, 156, 185, 105, 136, 163, 89, 116, 140, 73, 97, 117, 56, 76, 94, - 35, 51, 66, 0, 13, 28, 158, 194, 209, 141, 174, 187, 125, 155, 167, - 109, 135, 146, 91, 116, 125, 75, 96, 105, 57, 75, 83, 35, 50, 57, - 0, 12, 21, 161, 193, 189, 144, 173, 169, 128, 154, 151, 110, 134, 132, - 93, 115, 113, 77, 95, 94, 58, 75, 74, 35, 50, 50, 0, 12, 13, - 164, 192, 168, 145, 171, 151, 129, 153, 134, 111, 133, 117, 94, 114, 100, - 76, 95, 82, 58, 75, 64, 36, 50, 42, 0, 12, 5, 165, 191, 147, - 147, 170, 131, 130, 152, 117, 113, 132, 102, 95, 113, 86, 77, 94, 71, - 58, 74, 54, 35, 50, 33, 0, 13, 0, 167, 189, 126, 148, 169, 113, - 132, 151, 100, 113, 131, 86, 96, 112, 73, 77, 93, 59, 59, 73, 43, - 35, 49, 23, 0, 12, 0, 170, 189, 104, 150, 168, 91, 133, 150, 81, - 114, 130, 69, 96, 111, 57, 78, 92, 46, 59, 73, 31, 35, 49, 11, - 0, 13, 0, 171, 188, 78, 152, 168, 68, 134, 149, 60, 115, 130, 50, - 96, 111, 41, 78, 92, 29, 60, 73, 15, 35, 49, 0, 0, 12, 0, - 173, 187, 55, 153, 167, 47, 134, 149, 39, 115, 129, 33, 97, 110, 24, - 79, 92, 13, 60, 72, 0, 35, 48, 0, 0, 12, 0, 157, 175, 217, - 139, 157, 196, 125, 141, 175, 109, 122, 153, 92, 104, 132, 76, 86, 110, - 59, 67, 88, 37, 43, 61, 1, 1, 23, 161, 174, 196, 144, 156, 176, - 127, 140, 158, 110, 121, 137, 94, 104, 118, 77, 85, 98, 59, 67, 78, - 37, 43, 53, 0, 2, 16, 163, 174, 178, 146, 156, 160, 130, 139, 143, - 112, 121, 124, 95, 103, 106, 78, 85, 88, 60, 66, 69, 37, 42, 46, - 0, 2, 7, 166, 173, 159, 147, 154, 142, 130, 138, 127, 113, 120, 111, - 96, 103, 95, 78, 84, 77, 60, 66, 59, 37, 43, 37, 0, 2, 0, - 166, 172, 139, 148, 154, 125, 131, 137, 112, 113, 120, 96, 96, 102, 81, - 78, 84, 66, 60, 65, 50, 37, 42, 29, 0, 3, 0, 167, 171, 120, - 149, 153, 107, 133, 137, 95, 114, 118, 81, 97, 101, 69, 79, 84, 56, - 60, 65, 40, 37, 42, 19, 0, 3, 0, 170, 170, 99, 151, 152, 87, - 134, 136, 77, 115, 118, 66, 97, 101, 55, 79, 83, 42, 61, 65, 28, - 37, 42, 7, 0, 3, 0, 172, 170, 75, 152, 151, 65, 134, 135, 57, - 115, 117, 48, 97, 100, 38, 79, 83, 27, 61, 64, 12, 36, 42, 0, - 0, 3, 0, 172, 169, 55, 154, 151, 46, 135, 134, 40, 116, 116, 32, - 97, 99, 21, 80, 82, 10, 61, 64, 0, 36, 41, 0, 0, 3, 0, - 160, 154, 203, 143, 139, 182, 127, 124, 164, 111, 107, 143, 95, 91, 122, - 78, 75, 103, 60, 57, 81, 39, 33, 56, 1, 0, 18, 163, 154, 184, - 146, 138, 165, 130, 123, 148, 113, 107, 129, 96, 90, 110, 79, 74, 92, - 61, 56, 72, 39, 34, 48, 2, 0, 9, 165, 154, 167, 147, 137, 149, - 131, 122, 134, 114, 106, 117, 96, 90, 100, 79, 74, 82, 61, 56, 64, - 39, 33, 40, 2, 0, 1, 166, 153, 150, 149, 137, 133, 132, 122, 119, - 114, 106, 104, 97, 90, 88, 79, 74, 72, 61, 56, 55, 39, 34, 33, - 0, 0, 0, 168, 152, 132, 149, 136, 117, 132, 121, 104, 114, 105, 90, - 97, 89, 76, 79, 73, 62, 61, 56, 46, 38, 34, 25, 0, 0, 0, - 169, 151, 114, 150, 135, 101, 133, 121, 90, 114, 104, 77, 97, 89, 65, - 80, 73, 51, 61, 56, 36, 38, 34, 16, 0, 0, 0, 170, 150, 94, - 151, 135, 83, 134, 120, 73, 115, 104, 62, 98, 88, 51, 80, 72, 39, - 61, 56, 24, 38, 34, 3, 0, 0, 0, 172, 150, 72, 153, 134, 63, - 135, 119, 55, 115, 103, 45, 98, 88, 36, 80, 72, 24, 61, 55, 9, - 38, 34, 0, 0, 0, 0, 172, 150, 54, 153, 134, 47, 135, 119, 38, - 116, 103, 30, 98, 87, 21, 80, 72, 8, 62, 55, 0, 37, 34, 0, - 0, 0, 0, 162, 134, 190, 145, 120, 171, 129, 108, 153, 113, 93, 134, - 97, 78, 115, 80, 63, 96, 62, 46, 75, 41, 23, 51, 0, 0, 11, - 165, 134, 173, 147, 120, 154, 131, 107, 138, 114, 92, 120, 97, 78, 103, - 80, 63, 85, 62, 46, 66, 40, 23, 43, 0, 0, 2, 166, 134, 157, - 148, 120, 140, 132, 106, 125, 114, 92, 109, 97, 77, 93, 81, 63, 77, - 62, 46, 58, 40, 24, 36, 0, 0, 0, 168, 133, 140, 149, 119, 125, - 132, 106, 112, 115, 92, 97, 98, 77, 82, 81, 62, 67, 62, 46, 50, - 40, 24, 29, 0, 0, 0, 168, 133, 123, 150, 119, 110, 133, 106, 97, - 115, 91, 84, 98, 77, 70, 81, 62, 57, 62, 46, 41, 40, 24, 20, - 0, 0, 0, 169, 132, 107, 150, 118, 94, 133, 105, 84, 115, 91, 72, - 98, 76, 60, 80, 62, 47, 62, 46, 32, 39, 25, 11, 0, 0, 0, - 171, 132, 89, 152, 118, 79, 135, 105, 69, 115, 90, 58, 98, 76, 47, - 80, 62, 36, 62, 46, 21, 39, 25, 0, 0, 0, 0, 171, 132, 69, - 153, 117, 60, 135, 104, 52, 116, 90, 42, 98, 76, 33, 81, 61, 21, - 62, 46, 6, 38, 25, 0, 0, 0, 0, 172, 132, 54, 153, 118, 45, - 135, 104, 38, 116, 90, 28, 98, 76, 18, 81, 61, 6, 62, 46, 0, - 38, 25, 0, 0, 0, 0, 164, 115, 177, 146, 103, 159, 130, 91, 143, - 114, 78, 125, 97, 65, 107, 81, 51, 89, 63, 34, 69, 41, 9, 46, - 0, 0, 4, 166, 115, 161, 148, 103, 144, 132, 91, 129, 115, 78, 112, - 98, 65, 96, 81, 51, 79, 63, 35, 61, 41, 11, 38, 0, 0, 0, - 167, 115, 146, 150, 102, 131, 132, 91, 117, 115, 78, 101, 98, 65, 86, - 81, 51, 71, 63, 35, 54, 41, 12, 32, 0, 0, 0, 168, 114, 132, - 150, 103, 118, 133, 91, 105, 116, 78, 91, 98, 64, 76, 82, 51, 61, - 63, 36, 46, 41, 13, 24, 0, 0, 0, 169, 114, 116, 150, 102, 103, - 134, 90, 91, 116, 78, 79, 98, 65, 66, 81, 51, 53, 63, 36, 37, - 40, 14, 17, 0, 0, 0, 169, 114, 101, 151, 101, 89, 134, 90, 79, - 116, 77, 67, 98, 64, 56, 81, 51, 44, 63, 36, 29, 40, 15, 7, - 0, 0, 0, 170, 114, 85, 152, 101, 75, 135, 90, 65, 116, 77, 54, - 98, 64, 44, 81, 51, 32, 63, 36, 17, 39, 15, 0, 0, 0, 0, - 172, 113, 66, 152, 101, 58, 135, 89, 49, 116, 77, 40, 99, 64, 30, - 81, 51, 18, 62, 36, 3, 38, 16, 0, 0, 0, 0, 171, 113, 51, - 153, 101, 44, 136, 89, 36, 116, 77, 28, 99, 64, 18, 81, 51, 5, - 62, 36, 0, 38, 16, 0, 0, 0, 0, 165, 94, 166, 147, 82, 147, - 132, 72, 132, 115, 61, 115, 98, 49, 99, 82, 36, 82, 64, 19, 64, - 42, 0, 41, 0, 0, 0, 167, 93, 150, 150, 83, 134, 133, 73, 120, - 116, 62, 104, 99, 49, 88, 82, 36, 72, 64, 20, 55, 41, 0, 33, - 0, 0, 0, 169, 93, 137, 150, 83, 122, 134, 73, 109, 116, 61, 94, - 99, 50, 80, 82, 37, 65, 64, 21, 49, 41, 0, 27, 0, 0, 0, - 169, 94, 123, 150, 83, 110, 133, 73, 97, 116, 61, 83, 99, 50, 70, - 82, 38, 57, 63, 23, 42, 41, 0, 20, 0, 0, 0, 169, 94, 109, - 150, 84, 97, 134, 73, 85, 116, 62, 73, 99, 51, 61, 81, 38, 48, - 63, 23, 33, 41, 1, 11, 0, 0, 0, 170, 94, 96, 150, 83, 84, - 134, 73, 74, 116, 61, 62, 99, 50, 51, 82, 38, 39, 64, 23, 24, - 40, 3, 4, 0, 0, 0, 171, 93, 79, 152, 82, 70, 135, 73, 61, - 116, 62, 51, 98, 51, 40, 81, 38, 28, 63, 24, 14, 39, 4, 0, - 0, 0, 0, 171, 94, 64, 152, 83, 55, 135, 73, 47, 116, 62, 37, - 98, 50, 27, 81, 38, 15, 63, 24, 1, 39, 4, 0, 0, 0, 0, - 172, 93, 51, 153, 82, 42, 135, 73, 35, 117, 62, 26, 99, 51, 16, - 81, 39, 3, 63, 25, 0, 38, 5, 0, 0, 0, 0, 166, 68, 153, - 148, 59, 137, 133, 49, 121, 115, 39, 106, 99, 28, 91, 82, 13, 75, - 65, 0, 58, 42, 0, 36, 0, 0, 0, 168, 68, 139, 150, 59, 124, - 134, 50, 110, 116, 40, 96, 99, 30, 81, 82, 16, 66, 64, 0, 50, - 41, 0, 29, 0, 0, 0, 169, 69, 126, 150, 59, 113, 134, 51, 101, - 117, 42, 87, 100, 30, 73, 82, 17, 59, 65, 0, 43, 41, 0, 23, - 0, 0, 0, 169, 70, 115, 150, 61, 102, 134, 52, 89, 116, 42, 77, - 99, 32, 65, 82, 19, 52, 64, 0, 36, 41, 0, 15, 0, 0, 0, - 169, 70, 101, 150, 61, 90, 134, 52, 79, 116, 43, 68, 99, 32, 55, - 82, 21, 43, 64, 2, 28, 41, 0, 6, 0, 0, 0, 170, 70, 89, - 151, 62, 79, 134, 53, 69, 116, 44, 58, 99, 33, 46, 81, 21, 34, - 64, 3, 20, 41, 0, 2, 0, 0, 0, 170, 71, 76, 152, 62, 66, - 134, 53, 57, 116, 43, 46, 99, 33, 36, 82, 22, 24, 64, 5, 10, - 40, 0, 0, 0, 0, 0, 171, 70, 61, 152, 62, 52, 135, 53, 44, - 116, 44, 35, 99, 34, 24, 82, 22, 12, 63, 6, 0, 39, 0, 0, - 0, 0, 0, 171, 71, 49, 153, 62, 41, 135, 54, 33, 117, 45, 25, - 98, 34, 13, 81, 23, 0, 63, 7, 0, 39, 0, 0, 0, 0, 0, - 167, 33, 142, 149, 24, 127, 134, 10, 113, 116, 0, 97, 100, 0, 83, - 83, 0, 68, 65, 0, 52, 40, 0, 30, 0, 0, 0, 169, 33, 129, - 150, 26, 115, 134, 17, 102, 116, 3, 89, 100, 0, 75, 83, 0, 60, - 65, 0, 45, 40, 0, 24, 0, 0, 0, 169, 36, 118, 151, 27, 104, - 134, 19, 93, 116, 7, 80, 100, 0, 67, 83, 0, 54, 65, 0, 38, - 41, 0, 17, 0, 0, 0, 169, 39, 107, 150, 30, 94, 134, 22, 84, - 116, 11, 71, 99, 0, 59, 83, 0, 46, 64, 0, 31, 40, 0, 9, - 0, 0, 0, 169, 39, 95, 151, 31, 83, 134, 24, 73, 116, 15, 62, - 100, 1, 51, 83, 0, 38, 64, 0, 24, 40, 0, 5, 0, 0, 0, - 169, 41, 83, 151, 33, 73, 134, 26, 64, 117, 17, 54, 99, 4, 42, - 82, 0, 30, 64, 0, 16, 40, 0, 1, 0, 0, 0, 170, 42, 71, - 152, 34, 62, 134, 28, 53, 117, 19, 44, 99, 6, 33, 82, 0, 21, - 63, 0, 4, 39, 0, 0, 0, 0, 0, 171, 42, 59, 152, 35, 50, - 134, 29, 42, 117, 21, 32, 99, 9, 22, 82, 0, 9, 63, 0, 0, - 38, 0, 0, 0, 0, 0, 172, 42, 48, 152, 36, 40, 135, 29, 32, - 117, 21, 23, 99, 10, 12, 82, 0, 0, 63, 0, 0, 38, 0, 0, - 0, 0, 0, 107, 207, 246, 96, 185, 220, 86, 165, 196, 73, 144, 171, - 60, 123, 147, 46, 103, 125, 32, 82, 100, 9, 56, 71, 0, 20, 33, - 115, 206, 221, 104, 184, 198, 92, 164, 178, 78, 143, 154, 64, 123, 133, - 51, 102, 111, 34, 81, 89, 10, 56, 63, 0, 20, 27, 122, 204, 200, - 108, 183, 180, 95, 163, 161, 82, 142, 140, 68, 122, 120, 54, 102, 101, - 36, 81, 79, 11, 56, 55, 0, 20, 20, 125, 203, 179, 111, 181, 160, - 97, 162, 143, 85, 141, 124, 70, 121, 107, 55, 101, 89, 38, 80, 69, - 14, 55, 46, 0, 19, 10, 128, 202, 156, 113, 180, 140, 102, 161, 125, - 87, 140, 108, 71, 120, 92, 56, 100, 76, 39, 79, 59, 14, 55, 38, - 0, 20, 3, 132, 200, 135, 117, 179, 121, 103, 159, 106, 88, 139, 93, - 73, 119, 79, 57, 100, 65, 41, 79, 49, 15, 54, 28, 0, 19, 0, - 134, 200, 111, 119, 178, 98, 105, 158, 87, 89, 138, 76, 74, 118, 64, - 58, 99, 51, 41, 78, 37, 16, 54, 17, 0, 19, 0, 137, 199, 85, - 122, 177, 75, 108, 158, 66, 91, 137, 56, 75, 118, 46, 59, 98, 35, - 42, 78, 22, 16, 54, 3, 0, 19, 0, 140, 198, 62, 125, 177, 55, - 109, 158, 47, 92, 137, 40, 76, 117, 32, 59, 98, 21, 42, 78, 6, - 16, 54, 0, 0, 18, 0, 118, 186, 231, 106, 167, 206, 93, 149, 184, - 81, 130, 161, 67, 111, 139, 54, 92, 117, 39, 72, 93, 17, 48, 66, - 0, 10, 29, 123, 185, 207, 110, 166, 186, 98, 148, 167, 85, 129, 145, - 71, 111, 125, 56, 92, 104, 40, 72, 83, 18, 48, 57, 0, 10, 22, - 128, 184, 188, 113, 165, 168, 102, 147, 151, 88, 128, 131, 73, 110, 113, - 58, 91, 94, 42, 71, 74, 19, 48, 50, 0, 9, 15, 131, 183, 168, - 116, 164, 151, 104, 146, 134, 89, 127, 117, 73, 109, 100, 58, 90, 83, - 42, 71, 65, 20, 48, 42, 0, 9, 5, 134, 182, 148, 120, 163, 131, - 105, 145, 118, 90, 126, 102, 75, 108, 86, 59, 90, 72, 43, 71, 55, - 19, 47, 34, 0, 9, 0, 136, 181, 128, 122, 162, 115, 107, 144, 102, - 92, 125, 87, 76, 107, 74, 61, 89, 60, 44, 70, 45, 20, 47, 24, - 0, 8, 0, 139, 180, 106, 124, 161, 95, 109, 144, 83, 93, 124, 71, - 77, 107, 60, 61, 89, 47, 44, 70, 33, 20, 47, 13, 0, 8, 0, - 142, 179, 82, 125, 160, 72, 111, 143, 63, 94, 124, 54, 77, 106, 44, - 61, 88, 32, 44, 69, 18, 20, 46, 0, 0, 8, 0, 143, 179, 62, - 127, 160, 54, 111, 142, 47, 94, 124, 39, 78, 106, 29, 62, 88, 18, - 45, 69, 3, 20, 46, 0, 0, 8, 0, 124, 167, 216, 112, 150, 194, - 99, 134, 174, 87, 117, 153, 73, 100, 131, 58, 82, 110, 43, 64, 88, - 23, 40, 61, 0, 0, 24, 129, 166, 195, 116, 150, 175, 103, 134, 158, - 89, 116, 137, 75, 99, 118, 60, 82, 98, 44, 63, 78, 23, 40, 53, - 0, 0, 17, 132, 166, 177, 119, 149, 160, 106, 133, 143, 90, 115, 124, - 76, 99, 107, 61, 81, 88, 45, 63, 69, 24, 40, 46, 0, 0, 9, - 136, 166, 159, 121, 148, 143, 107, 132, 126, 92, 115, 111, 77, 98, 94, - 62, 81, 78, 46, 63, 60, 23, 40, 38, 0, 0, 0, 138, 164, 140, - 122, 147, 125, 108, 131, 111, 93, 114, 97, 79, 98, 82, 63, 80, 67, - 46, 62, 50, 24, 40, 29, 0, 0, 0, 139, 163, 122, 124, 146, 109, - 110, 131, 96, 94, 114, 83, 79, 97, 70, 63, 81, 57, 46, 62, 41, - 24, 40, 21, 0, 0, 0, 141, 163, 101, 126, 145, 90, 111, 130, 79, - 95, 113, 68, 79, 96, 56, 63, 80, 44, 47, 62, 30, 23, 40, 10, - 0, 0, 0, 144, 162, 79, 127, 145, 70, 112, 129, 60, 95, 112, 51, - 79, 96, 41, 64, 79, 30, 47, 61, 15, 23, 40, 0, 0, 0, 0, - 145, 162, 60, 129, 145, 52, 113, 129, 46, 96, 112, 37, 79, 95, 27, - 64, 79, 16, 47, 61, 1, 23, 39, 0, 0, 0, 0, 131, 147, 202, - 117, 133, 181, 105, 119, 162, 91, 103, 142, 77, 87, 122, 62, 71, 102, - 47, 54, 81, 26, 31, 56, 0, 0, 18, 135, 147, 183, 120, 132, 164, - 107, 118, 147, 93, 102, 128, 78, 87, 110, 63, 71, 92, 47, 54, 72, - 26, 31, 48, 0, 0, 10, 138, 147, 166, 123, 131, 149, 108, 118, 133, - 94, 102, 116, 79, 86, 100, 64, 71, 82, 48, 54, 64, 27, 31, 41, - 0, 0, 2, 139, 146, 149, 124, 131, 134, 111, 117, 119, 94, 101, 103, - 79, 86, 88, 64, 70, 72, 48, 53, 55, 27, 31, 33, 0, 0, 0, - 141, 146, 132, 125, 131, 117, 111, 117, 104, 95, 101, 91, 80, 86, 77, - 65, 70, 62, 48, 53, 46, 26, 31, 25, 0, 0, 0, 143, 145, 115, - 126, 130, 101, 112, 116, 90, 96, 100, 78, 80, 85, 65, 65, 70, 52, - 49, 53, 37, 27, 32, 17, 0, 0, 0, 144, 144, 96, 128, 129, 85, - 112, 115, 75, 97, 100, 64, 81, 85, 52, 65, 69, 40, 49, 53, 26, - 26, 31, 5, 0, 0, 0, 146, 144, 76, 129, 129, 67, 114, 115, 58, - 97, 99, 48, 82, 84, 38, 66, 69, 27, 49, 53, 12, 26, 32, 0, - 0, 0, 0, 146, 144, 59, 130, 128, 51, 114, 114, 43, 98, 99, 35, - 82, 84, 25, 66, 69, 13, 49, 53, 0, 26, 32, 0, 0, 0, 0, - 135, 129, 189, 122, 115, 170, 107, 103, 152, 94, 89, 133, 79, 74, 114, - 64, 60, 95, 49, 43, 75, 29, 20, 51, 0, 0, 12, 138, 129, 171, - 124, 115, 153, 110, 103, 138, 95, 89, 120, 81, 74, 103, 66, 60, 86, - 50, 44, 67, 28, 21, 43, 0, 0, 3, 140, 129, 156, 125, 115, 140, - 111, 103, 125, 96, 89, 109, 81, 74, 93, 67, 60, 76, 50, 44, 59, - 29, 22, 36, 0, 0, 0, 142, 128, 140, 127, 115, 125, 112, 102, 112, - 97, 88, 97, 82, 74, 83, 67, 60, 67, 50, 44, 51, 29, 22, 29, - 0, 0, 0, 142, 128, 124, 127, 114, 111, 113, 102, 98, 98, 88, 85, - 82, 74, 71, 66, 60, 58, 50, 44, 42, 29, 22, 21, 0, 0, 0, - 144, 127, 108, 128, 114, 96, 113, 101, 85, 98, 87, 73, 82, 74, 61, - 67, 60, 48, 50, 44, 33, 28, 23, 12, 0, 0, 0, 145, 127, 91, - 129, 114, 81, 115, 101, 71, 98, 87, 60, 82, 73, 48, 67, 59, 37, - 50, 44, 22, 29, 23, 1, 0, 0, 0, 147, 127, 73, 130, 113, 63, - 115, 101, 55, 98, 87, 45, 83, 73, 35, 67, 59, 24, 50, 44, 10, - 28, 24, 0, 0, 0, 0, 147, 127, 58, 131, 113, 49, 115, 100, 42, - 99, 86, 33, 83, 73, 23, 67, 59, 10, 50, 44, 0, 27, 24, 0, - 0, 0, 0, 138, 110, 177, 124, 99, 159, 110, 88, 142, 96, 75, 125, - 82, 62, 107, 66, 48, 89, 51, 33, 70, 30, 8, 46, 0, 0, 5, - 142, 111, 160, 127, 99, 144, 113, 88, 130, 98, 75, 112, 82, 62, 96, - 68, 49, 80, 51, 33, 61, 30, 10, 39, 0, 0, 0, 143, 111, 146, - 128, 99, 131, 114, 88, 118, 98, 75, 101, 83, 62, 86, 68, 49, 71, - 52, 33, 54, 30, 11, 32, 0, 0, 0, 144, 111, 132, 128, 99, 118, - 113, 88, 106, 99, 75, 91, 83, 62, 77, 68, 49, 62, 52, 34, 46, - 30, 12, 25, 0, 0, 0, 144, 111, 117, 129, 98, 104, 114, 87, 92, - 99, 75, 80, 83, 62, 67, 68, 49, 53, 51, 34, 38, 30, 13, 18, - 0, 0, 0, 145, 111, 103, 130, 98, 91, 114, 87, 80, 99, 75, 68, - 83, 63, 57, 68, 50, 45, 51, 34, 30, 30, 14, 8, 0, 0, 0, - 146, 110, 87, 131, 98, 76, 115, 87, 67, 99, 75, 56, 83, 62, 45, - 68, 49, 33, 52, 35, 19, 30, 15, 2, 0, 0, 0, 148, 110, 70, - 131, 98, 60, 116, 86, 52, 99, 74, 43, 84, 62, 33, 69, 49, 21, - 52, 35, 6, 29, 15, 0, 0, 0, 0, 148, 110, 56, 132, 97, 48, - 117, 87, 40, 100, 75, 31, 84, 62, 22, 68, 49, 9, 51, 35, 0, - 28, 15, 0, 0, 0, 0, 142, 91, 166, 126, 80, 148, 113, 71, 132, - 98, 59, 115, 83, 47, 99, 69, 34, 82, 53, 17, 64, 32, 0, 41, - 0, 0, 0, 143, 91, 150, 128, 81, 135, 114, 71, 120, 99, 60, 104, - 85, 48, 89, 69, 35, 73, 53, 19, 56, 32, 0, 34, 0, 0, 0, - 145, 91, 137, 129, 81, 122, 115, 71, 109, 100, 60, 94, 85, 48, 81, - 69, 35, 65, 53, 19, 49, 32, 0, 28, 0, 0, 0, 146, 92, 124, - 130, 81, 110, 115, 71, 98, 100, 60, 84, 85, 49, 71, 69, 36, 57, - 53, 21, 42, 32, 0, 21, 0, 0, 0, 147, 91, 110, 130, 81, 97, - 115, 71, 86, 100, 60, 74, 84, 49, 62, 69, 36, 48, 53, 22, 34, - 32, 0, 13, 0, 0, 0, 147, 92, 97, 130, 81, 85, 116, 72, 76, - 100, 60, 63, 85, 49, 52, 69, 37, 40, 53, 22, 26, 31, 1, 5, - 0, 0, 0, 148, 92, 82, 131, 81, 71, 116, 71, 62, 100, 60, 53, - 84, 49, 42, 69, 37, 30, 52, 23, 16, 31, 2, 0, 0, 0, 0, - 148, 91, 67, 132, 81, 57, 117, 71, 49, 100, 60, 39, 84, 49, 30, - 69, 37, 18, 52, 23, 2, 30, 2, 0, 0, 0, 0, 149, 91, 54, - 132, 81, 46, 118, 71, 39, 101, 60, 29, 85, 49, 19, 69, 37, 6, - 52, 23, 0, 29, 3, 0, 0, 0, 0, 143, 68, 153, 128, 59, 137, - 115, 49, 122, 99, 39, 107, 85, 28, 91, 70, 13, 75, 54, 0, 58, - 32, 0, 36, 0, 0, 0, 146, 68, 140, 131, 59, 125, 116, 51, 111, - 100, 40, 97, 85, 29, 82, 70, 15, 67, 54, 0, 50, 32, 0, 29, - 0, 0, 0, 147, 68, 127, 131, 59, 114, 117, 51, 102, 101, 41, 88, - 86, 30, 74, 70, 17, 60, 54, 0, 44, 32, 0, 23, 0, 0, 0, - 147, 70, 115, 131, 60, 103, 116, 52, 91, 100, 42, 78, 85, 32, 65, - 70, 19, 53, 54, 1, 38, 32, 0, 17, 0, 0, 0, 147, 70, 103, - 131, 61, 91, 117, 53, 81, 101, 43, 69, 86, 32, 57, 70, 20, 44, - 54, 2, 30, 32, 0, 7, 0, 0, 0, 148, 70, 91, 132, 61, 80, - 117, 52, 70, 101, 43, 59, 85, 33, 48, 70, 21, 36, 53, 4, 22, - 32, 0, 3, 0, 0, 0, 148, 70, 78, 132, 62, 68, 117, 53, 58, - 101, 43, 48, 85, 34, 38, 70, 22, 26, 53, 6, 12, 31, 0, 0, - 0, 0, 0, 149, 71, 64, 132, 62, 54, 118, 54, 46, 101, 44, 37, - 85, 34, 27, 69, 23, 15, 53, 7, 1, 30, 0, 0, 0, 0, 0, - 150, 70, 53, 134, 61, 44, 118, 54, 36, 101, 44, 28, 85, 35, 17, - 69, 23, 4, 52, 8, 0, 30, 0, 0, 0, 0, 0, 145, 38, 143, - 130, 29, 128, 117, 18, 114, 101, 3, 98, 87, 0, 84, 72, 0, 69, - 54, 0, 53, 30, 0, 31, 0, 0, 0, 147, 38, 130, 132, 30, 116, - 117, 22, 103, 101, 8, 89, 87, 0, 76, 72, 0, 62, 54, 0, 46, - 30, 0, 24, 0, 0, 0, 148, 40, 119, 132, 31, 105, 117, 23, 94, - 101, 13, 81, 87, 0, 68, 71, 0, 55, 54, 0, 39, 30, 0, 18, - 0, 0, 0, 148, 42, 108, 132, 34, 96, 117, 25, 85, 102, 15, 73, - 86, 2, 60, 71, 0, 47, 54, 0, 33, 30, 0, 11, 0, 0, 0, - 148, 43, 96, 133, 35, 85, 117, 28, 75, 102, 18, 64, 87, 5, 52, - 71, 0, 40, 54, 0, 25, 30, 0, 5, 0, 0, 0, 149, 44, 85, - 132, 36, 75, 118, 29, 66, 101, 20, 55, 86, 8, 44, 70, 0, 32, - 53, 0, 18, 29, 0, 2, 0, 0, 0, 149, 45, 74, 133, 37, 64, - 118, 31, 55, 102, 21, 45, 85, 10, 34, 70, 0, 22, 53, 0, 6, - 28, 0, 0, 0, 0, 0, 150, 46, 61, 133, 39, 52, 118, 31, 44, - 102, 23, 34, 85, 12, 24, 70, 0, 12, 52, 0, 0, 28, 0, 0, - 0, 0, 0, 150, 46, 51, 133, 40, 42, 119, 32, 35, 102, 24, 25, - 85, 13, 14, 70, 0, 1, 52, 0, 0, 27, 0, 0, 0, 0, 0, - 53, 198, 244, 49, 177, 218, 41, 158, 195, 32, 138, 171, 22, 118, 147, - 11, 98, 124, 0, 78, 100, 0, 54, 71, 0, 18, 34, 69, 196, 220, - 64, 175, 196, 54, 157, 176, 45, 137, 154, 32, 117, 133, 19, 98, 111, - 0, 78, 89, 0, 53, 63, 0, 17, 27, 80, 195, 198, 69, 175, 179, - 60, 156, 159, 50, 136, 139, 38, 116, 120, 25, 98, 101, 4, 77, 80, - 0, 53, 55, 0, 17, 21, 84, 193, 177, 75, 173, 159, 64, 155, 142, - 55, 135, 124, 41, 116, 107, 27, 97, 89, 9, 76, 70, 0, 53, 47, - 0, 17, 11, 89, 193, 157, 79, 172, 140, 70, 154, 125, 57, 134, 109, - 44, 115, 92, 32, 96, 76, 13, 76, 59, 0, 52, 39, 0, 16, 4, - 94, 191, 135, 85, 171, 121, 72, 152, 108, 60, 133, 94, 47, 114, 80, - 32, 95, 65, 15, 76, 49, 0, 52, 29, 0, 16, 0, 98, 190, 113, - 87, 170, 100, 76, 152, 89, 62, 132, 77, 49, 113, 65, 35, 95, 52, - 18, 75, 37, 0, 52, 18, 0, 15, 0, 103, 190, 89, 90, 169, 80, - 78, 151, 70, 64, 132, 60, 51, 113, 49, 37, 94, 38, 20, 75, 25, - 0, 52, 5, 0, 15, 0, 106, 189, 69, 93, 169, 61, 80, 151, 53, - 66, 131, 45, 52, 113, 36, 37, 94, 25, 19, 74, 11, 0, 51, 0, - 0, 15, 0, 76, 178, 229, 68, 159, 205, 61, 142, 183, 50, 124, 160, - 40, 106, 138, 28, 88, 116, 12, 69, 93, 0, 45, 66, 0, 5, 29, - 86, 177, 207, 78, 158, 184, 67, 142, 166, 56, 123, 145, 45, 106, 125, - 31, 88, 105, 16, 69, 83, 0, 45, 58, 0, 6, 22, 93, 176, 187, - 81, 158, 168, 71, 141, 150, 61, 123, 131, 47, 105, 113, 35, 87, 94, - 20, 68, 74, 0, 45, 51, 0, 5, 16, 98, 175, 168, 84, 157, 150, - 75, 140, 134, 63, 122, 117, 50, 104, 100, 37, 87, 83, 21, 68, 65, - 0, 45, 42, 0, 4, 7, 100, 174, 149, 89, 155, 132, 76, 139, 117, - 65, 121, 102, 53, 104, 87, 39, 86, 72, 23, 67, 55, 0, 45, 34, - 0, 3, 0, 103, 173, 130, 92, 155, 115, 80, 138, 102, 68, 120, 88, - 53, 103, 75, 40, 86, 61, 24, 67, 45, 0, 45, 25, 0, 3, 0, - 107, 172, 108, 95, 154, 96, 82, 137, 85, 70, 119, 73, 55, 102, 61, - 42, 85, 49, 25, 67, 34, 0, 45, 14, 0, 3, 0, 110, 172, 86, - 97, 153, 76, 85, 137, 67, 70, 119, 57, 56, 102, 46, 42, 84, 35, - 26, 66, 21, 0, 44, 1, 0, 3, 0, 112, 171, 67, 98, 153, 59, - 86, 137, 52, 71, 119, 44, 58, 102, 34, 44, 85, 22, 27, 66, 7, - 0, 44, 0, 0, 3, 0, 90, 160, 215, 81, 144, 193, 70, 129, 173, - 61, 112, 151, 49, 95, 131, 37, 79, 109, 22, 61, 87, 0, 38, 61, - 0, 0, 25, 96, 160, 194, 86, 143, 174, 75, 128, 157, 65, 112, 137, - 53, 95, 117, 40, 78, 98, 25, 60, 78, 0, 38, 53, 0, 0, 17, - 100, 159, 177, 89, 143, 159, 79, 128, 143, 67, 111, 124, 55, 95, 107, - 42, 78, 89, 27, 60, 70, 2, 38, 46, 0, 0, 9, 104, 158, 159, - 92, 142, 143, 81, 127, 127, 69, 110, 110, 56, 94, 94, 43, 78, 78, - 28, 60, 60, 2, 38, 38, 0, 0, 1, 107, 157, 140, 94, 141, 125, - 82, 126, 112, 71, 110, 97, 59, 94, 82, 45, 77, 67, 29, 59, 51, - 4, 37, 30, 0, 0, 0, 110, 156, 122, 97, 140, 109, 85, 125, 97, - 72, 109, 83, 58, 93, 71, 45, 77, 57, 29, 60, 42, 5, 38, 22, - 0, 0, 0, 111, 156, 103, 99, 139, 91, 87, 125, 81, 73, 108, 69, - 60, 92, 58, 46, 77, 45, 30, 59, 31, 5, 38, 12, 0, 0, 0, - 115, 156, 82, 101, 140, 73, 88, 124, 63, 74, 108, 53, 60, 92, 44, - 46, 76, 32, 31, 59, 18, 6, 37, 0, 0, 0, 0, 116, 155, 65, - 102, 139, 58, 89, 124, 49, 75, 108, 41, 61, 92, 32, 48, 76, 21, - 31, 59, 6, 5, 37, 0, 0, 0, 0, 100, 141, 201, 88, 127, 181, - 79, 114, 162, 69, 99, 142, 57, 83, 122, 44, 68, 102, 30, 51, 81, - 7, 28, 56, 0, 0, 19, 105, 141, 182, 94, 127, 163, 83, 114, 146, - 71, 98, 128, 59, 83, 110, 46, 68, 91, 31, 51, 72, 10, 28, 48, - 0, 0, 11, 108, 141, 166, 96, 127, 149, 85, 113, 133, 73, 98, 116, - 60, 83, 99, 46, 68, 82, 32, 51, 64, 11, 29, 41, 0, 0, 2, - 111, 141, 149, 98, 126, 134, 88, 112, 119, 74, 97, 103, 61, 83, 88, - 48, 67, 72, 33, 51, 56, 11, 29, 34, 0, 0, 0, 112, 140, 132, - 100, 125, 118, 89, 112, 105, 75, 97, 91, 62, 82, 77, 49, 68, 62, - 33, 51, 47, 12, 29, 26, 0, 0, 0, 115, 140, 116, 102, 125, 103, - 90, 111, 91, 76, 96, 78, 62, 82, 65, 49, 67, 52, 34, 51, 38, - 13, 29, 18, 0, 0, 0, 117, 139, 97, 103, 124, 87, 91, 111, 77, - 78, 96, 65, 63, 81, 54, 49, 67, 41, 34, 51, 27, 12, 29, 7, - 0, 0, 0, 119, 138, 78, 105, 124, 69, 92, 110, 60, 78, 95, 50, - 65, 81, 40, 50, 67, 29, 34, 51, 15, 13, 30, 0, 0, 0, 0, - 120, 138, 64, 106, 124, 54, 93, 110, 47, 78, 95, 38, 65, 81, 29, - 50, 66, 17, 34, 50, 2, 13, 29, 0, 0, 0, 0, 107, 124, 189, - 96, 111, 169, 85, 99, 152, 73, 85, 132, 61, 71, 114, 48, 57, 95, - 34, 41, 75, 14, 18, 51, 0, 0, 13, 111, 124, 171, 100, 111, 153, - 88, 99, 137, 75, 85, 120, 63, 72, 103, 50, 58, 85, 36, 41, 66, - 15, 19, 43, 0, 0, 4, 113, 124, 156, 101, 111, 139, 90, 99, 125, - 77, 85, 109, 64, 71, 93, 51, 57, 77, 36, 42, 59, 17, 20, 37, - 0, 0, 0, 115, 124, 140, 103, 111, 125, 90, 99, 112, 78, 85, 97, - 64, 71, 82, 52, 57, 67, 36, 42, 50, 16, 20, 30, 0, 0, 0, - 117, 123, 125, 104, 110, 111, 92, 98, 99, 79, 85, 86, 65, 71, 72, - 51, 58, 59, 37, 42, 43, 17, 21, 22, 0, 0, 0, 118, 123, 110, - 105, 110, 97, 93, 98, 86, 78, 84, 74, 66, 71, 62, 52, 57, 49, - 37, 42, 34, 17, 22, 14, 0, 0, 0, 120, 123, 93, 106, 109, 82, - 94, 97, 72, 80, 84, 61, 66, 71, 50, 52, 57, 38, 37, 42, 24, - 17, 22, 2, 0, 0, 0, 121, 122, 75, 108, 109, 66, 95, 97, 58, - 80, 84, 48, 66, 71, 37, 52, 57, 26, 37, 42, 12, 16, 22, 0, - 0, 0, 0, 122, 123, 62, 108, 109, 52, 95, 97, 45, 81, 84, 36, - 67, 70, 26, 52, 57, 14, 37, 42, 0, 15, 22, 0, 0, 0, 0, - 113, 107, 177, 102, 96, 159, 89, 85, 141, 78, 72, 124, 65, 60, 107, - 52, 46, 89, 37, 30, 70, 18, 5, 46, 0, 0, 6, 116, 107, 160, - 104, 96, 144, 92, 85, 129, 80, 72, 112, 67, 60, 96, 53, 47, 80, - 38, 31, 62, 19, 7, 39, 0, 0, 0, 118, 107, 147, 105, 96, 131, - 93, 85, 118, 80, 72, 101, 67, 60, 87, 54, 47, 71, 39, 31, 54, - 19, 8, 32, 0, 0, 0, 119, 107, 132, 106, 96, 118, 94, 85, 106, - 81, 73, 91, 67, 60, 77, 54, 47, 63, 39, 32, 47, 20, 9, 25, - 0, 0, 0, 119, 107, 118, 106, 95, 105, 94, 85, 93, 81, 72, 80, - 68, 60, 68, 54, 47, 54, 39, 32, 39, 20, 11, 18, 0, 0, 0, - 121, 107, 104, 107, 96, 92, 95, 84, 80, 81, 72, 69, 68, 61, 58, - 54, 48, 46, 39, 33, 31, 20, 12, 9, 0, 0, 0, 123, 107, 88, - 108, 95, 77, 96, 84, 68, 82, 72, 57, 68, 60, 46, 54, 47, 35, - 39, 33, 20, 19, 13, 2, 0, 0, 0, 123, 106, 72, 110, 95, 63, - 96, 84, 54, 82, 72, 45, 69, 60, 35, 55, 48, 23, 39, 33, 9, - 18, 14, 0, 0, 0, 0, 125, 106, 60, 110, 94, 50, 98, 84, 42, - 83, 72, 34, 69, 60, 25, 55, 48, 12, 39, 33, 0, 17, 13, 0, - 0, 0, 0, 118, 89, 165, 105, 79, 148, 93, 69, 132, 81, 57, 115, - 68, 45, 99, 55, 32, 82, 41, 15, 64, 21, 0, 41, 0, 0, 0, - 120, 89, 150, 107, 79, 135, 96, 69, 121, 82, 58, 105, 70, 46, 89, - 56, 34, 73, 41, 17, 56, 21, 0, 34, 0, 0, 0, 121, 89, 137, - 108, 79, 123, 96, 69, 109, 82, 58, 95, 70, 47, 81, 56, 34, 66, - 41, 18, 49, 21, 0, 28, 0, 0, 0, 122, 90, 124, 109, 79, 110, - 96, 69, 99, 83, 58, 85, 70, 47, 72, 56, 35, 58, 41, 19, 42, - 21, 0, 22, 0, 0, 0, 123, 90, 111, 110, 79, 98, 97, 69, 87, - 83, 59, 75, 70, 47, 63, 56, 35, 50, 41, 20, 35, 21, 0, 14, - 0, 0, 0, 123, 90, 98, 110, 79, 87, 97, 70, 76, 84, 58, 64, - 70, 48, 53, 56, 36, 41, 40, 21, 26, 21, 0, 5, 0, 0, 0, - 125, 89, 84, 111, 79, 73, 97, 69, 64, 84, 59, 54, 70, 48, 43, - 56, 36, 31, 40, 22, 17, 20, 1, 1, 0, 0, 0, 125, 89, 69, - 112, 79, 60, 98, 70, 51, 84, 59, 42, 70, 48, 32, 56, 36, 20, - 41, 22, 5, 19, 2, 0, 0, 0, 0, 126, 89, 57, 112, 79, 49, - 99, 70, 41, 84, 59, 32, 70, 48, 22, 56, 36, 10, 40, 22, 0, - 18, 2, 0, 0, 0, 0, 121, 67, 154, 108, 58, 138, 97, 50, 124, - 84, 39, 107, 71, 28, 92, 58, 12, 76, 43, 0, 59, 20, 0, 37, - 0, 0, 0, 124, 68, 140, 111, 59, 126, 98, 50, 112, 84, 40, 98, - 71, 29, 83, 58, 15, 67, 42, 0, 51, 20, 0, 30, 0, 0, 0, - 124, 68, 129, 111, 59, 114, 99, 51, 102, 86, 41, 88, 71, 30, 75, - 58, 17, 60, 42, 0, 45, 20, 0, 24, 0, 0, 0, 125, 70, 116, - 111, 60, 103, 99, 51, 92, 85, 41, 79, 71, 31, 66, 58, 19, 53, - 42, 3, 38, 20, 0, 17, 0, 0, 0, 125, 70, 104, 111, 61, 93, - 99, 52, 81, 85, 43, 69, 72, 32, 58, 58, 20, 45, 42, 4, 31, - 20, 0, 8, 0, 0, 0, 126, 70, 92, 111, 61, 81, 99, 52, 71, - 85, 42, 60, 71, 33, 49, 57, 21, 37, 42, 6, 23, 20, 0, 3, - 0, 0, 0, 126, 70, 79, 112, 61, 70, 99, 53, 60, 85, 43, 50, - 71, 33, 39, 57, 22, 28, 41, 7, 13, 19, 0, 0, 0, 0, 0, - 127, 71, 66, 113, 62, 56, 100, 53, 48, 86, 44, 39, 71, 34, 29, - 57, 23, 18, 41, 8, 2, 18, 0, 0, 0, 0, 0, 128, 70, 55, - 114, 62, 46, 100, 54, 39, 86, 44, 30, 71, 34, 20, 57, 23, 7, - 41, 9, 0, 18, 0, 0, 0, 0, 0, 124, 41, 145, 111, 32, 128, - 99, 23, 114, 86, 10, 100, 73, 0, 85, 60, 0, 71, 43, 0, 54, - 17, 0, 32, 0, 0, 0, 126, 42, 131, 113, 33, 117, 100, 25, 104, - 86, 14, 90, 73, 0, 77, 60, 0, 63, 44, 0, 47, 18, 0, 25, - 0, 0, 0, 127, 43, 120, 113, 34, 106, 101, 26, 95, 86, 17, 82, - 73, 2, 69, 59, 0, 56, 43, 0, 41, 18, 0, 19, 0, 0, 0, - 127, 45, 109, 113, 37, 97, 101, 28, 85, 86, 19, 74, 73, 5, 61, - 59, 0, 48, 43, 0, 34, 19, 0, 11, 0, 0, 0, 127, 46, 98, - 114, 38, 86, 100, 30, 76, 87, 21, 65, 73, 9, 54, 59, 0, 41, - 43, 0, 26, 18, 0, 5, 0, 0, 0, 127, 47, 87, 113, 39, 76, - 101, 31, 67, 86, 22, 56, 72, 11, 45, 59, 0, 33, 43, 0, 19, - 18, 0, 2, 0, 0, 0, 128, 48, 75, 114, 39, 65, 101, 33, 56, - 86, 23, 46, 72, 12, 36, 58, 0, 24, 42, 0, 9, 17, 0, 0, - 0, 0, 0, 129, 48, 63, 114, 41, 54, 102, 33, 46, 87, 24, 36, - 72, 14, 26, 58, 1, 14, 42, 0, 2, 16, 0, 0, 0, 0, 0, - 128, 48, 53, 114, 41, 44, 102, 34, 37, 87, 25, 27, 72, 15, 17, - 58, 1, 3, 41, 0, 0, 15, 0, 0, 0, 0, 0, 0, 189, 242, - 0, 169, 217, 0, 151, 194, 0, 132, 170, 0, 113, 147, 0, 94, 123, - 0, 74, 99, 0, 51, 71, 0, 15, 34, 1, 187, 219, 1, 167, 195, - 0, 150, 175, 0, 131, 153, 0, 113, 132, 0, 94, 111, 0, 74, 89, - 0, 50, 63, 0, 13, 28, 1, 186, 198, 1, 167, 178, 0, 149, 158, - 0, 130, 139, 0, 111, 119, 0, 93, 100, 0, 74, 80, 0, 50, 55, - 0, 13, 22, 1, 185, 176, 1, 165, 159, 1, 148, 142, 0, 129, 123, - 0, 111, 106, 0, 93, 89, 0, 73, 70, 0, 50, 47, 0, 13, 13, - 1, 184, 157, 1, 164, 141, 1, 147, 125, 0, 128, 110, 0, 110, 93, - 0, 92, 77, 0, 73, 60, 0, 50, 39, 0, 12, 5, 25, 182, 137, - 25, 163, 122, 17, 146, 109, 0, 128, 96, 0, 110, 81, 0, 92, 66, - 0, 73, 51, 0, 50, 30, 0, 10, 0, 42, 181, 114, 35, 163, 102, - 30, 145, 91, 14, 127, 80, 0, 109, 67, 0, 91, 53, 0, 72, 39, - 0, 50, 19, 0, 10, 0, 52, 181, 92, 43, 162, 83, 32, 145, 73, - 19, 126, 63, 0, 108, 52, 0, 90, 40, 0, 72, 27, 0, 50, 7, - 0, 10, 0, 57, 181, 74, 48, 162, 66, 37, 144, 57, 24, 126, 49, - 7, 108, 40, 0, 90, 29, 0, 72, 15, 0, 49, 0, 0, 10, 0, - 1, 170, 227, 1, 152, 203, 0, 136, 182, 0, 119, 159, 0, 101, 137, - 0, 84, 115, 0, 65, 92, 0, 43, 66, 0, 1, 29, 1, 169, 206, - 1, 151, 184, 1, 136, 165, 0, 118, 144, 0, 102, 125, 0, 84, 105, - 0, 65, 83, 0, 43, 58, 0, 0, 22, 29, 168, 186, 21, 151, 167, - 14, 135, 150, 4, 118, 131, 0, 101, 112, 0, 83, 94, 0, 65, 75, - 0, 43, 51, 0, 0, 16, 41, 167, 167, 33, 150, 150, 31, 134, 134, - 19, 117, 117, 4, 100, 100, 0, 83, 83, 0, 65, 65, 0, 42, 43, - 0, 0, 8, 48, 167, 149, 41, 149, 133, 33, 133, 118, 25, 116, 103, - 13, 99, 88, 0, 83, 73, 0, 65, 56, 0, 42, 35, 0, 0, 0, - 58, 165, 130, 49, 148, 115, 42, 132, 103, 31, 115, 89, 18, 99, 75, - 0, 82, 61, 0, 64, 46, 0, 42, 26, 0, 0, 0, 62, 164, 110, - 55, 147, 97, 45, 132, 87, 35, 115, 75, 22, 98, 63, 5, 82, 50, - 0, 64, 36, 0, 42, 16, 0, 0, 0, 69, 164, 89, 60, 147, 78, - 50, 131, 70, 37, 114, 59, 26, 98, 49, 10, 81, 37, 0, 64, 24, - 0, 42, 4, 0, 0, 0, 71, 164, 71, 63, 147, 63, 53, 131, 55, - 40, 114, 47, 28, 98, 38, 13, 81, 26, 0, 64, 12, 0, 42, 0, - 0, 0, 0, 28, 153, 214, 24, 138, 193, 23, 123, 171, 16, 107, 150, - 0, 91, 130, 0, 75, 109, 0, 58, 87, 0, 35, 61, 0, 0, 25, - 48, 153, 194, 41, 138, 174, 34, 123, 156, 27, 107, 136, 16, 91, 117, - 1, 75, 98, 0, 57, 78, 0, 35, 53, 0, 0, 17, 55, 153, 177, - 47, 137, 158, 42, 122, 142, 33, 107, 124, 22, 91, 106, 6, 75, 88, - 0, 57, 70, 0, 35, 46, 0, 0, 9, 61, 152, 158, 53, 136, 143, - 45, 122, 127, 36, 106, 111, 24, 90, 94, 10, 74, 78, 0, 57, 61, - 0, 35, 39, 0, 0, 2, 67, 151, 141, 59, 135, 126, 49, 121, 112, - 39, 105, 98, 29, 90, 83, 14, 74, 68, 0, 57, 52, 0, 35, 31, - 0, 0, 0, 71, 150, 123, 62, 135, 110, 54, 120, 98, 42, 105, 84, - 31, 89, 71, 16, 74, 58, 0, 57, 43, 0, 35, 22, 0, 0, 0, - 74, 150, 105, 64, 134, 92, 55, 120, 83, 45, 104, 71, 34, 89, 59, - 20, 73, 47, 0, 57, 32, 0, 35, 13, 0, 0, 0, 78, 149, 84, - 69, 134, 75, 59, 120, 66, 47, 103, 56, 34, 88, 46, 22, 73, 34, - 1, 57, 20, 0, 35, 1, 0, 0, 0, 80, 149, 69, 70, 133, 61, - 60, 119, 53, 49, 103, 44, 36, 88, 35, 23, 73, 24, 2, 56, 10, - 0, 35, 0, 0, 0, 0, 58, 136, 200, 50, 122, 180, 45, 109, 162, - 38, 94, 141, 27, 80, 121, 15, 65, 102, 0, 48, 81, 0, 26, 56, - 0, 0, 19, 66, 136, 182, 59, 122, 163, 52, 109, 146, 42, 94, 128, - 32, 80, 109, 20, 65, 91, 2, 48, 72, 0, 26, 49, 0, 0, 11, - 70, 136, 165, 62, 122, 149, 55, 108, 133, 46, 94, 116, 35, 80, 99, - 21, 65, 82, 4, 49, 64, 0, 26, 41, 0, 0, 3, 76, 135, 149, - 66, 121, 133, 58, 108, 119, 48, 94, 103, 36, 79, 88, 23, 65, 73, - 7, 49, 56, 0, 27, 34, 0, 0, 0, 78, 135, 133, 69, 120, 118, - 60, 107, 106, 50, 93, 92, 39, 79, 77, 26, 65, 63, 8, 49, 47, - 0, 27, 26, 0, 0, 0, 82, 134, 117, 71, 120, 104, 62, 107, 92, - 51, 93, 79, 39, 78, 66, 27, 64, 53, 10, 48, 39, 0, 27, 18, - 0, 0, 0, 84, 134, 99, 73, 119, 87, 64, 106, 77, 53, 92, 66, - 42, 78, 55, 28, 64, 42, 11, 48, 29, 0, 28, 9, 0, 0, 0, - 87, 133, 81, 76, 119, 72, 66, 106, 62, 55, 92, 52, 43, 78, 42, - 29, 64, 31, 12, 48, 17, 0, 28, 0, 0, 0, 0, 88, 134, 67, - 77, 119, 58, 68, 106, 51, 56, 92, 42, 44, 78, 32, 30, 64, 20, - 12, 48, 6, 0, 28, 0, 0, 0, 0, 73, 120, 189, 64, 107, 168, - 57, 96, 151, 47, 82, 133, 38, 69, 114, 26, 55, 95, 11, 39, 75, - 0, 16, 51, 0, 0, 14, 78, 120, 171, 69, 107, 153, 62, 95, 137, - 51, 82, 119, 40, 69, 102, 29, 55, 85, 15, 39, 66, 0, 17, 44, - 0, 0, 4, 81, 120, 156, 71, 107, 140, 64, 95, 125, 53, 82, 109, - 42, 69, 93, 31, 55, 77, 16, 39, 59, 0, 18, 37, 0, 0, 0, - 85, 120, 141, 74, 107, 126, 65, 95, 112, 54, 82, 97, 43, 69, 82, - 32, 55, 67, 17, 39, 51, 0, 19, 30, 0, 0, 0, 86, 119, 126, - 76, 106, 112, 66, 95, 100, 56, 81, 85, 45, 69, 72, 33, 55, 59, - 18, 40, 43, 0, 19, 22, 0, 0, 0, 89, 119, 110, 78, 106, 98, - 69, 94, 87, 56, 81, 75, 46, 68, 62, 33, 55, 49, 18, 40, 35, - 0, 20, 15, 0, 0, 0, 89, 119, 95, 80, 106, 83, 70, 94, 73, - 58, 81, 63, 46, 68, 51, 34, 55, 39, 19, 40, 25, 0, 20, 4, - 0, 0, 0, 92, 118, 78, 82, 106, 68, 70, 93, 59, 59, 81, 49, - 47, 68, 39, 34, 55, 28, 19, 40, 14, 0, 20, 0, 0, 0, 0, - 93, 118, 65, 82, 105, 55, 72, 93, 48, 60, 81, 39, 47, 68, 29, - 34, 55, 18, 20, 40, 2, 0, 20, 0, 0, 0, 0, 83, 104, 177, - 74, 93, 159, 65, 82, 142, 56, 70, 124, 45, 57, 106, 33, 44, 89, - 20, 28, 70, 1, 4, 46, 0, 0, 8, 86, 104, 161, 78, 93, 145, - 68, 82, 128, 58, 70, 112, 48, 58, 96, 35, 45, 80, 21, 29, 62, - 1, 6, 40, 0, 0, 0, 89, 104, 147, 79, 93, 131, 69, 82, 118, - 59, 70, 102, 47, 58, 87, 36, 45, 72, 23, 29, 55, 3, 7, 33, - 0, 0, 0, 90, 104, 132, 80, 93, 119, 71, 82, 106, 60, 70, 91, - 48, 58, 77, 37, 45, 62, 23, 30, 47, 4, 7, 26, 0, 0, 0, - 92, 104, 118, 82, 93, 105, 72, 82, 93, 61, 69, 80, 50, 58, 68, - 37, 45, 55, 23, 30, 39, 4, 8, 18, 0, 0, 0, 94, 104, 105, - 82, 92, 93, 72, 82, 82, 61, 70, 70, 50, 58, 58, 38, 46, 46, - 23, 31, 31, 6, 10, 11, 0, 0, 0, 95, 104, 90, 84, 92, 79, - 74, 82, 70, 62, 70, 58, 50, 58, 48, 37, 46, 36, 23, 31, 22, - 4, 11, 3, 0, 0, 0, 96, 103, 74, 85, 92, 65, 75, 81, 56, - 63, 70, 47, 50, 58, 37, 38, 46, 25, 24, 31, 11, 3, 11, 0, - 0, 0, 0, 97, 103, 62, 86, 92, 53, 76, 81, 45, 63, 69, 36, - 51, 58, 27, 38, 46, 15, 23, 31, 0, 3, 11, 0, 0, 0, 0, - 90, 87, 165, 81, 77, 148, 72, 67, 132, 62, 55, 116, 50, 44, 99, - 39, 31, 82, 25, 14, 64, 1, 0, 42, 0, 0, 1, 93, 87, 150, - 83, 77, 135, 74, 67, 121, 63, 56, 105, 52, 45, 90, 40, 32, 74, - 25, 16, 57, 3, 0, 35, 0, 0, 0, 95, 87, 138, 85, 77, 123, - 75, 67, 109, 63, 57, 95, 53, 45, 81, 41, 33, 66, 26, 17, 50, - 4, 0, 28, 0, 0, 0, 95, 88, 124, 85, 77, 111, 75, 67, 99, - 63, 57, 86, 53, 45, 72, 41, 33, 58, 26, 18, 43, 5, 1, 22, - 0, 0, 0, 97, 88, 112, 87, 77, 100, 76, 68, 88, 64, 57, 76, - 53, 46, 63, 41, 34, 50, 26, 19, 35, 5, 2, 14, 0, 0, 0, - 99, 87, 99, 87, 78, 88, 76, 68, 77, 65, 57, 65, 53, 46, 54, - 41, 35, 42, 27, 20, 27, 6, 2, 5, 0, 0, 0, 100, 87, 85, - 88, 77, 75, 77, 68, 65, 65, 57, 54, 53, 46, 44, 41, 35, 32, - 27, 21, 19, 5, 3, 2, 0, 0, 0, 100, 88, 71, 89, 77, 61, - 78, 68, 53, 66, 57, 44, 53, 47, 33, 41, 35, 22, 27, 21, 7, - 5, 3, 0, 0, 0, 0, 101, 87, 60, 90, 77, 52, 79, 68, 44, - 66, 58, 34, 53, 47, 25, 41, 35, 13, 26, 22, 0, 5, 3, 0, - 0, 0, 0, 97, 67, 155, 86, 58, 138, 77, 50, 125, 66, 39, 108, - 55, 28, 92, 43, 12, 76, 29, 0, 59, 2, 0, 37, 0, 0, 0, - 99, 67, 141, 88, 59, 127, 78, 50, 113, 68, 40, 98, 56, 29, 83, - 44, 15, 68, 29, 0, 52, 3, 0, 30, 0, 0, 0, 100, 68, 129, - 89, 59, 115, 80, 51, 103, 68, 41, 89, 56, 30, 75, 44, 16, 61, - 30, 0, 45, 4, 0, 24, 0, 0, 0, 100, 69, 118, 90, 60, 104, - 80, 51, 92, 67, 41, 79, 56, 31, 66, 44, 18, 53, 29, 2, 38, - 4, 0, 18, 0, 0, 0, 101, 69, 104, 90, 61, 93, 79, 51, 82, - 67, 42, 70, 56, 32, 59, 44, 20, 46, 29, 4, 31, 6, 0, 9, - 0, 0, 0, 102, 69, 93, 90, 61, 83, 80, 52, 72, 68, 42, 61, - 56, 33, 50, 43, 20, 38, 29, 5, 23, 7, 0, 4, 0, 0, 0, - 102, 70, 80, 91, 61, 71, 80, 52, 61, 68, 43, 51, 56, 32, 40, - 44, 21, 29, 30, 6, 14, 7, 0, 0, 0, 0, 0, 103, 70, 68, - 92, 61, 58, 81, 53, 50, 69, 43, 41, 56, 34, 31, 43, 22, 19, - 29, 7, 3, 7, 0, 0, 0, 0, 0, 104, 70, 57, 92, 61, 48, - 82, 53, 40, 69, 43, 32, 56, 34, 22, 43, 23, 10, 29, 8, 0, - 6, 0, 0, 0, 0, 0, 101, 45, 145, 91, 35, 129, 80, 26, 116, - 69, 15, 101, 59, 0, 86, 46, 0, 71, 31, 0, 55, 0, 0, 33, - 0, 0, 0, 104, 44, 132, 92, 36, 118, 82, 28, 105, 71, 17, 91, - 58, 3, 77, 46, 0, 63, 31, 0, 48, 2, 0, 26, 0, 0, 0, - 104, 46, 121, 93, 37, 107, 82, 30, 96, 70, 20, 83, 58, 6, 70, - 46, 0, 57, 32, 0, 41, 4, 0, 20, 0, 0, 0, 104, 48, 110, - 93, 40, 98, 82, 31, 87, 70, 22, 74, 59, 9, 62, 45, 0, 49, - 31, 0, 35, 6, 0, 13, 0, 0, 0, 104, 48, 99, 92, 41, 88, - 82, 32, 77, 70, 23, 65, 58, 11, 54, 46, 0, 42, 32, 0, 27, - 7, 0, 5, 0, 0, 0, 105, 50, 88, 93, 41, 77, 82, 34, 68, - 71, 24, 57, 58, 13, 46, 45, 1, 35, 31, 0, 21, 7, 0, 2, - 0, 0, 0, 105, 50, 76, 94, 41, 66, 83, 34, 57, 71, 25, 47, - 58, 15, 37, 45, 2, 25, 32, 0, 11, 7, 0, 0, 0, 0, 0, - 106, 50, 64, 94, 42, 55, 83, 35, 47, 71, 26, 38, 58, 16, 27, - 45, 4, 17, 31, 0, 4, 7, 0, 0, 0, 0, 0, 106, 51, 54, - 95, 42, 45, 83, 35, 38, 71, 27, 30, 58, 16, 19, 45, 5, 7, - 30, 0, 0, 6, 0, 0, 0, 0, 0, 0, 181, 240, 0, 162, 216, - 0, 144, 193, 0, 126, 168, 0, 109, 146, 0, 91, 123, 0, 71, 98, - 0, 48, 71, 0, 9, 34, 0, 179, 218, 0, 161, 195, 0, 144, 174, - 0, 126, 153, 0, 108, 132, 0, 90, 110, 0, 71, 88, 0, 48, 63, - 0, 8, 29, 0, 178, 197, 0, 159, 177, 0, 143, 159, 0, 125, 139, - 0, 107, 119, 0, 90, 99, 0, 71, 79, 0, 48, 55, 0, 8, 22, - 0, 177, 177, 0, 158, 158, 0, 142, 141, 0, 124, 123, 0, 107, 106, - 0, 89, 88, 0, 71, 70, 0, 48, 47, 0, 8, 14, 0, 176, 157, - 0, 158, 141, 0, 141, 126, 0, 123, 109, 0, 106, 93, 0, 89, 78, - 0, 70, 60, 0, 47, 39, 0, 7, 5, 0, 175, 138, 0, 157, 123, - 0, 141, 110, 0, 123, 96, 0, 105, 81, 0, 88, 67, 0, 70, 51, - 0, 48, 30, 0, 6, 0, 0, 173, 115, 0, 155, 104, 0, 140, 92, - 0, 122, 80, 0, 105, 67, 0, 88, 55, 0, 69, 40, 0, 47, 20, - 0, 6, 0, 0, 173, 94, 0, 155, 85, 0, 139, 75, 0, 121, 64, - 0, 104, 53, 0, 88, 42, 0, 70, 28, 0, 47, 9, 0, 6, 0, - 0, 173, 76, 0, 155, 70, 0, 138, 61, 0, 122, 53, 0, 104, 44, - 0, 87, 32, 0, 69, 18, 0, 47, 0, 0, 6, 0, 0, 164, 226, - 0, 147, 203, 0, 131, 181, 0, 114, 158, 0, 97, 136, 0, 80, 115, - 0, 63, 92, 0, 40, 65, 0, 0, 30, 0, 162, 205, 0, 145, 184, - 0, 130, 164, 0, 114, 143, 0, 97, 124, 0, 81, 104, 0, 63, 83, - 0, 40, 58, 0, 0, 23, 0, 162, 187, 0, 145, 167, 0, 130, 150, - 0, 113, 131, 0, 96, 112, 0, 80, 93, 0, 62, 74, 0, 40, 50, - 0, 0, 16, 0, 160, 167, 0, 144, 150, 0, 129, 134, 0, 112, 116, - 0, 96, 100, 0, 80, 82, 0, 62, 65, 0, 40, 43, 0, 0, 7, - 0, 160, 148, 0, 143, 133, 0, 128, 118, 0, 111, 103, 0, 96, 88, - 0, 80, 73, 0, 62, 56, 0, 40, 35, 0, 0, 0, 0, 158, 130, - 0, 142, 117, 0, 127, 104, 0, 111, 89, 0, 95, 76, 0, 79, 62, - 0, 62, 46, 0, 40, 26, 0, 0, 0, 0, 158, 111, 0, 141, 99, - 0, 127, 88, 0, 111, 76, 0, 95, 63, 0, 79, 51, 0, 62, 37, - 0, 40, 18, 0, 0, 0, 0, 158, 91, 0, 141, 81, 0, 126, 72, - 0, 110, 62, 0, 94, 50, 0, 79, 39, 0, 62, 25, 0, 40, 5, - 0, 0, 0, 0, 157, 74, 0, 141, 66, 0, 126, 59, 0, 110, 49, - 0, 94, 40, 0, 78, 29, 0, 61, 15, 0, 40, 0, 0, 0, 0, - 0, 148, 214, 0, 133, 192, 0, 119, 171, 0, 103, 150, 0, 87, 129, - 0, 72, 108, 0, 55, 86, 0, 32, 61, 0, 0, 25, 0, 147, 193, - 0, 132, 173, 0, 118, 155, 0, 103, 136, 0, 87, 116, 0, 72, 98, - 0, 55, 78, 0, 32, 53, 0, 0, 17, 0, 147, 176, 0, 132, 158, - 0, 118, 142, 0, 102, 124, 0, 87, 106, 0, 72, 88, 0, 55, 69, - 0, 33, 46, 0, 0, 9, 0, 146, 159, 0, 131, 142, 0, 117, 127, - 0, 102, 111, 0, 87, 95, 0, 71, 79, 0, 55, 61, 0, 33, 39, - 0, 0, 2, 0, 145, 140, 0, 130, 126, 0, 117, 112, 0, 101, 98, - 0, 86, 83, 0, 71, 68, 0, 55, 52, 0, 33, 31, 0, 0, 0, - 0, 144, 124, 0, 130, 111, 0, 116, 99, 0, 101, 84, 0, 86, 72, - 0, 71, 59, 0, 55, 43, 0, 33, 23, 0, 0, 0, 0, 144, 106, - 0, 129, 94, 0, 115, 83, 0, 101, 72, 0, 85, 60, 0, 71, 48, - 0, 55, 34, 0, 33, 14, 0, 0, 0, 3, 143, 86, 0, 129, 77, - 0, 115, 68, 0, 100, 58, 0, 85, 48, 0, 70, 36, 0, 54, 22, - 0, 33, 3, 0, 0, 0, 18, 143, 72, 13, 128, 63, 0, 115, 57, - 0, 100, 47, 0, 85, 37, 0, 70, 26, 0, 54, 13, 0, 33, 0, - 0, 0, 0, 0, 132, 200, 0, 118, 179, 0, 105, 161, 0, 91, 140, - 0, 76, 121, 0, 62, 101, 0, 46, 81, 0, 24, 56, 0, 0, 19, - 0, 131, 182, 0, 118, 163, 0, 105, 146, 0, 91, 128, 0, 77, 110, - 0, 62, 91, 0, 46, 72, 0, 25, 48, 0, 0, 11, 0, 131, 165, - 0, 117, 149, 0, 104, 133, 0, 91, 116, 0, 77, 99, 0, 62, 82, - 0, 46, 64, 0, 25, 41, 0, 0, 4, 0, 131, 149, 0, 116, 134, - 0, 104, 119, 0, 91, 104, 0, 77, 89, 0, 62, 73, 0, 46, 56, - 0, 25, 34, 0, 0, 0, 10, 130, 133, 2, 116, 119, 0, 104, 106, - 0, 90, 91, 0, 76, 78, 0, 62, 64, 0, 46, 48, 0, 26, 27, - 0, 0, 0, 23, 130, 118, 20, 116, 104, 13, 103, 93, 3, 89, 79, - 0, 76, 67, 0, 62, 54, 0, 46, 39, 0, 26, 19, 0, 0, 0, - 33, 129, 101, 27, 115, 89, 19, 103, 79, 9, 89, 67, 0, 75, 56, - 0, 61, 43, 0, 46, 29, 0, 26, 10, 0, 0, 0, 41, 128, 83, - 35, 115, 73, 27, 102, 64, 15, 89, 55, 0, 76, 45, 0, 62, 33, - 0, 46, 18, 0, 26, 0, 0, 0, 0, 43, 129, 69, 38, 115, 61, - 30, 102, 54, 17, 89, 45, 2, 75, 34, 0, 61, 23, 0, 46, 9, - 0, 26, 0, 0, 0, 0, 1, 116, 188, 1, 104, 168, 0, 92, 151, - 0, 79, 132, 0, 66, 113, 0, 52, 94, 0, 36, 75, 0, 14, 52, - 0, 0, 14, 17, 116, 171, 16, 104, 153, 14, 92, 137, 8, 79, 119, - 0, 67, 102, 0, 53, 85, 0, 37, 67, 0, 16, 44, 0, 0, 4, - 31, 116, 155, 27, 104, 140, 21, 92, 125, 13, 79, 109, 3, 66, 93, - 0, 53, 77, 0, 37, 59, 0, 16, 38, 0, 0, 0, 37, 115, 141, - 30, 103, 126, 26, 92, 112, 16, 79, 98, 5, 66, 83, 0, 53, 67, - 0, 38, 51, 0, 17, 31, 0, 0, 0, 41, 115, 126, 37, 103, 112, - 31, 92, 100, 22, 79, 86, 10, 66, 72, 0, 53, 59, 0, 38, 44, - 0, 17, 23, 0, 0, 0, 48, 115, 111, 41, 102, 99, 34, 91, 88, - 24, 78, 76, 14, 66, 63, 0, 53, 50, 0, 38, 36, 0, 18, 15, - 0, 0, 0, 51, 115, 95, 46, 102, 85, 37, 91, 74, 26, 78, 63, - 16, 66, 52, 0, 53, 40, 0, 38, 26, 0, 18, 5, 0, 0, 0, - 55, 114, 80, 47, 102, 69, 40, 90, 60, 30, 78, 51, 19, 66, 41, - 3, 53, 29, 0, 38, 15, 0, 17, 0, 0, 0, 0, 56, 114, 66, - 50, 102, 58, 40, 91, 50, 32, 78, 41, 18, 66, 32, 4, 53, 21, - 0, 38, 5, 0, 17, 0, 0, 0, 0, 39, 102, 178, 37, 90, 159, - 30, 79, 142, 21, 68, 124, 14, 55, 106, 0, 42, 89, 0, 26, 70, - 0, 4, 46, 0, 0, 8, 48, 102, 161, 42, 90, 145, 35, 79, 128, - 26, 68, 112, 19, 55, 96, 3, 43, 79, 0, 27, 62, 0, 6, 40, - 0, 0, 0, 50, 102, 147, 44, 90, 132, 37, 79, 118, 30, 68, 102, - 20, 56, 87, 7, 43, 72, 0, 28, 55, 0, 6, 34, 0, 0, 0, - 53, 101, 133, 47, 90, 118, 41, 79, 106, 32, 68, 91, 21, 56, 78, - 9, 43, 63, 0, 28, 47, 0, 6, 26, 0, 0, 0, 57, 101, 119, - 50, 89, 106, 42, 79, 94, 34, 67, 81, 24, 56, 68, 9, 44, 55, - 0, 29, 40, 0, 6, 19, 0, 0, 0, 60, 100, 105, 50, 90, 94, - 45, 80, 83, 36, 68, 71, 24, 56, 59, 11, 44, 46, 0, 29, 32, - 0, 7, 12, 0, 0, 0, 63, 101, 91, 55, 90, 80, 46, 79, 70, - 37, 68, 59, 26, 56, 49, 12, 44, 37, 1, 29, 23, 0, 7, 3, - 0, 0, 0, 64, 101, 75, 56, 89, 67, 48, 79, 57, 37, 68, 48, - 27, 56, 37, 15, 44, 26, 0, 29, 12, 0, 7, 0, 0, 0, 0, - 66, 101, 64, 58, 89, 55, 49, 79, 47, 39, 68, 38, 27, 56, 29, - 14, 44, 18, 1, 30, 2, 0, 7, 0, 0, 0, 0, 57, 86, 165, - 51, 75, 148, 45, 65, 133, 38, 54, 116, 28, 43, 100, 16, 29, 83, - 0, 13, 64, 0, 0, 42, 0, 0, 3, 60, 86, 151, 55, 75, 135, - 47, 66, 121, 39, 55, 105, 30, 44, 90, 18, 31, 74, 3, 16, 57, - 0, 1, 35, 0, 0, 0, 62, 86, 139, 56, 75, 123, 49, 66, 110, - 40, 55, 95, 30, 44, 81, 19, 31, 66, 4, 17, 51, 0, 1, 29, - 0, 0, 0, 65, 86, 125, 56, 76, 112, 49, 66, 99, 39, 55, 86, - 31, 44, 72, 19, 32, 59, 5, 18, 44, 0, 1, 23, 0, 0, 0, - 67, 86, 113, 58, 75, 100, 51, 66, 88, 41, 56, 77, 31, 45, 64, - 20, 32, 51, 6, 18, 35, 0, 1, 14, 0, 0, 0, 69, 86, 99, - 61, 76, 88, 52, 66, 78, 43, 56, 66, 32, 45, 55, 20, 33, 42, - 7, 19, 27, 0, 1, 6, 0, 0, 0, 69, 86, 86, 61, 76, 75, - 53, 67, 66, 43, 56, 55, 33, 45, 45, 21, 34, 34, 8, 20, 20, - 0, 2, 2, 0, 0, 0, 71, 86, 72, 63, 75, 62, 54, 66, 55, - 45, 56, 45, 33, 45, 35, 22, 34, 23, 7, 20, 8, 0, 2, 0, - 0, 0, 0, 71, 86, 62, 64, 75, 53, 55, 66, 46, 45, 56, 36, - 33, 46, 27, 22, 34, 15, 8, 20, 0, 0, 2, 0, 0, 0, 0, - 69, 67, 156, 61, 58, 140, 53, 50, 125, 45, 39, 108, 35, 28, 93, - 25, 12, 77, 12, 0, 59, 0, 0, 37, 0, 0, 0, 71, 68, 142, - 63, 59, 126, 56, 50, 114, 47, 40, 98, 37, 28, 84, 26, 15, 68, - 12, 0, 53, 0, 0, 30, 0, 0, 0, 72, 68, 130, 63, 59, 116, - 56, 50, 104, 47, 40, 90, 38, 30, 75, 27, 16, 61, 13, 0, 46, - 0, 0, 24, 0, 0, 0, 73, 69, 118, 65, 59, 105, 57, 51, 92, - 47, 41, 80, 37, 30, 67, 26, 18, 53, 14, 1, 39, 0, 0, 18, - 0, 0, 0, 74, 69, 106, 65, 60, 93, 57, 51, 82, 48, 41, 70, - 38, 31, 59, 26, 19, 46, 13, 2, 32, 0, 0, 10, 0, 0, 0, - 76, 69, 95, 66, 61, 84, 58, 52, 73, 48, 42, 61, 37, 32, 50, - 26, 20, 38, 14, 4, 24, 0, 0, 4, 0, 0, 0, 76, 69, 81, - 68, 60, 72, 58, 52, 62, 48, 42, 51, 38, 32, 41, 27, 21, 30, - 14, 4, 16, 0, 0, 1, 0, 0, 0, 76, 69, 68, 68, 61, 60, - 60, 52, 51, 49, 43, 41, 38, 33, 32, 27, 21, 20, 14, 5, 5, - 0, 0, 0, 0, 0, 0, 78, 70, 59, 69, 61, 50, 60, 52, 42, - 49, 43, 34, 39, 33, 24, 27, 22, 13, 14, 7, 1, 0, 0, 0, - 0, 0, 0, 75, 46, 146, 68, 38, 131, 60, 30, 117, 50, 19, 102, - 41, 4, 87, 29, 0, 72, 13, 0, 55, 0, 0, 33, 0, 0, 0, - 78, 47, 132, 70, 39, 119, 61, 30, 105, 53, 20, 92, 42, 5, 78, - 30, 0, 64, 13, 0, 49, 0, 0, 27, 0, 0, 0, 79, 48, 122, - 70, 40, 108, 62, 32, 96, 52, 22, 84, 42, 9, 71, 30, 0, 58, - 14, 0, 42, 0, 0, 20, 0, 0, 0, 79, 50, 111, 70, 42, 99, - 62, 33, 88, 52, 23, 74, 41, 11, 63, 29, 0, 50, 14, 0, 36, - 0, 0, 14, 0, 0, 0, 80, 50, 99, 70, 42, 89, 61, 34, 78, - 52, 25, 67, 41, 14, 55, 30, 0, 42, 15, 0, 28, 0, 0, 6, - 0, 0, 0, 81, 51, 89, 71, 43, 78, 62, 35, 69, 52, 25, 58, - 42, 15, 47, 30, 3, 36, 15, 0, 22, 0, 0, 3, 0, 0, 0, - 81, 51, 77, 71, 44, 68, 63, 36, 59, 53, 26, 49, 41, 16, 38, - 31, 4, 27, 16, 0, 12, 0, 0, 0, 0, 0, 0, 81, 52, 65, - 72, 43, 56, 63, 36, 48, 53, 27, 39, 41, 17, 29, 30, 4, 18, - 14, 0, 3, 0, 0, 0, 0, 0, 0, 81, 52, 55, 73, 44, 47, - 64, 36, 39, 53, 28, 32, 42, 18, 21, 31, 6, 9, 14, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 174, 239, 0, 156, 214, 0, 139, 192, - 0, 121, 168, 0, 105, 145, 0, 87, 123, 0, 68, 98, 0, 46, 70, - 0, 3, 35, 0, 172, 217, 0, 155, 194, 0, 139, 173, 0, 121, 152, - 0, 104, 130, 0, 87, 110, 0, 69, 88, 0, 46, 63, 0, 4, 28, - 0, 171, 197, 0, 153, 175, 0, 138, 158, 0, 121, 139, 0, 103, 118, - 0, 86, 100, 0, 68, 79, 0, 46, 55, 0, 4, 22, 0, 170, 177, - 0, 152, 158, 0, 136, 141, 0, 119, 124, 0, 103, 106, 0, 86, 88, - 0, 68, 70, 0, 45, 47, 0, 3, 14, 0, 169, 157, 0, 152, 141, - 0, 136, 126, 0, 119, 109, 0, 102, 94, 0, 86, 78, 0, 68, 60, - 0, 46, 39, 0, 3, 5, 0, 167, 138, 0, 150, 124, 0, 135, 111, - 0, 118, 97, 0, 102, 82, 0, 85, 68, 0, 68, 52, 0, 46, 31, - 0, 3, 0, 0, 167, 118, 0, 150, 104, 0, 135, 94, 0, 118, 81, - 0, 101, 69, 0, 84, 56, 0, 67, 41, 0, 45, 21, 0, 3, 0, - 0, 166, 97, 0, 149, 87, 0, 134, 77, 0, 117, 67, 0, 101, 56, - 0, 85, 44, 0, 67, 30, 0, 45, 10, 0, 3, 0, 0, 165, 79, - 0, 149, 73, 0, 133, 64, 0, 117, 56, 0, 101, 46, 0, 85, 34, - 0, 68, 21, 0, 46, 1, 0, 3, 0, 0, 158, 225, 0, 141, 201, - 0, 126, 180, 0, 109, 158, 0, 94, 136, 0, 78, 114, 0, 60, 91, - 0, 38, 66, 0, 0, 30, 0, 156, 203, 0, 140, 183, 0, 125, 164, - 0, 109, 143, 0, 94, 124, 0, 78, 104, 0, 61, 83, 0, 38, 57, - 0, 0, 23, 0, 156, 186, 0, 140, 166, 0, 125, 150, 0, 109, 130, - 0, 93, 111, 0, 77, 93, 0, 60, 74, 0, 38, 50, 0, 0, 17, - 0, 155, 167, 0, 138, 149, 0, 124, 134, 0, 109, 117, 0, 93, 100, - 0, 76, 83, 0, 60, 65, 0, 38, 43, 0, 0, 9, 0, 153, 147, - 0, 138, 134, 0, 124, 120, 0, 107, 103, 0, 92, 88, 0, 77, 73, - 0, 60, 56, 0, 38, 35, 0, 0, 0, 0, 153, 131, 0, 137, 118, - 0, 122, 105, 0, 107, 90, 0, 91, 76, 0, 76, 63, 0, 60, 47, - 0, 39, 28, 0, 0, 0, 0, 153, 111, 0, 136, 100, 0, 123, 90, - 0, 107, 77, 0, 92, 65, 0, 76, 52, 0, 60, 37, 0, 38, 18, - 0, 0, 0, 0, 152, 93, 0, 136, 82, 0, 122, 74, 0, 106, 63, - 0, 91, 52, 0, 76, 40, 0, 59, 26, 0, 38, 6, 0, 0, 0, - 0, 151, 78, 0, 136, 69, 0, 121, 61, 0, 106, 52, 0, 91, 43, - 0, 76, 32, 0, 59, 17, 0, 38, 0, 0, 0, 0, 0, 143, 213, - 0, 128, 191, 0, 115, 171, 0, 100, 149, 0, 84, 128, 0, 69, 108, - 0, 52, 86, 0, 30, 61, 0, 0, 25, 0, 142, 193, 0, 127, 173, - 0, 114, 154, 0, 99, 134, 0, 84, 116, 0, 69, 98, 0, 52, 77, - 0, 31, 53, 0, 0, 18, 0, 141, 176, 0, 127, 158, 0, 114, 141, - 0, 98, 122, 0, 84, 105, 0, 69, 88, 0, 53, 69, 0, 31, 46, - 0, 0, 9, 0, 141, 159, 0, 126, 142, 0, 113, 127, 0, 98, 110, - 0, 83, 95, 0, 69, 78, 0, 53, 60, 0, 32, 39, 0, 0, 2, - 0, 140, 140, 0, 126, 126, 0, 112, 112, 0, 98, 98, 0, 83, 83, - 0, 68, 69, 0, 52, 52, 0, 31, 31, 0, 0, 0, 0, 140, 124, - 0, 125, 112, 0, 112, 100, 0, 97, 86, 0, 83, 72, 0, 68, 59, - 0, 52, 44, 0, 31, 23, 0, 0, 0, 0, 139, 106, 0, 125, 96, - 0, 111, 85, 0, 97, 72, 0, 83, 62, 0, 68, 49, 0, 52, 35, - 0, 31, 15, 0, 0, 0, 0, 138, 88, 0, 124, 79, 0, 111, 70, - 0, 96, 59, 0, 82, 48, 0, 68, 38, 0, 52, 24, 0, 31, 4, - 0, 0, 0, 0, 139, 76, 0, 124, 66, 0, 111, 58, 0, 96, 50, - 0, 82, 40, 0, 68, 29, 0, 52, 15, 0, 31, 0, 0, 0, 0, - 0, 129, 200, 0, 114, 179, 0, 102, 160, 0, 87, 139, 0, 74, 120, - 0, 60, 101, 0, 44, 81, 0, 22, 56, 0, 0, 19, 0, 127, 181, - 0, 114, 163, 0, 102, 146, 0, 88, 127, 0, 74, 109, 0, 60, 91, - 0, 44, 72, 0, 23, 48, 0, 0, 11, 0, 127, 166, 0, 113, 148, - 0, 101, 133, 0, 87, 115, 0, 74, 99, 0, 60, 82, 0, 44, 64, - 0, 23, 42, 0, 0, 4, 0, 127, 150, 0, 113, 134, 0, 101, 119, - 0, 87, 104, 0, 74, 89, 0, 60, 73, 0, 44, 56, 0, 23, 35, - 0, 0, 0, 0, 125, 134, 0, 112, 118, 0, 100, 106, 0, 87, 92, - 0, 73, 78, 0, 60, 64, 0, 44, 48, 0, 23, 27, 0, 0, 0, - 0, 125, 118, 0, 112, 105, 0, 100, 94, 0, 86, 80, 0, 73, 68, - 0, 60, 54, 0, 44, 39, 0, 23, 20, 0, 0, 0, 0, 125, 101, - 0, 111, 90, 0, 99, 80, 0, 86, 69, 0, 73, 58, 0, 59, 45, - 0, 44, 30, 0, 23, 11, 0, 0, 0, 0, 124, 85, 0, 111, 75, - 0, 99, 66, 0, 86, 56, 0, 73, 45, 0, 59, 34, 0, 44, 20, - 0, 23, 1, 0, 0, 0, 0, 125, 72, 0, 111, 62, 0, 99, 56, - 0, 86, 46, 0, 73, 36, 0, 60, 26, 0, 44, 12, 0, 23, 0, - 0, 0, 0, 0, 114, 188, 0, 101, 167, 0, 89, 150, 0, 77, 131, - 0, 64, 113, 0, 50, 95, 0, 34, 75, 0, 12, 52, 0, 0, 14, - 0, 113, 170, 0, 101, 153, 0, 89, 137, 0, 77, 120, 0, 64, 102, - 0, 50, 85, 0, 35, 67, 0, 12, 44, 0, 0, 4, 0, 113, 156, - 0, 100, 139, 0, 89, 125, 0, 77, 109, 0, 64, 92, 0, 51, 77, - 0, 35, 60, 0, 12, 38, 0, 0, 0, 0, 112, 141, 0, 100, 126, - 0, 89, 113, 0, 77, 98, 0, 64, 83, 0, 51, 68, 0, 35, 51, - 0, 12, 30, 0, 0, 0, 0, 112, 127, 0, 100, 112, 0, 89, 100, - 0, 76, 87, 0, 64, 74, 0, 51, 59, 0, 35, 44, 0, 13, 24, - 0, 0, 0, 0, 112, 111, 0, 100, 100, 0, 88, 88, 0, 76, 76, - 0, 64, 64, 0, 51, 52, 0, 36, 37, 0, 13, 17, 0, 0, 0, - 0, 111, 96, 0, 99, 85, 0, 88, 76, 0, 76, 64, 0, 64, 53, - 0, 51, 41, 0, 36, 27, 0, 13, 6, 0, 0, 0, 0, 111, 81, - 0, 99, 71, 0, 88, 62, 0, 76, 52, 0, 64, 43, 0, 51, 31, - 0, 36, 17, 0, 13, 0, 0, 0, 0, 0, 111, 69, 0, 99, 60, - 0, 88, 52, 0, 75, 43, 0, 63, 34, 0, 51, 21, 0, 36, 7, - 0, 13, 0, 0, 0, 0, 0, 99, 177, 0, 88, 158, 0, 77, 141, - 0, 66, 123, 0, 53, 106, 0, 40, 89, 0, 25, 71, 0, 5, 47, - 0, 0, 8, 0, 99, 160, 0, 88, 144, 0, 77, 129, 0, 66, 112, - 0, 54, 97, 0, 41, 80, 0, 26, 62, 0, 5, 40, 0, 0, 0, - 0, 99, 147, 0, 87, 132, 0, 78, 117, 0, 66, 102, 0, 54, 87, - 0, 42, 72, 0, 26, 55, 0, 5, 34, 0, 0, 0, 0, 99, 134, - 0, 88, 119, 0, 77, 107, 0, 66, 92, 0, 54, 78, 0, 42, 64, - 0, 27, 48, 0, 5, 27, 0, 0, 0, 0, 99, 120, 0, 87, 107, - 0, 78, 94, 0, 66, 81, 0, 54, 68, 0, 42, 55, 0, 27, 40, - 0, 6, 20, 0, 0, 0, 0, 98, 105, 0, 87, 94, 0, 77, 84, - 0, 65, 71, 0, 55, 59, 0, 42, 47, 0, 28, 33, 0, 6, 12, - 0, 0, 0, 0, 98, 93, 0, 87, 81, 0, 77, 72, 0, 66, 61, - 0, 54, 49, 0, 42, 37, 0, 28, 24, 0, 6, 4, 0, 0, 0, - 0, 98, 77, 0, 87, 68, 0, 77, 59, 0, 65, 49, 0, 54, 39, - 0, 42, 27, 0, 29, 14, 0, 6, 0, 0, 0, 0, 1, 98, 65, - 7, 87, 56, 0, 77, 49, 0, 66, 41, 0, 54, 30, 0, 42, 19, - 0, 29, 3, 0, 6, 0, 0, 0, 0, 0, 84, 166, 0, 74, 149, - 0, 64, 134, 0, 53, 117, 0, 41, 100, 0, 28, 83, 0, 11, 64, - 0, 0, 42, 0, 0, 3, 0, 84, 151, 0, 74, 135, 0, 64, 121, - 0, 53, 105, 0, 42, 90, 0, 30, 75, 0, 14, 58, 0, 0, 36, - 0, 0, 0, 0, 84, 138, 0, 74, 124, 1, 64, 110, 0, 54, 95, - 0, 43, 81, 0, 30, 67, 0, 15, 51, 0, 1, 29, 0, 0, 0, - 14, 84, 126, 12, 74, 112, 2, 65, 99, 0, 54, 85, 0, 44, 73, - 0, 31, 59, 0, 16, 44, 0, 1, 23, 0, 0, 0, 16, 84, 113, - 13, 74, 100, 6, 65, 89, 0, 54, 77, 0, 44, 65, 0, 31, 51, - 0, 17, 36, 0, 1, 16, 0, 0, 0, 24, 84, 100, 18, 74, 88, - 13, 65, 78, 2, 55, 68, 0, 44, 55, 0, 32, 43, 0, 18, 28, - 0, 1, 6, 0, 0, 0, 26, 84, 87, 24, 74, 76, 17, 65, 67, - 7, 54, 57, 0, 44, 46, 0, 32, 35, 0, 19, 21, 0, 2, 3, - 0, 0, 0, 30, 84, 74, 28, 74, 64, 20, 65, 55, 12, 55, 46, - 0, 44, 35, 0, 32, 24, 0, 18, 9, 0, 1, 0, 0, 0, 0, - 32, 84, 63, 28, 74, 54, 21, 65, 47, 13, 54, 38, 0, 44, 28, - 0, 32, 16, 0, 18, 1, 0, 1, 0, 0, 0, 0, 30, 67, 155, - 20, 58, 139, 20, 49, 126, 12, 39, 110, 0, 27, 94, 0, 13, 77, - 0, 0, 60, 0, 0, 37, 0, 0, 0, 35, 67, 142, 30, 58, 126, - 23, 50, 114, 16, 40, 99, 7, 29, 85, 0, 15, 69, 0, 0, 52, - 0, 0, 30, 0, 0, 0, 35, 68, 131, 30, 59, 116, 27, 50, 104, - 18, 40, 90, 9, 29, 76, 0, 17, 62, 0, 2, 46, 0, 0, 24, - 0, 0, 0, 37, 69, 119, 33, 59, 106, 27, 51, 94, 21, 41, 80, - 9, 30, 67, 0, 18, 54, 0, 3, 39, 0, 0, 18, 0, 0, 0, - 40, 69, 107, 36, 59, 94, 28, 51, 84, 18, 41, 72, 10, 31, 60, - 0, 19, 47, 0, 4, 32, 0, 0, 10, 0, 0, 0, 42, 69, 95, - 36, 59, 84, 29, 51, 74, 19, 41, 63, 10, 31, 52, 0, 20, 39, - 0, 4, 25, 0, 0, 4, 0, 0, 0, 43, 69, 83, 38, 60, 73, - 32, 51, 62, 23, 42, 53, 11, 31, 42, 0, 20, 31, 0, 5, 17, - 0, 0, 1, 0, 0, 0, 45, 69, 70, 39, 60, 60, 33, 51, 52, - 24, 42, 43, 13, 32, 33, 0, 21, 21, 0, 5, 6, 0, 0, 0, - 0, 0, 0, 47, 69, 59, 41, 60, 51, 34, 51, 43, 24, 42, 35, - 12, 33, 26, 1, 22, 14, 0, 5, 1, 0, 0, 0, 0, 0, 0, - 46, 48, 146, 42, 40, 131, 36, 32, 118, 27, 22, 103, 17, 6, 88, - 5, 0, 73, 0, 0, 55, 0, 0, 33, 0, 0, 0, 48, 48, 133, - 44, 40, 119, 37, 32, 107, 28, 22, 93, 20, 8, 79, 7, 0, 65, - 0, 0, 49, 0, 0, 27, 0, 0, 0, 48, 50, 123, 44, 41, 109, - 37, 33, 97, 30, 23, 83, 21, 11, 71, 8, 0, 58, 0, 0, 42, - 0, 0, 21, 0, 0, 0, 49, 51, 111, 45, 42, 99, 38, 34, 87, - 29, 25, 75, 20, 13, 63, 8, 0, 51, 0, 0, 36, 0, 0, 14, - 0, 0, 0, 52, 52, 100, 44, 43, 89, 38, 35, 79, 29, 26, 68, - 19, 15, 56, 10, 1, 43, 0, 0, 28, 0, 0, 6, 0, 0, 0, - 52, 52, 90, 47, 44, 79, 39, 36, 70, 30, 27, 59, 20, 16, 47, - 9, 2, 36, 0, 0, 22, 0, 0, 2, 0, 0, 0, 52, 53, 78, - 46, 44, 68, 39, 37, 60, 32, 27, 49, 22, 17, 39, 10, 3, 28, - 0, 0, 12, 0, 0, 0, 0, 0, 0, 53, 53, 66, 47, 44, 57, - 40, 36, 48, 32, 27, 39, 22, 18, 30, 9, 4, 18, 0, 0, 3, - 0, 0, 0, 0, 0, 0, 54, 53, 57, 48, 45, 49, 41, 37, 41, - 33, 28, 32, 22, 19, 23, 11, 6, 10, 1, 0, 0, 0, 0, 0, - 0, 0, 0, -}; -void AdobeCMYK_to_sRGB1(uint8_t c, - uint8_t m, - uint8_t y, - uint8_t k, - uint8_t& R, - uint8_t& G, - uint8_t& B) { - int fix_c = c << 8; - int fix_m = m << 8; - int fix_y = y << 8; - int fix_k = k << 8; - int c_index = (fix_c + 4096) >> 13; - int m_index = (fix_m + 4096) >> 13; - int y_index = (fix_y + 4096) >> 13; - int k_index = (fix_k + 4096) >> 13; - int pos = (c_index * 9 * 9 * 9 + m_index * 9 * 9 + y_index * 9 + k_index) * 3; - int fix_r = g_CMYKSamples[pos] << 8; - int fix_g = g_CMYKSamples[pos + 1] << 8; - int fix_b = g_CMYKSamples[pos + 2] << 8; - int c1_index = fix_c >> 13; - if (c1_index == c_index) { - c1_index = c1_index == 8 ? c1_index - 1 : c1_index + 1; - } - int m1_index = fix_m >> 13; - if (m1_index == m_index) { - m1_index = m1_index == 8 ? m1_index - 1 : m1_index + 1; - } - int y1_index = fix_y >> 13; - if (y1_index == y_index) { - y1_index = y1_index == 8 ? y1_index - 1 : y1_index + 1; - } - int k1_index = fix_k >> 13; - if (k1_index == k_index) { - k1_index = k1_index == 8 ? k1_index - 1 : k1_index + 1; - } - int c1_pos = pos + (c1_index - c_index) * 9 * 9 * 9 * 3; - int m1_pos = pos + (m1_index - m_index) * 9 * 9 * 3; - int y1_pos = pos + (y1_index - y_index) * 9 * 3; - int k1_pos = pos + (k1_index - k_index) * 3; - int c_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[c1_pos]; - int c_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[c1_pos + 1]; - int c_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[c1_pos + 2]; - int m_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[m1_pos]; - int m_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[m1_pos + 1]; - int m_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[m1_pos + 2]; - int y_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[y1_pos]; - int y_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[y1_pos + 1]; - int y_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[y1_pos + 2]; - int k_r_delta = g_CMYKSamples[pos] - g_CMYKSamples[k1_pos]; - int k_g_delta = g_CMYKSamples[pos + 1] - g_CMYKSamples[k1_pos + 1]; - int k_b_delta = g_CMYKSamples[pos + 2] - g_CMYKSamples[k1_pos + 2]; - int c_rate = (fix_c - (c_index << 13)) * (c_index - c1_index); - fix_r += c_r_delta * c_rate / 32; - fix_g += c_g_delta * c_rate / 32; - fix_b += c_b_delta * c_rate / 32; - int m_rate = (fix_m - (m_index << 13)) * (m_index - m1_index); - fix_r += m_r_delta * m_rate / 32; - fix_g += m_g_delta * m_rate / 32; - fix_b += m_b_delta * m_rate / 32; - int y_rate = (fix_y - (y_index << 13)) * (y_index - y1_index); - fix_r += y_r_delta * y_rate / 32; - fix_g += y_g_delta * y_rate / 32; - fix_b += y_b_delta * y_rate / 32; - int k_rate = (fix_k - (k_index << 13)) * (k_index - k1_index); - fix_r += k_r_delta * k_rate / 32; - fix_g += k_g_delta * k_rate / 32; - fix_b += k_b_delta * k_rate / 32; - if (fix_r < 0) { - fix_r = 0; - } - if (fix_g < 0) { - fix_g = 0; - } - if (fix_b < 0) { - fix_b = 0; - } - R = fix_r >> 8; - G = fix_g >> 8; - B = fix_b >> 8; -} -void AdobeCMYK_to_sRGB(FX_FLOAT c, - FX_FLOAT m, - FX_FLOAT y, - FX_FLOAT k, - FX_FLOAT& R, - FX_FLOAT& G, - FX_FLOAT& B) { - uint8_t c1 = FXSYS_round(c * 255); - uint8_t m1 = FXSYS_round(m * 255); - uint8_t y1 = FXSYS_round(y * 255); - uint8_t k1 = FXSYS_round(k * 255); - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(c1, m1, y1, k1, r, g, b); - R = 1.0f * r / 255; - G = 1.0f * g / 255; - B = 1.0f * b / 255; -} diff --git a/core/src/fxcodec/codec/fx_codec_jbig.cpp b/core/src/fxcodec/codec/fx_codec_jbig.cpp deleted file mode 100644 index 44e30aa953..0000000000 --- a/core/src/fxcodec/codec/fx_codec_jbig.cpp +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/src/fxcodec/codec/codec_int.h" - -// Holds per-document JBig2 related data. -class JBig2DocumentContext : public CFX_DestructObject { - public: - std::list* GetSymbolDictCache() { - return &m_SymbolDictCache; - } - - ~JBig2DocumentContext() override { - for (auto it : m_SymbolDictCache) { - delete it.second; - } - } - - private: - std::list m_SymbolDictCache; -}; - -JBig2DocumentContext* GetJBig2DocumentContext(CCodec_Jbig2Module* pModule, - CFX_PrivateData* pPrivateData) { - void* pModulePrivateData = pPrivateData->GetPrivateData(pModule); - if (pModulePrivateData) { - CFX_DestructObject* pDestructObject = - reinterpret_cast(pModulePrivateData); - return static_cast(pDestructObject); - } - JBig2DocumentContext* pJBig2DocumentContext = new JBig2DocumentContext(); - pPrivateData->SetPrivateObj(pModule, pJBig2DocumentContext); - return pJBig2DocumentContext; -} - -CCodec_Jbig2Context::CCodec_Jbig2Context() { - FXSYS_memset(this, 0, sizeof(CCodec_Jbig2Context)); -} - -CCodec_Jbig2Module::~CCodec_Jbig2Module() { -} - -void* CCodec_Jbig2Module::CreateJbig2Context() { - return new CCodec_Jbig2Context(); -} -void CCodec_Jbig2Module::DestroyJbig2Context(void* pJbig2Content) { - if (pJbig2Content) { - CJBig2_Context::DestroyContext( - ((CCodec_Jbig2Context*)pJbig2Content)->m_pContext); - delete (CCodec_Jbig2Context*)pJbig2Content; - } - pJbig2Content = NULL; -} -FXCODEC_STATUS CCodec_Jbig2Module::StartDecode(void* pJbig2Context, - CFX_PrivateData* pPrivateData, - FX_DWORD width, - FX_DWORD height, - CPDF_StreamAcc* src_stream, - CPDF_StreamAcc* global_stream, - uint8_t* dest_buf, - FX_DWORD dest_pitch, - IFX_Pause* pPause) { - if (!pJbig2Context) { - return FXCODEC_STATUS_ERR_PARAMS; - } - JBig2DocumentContext* pJBig2DocumentContext = - GetJBig2DocumentContext(this, pPrivateData); - CCodec_Jbig2Context* m_pJbig2Context = (CCodec_Jbig2Context*)pJbig2Context; - m_pJbig2Context->m_width = width; - m_pJbig2Context->m_height = height; - m_pJbig2Context->m_pSrcStream = src_stream; - m_pJbig2Context->m_pGlobalStream = global_stream; - m_pJbig2Context->m_dest_buf = dest_buf; - m_pJbig2Context->m_dest_pitch = dest_pitch; - m_pJbig2Context->m_pPause = pPause; - FXSYS_memset(dest_buf, 0, height * dest_pitch); - m_pJbig2Context->m_pContext = CJBig2_Context::CreateContext( - global_stream, src_stream, pJBig2DocumentContext->GetSymbolDictCache(), - pPause); - if (!m_pJbig2Context->m_pContext) { - return FXCODEC_STATUS_ERROR; - } - int ret = m_pJbig2Context->m_pContext->getFirstPage(dest_buf, width, height, - dest_pitch, pPause); - if (m_pJbig2Context->m_pContext->GetProcessingStatus() == - FXCODEC_STATUS_DECODE_FINISH) { - CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); - m_pJbig2Context->m_pContext = NULL; - if (ret != JBIG2_SUCCESS) { - return FXCODEC_STATUS_ERROR; - } - int dword_size = height * dest_pitch / 4; - FX_DWORD* dword_buf = (FX_DWORD*)dest_buf; - for (int i = 0; i < dword_size; i++) { - dword_buf[i] = ~dword_buf[i]; - } - return FXCODEC_STATUS_DECODE_FINISH; - } - return m_pJbig2Context->m_pContext->GetProcessingStatus(); -} -FXCODEC_STATUS CCodec_Jbig2Module::ContinueDecode(void* pJbig2Context, - IFX_Pause* pPause) { - CCodec_Jbig2Context* m_pJbig2Context = (CCodec_Jbig2Context*)pJbig2Context; - int ret = m_pJbig2Context->m_pContext->Continue(pPause); - if (m_pJbig2Context->m_pContext->GetProcessingStatus() != - FXCODEC_STATUS_DECODE_FINISH) { - return m_pJbig2Context->m_pContext->GetProcessingStatus(); - } - CJBig2_Context::DestroyContext(m_pJbig2Context->m_pContext); - m_pJbig2Context->m_pContext = NULL; - if (ret != JBIG2_SUCCESS) { - return FXCODEC_STATUS_ERROR; - } - int dword_size = - m_pJbig2Context->m_height * m_pJbig2Context->m_dest_pitch / 4; - FX_DWORD* dword_buf = (FX_DWORD*)m_pJbig2Context->m_dest_buf; - for (int i = 0; i < dword_size; i++) { - dword_buf[i] = ~dword_buf[i]; - } - return FXCODEC_STATUS_DECODE_FINISH; -} diff --git a/core/src/fxcodec/codec/fx_codec_jpeg.cpp b/core/src/fxcodec/codec/fx_codec_jpeg.cpp deleted file mode 100644 index 14cc194db4..0000000000 --- a/core/src/fxcodec/codec/fx_codec_jpeg.cpp +++ /dev/null @@ -1,692 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/include/fxge/fx_dib.h" -#include "core/src/fxcodec/codec/codec_int.h" - -extern "C" { -#undef FAR -#if defined(USE_SYSTEM_LIBJPEG) -#include -#elif defined(USE_LIBJPEG_TURBO) -#include "third_party/libjpeg_turbo/jpeglib.h" -#else -#include "third_party/libjpeg/jpeglib.h" -#endif -} - -extern "C" { -static void _JpegScanSOI(const uint8_t*& src_buf, FX_DWORD& src_size) { - if (src_size == 0) { - return; - } - FX_DWORD offset = 0; - while (offset < src_size - 1) { - if (src_buf[offset] == 0xff && src_buf[offset + 1] == 0xd8) { - src_buf += offset; - src_size -= offset; - return; - } - offset++; - } -} -}; -extern "C" { -static void _src_do_nothing(struct jpeg_decompress_struct* cinfo) {} -}; -extern "C" { -static void _error_fatal(j_common_ptr cinfo) { - longjmp(*(jmp_buf*)cinfo->client_data, -1); -} -}; -extern "C" { -static void _src_skip_data(struct jpeg_decompress_struct* cinfo, long num) { - if (num > (long)cinfo->src->bytes_in_buffer) { - _error_fatal((j_common_ptr)cinfo); - } - cinfo->src->next_input_byte += num; - cinfo->src->bytes_in_buffer -= num; -} -}; -extern "C" { -static boolean _src_fill_buffer(j_decompress_ptr cinfo) { - return 0; -} -}; -extern "C" { -static boolean _src_resync(j_decompress_ptr cinfo, int desired) { - return 0; -} -}; -extern "C" { -static void _error_do_nothing(j_common_ptr cinfo) {} -}; -extern "C" { -static void _error_do_nothing1(j_common_ptr cinfo, int) {} -}; -extern "C" { -static void _error_do_nothing2(j_common_ptr cinfo, char*) {} -}; -#define JPEG_MARKER_EXIF (JPEG_APP0 + 1) -#define JPEG_MARKER_ICC (JPEG_APP0 + 2) -#define JPEG_MARKER_AUTHORTIME (JPEG_APP0 + 3) -#define JPEG_MARKER_MAXSIZE 0xFFFF -#define JPEG_OVERHEAD_LEN 14 -static FX_BOOL _JpegEmbedIccProfile(j_compress_ptr cinfo, - const uint8_t* icc_buf_ptr, - FX_DWORD icc_length) { - if (!icc_buf_ptr || icc_length == 0) { - return FALSE; - } - FX_DWORD icc_segment_size = (JPEG_MARKER_MAXSIZE - 2 - JPEG_OVERHEAD_LEN); - FX_DWORD icc_segment_num = (icc_length / icc_segment_size) + 1; - if (icc_segment_num > 255) { - return FALSE; - } - FX_DWORD icc_data_length = - JPEG_OVERHEAD_LEN + (icc_segment_num > 1 ? icc_segment_size : icc_length); - uint8_t* icc_data = FX_Alloc(uint8_t, icc_data_length); - FXSYS_memcpy(icc_data, "\x49\x43\x43\x5f\x50\x52\x4f\x46\x49\x4c\x45\x00", - 12); - icc_data[13] = (uint8_t)icc_segment_num; - for (uint8_t i = 0; i < (icc_segment_num - 1); i++) { - icc_data[12] = i + 1; - FXSYS_memcpy(icc_data + JPEG_OVERHEAD_LEN, - icc_buf_ptr + i * icc_segment_size, icc_segment_size); - jpeg_write_marker(cinfo, JPEG_MARKER_ICC, icc_data, icc_data_length); - } - icc_data[12] = (uint8_t)icc_segment_num; - FX_DWORD icc_size = (icc_segment_num - 1) * icc_segment_size; - FXSYS_memcpy(icc_data + JPEG_OVERHEAD_LEN, icc_buf_ptr + icc_size, - icc_length - icc_size); - jpeg_write_marker(cinfo, JPEG_MARKER_ICC, icc_data, - JPEG_OVERHEAD_LEN + icc_length - icc_size); - FX_Free(icc_data); - return TRUE; -} -extern "C" { -static void _dest_do_nothing(j_compress_ptr cinfo) {} -}; -extern "C" { -static boolean _dest_empty(j_compress_ptr cinfo) { - return FALSE; -} -}; -#define JPEG_BLOCK_SIZE 1048576 -static void _JpegEncode(const CFX_DIBSource* pSource, - uint8_t*& dest_buf, - FX_STRSIZE& dest_size, - int quality, - const uint8_t* icc_buf, - FX_DWORD icc_length) { - struct jpeg_error_mgr jerr; - jerr.error_exit = _error_do_nothing; - jerr.emit_message = _error_do_nothing1; - jerr.output_message = _error_do_nothing; - jerr.format_message = _error_do_nothing2; - jerr.reset_error_mgr = _error_do_nothing; - - struct jpeg_compress_struct cinfo; - memset(&cinfo, 0, sizeof(cinfo)); - cinfo.err = &jerr; - jpeg_create_compress(&cinfo); - int Bpp = pSource->GetBPP() / 8; - FX_DWORD nComponents = Bpp >= 3 ? (pSource->IsCmykImage() ? 4 : 3) : 1; - FX_DWORD pitch = pSource->GetPitch(); - FX_DWORD width = pdfium::base::checked_cast(pSource->GetWidth()); - FX_DWORD height = pdfium::base::checked_cast(pSource->GetHeight()); - FX_SAFE_DWORD safe_buf_len = width; - safe_buf_len *= height; - safe_buf_len *= nComponents; - safe_buf_len += 1024; - if (icc_length) { - safe_buf_len += 255 * 18; - safe_buf_len += icc_length; - } - FX_DWORD dest_buf_length = 0; - if (!safe_buf_len.IsValid()) { - dest_buf = nullptr; - } else { - dest_buf_length = safe_buf_len.ValueOrDie(); - dest_buf = FX_TryAlloc(uint8_t, dest_buf_length); - const int MIN_TRY_BUF_LEN = 1024; - while (!dest_buf && dest_buf_length > MIN_TRY_BUF_LEN) { - dest_buf_length >>= 1; - dest_buf = FX_TryAlloc(uint8_t, dest_buf_length); - } - } - if (!dest_buf) { - FX_OutOfMemoryTerminate(); - } - struct jpeg_destination_mgr dest; - dest.init_destination = _dest_do_nothing; - dest.term_destination = _dest_do_nothing; - dest.empty_output_buffer = _dest_empty; - dest.next_output_byte = dest_buf; - dest.free_in_buffer = dest_buf_length; - cinfo.dest = &dest; - cinfo.image_width = width; - cinfo.image_height = height; - cinfo.input_components = nComponents; - if (nComponents == 1) { - cinfo.in_color_space = JCS_GRAYSCALE; - } else if (nComponents == 3) { - cinfo.in_color_space = JCS_RGB; - } else { - cinfo.in_color_space = JCS_CMYK; - } - uint8_t* line_buf = NULL; - if (nComponents > 1) { - line_buf = FX_Alloc2D(uint8_t, width, nComponents); - } - jpeg_set_defaults(&cinfo); - if (quality != 75) { - jpeg_set_quality(&cinfo, quality, TRUE); - } - jpeg_start_compress(&cinfo, TRUE); - _JpegEmbedIccProfile(&cinfo, icc_buf, icc_length); - JSAMPROW row_pointer[1]; - JDIMENSION row; - while (cinfo.next_scanline < cinfo.image_height) { - const uint8_t* src_scan = pSource->GetScanline(cinfo.next_scanline); - if (nComponents > 1) { - uint8_t* dest_scan = line_buf; - if (nComponents == 3) { - for (FX_DWORD i = 0; i < width; i++) { - dest_scan[0] = src_scan[2]; - dest_scan[1] = src_scan[1]; - dest_scan[2] = src_scan[0]; - dest_scan += 3; - src_scan += Bpp; - } - } else { - for (FX_DWORD i = 0; i < pitch; i++) { - *dest_scan++ = ~*src_scan++; - } - } - row_pointer[0] = line_buf; - } else { - row_pointer[0] = (uint8_t*)src_scan; - } - row = cinfo.next_scanline; - jpeg_write_scanlines(&cinfo, row_pointer, 1); - if (cinfo.next_scanline == row) { - dest_buf = - FX_Realloc(uint8_t, dest_buf, dest_buf_length + JPEG_BLOCK_SIZE); - dest.next_output_byte = dest_buf + dest_buf_length - dest.free_in_buffer; - dest_buf_length += JPEG_BLOCK_SIZE; - dest.free_in_buffer += JPEG_BLOCK_SIZE; - } - } - jpeg_finish_compress(&cinfo); - jpeg_destroy_compress(&cinfo); - FX_Free(line_buf); - dest_size = dest_buf_length - (FX_STRSIZE)dest.free_in_buffer; -} - -#ifdef PDF_ENABLE_XFA -static void _JpegLoadAttribute(struct jpeg_decompress_struct* pInfo, - CFX_DIBAttribute* pAttribute) { - if (pInfo == NULL || pAttribute == NULL) { - return; - } - if (pAttribute) { - pAttribute->m_nXDPI = pInfo->X_density; - pAttribute->m_nYDPI = pInfo->Y_density; - pAttribute->m_wDPIUnit = pInfo->density_unit; - } -} -#endif // PDF_ENABLE_XFA - -static FX_BOOL _JpegLoadInfo(const uint8_t* src_buf, - FX_DWORD src_size, - int& width, - int& height, - int& num_components, - int& bits_per_components, - FX_BOOL& color_transform, - uint8_t** icc_buf_ptr, - FX_DWORD* icc_length) { - _JpegScanSOI(src_buf, src_size); - struct jpeg_decompress_struct cinfo; - struct jpeg_error_mgr jerr; - jerr.error_exit = _error_fatal; - jerr.emit_message = _error_do_nothing1; - jerr.output_message = _error_do_nothing; - jerr.format_message = _error_do_nothing2; - jerr.reset_error_mgr = _error_do_nothing; - jerr.trace_level = 0; - cinfo.err = &jerr; - jmp_buf mark; - cinfo.client_data = &mark; - if (setjmp(mark) == -1) { - return FALSE; - } - jpeg_create_decompress(&cinfo); - struct jpeg_source_mgr src; - src.init_source = _src_do_nothing; - src.term_source = _src_do_nothing; - src.skip_input_data = _src_skip_data; - src.fill_input_buffer = _src_fill_buffer; - src.resync_to_restart = _src_resync; - src.bytes_in_buffer = src_size; - src.next_input_byte = src_buf; - cinfo.src = &src; - if (setjmp(mark) == -1) { - jpeg_destroy_decompress(&cinfo); - return FALSE; - } - if (icc_buf_ptr && icc_length) { - jpeg_save_markers(&cinfo, JPEG_MARKER_ICC, JPEG_MARKER_MAXSIZE); - } - int ret = jpeg_read_header(&cinfo, TRUE); - if (ret != JPEG_HEADER_OK) { - jpeg_destroy_decompress(&cinfo); - return FALSE; - } - width = cinfo.image_width; - height = cinfo.image_height; - num_components = cinfo.num_components; - color_transform = - cinfo.jpeg_color_space == JCS_YCbCr || cinfo.jpeg_color_space == JCS_YCCK; - bits_per_components = cinfo.data_precision; - if (icc_buf_ptr) { - *icc_buf_ptr = NULL; - } - if (icc_length) { - *icc_length = 0; - } - jpeg_destroy_decompress(&cinfo); - return TRUE; -} - -class CCodec_JpegDecoder : public CCodec_ScanlineDecoder { - public: - CCodec_JpegDecoder(); - ~CCodec_JpegDecoder() override; - - FX_BOOL Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - FX_BOOL ColorTransform); - void Destroy() { delete this; } - - // CCodec_ScanlineDecoder - void v_DownScale(int dest_width, int dest_height) override; - FX_BOOL v_Rewind() override; - uint8_t* v_GetNextLine() override; - FX_DWORD GetSrcOffset() override; - - FX_BOOL InitDecode(); - - jmp_buf m_JmpBuf; - struct jpeg_decompress_struct cinfo; - struct jpeg_error_mgr jerr; - struct jpeg_source_mgr src; - const uint8_t* m_SrcBuf; - FX_DWORD m_SrcSize; - uint8_t* m_pScanlineBuf; - - FX_BOOL m_bInited; - FX_BOOL m_bStarted; - FX_BOOL m_bJpegTransform; - - protected: - FX_DWORD m_nDefaultScaleDenom; -}; - -CCodec_JpegDecoder::CCodec_JpegDecoder() { - m_pScanlineBuf = NULL; - m_DownScale = 1; - m_bStarted = FALSE; - m_bInited = FALSE; - FXSYS_memset(&cinfo, 0, sizeof(cinfo)); - FXSYS_memset(&jerr, 0, sizeof(jerr)); - FXSYS_memset(&src, 0, sizeof(src)); - m_nDefaultScaleDenom = 1; -} -CCodec_JpegDecoder::~CCodec_JpegDecoder() { - FX_Free(m_pScanlineBuf); - if (m_bInited) { - jpeg_destroy_decompress(&cinfo); - } -} -FX_BOOL CCodec_JpegDecoder::InitDecode() { - cinfo.err = &jerr; - cinfo.client_data = &m_JmpBuf; - if (setjmp(m_JmpBuf) == -1) { - return FALSE; - } - jpeg_create_decompress(&cinfo); - m_bInited = TRUE; - cinfo.src = &src; - src.bytes_in_buffer = m_SrcSize; - src.next_input_byte = m_SrcBuf; - if (setjmp(m_JmpBuf) == -1) { - jpeg_destroy_decompress(&cinfo); - m_bInited = FALSE; - return FALSE; - } - cinfo.image_width = m_OrigWidth; - cinfo.image_height = m_OrigHeight; - int ret = jpeg_read_header(&cinfo, TRUE); - if (ret != JPEG_HEADER_OK) { - return FALSE; - } - if (cinfo.saw_Adobe_marker) { - m_bJpegTransform = TRUE; - } - if (cinfo.num_components == 3 && !m_bJpegTransform) { - cinfo.out_color_space = cinfo.jpeg_color_space; - } - m_OrigWidth = cinfo.image_width; - m_OrigHeight = cinfo.image_height; - m_OutputWidth = m_OrigWidth; - m_OutputHeight = m_OrigHeight; - m_nDefaultScaleDenom = cinfo.scale_denom; - return TRUE; -} -FX_BOOL CCodec_JpegDecoder::Create(const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - FX_BOOL ColorTransform) { - _JpegScanSOI(src_buf, src_size); - m_SrcBuf = src_buf; - m_SrcSize = src_size; - jerr.error_exit = _error_fatal; - jerr.emit_message = _error_do_nothing1; - jerr.output_message = _error_do_nothing; - jerr.format_message = _error_do_nothing2; - jerr.reset_error_mgr = _error_do_nothing; - src.init_source = _src_do_nothing; - src.term_source = _src_do_nothing; - src.skip_input_data = _src_skip_data; - src.fill_input_buffer = _src_fill_buffer; - src.resync_to_restart = _src_resync; - m_bJpegTransform = ColorTransform; - if (src_size > 1 && - FXSYS_memcmp(src_buf + src_size - 2, "\xFF\xD9", 2) != 0) { - ((uint8_t*)src_buf)[src_size - 2] = 0xFF; - ((uint8_t*)src_buf)[src_size - 1] = 0xD9; - } - m_OutputWidth = m_OrigWidth = width; - m_OutputHeight = m_OrigHeight = height; - if (!InitDecode()) { - return FALSE; - } - if (cinfo.num_components < nComps) { - return FALSE; - } - if ((int)cinfo.image_width < width) { - return FALSE; - } - m_Pitch = - (static_cast(cinfo.image_width) * cinfo.num_components + 3) / - 4 * 4; - m_pScanlineBuf = FX_Alloc(uint8_t, m_Pitch); - m_nComps = cinfo.num_components; - m_bpc = 8; - m_bColorTransformed = FALSE; - m_bStarted = FALSE; - return TRUE; -} -extern "C" { -int32_t FX_GetDownsampleRatio(int32_t originWidth, - int32_t originHeight, - int32_t downsampleWidth, - int32_t downsampleHeight) { - int iratio_w = originWidth / downsampleWidth; - int iratio_h = originHeight / downsampleHeight; - int ratio = (iratio_w > iratio_h) ? iratio_h : iratio_w; - if (ratio >= 8) { - return 8; - } - if (ratio >= 4) { - return 4; - } - if (ratio >= 2) { - return 2; - } - return 1; -} -} -void CCodec_JpegDecoder::v_DownScale(int dest_width, int dest_height) { - int old_scale = m_DownScale; - m_DownScale = - FX_GetDownsampleRatio(m_OrigWidth, m_OrigHeight, dest_width, dest_height); - m_OutputWidth = (m_OrigWidth + m_DownScale - 1) / m_DownScale; - m_OutputHeight = (m_OrigHeight + m_DownScale - 1) / m_DownScale; - m_Pitch = (static_cast(m_OutputWidth) * m_nComps + 3) / 4 * 4; - if (old_scale != m_DownScale) { - m_NextLine = -1; - } -} -FX_BOOL CCodec_JpegDecoder::v_Rewind() { - if (m_bStarted) { - jpeg_destroy_decompress(&cinfo); - if (!InitDecode()) { - return FALSE; - } - } - if (setjmp(m_JmpBuf) == -1) { - return FALSE; - } - cinfo.scale_denom = m_nDefaultScaleDenom * m_DownScale; - m_OutputWidth = (m_OrigWidth + m_DownScale - 1) / m_DownScale; - m_OutputHeight = (m_OrigHeight + m_DownScale - 1) / m_DownScale; - if (!jpeg_start_decompress(&cinfo)) { - jpeg_destroy_decompress(&cinfo); - return FALSE; - } - if ((int)cinfo.output_width > m_OrigWidth) { - FXSYS_assert(FALSE); - return FALSE; - } - m_bStarted = TRUE; - return TRUE; -} -uint8_t* CCodec_JpegDecoder::v_GetNextLine() { - if (setjmp(m_JmpBuf) == -1) - return nullptr; - - int nlines = jpeg_read_scanlines(&cinfo, &m_pScanlineBuf, 1); - if (nlines < 1) { - return nullptr; - } - return m_pScanlineBuf; -} -FX_DWORD CCodec_JpegDecoder::GetSrcOffset() { - return (FX_DWORD)(m_SrcSize - src.bytes_in_buffer); -} -ICodec_ScanlineDecoder* CCodec_JpegModule::CreateDecoder( - const uint8_t* src_buf, - FX_DWORD src_size, - int width, - int height, - int nComps, - FX_BOOL ColorTransform) { - if (!src_buf || src_size == 0) { - return NULL; - } - CCodec_JpegDecoder* pDecoder = new CCodec_JpegDecoder; - if (!pDecoder->Create(src_buf, src_size, width, height, nComps, - ColorTransform)) { - delete pDecoder; - return NULL; - } - return pDecoder; -} -FX_BOOL CCodec_JpegModule::LoadInfo(const uint8_t* src_buf, - FX_DWORD src_size, - int& width, - int& height, - int& num_components, - int& bits_per_components, - FX_BOOL& color_transform, - uint8_t** icc_buf_ptr, - FX_DWORD* icc_length) { - return _JpegLoadInfo(src_buf, src_size, width, height, num_components, - bits_per_components, color_transform, icc_buf_ptr, - icc_length); -} -FX_BOOL CCodec_JpegModule::Encode(const CFX_DIBSource* pSource, - uint8_t*& dest_buf, - FX_STRSIZE& dest_size, - int quality, - const uint8_t* icc_buf, - FX_DWORD icc_length) { - if (pSource->GetBPP() < 8 || pSource->GetPalette()) - return FALSE; - - _JpegEncode(pSource, dest_buf, dest_size, quality, icc_buf, icc_length); - return TRUE; -} -struct FXJPEG_Context { - jmp_buf m_JumpMark; - jpeg_decompress_struct m_Info; - jpeg_error_mgr m_ErrMgr; - jpeg_source_mgr m_SrcMgr; - unsigned int m_SkipSize; - void* (*m_AllocFunc)(unsigned int); - void (*m_FreeFunc)(void*); -}; -extern "C" { -static void _error_fatal1(j_common_ptr cinfo) { - longjmp(((FXJPEG_Context*)cinfo->client_data)->m_JumpMark, -1); -} -}; -extern "C" { -static void _src_skip_data1(struct jpeg_decompress_struct* cinfo, long num) { - if (cinfo->src->bytes_in_buffer < (size_t)num) { - ((FXJPEG_Context*)cinfo->client_data)->m_SkipSize = - (unsigned int)(num - cinfo->src->bytes_in_buffer); - cinfo->src->bytes_in_buffer = 0; - } else { - cinfo->src->next_input_byte += num; - cinfo->src->bytes_in_buffer -= num; - } -} -}; -static void* jpeg_alloc_func(unsigned int size) { - return FX_Alloc(char, size); -} -static void jpeg_free_func(void* p) { - FX_Free(p); -} -void* CCodec_JpegModule::Start() { - FXJPEG_Context* p = FX_Alloc(FXJPEG_Context, 1); - p->m_AllocFunc = jpeg_alloc_func; - p->m_FreeFunc = jpeg_free_func; - p->m_ErrMgr.error_exit = _error_fatal1; - p->m_ErrMgr.emit_message = _error_do_nothing1; - p->m_ErrMgr.output_message = _error_do_nothing; - p->m_ErrMgr.format_message = _error_do_nothing2; - p->m_ErrMgr.reset_error_mgr = _error_do_nothing; - p->m_SrcMgr.init_source = _src_do_nothing; - p->m_SrcMgr.term_source = _src_do_nothing; - p->m_SrcMgr.skip_input_data = _src_skip_data1; - p->m_SrcMgr.fill_input_buffer = _src_fill_buffer; - p->m_SrcMgr.resync_to_restart = _src_resync; - p->m_Info.client_data = p; - p->m_Info.err = &p->m_ErrMgr; - if (setjmp(p->m_JumpMark) == -1) { - return 0; - } - jpeg_create_decompress(&p->m_Info); - p->m_Info.src = &p->m_SrcMgr; - p->m_SkipSize = 0; - return p; -} -void CCodec_JpegModule::Finish(void* pContext) { - FXJPEG_Context* p = (FXJPEG_Context*)pContext; - jpeg_destroy_decompress(&p->m_Info); - p->m_FreeFunc(p); -} -void CCodec_JpegModule::Input(void* pContext, - const unsigned char* src_buf, - FX_DWORD src_size) { - FXJPEG_Context* p = (FXJPEG_Context*)pContext; - if (p->m_SkipSize) { - if (p->m_SkipSize > src_size) { - p->m_SrcMgr.bytes_in_buffer = 0; - p->m_SkipSize -= src_size; - return; - } - src_size -= p->m_SkipSize; - src_buf += p->m_SkipSize; - p->m_SkipSize = 0; - } - p->m_SrcMgr.next_input_byte = src_buf; - p->m_SrcMgr.bytes_in_buffer = src_size; -} - -#ifdef PDF_ENABLE_XFA -int CCodec_JpegModule::ReadHeader(void* pContext, - int* width, - int* height, - int* nComps, - CFX_DIBAttribute* pAttribute) { -#else // PDF_ENABLE_XFA -int CCodec_JpegModule::ReadHeader(void* pContext, - int* width, - int* height, - int* nComps) { -#endif // PDF_ENABLE_XFA - FXJPEG_Context* p = (FXJPEG_Context*)pContext; - if (setjmp(p->m_JumpMark) == -1) { - return 1; - } - int ret = jpeg_read_header(&p->m_Info, true); - if (ret == JPEG_SUSPENDED) { - return 2; - } - if (ret != JPEG_HEADER_OK) { - return 1; - } - *width = p->m_Info.image_width; - *height = p->m_Info.image_height; - *nComps = p->m_Info.num_components; -#ifdef PDF_ENABLE_XFA - _JpegLoadAttribute(&p->m_Info, pAttribute); -#endif - return 0; -} -int CCodec_JpegModule::StartScanline(void* pContext, int down_scale) { - FXJPEG_Context* p = (FXJPEG_Context*)pContext; - if (setjmp(p->m_JumpMark) == -1) { - return 0; - } - p->m_Info.scale_denom = down_scale; - return jpeg_start_decompress(&p->m_Info); -} -FX_BOOL CCodec_JpegModule::ReadScanline(void* pContext, - unsigned char* dest_buf) { - FXJPEG_Context* p = (FXJPEG_Context*)pContext; - if (setjmp(p->m_JumpMark) == -1) { - return FALSE; - } - int nlines = jpeg_read_scanlines(&p->m_Info, &dest_buf, 1); - return nlines == 1; -} -FX_DWORD CCodec_JpegModule::GetAvailInput(void* pContext, - uint8_t** avail_buf_ptr) { - if (avail_buf_ptr) { - *avail_buf_ptr = NULL; - if (((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer > 0) { - *avail_buf_ptr = - (uint8_t*)((FXJPEG_Context*)pContext)->m_SrcMgr.next_input_byte; - } - } - return (FX_DWORD)((FXJPEG_Context*)pContext)->m_SrcMgr.bytes_in_buffer; -} diff --git a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp b/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp deleted file mode 100644 index 4ace3ad220..0000000000 --- a/core/src/fxcodec/codec/fx_codec_jpx_opj.cpp +++ /dev/null @@ -1,888 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include -#include -#include - -#include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/src/fxcodec/codec/codec_int.h" -#include "third_party/lcms2-2.6/include/lcms2.h" -#include "third_party/libopenjpeg20/openjpeg.h" - -static void fx_error_callback(const char* msg, void* client_data) { - (void)client_data; -} -static void fx_warning_callback(const char* msg, void* client_data) { - (void)client_data; -} -static void fx_info_callback(const char* msg, void* client_data) { - (void)client_data; -} -OPJ_SIZE_T opj_read_from_memory(void* p_buffer, - OPJ_SIZE_T nb_bytes, - void* p_user_data) { - DecodeData* srcData = static_cast(p_user_data); - if (!srcData || !srcData->src_data || srcData->src_size == 0) { - return -1; - } - // Reads at EOF return an error code. - if (srcData->offset >= srcData->src_size) { - return -1; - } - OPJ_SIZE_T bufferLength = srcData->src_size - srcData->offset; - OPJ_SIZE_T readlength = nb_bytes < bufferLength ? nb_bytes : bufferLength; - memcpy(p_buffer, &srcData->src_data[srcData->offset], readlength); - srcData->offset += readlength; - return readlength; -} -OPJ_SIZE_T opj_write_from_memory(void* p_buffer, - OPJ_SIZE_T nb_bytes, - void* p_user_data) { - DecodeData* srcData = static_cast(p_user_data); - if (!srcData || !srcData->src_data || srcData->src_size == 0) { - return -1; - } - // Writes at EOF return an error code. - if (srcData->offset >= srcData->src_size) { - return -1; - } - OPJ_SIZE_T bufferLength = srcData->src_size - srcData->offset; - OPJ_SIZE_T writeLength = nb_bytes < bufferLength ? nb_bytes : bufferLength; - memcpy(&srcData->src_data[srcData->offset], p_buffer, writeLength); - srcData->offset += writeLength; - return writeLength; -} -OPJ_OFF_T opj_skip_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data) { - DecodeData* srcData = static_cast(p_user_data); - if (!srcData || !srcData->src_data || srcData->src_size == 0) { - return -1; - } - // Offsets are signed and may indicate a negative skip. Do not support this - // because of the strange return convention where either bytes skipped or - // -1 is returned. Following that convention, a successful relative seek of - // -1 bytes would be required to to give the same result as the error case. - if (nb_bytes < 0) { - return -1; - } - // FIXME: use std::make_unsigned::type once c++11 lib is OK'd. - uint64_t unsignedNbBytes = static_cast(nb_bytes); - // Additionally, the offset may take us beyond the range of a size_t (e.g. - // 32-bit platforms). If so, just clamp at EOF. - if (unsignedNbBytes > - std::numeric_limits::max() - srcData->offset) { - srcData->offset = srcData->src_size; - } else { - OPJ_SIZE_T checkedNbBytes = static_cast(unsignedNbBytes); - // Otherwise, mimic fseek() semantics to always succeed, even past EOF, - // clamping at EOF. We can get away with this since we don't actually - // provide negative relative skips from beyond EOF back to inside the - // data, which would be the only reason to need to know exactly how far - // beyond EOF we are. - srcData->offset = - std::min(srcData->offset + checkedNbBytes, srcData->src_size); - } - return nb_bytes; -} -OPJ_BOOL opj_seek_from_memory(OPJ_OFF_T nb_bytes, void* p_user_data) { - DecodeData* srcData = static_cast(p_user_data); - if (!srcData || !srcData->src_data || srcData->src_size == 0) { - return OPJ_FALSE; - } - // Offsets are signed and may indicate a negative position, which would - // be before the start of the file. Do not support this. - if (nb_bytes < 0) { - return OPJ_FALSE; - } - // FIXME: use std::make_unsigned::type once c++11 lib is OK'd. - uint64_t unsignedNbBytes = static_cast(nb_bytes); - // Additionally, the offset may take us beyond the range of a size_t (e.g. - // 32-bit platforms). If so, just clamp at EOF. - if (unsignedNbBytes > std::numeric_limits::max()) { - srcData->offset = srcData->src_size; - } else { - OPJ_SIZE_T checkedNbBytes = static_cast(nb_bytes); - // Otherwise, mimic fseek() semantics to always succeed, even past EOF, - // again clamping at EOF. - srcData->offset = std::min(checkedNbBytes, srcData->src_size); - } - return OPJ_TRUE; -} -opj_stream_t* fx_opj_stream_create_memory_stream(DecodeData* data, - OPJ_SIZE_T p_size, - OPJ_BOOL p_is_read_stream) { - opj_stream_t* l_stream = 00; - if (!data || !data->src_data || data->src_size <= 0) { - return NULL; - } - l_stream = opj_stream_create(p_size, p_is_read_stream); - if (!l_stream) { - return NULL; - } - opj_stream_set_user_data(l_stream, data, NULL); - opj_stream_set_user_data_length(l_stream, data->src_size); - opj_stream_set_read_function(l_stream, opj_read_from_memory); - opj_stream_set_write_function(l_stream, opj_write_from_memory); - opj_stream_set_skip_function(l_stream, opj_skip_from_memory); - opj_stream_set_seek_function(l_stream, opj_seek_from_memory); - return l_stream; -} -static void sycc_to_rgb(int offset, - int upb, - int y, - int cb, - int cr, - int* out_r, - int* out_g, - int* out_b) { - int r, g, b; - cb -= offset; - cr -= offset; - r = y + (int)(1.402 * (float)cr); - if (r < 0) { - r = 0; - } else if (r > upb) { - r = upb; - } - *out_r = r; - g = y - (int)(0.344 * (float)cb + 0.714 * (float)cr); - if (g < 0) { - g = 0; - } else if (g > upb) { - g = upb; - } - *out_g = g; - b = y + (int)(1.772 * (float)cb); - if (b < 0) { - b = 0; - } else if (b > upb) { - b = upb; - } - *out_b = b; -} -static void sycc444_to_rgb(opj_image_t* img) { - int prec = img->comps[0].prec; - int offset = 1 << (prec - 1); - int upb = (1 << prec) - 1; - OPJ_UINT32 maxw = - std::min(std::min(img->comps[0].w, img->comps[1].w), img->comps[2].w); - OPJ_UINT32 maxh = - std::min(std::min(img->comps[0].h, img->comps[1].h), img->comps[2].h); - FX_SAFE_SIZE_T max_size = maxw; - max_size *= maxh; - if (!max_size.IsValid()) - return; - - const int* y = img->comps[0].data; - const int* cb = img->comps[1].data; - const int* cr = img->comps[2].data; - int *d0, *d1, *d2, *r, *g, *b; - d0 = r = FX_Alloc(int, max_size.ValueOrDie()); - d1 = g = FX_Alloc(int, max_size.ValueOrDie()); - d2 = b = FX_Alloc(int, max_size.ValueOrDie()); - for (size_t i = 0; i < max_size.ValueOrDie(); ++i) { - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++cb; - ++cr; - ++r; - ++g; - ++b; - } - FX_Free(img->comps[0].data); - img->comps[0].data = d0; - FX_Free(img->comps[1].data); - img->comps[1].data = d1; - FX_Free(img->comps[2].data); - img->comps[2].data = d2; -} -static void sycc422_to_rgb(opj_image_t* img) { - int prec = img->comps[0].prec; - int offset = 1 << (prec - 1); - int upb = (1 << prec) - 1; - OPJ_UINT32 maxw = - std::min(std::min(img->comps[0].w, img->comps[1].w), img->comps[2].w); - OPJ_UINT32 maxh = - std::min(std::min(img->comps[0].h, img->comps[1].h), img->comps[2].h); - FX_SAFE_SIZE_T max_size = maxw; - max_size *= maxh; - if (!max_size.IsValid()) - return; - - const int* y = img->comps[0].data; - const int* cb = img->comps[1].data; - const int* cr = img->comps[2].data; - int *d0, *d1, *d2, *r, *g, *b; - d0 = r = FX_Alloc(int, max_size.ValueOrDie()); - d1 = g = FX_Alloc(int, max_size.ValueOrDie()); - d2 = b = FX_Alloc(int, max_size.ValueOrDie()); - for (uint32_t i = 0; i < maxh; ++i) { - OPJ_UINT32 j; - for (j = 0; j < (maxw & ~static_cast(1)); j += 2) { - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - ++cb; - ++cr; - } - if (j < maxw) { - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - ++cb; - ++cr; - } - } - FX_Free(img->comps[0].data); - img->comps[0].data = d0; - FX_Free(img->comps[1].data); - img->comps[1].data = d1; - FX_Free(img->comps[2].data); - img->comps[2].data = d2; - img->comps[1].w = maxw; - img->comps[1].h = maxh; - img->comps[2].w = maxw; - img->comps[2].h = maxh; - img->comps[1].dx = img->comps[0].dx; - img->comps[2].dx = img->comps[0].dx; - img->comps[1].dy = img->comps[0].dy; - img->comps[2].dy = img->comps[0].dy; -} -static bool sycc420_size_is_valid(OPJ_UINT32 y, OPJ_UINT32 cbcr) { - if (!y || !cbcr) - return false; - - return (cbcr == y / 2) || ((y & 1) && (cbcr == y / 2 + 1)); -} -static bool sycc420_must_extend_cbcr(OPJ_UINT32 y, OPJ_UINT32 cbcr) { - return (y & 1) && (cbcr == y / 2); -} -void sycc420_to_rgb(opj_image_t* img) { - OPJ_UINT32 prec = img->comps[0].prec; - if (!prec) - return; - OPJ_UINT32 offset = 1 << (prec - 1); - OPJ_UINT32 upb = (1 << prec) - 1; - OPJ_UINT32 yw = img->comps[0].w; - OPJ_UINT32 yh = img->comps[0].h; - OPJ_UINT32 cbw = img->comps[1].w; - OPJ_UINT32 cbh = img->comps[1].h; - OPJ_UINT32 crw = img->comps[2].w; - OPJ_UINT32 crh = img->comps[2].h; - if (cbw != crw || cbh != crh) - return; - if (!sycc420_size_is_valid(yw, cbw) || !sycc420_size_is_valid(yh, cbh)) - return; - bool extw = sycc420_must_extend_cbcr(yw, cbw); - bool exth = sycc420_must_extend_cbcr(yh, cbh); - FX_SAFE_DWORD safeSize = yw; - safeSize *= yh; - if (!safeSize.IsValid()) - return; - int* r = FX_Alloc(int, safeSize.ValueOrDie()); - int* g = FX_Alloc(int, safeSize.ValueOrDie()); - int* b = FX_Alloc(int, safeSize.ValueOrDie()); - int* d0 = r; - int* d1 = g; - int* d2 = b; - const int* y = img->comps[0].data; - const int* cb = img->comps[1].data; - const int* cr = img->comps[2].data; - const int* ny = nullptr; - int* nr = nullptr; - int* ng = nullptr; - int* nb = nullptr; - OPJ_UINT32 i = 0; - OPJ_UINT32 j = 0; - for (i = 0; i < (yh & ~(OPJ_UINT32)1); i += 2) { - ny = y + yw; - nr = r + yw; - ng = g + yw; - nb = b + yw; - for (j = 0; j < (yw & ~(OPJ_UINT32)1); j += 2) { - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); - ++ny; - ++nr; - ++ng; - ++nb; - sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); - ++ny; - ++nr; - ++ng; - ++nb; - ++cb; - ++cr; - } - if (j < yw) { - if (extw) { - --cb; - --cr; - } - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - sycc_to_rgb(offset, upb, *ny, *cb, *cr, nr, ng, nb); - ++ny; - ++nr; - ++ng; - ++nb; - ++cb; - ++cr; - } - y += yw; - r += yw; - g += yw; - b += yw; - } - if (i < yh) { - if (exth) { - cb -= cbw; - cr -= crw; - } - for (j = 0; j < (yw & ~(OPJ_UINT32)1); j += 2) { - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - ++y; - ++r; - ++g; - ++b; - ++cb; - ++cr; - } - if (j < yw) { - if (extw) { - --cb; - --cr; - } - sycc_to_rgb(offset, upb, *y, *cb, *cr, r, g, b); - } - } - - FX_Free(img->comps[0].data); - img->comps[0].data = d0; - FX_Free(img->comps[1].data); - img->comps[1].data = d1; - FX_Free(img->comps[2].data); - img->comps[2].data = d2; - img->comps[1].w = yw; - img->comps[1].h = yh; - img->comps[2].w = yw; - img->comps[2].h = yh; - img->comps[1].w = yw; - img->comps[1].h = yh; - img->comps[2].w = yw; - img->comps[2].h = yh; - img->comps[1].dx = img->comps[0].dx; - img->comps[2].dx = img->comps[0].dx; - img->comps[1].dy = img->comps[0].dy; - img->comps[2].dy = img->comps[0].dy; -} -void color_sycc_to_rgb(opj_image_t* img) { - if (img->numcomps < 3) { - img->color_space = OPJ_CLRSPC_GRAY; - return; - } - if ((img->comps[0].dx == 1) && (img->comps[1].dx == 2) && - (img->comps[2].dx == 2) && (img->comps[0].dy == 1) && - (img->comps[1].dy == 2) && (img->comps[2].dy == 2)) { - sycc420_to_rgb(img); - } else if ((img->comps[0].dx == 1) && (img->comps[1].dx == 2) && - (img->comps[2].dx == 2) && (img->comps[0].dy == 1) && - (img->comps[1].dy == 1) && (img->comps[2].dy == 1)) { - sycc422_to_rgb(img); - } else if ((img->comps[0].dx == 1) && (img->comps[1].dx == 1) && - (img->comps[2].dx == 1) && (img->comps[0].dy == 1) && - (img->comps[1].dy == 1) && (img->comps[2].dy == 1)) { - sycc444_to_rgb(img); - } else { - return; - } - img->color_space = OPJ_CLRSPC_SRGB; -} -void color_apply_icc_profile(opj_image_t* image) { - cmsHPROFILE out_prof; - cmsUInt32Number in_type; - cmsUInt32Number out_type; - int* r; - int* g; - int* b; - int max; - cmsHPROFILE in_prof = - cmsOpenProfileFromMem(image->icc_profile_buf, image->icc_profile_len); - if (!in_prof) { - return; - } - cmsColorSpaceSignature out_space = cmsGetColorSpace(in_prof); - cmsUInt32Number intent = cmsGetHeaderRenderingIntent(in_prof); - int max_w = (int)image->comps[0].w; - int max_h = (int)image->comps[0].h; - int prec = (int)image->comps[0].prec; - OPJ_COLOR_SPACE oldspace = image->color_space; - if (out_space == cmsSigRgbData) { - if (prec <= 8) { - in_type = TYPE_RGB_8; - out_type = TYPE_RGB_8; - } else { - in_type = TYPE_RGB_16; - out_type = TYPE_RGB_16; - } - out_prof = cmsCreate_sRGBProfile(); - image->color_space = OPJ_CLRSPC_SRGB; - } else if (out_space == cmsSigGrayData) { - if (prec <= 8) { - in_type = TYPE_GRAY_8; - out_type = TYPE_RGB_8; - } else { - in_type = TYPE_GRAY_16; - out_type = TYPE_RGB_16; - } - out_prof = cmsCreate_sRGBProfile(); - image->color_space = OPJ_CLRSPC_SRGB; - } else if (out_space == cmsSigYCbCrData) { - in_type = TYPE_YCbCr_16; - out_type = TYPE_RGB_16; - out_prof = cmsCreate_sRGBProfile(); - image->color_space = OPJ_CLRSPC_SRGB; - } else { - return; - } - cmsHTRANSFORM transform = - cmsCreateTransform(in_prof, in_type, out_prof, out_type, intent, 0); - cmsCloseProfile(in_prof); - cmsCloseProfile(out_prof); - if (!transform) { - image->color_space = oldspace; - return; - } - if (image->numcomps > 2) { - if (prec <= 8) { - unsigned char *inbuf, *outbuf, *in, *out; - max = max_w * max_h; - cmsUInt32Number nr_samples = max * 3 * sizeof(unsigned char); - in = inbuf = FX_Alloc(unsigned char, nr_samples); - out = outbuf = FX_Alloc(unsigned char, nr_samples); - r = image->comps[0].data; - g = image->comps[1].data; - b = image->comps[2].data; - for (int i = 0; i < max; ++i) { - *in++ = (unsigned char)*r++; - *in++ = (unsigned char)*g++; - *in++ = (unsigned char)*b++; - } - cmsDoTransform(transform, inbuf, outbuf, (cmsUInt32Number)max); - r = image->comps[0].data; - g = image->comps[1].data; - b = image->comps[2].data; - for (int i = 0; i < max; ++i) { - *r++ = (int)*out++; - *g++ = (int)*out++; - *b++ = (int)*out++; - } - FX_Free(inbuf); - FX_Free(outbuf); - } else { - unsigned short *inbuf, *outbuf, *in, *out; - max = max_w * max_h; - cmsUInt32Number nr_samples = max * 3 * sizeof(unsigned short); - in = inbuf = FX_Alloc(unsigned short, nr_samples); - out = outbuf = FX_Alloc(unsigned short, nr_samples); - r = image->comps[0].data; - g = image->comps[1].data; - b = image->comps[2].data; - for (int i = 0; i < max; ++i) { - *in++ = (unsigned short)*r++; - *in++ = (unsigned short)*g++; - *in++ = (unsigned short)*b++; - } - cmsDoTransform(transform, inbuf, outbuf, (cmsUInt32Number)max); - r = image->comps[0].data; - g = image->comps[1].data; - b = image->comps[2].data; - for (int i = 0; i < max; ++i) { - *r++ = (int)*out++; - *g++ = (int)*out++; - *b++ = (int)*out++; - } - FX_Free(inbuf); - FX_Free(outbuf); - } - } else { - unsigned char *in, *inbuf, *out, *outbuf; - max = max_w * max_h; - cmsUInt32Number nr_samples = - (cmsUInt32Number)max * 3 * sizeof(unsigned char); - in = inbuf = FX_Alloc(unsigned char, nr_samples); - out = outbuf = FX_Alloc(unsigned char, nr_samples); - image->comps = (opj_image_comp_t*)realloc( - image->comps, (image->numcomps + 2) * sizeof(opj_image_comp_t)); - if (image->numcomps == 2) { - image->comps[3] = image->comps[1]; - } - image->comps[1] = image->comps[0]; - image->comps[2] = image->comps[0]; - image->comps[1].data = FX_Alloc(int, (size_t)max); - FXSYS_memset(image->comps[1].data, 0, sizeof(int) * (size_t)max); - image->comps[2].data = FX_Alloc(int, (size_t)max); - FXSYS_memset(image->comps[2].data, 0, sizeof(int) * (size_t)max); - image->numcomps += 2; - r = image->comps[0].data; - for (int i = 0; i < max; ++i) { - *in++ = (unsigned char)*r++; - } - cmsDoTransform(transform, inbuf, outbuf, (cmsUInt32Number)max); - r = image->comps[0].data; - g = image->comps[1].data; - b = image->comps[2].data; - for (int i = 0; i < max; ++i) { - *r++ = (int)*out++; - *g++ = (int)*out++; - *b++ = (int)*out++; - } - FX_Free(inbuf); - FX_Free(outbuf); - } - cmsDeleteTransform(transform); -} -void color_apply_conversion(opj_image_t* image) { - int* row; - int enumcs, numcomps; - numcomps = image->numcomps; - if (numcomps < 3) { - return; - } - row = (int*)image->icc_profile_buf; - enumcs = row[0]; - if (enumcs == 14) { - int *L, *a, *b, *red, *green, *blue, *src0, *src1, *src2; - double rl, ol, ra, oa, rb, ob, prec0, prec1, prec2; - double minL, maxL, mina, maxa, minb, maxb; - unsigned int default_type; - unsigned int i, max; - cmsHPROFILE in, out; - cmsHTRANSFORM transform; - cmsUInt16Number RGB[3]; - cmsCIELab Lab; - in = cmsCreateLab4Profile(NULL); - out = cmsCreate_sRGBProfile(); - transform = cmsCreateTransform(in, TYPE_Lab_DBL, out, TYPE_RGB_16, - INTENT_PERCEPTUAL, 0); - cmsCloseProfile(in); - cmsCloseProfile(out); - if (!transform) { - return; - } - prec0 = (double)image->comps[0].prec; - prec1 = (double)image->comps[1].prec; - prec2 = (double)image->comps[2].prec; - default_type = row[1]; - if (default_type == 0x44454600) { - rl = 100; - ra = 170; - rb = 200; - ol = 0; - oa = pow(2, prec1 - 1); - ob = pow(2, prec2 - 2) + pow(2, prec2 - 3); - } else { - rl = row[2]; - ra = row[4]; - rb = row[6]; - ol = row[3]; - oa = row[5]; - ob = row[7]; - } - L = src0 = image->comps[0].data; - a = src1 = image->comps[1].data; - b = src2 = image->comps[2].data; - max = image->comps[0].w * image->comps[0].h; - red = FX_Alloc(int, max); - image->comps[0].data = red; - green = FX_Alloc(int, max); - image->comps[1].data = green; - blue = FX_Alloc(int, max); - image->comps[2].data = blue; - minL = -(rl * ol) / (pow(2, prec0) - 1); - maxL = minL + rl; - mina = -(ra * oa) / (pow(2, prec1) - 1); - maxa = mina + ra; - minb = -(rb * ob) / (pow(2, prec2) - 1); - maxb = minb + rb; - for (i = 0; i < max; ++i) { - Lab.L = minL + (double)(*L) * (maxL - minL) / (pow(2, prec0) - 1); - ++L; - Lab.a = mina + (double)(*a) * (maxa - mina) / (pow(2, prec1) - 1); - ++a; - Lab.b = minb + (double)(*b) * (maxb - minb) / (pow(2, prec2) - 1); - ++b; - cmsDoTransform(transform, &Lab, RGB, 1); - *red++ = RGB[0]; - *green++ = RGB[1]; - *blue++ = RGB[2]; - } - cmsDeleteTransform(transform); - FX_Free(src0); - FX_Free(src1); - FX_Free(src2); - image->color_space = OPJ_CLRSPC_SRGB; - image->comps[0].prec = 16; - image->comps[1].prec = 16; - image->comps[2].prec = 16; - return; - } -} -class CJPX_Decoder { - public: - explicit CJPX_Decoder(CPDF_ColorSpace* cs); - ~CJPX_Decoder(); - FX_BOOL Init(const unsigned char* src_data, FX_DWORD src_size); - void GetInfo(FX_DWORD* width, FX_DWORD* height, FX_DWORD* components); - bool Decode(uint8_t* dest_buf, - int pitch, - const std::vector& offsets); - - private: - const uint8_t* m_SrcData; - FX_DWORD m_SrcSize; - opj_image_t* image; - opj_codec_t* l_codec; - opj_stream_t* l_stream; - const CPDF_ColorSpace* const m_ColorSpace; -}; - -CJPX_Decoder::CJPX_Decoder(CPDF_ColorSpace* cs) - : image(nullptr), l_codec(nullptr), l_stream(nullptr), m_ColorSpace(cs) {} - -CJPX_Decoder::~CJPX_Decoder() { - if (l_codec) { - opj_destroy_codec(l_codec); - } - if (l_stream) { - opj_stream_destroy(l_stream); - } - if (image) { - opj_image_destroy(image); - } -} - -FX_BOOL CJPX_Decoder::Init(const unsigned char* src_data, FX_DWORD src_size) { - static const unsigned char szJP2Header[] = { - 0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20, 0x0d, 0x0a, 0x87, 0x0a}; - if (!src_data || src_size < sizeof(szJP2Header)) - return FALSE; - - image = NULL; - m_SrcData = src_data; - m_SrcSize = src_size; - DecodeData srcData(const_cast(src_data), src_size); - l_stream = fx_opj_stream_create_memory_stream(&srcData, - OPJ_J2K_STREAM_CHUNK_SIZE, 1); - if (!l_stream) { - return FALSE; - } - opj_dparameters_t parameters; - opj_set_default_decoder_parameters(¶meters); - parameters.decod_format = 0; - parameters.cod_format = 3; - if (FXSYS_memcmp(m_SrcData, szJP2Header, sizeof(szJP2Header)) == 0) { - l_codec = opj_create_decompress(OPJ_CODEC_JP2); - parameters.decod_format = 1; - } else { - l_codec = opj_create_decompress(OPJ_CODEC_J2K); - } - if (!l_codec) { - return FALSE; - } - if (m_ColorSpace && m_ColorSpace->GetFamily() == PDFCS_INDEXED) - parameters.flags |= OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG; - opj_set_info_handler(l_codec, fx_info_callback, 00); - opj_set_warning_handler(l_codec, fx_warning_callback, 00); - opj_set_error_handler(l_codec, fx_error_callback, 00); - if (!opj_setup_decoder(l_codec, ¶meters)) { - return FALSE; - } - if (!opj_read_header(l_stream, l_codec, &image)) { - image = NULL; - return FALSE; - } - image->pdfium_use_colorspace = !!m_ColorSpace; - - if (!parameters.nb_tile_to_decode) { - if (!opj_set_decode_area(l_codec, image, parameters.DA_x0, parameters.DA_y0, - parameters.DA_x1, parameters.DA_y1)) { - opj_image_destroy(image); - image = NULL; - return FALSE; - } - if (!(opj_decode(l_codec, l_stream, image) && - opj_end_decompress(l_codec, l_stream))) { - opj_image_destroy(image); - image = NULL; - return FALSE; - } - } else { - if (!opj_get_decoded_tile(l_codec, l_stream, image, - parameters.tile_index)) { - return FALSE; - } - } - opj_stream_destroy(l_stream); - l_stream = NULL; - if (image->color_space != OPJ_CLRSPC_SYCC && image->numcomps == 3 && - image->comps[0].dx == image->comps[0].dy && image->comps[1].dx != 1) { - image->color_space = OPJ_CLRSPC_SYCC; - } else if (image->numcomps <= 2) { - image->color_space = OPJ_CLRSPC_GRAY; - } - if (image->color_space == OPJ_CLRSPC_SYCC) { - color_sycc_to_rgb(image); - } - if (image->icc_profile_buf) { - FX_Free(image->icc_profile_buf); - image->icc_profile_buf = NULL; - image->icc_profile_len = 0; - } - if (!image) { - return FALSE; - } - return TRUE; -} - -void CJPX_Decoder::GetInfo(FX_DWORD* width, - FX_DWORD* height, - FX_DWORD* components) { - *width = (FX_DWORD)image->x1; - *height = (FX_DWORD)image->y1; - *components = (FX_DWORD)image->numcomps; -} - -bool CJPX_Decoder::Decode(uint8_t* dest_buf, - int pitch, - const std::vector& offsets) { - if (image->comps[0].w != image->x1 || image->comps[0].h != image->y1) - return false; - - if (pitch<(int)(image->comps[0].w * 8 * image->numcomps + 31)>> 5 << 2) - return false; - - FXSYS_memset(dest_buf, 0xff, image->y1 * pitch); - std::vector channel_bufs(image->numcomps); - std::vector adjust_comps(image->numcomps); - for (uint32_t i = 0; i < image->numcomps; i++) { - channel_bufs[i] = dest_buf + offsets[i]; - adjust_comps[i] = image->comps[i].prec - 8; - if (i > 0) { - if (image->comps[i].dx != image->comps[i - 1].dx || - image->comps[i].dy != image->comps[i - 1].dy || - image->comps[i].prec != image->comps[i - 1].prec) { - return false; - } - } - } - int width = image->comps[0].w; - int height = image->comps[0].h; - for (uint32_t channel = 0; channel < image->numcomps; ++channel) { - uint8_t* pChannel = channel_bufs[channel]; - if (adjust_comps[channel] < 0) { - for (int row = 0; row < height; ++row) { - uint8_t* pScanline = pChannel + row * pitch; - for (int col = 0; col < width; ++col) { - uint8_t* pPixel = pScanline + col * image->numcomps; - int src = image->comps[channel].data[row * width + col]; - src += image->comps[channel].sgnd - ? 1 << (image->comps[channel].prec - 1) - : 0; - if (adjust_comps[channel] > 0) { - *pPixel = 0; - } else { - *pPixel = (uint8_t)(src << -adjust_comps[channel]); - } - } - } - } else { - for (int row = 0; row < height; ++row) { - uint8_t* pScanline = pChannel + row * pitch; - for (int col = 0; col < width; ++col) { - uint8_t* pPixel = pScanline + col * image->numcomps; - if (!image->comps[channel].data) { - continue; - } - int src = image->comps[channel].data[row * width + col]; - src += image->comps[channel].sgnd - ? 1 << (image->comps[channel].prec - 1) - : 0; - if (adjust_comps[channel] - 1 < 0) { - *pPixel = (uint8_t)((src >> adjust_comps[channel])); - } else { - int tmpPixel = (src >> adjust_comps[channel]) + - ((src >> (adjust_comps[channel] - 1)) % 2); - if (tmpPixel > 255) { - tmpPixel = 255; - } else if (tmpPixel < 0) { - tmpPixel = 0; - } - *pPixel = (uint8_t)tmpPixel; - } - } - } - } - } - return true; -} - -CCodec_JpxModule::CCodec_JpxModule() {} -CCodec_JpxModule::~CCodec_JpxModule() { -} - -CJPX_Decoder* CCodec_JpxModule::CreateDecoder(const uint8_t* src_buf, - FX_DWORD src_size, - CPDF_ColorSpace* cs) { - std::unique_ptr decoder(new CJPX_Decoder(cs)); - return decoder->Init(src_buf, src_size) ? decoder.release() : nullptr; -} - -void CCodec_JpxModule::GetImageInfo(CJPX_Decoder* pDecoder, - FX_DWORD* width, - FX_DWORD* height, - FX_DWORD* components) { - pDecoder->GetInfo(width, height, components); -} - -bool CCodec_JpxModule::Decode(CJPX_Decoder* pDecoder, - uint8_t* dest_data, - int pitch, - const std::vector& offsets) { - return pDecoder->Decode(dest_data, pitch, offsets); -} - -void CCodec_JpxModule::DestroyDecoder(CJPX_Decoder* pDecoder) { - delete pDecoder; -} diff --git a/core/src/fxcodec/codec/fx_codec_jpx_unittest.cpp b/core/src/fxcodec/codec/fx_codec_jpx_unittest.cpp deleted file mode 100644 index c472ef18c6..0000000000 --- a/core/src/fxcodec/codec/fx_codec_jpx_unittest.cpp +++ /dev/null @@ -1,538 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include - -#include - -#include "core/src/fxcodec/codec/codec_int.h" -#include "testing/fx_string_testhelpers.h" -#include "testing/gtest/include/gtest/gtest.h" - -static const OPJ_OFF_T kSkipError = static_cast(-1); -static const OPJ_SIZE_T kReadError = static_cast(-1); -static const OPJ_SIZE_T kWriteError = static_cast(-1); - -static unsigned char stream_data[] = { - 0x00, 0x01, 0x02, 0x03, - 0x84, 0x85, 0x86, 0x87, // Include some hi-bytes, too. -}; - -TEST(fxcodec, DecodeDataNullDecodeData) { - unsigned char buffer[16]; - DecodeData* ptr = nullptr; - - // Error codes, not segvs, should callers pass us a NULL pointer. - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, sizeof(buffer), ptr)); - EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, sizeof(buffer), ptr)); - EXPECT_EQ(kSkipError, opj_skip_from_memory(1, ptr)); - EXPECT_FALSE(opj_seek_from_memory(1, ptr)); -} - -TEST(fxcodec, DecodeDataNullStream) { - DecodeData dd(nullptr, 0); - unsigned char buffer[16]; - - // Reads of size 0 do nothing but return an error code. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 0, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - - // Reads of nonzero size do nothing but return an error code. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, sizeof(buffer), &dd)); - EXPECT_EQ(0xbd, buffer[0]); - - // writes of size 0 do nothing but return an error code. - EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, 0, &dd)); - - // writes of nonzero size do nothing but return an error code. - EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, sizeof(buffer), &dd)); - - // Skips of size 0 always return an error code. - EXPECT_EQ(kSkipError, opj_skip_from_memory(0, &dd)); - - // Skips of nonzero size always return an error code. - EXPECT_EQ(kSkipError, opj_skip_from_memory(1, &dd)); - - // Seeks to 0 offset return in error. - EXPECT_FALSE(opj_seek_from_memory(0, &dd)); - - // Seeks to non-zero offsets return in error. - EXPECT_FALSE(opj_seek_from_memory(1, &dd)); -} - -TEST(fxcodec, DecodeDataZeroSize) { - DecodeData dd(stream_data, 0); - unsigned char buffer[16]; - - // Reads of size 0 do nothing but return an error code. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 0, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - - // Reads of nonzero size do nothing but return an error code. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, sizeof(buffer), &dd)); - EXPECT_EQ(0xbd, buffer[0]); - - // writes of size 0 do nothing but return an error code. - EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, 0, &dd)); - - // writes of nonzero size do nothing but return an error code. - EXPECT_EQ(kWriteError, opj_write_from_memory(buffer, sizeof(buffer), &dd)); - - // Skips of size 0 always return an error code. - EXPECT_EQ(kSkipError, opj_skip_from_memory(0, &dd)); - - // Skips of nonzero size always return an error code. - EXPECT_EQ(kSkipError, opj_skip_from_memory(1, &dd)); - - // Seeks to 0 offset return in error. - EXPECT_FALSE(opj_seek_from_memory(0, &dd)); - - // Seeks to non-zero offsets return in error. - EXPECT_FALSE(opj_seek_from_memory(1, &dd)); -} - -TEST(fxcodec, DecodeDataReadInBounds) { - unsigned char buffer[16]; - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Exact sized read in a single call. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(8u, opj_read_from_memory(buffer, sizeof(buffer), &dd)); - EXPECT_EQ(0x00, buffer[0]); - EXPECT_EQ(0x01, buffer[1]); - EXPECT_EQ(0x02, buffer[2]); - EXPECT_EQ(0x03, buffer[3]); - EXPECT_EQ(0x84, buffer[4]); - EXPECT_EQ(0x85, buffer[5]); - EXPECT_EQ(0x86, buffer[6]); - EXPECT_EQ(0x87, buffer[7]); - EXPECT_EQ(0xbd, buffer[8]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Simple read. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(2u, opj_read_from_memory(buffer, 2, &dd)); - EXPECT_EQ(0x00, buffer[0]); - EXPECT_EQ(0x01, buffer[1]); - EXPECT_EQ(0xbd, buffer[2]); - - // Read of size 0 doesn't affect things. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(0u, opj_read_from_memory(buffer, 0, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - - // Read exactly up to end of data. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(6u, opj_read_from_memory(buffer, 6, &dd)); - EXPECT_EQ(0x02, buffer[0]); - EXPECT_EQ(0x03, buffer[1]); - EXPECT_EQ(0x84, buffer[2]); - EXPECT_EQ(0x85, buffer[3]); - EXPECT_EQ(0x86, buffer[4]); - EXPECT_EQ(0x87, buffer[5]); - EXPECT_EQ(0xbd, buffer[6]); - - // Read of size 0 at EOF is still an error. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 0, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - } -} - -TEST(fxcodec, DecodeDataReadBeyondBounds) { - unsigned char buffer[16]; - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Read beyond bounds in a single step. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(8u, opj_read_from_memory(buffer, sizeof(buffer) + 1, &dd)); - EXPECT_EQ(0x00, buffer[0]); - EXPECT_EQ(0x01, buffer[1]); - EXPECT_EQ(0x02, buffer[2]); - EXPECT_EQ(0x03, buffer[3]); - EXPECT_EQ(0x84, buffer[4]); - EXPECT_EQ(0x85, buffer[5]); - EXPECT_EQ(0x86, buffer[6]); - EXPECT_EQ(0x87, buffer[7]); - EXPECT_EQ(0xbd, buffer[8]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Read well beyond bounds in a single step. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(8u, opj_read_from_memory( - buffer, std::numeric_limits::max(), &dd)); - EXPECT_EQ(0x00, buffer[0]); - EXPECT_EQ(0x01, buffer[1]); - EXPECT_EQ(0x02, buffer[2]); - EXPECT_EQ(0x03, buffer[3]); - EXPECT_EQ(0x84, buffer[4]); - EXPECT_EQ(0x85, buffer[5]); - EXPECT_EQ(0x86, buffer[6]); - EXPECT_EQ(0x87, buffer[7]); - EXPECT_EQ(0xbd, buffer[8]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Read of size 6 gets first 6 bytes. - // rest of buffer intact. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(6u, opj_read_from_memory(buffer, 6, &dd)); - EXPECT_EQ(0x00, buffer[0]); - EXPECT_EQ(0x01, buffer[1]); - EXPECT_EQ(0x02, buffer[2]); - EXPECT_EQ(0x03, buffer[3]); - EXPECT_EQ(0x84, buffer[4]); - EXPECT_EQ(0x85, buffer[5]); - EXPECT_EQ(0xbd, buffer[6]); - - // Read of size 6 gets remaining two bytes. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(2u, opj_read_from_memory(buffer, 6, &dd)); - EXPECT_EQ(0x86, buffer[0]); - EXPECT_EQ(0x87, buffer[1]); - EXPECT_EQ(0xbd, buffer[2]); - - // Read of 6 more gets nothing and leaves rest of buffer intact. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 6, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - } -} - -TEST(fxcodec, DecodeDataWriteInBounds) { - unsigned char stream[16]; - static unsigned char buffer_data[] = { - 0x00, 0x01, 0x02, 0x03, 0x80, 0x80, 0x81, 0x82, 0x83, 0x84, - }; - { - // Pretend the stream can only hold 4 bytes. - DecodeData dd(stream, 4); - - memset(stream, 0xbd, sizeof(stream)); - EXPECT_EQ(4u, opj_write_from_memory(buffer_data, 4, &dd)); - EXPECT_EQ(0x00, stream[0]); - EXPECT_EQ(0x01, stream[1]); - EXPECT_EQ(0x02, stream[2]); - EXPECT_EQ(0x03, stream[3]); - EXPECT_EQ(0xbd, stream[4]); - } - { - // Pretend the stream can only hold 4 bytes. - DecodeData dd(stream, 4); - - memset(stream, 0xbd, sizeof(stream)); - EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 2, &dd)); - EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 2, &dd)); - EXPECT_EQ(0x00, stream[0]); - EXPECT_EQ(0x01, stream[1]); - EXPECT_EQ(0x00, stream[2]); - EXPECT_EQ(0x01, stream[3]); - EXPECT_EQ(0xbd, stream[4]); - } -} - -TEST(fxcodec, DecodeDataWriteBeyondBounds) { - unsigned char stream[16]; - static unsigned char buffer_data[] = { - 0x10, 0x11, 0x12, 0x13, 0x94, 0x95, 0x96, 0x97, - }; - { - // Pretend the stream can only hold 4 bytes. - DecodeData dd(stream, 4); - - // Write ending past EOF transfers up til EOF. - memset(stream, 0xbd, sizeof(stream)); - EXPECT_EQ(4u, opj_write_from_memory(buffer_data, 5, &dd)); - EXPECT_EQ(0x10, stream[0]); - EXPECT_EQ(0x11, stream[1]); - EXPECT_EQ(0x12, stream[2]); - EXPECT_EQ(0x13, stream[3]); - EXPECT_EQ(0xbd, stream[4]); - - // Subsequent writes fail. - memset(stream, 0xbd, sizeof(stream)); - EXPECT_EQ(kWriteError, opj_write_from_memory(buffer_data, 5, &dd)); - EXPECT_EQ(0xbd, stream[0]); - } - { - // Pretend the stream can only hold 4 bytes. - DecodeData dd(stream, 4); - - // Write ending past EOF (two steps) transfers up til EOF. - memset(stream, 0xbd, sizeof(stream)); - EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 2, &dd)); - EXPECT_EQ(2u, opj_write_from_memory(buffer_data, 4, &dd)); - EXPECT_EQ(0x10, stream[0]); - EXPECT_EQ(0x11, stream[1]); - EXPECT_EQ(0x10, stream[2]); - EXPECT_EQ(0x11, stream[3]); - EXPECT_EQ(0xbd, stream[4]); - - // Subsequent writes fail. - memset(stream, 0xbd, sizeof(stream)); - EXPECT_EQ(kWriteError, opj_write_from_memory(buffer_data, 5, &dd)); - EXPECT_EQ(0xbd, stream[0]); - } -} - -// Note: Some care needs to be taken here because the skip/seek functions -// take OPJ_OFF_T's as arguments, which are typically a signed type. -TEST(fxcodec, DecodeDataSkip) { - unsigned char buffer[16]; - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Skiping within buffer is allowed. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(1, opj_skip_from_memory(1, &dd)); - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x01, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Skiping 0 bytes changes nothing. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(0, opj_skip_from_memory(0, &dd)); - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x02, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Skiping to EOS-1 is possible. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x87, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Next read fails. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Skiping directly to EOS is allowed. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(8, opj_skip_from_memory(8, &dd)); - - // Next read fails. - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Skipping beyond end of stream is allowed and returns full distance. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(9, opj_skip_from_memory(9, &dd)); - - // Next read fails. - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Skipping way beyond EOS is allowd, doesn't wrap, and returns - // full distance. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); - EXPECT_EQ(std::numeric_limits::max(), - opj_skip_from_memory(std::numeric_limits::max(), &dd)); - - // Next read fails. If it succeeds, it may mean we wrapped. - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Negative skip within buffer not is allowed, position unchanged. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); - EXPECT_EQ(kSkipError, opj_skip_from_memory(-2, &dd)); - - // Next read succeeds as if nothing has happenned. - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x84, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Negative skip before buffer is not allowed, position unchanged. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(kSkipError, opj_skip_from_memory(-4, &dd)); - - // Next read succeeds as if nothing has happenned. - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x85, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Negative skip way before buffer is not allowed, doesn't wrap - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(4, opj_skip_from_memory(4, &dd)); - EXPECT_EQ(kSkipError, - opj_skip_from_memory(std::numeric_limits::min(), &dd)); - - // Next read succeeds. If it fails, it may mean we wrapped. - EXPECT_EQ(1, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x84, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - } - { - DecodeData dd(stream_data, sizeof(stream_data)); - - // Negative skip after EOS isn't alowed, still EOS. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_EQ(8, opj_skip_from_memory(8, &dd)); - EXPECT_EQ(kSkipError, opj_skip_from_memory(-4, &dd)); - - // Next read fails. - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - } -} - -TEST(fxcodec, DecodeDataSeek) { - unsigned char buffer[16]; - DecodeData dd(stream_data, sizeof(stream_data)); - - // Seeking within buffer is allowed and read succeeds - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_TRUE(opj_seek_from_memory(1, &dd)); - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x01, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Seeking before start returns error leaving position unchanged. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_FALSE(opj_seek_from_memory(-1, &dd)); - EXPECT_EQ(1, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x02, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Seeking way before start returns error leaving position unchanged. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_FALSE( - opj_seek_from_memory(std::numeric_limits::min(), &dd)); - EXPECT_EQ(1, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x03, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Seeking exactly to EOS is allowed but read fails. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_TRUE(opj_seek_from_memory(8, &dd)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - - // Seeking back to zero offset is allowed and read succeeds. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_TRUE(opj_seek_from_memory(0, &dd)); - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x00, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Seeking beyond end of stream is allowed but read fails. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_TRUE(opj_seek_from_memory(16, &dd)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); - - // Seeking within buffer after seek past EOF restores good state. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_TRUE(opj_seek_from_memory(4, &dd)); - EXPECT_EQ(1u, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0x84, buffer[0]); - EXPECT_EQ(0xbd, buffer[1]); - - // Seeking way beyond EOS is allowed, doesn't wrap, and read fails. - memset(buffer, 0xbd, sizeof(buffer)); - EXPECT_TRUE(opj_seek_from_memory(std::numeric_limits::max(), &dd)); - EXPECT_EQ(kReadError, opj_read_from_memory(buffer, 1, &dd)); - EXPECT_EQ(0xbd, buffer[0]); -} - -TEST(fxcodec, YUV420ToRGB) { - opj_image_comp_t u; - memset(&u, 0, sizeof(u)); - u.dx = 1; - u.dy = 1; - u.w = 16; - u.h = 16; - u.prec = 8; - u.bpp = 8; - opj_image_comp_t v; - memset(&v, 0, sizeof(v)); - v.dx = 1; - v.dy = 1; - v.w = 16; - v.h = 16; - v.prec = 8; - v.bpp = 8; - opj_image_comp_t y; - memset(&y, 0, sizeof(y)); - y.dx = 1; - y.dy = 1; - y.prec = 8; - y.bpp = 8; - opj_image_t img; - memset(&img, 0, sizeof(img)); - img.numcomps = 3; - img.color_space = OPJ_CLRSPC_SYCC; - img.comps = FX_Alloc(opj_image_comp_t, 3); - const struct { - OPJ_UINT32 w; - bool expected; - } cases[] = {{0, false}, - {1, false}, - {30, false}, - {31, true}, - {32, true}, - {33, true}, - {34, false}, - {UINT_MAX, false}}; - for (int i = 0; i < sizeof(cases) / sizeof(cases[0]); ++i) { - y.w = cases[i].w; - y.h = y.w; - img.x1 = y.w; - img.y1 = y.h; - y.data = FX_Alloc(OPJ_INT32, y.w * y.h); - memset(y.data, 1, y.w * y.h * sizeof(OPJ_INT32)); - u.data = FX_Alloc(OPJ_INT32, u.w * u.h); - memset(u.data, 0, u.w * u.h * sizeof(OPJ_INT32)); - v.data = FX_Alloc(OPJ_INT32, v.w * v.h); - memset(v.data, 0, v.w * v.h * sizeof(OPJ_INT32)); - img.comps[0] = y; - img.comps[1] = u; - img.comps[2] = v; - sycc420_to_rgb(&img); - if (cases[i].expected) { - EXPECT_EQ(img.comps[0].w, img.comps[1].w); - EXPECT_EQ(img.comps[0].h, img.comps[1].h); - EXPECT_EQ(img.comps[0].w, img.comps[2].w); - EXPECT_EQ(img.comps[0].h, img.comps[2].h); - } else { - EXPECT_NE(img.comps[0].w, img.comps[1].w); - EXPECT_NE(img.comps[0].h, img.comps[1].h); - EXPECT_NE(img.comps[0].w, img.comps[2].w); - EXPECT_NE(img.comps[0].h, img.comps[2].h); - } - FX_Free(img.comps[0].data); - FX_Free(img.comps[1].data); - FX_Free(img.comps[2].data); - } - FX_Free(img.comps); -} diff --git a/core/src/fxcodec/codec/fx_codec_png.cpp b/core/src/fxcodec/codec/fx_codec_png.cpp deleted file mode 100644 index c8cb1b8a6a..0000000000 --- a/core/src/fxcodec/codec/fx_codec_png.cpp +++ /dev/null @@ -1,254 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_dib.h" -#include "core/src/fxcodec/codec/codec_int.h" - -extern "C" { -#undef FAR -#include "third_party/libpng16/png.h" -} - -static void _png_error_data(png_structp png_ptr, png_const_charp error_msg) { - if (png_get_error_ptr(png_ptr)) { - FXSYS_strncpy((char*)png_get_error_ptr(png_ptr), error_msg, - PNG_ERROR_SIZE - 1); - } - longjmp(png_jmpbuf(png_ptr), 1); -} -static void _png_warning_data(png_structp png_ptr, png_const_charp error_msg) {} -static void _png_load_bmp_attribute(png_structp png_ptr, - png_infop info_ptr, - CFX_DIBAttribute* pAttribute) { - if (pAttribute) { -#if defined(PNG_pHYs_SUPPORTED) - pAttribute->m_nXDPI = png_get_x_pixels_per_meter(png_ptr, info_ptr); - pAttribute->m_nYDPI = png_get_y_pixels_per_meter(png_ptr, info_ptr); - png_uint_32 res_x, res_y; - int unit_type; - png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y, &unit_type); - switch (unit_type) { - case PNG_RESOLUTION_METER: - pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_METER; - break; - default: - pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_NONE; - } -#endif -#if defined(PNG_iCCP_SUPPORTED) - png_charp icc_name; - png_bytep icc_profile; - png_uint_32 icc_proflen; - int compress_type; - png_get_iCCP(png_ptr, info_ptr, &icc_name, &compress_type, &icc_profile, - &icc_proflen); -#endif - int bTime = 0; -#if defined(PNG_tIME_SUPPORTED) - png_timep t = NULL; - png_get_tIME(png_ptr, info_ptr, &t); - if (t) { - FXSYS_memset(pAttribute->m_strTime, 0, sizeof(pAttribute->m_strTime)); - FXSYS_snprintf((FX_CHAR*)pAttribute->m_strTime, - sizeof(pAttribute->m_strTime), "%4d:%2d:%2d %2d:%2d:%2d", - t->year, t->month, t->day, t->hour, t->minute, t->second); - pAttribute->m_strTime[sizeof(pAttribute->m_strTime) - 1] = 0; - bTime = 1; - } -#endif -#if defined(PNG_TEXT_SUPPORTED) - int i; - FX_STRSIZE len; - const FX_CHAR* buf; - int num_text; - png_textp text = NULL; - png_get_text(png_ptr, info_ptr, &text, &num_text); - for (i = 0; i < num_text; i++) { - len = FXSYS_strlen(text[i].key); - buf = "Time"; - if (!FXSYS_memcmp(buf, text[i].key, std::min(len, FXSYS_strlen(buf)))) { - if (!bTime) { - FXSYS_memset(pAttribute->m_strTime, 0, sizeof(pAttribute->m_strTime)); - FXSYS_memcpy( - pAttribute->m_strTime, text[i].text, - std::min(sizeof(pAttribute->m_strTime) - 1, text[i].text_length)); - } - } else { - buf = "Author"; - if (!FXSYS_memcmp(buf, text[i].key, std::min(len, FXSYS_strlen(buf)))) { - pAttribute->m_strAuthor.Empty(); - pAttribute->m_strAuthor.Load((uint8_t*)text[i].text, - (FX_STRSIZE)text[i].text_length); - } - } - } -#endif - } -} -struct FXPNG_Context { - png_structp png_ptr; - png_infop info_ptr; - void* parent_ptr; - void* child_ptr; - - void* (*m_AllocFunc)(unsigned int); - void (*m_FreeFunc)(void*); -}; -extern "C" { -static void* _png_alloc_func(unsigned int size) { - return FX_Alloc(char, size); -} -static void _png_free_func(void* p) { - FX_Free(p); -} -}; -static void _png_get_header_func(png_structp png_ptr, png_infop info_ptr) { - FXPNG_Context* p = (FXPNG_Context*)png_get_progressive_ptr(png_ptr); - if (p == NULL) { - return; - } - CCodec_PngModule* pModule = (CCodec_PngModule*)p->parent_ptr; - if (pModule == NULL) { - return; - } - png_uint_32 width = 0, height = 0; - int bpc = 0, color_type = 0, color_type1 = 0, pass = 0; - double gamma = 1.0; - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bpc, &color_type, NULL, - NULL, NULL); - color_type1 = color_type; - if (bpc > 8) { - png_set_strip_16(png_ptr); - } else if (bpc < 8) { - png_set_expand_gray_1_2_4_to_8(png_ptr); - } - bpc = 8; - if (color_type == PNG_COLOR_TYPE_PALETTE) { - png_set_palette_to_rgb(png_ptr); - } - pass = png_set_interlace_handling(png_ptr); - if (!pModule->ReadHeaderCallback(p->child_ptr, width, height, bpc, pass, - &color_type, &gamma)) { - png_error(p->png_ptr, "Read Header Callback Error"); - } - int intent; - if (png_get_sRGB(png_ptr, info_ptr, &intent)) { - png_set_gamma(png_ptr, gamma, 0.45455); - } else { - double image_gamma; - if (png_get_gAMA(png_ptr, info_ptr, &image_gamma)) { - png_set_gamma(png_ptr, gamma, image_gamma); - } else { - png_set_gamma(png_ptr, gamma, 0.45455); - } - } - switch (color_type) { - case PNG_COLOR_TYPE_GRAY: - case PNG_COLOR_TYPE_GRAY_ALPHA: { - if (color_type1 & PNG_COLOR_MASK_COLOR) { - png_set_rgb_to_gray(png_ptr, 1, 0.299, 0.587); - } - } break; - case PNG_COLOR_TYPE_PALETTE: - if (color_type1 != PNG_COLOR_TYPE_PALETTE) { - png_error(p->png_ptr, "Not Support Output Palette Now"); - } - case PNG_COLOR_TYPE_RGB: - case PNG_COLOR_TYPE_RGB_ALPHA: - if (!(color_type1 & PNG_COLOR_MASK_COLOR)) { - png_set_gray_to_rgb(png_ptr); - } - png_set_bgr(png_ptr); - break; - } - if (!(color_type & PNG_COLOR_MASK_ALPHA)) { - png_set_strip_alpha(png_ptr); - } - if (color_type & PNG_COLOR_MASK_ALPHA && - !(color_type1 & PNG_COLOR_MASK_ALPHA)) { - png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); - } - png_read_update_info(png_ptr, info_ptr); -} -static void _png_get_end_func(png_structp png_ptr, png_infop info_ptr) {} -static void _png_get_row_func(png_structp png_ptr, - png_bytep new_row, - png_uint_32 row_num, - int pass) { - FXPNG_Context* p = (FXPNG_Context*)png_get_progressive_ptr(png_ptr); - if (p == NULL) { - return; - } - CCodec_PngModule* pModule = (CCodec_PngModule*)p->parent_ptr; - uint8_t* src_buf = NULL; - if (!pModule->AskScanlineBufCallback(p->child_ptr, row_num, src_buf)) { - png_error(png_ptr, "Ask Scanline buffer Callback Error"); - } - if (src_buf) { - png_progressive_combine_row(png_ptr, src_buf, new_row); - } - pModule->FillScanlineBufCompletedCallback(p->child_ptr, pass, row_num); -} -void* CCodec_PngModule::Start(void* pModule) { - FXPNG_Context* p = (FXPNG_Context*)FX_Alloc(uint8_t, sizeof(FXPNG_Context)); - if (p == NULL) { - return NULL; - } - p->m_AllocFunc = _png_alloc_func; - p->m_FreeFunc = _png_free_func; - p->png_ptr = NULL; - p->info_ptr = NULL; - p->parent_ptr = (void*)this; - p->child_ptr = pModule; - p->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (p->png_ptr == NULL) { - FX_Free(p); - return NULL; - } - p->info_ptr = png_create_info_struct(p->png_ptr); - if (p->info_ptr == NULL) { - png_destroy_read_struct(&(p->png_ptr), (png_infopp)NULL, (png_infopp)NULL); - FX_Free(p); - return NULL; - } - if (setjmp(png_jmpbuf(p->png_ptr))) { - if (p) { - png_destroy_read_struct(&(p->png_ptr), &(p->info_ptr), (png_infopp)NULL); - FX_Free(p); - } - return NULL; - } - png_set_progressive_read_fn(p->png_ptr, p, _png_get_header_func, - _png_get_row_func, _png_get_end_func); - png_set_error_fn(p->png_ptr, m_szLastError, (png_error_ptr)_png_error_data, - (png_error_ptr)_png_warning_data); - return p; -} -void CCodec_PngModule::Finish(void* pContext) { - FXPNG_Context* p = (FXPNG_Context*)pContext; - if (p) { - png_destroy_read_struct(&(p->png_ptr), &(p->info_ptr), (png_infopp)NULL); - p->m_FreeFunc(p); - } -} -FX_BOOL CCodec_PngModule::Input(void* pContext, - const uint8_t* src_buf, - FX_DWORD src_size, - CFX_DIBAttribute* pAttribute) { - FXPNG_Context* p = (FXPNG_Context*)pContext; - if (setjmp(png_jmpbuf(p->png_ptr))) { - if (pAttribute && - 0 == FXSYS_strcmp(m_szLastError, "Read Header Callback Error")) { - _png_load_bmp_attribute(p->png_ptr, p->info_ptr, pAttribute); - } - return FALSE; - } - png_process_data(p->png_ptr, p->info_ptr, (uint8_t*)src_buf, src_size); - return TRUE; -} diff --git a/core/src/fxcodec/codec/fx_codec_progress.cpp b/core/src/fxcodec/codec/fx_codec_progress.cpp deleted file mode 100644 index 5d8502a87a..0000000000 --- a/core/src/fxcodec/codec/fx_codec_progress.cpp +++ /dev/null @@ -1,2299 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_dib.h" -#include "core/src/fxcodec/codec/fx_codec_progress.h" -void CFXCODEC_WeightTable::Calc(int dest_len, - int dest_min, - int dest_max, - int src_len, - int src_min, - int src_max, - FX_BOOL bInterpol) { - if (m_pWeightTables) { - FX_Free(m_pWeightTables); - } - double scale, base; - scale = (FX_FLOAT)src_len / (FX_FLOAT)dest_len; - if (dest_len < 0) { - base = (FX_FLOAT)(src_len); - } else { - base = 0.0f; - } - m_ItemSize = - (int)(sizeof(int) * 2 + - sizeof(int) * (FXSYS_ceil(FXSYS_fabs((FX_FLOAT)scale)) + 1)); - m_DestMin = dest_min; - m_pWeightTables = FX_Alloc(uint8_t, (dest_max - dest_min) * m_ItemSize + 4); - if (m_pWeightTables == NULL) { - return; - } - if (FXSYS_fabs((FX_FLOAT)scale) < 1.0f) { - for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { - PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); - double src_pos = dest_pixel * scale + scale / 2 + base; - if (bInterpol) { - pixel_weights.m_SrcStart = - (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); - pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); - if (pixel_weights.m_SrcStart < src_min) { - pixel_weights.m_SrcStart = src_min; - } - if (pixel_weights.m_SrcEnd >= src_max) { - pixel_weights.m_SrcEnd = src_max - 1; - } - if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { - pixel_weights.m_Weights[0] = 65536; - } else { - pixel_weights.m_Weights[1] = FXSYS_round( - (FX_FLOAT)(src_pos - pixel_weights.m_SrcStart - 1.0f / 2) * - 65536); - pixel_weights.m_Weights[0] = 65536 - pixel_weights.m_Weights[1]; - } - } else { - pixel_weights.m_SrcStart = pixel_weights.m_SrcEnd = - (int)FXSYS_floor((FX_FLOAT)src_pos); - pixel_weights.m_Weights[0] = 65536; - } - } - return; - } - for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { - PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); - double src_start = dest_pixel * scale + base; - double src_end = src_start + scale; - int start_i, end_i; - if (src_start < src_end) { - start_i = (int)FXSYS_floor((FX_FLOAT)src_start); - end_i = (int)FXSYS_ceil((FX_FLOAT)src_end); - } else { - start_i = (int)FXSYS_floor((FX_FLOAT)src_end); - end_i = (int)FXSYS_ceil((FX_FLOAT)src_start); - } - if (start_i < src_min) { - start_i = src_min; - } - if (end_i >= src_max) { - end_i = src_max - 1; - } - if (start_i > end_i) { - pixel_weights.m_SrcStart = start_i; - pixel_weights.m_SrcEnd = start_i; - continue; - } - pixel_weights.m_SrcStart = start_i; - pixel_weights.m_SrcEnd = end_i; - for (int j = start_i; j <= end_i; j++) { - double dest_start = ((FX_FLOAT)j - base) / scale; - double dest_end = ((FX_FLOAT)(j + 1) - base) / scale; - if (dest_start > dest_end) { - double temp = dest_start; - dest_start = dest_end; - dest_end = temp; - } - double area_start = dest_start > (FX_FLOAT)(dest_pixel) - ? dest_start - : (FX_FLOAT)(dest_pixel); - double area_end = dest_end > (FX_FLOAT)(dest_pixel + 1) - ? (FX_FLOAT)(dest_pixel + 1) - : dest_end; - double weight = area_start >= area_end ? 0.0f : area_end - area_start; - if (weight == 0 && j == end_i) { - pixel_weights.m_SrcEnd--; - break; - } - pixel_weights.m_Weights[j - start_i] = - FXSYS_round((FX_FLOAT)(weight * 65536)); - } - } -} -void CFXCODEC_HorzTable::Calc(int dest_len, int src_len, FX_BOOL bInterpol) { - if (m_pWeightTables) { - FX_Free(m_pWeightTables); - } - double scale = (double)dest_len / (double)src_len; - m_ItemSize = sizeof(int) * 4; - int size = dest_len * m_ItemSize + 4; - m_pWeightTables = FX_Alloc(uint8_t, size); - if (m_pWeightTables == NULL) { - return; - } - FXSYS_memset(m_pWeightTables, 0, size); - if (scale > 1) { - int pre_des_col = 0; - for (int src_col = 0; src_col < src_len; src_col++) { - double des_col_f = src_col * scale; - int des_col = FXSYS_round((FX_FLOAT)des_col_f); - PixelWeight* pWeight = - (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize); - pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; - pWeight->m_Weights[0] = 65536; - pWeight->m_Weights[1] = 0; - if (src_col == src_len - 1 && des_col < dest_len - 1) { - for (int des_col_index = pre_des_col + 1; des_col_index < dest_len; - des_col_index++) { - pWeight = - (PixelWeight*)(m_pWeightTables + des_col_index * m_ItemSize); - pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; - pWeight->m_Weights[0] = 65536; - pWeight->m_Weights[1] = 0; - } - return; - } - int des_col_len = des_col - pre_des_col; - for (int des_col_index = pre_des_col + 1; des_col_index < des_col; - des_col_index++) { - pWeight = (PixelWeight*)(m_pWeightTables + des_col_index * m_ItemSize); - pWeight->m_SrcStart = src_col - 1; - pWeight->m_SrcEnd = src_col; - pWeight->m_Weights[0] = - bInterpol ? FXSYS_round((FX_FLOAT)( - ((FX_FLOAT)des_col - (FX_FLOAT)des_col_index) / - (FX_FLOAT)des_col_len * 65536)) - : 65536; - pWeight->m_Weights[1] = 65536 - pWeight->m_Weights[0]; - } - pre_des_col = des_col; - } - return; - } - for (int des_col = 0; des_col < dest_len; des_col++) { - double src_col_f = des_col / scale; - int src_col = FXSYS_round((FX_FLOAT)src_col_f); - PixelWeight* pWeight = - (PixelWeight*)(m_pWeightTables + des_col * m_ItemSize); - pWeight->m_SrcStart = pWeight->m_SrcEnd = src_col; - pWeight->m_Weights[0] = 65536; - pWeight->m_Weights[1] = 0; - } -} -void CFXCODEC_VertTable::Calc(int dest_len, int src_len) { - if (m_pWeightTables) { - FX_Free(m_pWeightTables); - } - double scale = (double)dest_len / (double)src_len; - m_ItemSize = sizeof(int) * 4; - int size = dest_len * m_ItemSize + 4; - m_pWeightTables = FX_Alloc(uint8_t, size); - if (m_pWeightTables == NULL) { - return; - } - FXSYS_memset(m_pWeightTables, 0, size); - if (scale > 1) { - double step = 0.0; - int src_row = 0; - while (step < (double)dest_len) { - int start_step = (int)step; - step = scale * (++src_row); - int end_step = (int)step; - if (end_step >= dest_len) { - end_step = dest_len; - for (int des_row = start_step; des_row < end_step; des_row++) { - PixelWeight* pWeight = - (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); - pWeight->m_SrcStart = start_step; - pWeight->m_SrcEnd = start_step; - pWeight->m_Weights[0] = 65536; - pWeight->m_Weights[1] = 0; - } - return; - } - int length = end_step - start_step; - { - PixelWeight* pWeight = - (PixelWeight*)(m_pWeightTables + start_step * m_ItemSize); - pWeight->m_SrcStart = start_step; - pWeight->m_SrcEnd = start_step; - pWeight->m_Weights[0] = 65536; - pWeight->m_Weights[1] = 0; - } - for (int des_row = start_step + 1; des_row < end_step; des_row++) { - PixelWeight* pWeight = - (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); - pWeight->m_SrcStart = start_step; - pWeight->m_SrcEnd = end_step; - pWeight->m_Weights[0] = FXSYS_round((FX_FLOAT)(end_step - des_row) / - (FX_FLOAT)length * 65536); - pWeight->m_Weights[1] = 65536 - pWeight->m_Weights[0]; - } - } - } else { - for (int des_row = 0; des_row < dest_len; des_row++) { - PixelWeight* pWeight = - (PixelWeight*)(m_pWeightTables + des_row * m_ItemSize); - pWeight->m_SrcStart = des_row; - pWeight->m_SrcEnd = des_row; - pWeight->m_Weights[0] = 65536; - pWeight->m_Weights[1] = 0; - } - } -} -CCodec_ProgressiveDecoder::CCodec_ProgressiveDecoder( - CCodec_ModuleMgr* pCodecMgr) { - m_pFile = NULL; - m_pJpegContext = NULL; - m_pPngContext = NULL; - m_pGifContext = NULL; - m_pBmpContext = NULL; - m_pTiffContext = NULL; - m_pCodecMgr = NULL; - m_pSrcBuf = NULL; - m_pDecodeBuf = NULL; - m_pDeviceBitmap = NULL; - m_pSrcPalette = NULL; - m_pCodecMgr = pCodecMgr; - m_offSet = 0; - m_SrcSize = 0; - m_ScanlineSize = 0; - m_SrcWidth = m_SrcHeight = 0; - m_SrcComponents = 0; - m_SrcBPC = 0; - m_SrcPassNumber = 0; - m_clipBox = FX_RECT(0, 0, 0, 0); - m_imagType = FXCODEC_IMAGE_UNKNOWN; - m_status = FXCODEC_STATUS_DECODE_FINISH; - m_TransMethod = -1; - m_SrcRow = 0; - m_SrcFormat = FXCodec_Invalid; - m_bInterpol = TRUE; - m_FrameNumber = 0; - m_FrameCur = 0; - m_SrcPaletteNumber = 0; - m_GifPltNumber = 0; - m_GifBgIndex = 0; - m_pGifPalette = NULL; - m_GifTransIndex = -1; - m_GifFrameRect = FX_RECT(0, 0, 0, 0); - m_BmpIsTopBottom = FALSE; -} -CCodec_ProgressiveDecoder::~CCodec_ProgressiveDecoder() { - m_pFile = NULL; - if (m_pJpegContext) { - m_pCodecMgr->GetJpegModule()->Finish(m_pJpegContext); - } - if (m_pPngContext) { - m_pCodecMgr->GetPngModule()->Finish(m_pPngContext); - } - if (m_pGifContext) { - m_pCodecMgr->GetGifModule()->Finish(m_pGifContext); - } - if (m_pBmpContext) { - m_pCodecMgr->GetBmpModule()->Finish(m_pBmpContext); - } - if (m_pTiffContext) { - m_pCodecMgr->GetTiffModule()->DestroyDecoder(m_pTiffContext); - } - FX_Free(m_pSrcBuf); - FX_Free(m_pDecodeBuf); - FX_Free(m_pSrcPalette); -} -FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData( - ICodec_JpegModule* pJpegModule, - FXCODEC_STATUS& err_status) { - FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); - if (dwSize <= m_offSet) { - return FALSE; - } - dwSize = dwSize - m_offSet; - FX_DWORD dwAvail = pJpegModule->GetAvailInput(m_pJpegContext, NULL); - if (dwAvail == m_SrcSize) { - if (dwSize > FXCODEC_BLOCK_SIZE) { - dwSize = FXCODEC_BLOCK_SIZE; - } - m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / - FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; - m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); - if (!m_pSrcBuf) { - err_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - } else { - FX_DWORD dwConsume = m_SrcSize - dwAvail; - if (dwAvail) { - FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); - } - if (dwSize > dwConsume) { - dwSize = dwConsume; - } - } - if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { - err_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += dwSize; - pJpegModule->Input(m_pJpegContext, m_pSrcBuf, dwSize + dwAvail); - return TRUE; -} -FX_BOOL CCodec_ProgressiveDecoder::PngReadHeaderFunc(void* pModule, - int width, - int height, - int bpc, - int pass, - int* color_type, - double* gamma) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - if (pCodec->m_pDeviceBitmap == NULL) { - pCodec->m_SrcWidth = width; - pCodec->m_SrcHeight = height; - pCodec->m_SrcBPC = bpc; - pCodec->m_SrcPassNumber = pass; - pCodec->m_SrcComponents = - *color_type == 0 ? 1 : *color_type == 2 - ? 3 - : *color_type == 3 - ? 4 - : *color_type == 4 - ? 2 - : *color_type == 6 ? 4 : 0; - pCodec->m_clipBox = FX_RECT(0, 0, width, height); - return FALSE; - } - FXDIB_Format format = pCodec->m_pDeviceBitmap->GetFormat(); - switch (format) { - case FXDIB_1bppMask: - case FXDIB_1bppRgb: - ASSERT(FALSE); - return FALSE; - case FXDIB_8bppMask: - case FXDIB_8bppRgb: - *color_type = 0; - break; - case FXDIB_Rgb: - *color_type = 2; - break; - case FXDIB_Rgb32: - case FXDIB_Argb: - *color_type = 6; - break; - default: - ASSERT(FALSE); - return FALSE; - } - *gamma = FXCODEC_PNG_GAMMA; - return TRUE; -} -FX_BOOL CCodec_ProgressiveDecoder::PngAskScanlineBufFunc(void* pModule, - int line, - uint8_t*& src_buf) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; - if (!pDIBitmap) { - ASSERT(false); - return FALSE; - } - if (line >= pCodec->m_clipBox.top && line < pCodec->m_clipBox.bottom) { - double scale_y = - (double)pCodec->m_sizeY / (double)pCodec->m_clipBox.Height(); - int32_t row = - (int32_t)((line - pCodec->m_clipBox.top) * scale_y) + pCodec->m_startY; - uint8_t* src_scan = (uint8_t*)pDIBitmap->GetScanline(row); - uint8_t* des_scan = pCodec->m_pDecodeBuf; - src_buf = pCodec->m_pDecodeBuf; - int32_t src_Bpp = pDIBitmap->GetBPP() >> 3; - int32_t des_Bpp = (pCodec->m_SrcFormat & 0xff) >> 3; - int32_t src_left = pCodec->m_startX; - int32_t des_left = pCodec->m_clipBox.left; - src_scan += src_left * src_Bpp; - des_scan += des_left * des_Bpp; - for (int32_t src_col = 0; src_col < pCodec->m_sizeX; src_col++) { - PixelWeight* pPixelWeights = - pCodec->m_WeightHorzOO.GetPixelWeight(src_col); - if (pPixelWeights->m_SrcStart != pPixelWeights->m_SrcEnd) { - continue; - } - switch (pDIBitmap->GetFormat()) { - case FXDIB_1bppMask: - case FXDIB_1bppRgb: - ASSERT(FALSE); - return FALSE; - case FXDIB_8bppMask: - case FXDIB_8bppRgb: { - if (pDIBitmap->GetPalette()) { - return FALSE; - } - FX_DWORD des_g = 0; - des_g += pPixelWeights->m_Weights[0] * src_scan[src_col]; - des_scan[pPixelWeights->m_SrcStart] = (uint8_t)(des_g >> 16); - } break; - case FXDIB_Rgb: - case FXDIB_Rgb32: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - const uint8_t* p = src_scan + src_col * src_Bpp; - des_b += pPixelWeights->m_Weights[0] * (*p++); - des_g += pPixelWeights->m_Weights[0] * (*p++); - des_r += pPixelWeights->m_Weights[0] * (*p); - uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp]; - *pDes++ = (uint8_t)((des_b) >> 16); - *pDes++ = (uint8_t)((des_g) >> 16); - *pDes = (uint8_t)((des_r) >> 16); - } break; - case FXDIB_Argb: { - FX_DWORD des_r = 0, des_g = 0, des_b = 0; - const uint8_t* p = src_scan + src_col * src_Bpp; - des_b += pPixelWeights->m_Weights[0] * (*p++); - des_g += pPixelWeights->m_Weights[0] * (*p++); - des_r += pPixelWeights->m_Weights[0] * (*p++); - uint8_t* pDes = &des_scan[pPixelWeights->m_SrcStart * des_Bpp]; - *pDes++ = (uint8_t)((des_b) >> 16); - *pDes++ = (uint8_t)((des_g) >> 16); - *pDes++ = (uint8_t)((des_r) >> 16); - *pDes = *p; - } break; - default: - return FALSE; - } - } - } - return TRUE; -} -void CCodec_ProgressiveDecoder::PngOneOneMapResampleHorz( - CFX_DIBitmap* pDeviceBitmap, - int32_t des_line, - uint8_t* src_scan, - FXCodec_Format src_format) { - uint8_t* des_scan = (uint8_t*)pDeviceBitmap->GetScanline(des_line); - int32_t src_Bpp = (m_SrcFormat & 0xff) >> 3; - int32_t des_Bpp = pDeviceBitmap->GetBPP() >> 3; - int32_t src_left = m_clipBox.left; - int32_t des_left = m_startX; - src_scan += src_left * src_Bpp; - des_scan += des_left * des_Bpp; - for (int32_t des_col = 0; des_col < m_sizeX; des_col++) { - PixelWeight* pPixelWeights = m_WeightHorzOO.GetPixelWeight(des_col); - switch (pDeviceBitmap->GetFormat()) { - case FXDIB_1bppMask: - case FXDIB_1bppRgb: - ASSERT(FALSE); - return; - case FXDIB_8bppMask: - case FXDIB_8bppRgb: { - if (pDeviceBitmap->GetPalette()) { - return; - } - FX_DWORD des_g = 0; - des_g += - pPixelWeights->m_Weights[0] * src_scan[pPixelWeights->m_SrcStart]; - des_g += - pPixelWeights->m_Weights[1] * src_scan[pPixelWeights->m_SrcEnd]; - *des_scan++ = (uint8_t)(des_g >> 16); - } break; - case FXDIB_Rgb: - case FXDIB_Rgb32: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - const uint8_t* p = src_scan; - p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; - des_b += pPixelWeights->m_Weights[0] * (*p++); - des_g += pPixelWeights->m_Weights[0] * (*p++); - des_r += pPixelWeights->m_Weights[0] * (*p); - p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; - des_b += pPixelWeights->m_Weights[1] * (*p++); - des_g += pPixelWeights->m_Weights[1] * (*p++); - des_r += pPixelWeights->m_Weights[1] * (*p); - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - des_scan += des_Bpp - 3; - } break; - case FXDIB_Argb: { - FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; - const uint8_t* p = src_scan; - p = src_scan + pPixelWeights->m_SrcStart * src_Bpp; - des_b += pPixelWeights->m_Weights[0] * (*p++); - des_g += pPixelWeights->m_Weights[0] * (*p++); - des_r += pPixelWeights->m_Weights[0] * (*p++); - des_a += pPixelWeights->m_Weights[0] * (*p); - p = src_scan + pPixelWeights->m_SrcEnd * src_Bpp; - des_b += pPixelWeights->m_Weights[1] * (*p++); - des_g += pPixelWeights->m_Weights[1] * (*p++); - des_r += pPixelWeights->m_Weights[1] * (*p++); - des_a += pPixelWeights->m_Weights[1] * (*p); - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - *des_scan++ = (uint8_t)((des_a) >> 16); - } break; - default: - return; - } - } -} -void CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc(void* pModule, - int pass, - int line) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; - ASSERT(pDIBitmap); - int src_top = pCodec->m_clipBox.top; - int src_bottom = pCodec->m_clipBox.bottom; - int des_top = pCodec->m_startY; - int src_hei = pCodec->m_clipBox.Height(); - int des_hei = pCodec->m_sizeY; - if (line >= src_top && line < src_bottom) { - double scale_y = (double)des_hei / (double)src_hei; - int src_row = line - src_top; - int des_row = (int)(src_row * scale_y) + des_top; - if (des_row >= des_top + des_hei) { - return; - } - pCodec->PngOneOneMapResampleHorz(pDIBitmap, des_row, pCodec->m_pDecodeBuf, - pCodec->m_SrcFormat); - if (pCodec->m_SrcPassNumber == 1 && scale_y > 1.0) { - pCodec->ResampleVert(pDIBitmap, scale_y, des_row); - return; - } - if (pass == 6 && scale_y > 1.0) { - pCodec->ResampleVert(pDIBitmap, scale_y, des_row); - } - } -} -FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(ICodec_GifModule* pGifModule, - FXCODEC_STATUS& err_status) { - FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); - if (dwSize <= m_offSet) { - return FALSE; - } - dwSize = dwSize - m_offSet; - FX_DWORD dwAvail = pGifModule->GetAvailInput(m_pGifContext, NULL); - if (dwAvail == m_SrcSize) { - if (dwSize > FXCODEC_BLOCK_SIZE) { - dwSize = FXCODEC_BLOCK_SIZE; - } - m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / - FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; - m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); - if (!m_pSrcBuf) { - err_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - } else { - FX_DWORD dwConsume = m_SrcSize - dwAvail; - if (dwAvail) { - FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); - } - if (dwSize > dwConsume) { - dwSize = dwConsume; - } - } - if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { - err_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += dwSize; - pGifModule->Input(m_pGifContext, m_pSrcBuf, dwSize + dwAvail); - return TRUE; -} -void CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback( - void* pModule, - FX_DWORD& cur_pos) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - FX_DWORD remain_size = - pCodec->m_pCodecMgr->GetGifModule()->GetAvailInput(pCodec->m_pGifContext); - cur_pos = pCodec->m_offSet - remain_size; -} -uint8_t* CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback( - void* pModule, - int32_t frame_num, - int32_t pal_size) { - return FX_Alloc(uint8_t, pal_size); -} -FX_BOOL CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback( - void* pModule, - FX_DWORD rcd_pos, - const FX_RECT& img_rc, - int32_t pal_num, - void* pal_ptr, - int32_t delay_time, - FX_BOOL user_input, - int32_t trans_index, - int32_t disposal_method, - FX_BOOL interlace) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - pCodec->m_offSet = rcd_pos; - FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; - if (!pCodec->GifReadMoreData(pCodec->m_pCodecMgr->GetGifModule(), - error_status)) { - return FALSE; - } - uint8_t* pPalette = NULL; - if (pal_num != 0 && pal_ptr) { - pPalette = (uint8_t*)pal_ptr; - } else { - pal_num = pCodec->m_GifPltNumber; - pPalette = pCodec->m_pGifPalette; - } - if (pCodec->m_pSrcPalette == NULL) { - pCodec->m_pSrcPalette = FX_Alloc(FX_ARGB, pal_num); - } else if (pal_num > pCodec->m_SrcPaletteNumber) { - pCodec->m_pSrcPalette = FX_Realloc(FX_ARGB, pCodec->m_pSrcPalette, pal_num); - } - if (pCodec->m_pSrcPalette == NULL) { - return FALSE; - } - pCodec->m_SrcPaletteNumber = pal_num; - for (int i = 0; i < pal_num; i++) { - FX_DWORD j = i * 3; - pCodec->m_pSrcPalette[i] = - ArgbEncode(0xff, pPalette[j], pPalette[j + 1], pPalette[j + 2]); - } - pCodec->m_GifTransIndex = trans_index; - pCodec->m_GifFrameRect = img_rc; - pCodec->m_SrcPassNumber = interlace ? 4 : 1; - int32_t pal_index = pCodec->m_GifBgIndex; - CFX_DIBitmap* pDevice = pCodec->m_pDeviceBitmap; - if (trans_index >= pal_num) { - trans_index = -1; - } - if (trans_index != -1) { - pCodec->m_pSrcPalette[trans_index] &= 0x00ffffff; - if (pDevice->HasAlpha()) { - pal_index = trans_index; - } - } - int startX = pCodec->m_startX; - int startY = pCodec->m_startY; - int sizeX = pCodec->m_sizeX; - int sizeY = pCodec->m_sizeY; - int Bpp = pDevice->GetBPP() / 8; - FX_ARGB argb = pCodec->m_pSrcPalette[pal_index]; - for (int row = 0; row < sizeY; row++) { - uint8_t* pScanline = - (uint8_t*)pDevice->GetScanline(row + startY) + startX * Bpp; - switch (pCodec->m_TransMethod) { - case 3: { - uint8_t gray = - FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb)); - FXSYS_memset(pScanline, gray, sizeX); - break; - } - case 8: { - for (int col = 0; col < sizeX; col++) { - *pScanline++ = FXARGB_B(argb); - *pScanline++ = FXARGB_G(argb); - *pScanline++ = FXARGB_R(argb); - pScanline += Bpp - 3; - } - break; - } - case 12: { - for (int col = 0; col < sizeX; col++) { - FXARGB_SETDIB(pScanline, argb); - pScanline += 4; - } - break; - } - } - } - return TRUE; -} -void CCodec_ProgressiveDecoder::GifReadScanlineCallback(void* pModule, - int32_t row_num, - uint8_t* row_buf) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; - ASSERT(pDIBitmap); - int32_t img_width = pCodec->m_GifFrameRect.Width(); - if (!pDIBitmap->HasAlpha()) { - uint8_t* byte_ptr = row_buf; - for (int i = 0; i < img_width; i++) { - if (*byte_ptr == pCodec->m_GifTransIndex) { - *byte_ptr = pCodec->m_GifBgIndex; - } - byte_ptr++; - } - } - int32_t pal_index = pCodec->m_GifBgIndex; - if (pCodec->m_GifTransIndex != -1 && pCodec->m_pDeviceBitmap->HasAlpha()) { - pal_index = pCodec->m_GifTransIndex; - } - FXSYS_memset(pCodec->m_pDecodeBuf, pal_index, pCodec->m_SrcWidth); - bool bLastPass = (row_num % 2) == 1; - int32_t line = row_num + pCodec->m_GifFrameRect.top; - int32_t left = pCodec->m_GifFrameRect.left; - FXSYS_memcpy(pCodec->m_pDecodeBuf + left, row_buf, img_width); - int src_top = pCodec->m_clipBox.top; - int src_bottom = pCodec->m_clipBox.bottom; - int des_top = pCodec->m_startY; - int src_hei = pCodec->m_clipBox.Height(); - int des_hei = pCodec->m_sizeY; - if (line >= src_top && line < src_bottom) { - double scale_y = (double)des_hei / (double)src_hei; - int src_row = line - src_top; - int des_row = (int)(src_row * scale_y) + des_top; - if (des_row >= des_top + des_hei) { - return; - } - pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf, - pCodec->m_SrcFormat); - if (scale_y > 1.0 && - (!pCodec->m_bInterpol || pCodec->m_SrcPassNumber == 1)) { - pCodec->ResampleVert(pDIBitmap, scale_y, des_row); - return; - } - if (scale_y > 1.0) { - int des_bottom = des_top + pCodec->m_sizeY; - int des_Bpp = pDIBitmap->GetBPP() >> 3; - FX_DWORD des_ScanOffet = pCodec->m_startX * des_Bpp; - if (des_row + (int)scale_y >= des_bottom - 1) { - uint8_t* scan_src = - (uint8_t*)pDIBitmap->GetScanline(des_row) + des_ScanOffet; - int cur_row = des_row; - while (++cur_row < des_bottom) { - uint8_t* scan_des = - (uint8_t*)pDIBitmap->GetScanline(cur_row) + des_ScanOffet; - FX_DWORD size = pCodec->m_sizeX * des_Bpp; - FXSYS_memcpy(scan_des, scan_src, size); - } - } - if (bLastPass) { - pCodec->GifDoubleLineResampleVert(pDIBitmap, scale_y, des_row); - } - } - } -} -void CCodec_ProgressiveDecoder::GifDoubleLineResampleVert( - CFX_DIBitmap* pDeviceBitmap, - double scale_y, - int des_row) { - int des_Bpp = pDeviceBitmap->GetBPP() >> 3; - FX_DWORD des_ScanOffet = m_startX * des_Bpp; - int des_top = m_startY; - int des_row_1 = des_row - int(2 * scale_y); - if (des_row_1 < des_top) { - des_row_1 = des_top; - } - for (; des_row_1 < des_row; des_row_1++) { - uint8_t* scan_des = - (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; - PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); - const uint8_t* scan_src1 = - pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + - des_ScanOffet; - const uint8_t* scan_src2 = - pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + des_ScanOffet; - for (int des_col = 0; des_col < m_sizeX; des_col++) { - switch (pDeviceBitmap->GetFormat()) { - case FXDIB_Invalid: - case FXDIB_1bppMask: - case FXDIB_1bppRgb: - return; - case FXDIB_8bppMask: - case FXDIB_8bppRgb: { - if (pDeviceBitmap->GetPalette()) { - return; - } - int des_g = 0; - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - *scan_des++ = (uint8_t)(des_g >> 16); - } break; - case FXDIB_Rgb: - case FXDIB_Rgb32: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - des_b += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_r += pWeight->m_Weights[0] * (*scan_src1++); - scan_src1 += des_Bpp - 3; - des_b += pWeight->m_Weights[1] * (*scan_src2++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - des_r += pWeight->m_Weights[1] * (*scan_src2++); - scan_src2 += des_Bpp - 3; - *scan_des++ = (uint8_t)((des_b) >> 16); - *scan_des++ = (uint8_t)((des_g) >> 16); - *scan_des++ = (uint8_t)((des_r) >> 16); - scan_des += des_Bpp - 3; - } break; - case FXDIB_Argb: { - FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; - des_b += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_r += pWeight->m_Weights[0] * (*scan_src1++); - des_a += pWeight->m_Weights[0] * (*scan_src1++); - des_b += pWeight->m_Weights[1] * (*scan_src2++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - des_r += pWeight->m_Weights[1] * (*scan_src2++); - des_a += pWeight->m_Weights[1] * (*scan_src2++); - *scan_des++ = (uint8_t)((des_b) >> 16); - *scan_des++ = (uint8_t)((des_g) >> 16); - *scan_des++ = (uint8_t)((des_r) >> 16); - *scan_des++ = (uint8_t)((des_a) >> 16); - } break; - default: - return; - } - } - } - int des_bottom = des_top + m_sizeY - 1; - if (des_row + (int)(2 * scale_y) >= des_bottom && - des_row + (int)scale_y < des_bottom) { - GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y); - } -} -FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule, - FXCODEC_STATUS& err_status) { - FX_DWORD dwSize = (FX_DWORD)m_pFile->GetSize(); - if (dwSize <= m_offSet) { - return FALSE; - } - dwSize = dwSize - m_offSet; - FX_DWORD dwAvail = pBmpModule->GetAvailInput(m_pBmpContext, NULL); - if (dwAvail == m_SrcSize) { - if (dwSize > FXCODEC_BLOCK_SIZE) { - dwSize = FXCODEC_BLOCK_SIZE; - } - m_SrcSize = (dwSize + dwAvail + FXCODEC_BLOCK_SIZE - 1) / - FXCODEC_BLOCK_SIZE * FXCODEC_BLOCK_SIZE; - m_pSrcBuf = FX_Realloc(uint8_t, m_pSrcBuf, m_SrcSize); - if (!m_pSrcBuf) { - err_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - } else { - FX_DWORD dwConsume = m_SrcSize - dwAvail; - if (dwAvail) { - FXSYS_memcpy(m_pSrcBuf, m_pSrcBuf + dwConsume, dwAvail); - } - if (dwSize > dwConsume) { - dwSize = dwConsume; - } - } - if (!m_pFile->ReadBlock(m_pSrcBuf + dwAvail, m_offSet, dwSize)) { - err_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += dwSize; - pBmpModule->Input(m_pBmpContext, m_pSrcBuf, dwSize + dwAvail); - return TRUE; -} -FX_BOOL CCodec_ProgressiveDecoder::BmpInputImagePositionBufCallback( - void* pModule, - FX_DWORD rcd_pos) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - pCodec->m_offSet = rcd_pos; - FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; - if (!pCodec->BmpReadMoreData(pCodec->m_pCodecMgr->GetBmpModule(), - error_status)) { - return FALSE; - } - return TRUE; -} -void CCodec_ProgressiveDecoder::BmpReadScanlineCallback(void* pModule, - int32_t row_num, - uint8_t* row_buf) { - CCodec_ProgressiveDecoder* pCodec = (CCodec_ProgressiveDecoder*)pModule; - CFX_DIBitmap* pDIBitmap = pCodec->m_pDeviceBitmap; - ASSERT(pDIBitmap); - FXSYS_memcpy(pCodec->m_pDecodeBuf, row_buf, pCodec->m_ScanlineSize); - int src_top = pCodec->m_clipBox.top; - int src_bottom = pCodec->m_clipBox.bottom; - int des_top = pCodec->m_startY; - int src_hei = pCodec->m_clipBox.Height(); - int des_hei = pCodec->m_sizeY; - if (row_num >= src_top && row_num < src_bottom) { - double scale_y = (double)des_hei / (double)src_hei; - int src_row = row_num - src_top; - int des_row = (int)(src_row * scale_y) + des_top; - if (des_row >= des_top + des_hei) { - return; - } - pCodec->ReSampleScanline(pDIBitmap, des_row, pCodec->m_pDecodeBuf, - pCodec->m_SrcFormat); - if (scale_y > 1.0) { - if (pCodec->m_BmpIsTopBottom || !pCodec->m_bInterpol) { - pCodec->ResampleVert(pDIBitmap, scale_y, des_row); - return; - } else { - pCodec->ResampleVertBT(pDIBitmap, scale_y, des_row); - } - } - } -} -void CCodec_ProgressiveDecoder::ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, - double scale_y, - int des_row) { - int des_Bpp = pDeviceBitmap->GetBPP() >> 3; - FX_DWORD des_ScanOffet = m_startX * des_Bpp; - int des_top = m_startY; - int des_bottom = m_startY + m_sizeY; - int des_row_1 = des_row + int(scale_y); - if (des_row_1 >= des_bottom - 1) { - uint8_t* scan_src = - (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; - while (++des_row < des_bottom) { - uint8_t* scan_des = - (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; - FX_DWORD size = m_sizeX * des_Bpp; - FXSYS_memcpy(scan_des, scan_src, size); - } - return; - } - for (; des_row_1 > des_row; des_row_1--) { - uint8_t* scan_des = - (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; - PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); - const uint8_t* scan_src1 = - pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + - des_ScanOffet; - const uint8_t* scan_src2 = - pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + des_ScanOffet; - for (int des_col = 0; des_col < m_sizeX; des_col++) { - switch (pDeviceBitmap->GetFormat()) { - case FXDIB_Invalid: - case FXDIB_1bppMask: - case FXDIB_1bppRgb: - return; - case FXDIB_8bppMask: - case FXDIB_8bppRgb: { - if (pDeviceBitmap->GetPalette()) { - return; - } - int des_g = 0; - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - *scan_des++ = (uint8_t)(des_g >> 16); - } break; - case FXDIB_Rgb: - case FXDIB_Rgb32: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - des_b += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_r += pWeight->m_Weights[0] * (*scan_src1++); - scan_src1 += des_Bpp - 3; - des_b += pWeight->m_Weights[1] * (*scan_src2++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - des_r += pWeight->m_Weights[1] * (*scan_src2++); - scan_src2 += des_Bpp - 3; - *scan_des++ = (uint8_t)((des_b) >> 16); - *scan_des++ = (uint8_t)((des_g) >> 16); - *scan_des++ = (uint8_t)((des_r) >> 16); - scan_des += des_Bpp - 3; - } break; - case FXDIB_Argb: { - FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; - des_b += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_r += pWeight->m_Weights[0] * (*scan_src1++); - des_a += pWeight->m_Weights[0] * (*scan_src1++); - des_b += pWeight->m_Weights[1] * (*scan_src2++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - des_r += pWeight->m_Weights[1] * (*scan_src2++); - des_a += pWeight->m_Weights[1] * (*scan_src2++); - *scan_des++ = (uint8_t)((des_b) >> 16); - *scan_des++ = (uint8_t)((des_g) >> 16); - *scan_des++ = (uint8_t)((des_r) >> 16); - *scan_des++ = (uint8_t)((des_a) >> 16); - } break; - default: - return; - } - } - } -} -FX_BOOL CCodec_ProgressiveDecoder::DetectImageType( - FXCODEC_IMAGE_TYPE imageType, - CFX_DIBAttribute* pAttribute) { - m_offSet = 0; - FX_DWORD size = (FX_DWORD)m_pFile->GetSize(); - if (size > FXCODEC_BLOCK_SIZE) { - size = FXCODEC_BLOCK_SIZE; - } - FX_Free(m_pSrcBuf); - m_pSrcBuf = FX_Alloc(uint8_t, size); - FXSYS_memset(m_pSrcBuf, 0, size); - m_SrcSize = size; - switch (imageType) { - case FXCODEC_IMAGE_BMP: { - ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); - if (pBmpModule == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - pBmpModule->InputImagePositionBufCallback = - BmpInputImagePositionBufCallback; - pBmpModule->ReadScanlineCallback = BmpReadScanlineCallback; - m_pBmpContext = pBmpModule->Start((void*)this); - if (m_pBmpContext == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); - if (!bResult) { - m_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += size; - pBmpModule->Input(m_pBmpContext, m_pSrcBuf, size); - FX_DWORD* pPalette = NULL; - int32_t readResult = pBmpModule->ReadHeader( - m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, - &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); - while (readResult == 2) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; - if (!BmpReadMoreData(pBmpModule, error_status)) { - m_status = error_status; - return FALSE; - } - readResult = pBmpModule->ReadHeader( - m_pBmpContext, &m_SrcWidth, &m_SrcHeight, &m_BmpIsTopBottom, - &m_SrcComponents, &m_SrcPaletteNumber, &pPalette, pAttribute); - } - if (readResult == 1) { - m_SrcBPC = 8; - m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); - FX_Free(m_pSrcPalette); - if (m_SrcPaletteNumber) { - m_pSrcPalette = FX_Alloc(FX_ARGB, m_SrcPaletteNumber); - FXSYS_memcpy(m_pSrcPalette, pPalette, - m_SrcPaletteNumber * sizeof(FX_DWORD)); - } else { - m_pSrcPalette = nullptr; - } - return TRUE; - } - if (m_pBmpContext) { - pBmpModule->Finish(m_pBmpContext); - m_pBmpContext = NULL; - } - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } break; - case FXCODEC_IMAGE_JPG: { - ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); - if (pJpegModule == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - m_pJpegContext = pJpegModule->Start(); - if (m_pJpegContext == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); - if (!bResult) { - m_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += size; - pJpegModule->Input(m_pJpegContext, m_pSrcBuf, size); - int32_t readResult = - pJpegModule->ReadHeader(m_pJpegContext, &m_SrcWidth, &m_SrcHeight, - &m_SrcComponents, pAttribute); - while (readResult == 2) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; - if (!JpegReadMoreData(pJpegModule, error_status)) { - m_status = error_status; - return FALSE; - } - readResult = - pJpegModule->ReadHeader(m_pJpegContext, &m_SrcWidth, &m_SrcHeight, - &m_SrcComponents, pAttribute); - } - if (!readResult) { - m_SrcBPC = 8; - m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); - return TRUE; - } - if (m_pJpegContext) { - pJpegModule->Finish(m_pJpegContext); - m_pJpegContext = NULL; - } - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } break; - case FXCODEC_IMAGE_PNG: { - ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); - if (pPngModule == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - pPngModule->ReadHeaderCallback = - CCodec_ProgressiveDecoder::PngReadHeaderFunc; - pPngModule->AskScanlineBufCallback = - CCodec_ProgressiveDecoder::PngAskScanlineBufFunc; - pPngModule->FillScanlineBufCompletedCallback = - CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc; - m_pPngContext = pPngModule->Start((void*)this); - if (m_pPngContext == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); - if (!bResult) { - m_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += size; - bResult = pPngModule->Input(m_pPngContext, m_pSrcBuf, size, pAttribute); - while (bResult) { - FX_DWORD remain_size = (FX_DWORD)m_pFile->GetSize() - m_offSet; - FX_DWORD input_size = - remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; - if (input_size == 0) { - if (m_pPngContext) { - pPngModule->Finish(m_pPngContext); - } - m_pPngContext = NULL; - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } - if (m_pSrcBuf && input_size > m_SrcSize) { - FX_Free(m_pSrcBuf); - m_pSrcBuf = FX_Alloc(uint8_t, input_size); - FXSYS_memset(m_pSrcBuf, 0, input_size); - m_SrcSize = input_size; - } - bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); - if (!bResult) { - m_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += input_size; - bResult = - pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, pAttribute); - } - ASSERT(!bResult); - if (m_pPngContext) { - pPngModule->Finish(m_pPngContext); - m_pPngContext = NULL; - } - if (m_SrcPassNumber == 0) { - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } - } break; - case FXCODEC_IMAGE_GIF: { - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); - if (pGifModule == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - pGifModule->RecordCurrentPositionCallback = - CCodec_ProgressiveDecoder::GifRecordCurrentPositionCallback; - pGifModule->AskLocalPaletteBufCallback = - CCodec_ProgressiveDecoder::GifAskLocalPaletteBufCallback; - pGifModule->InputRecordPositionBufCallback = - CCodec_ProgressiveDecoder::GifInputRecordPositionBufCallback; - pGifModule->ReadScanlineCallback = - CCodec_ProgressiveDecoder::GifReadScanlineCallback; - m_pGifContext = pGifModule->Start((void*)this); - if (m_pGifContext == NULL) { - m_status = FXCODEC_STATUS_ERR_MEMORY; - return FALSE; - } - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, 0, size); - if (!bResult) { - m_status = FXCODEC_STATUS_ERR_READ; - return FALSE; - } - m_offSet += size; - pGifModule->Input(m_pGifContext, m_pSrcBuf, size); - m_SrcComponents = 1; - int32_t readResult = pGifModule->ReadHeader( - m_pGifContext, &m_SrcWidth, &m_SrcHeight, &m_GifPltNumber, - (void**)&m_pGifPalette, &m_GifBgIndex, nullptr); - while (readResult == 2) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_FORMAT; - if (!GifReadMoreData(pGifModule, error_status)) { - m_status = error_status; - return FALSE; - } - readResult = pGifModule->ReadHeader( - m_pGifContext, &m_SrcWidth, &m_SrcHeight, &m_GifPltNumber, - (void**)&m_pGifPalette, &m_GifBgIndex, nullptr); - } - if (readResult == 1) { - m_SrcBPC = 8; - m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); - return TRUE; - } - if (m_pGifContext) { - pGifModule->Finish(m_pGifContext); - m_pGifContext = NULL; - } - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } break; - case FXCODEC_IMAGE_TIF: { - ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); - if (pTiffModule == NULL) { - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } - m_pTiffContext = pTiffModule->CreateDecoder(m_pFile); - if (m_pTiffContext == NULL) { - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } - int32_t frames = 0; - pTiffModule->GetFrames(m_pTiffContext, frames); - FX_DWORD bpc; - FX_BOOL ret = pTiffModule->LoadFrameInfo( - m_pTiffContext, 0, (FX_DWORD&)m_SrcWidth, (FX_DWORD&)m_SrcHeight, - (FX_DWORD&)m_SrcComponents, bpc, pAttribute); - m_SrcComponents = 4; - m_clipBox = FX_RECT(0, 0, m_SrcWidth, m_SrcHeight); - if (!ret) { - pTiffModule->DestroyDecoder(m_pTiffContext); - (m_pTiffContext = NULL); - (m_status = FXCODEC_STATUS_ERR_FORMAT); - return FALSE; - } - } break; - default: - m_status = FXCODEC_STATUS_ERR_FORMAT; - return FALSE; - } - return TRUE; -} -FXCODEC_STATUS CCodec_ProgressiveDecoder::LoadImageInfo( - IFX_FileRead* pFile, - FXCODEC_IMAGE_TYPE imageType, - CFX_DIBAttribute* pAttribute) { - switch (m_status) { - case FXCODEC_STATUS_FRAME_READY: - case FXCODEC_STATUS_FRAME_TOBECONTINUE: - case FXCODEC_STATUS_DECODE_READY: - case FXCODEC_STATUS_DECODE_TOBECONTINUE: - return FXCODEC_STATUS_ERROR; - default: - break; - } - if (pFile == NULL) { - m_status = FXCODEC_STATUS_ERR_PARAMS; - m_pFile = NULL; - return m_status; - } - m_pFile = pFile; - m_offSet = 0; - m_SrcWidth = m_SrcHeight = 0; - m_SrcComponents = m_SrcBPC = 0; - m_clipBox = FX_RECT(0, 0, 0, 0); - m_startX = m_startY = 0; - m_sizeX = m_sizeY = 0; - m_SrcPassNumber = 0; - if (imageType != FXCODEC_IMAGE_UNKNOWN && - DetectImageType(imageType, pAttribute)) { - m_imagType = imageType; - m_status = FXCODEC_STATUS_FRAME_READY; - return m_status; - } - for (int type = FXCODEC_IMAGE_BMP; type < FXCODEC_IMAGE_MAX; type++) { - if (DetectImageType((FXCODEC_IMAGE_TYPE)type, pAttribute)) { - m_imagType = (FXCODEC_IMAGE_TYPE)type; - m_status = FXCODEC_STATUS_FRAME_READY; - return m_status; - } - } - m_status = FXCODEC_STATUS_ERR_FORMAT; - m_pFile = NULL; - return m_status; -} -void CCodec_ProgressiveDecoder::SetClipBox(FX_RECT* clip) { - if (m_status != FXCODEC_STATUS_FRAME_READY) { - return; - } - if (clip->IsEmpty()) { - m_clipBox = FX_RECT(0, 0, 0, 0); - return; - } - if (clip->left < 0) { - clip->left = 0; - } - if (clip->right > m_SrcWidth) { - clip->right = m_SrcWidth; - } - if (clip->top < 0) { - clip->top = 0; - } - if (clip->bottom > m_SrcHeight) { - clip->bottom = m_SrcHeight; - } - if (clip->IsEmpty()) { - m_clipBox = FX_RECT(0, 0, 0, 0); - return; - } - m_clipBox = *clip; -} -void CCodec_ProgressiveDecoder::GetDownScale(int& down_scale) { - down_scale = 1; - int ratio_w = m_clipBox.Width() / m_sizeX; - int ratio_h = m_clipBox.Height() / m_sizeY; - int ratio = (ratio_w > ratio_h) ? ratio_h : ratio_w; - if (ratio >= 8) { - down_scale = 8; - } else if (ratio >= 4) { - down_scale = 4; - } else if (ratio >= 2) { - down_scale = 2; - } - m_clipBox.left /= down_scale; - m_clipBox.right /= down_scale; - m_clipBox.top /= down_scale; - m_clipBox.bottom /= down_scale; - if (m_clipBox.right == m_clipBox.left) { - m_clipBox.right = m_clipBox.left + 1; - } - if (m_clipBox.bottom == m_clipBox.top) { - m_clipBox.bottom = m_clipBox.top + 1; - } -} -void CCodec_ProgressiveDecoder::GetTransMethod(FXDIB_Format des_format, - FXCodec_Format src_format) { - switch (des_format) { - case FXDIB_1bppMask: - case FXDIB_1bppRgb: { - switch (src_format) { - case FXCodec_1bppGray: - m_TransMethod = 0; - break; - default: - m_TransMethod = -1; - } - } break; - case FXDIB_8bppMask: - case FXDIB_8bppRgb: { - switch (src_format) { - case FXCodec_1bppGray: - m_TransMethod = 1; - break; - case FXCodec_8bppGray: - m_TransMethod = 2; - break; - case FXCodec_1bppRgb: - case FXCodec_8bppRgb: - m_TransMethod = 3; - break; - case FXCodec_Rgb: - case FXCodec_Rgb32: - case FXCodec_Argb: - m_TransMethod = 4; - break; - case FXCodec_Cmyk: - m_TransMethod = 5; - break; - default: - m_TransMethod = -1; - } - } break; - case FXDIB_Rgb: { - switch (src_format) { - case FXCodec_1bppGray: - m_TransMethod = 6; - break; - case FXCodec_8bppGray: - m_TransMethod = 7; - break; - case FXCodec_1bppRgb: - case FXCodec_8bppRgb: - m_TransMethod = 8; - break; - case FXCodec_Rgb: - case FXCodec_Rgb32: - case FXCodec_Argb: - m_TransMethod = 9; - break; - case FXCodec_Cmyk: - m_TransMethod = 10; - break; - default: - m_TransMethod = -1; - } - } break; - case FXDIB_Rgb32: - case FXDIB_Argb: { - switch (src_format) { - case FXCodec_1bppGray: - m_TransMethod = 6; - break; - case FXCodec_8bppGray: - m_TransMethod = 7; - break; - case FXCodec_1bppRgb: - case FXCodec_8bppRgb: - if (des_format == FXDIB_Argb) { - m_TransMethod = 12; - } else { - m_TransMethod = 8; - } - break; - case FXCodec_Rgb: - case FXCodec_Rgb32: - m_TransMethod = 9; - break; - case FXCodec_Cmyk: - m_TransMethod = 10; - break; - case FXCodec_Argb: - m_TransMethod = 11; - break; - default: - m_TransMethod = -1; - } - } break; - default: - m_TransMethod = -1; - } -} -void _RGB2BGR(uint8_t* buffer, int width = 1) { - if (buffer && width > 0) { - uint8_t temp; - int i = 0; - int j = 0; - for (; i < width; i++, j += 3) { - temp = buffer[j]; - buffer[j] = buffer[j + 2]; - buffer[j + 2] = temp; - } - } -} -void CCodec_ProgressiveDecoder::ReSampleScanline(CFX_DIBitmap* pDeviceBitmap, - int des_line, - uint8_t* src_scan, - FXCodec_Format src_format) { - int src_left = m_clipBox.left; - int des_left = m_startX; - uint8_t* des_scan = - pDeviceBitmap->GetBuffer() + des_line * pDeviceBitmap->GetPitch(); - int src_bpp = src_format & 0xff; - int des_bpp = pDeviceBitmap->GetBPP(); - int src_Bpp = src_bpp >> 3; - int des_Bpp = des_bpp >> 3; - src_scan += src_left * src_Bpp; - des_scan += des_left * des_Bpp; - for (int des_col = 0; des_col < m_sizeX; des_col++) { - PixelWeight* pPixelWeights = m_WeightHorz.GetPixelWeight(des_col); - switch (m_TransMethod) { - case -1: - return; - case 0: - return; - case 1: - return; - case 2: { - FX_DWORD des_g = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - des_g += pixel_weight * src_scan[j]; - } - *des_scan++ = (uint8_t)(des_g >> 16); - } break; - case 3: { - int des_r = 0, des_g = 0, des_b = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - unsigned long argb = m_pSrcPalette[src_scan[j]]; - des_r += pixel_weight * (uint8_t)(argb >> 16); - des_g += pixel_weight * (uint8_t)(argb >> 8); - des_b += pixel_weight * (uint8_t)argb; - } - *des_scan++ = - (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); - } break; - case 4: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = src_scan + j * src_Bpp; - des_b += pixel_weight * (*src_pixel++); - des_g += pixel_weight * (*src_pixel++); - des_r += pixel_weight * (*src_pixel); - } - *des_scan++ = - (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); - } break; - case 5: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = src_scan + j * src_Bpp; - uint8_t src_b = 0, src_g = 0, src_r = 0; - AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1], - 255 - src_pixel[2], 255 - src_pixel[3], src_r, - src_g, src_b); - des_b += pixel_weight * src_b; - des_g += pixel_weight * src_g; - des_r += pixel_weight * src_r; - } - *des_scan++ = - (uint8_t)FXRGB2GRAY((des_r >> 16), (des_g >> 16), (des_b >> 16)); - } break; - case 6: - return; - case 7: { - FX_DWORD des_g = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - des_g += pixel_weight * src_scan[j]; - } - FXSYS_memset(des_scan, (uint8_t)(des_g >> 16), 3); - des_scan += des_Bpp; - } break; - case 8: { - int des_r = 0, des_g = 0, des_b = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - unsigned long argb = m_pSrcPalette[src_scan[j]]; - des_r += pixel_weight * (uint8_t)(argb >> 16); - des_g += pixel_weight * (uint8_t)(argb >> 8); - des_b += pixel_weight * (uint8_t)argb; - } - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - des_scan += des_Bpp - 3; - } break; - case 12: { - if (m_pBmpContext) { - int des_r = 0, des_g = 0, des_b = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - unsigned long argb = m_pSrcPalette[src_scan[j]]; - des_r += pixel_weight * (uint8_t)(argb >> 16); - des_g += pixel_weight * (uint8_t)(argb >> 8); - des_b += pixel_weight * (uint8_t)argb; - } - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - *des_scan++ = 0xFF; - } else { - int des_a = 0, des_r = 0, des_g = 0, des_b = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - unsigned long argb = m_pSrcPalette[src_scan[j]]; - des_a += pixel_weight * (uint8_t)(argb >> 24); - des_r += pixel_weight * (uint8_t)(argb >> 16); - des_g += pixel_weight * (uint8_t)(argb >> 8); - des_b += pixel_weight * (uint8_t)argb; - } - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - *des_scan++ = (uint8_t)((des_a) >> 16); - } - } break; - case 9: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = src_scan + j * src_Bpp; - des_b += pixel_weight * (*src_pixel++); - des_g += pixel_weight * (*src_pixel++); - des_r += pixel_weight * (*src_pixel); - } - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - des_scan += des_Bpp - 3; - } break; - case 10: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = src_scan + j * src_Bpp; - uint8_t src_b = 0, src_g = 0, src_r = 0; - AdobeCMYK_to_sRGB1(255 - src_pixel[0], 255 - src_pixel[1], - 255 - src_pixel[2], 255 - src_pixel[3], src_r, - src_g, src_b); - des_b += pixel_weight * src_b; - des_g += pixel_weight * src_g; - des_r += pixel_weight * src_r; - } - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - des_scan += des_Bpp - 3; - } break; - case 11: { - FX_DWORD des_alpha = 0, des_r = 0, des_g = 0, des_b = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = src_scan + j * src_Bpp; - pixel_weight = pixel_weight * src_pixel[3] / 255; - des_b += pixel_weight * (*src_pixel++); - des_g += pixel_weight * (*src_pixel++); - des_r += pixel_weight * (*src_pixel); - des_alpha += pixel_weight; - } - *des_scan++ = (uint8_t)((des_b) >> 16); - *des_scan++ = (uint8_t)((des_g) >> 16); - *des_scan++ = (uint8_t)((des_r) >> 16); - *des_scan++ = (uint8_t)((des_alpha * 255) >> 16); - } break; - default: - return; - } - } -} -void CCodec_ProgressiveDecoder::ResampleVert(CFX_DIBitmap* pDeviceBitmap, - double scale_y, - int des_row) { - int des_Bpp = pDeviceBitmap->GetBPP() >> 3; - FX_DWORD des_ScanOffet = m_startX * des_Bpp; - if (m_bInterpol) { - int des_top = m_startY; - int des_row_1 = des_row - int(scale_y); - if (des_row_1 < des_top) { - int des_bottom = des_top + m_sizeY; - if (des_row + (int)scale_y >= des_bottom - 1) { - uint8_t* scan_src = - (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; - while (++des_row < des_bottom) { - uint8_t* scan_des = - (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; - FX_DWORD size = m_sizeX * des_Bpp; - FXSYS_memcpy(scan_des, scan_src, size); - } - } - return; - } - for (; des_row_1 < des_row; des_row_1++) { - uint8_t* scan_des = - (uint8_t*)pDeviceBitmap->GetScanline(des_row_1) + des_ScanOffet; - PixelWeight* pWeight = m_WeightVert.GetPixelWeight(des_row_1 - des_top); - const uint8_t* scan_src1 = - pDeviceBitmap->GetScanline(pWeight->m_SrcStart + des_top) + - des_ScanOffet; - const uint8_t* scan_src2 = - pDeviceBitmap->GetScanline(pWeight->m_SrcEnd + des_top) + - des_ScanOffet; - for (int des_col = 0; des_col < m_sizeX; des_col++) { - switch (pDeviceBitmap->GetFormat()) { - case FXDIB_Invalid: - case FXDIB_1bppMask: - case FXDIB_1bppRgb: - return; - case FXDIB_8bppMask: - case FXDIB_8bppRgb: { - if (pDeviceBitmap->GetPalette()) { - return; - } - int des_g = 0; - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - *scan_des++ = (uint8_t)(des_g >> 16); - } break; - case FXDIB_Rgb: - case FXDIB_Rgb32: { - FX_DWORD des_b = 0, des_g = 0, des_r = 0; - des_b += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_r += pWeight->m_Weights[0] * (*scan_src1++); - scan_src1 += des_Bpp - 3; - des_b += pWeight->m_Weights[1] * (*scan_src2++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - des_r += pWeight->m_Weights[1] * (*scan_src2++); - scan_src2 += des_Bpp - 3; - *scan_des++ = (uint8_t)((des_b) >> 16); - *scan_des++ = (uint8_t)((des_g) >> 16); - *scan_des++ = (uint8_t)((des_r) >> 16); - scan_des += des_Bpp - 3; - } break; - case FXDIB_Argb: { - FX_DWORD des_a = 0, des_b = 0, des_g = 0, des_r = 0; - des_b += pWeight->m_Weights[0] * (*scan_src1++); - des_g += pWeight->m_Weights[0] * (*scan_src1++); - des_r += pWeight->m_Weights[0] * (*scan_src1++); - des_a += pWeight->m_Weights[0] * (*scan_src1++); - des_b += pWeight->m_Weights[1] * (*scan_src2++); - des_g += pWeight->m_Weights[1] * (*scan_src2++); - des_r += pWeight->m_Weights[1] * (*scan_src2++); - des_a += pWeight->m_Weights[1] * (*scan_src2++); - *scan_des++ = (uint8_t)((des_b) >> 16); - *scan_des++ = (uint8_t)((des_g) >> 16); - *scan_des++ = (uint8_t)((des_r) >> 16); - *scan_des++ = (uint8_t)((des_a) >> 16); - } break; - default: - return; - } - } - } - int des_bottom = des_top + m_sizeY; - if (des_row + (int)scale_y >= des_bottom - 1) { - uint8_t* scan_src = - (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; - while (++des_row < des_bottom) { - uint8_t* scan_des = - (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; - FX_DWORD size = m_sizeX * des_Bpp; - FXSYS_memcpy(scan_des, scan_src, size); - } - } - return; - } - int multiple = (int)FXSYS_ceil((FX_FLOAT)scale_y - 1); - if (multiple > 0) { - uint8_t* scan_src = - (uint8_t*)pDeviceBitmap->GetScanline(des_row) + des_ScanOffet; - for (int i = 1; i <= multiple; i++) { - if (des_row + i >= m_startY + m_sizeY) { - return; - } - uint8_t* scan_des = - (uint8_t*)pDeviceBitmap->GetScanline(des_row + i) + des_ScanOffet; - FX_DWORD size = m_sizeX * des_Bpp; - FXSYS_memcpy(scan_des, scan_src, size); - } - } -} -void CCodec_ProgressiveDecoder::Resample(CFX_DIBitmap* pDeviceBitmap, - int32_t src_line, - uint8_t* src_scan, - FXCodec_Format src_format) { - int src_top = m_clipBox.top; - int des_top = m_startY; - int src_hei = m_clipBox.Height(); - int des_hei = m_sizeY; - if (src_line >= src_top) { - double scale_y = (double)des_hei / (double)src_hei; - int src_row = src_line - src_top; - int des_row = (int)(src_row * scale_y) + des_top; - if (des_row >= des_top + des_hei) { - return; - } - ReSampleScanline(pDeviceBitmap, des_row, m_pDecodeBuf, src_format); - if (scale_y > 1.0) { - ResampleVert(pDeviceBitmap, scale_y, des_row); - } - } -} -FXCODEC_STATUS CCodec_ProgressiveDecoder::GetFrames(int32_t& frames, - IFX_Pause* pPause) { - if (!(m_status == FXCODEC_STATUS_FRAME_READY || - m_status == FXCODEC_STATUS_FRAME_TOBECONTINUE)) { - return FXCODEC_STATUS_ERROR; - } - switch (m_imagType) { - case FXCODEC_IMAGE_BMP: - case FXCODEC_IMAGE_JPG: - case FXCODEC_IMAGE_PNG: - case FXCODEC_IMAGE_TIF: - frames = m_FrameNumber = 1; - return m_status = FXCODEC_STATUS_DECODE_READY; - case FXCODEC_IMAGE_GIF: { - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); - while (TRUE) { - int32_t readResult = - pGifModule->LoadFrameInfo(m_pGifContext, &m_FrameNumber); - while (readResult == 2) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_ERR_READ; - if (!GifReadMoreData(pGifModule, error_status)) { - return error_status; - } - if (pPause && pPause->NeedToPauseNow()) { - return m_status = FXCODEC_STATUS_FRAME_TOBECONTINUE; - } - readResult = pGifModule->LoadFrameInfo(m_pGifContext, &m_FrameNumber); - } - if (readResult == 1) { - frames = m_FrameNumber; - return m_status = FXCODEC_STATUS_DECODE_READY; - } - if (m_pGifContext) { - pGifModule->Finish(m_pGifContext); - m_pGifContext = NULL; - } - return m_status = FXCODEC_STATUS_ERROR; - } - } break; - default: - break; - } - return FXCODEC_STATUS_ERROR; -} -FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap, - int start_x, - int start_y, - int size_x, - int size_y, - int32_t frames, - FX_BOOL bInterpol) { - if (m_status != FXCODEC_STATUS_DECODE_READY) { - return FXCODEC_STATUS_ERROR; - } - if (pDIBitmap == NULL || pDIBitmap->GetBPP() < 8 || frames < 0 || - frames >= m_FrameNumber) { - return FXCODEC_STATUS_ERR_PARAMS; - } - m_pDeviceBitmap = pDIBitmap; - if (m_clipBox.IsEmpty()) { - return FXCODEC_STATUS_ERR_PARAMS; - } - if (size_x <= 0 || size_x > 65535 || size_y <= 0 || size_y > 65535) { - return FXCODEC_STATUS_ERR_PARAMS; - } - FX_RECT device_rc = - FX_RECT(start_x, start_y, start_x + size_x, start_y + size_y); - int32_t out_range_x = device_rc.right - pDIBitmap->GetWidth(); - int32_t out_range_y = device_rc.bottom - pDIBitmap->GetHeight(); - device_rc.Intersect( - FX_RECT(0, 0, pDIBitmap->GetWidth(), pDIBitmap->GetHeight())); - if (device_rc.IsEmpty()) { - return FXCODEC_STATUS_ERR_PARAMS; - } - m_startX = device_rc.left; - m_startY = device_rc.top; - m_sizeX = device_rc.Width(); - m_sizeY = device_rc.Height(); - m_bInterpol = bInterpol; - m_FrameCur = 0; - if (start_x < 0 || out_range_x > 0) { - FX_FLOAT scaleX = (FX_FLOAT)m_clipBox.Width() / (FX_FLOAT)size_x; - if (start_x < 0) { - m_clipBox.left -= (int32_t)FXSYS_ceil((FX_FLOAT)start_x * scaleX); - } - if (out_range_x > 0) { - m_clipBox.right -= (int32_t)FXSYS_floor((FX_FLOAT)out_range_x * scaleX); - } - } - if (start_y < 0 || out_range_y > 0) { - FX_FLOAT scaleY = (FX_FLOAT)m_clipBox.Height() / (FX_FLOAT)size_y; - if (start_y < 0) { - m_clipBox.top -= (int32_t)FXSYS_ceil((FX_FLOAT)start_y * scaleY); - } - if (out_range_y > 0) { - m_clipBox.bottom -= (int32_t)FXSYS_floor((FX_FLOAT)out_range_y * scaleY); - } - } - if (m_clipBox.IsEmpty()) { - return FXCODEC_STATUS_ERR_PARAMS; - } - switch (m_imagType) { - case FXCODEC_IMAGE_JPG: { - ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); - int down_scale = 1; - GetDownScale(down_scale); - FX_BOOL bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); - while (!bStart) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_ERROR; - if (!JpegReadMoreData(pJpegModule, error_status)) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = error_status; - } - bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale); - } - int scanline_size = (m_SrcWidth + down_scale - 1) / down_scale; - scanline_size = (scanline_size * m_SrcComponents + 3) / 4 * 4; - FX_Free(m_pDecodeBuf); - m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); - FXSYS_memset(m_pDecodeBuf, 0, scanline_size); - m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, - m_clipBox.Width(), m_bInterpol); - m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); - switch (m_SrcComponents) { - case 1: - m_SrcFormat = FXCodec_8bppGray; - break; - case 3: - m_SrcFormat = FXCodec_Rgb; - break; - case 4: - m_SrcFormat = FXCodec_Cmyk; - break; - } - GetTransMethod(pDIBitmap->GetFormat(), m_SrcFormat); - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } break; - case FXCODEC_IMAGE_PNG: { - ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); - if (pPngModule == NULL) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - if (m_pPngContext) { - pPngModule->Finish(m_pPngContext); - m_pPngContext = NULL; - } - m_pPngContext = pPngModule->Start((void*)this); - if (m_pPngContext == NULL) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - m_offSet = 0; - switch (m_pDeviceBitmap->GetFormat()) { - case FXDIB_8bppMask: - case FXDIB_8bppRgb: - m_SrcComponents = 1; - m_SrcFormat = FXCodec_8bppGray; - break; - case FXDIB_Rgb: - m_SrcComponents = 3; - m_SrcFormat = FXCodec_Rgb; - break; - case FXDIB_Rgb32: - case FXDIB_Argb: - m_SrcComponents = 4; - m_SrcFormat = FXCodec_Argb; - break; - default: { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_PARAMS; - } - } - GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); - int scanline_size = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; - FX_Free(m_pDecodeBuf); - m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); - FXSYS_memset(m_pDecodeBuf, 0, scanline_size); - m_WeightHorzOO.Calc(m_sizeX, m_clipBox.Width(), m_bInterpol); - m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } break; - case FXCODEC_IMAGE_GIF: { - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); - if (pGifModule == NULL) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - m_SrcFormat = FXCodec_8bppRgb; - GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); - int scanline_size = (m_SrcWidth + 3) / 4 * 4; - FX_Free(m_pDecodeBuf); - m_pDecodeBuf = FX_Alloc(uint8_t, scanline_size); - FXSYS_memset(m_pDecodeBuf, 0, scanline_size); - m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, - m_clipBox.Width(), m_bInterpol); - m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); - m_FrameCur = frames; - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } break; - case FXCODEC_IMAGE_BMP: { - ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); - if (pBmpModule == NULL) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - switch (m_SrcComponents) { - case 1: - m_SrcFormat = FXCodec_8bppRgb; - break; - case 3: - m_SrcFormat = FXCodec_Rgb; - break; - case 4: - m_SrcFormat = FXCodec_Rgb32; - break; - } - GetTransMethod(m_pDeviceBitmap->GetFormat(), m_SrcFormat); - m_ScanlineSize = (m_SrcWidth * m_SrcComponents + 3) / 4 * 4; - FX_Free(m_pDecodeBuf); - m_pDecodeBuf = FX_Alloc(uint8_t, m_ScanlineSize); - FXSYS_memset(m_pDecodeBuf, 0, m_ScanlineSize); - m_WeightHorz.Calc(m_sizeX, 0, m_sizeX, m_clipBox.Width(), 0, - m_clipBox.Width(), m_bInterpol); - m_WeightVert.Calc(m_sizeY, m_clipBox.Height()); - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } break; - case FXCODEC_IMAGE_TIF: - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - default: - break; - } - return FXCODEC_STATUS_ERROR; -} -FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) { - if (m_status != FXCODEC_STATUS_DECODE_TOBECONTINUE) { - return FXCODEC_STATUS_ERROR; - } - switch (m_imagType) { - case FXCODEC_IMAGE_JPG: { - ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule(); - while (TRUE) { - FX_BOOL readRes = - pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); - while (!readRes) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; - if (!JpegReadMoreData(pJpegModule, error_status)) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = error_status; - } - readRes = pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf); - } - if (m_SrcFormat == FXCodec_Rgb) { - int src_Bpp = (m_SrcFormat & 0xff) >> 3; - _RGB2BGR(m_pDecodeBuf + m_clipBox.left * src_Bpp, m_clipBox.Width()); - } - if (m_SrcRow >= m_clipBox.bottom) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_DECODE_FINISH; - } - Resample(m_pDeviceBitmap, m_SrcRow, m_pDecodeBuf, m_SrcFormat); - m_SrcRow++; - if (pPause && pPause->NeedToPauseNow()) { - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - } break; - case FXCODEC_IMAGE_PNG: { - ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule(); - while (TRUE) { - FX_DWORD remain_size = (FX_DWORD)m_pFile->GetSize() - m_offSet; - FX_DWORD input_size = - remain_size > FXCODEC_BLOCK_SIZE ? FXCODEC_BLOCK_SIZE : remain_size; - if (input_size == 0) { - if (m_pPngContext) { - pPngModule->Finish(m_pPngContext); - } - m_pPngContext = NULL; - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_DECODE_FINISH; - } - if (m_pSrcBuf && input_size > m_SrcSize) { - FX_Free(m_pSrcBuf); - m_pSrcBuf = FX_Alloc(uint8_t, input_size); - FXSYS_memset(m_pSrcBuf, 0, input_size); - m_SrcSize = input_size; - } - FX_BOOL bResult = m_pFile->ReadBlock(m_pSrcBuf, m_offSet, input_size); - if (!bResult) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_READ; - } - m_offSet += input_size; - bResult = - pPngModule->Input(m_pPngContext, m_pSrcBuf, input_size, nullptr); - if (!bResult) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERROR; - } - if (pPause && pPause->NeedToPauseNow()) { - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - } break; - case FXCODEC_IMAGE_GIF: { - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule(); - while (TRUE) { - int32_t readRes = - pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); - while (readRes == 2) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; - if (!GifReadMoreData(pGifModule, error_status)) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = error_status; - } - if (pPause && pPause->NeedToPauseNow()) { - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - readRes = pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr); - } - if (readRes == 1) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_DECODE_FINISH; - } - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERROR; - } - } break; - case FXCODEC_IMAGE_BMP: { - ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule(); - while (TRUE) { - int32_t readRes = pBmpModule->LoadImage(m_pBmpContext); - while (readRes == 2) { - FXCODEC_STATUS error_status = FXCODEC_STATUS_DECODE_FINISH; - if (!BmpReadMoreData(pBmpModule, error_status)) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = error_status; - } - if (pPause && pPause->NeedToPauseNow()) { - return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - readRes = pBmpModule->LoadImage(m_pBmpContext); - } - if (readRes == 1) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_DECODE_FINISH; - } - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERROR; - } - } break; - case FXCODEC_IMAGE_TIF: { - ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule(); - FX_BOOL ret = FALSE; - if (m_pDeviceBitmap->GetBPP() == 32 && - m_pDeviceBitmap->GetWidth() == m_SrcWidth && m_SrcWidth == m_sizeX && - m_pDeviceBitmap->GetHeight() == m_SrcHeight && - m_SrcHeight == m_sizeY && m_startX == 0 && m_startY == 0 && - m_clipBox.left == 0 && m_clipBox.top == 0 && - m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) { - ret = pTiffModule->Decode(m_pTiffContext, m_pDeviceBitmap); - m_pDeviceBitmap = NULL; - m_pFile = NULL; - if (!ret) { - return m_status = FXCODEC_STATUS_ERROR; - } - return m_status = FXCODEC_STATUS_DECODE_FINISH; - } else { - CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; - pDIBitmap->Create(m_SrcWidth, m_SrcHeight, FXDIB_Argb); - if (pDIBitmap->GetBuffer() == NULL) { - delete pDIBitmap; - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - ret = pTiffModule->Decode(m_pTiffContext, pDIBitmap); - if (!ret) { - delete pDIBitmap; - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERROR; - } - CFX_DIBitmap* pClipBitmap = - (m_clipBox.left == 0 && m_clipBox.top == 0 && - m_clipBox.right == m_SrcWidth && m_clipBox.bottom == m_SrcHeight) - ? pDIBitmap - : pDIBitmap->Clone(&m_clipBox); - if (pDIBitmap != pClipBitmap) { - delete pDIBitmap; - } - if (pClipBitmap == NULL) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - CFX_DIBitmap* pFormatBitmap = NULL; - switch (m_pDeviceBitmap->GetFormat()) { - case FXDIB_8bppRgb: - pFormatBitmap = new CFX_DIBitmap; - pFormatBitmap->Create(pClipBitmap->GetWidth(), - pClipBitmap->GetHeight(), FXDIB_8bppRgb); - break; - case FXDIB_8bppMask: - pFormatBitmap = new CFX_DIBitmap; - pFormatBitmap->Create(pClipBitmap->GetWidth(), - pClipBitmap->GetHeight(), FXDIB_8bppMask); - break; - case FXDIB_Rgb: - pFormatBitmap = new CFX_DIBitmap; - pFormatBitmap->Create(pClipBitmap->GetWidth(), - pClipBitmap->GetHeight(), FXDIB_Rgb); - break; - case FXDIB_Rgb32: - pFormatBitmap = new CFX_DIBitmap; - pFormatBitmap->Create(pClipBitmap->GetWidth(), - pClipBitmap->GetHeight(), FXDIB_Rgb32); - break; - case FXDIB_Argb: - pFormatBitmap = pClipBitmap; - break; - default: - break; - } - switch (m_pDeviceBitmap->GetFormat()) { - case FXDIB_8bppRgb: - case FXDIB_8bppMask: { - for (int32_t row = 0; row < pClipBitmap->GetHeight(); row++) { - uint8_t* src_line = (uint8_t*)pClipBitmap->GetScanline(row); - uint8_t* des_line = (uint8_t*)pFormatBitmap->GetScanline(row); - for (int32_t col = 0; col < pClipBitmap->GetWidth(); col++) { - uint8_t _a = 255 - src_line[3]; - uint8_t b = (src_line[0] * src_line[3] + 0xFF * _a) / 255; - uint8_t g = (src_line[1] * src_line[3] + 0xFF * _a) / 255; - uint8_t r = (src_line[2] * src_line[3] + 0xFF * _a) / 255; - *des_line++ = FXRGB2GRAY(r, g, b); - src_line += 4; - } - } - } break; - case FXDIB_Rgb: - case FXDIB_Rgb32: { - int32_t desBpp = - (m_pDeviceBitmap->GetFormat() == FXDIB_Rgb) ? 3 : 4; - for (int32_t row = 0; row < pClipBitmap->GetHeight(); row++) { - uint8_t* src_line = (uint8_t*)pClipBitmap->GetScanline(row); - uint8_t* des_line = (uint8_t*)pFormatBitmap->GetScanline(row); - for (int32_t col = 0; col < pClipBitmap->GetWidth(); col++) { - uint8_t _a = 255 - src_line[3]; - uint8_t b = (src_line[0] * src_line[3] + 0xFF * _a) / 255; - uint8_t g = (src_line[1] * src_line[3] + 0xFF * _a) / 255; - uint8_t r = (src_line[2] * src_line[3] + 0xFF * _a) / 255; - *des_line++ = b; - *des_line++ = g; - *des_line++ = r; - des_line += desBpp - 3; - src_line += 4; - } - } - } break; - default: - break; - } - if (pClipBitmap != pFormatBitmap) { - delete pClipBitmap; - } - if (pFormatBitmap == NULL) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - CFX_DIBitmap* pStrechBitmap = pFormatBitmap->StretchTo( - m_sizeX, m_sizeY, m_bInterpol ? FXDIB_INTERPOL : FXDIB_DOWNSAMPLE); - delete pFormatBitmap; - pFormatBitmap = NULL; - if (pStrechBitmap == NULL) { - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_ERR_MEMORY; - } - m_pDeviceBitmap->TransferBitmap(m_startX, m_startY, m_sizeX, m_sizeY, - pStrechBitmap, 0, 0); - delete pStrechBitmap; - pStrechBitmap = NULL; - m_pDeviceBitmap = NULL; - m_pFile = NULL; - return m_status = FXCODEC_STATUS_DECODE_FINISH; - } - } break; - default: - break; - } - return FXCODEC_STATUS_ERROR; -} -ICodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() { - return new CCodec_ProgressiveDecoder(this); -} diff --git a/core/src/fxcodec/codec/fx_codec_progress.h b/core/src/fxcodec/codec/fx_codec_progress.h deleted file mode 100644 index 4fb13640ff..0000000000 --- a/core/src/fxcodec/codec/fx_codec_progress.h +++ /dev/null @@ -1,213 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_ -#define CORE_SRC_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_ - -#define FXCODEC_BLOCK_SIZE 4096 -#define FXCODEC_PNG_GAMMA 2.2 -#if _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_ -#undef FXCODEC_PNG_GAMMA -#define FXCODEC_PNG_GAMMA 1.7 -#endif -struct PixelWeight { - int m_SrcStart; - int m_SrcEnd; - int m_Weights[1]; -}; -class CFXCODEC_WeightTable { - public: - CFXCODEC_WeightTable() { m_pWeightTables = NULL; } - ~CFXCODEC_WeightTable() { FX_Free(m_pWeightTables); } - - void Calc(int dest_len, - int dest_min, - int dest_max, - int src_len, - int src_min, - int src_max, - FX_BOOL bInterpol); - PixelWeight* GetPixelWeight(int pixel) { - return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize); - } - - int m_DestMin, m_ItemSize; - uint8_t* m_pWeightTables; -}; -class CFXCODEC_HorzTable { - public: - CFXCODEC_HorzTable() { m_pWeightTables = NULL; } - ~CFXCODEC_HorzTable() { FX_Free(m_pWeightTables); } - - void Calc(int dest_len, int src_len, FX_BOOL bInterpol); - PixelWeight* GetPixelWeight(int pixel) { - return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize); - } - - int m_ItemSize; - uint8_t* m_pWeightTables; -}; -class CFXCODEC_VertTable { - public: - CFXCODEC_VertTable() { m_pWeightTables = NULL; } - ~CFXCODEC_VertTable() { FX_Free(m_pWeightTables); } - void Calc(int dest_len, int src_len); - PixelWeight* GetPixelWeight(int pixel) { - return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize); - } - int m_ItemSize; - uint8_t* m_pWeightTables; -}; -enum FXCodec_Format { - FXCodec_Invalid = 0, - FXCodec_1bppGray = 0x101, - FXCodec_1bppRgb = 0x001, - FXCodec_8bppGray = 0x108, - FXCodec_8bppRgb = 0x008, - FXCodec_Rgb = 0x018, - FXCodec_Rgb32 = 0x020, - FXCodec_Argb = 0x220, - FXCodec_Cmyk = 0x120 -}; -class CCodec_ProgressiveDecoder : public ICodec_ProgressiveDecoder { - public: - CCodec_ProgressiveDecoder(CCodec_ModuleMgr* pCodecMgr); - ~CCodec_ProgressiveDecoder() override; - - FXCODEC_STATUS LoadImageInfo(IFX_FileRead* pFile, - FXCODEC_IMAGE_TYPE imageType, - CFX_DIBAttribute* pAttribute) override; - - FXCODEC_IMAGE_TYPE GetType() const override { return m_imagType; } - int32_t GetWidth() const override { return m_SrcWidth; } - int32_t GetHeight() const override { return m_SrcHeight; } - int32_t GetNumComponents() const override { return m_SrcComponents; } - int32_t GetBPC() const override { return m_SrcBPC; } - void SetClipBox(FX_RECT* clip) override; - - FXCODEC_STATUS GetFrames(int32_t& frames, IFX_Pause* pPause) override; - FXCODEC_STATUS StartDecode(CFX_DIBitmap* pDIBitmap, - int start_x, - int start_y, - int size_x, - int size_y, - int32_t frames, - FX_BOOL bInterpol) override; - - FXCODEC_STATUS ContinueDecode(IFX_Pause* pPause) override; - - protected: - static FX_BOOL PngReadHeaderFunc(void* pModule, - int width, - int height, - int bpc, - int pass, - int* color_type, - double* gamma); - static FX_BOOL PngAskScanlineBufFunc(void* pModule, - int line, - uint8_t*& src_buf); - static void PngFillScanlineBufCompletedFunc(void* pModule, - int pass, - int line); - static void GifRecordCurrentPositionCallback(void* pModule, - FX_DWORD& cur_pos); - static uint8_t* GifAskLocalPaletteBufCallback(void* pModule, - int32_t frame_num, - int32_t pal_size); - static FX_BOOL GifInputRecordPositionBufCallback(void* pModule, - FX_DWORD rcd_pos, - const FX_RECT& img_rc, - int32_t pal_num, - void* pal_ptr, - int32_t delay_time, - FX_BOOL user_input, - int32_t trans_index, - int32_t disposal_method, - FX_BOOL interlace); - static void GifReadScanlineCallback(void* pModule, - int32_t row_num, - uint8_t* row_buf); - static FX_BOOL BmpInputImagePositionBufCallback(void* pModule, - FX_DWORD rcd_pos); - static void BmpReadScanlineCallback(void* pModule, - int32_t row_num, - uint8_t* row_buf); - - FX_BOOL DetectImageType(FXCODEC_IMAGE_TYPE imageType, - CFX_DIBAttribute* pAttribute); - void GetDownScale(int& down_scale); - void GetTransMethod(FXDIB_Format des_format, FXCodec_Format src_format); - void ReSampleScanline(CFX_DIBitmap* pDeviceBitmap, - int32_t des_line, - uint8_t* src_scan, - FXCodec_Format src_format); - void Resample(CFX_DIBitmap* pDeviceBitmap, - int32_t src_line, - uint8_t* src_scan, - FXCodec_Format src_format); - void ResampleVert(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row); - FX_BOOL JpegReadMoreData(ICodec_JpegModule* pJpegModule, - FXCODEC_STATUS& err_status); - void PngOneOneMapResampleHorz(CFX_DIBitmap* pDeviceBitmap, - int32_t des_line, - uint8_t* src_scan, - FXCodec_Format src_format); - FX_BOOL GifReadMoreData(ICodec_GifModule* pGifModule, - FXCODEC_STATUS& err_status); - void GifDoubleLineResampleVert(CFX_DIBitmap* pDeviceBitmap, - double scale_y, - int des_row); - FX_BOOL BmpReadMoreData(ICodec_BmpModule* pBmpModule, - FXCODEC_STATUS& err_status); - void ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row); - - public: - IFX_FileRead* m_pFile; - CCodec_ModuleMgr* m_pCodecMgr; - void* m_pJpegContext; - void* m_pPngContext; - void* m_pGifContext; - void* m_pBmpContext; - void* m_pTiffContext; - FXCODEC_IMAGE_TYPE m_imagType; - FX_DWORD m_offSet; - uint8_t* m_pSrcBuf; - FX_DWORD m_SrcSize; - uint8_t* m_pDecodeBuf; - int m_ScanlineSize; - CFX_DIBitmap* m_pDeviceBitmap; - FX_BOOL m_bInterpol; - CFXCODEC_WeightTable m_WeightHorz; - CFXCODEC_VertTable m_WeightVert; - CFXCODEC_HorzTable m_WeightHorzOO; - int m_SrcWidth; - int m_SrcHeight; - int m_SrcComponents; - int m_SrcBPC; - FX_RECT m_clipBox; - int m_startX; - int m_startY; - int m_sizeX; - int m_sizeY; - int m_TransMethod; - FX_ARGB* m_pSrcPalette; - int m_SrcPaletteNumber; - int m_SrcRow; - FXCodec_Format m_SrcFormat; - int m_SrcPassNumber; - int m_FrameNumber; - int m_FrameCur; - int m_GifBgIndex; - uint8_t* m_pGifPalette; - int32_t m_GifPltNumber; - int m_GifTransIndex; - FX_RECT m_GifFrameRect; - FX_BOOL m_BmpIsTopBottom; - FXCODEC_STATUS m_status; -}; - -#endif // CORE_SRC_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_ diff --git a/core/src/fxcodec/codec/fx_codec_tiff.cpp b/core/src/fxcodec/codec/fx_codec_tiff.cpp deleted file mode 100644 index 38c2af6287..0000000000 --- a/core/src/fxcodec/codec/fx_codec_tiff.cpp +++ /dev/null @@ -1,544 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_dib.h" -#include "core/src/fxcodec/codec/codec_int.h" - -extern "C" { -#include "third_party/libtiff/tiffiop.h" -} - -void* IccLib_CreateTransform_sRGB(const unsigned char* pProfileData, - unsigned int dwProfileSize, - int nComponents, - int intent, - FX_DWORD dwSrcFormat = Icc_FORMAT_DEFAULT); -void IccLib_TranslateImage(void* pTransform, - unsigned char* pDest, - const unsigned char* pSrc, - int pixels); -void IccLib_DestroyTransform(void* pTransform); -class CCodec_TiffContext { - public: - CCodec_TiffContext(); - ~CCodec_TiffContext(); - - FX_BOOL InitDecoder(IFX_FileRead* file_ptr); - void GetFrames(int32_t& frames); - FX_BOOL LoadFrameInfo(int32_t frame, - FX_DWORD& width, - FX_DWORD& height, - FX_DWORD& comps, - FX_DWORD& bpc, - CFX_DIBAttribute* pAttribute); - FX_BOOL Decode(CFX_DIBitmap* pDIBitmap); - - union { - IFX_FileRead* in; - IFX_FileStream* out; - } io; - - FX_DWORD offset; - - TIFF* tif_ctx; - void* icc_ctx; - int32_t frame_num; - int32_t frame_cur; - FX_BOOL isDecoder; - - private: - FX_BOOL isSupport(CFX_DIBitmap* pDIBitmap); - void SetPalette(CFX_DIBitmap* pDIBitmap, uint16_t bps); - FX_BOOL Decode1bppRGB(CFX_DIBitmap* pDIBitmap, - int32_t height, - int32_t width, - uint16_t bps, - uint16_t spp); - FX_BOOL Decode8bppRGB(CFX_DIBitmap* pDIBitmap, - int32_t height, - int32_t width, - uint16_t bps, - uint16_t spp); - FX_BOOL Decode24bppRGB(CFX_DIBitmap* pDIBitmap, - int32_t height, - int32_t width, - uint16_t bps, - uint16_t spp); -}; -CCodec_TiffContext::CCodec_TiffContext() { - offset = 0; - frame_num = 0; - frame_cur = 0; - io.in = NULL; - tif_ctx = NULL; - icc_ctx = NULL; - isDecoder = TRUE; -} -CCodec_TiffContext::~CCodec_TiffContext() { - if (icc_ctx) { - IccLib_DestroyTransform(icc_ctx); - icc_ctx = NULL; - } - if (tif_ctx) { - TIFFClose(tif_ctx); - } -} -static tsize_t _tiff_read(thandle_t context, tdata_t buf, tsize_t length) { - CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; - FX_BOOL ret = FALSE; - if (pTiffContext->isDecoder) { - ret = pTiffContext->io.in->ReadBlock(buf, pTiffContext->offset, length); - } else { - ret = pTiffContext->io.out->ReadBlock(buf, pTiffContext->offset, length); - } - if (!ret) { - return 0; - } - pTiffContext->offset += (FX_DWORD)length; - return length; -} -static tsize_t _tiff_write(thandle_t context, tdata_t buf, tsize_t length) { - CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; - ASSERT(!pTiffContext->isDecoder); - if (!pTiffContext->io.out->WriteBlock(buf, pTiffContext->offset, length)) { - return 0; - } - pTiffContext->offset += (FX_DWORD)length; - return length; -} -static toff_t _tiff_seek(thandle_t context, toff_t offset, int whence) { - CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; - switch (whence) { - case 0: - pTiffContext->offset = (FX_DWORD)offset; - break; - case 1: - pTiffContext->offset += (FX_DWORD)offset; - break; - case 2: - if (pTiffContext->isDecoder) { - if (pTiffContext->io.in->GetSize() < (FX_FILESIZE)offset) { - return -1; - } - pTiffContext->offset = - (FX_DWORD)(pTiffContext->io.in->GetSize() - offset); - } else { - if (pTiffContext->io.out->GetSize() < (FX_FILESIZE)offset) { - return -1; - } - pTiffContext->offset = - (FX_DWORD)(pTiffContext->io.out->GetSize() - offset); - } - break; - default: - return -1; - } - ASSERT(pTiffContext->isDecoder ? (pTiffContext->offset <= - (FX_DWORD)pTiffContext->io.in->GetSize()) - : TRUE); - return pTiffContext->offset; -} -static int _tiff_close(thandle_t context) { - return 0; -} -static toff_t _tiff_get_size(thandle_t context) { - CCodec_TiffContext* pTiffContext = (CCodec_TiffContext*)context; - return pTiffContext->isDecoder ? (toff_t)pTiffContext->io.in->GetSize() - : (toff_t)pTiffContext->io.out->GetSize(); -} -static int _tiff_map(thandle_t context, tdata_t*, toff_t*) { - return 0; -} -static void _tiff_unmap(thandle_t context, tdata_t, toff_t) {} -TIFF* _tiff_open(void* context, const char* mode) { - TIFF* tif = TIFFClientOpen("Tiff Image", mode, (thandle_t)context, _tiff_read, - _tiff_write, _tiff_seek, _tiff_close, - _tiff_get_size, _tiff_map, _tiff_unmap); - if (tif) { - tif->tif_fd = (int)(intptr_t)context; - } - return tif; -} -void* _TIFFmalloc(tmsize_t size) { - return FXMEM_DefaultAlloc(size, 0); -} -void _TIFFfree(void* ptr) { - FXMEM_DefaultFree(ptr, 0); -} -void* _TIFFrealloc(void* ptr, tmsize_t size) { - return FXMEM_DefaultRealloc(ptr, size, 0); -} -void _TIFFmemset(void* ptr, int val, tmsize_t size) { - FXSYS_memset(ptr, val, (size_t)size); -} -void _TIFFmemcpy(void* des, const void* src, tmsize_t size) { - FXSYS_memcpy(des, src, (size_t)size); -} -int _TIFFmemcmp(const void* ptr1, const void* ptr2, tmsize_t size) { - return FXSYS_memcmp(ptr1, ptr2, (size_t)size); -} - -TIFFErrorHandler _TIFFwarningHandler = nullptr; -TIFFErrorHandler _TIFFerrorHandler = nullptr; - -int TIFFCmyk2Rgb(thandle_t context, - uint8 c, - uint8 m, - uint8 y, - uint8 k, - uint8* r, - uint8* g, - uint8* b) { - if (context == NULL) { - return 0; - } - CCodec_TiffContext* p = (CCodec_TiffContext*)context; - if (p->icc_ctx) { - unsigned char cmyk[4], bgr[3]; - cmyk[0] = c, cmyk[1] = m, cmyk[2] = y, cmyk[3] = k; - IccLib_TranslateImage(p->icc_ctx, bgr, cmyk, 1); - *r = bgr[2], *g = bgr[1], *b = bgr[0]; - } else { - AdobeCMYK_to_sRGB1(c, m, y, k, *r, *g, *b); - } - return 1; -} -FX_BOOL CCodec_TiffContext::InitDecoder(IFX_FileRead* file_ptr) { - io.in = file_ptr; - tif_ctx = _tiff_open(this, "r"); - if (tif_ctx == NULL) { - return FALSE; - } - return TRUE; -} -void CCodec_TiffContext::GetFrames(int32_t& frames) { - frames = frame_num = TIFFNumberOfDirectories(tif_ctx); -} -#define TIFF_EXIF_GETINFO(key, T, tag) \ - { \ - T val = (T)0; \ - TIFFGetField(tif_ctx, tag, &val); \ - if (val) { \ - (key) = FX_Alloc(uint8_t, sizeof(T)); \ - if ((key)) { \ - T* ptr = (T*)(key); \ - *ptr = val; \ - pExif->m_TagVal.SetAt(tag, (key)); \ - } \ - } \ - } \ - (key) = NULL; -#define TIFF_EXIF_GETSTRINGINFO(key, tag) \ - { \ - FX_DWORD size = 0; \ - uint8_t* buf = NULL; \ - TIFFGetField(tif_ctx, tag, &size, &buf); \ - if (size && buf) { \ - (key) = FX_Alloc(uint8_t, size); \ - if ((key)) { \ - FXSYS_memcpy((key), buf, size); \ - pExif->m_TagVal.SetAt(tag, (key)); \ - } \ - } \ - } \ - (key) = NULL; - -namespace { - -template -FX_BOOL Tiff_Exif_GetInfo(TIFF* tif_ctx, ttag_t tag, CFX_DIBAttribute* pAttr) { - T val = 0; - TIFFGetField(tif_ctx, tag, &val); - if (!val) - return FALSE; - T* ptr = FX_Alloc(T, 1); - *ptr = val; - pAttr->m_Exif[tag] = (void*)ptr; - return TRUE; -} -void Tiff_Exif_GetStringInfo(TIFF* tif_ctx, - ttag_t tag, - CFX_DIBAttribute* pAttr) { - FX_CHAR* buf = nullptr; - TIFFGetField(tif_ctx, tag, &buf); - if (!buf) - return; - FX_STRSIZE size = FXSYS_strlen(buf); - uint8_t* ptr = FX_Alloc(uint8_t, size + 1); - FXSYS_memcpy(ptr, buf, size); - ptr[size] = 0; - pAttr->m_Exif[tag] = ptr; -} - -} // namespace - -FX_BOOL CCodec_TiffContext::LoadFrameInfo(int32_t frame, - FX_DWORD& width, - FX_DWORD& height, - FX_DWORD& comps, - FX_DWORD& bpc, - CFX_DIBAttribute* pAttribute) { - if (!TIFFSetDirectory(tif_ctx, (uint16)frame)) { - return FALSE; - } - FX_WORD tif_cs; - FX_DWORD tif_icc_size = 0; - uint8_t* tif_icc_buf = NULL; - FX_WORD tif_bpc = 0; - FX_WORD tif_cps; - FX_DWORD tif_rps; - width = height = comps = 0; - TIFFGetField(tif_ctx, TIFFTAG_IMAGEWIDTH, &width); - TIFFGetField(tif_ctx, TIFFTAG_IMAGELENGTH, &height); - TIFFGetField(tif_ctx, TIFFTAG_SAMPLESPERPIXEL, &comps); - TIFFGetField(tif_ctx, TIFFTAG_BITSPERSAMPLE, &tif_bpc); - TIFFGetField(tif_ctx, TIFFTAG_PHOTOMETRIC, &tif_cs); - TIFFGetField(tif_ctx, TIFFTAG_COMPRESSION, &tif_cps); - TIFFGetField(tif_ctx, TIFFTAG_ROWSPERSTRIP, &tif_rps); - TIFFGetField(tif_ctx, TIFFTAG_ICCPROFILE, &tif_icc_size, &tif_icc_buf); - if (pAttribute) { - pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_INCH; - if (TIFFGetField(tif_ctx, TIFFTAG_RESOLUTIONUNIT, - &pAttribute->m_wDPIUnit)) { - pAttribute->m_wDPIUnit -= 1; - } - Tiff_Exif_GetInfo(tif_ctx, TIFFTAG_ORIENTATION, pAttribute); - if (Tiff_Exif_GetInfo(tif_ctx, TIFFTAG_XRESOLUTION, pAttribute)) { - void* val = pAttribute->m_Exif[TIFFTAG_XRESOLUTION]; - FX_FLOAT fDpi = val ? *reinterpret_cast(val) : 0; - pAttribute->m_nXDPI = (int32_t)(fDpi + 0.5f); - } - if (Tiff_Exif_GetInfo(tif_ctx, TIFFTAG_YRESOLUTION, pAttribute)) { - void* val = pAttribute->m_Exif[TIFFTAG_YRESOLUTION]; - FX_FLOAT fDpi = val ? *reinterpret_cast(val) : 0; - pAttribute->m_nYDPI = (int32_t)(fDpi + 0.5f); - } - Tiff_Exif_GetStringInfo(tif_ctx, TIFFTAG_IMAGEDESCRIPTION, pAttribute); - Tiff_Exif_GetStringInfo(tif_ctx, TIFFTAG_MAKE, pAttribute); - Tiff_Exif_GetStringInfo(tif_ctx, TIFFTAG_MODEL, pAttribute); - } - bpc = tif_bpc; - if (tif_rps > height) { - TIFFSetField(tif_ctx, TIFFTAG_ROWSPERSTRIP, tif_rps = height); - } - return TRUE; -} -void _TiffBGRA2RGBA(uint8_t* pBuf, int32_t pixel, int32_t spp) { - for (int32_t n = 0; n < pixel; n++) { - uint8_t tmp = pBuf[0]; - pBuf[0] = pBuf[2]; - pBuf[2] = tmp; - pBuf += spp; - } -} -FX_BOOL CCodec_TiffContext::isSupport(CFX_DIBitmap* pDIBitmap) { - if (TIFFIsTiled(tif_ctx)) { - return FALSE; - } - uint16_t photometric; - if (!TIFFGetField(tif_ctx, TIFFTAG_PHOTOMETRIC, &photometric)) { - return FALSE; - } - switch (pDIBitmap->GetBPP()) { - case 1: - case 8: - if (photometric != PHOTOMETRIC_PALETTE) { - return FALSE; - } - break; - case 24: - if (photometric != PHOTOMETRIC_RGB) { - return FALSE; - } - break; - default: - return FALSE; - } - uint16_t planarconfig; - if (!TIFFGetFieldDefaulted(tif_ctx, TIFFTAG_PLANARCONFIG, &planarconfig)) { - return FALSE; - } - if (planarconfig == PLANARCONFIG_SEPARATE) { - return FALSE; - } - return TRUE; -} -void CCodec_TiffContext::SetPalette(CFX_DIBitmap* pDIBitmap, uint16_t bps) { - uint16_t *red_orig, *green_orig, *blue_orig; - TIFFGetField(tif_ctx, TIFFTAG_COLORMAP, &red_orig, &green_orig, &blue_orig); - for (int32_t i = (1L << bps) - 1; i >= 0; i--) { -#define CVT(x) ((uint16_t)((x) >> 8)) - red_orig[i] = CVT(red_orig[i]); - green_orig[i] = CVT(green_orig[i]); - blue_orig[i] = CVT(blue_orig[i]); -#undef CVT - } - int32_t len = 1 << bps; - for (int32_t index = 0; index < len; index++) { - FX_DWORD r = red_orig[index] & 0xFF; - FX_DWORD g = green_orig[index] & 0xFF; - FX_DWORD b = blue_orig[index] & 0xFF; - FX_DWORD color = (uint32_t)b | ((uint32_t)g << 8) | ((uint32_t)r << 16) | - (((uint32)0xffL) << 24); - pDIBitmap->SetPaletteEntry(index, color); - } -} -FX_BOOL CCodec_TiffContext::Decode1bppRGB(CFX_DIBitmap* pDIBitmap, - int32_t height, - int32_t width, - uint16_t bps, - uint16_t spp) { - if (pDIBitmap->GetBPP() != 1 || spp != 1 || bps != 1 || - !isSupport(pDIBitmap)) { - return FALSE; - } - SetPalette(pDIBitmap, bps); - int32_t size = (int32_t)TIFFScanlineSize(tif_ctx); - uint8_t* buf = (uint8_t*)_TIFFmalloc(size); - if (buf == NULL) { - TIFFError(TIFFFileName(tif_ctx), "No space for scanline buffer"); - return FALSE; - } - uint8_t* bitMapbuffer = (uint8_t*)pDIBitmap->GetBuffer(); - FX_DWORD pitch = pDIBitmap->GetPitch(); - for (int32_t row = 0; row < height; row++) { - TIFFReadScanline(tif_ctx, buf, row, 0); - for (int32_t j = 0; j < size; j++) { - bitMapbuffer[row * pitch + j] = buf[j]; - } - } - _TIFFfree(buf); - return TRUE; -} -FX_BOOL CCodec_TiffContext::Decode8bppRGB(CFX_DIBitmap* pDIBitmap, - int32_t height, - int32_t width, - uint16_t bps, - uint16_t spp) { - if (pDIBitmap->GetBPP() != 8 || spp != 1 || (bps != 4 && bps != 8) || - !isSupport(pDIBitmap)) { - return FALSE; - } - SetPalette(pDIBitmap, bps); - int32_t size = (int32_t)TIFFScanlineSize(tif_ctx); - uint8_t* buf = (uint8_t*)_TIFFmalloc(size); - if (buf == NULL) { - TIFFError(TIFFFileName(tif_ctx), "No space for scanline buffer"); - return FALSE; - } - uint8_t* bitMapbuffer = (uint8_t*)pDIBitmap->GetBuffer(); - FX_DWORD pitch = pDIBitmap->GetPitch(); - for (int32_t row = 0; row < height; row++) { - TIFFReadScanline(tif_ctx, buf, row, 0); - for (int32_t j = 0; j < size; j++) { - switch (bps) { - case 4: - bitMapbuffer[row * pitch + 2 * j + 0] = (buf[j] & 0xF0) >> 4; - bitMapbuffer[row * pitch + 2 * j + 1] = (buf[j] & 0x0F) >> 0; - break; - case 8: - bitMapbuffer[row * pitch + j] = buf[j]; - break; - } - } - } - _TIFFfree(buf); - return TRUE; -} -FX_BOOL CCodec_TiffContext::Decode24bppRGB(CFX_DIBitmap* pDIBitmap, - int32_t height, - int32_t width, - uint16_t bps, - uint16_t spp) { - if (pDIBitmap->GetBPP() != 24 || !isSupport(pDIBitmap)) { - return FALSE; - } - int32_t size = (int32_t)TIFFScanlineSize(tif_ctx); - uint8_t* buf = (uint8_t*)_TIFFmalloc(size); - if (buf == NULL) { - TIFFError(TIFFFileName(tif_ctx), "No space for scanline buffer"); - return FALSE; - } - uint8_t* bitMapbuffer = (uint8_t*)pDIBitmap->GetBuffer(); - FX_DWORD pitch = pDIBitmap->GetPitch(); - for (int32_t row = 0; row < height; row++) { - TIFFReadScanline(tif_ctx, buf, row, 0); - for (int32_t j = 0; j < size - 2; j += 3) { - bitMapbuffer[row * pitch + j + 0] = buf[j + 2]; - bitMapbuffer[row * pitch + j + 1] = buf[j + 1]; - bitMapbuffer[row * pitch + j + 2] = buf[j + 0]; - } - } - _TIFFfree(buf); - return TRUE; -} -FX_BOOL CCodec_TiffContext::Decode(CFX_DIBitmap* pDIBitmap) { - FX_DWORD img_wid = pDIBitmap->GetWidth(); - FX_DWORD img_hei = pDIBitmap->GetHeight(); - FX_DWORD width = 0; - FX_DWORD height = 0; - TIFFGetField(tif_ctx, TIFFTAG_IMAGEWIDTH, &width); - TIFFGetField(tif_ctx, TIFFTAG_IMAGELENGTH, &height); - if (img_wid != width || img_hei != height) { - return FALSE; - } - if (pDIBitmap->GetBPP() == 32) { - FX_WORD rotation = ORIENTATION_TOPLEFT; - TIFFGetField(tif_ctx, TIFFTAG_ORIENTATION, &rotation); - if (TIFFReadRGBAImageOriented(tif_ctx, img_wid, img_hei, - (uint32*)pDIBitmap->GetBuffer(), rotation, - 1)) { - for (FX_DWORD row = 0; row < img_hei; row++) { - uint8_t* row_buf = (uint8_t*)pDIBitmap->GetScanline(row); - _TiffBGRA2RGBA(row_buf, img_wid, 4); - } - return TRUE; - } - } - uint16_t spp, bps; - TIFFGetField(tif_ctx, TIFFTAG_SAMPLESPERPIXEL, &spp); - TIFFGetField(tif_ctx, TIFFTAG_BITSPERSAMPLE, &bps); - FX_DWORD bpp = bps * spp; - if (bpp == 1) { - return Decode1bppRGB(pDIBitmap, height, width, bps, spp); - } else if (bpp <= 8) { - return Decode8bppRGB(pDIBitmap, height, width, bps, spp); - } else if (bpp <= 24) { - return Decode24bppRGB(pDIBitmap, height, width, bps, spp); - } - return FALSE; -} -void* CCodec_TiffModule::CreateDecoder(IFX_FileRead* file_ptr) { - CCodec_TiffContext* pDecoder = new CCodec_TiffContext; - if (!pDecoder->InitDecoder(file_ptr)) { - delete pDecoder; - return NULL; - } - return pDecoder; -} -void CCodec_TiffModule::GetFrames(void* ctx, int32_t& frames) { - CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; - pDecoder->GetFrames(frames); -} -FX_BOOL CCodec_TiffModule::LoadFrameInfo(void* ctx, - int32_t frame, - FX_DWORD& width, - FX_DWORD& height, - FX_DWORD& comps, - FX_DWORD& bpc, - CFX_DIBAttribute* pAttribute) { - CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; - return pDecoder->LoadFrameInfo(frame, width, height, comps, bpc, pAttribute); -} -FX_BOOL CCodec_TiffModule::Decode(void* ctx, class CFX_DIBitmap* pDIBitmap) { - CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; - return pDecoder->Decode(pDIBitmap); -} -void CCodec_TiffModule::DestroyDecoder(void* ctx) { - CCodec_TiffContext* pDecoder = (CCodec_TiffContext*)ctx; - delete pDecoder; -} diff --git a/core/src/fxcodec/jbig2/JBig2_ArithDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_ArithDecoder.cpp deleted file mode 100644 index 9e32304f41..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_ArithDecoder.cpp +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" - -namespace { - -struct JBig2ArithQe { - unsigned int Qe; - unsigned int NMPS; - unsigned int NLPS; - unsigned int nSwitch; -}; - -const JBig2ArithQe kQeTable[] = { - // Stupid hack to keep clang-format from reformatting this badly. - {0x5601, 1, 1, 1}, - {0x3401, 2, 6, 0}, - {0x1801, 3, 9, 0}, - {0x0AC1, 4, 12, 0}, - {0x0521, 5, 29, 0}, - {0x0221, 38, 33, 0}, - {0x5601, 7, 6, 1}, - {0x5401, 8, 14, 0}, - {0x4801, 9, 14, 0}, - {0x3801, 10, 14, 0}, - {0x3001, 11, 17, 0}, - {0x2401, 12, 18, 0}, - {0x1C01, 13, 20, 0}, - {0x1601, 29, 21, 0}, - {0x5601, 15, 14, 1}, - {0x5401, 16, 14, 0}, - {0x5101, 17, 15, 0}, - {0x4801, 18, 16, 0}, - {0x3801, 19, 17, 0}, - {0x3401, 20, 18, 0}, - {0x3001, 21, 19, 0}, - {0x2801, 22, 19, 0}, - {0x2401, 23, 20, 0}, - {0x2201, 24, 21, 0}, - {0x1C01, 25, 22, 0}, - {0x1801, 26, 23, 0}, - {0x1601, 27, 24, 0}, - {0x1401, 28, 25, 0}, - {0x1201, 29, 26, 0}, - {0x1101, 30, 27, 0}, - {0x0AC1, 31, 28, 0}, - {0x09C1, 32, 29, 0}, - {0x08A1, 33, 30, 0}, - {0x0521, 34, 31, 0}, - {0x0441, 35, 32, 0}, - {0x02A1, 36, 33, 0}, - {0x0221, 37, 34, 0}, - {0x0141, 38, 35, 0}, - {0x0111, 39, 36, 0}, - {0x0085, 40, 37, 0}, - {0x0049, 41, 38, 0}, - {0x0025, 42, 39, 0}, - {0x0015, 43, 40, 0}, - {0x0009, 44, 41, 0}, - {0x0005, 45, 42, 0}, - {0x0001, 45, 43, 0}, - {0x5601, 46, 46, 0}}; - -const unsigned int kDefaultAValue = 0x8000; - -int DecodeNMPS(JBig2ArithCtx* pCX, const JBig2ArithQe& qe) { - pCX->I = qe.NMPS; - return pCX->MPS; -} - -int DecodeNLPS(JBig2ArithCtx* pCX, const JBig2ArithQe& qe) { - // TODO(thestig): |D|, |MPS| and friends probably should be booleans. - int D = 1 - pCX->MPS; - if (qe.nSwitch == 1) - pCX->MPS = 1 - pCX->MPS; - pCX->I = qe.NLPS; - return D; -} - -} // namespace - -CJBig2_ArithDecoder::CJBig2_ArithDecoder(CJBig2_BitStream* pStream) - : m_pStream(pStream) { - m_B = m_pStream->getCurByte_arith(); - m_C = (m_B ^ 0xff) << 16; - BYTEIN(); - m_C = m_C << 7; - m_CT = m_CT - 7; - m_A = kDefaultAValue; -} - -CJBig2_ArithDecoder::~CJBig2_ArithDecoder() { -} - -int CJBig2_ArithDecoder::DECODE(JBig2ArithCtx* pCX) { - if (!pCX || pCX->I >= FX_ArraySize(kQeTable)) - return 0; - - const JBig2ArithQe& qe = kQeTable[pCX->I]; - m_A -= qe.Qe; - if ((m_C >> 16) < m_A) { - if (m_A & kDefaultAValue) - return pCX->MPS; - - const int D = m_A < qe.Qe ? DecodeNLPS(pCX, qe) : DecodeNMPS(pCX, qe); - ReadValueA(); - return D; - } - - m_C -= m_A << 16; - const int D = m_A < qe.Qe ? DecodeNMPS(pCX, qe) : DecodeNLPS(pCX, qe); - m_A = qe.Qe; - ReadValueA(); - return D; -} - -void CJBig2_ArithDecoder::BYTEIN() { - unsigned char B1; - if (m_B == 0xff) { - B1 = m_pStream->getNextByte_arith(); - if (B1 > 0x8f) { - m_CT = 8; - } else { - m_pStream->incByteIdx(); - m_B = B1; - m_C = m_C + 0xfe00 - (m_B << 9); - m_CT = 7; - } - } else { - m_pStream->incByteIdx(); - m_B = m_pStream->getCurByte_arith(); - m_C = m_C + 0xff00 - (m_B << 8); - m_CT = 8; - } -} - -void CJBig2_ArithDecoder::ReadValueA() { - do { - if (m_CT == 0) - BYTEIN(); - m_A <<= 1; - m_C <<= 1; - --m_CT; - } while ((m_A & kDefaultAValue) == 0); -} diff --git a/core/src/fxcodec/jbig2/JBig2_ArithDecoder.h b/core/src/fxcodec/jbig2/JBig2_ArithDecoder.h deleted file mode 100644 index 3cb95acd95..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_ArithDecoder.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_ - -class CJBig2_BitStream; - -struct JBig2ArithCtx { - JBig2ArithCtx() : MPS(0), I(0) {} - - unsigned int MPS; - unsigned int I; -}; - -class CJBig2_ArithDecoder { - public: - explicit CJBig2_ArithDecoder(CJBig2_BitStream* pStream); - - ~CJBig2_ArithDecoder(); - - int DECODE(JBig2ArithCtx* pCX); - - private: - void BYTEIN(); - void ReadValueA(); - - unsigned char m_B; - unsigned int m_C; - unsigned int m_A; - unsigned int m_CT; - CJBig2_BitStream* const m_pStream; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHDECODER_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp deleted file mode 100644 index 2fac8df5a9..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h" - -#include - -#include "core/include/fxcrt/fx_basic.h" - -namespace { - -int ShiftOr(int val, int bitwise_or_val) { - return (val << 1) | bitwise_or_val; -} - -const struct ArithIntDecodeData { - int nNeedBits; - int nValue; -} g_ArithIntDecodeData[] = { - {2, 0}, - {4, 4}, - {6, 20}, - {8, 84}, - {12, 340}, - {32, 4436}, -}; - -size_t RecursiveDecode(CJBig2_ArithDecoder* decoder, - std::vector* context, - int* prev, - size_t depth) { - static const size_t kDepthEnd = FX_ArraySize(g_ArithIntDecodeData) - 1; - if (depth == kDepthEnd) - return kDepthEnd; - - JBig2ArithCtx* pCX = &(*context)[*prev]; - int D = decoder->DECODE(pCX); - *prev = ShiftOr(*prev, D); - if (!D) - return depth; - return RecursiveDecode(decoder, context, prev, depth + 1); -} - -} // namespace - -CJBig2_ArithIntDecoder::CJBig2_ArithIntDecoder() { - m_IAx.resize(512); -} - -CJBig2_ArithIntDecoder::~CJBig2_ArithIntDecoder() { -} - -bool CJBig2_ArithIntDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, - int* nResult) { - int PREV = 1; - const int S = pArithDecoder->DECODE(&m_IAx[PREV]); - PREV = ShiftOr(PREV, S); - - const size_t nDecodeDataIndex = - RecursiveDecode(pArithDecoder, &m_IAx, &PREV, 0); - - int nTemp = 0; - for (int i = 0; i < g_ArithIntDecodeData[nDecodeDataIndex].nNeedBits; ++i) { - int D = pArithDecoder->DECODE(&m_IAx[PREV]); - PREV = ShiftOr(PREV, D); - if (PREV >= 256) - PREV = (PREV & 511) | 256; - nTemp = ShiftOr(nTemp, D); - } - int nValue = g_ArithIntDecodeData[nDecodeDataIndex].nValue; - nValue += nTemp; - if (S == 1 && nValue > 0) - nValue = -nValue; - - *nResult = nValue; - return S != 1 || nValue != 0; -} - -CJBig2_ArithIaidDecoder::CJBig2_ArithIaidDecoder(unsigned char SBSYMCODELENA) - : SBSYMCODELEN(SBSYMCODELENA) { - m_IAID.resize(1 << SBSYMCODELEN); -} - -CJBig2_ArithIaidDecoder::~CJBig2_ArithIaidDecoder() { -} - -void CJBig2_ArithIaidDecoder::decode(CJBig2_ArithDecoder* pArithDecoder, - FX_DWORD* nResult) { - int PREV = 1; - for (unsigned char i = 0; i < SBSYMCODELEN; ++i) { - JBig2ArithCtx* pCX = &m_IAID[PREV]; - int D = pArithDecoder->DECODE(pCX); - PREV = ShiftOr(PREV, D); - } - *nResult = PREV - (1 << SBSYMCODELEN); -} diff --git a/core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h b/core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h deleted file mode 100644 index 4909ce48f8..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHINTDECODER_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHINTDECODER_H_ - -#include - -#include "core/include/fxcrt/fx_system.h" -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" - -class CJBig2_ArithIntDecoder { - public: - CJBig2_ArithIntDecoder(); - ~CJBig2_ArithIntDecoder(); - - // Returns true on success, and false when an OOB condition occurs. Many - // callers can tolerate OOB and do not check the return value. - bool decode(CJBig2_ArithDecoder* pArithDecoder, int* nResult); - - private: - std::vector m_IAx; -}; - -class CJBig2_ArithIaidDecoder { - public: - explicit CJBig2_ArithIaidDecoder(unsigned char SBSYMCODELENA); - ~CJBig2_ArithIaidDecoder(); - - void decode(CJBig2_ArithDecoder* pArithDecoder, FX_DWORD* nResult); - - private: - std::vector m_IAID; - - const unsigned char SBSYMCODELEN; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_ARITHINTDECODER_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_BitStream.cpp b/core/src/fxcodec/jbig2/JBig2_BitStream.cpp deleted file mode 100644 index 1fe7a26aa8..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_BitStream.cpp +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" - -#include - -#include "core/include/fpdfapi/cpdf_stream.h" - -CJBig2_BitStream::CJBig2_BitStream(CPDF_StreamAcc* pSrcStream) - : m_pBuf(pSrcStream->GetData()), - m_dwLength(pSrcStream->GetSize()), - m_dwByteIdx(0), - m_dwBitIdx(0), - m_dwObjNum(pSrcStream->GetStream() ? pSrcStream->GetStream()->GetObjNum() - : 0) { - if (m_dwLength > 256 * 1024 * 1024) { - m_dwLength = 0; - m_pBuf = nullptr; - } -} - -CJBig2_BitStream::~CJBig2_BitStream() { -} - -int32_t CJBig2_BitStream::readNBits(FX_DWORD dwBits, FX_DWORD* dwResult) { - FX_DWORD dwBitPos = getBitPos(); - if (dwBitPos > LengthInBits()) - return -1; - - *dwResult = 0; - if (dwBitPos + dwBits <= LengthInBits()) - dwBitPos = dwBits; - else - dwBitPos = LengthInBits() - dwBitPos; - - for (; dwBitPos > 0; --dwBitPos) { - *dwResult = - (*dwResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01); - AdvanceBit(); - } - return 0; -} - -int32_t CJBig2_BitStream::readNBits(FX_DWORD dwBits, int32_t* nResult) { - FX_DWORD dwBitPos = getBitPos(); - if (dwBitPos > LengthInBits()) - return -1; - - *nResult = 0; - if (dwBitPos + dwBits <= LengthInBits()) - dwBitPos = dwBits; - else - dwBitPos = LengthInBits() - dwBitPos; - - for (; dwBitPos > 0; --dwBitPos) { - *nResult = - (*nResult << 1) | ((m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01); - AdvanceBit(); - } - return 0; -} - -int32_t CJBig2_BitStream::read1Bit(FX_DWORD* dwResult) { - if (!IsInBound()) - return -1; - - *dwResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01; - AdvanceBit(); - return 0; -} - -int32_t CJBig2_BitStream::read1Bit(FX_BOOL* bResult) { - if (!IsInBound()) - return -1; - - *bResult = (m_pBuf[m_dwByteIdx] >> (7 - m_dwBitIdx)) & 0x01; - AdvanceBit(); - return 0; -} - -int32_t CJBig2_BitStream::read1Byte(uint8_t* cResult) { - if (!IsInBound()) - return -1; - - *cResult = m_pBuf[m_dwByteIdx]; - ++m_dwByteIdx; - return 0; -} - -int32_t CJBig2_BitStream::readInteger(FX_DWORD* dwResult) { - if (m_dwByteIdx + 3 >= m_dwLength) - return -1; - - *dwResult = (m_pBuf[m_dwByteIdx] << 24) | (m_pBuf[m_dwByteIdx + 1] << 16) | - (m_pBuf[m_dwByteIdx + 2] << 8) | m_pBuf[m_dwByteIdx + 3]; - m_dwByteIdx += 4; - return 0; -} - -int32_t CJBig2_BitStream::readShortInteger(FX_WORD* dwResult) { - if (m_dwByteIdx + 1 >= m_dwLength) - return -1; - - *dwResult = (m_pBuf[m_dwByteIdx] << 8) | m_pBuf[m_dwByteIdx + 1]; - m_dwByteIdx += 2; - return 0; -} - -void CJBig2_BitStream::alignByte() { - if (m_dwBitIdx != 0) { - ++m_dwByteIdx; - m_dwBitIdx = 0; - } -} - -uint8_t CJBig2_BitStream::getCurByte() const { - return IsInBound() ? m_pBuf[m_dwByteIdx] : 0; -} - -void CJBig2_BitStream::incByteIdx() { - if (IsInBound()) - ++m_dwByteIdx; -} - -uint8_t CJBig2_BitStream::getCurByte_arith() const { - return IsInBound() ? m_pBuf[m_dwByteIdx] : 0xFF; -} - -uint8_t CJBig2_BitStream::getNextByte_arith() const { - return m_dwByteIdx + 1 < m_dwLength ? m_pBuf[m_dwByteIdx + 1] : 0xFF; -} - -FX_DWORD CJBig2_BitStream::getOffset() const { - return m_dwByteIdx; -} - -void CJBig2_BitStream::setOffset(FX_DWORD dwOffset) { - m_dwByteIdx = std::min(dwOffset, m_dwLength); -} - -FX_DWORD CJBig2_BitStream::getBitPos() const { - return (m_dwByteIdx << 3) + m_dwBitIdx; -} - -void CJBig2_BitStream::setBitPos(FX_DWORD dwBitPos) { - m_dwByteIdx = dwBitPos >> 3; - m_dwBitIdx = dwBitPos & 7; -} - -const uint8_t* CJBig2_BitStream::getBuf() const { - return m_pBuf; -} - -const uint8_t* CJBig2_BitStream::getPointer() const { - return m_pBuf + m_dwByteIdx; -} - -void CJBig2_BitStream::offset(FX_DWORD dwOffset) { - m_dwByteIdx += dwOffset; -} - -FX_DWORD CJBig2_BitStream::getByteLeft() const { - return m_dwLength - m_dwByteIdx; -} - -void CJBig2_BitStream::AdvanceBit() { - if (m_dwBitIdx == 7) { - ++m_dwByteIdx; - m_dwBitIdx = 0; - } else { - ++m_dwBitIdx; - } -} - -bool CJBig2_BitStream::IsInBound() const { - return m_dwByteIdx < m_dwLength; -} - -FX_DWORD CJBig2_BitStream::LengthInBits() const { - return m_dwLength << 3; -} - -FX_DWORD CJBig2_BitStream::getObjNum() const { - return m_dwObjNum; -} diff --git a/core/src/fxcodec/jbig2/JBig2_BitStream.h b/core/src/fxcodec/jbig2/JBig2_BitStream.h deleted file mode 100644 index fc9aa8a5c4..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_BitStream.h +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_ - -#include "core/include/fxcrt/fx_basic.h" - -class CPDF_StreamAcc; - -class CJBig2_BitStream { - public: - explicit CJBig2_BitStream(CPDF_StreamAcc* pSrcStream); - ~CJBig2_BitStream(); - - // TODO(thestig): readFoo() should return bool. - int32_t readNBits(FX_DWORD nBits, FX_DWORD* dwResult); - int32_t readNBits(FX_DWORD nBits, int32_t* nResult); - int32_t read1Bit(FX_DWORD* dwResult); - int32_t read1Bit(FX_BOOL* bResult); - int32_t read1Byte(uint8_t* cResult); - int32_t readInteger(FX_DWORD* dwResult); - int32_t readShortInteger(FX_WORD* wResult); - void alignByte(); - uint8_t getCurByte() const; - void incByteIdx(); - uint8_t getCurByte_arith() const; - uint8_t getNextByte_arith() const; - FX_DWORD getOffset() const; - void setOffset(FX_DWORD dwOffset); - FX_DWORD getBitPos() const; - void setBitPos(FX_DWORD dwBitPos); - const uint8_t* getBuf() const; - FX_DWORD getLength() const { return m_dwLength; } - const uint8_t* getPointer() const; - void offset(FX_DWORD dwOffset); - FX_DWORD getByteLeft() const; - FX_DWORD getObjNum() const; - - private: - void AdvanceBit(); - bool IsInBound() const; - FX_DWORD LengthInBits() const; - - const uint8_t* m_pBuf; - FX_DWORD m_dwLength; - FX_DWORD m_dwByteIdx; - FX_DWORD m_dwBitIdx; - const FX_DWORD m_dwObjNum; - - CJBig2_BitStream(const CJBig2_BitStream&) = delete; - void operator=(const CJBig2_BitStream&) = delete; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_BITSTREAM_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_Context.cpp b/core/src/fxcodec/jbig2/JBig2_Context.cpp deleted file mode 100644 index 9279971b46..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Context.cpp +++ /dev/null @@ -1,1439 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_Context.h" - -#include -#include -#include -#include - -#include "core/include/fpdfapi/cpdf_stream.h" -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" -#include "core/src/fxcodec/jbig2/JBig2_GrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_GrrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_HtrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h" -#include "core/src/fxcodec/jbig2/JBig2_PddProc.h" -#include "core/src/fxcodec/jbig2/JBig2_SddProc.h" -#include "core/src/fxcodec/jbig2/JBig2_TrdProc.h" -#include "third_party/base/stl_util.h" - -namespace { - -size_t GetHuffContextSize(uint8_t val) { - return val == 0 ? 65536 : val == 1 ? 8192 : 1024; -} - -size_t GetRefAggContextSize(FX_BOOL val) { - return val ? 1024 : 8192; -} - -} // namespace - -// Implement a very small least recently used (LRU) cache. It is very -// common for a JBIG2 dictionary to span multiple pages in a PDF file, -// and we do not want to decode the same dictionary over and over -// again. We key off of the memory location of the dictionary. The -// list keeps track of the freshness of entries, with freshest ones -// at the front. Even a tiny cache size like 2 makes a dramatic -// difference for typical JBIG2 documents. -static const int kSymbolDictCacheMaxSize = 2; - -CJBig2_Context* CJBig2_Context::CreateContext( - CPDF_StreamAcc* pGlobalStream, - CPDF_StreamAcc* pSrcStream, - std::list* pSymbolDictCache, - IFX_Pause* pPause) { - return new CJBig2_Context(pGlobalStream, pSrcStream, pSymbolDictCache, pPause, - false); -} - -void CJBig2_Context::DestroyContext(CJBig2_Context* pContext) { - delete pContext; -} - -CJBig2_Context::CJBig2_Context(CPDF_StreamAcc* pGlobalStream, - CPDF_StreamAcc* pSrcStream, - std::list* pSymbolDictCache, - IFX_Pause* pPause, - bool bIsGlobal) - : m_nSegmentDecoded(0), - m_bInPage(false), - m_bBufSpecified(false), - m_PauseStep(10), - m_pPause(pPause), - m_ProcessingStatus(FXCODEC_STATUS_FRAME_READY), - m_gbContext(NULL), - m_dwOffset(0), - m_pSymbolDictCache(pSymbolDictCache), - m_bIsGlobal(bIsGlobal) { - if (pGlobalStream && (pGlobalStream->GetSize() > 0)) { - m_pGlobalContext = new CJBig2_Context(nullptr, pGlobalStream, - pSymbolDictCache, pPause, true); - } else { - m_pGlobalContext = nullptr; - } - - m_pStream.reset(new CJBig2_BitStream(pSrcStream)); -} - -CJBig2_Context::~CJBig2_Context() { - FX_Free(m_gbContext); - m_gbContext = NULL; - delete m_pGlobalContext; - m_pGlobalContext = NULL; -} - -int32_t CJBig2_Context::decode_SquentialOrgnazation(IFX_Pause* pPause) { - int32_t nRet; - if (m_pStream->getByteLeft() <= 0) - return JBIG2_END_OF_FILE; - - while (m_pStream->getByteLeft() >= JBIG2_MIN_SEGMENT_SIZE) { - if (!m_pSegment) { - m_pSegment.reset(new CJBig2_Segment); - nRet = parseSegmentHeader(m_pSegment.get()); - if (nRet != JBIG2_SUCCESS) { - m_pSegment.reset(); - return nRet; - } - m_dwOffset = m_pStream->getOffset(); - } - nRet = parseSegmentData(m_pSegment.get(), pPause); - if (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - m_PauseStep = 2; - return JBIG2_SUCCESS; - } - if (nRet == JBIG2_END_OF_PAGE || nRet == JBIG2_END_OF_FILE) { - m_pSegment.reset(); - return JBIG2_SUCCESS; - } - if (nRet != JBIG2_SUCCESS) { - m_pSegment.reset(); - return nRet; - } - if (m_pSegment->m_dwData_length != 0xffffffff) { - m_dwOffset += m_pSegment->m_dwData_length; - m_pStream->setOffset(m_dwOffset); - } else { - m_pStream->offset(4); - } - m_SegmentList.push_back(m_pSegment.release()); - if (m_pStream->getByteLeft() > 0 && m_pPage && pPause && - pPause->NeedToPauseNow()) { - m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - m_PauseStep = 2; - return JBIG2_SUCCESS; - } - } - return JBIG2_SUCCESS; -} -int32_t CJBig2_Context::decode_EmbedOrgnazation(IFX_Pause* pPause) { - return decode_SquentialOrgnazation(pPause); -} -int32_t CJBig2_Context::decode_RandomOrgnazation_FirstPage(IFX_Pause* pPause) { - int32_t nRet; - while (m_pStream->getByteLeft() > JBIG2_MIN_SEGMENT_SIZE) { - std::unique_ptr pSegment(new CJBig2_Segment); - nRet = parseSegmentHeader(pSegment.get()); - if (nRet != JBIG2_SUCCESS) { - return nRet; - } else if (pSegment->m_cFlags.s.type == 51) { - break; - } - m_SegmentList.push_back(pSegment.release()); - if (pPause && m_pPause && pPause->NeedToPauseNow()) { - m_PauseStep = 3; - m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return JBIG2_SUCCESS; - } - } - m_nSegmentDecoded = 0; - return decode_RandomOrgnazation(pPause); -} -int32_t CJBig2_Context::decode_RandomOrgnazation(IFX_Pause* pPause) { - for (; m_nSegmentDecoded < m_SegmentList.size(); ++m_nSegmentDecoded) { - int32_t nRet = - parseSegmentData(m_SegmentList.get(m_nSegmentDecoded), pPause); - if (nRet == JBIG2_END_OF_PAGE || nRet == JBIG2_END_OF_FILE) - return JBIG2_SUCCESS; - - if (nRet != JBIG2_SUCCESS) - return nRet; - - if (m_pPage && pPause && pPause->NeedToPauseNow()) { - m_PauseStep = 4; - m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return JBIG2_SUCCESS; - } - } - return JBIG2_SUCCESS; -} -int32_t CJBig2_Context::getFirstPage(uint8_t* pBuf, - int32_t width, - int32_t height, - int32_t stride, - IFX_Pause* pPause) { - int32_t nRet = 0; - if (m_pGlobalContext) { - nRet = m_pGlobalContext->decode_EmbedOrgnazation(pPause); - if (nRet != JBIG2_SUCCESS) { - m_ProcessingStatus = FXCODEC_STATUS_ERROR; - return nRet; - } - } - m_PauseStep = 0; - m_pPage.reset(new CJBig2_Image(width, height, stride, pBuf)); - m_bBufSpecified = true; - if (pPause && pPause->NeedToPauseNow()) { - m_PauseStep = 1; - m_ProcessingStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return nRet; - } - return Continue(pPause); -} -int32_t CJBig2_Context::Continue(IFX_Pause* pPause) { - m_ProcessingStatus = FXCODEC_STATUS_DECODE_READY; - int32_t nRet; - if (m_PauseStep <= 1) { - nRet = decode_EmbedOrgnazation(pPause); - } else if (m_PauseStep == 2) { - nRet = decode_SquentialOrgnazation(pPause); - } else if (m_PauseStep == 3) { - nRet = decode_RandomOrgnazation_FirstPage(pPause); - } else if (m_PauseStep == 4) { - nRet = decode_RandomOrgnazation(pPause); - } else if (m_PauseStep == 5) { - m_ProcessingStatus = FXCODEC_STATUS_DECODE_FINISH; - return JBIG2_SUCCESS; - } - if (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - return nRet; - } - m_PauseStep = 5; - if (!m_bBufSpecified && nRet == JBIG2_SUCCESS) { - m_ProcessingStatus = FXCODEC_STATUS_DECODE_FINISH; - return JBIG2_SUCCESS; - } - if (nRet == JBIG2_SUCCESS) { - m_ProcessingStatus = FXCODEC_STATUS_DECODE_FINISH; - } else { - m_ProcessingStatus = FXCODEC_STATUS_ERROR; - } - return nRet; -} - -CJBig2_Segment* CJBig2_Context::findSegmentByNumber(FX_DWORD dwNumber) { - if (m_pGlobalContext) { - CJBig2_Segment* pSeg = m_pGlobalContext->findSegmentByNumber(dwNumber); - if (pSeg) { - return pSeg; - } - } - for (size_t i = 0; i < m_SegmentList.size(); ++i) { - CJBig2_Segment* pSeg = m_SegmentList.get(i); - if (pSeg->m_dwNumber == dwNumber) { - return pSeg; - } - } - return nullptr; -} -CJBig2_Segment* CJBig2_Context::findReferredSegmentByTypeAndIndex( - CJBig2_Segment* pSegment, - uint8_t cType, - int32_t nIndex) { - int32_t count = 0; - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - CJBig2_Segment* pSeg = - findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); - if (pSeg && pSeg->m_cFlags.s.type == cType) { - if (count == nIndex) - return pSeg; - ++count; - } - } - return NULL; -} -int32_t CJBig2_Context::parseSegmentHeader(CJBig2_Segment* pSegment) { - if (m_pStream->readInteger(&pSegment->m_dwNumber) != 0 || - m_pStream->read1Byte(&pSegment->m_cFlags.c) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - - FX_DWORD dwTemp; - uint8_t cTemp = m_pStream->getCurByte(); - if ((cTemp >> 5) == 7) { - if (m_pStream->readInteger( - (FX_DWORD*)&pSegment->m_nReferred_to_segment_count) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - pSegment->m_nReferred_to_segment_count &= 0x1fffffff; - if (pSegment->m_nReferred_to_segment_count > - JBIG2_MAX_REFERRED_SEGMENT_COUNT) { - return JBIG2_ERROR_LIMIT; - } - dwTemp = 5 + 4 + (pSegment->m_nReferred_to_segment_count + 1) / 8; - } else { - if (m_pStream->read1Byte(&cTemp) != 0) - return JBIG2_ERROR_TOO_SHORT; - - pSegment->m_nReferred_to_segment_count = cTemp >> 5; - dwTemp = 5 + 1; - } - uint8_t cSSize = - pSegment->m_dwNumber > 65536 ? 4 : pSegment->m_dwNumber > 256 ? 2 : 1; - uint8_t cPSize = pSegment->m_cFlags.s.page_association_size ? 4 : 1; - if (pSegment->m_nReferred_to_segment_count) { - pSegment->m_pReferred_to_segment_numbers = - FX_Alloc(FX_DWORD, pSegment->m_nReferred_to_segment_count); - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - switch (cSSize) { - case 1: - if (m_pStream->read1Byte(&cTemp) != 0) - return JBIG2_ERROR_TOO_SHORT; - - pSegment->m_pReferred_to_segment_numbers[i] = cTemp; - break; - case 2: - FX_WORD wTemp; - if (m_pStream->readShortInteger(&wTemp) != 0) - return JBIG2_ERROR_TOO_SHORT; - - pSegment->m_pReferred_to_segment_numbers[i] = wTemp; - break; - case 4: - if (m_pStream->readInteger(&dwTemp) != 0) - return JBIG2_ERROR_TOO_SHORT; - - pSegment->m_pReferred_to_segment_numbers[i] = dwTemp; - break; - } - if (pSegment->m_pReferred_to_segment_numbers[i] >= pSegment->m_dwNumber) - return JBIG2_ERROR_TOO_SHORT; - } - } - if (cPSize == 1) { - if (m_pStream->read1Byte(&cTemp) != 0) - return JBIG2_ERROR_TOO_SHORT; - pSegment->m_dwPage_association = cTemp; - } else { - if (m_pStream->readInteger(&pSegment->m_dwPage_association) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - } - if (m_pStream->readInteger(&pSegment->m_dwData_length) != 0) - return JBIG2_ERROR_TOO_SHORT; - - pSegment->m_dwObjNum = m_pStream->getObjNum(); - pSegment->m_dwDataOffset = m_pStream->getOffset(); - pSegment->m_State = JBIG2_SEGMENT_DATA_UNPARSED; - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseSegmentData(CJBig2_Segment* pSegment, - IFX_Pause* pPause) { - int32_t ret = ProcessingParseSegmentData(pSegment, pPause); - while (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE && - m_pStream->getByteLeft() > 0) { - ret = ProcessingParseSegmentData(pSegment, pPause); - } - return ret; -} - -int32_t CJBig2_Context::ProcessingParseSegmentData(CJBig2_Segment* pSegment, - IFX_Pause* pPause) { - switch (pSegment->m_cFlags.s.type) { - case 0: - return parseSymbolDict(pSegment, pPause); - case 4: - case 6: - case 7: - if (!m_bInPage) - return JBIG2_ERROR_FATAL; - return parseTextRegion(pSegment); - case 16: - return parsePatternDict(pSegment, pPause); - case 20: - case 22: - case 23: - if (!m_bInPage) - return JBIG2_ERROR_FATAL; - return parseHalftoneRegion(pSegment, pPause); - case 36: - case 38: - case 39: - if (!m_bInPage) - return JBIG2_ERROR_FATAL; - return parseGenericRegion(pSegment, pPause); - case 40: - case 42: - case 43: - if (!m_bInPage) - return JBIG2_ERROR_FATAL; - return parseGenericRefinementRegion(pSegment); - case 48: { - FX_WORD wTemp; - std::unique_ptr pPageInfo(new JBig2PageInfo); - if (m_pStream->readInteger(&pPageInfo->m_dwWidth) != 0 || - m_pStream->readInteger(&pPageInfo->m_dwHeight) != 0 || - m_pStream->readInteger(&pPageInfo->m_dwResolutionX) != 0 || - m_pStream->readInteger(&pPageInfo->m_dwResolutionY) != 0 || - m_pStream->read1Byte(&pPageInfo->m_cFlags) != 0 || - m_pStream->readShortInteger(&wTemp) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - pPageInfo->m_bIsStriped = !!(wTemp & 0x8000); - pPageInfo->m_wMaxStripeSize = wTemp & 0x7fff; - bool bMaxHeight = (pPageInfo->m_dwHeight == 0xffffffff); - if (bMaxHeight && pPageInfo->m_bIsStriped != TRUE) - pPageInfo->m_bIsStriped = TRUE; - - if (!m_bBufSpecified) { - FX_DWORD height = - bMaxHeight ? pPageInfo->m_wMaxStripeSize : pPageInfo->m_dwHeight; - m_pPage.reset(new CJBig2_Image(pPageInfo->m_dwWidth, height)); - } - - if (!m_pPage->m_pData) { - m_ProcessingStatus = FXCODEC_STATUS_ERROR; - return JBIG2_ERROR_TOO_SHORT; - } - - m_pPage->fill((pPageInfo->m_cFlags & 4) ? 1 : 0); - m_PageInfoList.push_back(pPageInfo.release()); - m_bInPage = true; - } break; - case 49: - m_bInPage = false; - return JBIG2_END_OF_PAGE; - break; - case 50: - m_pStream->offset(pSegment->m_dwData_length); - break; - case 51: - return JBIG2_END_OF_FILE; - case 52: - m_pStream->offset(pSegment->m_dwData_length); - break; - case 53: - return parseTable(pSegment); - case 62: - m_pStream->offset(pSegment->m_dwData_length); - break; - default: - break; - } - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseSymbolDict(CJBig2_Segment* pSegment, - IFX_Pause* pPause) { - FX_WORD wFlags; - if (m_pStream->readShortInteger(&wFlags) != 0) - return JBIG2_ERROR_TOO_SHORT; - - std::unique_ptr pSymbolDictDecoder(new CJBig2_SDDProc); - pSymbolDictDecoder->SDHUFF = wFlags & 0x0001; - pSymbolDictDecoder->SDREFAGG = (wFlags >> 1) & 0x0001; - pSymbolDictDecoder->SDTEMPLATE = (wFlags >> 10) & 0x0003; - pSymbolDictDecoder->SDRTEMPLATE = (wFlags >> 12) & 0x0003; - uint8_t cSDHUFFDH = (wFlags >> 2) & 0x0003; - uint8_t cSDHUFFDW = (wFlags >> 4) & 0x0003; - uint8_t cSDHUFFBMSIZE = (wFlags >> 6) & 0x0001; - uint8_t cSDHUFFAGGINST = (wFlags >> 7) & 0x0001; - if (pSymbolDictDecoder->SDHUFF == 0) { - const FX_DWORD dwTemp = (pSymbolDictDecoder->SDTEMPLATE == 0) ? 8 : 2; - for (FX_DWORD i = 0; i < dwTemp; ++i) { - if (m_pStream->read1Byte((uint8_t*)&pSymbolDictDecoder->SDAT[i]) != 0) - return JBIG2_ERROR_TOO_SHORT; - } - } - if (pSymbolDictDecoder->SDREFAGG == 1 && - pSymbolDictDecoder->SDRTEMPLATE == 0) { - for (int32_t i = 0; i < 4; ++i) { - if (m_pStream->read1Byte((uint8_t*)&pSymbolDictDecoder->SDRAT[i]) != 0) - return JBIG2_ERROR_TOO_SHORT; - } - } - if (m_pStream->readInteger(&pSymbolDictDecoder->SDNUMEXSYMS) != 0 || - m_pStream->readInteger(&pSymbolDictDecoder->SDNUMNEWSYMS) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - if (pSymbolDictDecoder->SDNUMEXSYMS > JBIG2_MAX_EXPORT_SYSMBOLS || - pSymbolDictDecoder->SDNUMNEWSYMS > JBIG2_MAX_NEW_SYSMBOLS) { - return JBIG2_ERROR_LIMIT; - } - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - if (!findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i])) - return JBIG2_ERROR_FATAL; - } - CJBig2_Segment* pLRSeg = nullptr; - pSymbolDictDecoder->SDNUMINSYMS = 0; - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - CJBig2_Segment* pSeg = - findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); - if (pSeg->m_cFlags.s.type == 0) { - pSymbolDictDecoder->SDNUMINSYMS += pSeg->m_Result.sd->NumImages(); - pLRSeg = pSeg; - } - } - - std::unique_ptr SDINSYMS; - if (pSymbolDictDecoder->SDNUMINSYMS != 0) { - SDINSYMS.reset(FX_Alloc(CJBig2_Image*, pSymbolDictDecoder->SDNUMINSYMS)); - FX_DWORD dwTemp = 0; - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - CJBig2_Segment* pSeg = - findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); - if (pSeg->m_cFlags.s.type == 0) { - const CJBig2_SymbolDict& dict = *pSeg->m_Result.sd; - for (size_t j = 0; j < dict.NumImages(); ++j) - SDINSYMS.get()[dwTemp + j] = dict.GetImage(j); - dwTemp += dict.NumImages(); - } - } - } - pSymbolDictDecoder->SDINSYMS = SDINSYMS.get(); - - std::unique_ptr Table_B1; - std::unique_ptr Table_B2; - std::unique_ptr Table_B3; - std::unique_ptr Table_B4; - std::unique_ptr Table_B5; - if (pSymbolDictDecoder->SDHUFF == 1) { - if (cSDHUFFDH == 2 || cSDHUFFDW == 2) - return JBIG2_ERROR_FATAL; - - int32_t nIndex = 0; - if (cSDHUFFDH == 0) { - Table_B4.reset(new CJBig2_HuffmanTable(HuffmanTable_B4, - FX_ArraySize(HuffmanTable_B4), - HuffmanTable_HTOOB_B4)); - pSymbolDictDecoder->SDHUFFDH = Table_B4.get(); - } else if (cSDHUFFDH == 1) { - Table_B5.reset(new CJBig2_HuffmanTable(HuffmanTable_B5, - FX_ArraySize(HuffmanTable_B5), - HuffmanTable_HTOOB_B5)); - pSymbolDictDecoder->SDHUFFDH = Table_B5.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pSymbolDictDecoder->SDHUFFDH = pSeg->m_Result.ht; - } - if (cSDHUFFDW == 0) { - Table_B2.reset(new CJBig2_HuffmanTable(HuffmanTable_B2, - FX_ArraySize(HuffmanTable_B2), - HuffmanTable_HTOOB_B2)); - pSymbolDictDecoder->SDHUFFDW = Table_B2.get(); - } else if (cSDHUFFDW == 1) { - Table_B3.reset(new CJBig2_HuffmanTable(HuffmanTable_B3, - FX_ArraySize(HuffmanTable_B3), - HuffmanTable_HTOOB_B3)); - pSymbolDictDecoder->SDHUFFDW = Table_B3.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pSymbolDictDecoder->SDHUFFDW = pSeg->m_Result.ht; - } - if (cSDHUFFBMSIZE == 0) { - Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, - FX_ArraySize(HuffmanTable_B1), - HuffmanTable_HTOOB_B1)); - pSymbolDictDecoder->SDHUFFBMSIZE = Table_B1.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pSymbolDictDecoder->SDHUFFBMSIZE = pSeg->m_Result.ht; - } - if (pSymbolDictDecoder->SDREFAGG == 1) { - if (cSDHUFFAGGINST == 0) { - if (!Table_B1) { - Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, - FX_ArraySize(HuffmanTable_B1), - HuffmanTable_HTOOB_B1)); - } - pSymbolDictDecoder->SDHUFFAGGINST = Table_B1.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pSymbolDictDecoder->SDHUFFAGGINST = pSeg->m_Result.ht; - } - } - } - - const bool bUseGbContext = (pSymbolDictDecoder->SDHUFF == 0); - const bool bUseGrContext = (pSymbolDictDecoder->SDREFAGG == 1); - const size_t gbContextSize = - GetHuffContextSize(pSymbolDictDecoder->SDTEMPLATE); - const size_t grContextSize = - GetRefAggContextSize(pSymbolDictDecoder->SDRTEMPLATE); - std::vector gbContext; - std::vector grContext; - if ((wFlags & 0x0100) && pLRSeg) { - if (bUseGbContext) { - gbContext = pLRSeg->m_Result.sd->GbContext(); - if (gbContext.size() != gbContextSize) - return JBIG2_ERROR_FATAL; - } - if (bUseGrContext) { - grContext = pLRSeg->m_Result.sd->GrContext(); - if (grContext.size() != grContextSize) - return JBIG2_ERROR_FATAL; - } - } else { - if (bUseGbContext) - gbContext.resize(gbContextSize); - if (bUseGrContext) - grContext.resize(grContextSize); - } - - CJBig2_CacheKey key = - CJBig2_CacheKey(pSegment->m_dwObjNum, pSegment->m_dwDataOffset); - FX_BOOL cache_hit = false; - pSegment->m_nResultType = JBIG2_SYMBOL_DICT_POINTER; - if (m_bIsGlobal && key.first != 0) { - for (auto it = m_pSymbolDictCache->begin(); it != m_pSymbolDictCache->end(); - ++it) { - if (it->first == key) { - std::unique_ptr copy(it->second->DeepCopy()); - pSegment->m_Result.sd = copy.release(); - m_pSymbolDictCache->push_front(*it); - m_pSymbolDictCache->erase(it); - cache_hit = true; - break; - } - } - } - if (!cache_hit) { - if (bUseGbContext) { - std::unique_ptr pArithDecoder( - new CJBig2_ArithDecoder(m_pStream.get())); - pSegment->m_Result.sd = pSymbolDictDecoder->decode_Arith( - pArithDecoder.get(), &gbContext, &grContext); - if (!pSegment->m_Result.sd) - return JBIG2_ERROR_FATAL; - - m_pStream->alignByte(); - m_pStream->offset(2); - } else { - pSegment->m_Result.sd = pSymbolDictDecoder->decode_Huffman( - m_pStream.get(), &gbContext, &grContext, pPause); - if (!pSegment->m_Result.sd) - return JBIG2_ERROR_FATAL; - m_pStream->alignByte(); - } - if (m_bIsGlobal && kSymbolDictCacheMaxSize > 0) { - std::unique_ptr value = - pSegment->m_Result.sd->DeepCopy(); - int size = pdfium::CollectionSize(*m_pSymbolDictCache); - while (size >= kSymbolDictCacheMaxSize) { - delete m_pSymbolDictCache->back().second; - m_pSymbolDictCache->pop_back(); - --size; - } - m_pSymbolDictCache->push_front(CJBig2_CachePair(key, value.release())); - } - } - if (wFlags & 0x0200) { - if (bUseGbContext) - pSegment->m_Result.sd->SetGbContext(gbContext); - if (bUseGrContext) - pSegment->m_Result.sd->SetGrContext(grContext); - } - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseTextRegion(CJBig2_Segment* pSegment) { - FX_WORD wFlags; - JBig2RegionInfo ri; - if (parseRegionInfo(&ri) != JBIG2_SUCCESS || - m_pStream->readShortInteger(&wFlags) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - - std::unique_ptr pTRD(new CJBig2_TRDProc); - pTRD->SBW = ri.width; - pTRD->SBH = ri.height; - pTRD->SBHUFF = wFlags & 0x0001; - pTRD->SBREFINE = (wFlags >> 1) & 0x0001; - FX_DWORD dwTemp = (wFlags >> 2) & 0x0003; - pTRD->SBSTRIPS = 1 << dwTemp; - pTRD->REFCORNER = (JBig2Corner)((wFlags >> 4) & 0x0003); - pTRD->TRANSPOSED = (wFlags >> 6) & 0x0001; - pTRD->SBCOMBOP = (JBig2ComposeOp)((wFlags >> 7) & 0x0003); - pTRD->SBDEFPIXEL = (wFlags >> 9) & 0x0001; - pTRD->SBDSOFFSET = (wFlags >> 10) & 0x001f; - if (pTRD->SBDSOFFSET >= 0x0010) { - pTRD->SBDSOFFSET = pTRD->SBDSOFFSET - 0x0020; - } - pTRD->SBRTEMPLATE = (wFlags >> 15) & 0x0001; - - uint8_t cSBHUFFFS; - uint8_t cSBHUFFDS; - uint8_t cSBHUFFDT; - uint8_t cSBHUFFRDW; - uint8_t cSBHUFFRDH; - uint8_t cSBHUFFRDX; - uint8_t cSBHUFFRDY; - uint8_t cSBHUFFRSIZE; - if (pTRD->SBHUFF == 1) { - if (m_pStream->readShortInteger(&wFlags) != 0) - return JBIG2_ERROR_TOO_SHORT; - - cSBHUFFFS = wFlags & 0x0003; - cSBHUFFDS = (wFlags >> 2) & 0x0003; - cSBHUFFDT = (wFlags >> 4) & 0x0003; - cSBHUFFRDW = (wFlags >> 6) & 0x0003; - cSBHUFFRDH = (wFlags >> 8) & 0x0003; - cSBHUFFRDX = (wFlags >> 10) & 0x0003; - cSBHUFFRDY = (wFlags >> 12) & 0x0003; - cSBHUFFRSIZE = (wFlags >> 14) & 0x0001; - } - if (pTRD->SBREFINE == 1 && pTRD->SBRTEMPLATE == 0) { - for (int32_t i = 0; i < 4; ++i) { - if (m_pStream->read1Byte((uint8_t*)&pTRD->SBRAT[i]) != 0) - return JBIG2_ERROR_TOO_SHORT; - } - } - if (m_pStream->readInteger(&pTRD->SBNUMINSTANCES) != 0) - return JBIG2_ERROR_TOO_SHORT; - - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - if (!findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i])) - return JBIG2_ERROR_FATAL; - } - - pTRD->SBNUMSYMS = 0; - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - CJBig2_Segment* pSeg = - findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); - if (pSeg->m_cFlags.s.type == 0) { - pTRD->SBNUMSYMS += pSeg->m_Result.sd->NumImages(); - } - } - - std::unique_ptr SBSYMS; - if (pTRD->SBNUMSYMS > 0) { - SBSYMS.reset(FX_Alloc(CJBig2_Image*, pTRD->SBNUMSYMS)); - dwTemp = 0; - for (int32_t i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - CJBig2_Segment* pSeg = - findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[i]); - if (pSeg->m_cFlags.s.type == 0) { - const CJBig2_SymbolDict& dict = *pSeg->m_Result.sd; - for (size_t j = 0; j < dict.NumImages(); ++j) - SBSYMS.get()[dwTemp + j] = dict.GetImage(j); - dwTemp += dict.NumImages(); - } - } - pTRD->SBSYMS = SBSYMS.get(); - } else { - pTRD->SBSYMS = NULL; - } - - std::unique_ptr SBSYMCODES; - if (pTRD->SBHUFF == 1) { - SBSYMCODES.reset( - decodeSymbolIDHuffmanTable(m_pStream.get(), pTRD->SBNUMSYMS)); - if (!SBSYMCODES) - return JBIG2_ERROR_FATAL; - - m_pStream->alignByte(); - pTRD->SBSYMCODES = SBSYMCODES.get(); - } else { - dwTemp = 0; - while ((FX_DWORD)(1 << dwTemp) < pTRD->SBNUMSYMS) { - ++dwTemp; - } - pTRD->SBSYMCODELEN = (uint8_t)dwTemp; - } - - std::unique_ptr Table_B1; - std::unique_ptr Table_B6; - std::unique_ptr Table_B7; - std::unique_ptr Table_B8; - std::unique_ptr Table_B9; - std::unique_ptr Table_B10; - std::unique_ptr Table_B11; - std::unique_ptr Table_B12; - std::unique_ptr Table_B13; - std::unique_ptr Table_B14; - std::unique_ptr Table_B15; - if (pTRD->SBHUFF == 1) { - if (cSBHUFFFS == 2 || cSBHUFFRDW == 2 || cSBHUFFRDH == 2 || - cSBHUFFRDX == 2 || cSBHUFFRDY == 2) { - return JBIG2_ERROR_FATAL; - } - int32_t nIndex = 0; - if (cSBHUFFFS == 0) { - Table_B6.reset(new CJBig2_HuffmanTable(HuffmanTable_B6, - FX_ArraySize(HuffmanTable_B6), - HuffmanTable_HTOOB_B6)); - pTRD->SBHUFFFS = Table_B6.get(); - } else if (cSBHUFFFS == 1) { - Table_B7.reset(new CJBig2_HuffmanTable(HuffmanTable_B7, - FX_ArraySize(HuffmanTable_B7), - HuffmanTable_HTOOB_B7)); - pTRD->SBHUFFFS = Table_B7.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFFS = pSeg->m_Result.ht; - } - if (cSBHUFFDS == 0) { - Table_B8.reset(new CJBig2_HuffmanTable(HuffmanTable_B8, - FX_ArraySize(HuffmanTable_B8), - HuffmanTable_HTOOB_B8)); - pTRD->SBHUFFDS = Table_B8.get(); - } else if (cSBHUFFDS == 1) { - Table_B9.reset(new CJBig2_HuffmanTable(HuffmanTable_B9, - FX_ArraySize(HuffmanTable_B9), - HuffmanTable_HTOOB_B9)); - pTRD->SBHUFFDS = Table_B9.get(); - } else if (cSBHUFFDS == 2) { - Table_B10.reset(new CJBig2_HuffmanTable(HuffmanTable_B10, - FX_ArraySize(HuffmanTable_B10), - HuffmanTable_HTOOB_B10)); - pTRD->SBHUFFDS = Table_B10.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFDS = pSeg->m_Result.ht; - } - if (cSBHUFFDT == 0) { - Table_B11.reset(new CJBig2_HuffmanTable(HuffmanTable_B11, - FX_ArraySize(HuffmanTable_B11), - HuffmanTable_HTOOB_B11)); - pTRD->SBHUFFDT = Table_B11.get(); - } else if (cSBHUFFDT == 1) { - Table_B12.reset(new CJBig2_HuffmanTable(HuffmanTable_B12, - FX_ArraySize(HuffmanTable_B12), - HuffmanTable_HTOOB_B12)); - pTRD->SBHUFFDT = Table_B12.get(); - } else if (cSBHUFFDT == 2) { - Table_B13.reset(new CJBig2_HuffmanTable(HuffmanTable_B13, - FX_ArraySize(HuffmanTable_B13), - HuffmanTable_HTOOB_B13)); - pTRD->SBHUFFDT = Table_B13.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFDT = pSeg->m_Result.ht; - } - if (cSBHUFFRDW == 0) { - Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, - FX_ArraySize(HuffmanTable_B14), - HuffmanTable_HTOOB_B14)); - pTRD->SBHUFFRDW = Table_B14.get(); - } else if (cSBHUFFRDW == 1) { - Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - pTRD->SBHUFFRDW = Table_B15.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFRDW = pSeg->m_Result.ht; - } - if (cSBHUFFRDH == 0) { - if (!Table_B14) { - Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, - FX_ArraySize(HuffmanTable_B14), - HuffmanTable_HTOOB_B14)); - } - pTRD->SBHUFFRDH = Table_B14.get(); - } else if (cSBHUFFRDH == 1) { - if (!Table_B15) { - Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - } - pTRD->SBHUFFRDH = Table_B15.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFRDH = pSeg->m_Result.ht; - } - if (cSBHUFFRDX == 0) { - if (!Table_B14) { - Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, - FX_ArraySize(HuffmanTable_B14), - HuffmanTable_HTOOB_B14)); - } - pTRD->SBHUFFRDX = Table_B14.get(); - } else if (cSBHUFFRDX == 1) { - if (!Table_B15) { - Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - } - pTRD->SBHUFFRDX = Table_B15.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFRDX = pSeg->m_Result.ht; - } - if (cSBHUFFRDY == 0) { - if (!Table_B14) { - Table_B14.reset(new CJBig2_HuffmanTable(HuffmanTable_B14, - FX_ArraySize(HuffmanTable_B14), - HuffmanTable_HTOOB_B14)); - } - pTRD->SBHUFFRDY = Table_B14.get(); - } else if (cSBHUFFRDY == 1) { - if (!Table_B15) { - Table_B15.reset(new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - } - pTRD->SBHUFFRDY = Table_B15.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFRDY = pSeg->m_Result.ht; - } - if (cSBHUFFRSIZE == 0) { - Table_B1.reset(new CJBig2_HuffmanTable(HuffmanTable_B1, - FX_ArraySize(HuffmanTable_B1), - HuffmanTable_HTOOB_B1)); - pTRD->SBHUFFRSIZE = Table_B1.get(); - } else { - CJBig2_Segment* pSeg = - findReferredSegmentByTypeAndIndex(pSegment, 53, nIndex++); - if (!pSeg) - return JBIG2_ERROR_FATAL; - pTRD->SBHUFFRSIZE = pSeg->m_Result.ht; - } - } - std::unique_ptr grContext; - if (pTRD->SBREFINE == 1) { - const size_t size = GetRefAggContextSize(pTRD->SBRTEMPLATE); - grContext.reset(FX_Alloc(JBig2ArithCtx, size)); - JBIG2_memset(grContext.get(), 0, sizeof(JBig2ArithCtx) * size); - } - if (pTRD->SBHUFF == 0) { - std::unique_ptr pArithDecoder( - new CJBig2_ArithDecoder(m_pStream.get())); - pSegment->m_nResultType = JBIG2_IMAGE_POINTER; - pSegment->m_Result.im = - pTRD->decode_Arith(pArithDecoder.get(), grContext.get(), nullptr); - if (!pSegment->m_Result.im) - return JBIG2_ERROR_FATAL; - m_pStream->alignByte(); - m_pStream->offset(2); - } else { - pSegment->m_nResultType = JBIG2_IMAGE_POINTER; - pSegment->m_Result.im = - pTRD->decode_Huffman(m_pStream.get(), grContext.get()); - if (!pSegment->m_Result.im) - return JBIG2_ERROR_FATAL; - m_pStream->alignByte(); - } - if (pSegment->m_cFlags.s.type != 4) { - if (!m_bBufSpecified) { - JBig2PageInfo* pPageInfo = m_PageInfoList.back(); - if ((pPageInfo->m_bIsStriped == 1) && - (ri.y + ri.height > m_pPage->m_nHeight)) { - m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); - } - } - m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, - (JBig2ComposeOp)(ri.flags & 0x03)); - delete pSegment->m_Result.im; - pSegment->m_Result.im = NULL; - } - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parsePatternDict(CJBig2_Segment* pSegment, - IFX_Pause* pPause) { - uint8_t cFlags; - std::unique_ptr pPDD(new CJBig2_PDDProc); - if (m_pStream->read1Byte(&cFlags) != 0 || - m_pStream->read1Byte(&pPDD->HDPW) != 0 || - m_pStream->read1Byte(&pPDD->HDPH) != 0 || - m_pStream->readInteger(&pPDD->GRAYMAX) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - if (pPDD->GRAYMAX > JBIG2_MAX_PATTERN_INDEX) - return JBIG2_ERROR_LIMIT; - - pPDD->HDMMR = cFlags & 0x01; - pPDD->HDTEMPLATE = (cFlags >> 1) & 0x03; - pSegment->m_nResultType = JBIG2_PATTERN_DICT_POINTER; - if (pPDD->HDMMR == 0) { - const size_t size = GetHuffContextSize(pPDD->HDTEMPLATE); - std::unique_ptr gbContext( - FX_Alloc(JBig2ArithCtx, size)); - JBIG2_memset(gbContext.get(), 0, sizeof(JBig2ArithCtx) * size); - std::unique_ptr pArithDecoder( - new CJBig2_ArithDecoder(m_pStream.get())); - pSegment->m_Result.pd = - pPDD->decode_Arith(pArithDecoder.get(), gbContext.get(), pPause); - if (!pSegment->m_Result.pd) - return JBIG2_ERROR_FATAL; - - m_pStream->alignByte(); - m_pStream->offset(2); - } else { - pSegment->m_Result.pd = pPDD->decode_MMR(m_pStream.get(), pPause); - if (!pSegment->m_Result.pd) - return JBIG2_ERROR_FATAL; - m_pStream->alignByte(); - } - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseHalftoneRegion(CJBig2_Segment* pSegment, - IFX_Pause* pPause) { - uint8_t cFlags; - JBig2RegionInfo ri; - std::unique_ptr pHRD(new CJBig2_HTRDProc); - if (parseRegionInfo(&ri) != JBIG2_SUCCESS || - m_pStream->read1Byte(&cFlags) != 0 || - m_pStream->readInteger(&pHRD->HGW) != 0 || - m_pStream->readInteger(&pHRD->HGH) != 0 || - m_pStream->readInteger((FX_DWORD*)&pHRD->HGX) != 0 || - m_pStream->readInteger((FX_DWORD*)&pHRD->HGY) != 0 || - m_pStream->readShortInteger(&pHRD->HRX) != 0 || - m_pStream->readShortInteger(&pHRD->HRY) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - - if (pHRD->HGW == 0 || pHRD->HGH == 0) - return JBIG2_ERROR_FATAL; - - pHRD->HBW = ri.width; - pHRD->HBH = ri.height; - pHRD->HMMR = cFlags & 0x01; - pHRD->HTEMPLATE = (cFlags >> 1) & 0x03; - pHRD->HENABLESKIP = (cFlags >> 3) & 0x01; - pHRD->HCOMBOP = (JBig2ComposeOp)((cFlags >> 4) & 0x07); - pHRD->HDEFPIXEL = (cFlags >> 7) & 0x01; - if (pSegment->m_nReferred_to_segment_count != 1) - return JBIG2_ERROR_FATAL; - - CJBig2_Segment* pSeg = - findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[0]); - if (!pSeg || (pSeg->m_cFlags.s.type != 16)) - return JBIG2_ERROR_FATAL; - - CJBig2_PatternDict* pPatternDict = pSeg->m_Result.pd; - if (!pPatternDict || (pPatternDict->NUMPATS == 0)) - return JBIG2_ERROR_FATAL; - - pHRD->HNUMPATS = pPatternDict->NUMPATS; - pHRD->HPATS = pPatternDict->HDPATS; - pHRD->HPW = pPatternDict->HDPATS[0]->m_nWidth; - pHRD->HPH = pPatternDict->HDPATS[0]->m_nHeight; - pSegment->m_nResultType = JBIG2_IMAGE_POINTER; - if (pHRD->HMMR == 0) { - const size_t size = GetHuffContextSize(pHRD->HTEMPLATE); - std::unique_ptr gbContext( - FX_Alloc(JBig2ArithCtx, size)); - JBIG2_memset(gbContext.get(), 0, sizeof(JBig2ArithCtx) * size); - std::unique_ptr pArithDecoder( - new CJBig2_ArithDecoder(m_pStream.get())); - pSegment->m_Result.im = - pHRD->decode_Arith(pArithDecoder.get(), gbContext.get(), pPause); - if (!pSegment->m_Result.im) - return JBIG2_ERROR_FATAL; - - m_pStream->alignByte(); - m_pStream->offset(2); - } else { - pSegment->m_Result.im = pHRD->decode_MMR(m_pStream.get(), pPause); - if (!pSegment->m_Result.im) - return JBIG2_ERROR_FATAL; - m_pStream->alignByte(); - } - if (pSegment->m_cFlags.s.type != 20) { - if (!m_bBufSpecified) { - JBig2PageInfo* pPageInfo = m_PageInfoList.back(); - if (pPageInfo->m_bIsStriped == 1 && - ri.y + ri.height > m_pPage->m_nHeight) { - m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); - } - } - m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, - (JBig2ComposeOp)(ri.flags & 0x03)); - delete pSegment->m_Result.im; - pSegment->m_Result.im = NULL; - } - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseGenericRegion(CJBig2_Segment* pSegment, - IFX_Pause* pPause) { - if (!m_pGRD) { - std::unique_ptr pGRD(new CJBig2_GRDProc); - uint8_t cFlags; - if (parseRegionInfo(&m_ri) != JBIG2_SUCCESS || - m_pStream->read1Byte(&cFlags) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - if (m_ri.height < 0 || m_ri.width < 0) - return JBIG2_FAILED; - - pGRD->GBW = m_ri.width; - pGRD->GBH = m_ri.height; - pGRD->MMR = cFlags & 0x01; - pGRD->GBTEMPLATE = (cFlags >> 1) & 0x03; - pGRD->TPGDON = (cFlags >> 3) & 0x01; - if (pGRD->MMR == 0) { - if (pGRD->GBTEMPLATE == 0) { - for (int32_t i = 0; i < 8; ++i) { - if (m_pStream->read1Byte((uint8_t*)&pGRD->GBAT[i]) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - } - } else { - for (int32_t i = 0; i < 2; ++i) { - if (m_pStream->read1Byte((uint8_t*)&pGRD->GBAT[i]) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - } - } - } - pGRD->USESKIP = 0; - m_pGRD = std::move(pGRD); - } - pSegment->m_nResultType = JBIG2_IMAGE_POINTER; - if (m_pGRD->MMR == 0) { - if (!m_gbContext) { - const size_t size = GetHuffContextSize(m_pGRD->GBTEMPLATE); - m_gbContext = FX_Alloc(JBig2ArithCtx, size); - JBIG2_memset(m_gbContext, 0, sizeof(JBig2ArithCtx) * size); - } - if (!m_pArithDecoder) { - m_pArithDecoder.reset(new CJBig2_ArithDecoder(m_pStream.get())); - m_ProcessingStatus = m_pGRD->Start_decode_Arith( - &pSegment->m_Result.im, m_pArithDecoder.get(), m_gbContext, pPause); - } else { - m_ProcessingStatus = m_pGRD->Continue_decode(pPause); - } - if (m_ProcessingStatus == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - if (pSegment->m_cFlags.s.type != 36) { - if (!m_bBufSpecified) { - JBig2PageInfo* pPageInfo = m_PageInfoList.back(); - if ((pPageInfo->m_bIsStriped == 1) && - (m_ri.y + m_ri.height > m_pPage->m_nHeight)) { - m_pPage->expand(m_ri.y + m_ri.height, - (pPageInfo->m_cFlags & 4) ? 1 : 0); - } - } - FX_RECT Rect = m_pGRD->GetReplaceRect(); - m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top, - pSegment->m_Result.im, - (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect); - } - return JBIG2_SUCCESS; - } else { - m_pArithDecoder.reset(); - FX_Free(m_gbContext); - m_gbContext = NULL; - if (!pSegment->m_Result.im) { - m_ProcessingStatus = FXCODEC_STATUS_ERROR; - m_pGRD.reset(); - return JBIG2_ERROR_FATAL; - } - m_pStream->alignByte(); - m_pStream->offset(2); - } - } else { - FXCODEC_STATUS status = m_pGRD->Start_decode_MMR(&pSegment->m_Result.im, - m_pStream.get(), pPause); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - m_pGRD->Continue_decode(pPause); - } - if (!pSegment->m_Result.im) { - m_pGRD.reset(); - return JBIG2_ERROR_FATAL; - } - m_pStream->alignByte(); - } - if (pSegment->m_cFlags.s.type != 36) { - if (!m_bBufSpecified) { - JBig2PageInfo* pPageInfo = m_PageInfoList.back(); - if ((pPageInfo->m_bIsStriped == 1) && - (m_ri.y + m_ri.height > m_pPage->m_nHeight)) { - m_pPage->expand(m_ri.y + m_ri.height, - (pPageInfo->m_cFlags & 4) ? 1 : 0); - } - } - FX_RECT Rect = m_pGRD->GetReplaceRect(); - m_pPage->composeFrom(m_ri.x + Rect.left, m_ri.y + Rect.top, - pSegment->m_Result.im, - (JBig2ComposeOp)(m_ri.flags & 0x03), &Rect); - delete pSegment->m_Result.im; - pSegment->m_Result.im = NULL; - } - m_pGRD.reset(); - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseGenericRefinementRegion(CJBig2_Segment* pSegment) { - JBig2RegionInfo ri; - uint8_t cFlags; - if (parseRegionInfo(&ri) != JBIG2_SUCCESS || - m_pStream->read1Byte(&cFlags) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - std::unique_ptr pGRRD(new CJBig2_GRRDProc); - pGRRD->GRW = ri.width; - pGRRD->GRH = ri.height; - pGRRD->GRTEMPLATE = cFlags & 0x01; - pGRRD->TPGRON = (cFlags >> 1) & 0x01; - if (pGRRD->GRTEMPLATE == 0) { - for (int32_t i = 0; i < 4; ++i) { - if (m_pStream->read1Byte((uint8_t*)&pGRRD->GRAT[i]) != 0) - return JBIG2_ERROR_TOO_SHORT; - } - } - CJBig2_Segment* pSeg = nullptr; - if (pSegment->m_nReferred_to_segment_count > 0) { - int32_t i; - for (i = 0; i < pSegment->m_nReferred_to_segment_count; ++i) { - pSeg = findSegmentByNumber(pSegment->m_pReferred_to_segment_numbers[0]); - if (!pSeg) - return JBIG2_ERROR_FATAL; - - if (pSeg->m_cFlags.s.type == 4 || pSeg->m_cFlags.s.type == 20 || - pSeg->m_cFlags.s.type == 36 || pSeg->m_cFlags.s.type == 40) { - break; - } - } - if (i >= pSegment->m_nReferred_to_segment_count) - return JBIG2_ERROR_FATAL; - - pGRRD->GRREFERENCE = pSeg->m_Result.im; - } else { - pGRRD->GRREFERENCE = m_pPage.get(); - } - pGRRD->GRREFERENCEDX = 0; - pGRRD->GRREFERENCEDY = 0; - const size_t size = GetRefAggContextSize(pGRRD->GRTEMPLATE); - std::unique_ptr grContext( - FX_Alloc(JBig2ArithCtx, size)); - JBIG2_memset(grContext.get(), 0, sizeof(JBig2ArithCtx) * size); - std::unique_ptr pArithDecoder( - new CJBig2_ArithDecoder(m_pStream.get())); - pSegment->m_nResultType = JBIG2_IMAGE_POINTER; - pSegment->m_Result.im = pGRRD->decode(pArithDecoder.get(), grContext.get()); - if (!pSegment->m_Result.im) - return JBIG2_ERROR_FATAL; - - m_pStream->alignByte(); - m_pStream->offset(2); - if (pSegment->m_cFlags.s.type != 40) { - if (!m_bBufSpecified) { - JBig2PageInfo* pPageInfo = m_PageInfoList.back(); - if ((pPageInfo->m_bIsStriped == 1) && - (ri.y + ri.height > m_pPage->m_nHeight)) { - m_pPage->expand(ri.y + ri.height, (pPageInfo->m_cFlags & 4) ? 1 : 0); - } - } - m_pPage->composeFrom(ri.x, ri.y, pSegment->m_Result.im, - (JBig2ComposeOp)(ri.flags & 0x03)); - delete pSegment->m_Result.im; - pSegment->m_Result.im = NULL; - } - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseTable(CJBig2_Segment* pSegment) { - pSegment->m_nResultType = JBIG2_HUFFMAN_TABLE_POINTER; - pSegment->m_Result.ht = nullptr; - std::unique_ptr pHuff( - new CJBig2_HuffmanTable(m_pStream.get())); - if (!pHuff->IsOK()) - return JBIG2_ERROR_FATAL; - - pSegment->m_Result.ht = pHuff.release(); - m_pStream->alignByte(); - return JBIG2_SUCCESS; -} - -int32_t CJBig2_Context::parseRegionInfo(JBig2RegionInfo* pRI) { - if (m_pStream->readInteger((FX_DWORD*)&pRI->width) != 0 || - m_pStream->readInteger((FX_DWORD*)&pRI->height) != 0 || - m_pStream->readInteger((FX_DWORD*)&pRI->x) != 0 || - m_pStream->readInteger((FX_DWORD*)&pRI->y) != 0 || - m_pStream->read1Byte(&pRI->flags) != 0) { - return JBIG2_ERROR_TOO_SHORT; - } - return JBIG2_SUCCESS; -} - -JBig2HuffmanCode* CJBig2_Context::decodeSymbolIDHuffmanTable( - CJBig2_BitStream* pStream, - FX_DWORD SBNUMSYMS) { - const size_t kRunCodesSize = 35; - int32_t runcodes[kRunCodesSize]; - int32_t runcodes_len[kRunCodesSize]; - for (int32_t i = 0; i < kRunCodesSize; ++i) { - if (pStream->readNBits(4, &runcodes_len[i]) != 0) - return nullptr; - } - huffman_assign_code(runcodes, runcodes_len, kRunCodesSize); - - std::unique_ptr SBSYMCODES( - FX_Alloc(JBig2HuffmanCode, SBNUMSYMS)); - int32_t run; - int32_t i = 0; - while (i < (int)SBNUMSYMS) { - int32_t j; - int32_t nVal = 0; - int32_t nBits = 0; - FX_DWORD nTemp; - while (true) { - if (pStream->read1Bit(&nTemp) != 0) - return nullptr; - - nVal = (nVal << 1) | nTemp; - ++nBits; - for (j = 0; j < kRunCodesSize; ++j) { - if (nBits == runcodes_len[j] && nVal == runcodes[j]) { - break; - } - } - if (j < kRunCodesSize) { - break; - } - } - int32_t runcode = j; - if (runcode < 32) { - SBSYMCODES.get()[i].codelen = runcode; - run = 0; - } else if (runcode == 32) { - if (pStream->readNBits(2, &nTemp) != 0) - return nullptr; - run = nTemp + 3; - } else if (runcode == 33) { - if (pStream->readNBits(3, &nTemp) != 0) - return nullptr; - run = nTemp + 3; - } else if (runcode == 34) { - if (pStream->readNBits(7, &nTemp) != 0) - return nullptr; - run = nTemp + 11; - } - if (run > 0) { - if (i + run > (int)SBNUMSYMS) - return nullptr; - for (j = 0; j < run; ++j) { - if (runcode == 32 && i > 0) { - SBSYMCODES.get()[i + j].codelen = SBSYMCODES.get()[i - 1].codelen; - } else { - SBSYMCODES.get()[i + j].codelen = 0; - } - } - i += run; - } else { - ++i; - } - } - huffman_assign_code(SBSYMCODES.get(), SBNUMSYMS); - return SBSYMCODES.release(); -} - -void CJBig2_Context::huffman_assign_code(int* CODES, int* PREFLEN, int NTEMP) { - // TODO(thestig) CJBig2_HuffmanTable::parseFromCodedBuffer() has similar code. - int CURLEN, LENMAX, CURCODE, CURTEMP, i; - int* LENCOUNT; - int* FIRSTCODE; - LENMAX = 0; - for (i = 0; i < NTEMP; ++i) { - if (PREFLEN[i] > LENMAX) { - LENMAX = PREFLEN[i]; - } - } - LENCOUNT = FX_Alloc(int, LENMAX + 1); - JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1)); - FIRSTCODE = FX_Alloc(int, LENMAX + 1); - for (i = 0; i < NTEMP; ++i) { - ++LENCOUNT[PREFLEN[i]]; - } - CURLEN = 1; - FIRSTCODE[0] = 0; - LENCOUNT[0] = 0; - while (CURLEN <= LENMAX) { - FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1; - CURCODE = FIRSTCODE[CURLEN]; - CURTEMP = 0; - while (CURTEMP < NTEMP) { - if (PREFLEN[CURTEMP] == CURLEN) { - CODES[CURTEMP] = CURCODE; - CURCODE = CURCODE + 1; - } - CURTEMP = CURTEMP + 1; - } - CURLEN = CURLEN + 1; - } - FX_Free(LENCOUNT); - FX_Free(FIRSTCODE); -} -void CJBig2_Context::huffman_assign_code(JBig2HuffmanCode* SBSYMCODES, - int NTEMP) { - int CURLEN, LENMAX, CURCODE, CURTEMP, i; - int* LENCOUNT; - int* FIRSTCODE; - LENMAX = 0; - for (i = 0; i < NTEMP; ++i) { - if (SBSYMCODES[i].codelen > LENMAX) { - LENMAX = SBSYMCODES[i].codelen; - } - } - LENCOUNT = FX_Alloc(int, (LENMAX + 1)); - JBIG2_memset(LENCOUNT, 0, sizeof(int) * (LENMAX + 1)); - FIRSTCODE = FX_Alloc(int, (LENMAX + 1)); - for (i = 0; i < NTEMP; ++i) { - ++LENCOUNT[SBSYMCODES[i].codelen]; - } - CURLEN = 1; - FIRSTCODE[0] = 0; - LENCOUNT[0] = 0; - while (CURLEN <= LENMAX) { - FIRSTCODE[CURLEN] = (FIRSTCODE[CURLEN - 1] + LENCOUNT[CURLEN - 1]) << 1; - CURCODE = FIRSTCODE[CURLEN]; - CURTEMP = 0; - while (CURTEMP < NTEMP) { - if (SBSYMCODES[CURTEMP].codelen == CURLEN) { - SBSYMCODES[CURTEMP].code = CURCODE; - CURCODE = CURCODE + 1; - } - CURTEMP = CURTEMP + 1; - } - CURLEN = CURLEN + 1; - } - FX_Free(LENCOUNT); - FX_Free(FIRSTCODE); -} diff --git a/core/src/fxcodec/jbig2/JBig2_Context.h b/core/src/fxcodec/jbig2/JBig2_Context.h deleted file mode 100644 index 68c575392a..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Context.h +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_CONTEXT_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_CONTEXT_H_ - -#include -#include -#include - -#include "core/include/fpdfapi/cpdf_object.h" -#include "core/include/fxcodec/fx_codec_def.h" -#include "core/src/fxcodec/jbig2/JBig2_List.h" -#include "core/src/fxcodec/jbig2/JBig2_Page.h" -#include "core/src/fxcodec/jbig2/JBig2_Segment.h" - -class CJBig2_ArithDecoder; -class CJBig2_GRDProc; -class CPDF_StreamAcc; -class IFX_Pause; - -// Cache is keyed by the ObjNum of a stream and an index within the stream. -using CJBig2_CacheKey = std::pair; -// NB: CJBig2_SymbolDict* is owned. -using CJBig2_CachePair = std::pair; - -#define JBIG2_SUCCESS 0 -#define JBIG2_FAILED -1 -#define JBIG2_ERROR_TOO_SHORT -2 -#define JBIG2_ERROR_FATAL -3 -#define JBIG2_END_OF_PAGE 2 -#define JBIG2_END_OF_FILE 3 -#define JBIG2_ERROR_FILE_FORMAT -4 -#define JBIG2_ERROR_STREAM_TYPE -5 -#define JBIG2_ERROR_LIMIT -6 -#define JBIG2_MIN_SEGMENT_SIZE 11 - -class CJBig2_Context { - public: - static CJBig2_Context* CreateContext( - CPDF_StreamAcc* pGlobalStream, - CPDF_StreamAcc* pSrcStream, - std::list* pSymbolDictCache, - IFX_Pause* pPause = NULL); - - static void DestroyContext(CJBig2_Context* pContext); - - int32_t getFirstPage(uint8_t* pBuf, - int32_t width, - int32_t height, - int32_t stride, - IFX_Pause* pPause); - - int32_t Continue(IFX_Pause* pPause); - FXCODEC_STATUS GetProcessingStatus() { return m_ProcessingStatus; } - - private: - CJBig2_Context(CPDF_StreamAcc* pGlobalStream, - CPDF_StreamAcc* pSrcStream, - std::list* pSymbolDictCache, - IFX_Pause* pPause, - bool bIsGlobal); - - ~CJBig2_Context(); - - int32_t decode_SquentialOrgnazation(IFX_Pause* pPause); - - int32_t decode_EmbedOrgnazation(IFX_Pause* pPause); - - int32_t decode_RandomOrgnazation_FirstPage(IFX_Pause* pPause); - - int32_t decode_RandomOrgnazation(IFX_Pause* pPause); - - CJBig2_Segment* findSegmentByNumber(FX_DWORD dwNumber); - - CJBig2_Segment* findReferredSegmentByTypeAndIndex(CJBig2_Segment* pSegment, - uint8_t cType, - int32_t nIndex); - - int32_t parseSegmentHeader(CJBig2_Segment* pSegment); - - int32_t parseSegmentData(CJBig2_Segment* pSegment, IFX_Pause* pPause); - int32_t ProcessingParseSegmentData(CJBig2_Segment* pSegment, - IFX_Pause* pPause); - - int32_t parseSymbolDict(CJBig2_Segment* pSegment, IFX_Pause* pPause); - - int32_t parseTextRegion(CJBig2_Segment* pSegment); - - int32_t parsePatternDict(CJBig2_Segment* pSegment, IFX_Pause* pPause); - - int32_t parseHalftoneRegion(CJBig2_Segment* pSegment, IFX_Pause* pPause); - - int32_t parseGenericRegion(CJBig2_Segment* pSegment, IFX_Pause* pPause); - - int32_t parseGenericRefinementRegion(CJBig2_Segment* pSegment); - - int32_t parseTable(CJBig2_Segment* pSegment); - - int32_t parseRegionInfo(JBig2RegionInfo* pRI); - - JBig2HuffmanCode* decodeSymbolIDHuffmanTable(CJBig2_BitStream* pStream, - FX_DWORD SBNUMSYMS); - - void huffman_assign_code(int* CODES, int* PREFLEN, int NTEMP); - - void huffman_assign_code(JBig2HuffmanCode* SBSYMCODES, int NTEMP); - - private: - CJBig2_Context* m_pGlobalContext; - std::unique_ptr m_pStream; - CJBig2_List m_SegmentList; - CJBig2_List m_PageInfoList; - std::unique_ptr m_pPage; - size_t m_nSegmentDecoded; - bool m_bInPage; - bool m_bBufSpecified; - int32_t m_PauseStep; - IFX_Pause* m_pPause; - FXCODEC_STATUS m_ProcessingStatus; - std::unique_ptr m_pArithDecoder; - std::unique_ptr m_pGRD; - JBig2ArithCtx* m_gbContext; - std::unique_ptr m_pSegment; - FX_DWORD m_dwOffset; - JBig2RegionInfo m_ri; - std::list* const m_pSymbolDictCache; - bool m_bIsGlobal; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_CONTEXT_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_Define.h b/core/src/fxcodec/jbig2/JBig2_Define.h deleted file mode 100644 index 68e2ff2533..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Define.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_DEFINE_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_DEFINE_H_ - -#include "core/include/fxcrt/fx_system.h" - -#define JBIG2_memset FXSYS_memset -#define JBIG2_memcmp FXSYS_memcmp -#define JBIG2_memcpy FXSYS_memcpy -#define JBIG2_OOB 1 - -struct JBig2RegionInfo { - int32_t width; - int32_t height; - int32_t x; - int32_t y; - uint8_t flags; -}; - -struct JBig2HuffmanCode { - int32_t codelen; - int32_t code; -}; - -#define JBIG2_MAX_REFERRED_SEGMENT_COUNT 64 -#define JBIG2_MAX_EXPORT_SYSMBOLS 65535 -#define JBIG2_MAX_NEW_SYSMBOLS 65535 -#define JBIG2_MAX_PATTERN_INDEX 65535 -#define JBIG2_MAX_IMAGE_SIZE 65535 - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_DEFINE_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_GrdProc.cpp b/core/src/fxcodec/jbig2/JBig2_GrdProc.cpp deleted file mode 100644 index cf0f60405c..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_GrdProc.cpp +++ /dev/null @@ -1,1259 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_GrdProc.h" - -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" - -CJBig2_GRDProc::CJBig2_GRDProc() - : m_loopIndex(0), - m_pLine(nullptr), - m_pPause(nullptr), - m_DecodeType(0), - LTP(0) { - m_ReplaceRect.left = 0; - m_ReplaceRect.bottom = 0; - m_ReplaceRect.top = 0; - m_ReplaceRect.right = 0; -} - -bool CJBig2_GRDProc::UseTemplate0Opt3() const { - return (GBAT[0] == 3) && (GBAT[1] == -1) && (GBAT[2] == -3) && - (GBAT[3] == -1) && (GBAT[4] == 2) && (GBAT[5] == -2) && - (GBAT[6] == -2) && (GBAT[7] == -2); -} - -bool CJBig2_GRDProc::UseTemplate1Opt3() const { - return (GBAT[0] == 3) && (GBAT[1] == -1); -} - -bool CJBig2_GRDProc::UseTemplate23Opt3() const { - return (GBAT[0] == 2) && (GBAT[1] == -1); -} - -CJBig2_Image* CJBig2_GRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - if (GBW == 0 || GBH == 0) - return new CJBig2_Image(GBW, GBH); - - if (GBTEMPLATE == 0) { - if (UseTemplate0Opt3()) - return decode_Arith_Template0_opt3(pArithDecoder, gbContext); - return decode_Arith_Template0_unopt(pArithDecoder, gbContext); - } else if (GBTEMPLATE == 1) { - if (UseTemplate1Opt3()) - return decode_Arith_Template1_opt3(pArithDecoder, gbContext); - return decode_Arith_Template1_unopt(pArithDecoder, gbContext); - } else if (GBTEMPLATE == 2) { - if (UseTemplate23Opt3()) - return decode_Arith_Template2_opt3(pArithDecoder, gbContext); - return decode_Arith_Template2_unopt(pArithDecoder, gbContext); - } else { - if (UseTemplate23Opt3()) - return decode_Arith_Template3_opt3(pArithDecoder, gbContext); - return decode_Arith_Template3_unopt(pArithDecoder, gbContext); - } -} -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_opt3( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - uint8_t* pLine, *pLine1, *pLine2, cVal; - int32_t nStride, nStride2, k; - int32_t nLineBytes, nBitsLeft, cc; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - if (!GBREG->m_pData) - return nullptr; - - pLine = GBREG->m_pData; - nStride = GBREG->m_nStride; - nStride2 = nStride << 1; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - FX_DWORD height = GBH & 0x7fffffff; - for (FX_DWORD h = 0; h < height; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - if (h > 1) { - pLine1 = pLine - nStride2; - pLine2 = pLine - nStride; - line1 = (*pLine1++) << 6; - line2 = *pLine2++; - CONTEXT = ((line1 & 0xf800) | (line2 & 0x07f0)); - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | ((*pLine1++) << 6); - line2 = (line2 << 8) | (*pLine2++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | - ((line1 >> k) & 0x0800) | ((line2 >> k) & 0x0010)); - } - pLine[cc] = cVal; - } - line1 <<= 8; - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = - (((CONTEXT & 0x7bf7) << 1) | bVal | - ((line1 >> (7 - k)) & 0x0800) | ((line2 >> (7 - k)) & 0x0010)); - } - pLine[nLineBytes] = cVal; - } else { - pLine2 = pLine - nStride; - line2 = (h & 1) ? (*pLine2++) : 0; - CONTEXT = (line2 & 0x07f0); - for (cc = 0; cc < nLineBytes; cc++) { - if (h & 1) { - line2 = (line2 << 8) | (*pLine2++); - } - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = - (((CONTEXT & 0x7bf7) << 1) | bVal | ((line2 >> k) & 0x0010)); - } - pLine[cc] = cVal; - } - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | - (((line2 >> (7 - k))) & 0x0010)); - } - pLine[nLineBytes] = cVal; - } - } - pLine += nStride; - } - return GBREG.release(); -} - -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template0_unopt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - GBREG->fill(0); - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - line1 = GBREG->getPixel(1, h - 2); - line1 |= GBREG->getPixel(0, h - 2) << 1; - line2 = GBREG->getPixel(2, h - 1); - line2 |= GBREG->getPixel(1, h - 1) << 1; - line2 |= GBREG->getPixel(0, h - 1) << 2; - line3 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, h)) { - bVal = 0; - } else { - CONTEXT = line3; - CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 4; - CONTEXT |= line2 << 5; - CONTEXT |= GBREG->getPixel(w + GBAT[2], h + GBAT[3]) << 10; - CONTEXT |= GBREG->getPixel(w + GBAT[4], h + GBAT[5]) << 11; - CONTEXT |= line1 << 12; - CONTEXT |= GBREG->getPixel(w + GBAT[6], h + GBAT[7]) << 15; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - GBREG->setPixel(w, h, bVal); - } - line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; - line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; - line3 = ((line3 << 1) | bVal) & 0x0f; - } - } - } - return GBREG.release(); -} - -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_opt3( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - uint8_t* pLine, *pLine1, *pLine2, cVal; - int32_t nStride, nStride2, k; - int32_t nLineBytes, nBitsLeft, cc; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - if (!GBREG->m_pData) - return nullptr; - - pLine = GBREG->m_pData; - nStride = GBREG->m_nStride; - nStride2 = nStride << 1; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - if (h > 1) { - pLine1 = pLine - nStride2; - pLine2 = pLine - nStride; - line1 = (*pLine1++) << 4; - line2 = *pLine2++; - CONTEXT = (line1 & 0x1e00) | ((line2 >> 1) & 0x01f8); - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | ((*pLine1++) << 4); - line2 = (line2 << 8) | (*pLine2++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | - ((line1 >> k) & 0x0200) | ((line2 >> (k + 1)) & 0x0008); - } - pLine[cc] = cVal; - } - line1 <<= 8; - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | - ((line1 >> (7 - k)) & 0x0200) | - ((line2 >> (8 - k)) & 0x0008); - } - pLine[nLineBytes] = cVal; - } else { - pLine2 = pLine - nStride; - line2 = (h & 1) ? (*pLine2++) : 0; - CONTEXT = (line2 >> 1) & 0x01f8; - for (cc = 0; cc < nLineBytes; cc++) { - if (h & 1) { - line2 = (line2 << 8) | (*pLine2++); - } - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | - ((line2 >> (k + 1)) & 0x0008); - } - pLine[cc] = cVal; - } - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = - ((CONTEXT & 0x0efb) << 1) | bVal | ((line2 >> (8 - k)) & 0x0008); - } - pLine[nLineBytes] = cVal; - } - } - pLine += nStride; - } - return GBREG.release(); -} - -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template1_unopt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - GBREG->fill(0); - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - line1 = GBREG->getPixel(2, h - 2); - line1 |= GBREG->getPixel(1, h - 2) << 1; - line1 |= GBREG->getPixel(0, h - 2) << 2; - line2 = GBREG->getPixel(2, h - 1); - line2 |= GBREG->getPixel(1, h - 1) << 1; - line2 |= GBREG->getPixel(0, h - 1) << 2; - line3 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, h)) { - bVal = 0; - } else { - CONTEXT = line3; - CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 3; - CONTEXT |= line2 << 4; - CONTEXT |= line1 << 9; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - GBREG->setPixel(w, h, bVal); - } - line1 = ((line1 << 1) | GBREG->getPixel(w + 3, h - 2)) & 0x0f; - line2 = ((line2 << 1) | GBREG->getPixel(w + 3, h - 1)) & 0x1f; - line3 = ((line3 << 1) | bVal) & 0x07; - } - } - } - return GBREG.release(); -} -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_opt3( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - uint8_t* pLine, *pLine1, *pLine2, cVal; - int32_t nStride, nStride2, k; - int32_t nLineBytes, nBitsLeft, cc; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - if (!GBREG->m_pData) - return nullptr; - - pLine = GBREG->m_pData; - nStride = GBREG->m_nStride; - nStride2 = nStride << 1; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - if (h > 1) { - pLine1 = pLine - nStride2; - pLine2 = pLine - nStride; - line1 = (*pLine1++) << 1; - line2 = *pLine2++; - CONTEXT = (line1 & 0x0380) | ((line2 >> 3) & 0x007c); - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | ((*pLine1++) << 1); - line2 = (line2 << 8) | (*pLine2++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - ((line1 >> k) & 0x0080) | ((line2 >> (k + 3)) & 0x0004); - } - pLine[cc] = cVal; - } - line1 <<= 8; - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - ((line1 >> (7 - k)) & 0x0080) | - ((line2 >> (10 - k)) & 0x0004); - } - pLine[nLineBytes] = cVal; - } else { - pLine2 = pLine - nStride; - line2 = (h & 1) ? (*pLine2++) : 0; - CONTEXT = (line2 >> 3) & 0x007c; - for (cc = 0; cc < nLineBytes; cc++) { - if (h & 1) { - line2 = (line2 << 8) | (*pLine2++); - } - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - ((line2 >> (k + 3)) & 0x0004); - } - pLine[cc] = cVal; - } - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - (((line2 >> (10 - k))) & 0x0004); - } - pLine[nLineBytes] = cVal; - } - } - pLine += nStride; - } - return GBREG.release(); -} - -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template2_unopt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - GBREG->fill(0); - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - line1 = GBREG->getPixel(1, h - 2); - line1 |= GBREG->getPixel(0, h - 2) << 1; - line2 = GBREG->getPixel(1, h - 1); - line2 |= GBREG->getPixel(0, h - 1) << 1; - line3 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, h)) { - bVal = 0; - } else { - CONTEXT = line3; - CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 2; - CONTEXT |= line2 << 3; - CONTEXT |= line1 << 7; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - GBREG->setPixel(w, h, bVal); - } - line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 2)) & 0x07; - line2 = ((line2 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x0f; - line3 = ((line3 << 1) | bVal) & 0x03; - } - } - } - return GBREG.release(); -} - -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_opt3( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1; - uint8_t* pLine, *pLine1, cVal; - int32_t nStride, k; - int32_t nLineBytes, nBitsLeft, cc; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - if (!GBREG->m_pData) - return nullptr; - - pLine = GBREG->m_pData; - nStride = GBREG->m_nStride; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - if (h > 0) { - pLine1 = pLine - nStride; - line1 = *pLine1++; - CONTEXT = (line1 >> 1) & 0x03f0; - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | (*pLine1++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal | - ((line1 >> (k + 1)) & 0x0010); - } - pLine[cc] = cVal; - } - line1 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = - ((CONTEXT & 0x01f7) << 1) | bVal | ((line1 >> (8 - k)) & 0x0010); - } - pLine[nLineBytes] = cVal; - } else { - CONTEXT = 0; - for (cc = 0; cc < nLineBytes; cc++) { - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; - } - pLine[cc] = cVal; - } - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; - } - pLine[nLineBytes] = cVal; - } - } - pLine += nStride; - } - return GBREG.release(); -} - -CJBig2_Image* CJBig2_GRDProc::decode_Arith_Template3_unopt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - LTP = 0; - std::unique_ptr GBREG(new CJBig2_Image(GBW, GBH)); - GBREG->fill(0); - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - GBREG->copyLine(h, h - 1); - } else { - line1 = GBREG->getPixel(1, h - 1); - line1 |= GBREG->getPixel(0, h - 1) << 1; - line2 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, h)) { - bVal = 0; - } else { - CONTEXT = line2; - CONTEXT |= GBREG->getPixel(w + GBAT[0], h + GBAT[1]) << 4; - CONTEXT |= line1 << 5; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - GBREG->setPixel(w, h, bVal); - } - line1 = ((line1 << 1) | GBREG->getPixel(w + 2, h - 1)) & 0x1f; - line2 = ((line2 << 1) | bVal) & 0x0f; - } - } - } - return GBREG.release(); -} - -FXCODEC_STATUS CJBig2_GRDProc::Start_decode_Arith( - CJBig2_Image** pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - if (GBW == 0 || GBH == 0) { - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_READY; - m_pPause = pPause; - if (!*pImage) - *pImage = new CJBig2_Image(GBW, GBH); - if (!(*pImage)->m_pData) { - delete *pImage; - *pImage = nullptr; - m_ProssiveStatus = FXCODEC_STATUS_ERROR; - return FXCODEC_STATUS_ERROR; - } - m_DecodeType = 1; - m_pImage = pImage; - (*m_pImage)->fill(0); - m_pArithDecoder = pArithDecoder; - m_gbContext = gbContext; - LTP = 0; - m_pLine = nullptr; - m_loopIndex = 0; - return decode_Arith(pPause); -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith(IFX_Pause* pPause) { - int iline = m_loopIndex; - CJBig2_Image* pImage = *m_pImage; - if (GBTEMPLATE == 0) { - if (UseTemplate0Opt3()) { - m_ProssiveStatus = decode_Arith_Template0_opt3(pImage, m_pArithDecoder, - m_gbContext, pPause); - } else { - m_ProssiveStatus = decode_Arith_Template0_unopt(pImage, m_pArithDecoder, - m_gbContext, pPause); - } - } else if (GBTEMPLATE == 1) { - if (UseTemplate1Opt3()) { - m_ProssiveStatus = decode_Arith_Template1_opt3(pImage, m_pArithDecoder, - m_gbContext, pPause); - } else { - m_ProssiveStatus = decode_Arith_Template1_unopt(pImage, m_pArithDecoder, - m_gbContext, pPause); - } - } else if (GBTEMPLATE == 2) { - if (UseTemplate23Opt3()) { - m_ProssiveStatus = decode_Arith_Template2_opt3(pImage, m_pArithDecoder, - m_gbContext, pPause); - } else { - m_ProssiveStatus = decode_Arith_Template2_unopt(pImage, m_pArithDecoder, - m_gbContext, pPause); - } - } else { - if (UseTemplate23Opt3()) { - m_ProssiveStatus = decode_Arith_Template3_opt3(pImage, m_pArithDecoder, - m_gbContext, pPause); - } else { - m_ProssiveStatus = decode_Arith_Template3_unopt(pImage, m_pArithDecoder, - m_gbContext, pPause); - } - } - m_ReplaceRect.left = 0; - m_ReplaceRect.right = pImage->m_nWidth; - m_ReplaceRect.top = iline; - m_ReplaceRect.bottom = m_loopIndex; - if (m_ProssiveStatus == FXCODEC_STATUS_DECODE_FINISH) { - m_loopIndex = 0; - } - return m_ProssiveStatus; -} - -FXCODEC_STATUS CJBig2_GRDProc::Start_decode_MMR(CJBig2_Image** pImage, - CJBig2_BitStream* pStream, - IFX_Pause* pPause) { - int bitpos, i; - *pImage = new CJBig2_Image(GBW, GBH); - if (!(*pImage)->m_pData) { - delete (*pImage); - (*pImage) = nullptr; - m_ProssiveStatus = FXCODEC_STATUS_ERROR; - return m_ProssiveStatus; - } - bitpos = (int)pStream->getBitPos(); - FaxG4Decode(pStream->getBuf(), pStream->getLength(), &bitpos, - (*pImage)->m_pData, GBW, GBH, (*pImage)->m_nStride); - pStream->setBitPos(bitpos); - for (i = 0; (FX_DWORD)i < (*pImage)->m_nStride * GBH; i++) { - (*pImage)->m_pData[i] = ~(*pImage)->m_pData[i]; - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return m_ProssiveStatus; -} - -FXCODEC_STATUS CJBig2_GRDProc::Continue_decode(IFX_Pause* pPause) { - if (m_ProssiveStatus != FXCODEC_STATUS_DECODE_TOBECONTINUE) - return m_ProssiveStatus; - - if (m_DecodeType != 1) { - m_ProssiveStatus = FXCODEC_STATUS_ERROR; - return m_ProssiveStatus; - } - - return decode_Arith(pPause); -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_opt3( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - uint8_t* pLine1, *pLine2, cVal; - int32_t nStride, nStride2, k; - int32_t nLineBytes, nBitsLeft, cc; - if (!m_pLine) { - m_pLine = pImage->m_pData; - } - nStride = pImage->m_nStride; - nStride2 = nStride << 1; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - FX_DWORD height = GBH & 0x7fffffff; - for (; m_loopIndex < height; m_loopIndex++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(m_loopIndex, m_loopIndex - 1); - } else { - if (m_loopIndex > 1) { - pLine1 = m_pLine - nStride2; - pLine2 = m_pLine - nStride; - line1 = (*pLine1++) << 6; - line2 = *pLine2++; - CONTEXT = ((line1 & 0xf800) | (line2 & 0x07f0)); - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | ((*pLine1++) << 6); - line2 = (line2 << 8) | (*pLine2++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | - ((line1 >> k) & 0x0800) | ((line2 >> k) & 0x0010)); - } - m_pLine[cc] = cVal; - } - line1 <<= 8; - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = - (((CONTEXT & 0x7bf7) << 1) | bVal | - ((line1 >> (7 - k)) & 0x0800) | ((line2 >> (7 - k)) & 0x0010)); - } - m_pLine[nLineBytes] = cVal; - } else { - pLine2 = m_pLine - nStride; - line2 = (m_loopIndex & 1) ? (*pLine2++) : 0; - CONTEXT = (line2 & 0x07f0); - for (cc = 0; cc < nLineBytes; cc++) { - if (m_loopIndex & 1) { - line2 = (line2 << 8) | (*pLine2++); - } - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = - (((CONTEXT & 0x7bf7) << 1) | bVal | ((line2 >> k) & 0x0010)); - } - m_pLine[cc] = cVal; - } - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = (((CONTEXT & 0x7bf7) << 1) | bVal | - ((line2 >> (7 - k)) & 0x0010)); - } - m_pLine[nLineBytes] = cVal; - } - } - m_pLine += nStride; - if (pPause && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template0_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3; - for (; m_loopIndex < GBH; m_loopIndex++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x9b25]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(m_loopIndex, m_loopIndex - 1); - } else { - line1 = pImage->getPixel(1, m_loopIndex - 2); - line1 |= pImage->getPixel(0, m_loopIndex - 2) << 1; - line2 = pImage->getPixel(2, m_loopIndex - 1); - line2 |= pImage->getPixel(1, m_loopIndex - 1) << 1; - line2 |= pImage->getPixel(0, m_loopIndex - 1) << 2; - line3 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, m_loopIndex)) { - bVal = 0; - } else { - CONTEXT = line3; - CONTEXT |= pImage->getPixel(w + GBAT[0], m_loopIndex + GBAT[1]) << 4; - CONTEXT |= line2 << 5; - CONTEXT |= pImage->getPixel(w + GBAT[2], m_loopIndex + GBAT[3]) << 10; - CONTEXT |= pImage->getPixel(w + GBAT[4], m_loopIndex + GBAT[5]) << 11; - CONTEXT |= line1 << 12; - CONTEXT |= pImage->getPixel(w + GBAT[6], m_loopIndex + GBAT[7]) << 15; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - pImage->setPixel(w, m_loopIndex, bVal); - } - line1 = - ((line1 << 1) | pImage->getPixel(w + 2, m_loopIndex - 2)) & 0x07; - line2 = - ((line2 << 1) | pImage->getPixel(w + 3, m_loopIndex - 1)) & 0x1f; - line3 = ((line3 << 1) | bVal) & 0x0f; - } - } - if (pPause && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_opt3( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - uint8_t* pLine1, *pLine2, cVal; - int32_t nStride, nStride2, k; - int32_t nLineBytes, nBitsLeft, cc; - if (!m_pLine) { - m_pLine = pImage->m_pData; - } - nStride = pImage->m_nStride; - nStride2 = nStride << 1; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - for (; m_loopIndex < GBH; m_loopIndex++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(m_loopIndex, m_loopIndex - 1); - } else { - if (m_loopIndex > 1) { - pLine1 = m_pLine - nStride2; - pLine2 = m_pLine - nStride; - line1 = (*pLine1++) << 4; - line2 = *pLine2++; - CONTEXT = (line1 & 0x1e00) | ((line2 >> 1) & 0x01f8); - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | ((*pLine1++) << 4); - line2 = (line2 << 8) | (*pLine2++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | - ((line1 >> k) & 0x0200) | ((line2 >> (k + 1)) & 0x0008); - } - m_pLine[cc] = cVal; - } - line1 <<= 8; - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | - ((line1 >> (7 - k)) & 0x0200) | - ((line2 >> (8 - k)) & 0x0008); - } - m_pLine[nLineBytes] = cVal; - } else { - pLine2 = m_pLine - nStride; - line2 = (m_loopIndex & 1) ? (*pLine2++) : 0; - CONTEXT = (line2 >> 1) & 0x01f8; - for (cc = 0; cc < nLineBytes; cc++) { - if (m_loopIndex & 1) { - line2 = (line2 << 8) | (*pLine2++); - } - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x0efb) << 1) | bVal | - ((line2 >> (k + 1)) & 0x0008); - } - m_pLine[cc] = cVal; - } - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = - ((CONTEXT & 0x0efb) << 1) | bVal | ((line2 >> (8 - k)) & 0x0008); - } - m_pLine[nLineBytes] = cVal; - } - } - m_pLine += nStride; - if (pPause && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template1_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3; - for (FX_DWORD h = 0; h < GBH; h++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0795]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(h, h - 1); - } else { - line1 = pImage->getPixel(2, h - 2); - line1 |= pImage->getPixel(1, h - 2) << 1; - line1 |= pImage->getPixel(0, h - 2) << 2; - line2 = pImage->getPixel(2, h - 1); - line2 |= pImage->getPixel(1, h - 1) << 1; - line2 |= pImage->getPixel(0, h - 1) << 2; - line3 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, h)) { - bVal = 0; - } else { - CONTEXT = line3; - CONTEXT |= pImage->getPixel(w + GBAT[0], h + GBAT[1]) << 3; - CONTEXT |= line2 << 4; - CONTEXT |= line1 << 9; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - pImage->setPixel(w, h, bVal); - } - line1 = ((line1 << 1) | pImage->getPixel(w + 3, h - 2)) & 0x0f; - line2 = ((line2 << 1) | pImage->getPixel(w + 3, h - 1)) & 0x1f; - line3 = ((line3 << 1) | bVal) & 0x07; - } - } - if (pPause && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_opt3( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - uint8_t* pLine1, *pLine2, cVal; - int32_t nStride, nStride2, k; - int32_t nLineBytes, nBitsLeft, cc; - if (!m_pLine) { - m_pLine = pImage->m_pData; - } - nStride = pImage->m_nStride; - nStride2 = nStride << 1; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - for (; m_loopIndex < GBH; m_loopIndex++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(m_loopIndex, m_loopIndex - 1); - } else { - if (m_loopIndex > 1) { - pLine1 = m_pLine - nStride2; - pLine2 = m_pLine - nStride; - line1 = (*pLine1++) << 1; - line2 = *pLine2++; - CONTEXT = (line1 & 0x0380) | ((line2 >> 3) & 0x007c); - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | ((*pLine1++) << 1); - line2 = (line2 << 8) | (*pLine2++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - ((line1 >> k) & 0x0080) | ((line2 >> (k + 3)) & 0x0004); - } - m_pLine[cc] = cVal; - } - line1 <<= 8; - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - ((line1 >> (7 - k)) & 0x0080) | - ((line2 >> (10 - k)) & 0x0004); - } - m_pLine[nLineBytes] = cVal; - } else { - pLine2 = m_pLine - nStride; - line2 = (m_loopIndex & 1) ? (*pLine2++) : 0; - CONTEXT = (line2 >> 3) & 0x007c; - for (cc = 0; cc < nLineBytes; cc++) { - if (m_loopIndex & 1) { - line2 = (line2 << 8) | (*pLine2++); - } - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - ((line2 >> (k + 3)) & 0x0004); - } - m_pLine[cc] = cVal; - } - line2 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x01bd) << 1) | bVal | - (((line2 >> (10 - k))) & 0x0004); - } - m_pLine[nLineBytes] = cVal; - } - } - m_pLine += nStride; - if (pPause && m_loopIndex % 50 == 0 && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template2_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3; - for (; m_loopIndex < GBH; m_loopIndex++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x00e5]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(m_loopIndex, m_loopIndex - 1); - } else { - line1 = pImage->getPixel(1, m_loopIndex - 2); - line1 |= pImage->getPixel(0, m_loopIndex - 2) << 1; - line2 = pImage->getPixel(1, m_loopIndex - 1); - line2 |= pImage->getPixel(0, m_loopIndex - 1) << 1; - line3 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, m_loopIndex)) { - bVal = 0; - } else { - CONTEXT = line3; - CONTEXT |= pImage->getPixel(w + GBAT[0], m_loopIndex + GBAT[1]) << 2; - CONTEXT |= line2 << 3; - CONTEXT |= line1 << 7; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - pImage->setPixel(w, m_loopIndex, bVal); - } - line1 = - ((line1 << 1) | pImage->getPixel(w + 2, m_loopIndex - 2)) & 0x07; - line2 = - ((line2 << 1) | pImage->getPixel(w + 2, m_loopIndex - 1)) & 0x0f; - line3 = ((line3 << 1) | bVal) & 0x03; - } - } - if (pPause && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_opt3( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1; - uint8_t* pLine1, cVal; - int32_t nStride, k; - int32_t nLineBytes, nBitsLeft, cc; - if (!m_pLine) { - m_pLine = pImage->m_pData; - } - nStride = pImage->m_nStride; - nLineBytes = ((GBW + 7) >> 3) - 1; - nBitsLeft = GBW - (nLineBytes << 3); - for (; m_loopIndex < GBH; m_loopIndex++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(m_loopIndex, m_loopIndex - 1); - } else { - if (m_loopIndex > 0) { - pLine1 = m_pLine - nStride; - line1 = *pLine1++; - CONTEXT = (line1 >> 1) & 0x03f0; - for (cc = 0; cc < nLineBytes; cc++) { - line1 = (line1 << 8) | (*pLine1++); - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal | - ((line1 >> (k + 1)) & 0x0010); - } - m_pLine[cc] = cVal; - } - line1 <<= 8; - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = - ((CONTEXT & 0x01f7) << 1) | bVal | ((line1 >> (8 - k)) & 0x0010); - } - m_pLine[nLineBytes] = cVal; - } else { - CONTEXT = 0; - for (cc = 0; cc < nLineBytes; cc++) { - cVal = 0; - for (k = 7; k >= 0; k--) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << k; - CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; - } - m_pLine[cc] = cVal; - } - cVal = 0; - for (k = 0; k < nBitsLeft; k++) { - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x01f7) << 1) | bVal; - } - m_pLine[nLineBytes] = cVal; - } - } - m_pLine += nStride; - if (pPause && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} - -FXCODEC_STATUS CJBig2_GRDProc::decode_Arith_Template3_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_BOOL SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2; - for (; m_loopIndex < GBH; m_loopIndex++) { - if (TPGDON) { - SLTP = pArithDecoder->DECODE(&gbContext[0x0195]); - LTP = LTP ^ SLTP; - } - if (LTP == 1) { - pImage->copyLine(m_loopIndex, m_loopIndex - 1); - } else { - line1 = pImage->getPixel(1, m_loopIndex - 1); - line1 |= pImage->getPixel(0, m_loopIndex - 1) << 1; - line2 = 0; - for (FX_DWORD w = 0; w < GBW; w++) { - if (USESKIP && SKIP->getPixel(w, m_loopIndex)) { - bVal = 0; - } else { - CONTEXT = line2; - CONTEXT |= pImage->getPixel(w + GBAT[0], m_loopIndex + GBAT[1]) << 4; - CONTEXT |= line1 << 5; - bVal = pArithDecoder->DECODE(&gbContext[CONTEXT]); - } - if (bVal) { - pImage->setPixel(w, m_loopIndex, bVal); - } - line1 = - ((line1 << 1) | pImage->getPixel(w + 2, m_loopIndex - 1)) & 0x1f; - line2 = ((line2 << 1) | bVal) & 0x0f; - } - } - if (pPause && pPause->NeedToPauseNow()) { - m_loopIndex++; - m_ProssiveStatus = FXCODEC_STATUS_DECODE_TOBECONTINUE; - return FXCODEC_STATUS_DECODE_TOBECONTINUE; - } - } - m_ProssiveStatus = FXCODEC_STATUS_DECODE_FINISH; - return FXCODEC_STATUS_DECODE_FINISH; -} diff --git a/core/src/fxcodec/jbig2/JBig2_GrdProc.h b/core/src/fxcodec/jbig2/JBig2_GrdProc.h deleted file mode 100644 index 07f28cca6d..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_GrdProc.h +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_GRDPROC_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_GRDPROC_H_ - -#include "core/include/fxcodec/fx_codec_def.h" -#include "core/include/fxcrt/fx_coordinates.h" -#include "core/include/fxcrt/fx_system.h" - -class CJBig2_ArithDecoder; -class CJBig2_BitStream; -class CJBig2_Image; -class IFX_Pause; -struct JBig2ArithCtx; - -class CJBig2_GRDProc { - public: - CJBig2_GRDProc(); - - CJBig2_Image* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - FXCODEC_STATUS Start_decode_Arith(CJBig2_Image** pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS Start_decode_MMR(CJBig2_Image** pImage, - CJBig2_BitStream* pStream, - IFX_Pause* pPause); - FXCODEC_STATUS Continue_decode(IFX_Pause* pPause); - FX_RECT GetReplaceRect() const { return m_ReplaceRect; } - - FX_BOOL MMR; - FX_DWORD GBW; - FX_DWORD GBH; - uint8_t GBTEMPLATE; - FX_BOOL TPGDON; - FX_BOOL USESKIP; - CJBig2_Image* SKIP; - int8_t GBAT[8]; - - private: - bool UseTemplate0Opt3() const; - bool UseTemplate1Opt3() const; - bool UseTemplate23Opt3() const; - - FXCODEC_STATUS decode_Arith(IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template0_opt3(CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template0_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template1_opt3(CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template1_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template2_opt3(CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template2_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template3_opt3(CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - FXCODEC_STATUS decode_Arith_Template3_unopt( - CJBig2_Image* pImage, - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - CJBig2_Image* decode_Arith_Template0_opt3(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - CJBig2_Image* decode_Arith_Template0_unopt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - CJBig2_Image* decode_Arith_Template1_opt3(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - CJBig2_Image* decode_Arith_Template1_unopt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - CJBig2_Image* decode_Arith_Template2_opt3(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - CJBig2_Image* decode_Arith_Template2_unopt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - CJBig2_Image* decode_Arith_Template3_opt3(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - CJBig2_Image* decode_Arith_Template3_unopt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext); - - FX_DWORD m_loopIndex; - uint8_t* m_pLine; - IFX_Pause* m_pPause; - FXCODEC_STATUS m_ProssiveStatus; - CJBig2_Image** m_pImage; - CJBig2_ArithDecoder* m_pArithDecoder; - JBig2ArithCtx* m_gbContext; - FX_WORD m_DecodeType; - FX_BOOL LTP; - FX_RECT m_ReplaceRect; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_GRDPROC_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_GrrdProc.cpp b/core/src/fxcodec/jbig2/JBig2_GrrdProc.cpp deleted file mode 100644 index eaa9a76608..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_GrrdProc.cpp +++ /dev/null @@ -1,516 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_GrrdProc.h" - -#include - -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" - -CJBig2_Image* CJBig2_GRRDProc::decode(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext) { - if (GRW == 0 || GRH == 0) - return new CJBig2_Image(GRW, GRH); - - if (GRTEMPLATE == 0) { - if ((GRAT[0] == -1) && (GRAT[1] == -1) && (GRAT[2] == -1) && - (GRAT[3] == -1) && (GRREFERENCEDX == 0) && - (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) { - return decode_Template0_opt(pArithDecoder, grContext); - } - return decode_Template0_unopt(pArithDecoder, grContext); - } - - if ((GRREFERENCEDX == 0) && (GRW == (FX_DWORD)GRREFERENCE->m_nWidth)) - return decode_Template1_opt(pArithDecoder, grContext); - return decode_Template1_unopt(pArithDecoder, grContext); -} - -CJBig2_Image* CJBig2_GRRDProc::decode_Template0_unopt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3, line4, line5; - LTP = 0; - std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); - GRREG->fill(0); - for (FX_DWORD h = 0; h < GRH; h++) { - if (TPGRON) { - SLTP = pArithDecoder->DECODE(&grContext[0x0010]); - LTP = LTP ^ SLTP; - } - if (LTP == 0) { - line1 = GRREG->getPixel(1, h - 1); - line1 |= GRREG->getPixel(0, h - 1) << 1; - line2 = 0; - line3 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY - 1); - line3 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1) - << 1; - line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) - << 2; - line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); - line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) - << 1; - line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY + 1) - << 2; - for (FX_DWORD w = 0; w < GRW; w++) { - CONTEXT = line5; - CONTEXT |= line4 << 3; - CONTEXT |= line3 << 6; - CONTEXT |= GRREFERENCE->getPixel(w - GRREFERENCEDX + GRAT[2], - h - GRREFERENCEDY + GRAT[3]) - << 8; - CONTEXT |= line2 << 9; - CONTEXT |= line1 << 10; - CONTEXT |= GRREG->getPixel(w + GRAT[0], h + GRAT[1]) << 12; - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - GRREG->setPixel(w, h, bVal); - line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x03; - line2 = ((line2 << 1) | bVal) & 0x01; - line3 = ((line3 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, - h - GRREFERENCEDY - 1)) & - 0x03; - line4 = - ((line4 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & - 0x07; - line5 = ((line5 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, - h - GRREFERENCEDY + 1)) & - 0x07; - } - } else { - line1 = GRREG->getPixel(1, h - 1); - line1 |= GRREG->getPixel(0, h - 1) << 1; - line2 = 0; - line3 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY - 1); - line3 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1) - << 1; - line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) - << 2; - line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); - line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) - << 1; - line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY + 1) - << 2; - for (FX_DWORD w = 0; w < GRW; w++) { - bVal = GRREFERENCE->getPixel(w, h); - if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w - 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w - 1, h)) && - (bVal == GRREFERENCE->getPixel(w + 1, h)) && - (bVal == GRREFERENCE->getPixel(w - 1, h + 1)) && - (bVal == GRREFERENCE->getPixel(w, h + 1)) && - (bVal == GRREFERENCE->getPixel(w + 1, h + 1)))) { - CONTEXT = line5; - CONTEXT |= line4 << 3; - CONTEXT |= line3 << 6; - CONTEXT |= GRREFERENCE->getPixel(w - GRREFERENCEDX + GRAT[2], - h - GRREFERENCEDY + GRAT[3]) - << 8; - CONTEXT |= line2 << 9; - CONTEXT |= line1 << 10; - CONTEXT |= GRREG->getPixel(w + GRAT[0], h + GRAT[1]) << 12; - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - } - GRREG->setPixel(w, h, bVal); - line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x03; - line2 = ((line2 << 1) | bVal) & 0x01; - line3 = ((line3 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, - h - GRREFERENCEDY - 1)) & - 0x03; - line4 = - ((line4 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & - 0x07; - line5 = ((line5 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, - h - GRREFERENCEDY + 1)) & - 0x07; - } - } - } - return GRREG.release(); -} - -CJBig2_Image* CJBig2_GRRDProc::decode_Template0_opt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext) { - if (!GRREFERENCE->m_pData) - return nullptr; - - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line1_r, line2_r, line3_r; - uint8_t* pLine, *pLineR, cVal; - intptr_t nStride, nStrideR, nOffset; - int32_t k, nBits; - int32_t GRWR, GRHR; - int32_t GRW, GRH; - GRW = (int32_t)CJBig2_GRRDProc::GRW; - GRH = (int32_t)CJBig2_GRRDProc::GRH; - LTP = 0; - std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); - if (!GRREG->m_pData) - return nullptr; - - pLine = GRREG->m_pData; - pLineR = GRREFERENCE->m_pData; - nStride = GRREG->m_nStride; - nStrideR = GRREFERENCE->m_nStride; - GRWR = (int32_t)GRREFERENCE->m_nWidth; - GRHR = (int32_t)GRREFERENCE->m_nHeight; - if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { - GRREFERENCEDY = 0; - } - nOffset = -GRREFERENCEDY * nStrideR; - for (int32_t h = 0; h < GRH; h++) { - if (TPGRON) { - SLTP = pArithDecoder->DECODE(&grContext[0x0010]); - LTP = LTP ^ SLTP; - } - line1 = (h > 0) ? pLine[-nStride] << 4 : 0; - int32_t reference_h = h - GRREFERENCEDY; - FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); - FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); - FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); - line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; - line2_r = line2_r_ok ? pLineR[nOffset] : 0; - line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; - if (LTP == 0) { - CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) | - ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); - for (int32_t w = 0; w < GRW; w += 8) { - nBits = GRW - w > 8 ? 8 : GRW - w; - if (h > 0) - line1 = (line1 << 8) | - (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 : 0); - if (h > GRHR + GRREFERENCEDY + 1) { - line1_r = 0; - line2_r = 0; - line3_r = 0; - } else { - if (line1_r_ok) - line1_r = - (line1_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); - if (line2_r_ok) - line2_r = (line2_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); - if (line3_r_ok) { - line3_r = - (line3_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); - } else { - line3_r = 0; - } - } - cVal = 0; - for (k = 0; k < nBits; k++) { - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x0cdb) << 1) | (bVal << 9) | - ((line1 >> (7 - k)) & 0x0400) | - ((line1_r >> (7 - k)) & 0x0040) | - ((line2_r >> (10 - k)) & 0x0008) | - ((line3_r >> (13 - k)) & 0x0001); - } - pLine[w >> 3] = cVal; - } - } else { - CONTEXT = (line1 & 0x1c00) | (line1_r & 0x01c0) | - ((line2_r >> 3) & 0x0038) | ((line3_r >> 6) & 0x0007); - for (int32_t w = 0; w < GRW; w += 8) { - nBits = GRW - w > 8 ? 8 : GRW - w; - if (h > 0) - line1 = (line1 << 8) | - (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 4 : 0); - if (line1_r_ok) - line1_r = - (line1_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); - if (line2_r_ok) - line2_r = (line2_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); - if (line3_r_ok) { - line3_r = - (line3_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); - } else { - line3_r = 0; - } - cVal = 0; - for (k = 0; k < nBits; k++) { - bVal = GRREFERENCE->getPixel(w + k, h); - if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w + k - 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + k, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + k + 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + k - 1, h)) && - (bVal == GRREFERENCE->getPixel(w + k + 1, h)) && - (bVal == GRREFERENCE->getPixel(w + k - 1, h + 1)) && - (bVal == GRREFERENCE->getPixel(w + k, h + 1)) && - (bVal == GRREFERENCE->getPixel(w + k + 1, h + 1)))) { - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - } - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x0cdb) << 1) | (bVal << 9) | - ((line1 >> (7 - k)) & 0x0400) | - ((line1_r >> (7 - k)) & 0x0040) | - ((line2_r >> (10 - k)) & 0x0008) | - ((line3_r >> (13 - k)) & 0x0001); - } - pLine[w >> 3] = cVal; - } - } - pLine += nStride; - if (h < GRHR + GRREFERENCEDY) { - pLineR += nStrideR; - } - } - return GRREG.release(); -} - -CJBig2_Image* CJBig2_GRRDProc::decode_Template1_unopt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext) { - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line2, line3, line4, line5; - LTP = 0; - std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); - GRREG->fill(0); - for (FX_DWORD h = 0; h < GRH; h++) { - if (TPGRON) { - SLTP = pArithDecoder->DECODE(&grContext[0x0008]); - LTP = LTP ^ SLTP; - } - if (LTP == 0) { - line1 = GRREG->getPixel(1, h - 1); - line1 |= GRREG->getPixel(0, h - 1) << 1; - line1 |= GRREG->getPixel(-1, h - 1) << 2; - line2 = 0; - line3 = GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1); - line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) - << 2; - line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); - line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) - << 1; - for (FX_DWORD w = 0; w < GRW; w++) { - CONTEXT = line5; - CONTEXT |= line4 << 2; - CONTEXT |= line3 << 5; - CONTEXT |= line2 << 6; - CONTEXT |= line1 << 7; - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - GRREG->setPixel(w, h, bVal); - line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x07; - line2 = ((line2 << 1) | bVal) & 0x01; - line3 = ((line3 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 1, - h - GRREFERENCEDY - 1)) & - 0x01; - line4 = - ((line4 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & - 0x07; - line5 = ((line5 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, - h - GRREFERENCEDY + 1)) & - 0x03; - } - } else { - line1 = GRREG->getPixel(1, h - 1); - line1 |= GRREG->getPixel(0, h - 1) << 1; - line1 |= GRREG->getPixel(-1, h - 1) << 2; - line2 = 0; - line3 = GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY - 1); - line4 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY); - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY) << 1; - line4 |= GRREFERENCE->getPixel(-GRREFERENCEDX - 1, h - GRREFERENCEDY) - << 2; - line5 = GRREFERENCE->getPixel(-GRREFERENCEDX + 1, h - GRREFERENCEDY + 1); - line5 |= GRREFERENCE->getPixel(-GRREFERENCEDX, h - GRREFERENCEDY + 1) - << 1; - for (FX_DWORD w = 0; w < GRW; w++) { - bVal = GRREFERENCE->getPixel(w, h); - if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w - 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w - 1, h)) && - (bVal == GRREFERENCE->getPixel(w + 1, h)) && - (bVal == GRREFERENCE->getPixel(w - 1, h + 1)) && - (bVal == GRREFERENCE->getPixel(w, h + 1)) && - (bVal == GRREFERENCE->getPixel(w + 1, h + 1)))) { - CONTEXT = line5; - CONTEXT |= line4 << 2; - CONTEXT |= line3 << 5; - CONTEXT |= line2 << 6; - CONTEXT |= line1 << 7; - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - } - GRREG->setPixel(w, h, bVal); - line1 = ((line1 << 1) | GRREG->getPixel(w + 2, h - 1)) & 0x07; - line2 = ((line2 << 1) | bVal) & 0x01; - line3 = ((line3 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 1, - h - GRREFERENCEDY - 1)) & - 0x01; - line4 = - ((line4 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, h - GRREFERENCEDY)) & - 0x07; - line5 = ((line5 << 1) | - GRREFERENCE->getPixel(w - GRREFERENCEDX + 2, - h - GRREFERENCEDY + 1)) & - 0x03; - } - } - } - return GRREG.release(); -} - -CJBig2_Image* CJBig2_GRRDProc::decode_Template1_opt( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext) { - if (!GRREFERENCE->m_pData) - return nullptr; - - FX_BOOL LTP, SLTP, bVal; - FX_DWORD CONTEXT; - FX_DWORD line1, line1_r, line2_r, line3_r; - uint8_t* pLine, *pLineR, cVal; - intptr_t nStride, nStrideR, nOffset; - int32_t k, nBits; - int32_t GRWR, GRHR; - int32_t GRW, GRH; - GRW = (int32_t)CJBig2_GRRDProc::GRW; - GRH = (int32_t)CJBig2_GRRDProc::GRH; - LTP = 0; - std::unique_ptr GRREG(new CJBig2_Image(GRW, GRH)); - if (!GRREG->m_pData) - return nullptr; - - pLine = GRREG->m_pData; - pLineR = GRREFERENCE->m_pData; - nStride = GRREG->m_nStride; - nStrideR = GRREFERENCE->m_nStride; - GRWR = (int32_t)GRREFERENCE->m_nWidth; - GRHR = (int32_t)GRREFERENCE->m_nHeight; - if (GRREFERENCEDY < -GRHR + 1 || GRREFERENCEDY > GRHR - 1) { - GRREFERENCEDY = 0; - } - nOffset = -GRREFERENCEDY * nStrideR; - for (int32_t h = 0; h < GRH; h++) { - if (TPGRON) { - SLTP = pArithDecoder->DECODE(&grContext[0x0008]); - LTP = LTP ^ SLTP; - } - line1 = (h > 0) ? pLine[-nStride] << 1 : 0; - int32_t reference_h = h - GRREFERENCEDY; - FX_BOOL line1_r_ok = (reference_h > 0 && reference_h < GRHR + 1); - FX_BOOL line2_r_ok = (reference_h > -1 && reference_h < GRHR); - FX_BOOL line3_r_ok = (reference_h > -2 && reference_h < GRHR - 1); - line1_r = line1_r_ok ? pLineR[nOffset - nStrideR] : 0; - line2_r = line2_r_ok ? pLineR[nOffset] : 0; - line3_r = line3_r_ok ? pLineR[nOffset + nStrideR] : 0; - if (LTP == 0) { - CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) | - ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); - for (int32_t w = 0; w < GRW; w += 8) { - nBits = GRW - w > 8 ? 8 : GRW - w; - if (h > 0) - line1 = (line1 << 8) | - (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 : 0); - if (line1_r_ok) - line1_r = - (line1_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); - if (line2_r_ok) - line2_r = (line2_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); - if (line3_r_ok) { - line3_r = - (line3_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); - } else { - line3_r = 0; - } - cVal = 0; - for (k = 0; k < nBits; k++) { - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x018d) << 1) | (bVal << 6) | - ((line1 >> (7 - k)) & 0x0080) | - ((line1_r >> (9 - k)) & 0x0020) | - ((line2_r >> (11 - k)) & 0x0004) | - ((line3_r >> (13 - k)) & 0x0001); - } - pLine[w >> 3] = cVal; - } - } else { - CONTEXT = (line1 & 0x0380) | ((line1_r >> 2) & 0x0020) | - ((line2_r >> 4) & 0x001c) | ((line3_r >> 6) & 0x0003); - for (int32_t w = 0; w < GRW; w += 8) { - nBits = GRW - w > 8 ? 8 : GRW - w; - if (h > 0) - line1 = (line1 << 8) | - (w + 8 < GRW ? pLine[-nStride + (w >> 3) + 1] << 1 : 0); - if (line1_r_ok) - line1_r = - (line1_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset - nStrideR + (w >> 3) + 1] : 0); - if (line2_r_ok) - line2_r = (line2_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + (w >> 3) + 1] : 0); - if (line3_r_ok) { - line3_r = - (line3_r << 8) | - (w + 8 < GRWR ? pLineR[nOffset + nStrideR + (w >> 3) + 1] : 0); - } else { - line3_r = 0; - } - cVal = 0; - for (k = 0; k < nBits; k++) { - bVal = GRREFERENCE->getPixel(w + k, h); - if (!(TPGRON && (bVal == GRREFERENCE->getPixel(w + k - 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + k, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + k + 1, h - 1)) && - (bVal == GRREFERENCE->getPixel(w + k - 1, h)) && - (bVal == GRREFERENCE->getPixel(w + k + 1, h)) && - (bVal == GRREFERENCE->getPixel(w + k - 1, h + 1)) && - (bVal == GRREFERENCE->getPixel(w + k, h + 1)) && - (bVal == GRREFERENCE->getPixel(w + k + 1, h + 1)))) { - bVal = pArithDecoder->DECODE(&grContext[CONTEXT]); - } - cVal |= bVal << (7 - k); - CONTEXT = ((CONTEXT & 0x018d) << 1) | (bVal << 6) | - ((line1 >> (7 - k)) & 0x0080) | - ((line1_r >> (9 - k)) & 0x0020) | - ((line2_r >> (11 - k)) & 0x0004) | - ((line3_r >> (13 - k)) & 0x0001); - } - pLine[w >> 3] = cVal; - } - } - pLine += nStride; - if (h < GRHR + GRREFERENCEDY) { - pLineR += nStrideR; - } - } - return GRREG.release(); -} diff --git a/core/src/fxcodec/jbig2/JBig2_GrrdProc.h b/core/src/fxcodec/jbig2/JBig2_GrrdProc.h deleted file mode 100644 index 5d8eabb164..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_GrrdProc.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_GRRDPROC_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_GRRDPROC_H_ - -#include "core/include/fxcrt/fx_system.h" - -class CJBig2_ArithDecoder; -class CJBig2_Image; -struct JBig2ArithCtx; - -class CJBig2_GRRDProc { - public: - CJBig2_Image* decode(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext); - - CJBig2_Image* decode_Template0_unopt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext); - - CJBig2_Image* decode_Template0_opt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext); - - CJBig2_Image* decode_Template1_unopt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext); - - CJBig2_Image* decode_Template1_opt(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext); - - FX_DWORD GRW; - FX_DWORD GRH; - FX_BOOL GRTEMPLATE; - CJBig2_Image* GRREFERENCE; - int32_t GRREFERENCEDX; - int32_t GRREFERENCEDY; - FX_BOOL TPGRON; - int8_t GRAT[4]; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_GRRDPROC_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_GsidProc.cpp b/core/src/fxcodec/jbig2/JBig2_GsidProc.cpp deleted file mode 100644 index 42b3b59142..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_GsidProc.cpp +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_GsidProc.h" - -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" -#include "core/src/fxcodec/jbig2/JBig2_GrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" -#include "core/src/fxcodec/jbig2/JBig2_List.h" - -FX_DWORD* CJBig2_GSIDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - std::unique_ptr pGRD(new CJBig2_GRDProc()); - pGRD->MMR = GSMMR; - pGRD->GBW = GSW; - pGRD->GBH = GSH; - pGRD->GBTEMPLATE = GSTEMPLATE; - pGRD->TPGDON = 0; - pGRD->USESKIP = GSUSESKIP; - pGRD->SKIP = GSKIP; - if (GSTEMPLATE <= 1) { - pGRD->GBAT[0] = 3; - } else { - pGRD->GBAT[0] = 2; - } - pGRD->GBAT[1] = -1; - if (pGRD->GBTEMPLATE == 0) { - pGRD->GBAT[2] = -3; - pGRD->GBAT[3] = -1; - pGRD->GBAT[4] = 2; - pGRD->GBAT[5] = -2; - pGRD->GBAT[6] = -2; - pGRD->GBAT[7] = -2; - } - - CJBig2_List GSPLANES(GSBPP); - for (int32_t i = GSBPP - 1; i >= 0; --i) { - CJBig2_Image* pImage = nullptr; - FXCODEC_STATUS status = - pGRD->Start_decode_Arith(&pImage, pArithDecoder, gbContext, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) - pGRD->Continue_decode(pPause); - - if (!pImage) - return nullptr; - - GSPLANES.set(i, pImage); - - if (i < GSBPP - 1) - pImage->composeFrom(0, 0, GSPLANES.get(i + 1), JBIG2_COMPOSE_XOR); - } - std::unique_ptr GSVALS( - FX_Alloc2D(FX_DWORD, GSW, GSH)); - JBIG2_memset(GSVALS.get(), 0, sizeof(FX_DWORD) * GSW * GSH); - for (FX_DWORD y = 0; y < GSH; ++y) { - for (FX_DWORD x = 0; x < GSW; ++x) { - for (int32_t i = 0; i < GSBPP; ++i) { - GSVALS.get()[y * GSW + x] |= GSPLANES.get(i)->getPixel(x, y) << i; - } - } - } - return GSVALS.release(); -} - -FX_DWORD* CJBig2_GSIDProc::decode_MMR(CJBig2_BitStream* pStream, - IFX_Pause* pPause) { - std::unique_ptr pGRD(new CJBig2_GRDProc()); - pGRD->MMR = GSMMR; - pGRD->GBW = GSW; - pGRD->GBH = GSH; - - std::unique_ptr GSPLANES(FX_Alloc(CJBig2_Image*, GSBPP)); - JBIG2_memset(GSPLANES.get(), 0, sizeof(CJBig2_Image*) * GSBPP); - FXCODEC_STATUS status = - pGRD->Start_decode_MMR(&GSPLANES.get()[GSBPP - 1], pStream, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - pGRD->Continue_decode(pPause); - } - if (!GSPLANES.get()[GSBPP - 1]) - return nullptr; - - pStream->alignByte(); - pStream->offset(3); - int32_t J = GSBPP - 2; - while (J >= 0) { - FXCODEC_STATUS status = - pGRD->Start_decode_MMR(&GSPLANES.get()[J], pStream, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - pGRD->Continue_decode(pPause); - } - if (!GSPLANES.get()[J]) { - for (int32_t K = GSBPP - 1; K > J; --K) { - delete GSPLANES.get()[K]; - return nullptr; - } - } - pStream->alignByte(); - pStream->offset(3); - GSPLANES.get()[J]->composeFrom(0, 0, GSPLANES.get()[J + 1], - JBIG2_COMPOSE_XOR); - J = J - 1; - } - std::unique_ptr GSVALS(FX_Alloc2D(FX_DWORD, GSW, GSH)); - JBIG2_memset(GSVALS.get(), 0, sizeof(FX_DWORD) * GSW * GSH); - for (FX_DWORD y = 0; y < GSH; ++y) { - for (FX_DWORD x = 0; x < GSW; ++x) { - for (J = 0; J < GSBPP; ++J) { - GSVALS.get()[y * GSW + x] |= GSPLANES.get()[J]->getPixel(x, y) << J; - } - } - } - for (J = 0; J < GSBPP; ++J) { - delete GSPLANES.get()[J]; - } - return GSVALS.release(); -} diff --git a/core/src/fxcodec/jbig2/JBig2_GsidProc.h b/core/src/fxcodec/jbig2/JBig2_GsidProc.h deleted file mode 100644 index dfd16b8f0c..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_GsidProc.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_GSIDPROC_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_GSIDPROC_H_ - -#include "core/include/fxcrt/fx_system.h" - -class CJBig2_ArithDecoder; -class CJBig2_BitStream; -class CJBig2_Image; -class IFX_Pause; -struct JBig2ArithCtx; - -class CJBig2_GSIDProc { - public: - FX_DWORD* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - - FX_DWORD* decode_MMR(CJBig2_BitStream* pStream, IFX_Pause* pPause); - - public: - FX_BOOL GSMMR; - FX_BOOL GSUSESKIP; - uint8_t GSBPP; - FX_DWORD GSW; - FX_DWORD GSH; - uint8_t GSTEMPLATE; - CJBig2_Image* GSKIP; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_GSIDPROC_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_HtrdProc.cpp b/core/src/fxcodec/jbig2/JBig2_HtrdProc.cpp deleted file mode 100644 index d49cab92e5..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_HtrdProc.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_HtrdProc.h" - -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fxcodec/jbig2/JBig2_GsidProc.h" - -CJBig2_Image* CJBig2_HTRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_DWORD ng, mg; - int32_t x, y; - FX_DWORD HBPP; - FX_DWORD* GI; - std::unique_ptr HSKIP; - std::unique_ptr HTREG(new CJBig2_Image(HBW, HBH)); - HTREG->fill(HDEFPIXEL); - if (HENABLESKIP == 1) { - HSKIP.reset(new CJBig2_Image(HGW, HGH)); - for (mg = 0; mg < HGH; mg++) { - for (ng = 0; ng < HGW; ng++) { - x = (HGX + mg * HRY + ng * HRX) >> 8; - y = (HGY + mg * HRX - ng * HRY) >> 8; - if ((x + HPW <= 0) | (x >= (int32_t)HBW) | (y + HPH <= 0) | - (y >= (int32_t)HPH)) { - HSKIP->setPixel(ng, mg, 1); - } else { - HSKIP->setPixel(ng, mg, 0); - } - } - } - } - HBPP = 1; - while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { - HBPP++; - } - std::unique_ptr pGID(new CJBig2_GSIDProc()); - pGID->GSMMR = HMMR; - pGID->GSW = HGW; - pGID->GSH = HGH; - pGID->GSBPP = (uint8_t)HBPP; - pGID->GSUSESKIP = HENABLESKIP; - pGID->GSKIP = HSKIP.get(); - pGID->GSTEMPLATE = HTEMPLATE; - GI = pGID->decode_Arith(pArithDecoder, gbContext, pPause); - if (!GI) - return nullptr; - - for (mg = 0; mg < HGH; mg++) { - for (ng = 0; ng < HGW; ng++) { - x = (HGX + mg * HRY + ng * HRX) >> 8; - y = (HGY + mg * HRX - ng * HRY) >> 8; - FX_DWORD pat_index = GI[mg * HGW + ng]; - if (pat_index >= HNUMPATS) { - pat_index = HNUMPATS - 1; - } - HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); - } - } - FX_Free(GI); - return HTREG.release(); -} - -CJBig2_Image* CJBig2_HTRDProc::decode_MMR(CJBig2_BitStream* pStream, - IFX_Pause* pPause) { - FX_DWORD ng, mg; - int32_t x, y; - FX_DWORD* GI; - std::unique_ptr HTREG(new CJBig2_Image(HBW, HBH)); - HTREG->fill(HDEFPIXEL); - FX_DWORD HBPP = 1; - while ((FX_DWORD)(1 << HBPP) < HNUMPATS) { - HBPP++; - } - std::unique_ptr pGID(new CJBig2_GSIDProc()); - pGID->GSMMR = HMMR; - pGID->GSW = HGW; - pGID->GSH = HGH; - pGID->GSBPP = (uint8_t)HBPP; - pGID->GSUSESKIP = 0; - GI = pGID->decode_MMR(pStream, pPause); - if (!GI) - return nullptr; - - for (mg = 0; mg < HGH; mg++) { - for (ng = 0; ng < HGW; ng++) { - x = (HGX + mg * HRY + ng * HRX) >> 8; - y = (HGY + mg * HRX - ng * HRY) >> 8; - FX_DWORD pat_index = GI[mg * HGW + ng]; - if (pat_index >= HNUMPATS) { - pat_index = HNUMPATS - 1; - } - HTREG->composeFrom(x, y, HPATS[pat_index], HCOMBOP); - } - } - FX_Free(GI); - return HTREG.release(); -} diff --git a/core/src/fxcodec/jbig2/JBig2_HtrdProc.h b/core/src/fxcodec/jbig2/JBig2_HtrdProc.h deleted file mode 100644 index f66ad75eca..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_HtrdProc.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_HTRDPROC_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_HTRDPROC_H_ - -#include "core/include/fxcrt/fx_system.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" - -class CJBig2_ArithDecoder; -class CJBig2_BitStream; -class IFX_Pause; -struct JBig2ArithCtx; - -class CJBig2_HTRDProc { - public: - CJBig2_Image* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - - CJBig2_Image* decode_MMR(CJBig2_BitStream* pStream, IFX_Pause* pPause); - - public: - FX_DWORD HBW; - FX_DWORD HBH; - FX_BOOL HMMR; - uint8_t HTEMPLATE; - FX_DWORD HNUMPATS; - CJBig2_Image** HPATS; - FX_BOOL HDEFPIXEL; - JBig2ComposeOp HCOMBOP; - FX_BOOL HENABLESKIP; - FX_DWORD HGW; - FX_DWORD HGH; - int32_t HGX; - int32_t HGY; - FX_WORD HRX; - FX_WORD HRY; - uint8_t HPW; - uint8_t HPH; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_HTRDPROC_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp deleted file mode 100644 index 093d2abadb..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h" - -#include "core/src/fxcodec/jbig2/JBig2_Define.h" - -CJBig2_HuffmanDecoder::CJBig2_HuffmanDecoder(CJBig2_BitStream* pStream) - : m_pStream(pStream) { -} - -CJBig2_HuffmanDecoder::~CJBig2_HuffmanDecoder() {} - -int CJBig2_HuffmanDecoder::decodeAValue(CJBig2_HuffmanTable* pTable, - int* nResult) { - int nVal = 0; - int nBits = 0; - while (1) { - FX_DWORD nTmp; - if (m_pStream->read1Bit(&nTmp) == -1) - break; - - nVal = (nVal << 1) | nTmp; - ++nBits; - for (FX_DWORD i = 0; i < pTable->Size(); ++i) { - if (pTable->GetPREFLEN()[i] == nBits && pTable->GetCODES()[i] == nVal) { - if (pTable->IsHTOOB() && i == pTable->Size() - 1) - return JBIG2_OOB; - - if (m_pStream->readNBits(pTable->GetRANGELEN()[i], &nTmp) == -1) - return -1; - - FX_DWORD offset = pTable->IsHTOOB() ? 3 : 2; - if (i == pTable->Size() - offset) - *nResult = pTable->GetRANGELOW()[i] - nTmp; - else - *nResult = pTable->GetRANGELOW()[i] + nTmp; - return 0; - } - } - } - return -1; -} diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h b/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h deleted file mode 100644 index afa81796c2..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANDECODER_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANDECODER_H_ - -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanTable.h" -class CJBig2_HuffmanDecoder { - public: - explicit CJBig2_HuffmanDecoder(CJBig2_BitStream* pStream); - - ~CJBig2_HuffmanDecoder(); - - int decodeAValue(CJBig2_HuffmanTable* pTable, int* nResult); - - private: - CJBig2_BitStream* const m_pStream; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANDECODER_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp b/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp deleted file mode 100644 index 5833f118fe..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp +++ /dev/null @@ -1,137 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_HuffmanTable.h" - -#include -#include - -#include "core/include/fxcrt/fx_memory.h" -#include "core/src/fxcodec/jbig2/JBig2_BitStream.h" -#include "core/src/fxcodec/jbig2/JBig2_Define.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h" - -CJBig2_HuffmanTable::CJBig2_HuffmanTable(const JBig2TableLine* pTable, - FX_DWORD nLines, - bool bHTOOB) - : m_bOK(true), HTOOB(bHTOOB), NTEMP(nLines) { - ParseFromStandardTable(pTable); -} - -CJBig2_HuffmanTable::CJBig2_HuffmanTable(CJBig2_BitStream* pStream) - : HTOOB(false), NTEMP(0) { - m_bOK = ParseFromCodedBuffer(pStream); -} - -CJBig2_HuffmanTable::~CJBig2_HuffmanTable() { -} - -void CJBig2_HuffmanTable::ParseFromStandardTable(const JBig2TableLine* pTable) { - PREFLEN.resize(NTEMP); - RANGELEN.resize(NTEMP); - RANGELOW.resize(NTEMP); - for (FX_DWORD i = 0; i < NTEMP; ++i) { - PREFLEN[i] = pTable[i].PREFLEN; - RANGELEN[i] = pTable[i].RANDELEN; - RANGELOW[i] = pTable[i].RANGELOW; - } - InitCodes(); -} - -bool CJBig2_HuffmanTable::ParseFromCodedBuffer(CJBig2_BitStream* pStream) { - unsigned char cTemp; - if (pStream->read1Byte(&cTemp) == -1) - return false; - - HTOOB = !!(cTemp & 0x01); - unsigned char HTPS = ((cTemp >> 1) & 0x07) + 1; - unsigned char HTRS = ((cTemp >> 4) & 0x07) + 1; - FX_DWORD HTLOW; - FX_DWORD HTHIGH; - if (pStream->readInteger(&HTLOW) == -1 || - pStream->readInteger(&HTHIGH) == -1) { - return false; - } - - const int low = static_cast(HTLOW); - const int high = static_cast(HTHIGH); - if (low > high) - return false; - - ExtendBuffers(false); - int cur_low = low; - do { - if ((pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) || - (pStream->readNBits(HTRS, &RANGELEN[NTEMP]) == -1)) { - return false; - } - RANGELOW[NTEMP] = cur_low; - cur_low += (1 << RANGELEN[NTEMP]); - ExtendBuffers(true); - } while (cur_low < high); - - if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) - return false; - - RANGELEN[NTEMP] = 32; - RANGELOW[NTEMP] = low - 1; - ExtendBuffers(true); - - if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) - return false; - - RANGELEN[NTEMP] = 32; - RANGELOW[NTEMP] = high; - ExtendBuffers(true); - - if (HTOOB) { - if (pStream->readNBits(HTPS, &PREFLEN[NTEMP]) == -1) - return false; - - ++NTEMP; - } - - InitCodes(); - return true; -} - -void CJBig2_HuffmanTable::InitCodes() { - int lenmax = 0; - for (FX_DWORD i = 0; i < NTEMP; ++i) - lenmax = std::max(PREFLEN[i], lenmax); - - CODES.resize(NTEMP); - std::vector LENCOUNT(lenmax + 1); - std::vector FIRSTCODE(lenmax + 1); - for (int len : PREFLEN) - ++LENCOUNT[len]; - - FIRSTCODE[0] = 0; - LENCOUNT[0] = 0; - for (int i = 1; i <= lenmax; ++i) { - FIRSTCODE[i] = (FIRSTCODE[i - 1] + LENCOUNT[i - 1]) << 1; - int CURCODE = FIRSTCODE[i]; - for (FX_DWORD j = 0; j < NTEMP; ++j) { - if (PREFLEN[j] == i) - CODES[j] = CURCODE++; - } - } -} - -void CJBig2_HuffmanTable::ExtendBuffers(bool increment) { - if (increment) - ++NTEMP; - - size_t size = PREFLEN.size(); - if (NTEMP < size) - return; - - size += 16; - ASSERT(NTEMP < size); - PREFLEN.resize(size); - RANGELEN.resize(size); - RANGELOW.resize(size); -} diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.h b/core/src/fxcodec/jbig2/JBig2_HuffmanTable.h deleted file mode 100644 index 568c497350..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanTable.h +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_H_ - -#include - -#include "core/include/fxcrt/fx_system.h" - -class CJBig2_BitStream; -struct JBig2TableLine; - -class CJBig2_HuffmanTable { - public: - CJBig2_HuffmanTable(const JBig2TableLine* pTable, - FX_DWORD nLines, - bool bHTOOB); - - explicit CJBig2_HuffmanTable(CJBig2_BitStream* pStream); - - ~CJBig2_HuffmanTable(); - - bool IsHTOOB() const { return HTOOB; } - FX_DWORD Size() const { return NTEMP; } - const std::vector& GetCODES() const { return CODES; } - const std::vector& GetPREFLEN() const { return PREFLEN; } - const std::vector& GetRANGELEN() const { return RANGELEN; } - const std::vector& GetRANGELOW() const { return RANGELOW; } - bool IsOK() const { return m_bOK; } - - private: - void ParseFromStandardTable(const JBig2TableLine* pTable); - bool ParseFromCodedBuffer(CJBig2_BitStream* pStream); - void InitCodes(); - void ExtendBuffers(bool increment); - - bool m_bOK; - bool HTOOB; - FX_DWORD NTEMP; - std::vector CODES; - std::vector PREFLEN; - std::vector RANGELEN; - std::vector RANGELOW; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h b/core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h deleted file mode 100644 index a2ce232d63..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_STANDARD_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_STANDARD_H_ - -#include "core/include/fxcrt/fx_system.h" - -struct JBig2TableLine { - int PREFLEN; - int RANDELEN; - int RANGELOW; -}; - -const bool HuffmanTable_HTOOB_B1 = false; -const JBig2TableLine HuffmanTable_B1[] = {{1, 4, 0}, - {2, 8, 16}, - {3, 16, 272}, - {0, 32, -1}, - {3, 32, 65808}}; -const bool HuffmanTable_HTOOB_B2 = true; -const JBig2TableLine HuffmanTable_B2[] = {{1, 0, 0}, {2, 0, 1}, {3, 0, 2}, - {4, 3, 3}, {5, 6, 11}, {0, 32, -1}, - {6, 32, 75}, {6, 0, 0}}; -const bool HuffmanTable_HTOOB_B3 = true; -const JBig2TableLine HuffmanTable_B3[] = { - {8, 8, -256}, {1, 0, 0}, {2, 0, 1}, {3, 0, 2}, {4, 3, 3}, - {5, 6, 11}, {8, 32, -257}, {7, 32, 75}, {6, 0, 0}}; -const bool HuffmanTable_HTOOB_B4 = false; -const JBig2TableLine HuffmanTable_B4[] = { - {1, 0, 1}, {2, 0, 2}, {3, 0, 3}, {4, 3, 4}, - {5, 6, 12}, {0, 32, -1}, {5, 32, 76}, -}; -const bool HuffmanTable_HTOOB_B5 = false; -const JBig2TableLine HuffmanTable_B5[] = {{7, 8, -255}, {1, 0, 1}, {2, 0, 2}, - {3, 0, 3}, {4, 3, 4}, {5, 6, 12}, - {7, 32, -256}, {6, 32, 76}}; -const bool HuffmanTable_HTOOB_B6 = false; -const JBig2TableLine HuffmanTable_B6[] = { - {5, 10, -2048}, {4, 9, -1024}, {4, 8, -512}, {4, 7, -256}, {5, 6, -128}, - {5, 5, -64}, {4, 5, -32}, {2, 7, 0}, {3, 7, 128}, {3, 8, 256}, - {4, 9, 512}, {4, 10, 1024}, {6, 32, -2049}, {6, 32, 2048}}; -const bool HuffmanTable_HTOOB_B7 = false; -const JBig2TableLine HuffmanTable_B7[] = { - {4, 9, -1024}, {3, 8, -512}, {4, 7, -256}, {5, 6, -128}, {5, 5, -64}, - {4, 5, -32}, {4, 5, 0}, {5, 5, 32}, {5, 6, 64}, {4, 7, 128}, - {3, 8, 256}, {3, 9, 512}, {3, 10, 1024}, {5, 32, -1025}, {5, 32, 2048}, -}; -const bool HuffmanTable_HTOOB_B8 = true; -const JBig2TableLine HuffmanTable_B8[] = { - {8, 3, -15}, {9, 1, -7}, {8, 1, -5}, {9, 0, -3}, {7, 0, -2}, - {4, 0, -1}, {2, 1, 0}, {5, 0, 2}, {6, 0, 3}, {3, 4, 4}, - {6, 1, 20}, {4, 4, 22}, {4, 5, 38}, {5, 6, 70}, {5, 7, 134}, - {6, 7, 262}, {7, 8, 390}, {6, 10, 646}, {9, 32, -16}, {9, 32, 1670}, - {2, 0, 0}}; -const bool HuffmanTable_HTOOB_B9 = true; -const JBig2TableLine HuffmanTable_B9[] = { - {8, 4, -31}, {9, 2, -15}, {8, 2, -11}, {9, 1, -7}, {7, 1, -5}, - {4, 1, -3}, {3, 1, -1}, {3, 1, 1}, {5, 1, 3}, {6, 1, 5}, - {3, 5, 7}, {6, 2, 39}, {4, 5, 43}, {4, 6, 75}, {5, 7, 139}, - {5, 8, 267}, {6, 8, 523}, {7, 9, 779}, {6, 11, 1291}, {9, 32, -32}, - {9, 32, 3339}, {2, 0, 0}}; -const bool HuffmanTable_HTOOB_B10 = true; -const JBig2TableLine HuffmanTable_B10[] = { - {7, 4, -21}, {8, 0, -5}, {7, 0, -4}, {5, 0, -3}, {2, 2, -2}, - {5, 0, 2}, {6, 0, 3}, {7, 0, 4}, {8, 0, 5}, {2, 6, 6}, - {5, 5, 70}, {6, 5, 102}, {6, 6, 134}, {6, 7, 198}, {6, 8, 326}, - {6, 9, 582}, {6, 10, 1094}, {7, 11, 2118}, {8, 32, -22}, {8, 32, 4166}, - {2, 0, 0}}; -const bool HuffmanTable_HTOOB_B11 = false; -const JBig2TableLine HuffmanTable_B11[] = { - {1, 0, 1}, {2, 1, 2}, {4, 0, 4}, {4, 1, 5}, {5, 1, 7}, - {5, 2, 9}, {6, 2, 13}, {7, 2, 17}, {7, 3, 21}, {7, 4, 29}, - {7, 5, 45}, {7, 6, 77}, {0, 32, 0}, {7, 32, 141}}; -const bool HuffmanTable_HTOOB_B12 = false; -const JBig2TableLine HuffmanTable_B12[] = { - {1, 0, 1}, {2, 0, 2}, {3, 1, 3}, {5, 0, 5}, {5, 1, 6}, - {6, 1, 8}, {7, 0, 10}, {7, 1, 11}, {7, 2, 13}, {7, 3, 17}, - {7, 4, 25}, {8, 5, 41}, {0, 32, 0}, {8, 32, 73}}; -const bool HuffmanTable_HTOOB_B13 = false; -const JBig2TableLine HuffmanTable_B13[] = { - {1, 0, 1}, {3, 0, 2}, {4, 0, 3}, {5, 0, 4}, {4, 1, 5}, - {3, 3, 7}, {6, 1, 15}, {6, 2, 17}, {6, 3, 21}, {6, 4, 29}, - {6, 5, 45}, {7, 6, 77}, {0, 32, 0}, {7, 32, 141}}; -const bool HuffmanTable_HTOOB_B14 = false; -const JBig2TableLine HuffmanTable_B14[] = {{3, 0, -2}, {3, 0, -1}, {1, 0, 0}, - {3, 0, 1}, {3, 0, 2}, {0, 32, -3}, - {0, 32, 3}}; -const bool HuffmanTable_HTOOB_B15 = false; -const JBig2TableLine HuffmanTable_B15[] = { - {7, 4, -24}, {6, 2, -8}, {5, 1, -4}, {4, 0, -2}, {3, 0, -1}, - {1, 0, 0}, {3, 0, 1}, {4, 0, 2}, {5, 1, 3}, {6, 2, 5}, - {7, 4, 9}, {7, 32, -25}, {7, 32, 25}}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_HUFFMANTABLE_STANDARD_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_Image.cpp b/core/src/fxcodec/jbig2/JBig2_Image.cpp deleted file mode 100644 index 16e4243e3b..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Image.cpp +++ /dev/null @@ -1,1099 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fxcrt/fx_coordinates.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" - -CJBig2_Image::CJBig2_Image(int32_t w, int32_t h) { - m_nWidth = w; - m_nHeight = h; - if (m_nWidth <= 0 || m_nHeight <= 0 || m_nWidth > INT_MAX - 31) { - m_pData = NULL; - m_bNeedFree = FALSE; - return; - } - m_nStride = ((w + 31) >> 5) << 2; - if (m_nStride * m_nHeight > 0 && 104857600 / (int)m_nStride > m_nHeight) { - m_pData = FX_Alloc2D(uint8_t, m_nStride, m_nHeight); - } else { - m_pData = NULL; - } - m_bNeedFree = TRUE; -} -CJBig2_Image::CJBig2_Image(int32_t w, - int32_t h, - int32_t stride, - uint8_t* pBuf) { - m_nWidth = w; - m_nHeight = h; - m_nStride = stride; - m_pData = pBuf; - m_bNeedFree = FALSE; -} -CJBig2_Image::CJBig2_Image(const CJBig2_Image& im) { - m_nWidth = im.m_nWidth; - m_nHeight = im.m_nHeight; - m_nStride = im.m_nStride; - if (im.m_pData) { - m_pData = FX_Alloc2D(uint8_t, m_nStride, m_nHeight); - JBIG2_memcpy(m_pData, im.m_pData, m_nStride * m_nHeight); - } else { - m_pData = NULL; - } - m_bNeedFree = TRUE; -} -CJBig2_Image::~CJBig2_Image() { - if (m_bNeedFree) { - FX_Free(m_pData); - } -} -FX_BOOL CJBig2_Image::getPixel(int32_t x, int32_t y) { - if (!m_pData) { - return 0; - } - int32_t m, n; - if (x < 0 || x >= m_nWidth) { - return 0; - } - if (y < 0 || y >= m_nHeight) { - return 0; - } - m = y * m_nStride + (x >> 3); - n = x & 7; - return ((m_pData[m] >> (7 - n)) & 1); -} - -int32_t CJBig2_Image::setPixel(int32_t x, int32_t y, FX_BOOL v) { - if (!m_pData) { - return 0; - } - int32_t m, n; - if (x < 0 || x >= m_nWidth) { - return 0; - } - if (y < 0 || y >= m_nHeight) { - return 0; - } - m = y * m_nStride + (x >> 3); - n = x & 7; - if (v) { - m_pData[m] |= 1 << (7 - n); - } else { - m_pData[m] &= ~(1 << (7 - n)); - } - return 1; -} -void CJBig2_Image::copyLine(int32_t hTo, int32_t hFrom) { - if (!m_pData) { - return; - } - if (hFrom < 0 || hFrom >= m_nHeight) { - JBIG2_memset(m_pData + hTo * m_nStride, 0, m_nStride); - } else { - JBIG2_memcpy(m_pData + hTo * m_nStride, m_pData + hFrom * m_nStride, - m_nStride); - } -} -void CJBig2_Image::fill(FX_BOOL v) { - if (!m_pData) { - return; - } - JBIG2_memset(m_pData, v ? 0xff : 0, m_nStride * m_nHeight); -} -FX_BOOL CJBig2_Image::composeTo(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op) { - if (!m_pData) { - return FALSE; - } - return composeTo_opt2(pDst, x, y, op); -} -FX_BOOL CJBig2_Image::composeTo(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op, - const FX_RECT* pSrcRect) { - if (!m_pData) { - return FALSE; - } - if (NULL == pSrcRect || *pSrcRect == FX_RECT(0, 0, m_nWidth, m_nHeight)) { - return composeTo_opt2(pDst, x, y, op); - } - return composeTo_opt2(pDst, x, y, op, pSrcRect); -} - -FX_BOOL CJBig2_Image::composeFrom(int32_t x, - int32_t y, - CJBig2_Image* pSrc, - JBig2ComposeOp op) { - if (!m_pData) { - return FALSE; - } - return pSrc->composeTo(this, x, y, op); -} -FX_BOOL CJBig2_Image::composeFrom(int32_t x, - int32_t y, - CJBig2_Image* pSrc, - JBig2ComposeOp op, - const FX_RECT* pSrcRect) { - if (!m_pData) { - return FALSE; - } - return pSrc->composeTo(this, x, y, op, pSrcRect); -} -#define JBIG2_GETDWORD(buf) \ - ((FX_DWORD)(((buf)[0] << 24) | ((buf)[1] << 16) | ((buf)[2] << 8) | (buf)[3])) -CJBig2_Image* CJBig2_Image::subImage(int32_t x, - int32_t y, - int32_t w, - int32_t h) { - int32_t m, n, j; - uint8_t *pLineSrc, *pLineDst; - FX_DWORD wTmp; - uint8_t *pSrc, *pSrcEnd, *pDst, *pDstEnd; - if (w == 0 || h == 0) { - return NULL; - } - CJBig2_Image* pImage = new CJBig2_Image(w, h); - if (!m_pData) { - pImage->fill(0); - return pImage; - } - if (!pImage->m_pData) { - return pImage; - } - pLineSrc = m_pData + m_nStride * y; - pLineDst = pImage->m_pData; - m = (x >> 5) << 2; - n = x & 31; - if (n == 0) { - for (j = 0; j < h; j++) { - pSrc = pLineSrc + m; - pSrcEnd = pLineSrc + m_nStride; - pDst = pLineDst; - pDstEnd = pLineDst + pImage->m_nStride; - for (; pDst < pDstEnd; pSrc += 4, pDst += 4) { - *((FX_DWORD*)pDst) = *((FX_DWORD*)pSrc); - } - pLineSrc += m_nStride; - pLineDst += pImage->m_nStride; - } - } else { - for (j = 0; j < h; j++) { - pSrc = pLineSrc + m; - pSrcEnd = pLineSrc + m_nStride; - pDst = pLineDst; - pDstEnd = pLineDst + pImage->m_nStride; - for (; pDst < pDstEnd; pSrc += 4, pDst += 4) { - if (pSrc + 4 < pSrcEnd) { - wTmp = (JBIG2_GETDWORD(pSrc) << n) | - (JBIG2_GETDWORD(pSrc + 4) >> (32 - n)); - } else { - wTmp = JBIG2_GETDWORD(pSrc) << n; - } - pDst[0] = (uint8_t)(wTmp >> 24); - pDst[1] = (uint8_t)(wTmp >> 16); - pDst[2] = (uint8_t)(wTmp >> 8); - pDst[3] = (uint8_t)wTmp; - } - pLineSrc += m_nStride; - pLineDst += pImage->m_nStride; - } - } - return pImage; -} -void CJBig2_Image::expand(int32_t h, FX_BOOL v) { - if (!m_pData || h <= m_nHeight) { - return; - } - FX_DWORD dwH = pdfium::base::checked_cast(h); - FX_DWORD dwStride = pdfium::base::checked_cast(m_nStride); - FX_DWORD dwHeight = pdfium::base::checked_cast(m_nHeight); - FX_SAFE_DWORD safeMemSize = dwH; - safeMemSize *= dwStride; - if (!safeMemSize.IsValid()) { - return; - } - // The guaranteed reallocated memory is to be < 4GB (unsigned int). - m_pData = FX_Realloc(uint8_t, m_pData, safeMemSize.ValueOrDie()); - - // The result of dwHeight * dwStride doesn't overflow after the - // checking of safeMemSize. - // The same as the result of (dwH - dwHeight) * dwStride) because - // dwH - dwHeight is always less than dwH(h) which is checked in - // the calculation of dwH * dwStride. - JBIG2_memset(m_pData + dwHeight * dwStride, v ? 0xff : 0, - (dwH - dwHeight) * dwStride); - m_nHeight = h; -} -FX_BOOL CJBig2_Image::composeTo_opt2(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op) { - int32_t xs0 = 0, ys0 = 0, xs1 = 0, ys1 = 0, xd0 = 0, yd0 = 0, xd1 = 0, - yd1 = 0, xx = 0, yy = 0, w = 0, h = 0, middleDwords = 0, lineLeft = 0; - - FX_DWORD s1 = 0, d1 = 0, d2 = 0, shift = 0, shift1 = 0, shift2 = 0, tmp = 0, - tmp1 = 0, tmp2 = 0, maskL = 0, maskR = 0, maskM = 0; - - uint8_t *lineSrc = NULL, *lineDst = NULL, *sp = NULL, *dp = NULL; - - if (!m_pData) { - return FALSE; - } - if (x < -1048576 || x > 1048576 || y < -1048576 || y > 1048576) { - return FALSE; - } - if (y < 0) { - ys0 = -y; - } - if (y + m_nHeight > pDst->m_nHeight) { - ys1 = pDst->m_nHeight - y; - } else { - ys1 = m_nHeight; - } - if (x < 0) { - xs0 = -x; - } - if (x + m_nWidth > pDst->m_nWidth) { - xs1 = pDst->m_nWidth - x; - } else { - xs1 = m_nWidth; - } - if ((ys0 >= ys1) || (xs0 >= xs1)) { - return 0; - } - w = xs1 - xs0; - h = ys1 - ys0; - if (y >= 0) { - yd0 = y; - } - if (x >= 0) { - xd0 = x; - } - xd1 = xd0 + w; - yd1 = yd0 + h; - d1 = xd0 & 31; - d2 = xd1 & 31; - s1 = xs0 & 31; - maskL = 0xffffffff >> d1; - maskR = 0xffffffff << ((32 - (xd1 & 31)) % 32); - maskM = maskL & maskR; - lineSrc = m_pData + ys0 * m_nStride + ((xs0 >> 5) << 2); - lineLeft = m_nStride - ((xs0 >> 5) << 2); - lineDst = pDst->m_pData + yd0 * pDst->m_nStride + ((xd0 >> 5) << 2); - if ((xd0 & ~31) == ((xd1 - 1) & ~31)) { - if ((xs0 & ~31) == ((xs1 - 1) & ~31)) { - if (s1 > d1) { - shift = s1 - d1; - for (yy = yd0; yy < yd1; yy++) { - tmp1 = JBIG2_GETDWORD(lineSrc) << shift; - tmp2 = JBIG2_GETDWORD(lineDst); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskM) | (tmp1 & maskM); - break; - } - lineDst[0] = (uint8_t)(tmp >> 24); - lineDst[1] = (uint8_t)(tmp >> 16); - lineDst[2] = (uint8_t)(tmp >> 8); - lineDst[3] = (uint8_t)tmp; - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } else { - shift = d1 - s1; - for (yy = yd0; yy < yd1; yy++) { - tmp1 = JBIG2_GETDWORD(lineSrc) >> shift; - tmp2 = JBIG2_GETDWORD(lineDst); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskM) | (tmp1 & maskM); - break; - } - lineDst[0] = (uint8_t)(tmp >> 24); - lineDst[1] = (uint8_t)(tmp >> 16); - lineDst[2] = (uint8_t)(tmp >> 8); - lineDst[3] = (uint8_t)tmp; - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } - } else { - shift1 = s1 - d1; - shift2 = 32 - shift1; - for (yy = yd0; yy < yd1; yy++) { - tmp1 = (JBIG2_GETDWORD(lineSrc) << shift1) | - (JBIG2_GETDWORD(lineSrc + 4) >> shift2); - tmp2 = JBIG2_GETDWORD(lineDst); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskM) | (tmp1 & maskM); - break; - } - lineDst[0] = (uint8_t)(tmp >> 24); - lineDst[1] = (uint8_t)(tmp >> 16); - lineDst[2] = (uint8_t)(tmp >> 8); - lineDst[3] = (uint8_t)tmp; - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } - } else { - if (s1 > d1) { - shift1 = s1 - d1; - shift2 = 32 - shift1; - middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); - for (yy = yd0; yy < yd1; yy++) { - sp = lineSrc; - dp = lineDst; - if (d1 != 0) { - tmp1 = (JBIG2_GETDWORD(sp) << shift1) | - (JBIG2_GETDWORD(sp + 4) >> shift2); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskL) | (tmp1 & maskL); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - for (xx = 0; xx < middleDwords; xx++) { - tmp1 = (JBIG2_GETDWORD(sp) << shift1) | - (JBIG2_GETDWORD(sp + 4) >> shift2); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = tmp1 | tmp2; - break; - case JBIG2_COMPOSE_AND: - tmp = tmp1 & tmp2; - break; - case JBIG2_COMPOSE_XOR: - tmp = tmp1 ^ tmp2; - break; - case JBIG2_COMPOSE_XNOR: - tmp = ~(tmp1 ^ tmp2); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = tmp1; - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - if (d2 != 0) { - tmp1 = - (JBIG2_GETDWORD(sp) << shift1) | - (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> - shift2); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskR) | (tmp1 & maskR); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - } - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } else if (s1 == d1) { - middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); - for (yy = yd0; yy < yd1; yy++) { - sp = lineSrc; - dp = lineDst; - if (d1 != 0) { - tmp1 = JBIG2_GETDWORD(sp); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskL) | (tmp1 & maskL); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - for (xx = 0; xx < middleDwords; xx++) { - tmp1 = JBIG2_GETDWORD(sp); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = tmp1 | tmp2; - break; - case JBIG2_COMPOSE_AND: - tmp = tmp1 & tmp2; - break; - case JBIG2_COMPOSE_XOR: - tmp = tmp1 ^ tmp2; - break; - case JBIG2_COMPOSE_XNOR: - tmp = ~(tmp1 ^ tmp2); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = tmp1; - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - if (d2 != 0) { - tmp1 = JBIG2_GETDWORD(sp); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskR) | (tmp1 & maskR); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - } - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } else { - shift1 = d1 - s1; - shift2 = 32 - shift1; - middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); - for (yy = yd0; yy < yd1; yy++) { - sp = lineSrc; - dp = lineDst; - if (d1 != 0) { - tmp1 = JBIG2_GETDWORD(sp) >> shift1; - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskL) | (tmp1 & maskL); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - dp += 4; - } - for (xx = 0; xx < middleDwords; xx++) { - tmp1 = (JBIG2_GETDWORD(sp) << shift2) | - ((JBIG2_GETDWORD(sp + 4)) >> shift1); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = tmp1 | tmp2; - break; - case JBIG2_COMPOSE_AND: - tmp = tmp1 & tmp2; - break; - case JBIG2_COMPOSE_XOR: - tmp = tmp1 ^ tmp2; - break; - case JBIG2_COMPOSE_XNOR: - tmp = ~(tmp1 ^ tmp2); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = tmp1; - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - if (d2 != 0) { - tmp1 = - (JBIG2_GETDWORD(sp) << shift2) | - (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> - shift1); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskR) | (tmp1 & maskR); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - } - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } - } - return 1; -} -FX_BOOL CJBig2_Image::composeTo_opt2(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op, - const FX_RECT* pSrcRect) { - int32_t xs0, ys0, xs1, ys1, xd0, yd0, xd1, yd1, xx, yy, w, h, middleDwords, - lineLeft; - FX_DWORD s1, d1, d2, shift, shift1, shift2, tmp, tmp1, tmp2, maskL, maskR, - maskM; - uint8_t *lineSrc, *lineDst, *sp, *dp; - int32_t sw, sh; - if (!m_pData) { - return FALSE; - } - if (x < -1048576 || x > 1048576 || y < -1048576 || y > 1048576) { - return FALSE; - } - sw = pSrcRect->Width(); - sh = pSrcRect->Height(); - if (y < 0) { - ys0 = -y; - } else { - ys0 = 0; - } - if (y + sh > pDst->m_nHeight) { - ys1 = pDst->m_nHeight - y; - } else { - ys1 = sh; - } - if (x < 0) { - xs0 = -x; - } else { - xs0 = 0; - } - if (x + sw > pDst->m_nWidth) { - xs1 = pDst->m_nWidth - x; - } else { - xs1 = sw; - } - if ((ys0 >= ys1) || (xs0 >= xs1)) { - return 0; - } - w = xs1 - xs0; - h = ys1 - ys0; - if (y < 0) { - yd0 = 0; - } else { - yd0 = y; - } - if (x < 0) { - xd0 = 0; - } else { - xd0 = x; - } - xd1 = xd0 + w; - yd1 = yd0 + h; - d1 = xd0 & 31; - d2 = xd1 & 31; - s1 = xs0 & 31; - maskL = 0xffffffff >> d1; - maskR = 0xffffffff << ((32 - (xd1 & 31)) % 32); - maskM = maskL & maskR; - lineSrc = m_pData + (pSrcRect->top + ys0) * m_nStride + - (((xs0 + pSrcRect->left) >> 5) << 2); - lineLeft = m_nStride - ((xs0 >> 5) << 2); - lineDst = pDst->m_pData + yd0 * pDst->m_nStride + ((xd0 >> 5) << 2); - if ((xd0 & ~31) == ((xd1 - 1) & ~31)) { - if ((xs0 & ~31) == ((xs1 - 1) & ~31)) { - if (s1 > d1) { - shift = s1 - d1; - for (yy = yd0; yy < yd1; yy++) { - tmp1 = JBIG2_GETDWORD(lineSrc) << shift; - tmp2 = JBIG2_GETDWORD(lineDst); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskM) | (tmp1 & maskM); - break; - } - lineDst[0] = (uint8_t)(tmp >> 24); - lineDst[1] = (uint8_t)(tmp >> 16); - lineDst[2] = (uint8_t)(tmp >> 8); - lineDst[3] = (uint8_t)tmp; - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } else { - shift = d1 - s1; - for (yy = yd0; yy < yd1; yy++) { - tmp1 = JBIG2_GETDWORD(lineSrc) >> shift; - tmp2 = JBIG2_GETDWORD(lineDst); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskM) | (tmp1 & maskM); - break; - } - lineDst[0] = (uint8_t)(tmp >> 24); - lineDst[1] = (uint8_t)(tmp >> 16); - lineDst[2] = (uint8_t)(tmp >> 8); - lineDst[3] = (uint8_t)tmp; - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } - } else { - shift1 = s1 - d1; - shift2 = 32 - shift1; - for (yy = yd0; yy < yd1; yy++) { - tmp1 = (JBIG2_GETDWORD(lineSrc) << shift1) | - (JBIG2_GETDWORD(lineSrc + 4) >> shift2); - tmp2 = JBIG2_GETDWORD(lineDst); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskM) | ((tmp1 | tmp2) & maskM); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskM) | ((tmp1 & tmp2) & maskM); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskM) | ((tmp1 ^ tmp2) & maskM); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskM) | ((~(tmp1 ^ tmp2)) & maskM); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskM) | (tmp1 & maskM); - break; - } - lineDst[0] = (uint8_t)(tmp >> 24); - lineDst[1] = (uint8_t)(tmp >> 16); - lineDst[2] = (uint8_t)(tmp >> 8); - lineDst[3] = (uint8_t)tmp; - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } - } else { - if (s1 > d1) { - shift1 = s1 - d1; - shift2 = 32 - shift1; - middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); - for (yy = yd0; yy < yd1; yy++) { - sp = lineSrc; - dp = lineDst; - if (d1 != 0) { - tmp1 = (JBIG2_GETDWORD(sp) << shift1) | - (JBIG2_GETDWORD(sp + 4) >> shift2); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskL) | (tmp1 & maskL); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - for (xx = 0; xx < middleDwords; xx++) { - tmp1 = (JBIG2_GETDWORD(sp) << shift1) | - (JBIG2_GETDWORD(sp + 4) >> shift2); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = tmp1 | tmp2; - break; - case JBIG2_COMPOSE_AND: - tmp = tmp1 & tmp2; - break; - case JBIG2_COMPOSE_XOR: - tmp = tmp1 ^ tmp2; - break; - case JBIG2_COMPOSE_XNOR: - tmp = ~(tmp1 ^ tmp2); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = tmp1; - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - if (d2 != 0) { - tmp1 = - (JBIG2_GETDWORD(sp) << shift1) | - (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> - shift2); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskR) | (tmp1 & maskR); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - } - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } else if (s1 == d1) { - middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); - for (yy = yd0; yy < yd1; yy++) { - sp = lineSrc; - dp = lineDst; - if (d1 != 0) { - tmp1 = JBIG2_GETDWORD(sp); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskL) | (tmp1 & maskL); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - for (xx = 0; xx < middleDwords; xx++) { - tmp1 = JBIG2_GETDWORD(sp); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = tmp1 | tmp2; - break; - case JBIG2_COMPOSE_AND: - tmp = tmp1 & tmp2; - break; - case JBIG2_COMPOSE_XOR: - tmp = tmp1 ^ tmp2; - break; - case JBIG2_COMPOSE_XNOR: - tmp = ~(tmp1 ^ tmp2); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = tmp1; - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - if (d2 != 0) { - tmp1 = JBIG2_GETDWORD(sp); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskR) | (tmp1 & maskR); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - } - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } else { - shift1 = d1 - s1; - shift2 = 32 - shift1; - middleDwords = (xd1 >> 5) - ((xd0 + 31) >> 5); - for (yy = yd0; yy < yd1; yy++) { - sp = lineSrc; - dp = lineDst; - if (d1 != 0) { - tmp1 = JBIG2_GETDWORD(sp) >> shift1; - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskL) | ((tmp1 | tmp2) & maskL); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskL) | ((tmp1 & tmp2) & maskL); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskL) | ((tmp1 ^ tmp2) & maskL); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskL) | ((~(tmp1 ^ tmp2)) & maskL); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskL) | (tmp1 & maskL); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - dp += 4; - } - for (xx = 0; xx < middleDwords; xx++) { - tmp1 = (JBIG2_GETDWORD(sp) << shift2) | - ((JBIG2_GETDWORD(sp + 4)) >> shift1); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = tmp1 | tmp2; - break; - case JBIG2_COMPOSE_AND: - tmp = tmp1 & tmp2; - break; - case JBIG2_COMPOSE_XOR: - tmp = tmp1 ^ tmp2; - break; - case JBIG2_COMPOSE_XNOR: - tmp = ~(tmp1 ^ tmp2); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = tmp1; - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - sp += 4; - dp += 4; - } - if (d2 != 0) { - tmp1 = - (JBIG2_GETDWORD(sp) << shift2) | - (((sp + 4) < lineSrc + lineLeft ? JBIG2_GETDWORD(sp + 4) : 0) >> - shift1); - tmp2 = JBIG2_GETDWORD(dp); - switch (op) { - case JBIG2_COMPOSE_OR: - tmp = (tmp2 & ~maskR) | ((tmp1 | tmp2) & maskR); - break; - case JBIG2_COMPOSE_AND: - tmp = (tmp2 & ~maskR) | ((tmp1 & tmp2) & maskR); - break; - case JBIG2_COMPOSE_XOR: - tmp = (tmp2 & ~maskR) | ((tmp1 ^ tmp2) & maskR); - break; - case JBIG2_COMPOSE_XNOR: - tmp = (tmp2 & ~maskR) | ((~(tmp1 ^ tmp2)) & maskR); - break; - case JBIG2_COMPOSE_REPLACE: - tmp = (tmp2 & ~maskR) | (tmp1 & maskR); - break; - } - dp[0] = (uint8_t)(tmp >> 24); - dp[1] = (uint8_t)(tmp >> 16); - dp[2] = (uint8_t)(tmp >> 8); - dp[3] = (uint8_t)tmp; - } - lineSrc += m_nStride; - lineDst += pDst->m_nStride; - } - } - } - return 1; -} diff --git a/core/src/fxcodec/jbig2/JBig2_Image.h b/core/src/fxcodec/jbig2/JBig2_Image.h deleted file mode 100644 index e7b0779816..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Image.h +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_IMAGE_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_IMAGE_H_ - -#include "core/src/fxcodec/jbig2/JBig2_Define.h" - -enum JBig2ComposeOp { - JBIG2_COMPOSE_OR = 0, - JBIG2_COMPOSE_AND = 1, - JBIG2_COMPOSE_XOR = 2, - JBIG2_COMPOSE_XNOR = 3, - JBIG2_COMPOSE_REPLACE = 4 -}; - -struct FX_RECT; -class CJBig2_Image { - public: - CJBig2_Image(int32_t w, int32_t h); - - CJBig2_Image(int32_t w, int32_t h, int32_t stride, uint8_t* pBuf); - - CJBig2_Image(const CJBig2_Image& im); - - ~CJBig2_Image(); - - FX_BOOL getPixel(int32_t x, int32_t y); - - int32_t setPixel(int32_t x, int32_t y, FX_BOOL v); - - void copyLine(int32_t hTo, int32_t hFrom); - - void fill(FX_BOOL v); - - FX_BOOL composeTo(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op); - FX_BOOL composeTo(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op, - const FX_RECT* pSrcRect); - - FX_BOOL composeTo_opt2(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op); - FX_BOOL composeTo_opt2(CJBig2_Image* pDst, - int32_t x, - int32_t y, - JBig2ComposeOp op, - const FX_RECT* pSrcRect); - - FX_BOOL composeFrom(int32_t x, - int32_t y, - CJBig2_Image* pSrc, - JBig2ComposeOp op); - FX_BOOL composeFrom(int32_t x, - int32_t y, - CJBig2_Image* pSrc, - JBig2ComposeOp op, - const FX_RECT* pSrcRect); - - CJBig2_Image* subImage(int32_t x, int32_t y, int32_t w, int32_t h); - - void expand(int32_t h, FX_BOOL v); - - public: - int32_t m_nWidth; - - int32_t m_nHeight; - - int32_t m_nStride; - - uint8_t* m_pData; - - FX_BOOL m_bNeedFree; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_IMAGE_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_List.h b/core/src/fxcodec/jbig2/JBig2_List.h deleted file mode 100644 index 6f6169064d..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_List.h +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_LIST_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_LIST_H_ - -#include - -#include - -// A poor man's ScopedVector for pointers of TYPE. -// Owns all the pointers contained within and deletes them on destruction. -template -class CJBig2_List { - public: - CJBig2_List() {} - explicit CJBig2_List(size_t count) { resize(count); } - - ~CJBig2_List() { - clear(); - } - - TYPE* get(size_t index) const { return m_vector[index]; } - TYPE* back() const { return m_vector.back(); } - size_t size() const { return m_vector.size(); } - - // Deletes all the pointers contained within. - void clear() { - for (size_t i = 0; i < m_vector.size(); ++i) - delete m_vector[i]; - m_vector.clear(); - } - - // Takes ownership of |pItem|. - void push_back(TYPE* pItem) { m_vector.push_back(pItem); } - - // Takes ownership of |pItem|. - void set(size_t index, TYPE* pItem) { - delete m_vector[index]; - m_vector[index] = pItem; - } - - void resize(size_t count) { - for (size_t i = count; i < size(); ++i) - delete m_vector[i]; - m_vector.resize(count); - } - - private: - std::vector m_vector; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_LIST_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_Page.h b/core/src/fxcodec/jbig2/JBig2_Page.h deleted file mode 100644 index 50fe4cef3c..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Page.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_PAGE_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_PAGE_H_ - -#include "core/include/fxcrt/fx_system.h" - -struct JBig2PageInfo { - FX_DWORD m_dwWidth; - FX_DWORD m_dwHeight; - FX_DWORD m_dwResolutionX; - FX_DWORD m_dwResolutionY; - uint8_t m_cFlags; - FX_BOOL m_bIsStriped; - FX_WORD m_wMaxStripeSize; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_PAGE_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_PatternDict.cpp b/core/src/fxcodec/jbig2/JBig2_PatternDict.cpp deleted file mode 100644 index aa78954aaa..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_PatternDict.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_PatternDict.h" - -#include "core/include/fxcrt/fx_memory.h" - -CJBig2_PatternDict::CJBig2_PatternDict() { - NUMPATS = 0; - HDPATS = NULL; -} - -CJBig2_PatternDict::~CJBig2_PatternDict() { - if (HDPATS) { - for (FX_DWORD i = 0; i < NUMPATS; i++) { - delete HDPATS[i]; - } - FX_Free(HDPATS); - } -} diff --git a/core/src/fxcodec/jbig2/JBig2_PatternDict.h b/core/src/fxcodec/jbig2/JBig2_PatternDict.h deleted file mode 100644 index e363c9bce3..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_PatternDict.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_PATTERNDICT_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_PATTERNDICT_H_ - -#include "core/src/fxcodec/jbig2/JBig2_Define.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" - -class CJBig2_PatternDict { - public: - CJBig2_PatternDict(); - - ~CJBig2_PatternDict(); - - FX_DWORD NUMPATS; - CJBig2_Image** HDPATS; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_PATTERNDICT_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_PddProc.cpp b/core/src/fxcodec/jbig2/JBig2_PddProc.cpp deleted file mode 100644 index ba4755ce59..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_PddProc.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_PddProc.h" - -#include - -#include "core/src/fxcodec/jbig2/JBig2_GrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" -#include "core/src/fxcodec/jbig2/JBig2_PatternDict.h" - -CJBig2_PatternDict* CJBig2_PDDProc::decode_Arith( - CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause) { - FX_DWORD GRAY; - CJBig2_Image* BHDC = nullptr; - std::unique_ptr pDict(new CJBig2_PatternDict()); - pDict->NUMPATS = GRAYMAX + 1; - pDict->HDPATS = FX_Alloc(CJBig2_Image*, pDict->NUMPATS); - JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); - - std::unique_ptr pGRD(new CJBig2_GRDProc()); - pGRD->MMR = HDMMR; - pGRD->GBW = (GRAYMAX + 1) * HDPW; - pGRD->GBH = HDPH; - pGRD->GBTEMPLATE = HDTEMPLATE; - pGRD->TPGDON = 0; - pGRD->USESKIP = 0; - pGRD->GBAT[0] = -(int32_t)HDPW; - pGRD->GBAT[1] = 0; - if (pGRD->GBTEMPLATE == 0) { - pGRD->GBAT[2] = -3; - pGRD->GBAT[3] = -1; - pGRD->GBAT[4] = 2; - pGRD->GBAT[5] = -2; - pGRD->GBAT[6] = -2; - pGRD->GBAT[7] = -2; - } - FXCODEC_STATUS status = - pGRD->Start_decode_Arith(&BHDC, pArithDecoder, gbContext, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - pGRD->Continue_decode(pPause); - } - if (!BHDC) - return nullptr; - - GRAY = 0; - while (GRAY <= GRAYMAX) { - pDict->HDPATS[GRAY] = BHDC->subImage(HDPW * GRAY, 0, HDPW, HDPH); - GRAY = GRAY + 1; - } - delete BHDC; - return pDict.release(); -} - -CJBig2_PatternDict* CJBig2_PDDProc::decode_MMR(CJBig2_BitStream* pStream, - IFX_Pause* pPause) { - FX_DWORD GRAY; - CJBig2_Image* BHDC = nullptr; - std::unique_ptr pDict(new CJBig2_PatternDict()); - pDict->NUMPATS = GRAYMAX + 1; - pDict->HDPATS = FX_Alloc(CJBig2_Image*, pDict->NUMPATS); - JBIG2_memset(pDict->HDPATS, 0, sizeof(CJBig2_Image*) * pDict->NUMPATS); - - std::unique_ptr pGRD(new CJBig2_GRDProc()); - pGRD->MMR = HDMMR; - pGRD->GBW = (GRAYMAX + 1) * HDPW; - pGRD->GBH = HDPH; - FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHDC, pStream, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - pGRD->Continue_decode(pPause); - } - if (!BHDC) - return nullptr; - - GRAY = 0; - while (GRAY <= GRAYMAX) { - pDict->HDPATS[GRAY] = BHDC->subImage(HDPW * GRAY, 0, HDPW, HDPH); - GRAY = GRAY + 1; - } - delete BHDC; - return pDict.release(); -} diff --git a/core/src/fxcodec/jbig2/JBig2_PddProc.h b/core/src/fxcodec/jbig2/JBig2_PddProc.h deleted file mode 100644 index 2f875f5d92..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_PddProc.h +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_PDDPROC_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_PDDPROC_H_ - -#include "core/include/fxcrt/fx_system.h" - -class CJBig2_ArithDecoder; -class CJBig2_BitStream; -class CJBig2_PatternDict; -class IFX_Pause; -struct JBig2ArithCtx; - -class CJBig2_PDDProc { - public: - CJBig2_PatternDict* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* gbContext, - IFX_Pause* pPause); - - CJBig2_PatternDict* decode_MMR(CJBig2_BitStream* pStream, IFX_Pause* pPause); - - public: - FX_BOOL HDMMR; - uint8_t HDPW; - uint8_t HDPH; - FX_DWORD GRAYMAX; - uint8_t HDTEMPLATE; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_PDDPROC_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_SddProc.cpp b/core/src/fxcodec/jbig2/JBig2_SddProc.cpp deleted file mode 100644 index faa70621ab..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_SddProc.cpp +++ /dev/null @@ -1,624 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_SddProc.h" - -#include -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_GrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_GrrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanTable.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h" -#include "core/src/fxcodec/jbig2/JBig2_SymbolDict.h" -#include "core/src/fxcodec/jbig2/JBig2_TrdProc.h" - -CJBig2_SymbolDict* CJBig2_SDDProc::decode_Arith( - CJBig2_ArithDecoder* pArithDecoder, - std::vector* gbContext, - std::vector* grContext) { - CJBig2_Image** SDNEWSYMS; - FX_DWORD HCHEIGHT, NSYMSDECODED; - int32_t HCDH; - FX_DWORD SYMWIDTH, TOTWIDTH; - int32_t DW; - CJBig2_Image* BS; - FX_DWORD I, J, REFAGGNINST; - FX_BOOL* EXFLAGS; - FX_DWORD EXINDEX; - FX_BOOL CUREXFLAG; - FX_DWORD EXRUNLENGTH; - FX_DWORD nTmp; - FX_DWORD SBNUMSYMS; - uint8_t SBSYMCODELEN; - int32_t RDXI, RDYI; - CJBig2_Image** SBSYMS; - std::unique_ptr IAID; - std::unique_ptr pDict; - std::unique_ptr IADH(new CJBig2_ArithIntDecoder); - std::unique_ptr IADW(new CJBig2_ArithIntDecoder); - std::unique_ptr IAAI(new CJBig2_ArithIntDecoder); - std::unique_ptr IARDX(new CJBig2_ArithIntDecoder); - std::unique_ptr IARDY(new CJBig2_ArithIntDecoder); - std::unique_ptr IAEX(new CJBig2_ArithIntDecoder); - std::unique_ptr IADT(new CJBig2_ArithIntDecoder); - std::unique_ptr IAFS(new CJBig2_ArithIntDecoder); - std::unique_ptr IADS(new CJBig2_ArithIntDecoder); - std::unique_ptr IAIT(new CJBig2_ArithIntDecoder); - std::unique_ptr IARI(new CJBig2_ArithIntDecoder); - std::unique_ptr IARDW(new CJBig2_ArithIntDecoder); - std::unique_ptr IARDH(new CJBig2_ArithIntDecoder); - nTmp = 0; - while ((FX_DWORD)(1 << nTmp) < (SDNUMINSYMS + SDNUMNEWSYMS)) { - nTmp++; - } - IAID.reset(new CJBig2_ArithIaidDecoder((uint8_t)nTmp)); - SDNEWSYMS = FX_Alloc(CJBig2_Image*, SDNUMNEWSYMS); - FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); - - HCHEIGHT = 0; - NSYMSDECODED = 0; - while (NSYMSDECODED < SDNUMNEWSYMS) { - BS = nullptr; - IADH->decode(pArithDecoder, &HCDH); - HCHEIGHT = HCHEIGHT + HCDH; - if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) { - goto failed; - } - SYMWIDTH = 0; - TOTWIDTH = 0; - for (;;) { - if (!IADW->decode(pArithDecoder, &DW)) - break; - - if (NSYMSDECODED >= SDNUMNEWSYMS) - goto failed; - - SYMWIDTH = SYMWIDTH + DW; - if ((int)SYMWIDTH < 0 || (int)SYMWIDTH > JBIG2_MAX_IMAGE_SIZE) - goto failed; - - if (HCHEIGHT == 0 || SYMWIDTH == 0) { - TOTWIDTH = TOTWIDTH + SYMWIDTH; - SDNEWSYMS[NSYMSDECODED] = nullptr; - NSYMSDECODED = NSYMSDECODED + 1; - continue; - } - TOTWIDTH = TOTWIDTH + SYMWIDTH; - if (SDREFAGG == 0) { - std::unique_ptr pGRD(new CJBig2_GRDProc()); - pGRD->MMR = 0; - pGRD->GBW = SYMWIDTH; - pGRD->GBH = HCHEIGHT; - pGRD->GBTEMPLATE = SDTEMPLATE; - pGRD->TPGDON = 0; - pGRD->USESKIP = 0; - pGRD->GBAT[0] = SDAT[0]; - pGRD->GBAT[1] = SDAT[1]; - pGRD->GBAT[2] = SDAT[2]; - pGRD->GBAT[3] = SDAT[3]; - pGRD->GBAT[4] = SDAT[4]; - pGRD->GBAT[5] = SDAT[5]; - pGRD->GBAT[6] = SDAT[6]; - pGRD->GBAT[7] = SDAT[7]; - BS = pGRD->decode_Arith(pArithDecoder, gbContext->data()); - if (!BS) { - goto failed; - } - } else { - IAAI->decode(pArithDecoder, (int*)&REFAGGNINST); - if (REFAGGNINST > 1) { - std::unique_ptr pDecoder(new CJBig2_TRDProc()); - pDecoder->SBHUFF = SDHUFF; - pDecoder->SBREFINE = 1; - pDecoder->SBW = SYMWIDTH; - pDecoder->SBH = HCHEIGHT; - pDecoder->SBNUMINSTANCES = REFAGGNINST; - pDecoder->SBSTRIPS = 1; - pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; - SBNUMSYMS = pDecoder->SBNUMSYMS; - nTmp = 0; - while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { - nTmp++; - } - SBSYMCODELEN = (uint8_t)nTmp; - pDecoder->SBSYMCODELEN = SBSYMCODELEN; - SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); - JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); - JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, - NSYMSDECODED * sizeof(CJBig2_Image*)); - pDecoder->SBSYMS = SBSYMS; - pDecoder->SBDEFPIXEL = 0; - pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; - pDecoder->TRANSPOSED = 0; - pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; - pDecoder->SBDSOFFSET = 0; - std::unique_ptr SBHUFFFS(new CJBig2_HuffmanTable( - HuffmanTable_B6, FX_ArraySize(HuffmanTable_B6), - HuffmanTable_HTOOB_B6)); - std::unique_ptr SBHUFFDS(new CJBig2_HuffmanTable( - HuffmanTable_B8, FX_ArraySize(HuffmanTable_B8), - HuffmanTable_HTOOB_B8)); - std::unique_ptr SBHUFFDT(new CJBig2_HuffmanTable( - HuffmanTable_B11, FX_ArraySize(HuffmanTable_B11), - HuffmanTable_HTOOB_B11)); - std::unique_ptr SBHUFFRDW( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRDH( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRDX( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRDY( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRSIZE( - new CJBig2_HuffmanTable(HuffmanTable_B1, - FX_ArraySize(HuffmanTable_B1), - HuffmanTable_HTOOB_B1)); - pDecoder->SBHUFFFS = SBHUFFFS.get(); - pDecoder->SBHUFFDS = SBHUFFDS.get(); - pDecoder->SBHUFFDT = SBHUFFDT.get(); - pDecoder->SBHUFFRDW = SBHUFFRDW.get(); - pDecoder->SBHUFFRDH = SBHUFFRDH.get(); - pDecoder->SBHUFFRDX = SBHUFFRDX.get(); - pDecoder->SBHUFFRDY = SBHUFFRDY.get(); - pDecoder->SBHUFFRSIZE = SBHUFFRSIZE.get(); - pDecoder->SBRTEMPLATE = SDRTEMPLATE; - pDecoder->SBRAT[0] = SDRAT[0]; - pDecoder->SBRAT[1] = SDRAT[1]; - pDecoder->SBRAT[2] = SDRAT[2]; - pDecoder->SBRAT[3] = SDRAT[3]; - JBig2IntDecoderState ids; - ids.IADT = IADT.get(); - ids.IAFS = IAFS.get(); - ids.IADS = IADS.get(); - ids.IAIT = IAIT.get(); - ids.IARI = IARI.get(); - ids.IARDW = IARDW.get(); - ids.IARDH = IARDH.get(); - ids.IARDX = IARDX.get(); - ids.IARDY = IARDY.get(); - ids.IAID = IAID.get(); - BS = pDecoder->decode_Arith(pArithDecoder, grContext->data(), &ids); - if (!BS) { - FX_Free(SBSYMS); - goto failed; - } - FX_Free(SBSYMS); - } else if (REFAGGNINST == 1) { - SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; - FX_DWORD IDI; - IAID->decode(pArithDecoder, &IDI); - IARDX->decode(pArithDecoder, &RDXI); - IARDY->decode(pArithDecoder, &RDYI); - if (IDI >= SBNUMSYMS) { - goto failed; - } - SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); - JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); - JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, - NSYMSDECODED * sizeof(CJBig2_Image*)); - if (!SBSYMS[IDI]) { - FX_Free(SBSYMS); - goto failed; - } - std::unique_ptr pGRRD(new CJBig2_GRRDProc()); - pGRRD->GRW = SYMWIDTH; - pGRRD->GRH = HCHEIGHT; - pGRRD->GRTEMPLATE = SDRTEMPLATE; - pGRRD->GRREFERENCE = SBSYMS[IDI]; - pGRRD->GRREFERENCEDX = RDXI; - pGRRD->GRREFERENCEDY = RDYI; - pGRRD->TPGRON = 0; - pGRRD->GRAT[0] = SDRAT[0]; - pGRRD->GRAT[1] = SDRAT[1]; - pGRRD->GRAT[2] = SDRAT[2]; - pGRRD->GRAT[3] = SDRAT[3]; - BS = pGRRD->decode(pArithDecoder, grContext->data()); - if (!BS) { - FX_Free(SBSYMS); - goto failed; - } - FX_Free(SBSYMS); - } - } - SDNEWSYMS[NSYMSDECODED] = BS; - BS = nullptr; - NSYMSDECODED = NSYMSDECODED + 1; - } - } - EXINDEX = 0; - CUREXFLAG = 0; - EXFLAGS = FX_Alloc(FX_BOOL, SDNUMINSYMS + SDNUMNEWSYMS); - while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { - IAEX->decode(pArithDecoder, (int*)&EXRUNLENGTH); - if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { - FX_Free(EXFLAGS); - goto failed; - } - if (EXRUNLENGTH != 0) { - for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { - EXFLAGS[I] = CUREXFLAG; - } - } - EXINDEX = EXINDEX + EXRUNLENGTH; - CUREXFLAG = !CUREXFLAG; - } - pDict.reset(new CJBig2_SymbolDict); - I = J = 0; - for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { - if (EXFLAGS[I] && J < SDNUMEXSYMS) { - if (I < SDNUMINSYMS) { - pDict->AddImage(SDINSYMS[I] ? new CJBig2_Image(*SDINSYMS[I]) : nullptr); - } else { - pDict->AddImage(SDNEWSYMS[I - SDNUMINSYMS]); - } - ++J; - } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { - delete SDNEWSYMS[I - SDNUMINSYMS]; - } - } - FX_Free(EXFLAGS); - FX_Free(SDNEWSYMS); - return pDict.release(); -failed: - for (I = 0; I < NSYMSDECODED; I++) { - if (SDNEWSYMS[I]) { - delete SDNEWSYMS[I]; - SDNEWSYMS[I] = nullptr; - } - } - FX_Free(SDNEWSYMS); - return nullptr; -} - -CJBig2_SymbolDict* CJBig2_SDDProc::decode_Huffman( - CJBig2_BitStream* pStream, - std::vector* gbContext, - std::vector* grContext, - IFX_Pause* pPause) { - CJBig2_Image** SDNEWSYMS; - FX_DWORD* SDNEWSYMWIDTHS; - FX_DWORD HCHEIGHT, NSYMSDECODED; - int32_t HCDH; - FX_DWORD SYMWIDTH, TOTWIDTH, HCFIRSTSYM; - int32_t DW; - CJBig2_Image* BS, *BHC; - FX_DWORD I, J, REFAGGNINST; - FX_BOOL* EXFLAGS; - FX_DWORD EXINDEX; - FX_BOOL CUREXFLAG; - FX_DWORD EXRUNLENGTH; - int32_t nVal, nBits; - FX_DWORD nTmp; - FX_DWORD SBNUMSYMS; - uint8_t SBSYMCODELEN; - JBig2HuffmanCode* SBSYMCODES; - FX_DWORD IDI; - int32_t RDXI, RDYI; - FX_DWORD BMSIZE; - FX_DWORD stride; - CJBig2_Image** SBSYMS; - std::unique_ptr pHuffmanDecoder( - new CJBig2_HuffmanDecoder(pStream)); - SDNEWSYMS = FX_Alloc(CJBig2_Image*, SDNUMNEWSYMS); - FXSYS_memset(SDNEWSYMS, 0, SDNUMNEWSYMS * sizeof(CJBig2_Image*)); - SDNEWSYMWIDTHS = nullptr; - BHC = nullptr; - if (SDREFAGG == 0) { - SDNEWSYMWIDTHS = FX_Alloc(FX_DWORD, SDNUMNEWSYMS); - FXSYS_memset(SDNEWSYMWIDTHS, 0, SDNUMNEWSYMS * sizeof(FX_DWORD)); - } - std::unique_ptr pDict(new CJBig2_SymbolDict()); - std::unique_ptr pTable; - - HCHEIGHT = 0; - NSYMSDECODED = 0; - BS = nullptr; - while (NSYMSDECODED < SDNUMNEWSYMS) { - if (pHuffmanDecoder->decodeAValue(SDHUFFDH, &HCDH) != 0) { - goto failed; - } - HCHEIGHT = HCHEIGHT + HCDH; - if ((int)HCHEIGHT < 0 || (int)HCHEIGHT > JBIG2_MAX_IMAGE_SIZE) { - goto failed; - } - SYMWIDTH = 0; - TOTWIDTH = 0; - HCFIRSTSYM = NSYMSDECODED; - for (;;) { - nVal = pHuffmanDecoder->decodeAValue(SDHUFFDW, &DW); - if (nVal == JBIG2_OOB) { - break; - } else if (nVal != 0) { - goto failed; - } else { - if (NSYMSDECODED >= SDNUMNEWSYMS) { - goto failed; - } - SYMWIDTH = SYMWIDTH + DW; - if ((int)SYMWIDTH < 0 || (int)SYMWIDTH > JBIG2_MAX_IMAGE_SIZE) { - goto failed; - } else if (HCHEIGHT == 0 || SYMWIDTH == 0) { - TOTWIDTH = TOTWIDTH + SYMWIDTH; - SDNEWSYMS[NSYMSDECODED] = nullptr; - NSYMSDECODED = NSYMSDECODED + 1; - continue; - } - TOTWIDTH = TOTWIDTH + SYMWIDTH; - } - if (SDREFAGG == 1) { - if (pHuffmanDecoder->decodeAValue(SDHUFFAGGINST, (int*)&REFAGGNINST) != - 0) { - goto failed; - } - BS = nullptr; - if (REFAGGNINST > 1) { - std::unique_ptr pDecoder(new CJBig2_TRDProc()); - pDecoder->SBHUFF = SDHUFF; - pDecoder->SBREFINE = 1; - pDecoder->SBW = SYMWIDTH; - pDecoder->SBH = HCHEIGHT; - pDecoder->SBNUMINSTANCES = REFAGGNINST; - pDecoder->SBSTRIPS = 1; - pDecoder->SBNUMSYMS = SDNUMINSYMS + NSYMSDECODED; - SBNUMSYMS = pDecoder->SBNUMSYMS; - SBSYMCODES = FX_Alloc(JBig2HuffmanCode, SBNUMSYMS); - nTmp = 1; - while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { - nTmp++; - } - for (I = 0; I < SBNUMSYMS; I++) { - SBSYMCODES[I].codelen = nTmp; - SBSYMCODES[I].code = I; - } - pDecoder->SBSYMCODES = SBSYMCODES; - SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); - JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); - JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, - NSYMSDECODED * sizeof(CJBig2_Image*)); - pDecoder->SBSYMS = SBSYMS; - pDecoder->SBDEFPIXEL = 0; - pDecoder->SBCOMBOP = JBIG2_COMPOSE_OR; - pDecoder->TRANSPOSED = 0; - pDecoder->REFCORNER = JBIG2_CORNER_TOPLEFT; - pDecoder->SBDSOFFSET = 0; - std::unique_ptr SBHUFFFS(new CJBig2_HuffmanTable( - HuffmanTable_B6, FX_ArraySize(HuffmanTable_B6), - HuffmanTable_HTOOB_B6)); - std::unique_ptr SBHUFFDS(new CJBig2_HuffmanTable( - HuffmanTable_B8, FX_ArraySize(HuffmanTable_B8), - HuffmanTable_HTOOB_B8)); - std::unique_ptr SBHUFFDT(new CJBig2_HuffmanTable( - HuffmanTable_B11, FX_ArraySize(HuffmanTable_B11), - HuffmanTable_HTOOB_B11)); - std::unique_ptr SBHUFFRDW( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRDH( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRDX( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRDY( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRSIZE( - new CJBig2_HuffmanTable(HuffmanTable_B1, - FX_ArraySize(HuffmanTable_B1), - HuffmanTable_HTOOB_B1)); - pDecoder->SBHUFFFS = SBHUFFFS.get(); - pDecoder->SBHUFFDS = SBHUFFDS.get(); - pDecoder->SBHUFFDT = SBHUFFDT.get(); - pDecoder->SBHUFFRDW = SBHUFFRDW.get(); - pDecoder->SBHUFFRDH = SBHUFFRDH.get(); - pDecoder->SBHUFFRDX = SBHUFFRDX.get(); - pDecoder->SBHUFFRDY = SBHUFFRDY.get(); - pDecoder->SBHUFFRSIZE = SBHUFFRSIZE.get(); - pDecoder->SBRTEMPLATE = SDRTEMPLATE; - pDecoder->SBRAT[0] = SDRAT[0]; - pDecoder->SBRAT[1] = SDRAT[1]; - pDecoder->SBRAT[2] = SDRAT[2]; - pDecoder->SBRAT[3] = SDRAT[3]; - BS = pDecoder->decode_Huffman(pStream, grContext->data()); - if (!BS) { - FX_Free(SBSYMCODES); - FX_Free(SBSYMS); - goto failed; - } - FX_Free(SBSYMCODES); - FX_Free(SBSYMS); - } else if (REFAGGNINST == 1) { - SBNUMSYMS = SDNUMINSYMS + SDNUMNEWSYMS; - nTmp = 1; - while ((FX_DWORD)(1 << nTmp) < SBNUMSYMS) { - nTmp++; - } - SBSYMCODELEN = (uint8_t)nTmp; - SBSYMCODES = FX_Alloc(JBig2HuffmanCode, SBNUMSYMS); - for (I = 0; I < SBNUMSYMS; I++) { - SBSYMCODES[I].codelen = SBSYMCODELEN; - SBSYMCODES[I].code = I; - } - nVal = 0; - nBits = 0; - for (;;) { - if (pStream->read1Bit(&nTmp) != 0) { - FX_Free(SBSYMCODES); - goto failed; - } - nVal = (nVal << 1) | nTmp; - for (IDI = 0; IDI < SBNUMSYMS; IDI++) { - if ((nVal == SBSYMCODES[IDI].code) && - (nBits == SBSYMCODES[IDI].codelen)) { - break; - } - } - if (IDI < SBNUMSYMS) { - break; - } - } - FX_Free(SBSYMCODES); - std::unique_ptr SBHUFFRDX( - new CJBig2_HuffmanTable(HuffmanTable_B15, - FX_ArraySize(HuffmanTable_B15), - HuffmanTable_HTOOB_B15)); - std::unique_ptr SBHUFFRSIZE( - new CJBig2_HuffmanTable(HuffmanTable_B1, - FX_ArraySize(HuffmanTable_B1), - HuffmanTable_HTOOB_B1)); - if ((pHuffmanDecoder->decodeAValue(SBHUFFRDX.get(), &RDXI) != 0) || - (pHuffmanDecoder->decodeAValue(SBHUFFRDX.get(), &RDYI) != 0) || - (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE.get(), &nVal) != 0)) { - goto failed; - } - pStream->alignByte(); - nTmp = pStream->getOffset(); - SBSYMS = FX_Alloc(CJBig2_Image*, SBNUMSYMS); - JBIG2_memcpy(SBSYMS, SDINSYMS, SDNUMINSYMS * sizeof(CJBig2_Image*)); - JBIG2_memcpy(SBSYMS + SDNUMINSYMS, SDNEWSYMS, - NSYMSDECODED * sizeof(CJBig2_Image*)); - std::unique_ptr pGRRD(new CJBig2_GRRDProc()); - pGRRD->GRW = SYMWIDTH; - pGRRD->GRH = HCHEIGHT; - pGRRD->GRTEMPLATE = SDRTEMPLATE; - pGRRD->GRREFERENCE = SBSYMS[IDI]; - pGRRD->GRREFERENCEDX = RDXI; - pGRRD->GRREFERENCEDY = RDYI; - pGRRD->TPGRON = 0; - pGRRD->GRAT[0] = SDRAT[0]; - pGRRD->GRAT[1] = SDRAT[1]; - pGRRD->GRAT[2] = SDRAT[2]; - pGRRD->GRAT[3] = SDRAT[3]; - std::unique_ptr pArithDecoder( - new CJBig2_ArithDecoder(pStream)); - BS = pGRRD->decode(pArithDecoder.get(), grContext->data()); - if (!BS) { - FX_Free(SBSYMS); - goto failed; - } - pStream->alignByte(); - pStream->offset(2); - if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { - delete BS; - FX_Free(SBSYMS); - goto failed; - } - FX_Free(SBSYMS); - } - SDNEWSYMS[NSYMSDECODED] = BS; - } - if (SDREFAGG == 0) { - SDNEWSYMWIDTHS[NSYMSDECODED] = SYMWIDTH; - } - NSYMSDECODED = NSYMSDECODED + 1; - } - if (SDREFAGG == 0) { - if (pHuffmanDecoder->decodeAValue(SDHUFFBMSIZE, (int32_t*)&BMSIZE) != 0) { - goto failed; - } - pStream->alignByte(); - if (BMSIZE == 0) { - stride = (TOTWIDTH + 7) >> 3; - if (pStream->getByteLeft() >= stride * HCHEIGHT) { - BHC = new CJBig2_Image(TOTWIDTH, HCHEIGHT); - for (I = 0; I < HCHEIGHT; I++) { - JBIG2_memcpy(BHC->m_pData + I * BHC->m_nStride, - pStream->getPointer(), stride); - pStream->offset(stride); - } - } else { - goto failed; - } - } else { - std::unique_ptr pGRD(new CJBig2_GRDProc()); - pGRD->MMR = 1; - pGRD->GBW = TOTWIDTH; - pGRD->GBH = HCHEIGHT; - FXCODEC_STATUS status = pGRD->Start_decode_MMR(&BHC, pStream, nullptr); - while (status == FXCODEC_STATUS_DECODE_TOBECONTINUE) { - pGRD->Continue_decode(pPause); - } - pStream->alignByte(); - } - nTmp = 0; - if (!BHC) { - continue; - } - for (I = HCFIRSTSYM; I < NSYMSDECODED; I++) { - SDNEWSYMS[I] = BHC->subImage(nTmp, 0, SDNEWSYMWIDTHS[I], HCHEIGHT); - nTmp += SDNEWSYMWIDTHS[I]; - } - delete BHC; - BHC = nullptr; - } - } - EXINDEX = 0; - CUREXFLAG = 0; - pTable.reset(new CJBig2_HuffmanTable( - HuffmanTable_B1, FX_ArraySize(HuffmanTable_B1), HuffmanTable_HTOOB_B1)); - EXFLAGS = FX_Alloc(FX_BOOL, SDNUMINSYMS + SDNUMNEWSYMS); - while (EXINDEX < SDNUMINSYMS + SDNUMNEWSYMS) { - if (pHuffmanDecoder->decodeAValue(pTable.get(), (int*)&EXRUNLENGTH) != 0) { - FX_Free(EXFLAGS); - goto failed; - } - if (EXINDEX + EXRUNLENGTH > SDNUMINSYMS + SDNUMNEWSYMS) { - FX_Free(EXFLAGS); - goto failed; - } - if (EXRUNLENGTH != 0) { - for (I = EXINDEX; I < EXINDEX + EXRUNLENGTH; I++) { - EXFLAGS[I] = CUREXFLAG; - } - } - EXINDEX = EXINDEX + EXRUNLENGTH; - CUREXFLAG = !CUREXFLAG; - } - I = J = 0; - for (I = 0; I < SDNUMINSYMS + SDNUMNEWSYMS; I++) { - if (EXFLAGS[I] && J < SDNUMEXSYMS) { - if (I < SDNUMINSYMS) { - pDict->AddImage(SDINSYMS[I] ? new CJBig2_Image(*SDINSYMS[I]) : nullptr); - } else { - pDict->AddImage(SDNEWSYMS[I - SDNUMINSYMS]); - } - ++J; - } else if (!EXFLAGS[I] && I >= SDNUMINSYMS) { - delete SDNEWSYMS[I - SDNUMINSYMS]; - } - } - FX_Free(EXFLAGS); - FX_Free(SDNEWSYMS); - if (SDREFAGG == 0) { - FX_Free(SDNEWSYMWIDTHS); - } - return pDict.release(); -failed: - for (I = 0; I < NSYMSDECODED; I++) { - delete SDNEWSYMS[I]; - } - FX_Free(SDNEWSYMS); - if (SDREFAGG == 0) { - FX_Free(SDNEWSYMWIDTHS); - } - return nullptr; -} diff --git a/core/src/fxcodec/jbig2/JBig2_SddProc.h b/core/src/fxcodec/jbig2/JBig2_SddProc.h deleted file mode 100644 index b01ce2fd66..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_SddProc.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_SDDPROC_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_SDDPROC_H_ - -#include - -#include "core/include/fxcrt/fx_system.h" -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" - -class CJBig2_BitStream; -class CJBig2_HuffmanTable; -class CJBig2_Image; -class CJBig2_SymbolDict; -class IFX_Pause; - -class CJBig2_SDDProc { - public: - CJBig2_SymbolDict* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - std::vector* gbContext, - std::vector* grContext); - - CJBig2_SymbolDict* decode_Huffman(CJBig2_BitStream* pStream, - std::vector* gbContext, - std::vector* grContext, - IFX_Pause* pPause); - - public: - FX_BOOL SDHUFF; - FX_BOOL SDREFAGG; - FX_DWORD SDNUMINSYMS; - CJBig2_Image** SDINSYMS; - FX_DWORD SDNUMNEWSYMS; - FX_DWORD SDNUMEXSYMS; - CJBig2_HuffmanTable* SDHUFFDH; - CJBig2_HuffmanTable* SDHUFFDW; - CJBig2_HuffmanTable* SDHUFFBMSIZE; - CJBig2_HuffmanTable* SDHUFFAGGINST; - uint8_t SDTEMPLATE; - int8_t SDAT[8]; - FX_BOOL SDRTEMPLATE; - int8_t SDRAT[4]; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_SDDPROC_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_Segment.cpp b/core/src/fxcodec/jbig2/JBig2_Segment.cpp deleted file mode 100644 index 21fa4d4572..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Segment.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_Segment.h" - -#include "core/include/fxcrt/fx_memory.h" - -CJBig2_Segment::CJBig2_Segment() { - m_dwNumber = 0; - m_cFlags.c = 0; - m_nReferred_to_segment_count = 0; - m_pReferred_to_segment_numbers = NULL; - m_dwPage_association = 0; - m_dwData_length = 0; - m_dwHeader_Length = 0; - m_dwObjNum = 0; - m_dwDataOffset = 0; - m_State = JBIG2_SEGMENT_HEADER_UNPARSED; - m_nResultType = JBIG2_VOID_POINTER; - m_Result.vd = NULL; -} -CJBig2_Segment::~CJBig2_Segment() { - FX_Free(m_pReferred_to_segment_numbers); - - switch (m_nResultType) { - case JBIG2_IMAGE_POINTER: - delete m_Result.im; - break; - case JBIG2_SYMBOL_DICT_POINTER: - delete m_Result.sd; - break; - case JBIG2_PATTERN_DICT_POINTER: - delete m_Result.pd; - break; - case JBIG2_HUFFMAN_TABLE_POINTER: - delete m_Result.ht; - break; - default: - FX_Free(m_Result.vd); - } -} diff --git a/core/src/fxcodec/jbig2/JBig2_Segment.h b/core/src/fxcodec/jbig2/JBig2_Segment.h deleted file mode 100644 index 0f76ad2ab3..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_Segment.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_SEGMENT_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_SEGMENT_H_ - -#include "core/src/fxcodec/jbig2/JBig2_Define.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanTable.h" -#include "core/src/fxcodec/jbig2/JBig2_PatternDict.h" -#include "core/src/fxcodec/jbig2/JBig2_SymbolDict.h" - -#define JBIG2_GET_INT32(buf) \ - (((buf)[0] << 24) | ((buf)[1] << 16) | ((buf)[2] << 8) | (buf)[3]) -#define JBIG2_GET_INT16(buf) (((buf)[0] << 8) | (buf)[1]) -typedef enum { - JBIG2_SEGMENT_HEADER_UNPARSED, - JBIG2_SEGMENT_DATA_UNPARSED, - JBIG2_SEGMENT_PARSE_COMPLETE, - JBIG2_SEGMENT_PAUSED, - JBIG2_SEGMENT_ERROR -} JBig2_SegmentState; -typedef enum { - JBIG2_VOID_POINTER = 0, - JBIG2_IMAGE_POINTER, - JBIG2_SYMBOL_DICT_POINTER, - JBIG2_PATTERN_DICT_POINTER, - JBIG2_HUFFMAN_TABLE_POINTER -} JBig2_ResultType; -class CJBig2_Segment { - public: - CJBig2_Segment(); - - ~CJBig2_Segment(); - - FX_DWORD m_dwNumber; - union { - struct { - uint8_t type : 6; - uint8_t page_association_size : 1; - uint8_t deferred_non_retain : 1; - } s; - uint8_t c; - } m_cFlags; - int32_t m_nReferred_to_segment_count; - FX_DWORD* m_pReferred_to_segment_numbers; - FX_DWORD m_dwPage_association; - FX_DWORD m_dwData_length; - - FX_DWORD m_dwHeader_Length; - FX_DWORD m_dwObjNum; - FX_DWORD m_dwDataOffset; - JBig2_SegmentState m_State; - JBig2_ResultType m_nResultType; - union { - CJBig2_SymbolDict* sd; - CJBig2_PatternDict* pd; - CJBig2_Image* im; - CJBig2_HuffmanTable* ht; - void* vd; - } m_Result; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_SEGMENT_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_SymbolDict.cpp b/core/src/fxcodec/jbig2/JBig2_SymbolDict.cpp deleted file mode 100644 index 5db77250f0..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_SymbolDict.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_SymbolDict.h" - -#include "core/include/fxcrt/fx_memory.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" - -CJBig2_SymbolDict::CJBig2_SymbolDict() { -} - -CJBig2_SymbolDict::~CJBig2_SymbolDict() { -} - -std::unique_ptr CJBig2_SymbolDict::DeepCopy() const { - const CJBig2_SymbolDict* src = this; - std::unique_ptr dst(new CJBig2_SymbolDict); - for (size_t i = 0; i < src->m_SDEXSYMS.size(); ++i) { - CJBig2_Image* image = src->m_SDEXSYMS.get(i); - dst->m_SDEXSYMS.push_back(image ? new CJBig2_Image(*image) : nullptr); - } - dst->m_gbContext = src->m_gbContext; - dst->m_grContext = src->m_grContext; - return dst; -} diff --git a/core/src/fxcodec/jbig2/JBig2_SymbolDict.h b/core/src/fxcodec/jbig2/JBig2_SymbolDict.h deleted file mode 100644 index 5880a83bef..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_SymbolDict.h +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ - -#include -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_List.h" - -class CJBig2_Image; - -class CJBig2_SymbolDict { - public: - CJBig2_SymbolDict(); - ~CJBig2_SymbolDict(); - - std::unique_ptr DeepCopy() const; - - // Takes ownership of |image|. - void AddImage(CJBig2_Image* image) { m_SDEXSYMS.push_back(image); } - - size_t NumImages() const { return m_SDEXSYMS.size(); } - CJBig2_Image* GetImage(size_t index) const { return m_SDEXSYMS.get(index); } - - const std::vector& GbContext() const { return m_gbContext; } - const std::vector& GrContext() const { return m_grContext; } - - void SetGbContext(const std::vector& gbContext) { - m_gbContext = gbContext; - } - void SetGrContext(const std::vector& grContext) { - m_grContext = grContext; - } - - private: - std::vector m_gbContext; - std::vector m_grContext; - CJBig2_List m_SDEXSYMS; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_SYMBOLDICT_H_ diff --git a/core/src/fxcodec/jbig2/JBig2_TrdProc.cpp b/core/src/fxcodec/jbig2/JBig2_TrdProc.cpp deleted file mode 100644 index aa9ca59893..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_TrdProc.cpp +++ /dev/null @@ -1,407 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/jbig2/JBig2_TrdProc.h" - -#include - -#include "core/src/fxcodec/jbig2/JBig2_ArithDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h" -#include "core/src/fxcodec/jbig2/JBig2_GrrdProc.h" -#include "core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h" - -CJBig2_Image* CJBig2_TRDProc::decode_Huffman(CJBig2_BitStream* pStream, - JBig2ArithCtx* grContext) { - int32_t STRIPT, FIRSTS; - FX_DWORD NINSTANCES; - int32_t DT, DFS, CURS; - int32_t SI, TI; - CJBig2_Image* IBI; - FX_DWORD WI, HI; - int32_t IDS; - FX_BOOL RI; - int32_t RDWI, RDHI, RDXI, RDYI; - CJBig2_Image* IBOI; - FX_DWORD WOI, HOI; - FX_BOOL bFirst; - FX_DWORD nTmp; - int32_t nVal, nBits; - std::unique_ptr pHuffmanDecoder( - new CJBig2_HuffmanDecoder(pStream)); - std::unique_ptr SBREG(new CJBig2_Image(SBW, SBH)); - SBREG->fill(SBDEFPIXEL); - if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &STRIPT) != 0) - return nullptr; - - STRIPT *= SBSTRIPS; - STRIPT = -STRIPT; - FIRSTS = 0; - NINSTANCES = 0; - while (NINSTANCES < SBNUMINSTANCES) { - if (pHuffmanDecoder->decodeAValue(SBHUFFDT, &DT) != 0) - return nullptr; - - DT *= SBSTRIPS; - STRIPT = STRIPT + DT; - bFirst = TRUE; - for (;;) { - if (bFirst) { - if (pHuffmanDecoder->decodeAValue(SBHUFFFS, &DFS) != 0) - return nullptr; - - FIRSTS = FIRSTS + DFS; - CURS = FIRSTS; - bFirst = FALSE; - } else { - nVal = pHuffmanDecoder->decodeAValue(SBHUFFDS, &IDS); - if (nVal == JBIG2_OOB) { - break; - } else if (nVal != 0) { - return nullptr; - } else { - CURS = CURS + IDS + SBDSOFFSET; - } - } - uint8_t CURT = 0; - if (SBSTRIPS != 1) { - nTmp = 1; - while ((FX_DWORD)(1 << nTmp) < SBSTRIPS) { - nTmp++; - } - if (pStream->readNBits(nTmp, &nVal) != 0) - return nullptr; - - CURT = nVal; - } - TI = STRIPT + CURT; - nVal = 0; - nBits = 0; - FX_DWORD IDI; - for (;;) { - if (pStream->read1Bit(&nTmp) != 0) - return nullptr; - - nVal = (nVal << 1) | nTmp; - nBits++; - for (IDI = 0; IDI < SBNUMSYMS; IDI++) { - if ((nBits == SBSYMCODES[IDI].codelen) && - (nVal == SBSYMCODES[IDI].code)) { - break; - } - } - if (IDI < SBNUMSYMS) { - break; - } - } - if (SBREFINE == 0) { - RI = 0; - } else { - if (pStream->read1Bit(&RI) != 0) { - return nullptr; - } - } - if (RI == 0) { - IBI = SBSYMS[IDI]; - } else { - if ((pHuffmanDecoder->decodeAValue(SBHUFFRDW, &RDWI) != 0) || - (pHuffmanDecoder->decodeAValue(SBHUFFRDH, &RDHI) != 0) || - (pHuffmanDecoder->decodeAValue(SBHUFFRDX, &RDXI) != 0) || - (pHuffmanDecoder->decodeAValue(SBHUFFRDY, &RDYI) != 0) || - (pHuffmanDecoder->decodeAValue(SBHUFFRSIZE, &nVal) != 0)) { - return nullptr; - } - pStream->alignByte(); - nTmp = pStream->getOffset(); - IBOI = SBSYMS[IDI]; - if (!IBOI) - return nullptr; - - WOI = IBOI->m_nWidth; - HOI = IBOI->m_nHeight; - if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) - return nullptr; - - std::unique_ptr pGRRD(new CJBig2_GRRDProc()); - pGRRD->GRW = WOI + RDWI; - pGRRD->GRH = HOI + RDHI; - pGRRD->GRTEMPLATE = SBRTEMPLATE; - pGRRD->GRREFERENCE = IBOI; - pGRRD->GRREFERENCEDX = (RDWI >> 2) + RDXI; - pGRRD->GRREFERENCEDY = (RDHI >> 2) + RDYI; - pGRRD->TPGRON = 0; - pGRRD->GRAT[0] = SBRAT[0]; - pGRRD->GRAT[1] = SBRAT[1]; - pGRRD->GRAT[2] = SBRAT[2]; - pGRRD->GRAT[3] = SBRAT[3]; - - { - std::unique_ptr pArithDecoder( - new CJBig2_ArithDecoder(pStream)); - IBI = pGRRD->decode(pArithDecoder.get(), grContext); - if (!IBI) - return nullptr; - } - - pStream->alignByte(); - pStream->offset(2); - if ((FX_DWORD)nVal != (pStream->getOffset() - nTmp)) { - delete IBI; - return nullptr; - } - } - if (!IBI) { - continue; - } - WI = IBI->m_nWidth; - HI = IBI->m_nHeight; - if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPRIGHT) || - (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { - CURS = CURS + WI - 1; - } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_BOTTOMLEFT) || - (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { - CURS = CURS + HI - 1; - } - SI = CURS; - if (TRANSPOSED == 0) { - switch (REFCORNER) { - case JBIG2_CORNER_TOPLEFT: - SBREG->composeFrom(SI, TI, IBI, SBCOMBOP); - break; - case JBIG2_CORNER_TOPRIGHT: - SBREG->composeFrom(SI - WI + 1, TI, IBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMLEFT: - SBREG->composeFrom(SI, TI - HI + 1, IBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMRIGHT: - SBREG->composeFrom(SI - WI + 1, TI - HI + 1, IBI, SBCOMBOP); - break; - } - } else { - switch (REFCORNER) { - case JBIG2_CORNER_TOPLEFT: - SBREG->composeFrom(TI, SI, IBI, SBCOMBOP); - break; - case JBIG2_CORNER_TOPRIGHT: - SBREG->composeFrom(TI - WI + 1, SI, IBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMLEFT: - SBREG->composeFrom(TI, SI - HI + 1, IBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMRIGHT: - SBREG->composeFrom(TI - WI + 1, SI - HI + 1, IBI, SBCOMBOP); - break; - } - } - if (RI != 0) { - delete IBI; - } - if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || - (REFCORNER == JBIG2_CORNER_BOTTOMLEFT))) { - CURS = CURS + WI - 1; - } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || - (REFCORNER == JBIG2_CORNER_TOPRIGHT))) { - CURS = CURS + HI - 1; - } - NINSTANCES = NINSTANCES + 1; - } - } - return SBREG.release(); -} - -CJBig2_Image* CJBig2_TRDProc::decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext, - JBig2IntDecoderState* pIDS) { - std::unique_ptr IADT; - std::unique_ptr IAFS; - std::unique_ptr IADS; - std::unique_ptr IAIT; - std::unique_ptr IARI; - std::unique_ptr IARDW; - std::unique_ptr IARDH; - std::unique_ptr IARDX; - std::unique_ptr IARDY; - std::unique_ptr IAID; - CJBig2_ArithIntDecoder* pIADT; - CJBig2_ArithIntDecoder* pIAFS; - CJBig2_ArithIntDecoder* pIADS; - CJBig2_ArithIntDecoder* pIAIT; - CJBig2_ArithIntDecoder* pIARI; - CJBig2_ArithIntDecoder* pIARDW; - CJBig2_ArithIntDecoder* pIARDH; - CJBig2_ArithIntDecoder* pIARDX; - CJBig2_ArithIntDecoder* pIARDY; - CJBig2_ArithIaidDecoder* pIAID; - if (pIDS) { - pIADT = pIDS->IADT; - pIAFS = pIDS->IAFS; - pIADS = pIDS->IADS; - pIAIT = pIDS->IAIT; - pIARI = pIDS->IARI; - pIARDW = pIDS->IARDW; - pIARDH = pIDS->IARDH; - pIARDX = pIDS->IARDX; - pIARDY = pIDS->IARDY; - pIAID = pIDS->IAID; - } else { - IADT.reset(new CJBig2_ArithIntDecoder()); - IAFS.reset(new CJBig2_ArithIntDecoder()); - IADS.reset(new CJBig2_ArithIntDecoder()); - IAIT.reset(new CJBig2_ArithIntDecoder()); - IARI.reset(new CJBig2_ArithIntDecoder()); - IARDW.reset(new CJBig2_ArithIntDecoder()); - IARDH.reset(new CJBig2_ArithIntDecoder()); - IARDX.reset(new CJBig2_ArithIntDecoder()); - IARDY.reset(new CJBig2_ArithIntDecoder()); - IAID.reset(new CJBig2_ArithIaidDecoder(SBSYMCODELEN)); - pIADT = IADT.get(); - pIAFS = IAFS.get(); - pIADS = IADS.get(); - pIAIT = IAIT.get(); - pIARI = IARI.get(); - pIARDW = IARDW.get(); - pIARDH = IARDH.get(); - pIARDX = IARDX.get(); - pIARDY = IARDY.get(); - pIAID = IAID.get(); - } - std::unique_ptr SBREG(new CJBig2_Image(SBW, SBH)); - SBREG->fill(SBDEFPIXEL); - int32_t STRIPT; - pIADT->decode(pArithDecoder, &STRIPT); - STRIPT *= SBSTRIPS; - STRIPT = -STRIPT; - int32_t FIRSTS = 0; - FX_DWORD NINSTANCES = 0; - while (NINSTANCES < SBNUMINSTANCES) { - int32_t CURS; - int32_t DT; - pIADT->decode(pArithDecoder, &DT); - DT *= SBSTRIPS; - STRIPT += DT; - bool bFirst = true; - for (;;) { - if (bFirst) { - int32_t DFS; - pIAFS->decode(pArithDecoder, &DFS); - FIRSTS += DFS; - CURS = FIRSTS; - bFirst = false; - } else { - int32_t IDS; - if (!pIADS->decode(pArithDecoder, &IDS)) - break; - CURS += IDS + SBDSOFFSET; - } - if (NINSTANCES >= SBNUMINSTANCES) { - break; - } - int CURT = 0; - if (SBSTRIPS != 1) - pIAIT->decode(pArithDecoder, &CURT); - - int32_t TI = STRIPT + CURT; - FX_DWORD IDI; - pIAID->decode(pArithDecoder, &IDI); - if (IDI >= SBNUMSYMS) - return nullptr; - - int RI; - if (SBREFINE == 0) - RI = 0; - else - pIARI->decode(pArithDecoder, &RI); - - std::unique_ptr IBI; - CJBig2_Image* pIBI; - if (RI == 0) { - pIBI = SBSYMS[IDI]; - } else { - int32_t RDWI; - int32_t RDHI; - int32_t RDXI; - int32_t RDYI; - pIARDW->decode(pArithDecoder, &RDWI); - pIARDH->decode(pArithDecoder, &RDHI); - pIARDX->decode(pArithDecoder, &RDXI); - pIARDY->decode(pArithDecoder, &RDYI); - CJBig2_Image* IBOI = SBSYMS[IDI]; - FX_DWORD WOI = IBOI->m_nWidth; - FX_DWORD HOI = IBOI->m_nHeight; - if ((int)(WOI + RDWI) < 0 || (int)(HOI + RDHI) < 0) { - return nullptr; - } - std::unique_ptr pGRRD(new CJBig2_GRRDProc()); - pGRRD->GRW = WOI + RDWI; - pGRRD->GRH = HOI + RDHI; - pGRRD->GRTEMPLATE = SBRTEMPLATE; - pGRRD->GRREFERENCE = IBOI; - pGRRD->GRREFERENCEDX = (RDWI >> 1) + RDXI; - pGRRD->GRREFERENCEDY = (RDHI >> 1) + RDYI; - pGRRD->TPGRON = 0; - pGRRD->GRAT[0] = SBRAT[0]; - pGRRD->GRAT[1] = SBRAT[1]; - pGRRD->GRAT[2] = SBRAT[2]; - pGRRD->GRAT[3] = SBRAT[3]; - IBI.reset(pGRRD->decode(pArithDecoder, grContext)); - pIBI = IBI.get(); - } - if (!pIBI) - return nullptr; - - FX_DWORD WI = pIBI->m_nWidth; - FX_DWORD HI = pIBI->m_nHeight; - if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPRIGHT) || - (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { - CURS += WI - 1; - } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_BOTTOMLEFT) || - (REFCORNER == JBIG2_CORNER_BOTTOMRIGHT))) { - CURS += HI - 1; - } - int32_t SI = CURS; - if (TRANSPOSED == 0) { - switch (REFCORNER) { - case JBIG2_CORNER_TOPLEFT: - SBREG->composeFrom(SI, TI, pIBI, SBCOMBOP); - break; - case JBIG2_CORNER_TOPRIGHT: - SBREG->composeFrom(SI - WI + 1, TI, pIBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMLEFT: - SBREG->composeFrom(SI, TI - HI + 1, pIBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMRIGHT: - SBREG->composeFrom(SI - WI + 1, TI - HI + 1, pIBI, SBCOMBOP); - break; - } - } else { - switch (REFCORNER) { - case JBIG2_CORNER_TOPLEFT: - SBREG->composeFrom(TI, SI, pIBI, SBCOMBOP); - break; - case JBIG2_CORNER_TOPRIGHT: - SBREG->composeFrom(TI - WI + 1, SI, pIBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMLEFT: - SBREG->composeFrom(TI, SI - HI + 1, pIBI, SBCOMBOP); - break; - case JBIG2_CORNER_BOTTOMRIGHT: - SBREG->composeFrom(TI - WI + 1, SI - HI + 1, pIBI, SBCOMBOP); - break; - } - } - if (TRANSPOSED == 0 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || - (REFCORNER == JBIG2_CORNER_BOTTOMLEFT))) { - CURS += WI - 1; - } else if (TRANSPOSED == 1 && ((REFCORNER == JBIG2_CORNER_TOPLEFT) || - (REFCORNER == JBIG2_CORNER_TOPRIGHT))) { - CURS += HI - 1; - } - ++NINSTANCES; - } - } - return SBREG.release(); -} diff --git a/core/src/fxcodec/jbig2/JBig2_TrdProc.h b/core/src/fxcodec/jbig2/JBig2_TrdProc.h deleted file mode 100644 index e36b269ba6..0000000000 --- a/core/src/fxcodec/jbig2/JBig2_TrdProc.h +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_JBIG2_JBIG2_TRDPROC_H_ -#define CORE_SRC_FXCODEC_JBIG2_JBIG2_TRDPROC_H_ - -#include "core/include/fxcrt/fx_system.h" -#include "core/src/fxcodec/jbig2/JBig2_Image.h" - -class CJBig2_ArithDecoder; -class CJBig2_ArithIaidDecoder; -class CJBig2_ArithIntDecoder; -class CJBig2_BitStream; -class CJBig2_HuffmanTable; -struct JBig2ArithCtx; -struct JBig2HuffmanCode; - -struct JBig2IntDecoderState { - CJBig2_ArithIntDecoder* IADT; - CJBig2_ArithIntDecoder* IAFS; - CJBig2_ArithIntDecoder* IADS; - CJBig2_ArithIntDecoder* IAIT; - CJBig2_ArithIntDecoder* IARI; - CJBig2_ArithIntDecoder* IARDW; - CJBig2_ArithIntDecoder* IARDH; - CJBig2_ArithIntDecoder* IARDX; - CJBig2_ArithIntDecoder* IARDY; - CJBig2_ArithIaidDecoder* IAID; -}; - -enum JBig2Corner { - JBIG2_CORNER_BOTTOMLEFT = 0, - JBIG2_CORNER_TOPLEFT = 1, - JBIG2_CORNER_BOTTOMRIGHT = 2, - JBIG2_CORNER_TOPRIGHT = 3 -}; - -class CJBig2_TRDProc { - public: - CJBig2_Image* decode_Huffman(CJBig2_BitStream* pStream, - JBig2ArithCtx* grContext); - - CJBig2_Image* decode_Arith(CJBig2_ArithDecoder* pArithDecoder, - JBig2ArithCtx* grContext, - JBig2IntDecoderState* pIDS); - - public: - FX_BOOL SBHUFF; - FX_BOOL SBREFINE; - FX_DWORD SBW; - FX_DWORD SBH; - FX_DWORD SBNUMINSTANCES; - FX_DWORD SBSTRIPS; - FX_DWORD SBNUMSYMS; - - JBig2HuffmanCode* SBSYMCODES; - uint8_t SBSYMCODELEN; - - CJBig2_Image** SBSYMS; - FX_BOOL SBDEFPIXEL; - - JBig2ComposeOp SBCOMBOP; - FX_BOOL TRANSPOSED; - - JBig2Corner REFCORNER; - int8_t SBDSOFFSET; - CJBig2_HuffmanTable* SBHUFFFS; - CJBig2_HuffmanTable* SBHUFFDS; - CJBig2_HuffmanTable* SBHUFFDT; - CJBig2_HuffmanTable* SBHUFFRDW; - CJBig2_HuffmanTable* SBHUFFRDH; - CJBig2_HuffmanTable* SBHUFFRDX; - CJBig2_HuffmanTable* SBHUFFRDY; - CJBig2_HuffmanTable* SBHUFFRSIZE; - FX_BOOL SBRTEMPLATE; - int8_t SBRAT[4]; -}; - -#endif // CORE_SRC_FXCODEC_JBIG2_JBIG2_TRDPROC_H_ diff --git a/core/src/fxcodec/lbmp/fx_bmp.cpp b/core/src/fxcodec/lbmp/fx_bmp.cpp deleted file mode 100644 index 07e83a1618..0000000000 --- a/core/src/fxcodec/lbmp/fx_bmp.cpp +++ /dev/null @@ -1,948 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/lbmp/fx_bmp.h" - -#include - -namespace { - -const size_t kBmpCoreHeaderSize = 12; -const size_t kBmpInfoHeaderSize = 40; - -// TODO(thestig): Replace with FXDWORD_GET_LSBFIRST? -FX_DWORD GetDWord_LSBFirst(uint8_t* p) { - return p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24); -} - -void SetDWord_LSBFirst(uint8_t* p, FX_DWORD v) { - p[0] = (uint8_t)v; - p[1] = (uint8_t)(v >> 8); - p[2] = (uint8_t)(v >> 16); - p[3] = (uint8_t)(v >> 24); -} -} // namespace - -FX_WORD GetWord_LSBFirst(uint8_t* p) { - return p[0] | (p[1] << 8); -} -void SetWord_LSBFirst(uint8_t* p, FX_WORD v) { - p[0] = (uint8_t)v; - p[1] = (uint8_t)(v >> 8); -} -void bmp_error(bmp_decompress_struct_p bmp_ptr, const FX_CHAR* err_msg) { - if (bmp_ptr && bmp_ptr->bmp_error_fn) { - bmp_ptr->bmp_error_fn(bmp_ptr, err_msg); - } -} -bmp_decompress_struct_p bmp_create_decompress() { - bmp_decompress_struct_p bmp_ptr = FX_Alloc(bmp_decompress_struct, 1); - if (bmp_ptr == NULL) { - return NULL; - } - FXSYS_memset(bmp_ptr, 0, sizeof(bmp_decompress_struct)); - bmp_ptr->decode_status = BMP_D_STATUS_HEADER; - bmp_ptr->bmp_header_ptr = FX_Alloc(BmpFileHeader, 1); - return bmp_ptr; -} -void bmp_destroy_decompress(bmp_decompress_struct_pp bmp_ptr_ptr) { - if (bmp_ptr_ptr == NULL || *bmp_ptr_ptr == NULL) { - return; - } - bmp_decompress_struct_p bmp_ptr = *bmp_ptr_ptr; - *bmp_ptr_ptr = NULL; - if (bmp_ptr->out_row_buffer) { - FX_Free(bmp_ptr->out_row_buffer); - } - FX_Free(bmp_ptr->pal_ptr); - FX_Free(bmp_ptr->bmp_header_ptr); - FX_Free(bmp_ptr); -} -int32_t bmp_read_header(bmp_decompress_struct_p bmp_ptr) { - if (bmp_ptr == NULL) { - return 0; - } - FX_DWORD skip_size_org = bmp_ptr->skip_size; - if (bmp_ptr->decode_status == BMP_D_STATUS_HEADER) { - ASSERT(sizeof(BmpFileHeader) == 14); - BmpFileHeader* bmp_header_ptr = NULL; - if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_header_ptr, 14) == NULL) { - return 2; - } - bmp_ptr->bmp_header_ptr->bfType = - GetWord_LSBFirst((uint8_t*)&bmp_header_ptr->bfType); - bmp_ptr->bmp_header_ptr->bfOffBits = - GetDWord_LSBFirst((uint8_t*)&bmp_header_ptr->bfOffBits); - bmp_ptr->data_size = GetDWord_LSBFirst((uint8_t*)&bmp_header_ptr->bfSize); - if (bmp_ptr->bmp_header_ptr->bfType != BMP_SIGNATURE) { - bmp_error(bmp_ptr, "Not A Bmp Image"); - return 0; - } - if (bmp_ptr->avail_in < sizeof(FX_DWORD)) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - bmp_ptr->img_ifh_size = - GetDWord_LSBFirst(bmp_ptr->next_in + bmp_ptr->skip_size); - bmp_ptr->pal_type = 0; - static_assert(sizeof(BmpCoreHeader) == kBmpCoreHeaderSize, - "BmpCoreHeader has wrong size"); - static_assert(sizeof(BmpInfoHeader) == kBmpInfoHeaderSize, - "BmpInfoHeader has wrong size"); - switch (bmp_ptr->img_ifh_size) { - case kBmpCoreHeaderSize: { - bmp_ptr->pal_type = 1; - BmpCoreHeaderPtr bmp_core_header_ptr = NULL; - if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_core_header_ptr, - bmp_ptr->img_ifh_size) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - bmp_ptr->width = - GetWord_LSBFirst((uint8_t*)&bmp_core_header_ptr->bcWidth); - bmp_ptr->height = - GetWord_LSBFirst((uint8_t*)&bmp_core_header_ptr->bcHeight); - bmp_ptr->bitCounts = - GetWord_LSBFirst((uint8_t*)&bmp_core_header_ptr->bcBitCount); - bmp_ptr->compress_flag = BMP_RGB; - bmp_ptr->imgTB_flag = FALSE; - } break; - case kBmpInfoHeaderSize: { - BmpInfoHeaderPtr bmp_info_header_ptr = NULL; - if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_info_header_ptr, - bmp_ptr->img_ifh_size) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - bmp_ptr->width = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biWidth); - bmp_ptr->height = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biHeight); - bmp_ptr->bitCounts = - GetWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biBitCount); - bmp_ptr->compress_flag = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biCompression); - bmp_ptr->color_used = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biClrUsed); - bmp_ptr->dpi_x = (int32_t)GetDWord_LSBFirst( - (uint8_t*)&bmp_info_header_ptr->biXPelsPerMeter); - bmp_ptr->dpi_y = (int32_t)GetDWord_LSBFirst( - (uint8_t*)&bmp_info_header_ptr->biYPelsPerMeter); - if (bmp_ptr->height < 0) { - bmp_ptr->height = -bmp_ptr->height; - bmp_ptr->imgTB_flag = TRUE; - } - } break; - default: { - if (bmp_ptr->img_ifh_size > - std::min(kBmpInfoHeaderSize, sizeof(BmpInfoHeader))) { - BmpInfoHeaderPtr bmp_info_header_ptr = NULL; - if (bmp_read_data(bmp_ptr, (uint8_t**)&bmp_info_header_ptr, - bmp_ptr->img_ifh_size) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - FX_WORD biPlanes; - bmp_ptr->width = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biWidth); - bmp_ptr->height = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biHeight); - bmp_ptr->bitCounts = - GetWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biBitCount); - bmp_ptr->compress_flag = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biCompression); - bmp_ptr->color_used = - GetDWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biClrUsed); - biPlanes = GetWord_LSBFirst((uint8_t*)&bmp_info_header_ptr->biPlanes); - bmp_ptr->dpi_x = GetDWord_LSBFirst( - (uint8_t*)&bmp_info_header_ptr->biXPelsPerMeter); - bmp_ptr->dpi_y = GetDWord_LSBFirst( - (uint8_t*)&bmp_info_header_ptr->biYPelsPerMeter); - if (bmp_ptr->height < 0) { - bmp_ptr->height = -bmp_ptr->height; - bmp_ptr->imgTB_flag = TRUE; - } - if (bmp_ptr->compress_flag == BMP_RGB && biPlanes == 1 && - bmp_ptr->color_used == 0) { - break; - } - } - bmp_error(bmp_ptr, "Unsupported Bmp File"); - return 0; - } - } - ASSERT(bmp_ptr->width > 0); - ASSERT(bmp_ptr->compress_flag <= BMP_BITFIELDS); - switch (bmp_ptr->bitCounts) { - case 1: - case 4: - case 8: - case 16: - case 24: { - if (bmp_ptr->color_used > ((FX_DWORD)1) << bmp_ptr->bitCounts) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - } - case 32: { - if (bmp_ptr->width <= 0 || bmp_ptr->compress_flag > BMP_BITFIELDS) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - } break; - default: - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - bmp_ptr->src_row_bytes = BMP_WIDTHBYTES(bmp_ptr->width, bmp_ptr->bitCounts); - switch (bmp_ptr->bitCounts) { - case 1: - case 4: - case 8: - bmp_ptr->out_row_bytes = BMP_WIDTHBYTES(bmp_ptr->width, 8); - bmp_ptr->components = 1; - break; - case 16: - case 24: - bmp_ptr->out_row_bytes = BMP_WIDTHBYTES(bmp_ptr->width, 24); - bmp_ptr->components = 3; - break; - case 32: - bmp_ptr->out_row_bytes = bmp_ptr->src_row_bytes; - bmp_ptr->components = 4; - break; - } - FX_Free(bmp_ptr->out_row_buffer); - bmp_ptr->out_row_buffer = FX_Alloc(uint8_t, bmp_ptr->out_row_bytes); - FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_PAL); - } - if (bmp_ptr->decode_status == BMP_D_STATUS_PAL) { - skip_size_org = bmp_ptr->skip_size; - if (bmp_ptr->compress_flag == BMP_BITFIELDS) { - if (bmp_ptr->bitCounts != 16 && bmp_ptr->bitCounts != 32) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - FX_DWORD* mask; - if (bmp_read_data(bmp_ptr, (uint8_t**)&mask, 3 * sizeof(FX_DWORD)) == - NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - bmp_ptr->mask_red = GetDWord_LSBFirst((uint8_t*)&mask[0]); - bmp_ptr->mask_green = GetDWord_LSBFirst((uint8_t*)&mask[1]); - bmp_ptr->mask_blue = GetDWord_LSBFirst((uint8_t*)&mask[2]); - if (bmp_ptr->mask_red & bmp_ptr->mask_green || - bmp_ptr->mask_red & bmp_ptr->mask_blue || - bmp_ptr->mask_green & bmp_ptr->mask_blue) { - bmp_error(bmp_ptr, "The Bitfield Bmp File Is Corrupt"); - return 0; - } - if (bmp_ptr->bmp_header_ptr->bfOffBits < 26 + bmp_ptr->img_ifh_size) { - bmp_ptr->bmp_header_ptr->bfOffBits = 26 + bmp_ptr->img_ifh_size; - } - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA_PRE); - return 1; - } else if (bmp_ptr->bitCounts == 16) { - bmp_ptr->mask_red = 0x7C00; - bmp_ptr->mask_green = 0x03E0; - bmp_ptr->mask_blue = 0x001F; - } - bmp_ptr->pal_num = 0; - if (bmp_ptr->bitCounts < 16) { - bmp_ptr->pal_num = 1 << bmp_ptr->bitCounts; - if (bmp_ptr->color_used != 0) { - bmp_ptr->pal_num = bmp_ptr->color_used; - } - uint8_t* src_pal_ptr = NULL; - FX_DWORD src_pal_size = bmp_ptr->pal_num * (bmp_ptr->pal_type ? 3 : 4); - if (bmp_read_data(bmp_ptr, (uint8_t**)&src_pal_ptr, src_pal_size) == - NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - FX_Free(bmp_ptr->pal_ptr); - bmp_ptr->pal_ptr = FX_Alloc(FX_DWORD, bmp_ptr->pal_num); - int32_t src_pal_index = 0; - if (bmp_ptr->pal_type == BMP_PAL_OLD) { - while (src_pal_index < bmp_ptr->pal_num) { - bmp_ptr->pal_ptr[src_pal_index++] = BMP_PAL_ENCODE( - 0x00, src_pal_ptr[2], src_pal_ptr[1], src_pal_ptr[0]); - src_pal_ptr += 3; - } - } else { - while (src_pal_index < bmp_ptr->pal_num) { - bmp_ptr->pal_ptr[src_pal_index++] = BMP_PAL_ENCODE( - src_pal_ptr[3], src_pal_ptr[2], src_pal_ptr[1], src_pal_ptr[0]); - src_pal_ptr += 4; - } - } - } - if (bmp_ptr->bmp_header_ptr->bfOffBits < - 14 + bmp_ptr->img_ifh_size + - bmp_ptr->pal_num * (bmp_ptr->pal_type ? 3 : 4)) { - bmp_ptr->bmp_header_ptr->bfOffBits = - 14 + bmp_ptr->img_ifh_size + - bmp_ptr->pal_num * (bmp_ptr->pal_type ? 3 : 4); - } - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA_PRE); - } - return 1; -} -int32_t bmp_decode_image(bmp_decompress_struct_p bmp_ptr) { - if (bmp_ptr->decode_status == BMP_D_STATUS_DATA_PRE) { - bmp_ptr->avail_in = 0; - if (!bmp_ptr->bmp_get_data_position_fn( - bmp_ptr, bmp_ptr->bmp_header_ptr->bfOffBits)) { - bmp_ptr->decode_status = BMP_D_STATUS_TAIL; - bmp_error(bmp_ptr, "The Bmp File Is Corrupt, Unexpected Stream Offset"); - return 0; - } - bmp_ptr->row_num = 0; - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); - } - if (bmp_ptr->decode_status == BMP_D_STATUS_DATA) { - switch (bmp_ptr->compress_flag) { - case BMP_RGB: - case BMP_BITFIELDS: - return bmp_decode_rgb(bmp_ptr); - case BMP_RLE8: - return bmp_decode_rle8(bmp_ptr); - case BMP_RLE4: - return bmp_decode_rle4(bmp_ptr); - } - } - bmp_error(bmp_ptr, "Any Uncontrol Error"); - return 0; -} -int32_t bmp_decode_rgb(bmp_decompress_struct_p bmp_ptr) { - uint8_t* row_buf = bmp_ptr->out_row_buffer; - uint8_t* des_buf = NULL; - while (bmp_ptr->row_num < bmp_ptr->height) { - if (bmp_read_data(bmp_ptr, &des_buf, bmp_ptr->src_row_bytes) == NULL) { - return 2; - } - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); - switch (bmp_ptr->bitCounts) { - case 1: { - for (int32_t col = 0; col < bmp_ptr->width; col++) { - *row_buf++ = des_buf[col >> 3] & (0x80 >> (col % 8)) ? 0x01 : 0x00; - } - } break; - case 4: { - for (int32_t col = 0; col < bmp_ptr->width; col++) { - *row_buf++ = (col & 0x01) ? (des_buf[col >> 1] & 0x0F) - : ((des_buf[col >> 1] & 0xF0) >> 4); - } - } break; - case 16: { - FX_WORD* buf = (FX_WORD*)des_buf; - uint8_t blue_bits = 0; - uint8_t green_bits = 0; - uint8_t red_bits = 0; - for (int32_t i = 0; i < 16; i++) { - if ((bmp_ptr->mask_blue >> i) & 0x01) { - blue_bits++; - } - if ((bmp_ptr->mask_green >> i) & 0x01) { - green_bits++; - } - if ((bmp_ptr->mask_red >> i) & 0x01) { - red_bits++; - } - } - green_bits += blue_bits; - red_bits += green_bits; - blue_bits = 8 - blue_bits; - green_bits -= 8; - red_bits -= 8; - for (int32_t col = 0; col < bmp_ptr->width; col++) { - *buf = GetWord_LSBFirst((uint8_t*)buf); - *row_buf++ = (uint8_t)((*buf & bmp_ptr->mask_blue) << blue_bits); - *row_buf++ = (uint8_t)((*buf & bmp_ptr->mask_green) >> green_bits); - *row_buf++ = (uint8_t)((*buf++ & bmp_ptr->mask_red) >> red_bits); - } - } break; - case 8: - case 24: - case 32: - FXSYS_memcpy(bmp_ptr->out_row_buffer, des_buf, bmp_ptr->src_row_bytes); - break; - } - row_buf = bmp_ptr->out_row_buffer; - bmp_ptr->bmp_get_row_fn(bmp_ptr, - bmp_ptr->imgTB_flag - ? bmp_ptr->row_num++ - : (bmp_ptr->height - 1 - bmp_ptr->row_num++), - bmp_ptr->out_row_buffer); - } - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); - return 1; -} -int32_t bmp_decode_rle8(bmp_decompress_struct_p bmp_ptr) { - uint8_t* first_byte_ptr = NULL; - uint8_t* second_byte_ptr = NULL; - bmp_ptr->col_num = 0; - while (TRUE) { - FX_DWORD skip_size_org = bmp_ptr->skip_size; - if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { - return 2; - } - switch (*first_byte_ptr) { - case RLE_MARKER: { - if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - switch (*first_byte_ptr) { - case RLE_EOL: { - if (bmp_ptr->row_num >= bmp_ptr->height) { - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - bmp_ptr->bmp_get_row_fn( - bmp_ptr, bmp_ptr->imgTB_flag - ? bmp_ptr->row_num++ - : (bmp_ptr->height - 1 - bmp_ptr->row_num++), - bmp_ptr->out_row_buffer); - bmp_ptr->col_num = 0; - FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); - continue; - } - case RLE_EOI: { - if (bmp_ptr->row_num < bmp_ptr->height) { - bmp_ptr->bmp_get_row_fn( - bmp_ptr, bmp_ptr->imgTB_flag - ? bmp_ptr->row_num++ - : (bmp_ptr->height - 1 - bmp_ptr->row_num++), - bmp_ptr->out_row_buffer); - } - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); - return 1; - } - case RLE_DELTA: { - uint8_t* delta_ptr; - if (bmp_read_data(bmp_ptr, &delta_ptr, 2) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - bmp_ptr->col_num += (int32_t)delta_ptr[0]; - int32_t bmp_row_num_next = bmp_ptr->row_num + (int32_t)delta_ptr[1]; - if (bmp_ptr->col_num >= bmp_ptr->out_row_bytes || - bmp_row_num_next >= bmp_ptr->height) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt Or Not Supported"); - return 0; - } - while (bmp_ptr->row_num < bmp_row_num_next) { - FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); - bmp_ptr->bmp_get_row_fn( - bmp_ptr, bmp_ptr->imgTB_flag - ? bmp_ptr->row_num++ - : (bmp_ptr->height - 1 - bmp_ptr->row_num++), - bmp_ptr->out_row_buffer); - } - } break; - default: { - if ((int32_t)(*first_byte_ptr) > - bmp_ptr->src_row_bytes - bmp_ptr->col_num) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - if (bmp_read_data(bmp_ptr, &second_byte_ptr, - *first_byte_ptr & 1 ? *first_byte_ptr + 1 - : *first_byte_ptr) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - FXSYS_memcpy(bmp_ptr->out_row_buffer + bmp_ptr->col_num, - second_byte_ptr, *first_byte_ptr); - bmp_ptr->col_num += (int32_t)(*first_byte_ptr); - } - } - } break; - default: { - if (bmp_read_data(bmp_ptr, &second_byte_ptr, 1) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - if ((int32_t)(*first_byte_ptr) > - bmp_ptr->src_row_bytes - bmp_ptr->col_num) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - FXSYS_memset(bmp_ptr->out_row_buffer + bmp_ptr->col_num, - *second_byte_ptr, *first_byte_ptr); - bmp_ptr->col_num += (int32_t)(*first_byte_ptr); - } - } - } - bmp_error(bmp_ptr, "Any Uncontrol Error"); - return 0; -} -int32_t bmp_decode_rle4(bmp_decompress_struct_p bmp_ptr) { - uint8_t* first_byte_ptr = NULL; - uint8_t* second_byte_ptr = NULL; - bmp_ptr->col_num = 0; - while (TRUE) { - FX_DWORD skip_size_org = bmp_ptr->skip_size; - if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { - return 2; - } - switch (*first_byte_ptr) { - case RLE_MARKER: { - if (bmp_read_data(bmp_ptr, &first_byte_ptr, 1) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - switch (*first_byte_ptr) { - case RLE_EOL: { - if (bmp_ptr->row_num >= bmp_ptr->height) { - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - bmp_ptr->bmp_get_row_fn( - bmp_ptr, bmp_ptr->imgTB_flag - ? bmp_ptr->row_num++ - : (bmp_ptr->height - 1 - bmp_ptr->row_num++), - bmp_ptr->out_row_buffer); - bmp_ptr->col_num = 0; - FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_DATA); - continue; - } - case RLE_EOI: { - if (bmp_ptr->row_num < bmp_ptr->height) { - bmp_ptr->bmp_get_row_fn( - bmp_ptr, bmp_ptr->imgTB_flag - ? bmp_ptr->row_num++ - : (bmp_ptr->height - 1 - bmp_ptr->row_num++), - bmp_ptr->out_row_buffer); - } - bmp_save_decoding_status(bmp_ptr, BMP_D_STATUS_TAIL); - return 1; - } - case RLE_DELTA: { - uint8_t* delta_ptr; - if (bmp_read_data(bmp_ptr, &delta_ptr, 2) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - bmp_ptr->col_num += (int32_t)delta_ptr[0]; - int32_t bmp_row_num_next = bmp_ptr->row_num + (int32_t)delta_ptr[1]; - if (bmp_ptr->col_num >= bmp_ptr->out_row_bytes || - bmp_row_num_next >= bmp_ptr->height) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt Or Not Supported"); - return 0; - } - while (bmp_ptr->row_num < bmp_row_num_next) { - FXSYS_memset(bmp_ptr->out_row_buffer, 0, bmp_ptr->out_row_bytes); - bmp_ptr->bmp_get_row_fn( - bmp_ptr, bmp_ptr->imgTB_flag - ? bmp_ptr->row_num++ - : (bmp_ptr->height - 1 - bmp_ptr->row_num++), - bmp_ptr->out_row_buffer); - } - } break; - default: { - uint8_t size = (uint8_t)(((FX_WORD)(*first_byte_ptr) + 1) >> 1); - if ((int32_t)*first_byte_ptr >= - bmp_ptr->out_row_bytes - bmp_ptr->col_num) { - if (size + (bmp_ptr->col_num >> 1) > bmp_ptr->src_row_bytes) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - *first_byte_ptr = bmp_ptr->out_row_bytes - bmp_ptr->col_num - 1; - } - if (bmp_read_data(bmp_ptr, &second_byte_ptr, - size & 1 ? size + 1 : size) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - for (uint8_t i = 0; i < *first_byte_ptr; i++) { - if (i & 0x01) { - *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = - (*second_byte_ptr++ & 0x0F); - } else { - *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = - ((*second_byte_ptr & 0xF0) >> 4); - } - } - } - } - } break; - default: { - if (bmp_read_data(bmp_ptr, &second_byte_ptr, 1) == NULL) { - bmp_ptr->skip_size = skip_size_org; - return 2; - } - if ((int32_t)*first_byte_ptr > - bmp_ptr->out_row_bytes - bmp_ptr->col_num) { - uint8_t size = (uint8_t)(((FX_WORD)(*first_byte_ptr) + 1) >> 1); - if (size + (bmp_ptr->col_num >> 1) > bmp_ptr->src_row_bytes) { - bmp_error(bmp_ptr, "The Bmp File Is Corrupt"); - return 0; - } - *first_byte_ptr = bmp_ptr->out_row_bytes - bmp_ptr->col_num - 1; - } - for (uint8_t i = 0; i < *first_byte_ptr; i++) { - if (i & 0x01) { - *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = - (*second_byte_ptr & 0x0F); - } else { - *(bmp_ptr->out_row_buffer + bmp_ptr->col_num++) = - ((*second_byte_ptr & 0xF0) >> 4); - } - } - } - } - } - bmp_error(bmp_ptr, "Any Uncontrol Error"); - return 0; -} -uint8_t* bmp_read_data(bmp_decompress_struct_p bmp_ptr, - uint8_t** des_buf_pp, - FX_DWORD data_size) { - if (bmp_ptr == NULL || bmp_ptr->avail_in < bmp_ptr->skip_size + data_size) { - return NULL; - } - *des_buf_pp = bmp_ptr->next_in + bmp_ptr->skip_size; - bmp_ptr->skip_size += data_size; - return *des_buf_pp; -} -void bmp_save_decoding_status(bmp_decompress_struct_p bmp_ptr, int32_t status) { - bmp_ptr->decode_status = status; - bmp_ptr->next_in += bmp_ptr->skip_size; - bmp_ptr->avail_in -= bmp_ptr->skip_size; - bmp_ptr->skip_size = 0; -} -void bmp_input_buffer(bmp_decompress_struct_p bmp_ptr, - uint8_t* src_buf, - FX_DWORD src_size) { - bmp_ptr->next_in = src_buf; - bmp_ptr->avail_in = src_size; - bmp_ptr->skip_size = 0; -} -FX_DWORD bmp_get_avail_input(bmp_decompress_struct_p bmp_ptr, - uint8_t** avial_buf_ptr) { - if (avial_buf_ptr) { - *avial_buf_ptr = NULL; - if (bmp_ptr->avail_in > 0) { - *avial_buf_ptr = bmp_ptr->next_in; - } - } - return bmp_ptr->avail_in; -} -bmp_compress_struct_p bmp_create_compress() { - bmp_compress_struct_p bmp_ptr; - bmp_ptr = FX_Alloc(bmp_compress_struct, 1); - if (bmp_ptr) { - FXSYS_memset(bmp_ptr, 0, sizeof(bmp_compress_struct)); - } - return bmp_ptr; -} -void bmp_destroy_compress(bmp_compress_struct_p bmp_ptr) { - if (bmp_ptr) { - if (bmp_ptr->src_free && bmp_ptr->src_buf) { - FX_Free(bmp_ptr->src_buf); - } - FX_Free(bmp_ptr); - } -} -static void WriteFileHeader(BmpFileHeaderPtr head_ptr, uint8_t* dst_buf) { - FX_DWORD offset; - offset = 0; - SetWord_LSBFirst(&dst_buf[offset], head_ptr->bfType); - offset += 2; - SetDWord_LSBFirst(&dst_buf[offset], head_ptr->bfSize); - offset += 4; - SetWord_LSBFirst(&dst_buf[offset], head_ptr->bfReserved1); - offset += 2; - SetWord_LSBFirst(&dst_buf[offset], head_ptr->bfReserved2); - offset += 2; - SetDWord_LSBFirst(&dst_buf[offset], head_ptr->bfOffBits); - offset += 4; -} -static void WriteInfoHeader(BmpInfoHeaderPtr info_head_ptr, uint8_t* dst_buf) { - FX_DWORD offset; - offset = sizeof(BmpFileHeader); - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biSize); - offset += 4; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biWidth); - offset += 4; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biHeight); - offset += 4; - SetWord_LSBFirst(&dst_buf[offset], info_head_ptr->biPlanes); - offset += 2; - SetWord_LSBFirst(&dst_buf[offset], info_head_ptr->biBitCount); - offset += 2; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biCompression); - offset += 4; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biSizeImage); - offset += 4; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biXPelsPerMeter); - offset += 4; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biYPelsPerMeter); - offset += 4; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biClrUsed); - offset += 4; - SetDWord_LSBFirst(&dst_buf[offset], info_head_ptr->biClrImportant); - offset += 4; -} -static void bmp_encode_bitfields(bmp_compress_struct_p bmp_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_size) { - if (bmp_ptr->info_header.biBitCount != 16 && - bmp_ptr->info_header.biBitCount != 32) { - return; - } - FX_DWORD size, dst_pos, i; - size = bmp_ptr->src_pitch * bmp_ptr->src_row * - bmp_ptr->info_header.biBitCount / 16; - dst_pos = bmp_ptr->file_header.bfOffBits; - dst_size += size; - dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); - if (dst_buf == NULL) { - return; - } - FXSYS_memset(&dst_buf[dst_pos], 0, size); - FX_DWORD mask_red; - FX_DWORD mask_green; - FX_DWORD mask_blue; - mask_red = 0x7C00; - mask_green = 0x03E0; - mask_blue = 0x001F; - if (bmp_ptr->info_header.biCompression == BMP_BITFIELDS) { - if (bmp_ptr->bit_type == BMP_BIT_565) { - mask_red = 0xF800; - mask_green = 0x07E0; - mask_blue = 0x001F; - } - if (bmp_ptr->info_header.biBitCount == 32) { - mask_red = 0xFF0000; - mask_green = 0x00FF00; - mask_blue = 0x0000FF; - } - SetDWord_LSBFirst(&dst_buf[dst_pos], mask_red); - dst_pos += 4; - SetDWord_LSBFirst(&dst_buf[dst_pos], mask_green); - dst_pos += 4; - SetDWord_LSBFirst(&dst_buf[dst_pos], mask_blue); - dst_pos += 4; - bmp_ptr->file_header.bfOffBits = dst_pos; - } - uint8_t blue_bits = 0; - uint8_t green_bits = 0; - uint8_t red_bits = 0; - for (i = 0; i < bmp_ptr->info_header.biBitCount; i++) { - if ((mask_blue >> i) & 0x01) { - blue_bits++; - } - if ((mask_green >> i) & 0x01) { - green_bits++; - } - if ((mask_red >> i) & 0x01) { - red_bits++; - } - } - green_bits += blue_bits; - red_bits += green_bits; - blue_bits = 8 - blue_bits; - green_bits -= 8; - red_bits -= 8; - i = 0; - for (int32_t row_num = bmp_ptr->src_row - 1; row_num > -1; row_num--, i = 0) { - while (i < bmp_ptr->src_width * bmp_ptr->src_bpp / 8) { - uint8_t b = bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch + i++]; - uint8_t g = bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch + i++]; - uint8_t r = bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch + i++]; - if (bmp_ptr->src_bpp == 32) { - i++; - } - FX_DWORD pix_val = 0; - pix_val |= (b >> blue_bits) & mask_blue; - pix_val |= (g << green_bits) & mask_green; - pix_val |= (r << red_bits) & mask_red; - if (bmp_ptr->info_header.biBitCount == 16) { - SetWord_LSBFirst(&dst_buf[dst_pos], pix_val); - dst_pos += 2; - } else { - SetDWord_LSBFirst(&dst_buf[dst_pos], pix_val); - dst_pos += 4; - } - } - } - dst_size = dst_pos; -} - -static void bmp_encode_rgb(bmp_compress_struct_p bmp_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_size) { - if (bmp_ptr->info_header.biBitCount == 16) { - bmp_encode_bitfields(bmp_ptr, dst_buf, dst_size); - return; - } - FX_DWORD size, dst_pos; - FX_DWORD dst_pitch = - (bmp_ptr->src_width * bmp_ptr->info_header.biBitCount + 31) / 32 * 4; - size = dst_pitch * bmp_ptr->src_row; - dst_pos = bmp_ptr->file_header.bfOffBits; - dst_size += size; - dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); - if (dst_buf == NULL) { - return; - } - FXSYS_memset(&dst_buf[dst_pos], 0, size); - for (int32_t row_num = bmp_ptr->src_row - 1; row_num > -1; row_num--) { - FXSYS_memcpy(&dst_buf[dst_pos], - &bmp_ptr->src_buf[row_num * bmp_ptr->src_pitch], - bmp_ptr->src_pitch); - dst_pos += dst_pitch; - } - dst_size = dst_pos; -} -static uint8_t bmp_rle8_search(const uint8_t* buf, int32_t len) { - uint8_t num; - num = 1; - while (num < len) { - if (buf[num - 1] != buf[num] || num == 0xFF) { - break; - } - num++; - } - return num; -} -static void bmp_encode_rle8(bmp_compress_struct_p bmp_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_size) { - FX_DWORD size, dst_pos, index; - uint8_t rle[2] = {0}; - size = bmp_ptr->src_pitch * bmp_ptr->src_row * 2; - dst_pos = bmp_ptr->file_header.bfOffBits; - dst_size += size; - dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); - if (dst_buf == NULL) { - return; - } - FXSYS_memset(&dst_buf[dst_pos], 0, size); - for (int32_t row_num = bmp_ptr->src_row - 1, i = 0; row_num > -1;) { - index = row_num * bmp_ptr->src_pitch; - rle[0] = bmp_rle8_search(&bmp_ptr->src_buf[index + i], size - index - i); - rle[1] = bmp_ptr->src_buf[index + i]; - if (i + rle[0] >= (int32_t)bmp_ptr->src_pitch) { - rle[0] = uint8_t(bmp_ptr->src_pitch - i); - if (rle[0]) { - dst_buf[dst_pos++] = rle[0]; - dst_buf[dst_pos++] = rle[1]; - } - dst_buf[dst_pos++] = RLE_MARKER; - dst_buf[dst_pos++] = RLE_EOL; - i = 0; - row_num--; - } else { - i += rle[0]; - dst_buf[dst_pos++] = rle[0]; - dst_buf[dst_pos++] = rle[1]; - } - } - dst_buf[dst_pos++] = RLE_MARKER; - dst_buf[dst_pos++] = RLE_EOI; - dst_size = dst_pos; -} -static uint8_t bmp_rle4_search(const uint8_t* buf, int32_t len) { - uint8_t num; - num = 2; - while (num < len) { - if (buf[num - 2] != buf[num] || num == 0xFF) { - break; - } - num++; - } - return num; -} -static void bmp_encode_rle4(bmp_compress_struct_p bmp_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_size) { - FX_DWORD size, dst_pos, index; - uint8_t rle[2] = {0}; - size = bmp_ptr->src_pitch * bmp_ptr->src_row; - dst_pos = bmp_ptr->file_header.bfOffBits; - dst_size += size; - dst_buf = FX_Realloc(uint8_t, dst_buf, dst_size); - if (dst_buf == NULL) { - return; - } - FXSYS_memset(&dst_buf[dst_pos], 0, size); - for (int32_t row_num = bmp_ptr->src_row - 1, i = 0; row_num > -1; - rle[1] = 0) { - index = row_num * bmp_ptr->src_pitch; - rle[0] = bmp_rle4_search(&bmp_ptr->src_buf[index + i], size - index - i); - rle[1] |= (bmp_ptr->src_buf[index + i] & 0x0f) << 4; - rle[1] |= bmp_ptr->src_buf[index + i + 1] & 0x0f; - if (i + rle[0] >= (int32_t)bmp_ptr->src_pitch) { - rle[0] = uint8_t(bmp_ptr->src_pitch - i); - if (rle[0]) { - dst_buf[dst_pos++] = rle[0]; - dst_buf[dst_pos++] = rle[1]; - } - dst_buf[dst_pos++] = RLE_MARKER; - dst_buf[dst_pos++] = RLE_EOL; - i = 0; - row_num--; - } else { - i += rle[0]; - dst_buf[dst_pos++] = rle[0]; - dst_buf[dst_pos++] = rle[1]; - } - } - dst_buf[dst_pos++] = RLE_MARKER; - dst_buf[dst_pos++] = RLE_EOI; - dst_size = dst_pos; -} -FX_BOOL bmp_encode_image(bmp_compress_struct_p bmp_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_size) { - FX_DWORD head_size = sizeof(BmpFileHeader) + sizeof(BmpInfoHeader); - FX_DWORD pal_size = sizeof(FX_DWORD) * bmp_ptr->pal_num; - if (bmp_ptr->info_header.biClrUsed > 0 && - bmp_ptr->info_header.biClrUsed < bmp_ptr->pal_num) { - pal_size = sizeof(FX_DWORD) * bmp_ptr->info_header.biClrUsed; - } - dst_size = head_size + sizeof(FX_DWORD) * bmp_ptr->pal_num; - dst_buf = FX_TryAlloc(uint8_t, dst_size); - if (dst_buf == NULL) { - return FALSE; - } - FXSYS_memset(dst_buf, 0, dst_size); - bmp_ptr->file_header.bfOffBits = head_size; - if (bmp_ptr->pal_ptr && pal_size) { - FXSYS_memcpy(&dst_buf[head_size], bmp_ptr->pal_ptr, pal_size); - bmp_ptr->file_header.bfOffBits += pal_size; - } - WriteInfoHeader(&bmp_ptr->info_header, dst_buf); - switch (bmp_ptr->info_header.biCompression) { - case BMP_RGB: - bmp_encode_rgb(bmp_ptr, dst_buf, dst_size); - break; - case BMP_BITFIELDS: - bmp_encode_bitfields(bmp_ptr, dst_buf, dst_size); - break; - case BMP_RLE8: - bmp_encode_rle8(bmp_ptr, dst_buf, dst_size); - break; - case BMP_RLE4: - bmp_encode_rle4(bmp_ptr, dst_buf, dst_size); - break; - default: - break; - } - bmp_ptr->file_header.bfSize = dst_size; - WriteFileHeader(&bmp_ptr->file_header, dst_buf); - return TRUE; -} diff --git a/core/src/fxcodec/lbmp/fx_bmp.h b/core/src/fxcodec/lbmp/fx_bmp.h deleted file mode 100644 index 24c94cabbe..0000000000 --- a/core/src/fxcodec/lbmp/fx_bmp.h +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_LBMP_FX_BMP_H_ -#define CORE_SRC_FXCODEC_LBMP_FX_BMP_H_ - -#include - -#include "core/include/fxcrt/fx_basic.h" - -#define BMP_WIDTHBYTES(width, bitCount) ((width * bitCount) + 31) / 32 * 4 -#define BMP_PAL_ENCODE(a, r, g, b) \ - (((FX_DWORD)(a) << 24) | ((r) << 16) | ((g) << 8) | (b)) -#define BMP_D_STATUS_HEADER 0x01 -#define BMP_D_STATUS_PAL 0x02 -#define BMP_D_STATUS_DATA_PRE 0x03 -#define BMP_D_STATUS_DATA 0x04 -#define BMP_D_STATUS_TAIL 0x00 -#define BMP_SIGNATURE 0x4D42 -#define BMP_PAL_NEW 0 -#define BMP_PAL_OLD 1 -#define RLE_MARKER 0 -#define RLE_EOL 0 -#define RLE_EOI 1 -#define RLE_DELTA 2 -#define BMP_RGB 0L -#define BMP_RLE8 1L -#define BMP_RLE4 2L -#define BMP_BITFIELDS 3L -#define BMP_BIT_555 0 -#define BMP_BIT_565 1 -#define BMP_MAX_ERROR_SIZE 256 -#pragma pack(1) -typedef struct tagBmpFileHeader { - FX_WORD bfType; - FX_DWORD bfSize; - FX_WORD bfReserved1; - FX_WORD bfReserved2; - FX_DWORD bfOffBits; -} BmpFileHeader, *BmpFileHeaderPtr; -typedef struct tagBmpCoreHeader { - FX_DWORD bcSize; - FX_WORD bcWidth; - FX_WORD bcHeight; - FX_WORD bcPlanes; - FX_WORD bcBitCount; -} BmpCoreHeader, *BmpCoreHeaderPtr; -typedef struct tagBmpInfoHeader { - FX_DWORD biSize; - int32_t biWidth; - int32_t biHeight; - FX_WORD biPlanes; - FX_WORD biBitCount; - FX_DWORD biCompression; - FX_DWORD biSizeImage; - int32_t biXPelsPerMeter; - int32_t biYPelsPerMeter; - FX_DWORD biClrUsed; - FX_DWORD biClrImportant; -} BmpInfoHeader, *BmpInfoHeaderPtr; -#pragma pack() - -typedef struct tag_bmp_decompress_struct bmp_decompress_struct; -typedef bmp_decompress_struct* bmp_decompress_struct_p; -typedef bmp_decompress_struct_p* bmp_decompress_struct_pp; -struct tag_bmp_decompress_struct { - jmp_buf jmpbuf; - FX_CHAR* err_ptr; - void (*bmp_error_fn)(bmp_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); - - void* context_ptr; - - BmpFileHeaderPtr bmp_header_ptr; - BmpInfoHeaderPtr bmp_infoheader_ptr; - int32_t width; - int32_t height; - FX_DWORD compress_flag; - int32_t components; - int32_t src_row_bytes; - int32_t out_row_bytes; - uint8_t* out_row_buffer; - FX_WORD bitCounts; - FX_DWORD color_used; - FX_BOOL imgTB_flag; - int32_t pal_num; - int32_t pal_type; - FX_DWORD* pal_ptr; - FX_DWORD data_size; - FX_DWORD img_data_offset; - FX_DWORD img_ifh_size; - int32_t row_num; - int32_t col_num; - int32_t dpi_x; - int32_t dpi_y; - FX_DWORD mask_red; - FX_DWORD mask_green; - FX_DWORD mask_blue; - - FX_BOOL (*bmp_get_data_position_fn)(bmp_decompress_struct_p bmp_ptr, - FX_DWORD cur_pos); - void (*bmp_get_row_fn)(bmp_decompress_struct_p bmp_ptr, - int32_t row_num, - uint8_t* row_buf); - uint8_t* next_in; - FX_DWORD avail_in; - FX_DWORD skip_size; - int32_t decode_status; -}; -void bmp_error(bmp_decompress_struct_p bmp_ptr, const FX_CHAR* err_msg); -bmp_decompress_struct_p bmp_create_decompress(); -void bmp_destroy_decompress(bmp_decompress_struct_pp bmp_ptr_ptr); -int32_t bmp_read_header(bmp_decompress_struct_p bmp_ptr); -int32_t bmp_decode_image(bmp_decompress_struct_p bmp_ptr); -int32_t bmp_decode_rgb(bmp_decompress_struct_p bmp_ptr); -int32_t bmp_decode_rle8(bmp_decompress_struct_p bmp_ptr); -int32_t bmp_decode_rle4(bmp_decompress_struct_p bmp_ptr); -uint8_t* bmp_read_data(bmp_decompress_struct_p bmp_ptr, - uint8_t** des_buf_pp, - FX_DWORD data_size); -void bmp_save_decoding_status(bmp_decompress_struct_p bmp_ptr, int32_t status); -void bmp_input_buffer(bmp_decompress_struct_p bmp_ptr, - uint8_t* src_buf, - FX_DWORD src_size); -FX_DWORD bmp_get_avail_input(bmp_decompress_struct_p bmp_ptr, - uint8_t** avial_buf_ptr); -typedef struct tag_bmp_compress_struct bmp_compress_struct; -typedef bmp_compress_struct* bmp_compress_struct_p; -typedef bmp_compress_struct_p* bmp_compress_struct_pp; -struct tag_bmp_compress_struct { - BmpFileHeader file_header; - BmpInfoHeader info_header; - uint8_t* src_buf; - FX_DWORD src_pitch; - FX_DWORD src_row; - uint8_t src_bpp; - FX_DWORD src_width; - FX_BOOL src_free; - FX_DWORD* pal_ptr; - FX_WORD pal_num; - uint8_t bit_type; -}; - -bmp_compress_struct_p bmp_create_compress(); -void bmp_destroy_compress(bmp_compress_struct_p bmp_ptr); -FX_BOOL bmp_encode_image(bmp_compress_struct_p bmp_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_size); - -FX_WORD GetWord_LSBFirst(uint8_t* p); -void SetWord_LSBFirst(uint8_t* p, FX_WORD v); - -#endif // CORE_SRC_FXCODEC_LBMP_FX_BMP_H_ diff --git a/core/src/fxcodec/lgif/fx_gif.cpp b/core/src/fxcodec/lgif/fx_gif.cpp deleted file mode 100644 index a4de72978a..0000000000 --- a/core/src/fxcodec/lgif/fx_gif.cpp +++ /dev/null @@ -1,1229 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcodec/lgif/fx_gif.h" - -#include "core/src/fxcodec/lbmp/fx_bmp.h" - -void CGifLZWDecoder::Input(uint8_t* src_buf, FX_DWORD src_size) { - next_in = src_buf; - avail_in = src_size; -} -FX_DWORD CGifLZWDecoder::GetAvailInput() { - return avail_in; -} -void CGifLZWDecoder::InitTable(uint8_t code_len) { - code_size = code_len; - code_clear = 1 << code_size; - code_end = code_clear + 1; - bits_left = 0; - code_store = 0; - next_in = NULL; - avail_in = 0; - stack_size = 0; - code_first = 0; - ClearTable(); -} -void CGifLZWDecoder::ClearTable() { - code_size_cur = code_size + 1; - code_next = code_end + 1; - code_old = (FX_WORD)-1; - FXSYS_memset(code_table, 0, sizeof(tag_Table) * GIF_MAX_LZW_CODE); - FXSYS_memset(stack, 0, GIF_MAX_LZW_CODE); - for (FX_WORD i = 0; i < code_clear; i++) { - code_table[i].suffix = (uint8_t)i; - } -} -void CGifLZWDecoder::DecodeString(FX_WORD code) { - stack_size = 0; - while (TRUE) { - ASSERT(code <= code_next); - if (code < code_clear || code > code_next) { - break; - } - stack[GIF_MAX_LZW_CODE - 1 - stack_size++] = code_table[code].suffix; - code = code_table[code].prefix; - } - stack[GIF_MAX_LZW_CODE - 1 - stack_size++] = (uint8_t)code; - code_first = (uint8_t)code; -} -void CGifLZWDecoder::AddCode(FX_WORD prefix_code, uint8_t append_char) { - if (code_next == GIF_MAX_LZW_CODE) { - return; - } - code_table[code_next].prefix = prefix_code; - code_table[code_next].suffix = append_char; - if (++code_next < GIF_MAX_LZW_CODE) { - if (code_next >> code_size_cur) { - code_size_cur++; - } - } -} -int32_t CGifLZWDecoder::Decode(uint8_t* des_buf, FX_DWORD& des_size) { - if (des_size == 0) { - return 3; - } - FX_DWORD i = 0; - if (stack_size != 0) { - if (des_size < stack_size) { - FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], des_size); - stack_size -= (FX_WORD)des_size; - return 3; - } - FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], stack_size); - des_buf += stack_size; - i += stack_size; - stack_size = 0; - } - FX_WORD code = 0; - while (i <= des_size && (avail_in > 0 || bits_left >= code_size_cur)) { - if (code_size_cur > 12) { - if (err_msg_ptr) { - FXSYS_strncpy(err_msg_ptr, "Code Length Out Of Range", - GIF_MAX_ERROR_SIZE - 1); - } - return 0; - } - if (avail_in > 0) { - code_store |= (*next_in++) << bits_left; - avail_in--; - bits_left += 8; - } - while (bits_left >= code_size_cur) { - code = (FX_WORD)code_store & ((1 << code_size_cur) - 1); - code_store >>= code_size_cur; - bits_left -= code_size_cur; - if (code == code_clear) { - ClearTable(); - continue; - } else if (code == code_end) { - des_size = i; - return 1; - } else { - if (code_old != (FX_WORD)-1) { - if (code_next < GIF_MAX_LZW_CODE) { - if (code == code_next) { - AddCode(code_old, code_first); - DecodeString(code); - } else if (code > code_next) { - if (err_msg_ptr) { - FXSYS_strncpy(err_msg_ptr, "Decode Error, Out Of Range", - GIF_MAX_ERROR_SIZE - 1); - } - return 0; - } else { - DecodeString(code); - uint8_t append_char = stack[GIF_MAX_LZW_CODE - stack_size]; - AddCode(code_old, append_char); - } - } - } else { - DecodeString(code); - } - code_old = code; - if (i + stack_size > des_size) { - FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], - des_size - i); - stack_size -= (FX_WORD)(des_size - i); - return 3; - } - FXSYS_memcpy(des_buf, &stack[GIF_MAX_LZW_CODE - stack_size], - stack_size); - des_buf += stack_size; - i += stack_size; - stack_size = 0; - } - } - } - if (avail_in == 0) { - des_size = i; - return 2; - } - return 0; -} -static FX_BOOL gif_grow_buf(uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD size) { - if (dst_len < size) { - FX_DWORD len_org = dst_len; - while (dst_buf && dst_len < size) { - dst_len <<= 1; - dst_buf = FX_Realloc(uint8_t, dst_buf, dst_len); - } - if (dst_buf == NULL) { - dst_len = size; - dst_buf = FX_Realloc(uint8_t, dst_buf, dst_len); - if (dst_buf == NULL) { - return FALSE; - } - } - FXSYS_memset(dst_buf + len_org, 0, dst_len - len_org); - return dst_buf != NULL; - } - return TRUE; -} -static inline void gif_cut_index(uint8_t& val, - FX_DWORD index, - uint8_t index_bit, - uint8_t index_bit_use, - uint8_t bit_use) { - FX_DWORD cut = ((1 << (index_bit - index_bit_use)) - 1) << index_bit_use; - val |= ((index & cut) >> index_bit_use) << bit_use; -} -static inline uint8_t gif_cut_buf(const uint8_t* buf, - FX_DWORD& offset, - uint8_t bit_cut, - uint8_t& bit_offset, - FX_DWORD& bit_num) { - if (bit_cut != 8) { - FX_WORD index = 0; - index |= ((1 << bit_cut) - 1) << (7 - bit_offset); - uint8_t ret = ((index & buf[offset]) >> (7 - bit_offset)); - bit_offset += bit_cut; - if (bit_offset >= 8) { - if (bit_offset > 8) { - ret |= ((index & (buf[offset + 1] << 8)) >> 8); - } - bit_offset -= 8; - offset++; - } - bit_num += bit_cut; - return ret; - } - bit_num += bit_cut; - return buf[offset++]; -} -CGifLZWEncoder::CGifLZWEncoder() { - FXSYS_memset(this, 0, sizeof(CGifLZWEncoder)); -} -CGifLZWEncoder::~CGifLZWEncoder() {} -void CGifLZWEncoder::ClearTable() { - index_bit_cur = code_size + 1; - index_num = code_end + 1; - table_cur = code_end + 1; - for (FX_WORD i = 0; i < GIF_MAX_LZW_CODE; i++) { - code_table[i].prefix = 0; - code_table[i].suffix = 0; - } -} -void CGifLZWEncoder::Start(uint8_t code_len, - const uint8_t* src_buf, - uint8_t*& dst_buf, - FX_DWORD& offset) { - code_size = code_len + 1; - src_bit_cut = code_size; - if (code_len == 0) { - src_bit_cut = 1; - code_size = 2; - } - code_clear = 1 << code_size; - code_end = code_clear + 1; - dst_buf[offset++] = code_size; - bit_offset = 0; - ClearTable(); - src_offset = 0; - src_bit_offset = 0; - src_bit_num = 0; - code_table[index_num].prefix = gif_cut_buf(src_buf, src_offset, src_bit_cut, - src_bit_offset, src_bit_num); - code_table[index_num].suffix = gif_cut_buf(src_buf, src_offset, src_bit_cut, - src_bit_offset, src_bit_num); -} -void CGifLZWEncoder::WriteBlock(uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD& offset) { - if (!gif_grow_buf(dst_buf, dst_len, offset + GIF_DATA_BLOCK + 1)) { - longjmp(jmp, 1); - } - dst_buf[offset++] = index_buf_len; - FXSYS_memcpy(&dst_buf[offset], index_buf, index_buf_len); - offset += index_buf_len; - FXSYS_memset(index_buf, 0, GIF_DATA_BLOCK); - index_buf_len = 0; -} -void CGifLZWEncoder::EncodeString(FX_DWORD index, - uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD& offset) { - uint8_t index_bit_use; - index_bit_use = 0; - if (index_buf_len == GIF_DATA_BLOCK) { - WriteBlock(dst_buf, dst_len, offset); - } - gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, - bit_offset); - if (index_bit_cur <= (8 - bit_offset)) { - bit_offset += index_bit_cur; - } else if (index_bit_cur <= (16 - bit_offset)) { - index_bit_use += (8 - bit_offset); - bit_offset = 0; - index_buf_len++; - if (index_buf_len == GIF_DATA_BLOCK) { - WriteBlock(dst_buf, dst_len, offset); - } - gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, - bit_offset); - bit_offset = index_bit_cur - index_bit_use; - } else { - index_bit_use += (8 - bit_offset); - bit_offset = 0; - index_buf_len++; - if (index_buf_len == GIF_DATA_BLOCK) { - WriteBlock(dst_buf, dst_len, offset); - } - gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, - bit_offset); - index_bit_use += 8; - bit_offset = 0; - index_buf_len++; - if (index_buf_len == GIF_DATA_BLOCK) { - WriteBlock(dst_buf, dst_len, offset); - } - gif_cut_index(index_buf[index_buf_len], index, index_bit_cur, index_bit_use, - bit_offset); - bit_offset = index_bit_cur - index_bit_use; - } - if (bit_offset == 8) { - bit_offset = 0; - index_buf_len++; - if (index_buf_len == GIF_DATA_BLOCK) { - WriteBlock(dst_buf, dst_len, offset); - } - } - if (index == code_end) { - index_buf_len++; - WriteBlock(dst_buf, dst_len, offset); - } - if (index_num++ >> index_bit_cur) { - index_bit_cur++; - } -} -FX_BOOL CGifLZWEncoder::Encode(const uint8_t* src_buf, - FX_DWORD src_len, - uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD& offset) { - uint8_t suffix; - if (setjmp(jmp)) { - return FALSE; - } - while (src_bit_num < src_len) { - if (!LookUpInTable(src_buf, src_offset, src_bit_offset)) { - EncodeString(code_table[index_num].prefix, dst_buf, dst_len, offset); - if (index_num == GIF_MAX_LZW_CODE) { - suffix = code_table[index_num - 1].suffix; - EncodeString(code_clear, dst_buf, dst_len, offset); - ClearTable(); - code_table[index_num].prefix = suffix; - code_table[index_num].suffix = gif_cut_buf( - src_buf, src_offset, src_bit_cut, src_bit_offset, src_bit_num); - } else { - code_table[index_num].prefix = code_table[index_num - 1].suffix; - code_table[index_num].suffix = gif_cut_buf( - src_buf, src_offset, src_bit_cut, src_bit_offset, src_bit_num); - } - } - } - src_offset = 0; - src_bit_offset = 0; - src_bit_num = 0; - return TRUE; -} -FX_BOOL CGifLZWEncoder::LookUpInTable(const uint8_t* buf, - FX_DWORD& offset, - uint8_t& bit_offset) { - for (FX_WORD i = table_cur; i < index_num; i++) { - if (code_table[i].prefix == code_table[index_num].prefix && - code_table[i].suffix == code_table[index_num].suffix) { - code_table[index_num].prefix = i; - code_table[index_num].suffix = - gif_cut_buf(buf, offset, src_bit_cut, bit_offset, src_bit_num); - table_cur = i; - return TRUE; - } - } - table_cur = code_end + 1; - return FALSE; -} -void CGifLZWEncoder::Finish(uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD& offset) { - EncodeString(code_table[index_num].prefix, dst_buf, dst_len, offset); - EncodeString(code_end, dst_buf, dst_len, offset); - bit_offset = 0; - ClearTable(); -} -gif_decompress_struct_p gif_create_decompress() { - gif_decompress_struct_p gif_ptr = - (gif_decompress_struct*)FX_Alloc(uint8_t, sizeof(gif_decompress_struct)); - if (gif_ptr == NULL) { - return NULL; - } - FXSYS_memset(gif_ptr, 0, sizeof(gif_decompress_struct)); - gif_ptr->decode_status = GIF_D_STATUS_SIG; - gif_ptr->img_ptr_arr_ptr = new CFX_ArrayTemplate; - gif_ptr->cmt_data_ptr = new CFX_ByteString; - gif_ptr->pt_ptr_arr_ptr = new CFX_ArrayTemplate; - return gif_ptr; -} -void gif_destroy_decompress(gif_decompress_struct_pp gif_ptr_ptr) { - if (gif_ptr_ptr == NULL || *gif_ptr_ptr == NULL) { - return; - } - gif_decompress_struct_p gif_ptr = *gif_ptr_ptr; - *gif_ptr_ptr = NULL; - FX_Free(gif_ptr->global_pal_ptr); - delete gif_ptr->img_decoder_ptr; - if (gif_ptr->img_ptr_arr_ptr) { - int32_t size_img_arr = gif_ptr->img_ptr_arr_ptr->GetSize(); - for (int32_t i = 0; i < size_img_arr; i++) { - GifImage* p = gif_ptr->img_ptr_arr_ptr->GetAt(i); - FX_Free(p->image_info_ptr); - FX_Free(p->image_gce_ptr); - FX_Free(p->image_row_buf); - if (p->local_pal_ptr && p->local_pal_ptr != gif_ptr->global_pal_ptr) { - FX_Free(p->local_pal_ptr); - } - FX_Free(p); - } - gif_ptr->img_ptr_arr_ptr->RemoveAll(); - delete gif_ptr->img_ptr_arr_ptr; - } - delete gif_ptr->cmt_data_ptr; - FX_Free(gif_ptr->gce_ptr); - if (gif_ptr->pt_ptr_arr_ptr) { - int32_t size_pt_arr = gif_ptr->pt_ptr_arr_ptr->GetSize(); - for (int32_t i = 0; i < size_pt_arr; i++) { - GifPlainText* p = gif_ptr->pt_ptr_arr_ptr->GetAt(i); - FX_Free(p->gce_ptr); - FX_Free(p->pte_ptr); - delete p->string_ptr; - } - gif_ptr->pt_ptr_arr_ptr->RemoveAll(); - delete gif_ptr->pt_ptr_arr_ptr; - } - FX_Free(gif_ptr); -} -gif_compress_struct_p gif_create_compress() { - gif_compress_struct_p gif_ptr = - (gif_compress_struct*)FX_Alloc(uint8_t, sizeof(gif_compress_struct)); - if (gif_ptr == NULL) { - return NULL; - } - FXSYS_memset(gif_ptr, 0, sizeof(gif_compress_struct)); - gif_ptr->img_encoder_ptr = new CGifLZWEncoder; - gif_ptr->header_ptr = (GifHeader*)FX_Alloc(uint8_t, sizeof(GifHeader)); - if (gif_ptr->header_ptr == NULL) { - delete (gif_ptr->img_encoder_ptr); - FX_Free(gif_ptr); - return NULL; - } - FXSYS_memcpy(gif_ptr->header_ptr->signature, GIF_SIGNATURE, 3); - FXSYS_memcpy(gif_ptr->header_ptr->version, "89a", 3); - gif_ptr->lsd_ptr = (GifLSD*)FX_Alloc(uint8_t, sizeof(GifLSD)); - if (gif_ptr->lsd_ptr == NULL) { - FX_Free(gif_ptr->header_ptr); - delete (gif_ptr->img_encoder_ptr); - FX_Free(gif_ptr); - return NULL; - } - FXSYS_memset(gif_ptr->lsd_ptr, 0, sizeof(GifLSD)); - gif_ptr->image_info_ptr = - (GifImageInfo*)FX_Alloc(uint8_t, sizeof(GifImageInfo)); - if (gif_ptr->image_info_ptr == NULL) { - FX_Free(gif_ptr->lsd_ptr); - FX_Free(gif_ptr->header_ptr); - delete (gif_ptr->img_encoder_ptr); - FX_Free(gif_ptr); - return NULL; - } - FXSYS_memset(gif_ptr->image_info_ptr, 0, sizeof(GifImageInfo)); - gif_ptr->gce_ptr = (GifGCE*)FX_Alloc(uint8_t, sizeof(GifGCE)); - if (gif_ptr->gce_ptr == NULL) { - FX_Free(gif_ptr->image_info_ptr); - FX_Free(gif_ptr->lsd_ptr); - FX_Free(gif_ptr->header_ptr); - delete (gif_ptr->img_encoder_ptr); - FX_Free(gif_ptr); - return NULL; - } - gif_ptr->pte_ptr = (GifPTE*)FX_Alloc(uint8_t, sizeof(GifPTE)); - if (gif_ptr->pte_ptr == NULL) { - FX_Free(gif_ptr->gce_ptr); - FX_Free(gif_ptr->image_info_ptr); - FX_Free(gif_ptr->lsd_ptr); - FX_Free(gif_ptr->header_ptr); - delete (gif_ptr->img_encoder_ptr); - FX_Free(gif_ptr); - return NULL; - } - FXSYS_memset(gif_ptr->pte_ptr, 0, sizeof(GifPTE)); - gif_ptr->pte_ptr->block_size = 12; - return gif_ptr; -} -void gif_destroy_compress(gif_compress_struct_pp gif_ptr_ptr) { - if (gif_ptr_ptr == NULL || *gif_ptr_ptr == NULL) { - return; - } - gif_compress_struct_p gif_ptr = *gif_ptr_ptr; - *gif_ptr_ptr = NULL; - FX_Free(gif_ptr->header_ptr); - FX_Free(gif_ptr->lsd_ptr); - FX_Free(gif_ptr->global_pal); - FX_Free(gif_ptr->image_info_ptr); - FX_Free(gif_ptr->local_pal); - delete gif_ptr->img_encoder_ptr; - FX_Free(gif_ptr->gce_ptr); - FX_Free(gif_ptr->cmt_data_ptr); - FX_Free(gif_ptr->pte_ptr); - FX_Free(gif_ptr); -} -void gif_error(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg) { - if (gif_ptr && gif_ptr->gif_error_fn) { - gif_ptr->gif_error_fn(gif_ptr, err_msg); - } -} -void gif_warn(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg) {} -int32_t gif_read_header(gif_decompress_struct_p gif_ptr) { - if (gif_ptr == NULL) { - return 0; - } - FX_DWORD skip_size_org = gif_ptr->skip_size; - ASSERT(sizeof(GifHeader) == 6); - GifHeader* gif_header_ptr = NULL; - if (gif_read_data(gif_ptr, (uint8_t**)&gif_header_ptr, 6) == NULL) { - return 2; - } - if (FXSYS_strncmp(gif_header_ptr->signature, GIF_SIGNATURE, 3) != 0 || - gif_header_ptr->version[0] != '8' || gif_header_ptr->version[2] != 'a') { - gif_error(gif_ptr, "Not A Gif Image"); - return 0; - } - ASSERT(sizeof(GifLSD) == 7); - GifLSD* gif_lsd_ptr = NULL; - if (gif_read_data(gif_ptr, (uint8_t**)&gif_lsd_ptr, 7) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - if (((GifGF*)&gif_lsd_ptr->global_flag)->global_pal) { - gif_ptr->global_pal_num = 2 - << ((GifGF*)&gif_lsd_ptr->global_flag)->pal_bits; - ASSERT(sizeof(GifPalette) == 3); - int32_t global_pal_size = gif_ptr->global_pal_num * 3; - uint8_t* global_pal_ptr = NULL; - if (gif_read_data(gif_ptr, &global_pal_ptr, global_pal_size) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - gif_ptr->global_sort_flag = ((GifGF*)&gif_lsd_ptr->global_flag)->sort_flag; - gif_ptr->global_color_resolution = - ((GifGF*)&gif_lsd_ptr->global_flag)->color_resolution; - FX_Free(gif_ptr->global_pal_ptr); - gif_ptr->global_pal_ptr = (GifPalette*)FX_Alloc(uint8_t, global_pal_size); - FXSYS_memcpy(gif_ptr->global_pal_ptr, global_pal_ptr, global_pal_size); - } - gif_ptr->width = (int)GetWord_LSBFirst((uint8_t*)&gif_lsd_ptr->width); - gif_ptr->height = (int)GetWord_LSBFirst((uint8_t*)&gif_lsd_ptr->height); - gif_ptr->bc_index = gif_lsd_ptr->bc_index; - gif_ptr->pixel_aspect = gif_lsd_ptr->pixel_aspect; - return 1; -} -int32_t gif_get_frame(gif_decompress_struct_p gif_ptr) { - if (gif_ptr == NULL) { - return 0; - } - int32_t ret = 1; - while (TRUE) { - switch (gif_ptr->decode_status) { - case GIF_D_STATUS_TAIL: - return 1; - case GIF_D_STATUS_SIG: { - uint8_t* sig_ptr = NULL; - if (gif_read_data(gif_ptr, &sig_ptr, 1) == NULL) { - return 2; - } - switch (*sig_ptr) { - case GIF_SIG_EXTENSION: - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT); - continue; - case GIF_SIG_IMAGE: - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_INFO); - continue; - case GIF_SIG_TRAILER: - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); - return 1; - default: - if (gif_ptr->avail_in) { - gif_warn(gif_ptr, "The Gif File has non_standard Tag!"); - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_SIG); - continue; - } - gif_warn(gif_ptr, "The Gif File Doesn't have Trailer Tag!"); - return 1; - } - } - case GIF_D_STATUS_EXT: { - uint8_t* ext_ptr = NULL; - if (gif_read_data(gif_ptr, &ext_ptr, 1) == NULL) { - return 2; - } - switch (*ext_ptr) { - case GIF_BLOCK_CE: - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT_CE); - continue; - case GIF_BLOCK_GCE: - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT_GCE); - continue; - case GIF_BLOCK_PTE: - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_EXT_PTE); - continue; - default: { - int32_t status = GIF_D_STATUS_EXT_UNE; - if (*ext_ptr == GIF_BLOCK_PTE) { - status = GIF_D_STATUS_EXT_PTE; - } - gif_save_decoding_status(gif_ptr, status); - continue; - } - } - } - case GIF_D_STATUS_IMG_INFO: { - ret = gif_decode_image_info(gif_ptr); - if (ret != 1) { - return ret; - } - continue; - } - case GIF_D_STATUS_IMG_DATA: { - uint8_t* data_size_ptr = NULL; - uint8_t* data_ptr = NULL; - FX_DWORD skip_size_org = gif_ptr->skip_size; - if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - return 2; - } - while (*data_size_ptr != GIF_BLOCK_TERMINAL) { - if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); - skip_size_org = gif_ptr->skip_size; - if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - return 2; - } - } - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_SIG); - continue; - } - default: { - ret = gif_decode_extension(gif_ptr); - if (ret != 1) { - return ret; - } - continue; - } - } - } - return 1; -} -void gif_takeover_gce_ptr(gif_decompress_struct_p gif_ptr, - GifGCE** gce_ptr_ptr) { - *gce_ptr_ptr = NULL; - if (gif_ptr->gce_ptr && gce_ptr_ptr) { - *gce_ptr_ptr = gif_ptr->gce_ptr; - gif_ptr->gce_ptr = NULL; - } -} -int32_t gif_decode_extension(gif_decompress_struct_p gif_ptr) { - uint8_t* data_size_ptr = NULL; - uint8_t* data_ptr = NULL; - FX_DWORD skip_size_org = gif_ptr->skip_size; - switch (gif_ptr->decode_status) { - case GIF_D_STATUS_EXT_CE: { - if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - gif_ptr->cmt_data_ptr->Empty(); - while (*data_size_ptr != GIF_BLOCK_TERMINAL) { - uint8_t data_size = *data_size_ptr; - if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL || - gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - *(gif_ptr->cmt_data_ptr) += - CFX_ByteString((const FX_CHAR*)data_ptr, data_size); - } - } break; - case GIF_D_STATUS_EXT_PTE: { - ASSERT(sizeof(GifPTE) == 13); - GifPTE* gif_pte_ptr = NULL; - if (gif_read_data(gif_ptr, (uint8_t**)&gif_pte_ptr, 13) == NULL) { - return 2; - } - GifPlainText* gif_pt_ptr = FX_Alloc(GifPlainText, 1); - FXSYS_memset(gif_pt_ptr, 0, sizeof(GifPlainText)); - gif_takeover_gce_ptr(gif_ptr, &gif_pt_ptr->gce_ptr); - gif_pt_ptr->pte_ptr = (GifPTE*)FX_Alloc(uint8_t, sizeof(GifPTE)); - gif_pt_ptr->string_ptr = new CFX_ByteString; - gif_pt_ptr->pte_ptr->block_size = gif_pte_ptr->block_size; - gif_pt_ptr->pte_ptr->grid_left = - GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_left); - gif_pt_ptr->pte_ptr->grid_top = - GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_top); - gif_pt_ptr->pte_ptr->grid_width = - GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_width); - gif_pt_ptr->pte_ptr->grid_height = - GetWord_LSBFirst((uint8_t*)&gif_pte_ptr->grid_height); - gif_pt_ptr->pte_ptr->char_width = gif_pte_ptr->char_width; - gif_pt_ptr->pte_ptr->char_height = gif_pte_ptr->char_height; - gif_pt_ptr->pte_ptr->fc_index = gif_pte_ptr->fc_index; - gif_pt_ptr->pte_ptr->bc_index = gif_pte_ptr->bc_index; - if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - gif_ptr->skip_size = skip_size_org; - if (gif_pt_ptr) { - FX_Free(gif_pt_ptr->gce_ptr); - FX_Free(gif_pt_ptr->pte_ptr); - delete gif_pt_ptr->string_ptr; - FX_Free(gif_pt_ptr); - } - return 2; - } - while (*data_size_ptr != GIF_BLOCK_TERMINAL) { - uint8_t data_size = *data_size_ptr; - if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL || - gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - gif_ptr->skip_size = skip_size_org; - if (gif_pt_ptr) { - FX_Free(gif_pt_ptr->gce_ptr); - FX_Free(gif_pt_ptr->pte_ptr); - delete gif_pt_ptr->string_ptr; - FX_Free(gif_pt_ptr); - } - return 2; - } - *(gif_pt_ptr->string_ptr) += - CFX_ByteString((const FX_CHAR*)data_ptr, data_size); - } - gif_ptr->pt_ptr_arr_ptr->Add(gif_pt_ptr); - } break; - case GIF_D_STATUS_EXT_GCE: { - ASSERT(sizeof(GifGCE) == 5); - GifGCE* gif_gce_ptr = NULL; - if (gif_read_data(gif_ptr, (uint8_t**)&gif_gce_ptr, 6) == NULL) { - return 2; - } - if (gif_ptr->gce_ptr == NULL) { - gif_ptr->gce_ptr = (GifGCE*)FX_Alloc(uint8_t, sizeof(GifGCE)); - } - gif_ptr->gce_ptr->block_size = gif_gce_ptr->block_size; - gif_ptr->gce_ptr->gce_flag = gif_gce_ptr->gce_flag; - gif_ptr->gce_ptr->delay_time = - GetWord_LSBFirst((uint8_t*)&gif_gce_ptr->delay_time); - gif_ptr->gce_ptr->trans_index = gif_gce_ptr->trans_index; - } break; - default: { - if (gif_ptr->decode_status == GIF_D_STATUS_EXT_PTE) { - FX_Free(gif_ptr->gce_ptr); - gif_ptr->gce_ptr = NULL; - } - if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - return 2; - } - while (*data_size_ptr != GIF_BLOCK_TERMINAL) { - if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL || - gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - } - } - } - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_SIG); - return 1; -} -int32_t gif_decode_image_info(gif_decompress_struct_p gif_ptr) { - if (gif_ptr->width == 0 || gif_ptr->height == 0) { - gif_error(gif_ptr, "No Image Header Info"); - return 0; - } - FX_DWORD skip_size_org = gif_ptr->skip_size; - ASSERT(sizeof(GifImageInfo) == 9); - GifImageInfo* gif_img_info_ptr = NULL; - if (gif_read_data(gif_ptr, (uint8_t**)&gif_img_info_ptr, 9) == NULL) { - return 2; - } - GifImage* gif_image_ptr = (GifImage*)FX_Alloc(uint8_t, sizeof(GifImage)); - FXSYS_memset(gif_image_ptr, 0, sizeof(GifImage)); - gif_image_ptr->image_info_ptr = - (GifImageInfo*)FX_Alloc(uint8_t, sizeof(GifImageInfo)); - gif_image_ptr->image_info_ptr->left = - GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->left); - gif_image_ptr->image_info_ptr->top = - GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->top); - gif_image_ptr->image_info_ptr->width = - GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->width); - gif_image_ptr->image_info_ptr->height = - GetWord_LSBFirst((uint8_t*)&gif_img_info_ptr->height); - gif_image_ptr->image_info_ptr->local_flag = gif_img_info_ptr->local_flag; - if (gif_image_ptr->image_info_ptr->left + - gif_image_ptr->image_info_ptr->width > - gif_ptr->width || - gif_image_ptr->image_info_ptr->top + - gif_image_ptr->image_info_ptr->height > - gif_ptr->height) { - FX_Free(gif_image_ptr->image_info_ptr); - FX_Free(gif_image_ptr->image_row_buf); - FX_Free(gif_image_ptr); - gif_error(gif_ptr, "Image Data Out Of LSD, The File May Be Corrupt"); - return 0; - } - GifLF* gif_img_info_lf_ptr = (GifLF*)&gif_img_info_ptr->local_flag; - if (gif_img_info_lf_ptr->local_pal) { - ASSERT(sizeof(GifPalette) == 3); - int32_t loc_pal_size = (2 << gif_img_info_lf_ptr->pal_bits) * 3; - uint8_t* loc_pal_ptr = NULL; - if (gif_read_data(gif_ptr, &loc_pal_ptr, loc_pal_size) == NULL) { - gif_ptr->skip_size = skip_size_org; - FX_Free(gif_image_ptr->image_info_ptr); - FX_Free(gif_image_ptr->image_row_buf); - FX_Free(gif_image_ptr); - return 2; - } - gif_image_ptr->local_pal_ptr = - (GifPalette*)gif_ptr->gif_ask_buf_for_pal_fn(gif_ptr, loc_pal_size); - if (gif_image_ptr->local_pal_ptr) { - FXSYS_memcpy((uint8_t*)gif_image_ptr->local_pal_ptr, loc_pal_ptr, - loc_pal_size); - } - } - uint8_t* code_size_ptr = NULL; - if (gif_read_data(gif_ptr, &code_size_ptr, 1) == NULL) { - gif_ptr->skip_size = skip_size_org; - FX_Free(gif_image_ptr->image_info_ptr); - FX_Free(gif_image_ptr->local_pal_ptr); - FX_Free(gif_image_ptr->image_row_buf); - FX_Free(gif_image_ptr); - return 2; - } - gif_image_ptr->image_code_size = *code_size_ptr; - gif_ptr->gif_record_current_position_fn(gif_ptr, - &gif_image_ptr->image_data_pos); - gif_image_ptr->image_data_pos += gif_ptr->skip_size; - gif_takeover_gce_ptr(gif_ptr, &gif_image_ptr->image_gce_ptr); - gif_ptr->img_ptr_arr_ptr->Add(gif_image_ptr); - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); - return 1; -} -int32_t gif_load_frame(gif_decompress_struct_p gif_ptr, int32_t frame_num) { - if (gif_ptr == NULL || frame_num < 0 || - frame_num >= gif_ptr->img_ptr_arr_ptr->GetSize()) { - return 0; - } - uint8_t* data_size_ptr = NULL; - uint8_t* data_ptr = NULL; - FX_DWORD skip_size_org = gif_ptr->skip_size; - GifImage* gif_image_ptr = gif_ptr->img_ptr_arr_ptr->GetAt(frame_num); - FX_DWORD gif_img_row_bytes = gif_image_ptr->image_info_ptr->width; - if (gif_ptr->decode_status == GIF_D_STATUS_TAIL) { - if (gif_image_ptr->image_row_buf) { - FX_Free(gif_image_ptr->image_row_buf); - gif_image_ptr->image_row_buf = NULL; - } - gif_image_ptr->image_row_buf = FX_Alloc(uint8_t, gif_img_row_bytes); - GifGCE* gif_img_gce_ptr = gif_image_ptr->image_gce_ptr; - int32_t loc_pal_num = - ((GifLF*)&gif_image_ptr->image_info_ptr->local_flag)->local_pal - ? (2 << ((GifLF*)&gif_image_ptr->image_info_ptr->local_flag) - ->pal_bits) - : 0; - gif_ptr->avail_in = 0; - if (gif_img_gce_ptr == NULL) { - FX_BOOL bRes = gif_ptr->gif_get_record_position_fn( - gif_ptr, gif_image_ptr->image_data_pos, - gif_image_ptr->image_info_ptr->left, - gif_image_ptr->image_info_ptr->top, - gif_image_ptr->image_info_ptr->width, - gif_image_ptr->image_info_ptr->height, loc_pal_num, - gif_image_ptr->local_pal_ptr, 0, 0, -1, 0, - (FX_BOOL)((GifLF*)&gif_image_ptr->image_info_ptr->local_flag) - ->interlace); - if (!bRes) { - FX_Free(gif_image_ptr->image_row_buf); - gif_image_ptr->image_row_buf = NULL; - gif_error(gif_ptr, "Error Read Record Position Data"); - return 0; - } - } else { - FX_BOOL bRes = gif_ptr->gif_get_record_position_fn( - gif_ptr, gif_image_ptr->image_data_pos, - gif_image_ptr->image_info_ptr->left, - gif_image_ptr->image_info_ptr->top, - gif_image_ptr->image_info_ptr->width, - gif_image_ptr->image_info_ptr->height, loc_pal_num, - gif_image_ptr->local_pal_ptr, - (int32_t)gif_image_ptr->image_gce_ptr->delay_time, - (FX_BOOL)((GifCEF*)&gif_image_ptr->image_gce_ptr->gce_flag) - ->user_input, - ((GifCEF*)&gif_image_ptr->image_gce_ptr->gce_flag)->transparency - ? (int32_t)gif_image_ptr->image_gce_ptr->trans_index - : -1, - (int32_t)((GifCEF*)&gif_image_ptr->image_gce_ptr->gce_flag) - ->disposal_method, - (FX_BOOL)((GifLF*)&gif_image_ptr->image_info_ptr->local_flag) - ->interlace); - if (!bRes) { - FX_Free(gif_image_ptr->image_row_buf); - gif_image_ptr->image_row_buf = NULL; - gif_error(gif_ptr, "Error Read Record Position Data"); - return 0; - } - } - if (gif_ptr->img_decoder_ptr == NULL) { - gif_ptr->img_decoder_ptr = new CGifLZWDecoder(gif_ptr->err_ptr); - } - gif_ptr->img_decoder_ptr->InitTable(gif_image_ptr->image_code_size); - gif_ptr->img_row_offset = 0; - gif_ptr->img_row_avail_size = 0; - gif_ptr->img_pass_num = 0; - gif_image_ptr->image_row_num = 0; - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); - } - CGifLZWDecoder* img_decoder_ptr = gif_ptr->img_decoder_ptr; - if (gif_ptr->decode_status == GIF_D_STATUS_IMG_DATA) { - if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - return 2; - } - if (*data_size_ptr != GIF_BLOCK_TERMINAL) { - if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - img_decoder_ptr->Input(data_ptr, *data_size_ptr); - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); - gif_ptr->img_row_offset += gif_ptr->img_row_avail_size; - gif_ptr->img_row_avail_size = gif_img_row_bytes - gif_ptr->img_row_offset; - int32_t ret = img_decoder_ptr->Decode( - gif_image_ptr->image_row_buf + gif_ptr->img_row_offset, - gif_ptr->img_row_avail_size); - if (ret == 0) { - FX_Free(gif_image_ptr->image_row_buf); - gif_image_ptr->image_row_buf = NULL; - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); - gif_error(gif_ptr, "Decode Image Data Error"); - return 0; - } - while (ret != 0) { - if (ret == 1) { - gif_ptr->gif_get_row_fn(gif_ptr, gif_image_ptr->image_row_num, - gif_image_ptr->image_row_buf); - FX_Free(gif_image_ptr->image_row_buf); - gif_image_ptr->image_row_buf = NULL; - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); - return 1; - } - if (ret == 2) { - ASSERT(img_decoder_ptr->GetAvailInput() == 0); - skip_size_org = gif_ptr->skip_size; - if (gif_read_data(gif_ptr, &data_size_ptr, 1) == NULL) { - return 2; - } - if (*data_size_ptr != GIF_BLOCK_TERMINAL) { - if (gif_read_data(gif_ptr, &data_ptr, *data_size_ptr) == NULL) { - gif_ptr->skip_size = skip_size_org; - return 2; - } - img_decoder_ptr->Input(data_ptr, *data_size_ptr); - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_IMG_DATA); - gif_ptr->img_row_offset += gif_ptr->img_row_avail_size; - gif_ptr->img_row_avail_size = - gif_img_row_bytes - gif_ptr->img_row_offset; - ret = img_decoder_ptr->Decode( - gif_image_ptr->image_row_buf + gif_ptr->img_row_offset, - gif_ptr->img_row_avail_size); - } - } - if (ret == 3) { - if (((GifLF*)&gif_image_ptr->image_info_ptr->local_flag)->interlace) { - gif_ptr->gif_get_row_fn(gif_ptr, gif_image_ptr->image_row_num, - gif_image_ptr->image_row_buf); - gif_image_ptr->image_row_num += - s_gif_interlace_step[gif_ptr->img_pass_num]; - if (gif_image_ptr->image_row_num >= - (int32_t)gif_image_ptr->image_info_ptr->height) { - gif_ptr->img_pass_num++; - gif_image_ptr->image_row_num = - s_gif_interlace_step[gif_ptr->img_pass_num] / 2; - } - } else { - gif_ptr->gif_get_row_fn(gif_ptr, gif_image_ptr->image_row_num++, - gif_image_ptr->image_row_buf); - } - gif_ptr->img_row_offset = 0; - gif_ptr->img_row_avail_size = gif_img_row_bytes; - ret = img_decoder_ptr->Decode( - gif_image_ptr->image_row_buf + gif_ptr->img_row_offset, - gif_ptr->img_row_avail_size); - } - if (ret == 0) { - FX_Free(gif_image_ptr->image_row_buf); - gif_image_ptr->image_row_buf = NULL; - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); - gif_error(gif_ptr, "Decode Image Data Error"); - return 0; - } - } - } - gif_save_decoding_status(gif_ptr, GIF_D_STATUS_TAIL); - } - gif_error(gif_ptr, "Decode Image Data Error"); - return 0; -} -void gif_save_decoding_status(gif_decompress_struct_p gif_ptr, int32_t status) { - gif_ptr->decode_status = status; - gif_ptr->next_in += gif_ptr->skip_size; - gif_ptr->avail_in -= gif_ptr->skip_size; - gif_ptr->skip_size = 0; -} -uint8_t* gif_read_data(gif_decompress_struct_p gif_ptr, - uint8_t** des_buf_pp, - FX_DWORD data_size) { - if (gif_ptr == NULL || gif_ptr->avail_in < gif_ptr->skip_size + data_size) { - return NULL; - } - *des_buf_pp = gif_ptr->next_in + gif_ptr->skip_size; - gif_ptr->skip_size += data_size; - return *des_buf_pp; -} -void gif_input_buffer(gif_decompress_struct_p gif_ptr, - uint8_t* src_buf, - FX_DWORD src_size) { - gif_ptr->next_in = src_buf; - gif_ptr->avail_in = src_size; - gif_ptr->skip_size = 0; -} -FX_DWORD gif_get_avail_input(gif_decompress_struct_p gif_ptr, - uint8_t** avial_buf_ptr) { - if (avial_buf_ptr) { - *avial_buf_ptr = NULL; - if (gif_ptr->avail_in > 0) { - *avial_buf_ptr = gif_ptr->next_in; - } - } - return gif_ptr->avail_in; -} -int32_t gif_get_frame_num(gif_decompress_struct_p gif_ptr) { - return gif_ptr->img_ptr_arr_ptr->GetSize(); -} -static FX_BOOL gif_write_header(gif_compress_struct_p gif_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_len) { - if (gif_ptr->cur_offset) { - return TRUE; - } - dst_len = sizeof(GifHeader) + sizeof(GifLSD) + sizeof(GifGF); - dst_buf = FX_TryAlloc(uint8_t, dst_len); - if (dst_buf == NULL) { - return FALSE; - } - FXSYS_memset(dst_buf, 0, dst_len); - FXSYS_memcpy(dst_buf, gif_ptr->header_ptr, sizeof(GifHeader)); - gif_ptr->cur_offset += sizeof(GifHeader); - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->lsd_ptr->width); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->lsd_ptr->height); - gif_ptr->cur_offset += 2; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->lsd_ptr->global_flag; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->lsd_ptr->bc_index; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->lsd_ptr->pixel_aspect; - if (gif_ptr->global_pal) { - FX_WORD size = sizeof(GifPalette) * gif_ptr->gpal_num; - if (!gif_grow_buf(dst_buf, dst_len, gif_ptr->cur_offset + size)) { - return FALSE; - } - FXSYS_memcpy(&dst_buf[gif_ptr->cur_offset], gif_ptr->global_pal, size); - gif_ptr->cur_offset += size; - } - return TRUE; -} -void interlace_buf(const uint8_t* buf, FX_DWORD pitch, FX_DWORD height) { - CFX_ArrayTemplate pass[4]; - int i, j; - FX_DWORD row; - row = 0; - uint8_t* temp; - while (row < height) { - if (row % 8 == 0) { - j = 0; - } else if (row % 4 == 0) { - j = 1; - } else if (row % 2 == 0) { - j = 2; - } else { - j = 3; - } - temp = FX_Alloc(uint8_t, pitch); - if (temp == NULL) { - return; - } - FXSYS_memcpy(temp, &buf[pitch * row], pitch); - pass[j].Add(temp); - row++; - } - for (i = 0, row = 0; i < 4; i++) { - for (j = 0; j < pass[i].GetSize(); j++, row++) { - FXSYS_memcpy((uint8_t*)&buf[pitch * row], pass[i].GetAt(j), pitch); - FX_Free(pass[i].GetAt(j)); - } - } -} -static void gif_write_block_data(const uint8_t* src_buf, - FX_DWORD src_len, - uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD& dst_offset) { - FX_DWORD src_offset = 0; - while (src_len > GIF_DATA_BLOCK) { - dst_buf[dst_offset++] = GIF_DATA_BLOCK; - FXSYS_memcpy(&dst_buf[dst_offset], &src_buf[src_offset], GIF_DATA_BLOCK); - dst_offset += GIF_DATA_BLOCK; - src_offset += GIF_DATA_BLOCK; - src_len -= GIF_DATA_BLOCK; - } - dst_buf[dst_offset++] = (uint8_t)src_len; - FXSYS_memcpy(&dst_buf[dst_offset], &src_buf[src_offset], src_len); - dst_offset += src_len; -} -static FX_BOOL gif_write_data(gif_compress_struct_p gif_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_len) { - if (!gif_grow_buf(dst_buf, dst_len, gif_ptr->cur_offset + GIF_DATA_BLOCK)) { - return FALSE; - } - if (FXSYS_memcmp(gif_ptr->header_ptr->version, "89a", 3) == 0) { - dst_buf[gif_ptr->cur_offset++] = GIF_SIG_EXTENSION; - dst_buf[gif_ptr->cur_offset++] = GIF_BLOCK_GCE; - gif_ptr->gce_ptr->block_size = 4; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->gce_ptr->block_size; - gif_ptr->gce_ptr->gce_flag = 0; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->gce_ptr->gce_flag; - gif_ptr->gce_ptr->delay_time = 10; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->gce_ptr->delay_time); - gif_ptr->cur_offset += 2; - gif_ptr->gce_ptr->trans_index = 0; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->gce_ptr->trans_index; - dst_buf[gif_ptr->cur_offset++] = 0; - } - dst_buf[gif_ptr->cur_offset++] = GIF_SIG_IMAGE; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->image_info_ptr->left); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->image_info_ptr->top); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->image_info_ptr->width); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->image_info_ptr->height); - gif_ptr->cur_offset += 2; - GifLF& lf = (GifLF&)gif_ptr->image_info_ptr->local_flag; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->image_info_ptr->local_flag; - if (gif_ptr->local_pal) { - FX_DWORD pal_size = sizeof(GifPalette) * gif_ptr->lpal_num; - if (!gif_grow_buf(dst_buf, dst_len, pal_size + gif_ptr->cur_offset)) { - return FALSE; - } - FXSYS_memcpy(&dst_buf[gif_ptr->cur_offset], gif_ptr->local_pal, pal_size); - gif_ptr->cur_offset += pal_size; - } - if (lf.interlace) { - interlace_buf(gif_ptr->src_buf, gif_ptr->src_pitch, - gif_ptr->image_info_ptr->height); - } - uint8_t code_bit = lf.pal_bits; - if (lf.local_pal == 0) { - GifGF& gf = (GifGF&)gif_ptr->lsd_ptr->global_flag; - code_bit = gf.pal_bits; - } - gif_ptr->img_encoder_ptr->Start(code_bit, gif_ptr->src_buf, dst_buf, - gif_ptr->cur_offset); - FX_DWORD i; - for (i = 0; i < gif_ptr->src_row; i++) { - if (!gif_ptr->img_encoder_ptr->Encode( - &gif_ptr->src_buf[i * gif_ptr->src_pitch], - gif_ptr->src_width * (code_bit + 1), dst_buf, dst_len, - gif_ptr->cur_offset)) { - return FALSE; - } - } - gif_ptr->img_encoder_ptr->Finish(dst_buf, dst_len, gif_ptr->cur_offset); - dst_buf[gif_ptr->cur_offset++] = 0; - if (FXSYS_memcmp(gif_ptr->header_ptr->version, "89a", 3) == 0 && - gif_ptr->cmt_data_ptr) { - dst_buf[gif_ptr->cur_offset++] = GIF_SIG_EXTENSION; - dst_buf[gif_ptr->cur_offset++] = GIF_BLOCK_CE; - gif_write_block_data(gif_ptr->cmt_data_ptr, gif_ptr->cmt_data_len, dst_buf, - dst_len, gif_ptr->cur_offset); - dst_buf[gif_ptr->cur_offset++] = 0; - } - if (FXSYS_memcmp(gif_ptr->header_ptr->version, "89a", 3) == 0 && - gif_ptr->pte_data_ptr) { - dst_buf[gif_ptr->cur_offset++] = GIF_SIG_EXTENSION; - dst_buf[gif_ptr->cur_offset++] = GIF_BLOCK_PTE; - dst_buf[gif_ptr->cur_offset++] = gif_ptr->pte_ptr->block_size; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->pte_ptr->grid_left); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->pte_ptr->grid_top); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->pte_ptr->grid_width); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->pte_ptr->grid_height); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->pte_ptr->char_width); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, - gif_ptr->pte_ptr->char_height); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->pte_ptr->fc_index); - gif_ptr->cur_offset += 2; - SetWord_LSBFirst(dst_buf + gif_ptr->cur_offset, gif_ptr->pte_ptr->bc_index); - gif_ptr->cur_offset += 2; - gif_write_block_data(gif_ptr->pte_data_ptr, gif_ptr->pte_data_len, dst_buf, - dst_len, gif_ptr->cur_offset); - gif_ptr->cur_offset += gif_ptr->pte_data_len; - dst_buf[gif_ptr->cur_offset++] = 0; - } - dst_buf[gif_ptr->cur_offset++] = GIF_SIG_TRAILER; - return TRUE; -} -FX_BOOL gif_encode(gif_compress_struct_p gif_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_len) { - if (!gif_write_header(gif_ptr, dst_buf, dst_len)) { - return FALSE; - } - FX_DWORD cur_offset = gif_ptr->cur_offset; - FX_BOOL res = TRUE; - if (gif_ptr->frames) { - gif_ptr->cur_offset--; - } - if (!gif_write_data(gif_ptr, dst_buf, dst_len)) { - gif_ptr->cur_offset = cur_offset; - res = FALSE; - } - dst_len = gif_ptr->cur_offset; - dst_buf[dst_len - 1] = GIF_SIG_TRAILER; - if (res) { - gif_ptr->frames++; - } - return res; -} diff --git a/core/src/fxcodec/lgif/fx_gif.h b/core/src/fxcodec/lgif/fx_gif.h deleted file mode 100644 index 32300a50e5..0000000000 --- a/core/src/fxcodec/lgif/fx_gif.h +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCODEC_LGIF_FX_GIF_H_ -#define CORE_SRC_FXCODEC_LGIF_FX_GIF_H_ - -#include - -#include "core/include/fxcrt/fx_basic.h" - -#define GIF_SIGNATURE "GIF" -#define GIF_SIG_EXTENSION 0x21 -#define GIF_SIG_IMAGE 0x2C -#define GIF_SIG_TRAILER 0x3B -#define GIF_BLOCK_GCE 0xF9 -#define GIF_BLOCK_PTE 0x01 -#define GIF_BLOCK_CE 0xFE -#define GIF_BLOCK_AE 0xFF -#define GIF_BLOCK_TERMINAL 0x00 -#define GIF_MAX_LZW_CODE 4096 -#define GIF_DATA_BLOCK 255 -#define GIF_MAX_ERROR_SIZE 256 -#define GIF_D_STATUS_SIG 0x01 -#define GIF_D_STATUS_TAIL 0x02 -#define GIF_D_STATUS_EXT 0x03 -#define GIF_D_STATUS_EXT_AE 0x04 -#define GIF_D_STATUS_EXT_CE 0x05 -#define GIF_D_STATUS_EXT_GCE 0x06 -#define GIF_D_STATUS_EXT_PTE 0x07 -#define GIF_D_STATUS_EXT_UNE 0x08 -#define GIF_D_STATUS_IMG_INFO 0x09 -#define GIF_D_STATUS_IMG_DATA 0x0A -#pragma pack(1) -typedef struct tagGifGF { - uint8_t pal_bits : 3; - uint8_t sort_flag : 1; - uint8_t color_resolution : 3; - uint8_t global_pal : 1; -} GifGF; -typedef struct tagGifLF { - uint8_t pal_bits : 3; - uint8_t reserved : 2; - uint8_t sort_flag : 1; - uint8_t interlace : 1; - uint8_t local_pal : 1; -} GifLF; -typedef struct tagGifHeader { - char signature[3]; - char version[3]; -} GifHeader; -typedef struct tagGifLSD { - FX_WORD width; - FX_WORD height; - uint8_t global_flag; - uint8_t bc_index; - uint8_t pixel_aspect; -} GifLSD; -typedef struct tagGifImageInfo { - FX_WORD left; - FX_WORD top; - FX_WORD width; - FX_WORD height; - - uint8_t local_flag; -} GifImageInfo; -typedef struct tagGifCEF { - uint8_t transparency : 1; - uint8_t user_input : 1; - uint8_t disposal_method : 3; - uint8_t reserved : 3; -} GifCEF; -typedef struct tagGifGCE { - uint8_t block_size; - uint8_t gce_flag; - FX_WORD delay_time; - uint8_t trans_index; -} GifGCE; -typedef struct tagGifPTE { - uint8_t block_size; - FX_WORD grid_left; - FX_WORD grid_top; - FX_WORD grid_width; - FX_WORD grid_height; - - uint8_t char_width; - uint8_t char_height; - - uint8_t fc_index; - uint8_t bc_index; -} GifPTE; -typedef struct tagGifAE { - uint8_t block_size; - uint8_t app_identify[8]; - uint8_t app_authentication[3]; -} GifAE; -typedef struct tagGifPalette { uint8_t r, g, b; } GifPalette; -#pragma pack() -typedef struct tagGifImage { - GifGCE* image_gce_ptr; - GifPalette* local_pal_ptr; - GifImageInfo* image_info_ptr; - uint8_t image_code_size; - FX_DWORD image_data_pos; - uint8_t* image_row_buf; - int32_t image_row_num; -} GifImage; -typedef struct tagGifPlainText { - GifGCE* gce_ptr; - GifPTE* pte_ptr; - CFX_ByteString* string_ptr; -} GifPlainText; -class CGifLZWDecoder { - public: - struct tag_Table { - FX_WORD prefix; - uint8_t suffix; - }; - CGifLZWDecoder(FX_CHAR* error_ptr = NULL) { err_msg_ptr = error_ptr; } - void InitTable(uint8_t code_len); - - int32_t Decode(uint8_t* des_buf, FX_DWORD& des_size); - - void Input(uint8_t* src_buf, FX_DWORD src_size); - FX_DWORD GetAvailInput(); - - private: - void ClearTable(); - void AddCode(FX_WORD prefix_code, uint8_t append_char); - void DecodeString(FX_WORD code); - uint8_t code_size; - uint8_t code_size_cur; - FX_WORD code_clear; - FX_WORD code_end; - FX_WORD code_next; - uint8_t code_first; - uint8_t stack[GIF_MAX_LZW_CODE]; - FX_WORD stack_size; - tag_Table code_table[GIF_MAX_LZW_CODE]; - FX_WORD code_old; - - uint8_t* next_in; - FX_DWORD avail_in; - - uint8_t bits_left; - FX_DWORD code_store; - - FX_CHAR* err_msg_ptr; -}; -class CGifLZWEncoder { - public: - struct tag_Table { - FX_WORD prefix; - uint8_t suffix; - }; - CGifLZWEncoder(); - ~CGifLZWEncoder(); - void Start(uint8_t code_len, - const uint8_t* src_buf, - uint8_t*& dst_buf, - FX_DWORD& offset); - FX_BOOL Encode(const uint8_t* src_buf, - FX_DWORD src_len, - uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD& offset); - void Finish(uint8_t*& dst_buf, FX_DWORD& dst_len, FX_DWORD& offset); - - private: - void ClearTable(); - FX_BOOL LookUpInTable(const uint8_t* buf, - FX_DWORD& offset, - uint8_t& bit_offset); - void EncodeString(FX_DWORD index, - uint8_t*& dst_buf, - FX_DWORD& dst_len, - FX_DWORD& offset); - void WriteBlock(uint8_t*& dst_buf, FX_DWORD& dst_len, FX_DWORD& offset); - jmp_buf jmp; - FX_DWORD src_offset; - uint8_t src_bit_offset; - uint8_t src_bit_cut; - FX_DWORD src_bit_num; - uint8_t code_size; - FX_WORD code_clear; - FX_WORD code_end; - FX_WORD index_num; - uint8_t bit_offset; - uint8_t index_bit_cur; - uint8_t index_buf[GIF_DATA_BLOCK]; - uint8_t index_buf_len; - tag_Table code_table[GIF_MAX_LZW_CODE]; - FX_WORD table_cur; -}; -typedef struct tag_gif_decompress_struct gif_decompress_struct; -typedef gif_decompress_struct* gif_decompress_struct_p; -typedef gif_decompress_struct_p* gif_decompress_struct_pp; -static const int32_t s_gif_interlace_step[4] = {8, 8, 4, 2}; -struct tag_gif_decompress_struct { - jmp_buf jmpbuf; - FX_CHAR* err_ptr; - void (*gif_error_fn)(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); - void* context_ptr; - int width; - int height; - GifPalette* global_pal_ptr; - int32_t global_pal_num; - uint8_t global_sort_flag; - uint8_t global_color_resolution; - - uint8_t bc_index; - uint8_t pixel_aspect; - CGifLZWDecoder* img_decoder_ptr; - FX_DWORD img_row_offset; - FX_DWORD img_row_avail_size; - uint8_t img_pass_num; - CFX_ArrayTemplate* img_ptr_arr_ptr; - uint8_t* (*gif_ask_buf_for_pal_fn)(gif_decompress_struct_p gif_ptr, - int32_t pal_size); - uint8_t* next_in; - FX_DWORD avail_in; - int32_t decode_status; - FX_DWORD skip_size; - void (*gif_record_current_position_fn)(gif_decompress_struct_p gif_ptr, - FX_DWORD* cur_pos_ptr); - void (*gif_get_row_fn)(gif_decompress_struct_p gif_ptr, - int32_t row_num, - uint8_t* row_buf); - FX_BOOL (*gif_get_record_position_fn)(gif_decompress_struct_p gif_ptr, - FX_DWORD cur_pos, - int32_t left, int32_t top, int32_t width, int32_t height, - int32_t pal_num, void* pal_ptr, - int32_t delay_time, FX_BOOL user_input, - int32_t trans_index, int32_t disposal_method, FX_BOOL interlace); - CFX_ByteString* cmt_data_ptr; - GifGCE* gce_ptr; - CFX_ArrayTemplate* pt_ptr_arr_ptr; -}; -typedef struct tag_gif_compress_struct gif_compress_struct; -typedef gif_compress_struct* gif_compress_struct_p; -typedef gif_compress_struct_p* gif_compress_struct_pp; -struct tag_gif_compress_struct { - const uint8_t* src_buf; - FX_DWORD src_pitch; - FX_DWORD src_width; - FX_DWORD src_row; - FX_DWORD cur_offset; - FX_DWORD frames; - GifHeader* header_ptr; - GifLSD* lsd_ptr; - GifPalette* global_pal; - FX_WORD gpal_num; - GifPalette* local_pal; - FX_WORD lpal_num; - GifImageInfo* image_info_ptr; - CGifLZWEncoder* img_encoder_ptr; - - uint8_t* cmt_data_ptr; - FX_DWORD cmt_data_len; - GifGCE* gce_ptr; - GifPTE* pte_ptr; - const uint8_t* pte_data_ptr; - FX_DWORD pte_data_len; -}; - -void gif_error(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); -void gif_warn(gif_decompress_struct_p gif_ptr, const FX_CHAR* err_msg); -gif_decompress_struct_p gif_create_decompress(); -void gif_destroy_decompress(gif_decompress_struct_pp gif_ptr_ptr); -gif_compress_struct_p gif_create_compress(); -void gif_destroy_compress(gif_compress_struct_pp gif_ptr_ptr); -int32_t gif_read_header(gif_decompress_struct_p gif_ptr); -int32_t gif_get_frame(gif_decompress_struct_p gif_ptr); -int32_t gif_get_frame_num(gif_decompress_struct_p gif_ptr); -int32_t gif_decode_extension(gif_decompress_struct_p gif_ptr); -int32_t gif_decode_image_info(gif_decompress_struct_p gif_ptr); -void gif_takeover_gce_ptr(gif_decompress_struct_p gif_ptr, - GifGCE** gce_ptr_ptr); -int32_t gif_load_frame(gif_decompress_struct_p gif_ptr, int32_t frame_num); -uint8_t* gif_read_data(gif_decompress_struct_p gif_ptr, - uint8_t** des_buf_pp, - FX_DWORD data_size); -void gif_save_decoding_status(gif_decompress_struct_p gif_ptr, int32_t status); -void gif_input_buffer(gif_decompress_struct_p gif_ptr, - uint8_t* src_buf, - FX_DWORD src_size); -FX_DWORD gif_get_avail_input(gif_decompress_struct_p gif_ptr, - uint8_t** avial_buf_ptr); -void interlace_buf(const uint8_t* buf, FX_DWORD width, FX_DWORD height); -FX_BOOL gif_encode(gif_compress_struct_p gif_ptr, - uint8_t*& dst_buf, - FX_DWORD& dst_len); - -#endif // CORE_SRC_FXCODEC_LGIF_FX_GIF_H_ diff --git a/core/src/fxcrt/extension.h b/core/src/fxcrt/extension.h deleted file mode 100644 index 5ce29ddd50..0000000000 --- a/core/src/fxcrt/extension.h +++ /dev/null @@ -1,334 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCRT_EXTENSION_H_ -#define CORE_SRC_FXCRT_EXTENSION_H_ - -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_safe_types.h" - -class IFXCRT_FileAccess { - public: - virtual ~IFXCRT_FileAccess() {} - virtual FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) = 0; - virtual FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) = 0; - virtual void Close() = 0; - virtual void Release() = 0; - virtual FX_FILESIZE GetSize() const = 0; - virtual FX_FILESIZE GetPosition() const = 0; - virtual FX_FILESIZE SetPosition(FX_FILESIZE pos) = 0; - virtual size_t Read(void* pBuffer, size_t szBuffer) = 0; - virtual size_t Write(const void* pBuffer, size_t szBuffer) = 0; - virtual size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) = 0; - virtual size_t WritePos(const void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) = 0; - virtual FX_BOOL Flush() = 0; - virtual FX_BOOL Truncate(FX_FILESIZE szFile) = 0; -}; -IFXCRT_FileAccess* FXCRT_FileAccess_Create(); - -#ifdef PDF_ENABLE_XFA -class CFX_CRTFileAccess : public IFX_FileAccess { - public: - CFX_CRTFileAccess() : m_RefCount(0) {} - - // IFX_FileAccess - void Release() override { - if (--m_RefCount == 0) - delete this; - } - - IFX_FileAccess* Retain() override { - m_RefCount++; - return (IFX_FileAccess*)this; - } - - void GetPath(CFX_WideString& wsPath) override { wsPath = m_path; } - - IFX_FileStream* CreateFileStream(FX_DWORD dwModes) override { - return FX_CreateFileStream(m_path, dwModes); - } - - FX_BOOL Init(const CFX_WideStringC& wsPath) { - m_path = wsPath; - m_RefCount = 1; - return TRUE; - } - - protected: - CFX_WideString m_path; - FX_DWORD m_RefCount; -}; -#endif // PDF_ENABLE_XFA - -class CFX_CRTFileStream final : public IFX_FileStream { - public: - explicit CFX_CRTFileStream(IFXCRT_FileAccess* pFA); - ~CFX_CRTFileStream() override; - - // IFX_FileStream: - IFX_FileStream* Retain() override; - void Release() override; - FX_FILESIZE GetSize() override; - FX_BOOL IsEOF() override; - FX_FILESIZE GetPosition() override; - FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; - size_t ReadBlock(void* buffer, size_t size) override; - FX_BOOL WriteBlock(const void* buffer, - FX_FILESIZE offset, - size_t size) override; - FX_BOOL Flush() override; - - protected: - IFXCRT_FileAccess* m_pFile; - FX_DWORD m_dwCount; -}; - -#define FX_MEMSTREAM_BlockSize (64 * 1024) -#define FX_MEMSTREAM_Consecutive 0x01 -#define FX_MEMSTREAM_TakeOver 0x02 -class CFX_MemoryStream final : public IFX_MemoryStream { - public: - explicit CFX_MemoryStream(FX_BOOL bConsecutive) - : m_dwCount(1), - m_nTotalSize(0), - m_nCurSize(0), - m_nCurPos(0), - m_nGrowSize(FX_MEMSTREAM_BlockSize) { - m_dwFlags = - FX_MEMSTREAM_TakeOver | (bConsecutive ? FX_MEMSTREAM_Consecutive : 0); - } - CFX_MemoryStream(uint8_t* pBuffer, size_t nSize, FX_BOOL bTakeOver) - : m_dwCount(1), - m_nTotalSize(nSize), - m_nCurSize(nSize), - m_nCurPos(0), - m_nGrowSize(FX_MEMSTREAM_BlockSize) { - m_Blocks.Add(pBuffer); - m_dwFlags = - FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); - } - ~CFX_MemoryStream() override { - if (m_dwFlags & FX_MEMSTREAM_TakeOver) { - for (int32_t i = 0; i < m_Blocks.GetSize(); i++) { - FX_Free(m_Blocks[i]); - } - } - m_Blocks.RemoveAll(); - } - - // IFX_MemoryStream: - IFX_FileStream* Retain() override { - m_dwCount++; - return this; - } - void Release() override { - FX_DWORD nCount = --m_dwCount; - if (nCount) { - return; - } - delete this; - } - FX_FILESIZE GetSize() override { return (FX_FILESIZE)m_nCurSize; } - FX_BOOL IsEOF() override { return m_nCurPos >= (size_t)GetSize(); } - FX_FILESIZE GetPosition() override { return (FX_FILESIZE)m_nCurPos; } - FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override { - if (!buffer || !size) { - return FALSE; - } - - FX_SAFE_SIZE_T newPos = size; - newPos += offset; - if (!newPos.IsValid() || newPos.ValueOrDefault(0) == 0 || - newPos.ValueOrDie() > m_nCurSize) { - return FALSE; - } - - m_nCurPos = newPos.ValueOrDie(); - if (m_dwFlags & FX_MEMSTREAM_Consecutive) { - FXSYS_memcpy(buffer, m_Blocks[0] + (size_t)offset, size); - return TRUE; - } - size_t nStartBlock = (size_t)offset / m_nGrowSize; - offset -= (FX_FILESIZE)(nStartBlock * m_nGrowSize); - while (size) { - size_t nRead = m_nGrowSize - (size_t)offset; - if (nRead > size) { - nRead = size; - } - FXSYS_memcpy(buffer, m_Blocks[(int)nStartBlock] + (size_t)offset, nRead); - buffer = ((uint8_t*)buffer) + nRead; - size -= nRead; - nStartBlock++; - offset = 0; - } - return TRUE; - } - size_t ReadBlock(void* buffer, size_t size) override { - if (m_nCurPos >= m_nCurSize) { - return 0; - } - size_t nRead = std::min(size, m_nCurSize - m_nCurPos); - if (!ReadBlock(buffer, (int32_t)m_nCurPos, nRead)) { - return 0; - } - return nRead; - } - FX_BOOL WriteBlock(const void* buffer, - FX_FILESIZE offset, - size_t size) override { - if (!buffer || !size) { - return FALSE; - } - if (m_dwFlags & FX_MEMSTREAM_Consecutive) { - FX_SAFE_SIZE_T newPos = size; - newPos += offset; - if (!newPos.IsValid()) - return FALSE; - - m_nCurPos = newPos.ValueOrDie(); - if (m_nCurPos > m_nTotalSize) { - m_nTotalSize = - (m_nCurPos + m_nGrowSize - 1) / m_nGrowSize * m_nGrowSize; - if (m_Blocks.GetSize() < 1) { - uint8_t* block = FX_Alloc(uint8_t, m_nTotalSize); - m_Blocks.Add(block); - } else { - m_Blocks[0] = FX_Realloc(uint8_t, m_Blocks[0], m_nTotalSize); - } - if (!m_Blocks[0]) { - m_Blocks.RemoveAll(); - return FALSE; - } - } - FXSYS_memcpy(m_Blocks[0] + (size_t)offset, buffer, size); - if (m_nCurSize < m_nCurPos) { - m_nCurSize = m_nCurPos; - } - return TRUE; - } - - FX_SAFE_SIZE_T newPos = size; - newPos += offset; - if (!newPos.IsValid()) { - return FALSE; - } - - if (!ExpandBlocks(newPos.ValueOrDie())) { - return FALSE; - } - m_nCurPos = newPos.ValueOrDie(); - size_t nStartBlock = (size_t)offset / m_nGrowSize; - offset -= (FX_FILESIZE)(nStartBlock * m_nGrowSize); - while (size) { - size_t nWrite = m_nGrowSize - (size_t)offset; - if (nWrite > size) { - nWrite = size; - } - FXSYS_memcpy(m_Blocks[(int)nStartBlock] + (size_t)offset, buffer, nWrite); - buffer = ((uint8_t*)buffer) + nWrite; - size -= nWrite; - nStartBlock++; - offset = 0; - } - return TRUE; - } - FX_BOOL Flush() override { return TRUE; } - FX_BOOL IsConsecutive() const override { - return m_dwFlags & FX_MEMSTREAM_Consecutive; - } - void EstimateSize(size_t nInitSize, size_t nGrowSize) override { - if (m_dwFlags & FX_MEMSTREAM_Consecutive) { - if (m_Blocks.GetSize() < 1) { - uint8_t* pBlock = - FX_Alloc(uint8_t, std::max(nInitSize, static_cast(4096))); - m_Blocks.Add(pBlock); - } - m_nGrowSize = std::max(nGrowSize, static_cast(4096)); - } else if (m_Blocks.GetSize() < 1) { - m_nGrowSize = std::max(nGrowSize, static_cast(4096)); - } - } - uint8_t* GetBuffer() const override { - return m_Blocks.GetSize() ? m_Blocks[0] : nullptr; - } - void AttachBuffer(uint8_t* pBuffer, - size_t nSize, - FX_BOOL bTakeOver = FALSE) override { - if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) { - return; - } - m_Blocks.RemoveAll(); - m_Blocks.Add(pBuffer); - m_nTotalSize = m_nCurSize = nSize; - m_nCurPos = 0; - m_dwFlags = - FX_MEMSTREAM_Consecutive | (bTakeOver ? FX_MEMSTREAM_TakeOver : 0); - } - void DetachBuffer() override { - if (!(m_dwFlags & FX_MEMSTREAM_Consecutive)) { - return; - } - m_Blocks.RemoveAll(); - m_nTotalSize = m_nCurSize = m_nCurPos = 0; - m_dwFlags = FX_MEMSTREAM_TakeOver; - } - - protected: - CFX_ArrayTemplate m_Blocks; - FX_DWORD m_dwCount; - size_t m_nTotalSize; - size_t m_nCurSize; - size_t m_nCurPos; - size_t m_nGrowSize; - FX_DWORD m_dwFlags; - FX_BOOL ExpandBlocks(size_t size) { - if (m_nCurSize < size) { - m_nCurSize = size; - } - if (size <= m_nTotalSize) { - return TRUE; - } - int32_t iCount = m_Blocks.GetSize(); - size = (size - m_nTotalSize + m_nGrowSize - 1) / m_nGrowSize; - m_Blocks.SetSize(m_Blocks.GetSize() + (int32_t)size); - while (size--) { - uint8_t* pBlock = FX_Alloc(uint8_t, m_nGrowSize); - m_Blocks.SetAt(iCount++, pBlock); - m_nTotalSize += m_nGrowSize; - } - return TRUE; - } -}; - -#ifdef __cplusplus -extern "C" { -#endif -#define MT_N 848 -#define MT_M 456 -#define MT_Matrix_A 0x9908b0df -#define MT_Upper_Mask 0x80000000 -#define MT_Lower_Mask 0x7fffffff -struct FX_MTRANDOMCONTEXT { - FX_MTRANDOMCONTEXT() { - mti = MT_N + 1; - bHaveSeed = FALSE; - } - FX_DWORD mti; - FX_BOOL bHaveSeed; - FX_DWORD mt[MT_N]; -}; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -FX_BOOL FX_GenerateCryptoRandom(FX_DWORD* pBuffer, int32_t iCount); -#endif -#ifdef __cplusplus -} -#endif - -#endif // CORE_SRC_FXCRT_EXTENSION_H_ diff --git a/core/src/fxcrt/fx_arabic.cpp b/core/src/fxcrt/fx_arabic.cpp deleted file mode 100644 index e611be0c52..0000000000 --- a/core/src/fxcrt/fx_arabic.cpp +++ /dev/null @@ -1,1063 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_ucd.h" -#include "core/src/fxcrt/fx_arabic.h" - -namespace { - -const FX_ARBFORMTABLE g_FX_ArabicFormTables[] = { - {0xFE81, 0xFE82, 0xFE81, 0xFE82}, - {0xFE83, 0xFE84, 0xFE83, 0xFE84}, - {0xFE85, 0xFE86, 0xFE85, 0xFE86}, - {0xFE87, 0xFE88, 0xFE87, 0xFE88}, - {0xFE89, 0xFE8A, 0xFE8B, 0xFE8C}, - {0xFE8D, 0xFE8E, 0xFE8D, 0xFE8E}, - {0xFE8F, 0xFE90, 0xFE91, 0xFE92}, - {0xFE93, 0xFE94, 0xFE93, 0xFE94}, - {0xFE95, 0xFE96, 0xFE97, 0xFE98}, - {0xFE99, 0xFE9A, 0xFE9B, 0xFE9C}, - {0xFE9D, 0xFE9E, 0xFE9F, 0xFEA0}, - {0xFEA1, 0xFEA2, 0xFEA3, 0xFEA4}, - {0xFEA5, 0xFEA6, 0xFEA7, 0xFEA8}, - {0xFEA9, 0xFEAA, 0xFEA9, 0xFEAA}, - {0xFEAB, 0xFEAC, 0xFEAB, 0xFEAC}, - {0xFEAD, 0xFEAE, 0xFEAD, 0xFEAE}, - {0xFEAF, 0xFEB0, 0xFEAF, 0xFEB0}, - {0xFEB1, 0xFEB2, 0xFEB3, 0xFEB4}, - {0xFEB5, 0xFEB6, 0xFEB7, 0xFEB8}, - {0xFEB9, 0xFEBA, 0xFEBB, 0xFEBC}, - {0xFEBD, 0xFEBE, 0xFEBF, 0xFEC0}, - {0xFEC1, 0xFEC2, 0xFEC3, 0xFEC4}, - {0xFEC5, 0xFEC6, 0xFEC7, 0xFEC8}, - {0xFEC9, 0xFECA, 0xFECB, 0xFECC}, - {0xFECD, 0xFECE, 0xFECF, 0xFED0}, - {0x063B, 0x063B, 0x063B, 0x063B}, - {0x063C, 0x063C, 0x063C, 0x063C}, - {0x063D, 0x063D, 0x063D, 0x063D}, - {0x063E, 0x063E, 0x063E, 0x063E}, - {0x063F, 0x063F, 0x063F, 0x063F}, - {0x0640, 0x0640, 0x0640, 0x0640}, - {0xFED1, 0xFED2, 0xFED3, 0xFED4}, - {0xFED5, 0xFED6, 0xFED7, 0xFED8}, - {0xFED9, 0xFEDA, 0xFEDB, 0xFEDC}, - {0xFEDD, 0xFEDE, 0xFEDF, 0xFEE0}, - {0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4}, - {0xFEE5, 0xFEE6, 0xFEE7, 0xFEE8}, - {0xFEE9, 0xFEEA, 0xFEEB, 0xFEEC}, - {0xFEED, 0xFEEE, 0xFEED, 0xFEEE}, - {0xFEEF, 0xFEF0, 0xFBFE, 0xFBFF}, - {0xFEF1, 0xFEF2, 0xFEF3, 0xFEF4}, - {0x064B, 0x064B, 0x064B, 0x064B}, - {0x064C, 0x064C, 0x064C, 0x064C}, - {0x064D, 0x064D, 0x064D, 0x064D}, - {0x064E, 0x064E, 0x064E, 0x064E}, - {0x064F, 0x064F, 0x064F, 0x064F}, - {0x0650, 0x0650, 0x0650, 0x0650}, - {0x0651, 0x0651, 0x0651, 0x0651}, - {0x0652, 0x0652, 0x0652, 0x0652}, - {0x0653, 0x0653, 0x0653, 0x0653}, - {0x0654, 0x0654, 0x0654, 0x0654}, - {0x0655, 0x0655, 0x0655, 0x0655}, - {0x0656, 0x0656, 0x0656, 0x0656}, - {0x0657, 0x0657, 0x0657, 0x0657}, - {0x0658, 0x0658, 0x0658, 0x0658}, - {0x0659, 0x0659, 0x0659, 0x0659}, - {0x065A, 0x065A, 0x065A, 0x065A}, - {0x065B, 0x065B, 0x065B, 0x065B}, - {0x065C, 0x065C, 0x065C, 0x065C}, - {0x065D, 0x065D, 0x065D, 0x065D}, - {0x065E, 0x065E, 0x065E, 0x065E}, - {0x065F, 0x065F, 0x065F, 0x065F}, - {0x0660, 0x0660, 0x0660, 0x0660}, - {0x0661, 0x0661, 0x0661, 0x0661}, - {0x0662, 0x0662, 0x0662, 0x0662}, - {0x0663, 0x0663, 0x0663, 0x0663}, - {0x0664, 0x0664, 0x0664, 0x0664}, - {0x0665, 0x0665, 0x0665, 0x0665}, - {0x0666, 0x0666, 0x0666, 0x0666}, - {0x0667, 0x0667, 0x0667, 0x0667}, - {0x0668, 0x0668, 0x0668, 0x0668}, - {0x0669, 0x0669, 0x0669, 0x0669}, - {0x066A, 0x066A, 0x066A, 0x066A}, - {0x066B, 0x066B, 0x066B, 0x066B}, - {0x066C, 0x066C, 0x066C, 0x066C}, - {0x066D, 0x066D, 0x066D, 0x066D}, - {0x066E, 0x066E, 0x066E, 0x066E}, - {0x066F, 0x066F, 0x066F, 0x066F}, - {0x0670, 0x0670, 0x0670, 0x0670}, - {0xFB50, 0xFB51, 0xFB50, 0xFB51}, - {0x0672, 0x0672, 0x0672, 0x0672}, - {0x0673, 0x0673, 0x0673, 0x0673}, - {0x0674, 0x0674, 0x0674, 0x0674}, - {0x0675, 0x0675, 0x0675, 0x0675}, - {0x0676, 0x0676, 0x0676, 0x0676}, - {0x0677, 0x0677, 0x0677, 0x0677}, - {0x0678, 0x0678, 0x0678, 0x0678}, - {0xFB66, 0xFB67, 0xFB68, 0xFB69}, - {0xFB5E, 0xFB5F, 0xFB60, 0xFB61}, - {0xFB52, 0xFB53, 0xFB54, 0xFB55}, - {0x067C, 0x067C, 0x067C, 0x067C}, - {0x067D, 0x067D, 0x067D, 0x067D}, - {0xFB56, 0xFB57, 0xFB58, 0xFB59}, - {0xFB62, 0xFB63, 0xFB64, 0xFB65}, - {0xFB5A, 0xFB5B, 0xFB5C, 0xFB5D}, - {0x0681, 0x0681, 0x0681, 0x0681}, - {0x0682, 0x0682, 0x0682, 0x0682}, - {0xFB76, 0xFB77, 0xFB78, 0xFB79}, - {0xFB72, 0xFB73, 0xFB74, 0xFB75}, - {0x0685, 0x0685, 0x0685, 0x0685}, - {0xFB7A, 0xFB7B, 0xFB7C, 0xFB7D}, - {0xFB7E, 0xFB7F, 0xFB80, 0xFB81}, - {0xFB88, 0xFB89, 0xFB88, 0xFB89}, - {0x0689, 0x0689, 0x0689, 0x0689}, - {0x068A, 0x068A, 0x068A, 0x068A}, - {0x068B, 0x068B, 0x068B, 0x068B}, - {0xFB84, 0xFB85, 0xFB84, 0xFB85}, - {0xFB82, 0xFB83, 0xFB82, 0xFB83}, - {0xFB86, 0xFB87, 0xFB86, 0xFB87}, - {0x068F, 0x068F, 0x068F, 0x068F}, - {0x0690, 0x0690, 0x0690, 0x0690}, - {0xFB8C, 0xFB8D, 0xFB8C, 0xFB8D}, - {0x0692, 0x0692, 0x0692, 0x0692}, - {0x0693, 0x0693, 0x0693, 0x0693}, - {0x0694, 0x0694, 0x0694, 0x0694}, - {0x0695, 0x0695, 0x0695, 0x0695}, - {0x0696, 0x0696, 0x0696, 0x0696}, - {0x0697, 0x0697, 0x0697, 0x0697}, - {0xFB8A, 0xFB8B, 0xFB8A, 0xFB8B}, - {0x0699, 0x0699, 0x0699, 0x0699}, - {0x069A, 0x069A, 0x069A, 0x069A}, - {0x069B, 0x069B, 0x069B, 0x069B}, - {0x069C, 0x069C, 0x069C, 0x069C}, - {0x069D, 0x069D, 0x069D, 0x069D}, - {0x069E, 0x069E, 0x069E, 0x069E}, - {0x069F, 0x069F, 0x069F, 0x069F}, - {0x06A0, 0x06A0, 0x06A0, 0x06A0}, - {0x06A1, 0x06A1, 0x06A1, 0x06A1}, - {0x06A2, 0x06A2, 0x06A2, 0x06A2}, - {0x06A3, 0x06A3, 0x06A3, 0x06A3}, - {0xFB6A, 0xFB6B, 0xFB6C, 0xFB6D}, - {0x06A5, 0x06A5, 0x06A5, 0x06A5}, - {0xFB6E, 0xFB6F, 0xFB70, 0xFB71}, - {0x06A7, 0x06A7, 0x06A7, 0x06A7}, - {0x06A8, 0x06A8, 0x06A8, 0x06A8}, - {0xFB8E, 0xFB8F, 0xFB90, 0xFB91}, - {0x06AA, 0x06AA, 0x06AA, 0x06AA}, - {0x06AB, 0x06AB, 0x06AB, 0x06AB}, - {0x06AC, 0x06AC, 0x06AC, 0x06AC}, - {0xFBD3, 0xFBD4, 0xFBD5, 0xFBD6}, - {0x06AE, 0x06AE, 0x06AE, 0x06AE}, - {0xFB92, 0xFB93, 0xFB94, 0xFB95}, - {0x06B0, 0x06B0, 0x06B0, 0x06B0}, - {0xFB9A, 0xFB9B, 0xFB9C, 0xFB9D}, - {0x06B2, 0x06B2, 0x06B2, 0x06B2}, - {0xFB96, 0xFB97, 0xFB98, 0xFB99}, - {0x06B4, 0x06B4, 0x06B4, 0x06B4}, - {0x06B5, 0x06B5, 0x06B5, 0x06B5}, - {0x06B6, 0x06B6, 0x06B6, 0x06B6}, - {0x06B7, 0x06B7, 0x06B7, 0x06B7}, - {0x06B8, 0x06B8, 0x06B8, 0x06B8}, - {0x06B9, 0x06B9, 0x06B9, 0x06B9}, - {0xFB9E, 0xFB9F, 0xFBE8, 0xFBE9}, - {0xFBA0, 0xFBA1, 0xFBA2, 0xFBA3}, - {0x06BC, 0x06BC, 0x06BC, 0x06BC}, - {0x06BD, 0x06BD, 0x06BD, 0x06BD}, - {0xFBAA, 0xFBAB, 0xFBAC, 0xFBAD}, - {0x06BF, 0x06BF, 0x06BF, 0x06BF}, - {0xFBA4, 0xFBA5, 0xFBA4, 0xFBA5}, - {0xFBA6, 0xFBA7, 0xFBA8, 0xFBA9}, - {0x06C2, 0x06C2, 0x06C2, 0x06C2}, - {0x06C3, 0x06C3, 0x06C3, 0x06C3}, - {0x06C4, 0x06C4, 0x06C4, 0x06C4}, - {0xFBE0, 0xFBE1, 0xFBE0, 0xFBE1}, - {0xFBD9, 0xFBDA, 0xFBD9, 0xFBDA}, - {0xFBD7, 0xFBD8, 0xFBD7, 0xFBD8}, - {0xFBDB, 0xFBDC, 0xFBDB, 0xFBDC}, - {0xFBE2, 0xFBE3, 0xFBE2, 0xFBE3}, - {0x06CA, 0x06CA, 0x06CA, 0x06CA}, - {0xFBDE, 0xFBDF, 0xFBDE, 0xFBDF}, - {0xFBFC, 0xFBFD, 0xFBFE, 0xFBFF}, - {0x06CD, 0x06CD, 0x06CD, 0x06CD}, - {0x06CE, 0x06CE, 0x06CE, 0x06CE}, - {0x06CF, 0x06CF, 0x06CF, 0x06CF}, - {0xFBE4, 0xFBE5, 0xFBE6, 0xFBE7}, - {0x06D1, 0x06D1, 0x06D1, 0x06D1}, - {0xFBAE, 0xFBAF, 0xFBAE, 0xFBAF}, - {0xFBB0, 0xFBB1, 0xFBB0, 0xFBB1}, - {0x06D4, 0x06D4, 0x06D4, 0x06D4}, - {0x06D5, 0x06D5, 0x06D5, 0x06D5}, -}; - -const FX_ARAALEF gs_FX_AlefTable[] = { - {0x0622, 0xFEF5}, - {0x0623, 0xFEF7}, - {0x0625, 0xFEF9}, - {0x0627, 0xFEFB}, -}; - -const FX_ARASHADDA gs_FX_ShaddaTable[] = { - {0x064C, 0xFC5E}, - {0x064D, 0xFC5F}, - {0x064E, 0xFC60}, - {0x064F, 0xFC61}, - {0x0650, 0xFC62}, -}; - -} // namespace - -const FX_ARBFORMTABLE* FX_GetArabicFormTable(FX_WCHAR unicode) { - if (unicode < 0x622 || unicode > 0x6d5) { - return NULL; - } - return g_FX_ArabicFormTables + unicode - 0x622; -} -FX_WCHAR FX_GetArabicFromAlefTable(FX_WCHAR alef) { - static const int32_t s_iAlefCount = - sizeof(gs_FX_AlefTable) / sizeof(FX_ARAALEF); - for (int32_t iStart = 0; iStart < s_iAlefCount; iStart++) { - const FX_ARAALEF& v = gs_FX_AlefTable[iStart]; - if (v.wAlef == alef) { - return v.wIsolated; - } - } - return alef; -} -FX_WCHAR FX_GetArabicFromShaddaTable(FX_WCHAR shadda) { - static const int32_t s_iShaddaCount = - sizeof(gs_FX_ShaddaTable) / sizeof(FX_ARASHADDA); - for (int32_t iStart = 0; iStart < s_iShaddaCount; iStart++) { - const FX_ARASHADDA& v = gs_FX_ShaddaTable[iStart]; - if (v.wShadda == shadda) { - return v.wIsolated; - } - } - return shadda; -} - -IFX_ArabicChar* IFX_ArabicChar::Create() { - return new CFX_ArabicChar; -} -FX_BOOL CFX_ArabicChar::IsArabicChar(FX_WCHAR wch) const { - FX_DWORD dwRet = - kTextLayoutCodeProperties[(FX_WORD)wch] & FX_CHARTYPEBITSMASK; - return dwRet >= FX_CHARTYPE_ArabicAlef; -} -FX_BOOL CFX_ArabicChar::IsArabicFormChar(FX_WCHAR wch) const { - return (kTextLayoutCodeProperties[(FX_WORD)wch] & FX_CHARTYPEBITSMASK) == - FX_CHARTYPE_ArabicForm; -} -FX_WCHAR CFX_ArabicChar::GetFormChar(FX_WCHAR wch, - FX_WCHAR prev, - FX_WCHAR next) const { - CFX_Char c(wch, kTextLayoutCodeProperties[(FX_WORD)wch]); - CFX_Char p(prev, kTextLayoutCodeProperties[(FX_WORD)prev]); - CFX_Char n(next, kTextLayoutCodeProperties[(FX_WORD)next]); - return GetFormChar(&c, &p, &n); -} -FX_WCHAR CFX_ArabicChar::GetFormChar(const CFX_Char* cur, - const CFX_Char* prev, - const CFX_Char* next) const { - FX_CHARTYPE eCur; - FX_WCHAR wCur; - const FX_ARBFORMTABLE* ft = ParseChar(cur, wCur, eCur); - if (eCur < FX_CHARTYPE_ArabicAlef || eCur >= FX_CHARTYPE_ArabicNormal) { - return wCur; - } - FX_CHARTYPE ePrev; - FX_WCHAR wPrev; - ParseChar(prev, wPrev, ePrev); - if (wPrev == 0x0644 && eCur == FX_CHARTYPE_ArabicAlef) { - return 0xFEFF; - } - FX_CHARTYPE eNext; - FX_WCHAR wNext; - ParseChar(next, wNext, eNext); - bool bAlef = (eNext == FX_CHARTYPE_ArabicAlef && wCur == 0x644); - if (ePrev < FX_CHARTYPE_ArabicAlef) { - if (bAlef) { - return FX_GetArabicFromAlefTable(wNext); - } else { - return (eNext < FX_CHARTYPE_ArabicAlef) ? ft->wIsolated : ft->wInitial; - } - } else { - if (bAlef) { - wCur = FX_GetArabicFromAlefTable(wNext); - return (ePrev != FX_CHARTYPE_ArabicDistortion) ? wCur : ++wCur; - } else if (ePrev == FX_CHARTYPE_ArabicAlef || - ePrev == FX_CHARTYPE_ArabicSpecial) { - return (eNext < FX_CHARTYPE_ArabicAlef) ? ft->wIsolated : ft->wInitial; - } else { - return (eNext < FX_CHARTYPE_ArabicAlef) ? ft->wFinal : ft->wMedial; - } - } -} -const FX_ARBFORMTABLE* CFX_ArabicChar::ParseChar(const CFX_Char* pTC, - FX_WCHAR& wChar, - FX_CHARTYPE& eType) const { - if (pTC == NULL) { - eType = FX_CHARTYPE_Unknown; - wChar = 0xFEFF; - return NULL; - } - eType = (FX_CHARTYPE)pTC->GetCharType(); - wChar = (FX_WCHAR)pTC->m_wCharCode; - const FX_ARBFORMTABLE* pFT = FX_GetArabicFormTable(wChar); - if (pFT == NULL || eType >= FX_CHARTYPE_ArabicNormal) { - eType = FX_CHARTYPE_Unknown; - } - return pFT; -} -void FX_BidiReverseString(CFX_WideString& wsText, - int32_t iStart, - int32_t iCount) { - FXSYS_assert(iStart > -1 && iStart < wsText.GetLength()); - FXSYS_assert(iCount >= 0 && iStart + iCount <= wsText.GetLength()); - FX_WCHAR wch; - FX_WCHAR* pStart = (FX_WCHAR*)(const FX_WCHAR*)wsText; - pStart += iStart; - FX_WCHAR* pEnd = pStart + iCount - 1; - while (pStart < pEnd) { - wch = *pStart; - *pStart++ = *pEnd; - *pEnd-- = wch; - } -} -void FX_BidiSetDeferredRun(CFX_Int32Array& values, - int32_t iStart, - int32_t iCount, - int32_t iValue) { - FXSYS_assert(iStart > -1 && iStart <= values.GetSize()); - FXSYS_assert(iStart - iCount > -1); - for (int32_t i = iStart - 1; i >= iStart - iCount; i--) { - values.SetAt(i, iValue); - } -} -const int32_t gc_FX_BidiNTypes[] = { - FX_BIDICLASS_N, FX_BIDICLASS_L, FX_BIDICLASS_R, FX_BIDICLASS_AN, - FX_BIDICLASS_EN, FX_BIDICLASS_AL, FX_BIDICLASS_NSM, FX_BIDICLASS_CS, - FX_BIDICLASS_ES, FX_BIDICLASS_ET, FX_BIDICLASS_BN, FX_BIDICLASS_BN, - FX_BIDICLASS_N, FX_BIDICLASS_B, FX_BIDICLASS_RLO, FX_BIDICLASS_RLE, - FX_BIDICLASS_LRO, FX_BIDICLASS_LRE, FX_BIDICLASS_PDF, FX_BIDICLASS_ON, -}; -void FX_BidiClassify(const CFX_WideString& wsText, - CFX_Int32Array& classes, - FX_BOOL bWS) { - FXSYS_assert(wsText.GetLength() == classes.GetSize()); - int32_t iCount = wsText.GetLength(); - const FX_WCHAR* pwsStart = (const FX_WCHAR*)wsText; - FX_WCHAR wch; - int32_t iCls; - if (bWS) { - for (int32_t i = 0; i < iCount; i++) { - wch = *pwsStart++; - iCls = - ((kTextLayoutCodeProperties[(FX_WORD)wch] & FX_BIDICLASSBITSMASK) >> - FX_BIDICLASSBITS); - classes.SetAt(i, iCls); - } - } else { - for (int32_t i = 0; i < iCount; i++) { - wch = *pwsStart++; - iCls = - ((kTextLayoutCodeProperties[(FX_WORD)wch] & FX_BIDICLASSBITSMASK) >> - FX_BIDICLASSBITS); - classes.SetAt(i, gc_FX_BidiNTypes[iCls]); - } - } -} -int32_t FX_BidiResolveExplicit(int32_t iBaseLevel, - int32_t iDirection, - CFX_Int32Array& classes, - CFX_Int32Array& levels, - int32_t iStart, - int32_t iCount, - int32_t iNest) { - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL && iNest >= 0); - FXSYS_assert(classes.GetSize() == levels.GetSize()); - FXSYS_assert(iStart >= 0 && iStart < classes.GetSize()); - FXSYS_assert(iCount >= 0 && iStart + iCount <= classes.GetSize()); - if (iCount < 1) { - return 0; - } - - int32_t iSize = classes.GetSize(); - int32_t i = iStart, iCur, iCls; - for (; i < iSize && iCount > 0; i++, iCount--) { - iCur = iCls = classes.GetAt(i); - - if (iDirection != FX_BIDICLASS_N) { - iCls = iDirection; - } - if (iCur != FX_BIDICLASS_BN) { - classes.SetAt(i, iCls); - } - levels.SetAt(i, iBaseLevel); - } - return i - iStart; -} -const int32_t gc_FX_BidiWeakStates[][10] = { - {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWSxa, - FX_BWSao, FX_BWSao, FX_BWSao}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSxr, - FX_BWSro, FX_BWSro, FX_BWSrt}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSxl, - FX_BWSlo, FX_BWSlo, FX_BWSlt}, - {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWSao, - FX_BWSao, FX_BWSao, FX_BWSao}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSro, - FX_BWSro, FX_BWSro, FX_BWSrt}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlo, - FX_BWSlo, FX_BWSlo, FX_BWSlt}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSrt, - FX_BWSro, FX_BWSro, FX_BWSrt}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlt, - FX_BWSlo, FX_BWSlo, FX_BWSlt}, - {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWScn, - FX_BWSac, FX_BWSao, FX_BWSao}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSra, - FX_BWSrc, FX_BWSro, FX_BWSrt}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSre, - FX_BWSrs, FX_BWSrs, FX_BWSret}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSla, - FX_BWSlc, FX_BWSlo, FX_BWSlt}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSle, - FX_BWSls, FX_BWSls, FX_BWSlet}, - {FX_BWSao, FX_BWSxl, FX_BWSxr, FX_BWScn, FX_BWScn, FX_BWSxa, FX_BWSao, - FX_BWSao, FX_BWSao, FX_BWSao}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSro, - FX_BWSro, FX_BWSro, FX_BWSrt}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSro, - FX_BWSro, FX_BWSro, FX_BWSrt}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlo, - FX_BWSlo, FX_BWSlo, FX_BWSlt}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlo, - FX_BWSlo, FX_BWSlo, FX_BWSlt}, - {FX_BWSro, FX_BWSxl, FX_BWSxr, FX_BWSra, FX_BWSre, FX_BWSxa, FX_BWSret, - FX_BWSro, FX_BWSro, FX_BWSret}, - {FX_BWSlo, FX_BWSxl, FX_BWSxr, FX_BWSla, FX_BWSle, FX_BWSxa, FX_BWSlet, - FX_BWSlo, FX_BWSlo, FX_BWSlet}, -}; -const int32_t gc_FX_BidiWeakActions[][10] = { - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxA, FX_BWAxxR, - FX_BWAxxR, FX_BWAxxN, FX_BWAxxN, FX_BWAxxN}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, - FX_BWAxxR, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, - FX_BWAxxL, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxA, FX_BWAxxR, - FX_BWAxxN, FX_BWAxxN, FX_BWAxxN, FX_BWAxxN}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, - FX_BWAxxN, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, - FX_BWAxxN, FX_BWAxxN, FX_BWAxxN, FX_BWAxIx}, - {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAExE, FX_BWANxR, - FX_BWAxIx, FX_BWANxN, FX_BWANxN, FX_BWAxIx}, - {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWALxL, FX_BWANxR, - FX_BWAxIx, FX_BWANxN, FX_BWANxN, FX_BWAxIx}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxA, FX_BWAxxR, - FX_BWAxxA, FX_BWAxIx, FX_BWAxxN, FX_BWAxxN}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, - FX_BWAxxA, FX_BWAxIx, FX_BWAxxN, FX_BWAxIx}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, - FX_BWAxxE, FX_BWAxIx, FX_BWAxIx, FX_BWAxxE}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, - FX_BWAxxA, FX_BWAxIx, FX_BWAxxN, FX_BWAxIx}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, - FX_BWAxxL, FX_BWAxIx, FX_BWAxIx, FX_BWAxxL}, - {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAAxx, FX_BWAAxA, FX_BWANxR, - FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANxN}, - {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAAxx, FX_BWANxE, FX_BWANxR, - FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, - {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAExE, FX_BWANxR, - FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, - {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWAAxx, FX_BWANxL, FX_BWANxR, - FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, - {FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWANxx, FX_BWALxL, FX_BWANxR, - FX_BWANxN, FX_BWANxN, FX_BWANxN, FX_BWANIx}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxE, FX_BWAxxR, - FX_BWAxxE, FX_BWAxxN, FX_BWAxxN, FX_BWAxxE}, - {FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxx, FX_BWAxxL, FX_BWAxxR, - FX_BWAxxL, FX_BWAxxN, FX_BWAxxN, FX_BWAxxL}, -}; -void FX_BidiResolveWeak(int32_t iBaseLevel, - CFX_Int32Array& classes, - CFX_Int32Array& levels) { - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - FXSYS_assert(classes.GetSize() == levels.GetSize()); - int32_t iSize = classes.GetSize(); - if (iSize < 1) { - return; - } - iSize--; - int32_t iLevelCur = iBaseLevel; - int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BWSxr : FX_BWSxl; - int32_t i = 0, iCount = 0, iClsCur, iClsRun, iClsNew, iAction; - for (; i <= iSize; i++) { - iClsCur = classes.GetAt(i); - - FXSYS_assert(iClsCur <= FX_BIDICLASS_BN); - iAction = gc_FX_BidiWeakActions[iState][iClsCur]; - iClsRun = FX_BidiGetDeferredType(iAction); - if (iClsRun != FX_BIDIWEAKACTION_XX && iCount > 0) { - FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); - iCount = 0; - } - iClsNew = FX_BidiGetResolvedType(iAction); - if (iClsNew != FX_BIDIWEAKACTION_XX) { - classes.SetAt(i, iClsNew); - } - if (FX_BIDIWEAKACTION_IX & iAction) { - iCount++; - } - iState = gc_FX_BidiWeakStates[iState][iClsCur]; - } - iClsCur = FX_BidiDirection(iLevelCur); - iClsRun = FX_BidiGetDeferredType(gc_FX_BidiWeakActions[iState][iClsCur]); - if (iClsRun != FX_BIDIWEAKACTION_XX && iCount > 0) { - FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); - } -} -const int32_t gc_FX_BidiNeutralStates[][5] = { - {FX_BNSrn, FX_BNSl, FX_BNSr, FX_BNSr, FX_BNSr}, - {FX_BNSln, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, - {FX_BNSrn, FX_BNSl, FX_BNSr, FX_BNSr, FX_BNSr}, - {FX_BNSln, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, - {FX_BNSna, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, - {FX_BNSna, FX_BNSl, FX_BNSr, FX_BNSa, FX_BNSl}, -}; -const int32_t gc_FX_BidiNeutralActions[][5] = { - {FX_BNAIn, 0, 0, 0, 0}, - {FX_BNAIn, 0, 0, 0, FX_BCL}, - {FX_BNAIn, FX_BNAEn, FX_BNARn, FX_BNARn, FX_BNARn}, - {FX_BNAIn, FX_BNALn, FX_BNAEn, FX_BNAEn, FX_BNALnL}, - {FX_BNAIn, 0, 0, 0, FX_BCL}, - {FX_BNAIn, FX_BNAEn, FX_BNARn, FX_BNARn, FX_BNAEn}, -}; -int32_t FX_BidiGetDeferredNeutrals(int32_t iAction, int32_t iLevel) { - iAction = (iAction >> 4) & 0xF; - if (iAction == (FX_BIDINEUTRALACTION_En >> 4)) { - return FX_BidiDirection(iLevel); - } else { - return iAction; - } -} -int32_t FX_BidiGetResolvedNeutrals(int32_t iAction) { - iAction = (iAction & 0xF); - if (iAction == FX_BIDINEUTRALACTION_In) { - return 0; - } else { - return iAction; - } -} -void FX_BidiResolveNeutrals(int32_t iBaseLevel, - CFX_Int32Array& classes, - const CFX_Int32Array& levels) { - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - FXSYS_assert(classes.GetSize() == levels.GetSize()); - int32_t iSize = classes.GetSize(); - if (iSize < 1) { - return; - } - iSize--; - int32_t iLevel = iBaseLevel; - int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BNSr : FX_BNSl; - int32_t i = 0, iCount = 0, iClsCur, iClsRun, iClsNew, iAction; - for (; i <= iSize; i++) { - iClsCur = classes.GetAt(i); - if (iClsCur == FX_BIDICLASS_BN) { - if (iCount) { - iCount++; - } - continue; - } - FXSYS_assert(iClsCur < FX_BIDICLASS_AL); - iAction = gc_FX_BidiNeutralActions[iState][iClsCur]; - iClsRun = FX_BidiGetDeferredNeutrals(iAction, iLevel); - if (iClsRun != FX_BIDICLASS_N && iCount > 0) { - FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); - iCount = 0; - } - iClsNew = FX_BidiGetResolvedNeutrals(iAction); - if (iClsNew != FX_BIDICLASS_N) { - classes.SetAt(i, iClsNew); - } - if (FX_BIDINEUTRALACTION_In & iAction) { - iCount++; - } - iState = gc_FX_BidiNeutralStates[iState][iClsCur]; - iLevel = levels.GetAt(i); - } - iClsCur = FX_BidiDirection(iLevel); - iClsRun = FX_BidiGetDeferredNeutrals( - gc_FX_BidiNeutralActions[iState][iClsCur], iLevel); - if (iClsRun != FX_BIDICLASS_N && iCount > 0) { - FX_BidiSetDeferredRun(classes, i, iCount, iClsRun); - } -} -const int32_t gc_FX_BidiAddLevel[][4] = { - {0, 1, 2, 2}, - {1, 0, 1, 1}, -}; -void FX_BidiResolveImplicit(const CFX_Int32Array& classes, - CFX_Int32Array& levels) { - FXSYS_assert(classes.GetSize() == levels.GetSize()); - int32_t iSize = classes.GetSize(); - if (iSize < 1) { - return; - } - iSize--; - int32_t iCls, iLevel; - for (int32_t i = 0; i <= iSize; i++) { - iCls = classes.GetAt(i); - if (iCls == FX_BIDICLASS_BN) { - continue; - } - FXSYS_assert(iCls > FX_BIDICLASS_ON && iCls < FX_BIDICLASS_AL); - iLevel = levels.GetAt(i); - iLevel += gc_FX_BidiAddLevel[FX_IsOdd(iLevel)][iCls - 1]; - levels.SetAt(i, iLevel); - } -} -void FX_BidiResolveWhitespace(int32_t iBaseLevel, - const CFX_Int32Array& classes, - CFX_Int32Array& levels) { - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - FXSYS_assert(classes.GetSize() == levels.GetSize()); - int32_t iSize = classes.GetSize(); - if (iSize < 1) { - return; - } - iSize--; - int32_t iLevel = iBaseLevel; - int32_t i = 0, iCount = 0; - for (; i <= iSize; i++) { - switch (classes.GetAt(i)) { - case FX_BIDICLASS_WS: - iCount++; - break; - case FX_BIDICLASS_RLE: - case FX_BIDICLASS_LRE: - case FX_BIDICLASS_LRO: - case FX_BIDICLASS_RLO: - case FX_BIDICLASS_PDF: - case FX_BIDICLASS_BN: - levels.SetAt(i, iLevel); - iCount++; - break; - case FX_BIDICLASS_S: - case FX_BIDICLASS_B: - if (iCount > 0) { - FX_BidiSetDeferredRun(levels, i, iCount, iBaseLevel); - } - levels.SetAt(i, iBaseLevel); - iCount = 0; - break; - default: - iCount = 0; - break; - } - iLevel = levels.GetAt(i); - } - if (iCount > 0) { - FX_BidiSetDeferredRun(levels, i, iCount, iBaseLevel); - } -} -int32_t FX_BidiReorderLevel(int32_t iBaseLevel, - CFX_WideString& wsText, - const CFX_Int32Array& levels, - int32_t iStart, - FX_BOOL bReverse) { - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - FXSYS_assert(wsText.GetLength() == levels.GetSize()); - FXSYS_assert(iStart >= 0 && iStart < wsText.GetLength()); - int32_t iSize = wsText.GetLength(); - if (iSize < 1) { - return 0; - } - bReverse = bReverse || FX_IsOdd(iBaseLevel); - int32_t i = iStart, iLevel; - for (; i < iSize; i++) { - if ((iLevel = levels.GetAt(i)) == iBaseLevel) { - continue; - } - if (iLevel < iBaseLevel) { - break; - } - i += FX_BidiReorderLevel(iBaseLevel + 1, wsText, levels, i, bReverse) - 1; - } - int32_t iCount = i - iStart; - if (bReverse && iCount > 1) { - FX_BidiReverseString(wsText, iStart, iCount); - } - return iCount; -} -void FX_BidiReorder(int32_t iBaseLevel, - CFX_WideString& wsText, - const CFX_Int32Array& levels) { - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - FXSYS_assert(wsText.GetLength() == levels.GetSize()); - int32_t iSize = wsText.GetLength(); - if (iSize < 1) { - return; - } - int32_t i = 0; - while (i < iSize) { - i += FX_BidiReorderLevel(iBaseLevel, wsText, levels, i, FALSE); - } -} -void FX_BidiLine(CFX_WideString& wsText, int32_t iBaseLevel) { - int32_t iLength = wsText.GetLength(); - if (iLength < 2) { - return; - } - CFX_Int32Array classes, levels; - classes.SetAtGrow(iLength - 1, 0); - levels.SetAtGrow(iLength - 1, 0); - FX_BidiClassify(wsText, classes, FALSE); - FX_BidiResolveExplicit(iBaseLevel, FX_BIDICLASS_N, classes, levels, 0, - iLength, 0); - FX_BidiResolveWeak(iBaseLevel, classes, levels); - FX_BidiResolveNeutrals(iBaseLevel, classes, levels); - FX_BidiResolveImplicit(classes, levels); - FX_BidiClassify(wsText, classes, TRUE); - FX_BidiResolveWhitespace(iBaseLevel, classes, levels); - FX_BidiReorder(iBaseLevel, wsText, levels); - classes.RemoveAll(); - levels.RemoveAll(); -} -template -class CFX_BidiLineTemplate { - public: - void FX_BidiReverseString(CFX_ArrayTemplate& chars, - int32_t iStart, - int32_t iCount) { - FXSYS_assert(iStart > -1 && iStart < chars.GetSize()); - FXSYS_assert(iCount >= 0 && iStart + iCount <= chars.GetSize()); - baseType *pStart, *pEnd; - int32_t iEnd = iStart + iCount - 1, iTemp; - while (iStart < iEnd) { - pStart = chars.GetDataPtr(iStart++); - pEnd = chars.GetDataPtr(iEnd--); - iTemp = pStart->m_iBidiPos; - pStart->m_iBidiPos = pEnd->m_iBidiPos; - pEnd->m_iBidiPos = iTemp; - } - } - void FX_BidiSetDeferredRun(CFX_ArrayTemplate& chars, - FX_BOOL bClass, - int32_t iStart, - int32_t iCount, - int32_t iValue) { - FXSYS_assert(iStart > -1 && iStart <= chars.GetSize()); - FXSYS_assert(iStart - iCount > -1); - baseType* pTC; - int32_t iLast = iStart - iCount; - if (bClass) { - for (int32_t i = iStart - 1; i >= iLast; i--) { - pTC = chars.GetDataPtr(i); - pTC->m_iBidiClass = (int16_t)iValue; - } - } else { - for (int32_t i = iStart - 1; i >= iLast; i--) { - pTC = chars.GetDataPtr(i); - pTC->m_iBidiLevel = (int16_t)iValue; - } - } - } - void FX_BidiClassify(CFX_ArrayTemplate& chars, - int32_t iCount, - FX_BOOL bWS) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - baseType* pTC; - if (bWS) { - for (int32_t i = 0; i < iCount; i++) { - pTC = chars.GetDataPtr(i); - pTC->m_iBidiClass = - (int16_t)(pTC->m_dwCharProps & FX_BIDICLASSBITSMASK) >> - FX_BIDICLASSBITS; - } - } else { - for (int32_t i = 0; i < iCount; i++) { - pTC = chars.GetDataPtr(i); - pTC->m_iBidiClass = (int16_t) - gc_FX_BidiNTypes[(pTC->m_dwCharProps & FX_BIDICLASSBITSMASK) >> - FX_BIDICLASSBITS]; - } - } - } - void FX_BidiResolveExplicit(CFX_ArrayTemplate& chars, - int32_t iCount, - int32_t iBaseLevel) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - if (iCount < 1) { - return; - } - baseType* pTC; - for (int32_t i = 0; i < iCount; i++) { - pTC = chars.GetDataPtr(i); - pTC->m_iBidiLevel = (int16_t)iBaseLevel; - } - } - void FX_BidiResolveWeak(CFX_ArrayTemplate& chars, - int32_t iCount, - int32_t iBaseLevel) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - iCount--; - if (iCount < 1) { - return; - } - baseType *pTC, *pTCNext; - int32_t iLevelCur = iBaseLevel; - int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BWSxr : FX_BWSxl; - int32_t i = 0, iNum = 0, iClsCur, iClsRun, iClsNew, iAction; - for (; i <= iCount; i++) { - pTC = chars.GetDataPtr(i); - iClsCur = pTC->m_iBidiClass; - if (iClsCur == FX_BIDICLASS_BN) { - pTC->m_iBidiLevel = (int16_t)iLevelCur; - if (i == iCount && iLevelCur != iBaseLevel) { - iClsCur = FX_BidiDirection(iLevelCur); - pTC->m_iBidiClass = (int16_t)iClsCur; - } else if (i < iCount) { - pTCNext = chars.GetDataPtr(i + 1); - int32_t iLevelNext, iLevelNew; - iClsNew = pTCNext->m_iBidiClass; - iLevelNext = pTCNext->m_iBidiLevel; - if (iClsNew != FX_BIDICLASS_BN && iLevelCur != iLevelNext) { - iLevelNew = iLevelNext; - if (iLevelCur > iLevelNew) { - iLevelNew = iLevelCur; - } - pTC->m_iBidiLevel = (int16_t)iLevelNew; - iClsCur = FX_BidiDirection(iLevelNew); - pTC->m_iBidiClass = (int16_t)iClsCur; - iLevelCur = iLevelNext; - } else { - if (iNum > 0) { - iNum++; - } - continue; - } - } else { - if (iNum > 0) { - iNum++; - } - continue; - } - } - FXSYS_assert(iClsCur <= FX_BIDICLASS_BN); - iAction = gc_FX_BidiWeakActions[iState][iClsCur]; - iClsRun = FX_BidiGetDeferredType(iAction); - if (iClsRun != FX_BIDIWEAKACTION_XX && iNum > 0) { - FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); - iNum = 0; - } - iClsNew = FX_BidiGetResolvedType(iAction); - if (iClsNew != FX_BIDIWEAKACTION_XX) { - pTC->m_iBidiClass = (int16_t)iClsNew; - } - if (FX_BIDIWEAKACTION_IX & iAction) { - iNum++; - } - iState = gc_FX_BidiWeakStates[iState][iClsCur]; - } - if (iNum > 0) { - iClsCur = FX_BidiDirection(iBaseLevel); - iClsRun = FX_BidiGetDeferredType(gc_FX_BidiWeakActions[iState][iClsCur]); - if (iClsRun != FX_BIDIWEAKACTION_XX) { - FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); - } - } - } - void FX_BidiResolveNeutrals(CFX_ArrayTemplate& chars, - int32_t iCount, - int32_t iBaseLevel) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - iCount--; - if (iCount < 1) { - return; - } - baseType* pTC; - int32_t iLevel = iBaseLevel; - int32_t iState = FX_IsOdd(iBaseLevel) ? FX_BNSr : FX_BNSl; - int32_t i = 0, iNum = 0, iClsCur, iClsRun, iClsNew, iAction; - for (; i <= iCount; i++) { - pTC = chars.GetDataPtr(i); - iClsCur = pTC->m_iBidiClass; - if (iClsCur == FX_BIDICLASS_BN) { - if (iNum) { - iNum++; - } - continue; - } - FXSYS_assert(iClsCur < FX_BIDICLASS_AL); - iAction = gc_FX_BidiNeutralActions[iState][iClsCur]; - iClsRun = FX_BidiGetDeferredNeutrals(iAction, iLevel); - if (iClsRun != FX_BIDICLASS_N && iNum > 0) { - FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); - iNum = 0; - } - iClsNew = FX_BidiGetResolvedNeutrals(iAction); - if (iClsNew != FX_BIDICLASS_N) { - pTC->m_iBidiClass = (int16_t)iClsNew; - } - if (FX_BIDINEUTRALACTION_In & iAction) { - iNum++; - } - iState = gc_FX_BidiNeutralStates[iState][iClsCur]; - iLevel = pTC->m_iBidiLevel; - } - if (iNum > 0) { - iClsCur = FX_BidiDirection(iLevel); - iClsRun = FX_BidiGetDeferredNeutrals( - gc_FX_BidiNeutralActions[iState][iClsCur], iLevel); - if (iClsRun != FX_BIDICLASS_N) { - FX_BidiSetDeferredRun(chars, TRUE, i, iNum, iClsRun); - } - } - } - void FX_BidiResolveImplicit(CFX_ArrayTemplate& chars, - int32_t iCount) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - baseType* pTC; - int32_t iCls, iLevel; - for (int32_t i = 0; i < iCount; i++) { - pTC = chars.GetDataPtr(i); - iCls = pTC->m_iBidiClass; - if (iCls == FX_BIDICLASS_BN) { - continue; - } - FXSYS_assert(iCls > FX_BIDICLASS_ON && iCls < FX_BIDICLASS_AL); - iLevel = pTC->m_iBidiLevel; - iLevel += gc_FX_BidiAddLevel[FX_IsOdd(iLevel)][iCls - 1]; - pTC->m_iBidiLevel = (int16_t)iLevel; - } - } - void FX_BidiResolveWhitespace(CFX_ArrayTemplate& chars, - int32_t iCount, - int32_t iBaseLevel) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - if (iCount < 1) { - return; - } - iCount--; - int32_t iLevel = iBaseLevel; - int32_t i = 0, iNum = 0; - baseType* pTC; - for (; i <= iCount; i++) { - pTC = chars.GetDataPtr(i); - switch (pTC->m_iBidiClass) { - case FX_BIDICLASS_WS: - iNum++; - break; - case FX_BIDICLASS_RLE: - case FX_BIDICLASS_LRE: - case FX_BIDICLASS_LRO: - case FX_BIDICLASS_RLO: - case FX_BIDICLASS_PDF: - case FX_BIDICLASS_BN: - pTC->m_iBidiLevel = (int16_t)iLevel; - iNum++; - break; - case FX_BIDICLASS_S: - case FX_BIDICLASS_B: - if (iNum > 0) { - FX_BidiSetDeferredRun(chars, FALSE, i, iNum, iBaseLevel); - } - pTC->m_iBidiLevel = (int16_t)iBaseLevel; - iNum = 0; - break; - default: - iNum = 0; - break; - } - iLevel = pTC->m_iBidiLevel; - } - if (iNum > 0) { - FX_BidiSetDeferredRun(chars, FALSE, i, iNum, iBaseLevel); - } - } - int32_t FX_BidiReorderLevel(CFX_ArrayTemplate& chars, - int32_t iCount, - int32_t iBaseLevel, - int32_t iStart, - FX_BOOL bReverse) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - FXSYS_assert(iStart >= 0 && iStart < iCount); - if (iCount < 1) { - return 0; - } - baseType* pTC; - bReverse = bReverse || FX_IsOdd(iBaseLevel); - int32_t i = iStart, iLevel; - for (; i < iCount; i++) { - pTC = chars.GetDataPtr(i); - if ((iLevel = pTC->m_iBidiLevel) == iBaseLevel) { - continue; - } - if (iLevel < iBaseLevel) { - break; - } - i += FX_BidiReorderLevel(chars, iCount, iBaseLevel + 1, i, bReverse) - 1; - } - int32_t iNum = i - iStart; - if (bReverse && iNum > 1) { - FX_BidiReverseString(chars, iStart, iNum); - } - return iNum; - } - void FX_BidiReorder(CFX_ArrayTemplate& chars, - int32_t iCount, - int32_t iBaseLevel) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - FXSYS_assert(iBaseLevel >= 0 && iBaseLevel <= FX_BIDIMAXLEVEL); - int32_t i = 0; - while (i < iCount) { - i += FX_BidiReorderLevel(chars, iCount, iBaseLevel, i, FALSE); - } - } - void FX_BidiPosition(CFX_ArrayTemplate& chars, int32_t iCount) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - baseType* pTC; - int32_t i = 0; - while (i < iCount) { - pTC = chars.GetDataPtr(i); - pTC = chars.GetDataPtr(pTC->m_iBidiPos); - pTC->m_iBidiOrder = i++; - } - } - - void FX_BidiLine(CFX_ArrayTemplate& chars, - int32_t iCount, - int32_t iBaseLevel) { - FXSYS_assert(iCount > -1 && iCount <= chars.GetSize()); - if (iCount < 2) { - return; - } - FX_BidiClassify(chars, iCount, FALSE); - FX_BidiResolveExplicit(chars, iCount, iBaseLevel); - FX_BidiResolveWeak(chars, iCount, iBaseLevel); - FX_BidiResolveNeutrals(chars, iCount, iBaseLevel); - FX_BidiResolveImplicit(chars, iCount); - FX_BidiClassify(chars, iCount, TRUE); - FX_BidiResolveWhitespace(chars, iCount, iBaseLevel); - FX_BidiReorder(chars, iCount, iBaseLevel); - FX_BidiPosition(chars, iCount); - } -}; -void FX_BidiLine(CFX_TxtCharArray& chars, int32_t iCount, int32_t iBaseLevel) { - CFX_BidiLineTemplate blt; - blt.FX_BidiLine(chars, iCount, iBaseLevel); -} -void FX_BidiLine(CFX_RTFCharArray& chars, int32_t iCount, int32_t iBaseLevel) { - CFX_BidiLineTemplate blt; - blt.FX_BidiLine(chars, iCount, iBaseLevel); -} diff --git a/core/src/fxcrt/fx_arabic.h b/core/src/fxcrt/fx_arabic.h deleted file mode 100644 index 9a1758683b..0000000000 --- a/core/src/fxcrt/fx_arabic.h +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCRT_FX_ARABIC_H_ -#define CORE_SRC_FXCRT_FX_ARABIC_H_ - -#include "core/include/fxcrt/fx_arb.h" - -class CFX_ArabicChar : public IFX_ArabicChar { - public: - virtual void Release() { delete this; } - virtual FX_BOOL IsArabicChar(FX_WCHAR wch) const; - virtual FX_BOOL IsArabicFormChar(FX_WCHAR wch) const; - - virtual FX_WCHAR GetFormChar(FX_WCHAR wch, - FX_WCHAR prev = 0, - FX_WCHAR next = 0) const; - virtual FX_WCHAR GetFormChar(const CFX_Char* cur, - const CFX_Char* prev, - const CFX_Char* next) const; - - protected: - const FX_ARBFORMTABLE* ParseChar(const CFX_Char* pTC, - FX_WCHAR& wChar, - FX_CHARTYPE& eType) const; -}; -void FX_BidiReverseString(CFX_WideString& wsText, - int32_t iStart, - int32_t iCount); -void FX_BidiSetDeferredRun(CFX_Int32Array& values, - int32_t iStart, - int32_t iCount, - int32_t iValue); -#define FX_BCON FX_BIDICLASS_ON -#define FX_BCL FX_BIDICLASS_L -#define FX_BCR FX_BIDICLASS_R -#define FX_BCAN FX_BIDICLASS_AN -#define FX_BCEN FX_BIDICLASS_EN -#define FX_BCAL FX_BIDICLASS_AL -#define FX_BCNSM FX_BIDICLASS_NSM -#define FX_BCCS FX_BIDICLASS_CS -#define FX_BCES FX_BIDICLASS_ES -#define FX_BCET FX_BIDICLASS_ET -#define FX_BCBN FX_BIDICLASS_BN -#define FX_BCS FX_BIDICLASS_S -#define FX_BCWS FX_BIDICLASS_WS -#define FX_BCB FX_BIDICLASS_B -#define FX_BCRLO FX_BIDICLASS_RLO -#define FX_BCRLE FX_BIDICLASS_RLE -#define FX_BCLRO FX_BIDICLASS_LRO -#define FX_BCLRE FX_BIDICLASS_LRE -#define FX_BCPDF FX_BIDICLASS_PDF -#define FX_BCN FX_BIDICLASS_N -void FX_BidiClassify(const CFX_WideString& wsText, - CFX_Int32Array& classes, - FX_BOOL bWS = FALSE); -#define FX_BIDIMAXLEVEL 61 -#define FX_BidiGreaterEven(a) (FX_IsOdd(a) ? ((a) + 1) : ((a) + 2)) -#define FX_BidiGreaterOdd(a) (FX_IsOdd(a) ? ((a) + 2) : ((a) + 1)) -int32_t FX_BidiResolveExplicit(int32_t iBaseLevel, - int32_t iDirection, - CFX_Int32Array& classes, - CFX_Int32Array& levels, - int32_t iStart, - int32_t iCount, - int32_t iNest = 0); -#define FX_BidiDirection(a) (FX_IsOdd(a) ? FX_BIDICLASS_R : FX_BIDICLASS_L) -enum FX_BIDIWEAKSTATE { - FX_BIDIWEAKSTATE_xa = 0, - FX_BIDIWEAKSTATE_xr, - FX_BIDIWEAKSTATE_xl, - FX_BIDIWEAKSTATE_ao, - FX_BIDIWEAKSTATE_ro, - FX_BIDIWEAKSTATE_lo, - FX_BIDIWEAKSTATE_rt, - FX_BIDIWEAKSTATE_lt, - FX_BIDIWEAKSTATE_cn, - FX_BIDIWEAKSTATE_ra, - FX_BIDIWEAKSTATE_re, - FX_BIDIWEAKSTATE_la, - FX_BIDIWEAKSTATE_le, - FX_BIDIWEAKSTATE_ac, - FX_BIDIWEAKSTATE_rc, - FX_BIDIWEAKSTATE_rs, - FX_BIDIWEAKSTATE_lc, - FX_BIDIWEAKSTATE_ls, - FX_BIDIWEAKSTATE_ret, - FX_BIDIWEAKSTATE_let, -}; -#define FX_BWSxa FX_BIDIWEAKSTATE_xa -#define FX_BWSxr FX_BIDIWEAKSTATE_xr -#define FX_BWSxl FX_BIDIWEAKSTATE_xl -#define FX_BWSao FX_BIDIWEAKSTATE_ao -#define FX_BWSro FX_BIDIWEAKSTATE_ro -#define FX_BWSlo FX_BIDIWEAKSTATE_lo -#define FX_BWSrt FX_BIDIWEAKSTATE_rt -#define FX_BWSlt FX_BIDIWEAKSTATE_lt -#define FX_BWScn FX_BIDIWEAKSTATE_cn -#define FX_BWSra FX_BIDIWEAKSTATE_ra -#define FX_BWSre FX_BIDIWEAKSTATE_re -#define FX_BWSla FX_BIDIWEAKSTATE_la -#define FX_BWSle FX_BIDIWEAKSTATE_le -#define FX_BWSac FX_BIDIWEAKSTATE_ac -#define FX_BWSrc FX_BIDIWEAKSTATE_rc -#define FX_BWSrs FX_BIDIWEAKSTATE_rs -#define FX_BWSlc FX_BIDIWEAKSTATE_lc -#define FX_BWSls FX_BIDIWEAKSTATE_ls -#define FX_BWSret FX_BIDIWEAKSTATE_ret -#define FX_BWSlet FX_BIDIWEAKSTATE_let -enum FX_BIDIWEAKACTION { - FX_BIDIWEAKACTION_IX = 0x100, - FX_BIDIWEAKACTION_XX = 0x0F, - FX_BIDIWEAKACTION_xxx = (0x0F << 4) + 0x0F, - FX_BIDIWEAKACTION_xIx = 0x100 + FX_BIDIWEAKACTION_xxx, - FX_BIDIWEAKACTION_xxN = (0x0F << 4) + FX_BIDICLASS_ON, - FX_BIDIWEAKACTION_xxE = (0x0F << 4) + FX_BIDICLASS_EN, - FX_BIDIWEAKACTION_xxA = (0x0F << 4) + FX_BIDICLASS_AN, - FX_BIDIWEAKACTION_xxR = (0x0F << 4) + FX_BIDICLASS_R, - FX_BIDIWEAKACTION_xxL = (0x0F << 4) + FX_BIDICLASS_L, - FX_BIDIWEAKACTION_Nxx = (FX_BIDICLASS_ON << 4) + 0x0F, - FX_BIDIWEAKACTION_Axx = (FX_BIDICLASS_AN << 4) + 0x0F, - FX_BIDIWEAKACTION_ExE = (FX_BIDICLASS_EN << 4) + FX_BIDICLASS_EN, - FX_BIDIWEAKACTION_NIx = (FX_BIDICLASS_ON << 4) + 0x0F + 0x100, - FX_BIDIWEAKACTION_NxN = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_ON, - FX_BIDIWEAKACTION_NxR = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_R, - FX_BIDIWEAKACTION_NxE = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_EN, - FX_BIDIWEAKACTION_AxA = (FX_BIDICLASS_AN << 4) + FX_BIDICLASS_AN, - FX_BIDIWEAKACTION_NxL = (FX_BIDICLASS_ON << 4) + FX_BIDICLASS_L, - FX_BIDIWEAKACTION_LxL = (FX_BIDICLASS_L << 4) + FX_BIDICLASS_L, - FX_BIDIWEAKACTION_xIL = (0x0F << 4) + FX_BIDICLASS_L + 0x100, - FX_BIDIWEAKACTION_AxR = (FX_BIDICLASS_AN << 4) + FX_BIDICLASS_R, - FX_BIDIWEAKACTION_Lxx = (FX_BIDICLASS_L << 4) + 0x0F, -}; -#define FX_BWAIX FX_BIDIWEAKACTION_IX -#define FX_BWAXX FX_BIDIWEAKACTION_XX -#define FX_BWAxxx FX_BIDIWEAKACTION_xxx -#define FX_BWAxIx FX_BIDIWEAKACTION_xIx -#define FX_BWAxxN FX_BIDIWEAKACTION_xxN -#define FX_BWAxxE FX_BIDIWEAKACTION_xxE -#define FX_BWAxxA FX_BIDIWEAKACTION_xxA -#define FX_BWAxxR FX_BIDIWEAKACTION_xxR -#define FX_BWAxxL FX_BIDIWEAKACTION_xxL -#define FX_BWANxx FX_BIDIWEAKACTION_Nxx -#define FX_BWAAxx FX_BIDIWEAKACTION_Axx -#define FX_BWAExE FX_BIDIWEAKACTION_ExE -#define FX_BWANIx FX_BIDIWEAKACTION_NIx -#define FX_BWANxN FX_BIDIWEAKACTION_NxN -#define FX_BWANxR FX_BIDIWEAKACTION_NxR -#define FX_BWANxE FX_BIDIWEAKACTION_NxE -#define FX_BWAAxA FX_BIDIWEAKACTION_AxA -#define FX_BWANxL FX_BIDIWEAKACTION_NxL -#define FX_BWALxL FX_BIDIWEAKACTION_LxL -#define FX_BWAxIL FX_BIDIWEAKACTION_xIL -#define FX_BWAAxR FX_BIDIWEAKACTION_AxR -#define FX_BWALxx FX_BIDIWEAKACTION_Lxx -#define FX_BidiGetDeferredType(a) (((a) >> 4) & 0x0F) -#define FX_BidiGetResolvedType(a) ((a)&0x0F) -void FX_BidiResolveWeak(int32_t iBaseLevel, - CFX_Int32Array& classes, - CFX_Int32Array& levels); -enum FX_BIDINEUTRALSTATE { - FX_BIDINEUTRALSTATE_r = 0, - FX_BIDINEUTRALSTATE_l, - FX_BIDINEUTRALSTATE_rn, - FX_BIDINEUTRALSTATE_ln, - FX_BIDINEUTRALSTATE_a, - FX_BIDINEUTRALSTATE_na, -}; -#define FX_BNSr FX_BIDINEUTRALSTATE_r -#define FX_BNSl FX_BIDINEUTRALSTATE_l -#define FX_BNSrn FX_BIDINEUTRALSTATE_rn -#define FX_BNSln FX_BIDINEUTRALSTATE_ln -#define FX_BNSa FX_BIDINEUTRALSTATE_a -#define FX_BNSna FX_BIDINEUTRALSTATE_na -enum FX_BIDINEUTRALACTION { - FX_BIDINEUTRALACTION_nL = FX_BIDICLASS_L, - FX_BIDINEUTRALACTION_En = (FX_BIDICLASS_AN << 4), - FX_BIDINEUTRALACTION_Rn = (FX_BIDICLASS_R << 4), - FX_BIDINEUTRALACTION_Ln = (FX_BIDICLASS_L << 4), - FX_BIDINEUTRALACTION_In = FX_BIDIWEAKACTION_IX, - FX_BIDINEUTRALACTION_LnL = (FX_BIDICLASS_L << 4) + FX_BIDICLASS_L, -}; -#define FX_BNAnL FX_BIDINEUTRALACTION_nL -#define FX_BNAEn FX_BIDINEUTRALACTION_En -#define FX_BNARn FX_BIDINEUTRALACTION_Rn -#define FX_BNALn FX_BIDINEUTRALACTION_Ln -#define FX_BNAIn FX_BIDINEUTRALACTION_In -#define FX_BNALnL FX_BIDINEUTRALACTION_LnL -int32_t FX_BidiGetDeferredNeutrals(int32_t iAction, int32_t iLevel); -int32_t FX_BidiGetResolvedNeutrals(int32_t iAction); -void FX_BidiResolveNeutrals(int32_t iBaseLevel, - CFX_Int32Array& classes, - const CFX_Int32Array& levels); -void FX_BidiResolveImplicit(const CFX_Int32Array& classes, - CFX_Int32Array& levels); -void FX_BidiResolveWhitespace(int32_t iBaseLevel, - const CFX_Int32Array& classes, - CFX_Int32Array& levels); -int32_t FX_BidiReorderLevel(int32_t iBaseLevel, - CFX_WideString& wsText, - const CFX_Int32Array& levels, - int32_t iStart, - FX_BOOL bReverse = FALSE); -void FX_BidiReorder(int32_t iBaseLevel, - CFX_WideString& wsText, - const CFX_Int32Array& levels); - -#endif // CORE_SRC_FXCRT_FX_ARABIC_H_ diff --git a/core/src/fxcrt/fx_basic_array.cpp b/core/src/fxcrt/fx_basic_array.cpp deleted file mode 100644 index 18e2bd26d2..0000000000 --- a/core/src/fxcrt/fx_basic_array.cpp +++ /dev/null @@ -1,342 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_basic.h" -#include "third_party/base/numerics/safe_math.h" - -CFX_BasicArray::CFX_BasicArray(int unit_size) - : m_pData(NULL), m_nSize(0), m_nMaxSize(0) { - if (unit_size < 0 || unit_size > (1 << 28)) { - m_nUnitSize = 4; - } else { - m_nUnitSize = unit_size; - } -} -CFX_BasicArray::~CFX_BasicArray() { - FX_Free(m_pData); -} -FX_BOOL CFX_BasicArray::SetSize(int nNewSize) { - if (nNewSize <= 0) { - FX_Free(m_pData); - m_pData = NULL; - m_nSize = m_nMaxSize = 0; - return 0 == nNewSize; - } - - if (!m_pData) { - pdfium::base::CheckedNumeric totalSize = nNewSize; - totalSize *= m_nUnitSize; - if (!totalSize.IsValid()) { - m_nSize = m_nMaxSize = 0; - return FALSE; - } - m_pData = FX_Alloc(uint8_t, totalSize.ValueOrDie()); - m_nSize = m_nMaxSize = nNewSize; - } else if (nNewSize <= m_nMaxSize) { - if (nNewSize > m_nSize) { - FXSYS_memset(m_pData + m_nSize * m_nUnitSize, 0, - (nNewSize - m_nSize) * m_nUnitSize); - } - m_nSize = nNewSize; - } else { - int nNewMax = nNewSize < m_nMaxSize ? m_nMaxSize : nNewSize; - pdfium::base::CheckedNumeric totalSize = nNewMax; - totalSize *= m_nUnitSize; - if (!totalSize.IsValid() || nNewMax < m_nSize) { - return FALSE; - } - uint8_t* pNewData = FX_Realloc(uint8_t, m_pData, totalSize.ValueOrDie()); - if (!pNewData) { - return FALSE; - } - FXSYS_memset(pNewData + m_nSize * m_nUnitSize, 0, - (nNewMax - m_nSize) * m_nUnitSize); - m_pData = pNewData; - m_nSize = nNewSize; - m_nMaxSize = nNewMax; - } - return TRUE; -} -FX_BOOL CFX_BasicArray::Append(const CFX_BasicArray& src) { - int nOldSize = m_nSize; - pdfium::base::CheckedNumeric newSize = m_nSize; - newSize += src.m_nSize; - if (m_nUnitSize != src.m_nUnitSize || !newSize.IsValid() || - !SetSize(newSize.ValueOrDie())) { - return FALSE; - } - - FXSYS_memcpy(m_pData + nOldSize * m_nUnitSize, src.m_pData, - src.m_nSize * m_nUnitSize); - return TRUE; -} -FX_BOOL CFX_BasicArray::Copy(const CFX_BasicArray& src) { - if (!SetSize(src.m_nSize)) { - return FALSE; - } - FXSYS_memcpy(m_pData, src.m_pData, src.m_nSize * m_nUnitSize); - return TRUE; -} -uint8_t* CFX_BasicArray::InsertSpaceAt(int nIndex, int nCount) { - if (nIndex < 0 || nCount <= 0) { - return NULL; - } - if (nIndex >= m_nSize) { - if (!SetSize(nIndex + nCount)) { - return NULL; - } - } else { - int nOldSize = m_nSize; - if (!SetSize(m_nSize + nCount)) { - return NULL; - } - FXSYS_memmove(m_pData + (nIndex + nCount) * m_nUnitSize, - m_pData + nIndex * m_nUnitSize, - (nOldSize - nIndex) * m_nUnitSize); - FXSYS_memset(m_pData + nIndex * m_nUnitSize, 0, nCount * m_nUnitSize); - } - return m_pData + nIndex * m_nUnitSize; -} -FX_BOOL CFX_BasicArray::RemoveAt(int nIndex, int nCount) { - if (nIndex < 0 || nCount <= 0 || m_nSize < nIndex + nCount) { - return FALSE; - } - int nMoveCount = m_nSize - (nIndex + nCount); - if (nMoveCount) { - FXSYS_memmove(m_pData + nIndex * m_nUnitSize, - m_pData + (nIndex + nCount) * m_nUnitSize, - nMoveCount * m_nUnitSize); - } - m_nSize -= nCount; - return TRUE; -} -FX_BOOL CFX_BasicArray::InsertAt(int nStartIndex, - const CFX_BasicArray* pNewArray) { - if (!pNewArray) { - return FALSE; - } - if (pNewArray->m_nSize == 0) { - return TRUE; - } - if (!InsertSpaceAt(nStartIndex, pNewArray->m_nSize)) { - return FALSE; - } - FXSYS_memcpy(m_pData + nStartIndex * m_nUnitSize, pNewArray->m_pData, - pNewArray->m_nSize * m_nUnitSize); - return TRUE; -} -const void* CFX_BasicArray::GetDataPtr(int index) const { - if (index < 0 || index >= m_nSize || !m_pData) { - return NULL; - } - return m_pData + index * m_nUnitSize; -} -#ifdef PDF_ENABLE_XFA -CFX_BaseSegmentedArray::CFX_BaseSegmentedArray(int unit_size, - int segment_units, - int index_size) - : m_UnitSize(unit_size), - m_SegmentSize(segment_units), - m_IndexSize(index_size), - m_IndexDepth(0), - m_DataSize(0), - m_pIndex(NULL) {} -void CFX_BaseSegmentedArray::SetUnitSize(int unit_size, - int segment_units, - int index_size) { - ASSERT(m_DataSize == 0); - m_UnitSize = unit_size; - m_SegmentSize = segment_units; - m_IndexSize = index_size; -} -CFX_BaseSegmentedArray::~CFX_BaseSegmentedArray() { - RemoveAll(); -} -static void _ClearIndex(int level, int size, void** pIndex) { - if (level == 0) { - FX_Free(pIndex); - return; - } - for (int i = 0; i < size; ++i) { - if (pIndex[i]) - _ClearIndex(level - 1, size, (void**)pIndex[i]); - } - FX_Free(pIndex); -} -void CFX_BaseSegmentedArray::RemoveAll() { - if (!m_pIndex) { - return; - } - _ClearIndex(m_IndexDepth, m_IndexSize, (void**)m_pIndex); - m_pIndex = NULL; - m_IndexDepth = 0; - m_DataSize = 0; -} -void* CFX_BaseSegmentedArray::Add() { - if (m_DataSize % m_SegmentSize) { - return GetAt(m_DataSize++); - } - void* pSegment = FX_Alloc2D(uint8_t, m_UnitSize, m_SegmentSize); - if (!m_pIndex) { - m_pIndex = pSegment; - m_DataSize++; - return pSegment; - } - if (m_IndexDepth == 0) { - void** pIndex = FX_Alloc(void*, m_IndexSize); - pIndex[0] = m_pIndex; - pIndex[1] = pSegment; - m_pIndex = pIndex; - m_DataSize++; - m_IndexDepth++; - return pSegment; - } - int seg_index = m_DataSize / m_SegmentSize; - if (seg_index % m_IndexSize) { - void** pIndex = GetIndex(seg_index); - pIndex[seg_index % m_IndexSize] = pSegment; - m_DataSize++; - return pSegment; - } - int tree_size = 1; - int i; - for (i = 0; i < m_IndexDepth; i++) { - tree_size *= m_IndexSize; - } - if (m_DataSize == tree_size * m_SegmentSize) { - void** pIndex = FX_Alloc(void*, m_IndexSize); - pIndex[0] = m_pIndex; - m_pIndex = pIndex; - m_IndexDepth++; - } else { - tree_size /= m_IndexSize; - } - void** pSpot = (void**)m_pIndex; - for (i = 1; i < m_IndexDepth; i++) { - if (!pSpot[seg_index / tree_size]) { - pSpot[seg_index / tree_size] = FX_Alloc(void*, m_IndexSize); - } - pSpot = (void**)pSpot[seg_index / tree_size]; - seg_index = seg_index % tree_size; - tree_size /= m_IndexSize; - } - if (i < m_IndexDepth) { - FX_Free(pSegment); - RemoveAll(); - return NULL; - } - pSpot[seg_index % m_IndexSize] = pSegment; - m_DataSize++; - return pSegment; -} -void** CFX_BaseSegmentedArray::GetIndex(int seg_index) const { - ASSERT(m_IndexDepth != 0); - if (m_IndexDepth == 1) { - return (void**)m_pIndex; - } - if (m_IndexDepth == 2) { - return (void**)((void**)m_pIndex)[seg_index / m_IndexSize]; - } - int tree_size = 1; - int i; - for (i = 1; i < m_IndexDepth; i++) { - tree_size *= m_IndexSize; - } - void** pSpot = (void**)m_pIndex; - for (i = 1; i < m_IndexDepth; i++) { - pSpot = (void**)pSpot[seg_index / tree_size]; - seg_index = seg_index % tree_size; - tree_size /= m_IndexSize; - } - return pSpot; -} -void* CFX_BaseSegmentedArray::IterateSegment(const uint8_t* pSegment, - int count, - FX_BOOL (*callback)(void* param, - void* pData), - void* param) const { - for (int i = 0; i < count; i++) { - if (!callback(param, (void*)(pSegment + i * m_UnitSize))) { - return (void*)(pSegment + i * m_UnitSize); - } - } - return NULL; -} -void* CFX_BaseSegmentedArray::IterateIndex(int level, - int& start, - void** pIndex, - FX_BOOL (*callback)(void* param, - void* pData), - void* param) const { - if (level == 0) { - int count = m_DataSize - start; - if (count > m_SegmentSize) { - count = m_SegmentSize; - } - start += count; - return IterateSegment((const uint8_t*)pIndex, count, callback, param); - } - for (int i = 0; i < m_IndexSize; i++) { - if (!pIndex[i]) { - continue; - } - void* p = - IterateIndex(level - 1, start, (void**)pIndex[i], callback, param); - if (p) { - return p; - } - } - return NULL; -} -void* CFX_BaseSegmentedArray::Iterate(FX_BOOL (*callback)(void* param, - void* pData), - void* param) const { - if (!m_pIndex) { - return NULL; - } - int start = 0; - return IterateIndex(m_IndexDepth, start, (void**)m_pIndex, callback, param); -} -void* CFX_BaseSegmentedArray::GetAt(int index) const { - if (index < 0 || index >= m_DataSize) { - return NULL; - } - if (m_IndexDepth == 0) { - return (uint8_t*)m_pIndex + m_UnitSize * index; - } - int seg_index = index / m_SegmentSize; - return (uint8_t*)GetIndex(seg_index)[seg_index % m_IndexSize] + - (index % m_SegmentSize) * m_UnitSize; -} -void CFX_BaseSegmentedArray::Delete(int index, int count) { - if (index < 0 || count < 1 || index + count > m_DataSize) { - return; - } - int i; - for (i = index; i < m_DataSize - count; i++) { - uint8_t* pSrc = (uint8_t*)GetAt(i + count); - uint8_t* pDest = (uint8_t*)GetAt(i); - for (int j = 0; j < m_UnitSize; j++) { - pDest[j] = pSrc[j]; - } - } - int new_segs = (m_DataSize - count + m_SegmentSize - 1) / m_SegmentSize; - int old_segs = (m_DataSize + m_SegmentSize - 1) / m_SegmentSize; - if (new_segs < old_segs) { - if (m_IndexDepth) { - for (i = new_segs; i < old_segs; i++) { - void** pIndex = GetIndex(i); - FX_Free(pIndex[i % m_IndexSize]); - pIndex[i % m_IndexSize] = NULL; - } - } else { - FX_Free(m_pIndex); - m_pIndex = NULL; - } - } - m_DataSize -= count; -} -#endif // PDF_ENABLE_XFA diff --git a/core/src/fxcrt/fx_basic_bstring.cpp b/core/src/fxcrt/fx_basic_bstring.cpp deleted file mode 100644 index 5d38d57757..0000000000 --- a/core/src/fxcrt/fx_basic_bstring.cpp +++ /dev/null @@ -1,1088 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "third_party/base/numerics/safe_math.h" - -static int _Buffer_itoa(char* buf, int i, FX_DWORD flags) { - if (i == 0) { - buf[0] = '0'; - return 1; - } - char buf1[32]; - int buf_pos = 31; - FX_DWORD u = i; - if ((flags & FXFORMAT_SIGNED) && i < 0) { - u = -i; - } - int base = 10; - const FX_CHAR* str = "0123456789abcdef"; - if (flags & FXFORMAT_HEX) { - base = 16; - if (flags & FXFORMAT_CAPITAL) { - str = "0123456789ABCDEF"; - } - } - while (u != 0) { - buf1[buf_pos--] = str[u % base]; - u = u / base; - } - if ((flags & FXFORMAT_SIGNED) && i < 0) { - buf1[buf_pos--] = '-'; - } - int len = 31 - buf_pos; - for (int ii = 0; ii < len; ii++) { - buf[ii] = buf1[ii + buf_pos + 1]; - } - return len; -} -CFX_ByteString CFX_ByteString::FormatInteger(int i, FX_DWORD flags) { - char buf[32]; - return CFX_ByteStringC(buf, _Buffer_itoa(buf, i, flags)); -} - -// static -CFX_ByteString::StringData* CFX_ByteString::StringData::Create(int nLen) { - // |nLen| is currently declared as in |int|. TODO(palmer): It should be - // a |size_t|, or at least unsigned. - if (nLen == 0 || nLen < 0) { - return NULL; - } - - // Fixed portion of header plus a NUL char not included in m_nAllocLength. - // sizeof(FX_CHAR) is always 1, used for consistency with CFX_Widestring. - int overhead = offsetof(StringData, m_String) + sizeof(FX_CHAR); - pdfium::base::CheckedNumeric nSize = nLen; - nSize += overhead; - - // Now round to an 8-byte boundary. We'd expect that this is the minimum - // granularity of any of the underlying allocators, so there may be cases - // where we can save a re-alloc when adding a few characters to a string - // by using this otherwise wasted space. - nSize += 7; - int totalSize = nSize.ValueOrDie() & ~7; - int usableSize = totalSize - overhead; - FXSYS_assert(usableSize >= nLen); - - void* pData = FX_Alloc(uint8_t, totalSize); - return new (pData) StringData(nLen, usableSize); -} -CFX_ByteString::~CFX_ByteString() { - if (m_pData) { - m_pData->Release(); - } -} -CFX_ByteString::CFX_ByteString(const FX_CHAR* lpsz, FX_STRSIZE nLen) { - if (nLen < 0) { - nLen = lpsz ? FXSYS_strlen(lpsz) : 0; - } - if (nLen) { - m_pData = StringData::Create(nLen); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, lpsz, nLen); - } - } else { - m_pData = NULL; - } -} -CFX_ByteString::CFX_ByteString(const uint8_t* lpsz, FX_STRSIZE nLen) { - if (nLen > 0) { - m_pData = StringData::Create(nLen); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, lpsz, nLen); - } - } else { - m_pData = NULL; - } -} -CFX_ByteString::CFX_ByteString(char ch) { - m_pData = StringData::Create(1); - if (m_pData) { - m_pData->m_String[0] = ch; - } -} -CFX_ByteString::CFX_ByteString(const CFX_ByteString& stringSrc) { - if (!stringSrc.m_pData) { - m_pData = NULL; - return; - } - if (stringSrc.m_pData->m_nRefs >= 0) { - m_pData = stringSrc.m_pData; - m_pData->Retain(); - } else { - m_pData = NULL; - *this = stringSrc; - } -} -CFX_ByteString::CFX_ByteString(const CFX_ByteStringC& stringSrc) { - if (stringSrc.IsEmpty()) { - m_pData = NULL; - return; - } - m_pData = NULL; - *this = stringSrc; -} -CFX_ByteString::CFX_ByteString(const CFX_ByteStringC& str1, - const CFX_ByteStringC& str2) { - m_pData = NULL; - int nNewLen = str1.GetLength() + str2.GetLength(); - if (nNewLen == 0) { - return; - } - m_pData = StringData::Create(nNewLen); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, str1.GetCStr(), str1.GetLength()); - FXSYS_memcpy(m_pData->m_String + str1.GetLength(), str2.GetCStr(), - str2.GetLength()); - } -} -const CFX_ByteString& CFX_ByteString::operator=(const FX_CHAR* lpsz) { - if (!lpsz || lpsz[0] == 0) { - Empty(); - } else { - AssignCopy(FXSYS_strlen(lpsz), lpsz); - } - return *this; -} -const CFX_ByteString& CFX_ByteString::operator=(const CFX_ByteStringC& str) { - if (str.IsEmpty()) { - Empty(); - } else { - AssignCopy(str.GetLength(), str.GetCStr()); - } - return *this; -} -const CFX_ByteString& CFX_ByteString::operator=( - const CFX_ByteString& stringSrc) { - if (m_pData == stringSrc.m_pData) { - return *this; - } - if (stringSrc.IsEmpty()) { - Empty(); - } else if ((m_pData && m_pData->m_nRefs < 0) || - (stringSrc.m_pData && stringSrc.m_pData->m_nRefs < 0)) { - AssignCopy(stringSrc.m_pData->m_nDataLength, stringSrc.m_pData->m_String); - } else { - Empty(); - m_pData = stringSrc.m_pData; - if (m_pData) { - m_pData->Retain(); - } - } - return *this; -} -const CFX_ByteString& CFX_ByteString::operator=(const CFX_BinaryBuf& buf) { - Load(buf.GetBuffer(), buf.GetSize()); - return *this; -} -void CFX_ByteString::Load(const uint8_t* buf, FX_STRSIZE len) { - Empty(); - if (len) { - m_pData = StringData::Create(len); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, buf, len); - } - } else { - m_pData = NULL; - } -} -const CFX_ByteString& CFX_ByteString::operator+=(const FX_CHAR* lpsz) { - if (lpsz) { - ConcatInPlace(FXSYS_strlen(lpsz), lpsz); - } - return *this; -} -const CFX_ByteString& CFX_ByteString::operator+=(char ch) { - ConcatInPlace(1, &ch); - return *this; -} -const CFX_ByteString& CFX_ByteString::operator+=(const CFX_ByteString& str) { - if (!str.m_pData) { - return *this; - } - ConcatInPlace(str.m_pData->m_nDataLength, str.m_pData->m_String); - return *this; -} -const CFX_ByteString& CFX_ByteString::operator+=(const CFX_ByteStringC& str) { - if (str.IsEmpty()) { - return *this; - } - ConcatInPlace(str.GetLength(), str.GetCStr()); - return *this; -} -bool CFX_ByteString::Equal(const char* ptr) const { - if (!m_pData) { - return !ptr || ptr[0] == '\0'; - } - if (!ptr) { - return m_pData->m_nDataLength == 0; - } - return FXSYS_strlen(ptr) == m_pData->m_nDataLength && - FXSYS_memcmp(ptr, m_pData->m_String, m_pData->m_nDataLength) == 0; -} -bool CFX_ByteString::Equal(const CFX_ByteStringC& str) const { - if (!m_pData) { - return str.IsEmpty(); - } - return m_pData->m_nDataLength == str.GetLength() && - FXSYS_memcmp(m_pData->m_String, str.GetCStr(), str.GetLength()) == 0; -} -bool CFX_ByteString::Equal(const CFX_ByteString& other) const { - if (IsEmpty()) { - return other.IsEmpty(); - } - if (other.IsEmpty()) { - return false; - } - return other.m_pData->m_nDataLength == m_pData->m_nDataLength && - FXSYS_memcmp(other.m_pData->m_String, m_pData->m_String, - m_pData->m_nDataLength) == 0; -} -void CFX_ByteString::Empty() { - if (m_pData) { - m_pData->Release(); - m_pData = NULL; - } -} -bool CFX_ByteString::EqualNoCase(const CFX_ByteStringC& str) const { - if (!m_pData) { - return str.IsEmpty(); - } - FX_STRSIZE len = str.GetLength(); - if (m_pData->m_nDataLength != len) { - return false; - } - const uint8_t* pThis = (const uint8_t*)m_pData->m_String; - const uint8_t* pThat = str.GetPtr(); - for (FX_STRSIZE i = 0; i < len; i++) { - if ((*pThis) != (*pThat)) { - uint8_t bThis = *pThis; - if (bThis >= 'A' && bThis <= 'Z') { - bThis += 'a' - 'A'; - } - uint8_t bThat = *pThat; - if (bThat >= 'A' && bThat <= 'Z') { - bThat += 'a' - 'A'; - } - if (bThis != bThat) { - return false; - } - } - pThis++; - pThat++; - } - return true; -} -void CFX_ByteString::AssignCopy(FX_STRSIZE nSrcLen, - const FX_CHAR* lpszSrcData) { - AllocBeforeWrite(nSrcLen); - FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen); - m_pData->m_nDataLength = nSrcLen; - m_pData->m_String[nSrcLen] = 0; -} -void CFX_ByteString::CopyBeforeWrite() { - if (!m_pData || m_pData->m_nRefs <= 1) { - return; - } - StringData* pData = m_pData; - m_pData->Release(); - FX_STRSIZE nDataLength = pData->m_nDataLength; - m_pData = StringData::Create(nDataLength); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, pData->m_String, nDataLength + 1); - } -} -void CFX_ByteString::AllocBeforeWrite(FX_STRSIZE nLen) { - if (m_pData && m_pData->m_nRefs <= 1 && m_pData->m_nAllocLength >= nLen) { - return; - } - Empty(); - m_pData = StringData::Create(nLen); -} -void CFX_ByteString::ReleaseBuffer(FX_STRSIZE nNewLength) { - if (!m_pData) { - return; - } - CopyBeforeWrite(); - if (nNewLength == -1) { - nNewLength = FXSYS_strlen((const FX_CHAR*)m_pData->m_String); - } - if (nNewLength == 0) { - Empty(); - return; - } - FXSYS_assert(nNewLength <= m_pData->m_nAllocLength); - m_pData->m_nDataLength = nNewLength; - m_pData->m_String[nNewLength] = 0; -} -void CFX_ByteString::Reserve(FX_STRSIZE len) { - GetBuffer(len); - ReleaseBuffer(GetLength()); -} -FX_CHAR* CFX_ByteString::GetBuffer(FX_STRSIZE nMinBufLength) { - if (!m_pData && nMinBufLength == 0) { - return NULL; - } - if (m_pData && m_pData->m_nRefs <= 1 && - m_pData->m_nAllocLength >= nMinBufLength) { - return m_pData->m_String; - } - if (!m_pData) { - m_pData = StringData::Create(nMinBufLength); - if (!m_pData) { - return NULL; - } - m_pData->m_nDataLength = 0; - m_pData->m_String[0] = 0; - return m_pData->m_String; - } - StringData* pOldData = m_pData; - FX_STRSIZE nOldLen = pOldData->m_nDataLength; - if (nMinBufLength < nOldLen) { - nMinBufLength = nOldLen; - } - m_pData = StringData::Create(nMinBufLength); - if (!m_pData) { - return NULL; - } - FXSYS_memcpy(m_pData->m_String, pOldData->m_String, (nOldLen + 1)); - m_pData->m_nDataLength = nOldLen; - pOldData->Release(); - return m_pData->m_String; -} -FX_STRSIZE CFX_ByteString::Delete(FX_STRSIZE nIndex, FX_STRSIZE nCount) { - if (!m_pData) { - return 0; - } - if (nIndex < 0) { - nIndex = 0; - } - FX_STRSIZE nOldLength = m_pData->m_nDataLength; - if (nCount > 0 && nIndex < nOldLength) { - FX_STRSIZE mLength = nIndex + nCount; - if (mLength >= nOldLength) { - m_pData->m_nDataLength = nIndex; - return m_pData->m_nDataLength; - } - CopyBeforeWrite(); - int nBytesToCopy = nOldLength - mLength + 1; - FXSYS_memmove(m_pData->m_String + nIndex, m_pData->m_String + mLength, - nBytesToCopy); - m_pData->m_nDataLength = nOldLength - nCount; - } - return m_pData->m_nDataLength; -} -void CFX_ByteString::ConcatInPlace(FX_STRSIZE nSrcLen, - const FX_CHAR* lpszSrcData) { - if (nSrcLen == 0 || !lpszSrcData) { - return; - } - if (!m_pData) { - m_pData = StringData::Create(nSrcLen); - if (!m_pData) { - return; - } - FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen); - return; - } - if (m_pData->m_nRefs > 1 || - m_pData->m_nDataLength + nSrcLen > m_pData->m_nAllocLength) { - ConcatCopy(m_pData->m_nDataLength, m_pData->m_String, nSrcLen, lpszSrcData); - } else { - FXSYS_memcpy(m_pData->m_String + m_pData->m_nDataLength, lpszSrcData, - nSrcLen); - m_pData->m_nDataLength += nSrcLen; - m_pData->m_String[m_pData->m_nDataLength] = 0; - } -} -void CFX_ByteString::ConcatCopy(FX_STRSIZE nSrc1Len, - const FX_CHAR* lpszSrc1Data, - FX_STRSIZE nSrc2Len, - const FX_CHAR* lpszSrc2Data) { - int nNewLen = nSrc1Len + nSrc2Len; - if (nNewLen <= 0) { - return; - } - // Don't release until done copying, might be one of the arguments. - StringData* pOldData = m_pData; - m_pData = StringData::Create(nNewLen); - if (m_pData) { - memcpy(m_pData->m_String, lpszSrc1Data, nSrc1Len); - memcpy(m_pData->m_String + nSrc1Len, lpszSrc2Data, nSrc2Len); - } - pOldData->Release(); -} -CFX_ByteString CFX_ByteString::Mid(FX_STRSIZE nFirst) const { - if (!m_pData) { - return CFX_ByteString(); - } - return Mid(nFirst, m_pData->m_nDataLength - nFirst); -} -CFX_ByteString CFX_ByteString::Mid(FX_STRSIZE nFirst, FX_STRSIZE nCount) const { - if (nFirst < 0) { - nFirst = 0; - } - if (nCount < 0) { - nCount = 0; - } - if (nFirst + nCount > m_pData->m_nDataLength) { - nCount = m_pData->m_nDataLength - nFirst; - } - if (nFirst > m_pData->m_nDataLength) { - nCount = 0; - } - if (nFirst == 0 && nFirst + nCount == m_pData->m_nDataLength) { - return *this; - } - CFX_ByteString dest; - AllocCopy(dest, nCount, nFirst); - return dest; -} -void CFX_ByteString::AllocCopy(CFX_ByteString& dest, - FX_STRSIZE nCopyLen, - FX_STRSIZE nCopyIndex) const { - // |FX_STRSIZE| is currently typedef'd as in |int|. TODO(palmer): It - // should be a |size_t|, or at least unsigned. - if (nCopyLen == 0 || nCopyLen < 0) { - return; - } - ASSERT(!dest.m_pData); - dest.m_pData = StringData::Create(nCopyLen); - if (dest.m_pData) { - FXSYS_memcpy(dest.m_pData->m_String, m_pData->m_String + nCopyIndex, - nCopyLen); - } -} -#define FORCE_ANSI 0x10000 -#define FORCE_UNICODE 0x20000 -#define FORCE_INT64 0x40000 -void CFX_ByteString::FormatV(const FX_CHAR* lpszFormat, va_list argList) { - va_list argListSave; -#if defined(__ARMCC_VERSION) || \ - (!defined(_MSC_VER) && (_FX_CPU_ == _FX_X64_ || _FX_CPU_ == _FX_IA64_ || \ - _FX_CPU_ == _FX_ARM64_)) || \ - defined(__native_client__) - va_copy(argListSave, argList); -#else - argListSave = argList; -#endif - int nMaxLen = 0; - for (const FX_CHAR* lpsz = lpszFormat; *lpsz != 0; lpsz++) { - if (*lpsz != '%' || *(lpsz = lpsz + 1) == '%') { - nMaxLen += FXSYS_strlen(lpsz); - continue; - } - int nItemLen = 0; - int nWidth = 0; - for (; *lpsz != 0; lpsz++) { - if (*lpsz == '#') { - nMaxLen += 2; - } else if (*lpsz == '*') { - nWidth = va_arg(argList, int); - } else if (*lpsz != '-' && *lpsz != '+' && *lpsz != '0' && *lpsz != ' ') { - break; - } - } - if (nWidth == 0) { - nWidth = FXSYS_atoi(lpsz); - while (std::isdigit(*lpsz)) - lpsz++; - } - if (nWidth < 0 || nWidth > 128 * 1024) { - lpszFormat = "Bad width"; - nMaxLen = 10; - break; - } - int nPrecision = 0; - if (*lpsz == '.') { - lpsz++; - if (*lpsz == '*') { - nPrecision = va_arg(argList, int); - lpsz++; - } else { - nPrecision = FXSYS_atoi(lpsz); - while (std::isdigit(*lpsz)) - lpsz++; - } - } - if (nPrecision < 0 || nPrecision > 128 * 1024) { - lpszFormat = "Bad precision"; - nMaxLen = 14; - break; - } - int nModifier = 0; - if (FXSYS_strncmp(lpsz, "I64", 3) == 0) { - lpsz += 3; - nModifier = FORCE_INT64; - } else { - switch (*lpsz) { - case 'h': - nModifier = FORCE_ANSI; - lpsz++; - break; - case 'l': - nModifier = FORCE_UNICODE; - lpsz++; - break; - case 'F': - case 'N': - case 'L': - lpsz++; - break; - } - } - switch (*lpsz | nModifier) { - case 'c': - case 'C': - nItemLen = 2; - va_arg(argList, int); - break; - case 'c' | FORCE_ANSI: - case 'C' | FORCE_ANSI: - nItemLen = 2; - va_arg(argList, int); - break; - case 'c' | FORCE_UNICODE: - case 'C' | FORCE_UNICODE: - nItemLen = 2; - va_arg(argList, int); - break; - case 's': { - const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_strlen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - case 'S': { - FX_WCHAR* pstrNextArg = va_arg(argList, FX_WCHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_wcslen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - case 's' | FORCE_ANSI: - case 'S' | FORCE_ANSI: { - const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_strlen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - case 's' | FORCE_UNICODE: - case 'S' | FORCE_UNICODE: { - FX_WCHAR* pstrNextArg = va_arg(argList, FX_WCHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_wcslen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - } - if (nItemLen != 0) { - if (nPrecision != 0 && nItemLen > nPrecision) { - nItemLen = nPrecision; - } - if (nItemLen < nWidth) { - nItemLen = nWidth; - } - } else { - switch (*lpsz) { - case 'd': - case 'i': - case 'u': - case 'x': - case 'X': - case 'o': - if (nModifier & FORCE_INT64) { - va_arg(argList, int64_t); - } else { - va_arg(argList, int); - } - nItemLen = 32; - if (nItemLen < nWidth + nPrecision) { - nItemLen = nWidth + nPrecision; - } - break; - case 'a': - case 'A': - case 'e': - case 'E': - case 'g': - case 'G': - va_arg(argList, double); - nItemLen = 128; - if (nItemLen < nWidth + nPrecision) { - nItemLen = nWidth + nPrecision; - } - break; - case 'f': - if (nWidth + nPrecision > 100) { - nItemLen = nPrecision + nWidth + 128; - } else { - char pszTemp[256]; - double f = va_arg(argList, double); - memset(pszTemp, 0, sizeof(pszTemp)); - FXSYS_snprintf(pszTemp, sizeof(pszTemp) - 1, "%*.*f", nWidth, - nPrecision + 6, f); - nItemLen = FXSYS_strlen(pszTemp); - } - break; - case 'p': - va_arg(argList, void*); - nItemLen = 32; - if (nItemLen < nWidth + nPrecision) { - nItemLen = nWidth + nPrecision; - } - break; - case 'n': - va_arg(argList, int*); - break; - } - } - nMaxLen += nItemLen; - } - nMaxLen += 32; // Fudge factor. - GetBuffer(nMaxLen); - if (m_pData) { - memset(m_pData->m_String, 0, nMaxLen); - FXSYS_vsnprintf(m_pData->m_String, nMaxLen - 1, lpszFormat, argListSave); - ReleaseBuffer(); - } - va_end(argListSave); -} -void CFX_ByteString::Format(const FX_CHAR* lpszFormat, ...) { - va_list argList; - va_start(argList, lpszFormat); - FormatV(lpszFormat, argList); - va_end(argList); -} -FX_STRSIZE CFX_ByteString::Insert(FX_STRSIZE nIndex, FX_CHAR ch) { - CopyBeforeWrite(); - if (nIndex < 0) { - nIndex = 0; - } - FX_STRSIZE nNewLength = m_pData ? m_pData->m_nDataLength : 0; - if (nIndex > nNewLength) { - nIndex = nNewLength; - } - nNewLength++; - if (!m_pData || m_pData->m_nAllocLength < nNewLength) { - StringData* pOldData = m_pData; - const FX_CHAR* pstr = m_pData->m_String; - m_pData = StringData::Create(nNewLength); - if (!m_pData) { - return 0; - } - if (pOldData) { - FXSYS_memmove(m_pData->m_String, pstr, (pOldData->m_nDataLength + 1)); - pOldData->Release(); - } else { - m_pData->m_String[0] = 0; - } - } - FXSYS_memmove(m_pData->m_String + nIndex + 1, m_pData->m_String + nIndex, - (nNewLength - nIndex)); - m_pData->m_String[nIndex] = ch; - m_pData->m_nDataLength = nNewLength; - return nNewLength; -} -CFX_ByteString CFX_ByteString::Right(FX_STRSIZE nCount) const { - if (!m_pData) { - return CFX_ByteString(); - } - if (nCount < 0) { - nCount = 0; - } - if (nCount >= m_pData->m_nDataLength) { - return *this; - } - CFX_ByteString dest; - AllocCopy(dest, nCount, m_pData->m_nDataLength - nCount); - return dest; -} -CFX_ByteString CFX_ByteString::Left(FX_STRSIZE nCount) const { - if (!m_pData) { - return CFX_ByteString(); - } - if (nCount < 0) { - nCount = 0; - } - if (nCount >= m_pData->m_nDataLength) { - return *this; - } - CFX_ByteString dest; - AllocCopy(dest, nCount, 0); - return dest; -} -FX_STRSIZE CFX_ByteString::Find(FX_CHAR ch, FX_STRSIZE nStart) const { - if (!m_pData) { - return -1; - } - FX_STRSIZE nLength = m_pData->m_nDataLength; - if (nStart >= nLength) { - return -1; - } - const FX_CHAR* lpsz = FXSYS_strchr(m_pData->m_String + nStart, ch); - return lpsz ? (int)(lpsz - m_pData->m_String) : -1; -} -FX_STRSIZE CFX_ByteString::ReverseFind(FX_CHAR ch) const { - if (!m_pData) { - return -1; - } - FX_STRSIZE nLength = m_pData->m_nDataLength; - while (nLength) { - if (m_pData->m_String[nLength - 1] == ch) { - return nLength - 1; - } - nLength--; - } - return -1; -} -const FX_CHAR* FX_strstr(const FX_CHAR* str1, - int len1, - const FX_CHAR* str2, - int len2) { - if (len2 > len1 || len2 == 0) { - return NULL; - } - const FX_CHAR* end_ptr = str1 + len1 - len2; - while (str1 <= end_ptr) { - int i = 0; - while (1) { - if (str1[i] != str2[i]) { - break; - } - i++; - if (i == len2) { - return str1; - } - } - str1++; - } - return NULL; -} -FX_STRSIZE CFX_ByteString::Find(const CFX_ByteStringC& lpszSub, - FX_STRSIZE nStart) const { - if (!m_pData) { - return -1; - } - FX_STRSIZE nLength = m_pData->m_nDataLength; - if (nStart > nLength) { - return -1; - } - const FX_CHAR* lpsz = - FX_strstr(m_pData->m_String + nStart, m_pData->m_nDataLength - nStart, - lpszSub.GetCStr(), lpszSub.GetLength()); - return lpsz ? (int)(lpsz - m_pData->m_String) : -1; -} -void CFX_ByteString::MakeLower() { - if (!m_pData) { - return; - } - CopyBeforeWrite(); - if (GetLength() < 1) { - return; - } - FXSYS_strlwr(m_pData->m_String); -} -void CFX_ByteString::MakeUpper() { - if (!m_pData) { - return; - } - CopyBeforeWrite(); - if (GetLength() < 1) { - return; - } - FXSYS_strupr(m_pData->m_String); -} -FX_STRSIZE CFX_ByteString::Remove(FX_CHAR chRemove) { - if (!m_pData) { - return 0; - } - CopyBeforeWrite(); - if (GetLength() < 1) { - return 0; - } - FX_CHAR* pstrSource = m_pData->m_String; - FX_CHAR* pstrDest = m_pData->m_String; - FX_CHAR* pstrEnd = m_pData->m_String + m_pData->m_nDataLength; - while (pstrSource < pstrEnd) { - if (*pstrSource != chRemove) { - *pstrDest = *pstrSource; - pstrDest++; - } - pstrSource++; - } - *pstrDest = 0; - FX_STRSIZE nCount = (FX_STRSIZE)(pstrSource - pstrDest); - m_pData->m_nDataLength -= nCount; - return nCount; -} -FX_STRSIZE CFX_ByteString::Replace(const CFX_ByteStringC& lpszOld, - const CFX_ByteStringC& lpszNew) { - if (!m_pData) { - return 0; - } - if (lpszOld.IsEmpty()) { - return 0; - } - FX_STRSIZE nSourceLen = lpszOld.GetLength(); - FX_STRSIZE nReplacementLen = lpszNew.GetLength(); - FX_STRSIZE nCount = 0; - const FX_CHAR* pStart = m_pData->m_String; - FX_CHAR* pEnd = m_pData->m_String + m_pData->m_nDataLength; - while (1) { - const FX_CHAR* pTarget = FX_strstr(pStart, (FX_STRSIZE)(pEnd - pStart), - lpszOld.GetCStr(), nSourceLen); - if (!pTarget) { - break; - } - nCount++; - pStart = pTarget + nSourceLen; - } - if (nCount == 0) { - return 0; - } - FX_STRSIZE nNewLength = - m_pData->m_nDataLength + (nReplacementLen - nSourceLen) * nCount; - if (nNewLength == 0) { - Empty(); - return nCount; - } - StringData* pNewData = StringData::Create(nNewLength); - if (!pNewData) { - return 0; - } - pStart = m_pData->m_String; - FX_CHAR* pDest = pNewData->m_String; - for (FX_STRSIZE i = 0; i < nCount; i++) { - const FX_CHAR* pTarget = FX_strstr(pStart, (FX_STRSIZE)(pEnd - pStart), - lpszOld.GetCStr(), nSourceLen); - FXSYS_memcpy(pDest, pStart, pTarget - pStart); - pDest += pTarget - pStart; - FXSYS_memcpy(pDest, lpszNew.GetCStr(), lpszNew.GetLength()); - pDest += lpszNew.GetLength(); - pStart = pTarget + nSourceLen; - } - FXSYS_memcpy(pDest, pStart, pEnd - pStart); - m_pData->Release(); - m_pData = pNewData; - return nCount; -} -void CFX_ByteString::SetAt(FX_STRSIZE nIndex, FX_CHAR ch) { - if (!m_pData) { - return; - } - FXSYS_assert(nIndex >= 0); - FXSYS_assert(nIndex < m_pData->m_nDataLength); - CopyBeforeWrite(); - m_pData->m_String[nIndex] = ch; -} -CFX_WideString CFX_ByteString::UTF8Decode() const { - CFX_UTF8Decoder decoder; - for (FX_STRSIZE i = 0; i < GetLength(); i++) { - decoder.Input((uint8_t)m_pData->m_String[i]); - } - return decoder.GetResult(); -} - -// static -CFX_ByteString CFX_ByteString::FromUnicode(const FX_WCHAR* str, - FX_STRSIZE len) { - FX_STRSIZE str_len = len >= 0 ? len : FXSYS_wcslen(str); - return FromUnicode(CFX_WideString(str, str_len)); -} - -// static -CFX_ByteString CFX_ByteString::FromUnicode(const CFX_WideString& str) { - return CFX_CharMap::GetByteString(0, str); -} - -int CFX_ByteString::Compare(const CFX_ByteStringC& str) const { - if (!m_pData) { - return str.IsEmpty() ? 0 : -1; - } - int this_len = m_pData->m_nDataLength; - int that_len = str.GetLength(); - int min_len = this_len < that_len ? this_len : that_len; - for (int i = 0; i < min_len; i++) { - if ((uint8_t)m_pData->m_String[i] < str.GetAt(i)) { - return -1; - } - if ((uint8_t)m_pData->m_String[i] > str.GetAt(i)) { - return 1; - } - } - if (this_len < that_len) { - return -1; - } - if (this_len > that_len) { - return 1; - } - return 0; -} -void CFX_ByteString::TrimRight(const CFX_ByteStringC& lpszTargets) { - if (!m_pData || lpszTargets.IsEmpty()) { - return; - } - CopyBeforeWrite(); - FX_STRSIZE pos = GetLength(); - if (pos < 1) { - return; - } - while (pos) { - FX_STRSIZE i = 0; - while (i < lpszTargets.GetLength() && - lpszTargets[i] != m_pData->m_String[pos - 1]) { - i++; - } - if (i == lpszTargets.GetLength()) { - break; - } - pos--; - } - if (pos < m_pData->m_nDataLength) { - m_pData->m_String[pos] = 0; - m_pData->m_nDataLength = pos; - } -} -void CFX_ByteString::TrimRight(FX_CHAR chTarget) { - TrimRight(CFX_ByteStringC(chTarget)); -} -void CFX_ByteString::TrimRight() { - TrimRight("\x09\x0a\x0b\x0c\x0d\x20"); -} -void CFX_ByteString::TrimLeft(const CFX_ByteStringC& lpszTargets) { - if (!m_pData) { - return; - } - if (lpszTargets.IsEmpty()) { - return; - } - CopyBeforeWrite(); - FX_STRSIZE len = GetLength(); - if (len < 1) { - return; - } - FX_STRSIZE pos = 0; - while (pos < len) { - FX_STRSIZE i = 0; - while (i < lpszTargets.GetLength() && - lpszTargets[i] != m_pData->m_String[pos]) { - i++; - } - if (i == lpszTargets.GetLength()) { - break; - } - pos++; - } - if (pos) { - FX_STRSIZE nDataLength = len - pos; - FXSYS_memmove(m_pData->m_String, m_pData->m_String + pos, - (nDataLength + 1) * sizeof(FX_CHAR)); - m_pData->m_nDataLength = nDataLength; - } -} -void CFX_ByteString::TrimLeft(FX_CHAR chTarget) { - TrimLeft(CFX_ByteStringC(chTarget)); -} -void CFX_ByteString::TrimLeft() { - TrimLeft("\x09\x0a\x0b\x0c\x0d\x20"); -} -FX_DWORD CFX_ByteString::GetID(FX_STRSIZE start_pos) const { - return CFX_ByteStringC(*this).GetID(start_pos); -} -FX_DWORD CFX_ByteStringC::GetID(FX_STRSIZE start_pos) const { - if (m_Length == 0) { - return 0; - } - if (start_pos < 0 || start_pos >= m_Length) { - return 0; - } - FX_DWORD strid = 0; - if (start_pos + 4 > m_Length) { - for (FX_STRSIZE i = 0; i < m_Length - start_pos; i++) { - strid = strid * 256 + m_Ptr[start_pos + i]; - } - strid = strid << ((4 - m_Length + start_pos) * 8); - } else { - for (int i = 0; i < 4; i++) { - strid = strid * 256 + m_Ptr[start_pos + i]; - } - } - return strid; -} -FX_STRSIZE FX_ftoa(FX_FLOAT d, FX_CHAR* buf) { - buf[0] = '0'; - buf[1] = '\0'; - if (d == 0.0f) { - return 1; - } - FX_BOOL bNegative = FALSE; - if (d < 0) { - bNegative = TRUE; - d = -d; - } - int scale = 1; - int scaled = FXSYS_round(d); - while (scaled < 100000) { - if (scale == 1000000) { - break; - } - scale *= 10; - scaled = FXSYS_round(d * scale); - } - if (scaled == 0) { - return 1; - } - char buf2[32]; - int buf_size = 0; - if (bNegative) { - buf[buf_size++] = '-'; - } - int i = scaled / scale; - FXSYS_itoa(i, buf2, 10); - FX_STRSIZE len = FXSYS_strlen(buf2); - FXSYS_memcpy(buf + buf_size, buf2, len); - buf_size += len; - int fraction = scaled % scale; - if (fraction == 0) { - return buf_size; - } - buf[buf_size++] = '.'; - scale /= 10; - while (fraction) { - buf[buf_size++] = '0' + fraction / scale; - fraction %= scale; - scale /= 10; - } - return buf_size; -} -CFX_ByteString CFX_ByteString::FormatFloat(FX_FLOAT d, int precision) { - FX_CHAR buf[32]; - FX_STRSIZE len = FX_ftoa(d, buf); - return CFX_ByteString(buf, len); -} diff --git a/core/src/fxcrt/fx_basic_bstring_unittest.cpp b/core/src/fxcrt/fx_basic_bstring_unittest.cpp deleted file mode 100644 index 337775d9af..0000000000 --- a/core/src/fxcrt/fx_basic_bstring_unittest.cpp +++ /dev/null @@ -1,689 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fxcrt/fx_string.h" -#include "testing/fx_string_testhelpers.h" -#include "testing/gtest/include/gtest/gtest.h" - -TEST(fxcrt, ByteStringOperatorSubscript) { - // CFX_ByteString includes the NUL terminator for non-empty strings. - CFX_ByteString abc("abc"); - EXPECT_EQ('a', abc[0]); - EXPECT_EQ('b', abc[1]); - EXPECT_EQ('c', abc[2]); - EXPECT_EQ(0, abc[3]); -} - -TEST(fxcrt, ByteStringOperatorLT) { - CFX_ByteString empty; - CFX_ByteString a("a"); - CFX_ByteString abc("abc"); - CFX_ByteString def("def"); - - EXPECT_FALSE(empty < empty); - EXPECT_FALSE(a < a); - EXPECT_FALSE(abc < abc); - EXPECT_FALSE(def < def); - - EXPECT_TRUE(empty < a); - EXPECT_FALSE(a < empty); - - EXPECT_TRUE(empty < abc); - EXPECT_FALSE(abc < empty); - - EXPECT_TRUE(empty < def); - EXPECT_FALSE(def < empty); - - EXPECT_TRUE(a < abc); - EXPECT_FALSE(abc < a); - - EXPECT_TRUE(a < def); - EXPECT_FALSE(def < a); - - EXPECT_TRUE(abc < def); - EXPECT_FALSE(def < abc); -} - -TEST(fxcrt, ByteStringOperatorEQ) { - CFX_ByteString null_string; - EXPECT_TRUE(null_string == null_string); - - CFX_ByteString empty_string(""); - EXPECT_TRUE(empty_string == empty_string); - EXPECT_TRUE(empty_string == null_string); - EXPECT_TRUE(null_string == empty_string); - - CFX_ByteString deleted_string("hello"); - deleted_string.Delete(0, 5); - EXPECT_TRUE(deleted_string == deleted_string); - EXPECT_TRUE(deleted_string == null_string); - EXPECT_TRUE(deleted_string == empty_string); - EXPECT_TRUE(null_string == deleted_string); - EXPECT_TRUE(empty_string == deleted_string); - - CFX_ByteString byte_string("hello"); - EXPECT_TRUE(byte_string == byte_string); - EXPECT_FALSE(byte_string == null_string); - EXPECT_FALSE(byte_string == empty_string); - EXPECT_FALSE(byte_string == deleted_string); - EXPECT_FALSE(null_string == byte_string); - EXPECT_FALSE(empty_string == byte_string); - EXPECT_FALSE(deleted_string == byte_string); - - CFX_ByteString byte_string_same1("hello"); - EXPECT_TRUE(byte_string == byte_string_same1); - EXPECT_TRUE(byte_string_same1 == byte_string); - - CFX_ByteString byte_string_same2(byte_string); - EXPECT_TRUE(byte_string == byte_string_same2); - EXPECT_TRUE(byte_string_same2 == byte_string); - - CFX_ByteString byte_string1("he"); - CFX_ByteString byte_string2("hellp"); - CFX_ByteString byte_string3("hellod"); - EXPECT_FALSE(byte_string == byte_string1); - EXPECT_FALSE(byte_string == byte_string2); - EXPECT_FALSE(byte_string == byte_string3); - EXPECT_FALSE(byte_string1 == byte_string); - EXPECT_FALSE(byte_string2 == byte_string); - EXPECT_FALSE(byte_string3 == byte_string); - - CFX_ByteStringC null_string_c; - CFX_ByteStringC empty_string_c(""); - EXPECT_TRUE(null_string == null_string_c); - EXPECT_TRUE(null_string == empty_string_c); - EXPECT_TRUE(empty_string == null_string_c); - EXPECT_TRUE(empty_string == empty_string_c); - EXPECT_TRUE(deleted_string == null_string_c); - EXPECT_TRUE(deleted_string == empty_string_c); - EXPECT_TRUE(null_string_c == null_string); - EXPECT_TRUE(empty_string_c == null_string); - EXPECT_TRUE(null_string_c == empty_string); - EXPECT_TRUE(empty_string_c == empty_string); - EXPECT_TRUE(null_string_c == deleted_string); - EXPECT_TRUE(empty_string_c == deleted_string); - - CFX_ByteStringC byte_string_c_same1("hello"); - EXPECT_TRUE(byte_string == byte_string_c_same1); - EXPECT_TRUE(byte_string_c_same1 == byte_string); - - CFX_ByteStringC byte_string_c1("he"); - CFX_ByteStringC byte_string_c2("hellp"); - CFX_ByteStringC byte_string_c3("hellod"); - EXPECT_FALSE(byte_string == byte_string_c1); - EXPECT_FALSE(byte_string == byte_string_c2); - EXPECT_FALSE(byte_string == byte_string_c3); - EXPECT_FALSE(byte_string_c1 == byte_string); - EXPECT_FALSE(byte_string_c2 == byte_string); - EXPECT_FALSE(byte_string_c3 == byte_string); - - const char* c_null_string = nullptr; - const char* c_empty_string = ""; - EXPECT_TRUE(null_string == c_null_string); - EXPECT_TRUE(null_string == c_empty_string); - EXPECT_TRUE(empty_string == c_null_string); - EXPECT_TRUE(empty_string == c_empty_string); - EXPECT_TRUE(deleted_string == c_null_string); - EXPECT_TRUE(deleted_string == c_empty_string); - EXPECT_TRUE(c_null_string == null_string); - EXPECT_TRUE(c_empty_string == null_string); - EXPECT_TRUE(c_null_string == empty_string); - EXPECT_TRUE(c_empty_string == empty_string); - EXPECT_TRUE(c_null_string == deleted_string); - EXPECT_TRUE(c_empty_string == deleted_string); - - const char* c_string_same1 = "hello"; - EXPECT_TRUE(byte_string == c_string_same1); - EXPECT_TRUE(c_string_same1 == byte_string); - - const char* c_string1 = "he"; - const char* c_string2 = "hellp"; - const char* c_string3 = "hellod"; - EXPECT_FALSE(byte_string == c_string1); - EXPECT_FALSE(byte_string == c_string2); - EXPECT_FALSE(byte_string == c_string3); - EXPECT_FALSE(c_string1 == byte_string); - EXPECT_FALSE(c_string2 == byte_string); - EXPECT_FALSE(c_string3 == byte_string); -} - -TEST(fxcrt, ByteStringOperatorNE) { - CFX_ByteString null_string; - EXPECT_FALSE(null_string != null_string); - - CFX_ByteString empty_string(""); - EXPECT_FALSE(empty_string != empty_string); - EXPECT_FALSE(empty_string != null_string); - EXPECT_FALSE(null_string != empty_string); - - CFX_ByteString deleted_string("hello"); - deleted_string.Delete(0, 5); - EXPECT_FALSE(deleted_string != deleted_string); - EXPECT_FALSE(deleted_string != null_string); - EXPECT_FALSE(deleted_string != empty_string); - EXPECT_FALSE(deleted_string != deleted_string); - EXPECT_FALSE(null_string != deleted_string); - EXPECT_FALSE(empty_string != deleted_string); - EXPECT_FALSE(deleted_string != deleted_string); - - CFX_ByteString byte_string("hello"); - EXPECT_FALSE(byte_string != byte_string); - EXPECT_TRUE(byte_string != null_string); - EXPECT_TRUE(byte_string != empty_string); - EXPECT_TRUE(byte_string != deleted_string); - EXPECT_TRUE(null_string != byte_string); - EXPECT_TRUE(empty_string != byte_string); - EXPECT_TRUE(deleted_string != byte_string); - - CFX_ByteString byte_string_same1("hello"); - EXPECT_FALSE(byte_string != byte_string_same1); - EXPECT_FALSE(byte_string_same1 != byte_string); - - CFX_ByteString byte_string_same2(byte_string); - EXPECT_FALSE(byte_string != byte_string_same2); - EXPECT_FALSE(byte_string_same2 != byte_string); - - CFX_ByteString byte_string1("he"); - CFX_ByteString byte_string2("hellp"); - CFX_ByteString byte_string3("hellod"); - EXPECT_TRUE(byte_string != byte_string1); - EXPECT_TRUE(byte_string != byte_string2); - EXPECT_TRUE(byte_string != byte_string3); - EXPECT_TRUE(byte_string1 != byte_string); - EXPECT_TRUE(byte_string2 != byte_string); - EXPECT_TRUE(byte_string3 != byte_string); - - CFX_ByteStringC null_string_c; - CFX_ByteStringC empty_string_c(""); - EXPECT_FALSE(null_string != null_string_c); - EXPECT_FALSE(null_string != empty_string_c); - EXPECT_FALSE(empty_string != null_string_c); - EXPECT_FALSE(empty_string != empty_string_c); - EXPECT_FALSE(null_string_c != null_string); - EXPECT_FALSE(empty_string_c != null_string); - EXPECT_FALSE(null_string_c != empty_string); - EXPECT_FALSE(empty_string_c != empty_string); - - CFX_ByteStringC byte_string_c_same1("hello"); - EXPECT_FALSE(byte_string != byte_string_c_same1); - EXPECT_FALSE(byte_string_c_same1 != byte_string); - - CFX_ByteStringC byte_string_c1("he"); - CFX_ByteStringC byte_string_c2("hellp"); - CFX_ByteStringC byte_string_c3("hellod"); - EXPECT_TRUE(byte_string != byte_string_c1); - EXPECT_TRUE(byte_string != byte_string_c2); - EXPECT_TRUE(byte_string != byte_string_c3); - EXPECT_TRUE(byte_string_c1 != byte_string); - EXPECT_TRUE(byte_string_c2 != byte_string); - EXPECT_TRUE(byte_string_c3 != byte_string); - - const char* c_null_string = nullptr; - const char* c_empty_string = ""; - EXPECT_FALSE(null_string != c_null_string); - EXPECT_FALSE(null_string != c_empty_string); - EXPECT_FALSE(empty_string != c_null_string); - EXPECT_FALSE(empty_string != c_empty_string); - EXPECT_FALSE(deleted_string != c_null_string); - EXPECT_FALSE(deleted_string != c_empty_string); - EXPECT_FALSE(c_null_string != null_string); - EXPECT_FALSE(c_empty_string != null_string); - EXPECT_FALSE(c_null_string != empty_string); - EXPECT_FALSE(c_empty_string != empty_string); - EXPECT_FALSE(c_null_string != deleted_string); - EXPECT_FALSE(c_empty_string != deleted_string); - - const char* c_string_same1 = "hello"; - EXPECT_FALSE(byte_string != c_string_same1); - EXPECT_FALSE(c_string_same1 != byte_string); - - const char* c_string1 = "he"; - const char* c_string2 = "hellp"; - const char* c_string3 = "hellod"; - EXPECT_TRUE(byte_string != c_string1); - EXPECT_TRUE(byte_string != c_string2); - EXPECT_TRUE(byte_string != c_string3); - EXPECT_TRUE(c_string1 != byte_string); - EXPECT_TRUE(c_string2 != byte_string); - EXPECT_TRUE(c_string3 != byte_string); -} - -TEST(fxcrt, ByteStringCNull) { - CFX_ByteStringC null_string; - EXPECT_EQ(null_string.GetPtr(), nullptr); - EXPECT_EQ(null_string.GetLength(), 0); - EXPECT_TRUE(null_string.IsEmpty()); - - CFX_ByteStringC another_null_string; - EXPECT_EQ(null_string, another_null_string); - - CFX_ByteStringC copied_null_string(null_string); - EXPECT_EQ(copied_null_string.GetPtr(), nullptr); - EXPECT_EQ(copied_null_string.GetLength(), 0); - EXPECT_TRUE(copied_null_string.IsEmpty()); - EXPECT_EQ(null_string, copied_null_string); - - CFX_ByteStringC empty_string(""); // Pointer to NUL, not NULL pointer. - EXPECT_NE(empty_string.GetPtr(), nullptr); - EXPECT_EQ(empty_string.GetLength(), 0); - EXPECT_TRUE(empty_string.IsEmpty()); - EXPECT_EQ(null_string, empty_string); - - CFX_ByteStringC assigned_null_string("initially not NULL"); - assigned_null_string = null_string; - EXPECT_EQ(assigned_null_string.GetPtr(), nullptr); - EXPECT_EQ(assigned_null_string.GetLength(), 0); - EXPECT_TRUE(assigned_null_string.IsEmpty()); - EXPECT_EQ(null_string, assigned_null_string); - - CFX_ByteStringC assigned_nullptr_string("initially not NULL"); - assigned_nullptr_string = (const FX_CHAR*)nullptr; - EXPECT_EQ(assigned_nullptr_string.GetPtr(), nullptr); - EXPECT_EQ(assigned_nullptr_string.GetLength(), 0); - EXPECT_TRUE(assigned_nullptr_string.IsEmpty()); - EXPECT_EQ(null_string, assigned_nullptr_string); - - CFX_ByteStringC non_null_string("a"); - EXPECT_NE(null_string, non_null_string); -} - -TEST(fxcrt, ByteStringConcatInPlace) { - CFX_ByteString fred; - fred.ConcatInPlace(4, "FRED"); - EXPECT_EQ("FRED", fred); - - fred.ConcatInPlace(2, "DY"); - EXPECT_EQ("FREDDY", fred); - - fred.Delete(3, 3); - EXPECT_EQ("FRE", fred); - - fred.ConcatInPlace(1, "D"); - EXPECT_EQ("FRED", fred); - - CFX_ByteString copy = fred; - fred.ConcatInPlace(2, "DY"); - EXPECT_EQ("FREDDY", fred); - EXPECT_EQ("FRED", copy); - - // Test invalid arguments. - copy = fred; - fred.ConcatInPlace(-6, "freddy"); - CFX_ByteString not_aliased("xxxxxx"); - EXPECT_EQ("FREDDY", fred); - EXPECT_EQ("xxxxxx", not_aliased); -} - -TEST(fxcrt, ByteStringCNotNull) { - CFX_ByteStringC string3("abc"); - CFX_ByteStringC string6("abcdef"); - CFX_ByteStringC alternate_string3("abcdef", 3); - CFX_ByteStringC embedded_nul_string7("abc\0def", 7); - CFX_ByteStringC illegal_string7("abcdef", 7); - - EXPECT_EQ(3, string3.GetLength()); - EXPECT_EQ(6, string6.GetLength()); - EXPECT_EQ(3, alternate_string3.GetLength()); - EXPECT_EQ(7, embedded_nul_string7.GetLength()); - EXPECT_EQ(7, illegal_string7.GetLength()); - - EXPECT_NE(string3, string6); - EXPECT_EQ(string3, alternate_string3); - EXPECT_NE(string3, embedded_nul_string7); - EXPECT_NE(string3, illegal_string7); - EXPECT_NE(string6, alternate_string3); - EXPECT_NE(string6, embedded_nul_string7); - EXPECT_NE(string6, illegal_string7); - EXPECT_NE(alternate_string3, embedded_nul_string7); - EXPECT_NE(alternate_string3, illegal_string7); - EXPECT_NE(embedded_nul_string7, illegal_string7); - - CFX_ByteStringC copied_string3(string3); - CFX_ByteStringC copied_alternate_string3(alternate_string3); - CFX_ByteStringC copied_embedded_nul_string7(embedded_nul_string7); - - EXPECT_EQ(string3, copied_string3); - EXPECT_EQ(alternate_string3, copied_alternate_string3); - EXPECT_EQ(embedded_nul_string7, copied_embedded_nul_string7); - - CFX_ByteStringC assigned_string3("intially something else"); - CFX_ByteStringC assigned_alternate_string3("initally something else"); - CFX_ByteStringC assigned_ptr_string3("initially something else"); - CFX_ByteStringC assigned_embedded_nul_string7("initially something else"); - - assigned_string3 = string3; - assigned_alternate_string3 = alternate_string3; - assigned_ptr_string3 = "abc"; - assigned_embedded_nul_string7 = embedded_nul_string7; - EXPECT_EQ(string3, assigned_string3); - EXPECT_EQ(alternate_string3, assigned_alternate_string3); - EXPECT_EQ(alternate_string3, assigned_ptr_string3); - EXPECT_EQ(embedded_nul_string7, assigned_embedded_nul_string7); -} - -TEST(fxcrt, ByteStringCFromChar) { - CFX_ByteStringC null_string; - CFX_ByteStringC lower_a_string("a"); - - // Must have lvalues that outlive the corresponding ByteStringC. - char nul = '\0'; - char lower_a = 'a'; - CFX_ByteStringC nul_string_from_char(nul); - CFX_ByteStringC lower_a_string_from_char(lower_a); - - // Pointer to nul, not NULL ptr, hence length 1 ... - EXPECT_EQ(1, nul_string_from_char.GetLength()); - EXPECT_NE(null_string, nul_string_from_char); - - EXPECT_EQ(1, lower_a_string_from_char.GetLength()); - EXPECT_EQ(lower_a_string, lower_a_string_from_char); - EXPECT_NE(nul_string_from_char, lower_a_string_from_char); - - CFX_ByteStringC longer_string("ab"); - EXPECT_NE(longer_string, lower_a_string_from_char); -} - -TEST(fxcrt, ByteStringCGetID) { - CFX_ByteStringC null_string; - EXPECT_EQ(0u, null_string.GetID()); - EXPECT_EQ(0u, null_string.GetID(1)); - EXPECT_EQ(0u, null_string.GetID(-1)); - EXPECT_EQ(0u, null_string.GetID(-1000000)); - - CFX_ByteStringC empty_string(""); - EXPECT_EQ(0u, empty_string.GetID()); - EXPECT_EQ(0u, empty_string.GetID(1)); - EXPECT_EQ(0u, empty_string.GetID(-1)); - EXPECT_EQ(0u, empty_string.GetID(-1000000)); - - CFX_ByteStringC short_string("ab"); - EXPECT_EQ(FXBSTR_ID('a', 'b', 0, 0), short_string.GetID()); - EXPECT_EQ(FXBSTR_ID('b', 0, 0, 0), short_string.GetID(1)); - EXPECT_EQ(0u, short_string.GetID(2)); - EXPECT_EQ(0u, short_string.GetID(-1)); - EXPECT_EQ(0u, short_string.GetID(-1000000)); - - CFX_ByteStringC longer_string("abcdef"); - EXPECT_EQ(FXBSTR_ID('a', 'b', 'c', 'd'), longer_string.GetID()); - EXPECT_EQ(FXBSTR_ID('b', 'c', 'd', 'e'), longer_string.GetID(1)); - EXPECT_EQ(FXBSTR_ID('c', 'd', 'e', 'f'), longer_string.GetID(2)); - EXPECT_EQ(FXBSTR_ID('d', 'e', 'f', 0), longer_string.GetID(3)); - EXPECT_EQ(FXBSTR_ID('e', 'f', 0, 0), longer_string.GetID(4)); - EXPECT_EQ(FXBSTR_ID('f', 0, 0, 0), longer_string.GetID(5)); - EXPECT_EQ(0u, longer_string.GetID(6)); - EXPECT_EQ(0u, longer_string.GetID(-1)); - EXPECT_EQ(0u, longer_string.GetID(-1000000)); -} - -TEST(fxcrt, ByteStringCMid) { - CFX_ByteStringC null_string; - EXPECT_EQ(null_string, null_string.Mid(0, 1)); - EXPECT_EQ(null_string, null_string.Mid(1, 1)); - - CFX_ByteStringC empty_string(""); - EXPECT_EQ(empty_string, empty_string.Mid(0, 1)); - EXPECT_EQ(empty_string, empty_string.Mid(1, 1)); - - CFX_ByteStringC single_character("a"); - EXPECT_EQ(empty_string, single_character.Mid(0, 0)); - EXPECT_EQ(single_character, single_character.Mid(0, 1)); - EXPECT_EQ(empty_string, single_character.Mid(1, 0)); - EXPECT_EQ(empty_string, single_character.Mid(1, 1)); - - CFX_ByteStringC longer_string("abcdef"); - EXPECT_EQ(longer_string, longer_string.Mid(0, 6)); - EXPECT_EQ(longer_string, longer_string.Mid(0, 187)); - EXPECT_EQ(longer_string, longer_string.Mid(-42, 6)); - EXPECT_EQ(longer_string, longer_string.Mid(-42, 187)); - - CFX_ByteStringC leading_substring("ab"); - EXPECT_EQ(leading_substring, longer_string.Mid(0, 2)); - EXPECT_EQ(leading_substring, longer_string.Mid(-1, 2)); - - CFX_ByteStringC middle_substring("bcde"); - EXPECT_EQ(middle_substring, longer_string.Mid(1, 4)); - - CFX_ByteStringC trailing_substring("ef"); - EXPECT_EQ(trailing_substring, longer_string.Mid(4, 2)); - EXPECT_EQ(trailing_substring, longer_string.Mid(4, 3)); -} - -TEST(fxcrt, ByteStringCGetAt) { - CFX_ByteString short_string("a"); - CFX_ByteString longer_string("abc"); - CFX_ByteString embedded_nul_string("ab\0c", 4); - - EXPECT_EQ('a', short_string.GetAt(0)); - EXPECT_EQ('c', longer_string.GetAt(2)); - EXPECT_EQ('b', embedded_nul_string.GetAt(1)); - EXPECT_EQ('\0', embedded_nul_string.GetAt(2)); - EXPECT_EQ('c', embedded_nul_string.GetAt(3)); -} - -TEST(fxcrt, ByteStringCOperatorSubscript) { - // CFX_ByteStringC includes the NUL terminator for non-empty strings. - CFX_ByteStringC abc("abc"); - EXPECT_EQ('a', abc[0]); - EXPECT_EQ('b', abc[1]); - EXPECT_EQ('c', abc[2]); - EXPECT_EQ(0, abc[3]); -} - -TEST(fxcrt, ByteStringCOperatorLT) { - CFX_ByteStringC empty; - CFX_ByteStringC a("a"); - CFX_ByteStringC abc("abc"); - CFX_ByteStringC def("def"); - - EXPECT_FALSE(empty < empty); - EXPECT_FALSE(a < a); - EXPECT_FALSE(abc < abc); - EXPECT_FALSE(def < def); - - EXPECT_TRUE(empty < a); - EXPECT_FALSE(a < empty); - - EXPECT_TRUE(empty < abc); - EXPECT_FALSE(abc < empty); - - EXPECT_TRUE(empty < def); - EXPECT_FALSE(def < empty); - - EXPECT_TRUE(a < abc); - EXPECT_FALSE(abc < a); - - EXPECT_TRUE(a < def); - EXPECT_FALSE(def < a); - - EXPECT_TRUE(abc < def); - EXPECT_FALSE(def < abc); -} - -TEST(fxcrt, ByteStringCOperatorEQ) { - CFX_ByteStringC byte_string_c("hello"); - EXPECT_TRUE(byte_string_c == byte_string_c); - - CFX_ByteStringC byte_string_c_same1("hello"); - EXPECT_TRUE(byte_string_c == byte_string_c_same1); - EXPECT_TRUE(byte_string_c_same1 == byte_string_c); - - CFX_ByteStringC byte_string_c_same2(byte_string_c); - EXPECT_TRUE(byte_string_c == byte_string_c_same2); - EXPECT_TRUE(byte_string_c_same2 == byte_string_c); - - CFX_ByteStringC byte_string_c1("he"); - CFX_ByteStringC byte_string_c2("hellp"); - CFX_ByteStringC byte_string_c3("hellod"); - EXPECT_FALSE(byte_string_c == byte_string_c1); - EXPECT_FALSE(byte_string_c == byte_string_c2); - EXPECT_FALSE(byte_string_c == byte_string_c3); - EXPECT_FALSE(byte_string_c1 == byte_string_c); - EXPECT_FALSE(byte_string_c2 == byte_string_c); - EXPECT_FALSE(byte_string_c3 == byte_string_c); - - CFX_ByteString byte_string_same1("hello"); - EXPECT_TRUE(byte_string_c == byte_string_same1); - EXPECT_TRUE(byte_string_same1 == byte_string_c); - - CFX_ByteString byte_string1("he"); - CFX_ByteString byte_string2("hellp"); - CFX_ByteString byte_string3("hellod"); - EXPECT_FALSE(byte_string_c == byte_string1); - EXPECT_FALSE(byte_string_c == byte_string2); - EXPECT_FALSE(byte_string_c == byte_string3); - EXPECT_FALSE(byte_string1 == byte_string_c); - EXPECT_FALSE(byte_string2 == byte_string_c); - EXPECT_FALSE(byte_string3 == byte_string_c); - - const char* c_string_same1 = "hello"; - EXPECT_TRUE(byte_string_c == c_string_same1); - EXPECT_TRUE(c_string_same1 == byte_string_c); - - const char* c_string1 = "he"; - const char* c_string2 = "hellp"; - const char* c_string3 = "hellod"; - EXPECT_FALSE(byte_string_c == c_string1); - EXPECT_FALSE(byte_string_c == c_string2); - EXPECT_FALSE(byte_string_c == c_string3); - - EXPECT_FALSE(c_string1 == byte_string_c); - EXPECT_FALSE(c_string2 == byte_string_c); - EXPECT_FALSE(c_string3 == byte_string_c); -} - -TEST(fxcrt, ByteStringCOperatorNE) { - CFX_ByteStringC byte_string_c("hello"); - EXPECT_FALSE(byte_string_c != byte_string_c); - - CFX_ByteStringC byte_string_c_same1("hello"); - EXPECT_FALSE(byte_string_c != byte_string_c_same1); - EXPECT_FALSE(byte_string_c_same1 != byte_string_c); - - CFX_ByteStringC byte_string_c_same2(byte_string_c); - EXPECT_FALSE(byte_string_c != byte_string_c_same2); - EXPECT_FALSE(byte_string_c_same2 != byte_string_c); - - CFX_ByteStringC byte_string_c1("he"); - CFX_ByteStringC byte_string_c2("hellp"); - CFX_ByteStringC byte_string_c3("hellod"); - EXPECT_TRUE(byte_string_c != byte_string_c1); - EXPECT_TRUE(byte_string_c != byte_string_c2); - EXPECT_TRUE(byte_string_c != byte_string_c3); - EXPECT_TRUE(byte_string_c1 != byte_string_c); - EXPECT_TRUE(byte_string_c2 != byte_string_c); - EXPECT_TRUE(byte_string_c3 != byte_string_c); - - CFX_ByteString byte_string_same1("hello"); - EXPECT_FALSE(byte_string_c != byte_string_same1); - EXPECT_FALSE(byte_string_same1 != byte_string_c); - - CFX_ByteString byte_string1("he"); - CFX_ByteString byte_string2("hellp"); - CFX_ByteString byte_string3("hellod"); - EXPECT_TRUE(byte_string_c != byte_string1); - EXPECT_TRUE(byte_string_c != byte_string2); - EXPECT_TRUE(byte_string_c != byte_string3); - EXPECT_TRUE(byte_string1 != byte_string_c); - EXPECT_TRUE(byte_string2 != byte_string_c); - EXPECT_TRUE(byte_string3 != byte_string_c); - - const char* c_string_same1 = "hello"; - EXPECT_FALSE(byte_string_c != c_string_same1); - EXPECT_FALSE(c_string_same1 != byte_string_c); - - const char* c_string1 = "he"; - const char* c_string2 = "hellp"; - const char* c_string3 = "hellod"; - EXPECT_TRUE(byte_string_c != c_string1); - EXPECT_TRUE(byte_string_c != c_string2); - EXPECT_TRUE(byte_string_c != c_string3); - - EXPECT_TRUE(c_string1 != byte_string_c); - EXPECT_TRUE(c_string2 != byte_string_c); - EXPECT_TRUE(c_string3 != byte_string_c); -} - -TEST(fxcrt, ByteStringFormatWidth) { - { - CFX_ByteString str; - str.Format("%5d", 1); - EXPECT_EQ(" 1", str); - } - - { - CFX_ByteString str; - str.Format("%d", 1); - EXPECT_EQ("1", str); - } - - { - CFX_ByteString str; - str.Format("%*d", 5, 1); - EXPECT_EQ(" 1", str); - } - - { - CFX_ByteString str; - str.Format("%-1d", 1); - EXPECT_EQ("1", str); - } - - { - CFX_ByteString str; - str.Format("%0d", 1); - EXPECT_EQ("1", str); - } - - { - CFX_ByteString str; - str.Format("%1048576d", 1); - EXPECT_EQ("Bad width", str); - } -} - -TEST(fxcrt, ByteStringFormatPrecision) { - { - CFX_ByteString str; - str.Format("%.2f", 1.12345); - EXPECT_EQ("1.12", str); - } - - { - CFX_ByteString str; - str.Format("%.*f", 3, 1.12345); - EXPECT_EQ("1.123", str); - } - - { - CFX_ByteString str; - str.Format("%f", 1.12345); - EXPECT_EQ("1.123450", str); - } - - { - CFX_ByteString str; - str.Format("%-1f", 1.12345); - EXPECT_EQ("1.123450", str); - } - - { - CFX_ByteString str; - str.Format("%0f", 1.12345); - EXPECT_EQ("1.123450", str); - } - - { - CFX_ByteString str; - str.Format("%.1048576f", 1.2); - EXPECT_EQ("Bad precision", str); - } -} - -TEST(fxcrt, EmptyByteString) { - CFX_ByteString empty_str; - EXPECT_TRUE(empty_str.IsEmpty()); - EXPECT_EQ(0, empty_str.GetLength()); - const FX_CHAR* cstr = empty_str.c_str(); - EXPECT_EQ(0, FXSYS_strlen(cstr)); -} diff --git a/core/src/fxcrt/fx_basic_buffer.cpp b/core/src/fxcrt/fx_basic_buffer.cpp deleted file mode 100644 index a3039f4188..0000000000 --- a/core/src/fxcrt/fx_basic_buffer.cpp +++ /dev/null @@ -1,428 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_safe_types.h" -#include "third_party/base/numerics/safe_conversions.h" - -CFX_BinaryBuf::CFX_BinaryBuf() - : m_AllocStep(0), m_AllocSize(0), m_DataSize(0) {} - -CFX_BinaryBuf::CFX_BinaryBuf(FX_STRSIZE size) - : m_AllocStep(0), m_AllocSize(size), m_DataSize(size) { - m_pBuffer.reset(FX_Alloc(uint8_t, size)); -} - -CFX_BinaryBuf::~CFX_BinaryBuf() {} - -void CFX_BinaryBuf::Delete(int start_index, int count) { - if (!m_pBuffer || start_index < 0 || count < 0 || count > m_DataSize || - start_index > m_DataSize - count) { - return; - } - FXSYS_memmove(m_pBuffer.get() + start_index, - m_pBuffer.get() + start_index + count, - m_DataSize - start_index - count); - m_DataSize -= count; -} - -void CFX_BinaryBuf::Clear() { - m_DataSize = 0; -} - -uint8_t* CFX_BinaryBuf::DetachBuffer() { - m_DataSize = 0; - m_AllocSize = 0; - return m_pBuffer.release(); -} - -void CFX_BinaryBuf::AttachData(uint8_t* buffer, FX_STRSIZE size) { - m_pBuffer.reset(buffer); - m_DataSize = size; - m_AllocSize = size; -} - -void CFX_BinaryBuf::EstimateSize(FX_STRSIZE size, FX_STRSIZE step) { - m_AllocStep = step; - if (m_AllocSize < size) - ExpandBuf(size - m_DataSize); -} - -void CFX_BinaryBuf::ExpandBuf(FX_STRSIZE add_size) { - FX_SAFE_STRSIZE new_size = m_DataSize; - new_size += add_size; - if (m_AllocSize >= new_size.ValueOrDie()) - return; - - int alloc_step = std::max(128, m_AllocStep ? m_AllocStep : m_AllocSize / 4); - new_size += alloc_step - 1; // Quantize, don't combine these lines. - new_size /= alloc_step; - new_size *= alloc_step; - m_AllocSize = new_size.ValueOrDie(); - m_pBuffer.reset(m_pBuffer - ? FX_Realloc(uint8_t, m_pBuffer.release(), m_AllocSize) - : FX_Alloc(uint8_t, m_AllocSize)); -} - -void CFX_BinaryBuf::AppendBlock(const void* pBuf, FX_STRSIZE size) { - if (size <= 0) - return; - - ExpandBuf(size); - if (pBuf) { - FXSYS_memcpy(m_pBuffer.get() + m_DataSize, pBuf, size); - } else { - FXSYS_memset(m_pBuffer.get() + m_DataSize, 0, size); - } - m_DataSize += size; -} - -void CFX_BinaryBuf::InsertBlock(FX_STRSIZE pos, - const void* pBuf, - FX_STRSIZE size) { - if (size <= 0) - return; - - ExpandBuf(size); - FXSYS_memmove(m_pBuffer.get() + pos + size, m_pBuffer.get() + pos, - m_DataSize - pos); - if (pBuf) { - FXSYS_memcpy(m_pBuffer.get() + pos, pBuf, size); - } else { - FXSYS_memset(m_pBuffer.get() + pos, 0, size); - } - m_DataSize += size; -} - -CFX_ByteStringC CFX_ByteTextBuf::GetByteString() const { - return CFX_ByteStringC(m_pBuffer.get(), m_DataSize); -} - -CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(const CFX_ByteStringC& lpsz) { - AppendBlock(lpsz.GetPtr(), lpsz.GetLength()); - return *this; -} - -CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(int i) { - char buf[32]; - FXSYS_itoa(i, buf, 10); - AppendBlock(buf, FXSYS_strlen(buf)); - return *this; -} - -CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(FX_DWORD i) { - char buf[32]; - FXSYS_itoa(i, buf, 10); - AppendBlock(buf, FXSYS_strlen(buf)); - return *this; -} - -CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(double f) { - char buf[32]; - FX_STRSIZE len = FX_ftoa((FX_FLOAT)f, buf); - AppendBlock(buf, len); - return *this; -} - -CFX_ByteTextBuf& CFX_ByteTextBuf::operator<<(const CFX_ByteTextBuf& buf) { - AppendBlock(buf.m_pBuffer.get(), buf.m_DataSize); - return *this; -} - -void CFX_WideTextBuf::AppendChar(FX_WCHAR ch) { - ExpandBuf(sizeof(FX_WCHAR)); - *(FX_WCHAR*)(m_pBuffer.get() + m_DataSize) = ch; - m_DataSize += sizeof(FX_WCHAR); -} - -CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const CFX_WideStringC& str) { - AppendBlock(str.GetPtr(), str.GetLength() * sizeof(FX_WCHAR)); - return *this; -} - -CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const CFX_WideString& str) { - AppendBlock(str.c_str(), str.GetLength() * sizeof(FX_WCHAR)); - return *this; -} - -CFX_WideTextBuf& CFX_WideTextBuf::operator<<(int i) { - char buf[32]; - FXSYS_itoa(i, buf, 10); - FX_STRSIZE len = FXSYS_strlen(buf); - ExpandBuf(len * sizeof(FX_WCHAR)); - FX_WCHAR* str = (FX_WCHAR*)(m_pBuffer.get() + m_DataSize); - for (FX_STRSIZE j = 0; j < len; j++) { - *str++ = buf[j]; - } - m_DataSize += len * sizeof(FX_WCHAR); - return *this; -} - -CFX_WideTextBuf& CFX_WideTextBuf::operator<<(double f) { - char buf[32]; - FX_STRSIZE len = FX_ftoa((FX_FLOAT)f, buf); - ExpandBuf(len * sizeof(FX_WCHAR)); - FX_WCHAR* str = (FX_WCHAR*)(m_pBuffer.get() + m_DataSize); - for (FX_STRSIZE i = 0; i < len; i++) { - *str++ = buf[i]; - } - m_DataSize += len * sizeof(FX_WCHAR); - return *this; -} - -CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const FX_WCHAR* lpsz) { - AppendBlock(lpsz, FXSYS_wcslen(lpsz) * sizeof(FX_WCHAR)); - return *this; -} - -CFX_WideTextBuf& CFX_WideTextBuf::operator<<(const CFX_WideTextBuf& buf) { - AppendBlock(buf.m_pBuffer.get(), buf.m_DataSize); - return *this; -} - -CFX_WideStringC CFX_WideTextBuf::GetWideString() const { - return CFX_WideStringC((const FX_WCHAR*)m_pBuffer.get(), - m_DataSize / sizeof(FX_WCHAR)); -} - -#ifdef PDF_ENABLE_XFA -CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(uint8_t i) { - if (m_pStream) { - m_pStream->WriteBlock(&i, 1); - } else { - m_SavingBuf.AppendByte(i); - } - return *this; -} -CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(int i) { - if (m_pStream) { - m_pStream->WriteBlock(&i, sizeof(int)); - } else { - m_SavingBuf.AppendBlock(&i, sizeof(int)); - } - return *this; -} -CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(FX_DWORD i) { - if (m_pStream) { - m_pStream->WriteBlock(&i, sizeof(FX_DWORD)); - } else { - m_SavingBuf.AppendBlock(&i, sizeof(FX_DWORD)); - } - return *this; -} -CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(FX_FLOAT f) { - if (m_pStream) { - m_pStream->WriteBlock(&f, sizeof(FX_FLOAT)); - } else { - m_SavingBuf.AppendBlock(&f, sizeof(FX_FLOAT)); - } - return *this; -} -CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(const CFX_ByteStringC& bstr) { - int len = bstr.GetLength(); - if (m_pStream) { - m_pStream->WriteBlock(&len, sizeof(int)); - m_pStream->WriteBlock(bstr.GetPtr(), len); - } else { - m_SavingBuf.AppendBlock(&len, sizeof(int)); - m_SavingBuf.AppendBlock(bstr.GetPtr(), len); - } - return *this; -} -CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(const FX_WCHAR* wstr) { - FX_STRSIZE len = FXSYS_wcslen(wstr); - if (m_pStream) { - m_pStream->WriteBlock(&len, sizeof(int)); - m_pStream->WriteBlock(wstr, len); - } else { - m_SavingBuf.AppendBlock(&len, sizeof(int)); - m_SavingBuf.AppendBlock(wstr, len); - } - return *this; -} -CFX_ArchiveSaver& CFX_ArchiveSaver::operator<<(const CFX_WideString& wstr) { - CFX_ByteString encoded = wstr.UTF16LE_Encode(); - return operator<<(encoded); -} -void CFX_ArchiveSaver::Write(const void* pData, FX_STRSIZE dwSize) { - if (m_pStream) { - m_pStream->WriteBlock(pData, dwSize); - } else { - m_SavingBuf.AppendBlock(pData, dwSize); - } -} -CFX_ArchiveLoader::CFX_ArchiveLoader(const uint8_t* pData, FX_DWORD dwSize) { - m_pLoadingBuf = pData; - m_LoadingPos = 0; - m_LoadingSize = dwSize; -} -FX_BOOL CFX_ArchiveLoader::IsEOF() { - return m_LoadingPos >= m_LoadingSize; -} -CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(uint8_t& i) { - if (m_LoadingPos >= m_LoadingSize) { - return *this; - } - i = m_pLoadingBuf[m_LoadingPos++]; - return *this; -} -CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(int& i) { - Read(&i, sizeof(int)); - return *this; -} -CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(FX_DWORD& i) { - Read(&i, sizeof(FX_DWORD)); - return *this; -} -CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(FX_FLOAT& i) { - Read(&i, sizeof(FX_FLOAT)); - return *this; -} -CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(CFX_ByteString& str) { - if (m_LoadingPos + 4 > m_LoadingSize) { - return *this; - } - int len; - operator>>(len); - str.Empty(); - if (len <= 0 || m_LoadingPos + len > m_LoadingSize) { - return *this; - } - FX_CHAR* buffer = str.GetBuffer(len); - FXSYS_memcpy(buffer, m_pLoadingBuf + m_LoadingPos, len); - str.ReleaseBuffer(len); - m_LoadingPos += len; - return *this; -} -CFX_ArchiveLoader& CFX_ArchiveLoader::operator>>(CFX_WideString& str) { - CFX_ByteString encoded; - operator>>(encoded); - str = CFX_WideString::FromUTF16LE( - reinterpret_cast(encoded.c_str()), - encoded.GetLength() / sizeof(unsigned short)); - return *this; -} -FX_BOOL CFX_ArchiveLoader::Read(void* pBuf, FX_DWORD dwSize) { - if (m_LoadingPos + dwSize > m_LoadingSize) { - return FALSE; - } - FXSYS_memcpy(pBuf, m_pLoadingBuf + m_LoadingPos, dwSize); - m_LoadingPos += dwSize; - return TRUE; -} -#endif // PDF_ENABLE_XFA - -void CFX_BitStream::Init(const uint8_t* pData, FX_DWORD dwSize) { - m_pData = pData; - m_BitSize = dwSize * 8; - m_BitPos = 0; -} -void CFX_BitStream::ByteAlign() { - int mod = m_BitPos % 8; - if (mod == 0) { - return; - } - m_BitPos += 8 - mod; -} -FX_DWORD CFX_BitStream::GetBits(FX_DWORD nBits) { - if (nBits > m_BitSize || m_BitPos + nBits > m_BitSize) { - return 0; - } - if (nBits == 1) { - int bit = (m_pData[m_BitPos / 8] & (1 << (7 - m_BitPos % 8))) ? 1 : 0; - m_BitPos++; - return bit; - } - FX_DWORD byte_pos = m_BitPos / 8; - FX_DWORD bit_pos = m_BitPos % 8, bit_left = nBits; - FX_DWORD result = 0; - if (bit_pos) { - if (8 - bit_pos >= bit_left) { - result = - (m_pData[byte_pos] & (0xff >> bit_pos)) >> (8 - bit_pos - bit_left); - m_BitPos += bit_left; - return result; - } - bit_left -= 8 - bit_pos; - result = (m_pData[byte_pos++] & ((1 << (8 - bit_pos)) - 1)) << bit_left; - } - while (bit_left >= 8) { - bit_left -= 8; - result |= m_pData[byte_pos++] << bit_left; - } - if (bit_left) { - result |= m_pData[byte_pos] >> (8 - bit_left); - } - m_BitPos += nBits; - return result; -} - -CFX_FileBufferArchive::CFX_FileBufferArchive() - : m_Length(0), m_pFile(nullptr) {} - -CFX_FileBufferArchive::~CFX_FileBufferArchive() {} - -void CFX_FileBufferArchive::Clear() { - m_Length = 0; - m_pBuffer.reset(); - m_pFile = nullptr; -} - -bool CFX_FileBufferArchive::Flush() { - size_t nRemaining = m_Length; - m_Length = 0; - if (!m_pFile) - return false; - if (!m_pBuffer || !nRemaining) - return true; - return m_pFile->WriteBlock(m_pBuffer.get(), nRemaining) > 0; -} - -int32_t CFX_FileBufferArchive::AppendBlock(const void* pBuf, size_t size) { - if (!pBuf || size < 1) { - return 0; - } - if (!m_pBuffer) { - m_pBuffer.reset(FX_Alloc(uint8_t, kBufSize)); - } - const uint8_t* buffer = reinterpret_cast(pBuf); - size_t temp_size = size; - while (temp_size) { - size_t buf_size = std::min(kBufSize - m_Length, temp_size); - FXSYS_memcpy(m_pBuffer.get() + m_Length, buffer, buf_size); - m_Length += buf_size; - if (m_Length == kBufSize) { - if (!Flush()) { - return -1; - } - } - temp_size -= buf_size; - buffer += buf_size; - } - return pdfium::base::checked_cast(size); -} - -int32_t CFX_FileBufferArchive::AppendByte(uint8_t byte) { - return AppendBlock(&byte, 1); -} - -int32_t CFX_FileBufferArchive::AppendDWord(FX_DWORD i) { - char buf[32]; - FXSYS_itoa(i, buf, 10); - return AppendBlock(buf, (size_t)FXSYS_strlen(buf)); -} - -int32_t CFX_FileBufferArchive::AppendString(const CFX_ByteStringC& lpsz) { - return AppendBlock(lpsz.GetPtr(), lpsz.GetLength()); -} - -void CFX_FileBufferArchive::AttachFile(IFX_StreamWrite* pFile) { - FXSYS_assert(pFile); - m_pFile = pFile; -} diff --git a/core/src/fxcrt/fx_basic_coords.cpp b/core/src/fxcrt/fx_basic_coords.cpp deleted file mode 100644 index 4f723ef919..0000000000 --- a/core/src/fxcrt/fx_basic_coords.cpp +++ /dev/null @@ -1,517 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fxcrt/fx_coordinates.h" -#include "core/include/fxcrt/fx_ext.h" - -void FX_RECT::Normalize() { - if (left > right) { - int temp = left; - left = right; - right = temp; - } - if (top > bottom) { - int temp = top; - top = bottom; - bottom = temp; - } -} -void FX_RECT::Intersect(const FX_RECT& src) { - FX_RECT src_n = src; - src_n.Normalize(); - Normalize(); - left = left > src_n.left ? left : src_n.left; - top = top > src_n.top ? top : src_n.top; - right = right < src_n.right ? right : src_n.right; - bottom = bottom < src_n.bottom ? bottom : src_n.bottom; - if (left > right || top > bottom) { - left = top = right = bottom = 0; - } -} -void FX_RECT::Union(const FX_RECT& other_rect) { - Normalize(); - FX_RECT other = other_rect; - other.Normalize(); - left = left < other.left ? left : other.left; - right = right > other.right ? right : other.right; - bottom = bottom > other.bottom ? bottom : other.bottom; - top = top < other.top ? top : other.top; -} -FX_BOOL GetIntersection(FX_FLOAT low1, - FX_FLOAT high1, - FX_FLOAT low2, - FX_FLOAT high2, - FX_FLOAT& interlow, - FX_FLOAT& interhigh) { - if (low1 >= high2 || low2 >= high1) { - return FALSE; - } - interlow = low1 > low2 ? low1 : low2; - interhigh = high1 > high2 ? high2 : high1; - return TRUE; -} -extern "C" int FXSYS_round(FX_FLOAT d) { - if (d < (FX_FLOAT)INT_MIN) { - return INT_MIN; - } - if (d > (FX_FLOAT)INT_MAX) { - return INT_MAX; - } - - return (int)round(d); -} -CFX_FloatRect::CFX_FloatRect(const FX_RECT& rect) { - left = (FX_FLOAT)(rect.left); - right = (FX_FLOAT)(rect.right); - bottom = (FX_FLOAT)(rect.top); - top = (FX_FLOAT)(rect.bottom); -} -void CFX_FloatRect::Normalize() { - FX_FLOAT temp; - if (left > right) { - temp = left; - left = right; - right = temp; - } - if (bottom > top) { - temp = top; - top = bottom; - bottom = temp; - } -} -void CFX_FloatRect::Intersect(const CFX_FloatRect& other_rect) { - Normalize(); - CFX_FloatRect other = other_rect; - other.Normalize(); - left = left > other.left ? left : other.left; - right = right < other.right ? right : other.right; - bottom = bottom > other.bottom ? bottom : other.bottom; - top = top < other.top ? top : other.top; - if (left > right || bottom > top) { - left = right = bottom = top = 0; - } -} -void CFX_FloatRect::Union(const CFX_FloatRect& other_rect) { - Normalize(); - CFX_FloatRect other = other_rect; - other.Normalize(); - left = left < other.left ? left : other.left; - right = right > other.right ? right : other.right; - bottom = bottom < other.bottom ? bottom : other.bottom; - top = top > other.top ? top : other.top; -} -void CFX_FloatRect::Transform(const CFX_Matrix* pMatrix) { - pMatrix->TransformRect(left, right, top, bottom); -} -int CFX_FloatRect::Substract4(CFX_FloatRect& s, CFX_FloatRect* pRects) { - Normalize(); - s.Normalize(); - int nRects = 0; - CFX_FloatRect rects[4]; - if (left < s.left) { - rects[nRects].left = left; - rects[nRects].right = s.left; - rects[nRects].bottom = bottom; - rects[nRects].top = top; - nRects++; - } - if (s.left < right && s.top < top) { - rects[nRects].left = s.left; - rects[nRects].right = right; - rects[nRects].bottom = s.top; - rects[nRects].top = top; - nRects++; - } - if (s.top > bottom && s.right < right) { - rects[nRects].left = s.right; - rects[nRects].right = right; - rects[nRects].bottom = bottom; - rects[nRects].top = s.top; - nRects++; - } - if (s.bottom > bottom) { - rects[nRects].left = s.left; - rects[nRects].right = s.right; - rects[nRects].bottom = bottom; - rects[nRects].top = s.bottom; - nRects++; - } - if (nRects == 0) { - return 0; - } - for (int i = 0; i < nRects; i++) { - pRects[i] = rects[i]; - pRects[i].Intersect(*this); - } - return nRects; -} -FX_RECT CFX_FloatRect::GetOutterRect() const { - CFX_FloatRect rect1 = *this; - FX_RECT rect; - rect.left = (int)FXSYS_floor(rect1.left); - rect.right = (int)FXSYS_ceil(rect1.right); - rect.top = (int)FXSYS_floor(rect1.bottom); - rect.bottom = (int)FXSYS_ceil(rect1.top); - rect.Normalize(); - return rect; -} -FX_RECT CFX_FloatRect::GetInnerRect() const { - CFX_FloatRect rect1 = *this; - FX_RECT rect; - rect.left = (int)FXSYS_ceil(rect1.left); - rect.right = (int)FXSYS_floor(rect1.right); - rect.top = (int)FXSYS_ceil(rect1.bottom); - rect.bottom = (int)FXSYS_floor(rect1.top); - rect.Normalize(); - return rect; -} -static void _MatchFloatRange(FX_FLOAT f1, FX_FLOAT f2, int& i1, int& i2) { - int length = (int)FXSYS_ceil(f2 - f1); - int i1_1 = (int)FXSYS_floor(f1); - int i1_2 = (int)FXSYS_ceil(f1); - FX_FLOAT error1 = f1 - i1_1 + (FX_FLOAT)FXSYS_fabs(f2 - i1_1 - length); - FX_FLOAT error2 = i1_2 - f1 + (FX_FLOAT)FXSYS_fabs(f2 - i1_2 - length); - i1 = (error1 > error2) ? i1_2 : i1_1; - i2 = i1 + length; -} -FX_RECT CFX_FloatRect::GetClosestRect() const { - CFX_FloatRect rect1 = *this; - FX_RECT rect; - _MatchFloatRange(rect1.left, rect1.right, rect.left, rect.right); - _MatchFloatRange(rect1.bottom, rect1.top, rect.top, rect.bottom); - rect.Normalize(); - return rect; -} - -bool CFX_FloatRect::Contains(const CFX_FloatRect& other_rect) const { - CFX_FloatRect n1(*this); - CFX_FloatRect n2(other_rect); - n1.Normalize(); - n2.Normalize(); - return n2.left >= n1.left && n2.right <= n1.right && n2.bottom >= n1.bottom && - n2.top <= n1.top; -} - -bool CFX_FloatRect::Contains(FX_FLOAT x, FX_FLOAT y) const { - CFX_FloatRect n1(*this); - n1.Normalize(); - return x <= n1.right && x >= n1.left && y <= n1.top && y >= n1.bottom; -} - -void CFX_FloatRect::UpdateRect(FX_FLOAT x, FX_FLOAT y) { - if (left > x) { - left = x; - } - if (right < x) { - right = x; - } - if (bottom > y) { - bottom = y; - } - if (top < y) { - top = y; - } -} -CFX_FloatRect CFX_FloatRect::GetBBox(const CFX_PointF* pPoints, int nPoints) { - if (nPoints == 0) { - return CFX_FloatRect(); - } - FX_FLOAT min_x = pPoints->x, max_x = pPoints->x, min_y = pPoints->y, - max_y = pPoints->y; - for (int i = 1; i < nPoints; i++) { - if (min_x > pPoints[i].x) { - min_x = pPoints[i].x; - } - if (max_x < pPoints[i].x) { - max_x = pPoints[i].x; - } - if (min_y > pPoints[i].y) { - min_y = pPoints[i].y; - } - if (max_y < pPoints[i].y) { - max_y = pPoints[i].y; - } - } - return CFX_FloatRect(min_x, min_y, max_x, max_y); -} -void CFX_Matrix::Set(FX_FLOAT other_a, - FX_FLOAT other_b, - FX_FLOAT other_c, - FX_FLOAT other_d, - FX_FLOAT other_e, - FX_FLOAT other_f) { - a = other_a; - b = other_b; - c = other_c; - d = other_d; - e = other_e; - f = other_f; -} -void CFX_Matrix::Set(const FX_FLOAT n[6]) { - a = n[0]; - b = n[1]; - c = n[2]; - d = n[3]; - e = n[4]; - f = n[5]; -} -void CFX_Matrix::SetReverse(const CFX_Matrix& m) { - FX_FLOAT i = m.a * m.d - m.b * m.c; - if (FXSYS_fabs(i) == 0) { - return; - } - FX_FLOAT j = -i; - a = m.d / i; - b = m.b / j; - c = m.c / j; - d = m.a / i; - e = (m.c * m.f - m.d * m.e) / i; - f = (m.a * m.f - m.b * m.e) / j; -} -static void FXCRT_Matrix_Concat(CFX_Matrix& m, - const CFX_Matrix& m1, - const CFX_Matrix& m2) { - FX_FLOAT aa = m1.a * m2.a + m1.b * m2.c; - FX_FLOAT bb = m1.a * m2.b + m1.b * m2.d; - FX_FLOAT cc = m1.c * m2.a + m1.d * m2.c; - FX_FLOAT dd = m1.c * m2.b + m1.d * m2.d; - FX_FLOAT ee = m1.e * m2.a + m1.f * m2.c + m2.e; - FX_FLOAT ff = m1.e * m2.b + m1.f * m2.d + m2.f; - m.a = aa, m.b = bb, m.c = cc, m.d = dd, m.e = ee, m.f = ff; -} -void CFX_Matrix::Concat(FX_FLOAT a, - FX_FLOAT b, - FX_FLOAT c, - FX_FLOAT d, - FX_FLOAT e, - FX_FLOAT f, - FX_BOOL bPrepended) { - CFX_Matrix m; - m.Set(a, b, c, d, e, f); - Concat(m, bPrepended); -} -void CFX_Matrix::Concat(const CFX_Matrix& m, FX_BOOL bPrepended) { - if (bPrepended) { - FXCRT_Matrix_Concat(*this, m, *this); - } else { - FXCRT_Matrix_Concat(*this, *this, m); - } -} -void CFX_Matrix::ConcatInverse(const CFX_Matrix& src, FX_BOOL bPrepended) { - CFX_Matrix m; - m.SetReverse(src); - Concat(m, bPrepended); -} -FX_BOOL CFX_Matrix::IsInvertible() const { - return FXSYS_fabs(a * d - b * c) >= 0.0001f; -} -FX_BOOL CFX_Matrix::Is90Rotated() const { - return FXSYS_fabs(a * 1000) < FXSYS_fabs(b) && - FXSYS_fabs(d * 1000) < FXSYS_fabs(c); -} -FX_BOOL CFX_Matrix::IsScaled() const { - return FXSYS_fabs(b * 1000) < FXSYS_fabs(a) && - FXSYS_fabs(c * 1000) < FXSYS_fabs(d); -} -void CFX_Matrix::Translate(FX_FLOAT x, FX_FLOAT y, FX_BOOL bPrepended) { - if (bPrepended) { - e += x * a + y * c; - f += y * d + x * b; - } else { - e += x, f += y; - } -} -void CFX_Matrix::Scale(FX_FLOAT sx, FX_FLOAT sy, FX_BOOL bPrepended) { - a *= sx, d *= sy; - if (bPrepended) { - b *= sx; - c *= sy; - } else { - b *= sy; - c *= sx; - e *= sx; - f *= sy; - } -} -void CFX_Matrix::Rotate(FX_FLOAT fRadian, FX_BOOL bPrepended) { - FX_FLOAT cosValue = FXSYS_cos(fRadian); - FX_FLOAT sinValue = FXSYS_sin(fRadian); - CFX_Matrix m; - m.Set(cosValue, sinValue, -sinValue, cosValue, 0, 0); - if (bPrepended) { - FXCRT_Matrix_Concat(*this, m, *this); - } else { - FXCRT_Matrix_Concat(*this, *this, m); - } -} -void CFX_Matrix::RotateAt(FX_FLOAT fRadian, - FX_FLOAT dx, - FX_FLOAT dy, - FX_BOOL bPrepended) { - Translate(dx, dy, bPrepended); - Rotate(fRadian, bPrepended); - Translate(-dx, -dy, bPrepended); -} -void CFX_Matrix::Shear(FX_FLOAT fAlphaRadian, - FX_FLOAT fBetaRadian, - FX_BOOL bPrepended) { - CFX_Matrix m; - m.Set(1, FXSYS_tan(fAlphaRadian), FXSYS_tan(fBetaRadian), 1, 0, 0); - if (bPrepended) { - FXCRT_Matrix_Concat(*this, m, *this); - } else { - FXCRT_Matrix_Concat(*this, *this, m); - } -} -void CFX_Matrix::MatchRect(const CFX_FloatRect& dest, - const CFX_FloatRect& src) { - FX_FLOAT fDiff = src.left - src.right; - a = FXSYS_fabs(fDiff) < 0.001f ? 1 : (dest.left - dest.right) / fDiff; - fDiff = src.bottom - src.top; - d = FXSYS_fabs(fDiff) < 0.001f ? 1 : (dest.bottom - dest.top) / fDiff; - e = dest.left - src.left * a; - f = dest.bottom - src.bottom * d; - b = 0; - c = 0; -} -FX_FLOAT CFX_Matrix::GetXUnit() const { - if (b == 0) { - return (a > 0 ? a : -a); - } - if (a == 0) { - return (b > 0 ? b : -b); - } - return FXSYS_sqrt(a * a + b * b); -} -FX_FLOAT CFX_Matrix::GetYUnit() const { - if (c == 0) { - return (d > 0 ? d : -d); - } - if (d == 0) { - return (c > 0 ? c : -c); - } - return FXSYS_sqrt(c * c + d * d); -} -void CFX_Matrix::GetUnitRect(CFX_RectF& rect) const { - rect.left = rect.top = 0; - rect.width = rect.height = 1; - TransformRect(rect); -} -CFX_FloatRect CFX_Matrix::GetUnitRect() const { - CFX_FloatRect rect(0, 0, 1, 1); - rect.Transform((const CFX_Matrix*)this); - return rect; -} -FX_FLOAT CFX_Matrix::GetUnitArea() const { - FX_FLOAT A = FXSYS_sqrt(a * a + b * b); - FX_FLOAT B = FXSYS_sqrt(c * c + d * d); - FX_FLOAT ac = a + c, bd = b + d; - FX_FLOAT C = FXSYS_sqrt(ac * ac + bd * bd); - FX_FLOAT P = (A + B + C) / 2; - return FXSYS_sqrt(P * (P - A) * (P - B) * (P - C)) * 2; -} -FX_FLOAT CFX_Matrix::TransformXDistance(FX_FLOAT dx) const { - FX_FLOAT fx = a * dx, fy = b * dx; - return FXSYS_sqrt(fx * fx + fy * fy); -} -int32_t CFX_Matrix::TransformXDistance(int32_t dx) const { - FX_FLOAT fx = a * dx, fy = b * dx; - return FXSYS_round(FXSYS_sqrt(fx * fx + fy * fy)); -} -FX_FLOAT CFX_Matrix::TransformYDistance(FX_FLOAT dy) const { - FX_FLOAT fx = c * dy, fy = d * dy; - return FXSYS_sqrt(fx * fx + fy * fy); -} -int32_t CFX_Matrix::TransformYDistance(int32_t dy) const { - FX_FLOAT fx = c * dy, fy = d * dy; - return FXSYS_round(FXSYS_sqrt(fx * fx + fy * fy)); -} -FX_FLOAT CFX_Matrix::TransformDistance(FX_FLOAT dx, FX_FLOAT dy) const { - FX_FLOAT fx = a * dx + c * dy, fy = b * dx + d * dy; - return FXSYS_sqrt(fx * fx + fy * fy); -} -int32_t CFX_Matrix::TransformDistance(int32_t dx, int32_t dy) const { - FX_FLOAT fx = a * dx + c * dy, fy = b * dx + d * dy; - return FXSYS_round(FXSYS_sqrt(fx * fx + fy * fy)); -} -FX_FLOAT CFX_Matrix::TransformDistance(FX_FLOAT distance) const { - return distance * (GetXUnit() + GetYUnit()) / 2; -} -void CFX_Matrix::TransformVector(CFX_VectorF& v) const { - FX_FLOAT fx = a * v.x + c * v.y; - FX_FLOAT fy = b * v.x + d * v.y; - v.x = fx, v.y = fy; -} -void CFX_Matrix::TransformVector(CFX_Vector& v) const { - FX_FLOAT fx = a * v.x + c * v.y; - FX_FLOAT fy = b * v.x + d * v.y; - v.x = FXSYS_round(fx); - v.y = FXSYS_round(fy); -} -void CFX_Matrix::TransformPoint(FX_FLOAT& x, FX_FLOAT& y) const { - FX_FLOAT fx = a * x + c * y + e; - FX_FLOAT fy = b * x + d * y + f; - x = fx, y = fy; -} -void CFX_Matrix::TransformPoint(int32_t& x, int32_t& y) const { - FX_FLOAT fx = a * x + c * y + e; - FX_FLOAT fy = b * x + d * y + f; - x = FXSYS_round(fx); - y = FXSYS_round(fy); -} -void CFX_Matrix::TransformRect(CFX_RectF& rect) const { - FX_FLOAT right = rect.right(), bottom = rect.bottom(); - TransformRect(rect.left, right, bottom, rect.top); - rect.width = right - rect.left; - rect.height = bottom - rect.top; -} -void CFX_Matrix::TransformRect(CFX_Rect& rect) const { - FX_FLOAT left = (FX_FLOAT)rect.left; - FX_FLOAT top = (FX_FLOAT)rect.bottom(); - FX_FLOAT right = (FX_FLOAT)rect.right(); - FX_FLOAT bottom = (FX_FLOAT)rect.top; - TransformRect(left, right, top, bottom); - rect.left = FXSYS_round(left); - rect.top = FXSYS_round(bottom); - rect.width = FXSYS_round(right - left); - rect.height = FXSYS_round(top - bottom); -} -void CFX_Matrix::TransformRect(FX_FLOAT& left, - FX_FLOAT& right, - FX_FLOAT& top, - FX_FLOAT& bottom) const { - FX_FLOAT x[4], y[4]; - x[0] = left; - y[0] = top; - x[1] = left; - y[1] = bottom; - x[2] = right; - y[2] = top; - x[3] = right; - y[3] = bottom; - int i; - for (i = 0; i < 4; i++) { - Transform(x[i], y[i], x[i], y[i]); - } - right = left = x[0]; - top = bottom = y[0]; - for (i = 1; i < 4; i++) { - if (right < x[i]) { - right = x[i]; - } - if (left > x[i]) { - left = x[i]; - } - if (top < y[i]) { - top = y[i]; - } - if (bottom > y[i]) { - bottom = y[i]; - } - } -} diff --git a/core/src/fxcrt/fx_basic_gcc.cpp b/core/src/fxcrt/fx_basic_gcc.cpp deleted file mode 100644 index 2c9c54c8b6..0000000000 --- a/core/src/fxcrt/fx_basic_gcc.cpp +++ /dev/null @@ -1,242 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include -#include -#include - -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_string.h" - -template -IntType FXSYS_StrToInt(const CharType* str) { - if (!str) - return 0; - - bool neg = std::numeric_limits::is_signed && *str == '-'; - if (neg) - str++; - - IntType num = 0; - while (*str && FXSYS_isDecimalDigit(*str)) { - IntType val = FXSYS_toDecimalDigit(*str); - if (num > (std::numeric_limits::max() - val) / 10) - break; - - num = num * 10 + val; - str++; - } - return neg ? -num : num; -} - -template -STR_T FXSYS_IntToStr(T value, STR_T str, int radix) { - if (radix < 2 || radix > 16) { - str[0] = 0; - return str; - } - if (value == 0) { - str[0] = '0'; - str[1] = 0; - return str; - } - int i = 0; - UT uvalue; - if (value < 0) { - str[i++] = '-'; - // Standard trick to avoid undefined behaviour when negating INT_MIN. - uvalue = static_cast(-(value + 1)) + 1; - } else { - uvalue = value; - } - int digits = 1; - T order = uvalue / radix; - while (order > 0) { - digits++; - order = order / radix; - } - for (int d = digits - 1; d > -1; d--) { - str[d + i] = "0123456789abcdef"[uvalue % radix]; - uvalue /= radix; - } - str[digits + i] = 0; - return str; -} - -#ifdef __cplusplus -extern "C" { -#endif -int32_t FXSYS_atoi(const FX_CHAR* str) { - return FXSYS_StrToInt(str); -} -uint32_t FXSYS_atoui(const FX_CHAR* str) { - return FXSYS_StrToInt(str); -} -int32_t FXSYS_wtoi(const FX_WCHAR* str) { - return FXSYS_StrToInt(str); -} -int64_t FXSYS_atoi64(const FX_CHAR* str) { - return FXSYS_StrToInt(str); -} -int64_t FXSYS_wtoi64(const FX_WCHAR* str) { - return FXSYS_StrToInt(str); -} -const FX_CHAR* FXSYS_i64toa(int64_t value, FX_CHAR* str, int radix) { - return FXSYS_IntToStr(value, str, radix); -} -#ifdef __cplusplus -} -#endif -#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ -#ifdef __cplusplus -extern "C" { -#endif -int FXSYS_GetACP() { - return 0; -} -FX_DWORD FXSYS_GetFullPathName(const FX_CHAR* filename, - FX_DWORD buflen, - FX_CHAR* buf, - FX_CHAR** filepart) { - int srclen = FXSYS_strlen(filename); - if (!buf || (int)buflen < srclen + 1) { - return srclen + 1; - } - FXSYS_strcpy(buf, filename); - return srclen; -} -FX_DWORD FXSYS_GetModuleFileName(void* hModule, char* buf, FX_DWORD bufsize) { - return (FX_DWORD)-1; -} -#ifdef __cplusplus -} -#endif -#endif -#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ -#ifdef __cplusplus -extern "C" { -#endif -FXSYS_FILE* FXSYS_wfopen(const FX_WCHAR* filename, const FX_WCHAR* mode) { - return FXSYS_fopen(CFX_ByteString::FromUnicode(filename), - CFX_ByteString::FromUnicode(mode)); -} -char* FXSYS_strlwr(char* str) { - if (!str) { - return NULL; - } - char* s = str; - while (*str) { - *str = FXSYS_tolower(*str); - str++; - } - return s; -} -char* FXSYS_strupr(char* str) { - if (!str) { - return NULL; - } - char* s = str; - while (*str) { - *str = FXSYS_toupper(*str); - str++; - } - return s; -} -FX_WCHAR* FXSYS_wcslwr(FX_WCHAR* str) { - if (!str) { - return NULL; - } - FX_WCHAR* s = str; - while (*str) { - *str = FXSYS_tolower(*str); - str++; - } - return s; -} -FX_WCHAR* FXSYS_wcsupr(FX_WCHAR* str) { - if (!str) { - return NULL; - } - FX_WCHAR* s = str; - while (*str) { - *str = FXSYS_toupper(*str); - str++; - } - return s; -} -int FXSYS_stricmp(const char* dst, const char* src) { - int f, l; - do { - if (((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z')) { - f -= ('A' - 'a'); - } - if (((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z')) { - l -= ('A' - 'a'); - } - } while (f && (f == l)); - return (f - l); -} -int FXSYS_wcsicmp(const FX_WCHAR* dst, const FX_WCHAR* src) { - FX_WCHAR f, l; - do { - if (((f = (FX_WCHAR)(*(dst++))) >= 'A') && (f <= 'Z')) { - f -= ('A' - 'a'); - } - if (((l = (FX_WCHAR)(*(src++))) >= 'A') && (l <= 'Z')) { - l -= ('A' - 'a'); - } - } while (f && (f == l)); - return (f - l); -} -char* FXSYS_itoa(int value, char* str, int radix) { - return FXSYS_IntToStr(value, str, radix); -} -#ifdef __cplusplus -} -#endif -#endif -#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ -#ifdef __cplusplus -extern "C" { -#endif -int FXSYS_WideCharToMultiByte(FX_DWORD codepage, - FX_DWORD dwFlags, - const FX_WCHAR* wstr, - int wlen, - FX_CHAR* buf, - int buflen, - const FX_CHAR* default_str, - int* pUseDefault) { - int len = 0; - for (int i = 0; i < wlen; i++) { - if (wstr[i] < 0x100) { - if (buf && len < buflen) { - buf[len] = (FX_CHAR)wstr[i]; - } - len++; - } - } - return len; -} -int FXSYS_MultiByteToWideChar(FX_DWORD codepage, - FX_DWORD dwFlags, - const FX_CHAR* bstr, - int blen, - FX_WCHAR* buf, - int buflen) { - int wlen = 0; - for (int i = 0; i < blen; i++) { - if (buf && wlen < buflen) { - buf[wlen] = bstr[i]; - } - wlen++; - } - return wlen; -} -#ifdef __cplusplus -} -#endif -#endif diff --git a/core/src/fxcrt/fx_basic_gcc_unittest.cpp b/core/src/fxcrt/fx_basic_gcc_unittest.cpp deleted file mode 100644 index eb1e0669ae..0000000000 --- a/core/src/fxcrt/fx_basic_gcc_unittest.cpp +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fxcrt/fx_system.h" -#include "testing/gtest/include/gtest/gtest.h" - -TEST(fxcrt, FXSYS_atoi) { - EXPECT_EQ(0, FXSYS_atoi("")); - EXPECT_EQ(0, FXSYS_atoi("0")); - EXPECT_EQ(-1, FXSYS_atoi("-1")); - EXPECT_EQ(2345, FXSYS_atoi("2345")); - EXPECT_EQ(2147483647, FXSYS_atoi("2147483647")); - EXPECT_EQ(-2147483647, FXSYS_atoi("-2147483647")); - EXPECT_EQ(9, FXSYS_atoi("9x9")); - - // TODO(dsinclair): These are all wacky ..... - EXPECT_EQ(2147483623, FXSYS_atoi("2147483623423412348")); - EXPECT_EQ(214748364, FXSYS_atoi("2147483648")); - // The digit is parsed as a positive value, so we end up not being able to - // handle the largest possible negative value. - EXPECT_EQ(-214748364, FXSYS_atoi("-2147483648")); -} - -TEST(fxcrt, FXSYS_atoi64) { - EXPECT_EQ(0, FXSYS_atoi64("")); - EXPECT_EQ(0, FXSYS_atoi64("0")); - EXPECT_EQ(-1, FXSYS_atoi64("-1")); - EXPECT_EQ(2345, FXSYS_atoi64("2345")); - EXPECT_EQ(9223372036854775807LL, FXSYS_atoi64("9223372036854775807")); - EXPECT_EQ(-9223372036854775807LL, FXSYS_atoi64("-9223372036854775807")); - EXPECT_EQ(9, FXSYS_atoi64("9x9")); - - // TODO(dsinclair): These are all wacky ..... - EXPECT_EQ(9223372036854712341LL, FXSYS_atoi64("922337203685471234123475807")); - EXPECT_EQ(922337203685477580LL, FXSYS_atoi64("9223372036854775808")); - // The digit is parsed as a positive value, so we end up not being able to - // handle the largest possible negative value. - EXPECT_EQ(-922337203685477580LL, FXSYS_atoi64("-9223372036854775808")); -} - -TEST(fxcrt, FXSYS_wtoi) { - EXPECT_EQ(0, FXSYS_wtoi(L"")); - EXPECT_EQ(0, FXSYS_wtoi(L"0")); - EXPECT_EQ(-1, FXSYS_wtoi(L"-1")); - EXPECT_EQ(2345, FXSYS_wtoi(L"2345")); - EXPECT_EQ(2147483647, FXSYS_wtoi(L"2147483647")); - EXPECT_EQ(-2147483647, FXSYS_wtoi(L"-2147483647")); - EXPECT_EQ(9, FXSYS_wtoi64(L"9x9")); - - // TODO(dsinclair): These are all wacky ..... - EXPECT_EQ(2147483623, FXSYS_wtoi(L"2147483623423412348")); - EXPECT_EQ(214748364, FXSYS_wtoi(L"2147483648")); - // The digit is parsed as a positive value, so we end up not being able to - // handle the largest possible negative value. - EXPECT_EQ(-214748364, FXSYS_wtoi(L"-2147483648")); -} - -TEST(fxcrt, FXSYS_wtoi64) { - EXPECT_EQ(0, FXSYS_wtoi64(L"")); - EXPECT_EQ(0, FXSYS_wtoi64(L"0")); - EXPECT_EQ(-1, FXSYS_wtoi64(L"-1")); - EXPECT_EQ(2345, FXSYS_wtoi64(L"2345")); - EXPECT_EQ(9223372036854775807LL, FXSYS_wtoi64(L"9223372036854775807")); - EXPECT_EQ(-9223372036854775807LL, FXSYS_wtoi64(L"-9223372036854775807")); - EXPECT_EQ(9, FXSYS_wtoi64(L"9x9")); - - // TODO(dsinclair): These are all wacky ..... - EXPECT_EQ(9223372036854712341LL, - FXSYS_wtoi64(L"922337203685471234123475807")); - EXPECT_EQ(922337203685477580LL, FXSYS_wtoi64(L"9223372036854775808")); - // The digit is parsed as a positive value, so we end up not being able to - // handle the largest possible negative value. - EXPECT_EQ(-922337203685477580LL, FXSYS_wtoi64(L"-9223372036854775808")); -} - -TEST(fxcrt, FXSYS_atoui) { - EXPECT_EQ(0, FXSYS_atoui("")); - EXPECT_EQ(0, FXSYS_atoui("0")); - EXPECT_EQ(0, FXSYS_atoui("-1")); - EXPECT_EQ(2345, FXSYS_atoui("2345")); - EXPECT_EQ(4294967295, FXSYS_atoui("4294967295")); - EXPECT_EQ(9, FXSYS_atoui("9x9")); - - // TODO(dsinclair): These are all wacky ..... - EXPECT_EQ(2147483623, FXSYS_atoi("2147483623423412348")); - EXPECT_EQ(429496729, FXSYS_atoi("4294967296")); -} diff --git a/core/src/fxcrt/fx_basic_list.cpp b/core/src/fxcrt/fx_basic_list.cpp deleted file mode 100644 index 5944a2c4af..0000000000 --- a/core/src/fxcrt/fx_basic_list.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fxcrt/plex.h" - -CFX_PtrList::CFX_PtrList(int nBlockSize) - : m_pNodeHead(NULL), - m_pNodeTail(NULL), - m_nCount(0), - m_pNodeFree(NULL), - m_pBlocks(NULL), - m_nBlockSize(nBlockSize) {} -FX_POSITION CFX_PtrList::AddTail(void* newElement) { - CNode* pNewNode = NewNode(m_pNodeTail, NULL); - pNewNode->data = newElement; - if (m_pNodeTail) { - m_pNodeTail->pNext = pNewNode; - } else { - m_pNodeHead = pNewNode; - } - m_pNodeTail = pNewNode; - return (FX_POSITION)pNewNode; -} -FX_POSITION CFX_PtrList::AddHead(void* newElement) { - CNode* pNewNode = NewNode(NULL, m_pNodeHead); - pNewNode->data = newElement; - if (m_pNodeHead) { - m_pNodeHead->pPrev = pNewNode; - } else { - m_pNodeTail = pNewNode; - } - m_pNodeHead = pNewNode; - return (FX_POSITION)pNewNode; -} -FX_POSITION CFX_PtrList::InsertAfter(FX_POSITION position, void* newElement) { - if (!position) { - return AddTail(newElement); - } - CNode* pOldNode = (CNode*)position; - CNode* pNewNode = NewNode(pOldNode, pOldNode->pNext); - pNewNode->data = newElement; - if (pOldNode->pNext) { - pOldNode->pNext->pPrev = pNewNode; - } else { - m_pNodeTail = pNewNode; - } - pOldNode->pNext = pNewNode; - return (FX_POSITION)pNewNode; -} -void CFX_PtrList::RemoveAt(FX_POSITION position) { - CNode* pOldNode = (CNode*)position; - if (pOldNode == m_pNodeHead) { - m_pNodeHead = pOldNode->pNext; - } else { - pOldNode->pPrev->pNext = pOldNode->pNext; - } - if (pOldNode == m_pNodeTail) { - m_pNodeTail = pOldNode->pPrev; - } else { - pOldNode->pNext->pPrev = pOldNode->pPrev; - } - FreeNode(pOldNode); -} -void CFX_PtrList::FreeNode(CFX_PtrList::CNode* pNode) { - pNode->pNext = m_pNodeFree; - m_pNodeFree = pNode; - m_nCount--; - if (m_nCount == 0) { - RemoveAll(); - } -} -void CFX_PtrList::RemoveAll() { - m_nCount = 0; - m_pNodeHead = m_pNodeTail = m_pNodeFree = NULL; - m_pBlocks->FreeDataChain(); - m_pBlocks = NULL; -} -CFX_PtrList::CNode* CFX_PtrList::NewNode(CFX_PtrList::CNode* pPrev, - CFX_PtrList::CNode* pNext) { - if (!m_pNodeFree) { - CFX_Plex* pNewBlock = - CFX_Plex::Create(m_pBlocks, m_nBlockSize, sizeof(CNode)); - CNode* pNode = (CNode*)pNewBlock->data(); - pNode += m_nBlockSize - 1; - for (int i = m_nBlockSize - 1; i >= 0; i--, pNode--) { - pNode->pNext = m_pNodeFree; - m_pNodeFree = pNode; - } - } - CFX_PtrList::CNode* pNode = m_pNodeFree; - m_pNodeFree = m_pNodeFree->pNext; - pNode->pPrev = pPrev; - pNode->pNext = pNext; - m_nCount++; - ASSERT(m_nCount > 0); - pNode->data = 0; - return pNode; -} -CFX_PtrList::~CFX_PtrList() { - RemoveAll(); - ASSERT(m_nCount == 0); -} -FX_POSITION CFX_PtrList::FindIndex(int nIndex) const { - if (nIndex >= m_nCount || nIndex < 0) { - return NULL; - } - CNode* pNode = m_pNodeHead; - while (nIndex--) { - pNode = pNode->pNext; - } - return (FX_POSITION)pNode; -} -FX_POSITION CFX_PtrList::Find(void* searchValue, FX_POSITION startAfter) const { - CNode* pNode = (CNode*)startAfter; - pNode = pNode ? pNode->pNext : m_pNodeHead; - for (; pNode; pNode = pNode->pNext) { - if (pNode->data == searchValue) - return (FX_POSITION)pNode; - } - return NULL; -} diff --git a/core/src/fxcrt/fx_basic_maps.cpp b/core/src/fxcrt/fx_basic_maps.cpp deleted file mode 100644 index 60d75b610c..0000000000 --- a/core/src/fxcrt/fx_basic_maps.cpp +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_basic.h" -#include "core/src/fxcrt/plex.h" - -CFX_MapPtrToPtr::CFX_MapPtrToPtr(int nBlockSize) - : m_pHashTable(NULL), - m_nHashTableSize(17), - m_nCount(0), - m_pFreeList(NULL), - m_pBlocks(NULL), - m_nBlockSize(nBlockSize) { - ASSERT(m_nBlockSize > 0); -} -void CFX_MapPtrToPtr::RemoveAll() { - FX_Free(m_pHashTable); - m_pHashTable = NULL; - m_nCount = 0; - m_pFreeList = NULL; - m_pBlocks->FreeDataChain(); - m_pBlocks = NULL; -} -CFX_MapPtrToPtr::~CFX_MapPtrToPtr() { - RemoveAll(); - ASSERT(m_nCount == 0); -} -FX_DWORD CFX_MapPtrToPtr::HashKey(void* key) const { - return ((FX_DWORD)(uintptr_t)key) >> 4; -} -void CFX_MapPtrToPtr::GetNextAssoc(FX_POSITION& rNextPosition, - void*& rKey, - void*& rValue) const { - ASSERT(m_pHashTable); - CAssoc* pAssocRet = (CAssoc*)rNextPosition; - ASSERT(pAssocRet); - if (pAssocRet == (CAssoc*)-1) { - for (FX_DWORD nBucket = 0; nBucket < m_nHashTableSize; nBucket++) { - if ((pAssocRet = m_pHashTable[nBucket])) - break; - } - ASSERT(pAssocRet); - } - CAssoc* pAssocNext; - if ((pAssocNext = pAssocRet->pNext) == NULL) { - for (FX_DWORD nBucket = (HashKey(pAssocRet->key) % m_nHashTableSize) + 1; - nBucket < m_nHashTableSize; nBucket++) { - if ((pAssocNext = m_pHashTable[nBucket])) { - break; - } - } - } - rNextPosition = (FX_POSITION)pAssocNext; - rKey = pAssocRet->key; - rValue = pAssocRet->value; -} -FX_BOOL CFX_MapPtrToPtr::Lookup(void* key, void*& rValue) const { - FX_DWORD nHash; - CAssoc* pAssoc = GetAssocAt(key, nHash); - if (!pAssoc) { - return FALSE; - } - rValue = pAssoc->value; - return TRUE; -} -void* CFX_MapPtrToPtr::GetValueAt(void* key) const { - FX_DWORD nHash; - CAssoc* pAssoc = GetAssocAt(key, nHash); - if (!pAssoc) { - return NULL; - } - return pAssoc->value; -} -void*& CFX_MapPtrToPtr::operator[](void* key) { - FX_DWORD nHash; - CAssoc* pAssoc; - if ((pAssoc = GetAssocAt(key, nHash)) == NULL) { - if (!m_pHashTable) { - InitHashTable(m_nHashTableSize); - } - pAssoc = NewAssoc(); - pAssoc->key = key; - pAssoc->pNext = m_pHashTable[nHash]; - m_pHashTable[nHash] = pAssoc; - } - return pAssoc->value; -} -CFX_MapPtrToPtr::CAssoc* CFX_MapPtrToPtr::GetAssocAt(void* key, - FX_DWORD& nHash) const { - nHash = HashKey(key) % m_nHashTableSize; - if (!m_pHashTable) { - return NULL; - } - CAssoc* pAssoc; - for (pAssoc = m_pHashTable[nHash]; pAssoc; pAssoc = pAssoc->pNext) { - if (pAssoc->key == key) - return pAssoc; - } - return NULL; -} -CFX_MapPtrToPtr::CAssoc* CFX_MapPtrToPtr::NewAssoc() { - if (!m_pFreeList) { - CFX_Plex* newBlock = CFX_Plex::Create(m_pBlocks, m_nBlockSize, - sizeof(CFX_MapPtrToPtr::CAssoc)); - CFX_MapPtrToPtr::CAssoc* pAssoc = - (CFX_MapPtrToPtr::CAssoc*)newBlock->data(); - pAssoc += m_nBlockSize - 1; - for (int i = m_nBlockSize - 1; i >= 0; i--, pAssoc--) { - pAssoc->pNext = m_pFreeList; - m_pFreeList = pAssoc; - } - } - CFX_MapPtrToPtr::CAssoc* pAssoc = m_pFreeList; - m_pFreeList = m_pFreeList->pNext; - m_nCount++; - ASSERT(m_nCount > 0); - pAssoc->key = 0; - pAssoc->value = 0; - return pAssoc; -} -void CFX_MapPtrToPtr::InitHashTable(FX_DWORD nHashSize, FX_BOOL bAllocNow) { - ASSERT(m_nCount == 0); - ASSERT(nHashSize > 0); - FX_Free(m_pHashTable); - m_pHashTable = NULL; - if (bAllocNow) { - m_pHashTable = FX_Alloc(CAssoc*, nHashSize); - } - m_nHashTableSize = nHashSize; -} -FX_BOOL CFX_MapPtrToPtr::RemoveKey(void* key) { - if (!m_pHashTable) { - return FALSE; - } - CAssoc** ppAssocPrev; - ppAssocPrev = &m_pHashTable[HashKey(key) % m_nHashTableSize]; - CAssoc* pAssoc; - for (pAssoc = *ppAssocPrev; pAssoc; pAssoc = pAssoc->pNext) { - if (pAssoc->key == key) { - *ppAssocPrev = pAssoc->pNext; - FreeAssoc(pAssoc); - return TRUE; - } - ppAssocPrev = &pAssoc->pNext; - } - return FALSE; -} -void CFX_MapPtrToPtr::FreeAssoc(CFX_MapPtrToPtr::CAssoc* pAssoc) { - pAssoc->pNext = m_pFreeList; - m_pFreeList = pAssoc; - m_nCount--; - ASSERT(m_nCount >= 0); - if (m_nCount == 0) { - RemoveAll(); - } -} diff --git a/core/src/fxcrt/fx_basic_memmgr.cpp b/core/src/fxcrt/fx_basic_memmgr.cpp deleted file mode 100644 index a0af6aef6d..0000000000 --- a/core/src/fxcrt/fx_basic_memmgr.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include // For abort(). - -#include "core/include/fxcrt/fx_memory.h" - -void* FXMEM_DefaultAlloc(size_t byte_size, int flags) { - return (void*)malloc(byte_size); -} -void* FXMEM_DefaultRealloc(void* pointer, size_t new_size, int flags) { - return realloc(pointer, new_size); -} -void FXMEM_DefaultFree(void* pointer, int flags) { - free(pointer); -} - -NEVER_INLINE void FX_OutOfMemoryTerminate() { - // Termimate cleanly if we can, else crash at a specific address (0xbd). - abort(); - reinterpret_cast(0xbd)(); -} diff --git a/core/src/fxcrt/fx_basic_memmgr_unittest.cpp b/core/src/fxcrt/fx_basic_memmgr_unittest.cpp deleted file mode 100644 index 9821ca9057..0000000000 --- a/core/src/fxcrt/fx_basic_memmgr_unittest.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include - -#include "core/include/fxcrt/fx_memory.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace { - -const size_t kMaxByteAlloc = std::numeric_limits::max(); -const size_t kMaxIntAlloc = kMaxByteAlloc / sizeof(int); -const size_t kOverflowIntAlloc = kMaxIntAlloc + 100; -const size_t kWidth = 640; -const size_t kOverflowIntAlloc2D = kMaxIntAlloc / kWidth + 10; - -} // namespace - -// TODO(tsepez): re-enable OOM tests if we can find a way to -// prevent it from hosing the bots. -TEST(fxcrt, DISABLED_FX_AllocOOM) { - EXPECT_DEATH_IF_SUPPORTED((void)FX_Alloc(int, kMaxIntAlloc), ""); - - int* ptr = FX_Alloc(int, 1); - EXPECT_TRUE(ptr); - EXPECT_DEATH_IF_SUPPORTED((void)FX_Realloc(int, ptr, kMaxIntAlloc), ""); - FX_Free(ptr); -} - -TEST(fxcrt, FX_AllocOverflow) { - EXPECT_DEATH_IF_SUPPORTED((void)FX_Alloc(int, kOverflowIntAlloc), ""); - - int* ptr = FX_Alloc(int, 1); - EXPECT_TRUE(ptr); - EXPECT_DEATH_IF_SUPPORTED((void)FX_Realloc(int, ptr, kOverflowIntAlloc), ""); - FX_Free(ptr); -} - -TEST(fxcrt, FX_AllocOverflow2D) { - EXPECT_DEATH_IF_SUPPORTED((void)FX_Alloc2D(int, kWidth, kOverflowIntAlloc2D), - ""); -} - -TEST(fxcrt, DISABLED_FX_TryAllocOOM) { - EXPECT_FALSE(FX_TryAlloc(int, kMaxIntAlloc)); - - int* ptr = FX_Alloc(int, 1); - EXPECT_TRUE(ptr); - EXPECT_FALSE(FX_TryRealloc(int, ptr, kMaxIntAlloc)); - FX_Free(ptr); -} - -TEST(fxcrt, FX_TryAllocOverflow) { - EXPECT_FALSE(FX_TryAlloc(int, kOverflowIntAlloc)); - - int* ptr = FX_Alloc(int, 1); - EXPECT_TRUE(ptr); - EXPECT_FALSE(FX_TryRealloc(int, ptr, kOverflowIntAlloc)); - FX_Free(ptr); -} - -TEST(fxcrt, DISABLED_FXMEM_DefaultOOM) { - EXPECT_FALSE(FXMEM_DefaultAlloc(kMaxByteAlloc, 0)); - - void* ptr = FXMEM_DefaultAlloc(1, 0); - EXPECT_TRUE(ptr); - EXPECT_FALSE(FXMEM_DefaultRealloc(ptr, kMaxByteAlloc, 0)); - FXMEM_DefaultFree(ptr, 0); -} diff --git a/core/src/fxcrt/fx_basic_plex.cpp b/core/src/fxcrt/fx_basic_plex.cpp deleted file mode 100644 index 8689b97bb6..0000000000 --- a/core/src/fxcrt/fx_basic_plex.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_memory.h" -#include "core/src/fxcrt/plex.h" - -CFX_Plex* CFX_Plex::Create(CFX_Plex*& pHead, - FX_DWORD nMax, - FX_DWORD cbElement) { - CFX_Plex* p = - (CFX_Plex*)FX_Alloc(uint8_t, sizeof(CFX_Plex) + nMax * cbElement); - p->pNext = pHead; - pHead = p; - return p; -} -void CFX_Plex::FreeDataChain() { - CFX_Plex* p = this; - while (p) { - CFX_Plex* old = p; - p = p->pNext; - FX_Free(old); - } -} diff --git a/core/src/fxcrt/fx_basic_utf.cpp b/core/src/fxcrt/fx_basic_utf.cpp deleted file mode 100644 index 3625feb130..0000000000 --- a/core/src/fxcrt/fx_basic_utf.cpp +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_basic.h" - -void CFX_UTF8Decoder::Clear() { - m_Buffer.Clear(); - m_PendingBytes = 0; -} -void CFX_UTF8Decoder::AppendChar(FX_DWORD ch) { - m_Buffer.AppendChar((FX_WCHAR)ch); -} -void CFX_UTF8Decoder::Input(uint8_t byte) { - if (byte < 0x80) { - m_PendingBytes = 0; - m_Buffer.AppendChar(byte); - } else if (byte < 0xc0) { - if (m_PendingBytes == 0) { - return; - } - m_PendingBytes--; - m_PendingChar |= (byte & 0x3f) << (m_PendingBytes * 6); - if (m_PendingBytes == 0) { - AppendChar(m_PendingChar); - } - } else if (byte < 0xe0) { - m_PendingBytes = 1; - m_PendingChar = (byte & 0x1f) << 6; - } else if (byte < 0xf0) { - m_PendingBytes = 2; - m_PendingChar = (byte & 0x0f) << 12; - } else if (byte < 0xf8) { - m_PendingBytes = 3; - m_PendingChar = (byte & 0x07) << 18; - } else if (byte < 0xfc) { - m_PendingBytes = 4; - m_PendingChar = (byte & 0x03) << 24; - } else if (byte < 0xfe) { - m_PendingBytes = 5; - m_PendingChar = (byte & 0x01) << 30; - } -} -void CFX_UTF8Encoder::Input(FX_WCHAR unicode) { - if ((FX_DWORD)unicode < 0x80) { - m_Buffer.AppendChar(unicode); - } else { - if ((FX_DWORD)unicode >= 0x80000000) { - return; - } - int nbytes = 0; - if ((FX_DWORD)unicode < 0x800) { - nbytes = 2; - } else if ((FX_DWORD)unicode < 0x10000) { - nbytes = 3; - } else if ((FX_DWORD)unicode < 0x200000) { - nbytes = 4; - } else if ((FX_DWORD)unicode < 0x4000000) { - nbytes = 5; - } else { - nbytes = 6; - } - static uint8_t prefix[] = {0xc0, 0xe0, 0xf0, 0xf8, 0xfc}; - int order = 1 << ((nbytes - 1) * 6); - int code = unicode; - m_Buffer.AppendChar(prefix[nbytes - 2] | (code / order)); - for (int i = 0; i < nbytes - 1; i++) { - code = code % order; - order >>= 6; - m_Buffer.AppendChar(0x80 | (code / order)); - } - } -} -CFX_ByteString FX_UTF8Encode(const FX_WCHAR* pwsStr, FX_STRSIZE len) { - FXSYS_assert(pwsStr); - if (len < 0) { - len = FXSYS_wcslen(pwsStr); - } - CFX_UTF8Encoder encoder; - while (len-- > 0) { - encoder.Input(*pwsStr++); - } - return encoder.GetResult(); -} diff --git a/core/src/fxcrt/fx_basic_util.cpp b/core/src/fxcrt/fx_basic_util.cpp deleted file mode 100644 index 2422212d59..0000000000 --- a/core/src/fxcrt/fx_basic_util.cpp +++ /dev/null @@ -1,367 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_ext.h" - -#include - -#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ -#include -#include -#else -#include -#endif - -CFX_PrivateData::CFX_PrivateData() {} - -CFX_PrivateData::~CFX_PrivateData() { - ClearAll(); -} -void FX_PRIVATEDATA::FreeData() { - if (!m_pData) { - return; - } - if (m_bSelfDestruct) { - delete (CFX_DestructObject*)m_pData; - } else if (m_pCallback) { - m_pCallback(m_pData); - } -} -void CFX_PrivateData::AddData(void* pModuleId, - void* pData, - PD_CALLBACK_FREEDATA callback, - FX_BOOL bSelfDestruct) { - if (!pModuleId) { - return; - } - FX_PRIVATEDATA* pList = m_DataList.GetData(); - int count = m_DataList.GetSize(); - for (int i = 0; i < count; i++) { - if (pList[i].m_pModuleId == pModuleId) { - pList[i].FreeData(); - pList[i].m_pData = pData; - pList[i].m_pCallback = callback; - return; - } - } - FX_PRIVATEDATA data = {pModuleId, pData, callback, bSelfDestruct}; - m_DataList.Add(data); -} -void CFX_PrivateData::SetPrivateData(void* pModuleId, - void* pData, - PD_CALLBACK_FREEDATA callback) { - AddData(pModuleId, pData, callback, FALSE); -} -void CFX_PrivateData::SetPrivateObj(void* pModuleId, CFX_DestructObject* pObj) { - AddData(pModuleId, pObj, NULL, TRUE); -} -FX_BOOL CFX_PrivateData::RemovePrivateData(void* pModuleId) { - if (!pModuleId) { - return FALSE; - } - FX_PRIVATEDATA* pList = m_DataList.GetData(); - int count = m_DataList.GetSize(); - for (int i = 0; i < count; i++) { - if (pList[i].m_pModuleId == pModuleId) { - m_DataList.RemoveAt(i); - return TRUE; - } - } - return FALSE; -} -void* CFX_PrivateData::GetPrivateData(void* pModuleId) { - if (!pModuleId) { - return NULL; - } - FX_PRIVATEDATA* pList = m_DataList.GetData(); - int count = m_DataList.GetSize(); - for (int i = 0; i < count; i++) { - if (pList[i].m_pModuleId == pModuleId) { - return pList[i].m_pData; - } - } - return NULL; -} -void CFX_PrivateData::ClearAll() { - FX_PRIVATEDATA* pList = m_DataList.GetData(); - int count = m_DataList.GetSize(); - for (int i = 0; i < count; i++) { - pList[i].FreeData(); - } - m_DataList.RemoveAll(); -} -void FX_atonum(const CFX_ByteStringC& strc, FX_BOOL& bInteger, void* pData) { - if (!FXSYS_memchr(strc.GetPtr(), '.', strc.GetLength())) { - bInteger = TRUE; - int cc = 0, integer = 0; - const FX_CHAR* str = strc.GetCStr(); - int len = strc.GetLength(); - FX_BOOL bNegative = FALSE; - if (str[0] == '+') { - cc++; - } else if (str[0] == '-') { - bNegative = TRUE; - cc++; - } - while (cc < len && std::isdigit(str[cc])) { - // TODO(dsinclair): This is not the right way to handle overflow. - integer = integer * 10 + FXSYS_toDecimalDigit(str[cc]); - if (integer < 0) - break; - cc++; - } - if (bNegative) { - integer = -integer; - } - *(int*)pData = integer; - } else { - bInteger = FALSE; - *(FX_FLOAT*)pData = FX_atof(strc); - } -} -FX_FLOAT FX_atof(const CFX_ByteStringC& strc) { - if (strc.GetLength() == 0) { - return 0.0; - } - int cc = 0; - FX_BOOL bNegative = FALSE; - const FX_CHAR* str = strc.GetCStr(); - int len = strc.GetLength(); - if (str[0] == '+') { - cc++; - } else if (str[0] == '-') { - bNegative = TRUE; - cc++; - } - while (cc < len) { - if (str[cc] != '+' && str[cc] != '-') { - break; - } - cc++; - } - FX_FLOAT value = 0; - while (cc < len) { - if (str[cc] == '.') { - break; - } - value = value * 10 + FXSYS_toDecimalDigit(str[cc]); - cc++; - } - static const FX_FLOAT fraction_scales[] = { - 0.1f, 0.01f, 0.001f, 0.0001f, - 0.00001f, 0.000001f, 0.0000001f, 0.00000001f, - 0.000000001f, 0.0000000001f, 0.00000000001f}; - int scale = 0; - if (cc < len && str[cc] == '.') { - cc++; - while (cc < len) { - value += fraction_scales[scale] * FXSYS_toDecimalDigit(str[cc]); - scale++; - if (scale == sizeof fraction_scales / sizeof(FX_FLOAT)) { - break; - } - cc++; - } - } - return bNegative ? -value : value; -} - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ && _MSC_VER < 1900 -void FXSYS_snprintf(char* str, - size_t size, - _Printf_format_string_ const char* fmt, - ...) { - va_list ap; - va_start(ap, fmt); - FXSYS_vsnprintf(str, size, fmt, ap); - va_end(ap); -} -void FXSYS_vsnprintf(char* str, size_t size, const char* fmt, va_list ap) { - (void)_vsnprintf(str, size, fmt, ap); - if (size) { - str[size - 1] = 0; - } -} -#endif // _FXM_PLATFORM_WINDOWS_ && _MSC_VER < 1900 - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -class CFindFileData { - public: - virtual ~CFindFileData() {} - HANDLE m_Handle; - FX_BOOL m_bEnd; -}; -class CFindFileDataA : public CFindFileData { - public: - virtual ~CFindFileDataA() {} - WIN32_FIND_DATAA m_FindData; -}; -class CFindFileDataW : public CFindFileData { - public: - virtual ~CFindFileDataW() {} - WIN32_FIND_DATAW m_FindData; -}; -#endif -void* FX_OpenFolder(const FX_CHAR* path) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -#ifndef _WIN32_WCE - CFindFileDataA* pData = new CFindFileDataA; - pData->m_Handle = - FindFirstFileExA(CFX_ByteString(path) + "/*.*", FindExInfoStandard, - &pData->m_FindData, FindExSearchNameMatch, NULL, 0); -#else - CFindFileDataW* pData = new CFindFileDataW; - pData->m_Handle = FindFirstFileW(CFX_WideString::FromLocal(path) + L"/*.*", - &pData->m_FindData); -#endif - if (pData->m_Handle == INVALID_HANDLE_VALUE) { - delete pData; - return NULL; - } - pData->m_bEnd = FALSE; - return pData; -#else - DIR* dir = opendir(path); - return dir; -#endif -} -void* FX_OpenFolder(const FX_WCHAR* path) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - CFindFileDataW* pData = new CFindFileDataW; - pData->m_Handle = FindFirstFileExW((CFX_WideString(path) + L"/*.*").c_str(), - FindExInfoStandard, &pData->m_FindData, - FindExSearchNameMatch, NULL, 0); - if (pData->m_Handle == INVALID_HANDLE_VALUE) { - delete pData; - return NULL; - } - pData->m_bEnd = FALSE; - return pData; -#else - DIR* dir = opendir(CFX_ByteString::FromUnicode(path)); - return dir; -#endif -} -FX_BOOL FX_GetNextFile(void* handle, - CFX_ByteString& filename, - FX_BOOL& bFolder) { - if (!handle) { - return FALSE; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -#ifndef _WIN32_WCE - CFindFileDataA* pData = (CFindFileDataA*)handle; - if (pData->m_bEnd) { - return FALSE; - } - filename = pData->m_FindData.cFileName; - bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; - if (!FindNextFileA(pData->m_Handle, &pData->m_FindData)) { - pData->m_bEnd = TRUE; - } - return TRUE; -#else - CFindFileDataW* pData = (CFindFileDataW*)handle; - if (pData->m_bEnd) { - return FALSE; - } - filename = CFX_ByteString::FromUnicode(pData->m_FindData.cFileName); - bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; - if (!FindNextFileW(pData->m_Handle, &pData->m_FindData)) { - pData->m_bEnd = TRUE; - } - return TRUE; -#endif -#elif defined(__native_client__) - abort(); - return FALSE; -#else - struct dirent* de = readdir((DIR*)handle); - if (!de) { - return FALSE; - } - filename = de->d_name; - bFolder = de->d_type == DT_DIR; - return TRUE; -#endif -} -FX_BOOL FX_GetNextFile(void* handle, - CFX_WideString& filename, - FX_BOOL& bFolder) { - if (!handle) { - return FALSE; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - CFindFileDataW* pData = (CFindFileDataW*)handle; - if (pData->m_bEnd) { - return FALSE; - } - filename = pData->m_FindData.cFileName; - bFolder = pData->m_FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY; - if (!FindNextFileW(pData->m_Handle, &pData->m_FindData)) { - pData->m_bEnd = TRUE; - } - return TRUE; -#elif defined(__native_client__) - abort(); - return FALSE; -#else - struct dirent* de = readdir((DIR*)handle); - if (!de) { - return FALSE; - } - filename = CFX_WideString::FromLocal(de->d_name); - bFolder = de->d_type == DT_DIR; - return TRUE; -#endif -} -void FX_CloseFolder(void* handle) { - if (!handle) { - return; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - CFindFileData* pData = (CFindFileData*)handle; - FindClose(pData->m_Handle); - delete pData; -#else - closedir((DIR*)handle); -#endif -} -FX_WCHAR FX_GetFolderSeparator() { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - return '\\'; -#else - return '/'; -#endif -} - -CFX_Matrix_3by3 CFX_Matrix_3by3::Inverse() { - FX_FLOAT det = - a * (e * i - f * h) - b * (i * d - f * g) + c * (d * h - e * g); - if (FXSYS_fabs(det) < 0.0000001) - return CFX_Matrix_3by3(); - - return CFX_Matrix_3by3( - (e * i - f * h) / det, -(b * i - c * h) / det, (b * f - c * e) / det, - -(d * i - f * g) / det, (a * i - c * g) / det, -(a * f - c * d) / det, - (d * h - e * g) / det, -(a * h - b * g) / det, (a * e - b * d) / det); -} - -CFX_Matrix_3by3 CFX_Matrix_3by3::Multiply(const CFX_Matrix_3by3& m) { - return CFX_Matrix_3by3( - a * m.a + b * m.d + c * m.g, a * m.b + b * m.e + c * m.h, - a * m.c + b * m.f + c * m.i, d * m.a + e * m.d + f * m.g, - d * m.b + e * m.e + f * m.h, d * m.c + e * m.f + f * m.i, - g * m.a + h * m.d + i * m.g, g * m.b + h * m.e + i * m.h, - g * m.c + h * m.f + i * m.i); -} - -CFX_Vector_3by1 CFX_Matrix_3by3::TransformVector(const CFX_Vector_3by1& v) { - return CFX_Vector_3by1(a * v.a + b * v.b + c * v.c, - d * v.a + e * v.b + f * v.c, - g * v.a + h * v.b + i * v.c); -} diff --git a/core/src/fxcrt/fx_basic_wstring.cpp b/core/src/fxcrt/fx_basic_wstring.cpp deleted file mode 100644 index 95b761bd09..0000000000 --- a/core/src/fxcrt/fx_basic_wstring.cpp +++ /dev/null @@ -1,1050 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include -#include - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_ext.h" -#include "third_party/base/numerics/safe_math.h" - -namespace { - -#ifndef NDEBUG -bool IsValidCodePage(FX_WORD codepage) { - switch (codepage) { - case 0: - case 932: - case 936: - case 949: - case 950: - return true; - - default: - return false; - } -} -#endif - -} // namespace - -// static -CFX_WideString::StringData* CFX_WideString::StringData::Create(int nLen) { - // TODO(palmer): |nLen| should really be declared as |size_t|, or - // at least unsigned. - if (nLen == 0 || nLen < 0) { - return NULL; - } - - // Fixed portion of header plus a NUL wide char not in m_nAllocLength. - int overhead = offsetof(StringData, m_String) + sizeof(FX_WCHAR); - pdfium::base::CheckedNumeric iSize = nLen; - iSize *= sizeof(FX_WCHAR); - iSize += overhead; - - // Now round to an 8-byte boundary. We'd expect that this is the minimum - // granularity of any of the underlying allocators, so there may be cases - // where we can save a re-alloc when adding a few characters to a string - // by using this otherwise wasted space. - iSize += 7; - int totalSize = iSize.ValueOrDie() & ~7; - int usableLen = (totalSize - overhead) / sizeof(FX_WCHAR); - FXSYS_assert(usableLen >= nLen); - - void* pData = FX_Alloc(uint8_t, totalSize); - return new (pData) StringData(nLen, usableLen); -} -CFX_WideString::~CFX_WideString() { - if (m_pData) { - m_pData->Release(); - } -} -CFX_WideString::CFX_WideString(const CFX_WideString& stringSrc) { - if (!stringSrc.m_pData) { - m_pData = NULL; - return; - } - if (stringSrc.m_pData->m_nRefs >= 0) { - m_pData = stringSrc.m_pData; - m_pData->Retain(); - } else { - m_pData = NULL; - *this = stringSrc; - } -} -CFX_WideString::CFX_WideString(const FX_WCHAR* lpsz, FX_STRSIZE nLen) { - if (nLen < 0) { - nLen = lpsz ? FXSYS_wcslen(lpsz) : 0; - } - if (nLen) { - m_pData = StringData::Create(nLen); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, lpsz, nLen * sizeof(FX_WCHAR)); - } - } else { - m_pData = NULL; - } -} -CFX_WideString::CFX_WideString(FX_WCHAR ch) { - m_pData = StringData::Create(1); - if (m_pData) { - m_pData->m_String[0] = ch; - } -} -CFX_WideString::CFX_WideString(const CFX_WideStringC& str) { - if (str.IsEmpty()) { - m_pData = NULL; - return; - } - m_pData = StringData::Create(str.GetLength()); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, str.GetPtr(), - str.GetLength() * sizeof(FX_WCHAR)); - } -} -CFX_WideString::CFX_WideString(const CFX_WideStringC& str1, - const CFX_WideStringC& str2) { - m_pData = NULL; - int nNewLen = str1.GetLength() + str2.GetLength(); - if (nNewLen == 0) { - return; - } - m_pData = StringData::Create(nNewLen); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, str1.GetPtr(), - str1.GetLength() * sizeof(FX_WCHAR)); - FXSYS_memcpy(m_pData->m_String + str1.GetLength(), str2.GetPtr(), - str2.GetLength() * sizeof(FX_WCHAR)); - } -} -void CFX_WideString::ReleaseBuffer(FX_STRSIZE nNewLength) { - if (!m_pData) { - return; - } - CopyBeforeWrite(); - if (nNewLength == -1) { - nNewLength = m_pData ? FXSYS_wcslen(m_pData->m_String) : 0; - } - if (nNewLength == 0) { - Empty(); - return; - } - FXSYS_assert(nNewLength <= m_pData->m_nAllocLength); - m_pData->m_nDataLength = nNewLength; - m_pData->m_String[nNewLength] = 0; -} -const CFX_WideString& CFX_WideString::operator=(const FX_WCHAR* lpsz) { - if (!lpsz || lpsz[0] == 0) { - Empty(); - } else { - AssignCopy(FXSYS_wcslen(lpsz), lpsz); - } - return *this; -} -const CFX_WideString& CFX_WideString::operator=( - const CFX_WideStringC& stringSrc) { - if (stringSrc.IsEmpty()) { - Empty(); - } else { - AssignCopy(stringSrc.GetLength(), stringSrc.GetPtr()); - } - return *this; -} -const CFX_WideString& CFX_WideString::operator=( - const CFX_WideString& stringSrc) { - if (m_pData == stringSrc.m_pData) { - return *this; - } - if (stringSrc.IsEmpty()) { - Empty(); - } else if ((m_pData && m_pData->m_nRefs < 0) || - (stringSrc.m_pData && stringSrc.m_pData->m_nRefs < 0)) { - AssignCopy(stringSrc.m_pData->m_nDataLength, stringSrc.m_pData->m_String); - } else { - Empty(); - m_pData = stringSrc.m_pData; - if (m_pData) { - m_pData->Retain(); - } - } - return *this; -} -const CFX_WideString& CFX_WideString::operator+=(FX_WCHAR ch) { - ConcatInPlace(1, &ch); - return *this; -} -const CFX_WideString& CFX_WideString::operator+=(const FX_WCHAR* lpsz) { - if (lpsz) { - ConcatInPlace(FXSYS_wcslen(lpsz), lpsz); - } - return *this; -} -const CFX_WideString& CFX_WideString::operator+=(const CFX_WideString& str) { - if (!str.m_pData) { - return *this; - } - ConcatInPlace(str.m_pData->m_nDataLength, str.m_pData->m_String); - return *this; -} -const CFX_WideString& CFX_WideString::operator+=(const CFX_WideStringC& str) { - if (str.IsEmpty()) { - return *this; - } - ConcatInPlace(str.GetLength(), str.GetPtr()); - return *this; -} -bool CFX_WideString::Equal(const wchar_t* ptr) const { - if (!m_pData) { - return !ptr || ptr[0] == L'\0'; - } - if (!ptr) { - return m_pData->m_nDataLength == 0; - } - return wcslen(ptr) == static_cast(m_pData->m_nDataLength) && - wmemcmp(ptr, m_pData->m_String, m_pData->m_nDataLength) == 0; -} -bool CFX_WideString::Equal(const CFX_WideStringC& str) const { - if (!m_pData) { - return str.IsEmpty(); - } - return str.GetLength() == m_pData->m_nDataLength && - wmemcmp(str.GetPtr(), m_pData->m_String, m_pData->m_nDataLength) == 0; -} -bool CFX_WideString::Equal(const CFX_WideString& other) const { - if (IsEmpty()) { - return other.IsEmpty(); - } - if (other.IsEmpty()) { - return false; - } - return other.m_pData->m_nDataLength == m_pData->m_nDataLength && - wmemcmp(other.m_pData->m_String, m_pData->m_String, - m_pData->m_nDataLength) == 0; -} -void CFX_WideString::Empty() { - if (m_pData) { - m_pData->Release(); - m_pData = NULL; - } -} -void CFX_WideString::ConcatInPlace(FX_STRSIZE nSrcLen, - const FX_WCHAR* lpszSrcData) { - if (nSrcLen == 0 || !lpszSrcData) { - return; - } - if (!m_pData) { - m_pData = StringData::Create(nSrcLen); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen * sizeof(FX_WCHAR)); - } - return; - } - if (m_pData->m_nRefs > 1 || - m_pData->m_nDataLength + nSrcLen > m_pData->m_nAllocLength) { - ConcatCopy(m_pData->m_nDataLength, m_pData->m_String, nSrcLen, lpszSrcData); - } else { - FXSYS_memcpy(m_pData->m_String + m_pData->m_nDataLength, lpszSrcData, - nSrcLen * sizeof(FX_WCHAR)); - m_pData->m_nDataLength += nSrcLen; - m_pData->m_String[m_pData->m_nDataLength] = 0; - } -} -void CFX_WideString::ConcatCopy(FX_STRSIZE nSrc1Len, - const FX_WCHAR* lpszSrc1Data, - FX_STRSIZE nSrc2Len, - const FX_WCHAR* lpszSrc2Data) { - FX_STRSIZE nNewLen = nSrc1Len + nSrc2Len; - if (nNewLen <= 0) { - return; - } - // Don't release until done copying, might be one of the arguments. - StringData* pOldData = m_pData; - m_pData = StringData::Create(nNewLen); - if (m_pData) { - wmemcpy(m_pData->m_String, lpszSrc1Data, nSrc1Len); - wmemcpy(m_pData->m_String + nSrc1Len, lpszSrc2Data, nSrc2Len); - } - pOldData->Release(); -} -void CFX_WideString::CopyBeforeWrite() { - if (!m_pData || m_pData->m_nRefs <= 1) { - return; - } - StringData* pData = m_pData; - m_pData->Release(); - FX_STRSIZE nDataLength = pData->m_nDataLength; - m_pData = StringData::Create(nDataLength); - if (m_pData) { - FXSYS_memcpy(m_pData->m_String, pData->m_String, - (nDataLength + 1) * sizeof(FX_WCHAR)); - } -} -void CFX_WideString::AllocBeforeWrite(FX_STRSIZE nLen) { - if (m_pData && m_pData->m_nRefs <= 1 && m_pData->m_nAllocLength >= nLen) { - return; - } - Empty(); - m_pData = StringData::Create(nLen); -} -void CFX_WideString::AssignCopy(FX_STRSIZE nSrcLen, - const FX_WCHAR* lpszSrcData) { - AllocBeforeWrite(nSrcLen); - FXSYS_memcpy(m_pData->m_String, lpszSrcData, nSrcLen * sizeof(FX_WCHAR)); - m_pData->m_nDataLength = nSrcLen; - m_pData->m_String[nSrcLen] = 0; -} -int CFX_WideString::Compare(const FX_WCHAR* lpsz) const { - if (m_pData) - return FXSYS_wcscmp(m_pData->m_String, lpsz); - return (!lpsz || lpsz[0] == 0) ? 0 : -1; -} -CFX_ByteString CFX_WideString::UTF8Encode() const { - return FX_UTF8Encode(*this); -} -CFX_ByteString CFX_WideString::UTF16LE_Encode() const { - if (!m_pData) { - return CFX_ByteString("\0\0", 2); - } - int len = m_pData->m_nDataLength; - CFX_ByteString result; - FX_CHAR* buffer = result.GetBuffer(len * 2 + 2); - for (int i = 0; i < len; i++) { - buffer[i * 2] = m_pData->m_String[i] & 0xff; - buffer[i * 2 + 1] = m_pData->m_String[i] >> 8; - } - buffer[len * 2] = 0; - buffer[len * 2 + 1] = 0; - result.ReleaseBuffer(len * 2 + 2); - return result; -} - -void CFX_WideString::Reserve(FX_STRSIZE len) { - GetBuffer(len); - ReleaseBuffer(GetLength()); -} -FX_WCHAR* CFX_WideString::GetBuffer(FX_STRSIZE nMinBufLength) { - if (!m_pData && nMinBufLength == 0) { - return NULL; - } - if (m_pData && m_pData->m_nRefs <= 1 && - m_pData->m_nAllocLength >= nMinBufLength) { - return m_pData->m_String; - } - if (!m_pData) { - m_pData = StringData::Create(nMinBufLength); - if (!m_pData) { - return NULL; - } - m_pData->m_nDataLength = 0; - m_pData->m_String[0] = 0; - return m_pData->m_String; - } - StringData* pOldData = m_pData; - FX_STRSIZE nOldLen = pOldData->m_nDataLength; - if (nMinBufLength < nOldLen) { - nMinBufLength = nOldLen; - } - m_pData = StringData::Create(nMinBufLength); - if (!m_pData) { - return NULL; - } - FXSYS_memcpy(m_pData->m_String, pOldData->m_String, - (nOldLen + 1) * sizeof(FX_WCHAR)); - m_pData->m_nDataLength = nOldLen; - pOldData->Release(); - return m_pData->m_String; -} - -// static -CFX_WideString CFX_WideString::FromLocal(const CFX_ByteString& str) { - return FromCodePage(str, 0); -} - -// static -CFX_WideString CFX_WideString::FromCodePage(const CFX_ByteString& str, - FX_WORD codepage) { - return CFX_CharMap::GetWideString(codepage, str); -} - -// static -CFX_WideString CFX_WideString::FromUTF8(const char* str, FX_STRSIZE len) { - if (!str || 0 == len) { - return CFX_WideString(); - } - - CFX_UTF8Decoder decoder; - for (FX_STRSIZE i = 0; i < len; i++) { - decoder.Input(str[i]); - } - return decoder.GetResult(); -} - -// static -CFX_WideString CFX_WideString::FromUTF16LE(const unsigned short* wstr, - FX_STRSIZE wlen) { - if (!wstr || 0 == wlen) { - return CFX_WideString(); - } - - CFX_WideString result; - FX_WCHAR* buf = result.GetBuffer(wlen); - for (int i = 0; i < wlen; i++) { - buf[i] = wstr[i]; - } - result.ReleaseBuffer(wlen); - return result; -} - -FX_STRSIZE CFX_WideString::WStringLength(const unsigned short* str) { - FX_STRSIZE len = 0; - if (str) - while (str[len]) - len++; - return len; -} - -void CFX_WideString::AllocCopy(CFX_WideString& dest, - FX_STRSIZE nCopyLen, - FX_STRSIZE nCopyIndex) const { - // |FX_STRSIZE| is currently typedef'd as in |int|. TODO(palmer): It - // should be a |size_t|, or at least unsigned. - if (nCopyLen == 0 || nCopyLen < 0) { - return; - } - pdfium::base::CheckedNumeric iSize = - static_cast(sizeof(FX_WCHAR)); - iSize *= nCopyLen; - ASSERT(!dest.m_pData); - dest.m_pData = StringData::Create(nCopyLen); - if (dest.m_pData) { - FXSYS_memcpy(dest.m_pData->m_String, m_pData->m_String + nCopyIndex, - iSize.ValueOrDie()); - } -} -CFX_WideString CFX_WideString::Left(FX_STRSIZE nCount) const { - if (!m_pData) { - return CFX_WideString(); - } - if (nCount < 0) { - nCount = 0; - } - if (nCount >= m_pData->m_nDataLength) { - return *this; - } - CFX_WideString dest; - AllocCopy(dest, nCount, 0); - return dest; -} -CFX_WideString CFX_WideString::Mid(FX_STRSIZE nFirst) const { - return Mid(nFirst, m_pData->m_nDataLength - nFirst); -} -CFX_WideString CFX_WideString::Mid(FX_STRSIZE nFirst, FX_STRSIZE nCount) const { - if (!m_pData) { - return CFX_WideString(); - } - if (nFirst < 0) { - nFirst = 0; - } - if (nCount < 0) { - nCount = 0; - } - if (nFirst + nCount > m_pData->m_nDataLength) { - nCount = m_pData->m_nDataLength - nFirst; - } - if (nFirst > m_pData->m_nDataLength) { - nCount = 0; - } - if (nFirst == 0 && nFirst + nCount == m_pData->m_nDataLength) { - return *this; - } - CFX_WideString dest; - AllocCopy(dest, nCount, nFirst); - return dest; -} -CFX_WideString CFX_WideString::Right(FX_STRSIZE nCount) const { - if (!m_pData) { - return CFX_WideString(); - } - if (nCount < 0) { - nCount = 0; - } - if (nCount >= m_pData->m_nDataLength) { - return *this; - } - CFX_WideString dest; - AllocCopy(dest, nCount, m_pData->m_nDataLength - nCount); - return dest; -} -int CFX_WideString::CompareNoCase(const FX_WCHAR* lpsz) const { - if (!m_pData) { - return (!lpsz || lpsz[0] == 0) ? 0 : -1; - } - return FXSYS_wcsicmp(m_pData->m_String, lpsz); -} -int CFX_WideString::Compare(const CFX_WideString& str) const { - if (!m_pData) { - if (!str.m_pData) { - return 0; - } - return -1; - } - if (!str.m_pData) { - return 1; - } - int this_len = m_pData->m_nDataLength; - int that_len = str.m_pData->m_nDataLength; - int min_len = this_len < that_len ? this_len : that_len; - for (int i = 0; i < min_len; i++) { - if (m_pData->m_String[i] < str.m_pData->m_String[i]) { - return -1; - } - if (m_pData->m_String[i] > str.m_pData->m_String[i]) { - return 1; - } - } - if (this_len < that_len) { - return -1; - } - if (this_len > that_len) { - return 1; - } - return 0; -} -void CFX_WideString::SetAt(FX_STRSIZE nIndex, FX_WCHAR ch) { - if (!m_pData) { - return; - } - ASSERT(nIndex >= 0); - ASSERT(nIndex < m_pData->m_nDataLength); - CopyBeforeWrite(); - m_pData->m_String[nIndex] = ch; -} -void CFX_WideString::MakeLower() { - if (!m_pData) { - return; - } - CopyBeforeWrite(); - if (GetLength() < 1) { - return; - } - FXSYS_wcslwr(m_pData->m_String); -} -void CFX_WideString::MakeUpper() { - if (!m_pData) { - return; - } - CopyBeforeWrite(); - if (GetLength() < 1) { - return; - } - FXSYS_wcsupr(m_pData->m_String); -} -FX_STRSIZE CFX_WideString::Find(const FX_WCHAR* lpszSub, - FX_STRSIZE nStart) const { - FX_STRSIZE nLength = GetLength(); - if (nLength < 1 || nStart > nLength) { - return -1; - } - const FX_WCHAR* lpsz = FXSYS_wcsstr(m_pData->m_String + nStart, lpszSub); - return lpsz ? (int)(lpsz - m_pData->m_String) : -1; -} -FX_STRSIZE CFX_WideString::Find(FX_WCHAR ch, FX_STRSIZE nStart) const { - if (!m_pData) { - return -1; - } - FX_STRSIZE nLength = m_pData->m_nDataLength; - if (nStart >= nLength) { - return -1; - } - const FX_WCHAR* lpsz = FXSYS_wcschr(m_pData->m_String + nStart, ch); - return (lpsz) ? (int)(lpsz - m_pData->m_String) : -1; -} -void CFX_WideString::TrimRight(const FX_WCHAR* lpszTargetList) { - FXSYS_assert(lpszTargetList); - if (!m_pData || *lpszTargetList == 0) { - return; - } - CopyBeforeWrite(); - FX_STRSIZE len = GetLength(); - if (len < 1) { - return; - } - FX_STRSIZE pos = len; - while (pos) { - if (!FXSYS_wcschr(lpszTargetList, m_pData->m_String[pos - 1])) { - break; - } - pos--; - } - if (pos < len) { - m_pData->m_String[pos] = 0; - m_pData->m_nDataLength = pos; - } -} -void CFX_WideString::TrimRight(FX_WCHAR chTarget) { - FX_WCHAR str[2] = {chTarget, 0}; - TrimRight(str); -} -void CFX_WideString::TrimRight() { - TrimRight(L"\x09\x0a\x0b\x0c\x0d\x20"); -} -void CFX_WideString::TrimLeft(const FX_WCHAR* lpszTargets) { - FXSYS_assert(lpszTargets); - if (!m_pData || *lpszTargets == 0) { - return; - } - CopyBeforeWrite(); - if (GetLength() < 1) { - return; - } - const FX_WCHAR* lpsz = m_pData->m_String; - while (*lpsz != 0) { - if (!FXSYS_wcschr(lpszTargets, *lpsz)) { - break; - } - lpsz++; - } - if (lpsz != m_pData->m_String) { - int nDataLength = - m_pData->m_nDataLength - (FX_STRSIZE)(lpsz - m_pData->m_String); - FXSYS_memmove(m_pData->m_String, lpsz, - (nDataLength + 1) * sizeof(FX_WCHAR)); - m_pData->m_nDataLength = nDataLength; - } -} -void CFX_WideString::TrimLeft(FX_WCHAR chTarget) { - FX_WCHAR str[2] = {chTarget, 0}; - TrimLeft(str); -} -void CFX_WideString::TrimLeft() { - TrimLeft(L"\x09\x0a\x0b\x0c\x0d\x20"); -} -FX_STRSIZE CFX_WideString::Replace(const FX_WCHAR* lpszOld, - const FX_WCHAR* lpszNew) { - if (GetLength() < 1) { - return 0; - } - if (!lpszOld) { - return 0; - } - FX_STRSIZE nSourceLen = FXSYS_wcslen(lpszOld); - if (nSourceLen == 0) { - return 0; - } - FX_STRSIZE nReplacementLen = lpszNew ? FXSYS_wcslen(lpszNew) : 0; - FX_STRSIZE nCount = 0; - FX_WCHAR* lpszStart = m_pData->m_String; - FX_WCHAR* lpszEnd = m_pData->m_String + m_pData->m_nDataLength; - FX_WCHAR* lpszTarget; - { - while ((lpszTarget = (FX_WCHAR*)FXSYS_wcsstr(lpszStart, lpszOld)) && - lpszStart < lpszEnd) { - nCount++; - lpszStart = lpszTarget + nSourceLen; - } - } - if (nCount > 0) { - CopyBeforeWrite(); - FX_STRSIZE nOldLength = m_pData->m_nDataLength; - FX_STRSIZE nNewLength = - nOldLength + (nReplacementLen - nSourceLen) * nCount; - if (m_pData->m_nAllocLength < nNewLength || m_pData->m_nRefs > 1) { - StringData* pOldData = m_pData; - const FX_WCHAR* pstr = m_pData->m_String; - m_pData = StringData::Create(nNewLength); - if (!m_pData) { - return 0; - } - FXSYS_memcpy(m_pData->m_String, pstr, - pOldData->m_nDataLength * sizeof(FX_WCHAR)); - pOldData->Release(); - } - lpszStart = m_pData->m_String; - lpszEnd = m_pData->m_String + std::max(m_pData->m_nDataLength, nNewLength); - { - while ((lpszTarget = (FX_WCHAR*)FXSYS_wcsstr(lpszStart, lpszOld)) != - NULL && - lpszStart < lpszEnd) { - FX_STRSIZE nBalance = - nOldLength - - (FX_STRSIZE)(lpszTarget - m_pData->m_String + nSourceLen); - FXSYS_memmove(lpszTarget + nReplacementLen, lpszTarget + nSourceLen, - nBalance * sizeof(FX_WCHAR)); - FXSYS_memcpy(lpszTarget, lpszNew, nReplacementLen * sizeof(FX_WCHAR)); - lpszStart = lpszTarget + nReplacementLen; - lpszStart[nBalance] = 0; - nOldLength += (nReplacementLen - nSourceLen); - } - } - ASSERT(m_pData->m_String[nNewLength] == 0); - m_pData->m_nDataLength = nNewLength; - } - return nCount; -} -FX_STRSIZE CFX_WideString::Insert(FX_STRSIZE nIndex, FX_WCHAR ch) { - CopyBeforeWrite(); - if (nIndex < 0) { - nIndex = 0; - } - FX_STRSIZE nNewLength = GetLength(); - if (nIndex > nNewLength) { - nIndex = nNewLength; - } - nNewLength++; - if (!m_pData || m_pData->m_nAllocLength < nNewLength) { - StringData* pOldData = m_pData; - const FX_WCHAR* pstr = m_pData->m_String; - m_pData = StringData::Create(nNewLength); - if (!m_pData) { - return 0; - } - if (pOldData) { - FXSYS_memmove(m_pData->m_String, pstr, - (pOldData->m_nDataLength + 1) * sizeof(FX_WCHAR)); - pOldData->Release(); - } else { - m_pData->m_String[0] = 0; - } - } - FXSYS_memmove(m_pData->m_String + nIndex + 1, m_pData->m_String + nIndex, - (nNewLength - nIndex) * sizeof(FX_WCHAR)); - m_pData->m_String[nIndex] = ch; - m_pData->m_nDataLength = nNewLength; - return nNewLength; -} -FX_STRSIZE CFX_WideString::Delete(FX_STRSIZE nIndex, FX_STRSIZE nCount) { - if (GetLength() < 1) { - return 0; - } - if (nIndex < 0) { - nIndex = 0; - } - FX_STRSIZE nOldLength = m_pData->m_nDataLength; - if (nCount > 0 && nIndex < nOldLength) { - CopyBeforeWrite(); - int nBytesToCopy = nOldLength - (nIndex + nCount) + 1; - FXSYS_memmove(m_pData->m_String + nIndex, - m_pData->m_String + nIndex + nCount, - nBytesToCopy * sizeof(FX_WCHAR)); - m_pData->m_nDataLength = nOldLength - nCount; - } - return m_pData->m_nDataLength; -} -FX_STRSIZE CFX_WideString::Remove(FX_WCHAR chRemove) { - if (!m_pData) { - return 0; - } - CopyBeforeWrite(); - if (GetLength() < 1) { - return 0; - } - FX_WCHAR* pstrSource = m_pData->m_String; - FX_WCHAR* pstrDest = m_pData->m_String; - FX_WCHAR* pstrEnd = m_pData->m_String + m_pData->m_nDataLength; - while (pstrSource < pstrEnd) { - if (*pstrSource != chRemove) { - *pstrDest = *pstrSource; - pstrDest++; - } - pstrSource++; - } - *pstrDest = 0; - FX_STRSIZE nCount = (FX_STRSIZE)(pstrSource - pstrDest); - m_pData->m_nDataLength -= nCount; - return nCount; -} -#define FORCE_ANSI 0x10000 -#define FORCE_UNICODE 0x20000 -#define FORCE_INT64 0x40000 -void CFX_WideString::FormatV(const FX_WCHAR* lpszFormat, va_list argList) { - va_list argListSave; -#if defined(__ARMCC_VERSION) || \ - (!defined(_MSC_VER) && (_FX_CPU_ == _FX_X64_ || _FX_CPU_ == _FX_IA64_ || \ - _FX_CPU_ == _FX_ARM64_)) || \ - defined(__native_client__) - va_copy(argListSave, argList); -#else - argListSave = argList; -#endif - int nMaxLen = 0; - for (const FX_WCHAR* lpsz = lpszFormat; *lpsz != 0; lpsz++) { - if (*lpsz != '%' || *(lpsz = lpsz + 1) == '%') { - nMaxLen += FXSYS_wcslen(lpsz); - continue; - } - int nItemLen = 0; - int nWidth = 0; - for (; *lpsz != 0; lpsz++) { - if (*lpsz == '#') { - nMaxLen += 2; - } else if (*lpsz == '*') { - nWidth = va_arg(argList, int); - } else if (*lpsz != '-' && *lpsz != '+' && *lpsz != '0' && *lpsz != ' ') { - break; - } - } - if (nWidth == 0) { - nWidth = FXSYS_wtoi(lpsz); - while (std::iswdigit(*lpsz)) - ++lpsz; - } - if (nWidth < 0 || nWidth > 128 * 1024) { - lpszFormat = L"Bad width"; - nMaxLen = 10; - break; - } - int nPrecision = 0; - if (*lpsz == '.') { - lpsz++; - if (*lpsz == '*') { - nPrecision = va_arg(argList, int); - lpsz++; - } else { - nPrecision = FXSYS_wtoi(lpsz); - while (std::iswdigit(*lpsz)) - ++lpsz; - } - } - if (nPrecision < 0 || nPrecision > 128 * 1024) { - lpszFormat = L"Bad precision"; - nMaxLen = 14; - break; - } - int nModifier = 0; - if (*lpsz == L'I' && *(lpsz + 1) == L'6' && *(lpsz + 2) == L'4') { - lpsz += 3; - nModifier = FORCE_INT64; - } else { - switch (*lpsz) { - case 'h': - nModifier = FORCE_ANSI; - lpsz++; - break; - case 'l': - nModifier = FORCE_UNICODE; - lpsz++; - break; - case 'F': - case 'N': - case 'L': - lpsz++; - break; - } - } - switch (*lpsz | nModifier) { - case 'c': - case 'C': - nItemLen = 2; - va_arg(argList, int); - break; - case 'c' | FORCE_ANSI: - case 'C' | FORCE_ANSI: - nItemLen = 2; - va_arg(argList, int); - break; - case 'c' | FORCE_UNICODE: - case 'C' | FORCE_UNICODE: - nItemLen = 2; - va_arg(argList, int); - break; - case 's': { - const FX_WCHAR* pstrNextArg = va_arg(argList, const FX_WCHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_wcslen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - case 'S': { - const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_strlen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - case 's' | FORCE_ANSI: - case 'S' | FORCE_ANSI: { - const FX_CHAR* pstrNextArg = va_arg(argList, const FX_CHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_strlen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - case 's' | FORCE_UNICODE: - case 'S' | FORCE_UNICODE: { - FX_WCHAR* pstrNextArg = va_arg(argList, FX_WCHAR*); - if (pstrNextArg) { - nItemLen = FXSYS_wcslen(pstrNextArg); - if (nItemLen < 1) { - nItemLen = 1; - } - } else { - nItemLen = 6; - } - } break; - } - if (nItemLen != 0) { - if (nPrecision != 0 && nItemLen > nPrecision) { - nItemLen = nPrecision; - } - if (nItemLen < nWidth) { - nItemLen = nWidth; - } - } else { - switch (*lpsz) { - case 'd': - case 'i': - case 'u': - case 'x': - case 'X': - case 'o': - if (nModifier & FORCE_INT64) { - va_arg(argList, int64_t); - } else { - va_arg(argList, int); - } - nItemLen = 32; - if (nItemLen < nWidth + nPrecision) { - nItemLen = nWidth + nPrecision; - } - break; - case 'a': - case 'A': - case 'e': - case 'E': - case 'g': - case 'G': - va_arg(argList, double); - nItemLen = 128; - if (nItemLen < nWidth + nPrecision) { - nItemLen = nWidth + nPrecision; - } - break; - case 'f': - if (nWidth + nPrecision > 100) { - nItemLen = nPrecision + nWidth + 128; - } else { - double f; - char pszTemp[256]; - f = va_arg(argList, double); - FXSYS_snprintf(pszTemp, sizeof(pszTemp), "%*.*f", nWidth, - nPrecision + 6, f); - nItemLen = FXSYS_strlen(pszTemp); - } - break; - case 'p': - va_arg(argList, void*); - nItemLen = 32; - if (nItemLen < nWidth + nPrecision) { - nItemLen = nWidth + nPrecision; - } - break; - case 'n': - va_arg(argList, int*); - break; - } - } - nMaxLen += nItemLen; - } - GetBuffer(nMaxLen); - if (m_pData) { - FXSYS_vswprintf((wchar_t*)m_pData->m_String, nMaxLen + 1, - (const wchar_t*)lpszFormat, argListSave); - ReleaseBuffer(); - } - va_end(argListSave); -} -void CFX_WideString::Format(const FX_WCHAR* lpszFormat, ...) { - va_list argList; - va_start(argList, lpszFormat); - FormatV(lpszFormat, argList); - va_end(argList); -} -FX_FLOAT FX_wtof(const FX_WCHAR* str, int len) { - if (len == 0) { - return 0.0; - } - int cc = 0; - FX_BOOL bNegative = FALSE; - if (str[0] == '+') { - cc++; - } else if (str[0] == '-') { - bNegative = TRUE; - cc++; - } - int integer = 0; - while (cc < len) { - if (str[cc] == '.') { - break; - } - integer = integer * 10 + FXSYS_toDecimalDigit(str[cc]); - cc++; - } - FX_FLOAT fraction = 0; - if (str[cc] == '.') { - cc++; - FX_FLOAT scale = 0.1f; - while (cc < len) { - fraction += scale * FXSYS_toDecimalDigit(str[cc]); - scale *= 0.1f; - cc++; - } - } - fraction += (FX_FLOAT)integer; - return bNegative ? -fraction : fraction; -} -int CFX_WideString::GetInteger() const { - return m_pData ? FXSYS_wtoi(m_pData->m_String) : 0; -} -FX_FLOAT CFX_WideString::GetFloat() const { - return m_pData ? FX_wtof(m_pData->m_String, m_pData->m_nDataLength) : 0.0f; -} - -// static -CFX_ByteString CFX_CharMap::GetByteString(FX_WORD codepage, - const CFX_WideString& wstr) { - FXSYS_assert(IsValidCodePage(codepage)); - int src_len = wstr.GetLength(); - int dest_len = FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, - nullptr, 0, nullptr, nullptr); - CFX_ByteString bstr; - if (dest_len) { - FX_CHAR* dest_buf = bstr.GetBuffer(dest_len); - FXSYS_WideCharToMultiByte(codepage, 0, wstr.c_str(), src_len, dest_buf, - dest_len, nullptr, nullptr); - bstr.ReleaseBuffer(dest_len); - } - return bstr; -} - -// static -CFX_WideString CFX_CharMap::GetWideString(FX_WORD codepage, - const CFX_ByteString& bstr) { - FXSYS_assert(IsValidCodePage(codepage)); - int src_len = bstr.GetLength(); - int dest_len = - FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, nullptr, 0); - CFX_WideString wstr; - if (dest_len) { - FX_WCHAR* dest_buf = wstr.GetBuffer(dest_len); - FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, dest_buf, dest_len); - wstr.ReleaseBuffer(dest_len); - } - return wstr; -} diff --git a/core/src/fxcrt/fx_basic_wstring_unittest.cpp b/core/src/fxcrt/fx_basic_wstring_unittest.cpp deleted file mode 100644 index 64d694c436..0000000000 --- a/core/src/fxcrt/fx_basic_wstring_unittest.cpp +++ /dev/null @@ -1,524 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fxcrt/fx_basic.h" -#include "testing/fx_string_testhelpers.h" -#include "testing/gtest/include/gtest/gtest.h" - -TEST(fxcrt, WideStringOperatorSubscript) { - // CFX_WideString includes the NUL terminator for non-empty strings. - CFX_WideString abc(L"abc"); - EXPECT_EQ(L'a', abc[0]); - EXPECT_EQ(L'b', abc[1]); - EXPECT_EQ(L'c', abc[2]); - EXPECT_EQ(L'\0', abc[3]); -} - -TEST(fxcrt, WideStringOperatorLT) { - CFX_WideString empty; - CFX_WideString a(L"a"); - CFX_WideString abc(L"\x0110qq"); // Comes before despite endianness. - CFX_WideString def(L"\x1001qq"); // Comes after despite endianness. - - EXPECT_FALSE(empty < empty); - EXPECT_FALSE(a < a); - EXPECT_FALSE(abc < abc); - EXPECT_FALSE(def < def); - - EXPECT_TRUE(empty < a); - EXPECT_FALSE(a < empty); - - EXPECT_TRUE(empty < abc); - EXPECT_FALSE(abc < empty); - - EXPECT_TRUE(empty < def); - EXPECT_FALSE(def < empty); - - EXPECT_TRUE(a < abc); - EXPECT_FALSE(abc < a); - - EXPECT_TRUE(a < def); - EXPECT_FALSE(def < a); - - EXPECT_TRUE(abc < def); - EXPECT_FALSE(def < abc); -} - -TEST(fxcrt, WideStringOperatorEQ) { - CFX_WideString null_string; - EXPECT_TRUE(null_string == null_string); - - CFX_WideString empty_string(L""); - EXPECT_TRUE(empty_string == empty_string); - EXPECT_TRUE(empty_string == null_string); - EXPECT_TRUE(null_string == empty_string); - - CFX_WideString deleted_string(L"hello"); - deleted_string.Delete(0, 5); - EXPECT_TRUE(deleted_string == deleted_string); - EXPECT_TRUE(deleted_string == null_string); - EXPECT_TRUE(deleted_string == empty_string); - EXPECT_TRUE(null_string == deleted_string); - EXPECT_TRUE(null_string == empty_string); - - CFX_WideString wide_string(L"hello"); - EXPECT_TRUE(wide_string == wide_string); - EXPECT_FALSE(wide_string == null_string); - EXPECT_FALSE(wide_string == empty_string); - EXPECT_FALSE(wide_string == deleted_string); - EXPECT_FALSE(null_string == wide_string); - EXPECT_FALSE(empty_string == wide_string); - EXPECT_FALSE(deleted_string == wide_string); - - CFX_WideString wide_string_same1(L"hello"); - EXPECT_TRUE(wide_string == wide_string_same1); - EXPECT_TRUE(wide_string_same1 == wide_string); - - CFX_WideString wide_string_same2(wide_string); - EXPECT_TRUE(wide_string == wide_string_same2); - EXPECT_TRUE(wide_string_same2 == wide_string); - - CFX_WideString wide_string1(L"he"); - CFX_WideString wide_string2(L"hellp"); - CFX_WideString wide_string3(L"hellod"); - EXPECT_FALSE(wide_string == wide_string1); - EXPECT_FALSE(wide_string == wide_string2); - EXPECT_FALSE(wide_string == wide_string3); - EXPECT_FALSE(wide_string1 == wide_string); - EXPECT_FALSE(wide_string2 == wide_string); - EXPECT_FALSE(wide_string3 == wide_string); - - CFX_WideStringC null_string_c; - CFX_WideStringC empty_string_c(L""); - EXPECT_TRUE(null_string == null_string_c); - EXPECT_TRUE(null_string == empty_string_c); - EXPECT_TRUE(empty_string == null_string_c); - EXPECT_TRUE(empty_string == empty_string_c); - EXPECT_TRUE(deleted_string == null_string_c); - EXPECT_TRUE(deleted_string == empty_string_c); - EXPECT_TRUE(null_string_c == null_string); - EXPECT_TRUE(empty_string_c == null_string); - EXPECT_TRUE(null_string_c == empty_string); - EXPECT_TRUE(empty_string_c == empty_string); - EXPECT_TRUE(null_string_c == deleted_string); - EXPECT_TRUE(empty_string_c == deleted_string); - - CFX_WideStringC wide_string_c_same1(L"hello"); - EXPECT_TRUE(wide_string == wide_string_c_same1); - EXPECT_TRUE(wide_string_c_same1 == wide_string); - - CFX_WideStringC wide_string_c1(L"he"); - CFX_WideStringC wide_string_c2(L"hellp"); - CFX_WideStringC wide_string_c3(L"hellod"); - EXPECT_FALSE(wide_string == wide_string_c1); - EXPECT_FALSE(wide_string == wide_string_c2); - EXPECT_FALSE(wide_string == wide_string_c3); - EXPECT_FALSE(wide_string_c1 == wide_string); - EXPECT_FALSE(wide_string_c2 == wide_string); - EXPECT_FALSE(wide_string_c3 == wide_string); - - const wchar_t* c_null_string = nullptr; - const wchar_t* c_empty_string = L""; - EXPECT_TRUE(null_string == c_null_string); - EXPECT_TRUE(null_string == c_empty_string); - EXPECT_TRUE(empty_string == c_null_string); - EXPECT_TRUE(empty_string == c_empty_string); - EXPECT_TRUE(deleted_string == c_null_string); - EXPECT_TRUE(deleted_string == c_empty_string); - EXPECT_TRUE(c_null_string == null_string); - EXPECT_TRUE(c_empty_string == null_string); - EXPECT_TRUE(c_null_string == empty_string); - EXPECT_TRUE(c_empty_string == empty_string); - EXPECT_TRUE(c_null_string == deleted_string); - EXPECT_TRUE(c_empty_string == deleted_string); - - const wchar_t* c_string_same1 = L"hello"; - EXPECT_TRUE(wide_string == c_string_same1); - EXPECT_TRUE(c_string_same1 == wide_string); - - const wchar_t* c_string1 = L"he"; - const wchar_t* c_string2 = L"hellp"; - const wchar_t* c_string3 = L"hellod"; - EXPECT_FALSE(wide_string == c_string1); - EXPECT_FALSE(wide_string == c_string2); - EXPECT_FALSE(wide_string == c_string3); - EXPECT_FALSE(c_string1 == wide_string); - EXPECT_FALSE(c_string2 == wide_string); - EXPECT_FALSE(c_string3 == wide_string); -} - -TEST(fxcrt, WideStringOperatorNE) { - CFX_WideString null_string; - EXPECT_FALSE(null_string != null_string); - - CFX_WideString empty_string(L""); - EXPECT_FALSE(empty_string != empty_string); - EXPECT_FALSE(empty_string != null_string); - EXPECT_FALSE(null_string != empty_string); - - CFX_WideString deleted_string(L"hello"); - deleted_string.Delete(0, 5); - EXPECT_FALSE(deleted_string != deleted_string); - EXPECT_FALSE(deleted_string != null_string); - EXPECT_FALSE(deleted_string != empty_string); - EXPECT_FALSE(null_string != deleted_string); - EXPECT_FALSE(null_string != empty_string); - - CFX_WideString wide_string(L"hello"); - EXPECT_FALSE(wide_string != wide_string); - EXPECT_TRUE(wide_string != null_string); - EXPECT_TRUE(wide_string != empty_string); - EXPECT_TRUE(wide_string != deleted_string); - EXPECT_TRUE(null_string != wide_string); - EXPECT_TRUE(empty_string != wide_string); - EXPECT_TRUE(deleted_string != wide_string); - - CFX_WideString wide_string_same1(L"hello"); - EXPECT_FALSE(wide_string != wide_string_same1); - EXPECT_FALSE(wide_string_same1 != wide_string); - - CFX_WideString wide_string_same2(wide_string); - EXPECT_FALSE(wide_string != wide_string_same2); - EXPECT_FALSE(wide_string_same2 != wide_string); - - CFX_WideString wide_string1(L"he"); - CFX_WideString wide_string2(L"hellp"); - CFX_WideString wide_string3(L"hellod"); - EXPECT_TRUE(wide_string != wide_string1); - EXPECT_TRUE(wide_string != wide_string2); - EXPECT_TRUE(wide_string != wide_string3); - EXPECT_TRUE(wide_string1 != wide_string); - EXPECT_TRUE(wide_string2 != wide_string); - EXPECT_TRUE(wide_string3 != wide_string); - - CFX_WideStringC null_string_c; - CFX_WideStringC empty_string_c(L""); - EXPECT_FALSE(null_string != null_string_c); - EXPECT_FALSE(null_string != empty_string_c); - EXPECT_FALSE(empty_string != null_string_c); - EXPECT_FALSE(empty_string != empty_string_c); - EXPECT_FALSE(deleted_string != null_string_c); - EXPECT_FALSE(deleted_string != empty_string_c); - EXPECT_FALSE(null_string_c != null_string); - EXPECT_FALSE(empty_string_c != null_string); - EXPECT_FALSE(null_string_c != empty_string); - EXPECT_FALSE(empty_string_c != empty_string); - - CFX_WideStringC wide_string_c_same1(L"hello"); - EXPECT_FALSE(wide_string != wide_string_c_same1); - EXPECT_FALSE(wide_string_c_same1 != wide_string); - - CFX_WideStringC wide_string_c1(L"he"); - CFX_WideStringC wide_string_c2(L"hellp"); - CFX_WideStringC wide_string_c3(L"hellod"); - EXPECT_TRUE(wide_string != wide_string_c1); - EXPECT_TRUE(wide_string != wide_string_c2); - EXPECT_TRUE(wide_string != wide_string_c3); - EXPECT_TRUE(wide_string_c1 != wide_string); - EXPECT_TRUE(wide_string_c2 != wide_string); - EXPECT_TRUE(wide_string_c3 != wide_string); - - const wchar_t* c_null_string = nullptr; - const wchar_t* c_empty_string = L""; - EXPECT_FALSE(null_string != c_null_string); - EXPECT_FALSE(null_string != c_empty_string); - EXPECT_FALSE(empty_string != c_null_string); - EXPECT_FALSE(empty_string != c_empty_string); - EXPECT_FALSE(deleted_string != c_null_string); - EXPECT_FALSE(deleted_string != c_empty_string); - EXPECT_FALSE(c_null_string != null_string); - EXPECT_FALSE(c_empty_string != null_string); - EXPECT_FALSE(c_null_string != empty_string); - EXPECT_FALSE(c_empty_string != empty_string); - EXPECT_FALSE(c_null_string != deleted_string); - EXPECT_FALSE(c_empty_string != deleted_string); - - const wchar_t* c_string_same1 = L"hello"; - EXPECT_FALSE(wide_string != c_string_same1); - EXPECT_FALSE(c_string_same1 != wide_string); - - const wchar_t* c_string1 = L"he"; - const wchar_t* c_string2 = L"hellp"; - const wchar_t* c_string3 = L"hellod"; - EXPECT_TRUE(wide_string != c_string1); - EXPECT_TRUE(wide_string != c_string2); - EXPECT_TRUE(wide_string != c_string3); - EXPECT_TRUE(c_string1 != wide_string); - EXPECT_TRUE(c_string2 != wide_string); - EXPECT_TRUE(c_string3 != wide_string); -} - -TEST(fxcrt, WideStringConcatInPlace) { - CFX_WideString fred; - fred.ConcatInPlace(4, L"FRED"); - EXPECT_EQ(L"FRED", fred); - - fred.ConcatInPlace(2, L"DY"); - EXPECT_EQ(L"FREDDY", fred); - - fred.Delete(3, 3); - EXPECT_EQ(L"FRE", fred); - - fred.ConcatInPlace(1, L"D"); - EXPECT_EQ(L"FRED", fred); - - CFX_WideString copy = fred; - fred.ConcatInPlace(2, L"DY"); - EXPECT_EQ(L"FREDDY", fred); - EXPECT_EQ(L"FRED", copy); - - // Test invalid arguments. - copy = fred; - fred.ConcatInPlace(-6, L"freddy"); - CFX_WideString not_aliased(L"xxxxxx"); - EXPECT_EQ(L"FREDDY", fred); - EXPECT_EQ(L"xxxxxx", not_aliased); -} - -TEST(fxcrt, WideStringUTF16LE_Encode) { - struct UTF16LEEncodeCase { - CFX_WideString ws; - CFX_ByteString bs; - } utf16le_encode_cases[] = { - {L"", CFX_ByteString("\0\0", 2)}, - {L"abc", CFX_ByteString("a\0b\0c\0\0\0", 8)}, - {L"abcdef", CFX_ByteString("a\0b\0c\0d\0e\0f\0\0\0", 14)}, - {L"abc\0def", CFX_ByteString("a\0b\0c\0\0\0", 8)}, - {L"\xaabb\xccdd", CFX_ByteString("\xbb\xaa\xdd\xcc\0\0", 6)}, - {L"\x3132\x6162", CFX_ByteString("\x32\x31\x62\x61\0\0", 6)}, - }; - - for (size_t i = 0; i < FX_ArraySize(utf16le_encode_cases); ++i) { - EXPECT_EQ(utf16le_encode_cases[i].bs, - utf16le_encode_cases[i].ws.UTF16LE_Encode()) - << " for case number " << i; - } -} - -TEST(fxcrt, WideStringCOperatorSubscript) { - // CFX_WideStringC includes the NUL terminator for non-empty strings. - CFX_WideStringC abc(L"abc"); - EXPECT_EQ(L'a', abc[0]); - EXPECT_EQ(L'b', abc[1]); - EXPECT_EQ(L'c', abc[2]); - EXPECT_EQ(L'\0', abc[3]); -} - -TEST(fxcrt, WideStringCOperatorLT) { - CFX_WideStringC empty; - CFX_WideStringC a(L"a"); - CFX_WideStringC abc(L"\x0110qq"); // Comes before despite endianness. - CFX_WideStringC def(L"\x1001qq"); // Comes after despite endianness. - - EXPECT_FALSE(empty < empty); - EXPECT_FALSE(a < a); - EXPECT_FALSE(abc < abc); - EXPECT_FALSE(def < def); - - EXPECT_TRUE(empty < a); - EXPECT_FALSE(a < empty); - - EXPECT_TRUE(empty < abc); - EXPECT_FALSE(abc < empty); - - EXPECT_TRUE(empty < def); - EXPECT_FALSE(def < empty); - - EXPECT_TRUE(a < abc); - EXPECT_FALSE(abc < a); - - EXPECT_TRUE(a < def); - EXPECT_FALSE(def < a); - - EXPECT_TRUE(abc < def); - EXPECT_FALSE(def < abc); -} - -TEST(fxcrt, WideStringCOperatorEQ) { - CFX_WideStringC wide_string_c(L"hello"); - EXPECT_TRUE(wide_string_c == wide_string_c); - - CFX_WideStringC wide_string_c_same1(L"hello"); - EXPECT_TRUE(wide_string_c == wide_string_c_same1); - EXPECT_TRUE(wide_string_c_same1 == wide_string_c); - - CFX_WideStringC wide_string_c_same2(wide_string_c); - EXPECT_TRUE(wide_string_c == wide_string_c_same2); - EXPECT_TRUE(wide_string_c_same2 == wide_string_c); - - CFX_WideStringC wide_string_c1(L"he"); - CFX_WideStringC wide_string_c2(L"hellp"); - CFX_WideStringC wide_string_c3(L"hellod"); - EXPECT_FALSE(wide_string_c == wide_string_c1); - EXPECT_FALSE(wide_string_c == wide_string_c2); - EXPECT_FALSE(wide_string_c == wide_string_c3); - EXPECT_FALSE(wide_string_c1 == wide_string_c); - EXPECT_FALSE(wide_string_c2 == wide_string_c); - EXPECT_FALSE(wide_string_c3 == wide_string_c); - - CFX_WideString wide_string_same1(L"hello"); - EXPECT_TRUE(wide_string_c == wide_string_same1); - EXPECT_TRUE(wide_string_same1 == wide_string_c); - - CFX_WideString wide_string1(L"he"); - CFX_WideString wide_string2(L"hellp"); - CFX_WideString wide_string3(L"hellod"); - EXPECT_FALSE(wide_string_c == wide_string1); - EXPECT_FALSE(wide_string_c == wide_string2); - EXPECT_FALSE(wide_string_c == wide_string3); - EXPECT_FALSE(wide_string1 == wide_string_c); - EXPECT_FALSE(wide_string2 == wide_string_c); - EXPECT_FALSE(wide_string3 == wide_string_c); - - const wchar_t* c_string_same1 = L"hello"; - EXPECT_TRUE(wide_string_c == c_string_same1); - EXPECT_TRUE(c_string_same1 == wide_string_c); - - const wchar_t* c_string1 = L"he"; - const wchar_t* c_string2 = L"hellp"; - const wchar_t* c_string3 = L"hellod"; - EXPECT_FALSE(wide_string_c == c_string1); - EXPECT_FALSE(wide_string_c == c_string2); - EXPECT_FALSE(wide_string_c == c_string3); - - EXPECT_FALSE(c_string1 == wide_string_c); - EXPECT_FALSE(c_string2 == wide_string_c); - EXPECT_FALSE(c_string3 == wide_string_c); -} - -TEST(fxcrt, WideStringCOperatorNE) { - CFX_WideStringC wide_string_c(L"hello"); - EXPECT_FALSE(wide_string_c != wide_string_c); - - CFX_WideStringC wide_string_c_same1(L"hello"); - EXPECT_FALSE(wide_string_c != wide_string_c_same1); - EXPECT_FALSE(wide_string_c_same1 != wide_string_c); - - CFX_WideStringC wide_string_c_same2(wide_string_c); - EXPECT_FALSE(wide_string_c != wide_string_c_same2); - EXPECT_FALSE(wide_string_c_same2 != wide_string_c); - - CFX_WideStringC wide_string_c1(L"he"); - CFX_WideStringC wide_string_c2(L"hellp"); - CFX_WideStringC wide_string_c3(L"hellod"); - EXPECT_TRUE(wide_string_c != wide_string_c1); - EXPECT_TRUE(wide_string_c != wide_string_c2); - EXPECT_TRUE(wide_string_c != wide_string_c3); - EXPECT_TRUE(wide_string_c1 != wide_string_c); - EXPECT_TRUE(wide_string_c2 != wide_string_c); - EXPECT_TRUE(wide_string_c3 != wide_string_c); - - CFX_WideString wide_string_same1(L"hello"); - EXPECT_FALSE(wide_string_c != wide_string_same1); - EXPECT_FALSE(wide_string_same1 != wide_string_c); - - CFX_WideString wide_string1(L"he"); - CFX_WideString wide_string2(L"hellp"); - CFX_WideString wide_string3(L"hellod"); - EXPECT_TRUE(wide_string_c != wide_string1); - EXPECT_TRUE(wide_string_c != wide_string2); - EXPECT_TRUE(wide_string_c != wide_string3); - EXPECT_TRUE(wide_string1 != wide_string_c); - EXPECT_TRUE(wide_string2 != wide_string_c); - EXPECT_TRUE(wide_string3 != wide_string_c); - - const wchar_t* c_string_same1 = L"hello"; - EXPECT_FALSE(wide_string_c != c_string_same1); - EXPECT_FALSE(c_string_same1 != wide_string_c); - - const wchar_t* c_string1 = L"he"; - const wchar_t* c_string2 = L"hellp"; - const wchar_t* c_string3 = L"hellod"; - EXPECT_TRUE(wide_string_c != c_string1); - EXPECT_TRUE(wide_string_c != c_string2); - EXPECT_TRUE(wide_string_c != c_string3); - - EXPECT_TRUE(c_string1 != wide_string_c); - EXPECT_TRUE(c_string2 != wide_string_c); - EXPECT_TRUE(c_string3 != wide_string_c); -} - -TEST(fxcrt, WideStringFormatWidth) { - { - CFX_WideString str; - str.Format(L"%5d", 1); - EXPECT_EQ(L" 1", str); - } - - { - CFX_WideString str; - str.Format(L"%d", 1); - EXPECT_EQ(L"1", str); - } - - { - CFX_WideString str; - str.Format(L"%*d", 5, 1); - EXPECT_EQ(L" 1", str); - } - - { - CFX_WideString str; - str.Format(L"%-1d", 1); - EXPECT_EQ(L"1", str); - } - - { - CFX_WideString str; - str.Format(L"%0d", 1); - EXPECT_EQ(L"1", str); - } - - { - CFX_WideString str; - str.Format(L"%1048576d", 1); - EXPECT_EQ(L"Bad width", str); - } -} - -TEST(fxcrt, WideStringFormatPrecision) { - { - CFX_WideString str; - str.Format(L"%.2f", 1.12345); - EXPECT_EQ(L"1.12", str); - } - - { - CFX_WideString str; - str.Format(L"%.*f", 3, 1.12345); - EXPECT_EQ(L"1.123", str); - } - - { - CFX_WideString str; - str.Format(L"%f", 1.12345); - EXPECT_EQ(L"1.123450", str); - } - - { - CFX_WideString str; - str.Format(L"%-1f", 1.12345); - EXPECT_EQ(L"1.123450", str); - } - - { - CFX_WideString str; - str.Format(L"%0f", 1.12345); - EXPECT_EQ(L"1.123450", str); - } - - { - CFX_WideString str; - str.Format(L"%.1048576f", 1.2); - EXPECT_EQ(L"Bad precision", str); - } -} - -TEST(fxcrt, EmptyWideString) { - CFX_WideString empty_str; - EXPECT_TRUE(empty_str.IsEmpty()); - EXPECT_EQ(0, empty_str.GetLength()); - const FX_WCHAR* cstr = empty_str.c_str(); - EXPECT_EQ(0, FXSYS_wcslen(cstr)); -} diff --git a/core/src/fxcrt/fx_bidi.cpp b/core/src/fxcrt/fx_bidi.cpp deleted file mode 100644 index a7a3ecb295..0000000000 --- a/core/src/fxcrt/fx_bidi.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_bidi.h" -#include "core/include/fxcrt/fx_ucd.h" - -#include - -CFX_BidiChar::CFX_BidiChar() - : m_CurrentSegment({0, 0, NEUTRAL}), m_LastSegment({0, 0, NEUTRAL}) {} - -bool CFX_BidiChar::AppendChar(FX_WCHAR wch) { - FX_DWORD dwProps = FX_GetUnicodeProperties(wch); - int32_t iBidiCls = (dwProps & FX_BIDICLASSBITSMASK) >> FX_BIDICLASSBITS; - Direction direction = NEUTRAL; - switch (iBidiCls) { - case FX_BIDICLASS_L: - case FX_BIDICLASS_AN: - case FX_BIDICLASS_EN: - direction = LEFT; - break; - case FX_BIDICLASS_R: - case FX_BIDICLASS_AL: - direction = RIGHT; - break; - } - - bool bChangeDirection = (direction != m_CurrentSegment.direction); - if (bChangeDirection) - StartNewSegment(direction); - - m_CurrentSegment.count++; - return bChangeDirection; -} - -bool CFX_BidiChar::EndChar() { - StartNewSegment(NEUTRAL); - return m_LastSegment.count > 0; -} - -void CFX_BidiChar::StartNewSegment(CFX_BidiChar::Direction direction) { - m_LastSegment = m_CurrentSegment; - m_CurrentSegment.start += m_CurrentSegment.count; - m_CurrentSegment.count = 0; - m_CurrentSegment.direction = direction; -} - -CFX_BidiString::CFX_BidiString(const CFX_WideString& str) - : m_Str(str), - m_pBidiChar(new CFX_BidiChar), - m_eOverallDirection(CFX_BidiChar::LEFT) { - for (int i = 0; i < m_Str.GetLength(); ++i) { - if (m_pBidiChar->AppendChar(m_Str.GetAt(i))) - m_Order.push_back(m_pBidiChar->GetSegmentInfo()); - } - if (m_pBidiChar->EndChar()) - m_Order.push_back(m_pBidiChar->GetSegmentInfo()); - - size_t nR2L = std::count_if(m_Order.begin(), m_Order.end(), - [](const CFX_BidiChar::Segment& seg) { - return seg.direction == CFX_BidiChar::RIGHT; - }); - - size_t nL2R = std::count_if(m_Order.begin(), m_Order.end(), - [](const CFX_BidiChar::Segment& seg) { - return seg.direction == CFX_BidiChar::LEFT; - }); - - if (nR2L > 0 && nR2L >= nL2R) - SetOverallDirectionRight(); -} - -void CFX_BidiString::SetOverallDirectionRight() { - if (m_eOverallDirection != CFX_BidiChar::RIGHT) { - std::reverse(m_Order.begin(), m_Order.end()); - m_eOverallDirection = CFX_BidiChar::RIGHT; - } -} diff --git a/core/src/fxcrt/fx_bidi_unittest.cpp b/core/src/fxcrt/fx_bidi_unittest.cpp deleted file mode 100644 index a3c148702b..0000000000 --- a/core/src/fxcrt/fx_bidi_unittest.cpp +++ /dev/null @@ -1,365 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fxcrt/fx_bidi.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace { - -const FX_WCHAR kNeutralChar = 32; -const FX_WCHAR kLeftChar = 65; -const FX_WCHAR kRightChar = 1424; - -} // namespace - -TEST(fxcrt, BidiCharEmpty) { - CFX_BidiChar bidi; - CFX_BidiChar::Segment info; - - info = bidi.GetSegmentInfo(); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, info.direction); - EXPECT_EQ(0, info.start); - EXPECT_EQ(0, info.count); - EXPECT_FALSE(bidi.EndChar()); -} - -TEST(fxcrt, BidiCharLeft) { - CFX_BidiChar bidi; - CFX_BidiChar::Segment info; - - EXPECT_TRUE(bidi.AppendChar(kLeftChar)); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(0, info.start); - EXPECT_EQ(0, info.count); - - EXPECT_FALSE(bidi.AppendChar(kLeftChar)); - EXPECT_FALSE(bidi.AppendChar(kLeftChar)); - - info = bidi.GetSegmentInfo(); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, info.direction); - EXPECT_EQ(0, info.start); - EXPECT_EQ(0, info.count); - - EXPECT_TRUE(bidi.EndChar()); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(CFX_BidiChar::LEFT, info.direction); - EXPECT_EQ(0, info.start); - EXPECT_EQ(3, info.count); - - EXPECT_FALSE(bidi.EndChar()); -} - -TEST(fxcrt, BidiCharLeftNeutralRight) { - CFX_BidiChar bidi; - CFX_BidiChar::Segment info; - - EXPECT_TRUE(bidi.AppendChar(kLeftChar)); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(0, info.start); - EXPECT_EQ(0, info.count); - - EXPECT_FALSE(bidi.AppendChar(kLeftChar)); - EXPECT_FALSE(bidi.AppendChar(kLeftChar)); - EXPECT_TRUE(bidi.AppendChar(kNeutralChar)); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(0, info.start); - EXPECT_EQ(3, info.count); - - EXPECT_FALSE(bidi.AppendChar(kNeutralChar)); - EXPECT_FALSE(bidi.AppendChar(kNeutralChar)); - EXPECT_FALSE(bidi.AppendChar(kNeutralChar)); - EXPECT_TRUE(bidi.AppendChar(kRightChar)); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, info.direction); - EXPECT_EQ(3, info.start); - EXPECT_EQ(4, info.count); - - EXPECT_TRUE(bidi.EndChar()); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(CFX_BidiChar::RIGHT, info.direction); - EXPECT_EQ(7, info.start); - EXPECT_EQ(1, info.count); - - EXPECT_FALSE(bidi.EndChar()); -} - -TEST(fxcrt, BidiCharLeftRightLeft) { - CFX_BidiChar bidi; - CFX_BidiChar::Segment info; - - EXPECT_TRUE(bidi.AppendChar(kLeftChar)); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(0, info.start); - EXPECT_EQ(0, info.count); - - EXPECT_FALSE(bidi.AppendChar(kLeftChar)); - EXPECT_FALSE(bidi.AppendChar(kLeftChar)); - EXPECT_TRUE(bidi.AppendChar(kRightChar)); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(0, info.start); - EXPECT_EQ(3, info.count); - - EXPECT_FALSE(bidi.AppendChar(kRightChar)); - EXPECT_FALSE(bidi.AppendChar(kRightChar)); - EXPECT_FALSE(bidi.AppendChar(kRightChar)); - EXPECT_TRUE(bidi.AppendChar(kLeftChar)); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(CFX_BidiChar::RIGHT, info.direction); - EXPECT_EQ(3, info.start); - EXPECT_EQ(4, info.count); - - EXPECT_TRUE(bidi.EndChar()); - info = bidi.GetSegmentInfo(); - EXPECT_EQ(CFX_BidiChar::LEFT, info.direction); - EXPECT_EQ(7, info.start); - EXPECT_EQ(1, info.count); - - EXPECT_FALSE(bidi.EndChar()); -} - -TEST(fxcrt, BidiStringEmpty) { - CFX_BidiString bidi(L""); - EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); - EXPECT_TRUE(bidi.begin() == bidi.end()); -} - -TEST(fxcrt, BidiStringAllNeutral) { - { - const FX_WCHAR str[] = {kNeutralChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); - - auto it = bidi.begin(); - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ++it; - EXPECT_TRUE(it == bidi.end()); - } - { - const FX_WCHAR str[] = {kNeutralChar, kNeutralChar, kNeutralChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); - - auto it = bidi.begin(); - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(3, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ++it; - EXPECT_TRUE(it == bidi.end()); - } -} - -TEST(fxcrt, BidiStringAllLeft) { - { - const FX_WCHAR str[] = {kLeftChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); - - auto it = bidi.begin(); - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(0, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(0, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_TRUE(it == bidi.end()); - } - { - const FX_WCHAR str[] = {kLeftChar, kLeftChar, kLeftChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); - - auto it = bidi.begin(); - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(0, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(0, it->start); - EXPECT_EQ(3, it->count); - EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_TRUE(it == bidi.end()); - } -} - -TEST(fxcrt, BidiStringAllRight) { - { - const FX_WCHAR str[] = {kRightChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::RIGHT, bidi.OverallDirection()); - - auto it = bidi.begin(); - EXPECT_EQ(0, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(0, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_TRUE(it == bidi.end()); - } - { - const FX_WCHAR str[] = {kRightChar, kRightChar, kRightChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::RIGHT, bidi.OverallDirection()); - - auto it = bidi.begin(); - EXPECT_EQ(0, it->start); - EXPECT_EQ(3, it->count); - EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(0, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_TRUE(it == bidi.end()); - } -} - -TEST(fxcrt, BidiStringLeftNeutralLeftRight) { - const FX_WCHAR str[] = {kLeftChar, kNeutralChar, kLeftChar, kRightChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); - - auto it = bidi.begin(); - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(0, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(0, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(1, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(2, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(3, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_TRUE(it == bidi.end()); -} - -TEST(fxcrt, BidiStringRightNeutralLeftRight) { - const FX_WCHAR str[] = {kRightChar, kNeutralChar, kLeftChar, kRightChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::RIGHT, bidi.OverallDirection()); - - auto it = bidi.begin(); - EXPECT_EQ(3, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(2, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(1, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_EQ(0, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(0, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - EXPECT_TRUE(it == bidi.end()); -} - -TEST(fxcrt, BidiStringReverse) { - const FX_WCHAR str[] = {kLeftChar, kNeutralChar, kRightChar, kLeftChar, 0}; - CFX_BidiString bidi(str); - EXPECT_EQ(CFX_BidiChar::LEFT, bidi.OverallDirection()); - bidi.SetOverallDirectionRight(); - - auto it = bidi.begin(); - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(3, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); - - ++it; - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(2, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::RIGHT, it->direction); - ASSERT_FALSE(it == bidi.end()); - - ++it; - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(1, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - - ++it; - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(1, it->count); - EXPECT_EQ(CFX_BidiChar::LEFT, it->direction); - - ++it; - ASSERT_FALSE(it == bidi.end()); - EXPECT_EQ(0, it->start); - EXPECT_EQ(0, it->count); - EXPECT_EQ(CFX_BidiChar::NEUTRAL, it->direction); - - ++it; - EXPECT_TRUE(it == bidi.end()); -} diff --git a/core/src/fxcrt/fx_extension.cpp b/core/src/fxcrt/fx_extension.cpp deleted file mode 100644 index 09414cb0c0..0000000000 --- a/core/src/fxcrt/fx_extension.cpp +++ /dev/null @@ -1,388 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_ext.h" -#include "core/src/fxcrt/extension.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -#include -#else -#include -#endif - -CFX_CRTFileStream::CFX_CRTFileStream(IFXCRT_FileAccess* pFA) - : m_pFile(pFA), m_dwCount(1) {} - -CFX_CRTFileStream::~CFX_CRTFileStream() { - if (m_pFile) { - m_pFile->Release(); - } -} - -IFX_FileStream* CFX_CRTFileStream::Retain() { - m_dwCount++; - return this; -} - -void CFX_CRTFileStream::Release() { - FX_DWORD nCount = --m_dwCount; - if (!nCount) { - delete this; - } -} - -FX_FILESIZE CFX_CRTFileStream::GetSize() { - return m_pFile->GetSize(); -} - -FX_BOOL CFX_CRTFileStream::IsEOF() { - return GetPosition() >= GetSize(); -} - -FX_FILESIZE CFX_CRTFileStream::GetPosition() { - return m_pFile->GetPosition(); -} - -FX_BOOL CFX_CRTFileStream::ReadBlock(void* buffer, - FX_FILESIZE offset, - size_t size) { - return (FX_BOOL)m_pFile->ReadPos(buffer, size, offset); -} - -size_t CFX_CRTFileStream::ReadBlock(void* buffer, size_t size) { - return m_pFile->Read(buffer, size); -} - -FX_BOOL CFX_CRTFileStream::WriteBlock(const void* buffer, - FX_FILESIZE offset, - size_t size) { - return (FX_BOOL)m_pFile->WritePos(buffer, size, offset); -} - -FX_BOOL CFX_CRTFileStream::Flush() { - return m_pFile->Flush(); -} - -#ifdef PDF_ENABLE_XFA -IFX_FileAccess* FX_CreateDefaultFileAccess(const CFX_WideStringC& wsPath) { - if (wsPath.GetLength() == 0) - return NULL; - - CFX_CRTFileAccess* pFA = NULL; - pFA = new CFX_CRTFileAccess; - if (NULL == pFA) - return NULL; - - pFA->Init(wsPath); - return pFA; -} -#endif // PDF_ENABLE_XFA - -IFX_FileStream* FX_CreateFileStream(const FX_CHAR* filename, FX_DWORD dwModes) { - IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create(); - if (!pFA) { - return NULL; - } - if (!pFA->Open(filename, dwModes)) { - pFA->Release(); - return NULL; - } - return new CFX_CRTFileStream(pFA); -} -IFX_FileStream* FX_CreateFileStream(const FX_WCHAR* filename, - FX_DWORD dwModes) { - IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create(); - if (!pFA) { - return NULL; - } - if (!pFA->Open(filename, dwModes)) { - pFA->Release(); - return NULL; - } - return new CFX_CRTFileStream(pFA); -} -IFX_FileRead* FX_CreateFileRead(const FX_CHAR* filename) { - return FX_CreateFileStream(filename, FX_FILEMODE_ReadOnly); -} -IFX_FileRead* FX_CreateFileRead(const FX_WCHAR* filename) { - return FX_CreateFileStream(filename, FX_FILEMODE_ReadOnly); -} -IFX_MemoryStream* FX_CreateMemoryStream(uint8_t* pBuffer, - size_t dwSize, - FX_BOOL bTakeOver) { - return new CFX_MemoryStream(pBuffer, dwSize, bTakeOver); -} -IFX_MemoryStream* FX_CreateMemoryStream(FX_BOOL bConsecutive) { - return new CFX_MemoryStream(bConsecutive); -} - -FX_FLOAT FXSYS_tan(FX_FLOAT a) { - return (FX_FLOAT)tan(a); -} -FX_FLOAT FXSYS_logb(FX_FLOAT b, FX_FLOAT x) { - return FXSYS_log(x) / FXSYS_log(b); -} -FX_FLOAT FXSYS_strtof(const FX_CHAR* pcsStr, - int32_t iLength, - int32_t* pUsedLen) { - FXSYS_assert(pcsStr); - if (iLength < 0) { - iLength = (int32_t)FXSYS_strlen(pcsStr); - } - CFX_WideString ws = - CFX_WideString::FromLocal(CFX_ByteString(pcsStr, iLength)); - return FXSYS_wcstof(ws.c_str(), iLength, pUsedLen); -} -FX_FLOAT FXSYS_wcstof(const FX_WCHAR* pwsStr, - int32_t iLength, - int32_t* pUsedLen) { - FXSYS_assert(pwsStr); - if (iLength < 0) { - iLength = (int32_t)FXSYS_wcslen(pwsStr); - } - if (iLength == 0) { - return 0.0f; - } - int32_t iUsedLen = 0; - FX_BOOL bNegtive = FALSE; - switch (pwsStr[iUsedLen]) { - case '-': - bNegtive = TRUE; - case '+': - iUsedLen++; - break; - } - FX_FLOAT fValue = 0.0f; - while (iUsedLen < iLength) { - FX_WCHAR wch = pwsStr[iUsedLen]; - if (wch >= L'0' && wch <= L'9') { - fValue = fValue * 10.0f + (wch - L'0'); - } else { - break; - } - iUsedLen++; - } - if (iUsedLen < iLength && pwsStr[iUsedLen] == L'.') { - FX_FLOAT fPrecise = 0.1f; - while (++iUsedLen < iLength) { - FX_WCHAR wch = pwsStr[iUsedLen]; - if (wch >= L'0' && wch <= L'9') { - fValue += (wch - L'0') * fPrecise; - fPrecise *= 0.1f; - } else { - break; - } - } - } - if (pUsedLen) { - *pUsedLen = iUsedLen; - } - return bNegtive ? -fValue : fValue; -} -FX_WCHAR* FXSYS_wcsncpy(FX_WCHAR* dstStr, - const FX_WCHAR* srcStr, - size_t count) { - FXSYS_assert(dstStr && srcStr && count > 0); - for (size_t i = 0; i < count; ++i) - if ((dstStr[i] = srcStr[i]) == L'\0') { - break; - } - return dstStr; -} -int32_t FXSYS_wcsnicmp(const FX_WCHAR* s1, const FX_WCHAR* s2, size_t count) { - FXSYS_assert(s1 && s2 && count > 0); - FX_WCHAR wch1 = 0, wch2 = 0; - while (count-- > 0) { - wch1 = (FX_WCHAR)FXSYS_tolower(*s1++); - wch2 = (FX_WCHAR)FXSYS_tolower(*s2++); - if (wch1 != wch2) { - break; - } - } - return wch1 - wch2; -} -int32_t FXSYS_strnicmp(const FX_CHAR* s1, const FX_CHAR* s2, size_t count) { - FXSYS_assert(s1 && s2 && count > 0); - FX_CHAR ch1 = 0, ch2 = 0; - while (count-- > 0) { - ch1 = (FX_CHAR)FXSYS_tolower(*s1++); - ch2 = (FX_CHAR)FXSYS_tolower(*s2++); - if (ch1 != ch2) { - break; - } - } - return ch1 - ch2; -} -FX_DWORD FX_HashCode_String_GetA(const FX_CHAR* pStr, - int32_t iLength, - FX_BOOL bIgnoreCase) { - FXSYS_assert(pStr); - if (iLength < 0) { - iLength = (int32_t)FXSYS_strlen(pStr); - } - const FX_CHAR* pStrEnd = pStr + iLength; - FX_DWORD dwHashCode = 0; - if (bIgnoreCase) { - while (pStr < pStrEnd) { - dwHashCode = 31 * dwHashCode + FXSYS_tolower(*pStr++); - } - } else { - while (pStr < pStrEnd) { - dwHashCode = 31 * dwHashCode + *pStr++; - } - } - return dwHashCode; -} -FX_DWORD FX_HashCode_String_GetW(const FX_WCHAR* pStr, - int32_t iLength, - FX_BOOL bIgnoreCase) { - FXSYS_assert(pStr); - if (iLength < 0) { - iLength = (int32_t)FXSYS_wcslen(pStr); - } - const FX_WCHAR* pStrEnd = pStr + iLength; - FX_DWORD dwHashCode = 0; - if (bIgnoreCase) { - while (pStr < pStrEnd) { - dwHashCode = 1313 * dwHashCode + FXSYS_tolower(*pStr++); - } - } else { - while (pStr < pStrEnd) { - dwHashCode = 1313 * dwHashCode + *pStr++; - } - } - return dwHashCode; -} - -void* FX_Random_MT_Start(FX_DWORD dwSeed) { - FX_MTRANDOMCONTEXT* pContext = FX_Alloc(FX_MTRANDOMCONTEXT, 1); - pContext->mt[0] = dwSeed; - FX_DWORD& i = pContext->mti; - FX_DWORD* pBuf = pContext->mt; - for (i = 1; i < MT_N; i++) { - pBuf[i] = (1812433253UL * (pBuf[i - 1] ^ (pBuf[i - 1] >> 30)) + i); - } - pContext->bHaveSeed = TRUE; - return pContext; -} -FX_DWORD FX_Random_MT_Generate(void* pContext) { - FXSYS_assert(pContext); - FX_MTRANDOMCONTEXT* pMTC = static_cast(pContext); - FX_DWORD v; - static FX_DWORD mag[2] = {0, MT_Matrix_A}; - FX_DWORD& mti = pMTC->mti; - FX_DWORD* pBuf = pMTC->mt; - if ((int)mti < 0 || mti >= MT_N) { - if (mti > MT_N && !pMTC->bHaveSeed) { - return 0; - } - FX_DWORD kk; - for (kk = 0; kk < MT_N - MT_M; kk++) { - v = (pBuf[kk] & MT_Upper_Mask) | (pBuf[kk + 1] & MT_Lower_Mask); - pBuf[kk] = pBuf[kk + MT_M] ^ (v >> 1) ^ mag[v & 1]; - } - for (; kk < MT_N - 1; kk++) { - v = (pBuf[kk] & MT_Upper_Mask) | (pBuf[kk + 1] & MT_Lower_Mask); - pBuf[kk] = pBuf[kk + (MT_M - MT_N)] ^ (v >> 1) ^ mag[v & 1]; - } - v = (pBuf[MT_N - 1] & MT_Upper_Mask) | (pBuf[0] & MT_Lower_Mask); - pBuf[MT_N - 1] = pBuf[MT_M - 1] ^ (v >> 1) ^ mag[v & 1]; - mti = 0; - } - v = pBuf[mti++]; - v ^= (v >> 11); - v ^= (v << 7) & 0x9d2c5680UL; - v ^= (v << 15) & 0xefc60000UL; - v ^= (v >> 18); - return v; -} -void FX_Random_MT_Close(void* pContext) { - FXSYS_assert(pContext); - FX_Free(pContext); -} -void FX_Random_GenerateMT(FX_DWORD* pBuffer, int32_t iCount) { - FX_DWORD dwSeed; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - if (!FX_GenerateCryptoRandom(&dwSeed, 1)) { - FX_Random_GenerateBase(&dwSeed, 1); - } -#else - FX_Random_GenerateBase(&dwSeed, 1); -#endif - void* pContext = FX_Random_MT_Start(dwSeed); - while (iCount-- > 0) { - *pBuffer++ = FX_Random_MT_Generate(pContext); - } - FX_Random_MT_Close(pContext); -} -void FX_Random_GenerateBase(FX_DWORD* pBuffer, int32_t iCount) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - SYSTEMTIME st1, st2; - ::GetSystemTime(&st1); - do { - ::GetSystemTime(&st2); - } while (FXSYS_memcmp(&st1, &st2, sizeof(SYSTEMTIME)) == 0); - FX_DWORD dwHash1 = - FX_HashCode_String_GetA((const FX_CHAR*)&st1, sizeof(st1), TRUE); - FX_DWORD dwHash2 = - FX_HashCode_String_GetA((const FX_CHAR*)&st2, sizeof(st2), TRUE); - ::srand((dwHash1 << 16) | (FX_DWORD)dwHash2); -#else - time_t tmLast = time(NULL); - time_t tmCur; - while ((tmCur = time(NULL)) == tmLast) { - continue; - } - - ::srand((tmCur << 16) | (tmLast & 0xFFFF)); -#endif - while (iCount-- > 0) { - *pBuffer++ = (FX_DWORD)((::rand() << 16) | (::rand() & 0xFFFF)); - } -} -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -FX_BOOL FX_GenerateCryptoRandom(FX_DWORD* pBuffer, int32_t iCount) { - HCRYPTPROV hCP = NULL; - if (!::CryptAcquireContext(&hCP, NULL, NULL, PROV_RSA_FULL, 0) || !hCP) { - return FALSE; - } - ::CryptGenRandom(hCP, iCount * sizeof(FX_DWORD), (uint8_t*)pBuffer); - ::CryptReleaseContext(hCP, 0); - return TRUE; -} -#endif -void FX_Random_GenerateCrypto(FX_DWORD* pBuffer, int32_t iCount) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - FX_GenerateCryptoRandom(pBuffer, iCount); -#else - FX_Random_GenerateBase(pBuffer, iCount); -#endif -} - -#ifdef PDF_ENABLE_XFA -void FX_GUID_CreateV4(FX_LPGUID pGUID) { - FX_Random_GenerateMT((FX_DWORD*)pGUID, 4); - uint8_t& b = ((uint8_t*)pGUID)[6]; - b = (b & 0x0F) | 0x40; -} -const FX_CHAR* gs_FX_pHexChars = "0123456789ABCDEF"; -void FX_GUID_ToString(FX_LPCGUID pGUID, - CFX_ByteString& bsStr, - FX_BOOL bSeparator) { - FX_CHAR* pBuf = bsStr.GetBuffer(40); - uint8_t b; - for (int32_t i = 0; i < 16; i++) { - b = ((const uint8_t*)pGUID)[i]; - *pBuf++ = gs_FX_pHexChars[b >> 4]; - *pBuf++ = gs_FX_pHexChars[b & 0x0F]; - if (bSeparator && (i == 3 || i == 5 || i == 7 || i == 9)) { - *pBuf++ = L'-'; - } - } - bsStr.ReleaseBuffer(bSeparator ? 36 : 32); -} -#endif // PDF_ENABLE_XFA diff --git a/core/src/fxcrt/fx_extension_unittest.cpp b/core/src/fxcrt/fx_extension_unittest.cpp deleted file mode 100644 index e2ae870f93..0000000000 --- a/core/src/fxcrt/fx_extension_unittest.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "testing/gtest/include/gtest/gtest.h" - -#include "core/include/fxcrt/fx_ext.h" - -TEST(fxcrt, FXSYS_toHexDigit) { - EXPECT_EQ(10, FXSYS_toHexDigit('a')); - EXPECT_EQ(10, FXSYS_toHexDigit('A')); - EXPECT_EQ(7, FXSYS_toHexDigit('7')); - EXPECT_EQ(0, FXSYS_toHexDigit('i')); -} - -TEST(fxcrt, FXSYS_toDecimalDigit) { - EXPECT_EQ(7, FXSYS_toDecimalDigit('7')); - EXPECT_EQ(0, FXSYS_toDecimalDigit('a')); - EXPECT_EQ(7, FXSYS_toDecimalDigit(L'7')); - EXPECT_EQ(0, FXSYS_toDecimalDigit(L'a')); -} - -TEST(fxcrt, FXSYS_isDecimalDigit) { - EXPECT_TRUE(FXSYS_isDecimalDigit('7')); - EXPECT_TRUE(FXSYS_isDecimalDigit(L'7')); - EXPECT_FALSE(FXSYS_isDecimalDigit('a')); - EXPECT_FALSE(FXSYS_isDecimalDigit(L'a')); -} diff --git a/core/src/fxcrt/fx_system_unittest.cpp b/core/src/fxcrt/fx_system_unittest.cpp deleted file mode 100644 index f877eb2aa5..0000000000 --- a/core/src/fxcrt/fx_system_unittest.cpp +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include -#include - -#include "core/include/fxcrt/fx_system.h" -#include "testing/fx_string_testhelpers.h" -#include "testing/gtest/include/gtest/gtest.h" - -// Unit test covering cases where PDFium replaces well-known library -// functionality on any given platformn. - -#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ - -namespace { - -const FX_CHAR kSentinel = 0x7f; - -void Check32BitBase16Itoa(int32_t input, const char* expected_output) { - const size_t kBufLen = 11; // "-" + 8 digits + NUL + sentinel. - FX_CHAR buf[kBufLen]; - buf[kBufLen - 1] = kSentinel; - FXSYS_itoa(input, buf, 16); - EXPECT_EQ(std::string(expected_output), buf); - EXPECT_EQ(kSentinel, buf[kBufLen - 1]); -} - -void Check32BitBase10Itoa(int32_t input, const char* expected_output) { - const size_t kBufLen = 13; // "-" + 10 digits + NUL + sentinel. - FX_CHAR buf[kBufLen]; - buf[kBufLen - 1] = kSentinel; - FXSYS_itoa(input, buf, 10); - EXPECT_EQ(std::string(expected_output), buf); - EXPECT_EQ(kSentinel, buf[kBufLen - 1]); -} - -void Check32BitBase2Itoa(int32_t input, const char* expected_output) { - const size_t kBufLen = 35; // "-" + 32 digits + NUL + sentinel. - FX_CHAR buf[kBufLen]; - buf[kBufLen - 1] = kSentinel; - FXSYS_itoa(input, buf, 2); - EXPECT_EQ(std::string(expected_output), buf); - EXPECT_EQ(kSentinel, buf[kBufLen - 1]); -} - -void Check64BitBase16Itoa(int64_t input, const char* expected_output) { - const size_t kBufLen = 19; // "-" + 16 digits + NUL + sentinel. - FX_CHAR buf[kBufLen]; - buf[kBufLen - 1] = kSentinel; - FXSYS_i64toa(input, buf, 16); - EXPECT_EQ(std::string(expected_output), buf); - EXPECT_EQ(kSentinel, buf[kBufLen - 1]); -} - -void Check64BitBase10Itoa(int64_t input, const char* expected_output) { - const size_t kBufLen = 22; // "-" + 19 digits + NUL + sentinel. - FX_CHAR buf[kBufLen]; - buf[kBufLen - 1] = kSentinel; - FXSYS_i64toa(input, buf, 10); - EXPECT_EQ(std::string(expected_output), buf); - EXPECT_EQ(kSentinel, buf[kBufLen - 1]); -} - -void Check64BitBase2Itoa(int64_t input, const char* expected_output) { - const size_t kBufLen = 67; // "-" + 64 digits + NUL + sentinel. - FX_CHAR buf[kBufLen]; - buf[kBufLen - 1] = kSentinel; - FXSYS_i64toa(input, buf, 2); - EXPECT_EQ(std::string(expected_output), buf); - EXPECT_EQ(kSentinel, buf[kBufLen - 1]); -} - -} // namespace - -TEST(fxcrt, FXSYS_itoa_InvalidRadix) { - FX_CHAR buf[32]; - - FXSYS_itoa(42, buf, 17); // Ours stops at 16. - EXPECT_EQ(std::string(""), buf); - - FXSYS_itoa(42, buf, 1); - EXPECT_EQ(std::string(""), buf); - - FXSYS_itoa(42, buf, 0); - EXPECT_EQ(std::string(""), buf); - - FXSYS_itoa(42, buf, -1); - EXPECT_EQ(std::string(""), buf); -} - -TEST(fxcrt, FXSYS_itoa) { - Check32BitBase16Itoa(std::numeric_limits::min(), "-80000000"); - Check32BitBase10Itoa(std::numeric_limits::min(), "-2147483648"); - Check32BitBase2Itoa(std::numeric_limits::min(), - "-10000000000000000000000000000000"); - - Check32BitBase16Itoa(-1, "-1"); - Check32BitBase10Itoa(-1, "-1"); - Check32BitBase2Itoa(-1, "-1"); - - Check32BitBase16Itoa(0, "0"); - Check32BitBase10Itoa(0, "0"); - Check32BitBase2Itoa(0, "0"); - - Check32BitBase16Itoa(42, "2a"); - Check32BitBase10Itoa(42, "42"); - Check32BitBase2Itoa(42, "101010"); - - Check32BitBase16Itoa(std::numeric_limits::max(), "7fffffff"); - Check32BitBase10Itoa(std::numeric_limits::max(), "2147483647"); - Check32BitBase2Itoa(std::numeric_limits::max(), - "1111111111111111111111111111111"); -} - -TEST(fxcrt, FXSYS_i64toa_InvalidRadix) { - FX_CHAR buf[32]; - - FXSYS_i64toa(42, buf, 17); // Ours stops at 16. - EXPECT_EQ(std::string(""), buf); - - FXSYS_i64toa(42, buf, 1); - EXPECT_EQ(std::string(""), buf); - - FXSYS_i64toa(42, buf, 0); - EXPECT_EQ(std::string(""), buf); - - FXSYS_i64toa(42, buf, -1); - EXPECT_EQ(std::string(""), buf); -} - -TEST(fxcrt, FXSYS_i64toa) { - Check64BitBase16Itoa(std::numeric_limits::min(), - "-8000000000000000"); - Check64BitBase10Itoa(std::numeric_limits::min(), - "-9223372036854775808"); - Check64BitBase2Itoa( - std::numeric_limits::min(), - "-1000000000000000000000000000000000000000000000000000000000000000"); - - Check64BitBase16Itoa(-1, "-1"); - Check64BitBase10Itoa(-1, "-1"); - Check64BitBase2Itoa(-1, "-1"); - - Check64BitBase16Itoa(0, "0"); - Check64BitBase10Itoa(0, "0"); - Check64BitBase2Itoa(0, "0"); - - Check64BitBase16Itoa(42, "2a"); - Check64BitBase10Itoa(42, "42"); - Check64BitBase2Itoa(42, "101010"); - - Check64BitBase16Itoa(std::numeric_limits::max(), "7fffffffffffffff"); - Check64BitBase10Itoa(std::numeric_limits::max(), - "9223372036854775807"); - Check64BitBase2Itoa( - std::numeric_limits::max(), - "111111111111111111111111111111111111111111111111111111111111111"); -} - -#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ diff --git a/core/src/fxcrt/fx_ucddata.cpp b/core/src/fxcrt/fx_ucddata.cpp deleted file mode 100644 index c373d6e9d6..0000000000 --- a/core/src/fxcrt/fx_ucddata.cpp +++ /dev/null @@ -1,11013 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_basic.h" -#include "core/include/fxcrt/fx_ucd.h" - -const FX_DWORD kTextLayoutCodeProperties[] = { - 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, - 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe8ae5, 0xfffe9b5c, 0xfffe9ada, - 0xfffe9b1a, 0xfffe9b5b, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, - 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, - 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9b53, 0xfffe9b53, - 0xfffe9b53, 0xfffe9ad3, 0xfffe9323, 0xfffeb005, 0xfffeb002, 0xfffeb24b, - 0xfffeb248, 0xfffeb249, 0xfffeb00b, 0xfffeb002, 0x007eb000, 0x00feb001, - 0xfffeb00b, 0xfffeb208, 0xfffeb1c7, 0xfffeb20e, 0xfffeb1c7, 0xfffeb1c6, - 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, - 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffea90a, 0xfffeb1c7, 0xfffeb007, - 0x017eb000, 0xfffeb00b, 0x01feb001, 0xfffeb005, 0xfffeb00b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0x027eb000, 0xfffeb008, 0x02feb001, 0xfffeb00b, 0xff80b00b, - 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0x037eb000, 0xfffeb00f, 0x03feb001, - 0xfffeb00b, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, - 0xfffeb293, 0xfffeb35d, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, - 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, - 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, - 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, - 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffeb293, 0xfffe91c3, 0xfffeb000, - 0xfffeb249, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb00b, 0xfffeb022, - 0xfffeb022, 0xfffeb00b, 0xfffeb062, 0x047eb000, 0xfffeb00b, 0xfffeb28f, - 0xfffeb00b, 0xfffeb00b, 0xfffeb249, 0xfffeb248, 0xfffeb122, 0xfffeb122, - 0xfffeb010, 0xfffeb04b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb122, - 0xfffeb062, 0x04feb001, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb000, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb022, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb022, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb010, 0xfffeb022, - 0xfffeb022, 0xfffeb022, 0xfffeb010, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, - 0xfffeb062, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, - 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb010, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea183, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea183, 0xfffea183, 0xfffea183, 0xfffea183, - 0xfffea183, 0xfffea183, 0xfffea183, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb007, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb193, 0xfffeb193, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb047, 0xfffeb00f, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe80a4, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffeb08f, 0xfffea193, 0xfffeb08b, 0xfffea193, 0xfffea193, 0xfffeb08b, - 0xfffea193, 0xfffea193, 0xfffeb085, 0xfffea193, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffed0cb, 0xfffed0cb, 0xfffed0cb, 0xfffed0cb, 0xfffed164, 0xfffed164, - 0xfffed00b, 0xfffed00b, 0xfffed14b, 0xfffed249, 0xfffed249, 0xfffed149, - 0xfffed1c7, 0xfffed147, 0xfffed00b, 0xfffed00b, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffed145, 0xfffed164, 0xfffed164, - 0xfffed145, 0xfffed145, 0xfffed164, 0xfffed14b, 0xfffeb94b, 0xfffeb94b, - 0xfffec14b, 0xfffeb94b, 0xfffec94b, 0xfffeb94b, 0xfffec94b, 0xfffec14b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec14b, - 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffed14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec14b, 0xfffec94b, 0xfffec94b, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffed164, - 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, - 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed0ca, 0xfffed249, 0xfffed0ca, - 0xfffed0ca, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffea193, 0xfffec14b, - 0xfffec14b, 0xfffec14b, 0xfffea14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec14b, 0xfffec14b, - 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, - 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, - 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffed14b, 0xfffed14b, - 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, 0xfffec94b, - 0xfffec14b, 0xfffec94b, 0xfffec94b, 0xfffec14b, 0xfffec14b, 0xfffec14b, - 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, - 0xfffec94b, 0xfffec14b, 0xfffec94b, 0xfffec14b, 0xfffec94b, 0xfffec94b, - 0xfffec14b, 0xfffec14b, 0xfffec945, 0xfffec14b, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffed0cb, - 0xfffed193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffed14b, 0xfffed14b, 0xfffea193, 0xfffea193, 0xfffed00b, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffec14b, 0xfffec14b, - 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, - 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed10a, 0xfffed14b, 0xfffed14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffe8164, 0xfffeb28b, 0xfffeb14b, 0xfffea193, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffe8164, 0xfffe8164, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffec14b, 0xfffec14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffec14b, 0xfffed14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffed14b, 0xfffec14b, - 0xfffec14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffec14b, 0xfffec14b, - 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, 0xfffed14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, 0xfffeb14b, - 0xfffeb14b, 0xfffeb14b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb14b, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, - 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, - 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffe8164, 0xfffeb08a, 0xfffeb08a, - 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, 0xfffeb08a, - 0xfffeb08a, 0xfffeb08a, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb08b, 0xfffeb08b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb007, 0xfffeb005, 0xfffeb08b, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb08b, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb08b, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffeb08b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffe80a4, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, 0xfffe80a4, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, - 0xfffeb053, 0xfffe8024, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffeb04f, 0xfffeb04f, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffea193, 0xfffeb053, 0xfffeb053, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb053, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, - 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04b, 0xfffeb04b, 0xfffeb249, 0xfffeb249, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb049, 0xfffeb04b, 0xfffeb248, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, - 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffe8024, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffea193, - 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffea193, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffeb248, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb053, 0xfffeb053, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffea193, - 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb053, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, - 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb248, - 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb053, 0xfffea053, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, - 0xfffea053, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb053, 0xfffeb053, - 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, - 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffe8024, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb049, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffe8024, 0xfffea193, 0xfffe8024, 0xfffeb053, 0xfffeb053, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb248, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04f, 0xfffeb04f, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, - 0xfffeb05e, 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffeb05e, - 0xfffeb05e, 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffeb05e, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffeb05e, - 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, - 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, - 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffe8024, 0xfffea19e, 0xfffea19e, 0xfffeb05e, - 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffe8024, 0xfffeb05e, 0xfffe8024, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffe8024, 0xfffe8024, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, - 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb050, 0xfffeb050, 0xfffeb050, 0xfffeb050, 0xfffeb04b, - 0xfffeb050, 0xfffeb050, 0xfffeb043, 0xfffeb050, 0xfffeb050, 0xfffeb04f, - 0xfffeb043, 0xfffeb045, 0xfffeb045, 0xfffeb045, 0xfffeb045, 0xfffeb045, - 0xfffeb043, 0xfffeb04b, 0xfffeb045, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, 0xfffea193, - 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffea193, 0x057eb000, 0x05feb001, - 0x067eb000, 0x06feb001, 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb04f, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb04f, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffeb04f, 0xfffeb04f, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb050, 0xfffeb050, - 0xfffeb04f, 0xfffeb050, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, - 0xfffea19e, 0xfffeb05e, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, - 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, 0xfffe3057, - 0xfffe3057, 0xfffe3057, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04b, 0xfffeb04f, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb00f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb30f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0x077eb000, 0x07feb001, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, - 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb04f, 0xfffeb04f, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb04f, 0xfffeb04f, - 0xfffeb044, 0xfffeb05e, 0xfffeb04f, 0xfffeb04b, 0xfffeb04f, 0xfffeb248, - 0xfffeb05e, 0xfffea19e, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb00b, 0xfffeb00b, 0xfffeb005, 0xfffeb005, 0xfffeb00f, 0xfffeb00f, - 0xfffeb010, 0xfffeb00b, 0xfffeb005, 0xfffeb005, 0xfffeb00b, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb303, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, - 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb005, 0xfffeb005, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb01e, 0xfffeb01e, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffe8024, 0xfffea19e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, - 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffea19e, - 0xfffea19e, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb053, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, - 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, - 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, - 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, 0xfffeb053, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, - 0xfffeb04f, 0xfffeb04f, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, 0xfffeb04f, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb04b, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb010, - 0xfffeb00b, 0xfffe8024, 0xfffeb30f, 0xfffeb30f, 0xfffeb30f, 0xfffeb30f, - 0xfffeb30f, 0xfffeb30f, 0xfffeb30f, 0xfffeb303, 0xfffeb30f, 0xfffeb30f, - 0xfffeb30f, 0xfffeb292, 0xfffe9a93, 0xfffe9a93, 0xfffe9853, 0xfffe9893, - 0xfffeb00f, 0xfffeb003, 0xfffeb00f, 0xff82b00f, 0xff84b011, 0xfffeb022, - 0xfffeb022, 0xfffeb00b, 0x0806b000, 0x0888b002, 0xfffeb000, 0xfffeb002, - 0x090ab000, 0x098cb001, 0xfffeb000, 0xfffeb002, 0xfffeb022, 0xfffeb022, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00d, 0xfffeb00d, 0xfffeb00d, 0xfffeb00f, - 0xfffe9b1a, 0xfffe9b5a, 0xfffe9c53, 0xfffe9bd3, 0xfffe9c93, 0xfffe9c13, - 0xfffe9b93, 0xfffeb1c3, 0xfffeb249, 0xfffeb249, 0xfffeb249, 0xfffeb249, - 0xfffeb249, 0xfffeb009, 0xfffeb009, 0xfffeb009, 0xfffeb00b, 0x0a7eb000, - 0x0afeb001, 0xfffeb022, 0xfffeb004, 0xfffeb004, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb1c7, 0x0b7eb000, - 0x0bfeb001, 0xfffeb004, 0xfffeb004, 0xfffeb004, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00f, 0xfffeb00b, - 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00b, 0xfffeb00f, - 0xfffeb00f, 0xfffeb30f, 0xfffeb294, 0xfffeb28b, 0xfffeb28b, 0xfffeb28b, - 0xfffeb28b, 0xfffe82a4, 0xfffe82a4, 0xfffe82a4, 0xfffe82a4, 0xfffe82a4, - 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, 0xfffe9a93, - 0xfffeb10b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffeb122, 0xfffeb10b, - 0xfffeb10b, 0xfffeb10b, 0xfffeb10b, 0xfffeb10b, 0xfffeb20b, 0xfffeb20b, - 0xfffeb00b, 0x0c7eb000, 0x0cfeb001, 0xfffeb062, 0xfffeb10b, 0xfffeb122, - 0xfffeb122, 0xfffeb122, 0xfffeb122, 0xfffeb10b, 0xfffeb10b, 0xfffeb10b, - 0xfffeb10b, 0xfffeb10b, 0xfffeb20b, 0xfffeb20b, 0xfffeb00b, 0x0d7eb000, - 0x0dfeb001, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, - 0xfffeb248, 0xfffeb249, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, - 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, - 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb248, 0xfffeb249, 0xfffeb248, - 0xfffeb248, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffea193, - 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb009, 0xfffeb00b, 0xfffeb022, - 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb009, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb062, 0xfffeb00b, 0xfffeb04b, 0xfffeb008, 0xfffeb00b, - 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb00b, - 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb062, 0xfffeb04b, 0xfffeb04b, 0xfffeb24b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb022, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, - 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, - 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb062, 0xfffeb062, - 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, 0xfffeb062, - 0xfffeb062, 0xfffeb062, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb022, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, - 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb022, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, - 0xfffeb022, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, - 0x0e7eb022, 0x0efeb00b, 0x0f7eb00b, 0x0ffeb022, 0x107eb00b, 0x10feb00b, - 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb022, 0xfffeb208, 0xfffeb248, - 0xfffeb00b, 0x117eb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, - 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb022, - 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, - 0xfffeb022, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, 0xfffeb022, 0xfffeb022, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x11feb022, 0x127eb022, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x12feb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0x137eb022, 0x13feb00b, 0x147eb00b, 0x14feb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb022, - 0xfffeb00b, 0xfffeb00b, 0x157eb022, 0x15feb022, 0x167eb022, 0x16feb022, - 0x177eb00b, 0x17feb00b, 0x187eb022, 0x18feb022, 0xfffeb00b, 0xfffeb00b, - 0x197eb022, 0x19feb022, 0x1a7eb00b, 0x1afeb00b, 0x1b7eb00b, 0x1bfeb00b, - 0x1c7eb00b, 0x1cfeb00b, 0x1d7eb00b, 0x1dfeb00b, 0x1e7eb00b, 0x1efeb00b, - 0x1f7eb00b, 0x1ffeb00b, 0x207eb00b, 0x20feb00b, 0x217eb00b, 0x21feb00b, - 0x227eb00b, 0x22feb00b, 0x237eb022, 0x23feb022, 0x247eb00b, 0x24feb00b, - 0x257eb022, 0x25feb022, 0x267eb00b, 0x26feb00b, 0x277eb00b, 0x27feb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x287eb00b, 0x28feb00b, 0x297eb00b, - 0x29feb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, - 0x2a7eb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x2afeb00b, 0x2b7eb00b, - 0xfffeb00b, 0xfffeb022, 0x2bfeb00b, 0xfffeb00b, 0x2c7eb00b, 0x2cfeb00b, - 0xfffeb00b, 0x2d7eb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0x2dfeb00b, 0x2e7eb00b, 0x2efeb00b, 0x2f7eb00b, 0x2ffeb00b, 0x307eb00b, - 0x30feb00b, 0x317eb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0x31feb00b, 0x327eb00b, 0x32feb00b, 0x337eb00b, 0x33feb00b, - 0xfffeb00b, 0xfffeb00b, 0x347eb00b, 0x34feb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0x357eb00b, 0x35feb00b, 0x367eb00b, 0x36feb00b, - 0x377eb00b, 0x37feb00b, 0x387eb00b, 0x38feb00b, 0x397eb00b, 0x39feb00b, - 0x3a7eb00b, 0x3afeb00b, 0x3b7eb00b, 0x3bfeb00b, 0x3c7eb00b, 0x3cfeb00b, - 0x3d7eb00b, 0x3dfeb00b, 0x3e7eb00b, 0x3efeb00b, 0x3f7eb00b, 0x3ffeb00b, - 0x407eb00b, 0x40feb00b, 0xfffeb00b, 0xfffeb00b, 0x417eb00b, 0x41feb00b, - 0x427eb00b, 0x42feb00b, 0x437eb00b, 0xfffeb00b, 0x43feb00b, 0x447eb00b, - 0xfffeb00b, 0xfffeb00b, 0x44feb00b, 0x457eb00b, 0x45feb00b, 0x467eb00b, - 0x46feb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0x477eb00b, 0x47feb00b, - 0x487eb00b, 0x48feb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb022, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0x497eb000, 0x49feb001, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3122, 0xfffe3122, - 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, - 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, - 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, 0xfffe3122, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe3022, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe300b, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe3022, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, 0xfffe3022, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe304b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe0024, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe0024, 0xfffe3022, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe0024, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe300b, - 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe300b, 0xfffe3022, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe3002, 0xfffe3002, 0xfffe3002, 0xfffe3002, 0xfffe0024, - 0xfffe0024, 0xfffe300b, 0xfffe3005, 0xfffe3005, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0x4a7e3000, 0x4afe3001, 0x4b7e3000, 0x4bfe3001, - 0x4c7e3000, 0x4cfe3001, 0x4d7e3000, 0x4dfe3001, 0x4e7e3000, 0x4efe3001, - 0x4f7e3000, 0x4ffe3001, 0x507e3000, 0x50fe3001, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe300b, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x517e300b, 0x51fe300b, 0x527e3000, - 0x52fe3001, 0xfffe300b, 0x537e300b, 0x53fe300b, 0xfffe300b, 0xfffe0024, - 0xfffe300b, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x547e300b, 0x54fe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x557e300b, - 0x55fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x567e300b, 0x56fe300b, - 0x577e300b, 0x57fe300b, 0x587e3000, 0x58fe3001, 0x597e3000, 0x59fe3001, - 0x5a7e3000, 0x5afe3001, 0x5b7e3000, 0x5bfe3001, 0x5c7e3000, 0x5cfe3001, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x5d7e3000, 0x5dfe3001, 0x5e7e3000, 0x5efe3001, 0x5f7e3000, - 0x5ffe3001, 0x607e3000, 0x60fe3001, 0x617e3000, 0x61fe3001, 0x627e3000, - 0x62fe3001, 0x637e3000, 0x63fe3001, 0x647e3000, 0x64fe3001, 0x657e3000, - 0x65fe3001, 0x667e3000, 0x66fe3001, 0x677e3000, 0x67fe3001, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0x687e300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0x68fe300b, 0x697e300b, 0xfffe300b, 0xfffe300b, - 0x69fe300b, 0x6a7e300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x6afe300b, - 0x6b7e300b, 0x6bfe300b, 0x6c7e300b, 0xfffe300b, 0x6cfe300b, 0x6d7e300b, - 0xfffe300b, 0xfffe300b, 0x6dfe3000, 0x6e7e3001, 0x6efe3000, 0x6f7e3001, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x6ffe300b, 0xfffe300b, 0xfffe300b, 0x707e300b, 0x70fe300b, - 0xfffe300b, 0xfffe300b, 0x717e3000, 0x71fe3001, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x727e300b, 0x72fe300b, 0x737e300b, 0x73fe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x747e300b, 0x74fe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0x757e300b, 0x75fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x767e300b, 0x76fe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x777e300b, 0x77fe300b, 0xfffe300b, 0xfffe300b, 0x787e300b, - 0x78fe300b, 0x797e300b, 0x79fe300b, 0x7a7e300b, 0x7afe300b, 0x7b7e300b, - 0x7bfe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x7c7e300b, 0x7cfe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x7d7e300b, 0x7dfe300b, 0x7e7e300b, 0x7efe300b, 0x7f7e300b, - 0x7ffe300b, 0x807e300b, 0x80fe300b, 0x817e300b, 0x81fe300b, 0x827e300b, - 0x82fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x837e300b, - 0x83fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x847e300b, 0x84fe300b, - 0x857e300b, 0x85fe300b, 0x867e300b, 0x86fe300b, 0x877e300b, 0x87fe300b, - 0xfffe300b, 0x887e300b, 0x88fe300b, 0xfffe300b, 0xfffe300b, 0x897e300b, - 0x89fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x8a7e300b, 0x8afe300b, 0x8b7e300b, 0x8bfe300b, 0x8c7e300b, - 0x8cfe300b, 0x8d7e300b, 0x8dfe300b, 0x8e7e300b, 0x8efe300b, 0x8f7e300b, - 0x8ffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x907e300b, 0x90fe300b, 0x917e300b, 0x91fe300b, 0x927e300b, - 0x92fe300b, 0x937e300b, 0x93fe300b, 0x947e300b, 0x94fe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0x957e300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0x95fe300b, - 0x967e300b, 0x96fe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0x977e300b, 0x97fe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0x987e300b, 0x98fe300b, 0x997e300b, 0x99fe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe3022, - 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe3022, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb005, - 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00b, 0xfffeb005, 0xfffeb00f, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb001, 0xfffeb001, - 0x9a7eb000, 0x9afeb001, 0x9b7eb000, 0x9bfeb001, 0xfffeb002, 0xfffeb002, - 0xfffeb002, 0x9c7eb000, 0x9cfeb001, 0xfffeb002, 0x9d7eb000, 0x9dfeb001, - 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, 0xfffeb00f, - 0xfffeb00f, 0xfffeb00f, 0xfffeb00b, 0xfffeb00f, 0xfffeb000, 0xfffeb00f, - 0xfffeb00b, 0xfffeb00b, 0x9e7eb000, 0x9efeb001, 0xfffeb00b, 0xfffeb00b, - 0x9f7eb000, 0x9ffeb001, 0xa07eb000, 0xa0feb001, 0xa17eb000, 0xa1feb001, - 0xa27eb000, 0xa2feb001, 0xa37eb000, 0xa3feb001, 0xfffeb00f, 0xfffeb00f, - 0xfffeb00f, 0xfffeb00f, 0xfffeb005, 0xfffeb00b, 0xfffeb00f, 0xfffeb00f, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe330c, 0xffff3001, 0xffff3001, 0xfffe300c, 0xfffe300c, 0xfffe3044, - 0xfffe304c, 0xfffe304c, 0xa40eb000, 0xa490b001, 0xa512b000, 0xa594b001, - 0xa616b000, 0xa698b001, 0xa71ab000, 0xa79cb001, 0xa81eb000, 0xa8a0b001, - 0xfffe300c, 0xfffe300c, 0xa922b000, 0xa9a4b001, 0xaa7eb000, 0xaafeb001, - 0xab7eb000, 0xabfeb001, 0xac7eb000, 0xacfeb001, 0xfffe3004, 0xfffe3000, - 0xfffe3001, 0xfffe3001, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe2193, 0xfffe2193, 0xfffe2193, 0xfffe2193, 0xfffe2193, 0xfffe2193, - 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, - 0xfffe3044, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe3044, - 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, - 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xffff3044, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xffff3044, - 0xfffe304c, 0xffff3044, 0xfffe304c, 0xffff3044, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, - 0xfffe3044, 0xfffe0024, 0xfffe0024, 0xfffe2193, 0xfffe2193, 0xfffe3004, - 0xfffe3004, 0xfffe3044, 0xfffe3044, 0xfffe304c, 0xfffe3004, 0xfffe3044, - 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, - 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, - 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3044, - 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe3004, - 0xfffeb044, 0xfffe3044, 0xfffe3044, 0xfffe304c, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffeb04c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0024, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe3044, 0xfffe3044, - 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, - 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, - 0xfffe3044, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, - 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe3062, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0024, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe300c, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe300c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0064, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe0024, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0064, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe3044, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304f, 0xfffe304f, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe300f, - 0xfffe3005, 0xfffe300f, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, - 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304a, 0xfffe304b, 0xfffe304b, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffea193, 0xfffeb193, 0xfffeb193, 0xfffeb193, 0xfffeb00b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffeb00b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, - 0xfffeb04b, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, 0xfffeb04f, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, 0xfffeb00b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb00b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb00b, 0xfffeb00b, - 0xfffeb00b, 0xfffeb00b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb249, 0xfffeb24b, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb010, 0xfffeb010, 0xfffeb005, 0xfffeb005, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb053, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, - 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04f, 0xfffeb04f, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb057, 0xfffeb057, - 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, - 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, - 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, - 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffeb057, - 0xfffeb057, 0xfffeb057, 0xfffeb057, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb053, 0xfffeb053, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffeb053, 0xfffeb053, - 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb053, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04f, - 0xfffeb04f, 0xfffeb04f, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffeb04b, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffea193, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffea193, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffea193, 0xfffeb053, 0xfffe8024, 0xfffe8024, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04f, - 0xfffeb04f, 0xfffeb04f, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, - 0xfffea19e, 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffea19e, - 0xfffea19e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, - 0xfffea19e, 0xfffea19e, 0xfffeb05e, 0xfffea19e, 0xfffeb05e, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb05e, - 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffeb05e, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb053, - 0xfffeb053, 0xfffea193, 0xfffeb053, 0xfffeb053, 0xfffea193, 0xfffeb053, - 0xfffeb053, 0xfffeb04f, 0xfffeb053, 0xfffea193, 0xfffe8024, 0xfffe8024, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, - 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffeb04a, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe0064, 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, - 0xfffe3055, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe3056, - 0xfffe3056, 0xfffe3056, 0xfffe3056, 0xfffe0064, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe3058, - 0xfffe3058, 0xfffe3058, 0xfffe3058, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, 0xfffe3059, - 0xfffe3059, 0xfffe3059, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe0024, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe0024, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, 0xfffe301f, - 0xfffe301f, 0xfffe0024, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, - 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe3061, 0xfffe0064, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe300c, 0xfffe0024, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe0024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffeb04b, 0xfffeb04b, 0xfffeb04b, - 0xfffeb04b, 0xfffeb04b, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffeb08b, 0xfffea193, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb20b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffeb08b, 0xfffe80a4, - 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, 0xfffeb08b, 0xfffeb08b, 0xfffe80a4, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, - 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffeb08b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed800, 0xfffed801, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed964, 0xfffed964, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, 0xfffed964, - 0xfffed964, 0xfffed964, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, - 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, - 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, - 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, - 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, - 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffedaa4, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed949, 0xfffed80b, - 0xfffed964, 0xfffed964, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, - 0xfffe3007, 0xfffe3001, 0xfffe3001, 0xfffe3007, 0xfffe3007, 0xfffe3005, - 0xfffe3005, 0xfffe3000, 0xfffe3001, 0xfffe300d, 0xfffe0024, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffea193, 0xfffea193, - 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffea193, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, 0xfffe8024, - 0xfffe8024, 0xfffe8024, 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe3000, 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, - 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, - 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe3000, 0xfffe3001, 0xfffe300c, - 0xfffe300c, 0xfffe3000, 0xfffe3001, 0xfffe300c, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe300c, 0xfffe300c, 0xffa6300c, 0xfffe31c1, 0xfffe300c, - 0xfffe31c1, 0xfffe0024, 0xfffe3004, 0xfffe31c4, 0xfffe3005, 0xfffe3005, - 0xfffe300c, 0xad7e3000, 0xadfe3001, 0xae7e3000, 0xaefe3001, 0xaf7e3000, - 0xaffe3001, 0xfffe324c, 0xfffe300c, 0xfffe300c, 0xfffe320c, 0xfffe320c, - 0xb07e300c, 0xb0fe300c, 0xfffe300c, 0xfffe0024, 0xfffe300c, 0xfffe3248, - 0xfffe3249, 0xfffe300c, 0xfffe0024, 0xfffe0024, 0xfffe0024, 0xfffe0024, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed964, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed94b, - 0xfffed94b, 0xfffed94b, 0xfffed94b, 0xfffed964, 0xfffed964, 0xfffe9a94, - 0xfffe0024, 0xffff3005, 0xfffe300c, 0xfffe324c, 0xfffe3248, 0xfffe3249, - 0xfffe300c, 0xfffe300c, 0xb1283000, 0xb1aa3001, 0xfffe300c, 0xfffe320c, - 0xffff31c1, 0xfffeb20c, 0xffff31c1, 0xfffe31cc, 0xfffe310c, 0xfffe310c, - 0xfffe310c, 0xfffe310c, 0xfffe310c, 0xfffe310c, 0xfffe310c, 0xfffe310c, - 0xfffe310c, 0xfffe310c, 0xffff31c4, 0xffff3004, 0xb27e300c, 0xfffe300c, - 0xb2fe300c, 0xffff3005, 0xfffe300c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xb37eb000, - 0xfffe300c, 0xb3feb001, 0xfffe300c, 0xfffeb00c, 0xfffe300c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, 0xfffe304c, - 0xfffe304c, 0xb42c3000, 0xfffe300c, 0xb4ae3001, 0xfffeb00c, 0xb57e3000, - 0xb5fe3001, 0xfffeb001, 0xb67eb000, 0xb6feb001, 0xfffeb001, 0xfffe3004, - 0xfffe304b, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, - 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe3044, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe3044, 0xfffe3044, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe0024, 0xfffe0024, 0xfffe304b, 0xfffe304b, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe0024, 0xfffe0024, - 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe304b, - 0xfffe0024, 0xfffe0024, 0xfffe304b, 0xfffe304b, 0xfffe304b, 0xfffe0024, - 0xfffe0024, 0xfffe0024, 0xfffe3249, 0xfffe3248, 0xfffe300c, 0xfffe300c, - 0xfffe300c, 0xfffe3248, 0xfffe3248, 0xfffe0024, 0xfffe300b, 0xfffe300b, - 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe300b, 0xfffe0024, - 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, - 0xfffe02a4, 0xfffe02a4, 0xfffe02a4, 0xfffe3013, 0xfffe3013, 0xfffe3013, - 0xfffe3011, 0xfffe3022, 0xfffe1aa4, 0xfffe1aa4, -}; - -const size_t kTextLayoutCodePropertiesSize = - FX_ArraySize(kTextLayoutCodeProperties); - -const FX_WCHAR kFXTextLayoutVerticalMirror[] = { - 0xFE33, 0xFE32, 0xFE31, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xFE3F, - 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xFE3B, - 0xFE3C, 0xFE39, 0xFE3A, 0xFE34, 0xFE35, 0xFE36, 0xFE37, 0xFE38, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, -}; -const size_t kFXTextLayoutVerticalMirrorSize = - FX_ArraySize(kFXTextLayoutVerticalMirror); - -const FX_WCHAR kFXTextLayoutBidiMirror[] = { - 0x0029, 0x0028, 0x003E, 0x003C, 0x005D, 0x005B, 0x007D, 0x007B, 0x00BB, - 0x00AB, 0x0F3B, 0x0F3A, 0x0F3D, 0x0F3C, 0x169C, 0x169B, 0x2019, 0x2018, - 0x201D, 0x201C, 0x203A, 0x2039, 0x2046, 0x2045, 0x207E, 0x207D, 0x208E, - 0x208D, 0x220B, 0x220C, 0x220D, 0x2208, 0x2209, 0x220A, 0x29F5, 0x223D, - 0x223C, 0x22CD, 0x2253, 0x2252, 0x2255, 0x2254, 0x2265, 0x2264, 0x2267, - 0x2266, 0x2269, 0x2268, 0x226B, 0x226A, 0x226F, 0x226E, 0x2271, 0x2270, - 0x2273, 0x2272, 0x2275, 0x2274, 0x2277, 0x2276, 0x2279, 0x2278, 0x227B, - 0x227A, 0x227D, 0x227C, 0x227F, 0x227E, 0x2281, 0x2280, 0x2283, 0x2282, - 0x2285, 0x2284, 0x2287, 0x2286, 0x2289, 0x2288, 0x228B, 0x228A, 0x2290, - 0x228F, 0x2292, 0x2291, 0x29B8, 0x22A3, 0x22A2, 0x2ADE, 0x2AE4, 0x2AE3, - 0x2AE5, 0x22B1, 0x22B0, 0x22B3, 0x22B2, 0x22B5, 0x22B4, 0x22B7, 0x22B6, - 0x22CA, 0x22C9, 0x22CC, 0x22CB, 0x2243, 0x22D1, 0x22D0, 0x22D7, 0x22D6, - 0x22D9, 0x22D8, 0x22DB, 0x22DA, 0x22DD, 0x22DC, 0x22DF, 0x22DE, 0x22E1, - 0x22E0, 0x22E3, 0x22E2, 0x22E5, 0x22E4, 0x22E7, 0x22E6, 0x22E9, 0x22E8, - 0x22EB, 0x22EA, 0x22ED, 0x22EC, 0x22F1, 0x22F0, 0x22FA, 0x22FB, 0x22FC, - 0x22FD, 0x22FE, 0x22F2, 0x22F3, 0x22F4, 0x22F6, 0x22F7, 0x2309, 0x2308, - 0x230B, 0x230A, 0x232A, 0x2329, 0x2769, 0x2768, 0x276B, 0x276A, 0x276D, - 0x276C, 0x276F, 0x276E, 0x2771, 0x2770, 0x2773, 0x2772, 0x2775, 0x2774, - 0x27C4, 0x27C3, 0x27C6, 0x27C5, 0x27C9, 0x27C8, 0x27D6, 0x27D5, 0x27DE, - 0x27DD, 0x27E3, 0x27E2, 0x27E5, 0x27E4, 0x27E7, 0x27E6, 0x27E9, 0x27E8, - 0x27EB, 0x27EA, 0x27ED, 0x27EC, 0x27EF, 0x27EE, 0x2984, 0x2983, 0x2986, - 0x2985, 0x2988, 0x2987, 0x298A, 0x2989, 0x298C, 0x298B, 0x2990, 0x298F, - 0x298E, 0x298D, 0x2992, 0x2991, 0x2994, 0x2993, 0x2996, 0x2995, 0x2998, - 0x2997, 0x2298, 0x29C1, 0x29C0, 0x29C5, 0x29C4, 0x29D0, 0x29CF, 0x29D2, - 0x29D1, 0x29D5, 0x29D4, 0x29D9, 0x29D8, 0x29DB, 0x29DA, 0x2215, 0x29F9, - 0x29F8, 0x29FD, 0x29FC, 0x2A2C, 0x2A2B, 0x2A2E, 0x2A2D, 0x2A35, 0x2A34, - 0x2A3D, 0x2A3C, 0x2A65, 0x2A64, 0x2A7A, 0x2A79, 0x2A7E, 0x2A7D, 0x2A80, - 0x2A7F, 0x2A82, 0x2A81, 0x2A84, 0x2A83, 0x2A8C, 0x2A8B, 0x2A92, 0x2A91, - 0x2A94, 0x2A93, 0x2A96, 0x2A95, 0x2A98, 0x2A97, 0x2A9A, 0x2A99, 0x2A9C, - 0x2A9B, 0x2AA2, 0x2AA1, 0x2AA7, 0x2AA6, 0x2AA9, 0x2AA8, 0x2AAB, 0x2AAA, - 0x2AAD, 0x2AAC, 0x2AB0, 0x2AAF, 0x2AB4, 0x2AB3, 0x2ABC, 0x2ABB, 0x2ABE, - 0x2ABD, 0x2AC0, 0x2ABF, 0x2AC2, 0x2AC1, 0x2AC4, 0x2AC3, 0x2AC6, 0x2AC5, - 0x2ACE, 0x2ACD, 0x2AD0, 0x2ACF, 0x2AD2, 0x2AD1, 0x2AD4, 0x2AD3, 0x2AD6, - 0x2AD5, 0x22A6, 0x22A9, 0x22A8, 0x22AB, 0x2AED, 0x2AEC, 0x2AF8, 0x2AF7, - 0x2AFA, 0x2AF9, 0x2E03, 0x2E02, 0x2E05, 0x2E04, 0x2E0A, 0x2E09, 0x2E0D, - 0x2E0C, 0x2E1D, 0x2E1C, 0x2E21, 0x2E20, 0x2E23, 0x2E22, 0x2E25, 0x2E24, - 0x2E27, 0x2E26, 0x2E29, 0x2E28, 0x3009, 0x3008, 0x300B, 0x300A, 0x300D, - 0x300C, 0x300F, 0x300E, 0x3011, 0x3010, 0x3015, 0x3014, 0x3017, 0x3016, - 0x3019, 0x3018, 0x301B, 0x301A, 0xFE5A, 0xFE59, 0xFE5C, 0xFE5B, 0xFE5E, - 0xFE5D, 0xFE65, 0xFE64, 0xFF09, 0xFF08, 0xFF1E, 0xFF1C, 0xFF3D, 0xFF3B, - 0xFF5D, 0xFF5B, 0xFF60, 0xFF5F, 0xFF63, 0xFF62, 0xFFFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, - 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, 0xFEFF, -}; - -const size_t kFXTextLayoutBidiMirrorSize = - FX_ArraySize(kFXTextLayoutBidiMirror); diff --git a/core/src/fxcrt/fx_unicode.cpp b/core/src/fxcrt/fx_unicode.cpp deleted file mode 100644 index 140bab0b27..0000000000 --- a/core/src/fxcrt/fx_unicode.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_ucd.h" - -FX_DWORD FX_GetUnicodeProperties(FX_WCHAR wch) { - size_t idx = static_cast(wch); - if (idx < kTextLayoutCodePropertiesSize) - return kTextLayoutCodeProperties[(FX_WORD)wch]; - return 0; -} - -#ifdef PDF_ENABLE_XFA -FX_BOOL FX_IsCtrlCode(FX_WCHAR ch) { - FX_DWORD dwRet = (FX_GetUnicodeProperties(ch) & FX_CHARTYPEBITSMASK); - return dwRet == FX_CHARTYPE_Tab || dwRet == FX_CHARTYPE_Control; -} -#endif // PDF_ENABLE_XFA - -FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, FX_BOOL bRTL, FX_BOOL bVertical) { - FX_DWORD dwProps = FX_GetUnicodeProperties(wch); - FX_DWORD dwTemp = (dwProps & 0xFF800000); - if (bRTL && dwTemp < 0xFF800000) { - size_t idx = dwTemp >> 23; - if (idx < kFXTextLayoutBidiMirrorSize) { - wch = kFXTextLayoutBidiMirror[idx]; - dwProps = FX_GetUnicodeProperties(wch); - } - } - if (bVertical) { - dwTemp = (dwProps & 0x007E0000); - if (dwTemp < 0x007E0000) { - size_t idx = dwTemp >> 17; - if (idx < kFXTextLayoutVerticalMirrorSize) - wch = kFXTextLayoutVerticalMirror[idx]; - } - } - return wch; -} - -#ifdef PDF_ENABLE_XFA -FX_WCHAR FX_GetMirrorChar(FX_WCHAR wch, - FX_DWORD dwProps, - FX_BOOL bRTL, - FX_BOOL bVertical) { - FX_DWORD dwTemp = (dwProps & 0xFF800000); - if (bRTL && dwTemp < 0xFF800000) { - size_t idx = dwTemp >> 23; - if (idx < kFXTextLayoutBidiMirrorSize) { - wch = kFXTextLayoutBidiMirror[idx]; - dwProps = FX_GetUnicodeProperties(wch); - } - } - if (bVertical) { - dwTemp = (dwProps & 0x007E0000); - if (dwTemp < 0x007E0000) { - size_t idx = dwTemp >> 17; - if (idx < kFXTextLayoutVerticalMirrorSize) - wch = kFXTextLayoutVerticalMirror[idx]; - } - } - return wch; -} -#endif // PDF_ENABLE_XFA diff --git a/core/src/fxcrt/fx_xml_composer.cpp b/core/src/fxcrt/fx_xml_composer.cpp deleted file mode 100644 index e539510372..0000000000 --- a/core/src/fxcrt/fx_xml_composer.cpp +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcrt/xml_int.h" - -#include "core/include/fxcrt/fx_xml.h" - -void FX_XML_SplitQualifiedName(const CFX_ByteStringC& bsFullName, - CFX_ByteStringC& bsSpace, - CFX_ByteStringC& bsName) { - if (bsFullName.IsEmpty()) { - return; - } - int32_t iStart = 0; - for (; iStart < bsFullName.GetLength(); iStart++) { - if (bsFullName.GetAt(iStart) == ':') { - break; - } - } - if (iStart >= bsFullName.GetLength()) { - bsName = bsFullName; - } else { - bsSpace = CFX_ByteStringC(bsFullName.GetCStr(), iStart); - iStart++; - bsName = CFX_ByteStringC(bsFullName.GetCStr() + iStart, - bsFullName.GetLength() - iStart); - } -} -void CXML_Element::SetTag(const CFX_ByteStringC& qSpace, - const CFX_ByteStringC& tagname) { - m_QSpaceName = qSpace; - m_TagName = tagname; -} -void CXML_Element::SetTag(const CFX_ByteStringC& qTagName) { - ASSERT(!qTagName.IsEmpty()); - CFX_ByteStringC bsSpace, bsName; - FX_XML_SplitQualifiedName(qTagName, bsSpace, bsName); - m_QSpaceName = bsSpace; - m_TagName = bsName; -} diff --git a/core/src/fxcrt/fx_xml_parser.cpp b/core/src/fxcrt/fx_xml_parser.cpp deleted file mode 100644 index ffdc5040b6..0000000000 --- a/core/src/fxcrt/fx_xml_parser.cpp +++ /dev/null @@ -1,795 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcrt/xml_int.h" - -#include - -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxcrt/fx_xml.h" -#include "third_party/base/stl_util.h" - -CXML_Parser::~CXML_Parser() { - if (m_bOwnedStream) { - m_pDataAcc->Release(); - } -} -FX_BOOL CXML_Parser::Init(uint8_t* pBuffer, size_t size) { - m_pDataAcc = new CXML_DataBufAcc(pBuffer, size); - return Init(TRUE); -} -FX_BOOL CXML_Parser::Init(IFX_FileRead* pFileRead) { - m_pDataAcc = new CXML_DataStmAcc(pFileRead); - return Init(TRUE); -} -FX_BOOL CXML_Parser::Init(IFX_BufferRead* pBuffer) { - if (!pBuffer) { - return FALSE; - } - m_pDataAcc = pBuffer; - return Init(FALSE); -} -FX_BOOL CXML_Parser::Init(FX_BOOL bOwndedStream) { - m_bOwnedStream = bOwndedStream; - m_nOffset = 0; - return ReadNextBlock(); -} -FX_BOOL CXML_Parser::ReadNextBlock() { - if (!m_pDataAcc->ReadNextBlock()) { - return FALSE; - } - m_pBuffer = m_pDataAcc->GetBlockBuffer(); - m_dwBufferSize = m_pDataAcc->GetBlockSize(); - m_nBufferOffset = m_pDataAcc->GetBlockOffset(); - m_dwIndex = 0; - return m_dwBufferSize > 0; -} -FX_BOOL CXML_Parser::IsEOF() { - if (!m_pDataAcc->IsEOF()) { - return FALSE; - } - return m_dwIndex >= m_dwBufferSize; -} -#define FXCRTM_XML_CHARTYPE_Normal 0x00 -#define FXCRTM_XML_CHARTYPE_SpaceChar 0x01 -#define FXCRTM_XML_CHARTYPE_Letter 0x02 -#define FXCRTM_XML_CHARTYPE_Digital 0x04 -#define FXCRTM_XML_CHARTYPE_NameIntro 0x08 -#define FXCRTM_XML_CHARTYPE_NameChar 0x10 -#define FXCRTM_XML_CHARTYPE_HexDigital 0x20 -#define FXCRTM_XML_CHARTYPE_HexLowerLetter 0x40 -#define FXCRTM_XML_CHARTYPE_HexUpperLetter 0x60 -#define FXCRTM_XML_CHARTYPE_HexChar 0x60 -uint8_t g_FXCRT_XML_ByteTypes[256] = { - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, - 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x18, - 0x00, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, - 0x1A, 0x1A, 0x01, 0x01, -}; -FX_BOOL g_FXCRT_XML_IsWhiteSpace(uint8_t ch) { - return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_SpaceChar) != 0; -} -FX_BOOL g_FXCRT_XML_IsLetter(uint8_t ch) { - return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Letter) != 0; -} -FX_BOOL g_FXCRT_XML_IsDigital(uint8_t ch) { - return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Digital) != 0; -} -FX_BOOL g_FXCRT_XML_IsNameIntro(uint8_t ch) { - return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameIntro) != 0; -} -FX_BOOL g_FXCRT_XML_IsNameChar(uint8_t ch) { - return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameChar) != 0; -} -FX_BOOL g_FXCRT_XML_IsHexChar(uint8_t ch) { - return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_HexChar) != 0; -} -void CXML_Parser::SkipWhiteSpaces() { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (IsEOF()) { - return; - } - do { - while (m_dwIndex < m_dwBufferSize && - g_FXCRT_XML_IsWhiteSpace(m_pBuffer[m_dwIndex])) { - m_dwIndex++; - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); -} -void CXML_Parser::GetName(CFX_ByteString& space, CFX_ByteString& name) { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (IsEOF()) { - return; - } - CFX_ByteTextBuf buf; - uint8_t ch; - do { - while (m_dwIndex < m_dwBufferSize) { - ch = m_pBuffer[m_dwIndex]; - if (ch == ':') { - space = buf.GetByteString(); - buf.Clear(); - } else if (g_FXCRT_XML_IsNameChar(ch)) { - buf.AppendChar(ch); - } else { - break; - } - m_dwIndex++; - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); - name = buf.GetByteString(); -} -void CXML_Parser::SkipLiterals(const CFX_ByteStringC& str) { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (IsEOF()) { - return; - } - int32_t i = 0, iLen = str.GetLength(); - do { - while (m_dwIndex < m_dwBufferSize) { - if (str.GetAt(i) != m_pBuffer[m_dwIndex++]) { - i = 0; - } else { - i++; - if (i == iLen) { - break; - } - } - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (i == iLen) { - return; - } - if (m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); - while (!m_pDataAcc->IsEOF()) { - ReadNextBlock(); - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwBufferSize; - } - m_dwIndex = m_dwBufferSize; -} -FX_DWORD CXML_Parser::GetCharRef() { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (IsEOF()) { - return 0; - } - uint8_t ch; - int32_t iState = 0; - CFX_ByteTextBuf buf; - FX_DWORD code = 0; - do { - while (m_dwIndex < m_dwBufferSize) { - ch = m_pBuffer[m_dwIndex]; - switch (iState) { - case 0: - if (ch == '#') { - m_dwIndex++; - iState = 2; - break; - } - iState = 1; - case 1: - m_dwIndex++; - if (ch == ';') { - CFX_ByteStringC ref = buf.GetByteString(); - if (ref == "gt") { - code = '>'; - } else if (ref == "lt") { - code = '<'; - } else if (ref == "amp") { - code = '&'; - } else if (ref == "apos") { - code = '\''; - } else if (ref == "quot") { - code = '"'; - } - iState = 10; - break; - } - buf.AppendByte(ch); - break; - case 2: - if (ch == 'x') { - m_dwIndex++; - iState = 4; - break; - } - iState = 3; - case 3: - m_dwIndex++; - if (ch == ';') { - iState = 10; - break; - } - if (g_FXCRT_XML_IsDigital(ch)) - code = code * 10 + FXSYS_toDecimalDigit(static_cast(ch)); - break; - case 4: - m_dwIndex++; - if (ch == ';') { - iState = 10; - break; - } - uint8_t nHex = - g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_HexChar; - if (nHex) { - if (nHex == FXCRTM_XML_CHARTYPE_HexDigital) { - code = - (code << 4) + FXSYS_toDecimalDigit(static_cast(ch)); - } else if (nHex == FXCRTM_XML_CHARTYPE_HexLowerLetter) { - code = (code << 4) + ch - 87; - } else { - code = (code << 4) + ch - 55; - } - } - break; - } - if (iState == 10) { - break; - } - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); - return code; -} -void CXML_Parser::GetAttrValue(CFX_WideString& value) { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (IsEOF()) { - return; - } - CFX_UTF8Decoder decoder; - uint8_t mark = 0, ch = 0; - do { - while (m_dwIndex < m_dwBufferSize) { - ch = m_pBuffer[m_dwIndex]; - if (mark == 0) { - if (ch != '\'' && ch != '"') { - return; - } - mark = ch; - m_dwIndex++; - ch = 0; - continue; - } - m_dwIndex++; - if (ch == mark) { - break; - } - if (ch == '&') { - decoder.AppendChar(GetCharRef()); - if (IsEOF()) { - value = decoder.GetResult(); - return; - } - } else { - decoder.Input(ch); - } - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (ch == mark || m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); - value = decoder.GetResult(); -} -void CXML_Parser::GetTagName(CFX_ByteString& space, - CFX_ByteString& name, - FX_BOOL& bEndTag, - FX_BOOL bStartTag) { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (IsEOF()) { - return; - } - bEndTag = FALSE; - uint8_t ch; - int32_t iState = bStartTag ? 1 : 0; - do { - while (m_dwIndex < m_dwBufferSize) { - ch = m_pBuffer[m_dwIndex]; - switch (iState) { - case 0: - m_dwIndex++; - if (ch != '<') { - break; - } - iState = 1; - break; - case 1: - if (ch == '?') { - m_dwIndex++; - SkipLiterals("?>"); - iState = 0; - break; - } else if (ch == '!') { - m_dwIndex++; - SkipLiterals("-->"); - iState = 0; - break; - } - if (ch == '/') { - m_dwIndex++; - GetName(space, name); - bEndTag = TRUE; - } else { - GetName(space, name); - bEndTag = FALSE; - } - return; - } - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); -} -CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, - FX_BOOL bStartTag) { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (IsEOF()) { - return nullptr; - } - CFX_ByteString tag_name, tag_space; - FX_BOOL bEndTag; - GetTagName(tag_space, tag_name, bEndTag, bStartTag); - if (tag_name.IsEmpty() || bEndTag) { - return nullptr; - } - CXML_Element* pElement = new CXML_Element; - pElement->m_pParent = pParent; - pElement->SetTag(tag_space, tag_name); - do { - CFX_ByteString attr_space, attr_name; - while (m_dwIndex < m_dwBufferSize) { - SkipWhiteSpaces(); - if (IsEOF()) { - break; - } - if (!g_FXCRT_XML_IsNameIntro(m_pBuffer[m_dwIndex])) { - break; - } - GetName(attr_space, attr_name); - SkipWhiteSpaces(); - if (IsEOF()) { - break; - } - if (m_pBuffer[m_dwIndex] != '=') { - break; - } - m_dwIndex++; - SkipWhiteSpaces(); - if (IsEOF()) { - break; - } - CFX_WideString attr_value; - GetAttrValue(attr_value); - pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value); - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); - SkipWhiteSpaces(); - if (IsEOF()) { - return pElement; - } - uint8_t ch = m_pBuffer[m_dwIndex++]; - if (ch == '/') { - m_dwIndex++; - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - return pElement; - } - if (ch != '>') { - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - delete pElement; - return nullptr; - } - SkipWhiteSpaces(); - if (IsEOF()) { - return pElement; - } - CFX_UTF8Decoder decoder; - CFX_WideTextBuf content; - FX_BOOL bCDATA = FALSE; - int32_t iState = 0; - do { - while (m_dwIndex < m_dwBufferSize) { - ch = m_pBuffer[m_dwIndex++]; - switch (iState) { - case 0: - if (ch == '<') { - iState = 1; - } else if (ch == '&') { - decoder.ClearStatus(); - decoder.AppendChar(GetCharRef()); - } else { - decoder.Input(ch); - } - break; - case 1: - if (ch == '!') { - iState = 2; - } else if (ch == '?') { - SkipLiterals("?>"); - SkipWhiteSpaces(); - iState = 0; - } else if (ch == '/') { - CFX_ByteString space, name; - GetName(space, name); - SkipWhiteSpaces(); - m_dwIndex++; - iState = 10; - } else { - content << decoder.GetResult(); - CFX_WideString dataStr = content.GetWideString(); - if (!bCDATA && !m_bSaveSpaceChars) { - dataStr.TrimRight(L" \t\r\n"); - } - InsertContentSegment(bCDATA, dataStr, pElement); - content.Clear(); - decoder.Clear(); - bCDATA = FALSE; - iState = 0; - m_dwIndex--; - CXML_Element* pSubElement = ParseElement(pElement, TRUE); - if (!pSubElement) { - break; - } - pSubElement->m_pParent = pElement; - pElement->m_Children.push_back( - {CXML_Element::Element, pSubElement}); - SkipWhiteSpaces(); - } - break; - case 2: - if (ch == '[') { - SkipLiterals("]]>"); - } else if (ch == '-') { - m_dwIndex++; - SkipLiterals("-->"); - } else { - SkipLiterals(">"); - } - decoder.Clear(); - SkipWhiteSpaces(); - iState = 0; - break; - } - if (iState == 10) { - break; - } - } - m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) { - break; - } - } while (ReadNextBlock()); - content << decoder.GetResult(); - CFX_WideString dataStr = content.GetWideString(); - if (!m_bSaveSpaceChars) { - dataStr.TrimRight(L" \t\r\n"); - } - InsertContentSegment(bCDATA, dataStr, pElement); - content.Clear(); - decoder.Clear(); - bCDATA = FALSE; - return pElement; -} -void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, - const CFX_WideStringC& content, - CXML_Element* pElement) { - if (content.IsEmpty()) { - return; - } - CXML_Content* pContent = new CXML_Content; - pContent->Set(bCDATA, content); - pElement->m_Children.push_back({CXML_Element::Content, pContent}); -} -static CXML_Element* XML_ContinueParse(CXML_Parser& parser, - FX_BOOL bSaveSpaceChars, - FX_FILESIZE* pParsedSize) { - parser.m_bSaveSpaceChars = bSaveSpaceChars; - CXML_Element* pElement = parser.ParseElement(nullptr, FALSE); - if (pParsedSize) { - *pParsedSize = parser.m_nOffset; - } - return pElement; -} -CXML_Element* CXML_Element::Parse(const void* pBuffer, - size_t size, - FX_BOOL bSaveSpaceChars, - FX_FILESIZE* pParsedSize) { - CXML_Parser parser; - if (!parser.Init((uint8_t*)pBuffer, size)) { - return nullptr; - } - return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); -} -CXML_Element* CXML_Element::Parse(IFX_FileRead* pFile, - FX_BOOL bSaveSpaceChars, - FX_FILESIZE* pParsedSize) { - CXML_Parser parser; - if (!parser.Init(pFile)) { - return nullptr; - } - return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); -} -CXML_Element* CXML_Element::Parse(IFX_BufferRead* pBuffer, - FX_BOOL bSaveSpaceChars, - FX_FILESIZE* pParsedSize) { - CXML_Parser parser; - if (!parser.Init(pBuffer)) { - return nullptr; - } - return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); -} -CXML_Element::CXML_Element() : m_QSpaceName(), m_TagName(), m_AttrMap() {} -CXML_Element::CXML_Element(const CFX_ByteStringC& qSpace, - const CFX_ByteStringC& tagName) - : m_QSpaceName(), m_TagName(), m_AttrMap() { - m_QSpaceName = qSpace; - m_TagName = tagName; -} -CXML_Element::CXML_Element(const CFX_ByteStringC& qTagName) - : m_pParent(nullptr), m_QSpaceName(), m_TagName(), m_AttrMap() { - SetTag(qTagName); -} -CXML_Element::~CXML_Element() { - Empty(); -} -void CXML_Element::Empty() { - RemoveChildren(); -} -void CXML_Element::RemoveChildren() { - for (const ChildRecord& record : m_Children) { - if (record.type == Content) { - delete static_cast(record.child); - } else if (record.type == Element) { - CXML_Element* child = static_cast(record.child); - child->RemoveChildren(); - delete child; - } - } - m_Children.clear(); -} -CFX_ByteString CXML_Element::GetTagName(FX_BOOL bQualified) const { - if (!bQualified || m_QSpaceName.IsEmpty()) { - return m_TagName; - } - CFX_ByteString bsTag = m_QSpaceName; - bsTag += ":"; - bsTag += m_TagName; - return bsTag; -} -CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const { - if (bQualified) { - return m_QSpaceName; - } - return GetNamespaceURI(m_QSpaceName); -} -CFX_ByteString CXML_Element::GetNamespaceURI( - const CFX_ByteStringC& qName) const { - const CFX_WideString* pwsSpace; - const CXML_Element* pElement = this; - do { - if (qName.IsEmpty()) { - pwsSpace = pElement->m_AttrMap.Lookup("", "xmlns"); - } else { - pwsSpace = pElement->m_AttrMap.Lookup("xmlns", qName); - } - if (pwsSpace) { - break; - } - pElement = pElement->GetParent(); - } while (pElement); - return pwsSpace ? FX_UTF8Encode(*pwsSpace) : CFX_ByteString(); -} -void CXML_Element::GetAttrByIndex(int index, - CFX_ByteString& space, - CFX_ByteString& name, - CFX_WideString& value) const { - if (index < 0 || index >= m_AttrMap.GetSize()) { - return; - } - CXML_AttrItem& item = m_AttrMap.GetAt(index); - space = item.m_QSpaceName; - name = item.m_AttrName; - value = item.m_Value; -} -FX_BOOL CXML_Element::HasAttr(const CFX_ByteStringC& name) const { - CFX_ByteStringC bsSpace, bsName; - FX_XML_SplitQualifiedName(name, bsSpace, bsName); - return !!m_AttrMap.Lookup(bsSpace, bsName); -} -FX_BOOL CXML_Element::GetAttrValue(const CFX_ByteStringC& name, - CFX_WideString& attribute) const { - CFX_ByteStringC bsSpace, bsName; - FX_XML_SplitQualifiedName(name, bsSpace, bsName); - return GetAttrValue(bsSpace, bsName, attribute); -} -FX_BOOL CXML_Element::GetAttrValue(const CFX_ByteStringC& space, - const CFX_ByteStringC& name, - CFX_WideString& attribute) const { - const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); - if (pValue) { - attribute = *pValue; - return TRUE; - } - return FALSE; -} -FX_BOOL CXML_Element::GetAttrInteger(const CFX_ByteStringC& name, - int& attribute) const { - CFX_ByteStringC bsSpace, bsName; - FX_XML_SplitQualifiedName(name, bsSpace, bsName); - const CFX_WideString* pwsValue = m_AttrMap.Lookup(bsSpace, bsName); - if (pwsValue) { - attribute = pwsValue->GetInteger(); - return TRUE; - } - return FALSE; -} -FX_BOOL CXML_Element::GetAttrInteger(const CFX_ByteStringC& space, - const CFX_ByteStringC& name, - int& attribute) const { - const CFX_WideString* pwsValue = m_AttrMap.Lookup(space, name); - if (pwsValue) { - attribute = pwsValue->GetInteger(); - return TRUE; - } - return FALSE; -} -FX_BOOL CXML_Element::GetAttrFloat(const CFX_ByteStringC& name, - FX_FLOAT& attribute) const { - CFX_ByteStringC bsSpace, bsName; - FX_XML_SplitQualifiedName(name, bsSpace, bsName); - return GetAttrFloat(bsSpace, bsName, attribute); -} -FX_BOOL CXML_Element::GetAttrFloat(const CFX_ByteStringC& space, - const CFX_ByteStringC& name, - FX_FLOAT& attribute) const { - const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); - if (pValue) { - attribute = pValue->GetFloat(); - return TRUE; - } - return FALSE; -} -CXML_Element::ChildType CXML_Element::GetChildType(FX_DWORD index) const { - return index < m_Children.size() ? m_Children[index].type : Invalid; -} -CFX_WideString CXML_Element::GetContent(FX_DWORD index) const { - if (index < m_Children.size() && m_Children[index].type == Content) { - CXML_Content* pContent = - static_cast(m_Children[index].child); - if (pContent) - return pContent->m_Content; - } - return CFX_WideString(); -} -CXML_Element* CXML_Element::GetElement(FX_DWORD index) const { - if (index < m_Children.size() && m_Children[index].type == Element) { - return static_cast(m_Children[index].child); - } - return nullptr; -} -FX_DWORD CXML_Element::CountElements(const CFX_ByteStringC& space, - const CFX_ByteStringC& tag) const { - int count = 0; - for (const ChildRecord& record : m_Children) { - if (record.type != Element) - continue; - - CXML_Element* pKid = static_cast(record.child); - if ((space.IsEmpty() || pKid->m_QSpaceName == space) && - pKid->m_TagName == tag) { - count++; - } - } - return count; -} -CXML_Element* CXML_Element::GetElement(const CFX_ByteStringC& space, - const CFX_ByteStringC& tag, - int index) const { - if (index < 0) - return nullptr; - - for (const ChildRecord& record : m_Children) { - if (record.type != Element) - continue; - - CXML_Element* pKid = static_cast(record.child); - if ((space.IsEmpty() || pKid->m_QSpaceName == space) && - pKid->m_TagName == tag) { - if (index-- == 0) - return pKid; - } - } - return nullptr; -} -FX_DWORD CXML_Element::FindElement(CXML_Element* pChild) const { - int index = 0; - for (const ChildRecord& record : m_Children) { - if (record.type == Element && - static_cast(record.child) == pChild) { - return index; - } - ++index; - } - return (FX_DWORD)-1; -} - -bool CXML_AttrItem::Matches(const CFX_ByteStringC& space, - const CFX_ByteStringC& name) const { - return (space.IsEmpty() || m_QSpaceName == space) && m_AttrName == name; -} - -const CFX_WideString* CXML_AttrMap::Lookup(const CFX_ByteStringC& space, - const CFX_ByteStringC& name) const { - if (!m_pMap) - return nullptr; - - for (const auto& item : *m_pMap) { - if (item.Matches(space, name)) - return &item.m_Value; - } - return nullptr; -} - -void CXML_AttrMap::SetAt(const CFX_ByteStringC& space, - const CFX_ByteStringC& name, - const CFX_WideStringC& value) { - if (!m_pMap) - m_pMap.reset(new std::vector); - - for (CXML_AttrItem& item : *m_pMap) { - if (item.Matches(space, name)) { - item.m_Value = value; - return; - } - } - - m_pMap->push_back({space, name, value}); -} - -int CXML_AttrMap::GetSize() const { - return m_pMap ? pdfium::CollectionSize(*m_pMap) : 0; -} - -CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { - return (*m_pMap)[index]; -} diff --git a/core/src/fxcrt/fxcrt_platforms.cpp b/core/src/fxcrt/fxcrt_platforms.cpp deleted file mode 100644 index 85081a237f..0000000000 --- a/core/src/fxcrt/fxcrt_platforms.cpp +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcrt/fxcrt_platforms.h" - -#include "core/include/fxcrt/fx_basic.h" - -#if (_FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ && \ - _FXM_PLATFORM_ != _FXM_PLATFORM_LINUX_ && \ - _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ && \ - _FXM_PLATFORM_ != _FXM_PLATFORM_ANDROID_) -IFXCRT_FileAccess* FXCRT_FileAccess_Create() { - return new CFXCRT_FileAccess_CRT; -} -void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_ByteString& bsMode) { - if (dwModes & FX_FILEMODE_ReadOnly) { - bsMode = "rb"; - } else if (dwModes & FX_FILEMODE_Truncate) { - bsMode = "w+b"; - } else { - bsMode = "a+b"; - } -} -void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString& wsMode) { - if (dwModes & FX_FILEMODE_ReadOnly) { - wsMode = FX_WSTRC(L"rb"); - } else if (dwModes & FX_FILEMODE_Truncate) { - wsMode = FX_WSTRC(L"w+b"); - } else { - wsMode = FX_WSTRC(L"a+b"); - } -} -CFXCRT_FileAccess_CRT::CFXCRT_FileAccess_CRT() : m_hFile(NULL) {} -CFXCRT_FileAccess_CRT::~CFXCRT_FileAccess_CRT() { - Close(); -} -FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_ByteStringC& fileName, - FX_DWORD dwMode) { - if (m_hFile) { - return FALSE; - } - CFX_ByteString strMode; - FXCRT_GetFileModeString(dwMode, strMode); - m_hFile = FXSYS_fopen(fileName.GetCStr(), strMode.c_str()); - return m_hFile != NULL; -} -FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_WideStringC& fileName, - FX_DWORD dwMode) { - if (m_hFile) { - return FALSE; - } - CFX_WideString strMode; - FXCRT_GetFileModeString(dwMode, strMode); - m_hFile = FXSYS_wfopen(fileName.GetPtr(), strMode.c_str()); - return m_hFile != NULL; -} -void CFXCRT_FileAccess_CRT::Close() { - if (!m_hFile) { - return; - } - FXSYS_fclose(m_hFile); - m_hFile = NULL; -} -void CFXCRT_FileAccess_CRT::Release() { - delete this; -} -FX_FILESIZE CFXCRT_FileAccess_CRT::GetSize() const { - if (!m_hFile) { - return 0; - } - FX_FILESIZE pos = (FX_FILESIZE)FXSYS_ftell(m_hFile); - FXSYS_fseek(m_hFile, 0, FXSYS_SEEK_END); - FX_FILESIZE size = (FX_FILESIZE)FXSYS_ftell(m_hFile); - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); - return size; -} -FX_FILESIZE CFXCRT_FileAccess_CRT::GetPosition() const { - if (!m_hFile) { - return (FX_FILESIZE)-1; - } - return (FX_FILESIZE)FXSYS_ftell(m_hFile); -} -FX_FILESIZE CFXCRT_FileAccess_CRT::SetPosition(FX_FILESIZE pos) { - if (!m_hFile) { - return (FX_FILESIZE)-1; - } - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); - return (FX_FILESIZE)FXSYS_ftell(m_hFile); -} -size_t CFXCRT_FileAccess_CRT::Read(void* pBuffer, size_t szBuffer) { - if (!m_hFile) { - return 0; - } - return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile); -} -size_t CFXCRT_FileAccess_CRT::Write(const void* pBuffer, size_t szBuffer) { - if (!m_hFile) { - return 0; - } - return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile); -} -size_t CFXCRT_FileAccess_CRT::ReadPos(void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) { - if (!m_hFile) { - return (FX_FILESIZE)-1; - } - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); - return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile); -} -size_t CFXCRT_FileAccess_CRT::WritePos(const void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) { - if (!m_hFile) { - return (FX_FILESIZE)-1; - } - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET); - return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile); -} -FX_BOOL CFXCRT_FileAccess_CRT::Flush() { - if (!m_hFile) { - return FALSE; - } - return !FXSYS_fflush(m_hFile); -} -FX_BOOL CFXCRT_FileAccess_CRT::Truncate(FX_FILESIZE szFile) { - return FALSE; -} -#endif diff --git a/core/src/fxcrt/fxcrt_platforms.h b/core/src/fxcrt/fxcrt_platforms.h deleted file mode 100644 index 7c659d3a5f..0000000000 --- a/core/src/fxcrt/fxcrt_platforms.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCRT_FXCRT_PLATFORMS_H_ -#define CORE_SRC_FXCRT_FXCRT_PLATFORMS_H_ - -#include "core/src/fxcrt/extension.h" - -#if _FX_OS_ == _FX_ANDROID_ -void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_ByteString& bsMode); -void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString& wsMode); -class CFXCRT_FileAccess_CRT : public IFXCRT_FileAccess { - public: - CFXCRT_FileAccess_CRT(); - ~CFXCRT_FileAccess_CRT() override; - - // IFXCRT_FileAccess - FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) override; - FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) override; - void Close() override; - void Release() override; - FX_FILESIZE GetSize() const override; - FX_FILESIZE GetPosition() const override; - FX_FILESIZE SetPosition(FX_FILESIZE pos) override; - size_t Read(void* pBuffer, size_t szBuffer) override; - size_t Write(const void* pBuffer, size_t szBuffer) override; - size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) override; - size_t WritePos(const void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) override; - FX_BOOL Flush() override; - FX_BOOL Truncate(FX_FILESIZE szFile) override; - - protected: - FXSYS_FILE* m_hFile; -}; -#endif - -#endif // CORE_SRC_FXCRT_FXCRT_PLATFORMS_H_ diff --git a/core/src/fxcrt/fxcrt_posix.cpp b/core/src/fxcrt/fxcrt_posix.cpp deleted file mode 100644 index 1d3b0c2310..0000000000 --- a/core/src/fxcrt/fxcrt_posix.cpp +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcrt/fxcrt_posix.h" - -#include "core/include/fxcrt/fx_basic.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ -IFXCRT_FileAccess* FXCRT_FileAccess_Create() { - return new CFXCRT_FileAccess_Posix; -} -void FXCRT_Posix_GetFileMode(FX_DWORD dwModes, - int32_t& nFlags, - int32_t& nMasks) { - nFlags = O_BINARY | O_LARGEFILE; - if (dwModes & FX_FILEMODE_ReadOnly) { - nFlags |= O_RDONLY; - nMasks = 0; - } else { - nFlags |= O_RDWR | O_CREAT; - if (dwModes & FX_FILEMODE_Truncate) { - nFlags |= O_TRUNC; - } - nMasks = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; - } -} -CFXCRT_FileAccess_Posix::CFXCRT_FileAccess_Posix() : m_nFD(-1) {} -CFXCRT_FileAccess_Posix::~CFXCRT_FileAccess_Posix() { - Close(); -} -FX_BOOL CFXCRT_FileAccess_Posix::Open(const CFX_ByteStringC& fileName, - FX_DWORD dwMode) { - if (m_nFD > -1) { - return FALSE; - } - int32_t nFlags, nMasks; - FXCRT_Posix_GetFileMode(dwMode, nFlags, nMasks); - m_nFD = open(fileName.GetCStr(), nFlags, nMasks); - return m_nFD > -1; -} -FX_BOOL CFXCRT_FileAccess_Posix::Open(const CFX_WideStringC& fileName, - FX_DWORD dwMode) { - return Open(FX_UTF8Encode(fileName), dwMode); -} -void CFXCRT_FileAccess_Posix::Close() { - if (m_nFD < 0) { - return; - } - close(m_nFD); - m_nFD = -1; -} -void CFXCRT_FileAccess_Posix::Release() { - delete this; -} -FX_FILESIZE CFXCRT_FileAccess_Posix::GetSize() const { - if (m_nFD < 0) { - return 0; - } - struct stat s; - FXSYS_memset(&s, 0, sizeof(s)); - fstat(m_nFD, &s); - return s.st_size; -} -FX_FILESIZE CFXCRT_FileAccess_Posix::GetPosition() const { - if (m_nFD < 0) { - return (FX_FILESIZE)-1; - } - return lseek(m_nFD, 0, SEEK_CUR); -} -FX_FILESIZE CFXCRT_FileAccess_Posix::SetPosition(FX_FILESIZE pos) { - if (m_nFD < 0) { - return (FX_FILESIZE)-1; - } - return lseek(m_nFD, pos, SEEK_SET); -} -size_t CFXCRT_FileAccess_Posix::Read(void* pBuffer, size_t szBuffer) { - if (m_nFD < 0) { - return 0; - } - return read(m_nFD, pBuffer, szBuffer); -} -size_t CFXCRT_FileAccess_Posix::Write(const void* pBuffer, size_t szBuffer) { - if (m_nFD < 0) { - return 0; - } - return write(m_nFD, pBuffer, szBuffer); -} -size_t CFXCRT_FileAccess_Posix::ReadPos(void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) { - if (m_nFD < 0) { - return 0; - } - if (pos >= GetSize()) { - return 0; - } - if (SetPosition(pos) == (FX_FILESIZE)-1) { - return 0; - } - return Read(pBuffer, szBuffer); -} -size_t CFXCRT_FileAccess_Posix::WritePos(const void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) { - if (m_nFD < 0) { - return 0; - } - if (SetPosition(pos) == (FX_FILESIZE)-1) { - return 0; - } - return Write(pBuffer, szBuffer); -} -FX_BOOL CFXCRT_FileAccess_Posix::Flush() { - if (m_nFD < 0) { - return FALSE; - } - return fsync(m_nFD) > -1; -} -FX_BOOL CFXCRT_FileAccess_Posix::Truncate(FX_FILESIZE szFile) { - if (m_nFD < 0) { - return FALSE; - } - return !ftruncate(m_nFD, szFile); -} -#endif diff --git a/core/src/fxcrt/fxcrt_posix.h b/core/src/fxcrt/fxcrt_posix.h deleted file mode 100644 index f67618ff96..0000000000 --- a/core/src/fxcrt/fxcrt_posix.h +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCRT_FXCRT_POSIX_H_ -#define CORE_SRC_FXCRT_FXCRT_POSIX_H_ - -#include "core/src/fxcrt/extension.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ -class CFXCRT_FileAccess_Posix : public IFXCRT_FileAccess { - public: - CFXCRT_FileAccess_Posix(); - ~CFXCRT_FileAccess_Posix() override; - - // IFXCRT_FileAccess - FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) override; - FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) override; - void Close() override; - void Release() override; - FX_FILESIZE GetSize() const override; - FX_FILESIZE GetPosition() const override; - FX_FILESIZE SetPosition(FX_FILESIZE pos) override; - size_t Read(void* pBuffer, size_t szBuffer) override; - size_t Write(const void* pBuffer, size_t szBuffer) override; - size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) override; - size_t WritePos(const void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) override; - FX_BOOL Flush() override; - FX_BOOL Truncate(FX_FILESIZE szFile) override; - - protected: - int32_t m_nFD; -}; -#endif - -#endif // CORE_SRC_FXCRT_FXCRT_POSIX_H_ diff --git a/core/src/fxcrt/fxcrt_stream.cpp b/core/src/fxcrt/fxcrt_stream.cpp deleted file mode 100644 index 2f50153e9e..0000000000 --- a/core/src/fxcrt/fxcrt_stream.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2016 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_stream.h" - -FX_BOOL IFX_FileWrite::WriteBlock(const void* pData, size_t size) { - return WriteBlock(pData, GetSize(), size); -} - -FX_BOOL IFX_FileRead::IsEOF() { - return FALSE; -} - -FX_FILESIZE IFX_FileRead::GetPosition() { - return 0; -} - -size_t IFX_FileRead::ReadBlock(void* buffer, size_t size) { - return 0; -} - -FX_BOOL IFX_FileStream::WriteBlock(const void* buffer, size_t size) { - return WriteBlock(buffer, GetSize(), size); -} diff --git a/core/src/fxcrt/fxcrt_windows.cpp b/core/src/fxcrt/fxcrt_windows.cpp deleted file mode 100644 index d5b535bb16..0000000000 --- a/core/src/fxcrt/fxcrt_windows.cpp +++ /dev/null @@ -1,172 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxcrt/fxcrt_windows.h" - -#include "core/include/fxcrt/fx_string.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -IFXCRT_FileAccess* FXCRT_FileAccess_Create() { - return new CFXCRT_FileAccess_Win64; -} -void FXCRT_Windows_GetFileMode(FX_DWORD dwMode, - FX_DWORD& dwAccess, - FX_DWORD& dwShare, - FX_DWORD& dwCreation) { - dwAccess = GENERIC_READ; - dwShare = FILE_SHARE_READ | FILE_SHARE_WRITE; - if (!(dwMode & FX_FILEMODE_ReadOnly)) { - dwAccess |= GENERIC_WRITE; - dwCreation = (dwMode & FX_FILEMODE_Truncate) ? CREATE_ALWAYS : OPEN_ALWAYS; - } else { - dwCreation = OPEN_EXISTING; - } -} -#ifdef __cplusplus -extern "C" { -#endif -WINBASEAPI BOOL WINAPI GetFileSizeEx(HANDLE hFile, PLARGE_INTEGER lpFileSize); -WINBASEAPI BOOL WINAPI SetFilePointerEx(HANDLE hFile, - LARGE_INTEGER liDistanceToMove, - PLARGE_INTEGER lpNewFilePointer, - DWORD dwMoveMethod); -#ifdef __cplusplus -} -#endif -CFXCRT_FileAccess_Win64::CFXCRT_FileAccess_Win64() : m_hFile(NULL) {} -CFXCRT_FileAccess_Win64::~CFXCRT_FileAccess_Win64() { - Close(); -} -FX_BOOL CFXCRT_FileAccess_Win64::Open(const CFX_ByteStringC& fileName, - FX_DWORD dwMode) { - if (m_hFile) { - return FALSE; - } - FX_DWORD dwAccess, dwShare, dwCreation; - FXCRT_Windows_GetFileMode(dwMode, dwAccess, dwShare, dwCreation); - m_hFile = ::CreateFileA(fileName.GetCStr(), dwAccess, dwShare, NULL, - dwCreation, FILE_ATTRIBUTE_NORMAL, NULL); - if (m_hFile == INVALID_HANDLE_VALUE) { - m_hFile = NULL; - } - return m_hFile != NULL; -} -FX_BOOL CFXCRT_FileAccess_Win64::Open(const CFX_WideStringC& fileName, - FX_DWORD dwMode) { - if (m_hFile) { - return FALSE; - } - FX_DWORD dwAccess, dwShare, dwCreation; - FXCRT_Windows_GetFileMode(dwMode, dwAccess, dwShare, dwCreation); - m_hFile = ::CreateFileW((LPCWSTR)fileName.GetPtr(), dwAccess, dwShare, NULL, - dwCreation, FILE_ATTRIBUTE_NORMAL, NULL); - if (m_hFile == INVALID_HANDLE_VALUE) { - m_hFile = NULL; - } - return m_hFile != NULL; -} -void CFXCRT_FileAccess_Win64::Close() { - if (!m_hFile) { - return; - } - ::CloseHandle(m_hFile); - m_hFile = NULL; -} -void CFXCRT_FileAccess_Win64::Release() { - delete this; -} -FX_FILESIZE CFXCRT_FileAccess_Win64::GetSize() const { - if (!m_hFile) { - return 0; - } - LARGE_INTEGER size = {}; - if (!::GetFileSizeEx(m_hFile, &size)) { - return 0; - } - return (FX_FILESIZE)size.QuadPart; -} -FX_FILESIZE CFXCRT_FileAccess_Win64::GetPosition() const { - if (!m_hFile) { - return (FX_FILESIZE)-1; - } - LARGE_INTEGER dist = {}; - LARGE_INTEGER newPos = {}; - if (!::SetFilePointerEx(m_hFile, dist, &newPos, FILE_CURRENT)) { - return (FX_FILESIZE)-1; - } - return (FX_FILESIZE)newPos.QuadPart; -} -FX_FILESIZE CFXCRT_FileAccess_Win64::SetPosition(FX_FILESIZE pos) { - if (!m_hFile) { - return (FX_FILESIZE)-1; - } - LARGE_INTEGER dist; - dist.QuadPart = pos; - LARGE_INTEGER newPos = {}; - if (!::SetFilePointerEx(m_hFile, dist, &newPos, FILE_BEGIN)) { - return (FX_FILESIZE)-1; - } - return (FX_FILESIZE)newPos.QuadPart; -} -size_t CFXCRT_FileAccess_Win64::Read(void* pBuffer, size_t szBuffer) { - if (!m_hFile) { - return 0; - } - size_t szRead = 0; - if (!::ReadFile(m_hFile, pBuffer, (DWORD)szBuffer, (LPDWORD)&szRead, NULL)) { - return 0; - } - return szRead; -} -size_t CFXCRT_FileAccess_Win64::Write(const void* pBuffer, size_t szBuffer) { - if (!m_hFile) { - return 0; - } - size_t szWrite = 0; - if (!::WriteFile(m_hFile, pBuffer, (DWORD)szBuffer, (LPDWORD)&szWrite, - NULL)) { - return 0; - } - return szWrite; -} -size_t CFXCRT_FileAccess_Win64::ReadPos(void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) { - if (!m_hFile) { - return 0; - } - if (pos >= GetSize()) { - return 0; - } - if (SetPosition(pos) == (FX_FILESIZE)-1) { - return 0; - } - return Read(pBuffer, szBuffer); -} -size_t CFXCRT_FileAccess_Win64::WritePos(const void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) { - if (!m_hFile) { - return 0; - } - if (SetPosition(pos) == (FX_FILESIZE)-1) { - return 0; - } - return Write(pBuffer, szBuffer); -} -FX_BOOL CFXCRT_FileAccess_Win64::Flush() { - if (!m_hFile) { - return FALSE; - } - return ::FlushFileBuffers(m_hFile); -} -FX_BOOL CFXCRT_FileAccess_Win64::Truncate(FX_FILESIZE szFile) { - if (SetPosition(szFile) == (FX_FILESIZE)-1) { - return FALSE; - } - return ::SetEndOfFile(m_hFile); -} -#endif diff --git a/core/src/fxcrt/fxcrt_windows.h b/core/src/fxcrt/fxcrt_windows.h deleted file mode 100644 index 522ceec9e5..0000000000 --- a/core/src/fxcrt/fxcrt_windows.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCRT_FXCRT_WINDOWS_H_ -#define CORE_SRC_FXCRT_FXCRT_WINDOWS_H_ - -#include "core/src/fxcrt/extension.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ -class CFXCRT_FileAccess_Win64 : public IFXCRT_FileAccess { - public: - CFXCRT_FileAccess_Win64(); - ~CFXCRT_FileAccess_Win64() override; - - // IFXCRT_FileAccess - FX_BOOL Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode) override; - FX_BOOL Open(const CFX_WideStringC& fileName, FX_DWORD dwMode) override; - void Close() override; - void Release() override; - FX_FILESIZE GetSize() const override; - FX_FILESIZE GetPosition() const override; - FX_FILESIZE SetPosition(FX_FILESIZE pos) override; - size_t Read(void* pBuffer, size_t szBuffer) override; - size_t Write(const void* pBuffer, size_t szBuffer) override; - size_t ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos) override; - size_t WritePos(const void* pBuffer, - size_t szBuffer, - FX_FILESIZE pos) override; - FX_BOOL Flush() override; - FX_BOOL Truncate(FX_FILESIZE szFile) override; - - protected: - void* m_hFile; -}; -#endif - -#endif // CORE_SRC_FXCRT_FXCRT_WINDOWS_H_ diff --git a/core/src/fxcrt/plex.h b/core/src/fxcrt/plex.h deleted file mode 100644 index 12b7bd45a1..0000000000 --- a/core/src/fxcrt/plex.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCRT_PLEX_H_ -#define CORE_SRC_FXCRT_PLEX_H_ - -#include "core/include/fxcrt/fx_system.h" - -struct CFX_Plex { - CFX_Plex* pNext; - void* data() { return this + 1; } - static CFX_Plex* Create(CFX_Plex*& head, FX_DWORD nMax, FX_DWORD cbElement); - void FreeDataChain(); -}; - -#endif // CORE_SRC_FXCRT_PLEX_H_ diff --git a/core/src/fxcrt/xml_int.h b/core/src/fxcrt/xml_int.h deleted file mode 100644 index a837327445..0000000000 --- a/core/src/fxcrt/xml_int.h +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXCRT_XML_INT_H_ -#define CORE_SRC_FXCRT_XML_INT_H_ - -#include - -#include "core/include/fxcrt/fx_stream.h" - -class CFX_UTF8Decoder; -class CXML_Element; - -class CXML_DataBufAcc : public IFX_BufferRead { - public: - CXML_DataBufAcc(const uint8_t* pBuffer, size_t size) - : m_pBuffer(pBuffer), m_dwSize(size), m_dwCurPos(0) {} - ~CXML_DataBufAcc() override {} - - // IFX_BufferRead - void Release() override { delete this; } - FX_BOOL IsEOF() override { return m_dwCurPos >= m_dwSize; } - FX_FILESIZE GetPosition() override { return (FX_FILESIZE)m_dwCurPos; } - size_t ReadBlock(void* buffer, size_t size) override { return 0; } - FX_BOOL ReadNextBlock(FX_BOOL bRestart = FALSE) override { - if (bRestart) { - m_dwCurPos = 0; - } - if (m_dwCurPos < m_dwSize) { - m_dwCurPos = m_dwSize; - return TRUE; - } - return FALSE; - } - const uint8_t* GetBlockBuffer() override { return m_pBuffer; } - size_t GetBlockSize() override { return m_dwSize; } - FX_FILESIZE GetBlockOffset() override { return 0; } - - protected: - const uint8_t* m_pBuffer; - size_t m_dwSize; - size_t m_dwCurPos; -}; - -class CXML_DataStmAcc : public IFX_BufferRead { - public: - explicit CXML_DataStmAcc(IFX_FileRead* pFileRead) - : m_pFileRead(pFileRead), m_pBuffer(NULL), m_nStart(0), m_dwSize(0) { - FXSYS_assert(m_pFileRead); - } - ~CXML_DataStmAcc() override { FX_Free(m_pBuffer); } - - void Release() override { delete this; } - FX_BOOL IsEOF() override { - return m_nStart + (FX_FILESIZE)m_dwSize >= m_pFileRead->GetSize(); - } - FX_FILESIZE GetPosition() override { - return m_nStart + (FX_FILESIZE)m_dwSize; - } - size_t ReadBlock(void* buffer, size_t size) override { return 0; } - FX_BOOL ReadNextBlock(FX_BOOL bRestart = FALSE) override { - if (bRestart) { - m_nStart = 0; - } - FX_FILESIZE nLength = m_pFileRead->GetSize(); - m_nStart += (FX_FILESIZE)m_dwSize; - if (m_nStart >= nLength) { - return FALSE; - } - static const FX_FILESIZE FX_XMLDATASTREAM_BufferSize = 32 * 1024; - m_dwSize = static_cast( - std::min(FX_XMLDATASTREAM_BufferSize, nLength - m_nStart)); - if (!m_pBuffer) { - m_pBuffer = FX_Alloc(uint8_t, m_dwSize); - } - return m_pFileRead->ReadBlock(m_pBuffer, m_nStart, m_dwSize); - } - const uint8_t* GetBlockBuffer() override { return (const uint8_t*)m_pBuffer; } - size_t GetBlockSize() override { return m_dwSize; } - FX_FILESIZE GetBlockOffset() override { return m_nStart; } - - protected: - IFX_FileRead* m_pFileRead; - uint8_t* m_pBuffer; - FX_FILESIZE m_nStart; - size_t m_dwSize; -}; - -class CXML_Parser { - public: - ~CXML_Parser(); - IFX_BufferRead* m_pDataAcc; - FX_BOOL m_bOwnedStream; - FX_FILESIZE m_nOffset; - FX_BOOL m_bSaveSpaceChars; - const uint8_t* m_pBuffer; - size_t m_dwBufferSize; - FX_FILESIZE m_nBufferOffset; - size_t m_dwIndex; - FX_BOOL Init(uint8_t* pBuffer, size_t size); - FX_BOOL Init(IFX_FileRead* pFileRead); - FX_BOOL Init(IFX_BufferRead* pBuffer); - FX_BOOL Init(FX_BOOL bOwndedStream); - FX_BOOL ReadNextBlock(); - FX_BOOL IsEOF(); - FX_BOOL HaveAvailData(); - void SkipWhiteSpaces(); - void GetName(CFX_ByteString& space, CFX_ByteString& name); - void GetAttrValue(CFX_WideString& value); - FX_DWORD GetCharRef(); - void GetTagName(CFX_ByteString& space, - CFX_ByteString& name, - FX_BOOL& bEndTag, - FX_BOOL bStartTag = FALSE); - void SkipLiterals(const CFX_ByteStringC& str); - CXML_Element* ParseElement(CXML_Element* pParent, FX_BOOL bStartTag = FALSE); - void InsertContentSegment(FX_BOOL bCDATA, - const CFX_WideStringC& content, - CXML_Element* pElement); - void InsertCDATASegment(CFX_UTF8Decoder& decoder, CXML_Element* pElement); -}; - -void FX_XML_SplitQualifiedName(const CFX_ByteStringC& bsFullName, - CFX_ByteStringC& bsSpace, - CFX_ByteStringC& bsName); - -#endif // CORE_SRC_FXCRT_XML_INT_H_ diff --git a/core/src/fxge/agg/DEPS b/core/src/fxge/agg/DEPS deleted file mode 100644 index 25d9e110e6..0000000000 --- a/core/src/fxge/agg/DEPS +++ /dev/null @@ -1,3 +0,0 @@ -include_rules = [ - '+third_party/agg23', -] diff --git a/core/src/fxge/agg/fx_agg_driver.cpp b/core/src/fxge/agg/fx_agg_driver.cpp deleted file mode 100644 index 2f376b2b19..0000000000 --- a/core/src/fxge/agg/fx_agg_driver.cpp +++ /dev/null @@ -1,1839 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/agg/fx_agg_driver.h" - -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/dib/dib_int.h" -#include "core/src/fxge/ge/fx_text_int.h" -#include "third_party/agg23/agg_conv_dash.h" -#include "third_party/agg23/agg_conv_stroke.h" -#include "third_party/agg23/agg_curves.h" -#include "third_party/agg23/agg_path_storage.h" -#include "third_party/agg23/agg_pixfmt_gray.h" -#include "third_party/agg23/agg_rasterizer_scanline_aa.h" -#include "third_party/agg23/agg_renderer_scanline.h" -#include "third_party/agg23/agg_scanline_u.h" - -namespace { - -void HardClip(FX_FLOAT& x, FX_FLOAT& y) { - x = std::max(std::min(x, 50000.0f), -50000.0f); - y = std::max(std::min(y, 50000.0f), -50000.0f); -} - -} // namespace - -void CAgg_PathData::BuildPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device) { - int nPoints = pPathData->GetPointCount(); - FX_PATHPOINT* pPoints = pPathData->GetPoints(); - for (int i = 0; i < nPoints; i++) { - FX_FLOAT x = pPoints[i].m_PointX, y = pPoints[i].m_PointY; - if (pObject2Device) { - pObject2Device->Transform(x, y); - } - HardClip(x, y); - int point_type = pPoints[i].m_Flag & FXPT_TYPE; - if (point_type == FXPT_MOVETO) { - m_PathData.move_to(x, y); - } else if (point_type == FXPT_LINETO) { - if (pPoints[i - 1].m_Flag == FXPT_MOVETO && - (i == nPoints - 1 || pPoints[i + 1].m_Flag == FXPT_MOVETO) && - pPoints[i].m_PointX == pPoints[i - 1].m_PointX && - pPoints[i].m_PointY == pPoints[i - 1].m_PointY) { - x += 1; - } - m_PathData.line_to(x, y); - } else if (point_type == FXPT_BEZIERTO) { - FX_FLOAT x0 = pPoints[i - 1].m_PointX, y0 = pPoints[i - 1].m_PointY; - FX_FLOAT x2 = pPoints[i + 1].m_PointX, y2 = pPoints[i + 1].m_PointY; - FX_FLOAT x3 = pPoints[i + 2].m_PointX, y3 = pPoints[i + 2].m_PointY; - if (pObject2Device) { - pObject2Device->Transform(x0, y0); - pObject2Device->Transform(x2, y2); - pObject2Device->Transform(x3, y3); - } - agg::curve4 curve(x0, y0, x, y, x2, y2, x3, y3); - i += 2; - m_PathData.add_path_curve(curve); - } - if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE) { - m_PathData.end_poly(); - } - } -} -namespace agg { - -template -class renderer_scanline_aa_offset { - public: - typedef BaseRenderer base_ren_type; - typedef typename base_ren_type::color_type color_type; - renderer_scanline_aa_offset(base_ren_type& ren, unsigned left, unsigned top) - : m_ren(&ren), m_left(left), m_top(top) {} - void color(const color_type& c) { m_color = c; } - const color_type& color() const { return m_color; } - void prepare(unsigned) {} - template - void render(const Scanline& sl) { - int y = sl.y(); - unsigned num_spans = sl.num_spans(); - typename Scanline::const_iterator span = sl.begin(); - for (;;) { - int x = span->x; - if (span->len > 0) { - m_ren->blend_solid_hspan(x - m_left, y - m_top, (unsigned)span->len, - m_color, span->covers); - } else { - m_ren->blend_hline(x - m_left, y - m_top, (unsigned)(x - span->len - 1), - m_color, *(span->covers)); - } - if (--num_spans == 0) { - break; - } - ++span; - } - } - - private: - base_ren_type* m_ren; - color_type m_color; - unsigned m_left, m_top; -}; - -} // namespace agg - -static void RasterizeStroke(agg::rasterizer_scanline_aa& rasterizer, - agg::path_storage& path_data, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_FLOAT scale = 1.0f, - FX_BOOL bStrokeAdjust = FALSE, - FX_BOOL bTextMode = FALSE) { - agg::line_cap_e cap; - switch (pGraphState->m_LineCap) { - case CFX_GraphStateData::LineCapRound: - cap = agg::round_cap; - break; - case CFX_GraphStateData::LineCapSquare: - cap = agg::square_cap; - break; - default: - cap = agg::butt_cap; - break; - } - agg::line_join_e join; - switch (pGraphState->m_LineJoin) { - case CFX_GraphStateData::LineJoinRound: - join = agg::round_join; - break; - case CFX_GraphStateData::LineJoinBevel: - join = agg::bevel_join; - break; - default: - join = agg::miter_join_revert; - break; - } - FX_FLOAT width = pGraphState->m_LineWidth * scale; - FX_FLOAT unit = 1.f; - if (pObject2Device) { - unit = - 1.0f / ((pObject2Device->GetXUnit() + pObject2Device->GetYUnit()) / 2); - } - if (width < unit) { - width = unit; - } - if (pGraphState->m_DashArray) { - typedef agg::conv_dash dash_converter; - dash_converter dash(path_data); - for (int i = 0; i < (pGraphState->m_DashCount + 1) / 2; i++) { - FX_FLOAT on = pGraphState->m_DashArray[i * 2]; - if (on <= 0.000001f) { - on = 1.0f / 10; - } - FX_FLOAT off = i * 2 + 1 == pGraphState->m_DashCount - ? on - : pGraphState->m_DashArray[i * 2 + 1]; - if (off < 0) { - off = 0; - } - dash.add_dash(on * scale, off * scale); - } - dash.dash_start(pGraphState->m_DashPhase * scale); - typedef agg::conv_stroke dash_stroke; - dash_stroke stroke(dash); - stroke.line_join(join); - stroke.line_cap(cap); - stroke.miter_limit(pGraphState->m_MiterLimit); - stroke.width(width); - rasterizer.add_path_transformed(stroke, pObject2Device); - } else { - agg::conv_stroke stroke(path_data); - stroke.line_join(join); - stroke.line_cap(cap); - stroke.miter_limit(pGraphState->m_MiterLimit); - stroke.width(width); - rasterizer.add_path_transformed(stroke, pObject2Device); - } -} - -IFX_RenderDeviceDriver* IFX_RenderDeviceDriver::CreateFxgeDriver( - CFX_DIBitmap* pBitmap, - FX_BOOL bRgbByteOrder, - CFX_DIBitmap* pOriDevice, - FX_BOOL bGroupKnockout) { - return new CFX_AggDeviceDriver(pBitmap, 0, bRgbByteOrder, pOriDevice, - bGroupKnockout); -} - -CFX_AggDeviceDriver::CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap, - int dither_bits, - FX_BOOL bRgbByteOrder, - CFX_DIBitmap* pOriDevice, - FX_BOOL bGroupKnockout) { - m_pBitmap = pBitmap; - m_DitherBits = dither_bits; - m_pClipRgn = NULL; - m_pPlatformBitmap = NULL; - m_pPlatformGraphics = NULL; - m_pDwRenderTartget = NULL; - m_bRgbByteOrder = bRgbByteOrder; - m_pOriDevice = pOriDevice; - m_bGroupKnockout = bGroupKnockout; - m_FillFlags = 0; - InitPlatform(); -} - -CFX_AggDeviceDriver::~CFX_AggDeviceDriver() { - delete m_pClipRgn; - for (int i = 0; i < m_StateStack.GetSize(); i++) - delete m_StateStack[i]; - DestroyPlatform(); -} - -uint8_t* CFX_AggDeviceDriver::GetBuffer() const { - return m_pBitmap->GetBuffer(); -} - -#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ -void CFX_AggDeviceDriver::InitPlatform() {} - -void CFX_AggDeviceDriver::DestroyPlatform() {} - -FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - return FALSE; -} // _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ -#endif - -int CFX_AggDeviceDriver::GetDeviceCaps(int caps_id) { - switch (caps_id) { - case FXDC_DEVICE_CLASS: - return FXDC_DISPLAY; - case FXDC_PIXEL_WIDTH: - return m_pBitmap->GetWidth(); - case FXDC_PIXEL_HEIGHT: - return m_pBitmap->GetHeight(); - case FXDC_BITS_PIXEL: - return m_pBitmap->GetBPP(); - case FXDC_HORZ_SIZE: - case FXDC_VERT_SIZE: - return 0; - case FXDC_RENDER_CAPS: { - int flags = FXRC_GET_BITS | FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE | - FXRC_BLEND_MODE | FXRC_SOFT_CLIP; - if (m_pBitmap->HasAlpha()) { - flags |= FXRC_ALPHA_OUTPUT; - } else if (m_pBitmap->IsAlphaMask()) { - if (m_pBitmap->GetBPP() == 1) { - flags |= FXRC_BITMASK_OUTPUT; - } else { - flags |= FXRC_BYTEMASK_OUTPUT; - } - } - if (m_pBitmap->IsCmykImage()) { - flags |= FXRC_CMYK_OUTPUT; - } - return flags; - } - case FXDC_DITHER_BITS: - return m_DitherBits; - } - return 0; -} - -void CFX_AggDeviceDriver::SaveState() { - CFX_ClipRgn* pClip = NULL; - if (m_pClipRgn) { - pClip = new CFX_ClipRgn(*m_pClipRgn); - } - m_StateStack.Add(pClip); -} - -void CFX_AggDeviceDriver::RestoreState(FX_BOOL bKeepSaved) { - if (m_StateStack.GetSize() == 0) { - delete m_pClipRgn; - m_pClipRgn = NULL; - return; - } - CFX_ClipRgn* pSavedClip = m_StateStack[m_StateStack.GetSize() - 1]; - delete m_pClipRgn; - m_pClipRgn = NULL; - if (bKeepSaved) { - if (pSavedClip) { - m_pClipRgn = new CFX_ClipRgn(*pSavedClip); - } - } else { - m_StateStack.RemoveAt(m_StateStack.GetSize() - 1); - m_pClipRgn = pSavedClip; - } -} - -void CFX_AggDeviceDriver::SetClipMask(agg::rasterizer_scanline_aa& rasterizer) { - FX_RECT path_rect(rasterizer.min_x(), rasterizer.min_y(), - rasterizer.max_x() + 1, rasterizer.max_y() + 1); - path_rect.Intersect(m_pClipRgn->GetBox()); - CFX_DIBitmapRef mask; - CFX_DIBitmap* pThisLayer = mask.New(); - if (!pThisLayer) { - return; - } - pThisLayer->Create(path_rect.Width(), path_rect.Height(), FXDIB_8bppMask); - pThisLayer->Clear(0); - agg::rendering_buffer raw_buf(pThisLayer->GetBuffer(), pThisLayer->GetWidth(), - pThisLayer->GetHeight(), - pThisLayer->GetPitch()); - agg::pixfmt_gray8 pixel_buf(raw_buf); - agg::renderer_base base_buf(pixel_buf); - agg::renderer_scanline_aa_offset > - final_render(base_buf, path_rect.left, path_rect.top); - final_render.color(agg::gray8(255)); - agg::scanline_u8 scanline; - agg::render_scanlines(rasterizer, scanline, final_render, - (m_FillFlags & FXFILL_NOPATHSMOOTH) != 0); - m_pClipRgn->IntersectMaskF(path_rect.left, path_rect.top, mask); -} - -FX_BOOL CFX_AggDeviceDriver::SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) { - m_FillFlags = fill_mode; - if (!m_pClipRgn) { - m_pClipRgn = new CFX_ClipRgn(GetDeviceCaps(FXDC_PIXEL_WIDTH), - GetDeviceCaps(FXDC_PIXEL_HEIGHT)); - } - if (pPathData->GetPointCount() == 5 || pPathData->GetPointCount() == 4) { - CFX_FloatRect rectf; - if (pPathData->IsRect(pObject2Device, &rectf)) { - rectf.Intersect( - CFX_FloatRect(0, 0, (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_WIDTH), - (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_HEIGHT))); - FX_RECT rect = rectf.GetOutterRect(); - m_pClipRgn->IntersectRect(rect); - return TRUE; - } - } - CAgg_PathData path_data; - path_data.BuildPath(pPathData, pObject2Device); - path_data.m_PathData.end_poly(); - agg::rasterizer_scanline_aa rasterizer; - rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), - (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); - rasterizer.add_path(path_data.m_PathData); - rasterizer.filling_rule((fill_mode & 3) == FXFILL_WINDING - ? agg::fill_non_zero - : agg::fill_even_odd); - SetClipMask(rasterizer); - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::SetClip_PathStroke( - const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) { - if (!m_pClipRgn) { - m_pClipRgn = new CFX_ClipRgn(GetDeviceCaps(FXDC_PIXEL_WIDTH), - GetDeviceCaps(FXDC_PIXEL_HEIGHT)); - } - CAgg_PathData path_data; - path_data.BuildPath(pPathData, NULL); - agg::rasterizer_scanline_aa rasterizer; - rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), - (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); - RasterizeStroke(rasterizer, path_data.m_PathData, pObject2Device, - pGraphState); - rasterizer.filling_rule(agg::fill_non_zero); - SetClipMask(rasterizer); - return TRUE; -} - -class CFX_Renderer { - private: - int m_Alpha, m_Red, m_Green, m_Blue, m_Gray; - FX_DWORD m_Color; - FX_BOOL m_bFullCover; - FX_BOOL m_bRgbByteOrder; - CFX_DIBitmap* m_pOriDevice; - FX_RECT m_ClipBox; - const CFX_DIBitmap* m_pClipMask; - CFX_DIBitmap* m_pDevice; - const CFX_ClipRgn* m_pClipRgn; - void (CFX_Renderer::*composite_span)(uint8_t*, - int, - int, - int, - uint8_t*, - int, - int, - uint8_t*, - uint8_t*); - - public: - void prepare(unsigned) {} - - void CompositeSpan(uint8_t* dest_scan, - uint8_t* ori_scan, - int Bpp, - FX_BOOL bDestAlpha, - int span_left, - int span_len, - uint8_t* cover_scan, - int clip_left, - int clip_right, - uint8_t* clip_scan) { - ASSERT(!m_pDevice->IsCmykImage()); - int col_start = span_left < clip_left ? clip_left - span_left : 0; - int col_end = (span_left + span_len) < clip_right - ? span_len - : (clip_right - span_left); - if (Bpp) { - dest_scan += col_start * Bpp; - ori_scan += col_start * Bpp; - } else { - dest_scan += col_start / 8; - ori_scan += col_start / 8; - } - if (m_bRgbByteOrder) { - if (Bpp == 4 && bDestAlpha) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - uint8_t dest_alpha = - ori_scan[3] + src_alpha - ori_scan[3] * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (m_bFullCover) { - *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_ratio); - *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, alpha_ratio); - *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, alpha_ratio); - dest_scan++; - ori_scan++; - } else { - int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, alpha_ratio); - int g = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, alpha_ratio); - int b = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, alpha_ratio); - ori_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, r, cover_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, g, cover_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, b, cover_scan[col]); - dest_scan += 2; - } - } - return; - } - if (Bpp == 3 || Bpp == 4) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - int r = FXDIB_ALPHA_MERGE(*ori_scan++, m_Red, src_alpha); - int g = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, src_alpha); - int b = FXDIB_ALPHA_MERGE(*ori_scan, m_Blue, src_alpha); - ori_scan += Bpp - 2; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, r, cover_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, g, cover_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, b, cover_scan[col]); - dest_scan += Bpp - 2; - } - } - return; - } - if (Bpp == 4 && bDestAlpha) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - int src_alpha_covered = src_alpha * cover_scan[col] / 255; - if (src_alpha_covered == 0) { - dest_scan += 4; - continue; - } - if (cover_scan[col] == 255) { - dest_scan[3] = src_alpha_covered; - *dest_scan++ = m_Blue; - *dest_scan++ = m_Green; - *dest_scan = m_Red; - dest_scan += 2; - continue; - } else { - if (dest_scan[3] == 0) { - dest_scan[3] = src_alpha_covered; - *dest_scan++ = m_Blue; - *dest_scan++ = m_Green; - *dest_scan = m_Red; - dest_scan += 2; - continue; - } - uint8_t cover = cover_scan[col]; - dest_scan[3] = FXDIB_ALPHA_MERGE(dest_scan[3], src_alpha, cover); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, cover); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, cover); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, cover); - dest_scan += 2; - } - } - return; - } - if (Bpp == 3 || Bpp == 4) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - if (m_bFullCover) { - *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, src_alpha); - *dest_scan++ = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, src_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan, m_Red, src_alpha); - dest_scan += Bpp - 2; - ori_scan += Bpp - 2; - continue; - } - int b = FXDIB_ALPHA_MERGE(*ori_scan++, m_Blue, src_alpha); - int g = FXDIB_ALPHA_MERGE(*ori_scan++, m_Green, src_alpha); - int r = FXDIB_ALPHA_MERGE(*ori_scan, m_Red, src_alpha); - ori_scan += Bpp - 2; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, b, cover_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, g, cover_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, r, cover_scan[col]); - dest_scan += Bpp - 2; - continue; - } - return; - } - if (Bpp == 1) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - if (m_bFullCover) { - *dest_scan = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha); - } else { - int gray = FXDIB_ALPHA_MERGE(*ori_scan++, m_Gray, src_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, cover_scan[col]); - dest_scan++; - } - } - } else { - int index = 0; - if (m_pDevice->GetPalette()) { - for (int i = 0; i < 2; i++) { - if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { - index = i; - } - } - } else { - index = ((uint8_t)m_Color == 0xff) ? 1 : 0; - } - uint8_t* dest_scan1 = dest_scan; - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - if (src_alpha) { - if (!index) { - *dest_scan1 &= ~(1 << (7 - (col + span_left) % 8)); - } else { - *dest_scan1 |= 1 << (7 - (col + span_left) % 8); - } - } - dest_scan1 = dest_scan + (span_left % 8 + col - col_start + 1) / 8; - } - } - } - - void CompositeSpan1bpp(uint8_t* dest_scan, - int Bpp, - int span_left, - int span_len, - uint8_t* cover_scan, - int clip_left, - int clip_right, - uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan) { - ASSERT(!m_bRgbByteOrder); - ASSERT(!m_pDevice->IsCmykImage()); - int col_start = span_left < clip_left ? clip_left - span_left : 0; - int col_end = (span_left + span_len) < clip_right - ? span_len - : (clip_right - span_left); - dest_scan += col_start / 8; - int index = 0; - if (m_pDevice->GetPalette()) { - for (int i = 0; i < 2; i++) { - if (FXARGB_TODIB(m_pDevice->GetPalette()[i]) == m_Color) { - index = i; - } - } - } else { - index = ((uint8_t)m_Color == 0xff) ? 1 : 0; - } - uint8_t* dest_scan1 = dest_scan; - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - if (src_alpha) { - if (!index) { - *dest_scan1 &= ~(1 << (7 - (col + span_left) % 8)); - } else { - *dest_scan1 |= 1 << (7 - (col + span_left) % 8); - } - } - dest_scan1 = dest_scan + (span_left % 8 + col - col_start + 1) / 8; - } - } - - void CompositeSpanGray(uint8_t* dest_scan, - int Bpp, - int span_left, - int span_len, - uint8_t* cover_scan, - int clip_left, - int clip_right, - uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan) { - ASSERT(!m_bRgbByteOrder); - int col_start = span_left < clip_left ? clip_left - span_left : 0; - int col_end = (span_left + span_len) < clip_right - ? span_len - : (clip_right - span_left); - dest_scan += col_start; - if (dest_extra_alpha_scan) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (m_bFullCover) { - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - } else { - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - } - if (src_alpha) { - if (src_alpha == 255) { - *dest_scan = m_Gray; - *dest_extra_alpha_scan = m_Alpha; - } else { - uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - - (*dest_extra_alpha_scan) * src_alpha / 255; - *dest_extra_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha_ratio); - dest_scan++; - continue; - } - } - dest_extra_alpha_scan++; - dest_scan++; - } - } else { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - if (src_alpha) { - if (src_alpha == 255) { - *dest_scan = m_Gray; - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, src_alpha); - } - } - dest_scan++; - } - } - } - - void CompositeSpanARGB(uint8_t* dest_scan, - int Bpp, - int span_left, - int span_len, - uint8_t* cover_scan, - int clip_left, - int clip_right, - uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan) { - int col_start = span_left < clip_left ? clip_left - span_left : 0; - int col_end = (span_left + span_len) < clip_right - ? span_len - : (clip_right - span_left); - dest_scan += col_start * Bpp; - if (m_bRgbByteOrder) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (m_bFullCover) { - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - } else { - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - } - if (src_alpha) { - if (src_alpha == 255) { - *(FX_DWORD*)dest_scan = m_Color; - } else { - uint8_t dest_alpha = - dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); - dest_scan += 2; - continue; - } - } - dest_scan += 4; - } - return; - } - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (m_bFullCover) { - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - } else { - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - } - if (src_alpha) { - if (src_alpha == 255) { - *(FX_DWORD*)dest_scan = m_Color; - } else { - if (dest_scan[3] == 0) { - dest_scan[3] = src_alpha; - *dest_scan++ = m_Blue; - *dest_scan++ = m_Green; - *dest_scan = m_Red; - dest_scan += 2; - continue; - } - uint8_t dest_alpha = - dest_scan[3] + src_alpha - dest_scan[3] * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); - dest_scan += 2; - continue; - } - } - dest_scan += Bpp; - } - } - - void CompositeSpanRGB(uint8_t* dest_scan, - int Bpp, - int span_left, - int span_len, - uint8_t* cover_scan, - int clip_left, - int clip_right, - uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan) { - int col_start = span_left < clip_left ? clip_left - span_left : 0; - int col_end = (span_left + span_len) < clip_right - ? span_len - : (clip_right - span_left); - dest_scan += col_start * Bpp; - if (m_bRgbByteOrder) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - if (src_alpha) { - if (src_alpha == 255) { - if (Bpp == 4) { - *(FX_DWORD*)dest_scan = m_Color; - } else if (Bpp == 3) { - *dest_scan++ = m_Red; - *dest_scan++ = m_Green; - *dest_scan++ = m_Blue; - continue; - } - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); - dest_scan += Bpp - 2; - continue; - } - } - dest_scan += Bpp; - } - return; - } - if (Bpp == 3 && dest_extra_alpha_scan) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (m_bFullCover) { - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - } else { - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - } - if (src_alpha) { - if (src_alpha == 255) { - *dest_scan++ = (uint8_t)m_Blue; - *dest_scan++ = (uint8_t)m_Green; - *dest_scan++ = (uint8_t)m_Red; - *dest_extra_alpha_scan++ = (uint8_t)m_Alpha; - continue; - } else { - uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - - (*dest_extra_alpha_scan) * src_alpha / 255; - *dest_extra_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); - dest_scan++; - continue; - } - } - dest_extra_alpha_scan++; - dest_scan += Bpp; - } - } else { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (m_bFullCover) { - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - } else { - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - } - if (src_alpha) { - if (src_alpha == 255) { - if (Bpp == 4) { - *(FX_DWORD*)dest_scan = m_Color; - } else if (Bpp == 3) { - *dest_scan++ = m_Blue; - *dest_scan++ = m_Green; - *dest_scan++ = m_Red; - continue; - } - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); - dest_scan += Bpp - 2; - continue; - } - } - dest_scan += Bpp; - } - } - } - - void CompositeSpanCMYK(uint8_t* dest_scan, - int Bpp, - int span_left, - int span_len, - uint8_t* cover_scan, - int clip_left, - int clip_right, - uint8_t* clip_scan, - uint8_t* dest_extra_alpha_scan) { - ASSERT(!m_bRgbByteOrder); - int col_start = span_left < clip_left ? clip_left - span_left : 0; - int col_end = (span_left + span_len) < clip_right - ? span_len - : (clip_right - span_left); - dest_scan += col_start * 4; - if (dest_extra_alpha_scan) { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (m_bFullCover) { - if (clip_scan) { - src_alpha = m_Alpha * clip_scan[col] / 255; - } else { - src_alpha = m_Alpha; - } - } else { - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - } - if (src_alpha) { - if (src_alpha == 255) { - *(FX_CMYK*)dest_scan = m_Color; - *dest_extra_alpha_scan = (uint8_t)m_Alpha; - } else { - uint8_t dest_alpha = (*dest_extra_alpha_scan) + src_alpha - - (*dest_extra_alpha_scan) * src_alpha / 255; - *dest_extra_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, alpha_ratio); - dest_scan++; - continue; - } - } - dest_extra_alpha_scan++; - dest_scan += 4; - } - } else { - for (int col = col_start; col < col_end; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = m_Alpha * cover_scan[col] * clip_scan[col] / 255 / 255; - } else { - src_alpha = m_Alpha * cover_scan[col] / 255; - } - if (src_alpha) { - if (src_alpha == 255) { - *(FX_CMYK*)dest_scan = m_Color; - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Red, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Green, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Blue, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, m_Gray, src_alpha); - dest_scan++; - continue; - } - } - dest_scan += 4; - } - } - } - - template - void render(const Scanline& sl) { - if (!m_pOriDevice && !composite_span) { - return; - } - int y = sl.y(); - if (y < m_ClipBox.top || y >= m_ClipBox.bottom) { - return; - } - uint8_t* dest_scan = m_pDevice->GetBuffer() + m_pDevice->GetPitch() * y; - uint8_t* dest_scan_extra_alpha = NULL; - CFX_DIBitmap* pAlphaMask = m_pDevice->m_pAlphaMask; - if (pAlphaMask) { - dest_scan_extra_alpha = - pAlphaMask->GetBuffer() + pAlphaMask->GetPitch() * y; - } - uint8_t* ori_scan = NULL; - if (m_pOriDevice) { - ori_scan = m_pOriDevice->GetBuffer() + m_pOriDevice->GetPitch() * y; - } - int Bpp = m_pDevice->GetBPP() / 8; - FX_BOOL bDestAlpha = m_pDevice->HasAlpha() || m_pDevice->IsAlphaMask(); - unsigned num_spans = sl.num_spans(); - typename Scanline::const_iterator span = sl.begin(); - while (1) { - int x = span->x; - ASSERT(span->len > 0); - uint8_t* dest_pos = NULL; - uint8_t* dest_extra_alpha_pos = NULL; - uint8_t* ori_pos = NULL; - if (Bpp) { - ori_pos = ori_scan ? ori_scan + x * Bpp : NULL; - dest_pos = dest_scan + x * Bpp; - dest_extra_alpha_pos = - dest_scan_extra_alpha ? dest_scan_extra_alpha + x : NULL; - } else { - dest_pos = dest_scan + x / 8; - ori_pos = ori_scan ? ori_scan + x / 8 : NULL; - } - uint8_t* clip_pos = NULL; - if (m_pClipMask) { - clip_pos = m_pClipMask->GetBuffer() + - (y - m_ClipBox.top) * m_pClipMask->GetPitch() + x - - m_ClipBox.left; - } - if (ori_pos) { - CompositeSpan(dest_pos, ori_pos, Bpp, bDestAlpha, x, span->len, - span->covers, m_ClipBox.left, m_ClipBox.right, clip_pos); - } else { - (this->*composite_span)(dest_pos, Bpp, x, span->len, span->covers, - m_ClipBox.left, m_ClipBox.right, clip_pos, - dest_extra_alpha_pos); - } - if (--num_spans == 0) { - break; - } - ++span; - } - } - - FX_BOOL Init(CFX_DIBitmap* pDevice, - CFX_DIBitmap* pOriDevice, - const CFX_ClipRgn* pClipRgn, - FX_DWORD color, - FX_BOOL bFullCover, - FX_BOOL bRgbByteOrder, - int alpha_flag = 0, - void* pIccTransform = NULL) { - m_pDevice = pDevice; - m_pClipRgn = pClipRgn; - composite_span = NULL; - m_bRgbByteOrder = bRgbByteOrder; - m_pOriDevice = pOriDevice; - if (m_pClipRgn) { - m_ClipBox = m_pClipRgn->GetBox(); - } else { - m_ClipBox.left = m_ClipBox.top = 0; - m_ClipBox.right = m_pDevice->GetWidth(); - m_ClipBox.bottom = m_pDevice->GetHeight(); - } - m_pClipMask = NULL; - if (m_pClipRgn && m_pClipRgn->GetType() == CFX_ClipRgn::MaskF) { - m_pClipMask = m_pClipRgn->GetMask(); - } - m_bFullCover = bFullCover; - FX_BOOL bObjectCMYK = FXGETFLAG_COLORTYPE(alpha_flag); - FX_BOOL bDeviceCMYK = pDevice->IsCmykImage(); - m_Alpha = bObjectCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); - ICodec_IccModule* pIccModule = NULL; - if (!CFX_GEModule::Get()->GetCodecModule() || - !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - pIccTransform = NULL; - } else { - pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - } - if (m_pDevice->GetBPP() == 8) { - ASSERT(!m_bRgbByteOrder); - composite_span = &CFX_Renderer::CompositeSpanGray; - if (m_pDevice->IsAlphaMask()) { - m_Gray = 255; - } else { - if (pIccTransform) { - uint8_t gray; - color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); - pIccModule->TranslateScanline(pIccTransform, &gray, - (const uint8_t*)&color, 1); - m_Gray = gray; - } else { - if (bObjectCMYK) { - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), - FXSYS_GetYValue(color), FXSYS_GetKValue(color), - r, g, b); - m_Gray = FXRGB2GRAY(r, g, b); - } else { - m_Gray = - FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FXARGB_B(color)); - } - } - } - return TRUE; - } - if (bDeviceCMYK) { - ASSERT(!m_bRgbByteOrder); - composite_span = &CFX_Renderer::CompositeSpanCMYK; - if (bObjectCMYK) { - m_Color = FXCMYK_TODIB(color); - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&m_Color, - (const uint8_t*)&m_Color, 1); - } - } else { - if (!pIccTransform) { - return FALSE; - } - color = FXARGB_TODIB(color); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&m_Color, - (const uint8_t*)&color, 1); - } - m_Red = ((uint8_t*)&m_Color)[0]; - m_Green = ((uint8_t*)&m_Color)[1]; - m_Blue = ((uint8_t*)&m_Color)[2]; - m_Gray = ((uint8_t*)&m_Color)[3]; - } else { - composite_span = (pDevice->GetFormat() == FXDIB_Argb) - ? &CFX_Renderer::CompositeSpanARGB - : &CFX_Renderer::CompositeSpanRGB; - if (pIccTransform) { - color = bObjectCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&m_Color, - (const uint8_t*)&color, 1); - ((uint8_t*)&m_Color)[3] = m_Alpha; - m_Red = ((uint8_t*)&m_Color)[2]; - m_Green = ((uint8_t*)&m_Color)[1]; - m_Blue = ((uint8_t*)&m_Color)[0]; - if (m_bRgbByteOrder) { - m_Color = FXARGB_TODIB(m_Color); - m_Color = FXARGB_TOBGRORDERDIB(m_Color); - } - } else { - if (bObjectCMYK) { - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), - FXSYS_GetYValue(color), FXSYS_GetKValue(color), r, - g, b); - m_Color = FXARGB_MAKE(m_Alpha, r, g, b); - if (m_bRgbByteOrder) { - m_Color = FXARGB_TOBGRORDERDIB(m_Color); - } else { - m_Color = FXARGB_TODIB(m_Color); - } - m_Red = r; - m_Green = g; - m_Blue = b; - } else { - if (m_bRgbByteOrder) { - m_Color = FXARGB_TOBGRORDERDIB(color); - } else { - m_Color = FXARGB_TODIB(color); - } - ArgbDecode(color, m_Alpha, m_Red, m_Green, m_Blue); - } - } - } - if (m_pDevice->GetBPP() == 1) { - composite_span = &CFX_Renderer::CompositeSpan1bpp; - } - return TRUE; - } -}; - -FX_BOOL CFX_AggDeviceDriver::RenderRasterizer( - agg::rasterizer_scanline_aa& rasterizer, - FX_DWORD color, - FX_BOOL bFullCover, - FX_BOOL bGroupKnockout, - int alpha_flag, - void* pIccTransform) { - CFX_DIBitmap* pt = bGroupKnockout ? m_pOriDevice : NULL; - CFX_Renderer render; - if (!render.Init(m_pBitmap, pt, m_pClipRgn, color, bFullCover, - m_bRgbByteOrder, alpha_flag, pIccTransform)) { - return FALSE; - } - agg::scanline_u8 scanline; - agg::render_scanlines(rasterizer, scanline, render, - (m_FillFlags & FXFILL_NOPATHSMOOTH) != 0); - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - if (!GetBuffer()) { - return TRUE; - } - m_FillFlags = fill_mode; - if ((fill_mode & 3) && fill_color) { - CAgg_PathData path_data; - path_data.BuildPath(pPathData, pObject2Device); - agg::rasterizer_scanline_aa rasterizer; - rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), - (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); - rasterizer.add_path(path_data.m_PathData); - rasterizer.filling_rule((fill_mode & 3) == FXFILL_WINDING - ? agg::fill_non_zero - : agg::fill_even_odd); - if (!RenderRasterizer(rasterizer, fill_color, fill_mode & FXFILL_FULLCOVER, - FALSE, alpha_flag, pIccTransform)) { - return FALSE; - } - } - int stroke_alpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? FXGETFLAG_ALPHA_STROKE(alpha_flag) - : FXARGB_A(stroke_color); - if (pGraphState && stroke_alpha) { - if (fill_mode & FX_ZEROAREA_FILL) { - CAgg_PathData path_data; - path_data.BuildPath(pPathData, pObject2Device); - agg::rasterizer_scanline_aa rasterizer; - rasterizer.clip_box(0.0f, 0.0f, - (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), - (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); - RasterizeStroke(rasterizer, path_data.m_PathData, NULL, pGraphState, 1, - FALSE, fill_mode & FX_STROKE_TEXT_MODE); - int fill_flag = FXGETFLAG_COLORTYPE(alpha_flag) << 8 | - FXGETFLAG_ALPHA_STROKE(alpha_flag); - if (!RenderRasterizer(rasterizer, stroke_color, - fill_mode & FXFILL_FULLCOVER, m_bGroupKnockout, - fill_flag, pIccTransform)) { - return FALSE; - } - return TRUE; - } - CFX_Matrix matrix1, matrix2; - if (pObject2Device) { - matrix1.a = std::max(FXSYS_fabs(pObject2Device->a), - FXSYS_fabs(pObject2Device->b)); - matrix1.d = matrix1.a; - matrix2.Set(pObject2Device->a / matrix1.a, pObject2Device->b / matrix1.a, - pObject2Device->c / matrix1.d, pObject2Device->d / matrix1.d, - 0, 0); - CFX_Matrix mtRervese; - mtRervese.SetReverse(matrix2); - matrix1 = *pObject2Device; - matrix1.Concat(mtRervese); - } - CAgg_PathData path_data; - path_data.BuildPath(pPathData, &matrix1); - agg::rasterizer_scanline_aa rasterizer; - rasterizer.clip_box(0.0f, 0.0f, (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_WIDTH)), - (FX_FLOAT)(GetDeviceCaps(FXDC_PIXEL_HEIGHT))); - RasterizeStroke(rasterizer, path_data.m_PathData, &matrix2, pGraphState, - matrix1.a, FALSE, fill_mode & FX_STROKE_TEXT_MODE); - int fill_flag = FXGETFLAG_COLORTYPE(alpha_flag) << 8 | - FXGETFLAG_ALPHA_STROKE(alpha_flag); - if (!RenderRasterizer(rasterizer, stroke_color, - fill_mode & FXFILL_FULLCOVER, m_bGroupKnockout, - fill_flag, pIccTransform)) { - return FALSE; - } - } - return TRUE; -} - -void RgbByteOrderSetPixel(CFX_DIBitmap* pBitmap, int x, int y, FX_DWORD argb) { - if (x < 0 || x >= pBitmap->GetWidth() || y < 0 || y >= pBitmap->GetHeight()) { - return; - } - uint8_t* pos = (uint8_t*)pBitmap->GetBuffer() + y * pBitmap->GetPitch() + - x * pBitmap->GetBPP() / 8; - if (pBitmap->GetFormat() == FXDIB_Argb) { - FXARGB_SETRGBORDERDIB(pos, ArgbGamma(argb)); - } else { - int alpha = FXARGB_A(argb); - pos[0] = (FXARGB_R(argb) * alpha + pos[0] * (255 - alpha)) / 255; - pos[1] = (FXARGB_G(argb) * alpha + pos[1] * (255 - alpha)) / 255; - pos[2] = (FXARGB_B(argb) * alpha + pos[2] * (255 - alpha)) / 255; - } -} - -void RgbByteOrderCompositeRect(CFX_DIBitmap* pBitmap, - int left, - int top, - int width, - int height, - FX_ARGB argb) { - int src_alpha = FXARGB_A(argb); - if (src_alpha == 0) { - return; - } - FX_RECT rect(left, top, left + width, top + height); - rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); - width = rect.Width(); - int src_r = FXARGB_R(argb), src_g = FXARGB_G(argb), src_b = FXARGB_B(argb); - int Bpp = pBitmap->GetBPP() / 8; - FX_BOOL bAlpha = pBitmap->HasAlpha(); - int dib_argb = FXARGB_TOBGRORDERDIB(argb); - uint8_t* pBuffer = pBitmap->GetBuffer(); - if (src_alpha == 255) { - for (int row = rect.top; row < rect.bottom; row++) { - uint8_t* dest_scan = - pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; - if (Bpp == 4) { - FX_DWORD* scan = (FX_DWORD*)dest_scan; - for (int col = 0; col < width; col++) { - *scan++ = dib_argb; - } - } else { - for (int col = 0; col < width; col++) { - *dest_scan++ = src_r; - *dest_scan++ = src_g; - *dest_scan++ = src_b; - } - } - } - return; - } - src_r = FX_GAMMA(src_r); - src_g = FX_GAMMA(src_g); - src_b = FX_GAMMA(src_b); - for (int row = rect.top; row < rect.bottom; row++) { - uint8_t* dest_scan = pBuffer + row * pBitmap->GetPitch() + rect.left * Bpp; - if (bAlpha) { - for (int col = 0; col < width; col++) { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETRGBORDERDIB(dest_scan, - FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); - dest_scan += 4; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan += 2; - } - } else { - for (int col = 0; col < width; col++) { - *dest_scan = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(*dest_scan), src_r, src_alpha)); - dest_scan++; - *dest_scan = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(*dest_scan), src_g, src_alpha)); - dest_scan++; - *dest_scan = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(*dest_scan), src_b, src_alpha)); - dest_scan++; - if (Bpp == 4) { - dest_scan++; - } - } - } - } -} - -void RgbByteOrderTransferBitmap(CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top) { - if (!pBitmap) { - return; - } - pBitmap->GetOverlapRect(dest_left, dest_top, width, height, - pSrcBitmap->GetWidth(), pSrcBitmap->GetHeight(), - src_left, src_top, NULL); - if (width == 0 || height == 0) { - return; - } - int Bpp = pBitmap->GetBPP() / 8; - FXDIB_Format dest_format = pBitmap->GetFormat(); - FXDIB_Format src_format = pSrcBitmap->GetFormat(); - int pitch = pBitmap->GetPitch(); - uint8_t* buffer = pBitmap->GetBuffer(); - if (dest_format == src_format) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = buffer + (dest_top + row) * pitch + dest_left * Bpp; - uint8_t* src_scan = - (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; - if (Bpp == 4) { - for (int col = 0; col < width; col++) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_scan[3], src_scan[0], - src_scan[1], src_scan[2])); - dest_scan += 4; - src_scan += 4; - } - } else { - for (int col = 0; col < width; col++) { - *dest_scan++ = src_scan[2]; - *dest_scan++ = src_scan[1]; - *dest_scan++ = src_scan[0]; - src_scan += 3; - } - } - } - return; - } - uint8_t* dest_buf = buffer + dest_top * pitch + dest_left * Bpp; - if (dest_format == FXDIB_Rgb) { - if (src_format == FXDIB_Rgb32) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * pitch; - uint8_t* src_scan = - (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 4; - for (int col = 0; col < width; col++) { - *dest_scan++ = src_scan[2]; - *dest_scan++ = src_scan[1]; - *dest_scan++ = src_scan[0]; - src_scan += 4; - } - } - } else { - ASSERT(FALSE); - } - } else if (dest_format == FXDIB_Argb || dest_format == FXDIB_Rgb32) { - if (src_format == FXDIB_Rgb) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = (uint8_t*)(dest_buf + row * pitch); - uint8_t* src_scan = - (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left * 3; - if (src_format == FXDIB_Argb) { - for (int col = 0; col < width; col++) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, FX_GAMMA(src_scan[0]), - FX_GAMMA(src_scan[1]), - FX_GAMMA(src_scan[2]))); - dest_scan += 4; - src_scan += 3; - } - } else { - for (int col = 0; col < width; col++) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], - src_scan[2])); - dest_scan += 4; - src_scan += 3; - } - } - } - } else if (src_format == FXDIB_Rgb32) { - ASSERT(dest_format == FXDIB_Argb); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * pitch; - uint8_t* src_scan = - (uint8_t*)(pSrcBitmap->GetScanline(src_top + row) + src_left * 4); - for (int col = 0; col < width; col++) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[0], src_scan[1], - src_scan[2])); - src_scan += 4; - dest_scan += 4; - } - } - } - } else { - ASSERT(FALSE); - } -} - -FX_ARGB _DefaultCMYK2ARGB(FX_CMYK cmyk, uint8_t alpha) { - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), - FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, g, b); - return ArgbEncode(alpha, r, g, b); -} - -FX_BOOL _DibSetPixel(CFX_DIBitmap* pDevice, - int x, - int y, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - FX_BOOL bObjCMYK = FXGETFLAG_COLORTYPE(alpha_flag); - int alpha = bObjCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - color = bObjCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&color, - (uint8_t*)&color, 1); - color = bObjCMYK ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); - if (!pDevice->IsCmykImage()) { - color = (color & 0xffffff) | (alpha << 24); - } - } else { - if (pDevice->IsCmykImage()) { - if (!bObjCMYK) { - return FALSE; - } - } else { - if (bObjCMYK) { - color = _DefaultCMYK2ARGB(color, alpha); - } - } - } - pDevice->SetPixel(x, y, color); - if (pDevice->m_pAlphaMask) { - pDevice->m_pAlphaMask->SetPixel(x, y, alpha << 24); - } - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::SetPixel(int x, - int y, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - if (!m_pBitmap->GetBuffer()) { - return TRUE; - } - if (!CFX_GEModule::Get()->GetCodecModule() || - !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - pIccTransform = NULL; - } - if (!m_pClipRgn) { - if (m_bRgbByteOrder) { - RgbByteOrderSetPixel(m_pBitmap, x, y, color); - } else { - return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); - } - } else if (m_pClipRgn->GetBox().Contains(x, y)) { - if (m_pClipRgn->GetType() == CFX_ClipRgn::RectI) { - if (m_bRgbByteOrder) { - RgbByteOrderSetPixel(m_pBitmap, x, y, color); - } else { - return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); - } - } else if (m_pClipRgn->GetType() == CFX_ClipRgn::MaskF) { - const CFX_DIBitmap* pMask = m_pClipRgn->GetMask(); - FX_BOOL bCMYK = FXGETFLAG_COLORTYPE(alpha_flag); - int new_alpha = - bCMYK ? FXGETFLAG_ALPHA_FILL(alpha_flag) : FXARGB_A(color); - new_alpha = new_alpha * pMask->GetScanline(y)[x] / 255; - if (m_bRgbByteOrder) { - RgbByteOrderSetPixel(m_pBitmap, x, y, - (color & 0xffffff) | (new_alpha << 24)); - return TRUE; - } - if (bCMYK) { - FXSETFLAG_ALPHA_FILL(alpha_flag, new_alpha); - } else { - color = (color & 0xffffff) | (new_alpha << 24); - } - return _DibSetPixel(m_pBitmap, x, y, color, alpha_flag, pIccTransform); - } - } - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - if (!m_pBitmap->GetBuffer()) { - return TRUE; - } - FX_RECT clip_rect; - GetClipBox(&clip_rect); - FX_RECT draw_rect = clip_rect; - if (pRect) { - draw_rect.Intersect(*pRect); - } - if (draw_rect.IsEmpty()) { - return TRUE; - } - if (!m_pClipRgn || m_pClipRgn->GetType() == CFX_ClipRgn::RectI) { - if (m_bRgbByteOrder) { - RgbByteOrderCompositeRect(m_pBitmap, draw_rect.left, draw_rect.top, - draw_rect.Width(), draw_rect.Height(), - fill_color); - } else { - m_pBitmap->CompositeRect(draw_rect.left, draw_rect.top, draw_rect.Width(), - draw_rect.Height(), fill_color, alpha_flag, - pIccTransform); - } - return TRUE; - } - m_pBitmap->CompositeMask( - draw_rect.left, draw_rect.top, draw_rect.Width(), draw_rect.Height(), - (const CFX_DIBitmap*)m_pClipRgn->GetMask(), fill_color, - draw_rect.left - clip_rect.left, draw_rect.top - clip_rect.top, - FXDIB_BLEND_NORMAL, NULL, m_bRgbByteOrder, alpha_flag, pIccTransform); - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::GetClipBox(FX_RECT* pRect) { - if (!m_pClipRgn) { - pRect->left = pRect->top = 0; - pRect->right = GetDeviceCaps(FXDC_PIXEL_WIDTH); - pRect->bottom = GetDeviceCaps(FXDC_PIXEL_HEIGHT); - return TRUE; - } - *pRect = m_pClipRgn->GetBox(); - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform, - FX_BOOL bDEdge) { - if (!m_pBitmap->GetBuffer()) { - return TRUE; - } - if (bDEdge) { - if (m_bRgbByteOrder) { - RgbByteOrderTransferBitmap(pBitmap, 0, 0, pBitmap->GetWidth(), - pBitmap->GetHeight(), m_pBitmap, left, top); - } else { - return pBitmap->TransferBitmap(0, 0, pBitmap->GetWidth(), - pBitmap->GetHeight(), m_pBitmap, left, top, - pIccTransform); - } - return TRUE; - } - FX_RECT rect(left, top, left + pBitmap->GetWidth(), - top + pBitmap->GetHeight()); - CFX_DIBitmap* pBack = NULL; - if (m_pOriDevice) { - pBack = m_pOriDevice->Clone(&rect); - if (!pBack) { - return TRUE; - } - pBack->CompositeBitmap(0, 0, pBack->GetWidth(), pBack->GetHeight(), - m_pBitmap, 0, 0); - } else { - pBack = m_pBitmap->Clone(&rect); - } - if (!pBack) { - return TRUE; - } - FX_BOOL bRet = TRUE; - left = left >= 0 ? 0 : left; - top = top >= 0 ? 0 : top; - if (m_bRgbByteOrder) { - RgbByteOrderTransferBitmap(pBitmap, 0, 0, rect.Width(), rect.Height(), - pBack, left, top); - } else { - bRet = pBitmap->TransferBitmap(0, 0, rect.Width(), rect.Height(), pBack, - left, top, pIccTransform); - } - delete pBack; - return bRet; -} - -FX_BOOL CFX_AggDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD argb, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform) { - if (!m_pBitmap->GetBuffer()) { - return TRUE; - } - if (pBitmap->IsAlphaMask()) - return m_pBitmap->CompositeMask( - left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, argb, - pSrcRect->left, pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, - alpha_flag, pIccTransform); - return m_pBitmap->CompositeBitmap( - left, top, pSrcRect->Width(), pSrcRect->Height(), pBitmap, pSrcRect->left, - pSrcRect->top, blend_type, m_pClipRgn, m_bRgbByteOrder, pIccTransform); -} - -FX_BOOL CFX_AggDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource, - FX_DWORD argb, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (!m_pBitmap->GetBuffer()) { - return TRUE; - } - if (dest_width == pSource->GetWidth() && - dest_height == pSource->GetHeight()) { - FX_RECT rect(0, 0, dest_width, dest_height); - return SetDIBits(pSource, argb, &rect, dest_left, dest_top, blend_type, - alpha_flag, pIccTransform); - } - FX_RECT dest_rect(dest_left, dest_top, dest_left + dest_width, - dest_top + dest_height); - dest_rect.Normalize(); - FX_RECT dest_clip = dest_rect; - dest_clip.Intersect(*pClipRect); - CFX_BitmapComposer composer; - composer.Compose(m_pBitmap, m_pClipRgn, 255, argb, dest_clip, FALSE, FALSE, - FALSE, m_bRgbByteOrder, alpha_flag, pIccTransform, - blend_type); - dest_clip.Offset(-dest_rect.left, -dest_rect.top); - CFX_ImageStretcher stretcher; - if (stretcher.Start(&composer, pSource, dest_width, dest_height, dest_clip, - flags)) { - stretcher.Continue(NULL); - } - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::StartDIBits(const CFX_DIBSource* pSource, - int bitmap_alpha, - FX_DWORD argb, - const CFX_Matrix* pMatrix, - FX_DWORD render_flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (!m_pBitmap->GetBuffer()) { - return TRUE; - } - CFX_ImageRenderer* pRenderer = new CFX_ImageRenderer; - pRenderer->Start(m_pBitmap, m_pClipRgn, pSource, bitmap_alpha, argb, pMatrix, - render_flags, m_bRgbByteOrder, alpha_flag, pIccTransform); - handle = pRenderer; - return TRUE; -} - -FX_BOOL CFX_AggDeviceDriver::ContinueDIBits(void* pHandle, IFX_Pause* pPause) { - if (!m_pBitmap->GetBuffer()) { - return TRUE; - } - return ((CFX_ImageRenderer*)pHandle)->Continue(pPause); -} - -void CFX_AggDeviceDriver::CancelDIBits(void* pHandle) { - if (!m_pBitmap->GetBuffer()) { - return; - } - delete (CFX_ImageRenderer*)pHandle; -} - -CFX_FxgeDevice::CFX_FxgeDevice() { - m_bOwnedBitmap = FALSE; -} - -bool CFX_FxgeDevice::Attach(CFX_DIBitmap* pBitmap, - int dither_bits, - bool bRgbByteOrder, - CFX_DIBitmap* pOriDevice, - bool bGroupKnockout) { - if (!pBitmap) { - return false; - } - SetBitmap(pBitmap); - IFX_RenderDeviceDriver* pDriver = new CFX_AggDeviceDriver( - pBitmap, dither_bits, bRgbByteOrder, pOriDevice, bGroupKnockout); - SetDeviceDriver(pDriver); - return true; -} - -bool CFX_FxgeDevice::Create(int width, - int height, - FXDIB_Format format, - int dither_bits, - CFX_DIBitmap* pOriDevice) { - m_bOwnedBitmap = true; - CFX_DIBitmap* pBitmap = new CFX_DIBitmap; - if (!pBitmap->Create(width, height, format)) { - delete pBitmap; - return false; - } - SetBitmap(pBitmap); - IFX_RenderDeviceDriver* pDriver = - new CFX_AggDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); - SetDeviceDriver(pDriver); - return true; -} - -CFX_FxgeDevice::~CFX_FxgeDevice() { - if (m_bOwnedBitmap) { - delete GetBitmap(); - } -} diff --git a/core/src/fxge/agg/fx_agg_driver.h b/core/src/fxge/agg/fx_agg_driver.h deleted file mode 100644 index ac2dfd02e3..0000000000 --- a/core/src/fxge/agg/fx_agg_driver.h +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_AGG_FX_AGG_DRIVER_H_ -#define CORE_SRC_FXGE_AGG_FX_AGG_DRIVER_H_ - -#include "core/include/fxge/fx_ge.h" -#include "third_party/agg23/agg_clip_liang_barsky.h" -#include "third_party/agg23/agg_path_storage.h" -#include "third_party/agg23/agg_rasterizer_scanline_aa.h" - -class CFX_Matrix; -class CFX_PathData; - -class CAgg_PathData { - public: - CAgg_PathData() {} - ~CAgg_PathData() {} - void BuildPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device); - - agg::path_storage m_PathData; -}; - -class CFX_AggDeviceDriver : public IFX_RenderDeviceDriver { - public: - CFX_AggDeviceDriver(CFX_DIBitmap* pBitmap, - int dither_bits, - FX_BOOL bRgbByteOrder, - CFX_DIBitmap* pOriDevice, - FX_BOOL bGroupKnockout); - ~CFX_AggDeviceDriver() override; - - void InitPlatform(); - void DestroyPlatform(); - - // IFX_RenderDeviceDriver - int GetDeviceCaps(int caps_id) override; - void SaveState() override; - void RestoreState(FX_BOOL bKeepSaved) override; - FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) override; - FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) override; - FX_BOOL DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL SetPixel(int x, - int y, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) override; - FX_BOOL FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_DWORD color, - int alpha_flag, - void* pIccTransform, - int blend_type) override { - return FALSE; - } - FX_BOOL GetClipBox(FX_RECT* pRect) override; - FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform = NULL, - FX_BOOL bDEdge = FALSE) override; - CFX_DIBitmap* GetBackDrop() override { return m_pOriDevice; } - FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform) override; - FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) override; - void CancelDIBits(void* handle) override; - FX_BOOL DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) override; - int GetDriverType() override { return 1; } - - FX_BOOL RenderRasterizer(agg::rasterizer_scanline_aa& rasterizer, - FX_DWORD color, - FX_BOOL bFullCover, - FX_BOOL bGroupKnockout, - int alpha_flag, - void* pIccTransform); - - void SetClipMask(agg::rasterizer_scanline_aa& rasterizer); - - virtual uint8_t* GetBuffer() const; - - private: - CFX_DIBitmap* m_pBitmap; - CFX_ClipRgn* m_pClipRgn; - CFX_ArrayTemplate m_StateStack; - void* m_pPlatformGraphics; - void* m_pPlatformBitmap; - void* m_pDwRenderTartget; - int m_FillFlags; - int m_DitherBits; - FX_BOOL m_bRgbByteOrder; - CFX_DIBitmap* m_pOriDevice; - FX_BOOL m_bGroupKnockout; -}; - -#endif // CORE_SRC_FXGE_AGG_FX_AGG_DRIVER_H_ diff --git a/core/src/fxge/android/fpf_skiafont.cpp b/core/src/fxge/android/fpf_skiafont.cpp deleted file mode 100644 index ba0c40a4f4..0000000000 --- a/core/src/fxge/android/fpf_skiafont.cpp +++ /dev/null @@ -1,217 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#include - -#include "core/include/fxge/fx_freetype.h" -#include "core/src/fxge/android/fpf_skiafont.h" -#include "core/src/fxge/android/fpf_skiafontmgr.h" - -#define FPF_EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em) - -CFPF_SkiaFont::CFPF_SkiaFont() - : m_pFontMgr(NULL), - m_pFontDes(NULL), - m_Face(NULL), - m_dwStyle(0), - m_uCharset(0), - m_dwRefCount(0) {} -CFPF_SkiaFont::~CFPF_SkiaFont() { - if (m_Face) { - FXFT_Done_Face(m_Face); - } -} -void CFPF_SkiaFont::Release() { - if (--m_dwRefCount == 0) { - delete this; - } -} -IFPF_Font* CFPF_SkiaFont::Retain() { - m_dwRefCount++; - return (IFPF_Font*)this; -} -FPF_HFONT CFPF_SkiaFont::GetHandle() { - return NULL; -} -CFX_ByteString CFPF_SkiaFont::GetFamilyName() { - if (!m_Face) { - return CFX_ByteString(); - } - return CFX_ByteString(FXFT_Get_Face_Family_Name(m_Face)); -} -CFX_WideString CFPF_SkiaFont::GetPsName() { - if (!m_Face) { - return CFX_WideString(); - } - return CFX_WideString::FromLocal(FXFT_Get_Postscript_Name(m_Face)); -} -int32_t CFPF_SkiaFont::GetGlyphIndex(FX_WCHAR wUnicode) { - if (!m_Face) { - return wUnicode; - } - if (FXFT_Select_Charmap(m_Face, FXFT_ENCODING_UNICODE)) { - return 0; - } - return FXFT_Get_Char_Index(m_Face, wUnicode); -} -int32_t CFPF_SkiaFont::GetGlyphWidth(int32_t iGlyphIndex) { - if (!m_Face) { - return 0; - } - if (FXFT_Load_Glyph( - m_Face, iGlyphIndex, - FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { - return 0; - } - return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Glyph_HoriAdvance(m_Face)); -} -int32_t CFPF_SkiaFont::GetAscent() const { - if (!m_Face) { - return 0; - } - return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_Ascender(m_Face)); -} -int32_t CFPF_SkiaFont::GetDescent() const { - if (!m_Face) { - return 0; - } - return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_Descender(m_Face)); -} -FX_BOOL CFPF_SkiaFont::GetGlyphBBox(int32_t iGlyphIndex, FX_RECT& rtBBox) { - if (!m_Face) { - return FALSE; - } - if (FXFT_Is_Face_Tricky(m_Face)) { - if (FXFT_Set_Char_Size(m_Face, 0, 1000 * 64, 72, 72)) { - return FALSE; - } - if (FXFT_Load_Glyph(m_Face, iGlyphIndex, - FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { - FXFT_Set_Pixel_Sizes(m_Face, 0, 64); - return FALSE; - } - FXFT_Glyph glyph; - if (FXFT_Get_Glyph(m_Face->glyph, &glyph)) { - FXFT_Set_Pixel_Sizes(m_Face, 0, 64); - return FALSE; - } - FXFT_BBox cbox; - FXFT_Glyph_Get_CBox(glyph, FXFT_GLYPH_BBOX_PIXELS, &cbox); - int32_t x_ppem = m_Face->size->metrics.x_ppem; - int32_t y_ppem = m_Face->size->metrics.y_ppem; - rtBBox.left = FPF_EM_ADJUST(x_ppem, cbox.xMin); - rtBBox.right = FPF_EM_ADJUST(x_ppem, cbox.xMax); - rtBBox.top = FPF_EM_ADJUST(y_ppem, cbox.yMax); - rtBBox.bottom = FPF_EM_ADJUST(y_ppem, cbox.yMin); - rtBBox.top = std::min(rtBBox.top, GetAscent()); - rtBBox.bottom = std::max(rtBBox.bottom, GetDescent()); - FXFT_Done_Glyph(glyph); - return FXFT_Set_Pixel_Sizes(m_Face, 0, 64) == 0; - } - if (FXFT_Load_Glyph( - m_Face, iGlyphIndex, - FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { - return FALSE; - } - rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Glyph_HoriBearingX(m_Face)); - rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Glyph_HoriBearingY(m_Face)); - rtBBox.right = FPF_EM_ADJUST( - FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Glyph_HoriBearingX(m_Face) + FXFT_Get_Glyph_Width(m_Face)); - rtBBox.top = FPF_EM_ADJUST( - FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Glyph_HoriBearingY(m_Face) - FXFT_Get_Glyph_Height(m_Face)); - return TRUE; -} -FX_BOOL CFPF_SkiaFont::GetBBox(FX_RECT& rtBBox) { - if (!m_Face) { - return FALSE; - } - rtBBox.left = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_xMin(m_Face)); - rtBBox.top = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_yMin(m_Face)); - rtBBox.right = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_xMax(m_Face)); - rtBBox.bottom = FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_yMax(m_Face)); - return TRUE; -} -int32_t CFPF_SkiaFont::GetHeight() const { - if (!m_Face) { - return 0; - } - return FPF_EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_Height(m_Face)); -} -int32_t CFPF_SkiaFont::GetItalicAngle() const { - if (!m_Face) { - return 0; - } - TT_Postscript* ttInfo = - (TT_Postscript*)FT_Get_Sfnt_Table(m_Face, ft_sfnt_post); - if (ttInfo) { - return ttInfo->italicAngle; - } - return 0; -} -FX_DWORD CFPF_SkiaFont::GetFontData(FX_DWORD dwTable, - uint8_t* pBuffer, - FX_DWORD dwSize) { - if (!m_Face) { - return 0; - } - FT_ULong ulSize = pdfium::base::checked_cast(dwSize); - if (FXFT_Load_Sfnt_Table(m_Face, dwTable, 0, pBuffer, &ulSize)) { - return 0; - } - return pdfium::base::checked_cast(ulSize); -} -FX_BOOL CFPF_SkiaFont::InitFont(CFPF_SkiaFontMgr* pFontMgr, - CFPF_SkiaFontDescriptor* pFontDes, - const CFX_ByteStringC& bsFamily, - FX_DWORD dwStyle, - uint8_t uCharset) { - if (!pFontMgr || !pFontDes) { - return FALSE; - } - switch (pFontDes->GetType()) { - case FPF_SKIAFONTTYPE_Path: { - CFPF_SkiaPathFont* pFont = (CFPF_SkiaPathFont*)pFontDes; - m_Face = pFontMgr->GetFontFace(pFont->m_pPath, pFont->m_iFaceIndex); - } break; - case FPF_SKIAFONTTYPE_File: { - CFPF_SkiaFileFont* pFont = (CFPF_SkiaFileFont*)pFontDes; - m_Face = pFontMgr->GetFontFace(pFont->m_pFile, pFont->m_iFaceIndex); - } break; - case FPF_SKIAFONTTYPE_Buffer: { - CFPF_SkiaBufferFont* pFont = (CFPF_SkiaBufferFont*)pFontDes; - m_Face = pFontMgr->GetFontFace((const uint8_t*)pFont->m_pBuffer, - pFont->m_szBuffer, pFont->m_iFaceIndex); - } break; - default: - return FALSE; - } - if (!m_Face) { - return FALSE; - } - m_dwStyle = dwStyle; - m_uCharset = uCharset; - m_pFontMgr = pFontMgr; - m_pFontDes = pFontDes; - m_dwRefCount = 1; - return TRUE; -} -#endif diff --git a/core/src/fxge/android/fpf_skiafont.h b/core/src/fxge/android/fpf_skiafont.h deleted file mode 100644 index c12ec43690..0000000000 --- a/core/src/fxge/android/fpf_skiafont.h +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_ANDROID_FPF_SKIAFONT_H_ -#define CORE_SRC_FXGE_ANDROID_FPF_SKIAFONT_H_ - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#include "core/include/fxge/fpf.h" -#include "core/include/fxge/fx_font.h" - -class CFPF_SkiaFontDescriptor; -class CFPF_SkiaFontMgr; -class CFPF_SkiaFont : public IFPF_Font { - public: - CFPF_SkiaFont(); - ~CFPF_SkiaFont() override; - - // IFPF_Font - void Release() override; - IFPF_Font* Retain() override; - FPF_HFONT GetHandle() override; - CFX_ByteString GetFamilyName() override; - CFX_WideString GetPsName() override; - FX_DWORD GetFontStyle() const override { return m_dwStyle; } - uint8_t GetCharset() const override { return m_uCharset; } - int32_t GetGlyphIndex(FX_WCHAR wUnicode) override; - int32_t GetGlyphWidth(int32_t iGlyphIndex) override; - int32_t GetAscent() const override; - int32_t GetDescent() const override; - FX_BOOL GetGlyphBBox(int32_t iGlyphIndex, FX_RECT& rtBBox) override; - FX_BOOL GetBBox(FX_RECT& rtBBox) override; - int32_t GetHeight() const override; - int32_t GetItalicAngle() const override; - FX_DWORD GetFontData(FX_DWORD dwTable, - uint8_t* pBuffer, - FX_DWORD dwSize) override; - - FX_BOOL InitFont(CFPF_SkiaFontMgr* pFontMgr, - CFPF_SkiaFontDescriptor* pFontDes, - const CFX_ByteStringC& bsFamily, - FX_DWORD dwStyle, - uint8_t uCharset); - - protected: - CFPF_SkiaFontMgr* m_pFontMgr; - CFPF_SkiaFontDescriptor* m_pFontDes; - FXFT_Face m_Face; - FX_DWORD m_dwStyle; - uint8_t m_uCharset; - FX_DWORD m_dwRefCount; -}; -#endif - -#endif // CORE_SRC_FXGE_ANDROID_FPF_SKIAFONT_H_ diff --git a/core/src/fxge/android/fpf_skiafontmgr.cpp b/core/src/fxge/android/fpf_skiafontmgr.cpp deleted file mode 100644 index 5d075c6d08..0000000000 --- a/core/src/fxge/android/fpf_skiafontmgr.cpp +++ /dev/null @@ -1,524 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#define FPF_SKIAMATCHWEIGHT_NAME1 62 -#define FPF_SKIAMATCHWEIGHT_NAME2 60 -#define FPF_SKIAMATCHWEIGHT_1 16 -#define FPF_SKIAMATCHWEIGHT_2 8 - -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxge/fx_freetype.h" -#include "core/src/fxge/android/fpf_skiafont.h" -#include "core/src/fxge/android/fpf_skiafontmgr.h" - -#ifdef __cplusplus -extern "C" { -#endif -static unsigned long FPF_SkiaStream_Read(FXFT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count) { - IFX_FileRead* pFileRead = (IFX_FileRead*)stream->descriptor.pointer; - if (!pFileRead) { - return 0; - } - if (count > 0) { - if (pFileRead->ReadBlock(buffer, (FX_FILESIZE)offset, (size_t)count) != - count) { - return 0; - } - } - return count; -} -static void FPF_SkiaStream_Close(FXFT_Stream stream) {} -#ifdef __cplusplus -}; -#endif -struct FPF_SKIAFONTMAP { - FX_DWORD dwFamily; - FX_DWORD dwSubSt; -}; -static const FPF_SKIAFONTMAP g_SkiaFontmap[] = { - {0x58c5083, 0xc8d2e345}, {0x5dfade2, 0xe1633081}, - {0x684317d, 0xe1633081}, {0x14ee2d13, 0xc8d2e345}, - {0x3918fe2d, 0xbbeeec72}, {0x3b98b31c, 0xe1633081}, - {0x3d49f40e, 0xe1633081}, {0x432c41c5, 0xe1633081}, - {0x491b6ad0, 0xe1633081}, {0x5612cab1, 0x59b9f8f1}, - {0x779ce19d, 0xc8d2e345}, {0x7cc9510b, 0x59b9f8f1}, - {0x83746053, 0xbbeeec72}, {0xaaa60c03, 0xbbeeec72}, - {0xbf85ff26, 0xe1633081}, {0xc04fe601, 0xbbeeec72}, - {0xca3812d5, 0x59b9f8f1}, {0xca383e15, 0x59b9f8f1}, - {0xcad5eaf6, 0x59b9f8f1}, {0xcb7a04c8, 0xc8d2e345}, - {0xfb4ce0de, 0xe1633081}, -}; -FX_DWORD FPF_SkiaGetSubstFont(FX_DWORD dwHash) { - int32_t iStart = 0; - int32_t iEnd = sizeof(g_SkiaFontmap) / sizeof(FPF_SKIAFONTMAP); - while (iStart <= iEnd) { - int32_t iMid = (iStart + iEnd) / 2; - const FPF_SKIAFONTMAP* pItem = &g_SkiaFontmap[iMid]; - if (dwHash < pItem->dwFamily) { - iEnd = iMid - 1; - } else if (dwHash > pItem->dwFamily) { - iStart = iMid + 1; - } else { - return pItem->dwSubSt; - } - } - return 0; -} -static const FPF_SKIAFONTMAP g_SkiaSansFontMap[] = { - {0x58c5083, 0xd5b8d10f}, {0x14ee2d13, 0xd5b8d10f}, - {0x779ce19d, 0xd5b8d10f}, {0xcb7a04c8, 0xd5b8d10f}, - {0xfb4ce0de, 0xd5b8d10f}, -}; -FX_DWORD FPF_SkiaGetSansFont(FX_DWORD dwHash) { - int32_t iStart = 0; - int32_t iEnd = sizeof(g_SkiaSansFontMap) / sizeof(FPF_SKIAFONTMAP); - while (iStart <= iEnd) { - int32_t iMid = (iStart + iEnd) / 2; - const FPF_SKIAFONTMAP* pItem = &g_SkiaSansFontMap[iMid]; - if (dwHash < pItem->dwFamily) { - iEnd = iMid - 1; - } else if (dwHash > pItem->dwFamily) { - iStart = iMid + 1; - } else { - return pItem->dwSubSt; - } - } - return 0; -} -static uint32_t FPF_GetHashCode_StringA(const FX_CHAR* pStr, - int32_t iLength, - FX_BOOL bIgnoreCase = FALSE) { - if (!pStr) { - return 0; - } - if (iLength < 0) { - iLength = FXSYS_strlen(pStr); - } - const FX_CHAR* pStrEnd = pStr + iLength; - uint32_t uHashCode = 0; - if (bIgnoreCase) { - while (pStr < pStrEnd) { - uHashCode = 31 * uHashCode + FXSYS_tolower(*pStr++); - } - } else { - while (pStr < pStrEnd) { - uHashCode = 31 * uHashCode + *pStr++; - } - } - return uHashCode; -} -enum FPF_SKIACHARSET { - FPF_SKIACHARSET_Ansi = 1 << 0, - FPF_SKIACHARSET_Default = 1 << 1, - FPF_SKIACHARSET_Symbol = 1 << 2, - FPF_SKIACHARSET_ShiftJIS = 1 << 3, - FPF_SKIACHARSET_Korean = 1 << 4, - FPF_SKIACHARSET_Johab = 1 << 5, - FPF_SKIACHARSET_GB2312 = 1 << 6, - FPF_SKIACHARSET_BIG5 = 1 << 7, - FPF_SKIACHARSET_Greek = 1 << 8, - FPF_SKIACHARSET_Turkish = 1 << 9, - FPF_SKIACHARSET_Vietnamese = 1 << 10, - FPF_SKIACHARSET_Hebrew = 1 << 11, - FPF_SKIACHARSET_Arabic = 1 << 12, - FPF_SKIACHARSET_Baltic = 1 << 13, - FPF_SKIACHARSET_Cyrillic = 1 << 14, - FPF_SKIACHARSET_Thai = 1 << 15, - FPF_SKIACHARSET_EeasternEuropean = 1 << 16, - FPF_SKIACHARSET_PC = 1 << 17, - FPF_SKIACHARSET_OEM = 1 << 18, -}; -static FX_DWORD FPF_SkiaGetCharset(uint8_t uCharset) { - switch (uCharset) { - case FXFONT_ANSI_CHARSET: - return FPF_SKIACHARSET_Ansi; - case FXFONT_DEFAULT_CHARSET: - return FPF_SKIACHARSET_Default; - case FXFONT_SYMBOL_CHARSET: - return FPF_SKIACHARSET_Symbol; - case FXFONT_SHIFTJIS_CHARSET: - return FPF_SKIACHARSET_ShiftJIS; - case FXFONT_HANGEUL_CHARSET: - return FPF_SKIACHARSET_Korean; - case FXFONT_GB2312_CHARSET: - return FPF_SKIACHARSET_GB2312; - case FXFONT_CHINESEBIG5_CHARSET: - return FPF_SKIACHARSET_BIG5; - case FXFONT_GREEK_CHARSET: - return FPF_SKIACHARSET_Greek; - case FXFONT_TURKISH_CHARSET: - return FPF_SKIACHARSET_Turkish; - case FXFONT_HEBREW_CHARSET: - return FPF_SKIACHARSET_Hebrew; - case FXFONT_ARABIC_CHARSET: - return FPF_SKIACHARSET_Arabic; - case FXFONT_BALTIC_CHARSET: - return FPF_SKIACHARSET_Baltic; - case FXFONT_RUSSIAN_CHARSET: - return FPF_SKIACHARSET_Cyrillic; - case FXFONT_THAI_CHARSET: - return FPF_SKIACHARSET_Thai; - case FXFONT_EASTEUROPE_CHARSET: - return FPF_SKIACHARSET_EeasternEuropean; - } - return FPF_SKIACHARSET_Default; -} -static FX_DWORD FPF_SKIANormalizeFontName(const CFX_ByteStringC& bsfamily) { - FX_DWORD dwHash = 0; - int32_t iLength = bsfamily.GetLength(); - const FX_CHAR* pBuffer = bsfamily.GetCStr(); - for (int32_t i = 0; i < iLength; i++) { - FX_CHAR ch = pBuffer[i]; - if (ch == ' ' || ch == '-' || ch == ',') { - continue; - } - dwHash = 31 * dwHash + FXSYS_tolower(ch); - } - return dwHash; -} -static FX_DWORD FPF_SKIAGetFamilyHash(const CFX_ByteStringC& bsFamily, - FX_DWORD dwStyle, - uint8_t uCharset) { - CFX_ByteString bsFont(bsFamily); - if (dwStyle & FXFONT_BOLD) { - bsFont += "Bold"; - } - if (dwStyle & FXFONT_ITALIC) { - bsFont += "Italic"; - } - if (dwStyle & FXFONT_SERIF) { - bsFont += "Serif"; - } - bsFont += uCharset; - return FPF_GetHashCode_StringA(bsFont.c_str(), bsFont.GetLength(), TRUE); -} -static FX_BOOL FPF_SkiaIsCJK(uint8_t uCharset) { - return (uCharset == FXFONT_GB2312_CHARSET) || - (uCharset == FXFONT_CHINESEBIG5_CHARSET) || - (uCharset == FXFONT_HANGEUL_CHARSET) || - (uCharset == FXFONT_SHIFTJIS_CHARSET); -} -static FX_BOOL FPF_SkiaMaybeSymbol(const CFX_ByteStringC& bsFacename) { - CFX_ByteString bsName = bsFacename; - bsName.MakeLower(); - return bsName.Find("symbol") > -1; -} -static FX_BOOL FPF_SkiaMaybeArabic(const CFX_ByteStringC& bsFacename) { - CFX_ByteString bsName = bsFacename; - bsName.MakeLower(); - return bsName.Find("arabic") > -1; -} -CFPF_SkiaFontMgr::CFPF_SkiaFontMgr() : m_bLoaded(FALSE), m_FTLibrary(NULL) {} -CFPF_SkiaFontMgr::~CFPF_SkiaFontMgr() { - for (const auto& pair : m_FamilyFonts) { - if (pair.second) - pair.second->Release(); - } - m_FamilyFonts.clear(); - for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) { - delete *it; - } - m_FontFaces.clear(); - if (m_FTLibrary) { - FXFT_Done_FreeType(m_FTLibrary); - } -} -FX_BOOL CFPF_SkiaFontMgr::InitFTLibrary() { - if (!m_FTLibrary) { - FXFT_Init_FreeType(&m_FTLibrary); - } - return m_FTLibrary != NULL; -} -void CFPF_SkiaFontMgr::LoadSystemFonts() { - if (m_bLoaded) { - return; - } - ScanPath("/system/fonts"); - OutputSystemFonts(); - m_bLoaded = TRUE; -} -void CFPF_SkiaFontMgr::LoadPrivateFont(IFX_FileRead* pFontFile) {} -void CFPF_SkiaFontMgr::LoadPrivateFont(const CFX_ByteStringC& bsFileName) {} -void CFPF_SkiaFontMgr::LoadPrivateFont(void* pBuffer, size_t szBuffer) {} -IFPF_Font* CFPF_SkiaFontMgr::CreateFont(const CFX_ByteStringC& bsFamilyname, - uint8_t uCharset, - FX_DWORD dwStyle, - FX_DWORD dwMatch) { - FX_DWORD dwHash = FPF_SKIAGetFamilyHash(bsFamilyname, dwStyle, uCharset); - auto it = m_FamilyFonts.find(dwHash); - if (it != m_FamilyFonts.end() && it->second) - return it->second->Retain(); - - FX_DWORD dwFaceName = FPF_SKIANormalizeFontName(bsFamilyname); - FX_DWORD dwSubst = FPF_SkiaGetSubstFont(dwFaceName); - FX_DWORD dwSubstSans = FPF_SkiaGetSansFont(dwFaceName); - FX_BOOL bMaybeSymbol = FPF_SkiaMaybeSymbol(bsFamilyname); - if (uCharset != FXFONT_ARABIC_CHARSET && FPF_SkiaMaybeArabic(bsFamilyname)) { - uCharset = FXFONT_ARABIC_CHARSET; - } else if (uCharset == FXFONT_ANSI_CHARSET && - (dwMatch & FPF_MATCHFONT_REPLACEANSI)) { - uCharset = FXFONT_DEFAULT_CHARSET; - } - int32_t nExpectVal = FPF_SKIAMATCHWEIGHT_NAME1 + FPF_SKIAMATCHWEIGHT_1 * 3 + - FPF_SKIAMATCHWEIGHT_2 * 2; - int32_t nItem = -1; - int32_t nMax = -1; - int32_t nGlyphNum = 0; - for (auto it = m_FontFaces.rbegin(); it != m_FontFaces.rend(); ++it) { - CFPF_SkiaPathFont* pFontDes = static_cast(*it); - if (!(pFontDes->m_dwCharsets & FPF_SkiaGetCharset(uCharset))) { - continue; - } - int32_t nFind = 0; - FX_DWORD dwSysFontName = FPF_SKIANormalizeFontName(pFontDes->m_pFamily); - if (dwFaceName == dwSysFontName) { - nFind += FPF_SKIAMATCHWEIGHT_NAME1; - } - bool bMatchedName = (nFind == FPF_SKIAMATCHWEIGHT_NAME1); - if ((dwStyle & FXFONT_BOLD) == (pFontDes->m_dwStyle & FXFONT_BOLD)) { - nFind += FPF_SKIAMATCHWEIGHT_1; - } - if ((dwStyle & FXFONT_ITALIC) == (pFontDes->m_dwStyle & FXFONT_ITALIC)) { - nFind += FPF_SKIAMATCHWEIGHT_1; - } - if ((dwStyle & FXFONT_FIXED_PITCH) == - (pFontDes->m_dwStyle & FXFONT_FIXED_PITCH)) { - nFind += FPF_SKIAMATCHWEIGHT_2; - } - if ((dwStyle & FXFONT_SERIF) == (pFontDes->m_dwStyle & FXFONT_SERIF)) { - nFind += FPF_SKIAMATCHWEIGHT_1; - } - if ((dwStyle & FXFONT_SCRIPT) == (pFontDes->m_dwStyle & FXFONT_SCRIPT)) { - nFind += FPF_SKIAMATCHWEIGHT_2; - } - if (dwSubst == dwSysFontName || dwSubstSans == dwSysFontName) { - nFind += FPF_SKIAMATCHWEIGHT_NAME2; - bMatchedName = true; - } - if (uCharset == FXFONT_DEFAULT_CHARSET || bMaybeSymbol) { - if (nFind > nMax && bMatchedName) { - nMax = nFind; - nItem = it - m_FontFaces.rbegin(); - } - } else if (FPF_SkiaIsCJK(uCharset)) { - if (bMatchedName || pFontDes->m_iGlyphNum > nGlyphNum) { - nItem = it - m_FontFaces.rbegin(); - nGlyphNum = pFontDes->m_iGlyphNum; - } - } else if (nFind > nMax) { - nMax = nFind; - nItem = it - m_FontFaces.rbegin(); - } - if (nExpectVal <= nFind) { - nItem = it - m_FontFaces.rbegin(); - break; - } - } - if (nItem > -1) { - CFPF_SkiaFontDescriptor* pFontDes = m_FontFaces[nItem]; - CFPF_SkiaFont* pFont = new CFPF_SkiaFont; - if (pFont->InitFont(this, pFontDes, bsFamilyname, dwStyle, uCharset)) { - m_FamilyFonts[dwHash] = pFont; - return pFont->Retain(); - } - pFont->Release(); - } - return NULL; -} -FXFT_Face CFPF_SkiaFontMgr::GetFontFace(IFX_FileRead* pFileRead, - int32_t iFaceIndex) { - if (!pFileRead) { - return NULL; - } - if (pFileRead->GetSize() == 0) { - return NULL; - } - if (iFaceIndex < 0) { - return NULL; - } - FXFT_StreamRec streamRec; - FXSYS_memset(&streamRec, 0, sizeof(FXFT_StreamRec)); - streamRec.size = pFileRead->GetSize(); - streamRec.descriptor.pointer = pFileRead; - streamRec.read = FPF_SkiaStream_Read; - streamRec.close = FPF_SkiaStream_Close; - FXFT_Open_Args args; - args.flags = FT_OPEN_STREAM; - args.stream = &streamRec; - FXFT_Face face; - if (FXFT_Open_Face(m_FTLibrary, &args, iFaceIndex, &face)) { - return NULL; - } - FXFT_Set_Pixel_Sizes(face, 0, 64); - return face; -} -FXFT_Face CFPF_SkiaFontMgr::GetFontFace(const CFX_ByteStringC& bsFile, - int32_t iFaceIndex) { - if (bsFile.IsEmpty()) { - return NULL; - } - if (iFaceIndex < 0) { - return NULL; - } - FXFT_Open_Args args; - args.flags = FT_OPEN_PATHNAME; - args.pathname = (FT_String*)bsFile.GetCStr(); - FXFT_Face face; - if (FXFT_Open_Face(m_FTLibrary, &args, iFaceIndex, &face)) { - return FALSE; - } - FXFT_Set_Pixel_Sizes(face, 0, 64); - return face; -} -FXFT_Face CFPF_SkiaFontMgr::GetFontFace(const uint8_t* pBuffer, - size_t szBuffer, - int32_t iFaceIndex) { - if (!pBuffer || szBuffer < 1) { - return NULL; - } - if (iFaceIndex < 0) { - return NULL; - } - FXFT_Open_Args args; - args.flags = FT_OPEN_MEMORY; - args.memory_base = pBuffer; - args.memory_size = szBuffer; - FXFT_Face face; - if (FXFT_Open_Face(m_FTLibrary, &args, iFaceIndex, &face)) { - return FALSE; - } - FXFT_Set_Pixel_Sizes(face, 0, 64); - return face; -} -void CFPF_SkiaFontMgr::ScanPath(const CFX_ByteStringC& path) { - void* handle = FX_OpenFolder(path.GetCStr()); - if (!handle) { - return; - } - CFX_ByteString filename; - FX_BOOL bFolder = FALSE; - while (FX_GetNextFile(handle, filename, bFolder)) { - if (bFolder) { - if (filename == "." || filename == "..") { - continue; - } - } else { - CFX_ByteString ext = filename.Right(4); - ext.MakeLower(); - if (ext != ".ttf" && ext != ".ttc" && ext != ".otf") { - continue; - } - } - CFX_ByteString fullpath = path; - fullpath += "/"; - fullpath += filename; - if (bFolder) { - ScanPath(fullpath); - } else { - ScanFile(fullpath); - } - } - FX_CloseFolder(handle); -} -void CFPF_SkiaFontMgr::ScanFile(const CFX_ByteStringC& file) { - FXFT_Face face = GetFontFace(file); - if (face) { - CFPF_SkiaPathFont* pFontDesc = new CFPF_SkiaPathFont; - pFontDesc->SetPath(file.GetCStr()); - ReportFace(face, pFontDesc); - m_FontFaces.push_back(pFontDesc); - FXFT_Done_Face(face); - } -} -static const FX_DWORD g_FPFSkiaFontCharsets[] = { - FPF_SKIACHARSET_Ansi, - FPF_SKIACHARSET_EeasternEuropean, - FPF_SKIACHARSET_Cyrillic, - FPF_SKIACHARSET_Greek, - FPF_SKIACHARSET_Turkish, - FPF_SKIACHARSET_Hebrew, - FPF_SKIACHARSET_Arabic, - FPF_SKIACHARSET_Baltic, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - FPF_SKIACHARSET_Thai, - FPF_SKIACHARSET_ShiftJIS, - FPF_SKIACHARSET_GB2312, - FPF_SKIACHARSET_Korean, - FPF_SKIACHARSET_BIG5, - FPF_SKIACHARSET_Johab, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - FPF_SKIACHARSET_OEM, - FPF_SKIACHARSET_Symbol, -}; -static FX_DWORD FPF_SkiaGetFaceCharset(TT_OS2* pOS2) { - FX_DWORD dwCharset = 0; - if (pOS2) { - for (int32_t i = 0; i < 32; i++) { - if (pOS2->ulCodePageRange1 & (1 << i)) { - dwCharset |= g_FPFSkiaFontCharsets[i]; - } - } - } - dwCharset |= FPF_SKIACHARSET_Default; - return dwCharset; -} -void CFPF_SkiaFontMgr::ReportFace(FXFT_Face face, - CFPF_SkiaFontDescriptor* pFontDesc) { - if (!face || !pFontDesc) { - return; - } - pFontDesc->SetFamily(FXFT_Get_Face_Family_Name(face)); - if (FXFT_Is_Face_Bold(face)) { - pFontDesc->m_dwStyle |= FXFONT_BOLD; - } - if (FXFT_Is_Face_Italic(face)) { - pFontDesc->m_dwStyle |= FXFONT_ITALIC; - } - if (FT_IS_FIXED_WIDTH(face)) { - pFontDesc->m_dwStyle |= FXFONT_FIXED_PITCH; - } - TT_OS2* pOS2 = (TT_OS2*)FT_Get_Sfnt_Table(face, ft_sfnt_os2); - if (pOS2) { - if (pOS2->ulCodePageRange1 & (1 << 31)) { - pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; - } - if (pOS2->panose[0] == 2) { - uint8_t uSerif = pOS2->panose[1]; - if ((uSerif > 1 && uSerif < 10) || uSerif > 13) { - pFontDesc->m_dwStyle |= FXFONT_SERIF; - } - } - } - if (pOS2 && (pOS2->ulCodePageRange1 & (1 << 31))) { - pFontDesc->m_dwStyle |= FXFONT_SYMBOLIC; - } - pFontDesc->m_dwCharsets = FPF_SkiaGetFaceCharset(pOS2); - pFontDesc->m_iFaceIndex = face->face_index; - pFontDesc->m_iGlyphNum = face->num_glyphs; -} -void CFPF_SkiaFontMgr::OutputSystemFonts() {} -#endif diff --git a/core/src/fxge/android/fpf_skiafontmgr.h b/core/src/fxge/android/fpf_skiafontmgr.h deleted file mode 100644 index 1a304e578a..0000000000 --- a/core/src/fxge/android/fpf_skiafontmgr.h +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_ANDROID_FPF_SKIAFONTMGR_H_ -#define CORE_SRC_FXGE_ANDROID_FPF_SKIAFONTMGR_H_ - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#include -#include - -#include "core/include/fxge/fpf.h" -#include "core/include/fxge/fx_font.h" - -#define FPF_SKIAFONTTYPE_Unknown 0 -#define FPF_SKIAFONTTYPE_Path 1 -#define FPF_SKIAFONTTYPE_File 2 -#define FPF_SKIAFONTTYPE_Buffer 3 - -class CFPF_SkiaFont; - -class CFPF_SkiaFontDescriptor { - public: - CFPF_SkiaFontDescriptor() - : m_pFamily(NULL), - m_dwStyle(0), - m_iFaceIndex(0), - m_dwCharsets(0), - m_iGlyphNum(0) {} - virtual ~CFPF_SkiaFontDescriptor() { FX_Free(m_pFamily); } - - virtual int32_t GetType() const { return FPF_SKIAFONTTYPE_Unknown; } - - void SetFamily(const FX_CHAR* pFamily) { - FX_Free(m_pFamily); - int32_t iSize = FXSYS_strlen(pFamily); - m_pFamily = FX_Alloc(FX_CHAR, iSize + 1); - FXSYS_memcpy(m_pFamily, pFamily, iSize * sizeof(FX_CHAR)); - m_pFamily[iSize] = 0; - } - FX_CHAR* m_pFamily; - FX_DWORD m_dwStyle; - int32_t m_iFaceIndex; - FX_DWORD m_dwCharsets; - int32_t m_iGlyphNum; -}; - -class CFPF_SkiaPathFont : public CFPF_SkiaFontDescriptor { - public: - CFPF_SkiaPathFont() : m_pPath(NULL) {} - ~CFPF_SkiaPathFont() override { FX_Free(m_pPath); } - - // CFPF_SkiaFontDescriptor - int32_t GetType() const override { return FPF_SKIAFONTTYPE_Path; } - - void SetPath(const FX_CHAR* pPath) { - FX_Free(m_pPath); - int32_t iSize = FXSYS_strlen(pPath); - m_pPath = FX_Alloc(FX_CHAR, iSize + 1); - FXSYS_memcpy(m_pPath, pPath, iSize * sizeof(FX_CHAR)); - m_pPath[iSize] = 0; - } - FX_CHAR* m_pPath; -}; - -class CFPF_SkiaFileFont : public CFPF_SkiaFontDescriptor { - public: - CFPF_SkiaFileFont() : m_pFile(NULL) {} - - // CFPF_SkiaFontDescriptor - int32_t GetType() const override { return FPF_SKIAFONTTYPE_File; } - IFX_FileRead* m_pFile; -}; - -class CFPF_SkiaBufferFont : public CFPF_SkiaFontDescriptor { - public: - CFPF_SkiaBufferFont() : m_pBuffer(NULL), m_szBuffer(0) {} - - // CFPF_SkiaFontDescriptor - int32_t GetType() const override { return FPF_SKIAFONTTYPE_Buffer; } - - void* m_pBuffer; - size_t m_szBuffer; -}; - -class CFPF_SkiaFontMgr : public IFPF_FontMgr { - public: - CFPF_SkiaFontMgr(); - ~CFPF_SkiaFontMgr() override; - - // IFPF_FontMgr - void LoadSystemFonts() override; - void LoadPrivateFont(IFX_FileRead* pFontFile) override; - void LoadPrivateFont(const CFX_ByteStringC& bsFileName) override; - void LoadPrivateFont(void* pBuffer, size_t szBuffer) override; - IFPF_Font* CreateFont(const CFX_ByteStringC& bsFamilyname, - uint8_t uCharset, - FX_DWORD dwStyle, - FX_DWORD dwMatch = 0) override; - - FX_BOOL InitFTLibrary(); - FXFT_Face GetFontFace(IFX_FileRead* pFileRead, int32_t iFaceIndex = 0); - FXFT_Face GetFontFace(const CFX_ByteStringC& bsFile, int32_t iFaceIndex = 0); - FXFT_Face GetFontFace(const uint8_t* pBuffer, - size_t szBuffer, - int32_t iFaceIndex = 0); - - protected: - void ScanPath(const CFX_ByteStringC& path); - void ScanFile(const CFX_ByteStringC& file); - void ReportFace(FXFT_Face face, CFPF_SkiaFontDescriptor* pFontDesc); - void OutputSystemFonts(); - - FX_BOOL m_bLoaded; - FXFT_Library m_FTLibrary; - std::vector m_FontFaces; - std::map m_FamilyFonts; -}; - -#endif - -#endif // CORE_SRC_FXGE_ANDROID_FPF_SKIAFONTMGR_H_ diff --git a/core/src/fxge/android/fpf_skiamodule.cpp b/core/src/fxge/android/fpf_skiamodule.cpp deleted file mode 100644 index 76ee853602..0000000000 --- a/core/src/fxge/android/fpf_skiamodule.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#include "core/src/fxge/android/fpf_skiafontmgr.h" -#include "core/src/fxge/android/fpf_skiamodule.h" - -static IFPF_DeviceModule* gs_pPFModule = NULL; -IFPF_DeviceModule* FPF_GetDeviceModule() { - if (!gs_pPFModule) { - gs_pPFModule = new CFPF_SkiaDeviceModule; - } - return gs_pPFModule; -} -CFPF_SkiaDeviceModule::~CFPF_SkiaDeviceModule() { - delete m_pFontMgr; -} -void CFPF_SkiaDeviceModule::Destroy() { - delete (CFPF_SkiaDeviceModule*)gs_pPFModule; - gs_pPFModule = NULL; -} -IFPF_FontMgr* CFPF_SkiaDeviceModule::GetFontMgr() { - if (!m_pFontMgr) { - m_pFontMgr = new CFPF_SkiaFontMgr; - if (!m_pFontMgr->InitFTLibrary()) { - delete m_pFontMgr; - return NULL; - } - } - return (IFPF_FontMgr*)m_pFontMgr; -} -#endif diff --git a/core/src/fxge/android/fpf_skiamodule.h b/core/src/fxge/android/fpf_skiamodule.h deleted file mode 100644 index ff99eda75d..0000000000 --- a/core/src/fxge/android/fpf_skiamodule.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_ANDROID_FPF_SKIAMODULE_H_ -#define CORE_SRC_FXGE_ANDROID_FPF_SKIAMODULE_H_ - -#if _FX_OS_ == _FX_ANDROID_ - -#include "core/include/fxge/fpf.h" - -class CFPF_SkiaFontMgr; - -class CFPF_SkiaDeviceModule : public IFPF_DeviceModule { - public: - CFPF_SkiaDeviceModule() : m_pFontMgr(nullptr) {} - ~CFPF_SkiaDeviceModule() override; - - // IFPF_DeviceModule - void Destroy() override; - IFPF_FontMgr* GetFontMgr() override; - - protected: - CFPF_SkiaFontMgr* m_pFontMgr; -}; -#endif - -#endif // CORE_SRC_FXGE_ANDROID_FPF_SKIAMODULE_H_ diff --git a/core/src/fxge/android/fx_android_font.cpp b/core/src/fxge/android/fx_android_font.cpp deleted file mode 100644 index f28bf286e5..0000000000 --- a/core/src/fxge/android/fx_android_font.cpp +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#include "core/include/fxge/fpf.h" -#include "core/src/fxge/android/fx_android_font.h" - -CFX_AndroidFontInfo::CFX_AndroidFontInfo() : m_pFontMgr(NULL) {} -FX_BOOL CFX_AndroidFontInfo::Init(IFPF_FontMgr* pFontMgr) { - if (!pFontMgr) { - return FALSE; - } - pFontMgr->LoadSystemFonts(); - m_pFontMgr = pFontMgr; - return TRUE; -} -FX_BOOL CFX_AndroidFontInfo::EnumFontList(CFX_FontMapper* pMapper) { - return FALSE; -} -void* CFX_AndroidFontInfo::MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* face, - int& iExact) { - if (!m_pFontMgr) { - return NULL; - } - FX_DWORD dwStyle = 0; - if (weight >= 700) { - dwStyle |= FXFONT_BOLD; - } - if (bItalic) { - dwStyle |= FXFONT_ITALIC; - } - if (pitch_family & FXFONT_FF_FIXEDPITCH) { - dwStyle |= FXFONT_FIXED_PITCH; - } - if (pitch_family & FXFONT_FF_SCRIPT) { - dwStyle |= FXFONT_SCRIPT; - } - if (pitch_family & FXFONT_FF_ROMAN) { - dwStyle |= FXFONT_SERIF; - } - return m_pFontMgr->CreateFont(face, charset, dwStyle, - FPF_MATCHFONT_REPLACEANSI); -} -void* CFX_AndroidFontInfo::GetFont(const FX_CHAR* face) { - return NULL; -} -FX_DWORD CFX_AndroidFontInfo::GetFontData(void* hFont, - FX_DWORD table, - uint8_t* buffer, - FX_DWORD size) { - if (!hFont) { - return 0; - } - return ((IFPF_Font*)hFont)->GetFontData(table, buffer, size); -} -FX_BOOL CFX_AndroidFontInfo::GetFaceName(void* hFont, CFX_ByteString& name) { - if (!hFont) { - return FALSE; - } - name = ((IFPF_Font*)hFont)->GetFamilyName(); - return TRUE; -} -FX_BOOL CFX_AndroidFontInfo::GetFontCharset(void* hFont, int& charset) { - if (!hFont) { - return FALSE; - } - charset = ((IFPF_Font*)hFont)->GetCharset(); - return FALSE; -} -void CFX_AndroidFontInfo::DeleteFont(void* hFont) { - if (!hFont) { - return; - } - ((IFPF_Font*)hFont)->Release(); -} -void* CFX_AndroidFontInfo::RetainFont(void* hFont) { - return NULL; -} -#endif diff --git a/core/src/fxge/android/fx_android_font.h b/core/src/fxge/android/fx_android_font.h deleted file mode 100644 index 0ebc97d096..0000000000 --- a/core/src/fxge/android/fx_android_font.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_ANDROID_FX_ANDROID_FONT_H_ -#define CORE_SRC_FXGE_ANDROID_FX_ANDROID_FONT_H_ - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#include "core/include/fxge/fx_font.h" - -class IFPF_FontMgr; - -class CFX_AndroidFontInfo : public IFX_SystemFontInfo { - public: - CFX_AndroidFontInfo(); - virtual void Release() { delete this; } - - virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper); - - virtual void* MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* face, - int& bExact); - - virtual void* GetFont(const FX_CHAR* face); - virtual FX_DWORD GetFontData(void* hFont, - FX_DWORD table, - uint8_t* buffer, - FX_DWORD size); - virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name); - virtual FX_BOOL GetFontCharset(void* hFont, int& charset); - - virtual void DeleteFont(void* hFont); - virtual void* RetainFont(void* hFont); - FX_BOOL Init(IFPF_FontMgr* pFontMgr); - - protected: - IFPF_FontMgr* m_pFontMgr; -}; -#endif - -#endif // CORE_SRC_FXGE_ANDROID_FX_ANDROID_FONT_H_ diff --git a/core/src/fxge/android/fx_android_imp.cpp b/core/src/fxge/android/fx_android_imp.cpp deleted file mode 100644 index 271e0012d8..0000000000 --- a/core/src/fxge/android/fx_android_imp.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" - -#if _FX_OS_ == _FX_ANDROID_ - -#include "core/include/fxge/fpf.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/android/fx_android_font.h" - -void CFX_GEModule::InitPlatform() { - IFPF_DeviceModule* pDeviceModule = FPF_GetDeviceModule(); - if (!pDeviceModule) { - return; - } - IFPF_FontMgr* pFontMgr = pDeviceModule->GetFontMgr(); - if (pFontMgr) { - CFX_AndroidFontInfo* pFontInfo = new CFX_AndroidFontInfo; - pFontInfo->Init(pFontMgr); - m_pFontMgr->SetSystemFontInfo(pFontInfo); - } - m_pPlatformData = pDeviceModule; -} -void CFX_GEModule::DestroyPlatform() { - if (m_pPlatformData) { - ((IFPF_DeviceModule*)m_pPlatformData)->Destroy(); - } -} - -#endif diff --git a/core/src/fxge/apple/apple_int.h b/core/src/fxge/apple/apple_int.h deleted file mode 100644 index 5b7be6e6c7..0000000000 --- a/core/src/fxge/apple/apple_int.h +++ /dev/null @@ -1,269 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_APPLE_APPLE_INT_H_ -#define CORE_SRC_FXGE_APPLE_APPLE_INT_H_ - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - -#include "core/include/fxge/fx_ge.h" - -#if _FX_OS_ == _FX_MACOSX_ -#include -#endif - -typedef enum eFXIOSFONTCHARSET { - eFXFontCharsetDEFAULT = 0, - eFXFontCharsetANSI = 1, - eFXFontCharsetSYMBOL = 1 << 1, - eFXFontCharsetSHIFTJIS = 1 << 2, - eFXFontCharsetHANGEUL = 1 << 3, - eFXFontCharsetGB2312 = 1 << 4, - eFXFontCharsetCHINESEBIG5 = 1 << 5, - eFXFontCharsetTHAI = 1 << 6, - eFXFontCharsetEASTEUROPE = 1 << 7, - eFXFontCharsetRUSSIAN = 1 << 8, - eFXFontCharsetGREEK = 1 << 9, - eFXFontCharsetTURKISH = 1 << 10, - eFXFontCharsetHEBREW = 1 << 11, - eFXFontCharsetARABIC = 1 << 12, - eFXFontCharsetBALTIC = 1 << 13, -} FX_IOSCHARSET; -FX_IOSCHARSET FX_GetiOSCharset(int charset); -typedef enum eFXIOSFONTFLAG { - eFXFontFlagBold = 1, - eFXFontFlagItalic = 1 << 1, - eFXFontFlagFixedPitch = 1 << 2, - eFXFontFlagSerif = 1 << 3, - eFXFontFlagScript = 1 << 4, -} FX_IOSFONTFLAG; -typedef struct IOS_FONTDATA_ { - FX_DWORD nHashCode; - const char* psName; - FX_DWORD charsets; - FX_DWORD styles; -} IOS_FONTDATA; -class CQuartz2D { - public: - void* createGraphics(CFX_DIBitmap* bitmap); - void destroyGraphics(void* graphics); - - void* CreateFont(const uint8_t* pFontData, FX_DWORD dwFontSize); - void DestroyFont(void* pFont); - void setGraphicsTextMatrix(void* graphics, CFX_Matrix* matrix); - FX_BOOL drawGraphicsString(void* graphics, - void* font, - FX_FLOAT fontSize, - FX_WORD* glyphIndices, - CGPoint* glyphPositions, - int32_t chars, - FX_ARGB argb, - CFX_Matrix* matrix = NULL); - void saveGraphicsState(void* graphics); - void restoreGraphicsState(void* graphics); -}; -class CApplePlatform { - public: - CApplePlatform() {} - ~CApplePlatform() {} - - CQuartz2D _quartz2d; -}; - -class CFX_QuartzDeviceDriver : public IFX_RenderDeviceDriver { - public: - CFX_QuartzDeviceDriver(CGContextRef context, int32_t deviceClass); - ~CFX_QuartzDeviceDriver() override; - - // IFX_RenderDeviceDriver - int GetDeviceCaps(int caps_id) override; - CFX_Matrix GetCTM() const override; - FX_BOOL IsPSPrintDriver() override { return FALSE; } - FX_BOOL StartRendering() override { return TRUE; } - void EndRendering() override {} - void SaveState() override; - void RestoreState(FX_BOOL bKeepSaved) override; - FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) override; - FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) override; - FX_BOOL DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) override; - FX_BOOL SetPixel(int x, - int y, - FX_DWORD color, - int alpha_flag = 0, - void* pIccTransform = NULL) override { - return FALSE; - } - FX_BOOL FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) override; - FX_BOOL DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_DWORD color, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) override; - FX_BOOL GetClipBox(FX_RECT* pRect) override; - FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform = NULL, - FX_BOOL bDEdge = FALSE) override; - CFX_DIBitmap* GetBackDrop() override { return NULL; } - FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - const FX_RECT* pSrcRect, - int dest_left, - int dest_top, - int blend_type, - int alpha_flag = 0, - void* pIccTransform = NULL) override; - FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) override; - FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD flags, - void*& handle, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) override { - return FALSE; - } - FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) override { - return FALSE; - } - void CancelDIBits(void* handle) override {} - FX_BOOL DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag = 0, - void* pIccTransform = NULL) override; - void* GetPlatformSurface() override { return NULL; } - void ClearDriver() override; - - protected: - void setStrokeInfo(const CFX_GraphStateData* graphState, - FX_ARGB argb, - FX_FLOAT lineWidth); - void setFillInfo(FX_ARGB argb); - void setPathToContext(const CFX_PathData* pathData); - FX_FLOAT getLineWidth(const CFX_GraphStateData* graphState, - CGAffineTransform ctm); - FX_BOOL CG_DrawGlypRun(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pGlyphMatrix, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD argb, - int alpha_flag, - void* pIccTransform); - void CG_SetImageTransform(int dest_left, - int dest_top, - int dest_width, - int dest_height, - CGRect* rect = NULL); - - protected: - CGContextRef _context; - CGAffineTransform _foxitDevice2User; - CGAffineTransform _user2FoxitDevice; - int32_t m_saveCount; - - int32_t _width; - int32_t _height; - int32_t _bitsPerPixel; - int32_t _deviceClass; - int32_t _renderCaps; - int32_t _horzSize; - int32_t _vertSize; -}; - -class CFX_FontProvider final : public IFX_FileRead { - public: - // IFX_FileRead - void Release() override { delete this; } - FX_FILESIZE GetSize() override { return (FX_FILESIZE)_totalSize; } - FX_BOOL IsEOF() override { return _offSet == _totalSize; } - FX_FILESIZE GetPosition() override { return (FX_FILESIZE)_offSet; } - FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; - size_t ReadBlock(void* buffer, size_t size) override; - - public: - CFX_FontProvider(CGFontRef cgFont); - ~CFX_FontProvider() override; - void InitTableOffset(); - unsigned long Read(unsigned long offset, - unsigned char* buffer, - unsigned long count); - - protected: - uint32_t CalcTableCheckSum(const uint32_t* table, - uint32_t numberOfBytesInTable); - uint32_t CalcTableDataRefCheckSum(CFDataRef dataRef); - - private: - CGFontRef m_cgFont; - UInt32 m_iTableSize; - size_t _offSet; - typedef struct FontHeader { - int32_t fVersion; - uint16_t fNumTables; - uint16_t fSearchRange; - uint16_t fEntrySelector; - uint16_t fRangeShift; - } FontHeader; - typedef struct TableEntry { - uint32_t fTag; - uint32_t fCheckSum; - uint32_t fOffset; - uint32_t fLength; - } TableEntry; - FontHeader _fontHeader; - unsigned char* _tableEntries; - size_t* _tableOffsets; - int _tableCount; - int _totalSize; -}; - -uint32_t FX_GetHashCode(const FX_CHAR* pStr); -FX_DWORD FX_IOSGetMatchFamilyNameHashcode(const FX_CHAR* pFontName); -uint32_t FX_IOSGetFamilyNamesCount(); -const FX_CHAR* FX_IOSGetFamilyName(uint32_t uIndex); -#endif - -#endif // CORE_SRC_FXGE_APPLE_APPLE_INT_H_ diff --git a/core/src/fxge/apple/fx_apple_platform.cpp b/core/src/fxge/apple/fx_apple_platform.cpp deleted file mode 100644 index f56ea44e92..0000000000 --- a/core/src/fxge/apple/fx_apple_platform.cpp +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" -#include "core/include/fxge/fx_ge.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge_apple.h" -#include "core/src/fxge/agg/fx_agg_driver.h" -#include "core/src/fxge/apple/apple_int.h" -#include "core/src/fxge/dib/dib_int.h" -#include "core/src/fxge/ge/fx_text_int.h" - -void CFX_AggDeviceDriver::InitPlatform() { - CQuartz2D& quartz2d = - ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; - m_pPlatformGraphics = quartz2d.createGraphics(m_pBitmap); -} -void CFX_AggDeviceDriver::DestroyPlatform() { - CQuartz2D& quartz2d = - ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; - if (m_pPlatformGraphics) { - quartz2d.destroyGraphics(m_pPlatformGraphics); - m_pPlatformGraphics = NULL; - } -} -void CFX_FaceCache::InitPlatform() {} -void CFX_FaceCache::DestroyPlatform() {} -CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph_Nativetext( - CFX_Font* pFont, - FX_DWORD glyph_index, - const CFX_Matrix* pMatrix, - int dest_width, - int anti_alias) { - return NULL; -} -static FX_BOOL _CGDrawGlyphRun(CGContextRef pContext, - int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD argb, - int alpha_flag, - void* pIccTransform) { - if (nChars == 0) { - return TRUE; - } - CFX_Matrix new_matrix; - FX_BOOL bNegSize = font_size < 0; - if (bNegSize) { - font_size = -font_size; - } - FX_FLOAT ori_x = pCharPos[0].m_OriginX, ori_y = pCharPos[0].m_OriginY; - new_matrix.Transform(ori_x, ori_y); - if (pObject2Device) { - new_matrix.Concat(*pObject2Device); - } - CQuartz2D& quartz2d = - ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; - if (!pFont->GetPlatformFont()) { - if (pFont->GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) { - return FALSE; - } - pFont->SetPlatformFont( - quartz2d.CreateFont(pFont->GetFontData(), pFont->GetSize())); - if (!pFont->GetPlatformFont()) { - return FALSE; - } - } - CFX_FixedBufGrow glyph_indices(nChars); - CFX_FixedBufGrow glyph_positions(nChars); - for (int i = 0; i < nChars; i++) { - glyph_indices[i] = pCharPos[i].m_ExtGID; - if (bNegSize) { - glyph_positions[i].x = -pCharPos[i].m_OriginX; - } else { - glyph_positions[i].x = pCharPos[i].m_OriginX; - } - glyph_positions[i].y = pCharPos[i].m_OriginY; - } - if (bNegSize) { - new_matrix.a = -new_matrix.a; - } else { - new_matrix.b = -new_matrix.b; - new_matrix.d = -new_matrix.d; - } - quartz2d.setGraphicsTextMatrix(pContext, &new_matrix); - return quartz2d.drawGraphicsString(pContext, pFont->GetPlatformFont(), - font_size, glyph_indices, glyph_positions, - nChars, argb, NULL); -} -static void _DoNothing(void* info, const void* data, size_t size) {} -FX_BOOL CFX_AggDeviceDriver::DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD argb, - int alpha_flag, - void* pIccTransform) { - if (!pFont) { - return FALSE; - } - FX_BOOL bBold = pFont->IsBold(); - if (!bBold && pFont->GetSubstFont() && - pFont->GetSubstFont()->m_Weight >= 500 && - pFont->GetSubstFont()->m_Weight <= 600) { - return FALSE; - } - for (int i = 0; i < nChars; i++) { - if (pCharPos[i].m_bGlyphAdjust) { - return FALSE; - } - } - CGContextRef ctx = CGContextRef(m_pPlatformGraphics); - if (NULL == ctx) { - return FALSE; - } - CGContextSaveGState(ctx); - CGContextSetTextDrawingMode(ctx, kCGTextFillClip); - CGRect rect_cg; - CGImageRef pImageCG = NULL; - if (m_pClipRgn) { - rect_cg = - CGRectMake(m_pClipRgn->GetBox().left, m_pClipRgn->GetBox().top, - m_pClipRgn->GetBox().Width(), m_pClipRgn->GetBox().Height()); - const CFX_DIBitmap* pClipMask = m_pClipRgn->GetMask(); - if (pClipMask) { - CGDataProviderRef pClipMaskDataProvider = CGDataProviderCreateWithData( - NULL, pClipMask->GetBuffer(), - pClipMask->GetPitch() * pClipMask->GetHeight(), _DoNothing); - CGFloat decode_f[2] = {255.f, 0.f}; - pImageCG = CGImageMaskCreate( - pClipMask->GetWidth(), pClipMask->GetHeight(), 8, 8, - pClipMask->GetPitch(), pClipMaskDataProvider, decode_f, FALSE); - CGDataProviderRelease(pClipMaskDataProvider); - } - } else { - rect_cg = CGRectMake(0, 0, m_pBitmap->GetWidth(), m_pBitmap->GetHeight()); - } - rect_cg = CGContextConvertRectToDeviceSpace(ctx, rect_cg); - if (pImageCG) { - CGContextClipToMask(ctx, rect_cg, pImageCG); - } else { - CGContextClipToRect(ctx, rect_cg); - } - FX_BOOL ret = - _CGDrawGlyphRun(ctx, nChars, pCharPos, pFont, pCache, pObject2Device, - font_size, argb, alpha_flag, pIccTransform); - if (pImageCG) { - CGImageRelease(pImageCG); - } - CGContextRestoreGState(ctx); - return ret; -} -void CFX_Font::ReleasePlatformResource() { - if (m_pPlatformFont) { - CQuartz2D& quartz2d = - ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; - quartz2d.DestroyFont(m_pPlatformFont); - m_pPlatformFont = NULL; - } -} - -#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ diff --git a/core/src/fxge/apple/fx_mac_imp.cpp b/core/src/fxge/apple/fx_mac_imp.cpp deleted file mode 100644 index 1d2f68645d..0000000000 --- a/core/src/fxge/apple/fx_mac_imp.cpp +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/apple/apple_int.h" - -#if _FX_OS_ == _FX_MACOSX_ -static const struct { - const FX_CHAR* m_pName; - const FX_CHAR* m_pSubstName; -} Base14Substs[] = { - {"Courier", "Courier New"}, - {"Courier-Bold", "Courier New Bold"}, - {"Courier-BoldOblique", "Courier New Bold Italic"}, - {"Courier-Oblique", "Courier New Italic"}, - {"Helvetica", "Arial"}, - {"Helvetica-Bold", "Arial Bold"}, - {"Helvetica-BoldOblique", "Arial Bold Italic"}, - {"Helvetica-Oblique", "Arial Italic"}, - {"Times-Roman", "Times New Roman"}, - {"Times-Bold", "Times New Roman Bold"}, - {"Times-BoldItalic", "Times New Roman Bold Italic"}, - {"Times-Italic", "Times New Roman Italic"}, -}; -class CFX_MacFontInfo : public CFX_FolderFontInfo { - public: - virtual void* MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* family, - int& iExact); -}; -#define JAPAN_GOTHIC "Hiragino Kaku Gothic Pro W6" -#define JAPAN_MINCHO "Hiragino Mincho Pro W6" -static void GetJapanesePreference(CFX_ByteString& face, - int weight, - int picth_family) { - if (face.Find("Gothic") >= 0) { - face = JAPAN_GOTHIC; - return; - } - if (!(picth_family & FXFONT_FF_ROMAN) && weight > 400) { - face = JAPAN_GOTHIC; - } else { - face = JAPAN_MINCHO; - } -} -void* CFX_MacFontInfo::MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* cstr_face, - int& iExact) { - CFX_ByteString face = cstr_face; - int iBaseFont; - for (iBaseFont = 0; iBaseFont < 12; iBaseFont++) - if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) { - face = Base14Substs[iBaseFont].m_pSubstName; - iExact = TRUE; - break; - } - if (iBaseFont < 12) { - return GetFont(face); - } - auto it = m_FontList.find(face); - if (it != m_FontList.end()) - return it->second; - - if (charset == FXFONT_ANSI_CHARSET && (pitch_family & FXFONT_FF_FIXEDPITCH)) { - return GetFont("Courier New"); - } - if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_SYMBOL_CHARSET) { - return NULL; - } - switch (charset) { - case FXFONT_SHIFTJIS_CHARSET: - GetJapanesePreference(face, weight, pitch_family); - break; - case FXFONT_GB2312_CHARSET: - face = "STSong"; - break; - case FXFONT_HANGEUL_CHARSET: - face = "AppleMyungjo"; - break; - case FXFONT_CHINESEBIG5_CHARSET: - face = "LiSong Pro Light"; - } - it = m_FontList.find(face); - if (it != m_FontList.end()) - return it->second; - - return NULL; -} -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { - CFX_MacFontInfo* pInfo = new CFX_MacFontInfo; - pInfo->AddPath("~/Library/Fonts"); - pInfo->AddPath("/Library/Fonts"); - pInfo->AddPath("/System/Library/Fonts"); - return pInfo; -} -void CFX_GEModule::InitPlatform() { - m_pPlatformData = new CApplePlatform; - m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); -} -void CFX_GEModule::DestroyPlatform() { - delete (CApplePlatform*)m_pPlatformData; - m_pPlatformData = NULL; -} -#endif diff --git a/core/src/fxge/apple/fx_quartz_device.cpp b/core/src/fxge/apple/fx_quartz_device.cpp deleted file mode 100644 index 2beca42efe..0000000000 --- a/core/src/fxge/apple/fx_quartz_device.cpp +++ /dev/null @@ -1,1048 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_ext.h" -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/agg/fx_agg_driver.h" -#include "core/src/fxge/dib/dib_int.h" -#include "core/src/fxge/ge/fx_text_int.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ -#include "core/include/fxge/fx_ge_apple.h" -#include "core/src/fxge/apple/apple_int.h" -#ifndef CGFLOAT_IS_DOUBLE -#error Expected CGFLOAT_IS_DOUBLE to be defined by CoreGraphics headers -#endif - -void* CQuartz2D::createGraphics(CFX_DIBitmap* pBitmap) { - if (!pBitmap) { - return NULL; - } - CGBitmapInfo bmpInfo = kCGBitmapByteOrder32Little; - switch (pBitmap->GetFormat()) { - case FXDIB_Rgb32: - bmpInfo |= kCGImageAlphaNoneSkipFirst; - break; - case FXDIB_Argb: - default: - return NULL; - } - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef context = CGBitmapContextCreate( - pBitmap->GetBuffer(), pBitmap->GetWidth(), pBitmap->GetHeight(), 8, - pBitmap->GetPitch(), colorSpace, bmpInfo); - CGColorSpaceRelease(colorSpace); - return context; -} -void CQuartz2D::destroyGraphics(void* graphics) { - if (graphics) { - CGContextRelease((CGContextRef)graphics); - } -} -void* CQuartz2D::CreateFont(const uint8_t* pFontData, FX_DWORD dwFontSize) { - CGDataProviderRef pDataProvider = - CGDataProviderCreateWithData(NULL, pFontData, (size_t)dwFontSize, NULL); - if (NULL == pDataProvider) { - return NULL; - } - CGFontRef pCGFont = CGFontCreateWithDataProvider(pDataProvider); - CGDataProviderRelease(pDataProvider); - return pCGFont; -} -void CQuartz2D::DestroyFont(void* pFont) { - CGFontRelease((CGFontRef)pFont); -} -void CQuartz2D::setGraphicsTextMatrix(void* graphics, CFX_Matrix* matrix) { - if (!graphics || !matrix) { - return; - } - CGContextRef context = (CGContextRef)graphics; - CGFloat ty = CGBitmapContextGetHeight(context) - matrix->f; - CGContextSetTextMatrix( - context, CGAffineTransformMake(matrix->a, matrix->b, matrix->c, matrix->d, - matrix->e, ty)); -} -FX_BOOL CQuartz2D::drawGraphicsString(void* graphics, - void* font, - FX_FLOAT fontSize, - FX_WORD* glyphIndices, - CGPoint* glyphPositions, - int32_t charsCount, - FX_ARGB argb, - CFX_Matrix* matrix) { - if (!graphics) { - return FALSE; - } - CGContextRef context = (CGContextRef)graphics; - CGContextSetFont(context, (CGFontRef)font); - CGContextSetFontSize(context, fontSize); - if (matrix) { - CGAffineTransform m = CGContextGetTextMatrix(context); - m = CGAffineTransformConcat( - m, CGAffineTransformMake(matrix->a, matrix->b, matrix->c, matrix->d, - matrix->e, matrix->f)); - CGContextSetTextMatrix(context, m); - } - int32_t a, r, g, b; - ArgbDecode(argb, a, r, g, b); - CGContextSetRGBFillColor(context, r / 255.f, g / 255.f, b / 255.f, a / 255.f); - CGContextSaveGState(context); -#if CGFLOAT_IS_DOUBLE - CGPoint* glyphPositionsCG = new CGPoint[charsCount]; - for (int index = 0; index < charsCount; ++index) { - glyphPositionsCG[index].x = glyphPositions[index].x; - glyphPositionsCG[index].y = glyphPositions[index].y; - } -#else - CGPoint* glyphPositionsCG = (CGPoint*)glyphPositions; -#endif - CGContextShowGlyphsAtPositions(context, (CGGlyph*)glyphIndices, - glyphPositionsCG, charsCount); -#if CGFLOAT_IS_DOUBLE - delete[] glyphPositionsCG; -#endif - CGContextRestoreGState(context); - return TRUE; -} -void CQuartz2D::saveGraphicsState(void* graphics) { - if (graphics) { - CGContextSaveGState((CGContextRef)graphics); - } -} -void CQuartz2D::restoreGraphicsState(void* graphics) { - if (graphics) { - CGContextRestoreGState((CGContextRef)graphics); - } -} -static CGContextRef createContextWithBitmap(CFX_DIBitmap* pBitmap) { - if (!pBitmap || pBitmap->IsCmykImage() || pBitmap->GetBPP() < 32) { - return NULL; - } - CGBitmapInfo bitmapInfo = kCGBitmapByteOrder32Little; - if (pBitmap->HasAlpha()) { - bitmapInfo |= kCGImageAlphaPremultipliedFirst; - } else { - bitmapInfo |= kCGImageAlphaNoneSkipFirst; - } - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGContextRef context = CGBitmapContextCreate( - pBitmap->GetBuffer(), pBitmap->GetWidth(), pBitmap->GetHeight(), 8, - pBitmap->GetPitch(), colorSpace, bitmapInfo); - CGColorSpaceRelease(colorSpace); - return context; -} -CFX_QuartzDeviceDriver::CFX_QuartzDeviceDriver(CGContextRef context, - int32_t deviceClass) { - m_saveCount = 0; - _context = context; - _deviceClass = deviceClass; - CGContextRetain(_context); - CGRect r = CGContextGetClipBoundingBox(context); - _width = FXSYS_round(r.size.width); - _height = FXSYS_round(r.size.height); - _renderCaps = FXRC_SOFT_CLIP | FXRC_BLEND_MODE | FXRC_ALPHA_PATH | - FXRC_ALPHA_IMAGE | FXRC_BIT_MASK | FXRC_ALPHA_MASK; - if (_deviceClass != FXDC_DISPLAY) { - } else { - CGImageRef image = CGBitmapContextCreateImage(_context); - if (image) { - _renderCaps |= FXRC_GET_BITS; - _width = CGImageGetWidth(image); - _height = CGImageGetHeight(image); - CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(image); - if (kCGImageAlphaPremultipliedFirst == alphaInfo || - kCGImageAlphaPremultipliedLast == alphaInfo || - kCGImageAlphaOnly == alphaInfo) { - _renderCaps |= FXRC_ALPHA_OUTPUT; - } - } - CGImageRelease(image); - } - CGAffineTransform ctm = CGContextGetCTM(_context); - CGContextSaveGState(_context); - m_saveCount++; - if (ctm.d >= 0) { - CGFloat offset_x, offset_y; - offset_x = ctm.tx; - offset_y = ctm.ty; - CGContextTranslateCTM(_context, -offset_x, -offset_y); - CGContextConcatCTM(_context, CGAffineTransformMake(1, 0, 0, -1, offset_x, - _height + offset_y)); - } - _foxitDevice2User = CGAffineTransformIdentity; - _user2FoxitDevice = CGAffineTransformInvert(_foxitDevice2User); -} -CFX_QuartzDeviceDriver::~CFX_QuartzDeviceDriver() { - CGContextRestoreGState(_context); - m_saveCount--; - for (int i = 0; i < m_saveCount; ++i) { - CGContextRestoreGState(_context); - } - if (_context) { - CGContextRelease(_context); - } -} -int CFX_QuartzDeviceDriver::GetDeviceCaps(int capsID) { - switch (capsID) { - case FXDC_DEVICE_CLASS: { - return _deviceClass; - } - case FXDC_PIXEL_WIDTH: { - return _width; - } - case FXDC_PIXEL_HEIGHT: { - return _height; - } - case FXDC_BITS_PIXEL: { - return 32; - } - case FXDC_RENDER_CAPS: { - return _renderCaps; - } - default: { return 0; } - } -} -CFX_Matrix CFX_QuartzDeviceDriver::GetCTM() const { - CGAffineTransform ctm = CGContextGetCTM(_context); - return CFX_Matrix(ctm.a, ctm.b, ctm.c, ctm.d, ctm.tx, ctm.ty); -} -void CFX_QuartzDeviceDriver::SaveState() { - CGContextSaveGState(_context); - m_saveCount++; -} -void CFX_QuartzDeviceDriver::RestoreState(FX_BOOL isKeepSaved) { - CGContextRestoreGState(_context); - if (isKeepSaved) { - CGContextSaveGState(_context); - } else { - m_saveCount--; - } -} -FX_BOOL CFX_QuartzDeviceDriver::SetClip_PathFill(const CFX_PathData* pathData, - const CFX_Matrix* matrix, - int fillMode) { - SaveState(); - CGAffineTransform m = CGAffineTransformIdentity; - if (matrix) { - m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(), - matrix->GetD(), matrix->GetE(), matrix->GetF()); - } - m = CGAffineTransformConcat(m, _foxitDevice2User); - CGContextConcatCTM(_context, m); - setPathToContext(pathData); - RestoreState(FALSE); - if ((fillMode & 3) == FXFILL_WINDING) { - CGContextClip(_context); - } else { - CGContextEOClip(_context); - } - return TRUE; -} -FX_FLOAT CFX_QuartzDeviceDriver::getLineWidth( - const CFX_GraphStateData* graphState, - CGAffineTransform ctm) { - FX_FLOAT lineWidth = graphState->m_LineWidth; - if (graphState->m_LineWidth <= 0.f) { - CGSize size; - size.width = 1; - size.height = 1; - CGSize temp = CGSizeApplyAffineTransform(size, ctm); - CGFloat x = 1 / temp.width; - CGFloat y = 1 / temp.height; - lineWidth = x > y ? x : y; - } - return lineWidth; -} -FX_BOOL CFX_QuartzDeviceDriver::SetClip_PathStroke( - const CFX_PathData* pathData, - const CFX_Matrix* matrix, - const CFX_GraphStateData* graphState) { - SaveState(); - CGAffineTransform m = CGAffineTransformIdentity; - if (matrix) { - m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(), - matrix->GetD(), matrix->GetE(), matrix->GetF()); - } - m = CGAffineTransformConcat(m, _foxitDevice2User); - CGContextConcatCTM(_context, m); - FX_FLOAT lineWidth = getLineWidth(graphState, m); - setStrokeInfo(graphState, 0xFF000000, lineWidth); - setPathToContext(pathData); - CGContextReplacePathWithStrokedPath(_context); - RestoreState(FALSE); - CGContextClip(_context); - return TRUE; -} -static CGBlendMode GetCGBlendMode(int blend_type) { - CGBlendMode mode = kCGBlendModeNormal; - switch (blend_type) { - case FXDIB_BLEND_NORMAL: - mode = kCGBlendModeNormal; - break; - case FXDIB_BLEND_MULTIPLY: - mode = kCGBlendModeMultiply; - break; - case FXDIB_BLEND_SCREEN: - mode = kCGBlendModeScreen; - break; - case FXDIB_BLEND_OVERLAY: - mode = kCGBlendModeOverlay; - break; - case FXDIB_BLEND_DARKEN: - mode = kCGBlendModeDarken; - break; - case FXDIB_BLEND_LIGHTEN: - mode = kCGBlendModeLighten; - break; - case FXDIB_BLEND_COLORDODGE: - mode = kCGBlendModeColorDodge; - break; - case FXDIB_BLEND_COLORBURN: - mode = kCGBlendModeColorBurn; - break; - case FXDIB_BLEND_HARDLIGHT: - mode = kCGBlendModeHardLight; - break; - case FXDIB_BLEND_SOFTLIGHT: - mode = kCGBlendModeSoftLight; - break; - case FXDIB_BLEND_DIFFERENCE: - mode = kCGBlendModeDifference; - break; - case FXDIB_BLEND_EXCLUSION: - mode = kCGBlendModeExclusion; - break; - case FXDIB_BLEND_HUE: - mode = kCGBlendModeHue; - break; - case FXDIB_BLEND_SATURATION: - mode = kCGBlendModeSaturation; - break; - case FXDIB_BLEND_COLOR: - mode = kCGBlendModeColor; - break; - case FXDIB_BLEND_LUMINOSITY: - mode = kCGBlendModeLuminosity; - break; - default: - mode = kCGBlendModeNormal; - break; - } - return mode; -} -FX_BOOL CFX_QuartzDeviceDriver::DrawPath(const CFX_PathData* pathData, - const CFX_Matrix* matrix, - const CFX_GraphStateData* graphState, - FX_DWORD fillArgb, - FX_DWORD strokeArgb, - int fillMode, - int alpha_flag, - void* pIccTransform, - int blend_type) { - SaveState(); - CGBlendMode mode = GetCGBlendMode(blend_type); - if (mode != kCGBlendModeNormal) { - CGContextSetBlendMode(_context, mode); - } - CGAffineTransform m = CGAffineTransformIdentity; - if (matrix) { - m = CGAffineTransformMake(matrix->GetA(), matrix->GetB(), matrix->GetC(), - matrix->GetD(), matrix->GetE(), matrix->GetF()); - } - m = CGAffineTransformConcat(m, _foxitDevice2User); - CGContextConcatCTM(_context, m); - int pathMode = 0; - if (graphState && strokeArgb) { - CGContextSetMiterLimit(_context, graphState->m_MiterLimit); - FX_FLOAT lineWidth = getLineWidth(graphState, m); - setStrokeInfo(graphState, strokeArgb, lineWidth); - pathMode |= 4; - } - if (fillMode && fillArgb) { - setFillInfo(fillArgb); - if ((fillMode & 3) == FXFILL_WINDING) { - pathMode |= 1; - } else if ((fillMode & 3) == FXFILL_ALTERNATE) { - pathMode |= 2; - } - } - setPathToContext(pathData); - if (fillMode & FXFILL_FULLCOVER) { - CGContextSetShouldAntialias(_context, false); - } - if (pathMode == 4) { - CGContextStrokePath(_context); - } else if (pathMode == 1) { - CGContextFillPath(_context); - } else if (pathMode == 2) { - CGContextEOFillPath(_context); - } else if (pathMode == 5) { - CGContextDrawPath(_context, kCGPathFillStroke); - } else if (pathMode == 6) { - CGContextDrawPath(_context, kCGPathEOFillStroke); - } - RestoreState(FALSE); - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::FillRect(const FX_RECT* rect, - FX_ARGB fillArgb, - int alphaFlag, - void* iccTransform, - int blend_type) { - CGBlendMode mode = GetCGBlendMode(blend_type); - if (mode != kCGBlendModeNormal) { - CGContextSetBlendMode(_context, mode); - } - CGRect rect_fx = - CGRectMake(rect->left, rect->top, rect->Width(), rect->Height()); - CGRect rect_usr = CGRectApplyAffineTransform(rect_fx, _foxitDevice2User); - int32_t a, r, g, b; - ArgbDecode(fillArgb, a, r, g, b); - CGContextSetRGBFillColor(_context, r / 255.f, g / 255.f, b / 255.f, - a / 255.f); - CGContextFillRect(_context, rect_usr); - if (mode != kCGBlendModeNormal) { - CGContextSetBlendMode(_context, kCGBlendModeNormal); - } - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_DWORD argb, - int alphaFlag, - void* iccTransform, - int blend_type) { - CGBlendMode mode = GetCGBlendMode(blend_type); - if (mode != kCGBlendModeNormal) { - CGContextSetBlendMode(_context, mode); - } - CGPoint pt = - CGPointApplyAffineTransform(CGPointMake(x1, y1), _foxitDevice2User); - x1 = pt.x; - y1 = pt.y; - pt = CGPointApplyAffineTransform(CGPointMake(x2, y2), _foxitDevice2User); - x2 = pt.x; - y2 = pt.y; - int32_t a, r, g, b; - ArgbDecode(argb, a, r, g, b); - CGContextSetRGBStrokeColor(_context, r / 255.f, g / 255.f, b / 255.f, - a / 255.f); - CGContextMoveToPoint(_context, x1, y1); - CGContextAddLineToPoint(_context, x2, y2); - CGContextStrokePath(_context); - if (mode != kCGBlendModeNormal) { - CGContextSetBlendMode(_context, kCGBlendModeNormal); - } - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::GetClipBox(FX_RECT* rect) { - CGRect r = CGContextGetClipBoundingBox(_context); - r = CGRectApplyAffineTransform(r, _user2FoxitDevice); - rect->left = FXSYS_floor(r.origin.x); - rect->top = FXSYS_floor(r.origin.y); - rect->right = FXSYS_ceil(r.origin.x + r.size.width); - rect->bottom = FXSYS_ceil(r.origin.y + r.size.height); - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::GetDIBits(CFX_DIBitmap* bitmap, - int32_t left, - int32_t top, - void* pIccTransform, - FX_BOOL bDEdge) { - if (FXDC_PRINTER == _deviceClass) { - return FALSE; - } - if (bitmap->GetBPP() < 32) { - return FALSE; - } - if (!(_renderCaps | FXRC_GET_BITS)) { - return FALSE; - } - CGPoint pt = CGPointMake(left, top); - pt = CGPointApplyAffineTransform(pt, _foxitDevice2User); - CGAffineTransform ctm = CGContextGetCTM(_context); - pt.x *= FXSYS_fabs(ctm.a); - pt.y *= FXSYS_fabs(ctm.d); - CGImageRef image = CGBitmapContextCreateImage(_context); - if (NULL == image) { - return FALSE; - } - CGFloat width = (CGFloat)bitmap->GetWidth(); - CGFloat height = (CGFloat)bitmap->GetHeight(); - if (width + pt.x > _width) { - width -= (width + pt.x - _width); - } - if (height + pt.y > _height) { - height -= (height + pt.y - _height); - } - CGImageRef subImage = CGImageCreateWithImageInRect( - image, CGRectMake(pt.x, pt.y, width, height)); - CGContextRef context = createContextWithBitmap(bitmap); - CGRect rect = CGContextGetClipBoundingBox(context); - CGContextClearRect(context, rect); - CGContextDrawImage(context, rect, subImage); - CGContextRelease(context); - CGImageRelease(subImage); - CGImageRelease(image); - if (bitmap->HasAlpha()) { - for (int row = 0; row < bitmap->GetHeight(); row++) { - uint8_t* pScanline = (uint8_t*)bitmap->GetScanline(row); - for (int col = 0; col < bitmap->GetWidth(); col++) { - if (pScanline[3] > 0) { - pScanline[0] = (pScanline[0] * 255.f / pScanline[3] + .5f); - pScanline[1] = (pScanline[1] * 255.f / pScanline[3] + .5f); - pScanline[2] = (pScanline[2] * 255.f / pScanline[3] + .5f); - } - pScanline += 4; - } - } - } - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, - FX_ARGB argb, - const FX_RECT* srcRect, - int dest_left, - int dest_top, - int blendType, - int alphaFlag, - void* iccTransform) { - SaveState(); - CGFloat src_left, src_top, src_width, src_height; - if (srcRect) { - src_left = srcRect->left; - src_top = srcRect->top; - src_width = srcRect->Width(); - src_height = srcRect->Height(); - } else { - src_left = src_top = 0; - src_width = pBitmap->GetWidth(); - src_height = pBitmap->GetHeight(); - } - CGAffineTransform ctm = CGContextGetCTM(_context); - CGFloat scale_x = FXSYS_fabs(ctm.a); - CGFloat scale_y = FXSYS_fabs(ctm.d); - src_left /= scale_x; - src_top /= scale_y; - src_width /= scale_x; - src_height /= scale_y; - CGRect rect_fx = CGRectMake(dest_left, dest_top, src_width, src_height); - CGRect rect_usr = CGRectApplyAffineTransform(rect_fx, _foxitDevice2User); - CGContextBeginPath(_context); - CGContextAddRect(_context, rect_usr); - CGContextClip(_context); - rect_usr.size = - CGSizeMake(pBitmap->GetWidth() / scale_x, pBitmap->GetHeight() / scale_y); - rect_usr = CGRectOffset(rect_usr, -src_left, -src_top); - CG_SetImageTransform(dest_left, dest_top, src_width, src_height, &rect_usr); - CFX_DIBitmap* pBitmap1 = NULL; - if (pBitmap->IsAlphaMask()) { - if (pBitmap->GetBuffer()) { - pBitmap1 = (CFX_DIBitmap*)pBitmap; - } else { - pBitmap1 = pBitmap->Clone(); - } - if (NULL == pBitmap1) { - RestoreState(FALSE); - return FALSE; - } - CGDataProviderRef pBitmapProvider = CGDataProviderCreateWithData( - NULL, pBitmap1->GetBuffer(), - pBitmap1->GetPitch() * pBitmap1->GetHeight(), NULL); - CGColorSpaceRef pColorSpace = CGColorSpaceCreateDeviceGray(); - CGBitmapInfo bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault; - CGImageRef pImage = CGImageCreate( - pBitmap1->GetWidth(), pBitmap1->GetHeight(), pBitmap1->GetBPP(), - pBitmap1->GetBPP(), pBitmap1->GetPitch(), pColorSpace, bitmapInfo, - pBitmapProvider, NULL, true, kCGRenderingIntentDefault); - CGContextClipToMask(_context, rect_usr, pImage); - CGContextSetRGBFillColor(_context, FXARGB_R(argb) / 255.f, - FXARGB_G(argb) / 255.f, FXARGB_B(argb) / 255.f, - FXARGB_A(argb) / 255.f); - CGContextFillRect(_context, rect_usr); - CGImageRelease(pImage); - CGColorSpaceRelease(pColorSpace); - CGDataProviderRelease(pBitmapProvider); - if (pBitmap1 != pBitmap) { - delete pBitmap1; - } - RestoreState(FALSE); - return TRUE; - } - if (pBitmap->GetBPP() < 32) { - pBitmap1 = pBitmap->CloneConvert(FXDIB_Rgb32); - } else { - if (pBitmap->GetBuffer()) { - pBitmap1 = (CFX_DIBitmap*)pBitmap; - } else { - pBitmap1 = pBitmap->Clone(); - } - } - if (NULL == pBitmap1) { - RestoreState(FALSE); - return FALSE; - } - if (pBitmap1->HasAlpha()) { - if (pBitmap1 == pBitmap) { - pBitmap1 = pBitmap->Clone(); - if (!pBitmap1) { - RestoreState(FALSE); - return FALSE; - } - } - for (int row = 0; row < pBitmap1->GetHeight(); row++) { - uint8_t* pScanline = (uint8_t*)pBitmap1->GetScanline(row); - for (int col = 0; col < pBitmap1->GetWidth(); col++) { - pScanline[0] = (uint8_t)(pScanline[0] * pScanline[3] / 255.f + .5f); - pScanline[1] = (uint8_t)(pScanline[1] * pScanline[3] / 255.f + .5f); - pScanline[2] = (uint8_t)(pScanline[2] * pScanline[3] / 255.f + .5f); - pScanline += 4; - } - } - } - CGContextRef ctx = createContextWithBitmap(pBitmap1); - CGImageRef image = CGBitmapContextCreateImage(ctx); - int blend_mode = blendType; - if (FXDIB_BLEND_HARDLIGHT == blendType) { - blend_mode = kCGBlendModeSoftLight; - } else if (FXDIB_BLEND_SOFTLIGHT == blendType) { - blend_mode = kCGBlendModeHardLight; - } else if (blendType >= FXDIB_BLEND_NONSEPARABLE && - blendType <= FXDIB_BLEND_LUMINOSITY) { - blend_mode = blendType - 9; - } else if (blendType > FXDIB_BLEND_LUMINOSITY || blendType < 0) { - blend_mode = kCGBlendModeNormal; - } - CGContextSetBlendMode(_context, (CGBlendMode)blend_mode); - CGContextDrawImage(_context, rect_usr, image); - CGImageRelease(image); - CGContextRelease(ctx); - if (pBitmap1 != pBitmap) { - delete pBitmap1; - } - RestoreState(FALSE); - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::StretchDIBits(const CFX_DIBSource* pBitmap, - FX_ARGB argb, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* clipRect, - FX_DWORD flags, - int alphaFlag, - void* iccTransform, - int blend_type) { - SaveState(); - if (clipRect) { - CGContextBeginPath(_context); - CGRect rect_clip = CGRectMake(clipRect->left, clipRect->top, - clipRect->Width(), clipRect->Height()); - rect_clip = CGRectApplyAffineTransform(rect_clip, _foxitDevice2User); - CGContextAddRect(_context, rect_clip); - CGContextClip(_context); - } - CGRect rect = CGRectMake(dest_left, dest_top, dest_width, dest_height); - rect = CGRectApplyAffineTransform(rect, _foxitDevice2User); - if (FXDIB_BICUBIC_INTERPOL == flags) { - CGContextSetInterpolationQuality(_context, kCGInterpolationHigh); - } else if (FXDIB_DOWNSAMPLE == flags) { - CGContextSetInterpolationQuality(_context, kCGInterpolationNone); - } else { - CGContextSetInterpolationQuality(_context, kCGInterpolationMedium); - } - CG_SetImageTransform(dest_left, dest_top, dest_width, dest_height); - CFX_DIBitmap* pBitmap1 = NULL; - if (pBitmap->IsAlphaMask()) { - if (pBitmap->GetBuffer()) { - pBitmap1 = (CFX_DIBitmap*)pBitmap; - } else { - pBitmap1 = pBitmap->Clone(); - } - if (NULL == pBitmap1) { - RestoreState(FALSE); - return FALSE; - } - CGDataProviderRef pBitmapProvider = CGDataProviderCreateWithData( - NULL, pBitmap1->GetBuffer(), - pBitmap1->GetPitch() * pBitmap1->GetHeight(), NULL); - CGColorSpaceRef pColorSpace = CGColorSpaceCreateDeviceGray(); - CGBitmapInfo bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault; - CGImageRef pImage = CGImageCreate( - pBitmap1->GetWidth(), pBitmap1->GetHeight(), pBitmap1->GetBPP(), - pBitmap1->GetBPP(), pBitmap1->GetPitch(), pColorSpace, bitmapInfo, - pBitmapProvider, NULL, true, kCGRenderingIntentDefault); - CGContextClipToMask(_context, rect, pImage); - CGContextSetRGBFillColor(_context, FXARGB_R(argb) / 255.f, - FXARGB_G(argb) / 255.f, FXARGB_B(argb) / 255.f, - FXARGB_A(argb) / 255.f); - CGContextFillRect(_context, rect); - CGImageRelease(pImage); - CGColorSpaceRelease(pColorSpace); - CGDataProviderRelease(pBitmapProvider); - if (pBitmap1 != pBitmap) { - delete pBitmap1; - } - RestoreState(FALSE); - return TRUE; - } - if (pBitmap->GetBPP() < 32) { - pBitmap1 = pBitmap->CloneConvert(FXDIB_Rgb32); - } else { - if (pBitmap->GetBuffer()) { - pBitmap1 = (CFX_DIBitmap*)pBitmap; - } else { - pBitmap1 = pBitmap->Clone(); - } - } - if (NULL == pBitmap1) { - RestoreState(FALSE); - return FALSE; - } - if (pBitmap1->HasAlpha()) { - if (pBitmap1 == pBitmap) { - pBitmap1 = pBitmap->Clone(); - if (!pBitmap1) { - RestoreState(FALSE); - return FALSE; - } - } - for (int row = 0; row < pBitmap1->GetHeight(); row++) { - uint8_t* pScanline = (uint8_t*)pBitmap1->GetScanline(row); - for (int col = 0; col < pBitmap1->GetWidth(); col++) { - pScanline[0] = (uint8_t)(pScanline[0] * pScanline[3] / 255.f + .5f); - pScanline[1] = (uint8_t)(pScanline[1] * pScanline[3] / 255.f + .5f); - pScanline[2] = (uint8_t)(pScanline[2] * pScanline[3] / 255.f + .5f); - pScanline += 4; - } - } - } - CGContextRef ctx = createContextWithBitmap(pBitmap1); - CGImageRef image = CGBitmapContextCreateImage(ctx); - CGContextDrawImage(_context, rect, image); - CGImageRelease(image); - CGContextRelease(ctx); - if (pBitmap1 != pBitmap) { - delete pBitmap1; - } - RestoreState(FALSE); - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::CG_DrawGlypRun(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pGlyphMatrix, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD argb, - int alpha_flag, - void* pIccTransform) { - if (nChars == 0) { - return TRUE; - } - CQuartz2D& quartz2d = - ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d; - if (!pFont->GetPlatformFont()) { - if (pFont->GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) { - return FALSE; - } - pFont->SetPlatformFont( - quartz2d.CreateFont(pFont->GetFontData(), pFont->GetSize())); - if (!pFont->GetPlatformFont()) { - return FALSE; - } - } - CFX_FixedBufGrow glyph_indices(nChars); - CFX_FixedBufGrow glyph_positions(nChars); - for (int i = 0; i < nChars; i++) { - glyph_indices[i] = pCharPos[i].m_ExtGID; - glyph_positions[i].x = pCharPos[i].m_OriginX; - glyph_positions[i].y = pCharPos[i].m_OriginY; - } - CFX_Matrix text_matrix; - if (pObject2Device) { - text_matrix.Concat(*pObject2Device); - } - CGAffineTransform matrix_cg = - CGAffineTransformMake(text_matrix.a, text_matrix.b, text_matrix.c, - text_matrix.d, text_matrix.e, text_matrix.f); - matrix_cg = CGAffineTransformConcat(matrix_cg, _foxitDevice2User); - CGContextSetTextMatrix(_context, matrix_cg); - CGContextSetFont(_context, (CGFontRef)pFont->GetPlatformFont()); - CGContextSetFontSize(_context, FXSYS_fabs(font_size)); - int32_t a, r, g, b; - ArgbDecode(argb, a, r, g, b); - CGContextSetRGBFillColor(_context, r / 255.f, g / 255.f, b / 255.f, - a / 255.f); - SaveState(); - if (pGlyphMatrix) { - CGPoint origin = CGPointMake(glyph_positions[0].x, glyph_positions[0].y); - origin = CGPointApplyAffineTransform(origin, matrix_cg); - CGContextTranslateCTM(_context, origin.x, origin.y); - CGAffineTransform glyph_matrix = CGAffineTransformMake( - pGlyphMatrix->a, pGlyphMatrix->b, pGlyphMatrix->c, pGlyphMatrix->d, - pGlyphMatrix->e, pGlyphMatrix->f); - if (_foxitDevice2User.d < 0) { - glyph_matrix = CGAffineTransformInvert(glyph_matrix); - } - CGContextConcatCTM(_context, glyph_matrix); - CGContextTranslateCTM(_context, -origin.x, -origin.y); - } - CGContextShowGlyphsAtPositions(_context, (CGGlyph*)glyph_indices, - glyph_positions, nChars); - RestoreState(FALSE); - return TRUE; -} -FX_BOOL CFX_QuartzDeviceDriver::DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - if (NULL == pFont || NULL == _context) { - return FALSE; - } - FX_BOOL bBold = pFont->IsBold(); - if (!bBold && pFont->GetSubstFont() && - pFont->GetSubstFont()->m_Weight >= 500 && - pFont->GetSubstFont()->m_Weight <= 600) { - return FALSE; - } - SaveState(); - CGContextSetTextDrawingMode(_context, kCGTextFillClip); - FX_BOOL ret = FALSE; - int32_t i = 0; - while (i < nChars) { - if (pCharPos[i].m_bGlyphAdjust || font_size < 0) { - if (i > 0) { - ret = CG_DrawGlypRun(i, pCharPos, pFont, pCache, NULL, pObject2Device, - font_size, color, alpha_flag, pIccTransform); - if (!ret) { - RestoreState(FALSE); - return ret; - } - } - const FXTEXT_CHARPOS* char_pos = pCharPos + i; - CFX_Matrix glphy_matrix; - if (font_size < 0) { - glphy_matrix.Concat(-1, 0, 0, -1, 0, 0); - } - if (char_pos->m_bGlyphAdjust) { - glphy_matrix.Concat( - char_pos->m_AdjustMatrix[0], char_pos->m_AdjustMatrix[1], - char_pos->m_AdjustMatrix[2], char_pos->m_AdjustMatrix[3], 0, 0); - } - ret = CG_DrawGlypRun(1, char_pos, pFont, pCache, &glphy_matrix, - pObject2Device, font_size, color, alpha_flag, - pIccTransform); - if (!ret) { - RestoreState(FALSE); - return ret; - } - i++; - pCharPos += i; - nChars -= i; - i = 0; - } else { - i++; - } - } - if (i > 0) { - ret = CG_DrawGlypRun(i, pCharPos, pFont, pCache, NULL, pObject2Device, - font_size, color, alpha_flag, pIccTransform); - } - RestoreState(FALSE); - return ret; -} -void CFX_QuartzDeviceDriver::setStrokeInfo(const CFX_GraphStateData* graphState, - FX_ARGB argb, - FX_FLOAT lineWidth) { - if (NULL == graphState) { - return; - } - CGContextSetLineWidth(_context, lineWidth); - CGLineCap cap; - switch (graphState->m_LineCap) { - case CFX_GraphStateData::LineCapRound: { - cap = kCGLineCapRound; - break; - } - case CFX_GraphStateData::LineCapSquare: { - cap = kCGLineCapSquare; - break; - } - case CFX_GraphStateData::LineCapButt: - default: { cap = kCGLineCapButt; } - } - CGContextSetLineCap(_context, cap); - CGLineJoin join; - switch (graphState->m_LineJoin) { - case CFX_GraphStateData::LineJoinRound: { - join = kCGLineJoinRound; - break; - } - case CFX_GraphStateData::LineJoinBevel: { - join = kCGLineJoinBevel; - break; - } - case CFX_GraphStateData::LineJoinMiter: - default: { join = kCGLineJoinMiter; } - } - CGContextSetLineJoin(_context, join); - if (graphState->m_DashCount) { -#if CGFLOAT_IS_DOUBLE - CGFloat* dashArray = new CGFloat[graphState->m_DashCount]; - for (int index = 0; index < graphState->m_DashCount; ++index) { - dashArray[index] = graphState->m_DashArray[index]; - } -#else - CGFloat* dashArray = (CGFloat*)graphState->m_DashArray; -#endif - CGContextSetLineDash(_context, graphState->m_DashPhase, dashArray, - graphState->m_DashCount); -#if CGFLOAT_IS_DOUBLE - delete[] dashArray; -#endif - } - int32_t a, r, g, b; - ArgbDecode(argb, a, r, g, b); - CGContextSetRGBStrokeColor(_context, r / 255.f, g / 255.f, b / 255.f, - a / 255.f); -} -void CFX_QuartzDeviceDriver::setFillInfo(FX_ARGB argb) { - int32_t a, r, g, b; - ArgbDecode(argb, a, r, g, b); - CGContextSetRGBFillColor(_context, r / 255.f, g / 255.f, b / 255.f, - a / 255.f); -} -void CFX_QuartzDeviceDriver::setPathToContext(const CFX_PathData* pathData) { - int32_t count = pathData->GetPointCount(); - FX_PATHPOINT* points = pathData->GetPoints(); - CGContextBeginPath(_context); - for (int32_t i = 0; i < count; i++) { - switch (points[i].m_Flag & FXPT_TYPE) { - case FXPT_MOVETO: - CGContextMoveToPoint(_context, points[i].m_PointX, points[i].m_PointY); - break; - case FXPT_LINETO: - CGContextAddLineToPoint(_context, points[i].m_PointX, - points[i].m_PointY); - break; - case FXPT_BEZIERTO: { - CGContextAddCurveToPoint(_context, points[i].m_PointX, - points[i].m_PointY, points[i + 1].m_PointX, - points[i + 1].m_PointY, points[i + 2].m_PointX, - points[i + 2].m_PointY); - i += 2; - } - } - if (points[i].m_Flag & FXPT_CLOSEFIGURE) { - CGContextClosePath(_context); - } - } -} -void CFX_QuartzDeviceDriver::CG_SetImageTransform(int dest_left, - int dest_top, - int dest_width, - int dest_height, - CGRect* rect) { - int flip_y = _foxitDevice2User.d * dest_height < 0 ? 1 : -1; - int flip_x = _foxitDevice2User.a * dest_width > 0 ? 1 : -1; - if (flip_y < 0 || flip_x < 0) { - if (dest_height < 0) { - dest_height = -dest_height; - dest_top -= dest_height; - } - CGRect rt = CGRectApplyAffineTransform( - CGRectMake(dest_left, dest_top, dest_width, dest_height), - _foxitDevice2User); - CGFloat offset_x = (rt.origin.x) + rt.size.width / 2.f, - offset_y = (rt.origin.y) + rt.size.height / 2.f; - CGAffineTransform transform = CGAffineTransformIdentity; - transform = CGAffineTransformConcat( - transform, CGAffineTransformMake(1, 0, 0, 1, -offset_x, -offset_y)); - transform = CGAffineTransformConcat( - transform, CGAffineTransformMake(flip_x, 0, 0, flip_y, 0, 0)); - transform = CGAffineTransformConcat( - transform, CGAffineTransformMake(1, 0, 0, 1, offset_x, offset_y)); - CGContextConcatCTM(_context, transform); - if (rect) { - *rect = CGRectApplyAffineTransform(*rect, transform); - } - } -} -void CFX_QuartzDeviceDriver::ClearDriver() { - if (NULL == _context) { - return; - } - for (int i = 0; i < m_saveCount; ++i) { - CGContextRestoreGState(_context); - } - m_saveCount = 0; - if (_context) { - CGContextRelease(_context); - } -} -CFX_QuartzDevice::CFX_QuartzDevice() { - m_bOwnedBitmap = FALSE; - m_pContext = NULL; -} -CFX_QuartzDevice::~CFX_QuartzDevice() { - if (m_pContext) { - CGContextRelease(m_pContext); - } - if (m_bOwnedBitmap) { - delete GetBitmap(); - } -} -CGContextRef CFX_QuartzDevice::GetContext() { - return m_pContext; -} -FX_BOOL CFX_QuartzDevice::Attach(CGContextRef context, int32_t nDeviceClass) { - if (m_pContext) { - CGContextRelease(m_pContext); - } - m_pContext = context; - CGContextRetain(m_pContext); - IFX_RenderDeviceDriver* pDriver = - new CFX_QuartzDeviceDriver(m_pContext, nDeviceClass); - SetDeviceDriver(pDriver); - return TRUE; -} -FX_BOOL CFX_QuartzDevice::Attach(CFX_DIBitmap* pBitmap) { - SetBitmap(pBitmap); - m_pContext = createContextWithBitmap(pBitmap); - if (NULL == m_pContext) { - return FALSE; - } - IFX_RenderDeviceDriver* pDriver = - new CFX_QuartzDeviceDriver(m_pContext, FXDC_DISPLAY); - SetDeviceDriver(pDriver); - return TRUE; -} -FX_BOOL CFX_QuartzDevice::Create(int32_t width, - int32_t height, - FXDIB_Format format) { - if ((uint8_t)format < 32) { - return FALSE; - } - CFX_DIBitmap* pBitmap = new CFX_DIBitmap; - if (!pBitmap->Create(width, height, format)) { - delete pBitmap; - return FALSE; - } - m_bOwnedBitmap = TRUE; - return Attach(pBitmap); -} -#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ diff --git a/core/src/fxge/dib/dib_int.h b/core/src/fxge/dib/dib_int.h deleted file mode 100644 index b89e19f875..0000000000 --- a/core/src/fxge/dib/dib_int.h +++ /dev/null @@ -1,107 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_DIB_DIB_INT_H_ -#define CORE_SRC_FXGE_DIB_DIB_INT_H_ - -#include - -#include "core/include/fxcrt/fx_coordinates.h" -#include "core/include/fxge/fx_dib.h" - -class IFX_ScanlineComposer; - -extern const int16_t SDP_Table[513]; - -class CPDF_FixedMatrix { - public: - CPDF_FixedMatrix(const CFX_Matrix& src, int bits) { - base = 1 << bits; - a = FXSYS_round(src.a * base); - b = FXSYS_round(src.b * base); - c = FXSYS_round(src.c * base); - d = FXSYS_round(src.d * base); - e = FXSYS_round(src.e * base); - f = FXSYS_round(src.f * base); - } - inline void Transform(int x, int y, int& x1, int& y1) { - x1 = (a * x + c * y + e + base / 2) / base; - y1 = (b * x + d * y + f + base / 2) / base; - } - int a, b, c, d, e, f; - int base; -}; -#define FPDF_HUGE_IMAGE_SIZE 60000000 -struct PixelWeight { - int m_SrcStart; - int m_SrcEnd; - int m_Weights[1]; -}; -class CWeightTable { - public: - CWeightTable() { m_pWeightTables = NULL; } - ~CWeightTable() { - FX_Free(m_pWeightTables); - m_pWeightTables = NULL; - } - void Calc(int dest_len, - int dest_min, - int dest_max, - int src_len, - int src_min, - int src_max, - int flags); - PixelWeight* GetPixelWeight(int pixel) { - return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize); - } - int m_DestMin, m_ItemSize; - uint8_t* m_pWeightTables; -}; -class CStretchEngine { - public: - CStretchEngine(IFX_ScanlineComposer* pDestBitmap, - FXDIB_Format dest_format, - int dest_width, - int dest_height, - const FX_RECT& clip_rect, - const CFX_DIBSource* pSrcBitmap, - int flags); - ~CStretchEngine(); - FX_BOOL Continue(IFX_Pause* pPause); - - public: - FXDIB_Format m_DestFormat; - int m_DestBpp, m_SrcBpp, m_bHasAlpha; - IFX_ScanlineComposer* m_pDestBitmap; - int m_DestWidth, m_DestHeight; - FX_RECT m_DestClip; - uint8_t* m_pDestScanline; - uint8_t* m_pDestMaskScanline; - FX_RECT m_SrcClip; - const CFX_DIBSource* m_pSource; - FX_DWORD* m_pSrcPalette; - int m_SrcWidth, m_SrcHeight; - int m_SrcPitch, m_InterPitch; - int m_ExtraMaskPitch; - unsigned char* m_pInterBuf; - unsigned char* m_pExtraAlphaBuf; - int m_TransMethod; - int m_Flags; - CWeightTable m_WeightTable; - int m_CurRow; - FX_BOOL StartStretchHorz(); - FX_BOOL ContinueStretchHorz(IFX_Pause* pPause); - void StretchVert(); - int m_State; -}; - -FX_RECT FXDIB_SwapClipBox(FX_RECT& clip, - int width, - int height, - FX_BOOL bFlipX, - FX_BOOL bFlipY); - -#endif // CORE_SRC_FXGE_DIB_DIB_INT_H_ diff --git a/core/src/fxge/dib/fx_dib_composite.cpp b/core/src/fxge/dib/fx_dib_composite.cpp deleted file mode 100644 index e2781d6244..0000000000 --- a/core/src/fxge/dib/fx_dib_composite.cpp +++ /dev/null @@ -1,5210 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/dib/dib_int.h" - -const uint8_t _color_sqrt[256] = { - 0x00, 0x03, 0x07, 0x0B, 0x0F, 0x12, 0x16, 0x19, 0x1D, 0x20, 0x23, 0x26, - 0x29, 0x2C, 0x2F, 0x32, 0x35, 0x37, 0x3A, 0x3C, 0x3F, 0x41, 0x43, 0x46, - 0x48, 0x4A, 0x4C, 0x4E, 0x50, 0x52, 0x54, 0x56, 0x57, 0x59, 0x5B, 0x5C, - 0x5E, 0x60, 0x61, 0x63, 0x64, 0x65, 0x67, 0x68, 0x69, 0x6B, 0x6C, 0x6D, - 0x6E, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, - 0x7B, 0x7C, 0x7D, 0x7E, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x91, - 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, - 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA4, 0xA5, - 0xA6, 0xA7, 0xA7, 0xA8, 0xA9, 0xAA, 0xAA, 0xAB, 0xAC, 0xAD, 0xAD, 0xAE, - 0xAF, 0xB0, 0xB0, 0xB1, 0xB2, 0xB3, 0xB3, 0xB4, 0xB5, 0xB5, 0xB6, 0xB7, - 0xB7, 0xB8, 0xB9, 0xBA, 0xBA, 0xBB, 0xBC, 0xBC, 0xBD, 0xBE, 0xBE, 0xBF, - 0xC0, 0xC0, 0xC1, 0xC2, 0xC2, 0xC3, 0xC4, 0xC4, 0xC5, 0xC6, 0xC6, 0xC7, - 0xC7, 0xC8, 0xC9, 0xC9, 0xCA, 0xCB, 0xCB, 0xCC, 0xCC, 0xCD, 0xCE, 0xCE, - 0xCF, 0xD0, 0xD0, 0xD1, 0xD1, 0xD2, 0xD3, 0xD3, 0xD4, 0xD4, 0xD5, 0xD6, - 0xD6, 0xD7, 0xD7, 0xD8, 0xD9, 0xD9, 0xDA, 0xDA, 0xDB, 0xDC, 0xDC, 0xDD, - 0xDD, 0xDE, 0xDE, 0xDF, 0xE0, 0xE0, 0xE1, 0xE1, 0xE2, 0xE2, 0xE3, 0xE4, - 0xE4, 0xE5, 0xE5, 0xE6, 0xE6, 0xE7, 0xE7, 0xE8, 0xE9, 0xE9, 0xEA, 0xEA, - 0xEB, 0xEB, 0xEC, 0xEC, 0xED, 0xED, 0xEE, 0xEE, 0xEF, 0xF0, 0xF0, 0xF1, - 0xF1, 0xF2, 0xF2, 0xF3, 0xF3, 0xF4, 0xF4, 0xF5, 0xF5, 0xF6, 0xF6, 0xF7, - 0xF7, 0xF8, 0xF8, 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC, 0xFD, - 0xFD, 0xFE, 0xFE, 0xFF}; -int _BLEND(int blend_mode, int back_color, int src_color) { - switch (blend_mode) { - case FXDIB_BLEND_NORMAL: - return src_color; - case FXDIB_BLEND_MULTIPLY: - return src_color * back_color / 255; - case FXDIB_BLEND_SCREEN: - return src_color + back_color - src_color * back_color / 255; - case FXDIB_BLEND_OVERLAY: - return _BLEND(FXDIB_BLEND_HARDLIGHT, src_color, back_color); - case FXDIB_BLEND_DARKEN: - return src_color < back_color ? src_color : back_color; - case FXDIB_BLEND_LIGHTEN: - return src_color > back_color ? src_color : back_color; - case FXDIB_BLEND_COLORDODGE: { - if (src_color == 255) { - return src_color; - } - int result = back_color * 255 / (255 - src_color); - if (result > 255) { - return 255; - } - return result; - } - case FXDIB_BLEND_COLORBURN: { - if (src_color == 0) { - return src_color; - } - int result = (255 - back_color) * 255 / src_color; - if (result > 255) { - result = 255; - } - return 255 - result; - } - case FXDIB_BLEND_HARDLIGHT: - if (src_color < 128) { - return (src_color * back_color * 2) / 255; - } - return _BLEND(FXDIB_BLEND_SCREEN, back_color, 2 * src_color - 255); - case FXDIB_BLEND_SOFTLIGHT: { - if (src_color < 128) { - return back_color - - (255 - 2 * src_color) * back_color * (255 - back_color) / 255 / - 255; - } - return back_color + - (2 * src_color - 255) * (_color_sqrt[back_color] - back_color) / - 255; - } - case FXDIB_BLEND_DIFFERENCE: - return back_color < src_color ? src_color - back_color - : back_color - src_color; - case FXDIB_BLEND_EXCLUSION: - return back_color + src_color - 2 * back_color * src_color / 255; - } - return src_color; -} -struct _RGB { - int red; - int green; - int blue; -}; -static inline int _Lum(_RGB color) { - return (color.red * 30 + color.green * 59 + color.blue * 11) / 100; -} -static _RGB _ClipColor(_RGB color) { - int l = _Lum(color); - int n = color.red; - if (color.green < n) { - n = color.green; - } - if (color.blue < n) { - n = color.blue; - } - int x = color.red; - if (color.green > x) { - x = color.green; - } - if (color.blue > x) { - x = color.blue; - } - if (n < 0) { - color.red = l + ((color.red - l) * l / (l - n)); - color.green = l + ((color.green - l) * l / (l - n)); - color.blue = l + ((color.blue - l) * l / (l - n)); - } - if (x > 255) { - color.red = l + ((color.red - l) * (255 - l) / (x - l)); - color.green = l + ((color.green - l) * (255 - l) / (x - l)); - color.blue = l + ((color.blue - l) * (255 - l) / (x - l)); - } - return color; -} -static _RGB _SetLum(_RGB color, int l) { - int d = l - _Lum(color); - color.red += d; - color.green += d; - color.blue += d; - return _ClipColor(color); -} -static int _Sat(_RGB color) { - int n = color.red; - if (color.green < n) { - n = color.green; - } - if (color.blue < n) { - n = color.blue; - } - int x = color.red; - if (color.green > x) { - x = color.green; - } - if (color.blue > x) { - x = color.blue; - } - return x - n; -} -static _RGB _SetSat(_RGB color, int s) { - int* max = &color.red; - int* mid = &color.red; - int* min = &color.red; - if (color.green > *max) { - max = &color.green; - } - if (color.blue > *max) { - max = &color.blue; - } - if (color.green < *min) { - min = &color.green; - } - if (color.blue < *min) { - min = &color.blue; - } - if (*max == *min) { - color.red = 0; - color.green = 0; - color.blue = 0; - return color; - } - if (max == &color.red) { - if (min == &color.green) { - mid = &color.blue; - } else { - mid = &color.green; - } - } else if (max == &color.green) { - if (min == &color.red) { - mid = &color.blue; - } else { - mid = &color.red; - } - } else { - if (min == &color.green) { - mid = &color.red; - } else { - mid = &color.green; - } - } - if (*max > *min) { - *mid = (*mid - *min) * s / (*max - *min); - *max = s; - *min = 0; - } - return color; -} -void _RGB_Blend(int blend_mode, - const uint8_t* src_scan, - uint8_t* dest_scan, - int results[3]) { - _RGB src, back, result; - src.red = src_scan[2]; - src.green = src_scan[1]; - src.blue = src_scan[0]; - back.red = dest_scan[2]; - back.green = dest_scan[1]; - back.blue = dest_scan[0]; - switch (blend_mode) { - case FXDIB_BLEND_HUE: - result = _SetLum(_SetSat(src, _Sat(back)), _Lum(back)); - break; - case FXDIB_BLEND_SATURATION: - result = _SetLum(_SetSat(back, _Sat(src)), _Lum(back)); - break; - case FXDIB_BLEND_COLOR: - result = _SetLum(src, _Lum(back)); - break; - case FXDIB_BLEND_LUMINOSITY: - result = _SetLum(back, _Lum(src)); - break; - } - results[0] = result.blue; - results[1] = result.green; - results[2] = result.red; -} -inline void _CompositeRow_Argb2Mask(uint8_t* dest_scan, - const uint8_t* src_scan, - int pixel_count, - const uint8_t* clip_scan) { - src_scan += 3; - for (int col = 0; col < pixel_count; col++) { - int src_alpha = *src_scan; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - uint8_t back_alpha = *dest_scan; - if (!back_alpha) { - *dest_scan = src_alpha; - } else if (src_alpha) { - *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; - } - dest_scan++; - src_scan += 4; - } -} -void _CompositeRow_Rgba2Mask(uint8_t* dest_scan, - const uint8_t* src_alpha_scan, - int pixel_count, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha = *src_alpha_scan++; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - uint8_t back_alpha = *dest_scan; - if (!back_alpha) { - *dest_scan = src_alpha; - } else if (src_alpha) { - *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; - } - dest_scan++; - } -} -void _CompositeRow_Rgb2Mask(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - const uint8_t* clip_scan) { - if (clip_scan) { - for (int i = 0; i < width; i++) { - *dest_scan = FXDIB_ALPHA_UNION(*dest_scan, *clip_scan); - dest_scan++; - clip_scan++; - } - } else { - FXSYS_memset(dest_scan, 0xff, width); - } -} -void _CompositeRow_Argb2Graya(uint8_t* dest_scan, - const uint8_t* src_scan, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan, - uint8_t* dst_alpha_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = nullptr; - if (pIccTransform) - pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - if (src_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = *dst_alpha_scan; - if (back_alpha == 0) { - int src_alpha = *src_alpha_scan++; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, - 1); - } else { - *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - *dst_alpha_scan = src_alpha; - } - dest_scan++; - dst_alpha_scan++; - src_scan += 3; - continue; - } - uint8_t src_alpha = *src_alpha_scan++; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha == 0) { - dest_scan++; - dst_alpha_scan++; - src_scan += 3; - continue; - } - *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); - int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); - uint8_t gray; - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - } else { - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - dst_alpha_scan++; - src_scan += 3; - } - } else { - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = *dst_alpha_scan; - if (back_alpha == 0) { - int src_alpha = src_scan[3]; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, - 1); - } else { - *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - *dst_alpha_scan = src_alpha; - } - dest_scan++; - dst_alpha_scan++; - src_scan += 4; - continue; - } - uint8_t src_alpha = src_scan[3]; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha == 0) { - dest_scan++; - dst_alpha_scan++; - src_scan += 4; - continue; - } - *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); - int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); - uint8_t gray; - if (pIccTransform) - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - else - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - dst_alpha_scan++; - src_scan += 4; - } - } - return; - } - if (src_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = *dst_alpha_scan; - if (back_alpha == 0) { - int src_alpha = *src_alpha_scan++; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, - 1); - } else { - *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - *dst_alpha_scan = src_alpha; - } - dest_scan++; - dst_alpha_scan++; - src_scan += 3; - continue; - } - uint8_t src_alpha = *src_alpha_scan++; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha == 0) { - dest_scan++; - dst_alpha_scan++; - src_scan += 3; - continue; - } - *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); - int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); - uint8_t gray; - if (pIccTransform) - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - else - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - dst_alpha_scan++; - src_scan += 3; - } - } else { - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = *dst_alpha_scan; - if (back_alpha == 0) { - int src_alpha = src_scan[3]; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, - 1); - } else { - *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - *dst_alpha_scan = src_alpha; - } - dest_scan++; - dst_alpha_scan++; - src_scan += 4; - continue; - } - uint8_t src_alpha = src_scan[3]; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha == 0) { - dest_scan++; - dst_alpha_scan++; - src_scan += 4; - continue; - } - *dst_alpha_scan = FXDIB_ALPHA_UNION(back_alpha, src_alpha); - int alpha_ratio = src_alpha * 255 / (*dst_alpha_scan); - uint8_t gray; - if (pIccTransform) - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - else - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - dst_alpha_scan++; - src_scan += 4; - } - } -} - -inline void _CompositeRow_Argb2Gray(uint8_t* dest_scan, - const uint8_t* src_scan, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = NULL; - uint8_t gray; - if (pIccTransform) - pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - if (src_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha = *src_alpha_scan++; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - else - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); - } - dest_scan++; - src_scan += 3; - } - } else { - for (int col = 0; col < pixel_count; col++) { - int src_alpha = src_scan[3]; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - else - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); - } - dest_scan++; - src_scan += 4; - } - } - return; - } - if (src_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha = *src_alpha_scan++; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - else - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); - } - dest_scan++; - src_scan += 3; - } - } else { - for (int col = 0; col < pixel_count; col++) { - int src_alpha = src_scan[3]; - if (clip_scan) - src_alpha = clip_scan[col] * src_alpha / 255; - - if (src_alpha) { - if (pIccTransform) - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - else - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); - } - dest_scan++; - src_scan += 4; - } - } -} - -inline void _CompositeRow_Rgb2Gray(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_Bpp, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = NULL; - uint8_t gray; - if (pIccTransform) { - pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - } - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - for (int col = 0; col < pixel_count; col++) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - } else { - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); - } else { - *dest_scan = gray; - } - dest_scan++; - src_scan += src_Bpp; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - } else { - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); - } else { - *dest_scan = gray; - } - dest_scan++; - src_scan += src_Bpp; - } -} -void _CompositeRow_Rgb2Graya(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_Bpp, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = NULL; - if (pIccTransform) { - pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - } - if (blend_type) { - int blended_color; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - for (int col = 0; col < pixel_count; col++) { - int back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); - } else { - *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - dest_scan++; - dest_alpha_scan++; - src_scan += src_Bpp; - continue; - } - int src_alpha = 255; - if (clip_scan) { - src_alpha = clip_scan[col]; - } - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - src_scan += src_Bpp; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - uint8_t gray; - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - } else { - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - src_scan += src_Bpp; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - int src_alpha = 255; - if (clip_scan) { - src_alpha = clip_scan[col]; - } - if (src_alpha == 255) { - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); - } else { - *dest_scan = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - dest_scan++; - *dest_alpha_scan++ = 255; - src_scan += src_Bpp; - continue; - } - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - src_scan += src_Bpp; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - uint8_t gray; - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, &gray, src_scan, 1); - } else { - gray = FXRGB2GRAY(src_scan[2], src_scan[1], *src_scan); - } - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - src_scan += src_Bpp; - } -} -void _CompositeRow_Argb2Argb(uint8_t* dest_scan, - const uint8_t* src_scan, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan, - const uint8_t* src_alpha_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - if (!dest_alpha_scan) { - if (!src_alpha_scan) { - uint8_t back_alpha = 0; - for (int col = 0; col < pixel_count; col++) { - back_alpha = dest_scan[3]; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * src_scan[3] / 255; - FXARGB_SETDIB(dest_scan, (FXARGB_GETDIB(src_scan) & 0xffffff) | - (src_alpha << 24)); - } else { - FXARGB_COPY(dest_scan, src_scan); - } - dest_scan += 4; - src_scan += 4; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * src_scan[3] / 255; - } else { - src_alpha = src_scan[3]; - } - if (src_alpha == 0) { - dest_scan += 4; - src_scan += 4; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - if (blend_type) { - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, *src_scan); - blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); - } - dest_scan++; - src_scan++; - } - dest_scan++; - src_scan++; - } - } else { - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; - FXARGB_SETDIB(dest_scan, FXARGB_MAKE((src_alpha << 24), src_scan[2], - src_scan[1], *src_scan)); - } else { - FXARGB_SETDIB(dest_scan, - FXARGB_MAKE((*src_alpha_scan << 24), src_scan[2], - src_scan[1], *src_scan)); - } - dest_scan += 4; - src_scan += 3; - src_alpha_scan++; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; - } else { - src_alpha = *src_alpha_scan++; - } - if (src_alpha == 0) { - dest_scan += 4; - src_scan += 3; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - if (blend_type) { - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, *src_scan); - blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); - } - dest_scan++; - src_scan++; - } - dest_scan++; - } - } - } else { - if (src_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; - *dest_alpha_scan = src_alpha; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - } else { - *dest_alpha_scan = *src_alpha_scan; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - } - dest_alpha_scan++; - src_alpha_scan++; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; - } else { - src_alpha = *src_alpha_scan++; - } - if (src_alpha == 0) { - dest_scan += 3; - src_scan += 3; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - if (blend_type) { - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, *src_scan); - blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); - } - dest_scan++; - src_scan++; - } - } - } else { - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * src_scan[3] / 255; - *dest_alpha_scan = src_alpha; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - } else { - *dest_alpha_scan = src_scan[3]; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - } - dest_alpha_scan++; - src_scan++; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * src_scan[3] / 255; - } else { - src_alpha = src_scan[3]; - } - if (src_alpha == 0) { - dest_scan += 3; - src_scan += 4; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - if (blend_type) { - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, *src_scan); - blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); - } - dest_scan++; - src_scan++; - } - src_scan++; - } - } - } -} -void _CompositeRow_Rgb2Argb_Blend_NoClip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int src_Bpp, - uint8_t* dest_alpha_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int src_gap = src_Bpp - 3; - if (dest_alpha_scan) { - for (int col = 0; col < width; col++) { - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_alpha_scan++ = 0xff; - src_scan += src_gap; - continue; - } - *dest_alpha_scan++ = 0xff; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int src_color = *src_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, src_color); - *dest_scan = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); - dest_scan++; - src_scan++; - } - src_scan += src_gap; - } - } else { - for (int col = 0; col < width; col++) { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - if (src_Bpp == 4) { - FXARGB_SETDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); - } else { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[2], src_scan[1], - src_scan[0])); - } - dest_scan += 4; - src_scan += src_Bpp; - continue; - } - dest_scan[3] = 0xff; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int src_color = *src_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, src_color); - *dest_scan = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); - dest_scan++; - src_scan++; - } - dest_scan++; - src_scan += src_gap; - } - } -} -inline void _CompositeRow_Rgb2Argb_Blend_Clip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int src_Bpp, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int src_gap = src_Bpp - 3; - if (dest_alpha_scan) { - for (int col = 0; col < width; col++) { - int src_alpha = *clip_scan++; - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - src_scan += src_gap; - dest_alpha_scan++; - continue; - } - if (src_alpha == 0) { - dest_scan += 3; - dest_alpha_scan++; - src_scan += src_Bpp; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int src_color = *src_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, src_color); - blended = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - src_scan++; - } - src_scan += src_gap; - } - } else { - for (int col = 0; col < width; col++) { - int src_alpha = *clip_scan++; - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - src_scan += src_gap; - dest_scan++; - continue; - } - if (src_alpha == 0) { - dest_scan += 4; - src_scan += src_Bpp; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int src_color = *src_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, src_color); - blended = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - src_scan++; - } - dest_scan++; - src_scan += src_gap; - } - } -} -inline void _CompositeRow_Rgb2Argb_NoBlend_Clip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int src_Bpp, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - int src_gap = src_Bpp - 3; - if (dest_alpha_scan) { - for (int col = 0; col < width; col++) { - int src_alpha = clip_scan[col]; - if (src_alpha == 255) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_alpha_scan++ = 255; - src_scan += src_gap; - continue; - } - if (src_alpha == 0) { - dest_scan += 3; - dest_alpha_scan++; - src_scan += src_Bpp; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - for (int color = 0; color < 3; color++) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); - dest_scan++; - src_scan++; - } - src_scan += src_gap; - } - } else { - for (int col = 0; col < width; col++) { - int src_alpha = clip_scan[col]; - if (src_alpha == 255) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = 255; - src_scan += src_gap; - continue; - } - if (src_alpha == 0) { - dest_scan += 4; - src_scan += src_Bpp; - continue; - } - int back_alpha = dest_scan[3]; - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - for (int color = 0; color < 3; color++) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, alpha_ratio); - dest_scan++; - src_scan++; - } - dest_scan++; - src_scan += src_gap; - } - } -} -inline void _CompositeRow_Rgb2Argb_NoBlend_NoClip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int src_Bpp, - uint8_t* dest_alpha_scan) { - if (dest_alpha_scan) { - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_alpha_scan++ = 0xff; - src_scan += src_gap; - } - } else { - for (int col = 0; col < width; col++) { - if (src_Bpp == 4) { - FXARGB_SETDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); - } else { - FXARGB_SETDIB(dest_scan, - FXARGB_MAKE(0xff, src_scan[2], src_scan[1], src_scan[0])); - } - dest_scan += 4; - src_scan += src_Bpp; - } - } -} -inline void _CompositeRow_Argb2Rgb_Blend(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int dest_gap = dest_Bpp - 3; - if (src_alpha_scan) { - for (int col = 0; col < width; col++) { - uint8_t src_alpha; - if (clip_scan) { - src_alpha = (*src_alpha_scan++) * (*clip_scan++) / 255; - } else { - src_alpha = *src_alpha_scan++; - } - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += 3; - continue; - } - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int back_color = *dest_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, *src_scan); - *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); - dest_scan++; - src_scan++; - } - dest_scan += dest_gap; - } - } else { - for (int col = 0; col < width; col++) { - uint8_t src_alpha; - if (clip_scan) { - src_alpha = src_scan[3] * (*clip_scan++) / 255; - } else { - src_alpha = src_scan[3]; - } - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += 4; - continue; - } - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int back_color = *dest_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, *src_scan); - *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); - dest_scan++; - src_scan++; - } - dest_scan += dest_gap; - src_scan++; - } - } -} -inline void _CompositeRow_Argb2Rgb_NoBlend(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan) { - int dest_gap = dest_Bpp - 3; - if (src_alpha_scan) { - for (int col = 0; col < width; col++) { - uint8_t src_alpha; - if (clip_scan) { - src_alpha = (*src_alpha_scan++) * (*clip_scan++) / 255; - } else { - src_alpha = *src_alpha_scan++; - } - if (src_alpha == 255) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - dest_scan += dest_gap; - continue; - } - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += 3; - continue; - } - for (int color = 0; color < 3; color++) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); - dest_scan++; - src_scan++; - } - dest_scan += dest_gap; - } - } else { - for (int col = 0; col < width; col++) { - uint8_t src_alpha; - if (clip_scan) { - src_alpha = src_scan[3] * (*clip_scan++) / 255; - } else { - src_alpha = src_scan[3]; - } - if (src_alpha == 255) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - dest_scan += dest_gap; - src_scan++; - continue; - } - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += 4; - continue; - } - for (int color = 0; color < 3; color++) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); - dest_scan++; - src_scan++; - } - dest_scan += dest_gap; - src_scan++; - } - } -} -inline void _CompositeRow_Rgb2Rgb_Blend_NoClip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - int src_Bpp) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int dest_gap = dest_Bpp - 3; - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int back_color = *dest_scan; - int src_color = *src_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, src_color); - *dest_scan = blended; - dest_scan++; - src_scan++; - } - dest_scan += dest_gap; - src_scan += src_gap; - } -} -inline void _CompositeRow_Rgb2Rgb_Blend_Clip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - int src_Bpp, - const uint8_t* clip_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int dest_gap = dest_Bpp - 3; - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - uint8_t src_alpha = *clip_scan++; - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += src_Bpp; - continue; - } - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int src_color = *src_scan; - int back_color = *dest_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, src_color); - *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); - dest_scan++; - src_scan++; - } - dest_scan += dest_gap; - src_scan += src_gap; - } -} -inline void _CompositeRow_Rgb2Rgb_NoBlend_NoClip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - int src_Bpp) { - if (dest_Bpp == src_Bpp) { - FXSYS_memcpy(dest_scan, src_scan, width * dest_Bpp); - return; - } - for (int col = 0; col < width; col++) { - dest_scan[0] = src_scan[0]; - dest_scan[1] = src_scan[1]; - dest_scan[2] = src_scan[2]; - dest_scan += dest_Bpp; - src_scan += src_Bpp; - } -} -inline void _CompositeRow_Rgb2Rgb_NoBlend_Clip(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - int src_Bpp, - const uint8_t* clip_scan) { - for (int col = 0; col < width; col++) { - int src_alpha = clip_scan[col]; - if (src_alpha == 255) { - dest_scan[0] = src_scan[0]; - dest_scan[1] = src_scan[1]; - dest_scan[2] = src_scan[2]; - } else if (src_alpha) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); - dest_scan++; - src_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); - dest_scan++; - src_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_scan, src_alpha); - dest_scan += dest_Bpp - 2; - src_scan += src_Bpp - 2; - continue; - } - dest_scan += dest_Bpp; - src_scan += src_Bpp; - } -} -void _CompositeRow_Argb2Argb_Transform(uint8_t* dest_scan, - const uint8_t* src_scan, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan, - const uint8_t* src_alpha_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - uint8_t* dp = src_cache_scan; - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_alpha_scan) { - if (dest_alpha_scan) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, pixel_count); - } else { - for (int col = 0; col < pixel_count; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - dp[3] = *src_alpha_scan++; - src_scan += 3; - dp += 4; - } - src_alpha_scan = NULL; - } - } else { - if (dest_alpha_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - for (int col = 0; col < pixel_count; col++) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - 1); - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * src_scan[3] / 255; - *dest_alpha_scan = src_alpha; - *dest_scan++ = *src_cache_scan++; - *dest_scan++ = *src_cache_scan++; - *dest_scan++ = *src_cache_scan++; - } else { - *dest_alpha_scan = src_scan[3]; - *dest_scan++ = *src_cache_scan++; - *dest_scan++ = *src_cache_scan++; - *dest_scan++ = *src_cache_scan++; - } - dest_alpha_scan++; - src_scan += 4; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * src_scan[3] / 255; - } else { - src_alpha = src_scan[3]; - } - src_scan += 4; - if (src_alpha == 0) { - dest_scan += 3; - src_cache_scan += 3; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_cache_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - if (blend_type) { - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, *dest_scan, *src_cache_scan); - blended = FXDIB_ALPHA_MERGE(*src_cache_scan, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - } else { - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, *src_cache_scan, alpha_ratio); - } - dest_scan++; - src_cache_scan++; - } - } - return; - } - for (int col = 0; col < pixel_count; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - dp[3] = src_scan[3]; - src_scan += 4; - dp += 4; - } - } - _CompositeRow_Argb2Argb(dest_scan, src_cache_scan, pixel_count, blend_type, - clip_scan, dest_alpha_scan, src_alpha_scan); -} -void _CompositeRow_Rgb2Argb_Blend_NoClip_Transform(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int src_Bpp, - uint8_t* dest_alpha_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Argb_Blend_NoClip(dest_scan, src_cache_scan, width, - blend_type, 3, dest_alpha_scan); -} -inline void _CompositeRow_Rgb2Argb_Blend_Clip_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int src_Bpp, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Argb_Blend_Clip(dest_scan, src_cache_scan, width, - blend_type, 3, clip_scan, dest_alpha_scan); -} -inline void _CompositeRow_Rgb2Argb_NoBlend_Clip_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int src_Bpp, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Argb_NoBlend_Clip(dest_scan, src_cache_scan, width, 3, - clip_scan, dest_alpha_scan); -} -inline void _CompositeRow_Rgb2Argb_NoBlend_NoClip_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int src_Bpp, - uint8_t* dest_alpha_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Argb_NoBlend_NoClip(dest_scan, src_cache_scan, width, 3, - dest_alpha_scan); -} -inline void _CompositeRow_Argb2Rgb_Blend_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_alpha_scan) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int dest_gap = dest_Bpp - 3; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, 1); - uint8_t src_alpha; - if (clip_scan) { - src_alpha = src_scan[3] * (*clip_scan++) / 255; - } else { - src_alpha = src_scan[3]; - } - src_scan += 4; - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_cache_scan += 3; - continue; - } - if (bNonseparableBlend) { - _RGB_Blend(blend_type, src_cache_scan, dest_scan, blended_colors); - } - for (int color = 0; color < 3; color++) { - int back_color = *dest_scan; - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, *src_cache_scan); - *dest_scan = FXDIB_ALPHA_MERGE(back_color, blended, src_alpha); - dest_scan++; - src_cache_scan++; - } - dest_scan += dest_gap; - } - return; - } - _CompositeRow_Argb2Rgb_Blend(dest_scan, src_cache_scan, width, blend_type, - dest_Bpp, clip_scan, src_alpha_scan); -} -inline void _CompositeRow_Argb2Rgb_NoBlend_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_alpha_scan) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - int dest_gap = dest_Bpp - 3; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, 1); - uint8_t src_alpha; - if (clip_scan) { - src_alpha = src_scan[3] * (*clip_scan++) / 255; - } else { - src_alpha = src_scan[3]; - } - src_scan += 4; - if (src_alpha == 255) { - *dest_scan++ = *src_cache_scan++; - *dest_scan++ = *src_cache_scan++; - *dest_scan++ = *src_cache_scan++; - dest_scan += dest_gap; - continue; - } - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_cache_scan += 3; - continue; - } - for (int color = 0; color < 3; color++) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, *src_cache_scan, src_alpha); - dest_scan++; - src_cache_scan++; - } - dest_scan += dest_gap; - } - return; - } - _CompositeRow_Argb2Rgb_NoBlend(dest_scan, src_cache_scan, width, dest_Bpp, - clip_scan, src_alpha_scan); -} -inline void _CompositeRow_Rgb2Rgb_Blend_NoClip_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - int src_Bpp, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Rgb_Blend_NoClip(dest_scan, src_cache_scan, width, - blend_type, dest_Bpp, 3); -} -inline void _CompositeRow_Rgb2Rgb_Blend_Clip_Transform(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - int src_Bpp, - const uint8_t* clip_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Rgb_Blend_Clip(dest_scan, src_cache_scan, width, blend_type, - dest_Bpp, 3, clip_scan); -} -inline void _CompositeRow_Rgb2Rgb_NoBlend_NoClip_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - int src_Bpp, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Rgb_NoBlend_NoClip(dest_scan, src_cache_scan, width, - dest_Bpp, 3); -} -inline void _CompositeRow_Rgb2Rgb_NoBlend_Clip_Transform( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - int src_Bpp, - const uint8_t* clip_scan, - uint8_t* src_cache_scan, - void* pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (src_Bpp == 3) { - pIccModule->TranslateScanline(pIccTransform, src_cache_scan, src_scan, - width); - } else { - uint8_t* dp = src_cache_scan; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dp, src_scan, 1); - src_scan += 4; - dp += 3; - } - } - _CompositeRow_Rgb2Rgb_NoBlend_Clip(dest_scan, src_cache_scan, width, dest_Bpp, - 3, clip_scan); -} -inline void _CompositeRow_8bppPal2Gray(uint8_t* dest_scan, - const uint8_t* src_scan, - const uint8_t* pPalette, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan) { - if (src_alpha_scan) { - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - int src_alpha = *src_alpha_scan++; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - if (src_alpha) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); - } else { - *dest_scan = gray; - } - dest_scan++; - src_scan++; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - int src_alpha = *src_alpha_scan++; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - if (src_alpha) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); - } else { - *dest_scan = gray; - } - dest_scan++; - src_scan++; - } - } else { - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); - } else { - *dest_scan = gray; - } - dest_scan++; - src_scan++; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); - } else { - *dest_scan = gray; - } - dest_scan++; - src_scan++; - } - } -} -inline void _CompositeRow_8bppPal2Graya(uint8_t* dest_scan, - const uint8_t* src_scan, - const uint8_t* pPalette, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan, - const uint8_t* src_alpha_scan) { - if (src_alpha_scan) { - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - src_scan++; - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - int src_alpha = *src_alpha_scan++; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - if (src_alpha) { - *dest_scan = gray; - *dest_alpha_scan = src_alpha; - } - dest_scan++; - dest_alpha_scan++; - continue; - } - uint8_t src_alpha = *src_alpha_scan++; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - *dest_alpha_scan = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - int alpha_ratio = src_alpha * 255 / (*dest_alpha_scan); - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_alpha_scan++; - dest_scan++; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - src_scan++; - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - int src_alpha = *src_alpha_scan++; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - if (src_alpha) { - *dest_scan = gray; - *dest_alpha_scan = src_alpha; - } - dest_scan++; - dest_alpha_scan++; - continue; - } - uint8_t src_alpha = *src_alpha_scan++; - if (clip_scan) { - src_alpha = clip_scan[col] * src_alpha / 255; - } - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - *dest_alpha_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; - int alpha_ratio = src_alpha * 255 / (*dest_alpha_scan); - dest_alpha_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - } - } else { - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - src_scan++; - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = gray; - *dest_alpha_scan++ = 255; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = pPalette[*src_scan]; - src_scan++; - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = gray; - *dest_alpha_scan++ = 255; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - } - } -} -inline void _CompositeRow_1bppPal2Gray(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - const uint8_t* pPalette, - int pixel_count, - int blend_type, - const uint8_t* clip_scan) { - int reset_gray = pPalette[0]; - int set_gray = pPalette[1]; - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = - (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) - ? set_gray - : reset_gray; - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); - } else { - *dest_scan = gray; - } - dest_scan++; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = - (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) - ? set_gray - : reset_gray; - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, clip_scan[col]); - } else { - *dest_scan = gray; - } - dest_scan++; - } -} -inline void _CompositeRow_1bppPal2Graya(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - const uint8_t* pPalette, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - int reset_gray = pPalette[0]; - int set_gray = pPalette[1]; - if (blend_type) { - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int blended_color; - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = - (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) - ? set_gray - : reset_gray; - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = gray; - *dest_alpha_scan++ = 255; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - blended_color = - blend_type == FXDIB_BLEND_LUMINOSITY ? gray : *dest_scan; - } - gray = bNonseparableBlend ? blended_color - : _BLEND(blend_type, *dest_scan, gray); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - uint8_t gray = - (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) - ? set_gray - : reset_gray; - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = gray; - *dest_alpha_scan++ = 255; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, alpha_ratio); - dest_scan++; - } -} -inline void _CompositeRow_8bppRgb2Rgb_NoBlend(uint8_t* dest_scan, - const uint8_t* src_scan, - FX_DWORD* pPalette, - int pixel_count, - int DestBpp, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan) { - if (src_alpha_scan) { - int dest_gap = DestBpp - 3; - FX_ARGB argb = 0; - for (int col = 0; col < pixel_count; col++) { - argb = pPalette[*src_scan]; - int src_r = FXARGB_R(argb); - int src_g = FXARGB_G(argb); - int src_b = FXARGB_B(argb); - src_scan++; - uint8_t src_alpha = 0; - if (clip_scan) { - src_alpha = (*src_alpha_scan++) * (*clip_scan++) / 255; - } else { - src_alpha = *src_alpha_scan++; - } - if (src_alpha == 255) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - dest_scan += dest_gap; - continue; - } - if (src_alpha == 0) { - dest_scan += DestBpp; - continue; - } - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, src_alpha); - dest_scan++; - dest_scan += dest_gap; - } - } else { - FX_ARGB argb = 0; - for (int col = 0; col < pixel_count; col++) { - argb = pPalette[*src_scan]; - int src_r = FXARGB_R(argb); - int src_g = FXARGB_G(argb); - int src_b = FXARGB_B(argb); - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, clip_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, clip_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, clip_scan[col]); - dest_scan++; - } else { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - } - if (DestBpp == 4) { - dest_scan++; - } - src_scan++; - } - } -} -inline void _CompositeRow_1bppRgb2Rgb_NoBlend(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - FX_DWORD* pPalette, - int pixel_count, - int DestBpp, - const uint8_t* clip_scan) { - int reset_r, reset_g, reset_b; - int set_r, set_g, set_b; - reset_r = FXARGB_R(pPalette[0]); - reset_g = FXARGB_G(pPalette[0]); - reset_b = FXARGB_B(pPalette[0]); - set_r = FXARGB_R(pPalette[1]); - set_g = FXARGB_G(pPalette[1]); - set_b = FXARGB_B(pPalette[1]); - for (int col = 0; col < pixel_count; col++) { - int src_r, src_g, src_b; - if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { - src_r = set_r; - src_g = set_g; - src_b = set_b; - } else { - src_r = reset_r; - src_g = reset_g; - src_b = reset_b; - } - if (clip_scan && clip_scan[col] < 255) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, clip_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, clip_scan[col]); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, clip_scan[col]); - dest_scan++; - } else { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - } - if (DestBpp == 4) { - dest_scan++; - } - } -} -inline void _CompositeRow_8bppRgb2Argb_NoBlend(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - FX_DWORD* pPalette, - const uint8_t* clip_scan, - const uint8_t* src_alpha_scan) { - if (src_alpha_scan) { - for (int col = 0; col < width; col++) { - FX_ARGB argb = pPalette[*src_scan]; - src_scan++; - int src_r = FXARGB_R(argb); - int src_g = FXARGB_G(argb); - int src_b = FXARGB_B(argb); - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); - } else { - FXARGB_SETDIB(dest_scan, - FXARGB_MAKE(*src_alpha_scan, src_r, src_g, src_b)); - } - dest_scan += 4; - src_alpha_scan++; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; - } else { - src_alpha = *src_alpha_scan++; - } - if (src_alpha == 0) { - dest_scan += 4; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - dest_scan++; - } - } else { - for (int col = 0; col < width; col++) { - FX_ARGB argb = pPalette[*src_scan]; - int src_r = FXARGB_R(argb); - int src_g = FXARGB_G(argb); - int src_b = FXARGB_B(argb); - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - *dest_scan++ = 255; - src_scan++; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan += 4; - src_scan++; - continue; - } - int back_alpha = dest_scan[3]; - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - dest_scan++; - src_scan++; - } - } -} - -void _CompositeRow_8bppRgb2Rgba_NoBlend(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - FX_DWORD* pPalette, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan, - const uint8_t* src_alpha_scan) { - if (src_alpha_scan) { - for (int col = 0; col < width; col++) { - FX_ARGB argb = pPalette[*src_scan]; - src_scan++; - int src_r = FXARGB_R(argb); - int src_g = FXARGB_G(argb); - int src_b = FXARGB_B(argb); - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * (*src_alpha_scan) / 255; - *dest_alpha_scan++ = src_alpha; - } else { - *dest_alpha_scan++ = *src_alpha_scan; - } - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - src_alpha_scan++; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * (*src_alpha_scan++) / 255; - } else { - src_alpha = *src_alpha_scan++; - } - if (src_alpha == 0) { - dest_scan += 3; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - } - } else { - for (int col = 0; col < width; col++) { - FX_ARGB argb = pPalette[*src_scan]; - int src_r = FXARGB_R(argb); - int src_g = FXARGB_G(argb); - int src_b = FXARGB_B(argb); - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - *dest_alpha_scan++ = 255; - src_scan++; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan += 3; - dest_alpha_scan++; - src_scan++; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - src_scan++; - } - } -} - -inline void _CompositeRow_1bppRgb2Argb_NoBlend(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - int width, - FX_DWORD* pPalette, - const uint8_t* clip_scan) { - int reset_r, reset_g, reset_b; - int set_r, set_g, set_b; - reset_r = FXARGB_R(pPalette[0]); - reset_g = FXARGB_G(pPalette[0]); - reset_b = FXARGB_B(pPalette[0]); - set_r = FXARGB_R(pPalette[1]); - set_g = FXARGB_G(pPalette[1]); - set_b = FXARGB_B(pPalette[1]); - for (int col = 0; col < width; col++) { - int src_r, src_g, src_b; - if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { - src_r = set_r; - src_g = set_g; - src_b = set_b; - } else { - src_r = reset_r; - src_g = reset_g; - src_b = reset_b; - } - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - *dest_scan++ = 255; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan += 4; - continue; - } - int back_alpha = dest_scan[3]; - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - dest_scan++; - } -} -void _CompositeRow_1bppRgb2Rgba_NoBlend(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - int width, - FX_DWORD* pPalette, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - int reset_r, reset_g, reset_b; - int set_r, set_g, set_b; - reset_r = FXARGB_R(pPalette[0]); - reset_g = FXARGB_G(pPalette[0]); - reset_b = FXARGB_B(pPalette[0]); - set_r = FXARGB_R(pPalette[1]); - set_g = FXARGB_G(pPalette[1]); - set_b = FXARGB_B(pPalette[1]); - for (int col = 0; col < width; col++) { - int src_r, src_g, src_b; - if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { - src_r = set_r; - src_g = set_g; - src_b = set_b; - } else { - src_r = reset_r; - src_g = reset_g; - src_b = reset_b; - } - if (!clip_scan || clip_scan[col] == 255) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - *dest_alpha_scan++ = 255; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan += 3; - dest_alpha_scan++; - continue; - } - int back_alpha = *dest_alpha_scan; - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - } -} -void _CompositeRow_ByteMask2Argb(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - int blend_type, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); - dest_scan += 4; - continue; - } - if (src_alpha == 0) { - dest_scan += 4; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); - } else if (blend_type) { - int blended = _BLEND(blend_type, *dest_scan, src_b); - blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_g); - blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_r); - blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - } - dest_scan += 2; - } -} -void _CompositeRow_ByteMask2Rgba(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - *dest_alpha_scan++ = src_alpha; - continue; - } - if (src_alpha == 0) { - dest_scan += 3; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); - dest_scan++; - } else if (blend_type) { - int blended = _BLEND(blend_type, *dest_scan, src_b); - blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_g); - blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_r); - blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - } - } -} -void _CompositeRow_ByteMask2Rgb(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - int blend_type, - int Bpp, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - if (src_alpha == 0) { - dest_scan += Bpp; - continue; - } - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], src_alpha); - } else if (blend_type) { - int blended = _BLEND(blend_type, *dest_scan, src_b); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_g); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_r); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, src_alpha); - } - dest_scan += Bpp - 2; - } -} -void _CompositeRow_ByteMask2Mask(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int pixel_count, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - uint8_t back_alpha = *dest_scan; - if (!back_alpha) { - *dest_scan = src_alpha; - } else if (src_alpha) { - *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; - } - dest_scan++; - } -} -void _CompositeRow_ByteMask2Gray(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_gray, - int pixel_count, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - if (src_alpha) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, src_alpha); - } - dest_scan++; - } -} -void _CompositeRow_ByteMask2Graya(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_gray, - int pixel_count, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - *dest_scan++ = src_gray; - *dest_alpha_scan++ = src_alpha; - continue; - } - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, alpha_ratio); - dest_scan++; - } -} -void _CompositeRow_BitMask2Argb(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int src_left, - int pixel_count, - int blend_type, - const uint8_t* clip_scan) { - if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { - FX_ARGB argb = FXARGB_MAKE(0xff, src_r, src_g, src_b); - for (int col = 0; col < pixel_count; col++) { - if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { - FXARGB_SETDIB(dest_scan, argb); - } - dest_scan += 4; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan += 4; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); - dest_scan += 4; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); - } else if (blend_type) { - int blended = _BLEND(blend_type, *dest_scan, src_b); - blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_g); - blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_r); - blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - } - dest_scan += 2; - } -} -void _CompositeRow_BitMask2Rgba(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int src_left, - int pixel_count, - int blend_type, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { - for (int col = 0; col < pixel_count; col++) { - if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { - dest_scan[0] = src_b; - dest_scan[1] = src_g; - dest_scan[2] = src_r; - *dest_alpha_scan = mask_alpha; - } - dest_scan += 3; - dest_alpha_scan++; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan += 3; - dest_alpha_scan++; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - *dest_scan++ = src_b; - *dest_scan++ = src_g; - *dest_scan++ = src_r; - *dest_alpha_scan++ = mask_alpha; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], alpha_ratio); - dest_scan++; - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], alpha_ratio); - dest_scan++; - } else if (blend_type) { - int blended = _BLEND(blend_type, *dest_scan, src_b); - blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_g); - blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_r); - blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, alpha_ratio); - dest_scan++; - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, alpha_ratio); - dest_scan++; - } - } -} -void _CompositeRow_BitMask2Rgb(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int src_left, - int pixel_count, - int blend_type, - int Bpp, - const uint8_t* clip_scan) { - if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { - for (int col = 0; col < pixel_count; col++) { - if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { - dest_scan[2] = src_r; - dest_scan[1] = src_g; - dest_scan[0] = src_b; - } - dest_scan += Bpp; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan += Bpp; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - if (src_alpha == 0) { - dest_scan += Bpp; - continue; - } - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - _RGB_Blend(blend_type, src_scan, dest_scan, blended_colors); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[0], src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[1], src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended_colors[2], src_alpha); - } else if (blend_type) { - int blended = _BLEND(blend_type, *dest_scan, src_b); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_g); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); - dest_scan++; - blended = _BLEND(blend_type, *dest_scan, src_r); - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, blended, src_alpha); - } else { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_b, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_g, src_alpha); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_r, src_alpha); - } - dest_scan += Bpp - 2; - } -} -void _CompositeRow_BitMask2Mask(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_left, - int pixel_count, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan++; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - uint8_t back_alpha = *dest_scan; - if (!back_alpha) { - *dest_scan = src_alpha; - } else if (src_alpha) { - *dest_scan = back_alpha + src_alpha - back_alpha * src_alpha / 255; - } - dest_scan++; - } -} -void _CompositeRow_BitMask2Gray(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_gray, - int src_left, - int pixel_count, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan++; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - if (src_alpha) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, src_alpha); - } - dest_scan++; - } -} -void _CompositeRow_BitMask2Graya(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_gray, - int src_left, - int pixel_count, - const uint8_t* clip_scan, - uint8_t* dest_alpha_scan) { - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan++; - dest_alpha_scan++; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - uint8_t back_alpha = *dest_alpha_scan; - if (back_alpha == 0) { - *dest_scan++ = src_gray; - *dest_alpha_scan++ = src_alpha; - continue; - } - if (src_alpha == 0) { - dest_scan++; - dest_alpha_scan++; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_alpha_scan++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, src_gray, alpha_ratio); - dest_scan++; - } -} -void _CompositeRow_Argb2Argb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int pixel_count, - int blend_type, - const uint8_t* clip_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - for (int col = 0; col < pixel_count; col++) { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - if (clip_scan) { - int src_alpha = clip_scan[col] * src_scan[3] / 255; - dest_scan[3] = src_alpha; - dest_scan[0] = src_scan[2]; - dest_scan[1] = src_scan[1]; - dest_scan[2] = src_scan[0]; - } else { - FXARGB_RGBORDERCOPY(dest_scan, src_scan); - } - dest_scan += 4; - src_scan += 4; - continue; - } - uint8_t src_alpha; - if (clip_scan) { - src_alpha = clip_scan[col] * src_scan[3] / 255; - } else { - src_alpha = src_scan[3]; - } - if (src_alpha == 0) { - dest_scan += 4; - src_scan += 4; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - uint8_t dest_scan_o[3]; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - } - for (int color = 0; color < 3; color++) { - int index = 2 - color; - if (blend_type) { - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, dest_scan[index], *src_scan); - blended = FXDIB_ALPHA_MERGE(*src_scan, blended, back_alpha); - dest_scan[index] = - FXDIB_ALPHA_MERGE(dest_scan[index], blended, alpha_ratio); - } else { - dest_scan[index] = - FXDIB_ALPHA_MERGE(dest_scan[index], *src_scan, alpha_ratio); - } - src_scan++; - } - dest_scan += 4; - src_scan++; - } -} -void _CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int src_Bpp) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - if (src_Bpp == 4) { - FXARGB_SETRGBORDERDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); - } else { - FXARGB_SETRGBORDERDIB(dest_scan, FXARGB_MAKE(0xff, src_scan[2], - src_scan[1], src_scan[0])); - } - dest_scan += 4; - src_scan += src_Bpp; - continue; - } - dest_scan[3] = 0xff; - if (bNonseparableBlend) { - uint8_t dest_scan_o[3]; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - } - for (int color = 0; color < 3; color++) { - int index = 2 - color; - int src_color = FX_GAMMA(*src_scan); - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, dest_scan[index], src_color); - dest_scan[index] = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); - src_scan++; - } - dest_scan += 4; - src_scan += src_gap; - } -} -inline void _CompositeRow_Argb2Rgb_Blend_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - const uint8_t* clip_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - for (int col = 0; col < width; col++) { - uint8_t src_alpha; - if (clip_scan) { - src_alpha = src_scan[3] * (*clip_scan++) / 255; - } else { - src_alpha = src_scan[3]; - } - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += 4; - continue; - } - if (bNonseparableBlend) { - uint8_t dest_scan_o[3]; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - } - for (int color = 0; color < 3; color++) { - int index = 2 - color; - int back_color = FX_GAMMA(dest_scan[index]); - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, *src_scan); - dest_scan[index] = - FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); - src_scan++; - } - dest_scan += dest_Bpp; - src_scan++; - } -} -inline void _CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int src_Bpp) { - for (int col = 0; col < width; col++) { - if (src_Bpp == 4) { - FXARGB_SETRGBORDERDIB(dest_scan, 0xff000000 | FXARGB_GETDIB(src_scan)); - } else { - FXARGB_SETRGBORDERDIB( - dest_scan, FXARGB_MAKE(0xff, src_scan[2], src_scan[1], src_scan[0])); - } - dest_scan += 4; - src_scan += src_Bpp; - } -} -inline void _CompositeRow_Rgb2Rgb_Blend_NoClip_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - int src_Bpp) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - if (bNonseparableBlend) { - uint8_t dest_scan_o[3]; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - } - for (int color = 0; color < 3; color++) { - int index = 2 - color; - int back_color = FX_GAMMA(dest_scan[index]); - int src_color = FX_GAMMA(*src_scan); - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, src_color); - dest_scan[index] = FX_GAMMA_INVERSE(blended); - src_scan++; - } - dest_scan += dest_Bpp; - src_scan += src_gap; - } -} -inline void _CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - const uint8_t* clip_scan) { - for (int col = 0; col < width; col++) { - uint8_t src_alpha; - if (clip_scan) { - src_alpha = src_scan[3] * (*clip_scan++) / 255; - } else { - src_alpha = src_scan[3]; - } - if (src_alpha == 255) { - dest_scan[2] = FX_GAMMA_INVERSE(*src_scan++); - dest_scan[1] = FX_GAMMA_INVERSE(*src_scan++); - dest_scan[0] = FX_GAMMA_INVERSE(*src_scan++); - dest_scan += dest_Bpp; - src_scan++; - continue; - } - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += 4; - continue; - } - for (int color = 0; color < 3; color++) { - int index = 2 - color; - dest_scan[index] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[index]), *src_scan, src_alpha)); - src_scan++; - } - dest_scan += dest_Bpp; - src_scan++; - } -} -inline void _CompositeRow_Rgb2Rgb_NoBlend_NoClip_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - int src_Bpp) { - for (int col = 0; col < width; col++) { - dest_scan[2] = src_scan[0]; - dest_scan[1] = src_scan[1]; - dest_scan[0] = src_scan[2]; - dest_scan += dest_Bpp; - src_scan += src_Bpp; - } -} -inline void _CompositeRow_Rgb2Argb_Blend_Clip_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int src_Bpp, - const uint8_t* clip_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - int src_alpha = *clip_scan++; - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - dest_scan[2] = FX_GAMMA(*src_scan++); - dest_scan[1] = FX_GAMMA(*src_scan++); - dest_scan[0] = FX_GAMMA(*src_scan++); - src_scan += src_gap; - dest_scan += 4; - continue; - } - if (src_alpha == 0) { - dest_scan += 4; - src_scan += src_Bpp; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (bNonseparableBlend) { - uint8_t dest_scan_o[3]; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - } - for (int color = 0; color < 3; color++) { - int index = 2 - color; - int src_color = FX_GAMMA(*src_scan); - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, dest_scan[index], src_color); - blended = FXDIB_ALPHA_MERGE(src_color, blended, back_alpha); - dest_scan[index] = - FXDIB_ALPHA_MERGE(dest_scan[index], blended, alpha_ratio); - src_scan++; - } - dest_scan += 4; - src_scan += src_gap; - } -} -inline void _CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int blend_type, - int dest_Bpp, - int src_Bpp, - const uint8_t* clip_scan) { - int blended_colors[3]; - FX_BOOL bNonseparableBlend = blend_type >= FXDIB_BLEND_NONSEPARABLE; - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - uint8_t src_alpha = *clip_scan++; - if (src_alpha == 0) { - dest_scan += dest_Bpp; - src_scan += src_Bpp; - continue; - } - if (bNonseparableBlend) { - uint8_t dest_scan_o[3]; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - } - for (int color = 0; color < 3; color++) { - int index = 2 - color; - int src_color = FX_GAMMA(*src_scan); - int back_color = FX_GAMMA(dest_scan[index]); - int blended = bNonseparableBlend - ? blended_colors[color] - : _BLEND(blend_type, back_color, src_color); - dest_scan[index] = - FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); - src_scan++; - } - dest_scan += dest_Bpp; - src_scan += src_gap; - } -} -inline void _CompositeRow_Rgb2Argb_NoBlend_Clip_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int src_Bpp, - const uint8_t* clip_scan) { - int src_gap = src_Bpp - 3; - for (int col = 0; col < width; col++) { - int src_alpha = clip_scan[col]; - if (src_alpha == 255) { - dest_scan[2] = FX_GAMMA(*src_scan++); - dest_scan[1] = FX_GAMMA(*src_scan++); - dest_scan[0] = FX_GAMMA(*src_scan++); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += src_gap; - continue; - } - if (src_alpha == 0) { - dest_scan += 4; - src_scan += src_Bpp; - continue; - } - int back_alpha = dest_scan[3]; - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - for (int color = 0; color < 3; color++) { - int index = 2 - color; - dest_scan[index] = - FXDIB_ALPHA_MERGE(dest_scan[index], FX_GAMMA(*src_scan), alpha_ratio); - src_scan++; - } - dest_scan += 4; - src_scan += src_gap; - } -} -inline void _CompositeRow_Rgb2Rgb_NoBlend_Clip_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - int dest_Bpp, - int src_Bpp, - const uint8_t* clip_scan) { - for (int col = 0; col < width; col++) { - int src_alpha = clip_scan[col]; - if (src_alpha == 255) { - dest_scan[2] = src_scan[0]; - dest_scan[1] = src_scan[1]; - dest_scan[0] = src_scan[2]; - } else if (src_alpha) { - dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[2]), FX_GAMMA(*src_scan), src_alpha)); - src_scan++; - dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[1]), FX_GAMMA(*src_scan), src_alpha)); - src_scan++; - dest_scan[0] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[0]), FX_GAMMA(*src_scan), src_alpha)); - dest_scan += dest_Bpp; - src_scan += src_Bpp - 2; - continue; - } - dest_scan += dest_Bpp; - src_scan += src_Bpp; - } -} -inline void _CompositeRow_8bppRgb2Rgb_NoBlend_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - FX_ARGB* pPalette, - int pixel_count, - int DestBpp, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - FX_ARGB argb = pPalette ? pPalette[*src_scan] : (*src_scan) * 0x010101; - int src_r = FXARGB_R(argb); - int src_g = FXARGB_G(argb); - int src_b = FXARGB_B(argb); - if (clip_scan && clip_scan[col] < 255) { - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, clip_scan[col]); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, clip_scan[col]); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, clip_scan[col]); - } else { - dest_scan[2] = src_b; - dest_scan[1] = src_g; - dest_scan[0] = src_r; - } - dest_scan += DestBpp; - src_scan++; - } -} -inline void _CompositeRow_1bppRgb2Rgb_NoBlend_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - FX_ARGB* pPalette, - int pixel_count, - int DestBpp, - const uint8_t* clip_scan) { - int reset_r, reset_g, reset_b; - int set_r, set_g, set_b; - if (pPalette) { - reset_r = FXARGB_R(pPalette[0]); - reset_g = FXARGB_G(pPalette[0]); - reset_b = FXARGB_B(pPalette[0]); - set_r = FXARGB_R(pPalette[1]); - set_g = FXARGB_G(pPalette[1]); - set_b = FXARGB_B(pPalette[1]); - } else { - reset_r = reset_g = reset_b = 0; - set_r = set_g = set_b = 255; - } - for (int col = 0; col < pixel_count; col++) { - int src_r, src_g, src_b; - if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { - src_r = set_r; - src_g = set_g; - src_b = set_b; - } else { - src_r = reset_r; - src_g = reset_g; - src_b = reset_b; - } - if (clip_scan && clip_scan[col] < 255) { - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, clip_scan[col]); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, clip_scan[col]); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, clip_scan[col]); - } else { - dest_scan[2] = src_b; - dest_scan[1] = src_g; - dest_scan[0] = src_r; - } - dest_scan += DestBpp; - } -} -inline void _CompositeRow_8bppRgb2Argb_NoBlend_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - FX_ARGB* pPalette, - const uint8_t* clip_scan) { - for (int col = 0; col < width; col++) { - int src_r, src_g, src_b; - if (pPalette) { - FX_ARGB argb = pPalette[*src_scan]; - src_r = FXARGB_R(argb); - src_g = FXARGB_G(argb); - src_b = FXARGB_B(argb); - } else { - src_r = src_g = src_b = *src_scan; - } - if (!clip_scan || clip_scan[col] == 255) { - dest_scan[2] = FX_GAMMA(src_b); - dest_scan[1] = FX_GAMMA(src_g); - dest_scan[0] = FX_GAMMA(src_r); - dest_scan[3] = 255; - src_scan++; - dest_scan += 4; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan += 4; - src_scan++; - continue; - } - int back_alpha = dest_scan[3]; - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - dest_scan[2] = - FXDIB_ALPHA_MERGE(dest_scan[2], FX_GAMMA(src_b), alpha_ratio); - dest_scan[1] = - FXDIB_ALPHA_MERGE(dest_scan[1], FX_GAMMA(src_g), alpha_ratio); - dest_scan[0] = - FXDIB_ALPHA_MERGE(dest_scan[0], FX_GAMMA(src_r), alpha_ratio); - dest_scan += 4; - src_scan++; - } -} -inline void _CompositeRow_1bppRgb2Argb_NoBlend_RgbByteOrder( - uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - int width, - FX_ARGB* pPalette, - const uint8_t* clip_scan) { - int reset_r, reset_g, reset_b; - int set_r, set_g, set_b; - if (pPalette) { - reset_r = FXARGB_R(pPalette[0]); - reset_g = FXARGB_G(pPalette[0]); - reset_b = FXARGB_B(pPalette[0]); - set_r = FXARGB_R(pPalette[1]); - set_g = FXARGB_G(pPalette[1]); - set_b = FXARGB_B(pPalette[1]); - } else { - reset_r = reset_g = reset_b = 0; - set_r = set_g = set_b = 255; - } - for (int col = 0; col < width; col++) { - int src_r, src_g, src_b; - if (src_scan[(col + src_left) / 8] & (1 << (7 - (col + src_left) % 8))) { - src_r = set_r; - src_g = set_g; - src_b = set_b; - } else { - src_r = reset_r; - src_g = reset_g; - src_b = reset_b; - } - if (!clip_scan || clip_scan[col] == 255) { - dest_scan[2] = FX_GAMMA(src_b); - dest_scan[1] = FX_GAMMA(src_g); - dest_scan[0] = FX_GAMMA(src_r); - dest_scan[3] = 255; - dest_scan += 4; - continue; - } - int src_alpha = clip_scan[col]; - if (src_alpha == 0) { - dest_scan += 4; - continue; - } - int back_alpha = dest_scan[3]; - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - dest_scan[2] = - FXDIB_ALPHA_MERGE(dest_scan[2], FX_GAMMA(src_b), alpha_ratio); - dest_scan[1] = - FXDIB_ALPHA_MERGE(dest_scan[1], FX_GAMMA(src_g), alpha_ratio); - dest_scan[0] = - FXDIB_ALPHA_MERGE(dest_scan[0], FX_GAMMA(src_r), alpha_ratio); - dest_scan += 4; - } -} -void _CompositeRow_ByteMask2Argb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - int blend_type, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETRGBORDERDIB(dest_scan, - FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); - dest_scan += 4; - continue; - } - if (src_alpha == 0) { - dest_scan += 4; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - uint8_t dest_scan_o[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - dest_scan[2] = - FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], alpha_ratio); - dest_scan[1] = - FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], alpha_ratio); - dest_scan[0] = - FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], alpha_ratio); - } else if (blend_type) { - int blended = _BLEND(blend_type, dest_scan[2], src_b); - blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], blended, alpha_ratio); - blended = _BLEND(blend_type, dest_scan[1], src_g); - blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], blended, alpha_ratio); - blended = _BLEND(blend_type, dest_scan[0], src_r); - blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, alpha_ratio); - } else { - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, alpha_ratio); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, alpha_ratio); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, alpha_ratio); - } - dest_scan += 4; - } -} -void _CompositeRow_ByteMask2Rgb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int pixel_count, - int blend_type, - int Bpp, - const uint8_t* clip_scan) { - for (int col = 0; col < pixel_count; col++) { - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] * src_scan[col] / 255 / 255; - } else { - src_alpha = mask_alpha * src_scan[col] / 255; - } - if (src_alpha == 0) { - dest_scan += Bpp; - continue; - } - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - uint8_t dest_scan_o[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - dest_scan[2] = - FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], src_alpha); - dest_scan[1] = - FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], src_alpha); - dest_scan[0] = - FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], src_alpha); - } else if (blend_type) { - int blended = _BLEND(blend_type, dest_scan[2], src_b); - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], blended, src_alpha); - blended = _BLEND(blend_type, dest_scan[1], src_g); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], blended, src_alpha); - blended = _BLEND(blend_type, dest_scan[0], src_r); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, src_alpha); - } else { - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, src_alpha); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, src_alpha); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, src_alpha); - } - dest_scan += Bpp; - } -} -void _CompositeRow_BitMask2Argb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int src_left, - int pixel_count, - int blend_type, - const uint8_t* clip_scan) { - if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { - FX_ARGB argb = FXARGB_MAKE(0xff, src_r, src_g, src_b); - for (int col = 0; col < pixel_count; col++) { - if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { - FXARGB_SETRGBORDERDIB(dest_scan, argb); - } - dest_scan += 4; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan += 4; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETRGBORDERDIB(dest_scan, - FXARGB_MAKE(src_alpha, src_r, src_g, src_b)); - dest_scan += 4; - continue; - } - uint8_t dest_alpha = back_alpha + src_alpha - back_alpha * src_alpha / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - uint8_t dest_scan_o[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - dest_scan[2] = - FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], alpha_ratio); - dest_scan[1] = - FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], alpha_ratio); - dest_scan[0] = - FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], alpha_ratio); - } else if (blend_type) { - int blended = _BLEND(blend_type, dest_scan[2], src_b); - blended = FXDIB_ALPHA_MERGE(src_b, blended, back_alpha); - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], blended, alpha_ratio); - blended = _BLEND(blend_type, dest_scan[1], src_g); - blended = FXDIB_ALPHA_MERGE(src_g, blended, back_alpha); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], blended, alpha_ratio); - blended = _BLEND(blend_type, dest_scan[0], src_r); - blended = FXDIB_ALPHA_MERGE(src_r, blended, back_alpha); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], blended, alpha_ratio); - } else { - dest_scan[2] = FXDIB_ALPHA_MERGE(dest_scan[2], src_b, alpha_ratio); - dest_scan[1] = FXDIB_ALPHA_MERGE(dest_scan[1], src_g, alpha_ratio); - dest_scan[0] = FXDIB_ALPHA_MERGE(dest_scan[0], src_r, alpha_ratio); - } - dest_scan += 4; - } -} -void _CompositeRow_BitMask2Rgb_RgbByteOrder(uint8_t* dest_scan, - const uint8_t* src_scan, - int mask_alpha, - int src_r, - int src_g, - int src_b, - int src_left, - int pixel_count, - int blend_type, - int Bpp, - const uint8_t* clip_scan) { - if (blend_type == FXDIB_BLEND_NORMAL && !clip_scan && mask_alpha == 255) { - for (int col = 0; col < pixel_count; col++) { - if (src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8))) { - dest_scan[2] = src_b; - dest_scan[1] = src_g; - dest_scan[0] = src_r; - } - dest_scan += Bpp; - } - return; - } - for (int col = 0; col < pixel_count; col++) { - if (!(src_scan[(src_left + col) / 8] & (1 << (7 - (src_left + col) % 8)))) { - dest_scan += Bpp; - continue; - } - int src_alpha; - if (clip_scan) { - src_alpha = mask_alpha * clip_scan[col] / 255; - } else { - src_alpha = mask_alpha; - } - if (src_alpha == 0) { - dest_scan += Bpp; - continue; - } - if (blend_type >= FXDIB_BLEND_NONSEPARABLE) { - int blended_colors[3]; - uint8_t src_scan[3]; - uint8_t dest_scan_o[3]; - src_scan[0] = src_b; - src_scan[1] = src_g; - src_scan[2] = src_r; - dest_scan_o[0] = dest_scan[2]; - dest_scan_o[1] = dest_scan[1]; - dest_scan_o[2] = dest_scan[0]; - _RGB_Blend(blend_type, src_scan, dest_scan_o, blended_colors); - dest_scan[2] = - FXDIB_ALPHA_MERGE(dest_scan[2], blended_colors[0], src_alpha); - dest_scan[1] = - FXDIB_ALPHA_MERGE(dest_scan[1], blended_colors[1], src_alpha); - dest_scan[0] = - FXDIB_ALPHA_MERGE(dest_scan[0], blended_colors[2], src_alpha); - } else if (blend_type) { - int back_color = FX_GAMMA(dest_scan[2]); - int blended = _BLEND(blend_type, back_color, src_b); - dest_scan[2] = - FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); - back_color = FX_GAMMA(dest_scan[1]); - blended = _BLEND(blend_type, back_color, src_g); - dest_scan[1] = - FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); - back_color = FX_GAMMA(dest_scan[0]); - blended = _BLEND(blend_type, back_color, src_r); - dest_scan[0] = - FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE(back_color, blended, src_alpha)); - } else { - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), src_b, src_alpha)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), src_g, src_alpha)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), src_r, src_alpha)); - } - dest_scan += Bpp; - } -} -inline FX_BOOL _ScanlineCompositor_InitSourceMask(FXDIB_Format dest_format, - int alpha_flag, - FX_DWORD mask_color, - int& mask_alpha, - int& mask_red, - int& mask_green, - int& mask_blue, - int& mask_black, - void* icc_module, - void* pIccTransform) { - ICodec_IccModule* pIccModule = (ICodec_IccModule*)icc_module; - if (alpha_flag >> 8) { - mask_alpha = alpha_flag & 0xff; - mask_red = FXSYS_GetCValue(mask_color); - mask_green = FXSYS_GetMValue(mask_color); - mask_blue = FXSYS_GetYValue(mask_color); - mask_black = FXSYS_GetKValue(mask_color); - } else { - mask_alpha = FXARGB_A(mask_color); - mask_red = FXARGB_R(mask_color); - mask_green = FXARGB_G(mask_color); - mask_blue = FXARGB_B(mask_color); - } - if (dest_format == FXDIB_8bppMask) { - return TRUE; - } - if ((dest_format & 0xff) == 8) { - if (pIccTransform) { - mask_color = (alpha_flag >> 8) ? FXCMYK_TODIB(mask_color) - : FXARGB_TODIB(mask_color); - uint8_t* gray_p = (uint8_t*)&mask_color; - pIccModule->TranslateScanline(pIccTransform, gray_p, gray_p, 1); - mask_red = dest_format & 0x0400 ? FX_CCOLOR(gray_p[0]) : gray_p[0]; - } else { - if (alpha_flag >> 8) { - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(mask_red, mask_green, mask_blue, mask_black, r, g, - b); - mask_red = FXRGB2GRAY(r, g, b); - } else { - mask_red = FXRGB2GRAY(mask_red, mask_green, mask_blue); - } - if (dest_format & 0x0400) { - mask_red = FX_CCOLOR(mask_red); - } - } - } else { - uint8_t* mask_color_p = (uint8_t*)&mask_color; - mask_color = - (alpha_flag >> 8) ? FXCMYK_TODIB(mask_color) : FXARGB_TODIB(mask_color); - if (pIccTransform) { - pIccModule->TranslateScanline(pIccTransform, mask_color_p, mask_color_p, - 1); - mask_red = mask_color_p[2]; - mask_green = mask_color_p[1]; - mask_blue = mask_color_p[0]; - } else if (alpha_flag >> 8) { - AdobeCMYK_to_sRGB1(mask_color_p[0], mask_color_p[1], mask_color_p[2], - mask_color_p[3], mask_color_p[2], mask_color_p[1], - mask_color_p[0]); - mask_red = mask_color_p[2]; - mask_green = mask_color_p[1]; - mask_blue = mask_color_p[0]; - } - } - return TRUE; -} -inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, - FXDIB_Format dest_format, - FX_DWORD*& pDestPalette, - FX_DWORD* pSrcPalette, - void* icc_module, - void* pIccTransform) { - ICodec_IccModule* pIccModule = (ICodec_IccModule*)icc_module; - FX_BOOL isSrcCmyk = !!(src_format & 0x0400); - FX_BOOL isDstCmyk = !!(dest_format & 0x0400); - pDestPalette = NULL; - if (pIccTransform) { - if (pSrcPalette) { - if ((dest_format & 0xff) == 8) { - int pal_count = 1 << (src_format & 0xff); - uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); - pDestPalette = (FX_DWORD*)gray_pal; - for (int i = 0; i < pal_count; i++) { - FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) - : FXARGB_TODIB(pSrcPalette[i]); - pIccModule->TranslateScanline(pIccTransform, gray_pal, - (const uint8_t*)&color, 1); - gray_pal++; - } - } else { - int palsize = 1 << (src_format & 0xff); - pDestPalette = FX_Alloc(FX_DWORD, palsize); - for (int i = 0; i < palsize; i++) { - FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) - : FXARGB_TODIB(pSrcPalette[i]); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&color, - (const uint8_t*)&color, 1); - pDestPalette[i] = - isDstCmyk ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); - } - } - } else { - int pal_count = 1 << (src_format & 0xff); - uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); - if (pal_count == 2) { - gray_pal[0] = 0; - gray_pal[1] = 255; - } else { - for (int i = 0; i < pal_count; i++) { - gray_pal[i] = i; - } - } - if ((dest_format & 0xff) == 8) { - pIccModule->TranslateScanline(pIccTransform, gray_pal, gray_pal, - pal_count); - pDestPalette = (FX_DWORD*)gray_pal; - } else { - pDestPalette = FX_Alloc(FX_DWORD, pal_count); - for (int i = 0; i < pal_count; i++) { - pIccModule->TranslateScanline( - pIccTransform, (uint8_t*)&pDestPalette[i], &gray_pal[i], 1); - pDestPalette[i] = isDstCmyk ? FXCMYK_TODIB(pDestPalette[i]) - : FXARGB_TODIB(pDestPalette[i]); - } - FX_Free(gray_pal); - } - } - } else { - if (pSrcPalette) { - if ((dest_format & 0xff) == 8) { - int pal_count = 1 << (src_format & 0xff); - uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); - pDestPalette = (FX_DWORD*)gray_pal; - if (isSrcCmyk) { - for (int i = 0; i < pal_count; i++) { - FX_CMYK cmyk = pSrcPalette[i]; - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), - FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, - g, b); - *gray_pal++ = FXRGB2GRAY(r, g, b); - } - } else { - for (int i = 0; i < pal_count; i++) { - FX_ARGB argb = pSrcPalette[i]; - *gray_pal++ = - FXRGB2GRAY(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb)); - } - } - } else { - int palsize = 1 << (src_format & 0xff); - pDestPalette = FX_Alloc(FX_DWORD, palsize); - if (isDstCmyk == isSrcCmyk) { - FXSYS_memcpy(pDestPalette, pSrcPalette, palsize * sizeof(FX_DWORD)); - } else { - for (int i = 0; i < palsize; i++) { - FX_CMYK cmyk = pSrcPalette[i]; - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), - FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, - g, b); - pDestPalette[i] = FXARGB_MAKE(0xff, r, g, b); - } - } - } - } else { - if ((dest_format & 0xff) == 8) { - int pal_count = 1 << (src_format & 0xff); - uint8_t* gray_pal = FX_Alloc(uint8_t, pal_count); - if (pal_count == 2) { - gray_pal[0] = 0; - gray_pal[1] = 255; - } else { - for (int i = 0; i < pal_count; i++) { - gray_pal[i] = i; - } - } - pDestPalette = (FX_DWORD*)gray_pal; - } else { - int palsize = 1 << (src_format & 0xff); - pDestPalette = FX_Alloc(FX_DWORD, palsize); - if (palsize == 2) { - pDestPalette[0] = isSrcCmyk ? 255 : 0xff000000; - pDestPalette[1] = isSrcCmyk ? 0 : 0xffffffff; - } else { - for (int i = 0; i < palsize; i++) { - pDestPalette[i] = isSrcCmyk ? FX_CCOLOR(i) : (i * 0x10101); - } - } - if (isSrcCmyk != isDstCmyk) { - for (int i = 0; i < palsize; i++) { - FX_CMYK cmyk = pDestPalette[i]; - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(cmyk), FXSYS_GetMValue(cmyk), - FXSYS_GetYValue(cmyk), FXSYS_GetKValue(cmyk), r, - g, b); - pDestPalette[i] = FXARGB_MAKE(0xff, r, g, b); - } - } - } - } - } -} -CFX_ScanlineCompositor::CFX_ScanlineCompositor() { - m_pSrcPalette = NULL; - m_pCacheScanline = NULL; - m_CacheSize = 0; - m_bRgbByteOrder = FALSE; - m_BlendType = FXDIB_BLEND_NORMAL; -} -CFX_ScanlineCompositor::~CFX_ScanlineCompositor() { - FX_Free(m_pSrcPalette); - FX_Free(m_pCacheScanline); -} -FX_BOOL CFX_ScanlineCompositor::Init(FXDIB_Format dest_format, - FXDIB_Format src_format, - int32_t width, - FX_DWORD* pSrcPalette, - FX_DWORD mask_color, - int blend_type, - FX_BOOL bClip, - FX_BOOL bRgbByteOrder, - int alpha_flag, - void* pIccTransform) { - m_SrcFormat = src_format; - m_DestFormat = dest_format; - m_BlendType = blend_type; - m_bRgbByteOrder = bRgbByteOrder; - ICodec_IccModule* pIccModule = NULL; - if (CFX_GEModule::Get()->GetCodecModule()) { - pIccModule = CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - } - if (!pIccModule) { - pIccTransform = NULL; - } - m_pIccTransform = pIccTransform; - if ((dest_format & 0xff) == 1) { - return FALSE; - } - if (m_SrcFormat == FXDIB_1bppMask || m_SrcFormat == FXDIB_8bppMask) { - return _ScanlineCompositor_InitSourceMask( - dest_format, alpha_flag, mask_color, m_MaskAlpha, m_MaskRed, - m_MaskGreen, m_MaskBlue, m_MaskBlack, pIccModule, pIccTransform); - } - if (!pIccTransform && (~src_format & 0x0400) && (dest_format & 0x0400)) { - return FALSE; - } - if ((m_SrcFormat & 0xff) <= 8) { - if (dest_format == FXDIB_8bppMask) { - return TRUE; - } - _ScanlineCompositor_InitSourcePalette(src_format, dest_format, - m_pSrcPalette, pSrcPalette, - pIccModule, pIccTransform); - m_Transparency = - (dest_format == FXDIB_Argb ? 1 : 0) + (dest_format & 0x0200 ? 2 : 0) + - (dest_format & 0x0400 ? 4 : 0) + ((src_format & 0xff) == 1 ? 8 : 0); - return TRUE; - } - m_Transparency = (src_format & 0x0200 ? 0 : 1) + - (dest_format & 0x0200 ? 0 : 2) + - (blend_type == FXDIB_BLEND_NORMAL ? 4 : 0) + - (bClip ? 8 : 0) + (src_format & 0x0400 ? 16 : 0) + - (dest_format & 0x0400 ? 32 : 0) + (pIccTransform ? 64 : 0); - return TRUE; -} -void CFX_ScanlineCompositor::CompositeRgbBitmapLine( - uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - const uint8_t* clip_scan, - const uint8_t* src_extra_alpha, - uint8_t* dst_extra_alpha) { - int src_Bpp = (m_SrcFormat & 0xff) >> 3; - int dest_Bpp = (m_DestFormat & 0xff) >> 3; - if (m_bRgbByteOrder) { - switch (m_Transparency) { - case 0: - case 4: - case 8: - case 12: - _CompositeRow_Argb2Argb_RgbByteOrder(dest_scan, src_scan, width, - m_BlendType, clip_scan); - break; - case 1: - _CompositeRow_Rgb2Argb_Blend_NoClip_RgbByteOrder( - dest_scan, src_scan, width, m_BlendType, src_Bpp); - break; - case 2: - case 10: - _CompositeRow_Argb2Rgb_Blend_RgbByteOrder( - dest_scan, src_scan, width, m_BlendType, dest_Bpp, clip_scan); - break; - case 3: - _CompositeRow_Rgb2Rgb_Blend_NoClip_RgbByteOrder( - dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp); - break; - case 5: - _CompositeRow_Rgb2Argb_NoBlend_NoClip_RgbByteOrder(dest_scan, src_scan, - width, src_Bpp); - break; - case 6: - case 14: - _CompositeRow_Argb2Rgb_NoBlend_RgbByteOrder(dest_scan, src_scan, width, - dest_Bpp, clip_scan); - break; - case 7: - _CompositeRow_Rgb2Rgb_NoBlend_NoClip_RgbByteOrder( - dest_scan, src_scan, width, dest_Bpp, src_Bpp); - break; - case 9: - _CompositeRow_Rgb2Argb_Blend_Clip_RgbByteOrder( - dest_scan, src_scan, width, m_BlendType, src_Bpp, clip_scan); - break; - case 11: - _CompositeRow_Rgb2Rgb_Blend_Clip_RgbByteOrder( - dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp, - clip_scan); - break; - case 13: - _CompositeRow_Rgb2Argb_NoBlend_Clip_RgbByteOrder( - dest_scan, src_scan, width, src_Bpp, clip_scan); - break; - case 15: - _CompositeRow_Rgb2Rgb_NoBlend_Clip_RgbByteOrder( - dest_scan, src_scan, width, dest_Bpp, src_Bpp, clip_scan); - break; - } - return; - } - if (m_DestFormat == FXDIB_8bppMask) { - if (m_SrcFormat & 0x0200) { - if (m_SrcFormat == FXDIB_Argb) { - _CompositeRow_Argb2Mask(dest_scan, src_scan, width, clip_scan); - } else { - _CompositeRow_Rgba2Mask(dest_scan, src_extra_alpha, width, clip_scan); - } - } else { - _CompositeRow_Rgb2Mask(dest_scan, src_scan, width, clip_scan); - } - } else if ((m_DestFormat & 0xff) == 8) { - if (m_DestFormat & 0x0400) { - for (int i = 0; i < width; i++) { - *dest_scan = ~*dest_scan; - dest_scan++; - } - } - if (m_SrcFormat & 0x0200) { - if (m_DestFormat & 0x0200) { - _CompositeRow_Argb2Graya(dest_scan, src_scan, width, m_BlendType, - clip_scan, src_extra_alpha, dst_extra_alpha, - m_pIccTransform); - } else { - _CompositeRow_Argb2Gray(dest_scan, src_scan, width, m_BlendType, - clip_scan, src_extra_alpha, m_pIccTransform); - } - } else { - if (m_DestFormat & 0x0200) { - _CompositeRow_Rgb2Graya(dest_scan, src_scan, src_Bpp, width, - m_BlendType, clip_scan, dst_extra_alpha, - m_pIccTransform); - } else { - _CompositeRow_Rgb2Gray(dest_scan, src_scan, src_Bpp, width, m_BlendType, - clip_scan, m_pIccTransform); - } - } - if (m_DestFormat & 0x0400) { - for (int i = 0; i < width; i++) { - *dest_scan = ~*dest_scan; - dest_scan++; - } - } - } else { - int dest_Size = width * dest_Bpp + 4; - if (dest_Size > m_CacheSize) { - m_pCacheScanline = FX_Realloc(uint8_t, m_pCacheScanline, dest_Size); - if (!m_pCacheScanline) { - return; - } - m_CacheSize = dest_Size; - } - switch (m_Transparency) { - case 0: - case 4: - case 8: - case 4 + 8: { - _CompositeRow_Argb2Argb(dest_scan, src_scan, width, m_BlendType, - clip_scan, dst_extra_alpha, src_extra_alpha); - } break; - case 64: - case 4 + 64: - case 8 + 64: - case 4 + 8 + 64: { - _CompositeRow_Argb2Argb_Transform( - dest_scan, src_scan, width, m_BlendType, clip_scan, dst_extra_alpha, - src_extra_alpha, m_pCacheScanline, m_pIccTransform); - } break; - case 1: - _CompositeRow_Rgb2Argb_Blend_NoClip( - dest_scan, src_scan, width, m_BlendType, src_Bpp, dst_extra_alpha); - break; - case 1 + 64: - _CompositeRow_Rgb2Argb_Blend_NoClip_Transform( - dest_scan, src_scan, width, m_BlendType, src_Bpp, dst_extra_alpha, - m_pCacheScanline, m_pIccTransform); - break; - case 1 + 8: - _CompositeRow_Rgb2Argb_Blend_Clip(dest_scan, src_scan, width, - m_BlendType, src_Bpp, clip_scan, - dst_extra_alpha); - break; - case 1 + 8 + 64: - _CompositeRow_Rgb2Argb_Blend_Clip_Transform( - dest_scan, src_scan, width, m_BlendType, src_Bpp, clip_scan, - dst_extra_alpha, m_pCacheScanline, m_pIccTransform); - break; - case 1 + 4: - _CompositeRow_Rgb2Argb_NoBlend_NoClip(dest_scan, src_scan, width, - src_Bpp, dst_extra_alpha); - break; - case 1 + 4 + 64: - _CompositeRow_Rgb2Argb_NoBlend_NoClip_Transform( - dest_scan, src_scan, width, src_Bpp, dst_extra_alpha, - m_pCacheScanline, m_pIccTransform); - break; - case 1 + 4 + 8: - _CompositeRow_Rgb2Argb_NoBlend_Clip(dest_scan, src_scan, width, src_Bpp, - clip_scan, dst_extra_alpha); - break; - case 1 + 4 + 8 + 64: - _CompositeRow_Rgb2Argb_NoBlend_Clip_Transform( - dest_scan, src_scan, width, src_Bpp, clip_scan, dst_extra_alpha, - m_pCacheScanline, m_pIccTransform); - break; - case 2: - case 2 + 8: - _CompositeRow_Argb2Rgb_Blend(dest_scan, src_scan, width, m_BlendType, - dest_Bpp, clip_scan, src_extra_alpha); - break; - case 2 + 64: - case 2 + 8 + 64: - _CompositeRow_Argb2Rgb_Blend_Transform( - dest_scan, src_scan, width, m_BlendType, dest_Bpp, clip_scan, - src_extra_alpha, m_pCacheScanline, m_pIccTransform); - break; - case 2 + 4: - case 2 + 4 + 8: - _CompositeRow_Argb2Rgb_NoBlend(dest_scan, src_scan, width, dest_Bpp, - clip_scan, src_extra_alpha); - break; - case 2 + 4 + 64: - case 2 + 4 + 8 + 64: - _CompositeRow_Argb2Rgb_NoBlend_Transform( - dest_scan, src_scan, width, dest_Bpp, clip_scan, src_extra_alpha, - m_pCacheScanline, m_pIccTransform); - break; - case 1 + 2: - _CompositeRow_Rgb2Rgb_Blend_NoClip(dest_scan, src_scan, width, - m_BlendType, dest_Bpp, src_Bpp); - break; - case 1 + 2 + 64: - _CompositeRow_Rgb2Rgb_Blend_NoClip_Transform( - dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp, - m_pCacheScanline, m_pIccTransform); - break; - case 1 + 2 + 8: - _CompositeRow_Rgb2Rgb_Blend_Clip(dest_scan, src_scan, width, - m_BlendType, dest_Bpp, src_Bpp, - clip_scan); - break; - case 1 + 2 + 8 + 64: - _CompositeRow_Rgb2Rgb_Blend_Clip_Transform( - dest_scan, src_scan, width, m_BlendType, dest_Bpp, src_Bpp, - clip_scan, m_pCacheScanline, m_pIccTransform); - break; - case 1 + 2 + 4: - _CompositeRow_Rgb2Rgb_NoBlend_NoClip(dest_scan, src_scan, width, - dest_Bpp, src_Bpp); - break; - case 1 + 2 + 4 + 64: - _CompositeRow_Rgb2Rgb_NoBlend_NoClip_Transform( - dest_scan, src_scan, width, dest_Bpp, src_Bpp, m_pCacheScanline, - m_pIccTransform); - break; - case 1 + 2 + 4 + 8: - _CompositeRow_Rgb2Rgb_NoBlend_Clip(dest_scan, src_scan, width, dest_Bpp, - src_Bpp, clip_scan); - break; - case 1 + 2 + 4 + 8 + 64: - _CompositeRow_Rgb2Rgb_NoBlend_Clip_Transform( - dest_scan, src_scan, width, dest_Bpp, src_Bpp, clip_scan, - m_pCacheScanline, m_pIccTransform); - break; - } - } -} -void CFX_ScanlineCompositor::CompositePalBitmapLine( - uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - int width, - const uint8_t* clip_scan, - const uint8_t* src_extra_alpha, - uint8_t* dst_extra_alpha) { - if (m_bRgbByteOrder) { - if (m_SrcFormat == FXDIB_1bppRgb) { - if (m_DestFormat == FXDIB_8bppRgb) { - return; - } - if (m_DestFormat == FXDIB_Argb) { - _CompositeRow_1bppRgb2Argb_NoBlend_RgbByteOrder( - dest_scan, src_scan, src_left, width, m_pSrcPalette, clip_scan); - } else { - _CompositeRow_1bppRgb2Rgb_NoBlend_RgbByteOrder( - dest_scan, src_scan, src_left, m_pSrcPalette, width, - (m_DestFormat & 0xff) >> 3, clip_scan); - } - } else { - if (m_DestFormat == FXDIB_8bppRgb) { - return; - } - if (m_DestFormat == FXDIB_Argb) { - _CompositeRow_8bppRgb2Argb_NoBlend_RgbByteOrder( - dest_scan, src_scan, width, m_pSrcPalette, clip_scan); - } else { - _CompositeRow_8bppRgb2Rgb_NoBlend_RgbByteOrder( - dest_scan, src_scan, m_pSrcPalette, width, - (m_DestFormat & 0xff) >> 3, clip_scan); - } - } - return; - } - if (m_DestFormat == FXDIB_8bppMask) { - _CompositeRow_Rgb2Mask(dest_scan, src_scan, width, clip_scan); - return; - } - if ((m_DestFormat & 0xff) == 8) { - if (m_Transparency & 8) { - if (m_DestFormat & 0x0200) { - _CompositeRow_1bppPal2Graya(dest_scan, src_scan, src_left, - (const uint8_t*)m_pSrcPalette, width, - m_BlendType, clip_scan, dst_extra_alpha); - } else { - _CompositeRow_1bppPal2Gray(dest_scan, src_scan, src_left, - (const uint8_t*)m_pSrcPalette, width, - m_BlendType, clip_scan); - } - } else { - if (m_DestFormat & 0x0200) - _CompositeRow_8bppPal2Graya( - dest_scan, src_scan, (const uint8_t*)m_pSrcPalette, width, - m_BlendType, clip_scan, dst_extra_alpha, src_extra_alpha); - else - _CompositeRow_8bppPal2Gray(dest_scan, src_scan, - (const uint8_t*)m_pSrcPalette, width, - m_BlendType, clip_scan, src_extra_alpha); - } - } else { - switch (m_Transparency) { - case 1 + 2: - _CompositeRow_8bppRgb2Argb_NoBlend(dest_scan, src_scan, width, - m_pSrcPalette, clip_scan, - src_extra_alpha); - break; - case 1 + 2 + 8: - _CompositeRow_1bppRgb2Argb_NoBlend(dest_scan, src_scan, src_left, width, - m_pSrcPalette, clip_scan); - break; - case 0: - _CompositeRow_8bppRgb2Rgb_NoBlend(dest_scan, src_scan, m_pSrcPalette, - width, (m_DestFormat & 0xff) >> 3, - clip_scan, src_extra_alpha); - break; - case 0 + 8: - _CompositeRow_1bppRgb2Rgb_NoBlend( - dest_scan, src_scan, src_left, m_pSrcPalette, width, - (m_DestFormat & 0xff) >> 3, clip_scan); - break; - case 0 + 2: - _CompositeRow_8bppRgb2Rgb_NoBlend(dest_scan, src_scan, m_pSrcPalette, - width, (m_DestFormat & 0xff) >> 3, - clip_scan, src_extra_alpha); - break; - case 0 + 2 + 8: - _CompositeRow_1bppRgb2Rgba_NoBlend(dest_scan, src_scan, src_left, width, - m_pSrcPalette, clip_scan, - dst_extra_alpha); - break; - break; - } - } -} -void CFX_ScanlineCompositor::CompositeByteMaskLine(uint8_t* dest_scan, - const uint8_t* src_scan, - int width, - const uint8_t* clip_scan, - uint8_t* dst_extra_alpha) { - if (m_DestFormat == FXDIB_8bppMask) { - _CompositeRow_ByteMask2Mask(dest_scan, src_scan, m_MaskAlpha, width, - clip_scan); - } else if ((m_DestFormat & 0xff) == 8) { - if (m_DestFormat & 0x0200) { - _CompositeRow_ByteMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - width, clip_scan, dst_extra_alpha); - } else { - _CompositeRow_ByteMask2Gray(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - width, clip_scan); - } - } else if (m_bRgbByteOrder) { - if (m_DestFormat == FXDIB_Argb) { - _CompositeRow_ByteMask2Argb_RgbByteOrder( - dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, - width, m_BlendType, clip_scan); - } else { - _CompositeRow_ByteMask2Rgb_RgbByteOrder( - dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, - width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan); - } - return; - } else if (m_DestFormat == FXDIB_Argb) { - _CompositeRow_ByteMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - m_MaskGreen, m_MaskBlue, width, m_BlendType, - clip_scan); - } else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32) { - _CompositeRow_ByteMask2Rgb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - m_MaskGreen, m_MaskBlue, width, m_BlendType, - (m_DestFormat & 0xff) >> 3, clip_scan); - } else if (m_DestFormat == FXDIB_Rgba) { - _CompositeRow_ByteMask2Rgba(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - m_MaskGreen, m_MaskBlue, width, m_BlendType, - clip_scan, dst_extra_alpha); - } -} -void CFX_ScanlineCompositor::CompositeBitMaskLine(uint8_t* dest_scan, - const uint8_t* src_scan, - int src_left, - int width, - const uint8_t* clip_scan, - uint8_t* dst_extra_alpha) { - if (m_DestFormat == FXDIB_8bppMask) { - _CompositeRow_BitMask2Mask(dest_scan, src_scan, m_MaskAlpha, src_left, - width, clip_scan); - } else if ((m_DestFormat & 0xff) == 8) { - if (m_DestFormat & 0x0200) { - _CompositeRow_BitMask2Graya(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - src_left, width, clip_scan, dst_extra_alpha); - } else { - _CompositeRow_BitMask2Gray(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - src_left, width, clip_scan); - } - } else if (m_bRgbByteOrder) { - if (m_DestFormat == FXDIB_Argb) { - _CompositeRow_BitMask2Argb_RgbByteOrder( - dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, - src_left, width, m_BlendType, clip_scan); - } else { - _CompositeRow_BitMask2Rgb_RgbByteOrder( - dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, - src_left, width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan); - } - return; - } else if (m_DestFormat == FXDIB_Argb) { - _CompositeRow_BitMask2Argb(dest_scan, src_scan, m_MaskAlpha, m_MaskRed, - m_MaskGreen, m_MaskBlue, src_left, width, - m_BlendType, clip_scan); - } else if (m_DestFormat == FXDIB_Rgb || m_DestFormat == FXDIB_Rgb32) { - _CompositeRow_BitMask2Rgb( - dest_scan, src_scan, m_MaskAlpha, m_MaskRed, m_MaskGreen, m_MaskBlue, - src_left, width, m_BlendType, (m_DestFormat & 0xff) >> 3, clip_scan); - } -} - -FX_BOOL CFX_DIBitmap::CompositeBitmap(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - int blend_type, - const CFX_ClipRgn* pClipRgn, - FX_BOOL bRgbByteOrder, - void* pIccTransform) { - if (!m_pBuffer) { - return FALSE; - } - ASSERT(!pSrcBitmap->IsAlphaMask()); - ASSERT(m_bpp >= 8); - if (pSrcBitmap->IsAlphaMask() || m_bpp < 8) { - return FALSE; - } - GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetWidth(), - pSrcBitmap->GetHeight(), src_left, src_top, pClipRgn); - if (width == 0 || height == 0) { - return TRUE; - } - const CFX_DIBitmap* pClipMask = NULL; - FX_RECT clip_box; - if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { - ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); - pClipMask = pClipRgn->GetMask(); - clip_box = pClipRgn->GetBox(); - } - CFX_ScanlineCompositor compositor; - if (!compositor.Init(GetFormat(), pSrcBitmap->GetFormat(), width, - pSrcBitmap->GetPalette(), 0, blend_type, - pClipMask != NULL, bRgbByteOrder, 0, pIccTransform)) { - return FALSE; - } - int dest_Bpp = m_bpp / 8; - int src_Bpp = pSrcBitmap->GetBPP() / 8; - FX_BOOL bRgb = src_Bpp > 1 && !pSrcBitmap->IsCmykImage(); - CFX_DIBitmap* pSrcAlphaMask = pSrcBitmap->m_pAlphaMask; - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = - m_pBuffer + (dest_top + row) * m_Pitch + dest_left * dest_Bpp; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * src_Bpp; - const uint8_t* src_scan_extra_alpha = - pSrcAlphaMask ? pSrcAlphaMask->GetScanline(src_top + row) + src_left - : NULL; - uint8_t* dst_scan_extra_alpha = - m_pAlphaMask - ? (uint8_t*)m_pAlphaMask->GetScanline(dest_top + row) + dest_left - : NULL; - const uint8_t* clip_scan = NULL; - if (pClipMask) { - clip_scan = pClipMask->m_pBuffer + - (dest_top + row - clip_box.top) * pClipMask->m_Pitch + - (dest_left - clip_box.left); - } - if (bRgb) { - compositor.CompositeRgbBitmapLine(dest_scan, src_scan, width, clip_scan, - src_scan_extra_alpha, - dst_scan_extra_alpha); - } else { - compositor.CompositePalBitmapLine(dest_scan, src_scan, src_left, width, - clip_scan, src_scan_extra_alpha, - dst_scan_extra_alpha); - } - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::CompositeMask(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pMask, - FX_DWORD color, - int src_left, - int src_top, - int blend_type, - const CFX_ClipRgn* pClipRgn, - FX_BOOL bRgbByteOrder, - int alpha_flag, - void* pIccTransform) { - if (!m_pBuffer) { - return FALSE; - } - ASSERT(pMask->IsAlphaMask()); - ASSERT(m_bpp >= 8); - if (!pMask->IsAlphaMask() || m_bpp < 8) { - return FALSE; - } - GetOverlapRect(dest_left, dest_top, width, height, pMask->GetWidth(), - pMask->GetHeight(), src_left, src_top, pClipRgn); - if (width == 0 || height == 0) { - return TRUE; - } - int src_alpha = - (uint8_t)(alpha_flag >> 8) ? (alpha_flag & 0xff) : FXARGB_A(color); - if (src_alpha == 0) { - return TRUE; - } - const CFX_DIBitmap* pClipMask = NULL; - FX_RECT clip_box; - if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { - ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); - pClipMask = pClipRgn->GetMask(); - clip_box = pClipRgn->GetBox(); - } - int src_bpp = pMask->GetBPP(); - int Bpp = GetBPP() / 8; - CFX_ScanlineCompositor compositor; - if (!compositor.Init(GetFormat(), pMask->GetFormat(), width, NULL, color, - blend_type, pClipMask != NULL, bRgbByteOrder, alpha_flag, - pIccTransform)) { - return FALSE; - } - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = - m_pBuffer + (dest_top + row) * m_Pitch + dest_left * Bpp; - const uint8_t* src_scan = pMask->GetScanline(src_top + row); - uint8_t* dst_scan_extra_alpha = - m_pAlphaMask - ? (uint8_t*)m_pAlphaMask->GetScanline(dest_top + row) + dest_left - : NULL; - const uint8_t* clip_scan = NULL; - if (pClipMask) { - clip_scan = pClipMask->m_pBuffer + - (dest_top + row - clip_box.top) * pClipMask->m_Pitch + - (dest_left - clip_box.left); - } - if (src_bpp == 1) { - compositor.CompositeBitMaskLine(dest_scan, src_scan, src_left, width, - clip_scan, dst_scan_extra_alpha); - } else { - compositor.CompositeByteMaskLine(dest_scan, src_scan + src_left, width, - clip_scan, dst_scan_extra_alpha); - } - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::CompositeRect(int left, - int top, - int width, - int height, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - if (!m_pBuffer) { - return FALSE; - } - int src_alpha = (alpha_flag >> 8) ? (alpha_flag & 0xff) : FXARGB_A(color); - if (src_alpha == 0) { - return TRUE; - } - FX_RECT rect(left, top, left + width, top + height); - rect.Intersect(0, 0, m_Width, m_Height); - if (rect.IsEmpty()) { - return TRUE; - } - width = rect.Width(); - FX_DWORD dst_color; - if (alpha_flag >> 8) { - dst_color = FXCMYK_TODIB(color); - } else { - dst_color = FXARGB_TODIB(color); - } - uint8_t* color_p = (uint8_t*)&dst_color; - if (m_bpp == 8) { - uint8_t gray = 255; - if (!IsAlphaMask()) { - if (pIccTransform && CFX_GEModule::Get()->GetCodecModule() && - CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, &gray, color_p, 1); - } else { - if (alpha_flag >> 8) { - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(color_p[0], color_p[1], color_p[2], color_p[3], r, - g, b); - gray = FXRGB2GRAY(r, g, b); - } else { - gray = (uint8_t)FXRGB2GRAY((int)color_p[2], color_p[1], color_p[0]); - } - } - if (IsCmykImage()) { - gray = ~gray; - } - } - for (int row = rect.top; row < rect.bottom; row++) { - uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left; - if (src_alpha == 255) { - FXSYS_memset(dest_scan, gray, width); - } else { - for (int col = 0; col < width; col++) { - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, gray, src_alpha); - dest_scan++; - } - } - } - return TRUE; - } - if (m_bpp == 1) { - ASSERT(!IsCmykImage() && (uint8_t)(alpha_flag >> 8) == 0); - int left_shift = rect.left % 8; - int right_shift = rect.right % 8; - int width = rect.right / 8 - rect.left / 8; - int index = 0; - if (m_pPalette) { - for (int i = 0; i < 2; i++) { - if (m_pPalette[i] == color) { - index = i; - } - } - } else { - index = ((uint8_t)color == 0xff) ? 1 : 0; - } - for (int row = rect.top; row < rect.bottom; row++) { - uint8_t* dest_scan_top = (uint8_t*)GetScanline(row) + rect.left / 8; - uint8_t* dest_scan_top_r = (uint8_t*)GetScanline(row) + rect.right / 8; - uint8_t left_flag = *dest_scan_top & (255 << (8 - left_shift)); - uint8_t right_flag = *dest_scan_top_r & (255 >> right_shift); - if (width) { - FXSYS_memset(dest_scan_top + 1, index ? 255 : 0, width - 1); - if (!index) { - *dest_scan_top &= left_flag; - *dest_scan_top_r &= right_flag; - } else { - *dest_scan_top |= ~left_flag; - *dest_scan_top_r |= ~right_flag; - } - } else { - if (!index) { - *dest_scan_top &= left_flag | right_flag; - } else { - *dest_scan_top |= ~(left_flag | right_flag); - } - } - } - return TRUE; - } - ASSERT(m_bpp >= 24); - if (m_bpp < 24) { - return FALSE; - } - if (pIccTransform && CFX_GEModule::Get()->GetCodecModule()) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, color_p, color_p, 1); - } else { - if (alpha_flag >> 8 && !IsCmykImage()) { - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), - FXSYS_GetYValue(color), FXSYS_GetKValue(color), - color_p[2], color_p[1], color_p[0]); - } else if (!(alpha_flag >> 8) && IsCmykImage()) { - return FALSE; - } - } - if (!IsCmykImage()) { - color_p[3] = (uint8_t)src_alpha; - } - int Bpp = m_bpp / 8; - FX_BOOL bAlpha = HasAlpha(); - bool bArgb = GetFormat() == FXDIB_Argb; - if (src_alpha == 255) { - for (int row = rect.top; row < rect.bottom; row++) { - uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left * Bpp; - uint8_t* dest_scan_alpha = - m_pAlphaMask ? (uint8_t*)m_pAlphaMask->GetScanline(row) + rect.left - : NULL; - if (dest_scan_alpha) { - FXSYS_memset(dest_scan_alpha, 0xff, width); - } - if (Bpp == 4) { - FX_DWORD* scan = (FX_DWORD*)dest_scan; - for (int col = 0; col < width; col++) { - *scan++ = dst_color; - } - } else { - for (int col = 0; col < width; col++) { - *dest_scan++ = color_p[0]; - *dest_scan++ = color_p[1]; - *dest_scan++ = color_p[2]; - } - } - } - return TRUE; - } - for (int row = rect.top; row < rect.bottom; row++) { - uint8_t* dest_scan = m_pBuffer + row * m_Pitch + rect.left * Bpp; - if (bAlpha) { - if (bArgb) { - for (int col = 0; col < width; col++) { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha, color_p[2], - color_p[1], color_p[0])); - dest_scan += 4; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - int alpha_ratio = src_alpha * 255 / dest_alpha; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[0], alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[1], alpha_ratio); - dest_scan++; - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[2], alpha_ratio); - dest_scan++; - *dest_scan++ = dest_alpha; - } - } else { - uint8_t* dest_scan_alpha = - (uint8_t*)m_pAlphaMask->GetScanline(row) + rect.left; - for (int col = 0; col < width; col++) { - uint8_t back_alpha = *dest_scan_alpha; - if (back_alpha == 0) { - *dest_scan_alpha++ = src_alpha; - FXSYS_memcpy(dest_scan, color_p, Bpp); - dest_scan += Bpp; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha - back_alpha * src_alpha / 255; - *dest_scan_alpha++ = dest_alpha; - int alpha_ratio = src_alpha * 255 / dest_alpha; - for (int comps = 0; comps < Bpp; comps++) { - *dest_scan = - FXDIB_ALPHA_MERGE(*dest_scan, color_p[comps], alpha_ratio); - dest_scan++; - } - } - } - } else { - for (int col = 0; col < width; col++) { - for (int comps = 0; comps < Bpp; comps++) { - if (comps == 3) { - *dest_scan++ = 255; - continue; - } - *dest_scan = FXDIB_ALPHA_MERGE(*dest_scan, color_p[comps], src_alpha); - dest_scan++; - } - } - } - } - return TRUE; -} -CFX_BitmapComposer::CFX_BitmapComposer() { - m_pScanlineV = NULL; - m_pScanlineAlphaV = NULL; - m_pClipScanV = NULL; - m_pAddClipScan = NULL; - m_bRgbByteOrder = FALSE; - m_BlendType = FXDIB_BLEND_NORMAL; -} -CFX_BitmapComposer::~CFX_BitmapComposer() { - FX_Free(m_pScanlineV); - FX_Free(m_pScanlineAlphaV); - FX_Free(m_pClipScanV); - FX_Free(m_pAddClipScan); -} -void CFX_BitmapComposer::Compose(CFX_DIBitmap* pDest, - const CFX_ClipRgn* pClipRgn, - int bitmap_alpha, - FX_DWORD mask_color, - FX_RECT& dest_rect, - FX_BOOL bVertical, - FX_BOOL bFlipX, - FX_BOOL bFlipY, - FX_BOOL bRgbByteOrder, - int alpha_flag, - void* pIccTransform, - int blend_type) { - m_pBitmap = pDest; - m_pClipRgn = pClipRgn; - m_DestLeft = dest_rect.left; - m_DestTop = dest_rect.top; - m_DestWidth = dest_rect.Width(); - m_DestHeight = dest_rect.Height(); - m_BitmapAlpha = bitmap_alpha; - m_MaskColor = mask_color; - m_pClipMask = NULL; - if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { - m_pClipMask = pClipRgn->GetMask(); - } - m_bVertical = bVertical; - m_bFlipX = bFlipX; - m_bFlipY = bFlipY; - m_AlphaFlag = alpha_flag; - m_pIccTransform = pIccTransform; - m_bRgbByteOrder = bRgbByteOrder; - m_BlendType = blend_type; -} -FX_BOOL CFX_BitmapComposer::SetInfo(int width, - int height, - FXDIB_Format src_format, - FX_DWORD* pSrcPalette) { - m_SrcFormat = src_format; - if (!m_Compositor.Init(m_pBitmap->GetFormat(), src_format, width, pSrcPalette, - m_MaskColor, FXDIB_BLEND_NORMAL, - m_pClipMask != NULL || (m_BitmapAlpha < 255), - m_bRgbByteOrder, m_AlphaFlag, m_pIccTransform)) { - return FALSE; - } - if (m_bVertical) { - m_pScanlineV = FX_Alloc(uint8_t, m_pBitmap->GetBPP() / 8 * width + 4); - m_pClipScanV = FX_Alloc(uint8_t, m_pBitmap->GetHeight()); - if (m_pBitmap->m_pAlphaMask) { - m_pScanlineAlphaV = FX_Alloc(uint8_t, width + 4); - } - } - if (m_BitmapAlpha < 255) { - m_pAddClipScan = FX_Alloc( - uint8_t, m_bVertical ? m_pBitmap->GetHeight() : m_pBitmap->GetWidth()); - } - return TRUE; -} -void CFX_BitmapComposer::DoCompose(uint8_t* dest_scan, - const uint8_t* src_scan, - int dest_width, - const uint8_t* clip_scan, - const uint8_t* src_extra_alpha, - uint8_t* dst_extra_alpha) { - if (m_BitmapAlpha < 255) { - if (clip_scan) { - for (int i = 0; i < dest_width; i++) { - m_pAddClipScan[i] = clip_scan[i] * m_BitmapAlpha / 255; - } - } else { - FXSYS_memset(m_pAddClipScan, m_BitmapAlpha, dest_width); - } - clip_scan = m_pAddClipScan; - } - if (m_SrcFormat == FXDIB_8bppMask) { - m_Compositor.CompositeByteMaskLine(dest_scan, src_scan, dest_width, - clip_scan, dst_extra_alpha); - } else if ((m_SrcFormat & 0xff) == 8) { - m_Compositor.CompositePalBitmapLine(dest_scan, src_scan, 0, dest_width, - clip_scan, src_extra_alpha, - dst_extra_alpha); - } else { - m_Compositor.CompositeRgbBitmapLine(dest_scan, src_scan, dest_width, - clip_scan, src_extra_alpha, - dst_extra_alpha); - } -} -void CFX_BitmapComposer::ComposeScanline(int line, - const uint8_t* scanline, - const uint8_t* scan_extra_alpha) { - if (m_bVertical) { - ComposeScanlineV(line, scanline, scan_extra_alpha); - return; - } - const uint8_t* clip_scan = NULL; - if (m_pClipMask) - clip_scan = m_pClipMask->GetBuffer() + - (m_DestTop + line - m_pClipRgn->GetBox().top) * - m_pClipMask->GetPitch() + - (m_DestLeft - m_pClipRgn->GetBox().left); - uint8_t* dest_scan = (uint8_t*)m_pBitmap->GetScanline(line + m_DestTop) + - m_DestLeft * m_pBitmap->GetBPP() / 8; - uint8_t* dest_alpha_scan = - m_pBitmap->m_pAlphaMask - ? (uint8_t*)m_pBitmap->m_pAlphaMask->GetScanline(line + m_DestTop) + - m_DestLeft - : NULL; - DoCompose(dest_scan, scanline, m_DestWidth, clip_scan, scan_extra_alpha, - dest_alpha_scan); -} -void CFX_BitmapComposer::ComposeScanlineV(int line, - const uint8_t* scanline, - const uint8_t* scan_extra_alpha) { - int i; - int Bpp = m_pBitmap->GetBPP() / 8; - int dest_pitch = m_pBitmap->GetPitch(); - int dest_alpha_pitch = - m_pBitmap->m_pAlphaMask ? m_pBitmap->m_pAlphaMask->GetPitch() : 0; - int dest_x = m_DestLeft + (m_bFlipX ? (m_DestWidth - line - 1) : line); - uint8_t* dest_buf = - m_pBitmap->GetBuffer() + dest_x * Bpp + m_DestTop * dest_pitch; - uint8_t* dest_alpha_buf = m_pBitmap->m_pAlphaMask - ? m_pBitmap->m_pAlphaMask->GetBuffer() + - dest_x + m_DestTop * dest_alpha_pitch - : NULL; - if (m_bFlipY) { - dest_buf += dest_pitch * (m_DestHeight - 1); - dest_alpha_buf += dest_alpha_pitch * (m_DestHeight - 1); - } - int y_step = dest_pitch; - int y_alpha_step = dest_alpha_pitch; - if (m_bFlipY) { - y_step = -y_step; - y_alpha_step = -y_alpha_step; - } - uint8_t* src_scan = m_pScanlineV; - uint8_t* dest_scan = dest_buf; - for (i = 0; i < m_DestHeight; i++) { - for (int j = 0; j < Bpp; j++) { - *src_scan++ = dest_scan[j]; - } - dest_scan += y_step; - } - uint8_t* src_alpha_scan = m_pScanlineAlphaV; - uint8_t* dest_alpha_scan = dest_alpha_buf; - if (dest_alpha_scan) { - for (i = 0; i < m_DestHeight; i++) { - *src_alpha_scan++ = *dest_alpha_scan; - dest_alpha_scan += y_alpha_step; - } - } - uint8_t* clip_scan = NULL; - if (m_pClipMask) { - clip_scan = m_pClipScanV; - int clip_pitch = m_pClipMask->GetPitch(); - const uint8_t* src_clip = - m_pClipMask->GetBuffer() + - (m_DestTop - m_pClipRgn->GetBox().top) * clip_pitch + - (dest_x - m_pClipRgn->GetBox().left); - if (m_bFlipY) { - src_clip += clip_pitch * (m_DestHeight - 1); - clip_pitch = -clip_pitch; - } - for (i = 0; i < m_DestHeight; i++) { - clip_scan[i] = *src_clip; - src_clip += clip_pitch; - } - } - DoCompose(m_pScanlineV, scanline, m_DestHeight, clip_scan, scan_extra_alpha, - m_pScanlineAlphaV); - src_scan = m_pScanlineV; - dest_scan = dest_buf; - for (i = 0; i < m_DestHeight; i++) { - for (int j = 0; j < Bpp; j++) { - dest_scan[j] = *src_scan++; - } - dest_scan += y_step; - } - src_alpha_scan = m_pScanlineAlphaV; - dest_alpha_scan = dest_alpha_buf; - if (dest_alpha_scan) { - for (i = 0; i < m_DestHeight; i++) { - *dest_alpha_scan = *src_alpha_scan++; - dest_alpha_scan += y_alpha_step; - } - } -} diff --git a/core/src/fxge/dib/fx_dib_convert.cpp b/core/src/fxge/dib/fx_dib_convert.cpp deleted file mode 100644 index a1c18ae121..0000000000 --- a/core/src/fxge/dib/fx_dib_convert.cpp +++ /dev/null @@ -1,1227 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_dib.h" -#include "core/include/fxge/fx_ge.h" - -const FX_DWORD g_dwWinPalette[256] = { - 0xff000000, 0xff800000, 0xff008000, 0xff808000, 0xff000080, 0xff800080, - 0xff008080, 0xff808080, 0xffC0DCC0, 0xffA6CAF0, 0xff2A3FAA, 0xff2A3FFF, - 0xff2A5F00, 0xff2A5F55, 0xff2A5FAA, 0xff2A5FFF, 0xff2A7F00, 0xff2A7F55, - 0xff2A7FAA, 0xff2A7FFF, 0xff2A9F00, 0xff2A9F55, 0xff2A9FAA, 0xff2A9FFF, - 0xff2ABF00, 0xff2ABF55, 0xff2ABFAA, 0xff2ABFFF, 0xff2ADF00, 0xff2ADF55, - 0xff2ADFAA, 0xff2ADFFF, 0xff2AFF00, 0xff2AFF55, 0xff2AFFAA, 0xff2AFFFF, - 0xff550000, 0xff550055, 0xff5500AA, 0xff5500FF, 0xff551F00, 0xff551F55, - 0xff551FAA, 0xff551FFF, 0xff553F00, 0xff553F55, 0xff553FAA, 0xff553FFF, - 0xff555F00, 0xff555F55, 0xff555FAA, 0xff555FFF, 0xff557F00, 0xff557F55, - 0xff557FAA, 0xff557FFF, 0xff559F00, 0xff559F55, 0xff559FAA, 0xff559FFF, - 0xff55BF00, 0xff55BF55, 0xff55BFAA, 0xff55BFFF, 0xff55DF00, 0xff55DF55, - 0xff55DFAA, 0xff55DFFF, 0xff55FF00, 0xff55FF55, 0xff55FFAA, 0xff55FFFF, - 0xff7F0000, 0xff7F0055, 0xff7F00AA, 0xff7F00FF, 0xff7F1F00, 0xff7F1F55, - 0xff7F1FAA, 0xff7F1FFF, 0xff7F3F00, 0xff7F3F55, 0xff7F3FAA, 0xff7F3FFF, - 0xff7F5F00, 0xff7F5F55, 0xff7F5FAA, 0xff7F5FFF, 0xff7F7F00, 0xff7F7F55, - 0xff7F7FAA, 0xff7F7FFF, 0xff7F9F00, 0xff7F9F55, 0xff7F9FAA, 0xff7F9FFF, - 0xff7FBF00, 0xff7FBF55, 0xff7FBFAA, 0xff7FBFFF, 0xff7FDF00, 0xff7FDF55, - 0xff7FDFAA, 0xff7FDFFF, 0xff00FF7F, 0xff7FFF55, 0xff7FFFAA, 0xff7FFFFF, - 0xffAA0000, 0xffAA0055, 0xffAA00AA, 0xffAA00FF, 0xffAA1F00, 0xffAA1F55, - 0xffAA1FAA, 0xffAA1FFF, 0xffAA3F00, 0xffAA3F55, 0xffAA3FAA, 0xffAA3FFF, - 0xffAA5F00, 0xffAA5F55, 0xffAA5FAA, 0xffAA5FFF, 0xffAA7F00, 0xffAA7F55, - 0xffAA7FAA, 0xffAA7FFF, 0xffAA9F00, 0xffAA9F55, 0xffAA9FAA, 0xffAA9FFF, - 0xffAABF00, 0xffAABF55, 0xffAABFAA, 0xffAABFFF, 0xffAADF00, 0xffAADF55, - 0xffAADFAA, 0xffAADFFF, 0xffAAFF00, 0xffAAFF55, 0xffAAFFAA, 0xffAAFFFF, - 0xffD40000, 0xffD40055, 0xffD400AA, 0xffD400FF, 0xffD41F00, 0xffD41F55, - 0xffD41FAA, 0xffD41FFF, 0xffD43F00, 0xffD43F55, 0xffD43FAA, 0xffD43FFF, - 0xffD45F00, 0xffD45F55, 0xffD45FAA, 0xffD45FFF, 0xffD47F00, 0xffD47F55, - 0xffD47FAA, 0xffD4F7FF, 0xffD49F00, 0xffD49F55, 0xffD49FAA, 0xffD49FFF, - 0xffD4BF00, 0xffD4BF55, 0xffD4BFAA, 0xffD4BFFF, 0xffD4DF00, 0xffD4DF55, - 0xffD4DFAA, 0xffD4DFFF, 0xffD4FF00, 0xffD4FF55, 0xffD4FFAA, 0xffD4FFFF, - 0xffFF0055, 0xffFF00AA, 0xffFF1F00, 0xffFF1F55, 0xffFF1FAA, 0xffFF1FFF, - 0xffFF3F00, 0xffFF3F55, 0xffFF3FAA, 0xffFF3FFF, 0xffFF5F00, 0xffFF5F55, - 0xffFF5FAA, 0xffFF5FFF, 0xffFF7F00, 0xffFF7F55, 0xffFF7FAA, 0xffFF7FFF, - 0xffFF9F00, 0xffFF9F55, 0xffFF9FAA, 0xffFF9FFF, 0xffFFBF00, 0xffFFBF55, - 0xffFFBFAA, 0xffFFBFFF, 0xffFFDF00, 0xffFFDF55, 0xffFFDFAA, 0xffFFDFFF, - 0xffFFFF55, 0xffFFFFAA, 0xffCCCCFF, 0xffFFCCFF, 0xff33FFFF, 0xff66FFFF, - 0xff99FFFF, 0xffCCFFFF, 0xff007F00, 0xff007F55, 0xff007FAA, 0xff007FFF, - 0xff009F00, 0xff009F55, 0xff009FAA, 0xff009FFF, 0xff00BF00, 0xff00BF55, - 0xff00BFAA, 0xff00BFFF, 0xff00DF00, 0xff00DF55, 0xff00DFAA, 0xff00DFFF, - 0xff00FF55, 0xff00FFAA, 0xff2A0000, 0xff2A0055, 0xff2A00AA, 0xff2A00FF, - 0xff2A1F00, 0xff2A1F55, 0xff2A1FAA, 0xff2A1FFF, 0xff2A3F00, 0xff2A3F55, - 0xffFFFBF0, 0xffA0A0A4, 0xff808080, 0xffFF0000, 0xff00FF00, 0xffFF0000, - 0xff0000FF, 0xffFF00FF, 0xff00FFFF, 0xffFFFFFF}; -const FX_DWORD g_dwMacPalette[256] = { - 0xffFFFFFF, 0xffFFFFCC, 0xffFFFF99, 0xffFFFF66, 0xffFFFF33, 0xffFFFF00, - 0xffFFCCFF, 0xffFFCCCC, 0xffFFCC99, 0xffFFCC66, 0xffFFCC33, 0xffFFCC00, - 0xffFF99FF, 0xffFF99CC, 0xffFF9999, 0xffFF9966, 0xffFF9933, 0xffFF9900, - 0xffFF66FF, 0xffFF66CC, 0xffFF6699, 0xffFF6666, 0xffFF6633, 0xffFF6600, - 0xffFF33FF, 0xffFF33CC, 0xffFF3399, 0xffFF3366, 0xffFF3333, 0xffFF3300, - 0xffFF00FF, 0xffFF00CC, 0xffFF0099, 0xffFF0066, 0xffFF0033, 0xffFF0000, - 0xffCCFFFF, 0xffCCFFCC, 0xffCCFF99, 0xffCCFF66, 0xffCCFF33, 0xffCCFF00, - 0xffCCCCFF, 0xffCCCCCC, 0xffCCCC99, 0xffCCCC66, 0xffCCCC33, 0xffCCCC00, - 0xffCC99FF, 0xffCC99CC, 0xffCC9999, 0xffCC9966, 0xffCC9933, 0xffCC9900, - 0xffCC66FF, 0xffCC66CC, 0xffCC6699, 0xffCC6666, 0xffCC6633, 0xffCC6600, - 0xffCC33FF, 0xffCC33CC, 0xffCC3399, 0xffCC3366, 0xffCC3333, 0xffCC3300, - 0xffCC00FF, 0xffCC00CC, 0xffCC0099, 0xffCC0066, 0xffCC0033, 0xffCC0000, - 0xff99FFFF, 0xff99FFCC, 0xff99FF99, 0xff99FF66, 0xff99FF33, 0xff99FF00, - 0xff99CCFF, 0xff99CCCC, 0xff99CC99, 0xff99CC66, 0xff99CC33, 0xff99CC00, - 0xff9999FF, 0xff9999CC, 0xff999999, 0xff999966, 0xff999933, 0xff999900, - 0xff9966FF, 0xff9966CC, 0xff996699, 0xff996666, 0xff996633, 0xff996600, - 0xff9933FF, 0xff9933CC, 0xff993399, 0xff993366, 0xff993333, 0xff993300, - 0xff9900FF, 0xff9900CC, 0xff990099, 0xff990066, 0xff990033, 0xff990000, - 0xff66FFFF, 0xff66FFCC, 0xff66FF99, 0xff66FF66, 0xff66FF33, 0xff66FF00, - 0xff66CCFF, 0xff66CCCC, 0xff66CC99, 0xff66CC66, 0xff66CC33, 0xff66CC00, - 0xff6699FF, 0xff6699CC, 0xff669999, 0xff669966, 0xff669933, 0xff669900, - 0xff6666FF, 0xff6666CC, 0xff666699, 0xff666666, 0xff666633, 0xff666600, - 0xff6633FF, 0xff6633CC, 0xff663399, 0xff663366, 0xff663333, 0xff663300, - 0xff6600FF, 0xff6600CC, 0xff660099, 0xff660066, 0xff660033, 0xff660000, - 0xff33FFFF, 0xff33FFCC, 0xff33FF99, 0xff33FF66, 0xff33FF33, 0xff33FF00, - 0xff33CCFF, 0xff33CCCC, 0xff33CC99, 0xff33CC66, 0xff33CC33, 0xff33CC00, - 0xff3399FF, 0xff3399CC, 0xff339999, 0xff339966, 0xff339933, 0xff339900, - 0xff3366FF, 0xff3366CC, 0xff336699, 0xff336666, 0xff336633, 0xff336600, - 0xff3333FF, 0xff3333CC, 0xff333399, 0xff333366, 0xff333333, 0xff333300, - 0xff3300FF, 0xff3300CC, 0xff330099, 0xff330066, 0xff330033, 0xff330000, - 0xff00FFFF, 0xff00FFCC, 0xff00FF99, 0xff00FF66, 0xff00FF33, 0xff00FF00, - 0xff00CCFF, 0xff00CCCC, 0xff00CC99, 0xff00CC66, 0xff00CC33, 0xff00CC00, - 0xff0099FF, 0xff0099CC, 0xff009999, 0xff009966, 0xff009933, 0xff009900, - 0xff0066FF, 0xff0066CC, 0xff006699, 0xff006666, 0xff006633, 0xff006600, - 0xff0033FF, 0xff0033CC, 0xff003399, 0xff003366, 0xff003333, 0xff003300, - 0xff0000FF, 0xff0000CC, 0xff000099, 0xff000066, 0xff000033, 0xffEE0000, - 0xffDD0000, 0xffBB0000, 0xffAA0000, 0xff880000, 0xff770000, 0xff550000, - 0xff440000, 0xff220000, 0xff110000, 0xff00EE00, 0xff00DD00, 0xff00BB00, - 0xff00AA00, 0xff008800, 0xff007700, 0xff005500, 0xff004400, 0xff002200, - 0xff001100, 0xff0000EE, 0xff0000DD, 0xff0000BB, 0xff0000AA, 0xff000088, - 0xff000077, 0xff000055, 0xff000044, 0xff000022, 0xff000011, 0xffEEEEEE, - 0xffDDDDDD, 0xffBBBBBB, 0xffAAAAAA, 0xff888888, 0xff777777, 0xff555555, - 0xff444444, 0xff222222, 0xff111111, 0xff000000}; -class CFX_Palette { - public: - CFX_Palette(); - ~CFX_Palette(); - - public: - FX_BOOL BuildPalette(const CFX_DIBSource* pBitmap, int dwPaletteType); - FX_DWORD* GetPalette() const { return m_pPalette; } - - FX_DWORD* GetColorLut() const { return m_cLut; } - FX_DWORD* GetAmountLut() const { return m_aLut; } - int32_t Getlut() const { return m_lut; } - - protected: - FX_DWORD* m_pPalette; - FX_DWORD* m_cLut; - FX_DWORD* m_aLut; - int m_lut; -}; -int _Partition(FX_DWORD* alut, FX_DWORD* clut, int l, int r) { - FX_DWORD p_a = alut[l]; - FX_DWORD p_c = clut[l]; - while (l < r) { - while (l < r && alut[r] >= p_a) { - r--; - } - if (l < r) { - alut[l] = alut[r]; - clut[l++] = clut[r]; - } - while (l < r && alut[l] <= p_a) { - l++; - } - if (l < r) { - alut[r] = alut[l]; - clut[r--] = clut[l]; - } - } - alut[l] = p_a; - clut[l] = p_c; - return l; -} -void _Qsort(FX_DWORD* alut, FX_DWORD* clut, int l, int r) { - if (l < r) { - int pI = _Partition(alut, clut, l, r); - _Qsort(alut, clut, l, pI - 1); - _Qsort(alut, clut, pI + 1, r); - } -} -void _ColorDecode(FX_DWORD pal_v, uint8_t& r, uint8_t& g, uint8_t& b) { - r = (uint8_t)((pal_v & 0xf00) >> 4); - g = (uint8_t)(pal_v & 0x0f0); - b = (uint8_t)((pal_v & 0x00f) << 4); -} -void _Obtain_Pal(FX_DWORD* aLut, - FX_DWORD* cLut, - FX_DWORD* dest_pal, - int pal_type, - FX_DWORD* win_mac_pal, - FX_DWORD lut) { - int row, col; - FX_DWORD lut_1 = lut - 1; - if (pal_type == FXDIB_PALETTE_LOC) { - for (row = 0; row < 256; row++) { - int lut_offset = lut_1 - row; - if (lut_offset < 0) { - lut_offset += 256; - } - FX_DWORD color = cLut[lut_offset]; - uint8_t r, g, b; - _ColorDecode(color, r, g, b); - dest_pal[row] = ((FX_DWORD)r << 16) | ((FX_DWORD)g << 8) | b | 0xff000000; - aLut[lut_offset] = row; - } - } else { - for (row = 0; row < 256; row++) { - int lut_offset = lut_1 - row; - if (lut_offset < 0) { - lut_offset += 256; - } - uint8_t r, g, b; - _ColorDecode(cLut[lut_offset], r, g, b); - int error, min_error = 1000000; - int c_index = 0; - for (col = 0; col < 256; col++) { - FX_DWORD p_color = win_mac_pal[col]; - int d_r = r - (uint8_t)(p_color >> 16); - int d_g = g - (uint8_t)(p_color >> 8); - int d_b = b - (uint8_t)p_color; - error = d_r * d_r + d_g * d_g + d_b * d_b; - if (error < min_error) { - min_error = error; - c_index = col; - } - } - dest_pal[row] = win_mac_pal[c_index]; - aLut[lut_offset] = row; - } - } -} -CFX_Palette::CFX_Palette() { - m_pPalette = NULL; - m_cLut = NULL; - m_aLut = NULL; - m_lut = 0; -} -CFX_Palette::~CFX_Palette() { - FX_Free(m_pPalette); - FX_Free(m_cLut); - FX_Free(m_aLut); - m_lut = 0; -} -FX_BOOL CFX_Palette::BuildPalette(const CFX_DIBSource* pBitmap, int pal_type) { - if (!pBitmap) { - return FALSE; - } - FX_Free(m_pPalette); - m_pPalette = FX_Alloc(FX_DWORD, 256); - int bpp = pBitmap->GetBPP() / 8; - int width = pBitmap->GetWidth(); - int height = pBitmap->GetHeight(); - FX_Free(m_cLut); - m_cLut = NULL; - FX_Free(m_aLut); - m_aLut = NULL; - m_cLut = FX_Alloc(FX_DWORD, 4096); - m_aLut = FX_Alloc(FX_DWORD, 4096); - int row, col; - m_lut = 0; - for (row = 0; row < height; row++) { - uint8_t* scan_line = (uint8_t*)pBitmap->GetScanline(row); - for (col = 0; col < width; col++) { - uint8_t* src_port = scan_line + col * bpp; - FX_DWORD b = src_port[0] & 0xf0; - FX_DWORD g = src_port[1] & 0xf0; - FX_DWORD r = src_port[2] & 0xf0; - FX_DWORD index = (r << 4) + g + (b >> 4); - m_aLut[index]++; - } - } - for (row = 0; row < 4096; row++) { - if (m_aLut[row] != 0) { - m_aLut[m_lut] = m_aLut[row]; - m_cLut[m_lut] = row; - m_lut++; - } - } - _Qsort(m_aLut, m_cLut, 0, m_lut - 1); - FX_DWORD* win_mac_pal = NULL; - if (pal_type == FXDIB_PALETTE_WIN) { - win_mac_pal = (FX_DWORD*)g_dwWinPalette; - } else if (pal_type == FXDIB_PALETTE_MAC) { - win_mac_pal = (FX_DWORD*)g_dwMacPalette; - } - _Obtain_Pal(m_aLut, m_cLut, m_pPalette, pal_type, win_mac_pal, m_lut); - return TRUE; -} -FX_BOOL ConvertBuffer_1bppMask2Gray(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top) { - uint8_t set_gray, reset_gray; - set_gray = 0xff; - reset_gray = 0x00; - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - FXSYS_memset(dest_scan, reset_gray, width); - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); - for (int col = src_left; col < src_left + width; col++) { - if (src_scan[col / 8] & (1 << (7 - col % 8))) { - *dest_scan = set_gray; - } - dest_scan++; - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_8bppMask2Gray(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; - FXSYS_memcpy(dest_scan, src_scan, width); - } - return TRUE; -} -FX_BOOL ConvertBuffer_1bppPlt2Gray(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - FX_DWORD* src_plt = pSrcBitmap->GetPalette(); - uint8_t gray[2]; - if (pIccTransform) { - FX_DWORD plt[2]; - if (pSrcBitmap->IsCmykImage()) { - plt[0] = FXCMYK_TODIB(src_plt[0]); - plt[1] = FXCMYK_TODIB(src_plt[1]); - } else { - uint8_t* bgr_ptr = (uint8_t*)plt; - bgr_ptr[0] = FXARGB_B(src_plt[0]); - bgr_ptr[1] = FXARGB_G(src_plt[0]); - bgr_ptr[2] = FXARGB_R(src_plt[0]); - bgr_ptr[3] = FXARGB_B(src_plt[1]); - bgr_ptr[4] = FXARGB_G(src_plt[1]); - bgr_ptr[5] = FXARGB_R(src_plt[1]); - } - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, gray, (const uint8_t*)plt, 2); - } else { - uint8_t reset_r, reset_g, reset_b, set_r, set_g, set_b; - if (pSrcBitmap->IsCmykImage()) { - AdobeCMYK_to_sRGB1( - FXSYS_GetCValue(src_plt[0]), FXSYS_GetMValue(src_plt[0]), - FXSYS_GetYValue(src_plt[0]), FXSYS_GetKValue(src_plt[0]), reset_r, - reset_g, reset_b); - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(src_plt[1]), - FXSYS_GetMValue(src_plt[1]), - FXSYS_GetYValue(src_plt[1]), - FXSYS_GetKValue(src_plt[1]), set_r, set_g, set_b); - } else { - reset_r = FXARGB_R(src_plt[0]); - reset_g = FXARGB_G(src_plt[0]); - reset_b = FXARGB_B(src_plt[0]); - set_r = FXARGB_R(src_plt[1]); - set_g = FXARGB_G(src_plt[1]); - set_b = FXARGB_B(src_plt[1]); - } - gray[0] = FXRGB2GRAY(reset_r, reset_g, reset_b); - gray[1] = FXRGB2GRAY(set_r, set_g, set_b); - } - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - FXSYS_memset(dest_scan, gray[0], width); - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); - for (int col = src_left; col < src_left + width; col++) { - if (src_scan[col / 8] & (1 << (7 - col % 8))) { - *dest_scan = gray[1]; - } - dest_scan++; - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_8bppPlt2Gray(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - FX_DWORD* src_plt = pSrcBitmap->GetPalette(); - uint8_t gray[256]; - if (pIccTransform) { - FX_DWORD plt[256]; - if (pSrcBitmap->IsCmykImage()) { - for (int i = 0; i < 256; i++) { - plt[i] = FXCMYK_TODIB(src_plt[i]); - } - } else { - uint8_t* bgr_ptr = (uint8_t*)plt; - for (int i = 0; i < 256; i++) { - *bgr_ptr++ = FXARGB_B(src_plt[i]); - *bgr_ptr++ = FXARGB_G(src_plt[i]); - *bgr_ptr++ = FXARGB_R(src_plt[i]); - } - } - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, gray, (const uint8_t*)plt, - 256); - } else { - if (pSrcBitmap->IsCmykImage()) { - uint8_t r, g, b; - for (int i = 0; i < 256; i++) { - AdobeCMYK_to_sRGB1( - FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), - FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), r, g, b); - gray[i] = FXRGB2GRAY(r, g, b); - } - } else { - for (int i = 0; i < 256; i++) { - gray[i] = FXRGB2GRAY(FXARGB_R(src_plt[i]), FXARGB_G(src_plt[i]), - FXARGB_B(src_plt[i])); - } - } - } - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; - for (int col = 0; col < width; col++) { - *dest_scan++ = gray[*src_scan++]; - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_RgbOrCmyk2Gray(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - int Bpp = pSrcBitmap->GetBPP() / 8; - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - if (Bpp == 3 || pSrcBitmap->IsCmykImage()) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, - width); - } - } else { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * 4; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); - dest_scan++; - src_scan += 4; - } - } - } - } else { - if (pSrcBitmap->IsCmykImage()) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * 4; - for (int col = 0; col < width; col++) { - uint8_t r, g, b; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue((FX_DWORD)src_scan[0]), - FXSYS_GetMValue((FX_DWORD)src_scan[1]), - FXSYS_GetYValue((FX_DWORD)src_scan[2]), - FXSYS_GetKValue((FX_DWORD)src_scan[3]), r, g, b); - *dest_scan++ = FXRGB2GRAY(r, g, b); - src_scan += 4; - } - } - } else { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; - for (int col = 0; col < width; col++) { - *dest_scan++ = FXRGB2GRAY(src_scan[2], src_scan[1], src_scan[0]); - src_scan += Bpp; - } - } - } - } - return TRUE; -} -inline void ConvertBuffer_IndexCopy(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top) { - if (pSrcBitmap->GetBPP() == 1) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - FXSYS_memset(dest_scan, 0, width); - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); - for (int col = src_left; col < src_left + width; col++) { - if (src_scan[col / 8] & (1 << (7 - col % 8))) { - *dest_scan = 1; - } - dest_scan++; - } - } - } else { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left; - FXSYS_memcpy(dest_scan, src_scan, width); - } - } -} -FX_BOOL ConvertBuffer_Plt2PltRgb8(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - FX_DWORD* dst_plt, - void* pIccTransform) { - ConvertBuffer_IndexCopy(dest_buf, dest_pitch, width, height, pSrcBitmap, - src_left, src_top); - FX_DWORD* src_plt = pSrcBitmap->GetPalette(); - int plt_size = pSrcBitmap->GetPaletteSize(); - if (pIccTransform) { - FX_DWORD plt[256]; - uint8_t* bgr_ptr = (uint8_t*)plt; - if (pSrcBitmap->IsCmykImage()) { - for (int i = 0; i < plt_size; i++) { - plt[i] = FXCMYK_TODIB(src_plt[i]); - } - } else { - for (int i = 0; i < plt_size; i++) { - *bgr_ptr++ = FXARGB_B(src_plt[i]); - *bgr_ptr++ = FXARGB_G(src_plt[i]); - *bgr_ptr++ = FXARGB_R(src_plt[i]); - } - bgr_ptr = (uint8_t*)plt; - } - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)plt, - (const uint8_t*)plt, plt_size); - for (int i = 0; i < plt_size; i++) { - dst_plt[i] = FXARGB_MAKE(0xff, bgr_ptr[2], bgr_ptr[1], bgr_ptr[0]); - bgr_ptr += 3; - } - } else { - if (pSrcBitmap->IsCmykImage()) { - for (int i = 0; i < plt_size; i++) { - uint8_t r, g, b; - AdobeCMYK_to_sRGB1( - FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), - FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), r, g, b); - dst_plt[i] = FXARGB_MAKE(0xff, r, g, b); - } - } else { - FXSYS_memcpy(dst_plt, src_plt, plt_size * 4); - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_Rgb2PltRgb8_NoTransform(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - FX_DWORD* dst_plt) { - int bpp = pSrcBitmap->GetBPP() / 8; - int row, col; - CFX_Palette palette; - palette.BuildPalette(pSrcBitmap, FXDIB_PALETTE_LOC); - FX_DWORD* cLut = palette.GetColorLut(); - FX_DWORD* aLut = palette.GetAmountLut(); - if (!cLut || !aLut) { - return FALSE; - } - int lut = palette.Getlut(); - FX_DWORD* pPalette = palette.GetPalette(); - if (lut > 256) { - int err, min_err; - int lut_256 = lut - 256; - for (row = 0; row < lut_256; row++) { - min_err = 1000000; - uint8_t r, g, b; - _ColorDecode(cLut[row], r, g, b); - int clrindex = 0; - for (int col = 0; col < 256; col++) { - FX_DWORD p_color = *(pPalette + col); - int d_r = r - (uint8_t)(p_color >> 16); - int d_g = g - (uint8_t)(p_color >> 8); - int d_b = b - (uint8_t)(p_color); - err = d_r * d_r + d_g * d_g + d_b * d_b; - if (err < min_err) { - min_err = err; - clrindex = col; - } - } - aLut[row] = clrindex; - } - } - int32_t lut_1 = lut - 1; - for (row = 0; row < height; row++) { - uint8_t* src_scan = - (uint8_t*)pSrcBitmap->GetScanline(src_top + row) + src_left; - uint8_t* dest_scan = dest_buf + row * dest_pitch; - for (col = 0; col < width; col++) { - uint8_t* src_port = src_scan + col * bpp; - int r = src_port[2] & 0xf0; - int g = src_port[1] & 0xf0; - int b = src_port[0] & 0xf0; - FX_DWORD clrindex = (r << 4) + g + (b >> 4); - for (int i = lut_1; i >= 0; i--) - if (clrindex == cLut[i]) { - *(dest_scan + col) = (uint8_t)(aLut[i]); - break; - } - } - } - FXSYS_memcpy(dst_plt, pPalette, sizeof(FX_DWORD) * 256); - return TRUE; -} -FX_BOOL ConvertBuffer_Rgb2PltRgb8(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - FX_DWORD* dst_plt, - void* pIccTransform) { - FX_BOOL ret = ConvertBuffer_Rgb2PltRgb8_NoTransform( - dest_buf, dest_pitch, width, height, pSrcBitmap, src_left, src_top, - dst_plt); - if (ret && pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - for (int i = 0; i < 256; i++) { - FX_ARGB* plt = dst_plt + i; - FX_ARGB plt_entry = FXARGB_TODIB(*plt); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)&plt_entry, - (const uint8_t*)&plt_entry, 1); - *plt = FXARGB_TODIB(plt_entry); - } - } - return ret; -} -FX_BOOL ConvertBuffer_1bppMask2Rgb(FXDIB_Format dst_format, - uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top) { - int comps = (dst_format & 0xff) / 8; - uint8_t set_gray, reset_gray; - set_gray = 0xff; - reset_gray = 0x00; - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); - for (int col = src_left; col < src_left + width; col++) { - if (src_scan[col / 8] & (1 << (7 - col % 8))) { - dest_scan[0] = set_gray; - dest_scan[1] = set_gray; - dest_scan[2] = set_gray; - } else { - dest_scan[0] = reset_gray; - dest_scan[1] = reset_gray; - dest_scan[2] = reset_gray; - } - dest_scan += comps; - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_8bppMask2Rgb(FXDIB_Format dst_format, - uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top) { - int comps = (dst_format & 0xff) / 8; - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; - uint8_t src_pixel; - for (int col = 0; col < width; col++) { - src_pixel = *src_scan++; - *dest_scan++ = src_pixel; - *dest_scan++ = src_pixel; - *dest_scan = src_pixel; - dest_scan += comps - 2; - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_1bppPlt2Rgb(FXDIB_Format dst_format, - uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - int comps = (dst_format & 0xff) / 8; - FX_DWORD* src_plt = pSrcBitmap->GetPalette(); - FX_DWORD plt[2]; - uint8_t* bgr_ptr = (uint8_t*)plt; - if (pSrcBitmap->IsCmykImage()) { - plt[0] = FXCMYK_TODIB(src_plt[0]); - plt[1] = FXCMYK_TODIB(src_plt[1]); - } else { - bgr_ptr[0] = FXARGB_B(src_plt[0]); - bgr_ptr[1] = FXARGB_G(src_plt[0]); - bgr_ptr[2] = FXARGB_R(src_plt[0]); - bgr_ptr[3] = FXARGB_B(src_plt[1]); - bgr_ptr[4] = FXARGB_G(src_plt[1]); - bgr_ptr[5] = FXARGB_R(src_plt[1]); - } - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)plt, - (const uint8_t*)plt, 2); - } else { - if (pSrcBitmap->IsCmykImage()) { - AdobeCMYK_to_sRGB1( - FXSYS_GetCValue(src_plt[0]), FXSYS_GetMValue(src_plt[0]), - FXSYS_GetYValue(src_plt[0]), FXSYS_GetKValue(src_plt[0]), bgr_ptr[2], - bgr_ptr[1], bgr_ptr[0]); - AdobeCMYK_to_sRGB1( - FXSYS_GetCValue(src_plt[1]), FXSYS_GetMValue(src_plt[1]), - FXSYS_GetYValue(src_plt[1]), FXSYS_GetKValue(src_plt[1]), bgr_ptr[5], - bgr_ptr[4], bgr_ptr[3]); - } - } - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); - for (int col = src_left; col < src_left + width; col++) { - if (src_scan[col / 8] & (1 << (7 - col % 8))) { - *dest_scan++ = bgr_ptr[3]; - *dest_scan++ = bgr_ptr[4]; - *dest_scan = bgr_ptr[5]; - } else { - *dest_scan++ = bgr_ptr[0]; - *dest_scan++ = bgr_ptr[1]; - *dest_scan = bgr_ptr[2]; - } - dest_scan += comps - 2; - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_8bppPlt2Rgb(FXDIB_Format dst_format, - uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - int comps = (dst_format & 0xff) / 8; - FX_DWORD* src_plt = pSrcBitmap->GetPalette(); - FX_DWORD plt[256]; - uint8_t* bgr_ptr = (uint8_t*)plt; - if (!pSrcBitmap->IsCmykImage()) { - for (int i = 0; i < 256; i++) { - *bgr_ptr++ = FXARGB_B(src_plt[i]); - *bgr_ptr++ = FXARGB_G(src_plt[i]); - *bgr_ptr++ = FXARGB_R(src_plt[i]); - } - bgr_ptr = (uint8_t*)plt; - } - if (pIccTransform) { - if (pSrcBitmap->IsCmykImage()) { - for (int i = 0; i < 256; i++) { - plt[i] = FXCMYK_TODIB(src_plt[i]); - } - } - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, (uint8_t*)plt, - (const uint8_t*)plt, 256); - } else { - if (pSrcBitmap->IsCmykImage()) { - for (int i = 0; i < 256; i++) { - AdobeCMYK_to_sRGB1( - FXSYS_GetCValue(src_plt[i]), FXSYS_GetMValue(src_plt[i]), - FXSYS_GetYValue(src_plt[i]), FXSYS_GetKValue(src_plt[i]), - bgr_ptr[2], bgr_ptr[1], bgr_ptr[0]); - bgr_ptr += 3; - } - bgr_ptr = (uint8_t*)plt; - } - } - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row) + src_left; - for (int col = 0; col < width; col++) { - uint8_t* src_pixel = bgr_ptr + 3 * (*src_scan++); - *dest_scan++ = *src_pixel++; - *dest_scan++ = *src_pixel++; - *dest_scan = *src_pixel++; - dest_scan += comps - 2; - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_24bppRgb2Rgb24(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * 3; - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, width); - } - } else { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * 3; - FXSYS_memcpy(dest_scan, src_scan, width * 3); - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_32bppRgb2Rgb24(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * 4; - for (int col = 0; col < width; col++) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - src_scan++; - } - } - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - pIccModule->TranslateScanline(pIccTransform, dest_scan, dest_scan, width); - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_Rgb2Rgb32(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - int comps = pSrcBitmap->GetBPP() / 8; - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * comps; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); - dest_scan += 4; - src_scan += comps; - } - } - } else { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * comps; - for (int col = 0; col < width; col++) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - dest_scan++; - src_scan += comps - 3; - } - } - } - return TRUE; -} -FX_BOOL ConvertBuffer_32bppCmyk2Rgb32(uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * 4; - for (int col = 0; col < width; col++) { - pIccModule->TranslateScanline(pIccTransform, dest_scan, src_scan, 1); - dest_scan += 4; - src_scan += 4; - } - } - } else { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = dest_buf + row * dest_pitch; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * 4; - for (int col = 0; col < width; col++) { - AdobeCMYK_to_sRGB1(src_scan[0], src_scan[1], src_scan[2], src_scan[3], - dest_scan[2], dest_scan[1], dest_scan[0]); - dest_scan += 4; - src_scan += 4; - } - } - } - return TRUE; -} -FX_BOOL ConvertBuffer(FXDIB_Format dest_format, - uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - FX_DWORD*& d_pal, - void* pIccTransform) { - FXDIB_Format src_format = pSrcBitmap->GetFormat(); - if (!CFX_GEModule::Get()->GetCodecModule() || - !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - pIccTransform = NULL; - } - switch (dest_format) { - case FXDIB_Invalid: - case FXDIB_1bppCmyk: - case FXDIB_1bppMask: - case FXDIB_1bppRgb: - ASSERT(FALSE); - return FALSE; - case FXDIB_8bppMask: { - if ((src_format & 0xff) == 1) { - if (pSrcBitmap->GetPalette()) { - return ConvertBuffer_1bppPlt2Gray(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, - pIccTransform); - } - return ConvertBuffer_1bppMask2Gray(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top); - } - if ((src_format & 0xff) == 8) { - if (pSrcBitmap->GetPalette()) { - return ConvertBuffer_8bppPlt2Gray(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, - pIccTransform); - } - return ConvertBuffer_8bppMask2Gray(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top); - } - if ((src_format & 0xff) >= 24) { - return ConvertBuffer_RgbOrCmyk2Gray(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, - pIccTransform); - } - return FALSE; - } - case FXDIB_8bppRgb: - case FXDIB_8bppRgba: { - if ((src_format & 0xff) == 8 && !pSrcBitmap->GetPalette()) { - return ConvertBuffer(FXDIB_8bppMask, dest_buf, dest_pitch, width, - height, pSrcBitmap, src_left, src_top, d_pal, - pIccTransform); - } - d_pal = FX_Alloc(FX_DWORD, 256); - if (((src_format & 0xff) == 1 || (src_format & 0xff) == 8) && - pSrcBitmap->GetPalette()) { - return ConvertBuffer_Plt2PltRgb8(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, d_pal, - pIccTransform); - } - if ((src_format & 0xff) >= 24) { - return ConvertBuffer_Rgb2PltRgb8(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, d_pal, - pIccTransform); - } - return FALSE; - } - case FXDIB_Rgb: - case FXDIB_Rgba: { - if ((src_format & 0xff) == 1) { - if (pSrcBitmap->GetPalette()) { - return ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top, pIccTransform); - } - return ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top); - } - if ((src_format & 0xff) == 8) { - if (pSrcBitmap->GetPalette()) { - return ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top, pIccTransform); - } - return ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top); - } - if ((src_format & 0xff) == 24) { - return ConvertBuffer_24bppRgb2Rgb24(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, - pIccTransform); - } - if ((src_format & 0xff) == 32) { - return ConvertBuffer_32bppRgb2Rgb24(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, - pIccTransform); - } - return FALSE; - } - case FXDIB_Argb: - case FXDIB_Rgb32: { - if ((src_format & 0xff) == 1) { - if (pSrcBitmap->GetPalette()) { - return ConvertBuffer_1bppPlt2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top, pIccTransform); - } - return ConvertBuffer_1bppMask2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top); - } - if ((src_format & 0xff) == 8) { - if (pSrcBitmap->GetPalette()) { - return ConvertBuffer_8bppPlt2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top, pIccTransform); - } - return ConvertBuffer_8bppMask2Rgb(dest_format, dest_buf, dest_pitch, - width, height, pSrcBitmap, src_left, - src_top); - } - if ((src_format & 0xff) >= 24) { - if (src_format & 0x0400) { - return ConvertBuffer_32bppCmyk2Rgb32(dest_buf, dest_pitch, width, - height, pSrcBitmap, src_left, - src_top, pIccTransform); - } - return ConvertBuffer_Rgb2Rgb32(dest_buf, dest_pitch, width, height, - pSrcBitmap, src_left, src_top, - pIccTransform); - } - return FALSE; - } - default: - return FALSE; - } - return FALSE; -} -CFX_DIBitmap* CFX_DIBSource::CloneConvert(FXDIB_Format dest_format, - const FX_RECT* pClip, - void* pIccTransform) const { - if (dest_format == GetFormat() && !pIccTransform) { - return Clone(pClip); - } - if (pClip) { - CFX_DIBitmap* pClone = Clone(pClip); - if (!pClone) { - return NULL; - } - if (!pClone->ConvertFormat(dest_format, pIccTransform)) { - delete pClone; - return NULL; - } - return pClone; - } - CFX_DIBitmap* pClone = new CFX_DIBitmap; - if (!pClone->Create(m_Width, m_Height, dest_format)) { - delete pClone; - return NULL; - } - FX_BOOL ret = TRUE; - CFX_DIBitmap* pSrcAlpha = NULL; - if (HasAlpha()) { - pSrcAlpha = (GetFormat() == FXDIB_Argb) ? GetAlphaMask() : m_pAlphaMask; - if (!pSrcAlpha) { - delete pClone; - return NULL; - } - } - if (dest_format & 0x0200) { - if (dest_format == FXDIB_Argb) { - ret = pSrcAlpha ? pClone->LoadChannel(FXDIB_Alpha, pSrcAlpha, FXDIB_Alpha) - : pClone->LoadChannel(FXDIB_Alpha, 0xff); - } else { - ret = pClone->CopyAlphaMask(pSrcAlpha); - } - } - if (pSrcAlpha && pSrcAlpha != m_pAlphaMask) { - delete pSrcAlpha; - pSrcAlpha = NULL; - } - if (!ret) { - delete pClone; - return NULL; - } - FX_DWORD* pal_8bpp = NULL; - ret = ConvertBuffer(dest_format, pClone->GetBuffer(), pClone->GetPitch(), - m_Width, m_Height, this, 0, 0, pal_8bpp, pIccTransform); - if (!ret) { - FX_Free(pal_8bpp); - delete pClone; - return NULL; - } - if (pal_8bpp) { - pClone->CopyPalette(pal_8bpp); - FX_Free(pal_8bpp); - pal_8bpp = NULL; - } - return pClone; -} -FX_BOOL CFX_DIBitmap::ConvertFormat(FXDIB_Format dest_format, - void* pIccTransform) { - FXDIB_Format src_format = GetFormat(); - if (dest_format == src_format && !pIccTransform) { - return TRUE; - } - if (dest_format == FXDIB_8bppMask && src_format == FXDIB_8bppRgb && - !m_pPalette) { - m_AlphaFlag = 1; - return TRUE; - } - if (dest_format == FXDIB_Argb && src_format == FXDIB_Rgb32 && - !pIccTransform) { - m_AlphaFlag = 2; - for (int row = 0; row < m_Height; row++) { - uint8_t* scanline = m_pBuffer + row * m_Pitch + 3; - for (int col = 0; col < m_Width; col++) { - *scanline = 0xff; - scanline += 4; - } - } - return TRUE; - } - int dest_bpp = dest_format & 0xff; - int dest_pitch = (dest_bpp * m_Width + 31) / 32 * 4; - uint8_t* dest_buf = FX_TryAlloc(uint8_t, dest_pitch * m_Height + 4); - if (!dest_buf) { - return FALSE; - } - CFX_DIBitmap* pAlphaMask = NULL; - if (dest_format == FXDIB_Argb) { - FXSYS_memset(dest_buf, 0xff, dest_pitch * m_Height + 4); - if (m_pAlphaMask) { - for (int row = 0; row < m_Height; row++) { - uint8_t* pDstScanline = dest_buf + row * dest_pitch + 3; - const uint8_t* pSrcScanline = m_pAlphaMask->GetScanline(row); - for (int col = 0; col < m_Width; col++) { - *pDstScanline = *pSrcScanline++; - pDstScanline += 4; - } - } - } - } else if (dest_format & 0x0200) { - if (src_format == FXDIB_Argb) { - pAlphaMask = GetAlphaMask(); - if (!pAlphaMask) { - FX_Free(dest_buf); - return FALSE; - } - } else { - if (!m_pAlphaMask) { - if (!BuildAlphaMask()) { - FX_Free(dest_buf); - return FALSE; - } - pAlphaMask = m_pAlphaMask; - m_pAlphaMask = NULL; - } else { - pAlphaMask = m_pAlphaMask; - } - } - } - FX_BOOL ret = FALSE; - FX_DWORD* pal_8bpp = NULL; - ret = ConvertBuffer(dest_format, dest_buf, dest_pitch, m_Width, m_Height, - this, 0, 0, pal_8bpp, pIccTransform); - if (!ret) { - FX_Free(pal_8bpp); - if (pAlphaMask != m_pAlphaMask) { - delete pAlphaMask; - } - FX_Free(dest_buf); - return FALSE; - } - if (m_pAlphaMask && pAlphaMask != m_pAlphaMask) { - delete m_pAlphaMask; - } - m_pAlphaMask = pAlphaMask; - FX_Free(m_pPalette); - m_pPalette = pal_8bpp; - if (!m_bExtBuf) { - FX_Free(m_pBuffer); - } - m_bExtBuf = FALSE; - m_pBuffer = dest_buf; - m_bpp = (uint8_t)dest_format; - m_AlphaFlag = (uint8_t)(dest_format >> 8); - m_Pitch = dest_pitch; - return TRUE; -} diff --git a/core/src/fxge/dib/fx_dib_engine.cpp b/core/src/fxge/dib/fx_dib_engine.cpp deleted file mode 100644 index 322040539e..0000000000 --- a/core/src/fxge/dib/fx_dib_engine.cpp +++ /dev/null @@ -1,917 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include - -#include "core/include/fxge/fx_dib.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/dib/dib_int.h" - -void CWeightTable::Calc(int dest_len, - int dest_min, - int dest_max, - int src_len, - int src_min, - int src_max, - int flags) { - FX_Free(m_pWeightTables); - m_pWeightTables = NULL; - double scale, base; - scale = (FX_FLOAT)src_len / (FX_FLOAT)dest_len; - if (dest_len < 0) { - base = (FX_FLOAT)(src_len); - } else { - base = 0; - } - int ext_size = flags & FXDIB_BICUBIC_INTERPOL ? 3 : 1; - m_ItemSize = - sizeof(int) * 2 + - (int)(sizeof(int) * (FXSYS_ceil(FXSYS_fabs((FX_FLOAT)scale)) + ext_size)); - m_DestMin = dest_min; - if ((dest_max - dest_min) > (int)((1U << 30) - 4) / m_ItemSize) { - return; - } - m_pWeightTables = - FX_TryAlloc(uint8_t, (dest_max - dest_min) * m_ItemSize + 4); - if (!m_pWeightTables) { - return; - } - if ((flags & FXDIB_NOSMOOTH) != 0 || FXSYS_fabs((FX_FLOAT)scale) < 1.0f) { - for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { - PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); - double src_pos = dest_pixel * scale + scale / 2 + base; - if (flags & FXDIB_INTERPOL) { - pixel_weights.m_SrcStart = - (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); - pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); - if (pixel_weights.m_SrcStart < src_min) { - pixel_weights.m_SrcStart = src_min; - } - if (pixel_weights.m_SrcEnd >= src_max) { - pixel_weights.m_SrcEnd = src_max - 1; - } - if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { - pixel_weights.m_Weights[0] = 65536; - } else { - pixel_weights.m_Weights[1] = FXSYS_round( - (FX_FLOAT)(src_pos - pixel_weights.m_SrcStart - 1.0f / 2) * - 65536); - pixel_weights.m_Weights[0] = 65536 - pixel_weights.m_Weights[1]; - } - } else if (flags & FXDIB_BICUBIC_INTERPOL) { - pixel_weights.m_SrcStart = - (int)FXSYS_floor((FX_FLOAT)src_pos - 1.0f / 2); - pixel_weights.m_SrcEnd = (int)FXSYS_floor((FX_FLOAT)src_pos + 1.0f / 2); - int start = pixel_weights.m_SrcStart - 1; - int end = pixel_weights.m_SrcEnd + 1; - if (start < src_min) { - start = src_min; - } - if (end >= src_max) { - end = src_max - 1; - } - if (pixel_weights.m_SrcStart < src_min) { - src_pos += src_min - pixel_weights.m_SrcStart; - pixel_weights.m_SrcStart = src_min; - } - if (pixel_weights.m_SrcEnd >= src_max) { - pixel_weights.m_SrcEnd = src_max - 1; - } - int weight; - weight = FXSYS_round( - (FX_FLOAT)(src_pos - pixel_weights.m_SrcStart - 1.0f / 2) * 256); - if (start == end) { - pixel_weights.m_Weights[0] = - (SDP_Table[256 + weight] + SDP_Table[weight] + - SDP_Table[256 - weight] + SDP_Table[512 - weight]) - << 8; - } else if ((start == pixel_weights.m_SrcStart && - (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd || - end == pixel_weights.m_SrcEnd) && - start < end) || - (start < pixel_weights.m_SrcStart && - pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd && - end == pixel_weights.m_SrcEnd)) { - if (start < pixel_weights.m_SrcStart) { - pixel_weights.m_Weights[0] = SDP_Table[256 + weight] << 8; - pixel_weights.m_Weights[1] = - (SDP_Table[weight] + SDP_Table[256 - weight] + - SDP_Table[512 - weight]) - << 8; - } else { - if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { - pixel_weights.m_Weights[0] = - (SDP_Table[256 + weight] + SDP_Table[weight] + - SDP_Table[256 - weight]) - << 8; - pixel_weights.m_Weights[1] = SDP_Table[512 - weight] << 8; - } else { - pixel_weights.m_Weights[0] = - (SDP_Table[256 + weight] + SDP_Table[weight]) << 8; - pixel_weights.m_Weights[1] = - (SDP_Table[256 - weight] + SDP_Table[512 - weight]) << 8; - } - } - if (pixel_weights.m_SrcStart == pixel_weights.m_SrcEnd) { - pixel_weights.m_SrcEnd = end; - } - if (start < pixel_weights.m_SrcStart) { - pixel_weights.m_SrcStart = start; - } - } else if (start == pixel_weights.m_SrcStart && - start < pixel_weights.m_SrcEnd && - pixel_weights.m_SrcEnd < end) { - pixel_weights.m_Weights[0] = - (SDP_Table[256 + weight] + SDP_Table[weight]) << 8; - pixel_weights.m_Weights[1] = SDP_Table[256 - weight] << 8; - pixel_weights.m_Weights[2] = SDP_Table[512 - weight] << 8; - pixel_weights.m_SrcEnd = end; - } else if (start < pixel_weights.m_SrcStart && - pixel_weights.m_SrcStart < pixel_weights.m_SrcEnd && - pixel_weights.m_SrcEnd == end) { - pixel_weights.m_Weights[0] = SDP_Table[256 + weight] << 8; - pixel_weights.m_Weights[1] = SDP_Table[weight] << 8; - pixel_weights.m_Weights[2] = - (SDP_Table[256 - weight] + SDP_Table[512 - weight]) << 8; - pixel_weights.m_SrcStart = start; - } else { - pixel_weights.m_Weights[0] = SDP_Table[256 + weight] << 8; - pixel_weights.m_Weights[1] = SDP_Table[weight] << 8; - pixel_weights.m_Weights[2] = SDP_Table[256 - weight] << 8; - pixel_weights.m_Weights[3] = SDP_Table[512 - weight] << 8; - pixel_weights.m_SrcStart = start; - pixel_weights.m_SrcEnd = end; - } - } else { - pixel_weights.m_SrcStart = pixel_weights.m_SrcEnd = - (int)FXSYS_floor((FX_FLOAT)src_pos); - if (pixel_weights.m_SrcStart < src_min) { - pixel_weights.m_SrcStart = src_min; - } - if (pixel_weights.m_SrcEnd >= src_max) { - pixel_weights.m_SrcEnd = src_max - 1; - } - pixel_weights.m_Weights[0] = 65536; - } - } - return; - } - for (int dest_pixel = dest_min; dest_pixel < dest_max; dest_pixel++) { - PixelWeight& pixel_weights = *GetPixelWeight(dest_pixel); - double src_start = dest_pixel * scale + base; - double src_end = src_start + scale; - int start_i, end_i; - if (src_start < src_end) { - start_i = (int)FXSYS_floor((FX_FLOAT)src_start); - end_i = (int)FXSYS_ceil((FX_FLOAT)src_end); - } else { - start_i = (int)FXSYS_floor((FX_FLOAT)src_end); - end_i = (int)FXSYS_ceil((FX_FLOAT)src_start); - } - if (start_i < src_min) { - start_i = src_min; - } - if (end_i >= src_max) { - end_i = src_max - 1; - } - if (start_i > end_i) { - if (start_i >= src_max) { - start_i = src_max - 1; - } - pixel_weights.m_SrcStart = start_i; - pixel_weights.m_SrcEnd = start_i; - continue; - } - pixel_weights.m_SrcStart = start_i; - pixel_weights.m_SrcEnd = end_i; - for (int j = start_i; j <= end_i; j++) { - double dest_start = ((FX_FLOAT)j - base) / scale; - double dest_end = ((FX_FLOAT)(j + 1) - base) / scale; - if (dest_start > dest_end) { - double temp = dest_start; - dest_start = dest_end; - dest_end = temp; - } - double area_start = dest_start > (FX_FLOAT)(dest_pixel) - ? dest_start - : (FX_FLOAT)(dest_pixel); - double area_end = dest_end > (FX_FLOAT)(dest_pixel + 1) - ? (FX_FLOAT)(dest_pixel + 1) - : dest_end; - double weight = area_start >= area_end ? 0.0f : area_end - area_start; - if (weight == 0 && j == end_i) { - pixel_weights.m_SrcEnd--; - break; - } - pixel_weights.m_Weights[j - start_i] = - FXSYS_round((FX_FLOAT)(weight * 65536)); - } - } -} -CStretchEngine::CStretchEngine(IFX_ScanlineComposer* pDestBitmap, - FXDIB_Format dest_format, - int dest_width, - int dest_height, - const FX_RECT& clip_rect, - const CFX_DIBSource* pSrcBitmap, - int flags) { - m_State = 0; - m_DestFormat = dest_format; - m_DestBpp = dest_format & 0xff; - m_SrcBpp = pSrcBitmap->GetFormat() & 0xff; - m_bHasAlpha = pSrcBitmap->GetFormat() & 0x200; - m_pSrcPalette = pSrcBitmap->GetPalette(); - m_pDestBitmap = pDestBitmap; - m_DestWidth = dest_width; - m_DestHeight = dest_height; - m_pInterBuf = NULL; - m_pExtraAlphaBuf = NULL; - m_pDestMaskScanline = NULL; - m_DestClip = clip_rect; - FX_DWORD size = clip_rect.Width(); - if (size && m_DestBpp > (int)(INT_MAX / size)) { - return; - } - size *= m_DestBpp; - if (size > INT_MAX - 31) { - return; - } - size += 31; - size = size / 32 * 4; - m_pDestScanline = FX_TryAlloc(uint8_t, size); - if (!m_pDestScanline) { - return; - } - if (dest_format == FXDIB_Rgb32) { - FXSYS_memset(m_pDestScanline, 255, size); - } - m_InterPitch = (m_DestClip.Width() * m_DestBpp + 31) / 32 * 4; - m_ExtraMaskPitch = (m_DestClip.Width() * 8 + 31) / 32 * 4; - m_pInterBuf = NULL; - m_pSource = pSrcBitmap; - m_SrcWidth = pSrcBitmap->GetWidth(); - m_SrcHeight = pSrcBitmap->GetHeight(); - m_SrcPitch = (m_SrcWidth * m_SrcBpp + 31) / 32 * 4; - if ((flags & FXDIB_NOSMOOTH) == 0) { - FX_BOOL bInterpol = - flags & FXDIB_INTERPOL || flags & FXDIB_BICUBIC_INTERPOL; - if (!bInterpol && FXSYS_abs(dest_width) != 0 && - FXSYS_abs(dest_height) < - m_SrcWidth * m_SrcHeight * 8 / FXSYS_abs(dest_width)) { - flags = FXDIB_INTERPOL; - } - m_Flags = flags; - } else { - m_Flags = FXDIB_NOSMOOTH; - if (flags & FXDIB_DOWNSAMPLE) { - m_Flags |= FXDIB_DOWNSAMPLE; - } - } - double scale_x = (FX_FLOAT)m_SrcWidth / (FX_FLOAT)m_DestWidth; - double scale_y = (FX_FLOAT)m_SrcHeight / (FX_FLOAT)m_DestHeight; - double base_x = m_DestWidth > 0 ? 0.0f : (FX_FLOAT)(m_DestWidth); - double base_y = m_DestHeight > 0 ? 0.0f : (FX_FLOAT)(m_DestHeight); - double src_left = scale_x * ((FX_FLOAT)(clip_rect.left) + base_x); - double src_right = scale_x * ((FX_FLOAT)(clip_rect.right) + base_x); - double src_top = scale_y * ((FX_FLOAT)(clip_rect.top) + base_y); - double src_bottom = scale_y * ((FX_FLOAT)(clip_rect.bottom) + base_y); - if (src_left > src_right) { - double temp = src_left; - src_left = src_right; - src_right = temp; - } - if (src_top > src_bottom) { - double temp = src_top; - src_top = src_bottom; - src_bottom = temp; - } - m_SrcClip.left = (int)FXSYS_floor((FX_FLOAT)src_left); - m_SrcClip.right = (int)FXSYS_ceil((FX_FLOAT)src_right); - m_SrcClip.top = (int)FXSYS_floor((FX_FLOAT)src_top); - m_SrcClip.bottom = (int)FXSYS_ceil((FX_FLOAT)src_bottom); - FX_RECT src_rect(0, 0, m_SrcWidth, m_SrcHeight); - m_SrcClip.Intersect(src_rect); - if (m_SrcBpp == 1) { - if (m_DestBpp == 8) { - m_TransMethod = 1; - } else { - m_TransMethod = 2; - } - } else if (m_SrcBpp == 8) { - if (m_DestBpp == 8) { - if (!m_bHasAlpha) { - m_TransMethod = 3; - } else { - m_TransMethod = 4; - } - } else { - if (!m_bHasAlpha) { - m_TransMethod = 5; - } else { - m_TransMethod = 6; - } - } - } else { - if (!m_bHasAlpha) { - m_TransMethod = 7; - } else { - m_TransMethod = 8; - } - } -} -FX_BOOL CStretchEngine::Continue(IFX_Pause* pPause) { - while (m_State == 1) { - if (ContinueStretchHorz(pPause)) { - return TRUE; - } - m_State = 2; - StretchVert(); - } - return FALSE; -} -CStretchEngine::~CStretchEngine() { - FX_Free(m_pDestScanline); - FX_Free(m_pInterBuf); - FX_Free(m_pExtraAlphaBuf); - FX_Free(m_pDestMaskScanline); -} -FX_BOOL CStretchEngine::StartStretchHorz() { - if (m_DestWidth == 0 || !m_pDestScanline || - m_SrcClip.Height() > (int)((1U << 29) / m_InterPitch) || - m_SrcClip.Height() == 0) { - return FALSE; - } - m_pInterBuf = FX_TryAlloc(unsigned char, m_SrcClip.Height() * m_InterPitch); - if (!m_pInterBuf) { - return FALSE; - } - if (m_pSource && m_bHasAlpha && m_pSource->m_pAlphaMask) { - m_pExtraAlphaBuf = - FX_Alloc2D(unsigned char, m_SrcClip.Height(), m_ExtraMaskPitch); - FX_DWORD size = (m_DestClip.Width() * 8 + 31) / 32 * 4; - m_pDestMaskScanline = FX_TryAlloc(unsigned char, size); - if (!m_pDestMaskScanline) { - return FALSE; - } - } - m_WeightTable.Calc(m_DestWidth, m_DestClip.left, m_DestClip.right, m_SrcWidth, - m_SrcClip.left, m_SrcClip.right, m_Flags); - if (!m_WeightTable.m_pWeightTables) { - return FALSE; - } - m_CurRow = m_SrcClip.top; - m_State = 1; - return TRUE; -} -#define FX_STRECH_PAUSE_ROWS 10 -FX_BOOL CStretchEngine::ContinueStretchHorz(IFX_Pause* pPause) { - if (!m_DestWidth) { - return 0; - } - if (m_pSource->SkipToScanline(m_CurRow, pPause)) { - return TRUE; - } - int Bpp = m_DestBpp / 8; - int rows_to_go = FX_STRECH_PAUSE_ROWS; - for (; m_CurRow < m_SrcClip.bottom; m_CurRow++) { - if (rows_to_go == 0) { - if (pPause && pPause->NeedToPauseNow()) { - return TRUE; - } - rows_to_go = FX_STRECH_PAUSE_ROWS; - } - const uint8_t* src_scan = m_pSource->GetScanline(m_CurRow); - uint8_t* dest_scan = - m_pInterBuf + (m_CurRow - m_SrcClip.top) * m_InterPitch; - const uint8_t* src_scan_mask = NULL; - uint8_t* dest_scan_mask = NULL; - if (m_pExtraAlphaBuf) { - src_scan_mask = m_pSource->m_pAlphaMask->GetScanline(m_CurRow); - dest_scan_mask = - m_pExtraAlphaBuf + (m_CurRow - m_SrcClip.top) * m_ExtraMaskPitch; - } - switch (m_TransMethod) { - case 1: - case 2: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); - int dest_a = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - if (src_scan[j / 8] & (1 << (7 - j % 8))) { - dest_a += pixel_weight * 255; - } - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; - } - *dest_scan++ = (uint8_t)(dest_a >> 16); - } - break; - } - case 3: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); - int dest_a = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - dest_a += pixel_weight * src_scan[j]; - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; - } - *dest_scan++ = (uint8_t)(dest_a >> 16); - } - break; - } - case 4: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); - int dest_a = 0, dest_r = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - pixel_weight = pixel_weight * src_scan_mask[j] / 255; - dest_r += pixel_weight * src_scan[j]; - dest_a += pixel_weight; - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_r = dest_r < 0 ? 0 : dest_r > 16711680 ? 16711680 : dest_r; - dest_a = dest_a < 0 ? 0 : dest_a > 65536 ? 65536 : dest_a; - } - *dest_scan++ = (uint8_t)(dest_r >> 16); - *dest_scan_mask++ = (uint8_t)((dest_a * 255) >> 16); - } - break; - } - case 5: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); - int dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - unsigned long argb_cmyk = m_pSrcPalette[src_scan[j]]; - if (m_DestFormat == FXDIB_Rgb) { - dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 16); - dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 8); - dest_b_c += pixel_weight * (uint8_t)argb_cmyk; - } else { - dest_b_c += pixel_weight * (uint8_t)(argb_cmyk >> 24); - dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 16); - dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 8); - } - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_r_y = - dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; - dest_g_m = - dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; - dest_b_c = - dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; - } - *dest_scan++ = (uint8_t)(dest_b_c >> 16); - *dest_scan++ = (uint8_t)(dest_g_m >> 16); - *dest_scan++ = (uint8_t)(dest_r_y >> 16); - } - break; - } - case 6: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); - int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - pixel_weight = pixel_weight * src_scan_mask[j] / 255; - unsigned long argb_cmyk = m_pSrcPalette[src_scan[j]]; - if (m_DestFormat == FXDIB_Rgba) { - dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 16); - dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 8); - dest_b_c += pixel_weight * (uint8_t)argb_cmyk; - } else { - dest_b_c += pixel_weight * (uint8_t)(argb_cmyk >> 24); - dest_g_m += pixel_weight * (uint8_t)(argb_cmyk >> 16); - dest_r_y += pixel_weight * (uint8_t)(argb_cmyk >> 8); - } - dest_a += pixel_weight; - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_b_c = - dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; - dest_g_m = - dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; - dest_r_y = - dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; - dest_a = dest_a < 0 ? 0 : dest_a > 65536 ? 65536 : dest_a; - } - *dest_scan++ = (uint8_t)(dest_b_c >> 16); - *dest_scan++ = (uint8_t)(dest_g_m >> 16); - *dest_scan++ = (uint8_t)(dest_r_y >> 16); - *dest_scan_mask++ = (uint8_t)((dest_a * 255) >> 16); - } - break; - } - case 7: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); - int dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = src_scan + j * Bpp; - dest_b_c += pixel_weight * (*src_pixel++); - dest_g_m += pixel_weight * (*src_pixel++); - dest_r_y += pixel_weight * (*src_pixel); - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_b_c = - dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; - dest_g_m = - dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; - dest_r_y = - dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; - } - *dest_scan++ = (uint8_t)((dest_b_c) >> 16); - *dest_scan++ = (uint8_t)((dest_g_m) >> 16); - *dest_scan++ = (uint8_t)((dest_r_y) >> 16); - dest_scan += Bpp - 3; - } - break; - } - case 8: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - PixelWeight* pPixelWeights = m_WeightTable.GetPixelWeight(col); - int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = src_scan + j * Bpp; - if (m_DestFormat == FXDIB_Argb) { - pixel_weight = pixel_weight * src_pixel[3] / 255; - } else { - pixel_weight = pixel_weight * src_scan_mask[j] / 255; - } - dest_b_c += pixel_weight * (*src_pixel++); - dest_g_m += pixel_weight * (*src_pixel++); - dest_r_y += pixel_weight * (*src_pixel); - dest_a += pixel_weight; - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_r_y = - dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; - dest_g_m = - dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; - dest_b_c = - dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; - dest_a = dest_a < 0 ? 0 : dest_a > 65536 ? 65536 : dest_a; - } - *dest_scan++ = (uint8_t)((dest_b_c) >> 16); - *dest_scan++ = (uint8_t)((dest_g_m) >> 16); - *dest_scan++ = (uint8_t)((dest_r_y) >> 16); - if (m_DestFormat == FXDIB_Argb) { - *dest_scan = (uint8_t)((dest_a * 255) >> 16); - } - if (dest_scan_mask) { - *dest_scan_mask++ = (uint8_t)((dest_a * 255) >> 16); - } - dest_scan += Bpp - 3; - } - break; - } - } - rows_to_go--; - } - return FALSE; -} -void CStretchEngine::StretchVert() { - if (m_DestHeight == 0) { - return; - } - CWeightTable table; - table.Calc(m_DestHeight, m_DestClip.top, m_DestClip.bottom, m_SrcHeight, - m_SrcClip.top, m_SrcClip.bottom, m_Flags); - if (!table.m_pWeightTables) { - return; - } - int DestBpp = m_DestBpp / 8; - for (int row = m_DestClip.top; row < m_DestClip.bottom; row++) { - unsigned char* dest_scan = m_pDestScanline; - unsigned char* dest_sacn_mask = m_pDestMaskScanline; - PixelWeight* pPixelWeights = table.GetPixelWeight(row); - switch (m_TransMethod) { - case 1: - case 2: - case 3: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - unsigned char* src_scan = - m_pInterBuf + (col - m_DestClip.left) * DestBpp; - int dest_a = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - dest_a += - pixel_weight * src_scan[(j - m_SrcClip.top) * m_InterPitch]; - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; - } - *dest_scan = (uint8_t)(dest_a >> 16); - dest_scan += DestBpp; - } - break; - } - case 4: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - unsigned char* src_scan = - m_pInterBuf + (col - m_DestClip.left) * DestBpp; - unsigned char* src_scan_mask = - m_pExtraAlphaBuf + (col - m_DestClip.left); - int dest_a = 0, dest_k = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - dest_k += - pixel_weight * src_scan[(j - m_SrcClip.top) * m_InterPitch]; - dest_a += pixel_weight * - src_scan_mask[(j - m_SrcClip.top) * m_ExtraMaskPitch]; - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_k = dest_k < 0 ? 0 : dest_k > 16711680 ? 16711680 : dest_k; - dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; - } - *dest_scan = (uint8_t)(dest_k >> 16); - dest_scan += DestBpp; - *dest_sacn_mask++ = (uint8_t)(dest_a >> 16); - } - break; - } - case 5: - case 7: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - unsigned char* src_scan = - m_pInterBuf + (col - m_DestClip.left) * DestBpp; - int dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = - src_scan + (j - m_SrcClip.top) * m_InterPitch; - dest_b_c += pixel_weight * (*src_pixel++); - dest_g_m += pixel_weight * (*src_pixel++); - dest_r_y += pixel_weight * (*src_pixel); - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_r_y = - dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; - dest_g_m = - dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; - dest_b_c = - dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; - } - dest_scan[0] = (uint8_t)((dest_b_c) >> 16); - dest_scan[1] = (uint8_t)((dest_g_m) >> 16); - dest_scan[2] = (uint8_t)((dest_r_y) >> 16); - dest_scan += DestBpp; - } - break; - } - case 6: - case 8: { - for (int col = m_DestClip.left; col < m_DestClip.right; col++) { - unsigned char* src_scan = - m_pInterBuf + (col - m_DestClip.left) * DestBpp; - unsigned char* src_scan_mask = NULL; - if (m_DestFormat != FXDIB_Argb) { - src_scan_mask = m_pExtraAlphaBuf + (col - m_DestClip.left); - } - int dest_a = 0, dest_r_y = 0, dest_g_m = 0, dest_b_c = 0; - for (int j = pPixelWeights->m_SrcStart; j <= pPixelWeights->m_SrcEnd; - j++) { - int pixel_weight = - pPixelWeights->m_Weights[j - pPixelWeights->m_SrcStart]; - const uint8_t* src_pixel = - src_scan + (j - m_SrcClip.top) * m_InterPitch; - int mask_v = 255; - if (src_scan_mask) { - mask_v = src_scan_mask[(j - m_SrcClip.top) * m_ExtraMaskPitch]; - } - dest_b_c += pixel_weight * (*src_pixel++); - dest_g_m += pixel_weight * (*src_pixel++); - dest_r_y += pixel_weight * (*src_pixel); - if (m_DestFormat == FXDIB_Argb) { - dest_a += pixel_weight * (*(src_pixel + 1)); - } else { - dest_a += pixel_weight * mask_v; - } - } - if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - dest_r_y = - dest_r_y < 0 ? 0 : dest_r_y > 16711680 ? 16711680 : dest_r_y; - dest_g_m = - dest_g_m < 0 ? 0 : dest_g_m > 16711680 ? 16711680 : dest_g_m; - dest_b_c = - dest_b_c < 0 ? 0 : dest_b_c > 16711680 ? 16711680 : dest_b_c; - dest_a = dest_a < 0 ? 0 : dest_a > 16711680 ? 16711680 : dest_a; - } - if (dest_a) { - int r = ((FX_DWORD)dest_r_y) * 255 / dest_a; - int g = ((FX_DWORD)dest_g_m) * 255 / dest_a; - int b = ((FX_DWORD)dest_b_c) * 255 / dest_a; - dest_scan[0] = b > 255 ? 255 : b < 0 ? 0 : b; - dest_scan[1] = g > 255 ? 255 : g < 0 ? 0 : g; - dest_scan[2] = r > 255 ? 255 : r < 0 ? 0 : r; - } - if (m_DestFormat == FXDIB_Argb) { - dest_scan[3] = (uint8_t)((dest_a) >> 16); - } else { - *dest_sacn_mask = (uint8_t)((dest_a) >> 16); - } - dest_scan += DestBpp; - if (dest_sacn_mask) { - dest_sacn_mask++; - } - } - break; - } - } - m_pDestBitmap->ComposeScanline(row - m_DestClip.top, m_pDestScanline, - m_pDestMaskScanline); - } -} -CFX_ImageStretcher::CFX_ImageStretcher() { - m_pScanline = NULL; - m_pStretchEngine = NULL; - m_pMaskScanline = NULL; -} -CFX_ImageStretcher::~CFX_ImageStretcher() { - FX_Free(m_pScanline); - delete m_pStretchEngine; - FX_Free(m_pMaskScanline); -} -FXDIB_Format _GetStretchedFormat(const CFX_DIBSource* pSrc) { - FXDIB_Format format = pSrc->GetFormat(); - if (format == FXDIB_1bppMask) { - format = FXDIB_8bppMask; - } else if (format == FXDIB_1bppRgb) { - format = FXDIB_8bppRgb; - } else if (format == FXDIB_8bppRgb) { - if (pSrc->GetPalette()) { - format = FXDIB_Rgb; - } - } - return format; -} -FX_BOOL CFX_ImageStretcher::Start(IFX_ScanlineComposer* pDest, - const CFX_DIBSource* pSource, - int dest_width, - int dest_height, - const FX_RECT& rect, - FX_DWORD flags) { - m_DestFormat = _GetStretchedFormat(pSource); - m_DestBPP = m_DestFormat & 0xff; - m_pDest = pDest; - m_pSource = pSource; - m_DestWidth = dest_width; - m_DestHeight = dest_height; - m_ClipRect = rect; - m_Flags = flags; - if (pSource->GetFormat() == FXDIB_1bppRgb && pSource->GetPalette()) { - FX_ARGB pal[256]; - int a0, r0, g0, b0, a1, r1, g1, b1; - ArgbDecode(pSource->GetPaletteEntry(0), a0, r0, g0, b0); - ArgbDecode(pSource->GetPaletteEntry(1), a1, r1, g1, b1); - for (int i = 0; i < 256; i++) { - int a = a0 + (a1 - a0) * i / 255; - int r = r0 + (r1 - r0) * i / 255; - int g = g0 + (g1 - g0) * i / 255; - int b = b0 + (b1 - b0) * i / 255; - pal[i] = ArgbEncode(a, r, g, b); - } - if (!pDest->SetInfo(rect.Width(), rect.Height(), m_DestFormat, pal)) { - return FALSE; - } - } else if (pSource->GetFormat() == FXDIB_1bppCmyk && pSource->GetPalette()) { - FX_CMYK pal[256]; - int c0, m0, y0, k0, c1, m1, y1, k1; - CmykDecode(pSource->GetPaletteEntry(0), c0, m0, y0, k0); - CmykDecode(pSource->GetPaletteEntry(1), c1, m1, y1, k1); - for (int i = 0; i < 256; i++) { - int c = c0 + (c1 - c0) * i / 255; - int m = m0 + (m1 - m0) * i / 255; - int y = y0 + (y1 - y0) * i / 255; - int k = k0 + (k1 - k0) * i / 255; - pal[i] = CmykEncode(c, m, y, k); - } - if (!pDest->SetInfo(rect.Width(), rect.Height(), m_DestFormat, pal)) { - return FALSE; - } - } else if (!pDest->SetInfo(rect.Width(), rect.Height(), m_DestFormat, NULL)) { - return FALSE; - } - if (flags & FXDIB_DOWNSAMPLE) { - return StartQuickStretch(); - } - return StartStretch(); -} -FX_BOOL CFX_ImageStretcher::Continue(IFX_Pause* pPause) { - if (m_Flags & FXDIB_DOWNSAMPLE) { - return ContinueQuickStretch(pPause); - } - return ContinueStretch(pPause); -} -#define MAX_PROGRESSIVE_STRETCH_PIXELS 1000000 -FX_BOOL CFX_ImageStretcher::StartStretch() { - m_pStretchEngine = - new CStretchEngine(m_pDest, m_DestFormat, m_DestWidth, m_DestHeight, - m_ClipRect, m_pSource, m_Flags); - m_pStretchEngine->StartStretchHorz(); - if (m_pSource->GetWidth() * m_pSource->GetHeight() < - MAX_PROGRESSIVE_STRETCH_PIXELS) { - m_pStretchEngine->Continue(NULL); - return FALSE; - } - return TRUE; -} -FX_BOOL CFX_ImageStretcher::ContinueStretch(IFX_Pause* pPause) { - return m_pStretchEngine && m_pStretchEngine->Continue(pPause); -} -FX_BOOL CFX_ImageStretcher::StartQuickStretch() { - m_bFlipX = FALSE; - m_bFlipY = FALSE; - if (m_DestWidth < 0) { - m_bFlipX = TRUE; - m_DestWidth = -m_DestWidth; - } - if (m_DestHeight < 0) { - m_bFlipY = TRUE; - m_DestHeight = -m_DestHeight; - } - m_LineIndex = 0; - FX_DWORD size = m_ClipRect.Width(); - if (size && m_DestBPP > (int)(INT_MAX / size)) { - return FALSE; - } - size *= m_DestBPP; - m_pScanline = FX_Alloc(uint8_t, (size / 8 + 3) / 4 * 4); - if (m_pSource->m_pAlphaMask) { - m_pMaskScanline = FX_Alloc(uint8_t, (m_ClipRect.Width() + 3) / 4 * 4); - } - if (m_pSource->GetWidth() * m_pSource->GetHeight() < - MAX_PROGRESSIVE_STRETCH_PIXELS) { - ContinueQuickStretch(NULL); - return FALSE; - } - return TRUE; -} -FX_BOOL CFX_ImageStretcher::ContinueQuickStretch(IFX_Pause* pPause) { - if (!m_pScanline) { - return FALSE; - } - int result_width = m_ClipRect.Width(), result_height = m_ClipRect.Height(); - int src_height = m_pSource->GetHeight(); - for (; m_LineIndex < result_height; m_LineIndex++) { - int dest_y, src_y; - if (m_bFlipY) { - dest_y = result_height - m_LineIndex - 1; - src_y = (m_DestHeight - (dest_y + m_ClipRect.top) - 1) * src_height / - m_DestHeight; - } else { - dest_y = m_LineIndex; - src_y = (dest_y + m_ClipRect.top) * src_height / m_DestHeight; - } - if (src_y >= src_height) { - src_y = src_height - 1; - } - if (src_y < 0) { - src_y = 0; - } - if (m_pSource->SkipToScanline(src_y, pPause)) { - return TRUE; - } - m_pSource->DownSampleScanline(src_y, m_pScanline, m_DestBPP, m_DestWidth, - m_bFlipX, m_ClipRect.left, result_width); - if (m_pMaskScanline) { - m_pSource->m_pAlphaMask->DownSampleScanline( - src_y, m_pMaskScanline, 1, m_DestWidth, m_bFlipX, m_ClipRect.left, - result_width); - } - m_pDest->ComposeScanline(dest_y, m_pScanline, m_pMaskScanline); - } - return FALSE; -} diff --git a/core/src/fxge/dib/fx_dib_main.cpp b/core/src/fxge/dib/fx_dib_main.cpp deleted file mode 100644 index ab4c170af5..0000000000 --- a/core/src/fxge/dib/fx_dib_main.cpp +++ /dev/null @@ -1,1745 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_dib.h" - -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/dib/dib_int.h" - -FX_BOOL ConvertBuffer(FXDIB_Format dest_format, - uint8_t* dest_buf, - int dest_pitch, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - FX_DWORD*& pal, - void* pIccTransform); -void CmykDecode(FX_DWORD cmyk, int& c, int& m, int& y, int& k) { - c = FXSYS_GetCValue(cmyk); - m = FXSYS_GetMValue(cmyk); - y = FXSYS_GetYValue(cmyk); - k = FXSYS_GetKValue(cmyk); -} -void ArgbDecode(FX_DWORD argb, int& a, int& r, int& g, int& b) { - a = FXARGB_A(argb); - r = FXARGB_R(argb); - g = FXARGB_G(argb); - b = FXARGB_B(argb); -} -void ArgbDecode(FX_DWORD argb, int& a, FX_COLORREF& rgb) { - a = FXARGB_A(argb); - rgb = FXSYS_RGB(FXARGB_R(argb), FXARGB_G(argb), FXARGB_B(argb)); -} -FX_DWORD ArgbEncode(int a, FX_COLORREF rgb) { - return FXARGB_MAKE(a, FXSYS_GetRValue(rgb), FXSYS_GetGValue(rgb), - FXSYS_GetBValue(rgb)); -} - -CFX_DIBSource::CFX_DIBSource() { - m_bpp = 0; - m_AlphaFlag = 0; - m_Width = m_Height = 0; - m_Pitch = 0; - m_pPalette = NULL; - m_pAlphaMask = NULL; -} - -CFX_DIBSource::~CFX_DIBSource() { - FX_Free(m_pPalette); - delete m_pAlphaMask; -} - -uint8_t* CFX_DIBSource::GetBuffer() const { - return NULL; -} - -FX_BOOL CFX_DIBSource::SkipToScanline(int line, IFX_Pause* pPause) const { - return FALSE; -} - -CFX_DIBitmap::CFX_DIBitmap() { - m_bExtBuf = FALSE; - m_pBuffer = NULL; - m_pPalette = NULL; -} - -#define _MAX_OOM_LIMIT_ 12000000 -FX_BOOL CFX_DIBitmap::Create(int width, - int height, - FXDIB_Format format, - uint8_t* pBuffer, - int pitch) { - m_pBuffer = NULL; - m_bpp = (uint8_t)format; - m_AlphaFlag = (uint8_t)(format >> 8); - m_Width = m_Height = m_Pitch = 0; - if (width <= 0 || height <= 0 || pitch < 0) { - return FALSE; - } - if ((INT_MAX - 31) / width < (format & 0xff)) { - return FALSE; - } - if (!pitch) { - pitch = (width * (format & 0xff) + 31) / 32 * 4; - } - if ((1 << 30) / pitch < height) { - return FALSE; - } - if (pBuffer) { - m_pBuffer = pBuffer; - m_bExtBuf = TRUE; - } else { - int size = pitch * height + 4; - int oomlimit = _MAX_OOM_LIMIT_; - if (oomlimit >= 0 && size >= oomlimit) { - m_pBuffer = FX_TryAlloc(uint8_t, size); - if (!m_pBuffer) { - return FALSE; - } - } else { - m_pBuffer = FX_Alloc(uint8_t, size); - } - } - m_Width = width; - m_Height = height; - m_Pitch = pitch; - if (HasAlpha() && format != FXDIB_Argb) { - FX_BOOL ret = TRUE; - ret = BuildAlphaMask(); - if (!ret) { - if (!m_bExtBuf) { - FX_Free(m_pBuffer); - m_pBuffer = NULL; - m_Width = m_Height = m_Pitch = 0; - return FALSE; - } - } - } - return TRUE; -} - -FX_BOOL CFX_DIBitmap::Copy(const CFX_DIBSource* pSrc) { - if (m_pBuffer) { - return FALSE; - } - if (!Create(pSrc->GetWidth(), pSrc->GetHeight(), pSrc->GetFormat())) { - return FALSE; - } - CopyPalette(pSrc->GetPalette()); - CopyAlphaMask(pSrc->m_pAlphaMask); - for (int row = 0; row < pSrc->GetHeight(); row++) { - FXSYS_memcpy(m_pBuffer + row * m_Pitch, pSrc->GetScanline(row), m_Pitch); - } - return TRUE; -} - -CFX_DIBitmap::~CFX_DIBitmap() { - if (!m_bExtBuf) - FX_Free(m_pBuffer); - - m_pBuffer = nullptr; -} - -uint8_t* CFX_DIBitmap::GetBuffer() const { - return m_pBuffer; -} - -const uint8_t* CFX_DIBitmap::GetScanline(int line) const { - return m_pBuffer ? m_pBuffer + line * m_Pitch : nullptr; -} - -void CFX_DIBitmap::TakeOver(CFX_DIBitmap* pSrcBitmap) { - if (!m_bExtBuf) - FX_Free(m_pBuffer); - - FX_Free(m_pPalette); - delete m_pAlphaMask; - m_pBuffer = pSrcBitmap->m_pBuffer; - m_pPalette = pSrcBitmap->m_pPalette; - m_pAlphaMask = pSrcBitmap->m_pAlphaMask; - pSrcBitmap->m_pBuffer = nullptr; - pSrcBitmap->m_pPalette = nullptr; - pSrcBitmap->m_pAlphaMask = nullptr; - m_bpp = pSrcBitmap->m_bpp; - m_bExtBuf = pSrcBitmap->m_bExtBuf; - m_AlphaFlag = pSrcBitmap->m_AlphaFlag; - m_Width = pSrcBitmap->m_Width; - m_Height = pSrcBitmap->m_Height; - m_Pitch = pSrcBitmap->m_Pitch; -} - -CFX_DIBitmap* CFX_DIBSource::Clone(const FX_RECT* pClip) const { - FX_RECT rect(0, 0, m_Width, m_Height); - if (pClip) { - rect.Intersect(*pClip); - if (rect.IsEmpty()) { - return NULL; - } - } - CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap; - if (!pNewBitmap->Create(rect.Width(), rect.Height(), GetFormat())) { - delete pNewBitmap; - return NULL; - } - pNewBitmap->CopyPalette(m_pPalette); - pNewBitmap->CopyAlphaMask(m_pAlphaMask, pClip); - if (GetBPP() == 1 && rect.left % 8 != 0) { - int left_shift = rect.left % 32; - int right_shift = 32 - left_shift; - int dword_count = pNewBitmap->m_Pitch / 4; - for (int row = rect.top; row < rect.bottom; row++) { - FX_DWORD* src_scan = (FX_DWORD*)GetScanline(row) + rect.left / 32; - FX_DWORD* dest_scan = (FX_DWORD*)pNewBitmap->GetScanline(row - rect.top); - for (int i = 0; i < dword_count; i++) { - dest_scan[i] = - (src_scan[i] << left_shift) | (src_scan[i + 1] >> right_shift); - } - } - } else { - int copy_len = (pNewBitmap->GetWidth() * pNewBitmap->GetBPP() + 7) / 8; - if (m_Pitch < (FX_DWORD)copy_len) { - copy_len = m_Pitch; - } - for (int row = rect.top; row < rect.bottom; row++) { - const uint8_t* src_scan = GetScanline(row) + rect.left * m_bpp / 8; - uint8_t* dest_scan = (uint8_t*)pNewBitmap->GetScanline(row - rect.top); - FXSYS_memcpy(dest_scan, src_scan, copy_len); - } - } - return pNewBitmap; -} -void CFX_DIBSource::BuildPalette() { - if (m_pPalette) { - return; - } - if (GetBPP() == 1) { - m_pPalette = FX_Alloc(FX_DWORD, 2); - if (IsCmykImage()) { - m_pPalette[0] = 0xff; - m_pPalette[1] = 0; - } else { - m_pPalette[0] = 0xff000000; - m_pPalette[1] = 0xffffffff; - } - } else if (GetBPP() == 8) { - m_pPalette = FX_Alloc(FX_DWORD, 256); - if (IsCmykImage()) { - for (int i = 0; i < 256; i++) { - m_pPalette[i] = 0xff - i; - } - } else { - for (int i = 0; i < 256; i++) { - m_pPalette[i] = 0xff000000 | (i * 0x10101); - } - } - } -} -FX_BOOL CFX_DIBSource::BuildAlphaMask() { - if (m_pAlphaMask) { - return TRUE; - } - m_pAlphaMask = new CFX_DIBitmap; - if (!m_pAlphaMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { - delete m_pAlphaMask; - m_pAlphaMask = NULL; - return FALSE; - } - FXSYS_memset(m_pAlphaMask->GetBuffer(), 0xff, - m_pAlphaMask->GetHeight() * m_pAlphaMask->GetPitch()); - return TRUE; -} -FX_DWORD CFX_DIBSource::GetPaletteEntry(int index) const { - ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); - if (m_pPalette) { - return m_pPalette[index]; - } - if (IsCmykImage()) { - if (GetBPP() == 1) { - return index ? 0 : 0xff; - } - return 0xff - index; - } - if (GetBPP() == 1) { - return index ? 0xffffffff : 0xff000000; - } - return index * 0x10101 | 0xff000000; -} -void CFX_DIBSource::SetPaletteEntry(int index, FX_DWORD color) { - ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); - if (!m_pPalette) { - BuildPalette(); - } - m_pPalette[index] = color; -} -int CFX_DIBSource::FindPalette(FX_DWORD color) const { - ASSERT((GetBPP() == 1 || GetBPP() == 8) && !IsAlphaMask()); - if (!m_pPalette) { - if (IsCmykImage()) { - if (GetBPP() == 1) { - return ((uint8_t)color == 0xff) ? 0 : 1; - } - return 0xff - (uint8_t)color; - } - if (GetBPP() == 1) { - return ((uint8_t)color == 0xff) ? 1 : 0; - } - return (uint8_t)color; - } - int palsize = (1 << GetBPP()); - for (int i = 0; i < palsize; i++) - if (m_pPalette[i] == color) { - return i; - } - return -1; -} -void CFX_DIBitmap::Clear(FX_DWORD color) { - if (!m_pBuffer) { - return; - } - switch (GetFormat()) { - case FXDIB_1bppMask: - FXSYS_memset(m_pBuffer, (color & 0xff000000) ? 0xff : 0, - m_Pitch * m_Height); - break; - case FXDIB_1bppRgb: { - int index = FindPalette(color); - FXSYS_memset(m_pBuffer, index ? 0xff : 0, m_Pitch * m_Height); - break; - } - case FXDIB_8bppMask: - FXSYS_memset(m_pBuffer, color >> 24, m_Pitch * m_Height); - break; - case FXDIB_8bppRgb: { - int index = FindPalette(color); - FXSYS_memset(m_pBuffer, index, m_Pitch * m_Height); - break; - } - case FXDIB_Rgb: - case FXDIB_Rgba: { - int a, r, g, b; - ArgbDecode(color, a, r, g, b); - if (r == g && g == b) { - FXSYS_memset(m_pBuffer, r, m_Pitch * m_Height); - } else { - int byte_pos = 0; - for (int col = 0; col < m_Width; col++) { - m_pBuffer[byte_pos++] = b; - m_pBuffer[byte_pos++] = g; - m_pBuffer[byte_pos++] = r; - } - for (int row = 1; row < m_Height; row++) { - FXSYS_memcpy(m_pBuffer + row * m_Pitch, m_pBuffer, m_Pitch); - } - } - break; - } - case FXDIB_Rgb32: - case FXDIB_Argb: { - color = IsCmykImage() ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); - for (int i = 0; i < m_Width; i++) { - ((FX_DWORD*)m_pBuffer)[i] = color; - } - for (int row = 1; row < m_Height; row++) { - FXSYS_memcpy(m_pBuffer + row * m_Pitch, m_pBuffer, m_Pitch); - } - break; - } - default: - break; - } -} -void CFX_DIBSource::GetOverlapRect(int& dest_left, - int& dest_top, - int& width, - int& height, - int src_width, - int src_height, - int& src_left, - int& src_top, - const CFX_ClipRgn* pClipRgn) { - if (width == 0 || height == 0) { - return; - } - ASSERT(width > 0 && height > 0); - if (dest_left > m_Width || dest_top > m_Height) { - width = 0; - height = 0; - return; - } - int x_offset = dest_left - src_left; - int y_offset = dest_top - src_top; - FX_RECT src_rect(src_left, src_top, src_left + width, src_top + height); - FX_RECT src_bound(0, 0, src_width, src_height); - src_rect.Intersect(src_bound); - FX_RECT dest_rect(src_rect.left + x_offset, src_rect.top + y_offset, - src_rect.right + x_offset, src_rect.bottom + y_offset); - FX_RECT dest_bound(0, 0, m_Width, m_Height); - dest_rect.Intersect(dest_bound); - if (pClipRgn) { - dest_rect.Intersect(pClipRgn->GetBox()); - } - dest_left = dest_rect.left; - dest_top = dest_rect.top; - src_left = dest_left - x_offset; - src_top = dest_top - y_offset; - width = dest_rect.right - dest_rect.left; - height = dest_rect.bottom - dest_rect.top; -} -FX_BOOL CFX_DIBitmap::TransferBitmap(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - void* pIccTransform) { - if (!m_pBuffer) { - return FALSE; - } - GetOverlapRect(dest_left, dest_top, width, height, pSrcBitmap->GetWidth(), - pSrcBitmap->GetHeight(), src_left, src_top, NULL); - if (width == 0 || height == 0) { - return TRUE; - } - FXDIB_Format dest_format = GetFormat(); - FXDIB_Format src_format = pSrcBitmap->GetFormat(); - if (dest_format == src_format && !pIccTransform) { - if (GetBPP() == 1) { - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = m_pBuffer + (dest_top + row) * m_Pitch; - const uint8_t* src_scan = pSrcBitmap->GetScanline(src_top + row); - for (int col = 0; col < width; col++) { - if (src_scan[(src_left + col) / 8] & - (1 << (7 - (src_left + col) % 8))) { - dest_scan[(dest_left + col) / 8] |= 1 - << (7 - (dest_left + col) % 8); - } else { - dest_scan[(dest_left + col) / 8] &= - ~(1 << (7 - (dest_left + col) % 8)); - } - } - } - } else { - int Bpp = GetBPP() / 8; - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = - m_pBuffer + (dest_top + row) * m_Pitch + dest_left * Bpp; - const uint8_t* src_scan = - pSrcBitmap->GetScanline(src_top + row) + src_left * Bpp; - FXSYS_memcpy(dest_scan, src_scan, width * Bpp); - } - } - } else { - if (m_pPalette) { - return FALSE; - } - if (m_bpp == 8) { - dest_format = FXDIB_8bppMask; - } - uint8_t* dest_buf = - m_pBuffer + dest_top * m_Pitch + dest_left * GetBPP() / 8; - FX_DWORD* d_plt = NULL; - if (!ConvertBuffer(dest_format, dest_buf, m_Pitch, width, height, - pSrcBitmap, src_left, src_top, d_plt, pIccTransform)) { - return FALSE; - } - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::TransferMask(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pMask, - FX_DWORD color, - int src_left, - int src_top, - int alpha_flag, - void* pIccTransform) { - if (!m_pBuffer) { - return FALSE; - } - ASSERT(HasAlpha() && (m_bpp >= 24)); - ASSERT(pMask->IsAlphaMask()); - if (!HasAlpha() || !pMask->IsAlphaMask() || m_bpp < 24) { - return FALSE; - } - GetOverlapRect(dest_left, dest_top, width, height, pMask->GetWidth(), - pMask->GetHeight(), src_left, src_top, NULL); - if (width == 0 || height == 0) { - return TRUE; - } - int src_bpp = pMask->GetBPP(); - int alpha; - FX_DWORD dst_color; - if (alpha_flag >> 8) { - alpha = alpha_flag & 0xff; - dst_color = FXCMYK_TODIB(color); - } else { - alpha = FXARGB_A(color); - dst_color = FXARGB_TODIB(color); - } - uint8_t* color_p = (uint8_t*)&dst_color; - if (pIccTransform && CFX_GEModule::Get()->GetCodecModule() && - CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - pIccModule->TranslateScanline(pIccTransform, color_p, color_p, 1); - } else { - if (alpha_flag >> 8 && !IsCmykImage()) { - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), - FXSYS_GetYValue(color), FXSYS_GetKValue(color), - color_p[2], color_p[1], color_p[0]); - } else if (!(alpha_flag >> 8) && IsCmykImage()) { - return FALSE; - } - } - if (!IsCmykImage()) { - color_p[3] = (uint8_t)alpha; - } - if (GetFormat() == FXDIB_Argb) { - for (int row = 0; row < height; row++) { - FX_DWORD* dest_pos = - (FX_DWORD*)(m_pBuffer + (dest_top + row) * m_Pitch + dest_left * 4); - const uint8_t* src_scan = pMask->GetScanline(src_top + row); - if (src_bpp == 1) { - for (int col = 0; col < width; col++) { - int src_bitpos = src_left + col; - if (src_scan[src_bitpos / 8] & (1 << (7 - src_bitpos % 8))) { - *dest_pos = dst_color; - } else { - *dest_pos = 0; - } - dest_pos++; - } - } else { - src_scan += src_left; - dst_color = FXARGB_TODIB(dst_color); - dst_color &= 0xffffff; - for (int col = 0; col < width; col++) { - FXARGB_SETDIB(dest_pos++, - dst_color | ((alpha * (*src_scan++) / 255) << 24)); - } - } - } - } else { - int comps = m_bpp / 8; - for (int row = 0; row < height; row++) { - uint8_t* dest_color_pos = - m_pBuffer + (dest_top + row) * m_Pitch + dest_left * comps; - uint8_t* dest_alpha_pos = - (uint8_t*)m_pAlphaMask->GetScanline(dest_top + row) + dest_left; - const uint8_t* src_scan = pMask->GetScanline(src_top + row); - if (src_bpp == 1) { - for (int col = 0; col < width; col++) { - int src_bitpos = src_left + col; - if (src_scan[src_bitpos / 8] & (1 << (7 - src_bitpos % 8))) { - FXSYS_memcpy(dest_color_pos, color_p, comps); - *dest_alpha_pos = 0xff; - } else { - FXSYS_memset(dest_color_pos, 0, comps); - *dest_alpha_pos = 0; - } - dest_color_pos += comps; - dest_alpha_pos++; - } - } else { - src_scan += src_left; - for (int col = 0; col < width; col++) { - FXSYS_memcpy(dest_color_pos, color_p, comps); - dest_color_pos += comps; - *dest_alpha_pos++ = (alpha * (*src_scan++) / 255); - } - } - } - } - return TRUE; -} -void CFX_DIBSource::CopyPalette(const FX_DWORD* pSrc, FX_DWORD size) { - if (!pSrc || GetBPP() > 8) { - FX_Free(m_pPalette); - m_pPalette = NULL; - } else { - FX_DWORD pal_size = 1 << GetBPP(); - if (!m_pPalette) { - m_pPalette = FX_Alloc(FX_DWORD, pal_size); - } - if (pal_size > size) { - pal_size = size; - } - FXSYS_memcpy(m_pPalette, pSrc, pal_size * sizeof(FX_DWORD)); - } -} -void CFX_DIBSource::GetPalette(FX_DWORD* pal, int alpha) const { - ASSERT(GetBPP() <= 8 && !IsCmykImage()); - if (GetBPP() == 1) { - pal[0] = - ((m_pPalette ? m_pPalette[0] : 0xff000000) & 0xffffff) | (alpha << 24); - pal[1] = - ((m_pPalette ? m_pPalette[1] : 0xffffffff) & 0xffffff) | (alpha << 24); - return; - } - if (m_pPalette) { - for (int i = 0; i < 256; i++) { - pal[i] = (m_pPalette[i] & 0x00ffffff) | (alpha << 24); - } - } else { - for (int i = 0; i < 256; i++) { - pal[i] = (i * 0x10101) | (alpha << 24); - } - } -} -CFX_DIBitmap* CFX_DIBSource::GetAlphaMask(const FX_RECT* pClip) const { - ASSERT(GetFormat() == FXDIB_Argb); - FX_RECT rect(0, 0, m_Width, m_Height); - if (pClip) { - rect.Intersect(*pClip); - if (rect.IsEmpty()) { - return NULL; - } - } - CFX_DIBitmap* pMask = new CFX_DIBitmap; - if (!pMask->Create(rect.Width(), rect.Height(), FXDIB_8bppMask)) { - delete pMask; - return NULL; - } - for (int row = rect.top; row < rect.bottom; row++) { - const uint8_t* src_scan = GetScanline(row) + rect.left * 4 + 3; - uint8_t* dest_scan = (uint8_t*)pMask->GetScanline(row - rect.top); - for (int col = rect.left; col < rect.right; col++) { - *dest_scan++ = *src_scan; - src_scan += 4; - } - } - return pMask; -} -FX_BOOL CFX_DIBSource::CopyAlphaMask(const CFX_DIBSource* pAlphaMask, - const FX_RECT* pClip) { - if (!HasAlpha() || GetFormat() == FXDIB_Argb) { - return FALSE; - } - if (pAlphaMask) { - FX_RECT rect(0, 0, pAlphaMask->m_Width, pAlphaMask->m_Height); - if (pClip) { - rect.Intersect(*pClip); - if (rect.IsEmpty() || rect.Width() != m_Width || - rect.Height() != m_Height) { - return FALSE; - } - } else { - if (pAlphaMask->m_Width != m_Width || pAlphaMask->m_Height != m_Height) { - return FALSE; - } - } - for (int row = 0; row < m_Height; row++) - FXSYS_memcpy((void*)m_pAlphaMask->GetScanline(row), - pAlphaMask->GetScanline(row + rect.top) + rect.left, - m_pAlphaMask->m_Pitch); - } else { - m_pAlphaMask->Clear(0xff000000); - } - return TRUE; -} -const int g_ChannelOffset[] = {0, 2, 1, 0, 0, 1, 2, 3, 3}; -FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, - const CFX_DIBSource* pSrcBitmap, - FXDIB_Channel srcChannel) { - if (!m_pBuffer) { - return FALSE; - } - CFX_DIBSource* pSrcClone = (CFX_DIBSource*)pSrcBitmap; - CFX_DIBitmap* pDst = this; - int destOffset, srcOffset; - if (srcChannel == FXDIB_Alpha) { - if (!pSrcBitmap->HasAlpha() && !pSrcBitmap->IsAlphaMask()) { - return FALSE; - } - if (pSrcBitmap->GetBPP() == 1) { - pSrcClone = pSrcBitmap->CloneConvert(FXDIB_8bppMask); - if (!pSrcClone) { - return FALSE; - } - } - if (pSrcBitmap->GetFormat() == FXDIB_Argb) { - srcOffset = 3; - } else { - srcOffset = 0; - } - } else { - if (pSrcBitmap->IsAlphaMask()) { - return FALSE; - } - if (pSrcBitmap->GetBPP() < 24) { - if (pSrcBitmap->IsCmykImage()) { - pSrcClone = pSrcBitmap->CloneConvert( - (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x20)); - } else { - pSrcClone = pSrcBitmap->CloneConvert( - (FXDIB_Format)((pSrcBitmap->GetFormat() & 0xff00) | 0x18)); - } - if (!pSrcClone) { - return FALSE; - } - } - srcOffset = g_ChannelOffset[srcChannel]; - } - if (destChannel == FXDIB_Alpha) { - if (IsAlphaMask()) { - if (!ConvertFormat(FXDIB_8bppMask)) { - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } - destOffset = 0; - } else { - destOffset = 0; - if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } - if (GetFormat() == FXDIB_Argb) { - destOffset = 3; - } - } - } else { - if (IsAlphaMask()) { - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } - if (GetBPP() < 24) { - if (HasAlpha()) { - if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb32)) { -#else - } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb)) { -#endif - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } - } - destOffset = g_ChannelOffset[destChannel]; - } - if (srcChannel == FXDIB_Alpha && pSrcClone->m_pAlphaMask) { - CFX_DIBitmap* pAlphaMask = pSrcClone->m_pAlphaMask; - if (pSrcClone->GetWidth() != m_Width || - pSrcClone->GetHeight() != m_Height) { - if (pAlphaMask) { - pAlphaMask = pAlphaMask->StretchTo(m_Width, m_Height); - if (!pAlphaMask) { - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } - } - } - if (pSrcClone != pSrcBitmap) { - pSrcClone->m_pAlphaMask = NULL; - delete pSrcClone; - } - pSrcClone = pAlphaMask; - srcOffset = 0; - } else if (pSrcClone->GetWidth() != m_Width || - pSrcClone->GetHeight() != m_Height) { - CFX_DIBitmap* pSrcMatched = pSrcClone->StretchTo(m_Width, m_Height); - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - if (!pSrcMatched) { - return FALSE; - } - pSrcClone = pSrcMatched; - } - if (destChannel == FXDIB_Alpha && m_pAlphaMask) { - pDst = m_pAlphaMask; - destOffset = 0; - } - int srcBytes = pSrcClone->GetBPP() / 8; - int destBytes = pDst->GetBPP() / 8; - for (int row = 0; row < m_Height; row++) { - uint8_t* dest_pos = (uint8_t*)pDst->GetScanline(row) + destOffset; - const uint8_t* src_pos = pSrcClone->GetScanline(row) + srcOffset; - for (int col = 0; col < m_Width; col++) { - *dest_pos = *src_pos; - dest_pos += destBytes; - src_pos += srcBytes; - } - } - if (pSrcClone != pSrcBitmap && pSrcClone != pSrcBitmap->m_pAlphaMask) { - delete pSrcClone; - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::LoadChannel(FXDIB_Channel destChannel, int value) { - if (!m_pBuffer) { - return FALSE; - } - int destOffset; - if (destChannel == FXDIB_Alpha) { - if (IsAlphaMask()) { - if (!ConvertFormat(FXDIB_8bppMask)) { - return FALSE; - } - destOffset = 0; - } else { - destOffset = 0; - if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { - return FALSE; - } - if (GetFormat() == FXDIB_Argb) { - destOffset = 3; - } - } - } else { - if (IsAlphaMask()) { - return FALSE; - } - if (GetBPP() < 24) { - if (HasAlpha()) { - if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb)) { - return FALSE; - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb)) { -#else - } else if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyk : FXDIB_Rgb32)) { -#endif - return FALSE; - } - } - destOffset = g_ChannelOffset[destChannel]; - } - int Bpp = GetBPP() / 8; - if (Bpp == 1) { - FXSYS_memset(m_pBuffer, value, m_Height * m_Pitch); - return TRUE; - } - if (destChannel == FXDIB_Alpha && m_pAlphaMask) { - FXSYS_memset(m_pAlphaMask->GetBuffer(), value, - m_pAlphaMask->GetHeight() * m_pAlphaMask->GetPitch()); - return TRUE; - } - for (int row = 0; row < m_Height; row++) { - uint8_t* scan_line = m_pBuffer + row * m_Pitch + destOffset; - for (int col = 0; col < m_Width; col++) { - *scan_line = value; - scan_line += Bpp; - } - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::MultiplyAlpha(const CFX_DIBSource* pSrcBitmap) { - if (!m_pBuffer) { - return FALSE; - } - ASSERT(pSrcBitmap->IsAlphaMask()); - if (!pSrcBitmap->IsAlphaMask()) { - return FALSE; - } - if (!IsAlphaMask() && !HasAlpha()) { - return LoadChannel(FXDIB_Alpha, pSrcBitmap, FXDIB_Alpha); - } - CFX_DIBitmap* pSrcClone = (CFX_DIBitmap*)pSrcBitmap; - if (pSrcBitmap->GetWidth() != m_Width || - pSrcBitmap->GetHeight() != m_Height) { - pSrcClone = pSrcBitmap->StretchTo(m_Width, m_Height); - if (!pSrcClone) { - return FALSE; - } - } - if (IsAlphaMask()) { - if (!ConvertFormat(FXDIB_8bppMask)) { - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } - for (int row = 0; row < m_Height; row++) { - uint8_t* dest_scan = m_pBuffer + m_Pitch * row; - uint8_t* src_scan = pSrcClone->m_pBuffer + pSrcClone->m_Pitch * row; - if (pSrcClone->GetBPP() == 1) { - for (int col = 0; col < m_Width; col++) { - if (!((1 << (7 - col % 8)) & src_scan[col / 8])) { - dest_scan[col] = 0; - } - } - } else { - for (int col = 0; col < m_Width; col++) { - *dest_scan = (*dest_scan) * src_scan[col] / 255; - dest_scan++; - } - } - } - } else { - if (GetFormat() == FXDIB_Argb) { - if (pSrcClone->GetBPP() == 1) { - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return FALSE; - } - for (int row = 0; row < m_Height; row++) { - uint8_t* dest_scan = m_pBuffer + m_Pitch * row + 3; - uint8_t* src_scan = pSrcClone->m_pBuffer + pSrcClone->m_Pitch * row; - for (int col = 0; col < m_Width; col++) { - *dest_scan = (*dest_scan) * src_scan[col] / 255; - dest_scan += 4; - } - } - } else { - m_pAlphaMask->MultiplyAlpha(pSrcClone); - } - } - if (pSrcClone != pSrcBitmap) { - delete pSrcClone; - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::GetGrayData(void* pIccTransform) { - if (!m_pBuffer) { - return FALSE; - } - switch (GetFormat()) { - case FXDIB_1bppRgb: { - if (!m_pPalette) { - return FALSE; - } - uint8_t gray[2]; - for (int i = 0; i < 2; i++) { - int r = (uint8_t)(m_pPalette[i] >> 16); - int g = (uint8_t)(m_pPalette[i] >> 8); - int b = (uint8_t)m_pPalette[i]; - gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); - } - CFX_DIBitmap* pMask = new CFX_DIBitmap; - if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { - delete pMask; - return FALSE; - } - FXSYS_memset(pMask->GetBuffer(), gray[0], pMask->GetPitch() * m_Height); - for (int row = 0; row < m_Height; row++) { - uint8_t* src_pos = m_pBuffer + row * m_Pitch; - uint8_t* dest_pos = (uint8_t*)pMask->GetScanline(row); - for (int col = 0; col < m_Width; col++) { - if (src_pos[col / 8] & (1 << (7 - col % 8))) { - *dest_pos = gray[1]; - } - dest_pos++; - } - } - TakeOver(pMask); - delete pMask; - break; - } - case FXDIB_8bppRgb: { - if (!m_pPalette) { - return FALSE; - } - uint8_t gray[256]; - for (int i = 0; i < 256; i++) { - int r = (uint8_t)(m_pPalette[i] >> 16); - int g = (uint8_t)(m_pPalette[i] >> 8); - int b = (uint8_t)m_pPalette[i]; - gray[i] = (uint8_t)FXRGB2GRAY(r, g, b); - } - CFX_DIBitmap* pMask = new CFX_DIBitmap; - if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { - delete pMask; - return FALSE; - } - for (int row = 0; row < m_Height; row++) { - uint8_t* dest_pos = pMask->GetBuffer() + row * pMask->GetPitch(); - uint8_t* src_pos = m_pBuffer + row * m_Pitch; - for (int col = 0; col < m_Width; col++) { - *dest_pos++ = gray[*src_pos++]; - } - } - TakeOver(pMask); - delete pMask; - break; - } - case FXDIB_Rgb: { - CFX_DIBitmap* pMask = new CFX_DIBitmap; - if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { - delete pMask; - return FALSE; - } - for (int row = 0; row < m_Height; row++) { - uint8_t* src_pos = m_pBuffer + row * m_Pitch; - uint8_t* dest_pos = pMask->GetBuffer() + row * pMask->GetPitch(); - for (int col = 0; col < m_Width; col++) { - *dest_pos++ = FXRGB2GRAY(src_pos[2], src_pos[1], *src_pos); - src_pos += 3; - } - } - TakeOver(pMask); - delete pMask; - break; - } - case FXDIB_Rgb32: { - CFX_DIBitmap* pMask = new CFX_DIBitmap; - if (!pMask->Create(m_Width, m_Height, FXDIB_8bppMask)) { - delete pMask; - return FALSE; - } - for (int row = 0; row < m_Height; row++) { - uint8_t* src_pos = m_pBuffer + row * m_Pitch; - uint8_t* dest_pos = pMask->GetBuffer() + row * pMask->GetPitch(); - for (int col = 0; col < m_Width; col++) { - *dest_pos++ = FXRGB2GRAY(src_pos[2], src_pos[1], *src_pos); - src_pos += 4; - } - } - TakeOver(pMask); - delete pMask; - break; - } - default: - return FALSE; - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::MultiplyAlpha(int alpha) { - if (!m_pBuffer) { - return FALSE; - } - switch (GetFormat()) { - case FXDIB_1bppMask: - if (!ConvertFormat(FXDIB_8bppMask)) { - return FALSE; - } - MultiplyAlpha(alpha); - break; - case FXDIB_8bppMask: { - for (int row = 0; row < m_Height; row++) { - uint8_t* scan_line = m_pBuffer + row * m_Pitch; - for (int col = 0; col < m_Width; col++) { - scan_line[col] = scan_line[col] * alpha / 255; - } - } - break; - } - case FXDIB_Argb: { - for (int row = 0; row < m_Height; row++) { - uint8_t* scan_line = m_pBuffer + row * m_Pitch + 3; - for (int col = 0; col < m_Width; col++) { - *scan_line = (*scan_line) * alpha / 255; - scan_line += 4; - } - } - break; - } - default: - if (HasAlpha()) { - m_pAlphaMask->MultiplyAlpha(alpha); - } else if (IsCmykImage()) { - if (!ConvertFormat((FXDIB_Format)(GetFormat() | 0x0200))) { - return FALSE; - } - m_pAlphaMask->MultiplyAlpha(alpha); - } else { - if (!ConvertFormat(FXDIB_Argb)) { - return FALSE; - } - MultiplyAlpha(alpha); - } - break; - } - return TRUE; -} -FX_DWORD CFX_DIBitmap::GetPixel(int x, int y) const { - if (!m_pBuffer) { - return 0; - } - uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; - switch (GetFormat()) { - case FXDIB_1bppMask: { - if ((*pos) & (1 << (7 - x % 8))) { - return 0xff000000; - } - return 0; - } - case FXDIB_1bppRgb: { - if ((*pos) & (1 << (7 - x % 8))) { - return m_pPalette ? m_pPalette[1] : 0xffffffff; - } - return m_pPalette ? m_pPalette[0] : 0xff000000; - } - case FXDIB_8bppMask: - return (*pos) << 24; - case FXDIB_8bppRgb: - return m_pPalette ? m_pPalette[*pos] : (0xff000000 | ((*pos) * 0x10101)); - case FXDIB_Rgb: - case FXDIB_Rgba: - case FXDIB_Rgb32: - return FXARGB_GETDIB(pos) | 0xff000000; - case FXDIB_Argb: - return FXARGB_GETDIB(pos); - default: - break; - } - return 0; -} -void CFX_DIBitmap::SetPixel(int x, int y, FX_DWORD color) { - if (!m_pBuffer) { - return; - } - if (x < 0 || x >= m_Width || y < 0 || y >= m_Height) { - return; - } - uint8_t* pos = m_pBuffer + y * m_Pitch + x * GetBPP() / 8; - switch (GetFormat()) { - case FXDIB_1bppMask: - if (color >> 24) { - *pos |= 1 << (7 - x % 8); - } else { - *pos &= ~(1 << (7 - x % 8)); - } - break; - case FXDIB_1bppRgb: - if (m_pPalette) { - if (color == m_pPalette[1]) { - *pos |= 1 << (7 - x % 8); - } else { - *pos &= ~(1 << (7 - x % 8)); - } - } else { - if (color == 0xffffffff) { - *pos |= 1 << (7 - x % 8); - } else { - *pos &= ~(1 << (7 - x % 8)); - } - } - break; - case FXDIB_8bppMask: - *pos = (uint8_t)(color >> 24); - break; - case FXDIB_8bppRgb: { - if (m_pPalette) { - for (int i = 0; i < 256; i++) { - if (m_pPalette[i] == color) { - *pos = (uint8_t)i; - return; - } - } - *pos = 0; - } else { - *pos = FXRGB2GRAY(FXARGB_R(color), FXARGB_G(color), FXARGB_B(color)); - } - break; - } - case FXDIB_Rgb: - case FXDIB_Rgb32: { - int alpha = FXARGB_A(color); - pos[0] = (FXARGB_B(color) * alpha + pos[0] * (255 - alpha)) / 255; - pos[1] = (FXARGB_G(color) * alpha + pos[1] * (255 - alpha)) / 255; - pos[2] = (FXARGB_R(color) * alpha + pos[2] * (255 - alpha)) / 255; - break; - } - case FXDIB_Rgba: { - pos[0] = FXARGB_B(color); - pos[1] = FXARGB_G(color); - pos[2] = FXARGB_R(color); - break; - } - case FXDIB_Argb: - FXARGB_SETDIB(pos, color); - break; - default: - break; - } -} -void CFX_DIBitmap::DownSampleScanline(int line, - uint8_t* dest_scan, - int dest_bpp, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const { - if (!m_pBuffer) { - return; - } - int src_Bpp = m_bpp / 8; - uint8_t* scanline = m_pBuffer + line * m_Pitch; - if (src_Bpp == 0) { - for (int i = 0; i < clip_width; i++) { - FX_DWORD dest_x = clip_left + i; - FX_DWORD src_x = dest_x * m_Width / dest_width; - if (bFlipX) { - src_x = m_Width - src_x - 1; - } - src_x %= m_Width; - dest_scan[i] = (scanline[src_x / 8] & (1 << (7 - src_x % 8))) ? 255 : 0; - } - } else if (src_Bpp == 1) { - for (int i = 0; i < clip_width; i++) { - FX_DWORD dest_x = clip_left + i; - FX_DWORD src_x = dest_x * m_Width / dest_width; - if (bFlipX) { - src_x = m_Width - src_x - 1; - } - src_x %= m_Width; - int dest_pos = i; - if (m_pPalette) { - if (!IsCmykImage()) { - dest_pos *= 3; - FX_ARGB argb = m_pPalette[scanline[src_x]]; - dest_scan[dest_pos] = FXARGB_B(argb); - dest_scan[dest_pos + 1] = FXARGB_G(argb); - dest_scan[dest_pos + 2] = FXARGB_R(argb); - } else { - dest_pos *= 4; - FX_CMYK cmyk = m_pPalette[scanline[src_x]]; - dest_scan[dest_pos] = FXSYS_GetCValue(cmyk); - dest_scan[dest_pos + 1] = FXSYS_GetMValue(cmyk); - dest_scan[dest_pos + 2] = FXSYS_GetYValue(cmyk); - dest_scan[dest_pos + 3] = FXSYS_GetKValue(cmyk); - } - } else { - dest_scan[dest_pos] = scanline[src_x]; - } - } - } else { - for (int i = 0; i < clip_width; i++) { - FX_DWORD dest_x = clip_left + i; - FX_DWORD src_x = - bFlipX ? (m_Width - dest_x * m_Width / dest_width - 1) * src_Bpp - : (dest_x * m_Width / dest_width) * src_Bpp; - src_x %= m_Width * src_Bpp; - int dest_pos = i * src_Bpp; - for (int b = 0; b < src_Bpp; b++) { - dest_scan[dest_pos + b] = scanline[src_x + b]; - } - } - } -} -FX_BOOL CFX_DIBitmap::ConvertColorScale(FX_DWORD forecolor, - FX_DWORD backcolor) { - ASSERT(!IsAlphaMask()); - if (!m_pBuffer || IsAlphaMask()) { - return FALSE; - } - int fc, fm, fy, fk, bc, bm, by, bk; - int fr, fg, fb, br, bg, bb; - FX_BOOL isCmykImage = IsCmykImage(); - if (isCmykImage) { - fc = FXSYS_GetCValue(forecolor); - fm = FXSYS_GetMValue(forecolor); - fy = FXSYS_GetYValue(forecolor); - fk = FXSYS_GetKValue(forecolor); - bc = FXSYS_GetCValue(backcolor); - bm = FXSYS_GetMValue(backcolor); - by = FXSYS_GetYValue(backcolor); - bk = FXSYS_GetKValue(backcolor); - } else { - fr = FXSYS_GetRValue(forecolor); - fg = FXSYS_GetGValue(forecolor); - fb = FXSYS_GetBValue(forecolor); - br = FXSYS_GetRValue(backcolor); - bg = FXSYS_GetGValue(backcolor); - bb = FXSYS_GetBValue(backcolor); - } - if (m_bpp <= 8) { - if (isCmykImage) { - if (forecolor == 0xff && backcolor == 0 && !m_pPalette) { - return TRUE; - } - } else if (forecolor == 0 && backcolor == 0xffffff && !m_pPalette) { - return TRUE; - } - if (!m_pPalette) { - BuildPalette(); - } - int size = 1 << m_bpp; - if (isCmykImage) { - for (int i = 0; i < size; i++) { - uint8_t b, g, r; - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(m_pPalette[i]), - FXSYS_GetMValue(m_pPalette[i]), - FXSYS_GetYValue(m_pPalette[i]), - FXSYS_GetKValue(m_pPalette[i]), r, g, b); - int gray = 255 - FXRGB2GRAY(r, g, b); - m_pPalette[i] = CmykEncode( - bc + (fc - bc) * gray / 255, bm + (fm - bm) * gray / 255, - by + (fy - by) * gray / 255, bk + (fk - bk) * gray / 255); - } - } else { - for (int i = 0; i < size; i++) { - int gray = FXRGB2GRAY(FXARGB_R(m_pPalette[i]), FXARGB_G(m_pPalette[i]), - FXARGB_B(m_pPalette[i])); - m_pPalette[i] = FXARGB_MAKE(0xff, br + (fr - br) * gray / 255, - bg + (fg - bg) * gray / 255, - bb + (fb - bb) * gray / 255); - } - } - return TRUE; - } - if (isCmykImage) { - if (forecolor == 0xff && backcolor == 0x00) { - for (int row = 0; row < m_Height; row++) { - uint8_t* scanline = m_pBuffer + row * m_Pitch; - for (int col = 0; col < m_Width; col++) { - uint8_t b, g, r; - AdobeCMYK_to_sRGB1(scanline[0], scanline[1], scanline[2], scanline[3], - r, g, b); - *scanline++ = 0; - *scanline++ = 0; - *scanline++ = 0; - *scanline++ = 255 - FXRGB2GRAY(r, g, b); - } - } - return TRUE; - } - } else if (forecolor == 0 && backcolor == 0xffffff) { - for (int row = 0; row < m_Height; row++) { - uint8_t* scanline = m_pBuffer + row * m_Pitch; - int gap = m_bpp / 8 - 2; - for (int col = 0; col < m_Width; col++) { - int gray = FXRGB2GRAY(scanline[2], scanline[1], scanline[0]); - *scanline++ = gray; - *scanline++ = gray; - *scanline = gray; - scanline += gap; - } - } - return TRUE; - } - if (isCmykImage) { - for (int row = 0; row < m_Height; row++) { - uint8_t* scanline = m_pBuffer + row * m_Pitch; - for (int col = 0; col < m_Width; col++) { - uint8_t b, g, r; - AdobeCMYK_to_sRGB1(scanline[0], scanline[1], scanline[2], scanline[3], - r, g, b); - int gray = 255 - FXRGB2GRAY(r, g, b); - *scanline++ = bc + (fc - bc) * gray / 255; - *scanline++ = bm + (fm - bm) * gray / 255; - *scanline++ = by + (fy - by) * gray / 255; - *scanline++ = bk + (fk - bk) * gray / 255; - } - } - } else { - for (int row = 0; row < m_Height; row++) { - uint8_t* scanline = m_pBuffer + row * m_Pitch; - int gap = m_bpp / 8 - 2; - for (int col = 0; col < m_Width; col++) { - int gray = FXRGB2GRAY(scanline[2], scanline[1], scanline[0]); - *scanline++ = bb + (fb - bb) * gray / 255; - *scanline++ = bg + (fg - bg) * gray / 255; - *scanline = br + (fr - br) * gray / 255; - scanline += gap; - } - } - } - return TRUE; -} -FX_BOOL CFX_DIBitmap::DitherFS(const FX_DWORD* pPalette, - int pal_size, - const FX_RECT* pRect) { - if (!m_pBuffer) { - return FALSE; - } - if (m_bpp != 8 && m_pPalette && m_AlphaFlag != 0) { - return FALSE; - } - if (m_Width < 4 && m_Height < 4) { - return FALSE; - } - FX_RECT rect(0, 0, m_Width, m_Height); - if (pRect) { - rect.Intersect(*pRect); - } - uint8_t translate[256]; - for (int i = 0; i < 256; i++) { - int err2 = 65536; - for (int j = 0; j < pal_size; j++) { - uint8_t entry = (uint8_t)pPalette[j]; - int err = (int)entry - i; - if (err * err < err2) { - err2 = err * err; - translate[i] = entry; - } - } - } - for (int row = rect.top; row < rect.bottom; row++) { - uint8_t* scan = m_pBuffer + row * m_Pitch; - uint8_t* next_scan = m_pBuffer + (row + 1) * m_Pitch; - for (int col = rect.left; col < rect.right; col++) { - int src_pixel = scan[col]; - int dest_pixel = translate[src_pixel]; - scan[col] = (uint8_t)dest_pixel; - int error = -dest_pixel + src_pixel; - if (col < rect.right - 1) { - int src = scan[col + 1]; - src += error * 7 / 16; - if (src > 255) { - scan[col + 1] = 255; - } else if (src < 0) { - scan[col + 1] = 0; - } else { - scan[col + 1] = src; - } - } - if (col < rect.right - 1 && row < rect.bottom - 1) { - int src = next_scan[col + 1]; - src += error * 1 / 16; - if (src > 255) { - next_scan[col + 1] = 255; - } else if (src < 0) { - next_scan[col + 1] = 0; - } else { - next_scan[col + 1] = src; - } - } - if (row < rect.bottom - 1) { - int src = next_scan[col]; - src += error * 5 / 16; - if (src > 255) { - next_scan[col] = 255; - } else if (src < 0) { - next_scan[col] = 0; - } else { - next_scan[col] = src; - } - } - if (col > rect.left && row < rect.bottom - 1) { - int src = next_scan[col - 1]; - src += error * 3 / 16; - if (src > 255) { - next_scan[col - 1] = 255; - } else if (src < 0) { - next_scan[col - 1] = 0; - } else { - next_scan[col - 1] = src; - } - } - } - } - return TRUE; -} -CFX_DIBitmap* CFX_DIBSource::FlipImage(FX_BOOL bXFlip, FX_BOOL bYFlip) const { - CFX_DIBitmap* pFlipped = new CFX_DIBitmap; - if (!pFlipped->Create(m_Width, m_Height, GetFormat())) { - delete pFlipped; - return NULL; - } - pFlipped->CopyPalette(m_pPalette); - uint8_t* pDestBuffer = pFlipped->GetBuffer(); - int Bpp = m_bpp / 8; - for (int row = 0; row < m_Height; row++) { - const uint8_t* src_scan = GetScanline(row); - uint8_t* dest_scan = - pDestBuffer + m_Pitch * (bYFlip ? (m_Height - row - 1) : row); - if (!bXFlip) { - FXSYS_memcpy(dest_scan, src_scan, m_Pitch); - continue; - } - if (m_bpp == 1) { - FXSYS_memset(dest_scan, 0, m_Pitch); - for (int col = 0; col < m_Width; col++) - if (src_scan[col / 8] & (1 << (7 - col % 8))) { - int dest_col = m_Width - col - 1; - dest_scan[dest_col / 8] |= (1 << (7 - dest_col % 8)); - } - } else { - dest_scan += (m_Width - 1) * Bpp; - if (Bpp == 1) { - for (int col = 0; col < m_Width; col++) { - *dest_scan = *src_scan; - dest_scan--; - src_scan++; - } - } else if (Bpp == 3) { - for (int col = 0; col < m_Width; col++) { - dest_scan[0] = src_scan[0]; - dest_scan[1] = src_scan[1]; - dest_scan[2] = src_scan[2]; - dest_scan -= 3; - src_scan += 3; - } - } else { - ASSERT(Bpp == 4); - for (int col = 0; col < m_Width; col++) { - *(FX_DWORD*)dest_scan = *(FX_DWORD*)src_scan; - dest_scan -= 4; - src_scan += 4; - } - } - } - } - if (m_pAlphaMask) { - pDestBuffer = pFlipped->m_pAlphaMask->GetBuffer(); - FX_DWORD dest_pitch = pFlipped->m_pAlphaMask->GetPitch(); - for (int row = 0; row < m_Height; row++) { - const uint8_t* src_scan = m_pAlphaMask->GetScanline(row); - uint8_t* dest_scan = - pDestBuffer + dest_pitch * (bYFlip ? (m_Height - row - 1) : row); - if (!bXFlip) { - FXSYS_memcpy(dest_scan, src_scan, dest_pitch); - continue; - } - dest_scan += (m_Width - 1); - for (int col = 0; col < m_Width; col++) { - *dest_scan = *src_scan; - dest_scan--; - src_scan++; - } - } - } - return pFlipped; -} -CFX_DIBExtractor::CFX_DIBExtractor(const CFX_DIBSource* pSrc) { - m_pBitmap = NULL; - if (pSrc->GetBuffer()) { - m_pBitmap = new CFX_DIBitmap; - if (!m_pBitmap->Create(pSrc->GetWidth(), pSrc->GetHeight(), - pSrc->GetFormat(), pSrc->GetBuffer())) { - delete m_pBitmap; - m_pBitmap = NULL; - return; - } - m_pBitmap->CopyPalette(pSrc->GetPalette()); - m_pBitmap->CopyAlphaMask(pSrc->m_pAlphaMask); - } else { - m_pBitmap = pSrc->Clone(); - } -} -CFX_DIBExtractor::~CFX_DIBExtractor() { - delete m_pBitmap; -} -CFX_FilteredDIB::CFX_FilteredDIB() { - m_pScanline = NULL; - m_pSrc = NULL; -} -CFX_FilteredDIB::~CFX_FilteredDIB() { - if (m_bAutoDropSrc) { - delete m_pSrc; - } - FX_Free(m_pScanline); -} -void CFX_FilteredDIB::LoadSrc(const CFX_DIBSource* pSrc, FX_BOOL bAutoDropSrc) { - m_pSrc = pSrc; - m_bAutoDropSrc = bAutoDropSrc; - m_Width = pSrc->GetWidth(); - m_Height = pSrc->GetHeight(); - FXDIB_Format format = GetDestFormat(); - m_bpp = (uint8_t)format; - m_AlphaFlag = (uint8_t)(format >> 8); - m_Pitch = (m_Width * (format & 0xff) + 31) / 32 * 4; - m_pPalette = GetDestPalette(); - m_pScanline = FX_Alloc(uint8_t, m_Pitch); -} -const uint8_t* CFX_FilteredDIB::GetScanline(int line) const { - TranslateScanline(m_pScanline, m_pSrc->GetScanline(line)); - return m_pScanline; -} -void CFX_FilteredDIB::DownSampleScanline(int line, - uint8_t* dest_scan, - int dest_bpp, - int dest_width, - FX_BOOL bFlipX, - int clip_left, - int clip_width) const { - m_pSrc->DownSampleScanline(line, dest_scan, dest_bpp, dest_width, bFlipX, - clip_left, clip_width); - TranslateDownSamples(dest_scan, dest_scan, clip_width, dest_bpp); -} -CFX_ImageRenderer::CFX_ImageRenderer() { - m_Status = 0; - m_pTransformer = NULL; - m_bRgbByteOrder = FALSE; - m_BlendType = FXDIB_BLEND_NORMAL; -} -CFX_ImageRenderer::~CFX_ImageRenderer() { - delete m_pTransformer; -} -FX_BOOL CFX_ImageRenderer::Start(CFX_DIBitmap* pDevice, - const CFX_ClipRgn* pClipRgn, - const CFX_DIBSource* pSource, - int bitmap_alpha, - FX_DWORD mask_color, - const CFX_Matrix* pMatrix, - FX_DWORD dib_flags, - FX_BOOL bRgbByteOrder, - int alpha_flag, - void* pIccTransform, - int blend_type) { - m_Matrix = *pMatrix; - CFX_FloatRect image_rect_f = m_Matrix.GetUnitRect(); - FX_RECT image_rect = image_rect_f.GetOutterRect(); - m_ClipBox = pClipRgn ? pClipRgn->GetBox() : FX_RECT(0, 0, pDevice->GetWidth(), - pDevice->GetHeight()); - m_ClipBox.Intersect(image_rect); - if (m_ClipBox.IsEmpty()) { - return FALSE; - } - m_pDevice = pDevice; - m_pClipRgn = pClipRgn; - m_MaskColor = mask_color; - m_BitmapAlpha = bitmap_alpha; - m_Matrix = *pMatrix; - m_Flags = dib_flags; - m_AlphaFlag = alpha_flag; - m_pIccTransform = pIccTransform; - m_bRgbByteOrder = bRgbByteOrder; - m_BlendType = blend_type; - FX_BOOL ret = TRUE; - if ((FXSYS_fabs(m_Matrix.b) >= 0.5f || m_Matrix.a == 0) || - (FXSYS_fabs(m_Matrix.c) >= 0.5f || m_Matrix.d == 0)) { - if (FXSYS_fabs(m_Matrix.a) < FXSYS_fabs(m_Matrix.b) / 20 && - FXSYS_fabs(m_Matrix.d) < FXSYS_fabs(m_Matrix.c) / 20 && - FXSYS_fabs(m_Matrix.a) < 0.5f && FXSYS_fabs(m_Matrix.d) < 0.5f) { - int dest_width = image_rect.Width(); - int dest_height = image_rect.Height(); - FX_RECT bitmap_clip = m_ClipBox; - bitmap_clip.Offset(-image_rect.left, -image_rect.top); - bitmap_clip = FXDIB_SwapClipBox(bitmap_clip, dest_width, dest_height, - m_Matrix.c > 0, m_Matrix.b < 0); - m_Composer.Compose(pDevice, pClipRgn, bitmap_alpha, mask_color, m_ClipBox, - TRUE, m_Matrix.c > 0, m_Matrix.b < 0, m_bRgbByteOrder, - alpha_flag, pIccTransform, m_BlendType); - if (!m_Stretcher.Start(&m_Composer, pSource, dest_height, dest_width, - bitmap_clip, dib_flags)) { - return FALSE; - } - m_Status = 1; - return TRUE; - } - m_Status = 2; - m_pTransformer = new CFX_ImageTransformer; - m_pTransformer->Start(pSource, &m_Matrix, dib_flags, &m_ClipBox); - return TRUE; - } - int dest_width = image_rect.Width(); - if (m_Matrix.a < 0) { - dest_width = -dest_width; - } - int dest_height = image_rect.Height(); - if (m_Matrix.d > 0) { - dest_height = -dest_height; - } - if (dest_width == 0 || dest_height == 0) { - return FALSE; - } - FX_RECT bitmap_clip = m_ClipBox; - bitmap_clip.Offset(-image_rect.left, -image_rect.top); - m_Composer.Compose(pDevice, pClipRgn, bitmap_alpha, mask_color, m_ClipBox, - FALSE, FALSE, FALSE, m_bRgbByteOrder, alpha_flag, - pIccTransform, m_BlendType); - m_Status = 1; - ret = m_Stretcher.Start(&m_Composer, pSource, dest_width, dest_height, - bitmap_clip, dib_flags); - return ret; -} -FX_BOOL CFX_ImageRenderer::Continue(IFX_Pause* pPause) { - if (m_Status == 1) { - return m_Stretcher.Continue(pPause); - } - if (m_Status == 2) { - if (m_pTransformer->Continue(pPause)) { - return TRUE; - } - CFX_DIBitmap* pBitmap = m_pTransformer->m_Storer.Detach(); - if (!pBitmap) { - return FALSE; - } - if (!pBitmap->GetBuffer()) { - delete pBitmap; - return FALSE; - } - if (pBitmap->IsAlphaMask()) { - if (m_BitmapAlpha != 255) { - if (m_AlphaFlag >> 8) { - m_AlphaFlag = - (((uint8_t)((m_AlphaFlag & 0xff) * m_BitmapAlpha / 255)) | - ((m_AlphaFlag >> 8) << 8)); - } else { - m_MaskColor = FXARGB_MUL_ALPHA(m_MaskColor, m_BitmapAlpha); - } - } - m_pDevice->CompositeMask(m_pTransformer->m_ResultLeft, - m_pTransformer->m_ResultTop, pBitmap->GetWidth(), - pBitmap->GetHeight(), pBitmap, m_MaskColor, 0, 0, - m_BlendType, m_pClipRgn, m_bRgbByteOrder, - m_AlphaFlag, m_pIccTransform); - } else { - if (m_BitmapAlpha != 255) { - pBitmap->MultiplyAlpha(m_BitmapAlpha); - } - m_pDevice->CompositeBitmap( - m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop, - pBitmap->GetWidth(), pBitmap->GetHeight(), pBitmap, 0, 0, m_BlendType, - m_pClipRgn, m_bRgbByteOrder, m_pIccTransform); - } - delete pBitmap; - return FALSE; - } - return FALSE; -} -CFX_BitmapStorer::CFX_BitmapStorer() { - m_pBitmap = NULL; -} -CFX_BitmapStorer::~CFX_BitmapStorer() { - delete m_pBitmap; -} -CFX_DIBitmap* CFX_BitmapStorer::Detach() { - CFX_DIBitmap* pBitmap = m_pBitmap; - m_pBitmap = NULL; - return pBitmap; -} -void CFX_BitmapStorer::Replace(CFX_DIBitmap* pBitmap) { - delete m_pBitmap; - m_pBitmap = pBitmap; -} -void CFX_BitmapStorer::ComposeScanline(int line, - const uint8_t* scanline, - const uint8_t* scan_extra_alpha) { - uint8_t* dest_buf = (uint8_t*)m_pBitmap->GetScanline(line); - uint8_t* dest_alpha_buf = - m_pBitmap->m_pAlphaMask - ? (uint8_t*)m_pBitmap->m_pAlphaMask->GetScanline(line) - : NULL; - if (dest_buf) { - FXSYS_memcpy(dest_buf, scanline, m_pBitmap->GetPitch()); - } - if (dest_alpha_buf) { - FXSYS_memcpy(dest_alpha_buf, scan_extra_alpha, - m_pBitmap->m_pAlphaMask->GetPitch()); - } -} -FX_BOOL CFX_BitmapStorer::SetInfo(int width, - int height, - FXDIB_Format src_format, - FX_DWORD* pSrcPalette) { - m_pBitmap = new CFX_DIBitmap; - if (!m_pBitmap->Create(width, height, src_format)) { - delete m_pBitmap; - m_pBitmap = NULL; - return FALSE; - } - if (pSrcPalette) { - m_pBitmap->CopyPalette(pSrcPalette); - } - return TRUE; -} diff --git a/core/src/fxge/dib/fx_dib_transform.cpp b/core/src/fxge/dib/fx_dib_transform.cpp deleted file mode 100644 index 01c37d207e..0000000000 --- a/core/src/fxge/dib/fx_dib_transform.cpp +++ /dev/null @@ -1,948 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/dib/dib_int.h" - -#include "core/include/fxge/fx_dib.h" - -namespace { - -uint8_t bilinear_interpol(const uint8_t* buf, - int row_offset_l, - int row_offset_r, - int src_col_l, - int src_col_r, - int res_x, - int res_y, - int bpp, - int c_offset) { - int i_resx = 255 - res_x; - int col_bpp_l = src_col_l * bpp; - int col_bpp_r = src_col_r * bpp; - const uint8_t* buf_u = buf + row_offset_l + c_offset; - const uint8_t* buf_d = buf + row_offset_r + c_offset; - const uint8_t* src_pos0 = buf_u + col_bpp_l; - const uint8_t* src_pos1 = buf_u + col_bpp_r; - const uint8_t* src_pos2 = buf_d + col_bpp_l; - const uint8_t* src_pos3 = buf_d + col_bpp_r; - uint8_t r_pos_0 = (*src_pos0 * i_resx + *src_pos1 * res_x) >> 8; - uint8_t r_pos_1 = (*src_pos2 * i_resx + *src_pos3 * res_x) >> 8; - return (r_pos_0 * (255 - res_y) + r_pos_1 * res_y) >> 8; -} - -uint8_t bicubic_interpol(const uint8_t* buf, - int pitch, - int pos_pixel[], - int u_w[], - int v_w[], - int res_x, - int res_y, - int bpp, - int c_offset) { - int s_result = 0; - for (int i = 0; i < 4; i++) { - int a_result = 0; - for (int j = 0; j < 4; j++) { - a_result += u_w[j] * (*(uint8_t*)(buf + pos_pixel[i + 4] * pitch + - pos_pixel[j] * bpp + c_offset)); - } - s_result += a_result * v_w[i]; - } - s_result >>= 16; - return (uint8_t)(s_result < 0 ? 0 : s_result > 255 ? 255 : s_result); -} - -void bicubic_get_pos_weight(int pos_pixel[], - int u_w[], - int v_w[], - int src_col_l, - int src_row_l, - int res_x, - int res_y, - int stretch_width, - int stretch_height) { - pos_pixel[0] = src_col_l - 1; - pos_pixel[1] = src_col_l; - pos_pixel[2] = src_col_l + 1; - pos_pixel[3] = src_col_l + 2; - pos_pixel[4] = src_row_l - 1; - pos_pixel[5] = src_row_l; - pos_pixel[6] = src_row_l + 1; - pos_pixel[7] = src_row_l + 2; - for (int i = 0; i < 4; i++) { - if (pos_pixel[i] < 0) { - pos_pixel[i] = 0; - } - if (pos_pixel[i] >= stretch_width) { - pos_pixel[i] = stretch_width - 1; - } - if (pos_pixel[i + 4] < 0) { - pos_pixel[i + 4] = 0; - } - if (pos_pixel[i + 4] >= stretch_height) { - pos_pixel[i + 4] = stretch_height - 1; - } - } - u_w[0] = SDP_Table[256 + res_x]; - u_w[1] = SDP_Table[res_x]; - u_w[2] = SDP_Table[256 - res_x]; - u_w[3] = SDP_Table[512 - res_x]; - v_w[0] = SDP_Table[256 + res_y]; - v_w[1] = SDP_Table[res_y]; - v_w[2] = SDP_Table[256 - res_y]; - v_w[3] = SDP_Table[512 - res_y]; -} - -FXDIB_Format GetTransformedFormat(const CFX_DIBSource* pDrc) { - FXDIB_Format format = pDrc->GetFormat(); - if (pDrc->IsAlphaMask()) { - format = FXDIB_8bppMask; - } else if (format >= 1025) { - format = FXDIB_Cmyka; - } else if (format <= 32 || format == FXDIB_Argb) { - format = FXDIB_Argb; - } else { - format = FXDIB_Rgba; - } - return format; -} - -} // namespace - -const int16_t SDP_Table[513] = { - 256, 256, 256, 256, 256, 256, 256, 256, 256, 255, 255, 255, 255, 255, 255, - 254, 254, 254, 254, 253, 253, 253, 252, 252, 252, 251, 251, 251, 250, 250, - 249, 249, 249, 248, 248, 247, 247, 246, 246, 245, 244, 244, 243, 243, 242, - 242, 241, 240, 240, 239, 238, 238, 237, 236, 236, 235, 234, 233, 233, 232, - 231, 230, 230, 229, 228, 227, 226, 226, 225, 224, 223, 222, 221, 220, 219, - 218, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 205, - 204, 203, 202, 201, 200, 199, 198, 196, 195, 194, 193, 192, 191, 190, 189, - 188, 186, 185, 184, 183, 182, 181, 179, 178, 177, 176, 175, 173, 172, 171, - 170, 169, 167, 166, 165, 164, 162, 161, 160, 159, 157, 156, 155, 154, 152, - 151, 150, 149, 147, 146, 145, 143, 142, 141, 140, 138, 137, 136, 134, 133, - 132, 130, 129, 128, 126, 125, 124, 122, 121, 120, 119, 117, 116, 115, 113, - 112, 111, 109, 108, 107, 105, 104, 103, 101, 100, 99, 97, 96, 95, 93, - 92, 91, 89, 88, 87, 85, 84, 83, 81, 80, 79, 77, 76, 75, 73, - 72, 71, 69, 68, 67, 66, 64, 63, 62, 60, 59, 58, 57, 55, 54, - 53, 52, 50, 49, 48, 47, 45, 44, 43, 42, 40, 39, 38, 37, 36, - 34, 33, 32, 31, 30, 28, 27, 26, 25, 24, 23, 21, 20, 19, 18, - 17, 16, 15, 14, 13, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, - 1, 0, 0, -1, -2, -3, -4, -5, -6, -7, -7, -8, -9, -10, -11, - -12, -12, -13, -14, -15, -15, -16, -17, -17, -18, -19, -19, -20, -21, -21, - -22, -22, -23, -24, -24, -25, -25, -26, -26, -27, -27, -27, -28, -28, -29, - -29, -30, -30, -30, -31, -31, -31, -32, -32, -32, -33, -33, -33, -33, -34, - -34, -34, -34, -35, -35, -35, -35, -35, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37, -37, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -35, -35, -35, -35, -35, -35, -34, -34, -34, -34, -34, -33, -33, - -33, -33, -33, -32, -32, -32, -32, -31, -31, -31, -31, -30, -30, -30, -30, - -29, -29, -29, -29, -28, -28, -28, -27, -27, -27, -27, -26, -26, -26, -25, - -25, -25, -24, -24, -24, -23, -23, -23, -22, -22, -22, -22, -21, -21, -21, - -20, -20, -20, -19, -19, -19, -18, -18, -18, -17, -17, -17, -16, -16, -16, - -15, -15, -15, -14, -14, -14, -13, -13, -13, -12, -12, -12, -11, -11, -11, - -10, -10, -10, -9, -9, -9, -9, -8, -8, -8, -7, -7, -7, -7, -6, - -6, -6, -6, -5, -5, -5, -5, -4, -4, -4, -4, -3, -3, -3, -3, - -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -}; - -class CFX_BilinearMatrix : public CPDF_FixedMatrix { - public: - CFX_BilinearMatrix(const CFX_Matrix& src, int bits) - : CPDF_FixedMatrix(src, bits) {} - inline void Transform(int x, - int y, - int& x1, - int& y1, - int& res_x, - int& res_y) { - x1 = a * x + c * y + e + base / 2; - y1 = b * x + d * y + f + base / 2; - res_x = x1 % base; - res_y = y1 % base; - if (res_x < 0 && res_x > -base) { - res_x = base + res_x; - } - if (res_y < 0 && res_x > -base) { - res_y = base + res_y; - } - x1 /= base; - y1 /= base; - } -}; -CFX_DIBitmap* CFX_DIBSource::SwapXY(FX_BOOL bXFlip, - FX_BOOL bYFlip, - const FX_RECT* pDestClip) const { - FX_RECT dest_clip(0, 0, m_Height, m_Width); - if (pDestClip) { - dest_clip.Intersect(*pDestClip); - } - if (dest_clip.IsEmpty()) { - return NULL; - } - CFX_DIBitmap* pTransBitmap = new CFX_DIBitmap; - int result_height = dest_clip.Height(), result_width = dest_clip.Width(); - if (!pTransBitmap->Create(result_width, result_height, GetFormat())) { - delete pTransBitmap; - return NULL; - } - pTransBitmap->CopyPalette(m_pPalette); - int dest_pitch = pTransBitmap->GetPitch(); - uint8_t* dest_buf = pTransBitmap->GetBuffer(); - int row_start = bXFlip ? m_Height - dest_clip.right : dest_clip.left; - int row_end = bXFlip ? m_Height - dest_clip.left : dest_clip.right; - int col_start = bYFlip ? m_Width - dest_clip.bottom : dest_clip.top; - int col_end = bYFlip ? m_Width - dest_clip.top : dest_clip.bottom; - if (GetBPP() == 1) { - FXSYS_memset(dest_buf, 0xff, dest_pitch * result_height); - for (int row = row_start; row < row_end; row++) { - const uint8_t* src_scan = GetScanline(row); - int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - - dest_clip.left; - uint8_t* dest_scan = dest_buf; - if (bYFlip) { - dest_scan += (result_height - 1) * dest_pitch; - } - int dest_step = bYFlip ? -dest_pitch : dest_pitch; - for (int col = col_start; col < col_end; col++) { - if (!(src_scan[col / 8] & (1 << (7 - col % 8)))) { - dest_scan[dest_col / 8] &= ~(1 << (7 - dest_col % 8)); - } - dest_scan += dest_step; - } - } - } else { - int nBytes = GetBPP() / 8; - int dest_step = bYFlip ? -dest_pitch : dest_pitch; - if (nBytes == 3) { - dest_step -= 2; - } - for (int row = row_start; row < row_end; row++) { - int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - - dest_clip.left; - uint8_t* dest_scan = dest_buf + dest_col * nBytes; - if (bYFlip) { - dest_scan += (result_height - 1) * dest_pitch; - } - if (nBytes == 4) { - FX_DWORD* src_scan = (FX_DWORD*)GetScanline(row) + col_start; - for (int col = col_start; col < col_end; col++) { - *(FX_DWORD*)dest_scan = *src_scan++; - dest_scan += dest_step; - } - } else { - const uint8_t* src_scan = GetScanline(row) + col_start * nBytes; - if (nBytes == 1) { - for (int col = col_start; col < col_end; col++) { - *dest_scan = *src_scan++; - dest_scan += dest_step; - } - } else { - for (int col = col_start; col < col_end; col++) { - *dest_scan++ = *src_scan++; - *dest_scan++ = *src_scan++; - *dest_scan = *src_scan++; - dest_scan += dest_step; - } - } - } - } - } - if (m_pAlphaMask) { - dest_pitch = pTransBitmap->m_pAlphaMask->GetPitch(); - dest_buf = pTransBitmap->m_pAlphaMask->GetBuffer(); - int dest_step = bYFlip ? -dest_pitch : dest_pitch; - for (int row = row_start; row < row_end; row++) { - int dest_col = (bXFlip ? dest_clip.right - (row - row_start) - 1 : row) - - dest_clip.left; - uint8_t* dest_scan = dest_buf + dest_col; - if (bYFlip) { - dest_scan += (result_height - 1) * dest_pitch; - } - const uint8_t* src_scan = m_pAlphaMask->GetScanline(row) + col_start; - for (int col = col_start; col < col_end; col++) { - *dest_scan = *src_scan++; - dest_scan += dest_step; - } - } - } - return pTransBitmap; -} -#define FIX16_005 0.05f -FX_RECT FXDIB_SwapClipBox(FX_RECT& clip, - int width, - int height, - FX_BOOL bFlipX, - FX_BOOL bFlipY) { - FX_RECT rect; - if (bFlipY) { - rect.left = height - clip.top; - rect.right = height - clip.bottom; - } else { - rect.left = clip.top; - rect.right = clip.bottom; - } - if (bFlipX) { - rect.top = width - clip.left; - rect.bottom = width - clip.right; - } else { - rect.top = clip.left; - rect.bottom = clip.right; - } - rect.Normalize(); - return rect; -} -CFX_DIBitmap* CFX_DIBSource::TransformTo(const CFX_Matrix* pDestMatrix, - int& result_left, - int& result_top, - FX_DWORD flags, - const FX_RECT* pDestClip) const { - CFX_ImageTransformer transformer; - transformer.Start(this, pDestMatrix, flags, pDestClip); - transformer.Continue(NULL); - result_left = transformer.m_ResultLeft; - result_top = transformer.m_ResultTop; - CFX_DIBitmap* pTransformed = transformer.m_Storer.Detach(); - return pTransformed; -} -CFX_DIBitmap* CFX_DIBSource::StretchTo(int dest_width, - int dest_height, - FX_DWORD flags, - const FX_RECT* pClip) const { - FX_RECT clip_rect(0, 0, FXSYS_abs(dest_width), FXSYS_abs(dest_height)); - if (pClip) { - clip_rect.Intersect(*pClip); - } - if (clip_rect.IsEmpty()) { - return NULL; - } - if (dest_width == m_Width && dest_height == m_Height) { - return Clone(&clip_rect); - } - CFX_ImageStretcher stretcher; - CFX_BitmapStorer storer; - if (stretcher.Start(&storer, this, dest_width, dest_height, clip_rect, - flags)) { - stretcher.Continue(NULL); - } - return storer.Detach(); -} -CFX_ImageTransformer::CFX_ImageTransformer() { - m_Status = 0; - m_pMatrix = NULL; -} -CFX_ImageTransformer::~CFX_ImageTransformer() {} -FX_BOOL CFX_ImageTransformer::Start(const CFX_DIBSource* pSrc, - const CFX_Matrix* pDestMatrix, - int flags, - const FX_RECT* pDestClip) { - m_pMatrix = (CFX_Matrix*)pDestMatrix; - CFX_FloatRect unit_rect = pDestMatrix->GetUnitRect(); - FX_RECT result_rect = unit_rect.GetClosestRect(); - FX_RECT result_clip = result_rect; - if (pDestClip) { - result_clip.Intersect(*pDestClip); - } - if (result_clip.IsEmpty()) { - return FALSE; - } - m_ResultLeft = result_clip.left; - m_ResultTop = result_clip.top; - m_ResultWidth = result_clip.Width(); - m_ResultHeight = result_clip.Height(); - m_Flags = flags; - if (FXSYS_fabs(pDestMatrix->a) < FXSYS_fabs(pDestMatrix->b) / 20 && - FXSYS_fabs(pDestMatrix->d) < FXSYS_fabs(pDestMatrix->c) / 20 && - FXSYS_fabs(pDestMatrix->a) < 0.5f && FXSYS_fabs(pDestMatrix->d) < 0.5f) { - int dest_width = result_rect.Width(); - int dest_height = result_rect.Height(); - result_clip.Offset(-result_rect.left, -result_rect.top); - result_clip = FXDIB_SwapClipBox(result_clip, dest_width, dest_height, - pDestMatrix->c > 0, pDestMatrix->b < 0); - m_Stretcher.Start(&m_Storer, pSrc, dest_height, dest_width, result_clip, - flags); - m_Status = 1; - return TRUE; - } - if (FXSYS_fabs(pDestMatrix->b) < FIX16_005 && - FXSYS_fabs(pDestMatrix->c) < FIX16_005) { - int dest_width = pDestMatrix->a > 0 ? (int)FXSYS_ceil(pDestMatrix->a) - : (int)FXSYS_floor(pDestMatrix->a); - int dest_height = pDestMatrix->d > 0 ? (int)-FXSYS_ceil(pDestMatrix->d) - : (int)-FXSYS_floor(pDestMatrix->d); - result_clip.Offset(-result_rect.left, -result_rect.top); - m_Stretcher.Start(&m_Storer, pSrc, dest_width, dest_height, result_clip, - flags); - m_Status = 2; - return TRUE; - } - int stretch_width = - (int)FXSYS_ceil(FXSYS_sqrt2(pDestMatrix->a, pDestMatrix->b)); - int stretch_height = - (int)FXSYS_ceil(FXSYS_sqrt2(pDestMatrix->c, pDestMatrix->d)); - CFX_Matrix stretch2dest(1.0f, 0.0f, 0.0f, -1.0f, 0.0f, - (FX_FLOAT)(stretch_height)); - stretch2dest.Concat( - pDestMatrix->a / stretch_width, pDestMatrix->b / stretch_width, - pDestMatrix->c / stretch_height, pDestMatrix->d / stretch_height, - pDestMatrix->e, pDestMatrix->f); - m_dest2stretch.SetReverse(stretch2dest); - CFX_FloatRect clip_rect_f(result_clip); - clip_rect_f.Transform(&m_dest2stretch); - m_StretchClip = clip_rect_f.GetOutterRect(); - m_StretchClip.Intersect(0, 0, stretch_width, stretch_height); - m_Stretcher.Start(&m_Storer, pSrc, stretch_width, stretch_height, - m_StretchClip, flags); - m_Status = 3; - return TRUE; -} - -FX_BOOL CFX_ImageTransformer::Continue(IFX_Pause* pPause) { - if (m_Status == 1) { - if (m_Stretcher.Continue(pPause)) { - return TRUE; - } - if (m_Storer.GetBitmap()) { - m_Storer.Replace( - m_Storer.GetBitmap()->SwapXY(m_pMatrix->c > 0, m_pMatrix->b < 0)); - } - return FALSE; - } - if (m_Status == 2) { - return m_Stretcher.Continue(pPause); - } - if (m_Status != 3) { - return FALSE; - } - if (m_Stretcher.Continue(pPause)) { - return TRUE; - } - int stretch_width = m_StretchClip.Width(); - int stretch_height = m_StretchClip.Height(); - if (!m_Storer.GetBitmap()) { - return FALSE; - } - const uint8_t* stretch_buf = m_Storer.GetBitmap()->GetBuffer(); - const uint8_t* stretch_buf_mask = NULL; - if (m_Storer.GetBitmap()->m_pAlphaMask) { - stretch_buf_mask = m_Storer.GetBitmap()->m_pAlphaMask->GetBuffer(); - } - int stretch_pitch = m_Storer.GetBitmap()->GetPitch(); - CFX_DIBitmap* pTransformed = new CFX_DIBitmap; - FXDIB_Format transformF = GetTransformedFormat(m_Stretcher.m_pSource); - if (!pTransformed->Create(m_ResultWidth, m_ResultHeight, transformF)) { - delete pTransformed; - return FALSE; - } - pTransformed->Clear(0); - if (pTransformed->m_pAlphaMask) { - pTransformed->m_pAlphaMask->Clear(0); - } - CFX_Matrix result2stretch(1.0f, 0.0f, 0.0f, 1.0f, (FX_FLOAT)(m_ResultLeft), - (FX_FLOAT)(m_ResultTop)); - result2stretch.Concat(m_dest2stretch); - result2stretch.TranslateI(-m_StretchClip.left, -m_StretchClip.top); - if (!stretch_buf_mask && pTransformed->m_pAlphaMask) { - pTransformed->m_pAlphaMask->Clear(0xff000000); - } else if (pTransformed->m_pAlphaMask) { - int stretch_pitch_mask = m_Storer.GetBitmap()->m_pAlphaMask->GetPitch(); - if (!(m_Flags & FXDIB_DOWNSAMPLE) && !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos_mask = - (uint8_t*)pTransformed->m_pAlphaMask->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && - src_row_l <= stretch_height) { - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - int src_col_r = src_col_l + 1; - int src_row_r = src_row_l + 1; - if (src_col_r == stretch_width) { - src_col_r--; - } - if (src_row_r == stretch_height) { - src_row_r--; - } - int row_offset_l = src_row_l * stretch_pitch_mask; - int row_offset_r = src_row_r * stretch_pitch_mask; - *dest_pos_mask = - bilinear_interpol(stretch_buf_mask, row_offset_l, row_offset_r, - src_col_l, src_col_r, res_x, res_y, 1, 0); - } - dest_pos_mask++; - } - } - } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos_mask = - (uint8_t*)pTransformed->m_pAlphaMask->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && - src_row_l <= stretch_height) { - int pos_pixel[8]; - int u_w[4], v_w[4]; - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, - res_x, res_y, stretch_width, stretch_height); - *dest_pos_mask = - bicubic_interpol(stretch_buf_mask, stretch_pitch_mask, - pos_pixel, u_w, v_w, res_x, res_y, 1, 0); - } - dest_pos_mask++; - } - } - } else { - CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos_mask = - (uint8_t*)pTransformed->m_pAlphaMask->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col, src_row; - result2stretch_fix.Transform(col, row, src_col, src_row); - if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && - src_row <= stretch_height) { - if (src_col == stretch_width) { - src_col--; - } - if (src_row == stretch_height) { - src_row--; - } - *dest_pos_mask = - stretch_buf_mask[src_row * stretch_pitch_mask + src_col]; - } - dest_pos_mask++; - } - } - } - } - if (m_Storer.GetBitmap()->IsAlphaMask()) { - if (!(m_Flags & FXDIB_DOWNSAMPLE) && !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_scan = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && - src_row_l <= stretch_height) { - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - int src_col_r = src_col_l + 1; - int src_row_r = src_row_l + 1; - if (src_col_r == stretch_width) { - src_col_r--; - } - if (src_row_r == stretch_height) { - src_row_r--; - } - int row_offset_l = src_row_l * stretch_pitch; - int row_offset_r = src_row_r * stretch_pitch; - *dest_scan = - bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, - src_col_l, src_col_r, res_x, res_y, 1, 0); - } - dest_scan++; - } - } - } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_scan = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && src_row_l >= 0 && - src_row_l <= stretch_height) { - int pos_pixel[8]; - int u_w[4], v_w[4]; - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, - res_x, res_y, stretch_width, stretch_height); - *dest_scan = bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, - u_w, v_w, res_x, res_y, 1, 0); - } - dest_scan++; - } - } - } else { - CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_scan = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col, src_row; - result2stretch_fix.Transform(col, row, src_col, src_row); - if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && - src_row <= stretch_height) { - if (src_col == stretch_width) { - src_col--; - } - if (src_row == stretch_height) { - src_row--; - } - const uint8_t* src_pixel = - stretch_buf + stretch_pitch * src_row + src_col; - *dest_scan = *src_pixel; - } - dest_scan++; - } - } - } - } else { - int Bpp = m_Storer.GetBitmap()->GetBPP() / 8; - int destBpp = pTransformed->GetBPP() / 8; - if (Bpp == 1) { - FX_DWORD argb[256]; - FX_ARGB* pPal = m_Storer.GetBitmap()->GetPalette(); - if (pPal) { - for (int i = 0; i < 256; i++) { - argb[i] = pPal[i]; - } - } else { - if (m_Storer.GetBitmap()->IsCmykImage()) { - for (int i = 0; i < 256; i++) { - argb[i] = 255 - i; - } - } else { - for (int i = 0; i < 256; i++) { - argb[i] = 0xff000000 | (i * 0x010101); - } - } - } - if (!(m_Flags & FXDIB_DOWNSAMPLE) && - !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && - src_row_l >= 0 && src_row_l <= stretch_height) { - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - int src_col_r = src_col_l + 1; - int src_row_r = src_row_l + 1; - if (src_col_r == stretch_width) { - src_col_r--; - } - if (src_row_r == stretch_height) { - src_row_r--; - } - int row_offset_l = src_row_l * stretch_pitch; - int row_offset_r = src_row_r * stretch_pitch; - FX_DWORD r_bgra_cmyk = argb[bilinear_interpol( - stretch_buf, row_offset_l, row_offset_r, src_col_l, src_col_r, - res_x, res_y, 1, 0)]; - if (transformF == FXDIB_Rgba) { - dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); - dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); - dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); - } else { - *(FX_DWORD*)dest_pos = r_bgra_cmyk; - } - } - dest_pos += destBpp; - } - } - } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && - src_row_l >= 0 && src_row_l <= stretch_height) { - int pos_pixel[8]; - int u_w[4], v_w[4]; - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, - res_x, res_y, stretch_width, - stretch_height); - FX_DWORD r_bgra_cmyk = - argb[bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, - u_w, v_w, res_x, res_y, 1, 0)]; - if (transformF == FXDIB_Rgba) { - dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); - dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); - dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); - } else { - *(FX_DWORD*)dest_pos = r_bgra_cmyk; - } - } - dest_pos += destBpp; - } - } - } else { - CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col, src_row; - result2stretch_fix.Transform(col, row, src_col, src_row); - if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && - src_row <= stretch_height) { - if (src_col == stretch_width) { - src_col--; - } - if (src_row == stretch_height) { - src_row--; - } - FX_DWORD r_bgra_cmyk = - argb[stretch_buf[src_row * stretch_pitch + src_col]]; - if (transformF == FXDIB_Rgba) { - dest_pos[0] = (uint8_t)(r_bgra_cmyk >> 24); - dest_pos[1] = (uint8_t)(r_bgra_cmyk >> 16); - dest_pos[2] = (uint8_t)(r_bgra_cmyk >> 8); - } else { - *(FX_DWORD*)dest_pos = r_bgra_cmyk; - } - } - dest_pos += destBpp; - } - } - } - } else { - FX_BOOL bHasAlpha = m_Storer.GetBitmap()->HasAlpha(); - int destBpp = pTransformed->GetBPP() / 8; - if (!(m_Flags & FXDIB_DOWNSAMPLE) && - !(m_Flags & FXDIB_BICUBIC_INTERPOL)) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y, r_pos_k_r = 0; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && - src_row_l >= 0 && src_row_l <= stretch_height) { - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - int src_col_r = src_col_l + 1; - int src_row_r = src_row_l + 1; - if (src_col_r == stretch_width) { - src_col_r--; - } - if (src_row_r == stretch_height) { - src_row_r--; - } - int row_offset_l = src_row_l * stretch_pitch; - int row_offset_r = src_row_r * stretch_pitch; - uint8_t r_pos_red_y_r = - bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, - src_col_l, src_col_r, res_x, res_y, Bpp, 2); - uint8_t r_pos_green_m_r = - bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, - src_col_l, src_col_r, res_x, res_y, Bpp, 1); - uint8_t r_pos_blue_c_r = - bilinear_interpol(stretch_buf, row_offset_l, row_offset_r, - src_col_l, src_col_r, res_x, res_y, Bpp, 0); - if (bHasAlpha) { - if (transformF != FXDIB_Argb) { - if (transformF == FXDIB_Rgba) { - dest_pos[0] = r_pos_blue_c_r; - dest_pos[1] = r_pos_green_m_r; - dest_pos[2] = r_pos_red_y_r; - } else { - r_pos_k_r = bilinear_interpol( - stretch_buf, row_offset_l, row_offset_r, src_col_l, - src_col_r, res_x, res_y, Bpp, 3); - *(FX_DWORD*)dest_pos = - FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, - r_pos_red_y_r, r_pos_k_r)); - } - } else { - uint8_t r_pos_a_r = bilinear_interpol( - stretch_buf, row_offset_l, row_offset_r, src_col_l, - src_col_r, res_x, res_y, Bpp, 3); - *(FX_DWORD*)dest_pos = FXARGB_TODIB( - FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, - r_pos_blue_c_r)); - } - } else { - r_pos_k_r = 0xff; - if (transformF == FXDIB_Cmyka) { - r_pos_k_r = bilinear_interpol( - stretch_buf, row_offset_l, row_offset_r, src_col_l, - src_col_r, res_x, res_y, Bpp, 3); - *(FX_DWORD*)dest_pos = - FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, - r_pos_red_y_r, r_pos_k_r)); - } else { - *(FX_DWORD*)dest_pos = FXARGB_TODIB( - FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, - r_pos_blue_c_r)); - } - } - } - dest_pos += destBpp; - } - } - } else if (m_Flags & FXDIB_BICUBIC_INTERPOL) { - CFX_BilinearMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col_l, src_row_l, res_x, res_y, r_pos_k_r = 0; - result2stretch_fix.Transform(col, row, src_col_l, src_row_l, res_x, - res_y); - if (src_col_l >= 0 && src_col_l <= stretch_width && - src_row_l >= 0 && src_row_l <= stretch_height) { - int pos_pixel[8]; - int u_w[4], v_w[4]; - if (src_col_l == stretch_width) { - src_col_l--; - } - if (src_row_l == stretch_height) { - src_row_l--; - } - bicubic_get_pos_weight(pos_pixel, u_w, v_w, src_col_l, src_row_l, - res_x, res_y, stretch_width, - stretch_height); - uint8_t r_pos_red_y_r = - bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, u_w, - v_w, res_x, res_y, Bpp, 2); - uint8_t r_pos_green_m_r = - bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, u_w, - v_w, res_x, res_y, Bpp, 1); - uint8_t r_pos_blue_c_r = - bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, u_w, - v_w, res_x, res_y, Bpp, 0); - if (bHasAlpha) { - if (transformF != FXDIB_Argb) { - if (transformF == FXDIB_Rgba) { - dest_pos[0] = r_pos_blue_c_r; - dest_pos[1] = r_pos_green_m_r; - dest_pos[2] = r_pos_red_y_r; - } else { - r_pos_k_r = - bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, - u_w, v_w, res_x, res_y, Bpp, 3); - *(FX_DWORD*)dest_pos = - FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, - r_pos_red_y_r, r_pos_k_r)); - } - } else { - uint8_t r_pos_a_r = - bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, - u_w, v_w, res_x, res_y, Bpp, 3); - *(FX_DWORD*)dest_pos = FXARGB_TODIB( - FXARGB_MAKE(r_pos_a_r, r_pos_red_y_r, r_pos_green_m_r, - r_pos_blue_c_r)); - } - } else { - r_pos_k_r = 0xff; - if (transformF == FXDIB_Cmyka) { - r_pos_k_r = - bicubic_interpol(stretch_buf, stretch_pitch, pos_pixel, - u_w, v_w, res_x, res_y, Bpp, 3); - *(FX_DWORD*)dest_pos = - FXCMYK_TODIB(CmykEncode(r_pos_blue_c_r, r_pos_green_m_r, - r_pos_red_y_r, r_pos_k_r)); - } else { - *(FX_DWORD*)dest_pos = FXARGB_TODIB( - FXARGB_MAKE(r_pos_k_r, r_pos_red_y_r, r_pos_green_m_r, - r_pos_blue_c_r)); - } - } - } - dest_pos += destBpp; - } - } - } else { - CPDF_FixedMatrix result2stretch_fix(result2stretch, 8); - for (int row = 0; row < m_ResultHeight; row++) { - uint8_t* dest_pos = (uint8_t*)pTransformed->GetScanline(row); - for (int col = 0; col < m_ResultWidth; col++) { - int src_col, src_row; - result2stretch_fix.Transform(col, row, src_col, src_row); - if (src_col >= 0 && src_col <= stretch_width && src_row >= 0 && - src_row <= stretch_height) { - if (src_col == stretch_width) { - src_col--; - } - if (src_row == stretch_height) { - src_row--; - } - const uint8_t* src_pos = - stretch_buf + src_row * stretch_pitch + src_col * Bpp; - if (bHasAlpha) { - if (transformF != FXDIB_Argb) { - if (transformF == FXDIB_Rgba) { - dest_pos[0] = src_pos[0]; - dest_pos[1] = src_pos[1]; - dest_pos[2] = src_pos[2]; - } else { - *(FX_DWORD*)dest_pos = FXCMYK_TODIB(CmykEncode( - src_pos[0], src_pos[1], src_pos[2], src_pos[3])); - } - } else { - *(FX_DWORD*)dest_pos = FXARGB_TODIB(FXARGB_MAKE( - src_pos[3], src_pos[2], src_pos[1], src_pos[0])); - } - } else { - if (transformF == FXDIB_Cmyka) { - *(FX_DWORD*)dest_pos = FXCMYK_TODIB(CmykEncode( - src_pos[0], src_pos[1], src_pos[2], src_pos[3])); - } else { - *(FX_DWORD*)dest_pos = FXARGB_TODIB( - FXARGB_MAKE(0xff, src_pos[2], src_pos[1], src_pos[0])); - } - } - } - dest_pos += destBpp; - } - } - } - } - } - m_Storer.Replace(pTransformed); - return FALSE; -} diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitDingbats.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitDingbats.cpp deleted file mode 100644 index 47950979a3..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitDingbats.cpp +++ /dev/null @@ -1,2469 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitDingbatsFontData[29513] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x11, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x44, 0x69, 0x6e, 0x67, 0x62, 0x61, 0x74, 0x73, 0x4f, 0x54, - 0x46, 0x0, 0x1, 0x1, 0x1, 0x25, 0xf8, 0x10, 0x0, 0xf8, 0xe4, 0x1, - 0xf8, 0xe5, 0x2, 0xf8, 0xe5, 0x3, 0xf8, 0xe6, 0x4, 0x8a, 0xfb, 0x38, - 0xfa, 0x69, 0xf9, 0xce, 0x5, 0x1c, 0x4, 0xdc, 0xf, 0x1c, 0x4, 0xe3, - 0x11, 0xa7, 0x1c, 0x6e, 0x3f, 0x12, 0x0, 0xcc, 0x2, 0x0, 0x1, 0x0, - 0x3, 0x0, 0x6, 0x0, 0xa, 0x0, 0xe, 0x0, 0x12, 0x0, 0x16, 0x0, - 0x1a, 0x0, 0x1e, 0x0, 0x22, 0x0, 0x26, 0x0, 0x2a, 0x0, 0x2e, 0x0, - 0x31, 0x0, 0x35, 0x0, 0x39, 0x0, 0x3d, 0x0, 0x41, 0x0, 0x45, 0x0, - 0x49, 0x0, 0x4c, 0x0, 0x50, 0x0, 0x54, 0x0, 0x58, 0x0, 0x5c, 0x0, - 0x60, 0x0, 0x64, 0x0, 0x68, 0x0, 0x6c, 0x0, 0x70, 0x0, 0x74, 0x0, - 0x77, 0x0, 0x7b, 0x0, 0x7f, 0x0, 0x83, 0x0, 0x87, 0x0, 0x8b, 0x0, - 0x8f, 0x0, 0x93, 0x0, 0x97, 0x0, 0x9b, 0x0, 0x9f, 0x0, 0xa2, 0x0, - 0xa6, 0x0, 0xaa, 0x0, 0xae, 0x0, 0xb2, 0x0, 0xb6, 0x0, 0xba, 0x0, - 0xbe, 0x0, 0xc2, 0x0, 0xc6, 0x0, 0xca, 0x0, 0xcd, 0x0, 0xd1, 0x0, - 0xd5, 0x0, 0xd9, 0x0, 0xdd, 0x0, 0xe1, 0x0, 0xe5, 0x0, 0xe9, 0x0, - 0xed, 0x0, 0xf1, 0x0, 0xf5, 0x0, 0xf8, 0x0, 0xfc, 0x1, 0x0, 0x1, - 0x4, 0x1, 0x8, 0x1, 0xc, 0x1, 0x10, 0x1, 0x14, 0x1, 0x18, 0x1, - 0x1c, 0x1, 0x20, 0x1, 0x23, 0x1, 0x27, 0x1, 0x2b, 0x1, 0x2f, 0x1, - 0x33, 0x1, 0x37, 0x1, 0x3b, 0x1, 0x3f, 0x1, 0x43, 0x1, 0x47, 0x1, - 0x4b, 0x1, 0x4e, 0x1, 0x52, 0x1, 0x56, 0x1, 0x5a, 0x1, 0x5e, 0x1, - 0x62, 0x1, 0x66, 0x1, 0x6a, 0x1, 0x6e, 0x1, 0x72, 0x1, 0x76, 0x1, - 0x79, 0x1, 0x7d, 0x1, 0x81, 0x1, 0x85, 0x1, 0x89, 0x1, 0x8d, 0x1, - 0x91, 0x1, 0x95, 0x1, 0x99, 0x1, 0x9d, 0x1, 0xa1, 0x1, 0xa3, 0x1, - 0xa6, 0x1, 0xaa, 0x1, 0xae, 0x1, 0xb2, 0x1, 0xb6, 0x1, 0xba, 0x1, - 0xbe, 0x1, 0xc2, 0x1, 0xc5, 0x1, 0xc8, 0x1, 0xcb, 0x1, 0xce, 0x1, - 0xd1, 0x1, 0xd4, 0x1, 0xd7, 0x1, 0xda, 0x1, 0xdd, 0x1, 0xdf, 0x1, - 0xe2, 0x1, 0xe5, 0x1, 0xe8, 0x1, 0xeb, 0x1, 0xee, 0x1, 0xf1, 0x1, - 0xf4, 0x1, 0xf7, 0x1, 0xfa, 0x1, 0xfd, 0x1, 0xff, 0x2, 0x2, 0x2, - 0x5, 0x2, 0x8, 0x2, 0xb, 0x2, 0xe, 0x2, 0x11, 0x2, 0x14, 0x2, - 0x17, 0x2, 0x1a, 0x2, 0x1d, 0x2, 0x1f, 0x2, 0x22, 0x2, 0x25, 0x2, - 0x28, 0x2, 0x2b, 0x2, 0x2e, 0x2, 0x31, 0x2, 0x34, 0x2, 0x37, 0x2, - 0x3a, 0x2, 0x3d, 0x2, 0x3f, 0x2, 0x42, 0x2, 0x45, 0x2, 0x48, 0x2, - 0x4b, 0x2, 0x4e, 0x2, 0x51, 0x2, 0x54, 0x2, 0x57, 0x2, 0x5a, 0x2, - 0x5d, 0x2, 0x5f, 0x2, 0x62, 0x2, 0x65, 0x2, 0x68, 0x2, 0x6b, 0x2, - 0x6e, 0x2, 0x71, 0x2, 0x74, 0x2, 0x77, 0x2, 0x7a, 0x2, 0x7d, 0x2, - 0x7f, 0x2, 0x82, 0x2, 0x85, 0x2, 0x88, 0x2, 0x8b, 0x2, 0x8e, 0x2, - 0x91, 0x2, 0x94, 0x2, 0x97, 0x2, 0x9a, 0x2, 0x9c, 0x2, 0x9f, 0x2, - 0xa2, 0x2, 0xa5, 0x2, 0xa8, 0x2, 0xab, 0x2, 0xae, 0x2, 0xb1, 0x2, - 0xb4, 0x2, 0xb7, 0x2, 0xba, 0x2, 0xe4, 0x2, 0xf6, 0x2, 0xfc, 0x61, - 0x31, 0x61, 0x31, 0x30, 0x61, 0x31, 0x30, 0x30, 0x61, 0x31, 0x30, 0x31, - 0x61, 0x31, 0x30, 0x32, 0x61, 0x31, 0x30, 0x33, 0x61, 0x31, 0x30, 0x34, - 0x61, 0x31, 0x30, 0x35, 0x61, 0x31, 0x30, 0x36, 0x61, 0x31, 0x30, 0x37, - 0x61, 0x31, 0x30, 0x38, 0x61, 0x31, 0x30, 0x39, 0x61, 0x31, 0x31, 0x61, - 0x31, 0x31, 0x30, 0x61, 0x31, 0x31, 0x31, 0x61, 0x31, 0x31, 0x32, 0x61, - 0x31, 0x31, 0x37, 0x61, 0x31, 0x31, 0x38, 0x61, 0x31, 0x31, 0x39, 0x61, - 0x31, 0x32, 0x61, 0x31, 0x32, 0x30, 0x61, 0x31, 0x32, 0x31, 0x61, 0x31, - 0x32, 0x32, 0x61, 0x31, 0x32, 0x33, 0x61, 0x31, 0x32, 0x34, 0x61, 0x31, - 0x32, 0x35, 0x61, 0x31, 0x32, 0x36, 0x61, 0x31, 0x32, 0x37, 0x61, 0x31, - 0x32, 0x38, 0x61, 0x31, 0x32, 0x39, 0x61, 0x31, 0x33, 0x61, 0x31, 0x33, - 0x30, 0x61, 0x31, 0x33, 0x31, 0x61, 0x31, 0x33, 0x32, 0x61, 0x31, 0x33, - 0x33, 0x61, 0x31, 0x33, 0x34, 0x61, 0x31, 0x33, 0x35, 0x61, 0x31, 0x33, - 0x36, 0x61, 0x31, 0x33, 0x37, 0x61, 0x31, 0x33, 0x38, 0x61, 0x31, 0x33, - 0x39, 0x61, 0x31, 0x34, 0x61, 0x31, 0x34, 0x30, 0x61, 0x31, 0x34, 0x31, - 0x61, 0x31, 0x34, 0x32, 0x61, 0x31, 0x34, 0x33, 0x61, 0x31, 0x34, 0x34, - 0x61, 0x31, 0x34, 0x35, 0x61, 0x31, 0x34, 0x36, 0x61, 0x31, 0x34, 0x37, - 0x61, 0x31, 0x34, 0x38, 0x61, 0x31, 0x34, 0x39, 0x61, 0x31, 0x35, 0x61, - 0x31, 0x35, 0x30, 0x61, 0x31, 0x35, 0x31, 0x61, 0x31, 0x35, 0x32, 0x61, - 0x31, 0x35, 0x33, 0x61, 0x31, 0x35, 0x34, 0x61, 0x31, 0x35, 0x35, 0x61, - 0x31, 0x35, 0x36, 0x61, 0x31, 0x35, 0x37, 0x61, 0x31, 0x35, 0x38, 0x61, - 0x31, 0x35, 0x39, 0x61, 0x31, 0x36, 0x61, 0x31, 0x36, 0x30, 0x61, 0x31, - 0x36, 0x31, 0x61, 0x31, 0x36, 0x32, 0x61, 0x31, 0x36, 0x33, 0x61, 0x31, - 0x36, 0x34, 0x61, 0x31, 0x36, 0x35, 0x61, 0x31, 0x36, 0x36, 0x61, 0x31, - 0x36, 0x37, 0x61, 0x31, 0x36, 0x38, 0x61, 0x31, 0x36, 0x39, 0x61, 0x31, - 0x37, 0x61, 0x31, 0x37, 0x30, 0x61, 0x31, 0x37, 0x31, 0x61, 0x31, 0x37, - 0x32, 0x61, 0x31, 0x37, 0x33, 0x61, 0x31, 0x37, 0x34, 0x61, 0x31, 0x37, - 0x35, 0x61, 0x31, 0x37, 0x36, 0x61, 0x31, 0x37, 0x37, 0x61, 0x31, 0x37, - 0x38, 0x61, 0x31, 0x37, 0x39, 0x61, 0x31, 0x38, 0x61, 0x31, 0x38, 0x30, - 0x61, 0x31, 0x38, 0x31, 0x61, 0x31, 0x38, 0x32, 0x61, 0x31, 0x38, 0x33, - 0x61, 0x31, 0x38, 0x34, 0x61, 0x31, 0x38, 0x35, 0x61, 0x31, 0x38, 0x36, - 0x61, 0x31, 0x38, 0x37, 0x61, 0x31, 0x38, 0x38, 0x61, 0x31, 0x38, 0x39, - 0x61, 0x31, 0x39, 0x61, 0x31, 0x39, 0x30, 0x61, 0x31, 0x39, 0x31, 0x61, - 0x31, 0x39, 0x32, 0x61, 0x31, 0x39, 0x33, 0x61, 0x31, 0x39, 0x34, 0x61, - 0x31, 0x39, 0x35, 0x61, 0x31, 0x39, 0x36, 0x61, 0x31, 0x39, 0x37, 0x61, - 0x31, 0x39, 0x38, 0x61, 0x31, 0x39, 0x39, 0x61, 0x32, 0x61, 0x32, 0x30, - 0x61, 0x32, 0x30, 0x30, 0x61, 0x32, 0x30, 0x31, 0x61, 0x32, 0x30, 0x32, - 0x61, 0x32, 0x30, 0x33, 0x61, 0x32, 0x30, 0x34, 0x61, 0x32, 0x30, 0x35, - 0x61, 0x32, 0x30, 0x36, 0x61, 0x32, 0x31, 0x61, 0x32, 0x32, 0x61, 0x32, - 0x33, 0x61, 0x32, 0x34, 0x61, 0x32, 0x35, 0x61, 0x32, 0x36, 0x61, 0x32, - 0x37, 0x61, 0x32, 0x38, 0x61, 0x32, 0x39, 0x61, 0x33, 0x61, 0x33, 0x30, - 0x61, 0x33, 0x31, 0x61, 0x33, 0x32, 0x61, 0x33, 0x33, 0x61, 0x33, 0x34, - 0x61, 0x33, 0x35, 0x61, 0x33, 0x36, 0x61, 0x33, 0x37, 0x61, 0x33, 0x38, - 0x61, 0x33, 0x39, 0x61, 0x34, 0x61, 0x34, 0x30, 0x61, 0x34, 0x31, 0x61, - 0x34, 0x32, 0x61, 0x34, 0x33, 0x61, 0x34, 0x34, 0x61, 0x34, 0x35, 0x61, - 0x34, 0x36, 0x61, 0x34, 0x37, 0x61, 0x34, 0x38, 0x61, 0x34, 0x39, 0x61, - 0x35, 0x61, 0x35, 0x30, 0x61, 0x35, 0x31, 0x61, 0x35, 0x32, 0x61, 0x35, - 0x33, 0x61, 0x35, 0x34, 0x61, 0x35, 0x35, 0x61, 0x35, 0x36, 0x61, 0x35, - 0x37, 0x61, 0x35, 0x38, 0x61, 0x35, 0x39, 0x61, 0x36, 0x61, 0x36, 0x30, - 0x61, 0x36, 0x31, 0x61, 0x36, 0x32, 0x61, 0x36, 0x33, 0x61, 0x36, 0x34, - 0x61, 0x36, 0x35, 0x61, 0x36, 0x36, 0x61, 0x36, 0x37, 0x61, 0x36, 0x38, - 0x61, 0x36, 0x39, 0x61, 0x37, 0x61, 0x37, 0x30, 0x61, 0x37, 0x31, 0x61, - 0x37, 0x32, 0x61, 0x37, 0x33, 0x61, 0x37, 0x34, 0x61, 0x37, 0x35, 0x61, - 0x37, 0x36, 0x61, 0x37, 0x37, 0x61, 0x37, 0x38, 0x61, 0x37, 0x39, 0x61, - 0x38, 0x61, 0x38, 0x31, 0x61, 0x38, 0x32, 0x61, 0x38, 0x33, 0x61, 0x38, - 0x34, 0x61, 0x38, 0x35, 0x61, 0x38, 0x36, 0x61, 0x38, 0x37, 0x61, 0x38, - 0x38, 0x61, 0x38, 0x39, 0x61, 0x39, 0x61, 0x39, 0x30, 0x61, 0x39, 0x31, - 0x61, 0x39, 0x32, 0x61, 0x39, 0x33, 0x61, 0x39, 0x34, 0x61, 0x39, 0x35, - 0x61, 0x39, 0x36, 0x61, 0x39, 0x37, 0x61, 0x39, 0x38, 0x61, 0x39, 0x39, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, - 0x44, 0x69, 0x6e, 0x67, 0x62, 0x61, 0x74, 0x73, 0x20, 0x4f, 0x54, 0x46, - 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x0, 0x0, 0x1, 0x1, 0x87, 0xc8, - 0x0, 0x1, 0x0, 0x0, 0xcb, 0x2, 0x0, 0x1, 0x0, 0x4, 0x1, 0x3, - 0x1, 0x8d, 0x1, 0xfa, 0x2, 0x4a, 0x2, 0x95, 0x2, 0xe3, 0x3, 0x25, - 0x3, 0x71, 0x3, 0xc9, 0x4, 0xe0, 0x6, 0x2f, 0x6, 0x9f, 0x7, 0xcc, - 0x8, 0x9, 0x8, 0x4e, 0x8, 0xce, 0x9, 0x5d, 0xb, 0x1d, 0xc, 0xf8, - 0xe, 0x27, 0xe, 0x74, 0xe, 0xe7, 0xf, 0x55, 0xf, 0xa7, 0x10, 0x36, - 0x10, 0x90, 0x10, 0xde, 0x11, 0x71, 0x12, 0x22, 0x12, 0xaa, 0x14, 0x21, - 0x14, 0x5e, 0x14, 0xca, 0x15, 0x6f, 0x15, 0xce, 0x16, 0x5e, 0x16, 0xe9, - 0x17, 0x2d, 0x17, 0xa2, 0x18, 0x1c, 0x18, 0xaa, 0x1a, 0x1f, 0x1a, 0x45, - 0x1a, 0x95, 0x1a, 0xfe, 0x1b, 0x34, 0x1b, 0x91, 0x1c, 0xa, 0x1c, 0x3e, - 0x1c, 0xbf, 0x1d, 0x35, 0x1d, 0x97, 0x1d, 0xe3, 0x1e, 0x1, 0x1e, 0x56, - 0x1e, 0xbc, 0x1e, 0xfa, 0x1f, 0x45, 0x1f, 0xa3, 0x1f, 0xcd, 0x20, 0x42, - 0x20, 0xa9, 0x21, 0x14, 0x21, 0x57, 0x21, 0x87, 0x21, 0xb7, 0x21, 0xcc, - 0x22, 0x15, 0x22, 0x5f, 0x22, 0x8f, 0x23, 0x15, 0x23, 0x69, 0x23, 0x8f, - 0x23, 0xb6, 0x24, 0x5f, 0x24, 0xa1, 0x24, 0xf7, 0x25, 0x18, 0x25, 0x2b, - 0x25, 0x40, 0x25, 0x72, 0x25, 0xa2, 0x25, 0xc4, 0x25, 0xf4, 0x26, 0x38, - 0x26, 0xa7, 0x26, 0xfc, 0x27, 0x3c, 0x27, 0x82, 0x27, 0xc8, 0x28, 0x22, - 0x28, 0x67, 0x28, 0xca, 0x29, 0x3f, 0x29, 0xa5, 0x29, 0xcb, 0x2a, 0x28, - 0x2a, 0x4d, 0x2a, 0x81, 0x2a, 0xb0, 0x2a, 0xf3, 0x2b, 0x4e, 0x2b, 0xbc, - 0x2b, 0xec, 0x2c, 0x47, 0x2c, 0xb5, 0x2d, 0xc, 0x2d, 0xcd, 0x2e, 0x37, - 0x2e, 0x78, 0x2e, 0xbf, 0x2f, 0x84, 0x2f, 0xb8, 0x2f, 0xdf, 0x30, 0x10, - 0x30, 0x2d, 0x30, 0xaf, 0x31, 0x34, 0x31, 0xf2, 0x32, 0xcd, 0x33, 0x1a, - 0x33, 0x46, 0x33, 0x7e, 0x33, 0xb6, 0x36, 0x8, 0x36, 0xf2, 0x38, 0x52, - 0x39, 0x3f, 0x3b, 0x97, 0x3c, 0x1a, 0x3c, 0x82, 0x3c, 0xb1, 0x3d, 0x6, - 0x3d, 0x60, 0x3d, 0xb0, 0x3d, 0xdd, 0x40, 0x4b, 0x40, 0x76, 0x40, 0xb1, - 0x41, 0x1b, 0x41, 0x81, 0x41, 0xbf, 0x42, 0x1b, 0x42, 0xa2, 0x43, 0x2, - 0x45, 0xaf, 0x45, 0xe5, 0x47, 0xc, 0x47, 0xb8, 0x47, 0xfc, 0x48, 0x55, - 0x49, 0x91, 0x4a, 0xda, 0x4b, 0xee, 0x4c, 0xb1, 0x4e, 0x67, 0x4f, 0x36, - 0x51, 0x49, 0x51, 0x6f, 0x54, 0xde, 0x55, 0x5e, 0x58, 0xd9, 0x59, 0xc7, - 0x5a, 0xb9, 0x5b, 0xa5, 0x5c, 0xb1, 0x5d, 0xb9, 0x5e, 0x95, 0x60, 0xef, - 0x61, 0x45, 0x62, 0xd, 0x62, 0x38, 0x62, 0x8b, 0x62, 0x9a, 0x62, 0xcb, - 0x62, 0xf5, 0x63, 0x9, 0x63, 0x20, 0x63, 0x36, 0x63, 0x8e, 0x63, 0xf7, - 0x64, 0x17, 0x64, 0x24, 0x64, 0x32, 0x64, 0x42, 0x64, 0x72, 0x64, 0x8c, - 0x64, 0xaa, 0x64, 0xca, 0x65, 0x2, 0x65, 0x74, 0x65, 0xad, 0x65, 0xc5, - 0x65, 0xdb, 0x66, 0xb, 0x66, 0x3b, 0x66, 0x8f, 0x66, 0xe5, 0x67, 0x29, - 0x67, 0x6c, 0x67, 0xbf, 0x67, 0xc2, 0xfc, 0xc5, 0xe, 0xf7, 0x1b, 0xf7, - 0x18, 0x9f, 0x9d, 0xae, 0xbf, 0xb9, 0x88, 0xa6, 0x71, 0xa6, 0xf7, 0x6a, - 0xb3, 0x64, 0xb3, 0x12, 0xf8, 0xfa, 0xac, 0xa2, 0xb1, 0x65, 0xf7, 0x15, - 0xfb, 0x13, 0xf7, 0x12, 0x9f, 0xb5, 0x62, 0xb5, 0xbe, 0xbb, 0x5c, 0xbb, - 0x13, 0xe5, 0x34, 0xf9, 0x33, 0xf7, 0x95, 0x15, 0xbb, 0x89, 0x9c, 0x83, - 0xae, 0x6a, 0x8, 0x73, 0xa4, 0xac, 0x77, 0xaf, 0x1b, 0x13, 0xe5, 0x32, - 0xb9, 0xbd, 0xb1, 0xbc, 0x1f, 0x13, 0xcd, 0x34, 0xba, 0x63, 0xa3, 0x60, - 0x56, 0x52, 0x78, 0x87, 0x54, 0x1e, 0x64, 0x88, 0x5, 0x13, 0xe5, 0x34, - 0xfc, 0x64, 0xfb, 0x3e, 0x15, 0xf8, 0x42, 0x9f, 0xfb, 0x38, 0x6, 0xf7, - 0x3d, 0xf5, 0x8f, 0xc2, 0xb5, 0xb2, 0xb2, 0xaf, 0xbc, 0xa1, 0xb5, 0xab, - 0x19, 0x13, 0xe5, 0x2c, 0xa1, 0x9c, 0x9d, 0xa3, 0xa8, 0x1a, 0x13, 0xe3, - 0x34, 0xb6, 0x65, 0xa7, 0x62, 0x1e, 0x13, 0xe5, 0x94, 0x45, 0x67, 0x4f, - 0x4d, 0x85, 0x1f, 0x85, 0x50, 0x6f, 0x71, 0x60, 0x67, 0xfb, 0x76, 0xfb, - 0x50, 0x18, 0xfb, 0x31, 0x6, 0xfb, 0x60, 0xcb, 0x15, 0xf8, 0x45, 0x9d, - 0xf3, 0xe2, 0x5, 0x8c, 0x7, 0xfc, 0xb0, 0x2c, 0x5, 0xf9, 0x55, 0xf7, - 0x95, 0x15, 0x13, 0xe3, 0x34, 0xaa, 0xb0, 0xa7, 0xa8, 0x1e, 0x13, 0xe5, - 0x2c, 0xa4, 0x9f, 0x76, 0x72, 0x6c, 0x68, 0x71, 0x6e, 0x1f, 0x13, 0xe5, - 0x94, 0x73, 0x74, 0x9e, 0xa4, 0x1f, 0x13, 0xcd, 0x54, 0xe6, 0xfb, 0x80, - 0x15, 0xac, 0xac, 0x9f, 0xa9, 0x1e, 0x13, 0xe5, 0x32, 0xa6, 0xa3, 0x7a, - 0x6e, 0x6a, 0x6c, 0x7a, 0x6d, 0x1f, 0x13, 0xd5, 0x54, 0x71, 0x70, 0x98, - 0xa9, 0x1f, 0xfb, 0x6d, 0xaf, 0x15, 0x93, 0x90, 0x93, 0x94, 0x94, 0x94, - 0x84, 0x82, 0x83, 0x82, 0x84, 0x83, 0x82, 0x85, 0x91, 0x94, 0x1e, 0xe, - 0xfb, 0x27, 0x92, 0x76, 0xf7, 0x4b, 0xae, 0xf7, 0xb0, 0xaf, 0xf7, 0x49, - 0x54, 0xa, 0xf7, 0x3d, 0x15, 0xf7, 0x61, 0x6, 0xf5, 0xfb, 0x4b, 0xf5, - 0xf7, 0x4b, 0x5, 0xf7, 0x61, 0x6, 0x25, 0xf7, 0x45, 0xf1, 0xf7, 0x46, - 0x5, 0xfb, 0x61, 0x6, 0x21, 0xf7, 0x49, 0x21, 0xfb, 0x49, 0x5, 0xfb, - 0x61, 0x6, 0xf0, 0xfb, 0x46, 0x5, 0xf8, 0x23, 0xb2, 0x15, 0x4c, 0xf2, - 0x5, 0xf7, 0xe, 0x6, 0xfb, 0xc, 0xfb, 0xb0, 0x15, 0xc8, 0xf3, 0xc5, - 0x23, 0x5, 0xfc, 0x86, 0x16, 0xca, 0xf3, 0xc9, 0x23, 0x5, 0x4d, 0xf7, - 0x49, 0x15, 0x4f, 0xf2, 0x5, 0xf7, 0xd, 0x6, 0xb6, 0xfb, 0xb0, 0x15, - 0x39, 0xf7, 0x22, 0xdd, 0xf7, 0x22, 0x5, 0xf7, 0x3d, 0x6, 0xdd, 0xfb, - 0x22, 0x39, 0xfb, 0x22, 0x5, 0xfb, 0x29, 0xf7, 0xd4, 0x15, 0xcb, 0xf7, - 0x3, 0xca, 0xfb, 0x3, 0x5, 0xfb, 0xd, 0xfb, 0xf7, 0x15, 0xf7, 0x10, - 0x6, 0x49, 0xfb, 0x0, 0x5, 0xe, 0xfb, 0x3f, 0x73, 0xa, 0xf8, 0xee, - 0xfc, 0x24, 0xeb, 0xf7, 0x65, 0xea, 0x13, 0xb0, 0xdb, 0xf7, 0x78, 0x15, - 0xf7, 0xc, 0x68, 0xa, 0x1e, 0x13, 0xc0, 0x31, 0x54, 0x42, 0x44, 0x53, - 0xa4, 0x6a, 0x9f, 0x7f, 0x1f, 0x96, 0x85, 0x9a, 0x87, 0x9c, 0x90, 0x8, - 0x90, 0x9c, 0x95, 0x90, 0xa4, 0x1b, 0x13, 0xb0, 0xb1, 0xa3, 0x76, 0x61, - 0x59, 0x6a, 0x4a, 0xfb, 0x16, 0x6b, 0x1f, 0x8f, 0x76, 0x5, 0xf7, 0xc5, - 0x16, 0xf7, 0xb, 0x68, 0xa, 0x31, 0x54, 0x42, 0x44, 0x53, 0xa4, 0x6a, - 0xa0, 0x7f, 0x1e, 0x96, 0x85, 0x99, 0x87, 0x9c, 0x90, 0x8, 0x90, 0x9d, - 0x94, 0x90, 0xa5, 0x1b, 0xb0, 0xa4, 0x76, 0x61, 0x59, 0x69, 0x4a, 0xfb, - 0x16, 0x6b, 0x1f, 0x90, 0x76, 0x5, 0xe, 0x20, 0xfb, 0x38, 0xd6, 0xf9, - 0xaa, 0x77, 0xf7, 0x25, 0x77, 0x1, 0xf8, 0x8c, 0xa7, 0x3, 0xf7, 0x94, - 0x2f, 0x15, 0x65, 0x9d, 0xab, 0x69, 0xb6, 0x1b, 0xd5, 0xf7, 0x1, 0xbb, - 0xf7, 0x8d, 0x1f, 0xf8, 0xcc, 0x7, 0xb7, 0xf7, 0x11, 0x40, 0x7d, 0x86, - 0xfb, 0x3, 0x5, 0x72, 0x6, 0xfb, 0x41, 0xfb, 0x22, 0x33, 0xfb, 0x42, - 0xfb, 0x4d, 0xf7, 0x3a, 0x3d, 0xf7, 0x15, 0x91, 0x95, 0x8e, 0x99, 0xb0, - 0x1f, 0x5f, 0x7, 0xfb, 0x58, 0x34, 0x61, 0x32, 0x7b, 0x6b, 0x90, 0x91, - 0x7d, 0x1e, 0xe, 0xfb, 0xbb, 0x92, 0x76, 0xf9, 0x64, 0x77, 0x1, 0xf7, - 0xa4, 0xf7, 0xa4, 0x15, 0x9f, 0xd2, 0xaa, 0x96, 0xcc, 0xa8, 0x8, 0xd3, - 0xa9, 0xa7, 0xc5, 0xdc, 0x1a, 0xf7, 0x27, 0xfb, 0x1, 0x92, 0xfb, 0x5, - 0x25, 0xfb, 0x0, 0x78, 0xfb, 0x15, 0x37, 0xa4, 0x51, 0xd6, 0x6a, 0x1e, - 0xcd, 0x6e, 0xa9, 0x80, 0x9f, 0x44, 0x8, 0xfb, 0x10, 0xfb, 0x35, 0x15, - 0x47, 0xc4, 0x52, 0xcf, 0xd1, 0xc2, 0xc4, 0xcf, 0xd1, 0x54, 0xc2, 0x45, - 0x47, 0x52, 0x54, 0x45, 0x1e, 0xe, 0xfb, 0xbb, 0x3a, 0xa, 0xf7, 0xa3, - 0xf7, 0xa8, 0x15, 0xa4, 0xcd, 0xbe, 0xa8, 0xc8, 0xa5, 0x8, 0xcd, 0xa8, - 0xad, 0xd8, 0xd6, 0x1a, 0xd1, 0x62, 0xc4, 0x3f, 0x4a, 0x63, 0x55, 0x52, - 0x7c, 0x1e, 0xc4, 0x7f, 0x5f, 0xc1, 0x4c, 0x1b, 0x3a, 0x66, 0x4e, 0x42, - 0x45, 0xb4, 0x3d, 0xc7, 0x71, 0x1f, 0xc8, 0x70, 0xbe, 0x6f, 0xa3, 0x49, - 0x8, 0xfb, 0x12, 0xfb, 0x38, 0x15, 0x46, 0xc3, 0x52, 0xd1, 0xd1, 0xc3, - 0xc4, 0xd0, 0xd2, 0x53, 0xc2, 0x45, 0x46, 0x52, 0x54, 0x44, 0x1e, 0xe, - 0xd2, 0xc8, 0x76, 0xf8, 0xf7, 0x77, 0x1, 0xf8, 0x5b, 0xb3, 0x15, 0xb0, - 0xe2, 0xe3, 0xbe, 0xe0, 0xab, 0x8, 0xf7, 0x2d, 0xc3, 0xc4, 0xdc, 0xec, - 0x1a, 0xf7, 0xb, 0x39, 0xe3, 0xfb, 0xd, 0xfb, 0x3, 0x40, 0x2c, 0x25, - 0x6c, 0x1e, 0xf1, 0x6f, 0x3a, 0xea, 0xfb, 0x1, 0x1b, 0xfb, 0xd, 0x3a, - 0x32, 0xfb, 0xb, 0x2e, 0xc6, 0x35, 0xe2, 0x6c, 0x1f, 0xf7, 0x29, 0x54, - 0xe3, 0x59, 0xb0, 0x33, 0x8, 0xe, 0xd3, 0x61, 0x76, 0xcc, 0x76, 0xf8, - 0xb4, 0x77, 0xe6, 0x77, 0x1, 0xf8, 0xde, 0x96, 0x3, 0xf7, 0x23, 0xc0, - 0x15, 0xa0, 0x75, 0xf8, 0x3a, 0xf8, 0x39, 0x8c, 0x6f, 0xfc, 0x2c, 0xfc, - 0x2c, 0x96, 0x81, 0xf8, 0x2a, 0xf8, 0x2a, 0xaf, 0x7d, 0xfc, 0x35, 0xfc, - 0x35, 0xbb, 0x5a, 0xf8, 0x43, 0xf8, 0x43, 0xf2, 0xf7, 0x72, 0x80, 0x96, - 0xfb, 0x74, 0xfb, 0x10, 0x5, 0xb0, 0x5c, 0x15, 0x88, 0xab, 0xf7, 0x17, - 0xd8, 0x95, 0x82, 0x34, 0xfb, 0x1d, 0x80, 0xa0, 0x5, 0xe, 0xfb, 0x40, - 0x92, 0x76, 0xf7, 0xea, 0xaf, 0xf7, 0xe9, 0x54, 0xa, 0xf8, 0xea, 0x3, - 0xf7, 0x59, 0xf7, 0xe6, 0x15, 0x36, 0x7b, 0x3e, 0x44, 0x32, 0x1a, 0x2b, - 0xd8, 0x3b, 0xec, 0xb3, 0xaf, 0x96, 0xa3, 0xab, 0x1e, 0xda, 0xc6, 0x88, - 0xf7, 0x4, 0xd2, 0xcf, 0x8, 0xac, 0xae, 0xbc, 0xae, 0xbc, 0x1b, 0xaf, - 0x89, 0x5, 0xb3, 0x7, 0x67, 0x89, 0x63, 0x8e, 0x61, 0xa5, 0x69, 0xa4, - 0x19, 0x3a, 0xc6, 0x8c, 0xf7, 0x1, 0x4a, 0xcf, 0x8, 0xab, 0x6b, 0x60, - 0x9e, 0x5e, 0x1b, 0x28, 0x39, 0x40, 0x27, 0x33, 0xd8, 0x42, 0xe0, 0x7c, - 0x1f, 0xe, 0x3c, 0x81, 0xab, 0xee, 0xa4, 0x90, 0xde, 0xf7, 0x4a, 0x94, - 0x82, 0xf7, 0x4, 0xf7, 0x0, 0xa2, 0x12, 0x9d, 0xb9, 0xf7, 0x2b, 0xf7, - 0x10, 0x60, 0x9d, 0xf7, 0x16, 0xaf, 0x7e, 0xf7, 0x36, 0xd2, 0xb5, 0x13, - 0xef, 0x50, 0xf7, 0xce, 0xf7, 0x34, 0x15, 0x8d, 0x6, 0x84, 0x92, 0x94, - 0x89, 0x98, 0x1b, 0x9c, 0xe0, 0x95, 0xc6, 0xd7, 0x1f, 0xc2, 0xb6, 0xbe, - 0xc6, 0xd9, 0x1a, 0xb2, 0x72, 0xb7, 0x56, 0x60, 0x6b, 0x71, 0x6b, 0x71, - 0x1e, 0x87, 0x8d, 0x5, 0x9f, 0xaf, 0x99, 0xa5, 0xb5, 0x1a, 0xb8, 0x71, - 0xde, 0xfb, 0x9, 0xfb, 0x50, 0xfb, 0x17, 0xfb, 0x50, 0xfb, 0x44, 0xfb, - 0x2d, 0xe2, 0xfb, 0x2c, 0xf7, 0x6b, 0xf7, 0x71, 0xf7, 0x5d, 0xf7, 0x5e, - 0xf7, 0x70, 0xf7, 0xa, 0x48, 0xd7, 0x59, 0x7f, 0x7f, 0x84, 0x7e, 0x84, - 0x1e, 0x90, 0x88, 0x97, 0x87, 0x96, 0x84, 0x8, 0xb7, 0x6c, 0xad, 0x49, - 0x33, 0x1a, 0xfb, 0x5f, 0xfb, 0x27, 0xfb, 0x36, 0xfb, 0x62, 0xfb, 0x45, - 0x21, 0xf7, 0x1d, 0xf7, 0x3c, 0x1e, 0x13, 0xf6, 0xb0, 0xf7, 0x22, 0xe3, - 0xf7, 0x3b, 0xf7, 0x31, 0xf3, 0xaa, 0x38, 0x5b, 0x1e, 0x8c, 0x75, 0x87, - 0x72, 0x85, 0x7a, 0x8, 0x89, 0x6, 0xb0, 0x82, 0x76, 0xbd, 0x4a, 0x1b, - 0x40, 0x5b, 0x42, 0x45, 0x64, 0x95, 0x78, 0xa3, 0x6a, 0x1f, 0xb1, 0x57, - 0x97, 0x79, 0x88, 0x66, 0x8, 0x69, 0x88, 0x6d, 0x84, 0x84, 0x1b, 0x67, - 0x74, 0xb6, 0xa3, 0x8d, 0x1f, 0x8c, 0x96, 0x87, 0x8e, 0x83, 0x81, 0x8, - 0x81, 0x7f, 0x87, 0x7f, 0x7c, 0x1a, 0x69, 0xa4, 0x74, 0xaf, 0xb4, 0xa4, - 0x9b, 0xa2, 0x98, 0x1e, 0x13, 0xf7, 0x50, 0xa4, 0xf7, 0x23, 0x15, 0xc1, - 0xa9, 0xc1, 0xc6, 0x90, 0x1e, 0x96, 0x8c, 0x8b, 0x89, 0x90, 0x85, 0x8, - 0x13, 0xf7, 0x30, 0x98, 0x7c, 0x95, 0x74, 0x6f, 0x1a, 0x59, 0x67, 0x5b, - 0x59, 0x80, 0x1e, 0x7f, 0x88, 0x8a, 0x8c, 0x84, 0x93, 0x8, 0x7f, 0x99, - 0x81, 0xa0, 0xa7, 0x1a, 0xe, 0x3c, 0xcf, 0xf7, 0x37, 0xfb, 0x37, 0xf7, - 0x38, 0x4b, 0xca, 0xf7, 0xa, 0xf7, 0x44, 0xca, 0x77, 0x12, 0x96, 0xe0, - 0x74, 0xcf, 0xc7, 0xa0, 0x8b, 0xdf, 0x9e, 0xac, 0xf7, 0xed, 0xb3, 0x13, - 0x9b, 0xe0, 0xf7, 0xcb, 0xf7, 0xb5, 0x15, 0x85, 0x86, 0x75, 0x7c, 0x80, - 0x7b, 0x8, 0x7d, 0x78, 0x86, 0x77, 0x7b, 0x1a, 0x7b, 0x92, 0x65, 0xb3, - 0x67, 0x1e, 0x6a, 0xb0, 0xb5, 0x84, 0xa1, 0x1b, 0xba, 0xbf, 0xa6, 0xb1, - 0xaa, 0x1f, 0xbb, 0xc5, 0x9a, 0x94, 0xb8, 0x96, 0xad, 0x93, 0xa8, 0x9d, - 0x9d, 0x99, 0x8, 0x9a, 0x98, 0x93, 0xa0, 0x98, 0x1a, 0xa2, 0x7f, 0x9c, - 0x78, 0x7a, 0x81, 0x7c, 0x83, 0x87, 0x1e, 0x88, 0x84, 0x8e, 0x85, 0x8f, - 0x8a, 0x8, 0x93, 0x88, 0x95, 0x84, 0x7f, 0x1a, 0x79, 0x7d, 0x7e, 0x77, - 0x79, 0x6a, 0x8e, 0xf2, 0x64, 0x1e, 0x85, 0x9b, 0x85, 0x9b, 0x85, 0x99, - 0x8, 0xd5, 0x6d, 0x6d, 0xbe, 0x3b, 0x1b, 0x6f, 0x6a, 0x7e, 0x73, 0x75, - 0x1f, 0x77, 0x75, 0x7f, 0x6d, 0x6d, 0x1a, 0x6e, 0x9a, 0x6c, 0x8f, 0x85, - 0x1e, 0x8e, 0x85, 0x8b, 0x88, 0x87, 0x88, 0x85, 0x8a, 0x84, 0x8c, 0x85, - 0x8c, 0x7e, 0x8c, 0x6a, 0x95, 0x6b, 0xa1, 0x8, 0x9a, 0x82, 0x9c, 0x83, - 0x97, 0x1e, 0x83, 0x96, 0x85, 0x8f, 0x73, 0x85, 0x8, 0x78, 0x99, 0x7f, - 0x9d, 0xaa, 0x1a, 0xaa, 0x91, 0x99, 0x91, 0x9a, 0x1e, 0x90, 0x95, 0x8e, - 0x90, 0x82, 0x96, 0x8, 0x99, 0x81, 0x7e, 0x95, 0x82, 0x1b, 0x70, 0x77, - 0x59, 0x75, 0x82, 0x8f, 0x78, 0xab, 0x60, 0x1f, 0xa7, 0x67, 0xad, 0x6b, - 0xa9, 0x74, 0x8d, 0x73, 0x85, 0x68, 0x7a, 0x6d, 0x8, 0x74, 0x7e, 0x77, - 0x80, 0x78, 0x1b, 0x13, 0x3d, 0xe0, 0x72, 0x84, 0x9f, 0x99, 0x94, 0x8b, - 0x89, 0x89, 0x8e, 0x1f, 0x90, 0x84, 0x81, 0x91, 0x7e, 0x1b, 0x6f, 0x72, - 0x72, 0x6b, 0x68, 0xab, 0x71, 0xb0, 0xa0, 0xa0, 0x90, 0x9d, 0xa4, 0x1f, - 0xb7, 0xab, 0xab, 0xcb, 0x8a, 0xbe, 0x9d, 0x81, 0xbb, 0x77, 0x95, 0x88, - 0x98, 0x86, 0x87, 0x84, 0x8f, 0x87, 0x8, 0xbd, 0x8e, 0x15, 0x87, 0x96, - 0x8b, 0x8d, 0x91, 0x92, 0x8, 0x9e, 0x9b, 0x9f, 0x9d, 0xb4, 0x1b, 0xbc, - 0xaa, 0x61, 0x67, 0x97, 0x1f, 0x8e, 0x83, 0x8a, 0x88, 0x85, 0x87, 0x8, - 0x13, 0x5d, 0xe0, 0x7d, 0x7a, 0x6d, 0x81, 0x6b, 0x1b, 0x58, 0x6e, 0xb0, - 0xa2, 0x83, 0x1f, 0xe, 0xfb, 0x69, 0xa0, 0x76, 0xf9, 0x7a, 0x77, 0x1, - 0xf7, 0xba, 0xb1, 0x3, 0xf7, 0x6e, 0x16, 0xea, 0x6, 0xea, 0x96, 0x6, - 0x5f, 0xcc, 0x70, 0xf5, 0x86, 0xf7, 0x20, 0x8, 0x93, 0x6, 0x8f, 0x75, - 0x5, 0x4b, 0x97, 0xbd, 0x64, 0xbb, 0x1b, 0xbb, 0xcd, 0xa8, 0xe7, 0xb4, - 0x74, 0xae, 0x6f, 0xa7, 0x1f, 0x6d, 0xa9, 0x68, 0xa2, 0x79, 0xa0, 0x61, - 0xba, 0x57, 0xd8, 0x79, 0xf7, 0xc, 0x82, 0x8d, 0x18, 0x82, 0x89, 0x79, - 0xfb, 0xc, 0x57, 0x3e, 0x61, 0x5c, 0x19, 0x78, 0x76, 0x65, 0x72, 0x6d, - 0x6b, 0x8, 0x71, 0x6f, 0x76, 0x6b, 0x63, 0x1a, 0x2f, 0xcd, 0x6e, 0xbb, - 0xbb, 0xbd, 0xb2, 0xcb, 0x97, 0x1e, 0x8f, 0xa1, 0x5, 0x93, 0x6, 0x86, - 0xfb, 0x20, 0x70, 0x21, 0x5f, 0x4a, 0x8, 0xe, 0xf7, 0xd, 0xf7, 0x2e, - 0x76, 0xf7, 0xb7, 0xda, 0x43, 0xd3, 0xa9, 0x77, 0x12, 0x13, 0xd0, 0xf8, - 0x25, 0xf7, 0xd7, 0x15, 0xf7, 0x6e, 0x42, 0xb5, 0x91, 0xb0, 0xc1, 0x5, - 0xad, 0x7, 0x52, 0xd4, 0xb9, 0x8d, 0xb9, 0x8d, 0xb9, 0x8e, 0x19, 0x13, - 0xb0, 0xaf, 0x8d, 0xaf, 0x8e, 0xaf, 0x8d, 0x8, 0xa2, 0x8d, 0x9e, 0x95, - 0xa4, 0x1a, 0xa5, 0x76, 0x95, 0x73, 0x1e, 0xfc, 0x3, 0x8a, 0xd2, 0x3f, - 0x5, 0x8e, 0x88, 0x8d, 0x7b, 0x87, 0x1a, 0x83, 0x89, 0x81, 0x85, 0x85, - 0x1e, 0xc2, 0x6f, 0x89, 0x81, 0x3b, 0x93, 0x7b, 0x8d, 0x82, 0x8a, 0x7c, - 0x8e, 0x19, 0x74, 0x8f, 0x65, 0x98, 0x73, 0x91, 0x8, 0x74, 0x88, 0x81, - 0x79, 0x76, 0x1a, 0x87, 0x8b, 0x87, 0x8c, 0x87, 0x1e, 0x8e, 0x33, 0x15, - 0xf7, 0x22, 0x55, 0x9d, 0x8e, 0xaa, 0xc5, 0xfb, 0x5c, 0xce, 0x5, 0x81, - 0x86, 0x85, 0x82, 0x80, 0x1a, 0x7a, 0x99, 0x78, 0x96, 0x7e, 0x1e, 0xfb, - 0xf4, 0x67, 0x15, 0xf7, 0x22, 0x98, 0x9e, 0x82, 0xd6, 0x67, 0x9a, 0x87, - 0x19, 0x91, 0x89, 0xd6, 0x84, 0x96, 0x8a, 0x8, 0x7f, 0x97, 0x7c, 0x9d, - 0x9d, 0x1a, 0x98, 0x93, 0x95, 0x96, 0x91, 0x1e, 0x7f, 0x9b, 0x7f, 0x9f, - 0xa0, 0x1a, 0x92, 0x8d, 0x92, 0x8e, 0x91, 0x1e, 0x7d, 0x6f, 0x6c, 0x84, - 0x6c, 0x1b, 0x7b, 0x7c, 0x8d, 0x8e, 0x7c, 0x1f, 0x8e, 0x9b, 0x5, 0x88, - 0x9a, 0x9a, 0x8a, 0x9b, 0x1b, 0xb1, 0xad, 0x95, 0xa0, 0xaa, 0x1f, 0xab, - 0x9f, 0xa2, 0xab, 0x8f, 0x1e, 0xdb, 0x75, 0x34, 0xc8, 0x4e, 0x79, 0x87, - 0x9a, 0xc4, 0x9c, 0x95, 0xb5, 0x9b, 0x86, 0x81, 0x66, 0xe3, 0x4d, 0x5, - 0x89, 0x8d, 0x9a, 0x8a, 0x8f, 0x1b, 0x9d, 0x97, 0x8e, 0x9e, 0x1f, 0x90, - 0x8a, 0x90, 0x90, 0x1a, 0x20, 0xf7, 0x1, 0xfb, 0x33, 0x91, 0xfb, 0x17, - 0xfb, 0xf, 0xfb, 0x17, 0x8f, 0x5, 0x78, 0x6e, 0x82, 0x68, 0x68, 0x1a, - 0x62, 0x97, 0x63, 0xa0, 0x68, 0x1e, 0xf8, 0x4, 0x58, 0x15, 0xbd, 0x7c, - 0xa9, 0x9b, 0xa0, 0xa3, 0xfb, 0xe, 0xba, 0x5, 0x83, 0x88, 0x86, 0x84, - 0x82, 0x1a, 0x78, 0x9f, 0x75, 0x99, 0x7f, 0x1e, 0xe, 0xfb, 0x25, 0x92, - 0x76, 0xf9, 0x4d, 0x77, 0x1, 0xf7, 0xef, 0x7d, 0x15, 0xa8, 0xf3, 0xf2, - 0xf7, 0x25, 0xd8, 0xec, 0x8, 0xc2, 0xd0, 0xbb, 0xcb, 0xe8, 0x1a, 0xe0, - 0x49, 0xc9, 0x36, 0x3a, 0x4c, 0x3d, 0x3f, 0x7a, 0x1e, 0xda, 0x76, 0x52, - 0xd6, 0x33, 0x1b, 0x3a, 0x4a, 0x49, 0x39, 0x33, 0xc4, 0x42, 0xc0, 0x4a, - 0x1f, 0xe0, 0x23, 0xe8, 0xfb, 0x1d, 0xa3, 0x23, 0x8, 0xe, 0xfb, 0x88, - 0x94, 0x76, 0xf9, 0x86, 0x77, 0x1, 0xcb, 0xf8, 0x66, 0x3, 0xf7, 0xb4, - 0x81, 0x15, 0x94, 0x89, 0x94, 0x8d, 0xa5, 0xf7, 0x39, 0xf1, 0xf7, 0x22, - 0xe9, 0xc6, 0x19, 0x8d, 0x94, 0x89, 0x94, 0x2d, 0xc6, 0x25, 0xf7, 0x22, - 0x71, 0xf7, 0x39, 0x19, 0x82, 0x8d, 0x82, 0x89, 0x71, 0xfb, 0x39, 0x25, - 0xfb, 0x22, 0x2d, 0x50, 0x19, 0x89, 0x82, 0x8d, 0x82, 0xe9, 0x50, 0xf1, - 0xfb, 0x22, 0xa5, 0xfb, 0x39, 0x19, 0xe, 0x4c, 0xa0, 0x76, 0xf7, 0xd0, - 0xad, 0xf7, 0xf2, 0x77, 0x12, 0xf8, 0x5, 0xb1, 0x66, 0xaf, 0x13, 0xf0, - 0xf7, 0xb9, 0x16, 0xea, 0x6, 0xea, 0x96, 0x6, 0x5f, 0xcb, 0x71, 0xf3, - 0x85, 0xf7, 0x1d, 0x8, 0x9a, 0x6, 0x48, 0x93, 0xc4, 0x58, 0xd0, 0x1b, - 0xd6, 0xc7, 0xc7, 0xd6, 0xd6, 0x4f, 0xc7, 0x40, 0x46, 0x52, 0x58, 0x48, - 0x83, 0x1f, 0x13, 0xe8, 0x7b, 0x6, 0x94, 0x8b, 0x94, 0x94, 0x1a, 0xc1, - 0x7, 0xcd, 0x94, 0xbe, 0xc4, 0xcf, 0x1a, 0xd6, 0x4f, 0xc7, 0x40, 0x40, - 0x4f, 0x4f, 0x40, 0x47, 0xbe, 0x52, 0xcd, 0x82, 0x1e, 0x55, 0x7, 0x82, - 0x8b, 0x82, 0x82, 0x1a, 0x7b, 0x6, 0xce, 0x83, 0x52, 0xbe, 0x46, 0x1b, - 0x40, 0x4f, 0x4f, 0x40, 0x40, 0xc7, 0x4f, 0xd6, 0xd0, 0xc4, 0xbe, 0xce, - 0x93, 0x1f, 0x13, 0xf0, 0x9a, 0x6, 0x85, 0xfb, 0x1d, 0x71, 0x23, 0x5f, - 0x4b, 0x8, 0xe, 0xfb, 0x29, 0xf7, 0x33, 0x76, 0xb3, 0xf7, 0xe4, 0xfb, - 0x8f, 0xf7, 0x39, 0xf7, 0x11, 0x77, 0x12, 0xc1, 0xf8, 0xa, 0xfb, 0x37, - 0xf8, 0x1a, 0xfb, 0xcc, 0xf7, 0xcc, 0x13, 0xb2, 0xae, 0xf7, 0x1e, 0x15, - 0xf9, 0x0, 0xf8, 0x33, 0xfd, 0x0, 0x6, 0x13, 0xd8, 0xf8, 0x1d, 0xfb, - 0x6e, 0x15, 0xa2, 0x7, 0xf7, 0x64, 0xf7, 0x30, 0x5, 0xfb, 0xe4, 0x7, - 0xfc, 0xda, 0x76, 0x15, 0x13, 0xb4, 0xf7, 0x67, 0xf7, 0x34, 0x5, 0x68, - 0x99, 0xa9, 0x78, 0xb1, 0x1b, 0xaf, 0xa7, 0xa1, 0xab, 0x98, 0x1f, 0xf7, - 0x66, 0xfb, 0x34, 0x5, 0x13, 0xb8, 0x13, 0xb4, 0xfc, 0x5, 0xf7, 0x6e, - 0x15, 0x13, 0xb8, 0xfb, 0x67, 0xf7, 0x36, 0x5, 0xf8, 0xda, 0x6, 0xfb, - 0x69, 0xfb, 0x36, 0x5, 0x13, 0xb2, 0xad, 0x7e, 0x6d, 0x9e, 0x66, 0x1b, - 0x13, 0xd4, 0x6a, 0x69, 0x75, 0x6c, 0x80, 0x1f, 0x13, 0xd8, 0xfb, 0x67, - 0xfb, 0x59, 0x15, 0xf7, 0xe4, 0x7, 0xf7, 0x63, 0xfb, 0x30, 0x5, 0x74, - 0x7, 0xe, 0x5b, 0xf7, 0x23, 0x9f, 0xc3, 0x9f, 0x84, 0x99, 0x8a, 0x9f, - 0xa7, 0x9f, 0x95, 0x9f, 0x8f, 0x9f, 0xed, 0xa3, 0xf3, 0x77, 0x12, 0xf7, - 0x1f, 0x9f, 0x80, 0x9f, 0xf7, 0x5f, 0x99, 0xab, 0x9f, 0x96, 0xa9, 0xda, - 0x9f, 0x93, 0xa5, 0x13, 0xdf, 0xdf, 0x8d, 0xf8, 0x12, 0x15, 0xce, 0x72, - 0x5, 0x7b, 0x8c, 0x95, 0x79, 0xa1, 0x1b, 0x99, 0x95, 0x90, 0x91, 0x92, - 0x1f, 0x91, 0x8a, 0x5, 0x73, 0x9a, 0x7b, 0xa2, 0x96, 0x94, 0x8e, 0x90, - 0x94, 0x1e, 0x8c, 0x8a, 0x77, 0x7d, 0x7f, 0x7a, 0x85, 0x75, 0x19, 0x13, - 0xdf, 0xbf, 0x81, 0x7e, 0x80, 0x7b, 0x76, 0x1a, 0x67, 0xa6, 0x79, 0xa4, - 0xad, 0xb0, 0x9e, 0xa5, 0xab, 0x1e, 0xd8, 0xcb, 0xb0, 0x92, 0x5, 0x75, - 0x8e, 0x9a, 0x79, 0xa7, 0x1b, 0x13, 0xaf, 0xdf, 0xa0, 0x9d, 0x99, 0x98, - 0x98, 0x1f, 0xa9, 0xaa, 0x97, 0x8d, 0x5, 0x13, 0xdf, 0xbf, 0x76, 0x8f, - 0x9e, 0x7e, 0x9e, 0x1b, 0xa7, 0xa6, 0xaa, 0x9f, 0x9d, 0x1f, 0xaf, 0x91, - 0xdd, 0xc2, 0x5, 0x99, 0x7, 0xfb, 0x79, 0x84, 0x34, 0x90, 0x94, 0x9a, - 0x94, 0x99, 0x92, 0x9b, 0x19, 0xcf, 0xa6, 0xbc, 0xbc, 0x8a, 0x8f, 0x29, - 0x82, 0xab, 0xf5, 0x87, 0x8d, 0x3d, 0x60, 0x66, 0x48, 0x5d, 0x94, 0x59, - 0x74, 0x5, 0x88, 0x7, 0xcd, 0x69, 0x78, 0x74, 0x6e, 0x7c, 0x72, 0x7b, - 0x19, 0xfb, 0xa1, 0xbe, 0x53, 0x6b, 0x5, 0x86, 0x8b, 0x86, 0x86, 0x1a, - 0xf8, 0xd3, 0x31, 0x15, 0x93, 0x8c, 0x5, 0x7f, 0x8f, 0x85, 0x94, 0x93, - 0x90, 0x95, 0x97, 0x1e, 0xb3, 0x90, 0x5, 0x7b, 0x7c, 0x76, 0x76, 0x7b, - 0x1b, 0x7a, 0x84, 0x97, 0x9a, 0x8d, 0x1f, 0xfb, 0x54, 0x78, 0x15, 0x86, - 0xa5, 0xa9, 0xa2, 0xb2, 0xa7, 0xf7, 0x4, 0x85, 0x18, 0xf7, 0x4b, 0x91, - 0x5c, 0x6d, 0xfb, 0x9a, 0x67, 0x7e, 0x89, 0x77, 0x86, 0x7a, 0x87, 0x19, - 0xad, 0xf7, 0x40, 0x15, 0x61, 0xa1, 0x94, 0x8f, 0xb6, 0x83, 0x5, 0x93, - 0xfb, 0x52, 0x15, 0x96, 0x8c, 0x5, 0x7f, 0x89, 0x8f, 0x80, 0x96, 0x1b, - 0x97, 0x91, 0x96, 0x9b, 0x8a, 0x1f, 0xbb, 0x92, 0x72, 0x72, 0x5, 0x81, - 0x81, 0x7e, 0x80, 0x7c, 0x1b, 0x74, 0x86, 0x9d, 0x9b, 0x8d, 0x1f, 0xfb, - 0x8c, 0x6b, 0x15, 0x86, 0x92, 0x96, 0x87, 0x9d, 0x1b, 0xa1, 0x84, 0x94, - 0xa4, 0x6d, 0x81, 0x71, 0x95, 0x83, 0x8e, 0x19, 0x97, 0xa8, 0xa6, 0x97, - 0xa6, 0x9c, 0xeb, 0xc7, 0x18, 0x9d, 0x96, 0x9c, 0x97, 0x9a, 0x99, 0xa0, - 0xa0, 0x95, 0xa3, 0x9a, 0xa5, 0xab, 0xc3, 0x18, 0xae, 0x9e, 0x6f, 0x2f, - 0xd9, 0x92, 0x80, 0x80, 0x43, 0x6f, 0x80, 0x70, 0x7b, 0x73, 0x7b, 0x73, - 0x19, 0x63, 0x70, 0x66, 0x6d, 0x92, 0x6e, 0x3b, 0x49, 0x18, 0x78, 0x74, - 0x68, 0x76, 0x6a, 0x1b, 0x13, 0xaf, 0xdf, 0x7a, 0x7c, 0x98, 0xa0, 0x9e, - 0x96, 0x99, 0x95, 0x96, 0x1f, 0xc5, 0xd6, 0x15, 0xfb, 0x6a, 0xd7, 0xa7, - 0x9b, 0xf7, 0x93, 0x5b, 0x5, 0xfb, 0x31, 0x73, 0x15, 0xb5, 0x7c, 0x5, - 0x86, 0x84, 0x83, 0x88, 0x82, 0x1b, 0x7d, 0x85, 0x96, 0x97, 0x8d, 0x1f, - 0x45, 0xa3, 0x15, 0xaa, 0x80, 0x5, 0x87, 0x86, 0x86, 0x89, 0x83, 0x1b, - 0x81, 0x88, 0x93, 0x94, 0x1f, 0xe, 0x5a, 0xaf, 0x9f, 0xbd, 0xc5, 0xc0, - 0xf5, 0x29, 0xf7, 0x3, 0x61, 0xe7, 0x9d, 0xea, 0x9d, 0x9f, 0x93, 0xcd, - 0x84, 0xca, 0x12, 0xc9, 0xa3, 0x80, 0xb6, 0x76, 0xa0, 0xf8, 0xd1, 0x9f, - 0x13, 0xe6, 0xd8, 0xcc, 0xf8, 0xa1, 0x15, 0xaf, 0x97, 0xb8, 0xb6, 0xeb, - 0x1b, 0xc1, 0xcd, 0x7c, 0x7d, 0xcc, 0x1f, 0x13, 0xe7, 0x58, 0x7c, 0xce, - 0xce, 0x7c, 0xbc, 0x1b, 0xc8, 0xbe, 0xa4, 0xa1, 0xa9, 0x1f, 0x78, 0xd3, - 0x5, 0x71, 0x6d, 0x61, 0x70, 0x57, 0x1b, 0x54, 0x4f, 0x98, 0x99, 0x4e, - 0x1f, 0x13, 0xe6, 0xd8, 0x99, 0x4c, 0x4b, 0x9a, 0x4e, 0x1b, 0xfb, 0x7, - 0x5c, 0x50, 0x53, 0x82, 0x8f, 0x82, 0x8d, 0x82, 0x1f, 0xb6, 0xfb, 0x83, - 0x15, 0x85, 0x7b, 0x86, 0x80, 0x70, 0x1a, 0x2f, 0xf7, 0x3, 0x23, 0xf7, - 0x58, 0xf7, 0x3f, 0xf7, 0x1c, 0xde, 0xf7, 0x9, 0xa2, 0x86, 0x96, 0x85, - 0x9b, 0x1e, 0x8b, 0x96, 0xaa, 0xa2, 0x1a, 0xf7, 0x1, 0xfb, 0x18, 0xe3, - 0xfb, 0x44, 0x22, 0x3a, 0x6b, 0x66, 0x5c, 0x1e, 0x69, 0x95, 0x62, 0xa2, - 0x82, 0xad, 0x8, 0x13, 0xe7, 0x28, 0x85, 0x86, 0x86, 0x7f, 0x80, 0x1a, - 0x5e, 0x9e, 0x73, 0xa8, 0x7a, 0x1e, 0x13, 0xe7, 0x58, 0x7a, 0x71, 0x82, - 0x78, 0x67, 0x1a, 0x72, 0x8e, 0x7f, 0x93, 0x7a, 0x1e, 0x95, 0xc1, 0x15, - 0xed, 0xf7, 0x13, 0xda, 0xf7, 0x32, 0xf7, 0x32, 0xf7, 0x16, 0x3c, 0x29, - 0x2a, 0xfb, 0x16, 0x3c, 0xfb, 0x32, 0xfb, 0x32, 0xfb, 0x13, 0xda, 0xec, - 0x1e, 0x93, 0x48, 0x15, 0x97, 0x77, 0xa4, 0x71, 0x9e, 0x7e, 0x8, 0x79, - 0x87, 0x7f, 0x8a, 0x83, 0x1a, 0x6e, 0xd1, 0x4c, 0xa6, 0x94, 0x94, 0x92, - 0x96, 0x96, 0x1e, 0x83, 0xa7, 0xc5, 0x7e, 0xc2, 0x1b, 0xc0, 0xc1, 0x9d, - 0x97, 0x9f, 0x1f, 0x92, 0x85, 0x9e, 0x77, 0x99, 0x94, 0x9d, 0x96, 0x9c, - 0x99, 0x9a, 0x9f, 0x8, 0x99, 0x9e, 0x93, 0x9c, 0x98, 0x1a, 0x90, 0x85, - 0x91, 0x83, 0x90, 0x1e, 0x98, 0x95, 0x9c, 0x9f, 0x93, 0x99, 0x8, 0x90, - 0x83, 0x8e, 0x7d, 0x78, 0x1a, 0x2b, 0xfb, 0x13, 0x3b, 0xfb, 0x35, 0xfb, - 0x33, 0xfb, 0x11, 0xdc, 0xe8, 0x9e, 0x8f, 0x9b, 0x8f, 0x93, 0x1e, 0xf7, - 0x82, 0xf7, 0x1c, 0x15, 0x8e, 0x86, 0x94, 0x8a, 0x91, 0x8d, 0x96, 0x8d, - 0xa6, 0x8c, 0x9b, 0x87, 0x97, 0x88, 0x8f, 0x8e, 0x8f, 0x90, 0xbf, 0xcf, - 0x18, 0x90, 0x92, 0x85, 0x8d, 0x81, 0x8d, 0x55, 0x97, 0x66, 0x8f, 0x44, - 0x80, 0x82, 0x8a, 0x85, 0x85, 0x8e, 0x87, 0x8, 0xf7, 0x37, 0xfb, 0x5a, - 0x15, 0xdc, 0x54, 0x94, 0x85, 0x91, 0x8d, 0x92, 0x90, 0x19, 0xb1, 0xa5, - 0x9e, 0x9f, 0x98, 0xb7, 0x8, 0x91, 0x8d, 0x86, 0x90, 0x82, 0x1b, 0x13, - 0xd7, 0x58, 0xfb, 0x10, 0x90, 0x5, 0x81, 0x87, 0x87, 0x87, 0x1f, 0x8a, - 0x83, 0x82, 0x7d, 0x7e, 0x82, 0x82, 0x86, 0x8e, 0x87, 0x91, 0x87, 0x8, - 0xfb, 0x31, 0xc3, 0x15, 0x13, 0xcf, 0x58, 0x72, 0xad, 0x76, 0xb4, 0xb4, - 0xad, 0xa0, 0xa4, 0xa4, 0x69, 0xa0, 0x62, 0x62, 0x69, 0x76, 0x72, 0x1e, - 0x2f, 0xfb, 0xc, 0x15, 0x93, 0x87, 0x95, 0x8b, 0x8f, 0x8f, 0xd6, 0xc8, - 0x18, 0x91, 0x90, 0x87, 0x8f, 0x85, 0x8e, 0x82, 0x90, 0x7b, 0x98, 0x87, - 0x95, 0x88, 0x93, 0x85, 0x8c, 0x82, 0x8a, 0xfb, 0xc, 0x7f, 0x18, 0x7e, - 0x8a, 0xe0, 0x31, 0x8d, 0x85, 0x9a, 0x69, 0x46, 0xcb, 0xc1, 0x6d, 0x8, - 0xe, 0xef, 0xf7, 0x2c, 0x76, 0xd1, 0xa5, 0xf7, 0x3d, 0xa5, 0x78, 0xa4, - 0xbd, 0xa3, 0x90, 0xa4, 0x8f, 0x77, 0x12, 0x9f, 0xa4, 0x13, 0xed, 0xc2, - 0xf7, 0x57, 0x15, 0xf7, 0x1f, 0x98, 0xf1, 0x5c, 0xde, 0x84, 0xda, 0x74, - 0xad, 0x9b, 0x9e, 0xa4, 0xb6, 0x96, 0xab, 0xc5, 0xc8, 0x93, 0xb2, 0xc6, - 0x5, 0xb3, 0x7, 0x5d, 0xc0, 0xf7, 0x7, 0x8f, 0xf7, 0x5, 0x91, 0x5, - 0xa4, 0x8c, 0x9f, 0x9f, 0xa2, 0x1a, 0xa3, 0x74, 0x9e, 0x6a, 0x8c, 0x1e, - 0xfb, 0xf7, 0x91, 0x73, 0xa3, 0x5, 0x13, 0xeb, 0xfb, 0x46, 0x92, 0xfb, - 0xe, 0xfb, 0xa, 0xfb, 0x13, 0x90, 0x5, 0x75, 0x69, 0x82, 0x66, 0x65, - 0x1a, 0x8c, 0x62, 0x97, 0x61, 0xa1, 0x67, 0x8, 0xf7, 0xe5, 0xf7, 0x16, - 0x15, 0x87, 0xa1, 0x90, 0xa3, 0xa8, 0x90, 0xdb, 0x75, 0x18, 0xf7, 0x5, - 0x7f, 0x8d, 0x95, 0x57, 0xa6, 0x95, 0x95, 0x89, 0xa2, 0x86, 0x95, 0x19, - 0x56, 0xc5, 0xf7, 0xe5, 0x88, 0x5, 0xa2, 0x97, 0x81, 0x7e, 0x7f, 0x83, - 0x81, 0x75, 0x8a, 0x1f, 0x25, 0x86, 0xfb, 0x32, 0x84, 0xcb, 0x3b, 0x5, - 0x74, 0x7, 0x6e, 0x5f, 0x4f, 0x83, 0x5, 0xfb, 0x46, 0x74, 0x15, 0x78, - 0xa2, 0x78, 0xab, 0xa9, 0x9a, 0xf7, 0x45, 0x51, 0x18, 0x72, 0x5a, 0x6e, - 0x85, 0x5, 0xfc, 0x4c, 0xa3, 0x15, 0x7b, 0xa8, 0x83, 0xab, 0xaa, 0x1a, - 0xaa, 0x91, 0xa9, 0x98, 0xa3, 0x1e, 0xf7, 0x10, 0x85, 0xf7, 0xe, 0xf7, - 0xa, 0xf7, 0x35, 0x83, 0xdf, 0x32, 0x90, 0x83, 0x89, 0x7b, 0x87, 0x89, - 0x19, 0x7f, 0x81, 0x7d, 0x8b, 0x78, 0x8f, 0x37, 0xc5, 0x18, 0x95, 0xaf, - 0x7c, 0x8f, 0x82, 0x63, 0x55, 0x7c, 0x8f, 0x7c, 0x5, 0x13, 0xdd, 0xc4, - 0x9d, 0xdd, 0x50, 0x3f, 0xa0, 0x6d, 0x88, 0x77, 0x73, 0x8c, 0x6f, 0x19, - 0x60, 0x6e, 0x5e, 0x84, 0x57, 0x95, 0x89, 0x7c, 0x18, 0xb7, 0x83, 0xb7, - 0x8e, 0xb3, 0x9f, 0x81, 0x78, 0x92, 0x6f, 0xa0, 0x72, 0x72, 0x7b, 0x90, - 0x75, 0x98, 0x78, 0x46, 0x91, 0x18, 0x23, 0xba, 0x5, 0xf7, 0x59, 0x51, - 0x15, 0x7d, 0x99, 0x7a, 0xa7, 0xa4, 0x96, 0xf1, 0x63, 0x18, 0x7a, 0x77, - 0x78, 0x81, 0x5, 0xe, 0x7d, 0xae, 0xe5, 0xab, 0xf7, 0xe3, 0x9c, 0xf7, - 0x43, 0x4c, 0xa, 0xf7, 0xb2, 0xe7, 0xf7, 0xa3, 0xae, 0x17, 0xae, 0xf7, - 0xee, 0x37, 0xa, 0x13, 0x6c, 0x33, 0xa, 0x1f, 0xf7, 0x5e, 0x6b, 0xa, - 0xf7, 0x9c, 0xa9, 0x6, 0x57, 0x8f, 0x5, 0x65, 0x8e, 0x8d, 0x97, 0xa7, - 0x1a, 0xf8, 0x1d, 0x56, 0x7, 0x67, 0x5a, 0x64, 0x6f, 0x4d, 0x82, 0x8, - 0x7a, 0xc5, 0x7, 0xb5, 0x89, 0x89, 0x61, 0x1f, 0xfb, 0x8a, 0x7, 0x74, - 0x81, 0x79, 0x72, 0x89, 0x1e, 0x5a, 0x87, 0x5, 0xe, 0x7d, 0xae, 0x68, - 0xf7, 0x11, 0xf8, 0x70, 0xf7, 0xa, 0x68, 0x4c, 0xa, 0x68, 0xf7, 0x53, - 0xf7, 0xdc, 0xf7, 0x5c, 0xfb, 0x51, 0xf7, 0x51, 0x68, 0xae, 0x13, 0x98, - 0x80, 0x22, 0xa, 0x13, 0x66, 0x0, 0xf7, 0x30, 0x6b, 0xa, 0xa2, 0x7, - 0xd4, 0xbd, 0xc1, 0xc2, 0xb4, 0x1e, 0xc1, 0xb3, 0xcb, 0xbb, 0xd6, 0x1a, - 0xb3, 0x7c, 0xb8, 0x5c, 0x7b, 0x6a, 0x7b, 0x78, 0x1e, 0x7f, 0x91, 0x81, - 0x7f, 0x1a, 0x71, 0x76, 0x77, 0x71, 0x6c, 0x78, 0xa3, 0xa9, 0xa7, 0x99, - 0xa1, 0xa0, 0x9c, 0x1e, 0xa4, 0xaa, 0xb2, 0x91, 0xb1, 0x1b, 0xd8, 0xe2, - 0x68, 0x31, 0xfb, 0x2e, 0xfb, 0x6d, 0x9a, 0x58, 0xfb, 0xf, 0x1f, 0xf7, - 0x60, 0x6, 0xba, 0x8e, 0xb1, 0xc1, 0x96, 0x1f, 0x13, 0x65, 0x0, 0x99, - 0xfb, 0x49, 0x6, 0xe, 0x7d, 0xae, 0xf9, 0x1a, 0x77, 0x1, 0x22, 0xa, - 0xf7, 0x8f, 0x91, 0x15, 0x8c, 0xab, 0x8b, 0x9c, 0xc7, 0xae, 0x68, 0x4f, - 0x54, 0x66, 0x46, 0x4f, 0x78, 0x6d, 0x9d, 0xa3, 0x1e, 0x96, 0x91, 0x96, - 0x96, 0x1a, 0xa7, 0x79, 0xa1, 0x6c, 0x68, 0x77, 0x77, 0x68, 0x68, 0xa5, - 0x71, 0xa7, 0x7b, 0x1e, 0x7a, 0xaa, 0xb0, 0x84, 0xad, 0x1b, 0xe6, 0xf3, - 0xb9, 0xf4, 0xf7, 0x2, 0xfb, 0x19, 0x92, 0x88, 0x91, 0x1f, 0x89, 0x8f, - 0xf4, 0xb1, 0xcd, 0x1a, 0xdc, 0x3c, 0xa0, 0x48, 0x55, 0x2a, 0x79, 0x45, - 0x6f, 0x9f, 0x79, 0xa6, 0xa5, 0x9f, 0xa3, 0xa3, 0x92, 0x8a, 0x92, 0x87, - 0x91, 0x1e, 0xa2, 0xa8, 0x9d, 0x9d, 0xbb, 0xa0, 0x5d, 0x60, 0x50, 0x5b, - 0x6a, 0x54, 0x1e, 0x75, 0x6, 0xe, 0x7d, 0xae, 0xe5, 0xf7, 0x3d, 0x5a, - 0xbc, 0xf8, 0x1a, 0x4c, 0xa, 0xf7, 0xc2, 0xe4, 0xf7, 0x96, 0xae, 0x13, - 0xbe, 0x22, 0xa, 0xf7, 0x1, 0xfb, 0x7, 0x15, 0xf7, 0x55, 0x78, 0x6, - 0x48, 0x7b, 0x8b, 0x6e, 0x88, 0x1e, 0x77, 0x89, 0x5, 0x13, 0xde, 0x6e, - 0xf7, 0x71, 0xa8, 0x7, 0x79, 0x8e, 0x5, 0x54, 0x94, 0x91, 0x89, 0xc9, - 0x1a, 0x13, 0xbe, 0x9e, 0xee, 0xbc, 0x28, 0xf7, 0xc1, 0x33, 0x7, 0xfb, - 0x56, 0xfb, 0xd4, 0x5, 0xce, 0x9e, 0x15, 0xf7, 0x12, 0xf7, 0x63, 0x5, - 0xfb, 0x63, 0x7, 0xe, 0x7e, 0xae, 0xdd, 0xaf, 0xf7, 0x6c, 0xb5, 0xdf, - 0xe1, 0xf1, 0x4c, 0xa, 0xf7, 0x43, 0xb4, 0xf7, 0x33, 0xf7, 0x6, 0xf7, - 0x34, 0xae, 0x17, 0x23, 0xa, 0xae, 0x16, 0x40, 0xa, 0x41, 0xa, 0x1e, - 0x13, 0xf3, 0x80, 0x28, 0xa, 0xfb, 0x24, 0xfb, 0x48, 0x1f, 0x13, 0x77, - 0x0, 0xfb, 0x47, 0xfb, 0x25, 0xf7, 0x24, 0xf7, 0x48, 0x1f, 0xf7, 0x43, - 0x76, 0x15, 0xb4, 0x7a, 0x5, 0xa4, 0x9d, 0xa7, 0xa2, 0xab, 0x1b, 0xc3, - 0xa4, 0x56, 0x5a, 0x57, 0x6a, 0x4d, 0x50, 0x79, 0x6b, 0x93, 0xa2, 0x1f, - 0x98, 0x95, 0x94, 0x9b, 0x1a, 0xaa, 0x71, 0x9a, 0x6f, 0x6b, 0x79, 0x72, - 0x6d, 0x43, 0xef, 0x73, 0xc4, 0xe8, 0xef, 0xc4, 0xf1, 0xe3, 0x3b, 0xba, - 0x3b, 0x66, 0x5d, 0x81, 0x72, 0x6d, 0x1e, 0xf7, 0xd, 0x7, 0xe9, 0x88, - 0x5, 0xb1, 0xca, 0x86, 0xa4, 0xab, 0x1f, 0x9d, 0x99, 0x9c, 0xb7, 0x90, - 0xa3, 0x8, 0x7f, 0x65, 0x63, 0x88, 0x64, 0x1b, 0x51, 0x44, 0x92, 0x98, - 0x4d, 0x1f, 0xe, 0x7d, 0xae, 0xf9, 0x1d, 0xae, 0x1, 0x22, 0xa, 0xf7, - 0x75, 0x78, 0x15, 0xb7, 0xa8, 0xc5, 0xa9, 0xc0, 0x1b, 0xda, 0xc7, 0x56, - 0x39, 0x28, 0x38, 0x4c, 0x2c, 0xfb, 0x1d, 0x4e, 0xf7, 0x1, 0xf7, 0x11, - 0xf7, 0x11, 0xce, 0xf7, 0x11, 0xf7, 0x1c, 0xc1, 0xe6, 0x74, 0x47, 0x6e, - 0x7b, 0x71, 0x6c, 0x71, 0x77, 0x9e, 0xa5, 0x1f, 0x96, 0x90, 0x98, 0x95, - 0x1a, 0xa3, 0x65, 0x96, 0x78, 0x2c, 0x80, 0xfb, 0x9, 0x41, 0x1e, 0x91, - 0xfb, 0xe, 0x15, 0x55, 0xb1, 0x58, 0xc6, 0xc6, 0xa4, 0xc4, 0xbf, 0xba, - 0x76, 0xc7, 0x52, 0x4c, 0x63, 0x57, 0x50, 0x1e, 0xe, 0x7d, 0xae, 0xf8, - 0x6b, 0xe4, 0xe4, 0x4c, 0xa, 0xf7, 0x72, 0xf7, 0x4, 0xfb, 0x4, 0xf7, - 0xc, 0xf7, 0xc7, 0xae, 0x13, 0xf6, 0x22, 0xa, 0xf7, 0x27, 0xcd, 0x15, - 0x9f, 0x6, 0xb8, 0x9f, 0x8d, 0xae, 0xb2, 0x1b, 0xf7, 0x50, 0x6, 0x20, - 0xfb, 0x24, 0x5, 0x67, 0x5c, 0x58, 0x46, 0x4d, 0x1a, 0x65, 0xa1, 0x6f, - 0xb3, 0xae, 0xa2, 0xa2, 0xaf, 0x1e, 0x13, 0xfa, 0xa2, 0x83, 0xa2, 0xa2, - 0x1a, 0xce, 0xbb, 0xd0, 0xab, 0xc2, 0x1e, 0xe7, 0xf7, 0x32, 0x5, 0xfb, - 0xf6, 0x6, 0xe, 0x7d, 0xae, 0xde, 0xb1, 0xf8, 0x30, 0xad, 0xdd, 0x4c, - 0xa, 0xf7, 0x2e, 0xc5, 0x71, 0xd9, 0xf7, 0x1d, 0xbd, 0x60, 0xe3, 0xf7, - 0x2d, 0xae, 0x13, 0xfc, 0xc0, 0xf7, 0xd7, 0xf7, 0xfe, 0x15, 0x55, 0x6c, - 0x5e, 0x6a, 0x46, 0x1a, 0x2f, 0xde, 0x6a, 0xd9, 0xe3, 0xe8, 0xc0, 0xeb, - 0xd5, 0x5c, 0xaf, 0x4e, 0xa9, 0x1e, 0x13, 0xbb, 0x40, 0xb1, 0xa4, 0xa4, - 0xa4, 0xbd, 0x1a, 0xd1, 0x49, 0xa4, 0x51, 0x1e, 0x42, 0x47, 0x5d, 0x3c, - 0x5a, 0xa8, 0x6e, 0xb1, 0x74, 0x1f, 0xf0, 0xbb, 0x15, 0x5b, 0xa4, 0x61, - 0x9d, 0xb4, 0x1a, 0xae, 0xa8, 0xa4, 0xad, 0x1e, 0x13, 0x99, 0x40, 0xb4, - 0xac, 0x74, 0x60, 0x69, 0x79, 0x6f, 0x6e, 0x7b, 0x1f, 0x48, 0x48, 0x15, - 0x13, 0xdc, 0xc0, 0xa0, 0x7f, 0x9e, 0x81, 0x9a, 0x81, 0x8, 0xb8, 0x6f, - 0xa0, 0x76, 0x6a, 0x1a, 0x54, 0x62, 0x6b, 0x57, 0x53, 0x5c, 0xb6, 0xc2, - 0xb4, 0xb2, 0xb5, 0xaf, 0x9f, 0x1e, 0xfb, 0xd6, 0x8e, 0x37, 0xa, 0x13, - 0x8, 0x0, 0x33, 0xa, 0x1f, 0xe, 0x7d, 0xae, 0xde, 0xac, 0x6a, 0xf7, - 0x26, 0xb4, 0xba, 0x98, 0x77, 0xf7, 0x72, 0xae, 0xdd, 0x4c, 0xa, 0xf7, - 0x2d, 0xdc, 0x4c, 0xe8, 0xf7, 0x24, 0xf7, 0x1, 0x23, 0xf3, 0x25, 0xf1, - 0xf7, 0x18, 0xae, 0x13, 0xcf, 0x94, 0x2e, 0xa, 0xf7, 0x5b, 0xf7, 0x5a, - 0x25, 0xa, 0xfb, 0x5a, 0xfb, 0x5b, 0x2a, 0xa, 0xae, 0x16, 0x40, 0xa, - 0xf7, 0x25, 0xf7, 0x48, 0xf7, 0x47, 0x2f, 0xa, 0xfb, 0x47, 0xfb, 0x48, - 0x36, 0xa, 0x1e, 0xf8, 0x31, 0x90, 0x15, 0x13, 0xcf, 0x4c, 0x8d, 0x6, - 0x22, 0x8e, 0x7a, 0xfb, 0x1, 0x32, 0x1b, 0x77, 0x69, 0x95, 0xa3, 0x1f, - 0x94, 0x91, 0x96, 0x98, 0x1a, 0x13, 0xb7, 0x54, 0xa4, 0x78, 0xa0, 0x72, - 0x6d, 0x78, 0x72, 0x6e, 0x48, 0xe2, 0x72, 0xc1, 0xcd, 0xbd, 0x9b, 0xc4, - 0xb2, 0x1e, 0xae, 0xbf, 0x9a, 0xce, 0xc9, 0x1a, 0xf7, 0xa, 0x49, 0xf7, - 0x4, 0xfb, 0x16, 0x1e, 0x13, 0xd7, 0xa4, 0x2a, 0x44, 0x4f, 0x23, 0x39, - 0xbc, 0x58, 0xdb, 0x1f, 0x13, 0xcf, 0x94, 0xbf, 0xbc, 0x9c, 0xb6, 0xa9, - 0x1f, 0xfb, 0x47, 0xe6, 0x15, 0xc2, 0xa3, 0xc3, 0xca, 0x1e, 0x13, 0xd7, - 0xa4, 0xc1, 0xac, 0x57, 0x5a, 0x53, 0x70, 0x51, 0x4c, 0x50, 0x72, 0xc0, - 0xbe, 0x1f, 0xe, 0x7d, 0xae, 0xe4, 0xaf, 0xf7, 0xee, 0x9b, 0xb0, 0xad, - 0xe6, 0x4c, 0xa, 0xf7, 0x42, 0xdf, 0xba, 0xeb, 0xf2, 0xeb, 0xbc, 0xae, - 0x17, 0xf8, 0xb, 0xf7, 0xea, 0x15, 0x13, 0xff, 0xc0, 0x22, 0x9d, 0xfb, - 0x13, 0xf7, 0x15, 0xf7, 0x16, 0x9d, 0xf7, 0x10, 0xf7, 0x0, 0xe9, 0x7a, - 0xf7, 0x23, 0xfb, 0x11, 0xfb, 0x1b, 0x79, 0xfb, 0x16, 0x20, 0x1e, 0xeb, - 0x16, 0xb3, 0x8a, 0xf7, 0x37, 0xc0, 0xc1, 0x88, 0xfb, 0x38, 0x64, 0x66, - 0x8c, 0xfb, 0x33, 0x57, 0x55, 0x8d, 0xf7, 0x32, 0xb1, 0x1e, 0xfc, 0x48, - 0x8f, 0x21, 0xa, 0xf7, 0x8, 0x6b, 0xa, 0xf7, 0x5c, 0xad, 0x6, 0x80, - 0x8c, 0x5, 0x5a, 0x8f, 0x8d, 0x91, 0x9d, 0x1a, 0xf8, 0x2b, 0x54, 0x7, - 0x6f, 0x5b, 0x69, 0x75, 0x58, 0x88, 0x8, 0x7b, 0xa5, 0x7, 0x13, 0x2, - 0x0, 0xab, 0xa5, 0x8f, 0x64, 0x1f, 0xfb, 0xaf, 0x7, 0x76, 0x83, 0x86, - 0x78, 0x8a, 0x1e, 0x6c, 0x89, 0x5, 0xe, 0xfb, 0xb6, 0x58, 0xa3, 0xb8, - 0x76, 0xf7, 0x7c, 0x9a, 0x92, 0x9a, 0xf7, 0xa, 0x9a, 0xb6, 0xa3, 0xf7, - 0x57, 0xa4, 0x86, 0xa3, 0x12, 0xf7, 0x1e, 0xa4, 0xc2, 0x99, 0xae, 0x9a, - 0x8b, 0x9b, 0xa1, 0x9b, 0xa9, 0xa4, 0xac, 0xa4, 0x80, 0xa3, 0x13, 0xfd, - 0xfe, 0xea, 0x88, 0x15, 0x6a, 0xa4, 0xae, 0x7c, 0xaf, 0x1b, 0xab, 0xab, - 0x95, 0x9e, 0xa6, 0x1f, 0xbc, 0xf7, 0x1e, 0xb1, 0xb1, 0xb7, 0xd4, 0xbb, - 0xa6, 0x90, 0xb2, 0x75, 0xb6, 0x8f, 0xb3, 0x90, 0xc4, 0x6e, 0xaa, 0x6c, - 0x8f, 0x74, 0x7f, 0xa1, 0xf7, 0x5b, 0x5, 0xab, 0x8f, 0x76, 0x9d, 0x74, - 0x1b, 0x77, 0x76, 0x7f, 0x70, 0x84, 0x1f, 0x5b, 0xfb, 0x56, 0x71, 0xe6, - 0x79, 0xdb, 0x5, 0x13, 0xfe, 0xfd, 0xa4, 0x85, 0x82, 0x9d, 0x6d, 0x1b, - 0x6b, 0x87, 0x6a, 0x7a, 0x8c, 0x1f, 0x98, 0xfb, 0x8b, 0x74, 0x88, 0x72, - 0x74, 0x78, 0xfb, 0x21, 0xba, 0xfb, 0x7, 0x5, 0xf7, 0x68, 0xf7, 0x29, - 0x15, 0xba, 0xaa, 0x75, 0x7d, 0xa9, 0x9e, 0xa4, 0x95, 0x18, 0x94, 0x9a, - 0x9a, 0x6e, 0x88, 0x78, 0x81, 0x86, 0x65, 0x7e, 0x5b, 0x76, 0x86, 0xa5, - 0x19, 0xfb, 0x6b, 0xfb, 0x92, 0x15, 0xa9, 0xf6, 0x5a, 0xf7, 0x8, 0x9c, - 0xf7, 0x12, 0x99, 0x97, 0xf7, 0x1a, 0xa0, 0x98, 0x89, 0x93, 0x7d, 0x81, - 0x7d, 0x19, 0x79, 0x72, 0x61, 0x7b, 0x6e, 0x80, 0x60, 0xa2, 0x18, 0x85, - 0x7d, 0xb3, 0x77, 0xa2, 0x72, 0x94, 0x6c, 0x91, 0x61, 0x19, 0x99, 0x8e, - 0x85, 0xb3, 0x85, 0xa8, 0x77, 0xa5, 0x19, 0xaa, 0x96, 0xb3, 0x9b, 0x9e, - 0xa5, 0x8, 0x91, 0x93, 0x8d, 0x95, 0x93, 0x1a, 0x9a, 0x80, 0x98, 0x77, - 0x8c, 0x1e, 0x29, 0x7c, 0x7e, 0xf7, 0x92, 0x5, 0x9d, 0x8a, 0x91, 0x90, - 0x90, 0x1b, 0x97, 0x8f, 0x88, 0x77, 0x8f, 0x1f, 0x9d, 0x3b, 0xb1, 0xfb, - 0x19, 0x5, 0xa6, 0x6, 0xc6, 0xf7, 0x80, 0x5, 0x13, 0xfd, 0xfe, 0x98, - 0x8e, 0x94, 0x92, 0x94, 0x1b, 0x95, 0x94, 0x83, 0x7c, 0x89, 0x1f, 0x70, - 0xfb, 0x8a, 0xc5, 0xaa, 0x99, 0x89, 0x9b, 0x79, 0x86, 0x5d, 0x86, 0x61, - 0x7e, 0x76, 0xfb, 0x0, 0x5b, 0x85, 0x8c, 0x85, 0x8e, 0x89, 0x91, 0x19, - 0x85, 0x9d, 0xb5, 0xa2, 0x9c, 0x98, 0xb0, 0xcb, 0x18, 0x7f, 0x91, 0x56, - 0x5c, 0x9b, 0x7c, 0x5, 0x81, 0x84, 0x5c, 0x71, 0x72, 0x1a, 0x88, 0x8b, - 0x88, 0x8c, 0x88, 0x1e, 0x80, 0x8f, 0x99, 0x82, 0x98, 0x1b, 0xa1, 0x93, - 0x5, 0x76, 0x8c, 0x98, 0x82, 0x9d, 0x1b, 0x95, 0x97, 0x8d, 0x8f, 0x98, - 0x1f, 0x64, 0x49, 0x63, 0x65, 0x5c, 0xfb, 0x1e, 0x5, 0x7f, 0x78, 0x71, - 0x83, 0x72, 0x1b, 0x70, 0x71, 0x94, 0x9f, 0x7a, 0x1f, 0xe, 0x7d, 0xef, - 0xf8, 0x9c, 0xee, 0x1, 0xf7, 0xf4, 0xf0, 0x26, 0xa, 0xf7, 0x74, 0xfb, - 0x98, 0x15, 0xac, 0x7, 0xc1, 0x8e, 0xad, 0x8d, 0x91, 0xad, 0x8a, 0xa6, - 0x19, 0xf7, 0x98, 0x7, 0xb7, 0x8c, 0x8e, 0x5e, 0x1e, 0x4a, 0x9f, 0x6, - 0xd0, 0x95, 0xa4, 0xa8, 0xb2, 0xc2, 0x8, 0xd8, 0xfc, 0x39, 0x6, 0x4a, - 0x9b, 0x90, 0xc9, 0x86, 0x1e, 0x9f, 0x8a, 0x5, 0x6a, 0x7, 0xe, 0x7d, - 0xef, 0xf8, 0xa3, 0xe7, 0x12, 0xae, 0xf7, 0x43, 0xfb, 0x43, 0xf7, 0x58, - 0xf7, 0xe8, 0xf7, 0x4b, 0xfb, 0x3f, 0xf7, 0x3f, 0x13, 0xe8, 0x23, 0xa, - 0xf7, 0x43, 0xfb, 0x98, 0x15, 0x89, 0xf6, 0xc2, 0xc6, 0xc8, 0xb8, 0x8, - 0xc7, 0xb8, 0xd1, 0xc0, 0xde, 0x1a, 0xb7, 0x7c, 0xbd, 0x56, 0x7b, 0x65, - 0x79, 0x77, 0x1e, 0x7e, 0x92, 0x80, 0x7d, 0x1a, 0x6e, 0x73, 0x74, 0x6e, - 0x1e, 0x13, 0xd8, 0x69, 0x76, 0xa6, 0xac, 0xd9, 0xe3, 0xaa, 0xcc, 0xe2, - 0xef, 0x67, 0x25, 0x2f, 0x43, 0x63, 0x42, 0x68, 0x1f, 0x54, 0x72, 0x42, - 0x63, 0x74, 0x51, 0x8, 0xf7, 0x75, 0x6, 0x9b, 0x8a, 0x9c, 0x8b, 0x92, - 0x9c, 0xa4, 0xe0, 0x18, 0x13, 0xe4, 0x9d, 0xfb, 0x5c, 0x6, 0xe, 0x7d, - 0xe6, 0xf7, 0xa9, 0x77, 0xba, 0xde, 0x38, 0xf7, 0x55, 0xb2, 0xe7, 0x12, - 0xae, 0xf7, 0x3c, 0xfb, 0x3c, 0xf7, 0x53, 0xe7, 0xf7, 0x2e, 0xfb, 0x24, - 0xf7, 0xf, 0xf2, 0xf7, 0x5c, 0xfb, 0x37, 0xf7, 0x37, 0x13, 0xdc, 0xc0, - 0x23, 0xa, 0xf7, 0xaa, 0x94, 0x15, 0xa5, 0xa3, 0x7, 0xc9, 0xbf, 0xb4, - 0xcc, 0xbb, 0x74, 0xb2, 0x55, 0x69, 0x7a, 0x76, 0x82, 0x1f, 0x83, 0x90, - 0x8a, 0x78, 0x1a, 0x13, 0xea, 0xc0, 0x70, 0x74, 0x72, 0x70, 0x6c, 0x76, - 0xa0, 0xa9, 0xd8, 0xf6, 0xa0, 0xc6, 0xd5, 0xe3, 0x74, 0x31, 0x4a, 0x61, - 0x6d, 0x53, 0x7a, 0x1e, 0x88, 0x8a, 0x7e, 0x89, 0x87, 0x1a, 0x85, 0x93, - 0x8a, 0x8f, 0x99, 0xb5, 0x7e, 0x85, 0x97, 0x1e, 0x13, 0xdd, 0x20, 0xb8, - 0x76, 0xa5, 0x62, 0x5a, 0x1a, 0xfb, 0x5, 0xfb, 0x5, 0x55, 0x28, 0x65, - 0x64, 0x91, 0x9c, 0x69, 0x1e, 0x6a, 0x9c, 0x6b, 0xaa, 0xb4, 0x1a, 0xb1, - 0xa0, 0xa1, 0xb3, 0xac, 0xa0, 0x74, 0x6b, 0x1e, 0x7e, 0x84, 0x80, 0x7e, - 0x1a, 0x71, 0xac, 0x82, 0xa0, 0xcd, 0xb4, 0xcd, 0xc8, 0xcd, 0x65, 0xb2, - 0x48, 0x79, 0x79, 0x90, 0x87, 0x79, 0x1e, 0xe, 0x7d, 0xef, 0x8b, 0xd3, - 0xf8, 0x54, 0xee, 0x12, 0xae, 0xf8, 0xb3, 0xfb, 0x2, 0xf7, 0xb2, 0x13, - 0xf0, 0x29, 0xa, 0x1e, 0x13, 0xe8, 0x24, 0xa, 0x1f, 0x13, 0xf0, 0x27, - 0xa, 0x1f, 0xf7, 0xd, 0xfb, 0x13, 0x15, 0xac, 0x7, 0xf7, 0x6d, 0xf7, - 0xf6, 0x5, 0x13, 0xe8, 0xea, 0xfb, 0xe1, 0x6, 0x13, 0xf0, 0xf7, 0x2, - 0x55, 0x6, 0x13, 0xe8, 0xfb, 0x2, 0x4c, 0x6, 0x78, 0x93, 0x84, 0x9b, - 0x88, 0x1e, 0xbe, 0x82, 0x5, 0x6b, 0xfb, 0xa0, 0xab, 0x7, 0xd2, 0x94, - 0x5, 0xa0, 0x8e, 0x8e, 0xa0, 0x92, 0x1a, 0xc8, 0x7, 0xfb, 0x2b, 0xc1, - 0x15, 0xf7, 0x2b, 0xf7, 0x97, 0x6, 0xe, 0x7b, 0xe7, 0x31, 0xe7, 0xf7, - 0xab, 0x77, 0xce, 0xe8, 0xe9, 0xf7, 0x6, 0x12, 0xae, 0xf7, 0x2e, 0xfb, - 0x2e, 0xf7, 0x57, 0xd5, 0xf7, 0x26, 0xf7, 0x12, 0xf7, 0x46, 0x13, 0xbd, - 0x80, 0x3b, 0xa, 0x13, 0x7d, 0x80, 0x2c, 0xa, 0x13, 0xbb, 0x80, 0xf7, - 0x57, 0x74, 0x15, 0x8c, 0xf7, 0xb7, 0x5, 0x7d, 0xcc, 0xda, 0x82, 0xc8, - 0x1b, 0xb8, 0xb9, 0x8e, 0x99, 0xb6, 0x1f, 0x85, 0x72, 0x79, 0x58, 0x78, - 0x7d, 0x8, 0x6f, 0x66, 0x47, 0x90, 0x5f, 0x1b, 0x23, 0x8f, 0x5, 0xfb, - 0x1a, 0x7, 0xa7, 0xac, 0xbf, 0x96, 0xb4, 0x1b, 0xb4, 0xb4, 0x82, 0x72, - 0xac, 0x1f, 0xb0, 0x71, 0xa3, 0x61, 0x5d, 0x1a, 0x13, 0x7d, 0x80, 0xfb, - 0x7, 0xfb, 0x2, 0x4c, 0x23, 0x4d, 0xfb, 0x3, 0xa6, 0xdb, 0xac, 0x9f, - 0xa7, 0xaf, 0xaa, 0xa7, 0x7a, 0x69, 0x1e, 0x78, 0x81, 0x81, 0x7e, 0x1a, - 0x71, 0xae, 0x82, 0x9f, 0xcc, 0xaf, 0xd0, 0xc4, 0xc1, 0x70, 0xc6, 0x4d, - 0x67, 0x6d, 0x71, 0x70, 0x76, 0x1e, 0xe, 0x7d, 0xe7, 0xf7, 0xa9, 0x77, - 0xd3, 0xb9, 0x5d, 0xf7, 0x3f, 0xae, 0xe7, 0x12, 0xae, 0xf7, 0x29, 0xf7, - 0x7, 0xf7, 0x55, 0x6a, 0xf2, 0x8b, 0xf7, 0x54, 0xfb, 0x3a, 0xf7, 0x3a, - 0x13, 0xee, 0x40, 0x23, 0xa, 0xf7, 0x97, 0x76, 0x15, 0xbc, 0xaa, 0xc3, - 0xac, 0xc5, 0x1b, 0xe3, 0xc8, 0x49, 0x31, 0xfb, 0x3, 0x34, 0x4d, 0x22, - 0x49, 0x52, 0xa0, 0xc0, 0x63, 0x1f, 0x65, 0xbe, 0x80, 0xcc, 0xca, 0x1a, - 0xcb, 0x93, 0xcf, 0xad, 0xc2, 0x1e, 0xcf, 0xb5, 0xc4, 0xa6, 0xda, 0x1b, - 0x13, 0xed, 0x80, 0xc7, 0xed, 0x72, 0x40, 0x6b, 0x7a, 0x6f, 0x68, 0x6e, - 0x75, 0x9f, 0xa8, 0x1f, 0x98, 0x91, 0x99, 0x96, 0x1a, 0x13, 0xde, 0x40, - 0xa5, 0x63, 0x97, 0x76, 0x56, 0x7c, 0x6d, 0x5e, 0x78, 0x1e, 0x7c, 0x5a, - 0x8b, 0x45, 0x83, 0x50, 0x8, 0x90, 0x33, 0x15, 0x4e, 0xa6, 0x4f, 0xd1, - 0xcd, 0xa9, 0xcb, 0xc5, 0xbf, 0x72, 0xcc, 0x4e, 0x48, 0x63, 0x55, 0x4b, - 0x1e, 0xe, 0x7d, 0xe8, 0xf8, 0xa4, 0xed, 0x1, 0xae, 0xf7, 0x38, 0x26, - 0xa, 0xf7, 0x38, 0xd5, 0x15, 0x8c, 0xf7, 0x4f, 0x5, 0xf8, 0x1e, 0x6, - 0x25, 0xfb, 0x44, 0x5, 0x68, 0x4e, 0x56, 0x3f, 0x42, 0x71, 0x94, 0x6c, - 0x77, 0x1a, 0x64, 0x72, 0x71, 0x64, 0x5f, 0x73, 0xaa, 0xb5, 0xcf, 0xc2, - 0xd7, 0xb4, 0xbf, 0x1e, 0xf7, 0xa, 0xf7, 0x34, 0x5, 0xfb, 0x6b, 0x6, - 0x76, 0x80, 0x84, 0x71, 0x84, 0x1f, 0x79, 0x54, 0x5, 0xe, 0x7d, 0xe7, - 0xf8, 0xab, 0xe7, 0x12, 0xae, 0xf7, 0x3f, 0xd7, 0xf7, 0x61, 0xfb, 0x34, - 0xf7, 0x2c, 0xf4, 0xf7, 0x3e, 0x13, 0xec, 0x23, 0xa, 0xf7, 0xad, 0x9d, - 0x15, 0x60, 0xa5, 0x75, 0xab, 0xc2, 0x1a, 0xe1, 0xcd, 0xbd, 0xdb, 0xcb, - 0xd5, 0x6c, 0x3e, 0x53, 0x6f, 0x73, 0x61, 0x70, 0x1e, 0xce, 0x6a, 0xbf, - 0x63, 0x3a, 0x1a, 0x20, 0x29, 0x50, 0x2a, 0x35, 0x2a, 0xb0, 0xf1, 0xd7, - 0xbc, 0xb0, 0xc8, 0xad, 0x1e, 0xf7, 0x4, 0xbf, 0x15, 0xaa, 0x9e, 0x9f, - 0xaa, 0xb0, 0x1a, 0xbb, 0x66, 0xa5, 0x5e, 0x66, 0x6a, 0x66, 0x65, 0x5f, - 0xb7, 0x7f, 0xac, 0x7a, 0x1e, 0x58, 0x34, 0x15, 0x13, 0xf4, 0x61, 0x75, - 0x6e, 0x5d, 0x5b, 0x1a, 0x50, 0xb5, 0x5c, 0xc7, 0xc4, 0xb9, 0xaf, 0xc7, - 0xbc, 0x60, 0xa5, 0x66, 0xa0, 0x1e, 0xe, 0x7d, 0xe7, 0xb0, 0xf7, 0x3e, - 0x5e, 0xb8, 0xf7, 0xdc, 0xe7, 0x12, 0xae, 0xf7, 0x36, 0xfb, 0x36, 0xf7, - 0x51, 0xd1, 0xf7, 0x55, 0xf7, 0x6, 0xf7, 0x2d, 0x13, 0xbb, 0x23, 0xa, - 0xf8, 0x5e, 0x90, 0x15, 0x5e, 0x6a, 0x54, 0x76, 0x54, 0x1b, 0x30, 0x4d, - 0xd3, 0xe9, 0xf7, 0x0, 0xe4, 0xc1, 0xf3, 0xf7, 0x27, 0xcb, 0xfb, 0xf, - 0xfb, 0x1c, 0x47, 0x82, 0x4a, 0x65, 0x52, 0x1f, 0x49, 0x61, 0x51, 0x77, - 0x3f, 0x1b, 0x13, 0xb7, 0x4f, 0x2d, 0xa7, 0xd5, 0xab, 0xa0, 0xa7, 0xad, - 0xa6, 0xa0, 0x73, 0x70, 0x1f, 0x7d, 0x85, 0x7f, 0x81, 0x1a, 0x13, 0xdb, - 0x70, 0xab, 0x80, 0xa0, 0xee, 0x9f, 0xf7, 0x1b, 0xd7, 0x1e, 0xfb, 0x5b, - 0xf7, 0x13, 0x15, 0x52, 0xa7, 0x50, 0xcb, 0xd1, 0xaa, 0xcb, 0xc8, 0xc2, - 0x66, 0xc5, 0x4f, 0x45, 0x71, 0x4e, 0x4e, 0x1e, 0xe, 0x7d, 0xe7, 0x2f, - 0xef, 0xf8, 0x4c, 0xf7, 0x47, 0x28, 0xee, 0x2f, 0xe7, 0x12, 0xae, 0xf7, - 0x55, 0xe8, 0xc4, 0xf1, 0xf7, 0x5, 0xeb, 0xcc, 0x13, 0x67, 0x80, 0x23, - 0xa, 0xf7, 0x15, 0xfb, 0x98, 0x15, 0xb0, 0x7, 0xad, 0x8e, 0x5, 0xb0, - 0x8d, 0x84, 0xa1, 0xa9, 0x1a, 0xf7, 0xb5, 0x7, 0xb5, 0x72, 0x87, 0x67, - 0x1e, 0x6b, 0x9e, 0x6, 0x13, 0x57, 0x80, 0xc4, 0x8e, 0x9b, 0xa3, 0xaa, - 0xc0, 0x8, 0xdd, 0xfc, 0x3e, 0x6, 0x56, 0x88, 0x8e, 0xc2, 0x86, 0x1e, - 0x98, 0x89, 0x5, 0x66, 0x7, 0x83, 0xf7, 0x93, 0x15, 0x13, 0x8f, 0x80, - 0xf7, 0xa, 0x93, 0xf7, 0x2e, 0xf7, 0x2a, 0xf7, 0x1e, 0x9a, 0xfb, 0x3c, - 0x23, 0xfb, 0x0, 0x7e, 0xfb, 0x2f, 0xfb, 0x1f, 0xfb, 0x29, 0x81, 0xf7, - 0x22, 0xf7, 0xd, 0x1e, 0xf1, 0x16, 0x60, 0x89, 0xfb, 0x48, 0xc6, 0xc4, - 0x8a, 0xf7, 0x4b, 0xb3, 0x1e, 0xf7, 0x45, 0x80, 0x81, 0xc4, 0x67, 0x1b, - 0x54, 0x8a, 0xfb, 0x57, 0x64, 0x1f, 0xe, 0x9b, 0xae, 0x76, 0xc3, 0xa4, - 0x86, 0xa5, 0xab, 0x9a, 0x97, 0xa3, 0x96, 0x9d, 0xf7, 0x6, 0xf7, 0x3d, - 0x67, 0xa5, 0x79, 0xa8, 0x70, 0xf7, 0x32, 0x12, 0x9e, 0xa4, 0xf8, 0x3b, - 0x9a, 0xf7, 0x7b, 0x9b, 0xb3, 0xa4, 0x13, 0xbc, 0xbc, 0xcf, 0xb5, 0x15, - 0xf7, 0x1f, 0xc2, 0x5, 0x13, 0xdc, 0xbc, 0x80, 0xaa, 0xb3, 0x7b, 0xac, - 0x1b, 0xb5, 0xb5, 0x9d, 0xa2, 0xb4, 0x1f, 0xd0, 0x70, 0xc9, 0xad, 0xc4, - 0x97, 0xa6, 0x67, 0xae, 0x78, 0xb6, 0xa9, 0x19, 0x8c, 0x8e, 0x8e, 0x86, - 0xdc, 0x32, 0x94, 0x91, 0x68, 0xf7, 0x5, 0x73, 0xb5, 0x9a, 0x8e, 0x98, - 0x94, 0x90, 0x9c, 0x19, 0x86, 0xf7, 0x24, 0xfb, 0xc, 0xf7, 0x18, 0x54, - 0x9f, 0x61, 0x8e, 0x5, 0x13, 0xbc, 0x7c, 0x3a, 0xf7, 0x20, 0x5, 0x40, - 0x6, 0xda, 0xfb, 0x1b, 0x25, 0x91, 0x58, 0x7a, 0xfb, 0x87, 0xfb, 0x34, - 0x58, 0x80, 0x5, 0x73, 0x66, 0x83, 0x53, 0x5f, 0x1a, 0x5c, 0x9f, 0x4b, - 0xa8, 0x67, 0x1e, 0x13, 0xbe, 0x3c, 0xf8, 0xec, 0xf7, 0xc0, 0x15, 0x3d, - 0xf7, 0x1b, 0xa0, 0x8a, 0xba, 0x79, 0xf7, 0x2, 0xfb, 0xc, 0x8e, 0xfb, - 0x16, 0x86, 0x82, 0x83, 0x8a, 0x83, 0x8c, 0x19, 0x69, 0xc5, 0x5, 0x94, - 0x95, 0x8f, 0x98, 0x97, 0x1a, 0xa2, 0x78, 0x9f, 0x73, 0x8f, 0x1e, 0x59, - 0xfb, 0x4b, 0x15, 0x78, 0xd3, 0xb2, 0x93, 0xc3, 0x29, 0x86, 0x7a, 0x6b, - 0x79, 0x74, 0xaa, 0x7b, 0xa1, 0x19, 0xfb, 0x20, 0x8c, 0x15, 0x81, 0x93, - 0x87, 0x93, 0x92, 0x1a, 0x99, 0x96, 0x97, 0x9e, 0x94, 0x1e, 0x8b, 0xc7, - 0x91, 0xa9, 0x90, 0x1e, 0x9e, 0x44, 0x54, 0x7f, 0x5, 0xfc, 0x7a, 0x44, - 0x15, 0x75, 0xaf, 0x7d, 0xb0, 0xb7, 0x1a, 0xb8, 0x8e, 0xaf, 0x9e, 0xac, - 0x1e, 0xb9, 0x95, 0x5, 0x13, 0xbd, 0x3c, 0xf7, 0x87, 0xf7, 0x36, 0xb8, - 0x98, 0xf7, 0x5, 0x85, 0xd5, 0xfb, 0x14, 0x5a, 0x93, 0x39, 0xad, 0x92, - 0xac, 0x79, 0x8e, 0x7b, 0x44, 0xfb, 0x24, 0x7d, 0x8c, 0x7c, 0xf7, 0x6a, - 0x9f, 0xf7, 0x4c, 0x70, 0x5, 0x9e, 0x88, 0x95, 0x7b, 0x7b, 0x1a, 0x81, - 0x88, 0x81, 0x82, 0x84, 0x1e, 0x77, 0x42, 0x2a, 0x7d, 0x4f, 0x1b, 0x6d, - 0x98, 0x65, 0x59, 0x43, 0x69, 0x4a, 0x89, 0x3e, 0x9d, 0x19, 0x88, 0x7c, - 0xd7, 0x79, 0xca, 0x8d, 0xd1, 0xa8, 0x19, 0xa6, 0x63, 0x5, 0x13, 0xdc, - 0xbc, 0x79, 0x6a, 0x63, 0x78, 0x65, 0x1b, 0x6c, 0x5f, 0x9d, 0x95, 0x6e, - 0x1f, 0xf7, 0x7b, 0x99, 0x15, 0x6f, 0xb4, 0x8e, 0x8d, 0xa0, 0xa6, 0xbe, - 0x92, 0x5, 0x82, 0x83, 0x82, 0x81, 0x7b, 0x1a, 0x7b, 0x95, 0x7f, 0x98, - 0x82, 0x1e, 0xbf, 0x81, 0x64, 0x76, 0x5, 0xe, 0x7d, 0xae, 0xf8, 0x52, - 0xa0, 0xf7, 0x4a, 0x74, 0xa, 0xf7, 0xbe, 0xc9, 0xf7, 0xb5, 0xae, 0x3, - 0x22, 0xa, 0xf7, 0xbe, 0x6b, 0xa, 0xc9, 0xf8, 0x6a, 0x51, 0x6, 0x7e, - 0x4a, 0x71, 0x70, 0x4d, 0x8a, 0x8, 0x76, 0xec, 0x7, 0xe, 0x7d, 0xae, - 0xe5, 0xbe, 0xf8, 0xb, 0xbd, 0xde, 0x74, 0xa, 0xf7, 0x3f, 0xc7, 0xf7, - 0x47, 0xcc, 0xf7, 0x42, 0xae, 0x3, 0x22, 0xa, 0xf7, 0x46, 0x6b, 0xa, - 0xf7, 0xbe, 0xbe, 0xfb, 0x7e, 0x6, 0x9a, 0xae, 0xae, 0xa0, 0xa9, 0x9f, - 0x8, 0xd7, 0xbe, 0xd8, 0xbb, 0xf2, 0x1a, 0xe4, 0x44, 0xc5, 0x35, 0x38, - 0x4a, 0x4d, 0xfb, 0x1, 0x8c, 0x1e, 0xc7, 0x86, 0x5, 0xd5, 0xa3, 0xbf, - 0xc9, 0xc6, 0xad, 0x5e, 0x52, 0x3d, 0x50, 0x66, 0x51, 0x65, 0x1e, 0x54, - 0x68, 0x4e, 0x58, 0x45, 0x1a, 0xe, 0x7d, 0xae, 0xde, 0xbf, 0xf8, 0x15, - 0xba, 0xdd, 0x4c, 0xa, 0xf8, 0x25, 0xc9, 0x5b, 0xc8, 0xf7, 0x41, 0xae, - 0x13, 0xfb, 0x22, 0xa, 0xf7, 0x4b, 0x30, 0x15, 0xfb, 0x3, 0x8a, 0xcf, - 0x63, 0xd3, 0x1b, 0xdb, 0xd5, 0xc0, 0xdf, 0xc2, 0x71, 0xb9, 0x54, 0x99, - 0x1f, 0x8d, 0x7, 0x13, 0xfd, 0xba, 0x9d, 0xa0, 0xa8, 0xbe, 0x1a, 0xdb, - 0x47, 0xbf, 0x40, 0x40, 0x50, 0x5c, 0x3f, 0x8d, 0x1e, 0xc1, 0x85, 0x5, - 0xbc, 0x89, 0xa5, 0xac, 0xc0, 0x1b, 0xc1, 0xa7, 0x6b, 0x56, 0x53, 0x5e, - 0x71, 0x58, 0x1f, 0x72, 0x8c, 0x5, 0x63, 0x7, 0x13, 0xfb, 0xc8, 0x92, - 0xd5, 0x6f, 0x42, 0x1a, 0x52, 0x66, 0x6f, 0x53, 0x56, 0x64, 0xb7, 0xc2, - 0x92, 0x1e, 0xe, 0x7d, 0xae, 0xf7, 0x64, 0xc0, 0xf8, 0x18, 0x74, 0xa, - 0xf7, 0xe6, 0xc2, 0xf7, 0x94, 0xae, 0x3, 0x22, 0xa, 0xf7, 0x16, 0xfb, - 0x9, 0x15, 0xf7, 0x64, 0xfb, 0xa, 0xc2, 0xf7, 0xa, 0xda, 0xc0, 0x3c, - 0xf7, 0xc5, 0x6, 0x58, 0x8c, 0xfb, 0x68, 0xfb, 0xc6, 0x5, 0xc3, 0x16, - 0xf7, 0x2c, 0xf7, 0x75, 0x5, 0xfb, 0x75, 0x7, 0xe, 0x7d, 0xae, 0xde, - 0xbd, 0xf7, 0x70, 0xc2, 0xee, 0xc0, 0xe4, 0x4c, 0xa, 0xf7, 0x54, 0xbf, - 0x5e, 0xbe, 0xf7, 0x41, 0xca, 0xf7, 0x37, 0xae, 0x13, 0xfe, 0xc0, 0x22, - 0xa, 0xf7, 0x54, 0xfb, 0xe, 0x15, 0x42, 0x8f, 0xc5, 0x5c, 0xd3, 0x1b, - 0xf2, 0xc4, 0xd4, 0xec, 0xdc, 0x55, 0xd5, 0x35, 0x1f, 0x13, 0xfd, 0xc0, - 0x66, 0x63, 0x82, 0x69, 0x78, 0x1f, 0xf7, 0x22, 0xf7, 0x76, 0xc0, 0xfb, - 0xa9, 0xfb, 0xab, 0x7, 0x13, 0xfe, 0xc0, 0xb8, 0x6, 0xb9, 0x93, 0xa9, - 0xa5, 0xbd, 0x1b, 0xc9, 0xa8, 0x60, 0x54, 0x48, 0x77, 0x54, 0x3d, 0x5f, - 0x64, 0xb0, 0xb8, 0x8d, 0x1f, 0xe, 0x7d, 0xae, 0xde, 0xb9, 0xf7, 0x67, - 0xbf, 0xf7, 0x10, 0xbe, 0xdd, 0x4c, 0xa, 0xf7, 0x37, 0xc3, 0x53, 0xcd, - 0xf7, 0x45, 0xc3, 0xf7, 0x4f, 0xae, 0x13, 0xfe, 0xc0, 0x22, 0xa, 0xf7, - 0x6f, 0x8a, 0x15, 0xe6, 0x9f, 0xf0, 0xe1, 0xbc, 0x9b, 0x70, 0x61, 0x94, - 0x1e, 0xbd, 0x98, 0x5, 0xcf, 0x81, 0x5f, 0xb2, 0x46, 0x1b, 0x53, 0x53, - 0x65, 0x58, 0x73, 0x1f, 0x75, 0x5b, 0x86, 0x54, 0x57, 0x1a, 0x59, 0x8f, - 0x4c, 0xa1, 0x5e, 0x1e, 0x58, 0xa3, 0xbd, 0x6c, 0xc4, 0x1b, 0xe4, 0xc0, - 0xda, 0xde, 0xd9, 0x5a, 0xd0, 0x38, 0x73, 0x74, 0x86, 0x7f, 0x78, 0x1f, - 0x77, 0x80, 0x7c, 0x7a, 0x81, 0x74, 0x8, 0x13, 0xfd, 0xc0, 0x95, 0x3b, - 0x15, 0xbf, 0xac, 0xb7, 0xc2, 0xcb, 0xa4, 0x5d, 0x53, 0x56, 0x76, 0x53, - 0x4d, 0x4b, 0x6d, 0xc3, 0xc6, 0x1e, 0xe, 0x7d, 0xae, 0xf8, 0x8e, 0xc1, - 0xe4, 0x74, 0xa, 0xf7, 0x3b, 0xf7, 0xcc, 0xf7, 0x3e, 0xae, 0x3, 0x22, - 0xa, 0xf7, 0x72, 0x6b, 0xa, 0xce, 0x6, 0xa4, 0xf7, 0x2e, 0xd7, 0xf7, - 0x1f, 0xe4, 0xf7, 0x13, 0x8, 0xbd, 0xfb, 0xcc, 0x55, 0xf7, 0x89, 0x7, - 0x29, 0xfb, 0xb, 0x48, 0xfb, 0x23, 0x72, 0xfb, 0x2e, 0x8, 0xe, 0x7d, - 0xae, 0xe8, 0xbf, 0xf7, 0x37, 0xc1, 0xf7, 0x32, 0xba, 0xdd, 0x4c, 0xa, - 0xf7, 0x44, 0xc3, 0x64, 0xc3, 0xf7, 0x35, 0xbf, 0x5e, 0xc3, 0xf7, 0x44, - 0xae, 0x13, 0xfe, 0x60, 0xf7, 0xe3, 0xf7, 0xfb, 0x15, 0x55, 0x7c, 0x68, - 0x64, 0x50, 0x1a, 0x39, 0xc9, 0x59, 0xdc, 0xdc, 0xd4, 0xb6, 0xe1, 0xc4, - 0x6d, 0xb6, 0x54, 0x9b, 0x1e, 0x8d, 0x7, 0x13, 0xfd, 0xa0, 0xbc, 0x9a, - 0xa4, 0xae, 0xc0, 0x1a, 0xd5, 0x50, 0xbd, 0x43, 0x43, 0x49, 0x5b, 0x3e, - 0x5c, 0xa7, 0x63, 0xb7, 0x7c, 0x1e, 0x7b, 0xf2, 0x15, 0xba, 0xab, 0xa9, - 0xba, 0xbd, 0xab, 0x6f, 0x5a, 0x58, 0x6b, 0x6d, 0x58, 0x56, 0x72, 0xaa, - 0xbd, 0x1e, 0x13, 0xfe, 0x60, 0x7a, 0xfb, 0x74, 0x15, 0xbe, 0xad, 0xb1, - 0xc0, 0xc4, 0xb4, 0x74, 0x4f, 0x52, 0x69, 0x74, 0x51, 0x56, 0x63, 0xa0, - 0xc0, 0x1e, 0xfb, 0x9f, 0xf5, 0x21, 0xa, 0xe, 0x7d, 0xae, 0xde, 0xbd, - 0xf7, 0x13, 0xbf, 0xf7, 0x67, 0xb7, 0xdd, 0x4c, 0xa, 0xf7, 0x42, 0xc3, - 0x67, 0xbc, 0xf7, 0x39, 0xcd, 0x53, 0xc3, 0xf7, 0x43, 0xae, 0x13, 0xfd, - 0x60, 0x22, 0xa, 0xf7, 0x56, 0xfb, 0x20, 0x15, 0x4a, 0x93, 0xb6, 0x66, - 0xce, 0x1b, 0xc9, 0xc1, 0xb5, 0xc2, 0xa2, 0x1f, 0x9c, 0xb3, 0x91, 0xd1, - 0xb7, 0x1a, 0xf1, 0x71, 0xf7, 0x17, 0xfb, 0x14, 0x1e, 0x13, 0xfe, 0x60, - 0x32, 0x52, 0x41, 0x36, 0x3b, 0xba, 0x47, 0xe0, 0xbd, 0xb6, 0xa1, 0xb9, - 0x9e, 0x1f, 0x43, 0x83, 0xfb, 0xf, 0x29, 0x1e, 0x13, 0xfd, 0xa0, 0x67, - 0x70, 0xa7, 0xad, 0x85, 0x1f, 0xd7, 0xf7, 0x9, 0x15, 0x13, 0xfe, 0xa0, - 0x4e, 0x6f, 0xb3, 0xc3, 0xc8, 0xa0, 0xc1, 0xd1, 0xc4, 0xa9, 0x53, 0x58, - 0x52, 0x70, 0x5c, 0x4d, 0x1f, 0xe, 0x7d, 0xae, 0xdd, 0xb8, 0xf8, 0x1e, - 0xb8, 0xde, 0x74, 0xa, 0xf7, 0x3a, 0xc8, 0xbc, 0xc3, 0xf7, 0x44, 0xc3, - 0xe0, 0xae, 0x3, 0xf8, 0x26, 0x4d, 0xa, 0xc4, 0x93, 0xf7, 0x1f, 0xdd, - 0xe2, 0x8a, 0xfb, 0x1b, 0x4e, 0x53, 0x85, 0xfb, 0x22, 0x3b, 0x35, 0x87, - 0xf7, 0x1d, 0xc8, 0x1e, 0x53, 0x16, 0x34, 0xab, 0xfb, 0x30, 0xf7, 0x6, - 0xf7, 0x17, 0x96, 0xf7, 0x23, 0xef, 0xeb, 0x79, 0xf7, 0x25, 0xfb, 0x10, - 0xfb, 0x18, 0x7d, 0xfb, 0x21, 0x27, 0x1e, 0xfb, 0xcb, 0x16, 0x20, 0xa, - 0xf7, 0x3a, 0x6b, 0xa, 0xc8, 0xf8, 0x6a, 0x58, 0x6, 0x85, 0x56, 0x65, - 0x69, 0x5b, 0x8c, 0x8, 0x6d, 0xdd, 0x7, 0xe, 0xd3, 0xa0, 0x76, 0xf7, - 0x5a, 0x96, 0xf8, 0x51, 0x77, 0x1, 0xf3, 0xf9, 0x2c, 0x3, 0xf8, 0xaa, - 0xf2, 0x15, 0xf7, 0x73, 0x24, 0x96, 0x96, 0xfb, 0x10, 0xf7, 0x74, 0xfc, - 0x37, 0xf8, 0x37, 0x75, 0x75, 0xf8, 0x39, 0xfc, 0x39, 0x6f, 0x89, 0xfc, - 0x2c, 0xf8, 0x2c, 0x80, 0x81, 0xf8, 0x2b, 0xfc, 0x2b, 0x7d, 0x68, 0xfc, - 0x36, 0xf8, 0x35, 0x5b, 0x5a, 0x5, 0xf8, 0x5c, 0xfc, 0x17, 0x15, 0xa0, - 0x97, 0x9a, 0xb2, 0xac, 0x8e, 0xd8, 0xfb, 0x17, 0x82, 0x82, 0x5, 0xe, - 0x7d, 0x72, 0xa, 0x1, 0xf7, 0xf6, 0xe5, 0x26, 0xa, 0xf7, 0xd3, 0x6b, - 0xa, 0xf7, 0xf8, 0x2a, 0xae, 0x7, 0xd2, 0x8c, 0xa8, 0xa1, 0x97, 0xd1, - 0x8, 0xd6, 0xfc, 0x78, 0x6, 0xe, 0x7d, 0xf7, 0x11, 0xf8, 0x7e, 0xf3, - 0x12, 0xae, 0xf7, 0x54, 0xfb, 0x54, 0xf7, 0x5c, 0xdb, 0xf7, 0x2c, 0xe7, - 0xf7, 0x57, 0x13, 0xec, 0x23, 0xa, 0x13, 0xdc, 0xf7, 0x5c, 0x6b, 0xa, - 0x89, 0xec, 0xce, 0xbf, 0xc5, 0xb0, 0x8, 0xc2, 0xae, 0xc1, 0xaf, 0xd4, - 0x1a, 0xbd, 0x72, 0xb1, 0x54, 0x54, 0x79, 0x5e, 0x46, 0x8c, 0x1e, 0x13, - 0xec, 0x33, 0x93, 0x5, 0xf7, 0x8, 0xd5, 0xc9, 0xe3, 0xe6, 0xda, 0x4a, - 0x2c, 0x22, 0x37, 0x5c, 0x3d, 0x57, 0x1e, 0x74, 0x7c, 0x6a, 0x77, 0x80, - 0x71, 0x8, 0xf7, 0x7a, 0x4a, 0x6, 0xe, 0x7d, 0xf7, 0xa, 0xcd, 0xf7, - 0x36, 0xc3, 0xf7, 0x25, 0xd0, 0xf2, 0x1, 0xf7, 0xd4, 0xf7, 0x2b, 0xe3, - 0xf7, 0x57, 0x26, 0xa, 0xf7, 0x60, 0x40, 0x15, 0xdc, 0x8c, 0x5, 0x4e, - 0x8f, 0x61, 0xcf, 0x8c, 0x1e, 0xbf, 0x8c, 0xa6, 0xab, 0xbd, 0x1a, 0xc3, - 0x66, 0xa2, 0x58, 0x1e, 0x5c, 0x88, 0x5, 0xc9, 0x7, 0xb2, 0x88, 0x5, - 0xbd, 0xac, 0xa4, 0xbf, 0xb3, 0x79, 0xa7, 0x5f, 0x50, 0x7e, 0x6b, 0x59, - 0x8d, 0x1f, 0x39, 0x94, 0x5, 0xe8, 0x89, 0xce, 0xbc, 0xe3, 0x1b, 0xd7, - 0xd5, 0x56, 0x3a, 0x5c, 0x79, 0x68, 0x60, 0x75, 0x1f, 0xbc, 0x71, 0xa3, - 0x6e, 0x4f, 0x1a, 0x30, 0x3e, 0x55, 0x36, 0x3f, 0x39, 0xb4, 0xe1, 0x1e, - 0xe, 0x7d, 0xf7, 0x11, 0xf8, 0x80, 0xf1, 0x12, 0xf7, 0x4e, 0xf7, 0xb7, - 0xfb, 0x5e, 0xf7, 0xb, 0x13, 0xd0, 0x23, 0xa, 0x13, 0xe0, 0xf7, 0x2b, - 0xfb, 0x9, 0x15, 0xc7, 0x7, 0xf7, 0x5f, 0xf7, 0xce, 0x5, 0xe3, 0xfb, - 0xc7, 0xdf, 0x48, 0x37, 0xfb, 0xa, 0x6, 0x13, 0xd0, 0x38, 0xf7, 0xa, - 0x6, 0x13, 0xe0, 0x13, 0xd0, 0xfb, 0xb, 0xce, 0x15, 0xf7, 0xb, 0xf7, - 0x56, 0x6, 0xe, 0x7d, 0xf7, 0xa, 0xf7, 0xf1, 0xd6, 0xce, 0xf7, 0x2, - 0x1, 0xf8, 0xce, 0xf7, 0x4c, 0x26, 0xa, 0xf7, 0x69, 0xfb, 0x2, 0x15, - 0xda, 0x9d, 0x5, 0x61, 0x87, 0xa5, 0x66, 0xb9, 0x1b, 0xd0, 0x9b, 0xc8, - 0xc5, 0xbb, 0x74, 0xb4, 0x54, 0x5a, 0x77, 0x6e, 0x61, 0x84, 0x1f, 0x44, - 0xf7, 0xaf, 0xf7, 0xbf, 0x48, 0xfb, 0x70, 0x2d, 0x6, 0x97, 0xa4, 0xa2, - 0x92, 0xa7, 0x1b, 0xef, 0xc7, 0x44, 0x2a, 0x27, 0x42, 0x3a, 0x26, 0x3c, - 0x49, 0xbd, 0xdd, 0x88, 0x1f, 0xe, 0x7d, 0xf7, 0xa, 0xd1, 0xf7, 0x4e, - 0xce, 0xf5, 0xd0, 0xf2, 0x1, 0xae, 0xf7, 0x4c, 0xe5, 0xf7, 0x2e, 0x26, - 0xa, 0xf7, 0xa0, 0xb9, 0x15, 0xa4, 0xa9, 0xa7, 0x95, 0xb2, 0x1b, 0xe4, - 0xc4, 0x47, 0x34, 0x31, 0x4d, 0x3d, 0x2d, 0xfb, 0x20, 0x6c, 0xf7, 0x1a, - 0xf7, 0x5, 0xf7, 0x4, 0xb2, 0xf7, 0x1f, 0xf7, 0x1e, 0xd7, 0xbf, 0x61, - 0x40, 0x95, 0x1f, 0x3f, 0x76, 0x5, 0xb0, 0x81, 0x86, 0xab, 0x5a, 0x1b, - 0x45, 0x78, 0x36, 0x53, 0x89, 0x1f, 0x91, 0xfb, 0xc, 0x15, 0x58, 0xa5, - 0x5c, 0xc5, 0xc2, 0x9a, 0xb9, 0xb8, 0xbb, 0x79, 0xba, 0x51, 0x59, 0x6f, - 0x5f, 0x5f, 0x1e, 0xe, 0x7d, 0x72, 0xa, 0x1, 0xf7, 0x73, 0xf7, 0xe8, - 0x26, 0xa, 0xf7, 0x9a, 0x6b, 0xa, 0xa2, 0xf7, 0x2c, 0xc1, 0xf7, 0x21, - 0xed, 0xf7, 0xf, 0x8, 0xfb, 0x8d, 0xcf, 0xf7, 0xe8, 0x4d, 0x6, 0x32, - 0xfb, 0x17, 0x3d, 0xfb, 0x18, 0x73, 0xfb, 0x33, 0x8, 0xe, 0x7d, 0xf7, - 0xa, 0xd0, 0xf7, 0x2a, 0xda, 0xf7, 0x16, 0xd0, 0xf3, 0x12, 0xae, 0xf7, - 0x59, 0xde, 0xf7, 0x33, 0xfb, 0x24, 0xf7, 0x1c, 0xe6, 0xf7, 0x59, 0x13, - 0xfb, 0x23, 0xa, 0xf7, 0xab, 0xa0, 0x15, 0x64, 0x9c, 0x72, 0xb5, 0xb4, - 0x1a, 0xdf, 0xd4, 0xbd, 0xd9, 0xd7, 0xd0, 0x56, 0x3a, 0x5b, 0x76, 0x6a, - 0x5e, 0x78, 0x1e, 0xbe, 0x6f, 0xa5, 0x6d, 0x4d, 0x1a, 0x34, 0x3d, 0x53, - 0x38, 0x33, 0x3f, 0xbc, 0xe9, 0xc1, 0xaa, 0xbb, 0xbe, 0x9d, 0x1e, 0x9b, - 0xef, 0x15, 0x62, 0xa2, 0x73, 0xb7, 0xb9, 0xa2, 0xa1, 0xb6, 0xb5, 0x75, - 0xa2, 0x5e, 0x5b, 0x76, 0x75, 0x60, 0x1e, 0x13, 0xfd, 0x7c, 0xfb, 0x70, - 0x15, 0x5c, 0xaa, 0x70, 0xbc, 0xc0, 0xa5, 0xa4, 0xbc, 0xbb, 0x6f, 0xa7, - 0x5a, 0x56, 0x6e, 0x72, 0x58, 0x1e, 0xe, 0x7d, 0xf7, 0xa, 0xd1, 0xf6, - 0xcf, 0xf7, 0x4d, 0xce, 0xf3, 0x1, 0xae, 0xf7, 0x57, 0xdf, 0xf7, 0x32, - 0xe0, 0xf7, 0x59, 0x26, 0xa, 0xf7, 0x6a, 0xfb, 0x14, 0x15, 0xd7, 0x99, - 0x5, 0x6c, 0x90, 0x9b, 0x70, 0xaf, 0x1b, 0xd4, 0x99, 0xe0, 0xc2, 0x8e, - 0x1f, 0x73, 0x72, 0x67, 0x82, 0x68, 0x1b, 0x30, 0x54, 0xce, 0xe3, 0xe7, - 0xcc, 0xd4, 0xea, 0xf7, 0x18, 0xae, 0xfb, 0xe, 0xfb, 0x3, 0x58, 0x86, - 0x3b, 0x72, 0x5e, 0x1f, 0x52, 0x6c, 0x54, 0x6c, 0x4b, 0x1b, 0x45, 0x57, - 0xb7, 0xd1, 0x85, 0x1f, 0xcc, 0xf7, 0x68, 0x15, 0x5c, 0xa3, 0x69, 0xbe, - 0xc3, 0xa1, 0xb4, 0xbc, 0xbc, 0x71, 0xb9, 0x53, 0x4e, 0x81, 0x51, 0x5d, - 0x1e, 0xe, 0x7d, 0xf7, 0x9, 0xfb, 0x9, 0x72, 0xa, 0x23, 0xf3, 0x12, - 0xae, 0xf7, 0x4f, 0xf7, 0x53, 0xf7, 0x29, 0xdf, 0xf7, 0x0, 0x13, 0x6e, - 0xf7, 0x72, 0xf7, 0x3, 0x15, 0xf7, 0xf6, 0x39, 0xad, 0x7, 0xc1, 0x8a, - 0xad, 0xb0, 0x90, 0xc7, 0x8, 0xd9, 0xfc, 0x78, 0x6, 0xfb, 0xa8, 0xf7, - 0x7f, 0x15, 0x2c, 0xa, 0xf7, 0xbb, 0x97, 0x15, 0x13, 0x9e, 0xf7, 0x2, - 0x9d, 0xf7, 0x19, 0xf7, 0x21, 0xf7, 0x1a, 0xa2, 0xfb, 0x1d, 0x21, 0xfb, - 0x2, 0x7a, 0xfb, 0x25, 0xfb, 0x20, 0xfb, 0xe, 0x66, 0xf7, 0x33, 0xeb, - 0x1e, 0xde, 0x16, 0x59, 0x8e, 0xfb, 0x26, 0xd4, 0xce, 0x91, 0xf7, 0x2a, - 0xb9, 0xbf, 0x8c, 0xf7, 0x1c, 0x41, 0x46, 0x84, 0xfb, 0x1f, 0x5a, 0x1e, - 0xe, 0xe9, 0xf7, 0x89, 0xd0, 0x49, 0xf7, 0xb, 0x6c, 0xce, 0x7c, 0xaa, - 0x1, 0xa2, 0xf7, 0x8c, 0x15, 0xf8, 0xf5, 0x6, 0xf7, 0x7a, 0xe0, 0x5, - 0x9a, 0x7, 0xfb, 0x8a, 0xd2, 0x5, 0xfc, 0xe5, 0x6c, 0xf8, 0xe8, 0x6, - 0x78, 0x76, 0x5, 0xfc, 0xd5, 0x7c, 0xf8, 0xd3, 0x6, 0x9a, 0x68, 0x5, - 0xfc, 0xe2, 0x6, 0xf8, 0xe8, 0x77, 0x15, 0x92, 0xa2, 0x7a, 0xb2, 0xa0, - 0xa4, 0xf7, 0x27, 0x65, 0x5, 0x7e, 0x7, 0xe, 0xc2, 0xa3, 0x76, 0xf7, - 0xb9, 0xe2, 0xf7, 0xba, 0x77, 0x1, 0xc1, 0xf9, 0xb9, 0x3, 0xc1, 0xf7, - 0xb5, 0x15, 0xf7, 0xc4, 0x9a, 0x5, 0xfb, 0xc0, 0x7, 0x8d, 0x8a, 0xf8, - 0x87, 0xf7, 0xe4, 0x75, 0xa, 0xfc, 0x87, 0xf7, 0xe4, 0x89, 0x8a, 0x5, - 0xfb, 0xc0, 0x7, 0xfb, 0xc4, 0x9a, 0x5, 0xe, 0x8a, 0xf7, 0x41, 0x76, - 0xf7, 0x4b, 0xa2, 0xf7, 0x4a, 0x54, 0xa, 0xf7, 0xe3, 0x15, 0xf8, 0xbe, - 0x6, 0x61, 0x57, 0x65, 0x4d, 0x8e, 0x46, 0xca, 0xe2, 0xf7, 0x12, 0xd1, - 0xf1, 0xb0, 0x25, 0xb0, 0xfb, 0x10, 0xd1, 0x4a, 0xe2, 0x8a, 0x4c, 0xab, - 0x3e, 0xb9, 0x61, 0x8, 0xfc, 0xbe, 0x6, 0xe, 0x49, 0xa, 0xf7, 0xba, - 0xfb, 0x8c, 0x5, 0xfb, 0x4b, 0xfb, 0x44, 0x15, 0xf7, 0x78, 0xf7, 0x44, - 0x5, 0xf8, 0x39, 0x6, 0xe, 0xf7, 0x45, 0xf7, 0x41, 0x76, 0xf7, 0x4b, - 0xa2, 0xf7, 0x4a, 0x77, 0x1, 0xad, 0x4d, 0xa, 0xf2, 0x65, 0xed, 0x45, - 0xcc, 0x35, 0x8c, 0xca, 0x6b, 0xd6, 0x5d, 0xb8, 0x8, 0xf8, 0xce, 0x6, - 0x61, 0x57, 0x64, 0x4d, 0x8f, 0x46, 0xca, 0xe2, 0xf0, 0xd1, 0xf0, 0xb0, - 0x25, 0xaf, 0x29, 0xd2, 0x4a, 0xe2, 0x8a, 0x4c, 0xaa, 0x3d, 0xba, 0x62, - 0x8, 0xfc, 0xce, 0x6, 0xb5, 0xbd, 0xb1, 0xc9, 0x88, 0xd1, 0x4c, 0x33, - 0x26, 0x45, 0x25, 0x67, 0x8, 0xe, 0xfc, 0x11, 0x23, 0x76, 0xfa, 0x45, - 0x77, 0x1, 0xf7, 0x6d, 0xa2, 0x3, 0xae, 0xf7, 0x1e, 0x15, 0xe2, 0x4c, - 0xd1, 0x28, 0xb0, 0x26, 0xaf, 0xf1, 0xd2, 0xeb, 0xe1, 0xcc, 0x4d, 0x8c, - 0x3d, 0x6c, 0x61, 0x5c, 0x8, 0xf8, 0xce, 0x7, 0xbe, 0x61, 0xc9, 0x65, - 0xd0, 0x8e, 0x34, 0xca, 0x45, 0xf0, 0x67, 0xf1, 0x65, 0x24, 0x45, 0x29, - 0x35, 0x4a, 0xca, 0x8a, 0xd6, 0xab, 0xb7, 0xb9, 0x8, 0xfc, 0xce, 0x7, - 0x58, 0xb5, 0x4d, 0xb2, 0x46, 0x87, 0x8, 0xe, 0xe0, 0xcb, 0x76, 0xf7, - 0x97, 0xd5, 0xf7, 0x98, 0x77, 0x1, 0xc3, 0xf9, 0xcc, 0x3, 0xc3, 0xf7, - 0xbc, 0x15, 0xf8, 0x12, 0x98, 0x5, 0xfb, 0x9d, 0x7, 0x8c, 0x8a, 0xf8, - 0x4d, 0xf7, 0xbc, 0x75, 0xa, 0xfc, 0x4d, 0xf7, 0xbb, 0x8a, 0x8a, 0x5, - 0xfb, 0x9d, 0x7, 0xfc, 0x12, 0x98, 0x5, 0xe, 0xda, 0xf7, 0xdb, 0xa5, - 0x71, 0xa6, 0x7f, 0x94, 0x12, 0x9f, 0xfa, 0x3, 0x13, 0x90, 0xc3, 0xf7, - 0xd9, 0x15, 0xf9, 0x1c, 0x8f, 0x3c, 0x7a, 0xfb, 0x0, 0x57, 0x75, 0x58, - 0x19, 0x7d, 0x85, 0x8c, 0x82, 0x8f, 0x1b, 0x8d, 0x8f, 0x8e, 0x8e, 0x8d, - 0x1f, 0xca, 0xe0, 0xf7, 0x5a, 0xb4, 0xf3, 0x9a, 0x8, 0x8d, 0x8c, 0x8c, - 0x8d, 0x8c, 0x1f, 0x13, 0x30, 0x8e, 0x8d, 0x8e, 0x8e, 0x95, 0x1b, 0x92, - 0x8c, 0x94, 0x8e, 0x8e, 0x1a, 0x8c, 0x88, 0x8c, 0x88, 0x1e, 0xfb, 0x19, - 0x95, 0xfb, 0x2f, 0xb1, 0x46, 0xe6, 0x8, 0x8d, 0x89, 0x89, 0x8e, 0x8a, - 0x1b, 0x89, 0x8d, 0x81, 0x80, 0x8f, 0x1f, 0xa2, 0x53, 0xdd, 0x67, 0xd7, - 0x6d, 0x8, 0x13, 0x50, 0xfc, 0xf7, 0x8d, 0x5, 0x70, 0x66, 0x94, 0x8d, - 0x78, 0x1f, 0x88, 0x8c, 0x87, 0x89, 0x88, 0x1a, 0x88, 0x8e, 0x88, 0x90, - 0x86, 0x1e, 0x90, 0x86, 0x95, 0x7e, 0x9a, 0x84, 0x8, 0xe, 0xe3, 0xc0, - 0x76, 0xf7, 0x7c, 0xf7, 0x38, 0xf7, 0x7c, 0x77, 0x12, 0xae, 0xf9, 0xed, - 0x17, 0xf8, 0xda, 0xf7, 0x9c, 0x15, 0x4d, 0x4d, 0x5, 0x76, 0x74, 0x7d, - 0x74, 0x6a, 0x1a, 0x57, 0xb3, 0x64, 0xbe, 0xaf, 0xa4, 0xa3, 0xa4, 0xa0, - 0x1e, 0x13, 0x30, 0xf7, 0x7e, 0xf7, 0x9d, 0xfb, 0x81, 0xf7, 0xa1, 0x5, - 0xa3, 0x77, 0x72, 0xa0, 0x6a, 0x1b, 0x13, 0x50, 0x56, 0x64, 0x61, 0x56, - 0x6f, 0xa1, 0x70, 0x9e, 0x78, 0x1f, 0xc3, 0x4c, 0x5, 0xfc, 0x48, 0x6, - 0x51, 0x56, 0x7a, 0x4a, 0x47, 0xbf, 0x7d, 0xc6, 0x1f, 0xe, 0xe4, 0xf7, - 0x2a, 0x76, 0xf7, 0x5c, 0xac, 0xf7, 0x5c, 0x54, 0xa, 0xf9, 0xec, 0x3, - 0xae, 0xf7, 0xdd, 0x15, 0xf8, 0xff, 0xfb, 0x5c, 0x6, 0xf7, 0x81, 0xf7, - 0x6d, 0xfb, 0x81, 0xf7, 0x6c, 0x5, 0xfb, 0x5c, 0xfc, 0xff, 0x7, 0xe, - 0xe4, 0xf7, 0x29, 0x76, 0xf7, 0x34, 0xf7, 0x8, 0xf7, 0x33, 0x54, 0xa, - 0xf9, 0xee, 0x3, 0xae, 0xf7, 0xb4, 0x15, 0xf8, 0xff, 0xfb, 0x34, 0x6, - 0xf7, 0x83, 0xf7, 0x6e, 0xfb, 0x83, 0xf7, 0x6d, 0x5, 0xfb, 0x33, 0xfc, - 0xff, 0x7, 0xe, 0xf5, 0x43, 0x76, 0xf9, 0xd6, 0x77, 0x1, 0x34, 0xa, - 0xfc, 0x7d, 0xfc, 0xc3, 0x15, 0xb5, 0x64, 0xf7, 0xc, 0xd6, 0xf7, 0x25, - 0xaf, 0xf7, 0x1f, 0x99, 0x19, 0xbc, 0xf7, 0x58, 0xcb, 0xd9, 0xf7, 0x11, - 0xf7, 0x2e, 0x8, 0x8e, 0x94, 0x8d, 0x93, 0x94, 0x1a, 0xb6, 0x61, 0xb8, - 0x5d, 0x7b, 0x7b, 0x86, 0x7e, 0x7b, 0x1e, 0xfb, 0x19, 0xfb, 0x1e, 0x21, - 0x36, 0xfb, 0x32, 0xfb, 0x0, 0x6a, 0x31, 0x4d, 0xfb, 0x7, 0x4e, 0x41, - 0x8, 0xb1, 0x95, 0x15, 0xa3, 0xa9, 0xa7, 0xb3, 0x9b, 0xa8, 0xa7, 0xbd, - 0xa4, 0xbe, 0x9e, 0xbf, 0xe0, 0xc5, 0xde, 0xc8, 0xd8, 0xce, 0xbe, 0xb7, - 0xba, 0xba, 0xba, 0xbb, 0x8, 0x95, 0x95, 0x8f, 0x90, 0x9b, 0x1b, 0xa9, - 0xad, 0x6d, 0x6d, 0x81, 0x87, 0x85, 0x86, 0x84, 0x1f, 0x72, 0x6b, 0x70, - 0x6b, 0x73, 0x6a, 0x3d, 0x24, 0x61, 0x38, 0x6a, 0xfb, 0x11, 0xfb, 0x0, - 0x7f, 0xfb, 0xa, 0x6e, 0x26, 0x5b, 0x7b, 0x84, 0x78, 0x80, 0x81, 0x84, - 0x8a, 0x8c, 0x18, 0xf7, 0x21, 0xf7, 0x2a, 0x5, 0xa8, 0xab, 0xae, 0xa7, - 0x92, 0x84, 0x93, 0x83, 0x6e, 0x65, 0x68, 0x6d, 0x90, 0x1f, 0xfb, 0x1d, - 0xfb, 0x2c, 0x5, 0xe, 0x86, 0xf7, 0x44, 0x76, 0xf2, 0xf7, 0x44, 0xf2, - 0x54, 0xa, 0xa4, 0xcb, 0xba, 0xaf, 0xd9, 0x3, 0xf7, 0xca, 0xf7, 0x96, - 0x15, 0xf7, 0x99, 0x24, 0x6, 0xf7, 0x78, 0xf7, 0x53, 0xfb, 0x78, 0xf7, - 0x53, 0x5, 0x24, 0xfb, 0x99, 0x7, 0x24, 0xfb, 0x44, 0x15, 0xd9, 0xf7, - 0x44, 0x3d, 0x6, 0x38, 0xfb, 0x44, 0x15, 0xba, 0xf7, 0x44, 0x5c, 0x6, - 0x32, 0xfb, 0x44, 0x15, 0xa4, 0xf7, 0x44, 0x72, 0x6, 0xe, 0xad, 0xf7, - 0x6, 0x76, 0xf8, 0x8e, 0x54, 0xa, 0xa2, 0xd3, 0xab, 0xc6, 0xbe, 0xb1, - 0xd5, 0x3, 0xf8, 0x2c, 0xf7, 0x5b, 0x15, 0xf7, 0x3a, 0x21, 0x92, 0x6, - 0xb7, 0xf7, 0xb, 0xf4, 0xe3, 0xf7, 0x0, 0xb9, 0xfb, 0x2, 0xba, 0xfb, - 0x0, 0xe6, 0x64, 0xf7, 0x7, 0x8, 0x84, 0x21, 0xfb, 0x3a, 0x6, 0x29, - 0xfb, 0xba, 0x15, 0xd5, 0xf7, 0xba, 0x41, 0x6, 0x32, 0xfb, 0xba, 0x15, - 0xbe, 0xf7, 0xba, 0x58, 0x6, 0x30, 0xfb, 0xba, 0x15, 0xab, 0xf7, 0xba, - 0x6b, 0x6, 0x2c, 0xfb, 0xba, 0x15, 0xa2, 0xf7, 0xba, 0x74, 0x6, 0xe, - 0x80, 0xf7, 0x11, 0x76, 0xf8, 0x78, 0x54, 0xa, 0xf9, 0x88, 0x3, 0xae, - 0xf7, 0x5d, 0x15, 0xf8, 0x8b, 0x2a, 0x6, 0xf7, 0x91, 0xf7, 0x86, 0xfb, - 0x91, 0xf7, 0x86, 0x5, 0x2a, 0xfc, 0x8b, 0x7, 0xe, 0x49, 0xa, 0xf7, - 0xbc, 0xfb, 0x8c, 0x5, 0xb8, 0x16, 0xfb, 0x70, 0xf7, 0x44, 0xf9, 0x13, - 0xfb, 0x44, 0x5, 0xe, 0xd9, 0x3d, 0xa, 0xf9, 0xe3, 0x7a, 0xa, 0xf9, - 0xe3, 0xf7, 0xee, 0xfd, 0xe3, 0xf7, 0xee, 0xf7, 0x67, 0xfb, 0xee, 0x5, - 0xe, 0xe6, 0xf4, 0x76, 0xf7, 0xaf, 0xd8, 0xf7, 0x38, 0x54, 0xa, 0xb3, - 0x3, 0xf8, 0xb5, 0xdf, 0x15, 0x76, 0xa, 0x23, 0xfb, 0xcb, 0x7, 0x25, - 0x8a, 0x52, 0xa8, 0xf7, 0x1c, 0x1a, 0x63, 0xfb, 0x85, 0x6, 0x8c, 0x4e, - 0x8b, 0x6f, 0xb8, 0x5c, 0x8, 0x62, 0xb1, 0xb9, 0x87, 0xc0, 0x1b, 0xf7, - 0xdb, 0x6, 0xe, 0xe7, 0xf4, 0x76, 0xf7, 0x37, 0xf7, 0x97, 0xf1, 0x54, - 0xa, 0xb3, 0x3, 0xae, 0xdf, 0x15, 0xb3, 0x6, 0xf7, 0x1c, 0xc5, 0xa7, - 0xf1, 0x8a, 0x1e, 0xf7, 0xca, 0x24, 0x6, 0x76, 0xa, 0x25, 0xfb, 0xdb, - 0x7, 0x56, 0x5e, 0x86, 0x62, 0x64, 0x1f, 0x5f, 0x5d, 0x8a, 0x6e, 0x8a, - 0x4f, 0x8, 0xe, 0xfc, 0xc, 0x3d, 0x76, 0xfa, 0xe, 0x54, 0xa, 0xf8, - 0x1e, 0x3, 0xae, 0xc2, 0x15, 0xf7, 0x14, 0xfb, 0x2e, 0x6, 0xf7, 0x9e, - 0xf8, 0x51, 0xfb, 0x9e, 0xf8, 0x51, 0x5, 0xfb, 0x2e, 0xfb, 0x14, 0x7, - 0xe, 0xb7, 0xe7, 0x76, 0xf8, 0xbc, 0x77, 0x1, 0xf8, 0x42, 0x96, 0x3, - 0xae, 0xf7, 0x38, 0x15, 0xf8, 0x1f, 0x2e, 0x96, 0x6, 0xae, 0xd2, 0xf7, - 0x7e, 0xf7, 0x71, 0xf7, 0x1e, 0x77, 0x8, 0x94, 0x7, 0xfb, 0x3d, 0x9f, - 0xfb, 0x29, 0xf6, 0x32, 0xf7, 0x24, 0x8, 0x80, 0x2d, 0xfc, 0x1f, 0x6, - 0xe, 0x88, 0xb7, 0xa0, 0x76, 0x6c, 0xa, 0x76, 0xa0, 0x12, 0xae, 0xa5, - 0xf7, 0xe4, 0xa5, 0x13, 0xb7, 0xae, 0xf7, 0x5d, 0x15, 0xf7, 0xfe, 0x6, - 0x13, 0x4b, 0xfb, 0x31, 0xf7, 0x28, 0x7, 0xf7, 0x95, 0xf7, 0xc2, 0xfb, - 0x95, 0xf7, 0xc2, 0x5, 0xfb, 0x28, 0x6, 0x13, 0xb7, 0xfb, 0x31, 0xfb, - 0xfe, 0x7, 0xa5, 0xfb, 0x9d, 0x15, 0xf7, 0x84, 0xf7, 0xfe, 0xf7, 0x35, - 0x7, 0xf7, 0x8e, 0xfb, 0xad, 0xfb, 0x8e, 0x7d, 0xa, 0xf7, 0x1b, 0x50, - 0x76, 0xf8, 0x57, 0xf7, 0x47, 0x8b, 0xb3, 0x8b, 0xa0, 0xf7, 0x16, 0x77, - 0x1, 0xc6, 0xf9, 0xde, 0x3, 0x34, 0xa, 0xfc, 0x6f, 0xfc, 0xc1, 0x15, - 0x96, 0x83, 0xf7, 0x2b, 0xf7, 0x3b, 0x5, 0xa9, 0x86, 0xb1, 0xae, 0xa8, - 0x1b, 0x93, 0x92, 0x83, 0x84, 0x6f, 0x6b, 0x68, 0x6e, 0x1f, 0xfb, 0x30, - 0xfb, 0x3a, 0x93, 0x83, 0xf7, 0x6, 0xd2, 0xf7, 0x2b, 0xb0, 0xf7, 0x15, - 0x99, 0x19, 0xb8, 0xf7, 0x4a, 0xca, 0xdd, 0xf7, 0x9, 0xf7, 0x24, 0x8, - 0x89, 0x6, 0xbd, 0x91, 0x6f, 0xbd, 0x52, 0x1b, 0x83, 0x83, 0x89, 0x8a, - 0x83, 0x1f, 0x6b, 0x69, 0xfb, 0x1, 0xfb, 0x5, 0xfb, 0x10, 0x2e, 0xfb, - 0x15, 0x33, 0x19, 0x6f, 0x3e, 0x4c, 0xfb, 0xf, 0x50, 0x44, 0x8, 0xe, - 0xa7, 0x90, 0xf9, 0x4e, 0x1, 0xc5, 0xf9, 0x73, 0x3, 0xf3, 0xf7, 0xbe, - 0x15, 0xbc, 0xf7, 0x44, 0xf7, 0x8f, 0x64, 0x5, 0x8b, 0xc8, 0xf7, 0x51, - 0x88, 0x1a, 0x88, 0x8a, 0xf7, 0xa7, 0xfb, 0x86, 0x8b, 0x1a, 0x88, 0x7, - 0x8e, 0xfc, 0x28, 0xfb, 0x75, 0x8b, 0x1e, 0x8a, 0xb9, 0xf7, 0x48, 0x8b, - 0x1e, 0xfb, 0xd5, 0xfb, 0x16, 0x15, 0xf7, 0x92, 0xb4, 0x6b, 0xfb, 0x16, - 0x88, 0xfb, 0x0, 0xf8, 0x98, 0xf7, 0xad, 0x5, 0xf5, 0x7, 0xfb, 0xee, - 0xf7, 0xcb, 0x44, 0xfb, 0x6e, 0xfb, 0x91, 0xb2, 0x4d, 0xfb, 0x76, 0x5, - 0xe, 0xfb, 0x23, 0xcc, 0x76, 0xe4, 0xe4, 0xf7, 0xb8, 0xa8, 0xf4, 0x54, - 0xa, 0xa7, 0xf7, 0x78, 0xa5, 0x3, 0xf7, 0xd, 0xf7, 0x19, 0x15, 0xf7, - 0x3e, 0x71, 0x6, 0xd7, 0x4c, 0xf7, 0xba, 0xf7, 0xb0, 0xfc, 0x6, 0xf7, - 0xd4, 0x5, 0x22, 0xfb, 0x94, 0xfb, 0xe6, 0x7, 0xa7, 0x9c, 0x15, 0xf7, - 0xb8, 0xf7, 0x92, 0xd6, 0x7, 0xf7, 0x96, 0xfb, 0x72, 0xfb, 0x96, 0xfb, - 0x88, 0x5, 0xee, 0x7, 0xe, 0xae, 0xed, 0x76, 0xeb, 0xcf, 0xf7, 0x99, - 0xa5, 0xe6, 0x77, 0x1, 0xf8, 0xb6, 0xa3, 0x3, 0xf3, 0xf7, 0x41, 0x15, - 0xf8, 0x4e, 0x66, 0x6, 0xc9, 0x50, 0xf7, 0x7c, 0xf7, 0x8a, 0xfb, 0xba, - 0xf7, 0xbc, 0x5, 0x30, 0xfc, 0x91, 0x7, 0xd8, 0xfb, 0x31, 0x3c, 0xfb, - 0x16, 0x5, 0xa7, 0x16, 0xd9, 0xf7, 0x16, 0x4b, 0xf7, 0x17, 0x5, 0xf8, - 0x81, 0xc7, 0x6, 0xf7, 0x4e, 0xfb, 0x53, 0xfb, 0x4e, 0xfb, 0x4b, 0x5, - 0xc0, 0x7, 0xe, 0x3c, 0x9c, 0x76, 0xf9, 0x43, 0x77, 0x1, 0xb6, 0xf7, - 0x3c, 0x3, 0xb6, 0xf7, 0xe8, 0x15, 0xfb, 0x52, 0xf7, 0x2b, 0xfb, 0x2e, - 0xf7, 0x4e, 0xf7, 0x4e, 0xf7, 0x2b, 0xf7, 0x2e, 0xf7, 0x52, 0xf7, 0x52, - 0xfb, 0x2b, 0xf7, 0x2d, 0xfb, 0x4e, 0xfb, 0x4e, 0xfb, 0x2b, 0xfb, 0x2d, - 0xfb, 0x52, 0x1e, 0xf7, 0x3c, 0xfb, 0xb4, 0x15, 0xf8, 0xd4, 0x7, 0x8c, - 0x8c, 0xf8, 0x87, 0xfb, 0xb4, 0x80, 0xa, 0xfc, 0x87, 0xfb, 0xb4, 0x5, - 0xe, 0xf6, 0xf7, 0xb, 0x76, 0xf7, 0xd, 0xad, 0xd2, 0xab, 0xd2, 0xad, - 0xf7, 0xd, 0x77, 0x1, 0xf9, 0x3a, 0xac, 0x3, 0xb2, 0xf7, 0x6f, 0x15, - 0xf7, 0xed, 0x6, 0xec, 0xf4, 0x5, 0xf7, 0x59, 0xfb, 0x76, 0x6, 0xf7, - 0x7d, 0xf7, 0x86, 0xfb, 0x7d, 0xf7, 0x86, 0x5, 0xfb, 0x76, 0xfb, 0x59, - 0x7, 0x2a, 0xf4, 0x5, 0xfb, 0xed, 0x6, 0xf7, 0x6, 0xfb, 0xd, 0x5, - 0xf8, 0xc2, 0xfb, 0x3b, 0x15, 0xf7, 0xe2, 0x7, 0xf7, 0x32, 0xfb, 0x3b, - 0x5, 0xfd, 0x8b, 0x34, 0x15, 0xdf, 0xe2, 0x37, 0xe2, 0x5, 0xf7, 0x9f, - 0x6, 0xda, 0x34, 0x3c, 0x34, 0x5, 0xe, 0xa5, 0xf8, 0x87, 0xf7, 0xda, - 0x15, 0xf7, 0x2d, 0x6, 0x71, 0x69, 0x8b, 0x5c, 0xaa, 0x6a, 0xb3, 0xc7, - 0xce, 0xb4, 0xcd, 0xb2, 0x48, 0xa6, 0x49, 0xb3, 0x63, 0xc8, 0x69, 0x6e, - 0x8e, 0x54, 0xa5, 0x6d, 0x8, 0xfb, 0x2d, 0x6, 0xfc, 0x64, 0xfb, 0x33, - 0x15, 0xf7, 0xe8, 0x6, 0xf7, 0xb, 0xf7, 0xb, 0x5, 0xfb, 0xe6, 0x6, - 0xb3, 0x4, 0xf7, 0xe6, 0x6, 0x90, 0xfb, 0x11, 0xf7, 0x7, 0x8b, 0x1f, - 0xfb, 0xe7, 0x6, 0xe, 0xf7, 0x14, 0xf7, 0x25, 0x76, 0xf7, 0x61, 0xad, - 0xf7, 0x61, 0x77, 0x1, 0xf7, 0x4a, 0xf8, 0x73, 0x3, 0xae, 0xf7, 0x23, - 0x15, 0xf7, 0xe6, 0x6, 0x91, 0xc0, 0xa0, 0xd2, 0xb6, 0xaa, 0x8, 0xa9, - 0xb5, 0xd8, 0x8c, 0xbd, 0x1b, 0xe7, 0x6, 0x56, 0x53, 0x88, 0x31, 0x98, - 0x50, 0xd5, 0xe6, 0xe2, 0xe2, 0xf7, 0x2, 0xb7, 0xfb, 0x2, 0xb9, 0x30, - 0xdd, 0x45, 0xe9, 0x7e, 0x64, 0x90, 0xfb, 0x7, 0xbe, 0x58, 0x8, 0x2f, - 0x6, 0x4f, 0x4e, 0x8b, 0xb5, 0x5b, 0x1f, 0x65, 0xab, 0x70, 0xc8, 0x86, - 0xbe, 0x8, 0xfb, 0xe6, 0x6, 0x97, 0x30, 0xbb, 0x3d, 0xe2, 0x69, 0x35, - 0x6c, 0x56, 0x37, 0x83, 0x33, 0x8, 0xe, 0x83, 0xf7, 0xb, 0x76, 0xf7, - 0x64, 0xd3, 0x5b, 0xa1, 0xf7, 0x7c, 0x77, 0x12, 0xa3, 0xf9, 0xa3, 0x13, - 0xb8, 0xf9, 0x7e, 0xf7, 0xde, 0x15, 0x60, 0x71, 0xfb, 0x6, 0x45, 0x45, - 0x62, 0x8, 0x63, 0x74, 0x83, 0x7b, 0x75, 0x1a, 0x72, 0xa3, 0x82, 0x95, - 0x9e, 0x93, 0x94, 0xa7, 0xa5, 0x1e, 0xcd, 0xd1, 0xf4, 0xe9, 0xd9, 0xb6, - 0x8, 0x89, 0x7, 0x8d, 0x7, 0x3b, 0xb6, 0x23, 0xe6, 0x49, 0xd2, 0x8, - 0xa7, 0x71, 0x82, 0x94, 0x78, 0x1b, 0x81, 0x75, 0x82, 0x72, 0x75, 0x94, - 0x7b, 0xb3, 0x74, 0x1f, 0xd1, 0x63, 0xf7, 0x7, 0x44, 0xb4, 0x71, 0x8, - 0x13, 0xd8, 0xfb, 0xaf, 0xfb, 0xb5, 0xa5, 0x2f, 0x1b, 0x64, 0x78, 0x7d, - 0x74, 0x72, 0xa0, 0x81, 0xb1, 0x1f, 0x13, 0xb8, 0xea, 0xf7, 0xbc, 0xa3, - 0xf7, 0xa4, 0x1b, 0xe, 0xad, 0xdc, 0x76, 0xf7, 0x9f, 0xa3, 0xf7, 0xa5, - 0x77, 0x1, 0xf9, 0xab, 0xf7, 0xdb, 0x15, 0x5e, 0x71, 0xfb, 0x7, 0x55, - 0x35, 0x71, 0x8, 0x4d, 0x78, 0x8e, 0x58, 0x66, 0x1a, 0x62, 0xc1, 0x7e, - 0xb4, 0x9c, 0xa9, 0xa1, 0x9d, 0x98, 0x1e, 0xc9, 0xe0, 0xc6, 0xf7, 0x3, - 0xdd, 0xb7, 0x38, 0xb8, 0x42, 0xf7, 0xf, 0x4c, 0xe1, 0x8, 0x9c, 0x7f, - 0x6f, 0x98, 0x7a, 0x1b, 0x5c, 0x5f, 0x70, 0x62, 0x63, 0xa4, 0x61, 0xb6, - 0x7a, 0x1f, 0xde, 0x6c, 0xf7, 0xa, 0x5a, 0xb7, 0x71, 0x8, 0xfb, 0xbb, - 0xfb, 0x96, 0xe7, 0x2b, 0x1b, 0x54, 0x52, 0x41, 0x6d, 0x64, 0xc3, 0x4b, - 0xc4, 0x1f, 0xee, 0xf7, 0x9f, 0xe6, 0xf7, 0xaf, 0x1b, 0xe, 0xe3, 0xf7, - 0x5f, 0xf7, 0xa6, 0x1, 0xa9, 0xf9, 0xf8, 0x3, 0xa9, 0xf7, 0x5f, 0x15, - 0xf9, 0x19, 0x6, 0xf7, 0x73, 0xf7, 0x1c, 0x75, 0xa, 0xfb, 0x73, 0xf7, - 0x1c, 0x5, 0xfd, 0x19, 0x6, 0xf7, 0x18, 0xfb, 0x1c, 0x80, 0xa, 0xe, - 0x37, 0x93, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xad, 0xf9, 0x43, 0x3, 0xf8, - 0x66, 0xf8, 0xb6, 0x15, 0xfb, 0xf2, 0xfb, 0x7f, 0x7b, 0x74, 0x81, 0x1b, - 0x80, 0x82, 0xa7, 0x93, 0x88, 0x1f, 0xca, 0x71, 0x89, 0x9c, 0x77, 0x1b, - 0x71, 0x6d, 0x7a, 0x7c, 0x76, 0x1f, 0x7e, 0x82, 0x81, 0x83, 0x7a, 0x1a, - 0x59, 0xb2, 0x27, 0xa1, 0x5d, 0x1e, 0x92, 0x7d, 0x90, 0x7d, 0x95, 0x84, - 0x8, 0x86, 0x92, 0x9a, 0x8b, 0xab, 0x1b, 0x99, 0xa7, 0x8c, 0x90, 0x92, - 0x1f, 0x94, 0x91, 0xf7, 0xf3, 0xf8, 0xd0, 0xf7, 0xb, 0xf7, 0x5, 0xa1, - 0xa0, 0x18, 0x55, 0x33, 0x77, 0x63, 0x67, 0x1f, 0xe, 0xf7, 0x17, 0xd4, - 0xf8, 0xaa, 0x1, 0xa9, 0xf9, 0xf8, 0x3, 0xa9, 0xd4, 0x15, 0xf9, 0x19, - 0x6, 0xf7, 0x73, 0xf7, 0x9e, 0x75, 0xa, 0xfb, 0x73, 0xf7, 0x9e, 0x5, - 0xfd, 0x19, 0x6, 0xf7, 0x18, 0xfb, 0x9e, 0x80, 0xa, 0xe, 0xda, 0x91, - 0xf9, 0x30, 0x1, 0xe4, 0xf9, 0xa2, 0x3, 0xe4, 0x91, 0x15, 0xf9, 0xa2, - 0xf7, 0xe1, 0x75, 0xa, 0xfd, 0xa2, 0xf7, 0xe1, 0x5, 0x38, 0x7, 0xf8, - 0xe7, 0xfb, 0x8e, 0x80, 0xa, 0xfc, 0xe7, 0xfb, 0x8e, 0x5, 0x95, 0xf7, - 0x16, 0x15, 0xf7, 0xe1, 0xf7, 0xc, 0x75, 0xa, 0xfb, 0xe1, 0xf7, 0xc, - 0x5, 0xe, 0x30, 0xbb, 0x76, 0xf8, 0x87, 0x77, 0x1, 0xd4, 0xf8, 0xef, - 0x3, 0xf7, 0x12, 0xdd, 0x15, 0xf7, 0x63, 0xf7, 0x38, 0xf7, 0x2f, 0xfb, - 0x6e, 0x8c, 0x8a, 0xf7, 0x4f, 0xf8, 0x87, 0x5, 0x8a, 0x6, 0xfc, 0xa9, - 0x81, 0x8c, 0x8a, 0xf7, 0x2d, 0xfb, 0x6e, 0xfb, 0x73, 0xfb, 0x1f, 0x5, - 0xe, 0x88, 0xb7, 0x6c, 0xa, 0x12, 0xae, 0xf7, 0x4, 0xf7, 0x81, 0xf7, - 0xb, 0x13, 0x6c, 0xae, 0xf7, 0x5d, 0x15, 0xf7, 0xf1, 0x6, 0x13, 0x9c, - 0xfb, 0x31, 0xf7, 0x1a, 0x7, 0xf7, 0xb0, 0xf7, 0xc2, 0xfb, 0xb0, 0xf7, - 0xc2, 0x5, 0xfb, 0x1a, 0x6, 0x13, 0xac, 0xfb, 0x31, 0xfb, 0xf1, 0x7, - 0xf7, 0x4, 0xfb, 0x9d, 0x15, 0xf7, 0x84, 0xf7, 0xf8, 0xf7, 0x35, 0x7, - 0xf7, 0x9c, 0xfb, 0xad, 0xfb, 0x9c, 0x7d, 0xa, 0x47, 0xc5, 0x76, 0xf8, - 0x91, 0xea, 0x99, 0x77, 0x12, 0xf8, 0xee, 0xe0, 0x13, 0xb0, 0xf8, 0x7e, - 0xf8, 0x3d, 0x15, 0xf7, 0x4, 0xe7, 0x8f, 0x63, 0xb4, 0x6d, 0xb3, 0x80, - 0x19, 0x88, 0xe5, 0xaa, 0xcf, 0xa0, 0xc8, 0x8, 0x13, 0xd0, 0x45, 0x77, - 0x3b, 0x7c, 0x44, 0xa0, 0x8c, 0x66, 0xa7, 0x56, 0xad, 0x86, 0xfb, 0x4, - 0x2f, 0x18, 0xfc, 0x44, 0xfb, 0x63, 0x15, 0xf7, 0x3d, 0x7e, 0xf7, 0x97, - 0xf7, 0x6e, 0xfb, 0x3b, 0x99, 0x5, 0x36, 0xfc, 0x41, 0x15, 0xf7, 0x98, - 0xf7, 0x6e, 0x5, 0xcd, 0x92, 0xbf, 0x94, 0xbc, 0x1e, 0xfb, 0x98, 0xfb, - 0x6e, 0x5, 0xe, 0xbc, 0x8d, 0x76, 0xf7, 0xf1, 0xf7, 0x39, 0xf7, 0x6d, - 0x77, 0x12, 0xf9, 0x46, 0xec, 0x13, 0xb0, 0xad, 0xf7, 0xb8, 0x15, 0x5e, - 0xba, 0xc7, 0x6e, 0xcd, 0x1b, 0xa3, 0xa3, 0x8f, 0x94, 0xa2, 0x1f, 0x78, - 0x68, 0x83, 0x68, 0x64, 0x1a, 0x5a, 0x9d, 0x59, 0xa5, 0x61, 0x1e, 0xf7, - 0x97, 0xf7, 0x6d, 0x5, 0x13, 0xd0, 0x72, 0xb2, 0x7d, 0xba, 0xb9, 0x1a, - 0xd7, 0xc0, 0xb7, 0xbf, 0xb8, 0x1e, 0xd1, 0xc4, 0x8a, 0x3a, 0xbc, 0x49, - 0xbc, 0x66, 0x19, 0xf7, 0x28, 0x9b, 0xee, 0xbd, 0xec, 0x1e, 0xfb, 0x6, - 0x68, 0xfb, 0xd, 0x95, 0xfb, 0x8, 0xa0, 0xaa, 0x4f, 0xc4, 0x4e, 0xd9, - 0x82, 0x43, 0x51, 0x18, 0x68, 0x62, 0x57, 0x63, 0x53, 0x1b, 0x58, 0x4a, - 0xa8, 0xae, 0x65, 0x1f, 0xe, 0x30, 0xed, 0x76, 0xf8, 0x4d, 0x77, 0xd9, - 0x77, 0x1, 0xce, 0xf8, 0xf1, 0x3, 0xf7, 0x20, 0xde, 0x15, 0xf8, 0xa8, - 0x85, 0x75, 0xa, 0xfb, 0x54, 0xf8, 0x85, 0x80, 0xa, 0xfb, 0x2c, 0xfb, - 0x6e, 0xfb, 0x64, 0xf7, 0x36, 0x56, 0x40, 0xf7, 0x75, 0xfb, 0x1f, 0xfb, - 0x2c, 0xfb, 0x70, 0x5, 0xe, 0x47, 0xc5, 0x76, 0xa3, 0xdc, 0xf8, 0x95, - 0x77, 0x1, 0xf8, 0xe9, 0xe5, 0x3, 0xf8, 0x66, 0xf7, 0x82, 0x15, 0xf6, - 0x2b, 0x69, 0x86, 0x74, 0x5a, 0x8a, 0x66, 0x19, 0x93, 0xa4, 0xa7, 0x8d, - 0xa6, 0x1b, 0xbb, 0xbd, 0x80, 0x7e, 0xb6, 0x1f, 0x76, 0xc8, 0x6c, 0xcf, - 0x8e, 0xe5, 0x63, 0x80, 0x5d, 0x69, 0x87, 0x63, 0x20, 0xeb, 0x18, 0xfb, - 0x57, 0x62, 0x15, 0xf7, 0x3b, 0x99, 0xfb, 0x97, 0xf7, 0x6e, 0xfb, 0x3d, - 0x7e, 0x5, 0xf7, 0x54, 0xb6, 0x15, 0xf7, 0x98, 0xfb, 0x6e, 0x5, 0x8f, - 0x88, 0x77, 0xf7, 0x3e, 0x8b, 0x1a, 0xfb, 0x98, 0xf7, 0x6e, 0x5, 0xe, - 0xbc, 0x8d, 0x76, 0xa2, 0xf7, 0x7, 0xf8, 0xe5, 0x77, 0x1, 0xf9, 0x3f, - 0xf3, 0x3, 0xf7, 0xb9, 0xf7, 0x4c, 0x15, 0xae, 0xb1, 0xcc, 0xa8, 0xbe, - 0x1b, 0xc3, 0xbf, 0x63, 0x68, 0xb4, 0x1f, 0xcc, 0x55, 0x3d, 0x82, 0x57, - 0x48, 0x6e, 0x51, 0x19, 0x96, 0xc6, 0xc9, 0x93, 0xc7, 0x1b, 0xc5, 0xc3, - 0x85, 0x7a, 0xc3, 0x1f, 0x59, 0xec, 0x7b, 0xee, 0xf7, 0x28, 0x1a, 0x5f, - 0x70, 0x4e, 0x43, 0x8c, 0x3a, 0x4c, 0xc0, 0x18, 0x57, 0xb8, 0x56, 0xb7, - 0xd7, 0x1a, 0xb9, 0x99, 0xba, 0xa4, 0xb2, 0x1e, 0xfb, 0x97, 0xf7, 0x6d, - 0x5, 0x71, 0x61, 0x79, 0x59, 0x5a, 0x1a, 0x64, 0x93, 0x68, 0x9e, 0x68, - 0x1e, 0x94, 0x74, 0x73, 0x8f, 0x73, 0x1b, 0x49, 0x4f, 0x6e, 0x5e, 0x5c, - 0x1f, 0xe, 0xa7, 0xa4, 0x76, 0xf8, 0x89, 0x77, 0xf7, 0x6d, 0x77, 0x1, - 0xbb, 0xf9, 0x9b, 0x3, 0xf7, 0x18, 0xf7, 0x7d, 0x15, 0x63, 0xf7, 0x44, - 0xf7, 0xad, 0x69, 0x5, 0x8b, 0x5d, 0xf7, 0x48, 0x8a, 0x8b, 0xf8, 0x1d, - 0xfb, 0x75, 0x8e, 0x1a, 0x88, 0x7, 0x8b, 0xfb, 0xaa, 0xfb, 0x86, 0x8e, - 0x8a, 0x1e, 0x88, 0x5f, 0xf7, 0x51, 0x8b, 0x1e, 0xfb, 0xc2, 0x32, 0x15, - 0xf7, 0xa4, 0xb2, 0xc0, 0xfb, 0x6e, 0xf7, 0xf4, 0xf7, 0xcb, 0xba, 0xec, - 0xfc, 0x7a, 0xf7, 0xb6, 0x4d, 0xfb, 0x0, 0xaf, 0xfb, 0x16, 0xfb, 0x5d, - 0xb4, 0x4d, 0x2b, 0x5, 0xe, 0xf7, 0xe, 0xee, 0xb3, 0xf0, 0xf7, 0x50, - 0x44, 0x77, 0xf7, 0x55, 0xb3, 0x12, 0xf9, 0x96, 0xf7, 0xa, 0x8b, 0xbb, - 0x13, 0xdc, 0xf9, 0x39, 0xf7, 0xed, 0x15, 0xb7, 0x9e, 0xbc, 0xa0, 0xc1, - 0x93, 0xbd, 0x9f, 0x19, 0xac, 0x98, 0xa8, 0xa4, 0xb2, 0x1a, 0xbc, 0x5d, - 0xaa, 0x5d, 0x51, 0x68, 0x5e, 0x59, 0x78, 0x1e, 0x7a, 0x5d, 0x80, 0x7b, - 0x5f, 0x73, 0x8, 0xfd, 0x1e, 0xf7, 0x1d, 0x15, 0xf8, 0xf0, 0xfb, 0x85, - 0xc1, 0x75, 0xb1, 0x7a, 0xa3, 0x52, 0x19, 0x58, 0xa1, 0xb1, 0x64, 0xc5, - 0x1b, 0xb9, 0xb7, 0xaa, 0xbc, 0xb2, 0x6c, 0xa6, 0x69, 0x97, 0x1f, 0x57, - 0x9e, 0x54, 0x92, 0x59, 0xa1, 0x55, 0xa3, 0x18, 0x75, 0xc1, 0xfd, 0x8, - 0xf7, 0x31, 0x5, 0x93, 0xfc, 0x34, 0x15, 0xf8, 0xb7, 0xf7, 0x31, 0x5, - 0x8c, 0x7, 0xfb, 0x6, 0xb8, 0xfc, 0x47, 0xfb, 0x54, 0x5, 0xf9, 0x84, - 0xf7, 0xe8, 0x15, 0xab, 0xae, 0xa2, 0xa9, 0xa5, 0xa6, 0x7a, 0x6e, 0x6a, - 0x6a, 0x74, 0x6c, 0x70, 0x70, 0x9d, 0xa8, 0x1e, 0x8d, 0xfb, 0xaf, 0x15, - 0xa9, 0xa4, 0x9d, 0xa7, 0xa9, 0xaf, 0x78, 0x6a, 0x6e, 0x76, 0x77, 0x6e, - 0x6e, 0x63, 0x9f, 0xac, 0x1e, 0xfb, 0x50, 0xf7, 0x28, 0x15, 0x13, 0xbc, - 0x94, 0x93, 0x93, 0x94, 0x94, 0x93, 0x83, 0x82, 0x82, 0x83, 0x83, 0x82, - 0x82, 0x83, 0x93, 0x94, 0x1e, 0xe, 0x92, 0x3a, 0xa, 0xaf, 0xf9, 0x9b, - 0x3, 0xc2, 0xf3, 0x15, 0x87, 0x69, 0xa9, 0x74, 0xa2, 0x78, 0x8, 0x81, - 0x98, 0xb4, 0x6b, 0xb0, 0x1b, 0xa5, 0xea, 0xe3, 0xa2, 0xa4, 0x1f, 0xf8, - 0x4f, 0xf8, 0x5d, 0x5, 0xa1, 0xa1, 0x90, 0x8b, 0xa8, 0x1a, 0xcc, 0x7, - 0xa8, 0x8b, 0x91, 0x6b, 0x79, 0x83, 0x87, 0x81, 0x7e, 0x1e, 0xfb, 0x71, - 0xfb, 0x5f, 0x5, 0xfb, 0x71, 0xfb, 0x76, 0x83, 0x83, 0x83, 0x1b, 0x6b, - 0x87, 0xac, 0xa3, 0x87, 0x1f, 0x82, 0xc1, 0x5, 0x88, 0x9f, 0x84, 0xad, - 0x9f, 0x1a, 0xbe, 0x4d, 0x85, 0x69, 0x7f, 0x1e, 0x76, 0x84, 0x78, 0x72, - 0x7e, 0x7b, 0x8, 0x6a, 0x64, 0x8b, 0x92, 0x57, 0x1a, 0x5f, 0x8b, 0x6a, - 0x90, 0x60, 0x1e, 0xe, 0xfb, 0x23, 0xcc, 0x76, 0xf4, 0xa8, 0xf7, 0xb8, - 0xe4, 0xe4, 0x54, 0xa, 0xa7, 0xf7, 0x78, 0xa5, 0x3, 0xae, 0xf7, 0x29, - 0x15, 0xf7, 0x94, 0x22, 0x6, 0xf8, 0x6, 0xf7, 0xd9, 0xfb, 0xb9, 0xf7, - 0xab, 0x3e, 0x4c, 0x5, 0x71, 0xfb, 0x3e, 0x7, 0x35, 0x43, 0x5, 0xa7, - 0xfb, 0xc9, 0x15, 0xf7, 0xb8, 0xf7, 0x92, 0xee, 0x7, 0xf7, 0x96, 0xfb, - 0x88, 0xfb, 0x96, 0xfb, 0x72, 0x5, 0xd6, 0x7, 0xe, 0xae, 0xe9, 0x76, - 0xe6, 0xa5, 0xf7, 0x99, 0xcf, 0xeb, 0x77, 0x1, 0xf8, 0xb8, 0xa3, 0x3, - 0xb0, 0xf7, 0x38, 0x15, 0xf8, 0x93, 0x30, 0x6, 0xf7, 0xb8, 0xf7, 0xba, - 0xfb, 0x7c, 0xf7, 0x8c, 0x4f, 0x56, 0x5, 0x60, 0xfc, 0x50, 0x7, 0x46, - 0x47, 0xd0, 0xfb, 0x16, 0x5, 0x70, 0xfb, 0x17, 0x15, 0xc1, 0xf7, 0x17, - 0x47, 0xf7, 0x16, 0x5, 0xf8, 0x91, 0xc0, 0x6, 0xf7, 0x4e, 0xfb, 0x4b, - 0xfb, 0x4e, 0xfb, 0x53, 0x5, 0xc7, 0x7, 0xe, 0xf7, 0x1b, 0xec, 0xb3, - 0xf7, 0x6b, 0xa6, 0xeb, 0xae, 0xb1, 0x77, 0x12, 0xf9, 0x32, 0xb1, 0x65, - 0xf7, 0x15, 0x9f, 0xb5, 0xbf, 0xbb, 0x13, 0xf7, 0xf9, 0x36, 0xf8, 0xe, - 0x15, 0xb2, 0x88, 0x5, 0x87, 0xc2, 0xc4, 0x78, 0xc0, 0x1b, 0xb6, 0xb3, - 0xa3, 0xba, 0xbc, 0x59, 0xb1, 0x5d, 0x67, 0x6a, 0x77, 0x73, 0x72, 0x1f, - 0x68, 0x6a, 0x7a, 0x83, 0x5b, 0x89, 0x8, 0xfc, 0x61, 0xf4, 0x15, 0xf7, - 0x31, 0x6, 0xf7, 0x76, 0xfb, 0x50, 0xb6, 0x67, 0xa7, 0x71, 0x91, 0x50, - 0x19, 0x4d, 0x91, 0xaf, 0x4f, 0xd1, 0x1b, 0xb4, 0xb1, 0xa7, 0xb6, 0xa8, - 0x79, 0xa3, 0x75, 0x9c, 0x1f, 0x61, 0xab, 0x5a, 0xa1, 0x64, 0xaf, 0x61, - 0xb2, 0x18, 0x87, 0xc2, 0xfb, 0x3d, 0xf5, 0x5, 0xf7, 0x38, 0x9f, 0xfc, - 0x42, 0x6, 0xfb, 0x63, 0x2c, 0x15, 0xf8, 0xb0, 0x2c, 0x5, 0x8c, 0x7, - 0x23, 0xe2, 0xfc, 0x45, 0x9d, 0x5, 0xf9, 0xad, 0x6b, 0x15, 0xa9, 0xa6, - 0x98, 0xa5, 0xa9, 0xaa, 0x7a, 0x6a, 0x6e, 0x73, 0x7a, 0x70, 0x6d, 0x6a, - 0x9f, 0xac, 0x1e, 0xfb, 0x6e, 0x67, 0x15, 0x94, 0x92, 0x91, 0x94, 0x93, - 0x94, 0x84, 0x83, 0x82, 0x82, 0x84, 0x82, 0x82, 0x85, 0x93, 0x93, 0x1e, - 0x13, 0xfb, 0xf7, 0x13, 0xfb, 0x5c, 0x15, 0xa4, 0xa2, 0x9e, 0xa3, 0xa8, - 0xae, 0x71, 0x6c, 0x72, 0x77, 0x76, 0x72, 0x6e, 0x66, 0xa7, 0xaa, 0x1e, - 0xe, 0x3e, 0x8b, 0xa9, 0xf8, 0xab, 0xa7, 0x6f, 0xf7, 0x13, 0x12, 0xae, - 0xa8, 0xf8, 0xa9, 0xa7, 0x6f, 0xf7, 0x16, 0x13, 0xd8, 0xae, 0x16, 0xf8, - 0xe2, 0xf5, 0x6, 0x13, 0xb4, 0xf1, 0xf8, 0xde, 0xfc, 0xdb, 0x6, 0x13, - 0xd8, 0x28, 0xfb, 0x1, 0x7, 0xa8, 0xfc, 0xc7, 0x15, 0xf8, 0xab, 0xf8, - 0xa9, 0xfc, 0xab, 0x7, 0xe, 0x3b, 0x8b, 0xab, 0xf8, 0xad, 0xf7, 0xf, - 0x1, 0xae, 0xaa, 0xf8, 0xa8, 0xf7, 0x13, 0x7a, 0xa, 0xf8, 0xcd, 0x6, - 0xf7, 0xd, 0xf7, 0xb, 0x5, 0xf8, 0xd1, 0xfc, 0xc6, 0x7, 0xfb, 0x14, - 0xfb, 0x7, 0x5, 0xaa, 0xfc, 0xb5, 0x6d, 0xa, 0x66, 0xa, 0xaf, 0xf7, - 0xe9, 0x15, 0xe6, 0x54, 0xf7, 0x3f, 0xfb, 0x1f, 0xf7, 0x34, 0xfb, 0x5b, - 0x9a, 0x96, 0x18, 0x5f, 0xf7, 0xb, 0x33, 0xf7, 0x3d, 0x47, 0xe9, 0xca, - 0xdf, 0xe8, 0xf7, 0x65, 0xad, 0xde, 0x80, 0x98, 0x18, 0xfb, 0x38, 0xfb, - 0x56, 0xfb, 0x42, 0xfb, 0x27, 0x3d, 0x5b, 0x8, 0xe, 0xfc, 0x41, 0x38, - 0xa, 0xf7, 0x1b, 0x8b, 0x3, 0xf7, 0x1b, 0x16, 0xf7, 0x84, 0x6, 0x27, - 0xf7, 0xee, 0xef, 0xf7, 0xee, 0x5, 0xfb, 0x84, 0x6, 0x27, 0xfb, 0xee, - 0x5, 0xe, 0x3e, 0x8f, 0xf9, 0x3f, 0x1, 0xab, 0xf9, 0x4e, 0x3, 0xb1, - 0x93, 0x15, 0xa4, 0x90, 0xd6, 0xa0, 0x9d, 0x95, 0xa3, 0x97, 0xd4, 0xd0, - 0xed, 0xf5, 0x91, 0x91, 0x9d, 0x89, 0x90, 0x85, 0xce, 0x41, 0xda, 0x40, - 0xa3, 0x73, 0x8, 0x64, 0xb3, 0xab, 0x7e, 0xa3, 0x1b, 0x94, 0xcb, 0x95, - 0x91, 0x93, 0x1f, 0x8e, 0x97, 0x69, 0xa5, 0xfb, 0x42, 0xf7, 0x45, 0x40, - 0xe7, 0x19, 0xf7, 0x3c, 0xf7, 0x4c, 0xd8, 0xf7, 0x3, 0x9f, 0xb1, 0x84, - 0x99, 0x18, 0x5b, 0x85, 0x38, 0x7d, 0x87, 0x83, 0x63, 0x4e, 0x3f, 0x26, - 0x3c, 0x39, 0x59, 0xb3, 0xfb, 0x2f, 0xf7, 0x50, 0x6f, 0xc4, 0x8, 0x80, - 0x6, 0x7f, 0x82, 0x68, 0x5e, 0x81, 0x78, 0x84, 0x78, 0x8b, 0x83, 0xa0, - 0x65, 0x9d, 0x6c, 0xd9, 0x34, 0xee, 0xfb, 0x2, 0x90, 0x84, 0x8b, 0x80, - 0x86, 0x84, 0x67, 0x5e, 0xfb, 0x4d, 0xfb, 0x5c, 0x6d, 0x70, 0x8, 0xe, - 0x3d, 0xa5, 0x76, 0xf9, 0x21, 0x99, 0xa5, 0x77, 0x1, 0xa8, 0xf9, 0x53, - 0x3, 0xae, 0x94, 0x15, 0xa7, 0x8e, 0xea, 0x9a, 0xaf, 0xa2, 0x9f, 0x97, - 0xb2, 0xa6, 0xe0, 0xf6, 0x90, 0x92, 0x9c, 0x89, 0x94, 0x82, 0xba, 0x58, - 0xc1, 0x4e, 0xa4, 0x74, 0x8, 0x64, 0xb6, 0xa9, 0x7e, 0xa3, 0x1b, 0x97, - 0xf7, 0x8, 0x94, 0x90, 0x95, 0x1f, 0x8d, 0x9a, 0x66, 0xad, 0xfb, 0x32, - 0xf7, 0x4f, 0x49, 0xe5, 0x19, 0xe0, 0xe2, 0xf7, 0x31, 0xf7, 0x4d, 0x9b, - 0xb4, 0x82, 0x99, 0x18, 0x63, 0x88, 0xfb, 0x13, 0x7a, 0x87, 0x84, 0x6c, - 0x5a, 0x42, 0x2a, 0x55, 0x55, 0x46, 0xd0, 0x2e, 0xf7, 0x14, 0x6e, 0xc3, - 0x8, 0x7d, 0x6, 0x73, 0x80, 0x3b, 0x38, 0x83, 0x79, 0x84, 0x79, 0x8d, - 0x7a, 0xa0, 0x66, 0x9d, 0x6b, 0xc3, 0x47, 0xe6, 0x24, 0x90, 0x85, 0x89, - 0x7c, 0x86, 0x86, 0x67, 0x5d, 0xfb, 0x32, 0xfb, 0x50, 0x6d, 0x70, 0x8, - 0xe, 0xfb, 0xa0, 0x5c, 0x76, 0xf9, 0x6d, 0x77, 0x1, 0xf7, 0x50, 0xf7, - 0x98, 0x3, 0xf7, 0xb4, 0xf7, 0x96, 0x15, 0xfb, 0x34, 0xee, 0x9f, 0x67, - 0x98, 0x1b, 0x97, 0x9e, 0x98, 0x97, 0x8d, 0x1f, 0x89, 0x8f, 0x88, 0x91, - 0x8f, 0x1a, 0x91, 0x9b, 0x91, 0x8f, 0x8f, 0x1e, 0x93, 0x7, 0x92, 0x8e, - 0x8f, 0x8f, 0x8e, 0x92, 0xfb, 0x1, 0xf7, 0x79, 0x18, 0xe3, 0xf7, 0x13, - 0xe3, 0xf3, 0x96, 0x95, 0x8, 0x8f, 0x8f, 0x92, 0x91, 0x91, 0x1a, 0x92, - 0x7b, 0x96, 0x87, 0x95, 0x1e, 0x8d, 0x8a, 0x89, 0x91, 0x88, 0x1b, 0x88, - 0x85, 0x84, 0x88, 0x89, 0x1f, 0x80, 0x81, 0x5, 0x90, 0x85, 0x67, 0x86, - 0x85, 0x1b, 0xfb, 0x31, 0xfb, 0x41, 0x3f, 0xf7, 0x2a, 0x5, 0x93, 0x87, - 0x88, 0x95, 0x80, 0x1b, 0x80, 0x83, 0x7b, 0x81, 0x82, 0x89, 0x8, 0x8f, - 0x86, 0x87, 0x90, 0x84, 0x1b, 0x79, 0x7d, 0x82, 0x82, 0x84, 0x1a, 0x82, - 0x93, 0x7a, 0x8e, 0x83, 0x1e, 0xd7, 0xfb, 0x54, 0x49, 0x3c, 0x3d, 0x25, - 0x62, 0x43, 0x19, 0x6c, 0x56, 0x7a, 0x73, 0x7e, 0x1a, 0x88, 0x8e, 0x89, - 0x8d, 0x89, 0x1e, 0x92, 0x85, 0x87, 0x85, 0x89, 0x83, 0x8, 0x89, 0x85, - 0x8a, 0x87, 0x85, 0x1a, 0x80, 0x94, 0x80, 0x91, 0x82, 0x1e, 0x81, 0x91, - 0x8d, 0x81, 0x98, 0x1b, 0x99, 0xa5, 0x8e, 0x94, 0x97, 0x1f, 0xe, 0xfb, - 0x36, 0x93, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xf7, 0x5f, 0xf7, 0x64, 0x3, - 0xf3, 0x93, 0x15, 0x9e, 0x76, 0x5, 0x98, 0x6, 0x92, 0x94, 0xf7, 0x26, - 0xf7, 0x58, 0xb1, 0x5a, 0xa9, 0x53, 0xb7, 0x5e, 0x19, 0x8e, 0x8e, 0x89, - 0x8d, 0x9b, 0xa0, 0xad, 0x90, 0x1b, 0x8e, 0x93, 0x83, 0x8a, 0x8d, 0x1f, - 0x88, 0x8f, 0x91, 0x85, 0x90, 0x1b, 0x90, 0x93, 0x94, 0x8e, 0x8e, 0x1f, - 0x92, 0x91, 0x94, 0x8e, 0x87, 0x95, 0x8, 0x91, 0x89, 0x96, 0x99, 0x8d, - 0x1b, 0x93, 0x6, 0x94, 0x97, 0xa4, 0x91, 0x8e, 0x1f, 0x92, 0x97, 0x8b, - 0x8a, 0x8d, 0x98, 0xfb, 0x28, 0xf7, 0x4b, 0x18, 0xf7, 0x4b, 0xf7, 0x70, - 0xbb, 0x89, 0xb5, 0x1a, 0x7c, 0xae, 0x86, 0x92, 0x8b, 0x8c, 0x84, 0x89, - 0x19, 0x7f, 0x88, 0x87, 0xab, 0x90, 0x1a, 0x8e, 0x8d, 0x8d, 0x8d, 0x8d, - 0x1e, 0x96, 0x92, 0x59, 0x92, 0x89, 0x1b, 0x7f, 0xfb, 0x5b, 0xfb, 0x65, - 0x70, 0x74, 0x1f, 0xfb, 0xa, 0xf7, 0x45, 0x5, 0x92, 0x87, 0x83, 0x96, - 0x82, 0x1b, 0x7e, 0x7d, 0x80, 0x7e, 0x8c, 0x1f, 0x82, 0x88, 0x81, 0x80, - 0x88, 0x7d, 0x9d, 0x8c, 0x86, 0x1e, 0x7d, 0x7e, 0x7e, 0x7d, 0x82, 0x7a, - 0xa6, 0x2f, 0xb7, 0x35, 0xb8, 0x37, 0xfb, 0x3b, 0xfb, 0x5b, 0x18, 0x7e, - 0x9b, 0x7b, 0x81, 0x7e, 0x7f, 0x85, 0x84, 0x1a, 0x87, 0x93, 0x82, 0x8d, - 0x88, 0x1e, 0x92, 0x7f, 0x93, 0x7a, 0x98, 0x85, 0x8, 0x8e, 0x93, 0x92, - 0x90, 0x94, 0x1b, 0x8d, 0x8e, 0x89, 0x88, 0x1f, 0x87, 0x88, 0x85, 0x87, - 0x1a, 0xe, 0x3f, 0x86, 0xb0, 0xf7, 0x7a, 0xaf, 0xdc, 0xb0, 0xf7, 0x77, - 0xb0, 0x1, 0xbc, 0xb0, 0xf7, 0x6c, 0xae, 0xe3, 0xb0, 0xf7, 0x6b, 0xb0, - 0x3, 0xbc, 0xf7, 0x9a, 0x15, 0xf7, 0x91, 0xfb, 0x9f, 0xf7, 0x34, 0xf7, - 0x9f, 0xf7, 0x90, 0xf7, 0x2e, 0xfb, 0x91, 0x6, 0x8c, 0xf7, 0x9c, 0x5, - 0xfb, 0x35, 0xfb, 0x9c, 0xfb, 0x90, 0x6, 0xb0, 0xfb, 0xa, 0x15, 0xdc, - 0xf7, 0x90, 0xf7, 0x9c, 0xe2, 0xfb, 0x9c, 0xf7, 0x90, 0x3a, 0xfb, 0x90, - 0xfb, 0x9e, 0x33, 0xf7, 0x9e, 0x7, 0xe, 0x3c, 0xa0, 0x76, 0xf7, 0x7c, - 0xf7, 0x7a, 0xf7, 0x7a, 0x77, 0x1, 0xf7, 0x9b, 0xf7, 0x7c, 0x3, 0xae, - 0xf7, 0x7c, 0x15, 0xf7, 0x78, 0xfb, 0x7c, 0xf7, 0x7c, 0xf7, 0x7c, 0xf7, - 0x7b, 0xf7, 0x7a, 0xfb, 0x7b, 0xf7, 0x7a, 0xfb, 0x7c, 0xfb, 0x7a, 0xfb, - 0x78, 0x6, 0xe, 0x3b, 0xa0, 0x76, 0xf7, 0xb2, 0xf7, 0xc, 0xf7, 0xb2, - 0x77, 0x1, 0xf7, 0xd5, 0xf7, 0x9, 0x3, 0xae, 0xf7, 0xa8, 0x15, 0xf7, - 0xa8, 0xfb, 0xa8, 0xf7, 0x1d, 0xf7, 0xa8, 0xf7, 0xa9, 0xf7, 0x20, 0xfb, - 0xa9, 0xf7, 0xa8, 0xfb, 0x1d, 0xfb, 0xa8, 0xfb, 0xa8, 0x6, 0xf7, 0xa8, - 0xfb, 0x20, 0x15, 0xf7, 0x20, 0xf7, 0x1d, 0xfb, 0x20, 0x7, 0xe, 0x36, - 0xa0, 0x76, 0xf7, 0x7f, 0xf7, 0x6d, 0xf7, 0x84, 0x77, 0x1, 0xf7, 0x9e, - 0xf7, 0x70, 0x3, 0xae, 0xf7, 0x7f, 0x15, 0xf7, 0x7b, 0xfb, 0x7f, 0xf7, - 0x71, 0xf7, 0x7f, 0xf7, 0x7d, 0xf7, 0x6d, 0xfb, 0x7d, 0xf7, 0x84, 0xfb, - 0x71, 0xfb, 0x84, 0xfb, 0x7b, 0x6, 0xf7, 0x7b, 0xfb, 0x6d, 0x15, 0xf7, - 0x6d, 0xf7, 0x70, 0xfb, 0x6d, 0x7, 0xe, 0x56, 0x7b, 0x76, 0xf7, 0xb9, - 0xac, 0x6a, 0xad, 0xaf, 0xa9, 0xaf, 0xae, 0xf7, 0xb6, 0x77, 0x12, 0xf7, - 0xcb, 0xad, 0xa2, 0xa9, 0xb8, 0xaf, 0x69, 0xad, 0x13, 0xdf, 0x80, 0xf8, - 0xe, 0xf7, 0xc3, 0x15, 0x86, 0x53, 0x7b, 0x63, 0x7b, 0x69, 0x8, 0x7a, - 0x65, 0x7a, 0x6c, 0x64, 0x1a, 0x6c, 0x98, 0x78, 0xa5, 0x79, 0x1e, 0x98, - 0x83, 0x9d, 0x81, 0x91, 0x85, 0x8, 0x89, 0x8d, 0x8f, 0x83, 0x8f, 0x1b, - 0x8f, 0x8f, 0x93, 0x8d, 0x8d, 0x1f, 0x91, 0x91, 0x9d, 0x95, 0x98, 0x93, - 0x8, 0xa5, 0x9d, 0x98, 0x9e, 0xaa, 0x1a, 0xb7, 0x79, 0xab, 0x79, 0xb2, - 0x1e, 0x7c, 0xac, 0x7c, 0xb1, 0x86, 0xbf, 0x95, 0x90, 0x93, 0x93, 0x90, - 0x96, 0xbe, 0x86, 0xb1, 0x7d, 0xab, 0x7c, 0x8, 0x78, 0xb5, 0xab, 0x77, - 0xb5, 0x1b, 0xaa, 0x9e, 0x98, 0xa5, 0x9d, 0x1f, 0x93, 0x98, 0x95, 0x9d, - 0x91, 0x91, 0x8, 0x8d, 0x8d, 0x93, 0x8f, 0x8f, 0x1a, 0x8f, 0x83, 0x8f, - 0x89, 0x8d, 0x1e, 0x85, 0x91, 0x81, 0x9d, 0x83, 0x98, 0x8, 0xa5, 0x79, - 0x75, 0x99, 0x6c, 0x1b, 0x5a, 0x6a, 0x74, 0x77, 0x5d, 0x1f, 0x6e, 0x7e, - 0x69, 0x80, 0x5e, 0x87, 0x87, 0x94, 0x83, 0x93, 0x82, 0x8e, 0x8f, 0xbd, - 0x98, 0xb0, 0x99, 0xaa, 0x8, 0x9e, 0xb7, 0xa0, 0xac, 0xb7, 0x1a, 0xaa, - 0x7e, 0x9e, 0x71, 0x9d, 0x1e, 0x7e, 0x93, 0x79, 0x95, 0x85, 0x91, 0x8, - 0x8d, 0x89, 0x87, 0x93, 0x87, 0x1b, 0x87, 0x87, 0x83, 0x89, 0x89, 0x1f, - 0x85, 0x85, 0x79, 0x81, 0x7e, 0x83, 0x8, 0x71, 0x79, 0x7e, 0x78, 0x6c, - 0x1a, 0x5e, 0x9e, 0x6a, 0x9e, 0x62, 0x1e, 0x99, 0x6b, 0x9a, 0x66, 0x8f, - 0x58, 0x81, 0x87, 0x84, 0x84, 0x87, 0x82, 0x53, 0x90, 0x64, 0x9b, 0x69, - 0x9a, 0x8, 0x9d, 0x64, 0x6c, 0x9c, 0x63, 0x1b, 0x6c, 0x78, 0x7d, 0x71, - 0x79, 0x1f, 0x83, 0x7e, 0x81, 0x79, 0x85, 0x85, 0x8, 0x89, 0x89, 0x83, - 0x87, 0x87, 0x1a, 0x87, 0x93, 0x87, 0x8d, 0x89, 0x1e, 0x91, 0x85, 0x95, - 0x79, 0x93, 0x7e, 0x8, 0x71, 0x9d, 0x9f, 0x80, 0xa9, 0x1b, 0xb5, 0xab, - 0x9b, 0x9c, 0xb0, 0x1f, 0xad, 0x9a, 0xb1, 0x9c, 0xc2, 0x90, 0x8f, 0x81, - 0x93, 0x83, 0x95, 0x86, 0x8, 0x96, 0xf7, 0x7f, 0x15, 0x89, 0xa0, 0x7f, - 0x96, 0x80, 0x94, 0x8, 0x7f, 0x95, 0x80, 0x93, 0x9b, 0x1a, 0x9c, 0x94, - 0x96, 0x9b, 0x96, 0x1e, 0x92, 0x8f, 0x96, 0x92, 0x8f, 0x8f, 0x8, 0x8b, - 0x8f, 0x93, 0x8c, 0x1e, 0x8d, 0x89, 0x8f, 0x87, 0x8c, 0x8a, 0x8e, 0x87, - 0x96, 0x84, 0x91, 0x86, 0x8, 0x9b, 0x80, 0x92, 0x82, 0x7a, 0x1a, 0x77, - 0x7b, 0x83, 0x7d, 0x7d, 0x1e, 0x82, 0x82, 0x83, 0x81, 0x89, 0x7a, 0x8, - 0xf7, 0x59, 0xfb, 0x59, 0x15, 0x8a, 0x8f, 0x9e, 0x8e, 0x96, 0x94, 0x94, - 0x95, 0x19, 0x98, 0x97, 0x93, 0x98, 0x9c, 0x1b, 0x9c, 0x97, 0x83, 0x7b, - 0x96, 0x1f, 0x8e, 0x84, 0x93, 0x81, 0x8f, 0x87, 0x8c, 0x8a, 0x8f, 0x87, - 0x8d, 0x89, 0x8, 0x8a, 0x85, 0x88, 0x89, 0x8a, 0x1e, 0x87, 0x87, 0x85, - 0x7f, 0x86, 0x85, 0x8, 0x13, 0xbf, 0x40, 0x7b, 0x80, 0x83, 0x84, 0x79, - 0x1b, 0x79, 0x83, 0x99, 0x98, 0x80, 0x1f, 0x82, 0x96, 0x80, 0x95, 0x77, - 0x8d, 0x8, 0xfc, 0x1f, 0x87, 0x15, 0x79, 0x88, 0x81, 0x83, 0x82, 0x82, - 0x8, 0x7e, 0x7f, 0x83, 0x7d, 0x79, 0x1b, 0x78, 0x81, 0x93, 0x9b, 0x80, - 0x1f, 0x87, 0x92, 0x84, 0x96, 0x87, 0x8f, 0x8, 0x8b, 0x85, 0x8e, 0x8c, - 0x8d, 0x1e, 0x8a, 0x8d, 0x91, 0x8e, 0x8b, 0x1a, 0x8f, 0x90, 0x92, 0x95, - 0x8f, 0x92, 0x8, 0x13, 0xdf, 0x40, 0x9b, 0x96, 0x94, 0x92, 0x9c, 0x1b, - 0x9c, 0x93, 0x7e, 0x7f, 0x96, 0x1f, 0x95, 0x80, 0x97, 0x80, 0xa0, 0x88, - 0x8, 0xf7, 0x59, 0xfb, 0x59, 0x15, 0x8f, 0x8d, 0x8e, 0x79, 0x93, 0x80, - 0x94, 0x82, 0x19, 0x98, 0x7e, 0x9a, 0x82, 0x8a, 0x79, 0x8, 0x79, 0x83, - 0x81, 0x7b, 0x80, 0x1e, 0x84, 0x88, 0x80, 0x82, 0x88, 0x88, 0x8, 0x89, - 0x89, 0x88, 0x87, 0x8a, 0x1b, 0x8a, 0x86, 0x91, 0x8b, 0x1f, 0x86, 0x8f, - 0x82, 0x93, 0x83, 0x90, 0x8, 0x7c, 0x95, 0x83, 0x93, 0x9c, 0x1a, 0x9d, - 0x99, 0x93, 0x98, 0x97, 0x1e, 0x96, 0x94, 0x95, 0x97, 0x8e, 0x9e, 0x8, - 0xe, 0xf7, 0x21, 0xee, 0xb3, 0xef, 0xf7, 0x52, 0x42, 0x77, 0xf7, 0x58, - 0xb2, 0x12, 0xf9, 0x9b, 0xf7, 0xa, 0x8b, 0xbc, 0x13, 0xdc, 0xf9, 0x3c, - 0xf7, 0xef, 0x15, 0xb7, 0x9e, 0xbd, 0xa1, 0xc2, 0x90, 0xbd, 0xa0, 0x19, - 0xac, 0x99, 0xa9, 0xa5, 0xb2, 0x1a, 0xbc, 0x5c, 0xa8, 0x5e, 0x51, 0x67, - 0x5f, 0x59, 0x78, 0x1e, 0x79, 0x5d, 0x7f, 0x7a, 0x5f, 0x74, 0x8, 0xfd, - 0x1c, 0xf7, 0x20, 0x15, 0xf8, 0xf1, 0xfb, 0x8b, 0xc1, 0x75, 0xaf, 0x7a, - 0xa4, 0x52, 0x19, 0x58, 0xa1, 0xb0, 0x65, 0xc6, 0x1b, 0xb9, 0xb8, 0xaa, - 0xbc, 0xb1, 0x6a, 0xa6, 0x6a, 0x97, 0x1f, 0x57, 0x9d, 0x54, 0x93, 0x59, - 0xa1, 0x55, 0xa3, 0x18, 0x76, 0xc1, 0xfd, 0x8, 0xf7, 0x36, 0x5, 0x92, - 0xfc, 0x3a, 0x15, 0xf8, 0xb8, 0xf7, 0x33, 0x8a, 0x8c, 0xfb, 0x2, 0xb7, - 0xfc, 0x4b, 0xfb, 0x55, 0x5, 0xf9, 0x84, 0xf7, 0xeb, 0x15, 0xab, 0xae, - 0xa3, 0xa9, 0xa5, 0xa6, 0x7a, 0x6e, 0x69, 0x6c, 0x74, 0x6a, 0x71, 0x6f, - 0x9d, 0xa8, 0x1e, 0x8e, 0xfb, 0xb1, 0x15, 0xa9, 0xa4, 0x9d, 0xa7, 0xa9, - 0xae, 0x78, 0x6a, 0x6e, 0x77, 0x78, 0x6e, 0x6e, 0x63, 0x9d, 0xad, 0x1e, - 0xfc, 0xf2, 0xf7, 0xbc, 0x15, 0xf8, 0x5a, 0xfb, 0x10, 0x9d, 0x5b, 0xc1, - 0x74, 0x7a, 0x7f, 0x7a, 0x95, 0x79, 0x93, 0x79, 0x92, 0x19, 0xfc, 0x5d, - 0xf7, 0x49, 0x5, 0x90, 0xfb, 0xc2, 0x15, 0xf7, 0xb3, 0xf7, 0xe, 0xbd, - 0x75, 0xfb, 0xe4, 0x26, 0x5, 0xf8, 0x31, 0xf7, 0x31, 0x15, 0x82, 0x92, - 0x84, 0x94, 0x94, 0x92, 0x92, 0x94, 0x1e, 0x13, 0xbc, 0x94, 0x84, 0x92, - 0x82, 0x82, 0x84, 0x84, 0x82, 0x1e, 0xe, 0x9e, 0xc2, 0xea, 0xc2, 0x58, - 0xf7, 0xa, 0xec, 0xf7, 0x2, 0x5a, 0xc2, 0x54, 0xc3, 0xe9, 0xc2, 0x12, - 0xd6, 0xc2, 0x56, 0xc0, 0xeb, 0xc2, 0x58, 0xf7, 0x6, 0xea, 0xf7, 0x8, - 0x5a, 0xc3, 0x54, 0xc2, 0xe9, 0xc2, 0x13, 0xd3, 0x52, 0xf7, 0x7e, 0xf7, - 0x64, 0x15, 0x95, 0x7a, 0x78, 0x91, 0x77, 0x1b, 0x52, 0x5d, 0x5d, 0x52, - 0x52, 0xb9, 0x5e, 0xc4, 0xc4, 0xb9, 0xb9, 0xc4, 0x9f, 0x86, 0x9e, 0x80, - 0x9b, 0x1f, 0xd9, 0xd8, 0x94, 0x86, 0x94, 0x87, 0x95, 0x89, 0x19, 0x13, - 0xb2, 0xca, 0x98, 0x45, 0x5, 0x9d, 0x6, 0x98, 0xd1, 0x96, 0x8d, 0x95, - 0x8f, 0x94, 0x91, 0x19, 0xd9, 0x3d, 0x5, 0x80, 0x7a, 0x85, 0x78, 0x77, - 0x1a, 0x53, 0xb8, 0x5d, 0xc4, 0xc4, 0xb9, 0xb9, 0xc4, 0x1e, 0x13, 0xca, - 0xd2, 0xc3, 0x5d, 0xb9, 0x53, 0x78, 0x78, 0x85, 0x81, 0x7b, 0x1e, 0x3d, - 0xd9, 0x91, 0x94, 0x8e, 0x95, 0x8e, 0x95, 0x19, 0xcd, 0x97, 0x5, 0x9d, - 0x7, 0x4b, 0x97, 0x89, 0x96, 0x87, 0x96, 0x85, 0x95, 0x19, 0xd6, 0xd7, - 0x5, 0x81, 0x9c, 0x9e, 0x85, 0x9f, 0x1b, 0xc4, 0xb9, 0xb9, 0xc4, 0xc4, - 0x5d, 0xb8, 0x52, 0x1f, 0x13, 0xd2, 0xc6, 0x53, 0x5c, 0x5e, 0x52, 0x78, - 0x91, 0x78, 0x95, 0x7a, 0x1f, 0x3e, 0x40, 0x81, 0x92, 0x81, 0x90, 0x7f, - 0x8d, 0x19, 0x7f, 0xc9, 0x5, 0x79, 0x6, 0x7f, 0x4c, 0x80, 0x88, 0x81, - 0x87, 0x81, 0x85, 0x19, 0x41, 0xd6, 0x5, 0x95, 0x9b, 0x90, 0x9e, 0x9e, - 0x1a, 0xc4, 0x5d, 0xb9, 0x52, 0x52, 0x5e, 0x5e, 0x52, 0x1e, 0x13, 0xc6, - 0xa6, 0x52, 0xb8, 0x5d, 0xc4, 0x9e, 0x9f, 0x91, 0x95, 0x9b, 0x1e, 0xd6, - 0x3f, 0x85, 0x81, 0x87, 0x80, 0x89, 0x80, 0x19, 0x48, 0x7f, 0x5, 0x79, - 0x7, 0xd0, 0x7e, 0x8e, 0x81, 0x8e, 0x82, 0x91, 0x82, 0x19, 0xf7, 0x8f, - 0xf7, 0x9e, 0x15, 0xa6, 0x9f, 0x9f, 0xa6, 0xa6, 0x9f, 0x77, 0x70, 0x70, - 0x77, 0x77, 0x70, 0x70, 0x77, 0x9f, 0xa6, 0x1e, 0xfb, 0x6e, 0xfb, 0x68, - 0x15, 0x13, 0xb2, 0xb2, 0xa5, 0xa0, 0xa1, 0xa5, 0xa5, 0xa1, 0x75, 0x71, - 0x71, 0x75, 0x74, 0x71, 0x71, 0x76, 0xa3, 0xa4, 0x1e, 0xf7, 0x6d, 0xfb, - 0x6f, 0x15, 0x13, 0xca, 0xd2, 0xa5, 0xa1, 0xa1, 0xa5, 0xa5, 0xa0, 0x75, - 0x71, 0x71, 0x76, 0x76, 0x71, 0x71, 0x75, 0xa0, 0xa5, 0x1e, 0xfc, 0x43, - 0xf8, 0x43, 0x15, 0xa5, 0xa1, 0xa0, 0x69, 0xa, 0xa1, 0xa5, 0x1e, 0xfc, - 0x43, 0x4, 0xa5, 0xa1, 0xa1, 0x69, 0xa, 0xa0, 0xa5, 0x1e, 0xe, 0x9f, - 0xf7, 0x18, 0xfb, 0x4, 0x76, 0xf7, 0x77, 0xc8, 0x6c, 0xf7, 0x15, 0x69, - 0xd0, 0x48, 0xce, 0xea, 0xf7, 0x10, 0xfb, 0x10, 0xf7, 0x11, 0x12, 0xd5, - 0xf7, 0x13, 0xfb, 0x12, 0xf7, 0x12, 0xea, 0xcd, 0x49, 0xce, 0x6a, 0xf7, - 0x14, 0x6b, 0xcb, 0x4d, 0xc9, 0xea, 0xf7, 0x15, 0xfb, 0x15, 0xf7, 0x16, - 0x13, 0xa5, 0xa2, 0x80, 0xf7, 0xc4, 0xf7, 0xaa, 0x15, 0x9e, 0x72, 0x6d, - 0x95, 0x6c, 0x1b, 0x3c, 0x4a, 0x4b, 0x3c, 0x3c, 0xcc, 0x4a, 0xda, 0xda, - 0xcc, 0xc9, 0xdb, 0xaa, 0x80, 0xaa, 0x79, 0xa4, 0x1f, 0x13, 0x51, 0x55, - 0x0, 0x9f, 0x9a, 0xa1, 0x92, 0xa3, 0x1b, 0xa6, 0x9c, 0x83, 0x78, 0x9d, - 0x1f, 0x78, 0x72, 0x80, 0x6c, 0x6c, 0x1a, 0x3c, 0xce, 0x4b, 0xd9, 0xda, - 0xcb, 0xcb, 0xda, 0xda, 0x4a, 0xcc, 0x3c, 0x6d, 0x6d, 0x81, 0x79, 0x73, - 0x1e, 0x13, 0xaa, 0x48, 0x80, 0x76, 0x9e, 0x84, 0x99, 0xa8, 0x1a, 0xa4, - 0x94, 0x9d, 0x9d, 0x9d, 0x1e, 0x78, 0xa4, 0xaa, 0x80, 0xaa, 0x1b, 0xda, - 0xcb, 0xce, 0xd9, 0xda, 0x4b, 0xcb, 0x3c, 0x1f, 0x13, 0x91, 0x52, 0x80, - 0x3c, 0x4a, 0x49, 0x3c, 0x6d, 0x95, 0x6d, 0x9d, 0x73, 0x1f, 0x78, 0x79, - 0x7a, 0x85, 0x71, 0x1b, 0x73, 0x77, 0x91, 0x9e, 0x7a, 0x1f, 0x9d, 0xa4, - 0x96, 0xa9, 0xaa, 0x1a, 0xda, 0x4a, 0xcc, 0x3c, 0x3c, 0x4a, 0x4b, 0x3c, - 0x1e, 0x13, 0xa5, 0x48, 0x80, 0x3c, 0xcd, 0x4a, 0xda, 0xa9, 0xa9, 0x95, - 0x9d, 0xa3, 0x1e, 0x9d, 0x79, 0x93, 0x7b, 0x71, 0x1a, 0x6f, 0x85, 0x7c, - 0x77, 0x77, 0x1e, 0x13, 0xa5, 0x52, 0x80, 0xf7, 0x4e, 0xf7, 0x65, 0x42, - 0xa, 0xfb, 0xb5, 0xf7, 0xb4, 0x42, 0xa, 0xe, 0x5a, 0x8b, 0xf7, 0xc, - 0x6d, 0xf6, 0x22, 0xa7, 0xbf, 0x93, 0x83, 0x95, 0xb2, 0xe8, 0x30, 0xe9, - 0x66, 0xf7, 0xb, 0x39, 0xbd, 0x63, 0xa4, 0x72, 0xf7, 0x17, 0x2f, 0xac, - 0x6c, 0xe5, 0xa3, 0xa7, 0x6f, 0xf6, 0x31, 0x96, 0xc0, 0xa3, 0xe7, 0x77, - 0x12, 0xf7, 0x24, 0xab, 0x6e, 0xf4, 0x71, 0x95, 0xb4, 0xe8, 0x30, 0xf7, - 0x20, 0x38, 0xae, 0x68, 0xf7, 0xb, 0x35, 0xbd, 0x59, 0xf7, 0x26, 0xfb, - 0x18, 0xa4, 0x97, 0xe7, 0xa5, 0xf5, 0x2f, 0x98, 0xbe, 0xa9, 0x7e, 0xa, - 0xf8, 0x4d, 0xf8, 0x14, 0x79, 0xa, 0x93, 0x9c, 0x86, 0x90, 0x86, 0x92, - 0x78, 0x81, 0x7c, 0x7b, 0x7b, 0x7a, 0x83, 0x7a, 0x90, 0x86, 0x8, 0x9e, - 0xfb, 0x14, 0x78, 0xa, 0x83, 0x9c, 0x7b, 0x9c, 0x7c, 0x9b, 0x78, 0x94, - 0x86, 0x86, 0x86, 0x85, 0x93, 0x7a, 0x9b, 0x7b, 0x8, 0xfb, 0x28, 0xf7, - 0x28, 0x78, 0xa, 0x82, 0x9c, 0x7b, 0x9c, 0x7c, 0x9b, 0x78, 0x95, 0x86, - 0x84, 0x86, 0x86, 0x94, 0x7a, 0x9b, 0x7b, 0x8, 0xd2, 0xfb, 0x74, 0x15, - 0x13, 0x44, 0x54, 0xea, 0xb, 0x94, 0x7f, 0x78, 0x93, 0x7d, 0x1b, 0x6a, - 0x71, 0x74, 0x6c, 0x70, 0x9f, 0x71, 0xab, 0x1f, 0x13, 0x34, 0x54, 0xe8, - 0x83, 0x90, 0x91, 0x8c, 0x8c, 0x90, 0x1f, 0x8c, 0x8d, 0x8b, 0x8c, 0x1b, - 0x87, 0x85, 0x80, 0x80, 0x77, 0x1a, 0x13, 0x94, 0x54, 0xe8, 0x83, 0x6d, - 0xa6, 0x72, 0xab, 0xac, 0xa6, 0xa4, 0xa9, 0xa0, 0x83, 0x92, 0x87, 0x93, - 0x1e, 0x93, 0x89, 0x5, 0x89, 0x93, 0x92, 0x8b, 0x92, 0x1b, 0x13, 0x44, - 0x54, 0xe8, 0x23, 0xa7, 0x99, 0xa7, 0xa8, 0x1f, 0x13, 0x44, 0x54, 0xe8, - 0x83, 0xaa, 0x70, 0xa1, 0x6a, 0x1e, 0x13, 0x8a, 0x24, 0xec, 0x1c, 0x7d, - 0x74, 0x85, 0x82, 0x81, 0x1f, 0x8c, 0xb5, 0x89, 0xc7, 0xa1, 0xa1, 0xa4, - 0xa4, 0xc4, 0x8b, 0xb7, 0x87, 0x8, 0x81, 0x81, 0x84, 0x76, 0x7d, 0x1a, - 0x6a, 0xa3, 0x71, 0xaa, 0xa4, 0xa5, 0xa0, 0xa8, 0x91, 0x8a, 0x91, 0x8a, - 0x91, 0x1e, 0x8c, 0x8b, 0x8e, 0x8c, 0x1a, 0x13, 0x91, 0x4, 0xec, 0x1b, - 0x87, 0x93, 0x95, 0x7f, 0x9d, 0x1b, 0xaa, 0xa4, 0xa7, 0xab, 0xac, 0x72, - 0xa5, 0x6c, 0x77, 0x86, 0x83, 0x87, 0x83, 0x1f, 0x8c, 0x94, 0x5, 0x8c, - 0x90, 0x8b, 0x90, 0x90, 0x1a, 0x13, 0x94, 0x24, 0xec, 0x1c, 0xac, 0x73, - 0x99, 0x6a, 0x6d, 0x75, 0x72, 0x6a, 0x1e, 0x13, 0x94, 0x51, 0xec, 0x1b, - 0x7b, 0x90, 0x77, 0x94, 0x7f, 0x1e, 0x54, 0x8a, 0x5e, 0x8b, 0x74, 0xa2, - 0x71, 0xa5, 0x91, 0xc8, 0x8a, 0xb1, 0x8, 0x13, 0x94, 0x52, 0x6c, 0x1b, - 0x82, 0x95, 0xa0, 0x83, 0x98, 0x1b, 0xac, 0xa6, 0xa2, 0xaa, 0xa6, 0x76, - 0xa5, 0x6c, 0x1f, 0x13, 0x94, 0x54, 0xe9, 0x1b, 0x86, 0x86, 0x8a, 0x8a, - 0x85, 0x1f, 0x88, 0x8a, 0x8b, 0x8a, 0x1b, 0x8f, 0x92, 0x96, 0x96, 0x9e, - 0x1a, 0xa9, 0x71, 0xa4, 0x6a, 0x6b, 0x70, 0x72, 0x6d, 0x76, 0x92, 0x84, - 0x8f, 0x83, 0x1e, 0x83, 0x8d, 0x5, 0x8d, 0x84, 0x85, 0x8b, 0x86, 0x1b, - 0x7e, 0xa, 0x6d, 0x7d, 0x70, 0x6d, 0x6c, 0xa4, 0x75, 0xac, 0x9b, 0x9f, - 0x91, 0x94, 0x97, 0x1f, 0x8a, 0x69, 0x92, 0x4e, 0x6f, 0x6f, 0x7a, 0x7a, - 0x45, 0x85, 0x65, 0x8c, 0x8, 0x13, 0x91, 0x4, 0xd4, 0x1b, 0x94, 0x97, - 0x92, 0x9e, 0x99, 0x1a, 0xac, 0x74, 0xa5, 0x6d, 0x72, 0x70, 0x79, 0x6f, - 0x84, 0x8a, 0x84, 0x8d, 0x83, 0x1e, 0x8a, 0x8b, 0x8a, 0x88, 0x1a, 0x8f, - 0x83, 0x83, 0x97, 0x77, 0x1b, 0x6c, 0x72, 0x70, 0x6a, 0x6a, 0xa4, 0x71, - 0xaa, 0xa0, 0x91, 0x93, 0x8f, 0x91, 0x1f, 0x7e, 0xa, 0x8a, 0x82, 0x5, - 0x8a, 0x86, 0x8b, 0x87, 0x87, 0x1a, 0x69, 0xa2, 0x7c, 0xad, 0x1e, 0x13, - 0x92, 0x54, 0xd4, 0x1b, 0xaa, 0xa0, 0xa4, 0xac, 0x9b, 0x86, 0x9f, 0x82, - 0x97, 0x1f, 0xb3, 0x8e, 0xc4, 0x8d, 0xa5, 0x71, 0x8, 0xa4, 0x72, 0x88, - 0x49, 0x68, 0x1a, 0x30, 0xc3, 0x79, 0xa, 0x94, 0x9c, 0x86, 0x91, 0x86, - 0x90, 0x78, 0x82, 0x7c, 0x7b, 0x7b, 0x7a, 0x82, 0x7a, 0x90, 0x86, 0x8, - 0xf7, 0xa5, 0xf5, 0x50, 0xa, 0x1e, 0x13, 0x94, 0x8c, 0xe8, 0x4b, 0x51, - 0xa, 0xfb, 0x58, 0xf7, 0x56, 0x44, 0xa, 0xfb, 0x56, 0xfb, 0x58, 0x44, - 0xa, 0xf7, 0x59, 0xfb, 0x56, 0x44, 0xa, 0xe, 0x5d, 0x9b, 0x76, 0xf7, - 0xd1, 0xc3, 0xf7, 0xd1, 0x77, 0x1, 0xf8, 0x6, 0xbf, 0x3, 0xf7, 0x94, - 0xf7, 0x57, 0x15, 0xf7, 0x20, 0xfb, 0x5c, 0xf7, 0x20, 0xf7, 0x5c, 0xf7, - 0x6f, 0xf7, 0x25, 0xfb, 0x6f, 0xf7, 0x25, 0xfb, 0x20, 0xf7, 0x5c, 0xfb, - 0x20, 0xfb, 0x5c, 0xfb, 0x6f, 0xfb, 0x25, 0x5, 0xf8, 0x15, 0xad, 0x15, - 0xa3, 0xc2, 0xc8, 0xa4, 0x90, 0x8f, 0x88, 0x86, 0x72, 0x4f, 0x51, 0x73, - 0x87, 0x8a, 0x8d, 0x8f, 0x1e, 0x52, 0x85, 0x15, 0x73, 0x4f, 0xc5, 0xa4, - 0x90, 0x8f, 0x8e, 0x90, 0xa4, 0xc2, 0x4e, 0x73, 0x87, 0x8a, 0x89, 0x87, - 0x1f, 0xc4, 0x4d, 0x15, 0x8f, 0x8c, 0x8d, 0x8f, 0xa3, 0xc7, 0x51, 0x72, - 0x86, 0x87, 0x88, 0x86, 0x72, 0x54, 0xc8, 0xa3, 0x1e, 0xfb, 0x21, 0x3e, - 0x15, 0xa4, 0xc7, 0xc5, 0xa3, 0x8f, 0x8c, 0x89, 0x87, 0x73, 0x54, 0x4e, - 0x72, 0x86, 0x87, 0x8e, 0x90, 0x1e, 0xe, 0x5e, 0x78, 0xf9, 0x54, 0x1, - 0xb1, 0xf9, 0x62, 0x3, 0xf7, 0x99, 0xf7, 0x58, 0x15, 0xf7, 0x1c, 0xfb, - 0x6b, 0xf7, 0x27, 0xf7, 0x73, 0xf7, 0x68, 0xf7, 0x1c, 0xfb, 0x6e, 0xf7, - 0x22, 0xfb, 0x21, 0xf7, 0x5f, 0xfb, 0x1e, 0xfb, 0x5f, 0xfb, 0x71, 0xfb, - 0x22, 0x5, 0xf7, 0x7e, 0xfb, 0x1a, 0x15, 0x9e, 0xca, 0xfb, 0x36, 0xbc, - 0x92, 0x9d, 0x83, 0x9d, 0xf7, 0x33, 0xc7, 0x79, 0xc6, 0xc4, 0x78, 0xbc, - 0xf7, 0x37, 0xa1, 0x7e, 0xa0, 0x99, 0xbf, 0xfb, 0x33, 0xc8, 0x9a, 0x79, - 0x52, 0xf7, 0x35, 0x55, 0x84, 0x78, 0x95, 0x7a, 0xfb, 0x33, 0x55, 0x9e, - 0x4d, 0x4f, 0xa1, 0x4f, 0xfb, 0x37, 0x77, 0x93, 0x79, 0x82, 0x5c, 0xf7, - 0x32, 0x5, 0xe, 0x74, 0x3a, 0xa, 0xf7, 0xd6, 0xf7, 0x78, 0x3, 0xf7, - 0x45, 0x7d, 0x15, 0xf7, 0x7b, 0xf7, 0x3d, 0xf7, 0x7c, 0xfb, 0x3d, 0x31, - 0xf7, 0xa9, 0xf7, 0x7c, 0xf7, 0x41, 0x5, 0xfb, 0xb5, 0x6, 0x36, 0xf7, - 0xa1, 0x35, 0xfb, 0xa1, 0x5, 0xfb, 0xb3, 0x6, 0xf7, 0x7e, 0xfb, 0x41, - 0x5, 0xe, 0x7b, 0x92, 0x76, 0xf8, 0x4c, 0xa6, 0xf7, 0x90, 0x54, 0xa, - 0xf9, 0x84, 0x3, 0xf7, 0x46, 0x7d, 0x15, 0xf7, 0x7d, 0xf7, 0x2d, 0xf7, - 0x7d, 0xfb, 0x2d, 0x45, 0xf7, 0xa3, 0xf7, 0x69, 0xf7, 0x4f, 0xfb, 0xa8, - 0x9e, 0x27, 0xf7, 0x86, 0x27, 0xfb, 0x86, 0xfb, 0xa8, 0x78, 0xf7, 0x60, - 0xfb, 0x4f, 0x5, 0x63, 0xfb, 0x86, 0x15, 0xe6, 0xf7, 0x8e, 0xfb, 0x71, - 0xf7, 0x3b, 0xf7, 0xa1, 0x80, 0xd4, 0xf7, 0x90, 0xd4, 0xfb, 0x90, 0xf7, - 0xa1, 0x96, 0xfb, 0x78, 0xfb, 0x3b, 0xec, 0xfb, 0x8e, 0xfb, 0x67, 0xf7, - 0x44, 0x5, 0xe, 0x59, 0x92, 0x76, 0xf9, 0x45, 0xa9, 0x8b, 0x54, 0xa, - 0xb9, 0xf9, 0xd, 0xb3, 0x3, 0xae, 0xf7, 0xec, 0x15, 0xfb, 0x5b, 0xf7, - 0x37, 0xfb, 0x33, 0xf7, 0x59, 0xf7, 0x5b, 0xf7, 0x34, 0xf7, 0x36, 0xf7, - 0x5a, 0xf7, 0x5a, 0xfb, 0x34, 0xf7, 0x35, 0xfb, 0x5a, 0xfb, 0x5d, 0xfb, - 0x34, 0xfb, 0x35, 0xfb, 0x5c, 0x1e, 0xf7, 0x32, 0xfb, 0xa3, 0x15, 0xda, - 0xf7, 0x7e, 0xfb, 0x53, 0xf7, 0x24, 0x5, 0xf7, 0x84, 0x6, 0xd6, 0xf7, - 0x74, 0xd7, 0xfb, 0x74, 0x5, 0xf7, 0x86, 0x6, 0xfb, 0x59, 0xfb, 0x24, - 0xd4, 0xfb, 0x7e, 0xfb, 0x56, 0xf7, 0x25, 0x5, 0xe, 0x8d, 0x92, 0x76, - 0xf7, 0x53, 0xad, 0x8b, 0xf7, 0x4f, 0xf7, 0xc7, 0x77, 0x1, 0xf7, 0xb1, - 0xac, 0x8b, 0xf7, 0x50, 0x8b, 0xaf, 0x3, 0xf7, 0x49, 0x7d, 0x15, 0xf7, - 0x7e, 0xf7, 0x53, 0xf7, 0x84, 0xfb, 0x53, 0xfb, 0x5, 0xf7, 0xb0, 0xf7, - 0x9d, 0xf7, 0x26, 0xfb, 0xcc, 0x89, 0x36, 0xf7, 0xb7, 0x3b, 0xfb, 0xb7, - 0xfb, 0xbb, 0x8d, 0xf7, 0x8e, 0xfb, 0x26, 0x5, 0xac, 0xb3, 0x15, 0xbf, - 0xb6, 0xaf, 0xbf, 0xbd, 0xb6, 0x66, 0x58, 0x59, 0x63, 0x5a, 0x56, 0x58, - 0x5f, 0xb9, 0xc0, 0x1e, 0xe, 0x7b, 0xb2, 0x76, 0xf7, 0x7b, 0xf7, 0x4a, - 0x86, 0xb0, 0xf7, 0xa7, 0x77, 0x12, 0xf7, 0xd4, 0xf7, 0x4a, 0x13, 0xb8, - 0xf7, 0x45, 0x35, 0xa, 0xec, 0x15, 0x13, 0xd8, 0x59, 0xb4, 0x62, 0xbd, - 0xbd, 0xb4, 0xb4, 0xbd, 0xbd, 0x62, 0xb4, 0x59, 0x59, 0x62, 0x62, 0x59, - 0x1e, 0xe, 0xfb, 0xc, 0xc6, 0xa8, 0xf7, 0x5c, 0xc7, 0x9e, 0xe1, 0xb3, - 0xaf, 0x75, 0x77, 0xf7, 0x39, 0x77, 0x12, 0xf8, 0xae, 0xa2, 0xce, 0xa5, - 0x13, 0xef, 0xf8, 0xae, 0xf8, 0x6a, 0x15, 0x90, 0x8d, 0x97, 0x90, 0x8e, - 0x8f, 0x8f, 0x9a, 0x8b, 0xa1, 0x8a, 0x9c, 0x7b, 0x7b, 0x73, 0x82, 0x7e, - 0x88, 0x8, 0x8b, 0x9f, 0x71, 0x95, 0x80, 0x1e, 0xfc, 0xc, 0x97, 0x15, - 0x97, 0x96, 0xd0, 0xb5, 0xdb, 0xaf, 0xbb, 0xa1, 0xc7, 0xa2, 0xa6, 0x94, - 0x8, 0x9c, 0x91, 0x94, 0x8d, 0x90, 0x1a, 0x94, 0x52, 0x90, 0x7e, 0x7e, - 0x4d, 0x73, 0x68, 0x3b, 0x1e, 0x3b, 0x68, 0x34, 0x5f, 0x7f, 0x1a, 0x80, - 0xa4, 0x83, 0x99, 0x85, 0x1e, 0x99, 0x85, 0x92, 0x8d, 0x95, 0x94, 0x8, - 0xfb, 0xe, 0x4c, 0x15, 0x75, 0x95, 0xaf, 0x6d, 0xaf, 0x1b, 0xaf, 0xbd, - 0xaf, 0x96, 0x93, 0x1f, 0x91, 0x98, 0x95, 0xa2, 0x9e, 0x99, 0x9e, 0x98, - 0xb2, 0xa1, 0xab, 0x9b, 0xa2, 0x97, 0xb3, 0x9f, 0xb1, 0x8c, 0x9c, 0x8c, - 0xa1, 0x85, 0x9c, 0x78, 0xa2, 0x91, 0xb0, 0x9c, 0x8a, 0x95, 0x8, 0xa3, - 0x8a, 0x6f, 0xbd, 0x7e, 0x1b, 0x82, 0x26, 0x66, 0x6a, 0x42, 0x1f, 0x42, - 0x6a, 0x47, 0x5c, 0x83, 0x86, 0x8, 0x86, 0x83, 0x7b, 0x79, 0x81, 0x1b, - 0x81, 0x79, 0x94, 0x90, 0x7e, 0x1f, 0x83, 0x8e, 0x79, 0x97, 0x83, 0x95, - 0x7e, 0x7f, 0x81, 0x7d, 0x80, 0x5c, 0x8, 0xf7, 0xf, 0xfb, 0x29, 0x15, - 0x8b, 0xf7, 0x7c, 0xfb, 0x4d, 0x97, 0x81, 0x1e, 0x81, 0x97, 0x9a, 0x85, - 0x92, 0x1b, 0x92, 0x90, 0x8e, 0x92, 0x96, 0x1f, 0x96, 0x92, 0xf7, 0x2c, - 0xf4, 0x96, 0x94, 0x8, 0x96, 0x94, 0x8f, 0x9d, 0x98, 0x98, 0x8c, 0x94, - 0x9d, 0x1a, 0x9d, 0x86, 0x9b, 0x7a, 0xa3, 0x1e, 0x7a, 0xa3, 0x29, 0xf7, - 0x9, 0x80, 0x98, 0x83, 0x95, 0x7f, 0xa0, 0x7a, 0x94, 0x8, 0x13, 0xf7, - 0x83, 0x8f, 0x82, 0x8f, 0x7d, 0x8a, 0x77, 0x8a, 0x66, 0x7e, 0x6d, 0x7b, - 0x78, 0x81, 0x61, 0x77, 0x72, 0x78, 0x77, 0x7b, 0x84, 0x72, 0x88, 0x74, - 0x84, 0x54, 0x87, 0x79, 0x84, 0x83, 0x80, 0x7e, 0x73, 0x7d, 0x78, 0x87, - 0x8, 0xfb, 0x15, 0xf7, 0x11, 0x15, 0x8c, 0x7a, 0x8d, 0x6b, 0x90, 0x75, - 0x8, 0x77, 0x97, 0xb3, 0x77, 0xa9, 0x1b, 0xa9, 0xa8, 0x94, 0x9e, 0x9e, - 0x1f, 0x92, 0xa1, 0x8f, 0xa9, 0x8e, 0xa2, 0x8, 0x80, 0x81, 0x67, 0x6b, - 0x5d, 0x1b, 0x5d, 0x6c, 0xaf, 0x9a, 0x7e, 0x1f, 0xf8, 0x44, 0x8e, 0x15, - 0x76, 0xa2, 0xae, 0xa0, 0x9f, 0x74, 0x5, 0x87, 0x54, 0x15, 0x79, 0xa0, - 0xac, 0xa0, 0x9c, 0x76, 0x5, 0x88, 0x55, 0x15, 0x79, 0x9e, 0xaa, 0xa1, - 0x9d, 0x77, 0x5, 0x53, 0x4, 0x77, 0xa2, 0xa9, 0xa0, 0x9f, 0x77, 0x5, - 0xfb, 0x40, 0xb9, 0x15, 0x75, 0xa2, 0xaf, 0xa3, 0xa1, 0x73, 0x5, 0x86, - 0x51, 0x15, 0x77, 0xa0, 0xae, 0xa3, 0xa0, 0x75, 0x5, 0x86, 0x50, 0x15, - 0x78, 0x9f, 0xaf, 0xa4, 0x9d, 0x78, 0x5, 0x86, 0x50, 0x15, 0x76, 0xa3, - 0xad, 0xa4, 0xa0, 0x73, 0x5, 0xfb, 0x91, 0xf1, 0x15, 0x97, 0x93, 0xf7, - 0x17, 0xd9, 0x94, 0x90, 0x8, 0x90, 0x94, 0x94, 0x8f, 0x92, 0x1b, 0x92, - 0x8c, 0x88, 0x86, 0x86, 0x84, 0x88, 0x7e, 0x83, 0x1f, 0x6e, 0x7a, 0x22, - 0x4d, 0x81, 0x85, 0x8, 0x84, 0x80, 0x7e, 0x7e, 0x80, 0x1b, 0x85, 0x88, - 0x8b, 0x91, 0x93, 0x90, 0x8e, 0x9d, 0x97, 0x1f, 0xd7, 0x58, 0x15, 0x78, - 0xa2, 0xab, 0x9f, 0x9f, 0x74, 0x5, 0x8e, 0x51, 0x15, 0x76, 0xa2, 0xa8, - 0xa0, 0xa1, 0x74, 0x5, 0x8c, 0x53, 0x15, 0x79, 0xa0, 0xa8, 0x9e, 0x9d, - 0x78, 0x5, 0x8a, 0x54, 0x15, 0x77, 0xa2, 0xa9, 0xa1, 0xa1, 0x72, 0x5, - 0x42, 0x48, 0x15, 0x83, 0x95, 0x2f, 0xf4, 0x7c, 0x9c, 0x7c, 0x9c, 0x8c, - 0x94, 0x8f, 0x8e, 0x90, 0x8f, 0x9c, 0x7c, 0x93, 0x82, 0x95, 0x80, 0xe6, - 0x20, 0x92, 0x84, 0x8, 0x84, 0x92, 0x93, 0x87, 0x8f, 0x1b, 0x8f, 0x95, - 0x91, 0x90, 0x92, 0x1f, 0x92, 0x90, 0xf7, 0x6, 0xd8, 0x92, 0x90, 0x8, - 0x90, 0x92, 0x94, 0x92, 0x8f, 0x1b, 0x8f, 0x91, 0x88, 0x86, 0x86, 0x82, - 0x84, 0x82, 0x86, 0x1f, 0x82, 0x86, 0xfb, 0x16, 0x33, 0x84, 0x86, 0x84, - 0x86, 0x89, 0x89, 0x89, 0x85, 0x89, 0x85, 0x8c, 0x70, 0x8a, 0x82, 0x8, - 0x78, 0x88, 0x8b, 0x79, 0x86, 0x1b, 0x86, 0x88, 0x95, 0x9b, 0x93, 0x88, - 0x9e, 0x8a, 0x9d, 0x1f, 0x8a, 0x95, 0x86, 0x94, 0x83, 0x95, 0x8, 0xe, - 0x85, 0xb2, 0x76, 0xf8, 0x2, 0xb5, 0x8b, 0xb0, 0xf7, 0xa7, 0x77, 0x1, - 0xf7, 0x4a, 0x35, 0xa, 0x6e, 0x15, 0xe6, 0xd7, 0xe6, 0x3f, 0x5f, 0xf7, - 0x3, 0xf0, 0xca, 0xfb, 0xb, 0x83, 0x6e, 0xf7, 0x7, 0x6e, 0xfb, 0x7, - 0xfb, 0xb, 0x93, 0xf0, 0x4c, 0x5, 0xe, 0x74, 0xb2, 0x76, 0xf7, 0x75, - 0xa9, 0xf7, 0x19, 0xa5, 0x85, 0xb0, 0xf7, 0xa7, 0x77, 0x12, 0x13, 0xe8, - 0xf7, 0x42, 0x4f, 0xa, 0x5, 0x13, 0xd8, 0x32, 0xa, 0xfb, 0x10, 0x42, - 0x15, 0xf7, 0x10, 0xf2, 0xf7, 0x10, 0x24, 0x4f, 0xf7, 0x29, 0xf7, 0x1c, - 0xe1, 0xfb, 0x34, 0x81, 0x63, 0xf7, 0x30, 0x63, 0xfb, 0x30, 0xfb, 0x34, - 0x95, 0xf7, 0x1c, 0x35, 0x5, 0xe, 0x83, 0x92, 0x76, 0xf8, 0x3f, 0xa0, - 0xf7, 0xa3, 0x77, 0x1, 0xf8, 0x38, 0xd9, 0x3, 0xf7, 0x3f, 0x7d, 0x15, - 0xf7, 0x8d, 0xf7, 0x44, 0xf7, 0x95, 0xfb, 0x44, 0x25, 0xf7, 0xae, 0xf7, - 0x71, 0xf7, 0x3a, 0x5, 0xfb, 0xad, 0x6, 0x2c, 0xf7, 0xa3, 0x2a, 0xfb, - 0xa3, 0x5, 0xfb, 0xb4, 0x6, 0xf7, 0x7d, 0xfb, 0x3a, 0x5, 0xf7, 0x2c, - 0xba, 0x15, 0x38, 0xed, 0xde, 0xf7, 0x8d, 0x5, 0xfb, 0xef, 0x4, 0xd9, - 0xed, 0x5, 0xf7, 0x92, 0x6, 0xfc, 0x61, 0xfb, 0x1f, 0x15, 0xfb, 0x69, - 0xf7, 0x24, 0xf7, 0xea, 0x24, 0x5, 0x8b, 0x4, 0xf7, 0x19, 0x62, 0xf2, - 0xfb, 0x9f, 0x5, 0xfc, 0x61, 0x95, 0x15, 0xf7, 0x75, 0xf7, 0xbd, 0x5, - 0xfb, 0x16, 0x7, 0xe, 0xdf, 0x92, 0x76, 0xf8, 0x47, 0xa0, 0xf7, 0x9b, - 0x77, 0x1, 0xf7, 0xd3, 0xf7, 0xed, 0x3, 0xf7, 0x43, 0x92, 0x15, 0xf7, - 0xd, 0x76, 0xf7, 0x47, 0xf7, 0x17, 0xf7, 0x35, 0xfb, 0x12, 0xf7, 0xf, - 0x86, 0x2c, 0xf7, 0xa9, 0xf7, 0x74, 0xf7, 0x32, 0x4e, 0xa0, 0x5, 0xfb, - 0x73, 0x6, 0x37, 0xf7, 0x89, 0xfb, 0x4, 0x9d, 0x32, 0xfb, 0x9b, 0x5, - 0xfb, 0xb0, 0x6, 0xf7, 0x76, 0xfb, 0x41, 0x5, 0x55, 0xfb, 0x7c, 0x15, - 0xdb, 0xf7, 0x86, 0xfb, 0x53, 0xf7, 0x22, 0x5, 0xf7, 0x84, 0x6, 0xdc, - 0xf7, 0x8b, 0xdd, 0xfb, 0x8b, 0x5, 0xf7, 0x8c, 0x6, 0xfb, 0x5f, 0xfb, - 0x22, 0xda, 0xfb, 0x91, 0xfb, 0x62, 0xf7, 0x38, 0x5, 0xe, 0x2c, 0x9d, - 0x76, 0xf9, 0x4b, 0x77, 0x1, 0xbf, 0xf9, 0x14, 0x3, 0xd2, 0xf7, 0x3, - 0x15, 0xf7, 0x82, 0xf7, 0x9, 0xf7, 0x2d, 0xfb, 0x7b, 0xa0, 0x98, 0x68, - 0xf7, 0xa0, 0xf7, 0x88, 0xd6, 0x5, 0xa3, 0x7, 0xfb, 0x8c, 0xb3, 0xa2, - 0xf7, 0x9e, 0x70, 0x94, 0xfb, 0x1e, 0xfb, 0x86, 0xfb, 0x7f, 0xf7, 0x14, - 0x7c, 0x76, 0xf7, 0x38, 0xfb, 0x71, 0xfb, 0x36, 0xfb, 0x5d, 0x5, 0xe, - 0xfb, 0x8, 0x9a, 0x76, 0xf7, 0x99, 0xf7, 0x3f, 0xf7, 0x9b, 0x77, 0x1, - 0xf7, 0x85, 0x96, 0x8b, 0xf7, 0x3c, 0x3, 0xc4, 0xf7, 0x3, 0x15, 0xf7, - 0x91, 0xf7, 0x20, 0xf7, 0x2f, 0xfb, 0x95, 0x9e, 0x99, 0x4f, 0xf7, 0xac, - 0xf7, 0x9b, 0xc9, 0x5, 0xa7, 0x7, 0xfb, 0xa2, 0x9e, 0xb8, 0xf7, 0xab, - 0x6f, 0x98, 0xfb, 0x16, 0xfb, 0xa0, 0xfb, 0x8f, 0xf7, 0x2e, 0x7a, 0x76, - 0xf7, 0x61, 0xfb, 0x71, 0xfb, 0x5a, 0xfb, 0x5c, 0x5, 0xf7, 0x65, 0xf7, - 0x64, 0x15, 0xb9, 0xb0, 0xb2, 0xbb, 0xba, 0xaf, 0x64, 0x5d, 0x5c, 0x67, - 0x64, 0x5c, 0x5b, 0x66, 0xb2, 0xba, 0x1e, 0xe, 0x31, 0xa0, 0x76, 0xf9, - 0x30, 0x77, 0x1, 0xb3, 0xf9, 0x31, 0x3, 0xf7, 0x4, 0xf7, 0x10, 0x15, - 0xf7, 0x83, 0xf7, 0x45, 0xfb, 0x5, 0xfb, 0xa8, 0xb2, 0x8a, 0xa4, 0x85, - 0xb1, 0x79, 0x19, 0xb4, 0xf7, 0xb8, 0xf7, 0x9, 0xfb, 0xa5, 0xa7, 0xa5, - 0xa2, 0x9b, 0xb1, 0x95, 0x19, 0xfb, 0x48, 0xf7, 0x82, 0xf7, 0xa9, 0xfb, - 0x3, 0x88, 0xaa, 0x99, 0xb2, 0x99, 0xa8, 0x19, 0xfb, 0xb9, 0xb5, 0xf7, - 0xa6, 0xf7, 0x9, 0x74, 0xa3, 0x76, 0xb0, 0x82, 0xa6, 0x19, 0xfb, 0x82, - 0xfb, 0x45, 0xf7, 0x4, 0xf7, 0xa8, 0x6c, 0x8c, 0x62, 0x96, 0x6f, 0x98, - 0x19, 0x60, 0xfb, 0xb8, 0xfb, 0x8, 0xf7, 0xa5, 0x77, 0x79, 0x68, 0x76, - 0x6a, 0x7e, 0x19, 0x8c, 0x6, 0xf7, 0x45, 0xfb, 0x82, 0xfb, 0xa8, 0xf7, - 0x3, 0x5, 0x64, 0x80, 0x70, 0x7c, 0x6a, 0x1e, 0xf7, 0xb9, 0x60, 0xfb, - 0xa5, 0xfb, 0x8, 0xa4, 0x6f, 0x98, 0x74, 0x99, 0x66, 0x19, 0xe, 0x5a, - 0x9f, 0x76, 0xf8, 0x8f, 0x77, 0xae, 0x77, 0xf7, 0x46, 0x77, 0x12, 0xc2, - 0xf9, 0x3c, 0x13, 0xd8, 0xeb, 0xf7, 0x31, 0x15, 0xf7, 0x8b, 0xf7, 0x6, - 0x5c, 0xfb, 0xa1, 0x9d, 0x88, 0xe7, 0xf7, 0x93, 0xf7, 0x31, 0xfb, 0x73, - 0x99, 0x94, 0xfb, 0x7, 0xf7, 0x8b, 0xf7, 0xa2, 0x5c, 0x8e, 0x9b, 0xfb, - 0x93, 0xe9, 0xf7, 0x73, 0xf7, 0x30, 0x5, 0x13, 0xb8, 0x80, 0x9a, 0xfb, - 0x89, 0xfb, 0x6, 0xba, 0xf7, 0xa1, 0x79, 0x8e, 0x2d, 0xfb, 0x93, 0xfb, - 0x2f, 0xf7, 0x73, 0x7c, 0x82, 0xf7, 0x8, 0xfb, 0x8b, 0xfb, 0xa2, 0xba, - 0x88, 0x7b, 0xf7, 0x93, 0x2d, 0xfb, 0x73, 0xfb, 0x30, 0x5, 0xe, 0x5c, - 0x78, 0x60, 0xa, 0x8e, 0xbe, 0x7e, 0x67, 0xa, 0x95, 0x77, 0xb8, 0xcf, - 0x48, 0xcf, 0xd7, 0xa7, 0x8c, 0x77, 0x12, 0xb0, 0x60, 0xa, 0x95, 0xbe, - 0x77, 0x67, 0xa, 0xae, 0xcf, 0x48, 0xcf, 0xd7, 0xa7, 0x13, 0xec, 0x52, - 0xb4, 0x55, 0x40, 0xf7, 0x8a, 0xa1, 0x15, 0x73, 0xa6, 0x7f, 0xb9, 0xae, - 0x1a, 0xb8, 0x9d, 0xb5, 0xab, 0xab, 0x1e, 0x8d, 0x89, 0x5, 0x81, 0x7a, - 0x85, 0x76, 0x78, 0x1a, 0x61, 0xa3, 0x6c, 0xb4, 0x82, 0x1e, 0x49, 0x97, - 0xbf, 0x4e, 0xd2, 0x1b, 0xa5, 0xa3, 0x95, 0x9d, 0x9e, 0x1f, 0x79, 0x8c, - 0x79, 0x92, 0x7b, 0x93, 0x4f, 0xa9, 0x65, 0xc3, 0x8a, 0xcf, 0x8e, 0x8c, - 0x18, 0x64, 0x94, 0xaf, 0x64, 0xb6, 0x1b, 0x9b, 0x9b, 0x91, 0x93, 0x98, - 0x1f, 0x78, 0xa7, 0xad, 0x80, 0xad, 0x1b, 0xc9, 0xc0, 0xb2, 0xcc, 0x8e, - 0x1f, 0x73, 0x70, 0x5d, 0x7f, 0x68, 0x1b, 0x5e, 0x61, 0x9d, 0xab, 0x6b, - 0x7f, 0xa, 0x13, 0xd1, 0x52, 0xb9, 0x21, 0x40, 0x81, 0x9c, 0xa0, 0x85, - 0x9e, 0x1b, 0xb5, 0xaa, 0xa3, 0xb4, 0x94, 0x1f, 0xcd, 0x97, 0xc8, 0xbf, - 0xd2, 0x1a, 0xa5, 0x81, 0xa3, 0x79, 0x9e, 0x1e, 0x8a, 0x79, 0x84, 0x79, - 0x83, 0x7b, 0x6d, 0x4f, 0x53, 0x65, 0x47, 0x8a, 0x8a, 0x8e, 0x18, 0xb2, - 0x94, 0xb2, 0xaf, 0xb6, 0x1a, 0x9b, 0x85, 0x9b, 0x83, 0x98, 0x1e, 0x13, - 0xe5, 0x52, 0xb9, 0x54, 0xc0, 0x9e, 0xa7, 0x96, 0xad, 0xad, 0x1a, 0x13, - 0xe5, 0x52, 0xb9, 0x21, 0x40, 0xc9, 0x64, 0xc0, 0x4a, 0x8e, 0x1e, 0x13, - 0xe5, 0x52, 0xb9, 0x54, 0xc0, 0xa3, 0x70, 0x97, 0x5d, 0x68, 0x1a, 0x5e, - 0x79, 0x61, 0x6b, 0x6b, 0x1e, 0x89, 0x8d, 0x5, 0x13, 0xe4, 0x82, 0xb9, - 0x49, 0x40, 0x95, 0x9c, 0x91, 0xa0, 0x9e, 0x1a, 0xb5, 0x73, 0xaa, 0x62, - 0x94, 0x1e, 0x13, 0xe5, 0x46, 0x79, 0x49, 0x40, 0xcd, 0x7f, 0x57, 0xc8, - 0x44, 0x1b, 0x71, 0x73, 0x81, 0x79, 0x78, 0x1f, 0x9d, 0x8a, 0x9d, 0x84, - 0x9b, 0x83, 0xc7, 0x6d, 0xb1, 0x53, 0x8c, 0x47, 0x88, 0x8a, 0x18, 0xb2, - 0x82, 0x67, 0xb2, 0x60, 0x1b, 0x7b, 0x7b, 0x85, 0x83, 0x7e, 0x1f, 0x13, - 0xe5, 0x51, 0xb9, 0x55, 0x40, 0x9e, 0x6f, 0x69, 0x96, 0x69, 0x1b, 0x6e, - 0xa, 0x4d, 0x56, 0x64, 0x4a, 0x88, 0x1f, 0x13, 0xe5, 0x51, 0xb9, 0x55, - 0x40, 0xa3, 0xa6, 0xb9, 0x97, 0xae, 0x1b, 0xb8, 0xb5, 0x79, 0x6b, 0xab, - 0x1f, 0x89, 0x89, 0x5, 0x13, 0xe8, 0x22, 0xb9, 0x55, 0x40, 0x95, 0x7a, - 0x76, 0x91, 0x78, 0x1b, 0x61, 0x6c, 0x73, 0x62, 0x82, 0x1f, 0x49, 0x7f, - 0x4e, 0x57, 0x44, 0x1a, 0x71, 0x95, 0x73, 0x9d, 0x78, 0x1e, 0x8c, 0x9d, - 0x92, 0x9d, 0x93, 0x9b, 0xa9, 0xc7, 0xc3, 0xb1, 0xcf, 0x8c, 0x8c, 0x88, - 0x18, 0x64, 0x82, 0x64, 0x67, 0x60, 0x1a, 0x7b, 0x91, 0x7b, 0x93, 0x7e, - 0x1e, 0x78, 0x6f, 0x80, 0x69, 0x69, 0x1a, 0x4d, 0xb2, 0x56, 0xcc, 0x88, - 0x1e, 0xc6, 0xf7, 0x6, 0x15, 0x81, 0x9b, 0x87, 0x9e, 0x9e, 0x1a, 0x13, - 0xe3, 0x52, 0xb9, 0x55, 0x40, 0xb6, 0xa1, 0xbc, 0xb4, 0x9d, 0x1e, 0x8a, - 0x8d, 0x5, 0x8e, 0x7f, 0x7e, 0x8d, 0x7f, 0x1b, 0x65, 0x4c, 0x79, 0x6e, - 0x70, 0x1f, 0x6e, 0xa, 0xbd, 0x98, 0xc2, 0xb1, 0xbd, 0x1b, 0x96, 0x96, - 0x89, 0x87, 0x95, 0x1f, 0x8c, 0x8d, 0x73, 0xb6, 0x42, 0xb8, 0x59, 0x8a, - 0x19, 0x13, 0xe5, 0x4a, 0xb2, 0x15, 0x40, 0x95, 0x9b, 0x9e, 0x8f, 0x9e, - 0x1b, 0x13, 0xe5, 0x52, 0xb8, 0xd5, 0x40, 0xb6, 0xbc, 0x75, 0x62, 0x9d, - 0x1f, 0x8d, 0x8c, 0x5, 0x8e, 0x97, 0x8d, 0x98, 0x97, 0x1a, 0xb1, 0x79, - 0xca, 0x6e, 0xa6, 0x1e, 0x13, 0xe5, 0x52, 0xb9, 0x21, 0x40, 0xbd, 0x7e, - 0xb1, 0x54, 0x59, 0x1a, 0x80, 0x89, 0x80, 0x87, 0x81, 0x1e, 0x8d, 0x8a, - 0xb6, 0xa3, 0xb8, 0xd4, 0x8a, 0xbd, 0x19, 0x13, 0xc8, 0x82, 0xb9, 0x53, - 0x40, 0x95, 0x7b, 0x8f, 0x78, 0x78, 0x1a, 0x60, 0x75, 0x5a, 0x62, 0x79, - 0x1e, 0x8c, 0x89, 0x5, 0x88, 0x97, 0x98, 0x89, 0x97, 0x1b, 0xb1, 0xca, - 0x9d, 0xa8, 0xa6, 0x1f, 0x59, 0x7e, 0x54, 0x65, 0x59, 0x1b, 0x80, 0x80, - 0x8d, 0x8f, 0x81, 0x1f, 0x8a, 0x89, 0x5, 0x13, 0xe5, 0x52, 0xb9, 0x55, - 0x40, 0xa3, 0x60, 0xd4, 0x5e, 0xbd, 0x8c, 0x8, 0x13, 0xe5, 0x52, 0xb2, - 0x21, 0x40, 0x81, 0x7b, 0x78, 0x87, 0x78, 0x1b, 0x60, 0x5a, 0xa1, 0xb4, - 0x79, 0x1f, 0x89, 0x8a, 0x5, 0x88, 0x7f, 0x89, 0x7e, 0x7f, 0x1a, 0x65, - 0x9d, 0x4c, 0xa8, 0x70, 0x1e, 0x59, 0x98, 0x65, 0xc2, 0xbd, 0x1a, 0x96, - 0x8d, 0x96, 0x8f, 0x95, 0x1e, 0x89, 0x8c, 0x5, 0x13, 0xe5, 0x52, 0xb9, - 0x55, 0x40, 0x60, 0x73, 0x5e, 0x42, 0x8c, 0x59, 0x8, 0xd1, 0xf7, 0x39, - 0x15, 0xa4, 0x97, 0xa6, 0x86, 0x87, 0xa6, 0x98, 0xa4, 0x70, 0x8f, 0x78, - 0x9f, 0x7e, 0x73, 0x5, 0x6e, 0xa, 0x72, 0x7f, 0x9f, 0x77, 0x5, 0xe, - 0xfb, 0x24, 0x92, 0x76, 0xf9, 0x64, 0x77, 0x1, 0xb2, 0xf8, 0xfd, 0x3, - 0xb2, 0xf7, 0x3e, 0x15, 0xf7, 0x8d, 0xd7, 0xc6, 0xfb, 0x98, 0xc7, 0xf7, - 0x98, 0xf7, 0x8d, 0x3e, 0xfb, 0x5a, 0xf7, 0x44, 0xf7, 0x5f, 0xf7, 0x44, - 0xfb, 0x92, 0x3c, 0x51, 0xf7, 0x9c, 0x4e, 0xfb, 0x9c, 0xfb, 0x91, 0xda, - 0xf7, 0x5e, 0xfb, 0x44, 0x5, 0xe, 0x59, 0x4c, 0xa2, 0xf7, 0x6a, 0xa8, - 0xf8, 0x8a, 0x77, 0x1, 0xf7, 0x51, 0xcd, 0x15, 0x81, 0x7c, 0x87, 0x79, - 0x79, 0x1a, 0x5b, 0xa4, 0x6d, 0xbc, 0xa7, 0xa8, 0x95, 0x97, 0xa5, 0x1e, - 0xc0, 0xa4, 0xba, 0xb1, 0xb5, 0xb3, 0x8, 0xb4, 0xb6, 0xdb, 0xd2, 0xca, - 0x1b, 0xa2, 0x9e, 0x82, 0x79, 0x99, 0x1f, 0x8f, 0x9c, 0x9d, 0x8e, 0x5, - 0xa3, 0x7a, 0x72, 0x97, 0x6e, 0x1b, 0x4c, 0x46, 0x56, 0x61, 0x5f, 0x1f, - 0x5a, 0x58, 0xfb, 0x2, 0x28, 0x40, 0x1b, 0x6e, 0x6d, 0xa1, 0xaa, 0x97, - 0x8f, 0x97, 0x90, 0x96, 0x1f, 0x84, 0x92, 0x99, 0x7d, 0x95, 0x1b, 0x90, - 0x8e, 0x8d, 0x8f, 0x8e, 0x1f, 0xe8, 0xf7, 0x13, 0x5, 0x8f, 0x91, 0x8c, - 0x98, 0x92, 0x1a, 0x94, 0x89, 0x9f, 0x84, 0x91, 0x1e, 0x81, 0x94, 0x77, - 0x9b, 0x9a, 0x1a, 0xad, 0xc4, 0xe0, 0x9f, 0xa7, 0x1e, 0xa5, 0x9e, 0xb7, - 0xc8, 0xb1, 0xac, 0xa5, 0x71, 0x95, 0x1b, 0x90, 0x8f, 0x8f, 0x8f, 0x8e, - 0x1f, 0xe7, 0xf7, 0x13, 0x5, 0x8f, 0x90, 0x8b, 0x97, 0x91, 0x1a, 0x93, - 0x8b, 0x9d, 0x84, 0x91, 0x1e, 0xa0, 0x73, 0x54, 0x9b, 0x6c, 0x1b, 0x7c, - 0x7d, 0x88, 0x83, 0x7f, 0x1f, 0x4a, 0x60, 0x32, 0xfb, 0x5, 0x5c, 0x4a, - 0x59, 0x46, 0x41, 0xfb, 0x0, 0x72, 0x39, 0x8, 0x88, 0x80, 0x89, 0x7e, - 0x7f, 0x1a, 0x65, 0x9d, 0x67, 0xa2, 0x6e, 0x1e, 0xa8, 0xb3, 0x15, 0x72, - 0x9d, 0x74, 0xb1, 0xaa, 0x1a, 0xbb, 0xf7, 0x8, 0xf7, 0x3f, 0xaa, 0xb6, - 0x1e, 0xba, 0xcc, 0xd9, 0xf4, 0xcc, 0xb8, 0x8, 0x92, 0x95, 0x97, 0x8d, - 0x97, 0x1b, 0xa4, 0xad, 0x80, 0x7c, 0x9f, 0x1f, 0x8e, 0x88, 0x8f, 0x88, - 0x86, 0x1a, 0x83, 0x4d, 0x3a, 0x82, 0x7f, 0x1e, 0x88, 0x89, 0x87, 0x87, - 0x87, 0x84, 0x79, 0x9d, 0x79, 0x1b, 0x7b, 0x7e, 0x85, 0x82, 0x7e, 0x1f, - 0x54, 0x66, 0x37, 0xfb, 0x16, 0x6e, 0x4c, 0x8, 0x87, 0x82, 0x7d, 0x6e, - 0x81, 0x7e, 0xb0, 0x73, 0x83, 0x1a, 0x81, 0x4a, 0x37, 0x81, 0x7e, 0x1e, - 0x88, 0x89, 0x88, 0x89, 0x87, 0x1b, 0x87, 0x88, 0x8d, 0x8d, 0x88, 0x1f, - 0xe, 0x4c, 0x9a, 0x76, 0xf9, 0x55, 0x54, 0xa, 0xf9, 0x56, 0x3, 0xf7, - 0xad, 0xf7, 0x86, 0x15, 0x62, 0xfb, 0x7d, 0x5, 0x7e, 0x89, 0x8c, 0x89, - 0x8c, 0x1b, 0x91, 0x92, 0x95, 0x8f, 0x8e, 0x1f, 0xf7, 0x16, 0xf7, 0x4c, - 0xf7, 0x1b, 0xfb, 0x53, 0x5, 0x85, 0x90, 0x8c, 0x8a, 0x8d, 0x1b, 0x8f, - 0x8e, 0x8d, 0x93, 0x89, 0x1f, 0x5e, 0xf7, 0x82, 0xf7, 0x7b, 0x5f, 0x5, - 0x9d, 0x88, 0x8e, 0x8c, 0x8d, 0x1a, 0x90, 0x7f, 0x93, 0x89, 0x8c, 0x1e, - 0xfb, 0x53, 0xf7, 0x1b, 0xf7, 0x51, 0xf7, 0x17, 0x5, 0x94, 0x91, 0x92, - 0x93, 0x8f, 0x1a, 0x90, 0x7c, 0x8b, 0x81, 0x88, 0x1e, 0xfb, 0x77, 0x62, - 0xb4, 0xf7, 0x6e, 0x5, 0x9f, 0x8f, 0x8b, 0x8f, 0x89, 0x1b, 0x81, 0x82, - 0x7b, 0x8a, 0x8a, 0x1f, 0xfb, 0x12, 0xfb, 0x49, 0xfb, 0x16, 0xf7, 0x4c, - 0x5, 0x8d, 0x8a, 0x84, 0x97, 0x87, 0x1b, 0x81, 0x91, 0x7a, 0x87, 0x1f, - 0xb4, 0xfb, 0x71, 0xfb, 0x74, 0xb4, 0x5, 0x86, 0x8c, 0x7a, 0x90, 0x82, - 0x1a, 0x85, 0x97, 0x85, 0x8d, 0x89, 0x1e, 0xf7, 0x50, 0xfb, 0x1a, 0xfb, - 0x4f, 0xfb, 0x12, 0x5, 0x87, 0x88, 0x80, 0x84, 0x87, 0x1a, 0x84, 0x9c, - 0x8e, 0x8f, 0x8c, 0x1e, 0xe, 0x44, 0x99, 0x76, 0xf9, 0x56, 0x54, 0xa, - 0xf9, 0x4f, 0x3, 0xae, 0xf7, 0x58, 0x15, 0xf7, 0x6c, 0xa8, 0x70, 0xfb, - 0x7c, 0xf7, 0x32, 0xf7, 0x3d, 0xf7, 0x32, 0xfb, 0x3d, 0x72, 0xf7, 0x7c, - 0xf7, 0x6f, 0x6e, 0xfb, 0x3d, 0xf7, 0x31, 0xf7, 0x39, 0xf7, 0x31, 0xfb, - 0x6b, 0x6e, 0xa4, 0xf7, 0x6e, 0xfb, 0x32, 0xfb, 0x3d, 0xfb, 0x32, 0xf7, - 0x3d, 0xa6, 0xfb, 0x6e, 0xfb, 0x6c, 0xa8, 0xf7, 0x3c, 0xfb, 0x31, 0x5, - 0xe, 0x5c, 0x3a, 0xa, 0xdf, 0xf9, 0x7, 0x3, 0xdf, 0xf7, 0x35, 0x15, - 0xf7, 0x48, 0xbb, 0x5b, 0xfb, 0x41, 0xf7, 0x18, 0xf7, 0x16, 0xc7, 0xfb, - 0x48, 0xb5, 0xf7, 0x41, 0xf7, 0x14, 0xfb, 0xf, 0x5b, 0xf7, 0x3f, 0xf7, - 0x49, 0x63, 0xfb, 0x14, 0xf7, 0x18, 0xf7, 0x42, 0xb9, 0xfb, 0x41, 0xba, - 0xf7, 0x17, 0xf7, 0x10, 0xfb, 0x50, 0x62, 0xb9, 0xf7, 0x47, 0xfb, 0x12, - 0xfb, 0x14, 0x5b, 0xf7, 0x47, 0x5a, 0xfb, 0x43, 0xfb, 0x15, 0xf7, 0x12, - 0xb8, 0xfb, 0x49, 0xfb, 0x4a, 0xba, 0xf7, 0x19, 0xfb, 0x19, 0xfb, 0x4a, - 0x56, 0xf7, 0x44, 0x5c, 0x5, 0xe, 0x3b, 0x9c, 0x76, 0xa3, 0x76, 0xf7, - 0xa4, 0x7c, 0xa, 0xe6, 0x77, 0xa0, 0x77, 0xf7, 0x5f, 0x77, 0x12, 0xf7, - 0xcb, 0x7c, 0xa, 0x13, 0x6e, 0xd8, 0xf7, 0x7, 0xf7, 0xb, 0x15, 0x99, - 0x82, 0xa0, 0x76, 0x94, 0x7d, 0xf7, 0x49, 0xf7, 0x63, 0x18, 0x8c, 0x8a, - 0xfb, 0xe, 0xfb, 0x8b, 0x9c, 0x88, 0xa6, 0x81, 0x99, 0x80, 0x19, 0xe3, - 0xf7, 0x99, 0x5, 0x8d, 0x6, 0x13, 0xae, 0xd8, 0x79, 0xfb, 0xa7, 0x9c, - 0x8f, 0xa7, 0x8b, 0x9c, 0x87, 0x19, 0x79, 0xf7, 0xa7, 0x5, 0x8c, 0x6, - 0xe4, 0xfb, 0x99, 0x99, 0x96, 0xa5, 0x95, 0x9c, 0x8e, 0x19, 0xfb, 0xe, - 0xf7, 0x8b, 0x8d, 0x8c, 0xf7, 0x49, 0xfb, 0x63, 0x94, 0x99, 0xa0, 0xa0, - 0x99, 0x94, 0x19, 0xfb, 0x63, 0xf7, 0x49, 0x8c, 0x8c, 0xf7, 0x8b, 0xfb, - 0xe, 0x8e, 0x9c, 0x95, 0xa6, 0x96, 0x99, 0x19, 0xfb, 0x99, 0xe3, 0x75, - 0xa, 0xf7, 0xa7, 0x79, 0x87, 0x9c, 0x8b, 0xa7, 0x8f, 0x9c, 0x19, 0xfb, - 0xa7, 0x79, 0x5, 0x8c, 0x7, 0xf7, 0x99, 0xe4, 0x80, 0x99, 0x81, 0xa5, - 0x88, 0x9c, 0x19, 0xfb, 0x8b, 0xfb, 0xe, 0x8a, 0x8d, 0xf7, 0x63, 0xf7, - 0x49, 0x7d, 0x94, 0x76, 0xa0, 0x82, 0x99, 0x19, 0xfb, 0x49, 0xfb, 0x63, - 0x8a, 0x8c, 0xf7, 0xe, 0xf7, 0x8b, 0x7a, 0x8e, 0x70, 0x95, 0x7d, 0x96, - 0x19, 0x33, 0xfb, 0x99, 0x5, 0x89, 0x6, 0x9d, 0xf7, 0xa7, 0x7a, 0x87, - 0x6f, 0x8b, 0x7a, 0x8f, 0x19, 0x9d, 0xfb, 0xa7, 0x5, 0x8a, 0x6, 0x32, - 0xf7, 0x99, 0x5, 0x7d, 0x7e, 0x71, 0x81, 0x79, 0x1b, 0xf7, 0xe, 0xfb, - 0x8b, 0x89, 0x8a, 0xfb, 0x49, 0xf7, 0x63, 0x82, 0x7d, 0x76, 0x76, 0x7d, - 0x82, 0x19, 0xf7, 0x63, 0xfb, 0x49, 0x8a, 0x8a, 0x5, 0x13, 0x75, 0xe8, - 0xfb, 0x8b, 0xf7, 0xe, 0x88, 0x7a, 0x81, 0x70, 0x80, 0x7d, 0x19, 0xf7, - 0x99, 0x33, 0x80, 0xa, 0xfb, 0xa7, 0x9d, 0x8f, 0x7a, 0x8b, 0x6f, 0x87, - 0x7a, 0x19, 0xf7, 0xa7, 0x9d, 0x5, 0x8a, 0x7, 0xfb, 0x99, 0x32, 0x96, - 0x7d, 0x95, 0x71, 0x8e, 0x7a, 0x19, 0xf7, 0x8b, 0xf7, 0xe, 0x8c, 0x89, - 0x5, 0x8e, 0xb3, 0x15, 0xa9, 0xa4, 0xa4, 0xa9, 0xa9, 0xa4, 0x72, 0x6d, - 0x6d, 0x72, 0x72, 0x6d, 0x6d, 0x72, 0xa4, 0xa9, 0x1e, 0xe, 0xfb, 0x18, - 0xac, 0x76, 0xf7, 0xc8, 0xa0, 0x89, 0xa0, 0xf7, 0xc8, 0x77, 0x12, 0xf7, - 0xe1, 0xa0, 0x89, 0xa0, 0x13, 0xb8, 0xa4, 0xf7, 0x99, 0x15, 0x47, 0xf7, - 0x8, 0xaa, 0xaa, 0x99, 0x1e, 0xa3, 0x96, 0xa4, 0x99, 0xa4, 0x99, 0xa4, - 0x99, 0xa5, 0x99, 0xa0, 0x97, 0x8, 0x8d, 0x8f, 0x8e, 0x8c, 0x8d, 0x1b, - 0x8f, 0x8d, 0x89, 0x87, 0x89, 0x8a, 0x88, 0x89, 0x87, 0x1f, 0x7f, 0x74, - 0x7c, 0x71, 0x7c, 0x70, 0x8, 0x71, 0x5e, 0x6d, 0x5a, 0x57, 0x1a, 0x6e, - 0x93, 0x61, 0xad, 0xae, 0xa6, 0xbe, 0xa7, 0x92, 0x1e, 0x94, 0xac, 0x8d, - 0xb9, 0xb9, 0xa8, 0x8c, 0xa7, 0xa4, 0x1a, 0x93, 0x8e, 0x90, 0x8f, 0x8e, - 0x8f, 0x88, 0x86, 0x8e, 0x1e, 0x99, 0x75, 0x9a, 0x71, 0x9b, 0x70, 0xa2, - 0x65, 0xa3, 0x64, 0xa1, 0x75, 0xa4, 0x72, 0xc1, 0x6d, 0xa6, 0xa6, 0xa6, - 0xa6, 0x6d, 0xc1, 0x72, 0xa4, 0x73, 0xa3, 0x64, 0xa4, 0x63, 0xa2, 0x72, - 0x9a, 0x72, 0x9a, 0x76, 0x97, 0x8, 0x86, 0x8e, 0x88, 0x8f, 0x8e, 0x1a, - 0x8f, 0x90, 0x8e, 0x93, 0x1e, 0x8c, 0xa5, 0xa9, 0x8b, 0xaa, 0x1b, 0xb8, - 0x8c, 0xb7, 0x8d, 0xaa, 0x93, 0x8, 0xa9, 0x93, 0xbc, 0xa4, 0xaf, 0x1a, - 0x13, 0xd4, 0x99, 0x83, 0x95, 0x7f, 0x92, 0x1e, 0x67, 0xa1, 0x57, 0x7e, - 0x67, 0x7b, 0x73, 0x80, 0x70, 0x7d, 0x71, 0x7c, 0x72, 0x7d, 0x72, 0x7d, - 0x75, 0x7f, 0x8, 0x89, 0x87, 0x88, 0x8a, 0x89, 0x1b, 0x87, 0x89, 0x8d, - 0x8f, 0x8d, 0x8c, 0x8e, 0x8d, 0x8f, 0x1f, 0x97, 0xa2, 0x9a, 0xa5, 0x9a, - 0xa6, 0x9a, 0xa5, 0x99, 0xa6, 0x95, 0xa3, 0x8, 0xaa, 0x99, 0xa4, 0xf7, - 0x1, 0x4b, 0x1b, 0x66, 0x74, 0x5a, 0x6d, 0x82, 0x1f, 0x82, 0x6a, 0x89, - 0x5d, 0x5d, 0x6e, 0x8a, 0x6f, 0x72, 0x1a, 0x83, 0x88, 0x86, 0x87, 0x88, - 0x87, 0x8e, 0x90, 0x88, 0x1e, 0x7d, 0xa1, 0x7c, 0xa5, 0x7b, 0xa6, 0x74, - 0xb1, 0x73, 0xb2, 0x75, 0xa1, 0x72, 0xa4, 0x55, 0xa9, 0x70, 0x70, 0x70, - 0x70, 0xa9, 0x55, 0xa4, 0x72, 0xa3, 0x73, 0xb2, 0x72, 0xb3, 0x74, 0xa4, - 0x7c, 0xa4, 0x7c, 0xa0, 0x7f, 0x8, 0x90, 0x88, 0x8e, 0x87, 0x88, 0x1a, - 0x87, 0x86, 0x88, 0x83, 0x1e, 0x8a, 0x71, 0x6d, 0x8b, 0x6c, 0x1b, 0x5e, - 0x8a, 0x5f, 0x89, 0x6c, 0x83, 0x8, 0x13, 0xd8, 0x6c, 0x83, 0x5b, 0x71, - 0x68, 0x1a, 0xe, 0xfb, 0x17, 0xae, 0x76, 0xf7, 0x64, 0xf7, 0x8, 0x63, - 0xb3, 0x94, 0xf7, 0xa, 0xf7, 0x63, 0x77, 0x12, 0xf7, 0x80, 0xf7, 0xa, - 0x9d, 0xf7, 0xc, 0x13, 0xde, 0xa4, 0xf7, 0x9a, 0x15, 0x6b, 0xbe, 0x83, - 0xa3, 0x1e, 0x13, 0xbe, 0xda, 0xc2, 0xd7, 0xb6, 0x1b, 0x9d, 0x9a, 0x7d, - 0x79, 0x1f, 0x6e, 0x3f, 0x45, 0x3c, 0x1a, 0x73, 0x92, 0x59, 0xac, 0xad, - 0xa7, 0xbd, 0xa7, 0x93, 0x1e, 0x91, 0x9f, 0x8d, 0xa0, 0xa0, 0xa2, 0x88, - 0xa0, 0xa2, 0x1a, 0xa2, 0x8d, 0xa5, 0xaa, 0x97, 0x93, 0x86, 0x81, 0x92, - 0x1e, 0xa8, 0x61, 0x95, 0x61, 0xb3, 0x63, 0x8, 0x77, 0x9f, 0xac, 0x79, - 0xa7, 0x1b, 0xa1, 0x99, 0x97, 0xa2, 0xa7, 0x77, 0xad, 0x78, 0x9e, 0x1f, - 0x64, 0xb2, 0x62, 0x96, 0x5f, 0xa7, 0x8, 0x81, 0x92, 0x84, 0x94, 0x98, - 0x1a, 0xa4, 0xa1, 0x91, 0xa0, 0x1e, 0xa2, 0xa2, 0x89, 0xa2, 0x1b, 0xa2, - 0xa2, 0x8d, 0x91, 0xa1, 0x1f, 0xa7, 0x93, 0xbd, 0xa7, 0xad, 0x1a, 0xac, - 0x59, 0x94, 0x72, 0x1e, 0x3e, 0x44, 0x3c, 0x6c, 0x1b, 0x7a, 0x7d, 0x9a, - 0x9c, 0x1f, 0xa9, 0xd9, 0xd6, 0xd6, 0x1a, 0xa3, 0x82, 0xbd, 0x6b, 0x69, - 0x6d, 0x59, 0x6f, 0x84, 0x1e, 0x84, 0x71, 0x8a, 0x71, 0x70, 0x74, 0x8d, - 0x74, 0x75, 0x1a, 0x79, 0x81, 0x79, 0x77, 0x7e, 0x81, 0x94, 0x95, 0x84, - 0x1e, 0x85, 0x95, 0x85, 0x97, 0x86, 0x96, 0x7a, 0xac, 0x79, 0xac, 0x71, - 0xa5, 0x8, 0x9e, 0x78, 0x6b, 0x9e, 0x6f, 0x1b, 0x74, 0x7d, 0x7d, 0x74, - 0x6f, 0x9e, 0x6b, 0x9e, 0x78, 0x1f, 0xb0, 0x66, 0xb8, 0x7b, 0xb6, 0x71, - 0x8, 0x95, 0x85, 0x94, 0x81, 0x7e, 0x1a, 0x76, 0x74, 0x81, 0x79, 0x1e, - 0x72, 0x73, 0x8d, 0x72, 0x1b, 0x75, 0x74, 0x8a, 0x85, 0x76, 0x1f, 0x6f, - 0x83, 0x57, 0x6e, 0x69, 0x1a, 0xf7, 0xa5, 0xda, 0x15, 0xaa, 0xa4, 0xa4, - 0xaa, 0xaa, 0xa4, 0x72, 0x6c, 0x6c, 0x72, 0x72, 0x6c, 0x6c, 0x72, 0xa4, - 0xaa, 0x1e, 0xe, 0xfb, 0x31, 0x3f, 0xa, 0x12, 0xf7, 0x9d, 0xf7, 0x2f, - 0x2f, 0xa3, 0x13, 0xd0, 0xae, 0xf7, 0x49, 0x15, 0xc2, 0x52, 0xd6, 0x96, - 0xb2, 0xc4, 0x8, 0x13, 0xe0, 0xae, 0xbb, 0xb0, 0xc1, 0xbf, 0xa9, 0x8, - 0x56, 0x7b, 0x5d, 0x7b, 0x63, 0x1e, 0x73, 0x4d, 0x84, 0x76, 0x73, 0x1a, - 0x5b, 0xae, 0x6b, 0xb6, 0x7f, 0x1e, 0x13, 0xd0, 0xb7, 0x97, 0xac, 0xac, - 0xbe, 0x1a, 0x67, 0xf5, 0x7c, 0xae, 0x79, 0xbc, 0x8c, 0xbf, 0x19, 0xbe, - 0x6e, 0xaf, 0x57, 0xad, 0x5d, 0xa7, 0x4a, 0xec, 0x83, 0xbc, 0xc2, 0x8, - 0xd3, 0x6d, 0xb1, 0x48, 0x94, 0x1e, 0x20, 0x9a, 0x60, 0x98, 0x64, 0x9f, - 0xc0, 0xab, 0xc9, 0x92, 0xc7, 0x94, 0x8, 0xd5, 0x94, 0xb0, 0xb0, 0xe1, - 0x1a, 0x4a, 0xb4, 0x4b, 0x7b, 0x5e, 0x53, 0x3b, 0x2b, 0x6f, 0x72, 0x7e, - 0x86, 0x89, 0xcb, 0x98, 0xa8, 0xa3, 0xc4, 0x8, 0x94, 0xa0, 0xa2, 0xc4, - 0xa2, 0x1a, 0xb5, 0x63, 0xaa, 0x67, 0x97, 0x1e, 0x5f, 0x7f, 0x66, 0x6c, - 0x5a, 0x1a, 0x6c, 0x9d, 0x67, 0x96, 0x70, 0x1e, 0x9a, 0x68, 0xa1, 0x53, - 0x50, 0x1a, 0x5e, 0xa0, 0x67, 0xbe, 0x6f, 0xb3, 0x61, 0xc7, 0x50, 0xaf, - 0x38, 0x59, 0x8, 0xfb, 0xc, 0xd0, 0x84, 0xcc, 0x81, 0x1e, 0xbe, 0x84, - 0xbf, 0x81, 0xba, 0x70, 0x67, 0x75, 0x5e, 0x7f, 0x2a, 0x7d, 0x8, 0x45, - 0x82, 0x67, 0x79, 0x31, 0x1a, 0xe, 0xfb, 0x1e, 0x95, 0xc3, 0x87, 0xb4, - 0xef, 0xa7, 0x7c, 0xcc, 0x57, 0xdb, 0xa0, 0x96, 0x89, 0x96, 0x91, 0x77, - 0xaf, 0xda, 0x57, 0xcd, 0x7c, 0xa6, 0xa5, 0x77, 0xea, 0xb3, 0x87, 0xc3, - 0x12, 0x90, 0xcc, 0xb0, 0xab, 0xb2, 0xa4, 0xe6, 0xd1, 0x66, 0xb5, 0x65, - 0xb5, 0x68, 0xcf, 0xe8, 0xa2, 0xb1, 0xac, 0xb1, 0xcb, 0x13, 0xa4, 0x9b, - 0xa7, 0xf7, 0x8, 0x5b, 0xa, 0x62, 0x86, 0x99, 0xfb, 0x12, 0x58, 0xa, - 0x13, 0x64, 0x9b, 0x8f, 0x59, 0xa, 0xad, 0x81, 0xae, 0x7f, 0xab, 0x7f, - 0xa, 0x13, 0x8c, 0x37, 0x97, 0x43, 0xa, 0x71, 0xa, 0x19, 0x4e, 0xa, - 0x13, 0xa4, 0x9b, 0xc7, 0x57, 0xa, 0x69, 0x95, 0x68, 0x3c, 0xa, 0xf7, - 0xa9, 0xf7, 0xbf, 0x15, 0x8f, 0x96, 0x8d, 0x97, 0x97, 0x1a, 0x9e, 0x86, - 0x7b, 0xa, 0x97, 0x1a, 0x13, 0x8c, 0x37, 0xc7, 0xa5, 0xad, 0x9a, 0xa1, - 0xb0, 0xb5, 0x6c, 0x64, 0x68, 0x6a, 0x90, 0x75, 0x80, 0x1e, 0x75, 0x80, - 0x78, 0x74, 0x83, 0x74, 0x8, 0xcf, 0x30, 0x15, 0x92, 0x7, 0xb8, 0x94, - 0x9d, 0xa6, 0x98, 0xa1, 0x8, 0x9b, 0x95, 0x93, 0x99, 0x9b, 0x1b, 0xae, - 0xa2, 0x61, 0x6c, 0x72, 0x7a, 0x60, 0x6d, 0x79, 0x7e, 0xa2, 0x94, 0x7b, - 0x1f, 0x13, 0xa1, 0x9b, 0xc7, 0x95, 0x79, 0x76, 0x90, 0x77, 0x1b, 0x86, - 0x86, 0x8b, 0x8a, 0x86, 0x1f, 0x96, 0xe5, 0x15, 0x7b, 0x67, 0x76, 0x5f, - 0x62, 0x7e, 0x8, 0x13, 0x92, 0x9b, 0xa7, 0x8a, 0x88, 0x87, 0x8a, 0x87, - 0x1b, 0x55, 0xa, 0x47, 0xa, 0x13, 0x52, 0x5b, 0x97, 0x61, 0xa, 0xfb, - 0x78, 0xf7, 0x23, 0x15, 0xa2, 0x77, 0x6e, 0x99, 0x6d, 0x1b, 0x7e, 0x7f, - 0x8b, 0x8d, 0x81, 0x1f, 0x7e, 0x8e, 0x82, 0x94, 0xa2, 0x1a, 0xb6, 0xb3, - 0xac, 0xb4, 0x9e, 0xa4, 0x81, 0x74, 0x1e, 0x7d, 0x83, 0x7e, 0x7c, 0x1a, - 0x72, 0x94, 0x70, 0x9b, 0x78, 0x1e, 0xf7, 0x1d, 0xfb, 0x4b, 0x15, 0x91, - 0x8f, 0x5, 0x74, 0x9f, 0xa8, 0x7d, 0xa9, 0x1b, 0xa9, 0xa6, 0x8e, 0x63, - 0x60, 0x63, 0x6a, 0x62, 0x78, 0x72, 0x95, 0xa2, 0x1f, 0x99, 0x93, 0x98, - 0x9a, 0x1a, 0xa4, 0x82, 0xa6, 0x7b, 0x9e, 0x1e, 0xfb, 0x71, 0xf7, 0x26, - 0x15, 0x8d, 0x9a, 0x9b, 0x8d, 0x9a, 0x1b, 0x13, 0xa1, 0x9b, 0xa7, 0xa2, - 0xc8, 0x7d, 0x6e, 0x1f, 0x13, 0xa4, 0x9b, 0x97, 0x77, 0xa, 0x1e, 0x48, - 0xa, 0x9b, 0xaf, 0xa0, 0xb7, 0xb4, 0x98, 0x8, 0x8c, 0x8e, 0x8f, 0x8c, - 0x8f, 0x1b, 0x5d, 0xa, 0x97, 0xdf, 0x15, 0x66, 0x84, 0x79, 0x78, 0x7e, - 0x78, 0x8, 0x75, 0x7c, 0x84, 0x76, 0x77, 0x1b, 0x68, 0x74, 0xb6, 0xaa, - 0xa4, 0x9c, 0xb5, 0xa9, 0x98, 0x95, 0x7e, 0x7e, 0x9c, 0x1f, 0x80, 0x99, - 0x9e, 0x81, 0xaa, 0x1b, 0x91, 0x90, 0x8b, 0x8c, 0x91, 0x1f, 0xd0, 0x2f, - 0x15, 0x91, 0x88, 0x5, 0x13, 0xa4, 0x9b, 0x8f, 0x87, 0x7f, 0x89, 0x7e, - 0x7f, 0x1a, 0x75, 0x92, 0x7c, 0x92, 0x7e, 0x1e, 0x93, 0x7c, 0x94, 0x80, - 0x80, 0x1a, 0x71, 0x69, 0x7c, 0x75, 0x66, 0x61, 0xaa, 0xb2, 0xae, 0xac, - 0x85, 0xa1, 0x97, 0x1e, 0xa0, 0x96, 0x9f, 0xa2, 0x93, 0xa2, 0x8, 0xe, - 0x7e, 0xaa, 0x76, 0xf7, 0x6f, 0xbf, 0xbc, 0x96, 0x89, 0x96, 0xbc, 0xbf, - 0xbf, 0x77, 0xf7, 0x4f, 0x77, 0x12, 0xf8, 0x1a, 0xb5, 0x65, 0xb5, 0x83, - 0xf7, 0x31, 0xfb, 0x12, 0x95, 0x13, 0xef, 0x20, 0xf7, 0x47, 0x5b, 0xa, - 0x8a, 0x83, 0x8b, 0x83, 0x83, 0x1a, 0x65, 0x9a, 0x22, 0xbe, 0xb7, 0xc1, - 0xbe, 0xac, 0xa4, 0x1e, 0x53, 0xa, 0x8f, 0x9c, 0x8d, 0x9e, 0x63, 0xa, - 0xc2, 0x75, 0xb7, 0x1b, 0xb6, 0x95, 0xaa, 0xb0, 0xad, 0x81, 0xaf, 0x7f, - 0xaa, 0x7f, 0xa, 0x5c, 0xa, 0x77, 0x99, 0x77, 0x39, 0xa, 0x5, 0x13, - 0xee, 0x40, 0x71, 0xa, 0x8, 0xb3, 0x8f, 0x7f, 0xf7, 0x13, 0x62, 0xa, - 0x13, 0xde, 0xa0, 0x52, 0xa, 0x87, 0x7a, 0x89, 0x78, 0x64, 0xa, 0x54, - 0xa1, 0x5f, 0x1b, 0x60, 0x81, 0x6c, 0x66, 0x69, 0x95, 0x67, 0x97, 0x6c, - 0x4a, 0xa, 0x9f, 0x7d, 0x9f, 0x81, 0x8, 0x65, 0x7a, 0x3b, 0x45, 0xa, - 0xf7, 0xfe, 0xf7, 0xbb, 0x15, 0x7a, 0x65, 0x78, 0x63, 0x61, 0x7c, 0x8, - 0x8a, 0x87, 0x88, 0x8a, 0x87, 0x1b, 0x13, 0xef, 0x20, 0x55, 0xa, 0x13, - 0xee, 0x40, 0x47, 0xa, 0x13, 0xde, 0xa0, 0x61, 0xa, 0xfb, 0xc6, 0xf7, - 0x2, 0x15, 0x8d, 0x9a, 0x9b, 0x8d, 0x9a, 0x1b, 0x13, 0xef, 0x20, 0xa2, - 0xc8, 0x7d, 0x6e, 0x77, 0xa, 0x1f, 0x48, 0xa, 0x9c, 0xb1, 0x9e, 0xb3, - 0xb5, 0x9a, 0x8, 0x8c, 0x8f, 0x8e, 0x8c, 0x8f, 0x1b, 0x13, 0xee, 0xa0, - 0x5d, 0xa, 0xe, 0x73, 0x95, 0xb3, 0x97, 0xa9, 0xf7, 0xf, 0xaa, 0x7a, - 0x9c, 0xc1, 0xdb, 0x75, 0x77, 0xeb, 0x9c, 0x7a, 0xaa, 0xb1, 0x77, 0xf4, - 0xa9, 0x97, 0xb3, 0x12, 0xca, 0xb5, 0xc7, 0xa7, 0xb6, 0xa2, 0xbf, 0xb0, - 0x8f, 0x9c, 0x86, 0x9d, 0x7d, 0xdb, 0x7d, 0x9d, 0x86, 0x9c, 0x8f, 0xb0, - 0x66, 0xf7, 0x4b, 0x2d, 0xa2, 0xb6, 0xa7, 0xc7, 0xb5, 0x13, 0xda, 0xff, - 0x14, 0x80, 0xf7, 0x42, 0x5b, 0xa, 0x63, 0x86, 0x99, 0xfb, 0x13, 0x58, - 0xa, 0x59, 0xa, 0xae, 0x81, 0xad, 0x7f, 0xab, 0x7f, 0xa, 0x43, 0xa, - 0x5, 0x13, 0xd6, 0xff, 0x2b, 0x80, 0x71, 0xa, 0x8, 0x4e, 0xa, 0x57, - 0xa, 0x68, 0x95, 0x69, 0x3c, 0xa, 0xf7, 0xa8, 0xf7, 0xc1, 0x15, 0x8f, - 0x96, 0x8d, 0x96, 0x97, 0x1a, 0x9d, 0x87, 0x7b, 0xa, 0x96, 0x1a, 0xab, - 0xbd, 0xa5, 0xa7, 0xb1, 0x9e, 0x5e, 0x6a, 0x71, 0x81, 0x84, 0x73, 0x86, - 0x1e, 0x6b, 0x84, 0x6f, 0x6e, 0x80, 0x6d, 0x8, 0xd3, 0x2f, 0x15, 0x8a, - 0x92, 0xad, 0x90, 0xa5, 0xa1, 0x9a, 0xa9, 0x19, 0x92, 0x99, 0x90, 0x95, - 0x9b, 0x8e, 0x8, 0x8c, 0x8e, 0x8d, 0x8b, 0x8e, 0x1b, 0xab, 0xb8, 0x6c, - 0x69, 0x6e, 0x66, 0x5f, 0x6d, 0x7f, 0x82, 0x98, 0x97, 0x7c, 0x1f, 0x97, - 0x7d, 0x78, 0x96, 0x6a, 0x1b, 0x85, 0x85, 0x8a, 0x8a, 0x85, 0x1f, 0xfb, - 0x55, 0xd3, 0x15, 0x13, 0xe9, 0xff, 0x2b, 0x80, 0xa3, 0x78, 0x6c, 0x98, - 0x6c, 0x85, 0x86, 0x8b, 0x85, 0x1b, 0x6b, 0x83, 0xa7, 0xa6, 0xb0, 0x9b, - 0xaa, 0xb4, 0xa2, 0xb9, 0x7f, 0x6e, 0x1f, 0x7c, 0x83, 0x7c, 0x7b, 0x1a, - 0x73, 0x94, 0x71, 0x9b, 0x78, 0x1e, 0xfb, 0x13, 0xfb, 0x90, 0x15, 0xaa, - 0xca, 0xa8, 0xc1, 0xcf, 0xaa, 0x8a, 0x8d, 0x18, 0x43, 0x94, 0x5d, 0xb6, - 0x5b, 0xbd, 0x8, 0x8c, 0x9d, 0x9e, 0x8c, 0x9d, 0x1b, 0xbe, 0xb7, 0x82, - 0x6d, 0xb5, 0x1f, 0x8c, 0x8d, 0x5, 0x80, 0xa4, 0x87, 0xa7, 0xa7, 0x1a, - 0xb2, 0x95, 0xb0, 0x96, 0xb1, 0x1e, 0xad, 0x58, 0xaa, 0x5a, 0x4b, 0x1a, - 0x84, 0x8b, 0x84, 0x8a, 0x84, 0x1e, 0x8d, 0x6, 0xb7, 0xc5, 0xc8, 0x9e, - 0xce, 0x9b, 0x6c, 0x4c, 0x6e, 0x55, 0x47, 0x6c, 0x8c, 0x89, 0x18, 0xd3, - 0x82, 0xb9, 0x60, 0xbb, 0x59, 0x8, 0x8a, 0x79, 0x78, 0x8a, 0x79, 0x1b, - 0x58, 0x5f, 0x94, 0xa9, 0x61, 0x1f, 0x8a, 0x89, 0x5, 0x96, 0x72, 0x8f, - 0x6f, 0x6f, 0x1a, 0x13, 0xea, 0xfe, 0x9b, 0x80, 0x64, 0x81, 0x66, 0x80, - 0x65, 0x1e, 0x69, 0xbe, 0x6c, 0xbc, 0xcb, 0x1a, 0x92, 0x8b, 0x92, 0x8c, - 0x92, 0x1e, 0x89, 0x6, 0x5f, 0x51, 0x4e, 0x78, 0x48, 0x7b, 0x8, 0xf7, - 0xa3, 0xcf, 0x15, 0x90, 0x8f, 0x5, 0x73, 0x9e, 0xaa, 0x7e, 0xaa, 0x91, - 0x90, 0x8b, 0x91, 0x1b, 0xab, 0x93, 0x6f, 0x70, 0x66, 0x7b, 0x6c, 0x62, - 0x74, 0x5d, 0x97, 0xa8, 0x1f, 0x9a, 0x93, 0x9a, 0x9b, 0x1a, 0xa3, 0x82, - 0xa5, 0x7b, 0x9e, 0x1e, 0xfb, 0x4f, 0xd0, 0x15, 0x69, 0x86, 0x71, 0x75, - 0x7c, 0x6d, 0x84, 0x7d, 0x86, 0x81, 0x7b, 0x88, 0x8, 0x6a, 0x80, 0x57, - 0xb6, 0xab, 0x1a, 0xa8, 0xb0, 0xb7, 0xa9, 0x94, 0x92, 0x84, 0x82, 0x94, - 0x1e, 0x7d, 0x9a, 0xa0, 0x79, 0xb4, 0x1b, 0x91, 0x91, 0x8c, 0x8c, 0x91, - 0x1f, 0xd3, 0x2f, 0x15, 0x13, 0xda, 0xfe, 0xab, 0x80, 0x91, 0x88, 0x5, - 0x87, 0x80, 0x89, 0x80, 0x7f, 0x1a, 0x75, 0x92, 0x7b, 0x92, 0x7d, 0x1e, - 0x93, 0x7c, 0x93, 0x80, 0x82, 0x1a, 0x6b, 0x59, 0x71, 0x6f, 0x65, 0x78, - 0xb8, 0xac, 0xa5, 0x95, 0x92, 0xa3, 0x90, 0x1e, 0xab, 0x92, 0xa7, 0xa8, - 0x96, 0xa9, 0x8, 0x13, 0xda, 0xfe, 0x4b, 0x80, 0x8f, 0xf7, 0x0, 0x15, - 0x75, 0x9d, 0x79, 0xa1, 0xa1, 0x9d, 0x9d, 0xa1, 0xa1, 0x79, 0x9d, 0x75, - 0x75, 0x79, 0x79, 0x75, 0x1e, 0xe, 0xfb, 0xed, 0xa0, 0x76, 0xf8, 0x36, - 0xea, 0xf7, 0x47, 0x77, 0x1, 0xf7, 0x5c, 0xeb, 0x3, 0xf7, 0x5c, 0x16, - 0xeb, 0xf8, 0x36, 0xf7, 0x38, 0xea, 0xfb, 0x38, 0xf7, 0x47, 0x2b, 0xfb, - 0x47, 0xfb, 0x39, 0x2c, 0xf7, 0x39, 0x6, 0xe, 0x59, 0x83, 0x56, 0xa, - 0x8d, 0x77, 0xb4, 0x5e, 0xa, 0x12, 0xb9, 0x56, 0xa, 0xa2, 0x5e, 0xa, - 0x13, 0xb2, 0x9a, 0x96, 0x96, 0xa0, 0xb9, 0xf8, 0x19, 0x15, 0x57, 0xb2, - 0x70, 0xbb, 0xa3, 0xa3, 0x92, 0x90, 0xa2, 0x1e, 0x90, 0xa6, 0xa7, 0x8f, - 0xa6, 0x1b, 0x92, 0xa1, 0x8b, 0x81, 0x1f, 0x13, 0x74, 0x9a, 0x95, 0xa, - 0xa0, 0x84, 0x7a, 0x82, 0x85, 0x89, 0x1e, 0x74, 0x81, 0x73, 0x83, 0x72, - 0x84, 0x8, 0x56, 0x7d, 0x3f, 0x80, 0x43, 0x1a, 0x61, 0xaf, 0x69, 0xb5, - 0xbf, 0xa5, 0xbe, 0xb0, 0xa4, 0x1e, 0x98, 0x9f, 0x9a, 0x9d, 0x9b, 0x9d, - 0x8, 0x92, 0x91, 0x99, 0x9b, 0x95, 0x1b, 0x13, 0xb4, 0x9a, 0x96, 0x56, - 0x60, 0x8f, 0x8f, 0x88, 0x86, 0x85, 0x87, 0x81, 0x89, 0x85, 0x1f, 0x82, - 0x73, 0x80, 0x74, 0x7e, 0x75, 0x8, 0x78, 0x6a, 0x71, 0x6a, 0x63, 0x1a, - 0x61, 0xac, 0x6a, 0xb5, 0xbf, 0xa6, 0xb2, 0xbb, 0xa3, 0x84, 0xa3, 0x86, - 0xa2, 0x1e, 0x86, 0xa6, 0x87, 0xa7, 0xa6, 0x1a, 0x13, 0xb2, 0x9a, 0x96, - 0x56, 0x88, 0x92, 0x8b, 0xa1, 0x95, 0x1e, 0x13, 0xa8, 0x2a, 0x96, 0x56, - 0xa0, 0x92, 0x94, 0x7a, 0x85, 0x8d, 0x1f, 0x95, 0x74, 0x93, 0x73, 0x92, - 0x72, 0x8, 0x65, 0xa, 0x56, 0x99, 0x96, 0x3f, 0xd3, 0x1b, 0x70, 0xa, - 0xb5, 0xad, 0xaf, 0xb5, 0xbf, 0x58, 0xa5, 0x66, 0xa4, 0x1f, 0x77, 0x98, - 0x79, 0x9a, 0x79, 0x9b, 0x8, 0x13, 0xb2, 0x9a, 0x96, 0x56, 0x90, 0x86, - 0x90, 0x79, 0x9b, 0x93, 0x1a, 0x13, 0xb2, 0x99, 0x96, 0x56, 0xa0, 0x8f, - 0x8f, 0x90, 0x8f, 0x91, 0x95, 0x87, 0x89, 0x91, 0x1e, 0xa3, 0x82, 0xa2, - 0x80, 0xa1, 0x7e, 0x8, 0x78, 0xac, 0xac, 0x71, 0xb3, 0x1b, 0xb5, 0xac, - 0xac, 0xb5, 0xbf, 0x64, 0xa6, 0x5b, 0x1f, 0x70, 0xa, 0x73, 0x73, 0x84, - 0x86, 0x74, 0x1f, 0x86, 0x70, 0x6f, 0x87, 0x70, 0x1b, 0x13, 0xb2, 0x9a, - 0x36, 0x56, 0xa0, 0x84, 0x75, 0x8b, 0x95, 0x1f, 0x13, 0xb2, 0x9a, 0x96, - 0x60, 0xa0, 0x92, 0x9c, 0x94, 0x91, 0x8d, 0x1e, 0xa2, 0x95, 0xa3, 0x93, - 0xa4, 0x92, 0x8, 0xc0, 0x99, 0xd7, 0x96, 0xd3, 0x1a, 0x6f, 0xa, 0xb5, - 0x67, 0xad, 0x61, 0x57, 0x71, 0x58, 0x66, 0x72, 0x1e, 0x7e, 0x77, 0x7c, - 0x79, 0x7b, 0x79, 0x8, 0x13, 0xb2, 0x9a, 0x56, 0x56, 0xa0, 0x84, 0x85, - 0x7d, 0x7b, 0x81, 0x1b, 0x87, 0x87, 0x8e, 0x90, 0x91, 0x8f, 0x95, 0x8d, - 0x91, 0x1f, 0x94, 0xa3, 0x96, 0xa2, 0x98, 0xa1, 0x8, 0x9e, 0xac, 0xa5, - 0xac, 0xb3, 0x1a, 0xb5, 0x6a, 0xac, 0x61, 0x57, 0x70, 0x64, 0x5b, 0x1e, - 0x6f, 0xa, 0x73, 0x92, 0x73, 0x90, 0x74, 0x1e, 0x90, 0x70, 0x8f, 0x6f, - 0x70, 0x1a, 0x84, 0x8b, 0x75, 0x81, 0x1e, 0x13, 0xb3, 0x2, 0x8e, 0x96, - 0xa0, 0x84, 0x82, 0x9c, 0x91, 0x89, 0x1f, 0x81, 0xa2, 0x83, 0xa3, 0x84, - 0xa4, 0x8, 0xc0, 0x7d, 0x80, 0xd7, 0x43, 0x1b, 0x61, 0x69, 0x67, 0x61, - 0x57, 0xbe, 0x71, 0xb0, 0x72, 0x1f, 0x9f, 0x7e, 0x9d, 0x7c, 0x9d, 0x7b, - 0x8, 0x91, 0x85, 0x9c, 0x7c, 0x82, 0x1a, 0x86, 0x87, 0x88, 0x87, 0x85, - 0x81, 0x8f, 0x8d, 0x85, 0x1e, 0x73, 0x94, 0x74, 0x96, 0x75, 0x98, 0x8, - 0x9e, 0x6a, 0x6a, 0xa5, 0x63, 0x1b, 0x61, 0x6a, 0x6a, 0x61, 0x1f, 0xf8, - 0x2c, 0x8c, 0x15, 0xa3, 0xa0, 0xa2, 0xa0, 0x9e, 0xa4, 0x8, 0x13, 0xb2, - 0x99, 0x96, 0x56, 0xa0, 0xa4, 0x9e, 0xa4, 0xb2, 0xaf, 0x1b, 0x13, 0xb2, - 0x9a, 0x96, 0x56, 0x90, 0x9e, 0x9c, 0x7a, 0x78, 0x65, 0x51, 0x7a, 0x6e, - 0x81, 0x1f, 0x6c, 0x81, 0x6e, 0x7d, 0x6f, 0x7c, 0x8, 0x4f, 0xb0, 0x15, - 0x8d, 0xaa, 0x8c, 0xab, 0x87, 0xaa, 0x8, 0x89, 0x9b, 0x88, 0x9c, 0x9b, - 0x1a, 0x13, 0xb2, 0x9a, 0x36, 0x56, 0xa0, 0xa5, 0x94, 0xaf, 0xab, 0x1e, - 0x70, 0xa, 0xa4, 0x97, 0x7b, 0x73, 0x6d, 0x7e, 0x76, 0x7e, 0x71, 0x1f, - 0x7d, 0x6e, 0x7f, 0x6d, 0x82, 0x6c, 0x8, 0xc5, 0x2d, 0x15, 0x8d, 0x96, - 0xaa, 0x89, 0xab, 0x8a, 0xaa, 0x8f, 0x19, 0x8d, 0x9b, 0x9c, 0x8e, 0x9b, - 0x1b, 0x13, 0xb4, 0x9a, 0x96, 0x56, 0x88, 0xa5, 0xaf, 0x82, 0x6b, 0x72, - 0x7b, 0x7f, 0x73, 0x6d, 0x76, 0x98, 0x98, 0x71, 0x1f, 0x6e, 0x99, 0x6d, - 0x97, 0x6c, 0x94, 0x8, 0xfb, 0x12, 0xd9, 0x15, 0x76, 0xa3, 0x76, 0xa2, - 0x72, 0x9e, 0x8, 0x72, 0x9e, 0x64, 0xa4, 0xaf, 0x1a, 0x13, 0xb2, 0x9a, - 0x56, 0x56, 0xa0, 0x9e, 0x9c, 0x9c, 0x9e, 0xb1, 0x9c, 0x51, 0x6e, 0x95, - 0x1e, 0x95, 0x6c, 0x99, 0x6e, 0x9a, 0x6f, 0x8, 0x13, 0xb3, 0x2, 0x96, - 0x56, 0xa0, 0x89, 0x2a, 0x15, 0x8e, 0xa0, 0x5, 0x65, 0xa, 0x7f, 0x9d, - 0x9c, 0x98, 0x5, 0x13, 0xb2, 0x9a, 0x96, 0x60, 0xa0, 0x90, 0xa0, 0xa0, - 0x88, 0x9d, 0x97, 0x98, 0x7a, 0x5, 0x13, 0xa8, 0x2a, 0x96, 0x56, 0xa0, - 0xa0, 0x86, 0x5, 0x65, 0xa, 0x88, 0x76, 0x97, 0x79, 0x7a, 0x7e, 0x5, - 0x13, 0xb2, 0x9a, 0x95, 0xa, 0xa0, 0x86, 0x76, 0x76, 0x8e, 0x79, 0x7f, - 0x7e, 0x9c, 0x5, 0x13, 0xb3, 0x2, 0x96, 0x56, 0xa0, 0xca, 0x6b, 0x15, - 0x94, 0x92, 0xa0, 0x73, 0xa0, 0x74, 0xa4, 0x78, 0x19, 0x13, 0x72, 0x9a, - 0x96, 0x56, 0x60, 0xa4, 0x78, 0xb2, 0x72, 0x67, 0x1a, 0x78, 0x7a, 0x7a, - 0x78, 0x65, 0x7a, 0xc5, 0xa8, 0x81, 0x1e, 0x81, 0xaa, 0x7d, 0xa8, 0x7c, - 0xa7, 0x8, 0xfb, 0xb, 0xd5, 0x15, 0x65, 0xa, 0x8c, 0x7b, 0x7b, 0x8c, - 0x7b, 0x1b, 0x7c, 0x7b, 0x8a, 0x89, 0x7c, 0x1f, 0x89, 0x7b, 0x7a, 0x88, - 0x7b, 0x1b, 0x71, 0x67, 0x94, 0xab, 0x1f, 0x6f, 0xa, 0xa4, 0x9b, 0x97, - 0xa3, 0xa9, 0xa0, 0x7e, 0x7e, 0xa5, 0x1e, 0xa8, 0x7d, 0xa9, 0x7f, 0xaa, - 0x82, 0x8, 0xc5, 0x2d, 0x15, 0x96, 0x89, 0x89, 0x6c, 0x8a, 0x6b, 0x8f, - 0x6c, 0x19, 0x8d, 0x7b, 0x8e, 0x7a, 0x7b, 0x1a, 0x13, 0xb2, 0x9a, 0x8e, - 0x96, 0xa0, 0x71, 0x82, 0x67, 0x6b, 0x72, 0x7f, 0x9b, 0xa3, 0xa9, 0x98, - 0xa0, 0x98, 0xa5, 0x1e, 0x99, 0xa8, 0x97, 0xa9, 0x94, 0xaa, 0x8, 0x5a, - 0xae, 0x15, 0x92, 0x82, 0x73, 0x76, 0x74, 0x76, 0x78, 0x72, 0x19, 0x72, - 0x78, 0x72, 0x64, 0x67, 0x1b, 0x78, 0x7a, 0x9c, 0x9e, 0xb1, 0xc5, 0x9c, - 0xa8, 0x95, 0x1f, 0xaa, 0x95, 0xa8, 0x99, 0xa7, 0x9a, 0x8, 0xe, 0x59, - 0x94, 0x76, 0xa9, 0x76, 0xf7, 0x6d, 0x9e, 0xf7, 0x69, 0x9e, 0xf7, 0x7a, - 0x77, 0x12, 0xf7, 0xa3, 0x9b, 0xf7, 0x6b, 0x9c, 0x13, 0xbe, 0xf7, 0x2c, - 0xdf, 0x15, 0xf7, 0x55, 0xf7, 0x16, 0xb8, 0xfb, 0x76, 0x5, 0x13, 0x7e, - 0x9c, 0x94, 0x5, 0x87, 0xb9, 0xf7, 0x6e, 0x8b, 0x1f, 0xf7, 0x50, 0xfb, - 0x11, 0x98, 0x91, 0xfb, 0x17, 0xf7, 0x54, 0xf7, 0x75, 0xb9, 0x91, 0x98, - 0xfb, 0x7b, 0xb7, 0xf7, 0x11, 0xf7, 0x4f, 0x86, 0x9c, 0xfb, 0x56, 0xfb, - 0x16, 0x5d, 0xf7, 0x7a, 0x7e, 0x85, 0x5e, 0xfb, 0x75, 0xfb, 0x4e, 0xf7, - 0x10, 0x7c, 0x85, 0xf7, 0x17, 0xfb, 0x54, 0xfb, 0x71, 0x5f, 0x80, 0x7d, - 0xf7, 0x7c, 0x5e, 0xfb, 0x10, 0xfb, 0x4b, 0x5, 0xf7, 0x20, 0xf7, 0x80, - 0x15, 0xc6, 0xbc, 0xba, 0xc6, 0xc6, 0xbb, 0x5c, 0x50, 0x50, 0x5a, 0x5b, - 0x50, 0x50, 0x5b, 0xbb, 0xc6, 0x1e, 0xe, 0xfb, 0x18, 0x97, 0xc3, 0x92, - 0xd6, 0xae, 0xac, 0x6a, 0xe6, 0x77, 0x9f, 0x97, 0xc1, 0x64, 0x9f, 0x9a, - 0xc1, 0x68, 0x9f, 0xa6, 0x9f, 0x77, 0xe6, 0x6a, 0xac, 0x94, 0x77, 0xb0, - 0x77, 0xa8, 0xd6, 0x92, 0xc3, 0x12, 0xa0, 0xd1, 0x8d, 0xb4, 0xc8, 0xa1, - 0x85, 0xcd, 0x73, 0x9f, 0xa2, 0xb5, 0x65, 0xa5, 0x80, 0xaa, 0x99, 0xaa, - 0x74, 0xb5, 0x6d, 0xa5, 0xa2, 0xcd, 0x4d, 0x9f, 0xaf, 0xa1, 0xc8, 0xb4, - 0x8d, 0xd1, 0x13, 0xec, 0xd7, 0xec, 0x33, 0xf8, 0x8, 0xf8, 0x30, 0x15, - 0x8e, 0x8f, 0x92, 0x8d, 0x8c, 0x1f, 0x95, 0x9c, 0x98, 0x9a, 0x9a, 0x98, - 0x98, 0x97, 0x9a, 0x94, 0x9b, 0x92, 0x8, 0x8d, 0x8c, 0x90, 0x8e, 0x8e, - 0x1a, 0x13, 0xea, 0xcb, 0xea, 0x53, 0x8e, 0x85, 0x8b, 0x89, 0x63, 0x56, - 0x67, 0x60, 0x89, 0x8b, 0x80, 0x8f, 0x1e, 0xc0, 0x58, 0x15, 0x87, 0x95, - 0x8b, 0x8d, 0x9f, 0x9e, 0x87, 0x85, 0x9e, 0x1e, 0x9c, 0x85, 0x9a, 0x83, - 0x99, 0x81, 0x8, 0x89, 0x8d, 0x8e, 0x8a, 0x8e, 0x1b, 0x8d, 0x8c, 0x8b, - 0x8d, 0x8e, 0x89, 0x8f, 0x89, 0x8d, 0x1f, 0xa5, 0x7a, 0x68, 0x9f, 0x6c, - 0x1b, 0x83, 0x6b, 0x85, 0x81, 0x1f, 0xfb, 0x13, 0xa9, 0x15, 0x8d, 0x8b, - 0x8c, 0x8d, 0x1f, 0x13, 0xec, 0xd7, 0xec, 0x93, 0x8e, 0x89, 0x8f, 0x89, - 0x8e, 0x1e, 0x81, 0x9c, 0x85, 0x9f, 0x87, 0x9e, 0x8, 0x89, 0x96, 0x8a, - 0x96, 0x97, 0x92, 0x8c, 0x91, 0x92, 0x1a, 0x8d, 0x8b, 0x90, 0x88, 0x80, - 0x84, 0x5e, 0x82, 0x70, 0x95, 0x6e, 0xa3, 0x7c, 0x1e, 0x89, 0x8e, 0x90, - 0x88, 0x8e, 0x1b, 0x13, 0xec, 0xd7, 0xd4, 0x33, 0xfb, 0xa9, 0xfb, 0x4, - 0x15, 0x4c, 0xcf, 0x6c, 0xc1, 0xcb, 0xc2, 0xb0, 0xb7, 0xb6, 0x1e, 0x93, - 0x93, 0x95, 0x92, 0x97, 0x1b, 0x9b, 0x94, 0x7e, 0x7c, 0x1f, 0x13, 0xeb, - 0x57, 0xec, 0x8f, 0x73, 0x80, 0x6c, 0x7c, 0x79, 0x1e, 0x78, 0x74, 0x72, - 0x7e, 0x6e, 0x87, 0x8, 0x69, 0x86, 0x7b, 0x71, 0x6a, 0x1a, 0x63, 0xa9, - 0x73, 0xb2, 0xca, 0xbc, 0xcc, 0xc4, 0x95, 0x1e, 0x8e, 0x9a, 0x8c, 0x9a, - 0x9b, 0x1a, 0xa7, 0x85, 0xa5, 0x84, 0xa6, 0x1e, 0x8a, 0x90, 0x8a, 0x91, - 0x91, 0x1a, 0x9b, 0x94, 0x98, 0x9c, 0x1e, 0x13, 0xeb, 0x27, 0xe9, 0x53, - 0x91, 0x8f, 0x8a, 0x88, 0x90, 0x1f, 0xac, 0x76, 0xa3, 0x66, 0x63, 0x6f, - 0x7d, 0x78, 0x77, 0x1a, 0x6a, 0xb0, 0x6d, 0xab, 0xb7, 0xa4, 0xbb, 0xb2, - 0xb7, 0x74, 0xb8, 0x69, 0xa7, 0x1e, 0x67, 0xaa, 0x69, 0x98, 0x5e, 0x97, - 0x8, 0x7d, 0x8f, 0x7a, 0x94, 0x9c, 0x1a, 0xa9, 0xbe, 0x94, 0xa2, 0x1e, - 0xda, 0x8e, 0x49, 0xbb, 0x1b, 0xae, 0xaf, 0xa5, 0xb0, 0xca, 0x47, 0xaa, - 0x55, 0x4b, 0x54, 0x66, 0x5f, 0x60, 0x1f, 0x13, 0xec, 0xd7, 0xea, 0x93, - 0x83, 0x83, 0x81, 0x84, 0x7f, 0x1b, 0x7b, 0x82, 0x98, 0x9a, 0x1f, 0x13, - 0xec, 0xd7, 0xe9, 0x93, 0xa3, 0x96, 0xaa, 0x9a, 0x9d, 0x1e, 0x9e, 0xa2, - 0xa4, 0x98, 0xa8, 0x8f, 0x8, 0xad, 0x90, 0x9b, 0xa5, 0xac, 0x1a, 0xb3, - 0x6d, 0xa3, 0x64, 0x4c, 0x5a, 0x4a, 0x52, 0x81, 0x1e, 0x88, 0x7c, 0x8a, - 0x7c, 0x7b, 0x1a, 0x6f, 0x91, 0x71, 0x92, 0x70, 0x1e, 0x8c, 0x86, 0x8c, - 0x85, 0x85, 0x1a, 0x7b, 0x82, 0x7e, 0x7a, 0x1e, 0x13, 0xd4, 0xd7, 0xd4, - 0x93, 0x85, 0x87, 0x8c, 0x8e, 0x86, 0x1f, 0x6a, 0xa0, 0x73, 0xb0, 0xb3, - 0xa7, 0x99, 0x9e, 0x9f, 0x1a, 0xac, 0x66, 0xa9, 0x6b, 0x5f, 0x72, 0x5b, - 0x64, 0x5f, 0xa2, 0x5e, 0xad, 0x6f, 0x1e, 0xaf, 0x6c, 0xad, 0x7e, 0xb8, - 0x7f, 0x8, 0x99, 0x87, 0x9c, 0x82, 0x7a, 0x1a, 0x6d, 0x58, 0x82, 0x74, - 0x56, 0x78, 0xa9, 0x9f, 0x76, 0x1e, 0x94, 0x81, 0x80, 0x92, 0x7b, 0x1b, - 0x68, 0x67, 0x71, 0x66, 0x1f, 0x13, 0xec, 0xd7, 0xec, 0x33, 0xf8, 0x15, - 0x92, 0x15, 0x13, 0xec, 0xd7, 0xec, 0x4f, 0x88, 0x8d, 0x87, 0x8d, 0x88, - 0x1e, 0x95, 0x7a, 0x91, 0x77, 0x8f, 0x78, 0x8, 0x8d, 0x80, 0x8c, 0x80, - 0x7f, 0x84, 0x8a, 0x85, 0x84, 0x1a, 0x89, 0x8b, 0x86, 0x8e, 0x96, 0x92, - 0xb8, 0x94, 0xa6, 0x81, 0xa8, 0x73, 0x9a, 0x1e, 0x8d, 0x88, 0x86, 0x8e, - 0x88, 0x1b, 0x13, 0xea, 0xd7, 0xd4, 0x33, 0x89, 0x8b, 0x8a, 0x89, 0x1f, - 0xfb, 0x8c, 0xca, 0x15, 0x71, 0x9c, 0xae, 0x77, 0xaa, 0x1b, 0x93, 0xab, - 0x91, 0x95, 0x8f, 0x81, 0x8b, 0x89, 0x77, 0x78, 0x8f, 0x91, 0x78, 0x1f, - 0x7a, 0x91, 0x7c, 0x93, 0x7d, 0x95, 0x8, 0x8d, 0x89, 0x88, 0x8c, 0x88, - 0x1b, 0x89, 0x8a, 0x8b, 0x89, 0x88, 0x8d, 0x87, 0x8d, 0x89, 0x1f, 0xda, - 0xfb, 0x3e, 0x15, 0x88, 0x91, 0x8b, 0x8d, 0xb3, 0xc0, 0xaf, 0xb6, 0x8d, - 0x8b, 0x96, 0x87, 0x1e, 0x13, 0xeb, 0x57, 0xea, 0x33, 0x88, 0x87, 0x84, - 0x89, 0x8a, 0x1f, 0x81, 0x7a, 0x7e, 0x7c, 0x7c, 0x7e, 0x7e, 0x7f, 0x7c, - 0x82, 0x7b, 0x84, 0x8, 0x89, 0x8a, 0x86, 0x88, 0x88, 0x1a, 0xf7, 0x68, - 0xf7, 0x88, 0x15, 0xa6, 0xa8, 0xb3, 0x97, 0xb2, 0x1b, 0xa3, 0xad, 0x81, - 0x6d, 0x79, 0x7f, 0x7f, 0x79, 0x82, 0x84, 0x8e, 0x90, 0x84, 0x1f, 0x6d, - 0xa3, 0x5e, 0x91, 0x67, 0x7f, 0x8, 0xfb, 0xe, 0xba, 0x15, 0x89, 0x95, - 0x8a, 0x94, 0x95, 0x1a, 0xb0, 0xa3, 0xdc, 0xb9, 0x9b, 0x9c, 0x7e, 0x7a, - 0x7e, 0x7f, 0x7e, 0x80, 0x86, 0x1e, 0x6a, 0x7e, 0x69, 0x65, 0x86, 0x67, - 0x8, 0xf7, 0x1f, 0xfb, 0x3a, 0x15, 0xb4, 0x7e, 0xc5, 0x58, 0x5c, 0x1a, - 0x77, 0x7f, 0x7a, 0x76, 0x79, 0x7f, 0x9c, 0x9c, 0x1e, 0x13, 0xec, 0xd7, - 0xec, 0x2f, 0x91, 0x8d, 0x91, 0x91, 0x1a, 0xaa, 0x7b, 0xb5, 0x72, 0x9e, - 0x1e, 0xfb, 0x81, 0xe3, 0x15, 0x62, 0x98, 0x51, 0xbe, 0xba, 0x1a, 0x9f, - 0x97, 0x9c, 0xa0, 0x9d, 0x97, 0x7a, 0x7a, 0x1e, 0x85, 0x89, 0x85, 0x85, - 0x1a, 0x6c, 0x9b, 0x61, 0xa4, 0x78, 0x1e, 0xf7, 0x21, 0xfb, 0x3f, 0x15, - 0x8d, 0x81, 0x8c, 0x82, 0x81, 0x1a, 0x66, 0x73, 0x3a, 0x5d, 0x1e, 0x13, - 0xec, 0xd7, 0xd2, 0x93, 0x7b, 0x7a, 0x98, 0x9c, 0x98, 0x97, 0x98, 0x96, - 0x90, 0x1f, 0xac, 0x98, 0xad, 0xb1, 0x90, 0xaf, 0x8, 0xfb, 0x7, 0xb4, - 0x15, 0x70, 0x6e, 0x63, 0x7f, 0x64, 0x1b, 0x73, 0x69, 0x95, 0xa9, 0x9d, - 0x97, 0x97, 0x9d, 0x94, 0x92, 0x88, 0x86, 0x92, 0x1f, 0x7a, 0xa0, 0xa7, - 0x84, 0xa6, 0x1b, 0x97, 0x97, 0x8c, 0x90, 0x96, 0x1f, 0xe, 0xfb, 0x2c, - 0x99, 0x76, 0xf9, 0x4a, 0x77, 0x1, 0xf7, 0xda, 0xaf, 0x3, 0xd1, 0xf7, - 0xd, 0x15, 0xae, 0x81, 0xa3, 0xdf, 0xc3, 0xab, 0x70, 0x2b, 0xae, 0x81, - 0xb0, 0xf7, 0x18, 0xdc, 0xba, 0x9a, 0x82, 0x5, 0x2e, 0x7, 0x2b, 0x29, - 0xa5, 0x71, 0xd1, 0xd3, 0x5, 0x4a, 0x7, 0x4e, 0x4c, 0xa5, 0x72, 0xc0, - 0xc1, 0xc0, 0x55, 0xa5, 0xa4, 0x4e, 0xca, 0x5, 0xcc, 0x7, 0xd1, 0x43, - 0xa5, 0xa5, 0x2b, 0xed, 0x5, 0xe8, 0x7, 0x9a, 0x94, 0xdc, 0x5c, 0xb0, - 0xfb, 0x18, 0xae, 0x95, 0x70, 0xeb, 0xc3, 0x6b, 0xa3, 0x37, 0xae, 0x95, - 0x77, 0xd4, 0xd4, 0x9d, 0x82, 0xae, 0x36, 0x76, 0x53, 0xac, 0xec, 0xa3, - 0x82, 0xaf, 0xfb, 0x19, 0x69, 0x3a, 0xb9, 0x5, 0x9d, 0x7, 0xdc, 0xb9, - 0xf7, 0x19, 0x69, 0x94, 0xaf, 0x2a, 0xa3, 0xc3, 0xac, 0xe0, 0x76, 0x94, - 0xae, 0x42, 0x9e, 0x9f, 0xd3, 0x68, 0x95, 0x73, 0x37, 0x53, 0x6b, 0xa6, - 0xeb, 0x68, 0x95, 0x66, 0xfb, 0x18, 0x3a, 0x5c, 0x7c, 0x94, 0x5, 0xe8, - 0x7, 0xeb, 0xed, 0x71, 0xa5, 0x45, 0x43, 0x5, 0xcc, 0x7, 0xc8, 0xca, - 0x71, 0xa4, 0x56, 0x55, 0x56, 0xc1, 0x71, 0x72, 0xc8, 0x4c, 0x5, 0x4a, - 0x7, 0x45, 0xd3, 0x71, 0x71, 0xeb, 0x29, 0x5, 0x2e, 0x7, 0x7c, 0x82, - 0x3a, 0xba, 0x66, 0xf7, 0x18, 0x68, 0x81, 0xa6, 0x2b, 0x53, 0xab, 0x73, - 0xdf, 0x68, 0x81, 0x9f, 0x43, 0x42, 0x78, 0x94, 0x68, 0xe0, 0xa0, 0xc3, - 0x6a, 0x2a, 0x73, 0x94, 0x67, 0xf7, 0x19, 0xad, 0xdc, 0x5d, 0x5, 0x79, - 0x7, 0x3a, 0x5d, 0xfb, 0x19, 0xad, 0x82, 0x67, 0xec, 0x73, 0x53, 0x6a, - 0x36, 0xa0, 0x82, 0x68, 0xd4, 0x78, 0x5, 0xe, 0xfb, 0x23, 0x9e, 0x76, - 0xf9, 0x40, 0x77, 0x12, 0xf7, 0x71, 0xb0, 0xd0, 0xb3, 0x64, 0xb3, 0xcf, - 0xb0, 0x67, 0xb0, 0x13, 0xf2, 0xdb, 0xf7, 0xc, 0x15, 0xb1, 0x7f, 0xa3, - 0xe5, 0xdd, 0xba, 0x86, 0x27, 0xa4, 0x7d, 0x5, 0x13, 0xea, 0xdf, 0xc1, - 0x5, 0x2d, 0x7, 0x49, 0x49, 0xa8, 0x70, 0xc4, 0xc4, 0xc4, 0x52, 0xa8, - 0xa6, 0x49, 0xcd, 0x5, 0xe9, 0x7, 0xdf, 0x55, 0xa4, 0x99, 0x86, 0xef, - 0xdd, 0x5c, 0xa3, 0x31, 0xb1, 0x97, 0x76, 0xd9, 0xd9, 0x9f, 0x82, 0xb2, - 0x31, 0x73, 0x39, 0xba, 0xe4, 0xb9, 0x5, 0xa7, 0x7, 0x32, 0xb9, 0xdd, - 0xba, 0xe5, 0x73, 0x94, 0xb2, 0x3d, 0xa0, 0xa0, 0xd8, 0x65, 0x97, 0x73, - 0x31, 0x39, 0x5c, 0x90, 0xef, 0x72, 0x99, 0x37, 0x55, 0x5, 0xe9, 0x7, - 0xcd, 0xcd, 0x6e, 0xa6, 0x52, 0x52, 0x52, 0xc4, 0x6e, 0x70, 0xcd, 0x49, - 0x5, 0x2d, 0x7, 0x37, 0xc1, 0x72, 0x7d, 0x90, 0x27, 0x39, 0xba, 0x73, - 0xe5, 0x65, 0x7f, 0xa0, 0x3e, 0x3d, 0x76, 0x94, 0x64, 0xe5, 0xa3, 0xdd, - 0x5c, 0x32, 0x5d, 0x5, 0x6f, 0x7, 0xe4, 0x5d, 0x39, 0x5c, 0x31, 0xa3, - 0x82, 0x64, 0xd9, 0x76, 0x5, 0xf7, 0x9f, 0xf7, 0x46, 0x15, 0xd9, 0x7, - 0xd2, 0xb7, 0x5, 0x13, 0xf4, 0x88, 0x38, 0x5, 0x13, 0xea, 0x5b, 0x41, - 0x15, 0xcf, 0xb2, 0xd5, 0x64, 0x41, 0x64, 0x5, 0xfb, 0x14, 0xd5, 0x15, - 0x47, 0xb2, 0x88, 0xde, 0xd2, 0x5f, 0x5, 0xb3, 0xfb, 0x76, 0x15, 0xd9, - 0x7, 0x13, 0xf4, 0xcf, 0x64, 0x8e, 0x38, 0x5, 0x13, 0xea, 0xfb, 0x5b, - 0xf7, 0xa, 0x15, 0x41, 0xb2, 0xd5, 0xb2, 0xcf, 0x64, 0x5, 0x58, 0xfb, - 0x31, 0x15, 0x8e, 0xde, 0xcf, 0xb2, 0x5, 0x3d, 0x7, 0xe, 0xfb, 0x2a, - 0x9b, 0x76, 0xf9, 0x46, 0x77, 0x1, 0xf7, 0xd2, 0xbf, 0x3, 0xd3, 0xf7, - 0xe, 0x15, 0xbd, 0x7d, 0xa3, 0xe2, 0xac, 0x9e, 0x74, 0x35, 0xbc, 0x7e, - 0xb0, 0xf7, 0x1c, 0xd4, 0xb5, 0x8e, 0x8a, 0x5, 0x36, 0x7, 0x28, 0x27, - 0xaf, 0x67, 0xca, 0xca, 0x5, 0x65, 0x7, 0x4b, 0x4b, 0xb0, 0x66, 0xc0, - 0xbf, 0xc0, 0x57, 0xb0, 0xb0, 0x4b, 0xcb, 0x5, 0xb1, 0x7, 0xca, 0x4c, - 0xaf, 0xaf, 0x28, 0xef, 0x5, 0xe0, 0x7, 0x8e, 0x8c, 0xd4, 0x61, 0xb0, - 0xfb, 0x1c, 0xbc, 0x98, 0x74, 0xe1, 0xac, 0x78, 0xa3, 0x34, 0xbd, 0x99, - 0x79, 0xd3, 0xd2, 0x9e, 0x7e, 0xbe, 0x33, 0x74, 0x6a, 0x9e, 0xe1, 0xa2, - 0x7e, 0xbc, 0xfb, 0x1c, 0x67, 0x42, 0xb6, 0x75, 0xa, 0xd4, 0xb6, 0xf7, - 0x1c, 0x67, 0x98, 0xbc, 0x35, 0xa2, 0xac, 0x9e, 0xe3, 0x74, 0x98, 0xbe, - 0x44, 0x9f, 0x9d, 0xd2, 0x59, 0x99, 0x73, 0x34, 0x6a, 0x78, 0xa2, 0xe1, - 0x5a, 0x98, 0x66, 0xfb, 0x1c, 0x42, 0x61, 0x88, 0x8c, 0x5, 0xe0, 0x7, - 0xee, 0xef, 0x67, 0xaf, 0x4c, 0x4c, 0x5, 0xb1, 0x7, 0xcb, 0xcb, 0x66, - 0xb0, 0x56, 0x57, 0x56, 0xbf, 0x66, 0x66, 0xcb, 0x4b, 0x5, 0x65, 0x7, - 0x4c, 0xca, 0x67, 0x67, 0xee, 0x27, 0x5, 0x36, 0x7, 0x88, 0x8a, 0x42, - 0xb5, 0x66, 0xf7, 0x1c, 0x5a, 0x7e, 0xa2, 0x35, 0x6a, 0x9e, 0x73, 0xe2, - 0x59, 0x7d, 0x9d, 0x44, 0x44, 0x77, 0x98, 0x58, 0xe3, 0xa2, 0xac, 0x78, - 0x35, 0x74, 0x98, 0x5a, 0xf7, 0x1c, 0xaf, 0xd4, 0x60, 0x80, 0xa, 0x42, - 0x60, 0xfb, 0x1c, 0xaf, 0x7e, 0x5a, 0xe1, 0x74, 0x6a, 0x78, 0x33, 0xa2, - 0x7e, 0x58, 0xd2, 0x77, 0x5, 0xe, 0x56, 0x97, 0x76, 0xa5, 0x76, 0xf7, - 0xdc, 0xaa, 0xf7, 0xe2, 0x77, 0x12, 0xf8, 0xd, 0xaa, 0x13, 0xb8, 0xf8, - 0x30, 0xf8, 0x13, 0x15, 0x94, 0x86, 0xf7, 0x3d, 0xf7, 0x8f, 0x76, 0x8f, - 0x81, 0x91, 0x7d, 0x9b, 0x19, 0xfb, 0x1, 0xfb, 0xbc, 0x15, 0xf7, 0xa4, - 0xf7, 0x19, 0x7b, 0x99, 0x85, 0x95, 0x87, 0xa0, 0x19, 0xfb, 0x8f, 0xfb, - 0x3d, 0x5, 0x60, 0x9e, 0x15, 0x95, 0x6, 0xa0, 0xf7, 0xc2, 0x5, 0x88, - 0x82, 0x83, 0x89, 0x83, 0x1b, 0x83, 0x83, 0x8c, 0x8f, 0x80, 0x1f, 0xd4, - 0xfb, 0xf6, 0x15, 0xf7, 0xc2, 0x76, 0x5, 0x87, 0x95, 0x8a, 0x93, 0x93, - 0x1a, 0x93, 0x8c, 0x93, 0x8f, 0x95, 0x1e, 0xfb, 0xc2, 0x76, 0x5, 0x40, - 0xac, 0x15, 0x94, 0x90, 0xfb, 0x19, 0xf7, 0xa4, 0x7d, 0x7b, 0x81, 0x85, - 0x76, 0x87, 0x19, 0xf7, 0x7f, 0xfb, 0xd1, 0x15, 0xf7, 0x8f, 0xfb, 0x3d, - 0x8f, 0xa0, 0x91, 0x95, 0x9b, 0x99, 0x19, 0xfb, 0xa4, 0xf7, 0x19, 0x5, - 0x35, 0xb1, 0x15, 0x90, 0x94, 0xfb, 0x8f, 0xf7, 0x3d, 0x87, 0x76, 0x85, - 0x81, 0x7b, 0x7d, 0x19, 0xf7, 0xe2, 0xfb, 0x57, 0x15, 0xf7, 0x19, 0xfb, - 0xa4, 0x99, 0x9b, 0x95, 0x91, 0xa0, 0x8f, 0x19, 0xfb, 0x3d, 0xf7, 0x8f, - 0x5, 0xfc, 0xd, 0x97, 0x15, 0xf7, 0xc2, 0xa0, 0x5, 0x95, 0x7, 0xfb, - 0xc2, 0xa0, 0x5, 0x8f, 0x80, 0x8c, 0x84, 0x82, 0x1a, 0x83, 0x89, 0x83, - 0x88, 0x82, 0x1e, 0xf7, 0xd7, 0xfb, 0xd7, 0x15, 0x13, 0x78, 0x8e, 0x95, - 0x93, 0x8d, 0x93, 0x1b, 0x13, 0xb8, 0x93, 0x93, 0x89, 0x88, 0x95, 0x1f, - 0x76, 0xf7, 0xc2, 0x5, 0x81, 0x6, 0xfb, 0xb0, 0xfb, 0x2a, 0x15, 0xf7, - 0x8f, 0xf7, 0x3d, 0x86, 0x94, 0xfb, 0xa4, 0xfb, 0x19, 0x9b, 0x7d, 0x91, - 0x81, 0x8f, 0x76, 0x19, 0xe7, 0x2f, 0x15, 0xa0, 0x87, 0x95, 0x85, 0x99, - 0x7b, 0xf7, 0x19, 0xf7, 0xa4, 0x18, 0x82, 0x90, 0x5, 0xe, 0x57, 0x97, - 0x76, 0xa5, 0x76, 0xf9, 0x49, 0x77, 0x12, 0xb7, 0xf9, 0x4e, 0x13, 0xb0, - 0xf8, 0x35, 0xf8, 0x7, 0x15, 0xf7, 0x55, 0xf7, 0x8b, 0x78, 0x8e, 0x55, - 0xaa, 0x7f, 0x9a, 0x19, 0xfb, 0x9, 0xfb, 0xb7, 0x5, 0xa0, 0x76, 0x15, - 0xf7, 0xb7, 0xf7, 0x9, 0x7c, 0x97, 0x6c, 0xc1, 0x88, 0x9e, 0x19, 0xfb, - 0x8b, 0xfb, 0x55, 0x5, 0x67, 0x9a, 0x15, 0x95, 0x6, 0xb7, 0xf7, 0xca, - 0x5, 0x87, 0x82, 0x77, 0x8a, 0x77, 0x1b, 0x77, 0x77, 0x8c, 0x8f, 0x82, - 0x1f, 0xe3, 0xfb, 0xf6, 0x15, 0xf7, 0xca, 0x5f, 0x5, 0x87, 0x94, 0x8a, - 0xa0, 0x9f, 0x1a, 0x9f, 0x8d, 0x9e, 0x8e, 0x94, 0x1e, 0xfb, 0xca, 0x5f, - 0x5, 0x4c, 0xa5, 0x15, 0x94, 0x90, 0xfb, 0x9, 0xf7, 0xb7, 0x7f, 0x7c, - 0x55, 0x6c, 0x78, 0x88, 0x19, 0xf7, 0x8c, 0xfb, 0xc2, 0x15, 0xf7, 0x8b, - 0xfb, 0x55, 0x8e, 0x9e, 0xaa, 0xc1, 0x9a, 0x97, 0x19, 0xfb, 0xb7, 0xf7, - 0x9, 0x5, 0x43, 0xa9, 0x15, 0x90, 0x94, 0xfb, 0x8b, 0xf7, 0x55, 0x88, - 0x78, 0x6c, 0x55, 0x7c, 0x7f, 0x19, 0xf8, 0x5f, 0xfc, 0x5f, 0x15, 0x97, - 0x9a, 0xc1, 0xaa, 0x9e, 0x8e, 0xfb, 0x55, 0xf7, 0x8b, 0x18, 0x82, 0x86, - 0x5, 0xfc, 0x0, 0x7e, 0x15, 0xf7, 0xca, 0xb7, 0x5, 0x95, 0x7, 0xfb, - 0xca, 0xb7, 0x5, 0x8f, 0x82, 0x8c, 0x76, 0x77, 0x1a, 0x77, 0x89, 0x78, - 0x88, 0x82, 0x1e, 0xf7, 0xc0, 0xfb, 0xc0, 0x15, 0x13, 0x70, 0x8e, 0x94, - 0x9e, 0x8d, 0x9f, 0x1b, 0x13, 0xb0, 0x9f, 0xa0, 0x8a, 0x87, 0x94, 0x1f, - 0x5f, 0xf7, 0xca, 0x5, 0x81, 0x6, 0xfb, 0xa5, 0xfb, 0x46, 0x15, 0xf7, - 0x8b, 0xf7, 0x55, 0x86, 0x94, 0xfb, 0xb7, 0xfb, 0x9, 0x9a, 0x7f, 0xaa, - 0x55, 0x8e, 0x78, 0x19, 0xc8, 0x4e, 0x15, 0x9e, 0x88, 0xc1, 0x6c, 0x97, - 0x7c, 0xf7, 0x9, 0xf7, 0xb7, 0x18, 0x82, 0x90, 0x5, 0xe, 0xfb, 0x12, - 0x92, 0x76, 0xf7, 0x1f, 0xf7, 0x43, 0xe6, 0xf7, 0x42, 0xf7, 0x15, 0x77, - 0x12, 0xae, 0xf7, 0x45, 0xc5, 0xf7, 0x42, 0x22, 0xae, 0xf7, 0x14, 0xf7, - 0x44, 0x13, 0xfb, 0xf7, 0xe7, 0xf7, 0x35, 0x15, 0x66, 0x7f, 0x6b, 0x6b, - 0x61, 0x1a, 0x59, 0xaf, 0x64, 0xbe, 0xbd, 0xb0, 0xb3, 0xbc, 0xb6, 0x6b, - 0xaa, 0x65, 0x97, 0x1e, 0xf7, 0x30, 0x7, 0xf7, 0x18, 0x3e, 0x5, 0x89, - 0x83, 0x89, 0x83, 0x82, 0x1a, 0x5a, 0xb3, 0x62, 0xbc, 0x1e, 0x13, 0xfd, - 0xbd, 0xb0, 0xb1, 0xbc, 0xba, 0x65, 0xb4, 0x5a, 0x6f, 0x76, 0x7f, 0x78, - 0x77, 0x1f, 0x13, 0xfb, 0xfb, 0x16, 0xd7, 0xf7, 0x16, 0xd7, 0x5, 0x76, - 0xa0, 0x9f, 0x82, 0xa9, 0x1b, 0xbc, 0xaf, 0xb6, 0xba, 0xbd, 0x62, 0xad, - 0x5b, 0x5e, 0x61, 0x63, 0x5e, 0x81, 0x8c, 0x80, 0x8e, 0x83, 0x1f, 0xfb, - 0x18, 0x3d, 0x5, 0xf7, 0x31, 0x7, 0xb1, 0x96, 0xab, 0xab, 0xb5, 0x1a, - 0xbd, 0x66, 0xb3, 0x59, 0x59, 0x66, 0x63, 0x59, 0x61, 0xaa, 0x6b, 0xb1, - 0x80, 0x1e, 0xfb, 0x31, 0x7, 0xfb, 0x18, 0xd9, 0x5, 0x8e, 0x92, 0x8d, - 0x93, 0x95, 0x1a, 0xbc, 0x63, 0xb3, 0x5a, 0x1e, 0x13, 0xfd, 0x59, 0x65, - 0x66, 0x59, 0x5c, 0xb2, 0x62, 0xbb, 0xa8, 0xa0, 0x97, 0x9e, 0x9f, 0x1f, - 0x13, 0xfb, 0xf7, 0x16, 0x3f, 0xfb, 0x16, 0x3f, 0x5, 0xa1, 0x76, 0x77, - 0x94, 0x6c, 0x1b, 0x5a, 0x67, 0x5f, 0x5c, 0x59, 0xb5, 0x69, 0xbb, 0xb7, - 0xb6, 0xb3, 0xb8, 0x96, 0x7e, 0x99, 0x93, 0x90, 0x1f, 0xf7, 0x18, 0xd8, - 0x5, 0xe, 0x5b, 0x97, 0x76, 0xf7, 0x83, 0xf7, 0xf, 0x71, 0xf7, 0xf, - 0xf7, 0x83, 0x77, 0x12, 0xf7, 0xb2, 0xf7, 0xf, 0x71, 0xf7, 0xf, 0x13, - 0xd4, 0xf8, 0x39, 0xf7, 0xf1, 0x15, 0xbf, 0xaf, 0xbb, 0x9f, 0xc7, 0x9b, - 0xa8, 0x93, 0xa9, 0x92, 0xa4, 0x9d, 0x9a, 0x95, 0x8b, 0x9e, 0x8c, 0x9e, - 0x8c, 0x95, 0x8b, 0x96, 0x8f, 0x94, 0x8, 0x8c, 0x8d, 0x8b, 0x8d, 0x8d, - 0x1a, 0x93, 0x84, 0x8c, 0x84, 0x81, 0x81, 0x8e, 0x8e, 0x82, 0x1e, 0x8e, - 0x81, 0x81, 0x8f, 0x81, 0x1b, 0x6f, 0x67, 0x56, 0x76, 0x7c, 0x1f, 0x6f, - 0x63, 0x6e, 0x68, 0x65, 0x6c, 0x82, 0x84, 0x82, 0x85, 0x82, 0x85, 0x8, - 0x78, 0x91, 0x15, 0x98, 0x88, 0x96, 0xc9, 0xa0, 0xbb, 0xaa, 0xc1, 0x19, - 0x98, 0xa2, 0xa2, 0xb3, 0xa6, 0x1a, 0x98, 0x83, 0x93, 0x83, 0x94, 0x1e, - 0x81, 0x96, 0x83, 0x94, 0x84, 0x98, 0x8, 0x8e, 0x8a, 0x88, 0x90, 0x87, - 0x1b, 0x86, 0x8b, 0x89, 0x88, 0x87, 0x1f, 0x7f, 0x80, 0x80, 0x87, 0x82, - 0x86, 0x8, 0x77, 0x81, 0x7e, 0x85, 0x61, 0x1a, 0x75, 0x8f, 0x76, 0x8f, - 0x76, 0x1e, 0x91, 0x6b, 0x8f, 0x6b, 0x6a, 0x1a, 0x71, 0x89, 0x71, 0x86, - 0x71, 0x1e, 0xa5, 0x65, 0x15, 0xc9, 0x80, 0xbb, 0x76, 0xc1, 0x6c, 0x8, - 0x7e, 0xa2, 0xb3, 0x74, 0xa6, 0x1b, 0x98, 0x94, 0x93, 0x93, 0x93, 0x1f, - 0x96, 0x95, 0x94, 0x93, 0x98, 0x92, 0x8, 0x8e, 0x8c, 0x90, 0x8e, 0x8f, - 0x1a, 0x90, 0x89, 0x8b, 0x88, 0x8f, 0x1e, 0x82, 0x96, 0x85, 0x94, 0x87, - 0x94, 0x8, 0xa1, 0x80, 0x87, 0x99, 0x5f, 0x1b, 0x75, 0x76, 0x87, 0x87, - 0x76, 0x1f, 0x85, 0x6b, 0x6b, 0x87, 0x6a, 0x1b, 0x71, 0x71, 0x8d, 0x90, - 0x71, 0x1f, 0x5b, 0x9a, 0x15, 0x97, 0x93, 0x67, 0xbf, 0x77, 0xbb, 0x7b, - 0xc7, 0x19, 0x83, 0xa8, 0x84, 0xa9, 0x79, 0xa4, 0x82, 0x98, 0x7c, 0x8d, - 0x7b, 0x8c, 0x7e, 0x8c, 0x7e, 0x8b, 0x7f, 0x8f, 0x8, 0x8c, 0x89, 0x89, - 0x8b, 0x89, 0x1b, 0x83, 0x8a, 0x84, 0x84, 0x80, 0x88, 0x80, 0x87, 0x81, - 0x1f, 0x88, 0x82, 0x88, 0x82, 0x82, 0x1a, 0x6f, 0xc0, 0x67, 0xa0, 0x7c, - 0x1e, 0xb3, 0x6f, 0xae, 0x6e, 0xaa, 0x65, 0x92, 0x82, 0x91, 0x82, 0x91, - 0x82, 0x8, 0xa9, 0x61, 0x15, 0xaf, 0x57, 0x9f, 0x5b, 0x9b, 0x4f, 0x93, - 0x6e, 0x92, 0x6d, 0x9d, 0x72, 0x94, 0x7d, 0x9c, 0x8a, 0x9c, 0x8a, 0x97, - 0x8a, 0x97, 0x8b, 0x96, 0x87, 0x8, 0x8a, 0x8d, 0x8d, 0x8b, 0x8d, 0x1b, - 0x93, 0x8c, 0x92, 0x92, 0x94, 0x8d, 0x93, 0x8e, 0x94, 0x1f, 0x8f, 0x96, - 0x8f, 0x96, 0x96, 0x1a, 0xa7, 0x56, 0xaf, 0x76, 0x9a, 0x1e, 0x63, 0xa7, - 0x68, 0xa8, 0x6c, 0xb1, 0x84, 0x94, 0x85, 0x94, 0x85, 0x94, 0x8, 0x5b, - 0x9a, 0x15, 0x8e, 0x98, 0x4d, 0x96, 0x5b, 0xa0, 0x55, 0xaa, 0x19, 0x13, - 0xb8, 0x98, 0x74, 0x63, 0xa2, 0x70, 0x1b, 0x7e, 0x82, 0x83, 0x83, 0x83, - 0x1f, 0x80, 0x81, 0x82, 0x83, 0x7e, 0x84, 0x8, 0x88, 0x8a, 0x86, 0x88, - 0x87, 0x1a, 0x86, 0x8d, 0x8b, 0x8e, 0x87, 0x1e, 0x95, 0x80, 0x91, 0x80, - 0x8f, 0x82, 0x8, 0x76, 0x95, 0x90, 0x7e, 0xb6, 0x1b, 0xa1, 0xa0, 0x8f, - 0x8f, 0xa0, 0x1f, 0x91, 0xab, 0xab, 0x8f, 0xac, 0x1b, 0xa5, 0xa5, 0x89, - 0x86, 0xa5, 0x1f, 0x9b, 0x75, 0x15, 0x80, 0x4d, 0x76, 0x5b, 0x6c, 0x55, - 0x8, 0x7e, 0x74, 0x74, 0x63, 0x70, 0x1a, 0x7e, 0x93, 0x82, 0x93, 0x83, - 0x1e, 0x95, 0x80, 0x93, 0x82, 0x92, 0x7e, 0x8, 0x88, 0x8c, 0x8e, 0x86, - 0x8f, 0x1b, 0x90, 0x8b, 0x8d, 0x8e, 0x8f, 0x1f, 0x94, 0x93, 0x93, 0x90, - 0x93, 0x8f, 0x8, 0xa3, 0x97, 0x9b, 0x8d, 0xba, 0x1a, 0xa1, 0x87, 0xa0, - 0x87, 0xa0, 0x1e, 0x85, 0xab, 0x87, 0xab, 0xac, 0x1a, 0xa5, 0x8d, 0xa5, - 0x90, 0xa5, 0x1e, 0x78, 0x91, 0x15, 0x83, 0x97, 0x57, 0x67, 0x5b, 0x77, - 0x4f, 0x7b, 0x19, 0x6e, 0x83, 0x6d, 0x84, 0x72, 0x79, 0x7e, 0x82, 0x89, - 0x7b, 0x8a, 0x7a, 0x8a, 0x7f, 0x8b, 0x7e, 0x87, 0x80, 0x8, 0x8a, 0x89, - 0x8b, 0x89, 0x89, 0x1a, 0x83, 0x92, 0x8a, 0x92, 0x95, 0x95, 0x88, 0x88, - 0x95, 0x1e, 0x88, 0x95, 0x94, 0x87, 0x95, 0x1b, 0xa7, 0xaf, 0xc0, 0xa0, - 0x9a, 0x1f, 0xa7, 0xb3, 0xa8, 0xae, 0xb1, 0xaa, 0x94, 0x92, 0x94, 0x91, - 0x94, 0x91, 0x8, 0xe, 0xfb, 0xb3, 0x8b, 0xcd, 0xf7, 0xb6, 0xd1, 0xe7, - 0xa4, 0xf7, 0xf, 0xa5, 0x1, 0xae, 0xa4, 0xf7, 0xf, 0xa6, 0xe8, 0xd3, - 0xd4, 0xd0, 0x3, 0xf7, 0x4b, 0xc8, 0x15, 0xe4, 0x4e, 0x5, 0xf2, 0xf7, - 0xf8, 0xf7, 0x22, 0xf7, 0x9, 0x6, 0x4b, 0xd1, 0x5, 0x3d, 0xd7, 0x6, - 0x46, 0xd4, 0x5, 0xfb, 0xf, 0xfb, 0x29, 0xfb, 0x28, 0xfb, 0xd, 0x6, - 0xe6, 0x49, 0x5, 0xc4, 0x6, 0xa6, 0xfb, 0xb6, 0x15, 0xf7, 0xfc, 0xfb, - 0x2a, 0xe7, 0xf7, 0x2a, 0xf7, 0x28, 0xe8, 0xfb, 0x28, 0xf7, 0x25, 0x2f, - 0xfb, 0x25, 0xfb, 0xfc, 0x7, 0xe, 0x55, 0x3a, 0xa, 0xf7, 0xdf, 0xf7, - 0xc9, 0x15, 0xfb, 0x33, 0xfb, 0x3, 0x72, 0x7a, 0x7d, 0x7a, 0x86, 0x73, - 0x19, 0x69, 0x84, 0xa6, 0x6d, 0xad, 0x1b, 0xa3, 0x9a, 0xa2, 0xaa, 0xa4, - 0x1f, 0xf7, 0x2, 0xf7, 0x2e, 0x9e, 0x83, 0x64, 0xfb, 0x66, 0x5, 0x65, - 0x84, 0xa1, 0x61, 0xb6, 0x1b, 0xba, 0x9b, 0xb4, 0xb2, 0x83, 0x1f, 0x65, - 0xf7, 0x66, 0x9d, 0x93, 0xf7, 0x4, 0xfb, 0x32, 0x5, 0x70, 0x9f, 0x98, - 0x74, 0xb1, 0x1b, 0xac, 0xa1, 0xa9, 0xaa, 0xa4, 0x7d, 0x99, 0x77, 0x98, - 0x1f, 0xfb, 0x46, 0xf7, 0xc, 0x93, 0x9f, 0xf7, 0x51, 0x6d, 0x5, 0xb4, - 0x85, 0xc5, 0x86, 0xc5, 0x1a, 0xca, 0x51, 0x89, 0x60, 0x84, 0x1e, 0xfb, - 0x4f, 0x67, 0x83, 0x9f, 0xf7, 0x44, 0xf7, 0xd, 0x5, 0x8b, 0xab, 0xa7, - 0xa4, 0x1a, 0xa9, 0x72, 0xa9, 0x6c, 0x6c, 0x7e, 0x7c, 0x74, 0x7b, 0x1e, - 0xfb, 0xa, 0xfb, 0x40, 0x79, 0x94, 0xab, 0xf7, 0x4d, 0x5, 0xb5, 0x92, - 0x8a, 0xc8, 0x50, 0x1b, 0x5d, 0x78, 0x69, 0x46, 0x97, 0x1f, 0xb1, 0xfb, - 0x4d, 0x78, 0x82, 0xfb, 0x2, 0xf7, 0x29, 0x5, 0xa1, 0x7b, 0x79, 0xab, - 0x6c, 0x1b, 0x6a, 0x6f, 0x74, 0x69, 0x65, 0xa7, 0x7e, 0xa6, 0x78, 0x1f, - 0xf7, 0x30, 0x26, 0x83, 0x78, 0xfb, 0x4e, 0xaf, 0x5, 0x60, 0x93, 0x51, - 0x8a, 0x4e, 0x1a, 0x4e, 0xc6, 0x94, 0xb4, 0x91, 0x1e, 0xf7, 0x4f, 0xa7, - 0x5, 0xe, 0x5b, 0x3a, 0xa, 0xae, 0xf9, 0x66, 0x3, 0x3b, 0xa, 0xfb, - 0x5c, 0xf7, 0x37, 0xfb, 0x34, 0xf7, 0x5b, 0xf7, 0x5a, 0xf7, 0x36, 0xf7, - 0x36, 0xf7, 0x5a, 0xf7, 0x5a, 0xfb, 0x36, 0xf7, 0x35, 0xfb, 0x5a, 0xfb, - 0x5b, 0xfb, 0x37, 0xfb, 0x33, 0xfb, 0x5c, 0x1e, 0xe, 0xad, 0x7d, 0xae, - 0xf9, 0x1c, 0xaf, 0x1, 0xae, 0x9f, 0xf9, 0x1e, 0xf7, 0x19, 0x3, 0xae, - 0xf7, 0xec, 0x15, 0xfb, 0x75, 0xf7, 0x49, 0xfb, 0x19, 0xf7, 0x6a, 0xf7, - 0x6b, 0xf7, 0x55, 0xf7, 0x13, 0xf7, 0x7b, 0xf7, 0x77, 0xfb, 0x52, 0xf7, - 0x1a, 0xfb, 0x69, 0xfb, 0x69, 0xfb, 0x4f, 0xfb, 0x1b, 0xfb, 0x76, 0x1e, - 0x9f, 0x16, 0xf7, 0x48, 0xf7, 0x28, 0x41, 0xa, 0xf7, 0x46, 0xf7, 0x25, - 0xfb, 0x27, 0xfb, 0x46, 0xfb, 0x46, 0xfb, 0x25, 0x3e, 0xa, 0xfb, 0x49, - 0xfb, 0x25, 0xf7, 0x23, 0xf7, 0x48, 0x1e, 0xe, 0x3d, 0x3d, 0xa, 0xf9, - 0x47, 0x7a, 0xa, 0xf9, 0x47, 0xf9, 0x48, 0xfd, 0x47, 0x6, 0xe, 0x3e, - 0x8b, 0xf7, 0x12, 0x6e, 0xa8, 0xf8, 0xac, 0xa9, 0x12, 0xae, 0xa8, 0xf8, - 0xa9, 0xa8, 0x13, 0x78, 0xae, 0xec, 0x15, 0xf7, 0x0, 0x6, 0x13, 0xb8, - 0x2a, 0xf8, 0xdc, 0xf8, 0xde, 0x26, 0xf5, 0xfc, 0xe3, 0x7, 0x13, 0x78, - 0xa8, 0xfc, 0xca, 0x15, 0xf8, 0xac, 0xf8, 0xa9, 0xfc, 0xac, 0x7, 0xe, - 0x3b, 0x8b, 0xf7, 0xf, 0xf8, 0xad, 0xab, 0x1, 0xae, 0xaa, 0xf8, 0xa8, - 0xf7, 0x13, 0x3, 0xae, 0xf7, 0x7, 0x15, 0xf7, 0xa, 0xfb, 0x7, 0x5, - 0xf8, 0xd0, 0xf8, 0xc7, 0x6, 0xfb, 0xd, 0xf7, 0x15, 0x5, 0xfc, 0xcd, - 0x6, 0xaa, 0xfc, 0xcd, 0x6d, 0xa, 0xc0, 0xa0, 0x76, 0xf9, 0x55, 0x54, - 0xa, 0xf9, 0xcb, 0x7a, 0xa, 0xf9, 0xcb, 0x6, 0xfc, 0x30, 0xf9, 0x55, - 0x5, 0xe, 0xc0, 0x92, 0x76, 0xf9, 0x56, 0x54, 0xa, 0xf9, 0xcb, 0x3, - 0xf8, 0x52, 0x7d, 0x15, 0xf8, 0x30, 0xf9, 0x56, 0x5, 0xfd, 0xcb, 0x6, - 0xe, 0x3a, 0xa, 0xa3, 0xf9, 0x63, 0x3, 0x3b, 0xa, 0xf7, 0xfb, 0xfb, - 0xfc, 0xf7, 0xfc, 0xf7, 0xfc, 0xfb, 0xfc, 0xf7, 0xfb, 0x5, 0xe, 0x54, - 0x3f, 0xa, 0x12, 0xaf, 0xf9, 0x5d, 0xfc, 0x8e, 0xf7, 0xc6, 0x13, 0xd0, - 0xf8, 0x1c, 0xf8, 0x21, 0x15, 0xf7, 0x2d, 0xf7, 0x2d, 0xfb, 0x2d, 0xf7, - 0x2f, 0xfb, 0x2d, 0xfb, 0x2e, 0x5, 0xf7, 0x5f, 0xfb, 0x5f, 0x15, 0xf7, - 0x2c, 0xfb, 0x2c, 0x5, 0x13, 0xe0, 0xf7, 0x2f, 0xf7, 0x25, 0xfb, 0x2d, - 0xf7, 0x35, 0x5, 0xfb, 0xf9, 0xfb, 0xfb, 0x15, 0xf7, 0x2d, 0xfb, 0x31, - 0xf7, 0x30, 0xf7, 0x31, 0xfb, 0x30, 0xf7, 0x2f, 0x5, 0xfb, 0x5f, 0x25, - 0x15, 0xf7, 0x2d, 0xf7, 0x2c, 0xfb, 0x2f, 0xf7, 0x2e, 0xfb, 0x2b, 0xfb, - 0x2e, 0x5, 0xe, 0xfb, 0xc2, 0x8b, 0xa4, 0xf7, 0xdb, 0xa2, 0xaa, 0xda, - 0xaa, 0xa4, 0xf7, 0x12, 0xa4, 0x1, 0xae, 0xa3, 0xf7, 0x6, 0xa4, 0xaa, - 0xdc, 0xa9, 0xa3, 0xf7, 0x6, 0xa4, 0x3, 0xf7, 0x41, 0x16, 0xf7, 0x53, - 0xf7, 0xf4, 0xf7, 0x1f, 0xf7, 0x51, 0xfb, 0x1f, 0xf7, 0x2b, 0xfb, 0x53, - 0xfb, 0x2b, 0xfb, 0x1e, 0xfb, 0x51, 0xf7, 0x1e, 0x6, 0xa4, 0xfb, 0xdb, - 0x15, 0xf7, 0xf2, 0xfb, 0x1f, 0xf7, 0x21, 0xf7, 0x1f, 0xf7, 0x2b, 0xf7, - 0x22, 0xfb, 0x2b, 0xf7, 0x1e, 0xfb, 0x21, 0xfb, 0x1e, 0xfb, 0xf2, 0x7, - 0xfb, 0x3, 0xa9, 0x15, 0xdc, 0xf7, 0xf3, 0xf7, 0x1d, 0xda, 0xfb, 0x1d, - 0xf7, 0x2a, 0x3a, 0xfb, 0x2a, 0xfb, 0x1f, 0x3c, 0xf7, 0x1f, 0x6, 0xe, - 0xfc, 0x25, 0x3a, 0xa, 0xae, 0xf8, 0x4, 0x3, 0xae, 0x7d, 0x15, 0xf7, - 0x66, 0xf7, 0x32, 0xf7, 0x35, 0xf7, 0x5c, 0xf7, 0x5c, 0xfb, 0x37, 0xf7, - 0x32, 0xfb, 0x61, 0x1f, 0xfd, 0x63, 0x7, 0xe, 0xfd, 0x51, 0x3d, 0xa, - 0xd0, 0x7a, 0xa, 0xd0, 0xf9, 0x48, 0x46, 0x6, 0xe, 0xfc, 0xc6, 0x5a, - 0xa, 0xae, 0x16, 0xf7, 0x63, 0xf9, 0x48, 0xfb, 0x63, 0x6, 0xe, 0xfc, - 0x3c, 0x3d, 0xa, 0xf7, 0xed, 0x7a, 0xa, 0xf7, 0xed, 0xf9, 0x48, 0xfb, - 0xed, 0x6, 0xe, 0x66, 0xa, 0xb9, 0x64, 0x15, 0x96, 0x7e, 0xf7, 0x38, - 0xf7, 0x56, 0xf7, 0x42, 0xf7, 0x27, 0xd9, 0xbb, 0x19, 0x30, 0xc2, 0xfb, - 0x3f, 0xf7, 0x1f, 0xfb, 0x34, 0xf7, 0x5b, 0x7c, 0x80, 0x18, 0xb7, 0xfb, - 0xb, 0xe3, 0xfb, 0x3d, 0xcf, 0x2d, 0x4c, 0x37, 0x2e, 0xfb, 0x65, 0x69, - 0x38, 0x8, 0xe, 0xfc, 0x41, 0x3d, 0xa, 0xf7, 0xe8, 0x7a, 0xa, 0xf7, - 0x84, 0x6, 0xef, 0xf7, 0xee, 0x27, 0xf7, 0xee, 0x5, 0xfb, 0x84, 0x6, - 0xef, 0xfb, 0xee, 0x5, 0xe, 0xfc, 0xf1, 0x3a, 0xa, 0xae, 0xc7, 0x3, - 0xae, 0xd3, 0x15, 0xf7, 0x22, 0x35, 0xa1, 0xa0, 0x23, 0xd2, 0x5, 0xf8, - 0xaf, 0x7, 0xf3, 0xcf, 0x75, 0x9f, 0xfb, 0x22, 0x33, 0x5, 0xe, 0xfc, - 0xf1, 0x3a, 0xa, 0xf7, 0x1e, 0xc8, 0x3, 0xae, 0x93, 0x15, 0xa0, 0x75, - 0xf7, 0x23, 0xe1, 0x5, 0xf8, 0xb5, 0x7, 0xfb, 0x23, 0xe3, 0x76, 0x77, - 0xf2, 0x47, 0x5, 0xfc, 0xae, 0x7, 0xe, 0xfc, 0x55, 0x3a, 0xa, 0xae, - 0xf7, 0x10, 0x3, 0xf7, 0xf2, 0x7d, 0x15, 0x91, 0x96, 0x5, 0xfb, 0x25, - 0xbc, 0x57, 0xf7, 0x32, 0xf7, 0x21, 0x1a, 0xf7, 0x1e, 0xc3, 0xf7, 0x38, - 0xf7, 0x21, 0xba, 0x1e, 0x83, 0x96, 0x5, 0xfb, 0x52, 0x54, 0xfb, 0xf, - 0x20, 0xfb, 0x5a, 0x1a, 0xfb, 0x5b, 0xf7, 0x1a, 0xfb, 0x2, 0xf7, 0x49, - 0x59, 0x1e, 0xe, 0xfb, 0x9a, 0xf3, 0xa2, 0xf7, 0x55, 0xb3, 0xf7, 0x69, - 0xa2, 0x1, 0xae, 0xa2, 0xf7, 0x66, 0xb4, 0xf7, 0x66, 0xa2, 0x14, 0x1c, - 0xf4, 0xf3, 0x15, 0xf8, 0x4, 0x6, 0x81, 0xa2, 0x5, 0x21, 0x5b, 0xe2, - 0xf7, 0x4, 0x1f, 0xf7, 0xa, 0xe7, 0x5c, 0x20, 0x1f, 0xa2, 0x81, 0x5, - 0xf8, 0x4, 0x7, 0x74, 0x81, 0x8e, 0xfb, 0x5, 0xfb, 0x0, 0x65, 0x22, - 0x88, 0x19, 0xf2, 0xb6, 0xf7, 0x2, 0xf7, 0x3, 0x85, 0x1e, 0x95, 0xa2, - 0x5, 0xfc, 0x4, 0x6, 0x95, 0x74, 0x5, 0xf6, 0x88, 0xb9, 0x31, 0xfb, - 0x6, 0x1a, 0xfb, 0x2, 0x22, 0xbb, 0xf5, 0x90, 0x1f, 0x74, 0x95, 0x5, - 0xfc, 0x4, 0x7, 0xa2, 0x95, 0x8c, 0xf6, 0xf7, 0x0, 0xc4, 0xf0, 0x81, - 0x19, 0x22, 0x63, 0x29, 0xfb, 0x5, 0x8f, 0x1e, 0xe, 0xfc, 0x55, 0x3a, - 0xa, 0xf7, 0x7c, 0xf7, 0xf, 0x3, 0xae, 0x88, 0x15, 0x92, 0x80, 0x5, - 0xf7, 0x50, 0xbf, 0xf7, 0x11, 0xf7, 0x0, 0xf7, 0x5b, 0x1a, 0xf7, 0x59, - 0xfb, 0xf, 0xf7, 0x0, 0xfb, 0x52, 0xc2, 0x1e, 0x84, 0x80, 0x5, 0xf7, - 0x20, 0x5b, 0xc4, 0xfb, 0x37, 0xfb, 0x1e, 0x1a, 0xfb, 0x21, 0x56, 0xfb, - 0x32, 0xfb, 0x24, 0x5a, 0x1e, 0xe, 0xfc, 0xc7, 0x5a, 0xa, 0xf7, 0x19, - 0x16, 0xf7, 0x1, 0x6, 0x26, 0xf7, 0xed, 0xf0, 0xf7, 0xef, 0x5, 0x22, - 0x6, 0x25, 0xfb, 0xef, 0x5, 0xe, 0xfc, 0xc7, 0x5a, 0xa, 0xae, 0x16, - 0xf5, 0x6, 0xf0, 0xf7, 0xed, 0x24, 0xf7, 0xef, 0x5, 0x23, 0x6, 0xef, - 0xfb, 0xef, 0x5, 0xe, 0xfc, 0x9e, 0x3d, 0xa, 0xf7, 0x34, 0x3, 0xf7, - 0x4c, 0x16, 0xee, 0x6, 0x54, 0xf7, 0x4, 0x6a, 0xf7, 0x4, 0xf7, 0x11, - 0x1a, 0xf7, 0x12, 0xa9, 0xed, 0xbd, 0xf7, 0xb, 0x1e, 0x2b, 0x6, 0x3a, - 0x29, 0x4c, 0xfb, 0xc, 0xfb, 0x14, 0x1a, 0xfb, 0x12, 0xcc, 0xfb, 0x13, - 0xdf, 0x2e, 0x1e, 0xe, 0xfc, 0x9e, 0x38, 0xa, 0xf7, 0xc, 0xf7, 0x37, - 0x7a, 0xa, 0xee, 0x6, 0xde, 0xe7, 0xcd, 0xf7, 0x14, 0xf7, 0x11, 0x1a, - 0xf7, 0x16, 0x4b, 0xf7, 0x9, 0x3b, 0xef, 0x1e, 0x28, 0x6, 0xc0, 0xfb, - 0xc, 0xa6, 0x2a, 0xfb, 0x12, 0x1a, 0xfb, 0x10, 0x6c, 0xfb, 0x5, 0x55, - 0xfb, 0x4, 0x1e, 0xe, 0xfc, 0x8d, 0x38, 0xa, 0xe1, 0xf7, 0x1b, 0x3, - 0xf7, 0xbf, 0x16, 0x99, 0x7, 0x3d, 0x8b, 0xc1, 0xc1, 0xf7, 0x2e, 0x8f, - 0xc0, 0x38, 0x9c, 0x1f, 0xde, 0x9d, 0x87, 0xc6, 0xf7, 0x24, 0x1a, 0xd7, - 0x8b, 0xaf, 0xd9, 0x1e, 0x98, 0x61, 0x7, 0x67, 0x39, 0x8b, 0x7c, 0x76, - 0x1f, 0x6c, 0x75, 0x87, 0x70, 0x68, 0x1a, 0x91, 0xfb, 0x3e, 0x5, 0x64, - 0x7f, 0x6d, 0x61, 0x83, 0x1e, 0xb5, 0x83, 0x97, 0x6f, 0x63, 0x1a, 0x85, - 0xfb, 0x3d, 0x5, 0x68, 0x8c, 0x69, 0xaf, 0x79, 0x1e, 0x7f, 0xa3, 0xd2, - 0x89, 0xaf, 0x1b, 0xe, 0xfc, 0x8d, 0x38, 0xa, 0xf7, 0x5, 0xf7, 0x1b, - 0x7a, 0xa, 0xbb, 0x6, 0xaf, 0xdc, 0x8b, 0x99, 0x99, 0x1f, 0xaf, 0x9d, - 0x8c, 0xad, 0xae, 0x1a, 0x85, 0xf7, 0x3d, 0x8a, 0xb4, 0x98, 0xa6, 0xb5, - 0x93, 0x19, 0x61, 0x93, 0x7d, 0xa0, 0x8d, 0xbb, 0x91, 0xf7, 0x3e, 0x18, - 0xae, 0x88, 0xa7, 0x6b, 0xa0, 0x1e, 0x9a, 0x74, 0x3b, 0x8b, 0x67, 0x1b, - 0x61, 0x7e, 0x6, 0xd9, 0x8b, 0x54, 0x56, 0x1f, 0x37, 0x7, 0x45, 0x87, - 0x56, 0xdd, 0x79, 0x1e, 0x39, 0x7a, 0x8f, 0x56, 0x45, 0x1a, 0x37, 0x7, - 0x55, 0x8b, 0x55, 0x3d, 0x1e, 0xe, 0xfc, 0x53, 0x73, 0xa, 0xf0, 0x26, - 0xf7, 0xd0, 0x13, 0xa0, 0xf7, 0xcc, 0xf9, 0x3a, 0x15, 0x86, 0xa0, 0x5, - 0xfb, 0x13, 0x7a, 0xfb, 0x23, 0x4b, 0xfb, 0x5b, 0x1a, 0x36, 0xc6, 0x21, - 0xf2, 0xeb, 0xc5, 0xd4, 0xd2, 0xc3, 0x71, 0xac, 0x75, 0x97, 0x1e, 0x7e, - 0x91, 0x7a, 0x8f, 0x7c, 0x86, 0x8, 0x86, 0x78, 0x81, 0x86, 0x70, 0x1b, - 0x13, 0xc0, 0x63, 0x71, 0xa0, 0xb5, 0xbd, 0xaf, 0xcc, 0xf7, 0x1e, 0xab, - 0x1f, 0xe, 0xfc, 0x53, 0x73, 0xa, 0xf7, 0xd0, 0x26, 0xf0, 0x13, 0xc0, - 0xde, 0xf7, 0x78, 0x15, 0xf7, 0x13, 0x9c, 0xf7, 0x23, 0xcb, 0xf7, 0x5b, - 0x1a, 0xe0, 0x50, 0xf5, 0x24, 0x2b, 0x51, 0x42, 0x44, 0x53, 0xa5, 0x6a, - 0xa1, 0x7f, 0x1e, 0x97, 0x85, 0x9a, 0x87, 0x9d, 0x90, 0x8, 0x90, 0x9e, - 0x95, 0x90, 0xa6, 0x1b, 0x13, 0xa0, 0xb3, 0xa5, 0x76, 0x61, 0x59, 0x67, - 0x4a, 0xfb, 0x1e, 0x6b, 0x1f, 0x90, 0x76, 0x5, 0xe, 0xfb, 0x3f, 0xf8, - 0xec, 0xf9, 0x3a, 0x15, 0x87, 0xa0, 0x5, 0xfb, 0xc, 0x5f, 0xa, 0x73, - 0xac, 0x76, 0x97, 0x1e, 0x80, 0x91, 0x7c, 0x8f, 0x7a, 0x86, 0x8, 0x86, - 0x7a, 0x81, 0x86, 0x72, 0x1b, 0x65, 0x73, 0xa0, 0xb5, 0xbd, 0xac, 0xcc, - 0xf7, 0x16, 0xab, 0x1f, 0xfb, 0xc4, 0x16, 0x86, 0xa0, 0x5, 0xfb, 0xb, - 0x5f, 0xa, 0x72, 0xac, 0x76, 0x97, 0x1e, 0x80, 0x91, 0x7d, 0x8f, 0x7a, - 0x86, 0x8, 0x86, 0x79, 0x82, 0x86, 0x71, 0x1b, 0x66, 0x72, 0xa0, 0xb5, - 0xbd, 0xad, 0xcc, 0xf7, 0x16, 0xab, 0x1f, 0xe, 0xfc, 0xc5, 0xe, 0x7d, - 0x99, 0xf7, 0xee, 0x98, 0xf7, 0xe1, 0x98, 0x6, 0x1e, 0xa0, 0x39, 0x63, - 0xff, 0xc, 0x9, 0xa7, 0xa, 0xe5, 0xb, 0xf9, 0xa8, 0x14, 0xf9, 0xdb, - 0x15, 0xa7, 0x13, 0x0, 0x61, 0x2, 0x0, 0x1, 0x0, 0x7, 0x0, 0xb, - 0x0, 0x11, 0x0, 0x18, 0x0, 0x1f, 0x0, 0x2c, 0x0, 0x30, 0x0, 0x39, - 0x0, 0x3e, 0x0, 0x43, 0x0, 0x4b, 0x0, 0x52, 0x0, 0x5a, 0x0, 0x5f, - 0x0, 0x64, 0x0, 0x69, 0x0, 0x78, 0x0, 0x7f, 0x0, 0xba, 0x0, 0xbf, - 0x1, 0xb, 0x1, 0x11, 0x1, 0x18, 0x1, 0x1d, 0x1, 0x24, 0x1, 0x3e, - 0x1, 0x42, 0x1, 0x46, 0x1, 0x55, 0x1, 0x59, 0x1, 0x5e, 0x1, 0x64, - 0x1, 0x69, 0x1, 0x6e, 0x1, 0x85, 0x1, 0x8d, 0x1, 0x92, 0x1, 0xa5, - 0x1, 0xaa, 0x1, 0xc7, 0x1, 0xe2, 0x1, 0xfc, 0x2, 0xb, 0x2, 0x16, - 0x2, 0x1b, 0x2, 0x1f, 0x2, 0x29, 0x2, 0x37, 0x2, 0x41, 0x2, 0x4b, - 0x2, 0x58, 0x2, 0x65, 0x2, 0x69, 0x2, 0x7f, 0x2, 0x95, 0x2, 0xa4, - 0x2, 0xaf, 0x2, 0xbe, 0x2, 0xc4, 0x2, 0xcf, 0x2, 0xda, 0x2, 0xec, - 0x2, 0xfe, 0x3, 0xf, 0x3, 0x20, 0x3, 0x2f, 0x3, 0x38, 0x3, 0x41, - 0x3, 0x4a, 0x3, 0x51, 0x3, 0x5e, 0x3, 0x6b, 0x3, 0x77, 0x3, 0x83, - 0x3, 0x89, 0x3, 0x8d, 0x3, 0x98, 0x3, 0xa1, 0x3, 0xa8, 0x3, 0xaf, - 0x3, 0xb6, 0x3, 0xbd, 0x3, 0xc4, 0x3, 0xcb, 0x3, 0xd0, 0x3, 0xd4, - 0x3, 0xde, 0x3, 0xe8, 0x3, 0xf2, 0x3, 0xfc, 0x4, 0x0, 0x4, 0x9, - 0x4, 0x12, 0x4, 0x19, 0x4, 0x1f, 0x4, 0x24, 0x4, 0x28, 0x30, 0xa, - 0x33, 0xa, 0x1e, 0xb, 0x15, 0x20, 0xa, 0xb, 0xae, 0xf7, 0xee, 0x21, - 0xa, 0xb, 0xae, 0xf7, 0xee, 0x15, 0x2c, 0xa, 0xb, 0xf7, 0x5b, 0x25, - 0xa, 0xfb, 0x5b, 0xb, 0xf7, 0x35, 0xf7, 0x35, 0xf7, 0x5b, 0xf7, 0x5a, - 0xfb, 0x35, 0xf7, 0x35, 0xb, 0x3, 0x23, 0xa, 0xb, 0xfb, 0x5a, 0xfb, - 0x35, 0xfb, 0x35, 0xfb, 0x5a, 0xb, 0xf7, 0x48, 0x2d, 0xa, 0xb, 0x2e, - 0xa, 0xf7, 0x5a, 0xb, 0xfb, 0x35, 0xfb, 0x35, 0xfb, 0x5a, 0x1e, 0xb, - 0xfb, 0x5b, 0xf7, 0x35, 0xfb, 0x35, 0xb, 0x46, 0xa, 0x24, 0xa, 0x27, - 0xa, 0x1e, 0xb, 0xf7, 0x25, 0x31, 0xa, 0xb, 0x3b, 0xa, 0x2b, 0xa, - 0xb, 0x2d, 0xa, 0xfb, 0x25, 0xb, 0x2c, 0xa, 0xae, 0x16, 0x40, 0xa, - 0x41, 0xa, 0xf7, 0x48, 0x2f, 0xa, 0xfb, 0x48, 0xb, 0x3e, 0xa, 0xfb, - 0x48, 0xfb, 0x25, 0xb, 0xf7, 0x7e, 0xf7, 0x3e, 0x5, 0xfb, 0xb5, 0x6, - 0x32, 0xf7, 0xa7, 0x32, 0xfb, 0xa7, 0x5, 0xfb, 0xb5, 0x6, 0xf7, 0x7e, - 0xfb, 0x3e, 0x5, 0x68, 0xfb, 0x5b, 0x15, 0xe1, 0xf7, 0x6c, 0xfb, 0x58, - 0xf7, 0x10, 0xf7, 0x7c, 0x7c, 0xc4, 0xf7, 0x75, 0xc4, 0xfb, 0x75, 0xf7, - 0x7c, 0x9a, 0xfb, 0x58, 0xfb, 0x10, 0xe1, 0xfb, 0x6c, 0xfb, 0x47, 0xf7, - 0x29, 0x5, 0xb, 0xfb, 0x47, 0x36, 0xa, 0xb, 0xf8, 0xaa, 0xf8, 0x8d, - 0x15, 0xaf, 0xae, 0x5, 0xa2, 0x98, 0xa9, 0xa6, 0xac, 0x1b, 0xba, 0xc5, - 0x5f, 0x4d, 0x71, 0x75, 0x6b, 0x70, 0x7a, 0x1f, 0x6e, 0x65, 0xc1, 0x8e, - 0xb3, 0xbe, 0x93, 0xb6, 0x19, 0xf7, 0x12, 0xe9, 0x71, 0xf7, 0x2e, 0xfb, - 0x23, 0xfb, 0x1b, 0x7d, 0x98, 0x7a, 0x95, 0x77, 0x92, 0x19, 0xf7, 0x5, - 0xf7, 0x16, 0x5, 0x7a, 0x65, 0x87, 0x83, 0x7d, 0x1f, 0x2f, 0xfb, 0x4, - 0x5, 0x52, 0x84, 0x61, 0x50, 0x68, 0x87, 0x8b, 0x88, 0x87, 0x1a, 0xb, - 0x4f, 0xa, 0x32, 0xa, 0x30, 0xb, 0xfb, 0x25, 0xf7, 0x25, 0xf7, 0x48, - 0xb, 0x15, 0x30, 0xa, 0x1e, 0xb, 0xa0, 0x76, 0xf9, 0x48, 0x77, 0x1, - 0xb, 0x95, 0x8, 0xb2, 0x9c, 0xda, 0xc4, 0xba, 0x1a, 0xbd, 0x26, 0xa7, - 0x64, 0x90, 0x1e, 0x8a, 0x8e, 0x97, 0x9b, 0x97, 0x9c, 0x95, 0x9c, 0x19, - 0x87, 0x8e, 0xb, 0x3f, 0xa, 0x1, 0xb, 0xae, 0x4d, 0xa, 0xb, 0x97, - 0x6b, 0x4a, 0xa, 0x9e, 0x7d, 0xa0, 0x81, 0x8, 0x64, 0x7a, 0x3c, 0x45, - 0xa, 0xb, 0x38, 0xa, 0xae, 0xb, 0xfb, 0x25, 0xfb, 0x47, 0xb, 0x92, - 0x76, 0xf9, 0x63, 0x77, 0xb, 0xf7, 0x47, 0xf7, 0x25, 0xb, 0xf7, 0x25, - 0xf7, 0x47, 0xb, 0x15, 0xa6, 0x9f, 0xa0, 0xa6, 0xa6, 0xa0, 0x76, 0x4b, - 0xa, 0xfb, 0xb4, 0x4, 0xa6, 0x9f, 0x9f, 0xa6, 0xa6, 0xa0, 0x77, 0x4b, - 0xa, 0xb, 0x5c, 0xa, 0x78, 0x99, 0x76, 0x39, 0xa, 0xb, 0x50, 0xa, - 0x51, 0xa, 0xb, 0x52, 0x5c, 0x1a, 0x59, 0xf0, 0x6f, 0xb2, 0x86, 0x1e, - 0x8c, 0x88, 0x7f, 0x7b, 0x7f, 0x7a, 0x81, 0x7a, 0x19, 0xb, 0x2b, 0xa, - 0xf7, 0x5a, 0xb, 0xa1, 0x6e, 0xa1, 0x6d, 0x65, 0x1a, 0x7f, 0x88, 0x73, - 0x7b, 0x72, 0x82, 0xc3, 0x9e, 0x9f, 0x90, 0x9e, 0x8f, 0x9e, 0x1e, 0x6a, - 0xa, 0x89, 0x7c, 0x7b, 0x89, 0x7c, 0x1b, 0xb, 0x6a, 0xa, 0x75, 0xa8, - 0x75, 0xa9, 0xb1, 0x1a, 0x97, 0x8e, 0xa3, 0x9b, 0xa4, 0x94, 0x53, 0x78, - 0x77, 0x86, 0x78, 0x87, 0x78, 0x1e, 0xfb, 0x2d, 0xc2, 0x15, 0xb, 0xe0, - 0xf7, 0xb, 0x76, 0xf7, 0x8c, 0x77, 0xf7, 0xa0, 0x54, 0xa, 0xf9, 0xea, - 0x3, 0xae, 0xed, 0x15, 0xf9, 0xea, 0xf7, 0x8c, 0xfd, 0xea, 0xf7, 0x8c, - 0xb, 0x1f, 0x89, 0x89, 0x5, 0x8e, 0x77, 0x76, 0x8c, 0x77, 0x1b, 0x86, - 0x7, 0x9c, 0x7c, 0xb, 0x70, 0x70, 0x76, 0x77, 0x70, 0x70, 0x77, 0x9f, - 0xa6, 0x1e, 0xb, 0xae, 0x12, 0xae, 0xae, 0xb, 0xf7, 0xee, 0x15, 0xb, - 0xb4, 0x8f, 0x7f, 0xf7, 0x12, 0x62, 0xa, 0x52, 0xa, 0xb, 0x9d, 0x15, - 0xf7, 0x7e, 0xf7, 0x3e, 0xf7, 0x7e, 0xfb, 0x3e, 0x31, 0xf7, 0xa7, 0xb, - 0x15, 0x7d, 0x96, 0x80, 0x99, 0x99, 0x96, 0x96, 0x99, 0xb, 0x99, 0x80, - 0x96, 0x7d, 0x7d, 0x80, 0x80, 0x7d, 0x1e, 0xb, 0x88, 0x8c, 0x84, 0x9e, - 0x81, 0x9d, 0x81, 0x9c, 0x19, 0x87, 0x89, 0x5, 0xb, 0x8e, 0x8a, 0x92, - 0x78, 0x95, 0x79, 0x95, 0x7a, 0x19, 0x8f, 0x8d, 0x5, 0xb, 0x77, 0x1, - 0xae, 0xb, 0x83, 0x83, 0x90, 0x94, 0x91, 0x8d, 0x90, 0x8e, 0x90, 0x1f, - 0xa2, 0xb3, 0xaf, 0x97, 0xb4, 0x98, 0x8, 0xfb, 0x2d, 0xc2, 0x15, 0xb, - 0xcc, 0x77, 0xc8, 0x92, 0xc1, 0xc4, 0xb8, 0x5e, 0xf7, 0x2e, 0xfb, 0x1, - 0xb0, 0x70, 0xae, 0x8f, 0xf7, 0x2e, 0xfb, 0x1b, 0x9d, 0xb, 0x87, 0x79, - 0x89, 0x79, 0x64, 0xa, 0x55, 0xa1, 0x5e, 0x1b, 0x60, 0x81, 0x6c, 0x66, - 0xb, 0xc3, 0x1b, 0xb7, 0xc1, 0xbe, 0xac, 0xa4, 0x1f, 0x53, 0xa, 0xb, - 0x8f, 0x9d, 0x8d, 0x9d, 0x63, 0xa, 0xc1, 0x75, 0xb8, 0x1b, 0xb6, 0x95, - 0xaa, 0xb0, 0xb, 0x3d, 0xa, 0xf7, 0x63, 0x3, 0xb, 0xf7, 0x27, 0x15, - 0xa1, 0x92, 0xa0, 0x95, 0x9e, 0x98, 0x8, 0xb, 0x88, 0x9f, 0xa0, 0x8a, - 0x9f, 0x1b, 0x90, 0x7, 0x7a, 0x9a, 0xb, 0x93, 0x93, 0x86, 0x82, 0x85, - 0x89, 0x86, 0x88, 0x86, 0x1f, 0x74, 0x63, 0x67, 0x7f, 0x62, 0x7e, 0x8, - 0xb, 0xae, 0x70, 0xb0, 0x8b, 0xb8, 0x62, 0xb8, 0xc0, 0xc1, 0x59, 0xc1, - 0x8e, 0xc8, 0x52, 0xc8, 0x77, 0xcc, 0xb, 0x7a, 0xfb, 0x1b, 0x4b, 0xfb, - 0x5b, 0x1a, 0x36, 0xc3, 0x21, 0xec, 0xe5, 0xc2, 0xd4, 0xd2, 0xc3, 0xb, - 0xa7, 0xd8, 0xcf, 0xaf, 0xb8, 0x5e, 0xf7, 0xa, 0xfb, 0xa, 0xf7, 0x22, - 0x38, 0xc6, 0x83, 0x92, 0xb, 0x74, 0x4e, 0x99, 0xa8, 0x98, 0x99, 0x8d, - 0x95, 0xbb, 0xa3, 0x72, 0x6e, 0xad, 0x1f, 0xb, 0x52, 0x1b, 0x5f, 0x55, - 0x58, 0x6a, 0x72, 0x1f, 0xb, 0x9d, 0x90, 0x8a, 0x90, 0x90, 0x1a, 0x71, - 0xaf, 0xb, 0x79, 0x86, 0x8c, 0x86, 0x86, 0x1a, 0xa5, 0x67, 0xb, 0x13, - 0xb2, 0x5a, 0x96, 0x56, 0xa0, 0xb, 0xfb, 0xde, 0x6c, 0x76, 0xf9, 0xa2, - 0x77, 0x1, 0xaf, 0xf8, 0x49, 0x3, 0xb, 0xf7, 0x22, 0xfb, 0xb, 0xc6, - 0x51, 0xf7, 0xa, 0x5d, 0xb8, 0x5f, 0xb8, 0xb, 0x9c, 0xf7, 0x1b, 0xcb, - 0xf7, 0x5b, 0x1a, 0xe0, 0x53, 0xf5, 0x2a, 0xb, 0xa5, 0xa5, 0xa1, 0x76, - 0x71, 0x71, 0x75, 0x75, 0x71, 0x71, 0x75, 0xb, 0xf7, 0x4a, 0xfb, 0x6b, - 0x15, 0xb, 0xfb, 0x7f, 0x15, 0xb, 0xf7, 0x4a, 0x72, 0xa4, 0xf7, 0x84, - 0xa4, 0x72, 0xf7, 0x4a, 0xb, 0x15, 0xf8, 0xad, 0xf8, 0xa8, 0xfc, 0xad, - 0x7, 0xe, 0x13, 0xe4, 0x82, 0xb9, 0x55, 0x40, 0xb, 0x13, 0xb2, 0x96, - 0x96, 0x56, 0xa0, 0xb, 0x13, 0xb2, 0x9a, 0x96, 0x55, 0xa0, 0xb, 0x75, - 0x84, 0x76, 0x81, 0x78, 0x7e, 0xb, 0xf7, 0x11, 0xf8, 0x78, 0xf7, 0x2, - 0xb, 0xf7, 0x78, 0xf8, 0x6b, 0x12, 0xb0, 0xb, 0xae, 0x1, 0xae, 0xae, - 0xb, 0x5, 0x8d, 0x7, 0xb, 0xf7, 0xf3, 0xf7, 0x7c, 0xfb, 0xf3, 0xf7, - 0x7c, 0x5, 0xb, 0x7e, 0x7d, 0x89, 0x81, 0x5b, 0x73, 0xa4, 0xa8, 0x69, - 0xb, 0x15, 0x9b, 0x7b, 0x9d, 0x82, 0x90, 0x90, 0x90, 0x90, 0xb, 0x15, - 0x90, 0x86, 0x9d, 0x94, 0x9b, 0x9b, 0x9b, 0x9b, 0xb, 0x3, 0xae, 0x16, - 0xb, 0x9a, 0x85, 0x97, 0x1e, 0x82, 0x9d, 0x80, 0x98, 0xb, 0x99, 0x8b, - 0xf7, 0x2, 0x3e, 0xb7, 0xac, 0x99, 0xb, 0xfb, 0xad, 0x5, 0xf7, 0x35, - 0x7, 0xe, 0x13, 0x94, 0x54, 0xec, 0x1b, 0xb, 0x1f, 0x8d, 0x8d, 0x5, - 0xb, 0x5, 0x89, 0x7, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitFixed.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitFixed.cpp deleted file mode 100644 index bbd1525db6..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitFixed.cpp +++ /dev/null @@ -1,1476 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitFixedFontData[17597] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xe, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x0, 0x1, - 0x1, 0x1, 0x23, 0xf8, 0x10, 0x0, 0xf8, 0x2a, 0x1, 0xf8, 0x2b, 0x2, - 0xf8, 0x2b, 0x3, 0xf8, 0x18, 0x4, 0x6f, 0xfb, 0x8d, 0xf9, 0x8, 0xf9, - 0xb7, 0x5, 0xf7, 0x85, 0xf, 0xf9, 0x6c, 0x11, 0xaa, 0x1c, 0x3e, 0x6b, - 0x12, 0x0, 0x11, 0x1, 0x1, 0x5, 0xb, 0xd, 0x11, 0x19, 0x22, 0x2b, - 0x34, 0x3e, 0x45, 0x4b, 0x4d, 0x51, 0x5d, 0x65, 0x8f, 0x9e, 0x45, 0x75, - 0x72, 0x6f, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x49, 0x4a, 0x49, 0x64, - 0x6f, 0x74, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x61, 0x72, - 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x61, 0x72, 0x72, 0x6f, 0x77, - 0x64, 0x6f, 0x77, 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, - 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, 0x61, - 0x72, 0x72, 0x6f, 0x77, 0x75, 0x70, 0x67, 0x63, 0x61, 0x72, 0x6f, 0x6e, - 0x69, 0x6a, 0x6c, 0x69, 0x72, 0x61, 0x70, 0x72, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x63, 0x65, 0x64, 0x69, 0x6c, - 0x6c, 0x61, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x68, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, - 0x6d, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, 0x0, - 0x0, 0x0, 0x0, 0x22, 0x0, 0x8a, 0x0, 0xab, 0x0, 0xac, 0x0, 0xad, - 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, 0x23, 0x0, 0x24, 0x0, 0xb1, - 0x0, 0x25, 0x0, 0x26, 0x0, 0xb2, 0x0, 0xb3, 0x0, 0xb4, 0x0, 0xb5, - 0x0, 0x9a, 0x1, 0x87, 0x0, 0x27, 0x0, 0x28, 0x1, 0x88, 0x0, 0x29, - 0x0, 0x2a, 0x1, 0x89, 0x0, 0xb6, 0x0, 0xb7, 0x0, 0xb8, 0x1, 0x8a, - 0x0, 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, 0x8c, 0x0, 0x2e, - 0x0, 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, 0x0, 0xbb, 0x0, 0xbc, - 0x0, 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, 0x0, 0x31, 0x0, 0x32, - 0x0, 0x33, 0x0, 0x34, 0x0, 0xc0, 0x1, 0x8b, 0x0, 0x35, 0x0, 0x9d, - 0x0, 0x36, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, 0x37, - 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0xc5, 0x0, 0xc6, 0x0, 0x3b, - 0x0, 0xc7, 0x0, 0x42, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0x7d, 0x0, 0xca, - 0x0, 0x90, 0x0, 0xcb, 0x0, 0x7, 0x0, 0xcc, 0x1, 0x8c, 0x1, 0x8d, - 0x1, 0x8e, 0x1, 0x8f, 0x1, 0x90, 0x0, 0x3f, 0x0, 0x5f, 0x0, 0xb, - 0x0, 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, 0x0, 0x5d, 0x0, 0x5c, - 0x0, 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, 0x0, 0xa0, 0x0, 0x74, - 0x0, 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, 0x0, 0x61, 0x0, 0x7e, - 0x0, 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, 0x0, 0x45, 0x0, 0x70, - 0x0, 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, 0x0, 0x5, 0x0, 0x82, - 0x0, 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, 0x0, 0xd1, 0x0, 0xd2, - 0x0, 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, 0x0, 0x1e, 0x0, 0xa7, - 0x0, 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, 0x0, 0x16, 0x0, 0x6e, - 0x0, 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, 0x1, 0x91, 0x0, 0x95, - 0x0, 0x7c, 0x0, 0x1f, 0x0, 0x6a, 0x0, 0x78, 0x0, 0x6b, 0x0, 0x6c, - 0x0, 0x49, 0x0, 0x86, 0x0, 0xe, 0x0, 0x4a, 0x0, 0xd3, 0x0, 0xd4, - 0x0, 0xd5, 0x0, 0xd6, 0x1, 0x92, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, - 0x0, 0x1d, 0x1, 0x93, 0x0, 0x97, 0x0, 0x92, 0x0, 0x4e, 0x0, 0x80, - 0x0, 0xa6, 0x0, 0x98, 0x0, 0xa8, 0x0, 0x4f, 0x0, 0x1a, 0x0, 0xd7, - 0x0, 0x4, 0x0, 0x50, 0x0, 0xd8, 0x0, 0xd9, 0x0, 0xda, 0x0, 0x94, - 0x0, 0x87, 0x0, 0xdb, 0x0, 0x12, 0x0, 0x9b, 0x0, 0x9e, 0x0, 0x96, - 0x0, 0x8b, 0x0, 0x8f, 0x0, 0x93, 0x0, 0xdc, 0x0, 0x51, 0x0, 0x73, - 0x0, 0x9, 0x0, 0xa, 0x0, 0x6, 0x0, 0xf, 0x0, 0x72, 0x0, 0x7a, - 0x0, 0xc, 0x0, 0x9c, 0x1, 0x94, 0x0, 0x52, 0x0, 0x20, 0x0, 0x7b, - 0x0, 0x3, 0x0, 0x76, 0x0, 0x69, 0x0, 0x77, 0x0, 0x41, 0x0, 0x8, - 0x0, 0x75, 0x0, 0x68, 0x0, 0x53, 0x0, 0xa5, 0x0, 0x84, 0x0, 0x54, - 0x0, 0xdd, 0x1, 0x95, 0x0, 0x66, 0x0, 0x1c, 0x0, 0x18, 0x0, 0x17, - 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, 0x55, 0x0, 0xa2, 0x0, 0x14, - 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, 0x99, 0x0, 0x13, 0x0, 0xa4, - 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, 0xe0, 0x0, 0xe1, 0x0, 0x40, - 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, 0x0, 0xe2, 0x0, 0xe3, - 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, 0x11, 0x0, 0xf4, 0x2, 0x0, - 0x1, 0x0, 0x2, 0x0, 0x4e, 0x0, 0xa8, 0x0, 0xc5, 0x0, 0xf1, 0x1, - 0x22, 0x1, 0x41, 0x1, 0x8a, 0x1, 0xd7, 0x2, 0x3b, 0x2, 0x86, 0x3, - 0x4, 0x3, 0x3e, 0x3, 0x79, 0x3, 0x92, 0x3, 0xbf, 0x3, 0xf5, 0x4, - 0xa, 0x4, 0x57, 0x4, 0xd4, 0x5, 0xb, 0x5, 0x3c, 0x5, 0x71, 0x5, - 0xac, 0x5, 0xc9, 0x6, 0x15, 0x6, 0x32, 0x6, 0x5b, 0x6, 0x78, 0x6, - 0xa1, 0x6, 0xbd, 0x6, 0xef, 0x7, 0x39, 0x7, 0x5b, 0x7, 0x95, 0x7, - 0xd5, 0x8, 0x7, 0x8, 0x7a, 0x8, 0xc3, 0x9, 0x1c, 0x9, 0x39, 0x9, - 0x4b, 0x9, 0x6d, 0x9, 0x88, 0xa, 0x1, 0xa, 0x47, 0xa, 0x8b, 0xb, - 0x27, 0xb, 0x83, 0xb, 0xfa, 0xc, 0x80, 0xd, 0x26, 0xd, 0x5f, 0xd, - 0xb9, 0xd, 0xf8, 0xe, 0x15, 0xe, 0x25, 0xe, 0x46, 0xe, 0x61, 0xe, - 0x92, 0xe, 0xd8, 0xf, 0x1d, 0xf, 0x5a, 0xf, 0x78, 0xf, 0x9e, 0xf, - 0xc9, 0x10, 0x10, 0x10, 0x73, 0x10, 0x89, 0x10, 0xab, 0x10, 0xbd, 0x10, - 0xf4, 0x11, 0x88, 0x11, 0x9e, 0x12, 0x1d, 0x12, 0x5b, 0x12, 0x79, 0x12, - 0xa1, 0x12, 0xae, 0x12, 0xc6, 0x12, 0xec, 0x13, 0x1b, 0x13, 0x5f, 0x13, - 0x95, 0x14, 0x31, 0x14, 0x84, 0x14, 0xe3, 0x14, 0xfb, 0x15, 0x10, 0x15, - 0x61, 0x15, 0xb3, 0x15, 0xd1, 0x15, 0xed, 0x16, 0x11, 0x16, 0x2e, 0x16, - 0x4f, 0x16, 0x96, 0x16, 0xb8, 0x17, 0x37, 0x17, 0x77, 0x17, 0xd2, 0x17, - 0xf7, 0x18, 0xb, 0x18, 0x1e, 0x18, 0xa6, 0x19, 0x15, 0x19, 0x73, 0x19, - 0x96, 0x19, 0xda, 0x1a, 0x13, 0x1a, 0x35, 0x1a, 0x58, 0x1a, 0xdf, 0x1a, - 0xf1, 0x1b, 0x7, 0x1b, 0x5b, 0x1b, 0x71, 0x1b, 0x93, 0x1b, 0xa5, 0x1b, - 0xc1, 0x1c, 0x36, 0x1c, 0x82, 0x1c, 0x94, 0x1c, 0xa7, 0x1c, 0xc6, 0x1d, - 0x38, 0x1d, 0x70, 0x1d, 0x9f, 0x1d, 0xe4, 0x1e, 0x17, 0x1e, 0x6b, 0x1e, - 0x98, 0x1e, 0xf6, 0x1f, 0x2c, 0x1f, 0x41, 0x1f, 0x7b, 0x1f, 0xc1, 0x20, - 0x4a, 0x20, 0x5b, 0x20, 0x82, 0x20, 0xb1, 0x20, 0xe2, 0x21, 0x2, 0x21, - 0x23, 0x21, 0x67, 0x21, 0x7d, 0x21, 0x90, 0x21, 0xb5, 0x21, 0xcd, 0x21, - 0xf6, 0x22, 0x15, 0x22, 0x2d, 0x22, 0x85, 0x22, 0xc6, 0x23, 0xc, 0x23, - 0x25, 0x23, 0x4a, 0x23, 0xeb, 0x24, 0x2, 0x24, 0x36, 0x24, 0x91, 0x24, - 0xa6, 0x24, 0xb9, 0x25, 0xa, 0x25, 0x36, 0x25, 0x76, 0x25, 0xc8, 0x26, - 0x55, 0x26, 0xb1, 0x26, 0xf3, 0x27, 0xc, 0x27, 0x33, 0x27, 0x53, 0x27, - 0xd5, 0x28, 0x4, 0x28, 0x1d, 0x28, 0x41, 0x28, 0xac, 0x29, 0xf, 0x29, - 0x33, 0x29, 0x8f, 0x29, 0xca, 0x2a, 0x3f, 0x2a, 0x92, 0x2a, 0xe1, 0x2b, - 0xb, 0x2b, 0x3e, 0x2b, 0x71, 0x2b, 0xb3, 0x2b, 0xcc, 0x2b, 0xed, 0x2c, - 0x52, 0x2c, 0x77, 0x2c, 0xa7, 0x2d, 0x19, 0x2d, 0x66, 0x2d, 0xab, 0x2e, - 0x7, 0x2e, 0x1e, 0x2e, 0x26, 0x2e, 0x48, 0x2e, 0x50, 0x2e, 0x5e, 0x2e, - 0x6c, 0x2e, 0x7a, 0x2e, 0x90, 0x2e, 0xda, 0x2f, 0x66, 0x2f, 0x9f, 0x30, - 0xc, 0x30, 0x94, 0x31, 0x3a, 0x31, 0xe9, 0x32, 0x9, 0x32, 0x27, 0x32, - 0x79, 0x32, 0x90, 0x32, 0x91, 0x33, 0x25, 0x33, 0x63, 0x33, 0xbd, 0x34, - 0x1f, 0x34, 0xb8, 0x35, 0x15, 0x35, 0x56, 0x35, 0x9a, 0x35, 0xe0, 0x36, - 0x1f, 0x36, 0x64, 0x36, 0x7b, 0x36, 0x9b, 0x36, 0xcd, 0x36, 0xe4, 0x36, - 0xf4, 0x37, 0x25, 0x37, 0x65, 0x37, 0xb2, 0x37, 0xec, 0x38, 0x36, 0x38, - 0x8f, 0x38, 0xe7, 0x39, 0x10, 0x39, 0x5a, 0x39, 0xa7, 0xe, 0x8b, 0xc1, - 0xf7, 0x4, 0xc1, 0xf7, 0xb4, 0xc1, 0x1, 0x8e, 0xf7, 0x63, 0xab, 0xee, - 0xbf, 0xf7, 0x60, 0x3, 0x8e, 0x16, 0xf7, 0x63, 0xc1, 0x33, 0x6, 0xb6, - 0xf7, 0x4, 0x5, 0xf7, 0xaa, 0x6, 0xb7, 0xfb, 0x4, 0x5, 0x2d, 0x55, - 0xf7, 0x60, 0xc1, 0x56, 0x6, 0xfb, 0x5f, 0xf8, 0x90, 0x5, 0xfb, 0x81, - 0x55, 0xf7, 0x1e, 0x6, 0xfb, 0x46, 0xfc, 0x5a, 0x5, 0x4e, 0x6, 0xf7, - 0x4a, 0xf7, 0x3a, 0x15, 0xf7, 0x7, 0xf7, 0xba, 0xf7, 0xf, 0xfb, 0xba, - 0x5, 0xe, 0x8b, 0xc2, 0xf7, 0x3, 0xc2, 0xac, 0xc2, 0xf7, 0x5b, 0xc1, - 0x1, 0xdc, 0xc4, 0xf7, 0xa, 0xc3, 0x8b, 0xc2, 0xdc, 0xc1, 0x9c, 0xc2, - 0x3, 0xa5, 0x16, 0xf7, 0x5a, 0xc2, 0x35, 0x6, 0xb7, 0xf7, 0x3, 0x5, - 0xf7, 0x16, 0xfb, 0x3a, 0xf7, 0x9a, 0xf7, 0x2e, 0x54, 0x28, 0xfb, 0x2c, - 0xf7, 0x5b, 0xdc, 0x53, 0xc1, 0xf7, 0x3a, 0x55, 0x54, 0x3a, 0xf7, 0x5b, - 0xf7, 0x2c, 0x25, 0xc2, 0xf7, 0x30, 0xfc, 0x2c, 0x55, 0xe5, 0x6, 0xfb, - 0x43, 0xfc, 0x59, 0x5, 0x54, 0x6, 0xf7, 0x44, 0xf7, 0x3a, 0x15, 0xf7, - 0x2, 0xf7, 0xb2, 0x5, 0xfb, 0xb2, 0x7, 0xe, 0x4d, 0xa, 0xf7, 0x78, - 0x77, 0x1, 0x54, 0xa, 0x3, 0x8e, 0x16, 0x24, 0xa, 0xfb, 0x95, 0xf8, - 0x18, 0x15, 0xf7, 0xac, 0xf0, 0x6a, 0xd4, 0xfb, 0x96, 0xfb, 0x24, 0x5, - 0xe, 0x4d, 0xa, 0xf7, 0x2f, 0xc2, 0x1, 0x54, 0xa, 0x3, 0xf7, 0x2d, - 0xf8, 0xf1, 0x15, 0xf7, 0x26, 0xf7, 0x7, 0xf7, 0x22, 0xfb, 0x7, 0xb3, - 0x9d, 0xfb, 0x24, 0xf7, 0x2c, 0x5, 0x3d, 0x6, 0xfb, 0x25, 0xfb, 0x2c, - 0x5, 0xfb, 0x3, 0xfd, 0x3, 0x15, 0x24, 0xa, 0xe, 0x8b, 0xc1, 0xf7, - 0x11, 0xc1, 0xf7, 0xaa, 0xc1, 0xda, 0xf7, 0x9, 0x12, 0x8e, 0xf7, 0x63, - 0x73, 0xdc, 0xca, 0xdc, 0x79, 0xf7, 0x60, 0x13, 0xf6, 0xf7, 0xde, 0xf9, - 0x18, 0x72, 0xa, 0xfb, 0x24, 0xfb, 0x9, 0x72, 0xa, 0xfb, 0x4b, 0xfd, - 0x8d, 0x15, 0x2d, 0xa, 0x6, 0x13, 0xe9, 0x39, 0xa, 0xe, 0x4d, 0xa, - 0x12, 0x54, 0xa, 0x17, 0x8e, 0x16, 0x25, 0xa, 0x13, 0x40, 0xf7, 0x3, - 0xf7, 0xbb, 0xf7, 0xb, 0xfb, 0xbb, 0x5, 0xfb, 0x9f, 0xf8, 0x7d, 0x79, - 0xa, 0xf7, 0x24, 0x5, 0xe, 0x4d, 0xa, 0xb0, 0xbd, 0xdb, 0xbe, 0x12, - 0x8e, 0xf7, 0x63, 0x83, 0xbe, 0xdb, 0xc0, 0x92, 0xf7, 0x60, 0x13, 0xfb, - 0x80, 0xf7, 0x5e, 0xf9, 0x47, 0x15, 0x58, 0xb4, 0x65, 0xbe, 0xbe, 0xb4, - 0xb1, 0xbe, 0xbe, 0x62, 0xb4, 0x58, 0x58, 0x62, 0x62, 0x58, 0x1e, 0xbe, - 0x8c, 0x15, 0xa1, 0x9d, 0x9d, 0xa1, 0xa1, 0x9d, 0x79, 0x75, 0x75, 0x79, - 0x79, 0x75, 0x75, 0x79, 0x9d, 0xa1, 0x1e, 0x13, 0xfd, 0x80, 0xfb, 0x8e, - 0xfd, 0x48, 0x15, 0x24, 0xa, 0xe, 0x8b, 0xc1, 0xf7, 0xb, 0xc1, 0xf7, - 0xa7, 0xc1, 0xdd, 0xbc, 0x1, 0x54, 0xa, 0x3, 0xf7, 0x31, 0xf9, 0x17, - 0x15, 0x9e, 0x93, 0x9e, 0xb4, 0xbc, 0x1b, 0xa1, 0x9d, 0x7e, 0x7c, 0xa0, - 0x1f, 0x79, 0xa4, 0xa7, 0x78, 0xb2, 0x1b, 0xcf, 0xad, 0xca, 0xb1, 0x96, - 0x1f, 0x58, 0x94, 0x5, 0x73, 0x83, 0x72, 0x66, 0x65, 0x1b, 0x75, 0x7a, - 0x9d, 0x9c, 0x75, 0x1f, 0x9a, 0x77, 0x72, 0x9a, 0x63, 0x1b, 0x52, 0x5b, - 0x5d, 0x56, 0x78, 0x1f, 0x23, 0xfd, 0x21, 0x15, 0x24, 0xa, 0xe, 0x8b, - 0xc1, 0xf7, 0x5b, 0xc2, 0xf7, 0x5c, 0xc1, 0x12, 0xf7, 0xb, 0xc2, 0xf7, - 0xb0, 0xc9, 0x74, 0xc8, 0x13, 0xf4, 0xb5, 0x16, 0xf7, 0xbd, 0x6, 0xf7, - 0x17, 0xe3, 0xb6, 0xf7, 0x0, 0xd8, 0x4b, 0xb5, 0x4b, 0x97, 0x1f, 0x13, - 0xf8, 0xc0, 0x9b, 0xb0, 0xc7, 0xc1, 0x1a, 0xf7, 0xb, 0x34, 0xaa, 0xfb, - 0xc, 0x1e, 0xfb, 0xa3, 0x55, 0xd8, 0xfc, 0x5a, 0x3e, 0x6, 0xf7, 0x18, - 0xf7, 0x8f, 0x15, 0xf7, 0x5f, 0x7, 0xf7, 0x2d, 0xf7, 0x17, 0x92, 0x24, - 0x32, 0x34, 0x79, 0x55, 0x1f, 0xfb, 0x23, 0xfb, 0x8f, 0x15, 0xf7, 0x58, - 0x7, 0x13, 0xf4, 0xf7, 0x5d, 0xf7, 0xe, 0x7c, 0x36, 0x37, 0x2e, 0x7f, - 0x4a, 0x1f, 0xe, 0x79, 0xc1, 0xf8, 0x7e, 0xc1, 0x1, 0xb9, 0xc3, 0xf8, - 0x13, 0xc1, 0x3, 0xf8, 0x9b, 0xf5, 0x15, 0x64, 0x56, 0x39, 0x6c, 0x47, - 0x1b, 0xfb, 0x9, 0x2a, 0xe9, 0xf7, 0x32, 0xf7, 0x3f, 0xf7, 0x1f, 0xce, - 0xd6, 0xcb, 0xd5, 0x64, 0x59, 0xaa, 0x1f, 0x31, 0xc1, 0xf7, 0x7d, 0x55, - 0x4e, 0x7, 0xbd, 0x56, 0x4c, 0x96, 0x56, 0x1b, 0xfb, 0x31, 0xfb, 0x5, - 0xfb, 0x1f, 0xfb, 0x2d, 0xfb, 0x39, 0xec, 0xfb, 0x21, 0xf7, 0x41, 0xda, - 0xe8, 0xa9, 0xb8, 0xc8, 0x1f, 0xe, 0xfb, 0x16, 0x76, 0xf7, 0x3f, 0xbf, - 0xf8, 0x5d, 0xbe, 0x1, 0xbd, 0xc4, 0xf8, 0x15, 0xc4, 0x3, 0xf7, 0x7c, - 0xfb, 0xb, 0x15, 0x83, 0x92, 0xa2, 0x73, 0xa7, 0x1b, 0xad, 0xb0, 0xa0, - 0xc5, 0xab, 0x7a, 0xa8, 0x6f, 0x94, 0x1f, 0x8d, 0xa1, 0x5, 0xe6, 0xd9, - 0xa3, 0xb5, 0xc9, 0x1f, 0x73, 0xbb, 0x5, 0x66, 0x55, 0x47, 0x72, 0x46, - 0x1b, 0xfb, 0x15, 0x29, 0xe1, 0xf7, 0x28, 0xf7, 0x43, 0xf7, 0x1f, 0xbb, - 0xd7, 0xcc, 0xc7, 0x6e, 0x5f, 0xb8, 0x1f, 0x35, 0xc4, 0xf7, 0x66, 0x52, - 0x52, 0x7, 0xbd, 0x43, 0x59, 0x92, 0x54, 0x1b, 0xfb, 0x33, 0x21, 0xfb, - 0x11, 0xfb, 0x24, 0xfb, 0x1e, 0xd4, 0xfb, 0xe, 0xf7, 0x28, 0x70, 0x1f, - 0x82, 0x42, 0x5, 0x8f, 0x94, 0x94, 0x8b, 0x94, 0x1b, 0x9a, 0x97, 0x7d, - 0x7f, 0x76, 0x7d, 0x81, 0x7c, 0x7d, 0x7b, 0x90, 0x9a, 0x82, 0x1f, 0xe, - 0x46, 0xa, 0xf7, 0x3, 0xc4, 0xf7, 0xe6, 0xc6, 0x3, 0xad, 0x16, 0xf7, - 0x7a, 0x6, 0xf7, 0x21, 0xf7, 0x34, 0xc4, 0xf7, 0x7b, 0xf7, 0x62, 0xfb, - 0x1c, 0xcf, 0xfb, 0x39, 0x1f, 0xfb, 0x7a, 0x54, 0xd8, 0xfc, 0x58, 0x3e, - 0x6, 0xf7, 0x1a, 0x16, 0xf8, 0x58, 0xeb, 0x7, 0xf7, 0x31, 0xe0, 0x47, - 0xfb, 0x2b, 0xfb, 0x35, 0x31, 0x43, 0xfb, 0x2c, 0x1f, 0xe, 0x8b, 0xc0, - 0xf7, 0x5c, 0xc1, 0xf7, 0x5d, 0xc1, 0x1, 0xf7, 0x1a, 0xc3, 0xf7, 0x7, - 0xc4, 0xef, 0xc3, 0x3, 0xbf, 0x16, 0xf8, 0x66, 0xf7, 0x4f, 0x53, 0xfb, - 0x1a, 0xfb, 0xa4, 0xf7, 0x5c, 0xf7, 0x7, 0x39, 0xc4, 0xf7, 0x6f, 0x52, - 0x38, 0xfb, 0x7, 0xf7, 0x5d, 0xf7, 0xa4, 0xfb, 0x1a, 0xc3, 0xf7, 0x50, - 0xfc, 0x66, 0x55, 0xdd, 0xfc, 0x5b, 0x39, 0x6, 0xe, 0x47, 0xa, 0xf7, - 0x58, 0xf8, 0xfe, 0x15, 0xf7, 0xb8, 0xf0, 0x69, 0xd5, 0xfb, 0xa3, 0xfb, - 0x25, 0x5, 0xfb, 0x18, 0xfd, 0x1c, 0x15, 0x2f, 0xa, 0xe, 0x4e, 0xa, - 0xf7, 0x7a, 0x77, 0x12, 0x61, 0xa, 0x17, 0xf7, 0x36, 0xf9, 0x5, 0x15, - 0x13, 0xfe, 0xf7, 0x2d, 0xf7, 0x7, 0xf7, 0x29, 0xfb, 0x7, 0xb5, 0x9d, - 0xfb, 0x2b, 0xf7, 0x2c, 0x5, 0x39, 0x6, 0xfb, 0x2b, 0xfb, 0x2b, 0x5, - 0x44, 0xfd, 0x18, 0x15, 0x2f, 0xa, 0xe, 0x4e, 0xa, 0xe5, 0xf7, 0x8, - 0x12, 0xf7, 0x1a, 0xc2, 0x93, 0xe0, 0xcb, 0xe1, 0x3c, 0xc4, 0xdd, 0xc3, - 0x13, 0xfe, 0x80, 0xf7, 0xee, 0xf9, 0x23, 0x15, 0xe1, 0xf7, 0x8, 0x35, - 0x6, 0xfb, 0x29, 0xfb, 0x8, 0x15, 0xe0, 0xf7, 0x8, 0x36, 0x6, 0xfb, - 0x26, 0xfd, 0x97, 0x15, 0x40, 0xa, 0x6, 0x13, 0xfd, 0x80, 0x2e, 0xa, - 0xe, 0x47, 0xa, 0xbe, 0x16, 0x2f, 0xa, 0xf8, 0x27, 0xf8, 0xc9, 0x15, - 0x96, 0xa9, 0xfb, 0xa4, 0xf7, 0x24, 0x69, 0x42, 0x5, 0xe, 0x8b, 0xc1, - 0xf7, 0x56, 0xc0, 0xf7, 0x63, 0xc1, 0x1, 0xf7, 0x1, 0xc3, 0xf7, 0xeb, - 0xcb, 0x3, 0xa7, 0x16, 0xf7, 0x8d, 0x6, 0xf7, 0x35, 0xf7, 0x1a, 0xc4, - 0xf7, 0x7f, 0xf7, 0x68, 0xfb, 0x33, 0xc5, 0xfb, 0x37, 0x1f, 0xfb, 0x72, - 0x55, 0xdc, 0xfb, 0x63, 0x3d, 0x56, 0xd9, 0xfb, 0x56, 0x3a, 0x6, 0xf7, - 0x1d, 0x16, 0xf7, 0x56, 0xf7, 0x4d, 0xc0, 0xfb, 0x4d, 0xf7, 0x63, 0xe0, - 0x7, 0xf7, 0x37, 0xea, 0x4c, 0xfb, 0x2d, 0xfb, 0x3b, 0x41, 0x44, 0xfb, - 0x31, 0x1f, 0xe, 0x8b, 0xbf, 0xf7, 0x27, 0xbf, 0xc3, 0xc0, 0xf7, 0x2b, - 0xbe, 0x1, 0xd8, 0xc7, 0xf8, 0x25, 0xc6, 0x3, 0x8e, 0xf7, 0x57, 0x15, - 0xe0, 0x6, 0xfb, 0x9, 0xaa, 0xe8, 0x3d, 0xf7, 0x30, 0x1b, 0xde, 0xdc, - 0xa6, 0xb6, 0xcc, 0x1f, 0x71, 0xb8, 0x5, 0x65, 0x53, 0x44, 0x72, 0x44, - 0x1b, 0x20, 0x35, 0xb8, 0xed, 0x6b, 0x1f, 0xf7, 0x83, 0x6, 0xa1, 0xbf, - 0x5, 0xfb, 0xa4, 0x6, 0x9b, 0x89, 0xa7, 0x8d, 0x9b, 0x1e, 0xf7, 0xb7, - 0x6, 0x9f, 0xc0, 0x5, 0xfb, 0xc1, 0x6, 0xe4, 0xa4, 0xd8, 0xc9, 0xf0, - 0x1b, 0xd5, 0xd5, 0x73, 0x64, 0xb3, 0x1f, 0x3e, 0xc6, 0xf7, 0x53, 0x50, - 0x5a, 0x7, 0xac, 0x56, 0x54, 0x9b, 0x3e, 0x1b, 0xfb, 0x1f, 0x28, 0x33, - 0xfb, 0x6, 0x6e, 0x1f, 0x4e, 0x6, 0x75, 0x56, 0x5, 0xd5, 0x6, 0x70, - 0x8c, 0x75, 0x8c, 0x80, 0x1e, 0x55, 0x6, 0xe, 0x8b, 0xc2, 0xf7, 0x5f, - 0xc2, 0xf7, 0x56, 0xc2, 0x1, 0xf7, 0x18, 0xc2, 0xf7, 0x35, 0xc2, 0xe3, - 0xc2, 0x3, 0xc1, 0x16, 0xf7, 0x9c, 0xc2, 0xfb, 0x17, 0xf7, 0x5f, 0xf7, - 0x35, 0x38, 0xc2, 0xf7, 0x72, 0x54, 0x37, 0xfb, 0x35, 0xf7, 0x56, 0xf7, - 0xc4, 0xfb, 0x11, 0xc2, 0xf7, 0x48, 0xfc, 0x80, 0x54, 0xd9, 0xfc, 0x58, - 0x3d, 0x6, 0xe, 0x79, 0xc2, 0xf7, 0x39, 0xc2, 0xf7, 0xa0, 0xc2, 0x1, - 0xad, 0xc5, 0xf8, 0x12, 0xc2, 0x3, 0xf7, 0xcc, 0x7c, 0xa, 0x7b, 0x6a, - 0x48, 0x79, 0x54, 0x1b, 0xfb, 0x23, 0x37, 0xf7, 0x8, 0xf7, 0x12, 0xf7, - 0x44, 0xf7, 0x2, 0x43, 0xa, 0x23, 0xfb, 0x1d, 0xfb, 0x37, 0xfb, 0x21, - 0xdd, 0x53, 0xa, 0xe, 0x79, 0xc2, 0xf7, 0x3b, 0xc2, 0xf7, 0x9e, 0xc2, - 0x1, 0xa7, 0xc5, 0xf8, 0x11, 0xc2, 0x3, 0xf7, 0xc5, 0x7c, 0xa, 0x76, - 0x4b, 0x67, 0x7e, 0x54, 0x1b, 0xfb, 0x23, 0x38, 0xf7, 0x8, 0xf7, 0x12, - 0xf7, 0x44, 0xf7, 0x1, 0x43, 0xa, 0x24, 0xfb, 0x1d, 0xfb, 0x37, 0xfb, - 0x21, 0xdc, 0x53, 0xa, 0x68, 0xf8, 0x6, 0x37, 0xa, 0x8b, 0xc2, 0xf7, - 0x5a, 0xc2, 0xf7, 0x5b, 0xc2, 0x1, 0xf7, 0x1, 0xc1, 0xf7, 0xa6, 0xc1, - 0x3, 0xab, 0x16, 0xf7, 0x70, 0xc2, 0x32, 0xf7, 0x5a, 0xf7, 0xa6, 0xfb, - 0x5a, 0x33, 0x54, 0xf7, 0x6f, 0xc2, 0x3e, 0xf8, 0x58, 0xd8, 0xc2, 0xfb, - 0x65, 0x54, 0xd9, 0xfb, 0x5b, 0xfb, 0xa6, 0xf7, 0x5b, 0xda, 0xc2, 0xfb, - 0x66, 0x54, 0xd8, 0xfc, 0x58, 0x3e, 0x6, 0xe, 0x46, 0xa, 0xf7, 0xa3, - 0xc2, 0x3, 0xeb, 0x16, 0xf8, 0x2c, 0xc2, 0xfb, 0x46, 0xf8, 0x58, 0xf7, - 0x38, 0xc2, 0xfc, 0x11, 0x54, 0xf7, 0x36, 0xfc, 0x58, 0xfb, 0x43, 0x6, - 0xe, 0x79, 0xc3, 0xf8, 0x68, 0xc3, 0x1, 0xec, 0xc5, 0xf7, 0xd, 0xc2, - 0xf7, 0x22, 0xc4, 0x3, 0xa3, 0x79, 0x15, 0xf7, 0x62, 0xc3, 0x40, 0xf8, - 0x68, 0xd1, 0xc3, 0xfb, 0x5c, 0x53, 0xd3, 0xfc, 0x68, 0x42, 0x6, 0xf7, - 0x90, 0xa0, 0x15, 0x85, 0x8c, 0xaa, 0x44, 0xf1, 0x1b, 0xf7, 0xb, 0x8c, - 0xf7, 0x24, 0xc2, 0x1f, 0x8c, 0xf7, 0xda, 0x5, 0xb7, 0xc2, 0xfb, 0x4c, - 0x54, 0xde, 0x6, 0x8a, 0xfb, 0xd9, 0x5, 0x6f, 0x8e, 0xfb, 0xc, 0x45, - 0x71, 0x5a, 0x95, 0x7f, 0xa, 0x6c, 0xa, 0x1, 0xf7, 0xa3, 0xc5, 0x3, - 0xf7, 0x48, 0xf8, 0xfe, 0x15, 0xf7, 0xc7, 0xf2, 0x68, 0xd3, 0xfb, 0xb1, - 0xfb, 0x25, 0x5, 0x44, 0xfd, 0x1c, 0x15, 0x32, 0xa, 0xe, 0x6c, 0xa, - 0x1, 0xf7, 0xa3, 0xc5, 0x3, 0xf7, 0x25, 0xf8, 0xfb, 0x15, 0xf7, 0x2e, - 0xf7, 0x7, 0xf7, 0x30, 0xfb, 0x7, 0xb7, 0x9d, 0xfb, 0x31, 0xf7, 0x2c, - 0x5, 0x35, 0x6, 0xfb, 0x2f, 0xfb, 0x2c, 0x5, 0x86, 0xfd, 0xd, 0x15, - 0x32, 0xa, 0xe, 0x6c, 0xa, 0xe3, 0xf7, 0x8, 0x1, 0xf7, 0xa3, 0xc5, - 0x3, 0xf7, 0xe6, 0xf9, 0x20, 0x76, 0xa, 0xfb, 0x31, 0xfb, 0x8, 0x76, - 0xa, 0x36, 0xfd, 0x94, 0x15, 0x32, 0xa, 0xe, 0x8b, 0xc1, 0xf8, 0x5e, - 0xc1, 0xcd, 0xf7, 0x8, 0x12, 0xf7, 0x95, 0xe5, 0x3f, 0xc5, 0x13, 0xe8, - 0xeb, 0x16, 0xf8, 0x2c, 0xc1, 0xfb, 0x43, 0xf8, 0x5e, 0x42, 0xa, 0xfc, - 0x5e, 0xfb, 0x43, 0x6, 0x13, 0xf0, 0xf7, 0x35, 0xf8, 0xd6, 0x76, 0xa, - 0xe, 0x6c, 0xa, 0x1, 0x8b, 0xa0, 0xf7, 0x8e, 0xc5, 0x3, 0xeb, 0x16, - 0x32, 0xa, 0xb9, 0xf9, 0x2d, 0x15, 0xf7, 0xc8, 0x26, 0x97, 0xa9, 0xfb, - 0xaf, 0xf7, 0x25, 0x5, 0xe, 0x79, 0xba, 0xf8, 0x72, 0xc2, 0x1, 0xb7, - 0xc2, 0xf7, 0xa2, 0xc0, 0x3, 0xb7, 0xca, 0x15, 0x4c, 0xc8, 0xd7, 0x79, - 0xd0, 0x1b, 0xf7, 0x31, 0x9a, 0xf4, 0xe9, 0x1f, 0xf7, 0xda, 0xf7, 0x1a, - 0xc2, 0xfc, 0x15, 0x54, 0xf7, 0x5a, 0xfb, 0xd9, 0x7, 0x36, 0x80, 0x47, - 0xfb, 0x6, 0x50, 0x35, 0x9a, 0x7f, 0xa, 0x8b, 0xc1, 0xf8, 0x59, 0xc2, - 0x1, 0xf6, 0xc0, 0xf7, 0x47, 0xf7, 0x59, 0x3, 0xa7, 0x16, 0xf7, 0x71, - 0xc1, 0x32, 0xf7, 0x38, 0x6, 0xdd, 0xdd, 0xe6, 0xfb, 0xa, 0xbd, 0x2d, - 0xb6, 0x33, 0x19, 0xf7, 0x26, 0xc1, 0xfb, 0x6, 0x6, 0x5e, 0xea, 0x4c, - 0xf0, 0x44, 0xde, 0xf7, 0x4d, 0xf7, 0x42, 0x18, 0xd3, 0xc2, 0xfb, 0x59, - 0x54, 0xc5, 0x6, 0xfb, 0x81, 0xfb, 0x73, 0x5, 0xf7, 0x73, 0xd9, 0xc2, - 0xfb, 0x66, 0x54, 0xda, 0xfc, 0x59, 0x3c, 0x7, 0xe, 0x46, 0xa, 0xf7, - 0x2c, 0xc2, 0xf7, 0xb7, 0xc2, 0x3, 0xb9, 0x16, 0xf8, 0x8f, 0xf7, 0x8b, - 0x54, 0xfb, 0x54, 0xfb, 0xb7, 0xf8, 0x58, 0xf7, 0x11, 0xc2, 0xfb, 0xb2, - 0x54, 0xf5, 0xfc, 0x58, 0x21, 0x6, 0xe, 0x75, 0xa, 0xf7, 0x2d, 0xc3, - 0xf7, 0xb4, 0xc3, 0x3, 0xb9, 0x16, 0xf8, 0x8f, 0xf7, 0x91, 0x53, 0xfb, - 0x5b, 0xfb, 0xb4, 0xf7, 0x4e, 0x6, 0xf7, 0x43, 0xd1, 0x5, 0xc2, 0x7, - 0xfb, 0x43, 0x44, 0x5, 0xf7, 0x6a, 0xf7, 0x12, 0xc1, 0xfb, 0xb5, 0x55, - 0xf6, 0xfb, 0x80, 0x7, 0x37, 0x69, 0x5, 0x55, 0x7, 0xdf, 0xad, 0x5, - 0xfb, 0x38, 0x20, 0x7, 0xe, 0x46, 0xa, 0xd1, 0xc3, 0xf7, 0xf2, 0xc3, - 0x3, 0xa0, 0x16, 0xf7, 0x3a, 0xc2, 0x4e, 0xf8, 0x58, 0x93, 0x6, 0xf7, - 0x26, 0xfc, 0xe, 0x5, 0xb6, 0x6, 0xf7, 0x23, 0xf8, 0xe, 0x5, 0x95, - 0xfc, 0x58, 0x52, 0x54, 0xf7, 0x34, 0xc2, 0x5c, 0xf8, 0x58, 0xb9, 0xc2, - 0xfb, 0x25, 0x6, 0xfb, 0x16, 0xfb, 0xeb, 0xfb, 0x19, 0xf7, 0xeb, 0x5, - 0xfb, 0x29, 0x54, 0xbc, 0xfc, 0x58, 0x5a, 0x6, 0xe, 0x46, 0xa, 0xe4, - 0xc4, 0xf7, 0xcd, 0xc3, 0x3, 0x92, 0x16, 0xf7, 0x8d, 0xc2, 0xfb, 0x2, - 0xf8, 0x41, 0x6, 0xf7, 0xba, 0xfc, 0x78, 0x5, 0xd6, 0xf8, 0x8f, 0xd9, - 0xc2, 0xfb, 0x93, 0x54, 0xf7, 0xd, 0xfc, 0x44, 0x6, 0xfb, 0xb9, 0xf8, - 0x7b, 0x5, 0xfb, 0x33, 0x54, 0xdd, 0xfc, 0x58, 0x39, 0x6, 0xe, 0x8c, - 0xbf, 0xf8, 0x5b, 0xc0, 0xd7, 0xbf, 0x99, 0xbc, 0x1, 0xe4, 0xc4, 0xf7, - 0xcd, 0xc3, 0x3, 0x92, 0x8c, 0x15, 0xf7, 0x8d, 0xbf, 0xfb, 0x2, 0xf8, - 0x45, 0x6, 0xf7, 0xba, 0xfc, 0x79, 0x5, 0xd6, 0xf8, 0x8f, 0xd9, 0xc0, - 0xfb, 0x88, 0x56, 0xf7, 0x2, 0xfc, 0x47, 0x6, 0xfb, 0xb9, 0xf8, 0x7c, - 0x5, 0xfb, 0x33, 0x56, 0xdd, 0xfc, 0x5b, 0x39, 0x6, 0xf7, 0x2e, 0xf8, - 0xe0, 0x15, 0x9f, 0x93, 0x9f, 0xb5, 0xbd, 0x1b, 0xa5, 0xa1, 0x78, 0x79, - 0xa4, 0x1f, 0x7a, 0xa3, 0xa5, 0x7f, 0xaf, 0x1b, 0xd2, 0xae, 0xca, 0xb3, - 0x96, 0x1f, 0x57, 0x94, 0x5, 0x72, 0x81, 0x72, 0x68, 0x64, 0x1b, 0x71, - 0x7b, 0x9c, 0x9e, 0x71, 0x1f, 0x99, 0x77, 0x72, 0x98, 0x64, 0x1b, 0x50, - 0x59, 0x5d, 0x55, 0x78, 0x1f, 0xe, 0x79, 0xc2, 0xf8, 0x7c, 0xc2, 0x1, - 0xb6, 0xc2, 0xf8, 0x22, 0xc8, 0x3, 0xb6, 0xf7, 0xa7, 0x15, 0xfb, 0x38, - 0xeb, 0xfb, 0x15, 0xf7, 0x32, 0xf7, 0x36, 0xed, 0xf7, 0x12, 0xf7, 0x3b, - 0xf7, 0x16, 0x4b, 0xf7, 0x43, 0xfb, 0x57, 0xfb, 0x45, 0x3d, 0xfb, 0x38, - 0xfb, 0x21, 0x1e, 0xc2, 0x16, 0xee, 0xb9, 0xf7, 0x2b, 0xf7, 0x2d, 0xf7, - 0x2d, 0xb9, 0xfb, 0x2e, 0x2b, 0xfb, 0x1e, 0x3d, 0x27, 0xfb, 0xd, 0xfb, - 0x9, 0x39, 0xec, 0xf7, 0x21, 0x1e, 0xe, 0x87, 0xc1, 0xf7, 0x4f, 0xc2, - 0xf7, 0x6c, 0xc1, 0x12, 0x9f, 0xc3, 0xf7, 0x81, 0xc3, 0xd2, 0xc2, 0xa8, - 0xc3, 0x17, 0xf8, 0x5, 0xbd, 0x15, 0xf7, 0x60, 0xd2, 0x4a, 0xc2, 0xf7, - 0x4c, 0x54, 0x4b, 0x44, 0xf7, 0x5b, 0x7, 0x13, 0xfa, 0xf7, 0x2f, 0x27, - 0xc3, 0xf7, 0x2e, 0xfb, 0xac, 0x6, 0xfb, 0x64, 0x43, 0xfb, 0x1a, 0xfb, - 0x2b, 0xfb, 0x1d, 0xd3, 0xfb, 0x24, 0xf7, 0x56, 0x1f, 0xf7, 0xba, 0xf7, - 0x32, 0x53, 0x23, 0x6, 0xfb, 0x67, 0x16, 0xfb, 0x1a, 0x87, 0x24, 0xd3, - 0xf7, 0x34, 0x1a, 0xf7, 0x3e, 0xf2, 0xcd, 0xf7, 0x1a, 0x85, 0x1e, 0xe, - 0x64, 0xa, 0xf7, 0x6d, 0x77, 0x57, 0xa, 0xf7, 0x51, 0xf8, 0xfe, 0x15, - 0xf7, 0xb0, 0xf0, 0x6a, 0xd5, 0xfb, 0x9b, 0xfb, 0x25, 0x5, 0xfb, 0x1a, - 0xfc, 0x5, 0x20, 0xa, 0xe, 0x64, 0xa, 0xd1, 0x76, 0x57, 0xa, 0xf7, - 0x32, 0xf9, 0x5, 0x49, 0xa, 0x41, 0xfb, 0xff, 0x20, 0xa, 0xe, 0x64, - 0xa, 0xcf, 0xf7, 0x9, 0x1, 0xb6, 0xc1, 0xe9, 0xde, 0xca, 0xde, 0xdc, - 0xc3, 0x3, 0xf7, 0xe5, 0xf9, 0x18, 0x62, 0xa, 0xfb, 0x26, 0xfb, 0x9, - 0x62, 0xa, 0xfb, 0x28, 0xfc, 0x76, 0x20, 0xa, 0xe, 0x64, 0xa, 0xf7, - 0x49, 0x77, 0x57, 0xa, 0xb6, 0xf7, 0xab, 0x20, 0xa, 0xc6, 0xf8, 0x2f, - 0x15, 0xf7, 0xb0, 0x45, 0x96, 0xa9, 0xfb, 0x9a, 0xf7, 0x1, 0x5, 0xe, - 0x7a, 0x76, 0xa5, 0xc2, 0xf8, 0x7b, 0xc2, 0x9c, 0x77, 0x12, 0xb2, 0xc2, - 0xf8, 0x2d, 0xc4, 0x13, 0xdc, 0xc1, 0x85, 0x15, 0xb6, 0x6b, 0xc2, 0xd6, - 0x5, 0x6c, 0xb4, 0xbe, 0x79, 0xc5, 0x1b, 0xf7, 0x36, 0xeb, 0xf7, 0x1b, - 0xf7, 0x38, 0xbf, 0x7c, 0xe1, 0x5a, 0xcd, 0x1f, 0xc5, 0xd9, 0x60, 0xac, - 0x56, 0x44, 0x5, 0x13, 0xec, 0xab, 0x65, 0x59, 0xa1, 0x48, 0x1b, 0xfb, - 0x45, 0x34, 0xfb, 0x31, 0xfb, 0x21, 0x38, 0xa5, 0x3f, 0xba, 0x55, 0x1f, - 0xd4, 0x93, 0x15, 0xf7, 0xa8, 0xf7, 0xff, 0x5, 0xad, 0x56, 0x93, 0x49, - 0x62, 0x1a, 0xfb, 0x13, 0x46, 0xfb, 0x7, 0xfb, 0x17, 0x5d, 0x63, 0x9a, - 0xa3, 0x6b, 0x1e, 0x65, 0xb1, 0x15, 0x69, 0xb7, 0x78, 0xc6, 0xc9, 0x1a, - 0xe4, 0xc0, 0xf7, 0x30, 0xf7, 0x2e, 0xc0, 0xb3, 0x7a, 0x71, 0xa9, 0x1e, - 0xe, 0x64, 0xa, 0xcc, 0xbc, 0x98, 0xbc, 0x57, 0xa, 0xf7, 0x3c, 0xf9, - 0x15, 0x15, 0x9f, 0x92, 0x9e, 0xb5, 0xbc, 0x1b, 0xa9, 0x9f, 0x7c, 0x79, - 0xa1, 0x1f, 0x7b, 0xa0, 0xa2, 0x7e, 0xb0, 0x1b, 0xcf, 0xad, 0xc6, 0xb2, - 0x96, 0x1f, 0x58, 0x94, 0x5, 0x73, 0x82, 0x75, 0x69, 0x65, 0x1b, 0x73, - 0x7b, 0x9a, 0x9d, 0x75, 0x1f, 0x9a, 0x78, 0x72, 0x99, 0x61, 0x1b, 0x52, - 0x5b, 0x52, 0x55, 0x78, 0x1f, 0x41, 0xfb, 0xfe, 0x20, 0xa, 0xe, 0x8b, - 0xc2, 0xf7, 0x1c, 0xc1, 0xf7, 0x9b, 0xc1, 0x1, 0xf7, 0x1e, 0xc2, 0xf7, - 0xb7, 0xc2, 0x3, 0xc7, 0x16, 0xf7, 0xb2, 0xc2, 0xfb, 0x2d, 0xf7, 0x1c, - 0xf7, 0x1a, 0x6, 0xf7, 0x5, 0xee, 0xca, 0xf7, 0xe, 0xe1, 0x50, 0xef, - 0xfb, 0x2c, 0x1f, 0xfb, 0xa0, 0x55, 0xd9, 0xfc, 0x59, 0x3d, 0x6, 0xf7, - 0x19, 0xf7, 0x52, 0x15, 0xf7, 0x9b, 0xf7, 0x18, 0x7, 0xdb, 0xda, 0x6a, - 0x28, 0x27, 0x37, 0x6c, 0x42, 0x1f, 0xe, 0xfb, 0x9, 0x76, 0xb6, 0xf7, - 0x11, 0x56, 0xc0, 0xf8, 0x86, 0xbf, 0x12, 0xb6, 0xc2, 0xf8, 0x26, 0xc4, - 0x13, 0xdc, 0xf7, 0x16, 0x31, 0x15, 0xa0, 0x5e, 0x5, 0xa3, 0xb8, 0xaf, - 0x9b, 0xb9, 0x1b, 0xaa, 0xa6, 0x7f, 0x80, 0xa4, 0x1f, 0x81, 0xa2, 0xa5, - 0x81, 0xb0, 0x1b, 0xae, 0xae, 0x98, 0xa1, 0xa5, 0x1f, 0x76, 0xb8, 0x5, - 0x7d, 0x76, 0x71, 0x81, 0x72, 0x1b, 0x72, 0x74, 0x95, 0x95, 0x73, 0x1f, - 0x96, 0x72, 0x71, 0x95, 0x6e, 0x1b, 0x7c, 0x7c, 0x86, 0x89, 0x7c, 0x1f, - 0x13, 0xbc, 0x99, 0x92, 0x97, 0x92, 0x97, 0x96, 0x8, 0xf7, 0x2a, 0xf7, - 0x8, 0xf7, 0xc, 0xf7, 0x42, 0xf7, 0x32, 0x3f, 0xf7, 0x2b, 0xfb, 0x4a, - 0xfb, 0x33, 0x2a, 0xfb, 0x2a, 0xfb, 0x33, 0xfb, 0x24, 0xcf, 0xfb, 0x0, - 0xf7, 0x10, 0x66, 0x1f, 0x70, 0x70, 0x5f, 0x70, 0x69, 0x79, 0x8, 0x6b, - 0xf7, 0xfd, 0x15, 0xf7, 0x16, 0xe0, 0xf7, 0x13, 0xf7, 0x7, 0xf7, 0x13, - 0xd6, 0xfb, 0xf, 0xfb, 0x1a, 0xfb, 0x4a, 0xfb, 0x1d, 0x50, 0x49, 0x48, - 0xfb, 0x18, 0xc1, 0xf7, 0x4f, 0x1e, 0xe, 0x8b, 0xc2, 0xf7, 0x55, 0xc2, - 0xf7, 0x60, 0xc2, 0x1, 0xf5, 0xc2, 0xf7, 0xac, 0xc2, 0x3, 0xa4, 0x16, - 0xf7, 0x6e, 0xc2, 0x39, 0xf7, 0x55, 0xf7, 0x8, 0x6, 0xb2, 0x5c, 0xe4, - 0xfb, 0x19, 0xb2, 0x47, 0x8, 0xf7, 0x17, 0xc2, 0x24, 0x6, 0x6a, 0xc1, - 0x4f, 0xe8, 0x63, 0xbb, 0x8, 0xce, 0x90, 0xe5, 0xab, 0xf7, 0xc, 0x1a, - 0xdf, 0x5b, 0xd2, 0xfb, 0xe, 0x1e, 0xfb, 0xc1, 0x54, 0xdc, 0xfc, 0x58, - 0x3a, 0x6, 0xf7, 0x1c, 0xf7, 0x8c, 0x15, 0xf7, 0x60, 0xf7, 0x26, 0x7, - 0xd2, 0xca, 0x74, 0x3c, 0x20, 0x24, 0x90, 0x41, 0x1f, 0x69, 0x68, 0x8b, - 0x69, 0x1b, 0xe, 0x77, 0xbf, 0x76, 0x76, 0xf8, 0xae, 0xbf, 0x7e, 0x77, - 0x12, 0xd3, 0xc2, 0x6e, 0xc1, 0xf7, 0xc2, 0xc1, 0x67, 0xc2, 0x13, 0x6a, - 0xd3, 0x81, 0x15, 0xc2, 0xb3, 0x6, 0x13, 0xa5, 0x60, 0xc9, 0xd8, 0x84, - 0xb9, 0x1b, 0xf7, 0x4, 0xf2, 0xc1, 0xf7, 0x9, 0xf7, 0xd, 0xfb, 0x2, - 0x9a, 0x28, 0x9a, 0x1f, 0x42, 0x97, 0x2e, 0xaa, 0xd8, 0x1a, 0xcb, 0xcc, - 0xb5, 0xe5, 0x1e, 0x13, 0x9a, 0xbf, 0xc6, 0x75, 0x68, 0xaf, 0x1f, 0x32, - 0xc1, 0xf7, 0x4d, 0x55, 0x6d, 0x7, 0x13, 0xa5, 0xa7, 0x64, 0x50, 0x9a, - 0x57, 0x1b, 0xfb, 0x23, 0x4c, 0x3a, 0x37, 0xfb, 0xe, 0xf7, 0x14, 0x67, - 0xdf, 0x80, 0x1f, 0xdd, 0x80, 0xdb, 0x80, 0x3a, 0x1a, 0x4a, 0x4a, 0x5d, - 0x23, 0x1e, 0x13, 0x6a, 0x4c, 0x4b, 0x9f, 0xb3, 0x5a, 0x1f, 0xd9, 0x54, - 0x7, 0xe, 0x77, 0xc3, 0x73, 0x76, 0xf8, 0xac, 0xc3, 0x7f, 0x77, 0xab, - 0xb7, 0xf7, 0x46, 0x77, 0x12, 0xd2, 0xc3, 0x6d, 0xc2, 0xf7, 0xc1, 0xc2, - 0x62, 0xc8, 0x13, 0x6e, 0x80, 0xd2, 0x82, 0x15, 0xc3, 0xbe, 0x6, 0x13, - 0xad, 0x40, 0x5f, 0xca, 0xd9, 0x79, 0xba, 0x1b, 0xf7, 0x5, 0xef, 0xc2, - 0xf7, 0xa, 0xf7, 0x9, 0xfb, 0xe, 0x9b, 0x2e, 0x95, 0x1f, 0x44, 0x93, - 0x31, 0x9e, 0xe4, 0x1a, 0xcc, 0xcd, 0xbd, 0xe7, 0x1e, 0x13, 0x9e, 0x80, - 0xbf, 0xc1, 0x6f, 0x67, 0xb0, 0x1f, 0x3b, 0xc2, 0xf7, 0x50, 0x54, 0x62, - 0x7, 0x13, 0xad, 0x40, 0xa8, 0x63, 0x55, 0xa3, 0x57, 0x1b, 0xfb, 0x26, - 0x4b, 0x28, 0x36, 0xfb, 0x11, 0xf7, 0x1c, 0x73, 0xe2, 0x82, 0x1f, 0xd8, - 0x83, 0xd1, 0x7e, 0x3f, 0x1a, 0x49, 0x53, 0x61, 0x22, 0x1e, 0x13, 0x6e, - 0x80, 0x4b, 0x4a, 0xa7, 0xb4, 0x59, 0x1f, 0xd0, 0x53, 0x7, 0xf7, 0x5d, - 0xf8, 0x59, 0x37, 0xa, 0xfb, 0x16, 0x76, 0xf7, 0x47, 0xca, 0xf7, 0x48, - 0xc9, 0xf7, 0x49, 0xcd, 0x12, 0xd2, 0xc6, 0x57, 0xc5, 0xf7, 0x1e, 0xef, - 0xd1, 0xc6, 0x63, 0xcc, 0x13, 0xfa, 0x80, 0xd2, 0xa7, 0x15, 0xc6, 0xcd, - 0x6, 0xb6, 0x73, 0xb5, 0x6e, 0xc8, 0x81, 0x88, 0x3f, 0x18, 0x8e, 0x92, - 0x95, 0x8c, 0x94, 0x1b, 0x99, 0x98, 0x7f, 0x7a, 0x77, 0x7a, 0x80, 0x78, - 0x7e, 0x7d, 0x90, 0x95, 0x81, 0x1f, 0x7c, 0x60, 0x5, 0x7c, 0x9c, 0xa2, - 0x84, 0x9e, 0x1b, 0xb4, 0xaf, 0xb2, 0xbd, 0xb5, 0x72, 0xa2, 0x77, 0x8d, - 0x1f, 0xa2, 0x7, 0xf7, 0x9, 0x8d, 0xdd, 0xce, 0xf2, 0x1a, 0xe5, 0x3f, - 0xb1, 0x3f, 0x90, 0x1e, 0x13, 0xf7, 0x0, 0x40, 0x92, 0xfb, 0x39, 0x7a, - 0xf2, 0x1a, 0xd6, 0xec, 0x98, 0xba, 0xc7, 0xc5, 0x6b, 0x6a, 0xb9, 0x1e, - 0x51, 0xc6, 0xf7, 0x51, 0x50, 0x4f, 0x7, 0xac, 0x5a, 0x52, 0xa6, 0x4d, - 0x1b, 0xfb, 0xb, 0x3c, 0x4d, 0x24, 0xfb, 0x22, 0xf7, 0x42, 0x8d, 0xe3, - 0x87, 0x1f, 0x13, 0xfa, 0x80, 0xbf, 0x89, 0xd2, 0x86, 0x43, 0x1a, 0x33, - 0xfb, 0x5, 0x7e, 0x63, 0x46, 0x50, 0xb1, 0xb7, 0x57, 0x1e, 0xc6, 0x50, - 0x7, 0xe, 0x8b, 0xc2, 0xf7, 0xd3, 0xf7, 0x50, 0x54, 0xc2, 0x12, 0xb0, - 0xc3, 0xf7, 0x46, 0xc3, 0xf7, 0x47, 0xc3, 0x13, 0xbc, 0xf7, 0x26, 0x16, - 0xf7, 0xc6, 0xc2, 0xfb, 0x11, 0xf8, 0x58, 0xf7, 0x47, 0x6, 0x13, 0xdc, - 0xfb, 0x19, 0xc3, 0xf7, 0x50, 0xfc, 0xa1, 0xfb, 0x50, 0xc3, 0x7, 0x13, - 0xbc, 0xf7, 0x19, 0xf7, 0x46, 0xfc, 0x58, 0xfb, 0x11, 0x7, 0xe, 0x8b, - 0xc1, 0xf5, 0xc1, 0xf7, 0x42, 0xc1, 0xf7, 0x12, 0xc1, 0x1, 0xf7, 0x40, - 0xbc, 0xf7, 0x95, 0xbe, 0x3, 0xf7, 0xf9, 0x16, 0xc1, 0xfb, 0x1c, 0xf5, - 0xf7, 0x1a, 0x7, 0xf7, 0x15, 0xb8, 0xc5, 0xde, 0xe6, 0x5f, 0xbd, 0xfb, - 0x18, 0x1f, 0xfb, 0x18, 0xf7, 0x12, 0xee, 0xc1, 0xfb, 0x8e, 0x55, 0xf1, - 0xfc, 0x96, 0x25, 0x55, 0x6, 0xf7, 0x2b, 0xf8, 0x18, 0x15, 0xf7, 0x18, - 0x6, 0xaf, 0xa9, 0x85, 0x80, 0xa2, 0x1f, 0xa3, 0x80, 0x97, 0x73, 0x66, - 0x1a, 0x68, 0x7f, 0x74, 0x73, 0x80, 0x1e, 0x80, 0x74, 0x6e, 0x86, 0x68, - 0x1b, 0xfb, 0x1a, 0x6, 0xe, 0x79, 0xbe, 0xf8, 0x6e, 0xc2, 0x1, 0xec, - 0xbf, 0xf7, 0xc5, 0xbf, 0x3, 0x9c, 0xf8, 0x8f, 0x15, 0xdb, 0xfb, 0xd1, - 0x6, 0xfb, 0x17, 0xc1, 0x3e, 0xf7, 0x2c, 0xf7, 0x12, 0xd8, 0xd4, 0xf7, - 0x1b, 0x1e, 0xf7, 0xd1, 0xd8, 0xc2, 0xfb, 0x7c, 0x54, 0xf2, 0xfb, 0xd1, - 0x7, 0xfb, 0xf, 0x42, 0x69, 0x3c, 0x21, 0x5c, 0xb8, 0xf7, 0x4, 0x1e, - 0xf7, 0xd1, 0xf5, 0xc2, 0xfb, 0x82, 0x7, 0xe, 0x6b, 0xa, 0xf7, 0x7a, - 0x77, 0x55, 0xa, 0xf7, 0x52, 0xf8, 0xfe, 0x15, 0xf7, 0xab, 0xf0, 0x6b, - 0xd5, 0xfb, 0x97, 0xfb, 0x25, 0x5, 0xfb, 0x35, 0xfb, 0x20, 0x34, 0xa, - 0xe, 0x6b, 0xa, 0x5b, 0xa, 0xfb, 0x14, 0xd5, 0x2a, 0x30, 0xa, 0xf7, - 0x21, 0xc9, 0x49, 0xa, 0xe, 0x6b, 0xa, 0xf7, 0x10, 0xf7, 0x9, 0x5b, - 0xa, 0xfb, 0x1b, 0xcf, 0x31, 0xf7, 0x1f, 0x31, 0xa, 0xbf, 0xf7, 0xc, - 0x4f, 0xa, 0xf7, 0xd0, 0xdc, 0x62, 0xa, 0xfb, 0x22, 0xfb, 0x9, 0x62, - 0xa, 0xe, 0x6b, 0xa, 0xf7, 0x7a, 0x77, 0x1, 0xeb, 0xbf, 0xf7, 0xc6, - 0xbf, 0x3, 0x9c, 0xf8, 0x90, 0x34, 0xa, 0xf7, 0x1e, 0xf7, 0x30, 0x79, - 0xa, 0xf7, 0x25, 0x5, 0xe, 0x93, 0x76, 0xf8, 0x9c, 0xc2, 0x1, 0x87, - 0xf7, 0x77, 0xf7, 0x31, 0xf7, 0x74, 0x3, 0xf7, 0x9b, 0x7e, 0x15, 0xd4, - 0x6, 0xf7, 0x5c, 0xf8, 0x9c, 0x5, 0xcf, 0xc2, 0xfb, 0x74, 0x54, 0xeb, - 0x6, 0xfb, 0x45, 0xfc, 0x61, 0xfb, 0x43, 0xf8, 0x61, 0x5, 0xee, 0xc2, - 0xfb, 0x77, 0x54, 0xcb, 0x6, 0xe, 0x96, 0x76, 0xf8, 0x63, 0x77, 0xd5, - 0xc2, 0x1, 0x9f, 0xf7, 0x5a, 0xf7, 0x37, 0xf7, 0x5b, 0x3, 0xf7, 0x10, - 0x81, 0x15, 0xca, 0x6, 0xf7, 0x5, 0xf7, 0xfd, 0xf7, 0xa, 0xfb, 0xfd, - 0x5, 0xc8, 0x6, 0xc4, 0xf8, 0x99, 0x5, 0xb7, 0xc2, 0xfb, 0x5b, 0x54, - 0xee, 0x6, 0x63, 0xfc, 0x36, 0xfb, 0xa, 0xf8, 0x0, 0x5, 0x62, 0x6, - 0xfb, 0x8, 0xfc, 0x2, 0x5e, 0xf8, 0x38, 0x5, 0xed, 0xc2, 0xfb, 0x5a, - 0x54, 0xb9, 0x6, 0xe, 0x46, 0xa, 0xa2, 0x16, 0xf7, 0x7e, 0xc2, 0x22, - 0x6, 0xf7, 0x2a, 0xf7, 0x58, 0xf7, 0x26, 0xfb, 0x58, 0x5, 0x2d, 0x54, - 0xf7, 0x73, 0xc2, 0x4a, 0x6, 0xfb, 0x46, 0xf7, 0x84, 0xf7, 0x32, 0xf7, - 0x68, 0x5, 0xcd, 0xc2, 0xfb, 0x53, 0x54, 0xc8, 0x6, 0xfb, 0x13, 0xfb, - 0x3f, 0xfb, 0x14, 0xf7, 0x3f, 0x5, 0xcf, 0xc2, 0xfb, 0x5a, 0x54, 0xce, - 0x6, 0xf7, 0x32, 0xfb, 0x68, 0xfb, 0x48, 0xfb, 0x84, 0x5, 0x4a, 0x6, - 0xe, 0x75, 0xa, 0xa3, 0xf7, 0x5f, 0xbb, 0xc3, 0xb9, 0xf7, 0x5b, 0x3, - 0xf7, 0x27, 0x16, 0xf7, 0xcb, 0xc1, 0xfb, 0x13, 0xf7, 0x43, 0x6, 0xf7, - 0x46, 0xf7, 0xab, 0x5, 0xce, 0xc1, 0xfb, 0x5b, 0x55, 0xd2, 0x6, 0xfb, - 0x25, 0xfb, 0x76, 0xfb, 0x28, 0xf7, 0x76, 0x5, 0xd3, 0xc1, 0xfb, 0x5f, - 0x55, 0xd0, 0x6, 0xf7, 0x4a, 0xfb, 0xab, 0x5, 0xfb, 0x43, 0xfb, 0x14, - 0x7, 0xe, 0x8b, 0xc1, 0xf8, 0x5d, 0xc1, 0xf7, 0x78, 0x77, 0x81, 0xa, - 0xf7, 0x27, 0x16, 0x36, 0xa, 0xb0, 0xf8, 0xc9, 0x15, 0xf7, 0xba, 0xf0, - 0x69, 0xd4, 0xfb, 0xa4, 0xfb, 0x24, 0x5, 0xe, 0x8b, 0xc1, 0xf8, 0x5d, - 0xc1, 0xf7, 0xe, 0xf7, 0x15, 0x81, 0xa, 0xf7, 0xe5, 0xf9, 0x43, 0x15, - 0xe1, 0xf7, 0x15, 0x35, 0x6, 0xfb, 0x2b, 0xfb, 0x15, 0x15, 0xe0, 0xf7, - 0x15, 0x36, 0x6, 0x64, 0xfd, 0xc4, 0x15, 0x36, 0xa, 0xe, 0x75, 0xa, - 0xf7, 0xa, 0xbf, 0xf7, 0xb5, 0xc2, 0x3, 0xe1, 0x16, 0xf8, 0x40, 0xf7, - 0x5f, 0x54, 0xfb, 0x29, 0xfb, 0xc1, 0x6, 0xf7, 0xf8, 0xf8, 0x5d, 0x5, - 0xbe, 0xfc, 0x20, 0xfb, 0x51, 0xbf, 0xf7, 0x1b, 0xf7, 0xa3, 0x7, 0xfb, - 0xf7, 0xfc, 0x5b, 0x5, 0xe, 0x8b, 0xc2, 0xf8, 0x63, 0xc2, 0x1, 0xf7, - 0xa, 0xbf, 0xf7, 0xb7, 0xc0, 0x3, 0xe1, 0x16, 0xf8, 0x40, 0xf7, 0x78, - 0x56, 0xfb, 0x41, 0xfb, 0xc2, 0x6, 0xf7, 0xf7, 0xf8, 0x66, 0x5, 0xbf, - 0xfc, 0x20, 0xfb, 0x68, 0xbf, 0xf7, 0x31, 0xf7, 0xa4, 0x7, 0xfb, 0xf8, - 0xfc, 0x64, 0x5, 0xf7, 0x52, 0xf8, 0xd2, 0x15, 0xd9, 0x6, 0xf7, 0x21, - 0xf7, 0x33, 0x63, 0x9d, 0xfb, 0x20, 0xfb, 0xb, 0xfb, 0x23, 0xf7, 0xb, - 0x64, 0x78, 0x5, 0xe, 0x88, 0xc2, 0xf7, 0x33, 0xc1, 0xf7, 0xb, 0xc4, - 0x1, 0xba, 0xc4, 0xf7, 0xca, 0xc2, 0x3, 0xf1, 0xf7, 0xe1, 0x15, 0xd2, - 0xa9, 0xcf, 0xa1, 0xbc, 0x8a, 0xdf, 0x8a, 0xbb, 0x6b, 0x83, 0x28, 0x8, - 0x95, 0x5e, 0x5b, 0x8e, 0x5d, 0x1b, 0xfb, 0xd, 0x20, 0x5c, 0x29, 0x4a, - 0xc0, 0x45, 0xf7, 0x8, 0xea, 0xd7, 0xc2, 0xb4, 0xa7, 0x1f, 0x37, 0xf7, - 0x1e, 0xc2, 0x37, 0xf7, 0x85, 0x7, 0xf4, 0x49, 0xb6, 0xfb, 0x7, 0x40, - 0x3b, 0x6e, 0x71, 0x5c, 0x1e, 0xf7, 0xdc, 0xfb, 0x83, 0x15, 0x4f, 0x58, - 0x46, 0x55, 0x39, 0x1b, 0x4c, 0x5e, 0xbb, 0xb1, 0xd2, 0xdd, 0xa0, 0xe3, - 0xbc, 0xc0, 0x88, 0x80, 0xb1, 0x1f, 0xe, 0x3e, 0xa, 0xf7, 0x30, 0xf8, - 0x83, 0x15, 0xf7, 0xbb, 0xf2, 0x69, 0xd5, 0xfb, 0xa5, 0xfb, 0x26, 0x5, - 0x5a, 0xfb, 0x44, 0x23, 0xa, 0x3e, 0xa, 0xf7, 0x16, 0xf8, 0x74, 0x15, - 0xf7, 0x2d, 0xf7, 0xa, 0xf7, 0x2a, 0xfb, 0xa, 0xb6, 0x9c, 0xfb, 0x2c, - 0xf7, 0x31, 0x5, 0x38, 0x6, 0xfb, 0x2d, 0xfb, 0x31, 0x5, 0x92, 0xfb, - 0x27, 0x23, 0xa, 0x6e, 0xa, 0xf7, 0x61, 0xf8, 0x85, 0x15, 0xf7, 0x64, - 0xf1, 0x5e, 0xd4, 0xfb, 0x4a, 0xfb, 0x24, 0x5, 0xe, 0x7c, 0xc3, 0x6a, - 0xc3, 0xf7, 0x2b, 0xc3, 0xf7, 0x7, 0xc3, 0xe3, 0xf7, 0x7, 0x12, 0xba, - 0xc5, 0xbf, 0xe2, 0xcc, 0xe1, 0x9e, 0xc3, 0x13, 0x7f, 0x80, 0xf7, 0xc9, - 0xf8, 0xa6, 0x15, 0xe1, 0xf7, 0x7, 0x35, 0x6, 0xfb, 0x2c, 0x60, 0xa, - 0x4d, 0xfb, 0xbb, 0x28, 0xa, 0x1f, 0x13, 0xbf, 0x80, 0x3d, 0xa, 0x1e, - 0x29, 0xa, 0x2a, 0xa, 0x7c, 0xc1, 0xf7, 0x42, 0xc2, 0xf7, 0xa, 0xc2, - 0x1, 0xa3, 0xc4, 0xf7, 0x4e, 0xc3, 0x3, 0xf7, 0xba, 0xd7, 0x15, 0x58, - 0x9f, 0xbf, 0x63, 0xda, 0x1b, 0xb8, 0xb9, 0x96, 0x96, 0xb2, 0x1f, 0x7f, - 0xc1, 0x5, 0x82, 0x6b, 0x65, 0x7e, 0x67, 0x1b, 0x2e, 0x62, 0xda, 0xde, - 0x1f, 0x97, 0xf7, 0x8f, 0x7, 0xf4, 0x8c, 0x76, 0xf7, 0xf, 0xfb, 0x13, - 0x1b, 0x53, 0x6a, 0x71, 0x62, 0x70, 0x1f, 0x99, 0x85, 0x7d, 0xc0, 0x2b, - 0x1b, 0x54, 0x58, 0x7e, 0x7b, 0x5f, 0x1f, 0x96, 0x56, 0x5, 0x98, 0xad, - 0xbe, 0x99, 0xb4, 0x1b, 0xd2, 0x99, 0x68, 0x53, 0x1f, 0x70, 0x7, 0xfb, - 0x7, 0x8c, 0xfb, 0x14, 0x75, 0xfb, 0x1e, 0x1a, 0x34, 0xcd, 0x66, 0xc9, - 0xa5, 0xc4, 0x90, 0xe1, 0xc6, 0x1e, 0xaa, 0xf7, 0x54, 0x15, 0xcb, 0x8f, - 0xb3, 0xc1, 0xc9, 0x1b, 0xd6, 0x91, 0x49, 0x57, 0x92, 0x1f, 0xfb, 0x90, - 0xfb, 0x21, 0x15, 0x75, 0x7f, 0x64, 0x49, 0x4b, 0x1b, 0x63, 0x6c, 0xa6, - 0xb9, 0xf0, 0xf7, 0x0, 0x8b, 0xd9, 0x1f, 0xe, 0x3e, 0xa, 0xf7, 0x1a, - 0xf8, 0xe8, 0x15, 0xf7, 0xbd, 0x24, 0x96, 0xaa, 0xfb, 0xa5, 0xf7, 0x28, - 0x5, 0x41, 0xfb, 0xd6, 0x23, 0xa, 0x86, 0xc0, 0x64, 0xc2, 0xf7, 0x3e, - 0xc1, 0xf7, 0x5f, 0xbf, 0x1, 0xc9, 0xc2, 0x91, 0xbf, 0x3, 0xf7, 0xf4, - 0xbb, 0x15, 0xae, 0x59, 0x5, 0xf7, 0x2a, 0xc2, 0xfb, 0x11, 0x6, 0x72, - 0xb0, 0xa6, 0xb0, 0xa1, 0xc0, 0x91, 0xc2, 0x19, 0xd8, 0xc1, 0xfb, 0xd, - 0x6, 0x60, 0x7b, 0x43, 0x71, 0x63, 0x1e, 0xfb, 0x22, 0xf7, 0x5e, 0x87, - 0x8f, 0x69, 0xb8, 0x8a, 0xb2, 0x19, 0xc0, 0x89, 0xc2, 0x99, 0xb5, 0x1b, - 0xb9, 0xa9, 0x74, 0x7a, 0x9a, 0x1f, 0xa9, 0xb7, 0x5, 0xa7, 0x6e, 0x5d, - 0x9f, 0x5e, 0x1b, 0x40, 0x42, 0x68, 0x42, 0x5f, 0xa4, 0x5c, 0xa6, 0x64, - 0x1f, 0x20, 0x50, 0x85, 0x38, 0x6b, 0x1a, 0x50, 0xb0, 0x34, 0xf6, 0xc3, - 0xc0, 0xa2, 0xb3, 0xb0, 0x1e, 0x6e, 0xb7, 0x15, 0x75, 0x73, 0x6e, 0x6b, - 0x54, 0x1b, 0x59, 0x5b, 0xa7, 0xd8, 0xc3, 0xbb, 0xbd, 0xb0, 0x9b, 0x1f, - 0xe, 0x41, 0xa, 0xc8, 0xf7, 0x38, 0x12, 0xba, 0xc5, 0xe6, 0xf7, 0x46, - 0xb3, 0xc3, 0x13, 0xbf, 0xf7, 0x58, 0xf8, 0xe4, 0x15, 0x5d, 0xb2, 0x67, - 0xbd, 0xbd, 0xb2, 0xaf, 0xb9, 0xb9, 0x64, 0xaf, 0x59, 0x59, 0x64, 0x67, - 0x5d, 0x1e, 0xc1, 0x16, 0x9d, 0x9b, 0x99, 0x9e, 0x9e, 0x9b, 0x7d, 0x79, - 0x7a, 0x7b, 0x7c, 0x78, 0x78, 0x7b, 0x9a, 0x9c, 0x1e, 0xfb, 0x2f, 0xfb, - 0x86, 0x2c, 0xa, 0xf7, 0xa4, 0xbe, 0x1, 0x6f, 0xf9, 0x24, 0x3, 0xf7, - 0x5d, 0x70, 0xa, 0xf8, 0x55, 0x80, 0xa, 0xa7, 0x5e, 0xf7, 0x7a, 0xf7, - 0x4b, 0xfb, 0x7a, 0x78, 0xa, 0xfc, 0x59, 0x5d, 0xa, 0x7c, 0xf9, 0x3, - 0x1, 0xf7, 0xa8, 0xbe, 0x3, 0xf7, 0x8, 0xf7, 0x66, 0x15, 0xf7, 0x4d, - 0xfb, 0x75, 0xf7, 0x4b, 0xf7, 0x7b, 0x5e, 0xa7, 0xfb, 0x4, 0xfb, 0x2e, - 0x5, 0xf8, 0x9a, 0x58, 0xfc, 0x9c, 0x7, 0xfb, 0xf, 0xf7, 0x2f, 0x5, - 0xe, 0x7d, 0xa, 0xf7, 0x61, 0x70, 0xa, 0xf8, 0xb5, 0xbe, 0xfc, 0xb7, - 0x5d, 0xa, 0x7d, 0xa, 0x73, 0xf7, 0xa4, 0x15, 0xf8, 0xb5, 0x80, 0xa, - 0xa7, 0x5e, 0xf7, 0x79, 0xf7, 0x4b, 0xfb, 0x79, 0x78, 0xa, 0xfc, 0xb7, - 0x6, 0xe, 0xf8, 0x1c, 0xf7, 0x14, 0x1, 0xf7, 0xa8, 0xbe, 0x3, 0xf7, - 0xa8, 0x16, 0xbe, 0xf8, 0x9a, 0x6, 0xf7, 0x4, 0xfb, 0x2e, 0xb8, 0xa7, - 0xfb, 0x4b, 0xf7, 0x75, 0xfb, 0x4d, 0xfb, 0x75, 0xb0, 0x6f, 0xf7, 0xf, - 0xf7, 0x30, 0x5, 0xe, 0xf8, 0xb, 0x76, 0xf7, 0xa0, 0x77, 0x1, 0xe9, - 0xf8, 0x30, 0x3, 0xe9, 0xf7, 0xf6, 0x15, 0xd8, 0xa6, 0xd2, 0xc6, 0xc5, - 0xc5, 0xc7, 0x4e, 0xd0, 0x53, 0xd8, 0x71, 0x8, 0xba, 0x7, 0x2a, 0xd6, - 0x5e, 0xb9, 0x63, 0xee, 0x8, 0x58, 0x6, 0x68, 0x2d, 0x5a, 0x53, 0x2c, - 0x44, 0x8, 0xe, 0xf7, 0x5b, 0xbe, 0x9e, 0xbe, 0x12, 0xc8, 0xf8, 0x71, - 0x17, 0xf6, 0xf7, 0x59, 0x15, 0xaa, 0xa1, 0xa6, 0xb4, 0xb2, 0x1b, 0xb1, - 0xaa, 0x77, 0x78, 0xac, 0x1f, 0x7a, 0xa9, 0xaa, 0x7b, 0xb1, 0x1b, 0xcd, - 0xb6, 0xba, 0xb8, 0xac, 0x1f, 0x5f, 0xaa, 0x5, 0x77, 0x7d, 0x5e, 0x57, - 0x65, 0x1b, 0x71, 0x73, 0x9b, 0x9b, 0x6f, 0x1f, 0x13, 0xe0, 0x9e, 0x6a, - 0x64, 0xa0, 0x53, 0x1b, 0x4c, 0x6b, 0x5e, 0x62, 0x68, 0x1f, 0xe, 0xf7, - 0x95, 0xf7, 0xf2, 0x1, 0xf7, 0xa0, 0xcb, 0x3, 0xf7, 0x37, 0xf7, 0xc0, - 0x15, 0xcc, 0x60, 0xd5, 0xf7, 0x16, 0xd5, 0xfb, 0x16, 0xc8, 0xb5, 0x2a, - 0xf7, 0x9, 0xf7, 0x24, 0xa6, 0x79, 0xcf, 0xfb, 0x20, 0x57, 0x98, 0xf7, - 0x28, 0x5, 0x40, 0x6, 0x94, 0xfb, 0x29, 0xfb, 0x1d, 0xc0, 0x77, 0x47, - 0xf7, 0x26, 0x6f, 0x5, 0xe, 0x7c, 0xb1, 0xde, 0xb1, 0xf7, 0x68, 0xb5, - 0xf7, 0x1, 0xb2, 0x1, 0xb0, 0xb6, 0xe5, 0xb3, 0xf7, 0x24, 0xb7, 0xf7, - 0xd, 0xb7, 0x3, 0xf7, 0xf6, 0xf7, 0x40, 0x15, 0x6e, 0x93, 0xa0, 0x66, - 0xb9, 0x1b, 0xdc, 0xc0, 0xe9, 0xf7, 0x0, 0xf7, 0x23, 0xfb, 0x1, 0xea, - 0xfb, 0x24, 0xfb, 0x47, 0x2d, 0xfb, 0x15, 0xfb, 0x31, 0xfb, 0x3a, 0xf7, - 0x0, 0xfb, 0x1, 0xf7, 0x44, 0xdf, 0xd0, 0xa7, 0xb3, 0xcc, 0x1f, 0x77, - 0xb3, 0x5, 0x76, 0x6e, 0x2c, 0x5a, 0x41, 0x1b, 0xfb, 0x11, 0xfb, 0x8, - 0xdd, 0xf7, 0x2f, 0xf7, 0xe, 0xd2, 0xf7, 0x11, 0xf7, 0x33, 0xf7, 0xb, - 0xe5, 0x36, 0xfb, 0x5, 0x3e, 0x67, 0x33, 0x58, 0x59, 0x91, 0xd9, 0xb6, - 0x95, 0x1f, 0xac, 0xf7, 0x1c, 0x5, 0x5f, 0x6, 0x7f, 0x5a, 0x5, 0xb6, - 0x76, 0x72, 0x8e, 0x6c, 0x1b, 0x3d, 0x59, 0x2a, 0x2a, 0x5e, 0x99, 0x56, - 0xce, 0xb4, 0xb6, 0xac, 0xac, 0x9e, 0x1f, 0xfb, 0x24, 0xa9, 0x15, 0xc1, - 0xa6, 0xef, 0xc8, 0xbd, 0x91, 0x67, 0x79, 0x4a, 0x64, 0x30, 0x51, 0x69, - 0x7e, 0xad, 0xa1, 0x1e, 0xe, 0x7c, 0xc3, 0x5f, 0xc3, 0xf7, 0x34, 0xc3, - 0xf7, 0x1c, 0xc3, 0xc7, 0xbd, 0x9b, 0xbc, 0x12, 0xba, 0xc5, 0xf7, 0xc9, - 0xc3, 0x13, 0xbf, 0xf7, 0x15, 0xf8, 0xa1, 0x15, 0x99, 0x8f, 0x9f, 0xbb, - 0xaf, 0x1b, 0xa7, 0x9d, 0x7d, 0x7c, 0x9f, 0x1f, 0x79, 0xa2, 0xa6, 0x78, - 0xb9, 0x1b, 0xcb, 0xbc, 0xb9, 0xc3, 0x9e, 0x1f, 0x58, 0x94, 0x5, 0x72, - 0x82, 0x6e, 0x67, 0x66, 0x1b, 0x70, 0x78, 0x9b, 0x9d, 0x74, 0x1f, 0x9b, - 0x76, 0x73, 0x9a, 0x65, 0x1b, 0x57, 0x55, 0x67, 0x4a, 0x75, 0x1f, 0x9d, - 0xfb, 0x4d, 0x2c, 0xa, 0x7c, 0xc2, 0x60, 0xc3, 0xf7, 0xea, 0xc3, 0x12, - 0xf5, 0xc4, 0xf7, 0xf9, 0xc7, 0x13, 0x78, 0x9e, 0x88, 0x15, 0xf7, 0x24, - 0xd1, 0x6, 0x13, 0xb8, 0x7b, 0x99, 0xb5, 0x49, 0xf7, 0x18, 0x1b, 0xf7, - 0x1e, 0xe6, 0xf7, 0xa, 0xf7, 0x2, 0xf7, 0x2b, 0x27, 0xe2, 0xfb, 0x13, - 0xfb, 0x4, 0x4f, 0x4c, 0x72, 0x79, 0x1f, 0xf7, 0x9e, 0xfb, 0x24, 0x54, - 0xe2, 0x7, 0x13, 0x78, 0xfc, 0x9d, 0x34, 0x7, 0xf7, 0x25, 0xf7, 0x3d, - 0x15, 0xf5, 0xe4, 0xce, 0xe4, 0xf7, 0xc, 0xc6, 0x36, 0x2a, 0x8a, 0x1e, - 0x13, 0xb8, 0x24, 0x8a, 0x34, 0x45, 0x31, 0x1b, 0x38, 0x2c, 0xc5, 0xf7, - 0x10, 0x1f, 0xe, 0xfb, 0x1d, 0xf9, 0xce, 0x1, 0xcf, 0xf8, 0x64, 0x3, - 0xf8, 0x7b, 0xfb, 0x1d, 0x15, 0xb8, 0xa3, 0xfc, 0x37, 0xf9, 0xb6, 0x5e, - 0x70, 0x5, 0xe, 0xfb, 0x79, 0x76, 0xfa, 0x7c, 0x77, 0x68, 0xa, 0xbe, - 0x3, 0xf7, 0xa6, 0xfb, 0x8e, 0x15, 0xbe, 0xfa, 0x7c, 0x58, 0x6, 0xe, - 0xfb, 0x78, 0xbf, 0xf9, 0xf1, 0xc4, 0x1, 0xf7, 0x9f, 0xc5, 0x3, 0xf7, - 0x40, 0xf7, 0x82, 0x15, 0xd9, 0x72, 0x9c, 0x75, 0x2b, 0x1a, 0xfb, 0x50, - 0x7, 0x49, 0xae, 0x46, 0xf7, 0x11, 0x1e, 0xbf, 0x7, 0x4e, 0x8e, 0x62, - 0xae, 0xbb, 0x1a, 0xf7, 0x4d, 0x7, 0xcc, 0x8a, 0xc7, 0x3a, 0xb0, 0x1e, - 0xdc, 0xb4, 0x8c, 0xbe, 0xd1, 0x1a, 0xf7, 0x5c, 0x7, 0xbb, 0xb4, 0x9a, - 0xc8, 0x8e, 0x1e, 0xc4, 0x7, 0xfb, 0x17, 0x6e, 0x4e, 0x41, 0x1f, 0xfb, - 0x50, 0x7, 0x2b, 0x77, 0x75, 0x40, 0x72, 0x1e, 0xe, 0xfb, 0x78, 0xbf, - 0xf9, 0xf5, 0xc0, 0x68, 0xa, 0xc5, 0x3, 0xf7, 0x40, 0xfb, 0x44, 0x15, - 0x57, 0x7, 0xf7, 0x11, 0xae, 0xd0, 0xcd, 0x1f, 0xf7, 0x50, 0x7, 0xeb, - 0x9c, 0xa1, 0xd9, 0xa4, 0x1e, 0xb1, 0x7, 0x40, 0xa4, 0x77, 0xa1, 0xeb, - 0x1a, 0xf7, 0x50, 0x7, 0xd5, 0x6e, 0xc8, 0xfb, 0x17, 0x1e, 0x56, 0x7, - 0xc8, 0x88, 0xb4, 0x78, 0x5b, 0x1a, 0xfb, 0x5c, 0x7, 0x45, 0x8c, 0x58, - 0xdc, 0x62, 0x1e, 0x3a, 0x66, 0x8a, 0x4f, 0x4a, 0x1a, 0xfb, 0x4d, 0x7, - 0x5b, 0x62, 0x68, 0x4e, 0x88, 0x1e, 0xe, 0x3d, 0x77, 0x9f, 0xc1, 0xf9, - 0x2, 0xc1, 0x1, 0xf7, 0x69, 0xc2, 0x3, 0xf7, 0x69, 0x3d, 0x15, 0xf7, - 0x41, 0xc1, 0xfb, 0xa, 0xf9, 0x2, 0xf7, 0xa, 0xc1, 0xfb, 0x41, 0x6, - 0xe, 0x3d, 0xc1, 0xf9, 0x2, 0xc1, 0x1, 0xf7, 0xdf, 0xc2, 0x3, 0xf7, - 0x69, 0x73, 0x15, 0x55, 0xf7, 0x41, 0xf9, 0x6e, 0xfb, 0x41, 0x55, 0xf7, - 0xa, 0xfd, 0x2, 0x7, 0xe, 0xf8, 0x89, 0xb2, 0x1, 0xf7, 0x2d, 0xf8, - 0xf5, 0x15, 0x3b, 0xaf, 0xc3, 0x6f, 0xc4, 0x1b, 0xd5, 0xc0, 0xbc, 0xc6, - 0x9d, 0x1f, 0x61, 0x6, 0x6d, 0x80, 0x64, 0x64, 0x55, 0x1b, 0x60, 0x63, - 0xa5, 0xb6, 0x78, 0x1f, 0xe, 0xfb, 0x2e, 0x76, 0xf9, 0xe6, 0x77, 0x68, - 0xa, 0xbe, 0x3, 0xf7, 0xa6, 0xf7, 0xaf, 0x15, 0xbe, 0xf8, 0x1c, 0x58, - 0x6, 0xfd, 0xe6, 0x4, 0xbe, 0xf8, 0x1c, 0x58, 0x6, 0xe, 0xf7, 0x16, - 0xf7, 0x91, 0x1, 0xf7, 0x40, 0xf7, 0x94, 0x3, 0xf7, 0x40, 0xf7, 0x95, - 0x15, 0x45, 0xc4, 0x52, 0xd2, 0xd3, 0xc3, 0xc4, 0xd1, 0xd1, 0x53, 0xc3, - 0x43, 0x44, 0x52, 0x53, 0x45, 0x1e, 0xe, 0x7c, 0xc0, 0xf7, 0xef, 0xc3, - 0x1, 0xcf, 0xc1, 0xf7, 0xe4, 0xc1, 0x3, 0xf8, 0x89, 0xf7, 0x8, 0x15, - 0x76, 0x74, 0x34, 0x52, 0x3b, 0x1b, 0xfb, 0x19, 0x53, 0xe7, 0xdf, 0xe4, - 0xd4, 0xdd, 0xf7, 0x4, 0xc4, 0xbf, 0x73, 0x67, 0xb5, 0x1f, 0x46, 0xc1, - 0xf7, 0x4d, 0x55, 0x5b, 0x7, 0xaa, 0x5e, 0x5c, 0x9c, 0x51, 0x1b, 0xfb, - 0x3e, 0x45, 0xfb, 0x19, 0x30, 0xfb, 0x28, 0xec, 0x37, 0xf7, 0x24, 0xeb, - 0xcb, 0xab, 0xbb, 0xc9, 0x1f, 0xe, 0xf8, 0x80, 0xc3, 0x1, 0xf7, 0x10, - 0xf7, 0xf4, 0x3, 0xf7, 0x9c, 0xf8, 0x80, 0x15, 0xd6, 0x6, 0xf7, 0x1d, - 0xf7, 0x31, 0x64, 0x9f, 0xfb, 0x1c, 0xfb, 0xd, 0xfb, 0x1f, 0xf7, 0xc, - 0x65, 0x77, 0x5, 0xe, 0xfb, 0x21, 0x76, 0xf7, 0x40, 0xbd, 0xf7, 0xdc, - 0xc0, 0x12, 0xcf, 0xc2, 0xf7, 0x2d, 0xe9, 0x5d, 0xb9, 0xea, 0xc2, 0x13, - 0xfa, 0xf7, 0xab, 0x95, 0x15, 0x86, 0x44, 0x5, 0x9c, 0x92, 0xac, 0x8b, - 0x71, 0x1a, 0x13, 0x72, 0x6d, 0x5d, 0x85, 0x74, 0xa1, 0x1e, 0x7d, 0x65, - 0x5, 0x13, 0x76, 0x79, 0xa9, 0x9d, 0x8a, 0x93, 0x1b, 0xb2, 0xad, 0xad, - 0xb7, 0xb0, 0x73, 0x9f, 0x78, 0x8d, 0x1f, 0xa3, 0x7, 0xde, 0x8f, 0xcd, - 0xa8, 0xc2, 0xb4, 0x75, 0xbf, 0x18, 0x76, 0x72, 0x3c, 0x54, 0x3a, 0x1b, - 0xfb, 0x31, 0x56, 0xf5, 0xc8, 0xdf, 0xdd, 0xd8, 0xf7, 0x7, 0xc4, 0xc0, - 0x7e, 0x69, 0xb7, 0x1f, 0x41, 0xc2, 0xf7, 0x42, 0x54, 0x7, 0x13, 0x4, - 0x5e, 0x7, 0xa8, 0x5c, 0x5b, 0x9b, 0x51, 0x1b, 0xfb, 0x43, 0x46, 0xfb, - 0x11, 0x35, 0xfb, 0x14, 0xec, 0x3a, 0xf7, 0x6, 0x80, 0x1f, 0xe, 0xfb, - 0x2b, 0xb3, 0xbb, 0xb3, 0x12, 0xf7, 0xa5, 0xbd, 0x87, 0xbd, 0x13, 0xd0, - 0xf7, 0x7b, 0xfb, 0x1b, 0x15, 0x80, 0x9c, 0x9d, 0x86, 0x9e, 0x1b, 0xb6, - 0xb4, 0xa7, 0xb8, 0x1f, 0x13, 0xe0, 0xae, 0x71, 0x9d, 0x77, 0x8d, 0x1e, - 0xac, 0x59, 0x7, 0x83, 0x3d, 0x5, 0x8f, 0x98, 0x94, 0x8c, 0x93, 0x1b, - 0x9e, 0x90, 0x7e, 0x80, 0x7a, 0x7c, 0x84, 0x7a, 0x7c, 0x7b, 0x90, 0x93, - 0x81, 0x1f, 0xe, 0x6f, 0x76, 0xf7, 0x22, 0xc2, 0xf7, 0x94, 0xc2, 0x1, - 0xed, 0xc1, 0xf7, 0x8, 0xc3, 0xf7, 0x1, 0xc1, 0x3, 0xf7, 0xa0, 0x5a, - 0x15, 0xc3, 0xf7, 0x22, 0x6, 0xd0, 0x8d, 0xd3, 0xa7, 0xaf, 0xaa, 0x75, - 0xbd, 0x18, 0x6b, 0x57, 0x56, 0x73, 0x4b, 0x1b, 0xfb, 0xb, 0x64, 0xd2, - 0xbe, 0xd3, 0xc3, 0xc9, 0xed, 0xb8, 0xb3, 0x82, 0x71, 0xb5, 0x1f, 0x55, - 0xc1, 0xf7, 0x3c, 0x55, 0x56, 0x7, 0x61, 0xa1, 0x6e, 0x8e, 0x65, 0x8f, - 0x8, 0xf7, 0x32, 0x53, 0xfb, 0x32, 0x7, 0x42, 0x84, 0x2a, 0x52, 0xfb, - 0xf, 0x1a, 0xfb, 0x8, 0xe1, 0x51, 0xdf, 0x86, 0x1e, 0xe, 0xf8, 0xe9, - 0xc4, 0x1, 0xf7, 0x10, 0xf7, 0xf4, 0x3, 0xf7, 0x36, 0xf8, 0x71, 0x15, - 0xf7, 0x1e, 0xf7, 0xc, 0xf7, 0x1d, 0xfb, 0xc, 0xb2, 0x9d, 0xfb, 0x1e, - 0xf7, 0x33, 0x5, 0x40, 0x6, 0xfb, 0x1f, 0xfb, 0x33, 0x5, 0xe, 0xf4, - 0xf7, 0xe, 0xf7, 0x30, 0xf7, 0xe, 0x7a, 0xa, 0xf8, 0x50, 0x15, 0x52, - 0xa, 0xfb, 0xaa, 0x4, 0x52, 0xa, 0xe, 0xf7, 0x6e, 0xf7, 0x37, 0x3, - 0xf7, 0x6e, 0xfb, 0x4, 0x15, 0xca, 0x6, 0xef, 0xf7, 0x7e, 0x5, 0x2e, - 0x6, 0xe, 0x79, 0xb9, 0xe2, 0xc0, 0xf7, 0x84, 0xbb, 0xdb, 0xb7, 0x1, - 0x8b, 0xb9, 0xf2, 0xba, 0xf7, 0xfb, 0xb8, 0x3, 0xf7, 0xab, 0x4, 0xfb, - 0x38, 0xf7, 0x1a, 0xfb, 0x19, 0xf7, 0x3b, 0xf7, 0x35, 0xf7, 0x1e, 0xf7, - 0xe, 0xf7, 0x43, 0xf7, 0x4b, 0xfb, 0x21, 0xf7, 0xa, 0xfb, 0x32, 0xfb, - 0x2f, 0xfb, 0x26, 0xfb, 0xb, 0xfb, 0x4a, 0x1e, 0xb9, 0x16, 0xf7, 0x18, - 0xee, 0xf7, 0x11, 0xf7, 0x30, 0xf7, 0x21, 0xf7, 0x5, 0xfb, 0xc, 0xfb, - 0x1d, 0xfb, 0x22, 0xfb, 0x4, 0xfb, 0x1, 0xfb, 0x22, 0xfb, 0x1b, 0xfb, - 0xc, 0xf7, 0x1, 0xf7, 0x22, 0x1e, 0xf8, 0x7, 0x43, 0x15, 0x6f, 0x71, - 0x64, 0x80, 0x65, 0x1b, 0x4f, 0x51, 0xb6, 0xd2, 0xda, 0xc3, 0xba, 0xc9, - 0xa6, 0xb2, 0x81, 0x75, 0x9e, 0x1f, 0xac, 0xac, 0x5, 0xad, 0x6a, 0x5d, - 0x98, 0x64, 0x1b, 0x33, 0x3e, 0x3f, 0x29, 0x20, 0xdc, 0x4f, 0xdf, 0xbc, - 0xbe, 0x9e, 0xb2, 0xae, 0x1f, 0xe, 0xd7, 0xba, 0xf7, 0xd2, 0xba, 0x1, - 0xe9, 0xba, 0xf7, 0xd2, 0xbb, 0x3, 0xd4, 0xe1, 0x15, 0xab, 0x6f, 0xcc, - 0xca, 0x5, 0x63, 0xc0, 0xb9, 0x86, 0xaa, 0x1b, 0xbd, 0xba, 0x9b, 0xa8, - 0xb1, 0x1f, 0xc9, 0x4c, 0xa9, 0xa8, 0x4b, 0xcb, 0x5, 0xa8, 0xb1, 0x9a, - 0xba, 0xbb, 0x1a, 0xba, 0x7d, 0xba, 0x6d, 0xae, 0x1e, 0xcb, 0xcb, 0x6c, - 0xa8, 0x4d, 0x4c, 0x5, 0xaa, 0x66, 0x5d, 0x99, 0x5b, 0x1b, 0x59, 0x59, - 0x7b, 0x6d, 0x67, 0x1f, 0x4c, 0xcb, 0x6c, 0x6c, 0xcd, 0x4c, 0x5, 0x68, - 0x5f, 0x81, 0x5f, 0x63, 0x1a, 0x5b, 0x9a, 0x5b, 0xaa, 0x67, 0x1e, 0x8c, - 0xf7, 0x16, 0x15, 0xda, 0xc9, 0xdb, 0xee, 0xe9, 0xca, 0x3e, 0x39, 0x2a, - 0x40, 0x4d, 0x38, 0x33, 0x43, 0xd1, 0xe4, 0x1e, 0xe, 0x7c, 0xc2, 0x61, - 0xc2, 0xf7, 0xe1, 0xc7, 0xf7, 0x14, 0xc2, 0x12, 0xa6, 0xc4, 0xf7, 0xf3, - 0xc3, 0x13, 0x7c, 0xf8, 0x47, 0x89, 0x15, 0xf7, 0x1e, 0xc2, 0x39, 0xf8, - 0xd4, 0xfb, 0x4d, 0x54, 0xf7, 0x15, 0xfb, 0x70, 0x6, 0xd7, 0x5e, 0x40, - 0x9b, 0x54, 0x1b, 0xfb, 0x1f, 0x2d, 0x27, 0xfb, 0x15, 0x1f, 0x13, 0xbc, - 0xfb, 0x8, 0xda, 0xfb, 0x8, 0xf7, 0x2a, 0xd3, 0xce, 0xa8, 0xc5, 0xb3, - 0x1e, 0x13, 0x7c, 0xfb, 0xf3, 0xf7, 0x25, 0x15, 0xe7, 0xd1, 0xd8, 0xf2, - 0xf7, 0xf, 0xbd, 0x2b, 0x46, 0x1e, 0x13, 0xbc, 0x21, 0x45, 0x40, 0x24, - 0xfb, 0x5, 0x4f, 0xe5, 0xe2, 0x1e, 0xe, 0xf7, 0xfc, 0xc2, 0xf7, 0x39, - 0x77, 0x1, 0xf7, 0xa5, 0xc2, 0x3, 0xf7, 0xa5, 0x3c, 0x15, 0xc2, 0xf8, - 0x4b, 0xf7, 0x17, 0xc2, 0xfb, 0x17, 0xf7, 0x39, 0x54, 0xfb, 0x39, 0xfb, - 0x18, 0x54, 0xf7, 0x18, 0x6, 0xe, 0xd0, 0xf7, 0xc9, 0xfb, 0x8e, 0xf7, - 0xca, 0x12, 0xf7, 0x21, 0xf7, 0x52, 0x13, 0xa0, 0xf7, 0x21, 0xd0, 0x15, - 0xf7, 0x15, 0xfb, 0x27, 0xc8, 0xf7, 0x27, 0xf7, 0x14, 0x6, 0x13, 0x60, - 0xc6, 0xfb, 0x14, 0x7, 0x13, 0xa0, 0xf7, 0x8e, 0xf7, 0x14, 0x7, 0x13, - 0x60, 0xc7, 0xfb, 0x14, 0xf7, 0x22, 0x4e, 0xfb, 0x22, 0xfb, 0x15, 0x7, - 0x13, 0xa0, 0x4f, 0xf7, 0x15, 0x7, 0x13, 0x60, 0xfb, 0x8e, 0xfb, 0x15, - 0x7, 0xe, 0xf7, 0xa4, 0xc9, 0xf7, 0x76, 0xc9, 0x1, 0xf7, 0xf, 0xc9, - 0xf7, 0x77, 0xcc, 0x3, 0xf7, 0xf, 0xf8, 0x51, 0x15, 0x2c, 0xd6, 0x3a, - 0xf1, 0xeb, 0xdc, 0xd3, 0xf6, 0xd8, 0x58, 0xec, 0xfb, 0x10, 0x25, 0x3e, - 0x3b, 0x2a, 0x1e, 0xc9, 0x16, 0xbc, 0xb0, 0xcd, 0xdb, 0xe0, 0xa4, 0x3d, - 0x66, 0x49, 0x59, 0x5b, 0x4d, 0x46, 0x5d, 0xc5, 0xc3, 0x1e, 0xe, 0xf8, - 0x80, 0xf2, 0x1, 0xf7, 0x27, 0xf7, 0x4, 0xdc, 0xf7, 0x4, 0x3, 0xf7, - 0x27, 0xf8, 0x80, 0x15, 0xf7, 0x4, 0xf2, 0xfb, 0x4, 0x6, 0xf7, 0x55, - 0x24, 0x15, 0xf7, 0x4, 0xf2, 0xfb, 0x4, 0x6, 0xe, 0xbb, 0xf3, 0xd5, - 0xca, 0xd5, 0xf3, 0x1, 0xf7, 0x8a, 0xf3, 0x14, 0xe0, 0xe2, 0xf7, 0x76, - 0x15, 0xf8, 0x3e, 0xca, 0xfc, 0x3e, 0x6, 0xf7, 0x33, 0xf7, 0x12, 0x15, - 0x51, 0xa, 0xfb, 0xcf, 0x4, 0x51, 0xa, 0xe, 0x22, 0x76, 0xf7, 0x20, - 0xbb, 0xf8, 0x4b, 0xbf, 0x9a, 0x77, 0xf7, 0x4, 0x77, 0x12, 0xf7, 0x0, - 0xc0, 0xf7, 0x2, 0xc2, 0xec, 0xc1, 0x62, 0xc3, 0x13, 0xee, 0x80, 0xf6, - 0x99, 0x15, 0xc1, 0xbb, 0x6, 0xab, 0x73, 0xa0, 0x7b, 0xc4, 0x83, 0x8, - 0xfb, 0x20, 0xc2, 0xf7, 0x20, 0x7, 0xf7, 0x4, 0x94, 0xc1, 0xd3, 0xd8, - 0x1a, 0xf7, 0x0, 0xfb, 0x20, 0xa2, 0x48, 0x9f, 0x1e, 0x66, 0x96, 0x34, - 0xa9, 0xbf, 0x1a, 0xc7, 0xcb, 0xa4, 0xce, 0x1e, 0x13, 0xdf, 0x0, 0xc0, - 0xc1, 0x7c, 0x70, 0xa3, 0x1f, 0x58, 0xc1, 0xf7, 0x34, 0x55, 0x5b, 0x7, - 0x13, 0xee, 0x80, 0x74, 0xa0, 0x60, 0x94, 0x6b, 0x8e, 0x8, 0xf6, 0x54, - 0x20, 0x7, 0x4b, 0x29, 0x64, 0x24, 0x1f, 0x8b, 0x7, 0x43, 0xcf, 0x62, - 0xee, 0x70, 0x1e, 0xd5, 0x76, 0xe2, 0x74, 0x50, 0x1a, 0x47, 0x51, 0x65, - 0x45, 0x4f, 0x53, 0xa5, 0xb0, 0x6c, 0x1e, 0xc3, 0x55, 0x7, 0xe, 0xf8, - 0x71, 0xf2, 0x1, 0xf7, 0x8c, 0xf2, 0x3, 0xf7, 0x8c, 0xf8, 0x71, 0x15, - 0xf2, 0xf2, 0x24, 0x6, 0xe, 0x74, 0xa, 0xf7, 0xa6, 0x73, 0xa, 0xc1, - 0xfb, 0x44, 0xf8, 0x8, 0xfb, 0x5b, 0x55, 0xf7, 0x24, 0xfb, 0xd2, 0xfb, - 0x47, 0x6, 0xe, 0x7f, 0xc1, 0xf7, 0x3c, 0xc2, 0xf7, 0x12, 0xc3, 0x1, - 0xca, 0xc4, 0x3, 0xf7, 0xc, 0xf7, 0x66, 0x15, 0xf8, 0x2e, 0x6, 0xf7, - 0x12, 0x48, 0xf7, 0x3, 0xfb, 0x35, 0xfb, 0x19, 0x21, 0x2f, 0xfb, 0x1e, - 0xfb, 0xa, 0xd0, 0xfb, 0x3, 0xf7, 0x43, 0xdc, 0xdf, 0x99, 0xac, 0xcb, - 0x1e, 0x7a, 0xc0, 0x5, 0x64, 0x41, 0x39, 0x84, 0x5c, 0x1b, 0x5c, 0x5e, - 0x91, 0xa3, 0x65, 0x1f, 0x67, 0xa2, 0x6d, 0xc1, 0xc0, 0x1a, 0x8d, 0xca, - 0x15, 0xc6, 0x93, 0xc6, 0xce, 0xf7, 0x5, 0x1b, 0xf7, 0x1e, 0xaa, 0x26, - 0x72, 0x1f, 0xe, 0x5a, 0xa, 0xf7, 0x46, 0xf8, 0x81, 0x15, 0xf7, 0xb9, - 0xf2, 0x69, 0xd7, 0xfb, 0xa3, 0xfb, 0x28, 0x5, 0x5a, 0xfb, 0xd9, 0x22, - 0xa, 0x5a, 0xa, 0xf7, 0x2c, 0xf8, 0x7d, 0x15, 0xf7, 0x2c, 0xf7, 0xa, - 0xf7, 0x29, 0xfb, 0xa, 0xb6, 0x9d, 0xfb, 0x2c, 0xf7, 0x31, 0x5, 0x3a, - 0x6, 0xfb, 0x2d, 0xfb, 0x31, 0x5, 0x92, 0xfb, 0xc8, 0x22, 0xa, 0x5e, - 0xa, 0xdc, 0xf7, 0x7, 0x56, 0xa, 0xf7, 0xde, 0xf8, 0xa6, 0x59, 0xa, - 0x4d, 0xfc, 0x52, 0x22, 0xa, 0x7c, 0x82, 0xa, 0xf7, 0x1f, 0xc3, 0x56, - 0xa, 0xf7, 0x31, 0xf8, 0xe8, 0x15, 0xf7, 0xb9, 0x24, 0x97, 0xaa, 0xfb, - 0xa3, 0xf7, 0x28, 0x5, 0x41, 0xfc, 0x6d, 0x22, 0xa, 0x7c, 0xbd, 0xf7, - 0x8a, 0xc2, 0xf7, 0x7e, 0xbf, 0x12, 0xf1, 0xc4, 0x61, 0xc5, 0xf7, 0x8c, - 0xc6, 0x61, 0xc5, 0x13, 0xf2, 0xf7, 0x56, 0xf7, 0xcc, 0x15, 0x75, 0x7e, - 0x45, 0x5c, 0x2b, 0x1a, 0x30, 0xc7, 0x3b, 0xf7, 0x1c, 0xf7, 0x15, 0xd2, - 0xd5, 0xee, 0xea, 0x4b, 0xb7, 0x67, 0x9a, 0x1e, 0x13, 0xec, 0xaa, 0x96, - 0xc0, 0xb9, 0xe2, 0x1a, 0xc9, 0x5e, 0xf3, 0xfb, 0x1b, 0x22, 0x3b, 0x49, - 0x27, 0x4a, 0xb8, 0x50, 0xab, 0x77, 0x1e, 0x13, 0xf2, 0x68, 0xfb, 0x2e, - 0x15, 0xcf, 0xc9, 0xc2, 0xd9, 0xd9, 0xca, 0x54, 0x47, 0x47, 0x4c, 0x54, - 0x3d, 0x3d, 0x4d, 0xc2, 0xcf, 0x1e, 0x13, 0xec, 0x9b, 0xf7, 0xbe, 0x15, - 0xcd, 0xc3, 0xbb, 0xcf, 0xcf, 0xc3, 0x5b, 0x49, 0x49, 0x53, 0x55, 0x47, - 0x47, 0x53, 0xc1, 0xcd, 0x1e, 0xe, 0x7c, 0xf7, 0x12, 0x1, 0xb0, 0xf7, - 0x11, 0xd4, 0xf7, 0x14, 0xd4, 0xf7, 0x13, 0x3, 0xf8, 0x48, 0xba, 0x15, - 0x6c, 0xa4, 0x6c, 0xb3, 0xa9, 0xab, 0xa5, 0xae, 0xac, 0x72, 0xab, 0x65, - 0x67, 0x6f, 0x6e, 0x68, 0x1e, 0xfb, 0x5d, 0x16, 0x6c, 0xa4, 0x6c, 0xb4, - 0xaa, 0xaa, 0xa5, 0xae, 0xac, 0x73, 0xab, 0x65, 0x65, 0x6f, 0x6e, 0x68, - 0x1e, 0xfb, 0x5a, 0x16, 0x6c, 0xa3, 0x6c, 0xb3, 0xaa, 0xa9, 0xa5, 0xae, - 0xac, 0x73, 0xab, 0x65, 0x67, 0x70, 0x6e, 0x68, 0x1e, 0xe, 0xf7, 0x7b, - 0xc1, 0x1, 0x8b, 0xf8, 0xec, 0x3, 0xf7, 0x7b, 0x4, 0xf8, 0xec, 0xc1, - 0xfc, 0xec, 0x6, 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0xd6, 0xf8, 0x56, 0x3, - 0xd6, 0xf7, 0x7b, 0x15, 0xf8, 0x56, 0xc1, 0xfc, 0x56, 0x6, 0xe, 0xf7, - 0x1e, 0xc7, 0xf7, 0x8, 0xc8, 0x1, 0xe5, 0xf8, 0x37, 0x3, 0xe5, 0xf7, - 0xcf, 0x15, 0xf8, 0x37, 0xc8, 0xfc, 0x37, 0x6, 0xfb, 0x82, 0x4, 0xf8, - 0x37, 0xc7, 0xfc, 0x37, 0x6, 0xe, 0x7c, 0xbf, 0xf7, 0xe3, 0xbf, 0x1, - 0xc9, 0xc0, 0xf8, 0x0, 0xc6, 0x3, 0xf7, 0x6f, 0xf8, 0x59, 0x15, 0xf4, - 0xd1, 0xd5, 0x5c, 0xb1, 0x3a, 0x91, 0x7e, 0x19, 0xa9, 0x67, 0x4f, 0x97, - 0x58, 0x1b, 0xfb, 0x36, 0x44, 0xfb, 0xd, 0x28, 0xfb, 0x1b, 0xf1, 0x37, - 0xf7, 0x1a, 0xf7, 0x3a, 0xd3, 0xf7, 0x7, 0xf7, 0xd, 0x8d, 0x1f, 0x8e, - 0x7, 0xe5, 0x65, 0xf7, 0x2c, 0xfb, 0x11, 0xe6, 0x1e, 0xe1, 0xc5, 0x71, - 0xb9, 0xfb, 0x2, 0x42, 0x66, 0x9e, 0x53, 0x96, 0x61, 0x91, 0x19, 0x79, - 0x5c, 0xaa, 0x88, 0xb3, 0x82, 0xa9, 0x7e, 0x19, 0x3b, 0x51, 0x5, 0x3d, - 0xfb, 0xb6, 0x15, 0xea, 0xcc, 0xd4, 0xf7, 0x2, 0xf7, 0x2c, 0xb0, 0x22, - 0x4d, 0x26, 0x3f, 0x48, 0x23, 0xfb, 0x2, 0x41, 0xd6, 0xe7, 0x1e, 0xe, - 0x7c, 0xf7, 0x14, 0xf8, 0x64, 0x77, 0x12, 0xf7, 0x80, 0xf7, 0x14, 0x2c, - 0xcd, 0x13, 0xd0, 0xf7, 0xaa, 0xf7, 0x49, 0x15, 0xbb, 0x6, 0x9d, 0xf8, - 0x18, 0x5, 0x37, 0x6, 0x13, 0xe0, 0x73, 0xfc, 0x9d, 0x15, 0x6c, 0xa4, - 0x6b, 0xb2, 0x1e, 0xb3, 0xa3, 0xaa, 0xac, 0xab, 0x6d, 0xab, 0x6b, 0x1f, - 0x13, 0x60, 0x60, 0x74, 0x69, 0x6c, 0x1f, 0xe, 0xfb, 0x1c, 0x76, 0xf8, - 0x67, 0xf7, 0xc, 0x1, 0xf7, 0xa2, 0xc8, 0x3, 0xf7, 0x80, 0xf8, 0x5, - 0x15, 0x6b, 0xa7, 0x70, 0xaf, 0xb5, 0xa1, 0xa9, 0xa9, 0xa9, 0x71, 0xa9, - 0x64, 0x63, 0x74, 0x6f, 0x6a, 0x1e, 0xa4, 0xfc, 0xa2, 0x15, 0xd9, 0x6, - 0x7b, 0xf8, 0x21, 0x5, 0x5f, 0x6, 0xe, 0x8b, 0xc2, 0xf7, 0xd8, 0xc2, - 0xf7, 0x1f, 0xc2, 0x1, 0xf7, 0x58, 0xc3, 0x3, 0xe6, 0x16, 0xf8, 0xd, - 0xc2, 0xfb, 0x6c, 0xf7, 0xd8, 0xf7, 0x62, 0xc2, 0xfb, 0x62, 0x6, 0x8c, - 0xf7, 0x11, 0x8a, 0x98, 0xf7, 0x7, 0x8c, 0x8, 0xb1, 0xc9, 0x81, 0x85, - 0xaf, 0x1f, 0x90, 0xc3, 0x5, 0x90, 0x6a, 0x45, 0x95, 0x63, 0x1b, 0xfb, - 0x20, 0x8c, 0x6f, 0x6a, 0x8a, 0xfb, 0x36, 0x8, 0x22, 0x54, 0xf4, 0xfb, - 0xd8, 0x22, 0x6, 0xe, 0x8b, 0xc0, 0xf7, 0xd5, 0xc0, 0xde, 0xf7, 0xd, - 0x1, 0xf7, 0x1, 0xc2, 0xf7, 0xa3, 0xc2, 0x3, 0xf8, 0x37, 0xf8, 0x92, - 0x15, 0xd2, 0xf7, 0xb, 0x44, 0x6, 0x33, 0xfd, 0x9, 0x15, 0xf7, 0x9e, - 0xc0, 0x20, 0xf8, 0xa, 0xfb, 0x1c, 0x56, 0xdc, 0xfb, 0xd5, 0x23, 0x6, - 0xfb, 0xdc, 0x56, 0x48, 0xa, 0x4a, 0xa, 0x7c, 0xc3, 0xf7, 0xa5, 0xc9, - 0xf7, 0x40, 0xc6, 0x1, 0xf7, 0x14, 0xc9, 0xf7, 0x8d, 0xc9, 0x3, 0xec, - 0xa7, 0x15, 0x6c, 0xd2, 0xc5, 0x7f, 0xc2, 0x1b, 0xf7, 0x1c, 0xe0, 0xdc, - 0xf7, 0x9, 0x8a, 0x1f, 0xf7, 0xc, 0x8a, 0x38, 0xd4, 0xfb, 0x5, 0x1b, - 0x63, 0x6b, 0x80, 0x76, 0x61, 0x1f, 0xf7, 0x60, 0xf7, 0xa8, 0xc6, 0xfb, - 0xe6, 0xfb, 0xd5, 0x7, 0xb5, 0x73, 0x5, 0xaf, 0xb6, 0xbb, 0x9b, 0xb6, - 0x1b, 0xd6, 0xc7, 0x5b, 0x35, 0x2b, 0x42, 0x61, 0x36, 0x8a, 0x1f, 0x55, - 0x8a, 0x51, 0x9a, 0x58, 0xaa, 0x8, 0xe, 0x8b, 0xc2, 0xf7, 0xd3, 0xc0, - 0xf7, 0x26, 0xc3, 0x8d, 0x77, 0x12, 0xf7, 0x1, 0xc2, 0xf7, 0xa5, 0xc1, - 0x13, 0xec, 0xf7, 0xdf, 0x16, 0xf7, 0x9e, 0xc2, 0x21, 0xf8, 0xd2, 0xfb, - 0x25, 0x53, 0xe6, 0xfc, 0x9a, 0x21, 0x6, 0xfb, 0xdc, 0x54, 0x48, 0xa, - 0x13, 0xdc, 0x4a, 0xa, 0xfb, 0x23, 0xc6, 0xf8, 0x4b, 0xc4, 0xf7, 0x2d, - 0xc4, 0x1, 0xab, 0xf8, 0xab, 0x3, 0xbf, 0x37, 0x15, 0x77, 0x50, 0x5, - 0xd0, 0x6, 0xf7, 0x2c, 0x9c, 0xc7, 0xf7, 0x2, 0x9f, 0x1f, 0xc6, 0xf7, - 0xdc, 0x5, 0xf6, 0x6, 0x92, 0xc4, 0x5, 0x23, 0x6, 0xf7, 0x7, 0xa2, - 0x84, 0xb1, 0xf7, 0x5, 0x1b, 0x9d, 0xa8, 0x88, 0x8a, 0x9d, 0x1f, 0x99, - 0xc5, 0x4f, 0x8e, 0x5, 0x54, 0x52, 0x86, 0x64, 0x66, 0x1f, 0x62, 0x61, - 0x88, 0x4b, 0x80, 0x4f, 0x8, 0xfb, 0x0, 0x6, 0x85, 0x52, 0x5, 0xf3, - 0x6, 0x51, 0xfb, 0xd5, 0x77, 0xfb, 0x6, 0x59, 0x78, 0xfb, 0x5, 0x9a, - 0x19, 0xe, 0x95, 0xc3, 0xf7, 0x16, 0xc7, 0xf8, 0x2, 0x77, 0x1, 0xf7, - 0xfe, 0xc9, 0x3, 0xe4, 0xf7, 0x4f, 0x15, 0xf7, 0xa5, 0xfb, 0x17, 0xfb, - 0x2, 0x53, 0xf7, 0x97, 0xc3, 0x34, 0xf7, 0x17, 0xe2, 0xc7, 0x34, 0xf8, - 0xb, 0x34, 0x6, 0xfb, 0x8c, 0xfc, 0x11, 0x5, 0xcc, 0x91, 0x15, 0xf7, - 0x64, 0xf7, 0xd1, 0x5, 0xfb, 0xd1, 0x7, 0xe, 0x52, 0xf9, 0x66, 0x1, - 0xe6, 0xf8, 0x35, 0x3, 0xe6, 0x66, 0x15, 0xb3, 0x77, 0xf8, 0xd, 0xf9, - 0x50, 0x64, 0xa1, 0x5, 0xe, 0xfb, 0x31, 0xbe, 0xf7, 0x37, 0xbf, 0xf7, - 0xac, 0xbf, 0x7f, 0x77, 0x12, 0xb2, 0xc0, 0xf7, 0xf5, 0xc0, 0x13, 0xdc, - 0xde, 0x3c, 0x15, 0x80, 0x59, 0x50, 0xa, 0x41, 0x7, 0x13, 0xec, 0xbc, - 0x70, 0x43, 0xb0, 0x44, 0xa, 0x70, 0x31, 0x48, 0x2c, 0x9b, 0x96, 0x57, - 0x1e, 0x94, 0xf7, 0xda, 0x15, 0xe0, 0xde, 0xc4, 0xe9, 0xf7, 0x8, 0xc4, - 0x69, 0xa, 0xe, 0xfb, 0x31, 0xbe, 0x8b, 0xf7, 0x37, 0x8b, 0xbf, 0xf7, - 0xac, 0xbf, 0x7f, 0x77, 0xab, 0xbd, 0x12, 0xb2, 0xc0, 0xf7, 0xf5, 0xc0, - 0x13, 0xef, 0xde, 0x43, 0x15, 0x80, 0x52, 0x50, 0xa, 0x55, 0x7, 0x13, - 0xf7, 0xae, 0x6a, 0x49, 0xaa, 0x44, 0xa, 0x6f, 0x31, 0x8c, 0x1e, 0x48, - 0x8c, 0x2c, 0x9f, 0x57, 0x96, 0x8, 0x94, 0xf7, 0xd5, 0x15, 0xe0, 0xde, - 0xc4, 0xe9, 0xf7, 0x1e, 0xae, 0x69, 0xa, 0xf7, 0x43, 0xf7, 0x88, 0x37, - 0xa, 0x7c, 0xc0, 0x63, 0xc3, 0xf7, 0xdf, 0xc2, 0xf7, 0x1a, 0xc2, 0x12, - 0xf7, 0x3, 0xc2, 0xd9, 0xc4, 0xf7, 0x17, 0xc2, 0xa7, 0xc2, 0x13, 0x7f, - 0xa9, 0x89, 0x15, 0xf7, 0x1c, 0xf8, 0x77, 0x6, 0xde, 0xa1, 0x95, 0xf2, - 0xd8, 0xcb, 0x88, 0x56, 0x59, 0x5e, 0x88, 0x55, 0x72, 0x1e, 0x5e, 0x77, - 0x5f, 0x72, 0x58, 0x1a, 0x4d, 0xc1, 0x6f, 0xbb, 0x78, 0x1e, 0xf7, 0x17, - 0x59, 0xb1, 0x80, 0x5d, 0x1a, 0x13, 0xbf, 0x4f, 0x4f, 0x70, 0x48, 0x88, - 0x1e, 0x45, 0x88, 0x41, 0xa7, 0x74, 0xa4, 0x75, 0x54, 0x18, 0x6d, 0xb2, - 0xd2, 0x79, 0xd0, 0x1b, 0xec, 0xea, 0xb8, 0xf4, 0xd7, 0x38, 0xaa, 0x40, - 0xa4, 0x1f, 0x4f, 0x9f, 0x58, 0x9a, 0xb4, 0x1a, 0xb3, 0xbb, 0x97, 0xbd, - 0x9f, 0x1e, 0xc4, 0xa2, 0xaa, 0x9a, 0xce, 0x1a, 0xdf, 0x35, 0xa4, 0x2b, - 0xfb, 0x3a, 0x6f, 0x6b, 0xfb, 0x31, 0x1e, 0x3a, 0x54, 0xdc, 0x6, 0x13, - 0x7f, 0xfb, 0xdf, 0x3a, 0x7, 0xe, 0x6e, 0xa, 0xf8, 0x20, 0xf8, 0x85, - 0x15, 0x9c, 0xa8, 0xfb, 0x49, 0xf7, 0x26, 0x5d, 0x46, 0x5, 0xe, 0xb5, - 0xd0, 0xf7, 0xbf, 0xc9, 0x1, 0xf8, 0x44, 0xce, 0x3, 0xf8, 0x87, 0xf7, - 0xbd, 0x15, 0xfc, 0x22, 0xf7, 0x43, 0x5, 0x4d, 0x7, 0xf7, 0xdf, 0xfb, - 0x2b, 0xfb, 0xdf, 0xfb, 0x28, 0x5, 0x46, 0x7, 0xf8, 0x22, 0xf7, 0x46, - 0x5, 0xe, 0x7b, 0xa, 0xf7, 0x95, 0xf7, 0x96, 0x15, 0xf7, 0x7e, 0xfb, - 0x50, 0x9c, 0xba, 0xfb, 0x3d, 0xf7, 0x21, 0xf7, 0x3d, 0xf7, 0x21, 0x78, - 0xba, 0x5, 0xfc, 0x21, 0xfb, 0x50, 0x15, 0xf7, 0x79, 0xfb, 0x50, 0xa0, - 0xba, 0xfb, 0x40, 0xf7, 0x21, 0xf7, 0x3d, 0xf7, 0x1f, 0x75, 0xbc, 0x5, - 0xe, 0x7b, 0xa, 0xf7, 0x2, 0xd1, 0x15, 0xf7, 0x7d, 0xf7, 0x50, 0xfb, - 0x7d, 0xf7, 0x50, 0x79, 0x5c, 0xf7, 0x3d, 0xfb, 0x21, 0xfb, 0x3d, 0xfb, - 0x21, 0x5, 0xf7, 0x51, 0x5c, 0x15, 0xf7, 0x77, 0xf7, 0x50, 0xfb, 0x73, - 0xf7, 0x50, 0x73, 0x5a, 0xf7, 0x3d, 0xfb, 0x1f, 0xfb, 0x40, 0xfb, 0x21, - 0x5, 0xe, 0xd1, 0xf8, 0xc, 0x1, 0xf7, 0x2b, 0xf7, 0xbd, 0x3, 0xf7, - 0x2b, 0xf7, 0x96, 0x15, 0xf7, 0xa3, 0xfb, 0x50, 0xa5, 0xb3, 0xfb, 0x66, - 0xf7, 0x28, 0xf7, 0x66, 0xf7, 0x27, 0x71, 0xb4, 0x5, 0xe, 0xd1, 0xf8, - 0xc, 0x1, 0xf7, 0x2f, 0xf7, 0xba, 0x3, 0xf7, 0x46, 0xd1, 0x15, 0xf7, - 0xa3, 0xf7, 0x50, 0xfb, 0xa3, 0xf7, 0x50, 0x70, 0x62, 0xf7, 0x67, 0xfb, - 0x27, 0xfb, 0x63, 0xfb, 0x28, 0x5, 0xe, 0x8b, 0xc2, 0xf7, 0xf0, 0xc2, - 0xf7, 0x8, 0xc2, 0x1, 0xf5, 0xc3, 0xf7, 0xab, 0xc3, 0x3, 0x9e, 0x16, - 0xf7, 0x83, 0xc2, 0x2b, 0xf7, 0x99, 0x6, 0xb6, 0xbb, 0xcb, 0xb7, 0xce, - 0x1b, 0xe0, 0x9a, 0x59, 0x54, 0x1f, 0xfb, 0x87, 0x36, 0x54, 0xf7, 0x76, - 0xc2, 0x36, 0xf7, 0x9d, 0x7, 0xca, 0x6e, 0xd6, 0xfb, 0x13, 0x4a, 0x4e, - 0x66, 0x5e, 0x56, 0x1e, 0xf7, 0x91, 0xfb, 0x24, 0x54, 0xe3, 0xfc, 0x9b, - 0x34, 0x7, 0xe, 0xf8, 0x85, 0xf7, 0x43, 0x1, 0xf7, 0x17, 0xf7, 0xe6, - 0x3, 0xf7, 0x17, 0xf8, 0x9d, 0x71, 0xa, 0x7d, 0xfb, 0x2b, 0x71, 0xa, - 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0xf2, 0xf8, 0x1e, 0x3, 0xf2, 0xf7, 0x7b, - 0x15, 0xf8, 0x1e, 0xc1, 0xfc, 0x1e, 0x6, 0xe, 0x8b, 0xc2, 0xf7, 0xd9, - 0xc2, 0xed, 0xf7, 0x10, 0x81, 0xa, 0xf7, 0x95, 0x7e, 0xa, 0xfb, 0x36, - 0xfd, 0x25, 0x15, 0xf8, 0x2e, 0xc2, 0xfb, 0x43, 0xf8, 0x10, 0xfb, 0x5d, - 0x54, 0xf7, 0x24, 0xfb, 0xd9, 0xfb, 0x46, 0x6, 0xe, 0x6f, 0xa, 0xf7, - 0x31, 0xf8, 0x82, 0x15, 0xf7, 0xb7, 0xf1, 0x69, 0xd7, 0xfb, 0xa1, 0xfb, - 0x27, 0x5, 0x59, 0xfc, 0xa1, 0x15, 0x35, 0xa, 0xe, 0x8b, 0xc2, 0xf7, - 0xdd, 0x82, 0xa, 0x68, 0xa, 0xc3, 0x3, 0xe9, 0xf8, 0x86, 0x15, 0xb4, - 0x79, 0xf7, 0x29, 0xf7, 0xa, 0xf7, 0x27, 0xfb, 0xa, 0xb6, 0x9d, 0xfb, - 0x29, 0xf7, 0x30, 0x5, 0x3a, 0x6, 0xfb, 0x29, 0xfd, 0x22, 0x15, 0x35, - 0xa, 0xe, 0x8b, 0xc2, 0xf7, 0xdb, 0xc2, 0xe8, 0xf7, 0x7, 0x12, 0xf7, - 0x3a, 0xe2, 0xa0, 0xc3, 0x7e, 0xe0, 0x13, 0xf8, 0xea, 0x16, 0x35, 0xa, - 0x13, 0xf4, 0xf7, 0x72, 0xf8, 0x6f, 0x59, 0xa, 0xe, 0x6f, 0xa, 0xf7, - 0x1c, 0xf8, 0xe8, 0x15, 0xf7, 0xb9, 0x25, 0x96, 0xaa, 0xfb, 0xa2, 0xf7, - 0x27, 0x5, 0x40, 0xfd, 0x34, 0x15, 0x35, 0xa, 0xe, 0xfb, 0x31, 0xc1, - 0xf8, 0x76, 0xc5, 0xee, 0xf7, 0x10, 0x1, 0xf7, 0x18, 0xc4, 0xf7, 0xa9, - 0xc7, 0x3, 0xf7, 0x8, 0x7e, 0xa, 0x60, 0xfd, 0x8c, 0x15, 0x55, 0xf7, - 0x3f, 0xc1, 0x54, 0xf8, 0xae, 0x25, 0x54, 0xb8, 0xfc, 0x77, 0x7, 0xf7, - 0xbc, 0xf9, 0x17, 0x15, 0xd5, 0xf7, 0x9, 0x41, 0x6, 0xfb, 0x2, 0xfd, - 0x7a, 0x15, 0x7c, 0x55, 0x5, 0x85, 0x91, 0xb6, 0x7f, 0xbf, 0x1b, 0xef, - 0xa1, 0xbd, 0xf7, 0xc, 0x1f, 0xf8, 0x3c, 0xfb, 0x32, 0x51, 0xed, 0xfb, - 0xf4, 0x7, 0x32, 0x88, 0x62, 0x50, 0x56, 0x89, 0x93, 0x95, 0x6c, 0x1e, - 0xe, 0xfb, 0x31, 0xc1, 0xf8, 0x7b, 0xc0, 0xf2, 0xf7, 0x9, 0x1, 0xf8, - 0x28, 0xc7, 0x3, 0xf8, 0x2, 0xf8, 0xb0, 0x15, 0xd5, 0xf7, 0x9, 0x41, - 0x6, 0xfb, 0x70, 0xfd, 0x7a, 0x15, 0x81, 0x53, 0x5, 0x82, 0xb5, 0xbf, - 0x84, 0xbf, 0x1b, 0xef, 0xdd, 0xbd, 0xf7, 0xc, 0x1f, 0xf8, 0x3c, 0xfb, - 0xd2, 0x56, 0xf7, 0x96, 0xfb, 0xf9, 0x7, 0x32, 0x53, 0x62, 0x49, 0x56, - 0x5b, 0x96, 0x92, 0x68, 0x1e, 0xe, 0x8b, 0xc2, 0xf7, 0xda, 0xc2, 0xf7, - 0x1e, 0xc2, 0x1, 0xf7, 0xa, 0xc3, 0x3, 0xaa, 0x16, 0xf7, 0x23, 0xf7, - 0x5a, 0x6, 0xc5, 0xb5, 0xb4, 0x6a, 0xe0, 0x32, 0xbd, 0x4c, 0x19, 0x52, - 0x54, 0xf7, 0x6d, 0xc2, 0x2c, 0x6, 0x4d, 0xda, 0x4b, 0xd3, 0x3f, 0xc9, - 0xf7, 0x33, 0xf7, 0x5, 0x18, 0xee, 0xc2, 0xfb, 0x72, 0x54, 0xba, 0x6, - 0xfb, 0x48, 0xfb, 0x14, 0x5, 0xf8, 0xc, 0xfb, 0x23, 0x54, 0xe2, 0xfc, - 0x9b, 0x34, 0x7, 0xe, 0x8b, 0xc2, 0xf8, 0x9b, 0xc2, 0x68, 0xa, 0x73, - 0xa, 0xc2, 0xfb, 0x44, 0xf8, 0xd2, 0xfb, 0x6b, 0x54, 0xf7, 0x34, 0xfc, - 0x9b, 0xfb, 0x47, 0x6, 0xe, 0xb5, 0xc9, 0xf7, 0xbf, 0xd0, 0x1, 0xf0, - 0xce, 0x3, 0xf0, 0xf7, 0x6d, 0x15, 0xf8, 0x22, 0xfb, 0x43, 0x5, 0xc9, - 0x7, 0xfb, 0xdf, 0xf7, 0x2b, 0xf7, 0xdf, 0xf7, 0x28, 0x5, 0xd0, 0x7, - 0xfc, 0x22, 0xfb, 0x46, 0x5, 0xe, 0x76, 0xbe, 0xf7, 0x37, 0xc3, 0xd7, - 0xc5, 0xf7, 0x3e, 0xc5, 0x1, 0xf7, 0x39, 0xc2, 0x3, 0xd6, 0xaa, 0x15, - 0xa5, 0x57, 0xa8, 0x94, 0xd8, 0xac, 0xb0, 0x8a, 0x19, 0xaf, 0x8a, 0x90, - 0x8c, 0xad, 0x7a, 0x8, 0x81, 0x9f, 0x9f, 0x7d, 0xbc, 0x1b, 0xb6, 0xb6, - 0x9d, 0xa7, 0xaa, 0x1f, 0x76, 0xb8, 0x5, 0x7f, 0x7a, 0x61, 0x6f, 0x68, - 0x1b, 0x69, 0x81, 0x93, 0x9f, 0x6c, 0x1f, 0x99, 0x75, 0x73, 0x90, 0x7c, - 0x1b, 0x6a, 0x6f, 0x84, 0x7a, 0x67, 0x1f, 0xc3, 0xb7, 0x9b, 0xa9, 0x86, - 0xcd, 0x8, 0xf7, 0x19, 0xc3, 0xfb, 0x1d, 0x6, 0x87, 0x97, 0x88, 0xaf, - 0x88, 0xa7, 0x8, 0xf7, 0x27, 0xc5, 0x6, 0xfb, 0x2d, 0x8c, 0x5, 0x89, - 0xa3, 0x89, 0x97, 0x97, 0x1a, 0xe8, 0xc6, 0xa7, 0xbe, 0xbe, 0xbd, 0x72, - 0x59, 0xa4, 0x1e, 0xc0, 0x9e, 0x5, 0xc4, 0x70, 0x50, 0xc4, 0x2f, 0x1b, - 0x22, 0x4e, 0x3f, 0x36, 0x7b, 0x8d, 0x78, 0x8e, 0x6c, 0x1f, 0x2e, 0x4f, - 0xef, 0x6, 0x8f, 0x6f, 0x8b, 0x69, 0x8f, 0x7e, 0x8, 0xfb, 0x0, 0x53, - 0xf7, 0x4, 0x6, 0x96, 0x4c, 0x53, 0x5a, 0x46, 0x59, 0x8, 0xe, 0xf7, - 0xc7, 0xc9, 0x1, 0xf8, 0x54, 0xc2, 0x3, 0xf8, 0x54, 0xf7, 0xc7, 0x15, - 0xfb, 0x5b, 0xc2, 0xf7, 0x99, 0xfc, 0x3e, 0x4d, 0x7, 0xe, 0x8b, 0xc3, - 0xf8, 0x99, 0xc3, 0x1, 0xf7, 0xa5, 0x73, 0xa, 0xc3, 0xfb, 0x45, 0xf7, - 0x88, 0x6, 0xf7, 0x18, 0xc0, 0x5, 0xc3, 0x7, 0xfb, 0x18, 0x55, 0x5, - 0xf7, 0xa6, 0xfb, 0x78, 0x53, 0xf7, 0x41, 0xfb, 0x84, 0x7, 0xfb, 0x19, - 0x55, 0x5, 0x54, 0x7, 0xf7, 0x19, 0xc1, 0x5, 0xfb, 0x72, 0xfb, 0x46, - 0x7, 0xe, 0x8b, 0xc2, 0xf7, 0xdf, 0xc2, 0x1, 0xc2, 0xc4, 0xf7, 0x3c, - 0xc3, 0xf7, 0x2c, 0xc4, 0x3, 0xc2, 0x16, 0xf7, 0xd, 0xc1, 0x4b, 0xf7, - 0xa2, 0x6, 0xa7, 0x9f, 0xa1, 0xad, 0xba, 0x1b, 0xd0, 0x95, 0x40, 0x81, - 0x1f, 0xfb, 0xc1, 0xf7, 0xd, 0xc2, 0x4a, 0xf7, 0x96, 0x7, 0x96, 0xa7, - 0xca, 0xc4, 0xc9, 0x90, 0x54, 0x75, 0x1e, 0xfb, 0xca, 0xf7, 0x4, 0xc2, - 0x54, 0xf7, 0x96, 0x7, 0xcd, 0x6a, 0xc9, 0x3d, 0x56, 0x6e, 0x68, 0x68, - 0x6f, 0x1e, 0xaf, 0x7c, 0x62, 0xad, 0x55, 0x1b, 0x5e, 0x6f, 0x6f, 0x6e, - 0x6e, 0x1f, 0xb7, 0xfb, 0x4, 0x55, 0xc2, 0x7, 0xe, 0xf8, 0xa1, 0xb3, - 0x1, 0xf7, 0xc, 0xf7, 0xfc, 0x3, 0xf7, 0xc, 0xf8, 0xa1, 0x15, 0xf7, - 0xfc, 0xb3, 0xfb, 0xfc, 0x6, 0xe, 0xf7, 0x7c, 0xbe, 0x1, 0xdb, 0xf8, - 0x4c, 0x3, 0xdb, 0xf7, 0x7c, 0x15, 0xf8, 0x4c, 0xbe, 0xfc, 0x4c, 0x6, - 0xe, 0xfb, 0x1c, 0x76, 0xf7, 0x2c, 0xbf, 0x62, 0xb4, 0x62, 0xc1, 0xf7, - 0xcd, 0xc0, 0x12, 0xf7, 0x3, 0xc2, 0xf7, 0x9f, 0xc2, 0x13, 0xce, 0xf7, - 0x3a, 0xae, 0x15, 0x6f, 0xa7, 0xb1, 0x7f, 0xb3, 0x1b, 0xc8, 0xcb, 0xae, - 0xc5, 0xaf, 0x1f, 0x13, 0xae, 0x39, 0xf7, 0x1d, 0x7, 0x13, 0x9e, 0xc1, - 0x39, 0xf8, 0x2, 0xfb, 0x1d, 0x56, 0xdd, 0xfb, 0x18, 0x7, 0x13, 0xce, - 0x5a, 0x68, 0xfb, 0x25, 0xfb, 0x11, 0x49, 0x62, 0xb8, 0xc6, 0x1e, 0xf7, - 0xa7, 0xfb, 0x1d, 0x56, 0xdd, 0xfc, 0xa6, 0xc2, 0x7, 0xe, 0xc9, 0x76, - 0x1, 0xe1, 0xdb, 0x15, 0xaf, 0x65, 0xf7, 0x45, 0xf7, 0x43, 0xf7, 0x44, - 0xfb, 0x42, 0xb2, 0xb2, 0xfb, 0x44, 0xf7, 0x43, 0xf7, 0x44, 0xf7, 0x44, - 0x69, 0xb4, 0xfb, 0x49, 0xfb, 0x46, 0xfb, 0x43, 0xf7, 0x42, 0x65, 0x64, - 0xf7, 0x43, 0xfb, 0x43, 0x5, 0xe, 0x8b, 0xc2, 0xf7, 0xe0, 0xc2, 0x1, - 0xf7, 0x1, 0xc2, 0xf7, 0xa5, 0xc2, 0x3, 0xa4, 0x16, 0xf7, 0x73, 0xc2, - 0x37, 0xf7, 0x85, 0x6, 0xb8, 0xb5, 0xd0, 0xb9, 0xc9, 0x1b, 0xb7, 0xc3, - 0x7e, 0x47, 0x1f, 0xfb, 0x8f, 0x38, 0x54, 0xf7, 0x70, 0xc2, 0x39, 0xf7, - 0x90, 0x7, 0xe1, 0x5a, 0xbc, 0x21, 0x45, 0x45, 0x5e, 0x62, 0x6a, 0x1e, - 0xe1, 0xfb, 0x1f, 0x54, 0xdf, 0xfb, 0xe0, 0x37, 0x7, 0xe, 0x7c, 0xc4, - 0xf7, 0x4a, 0xc9, 0xf7, 0xa9, 0xc6, 0x1, 0xf5, 0xc7, 0xf7, 0xa2, 0xc5, - 0x3, 0xf5, 0x7c, 0x15, 0xf7, 0x8d, 0xf7, 0x1f, 0xf7, 0x5, 0xf7, 0x7c, - 0xf7, 0x62, 0x2d, 0xe1, 0xfb, 0x6, 0x23, 0x3f, 0x27, 0x20, 0x28, 0xcb, - 0x2f, 0xf7, 0x2, 0xd9, 0xbc, 0xb9, 0xb3, 0xa8, 0x1f, 0xfb, 0x5a, 0xfb, - 0x34, 0x3d, 0xfb, 0x3e, 0x93, 0x1e, 0xf7, 0xd9, 0xf7, 0xf2, 0x15, 0x54, - 0x70, 0x59, 0x58, 0x4a, 0x1b, 0x43, 0x58, 0xc0, 0xd9, 0xc5, 0xab, 0xe3, - 0xe3, 0xe2, 0xc1, 0x2d, 0x3e, 0x8f, 0x1f, 0xe, 0x8b, 0xbf, 0xf7, 0xed, - 0xc0, 0x5b, 0xc0, 0xc7, 0xbb, 0x8c, 0xbc, 0x12, 0xa4, 0xf7, 0x20, 0x54, - 0xc2, 0xf7, 0xa5, 0xc1, 0x13, 0xbd, 0xeb, 0xf8, 0xa1, 0x15, 0xbe, 0x81, - 0x5, 0x99, 0x8f, 0x9f, 0xae, 0xaf, 0x1b, 0xad, 0xaa, 0x85, 0x7c, 0xa1, - 0x1f, 0x7c, 0xa1, 0x9b, 0x7e, 0xb4, 0x1b, 0xc9, 0xb6, 0xb6, 0xc2, 0x9e, - 0x1f, 0x59, 0x94, 0x5, 0x72, 0x82, 0x6e, 0x69, 0x67, 0x1b, 0x76, 0x7a, - 0x97, 0x98, 0x78, 0x1f, 0x9c, 0x73, 0x71, 0x93, 0x5f, 0x1b, 0x58, 0x56, - 0x74, 0x4a, 0x75, 0x1f, 0x44, 0xfc, 0xa1, 0x15, 0xf7, 0x73, 0xbf, 0x38, - 0xf7, 0x93, 0x6, 0xb7, 0xb5, 0xd0, 0xbe, 0xc8, 0x1b, 0xb7, 0xc4, 0x7f, - 0x49, 0x1f, 0xfb, 0xa4, 0x38, 0x57, 0xf7, 0x6f, 0xbf, 0x39, 0xf7, 0xa5, - 0x7, 0xdd, 0x62, 0xbb, 0x2a, 0x45, 0x47, 0x65, 0x5f, 0x58, 0x1e, 0x13, - 0xdd, 0xd0, 0xfb, 0x20, 0x56, 0x7, 0x13, 0xdb, 0xe0, 0xfb, 0xe5, 0x6, - 0x13, 0xdd, 0x36, 0x6, 0xe, 0xf7, 0x1f, 0xc1, 0xf7, 0x35, 0xc1, 0x1, - 0xf7, 0x3b, 0x3d, 0x15, 0xbd, 0x6, 0x95, 0xf7, 0x6d, 0x5, 0xf7, 0x23, - 0x6, 0x86, 0xfb, 0x6d, 0x5, 0xbd, 0x6, 0x91, 0xf7, 0x6d, 0x5, 0xef, - 0xc1, 0x2b, 0x6, 0x8f, 0xf7, 0x35, 0x5, 0xe7, 0xc1, 0x32, 0x6, 0x90, - 0xf7, 0x6f, 0x5, 0x58, 0x6, 0x87, 0xfb, 0x6f, 0x5, 0xfb, 0x25, 0x6, - 0x8e, 0xf7, 0x6f, 0x5, 0x57, 0x6, 0x88, 0xfb, 0x6f, 0x5, 0x20, 0x55, - 0xf4, 0x6, 0x86, 0xfb, 0x35, 0x5, 0x27, 0x55, 0xec, 0x6, 0xc1, 0xc1, - 0x15, 0x90, 0xf7, 0x35, 0x5, 0xf7, 0x24, 0x6, 0x86, 0xfb, 0x35, 0x5, - 0xe, 0x7a, 0xc2, 0xf7, 0xf2, 0xc2, 0x1, 0xc7, 0xc1, 0xf8, 0x2, 0xc6, - 0x3, 0xc7, 0xf7, 0x67, 0x15, 0xfb, 0x1f, 0xf6, 0x32, 0xf7, 0x18, 0xf7, - 0x1e, 0xf1, 0xe6, 0xf7, 0x1e, 0xf7, 0x22, 0x24, 0xe4, 0xfb, 0x1d, 0xfb, - 0x1f, 0x27, 0x34, 0xfb, 0x25, 0x1e, 0xc1, 0x16, 0xf7, 0x6, 0xd8, 0xca, - 0xf5, 0xf5, 0xd8, 0x4d, 0xfb, 0x6, 0xfb, 0xa, 0x43, 0x53, 0xfb, 0x3, - 0x22, 0x3d, 0xc5, 0xf7, 0x7, 0x1e, 0xe, 0x63, 0xa, 0x58, 0xa, 0xf7, - 0x4c, 0xf8, 0x95, 0x15, 0xf7, 0xa6, 0xde, 0x6b, 0xd7, 0xfb, 0x92, 0xfb, - 0x13, 0x5, 0xfb, 0x2, 0xfb, 0xdd, 0x21, 0xa, 0x63, 0xa, 0xf7, 0x62, - 0x77, 0x58, 0xa, 0xf7, 0x32, 0xf8, 0x7d, 0x15, 0xf7, 0x22, 0xf7, 0x3, - 0xf7, 0x20, 0xfb, 0x3, 0xb3, 0x9d, 0xfb, 0x22, 0xf7, 0x27, 0x5, 0x3f, - 0x6, 0xfb, 0x23, 0xfb, 0x27, 0x5, 0x52, 0xfb, 0xb7, 0x21, 0xa, 0x63, - 0xa, 0xd2, 0xf7, 0x8, 0x58, 0xa, 0xf7, 0xf6, 0xf8, 0x9b, 0x15, 0xda, - 0xf7, 0x8, 0x3c, 0x6, 0xfb, 0x54, 0xfb, 0x8, 0x15, 0xdd, 0xf7, 0x8, - 0x39, 0x6, 0x27, 0xfc, 0x37, 0x21, 0xa, 0x7c, 0xc2, 0xf7, 0x2c, 0xc6, - 0xf7, 0x1b, 0xc2, 0x1, 0xa9, 0xc1, 0xf7, 0x59, 0xc0, 0xf7, 0x4b, 0xbf, - 0x3, 0xf7, 0xc8, 0xd3, 0x15, 0x58, 0xa4, 0xb2, 0x67, 0xe0, 0x1b, 0xb6, - 0xac, 0x96, 0x97, 0xaf, 0x1f, 0x81, 0xc1, 0x5, 0x81, 0x6f, 0x65, 0x7f, - 0x68, 0x1b, 0x3f, 0x55, 0xbb, 0xf3, 0x91, 0x1f, 0xf7, 0x7f, 0x6, 0xec, - 0x8c, 0x82, 0xf7, 0x2c, 0xfb, 0x14, 0x1b, 0x48, 0x66, 0x5a, 0x6d, 0x7d, - 0x1f, 0xb9, 0x76, 0x63, 0xac, 0x4b, 0x1b, 0xfb, 0x1d, 0x74, 0xfb, 0x21, - 0xfb, 0x3, 0xfb, 0x51, 0xf7, 0x9, 0x7b, 0xad, 0xe3, 0xa9, 0xcb, 0xa3, - 0x94, 0x1f, 0xa6, 0xf7, 0x47, 0x15, 0xcb, 0x81, 0xba, 0xcf, 0xc5, 0x1b, - 0xd1, 0x9c, 0x3b, 0x57, 0x1f, 0xfc, 0x45, 0x52, 0x15, 0xe3, 0x9d, 0xf3, - 0xdf, 0xd9, 0x9c, 0x35, 0x49, 0x47, 0x90, 0xfb, 0x12, 0x24, 0x31, 0x82, - 0xf7, 0x12, 0xa7, 0x1e, 0xe, 0xfb, 0x2b, 0xc1, 0x1, 0xf7, 0x78, 0xcd, - 0x3, 0xf7, 0xb9, 0x16, 0x67, 0x7b, 0x6e, 0x6a, 0x67, 0x1a, 0x61, 0xaf, - 0x73, 0xb1, 0xa1, 0xa1, 0x93, 0x9a, 0x9c, 0x1e, 0x93, 0xc3, 0x5, 0x7c, - 0x82, 0x75, 0x81, 0x79, 0x1b, 0x7b, 0x7f, 0x95, 0x9f, 0xb1, 0xba, 0x9d, - 0xa4, 0x96, 0x1f, 0xe, 0x63, 0xa, 0x58, 0xa, 0xf7, 0x36, 0xf8, 0xe7, - 0x15, 0xf7, 0xa8, 0x24, 0x96, 0xaa, 0xfb, 0x93, 0xf7, 0x29, 0x5, 0xfb, - 0x18, 0xfc, 0x5c, 0x21, 0xa, 0x8b, 0xc2, 0xf8, 0xcb, 0x77, 0x1, 0xf7, - 0xa9, 0xc2, 0x3, 0xea, 0x16, 0xf8, 0x2d, 0xc2, 0xfb, 0x40, 0xf8, 0xcb, - 0x6, 0xfb, 0x71, 0x58, 0x5, 0x54, 0x7, 0xf7, 0x3a, 0xaf, 0x5, 0xfc, - 0x85, 0xfb, 0x4a, 0x7, 0xe, 0x5d, 0xc1, 0x5f, 0x76, 0xf7, 0xd4, 0xc0, - 0x7c, 0xc1, 0xf7, 0xca, 0x77, 0x12, 0xf0, 0xc0, 0xf8, 0x3, 0xbe, 0x13, - 0x5e, 0xb9, 0x6e, 0x15, 0xb0, 0x6f, 0xf8, 0x9a, 0xf9, 0x46, 0x66, 0xab, - 0x5, 0xfc, 0xc8, 0xfc, 0x0, 0x15, 0xf7, 0x94, 0xc1, 0x25, 0xf7, 0xc6, - 0x6, 0xfb, 0x25, 0x73, 0x5, 0x55, 0x7, 0xe7, 0x99, 0x5, 0xfb, 0x86, - 0x26, 0x7, 0xf7, 0xfa, 0xfb, 0xf2, 0x15, 0x13, 0xae, 0x58, 0xf7, 0x6a, - 0xc1, 0xfb, 0x22, 0x7, 0xf1, 0xe5, 0xb3, 0xb0, 0xd2, 0x1a, 0xc3, 0x69, - 0xc1, 0x46, 0x65, 0x67, 0x78, 0x69, 0x73, 0x1e, 0x4c, 0xb8, 0x7, 0xb0, - 0x84, 0xa9, 0xa5, 0xa9, 0x1b, 0xae, 0x9c, 0x6c, 0x69, 0x59, 0x24, 0x39, - 0x4f, 0x4e, 0x1f, 0xe, 0x5e, 0xc1, 0x5e, 0x76, 0xf7, 0xf, 0xc3, 0xf7, - 0x47, 0xc1, 0xf7, 0xc6, 0x77, 0x12, 0xef, 0xbc, 0xf7, 0xcc, 0xbd, 0x13, - 0xbe, 0xf7, 0xd6, 0xc8, 0x15, 0xf7, 0x1f, 0x57, 0x54, 0x55, 0xf7, 0x2b, - 0xc1, 0x5d, 0xbf, 0xb9, 0xc3, 0x5d, 0xf7, 0x55, 0x51, 0x6, 0xfb, 0x17, - 0xfb, 0x66, 0x5, 0xca, 0x9c, 0x15, 0xd7, 0xf7, 0x8, 0x5, 0xfb, 0x8, - 0x7, 0xfc, 0x14, 0xfb, 0x24, 0x15, 0x13, 0x7e, 0xb3, 0x6d, 0xf8, 0x77, - 0xf9, 0x47, 0x63, 0x9f, 0x5, 0xfc, 0xc4, 0xfb, 0xf5, 0x15, 0xf7, 0x87, - 0xc1, 0x2d, 0xf7, 0xc6, 0x6, 0xfb, 0x19, 0x73, 0x5, 0x55, 0x7, 0xdf, - 0x99, 0x5, 0xfb, 0x86, 0x27, 0x7, 0xe, 0xf7, 0x8d, 0xc3, 0xf7, 0xd1, - 0x77, 0x68, 0xa, 0xc1, 0x3, 0xf7, 0x40, 0xf7, 0x8d, 0x15, 0xf7, 0x94, - 0xc3, 0x27, 0xf7, 0xd1, 0x6, 0xfb, 0x25, 0x71, 0x5, 0x53, 0x7, 0xe6, - 0x9a, 0x5, 0xfb, 0x8e, 0x25, 0x7, 0xe, 0xf7, 0x8d, 0xbf, 0xe7, 0xbe, - 0xe4, 0xba, 0x1, 0xf7, 0xf1, 0xb7, 0x3, 0xf7, 0xf2, 0xf7, 0x95, 0x15, - 0xe8, 0xc2, 0x59, 0xf7, 0x27, 0x6, 0xd6, 0x75, 0xb9, 0x3e, 0x5f, 0x5b, - 0x7a, 0x7c, 0x69, 0x1e, 0x96, 0x5b, 0x5, 0xa8, 0xc0, 0xb0, 0x8f, 0xa8, - 0x1b, 0xac, 0x9d, 0x6a, 0x58, 0x1f, 0x7e, 0x7, 0x8f, 0x75, 0x73, 0x8f, - 0x73, 0x1b, 0x26, 0x76, 0x4a, 0x69, 0x5c, 0xac, 0x5a, 0xc2, 0xb3, 0xaf, - 0xa6, 0xad, 0xa8, 0x1f, 0x8a, 0xcf, 0x15, 0x5f, 0x72, 0x66, 0x6a, 0x64, - 0x1b, 0x70, 0x76, 0x9e, 0xa4, 0xa4, 0xa4, 0xa2, 0xba, 0xb1, 0xb2, 0x7c, - 0x8b, 0x1f, 0xe, 0xf7, 0x8d, 0xc1, 0xf7, 0x75, 0xbf, 0x1, 0xf7, 0x31, - 0xc2, 0xf7, 0x44, 0xc2, 0x3, 0xf7, 0x31, 0xf8, 0x34, 0x15, 0xfb, 0x13, - 0xed, 0x63, 0xb8, 0xc3, 0xe2, 0xba, 0xf7, 0xa, 0xe5, 0x55, 0xd7, 0x34, - 0x4b, 0x3a, 0x59, 0xfb, 0x6, 0x1e, 0xc2, 0x16, 0xc5, 0xad, 0xc1, 0xc4, - 0xd1, 0x9a, 0x3b, 0x6b, 0x45, 0x63, 0x60, 0x5d, 0x5f, 0x5d, 0xb7, 0xd0, - 0x1e, 0xe, 0x7f, 0xbd, 0x69, 0x76, 0xf8, 0x33, 0xbd, 0x8e, 0x77, 0x12, - 0xc8, 0xbf, 0xf8, 0x0, 0xc2, 0x13, 0x6c, 0xc8, 0xa3, 0x15, 0xaf, 0x62, - 0xc0, 0xbe, 0x5, 0x13, 0x9c, 0x69, 0xb7, 0xc1, 0x7f, 0xbe, 0x1b, 0xf7, - 0x12, 0xf6, 0xdd, 0xf7, 0x29, 0xbf, 0x7e, 0xbf, 0x6c, 0xb1, 0x1f, 0xbd, - 0xbc, 0x67, 0xb4, 0x57, 0x58, 0x5, 0x13, 0xac, 0xac, 0x60, 0x57, 0x9a, - 0x54, 0x1b, 0xfb, 0x2d, 0x35, 0x22, 0xfb, 0x11, 0x55, 0x9c, 0x54, 0xac, - 0x65, 0x1f, 0xda, 0x8d, 0x15, 0xf7, 0x96, 0xf7, 0x8d, 0x5, 0x98, 0x77, - 0x9b, 0x69, 0x4b, 0x1a, 0x50, 0x5a, 0x20, 0xfb, 0x16, 0x64, 0x65, 0x99, - 0xa0, 0x6c, 0x1e, 0x63, 0xb0, 0x15, 0x73, 0xa7, 0x7e, 0xb3, 0xb3, 0x1a, - 0xf6, 0xdd, 0xd4, 0xf3, 0xa9, 0xb7, 0x7f, 0x72, 0xb0, 0x1e, 0xe, 0x63, - 0xa, 0xc9, 0xbd, 0x9c, 0xbc, 0x12, 0xc9, 0xc5, 0xf7, 0xfa, 0xc7, 0x17, - 0xf7, 0x0, 0xf8, 0xa1, 0x15, 0xbb, 0x80, 0x5, 0x9a, 0x8f, 0x9e, 0xbb, - 0xad, 0x1b, 0xad, 0x9e, 0x76, 0x79, 0xa3, 0x1f, 0x13, 0xfc, 0x7c, 0x9e, - 0xa0, 0x7e, 0xad, 0x1b, 0x13, 0xec, 0xc6, 0xb9, 0xbb, 0xc2, 0x9d, 0x1f, - 0x5c, 0x94, 0x5, 0x73, 0x82, 0x70, 0x65, 0x69, 0x1b, 0x77, 0x7c, 0x94, - 0x96, 0x7c, 0x1f, 0x13, 0xdc, 0x9e, 0x71, 0x72, 0xa6, 0x61, 0x1b, 0x5b, - 0x59, 0x67, 0x4a, 0x76, 0x1f, 0x5d, 0xfb, 0xc9, 0x21, 0xa, 0x66, 0xa, - 0xe7, 0xc2, 0xf7, 0xf1, 0xc4, 0x13, 0xdc, 0x92, 0x21, 0x15, 0x58, 0xf7, - 0xbd, 0xbe, 0xfb, 0x31, 0xf7, 0x5f, 0x7, 0x67, 0xac, 0xc3, 0x62, 0xea, - 0x1b, 0xf7, 0x11, 0xec, 0xe8, 0xf7, 0x12, 0xf7, 0x4, 0x2b, 0xde, 0xfb, - 0xe, 0x33, 0x4d, 0x70, 0x60, 0x65, 0x1f, 0x13, 0xec, 0xcc, 0xfb, 0x20, - 0x58, 0xe0, 0xfc, 0x78, 0x7, 0xc6, 0xf7, 0xe4, 0x15, 0x13, 0xdc, 0xe4, - 0xd8, 0xca, 0xeb, 0xeb, 0xd7, 0x4c, 0x32, 0x32, 0x3f, 0x43, 0x2b, 0x2b, - 0x3e, 0xd3, 0xe4, 0x1e, 0xe, 0xf8, 0xa8, 0xa9, 0x1, 0xf7, 0xd1, 0xb7, - 0xd9, 0xb6, 0x3, 0xf7, 0xd1, 0x3d, 0x15, 0xb7, 0xf8, 0xf6, 0xd9, 0xfc, - 0xf6, 0xb6, 0xf8, 0xf6, 0xbb, 0xa9, 0xfb, 0x6e, 0x6, 0xfb, 0x38, 0x3c, - 0x4f, 0xfb, 0xa, 0x4d, 0xc2, 0x2a, 0xf7, 0x55, 0x8a, 0x1f, 0xe, 0xfb, - 0x0, 0xf9, 0x6e, 0x1, 0xf7, 0x6a, 0xc2, 0x3, 0xf8, 0x16, 0xf9, 0x2, - 0x15, 0x56, 0x6, 0x51, 0x31, 0x4e, 0xfb, 0x29, 0xfb, 0x27, 0x1a, 0x26, - 0xbb, 0xfb, 0x1a, 0xd1, 0xfb, 0x1, 0x1e, 0xc1, 0x6, 0x4e, 0xf7, 0x7, - 0x53, 0xe5, 0xf7, 0x1f, 0x1a, 0xf7, 0x3a, 0xd1, 0xf7, 0x1c, 0xba, 0xdf, - 0x1e, 0xe, 0xfb, 0x0, 0xf9, 0x6e, 0x1, 0xf7, 0xdf, 0xc2, 0x3, 0xf7, - 0x6a, 0xfb, 0x0, 0x15, 0xc0, 0x6, 0xc5, 0xe5, 0xc8, 0xf7, 0x29, 0xf7, - 0x27, 0x1a, 0xf0, 0x5b, 0xf7, 0x1a, 0x45, 0xf7, 0x1, 0x1e, 0x55, 0x6, - 0xc8, 0xfb, 0x7, 0xc3, 0x31, 0xfb, 0x1f, 0x1a, 0xfb, 0x3a, 0x45, 0xfb, - 0x1c, 0x5c, 0x37, 0x1e, 0xe, 0x7c, 0xc1, 0xf7, 0x22, 0xc4, 0xf7, 0x20, - 0xc1, 0xf7, 0x19, 0xc4, 0x12, 0xf7, 0x1, 0xc3, 0xc3, 0xc3, 0xa9, 0xc2, - 0xc4, 0xc2, 0x17, 0xf0, 0xf7, 0x5d, 0x15, 0xf8, 0x35, 0xf7, 0x3c, 0x78, - 0xba, 0xfc, 0x36, 0xfb, 0x38, 0x5, 0xf7, 0x58, 0xfb, 0x22, 0x65, 0xa, - 0x64, 0x6b, 0xab, 0xb2, 0x1e, 0x4b, 0xa, 0x53, 0xf8, 0x13, 0x65, 0xa, - 0x1e, 0x13, 0x3a, 0x64, 0x6b, 0xab, 0xb2, 0x1f, 0x4b, 0xa, 0xe, 0x7c, - 0xf7, 0x10, 0x7a, 0xa, 0xb7, 0x15, 0x65, 0xab, 0x76, 0xb1, 0xab, 0xb3, - 0xa0, 0xb1, 0xb2, 0x6b, 0xa5, 0x63, 0x65, 0x6b, 0x73, 0x62, 0x1e, 0xe, - 0xf7, 0x51, 0xf7, 0x1e, 0x1, 0xf7, 0x72, 0xf7, 0x30, 0x3, 0xf7, 0x72, - 0xf7, 0x95, 0x15, 0x69, 0xaa, 0x69, 0xbc, 0xb1, 0xb1, 0xa7, 0xb2, 0xaf, - 0x6d, 0xae, 0x5c, 0x5f, 0x68, 0x6c, 0x64, 0x1e, 0xe, 0x7c, 0xc2, 0xf7, - 0x21, 0xc1, 0xf7, 0x1d, 0xc2, 0xf7, 0x21, 0xc1, 0x12, 0xa4, 0xc3, 0x7d, - 0xc3, 0xf2, 0xc1, 0x7f, 0xc1, 0xa0, 0xc3, 0xf7, 0x25, 0xc1, 0x13, 0xfa, - 0xc0, 0xa4, 0xf8, 0x84, 0x15, 0x49, 0xbd, 0x51, 0xd9, 0xd4, 0xc1, 0xc4, - 0xcf, 0xcd, 0x62, 0xc6, 0x33, 0x3e, 0x5a, 0x4f, 0x49, 0x1e, 0xc3, 0x8a, - 0x15, 0xb6, 0xa7, 0xa9, 0xb9, 0xb8, 0xa5, 0x6a, 0x64, 0x69, 0x72, 0x68, - 0x5d, 0x61, 0x6b, 0xa5, 0xb5, 0x1e, 0xf7, 0x9a, 0xfc, 0x15, 0x3a, 0xa, - 0x13, 0xf5, 0xc0, 0xfb, 0xe0, 0x8c, 0x3a, 0xa, 0x27, 0xf2, 0x15, 0x13, - 0x0, 0x0, 0xf8, 0x46, 0xf7, 0x47, 0x75, 0xbe, 0xfc, 0x46, 0xfb, 0x47, - 0x5, 0xe, 0xcc, 0x76, 0xf7, 0x5a, 0xc1, 0xf7, 0x42, 0x77, 0x68, 0xa, - 0xc1, 0x3, 0xdb, 0xf7, 0x86, 0x15, 0xf7, 0x56, 0xfb, 0x5a, 0xc1, 0xf7, - 0x5a, 0xf7, 0x54, 0xc1, 0xfb, 0x54, 0xf7, 0x42, 0x55, 0xfb, 0x42, 0xfb, - 0x56, 0x6, 0xe, 0xb7, 0xc2, 0xf7, 0x76, 0xc2, 0xf7, 0x46, 0x77, 0x68, - 0xa, 0xc2, 0x3, 0xf7, 0xa6, 0xf7, 0x1e, 0x15, 0xc2, 0xf7, 0x4f, 0xf7, - 0x4c, 0xc2, 0xfb, 0x4c, 0xf7, 0x46, 0x54, 0xfb, 0x46, 0xfb, 0x4f, 0x54, - 0xf7, 0x4f, 0x6, 0xfb, 0x4f, 0xfb, 0xad, 0x15, 0xf8, 0x3e, 0xc2, 0xfc, - 0x3e, 0x6, 0xe, 0x7c, 0xc2, 0xf7, 0x5c, 0xc2, 0xf7, 0x68, 0xc2, 0x1, - 0xf5, 0xc2, 0xf7, 0xab, 0xc2, 0x3, 0xa4, 0x7c, 0x15, 0xf7, 0x6d, 0xc2, - 0x3a, 0xf7, 0x5c, 0xf7, 0x8, 0x6, 0xa2, 0x6d, 0xb5, 0x4e, 0xb1, 0x4f, - 0x47, 0x47, 0x18, 0xaf, 0x67, 0xc7, 0xc7, 0x98, 0x74, 0x98, 0x77, 0x94, - 0x7a, 0x19, 0xf7, 0x18, 0xc2, 0x23, 0x6, 0x83, 0x97, 0x83, 0x9a, 0x81, - 0x9a, 0xd5, 0xd5, 0x18, 0x67, 0xaf, 0x4a, 0x4a, 0x70, 0xb5, 0x6d, 0xb7, - 0x74, 0xa8, 0x19, 0xcf, 0x90, 0xe4, 0xac, 0xf7, 0xf, 0x1a, 0xe1, 0x5b, - 0xd4, 0xfb, 0xe, 0x1e, 0xfb, 0xc0, 0x54, 0xdc, 0xfc, 0x67, 0x3a, 0x6, - 0xf7, 0x1c, 0xf7, 0x93, 0x15, 0xf7, 0x68, 0xf7, 0x26, 0x7, 0xd1, 0xca, - 0x72, 0x3a, 0xfb, 0x2, 0x24, 0x8f, 0x42, 0x1f, 0xe, 0x66, 0xa, 0xba, - 0xc4, 0xf7, 0xf1, 0xc2, 0x13, 0xec, 0xf7, 0xbc, 0x21, 0x15, 0x58, 0xf7, - 0xbd, 0xbe, 0x36, 0xf8, 0x78, 0xe0, 0xbe, 0xfb, 0x20, 0x4a, 0x7, 0x13, - 0xdc, 0xb6, 0x65, 0x4d, 0xa6, 0x33, 0x1b, 0xfb, 0xe, 0x2b, 0x38, 0xfb, - 0x4, 0xfb, 0x12, 0xec, 0x2e, 0xf7, 0x11, 0xea, 0xc3, 0xb4, 0xaf, 0xac, - 0x1f, 0xfb, 0x5f, 0x7, 0x87, 0xf7, 0xe4, 0x15, 0x32, 0x3e, 0x43, 0x2b, - 0x2b, 0x3f, 0xd3, 0xe4, 0xe4, 0xd7, 0xca, 0xeb, 0xeb, 0xd8, 0x4c, 0x32, - 0x1e, 0xe, 0x7c, 0xf7, 0xb, 0xf8, 0x34, 0xbf, 0x1, 0xf7, 0xa, 0xc1, - 0xaa, 0xf7, 0x19, 0xe7, 0xc0, 0x3, 0xf7, 0x86, 0xf7, 0x44, 0x15, 0xc2, - 0xcd, 0x6, 0xcc, 0x8f, 0xf7, 0xb, 0xb3, 0xf7, 0xc, 0x1a, 0xf7, 0x6, - 0x2c, 0xbf, 0x27, 0x4f, 0x4d, 0x79, 0x69, 0x5d, 0x1e, 0x27, 0xc1, 0xc9, - 0x7, 0xa7, 0xb0, 0xb4, 0x95, 0xb1, 0x1b, 0xd7, 0xcb, 0x5c, 0x4a, 0x29, - 0xfb, 0x5, 0x7c, 0x42, 0x7d, 0x1f, 0x64, 0xfb, 0x81, 0x4c, 0xa, 0xfb, - 0x31, 0xc1, 0xf7, 0xb, 0x76, 0xf7, 0xd2, 0xf7, 0x9, 0x1, 0xf7, 0xa, - 0xc0, 0xe6, 0xf7, 0x1b, 0xa9, 0xc1, 0x3, 0xf7, 0x9a, 0xf8, 0x9, 0x15, - 0x6c, 0xa5, 0x6e, 0xb4, 0xb1, 0xa9, 0xa5, 0xac, 0xa8, 0x70, 0xa8, 0x61, - 0x6a, 0x6a, 0x73, 0x6a, 0x1e, 0xb4, 0xfb, 0x52, 0x15, 0x40, 0x77, 0xfb, - 0x2, 0x67, 0xfb, 0xb, 0x1a, 0x21, 0xea, 0x50, 0xf1, 0xc6, 0xc7, 0x9b, - 0x9c, 0xba, 0x1e, 0xf7, 0xb, 0x55, 0x44, 0x7, 0x7b, 0x68, 0x63, 0x80, - 0x63, 0x1b, 0xfb, 0x5, 0x6f, 0xd3, 0xb0, 0xec, 0xf7, 0x6, 0xa0, 0xd4, - 0x98, 0x1f, 0xf7, 0x6, 0x54, 0x7, 0xe, 0xf8, 0xc2, 0x77, 0x1, 0xf7, - 0x58, 0xca, 0xdc, 0xca, 0x3, 0xf7, 0x62, 0xf7, 0xc7, 0x77, 0xa, 0xf7, - 0x37, 0xfb, 0x8f, 0x77, 0xa, 0xe, 0xfb, 0x1a, 0x6d, 0xa, 0xfb, 0x1a, - 0x45, 0xa, 0xf7, 0xdc, 0xf7, 0x7e, 0x8b, 0x77, 0x1, 0xf7, 0x1c, 0xf7, - 0xdc, 0x3, 0xf8, 0x29, 0xf7, 0xdc, 0x15, 0xc6, 0x6, 0x46, 0xf7, 0x7e, - 0x5, 0x2e, 0x6, 0x4a, 0xfb, 0x7e, 0x15, 0xc8, 0x6, 0x45, 0x5c, 0xa, - 0xf7, 0xdc, 0x6d, 0xa, 0xf7, 0xdc, 0x45, 0xa, 0xf7, 0xdc, 0x5f, 0xa, - 0xf7, 0xd6, 0xf7, 0xdc, 0x15, 0xc6, 0x6, 0x44, 0x5c, 0xa, 0xf7, 0xdc, - 0x5f, 0xa, 0xf7, 0x6e, 0xf7, 0xdc, 0x15, 0xc6, 0x6, 0xf3, 0x5c, 0xa, - 0xfb, 0x1a, 0x5f, 0xa, 0xf7, 0x6e, 0xfb, 0x1a, 0x15, 0xc6, 0x6, 0xf3, - 0x5c, 0xa, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x97, 0xdd, 0x3, 0xf7, 0xae, - 0xf7, 0xc7, 0x15, 0xae, 0x6, 0xa3, 0xf7, 0x93, 0x5, 0x39, 0x6, 0xe, - 0x8b, 0xc1, 0xf7, 0xd4, 0xc1, 0x63, 0xc0, 0x12, 0xbd, 0xf7, 0x4a, 0x54, - 0xc2, 0x13, 0xb0, 0xbd, 0x16, 0xf8, 0xf, 0xc1, 0xfb, 0x59, 0xf7, 0x51, - 0x6, 0xf1, 0xf7, 0x2, 0xc2, 0xb6, 0xb6, 0x1b, 0xa4, 0x9e, 0x85, 0x69, - 0x92, 0x1f, 0xc5, 0x90, 0x5, 0xbf, 0x88, 0x6a, 0xaf, 0x54, 0x1b, 0x2c, - 0x3f, 0x36, 0x57, 0x54, 0x1f, 0x13, 0xd0, 0xf7, 0x10, 0xfb, 0x4a, 0x55, - 0x7, 0x13, 0xc8, 0xf7, 0x13, 0xfb, 0xd4, 0x6, 0x13, 0xd0, 0xfb, 0x13, - 0x6, 0xe, 0x79, 0xb9, 0xf8, 0x7, 0xba, 0xe4, 0xb8, 0x1, 0x8b, 0xb9, - 0xf7, 0x2f, 0xbb, 0xf7, 0xd, 0xbe, 0xf7, 0x17, 0xbb, 0x3, 0xf7, 0xaa, - 0x4, 0xfb, 0x37, 0xf7, 0x1c, 0xfb, 0x19, 0xf7, 0x3b, 0xf7, 0x36, 0xf7, - 0x1b, 0xf7, 0x14, 0xf7, 0x43, 0xf7, 0x3b, 0xfb, 0x1e, 0xf7, 0x14, 0xfb, - 0x33, 0xfb, 0x2f, 0xfb, 0x28, 0xfb, 0xc, 0xfb, 0x4a, 0x1e, 0xb9, 0x8d, - 0x15, 0xf7, 0x16, 0xf1, 0xf7, 0x11, 0xf7, 0x30, 0xf7, 0x22, 0xf5, 0xfb, - 0x8, 0xfb, 0x1d, 0xfb, 0x22, 0xfb, 0x1, 0xfb, 0x4, 0xfb, 0x21, 0xfb, - 0x1b, 0xfb, 0xd, 0xf7, 0x2, 0xf7, 0x22, 0x1e, 0xf7, 0x2f, 0xfb, 0x30, - 0x15, 0xbb, 0xf7, 0xe, 0xc0, 0x6, 0xd4, 0xfb, 0xe, 0x5, 0xc6, 0x6, - 0x3d, 0xf7, 0x1a, 0x5, 0xb1, 0x99, 0xa6, 0xba, 0xae, 0x1a, 0xd1, 0x4f, - 0xa1, 0x52, 0x1e, 0x24, 0x6, 0xbb, 0xfb, 0x2d, 0x15, 0xf5, 0xc1, 0x7, - 0xb8, 0xa1, 0x71, 0x74, 0x65, 0x67, 0x78, 0x6d, 0x1f, 0xe, 0xf8, 0x63, - 0xbd, 0xab, 0x8b, 0xab, 0xbd, 0x1, 0xf7, 0x6e, 0xbd, 0xcb, 0xbd, 0x14, - 0xe0, 0xf7, 0x6e, 0xf8, 0xb5, 0x15, 0x5d, 0xaf, 0x67, 0xb9, 0xb9, 0xaf, - 0xaf, 0xb9, 0xb9, 0x67, 0xaf, 0x5d, 0x5d, 0x67, 0x67, 0x5d, 0x1e, 0xbd, - 0x16, 0x9d, 0x99, 0x99, 0x9d, 0x9d, 0x99, 0x7d, 0x79, 0x79, 0x7d, 0x7d, - 0x79, 0x79, 0x7d, 0x99, 0x9d, 0x1e, 0xe, 0x7e, 0xc2, 0xf7, 0x2b, 0xc0, - 0xf7, 0x20, 0xc2, 0x12, 0xdf, 0xc2, 0x5a, 0xc1, 0xf7, 0xba, 0xc1, 0x69, - 0xc5, 0x13, 0xf4, 0xdf, 0x7f, 0x15, 0xc2, 0xb8, 0x6, 0x74, 0xbc, 0xc5, - 0x75, 0xdb, 0x1b, 0x13, 0xea, 0xf7, 0x3, 0xda, 0xc4, 0xe1, 0xf7, 0xb, - 0xfb, 0x28, 0x80, 0x32, 0x92, 0x1f, 0x5f, 0x8e, 0x30, 0x99, 0xc1, 0x1a, - 0xc9, 0xee, 0x92, 0xb6, 0xc2, 0xc2, 0x7a, 0x70, 0xb5, 0x1e, 0x50, 0xc1, - 0xf7, 0x32, 0x55, 0x63, 0x7, 0xa6, 0x5e, 0x55, 0x98, 0x53, 0x1b, 0xfb, - 0x2, 0x38, 0x5c, 0x35, 0x33, 0xf7, 0xc, 0x72, 0xce, 0x89, 0x1f, 0xc1, - 0x89, 0xf7, 0x13, 0x85, 0x4f, 0x1a, 0x45, 0x20, 0x7f, 0x66, 0x4c, 0x4b, - 0x9e, 0xb0, 0x5b, 0x1e, 0xc6, 0x54, 0x7, 0xe, 0x7c, 0xc2, 0x8b, 0xf7, - 0x27, 0x8b, 0xc1, 0x8b, 0xf7, 0x2b, 0x8b, 0xc2, 0x8b, 0xb7, 0x12, 0xde, - 0xc3, 0xf7, 0xbd, 0xc2, 0x17, 0xf7, 0x96, 0xf8, 0x7f, 0x15, 0xdd, 0x6, - 0xf7, 0x2a, 0xf7, 0x32, 0x60, 0x9f, 0xfb, 0x28, 0xfb, 0xe, 0xfb, 0x2d, - 0xf7, 0xd, 0x61, 0x77, 0x5, 0x76, 0xfd, 0x2b, 0x15, 0xc3, 0xc2, 0x6, - 0x74, 0xbd, 0xbe, 0x6b, 0xdd, 0x1b, 0xf7, 0x5, 0xdc, 0xc4, 0xe2, 0xdf, - 0x3f, 0xa2, 0x44, 0x90, 0x1f, 0x44, 0x90, 0xfb, 0x2c, 0x7b, 0xe1, 0x1a, - 0xca, 0xe6, 0x98, 0xb7, 0x1e, 0x13, 0xef, 0xc3, 0xc3, 0x70, 0x70, 0xb6, - 0x1f, 0x59, 0xc2, 0xf7, 0x33, 0x54, 0x59, 0x7, 0xa6, 0x5d, 0x54, 0xa2, - 0x51, 0x1b, 0xfb, 0x4, 0x41, 0x56, 0x34, 0xfb, 0xa, 0xf7, 0x2a, 0x8c, - 0xdd, 0x88, 0x1f, 0xbc, 0x89, 0xdf, 0x91, 0x47, 0x1a, 0x40, 0xfb, 0x1, - 0x83, 0x65, 0x4b, 0x52, 0xa9, 0xb0, 0x5a, 0x1e, 0xbc, 0x53, 0x7, 0xe, - 0xfb, 0x2b, 0xf7, 0x5a, 0x56, 0xc0, 0xf7, 0x22, 0xbd, 0xf7, 0x29, 0xc0, - 0x12, 0xde, 0xc3, 0x5a, 0xc2, 0xf7, 0xb6, 0xc3, 0x6c, 0xc3, 0x13, 0x7a, - 0xde, 0x85, 0x15, 0xc3, 0xc0, 0x6, 0xb3, 0x78, 0xb3, 0x73, 0xc4, 0x83, - 0x89, 0x4a, 0x18, 0x8e, 0x92, 0x95, 0x8c, 0x95, 0x1b, 0x98, 0x96, 0x84, - 0x7e, 0x7b, 0x7c, 0x82, 0x7a, 0x7d, 0x7d, 0x8e, 0x94, 0x81, 0x1f, 0x7d, - 0x68, 0x5, 0x13, 0xba, 0x7f, 0x9b, 0xa0, 0x85, 0x9e, 0x1b, 0xb1, 0xae, - 0xab, 0xb3, 0xad, 0x73, 0x9e, 0x77, 0x8c, 0x1f, 0x13, 0x75, 0x9e, 0x7, - 0xf7, 0x3, 0x8c, 0xda, 0xb4, 0xde, 0x1a, 0xdc, 0x4f, 0xae, 0x43, 0x8f, - 0x1e, 0x45, 0x90, 0xfb, 0x3d, 0x85, 0xde, 0x1a, 0xc8, 0xe6, 0x91, 0xb7, - 0x1e, 0x13, 0xb6, 0xc4, 0xc2, 0x70, 0x70, 0xb6, 0x1f, 0x5c, 0xc3, 0xf7, - 0x2e, 0x53, 0x5b, 0x7, 0xa5, 0x5d, 0x55, 0xa1, 0x50, 0x1b, 0xfb, 0x4, - 0x41, 0x5d, 0x38, 0xfb, 0x7, 0xf7, 0x2e, 0x86, 0xdd, 0x88, 0x1f, 0x13, - 0xb9, 0xbd, 0x89, 0xdf, 0x83, 0x48, 0x1a, 0x44, 0xfb, 0x5, 0x91, 0x65, - 0x4a, 0x53, 0xa7, 0xaf, 0x5a, 0x1e, 0xb1, 0x53, 0x7, 0xe, 0x3e, 0xc0, - 0xf8, 0xa3, 0xc0, 0x1, 0xf7, 0x16, 0xc0, 0xf7, 0x74, 0xc0, 0x3, 0xf7, - 0x16, 0xdd, 0x15, 0xfb, 0x33, 0xf7, 0x53, 0x7, 0xa5, 0xa7, 0x8c, 0x8f, - 0xa0, 0x1f, 0xa5, 0x91, 0xac, 0x9e, 0xb7, 0x1a, 0xa7, 0x7a, 0xa7, 0x74, - 0x9e, 0x1e, 0x8b, 0x7c, 0x96, 0x84, 0x92, 0x1e, 0xe3, 0x9e, 0x8c, 0xc6, - 0xa2, 0x1a, 0x8c, 0x7, 0xad, 0x72, 0xa6, 0x71, 0x9f, 0x1e, 0xfb, 0x67, - 0xf7, 0x33, 0x5, 0x74, 0x9d, 0x84, 0x93, 0x96, 0x1a, 0xa9, 0xae, 0x8f, - 0x9f, 0x1e, 0xf7, 0x36, 0x21, 0xc0, 0xf7, 0x33, 0xfb, 0x47, 0x6, 0x69, - 0x68, 0x8a, 0x81, 0x6e, 0x1f, 0x6e, 0x82, 0x7a, 0x70, 0x6d, 0x1a, 0x6c, - 0x9f, 0x76, 0xa1, 0x77, 0x1e, 0x9e, 0x7a, 0x5, 0x6d, 0x83, 0x59, 0x6b, - 0x52, 0x1a, 0x69, 0x9e, 0x6d, 0xa3, 0x79, 0x1e, 0xf7, 0x65, 0xfb, 0x32, - 0x5, 0xa8, 0x76, 0x8e, 0x7d, 0x80, 0x1a, 0x81, 0x86, 0x76, 0x6a, 0x1e, - 0xfb, 0x49, 0xf5, 0x6, 0xf7, 0x3f, 0xbb, 0x15, 0xfb, 0x2c, 0xf7, 0x6, - 0x5, 0x7d, 0x96, 0x7a, 0x9b, 0xa0, 0x1a, 0xb0, 0xb5, 0xa2, 0xa5, 0x1e, - 0xf7, 0x31, 0xfb, 0x5, 0x5, 0x9b, 0x7e, 0x9f, 0x7a, 0x75, 0x1a, 0x7c, - 0x80, 0x61, 0x48, 0x1e, 0xe, 0xa8, 0x76, 0xf7, 0x8e, 0xf7, 0x15, 0x8b, - 0xf7, 0xb, 0x1, 0xf7, 0x99, 0xf7, 0x19, 0x3, 0xf7, 0x61, 0x93, 0x15, - 0xcb, 0x6, 0xf1, 0xf7, 0x8e, 0x5, 0x2b, 0x6, 0x7d, 0xf7, 0x50, 0x4c, - 0xa, 0xa0, 0x76, 0xf8, 0xbb, 0xc3, 0x1, 0xee, 0xc3, 0x3, 0xf7, 0x8a, - 0x16, 0xc8, 0x6, 0xf7, 0x55, 0xf8, 0xb8, 0x5, 0xc6, 0xfc, 0x25, 0xfb, - 0x28, 0xc3, 0xe7, 0xf7, 0xb3, 0x7, 0xe, 0x7c, 0xc6, 0xf7, 0xa9, 0xc9, - 0xf7, 0x4a, 0xc4, 0x1, 0xf1, 0xc5, 0xf7, 0xaa, 0xc7, 0x3, 0xf7, 0x34, - 0xf7, 0xbd, 0x15, 0xf7, 0x72, 0xf7, 0x39, 0xb9, 0xf7, 0x37, 0x1e, 0xc4, - 0x7, 0xfb, 0x8d, 0xfb, 0x1d, 0x38, 0xfb, 0x9a, 0xfb, 0x62, 0xe8, 0x35, - 0xf7, 0x6, 0xf3, 0xe0, 0xef, 0xf6, 0xee, 0x42, 0xe7, 0xfb, 0x2, 0x3d, - 0x5b, 0x5d, 0x63, 0x6e, 0x1f, 0x8e, 0x39, 0x15, 0xc2, 0xa6, 0xbe, 0xbe, - 0xcc, 0x1b, 0xd3, 0xc7, 0x56, 0x3d, 0x51, 0x62, 0x33, 0x2c, 0x34, 0x5b, - 0xe9, 0xd8, 0x87, 0x1f, 0xe, 0x3b, 0xf9, 0x59, 0x1, 0xf7, 0x11, 0xf7, - 0xf2, 0x3, 0xf7, 0x11, 0x4d, 0x15, 0xb3, 0x79, 0xf7, 0xca, 0xf9, 0x46, - 0x63, 0x9e, 0x5, 0xe, 0xe, 0x76, 0xc5, 0x70, 0xc4, 0xf7, 0x64, 0xc5, - 0xf7, 0x71, 0xc4, 0x12, 0xf7, 0x25, 0xc1, 0x89, 0xc0, 0x13, 0xb8, 0xf7, - 0xa, 0xaa, 0x15, 0xa3, 0x57, 0x5, 0x13, 0x78, 0xa4, 0xc3, 0xb5, 0x91, - 0xad, 0x1b, 0x13, 0xb8, 0xc8, 0xae, 0x6c, 0xae, 0x1b, 0xb6, 0xb2, 0x9d, - 0xa6, 0xaa, 0x1f, 0x76, 0xb9, 0x5, 0x7f, 0x7a, 0x6e, 0x76, 0x68, 0x1b, - 0x13, 0x74, 0x6e, 0x8a, 0x5f, 0xa9, 0x50, 0x8c, 0x8, 0x6e, 0x69, 0x86, - 0x77, 0x66, 0x1f, 0x88, 0x6, 0xb6, 0xc1, 0xa3, 0xb7, 0x8d, 0xb8, 0x8c, - 0xa8, 0x88, 0xa8, 0x81, 0xab, 0x8, 0xf7, 0x61, 0xc5, 0xfb, 0x73, 0x6, - 0x13, 0xb8, 0x80, 0xa3, 0x81, 0xbb, 0xa2, 0x1a, 0xdd, 0xbf, 0xb7, 0xd8, - 0xbe, 0xb9, 0x67, 0x5a, 0xa4, 0x1e, 0xc0, 0xa9, 0x5, 0xc3, 0x70, 0x52, - 0xc3, 0x31, 0x1b, 0xfb, 0xb, 0x4a, 0x38, 0x2f, 0x69, 0x93, 0x67, 0x9c, - 0x6a, 0x1f, 0x32, 0x51, 0xf4, 0x6, 0x13, 0xb4, 0x93, 0x73, 0x8e, 0x73, - 0x74, 0x1a, 0x48, 0x6d, 0x51, 0x5a, 0x5b, 0x1e, 0xe, 0x7c, 0xc2, 0xf7, - 0xe4, 0xc2, 0xf7, 0x16, 0x77, 0x1, 0xf7, 0x2a, 0xc1, 0x3, 0xd9, 0xf8, - 0xc, 0x15, 0xd3, 0xfb, 0x98, 0x6, 0xfb, 0x5, 0xf7, 0x0, 0x79, 0xbf, - 0xd5, 0xd5, 0xa8, 0xa6, 0xca, 0x1e, 0x85, 0xc1, 0x5, 0x77, 0x57, 0x41, - 0x68, 0x47, 0x1b, 0x3f, 0x62, 0x9d, 0xdd, 0x1f, 0xf7, 0x80, 0xf7, 0x8c, - 0xc2, 0xfb, 0x8c, 0xf7, 0x16, 0x55, 0xfb, 0x16, 0x43, 0x7, 0xe, 0xfb, - 0x31, 0xc0, 0xf7, 0x16, 0xc1, 0xf7, 0xe1, 0xc1, 0xf7, 0x1, 0xc0, 0x1, - 0xf6, 0xc3, 0xf7, 0xfb, 0xc5, 0x3, 0x9e, 0x23, 0x15, 0x56, 0xf7, 0xc5, - 0xc0, 0xfb, 0x35, 0xf7, 0x65, 0x7, 0x64, 0xab, 0xc6, 0x63, 0xea, 0x1b, - 0xf7, 0x14, 0xf2, 0xea, 0xf7, 0x15, 0xf7, 0x14, 0xfb, 0x2, 0xe4, 0xfb, - 0x8, 0x31, 0x4b, 0x67, 0x5e, 0x66, 0x1f, 0xf7, 0x87, 0xfb, 0x24, 0x56, - 0xe3, 0xfd, 0x3c, 0x7, 0xc6, 0xf7, 0xf4, 0x15, 0xe2, 0xd0, 0xd9, 0xf7, - 0x4, 0xf7, 0x1e, 0xb0, 0xfb, 0x1, 0x54, 0x21, 0x45, 0x4c, 0x20, 0x2a, - 0x39, 0xcf, 0xef, 0x1e, 0xe, 0x7c, 0xbf, 0xf7, 0x7e, 0xc6, 0xf7, 0x7c, - 0xc7, 0x12, 0xf8, 0x2b, 0xc9, 0x6b, 0xc5, 0x13, 0xe8, 0xf3, 0xa6, 0x15, - 0x70, 0xbc, 0xcd, 0x7c, 0xca, 0x1b, 0xf7, 0x2, 0xf2, 0xbb, 0xf7, 0x11, - 0xf7, 0x1, 0x33, 0xae, 0x65, 0x91, 0x1f, 0x13, 0xf0, 0xb6, 0x9e, 0xc4, - 0xc8, 0xd6, 0x1a, 0xf7, 0x3, 0x31, 0xbb, 0x32, 0x4d, 0x4a, 0x70, 0x67, - 0x5a, 0x1e, 0xa8, 0x58, 0x5, 0xae, 0xb4, 0xc0, 0x9e, 0xba, 0x1b, 0xcd, - 0xc4, 0x74, 0x3d, 0x55, 0x49, 0x3e, 0x30, 0x1f, 0x88, 0x50, 0x6, 0x13, - 0xe8, 0xd2, 0x8a, 0xf7, 0xb, 0x79, 0x2f, 0x1a, 0x35, 0x42, 0x66, 0x3a, - 0x53, 0x4f, 0x9c, 0xa9, 0x61, 0x1e, 0xe, 0x62, 0xc2, 0x5a, 0x76, 0xf7, - 0xd, 0xc1, 0xf7, 0x47, 0xc2, 0xf7, 0x99, 0xbf, 0x12, 0xf7, 0x44, 0xc1, - 0x6a, 0xbf, 0xf7, 0x64, 0xbf, 0x13, 0xbd, 0xf7, 0xca, 0xcc, 0x15, 0xf7, - 0x27, 0x58, 0x50, 0x54, 0xf7, 0x34, 0xc2, 0x5a, 0xbe, 0xbc, 0xc1, 0x5a, - 0xf7, 0x56, 0x4e, 0x6, 0xfb, 0x1e, 0xfb, 0x65, 0x5, 0xce, 0x9a, 0x15, - 0xdb, 0xf7, 0x8, 0x5, 0xfb, 0x8, 0x7, 0xfc, 0x32, 0xfb, 0x24, 0x15, - 0x13, 0x7b, 0xb6, 0x6c, 0xf8, 0x8e, 0xf9, 0x47, 0x60, 0xaa, 0x5, 0xfc, - 0xb2, 0xfb, 0xe7, 0x15, 0x7c, 0xa8, 0xbb, 0x7d, 0xb3, 0x1b, 0xca, 0xc9, - 0xb3, 0xce, 0xc0, 0x74, 0x9d, 0x6f, 0x99, 0x1f, 0x13, 0xbd, 0xa0, 0x9d, - 0x96, 0x9f, 0xad, 0x1a, 0xcb, 0x5d, 0xb3, 0x4e, 0x63, 0x61, 0x7b, 0x75, - 0x6d, 0x1e, 0x9f, 0x57, 0x5, 0xa2, 0x9b, 0xb5, 0x9a, 0xae, 0x1b, 0xa7, - 0xa3, 0x7b, 0x68, 0x69, 0x72, 0x74, 0x47, 0x8d, 0x1f, 0x56, 0x7, 0x13, - 0xbb, 0xbb, 0xcd, 0x8b, 0x59, 0x68, 0x67, 0x7a, 0x63, 0x65, 0x61, 0x94, - 0xa0, 0x77, 0x1f, 0xe, 0xf7, 0x84, 0xc2, 0xf7, 0xa3, 0xc3, 0x12, 0xf7, - 0xf3, 0xc3, 0x63, 0xc5, 0x13, 0xd0, 0xf7, 0x42, 0xf7, 0xa2, 0x15, 0x7c, - 0xaa, 0xbd, 0x7c, 0xb4, 0x1b, 0xcc, 0xcb, 0xb3, 0xd2, 0xc2, 0x73, 0x9d, - 0x6f, 0x99, 0x1f, 0x13, 0xe0, 0xa5, 0xa2, 0x93, 0xab, 0xaa, 0x1a, 0xbe, - 0x60, 0xba, 0x48, 0x60, 0x5e, 0x7a, 0x73, 0x6b, 0x1e, 0xa2, 0x5d, 0x5, - 0xa0, 0xa4, 0xb4, 0x95, 0xa7, 0x1b, 0xaa, 0xa5, 0x7b, 0x67, 0x69, 0x6f, - 0x72, 0x45, 0x8d, 0x1f, 0x55, 0x7, 0x13, 0xd0, 0xbd, 0x8c, 0xcb, 0x88, - 0x59, 0x1a, 0x63, 0x67, 0x7b, 0x61, 0x66, 0x62, 0x97, 0x9f, 0x75, 0x1e, - 0xe, 0xf8, 0x7d, 0xbc, 0x9d, 0xbd, 0x1, 0xf0, 0xf8, 0x8c, 0x15, 0xbe, - 0x80, 0x5, 0x99, 0x8f, 0xa4, 0xbc, 0xaf, 0x1b, 0xa9, 0x9d, 0x77, 0x79, - 0xa3, 0x1f, 0x7c, 0x9f, 0xa2, 0x7d, 0xb1, 0x1b, 0xc9, 0xbb, 0xba, 0xc3, - 0x9e, 0x1f, 0x59, 0x95, 0x82, 0x72, 0x6e, 0x65, 0x62, 0x8a, 0x19, 0x73, - 0x7a, 0x97, 0x99, 0x7a, 0x1f, 0x9e, 0x74, 0x74, 0xa2, 0x63, 0x1b, 0x58, - 0x57, 0x66, 0x4a, 0x75, 0x1f, 0xe, 0xf7, 0xb0, 0x76, 0xf7, 0x93, 0xb7, - 0x1, 0xf7, 0x10, 0xb8, 0xf7, 0x3, 0xb7, 0xf7, 0x4a, 0xb7, 0x3, 0xf7, - 0xac, 0xf7, 0x9b, 0x15, 0xb7, 0xf7, 0x98, 0x6, 0xcb, 0xfb, 0x98, 0x5, - 0xc4, 0x6, 0xc8, 0xf7, 0x97, 0x5, 0xfb, 0x97, 0xb7, 0xf7, 0xbf, 0x39, - 0x7, 0x56, 0xfb, 0x7c, 0x55, 0xf7, 0x7c, 0x5, 0x3a, 0x6, 0xfb, 0x30, - 0xfb, 0xbf, 0x15, 0xb8, 0xf7, 0x93, 0xd7, 0xb7, 0xfb, 0x58, 0x5f, 0xd6, - 0x6, 0xe, 0x8b, 0xc2, 0xf8, 0x1f, 0x77, 0xf7, 0x1a, 0xc5, 0x1, 0xf8, - 0x4c, 0xc7, 0x3, 0xee, 0x16, 0xf8, 0x25, 0xf7, 0x24, 0x51, 0x32, 0xfb, - 0x9d, 0x6, 0xf7, 0x6d, 0xf7, 0x44, 0xf5, 0xde, 0xf7, 0x4, 0x1a, 0xf7, - 0x17, 0x3b, 0xcc, 0xfb, 0x1, 0x37, 0x4b, 0x66, 0x3f, 0x61, 0x1e, 0x50, - 0xc1, 0x7, 0xd2, 0xc4, 0xb6, 0xd9, 0xdd, 0xbb, 0x5d, 0x2f, 0x3f, 0x2f, - 0x3f, 0x6e, 0x72, 0x1e, 0x42, 0x4c, 0x41, 0x46, 0x42, 0x4d, 0x8, 0xe, - 0xf7, 0x8d, 0xc2, 0xf7, 0x9c, 0xc1, 0x1, 0xf7, 0x53, 0xbf, 0xf7, 0x14, - 0xbf, 0x3, 0xf7, 0x44, 0xf7, 0x8d, 0x15, 0xf7, 0x8b, 0xc2, 0xfb, 0x38, - 0x6, 0xf7, 0x9, 0xe8, 0xba, 0xb3, 0xd3, 0x1a, 0xc5, 0x64, 0xc2, 0x3b, - 0x60, 0x5c, 0x80, 0x4a, 0x74, 0x1e, 0x55, 0xbf, 0x7, 0xc3, 0x83, 0xb0, - 0x9f, 0xab, 0x1b, 0xb5, 0xa4, 0x6b, 0x68, 0x55, 0xfb, 0x1f, 0x26, 0x53, - 0x5e, 0x1f, 0xe, 0x7c, 0xc0, 0x62, 0xc1, 0xf7, 0xd5, 0xc1, 0x12, 0xf7, - 0x4, 0xc0, 0xf7, 0xa2, 0xc0, 0x13, 0xb8, 0xa8, 0xf8, 0x8, 0x15, 0xde, - 0xfb, 0x8b, 0x6, 0x31, 0xcf, 0x59, 0xe3, 0xb2, 0xbf, 0x9b, 0xd3, 0xd7, - 0x1e, 0x13, 0x78, 0x3f, 0xf7, 0x1b, 0xc1, 0x39, 0xf8, 0xb, 0xfb, 0x1c, - 0x55, 0xde, 0xfb, 0x71, 0x7, 0x13, 0xb8, 0x5a, 0x62, 0x54, 0x4b, 0x4f, - 0x1b, 0x42, 0x62, 0xb5, 0xd3, 0x1f, 0xf7, 0xa6, 0xfb, 0x1c, 0x7, 0xe, - 0x3f, 0xa, 0xf7, 0x41, 0xf8, 0x82, 0x15, 0xf7, 0xb3, 0xf3, 0x6a, 0xd5, - 0xfb, 0x9e, 0xfb, 0x26, 0x5, 0xfb, 0x18, 0xfb, 0x25, 0x2b, 0xa, 0x3f, - 0xa, 0xf7, 0x0, 0xf8, 0x8f, 0x15, 0xb3, 0x79, 0xf7, 0x27, 0xf7, 0xb, - 0xf7, 0x26, 0xfb, 0xb, 0xb4, 0x9d, 0xfb, 0x27, 0xf7, 0x31, 0x5, 0x3c, - 0x6, 0xfb, 0x77, 0xfb, 0xaf, 0x2b, 0xa, 0x7c, 0xc1, 0x61, 0x67, 0xa, - 0xe7, 0xf7, 0x9, 0x12, 0xf7, 0x4, 0xc0, 0x94, 0xe0, 0xca, 0xdc, 0xaa, - 0xc0, 0x13, 0xbf, 0xf7, 0xd6, 0xf8, 0xa4, 0x72, 0xa, 0xfb, 0x28, 0xfb, - 0x9, 0x15, 0xe0, 0xf7, 0x9, 0x36, 0x6, 0xfb, 0x25, 0xfb, 0x9c, 0x38, - 0xa, 0x13, 0x7f, 0x3b, 0xa, 0x13, 0xbf, 0x33, 0xa, 0x3f, 0xa, 0xf7, - 0x2c, 0xf8, 0xe8, 0x15, 0xf7, 0xb3, 0x24, 0x96, 0xaa, 0xfb, 0x9c, 0xf7, - 0x28, 0x5, 0xfb, 0x31, 0xfb, 0xb7, 0x2b, 0xa, 0xfb, 0x11, 0xbd, 0x1, - 0x8b, 0xf8, 0xec, 0x3, 0x40, 0x4, 0x59, 0xf8, 0xec, 0xbd, 0x7, 0xe, - 0x96, 0x76, 0xf8, 0x11, 0xc2, 0x1, 0x9a, 0xf7, 0x68, 0xf7, 0x25, 0xf7, - 0x69, 0x3, 0xf7, 0x9e, 0x81, 0x15, 0xcc, 0x6, 0xf7, 0x45, 0xf8, 0x11, - 0x5, 0xd8, 0xc2, 0xfb, 0x69, 0x54, 0xd5, 0x6, 0xfb, 0x27, 0xfb, 0xd1, - 0xfb, 0x28, 0xf7, 0xd1, 0x5, 0xd7, 0xc2, 0xfb, 0x68, 0x54, 0xd4, 0x6, - 0xe, 0x96, 0x76, 0xf8, 0x11, 0xc2, 0x1, 0x98, 0xf7, 0x39, 0xf7, 0x8c, - 0xf7, 0x34, 0x3, 0xf7, 0x31, 0x81, 0x15, 0xca, 0x6, 0xdc, 0xf7, 0x9b, - 0xdb, 0xfb, 0x9b, 0x5, 0xc9, 0x6, 0xf6, 0xf8, 0x11, 0x5, 0xaf, 0xc2, - 0xfb, 0x34, 0x54, 0xce, 0x6, 0x39, 0xfb, 0xc4, 0x34, 0xf7, 0xb0, 0x5, - 0x5c, 0x6, 0x35, 0xfb, 0xae, 0x33, 0xf7, 0xc2, 0x5, 0xd6, 0xc2, 0xfb, - 0x39, 0x54, 0xad, 0x6, 0xe, 0x74, 0xa, 0xb0, 0xf7, 0x5b, 0xf7, 0x18, - 0xf7, 0x50, 0x3, 0x9f, 0x16, 0xf7, 0x6d, 0xc1, 0x43, 0x6, 0xf7, 0x1a, - 0xf7, 0x1b, 0xf7, 0x1a, 0xfb, 0x1b, 0x5, 0x43, 0x55, 0xf7, 0x6f, 0xc1, - 0x3f, 0x6, 0xfb, 0x40, 0xf7, 0x3e, 0xf7, 0x28, 0xf7, 0x28, 0x5, 0xd7, - 0xc1, 0xfb, 0x50, 0x55, 0xb6, 0x6, 0xfb, 0x5, 0xfb, 0x5, 0xfb, 0x4, - 0xf7, 0x5, 0x5, 0xbd, 0xc1, 0xfb, 0x5b, 0x55, 0xdb, 0x6, 0xf7, 0x28, - 0xfb, 0x27, 0xfb, 0x40, 0xfb, 0x3f, 0x5, 0x42, 0x6, 0xe, 0xfb, 0x31, - 0xbe, 0xf8, 0x75, 0xbe, 0x6a, 0xa, 0x13, 0xe8, 0x13, 0xd8, 0xc0, 0x21, - 0x15, 0x58, 0xf7, 0x9a, 0xbe, 0x32, 0x7, 0xf7, 0xc1, 0xf8, 0x75, 0x5, - 0xcc, 0xbe, 0xfb, 0x4b, 0x58, 0xc4, 0x6, 0xfb, 0x3d, 0xfb, 0xa1, 0xfb, - 0x34, 0xf7, 0xa1, 0x5, 0xcd, 0xbe, 0xfb, 0x58, 0x58, 0xd0, 0x6, 0xf7, - 0x53, 0xfb, 0xd3, 0x25, 0xfb, 0x36, 0x5, 0xe, 0xfb, 0x31, 0xc0, 0xf8, - 0x87, 0xc0, 0x6a, 0xa, 0x13, 0xd8, 0xf7, 0x3e, 0xf8, 0x89, 0x15, 0xf7, - 0xbc, 0xee, 0x69, 0xd3, 0xfb, 0xa6, 0xfb, 0x21, 0x5, 0x22, 0xfd, 0xf, - 0x15, 0x56, 0xf7, 0x9a, 0xc0, 0x32, 0x7, 0xf7, 0xc1, 0xf8, 0x87, 0x5, - 0xcc, 0xc0, 0xfb, 0x4b, 0x56, 0xc4, 0x6, 0xfb, 0x3c, 0xfb, 0xab, 0xfb, - 0x35, 0xf7, 0xab, 0x5, 0x13, 0xe8, 0xcd, 0xc0, 0xfb, 0x58, 0x56, 0xd0, - 0x6, 0xf7, 0x54, 0xfb, 0xe0, 0x24, 0xfb, 0x3b, 0x5, 0xe, 0xfb, 0x31, - 0xbd, 0xf8, 0x66, 0xbc, 0xd6, 0xf7, 0x4, 0x12, 0x92, 0xf7, 0x58, 0x6b, - 0xe2, 0xce, 0xe0, 0x8a, 0xf7, 0x4b, 0x13, 0xec, 0xf7, 0xd9, 0xf8, 0x77, - 0x15, 0xe0, 0xf7, 0x4, 0x36, 0x80, 0xa, 0x15, 0xe2, 0xf7, 0x4, 0x34, - 0x6, 0x13, 0xd2, 0xfb, 0xa, 0xfd, 0x52, 0x15, 0x59, 0xf7, 0x9a, 0xbd, - 0x32, 0x7, 0xf7, 0xc1, 0xf8, 0x66, 0x5, 0xcc, 0xbc, 0xfb, 0x4b, 0x5a, - 0xc4, 0x6, 0xfb, 0x3c, 0xfb, 0x99, 0xfb, 0x35, 0xf7, 0x99, 0x5, 0xcd, - 0xbc, 0xfb, 0x58, 0x5a, 0xd0, 0x6, 0xf7, 0x54, 0xfb, 0xc9, 0x24, 0xfb, - 0x31, 0x5, 0xe, 0x8b, 0xc1, 0xd8, 0xc1, 0xd1, 0xc2, 0xf7, 0x5a, 0xc1, - 0x1, 0xa5, 0xf7, 0x60, 0xb9, 0xc1, 0xb4, 0xf7, 0x5f, 0x3, 0xf7, 0x3c, - 0x16, 0xf7, 0xa1, 0xc1, 0x20, 0xd8, 0xf7, 0x15, 0xc1, 0xfb, 0x15, 0xd1, - 0xf7, 0x15, 0xc2, 0xfb, 0xd, 0x6, 0xf7, 0x47, 0xf7, 0x5a, 0x5, 0xc4, - 0xc1, 0xfb, 0x5f, 0x55, 0xce, 0x6, 0xfb, 0x1d, 0xfb, 0x2b, 0xfb, 0x1d, - 0xf7, 0x2b, 0x5, 0xcd, 0xc1, 0xfb, 0x60, 0x55, 0xca, 0x6, 0xf7, 0x43, - 0xfb, 0x5a, 0x5, 0xfb, 0x9, 0x54, 0xf7, 0x15, 0x45, 0xfb, 0x15, 0x55, - 0xf7, 0x15, 0x3e, 0xfb, 0x0, 0x6, 0xe, 0x74, 0xa, 0xf7, 0x4, 0xc1, - 0xf7, 0xad, 0xc1, 0x3, 0xed, 0x16, 0xf8, 0x27, 0xf7, 0x2e, 0x55, 0x27, - 0xfb, 0xa3, 0x6, 0xf7, 0xd9, 0xf7, 0xd6, 0x5, 0xbd, 0xfc, 0x19, 0xfb, - 0x2b, 0xc1, 0xec, 0xf7, 0x94, 0x7, 0xfb, 0xd8, 0xfb, 0xd5, 0x5, 0xe, - 0x8b, 0x67, 0xa, 0xbf, 0xc4, 0x1, 0xf7, 0x3, 0xc1, 0xf7, 0xad, 0xc2, - 0x3, 0xf7, 0x9e, 0xf8, 0x7f, 0x15, 0xda, 0x6, 0xf7, 0x27, 0xf7, 0x32, - 0x62, 0x9f, 0xfb, 0x26, 0xfb, 0xd, 0xfb, 0x28, 0xf7, 0xc, 0x62, 0x77, - 0x5, 0x79, 0xfd, 0x1c, 0x15, 0xf8, 0x27, 0xf7, 0x31, 0x54, 0x25, 0xfb, - 0xa3, 0x6, 0xf7, 0xda, 0xf7, 0xdd, 0x5, 0xc2, 0xfc, 0x1a, 0xfb, 0x32, - 0xc1, 0x7, 0x8c, 0xf2, 0x5, 0xf7, 0x98, 0x6, 0xfb, 0xdc, 0xfb, 0xe0, - 0x5, 0xe, 0x7d, 0xc1, 0xf8, 0xa3, 0xc2, 0x1, 0xf5, 0xc4, 0xf7, 0xa5, - 0xc5, 0x3, 0xf5, 0xf7, 0xc4, 0x15, 0xfb, 0x29, 0xa2, 0xfb, 0x3d, 0xf7, - 0x40, 0xf7, 0x45, 0x9b, 0xf7, 0x40, 0xf7, 0x26, 0xf7, 0x1b, 0x78, 0xf7, - 0x4b, 0xfb, 0x41, 0xfb, 0x41, 0x74, 0xfb, 0x49, 0xfb, 0x1d, 0x1e, 0xc4, - 0x16, 0xf7, 0xf, 0x9e, 0xf7, 0x20, 0xf7, 0xc, 0xf7, 0x3, 0xa2, 0xfb, - 0x1f, 0xfb, 0x10, 0xfb, 0x17, 0x78, 0xfb, 0x19, 0xfb, 0xa, 0xfb, 0x6, - 0x75, 0xf7, 0x17, 0xf7, 0x19, 0x1e, 0xe, 0x79, 0x9d, 0xf8, 0x3e, 0x9a, - 0xf7, 0xd, 0x9d, 0xa9, 0x97, 0x6, 0xfb, 0x31, 0x8b, 0x7, 0x1e, 0xa0, - 0x39, 0x63, 0xff, 0xc, 0x9, 0xc2, 0xa, 0xc2, 0xb, 0xf8, 0xec, 0x14, - 0xaa, 0x13, 0x0, 0x63, 0x2, 0x0, 0x1, 0x0, 0x3d, 0x0, 0x70, 0x0, - 0xae, 0x0, 0xb8, 0x0, 0xbd, 0x0, 0xc2, 0x0, 0xc8, 0x0, 0xe5, 0x0, - 0xff, 0x1, 0x18, 0x1, 0x2e, 0x1, 0x38, 0x1, 0x42, 0x1, 0x55, 0x1, - 0x71, 0x1, 0x76, 0x1, 0x80, 0x1, 0x9a, 0x1, 0xa9, 0x1, 0xba, 0x1, - 0xc6, 0x1, 0xd8, 0x2, 0x7, 0x2, 0x1c, 0x2, 0x2c, 0x2, 0x33, 0x2, - 0x5a, 0x2, 0x69, 0x2, 0x73, 0x2, 0x7d, 0x2, 0x88, 0x2, 0x97, 0x2, - 0xa3, 0x2, 0xae, 0x2, 0xb7, 0x2, 0xcf, 0x2, 0xe7, 0x2, 0xfd, 0x3, - 0x4, 0x3, 0xe, 0x3, 0x24, 0x3, 0x3a, 0x3, 0x4e, 0x3, 0x63, 0x3, - 0x76, 0x3, 0x7f, 0x3, 0x88, 0x3, 0x91, 0x3, 0xa5, 0x3, 0xb7, 0x3, - 0xc9, 0x3, 0xdb, 0x3, 0xe3, 0x3, 0xeb, 0x3, 0xf3, 0x3, 0xfb, 0x4, - 0x3, 0x4, 0xe, 0x4, 0x13, 0x4, 0x1e, 0x4, 0x24, 0x4, 0x31, 0x4, - 0x38, 0x4, 0x41, 0x4, 0x4a, 0x4, 0x53, 0x4, 0x5a, 0x4, 0x60, 0x4, - 0x66, 0x4, 0x74, 0x4, 0x81, 0x4, 0x86, 0x4, 0x8a, 0x4, 0x96, 0x4, - 0xa2, 0x4, 0xa8, 0x4, 0xae, 0x4, 0xb9, 0x4, 0xc4, 0x4, 0xce, 0x4, - 0xd9, 0x4, 0xe4, 0x4, 0xeb, 0x4, 0xf2, 0x4, 0xf9, 0x5, 0x0, 0x5, - 0x7, 0x5, 0x11, 0x5, 0x1b, 0x5, 0x24, 0x5, 0x2d, 0x5, 0x36, 0x5, - 0x3f, 0x5, 0x48, 0x5, 0x51, 0x5, 0x58, 0x5, 0x5e, 0x5, 0x64, 0x5, - 0x69, 0x15, 0xfb, 0x37, 0xf3, 0xfb, 0x1a, 0xf7, 0x30, 0xf7, 0x34, 0xe9, - 0xf7, 0x1a, 0xf7, 0x37, 0xe9, 0x5a, 0xf7, 0x5f, 0xfb, 0x60, 0xfb, 0x43, - 0x35, 0xfb, 0x31, 0xfb, 0x20, 0x1e, 0xc1, 0x89, 0x15, 0xe4, 0xc1, 0xf7, - 0x31, 0xf7, 0x2b, 0xf7, 0x2c, 0xba, 0xfb, 0x3d, 0x3e, 0xfb, 0x13, 0x47, - 0xfb, 0x7, 0xfb, 0x15, 0xfb, 0x15, 0x3d, 0xf7, 0x7, 0xf7, 0x13, 0x1e, - 0xb, 0x15, 0xfb, 0x1b, 0xe2, 0x2b, 0xf7, 0x2a, 0xf7, 0x25, 0xe9, 0xed, - 0xf7, 0x19, 0xf7, 0x20, 0x2f, 0xe7, 0xfb, 0x25, 0xfb, 0x1b, 0x23, 0x33, - 0xfb, 0x24, 0x1e, 0xc5, 0x8a, 0x15, 0xe9, 0xc9, 0xdd, 0xf7, 0xb, 0xf7, - 0xe, 0xc2, 0x38, 0x2e, 0x39, 0x4b, 0x2f, 0xfb, 0x8, 0xfb, 0xa, 0x4f, - 0xe7, 0xdd, 0x1e, 0xe, 0x15, 0xf8, 0x36, 0x6, 0xf7, 0x14, 0x45, 0xf7, - 0xe, 0xfb, 0x3b, 0xfb, 0x1c, 0x24, 0x24, 0xfb, 0x1f, 0xfb, 0xc, 0xd1, - 0x25, 0xf7, 0x47, 0xdd, 0xe0, 0xa6, 0xb0, 0xcd, 0x1e, 0x7a, 0xc0, 0x5, - 0x5f, 0x3b, 0x3c, 0x79, 0x5b, 0x1b, 0x2a, 0x24, 0xb8, 0xf7, 0x6, 0x1f, - 0x8d, 0xc3, 0x15, 0xc7, 0x93, 0xc2, 0xd9, 0xf7, 0x8, 0x1b, 0xf7, 0x19, - 0xa9, 0x2e, 0x5e, 0x96, 0x1f, 0xe, 0x26, 0xa, 0x13, 0x7c, 0x29, 0xa, - 0x13, 0xbc, 0x2a, 0xa, 0x25, 0xa, 0x3c, 0xa, 0xb, 0x2d, 0xa, 0x27, - 0xa, 0xb, 0x28, 0xa, 0x3d, 0xa, 0x1f, 0xb, 0xf7, 0x60, 0xc1, 0x57, - 0x6, 0xfb, 0x60, 0xf8, 0x93, 0x5, 0xfb, 0x82, 0x55, 0xf7, 0x20, 0x6, - 0xfb, 0x48, 0xfc, 0x5d, 0x5, 0x4f, 0x6, 0xf7, 0x4e, 0xf7, 0x45, 0x15, - 0xb, 0x15, 0x9a, 0xab, 0xe0, 0xa7, 0xd1, 0x1b, 0xd7, 0xc3, 0x8b, 0x21, - 0x1f, 0x6b, 0x7, 0x92, 0x5e, 0x59, 0x92, 0x59, 0x1b, 0xfb, 0x3c, 0x55, - 0x33, 0x50, 0xb, 0x36, 0xf7, 0x1e, 0xc3, 0x38, 0xf7, 0x88, 0x7, 0xeb, - 0x59, 0xc3, 0xfb, 0x14, 0x45, 0x3a, 0x77, 0x73, 0x4f, 0x1e, 0xf7, 0xe1, - 0xfb, 0x94, 0x15, 0xb, 0x4e, 0x58, 0x46, 0x5c, 0x38, 0x1b, 0x4c, 0x60, - 0xb4, 0xb2, 0xe1, 0xf7, 0x6, 0x91, 0xcb, 0xb8, 0xb6, 0x85, 0x83, 0xb6, - 0x1f, 0xe, 0x38, 0xa, 0x13, 0x78, 0x3b, 0xa, 0x13, 0xb8, 0x33, 0xa, - 0x26, 0xa, 0x13, 0x7f, 0x29, 0xa, 0x13, 0xbf, 0x2a, 0xa, 0xf7, 0x63, - 0xc1, 0x32, 0x6, 0xb9, 0xf7, 0xf, 0x5, 0xf7, 0xa6, 0x6, 0xba, 0xfb, - 0xf, 0x5, 0x2c, 0x55, 0xb, 0xf7, 0x38, 0x39, 0xc4, 0xf7, 0x6f, 0x52, - 0x38, 0xfb, 0x38, 0xf7, 0x5e, 0xf7, 0xc2, 0xfb, 0x1b, 0xc4, 0xf7, 0x51, - 0xfc, 0x85, 0x55, 0xde, 0xfc, 0x5d, 0x38, 0x6, 0xb, 0x40, 0xa, 0x2e, - 0xa, 0xb, 0xf7, 0x19, 0x31, 0xa, 0xb7, 0xf7, 0x14, 0x4f, 0xa, 0xb, - 0xf7, 0x11, 0xd9, 0xd6, 0xf7, 0x27, 0x1e, 0xf7, 0xc4, 0xd8, 0xc2, 0xfb, - 0x7c, 0x54, 0xf2, 0xfb, 0xc3, 0x7, 0xfb, 0xe, 0x42, 0x5d, 0x3c, 0x31, - 0x4b, 0xb, 0xf8, 0x2c, 0xc1, 0xfb, 0x43, 0xf8, 0x5c, 0x42, 0xa, 0xfc, - 0x5c, 0xfb, 0x43, 0x6, 0xb, 0x58, 0x63, 0x57, 0x54, 0x4b, 0x1b, 0x42, - 0x63, 0xb6, 0xd5, 0x1f, 0xf7, 0xac, 0xfb, 0x1c, 0x7, 0xe, 0x15, 0xda, - 0xfb, 0xc1, 0x6, 0xfb, 0x1a, 0xd5, 0x30, 0x30, 0xa, 0xb, 0xf8, 0x2e, - 0xc2, 0xfb, 0x43, 0xf8, 0x12, 0xfb, 0x5c, 0x54, 0xf7, 0x24, 0xfb, 0xdb, - 0xfb, 0x47, 0x6, 0xb, 0xf7, 0xc8, 0xc1, 0xfb, 0x11, 0xf7, 0x43, 0x6, - 0xf7, 0x45, 0xf7, 0xae, 0x5, 0xd0, 0xc1, 0xfb, 0x5c, 0x55, 0xd1, 0x6, - 0xfb, 0x25, 0xfb, 0x78, 0xfb, 0x27, 0xf7, 0x78, 0x5, 0xd2, 0xc1, 0xfb, - 0x5d, 0x55, 0xcf, 0x6, 0xf7, 0x49, 0xfb, 0xae, 0x5, 0xfb, 0x43, 0xfb, - 0x12, 0x7, 0xb, 0x15, 0xdd, 0x6, 0xf7, 0x2a, 0xf7, 0x34, 0x60, 0x9d, - 0xfb, 0x27, 0xfb, 0xd, 0xfb, 0x2c, 0xf7, 0xd, 0x62, 0x78, 0x5, 0xe, - 0x15, 0xde, 0xfb, 0x90, 0x6, 0x2e, 0xcf, 0x58, 0xe2, 0xb3, 0xbe, 0x9b, - 0xd5, 0xd7, 0x1e, 0xb, 0x27, 0xa, 0x13, 0x40, 0x3c, 0xa, 0xb, 0x15, - 0x48, 0xbd, 0x51, 0xd9, 0xd4, 0xc1, 0xc4, 0xd0, 0xcc, 0x62, 0xc6, 0x33, - 0x3e, 0x5a, 0x4f, 0x4a, 0x1e, 0xc3, 0x8a, 0x15, 0xb5, 0xa6, 0xa9, 0xb9, - 0xb8, 0xa6, 0x6a, 0x65, 0x68, 0x71, 0x68, 0x5d, 0x61, 0x6c, 0xa5, 0xb6, - 0x1e, 0xb, 0x3d, 0xf7, 0x1c, 0xc2, 0x38, 0xf8, 0x14, 0xfb, 0x1c, 0x54, - 0xde, 0xfb, 0x80, 0x7, 0xb, 0xf7, 0x3, 0xf7, 0xbb, 0xf7, 0xb, 0xfb, - 0xbb, 0x5, 0xb, 0x49, 0xc5, 0x44, 0xf4, 0xd9, 0xd2, 0xb7, 0xc0, 0xc3, - 0xb, 0x41, 0xa, 0x12, 0xba, 0xc5, 0xf7, 0xc9, 0xc3, 0x13, 0xbc, 0xb, - 0x7c, 0xc1, 0x61, 0x67, 0xa, 0x12, 0xf7, 0x4, 0xc0, 0xf7, 0xa1, 0xc0, - 0x13, 0xb8, 0xb, 0xf8, 0x85, 0xf7, 0x51, 0x53, 0xfb, 0x1b, 0xfb, 0xc3, - 0xf7, 0x5d, 0xb, 0x7c, 0xc3, 0x5f, 0xc3, 0xf7, 0x34, 0xc3, 0xf7, 0x10, - 0xc3, 0xb, 0xf7, 0x3e, 0xc1, 0xfc, 0x24, 0x55, 0xf7, 0x40, 0xb, 0xd1, - 0xee, 0xcf, 0xc8, 0x67, 0x5b, 0xb7, 0x1f, 0x40, 0xc2, 0xf7, 0x6a, 0x54, - 0x49, 0x7, 0xae, 0x65, 0x4f, 0xaa, 0x40, 0x1b, 0xfb, 0x37, 0xb, 0x3c, - 0x1b, 0xfb, 0x2a, 0x3d, 0x22, 0x32, 0x30, 0xd3, 0x28, 0xf7, 0x2f, 0xcc, - 0xd5, 0xa1, 0xba, 0xb3, 0x1f, 0xfb, 0x9, 0x7, 0x33, 0x51, 0xb, 0x15, - 0xc3, 0x6, 0xef, 0xf7, 0x7e, 0x5, 0x31, 0x6, 0xe7, 0xfb, 0x7e, 0x15, - 0xc6, 0x6, 0xec, 0xf7, 0x7e, 0x5, 0x32, 0x6, 0xe, 0x8b, 0xc2, 0xf8, - 0x58, 0xc2, 0x1, 0xb, 0x4e, 0xa, 0xf7, 0x78, 0x77, 0x1, 0x61, 0xa, - 0x3, 0xb, 0x15, 0xf7, 0x9f, 0xc0, 0x21, 0xf7, 0xd5, 0xf5, 0xc0, 0x21, - 0xcd, 0x6, 0xdb, 0xce, 0x9e, 0xde, 0x74, 0x1e, 0x94, 0xbe, 0x5, 0xb, - 0x15, 0xf7, 0x27, 0xe9, 0xf7, 0x24, 0x2d, 0xb4, 0x9c, 0xfb, 0x26, 0xf7, - 0x19, 0x5, 0x3b, 0x6, 0xfb, 0x27, 0xfb, 0x19, 0x5, 0xb, 0x92, 0x72, - 0x71, 0x8f, 0x74, 0x1b, 0x3c, 0x4e, 0x62, 0x30, 0x1f, 0x43, 0x21, 0x56, - 0xf5, 0xfb, 0xd5, 0x21, 0x7, 0xe, 0x53, 0x8c, 0x15, 0x46, 0xc4, 0x52, - 0xd0, 0xd0, 0xc5, 0xc4, 0xd0, 0xd0, 0x51, 0xc5, 0x46, 0x46, 0x52, 0x51, - 0x46, 0x1e, 0xb, 0x15, 0x6d, 0xa6, 0x6e, 0xb5, 0xab, 0xab, 0xa3, 0xad, - 0xaa, 0x72, 0xa9, 0x63, 0x65, 0x6d, 0x70, 0x6a, 0x1e, 0xe, 0x8b, 0xc1, - 0xf7, 0xf, 0xc1, 0xf7, 0xac, 0xc1, 0xb, 0x8b, 0xc1, 0xf7, 0x5d, 0xc1, - 0xf7, 0x5e, 0xc1, 0xb, 0x1e, 0xf7, 0xbf, 0xf5, 0xc2, 0xfb, 0x81, 0x7, - 0xb, 0x5, 0x80, 0xbf, 0xe8, 0x7a, 0xdd, 0x1b, 0xf7, 0xe, 0xd8, 0xc0, - 0xf0, 0x1f, 0xf8, 0x11, 0xc9, 0xbe, 0xfb, 0x7, 0xb, 0x6e, 0xa2, 0x74, - 0xa8, 0xa8, 0xa2, 0xa2, 0xa8, 0xa8, 0x74, 0xa2, 0x6e, 0x6e, 0x74, 0x74, - 0x6e, 0x1e, 0xb, 0x64, 0xab, 0x75, 0xb2, 0xb2, 0xab, 0xa1, 0xb2, 0xb2, - 0x6b, 0xa1, 0x64, 0x64, 0x6b, 0x75, 0x64, 0x1e, 0xb, 0xfb, 0x31, 0xf7, - 0x60, 0xd4, 0xd4, 0xa0, 0xa5, 0xca, 0x1f, 0xf7, 0x41, 0xbd, 0xc2, 0xfb, - 0x9f, 0x7, 0xb, 0x8e, 0xf7, 0x63, 0xf7, 0x4b, 0xf7, 0x60, 0xb, 0x1, - 0xeb, 0xbf, 0xf7, 0xc6, 0xbf, 0x3, 0xb, 0x1, 0xc6, 0xc5, 0xf7, 0xf7, - 0xca, 0x3, 0xb, 0x1, 0xb6, 0xc1, 0xf8, 0x28, 0xc3, 0x3, 0xb, 0x1, - 0xc9, 0xc5, 0xf7, 0xfa, 0xc7, 0x3, 0xb, 0x15, 0xe0, 0xf7, 0x7, 0x36, - 0x6, 0xfb, 0x2b, 0x60, 0xa, 0xb, 0x5e, 0xa, 0x56, 0xa, 0xb, 0x55, - 0xa, 0x9c, 0xf8, 0x90, 0x15, 0xda, 0xfb, 0xc1, 0x6, 0xb, 0xf7, 0x7e, - 0x5, 0x2f, 0x6, 0xe, 0x6, 0xf7, 0x30, 0xf7, 0xf, 0x6f, 0xb0, 0xfb, - 0x79, 0xfb, 0x4d, 0x5, 0xe, 0x7c, 0x82, 0xa, 0xf7, 0x1e, 0xc3, 0xb, - 0xf7, 0x7e, 0x1, 0xf7, 0x6e, 0xf7, 0x37, 0x3, 0xb, 0xfb, 0x7, 0x15, - 0xe2, 0xf7, 0x7, 0x34, 0x6, 0xb, 0xf7, 0x1a, 0xc2, 0xf7, 0x38, 0xc4, - 0xdd, 0xc3, 0xb, 0x15, 0xde, 0xf7, 0x9, 0x38, 0x6, 0xb, 0x7c, 0xc3, - 0xf7, 0xf2, 0xc4, 0xb, 0x79, 0xc0, 0xf8, 0x7c, 0xc0, 0xb, 0x15, 0xb2, - 0xab, 0xab, 0xb2, 0xb2, 0xab, 0x6b, 0x64, 0x64, 0x6b, 0x6b, 0x64, 0xb, - 0xfb, 0x31, 0xbe, 0xf7, 0x12, 0xbc, 0xf7, 0xc9, 0xbe, 0x5c, 0xbf, 0x12, - 0xb, 0xc2, 0xf7, 0xdd, 0xc2, 0xb, 0x1, 0xf7, 0xa6, 0xb, 0x32, 0x58, - 0x3a, 0x3e, 0x50, 0x29, 0x27, 0x40, 0xc9, 0xd7, 0x1e, 0xb, 0x12, 0x92, - 0xf7, 0x58, 0xfb, 0x2a, 0xf7, 0x9a, 0xe9, 0xf7, 0x4b, 0xb, 0x79, 0xc2, - 0xf8, 0x6b, 0xc2, 0xb, 0x8b, 0xc1, 0xf8, 0x5c, 0xc1, 0xb, 0xf7, 0x7e, - 0x1, 0xf7, 0x23, 0xf7, 0xce, 0x3, 0xf7, 0x23, 0xb, 0xf8, 0x85, 0xf7, - 0x43, 0x1, 0xf7, 0x4e, 0xf7, 0x77, 0x3, 0xb, 0x8b, 0xc2, 0xf7, 0xdb, - 0xc2, 0x68, 0xa, 0xc3, 0x3, 0xb, 0xf7, 0x7, 0x15, 0xa7, 0xb8, 0xfb, - 0x2e, 0xf7, 0x4, 0x5, 0xb, 0x15, 0xa7, 0x73, 0xf7, 0x3e, 0xf7, 0x10, - 0x5f, 0xbe, 0x5, 0xb, 0x15, 0xdc, 0xf7, 0x9, 0x3a, 0x6, 0xb, 0xc2, - 0x3, 0xea, 0x16, 0xf8, 0x2e, 0xb, 0x8b, 0xc1, 0xf7, 0xd2, 0xc1, 0x1, - 0xb, 0x8b, 0xc1, 0xf8, 0x5a, 0xc1, 0x1, 0xb, 0x15, 0xe5, 0xf7, 0x8, - 0x31, 0x6, 0xb, 0x15, 0xb7, 0x6, 0x9d, 0xf7, 0x8f, 0x5, 0x3a, 0x6, - 0xb, 0xf7, 0x4d, 0x6f, 0x66, 0xf7, 0x30, 0xfb, 0xf, 0x5, 0xb, 0x15, - 0xf7, 0xac, 0x26, 0x96, 0xa9, 0xfb, 0x96, 0xb, 0x1, 0xf7, 0x79, 0xf7, - 0x22, 0x3, 0xf7, 0x79, 0xb, 0xd1, 0xf8, 0xc, 0x1, 0xe7, 0xf8, 0x34, - 0x3, 0xb, 0xf7, 0x5e, 0x15, 0xf7, 0x36, 0xfb, 0x17, 0x6, 0xb, 0xf7, - 0xa4, 0xbe, 0x1, 0x73, 0xf9, 0x1c, 0x3, 0xb, 0xf8, 0xa9, 0x15, 0xd4, - 0xf7, 0x10, 0x42, 0x6, 0xb, 0xf7, 0xf, 0x1e, 0xf0, 0x54, 0x7, 0xe, - 0x6, 0xfb, 0x2e, 0xfb, 0x4, 0xb, 0x1, 0xf7, 0xa5, 0xc4, 0x3, 0xb, - 0xc2, 0xf7, 0x33, 0xc3, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp deleted file mode 100644 index 58df84debe..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp +++ /dev/null @@ -1,1514 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitFixedBoldFontData[18055] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x13, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x2d, 0x42, - 0x6f, 0x6c, 0x64, 0x0, 0x1, 0x1, 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, - 0x2a, 0x1, 0xf8, 0x2b, 0x2, 0xf8, 0x2c, 0x3, 0xf8, 0x14, 0x4, 0xfb, - 0x5, 0xfb, 0x8d, 0xf9, 0x5d, 0xf9, 0xbf, 0x5, 0xf7, 0xa0, 0xf, 0xf9, - 0x6, 0x11, 0xae, 0x1c, 0x40, 0xc8, 0x12, 0x0, 0x12, 0x1, 0x1, 0x5, - 0x7, 0x9, 0x11, 0x19, 0x1f, 0x25, 0x29, 0x2d, 0x39, 0x42, 0x49, 0x53, - 0x5c, 0x65, 0x8f, 0xa3, 0xb2, 0x49, 0x64, 0x6f, 0x74, 0x49, 0x4a, 0x69, - 0x6a, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x73, 0x63, 0x65, - 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x67, - 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x6c, 0x69, 0x72, 0x61, 0x45, 0x75, 0x72, - 0x6f, 0x70, 0x72, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, 0x74, 0x61, 0x72, - 0x72, 0x6f, 0x77, 0x75, 0x70, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x64, 0x6f, 0x77, 0x6e, - 0x61, 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x46, 0x69, 0x78, - 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x43, - 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, 0x4f, - 0x54, 0x46, 0x0, 0x0, 0x1, 0x0, 0x1, 0x6, 0x0, 0x68, 0x0, 0x0, - 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, 0x67, 0x0, 0x0, - 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, - 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, - 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, - 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, - 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, - 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, - 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, - 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, - 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, - 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, - 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, - 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, - 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, - 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, - 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, - 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, - 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, - 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, - 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x1, 0x87, 0x0, 0x0, 0x91, 0x0, 0x1, - 0x88, 0x1, 0x0, 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, - 0x94, 0x0, 0x1, 0x8a, 0x1, 0x0, 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, - 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, 0x65, 0x0, 0x1, 0x8c, 0x1, 0x0, - 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, - 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, - 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, - 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, - 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, - 0x8e, 0x2, 0x0, 0x99, 0x0, 0x1, 0x91, 0x4, 0x0, 0xa6, 0x0, 0x0, - 0x6d, 0x1, 0x0, 0xf4, 0x2, 0x0, 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, - 0x34, 0x0, 0x60, 0x0, 0xc1, 0x1, 0x42, 0x1, 0xcc, 0x2, 0x52, 0x2, - 0x68, 0x2, 0x9d, 0x2, 0xd2, 0x3, 0x2, 0x3, 0x26, 0x3, 0x39, 0x3, - 0x4e, 0x3, 0x67, 0x3, 0x7e, 0x3, 0xc4, 0x3, 0xe8, 0x4, 0x2f, 0x4, - 0x8e, 0x4, 0xc1, 0x5, 0xf, 0x5, 0x77, 0x5, 0x96, 0x6, 0xc, 0x6, - 0x73, 0x6, 0x86, 0x6, 0xa9, 0x6, 0xc6, 0x6, 0xe4, 0x7, 0x1, 0x7, - 0x5f, 0x7, 0xff, 0x8, 0x3d, 0x8, 0xa0, 0x8, 0xee, 0x9, 0x22, 0x9, - 0x69, 0x9, 0xb0, 0x9, 0xd8, 0xa, 0x12, 0xa, 0x26, 0xa, 0x57, 0xa, - 0x94, 0xa, 0xb6, 0xa, 0xf8, 0xb, 0x2d, 0xb, 0x76, 0xb, 0xb7, 0xc, - 0x32, 0xc, 0x86, 0xc, 0xfa, 0xd, 0x26, 0xd, 0x64, 0xd, 0x94, 0xd, - 0xcc, 0xe, 0xf, 0xe, 0x45, 0xe, 0x6f, 0xe, 0x8b, 0xe, 0x9f, 0xe, - 0xbb, 0xe, 0xea, 0xe, 0xf6, 0xf, 0xc, 0xf, 0x73, 0xf, 0xd4, 0x10, - 0x1d, 0x10, 0x7c, 0x10, 0xc8, 0x11, 0x6, 0x11, 0x43, 0x11, 0x90, 0x11, - 0xc3, 0x12, 0x7, 0x12, 0x43, 0x12, 0x56, 0x12, 0xb6, 0x12, 0xfd, 0x13, - 0x39, 0x13, 0x97, 0x13, 0xdd, 0x14, 0x1d, 0x14, 0x95, 0x14, 0xd4, 0x15, - 0x29, 0x15, 0x51, 0x15, 0x91, 0x15, 0xd0, 0x16, 0x7, 0x16, 0x3f, 0x16, - 0xa5, 0x16, 0xb5, 0x17, 0x1b, 0x17, 0x62, 0x17, 0x94, 0x17, 0xe6, 0x18, - 0x64, 0x18, 0xd4, 0x19, 0x29, 0x19, 0x41, 0x19, 0xe1, 0x1a, 0x7, 0x1a, - 0x90, 0x1a, 0xf6, 0x1b, 0x29, 0x1b, 0x44, 0x1b, 0xd1, 0x1b, 0xe4, 0x1c, - 0x1e, 0x1c, 0x4b, 0x1c, 0x95, 0x1c, 0xfe, 0x1d, 0x14, 0x1d, 0x76, 0x1d, - 0xa3, 0x1d, 0xbf, 0x1d, 0xf9, 0x1e, 0x25, 0x1e, 0x5f, 0x1e, 0x93, 0x1e, - 0xf6, 0x1f, 0x64, 0x1f, 0xff, 0x20, 0x60, 0x20, 0x81, 0x20, 0xa0, 0x20, - 0xca, 0x21, 0x23, 0x21, 0x4c, 0x21, 0x8d, 0x21, 0xf8, 0x22, 0x7b, 0x22, - 0x8e, 0x22, 0xc1, 0x22, 0xf5, 0x23, 0x31, 0x23, 0x49, 0x23, 0x68, 0x23, - 0x93, 0x23, 0xc1, 0x24, 0xc, 0x24, 0x7f, 0x24, 0xa0, 0x24, 0xba, 0x24, - 0xdf, 0x25, 0x33, 0x25, 0x5a, 0x25, 0x89, 0x26, 0x6, 0x26, 0x1e, 0x26, - 0x35, 0x26, 0x5d, 0x26, 0x92, 0x26, 0xdd, 0x27, 0x26, 0x27, 0xb4, 0x27, - 0xd5, 0x27, 0xf6, 0x28, 0x26, 0x28, 0x8b, 0x28, 0xcc, 0x29, 0x8, 0x29, - 0xb0, 0x2a, 0x2c, 0x2a, 0x46, 0x2a, 0x5f, 0x2a, 0x83, 0x2a, 0xa2, 0x2a, - 0xb8, 0x2a, 0xcd, 0x2a, 0xf5, 0x2b, 0x3a, 0x2b, 0xab, 0x2c, 0x35, 0x2c, - 0x54, 0x2c, 0x70, 0x2c, 0x95, 0x2c, 0xe7, 0x2d, 0xa, 0x2d, 0x29, 0x2d, - 0xbd, 0x2d, 0xd4, 0x2d, 0xea, 0x2e, 0xe, 0x2e, 0x5a, 0x2e, 0x86, 0x2e, - 0xe6, 0x2f, 0x21, 0x2f, 0x4b, 0x2f, 0x5c, 0x2f, 0xa1, 0x30, 0x14, 0x30, - 0x4e, 0x30, 0x7b, 0x30, 0xe8, 0x31, 0x65, 0x32, 0x14, 0x32, 0xc5, 0x33, - 0x60, 0x33, 0xf4, 0x34, 0x57, 0x34, 0xa2, 0x34, 0xf2, 0x35, 0x4f, 0x35, - 0x9b, 0x35, 0xeb, 0x36, 0xe, 0x36, 0x1b, 0x36, 0x4a, 0x36, 0x61, 0x36, - 0x96, 0x36, 0xca, 0x37, 0x9, 0x37, 0x31, 0x37, 0x44, 0x37, 0x57, 0x37, - 0x6e, 0x37, 0x80, 0x37, 0x94, 0x37, 0xa2, 0x37, 0xb7, 0x37, 0xce, 0x37, - 0xee, 0x38, 0x22, 0x38, 0x43, 0x38, 0x90, 0x39, 0x34, 0x39, 0x4d, 0x39, - 0x6b, 0x39, 0x82, 0x3a, 0x8, 0x3a, 0x89, 0x3a, 0xf0, 0x3b, 0x34, 0x3b, - 0x41, 0x3b, 0x63, 0x3b, 0x71, 0x3b, 0x94, 0x3b, 0xa8, 0x3b, 0xb4, 0x3c, - 0x11, 0x3c, 0x6a, 0xe, 0xe, 0x7c, 0xf7, 0x31, 0xf8, 0x44, 0x77, 0x1, - 0xf7, 0x7e, 0xf7, 0x17, 0x3, 0xf7, 0x89, 0xf7, 0x4b, 0x15, 0xf7, 0x2, - 0x6, 0x9f, 0xf8, 0x19, 0x5, 0xfb, 0x2b, 0x6, 0x75, 0xfc, 0x90, 0x15, - 0x5f, 0xb7, 0x68, 0xc1, 0xc1, 0xb7, 0xae, 0xb7, 0xb7, 0x5f, 0xad, 0x55, - 0x55, 0x5f, 0x69, 0x5f, 0x1e, 0xe, 0xf7, 0xb8, 0x76, 0xf7, 0xb7, 0x77, - 0x1, 0xf7, 0x28, 0xf7, 0x6, 0xd6, 0xf7, 0x5, 0x3, 0xf7, 0xe5, 0xf7, - 0xa9, 0x15, 0xf7, 0x5, 0x6, 0x9a, 0x59, 0xa, 0xfb, 0x22, 0x6, 0xfb, - 0x43, 0xfb, 0xb1, 0x15, 0xf7, 0x6, 0x6, 0x9b, 0x59, 0xa, 0xfb, 0x23, - 0x6, 0xe, 0x5e, 0x76, 0xf7, 0x75, 0xe6, 0xf3, 0xe6, 0xf7, 0x54, 0x77, - 0x1, 0xf7, 0x24, 0xe3, 0xf3, 0xe7, 0x3, 0xf7, 0x1d, 0x5e, 0x15, 0xe4, - 0x6, 0x98, 0xf7, 0x60, 0x5, 0xf4, 0x6, 0x7c, 0xfb, 0x60, 0x5, 0xe8, - 0x6, 0x98, 0xf7, 0x60, 0x5, 0xf7, 0x1, 0xe6, 0x24, 0x6, 0x91, 0xf3, - 0x5, 0xec, 0xe6, 0x30, 0x6, 0x92, 0xf7, 0x62, 0x5, 0x31, 0x6, 0x83, - 0xfb, 0x62, 0x5, 0x24, 0x6, 0x92, 0xf7, 0x62, 0x5, 0x32, 0x6, 0x82, - 0xfb, 0x62, 0x5, 0xfb, 0x4, 0x30, 0xf6, 0x6, 0x84, 0x23, 0x5, 0x27, - 0x30, 0xea, 0x6, 0xe9, 0xe6, 0x15, 0x93, 0xf3, 0x5, 0xf1, 0x6, 0x85, - 0x23, 0x5, 0xe, 0x22, 0x76, 0xf7, 0x13, 0xf7, 0x54, 0xf7, 0x56, 0xf7, - 0x53, 0x20, 0xf7, 0x57, 0x12, 0xe0, 0xef, 0xcb, 0xef, 0xbf, 0xee, 0x3a, - 0xee, 0x13, 0xdd, 0xdc, 0x8c, 0x15, 0xef, 0xa9, 0x6, 0x84, 0x9f, 0xa6, - 0x86, 0xa0, 0x1b, 0xfb, 0x25, 0xef, 0xf7, 0x24, 0x7, 0xb1, 0x92, 0xf7, - 0x17, 0xa1, 0xf7, 0x13, 0x1a, 0xf3, 0x37, 0x9e, 0x20, 0xa7, 0x1e, 0x62, - 0x97, 0x26, 0x9d, 0xc1, 0x1a, 0xc0, 0xd9, 0x94, 0xaa, 0x1e, 0x13, 0xee, - 0xb0, 0xb0, 0x81, 0x7c, 0xac, 0x1f, 0x50, 0xee, 0xf7, 0x53, 0x28, 0x6c, - 0x7, 0x7b, 0x93, 0x7a, 0x91, 0x78, 0x8e, 0x8, 0x13, 0xdd, 0xf1, 0x27, - 0x26, 0x7, 0x46, 0x82, 0x2c, 0x67, 0xfb, 0x7, 0x1a, 0x21, 0xde, 0x76, - 0xf7, 0xe, 0x69, 0x1e, 0xb6, 0x80, 0xe1, 0x83, 0x56, 0x1a, 0x55, 0x25, - 0x87, 0x6f, 0x66, 0x67, 0x91, 0x9a, 0x68, 0x1e, 0xc5, 0x27, 0x7, 0xe, - 0x91, 0x76, 0xf7, 0x5f, 0xd1, 0xdd, 0xd0, 0xf7, 0x1c, 0xd2, 0x12, 0xc7, - 0xd2, 0xf7, 0x9, 0xd2, 0x64, 0xd1, 0xf7, 0xa, 0xd2, 0x13, 0xfb, 0xc7, - 0xf8, 0x71, 0x15, 0x42, 0xc3, 0x4c, 0xe3, 0x8a, 0x1e, 0xdb, 0xcd, 0xc5, - 0xdb, 0xd1, 0x52, 0xcf, 0x34, 0x36, 0x4e, 0x48, 0x43, 0x1f, 0xd2, 0x8c, - 0x15, 0xae, 0xa5, 0xab, 0xba, 0x1e, 0x13, 0xeb, 0xba, 0xa8, 0x6c, 0x67, - 0x5d, 0x64, 0x74, 0x65, 0x5e, 0x70, 0xac, 0xaf, 0x1f, 0x13, 0xfd, 0xf7, - 0x9, 0xfb, 0xf7, 0x15, 0x43, 0xc5, 0x4a, 0xe3, 0x8a, 0x1e, 0x13, 0x45, - 0xda, 0xcd, 0xc5, 0xdc, 0xd2, 0x52, 0xce, 0x35, 0x36, 0x4c, 0x49, 0x42, - 0x1f, 0xd2, 0x8c, 0x15, 0xad, 0xa6, 0xad, 0xbb, 0x1e, 0x13, 0x5, 0xb9, - 0xa7, 0x6a, 0x68, 0x5c, 0x66, 0x76, 0x65, 0x5d, 0x6f, 0xab, 0xaf, 0x1f, - 0xfb, 0x6b, 0xb3, 0x15, 0x13, 0x0, 0xf8, 0x46, 0xf7, 0x63, 0x6f, 0xcf, - 0xfc, 0x47, 0xfb, 0x6a, 0x5, 0xe, 0x7c, 0xe7, 0x3b, 0xe8, 0xf7, 0xa, - 0xe8, 0xf7, 0x28, 0xe9, 0x12, 0xb8, 0xec, 0x68, 0xec, 0x13, 0xb8, 0xf7, - 0x2f, 0xf7, 0xc4, 0x15, 0x4d, 0x6d, 0x5b, 0x4f, 0x45, 0x1a, 0x46, 0xbd, - 0x31, 0xf7, 0xb, 0xdb, 0xad, 0xad, 0x9d, 0xa3, 0x1e, 0x13, 0x74, 0xb3, - 0x63, 0x5, 0xf7, 0x37, 0xe8, 0xfb, 0xc, 0x6, 0x6f, 0xa4, 0x9f, 0xa8, - 0x97, 0xac, 0x98, 0xaa, 0x19, 0xde, 0xe8, 0xfb, 0x27, 0x6, 0x86, 0x73, - 0x77, 0x52, 0x7c, 0x71, 0x30, 0xf7, 0xd, 0x18, 0x7c, 0x9f, 0x65, 0xbd, - 0xa2, 0x1a, 0xaa, 0xa8, 0x95, 0xae, 0xb5, 0xbe, 0x73, 0x79, 0x98, 0x1e, - 0xc2, 0xd0, 0x5, 0xb3, 0x66, 0x4b, 0xa6, 0x4f, 0x1b, 0x38, 0x3d, 0x63, - 0x2e, 0x5a, 0xb2, 0x64, 0x93, 0x7b, 0x1f, 0xbe, 0x43, 0x15, 0xe7, 0x6a, - 0xa, 0x13, 0xb8, 0x74, 0x77, 0x6d, 0x7d, 0x6c, 0x1b, 0x54, 0x78, 0xb5, - 0xa9, 0xb8, 0xb1, 0xa4, 0xa4, 0x9a, 0x1f, 0xe, 0x4c, 0xa, 0xf7, 0x7d, - 0xf7, 0x19, 0x3, 0xf7, 0x84, 0xf7, 0xa9, 0x15, 0xf7, 0xb, 0x6, 0x99, - 0x59, 0xa, 0xfb, 0x26, 0x6, 0xe, 0x3a, 0x76, 0xf9, 0x62, 0x77, 0x1, - 0xf7, 0x47, 0xf7, 0x1, 0x3, 0xf7, 0xd3, 0x25, 0x15, 0xf1, 0x6, 0x53, - 0xe2, 0x3e, 0xf7, 0xf, 0xf7, 0x52, 0x1a, 0xf7, 0x2b, 0xc4, 0xc0, 0xd7, - 0xf7, 0x6, 0x1e, 0x29, 0x6, 0x32, 0x27, 0x54, 0x27, 0xfb, 0xb, 0x1a, - 0xfb, 0x17, 0xa0, 0xfb, 0x0, 0xf7, 0xb, 0xfb, 0x34, 0x1e, 0xe, 0x3a, - 0x76, 0xf9, 0x62, 0x77, 0x1, 0xf7, 0xcc, 0xf7, 0x1, 0x3, 0xf7, 0x47, - 0x25, 0x15, 0xf1, 0x6, 0xf7, 0xb, 0xf7, 0x34, 0xa0, 0xf7, 0x0, 0xf7, - 0x17, 0x1a, 0xf7, 0xb, 0x54, 0xef, 0x32, 0xef, 0x1e, 0x29, 0x6, 0xd7, - 0xfb, 0x6, 0xc4, 0x56, 0xfb, 0x2b, 0x1a, 0xfb, 0x52, 0x3e, 0xfb, 0xf, - 0x53, 0x34, 0x1e, 0xe, 0xf7, 0x8e, 0xf1, 0x3, 0xf7, 0x22, 0xf7, 0xac, - 0x15, 0xdf, 0x4e, 0xd6, 0xf7, 0xc, 0xd6, 0xfb, 0xb, 0xdf, 0xc8, 0x33, - 0xf2, 0xf7, 0x1d, 0xad, 0x69, 0xed, 0xfb, 0x14, 0x59, 0x95, 0xf7, 0x1b, - 0x5, 0x6b, 0xa, 0x93, 0xfb, 0x19, 0xfb, 0x13, 0xbb, 0x67, 0x28, 0xf7, - 0x20, 0x6a, 0x5, 0xe, 0xc7, 0x76, 0xf7, 0x41, 0xe9, 0xf7, 0x40, 0x67, - 0xa, 0xed, 0x3, 0xd2, 0xf7, 0x68, 0x15, 0xf7, 0x48, 0xfb, 0x41, 0xed, - 0xf7, 0x41, 0xf7, 0x48, 0xe9, 0xfb, 0x48, 0xf7, 0x40, 0x29, 0xfb, 0x40, - 0xfb, 0x48, 0x6, 0xe, 0x31, 0x45, 0xa, 0xf7, 0x39, 0xfb, 0x3, 0x15, - 0xf7, 0x14, 0x6, 0xf7, 0x22, 0x59, 0xa, 0xfb, 0x3d, 0x6, 0xe, 0xf7, - 0x5f, 0xf7, 0x2, 0x1, 0xef, 0xf8, 0x24, 0x3, 0xef, 0xf7, 0x5f, 0x15, - 0xf8, 0x24, 0xf7, 0x2, 0xfc, 0x24, 0x6, 0xe, 0x7c, 0xf7, 0x4e, 0x6d, - 0xa, 0xd9, 0x15, 0x58, 0xbc, 0x61, 0xc6, 0xc6, 0xbc, 0xb5, 0xbe, 0xbe, - 0x5a, 0xb5, 0x50, 0x50, 0x5a, 0x61, 0x58, 0x1e, 0xe, 0x53, 0x76, 0xf9, - 0x53, 0x77, 0x1, 0xed, 0xf8, 0x28, 0x3, 0xed, 0x5d, 0x15, 0xd0, 0x6c, - 0xf7, 0xe3, 0xf9, 0x34, 0x45, 0xaa, 0x5, 0xe, 0x7c, 0xe8, 0xf8, 0x51, - 0xe8, 0x1, 0xe2, 0xed, 0xf7, 0x7c, 0xeb, 0x3, 0xe2, 0xf7, 0xbe, 0x15, - 0x42, 0x99, 0xfb, 0x84, 0xf7, 0x5c, 0xf7, 0x60, 0x93, 0xf7, 0x84, 0xd5, - 0xd4, 0x78, 0xf7, 0x88, 0xfb, 0x53, 0xfb, 0x66, 0x85, 0xfb, 0x86, 0x3f, - 0x1e, 0xed, 0x8c, 0x15, 0xc6, 0x8d, 0x90, 0xf7, 0x39, 0xf7, 0x1, 0x1b, - 0xf7, 0x3, 0x90, 0xfb, 0x3c, 0x50, 0x3b, 0x7c, 0xfb, 0x1e, 0x28, 0x20, - 0x80, 0xf7, 0x1f, 0xdd, 0x1f, 0xe, 0x8b, 0xe8, 0xf8, 0x9f, 0x77, 0x1, - 0xf7, 0x91, 0xec, 0x3, 0xd2, 0x16, 0xf8, 0x5e, 0xe8, 0xfb, 0x47, 0xf8, - 0x9f, 0x6, 0xfb, 0x9e, 0x56, 0x5, 0x30, 0x7, 0xf7, 0x3d, 0xad, 0x5, - 0xfc, 0x31, 0xfb, 0x4a, 0x7, 0xe, 0x8b, 0xea, 0x2c, 0xf7, 0x34, 0xf7, - 0xfe, 0xe9, 0x12, 0xf2, 0xed, 0xf7, 0x6f, 0xee, 0x13, 0x78, 0xdc, 0x16, - 0xf8, 0x4a, 0xf7, 0x34, 0x2c, 0x6, 0x13, 0xb8, 0x4a, 0xfb, 0x4c, 0x7, - 0xf7, 0x1, 0xe8, 0xf7, 0x3e, 0xf7, 0x17, 0xef, 0x1a, 0xef, 0x42, 0xec, - 0xfb, 0x1d, 0x39, 0x43, 0x69, 0x4d, 0x57, 0x1e, 0x34, 0xed, 0x7, 0xdf, - 0xe1, 0x90, 0xa6, 0xca, 0xb6, 0x68, 0x48, 0x58, 0xfb, 0xb, 0x28, 0xfb, - 0x70, 0xfb, 0x45, 0x1e, 0xe, 0x7c, 0xe8, 0xf7, 0x50, 0xe8, 0xf7, 0x37, - 0xe9, 0x12, 0xf8, 0x1b, 0xf2, 0x44, 0xeb, 0x13, 0xe8, 0xdc, 0xb3, 0x15, - 0x79, 0xbe, 0xcc, 0x66, 0xed, 0x1b, 0xdb, 0xf7, 0x24, 0xb7, 0xf7, 0x23, - 0xe1, 0x5e, 0xaa, 0x5b, 0xac, 0x1f, 0x13, 0xf0, 0xba, 0xa1, 0xa1, 0xc4, - 0xc1, 0x1a, 0xf7, 0x6, 0x8a, 0x2a, 0xba, 0x23, 0x1b, 0x40, 0x6a, 0x6f, - 0x66, 0x4f, 0x1f, 0xad, 0x42, 0x5, 0xb2, 0xd3, 0x9f, 0x90, 0xb6, 0x1b, - 0xc8, 0xb0, 0x77, 0x50, 0x3e, 0x33, 0x84, 0x4e, 0x1f, 0x2e, 0x7, 0x13, - 0xe8, 0xe6, 0xe4, 0x7f, 0x39, 0x4d, 0x4f, 0x6b, 0x46, 0x57, 0x56, 0x9b, - 0xaf, 0x40, 0x1f, 0xe, 0x8b, 0xe9, 0xdf, 0xe9, 0xf7, 0xec, 0x77, 0x1, - 0xf7, 0xe3, 0xeb, 0x3, 0xd4, 0xf7, 0x46, 0x15, 0xf7, 0x9a, 0x37, 0x23, - 0x2d, 0xf7, 0xbc, 0xe9, 0x2b, 0xdf, 0xe8, 0xe9, 0x2e, 0xf7, 0xec, 0x24, - 0x6, 0xfb, 0x93, 0xfb, 0xf9, 0x5, 0xf7, 0x2, 0x98, 0x15, 0xf7, 0x2c, - 0xf7, 0x73, 0x5, 0xfb, 0x73, 0x7, 0xe, 0x7c, 0xe7, 0xf7, 0x75, 0xe5, - 0xf7, 0x8, 0xe8, 0x1, 0xf7, 0x9, 0xeb, 0xf7, 0x6c, 0xeb, 0x3, 0xd5, - 0xaf, 0x15, 0x7b, 0xb1, 0xeb, 0x68, 0xe1, 0x1b, 0xf7, 0x31, 0xd5, 0xee, - 0xf6, 0xf7, 0x7, 0x3f, 0xe1, 0xfb, 0xa, 0x67, 0x63, 0x89, 0x7e, 0x61, - 0x1f, 0xf7, 0x17, 0xf7, 0xb2, 0xe8, 0xfc, 0x12, 0xfb, 0xaf, 0x7, 0xbc, - 0x52, 0xb3, 0xa8, 0xbd, 0x98, 0xb8, 0x8a, 0x19, 0xd0, 0x8a, 0xc6, 0x64, - 0x41, 0x1a, 0x4c, 0x5b, 0x5b, 0x36, 0x48, 0x4d, 0xa3, 0xa1, 0x51, 0x1e, - 0xe, 0x7c, 0xe4, 0xf7, 0x69, 0xe9, 0xf7, 0x1c, 0xe6, 0x1, 0xdf, 0xf7, - 0x2, 0xf7, 0x6a, 0xec, 0x3, 0xf7, 0x51, 0xf7, 0xee, 0x15, 0xf7, 0x19, - 0xa5, 0xf7, 0x1, 0xb1, 0xf7, 0xd, 0x1b, 0xa0, 0xa0, 0x8f, 0x87, 0xa0, - 0x1f, 0x92, 0xe9, 0x5, 0x8e, 0x73, 0x73, 0x85, 0x75, 0x1b, 0xfb, 0xf, - 0x31, 0x6c, 0x40, 0x46, 0x1f, 0x5f, 0x59, 0x68, 0x32, 0x30, 0x1a, 0xfb, - 0x21, 0xce, 0xfb, 0x26, 0xf7, 0x30, 0xf6, 0xe6, 0xde, 0xf7, 0x3, 0xf7, - 0x12, 0x45, 0xd7, 0xfb, 0x16, 0x56, 0x75, 0x7f, 0x74, 0x62, 0x1e, 0x90, - 0xfb, 0x17, 0x15, 0x8b, 0xa2, 0xd3, 0xdf, 0xdc, 0xa5, 0x5a, 0x53, 0x48, - 0x5e, 0x62, 0x51, 0x43, 0x64, 0xd6, 0xcd, 0x1e, 0xe, 0xa0, 0x76, 0xf8, - 0x90, 0xe8, 0x1, 0xe5, 0xed, 0x3, 0xf7, 0x5d, 0x16, 0xf6, 0x6, 0xf7, - 0x5c, 0xf8, 0x8e, 0x8c, 0xea, 0x5, 0xfc, 0x37, 0xfb, 0x48, 0xed, 0xe2, - 0xf7, 0x6e, 0x6, 0xe, 0x7c, 0xe8, 0xf7, 0x53, 0xe9, 0xf7, 0x22, 0xe9, - 0x12, 0xde, 0xee, 0x32, 0xee, 0xf7, 0x6c, 0xec, 0x36, 0xec, 0x13, 0xf2, - 0xf7, 0x3d, 0xf7, 0xd5, 0x15, 0x58, 0x69, 0x68, 0x57, 0x4d, 0x1a, 0xfb, - 0x13, 0xf7, 0x9, 0x4e, 0xef, 0xf7, 0x10, 0xe8, 0xc7, 0xf7, 0x12, 0xcc, - 0x6c, 0xbc, 0x55, 0xb0, 0x1e, 0x13, 0xec, 0xb7, 0xac, 0xa8, 0xb8, 0xc9, - 0x1a, 0xf0, 0x34, 0xc5, 0xfb, 0xa, 0xfb, 0x16, 0x3e, 0x43, 0x31, 0x54, - 0xa7, 0x5c, 0xbb, 0x67, 0x1e, 0xa2, 0xf7, 0x19, 0x15, 0xbb, 0xb7, 0xaa, - 0xcb, 0xe0, 0xa2, 0x6b, 0x5d, 0x51, 0x54, 0x6c, 0x56, 0x50, 0x5a, 0xae, - 0xc0, 0x1e, 0x13, 0xf2, 0x81, 0xfb, 0xaf, 0x15, 0xc0, 0xc2, 0xb8, 0xca, - 0xde, 0xb0, 0x57, 0x5d, 0x4f, 0x69, 0x6d, 0x37, 0x3e, 0x60, 0xb6, 0xba, - 0x1e, 0xe, 0x7c, 0xe8, 0xf7, 0x1a, 0xed, 0xf7, 0x68, 0xe9, 0x1, 0xe5, - 0xf1, 0xf7, 0x6d, 0xf5, 0x3, 0xdf, 0x81, 0x15, 0x88, 0xa6, 0xa5, 0x89, - 0xa4, 0x1b, 0xf7, 0x3c, 0xf7, 0xf, 0xcd, 0xf7, 0x28, 0xb7, 0x1f, 0x97, - 0xb3, 0x91, 0xb8, 0xbf, 0x1a, 0xf7, 0x3, 0x6d, 0xf7, 0x42, 0xfb, 0x4e, - 0xfb, 0xb, 0x31, 0x2d, 0x26, 0xfb, 0x0, 0xd8, 0x23, 0xf7, 0x13, 0xb6, - 0xac, 0x9c, 0x9a, 0xa4, 0x1e, 0xfb, 0xd, 0x6f, 0x3b, 0x5c, 0xfb, 0x14, - 0x1b, 0x75, 0x74, 0x8d, 0x8d, 0x73, 0x1f, 0xf7, 0xd3, 0xf7, 0xcd, 0x15, - 0x87, 0x8c, 0x6f, 0x3c, 0x37, 0x1b, 0x50, 0x5c, 0xb8, 0xd1, 0xd4, 0xca, - 0xa6, 0xb9, 0xe1, 0x97, 0x42, 0x50, 0x95, 0x1f, 0xe, 0x7c, 0xf7, 0x44, - 0xe1, 0xf7, 0x44, 0x6d, 0xa, 0xf7, 0xe5, 0x15, 0x37, 0xa, 0xfb, 0x9c, - 0x4, 0x37, 0xa, 0xe, 0x31, 0x76, 0xf8, 0x7, 0xf7, 0x44, 0x1, 0xf7, - 0x76, 0xf7, 0x6c, 0x3, 0xf7, 0x31, 0xfb, 0x3, 0x15, 0xf7, 0x1c, 0x6, - 0xf7, 0x29, 0xf7, 0xad, 0x5, 0xfb, 0x46, 0x6, 0x65, 0xf7, 0x3b, 0x15, - 0x37, 0xa, 0xe, 0x5e, 0xa, 0xf7, 0x5c, 0x15, 0xf8, 0x5d, 0xfb, 0x4d, - 0x5, 0xe9, 0x7, 0xfb, 0xf6, 0xf7, 0x2a, 0xf7, 0xf6, 0xf7, 0x28, 0x5, - 0xe9, 0x7, 0xfc, 0x5d, 0xfb, 0x4c, 0x5, 0xe, 0xf7, 0xa, 0xf1, 0xd7, - 0xf1, 0x1, 0xd2, 0xf8, 0x5e, 0x3, 0xd2, 0xf7, 0xbc, 0x15, 0xf8, 0x5e, - 0xf1, 0xfc, 0x5e, 0x6, 0xfb, 0xac, 0x4, 0xf8, 0x5e, 0xf1, 0xfc, 0x5e, - 0x6, 0xe, 0x5e, 0xa, 0x9a, 0x15, 0xf8, 0x5d, 0xf7, 0x4d, 0x5, 0xf7, - 0x9, 0x7, 0xfc, 0x5d, 0xf7, 0x4c, 0x5, 0x2d, 0x7, 0xf7, 0xf9, 0xfb, - 0x28, 0xfb, 0xf9, 0xfb, 0x2a, 0x5, 0xe, 0x80, 0xf7, 0x2a, 0xf7, 0xf1, - 0xe7, 0x12, 0xed, 0xec, 0x7e, 0xf7, 0x41, 0xbd, 0xeb, 0x13, 0xe8, 0xf7, - 0x70, 0xf7, 0x45, 0x15, 0xec, 0xc8, 0x6, 0xc0, 0x97, 0xf7, 0x17, 0xb0, - 0xf7, 0x10, 0x1a, 0xf7, 0x1, 0x2b, 0xc7, 0xfb, 0xd, 0x53, 0x3e, 0x7d, - 0x77, 0x56, 0x1e, 0xfb, 0x23, 0xec, 0xd6, 0x7, 0xa8, 0x92, 0xae, 0x8f, - 0xad, 0x8a, 0x8, 0xc6, 0x8a, 0xc0, 0x76, 0x54, 0x1a, 0x13, 0x90, 0x40, - 0x2b, 0x7a, 0x32, 0x7d, 0x1e, 0x13, 0xd8, 0x65, 0xfb, 0x88, 0x15, 0x62, - 0xb1, 0x69, 0xbb, 0xbb, 0xb2, 0xad, 0xb4, 0xb4, 0x64, 0xad, 0x5b, 0x5b, - 0x65, 0x69, 0x62, 0x1e, 0xe, 0x79, 0xd3, 0xd2, 0xd4, 0xf7, 0x85, 0x77, - 0xe6, 0xd0, 0x1, 0x9e, 0xdf, 0xcc, 0xd0, 0xf7, 0x9b, 0xdb, 0x3, 0xf7, - 0xea, 0xf7, 0x3b, 0x15, 0x6a, 0xa1, 0xaf, 0x82, 0x9d, 0x1b, 0xc8, 0xf0, - 0xc0, 0xf7, 0x26, 0xbd, 0x81, 0xbc, 0x72, 0xb3, 0x1f, 0xde, 0x57, 0x2f, - 0xac, 0x30, 0x1b, 0xfb, 0x2d, 0xfb, 0x1e, 0x23, 0xfb, 0x5d, 0xfb, 0x1, - 0xbf, 0xfb, 0x4b, 0xf7, 0x78, 0xf7, 0x13, 0xd4, 0xc4, 0xa4, 0xb1, 0x1f, - 0x6f, 0xcf, 0x5, 0x54, 0x3d, 0x4c, 0x74, 0x3f, 0x1b, 0xfb, 0x2d, 0x67, - 0xf7, 0x1b, 0xe3, 0xc9, 0xa2, 0xf7, 0x3f, 0xf7, 0x4c, 0xf7, 0xb, 0xd2, - 0x44, 0x23, 0x3c, 0x69, 0x51, 0x63, 0x7d, 0x77, 0x91, 0xa3, 0x90, 0x8b, - 0x8f, 0x8d, 0x91, 0x1f, 0xbe, 0xf7, 0x52, 0x5, 0x46, 0x6, 0x85, 0x79, - 0x5, 0xa3, 0x74, 0x7e, 0x8b, 0x7d, 0x1b, 0xfb, 0x4, 0x63, 0xfb, 0xe, - 0x3a, 0x35, 0xbe, 0x72, 0xad, 0xac, 0xab, 0x9c, 0xa4, 0xa3, 0x1f, 0x22, - 0xd0, 0x15, 0xc3, 0xa5, 0xd4, 0xbc, 0xa3, 0x8d, 0x74, 0x82, 0x70, 0x77, - 0xfb, 0x0, 0x4f, 0x7b, 0x86, 0x9d, 0x9f, 0x1e, 0xe, 0x8b, 0xe6, 0xd8, - 0xe6, 0xf7, 0x68, 0xe6, 0x1, 0x82, 0x16, 0xf7, 0x8d, 0xe6, 0x31, 0x6, - 0xab, 0xd8, 0x5, 0xf7, 0x80, 0x6, 0xae, 0x3e, 0x5, 0x35, 0x30, 0xf7, - 0x86, 0xe6, 0x52, 0x6, 0xfb, 0x62, 0xf8, 0x6b, 0x5, 0xfb, 0x90, 0x30, - 0xf7, 0x15, 0x6, 0xfb, 0x3f, 0xfc, 0x10, 0x5, 0x4e, 0x6, 0xf7, 0x7c, - 0xf7, 0x3c, 0x15, 0xdb, 0xf7, 0x40, 0xd7, 0xfb, 0x40, 0x5, 0xe, 0x8b, - 0xe6, 0xf7, 0x2e, 0xe6, 0xf7, 0x1b, 0xe6, 0x12, 0xf7, 0x2, 0xeb, 0xf7, - 0x7f, 0xea, 0x4e, 0xeb, 0x13, 0xf4, 0xa7, 0x16, 0xf7, 0xc4, 0x6, 0xf7, - 0x49, 0xc5, 0xcf, 0xeb, 0xb8, 0x78, 0xb5, 0x3f, 0xb7, 0x1f, 0x13, 0xf8, - 0xb2, 0xa8, 0xa0, 0xb4, 0xb7, 0x1a, 0xcd, 0x5a, 0xe2, 0xfb, 0x2d, 0x1e, - 0xfb, 0xc6, 0x30, 0xdd, 0xfc, 0x10, 0x39, 0x6, 0xf7, 0x46, 0xf7, 0x89, - 0x15, 0xf7, 0x1b, 0xf7, 0x12, 0x7, 0xe6, 0x9d, 0x67, 0x6e, 0x4d, 0x3e, - 0x83, 0x6b, 0x1f, 0xfb, 0x12, 0xfb, 0x89, 0x15, 0xf7, 0x2e, 0xf7, 0x12, - 0x7, 0x13, 0xf4, 0xa4, 0xf7, 0xa, 0x8a, 0x3b, 0x4a, 0x55, 0x83, 0x32, - 0x1f, 0xe, 0x79, 0xe7, 0xf8, 0x33, 0xe6, 0x1, 0xaa, 0xec, 0xf7, 0xed, - 0xeb, 0x3, 0xf8, 0x95, 0xf7, 0x20, 0x15, 0x74, 0x6a, 0x40, 0x60, 0x37, - 0x1b, 0xfb, 0x1c, 0x52, 0xf3, 0xf5, 0xf7, 0x2e, 0xf7, 0x8, 0xbe, 0xd6, - 0xc1, 0xc1, 0x77, 0x70, 0xb9, 0x1f, 0x22, 0xeb, 0xf7, 0x87, 0x2b, 0x61, - 0x7, 0x95, 0x7d, 0x55, 0xab, 0x34, 0x1b, 0xfb, 0x3a, 0xfb, 0xd, 0xfb, - 0x10, 0xfb, 0x3f, 0xfb, 0x8, 0xcf, 0xfb, 0x4f, 0xf7, 0x75, 0xda, 0xe0, - 0x90, 0xd1, 0xdb, 0x1f, 0x8c, 0x8a, 0x5, 0xe, 0x32, 0xa, 0xf0, 0xeb, - 0xf7, 0xaf, 0xf1, 0x3, 0x9d, 0x16, 0xf7, 0x87, 0x6, 0xf7, 0x30, 0xf7, - 0x39, 0xce, 0xf7, 0x75, 0xf7, 0x47, 0xfb, 0x9, 0xe6, 0xfb, 0x45, 0x1f, - 0xfb, 0xa2, 0x7a, 0xa, 0x6, 0xf7, 0x47, 0x16, 0xf8, 0x10, 0x7, 0xf7, - 0x90, 0xaa, 0x39, 0x26, 0xfb, 0x1d, 0x41, 0x4f, 0xfb, 0x65, 0x1f, 0xe, - 0x8b, 0xe6, 0x30, 0xf7, 0x58, 0xb8, 0xe5, 0xac, 0xf7, 0x5a, 0x30, 0xe6, - 0x12, 0xf7, 0x7, 0xef, 0xf7, 0x3, 0xee, 0xb6, 0xee, 0x13, 0x77, 0xb1, - 0x16, 0xf8, 0xa5, 0xf7, 0x58, 0x28, 0x6, 0x13, 0xaf, 0x22, 0xfb, 0x91, - 0xf7, 0x2a, 0xf7, 0x3, 0x4a, 0xee, 0xf7, 0x70, 0x28, 0x4a, 0xfb, 0x3, - 0xf7, 0x20, 0xf7, 0x91, 0x7, 0x13, 0xb7, 0x20, 0xee, 0xf7, 0x5a, 0xfc, - 0xa5, 0x7, 0x13, 0xaf, 0x30, 0xd8, 0xfc, 0x10, 0x3e, 0x7, 0xe, 0x8b, - 0xe6, 0xf7, 0x28, 0xe6, 0xae, 0xf7, 0x58, 0x31, 0xe5, 0x90, 0x77, 0x12, - 0xf7, 0x6, 0xed, 0xf7, 0x8, 0xed, 0xb2, 0xef, 0x13, 0xd7, 0xad, 0x16, - 0xf7, 0xd5, 0xe6, 0xfb, 0x23, 0xf7, 0x28, 0xf7, 0x8, 0x4b, 0xed, 0xf7, - 0x70, 0x29, 0x4a, 0xfb, 0x8, 0xf7, 0x21, 0xf7, 0x91, 0x6, 0x13, 0xe7, - 0x21, 0xef, 0x7, 0x13, 0xcf, 0xf7, 0x5d, 0x7, 0x13, 0xd7, 0xfc, 0xa7, - 0x2b, 0x6, 0xdb, 0x8c, 0x5, 0xfc, 0x10, 0x3b, 0x7, 0xe, 0x79, 0xe9, - 0xf1, 0xea, 0xf7, 0x6c, 0xe6, 0x1, 0x99, 0xed, 0xf7, 0xc7, 0xed, 0x3, - 0x46, 0xa, 0xda, 0xf7, 0x17, 0xf7, 0x21, 0xe6, 0xc9, 0xed, 0x41, 0xa, - 0xfb, 0x5, 0xfb, 0x4d, 0xfb, 0x62, 0xf7, 0x33, 0x2d, 0xf7, 0x36, 0x58, - 0xa, 0xe, 0x8b, 0xe6, 0xf7, 0x23, 0xe6, 0xf7, 0x26, 0xe6, 0x1, 0xec, - 0xe8, 0xf7, 0x70, 0xe8, 0x3, 0x9f, 0x16, 0xf7, 0x8c, 0xe6, 0x3d, 0xf7, - 0x23, 0xf7, 0x70, 0xfb, 0x23, 0x3e, 0x30, 0xf7, 0x8b, 0xe6, 0x3e, 0xf8, - 0x10, 0xd8, 0xe6, 0xfb, 0x88, 0x30, 0xd5, 0xfb, 0x26, 0xfb, 0x70, 0xf7, - 0x26, 0xd7, 0xe6, 0xfb, 0x8a, 0x30, 0xd8, 0xfc, 0x10, 0x3e, 0x6, 0xe, - 0x32, 0xa, 0xf7, 0x8f, 0xf0, 0x60, 0xa, 0xe6, 0xfb, 0x3f, 0xf8, 0x10, - 0x74, 0xa, 0xfc, 0x10, 0xfb, 0x42, 0x6, 0xe, 0x79, 0xe5, 0xf8, 0x22, - 0xe7, 0x1, 0x9d, 0xed, 0xf7, 0x85, 0xeb, 0x3, 0x9d, 0xbd, 0x15, 0x7a, - 0xab, 0xef, 0x58, 0xf5, 0x1b, 0xf7, 0x12, 0xd2, 0xd5, 0xf7, 0x1f, 0x1f, - 0xf7, 0xa7, 0xf7, 0x15, 0xe7, 0xfc, 0x24, 0x2f, 0xf7, 0x43, 0xfb, 0xa8, - 0x7, 0x49, 0x80, 0x53, 0x2e, 0x3d, 0x50, 0x78, 0xa, 0x32, 0xa, 0xe9, - 0xee, 0x3, 0x96, 0x16, 0xf7, 0x9c, 0xe6, 0x39, 0xf7, 0x2, 0x6, 0xc6, - 0xc0, 0xcf, 0x34, 0xc5, 0x2a, 0xbe, 0x45, 0x19, 0xf7, 0x34, 0xe6, 0x20, - 0x6, 0x5d, 0xce, 0x4c, 0xe1, 0x54, 0xcf, 0xf7, 0x44, 0xf7, 0x33, 0x18, - 0xcf, 0xe6, 0xfb, 0x86, 0x30, 0xb6, 0x6, 0xfb, 0x3e, 0xfb, 0x2d, 0x5, - 0xf7, 0x2d, 0xda, 0xe6, 0xfb, 0x99, 0x7a, 0xa, 0x7, 0xe, 0x32, 0xa, - 0xf7, 0x17, 0xec, 0xf7, 0x86, 0xee, 0x3, 0xa9, 0x16, 0xf8, 0xaf, 0xf7, - 0x92, 0x28, 0xfb, 0x37, 0xfb, 0x86, 0xf8, 0x10, 0xf7, 0x14, 0xe6, 0xfb, - 0xda, 0x30, 0xf0, 0xfc, 0x10, 0x26, 0x6, 0xe, 0x32, 0xa, 0xd2, 0xe7, - 0xf7, 0xab, 0xe7, 0x3, 0x89, 0x16, 0xf7, 0x90, 0xe6, 0x2c, 0x6, 0x9b, - 0xf7, 0xce, 0xf1, 0xfb, 0xa2, 0x5, 0xc6, 0x6, 0xf4, 0xf7, 0x9f, 0x96, - 0xfb, 0xcb, 0x5, 0x32, 0x30, 0xf7, 0x86, 0xe6, 0x4d, 0x6, 0x81, 0xf8, - 0x10, 0x5, 0xd4, 0xe6, 0xfb, 0x52, 0x6, 0x20, 0xfb, 0xac, 0x25, 0xf7, - 0xac, 0x5, 0xfb, 0x5f, 0x30, 0xda, 0x6, 0x7b, 0xfc, 0x10, 0x5, 0x4a, - 0x6, 0xe, 0x7f, 0xe8, 0xf8, 0x18, 0xe8, 0x1, 0xd8, 0xe8, 0xf7, 0x9a, - 0xe5, 0x3, 0x8a, 0x7f, 0x15, 0xf7, 0x8e, 0xe8, 0x3c, 0xf7, 0xd1, 0x6, - 0xf7, 0x9a, 0xfc, 0x2e, 0x5, 0xe5, 0xf8, 0x75, 0xda, 0xe8, 0xfb, 0x96, - 0x2e, 0xe0, 0xfb, 0xc5, 0x6, 0xfb, 0x8b, 0xf8, 0x22, 0x5, 0xfb, 0x4a, - 0x2e, 0xd9, 0xfc, 0x18, 0x3d, 0x6, 0xe, 0x79, 0xe7, 0xf8, 0x30, 0xe9, - 0x1, 0xa1, 0xee, 0xf7, 0xfd, 0xeb, 0x3, 0xa1, 0xf7, 0xab, 0x15, 0xfb, - 0x5c, 0xf7, 0x25, 0x2a, 0xf7, 0x1a, 0xf2, 0xf7, 0x42, 0xd5, 0xf7, 0x76, - 0xf7, 0x21, 0x2f, 0xf7, 0x31, 0xfb, 0x4d, 0xfb, 0x42, 0x22, 0xfb, 0x25, - 0xfb, 0x30, 0x1e, 0xeb, 0x8e, 0x15, 0xe9, 0xca, 0xf7, 0x2, 0xf7, 0xc, - 0xf7, 0x1d, 0xb9, 0xfb, 0x16, 0x44, 0x38, 0x5a, 0xfb, 0x14, 0xfb, 0x1a, - 0xfb, 0xd, 0x4d, 0xf7, 0x0, 0xef, 0x1e, 0xe, 0x8b, 0xe6, 0xef, 0xe7, - 0xf7, 0x50, 0xe6, 0x1, 0xf7, 0x13, 0xed, 0xf7, 0x7d, 0xec, 0x3, 0xb7, - 0x16, 0xf7, 0xca, 0xe6, 0xfb, 0x15, 0xef, 0x6, 0xf7, 0x8d, 0xdc, 0xbd, - 0xf7, 0x17, 0xf7, 0x5f, 0xfb, 0x36, 0x78, 0xfb, 0xf1, 0x91, 0x1f, 0x7a, - 0xa, 0x7, 0xf7, 0x49, 0xf7, 0x54, 0x15, 0xf7, 0x50, 0x7, 0xf7, 0x20, - 0x84, 0xe8, 0x99, 0x24, 0x1a, 0x26, 0x25, 0x9b, 0xfb, 0x17, 0x84, 0x1e, - 0xe, 0xfb, 0x9, 0x76, 0xb8, 0xf7, 0x49, 0xf8, 0x24, 0xe7, 0x12, 0xa6, - 0xeb, 0xf7, 0xf7, 0xea, 0x17, 0xf7, 0xa, 0x46, 0x15, 0xb6, 0x46, 0x5, - 0xab, 0xc7, 0xa5, 0x98, 0xaf, 0x1b, 0xa9, 0xa4, 0x80, 0x81, 0xa4, 0x1f, - 0x81, 0xa3, 0xa4, 0x82, 0xa8, 0x1b, 0xc2, 0xaa, 0xa6, 0xb8, 0xb9, 0x1f, - 0x51, 0xca, 0x5, 0x68, 0x66, 0x7e, 0x83, 0x79, 0x1b, 0x73, 0x70, 0x9b, - 0xa1, 0x6b, 0x1f, 0xf7, 0x26, 0xb1, 0xca, 0xf7, 0xf, 0xf7, 0x10, 0x1a, - 0xde, 0x5a, 0xf7, 0x6b, 0xfb, 0x75, 0xfb, 0x1f, 0xfb, 0x19, 0x27, 0xfb, - 0x56, 0xfb, 0x20, 0xd1, 0x2f, 0xf0, 0x62, 0x1e, 0x40, 0xf7, 0xa6, 0x15, - 0xf7, 0x2e, 0xf6, 0xba, 0xd0, 0x1e, 0x13, 0x58, 0xf7, 0xb, 0xc7, 0x24, - 0x25, 0x1f, 0x13, 0x50, 0xfb, 0x2c, 0x21, 0x60, 0x41, 0x3b, 0x2c, 0xbc, - 0xf7, 0x2a, 0x1e, 0xe, 0x8b, 0xe6, 0xf7, 0x18, 0xe6, 0xf7, 0x31, 0xe6, - 0x1, 0xec, 0xef, 0xf7, 0x7a, 0xee, 0x3, 0x97, 0x16, 0xf7, 0x9d, 0xe6, - 0x3b, 0xf7, 0x18, 0xde, 0x6, 0xe4, 0xfb, 0x9, 0xb6, 0x4d, 0xa9, 0x5f, - 0x8, 0xf7, 0x25, 0xe6, 0x33, 0x6, 0xfb, 0x4, 0xf7, 0x2a, 0x5, 0xf6, - 0x9d, 0xab, 0xcf, 0xd1, 0x1a, 0xf7, 0x8, 0x27, 0xbc, 0xfb, 0x8, 0x1e, - 0xfb, 0xba, 0x30, 0xdc, 0xfc, 0x10, 0x36, 0x6, 0xf7, 0x4d, 0xf7, 0x73, - 0x15, 0xf7, 0x31, 0x7, 0xf7, 0x49, 0xbc, 0x92, 0x39, 0x31, 0x39, 0x93, - 0xfb, 0x28, 0x1f, 0xe, 0x8b, 0xe3, 0xf8, 0x17, 0xe3, 0x94, 0x77, 0x12, - 0xd3, 0xe6, 0x41, 0xe7, 0xf7, 0x80, 0xe6, 0x45, 0xe5, 0x13, 0xd2, 0xd3, - 0x16, 0xe6, 0xae, 0x6, 0x81, 0x9f, 0xb9, 0x72, 0xd5, 0x1b, 0xf7, 0xe, - 0xf2, 0xcc, 0xf5, 0xf7, 0x24, 0xfb, 0x2a, 0x87, 0x21, 0x9a, 0x1f, 0x13, - 0xcc, 0x72, 0x8f, 0x49, 0x95, 0xc5, 0x1a, 0xb5, 0xb9, 0xae, 0xdc, 0xb2, - 0xb0, 0x88, 0x7d, 0xac, 0x1e, 0x2e, 0xe6, 0x7, 0x13, 0xb4, 0xf7, 0x63, - 0x30, 0x76, 0x7, 0x13, 0xca, 0x99, 0x6a, 0x64, 0x89, 0x62, 0x1b, 0xfb, - 0x22, 0x42, 0x32, 0x3d, 0xfb, 0x22, 0xf7, 0x1d, 0x81, 0xf7, 0x6, 0x82, - 0x1f, 0xbd, 0x87, 0xbb, 0x78, 0x62, 0x1a, 0x5b, 0x64, 0x68, 0x2b, 0x1e, - 0x13, 0xd4, 0x58, 0x5c, 0x9b, 0xa3, 0x61, 0x1f, 0xd3, 0x30, 0x7, 0xe, - 0x32, 0xa, 0xb4, 0xee, 0xf7, 0x3, 0xed, 0xf7, 0x3, 0xee, 0x14, 0x38, - 0xf7, 0xe, 0x16, 0xf7, 0xe6, 0xe6, 0xfb, 0x3, 0xf8, 0x10, 0xf7, 0x3, - 0xfb, 0x5, 0xee, 0xf7, 0x60, 0xfc, 0x9a, 0xfb, 0x60, 0xee, 0xf7, 0x5, - 0xf7, 0x3, 0xfc, 0x10, 0xfb, 0x15, 0x6, 0xe, 0x79, 0xe7, 0xf8, 0x20, - 0xe7, 0x1, 0xde, 0xe9, 0xf7, 0x8b, 0xe9, 0x3, 0x8f, 0xf8, 0x6a, 0x15, - 0xda, 0xfb, 0xa2, 0x6, 0xfb, 0x28, 0xd2, 0x45, 0xf7, 0x25, 0xf7, 0x13, - 0xe7, 0xc4, 0xf7, 0x21, 0x1e, 0xf7, 0xb6, 0xd9, 0xe7, 0xfb, 0x96, 0x2f, - 0xe1, 0xfb, 0x9a, 0x7, 0x35, 0x73, 0x5b, 0x24, 0xfb, 0x4, 0x83, 0xcb, - 0xc0, 0x1e, 0xf7, 0xab, 0xdf, 0xe7, 0xfb, 0x95, 0x7, 0xe, 0xa0, 0x76, - 0xf8, 0x6b, 0xe6, 0x1, 0x7e, 0xf7, 0x8a, 0xf7, 0x1a, 0xf7, 0x8a, 0x3, - 0xf7, 0x90, 0x16, 0xeb, 0x6, 0xf7, 0x58, 0xf8, 0x6b, 0x5, 0xd0, 0xe6, - 0xfb, 0x8a, 0x30, 0xde, 0x6, 0xfb, 0x28, 0xfb, 0xf4, 0xfb, 0x1f, 0xf7, - 0xf4, 0x5, 0xd1, 0xe6, 0xfb, 0x8a, 0x30, 0xd8, 0x6, 0xe, 0xa0, 0x76, - 0xf8, 0x6b, 0xe6, 0x1, 0xed, 0x16, 0xde, 0x6, 0xf7, 0xa, 0xf7, 0xbc, - 0xf7, 0xc, 0xfb, 0xbc, 0x5, 0xdd, 0x6, 0xcf, 0xf8, 0x6b, 0x5, 0xbc, - 0xe6, 0xfb, 0x78, 0x30, 0xe1, 0x6, 0x69, 0xfb, 0xab, 0x21, 0xf7, 0x94, - 0x5, 0x45, 0x6, 0x23, 0xfb, 0x96, 0x67, 0xf7, 0xad, 0x5, 0xe0, 0xe6, - 0xfb, 0x79, 0x30, 0xbc, 0x6, 0xe, 0x32, 0xa, 0x97, 0x16, 0xf7, 0x8c, - 0xe6, 0x45, 0x6, 0xf7, 0x1, 0xf7, 0x1b, 0xf7, 0x1, 0xfb, 0x1b, 0x5, - 0x4d, 0x30, 0xf7, 0x86, 0xe6, 0x47, 0x6, 0xfb, 0x37, 0xf7, 0x5f, 0xf7, - 0x23, 0xf7, 0x45, 0x5, 0xd1, 0xe6, 0xfb, 0x77, 0x30, 0xbb, 0x6, 0x34, - 0xfb, 0x0, 0x32, 0xf7, 0x0, 0x5, 0xb7, 0xe6, 0xfb, 0x7a, 0x30, 0xd2, - 0x6, 0xf7, 0x25, 0xfb, 0x45, 0xfb, 0x39, 0xfb, 0x5f, 0x5, 0x47, 0x6, - 0xe, 0x32, 0xa, 0xf7, 0x8e, 0xec, 0x3, 0xf7, 0x12, 0x16, 0xf7, 0xec, - 0xe6, 0xfb, 0xf, 0xf7, 0x1c, 0x6, 0xf7, 0x35, 0xf7, 0x88, 0x5, 0xdb, - 0xe6, 0xfb, 0x81, 0x30, 0xc2, 0x6, 0x22, 0xfb, 0x31, 0x22, 0xf7, 0x31, - 0x5, 0xc0, 0xe6, 0xfb, 0x82, 0x30, 0xda, 0x6, 0xf7, 0x34, 0xfb, 0x88, - 0x5, 0xfb, 0x1c, 0xfb, 0x10, 0x7, 0xe, 0x32, 0xa, 0xcc, 0xed, 0xf7, - 0xaa, 0xec, 0x3, 0xc8, 0x16, 0xf8, 0x71, 0xf7, 0x70, 0x2a, 0xfb, 0x15, - 0xfb, 0x8d, 0x6, 0xf7, 0xd6, 0xf8, 0x2a, 0x5, 0xcc, 0xfc, 0x55, 0xfb, - 0x61, 0xed, 0xf7, 0x6, 0xf7, 0x6c, 0x7, 0xfb, 0xd2, 0xfc, 0x25, 0x5, - 0xe, 0x25, 0xe7, 0xf8, 0xaa, 0xe7, 0x1, 0xf7, 0x4d, 0xed, 0x3, 0xf7, - 0x4d, 0x25, 0x15, 0xf7, 0x7a, 0xe7, 0xfb, 0x18, 0xf8, 0xaa, 0xf7, 0x18, - 0xe7, 0xfb, 0x7a, 0x6, 0xe, 0x53, 0x76, 0xf9, 0x53, 0x77, 0x1, 0xf8, - 0x43, 0x3e, 0x15, 0xd2, 0xa8, 0xfb, 0xe1, 0xf9, 0x36, 0x44, 0x6e, 0x5, - 0xe, 0x25, 0xe7, 0xf8, 0xaa, 0xe7, 0x1, 0xf7, 0xd2, 0xec, 0x3, 0xf7, - 0x4d, 0x81, 0x15, 0x2f, 0xf7, 0x7a, 0xf9, 0x62, 0xfb, 0x7a, 0x2f, 0xf7, - 0x19, 0xfc, 0xaa, 0x7, 0xe, 0xf7, 0xa3, 0x76, 0xf8, 0x2, 0x77, 0x1, - 0xf7, 0x0, 0xf7, 0x8e, 0x15, 0xd3, 0xb1, 0xce, 0xcc, 0xc1, 0xd8, 0xc2, - 0x3a, 0xcb, 0x4e, 0xd3, 0x66, 0x8, 0xcb, 0x7, 0x30, 0xf7, 0x2, 0x6c, - 0xc2, 0x66, 0xf7, 0x1c, 0x8, 0x47, 0x6, 0x6b, 0xfb, 0x14, 0x68, 0x45, - 0x31, 0x23, 0x8, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, - 0xec, 0xbd, 0x7, 0xe, 0xf8, 0xa5, 0x76, 0xf7, 0x2d, 0x77, 0x1, 0xf7, - 0x3c, 0xf8, 0xcd, 0x15, 0xf7, 0x89, 0x4e, 0x9d, 0xbb, 0xfb, 0x7b, 0xf4, - 0x5, 0xe, 0x7c, 0xe9, 0x3a, 0xe9, 0xf1, 0xed, 0xd0, 0xe8, 0x34, 0xa, - 0x13, 0xbc, 0xf4, 0xf7, 0xcf, 0x15, 0x9a, 0xa8, 0xe6, 0xaa, 0xd3, 0x1b, - 0xbe, 0xb4, 0x75, 0x5c, 0x1f, 0x7f, 0x7, 0x92, 0x67, 0x68, 0x90, 0x6c, - 0x1b, 0xfb, 0x33, 0x2b, 0x48, 0x2d, 0x2d, 0xeb, 0x57, 0xed, 0xc8, 0xc9, - 0x9e, 0xb4, 0xb3, 0x1f, 0x13, 0x7a, 0x5c, 0xf7, 0x46, 0xe9, 0x7, 0x13, - 0x7c, 0x38, 0xf7, 0x3a, 0x6, 0xf7, 0x11, 0x6e, 0xd2, 0xfb, 0x29, 0x31, - 0x28, 0x67, 0x75, 0x58, 0x1e, 0xf7, 0xd7, 0xfb, 0x83, 0x15, 0x13, 0xbc, - 0x60, 0x5b, 0x4f, 0x68, 0x47, 0x1b, 0x60, 0x62, 0x9e, 0xab, 0xb8, 0xd7, - 0x9e, 0xc6, 0xc6, 0xb6, 0x86, 0x89, 0xa2, 0x1f, 0xe, 0x7c, 0xe8, 0x3b, - 0xe9, 0xf7, 0x9d, 0xe7, 0xde, 0xe9, 0x12, 0x93, 0xf7, 0x4c, 0x28, 0xee, - 0xf7, 0xbf, 0xf0, 0x13, 0x7a, 0x94, 0x89, 0x15, 0xf7, 0x4b, 0xb1, 0x6, - 0x13, 0xba, 0x68, 0xbb, 0xc2, 0x7b, 0xc0, 0x1b, 0xf7, 0x12, 0xf7, 0xa, - 0xea, 0xf7, 0x1f, 0xf7, 0x1b, 0xfb, 0x7, 0xea, 0xfb, 0x12, 0x55, 0x53, - 0x7d, 0x67, 0x5a, 0x1f, 0xf7, 0x77, 0xfb, 0x4c, 0x2d, 0x7, 0x13, 0x76, - 0xe0, 0xfc, 0x4c, 0x37, 0x6, 0xf7, 0x48, 0xf7, 0x10, 0x15, 0xd6, 0xb8, - 0xcd, 0xf7, 0x0, 0xf7, 0x0, 0xb4, 0x34, 0x59, 0x1e, 0x13, 0xba, 0x3e, - 0x4b, 0x4a, 0x34, 0x5d, 0x22, 0xa6, 0xf7, 0x3, 0x1e, 0xe, 0x7c, 0xe9, - 0xf7, 0xb2, 0xe9, 0x1, 0xba, 0xeb, 0xf7, 0xab, 0xeb, 0x3, 0xf8, 0x3a, - 0xf7, 0x8b, 0x15, 0xeb, 0xf7, 0x68, 0x2b, 0x78, 0x6, 0x98, 0x68, 0x65, - 0x91, 0x65, 0x1b, 0xfb, 0x49, 0x38, 0xfb, 0x11, 0xfb, 0x4, 0xfb, 0x2b, - 0xf7, 0x11, 0x35, 0xf7, 0x12, 0xeb, 0xe4, 0xb4, 0xc2, 0xd0, 0x1f, 0x55, - 0xd5, 0x5, 0x62, 0x52, 0x54, 0x68, 0x3c, 0x1b, 0x39, 0x39, 0xbb, 0xe9, - 0xdc, 0xcb, 0xca, 0xf3, 0xb2, 0xb3, 0x81, 0x7a, 0xab, 0x1f, 0xe, 0x7c, - 0xe9, 0x3a, 0xe9, 0xf7, 0x9d, 0xe9, 0xdc, 0xe9, 0x12, 0x99, 0xec, 0xf7, - 0xbe, 0xec, 0x2a, 0xf7, 0x44, 0x13, 0x7a, 0xf8, 0x2f, 0x89, 0x15, 0xf7, - 0x42, 0xe9, 0x3c, 0x6, 0x13, 0x7c, 0xf8, 0xaa, 0xfb, 0x72, 0x2d, 0xf7, - 0x11, 0xfb, 0x17, 0x7, 0xad, 0x65, 0x52, 0x9b, 0x53, 0x1b, 0xfb, 0x24, - 0x27, 0xfb, 0x3, 0xfb, 0xe, 0xfb, 0x11, 0xf4, 0xfb, 0x0, 0xf7, 0x23, - 0x1f, 0x13, 0xbc, 0xc2, 0xc1, 0x9c, 0xab, 0xb3, 0x1f, 0xfb, 0xc0, 0xf7, - 0x4e, 0x15, 0xd9, 0xcd, 0xc6, 0xe2, 0xe6, 0xc1, 0x4c, 0x3e, 0xfb, 0xd, - 0xfb, 0x7, 0x7a, 0x69, 0x3a, 0x47, 0xc8, 0xdb, 0x1e, 0xe, 0x7c, 0xe8, - 0xee, 0xea, 0xe3, 0xe9, 0x1, 0xf7, 0x22, 0xf7, 0x45, 0x15, 0xf8, 0x22, - 0x6, 0xf7, 0x3a, 0x9f, 0x29, 0xf7, 0x3, 0xfb, 0x37, 0x1b, 0xfb, 0xe, - 0xfb, 0x1f, 0x3c, 0xfb, 0x32, 0xfb, 0xe, 0xe4, 0xfb, 0x2, 0xf7, 0x41, - 0xe8, 0xe7, 0xaa, 0xb6, 0xd7, 0x1f, 0x5f, 0xda, 0x5, 0x6c, 0x4a, 0x44, - 0x6e, 0x3d, 0x1b, 0xfb, 0x10, 0x6b, 0xcc, 0xad, 0x86, 0x1f, 0x8d, 0xea, - 0x15, 0xc5, 0xa0, 0xce, 0xa9, 0xc9, 0x1b, 0xc9, 0xc9, 0x78, 0x46, 0x9e, - 0x1f, 0xe, 0x7c, 0xa, 0xe8, 0xeb, 0xe7, 0x1, 0xf7, 0x44, 0xf5, 0x3, - 0xcf, 0x16, 0xf8, 0x50, 0xe9, 0xfb, 0x7a, 0xf7, 0x8f, 0xf7, 0x7a, 0xe8, - 0xfb, 0x7a, 0xae, 0x6, 0xb1, 0x8d, 0xa2, 0xdb, 0xbd, 0xa9, 0x84, 0x80, - 0xb9, 0x1e, 0xb5, 0xe7, 0x5, 0x96, 0x35, 0x4d, 0x92, 0x5a, 0x1b, 0x24, - 0x53, 0x51, 0x24, 0x1f, 0x70, 0xfb, 0x0, 0x2e, 0xf7, 0x0, 0xfb, 0x8f, - 0xfb, 0x0, 0x7, 0xe, 0xfb, 0x26, 0xe4, 0xf1, 0xe3, 0xf7, 0x71, 0xe4, - 0x3e, 0xe3, 0x69, 0xa, 0x13, 0xec, 0x50, 0xa, 0xe9, 0xf2, 0x1f, 0xf7, - 0xc3, 0x7, 0x13, 0xea, 0xd7, 0xe4, 0xfb, 0x3c, 0x6e, 0x6, 0x13, 0xdc, - 0x5a, 0xa, 0xfb, 0x9, 0xee, 0x36, 0xf7, 0x21, 0xc0, 0xbe, 0x94, 0xa7, - 0xb1, 0x1f, 0x67, 0x7, 0x51, 0x88, 0x5e, 0x42, 0xa, 0x63, 0x33, 0x43, - 0x44, 0xb7, 0xd2, 0x1e, 0xe, 0x8b, 0xe9, 0xf7, 0x8b, 0xe8, 0xed, 0xe9, - 0x12, 0x91, 0xf7, 0x48, 0x2a, 0xec, 0xf7, 0x77, 0xec, 0x13, 0xf4, 0x91, - 0x16, 0xf7, 0x96, 0xe9, 0x3d, 0xf7, 0x61, 0x6, 0xbd, 0xd5, 0xc2, 0x94, - 0xa8, 0x1b, 0xc3, 0x98, 0x6a, 0x69, 0x1f, 0xfb, 0x59, 0x3d, 0x2d, 0xf7, - 0x96, 0xe9, 0x38, 0xf7, 0x52, 0x7, 0xd8, 0x71, 0xe5, 0xfb, 0x1f, 0x4e, - 0x5b, 0x75, 0x71, 0x59, 0x1e, 0xf7, 0x73, 0xfb, 0x48, 0x2d, 0x7, 0x13, - 0xec, 0xde, 0xfc, 0x4a, 0x6, 0x13, 0xf4, 0x38, 0x6, 0xe, 0x8b, 0xea, - 0xf7, 0x92, 0xeb, 0xd1, 0xf7, 0x23, 0x12, 0xf7, 0x83, 0xf7, 0x3, 0x29, - 0xed, 0x13, 0xf0, 0xf7, 0x83, 0xf8, 0x97, 0x79, 0xa, 0x6b, 0xa, 0xfb, - 0x36, 0xfd, 0x26, 0x15, 0xf8, 0x52, 0xea, 0xfb, 0x41, 0xf7, 0xf2, 0xfb, - 0x7f, 0x2b, 0x6, 0x13, 0xe8, 0xf7, 0x1d, 0xfb, 0x92, 0xfb, 0x43, 0x6, - 0xe, 0xfb, 0x26, 0xe7, 0xf8, 0x37, 0xe6, 0xc5, 0xf7, 0x24, 0x12, 0xf7, - 0xf4, 0xf7, 0xa, 0x35, 0xf3, 0x13, 0xf0, 0xf7, 0xf4, 0xf8, 0x96, 0x73, - 0xa, 0xfb, 0x6d, 0xfd, 0x49, 0x15, 0x73, 0x30, 0x5, 0x81, 0xc2, 0xc4, - 0x81, 0xc4, 0x1b, 0x13, 0xe8, 0xf7, 0x63, 0x8c, 0xf7, 0x1b, 0xc6, 0x1f, - 0xf8, 0x2c, 0xfc, 0x2, 0x30, 0xf7, 0x9a, 0xfb, 0xcd, 0x7, 0x46, 0x81, - 0x66, 0x31, 0x55, 0x4d, 0x98, 0x91, 0x6a, 0x1e, 0xe, 0x7c, 0xa, 0xe9, - 0xe8, 0xe9, 0x1, 0xec, 0xed, 0x3, 0x9c, 0x16, 0xf7, 0x46, 0xf7, 0x3e, - 0x6, 0xaf, 0xa2, 0xf7, 0xe, 0x28, 0x5, 0x70, 0x2d, 0xf7, 0x94, 0xe9, - 0xfb, 0x0, 0x6, 0xfb, 0x41, 0xf7, 0x25, 0xf7, 0x37, 0xf5, 0x5, 0xda, - 0xe9, 0xfb, 0xb1, 0x2d, 0xd2, 0x6, 0xfb, 0x1a, 0x39, 0x5, 0xf7, 0xff, - 0xfb, 0x46, 0x2d, 0xdb, 0xfc, 0x4a, 0x3b, 0x7, 0xe, 0x8b, 0xe9, 0xf8, - 0x4a, 0x40, 0xa, 0xf8, 0xa8, 0xfb, 0x92, 0x2d, 0xf7, 0x2f, 0xfc, 0x4a, - 0xfb, 0x41, 0x6, 0xe, 0x90, 0xe9, 0xf7, 0x99, 0xe9, 0x1, 0xc1, 0xe9, - 0xf7, 0x3, 0xe6, 0xf7, 0x5, 0xe7, 0x3, 0x73, 0x16, 0xf7, 0x8e, 0xe9, - 0x3d, 0xf7, 0x7b, 0x6, 0x9e, 0x9d, 0xa2, 0x9b, 0xa3, 0x1b, 0xb1, 0x93, - 0x6a, 0x77, 0x1f, 0xfb, 0xc7, 0xf7, 0x38, 0xe9, 0x42, 0xf7, 0x73, 0x7, - 0xad, 0xa4, 0xa6, 0x94, 0x9c, 0x1b, 0xac, 0x96, 0x6d, 0x81, 0x1f, 0xfb, - 0xd4, 0xf7, 0x35, 0xe9, 0x46, 0xf7, 0x72, 0x7, 0xd7, 0x5a, 0xc9, 0x38, - 0x62, 0x61, 0x79, 0x6c, 0x71, 0x1e, 0xb5, 0x72, 0x66, 0x92, 0x73, 0x1b, - 0x6c, 0x6d, 0x7f, 0x74, 0x78, 0x1f, 0xa1, 0xfb, 0x40, 0x2d, 0xd9, 0xfb, - 0x91, 0x3d, 0x7, 0xe, 0x8b, 0xe9, 0xf7, 0x91, 0xe9, 0x3b, 0xe8, 0x12, - 0x98, 0xf7, 0x48, 0xf7, 0x75, 0xea, 0x13, 0xb8, 0x9a, 0x16, 0xf7, 0x97, - 0xe9, 0x3a, 0xf7, 0x67, 0x6, 0xb7, 0xbd, 0xcf, 0x97, 0xa9, 0x1b, 0xd1, - 0x92, 0x55, 0x64, 0x1f, 0xfb, 0x42, 0x46, 0x2d, 0xf7, 0x82, 0xe9, 0x41, - 0xf7, 0x42, 0x7, 0xf7, 0x12, 0x60, 0xc7, 0xfb, 0xc, 0x52, 0x51, 0x79, - 0x6f, 0x61, 0x1e, 0x13, 0xd0, 0xac, 0xfb, 0x48, 0x2d, 0xde, 0xfb, 0x91, - 0x3a, 0x7, 0xe, 0x7c, 0xe9, 0xf7, 0xad, 0xe9, 0x4b, 0xa, 0xa9, 0xf7, - 0x6d, 0x15, 0xfb, 0x40, 0xf7, 0x2f, 0x4f, 0xf7, 0x6, 0xf7, 0xe, 0xf7, - 0x29, 0xce, 0xf7, 0x39, 0xf7, 0x31, 0xfb, 0x18, 0xdb, 0xfb, 0x1f, 0xfb, - 0x1d, 0xfb, 0x18, 0x3b, 0xfb, 0x31, 0x1e, 0xef, 0x16, 0xe2, 0xd6, 0xc3, - 0xe9, 0xe7, 0xdb, 0x50, 0x37, 0x28, 0x36, 0x64, 0x34, 0x3c, 0x31, 0xb2, - 0xee, 0x1e, 0xe, 0xfb, 0x22, 0xe3, 0xd6, 0xe2, 0xf7, 0x89, 0xe3, 0x40, - 0xe3, 0x12, 0x9c, 0xf7, 0x43, 0x2c, 0xea, 0xf7, 0xbd, 0xeb, 0x13, 0xda, - 0x9c, 0x55, 0x15, 0x33, 0xf7, 0xcc, 0xe3, 0xfb, 0x1d, 0xf7, 0xe, 0x7, - 0x7d, 0xa1, 0xc1, 0x6a, 0xd9, 0x1b, 0xf7, 0x1f, 0xef, 0xed, 0xf7, 0xd, - 0xf7, 0x28, 0xfb, 0x21, 0xcd, 0x25, 0x56, 0x52, 0x7b, 0x6d, 0x63, 0x1f, - 0x13, 0xe6, 0xac, 0xfb, 0x46, 0x33, 0xde, 0xfc, 0x2b, 0x7, 0x13, 0xda, - 0xe6, 0xf7, 0xb8, 0x15, 0xf7, 0x1, 0xf7, 0x4, 0x9e, 0xb4, 0xd9, 0xd1, - 0x5e, 0x38, 0x3c, 0x43, 0x58, 0x3e, 0x5f, 0xfb, 0x0, 0xa4, 0xf4, 0x1e, - 0xe, 0xf8, 0xda, 0x55, 0x15, 0x33, 0xfb, 0xcc, 0xe3, 0xf7, 0x1d, 0xf7, - 0xe, 0x7, 0x7d, 0x75, 0x55, 0x6a, 0x3d, 0x1b, 0xfb, 0x1f, 0x27, 0xed, - 0xf7, 0xd, 0xf7, 0x28, 0xf7, 0x21, 0xcd, 0xf1, 0xc0, 0xc4, 0x7b, 0x6d, - 0xb3, 0x1f, 0xac, 0xf7, 0x46, 0x33, 0x38, 0xfc, 0x2b, 0x7, 0x30, 0xf7, - 0xb8, 0x15, 0xf7, 0x1, 0xfb, 0x4, 0x9e, 0x62, 0x3d, 0x45, 0x5e, 0x38, - 0x3c, 0xd3, 0x58, 0xd8, 0xb7, 0xf7, 0x0, 0xa4, 0xf4, 0x1e, 0xe, 0x8b, - 0xe9, 0xf7, 0x90, 0xe9, 0x3b, 0xe9, 0x12, 0xf7, 0x28, 0xee, 0x13, 0xb0, - 0xac, 0x16, 0xf8, 0x21, 0xe9, 0xfb, 0x4b, 0xf7, 0x35, 0x6, 0xae, 0xba, - 0xd1, 0xd1, 0xd6, 0x1b, 0xa5, 0x8f, 0x81, 0x71, 0x8e, 0x1f, 0xe9, 0x99, - 0x5, 0xb3, 0x89, 0x77, 0xd7, 0x22, 0x1b, 0x41, 0x4b, 0x5e, 0x63, 0x55, - 0x1f, 0x13, 0xd0, 0xd2, 0xfb, 0x6a, 0x2d, 0xf7, 0x7, 0xfb, 0x90, 0xfb, - 0x7, 0x7, 0xe, 0x7a, 0xeb, 0xeb, 0xe3, 0x9b, 0xf7, 0x48, 0x2b, 0xeb, - 0x12, 0xcd, 0xed, 0x36, 0xe0, 0x36, 0xea, 0xf7, 0x84, 0xee, 0x40, 0xea, - 0x13, 0xe8, 0x80, 0xcd, 0x7a, 0x15, 0xed, 0xad, 0x6, 0x72, 0xb9, 0xc1, - 0x82, 0xc2, 0x1b, 0xf7, 0xb, 0xea, 0xc4, 0xe6, 0xf5, 0x21, 0x9f, 0x35, - 0x91, 0x1f, 0x13, 0xd3, 0x0, 0x2b, 0x93, 0x44, 0x91, 0xb2, 0x1a, 0xb5, - 0xe5, 0x90, 0xa2, 0xb7, 0xc2, 0x80, 0x72, 0xa7, 0x1e, 0x13, 0xe5, 0x0, - 0x5b, 0xee, 0xf7, 0x48, 0x28, 0x69, 0x7, 0xa0, 0x6e, 0x50, 0x98, 0x5c, - 0x1b, 0x2e, 0x20, 0x64, 0x25, 0xfb, 0x12, 0xf7, 0x2a, 0x81, 0xd6, 0x84, - 0x1f, 0x13, 0xe8, 0x80, 0xaf, 0x88, 0xed, 0x8a, 0x63, 0x1a, 0x69, 0x47, - 0x79, 0x53, 0x44, 0x54, 0x96, 0x9e, 0x73, 0x1e, 0x13, 0xe9, 0x0, 0xd0, - 0x29, 0x7, 0xe, 0x7c, 0xe6, 0xf7, 0x99, 0xe8, 0xf7, 0x18, 0x77, 0x1, - 0xf7, 0x11, 0xee, 0x3, 0xc4, 0xf7, 0xe5, 0x15, 0xcf, 0xfb, 0x57, 0x6, - 0xfb, 0x1d, 0xf7, 0x0, 0x77, 0xd7, 0xdc, 0xdd, 0xab, 0xa6, 0xd1, 0x1e, - 0x7a, 0xe8, 0x5, 0x7a, 0x65, 0xfb, 0x0, 0x5f, 0x47, 0x1b, 0x39, 0x86, - 0xb7, 0xb6, 0x1f, 0xf7, 0x42, 0xf7, 0x9e, 0xe8, 0xfb, 0x9e, 0xf7, 0x18, - 0x28, 0xfb, 0x18, 0x47, 0x7, 0xe, 0x7c, 0xe7, 0x3c, 0xe9, 0xf7, 0x91, - 0xe9, 0x12, 0x9a, 0xf7, 0x43, 0x2c, 0xea, 0xf7, 0x22, 0xf7, 0x42, 0x2b, - 0xeb, 0x2b, 0xf7, 0x43, 0x13, 0xb4, 0x9a, 0xf7, 0xed, 0x15, 0x13, 0xaa, - 0xdb, 0xfb, 0x4e, 0x6, 0xfb, 0x5, 0xd0, 0x4e, 0xf7, 0x1, 0xc0, 0xc2, - 0xa6, 0xa7, 0xa8, 0x1e, 0x13, 0x71, 0x61, 0xf7, 0x43, 0xe9, 0x7, 0x13, - 0x74, 0x3c, 0xf7, 0xef, 0xfb, 0x42, 0x2d, 0x6, 0x13, 0xb2, 0xd9, 0xfb, - 0x56, 0x6, 0x6c, 0x69, 0x65, 0x60, 0x4d, 0x1b, 0x38, 0x88, 0xc4, 0xa2, - 0x1f, 0xf7, 0xae, 0xfb, 0x43, 0x7, 0xe, 0xa0, 0x76, 0xf7, 0xed, 0xe9, - 0x1, 0xf7, 0x98, 0x16, 0xe3, 0x6, 0xf7, 0x3c, 0xf7, 0xed, 0x5, 0xe0, - 0xe9, 0xfb, 0x86, 0x2d, 0xc8, 0x6, 0xfb, 0x7, 0xfb, 0x82, 0xfb, 0x8, - 0xf7, 0x82, 0x5, 0xcf, 0xe9, 0xfb, 0x96, 0x2d, 0xe0, 0x6, 0xe, 0xa0, - 0x76, 0xf7, 0xed, 0xe9, 0x1, 0x79, 0xf7, 0x6d, 0xf7, 0x64, 0xf7, 0x67, - 0x3, 0xf7, 0x24, 0x16, 0xda, 0x6, 0xd5, 0xf7, 0x68, 0xe1, 0xfb, 0x68, - 0x5, 0xd7, 0x6, 0xf7, 0x2, 0xf7, 0xed, 0x5, 0xbc, 0xe9, 0xfb, 0x67, - 0x2d, 0xd3, 0x6, 0x4f, 0xfb, 0x57, 0x36, 0xf7, 0x6f, 0x5, 0x49, 0x6, - 0x3d, 0xfb, 0x6f, 0x4e, 0xf7, 0x57, 0x5, 0xd1, 0xe9, 0xfb, 0x6d, 0x2d, - 0xbc, 0x6, 0xe, 0x7c, 0xa, 0xe9, 0x1, 0x91, 0x16, 0xf7, 0x91, 0xe9, - 0x62, 0x6, 0xda, 0xd8, 0xdd, 0x3e, 0x5, 0x64, 0x2d, 0xf7, 0x92, 0xe9, - 0x37, 0x6, 0xfb, 0x28, 0xf7, 0x1c, 0xf7, 0x10, 0xf7, 0x7, 0x5, 0xdc, - 0xe9, 0xfb, 0x75, 0x2d, 0x9e, 0x6, 0x4f, 0x52, 0x49, 0xc4, 0x5, 0xa1, - 0xe9, 0xfb, 0x82, 0x2d, 0xe1, 0x6, 0xf7, 0x14, 0xfb, 0x9, 0xfb, 0x22, - 0xfb, 0x1a, 0x5, 0x36, 0x6, 0xe, 0xfb, 0x22, 0xe3, 0xf8, 0x29, 0xe3, - 0x12, 0x13, 0xc0, 0xb4, 0x55, 0x15, 0x33, 0xf7, 0xb4, 0xe3, 0x48, 0x7, - 0xf7, 0x9e, 0xf8, 0x29, 0x5, 0xd6, 0xe3, 0xfb, 0x80, 0x33, 0xc3, 0x6, - 0xfb, 0x14, 0xfb, 0x55, 0xfb, 0x6, 0xf7, 0x55, 0x5, 0xc6, 0xe3, 0xfb, - 0x86, 0x33, 0xd7, 0x6, 0xf7, 0x3b, 0xfb, 0xa8, 0x35, 0xfb, 0x15, 0x5, - 0xe, 0x8b, 0xe9, 0x2d, 0xf7, 0x51, 0xd4, 0xf7, 0x45, 0x2e, 0xe8, 0x12, - 0xea, 0xec, 0xf7, 0x7a, 0xec, 0x13, 0x6c, 0xdb, 0x16, 0xf8, 0x4b, 0xf7, - 0x51, 0x2a, 0x6, 0x13, 0xac, 0x2c, 0xfb, 0x51, 0x7, 0xf7, 0xb2, 0xf7, - 0xa9, 0x5, 0xcf, 0xfc, 0x3c, 0xfb, 0x45, 0xec, 0x7, 0x13, 0x9c, 0xdf, - 0xf7, 0x41, 0x7, 0xfb, 0xb1, 0xfb, 0xa6, 0x5, 0xe, 0xf7, 0x86, 0xe4, - 0x3, 0xf8, 0x6b, 0xfb, 0x88, 0x15, 0xe8, 0x7, 0x65, 0x64, 0x8b, 0x95, - 0x69, 0x1f, 0x75, 0x92, 0x84, 0xa5, 0xa1, 0x1a, 0xf7, 0x28, 0x7, 0xd4, - 0x6a, 0xde, 0x4d, 0xae, 0x1e, 0xc9, 0xae, 0xac, 0xdc, 0xd4, 0x1a, 0xf7, - 0x28, 0x7, 0xa1, 0x92, 0xa5, 0xa1, 0x92, 0x1e, 0x95, 0xad, 0xb2, 0x8b, - 0xb1, 0x1b, 0xe8, 0x7, 0x5b, 0x4f, 0x8b, 0x79, 0x5d, 0x1f, 0x56, 0x76, - 0x75, 0x52, 0x5c, 0x1a, 0xfb, 0x9, 0x7, 0xfb, 0x0, 0x82, 0x49, 0x22, - 0x7c, 0x1e, 0x2d, 0x7, 0xf4, 0x7c, 0x94, 0x49, 0xfb, 0x0, 0x1a, 0xfb, - 0x9, 0x7, 0x5c, 0xa1, 0x52, 0xc0, 0x76, 0x1e, 0x79, 0xb9, 0xc7, 0x8b, - 0xbb, 0x1b, 0xe, 0xfb, 0x79, 0x76, 0xfa, 0x7c, 0x6e, 0xa, 0xfb, 0x8e, - 0x15, 0xe5, 0xfa, 0x7c, 0x31, 0x6, 0xe, 0xf7, 0xa0, 0xe4, 0x3, 0xf7, - 0x14, 0xfb, 0x2c, 0x15, 0x2f, 0x7, 0xbb, 0xc6, 0x8b, 0x9d, 0xba, 0x1f, - 0xbf, 0x9f, 0xa2, 0xc5, 0xba, 0x1a, 0xf7, 0x9, 0x7, 0xf7, 0x0, 0x94, - 0xcc, 0xf4, 0x9b, 0x1e, 0xe9, 0x7, 0x22, 0x9b, 0x82, 0xcc, 0xf7, 0x0, - 0x1a, 0xf7, 0x9, 0x7, 0xba, 0x75, 0xc5, 0x56, 0x9f, 0x1e, 0x9d, 0x5c, - 0x50, 0x8b, 0x5b, 0x1b, 0x2e, 0x7, 0xb2, 0xb0, 0x8b, 0x81, 0xae, 0x1f, - 0xa2, 0x84, 0x91, 0x72, 0x74, 0x1a, 0xfb, 0x28, 0x7, 0x43, 0xac, 0x39, - 0xc9, 0x68, 0x1e, 0x4d, 0x68, 0x6a, 0x38, 0x42, 0x1a, 0xfb, 0x28, 0x7, - 0x74, 0x85, 0x72, 0x74, 0x84, 0x1e, 0x80, 0x67, 0x67, 0x8b, 0x64, 0x1b, - 0xe, 0xf7, 0x45, 0xef, 0x62, 0xf0, 0x12, 0x13, 0x40, 0xd1, 0xf7, 0x67, - 0x15, 0xcc, 0x51, 0x5, 0xab, 0xa0, 0x9d, 0xbe, 0xb3, 0x1b, 0xa8, 0xb2, - 0x75, 0x7a, 0xb2, 0x1f, 0x13, 0x80, 0x80, 0xa4, 0xa5, 0x82, 0xa3, 0x1b, - 0xb4, 0xc3, 0xaf, 0xe0, 0xaf, 0x1f, 0x4e, 0xc5, 0x5, 0x75, 0x7d, 0x6b, - 0x52, 0x71, 0x1b, 0x73, 0x74, 0x97, 0x99, 0x71, 0x1f, 0x13, 0x40, 0x9b, - 0x6b, 0x67, 0x9d, 0x5d, 0x1b, 0x47, 0x65, 0x45, 0x53, 0x6a, 0x1f, 0xe, - 0xfb, 0x11, 0x76, 0xf8, 0x4a, 0xf7, 0x31, 0x1, 0xf7, 0x7e, 0xf7, 0x17, - 0x3, 0xf7, 0x74, 0xfb, 0x26, 0x15, 0xf7, 0x2b, 0x6, 0x77, 0xf8, 0x22, - 0x5, 0xfb, 0x2, 0x6, 0x60, 0xf7, 0xa, 0x15, 0x5f, 0xb7, 0x69, 0xc1, - 0xc1, 0xb7, 0xad, 0xb7, 0xb7, 0x5f, 0xae, 0x55, 0x55, 0x5f, 0x68, 0x5f, - 0x1e, 0xe, 0x6f, 0x76, 0x1, 0xd5, 0xec, 0xd9, 0xec, 0xc8, 0xe9, 0x3, - 0xf7, 0x8d, 0x5a, 0x15, 0xec, 0xf7, 0x14, 0x6, 0xce, 0x95, 0xc5, 0xaf, - 0xc2, 0xb2, 0x5e, 0xd2, 0x18, 0x61, 0x41, 0x60, 0x73, 0x4a, 0x1b, 0xfb, - 0x6, 0x7d, 0xe7, 0xa2, 0xc9, 0xc0, 0xca, 0xda, 0xaf, 0xb1, 0x7c, 0x7a, - 0xa9, 0x1f, 0x54, 0xe9, 0xf7, 0x44, 0x2d, 0x6c, 0x7, 0x7b, 0x97, 0x72, - 0x94, 0x77, 0x8e, 0x8, 0xf2, 0x2a, 0x25, 0x7, 0xfb, 0xb, 0x72, 0x53, - 0x2e, 0x31, 0x1a, 0xfb, 0x24, 0xf7, 0x12, 0x5c, 0xbc, 0x7e, 0x1e, 0xe, - 0x84, 0x76, 0xf7, 0xb9, 0xe8, 0xf7, 0x34, 0xe8, 0x12, 0xf7, 0xf, 0xe9, - 0x5d, 0xec, 0x13, 0xe8, 0xdf, 0xaf, 0x15, 0xbe, 0x4b, 0x5, 0x93, 0x97, - 0xce, 0xb0, 0xbb, 0x1b, 0xa1, 0xac, 0x82, 0x83, 0xa6, 0x1f, 0x84, 0xa2, - 0xa3, 0x85, 0x9f, 0x1b, 0xd3, 0xb2, 0xb6, 0x71, 0xa, 0x70, 0x79, 0x64, - 0xa, 0x75, 0x94, 0x7c, 0x1b, 0x78, 0x61, 0x84, 0x85, 0x7f, 0x1f, 0x9f, - 0xac, 0x9b, 0xab, 0xae, 0x1a, 0xa1, 0x8b, 0xa3, 0x84, 0xa5, 0x1e, 0xf7, - 0x5f, 0xd8, 0xfb, 0x74, 0x6, 0x13, 0xf0, 0x7f, 0xa4, 0x86, 0xb4, 0xa2, - 0x6c, 0xa, 0xbd, 0x7c, 0x5e, 0xa0, 0x1f, 0xd5, 0xb9, 0x5, 0xb9, 0x70, - 0x5d, 0xc8, 0x63, 0xa, 0x76, 0x8f, 0x66, 0x93, 0x77, 0x1e, 0x3d, 0x3e, - 0xef, 0x6, 0x13, 0xe8, 0x92, 0x76, 0x8c, 0x76, 0x75, 0x1a, 0x8a, 0x49, - 0x66, 0x49, 0x60, 0x6a, 0x8, 0xe, 0xcf, 0xe3, 0xf7, 0x92, 0xe3, 0x1, - 0xdc, 0xe5, 0xf7, 0x97, 0xe5, 0x3, 0xc1, 0xf5, 0x15, 0xc8, 0x52, 0xc8, - 0xc4, 0x5, 0x71, 0xae, 0xb8, 0x7f, 0xb9, 0x1b, 0xb8, 0xb7, 0x98, 0xa5, - 0xad, 0x1f, 0xc9, 0x51, 0xc6, 0xc6, 0x4c, 0xc5, 0x5, 0xa3, 0xaa, 0x98, - 0xb5, 0xb5, 0x1a, 0xb7, 0x7f, 0xb7, 0x72, 0xac, 0x1e, 0xca, 0xc5, 0x51, - 0xc4, 0x4e, 0x50, 0x68, 0xa7, 0x5a, 0x98, 0x5b, 0x8a, 0x19, 0x5f, 0x8a, - 0x60, 0x7f, 0x6a, 0x72, 0x4e, 0xc4, 0x18, 0x4f, 0x50, 0xca, 0x51, 0x5, - 0x73, 0x6a, 0x7f, 0x60, 0x61, 0x1a, 0x61, 0x97, 0x60, 0xa4, 0x6b, 0x1e, - 0xc0, 0xf7, 0xa, 0x15, 0xd0, 0xc4, 0xc5, 0xd3, 0xd3, 0xc5, 0x51, 0x46, - 0x45, 0x51, 0x52, 0x43, 0x43, 0x52, 0xc4, 0xd1, 0x1e, 0xe, 0x8b, 0xe2, - 0xc4, 0xc1, 0xb5, 0xc0, 0xf7, 0x4a, 0xe2, 0x1, 0x95, 0xf7, 0x84, 0xf3, - 0xf7, 0x80, 0x3, 0xf7, 0x22, 0x16, 0xf7, 0xd3, 0xe2, 0xfb, 0x5, 0xc3, - 0xf7, 0x25, 0xc1, 0xfb, 0x25, 0xb6, 0xf7, 0x25, 0xc0, 0xfb, 0x20, 0x6, - 0xf7, 0x34, 0xf7, 0x4a, 0x5, 0xd8, 0xe2, 0xfb, 0x80, 0x34, 0xb7, 0x6, - 0x2b, 0xfb, 0x7, 0x2a, 0xf7, 0x7, 0x5, 0xb8, 0xe2, 0xfb, 0x84, 0x34, - 0xdc, 0x6, 0xf7, 0x36, 0xfb, 0x4a, 0x5, 0xfb, 0x24, 0x56, 0xf7, 0x26, - 0x60, 0xfb, 0x26, 0x55, 0xf7, 0x26, 0x53, 0xfb, 0x5, 0x6, 0xe, 0xfb, - 0x2e, 0x76, 0xf9, 0xe6, 0x6e, 0xa, 0xf7, 0xb1, 0x15, 0xe5, 0xf8, 0x1a, - 0x31, 0x6, 0xfd, 0xe6, 0x4, 0xe5, 0xf8, 0x1b, 0x31, 0x6, 0xe, 0x45, - 0xe8, 0x2e, 0xf7, 0x40, 0xf7, 0xd5, 0xf7, 0x40, 0xfb, 0x1, 0xe9, 0x12, - 0xe3, 0xf1, 0xf7, 0x60, 0xf1, 0x13, 0x9c, 0xe3, 0x45, 0x15, 0xf7, 0x84, - 0x6, 0xe8, 0xcd, 0xa4, 0xd4, 0xb1, 0x7d, 0x9f, 0x75, 0x9f, 0x1f, 0xa5, - 0x96, 0xb3, 0xaa, 0xc1, 0x1a, 0xaf, 0x74, 0xab, 0x6b, 0xa2, 0x1e, 0xfb, - 0x91, 0xf7, 0x41, 0x5, 0x8b, 0x86, 0x8e, 0x90, 0x1a, 0x96, 0x98, 0x8c, - 0xa2, 0x1e, 0xf7, 0x2e, 0x4c, 0x6, 0x13, 0xac, 0xf1, 0xf7, 0x40, 0xfb, - 0x88, 0x6, 0x49, 0x36, 0x78, 0x26, 0x6e, 0xa0, 0x74, 0xa1, 0x78, 0x1f, - 0x73, 0x7b, 0x66, 0x72, 0x50, 0x1a, 0x59, 0xa7, 0x71, 0xbb, 0x6b, 0x1e, - 0xf7, 0x5e, 0xfb, 0x1d, 0x5, 0xa1, 0x7d, 0x8e, 0x88, 0x82, 0x1a, 0x82, - 0x7e, 0x8a, 0x7a, 0x1e, 0xfb, 0x3a, 0xda, 0x6, 0x13, 0x6c, 0x25, 0x6, - 0xf7, 0xac, 0xcc, 0x15, 0xfb, 0x37, 0xf7, 0x1, 0x5, 0x80, 0x92, 0x82, - 0x97, 0x97, 0x1a, 0xa0, 0xa5, 0x95, 0x98, 0x92, 0x1e, 0xf7, 0x48, 0xfb, - 0xd, 0x5, 0x94, 0x86, 0x92, 0x83, 0x82, 0x1a, 0x71, 0x68, 0x84, 0x7a, - 0x89, 0x1e, 0xe, 0xf8, 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x14, 0xf7, 0x17, - 0xde, 0xf7, 0x16, 0x3, 0xf7, 0xea, 0xf8, 0x79, 0x15, 0xf7, 0x16, 0xf7, - 0x20, 0xfb, 0x16, 0x6, 0xfb, 0x6a, 0xfb, 0x20, 0x15, 0xf7, 0x17, 0xf7, - 0x20, 0xfb, 0x17, 0x6, 0xe, 0x79, 0xb8, 0xe7, 0xb9, 0xf7, 0x8d, 0xba, - 0xd5, 0xb8, 0x1, 0x8b, 0xb8, 0xf3, 0xb9, 0xf7, 0xfc, 0xb8, 0x3, 0xf7, - 0xad, 0x4, 0xfb, 0x39, 0xf7, 0x1a, 0xfb, 0x1a, 0xf7, 0x39, 0xf7, 0x3a, - 0xf7, 0x1b, 0xf7, 0x1a, 0xf7, 0x39, 0xf7, 0x39, 0xfb, 0x1b, 0xf7, 0x1a, - 0xfb, 0x3a, 0xfb, 0x39, 0xfb, 0x1a, 0xfb, 0x1a, 0xfb, 0x39, 0x1e, 0xb8, - 0x16, 0xf7, 0x21, 0xf7, 0x5, 0xf7, 0x5, 0xf7, 0x21, 0xf7, 0x21, 0xf7, - 0x7, 0xfb, 0x5, 0xfb, 0x21, 0xfb, 0x21, 0xfb, 0x7, 0xfb, 0x5, 0xfb, - 0x21, 0xfb, 0x21, 0xfb, 0x5, 0xf7, 0x5, 0xf7, 0x21, 0x1e, 0xf8, 0x9, - 0x49, 0x15, 0x71, 0x73, 0x61, 0x73, 0x64, 0x1b, 0x46, 0x5a, 0xc7, 0xcc, - 0xcd, 0xc0, 0xc5, 0xcb, 0xae, 0xa7, 0x79, 0x75, 0xa1, 0x1f, 0xb1, 0xb2, - 0x5, 0xa8, 0x6a, 0x5f, 0x9e, 0x5e, 0x1b, 0x37, 0x3b, 0x43, 0x29, 0x35, - 0xcd, 0x35, 0xf2, 0xc4, 0xc9, 0xb7, 0xa0, 0x9b, 0x1f, 0xe, 0xf7, 0x58, - 0xde, 0xf7, 0x71, 0xdb, 0x12, 0xf7, 0x27, 0xcf, 0xf7, 0xd, 0xce, 0x48, - 0xf7, 0x9, 0x13, 0xe8, 0xf7, 0xe4, 0xf7, 0x60, 0x15, 0xf7, 0x9, 0xdd, - 0x59, 0x6, 0x13, 0xf0, 0xf7, 0x23, 0x7, 0xde, 0x86, 0xcf, 0xfb, 0x8, - 0x5c, 0x59, 0x7c, 0x77, 0x6d, 0x1e, 0x9f, 0x47, 0x5, 0x99, 0xa5, 0xc6, - 0x94, 0xa2, 0x1b, 0xad, 0x9e, 0x7e, 0x62, 0x1f, 0x94, 0x77, 0x75, 0x8e, - 0x76, 0x1b, 0x24, 0x74, 0x3d, 0x5b, 0x44, 0xb8, 0x4a, 0xce, 0xa7, 0xa7, - 0xa0, 0xa8, 0xa0, 0x1f, 0xf7, 0x12, 0x4, 0x63, 0x80, 0x6b, 0x56, 0x67, - 0x1b, 0x6d, 0x7f, 0xa4, 0x9d, 0xb8, 0xb6, 0x95, 0xb1, 0x9a, 0x9a, 0x88, - 0x89, 0x95, 0x1f, 0xe, 0x7b, 0xa, 0xba, 0xf8, 0x8b, 0x3, 0xf7, 0xa3, - 0xf7, 0x98, 0x15, 0xf7, 0x77, 0xfb, 0x52, 0xc1, 0xc9, 0xfb, 0x2d, 0xf7, - 0x13, 0xf7, 0x2b, 0xf7, 0x10, 0x54, 0xca, 0x5, 0xfc, 0x54, 0xfb, 0x4e, - 0x15, 0xf7, 0x6c, 0xfb, 0x52, 0xc2, 0xc9, 0xfb, 0x28, 0xf7, 0x13, 0xf7, - 0x26, 0xf7, 0x10, 0x53, 0xca, 0x5, 0xe, 0xf7, 0x10, 0x76, 0xf7, 0x5d, - 0xf7, 0x1, 0x1, 0xf8, 0x45, 0xeb, 0x3, 0xd2, 0xf7, 0xc4, 0x15, 0xf7, - 0xfe, 0xfb, 0x5d, 0xeb, 0xf7, 0xca, 0xfc, 0x5e, 0x6, 0xe, 0x79, 0xb8, - 0xf7, 0xf6, 0xb9, 0xf7, 0x0, 0xb8, 0x1, 0x8b, 0xb8, 0xf7, 0x2f, 0xbb, - 0xf7, 0x5, 0xbd, 0xf7, 0x24, 0xb8, 0x3, 0xf7, 0xad, 0x4, 0xfb, 0x39, - 0xf7, 0x1b, 0xfb, 0x1a, 0xf7, 0x39, 0xf7, 0x3a, 0xf7, 0x1a, 0xf7, 0x1a, - 0xf7, 0x39, 0xf7, 0x39, 0xfb, 0x1a, 0xf7, 0x1a, 0xfb, 0x3a, 0xfb, 0x39, - 0xfb, 0x1b, 0xfb, 0x1a, 0xfb, 0x39, 0x1e, 0xb8, 0x16, 0xf7, 0x20, 0xf7, - 0x7, 0xf7, 0x6, 0xf7, 0x20, 0xf7, 0x22, 0xf7, 0x5, 0xfb, 0x6, 0xfb, - 0x20, 0xfb, 0x20, 0xfb, 0x5, 0xfb, 0x6, 0xfb, 0x22, 0xfb, 0x20, 0xfb, - 0x7, 0xf7, 0x6, 0xf7, 0x20, 0x1e, 0xf7, 0x2f, 0xfb, 0x27, 0x15, 0xbb, - 0xf7, 0x8, 0xc1, 0x6, 0xbe, 0xfb, 0x8, 0x5, 0xc5, 0x6, 0x54, 0xf7, - 0x13, 0x5, 0x9e, 0x91, 0xaf, 0xa4, 0xc7, 0x1a, 0xed, 0x42, 0x86, 0xfb, - 0x1e, 0x8d, 0x1e, 0xbb, 0xfb, 0x29, 0x15, 0xf2, 0x7, 0xde, 0xa9, 0x83, - 0x5f, 0x5f, 0x64, 0x84, 0x41, 0x1f, 0xe, 0xf8, 0x8d, 0xdb, 0x1, 0xe3, - 0xf8, 0x3c, 0x3, 0xe3, 0xf8, 0x8d, 0x15, 0xf8, 0x3c, 0xdb, 0xfc, 0x3c, - 0x6, 0xe, 0xf7, 0x87, 0xe6, 0xf7, 0x53, 0xe6, 0x1, 0xf5, 0xea, 0xf7, - 0x5b, 0xe9, 0x3, 0xf5, 0xf8, 0x41, 0x15, 0x24, 0xe1, 0x38, 0xf7, 0x0, - 0xf7, 0x1, 0xe0, 0xde, 0xf2, 0xf3, 0x36, 0xde, 0xfb, 0x1, 0xfb, 0x0, - 0x35, 0x38, 0x23, 0x1e, 0xea, 0x16, 0xc1, 0xb6, 0xb5, 0xc3, 0xc4, 0xb6, - 0x61, 0x55, 0x56, 0x60, 0x61, 0x52, 0x53, 0x60, 0xb5, 0xc0, 0x1e, 0xe, - 0xa3, 0xdc, 0xf7, 0x4a, 0xe3, 0xf7, 0x20, 0x67, 0xa, 0xeb, 0x3, 0xd2, - 0xf7, 0xb3, 0x15, 0xf7, 0x48, 0xfb, 0x27, 0xeb, 0xf7, 0x27, 0xf7, 0x4a, - 0xe3, 0xfb, 0x4a, 0xf7, 0x20, 0x2b, 0xfb, 0x20, 0xfb, 0x48, 0x6, 0xfb, - 0xf3, 0x4, 0xf8, 0x5e, 0xdc, 0xfc, 0x5e, 0x6, 0xe, 0xf7, 0x7a, 0xd6, - 0xf7, 0x39, 0xf7, 0x26, 0x3e, 0xd8, 0x12, 0xf8, 0x0, 0xdd, 0x13, 0xb0, - 0xf7, 0x2d, 0xf7, 0x7a, 0x15, 0xf7, 0xb9, 0xd6, 0xfb, 0x38, 0x6, 0xf7, - 0x1, 0xe0, 0x5, 0xa7, 0xa0, 0xa5, 0xb0, 0xb7, 0x1a, 0xae, 0x6e, 0xe4, - 0xfb, 0x5, 0x54, 0x57, 0x73, 0x56, 0x6c, 0x1e, 0x13, 0xd0, 0x46, 0xde, - 0x7, 0x13, 0xb0, 0xa1, 0x87, 0xba, 0xc6, 0xa4, 0xaf, 0x82, 0x64, 0x78, - 0x82, 0x7c, 0x79, 0x7c, 0x1e, 0xfb, 0x4c, 0xfb, 0x27, 0x5, 0xe, 0xf7, - 0x72, 0xd6, 0xee, 0xd4, 0xf7, 0x27, 0x77, 0x12, 0xf7, 0x83, 0xf7, 0x50, - 0x3b, 0xdb, 0x4e, 0xdc, 0x13, 0xe4, 0xf7, 0x2c, 0xf7, 0x96, 0x15, 0x71, - 0xcb, 0xb2, 0x81, 0xb3, 0x1b, 0xe9, 0xc5, 0xc6, 0xce, 0xae, 0x7a, 0xae, - 0x6d, 0xa2, 0x1f, 0x13, 0xe8, 0x97, 0x97, 0x9a, 0xa1, 0xab, 0x1a, 0xd7, - 0x50, 0xac, 0x4a, 0x57, 0x54, 0x78, 0x6a, 0x69, 0x1e, 0xb5, 0x4b, 0x5, - 0x9d, 0xaa, 0xaf, 0xa1, 0xaf, 0x1b, 0x9c, 0xa2, 0x84, 0x70, 0x70, 0x75, - 0x80, 0x70, 0x1f, 0x13, 0xf0, 0x88, 0x7b, 0x8c, 0x63, 0x1b, 0x42, 0xce, - 0x7, 0x13, 0xe4, 0xb6, 0x9c, 0x74, 0x72, 0x6e, 0x73, 0x75, 0x64, 0x1f, - 0x5e, 0x8c, 0x66, 0x99, 0x67, 0x9d, 0x8, 0xe, 0xf8, 0xa5, 0x76, 0xf7, - 0x2d, 0x77, 0x1, 0xf7, 0x4e, 0xf8, 0x90, 0x15, 0xf7, 0x89, 0xcc, 0x6b, - 0xe3, 0xfb, 0x7b, 0x24, 0x5, 0xe, 0xfb, 0xd, 0x76, 0xf7, 0x36, 0xd9, - 0x3d, 0xe5, 0xf7, 0x83, 0xe5, 0x12, 0x9a, 0xf7, 0x45, 0x2a, 0xec, 0xf7, - 0x1c, 0xf7, 0x46, 0x2a, 0xec, 0x2a, 0xf7, 0x44, 0x13, 0xd9, 0x0, 0xea, - 0xfb, 0x22, 0x15, 0xec, 0xf7, 0x51, 0x6, 0x77, 0x9e, 0xaa, 0x83, 0xab, - 0x1b, 0xc0, 0xc6, 0xa1, 0xa9, 0xa2, 0x1f, 0x58, 0x7, 0x13, 0xb8, 0x80, - 0xf7, 0x44, 0xe5, 0x6, 0x13, 0xba, 0x0, 0x3c, 0xf7, 0xdd, 0xfb, 0x46, - 0x31, 0x6, 0x13, 0xd9, 0x0, 0xdc, 0xfb, 0x56, 0x6, 0x6b, 0x71, 0x55, - 0x72, 0x5c, 0x1b, 0x5b, 0x61, 0xa0, 0xca, 0x1f, 0xf7, 0x95, 0xfb, 0x45, - 0x31, 0x7, 0x13, 0xd6, 0x0, 0xdb, 0x6, 0xe, 0x5a, 0x76, 0xf9, 0x0, - 0xa9, 0x1, 0xf7, 0xd4, 0xc2, 0xeb, 0xc0, 0x3, 0xf7, 0xd4, 0x45, 0x15, - 0xc2, 0xf9, 0x0, 0xeb, 0xfd, 0x0, 0xc0, 0xf9, 0x0, 0xc8, 0xa9, 0xfb, - 0x98, 0x6, 0xfb, 0x60, 0x21, 0x4f, 0xfb, 0xc, 0xfb, 0x2, 0xf5, 0x57, - 0xf7, 0x5b, 0x8a, 0x1f, 0xe, 0xf7, 0x39, 0xf7, 0x4e, 0x1, 0xf7, 0x58, - 0xf7, 0x96, 0x15, 0x58, 0xba, 0x61, 0xc4, 0xc4, 0xba, 0xb5, 0xbe, 0xbe, - 0x5c, 0xb5, 0x52, 0x52, 0x5c, 0x61, 0x58, 0x1e, 0xe, 0xfb, 0x4d, 0x76, - 0xf7, 0x62, 0x77, 0x12, 0xf7, 0x91, 0x16, 0x80, 0x2d, 0x5, 0x8f, 0x92, - 0x9a, 0x8d, 0x99, 0x1b, 0x9d, 0x9b, 0x85, 0x77, 0x7d, 0x7e, 0x83, 0x7b, - 0x1f, 0x13, 0xc0, 0x7c, 0x74, 0x90, 0x94, 0x82, 0x1f, 0x70, 0x53, 0x5, - 0x79, 0xa4, 0xa6, 0x81, 0xa9, 0x1b, 0xc9, 0xb1, 0xb8, 0xc2, 0xc8, 0x60, - 0x9a, 0x7b, 0x8f, 0x1f, 0xa5, 0x7, 0xe, 0xf7, 0x7a, 0xd8, 0xf7, 0xc9, - 0x77, 0x12, 0xf7, 0x3a, 0xf7, 0x45, 0x3b, 0xdb, 0x13, 0xe0, 0xf7, 0x2d, - 0xf7, 0x7a, 0x15, 0xf7, 0xba, 0xd8, 0x23, 0xf7, 0xc9, 0x6, 0xfb, 0x45, - 0x75, 0x5, 0x3f, 0x7, 0x13, 0xd0, 0xec, 0x91, 0x5, 0xfb, 0x6d, 0xfb, - 0x2, 0x7, 0xe, 0xf7, 0x58, 0xde, 0xf7, 0x6e, 0xde, 0x1, 0xf7, 0x27, - 0xcf, 0xf7, 0x3f, 0xce, 0x3, 0xf7, 0x27, 0xf8, 0x18, 0x15, 0x21, 0xca, - 0x35, 0xe7, 0xda, 0xd3, 0xd6, 0xf7, 0x9, 0xe9, 0x53, 0xed, 0x29, 0x2a, - 0x54, 0x24, 0x32, 0x1e, 0xcf, 0x89, 0x15, 0xbe, 0xa7, 0xc7, 0xc5, 0xc5, - 0xa6, 0x4c, 0x5d, 0x49, 0x66, 0x60, 0x5b, 0x53, 0x6d, 0xbe, 0xc3, 0x1e, - 0xe, 0x7b, 0xa, 0xbc, 0xf8, 0x8b, 0x3, 0xf0, 0xd1, 0x15, 0xf7, 0x77, - 0xf7, 0x52, 0xfb, 0x74, 0xf7, 0x4e, 0x54, 0x4c, 0xf7, 0x2b, 0xfb, 0x10, - 0xfb, 0x2d, 0xfb, 0x13, 0x5, 0xf7, 0xb5, 0x4d, 0x15, 0xf7, 0x6c, 0xf7, - 0x52, 0xfb, 0x69, 0xf7, 0x4e, 0x53, 0x4c, 0xf7, 0x26, 0xfb, 0x10, 0xfb, - 0x28, 0xfb, 0x13, 0x5, 0xe, 0x64, 0x76, 0xa2, 0xc4, 0x5a, 0x76, 0xf7, - 0x6, 0xca, 0xf7, 0x43, 0xd0, 0x8b, 0xf7, 0x4f, 0xe1, 0x77, 0x12, 0xbf, - 0xd5, 0xf8, 0x8, 0xd7, 0x13, 0xdf, 0x80, 0xf7, 0xf0, 0xcb, 0x15, 0xf7, - 0x2a, 0x5f, 0x3f, 0x52, 0xf7, 0x59, 0xc4, 0x5e, 0xb7, 0xb8, 0xca, 0x5e, - 0xf7, 0x41, 0x42, 0x6, 0xfb, 0x2d, 0xfb, 0x52, 0x5, 0xe3, 0x9c, 0x15, - 0xc9, 0xd7, 0x5, 0x3f, 0x7, 0xfc, 0x71, 0xfb, 0x10, 0x15, 0x13, 0x3f, - 0x80, 0x65, 0xa, 0x50, 0xc6, 0x5, 0xfd, 0x12, 0xfb, 0xea, 0x15, 0xf7, - 0xa0, 0xd0, 0x2d, 0xf7, 0xa4, 0x6, 0xfb, 0x37, 0x78, 0x5, 0x47, 0x7, - 0xe4, 0x90, 0x5, 0xfb, 0x52, 0x27, 0x7, 0xe, 0x51, 0xce, 0xf7, 0x33, - 0xf7, 0x16, 0x47, 0xcf, 0x8a, 0xd1, 0x8b, 0xf7, 0x52, 0xe2, 0x77, 0xb0, - 0x77, 0x12, 0xbc, 0xd1, 0x13, 0xcb, 0xf8, 0x20, 0x97, 0x15, 0x51, 0xf7, - 0x90, 0xce, 0xfb, 0x22, 0x7, 0xf7, 0xa, 0xeb, 0xa2, 0xaa, 0xb3, 0x1a, - 0xa9, 0x71, 0xdb, 0x29, 0x5d, 0x62, 0x75, 0x67, 0x6d, 0x1e, 0x43, 0xd2, - 0x7, 0x13, 0xab, 0x9e, 0x87, 0xb6, 0xbd, 0xa1, 0xac, 0x82, 0x69, 0x79, - 0x82, 0x7e, 0xfb, 0x41, 0xfb, 0x24, 0x1e, 0x13, 0x9b, 0xfc, 0x4f, 0xf7, - 0xb1, 0x15, 0xf7, 0x91, 0xd1, 0x34, 0xf7, 0xa8, 0x6, 0x13, 0x9d, 0xfb, - 0x2e, 0x78, 0x5, 0x46, 0x7, 0xdf, 0x90, 0x5, 0xfb, 0x55, 0x2b, 0x7, - 0xc7, 0xfc, 0x0, 0x15, 0x65, 0xa, 0x50, 0xc6, 0x5, 0xe, 0x5e, 0xc4, - 0x58, 0x76, 0xaa, 0x76, 0xf5, 0xcb, 0xf7, 0x3c, 0xd0, 0xe5, 0xcb, 0xc8, - 0xcd, 0x91, 0x77, 0xb0, 0x77, 0x12, 0x13, 0x5e, 0x80, 0xf7, 0xe7, 0xc3, - 0x15, 0xf7, 0x29, 0x6, 0x13, 0x9e, 0x80, 0x5f, 0x41, 0x52, 0xf7, 0x56, - 0xc4, 0x5d, 0xb7, 0xb9, 0xcb, 0x5d, 0xf7, 0x46, 0x45, 0x7, 0xfb, 0x2d, - 0xfb, 0x56, 0x5, 0xe3, 0x9b, 0x15, 0xc8, 0xd9, 0x5, 0x3d, 0x7, 0xfc, - 0xa8, 0xf7, 0x5f, 0x15, 0x71, 0xc7, 0xaf, 0x82, 0xb3, 0x1b, 0xe1, 0xbe, - 0xc1, 0xc9, 0xaa, 0x7c, 0xaa, 0x70, 0x9f, 0x1f, 0x96, 0x95, 0x98, 0xa0, - 0xa9, 0x1a, 0xc9, 0x56, 0xa8, 0x4f, 0x5b, 0x57, 0x7b, 0x6d, 0x6b, 0x1e, - 0xb4, 0x56, 0x5, 0x9d, 0x99, 0xad, 0x9a, 0xb0, 0x1b, 0xa4, 0x9f, 0x83, - 0x79, 0x71, 0x76, 0x82, 0x73, 0x1f, 0x55, 0x4b, 0xca, 0x6, 0xb2, 0x9a, - 0x76, 0x75, 0x71, 0x75, 0x76, 0x69, 0x1f, 0x89, 0x6, 0x61, 0x8c, 0x69, - 0x98, 0x69, 0x9a, 0x8, 0xa8, 0xfc, 0x13, 0x15, 0x13, 0x3e, 0x80, 0x65, - 0xa, 0x5, 0x13, 0x5d, 0x0, 0x50, 0xc6, 0x5, 0xe, 0xfb, 0x26, 0xe7, - 0xf7, 0xf1, 0xf7, 0x2e, 0x12, 0xed, 0xec, 0xba, 0xf7, 0x44, 0x7c, 0xed, - 0x13, 0xe8, 0xf7, 0xad, 0xf7, 0x59, 0x15, 0x57, 0x7f, 0xfb, 0x17, 0x66, - 0xfb, 0xf, 0x1a, 0xfb, 0x2, 0xeb, 0x4e, 0xf7, 0xd, 0xc2, 0xd9, 0x9a, - 0x9f, 0xc0, 0x1e, 0xf7, 0x24, 0x29, 0x3f, 0x7, 0x85, 0x6f, 0x6d, 0x86, - 0x6e, 0x1b, 0x48, 0x55, 0xa3, 0xc2, 0xd5, 0xe9, 0x9c, 0xe4, 0x99, 0x1f, - 0xf7, 0x13, 0x7, 0x13, 0x50, 0x2a, 0x6, 0x13, 0xf0, 0x64, 0xf7, 0x7, - 0x15, 0x60, 0xb2, 0x69, 0xbc, 0x1e, 0x13, 0x50, 0xbc, 0xb2, 0xad, 0xb6, - 0xb6, 0x64, 0xad, 0x5a, 0x5a, 0x64, 0x69, 0x60, 0x1f, 0xe, 0x8b, 0xe5, - 0xcc, 0xe5, 0xf7, 0x7a, 0xe5, 0xf7, 0x6f, 0x77, 0x44, 0xa, 0xf7, 0x19, - 0xf9, 0x3c, 0x15, 0xf7, 0xcf, 0x40, 0xa5, 0xc5, 0xfb, 0xbe, 0xf7, 0xd, - 0x5, 0xfb, 0x4d, 0xfd, 0xa4, 0x22, 0xa, 0x8b, 0xe5, 0xcc, 0xe5, 0xf7, - 0x6d, 0xe5, 0xf7, 0x7c, 0x77, 0x44, 0xa, 0x82, 0x16, 0x20, 0xa, 0xfb, - 0x60, 0xf7, 0xfc, 0x15, 0xf7, 0xd2, 0xd5, 0x62, 0xf4, 0xfb, 0xbd, 0x6a, - 0xa, 0xe, 0x8b, 0xe4, 0xcd, 0xe4, 0xf7, 0x6d, 0xe4, 0xf7, 0x7a, 0x77, - 0x44, 0xa, 0xf7, 0x20, 0xf8, 0xef, 0x15, 0xf7, 0x2c, 0xf1, 0xf7, 0x2b, - 0x25, 0xc7, 0xaf, 0xfb, 0x36, 0xf7, 0x21, 0x5, 0x2a, 0x6, 0xfb, 0x39, - 0xfb, 0x20, 0x5, 0x33, 0xfd, 0x14, 0x22, 0xa, 0x8b, 0xe5, 0xcc, 0xe5, - 0xf7, 0x6d, 0xe5, 0xc7, 0xde, 0x74, 0xde, 0x8f, 0x77, 0x12, 0x82, 0xf7, - 0x97, 0xf4, 0xf7, 0x92, 0x13, 0xeb, 0xde, 0xf9, 0x10, 0x15, 0xe3, 0x71, - 0x5, 0xaf, 0x99, 0x98, 0xa5, 0xa7, 0x1b, 0xaf, 0x9f, 0x78, 0x7b, 0xa4, - 0x1f, 0x13, 0xf7, 0x7e, 0x9f, 0xa1, 0x7f, 0xae, 0x1b, 0xd9, 0xbd, 0xc6, - 0xca, 0x9a, 0x1f, 0x35, 0xa4, 0x5, 0x75, 0x84, 0x7d, 0x61, 0x66, 0x1b, - 0x6d, 0x76, 0x99, 0x9a, 0x75, 0x1f, 0x13, 0xeb, 0x9a, 0x74, 0x73, 0x9b, - 0x66, 0x1b, 0x38, 0x5e, 0x49, 0x56, 0x7c, 0x1f, 0x2f, 0xfd, 0x10, 0x22, - 0xa, 0x8b, 0xe3, 0xcc, 0xe3, 0xf7, 0x69, 0xe3, 0xdf, 0xf7, 0xe, 0x44, - 0xa, 0xf7, 0xda, 0xf9, 0x10, 0x15, 0xf7, 0x3, 0xf7, 0xe, 0x6b, 0xa, - 0xfb, 0x4b, 0xfb, 0xe, 0x15, 0xf7, 0x5, 0xf7, 0xe, 0xfb, 0x5, 0x6, - 0xfb, 0x2c, 0xfd, 0x8a, 0x22, 0xa, 0x8b, 0xe8, 0xcf, 0xe9, 0xf7, 0x7e, - 0xe8, 0x9e, 0xc9, 0xd7, 0xc9, 0x1, 0xf7, 0x4d, 0xcc, 0xdb, 0xcb, 0x3, - 0xf7, 0x4d, 0xf9, 0x51, 0x15, 0x54, 0xba, 0x5e, 0xc5, 0xc4, 0xba, 0xb8, - 0xc2, 0xc2, 0x5c, 0xb8, 0x52, 0x51, 0x5c, 0x5e, 0x54, 0x1e, 0xcd, 0x16, - 0xa0, 0x9c, 0x9c, 0xa1, 0xa1, 0x9d, 0x7a, 0x76, 0x76, 0x79, 0x7a, 0x75, - 0x75, 0x7a, 0x9c, 0xa0, 0x1e, 0xfb, 0x98, 0xfd, 0x51, 0x22, 0xa, 0x8b, - 0xe5, 0x31, 0xf7, 0x40, 0x7e, 0xe6, 0x48, 0xf7, 0x50, 0x9d, 0xf7, 0x41, - 0x31, 0xe5, 0x12, 0xf7, 0xbe, 0xed, 0xb5, 0xda, 0x9d, 0xdc, 0x13, 0xab, - 0x80, 0x7c, 0x16, 0xf7, 0x89, 0xe5, 0x3e, 0x6, 0xa9, 0xd0, 0x5, 0xf7, - 0x7, 0xfb, 0x33, 0xf7, 0xd2, 0x6, 0x13, 0x5b, 0x80, 0xf7, 0x40, 0x3a, - 0x7, 0x13, 0x97, 0x80, 0x39, 0xfb, 0x1f, 0xf7, 0x22, 0xb5, 0x5a, 0xda, - 0xf7, 0x50, 0x3c, 0x5a, 0x61, 0xf7, 0x2a, 0xf7, 0x1f, 0x7, 0x13, 0xab, - 0x80, 0x38, 0xdc, 0xf7, 0x41, 0xfc, 0x7b, 0x7, 0x13, 0xa7, 0x80, 0x31, - 0xea, 0x7, 0xfb, 0x40, 0xfc, 0x12, 0x5, 0x48, 0x6, 0xf7, 0x83, 0xf7, - 0x34, 0x15, 0xd5, 0xf7, 0x39, 0x5, 0xfb, 0x39, 0x7, 0xe, 0xfb, 0x4d, - 0x76, 0xf7, 0x54, 0xe7, 0xf8, 0x2e, 0xe7, 0x1, 0xaa, 0xec, 0xf7, 0x16, - 0xf7, 0x22, 0xcb, 0xec, 0x3, 0xf7, 0x9b, 0x82, 0x15, 0x82, 0x2e, 0x5, - 0x8e, 0x98, 0x9f, 0x8e, 0x97, 0x1b, 0x94, 0x99, 0x84, 0x7f, 0x7c, 0x80, - 0x84, 0x7d, 0x7d, 0x79, 0x91, 0x95, 0x7d, 0x1f, 0x6f, 0x52, 0x5, 0x71, - 0xac, 0xa0, 0x89, 0xa1, 0x1b, 0xc2, 0xb9, 0xac, 0xca, 0x98, 0x8b, 0xc3, - 0x4f, 0x99, 0x1f, 0x8c, 0x98, 0xe3, 0x8f, 0xcf, 0xb2, 0xd3, 0xb9, 0x19, - 0x52, 0xcf, 0x5, 0x72, 0x60, 0x4a, 0x63, 0x36, 0x1b, 0xfb, 0x21, 0x59, - 0xf7, 0x15, 0xd7, 0xf7, 0x2f, 0xf7, 0x6, 0xbd, 0xd7, 0xc1, 0xbd, 0x78, - 0x71, 0xb5, 0x1f, 0x21, 0xec, 0xf7, 0x87, 0x2a, 0x60, 0x7, 0xa4, 0x6a, - 0x55, 0x9d, 0x4e, 0x1b, 0xfb, 0x1e, 0xfb, 0x27, 0x2a, 0xfb, 0x5e, 0xfb, - 0x21, 0xea, 0xfb, 0x13, 0xf7, 0x1d, 0x75, 0x1f, 0xe, 0x48, 0xa, 0xc1, - 0xed, 0x3, 0xb1, 0x16, 0x35, 0xa, 0xf6, 0xf8, 0xe2, 0x15, 0xf7, 0xd2, - 0x40, 0xa6, 0x77, 0xa, 0x48, 0xa, 0xbf, 0xee, 0x3, 0xb1, 0x16, 0xf8, - 0xa5, 0x6, 0x8a, 0xf7, 0x5e, 0x5, 0x28, 0xfb, 0x4, 0xfb, 0x91, 0x38, - 0xa, 0xf7, 0x91, 0xfb, 0x6, 0xee, 0xf7, 0x60, 0xfc, 0xa1, 0x31, 0xd7, - 0xfc, 0x8, 0x3c, 0x6, 0xf7, 0x2b, 0xf8, 0x97, 0x15, 0xf7, 0xd8, 0xd5, - 0x61, 0xf4, 0xfb, 0xc3, 0x6a, 0xa, 0xe, 0x8b, 0xe4, 0xf7, 0x26, 0xe4, - 0xf7, 0x1d, 0xe4, 0xf7, 0x7a, 0x77, 0x1, 0xf7, 0x9, 0xec, 0xf1, 0xee, - 0xc0, 0xee, 0x3, 0xf7, 0x2b, 0xf8, 0xef, 0x15, 0xf7, 0x2d, 0xf1, 0xf7, - 0x2d, 0x25, 0xc8, 0xaf, 0xfb, 0x37, 0xf7, 0x21, 0x5, 0x27, 0x6, 0xfb, - 0x3b, 0xfb, 0x20, 0x5, 0x59, 0xfd, 0x14, 0x15, 0x35, 0xa, 0xe, 0x8b, - 0xe3, 0xf7, 0x24, 0xe2, 0xf7, 0x1b, 0xe3, 0xdf, 0xf7, 0xe, 0x12, 0xf7, - 0x9, 0xec, 0x4f, 0xf7, 0x6, 0xbb, 0xee, 0x40, 0xf7, 0x4, 0x9c, 0xed, - 0x13, 0xf5, 0x80, 0xf7, 0xe8, 0xf9, 0x10, 0x15, 0xf7, 0x4, 0xf7, 0xe, - 0xfb, 0x4, 0x56, 0xa, 0xfb, 0x8, 0xfd, 0x8a, 0x15, 0xf8, 0xa5, 0xf7, - 0x5e, 0x29, 0xfb, 0x4, 0x6, 0x13, 0xfa, 0x80, 0x2d, 0xa, 0xe, 0x8b, - 0xe5, 0xf8, 0x8, 0x5f, 0xa, 0xf7, 0x90, 0xef, 0x3, 0xd8, 0x16, 0x31, - 0xa, 0xcd, 0xf8, 0xe2, 0x15, 0xf7, 0xd4, 0x40, 0xa5, 0x77, 0xa, 0x8b, - 0xe5, 0xf8, 0x8, 0x5f, 0xa, 0xf7, 0x90, 0xef, 0x3, 0xf7, 0x50, 0xf8, - 0xf1, 0x15, 0xf7, 0xd9, 0xd5, 0x60, 0xf4, 0xfb, 0xc2, 0x6a, 0xa, 0x30, - 0xfd, 0x2c, 0x15, 0x31, 0xa, 0xe, 0x8b, 0xe4, 0xf8, 0x8, 0xe4, 0xf7, - 0x7a, 0x67, 0xa, 0xef, 0x3, 0xf7, 0x29, 0xf8, 0xef, 0x15, 0xf7, 0x2e, - 0xf1, 0xf7, 0x2d, 0x25, 0xc8, 0xaf, 0xfb, 0x38, 0xf7, 0x21, 0x5, 0x28, - 0x6, 0xfb, 0x3c, 0xfb, 0x20, 0x5, 0x82, 0xfd, 0x14, 0x15, 0x31, 0xa, - 0xe, 0x8b, 0xe3, 0xf8, 0x2, 0xe3, 0xdf, 0xf7, 0xe, 0x12, 0xf7, 0x2d, - 0xf7, 0x6, 0x7c, 0xef, 0x7e, 0xf7, 0x5, 0x13, 0xf4, 0xf7, 0xe7, 0xf9, - 0x10, 0x15, 0xf7, 0x5, 0xf7, 0xe, 0xfb, 0x5, 0x56, 0xa, 0x3f, 0xfd, - 0x8a, 0x15, 0xf8, 0x52, 0xe5, 0x6, 0x13, 0xe8, 0x30, 0xa, 0xe, 0x8b, - 0xe6, 0xf7, 0x30, 0xce, 0xf7, 0x31, 0xe6, 0x1, 0xf0, 0xeb, 0xf7, 0xb5, - 0xeb, 0x3, 0x9d, 0x16, 0xf7, 0xa1, 0x6, 0xf7, 0x2f, 0xf7, 0x20, 0xce, - 0xf7, 0x75, 0xf7, 0x39, 0x39, 0xf4, 0xfb, 0x4e, 0x1f, 0xfb, 0xbc, 0x30, - 0xde, 0xfb, 0x31, 0x43, 0x48, 0xd3, 0xfb, 0x30, 0x38, 0x6, 0xf7, 0x47, - 0x16, 0xf7, 0x30, 0xf7, 0x12, 0xce, 0xfb, 0x12, 0xf7, 0x31, 0xf7, 0xb, - 0x7, 0xf7, 0xf, 0xba, 0x38, 0x27, 0xfb, 0x12, 0x46, 0x44, 0xfb, 0x1a, - 0x1f, 0xe, 0x7f, 0xe7, 0xf8, 0x13, 0xe7, 0xc1, 0xdf, 0x12, 0xd9, 0xe8, - 0xf7, 0x97, 0xe8, 0x17, 0x8a, 0x7f, 0x15, 0xf7, 0x99, 0xe7, 0x32, 0xf7, - 0xd6, 0x6, 0xf7, 0x9b, 0xfc, 0x32, 0x5, 0xe4, 0xf8, 0x79, 0xd9, 0xe7, - 0xfb, 0x9e, 0x2f, 0xea, 0xfb, 0xcb, 0x6, 0xfb, 0x8b, 0xf8, 0x27, 0x5, - 0xfb, 0x4c, 0x2f, 0xda, 0xfc, 0x1d, 0x3c, 0x6, 0xe8, 0xf8, 0xc7, 0x15, - 0xe0, 0x71, 0x5, 0xaf, 0x9a, 0x97, 0xa6, 0xa7, 0x1b, 0xb2, 0x9f, 0x79, - 0x7a, 0xa2, 0x1f, 0x13, 0x60, 0x7d, 0x9e, 0x9f, 0x7f, 0xac, 0x1b, 0xd7, - 0xbb, 0xc7, 0xcb, 0x9a, 0x1f, 0x38, 0xa5, 0x5, 0x75, 0x84, 0x7c, 0x5f, - 0x68, 0x1b, 0x6f, 0x7b, 0x99, 0x99, 0x79, 0x1f, 0x9b, 0x77, 0x73, 0x9c, - 0x5c, 0x1b, 0x3a, 0x5f, 0x48, 0x55, 0x7c, 0x1f, 0xe, 0x61, 0xa, 0xf7, - 0x72, 0x54, 0xa, 0xa1, 0xf7, 0xa2, 0x2f, 0xa, 0xf7, 0x2b, 0x2e, 0xf7, - 0x1f, 0x26, 0xa, 0xa3, 0xf8, 0x2a, 0x15, 0xf7, 0xd0, 0x40, 0xa5, 0xc5, - 0xfb, 0xbf, 0xf7, 0xe, 0x5, 0xe, 0x61, 0xa, 0xf7, 0x72, 0x54, 0xa, - 0xa1, 0xf7, 0xa2, 0x25, 0xa, 0xd0, 0xf7, 0xdf, 0x15, 0xf7, 0xd4, 0xd5, - 0x61, 0xf5, 0xfb, 0xbe, 0xfb, 0xd, 0x5, 0xe, 0x61, 0xa, 0xf7, 0x6e, - 0x54, 0xa, 0xf7, 0x2b, 0xf8, 0xee, 0x15, 0xf7, 0x2c, 0xf2, 0xf7, 0x2c, - 0x24, 0xc6, 0xaf, 0xfb, 0x35, 0xf7, 0x22, 0x5, 0x29, 0x6, 0xfb, 0x3a, - 0xfb, 0x21, 0x5, 0x48, 0xfc, 0x5, 0x25, 0xa, 0xe, 0x61, 0xa, 0xbb, - 0xdf, 0x73, 0xdf, 0x90, 0x77, 0x12, 0xa1, 0xed, 0xf7, 0xff, 0xea, 0x13, - 0xd6, 0xe7, 0xf9, 0xe, 0x15, 0xe3, 0x71, 0x5, 0xae, 0x99, 0x99, 0xa6, - 0xa6, 0x1b, 0xac, 0x9e, 0x7d, 0x7d, 0xa0, 0x1f, 0x13, 0xee, 0x7d, 0xa0, - 0xa2, 0x79, 0xb6, 0x1b, 0xd9, 0xbe, 0xc6, 0xcb, 0x9a, 0x1f, 0x36, 0xa5, - 0x5, 0x75, 0x83, 0x7c, 0x60, 0x66, 0x1b, 0x6a, 0x7c, 0x9d, 0x9b, 0x74, - 0x1f, 0x13, 0xd6, 0x98, 0x78, 0x72, 0x98, 0x5f, 0x1b, 0x39, 0x5e, 0x49, - 0x55, 0x7b, 0x1f, 0x45, 0xfc, 0x0, 0x25, 0xa, 0xe, 0x79, 0xe4, 0xf8, - 0x15, 0xe6, 0xd8, 0xf7, 0x10, 0x1, 0xa1, 0xed, 0xae, 0xf7, 0x5, 0xd1, - 0xf7, 0x5, 0xab, 0xea, 0x3, 0xf7, 0xe6, 0xf9, 0xe, 0x53, 0xa, 0xfb, - 0x4b, 0xfb, 0x10, 0x53, 0xa, 0xfb, 0x19, 0xfc, 0x7c, 0x25, 0xa, 0xe, - 0xc7, 0x76, 0xf8, 0x4b, 0x77, 0x1, 0xdc, 0xef, 0x15, 0xc8, 0x4e, 0xf7, - 0x32, 0xf7, 0x33, 0xf7, 0x32, 0xfb, 0x33, 0xc8, 0xc8, 0xfb, 0x31, 0xf7, - 0x32, 0xf7, 0x30, 0xf7, 0x30, 0x4f, 0xc8, 0xfb, 0x33, 0xfb, 0x30, 0xfb, - 0x32, 0xf7, 0x33, 0x4e, 0x4f, 0xf7, 0x33, 0xfb, 0x33, 0x5, 0xe, 0x7c, - 0xe6, 0x3e, 0x76, 0xf8, 0x93, 0xe8, 0x8d, 0x77, 0x12, 0xa1, 0xee, 0xf8, - 0x2, 0xe6, 0x13, 0x6c, 0xad, 0xa3, 0x15, 0xcc, 0x5d, 0xba, 0xbf, 0x5, - 0x13, 0x9c, 0x6d, 0xbb, 0xc1, 0x7c, 0xc2, 0x1b, 0xf2, 0xf7, 0x40, 0xd1, - 0xf7, 0x76, 0xce, 0x78, 0xd3, 0x61, 0xc4, 0x1f, 0xbc, 0xc6, 0x4b, 0xbb, - 0x62, 0x58, 0x5, 0x13, 0xac, 0xa9, 0x61, 0x56, 0x9e, 0x4c, 0x1b, 0xfb, - 0x44, 0x8a, 0x22, 0xfb, 0x24, 0xfb, 0x30, 0x1a, 0x38, 0xa3, 0x4b, 0xb2, - 0x5a, 0x1e, 0xcd, 0xda, 0x15, 0x77, 0xa9, 0x81, 0xb9, 0xb4, 0x1a, 0xe9, - 0xc7, 0xf7, 0x6, 0xf7, 0xe, 0xb2, 0xab, 0x80, 0x7a, 0xa4, 0x1e, 0xfb, - 0x54, 0xfb, 0xfa, 0x15, 0xf7, 0x8a, 0xf7, 0xbd, 0x5, 0xa1, 0x6a, 0x97, - 0x54, 0x6c, 0x1a, 0x38, 0x58, 0xfb, 0xe, 0xfb, 0x19, 0x65, 0x6a, 0x95, - 0x9c, 0x72, 0x1e, 0xe, 0x4f, 0xa, 0xf7, 0x20, 0xf9, 0x3b, 0x15, 0xf7, - 0xca, 0x41, 0xa5, 0xc5, 0xfb, 0xb9, 0xf7, 0xd, 0x5, 0xfb, 0x47, 0xfb, - 0xd8, 0x15, 0x27, 0xa, 0x4f, 0xa, 0xf7, 0x4d, 0xf8, 0xf1, 0x15, 0xf7, - 0xcd, 0xd4, 0x62, 0xf5, 0xfb, 0xb9, 0x6a, 0xa, 0xfb, 0x34, 0xfb, 0x60, - 0x15, 0x27, 0xa, 0x79, 0xe6, 0xf8, 0x16, 0xe5, 0xf7, 0x7b, 0x52, 0xa, - 0xf7, 0x26, 0xf8, 0xef, 0x15, 0xf7, 0x2a, 0xf1, 0xf7, 0x28, 0x25, 0xc5, - 0xae, 0xfb, 0x32, 0xf7, 0x22, 0x5, 0x2c, 0x6, 0xfb, 0x37, 0xfb, 0x21, - 0x5, 0x39, 0xfb, 0x47, 0x15, 0x27, 0xa, 0x79, 0xe4, 0xf8, 0x11, 0xe3, - 0xe1, 0xf7, 0xe, 0x12, 0xdf, 0xea, 0x6d, 0xf7, 0x3, 0xd0, 0xf7, 0x2, - 0x7c, 0xea, 0x13, 0xec, 0xf7, 0xdd, 0xf9, 0x10, 0x15, 0xf7, 0x2, 0xf7, - 0xe, 0xfb, 0x2, 0x6, 0xfb, 0x48, 0xfb, 0xe, 0x15, 0xf7, 0x3, 0xf7, - 0xe, 0x6b, 0xa, 0xfb, 0x25, 0xfb, 0xbe, 0x15, 0x13, 0xf2, 0x27, 0xa, - 0x8b, 0xe5, 0xf8, 0x9, 0xe5, 0xf7, 0x7b, 0x77, 0x1, 0xf7, 0x8e, 0xec, - 0x3, 0xf7, 0x12, 0x16, 0xf7, 0xeb, 0xe5, 0xfb, 0xe, 0xf7, 0x6, 0x6, - 0xf7, 0x34, 0xf7, 0x97, 0x5, 0xdc, 0xe5, 0xfb, 0x82, 0x31, 0xc2, 0x6, - 0x21, 0xfb, 0x41, 0x24, 0xf7, 0x41, 0x5, 0xc0, 0xe5, 0xfb, 0x82, 0x31, - 0xda, 0x6, 0xf7, 0x34, 0xfb, 0x97, 0x5, 0xfb, 0x6, 0xfb, 0x10, 0x7, - 0xc9, 0xf8, 0x98, 0x15, 0xf7, 0xce, 0xd4, 0x62, 0xf4, 0xfb, 0xbb, 0xfb, - 0xb, 0x5, 0xe, 0x8b, 0xe6, 0xbe, 0xdb, 0xf7, 0x9, 0xdb, 0xbf, 0xe6, - 0x1, 0xf7, 0x2a, 0xde, 0xf7, 0x81, 0xdf, 0x3, 0xb8, 0x16, 0xf7, 0xc5, - 0xe6, 0xfb, 0x9, 0xbe, 0xf7, 0xf, 0x6, 0xee, 0xee, 0x9c, 0xf7, 0x13, - 0xf7, 0x29, 0xfb, 0x1d, 0x7b, 0x28, 0x1f, 0x36, 0xbf, 0xf7, 0xb, 0xe6, - 0xfb, 0xc5, 0x30, 0xf2, 0xfc, 0x10, 0x22, 0x6, 0xf7, 0x50, 0xf7, 0x17, - 0x15, 0xf7, 0x9, 0xf7, 0x16, 0x7, 0xb1, 0xd0, 0x8c, 0x50, 0x48, 0x47, - 0x93, 0x6a, 0x1f, 0xe, 0x7c, 0xe9, 0x39, 0xe9, 0xf7, 0x90, 0xe9, 0xea, - 0xe9, 0x12, 0x98, 0xf7, 0x46, 0x2b, 0xeb, 0xf7, 0x78, 0xeb, 0x72, 0xec, - 0x13, 0x7a, 0x98, 0x88, 0x15, 0xf7, 0x46, 0xf8, 0x56, 0x6, 0xdc, 0xab, - 0x8f, 0xcf, 0xd7, 0xbf, 0x87, 0x70, 0x6e, 0x55, 0x7d, 0x62, 0x75, 0x1e, - 0x66, 0x77, 0x63, 0x6e, 0x5a, 0x1a, 0x38, 0xd4, 0x71, 0xd9, 0x6f, 0x1e, - 0x13, 0xb9, 0xab, 0x80, 0xc7, 0x7f, 0x62, 0x1a, 0x69, 0x5a, 0x73, 0x4e, - 0x66, 0x42, 0x97, 0xa5, 0x73, 0x1e, 0x6e, 0x34, 0x5, 0x67, 0xc8, 0xb3, - 0x82, 0xc1, 0x1b, 0xf7, 0x18, 0xde, 0xd4, 0xe0, 0xe5, 0x3d, 0xa2, 0x42, - 0xa3, 0x1f, 0x5b, 0x9b, 0x5f, 0x9b, 0xa4, 0x1a, 0xa1, 0xaf, 0x9b, 0xb0, - 0x9c, 0x1e, 0x13, 0xb6, 0xc6, 0xa6, 0xb2, 0x9f, 0xcb, 0x1a, 0xd5, 0x51, - 0xbc, 0xfb, 0x40, 0xfb, 0x3a, 0x73, 0x4a, 0xfb, 0x10, 0x1e, 0x13, 0xba, - 0x39, 0x2d, 0x6, 0x13, 0x76, 0xdd, 0xfb, 0x90, 0x6, 0x13, 0x7a, 0x39, - 0x6, 0xe, 0x39, 0xa, 0xf7, 0x78, 0x77, 0x3b, 0xa, 0xf7, 0x13, 0xf8, - 0xc1, 0x15, 0xf7, 0xd5, 0x3f, 0xa2, 0xc5, 0xfb, 0xc2, 0xf7, 0xe, 0x5, - 0x42, 0xfb, 0xf8, 0x51, 0xa, 0xaa, 0x70, 0x5b, 0x8a, 0x21, 0xa, 0x39, - 0xa, 0xf7, 0x78, 0x77, 0x3b, 0xa, 0xf7, 0x42, 0xf8, 0x75, 0x15, 0xf7, - 0xd5, 0xd7, 0x61, 0xf3, 0xfb, 0xc2, 0xfb, 0xe, 0x5, 0x54, 0xfb, 0x7e, - 0x51, 0xa, 0xab, 0x70, 0x5b, 0x89, 0x21, 0xa, 0x39, 0xa, 0xf7, 0x74, - 0x77, 0x3b, 0xa, 0xf7, 0x1a, 0xf8, 0x72, 0x15, 0xf7, 0x2c, 0xf3, 0xf7, - 0x2d, 0x23, 0xc7, 0xae, 0xfb, 0x36, 0xf7, 0x24, 0x5, 0x27, 0x6, 0xfb, - 0x3a, 0xfb, 0x23, 0x5, 0xa4, 0xfb, 0x65, 0x15, 0x9b, 0xa9, 0xf4, 0xa4, - 0xd7, 0x1b, 0xbf, 0xa9, 0x70, 0x5b, 0x21, 0xa, 0x39, 0xa, 0xf7, 0x7, - 0xe0, 0x8e, 0x77, 0x34, 0xa, 0x13, 0xbb, 0x0, 0xf7, 0x32, 0xf8, 0x7a, - 0x15, 0xa3, 0x98, 0x94, 0xb1, 0xb1, 0x1b, 0xa0, 0xa8, 0x7a, 0x7b, 0xa9, - 0x1f, 0x7d, 0xa5, 0xa6, 0x7f, 0xa4, 0x1b, 0xf2, 0xac, 0xe3, 0xad, 0x96, - 0x1f, 0x13, 0xb7, 0x0, 0x35, 0xa4, 0x5, 0x61, 0x78, 0x80, 0x76, 0x6e, - 0x1b, 0x77, 0x74, 0x96, 0x98, 0x74, 0x1f, 0x13, 0xbb, 0x0, 0x9c, 0x6d, - 0x6b, 0x9e, 0x6c, 0x1b, 0x28, 0x6c, 0x3d, 0x5f, 0x79, 0x1f, 0xa4, 0xfb, - 0x62, 0x15, 0x9b, 0xa9, 0xf4, 0xa4, 0xd7, 0x1b, 0x3d, 0xa, 0x13, 0x7a, - 0x80, 0x4d, 0xa, 0x13, 0x7b, 0x0, 0x2b, 0xa, 0x13, 0xbb, 0x0, 0x29, - 0xa, 0x39, 0xa, 0xcf, 0xf7, 0x10, 0x12, 0xab, 0xec, 0x90, 0xf7, 0x5, - 0xd4, 0xf7, 0x4, 0x60, 0xea, 0x2c, 0xf7, 0x46, 0x13, 0xbf, 0x0, 0xf7, - 0xd4, 0xf8, 0x89, 0x15, 0xf7, 0x4, 0xf7, 0x10, 0xfb, 0x4, 0x6, 0xfb, - 0x4e, 0xfb, 0x10, 0x53, 0xa, 0x65, 0xfb, 0xd4, 0x3f, 0xa, 0x13, 0xbe, - 0x80, 0x3d, 0xa, 0x13, 0x7e, 0x40, 0x4d, 0xa, 0x13, 0x7e, 0x80, 0x2b, - 0xa, 0x13, 0xbe, 0x80, 0x29, 0xa, 0x39, 0xa, 0xba, 0xf7, 0x5a, 0x3b, - 0xa, 0xf7, 0x46, 0xf8, 0xe0, 0x15, 0x55, 0xbc, 0x62, 0xc8, 0xc8, 0xbc, - 0xb4, 0xc1, 0xc1, 0x5a, 0xaf, 0x4e, 0x4e, 0x5a, 0x67, 0x55, 0x1e, 0xcc, - 0x16, 0xa0, 0xa0, 0x95, 0xa3, 0xa4, 0x9e, 0x81, 0x76, 0x75, 0x78, 0x7e, - 0x72, 0x73, 0x76, 0x98, 0xa1, 0x1e, 0xfb, 0x27, 0xfb, 0xaf, 0x51, 0xa, - 0xa6, 0x70, 0x5b, 0x8e, 0x21, 0xa, 0x7c, 0xed, 0x3f, 0x76, 0xf7, 0x53, - 0xe8, 0x40, 0xe6, 0xd5, 0xe9, 0x12, 0x89, 0xec, 0xf7, 0x29, 0xee, 0x13, - 0xae, 0xf7, 0xb9, 0xc5, 0x15, 0x52, 0xa6, 0xc6, 0x7b, 0xcc, 0x1b, 0xc0, - 0xc6, 0x99, 0xa0, 0xba, 0x1f, 0x6b, 0xe7, 0x5, 0x73, 0x4d, 0x62, 0x86, - 0x74, 0x1b, 0x37, 0x7d, 0xd1, 0xa0, 0x1f, 0x8e, 0xf7, 0x89, 0x7, 0x8d, - 0x9f, 0x8c, 0x9e, 0x9e, 0x1a, 0xf7, 0x11, 0x5d, 0xe9, 0xfb, 0xa, 0x5f, - 0x5b, 0x78, 0x68, 0x6e, 0x1e, 0x7f, 0xb0, 0x5b, 0x9a, 0x54, 0x8c, 0x48, - 0x8c, 0x3e, 0x78, 0x6e, 0x74, 0xa5, 0x39, 0x18, 0x9b, 0xb5, 0xc0, 0x99, - 0xb6, 0x1b, 0xbb, 0x97, 0x7a, 0x4d, 0x89, 0x1f, 0x13, 0x5e, 0x8d, 0x73, - 0x78, 0x8e, 0x66, 0x1b, 0xfb, 0xb, 0x5c, 0x31, 0x44, 0x3d, 0xc4, 0x4e, - 0xe1, 0xd3, 0xbb, 0xb9, 0xa5, 0xab, 0x1f, 0x13, 0xae, 0xbd, 0xf7, 0x68, - 0x15, 0xc8, 0x8f, 0xb3, 0xa8, 0xb5, 0x1b, 0xc4, 0x96, 0x47, 0x75, 0x8d, - 0x1f, 0xfb, 0x93, 0xfb, 0x1d, 0x15, 0x6e, 0x6f, 0x69, 0x73, 0x62, 0x1b, - 0x79, 0x6f, 0x98, 0xad, 0x1f, 0x13, 0x9e, 0xb0, 0xa3, 0xaa, 0xc3, 0x9e, - 0xa2, 0x88, 0x84, 0xa6, 0x1e, 0xe, 0xfb, 0x4d, 0x76, 0xf7, 0x5b, 0xe7, - 0xf7, 0xa2, 0xe9, 0x12, 0xba, 0xec, 0xf7, 0x13, 0xf7, 0x21, 0x95, 0xeb, - 0x17, 0xf7, 0x80, 0xfb, 0x45, 0x15, 0x7a, 0xa0, 0xa6, 0x7f, 0xaa, 0x1b, - 0xcc, 0xab, 0xbe, 0xbd, 0xa6, 0x82, 0xb7, 0x5a, 0x97, 0x1f, 0x9d, 0x7, - 0xd5, 0x97, 0xd0, 0xad, 0xc2, 0xb7, 0x55, 0xd4, 0x18, 0x62, 0x51, 0x55, - 0x6a, 0x3c, 0x1b, 0x39, 0x3a, 0xb8, 0xe9, 0xdb, 0xca, 0xbe, 0xf3, 0xb2, - 0xb3, 0x8b, 0x7c, 0xab, 0x1f, 0x30, 0xeb, 0xf7, 0x5c, 0x2b, 0x82, 0x7, - 0x95, 0x68, 0x65, 0x8a, 0x65, 0x1b, 0xfb, 0x49, 0x38, 0xfb, 0x4, 0xfb, - 0x3, 0xfb, 0x21, 0xf7, 0x3, 0x39, 0xf7, 0x9, 0x81, 0x1f, 0x84, 0x2e, - 0x5, 0x8c, 0x95, 0xa0, 0x91, 0x9b, 0x1b, 0x97, 0x94, 0x85, 0x7c, 0x7d, - 0x80, 0x84, 0x7d, 0x7a, 0x77, 0x8f, 0x94, 0x82, 0x1f, 0xe, 0x55, 0xa, - 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x1e, 0xf8, 0xc3, 0x15, 0xf7, 0xd2, 0x3f, - 0xa1, 0xc6, 0xfb, 0xbd, 0xf7, 0xb, 0x5, 0x5e, 0xfc, 0x7f, 0x24, 0xa, - 0x55, 0xa, 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x4d, 0xf8, 0x76, 0x15, 0xf7, - 0xd3, 0xd7, 0x60, 0xf2, 0xfb, 0xbf, 0x6a, 0xa, 0x71, 0xfc, 0x7, 0x24, - 0xa, 0x55, 0xa, 0xf7, 0x73, 0x77, 0x1, 0xf7, 0x23, 0xf8, 0x73, 0x15, - 0xf7, 0x2c, 0xf2, 0xf7, 0x2c, 0x24, 0xc7, 0xad, 0xfb, 0x36, 0xf7, 0x24, - 0x5, 0x28, 0x6, 0xfb, 0x39, 0xfb, 0x23, 0x5, 0xc2, 0xfb, 0xec, 0x24, - 0xa, 0x55, 0xa, 0xcc, 0xf7, 0x12, 0x1, 0xf7, 0x24, 0xf7, 0x4, 0xd2, - 0xf7, 0x4, 0x3, 0xf7, 0xdb, 0xf8, 0x87, 0x72, 0xa, 0xfb, 0x4b, 0xfb, - 0x12, 0x72, 0xa, 0x83, 0xfc, 0x5b, 0x24, 0xa, 0x57, 0xa, 0xf7, 0x17, - 0xf8, 0xc2, 0x15, 0xf7, 0xd4, 0x40, 0xa3, 0xc5, 0xfb, 0xc1, 0xf7, 0xc, - 0x5, 0x2a, 0xfd, 0x29, 0x33, 0xa, 0x57, 0xa, 0xf7, 0x48, 0xf8, 0x77, - 0x15, 0xf7, 0xd2, 0xd6, 0x61, 0xf2, 0xfb, 0xc0, 0x6a, 0xa, 0x3c, 0xfc, - 0xb1, 0x33, 0xa, 0x8b, 0xe5, 0xf7, 0x84, 0xe6, 0xf7, 0x80, 0x77, 0x1, - 0xf7, 0x8d, 0xf1, 0x3, 0xd1, 0xf8, 0x98, 0x15, 0xcb, 0x67, 0xf7, 0x31, - 0xf1, 0xf7, 0x31, 0x25, 0xc9, 0xae, 0xfb, 0x3b, 0xf7, 0x22, 0x5, 0x24, - 0x6, 0xfb, 0x30, 0xfd, 0x25, 0x33, 0xa, 0x8b, 0xe6, 0xf7, 0x86, 0xe6, - 0xd7, 0xf7, 0x11, 0x12, 0xf7, 0x20, 0xf7, 0x4, 0x8a, 0xec, 0x72, 0xf7, - 0x5, 0x13, 0xf4, 0xf7, 0xd7, 0xf8, 0x88, 0x15, 0xf7, 0x5, 0xf7, 0x11, - 0xfb, 0x5, 0x6, 0xfb, 0x4b, 0xfb, 0x11, 0x15, 0xf7, 0x4, 0xf7, 0x11, - 0xfb, 0x4, 0x6, 0x4c, 0xfd, 0x5, 0x15, 0xf8, 0x52, 0xe6, 0x6, 0x13, - 0xe8, 0xfb, 0x43, 0xf7, 0xe1, 0xfb, 0x7e, 0x30, 0xf7, 0x1d, 0xfb, 0x86, - 0xfb, 0x42, 0x6, 0xe, 0x70, 0xe3, 0xf7, 0x96, 0xe4, 0xf7, 0x6e, 0x77, - 0x1, 0xc4, 0xe8, 0xf7, 0xc1, 0xe6, 0x3, 0xf7, 0x51, 0xf8, 0x48, 0x15, - 0xf7, 0x5, 0xc2, 0xd1, 0x62, 0xb7, 0x47, 0x8c, 0x87, 0x19, 0x9d, 0x6d, - 0x77, 0x97, 0x4c, 0x1b, 0xfb, 0x39, 0x39, 0xfb, 0x0, 0xfb, 0x3, 0xfb, - 0x0, 0xdd, 0xfb, 0x0, 0xf7, 0x37, 0xf7, 0x3a, 0xd5, 0xf7, 0x3, 0xf7, - 0x17, 0xf7, 0x44, 0xfb, 0xa, 0xf6, 0x59, 0xaa, 0x1f, 0xea, 0xb5, 0x6c, - 0xc1, 0xfb, 0x15, 0x4e, 0x6f, 0x9d, 0x3c, 0xb0, 0x63, 0x92, 0x19, 0x70, - 0x4f, 0xad, 0x83, 0xad, 0x7b, 0xab, 0x7d, 0x19, 0x3b, 0x65, 0x5, 0x86, - 0xfb, 0xc2, 0x15, 0xe7, 0xdb, 0xb2, 0xd1, 0xf5, 0xb8, 0x49, 0x4c, 0x30, - 0x3d, 0x65, 0x45, 0x40, 0x3d, 0xb0, 0xe5, 0x1e, 0xe, 0x8b, 0xe7, 0xf7, - 0x97, 0xe5, 0x31, 0xe7, 0xf7, 0x55, 0x77, 0x12, 0x98, 0xf7, 0x46, 0x2b, - 0xeb, 0xf7, 0x72, 0xeb, 0x13, 0xda, 0xe8, 0xf8, 0x95, 0x15, 0xe1, 0x71, - 0x96, 0x9f, 0x93, 0xad, 0xa1, 0x8d, 0x19, 0xa1, 0x8d, 0xa4, 0x82, 0xb1, - 0x77, 0x8, 0x7e, 0xa4, 0xa8, 0x7e, 0xac, 0x1b, 0xf0, 0xab, 0xe3, 0xad, - 0x97, 0x1f, 0x35, 0xa3, 0x5, 0x62, 0x79, 0x81, 0x76, 0x6e, 0x1b, 0x79, - 0x77, 0x94, 0x96, 0x77, 0x1f, 0x9c, 0x6b, 0x6a, 0xa2, 0x6a, 0x1b, 0x2a, - 0x6d, 0x3d, 0x60, 0x79, 0x1f, 0x3c, 0xfc, 0x95, 0x15, 0xf7, 0x95, 0xe7, - 0x3b, 0xf7, 0x56, 0x6, 0xb6, 0xbd, 0xce, 0xa1, 0xa9, 0x1b, 0xd0, 0x91, - 0x6c, 0x64, 0x1f, 0xfb, 0x51, 0x3d, 0x2f, 0xf7, 0x90, 0xe7, 0x3d, 0xf7, - 0x66, 0x7, 0xe6, 0x43, 0xbb, 0x31, 0x53, 0x51, 0x70, 0x70, 0x61, 0x1e, - 0x13, 0xba, 0xc3, 0xfb, 0x46, 0x2f, 0x7, 0x13, 0xb6, 0xdd, 0xfb, 0x97, - 0x3a, 0x6, 0xe, 0x7b, 0xe7, 0xf7, 0xa0, 0xe7, 0xf7, 0x75, 0x77, 0x4b, - 0xa, 0xf7, 0x24, 0xf8, 0xc1, 0x15, 0xf7, 0xda, 0x40, 0xa2, 0xc5, 0xfb, - 0xc7, 0xf7, 0xd, 0x5, 0xfb, 0x30, 0xfc, 0x5a, 0x23, 0xa, 0x62, 0xa, - 0xf7, 0x75, 0x77, 0x4b, 0xa, 0xf7, 0x53, 0xf8, 0x76, 0x15, 0xf7, 0xda, - 0xd6, 0x61, 0xf3, 0xfb, 0xc7, 0xfb, 0xd, 0x5, 0xfb, 0x1e, 0xfb, 0xe1, - 0x23, 0xa, 0x62, 0xa, 0xf7, 0x71, 0x77, 0x4b, 0xa, 0xf7, 0x2a, 0xf8, - 0x72, 0x15, 0xf7, 0x30, 0xf3, 0xf7, 0x2f, 0x23, 0xc7, 0xad, 0xfb, 0x38, - 0xf7, 0x25, 0x5, 0x24, 0x6, 0xfb, 0x3b, 0xfb, 0x23, 0x5, 0x52, 0xfb, - 0xc7, 0x23, 0xa, 0x62, 0xa, 0xf7, 0x5, 0xe0, 0x8d, 0x77, 0x12, 0xa9, - 0xef, 0xf7, 0xe9, 0xee, 0x13, 0xec, 0xe3, 0xf8, 0x94, 0x15, 0xe4, 0x71, - 0x5, 0xa5, 0x96, 0x98, 0xb0, 0xae, 0x1b, 0x9f, 0xa0, 0x7e, 0x7d, 0xa3, - 0x1f, 0x7b, 0xa7, 0xa9, 0x7a, 0xb0, 0x1b, 0xf5, 0xac, 0xe4, 0xad, 0x95, - 0x1f, 0x13, 0xdc, 0x33, 0xa3, 0x5, 0x62, 0x79, 0x81, 0x76, 0x6d, 0x1b, - 0x74, 0x71, 0x99, 0x9a, 0x70, 0x1f, 0x13, 0xec, 0x9a, 0x6f, 0x6e, 0x9b, - 0x6f, 0x1b, 0x26, 0x6b, 0x3d, 0x5f, 0x7a, 0x1f, 0x51, 0xfb, 0xc5, 0x23, - 0xa, 0x62, 0xa, 0xca, 0xf7, 0x12, 0x1, 0xa9, 0xef, 0xa0, 0xf7, 0x6, - 0xd5, 0xf7, 0x6, 0x9d, 0xee, 0x3, 0xf7, 0xe7, 0xf8, 0x87, 0x70, 0xa, - 0xfb, 0x50, 0xfb, 0x12, 0x70, 0xa, 0xfb, 0xd, 0xfc, 0x36, 0x23, 0xa, - 0x9b, 0xf7, 0x1d, 0xbd, 0xf7, 0x2, 0xbd, 0xf7, 0x1d, 0x1, 0xf7, 0x79, - 0xf7, 0x28, 0x14, 0xe0, 0x5c, 0xa, 0xf7, 0x32, 0xf7, 0xa, 0x15, 0x49, - 0xa, 0xfb, 0xef, 0x4, 0x49, 0xa, 0xe, 0x7a, 0xe9, 0x3b, 0x76, 0xf8, - 0x1c, 0xea, 0x12, 0xa9, 0xed, 0xf7, 0xed, 0xec, 0x13, 0x78, 0xb2, 0xa9, - 0x15, 0x8d, 0xc1, 0x56, 0x8a, 0x8d, 0x1f, 0x8b, 0xa1, 0x9e, 0xaa, 0xa7, - 0x1e, 0x13, 0xb8, 0x72, 0xb6, 0xbe, 0x7c, 0xc3, 0x1b, 0xf7, 0x29, 0xf7, - 0xd, 0xf6, 0xf7, 0x18, 0xc0, 0x77, 0xbd, 0x69, 0xb3, 0x1f, 0xa7, 0xa6, - 0x9b, 0x9c, 0x8b, 0x8b, 0x53, 0xbf, 0x8a, 0x1a, 0x8b, 0x77, 0x7f, 0x6c, - 0x6e, 0x1e, 0xa6, 0x60, 0x56, 0x9c, 0x52, 0x1b, 0xfb, 0x29, 0xfb, 0xd, - 0xfb, 0x1, 0xfb, 0x18, 0x53, 0xa0, 0x59, 0xaf, 0x62, 0x1f, 0x6d, 0x6f, - 0x79, 0x7a, 0x8b, 0x1a, 0xf7, 0xa, 0xf7, 0x3, 0x15, 0x78, 0xa2, 0x81, - 0xa6, 0xa9, 0x1a, 0xdb, 0xd8, 0xce, 0xea, 0xa7, 0xa7, 0x83, 0x81, 0xa3, - 0x1e, 0x45, 0x4a, 0x36, 0x3b, 0x47, 0x4b, 0x8, 0xcd, 0x5a, 0x15, 0xd0, - 0xcb, 0xe1, 0xdb, 0xce, 0xca, 0x8, 0x9d, 0x75, 0x95, 0x70, 0x6e, 0x1a, - 0x3b, 0x3d, 0x4b, 0x2c, 0x6f, 0x71, 0x90, 0x95, 0x74, 0x1e, 0xe, 0x3c, - 0xa, 0xf7, 0x17, 0xf8, 0xc3, 0x15, 0xf7, 0xcc, 0x3d, 0xa2, 0xc7, 0xfb, - 0xbc, 0xf7, 0xc, 0x5, 0xfb, 0x2f, 0xfb, 0xde, 0x28, 0xa, 0x3c, 0xa, - 0xf7, 0x43, 0xf8, 0x76, 0x15, 0xf7, 0xcf, 0xd7, 0x62, 0xf2, 0xfb, 0xbd, - 0x6a, 0xa, 0xfb, 0x1d, 0xfb, 0x66, 0x28, 0xa, 0x4a, 0xa, 0xf7, 0x7f, - 0x36, 0xa, 0xf7, 0x1d, 0xf8, 0x71, 0x15, 0xf7, 0x2a, 0xf4, 0xf7, 0x29, - 0x22, 0xc6, 0xae, 0xfb, 0x34, 0xf7, 0x25, 0x5, 0x2b, 0x6, 0xfb, 0x37, - 0xfb, 0x24, 0x5, 0x4e, 0xfb, 0x4a, 0x28, 0xa, 0x4a, 0xa, 0xd9, 0xf7, - 0x11, 0x12, 0x9a, 0xf7, 0x42, 0x2e, 0xe8, 0x5a, 0xf7, 0x2, 0xd0, 0xf7, - 0x2, 0x29, 0xf7, 0x41, 0x2d, 0xe9, 0x2d, 0xf7, 0x43, 0x13, 0xb3, 0x0, - 0xf7, 0xd3, 0xf8, 0x88, 0x6f, 0xa, 0xfb, 0x47, 0xfb, 0x11, 0x6f, 0xa, - 0x13, 0xb9, 0x0, 0xfb, 0x11, 0xfb, 0xba, 0x15, 0x13, 0xb4, 0x40, 0x2e, - 0xa, 0x13, 0x78, 0x20, 0x64, 0xf7, 0x43, 0xe6, 0x7, 0x13, 0x78, 0x80, - 0x3a, 0xf7, 0xe1, 0xfb, 0x41, 0x30, 0x6, 0x13, 0xb8, 0x40, 0x2c, 0xa, - 0xfb, 0x22, 0xe2, 0xf8, 0x26, 0xe2, 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x59, - 0xf8, 0x7f, 0x15, 0xf7, 0xcf, 0xd2, 0x62, 0xee, 0xfb, 0xbe, 0xfb, 0x7, - 0x5, 0xfb, 0x19, 0xfc, 0xed, 0x15, 0x34, 0xf7, 0xc9, 0xe2, 0x33, 0x3a, - 0xa, 0xfb, 0xa7, 0x35, 0xfb, 0x13, 0x5, 0xe, 0xfb, 0x22, 0xe4, 0xe0, - 0xe3, 0xf7, 0x9a, 0xe4, 0xcd, 0xe4, 0x12, 0x93, 0xf7, 0x49, 0x29, 0xed, - 0xf7, 0xc4, 0xee, 0x13, 0xfa, 0x93, 0x56, 0x15, 0x32, 0xf7, 0xe1, 0xe4, - 0xfb, 0x2c, 0xf7, 0x18, 0x7, 0x7d, 0xa1, 0xc3, 0x6a, 0xde, 0x1b, 0xf7, - 0x21, 0xf0, 0xee, 0xf7, 0x10, 0xf7, 0x2b, 0xfb, 0x23, 0xcc, 0x24, 0x51, - 0x51, 0x7b, 0x6d, 0x62, 0x1f, 0xf7, 0x5d, 0xfb, 0x49, 0x32, 0x7, 0x13, - 0xf6, 0xde, 0xfc, 0xe2, 0x6, 0x13, 0xfa, 0xe9, 0xf7, 0xc6, 0x15, 0xf7, - 0x2, 0xf7, 0x9, 0x9e, 0xb4, 0xdb, 0xd1, 0x5d, 0x38, 0x3b, 0x43, 0x56, - 0x3c, 0x5c, 0xfb, 0x2, 0xa5, 0xf6, 0x1e, 0xe, 0xfb, 0x22, 0xe1, 0xf8, - 0x26, 0xe2, 0xd3, 0xf7, 0xc, 0x1, 0xf7, 0x31, 0xf7, 0x3, 0xd2, 0xf7, - 0x3, 0x3, 0xf7, 0xe7, 0xf8, 0x8d, 0x15, 0xf7, 0x3, 0xf7, 0xc, 0x6b, - 0xa, 0xfb, 0x4a, 0xfb, 0xc, 0x15, 0xf7, 0x3, 0xf7, 0xc, 0x6b, 0xa, - 0xfb, 0x9, 0xfd, 0x3d, 0x15, 0x35, 0xf7, 0xbf, 0xe1, 0x3d, 0x3a, 0xa, - 0xfb, 0xa5, 0x35, 0xfb, 0x15, 0x5, 0xe, 0x8b, 0xe6, 0xf7, 0xf2, 0xe6, - 0x4e, 0xe6, 0xb6, 0xf7, 0x23, 0x12, 0xf7, 0x8f, 0xf0, 0x13, 0xb8, 0x66, - 0xa, 0xe6, 0xfb, 0x3f, 0x6, 0x13, 0xd8, 0xf7, 0xf2, 0x74, 0xa, 0xfb, - 0xf2, 0xfb, 0x42, 0x7, 0xf7, 0x3d, 0xf8, 0x96, 0x79, 0xa, 0x6b, 0xa, - 0xe, 0x7c, 0xa, 0x40, 0xa, 0xf7, 0xed, 0xfb, 0x7f, 0x2d, 0xf7, 0x1c, - 0xfb, 0x8f, 0xfb, 0x41, 0x6, 0xe, 0x79, 0xe6, 0xf8, 0x22, 0xe6, 0x1, - 0xcb, 0xf0, 0xf3, 0xed, 0xf0, 0xeb, 0x3, 0x7c, 0x79, 0x15, 0xf7, 0x99, - 0xe6, 0x3a, 0xf8, 0x22, 0xd9, 0xe6, 0xfb, 0x95, 0x30, 0xd9, 0xfc, 0x22, - 0x3c, 0x6, 0xf7, 0xb0, 0x74, 0x15, 0x78, 0x9e, 0xa2, 0x5a, 0xf5, 0x1b, - 0xf7, 0x12, 0xa0, 0xd5, 0xf7, 0x1f, 0x1f, 0xf7, 0xa7, 0xbe, 0xe7, 0xfb, - 0x9a, 0x2f, 0xf7, 0x7, 0xfb, 0xa8, 0x7, 0x49, 0x8a, 0x53, 0x56, 0x5b, - 0x8c, 0x78, 0xa, 0xfb, 0x23, 0xe4, 0x32, 0xea, 0xf8, 0x31, 0xe6, 0x80, - 0x77, 0xe4, 0xf7, 0x24, 0x12, 0xae, 0xf7, 0x25, 0xfb, 0x3, 0xf7, 0x3, - 0x29, 0xed, 0xf7, 0x9f, 0xf7, 0xa, 0x13, 0xac, 0x80, 0xd0, 0xf8, 0x97, - 0x79, 0xa, 0x6, 0x13, 0x5a, 0x80, 0x6b, 0xa, 0x56, 0xfd, 0x56, 0x15, - 0x2c, 0xf7, 0x77, 0xea, 0x4c, 0xf8, 0x81, 0x7, 0x13, 0x9c, 0x80, 0xfb, - 0x25, 0x2b, 0x6, 0x13, 0x69, 0x80, 0xba, 0xfc, 0x21, 0x6, 0xf8, 0x1, - 0xf8, 0xc6, 0x73, 0xa, 0xfb, 0x24, 0xfd, 0x49, 0x15, 0x73, 0x30, 0x5, - 0x87, 0xa9, 0x9a, 0x7b, 0xc8, 0x1b, 0xf7, 0x63, 0x82, 0xf7, 0x1b, 0xc6, - 0x1f, 0xf8, 0x2c, 0xfb, 0x80, 0x30, 0xf7, 0x18, 0xfb, 0xcd, 0x7, 0x46, - 0x81, 0x66, 0x3b, 0x64, 0x7d, 0x94, 0x95, 0x6a, 0x1e, 0xe, 0x32, 0xa, - 0xf7, 0x17, 0xed, 0xf7, 0x85, 0xee, 0x3, 0xa9, 0x16, 0xf8, 0xaf, 0xf7, - 0x9c, 0x28, 0xfb, 0x41, 0xfb, 0x85, 0xf7, 0x2e, 0x6, 0xf7, 0x36, 0xbb, - 0x5, 0xc9, 0x7, 0xfb, 0x36, 0x5d, 0x5, 0xf7, 0x36, 0xf7, 0x13, 0xe6, - 0xfb, 0xda, 0x30, 0xf0, 0xfb, 0x50, 0x7, 0x36, 0x73, 0x5, 0x4c, 0x7, - 0xe0, 0xa1, 0x5, 0xfb, 0x13, 0x26, 0x7, 0xe, 0x8b, 0xe9, 0xf8, 0x4a, - 0x40, 0xa, 0xf7, 0x68, 0x6, 0xf7, 0x12, 0xaf, 0x5, 0xcd, 0x7, 0xfb, - 0x12, 0x67, 0x5, 0xf7, 0x92, 0xfb, 0x9e, 0x2d, 0xf7, 0x3b, 0xfb, 0x4f, - 0x7, 0xfb, 0x9, 0x69, 0x5, 0x4b, 0x7, 0xf7, 0x9, 0xab, 0x5, 0xfb, - 0x4d, 0xfb, 0x41, 0x7, 0xe, 0x8b, 0xe6, 0x30, 0xf7, 0x3e, 0xa0, 0xf7, - 0x4f, 0x94, 0xf7, 0x43, 0x30, 0xe6, 0x12, 0x81, 0xe9, 0xf7, 0x6f, 0xea, - 0xaf, 0xd6, 0xa5, 0xd6, 0x13, 0xaf, 0x80, 0xf8, 0x22, 0xe6, 0x15, 0xf7, - 0x2b, 0xaf, 0x58, 0xd6, 0xf7, 0x4f, 0x40, 0x5d, 0x67, 0xf7, 0x1f, 0xf7, - 0x1d, 0x7, 0x13, 0xb7, 0x80, 0x37, 0xd6, 0xf7, 0x43, 0xfc, 0x16, 0x7, - 0xfb, 0xe, 0xfb, 0x4, 0xfb, 0x7, 0xfb, 0x43, 0xfb, 0x43, 0xf7, 0x5, - 0x2a, 0xf2, 0x1f, 0xf8, 0x28, 0x6, 0x13, 0x77, 0x80, 0xf7, 0x3e, 0x40, - 0x7, 0x13, 0xaf, 0x80, 0x3c, 0x7, 0xfb, 0x7c, 0xbc, 0x15, 0x5c, 0x5d, - 0x89, 0x79, 0x23, 0x58, 0xd3, 0xf7, 0x1, 0xf7, 0xf, 0xd2, 0xd7, 0xe8, - 0x9b, 0xb2, 0x8a, 0x66, 0x1e, 0xe, 0x7c, 0xe9, 0xec, 0xea, 0xe3, 0xea, - 0x1, 0x7d, 0xed, 0xf7, 0x3a, 0xed, 0x3, 0xf7, 0xf5, 0xf7, 0x44, 0x15, - 0xf7, 0x8f, 0x6, 0xf7, 0xf, 0x9d, 0x61, 0xf7, 0x2f, 0xfb, 0x23, 0x1b, - 0x5c, 0x60, 0x78, 0x68, 0x6a, 0x1f, 0xb1, 0x6a, 0x58, 0x9b, 0x57, 0x1b, - 0xfb, 0x18, 0x4f, 0x22, 0xfb, 0x1c, 0x49, 0x9b, 0xfb, 0x36, 0xf7, 0x39, - 0xd1, 0xba, 0xb8, 0xa2, 0x9d, 0x1f, 0x6a, 0xaa, 0xa8, 0x68, 0xe5, 0x1b, - 0xc4, 0xbe, 0x9a, 0xa0, 0xc2, 0x1f, 0x73, 0xe6, 0x5, 0x73, 0x4d, 0x53, - 0x82, 0x74, 0x1b, 0x38, 0x7d, 0xd6, 0x9f, 0x1f, 0x86, 0xec, 0x15, 0xb3, - 0x8f, 0xa7, 0xbb, 0xc1, 0x1b, 0xcf, 0x93, 0x48, 0x76, 0x8c, 0x1f, 0xfc, - 0x3f, 0x51, 0x15, 0xab, 0x8b, 0xf7, 0x6, 0xe6, 0xd3, 0x8e, 0xfb, 0x2, - 0x67, 0x67, 0x87, 0x29, 0x3a, 0x47, 0x7e, 0xef, 0xad, 0x1e, 0xe, 0xfb, - 0x4d, 0x76, 0xf7, 0x7d, 0xf4, 0xf7, 0xc, 0xf1, 0xf7, 0xa, 0xf7, 0x2, - 0x12, 0xba, 0xf7, 0x0, 0x30, 0xf1, 0xd9, 0xf7, 0x2e, 0xa5, 0xf6, 0x39, - 0xf3, 0x13, 0xfa, 0x80, 0xba, 0xa6, 0x15, 0xf7, 0x0, 0xb9, 0x6, 0xa6, - 0x80, 0xa9, 0x7e, 0xab, 0x82, 0x8, 0xfb, 0x13, 0x7, 0x8d, 0x95, 0x9c, - 0x92, 0x9d, 0x1b, 0x9d, 0x95, 0x81, 0x78, 0x7c, 0x7e, 0x7e, 0x7d, 0x8a, - 0x1f, 0x74, 0x89, 0x78, 0x93, 0x81, 0x94, 0x6e, 0x55, 0x18, 0x79, 0xa1, - 0xa9, 0x7e, 0xac, 0x1b, 0xd0, 0xae, 0xc2, 0xc0, 0xa8, 0x81, 0xbb, 0x57, - 0x97, 0x1f, 0x8c, 0xaf, 0x5, 0xf7, 0xc, 0x90, 0xeb, 0xcd, 0xf2, 0x1a, - 0xf7, 0x11, 0xfb, 0xc, 0xaa, 0x2f, 0x88, 0x1e, 0x13, 0xf7, 0x0, 0x28, - 0x92, 0x3f, 0x93, 0xb7, 0x1a, 0xbf, 0xed, 0x92, 0xa3, 0xb9, 0xbf, 0x73, - 0x75, 0xb1, 0x1e, 0x54, 0xf6, 0xf7, 0x67, 0x20, 0x63, 0x7, 0x9b, 0x62, - 0x55, 0xa3, 0x59, 0x1b, 0x27, 0xfb, 0x7, 0x5d, 0xfb, 0xd, 0xfb, 0x25, - 0xf7, 0x35, 0x7f, 0xdb, 0x85, 0x1f, 0x13, 0xfa, 0x80, 0xb3, 0x88, 0xf3, - 0x98, 0x4e, 0x1a, 0x62, 0x43, 0x6f, 0x4f, 0x3e, 0x52, 0xb3, 0x96, 0x6f, - 0x1e, 0xd2, 0xfb, 0x0, 0x7, 0xe, 0xfb, 0x4d, 0x76, 0xf7, 0x59, 0xe3, - 0xf1, 0xe1, 0x99, 0xf7, 0x46, 0x2e, 0xe8, 0x12, 0xcd, 0xef, 0x35, 0xe1, - 0x35, 0xea, 0xd3, 0xf7, 0x23, 0xa3, 0xee, 0x3f, 0xeb, 0x13, 0xf4, 0xa0, - 0xcd, 0x82, 0x15, 0xef, 0xb1, 0x6, 0xa4, 0x82, 0xa6, 0x80, 0xa8, 0x84, - 0x8, 0xfb, 0x0, 0x7, 0x8d, 0x95, 0x9a, 0x91, 0x9b, 0x1b, 0x9d, 0x93, - 0x82, 0x7c, 0x7e, 0x80, 0x80, 0x7d, 0x8a, 0x1f, 0x76, 0x89, 0x7a, 0x92, - 0x81, 0x93, 0x71, 0x5d, 0x18, 0x7c, 0x9f, 0xa7, 0x80, 0xa9, 0x1b, 0xcc, - 0xab, 0xb9, 0xb8, 0xa3, 0x82, 0xb4, 0x5b, 0x95, 0x1f, 0x8c, 0xaa, 0x5, - 0xf7, 0x2, 0x90, 0xe4, 0xc2, 0xe1, 0x1a, 0xf5, 0xfb, 0x3, 0xa6, 0x36, - 0x88, 0x1e, 0x13, 0xe9, 0xc0, 0x2f, 0x91, 0x45, 0x92, 0xaf, 0x1a, 0xb8, - 0xe5, 0x90, 0xa2, 0xb6, 0xbb, 0x77, 0x79, 0xae, 0x1e, 0x13, 0xf2, 0xc0, - 0x5c, 0xee, 0xf7, 0x46, 0x28, 0x69, 0x7, 0x99, 0x65, 0x59, 0x9f, 0x5d, - 0x1b, 0x2e, 0x20, 0x64, 0x24, 0xfb, 0xe, 0xf7, 0x2a, 0x82, 0xd5, 0x86, - 0x1f, 0x13, 0xf4, 0xa0, 0xaf, 0x88, 0xec, 0x95, 0x58, 0x1a, 0x69, 0x48, - 0x73, 0x53, 0x44, 0x58, 0xae, 0x94, 0x71, 0x1e, 0x13, 0xf4, 0xc0, 0xc7, - 0x27, 0x7, 0xe, 0x75, 0xe6, 0x8b, 0xf7, 0x27, 0xf7, 0x97, 0xe6, 0x8b, - 0xb6, 0x6d, 0xb6, 0xf7, 0x3c, 0x77, 0x12, 0xba, 0xf1, 0x36, 0xe0, 0x36, - 0xf2, 0xf7, 0x99, 0xf1, 0x3d, 0xf0, 0x13, 0xed, 0x20, 0xba, 0x75, 0x15, - 0xf1, 0xae, 0x6, 0x82, 0xa1, 0xbc, 0x71, 0xdc, 0x1b, 0xf7, 0x1d, 0xf7, - 0x7, 0xcc, 0xf7, 0x0, 0xe7, 0x3e, 0xb5, 0x3a, 0x98, 0x1f, 0x13, 0xf4, - 0xc0, 0x53, 0x93, 0xfb, 0x40, 0x7e, 0xe7, 0x1a, 0xb5, 0xbc, 0xbb, 0xe6, - 0xb6, 0xb5, 0x7f, 0x7c, 0xaf, 0x1e, 0x22, 0xf1, 0xf7, 0x73, 0x25, 0x73, - 0x7, 0x9a, 0x67, 0x5f, 0x94, 0x5e, 0x1b, 0xfb, 0x32, 0x3a, 0x26, 0x3b, - 0xfb, 0x2e, 0xf7, 0x48, 0x85, 0xf7, 0xa, 0x82, 0x1f, 0x13, 0xed, 0x20, - 0xc3, 0x87, 0xad, 0x79, 0x60, 0x1a, 0x5b, 0x60, 0x69, 0xfb, 0x0, 0x54, - 0x57, 0x9a, 0xa4, 0x5e, 0x1e, 0xde, 0x7, 0x13, 0xee, 0x40, 0x25, 0x6, - 0x13, 0xf5, 0x40, 0xf7, 0x62, 0xf8, 0x35, 0x15, 0xf5, 0x6, 0xf7, 0x3e, - 0xf7, 0x24, 0x4c, 0xaf, 0xfb, 0x35, 0x24, 0xfb, 0x31, 0xf3, 0x49, 0x69, - 0x5, 0xe, 0x7a, 0xe1, 0xed, 0xdf, 0x8b, 0xeb, 0x3a, 0xf7, 0x41, 0x2f, - 0xe7, 0x7d, 0xb9, 0x12, 0xcd, 0xed, 0x37, 0xdf, 0x37, 0xea, 0xf7, 0x83, - 0xee, 0x40, 0xea, 0x13, 0xe6, 0x20, 0xf7, 0x99, 0xf8, 0x79, 0x15, 0xf0, - 0x6, 0xf7, 0x38, 0xf7, 0x25, 0x4d, 0xb0, 0xfb, 0x2e, 0x22, 0xfb, 0x2e, - 0xf4, 0x4c, 0x67, 0x5, 0x70, 0xfd, 0x1c, 0x15, 0xed, 0xb1, 0x6, 0x7b, - 0xb9, 0xc3, 0x75, 0xc0, 0x1b, 0xf7, 0xb, 0xea, 0xc2, 0xe2, 0xf2, 0xfb, - 0x3, 0xa5, 0x36, 0x88, 0x1f, 0x13, 0xe4, 0xc0, 0x30, 0x92, 0x44, 0x91, - 0xaf, 0x1a, 0x13, 0xea, 0x40, 0xb5, 0xe6, 0x90, 0xa1, 0xb6, 0xba, 0x78, - 0x7a, 0xaf, 0x1e, 0x13, 0xd1, 0x40, 0x5e, 0xee, 0xf7, 0x41, 0x28, 0x6a, - 0x7, 0x99, 0x64, 0x5a, 0x9e, 0x5d, 0x1b, 0x2e, 0x20, 0x65, 0x28, 0xfb, - 0xc, 0xf7, 0x2a, 0x82, 0xd5, 0x85, 0x1f, 0x13, 0xe6, 0x20, 0xaf, 0x88, - 0xed, 0x96, 0x59, 0x1a, 0x6a, 0x47, 0x74, 0x53, 0x45, 0x56, 0xab, 0x94, - 0x70, 0x1e, 0xc6, 0x29, 0x7, 0xe, 0x8b, 0xe3, 0xf8, 0x1b, 0xe8, 0xe3, - 0xf7, 0x15, 0x12, 0x99, 0xf7, 0x80, 0x2b, 0xf7, 0x4, 0xd1, 0xf7, 0x4, - 0x28, 0xf7, 0x80, 0x13, 0xec, 0xf7, 0x13, 0x16, 0xf7, 0xe9, 0xe8, 0xfb, - 0xe, 0xf7, 0x14, 0x6, 0xf7, 0x34, 0xf7, 0x96, 0x5, 0x13, 0xea, 0xda, - 0xe8, 0xfb, 0x80, 0x2e, 0xc3, 0x6, 0x22, 0xfb, 0x3d, 0x23, 0xf7, 0x3d, - 0x5, 0x13, 0xf4, 0xc1, 0xe8, 0xfb, 0x80, 0x2e, 0xd8, 0x6, 0xf7, 0x34, - 0xfb, 0x96, 0x5, 0xfb, 0x14, 0xfb, 0x10, 0x7, 0xf7, 0x62, 0xf8, 0xcb, - 0x15, 0xf7, 0x1, 0xf7, 0x15, 0xfb, 0x1, 0x6, 0xfb, 0x48, 0xfb, 0x15, - 0x15, 0xf7, 0x2, 0xf7, 0x15, 0xfb, 0x2, 0x6, 0xe, 0x8b, 0xe6, 0xf8, - 0xc, 0xe5, 0x8b, 0xc1, 0xf7, 0x47, 0x77, 0x12, 0xcd, 0xed, 0xf7, 0xa8, - 0xed, 0x17, 0xc8, 0x16, 0xf8, 0x71, 0xf7, 0x6e, 0x29, 0xfb, 0x13, 0xfb, - 0x8a, 0x6, 0xf7, 0xd5, 0xf8, 0x26, 0x5, 0x13, 0x78, 0xcb, 0xfc, 0x55, - 0xfb, 0x5f, 0xed, 0xf7, 0x5, 0xf7, 0x6d, 0x7, 0xfb, 0xd4, 0xfc, 0x22, - 0x5, 0xf7, 0x4f, 0xf8, 0xb2, 0x15, 0xf0, 0x6, 0xf7, 0x36, 0xf7, 0x22, - 0x51, 0xaf, 0xfb, 0x30, 0x25, 0xfb, 0x2b, 0xf2, 0x4d, 0x69, 0x5, 0xe, - 0x8b, 0xe7, 0xf7, 0x2f, 0xf7, 0x43, 0x30, 0xe6, 0x8b, 0xc8, 0xf7, 0x4c, - 0x77, 0x12, 0xe9, 0xee, 0xf7, 0x79, 0xec, 0x13, 0xde, 0xf7, 0x94, 0xf8, - 0x77, 0x15, 0xf0, 0x6, 0xf7, 0x36, 0xf7, 0x26, 0x4e, 0xb1, 0xfb, 0x2c, - 0x21, 0xfb, 0x2e, 0xf5, 0x4c, 0x66, 0x5, 0x82, 0xfd, 0xa, 0x15, 0xf8, - 0x4b, 0xf7, 0x4e, 0x2a, 0x2d, 0xfb, 0x51, 0x6, 0xf7, 0xb2, 0xf7, 0x9c, - 0x5, 0xcd, 0xfc, 0x3d, 0xfb, 0x43, 0xee, 0x7, 0x13, 0xbe, 0xdf, 0xf7, - 0x40, 0x7, 0xfb, 0xb1, 0xfb, 0x98, 0x5, 0xe, 0xfb, 0x17, 0xe9, 0xf8, - 0x9, 0xe8, 0xeb, 0xe6, 0x1, 0xa4, 0x6c, 0x15, 0x71, 0x2f, 0x5, 0x87, - 0xb1, 0xab, 0x87, 0xb7, 0x1b, 0xdd, 0xde, 0xa9, 0xf2, 0x9f, 0x1f, 0xd1, - 0xf7, 0xe2, 0x5, 0xf6, 0x6, 0x9d, 0xe8, 0x5, 0xfb, 0x1, 0x6, 0xe5, - 0x93, 0xad, 0x91, 0xd7, 0x1b, 0xab, 0xaa, 0x87, 0x89, 0x9f, 0x1f, 0x9b, - 0xe5, 0x5, 0x8d, 0x68, 0x67, 0x90, 0x66, 0x1b, 0xfb, 0x10, 0x8a, 0x4b, - 0x5f, 0x7b, 0xfb, 0x22, 0x8, 0x25, 0x6, 0x78, 0x2e, 0x5, 0xf3, 0x6, - 0x4f, 0xfb, 0xae, 0x5, 0x3d, 0x7d, 0x79, 0x7e, 0x51, 0x1b, 0x73, 0x5a, - 0x8f, 0x8d, 0x73, 0x1f, 0xe, 0x79, 0xe9, 0x8b, 0xf1, 0x8b, 0xea, 0x8b, - 0xd1, 0xf7, 0x26, 0xe6, 0x8b, 0xaf, 0xf7, 0x42, 0x77, 0x12, 0x99, 0xed, - 0xf7, 0xdd, 0xea, 0x35, 0xed, 0x13, 0xff, 0x80, 0x46, 0xa, 0xd0, 0xf7, - 0x17, 0xf7, 0x21, 0xe6, 0xd3, 0xed, 0x1f, 0x13, 0xff, 0x40, 0x41, 0xa, - 0xfb, 0xf, 0xfb, 0x4d, 0xfb, 0x62, 0xf7, 0x33, 0x37, 0xf7, 0x36, 0x1f, - 0x13, 0xff, 0x80, 0x58, 0xa, 0x64, 0xf7, 0xeb, 0x15, 0xe7, 0x6, 0xf7, - 0x29, 0xf7, 0x1e, 0x5, 0x13, 0xff, 0x40, 0x3e, 0xa, 0xfb, 0x26, 0xe4, - 0xed, 0xe3, 0x3d, 0xe3, 0xf7, 0x6b, 0xe4, 0x3e, 0xe3, 0x8b, 0xb2, 0xf7, - 0x42, 0x77, 0x69, 0xa, 0x13, 0xd7, 0x80, 0x50, 0xa, 0xf3, 0xf2, 0x1f, - 0xf7, 0xb9, 0x7, 0x13, 0xd7, 0x40, 0xd7, 0xe4, 0xfb, 0x3c, 0x6e, 0x6, - 0x13, 0xcf, 0x80, 0x5a, 0xa, 0x1f, 0x13, 0xaf, 0x80, 0xfb, 0x9, 0xee, - 0x3c, 0xf7, 0x21, 0xc0, 0xbe, 0x98, 0xa7, 0xb1, 0x1e, 0x67, 0x7, 0x51, - 0x88, 0x54, 0x42, 0xa, 0x69, 0x33, 0x43, 0x44, 0xb1, 0xd2, 0x1e, 0xf7, - 0x1d, 0xf7, 0x89, 0x43, 0xa, 0xf8, 0x8c, 0x76, 0xf7, 0x42, 0x77, 0x1, - 0xf7, 0x35, 0xf8, 0x77, 0x15, 0xf7, 0x20, 0xf7, 0x2, 0xf7, 0x20, 0xfb, - 0x2, 0xc3, 0xac, 0xfb, 0x29, 0xf7, 0x21, 0x5, 0x2e, 0x6, 0xfb, 0x2c, - 0xfb, 0x20, 0x5, 0xe, 0xf8, 0x96, 0x76, 0xf7, 0x42, 0x77, 0x1, 0xf7, - 0x94, 0xf8, 0x81, 0x43, 0xa, 0xf8, 0x68, 0xde, 0x38, 0xf7, 0x37, 0x12, - 0x13, 0x40, 0xde, 0xf9, 0xb, 0x15, 0x43, 0x98, 0xcb, 0x30, 0xf7, 0x21, - 0x1b, 0xf7, 0x32, 0xbd, 0xf7, 0x4, 0xbe, 0x93, 0x1f, 0x2e, 0x6, 0x13, - 0x80, 0x63, 0x7a, 0x70, 0x63, 0x3c, 0x1b, 0x13, 0x40, 0x3d, 0x66, 0xb6, - 0xb0, 0x83, 0x1f, 0xe, 0xf8, 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x7a, 0xf7, - 0x20, 0x3, 0xf7, 0x7a, 0xf8, 0x79, 0x15, 0xf7, 0x20, 0xf7, 0x20, 0xfb, - 0x20, 0x6, 0xe, 0xf8, 0x75, 0xf7, 0x59, 0x1, 0xf7, 0x5a, 0xc8, 0xdd, - 0xc8, 0x3, 0xf7, 0x5a, 0xf8, 0xd7, 0x15, 0x56, 0xb9, 0x5e, 0xc2, 0xc4, - 0xb9, 0xb8, 0xc0, 0xc1, 0x5d, 0xb8, 0x52, 0x54, 0x5d, 0x5e, 0x55, 0x1e, - 0xc8, 0x16, 0xa2, 0x9d, 0x9d, 0xa1, 0xa3, 0x9d, 0x79, 0x74, 0x75, 0x79, - 0x79, 0x73, 0x75, 0x79, 0x9d, 0xa1, 0x1e, 0xe, 0xfb, 0x5b, 0xf7, 0x5b, - 0x12, 0xf7, 0x5d, 0xe4, 0x32, 0xf7, 0x51, 0x13, 0xc0, 0xf7, 0xbe, 0x16, - 0x7d, 0x88, 0x38, 0x68, 0x42, 0x1a, 0x5d, 0xaf, 0x61, 0xc0, 0x1e, 0x13, - 0xa0, 0xab, 0xb9, 0x9e, 0xa0, 0xa1, 0x1f, 0xd7, 0x7, 0x13, 0xc0, 0x79, - 0x73, 0x39, 0x60, 0xc5, 0x1a, 0xb6, 0xde, 0xad, 0xa5, 0x9a, 0x1e, 0xe, - 0xe3, 0xf8, 0x3b, 0x3, 0xe3, 0xf8, 0x9a, 0x15, 0xdc, 0x72, 0x5, 0xa3, - 0x98, 0x95, 0xae, 0xac, 0x1b, 0x9e, 0xa0, 0x7e, 0x7d, 0xa2, 0x1f, 0x7d, - 0xa4, 0xa7, 0x7c, 0xab, 0x1b, 0xec, 0xaa, 0xdf, 0xab, 0x95, 0x1f, 0x3a, - 0xa3, 0x5, 0x64, 0x78, 0x83, 0x76, 0x6e, 0x1b, 0x78, 0x76, 0x96, 0x97, - 0x75, 0x1f, 0x9b, 0x6f, 0x6e, 0x9d, 0x6e, 0x1b, 0x2d, 0x6f, 0x41, 0x62, - 0x7b, 0x1f, 0xe, 0xf8, 0x8f, 0x76, 0xf7, 0x43, 0x77, 0x1, 0xb3, 0xf8, - 0x9c, 0x3, 0xf7, 0x93, 0xf8, 0x8f, 0x15, 0xc8, 0x76, 0xf7, 0x88, 0xf7, - 0x25, 0x28, 0xa9, 0x5, 0xfc, 0x39, 0xfb, 0x2e, 0x15, 0xc8, 0x76, 0xf7, - 0x8a, 0xf7, 0x25, 0x28, 0xa9, 0x5, 0xe, 0xf7, 0x5f, 0xef, 0x1, 0xcc, - 0xf8, 0x6a, 0x3, 0xcc, 0xf7, 0x5f, 0x15, 0xf8, 0x6a, 0xef, 0xfc, 0x6a, - 0x6, 0xe, 0xf7, 0x5f, 0xef, 0x1, 0x81, 0xf9, 0x0, 0x3, 0x81, 0xf7, - 0x5f, 0x15, 0xf9, 0x0, 0xef, 0xfd, 0x0, 0x6, 0xe, 0xf7, 0xbe, 0x76, - 0xf7, 0xb5, 0x77, 0x1, 0xf7, 0xc7, 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, - 0x2b, 0xf7, 0xb5, 0x5, 0xfb, 0x2e, 0x6, 0xe, 0x4c, 0xa, 0xf7, 0x42, - 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x1a, 0x59, 0xa, 0xfb, 0x30, - 0x6, 0xe, 0xfb, 0xd, 0x45, 0xa, 0xf7, 0x42, 0xfb, 0x22, 0x15, 0xf7, - 0xd, 0x6, 0xf7, 0x17, 0x59, 0xa, 0xfb, 0x2f, 0x6, 0xe, 0x4c, 0xa, - 0xf8, 0x33, 0xf7, 0xa9, 0x5d, 0xa, 0x36, 0xfb, 0xb1, 0x5d, 0xa, 0xe, - 0x4c, 0xa, 0xf7, 0xad, 0xf7, 0xa9, 0x15, 0xf7, 0xb, 0x6, 0xf7, 0x18, - 0x59, 0xa, 0xfb, 0x2d, 0x6, 0xfb, 0xcb, 0x4e, 0xa, 0xfb, 0xd, 0x45, - 0xa, 0xf7, 0xad, 0xfb, 0x22, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x19, 0x59, - 0xa, 0xfb, 0x2e, 0x6, 0xfb, 0xca, 0x4e, 0xa, 0xf7, 0xdc, 0xed, 0x1, - 0xf7, 0x8e, 0xef, 0x3, 0xf7, 0x8e, 0x45, 0x15, 0xef, 0xf8, 0x29, 0xf7, - 0x24, 0xed, 0xfb, 0x24, 0xf7, 0x1d, 0x27, 0xfb, 0x1d, 0xfb, 0x24, 0x29, - 0xf7, 0x24, 0x6, 0xe, 0x5a, 0x76, 0xf7, 0x53, 0xed, 0xf6, 0xed, 0xf7, - 0x30, 0x77, 0x1, 0xf7, 0x90, 0xee, 0x3, 0xf5, 0xf7, 0xd, 0x15, 0xf7, - 0x26, 0xfb, 0x53, 0xee, 0xf7, 0x53, 0xf7, 0x23, 0xed, 0xfb, 0x23, 0xf6, - 0xf7, 0x23, 0xed, 0xfb, 0x23, 0xf7, 0x30, 0x28, 0xfb, 0x30, 0xfb, 0x26, - 0x29, 0xf7, 0x26, 0x20, 0xfb, 0x26, 0x6, 0xe, 0xf7, 0xc, 0xf7, 0xfe, - 0x1, 0xf7, 0xc, 0xf7, 0xfc, 0x3, 0xf8, 0x74, 0xf7, 0xc1, 0x15, 0xef, - 0x3b, 0xdc, 0x27, 0x27, 0x3b, 0x3a, 0x27, 0x27, 0xdb, 0x3a, 0xef, 0xef, - 0xdb, 0xdc, 0xef, 0x1e, 0xe, 0x7c, 0xf7, 0x17, 0x1, 0xa5, 0xf7, 0x1c, - 0xd1, 0xf7, 0x1c, 0xd1, 0xf7, 0x1c, 0x14, 0x70, 0xf8, 0x4a, 0xbd, 0x15, - 0x6c, 0xa3, 0x69, 0xb9, 0xb6, 0xa2, 0xad, 0xab, 0xad, 0x75, 0xaa, 0x5e, - 0x5a, 0x77, 0x66, 0x6e, 0x1e, 0xfb, 0x62, 0x16, 0x6c, 0xa3, 0x69, 0xb9, - 0xb7, 0xa1, 0xad, 0xab, 0xad, 0x75, 0xaa, 0x5e, 0x5b, 0x76, 0x66, 0x6e, - 0x1e, 0xfb, 0x62, 0x16, 0x6c, 0xa4, 0x69, 0xb8, 0xb7, 0xa1, 0xad, 0xab, - 0xad, 0x76, 0xaa, 0x5d, 0x5b, 0x76, 0x66, 0x6e, 0x1e, 0xe, 0x7c, 0xd1, - 0xf7, 0x1d, 0xd1, 0xd9, 0xd1, 0xf7, 0x1c, 0xd1, 0x12, 0xfb, 0x5, 0xd8, - 0xf3, 0xd7, 0x74, 0xd7, 0xf3, 0xd8, 0xa3, 0xd7, 0xf7, 0x32, 0xd8, 0x13, - 0xfb, 0xc0, 0xf8, 0x26, 0xf7, 0xf, 0x15, 0x43, 0xc6, 0x4a, 0xeb, 0x8a, - 0x1e, 0xe1, 0xd1, 0xc6, 0xdb, 0xd2, 0x4f, 0xce, 0x2d, 0x2f, 0x4a, 0x68, - 0xa, 0xc0, 0xbd, 0xa8, 0x6b, 0x67, 0x5c, 0x63, 0x75, 0x63, 0x58, 0x70, - 0xac, 0xaf, 0x1e, 0xfc, 0xe3, 0xf7, 0xf5, 0x15, 0x43, 0xc6, 0x4b, 0xea, - 0x8a, 0x1e, 0xe2, 0xd0, 0xc6, 0xda, 0xd2, 0x50, 0xce, 0x2c, 0x2f, 0x4b, - 0x49, 0x42, 0x1f, 0xd8, 0x8c, 0x15, 0xae, 0xa4, 0xac, 0xbf, 0xbe, 0xa8, - 0x6b, 0x67, 0x5d, 0x64, 0x75, 0x61, 0x5a, 0x70, 0xab, 0xaf, 0x1e, 0x13, - 0xfd, 0xc0, 0xf3, 0xfb, 0xf7, 0x15, 0x43, 0xc5, 0x4a, 0xea, 0x8a, 0x1e, - 0xe2, 0xd1, 0xc6, 0xdb, 0xd2, 0x4f, 0xce, 0x2c, 0x2f, 0x4c, 0x68, 0xa, - 0xbe, 0xbe, 0xa8, 0x6b, 0x67, 0x5c, 0x64, 0x75, 0x61, 0x5a, 0x70, 0xac, - 0xaf, 0x1e, 0xfb, 0x5b, 0xc0, 0x15, 0xf8, 0x55, 0xf7, 0x52, 0x6c, 0xca, - 0xfc, 0x56, 0xfb, 0x51, 0x5, 0xe, 0x7b, 0xa, 0xf7, 0x21, 0xf7, 0x96, - 0x15, 0xf7, 0x9f, 0xfb, 0x50, 0xbc, 0xca, 0xfb, 0x4b, 0xf7, 0x15, 0xf7, - 0x4b, 0xf7, 0xd, 0x5a, 0xca, 0x5, 0xe, 0x7b, 0xa, 0xf7, 0x21, 0xf7, - 0xd0, 0x3, 0xf7, 0x52, 0xf8, 0x52, 0x15, 0x5a, 0x4c, 0xf7, 0x4b, 0xfb, - 0xd, 0xfb, 0x4b, 0xfb, 0x15, 0xbc, 0x4c, 0xf7, 0x9f, 0xf7, 0x50, 0x5, - 0xe, 0x64, 0x76, 0xf9, 0x65, 0x77, 0x1, 0xa3, 0xf8, 0xbb, 0x3, 0xa3, - 0x83, 0x15, 0xd1, 0x57, 0xf8, 0x75, 0xf9, 0x34, 0x44, 0xbc, 0x5, 0xe, - 0x84, 0x76, 0xf7, 0x5f, 0xd4, 0xba, 0xd4, 0xf7, 0x2b, 0xe8, 0x1, 0xf7, - 0xf, 0xe9, 0x3, 0xc7, 0xaf, 0x15, 0xbe, 0x4b, 0x5, 0x93, 0x97, 0xec, - 0xb0, 0xbb, 0x1b, 0xa1, 0xa6, 0x82, 0x83, 0xa6, 0x1f, 0x84, 0xa2, 0xad, - 0x85, 0x9f, 0x1b, 0xd3, 0xa8, 0xbd, 0x71, 0xa, 0x7a, 0x72, 0x64, 0xa, - 0x6b, 0x94, 0x7c, 0x1b, 0x7a, 0x50, 0x86, 0x85, 0x7c, 0x1f, 0xa6, 0x9a, - 0x93, 0xb7, 0x89, 0xa0, 0x8, 0xf7, 0x45, 0xd4, 0xfb, 0x50, 0x6, 0x88, - 0x93, 0x87, 0xa3, 0x8a, 0x9a, 0x8, 0xf7, 0x58, 0xd4, 0xfb, 0x5a, 0x6, - 0x89, 0xa8, 0x8a, 0xa4, 0x94, 0x6c, 0xa, 0xba, 0x72, 0x5e, 0xa0, 0x1f, - 0xde, 0xaf, 0x5, 0xb9, 0x70, 0x57, 0xdc, 0x63, 0xa, 0x83, 0x8b, 0x77, - 0x8d, 0x73, 0x1e, 0x47, 0x42, 0xd0, 0x6, 0x8e, 0x75, 0x8b, 0x79, 0x8d, - 0x84, 0x8, 0x41, 0x42, 0xe1, 0x6, 0x91, 0x59, 0x63, 0x4d, 0x5a, 0x70, - 0x8, 0xe, 0x8b, 0xde, 0xe5, 0xd5, 0xc1, 0xd4, 0xf4, 0xde, 0x1, 0xd8, - 0xee, 0xf7, 0xdd, 0xed, 0x3, 0x82, 0xf7, 0x4c, 0x15, 0xef, 0x6, 0xfb, - 0xe, 0xae, 0xf7, 0x8, 0x4d, 0xf7, 0xd, 0x1b, 0xe3, 0xe1, 0xaa, 0xbc, - 0xd3, 0x1f, 0x53, 0xc3, 0x5, 0x63, 0x65, 0x3a, 0x79, 0x48, 0x1b, 0x46, - 0x8c, 0x44, 0xb3, 0x6d, 0xcc, 0x8, 0xf7, 0x40, 0x6, 0xa5, 0xd5, 0x5, - 0xfb, 0x6e, 0x6, 0x8a, 0x91, 0x8b, 0x94, 0x91, 0x92, 0x8c, 0x93, 0x92, - 0x1a, 0xf7, 0x7b, 0x6, 0xa6, 0xd4, 0x5, 0xfb, 0x83, 0x6, 0xd5, 0xa3, - 0xd5, 0xaa, 0xd3, 0x1b, 0xbf, 0x8a, 0xbf, 0x79, 0xae, 0x63, 0x8, 0x47, - 0xed, 0xf7, 0x66, 0x29, 0x5c, 0x7, 0xaa, 0x5e, 0x56, 0x9b, 0x54, 0x1b, - 0xfb, 0xa, 0xfb, 0x3, 0x43, 0xfb, 0x8, 0x6a, 0x1f, 0x43, 0x6, 0x70, - 0x42, 0x5, 0xe1, 0x79, 0x6, 0x8c, 0x72, 0x5, 0x4f, 0x6, 0xe, 0x7c, - 0xe8, 0xf7, 0x1c, 0xe8, 0xf7, 0x36, 0xe8, 0x1, 0xec, 0xee, 0xf7, 0x7b, - 0xed, 0x3, 0x97, 0x7c, 0x15, 0xf7, 0x9c, 0xe8, 0x3b, 0xf7, 0x1c, 0xde, - 0x6, 0xad, 0x5d, 0xb0, 0x5d, 0xa1, 0x6b, 0x5b, 0x55, 0x18, 0xd1, 0x58, - 0xaa, 0xa9, 0x95, 0x7c, 0x8d, 0x88, 0x93, 0x7f, 0x19, 0xf7, 0x22, 0xe8, - 0x32, 0x6, 0x7f, 0x9f, 0xcc, 0xe4, 0x44, 0xbc, 0x5c, 0x4a, 0x5d, 0xc8, - 0x5, 0xf5, 0x9e, 0xab, 0xd1, 0xd3, 0x1a, 0xf7, 0xb, 0x28, 0xbd, 0xfb, - 0x8, 0x1e, 0xfb, 0xba, 0x2e, 0xdc, 0xfc, 0x1b, 0x36, 0x6, 0xf7, 0x4c, - 0xf7, 0x79, 0x15, 0xf7, 0x36, 0x7, 0xf7, 0x4a, 0xbc, 0x92, 0x37, 0x2e, - 0x39, 0x93, 0xfb, 0x29, 0x1f, 0xe, 0xf7, 0x8f, 0x76, 0xf7, 0xae, 0xbc, - 0x1, 0xf7, 0x4, 0xbb, 0xf7, 0xb, 0xba, 0xf7, 0x58, 0xbb, 0x3, 0xf7, - 0xab, 0xf7, 0x7a, 0x15, 0xba, 0xf7, 0xb5, 0x6, 0xd1, 0xfb, 0xb5, 0x5, - 0xc7, 0x6, 0xcd, 0xf7, 0xb4, 0x5, 0xfb, 0xb4, 0xbb, 0xf7, 0xe0, 0x32, - 0x7, 0x52, 0xfb, 0x97, 0x51, 0xf7, 0x97, 0x5, 0x34, 0x6, 0xfb, 0x3b, - 0xfb, 0xe0, 0x15, 0xbb, 0xf7, 0xae, 0xdd, 0xbc, 0xfb, 0x69, 0x5a, 0xde, - 0x6, 0xe, 0x75, 0xa, 0xf7, 0x33, 0x76, 0xa, 0xf8, 0x7e, 0xe1, 0xfc, - 0x79, 0x5b, 0xa, 0x8e, 0xf9, 0x3, 0x1, 0xf7, 0x92, 0xe1, 0x3, 0xf7, - 0x92, 0x8e, 0x15, 0xe1, 0xf8, 0x5b, 0x6, 0xbf, 0x45, 0xcb, 0xbd, 0xfb, - 0x31, 0xf7, 0x50, 0xfb, 0x2f, 0xfb, 0x4d, 0xca, 0x58, 0xba, 0xca, 0x5, - 0xe, 0x75, 0xa, 0x6e, 0xf7, 0x96, 0x15, 0xf8, 0x7e, 0x47, 0xa, 0xfc, - 0x79, 0x6, 0xe, 0x91, 0x76, 0x1, 0xf7, 0x92, 0xe1, 0x3, 0xf7, 0x24, - 0xf7, 0x3e, 0x15, 0xf7, 0x2f, 0xfb, 0x4d, 0xf7, 0x31, 0xf7, 0x50, 0x4b, - 0xbd, 0x57, 0x45, 0x5, 0xf8, 0x5b, 0x35, 0xfc, 0x56, 0x7, 0x5c, 0xca, - 0x5, 0xe, 0xf7, 0x96, 0xe1, 0x1, 0x73, 0xf9, 0x1c, 0x3, 0xf7, 0x38, - 0x76, 0xa, 0xf7, 0xcc, 0x47, 0xa, 0xfb, 0xc2, 0x5b, 0xa, 0xf7, 0x5f, - 0xf7, 0x2, 0x1, 0xd2, 0xf8, 0x5e, 0x3, 0x5c, 0xa, 0xe, 0x8b, 0xe5, - 0xf7, 0x87, 0xe5, 0xd7, 0xf7, 0x13, 0x73, 0x77, 0x12, 0xf4, 0xe5, 0xf7, - 0x12, 0xf7, 0x42, 0x2f, 0xe7, 0x13, 0xea, 0xf8, 0x27, 0xf8, 0x87, 0x15, - 0xe7, 0xf7, 0x13, 0x2f, 0x6, 0x2f, 0xfd, 0x6, 0x15, 0xf7, 0xab, 0xe5, - 0x2c, 0xf7, 0xe1, 0x6, 0x13, 0xec, 0xfb, 0x42, 0x31, 0x6, 0x13, 0xda, - 0xdd, 0xfb, 0x87, 0x2f, 0x6, 0xfb, 0xc2, 0x31, 0x15, 0xf7, 0xae, 0xe5, - 0x2b, 0xf7, 0x87, 0xeb, 0xe5, 0x2b, 0xbf, 0x6, 0xb4, 0xdf, 0x87, 0xa4, - 0x1e, 0x8e, 0xe5, 0x5, 0x21, 0x2b, 0x8c, 0xfb, 0x1d, 0x1f, 0x60, 0x2b, - 0x31, 0xeb, 0xfb, 0x87, 0x2b, 0x7, 0xe, 0x8b, 0xe8, 0xf7, 0x90, 0xe8, - 0xea, 0xe5, 0x8e, 0x77, 0x12, 0xf4, 0xe5, 0xf7, 0x3d, 0xf7, 0x17, 0x31, - 0xe5, 0x13, 0xdc, 0xf7, 0xcc, 0x16, 0xf7, 0xaa, 0xe8, 0x2c, 0xf8, 0xa9, - 0xfb, 0x17, 0x6, 0x13, 0xec, 0x2e, 0x7, 0x13, 0xea, 0xb4, 0xfc, 0x4c, - 0x2e, 0x6, 0xfb, 0xc3, 0x2e, 0x15, 0xf7, 0xac, 0xe8, 0x2d, 0xf7, 0x90, - 0xe9, 0xe8, 0x2d, 0xbe, 0x6, 0xab, 0xb6, 0x96, 0xb1, 0x8c, 0x1e, 0xa5, - 0x8c, 0xa3, 0x8b, 0x91, 0x89, 0x8c, 0xe6, 0x18, 0x20, 0xfb, 0xd, 0x8b, - 0xfb, 0x20, 0x1f, 0x5e, 0x2b, 0x2e, 0xeb, 0xfb, 0x90, 0x2b, 0x7, 0xe, - 0x79, 0x9d, 0xf8, 0x4b, 0x9f, 0xf2, 0x9d, 0x9f, 0x95, 0x95, 0x95, 0x6, - 0xfb, 0x26, 0x8f, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xe8, - 0xa, 0xe8, 0xb, 0x8c, 0xc, 0xe, 0xf8, 0xec, 0x14, 0xae, 0x13, 0x0, - 0x5d, 0x2, 0x0, 0x1, 0x0, 0x35, 0x0, 0x43, 0x0, 0x47, 0x0, 0x7a, - 0x0, 0xba, 0x0, 0xc4, 0x0, 0xe9, 0x1, 0x17, 0x1, 0x34, 0x1, 0x4c, - 0x1, 0x65, 0x1, 0x7d, 0x1, 0x94, 0x1, 0xa8, 0x1, 0xbb, 0x1, 0xca, - 0x1, 0xdc, 0x1, 0xe2, 0x1, 0xe9, 0x1, 0xfc, 0x2, 0x6, 0x2, 0x10, - 0x2, 0x24, 0x2, 0x36, 0x2, 0x43, 0x2, 0x4c, 0x2, 0x6c, 0x2, 0x71, - 0x2, 0x78, 0x2, 0x7f, 0x2, 0x8d, 0x2, 0x95, 0x2, 0xa0, 0x2, 0xb8, - 0x2, 0xcf, 0x2, 0xd8, 0x2, 0xe1, 0x2, 0xe7, 0x2, 0xfa, 0x3, 0xd, - 0x3, 0x1c, 0x3, 0x2e, 0x3, 0x36, 0x3, 0x3e, 0x3, 0x43, 0x3, 0x49, - 0x3, 0x57, 0x3, 0x61, 0x3, 0x71, 0x3, 0x75, 0x3, 0x7e, 0x3, 0x87, - 0x3, 0x90, 0x3, 0x97, 0x3, 0xa5, 0x3, 0xb1, 0x3, 0xbf, 0x3, 0xc3, - 0x3, 0xd0, 0x3, 0xdb, 0x3, 0xe7, 0x3, 0xf2, 0x3, 0xfe, 0x4, 0x4, - 0x4, 0x8, 0x4, 0xe, 0x4, 0x14, 0x4, 0x1f, 0x4, 0x2a, 0x4, 0x31, - 0x4, 0x36, 0x4, 0x3b, 0x4, 0x45, 0x4, 0x4f, 0x4, 0x53, 0x4, 0x57, - 0x4, 0x60, 0x4, 0x69, 0x4, 0x72, 0x4, 0x7b, 0x4, 0x84, 0x4, 0x8d, - 0x4, 0x96, 0x4, 0x9f, 0x4, 0xa8, 0x4, 0xb1, 0x4, 0xba, 0x4, 0xc1, - 0x4, 0xc8, 0x4, 0xce, 0x4, 0xd4, 0x4, 0xd9, 0x4, 0xde, 0xf7, 0x97, - 0xe5, 0x27, 0x6, 0xa9, 0xcc, 0x5, 0xf7, 0x86, 0x6, 0xa9, 0x4a, 0x5, - 0x2a, 0x31, 0xf7, 0x92, 0xe5, 0x51, 0x6, 0xfb, 0x62, 0xf8, 0x62, 0x5, - 0xfb, 0x8f, 0x31, 0xf7, 0x15, 0x6, 0xfb, 0x3f, 0xfc, 0x8, 0x5, 0x4e, - 0x6, 0xf7, 0x7a, 0xf7, 0x2f, 0x15, 0xdc, 0xf7, 0x47, 0xdc, 0xfb, 0x47, - 0x5, 0xb, 0x2a, 0xa, 0x13, 0x7d, 0x4d, 0xa, 0x13, 0x7e, 0x2b, 0xa, - 0x13, 0xbe, 0x29, 0xa, 0x15, 0x20, 0xa, 0xe, 0x15, 0xfb, 0x39, 0xf7, - 0x2a, 0x51, 0xf7, 0xa, 0xf7, 0xf, 0xf7, 0x29, 0xcb, 0xf7, 0x33, 0xf7, - 0x24, 0xfb, 0x6, 0xe0, 0xfb, 0x32, 0xfb, 0x21, 0xfb, 0x13, 0x3d, 0xfb, - 0x2b, 0x1e, 0xef, 0x16, 0xdf, 0xd4, 0xc0, 0xea, 0xf7, 0x7, 0xc5, 0x52, - 0x3b, 0x34, 0x28, 0x5b, 0x41, 0x47, 0x27, 0xb7, 0xe6, 0x1e, 0xe, 0x15, - 0xf8, 0x23, 0x6, 0xf7, 0x1c, 0xa5, 0x32, 0xf7, 0x14, 0xfb, 0x43, 0x1b, - 0xfb, 0xc, 0xfb, 0x1f, 0x3f, 0xfb, 0x2b, 0xfb, 0x8, 0xe3, 0x21, 0xf7, - 0x41, 0xe5, 0xeb, 0xa9, 0xb4, 0xd7, 0x1f, 0x5f, 0xda, 0x5, 0x6d, 0x4b, - 0x3b, 0x6d, 0x41, 0x1b, 0xfb, 0x10, 0x69, 0xc7, 0xae, 0x86, 0x1f, 0x92, - 0xe6, 0x15, 0xc3, 0xa0, 0xce, 0xa4, 0xc8, 0x1b, 0xc7, 0xca, 0x7a, 0x4b, - 0x9e, 0x1f, 0xe, 0x2f, 0xa, 0xf7, 0x2e, 0x2e, 0xf7, 0x1c, 0x26, 0xa, - 0xb, 0xfb, 0x4c, 0xfb, 0x42, 0x22, 0xfb, 0x21, 0xfb, 0x2b, 0x1e, 0xed, - 0x8e, 0x15, 0xe6, 0xc8, 0xf6, 0xf7, 0xc, 0xf7, 0x1c, 0xb9, 0xfb, 0x13, - 0x47, 0x3a, 0x5a, 0xfb, 0x10, 0xfb, 0x19, 0xfb, 0xd, 0x4f, 0xf3, 0xed, - 0x1e, 0xb, 0xdb, 0xfb, 0xa2, 0x6, 0xfb, 0x11, 0xd3, 0x38, 0xf7, 0x25, - 0xf7, 0x11, 0xe8, 0xdc, 0xf7, 0x12, 0x1e, 0xf7, 0xa3, 0xd8, 0xe6, 0xfb, - 0x96, 0x30, 0xe1, 0xfb, 0x8d, 0x7, 0x35, 0x74, 0x57, 0x25, 0xfb, 0x4, - 0x83, 0xe2, 0xc0, 0x1e, 0xf7, 0x8b, 0xdf, 0xe6, 0xfb, 0x97, 0x7, 0xe, - 0x15, 0x13, 0xb5, 0x0, 0x2e, 0xa, 0x13, 0x78, 0x80, 0x64, 0xf7, 0x43, - 0xe6, 0x7, 0x13, 0x7a, 0x0, 0x3a, 0xf7, 0xe1, 0xfb, 0x41, 0x30, 0x6, - 0x13, 0xb9, 0x0, 0x2c, 0xa, 0x61, 0x5b, 0x4f, 0x69, 0x47, 0x1b, 0x60, - 0x62, 0x9c, 0xab, 0xb7, 0xbf, 0x9d, 0xc6, 0x8c, 0x1f, 0xc7, 0x8c, 0xcd, - 0x85, 0xa2, 0x89, 0x8, 0xe, 0x1f, 0x8f, 0x67, 0x63, 0x8e, 0x66, 0x1b, - 0xfb, 0x7f, 0x82, 0xfb, 0x19, 0x78, 0x4b, 0xcb, 0x3e, 0xf7, 0xa, 0xda, - 0xb0, 0xa1, 0xae, 0xc6, 0x1f, 0xb, 0x38, 0xf7, 0x37, 0x6, 0xf7, 0xe, - 0x5d, 0xc8, 0xfb, 0x10, 0xfb, 0x0, 0xfb, 0xe, 0x66, 0x7f, 0x7a, 0x1e, - 0xf7, 0xd6, 0xfb, 0x7c, 0x15, 0xb, 0xda, 0xfb, 0x4f, 0x6, 0x75, 0x63, - 0x52, 0x71, 0x59, 0x8a, 0x8, 0x5a, 0x8a, 0x60, 0xa0, 0xbf, 0x1a, 0xf7, - 0xa5, 0xfb, 0x42, 0x7, 0xe, 0xfb, 0x93, 0x38, 0xa, 0xf7, 0x93, 0xfb, - 0x6, 0xed, 0xf7, 0x60, 0xfc, 0xa2, 0x31, 0xd7, 0xfc, 0x8, 0x3c, 0x6, - 0xb, 0xdc, 0xfb, 0x48, 0x6, 0xfb, 0x2, 0xc7, 0x54, 0xf7, 0xa, 0x8a, - 0x1e, 0xbf, 0xbe, 0xa1, 0xa9, 0xac, 0x1f, 0xb, 0x15, 0xfb, 0x56, 0xf7, - 0x25, 0x2d, 0xf7, 0x1a, 0xf3, 0xf7, 0x41, 0xd2, 0xf7, 0x6f, 0xb, 0xfb, - 0x3f, 0xf8, 0x8, 0xf7, 0x36, 0xe5, 0xfc, 0x3f, 0x31, 0xf7, 0x39, 0xfc, - 0x8, 0xfb, 0x43, 0x6, 0xb, 0xf8, 0x52, 0xe5, 0x30, 0xa, 0xb, 0x8b, - 0xe6, 0xf8, 0x10, 0xe6, 0x1, 0xb, 0x15, 0xf8, 0x52, 0xe6, 0xfb, 0x43, - 0xf7, 0xe0, 0xfb, 0x7e, 0x30, 0xf7, 0x1d, 0xfb, 0x85, 0xfb, 0x42, 0x6, - 0xe, 0x12, 0xab, 0xec, 0xf7, 0x98, 0xea, 0x2c, 0xf7, 0x46, 0xb, 0xf8, - 0xa5, 0xf7, 0x5e, 0x29, 0xfb, 0x4, 0x2d, 0xa, 0xb, 0x77, 0x12, 0x9a, - 0xf7, 0x42, 0x2e, 0xe8, 0xf7, 0x22, 0xf7, 0x41, 0x2d, 0xe9, 0x2d, 0xf7, - 0x43, 0x13, 0xba, 0x0, 0xb, 0x5a, 0xbb, 0x64, 0xc7, 0xc7, 0xbb, 0xb2, - 0xbc, 0xbc, 0x5b, 0xb2, 0x4f, 0x4f, 0x5b, 0x64, 0x5a, 0x1e, 0xb, 0xf7, - 0x27, 0xf1, 0x4b, 0xee, 0xf7, 0x6c, 0x28, 0x4b, 0x25, 0xf7, 0x1d, 0xb, - 0x7c, 0xe6, 0x3c, 0xe5, 0xf0, 0xe5, 0xcf, 0xe2, 0xb, 0x7, 0xf7, 0x9e, - 0xf8, 0x26, 0x5, 0xd7, 0xe2, 0xfb, 0x76, 0x34, 0xb8, 0x6, 0xfb, 0x14, - 0xfb, 0x54, 0xfb, 0x6, 0xf7, 0x54, 0x5, 0xbc, 0xe2, 0xfb, 0x7b, 0x34, - 0xd7, 0x6, 0xf7, 0x3a, 0xb, 0x34, 0xa, 0x13, 0xbe, 0xb, 0x4a, 0xa, - 0xf7, 0x83, 0x36, 0xa, 0xb, 0xbf, 0xa9, 0x70, 0x5b, 0x2a, 0xa, 0xb, - 0x53, 0xaf, 0xfb, 0x20, 0xfb, 0x1, 0xfb, 0x20, 0xf7, 0x1, 0x51, 0x68, - 0x5, 0xe, 0x15, 0x9b, 0xa9, 0xf4, 0xa4, 0xd7, 0x1b, 0xb, 0xe9, 0x1, - 0xf7, 0x8e, 0xee, 0x60, 0xa, 0xe9, 0xfb, 0x42, 0xb, 0xc9, 0xaf, 0x75, - 0x6d, 0xbe, 0x1f, 0x2d, 0xed, 0xf7, 0x81, 0x29, 0x5c, 0x7, 0xa5, 0x62, - 0x66, 0xa0, 0x41, 0x1b, 0xfb, 0x32, 0xfb, 0x12, 0xb, 0xfb, 0xa, 0x42, - 0x39, 0xa3, 0x95, 0x64, 0x1e, 0xa7, 0xf7, 0xa3, 0x15, 0xd2, 0xcd, 0xba, - 0xd9, 0xdf, 0xc6, 0x5f, 0x3f, 0x42, 0x53, 0xb, 0x15, 0xe7, 0x6, 0xf7, - 0x29, 0xf7, 0x1e, 0x3e, 0xa, 0x1, 0x82, 0xf7, 0x97, 0xf4, 0xf7, 0x92, - 0x3, 0xb, 0x76, 0xf7, 0xb1, 0x77, 0x1, 0xb, 0xf7, 0xc4, 0xf7, 0x46, - 0x15, 0xf7, 0x1d, 0x32, 0x6, 0x81, 0x62, 0x64, 0x88, 0x67, 0x1b, 0xfb, - 0x14, 0x36, 0xb, 0x6, 0x45, 0x57, 0xbd, 0x4c, 0xf7, 0x50, 0xf7, 0x30, - 0xfb, 0x4d, 0xf7, 0x30, 0x58, 0x4c, 0xca, 0x5b, 0x5, 0xb, 0x8b, 0xe5, - 0xf7, 0x27, 0xe3, 0xf7, 0x1d, 0x5f, 0xa, 0xf7, 0x9, 0xec, 0xf1, 0xee, - 0xb, 0x66, 0xac, 0x6c, 0xb4, 0xb4, 0xac, 0xaa, 0xb0, 0xb2, 0x6a, 0xa9, - 0x62, 0x62, 0x6a, 0x6d, 0x64, 0x1e, 0xb, 0x7c, 0xe7, 0x3c, 0xe6, 0xf7, - 0x86, 0xe6, 0xb, 0x1, 0xa9, 0xef, 0xf7, 0xe9, 0xee, 0x3, 0xb, 0xf7, - 0xbe, 0x45, 0xa, 0xb, 0x5e, 0xf7, 0x46, 0xe5, 0x7, 0xb, 0xfb, 0xb1, - 0x15, 0xf7, 0x9, 0x6, 0xf7, 0x1a, 0x59, 0xa, 0xfb, 0x2e, 0x6, 0xe, - 0x79, 0xe6, 0xf8, 0x17, 0xe6, 0xf7, 0x7d, 0x52, 0xa, 0xb, 0xe7, 0x74, - 0x15, 0x75, 0x32, 0x5, 0x79, 0xdf, 0xc8, 0x7b, 0xd5, 0x1b, 0xf7, 0x50, - 0xa1, 0xb, 0x3f, 0xa, 0xbf, 0xb, 0x77, 0x1, 0xdf, 0xea, 0xf7, 0x89, - 0xea, 0x3, 0xb, 0x15, 0xf7, 0x5, 0xf7, 0x10, 0xfb, 0x5, 0x6, 0xb, - 0x77, 0x1, 0xa1, 0xed, 0xf7, 0xff, 0xea, 0x3, 0xb, 0x7c, 0xe5, 0xea, - 0xe6, 0xdc, 0xe7, 0xb, 0x6, 0xfb, 0x4e, 0xfb, 0xe, 0x15, 0xf7, 0x6, - 0xf7, 0xe, 0xfb, 0x6, 0x6, 0xb, 0x8b, 0xe6, 0xf7, 0x85, 0xe6, 0xf7, - 0x82, 0x67, 0xa, 0xec, 0x3, 0xb, 0xd2, 0xd2, 0x9c, 0xaa, 0xc6, 0x1f, - 0xf7, 0x28, 0xbd, 0xea, 0xfb, 0xae, 0x7, 0xb, 0xf7, 0xb1, 0x5, 0xb, - 0xa7, 0x66, 0x5a, 0x97, 0x56, 0x1b, 0xfb, 0x23, 0x27, 0x30, 0xfb, 0x8, - 0xb, 0x6, 0xca, 0xbb, 0x58, 0xca, 0xfb, 0x4d, 0xfb, 0x30, 0x5, 0xe, - 0xd2, 0xf7, 0x5f, 0x15, 0xf8, 0x5e, 0xf7, 0x2, 0xfc, 0x5e, 0x6, 0xb, - 0x15, 0xf7, 0x9, 0x6, 0x2b, 0x59, 0xa, 0xfb, 0x2c, 0x6, 0xb, 0xaf, - 0x76, 0xf8, 0x7a, 0x77, 0x1, 0xd2, 0xf8, 0x5d, 0x3, 0xd2, 0xb, 0xe5, - 0xf7, 0x7c, 0x77, 0x1, 0xb, 0x3, 0x66, 0xa, 0xb, 0x79, 0xe4, 0xf8, - 0x24, 0xe6, 0xb, 0x7c, 0xe7, 0xf7, 0x9f, 0xe7, 0xb, 0xfb, 0x12, 0x1b, - 0xfb, 0x1b, 0x45, 0x2b, 0x2c, 0x8c, 0x1f, 0xb, 0x67, 0x1b, 0x81, 0x7c, - 0x8f, 0x91, 0x7b, 0x1f, 0x92, 0x76, 0xb, 0xc3, 0x56, 0xf8, 0xd0, 0xf9, - 0xf, 0xb, 0xd8, 0x16, 0xf8, 0x52, 0xb, 0x77, 0x1, 0xf7, 0x8f, 0xb, - 0x49, 0x42, 0x1f, 0xd7, 0x8c, 0x15, 0xae, 0xa5, 0xac, 0xb, 0x12, 0xa4, - 0xea, 0xf7, 0xb3, 0xe7, 0x2f, 0xf7, 0x3c, 0xb, 0xfb, 0xc, 0x5, 0xb, - 0xfb, 0x3, 0x6, 0xb, 0x1a, 0xbc, 0x8a, 0xb2, 0xb1, 0xd5, 0x1b, 0xbf, - 0xb, 0x1, 0xf7, 0x54, 0xf7, 0x6c, 0x3, 0xf7, 0x54, 0xb, 0x77, 0x1, - 0xf7, 0x93, 0xe5, 0x3, 0xf7, 0x93, 0xb, 0x15, 0xf7, 0x2, 0xf7, 0x11, - 0xfb, 0x2, 0x6, 0xb, 0x15, 0xf7, 0x6, 0xf7, 0x12, 0xfb, 0x6, 0x6, - 0xb, 0xa4, 0xa0, 0x1f, 0x53, 0xca, 0x5, 0x77, 0x71, 0xb, 0x15, 0xf7, - 0x4, 0xf7, 0x12, 0xfb, 0x4, 0x6, 0xb, 0x15, 0xf7, 0xa, 0xf7, 0x24, - 0xfb, 0xa, 0x6, 0xb, 0xf7, 0x3c, 0xe6, 0xfc, 0x4c, 0x30, 0xf7, 0x3f, - 0xb, 0xf7, 0x96, 0xe1, 0x1, 0x6e, 0xf9, 0x26, 0x3, 0xb, 0xf7, 0x23, - 0x15, 0xbd, 0xca, 0x45, 0xbf, 0x5, 0xb, 0xc5, 0xfb, 0xc3, 0xf7, 0xd, - 0x5, 0xe, 0xa1, 0xd8, 0x1e, 0xf6, 0x29, 0x7, 0xe, 0x15, 0xf7, 0x3, - 0xf7, 0x23, 0xb, 0x30, 0xde, 0xfc, 0x10, 0x38, 0xb, 0xd1, 0xf8, 0xc, - 0x1, 0xb, 0x8b, 0xe9, 0xf7, 0x8f, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp deleted file mode 100644 index d6de9f6006..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp +++ /dev/null @@ -1,1605 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitFixedBoldItalicFontData[19151] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x19, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x2d, 0x42, - 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, - 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, 0x2a, 0x1, 0xf8, 0x2b, 0x2, 0xf8, - 0x2c, 0x3, 0xf8, 0x14, 0x4, 0xfb, 0xa, 0xfb, 0x8d, 0xf9, 0x49, 0xf9, - 0xbf, 0x5, 0xf7, 0xad, 0xf, 0xf9, 0x94, 0x11, 0xac, 0x1c, 0x44, 0x2e, - 0x12, 0x0, 0x12, 0x1, 0x1, 0x5, 0xb, 0xd, 0x11, 0x19, 0x22, 0x2b, - 0x34, 0x3e, 0x45, 0x4b, 0x4d, 0x51, 0x5d, 0x65, 0x8f, 0xaa, 0xb9, 0x45, - 0x75, 0x72, 0x6f, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x49, 0x4a, 0x49, - 0x64, 0x6f, 0x74, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x61, - 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x61, 0x72, 0x72, 0x6f, - 0x77, 0x64, 0x6f, 0x77, 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, - 0x66, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x61, 0x72, 0x72, 0x6f, 0x77, 0x75, 0x70, 0x67, 0x63, 0x61, 0x72, 0x6f, - 0x6e, 0x69, 0x6a, 0x6c, 0x69, 0x72, 0x61, 0x70, 0x72, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x63, 0x65, 0x64, 0x69, - 0x6c, 0x6c, 0x61, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, - 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x20, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, - 0x43, 0x68, 0x72, 0x6F, 0x68, 0x20, 0x46, 0x69, 0x78, 0x65, 0x64, 0x20, - 0x4f, 0x54, 0x46, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x8a, 0x0, 0xab, - 0x0, 0xac, 0x0, 0xad, 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, 0x23, - 0x0, 0x24, 0x0, 0xb1, 0x0, 0x25, 0x0, 0x26, 0x0, 0xb2, 0x0, 0xb3, - 0x0, 0xb4, 0x0, 0xb5, 0x0, 0x9a, 0x1, 0x87, 0x0, 0x27, 0x0, 0x28, - 0x1, 0x88, 0x0, 0x29, 0x0, 0x2a, 0x1, 0x89, 0x0, 0xb6, 0x0, 0xb7, - 0x0, 0xb8, 0x1, 0x8a, 0x0, 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, - 0x0, 0x8c, 0x0, 0x2e, 0x0, 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, - 0x0, 0xbb, 0x0, 0xbc, 0x0, 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, - 0x0, 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0xc0, 0x1, 0x8b, - 0x0, 0x35, 0x0, 0x9d, 0x0, 0x36, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, - 0x0, 0xc4, 0x0, 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0xc5, - 0x0, 0xc6, 0x0, 0x3b, 0x0, 0xc7, 0x0, 0x42, 0x0, 0xc8, 0x0, 0xc9, - 0x0, 0x7d, 0x0, 0xca, 0x0, 0x90, 0x0, 0xcb, 0x0, 0x7, 0x0, 0xcc, - 0x1, 0x8c, 0x1, 0x8d, 0x1, 0x8e, 0x1, 0x8f, 0x1, 0x90, 0x0, 0x3f, - 0x0, 0x5f, 0x0, 0xb, 0x0, 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, - 0x0, 0x5d, 0x0, 0x5c, 0x0, 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, - 0x0, 0xa0, 0x0, 0x74, 0x0, 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, - 0x0, 0x61, 0x0, 0x7e, 0x0, 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, - 0x0, 0x45, 0x0, 0x70, 0x0, 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, - 0x0, 0x5, 0x0, 0x82, 0x0, 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, - 0x0, 0xd1, 0x0, 0xd2, 0x0, 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, - 0x0, 0x1e, 0x0, 0xa7, 0x0, 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, - 0x0, 0x16, 0x0, 0x6e, 0x0, 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, - 0x1, 0x91, 0x0, 0x95, 0x0, 0x7c, 0x0, 0x1f, 0x0, 0x6a, 0x0, 0x78, - 0x0, 0x6b, 0x0, 0x6c, 0x0, 0x49, 0x0, 0x86, 0x0, 0xe, 0x0, 0x4a, - 0x0, 0xd3, 0x0, 0xd4, 0x0, 0xd5, 0x0, 0xd6, 0x1, 0x92, 0x0, 0x4b, - 0x0, 0x4c, 0x0, 0x4d, 0x0, 0x1d, 0x1, 0x93, 0x0, 0x97, 0x0, 0x92, - 0x0, 0x4e, 0x0, 0x80, 0x0, 0xa6, 0x0, 0x98, 0x0, 0xa8, 0x0, 0x4f, - 0x0, 0x1a, 0x0, 0xd7, 0x0, 0x4, 0x0, 0x50, 0x0, 0xd8, 0x0, 0xd9, - 0x0, 0xda, 0x0, 0x94, 0x0, 0x87, 0x0, 0xdb, 0x0, 0x12, 0x0, 0x9b, - 0x0, 0x9e, 0x0, 0x96, 0x0, 0x8b, 0x0, 0x8f, 0x0, 0x93, 0x0, 0xdc, - 0x0, 0x51, 0x0, 0x73, 0x0, 0x9, 0x0, 0xa, 0x0, 0x6, 0x0, 0xf, - 0x0, 0x72, 0x0, 0x7a, 0x0, 0xc, 0x0, 0x9c, 0x1, 0x94, 0x0, 0x52, - 0x0, 0x20, 0x0, 0x7b, 0x0, 0x3, 0x0, 0x76, 0x0, 0x69, 0x0, 0x77, - 0x0, 0x41, 0x0, 0x8, 0x0, 0x75, 0x0, 0x68, 0x0, 0x53, 0x0, 0xa5, - 0x0, 0x84, 0x0, 0x54, 0x0, 0xdd, 0x1, 0x95, 0x0, 0x66, 0x0, 0x1c, - 0x0, 0x18, 0x0, 0x17, 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, 0x55, - 0x0, 0xa2, 0x0, 0x14, 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, 0x99, - 0x0, 0x13, 0x0, 0xa4, 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, 0xe0, - 0x0, 0xe1, 0x0, 0x40, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, - 0x0, 0xe2, 0x0, 0xe3, 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, 0x11, - 0x0, 0xf4, 0x2, 0x0, 0x1, 0x0, 0x2, 0x0, 0x44, 0x0, 0xc1, 0x0, - 0xdc, 0x1, 0x2, 0x1, 0x26, 0x1, 0x40, 0x1, 0x76, 0x1, 0xbf, 0x2, - 0x29, 0x2, 0x78, 0x2, 0xfe, 0x3, 0x37, 0x3, 0x84, 0x3, 0xa1, 0x3, - 0xc9, 0x3, 0xed, 0x4, 0x13, 0x4, 0x6e, 0x4, 0xf0, 0x5, 0x3a, 0x5, - 0x9a, 0x6, 0x8, 0x6, 0x5e, 0x6, 0x83, 0x6, 0xdb, 0x6, 0xf4, 0x7, - 0x1d, 0x7, 0x38, 0x7, 0x6e, 0x7, 0x84, 0x7, 0xc1, 0x8, 0x19, 0x8, - 0x45, 0x8, 0x85, 0x8, 0xc9, 0x8, 0xf8, 0x9, 0x6e, 0x9, 0xb6, 0xa, - 0x36, 0xa, 0x52, 0xa, 0x75, 0xa, 0x9a, 0xa, 0xbb, 0xb, 0x3c, 0xb, - 0x86, 0xb, 0xd0, 0xc, 0x48, 0xc, 0xa7, 0xd, 0x1b, 0xd, 0x8b, 0xe, - 0x2b, 0xe, 0x5c, 0xe, 0xba, 0xf, 0x17, 0xf, 0x33, 0xf, 0x59, 0xf, - 0x81, 0xf, 0x9a, 0xf, 0xcb, 0x10, 0xd, 0x10, 0x56, 0x10, 0x8f, 0x10, - 0xe0, 0x11, 0x4b, 0x11, 0x7d, 0x11, 0xce, 0x12, 0x48, 0x12, 0x67, 0x12, - 0x9b, 0x12, 0xaf, 0x12, 0xdd, 0x13, 0x88, 0x13, 0xa6, 0x14, 0x29, 0x14, - 0x62, 0x14, 0x83, 0x14, 0xa5, 0x14, 0xc3, 0x14, 0xdc, 0x15, 0x0, 0x15, - 0x32, 0x15, 0x7e, 0x15, 0xad, 0x16, 0x4c, 0x16, 0xaa, 0x17, 0x8, 0x17, - 0x21, 0x17, 0x3b, 0x17, 0xb4, 0x18, 0x2c, 0x18, 0x4c, 0x18, 0x70, 0x18, - 0x94, 0x18, 0xbd, 0x18, 0xde, 0x19, 0x29, 0x19, 0x44, 0x19, 0xc2, 0x19, - 0xfe, 0x1a, 0x5d, 0x1a, 0x7a, 0x1a, 0xb5, 0x1a, 0xd3, 0x1b, 0x5a, 0x1b, - 0xd7, 0x1c, 0x39, 0x1c, 0x6a, 0x1c, 0xaf, 0x1c, 0xeb, 0x1d, 0x15, 0x1d, - 0x3f, 0x1d, 0xd5, 0x1d, 0xee, 0x1e, 0xd, 0x1e, 0x5d, 0x1e, 0x73, 0x1e, - 0x9e, 0x1e, 0xc0, 0x1e, 0xe9, 0x1f, 0x63, 0x1f, 0x88, 0x1f, 0x9e, 0x1f, - 0xb4, 0x1f, 0xd9, 0x20, 0x4c, 0x20, 0x7d, 0x20, 0xad, 0x20, 0xff, 0x21, - 0x5c, 0x21, 0xa9, 0x22, 0x9, 0x22, 0x6d, 0x22, 0xae, 0x22, 0xbf, 0x23, - 0x2f, 0x23, 0xa9, 0x24, 0x38, 0x24, 0x4c, 0x24, 0x6c, 0x24, 0x85, 0x24, - 0xbe, 0x24, 0xde, 0x24, 0xf9, 0x25, 0x4d, 0x25, 0x75, 0x25, 0x8d, 0x25, - 0xc1, 0x25, 0xda, 0x25, 0xff, 0x26, 0x27, 0x26, 0x40, 0x26, 0xb0, 0x26, - 0xf8, 0x27, 0x45, 0x27, 0x67, 0x27, 0x87, 0x27, 0xec, 0x28, 0xa, 0x28, - 0x44, 0x28, 0xc6, 0x28, 0xdc, 0x28, 0xeb, 0x29, 0x3d, 0x29, 0x6a, 0x29, - 0xc9, 0x2a, 0x25, 0x2a, 0xc0, 0x2b, 0x2d, 0x2b, 0x6f, 0x2b, 0x86, 0x2b, - 0xb0, 0x2b, 0xc9, 0x2c, 0x4a, 0x2c, 0x78, 0x2c, 0x8f, 0x2c, 0xb2, 0x2d, - 0x2e, 0x2d, 0x9e, 0x2d, 0xc6, 0x2e, 0x2f, 0x2e, 0x6d, 0x2e, 0xe8, 0x2f, - 0x32, 0x2f, 0x92, 0x2f, 0xcc, 0x2f, 0xff, 0x30, 0x32, 0x30, 0x60, 0x30, - 0x7f, 0x30, 0xa0, 0x30, 0xed, 0x31, 0x1c, 0x31, 0x5e, 0x31, 0xca, 0x32, - 0x26, 0x32, 0x81, 0x32, 0xdd, 0x33, 0x4, 0x33, 0x25, 0x33, 0x46, 0x33, - 0x70, 0x33, 0x82, 0x33, 0x9e, 0x33, 0xb7, 0x33, 0xd1, 0x34, 0xd, 0x34, - 0x97, 0x34, 0xce, 0x35, 0x41, 0x35, 0xca, 0x36, 0x73, 0x37, 0xe, 0x37, - 0x41, 0x37, 0x65, 0x37, 0xc8, 0x37, 0xdd, 0x37, 0xde, 0x38, 0x2f, 0x38, - 0x7d, 0x38, 0xe4, 0x39, 0x44, 0x39, 0xf0, 0x3a, 0x51, 0x3a, 0x94, 0x3a, - 0xe9, 0x3b, 0x3a, 0x3b, 0x88, 0x3b, 0xde, 0x3b, 0xff, 0x3c, 0x26, 0x3c, - 0x4a, 0x3c, 0x61, 0x3c, 0x72, 0x3c, 0xa1, 0x3c, 0xe1, 0x3d, 0x2c, 0x3d, - 0x78, 0x3d, 0xba, 0x3e, 0xe, 0x3e, 0x76, 0x3e, 0xac, 0x3f, 0x0, 0x3f, - 0x42, 0xe, 0x8b, 0xe6, 0xd8, 0xe6, 0xf7, 0x68, 0xe6, 0x1, 0x63, 0x16, - 0xf7, 0x8d, 0x34, 0xa, 0x31, 0x6, 0xba, 0xd8, 0x5, 0xf7, 0x82, 0x6, - 0x9e, 0x3e, 0x5, 0x34, 0x36, 0xa, 0xf7, 0x8a, 0x42, 0xa, 0x50, 0x6, - 0xfb, 0x0, 0xf8, 0x6b, 0x5, 0xfb, 0x92, 0x4b, 0xa, 0xf7, 0x15, 0x6, - 0xfb, 0x8d, 0x7d, 0xa, 0x4c, 0x6, 0xf7, 0x9e, 0xf7, 0x3c, 0x15, 0xf7, - 0x9, 0xf7, 0x41, 0xb5, 0xfb, 0x41, 0x5, 0xe, 0x8b, 0xe5, 0x31, 0xf7, - 0x40, 0x7e, 0xe6, 0x52, 0xf7, 0x50, 0x93, 0xf7, 0x41, 0x31, 0xe5, 0x12, - 0x13, 0xa8, 0xfb, 0xa, 0x16, 0xf7, 0x85, 0x6, 0x9f, 0xe5, 0x5, 0x3d, - 0x6, 0xb8, 0xd0, 0x5, 0xf7, 0x4, 0x6, 0x6a, 0xfb, 0x33, 0x5, 0xf7, - 0xcc, 0x6, 0x13, 0x58, 0xaf, 0xf7, 0x40, 0x5, 0x3c, 0x6, 0x13, 0x94, - 0x7a, 0x39, 0x5, 0xfb, 0x1e, 0x6, 0xab, 0xf7, 0x2c, 0x5, 0xb1, 0x6, - 0x81, 0x5a, 0x5c, 0xa, 0xb3, 0xf7, 0x50, 0x5, 0x3c, 0x6, 0x82, 0x5a, - 0x5, 0x64, 0x6, 0xa8, 0x97, 0xa, 0xf7, 0x1e, 0x6, 0x13, 0xa8, 0x7a, - 0x38, 0x5c, 0xa, 0xaf, 0xf7, 0x41, 0x5, 0xfc, 0x6f, 0x6, 0x13, 0xa4, - 0x77, 0x31, 0x5, 0xe8, 0x6, 0xfb, 0x8e, 0xfc, 0x12, 0x5, 0x4a, 0x6, - 0xf7, 0xa0, 0xf7, 0x34, 0x15, 0xf5, 0xf7, 0x39, 0x69, 0xfb, 0x39, 0x5, - 0xe, 0x40, 0xa, 0xf7, 0x7a, 0x77, 0x1, 0xf7, 0xb6, 0xf8, 0xf3, 0x15, - 0xf7, 0xef, 0xd5, 0x77, 0xf2, 0xfb, 0xe4, 0xfb, 0xa, 0x5, 0xfb, 0xc2, - 0xfd, 0x2e, 0x23, 0xa, 0x40, 0xa, 0xf7, 0x76, 0x77, 0x1, 0xf7, 0x91, - 0xf8, 0xee, 0x15, 0xf7, 0x42, 0xf7, 0x4, 0xf7, 0x13, 0xfb, 0x4, 0xcd, - 0xae, 0xfb, 0x16, 0xf7, 0x23, 0x66, 0xa, 0xfb, 0x55, 0xfb, 0x22, 0x5, - 0xfb, 0x71, 0xfd, 0x12, 0x23, 0xa, 0x40, 0xa, 0xd3, 0xf7, 0xe, 0x1, - 0xf8, 0x57, 0xf9, 0x6, 0x6d, 0xa, 0xa5, 0xf7, 0xe, 0x5, 0xfb, 0x4, - 0x6, 0xfb, 0x66, 0xfb, 0xe, 0x5a, 0xa, 0xa5, 0xf7, 0xe, 0x4c, 0xa, - 0xfb, 0xd0, 0xfd, 0x80, 0x23, 0xa, 0x40, 0xa, 0xf7, 0x7a, 0x77, 0x1, - 0x76, 0x16, 0x20, 0xa, 0xfb, 0x31, 0xf8, 0x44, 0x15, 0xf7, 0xc2, 0x3a, - 0xb2, 0xc5, 0xfb, 0xa7, 0xf7, 0xb, 0x5, 0xe, 0x40, 0xa, 0xba, 0xf7, - 0x5c, 0x1, 0xf7, 0xd1, 0xf9, 0x3f, 0x15, 0x5d, 0xae, 0x67, 0xbf, 0xce, - 0xc7, 0xc1, 0xc9, 0xba, 0x69, 0xb0, 0x57, 0x4d, 0x49, 0x58, 0x48, 0x1e, - 0xce, 0x95, 0x15, 0xa5, 0x9e, 0x9f, 0xa8, 0x9e, 0x9a, 0x7d, 0x79, 0x73, - 0x70, 0x77, 0x75, 0x79, 0x7c, 0x99, 0x9b, 0x1e, 0xfc, 0x29, 0xfd, 0x49, - 0x23, 0xa, 0x40, 0xa, 0xc5, 0x77, 0xf7, 0x3b, 0x77, 0x1, 0xf7, 0x50, - 0xf9, 0x10, 0x15, 0xd6, 0x72, 0x5, 0xae, 0xa1, 0x9c, 0xa5, 0xa6, 0x1b, - 0xa2, 0x9d, 0x7d, 0x7d, 0x9f, 0x1f, 0x7b, 0xa1, 0xa2, 0x7b, 0xaa, 0x1b, - 0xd3, 0xc6, 0xc6, 0xca, 0xa6, 0x1f, 0x3f, 0xa4, 0x5, 0x76, 0x80, 0x75, - 0x61, 0x69, 0x1b, 0x7a, 0x7b, 0x93, 0x96, 0x7b, 0x1f, 0x9c, 0x70, 0x70, - 0xa2, 0x69, 0x1b, 0x3d, 0x55, 0x49, 0x56, 0x73, 0x1f, 0xfb, 0x65, 0xfd, - 0x10, 0x23, 0xa, 0x8b, 0xe6, 0xf7, 0x36, 0xe6, 0xf7, 0x13, 0xe6, 0x12, - 0xf8, 0x64, 0xed, 0x3c, 0xeb, 0x13, 0xf0, 0x77, 0x16, 0xf7, 0xee, 0x6, - 0xf7, 0x17, 0xf4, 0xdc, 0xed, 0x1f, 0x8c, 0xb1, 0x77, 0xaf, 0x6a, 0xa1, - 0x6e, 0x9e, 0x18, 0x13, 0xe8, 0xc8, 0xab, 0xb0, 0xb1, 0xce, 0x1a, 0xc9, - 0x66, 0xd0, 0xfb, 0x1f, 0x1e, 0xfb, 0xc6, 0x36, 0xa, 0xdd, 0x74, 0xa, - 0x39, 0x6, 0xf7, 0x79, 0xf7, 0x91, 0x15, 0xa8, 0xf7, 0x13, 0x5, 0xf7, - 0x20, 0x6, 0xc8, 0xa3, 0x70, 0x71, 0x8c, 0x1f, 0x44, 0x23, 0x88, 0x71, - 0x1e, 0xfb, 0x43, 0xfb, 0x91, 0x15, 0xaa, 0xf7, 0x36, 0x5, 0xf6, 0x6, - 0x13, 0xf0, 0xb3, 0xf7, 0x0, 0x80, 0x4d, 0x4f, 0x38, 0x6e, 0x6d, 0x1f, - 0xe, 0x79, 0xe8, 0xf8, 0x1d, 0xe7, 0x1, 0xa9, 0xec, 0x3, 0xf8, 0x7a, - 0xf7, 0x1e, 0x15, 0x76, 0x65, 0x38, 0x61, 0x39, 0x1b, 0xfb, 0x0, 0x5b, - 0xcb, 0xdb, 0xf7, 0x41, 0xf7, 0x24, 0xd7, 0xe7, 0xc2, 0xbc, 0x77, 0x6f, - 0xb2, 0x1f, 0x76, 0x22, 0x5, 0xea, 0x6, 0xbc, 0xf7, 0x89, 0x7a, 0xa, - 0x83, 0x60, 0x5, 0x96, 0x80, 0x5c, 0xab, 0x34, 0x1b, 0xfb, 0x4d, 0xfb, - 0x39, 0xfb, 0x25, 0xfb, 0x59, 0xfb, 0x2, 0xc0, 0xfb, 0x12, 0xf7, 0x4c, - 0xb4, 0xf7, 0x16, 0x9d, 0xd1, 0xe7, 0x1f, 0xe, 0xfb, 0x4d, 0x76, 0xf7, - 0x56, 0xe5, 0xf8, 0x19, 0xe7, 0x8c, 0x77, 0x12, 0x8b, 0xee, 0x13, 0xe8, - 0xf7, 0x0, 0xfb, 0x46, 0x15, 0x71, 0xa7, 0xa0, 0x89, 0xa0, 0x1b, 0xc9, - 0xca, 0xb5, 0xd5, 0xa1, 0x84, 0xad, 0x64, 0x94, 0x1f, 0x8f, 0x98, 0x5, - 0xe8, 0xd7, 0xba, 0xb3, 0xd7, 0x1f, 0x60, 0xcf, 0x5, 0x72, 0x5b, 0x42, - 0x63, 0x37, 0x1b, 0xfb, 0x1d, 0x75, 0xed, 0xd7, 0xf7, 0x2b, 0xf7, 0x2e, - 0xcb, 0xe0, 0xc1, 0xba, 0x79, 0x70, 0xb0, 0x1f, 0x76, 0x24, 0x5, 0xeb, - 0x6, 0x13, 0xd8, 0xbc, 0xf7, 0x85, 0x7a, 0xa, 0x83, 0x60, 0x5, 0x13, - 0xe8, 0xa4, 0x6f, 0x58, 0x9c, 0x4e, 0x1b, 0xfb, 0x42, 0xfb, 0x4a, 0x25, - 0xfb, 0x84, 0xfb, 0x8, 0xd6, 0x2e, 0xf7, 0x1, 0x7a, 0x1f, 0x70, 0x2e, - 0x5, 0x8e, 0x95, 0x9e, 0x8e, 0x9b, 0x1b, 0x94, 0x95, 0x85, 0x80, 0x7f, - 0x7e, 0x81, 0x7c, 0x80, 0x7d, 0x8f, 0x95, 0x7c, 0x1f, 0xe, 0x3a, 0xa, - 0xf8, 0x78, 0xeb, 0x3, 0x55, 0x16, 0xf7, 0xa2, 0x6, 0xf7, 0x57, 0xf7, - 0x3d, 0xf4, 0xf7, 0x91, 0xf7, 0xc, 0x40, 0xdf, 0xfb, 0x27, 0x1f, 0xfb, - 0xbc, 0x36, 0xa, 0xdf, 0x74, 0xa, 0x38, 0x6, 0xf7, 0x48, 0x16, 0xda, - 0xf8, 0x10, 0x5, 0xf7, 0xb, 0x6, 0xea, 0xb9, 0x59, 0x46, 0xfb, 0x28, - 0x2d, 0xfb, 0x5, 0xfb, 0x1d, 0x1f, 0xe, 0x8b, 0xe6, 0xd6, 0xf7, 0x39, - 0x31, 0xe5, 0xf7, 0x20, 0xe6, 0x12, 0x13, 0xb0, 0x75, 0x16, 0xf8, 0xa4, - 0x6, 0xb5, 0xf7, 0x59, 0x66, 0xa, 0x73, 0x21, 0x5, 0xfb, 0x9a, 0x6, - 0xa9, 0xf7, 0x2a, 0x5, 0xf7, 0x10, 0x6, 0x13, 0xd0, 0x7b, 0x40, 0x56, - 0xa, 0xbc, 0xf7, 0x84, 0x4e, 0xa, 0x7c, 0x40, 0x5, 0xfb, 0xe, 0x6, - 0xa8, 0x97, 0xa, 0xf7, 0x9a, 0x6, 0x76, 0x25, 0x96, 0xa, 0xb3, 0xf7, - 0x55, 0x5, 0xfc, 0xa2, 0x4b, 0xa, 0xd1, 0x74, 0xa, 0x43, 0x6, 0xe, - 0x54, 0xa, 0xf7, 0x7a, 0x77, 0x12, 0x13, 0xb8, 0xf7, 0x99, 0xf8, 0xf3, - 0x15, 0xf7, 0xe4, 0xd5, 0x77, 0xf2, 0xfb, 0xd9, 0xfb, 0xa, 0x5, 0xfb, - 0xa6, 0xfd, 0x2e, 0x28, 0xa, 0x54, 0xa, 0xf7, 0x76, 0x77, 0x12, 0x13, - 0xb8, 0xf7, 0x73, 0xf8, 0xee, 0x15, 0xf7, 0x44, 0xf7, 0x4, 0xf7, 0x13, - 0xfb, 0x4, 0xcf, 0xae, 0xfb, 0x18, 0xf7, 0x23, 0x4e, 0xa, 0xfb, 0x58, - 0xfb, 0x22, 0x5, 0xfb, 0x52, 0xfd, 0x12, 0x28, 0xa, 0x54, 0xa, 0xd4, - 0xf7, 0xd, 0x12, 0x13, 0xb8, 0xf8, 0x34, 0xf9, 0x7, 0x92, 0xa, 0xa5, - 0xf7, 0xd, 0x4c, 0xa, 0xfb, 0x66, 0xfb, 0xd, 0x6d, 0xa, 0xa5, 0xf7, - 0xd, 0x65, 0xa, 0xfb, 0xac, 0xfd, 0x80, 0x28, 0xa, 0x8b, 0xe5, 0xf7, - 0x27, 0xe4, 0xa1, 0x8b, 0x1, 0xdc, 0xea, 0xf7, 0x14, 0xed, 0xbd, 0xeb, - 0x3, 0x75, 0x16, 0x33, 0xa, 0x2a, 0xa, 0xf7, 0x7f, 0xf8, 0xe4, 0x15, - 0xf7, 0xc0, 0x40, 0xb1, 0xc5, 0xfb, 0xa5, 0xf7, 0xb, 0x5, 0xe, 0x8b, - 0xe6, 0xf7, 0x30, 0xce, 0xf7, 0x31, 0xe6, 0x1, 0xf8, 0x86, 0xee, 0x3, - 0x70, 0x16, 0xf7, 0xa2, 0x6, 0xf7, 0x36, 0xf7, 0x54, 0xf3, 0xf7, 0x8f, - 0xf7, 0xd, 0x4c, 0xe1, 0xfb, 0x28, 0x1f, 0xfb, 0xbc, 0x36, 0xa, 0xde, - 0x6, 0x6a, 0xfb, 0x31, 0x5, 0x4d, 0x6, 0x7e, 0x48, 0x5, 0xc8, 0x6, - 0x6b, 0xfb, 0x30, 0x5, 0x38, 0x6, 0xf7, 0x48, 0x16, 0xac, 0xf7, 0x30, - 0x5, 0xf7, 0x12, 0x6, 0x99, 0xce, 0x5, 0xfb, 0x12, 0x6, 0xaa, 0xf7, - 0x31, 0x5, 0xf7, 0xc, 0x6, 0xec, 0xaa, 0x57, 0x44, 0xfb, 0x28, 0x39, - 0xfb, 0x1, 0xfb, 0x33, 0x1f, 0xe, 0x8b, 0xdd, 0xe9, 0xd3, 0xc1, 0xd3, - 0xf5, 0xdd, 0x1, 0xf8, 0x7b, 0xe4, 0x3, 0x77, 0xf7, 0x44, 0x15, 0xe7, - 0x6, 0x23, 0x91, 0xca, 0x43, 0xf7, 0x25, 0x1b, 0xb2, 0xf7, 0x5, 0x9e, - 0xc9, 0xe2, 0x1f, 0x61, 0xc8, 0x5, 0x77, 0x68, 0x47, 0x63, 0x3d, 0x1b, - 0x45, 0x5a, 0xa9, 0xcb, 0x7d, 0x1f, 0xf7, 0x32, 0x6, 0xb2, 0xd3, 0x5, - 0xfb, 0x5d, 0x6, 0x8c, 0x9b, 0x8f, 0xa3, 0x90, 0x99, 0x8, 0xf7, 0x6a, - 0x6, 0xb3, 0xd3, 0x5, 0xfb, 0x71, 0x6, 0xcd, 0xae, 0xc7, 0xb3, 0xdd, - 0x1b, 0xbe, 0xbe, 0x6f, 0x6a, 0x98, 0x1f, 0x7e, 0x48, 0x5, 0xe4, 0x6, - 0xb7, 0xf7, 0x66, 0x5, 0x31, 0x6, 0x81, 0x5c, 0x5, 0xaa, 0x6c, 0x59, - 0x9b, 0x5e, 0x1b, 0xfb, 0x10, 0x22, 0x40, 0xfb, 0x5, 0x55, 0x1f, 0x48, - 0x6, 0x63, 0x43, 0x5, 0xda, 0x6, 0x85, 0x71, 0x89, 0x79, 0x8a, 0x81, - 0x8, 0x54, 0x6, 0xe, 0x8b, 0xe6, 0xdf, 0xf7, 0x2f, 0xf7, 0x21, 0xe6, - 0x1, 0xd8, 0xec, 0xf7, 0x18, 0xed, 0xd5, 0xed, 0x3, 0x75, 0x16, 0xf7, - 0xc7, 0x6, 0x9f, 0xe6, 0x5, 0xfb, 0x17, 0x6, 0xaa, 0xf7, 0x28, 0x5, - 0xf7, 0x6, 0x6, 0x7e, 0x4b, 0x56, 0xa, 0xb9, 0xf7, 0x70, 0x4e, 0xa, - 0x7c, 0x4a, 0x65, 0xa, 0xa9, 0xf7, 0x21, 0x88, 0xa, 0x70, 0xfb, 0x12, - 0x56, 0xa, 0xb9, 0xf7, 0x6d, 0x5, 0xfc, 0xa2, 0x4b, 0xa, 0xda, 0x6, - 0x3b, 0x7d, 0xa, 0x3b, 0x6, 0xe, 0x79, 0xe8, 0xf5, 0xe9, 0xf7, 0x56, - 0xe5, 0x1, 0x9f, 0xee, 0x3, 0xf7, 0xa7, 0xf7, 0x49, 0x15, 0xf7, 0x32, - 0x6, 0x7c, 0x3f, 0x5, 0x78, 0x65, 0x56, 0x80, 0x58, 0x1b, 0x3a, 0x3f, - 0xb1, 0xeb, 0xf7, 0x33, 0xf7, 0xc, 0xf4, 0xf7, 0x9, 0xc9, 0xaa, 0x87, - 0x6d, 0xb9, 0x1f, 0x77, 0x2d, 0x96, 0xa, 0xba, 0xf7, 0x6e, 0x66, 0xa, - 0x82, 0x65, 0x5, 0xa1, 0x71, 0x62, 0x9b, 0x41, 0x1b, 0xfb, 0x38, 0xfb, - 0x50, 0xfb, 0x23, 0xfb, 0x64, 0xfb, 0x2b, 0xf7, 0x1, 0x3c, 0xf7, 0x1f, - 0xeb, 0xf7, 0x5, 0xb6, 0x94, 0xa3, 0x1f, 0xa7, 0xf7, 0x27, 0x5, 0xba, - 0x55, 0xa, 0xfb, 0xc1, 0x6, 0xe, 0x79, 0xe2, 0x8b, 0xee, 0xa6, 0xe3, - 0x70, 0xcd, 0xf7, 0x70, 0xcd, 0x12, 0x8b, 0xee, 0x13, 0xec, 0xf7, 0x93, - 0xf7, 0x3c, 0x15, 0xf7, 0x32, 0x6, 0x7c, 0x44, 0x5, 0x7a, 0x67, 0x59, - 0x80, 0x5a, 0x1b, 0x37, 0x3b, 0xac, 0xe8, 0xf7, 0x29, 0xf7, 0xc, 0xf7, - 0x4, 0xf7, 0x9, 0xc9, 0xaa, 0x78, 0x6f, 0xb9, 0x1f, 0x13, 0xdc, 0x77, - 0x34, 0x96, 0xa, 0xba, 0xf7, 0x70, 0x66, 0xa, 0x82, 0x60, 0x5, 0xa2, - 0x67, 0x6c, 0x9f, 0x41, 0x1b, 0xfb, 0x42, 0xfb, 0x46, 0xfb, 0x2a, 0xfb, - 0x57, 0xfb, 0x21, 0xf7, 0x1, 0x41, 0xf7, 0x1f, 0xeb, 0xf7, 0x5, 0xb3, - 0x94, 0xa3, 0x1f, 0xa7, 0xf7, 0x1d, 0x5, 0xba, 0x6, 0x9f, 0xe3, 0x5, - 0xfb, 0xc1, 0x6, 0xab, 0xf7, 0xf4, 0x48, 0xa, 0x8b, 0xe6, 0xf7, 0x23, - 0xe6, 0xf7, 0x26, 0xe6, 0x1, 0xc4, 0xe9, 0xf7, 0x72, 0xea, 0x3, 0x64, - 0x16, 0xf7, 0x90, 0x34, 0xa, 0x3a, 0x6, 0xa8, 0xf7, 0x23, 0x5, 0xf7, - 0x72, 0x6, 0x6e, 0xfb, 0x23, 0x5, 0x3b, 0x6, 0x79, 0x30, 0x5, 0xf7, - 0x8f, 0x34, 0xa, 0x3e, 0x6, 0xd7, 0xf8, 0x10, 0x5, 0xd9, 0x42, 0xa, - 0xfb, 0x8f, 0x36, 0xa, 0xdb, 0x6, 0x6d, 0xfb, 0x26, 0x5, 0xfb, 0x72, - 0x6, 0xa9, 0xf7, 0x26, 0x5, 0xdc, 0x6, 0x9d, 0xe6, 0x5, 0xfb, 0x90, - 0x36, 0xa, 0xd8, 0x6, 0x3f, 0x7d, 0xa, 0x3d, 0x6, 0xe, 0x3a, 0xa, - 0xf7, 0x67, 0xf0, 0x3, 0x9c, 0x16, 0xf8, 0x54, 0x6, 0x9f, 0xe6, 0x5, - 0xfb, 0x41, 0x6, 0xdb, 0xf8, 0x10, 0x5, 0xf7, 0x3f, 0x34, 0xa, 0xfc, - 0x51, 0x36, 0xa, 0xf7, 0x41, 0x6, 0x3b, 0xfc, 0x10, 0x43, 0xa, 0x79, - 0xe6, 0xf8, 0x22, 0xe6, 0x1, 0x41, 0x79, 0x15, 0xf7, 0xaa, 0x6, 0x9f, - 0xe6, 0x5, 0x2e, 0x6, 0xdb, 0xf8, 0x22, 0x5, 0xe6, 0x34, 0xa, 0xfb, - 0xa7, 0x36, 0xa, 0xde, 0x6, 0x3b, 0xfc, 0x22, 0x5, 0x36, 0x6, 0xf7, - 0xd3, 0x72, 0x15, 0x76, 0xa2, 0xa4, 0x5e, 0xe9, 0x1b, 0xf7, 0x1e, 0x87, - 0x8c, 0xa, 0xac, 0x5b, 0xa, 0xfb, 0xa6, 0x6, 0x79, 0x2f, 0x5, 0xf7, - 0x25, 0x6, 0x53, 0xfb, 0xa8, 0x5, 0x40, 0x7c, 0x84, 0x5c, 0x5e, 0x1b, - 0x73, 0x83, 0x97, 0x9e, 0x9d, 0x91, 0xa3, 0x91, 0xa4, 0x1f, 0xa1, 0xec, - 0x4e, 0xa, 0xe, 0x68, 0xa, 0xf7, 0x90, 0xf8, 0xf3, 0x15, 0xf7, 0xde, - 0xd5, 0x78, 0xf2, 0xfb, 0xd3, 0xfb, 0xa, 0x5, 0xfb, 0x77, 0xfd, 0x2e, - 0x15, 0x2b, 0xa, 0xe, 0x75, 0xa, 0xf7, 0x76, 0x77, 0x62, 0xa, 0xf7, - 0x6b, 0xf8, 0xf0, 0x15, 0xf7, 0x49, 0xf7, 0x2, 0xf7, 0xa, 0xfb, 0x2, - 0xcf, 0xae, 0xfb, 0x16, 0xf7, 0x21, 0x66, 0xa, 0xfb, 0x56, 0xfb, 0x20, - 0x5, 0xfb, 0x24, 0xfd, 0x14, 0x15, 0x2b, 0xa, 0xe, 0x75, 0xa, 0xd2, - 0xf7, 0xf, 0x62, 0xa, 0xf8, 0x34, 0xf9, 0x5, 0x4a, 0xa, 0xfb, 0x69, - 0xfb, 0xf, 0x4a, 0xa, 0xfb, 0x84, 0xfd, 0x80, 0x15, 0x2b, 0xa, 0xe, - 0x8b, 0xe3, 0xf8, 0x2, 0xe3, 0xde, 0xf7, 0xf, 0x62, 0xa, 0xf7, 0xca, - 0xf9, 0x5, 0x4a, 0xa, 0xfb, 0xd4, 0xfd, 0x80, 0x15, 0xf8, 0x55, 0x6, - 0x9e, 0xe3, 0x5, 0xfb, 0x40, 0x6, 0xdb, 0xf8, 0x2, 0x5, 0xf7, 0x3e, - 0x6, 0x9e, 0xe3, 0x5, 0xfc, 0x51, 0x6, 0x78, 0x33, 0x5, 0xf7, 0x41, - 0x6, 0x3b, 0xfc, 0x2, 0x43, 0xa, 0x68, 0xa, 0x9c, 0x16, 0x2b, 0xa, - 0xf7, 0x56, 0xf8, 0xe6, 0x15, 0xf7, 0xc5, 0x3e, 0xb3, 0xc5, 0xfb, 0xac, - 0xf7, 0xb, 0x5, 0xe, 0x79, 0xe5, 0xf8, 0x22, 0xe7, 0x1, 0x9a, 0xed, - 0xf7, 0x73, 0xe8, 0x3, 0x6d, 0xbb, 0x15, 0x76, 0xa2, 0xf7, 0xa, 0x5e, - 0xe9, 0x1b, 0xf7, 0x1e, 0xc8, 0x8c, 0xa, 0xf7, 0x11, 0x5b, 0xa, 0xfc, - 0x29, 0x6, 0x79, 0x2f, 0x5, 0xf7, 0x4c, 0x6, 0x53, 0xfb, 0xa8, 0x5, - 0x40, 0x7c, 0x67, 0x5c, 0x3a, 0x1b, 0x45, 0x50, 0xa1, 0xd7, 0x9b, 0x1f, - 0xa1, 0xec, 0x4e, 0xa, 0xe, 0x3a, 0xa, 0xcf, 0xed, 0xf7, 0x8e, 0xf7, - 0x17, 0x3, 0x68, 0x16, 0xf7, 0x9d, 0x34, 0xa, 0x38, 0x6, 0xa0, 0xf0, - 0xd1, 0xc0, 0x9f, 0x70, 0xa1, 0x66, 0x9a, 0x71, 0x19, 0xa6, 0x56, 0xa6, - 0x58, 0x9b, 0x58, 0x8, 0xf7, 0x34, 0x34, 0xa, 0x20, 0x6, 0x7b, 0xb7, - 0x76, 0xa6, 0x75, 0xb5, 0x7e, 0xa8, 0x66, 0xc0, 0x80, 0x9c, 0xf7, 0x67, - 0xf7, 0x3c, 0x18, 0xd0, 0x34, 0xa, 0xfb, 0x87, 0x6e, 0xa, 0xb7, 0x6, - 0xfb, 0x61, 0xfb, 0x36, 0xae, 0xf7, 0x36, 0x5, 0xdd, 0x34, 0xa, 0xfb, - 0x9c, 0x6e, 0xa, 0xdf, 0x74, 0xa, 0x37, 0x6, 0xe, 0x3a, 0xa, 0xf7, - 0xf, 0xed, 0x3, 0x8d, 0x16, 0xf8, 0xb4, 0x6, 0xbf, 0xf7, 0x92, 0x5, - 0x27, 0x6, 0x6b, 0xfb, 0x37, 0x5, 0xfb, 0x89, 0x6, 0xdd, 0xf8, 0x10, - 0x5, 0xf7, 0x14, 0x34, 0xa, 0xfb, 0xdd, 0x36, 0xa, 0xf0, 0x6, 0x3b, - 0x7d, 0xa, 0x26, 0x6, 0xe, 0x3a, 0xa, 0xf7, 0xe, 0xed, 0x3, 0x8d, - 0x16, 0xf8, 0xb1, 0x6, 0xc2, 0xf7, 0x9c, 0x7b, 0xa, 0x66, 0xfb, 0x41, - 0x5, 0xfb, 0x86, 0x6, 0xae, 0xf7, 0x37, 0xf7, 0x34, 0xb4, 0x9a, 0xc9, - 0xfb, 0x36, 0x63, 0xac, 0xf7, 0x2e, 0x5, 0xf7, 0x14, 0x34, 0xa, 0xfb, - 0xdc, 0x36, 0xa, 0xf0, 0x6, 0x66, 0xfb, 0x47, 0x30, 0x74, 0x7f, 0x4b, - 0xe4, 0xa2, 0x6e, 0xfb, 0x1d, 0x5, 0x26, 0x6, 0xe, 0x3a, 0xa, 0x4e, - 0x16, 0xf7, 0x77, 0x34, 0xa, 0x3e, 0x6, 0xda, 0xf7, 0xce, 0xc5, 0xfb, - 0xac, 0x5, 0xc7, 0x6, 0xf7, 0x2b, 0xf7, 0xa4, 0x5b, 0xfb, 0xc6, 0x5, - 0x41, 0x6, 0x7a, 0x30, 0x5, 0xf7, 0x71, 0x42, 0xa, 0x55, 0x6, 0xc9, - 0xf8, 0x10, 0x5, 0xdb, 0x42, 0xa, 0xfb, 0x61, 0x6, 0xfb, 0x32, 0xfb, - 0xb6, 0x5b, 0xf7, 0xb6, 0x5, 0xfb, 0x5f, 0x4b, 0xa, 0xd7, 0x6, 0x2e, - 0x7d, 0xa, 0x53, 0x6, 0xe, 0x7f, 0xe8, 0xf8, 0x18, 0xe8, 0x1, 0x4f, - 0x7f, 0x15, 0xf7, 0xa4, 0x94, 0xa, 0x28, 0x6, 0xc9, 0xf7, 0xd1, 0xf7, - 0x4a, 0xfc, 0x2e, 0x5, 0xe7, 0x6, 0xeb, 0xf8, 0x75, 0x6c, 0xa, 0xea, - 0x6, 0x4e, 0xfb, 0xd0, 0xfb, 0x3e, 0xf8, 0x2d, 0x7e, 0xa, 0xfc, 0x18, - 0x5, 0x3c, 0x6, 0xe, 0x7f, 0xe7, 0xf8, 0x13, 0xe8, 0xc1, 0xe0, 0x73, - 0xdf, 0x8f, 0x77, 0x12, 0x13, 0xd0, 0x4f, 0x7f, 0x15, 0xf7, 0xa5, 0x5b, - 0xa, 0x27, 0x6, 0xca, 0xf7, 0xcd, 0xf7, 0x4c, 0xfc, 0x29, 0x5, 0xe5, - 0x6, 0xea, 0xf8, 0x6f, 0x6c, 0xa, 0xeb, 0x6, 0x4e, 0xfb, 0xc6, 0xfb, - 0x3e, 0xf8, 0x23, 0x7e, 0xa, 0xfc, 0x13, 0x5, 0x3b, 0x6, 0xf7, 0x62, - 0xf8, 0xbe, 0x15, 0xdb, 0x72, 0x5, 0xae, 0xa0, 0x9e, 0xa6, 0xa7, 0x1b, - 0xa6, 0xa0, 0x79, 0x7b, 0xa3, 0x1f, 0x13, 0xe8, 0x7d, 0xa0, 0xa1, 0x7e, - 0xa8, 0x1b, 0xd6, 0xca, 0xc7, 0xcb, 0xa6, 0x1f, 0x3c, 0xa4, 0x5, 0x76, - 0x7f, 0x74, 0x60, 0x67, 0x1b, 0x77, 0x79, 0x95, 0x98, 0x78, 0x1f, 0x13, - 0xd0, 0x9c, 0x72, 0x70, 0x9f, 0x6a, 0x1b, 0x39, 0x52, 0x48, 0x55, 0x71, - 0x1f, 0xe, 0x79, 0xe7, 0xf8, 0x1f, 0xe9, 0x1, 0xa2, 0xf1, 0xf7, 0xff, - 0xec, 0x3, 0xa2, 0xf7, 0x57, 0x15, 0xfb, 0x24, 0xf3, 0x46, 0xf7, 0x6, - 0xf7, 0x4f, 0xf7, 0x31, 0xf7, 0xe, 0xf7, 0x8d, 0xf7, 0xb, 0x45, 0xe6, - 0xfb, 0x2d, 0xfb, 0x5d, 0xfb, 0x1e, 0xfb, 0x49, 0xfb, 0x4f, 0x1e, 0xf1, - 0x9a, 0x15, 0xf7, 0xc, 0xd4, 0xf7, 0x1f, 0xf7, 0x24, 0xf7, 0x0, 0xb1, - 0x4d, 0x46, 0x23, 0x3e, 0xfb, 0x34, 0xfb, 0x2c, 0x2f, 0x61, 0xc9, 0xd5, - 0x1e, 0xe, 0x8b, 0xe6, 0x30, 0xf7, 0x3d, 0xa4, 0xf7, 0x4f, 0x92, 0xf7, - 0x42, 0x30, 0xe6, 0x12, 0x66, 0xea, 0x13, 0xac, 0xf7, 0xe2, 0xe6, 0x15, - 0xaa, 0xf7, 0x2b, 0x5, 0xaf, 0x6, 0x81, 0x58, 0x5, 0xd4, 0x6, 0xb1, - 0xf7, 0x4f, 0x5, 0x41, 0x6, 0x83, 0x5d, 0x5, 0x65, 0x6, 0xa7, 0xf7, - 0x1f, 0x5, 0xf7, 0x1a, 0x6, 0x13, 0xb4, 0x7b, 0x38, 0x5, 0xd5, 0x6, - 0xae, 0xf7, 0x42, 0x5, 0xfc, 0x10, 0x6, 0xfb, 0x1e, 0xfb, 0x30, 0xfb, - 0xf, 0xfb, 0x7a, 0xfb, 0x1c, 0xe2, 0x42, 0xe4, 0x1f, 0xf8, 0x16, 0x6, - 0x13, 0x74, 0xae, 0xf7, 0x3d, 0x5, 0x40, 0x6, 0x13, 0xac, 0x7a, 0x3d, - 0x5, 0xfc, 0x2e, 0xf7, 0x25, 0x15, 0xf7, 0x8, 0xed, 0xf7, 0xb, 0xf6, - 0x99, 0xb2, 0x8a, 0x66, 0x84, 0x1e, 0x50, 0xfb, 0xb9, 0x5, 0x5c, 0x82, - 0x67, 0x89, 0x7a, 0x1b, 0x30, 0x64, 0xc3, 0xe4, 0x1f, 0xe, 0x77, 0xa, - 0xf7, 0x71, 0x77, 0x58, 0xa, 0xf7, 0x8d, 0xf8, 0xf0, 0x15, 0xf7, 0xe4, - 0xd8, 0x76, 0xf2, 0xfb, 0xd7, 0xfb, 0xd, 0x5, 0xfb, 0x72, 0xfc, 0x61, - 0x24, 0xa, 0x77, 0xa, 0xf7, 0x6d, 0x77, 0x58, 0xa, 0xf7, 0x3f, 0xf9, - 0x13, 0x15, 0xc0, 0x66, 0xf7, 0x46, 0xf3, 0xf7, 0xa, 0x22, 0xcc, 0xaf, - 0xfb, 0x14, 0xf7, 0x23, 0x5, 0x2c, 0x6, 0xfb, 0xeb, 0xfc, 0xd6, 0x24, - 0xa, 0x77, 0xa, 0xc9, 0xf7, 0xf, 0x58, 0xa, 0xf8, 0x38, 0xf9, 0x5, - 0x5a, 0xa, 0xa4, 0xf7, 0xf, 0x4c, 0xa, 0xfb, 0x65, 0xfb, 0xf, 0x5a, - 0xa, 0xa5, 0xf7, 0xf, 0x5, 0xfb, 0x4, 0x6, 0xfb, 0x88, 0xfc, 0xb6, - 0x24, 0xa, 0x79, 0xe4, 0xf8, 0x21, 0xe6, 0x1, 0x9e, 0xf1, 0xf7, 0xee, - 0xed, 0x3, 0xf7, 0x81, 0xf9, 0x3d, 0x15, 0xf7, 0xc2, 0x40, 0xb2, 0xc5, - 0xfb, 0xa7, 0xf7, 0xc, 0x5, 0xfb, 0xb0, 0xfc, 0xda, 0x24, 0xa, 0x7c, - 0xe6, 0x3e, 0x76, 0xf8, 0x93, 0xe6, 0x8f, 0x77, 0x12, 0x97, 0xf2, 0xf8, - 0x5, 0xeb, 0x13, 0x6c, 0x7f, 0xa7, 0x15, 0xbf, 0x59, 0xc1, 0xbf, 0x5, - 0x13, 0x9c, 0x6d, 0xb5, 0xbe, 0x7c, 0xbf, 0x1b, 0xf7, 0x62, 0xf7, 0x1c, - 0xf7, 0x2c, 0xf7, 0x7b, 0x8a, 0x1f, 0xb2, 0x81, 0xb0, 0x7a, 0xac, 0x1e, - 0xc6, 0xc6, 0x57, 0xbb, 0x56, 0x58, 0x5, 0x13, 0xac, 0xa9, 0x68, 0x59, - 0x9c, 0x4c, 0x1b, 0xfb, 0x92, 0x2e, 0xfb, 0x6e, 0xfb, 0x2f, 0x5b, 0x97, - 0x62, 0x9e, 0x6a, 0x1f, 0xdd, 0xda, 0x15, 0x83, 0x9e, 0x88, 0xa5, 0x8c, - 0xa5, 0x8, 0xf7, 0x3, 0xe4, 0xf7, 0x23, 0xf7, 0x1b, 0xb3, 0xaa, 0x80, - 0x7a, 0xa1, 0x1e, 0xfb, 0x9b, 0xfb, 0xfa, 0x15, 0xf7, 0xc4, 0xf7, 0xbd, - 0x5, 0x93, 0x78, 0x8e, 0x74, 0x74, 0x1a, 0x27, 0x41, 0xfb, 0x33, 0xfb, - 0x2d, 0x67, 0x6c, 0x95, 0x9c, 0x76, 0x1e, 0xe, 0x77, 0xa, 0xbb, 0xdf, - 0xcb, 0x77, 0x58, 0xa, 0xf7, 0x2c, 0xf9, 0xf, 0x15, 0xd9, 0x71, 0xa0, - 0xaf, 0x9d, 0xa6, 0xa6, 0x8a, 0x19, 0xa4, 0x8a, 0x9e, 0x80, 0x9b, 0x80, - 0x8, 0x7a, 0xa3, 0xa0, 0x77, 0xaf, 0x1b, 0xd5, 0xc6, 0xc6, 0xcb, 0xa6, - 0x1f, 0x3f, 0xa4, 0x5, 0x76, 0x80, 0x73, 0x60, 0x69, 0x1b, 0x74, 0x7a, - 0x9a, 0x9a, 0x76, 0x1f, 0x9a, 0x77, 0x73, 0x9a, 0x68, 0x1b, 0x3c, 0x53, - 0x48, 0x56, 0x72, 0x1f, 0xfb, 0x19, 0xfc, 0x45, 0x24, 0xa, 0x8b, 0xe7, - 0xe5, 0xe6, 0xf7, 0x59, 0xe7, 0x1, 0xf8, 0x7d, 0xed, 0x3, 0x84, 0x16, - 0xf7, 0xca, 0x5b, 0xa, 0xfb, 0x15, 0x46, 0xa, 0xf7, 0x11, 0x6, 0xf7, - 0x3b, 0xdf, 0xe6, 0xf7, 0x16, 0x1f, 0xf3, 0x8a, 0x3a, 0xc2, 0xfb, 0xa, - 0x1b, 0xfb, 0xa8, 0x6, 0x78, 0x2f, 0x5, 0xde, 0x6, 0x3b, 0xfc, 0xe, - 0x5, 0x38, 0x6, 0xf7, 0x6f, 0xf7, 0x49, 0x15, 0xb3, 0xf7, 0x59, 0x5, - 0xeb, 0x6, 0xc5, 0xcb, 0x73, 0x51, 0x20, 0x2b, 0x83, 0x3d, 0x1f, 0xe, - 0xfb, 0x9, 0x76, 0xc1, 0xf7, 0x40, 0xf8, 0x11, 0xe6, 0x1, 0xba, 0xec, - 0xf7, 0xfd, 0xe9, 0x3, 0xd7, 0x45, 0x15, 0xa8, 0x47, 0x5, 0xab, 0xcb, - 0xa8, 0xa1, 0xaf, 0x1b, 0xa7, 0xa1, 0x7e, 0x7e, 0xa2, 0x1f, 0x7f, 0xa1, - 0xa1, 0x80, 0xa7, 0x1b, 0xc3, 0xac, 0xa6, 0xb8, 0xc3, 0x1f, 0x5f, 0xca, - 0x5, 0x67, 0x60, 0x7c, 0x83, 0x78, 0x1b, 0x73, 0x76, 0x9b, 0xa2, 0x6f, - 0x1f, 0xf7, 0x3f, 0xb5, 0xed, 0xf7, 0x28, 0xf7, 0x27, 0x1a, 0xeb, 0x5e, - 0xf7, 0x16, 0xfb, 0x3d, 0xfb, 0x37, 0xfb, 0x43, 0xfb, 0x11, 0xfb, 0x6c, - 0xfb, 0x7, 0xbd, 0x48, 0xd4, 0x73, 0x1e, 0x69, 0x62, 0x5, 0x93, 0xf7, - 0x95, 0x15, 0xf7, 0x3b, 0xf7, 0x22, 0xd4, 0xdb, 0xec, 0xb5, 0x40, 0x3a, - 0xfb, 0x13, 0xfb, 0x1c, 0x29, 0x37, 0x47, 0x42, 0xb0, 0xf3, 0x1e, 0xe, - 0x8b, 0xe7, 0xf7, 0xe, 0xe7, 0xf7, 0x38, 0xe7, 0x1, 0xf5, 0xed, 0xf7, - 0xb8, 0xee, 0x3, 0x8e, 0x16, 0xf7, 0x98, 0x5b, 0xa, 0x3d, 0x6, 0xa4, - 0xf7, 0xe, 0x5, 0xdd, 0x6, 0xd2, 0xfb, 0x2, 0x9d, 0x6a, 0x9b, 0x67, - 0x95, 0x68, 0x19, 0xf7, 0x22, 0x5b, 0xa, 0x3c, 0x6, 0x2e, 0x97, 0xa, - 0xf7, 0xa, 0x9d, 0xc9, 0xdf, 0xe6, 0x1a, 0xe9, 0x3b, 0xb6, 0x26, 0x1e, - 0xfb, 0xb5, 0x6, 0x78, 0x2f, 0x8a, 0xa, 0x3b, 0xfc, 0xe, 0x5, 0x37, - 0x6, 0xf7, 0x77, 0xf7, 0x6a, 0x15, 0xad, 0xf7, 0x38, 0x5, 0xf7, 0x18, - 0x6, 0xa2, 0xc5, 0x83, 0x5b, 0x2c, 0x25, 0x7e, 0x59, 0x1f, 0xe, 0x75, - 0xe9, 0xf8, 0x34, 0xe9, 0x12, 0xeb, 0xf6, 0xf7, 0x81, 0xf4, 0x13, 0xe0, - 0x82, 0x75, 0x15, 0xf2, 0x6, 0x95, 0xba, 0x5, 0x80, 0x9a, 0xdb, 0x67, - 0xd2, 0x1b, 0x13, 0x70, 0xf7, 0x41, 0xf1, 0xc3, 0xf7, 0x1e, 0xf7, 0x3, - 0xfb, 0x1c, 0x99, 0x33, 0x9d, 0x1f, 0x4c, 0x98, 0x54, 0xac, 0xb4, 0x1a, - 0xc7, 0xca, 0xa5, 0xee, 0xb6, 0xb1, 0x76, 0x7b, 0xac, 0x1e, 0x13, 0xe0, - 0x79, 0x33, 0x5, 0xf2, 0x6, 0xb8, 0xf7, 0x6f, 0x5, 0x24, 0x6, 0x85, - 0x69, 0x5, 0x9b, 0x69, 0x55, 0x9d, 0x5f, 0x1b, 0xfb, 0x45, 0x2c, 0x41, - 0xfb, 0xc, 0x34, 0xf0, 0x4d, 0xea, 0x81, 0x1f, 0xc1, 0x84, 0xe9, 0x81, - 0x55, 0x1a, 0x58, 0x4c, 0x68, 0xfb, 0x0, 0x54, 0x5b, 0xa5, 0xa4, 0x61, - 0x1e, 0x9a, 0xcf, 0x5, 0x24, 0x6, 0xe, 0x75, 0xe6, 0xf8, 0x2b, 0xe6, - 0x1, 0xe4, 0xef, 0xf7, 0x6e, 0xee, 0x3, 0x82, 0x75, 0x15, 0xec, 0x6, - 0x95, 0xb9, 0x5, 0x79, 0x9f, 0xbc, 0x6f, 0xd8, 0x1b, 0xf7, 0x3a, 0xeb, - 0xcb, 0xf7, 0x3, 0xf7, 0x2, 0x41, 0xa5, 0x31, 0x98, 0x1f, 0x62, 0x90, - 0xfb, 0x4, 0x95, 0xcd, 0x1a, 0xb5, 0xcd, 0xbe, 0xe1, 0xb2, 0xae, 0x75, - 0x7c, 0xaa, 0x1e, 0x7c, 0x36, 0x96, 0xa, 0xb5, 0xf7, 0x69, 0x7a, 0xa, - 0x84, 0x69, 0x5, 0x9a, 0x6b, 0x66, 0x9e, 0x61, 0x1b, 0xfb, 0x36, 0x22, - 0x3c, 0xfb, 0x13, 0x31, 0xdb, 0x65, 0xdb, 0x82, 0x1f, 0xbf, 0x86, 0xf5, - 0x83, 0x51, 0x1a, 0x59, 0x45, 0x69, 0x35, 0x56, 0x64, 0x99, 0xb0, 0x62, - 0x1e, 0x97, 0xcb, 0x7a, 0xa, 0xf7, 0xb1, 0xf8, 0x3c, 0x48, 0xa, 0xa1, - 0xf7, 0x57, 0xf7, 0xaa, 0xe2, 0x1, 0xea, 0xf6, 0xf7, 0x7d, 0xf4, 0x3, - 0xf7, 0x42, 0x2f, 0x15, 0x8e, 0x96, 0xa0, 0x8f, 0x9e, 0x1b, 0x94, 0x96, - 0x84, 0x7f, 0x7e, 0x7c, 0x80, 0x7b, 0x7f, 0x7b, 0x8f, 0x96, 0x7a, 0x1f, - 0x59, 0x4c, 0x5, 0x6f, 0xab, 0xa2, 0x89, 0xa2, 0x1b, 0xd1, 0xd1, 0xb9, - 0xdc, 0xa4, 0x83, 0xb0, 0x60, 0x95, 0x1f, 0x95, 0xa8, 0x5, 0xf7, 0x30, - 0x93, 0xe3, 0xc6, 0xee, 0x1a, 0xf4, 0x3c, 0xa4, 0x2b, 0x97, 0x1e, 0x5f, - 0x90, 0xfb, 0xb, 0x94, 0xca, 0x1a, 0xb4, 0xd3, 0xba, 0xe6, 0xb4, 0xb1, - 0x76, 0x7d, 0xac, 0x1e, 0x7a, 0x3b, 0x5, 0xf2, 0x6, 0xb9, 0xf7, 0x5e, - 0x5, 0x25, 0x6, 0x84, 0x6b, 0x5, 0x99, 0x68, 0x64, 0x9d, 0x5e, 0x1b, - 0xfb, 0x40, 0xfb, 0x6, 0x40, 0xfb, 0xc, 0x35, 0xe0, 0x67, 0xe1, 0x82, - 0x1f, 0xc2, 0x86, 0xf7, 0x6, 0x83, 0x54, 0x1a, 0x5b, 0x40, 0x6b, 0x2f, - 0x53, 0x61, 0x98, 0xae, 0x60, 0x1e, 0x97, 0xc8, 0x5, 0x25, 0x6, 0x5d, - 0xfb, 0x58, 0x5, 0xf2, 0x6, 0x96, 0xb6, 0x9c, 0x7e, 0xad, 0x78, 0xc0, - 0x83, 0x19, 0xe, 0x3a, 0xa, 0xc6, 0x16, 0xf7, 0xf3, 0x34, 0xa, 0xfb, - 0x12, 0x6, 0xd9, 0xf8, 0x10, 0x5, 0xf7, 0x14, 0x6, 0x75, 0xfb, 0x5, - 0x56, 0xa, 0xb4, 0xf7, 0x60, 0x5, 0xfc, 0xbb, 0x6, 0x62, 0xfb, 0x60, - 0x96, 0xa, 0xa3, 0xf7, 0x5, 0x5, 0xf7, 0x15, 0x6, 0x3d, 0x7d, 0xa, - 0xfb, 0x15, 0x6, 0xe, 0x8b, 0xe6, 0xb4, 0xe5, 0xf7, 0x9, 0xe5, 0xb5, - 0xe6, 0x1, 0xf7, 0x26, 0xe0, 0xf7, 0xa0, 0xe1, 0x3, 0x99, 0x16, 0xf7, - 0xd4, 0x6, 0x9c, 0xe6, 0x5, 0xfb, 0xc, 0x6, 0x92, 0xb4, 0x5, 0xf7, - 0x9, 0x6, 0xf7, 0x14, 0xf1, 0xaf, 0xf7, 0x28, 0xe6, 0x45, 0xa1, 0x36, - 0x1f, 0xfb, 0x1e, 0x6, 0x92, 0xb5, 0x5, 0xf7, 0xf, 0x6, 0x9b, 0xe6, - 0x5, 0xfb, 0xd4, 0x6, 0x7a, 0x30, 0x5, 0xf7, 0x6, 0x6, 0x46, 0x7d, - 0xa, 0xfb, 0x7, 0x6, 0xf7, 0x73, 0xf7, 0x17, 0x15, 0xa1, 0xf7, 0x9, - 0x5, 0xf7, 0x10, 0x6, 0xaa, 0xcf, 0x8a, 0x60, 0x3c, 0x38, 0x91, 0x6c, - 0x1f, 0xe, 0x79, 0xe7, 0xf8, 0x20, 0xe7, 0x1, 0xd6, 0xea, 0xf7, 0x8a, - 0xea, 0x3, 0x84, 0xf8, 0x6a, 0x15, 0xdd, 0x6, 0x54, 0xfb, 0xa3, 0x5, - 0x87, 0x77, 0x88, 0x79, 0x7a, 0x1a, 0xfb, 0x1, 0x8c, 0xc2, 0x56, 0xf7, - 0x12, 0x1b, 0xf7, 0x15, 0xf1, 0xc3, 0xf7, 0x2e, 0xab, 0x1f, 0xc0, 0xf7, - 0xaa, 0x5c, 0xa, 0x9d, 0xe7, 0x5, 0xfb, 0xa0, 0x6, 0x78, 0x2f, 0x5, - 0xeb, 0x6, 0x57, 0xfb, 0x9b, 0x5, 0x35, 0x7a, 0x6a, 0x5c, 0x25, 0x1b, - 0x35, 0x7a, 0xaf, 0xb4, 0x8a, 0x1f, 0x98, 0x8e, 0x98, 0x8d, 0x98, 0x1e, - 0xc4, 0xf7, 0xac, 0x5, 0xe9, 0x5b, 0xa, 0xfb, 0xa4, 0x6, 0xe, 0x79, - 0xa, 0xf7, 0x7e, 0x77, 0x59, 0xa, 0xf7, 0x61, 0xf8, 0xf0, 0x15, 0xf7, - 0xdc, 0xd7, 0x77, 0xf3, 0xfb, 0xd0, 0xfb, 0xd, 0x8f, 0xa, 0xfb, 0x5f, - 0x25, 0xa, 0xe, 0x79, 0xa, 0xf7, 0x7a, 0x77, 0x59, 0xa, 0xf7, 0x3a, - 0xf8, 0xed, 0x15, 0xf7, 0x41, 0xf5, 0xf7, 0x11, 0x21, 0xcd, 0xaf, 0xfb, - 0x15, 0xf7, 0x23, 0x5, 0x2c, 0x6, 0xfb, 0x55, 0xfb, 0x22, 0x5, 0x31, - 0xfb, 0x46, 0x25, 0xa, 0xe, 0x79, 0xa, 0xd6, 0xf7, 0xf, 0x59, 0xa, - 0xf7, 0xf8, 0xf9, 0x5, 0x15, 0xf7, 0x1, 0x6, 0xa5, 0xf7, 0xf, 0x86, - 0xa, 0xfb, 0x62, 0xfb, 0xf, 0x15, 0xf7, 0x2, 0x6, 0xa6, 0xf7, 0xf, - 0x86, 0xa, 0xfb, 0x47, 0xfb, 0xb4, 0x25, 0xa, 0xe, 0x79, 0xa, 0x59, - 0xa, 0xa2, 0xf8, 0x60, 0x25, 0xa, 0xf7, 0x1a, 0xf7, 0x17, 0x15, 0xf7, - 0xbb, 0x3e, 0xb0, 0xc5, 0xfb, 0xa0, 0xf7, 0xe, 0x5, 0xe, 0xf8, 0x6b, - 0xe6, 0x1, 0xf7, 0x2b, 0xec, 0xf7, 0x55, 0xe9, 0x3, 0xf7, 0x2b, 0x89, - 0x15, 0xec, 0x6, 0xf7, 0xb3, 0xf8, 0x6d, 0x5, 0xd1, 0x34, 0xa, 0xfb, - 0x96, 0x36, 0xa, 0xe9, 0x6, 0xfb, 0x6a, 0xfc, 0x0, 0x40, 0xf8, 0x0, - 0x5, 0xdc, 0x34, 0xa, 0xfb, 0x95, 0x36, 0xa, 0xd8, 0x6, 0xe, 0xa0, - 0x76, 0xf8, 0x5e, 0x77, 0xac, 0xe6, 0x1, 0x93, 0xed, 0x3, 0x84, 0x16, - 0xdd, 0x6, 0xf7, 0x49, 0xf7, 0xc6, 0xc3, 0xfb, 0xc6, 0x5, 0xdd, 0x6, - 0xf7, 0x39, 0xf8, 0x6b, 0x5, 0xbc, 0x34, 0xa, 0xfb, 0x82, 0x36, 0xa, - 0xec, 0x6, 0x2e, 0xfb, 0xab, 0x59, 0xf7, 0x9e, 0x5, 0x47, 0x6, 0xfb, - 0x34, 0xfb, 0xa0, 0xa0, 0xf7, 0xad, 0x5, 0xeb, 0x34, 0xa, 0xfb, 0x83, - 0x36, 0xa, 0xbd, 0x6, 0xe, 0x3a, 0xa, 0x65, 0x16, 0xf7, 0x97, 0x34, - 0xa, 0x3b, 0x6, 0xf7, 0x1b, 0xf7, 0x11, 0xdf, 0xfb, 0x11, 0x5, 0x4c, - 0x6e, 0xa, 0xf7, 0x89, 0x34, 0xa, 0x47, 0x6, 0xfb, 0x11, 0xf7, 0x55, - 0xf7, 0x4b, 0xf7, 0x4f, 0x5, 0xd1, 0x34, 0xa, 0xfb, 0x76, 0x6e, 0xa, - 0xba, 0x6, 0xfb, 0x5, 0xfb, 0xa, 0x4b, 0xf7, 0xa, 0x5, 0xc2, 0x34, - 0xa, 0xfb, 0x84, 0x36, 0xa, 0xd2, 0x6, 0xf5, 0xfb, 0x4f, 0xfb, 0x62, - 0xfb, 0x55, 0x5, 0x47, 0x6, 0xe, 0x3a, 0xa, 0x9d, 0x16, 0xf7, 0xf0, - 0x42, 0xa, 0xfb, 0x10, 0x6, 0xa7, 0xf7, 0x1c, 0xf7, 0x68, 0xf7, 0x88, - 0x5, 0xdc, 0x42, 0xa, 0xfb, 0x83, 0x36, 0xa, 0xc3, 0x6, 0xfb, 0x1e, - 0xfb, 0x31, 0x41, 0xf7, 0x31, 0x5, 0xc2, 0x34, 0xa, 0xfb, 0x85, 0x4b, - 0xa, 0xda, 0x6, 0xf7, 0x3, 0xfb, 0x88, 0x70, 0xfb, 0x1c, 0x5, 0xfb, - 0x11, 0x6, 0xe, 0x8b, 0xe5, 0xf8, 0x8, 0xe5, 0x1, 0x9c, 0x16, 0xf7, - 0xef, 0x6, 0x9f, 0xe5, 0x5, 0xfb, 0x11, 0x6, 0xa7, 0xf7, 0x19, 0xf7, - 0x69, 0xf7, 0x83, 0x5, 0xdc, 0x46, 0xa, 0xfb, 0x84, 0x6, 0x79, 0x31, - 0x5, 0xc2, 0x6, 0xfb, 0x1f, 0xfb, 0x2d, 0x43, 0xf7, 0x2d, 0x5, 0xc1, - 0x46, 0xa, 0xfb, 0x83, 0x6, 0x79, 0x31, 0x5c, 0xa, 0xf7, 0x5, 0xfb, - 0x83, 0x6d, 0xfb, 0x19, 0x5, 0xfb, 0x10, 0x6, 0xf7, 0x3e, 0xf8, 0x97, - 0x15, 0xf7, 0xe1, 0xd8, 0x77, 0xf1, 0xfb, 0xd5, 0xfb, 0xc, 0x5, 0xe, - 0x8b, 0xe3, 0xf8, 0x1b, 0xe8, 0xe3, 0xf7, 0x15, 0x12, 0xf7, 0x38, 0xeb, - 0x3b, 0xf7, 0x2, 0xd1, 0xf7, 0x3, 0x13, 0xf4, 0xa0, 0x16, 0xf7, 0xec, - 0x6, 0x9d, 0xe8, 0x5, 0xfb, 0xf, 0x6, 0xa5, 0xf7, 0x14, 0xf7, 0x69, - 0xf7, 0x96, 0x5, 0xda, 0x94, 0xa, 0xfb, 0x82, 0x6, 0x79, 0x2e, 0x5, - 0xc3, 0x6, 0xfb, 0x20, 0xfb, 0x3d, 0x45, 0xf7, 0x3d, 0x5, 0xc1, 0x6, - 0x9d, 0xe8, 0x5, 0xfb, 0x81, 0x82, 0xa, 0xd9, 0x6, 0xf7, 0x1, 0xfb, - 0x96, 0x71, 0xfb, 0x14, 0x5, 0xfb, 0x11, 0x6, 0xf7, 0xd5, 0xf8, 0xcb, - 0x92, 0xa, 0xa5, 0xf7, 0x15, 0x4c, 0xa, 0x13, 0xec, 0xfb, 0x62, 0xfb, - 0x15, 0x15, 0xf7, 0x2, 0x6, 0xa5, 0xf7, 0x15, 0x86, 0xa, 0xe, 0x3a, - 0xa, 0xe4, 0xec, 0x3, 0x98, 0x16, 0xf8, 0x74, 0x6, 0xbc, 0xf7, 0x70, - 0x66, 0xa, 0x6c, 0xfb, 0x15, 0x5, 0xfb, 0x8e, 0x6, 0xf8, 0x2e, 0xf8, - 0x2a, 0x98, 0xcc, 0x5, 0xfc, 0x58, 0x6, 0x5d, 0xfb, 0x61, 0x96, 0xa, - 0xa7, 0xf7, 0x6, 0x5, 0xf7, 0x6e, 0x6, 0xfc, 0x28, 0xfc, 0x25, 0x5, - 0xe, 0x8b, 0xe4, 0xf8, 0xd, 0xe5, 0x1, 0xd7, 0xea, 0xf7, 0x8d, 0xea, - 0x3, 0x8c, 0x16, 0xf8, 0x68, 0x6, 0xb9, 0xf7, 0x6d, 0x5, 0x2c, 0x6, - 0x71, 0xfb, 0x14, 0x5, 0xfb, 0x89, 0x6, 0xf8, 0x23, 0xf8, 0x27, 0x99, - 0xcb, 0x5, 0xfc, 0x4d, 0x6, 0x5e, 0xfb, 0x5f, 0x5, 0xea, 0x6, 0xa5, - 0xf7, 0x5, 0x5, 0xf7, 0x6a, 0x6, 0xfc, 0x20, 0xfc, 0x23, 0x5, 0xf7, - 0xbd, 0xf8, 0xb3, 0x15, 0xed, 0x6, 0xf7, 0x50, 0xf7, 0x23, 0x58, 0xaf, - 0xfb, 0x42, 0x21, 0xfb, 0x11, 0xf6, 0x46, 0x69, 0x5, 0xe, 0x7c, 0xea, - 0x35, 0xea, 0xf5, 0xe9, 0xd0, 0xeb, 0x12, 0xaf, 0xed, 0xf7, 0xbd, 0xed, - 0x13, 0x7c, 0xf8, 0x6, 0x85, 0x15, 0xf7, 0x44, 0x6, 0x9e, 0xea, 0x5, - 0x3a, 0x6, 0xad, 0xf7, 0x3f, 0x92, 0xa7, 0x90, 0xaa, 0x8a, 0xa7, 0x19, - 0xee, 0xfb, 0x1e, 0x93, 0x6f, 0x3d, 0x2c, 0x71, 0x6e, 0x42, 0x1e, 0xa0, - 0x3a, 0x5, 0xa2, 0xcb, 0xd6, 0x9c, 0xc9, 0x1b, 0xa2, 0xd0, 0x8a, 0x61, - 0x80, 0x89, 0x80, 0x8a, 0x80, 0x1f, 0x8f, 0x67, 0x64, 0x8e, 0x65, 0x1b, - 0xfb, 0x8c, 0x6c, 0xfb, 0x25, 0x68, 0x1f, 0x13, 0xbc, 0x4e, 0xbc, 0x4c, - 0xf5, 0xdc, 0xb5, 0xa2, 0xae, 0xcc, 0x1e, 0x13, 0x7c, 0xa3, 0xf7, 0x5, - 0x15, 0x13, 0xbc, 0x5f, 0x51, 0x48, 0x6b, 0x47, 0x1b, 0x66, 0x64, 0x96, - 0xa4, 0xc7, 0xed, 0x9e, 0xbc, 0xc6, 0xb1, 0x85, 0x89, 0xab, 0x1f, 0xe, - 0x41, 0xa, 0xf7, 0x75, 0x77, 0x12, 0xa6, 0xeb, 0x13, 0x7c, 0xf7, 0x87, - 0xf8, 0x77, 0x15, 0xf7, 0xde, 0xd7, 0x77, 0xf1, 0xfb, 0xd4, 0xfb, 0xd, - 0x5, 0xf7, 0xe, 0xfc, 0xb3, 0x21, 0xa, 0x8b, 0xe5, 0xee, 0xe4, 0xcc, - 0xe6, 0x1, 0xae, 0xe9, 0xf7, 0x7e, 0xef, 0x3, 0xf7, 0x61, 0xf8, 0x73, - 0x15, 0xf7, 0x3f, 0xf4, 0xf7, 0x10, 0x22, 0xcc, 0xae, 0xfb, 0x14, 0xf7, - 0x23, 0x66, 0xa, 0xfb, 0x50, 0xfb, 0x22, 0x5, 0xf7, 0x67, 0xfc, 0x9a, - 0x22, 0xa, 0x3b, 0xa, 0x1f, 0xa1, 0xf7, 0x1, 0x15, 0x2c, 0xa, 0xf7, - 0x35, 0xf7, 0xb2, 0x3, 0xf7, 0x35, 0xf8, 0x90, 0x15, 0xf7, 0xb2, 0xca, - 0x7a, 0xe5, 0xfb, 0xaa, 0x23, 0x5, 0xe, 0x41, 0xa, 0xca, 0xf7, 0x12, - 0x12, 0xb3, 0xeb, 0x13, 0x7c, 0xf8, 0x35, 0xf8, 0x87, 0x15, 0xf7, 0x8, - 0x6, 0xa4, 0xf7, 0x12, 0x5, 0xfb, 0x8, 0x6, 0xfb, 0x6a, 0xfb, 0x12, - 0x15, 0xf7, 0x6, 0x6, 0xa6, 0xf7, 0x12, 0x5, 0xfb, 0x9, 0x6, 0xf7, - 0x8, 0xfd, 0x8, 0x21, 0xa, 0x7c, 0xea, 0xe0, 0xeb, 0x39, 0xec, 0xde, - 0xea, 0x12, 0x13, 0xd0, 0xf7, 0xa4, 0xc5, 0x15, 0x71, 0x97, 0xad, 0x5c, - 0xe6, 0x1b, 0xc3, 0xbc, 0x99, 0xa0, 0xc7, 0x1f, 0x7d, 0xe7, 0x5, 0x74, - 0x47, 0x64, 0x82, 0x73, 0x1b, 0x36, 0x8b, 0xcb, 0x9e, 0x8e, 0x1f, 0x8c, - 0x8d, 0x5, 0xf7, 0x89, 0x6, 0x98, 0xb2, 0x94, 0xb3, 0xb4, 0x1a, 0xde, - 0x6c, 0xe1, 0x2b, 0x60, 0x56, 0x78, 0x68, 0x67, 0x1e, 0xb1, 0x77, 0x72, - 0x9b, 0x47, 0x1b, 0x42, 0x2d, 0x66, 0x89, 0x86, 0x1f, 0x94, 0x2d, 0x5, - 0x9c, 0xba, 0xc0, 0xa0, 0xb7, 0x1b, 0xac, 0x9b, 0x7f, 0x6c, 0x81, 0x8a, - 0x80, 0x88, 0x7d, 0x1f, 0x89, 0x81, 0x5, 0x13, 0xb0, 0x8d, 0x72, 0x79, - 0x8e, 0x67, 0x1b, 0xfb, 0x14, 0x40, 0x2c, 0x34, 0x1f, 0x4d, 0x8c, 0xb7, - 0x5c, 0xd6, 0x1b, 0xd3, 0xc4, 0xba, 0xa5, 0xb1, 0x1f, 0x13, 0xd0, 0xe7, - 0xf7, 0x5f, 0x15, 0xc6, 0x9a, 0xba, 0xb2, 0xb4, 0x1b, 0xc5, 0x87, 0x3e, - 0x76, 0x89, 0x1f, 0xfb, 0xae, 0xfb, 0x1e, 0x15, 0x6e, 0x6a, 0x63, 0x7d, - 0x63, 0x1b, 0x79, 0x78, 0x95, 0xae, 0x1f, 0x13, 0xb0, 0x95, 0x9a, 0xb7, - 0xe3, 0x96, 0xab, 0x8a, 0x87, 0x9a, 0x1e, 0xe, 0x41, 0xa, 0xf7, 0x75, - 0x77, 0x12, 0xae, 0xeb, 0x13, 0x7c, 0xf7, 0x74, 0xf8, 0xc6, 0x15, 0xf7, - 0xc4, 0x3b, 0xb0, 0xc5, 0xfb, 0xa9, 0xf7, 0xd, 0x5, 0xd6, 0xfd, 0x2c, - 0x21, 0xa, 0x7c, 0xe9, 0x39, 0xe9, 0xf7, 0x17, 0xe9, 0xf7, 0x18, 0xea, - 0x12, 0xad, 0xf2, 0x9b, 0xed, 0x13, 0x7c, 0xf7, 0xda, 0xb0, 0x15, 0xa0, - 0x63, 0x5, 0xf7, 0x45, 0x3f, 0xa, 0xfb, 0x19, 0x6, 0x7f, 0xa1, 0xa5, - 0xa8, 0x9d, 0xbc, 0xa0, 0xaa, 0x19, 0xdf, 0x3f, 0xa, 0xfb, 0x2a, 0x6, - 0x81, 0x74, 0x6c, 0x44, 0x76, 0x71, 0x8, 0x3c, 0xf7, 0x22, 0x73, 0xb3, - 0xab, 0x1a, 0xa7, 0xab, 0x94, 0xa9, 0x8c, 0x1e, 0xb9, 0x8c, 0xc3, 0x74, - 0x9c, 0x76, 0xd2, 0xd0, 0x18, 0xb1, 0x64, 0x4b, 0xaa, 0x4d, 0x1b, 0x2c, - 0x31, 0x4c, 0x34, 0x64, 0xa3, 0x6c, 0x8f, 0x7d, 0x1f, 0x89, 0x7, 0x39, - 0x69, 0x4a, 0x3e, 0x34, 0x1a, 0x13, 0xbc, 0x4e, 0xb4, 0x4c, 0xf1, 0xda, - 0xb5, 0xad, 0x9d, 0xa7, 0x1e, 0x62, 0xd9, 0x15, 0x74, 0x72, 0x6b, 0x7e, - 0x6c, 0x1b, 0x5f, 0x7b, 0xa5, 0xa4, 0xbf, 0xbd, 0xb2, 0xaa, 0x9a, 0x1f, - 0xe, 0x41, 0xa, 0xf7, 0x4b, 0x77, 0x12, 0xb3, 0xeb, 0x13, 0x7c, 0xf7, - 0xb1, 0xf8, 0xc4, 0x15, 0x5e, 0xb0, 0x68, 0xc0, 0xcd, 0xd0, 0xc0, 0xca, - 0xb9, 0x65, 0xaf, 0x55, 0x49, 0x48, 0x54, 0x4c, 0x1e, 0xcf, 0x91, 0x15, - 0xa7, 0xa6, 0xa4, 0xa5, 0xa0, 0x9b, 0x7d, 0x79, 0x72, 0x70, 0x75, 0x70, - 0x77, 0x7b, 0x96, 0x9a, 0x1e, 0x9a, 0xfc, 0xcd, 0x21, 0xa, 0xf7, 0xa2, - 0xcf, 0x1, 0x73, 0xf9, 0x1c, 0x3, 0xf7, 0x3, 0xf7, 0x23, 0x15, 0xc9, - 0xbf, 0x48, 0xd7, 0xf8, 0x1, 0x8a, 0x2c, 0x4b, 0x6a, 0xa, 0x4a, 0x5, - 0xfb, 0xeb, 0x6, 0xdd, 0xc1, 0x8e, 0xa, 0x9b, 0x76, 0xf8, 0xef, 0x77, - 0x1, 0xf7, 0x95, 0x86, 0x15, 0xf7, 0x5f, 0xf7, 0x36, 0x58, 0xc0, 0x38, - 0x40, 0xf7, 0xe, 0xf8, 0x5a, 0x44, 0x94, 0xfb, 0xe, 0xfc, 0x5f, 0x5a, - 0xd4, 0x49, 0x5c, 0x5, 0xe, 0xf7, 0x99, 0xd1, 0x1, 0x69, 0xf9, 0x26, - 0x3, 0xf0, 0xf7, 0x23, 0x15, 0xc9, 0xbf, 0x51, 0xcd, 0x5, 0xf8, 0x9b, - 0x6, 0x95, 0xd1, 0x5, 0xfc, 0x96, 0x6, 0xe9, 0xc8, 0x8e, 0xa, 0xf7, - 0x9f, 0xd1, 0x1, 0x69, 0xf9, 0x30, 0x3, 0x69, 0xf7, 0x9f, 0x15, 0xf8, - 0x96, 0x6, 0x2d, 0x4e, 0x6a, 0xa, 0x49, 0x5, 0xfc, 0x9b, 0x6, 0xe, - 0xa1, 0xf8, 0x3b, 0x1, 0xf7, 0x2d, 0xd1, 0x3, 0xf7, 0x2d, 0xa1, 0x15, - 0xd1, 0x82, 0xf7, 0xe, 0xf8, 0x5e, 0xbc, 0x42, 0xcd, 0xba, 0xfb, 0x9, - 0xf7, 0x3f, 0xfb, 0x5f, 0xfb, 0x37, 0xbe, 0x56, 0xde, 0xd6, 0x5, 0xe, - 0xf7, 0x8f, 0xf8, 0x1, 0x1, 0xf7, 0x0, 0xf8, 0xc, 0x3, 0xf7, 0x0, - 0xf7, 0x8e, 0x15, 0xd7, 0xb1, 0xd9, 0xdb, 0xca, 0xd8, 0xb5, 0x3a, 0xbf, - 0x3f, 0xcc, 0x66, 0x93, 0xcb, 0x18, 0x41, 0xf7, 0x2, 0x6a, 0xc2, 0x78, - 0xf7, 0x1c, 0x8, 0x5c, 0x6, 0x5b, 0xfb, 0x15, 0x56, 0x46, 0x25, 0x23, - 0x8, 0xe, 0xf7, 0x3a, 0xf2, 0x2c, 0x76, 0xde, 0xf3, 0x9b, 0x77, 0x12, - 0xcc, 0xf8, 0x69, 0x13, 0x68, 0xf7, 0xc, 0xf7, 0x2d, 0x15, 0xab, 0xa3, - 0xa7, 0xbe, 0xb4, 0x1b, 0x9a, 0xaa, 0x76, 0x7a, 0xae, 0x1f, 0x7f, 0xa3, - 0xa5, 0x81, 0xa4, 0x1b, 0xb6, 0xd2, 0xad, 0xdf, 0xbe, 0x1f, 0x13, 0x98, - 0x58, 0xc9, 0x5, 0x75, 0x7c, 0x65, 0x54, 0x61, 0x1b, 0x74, 0x73, 0x96, - 0x98, 0x73, 0x1f, 0x13, 0x68, 0x9c, 0x6b, 0x6c, 0x9f, 0x71, 0x1b, 0x44, - 0x59, 0x48, 0x55, 0x61, 0x1f, 0xe, 0xf7, 0x4e, 0xf0, 0x3, 0xf7, 0x4e, - 0xf7, 0x6f, 0x15, 0xf0, 0xf7, 0x7, 0xbd, 0xfb, 0x6, 0xec, 0xc7, 0x52, - 0xf3, 0xf7, 0x18, 0xad, 0x7c, 0xee, 0xfb, 0x1d, 0x56, 0xb0, 0xf7, 0x1d, - 0x4c, 0xa, 0x78, 0xfb, 0x19, 0xfb, 0xb, 0xbc, 0x55, 0x27, 0xf7, 0x16, - 0x6a, 0x20, 0x22, 0x5, 0xe, 0x79, 0xd3, 0xd2, 0xd4, 0xf7, 0x3b, 0xd5, - 0xd2, 0xd0, 0x1, 0x91, 0xe1, 0xc6, 0xd2, 0xf7, 0xb4, 0xdb, 0x3, 0xf7, - 0xcf, 0xf7, 0x3b, 0x15, 0x6a, 0x9b, 0xad, 0x82, 0x9d, 0x1b, 0xf7, 0x0, - 0xee, 0xf7, 0x1c, 0xf7, 0xe, 0xf7, 0x16, 0x25, 0xcd, 0xfb, 0x10, 0xfb, - 0x3b, 0xfb, 0x53, 0xfb, 0x22, 0xfb, 0x75, 0x22, 0xb6, 0xfb, 0x11, 0xf7, - 0x50, 0xf7, 0x13, 0xdf, 0xc4, 0xa4, 0xb5, 0x1f, 0x7d, 0xcf, 0x5, 0x54, - 0x32, 0x47, 0x74, 0x3f, 0x1b, 0xfb, 0xb, 0x6b, 0xdd, 0xd8, 0xe5, 0xd6, - 0xf7, 0x63, 0xf7, 0x4b, 0xf2, 0xc4, 0x55, 0x39, 0x3a, 0x54, 0x2c, 0x59, - 0x7d, 0x79, 0x91, 0xa3, 0x8f, 0x1f, 0x8c, 0x90, 0x8c, 0x8f, 0x8e, 0x91, - 0xe2, 0xf7, 0x48, 0x18, 0x46, 0x6, 0x82, 0x79, 0x5, 0xa3, 0x78, 0x7e, - 0x8b, 0x7d, 0x1b, 0x25, 0x2f, 0xfb, 0x1d, 0x30, 0x51, 0xb1, 0x79, 0xa8, - 0xac, 0xaf, 0x9c, 0xa4, 0xa7, 0x1f, 0xa8, 0xf7, 0x3a, 0x15, 0x70, 0x85, - 0x62, 0xfb, 0x0, 0x4f, 0x1b, 0x80, 0x87, 0x93, 0x97, 0xc5, 0xd1, 0xe4, - 0xab, 0xa3, 0x88, 0x74, 0x82, 0x8a, 0x1f, 0xe, 0x41, 0xa, 0xf7, 0x1e, - 0x77, 0xdd, 0x77, 0x12, 0x95, 0xeb, 0x13, 0x7e, 0xf7, 0x12, 0xf8, 0x95, - 0x15, 0xdb, 0x71, 0x9a, 0x9f, 0x94, 0xa2, 0xa3, 0x98, 0x19, 0xa3, 0x98, - 0xa9, 0x7a, 0xaa, 0x79, 0x8, 0x7c, 0xa6, 0xa7, 0x7b, 0xa4, 0x1b, 0xf0, - 0xbf, 0xe3, 0xad, 0x9d, 0x1f, 0x39, 0xa3, 0x5, 0x62, 0x70, 0x7d, 0x76, - 0x6f, 0x1b, 0x79, 0x79, 0x94, 0x97, 0x78, 0x1f, 0x9c, 0x6f, 0x6f, 0xa1, - 0x6b, 0x1b, 0x29, 0x5c, 0x3d, 0x60, 0x72, 0x1f, 0xf7, 0x68, 0xfc, 0x98, - 0x22, 0xa, 0x1f, 0x13, 0xbe, 0x3b, 0xa, 0x1e, 0x13, 0x7e, 0xa1, 0xf7, - 0x1, 0x15, 0x13, 0xbe, 0x2c, 0xa, 0x7c, 0xe8, 0x3a, 0xe9, 0xf7, 0x9d, - 0xe9, 0xdd, 0xe9, 0x12, 0xf8, 0x94, 0xef, 0x13, 0x78, 0x80, 0x88, 0x15, - 0xf7, 0x47, 0x6, 0x94, 0xbb, 0x5, 0x13, 0xb8, 0x70, 0xad, 0xb2, 0x6a, - 0xd7, 0x1b, 0xf7, 0x5a, 0xe3, 0xf7, 0x18, 0xf7, 0x1e, 0xf3, 0x42, 0xe6, - 0xfb, 0x14, 0x53, 0x54, 0x84, 0x69, 0x5b, 0x1f, 0xb8, 0xf7, 0x6d, 0x5, - 0xfb, 0x49, 0x44, 0xa, 0xdd, 0x6, 0x13, 0x78, 0x32, 0xfc, 0x4d, 0x5, - 0x3a, 0x6, 0xf7, 0x5b, 0xef, 0x15, 0xe6, 0xc7, 0xd5, 0xf7, 0xd, 0xe8, - 0xa9, 0x48, 0x58, 0x1e, 0x13, 0xb8, 0x35, 0x2d, 0x41, 0x34, 0x63, 0x38, - 0xa5, 0xe2, 0x1e, 0xe, 0xfb, 0x1d, 0xf9, 0x8f, 0x1, 0xf7, 0x37, 0xf7, - 0xa5, 0x3, 0xf7, 0xfe, 0xfb, 0x1d, 0x15, 0xd5, 0xa8, 0xfb, 0x5b, 0xf9, - 0x72, 0x41, 0x6e, 0x5, 0xe, 0xfb, 0x73, 0x76, 0xfa, 0x7c, 0x77, 0x1, - 0xf7, 0x1a, 0xe3, 0x3, 0xf7, 0x1a, 0xfb, 0x88, 0x15, 0xe3, 0x6, 0xf7, - 0x88, 0xfa, 0x7c, 0x5, 0x33, 0x6, 0xe, 0xf7, 0x34, 0xdc, 0x3, 0xd5, - 0xf7, 0x71, 0x15, 0xdc, 0x7f, 0x95, 0x60, 0x61, 0x1a, 0x85, 0x80, 0x45, - 0x74, 0xfb, 0x19, 0x1e, 0x83, 0x5c, 0x97, 0x52, 0xbd, 0x76, 0x8, 0x79, - 0xb6, 0xc7, 0x8b, 0xbc, 0x1b, 0x9d, 0xe8, 0x5, 0x64, 0x63, 0x8b, 0x95, - 0x6b, 0x1f, 0x76, 0x92, 0x89, 0xa4, 0x8f, 0xa2, 0x9e, 0xf7, 0x9, 0x95, - 0xcb, 0x8c, 0x96, 0x8, 0x8c, 0x97, 0x8b, 0x93, 0x90, 0x1a, 0xb3, 0x74, - 0xc3, 0x63, 0xa5, 0x1e, 0xd0, 0xae, 0xbd, 0xdd, 0x98, 0xd3, 0xa7, 0xf7, - 0x28, 0x18, 0x8f, 0xa2, 0x96, 0xa5, 0xa3, 0x91, 0x8, 0x95, 0xb2, 0xaf, - 0x8b, 0xb2, 0x1b, 0x9e, 0xe8, 0x5, 0x5a, 0x51, 0x8b, 0x79, 0x57, 0x1f, - 0x52, 0x77, 0x67, 0x51, 0x83, 0x5c, 0x75, 0xfb, 0x9, 0x18, 0x76, 0xfb, - 0x0, 0x77, 0x4a, 0xfb, 0x3, 0x7b, 0x8, 0xe, 0xf8, 0x2, 0xda, 0x3, - 0xd5, 0xfb, 0x78, 0x15, 0xbc, 0xc5, 0x8b, 0x9d, 0xbf, 0x1f, 0xc4, 0x9f, - 0xaf, 0xc5, 0x93, 0xba, 0xa1, 0xf7, 0x9, 0x18, 0xa0, 0xf7, 0x0, 0x9f, - 0xcc, 0xf7, 0x3, 0x9b, 0x9c, 0xe9, 0x18, 0x3a, 0x97, 0x81, 0xb6, 0xb5, - 0x1a, 0x91, 0x96, 0xd1, 0xa2, 0xf7, 0x19, 0x1e, 0x93, 0xba, 0x7f, 0xc4, - 0x59, 0xa0, 0x8, 0x9d, 0x60, 0x4f, 0x8b, 0x5a, 0x1b, 0x79, 0x2e, 0x5, - 0xb2, 0xb3, 0x8b, 0x81, 0xab, 0x1f, 0xa0, 0x84, 0x8d, 0x72, 0x87, 0x74, - 0x78, 0xfb, 0x9, 0x81, 0x4b, 0x8a, 0x7f, 0x8, 0x8a, 0x80, 0x8b, 0x83, - 0x86, 0x1a, 0x63, 0xa2, 0x53, 0xb3, 0x71, 0x1e, 0x46, 0x68, 0x59, 0x39, - 0x7e, 0x43, 0x6f, 0xfb, 0x28, 0x18, 0x87, 0x74, 0x80, 0x71, 0x73, 0x85, - 0x8, 0x81, 0x64, 0x67, 0x8b, 0x64, 0x1b, 0xe, 0x25, 0xe7, 0xf8, 0xaa, - 0xe7, 0x1, 0xf7, 0x0, 0x25, 0x15, 0xf7, 0x7c, 0x6, 0x9f, 0xe7, 0x5, - 0xfb, 0x1b, 0x6, 0xf7, 0x5, 0xf8, 0xaa, 0x5, 0xf7, 0x1a, 0x5b, 0xa, - 0xfb, 0x7c, 0x6, 0xe, 0x25, 0xe7, 0xf8, 0xaa, 0xe7, 0x1, 0xf7, 0x13, - 0x81, 0x15, 0x78, 0x2f, 0x5, 0xf7, 0x7b, 0x6, 0xf7, 0x2c, 0xf9, 0x62, - 0x5, 0xfb, 0x7c, 0x6, 0x77, 0x2f, 0x5, 0xf7, 0x1b, 0x6, 0xfb, 0x6, - 0xfc, 0xaa, 0x5, 0xe, 0xf8, 0x68, 0xd5, 0x1, 0xdf, 0xf9, 0xb, 0x15, - 0x44, 0xb7, 0x2f, 0xf7, 0x22, 0xf7, 0x31, 0xd3, 0xf7, 0x5, 0xbd, 0x9d, - 0x1e, 0x2f, 0x6, 0x3d, 0x64, 0x41, 0x80, 0x70, 0x1b, 0x3c, 0x71, 0xc0, - 0xaf, 0x8a, 0x1f, 0xe, 0xfb, 0x2e, 0x76, 0xf9, 0xe6, 0x77, 0x1, 0xf7, - 0x39, 0xc6, 0xf7, 0x2c, 0xc6, 0x3, 0xf7, 0xac, 0xf7, 0xb0, 0x15, 0xc6, - 0x6, 0xeb, 0xf8, 0x1b, 0x5, 0x50, 0x6, 0xfb, 0x67, 0xfd, 0xe6, 0x15, - 0xc6, 0x6, 0xed, 0xf8, 0x1a, 0x5, 0x50, 0x6, 0xe, 0xf7, 0x18, 0xf7, - 0xbe, 0x1, 0xf7, 0x1d, 0xf7, 0xd9, 0x3, 0xf7, 0x1d, 0xf7, 0x8c, 0x15, - 0x48, 0xbf, 0x5a, 0xd8, 0xed, 0xed, 0xdb, 0xeb, 0xd1, 0x57, 0xbf, 0x3c, - 0x23, 0x31, 0x38, 0x28, 0x1e, 0xe, 0x7c, 0xea, 0xf7, 0xb0, 0xea, 0x1, - 0xae, 0xf2, 0x3, 0xf8, 0x89, 0xf7, 0x2e, 0x15, 0x62, 0x46, 0x4c, 0x6a, - 0x38, 0x1b, 0x3e, 0x44, 0xb0, 0xd5, 0xee, 0xe5, 0xd5, 0xf7, 0xd, 0xb3, - 0xb3, 0x80, 0x7c, 0xab, 0x1f, 0x77, 0x30, 0x5, 0xef, 0x6, 0xb7, 0xf7, - 0x68, 0x7b, 0xa, 0x86, 0x78, 0x5, 0x98, 0x69, 0x65, 0x91, 0x62, 0x1b, - 0xfb, 0x64, 0xfb, 0x11, 0xfb, 0x27, 0xfb, 0x20, 0xfb, 0xc, 0xf4, 0x48, - 0xf7, 0xa, 0xf0, 0xf0, 0xb3, 0xc3, 0xdf, 0x1f, 0xe, 0xf7, 0x79, 0xe6, - 0x3, 0xf7, 0x79, 0xf8, 0x81, 0x15, 0xe6, 0x6, 0xf7, 0x45, 0xf7, 0x1e, - 0x5b, 0xaf, 0xfb, 0x36, 0x25, 0xfb, 0xc, 0xf1, 0x4b, 0x68, 0x5, 0xe, - 0xfb, 0x4d, 0x76, 0xf7, 0x58, 0xe8, 0xf7, 0xae, 0xe9, 0x1, 0xa4, 0xf1, - 0x3, 0xf7, 0x23, 0xfb, 0x46, 0x15, 0x7b, 0x9e, 0xa6, 0x7f, 0xac, 0x1b, - 0xd3, 0xc0, 0xc2, 0xc5, 0xa5, 0x85, 0xac, 0x62, 0x95, 0x1f, 0x8f, 0x9c, - 0xdd, 0x98, 0xda, 0xad, 0xcf, 0xb7, 0x19, 0x60, 0xd4, 0x5, 0x61, 0x46, - 0x4c, 0x6b, 0x38, 0x1b, 0x3f, 0x43, 0xaf, 0xd2, 0xee, 0xe4, 0xd7, 0xf7, - 0xe, 0xb5, 0xb2, 0x81, 0x7b, 0xaa, 0x1f, 0x77, 0x31, 0x5, 0xef, 0x6, - 0xb8, 0xf7, 0x66, 0x5, 0x27, 0x6, 0x87, 0x78, 0x5, 0x98, 0x69, 0x64, - 0x91, 0x62, 0x1b, 0xfb, 0x62, 0xfb, 0x12, 0xfb, 0x26, 0xfb, 0x1d, 0xfb, - 0x4, 0xe4, 0x4a, 0xf6, 0x82, 0x1f, 0x70, 0x31, 0x5, 0x8c, 0x95, 0x9f, - 0x91, 0x9c, 0x1b, 0x96, 0x95, 0x87, 0x7d, 0x7c, 0x79, 0x83, 0x79, 0x7b, - 0x7b, 0x91, 0x93, 0x83, 0x1f, 0xe, 0xfb, 0x62, 0xd1, 0xb4, 0xea, 0x1, - 0xf7, 0xae, 0xd9, 0x3, 0xf7, 0x5d, 0xfb, 0x46, 0x15, 0x79, 0xa1, 0xa3, - 0x81, 0xa9, 0x1b, 0xce, 0xc2, 0xc0, 0xca, 0xb8, 0x6b, 0x9a, 0x80, 0x8f, - 0x1f, 0x8f, 0xa5, 0x5, 0x3d, 0x6, 0x6b, 0x24, 0x5, 0x8d, 0x94, 0xa4, - 0x91, 0x9c, 0x1b, 0x95, 0x92, 0x86, 0x81, 0x78, 0x78, 0x84, 0x75, 0x7e, - 0x7f, 0x91, 0x93, 0x84, 0x1f, 0xe, 0x6f, 0x76, 0xf7, 0xfd, 0xf7, 0x4e, - 0xf7, 0x8, 0x77, 0x1, 0xc5, 0xf0, 0x3, 0xf7, 0x43, 0x5a, 0x15, 0xed, - 0x6, 0xa5, 0xf7, 0x1d, 0xd1, 0x95, 0xcc, 0xa4, 0xca, 0xb2, 0x19, 0x6c, - 0xd3, 0x5, 0x60, 0x37, 0x5b, 0x72, 0x49, 0x1b, 0x33, 0x76, 0xc1, 0xb0, - 0xd6, 0xd2, 0xd3, 0xe6, 0xaf, 0xae, 0x80, 0x7c, 0xa8, 0x1f, 0x7c, 0x49, - 0x96, 0xa, 0xb1, 0xf7, 0x4e, 0x7a, 0xa, 0x85, 0x6c, 0x78, 0x91, 0x76, - 0x90, 0x78, 0x8e, 0x19, 0xa6, 0xf7, 0x19, 0x66, 0xa, 0x70, 0xfb, 0x18, - 0x5, 0xfb, 0x23, 0x6c, 0x39, 0x2b, 0xfb, 0x9, 0x1a, 0xfb, 0x0, 0xf2, - 0x6e, 0xb5, 0x7f, 0x1e, 0xe, 0xf7, 0xaf, 0xe7, 0x3, 0xf7, 0x2d, 0xf8, - 0x77, 0x15, 0xf7, 0x37, 0xf2, 0xf7, 0xa, 0x24, 0xca, 0xad, 0xfb, 0xe, - 0x97, 0xa, 0x2f, 0x6, 0xfb, 0x48, 0xfb, 0x1f, 0x5, 0xe, 0x7c, 0xf7, - 0x41, 0xe9, 0xf7, 0x41, 0x1, 0xf7, 0x6f, 0xf7, 0xd4, 0x15, 0x6e, 0xa3, - 0x64, 0xd0, 0xcf, 0xc3, 0xbc, 0xc8, 0xac, 0x6c, 0xa9, 0x51, 0x48, 0x4e, - 0x56, 0x57, 0x1e, 0x53, 0xfb, 0x9e, 0x15, 0x6e, 0xa4, 0x63, 0xd0, 0xc8, - 0xbf, 0xb3, 0xb9, 0x96, 0x1e, 0x8c, 0x90, 0x8b, 0x91, 0x90, 0x1a, 0xaf, - 0x70, 0xae, 0x4c, 0x4a, 0x4b, 0x58, 0x56, 0x1e, 0xe, 0xfb, 0x3, 0xf7, - 0xb5, 0x1, 0xf7, 0x1a, 0xf7, 0x13, 0xac, 0xf7, 0x3f, 0x3, 0xf7, 0x1a, - 0xfb, 0x3, 0x15, 0xf7, 0x13, 0x6, 0xf7, 0x60, 0xf7, 0xb5, 0x5, 0xfb, - 0x3f, 0x6, 0xe, 0x79, 0xb8, 0xe9, 0xb9, 0xf7, 0x8c, 0xb9, 0xd5, 0xb8, - 0x1, 0x84, 0xb9, 0xf7, 0x2, 0xb9, 0xf8, 0x1, 0xba, 0x3, 0x84, 0xf7, - 0x6d, 0x15, 0xfb, 0x18, 0xf6, 0x24, 0xf7, 0x21, 0xf7, 0x78, 0xf7, 0x1e, - 0xf7, 0x44, 0xf7, 0x48, 0xf7, 0x1d, 0x25, 0xf4, 0xfb, 0x24, 0xfb, 0x4d, - 0xfb, 0x4b, 0xfb, 0x1c, 0xfb, 0x77, 0x1e, 0xb9, 0x9c, 0x15, 0xf7, 0x35, - 0xf7, 0x2f, 0xf7, 0x20, 0xf7, 0x30, 0xf7, 0x13, 0xde, 0x30, 0xfb, 0xc, - 0xfb, 0x32, 0xfb, 0x28, 0xfb, 0x1f, 0xfb, 0x35, 0xfb, 0x11, 0x34, 0xe5, - 0xf7, 0x9, 0x1e, 0xf7, 0xfd, 0x77, 0x15, 0x72, 0x6f, 0x62, 0x75, 0x63, - 0x1b, 0x4e, 0x69, 0xb8, 0xc3, 0x8a, 0x1f, 0xd6, 0xd4, 0xd3, 0xd2, 0xae, - 0xaf, 0x7a, 0x76, 0x9d, 0x1e, 0xae, 0xab, 0x5, 0xa9, 0x72, 0x61, 0xa1, - 0x5d, 0x1b, 0x2b, 0x22, 0x36, 0xfb, 0x9, 0x42, 0xbb, 0x4a, 0xe4, 0xcc, - 0xc7, 0xaf, 0x9e, 0x9f, 0x1f, 0xe, 0xce, 0xe4, 0x35, 0x76, 0xf7, 0xfd, - 0xe3, 0x9e, 0x77, 0x12, 0xd7, 0xe7, 0xf7, 0x9e, 0xe7, 0x13, 0x6c, 0x9c, - 0xf5, 0x15, 0xbe, 0x52, 0xd2, 0xc4, 0x5, 0x13, 0xac, 0x6f, 0xac, 0xb7, - 0x80, 0xb9, 0x1b, 0xb8, 0xba, 0x9a, 0xa4, 0xaf, 0x1f, 0x13, 0x5c, 0xbe, - 0x51, 0xd2, 0xc6, 0x58, 0xc5, 0x5, 0xb2, 0xb2, 0xa5, 0xc7, 0xc4, 0x1a, - 0xa7, 0x86, 0xa7, 0x7f, 0xa3, 0x1e, 0xd5, 0xc5, 0x5e, 0xc4, 0x40, 0x50, - 0x5, 0x13, 0xac, 0xa7, 0x6b, 0x5f, 0x97, 0x5e, 0x1b, 0x5c, 0x5a, 0x7d, - 0x73, 0x67, 0x1f, 0x13, 0x9c, 0x5a, 0xc4, 0x43, 0x50, 0xbd, 0x51, 0x5, - 0x67, 0x63, 0x70, 0x51, 0x53, 0x1a, 0x6e, 0x8f, 0x70, 0x98, 0x72, 0x1e, - 0xd6, 0xec, 0x15, 0x13, 0xac, 0xda, 0xdc, 0xd0, 0xd8, 0xcb, 0xb7, 0x5d, - 0x50, 0x3b, 0x3a, 0x46, 0x3d, 0x4b, 0x60, 0xb9, 0xc7, 0x1e, 0xe, 0x7c, - 0xe9, 0x39, 0xe9, 0xf7, 0x7f, 0xe9, 0xf7, 0x4, 0xe9, 0x12, 0x9d, 0xef, - 0x13, 0x78, 0xf8, 0xe, 0x88, 0x15, 0xf7, 0x46, 0x3f, 0xa, 0x3c, 0x6, - 0xf4, 0xf8, 0xab, 0x5, 0xfb, 0x73, 0x87, 0xa, 0xf7, 0x11, 0x6, 0x70, - 0xfb, 0x1c, 0x5, 0xac, 0x6a, 0x53, 0x91, 0x53, 0x1b, 0xfb, 0x32, 0xfb, - 0x1d, 0xfb, 0x16, 0xfb, 0x24, 0x1f, 0x13, 0xb8, 0x24, 0xde, 0x42, 0xf7, - 0x13, 0xc1, 0xc6, 0xa5, 0xab, 0xba, 0x1e, 0x13, 0x78, 0xfb, 0xa2, 0xf7, - 0x20, 0x15, 0xe6, 0xe3, 0xce, 0xea, 0xd9, 0xba, 0x68, 0x52, 0x1e, 0x13, - 0xb8, 0xfb, 0x18, 0xfb, 0x1e, 0x65, 0x5f, 0x44, 0x54, 0xb1, 0xcd, 0x1e, - 0xe, 0xf7, 0xcf, 0xed, 0xf7, 0x3b, 0x77, 0x1, 0xf7, 0x3a, 0xee, 0x3, - 0xf7, 0x3a, 0x45, 0x15, 0xee, 0x6, 0xd6, 0xf8, 0x15, 0x5, 0xf7, 0x26, - 0x6, 0x9e, 0xed, 0x5, 0xfb, 0x26, 0x6, 0xad, 0xf7, 0x3b, 0x7b, 0xa, - 0x69, 0xfb, 0x3b, 0x5, 0xfb, 0x26, 0x6, 0x78, 0x29, 0x5, 0xf7, 0x25, - 0x6, 0xe, 0xf7, 0x4, 0xee, 0xf7, 0x9, 0xec, 0xf7, 0x2f, 0x77, 0x1, - 0xf7, 0x4b, 0xf0, 0x3, 0xcf, 0xf7, 0xe, 0x15, 0xf7, 0x2e, 0x6, 0x64, - 0xfb, 0x54, 0x5, 0xf0, 0x6, 0xaf, 0xf7, 0x54, 0x70, 0xa, 0x9f, 0xee, - 0x85, 0xa, 0xa3, 0xf6, 0x70, 0xa, 0x9f, 0xec, 0x85, 0xa, 0xa9, 0xf7, - 0x2f, 0x66, 0xa, 0x68, 0xfb, 0x2f, 0x5, 0xfb, 0x2a, 0x6, 0x77, 0x2a, - 0x5, 0xf7, 0x2a, 0x6, 0x77, 0x20, 0x5, 0xfb, 0x2e, 0x6, 0xe, 0xf7, - 0x87, 0xe6, 0xf7, 0x53, 0xe6, 0x1, 0xf1, 0xed, 0xf7, 0x5e, 0xeb, 0x3, - 0xf1, 0xf8, 0x15, 0x15, 0x39, 0xcf, 0x4f, 0xe8, 0xf7, 0x21, 0xe9, 0xf4, - 0xf7, 0xd, 0xe2, 0x4a, 0xc7, 0x2d, 0xfb, 0xa, 0xfb, 0xb, 0x2d, 0xfb, - 0x1d, 0x1e, 0xed, 0xa1, 0x15, 0xcc, 0xc1, 0xc0, 0xcd, 0xbf, 0xa9, 0x6a, - 0x5e, 0x4e, 0x51, 0x57, 0x4d, 0x5a, 0x6a, 0xab, 0xb4, 0x1e, 0xe, 0xf8, - 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x12, 0xf7, 0xe, 0xd8, 0xf7, 0xf, 0x3, - 0xf7, 0xd9, 0xf8, 0x79, 0x15, 0xf7, 0xf, 0x6, 0xa5, 0x97, 0xa, 0xfb, - 0xe, 0x6, 0xfb, 0x76, 0xfb, 0x20, 0x15, 0xf7, 0xe, 0x6, 0xa6, 0x97, - 0xa, 0xfb, 0xf, 0x6, 0xe, 0x9b, 0xf7, 0x2b, 0xaf, 0xf7, 0x2, 0xaf, - 0xf7, 0x2b, 0x12, 0xf7, 0x57, 0xf7, 0x23, 0x4d, 0xf7, 0x23, 0x14, 0xe0, - 0x13, 0xe8, 0xf7, 0xa8, 0xf8, 0x29, 0x4f, 0xa, 0xfb, 0x6d, 0xfb, 0x5e, - 0x73, 0xa, 0x13, 0xf0, 0xf7, 0x9, 0xfb, 0x85, 0x4f, 0xa, 0xe, 0x22, - 0x76, 0xf7, 0x8, 0xf7, 0x4a, 0xf7, 0x75, 0xf7, 0x49, 0x20, 0xe9, 0x2d, - 0xf7, 0x57, 0x12, 0xf7, 0x4, 0xf5, 0xf7, 0x4e, 0xf0, 0x13, 0xce, 0xa8, - 0x81, 0x15, 0xf0, 0x6, 0x93, 0xbe, 0x5, 0x7b, 0x9c, 0xa4, 0x85, 0xa0, - 0x1b, 0x6e, 0xfb, 0x25, 0x5, 0xf0, 0x6, 0xa9, 0xf7, 0x24, 0x5, 0xd5, - 0x8c, 0xf7, 0x14, 0xbb, 0xf7, 0x1f, 0x1a, 0xda, 0x31, 0xa1, 0x31, 0xa5, - 0x1e, 0x68, 0x94, 0x43, 0x9f, 0xb1, 0x1a, 0xcf, 0xe0, 0x8e, 0xb1, 0xb0, - 0xa5, 0x82, 0x71, 0xb1, 0x1e, 0x13, 0xe6, 0x83, 0x64, 0x5, 0xee, 0x6, - 0xb1, 0xf7, 0x49, 0x5, 0x27, 0x6, 0x83, 0x62, 0x80, 0x9e, 0x79, 0x90, - 0x79, 0x8e, 0x19, 0x13, 0xce, 0xa1, 0xf1, 0x5, 0x24, 0x6, 0x13, 0xd6, - 0x77, 0x26, 0x5, 0x3c, 0x8a, 0xfb, 0x10, 0x54, 0xfb, 0x11, 0x1a, 0x8a, - 0x3c, 0xd7, 0x6c, 0xf3, 0x6d, 0x8, 0xb1, 0x81, 0xd6, 0x82, 0x56, 0x1a, - 0x56, 0xfb, 0x6, 0x86, 0x6f, 0x65, 0x69, 0x93, 0xa2, 0x6c, 0x1e, 0x93, - 0xa6, 0x5, 0x26, 0x6, 0xe, 0xf8, 0x79, 0xf7, 0x20, 0x1, 0xf7, 0x78, - 0xf7, 0x9, 0x3, 0xf7, 0x78, 0xf8, 0x79, 0x15, 0xf7, 0x9, 0x6, 0xa6, - 0x97, 0xa, 0xfb, 0x9, 0x6, 0xe, 0x7f, 0xa, 0xcd, 0xf8, 0x55, 0x3, - 0xcd, 0x16, 0xf8, 0x55, 0x6, 0x9e, 0xe9, 0x3e, 0xa, 0xd1, 0xf7, 0xed, - 0x5, 0xfb, 0x80, 0x6f, 0xa, 0xf7, 0x1e, 0x6, 0x58, 0xfb, 0x8f, 0x43, - 0xa, 0x7c, 0xea, 0xe0, 0xeb, 0xec, 0xeb, 0x1, 0xf8, 0x65, 0xea, 0x3, - 0xf7, 0x26, 0xf7, 0x48, 0x15, 0xf8, 0x23, 0x6, 0x91, 0xa0, 0x94, 0xb5, - 0xa8, 0x1a, 0xf4, 0x34, 0xd8, 0xfb, 0xc, 0xfb, 0x1a, 0xfb, 0x49, 0x35, - 0xfb, 0x5c, 0x26, 0xdb, 0x39, 0xf7, 0x30, 0xe7, 0xe7, 0xab, 0xb2, 0xda, - 0x1e, 0x6d, 0xda, 0x5, 0x66, 0x44, 0x49, 0x79, 0x3e, 0x1b, 0xfb, 0x11, - 0x74, 0xbd, 0xae, 0x8c, 0x1f, 0xa7, 0xeb, 0x15, 0xd1, 0xaa, 0xd9, 0xa6, - 0xc7, 0x1b, 0xcb, 0xc4, 0x6c, 0x49, 0x8c, 0x1f, 0xe, 0x5f, 0xa, 0xf7, - 0x82, 0xf8, 0x76, 0x15, 0xf7, 0xd9, 0xd9, 0x77, 0xf0, 0xfb, 0xcf, 0xfb, - 0xc, 0x5, 0x34, 0xfc, 0x13, 0x32, 0xa, 0x61, 0xa, 0xf7, 0x73, 0x77, - 0x76, 0xa, 0xf7, 0x5c, 0xf8, 0x73, 0x15, 0xf7, 0x40, 0xf4, 0xf7, 0x11, - 0x22, 0xcc, 0xad, 0xfb, 0x14, 0xf7, 0x24, 0x66, 0xa, 0xfb, 0x52, 0xfb, - 0x23, 0x5, 0x85, 0xfb, 0xf8, 0x35, 0xa, 0xfb, 0x49, 0x93, 0xa, 0xd2, - 0x31, 0xa, 0x61, 0xa, 0xce, 0xf7, 0x10, 0x76, 0xa, 0xf8, 0x25, 0xf8, - 0x89, 0x6d, 0xa, 0xa5, 0xf7, 0x10, 0x83, 0xa, 0xfb, 0x66, 0xfb, 0x10, - 0x5a, 0xa, 0xa4, 0xf7, 0x10, 0x65, 0xa, 0x28, 0xfc, 0x67, 0x32, 0xa, - 0x5f, 0xa, 0xf7, 0x6e, 0xf8, 0xc3, 0x15, 0xf7, 0xc3, 0x3e, 0xaf, 0xc5, - 0xfb, 0xa7, 0xf7, 0xd, 0x5, 0xfb, 0x21, 0xfc, 0x8b, 0x35, 0xa, 0xfb, - 0x4a, 0x93, 0xa, 0xd3, 0x3c, 0xf7, 0x2a, 0xea, 0xd9, 0xa0, 0xb5, 0xdd, - 0x1f, 0x81, 0xdc, 0x2f, 0xa, 0x7c, 0xe7, 0xf7, 0x49, 0xea, 0xf7, 0x3e, - 0xe8, 0x12, 0xc2, 0xf0, 0x6e, 0xed, 0xf7, 0x45, 0xeb, 0x56, 0xee, 0x13, - 0xf4, 0xf7, 0x47, 0xf7, 0xc9, 0x15, 0x46, 0x62, 0x54, 0x49, 0x3d, 0x1a, - 0x2c, 0xf0, 0x5f, 0xe3, 0xf7, 0x3d, 0xdf, 0xf7, 0x6, 0xe3, 0x8c, 0x1e, - 0x8c, 0xbe, 0x7b, 0xb3, 0x60, 0xab, 0x8, 0x13, 0xea, 0xc9, 0xb0, 0xb5, - 0xc7, 0xd4, 0x1a, 0xdb, 0x45, 0xc3, 0x23, 0xfb, 0x1c, 0x20, 0x29, 0x25, - 0x61, 0x9c, 0x67, 0xae, 0x6e, 0x1e, 0xb9, 0xf7, 0x0, 0x15, 0xc5, 0xc1, - 0xbb, 0xd2, 0xd5, 0xa1, 0x67, 0x6a, 0x8a, 0x1e, 0x4b, 0x47, 0x66, 0x51, - 0x58, 0x60, 0xa3, 0xb3, 0x1e, 0x13, 0xf4, 0x46, 0xfb, 0x9b, 0x15, 0xc8, - 0xd4, 0xb6, 0xcf, 0xd2, 0xaa, 0x6c, 0x67, 0x8e, 0x1e, 0x46, 0x42, 0x5e, - 0x4e, 0x48, 0x5e, 0xaf, 0xb4, 0x1e, 0xe, 0x7c, 0xf7, 0x17, 0x1, 0xa3, - 0xf7, 0x21, 0xca, 0xf7, 0x21, 0xcc, 0xf7, 0x21, 0x3, 0xa3, 0xaf, 0x15, - 0x60, 0xa, 0xa7, 0x7a, 0xa5, 0x63, 0x54, 0x6e, 0x5f, 0x67, 0x1e, 0xf8, - 0x2e, 0x50, 0xa, 0xfb, 0x62, 0x50, 0xa, 0xe, 0xf7, 0x5f, 0xef, 0x1, - 0x75, 0xf9, 0x5, 0x3, 0x75, 0xf7, 0x5f, 0x15, 0xf9, 0x5, 0x6, 0x9e, - 0xef, 0x5, 0xfd, 0x5, 0x6, 0xe, 0xf7, 0x5f, 0xef, 0x1, 0xc0, 0xf8, - 0x6f, 0x3, 0xc0, 0xf7, 0x5f, 0x15, 0xf8, 0x6f, 0x6, 0x9e, 0xef, 0x5, - 0xfc, 0x6f, 0x6, 0xe, 0xf7, 0xa, 0xf2, 0xd5, 0xf2, 0x1, 0xb4, 0xf8, - 0x64, 0x3, 0xd6, 0xf7, 0xbb, 0x15, 0xf8, 0x65, 0x6, 0x9e, 0xf2, 0x5, - 0xfc, 0x64, 0x6, 0x55, 0xfb, 0xac, 0x15, 0xf8, 0x64, 0x6, 0x9f, 0xf2, - 0x5, 0xfc, 0x65, 0x6, 0xe, 0x70, 0xe2, 0xf7, 0x95, 0xe1, 0x91, 0xa, - 0x9b, 0xf7, 0x0, 0xf7, 0xed, 0xf7, 0x7, 0x3, 0xf7, 0x80, 0xf8, 0x42, - 0x15, 0xf7, 0x1d, 0xc1, 0xd0, 0x62, 0xa8, 0x4a, 0x8c, 0x87, 0x19, 0x9d, - 0x6d, 0x78, 0x96, 0x44, 0x1b, 0xfb, 0x5c, 0xfb, 0x1c, 0xfb, 0x1, 0xfb, - 0x2c, 0x31, 0xd5, 0x3c, 0xf7, 0x35, 0xf7, 0x80, 0xec, 0xf7, 0x2c, 0xf7, - 0x41, 0xf7, 0x10, 0x39, 0xd4, 0x63, 0xa5, 0x1f, 0xf7, 0xb, 0xbf, 0x74, - 0xc0, 0xfb, 0x2d, 0x46, 0x6c, 0x9d, 0x3f, 0xa7, 0x60, 0x93, 0x19, 0x4f, - 0x58, 0xb1, 0x84, 0xbc, 0x77, 0xac, 0x7d, 0x19, 0x22, 0x5d, 0x5, 0x35, - 0xfb, 0xd0, 0x15, 0xf7, 0x0, 0xf7, 0x7, 0xbf, 0xe4, 0xf2, 0xb1, 0x58, - 0x55, 0x23, 0xfb, 0x7, 0x5b, 0x39, 0x3e, 0x44, 0xa8, 0xcf, 0x1e, 0xe, - 0x7c, 0xf7, 0x2e, 0xf8, 0x45, 0x77, 0x1, 0xf7, 0x34, 0xf7, 0x5d, 0x3, - 0xf7, 0x80, 0xf7, 0x48, 0x15, 0xee, 0x6, 0xf3, 0xf8, 0x1c, 0x5, 0xfb, - 0x1e, 0x6, 0xfb, 0x21, 0xfc, 0xa1, 0x15, 0x5f, 0xbf, 0x79, 0xac, 0xc9, - 0xc1, 0xb2, 0xc3, 0xab, 0x6b, 0xa6, 0x56, 0x43, 0x5f, 0x5b, 0x5f, 0x1e, - 0xe, 0xfb, 0x11, 0x76, 0xf8, 0x4b, 0xf7, 0x30, 0x1, 0xf7, 0x83, 0xf7, - 0x5d, 0x3, 0xf7, 0x83, 0xf7, 0xf9, 0x15, 0x69, 0xa9, 0x6d, 0xc0, 0xd4, - 0xb8, 0xb1, 0xc0, 0xbb, 0x57, 0x9c, 0x6a, 0x4e, 0x54, 0x66, 0x54, 0x1e, - 0x3c, 0xfc, 0x8b, 0x15, 0xf7, 0x1f, 0x6, 0xcb, 0xf8, 0x22, 0x7b, 0xa, - 0xe, 0x8b, 0xe9, 0xf7, 0x90, 0xe8, 0xea, 0xe6, 0x1, 0xf7, 0x87, 0xf3, - 0x3, 0xb6, 0x16, 0xf8, 0x49, 0x55, 0xa, 0xfb, 0x77, 0x6, 0xc0, 0xf7, - 0x90, 0x5, 0xf7, 0x78, 0x89, 0xa, 0xfb, 0x77, 0x6, 0xd5, 0x9c, 0x93, - 0xa0, 0xdb, 0x1b, 0xbc, 0xc0, 0x82, 0x83, 0xb8, 0x1f, 0xb1, 0xe8, 0x3e, - 0x95, 0x52, 0x91, 0x5c, 0x8a, 0x19, 0x58, 0x8a, 0x65, 0x83, 0x66, 0x78, - 0x55, 0x6d, 0x7c, 0x5a, 0x80, 0x58, 0x84, 0x6f, 0x18, 0x21, 0x6, 0x77, - 0x2e, 0x5, 0xf5, 0x6, 0x55, 0xfb, 0x90, 0x5, 0x21, 0x6, 0xe, 0xf8, - 0x75, 0xf8, 0x74, 0x15, 0xf5, 0x6, 0xa8, 0xf7, 0x26, 0x5, 0x21, 0x6, - 0xfb, 0x68, 0xfd, 0x6, 0x15, 0xf7, 0xb4, 0x37, 0xa, 0x29, 0x6, 0xcc, - 0xf7, 0xd8, 0x5, 0xfb, 0x48, 0x3c, 0xa, 0xe1, 0x6, 0x5e, 0xfb, 0x7e, - 0x66, 0xa, 0xfb, 0xe0, 0x31, 0x15, 0xf7, 0xb6, 0x37, 0xa, 0x28, 0x6, - 0xb9, 0xf7, 0x7e, 0x5, 0xee, 0x37, 0xa, 0x28, 0x6, 0x99, 0xc9, 0x99, - 0xc2, 0xe1, 0x7c, 0xad, 0x88, 0x19, 0xab, 0xe5, 0xfb, 0x2, 0x90, 0xfb, - 0xe, 0x88, 0x6d, 0xfb, 0x1e, 0x19, 0x7f, 0x56, 0x5, 0x29, 0x3c, 0xa, - 0xed, 0x6, 0x5e, 0xfb, 0x7e, 0x4e, 0xa, 0xe, 0x7c, 0xe7, 0xf7, 0x7e, - 0xe7, 0xf4, 0xe8, 0x1, 0xf8, 0x37, 0xef, 0x3, 0xa7, 0xaf, 0x15, 0x7d, - 0xad, 0xe6, 0x66, 0xe3, 0x1b, 0xf7, 0x43, 0xf2, 0xf7, 0xe, 0xf7, 0x17, - 0xde, 0x55, 0xdd, 0xfb, 0x10, 0x6a, 0x5c, 0x85, 0x77, 0x75, 0x1f, 0xa6, - 0xf7, 0x17, 0x5, 0xf7, 0xb3, 0x94, 0xa, 0xfc, 0x15, 0x6, 0x4b, 0xfb, - 0xd8, 0xcd, 0x71, 0x5, 0xc7, 0xbb, 0xb4, 0x8b, 0xa6, 0x1b, 0xcb, 0xbd, - 0x61, 0x52, 0x3f, 0x4b, 0x50, 0x2d, 0x49, 0x4f, 0x9d, 0xa1, 0x53, 0x1f, - 0xe, 0x8b, 0xe8, 0xf7, 0x86, 0xe9, 0xef, 0xe8, 0x8f, 0x77, 0x12, 0x13, - 0xd0, 0xf7, 0xbf, 0x16, 0xf7, 0xb8, 0x94, 0xa, 0x27, 0x6, 0xf5, 0xf8, - 0xa9, 0x5, 0xfb, 0x1b, 0x82, 0xa, 0xb5, 0x6, 0x34, 0xfc, 0x4c, 0x7b, - 0xa, 0xfb, 0xe1, 0x2e, 0x15, 0xf7, 0xb9, 0x6, 0x9d, 0xe8, 0x5, 0x27, - 0x6, 0xbc, 0xf7, 0x86, 0x5, 0xee, 0x6, 0x9d, 0xe9, 0x5, 0x27, 0x6, - 0x9a, 0xc2, 0x5, 0x13, 0xe0, 0x97, 0xc3, 0xe9, 0x7e, 0xad, 0x8d, 0xaa, - 0xe8, 0x18, 0xfb, 0x16, 0x8e, 0xfb, 0x0, 0x8a, 0x6e, 0xfb, 0x22, 0x80, - 0x56, 0x18, 0x27, 0x44, 0xa, 0xef, 0x6, 0x5b, 0xfb, 0x86, 0x7b, 0xa, - 0xe, 0xfb, 0x17, 0xea, 0xf8, 0x6, 0xea, 0xe8, 0xe9, 0x1, 0xf7, 0xc3, - 0xee, 0x3, 0x8d, 0x6d, 0x15, 0x3b, 0x2e, 0x5, 0x88, 0xa7, 0xc0, 0x86, - 0xbd, 0x1b, 0xdc, 0xe8, 0xa8, 0xf1, 0xb3, 0x1f, 0xf7, 0x1b, 0xf7, 0xe2, - 0x5, 0xf7, 0x3, 0x6, 0xb1, 0xea, 0x65, 0xa, 0xd0, 0xaa, 0xa3, 0xa3, - 0xc2, 0x1b, 0xa4, 0xaa, 0x87, 0x88, 0xa0, 0x1f, 0xc1, 0xe9, 0x5, 0x90, - 0x5e, 0x8b, 0x8d, 0x65, 0x1b, 0xfb, 0x10, 0x43, 0x5c, 0x22, 0x5f, 0x1f, - 0x7b, 0x68, 0x5, 0x20, 0x6, 0x64, 0x2c, 0x5, 0xf7, 0x1, 0x6, 0xfb, - 0x5, 0xfb, 0xae, 0x5, 0x3e, 0x6d, 0x74, 0x80, 0x50, 0x1b, 0x71, 0x70, - 0x8f, 0x8d, 0x74, 0x1f, 0xe, 0x8b, 0xe8, 0xd6, 0xe8, 0xf7, 0xf7, 0x77, - 0x1, 0xf7, 0xd0, 0xef, 0x3, 0xc9, 0xf7, 0x3c, 0x15, 0xf7, 0xa4, 0x6, - 0x79, 0x40, 0x5, 0xfb, 0x0, 0x82, 0xa, 0xf7, 0xbd, 0x89, 0xa, 0x31, - 0x6, 0x9c, 0xd6, 0x5, 0xe0, 0x89, 0xa, 0x35, 0x6, 0xd4, 0xf7, 0xf7, - 0x5, 0xfb, 0x0, 0x6, 0xfb, 0xe5, 0xfc, 0x4, 0x5, 0xf7, 0x6, 0x98, - 0x15, 0xf7, 0x62, 0xf7, 0x7d, 0x5b, 0xfb, 0x7d, 0x5, 0xe, 0x61, 0xf9, - 0x41, 0x3, 0x61, 0x83, 0x15, 0xc8, 0x57, 0xf9, 0x4, 0xf9, 0x34, 0x4b, - 0xbc, 0x5, 0xe, 0xfb, 0x26, 0xe5, 0xea, 0xe3, 0xf7, 0x6f, 0xe4, 0x45, - 0xe4, 0x12, 0xb1, 0xed, 0x13, 0xe8, 0xb8, 0x73, 0x15, 0x62, 0x31, 0x5, - 0x79, 0xdb, 0xd0, 0x7d, 0xd5, 0x1b, 0xf7, 0x50, 0xb4, 0xe7, 0xf2, 0xa0, - 0x1f, 0xc9, 0xf7, 0xbd, 0x5c, 0xa, 0x9e, 0xe4, 0x5, 0xfb, 0x3d, 0x6, - 0x83, 0x6b, 0x5, 0x13, 0xd8, 0xa8, 0x6a, 0x5f, 0xa1, 0x58, 0x1b, 0xfb, - 0x2e, 0xfb, 0x1f, 0xfb, 0x0, 0xfb, 0x1b, 0x27, 0xd6, 0x43, 0xf7, 0x14, - 0xbe, 0xc0, 0x8e, 0xa9, 0xb8, 0x1f, 0x2c, 0x77, 0x81, 0x6a, 0xfb, 0x9, - 0x1b, 0x41, 0x33, 0xa0, 0x96, 0x67, 0x1f, 0xe6, 0xf7, 0x8e, 0x15, 0xdb, - 0xe1, 0xc6, 0xe1, 0xd4, 0xb9, 0x60, 0x4e, 0x8a, 0x1e, 0x33, 0x41, 0x5d, - 0x2c, 0x4a, 0x53, 0xb2, 0xc7, 0x1e, 0xe, 0xfb, 0x26, 0xde, 0xe3, 0xdc, - 0xf7, 0x70, 0xdd, 0x1, 0x9d, 0xed, 0x3, 0xa4, 0x6a, 0x15, 0x62, 0x38, - 0x5, 0x7a, 0xdb, 0xd0, 0x7e, 0xd5, 0x1b, 0xf7, 0x50, 0xb4, 0xe0, 0xea, - 0xa0, 0x1f, 0xc9, 0xf7, 0xae, 0x5c, 0xa, 0x9e, 0xdd, 0x5, 0xfb, 0x3d, - 0x6, 0x83, 0x66, 0x5, 0xa6, 0x6a, 0x5f, 0x9f, 0x58, 0x1b, 0xfb, 0x2e, - 0xfb, 0x1f, 0x27, 0xfb, 0x10, 0x2e, 0xd6, 0x49, 0xf7, 0x14, 0xbe, 0xc0, - 0x8e, 0xa6, 0xb8, 0x1f, 0x34, 0x77, 0x81, 0x6c, 0xfb, 0x9, 0x1b, 0x41, - 0x33, 0x9e, 0x96, 0x67, 0x1f, 0xe6, 0xf7, 0x7a, 0x15, 0xd5, 0xe1, 0xc2, - 0xe1, 0xd4, 0xb9, 0x63, 0x53, 0x8a, 0x1e, 0x39, 0x41, 0x61, 0x2c, 0x4a, - 0x53, 0xaf, 0xc2, 0x1e, 0xf7, 0x65, 0xf7, 0xb5, 0x15, 0xee, 0x6, 0xf7, - 0x54, 0xf7, 0x24, 0x57, 0xaf, 0xfb, 0x46, 0x5e, 0xa, 0x7c, 0xe9, 0x39, - 0xe9, 0xf7, 0x90, 0xe9, 0xf5, 0xde, 0x12, 0xf7, 0xb1, 0xed, 0xf7, 0xe, - 0xed, 0x13, 0x7c, 0x88, 0x88, 0x15, 0xf7, 0x45, 0x6, 0xe6, 0xf8, 0x56, - 0x5, 0xdf, 0x9b, 0xad, 0x97, 0xdd, 0x1b, 0xbe, 0xb7, 0x82, 0x6a, 0x6b, - 0x40, 0x77, 0x74, 0x86, 0x1f, 0x4d, 0x7d, 0x5c, 0x56, 0x46, 0x1a, 0x4f, - 0xc9, 0x74, 0xcb, 0x73, 0x1e, 0xaa, 0x80, 0xca, 0x81, 0x6f, 0x1a, 0x13, - 0xbc, 0x69, 0x4d, 0x64, 0x4d, 0x66, 0x62, 0x9d, 0x97, 0x70, 0x1e, 0x46, - 0x46, 0x5, 0x67, 0xc2, 0xb0, 0x78, 0xc2, 0x1b, 0xf7, 0x1f, 0xf7, 0x2, - 0xda, 0xf6, 0xca, 0x46, 0xa4, 0x4c, 0xa0, 0x1f, 0x71, 0x93, 0x4d, 0x99, - 0xad, 0x1a, 0xa3, 0xbc, 0x9e, 0xa7, 0x94, 0x1e, 0xcd, 0xa0, 0xc9, 0xa1, - 0xd3, 0x1a, 0xd6, 0x77, 0xbb, 0xfb, 0x3f, 0xfb, 0x2f, 0x5c, 0x55, 0xfb, - 0x5, 0x74, 0x1e, 0x86, 0x75, 0x5, 0x3b, 0x6f, 0xa, 0xdd, 0x6, 0x13, - 0x7c, 0x59, 0xfb, 0x90, 0x5, 0x38, 0x6, 0xe, 0xf7, 0x4c, 0xf7, 0x7b, - 0x3, 0xf7, 0x4c, 0xf8, 0xcf, 0x15, 0xf7, 0x63, 0x4c, 0xa3, 0xbc, 0xfb, - 0x50, 0xf3, 0x5, 0xe, 0xaf, 0x76, 0xf8, 0x7a, 0x77, 0x1, 0xc1, 0x9a, - 0x15, 0xf8, 0x6b, 0xf7, 0x4b, 0xa0, 0xf7, 0xa, 0xfc, 0x25, 0xf7, 0x4d, - 0x7a, 0x2d, 0xf7, 0xd1, 0xfb, 0x2a, 0xfc, 0xa, 0xfb, 0x28, 0x5, 0xe, - 0xd1, 0xc5, 0xf7, 0x96, 0xc7, 0x1, 0xc5, 0xf7, 0x5, 0xf7, 0x2, 0xf7, - 0x5, 0x3, 0xc5, 0xf7, 0x9b, 0x51, 0xa, 0x9c, 0xfb, 0x4b, 0x51, 0xa, - 0xe, 0xe6, 0x76, 0xf8, 0xc, 0x77, 0x1, 0xf7, 0x86, 0xf7, 0xa, 0xd0, - 0xf7, 0x5, 0x3, 0xc5, 0xf7, 0x19, 0x15, 0xaf, 0x4c, 0xf7, 0x9e, 0xf7, - 0x4e, 0xfb, 0x5e, 0xf7, 0x52, 0x53, 0x4d, 0xf7, 0x20, 0xfb, 0x13, 0x5, - 0x9a, 0xfb, 0x10, 0x15, 0xae, 0x4c, 0xf7, 0x8e, 0xf7, 0x4e, 0xfb, 0x4c, - 0xf7, 0x52, 0x53, 0x4d, 0xf7, 0x13, 0xfb, 0x13, 0x5, 0xe, 0xd1, 0xf8, - 0xc, 0x1, 0xf7, 0x12, 0xf7, 0xbd, 0x3, 0xf7, 0x12, 0xf7, 0x97, 0x15, - 0xf7, 0x7f, 0xfb, 0x51, 0xc9, 0xbf, 0xfb, 0x3f, 0xf7, 0x1c, 0xf7, 0x72, - 0xf7, 0x11, 0x65, 0xca, 0x5, 0xe, 0xd1, 0xf8, 0xc, 0x1, 0xf7, 0x12, - 0xf7, 0x18, 0x15, 0xb2, 0x4d, 0xf7, 0xc9, 0xf7, 0x51, 0xfb, 0x7a, 0xf7, - 0x4f, 0x4b, 0x56, 0xf7, 0x3d, 0xfb, 0x12, 0x5, 0xe, 0x81, 0xa, 0xf1, - 0xec, 0x3, 0x8d, 0x16, 0xf7, 0x94, 0x55, 0xa, 0x3c, 0x6, 0xb2, 0xf7, - 0x57, 0x5, 0xbc, 0xdc, 0xc4, 0x94, 0xa7, 0x1b, 0xb1, 0x9f, 0x7b, 0x76, - 0x82, 0x89, 0x81, 0x89, 0x81, 0x1f, 0x66, 0xfb, 0x4f, 0x5, 0x3b, 0x6f, - 0xa, 0xf7, 0x96, 0x3f, 0xa, 0x3a, 0x6, 0xaf, 0xf7, 0x48, 0x5, 0x8f, - 0x9c, 0x8f, 0x9d, 0x9d, 0x1a, 0xc5, 0x77, 0xc2, 0xfb, 0x8, 0x4f, 0x57, - 0x76, 0x71, 0x55, 0x1e, 0xbb, 0xf7, 0x7d, 0x5, 0xfb, 0x46, 0x44, 0xa, - 0xdd, 0x6, 0x31, 0xfc, 0x4a, 0x5, 0x3a, 0x6, 0xe, 0xf8, 0x7c, 0xf7, - 0x41, 0x1, 0xba, 0xc2, 0xf7, 0x34, 0xc2, 0x3, 0xf7, 0x9a, 0xf8, 0x8f, - 0x15, 0xc2, 0x78, 0xf7, 0x80, 0xf7, 0x23, 0x31, 0xa9, 0x5, 0xfc, 0x34, - 0xfb, 0x2e, 0x15, 0xc2, 0x78, 0xf7, 0x82, 0xf7, 0x23, 0x31, 0xa9, 0x5, - 0xe, 0xf7, 0x5f, 0xf7, 0x2, 0x1, 0xe3, 0xf8, 0x25, 0x3, 0xe3, 0xf7, - 0x5f, 0x15, 0xf8, 0x25, 0x6, 0xa2, 0xf7, 0x2, 0x5, 0xfc, 0x25, 0x6, - 0xe, 0x8b, 0xea, 0xf7, 0x93, 0xea, 0xc9, 0xf7, 0x2b, 0x1, 0xf7, 0xf3, - 0xf7, 0x4, 0x3, 0xf7, 0xd4, 0x69, 0xa, 0xfb, 0xbb, 0xfd, 0x26, 0x15, - 0xf8, 0x54, 0x6, 0x9f, 0xea, 0x8f, 0xa, 0x6, 0xd1, 0xf7, 0xf2, 0x5, - 0xfb, 0x7f, 0x6, 0x77, 0x2c, 0x5, 0xf7, 0x1d, 0x6, 0x59, 0xfb, 0x93, - 0x5, 0xfb, 0x44, 0x6, 0xe, 0x78, 0xa, 0x91, 0xa, 0xf7, 0x7e, 0xf8, - 0x77, 0x15, 0xf7, 0xdf, 0xd8, 0x78, 0xf0, 0xfb, 0xd6, 0xfb, 0xc, 0x5, - 0xfb, 0x48, 0xfc, 0xb1, 0x2e, 0xa, 0x78, 0xa, 0xf7, 0x6f, 0x77, 0x1, - 0xf7, 0x5f, 0xf8, 0x74, 0x15, 0xf7, 0x37, 0xf3, 0xf7, 0x9, 0x23, 0xc8, - 0xae, 0xfb, 0xc, 0xf7, 0x22, 0x5, 0x30, 0x6, 0xfb, 0x48, 0xfb, 0x21, - 0x5, 0xfb, 0x1, 0xfc, 0x98, 0x2e, 0xa, 0x78, 0xa, 0xc9, 0xf7, 0x11, - 0x1, 0xf8, 0x27, 0xf8, 0x89, 0x15, 0xf7, 0x1, 0x89, 0xa4, 0xf7, 0x12, - 0x86, 0xa, 0xfb, 0x5e, 0xfb, 0x10, 0x15, 0xf7, 0x0, 0x6, 0xa4, 0xf7, - 0x10, 0x5, 0xfb, 0x1, 0x6, 0xfb, 0x61, 0xfd, 0x5, 0x2e, 0xa, 0x78, - 0xa, 0x91, 0xa, 0xf7, 0x73, 0xf8, 0xc4, 0x15, 0xf7, 0xaa, 0x3e, 0xac, - 0xc5, 0xfb, 0x90, 0xf7, 0xc, 0x5, 0xfb, 0x82, 0xfd, 0x29, 0x2e, 0xa, - 0xfb, 0x26, 0xea, 0xf8, 0x35, 0xe6, 0xbd, 0xf7, 0x2b, 0xfb, 0x25, 0xf7, - 0x25, 0x12, 0x13, 0xe0, 0xf7, 0x20, 0x69, 0xa, 0xfb, 0x61, 0xfd, 0x59, - 0x15, 0x77, 0x2c, 0x5, 0xf7, 0x82, 0x6, 0x9f, 0xea, 0x5, 0x41, 0x6, - 0xf7, 0x2, 0xf8, 0x84, 0x5, 0xfb, 0x39, 0x6, 0x77, 0x2c, 0x5, 0xce, - 0x6, 0x31, 0xfc, 0x25, 0x5, 0x13, 0xd0, 0xf8, 0x69, 0xf8, 0xc8, 0x15, - 0xf7, 0xc, 0x6, 0xac, 0xf7, 0x25, 0x5, 0xfb, 0xd, 0x6, 0xfb, 0xa1, - 0xfd, 0x4a, 0x15, 0x5e, 0x30, 0x5, 0x86, 0x9a, 0xa4, 0x7d, 0xc5, 0x1b, - 0xf7, 0x4b, 0x9e, 0x8b, 0xa, 0xfb, 0x67, 0x6e, 0xa, 0xf4, 0x6, 0x44, - 0xfb, 0xce, 0x5, 0x45, 0x7b, 0x6c, 0x66, 0x61, 0x1b, 0x57, 0x7f, 0x9a, - 0x8f, 0x81, 0x1f, 0xe, 0xfb, 0x26, 0xe6, 0xf8, 0x39, 0xe6, 0xc3, 0xf7, - 0x25, 0x1, 0xf7, 0xc5, 0xf4, 0x3, 0xf8, 0xf, 0xf8, 0x95, 0x15, 0xf7, - 0xb, 0x6, 0xac, 0xf7, 0x25, 0x5, 0xfb, 0xc, 0x6, 0xfc, 0xe, 0xfd, - 0x4a, 0x15, 0x5e, 0x30, 0x5, 0x82, 0xc1, 0xc2, 0x81, 0xc5, 0x1b, 0xf7, - 0x66, 0xab, 0x8b, 0xa, 0xfc, 0x7, 0x6e, 0xa, 0xf7, 0x9d, 0x6, 0x44, - 0xfb, 0xce, 0x5, 0x45, 0x7b, 0x6a, 0x66, 0x3b, 0x1b, 0x57, 0x5d, 0x93, - 0x96, 0x5e, 0x1f, 0xe, 0x8b, 0xe9, 0x1, 0xe9, 0xd9, 0xf7, 0x15, 0xf7, - 0x91, 0x3, 0x87, 0x16, 0xf7, 0x44, 0x6, 0xae, 0xf7, 0x3d, 0xb2, 0xa3, - 0xb1, 0x72, 0xae, 0x68, 0xa7, 0x64, 0x19, 0x6f, 0x87, 0xa, 0xf7, 0x91, - 0x6, 0x9d, 0xe9, 0x5, 0x21, 0x6, 0x6a, 0xbd, 0x44, 0xcc, 0x68, 0xac, - 0xf7, 0x2a, 0xf2, 0x18, 0xf7, 0x0, 0x55, 0xa, 0xfb, 0xa3, 0x6f, 0xa, - 0x9f, 0x6, 0x20, 0x43, 0xd3, 0xf7, 0xf5, 0x5, 0xfb, 0x44, 0x6f, 0xa, - 0xdb, 0x6, 0x32, 0xfc, 0x4a, 0x5, 0x3c, 0x6, 0xe, 0x81, 0xa, 0xf7, - 0x98, 0xee, 0x3, 0xcd, 0x16, 0xf8, 0x54, 0x6, 0x9f, 0xe9, 0x3e, 0xa, - 0xf7, 0x1, 0xf8, 0xa8, 0x5, 0xfb, 0x94, 0x87, 0xa, 0xf7, 0x30, 0x6, - 0x31, 0xfc, 0x4a, 0x8f, 0xa, 0x6, 0xe, 0xaf, 0x76, 0xf8, 0x7a, 0x77, - 0x1, 0xc1, 0xf7, 0x5c, 0x15, 0xf8, 0x25, 0xfb, 0x4d, 0x9c, 0xe9, 0xfb, - 0xd1, 0xf7, 0x2a, 0xf8, 0x9, 0xf7, 0x28, 0x9c, 0xe9, 0xfc, 0x6a, 0xfb, - 0x4b, 0x5, 0xe, 0x84, 0x76, 0xb0, 0x76, 0xf7, 0x46, 0xde, 0xce, 0xde, - 0xf7, 0xb, 0xe8, 0x12, 0xf7, 0x3f, 0xea, 0x13, 0xbc, 0x52, 0xa, 0x13, - 0x7c, 0x3d, 0xa, 0x7c, 0x7f, 0x88, 0x83, 0x7f, 0x1f, 0x9c, 0x9a, 0xa8, - 0xbe, 0x89, 0x8e, 0x8, 0xf7, 0x47, 0x6, 0x9f, 0xde, 0x5, 0xfb, 0x3e, - 0x6, 0x89, 0x92, 0x91, 0xa8, 0x8a, 0xaa, 0x8, 0xf7, 0x27, 0x6, 0x9f, - 0xde, 0x5, 0xfb, 0x3a, 0x92, 0x6, 0xcb, 0xab, 0x47, 0xa, 0x3f, 0x3e, - 0xfb, 0x10, 0x1f, 0x80, 0x3b, 0x7, 0x78, 0x38, 0x5, 0xeb, 0x6, 0x6c, - 0x83, 0x6e, 0x8c, 0x84, 0x1e, 0x27, 0x6, 0x78, 0x38, 0x5, 0xe8, 0x6, - 0x8c, 0x6f, 0x67, 0x56, 0x43, 0x5a, 0x8, 0xe, 0xf7, 0xc0, 0xf7, 0x5, - 0x1, 0xf8, 0x18, 0xee, 0x3, 0xc6, 0xf7, 0xc0, 0x15, 0xf7, 0xff, 0x6, - 0x69, 0xfb, 0x59, 0x5, 0xee, 0x6, 0xc1, 0xf7, 0xca, 0x5, 0xfc, 0x63, - 0x6, 0xe, 0x81, 0xa, 0xf7, 0x91, 0xf4, 0x3, 0xbc, 0x16, 0xf8, 0x6d, - 0x55, 0xa, 0xfb, 0x4c, 0x6, 0xbb, 0xf7, 0x73, 0xf7, 0x16, 0xaa, 0x99, - 0xcd, 0xfb, 0x15, 0x6b, 0xc0, 0xf7, 0x88, 0x5, 0xfb, 0xae, 0x6, 0x76, - 0x2d, 0x5, 0xf7, 0x46, 0x6, 0x64, 0xfb, 0x45, 0xfb, 0x18, 0x6a, 0x7e, - 0x4a, 0xf7, 0x17, 0xab, 0x60, 0xfb, 0x57, 0x5, 0xfb, 0x4b, 0x6, 0xe, - 0x8b, 0xea, 0xf7, 0x90, 0xea, 0x1, 0xd4, 0xdd, 0xf5, 0xee, 0x3, 0x76, - 0x16, 0xf7, 0x8a, 0x6, 0x9c, 0xea, 0x5, 0x34, 0x6, 0xb6, 0xf7, 0x7b, - 0x5, 0x9c, 0xa0, 0xb0, 0x9b, 0xa1, 0x1b, 0xaa, 0x96, 0x77, 0x78, 0x86, - 0x8b, 0x87, 0x8a, 0x87, 0x1f, 0x51, 0xfb, 0xc7, 0x5, 0xf7, 0x35, 0x6, - 0x9b, 0xea, 0x5, 0x3d, 0x6, 0xb6, 0xf7, 0x73, 0x5, 0xab, 0xa7, 0xae, - 0x94, 0x9b, 0x1b, 0xad, 0x97, 0x6f, 0x81, 0x89, 0x1f, 0x4f, 0xfb, 0xd5, - 0x5, 0xf7, 0x1f, 0x6, 0x9b, 0xea, 0x5, 0x53, 0x6, 0xb7, 0xf7, 0x72, - 0x5, 0x8d, 0x95, 0x8c, 0x96, 0x94, 0x1a, 0xc9, 0x65, 0xb8, 0x46, 0x62, - 0x5f, 0x79, 0x6c, 0x6a, 0x1e, 0xb5, 0x7b, 0x66, 0x92, 0x75, 0x1b, 0x6c, - 0x6c, 0x7f, 0x73, 0x73, 0x1f, 0x8e, 0xa3, 0x5, 0xfb, 0x3b, 0x6, 0x79, - 0x2c, 0x5c, 0xa, 0x5a, 0xfb, 0x90, 0x5, 0x3d, 0x6, 0xe, 0xf8, 0x8d, - 0xdb, 0x1, 0xda, 0xf8, 0x3b, 0x3, 0xda, 0xf8, 0x8d, 0x15, 0xf8, 0x3b, - 0x6, 0x9d, 0xdb, 0x5, 0xfc, 0x3b, 0x6, 0xe, 0xf7, 0x5f, 0xf7, 0x2, - 0x1, 0xc6, 0xf8, 0x63, 0x3, 0xc6, 0xf7, 0x5f, 0x73, 0xa, 0xe, 0xfb, - 0xd, 0x76, 0xf7, 0x2a, 0xe0, 0x42, 0xe4, 0xf7, 0x85, 0xe4, 0x12, 0x13, - 0xd0, 0xa8, 0xfb, 0x22, 0x15, 0xeb, 0x6, 0xb1, 0xf7, 0x48, 0x5, 0x7d, - 0x98, 0x9d, 0x7b, 0xb2, 0x1b, 0xcc, 0xb8, 0xab, 0xab, 0xb7, 0x1f, 0x13, - 0xb0, 0x7f, 0x57, 0x5, 0xf7, 0x44, 0x6, 0x9e, 0xe4, 0x5, 0x3b, 0x6, - 0xcf, 0xf7, 0xde, 0x8d, 0xa, 0x63, 0xfb, 0x57, 0x5, 0x13, 0xd0, 0x68, - 0x5c, 0x62, 0x70, 0x50, 0x1b, 0x5f, 0x74, 0xa1, 0xad, 0x92, 0x8b, 0x94, - 0x8d, 0x93, 0x1f, 0xc1, 0xf7, 0x9e, 0x8d, 0xa, 0xe, 0xbc, 0xf8, 0x4e, - 0x3, 0xbc, 0xef, 0x15, 0xbc, 0x4e, 0xf7, 0x52, 0xf7, 0x35, 0xf7, 0x15, - 0xfb, 0x35, 0xd5, 0xc8, 0xfb, 0x15, 0xf7, 0x33, 0xf7, 0x50, 0xf7, 0x30, - 0x5b, 0xc7, 0xfb, 0x53, 0xfb, 0x31, 0xfb, 0x13, 0xf7, 0x34, 0x41, 0x4f, - 0xf7, 0x16, 0xfb, 0x33, 0x5, 0xe, 0x8b, 0xe9, 0xf7, 0x90, 0xea, 0x3b, - 0xe8, 0x12, 0x13, 0xa0, 0x8d, 0x16, 0xf7, 0x96, 0x3f, 0xa, 0x39, 0x6, - 0xb4, 0xf7, 0x5d, 0x5, 0xb6, 0xc6, 0xd3, 0xa2, 0xaa, 0x1b, 0xbd, 0x9a, - 0x7a, 0x72, 0x82, 0x89, 0x81, 0x89, 0x80, 0x1f, 0x64, 0xfb, 0x57, 0x5, - 0x3c, 0x44, 0xa, 0xf7, 0x93, 0x3f, 0xa, 0x3b, 0x6, 0xb7, 0xf7, 0x6d, - 0x5, 0x13, 0xc0, 0x8e, 0x98, 0x8d, 0x96, 0x96, 0x1a, 0x13, 0xa0, 0xd0, - 0x4d, 0xb2, 0x3e, 0x52, 0x4b, 0x6f, 0x6f, 0x5a, 0x1e, 0x13, 0xc0, 0x93, - 0xb6, 0x5, 0xfb, 0x46, 0x6, 0x78, 0x2c, 0x5, 0xde, 0x6, 0x58, 0xfb, - 0x90, 0x5, 0x3b, 0x6, 0xe, 0x7c, 0xe4, 0xf7, 0x1b, 0xe8, 0xf7, 0x70, - 0xe9, 0x1, 0xf7, 0x1d, 0xf1, 0xf7, 0x77, 0xe7, 0x3, 0xb5, 0x82, 0x15, - 0x87, 0xaa, 0xb5, 0x89, 0xbd, 0x1b, 0xf7, 0x5a, 0xf7, 0x57, 0xf7, 0x28, - 0xf7, 0xb0, 0xf2, 0x62, 0xeb, 0xfb, 0x1a, 0xfb, 0x15, 0xfb, 0x9, 0xfb, - 0x5, 0xfb, 0xa, 0x1f, 0x2e, 0x89, 0xce, 0x38, 0xf1, 0x1b, 0xb6, 0xb5, - 0x9d, 0x9b, 0xa8, 0x1f, 0xfb, 0xc, 0x6a, 0xfb, 0x1e, 0x5a, 0xfb, 0x48, - 0x1b, 0xf8, 0x23, 0xf7, 0xc6, 0x15, 0x86, 0x53, 0x42, 0x37, 0x56, 0x69, - 0xb1, 0xc4, 0xdf, 0xdb, 0xb4, 0xbe, 0xe3, 0x97, 0x3d, 0x4b, 0x87, 0x1e, - 0xe, 0x8b, 0xe7, 0xf7, 0x89, 0xe7, 0xf7, 0xc, 0xe0, 0x1, 0xf7, 0x38, - 0xf8, 0x95, 0x15, 0xda, 0x71, 0x5, 0xa4, 0x9a, 0x9c, 0xb0, 0xaf, 0x1b, - 0xa1, 0xa1, 0x7a, 0x7b, 0xa3, 0x1f, 0x7d, 0xa1, 0xa1, 0x7e, 0xa4, 0x1b, - 0xed, 0xbc, 0xe3, 0xaf, 0x9c, 0x1f, 0x3d, 0xa2, 0x5, 0x62, 0x71, 0x7e, - 0x75, 0x6e, 0x1b, 0x78, 0x77, 0x98, 0x98, 0x77, 0x1f, 0x9c, 0x72, 0x72, - 0x9d, 0x6f, 0x1b, 0x2d, 0x5d, 0x3d, 0x60, 0x72, 0x1f, 0xfb, 0x44, 0xfc, - 0x95, 0x15, 0xf7, 0x8c, 0x6, 0x9c, 0xe7, 0x5, 0x3d, 0x6, 0xb1, 0xf7, - 0x56, 0x5, 0xb6, 0xc4, 0xd1, 0xa1, 0xa7, 0x1b, 0xba, 0x9b, 0x7c, 0x75, - 0x81, 0x8a, 0x80, 0x89, 0x7f, 0x1f, 0x66, 0xfb, 0x51, 0x5, 0x3f, 0x6, - 0x78, 0x2f, 0x5, 0xf7, 0x88, 0x6, 0x9d, 0xe7, 0x5, 0x40, 0x6, 0xb4, - 0xf7, 0x66, 0x5, 0x8e, 0x98, 0x8c, 0x97, 0x97, 0x1a, 0xcd, 0x50, 0xb0, - 0x42, 0x55, 0x4b, 0x6f, 0x70, 0x5e, 0x1e, 0x94, 0xb5, 0x5, 0xfb, 0x40, - 0x6, 0x79, 0x2f, 0x8a, 0xa, 0x5a, 0xfb, 0x89, 0x5, 0x3e, 0x6, 0xe, - 0xf7, 0x29, 0xe6, 0xf7, 0x6, 0xe6, 0x12, 0xf7, 0x4, 0xe9, 0x84, 0xe5, - 0x9f, 0xe7, 0x81, 0xe9, 0x13, 0xe8, 0xce, 0x5e, 0x15, 0xe2, 0x6, 0xbf, - 0xf7, 0x56, 0x5, 0xf2, 0x6, 0x56, 0x98, 0xa, 0xea, 0x6, 0xbd, 0xf7, - 0x56, 0x5, 0xf7, 0x5, 0x34, 0xa, 0x21, 0x6, 0xab, 0xf7, 0x6, 0x5, - 0xed, 0x34, 0xa, 0x13, 0xd4, 0x30, 0x6, 0xc1, 0xf7, 0x62, 0x5, 0x30, - 0x6, 0x52, 0xfb, 0x62, 0x5, 0x25, 0x6, 0xc2, 0xf7, 0x62, 0x5, 0x32, - 0x6, 0x53, 0xfb, 0x62, 0x5, 0xfb, 0x5, 0x36, 0xa, 0xf6, 0x6, 0x6b, - 0xfb, 0x6, 0x5, 0x28, 0x36, 0xa, 0x13, 0xe8, 0xe3, 0x6, 0xf7, 0xb, - 0xe6, 0x15, 0xab, 0xf7, 0x6, 0x5, 0xf3, 0x6, 0x6b, 0xfb, 0x6, 0x5, - 0xe, 0x7c, 0xeb, 0xf7, 0xa9, 0xeb, 0x1, 0xa4, 0xf1, 0xf7, 0xef, 0xf0, - 0x3, 0xa4, 0xf7, 0x3c, 0x15, 0xfb, 0x1b, 0xf7, 0x17, 0x5b, 0xf4, 0xf7, - 0x31, 0xf7, 0x31, 0xe5, 0xf7, 0x4d, 0xee, 0x4b, 0xea, 0xfb, 0x35, 0xfb, - 0x2e, 0xfb, 0x3f, 0x22, 0xfb, 0x49, 0x1e, 0xf1, 0x9b, 0x15, 0xf3, 0xe8, - 0xd1, 0xf6, 0xf7, 0x3, 0xaf, 0x51, 0x54, 0xfb, 0x5, 0xfb, 0x1, 0x58, - 0x33, 0x54, 0x2c, 0x9e, 0xdf, 0x1e, 0xe, 0x5d, 0xa, 0xf7, 0x88, 0xf8, - 0x77, 0x15, 0xf7, 0xdf, 0xd8, 0x77, 0xf0, 0xfb, 0xd6, 0xfb, 0xc, 0x5, - 0xfb, 0x65, 0xfc, 0x12, 0x29, 0xa, 0x63, 0xa, 0xf7, 0x71, 0x77, 0x45, - 0xa, 0xf7, 0x2b, 0xf8, 0x95, 0x15, 0xc0, 0x67, 0xf7, 0x45, 0xf7, 0x0, - 0xf7, 0x13, 0xfb, 0x0, 0xce, 0xae, 0xfb, 0x18, 0xf7, 0x25, 0x4e, 0xa, - 0xfb, 0xd5, 0xfc, 0x86, 0x30, 0xa, 0xfb, 0x3, 0xfb, 0x3a, 0x2d, 0xa, - 0x63, 0xa, 0xcc, 0xf7, 0x10, 0x45, 0xa, 0xf8, 0x21, 0xf8, 0x89, 0x72, - 0xa, 0xfb, 0x68, 0xfb, 0x10, 0x72, 0xa, 0xfb, 0x69, 0xfc, 0x66, 0x29, - 0xa, 0x7c, 0xea, 0xe0, 0xea, 0xed, 0xeb, 0x1, 0x76, 0xef, 0x3, 0xf7, - 0xab, 0xc1, 0x15, 0x69, 0xa3, 0xa1, 0x68, 0xe7, 0x1b, 0xc3, 0xbc, 0x99, - 0xa0, 0xc6, 0x1f, 0x7e, 0xe7, 0x5, 0x74, 0x46, 0x62, 0x82, 0x73, 0x1b, - 0x4a, 0x77, 0xb0, 0xa6, 0x94, 0x8c, 0x92, 0x8e, 0x90, 0x1f, 0xf7, 0x8a, - 0x6, 0x97, 0xad, 0x95, 0xb9, 0xb8, 0x1a, 0xde, 0x6c, 0xdc, 0x2c, 0x5c, - 0x5a, 0x78, 0x68, 0x63, 0x1e, 0xb1, 0x71, 0x5c, 0x9b, 0x58, 0x1b, 0xfb, - 0x32, 0x29, 0xfb, 0x32, 0xfb, 0x32, 0x44, 0xa8, 0x39, 0xf7, 0xe, 0xd2, - 0xc1, 0xb8, 0xa3, 0xa3, 0x1f, 0xe1, 0xf7, 0x62, 0x15, 0xb3, 0x97, 0xb6, - 0xc5, 0xbf, 0x1b, 0xd0, 0x7d, 0x3f, 0x75, 0x88, 0x1f, 0xfc, 0x51, 0xfb, - 0xc, 0x15, 0xc2, 0xb1, 0xf7, 0x37, 0xea, 0xbb, 0x96, 0x66, 0x6b, 0x41, - 0x60, 0xfb, 0x1b, 0x38, 0x60, 0x74, 0xa1, 0xb1, 0x1e, 0xe, 0xfb, 0x5b, - 0xd4, 0x1, 0xf7, 0x59, 0xe2, 0x3, 0xf7, 0xc9, 0x8a, 0x15, 0x78, 0x2e, - 0x56, 0x40, 0x64, 0xa5, 0x6c, 0xb7, 0xa9, 0xa9, 0x97, 0xa0, 0xa5, 0x1f, - 0xa7, 0xdd, 0x5, 0x7b, 0x80, 0x64, 0x71, 0x72, 0x1b, 0x7e, 0x82, 0x91, - 0x9e, 0xb1, 0xe7, 0xba, 0xa6, 0x9a, 0x1f, 0xe, 0x5d, 0xa, 0xf7, 0x6d, - 0xf8, 0xc3, 0x15, 0xf7, 0xc9, 0x3e, 0xae, 0xc6, 0xfb, 0xab, 0xf7, 0xc, - 0x5, 0xfb, 0x96, 0xfc, 0x8a, 0x29, 0xa, 0x8b, 0xe8, 0x1, 0xf7, 0x9c, - 0xeb, 0x3, 0xcd, 0x16, 0xf8, 0x55, 0x94, 0xa, 0xfb, 0x42, 0x6, 0xf5, - 0xf8, 0x9f, 0xfb, 0xa3, 0x56, 0x78, 0x30, 0xf7, 0x3f, 0xad, 0x38, 0xfc, - 0x31, 0x5, 0xfb, 0x47, 0x6, 0xe, 0x5d, 0xce, 0x4f, 0x76, 0xf7, 0xb7, - 0xcf, 0x8a, 0xd0, 0xf7, 0xba, 0x77, 0x12, 0xc4, 0xcf, 0xf7, 0x7d, 0xce, - 0xeb, 0xcf, 0x13, 0xaf, 0xf7, 0xc6, 0x5d, 0x15, 0xf7, 0x82, 0x6, 0x98, - 0xce, 0x5, 0xfb, 0x1a, 0x6, 0xf1, 0xd8, 0x5, 0xac, 0xa0, 0xaa, 0xb4, - 0xb9, 0x1a, 0xaf, 0x7b, 0xc4, 0x3b, 0x5f, 0x5e, 0x75, 0x68, 0x68, 0x1e, - 0x80, 0x4c, 0x5, 0xce, 0x6, 0xa4, 0x90, 0x91, 0xa6, 0xb6, 0x1b, 0x9f, - 0xa1, 0x81, 0x75, 0x79, 0x7e, 0x73, 0x79, 0x7e, 0x1f, 0xfb, 0x41, 0xfb, - 0x19, 0x5, 0xfb, 0xfe, 0x77, 0x15, 0x13, 0x5f, 0xc5, 0x58, 0xf9, 0xd, - 0xf9, 0x35, 0x4d, 0xbb, 0x5, 0xfd, 0xa, 0xfb, 0xff, 0x15, 0xf7, 0x83, - 0x6, 0x99, 0xd0, 0x5, 0x39, 0x6, 0xbf, 0xf7, 0xa9, 0xfb, 0x22, 0x6e, - 0x7e, 0x46, 0xd4, 0x9a, 0x65, 0x98, 0xa, 0x32, 0x6, 0xe, 0x5c, 0xc4, - 0x5a, 0x76, 0xf7, 0x6, 0xca, 0xf7, 0x48, 0xd0, 0xf7, 0xbb, 0x77, 0x12, - 0x13, 0xb8, 0xf7, 0x96, 0xc1, 0x15, 0xf7, 0x19, 0x6, 0x84, 0x5f, 0x5, - 0x52, 0x6, 0x80, 0x52, 0x5, 0xf7, 0x37, 0x6, 0x96, 0xc4, 0x5, 0x63, - 0x6, 0x93, 0xb7, 0x5, 0xb3, 0x6, 0x98, 0xca, 0x5, 0x63, 0x6, 0xac, - 0xf7, 0x46, 0x5, 0x4c, 0x6, 0xfb, 0x41, 0x98, 0xa, 0xdd, 0x9b, 0x15, - 0xd0, 0xdc, 0x7c, 0x3a, 0x5, 0xfc, 0x52, 0xfb, 0x12, 0x15, 0x13, 0x78, - 0xc6, 0x58, 0xf9, 0x9, 0xf9, 0x34, 0x4c, 0xbc, 0x5, 0xfd, 0x9, 0xfc, - 0x0, 0x15, 0xf7, 0x82, 0x6, 0x99, 0xd0, 0x5, 0x38, 0x6, 0xbf, 0xf7, - 0xa8, 0xfb, 0x1f, 0x6e, 0x7e, 0x47, 0xd2, 0x9a, 0x66, 0x98, 0xa, 0x32, - 0x6, 0xe, 0xf7, 0x70, 0xd7, 0xf7, 0xd4, 0x77, 0x1, 0xf7, 0xa4, 0xda, - 0x3, 0xf7, 0x29, 0xf7, 0x70, 0x15, 0xf7, 0xb0, 0x6, 0x9c, 0xd7, 0x7b, - 0xa, 0xc9, 0xf7, 0xd4, 0xfb, 0x3b, 0x6a, 0x7b, 0x3f, 0xe0, 0x9c, 0x60, - 0xfb, 0x78, 0x5, 0x21, 0x6, 0xe, 0xf7, 0x58, 0xde, 0xed, 0xda, 0xb4, - 0xde, 0x1, 0xf7, 0x17, 0xd8, 0x3, 0xf7, 0xd6, 0xf7, 0x60, 0x15, 0xf7, - 0x17, 0x6, 0x9a, 0xdd, 0x5, 0x53, 0x6, 0xa4, 0xf7, 0x22, 0x5, 0x8f, - 0xa1, 0x8d, 0xa5, 0xa1, 0x1a, 0xc9, 0x51, 0x9f, 0x53, 0x55, 0x4e, 0x7b, - 0x7d, 0x67, 0x1e, 0x9a, 0x3c, 0x5, 0x99, 0xb2, 0xc3, 0x97, 0xb1, 0x1b, - 0xaa, 0x98, 0x77, 0x6c, 0x87, 0x1f, 0x92, 0x75, 0x74, 0x8e, 0x73, 0x1b, - 0xfb, 0x13, 0x64, 0x32, 0x4b, 0x51, 0xb2, 0x5a, 0xcb, 0xab, 0xae, 0xa0, - 0xa7, 0xa7, 0x1f, 0xa2, 0xf7, 0x12, 0x15, 0x63, 0x76, 0x60, 0x57, 0x63, - 0x1b, 0x69, 0x85, 0xa0, 0x9e, 0xb3, 0xbd, 0x9d, 0xb2, 0xa1, 0xac, 0x85, - 0x8b, 0x1f, 0xe, 0xf7, 0x58, 0xde, 0xf7, 0x6e, 0xde, 0x1, 0xf7, 0x10, - 0xd9, 0xf7, 0x58, 0xd9, 0x3, 0xf7, 0x10, 0xf8, 0x3, 0x15, 0x35, 0xbf, - 0x36, 0xe6, 0xf7, 0x3, 0xed, 0xf7, 0xa, 0xf7, 0x14, 0xdc, 0x5e, 0xe9, - 0x2b, 0xfb, 0x16, 0x3a, 0xfb, 0x26, 0x23, 0x1e, 0xd9, 0x99, 0x15, 0xc5, - 0xb3, 0xea, 0xd7, 0xc4, 0xa2, 0x4b, 0x61, 0x41, 0x54, 0x40, 0x4c, 0x56, - 0x72, 0xc4, 0xb8, 0x1e, 0xe, 0x7d, 0xea, 0x37, 0x76, 0xf8, 0x18, 0xea, - 0x8f, 0x77, 0x12, 0xac, 0xf0, 0xf7, 0xe4, 0xec, 0x13, 0x6c, 0x94, 0xa7, - 0x15, 0xba, 0x57, 0xc6, 0xbb, 0x5, 0x13, 0x9c, 0x70, 0xb7, 0xc1, 0x80, - 0xbb, 0x1b, 0xf7, 0x14, 0xf7, 0x46, 0xea, 0xf7, 0x4e, 0x1f, 0x8c, 0xaf, - 0x83, 0xae, 0x78, 0xaa, 0xbd, 0xb4, 0x18, 0x5d, 0xc0, 0x56, 0x60, 0x5, - 0x13, 0xac, 0xa3, 0x68, 0x5c, 0x9a, 0x4d, 0x1b, 0xfb, 0x29, 0xfb, 0x3a, - 0x20, 0xfb, 0x48, 0x63, 0x96, 0x6a, 0x9d, 0x70, 0x1f, 0xf7, 0x20, 0xa1, - 0x15, 0xf7, 0x93, 0xf7, 0x64, 0x5, 0x93, 0x7d, 0x90, 0x7b, 0x7b, 0x1a, - 0xfb, 0x5, 0xfb, 0x3, 0x4d, 0x39, 0x76, 0x6e, 0x8e, 0x95, 0x72, 0x1e, - 0x53, 0xb8, 0x15, 0x7e, 0xa0, 0x8c, 0xa5, 0x9f, 0x1a, 0xe9, 0xf0, 0xcb, - 0xe7, 0xab, 0xa4, 0x86, 0x82, 0x9f, 0x1e, 0xe, 0x63, 0xa, 0xf7, 0x1e, - 0x77, 0xdd, 0x77, 0x45, 0xa, 0xf7, 0x1b, 0xf8, 0x95, 0x15, 0xd9, 0x71, - 0x5, 0xa0, 0x9c, 0x99, 0xb4, 0xad, 0x1b, 0x9e, 0x9f, 0x81, 0x7e, 0x9f, - 0x1f, 0x7a, 0xa5, 0xa6, 0x78, 0xa9, 0x1b, 0xee, 0xbc, 0xe3, 0xad, 0x9c, - 0x1f, 0x3d, 0xa3, 0x5, 0x62, 0x70, 0x7e, 0x76, 0x6e, 0x1b, 0x76, 0x77, - 0x98, 0x99, 0x76, 0x1f, 0x9b, 0x73, 0x72, 0x9c, 0x70, 0x1b, 0x2c, 0x5d, - 0x3d, 0x60, 0x73, 0x1f, 0xfb, 0x3, 0xfb, 0xf6, 0x29, 0xa, 0xfb, 0x22, - 0xe3, 0xea, 0x76, 0xf7, 0xe1, 0xe3, 0x40, 0xe3, 0x12, 0xb7, 0xe9, 0xf7, - 0xf6, 0xee, 0x13, 0xdc, 0x67, 0x90, 0xa, 0x9e, 0xe3, 0x85, 0xa, 0xa2, - 0xf7, 0x3, 0x5, 0x7d, 0x9d, 0xbd, 0x74, 0xdb, 0x1b, 0xf7, 0x39, 0xf7, - 0xf, 0xf7, 0x7, 0xf7, 0x24, 0xf7, 0x7, 0x3b, 0xc7, 0xfb, 0x1, 0x54, - 0x44, 0x72, 0x6c, 0x5b, 0x1f, 0x13, 0xec, 0x94, 0xb6, 0x3e, 0xa, 0x79, - 0x33, 0x8a, 0xa, 0x35, 0xfc, 0x2b, 0x5, 0xf7, 0x29, 0xf7, 0x8f, 0x15, - 0x13, 0xdc, 0xf7, 0xe, 0xf7, 0x18, 0xae, 0xc0, 0xce, 0xba, 0x6a, 0x56, - 0x39, 0x2f, 0x3a, 0x3d, 0x63, 0x32, 0x99, 0xd9, 0x1e, 0xe, 0xf8, 0xba, - 0xa9, 0x1, 0xf7, 0xb, 0xbf, 0xea, 0xc0, 0x3, 0xf7, 0xb, 0x45, 0x15, - 0xbf, 0x6, 0xf7, 0x7a, 0xf9, 0x0, 0x5, 0xea, 0x6, 0xfb, 0x7a, 0xfd, - 0x0, 0x5, 0xc0, 0x6, 0xf7, 0x78, 0xf9, 0x0, 0x5, 0xc8, 0x6, 0x96, - 0xa9, 0x5, 0xfb, 0x97, 0x6, 0xfb, 0x4e, 0xfb, 0x55, 0x59, 0xfb, 0x2a, - 0x47, 0xce, 0x49, 0xf7, 0x4a, 0x81, 0x1f, 0xe, 0x3a, 0x76, 0xf9, 0x62, - 0x77, 0x1, 0xf7, 0x1d, 0xf2, 0x3, 0xf7, 0x5b, 0x25, 0x15, 0xec, 0x6, - 0x6e, 0xd1, 0x70, 0xec, 0xf6, 0x1a, 0xf7, 0x46, 0xf7, 0xe, 0xf7, 0x23, - 0xf0, 0xf7, 0xf, 0x1e, 0x2b, 0x6, 0xfb, 0x1a, 0xfb, 0x23, 0x2b, 0xfb, - 0x26, 0xfb, 0x46, 0x1a, 0x48, 0x98, 0x32, 0xbc, 0x2c, 0x1e, 0xe, 0x3a, - 0x76, 0xf9, 0x62, 0x77, 0x1, 0xf7, 0xfc, 0xf2, 0x3, 0xf7, 0x1c, 0x25, - 0x15, 0xeb, 0x6, 0xf7, 0x1a, 0xf7, 0x23, 0xec, 0xf7, 0x26, 0xf7, 0x46, - 0x1a, 0xce, 0x7e, 0xe4, 0x5a, 0xea, 0x1e, 0x2a, 0x6, 0xa8, 0x45, 0xa6, - 0x2a, 0x20, 0x1a, 0xfb, 0x46, 0xfb, 0xf, 0xfb, 0x23, 0x26, 0xfb, 0xf, - 0x1e, 0xe, 0x7c, 0xd1, 0xf7, 0x1c, 0xd1, 0xda, 0xd1, 0xf7, 0x1c, 0xd1, - 0x1, 0xc3, 0xdc, 0xd5, 0xdc, 0x9b, 0xdc, 0xd5, 0xdc, 0x3, 0xc3, 0xf8, - 0x5a, 0x39, 0xa, 0xd5, 0xfb, 0xfd, 0x39, 0xa, 0xfb, 0x69, 0xce, 0x15, - 0xf8, 0x5e, 0xf7, 0x4a, 0x7a, 0xcb, 0xfc, 0x5f, 0xfb, 0x4c, 0x5, 0xe, - 0x7c, 0xf7, 0x4e, 0x1, 0xf7, 0x52, 0xf7, 0x6f, 0x3, 0xf7, 0x52, 0xcb, - 0x15, 0x68, 0xa3, 0x5f, 0xd1, 0xc7, 0xcc, 0xb2, 0xcf, 0xb3, 0x6d, 0xb2, - 0x4d, 0x4b, 0x4c, 0x60, 0x4b, 0x1e, 0xe, 0xf7, 0x39, 0xf7, 0x4e, 0x1, - 0xf7, 0x56, 0xf7, 0x68, 0x3, 0xf7, 0x56, 0xf7, 0x87, 0x15, 0x6c, 0x9f, - 0x5c, 0xd3, 0xc9, 0xc5, 0xbc, 0xc5, 0xb3, 0x72, 0xb2, 0x4c, 0x49, 0x51, - 0x55, 0x55, 0x1e, 0xe, 0x7c, 0xd1, 0xf7, 0x1b, 0xd1, 0xdb, 0xd1, 0xf7, - 0x1c, 0xd1, 0x1, 0x3f, 0xd9, 0xab, 0xd9, 0xc2, 0xd7, 0xad, 0xd7, 0xa0, - 0xd9, 0xf7, 0x39, 0xd7, 0x3, 0x3f, 0xf8, 0x57, 0x49, 0xa, 0xc0, 0x3a, - 0xfb, 0xa, 0x42, 0x3c, 0x35, 0x1e, 0xd9, 0x95, 0x15, 0xb7, 0xaf, 0xb4, - 0xc8, 0xb5, 0xa5, 0x72, 0x53, 0xa, 0x3f, 0xfb, 0xaa, 0x15, 0xf8, 0x77, - 0xf7, 0x4f, 0x7a, 0xc9, 0xfc, 0x79, 0xfb, 0x50, 0x5, 0xf8, 0x67, 0xfb, - 0x28, 0x38, 0xa, 0xfc, 0x36, 0x81, 0x38, 0xa, 0xe, 0xf7, 0x68, 0xe9, - 0xf7, 0x40, 0x77, 0x1, 0xf7, 0x62, 0xed, 0x3, 0xc6, 0xf7, 0x68, 0x15, - 0xf7, 0x4a, 0x6, 0x68, 0xfb, 0x3d, 0x56, 0xa, 0xae, 0xf7, 0x3d, 0x5, - 0xf7, 0x4b, 0x3f, 0xa, 0xfb, 0x4a, 0x6, 0xae, 0xf7, 0x40, 0x4e, 0xa, - 0x68, 0xfb, 0x40, 0x5, 0xfb, 0x4b, 0x6, 0xe, 0xa9, 0xdc, 0xf7, 0x43, - 0xdc, 0xf7, 0x28, 0x77, 0x1, 0xf7, 0x82, 0xed, 0x3, 0xf7, 0x82, 0xf7, - 0x1e, 0x15, 0xed, 0x6, 0xad, 0xf7, 0x28, 0x5, 0xf7, 0x48, 0x6, 0x9e, - 0xdc, 0x5, 0xfb, 0x48, 0x6, 0xae, 0xf7, 0x28, 0x4e, 0xa, 0x69, 0xfb, - 0x28, 0x5, 0xfb, 0x47, 0x6, 0x78, 0x3a, 0x5, 0xf7, 0x47, 0x6, 0xfb, - 0x86, 0xfb, 0x9a, 0x15, 0xf8, 0x5c, 0x6, 0x9e, 0xdc, 0x5, 0xfc, 0x5c, - 0x6, 0xe, 0x7c, 0xe9, 0xf7, 0x12, 0xe9, 0xf7, 0x3d, 0xe9, 0x1, 0xf8, - 0x89, 0xf1, 0x3, 0xf7, 0xdc, 0xb0, 0x15, 0xc8, 0x57, 0xb5, 0xb7, 0x96, - 0x7c, 0x95, 0x7d, 0x90, 0x7c, 0x19, 0xf7, 0xa, 0x55, 0xa, 0x3a, 0x6, - 0x7d, 0xa0, 0xdb, 0xdd, 0x54, 0xbf, 0x46, 0x46, 0x65, 0xc5, 0x5, 0xf7, - 0xd, 0x9e, 0xcb, 0xe1, 0xe8, 0x1a, 0xec, 0x39, 0xb7, 0x23, 0x1e, 0xfb, - 0xbc, 0x44, 0xa, 0xdd, 0x6, 0x39, 0xfc, 0x19, 0x5, 0x34, 0x44, 0xa, - 0xf7, 0x9f, 0x3f, 0xa, 0x3b, 0x6, 0xa5, 0xf7, 0x12, 0x5, 0xdf, 0x6, - 0xd3, 0xfb, 0x4, 0x5, 0xfb, 0x1c, 0xf7, 0x62, 0x15, 0xae, 0xf7, 0x3d, - 0x5, 0xf7, 0x1b, 0x6, 0xa3, 0xc6, 0x82, 0x5a, 0x2a, 0x23, 0x7d, 0x58, - 0x1f, 0xe, 0xfb, 0x22, 0xe3, 0xd6, 0xe1, 0xf7, 0x8c, 0xe3, 0x3f, 0xe2, - 0x12, 0x81, 0xf1, 0x13, 0xe8, 0xf7, 0x4a, 0x90, 0xa, 0xa0, 0xe3, 0x5, - 0x3b, 0x6, 0xe3, 0xf8, 0x2d, 0x5c, 0xa, 0x9f, 0xe3, 0x3e, 0xa, 0x7f, - 0x5e, 0x5, 0x13, 0xd8, 0xad, 0x69, 0x5c, 0xa1, 0x53, 0x1b, 0xfb, 0x31, - 0xfb, 0x21, 0xfb, 0xf, 0xfb, 0x18, 0x29, 0xd7, 0x3b, 0xf7, 0x14, 0xc1, - 0xc2, 0x90, 0xa9, 0xbb, 0x1f, 0x75, 0xfb, 0x2, 0x5, 0xfb, 0x81, 0xf7, - 0x9c, 0x15, 0xe1, 0xdc, 0xd2, 0xf0, 0xed, 0xa0, 0x49, 0x56, 0xfb, 0x11, - 0xfb, 0x1a, 0x7b, 0x5e, 0x46, 0x56, 0xb4, 0xc9, 0x1e, 0xe, 0x7d, 0xf7, - 0x2c, 0xf7, 0xf2, 0xe7, 0x1, 0xeb, 0xf7, 0x54, 0xf7, 0x8, 0xef, 0x3, - 0xf7, 0x3d, 0xf7, 0x4a, 0x15, 0xed, 0x6, 0x98, 0xc5, 0x5, 0xe3, 0x9a, - 0xf7, 0x1c, 0xc2, 0xf7, 0x1a, 0x1a, 0xe4, 0x3c, 0xba, 0xfb, 0x0, 0x53, - 0x3c, 0x7d, 0x77, 0x52, 0x1e, 0x6e, 0xfb, 0x24, 0x5, 0xee, 0x6, 0x99, - 0xd7, 0x5, 0x91, 0xa7, 0xa9, 0x8f, 0xa7, 0x1b, 0xc6, 0xbd, 0x7a, 0x62, - 0x30, 0xfb, 0x2, 0x79, 0x28, 0x7c, 0x1f, 0x28, 0xfb, 0x9e, 0x15, 0x6a, - 0xae, 0x76, 0xba, 0xd8, 0xac, 0xbd, 0xb6, 0xa2, 0x7b, 0xaf, 0x4c, 0x4a, - 0x5b, 0x5c, 0x58, 0x1e, 0xe, 0xfb, 0x26, 0xe8, 0xf7, 0xf2, 0xf7, 0x2c, - 0x1, 0xeb, 0xed, 0xf7, 0xc, 0xf7, 0x52, 0x3, 0xf7, 0xce, 0xf8, 0x2, - 0x15, 0x78, 0x8a, 0x90, 0x59, 0xd6, 0x1b, 0xce, 0xb7, 0xb8, 0xbb, 0xaf, - 0x6a, 0xa2, 0x5b, 0x44, 0x65, 0x5d, 0x66, 0x1f, 0x8e, 0xfb, 0x3e, 0x15, - 0x4b, 0x85, 0xfb, 0x31, 0x4a, 0xfb, 0x1b, 0x1a, 0x33, 0xd9, 0x5b, 0xf6, - 0xc1, 0xdf, 0x99, 0x9f, 0xc4, 0x1e, 0xa7, 0xf7, 0x1a, 0x66, 0xa, 0x7d, - 0x49, 0x5, 0x86, 0x6e, 0x68, 0x87, 0x6e, 0x1b, 0x51, 0x5b, 0x9c, 0xb4, - 0xe7, 0xf7, 0x2, 0x9d, 0xec, 0x9a, 0x1f, 0xa4, 0xf7, 0x13, 0x66, 0xa, - 0xe, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x6, 0xf7, 0x4, 0xd5, 0xf7, 0x2, - 0x3, 0xf7, 0xc0, 0xf7, 0xa9, 0x15, 0xf7, 0x2, 0x6, 0xd7, 0x71, 0xa, - 0xfb, 0x20, 0x6, 0xfb, 0x7c, 0xfb, 0xb1, 0x5a, 0xa, 0xd7, 0x71, 0xa, - 0xfb, 0x20, 0x6, 0xe, 0xfb, 0x22, 0xf7, 0xb1, 0x1, 0xf7, 0x90, 0xfb, - 0x22, 0x15, 0xf7, 0x9, 0x80, 0xa, 0xfb, 0x31, 0x6, 0xfc, 0x3, 0xfb, - 0xb1, 0x15, 0xf7, 0x7, 0x6, 0xf7, 0x57, 0x71, 0xa, 0xfb, 0x32, 0x6, - 0xe, 0xf7, 0x46, 0xf7, 0x5, 0xed, 0xf7, 0x5, 0x3, 0xf8, 0x19, 0xf7, - 0xa9, 0x6d, 0xa, 0x63, 0x71, 0xa, 0xfb, 0x2d, 0x6, 0xfb, 0x17, 0xfb, - 0xb1, 0x6d, 0xa, 0x64, 0x71, 0xa, 0xfb, 0x2e, 0x6, 0xe, 0xf7, 0xbe, - 0x76, 0xf7, 0xb1, 0x77, 0x1, 0xb1, 0xf7, 0x8, 0xee, 0xf7, 0xa, 0x3, - 0xf7, 0x91, 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x53, 0x71, 0xa, - 0xfb, 0x32, 0x6, 0xfc, 0x2, 0xfb, 0xb1, 0x15, 0xf7, 0x8, 0x80, 0xa, - 0xfb, 0x33, 0x6, 0xe, 0xf7, 0xa9, 0xf7, 0xb1, 0x1, 0xf7, 0xaf, 0xf7, - 0xa9, 0x5a, 0xa, 0x65, 0x71, 0xa, 0xfb, 0x2c, 0x6, 0xe, 0xf7, 0xbe, - 0x76, 0xf7, 0xb1, 0x77, 0x1, 0xf7, 0x24, 0xf7, 0xa, 0x3, 0xf7, 0x24, - 0xf7, 0xa9, 0x15, 0xf7, 0xa, 0x6, 0xf7, 0x56, 0x71, 0xa, 0xfb, 0x35, - 0x6, 0xe, 0xfb, 0xd, 0x76, 0xf7, 0xae, 0x77, 0x1, 0xf7, 0x24, 0xf7, - 0xb, 0x3, 0xf7, 0x24, 0xfb, 0x22, 0x15, 0xf7, 0xb, 0x80, 0xa, 0xfb, - 0x34, 0x6, 0xe, 0xf7, 0xbb, 0x76, 0xf7, 0xb4, 0x77, 0x1, 0xf7, 0x62, - 0xf7, 0x5, 0x3, 0xf7, 0x62, 0xf7, 0xa6, 0x6d, 0xa, 0xd6, 0xf7, 0xb4, - 0x5, 0xfb, 0x20, 0x6, 0xe, 0x7f, 0xa, 0xf7, 0x2b, 0xee, 0x3, 0x9c, - 0x16, 0xf8, 0x2c, 0x3f, 0xa, 0xfb, 0x56, 0x6, 0xac, 0xf7, 0x2b, 0x5, - 0xc2, 0xcd, 0xcc, 0xc7, 0xdf, 0x1b, 0xa4, 0x8d, 0x81, 0x72, 0x8a, 0x1f, - 0xed, 0x99, 0x5, 0xcb, 0x8b, 0xbe, 0x22, 0x41, 0x40, 0x53, 0x63, 0x4e, - 0x1e, 0x98, 0xdc, 0x5, 0xfb, 0x6b, 0x87, 0xa, 0xf7, 0x7, 0x6, 0x58, - 0xfb, 0x8f, 0x83, 0xa, 0xe, 0x79, 0xb8, 0xf6, 0xf7, 0x37, 0xf2, 0xba, - 0xe3, 0xb8, 0x1, 0x84, 0xba, 0xf7, 0xe5, 0xba, 0xf7, 0x1d, 0xb9, 0x3, - 0x84, 0xf7, 0x6e, 0x15, 0xfb, 0x1a, 0xf5, 0x25, 0xf7, 0x24, 0xf7, 0x4c, - 0xf7, 0x48, 0xf7, 0x3b, 0xf7, 0x51, 0xf7, 0x1d, 0x25, 0xf4, 0xfb, 0x25, - 0xfb, 0x4f, 0xfb, 0x48, 0xfb, 0x3f, 0xfb, 0x53, 0x1e, 0xba, 0x9e, 0x15, - 0xf7, 0x32, 0xf7, 0x34, 0xf7, 0x20, 0xf7, 0x2b, 0xf7, 0x13, 0xde, 0x2e, - 0xfb, 0xc, 0xfb, 0x31, 0xfb, 0x34, 0xfb, 0x1e, 0xfb, 0x2a, 0xfb, 0x12, - 0x36, 0xe6, 0xf7, 0xb, 0x1e, 0xf7, 0x18, 0x24, 0x15, 0xbb, 0x6, 0xa5, - 0xf7, 0x8, 0x5, 0xbf, 0x6, 0xa6, 0xfb, 0x8, 0x5, 0xc5, 0x6, 0x6e, - 0xf7, 0x13, 0x5, 0xb6, 0x95, 0xa6, 0xb4, 0xc4, 0x1a, 0xcf, 0x53, 0x95, - 0x4e, 0x1e, 0x41, 0x6, 0xa1, 0xfb, 0x2a, 0x15, 0x9b, 0xf2, 0x5, 0xbb, - 0x6, 0xa8, 0xa8, 0x83, 0x6f, 0x55, 0x61, 0x7e, 0x6c, 0x1f, 0xe, 0xf8, - 0x75, 0xc6, 0xda, 0xc6, 0x1, 0xf7, 0x57, 0xc9, 0xdf, 0xca, 0x3, 0xf7, - 0x57, 0xf8, 0xc5, 0x15, 0x5e, 0xad, 0x68, 0xbd, 0xcf, 0xc4, 0xc4, 0xcb, - 0xb6, 0x69, 0xac, 0x5a, 0x49, 0x4f, 0x54, 0x4d, 0x1e, 0xc9, 0x96, 0x15, - 0xa5, 0xa3, 0xa0, 0xa6, 0x9f, 0x98, 0x7f, 0x7a, 0x71, 0x76, 0x73, 0x6f, - 0x76, 0x7d, 0x99, 0x9d, 0x1e, 0xe, 0x7a, 0xe6, 0xf4, 0xd9, 0xa0, 0xf7, - 0x49, 0x2b, 0xeb, 0x12, 0xf7, 0x2, 0xe9, 0xf7, 0x76, 0xed, 0x13, 0xdc, - 0xa9, 0x7a, 0x15, 0xed, 0x6, 0x93, 0xb2, 0x5, 0x76, 0xb5, 0xbe, 0x79, - 0xc0, 0x1b, 0xf7, 0x1e, 0xf7, 0x0, 0xab, 0xf7, 0x1, 0xe8, 0x33, 0xab, - 0x40, 0x93, 0x1f, 0xfb, 0x5, 0x96, 0x5b, 0x97, 0xac, 0x1a, 0xb6, 0xef, - 0x92, 0xa2, 0xb6, 0xb7, 0x7c, 0x75, 0xab, 0x1e, 0x13, 0xec, 0x81, 0x5b, - 0x56, 0xa, 0xaf, 0xf7, 0x49, 0x4e, 0xa, 0x85, 0x69, 0x5, 0x9a, 0x66, - 0x5f, 0x9e, 0x5c, 0x1b, 0xfb, 0x13, 0x26, 0x5b, 0x24, 0x2b, 0xf7, 0xf, - 0x70, 0xd4, 0x85, 0x1f, 0xad, 0x88, 0xe5, 0x83, 0x57, 0x1a, 0x67, 0x3e, - 0x85, 0x52, 0x45, 0x5d, 0xa3, 0x9c, 0x71, 0x1e, 0x98, 0xc8, 0x7b, 0xa, - 0xe, 0x7a, 0xe0, 0xf7, 0x57, 0xf7, 0x40, 0x1, 0xe8, 0xe4, 0xf7, 0x6c, - 0xe6, 0x3, 0xf7, 0xc1, 0xf8, 0x79, 0x15, 0xeb, 0x6, 0xf7, 0x4d, 0xf7, - 0x25, 0x58, 0xb0, 0xfb, 0x3d, 0xfb, 0x0, 0xfb, 0x10, 0xf7, 0x0, 0x48, - 0x67, 0x5, 0xfb, 0x2e, 0xfd, 0x1c, 0x15, 0xe8, 0x6, 0x93, 0xb1, 0x5, - 0x7b, 0xb4, 0xc2, 0x75, 0xbf, 0x1b, 0xf7, 0x24, 0xda, 0xc1, 0xe3, 0xdd, - 0x4c, 0xaf, 0x38, 0x92, 0x1f, 0x26, 0x93, 0x4f, 0x91, 0xaf, 0x1a, 0xbf, - 0xe5, 0x8b, 0xa2, 0xb4, 0xb9, 0x73, 0x7a, 0xa9, 0x1e, 0x82, 0x5e, 0x5, - 0xe9, 0x6, 0xad, 0xf7, 0x40, 0x5, 0x2e, 0x6, 0x84, 0x6b, 0x5, 0x98, - 0x68, 0x5d, 0x9e, 0x5e, 0x1b, 0x28, 0xfb, 0x4, 0x72, 0xfb, 0x3, 0x8a, - 0x1f, 0x2a, 0xf7, 0x9, 0x6b, 0xd0, 0x85, 0x1e, 0xac, 0x88, 0xe1, 0x8f, - 0x60, 0x1a, 0x6a, 0x4a, 0x73, 0x55, 0x48, 0x57, 0xac, 0x94, 0x74, 0x1e, - 0x95, 0xc6, 0x5, 0x2d, 0x6, 0xe, 0xfb, 0x62, 0xce, 0xf7, 0xe, 0xf7, - 0x57, 0x81, 0xe2, 0xa4, 0xf7, 0x47, 0x12, 0xf7, 0x2, 0xe8, 0x9f, 0xcd, - 0xf7, 0x26, 0xed, 0x13, 0xde, 0xa9, 0x7a, 0x15, 0xed, 0x6, 0x93, 0xb3, - 0xa4, 0x81, 0xa9, 0x7e, 0xab, 0x84, 0x19, 0x6b, 0x26, 0x5, 0x8e, 0x94, - 0x9d, 0x8e, 0x9a, 0x1b, 0x93, 0x94, 0x85, 0x81, 0x80, 0x7e, 0x81, 0x7e, - 0x81, 0x7e, 0x8f, 0x94, 0x7c, 0x1f, 0x62, 0x55, 0x5, 0x73, 0xa6, 0x9e, - 0x89, 0x9d, 0x1b, 0xc6, 0xc5, 0xb3, 0xd0, 0xa1, 0x85, 0xab, 0x67, 0x93, - 0x1f, 0x90, 0x9d, 0x5, 0xf7, 0x2b, 0x8a, 0xe0, 0xc4, 0xe8, 0x1a, 0x13, - 0xbe, 0xe1, 0x49, 0xb1, 0x34, 0x92, 0x1e, 0x21, 0x93, 0x4c, 0x92, 0xb0, - 0x1a, 0xc2, 0xea, 0x8a, 0xa3, 0xb6, 0xbb, 0x73, 0x79, 0xaa, 0x1e, 0x82, - 0x5c, 0x56, 0xa, 0xb0, 0xf7, 0x47, 0x4e, 0xa, 0x84, 0x69, 0x5, 0x99, - 0x66, 0x5b, 0x9f, 0x5c, 0x1b, 0x23, 0xfb, 0xa, 0x72, 0xfb, 0x9, 0x8a, - 0x1f, 0x26, 0xf7, 0xe, 0x69, 0xd4, 0x85, 0x1e, 0xad, 0x88, 0xe5, 0x8f, - 0x5e, 0x1a, 0x68, 0x47, 0x72, 0x53, 0x44, 0x55, 0xae, 0x94, 0x73, 0x1e, - 0x13, 0xde, 0x95, 0xc9, 0x4e, 0xa, 0xe, 0x45, 0xe9, 0xf8, 0x62, 0xe8, - 0x1, 0xcc, 0xf2, 0xf7, 0x9b, 0xf1, 0x3, 0xa6, 0x45, 0x15, 0xf7, 0x82, - 0x6, 0xe6, 0xe7, 0xa7, 0xdf, 0xa8, 0x85, 0x9d, 0x7c, 0x9c, 0x1f, 0xad, - 0x95, 0xc1, 0xbe, 0xc5, 0x1a, 0x8a, 0xa6, 0x7d, 0xa3, 0x74, 0x9d, 0xfb, - 0x6c, 0xf7, 0x41, 0x18, 0x8b, 0x88, 0x8e, 0x8f, 0x1a, 0x96, 0x9c, 0x8c, - 0x91, 0x1e, 0xf7, 0x3c, 0x6, 0x79, 0x35, 0x5, 0xf1, 0x6, 0xb2, 0xf7, - 0x48, 0xfb, 0x88, 0x8a, 0x5, 0x32, 0x37, 0x76, 0x38, 0x6f, 0x96, 0x75, - 0x9d, 0x78, 0x1f, 0x56, 0x76, 0x68, 0x60, 0x5c, 0x1a, 0x6b, 0x9d, 0x68, - 0xb2, 0x6c, 0x1e, 0xf7, 0x42, 0xfb, 0x1e, 0x5, 0x9c, 0x7d, 0x8d, 0x88, - 0x83, 0x1a, 0x82, 0x7b, 0x8a, 0x87, 0x1e, 0xfb, 0x45, 0x6, 0x9e, 0xe3, - 0x5, 0x24, 0x6, 0xf7, 0xb7, 0xc3, 0x15, 0xfb, 0x1f, 0xf7, 0x1, 0x5, - 0x82, 0x92, 0x87, 0x97, 0x97, 0x1a, 0xa0, 0xab, 0x95, 0x99, 0x92, 0x1e, - 0xf7, 0x30, 0xfb, 0xd, 0x5, 0x92, 0x86, 0x8d, 0x83, 0x82, 0x1a, 0x71, - 0x61, 0x84, 0x7a, 0x89, 0x1e, 0xe, 0x31, 0x76, 0xf7, 0xfc, 0xf7, 0x44, - 0x1, 0xf7, 0xa5, 0xf7, 0x6d, 0x3, 0xf7, 0xa5, 0xf7, 0xd6, 0x15, 0x6e, - 0x9f, 0x5f, 0xd3, 0xce, 0xc5, 0xbc, 0xc6, 0xae, 0x6e, 0xac, 0x4e, 0x45, - 0x52, 0x58, 0x57, 0x1e, 0xfb, 0x38, 0xfc, 0x45, 0x15, 0xf7, 0x12, 0x6, - 0xf7, 0x5d, 0xf7, 0xac, 0x5, 0xfb, 0x3b, 0x6, 0xe, 0xa0, 0x76, 0xf8, - 0x39, 0xf7, 0x48, 0x1, 0xf4, 0xf5, 0x3, 0xf4, 0x16, 0xf5, 0x6, 0xf7, - 0xcc, 0xf8, 0xa9, 0x99, 0xcf, 0x5, 0xfc, 0x4a, 0x6, 0x66, 0xfb, 0x48, - 0x56, 0xa, 0x9d, 0xe2, 0x5, 0xf7, 0x80, 0x6, 0xe, 0x7c, 0xe6, 0xf7, - 0x74, 0xe8, 0xf7, 0x1e, 0xdf, 0x8a, 0x77, 0x12, 0xf8, 0x3, 0xed, 0x13, - 0xe8, 0xf7, 0x48, 0xf7, 0xfb, 0x15, 0xf7, 0x19, 0xda, 0xf7, 0x6, 0xb2, - 0xf7, 0x33, 0x1b, 0x13, 0xd8, 0xa5, 0xde, 0x5, 0x13, 0xe8, 0x75, 0x69, - 0x8c, 0x5b, 0x1b, 0xfb, 0x5d, 0x8c, 0xfb, 0x67, 0xfb, 0x50, 0xfb, 0x89, - 0x1a, 0x20, 0xd3, 0x30, 0xf7, 0xc, 0xf7, 0x7, 0xf7, 0x8, 0xf7, 0x7, - 0xf7, 0x8, 0xe3, 0x5b, 0xe4, 0xfb, 0x6, 0x56, 0x73, 0x7f, 0x75, 0x5d, - 0x1e, 0x65, 0xfb, 0x1c, 0x15, 0x8b, 0xc0, 0xd8, 0xdf, 0xd3, 0x9b, 0x53, - 0x60, 0x40, 0x46, 0x59, 0x51, 0x41, 0x65, 0xe0, 0xc9, 0x99, 0x1e, 0xe, - 0xf9, 0x6, 0x77, 0x1, 0xab, 0xf8, 0x69, 0x3, 0xab, 0x5d, 0x15, 0xcb, - 0x6c, 0xf8, 0x6b, 0xf9, 0x32, 0x49, 0xac, 0x5, 0xe, 0xe, 0x84, 0x76, - 0xb0, 0x76, 0xf7, 0xaa, 0xe8, 0xf7, 0x33, 0xe8, 0x12, 0xf7, 0x21, 0xea, - 0x36, 0xed, 0x13, 0xb8, 0x52, 0xa, 0x13, 0x74, 0x3d, 0xa, 0x7b, 0x7d, - 0x87, 0x81, 0x7e, 0x1f, 0xb6, 0xc1, 0xa0, 0xbb, 0xd1, 0x1a, 0xf7, 0x69, - 0x89, 0xa, 0xfb, 0x84, 0x6, 0x13, 0xb8, 0x86, 0x9b, 0x8a, 0x9b, 0x9a, - 0x1a, 0xcb, 0xc9, 0x47, 0xa, 0x21, 0x3e, 0xfb, 0x10, 0x7a, 0x89, 0x7a, - 0x8d, 0x7a, 0x1f, 0x3b, 0x82, 0xa, 0x13, 0xb4, 0xf7, 0x1, 0x6, 0x8a, - 0x2e, 0x59, 0x33, 0x43, 0x5a, 0x8, 0xe, 0x7c, 0xe7, 0xf7, 0x96, 0xe8, - 0xf7, 0x1a, 0x77, 0x1, 0xf4, 0xf7, 0xe3, 0x15, 0xd1, 0x6, 0x62, 0x98, - 0xa, 0x88, 0x7b, 0x89, 0x7e, 0x7e, 0x1a, 0x29, 0xe9, 0x7b, 0xcf, 0xe0, - 0xe6, 0xab, 0xa6, 0xda, 0x1e, 0x8e, 0xe7, 0x5, 0x7c, 0x5f, 0xfb, 0xc, - 0x5f, 0x43, 0x1b, 0x53, 0x76, 0x9f, 0xa4, 0x98, 0x8d, 0x99, 0x8e, 0x99, - 0x1f, 0xb2, 0xf7, 0x40, 0x5, 0xf7, 0x91, 0x89, 0xa, 0xfb, 0x93, 0x6, - 0xa9, 0xf7, 0x1a, 0x5, 0x23, 0x6, 0x6f, 0xfb, 0x1a, 0x5, 0x44, 0x6, - 0xe, 0xfb, 0x22, 0xe4, 0xd5, 0xe4, 0xf7, 0xa6, 0xe5, 0xca, 0xe4, 0x1, - 0xd5, 0xe9, 0xf7, 0xfd, 0xed, 0x3, 0x85, 0x56, 0x15, 0x77, 0x32, 0x5, - 0xf7, 0xd7, 0x6, 0x9e, 0xe4, 0x85, 0xa, 0xa9, 0xf7, 0x18, 0x5, 0x7c, - 0x9c, 0xb7, 0x60, 0xdb, 0x1b, 0xf7, 0x2d, 0xf7, 0x1b, 0xf7, 0x13, 0xf7, - 0x24, 0xf7, 0xa, 0xfb, 0x1, 0xbf, 0x30, 0x55, 0x52, 0x84, 0x6c, 0x5c, - 0x1f, 0xb6, 0xf7, 0x5e, 0x5, 0xfb, 0x45, 0x6, 0x78, 0x32, 0x5, 0xdd, - 0x6, 0xfb, 0x10, 0xfc, 0xe2, 0x5, 0xf7, 0x2e, 0xf7, 0xa3, 0x15, 0xf7, - 0x13, 0xf7, 0x10, 0xa6, 0xc3, 0xce, 0xc1, 0x67, 0x49, 0x2f, 0x2e, 0x47, - 0x36, 0x64, 0x38, 0xa6, 0xdc, 0x8a, 0x1e, 0xe, 0x7c, 0xe8, 0xf7, 0x2b, - 0xe9, 0xf7, 0x5b, 0xe9, 0x12, 0xf8, 0x3c, 0xef, 0x3f, 0xf0, 0x13, 0xf0, - 0xbd, 0xb3, 0x15, 0x79, 0xba, 0xd0, 0x66, 0xee, 0x1b, 0xf7, 0x0, 0xf7, - 0x2b, 0xc6, 0xf7, 0x31, 0xcb, 0x6b, 0xa7, 0x66, 0xa9, 0x1f, 0x13, 0xe8, - 0xb2, 0x9f, 0xc2, 0xc8, 0xd4, 0x1a, 0xe0, 0x44, 0xc1, 0x2b, 0x3f, 0x47, - 0x68, 0x65, 0x47, 0x1e, 0xac, 0x42, 0x5, 0xb2, 0xdb, 0xb1, 0x98, 0xb6, - 0x1b, 0xaf, 0xbb, 0x7c, 0x60, 0x29, 0xfb, 0xc, 0x5f, 0x50, 0x8c, 0x1f, - 0x78, 0x2d, 0x5, 0x13, 0xf0, 0xdd, 0xe7, 0xaa, 0x50, 0x3f, 0x3b, 0x5c, - 0x44, 0x57, 0x6d, 0x95, 0xab, 0x34, 0x1f, 0xe, 0x5e, 0xc4, 0x58, 0x76, - 0xf7, 0x9, 0xca, 0xf7, 0x3d, 0xce, 0xe6, 0xcb, 0x4b, 0xf7, 0x57, 0x49, - 0x77, 0xf4, 0x77, 0x12, 0x13, 0xbb, 0xf7, 0x98, 0xc4, 0x15, 0xf7, 0x19, - 0x6, 0x82, 0x5e, 0x5, 0x52, 0x6, 0x80, 0x52, 0x5, 0xf7, 0x39, 0x6, - 0x96, 0xc4, 0x5, 0x62, 0x6, 0x93, 0xb8, 0x5, 0xb5, 0x6, 0x97, 0xca, - 0x5, 0x62, 0x6, 0xae, 0xf7, 0x46, 0x5, 0x4a, 0x6, 0xfb, 0x41, 0x98, - 0xa, 0xdc, 0x9b, 0x15, 0xd0, 0xda, 0x7d, 0x3c, 0x5, 0xfc, 0x56, 0xfb, - 0x12, 0x15, 0x13, 0x7b, 0xc6, 0x55, 0xf9, 0xb, 0xf9, 0x34, 0x4d, 0xbc, - 0x5, 0xfc, 0xfd, 0xfb, 0xe6, 0x15, 0x71, 0xbc, 0xaa, 0x83, 0xad, 0x1b, - 0xdf, 0xce, 0xc7, 0xd2, 0x1f, 0x8c, 0xa4, 0x82, 0xa3, 0x79, 0x9c, 0x8, - 0x9b, 0x95, 0xa0, 0xaf, 0xa9, 0x1a, 0x13, 0xb4, 0xba, 0x6b, 0xac, 0x51, - 0x5f, 0x61, 0x77, 0x72, 0x64, 0x1e, 0xa5, 0x51, 0x5, 0x13, 0xbb, 0x9b, - 0xa7, 0xad, 0xa0, 0xa9, 0x1b, 0x98, 0x9a, 0x86, 0x78, 0x6e, 0x71, 0x7f, - 0x73, 0x1f, 0x5c, 0x8c, 0x7e, 0x4a, 0x5, 0xc3, 0x6, 0xac, 0x96, 0x7a, - 0x78, 0x6d, 0x70, 0x72, 0x67, 0x65, 0x70, 0x9a, 0x9a, 0x6e, 0x1f, 0xe, - 0xf7, 0x72, 0xd6, 0xf0, 0xd4, 0xf7, 0x25, 0x77, 0x1, 0xf8, 0x5, 0xdd, - 0x3, 0xf7, 0x1a, 0xf7, 0x98, 0x15, 0x6f, 0xc5, 0xb0, 0x81, 0xb4, 0x1b, - 0xe8, 0xe3, 0xcc, 0xd8, 0x1f, 0x8d, 0xa9, 0x81, 0xa7, 0x74, 0x9e, 0x8, - 0x9f, 0x97, 0xa5, 0xb3, 0xae, 0x1a, 0xbe, 0x62, 0xb0, 0x46, 0x57, 0x5a, - 0x74, 0x6f, 0x5a, 0x1e, 0xaa, 0x4b, 0x5, 0x9d, 0xad, 0xb3, 0xa2, 0xb0, - 0x1b, 0x99, 0x9e, 0x84, 0x79, 0x8c, 0x1f, 0x69, 0x69, 0x7f, 0x6b, 0x1e, - 0x58, 0x6, 0x7c, 0x42, 0x5, 0xcd, 0x6, 0xb2, 0x99, 0x79, 0x76, 0x68, - 0x69, 0x70, 0x62, 0x1f, 0x89, 0x6, 0x60, 0x69, 0x9c, 0x9b, 0x69, 0x1f, - 0xe, 0xf8, 0x84, 0xdb, 0x1, 0xda, 0xf8, 0x4e, 0x3, 0xda, 0xf8, 0x99, - 0x15, 0xd8, 0x73, 0x5, 0xa1, 0x9d, 0x9e, 0xb5, 0xae, 0x1b, 0xa0, 0x9f, - 0x7d, 0x7b, 0xa0, 0x1f, 0x7c, 0xa0, 0xa2, 0x7b, 0xa4, 0x1b, 0xec, 0xbb, - 0xdf, 0xad, 0x9c, 0x1f, 0x3e, 0xa1, 0x5, 0x63, 0x71, 0x7f, 0x77, 0x6f, - 0x1b, 0x78, 0x78, 0x96, 0x98, 0x77, 0x1f, 0x9b, 0x72, 0x71, 0x9d, 0x6f, - 0x1b, 0x2e, 0x5f, 0x40, 0x61, 0x72, 0x1f, 0xe, 0xf8, 0x95, 0xbc, 0x12, - 0xad, 0xbf, 0xf7, 0x14, 0xbe, 0xf7, 0x43, 0xcb, 0x6e, 0xbe, 0x13, 0xf0, - 0xf7, 0x6a, 0xf7, 0x7a, 0x15, 0xbe, 0x6, 0xc8, 0xf7, 0xc0, 0x98, 0xfb, - 0xc0, 0x5, 0xcd, 0x6, 0xf7, 0x16, 0xf7, 0xbf, 0x5, 0x13, 0xe8, 0x4f, - 0xfb, 0xbf, 0x5, 0xbe, 0x6, 0xcf, 0xf7, 0xe0, 0x7a, 0xa, 0xfb, 0x5, - 0xfb, 0xa1, 0x82, 0xf7, 0xa1, 0x5, 0x2e, 0x6, 0xfb, 0x8d, 0xfb, 0xe0, - 0x15, 0xbf, 0x6, 0xc4, 0xf7, 0xaf, 0x5, 0xe3, 0x6, 0x96, 0xbc, 0x5, - 0xfb, 0x77, 0x6, 0x81, 0x5a, 0x5, 0xe2, 0x6, 0xe, 0xe9, 0x77, 0xf8, - 0x55, 0xe8, 0x1, 0xf7, 0x1e, 0xee, 0xf7, 0x7a, 0xee, 0x3, 0xad, 0x16, - 0xf8, 0x49, 0x6, 0xad, 0xf7, 0x35, 0x5, 0x2d, 0x6, 0x7d, 0x48, 0x5, - 0xfb, 0x4e, 0x6, 0xf7, 0x2e, 0xf7, 0x5, 0x5, 0xf7, 0x0, 0xda, 0xe8, - 0xc9, 0xf7, 0xe, 0x1a, 0xdb, 0x51, 0xcd, 0xfb, 0xd, 0x39, 0x45, 0x77, - 0x36, 0x3c, 0x1e, 0x79, 0x33, 0x5, 0xee, 0x6, 0xf1, 0x9b, 0xf6, 0x89, - 0x91, 0x1b, 0xc1, 0xba, 0x6f, 0x57, 0x53, 0x6c, 0x6a, 0x45, 0x57, 0x1f, - 0xfb, 0xd1, 0xfb, 0x74, 0x5, 0xe, 0xf7, 0x70, 0xd6, 0xf7, 0x88, 0xd8, - 0x1, 0xf7, 0x50, 0xde, 0xf7, 0xc, 0xde, 0x3, 0xf7, 0x11, 0xf7, 0x70, - 0x15, 0xf7, 0xb8, 0x6, 0x9b, 0xd6, 0x5, 0xfb, 0x38, 0x6, 0xf7, 0x14, - 0xea, 0x5, 0xae, 0xa3, 0xb5, 0xba, 0xbe, 0x1a, 0xb4, 0x75, 0xca, 0x2b, - 0x55, 0x55, 0x72, 0x62, 0x5f, 0x1e, 0x7b, 0x3b, 0x5, 0xde, 0x6, 0x8e, - 0x96, 0x5, 0x9c, 0x8f, 0x94, 0xb4, 0xc0, 0x1b, 0xa1, 0xa8, 0x85, 0x6f, - 0x71, 0x80, 0x78, 0x71, 0x79, 0x1f, 0xfb, 0x6c, 0xfb, 0x27, 0x5, 0xe, - 0x7c, 0xe8, 0x3a, 0xea, 0xf7, 0x90, 0xea, 0x12, 0x13, 0xa0, 0xb2, 0xf7, - 0xec, 0x15, 0xdc, 0x6, 0x67, 0xfb, 0x4d, 0x5, 0x85, 0x74, 0x89, 0x76, - 0x79, 0x1a, 0x37, 0xd0, 0x6f, 0xde, 0xbe, 0xc0, 0xa7, 0xa5, 0xb7, 0x1e, - 0x13, 0x60, 0x81, 0x61, 0x5, 0xf7, 0x43, 0x6, 0x9e, 0xea, 0x5, 0x3b, - 0x6, 0xd0, 0xf7, 0xef, 0x8f, 0xa, 0x6, 0x78, 0x2c, 0x5, 0xda, 0x6, - 0x65, 0x98, 0xa, 0x13, 0xa0, 0x6b, 0x63, 0x5b, 0x63, 0x4d, 0x1b, 0x54, - 0x7a, 0xa4, 0xa2, 0x97, 0x8c, 0x96, 0x8c, 0x93, 0x1f, 0xc3, 0xf7, 0xae, - 0x43, 0xa, 0x67, 0xa, 0xf7, 0x78, 0xf8, 0x75, 0x15, 0xf7, 0xe9, 0xd9, - 0x76, 0xf1, 0xfb, 0xde, 0xfb, 0xb, 0x5, 0xfb, 0x47, 0xfb, 0x53, 0x15, - 0xdc, 0x6, 0x67, 0xfb, 0x5b, 0x5, 0x8a, 0x78, 0x84, 0x26, 0xa, 0x57, - 0xa, 0xf7, 0x6b, 0x77, 0x12, 0x13, 0xb0, 0xf7, 0x52, 0xf8, 0x70, 0x15, - 0xf7, 0x44, 0xf7, 0x0, 0xf7, 0x14, 0xfb, 0x0, 0xcc, 0xb0, 0xfb, 0x16, - 0xf7, 0x24, 0x4e, 0xa, 0xfb, 0x57, 0xfb, 0x23, 0x5, 0x2a, 0xfb, 0x37, - 0x27, 0xa, 0x57, 0xa, 0xc6, 0xf7, 0x10, 0x12, 0x13, 0xb0, 0xf8, 0xe, - 0xf8, 0x89, 0x92, 0xa, 0xa3, 0xf7, 0x10, 0x86, 0xa, 0xfb, 0x62, 0xfb, - 0x10, 0x92, 0xa, 0xa4, 0xf7, 0x10, 0x4c, 0xa, 0xfb, 0x4b, 0xfb, 0xa6, - 0x27, 0xa, 0x67, 0xa, 0xf7, 0x5d, 0xf8, 0xc6, 0x15, 0xf7, 0xbf, 0x3b, - 0xae, 0xc6, 0xfb, 0xa3, 0xf7, 0xc, 0x5, 0xfb, 0x75, 0xfb, 0xca, 0x27, - 0xa, 0xfb, 0x11, 0xbd, 0x1, 0x90, 0x40, 0x15, 0x81, 0x59, 0x5, 0xf8, - 0xed, 0x6, 0x95, 0xbd, 0x5, 0xe, 0xa0, 0x76, 0xf7, 0xed, 0xe9, 0x1, - 0xf7, 0x4d, 0xdb, 0x3, 0xf7, 0x4d, 0x16, 0xdb, 0x6, 0xf7, 0x87, 0xf7, - 0xed, 0x5, 0xe0, 0x3f, 0xa, 0xfb, 0x87, 0x87, 0xa, 0xc7, 0x6, 0xfb, - 0x34, 0xfb, 0x82, 0x44, 0xf7, 0x82, 0x5, 0xce, 0x55, 0xa, 0xfb, 0x98, - 0x44, 0xa, 0xe1, 0x6, 0xe, 0xa0, 0x76, 0xf7, 0xed, 0xe9, 0x1, 0xf7, - 0x24, 0x16, 0xf7, 0x9, 0xf7, 0x67, 0xb8, 0xfb, 0x67, 0x5, 0xd7, 0x6, - 0xf7, 0x47, 0xf7, 0xed, 0x5, 0xbc, 0x3f, 0xa, 0xfb, 0x67, 0x44, 0xa, - 0xd2, 0x6, 0x2b, 0xfb, 0x4d, 0x5f, 0xf7, 0x65, 0x5, 0x48, 0x6, 0xfb, - 0xc, 0xfb, 0x65, 0x72, 0xf7, 0x4d, 0x5, 0xd1, 0x55, 0xa, 0xfb, 0x6e, - 0x44, 0xa, 0xbc, 0x6, 0xb8, 0xfb, 0xed, 0x5, 0xe, 0x7f, 0xa, 0xd6, - 0xf7, 0x15, 0xf7, 0x39, 0xf7, 0x1a, 0x3, 0x6b, 0x16, 0xf7, 0x8b, 0x55, - 0xa, 0x6c, 0x6, 0xe7, 0xce, 0xd4, 0x48, 0x5, 0x6f, 0x6f, 0xa, 0xf7, - 0x8c, 0x3f, 0xa, 0x36, 0x6, 0xfb, 0x17, 0xf7, 0x11, 0xf7, 0x30, 0xf7, - 0x12, 0x5, 0xe0, 0x3f, 0xa, 0xfb, 0x79, 0x44, 0xa, 0x9d, 0x6, 0x3a, - 0x48, 0x5c, 0xce, 0x5, 0xa0, 0x3f, 0xa, 0xfb, 0x85, 0x44, 0xa, 0xe2, - 0x6, 0xef, 0xfb, 0x14, 0xfb, 0x3a, 0xfb, 0xf, 0x5, 0x33, 0x6, 0xe, - 0xfb, 0x22, 0xe3, 0xf8, 0x29, 0xe3, 0x1, 0xe3, 0xf7, 0x3, 0xf7, 0x8f, - 0xf7, 0x1, 0x3, 0x67, 0x55, 0x15, 0x76, 0x33, 0x5, 0xf7, 0xc0, 0x6, - 0xa0, 0xe3, 0x5, 0x45, 0x6, 0xf8, 0x1, 0xf8, 0x29, 0x5c, 0xa, 0x9f, - 0xe3, 0x5, 0xfb, 0x7f, 0x6, 0x77, 0x33, 0x5, 0xbb, 0x6, 0xfb, 0x3c, - 0xfb, 0x4d, 0x38, 0xf7, 0x4d, 0x5, 0xbd, 0x6, 0x9f, 0xe3, 0x5, 0xfb, - 0x83, 0x6, 0x77, 0x33, 0x5c, 0xa, 0xf7, 0xb, 0xfb, 0xa0, 0xfb, 0x11, - 0xfb, 0x1d, 0x5, 0xe, 0xfb, 0x22, 0xe2, 0xf8, 0x25, 0xe3, 0x1, 0xe2, - 0xf7, 0x4, 0xf7, 0x8e, 0xf7, 0x2, 0x3, 0xf7, 0x8c, 0xf8, 0x7f, 0x15, - 0xf7, 0xec, 0xd4, 0x76, 0xec, 0xfb, 0xe2, 0xfb, 0x6, 0x5, 0xfb, 0xa5, - 0xfc, 0xee, 0x6b, 0xa, 0xf8, 0x1, 0xf8, 0x25, 0x5, 0xd9, 0x84, 0xa, - 0xfb, 0x80, 0x6, 0x77, 0x34, 0x5, 0xbb, 0x6, 0xfb, 0x40, 0xfb, 0x4a, - 0x4d, 0xa, 0xfb, 0x9d, 0xfb, 0xe, 0xfb, 0x1d, 0x5, 0xe, 0xfb, 0x22, - 0xe2, 0xf8, 0x26, 0xe2, 0xd4, 0xf7, 0xa, 0x1, 0xe2, 0xf7, 0x4, 0xf7, - 0x8f, 0xf7, 0x2, 0x3, 0xf8, 0x24, 0xf8, 0x8f, 0x15, 0xf7, 0x9, 0x6, - 0xa4, 0xf7, 0xa, 0x5, 0xfb, 0x8, 0x6, 0xfb, 0x6b, 0xfb, 0xa, 0x15, - 0xf7, 0x8, 0x6, 0xa5, 0xf7, 0xa, 0x5, 0xfb, 0x8, 0x6, 0xfb, 0xa5, - 0xfd, 0x3c, 0x6b, 0xa, 0xf8, 0x2, 0xf8, 0x26, 0x5, 0xd8, 0x84, 0xa, - 0xfb, 0x7f, 0x6, 0x77, 0x34, 0x5, 0xbb, 0x6, 0xfb, 0x41, 0xfb, 0x4b, - 0x4d, 0xa, 0xfb, 0x9e, 0xfb, 0xe, 0xfb, 0x1c, 0x5, 0xe, 0x8b, 0xe2, - 0xbe, 0xbd, 0xc3, 0xbc, 0xf7, 0x4a, 0xe2, 0x1, 0xa3, 0x16, 0xf7, 0xdb, - 0x6, 0x9e, 0xe2, 0x5, 0xfb, 0xa, 0x6, 0x97, 0xbe, 0x70, 0xa, 0x95, - 0xbd, 0x5, 0xfb, 0x29, 0x6, 0x9a, 0xc3, 0x70, 0xa, 0x97, 0xbc, 0x5, - 0xfb, 0x22, 0x6, 0xf7, 0x5f, 0xf7, 0x4a, 0x5c, 0xa, 0x9e, 0xe2, 0x5, - 0xfb, 0x83, 0x6, 0x77, 0x34, 0x5, 0xb8, 0x6, 0xfb, 0x11, 0xfb, 0x8, - 0x41, 0xf7, 0x8, 0x5, 0xb9, 0x6, 0x9e, 0xe2, 0x5, 0xfb, 0x88, 0x6, - 0x78, 0x34, 0x5, 0xdd, 0x6, 0xf7, 0x10, 0xfb, 0x4a, 0x5, 0xfb, 0x26, - 0x6, 0x81, 0x5a, 0x70, 0xa, 0x7c, 0x53, 0x85, 0xa, 0x82, 0x59, 0x70, - 0xa, 0x7f, 0x58, 0x83, 0xa, 0xe, 0x8b, 0xe9, 0xf7, 0x90, 0xe8, 0x1, - 0xf2, 0xed, 0xf7, 0x6c, 0xed, 0x3, 0xad, 0x16, 0xf8, 0x4e, 0x6, 0xb2, - 0xf7, 0x50, 0x5, 0x29, 0x44, 0xa, 0xfb, 0x55, 0x6, 0xf7, 0xef, 0xf7, - 0xa9, 0x99, 0xcf, 0x5, 0xfc, 0x3f, 0x6, 0x67, 0xfb, 0x46, 0x56, 0xa, - 0x9c, 0xe0, 0x5, 0xf7, 0x43, 0x6, 0xfb, 0xec, 0xfb, 0xa6, 0x5, 0xe, - 0x8b, 0xe6, 0xf7, 0x89, 0xe5, 0xc7, 0xd5, 0x1, 0xe8, 0xea, 0xf7, 0x5d, - 0xe9, 0x3, 0xf7, 0xb9, 0xf8, 0x7a, 0x15, 0xec, 0x6, 0xf7, 0x4d, 0xf7, - 0x24, 0x58, 0xb0, 0xfb, 0x3f, 0x20, 0xfb, 0xf, 0xf6, 0x46, 0x67, 0x5, - 0xfb, 0x1d, 0xfd, 0xb, 0x15, 0xf8, 0x3d, 0x6, 0xad, 0xf7, 0x3c, 0x5, - 0x2d, 0x6, 0x7a, 0x3e, 0x5, 0xfb, 0x49, 0x6, 0xf7, 0xde, 0xf7, 0xa2, - 0x98, 0xcc, 0x5, 0xfc, 0x2d, 0x6, 0x6b, 0xfb, 0x2d, 0x5, 0xea, 0x6, - 0x98, 0xca, 0x5, 0xf7, 0x3a, 0x6, 0xfb, 0xdd, 0xfb, 0x9e, 0x5, 0xe, - 0x7c, 0xe9, 0xf8, 0x4f, 0xe9, 0x1, 0xd3, 0xec, 0xf7, 0x9b, 0xeb, 0x3, - 0xd3, 0xf7, 0x50, 0x15, 0x2b, 0xa9, 0x20, 0xf7, 0x1b, 0xf7, 0x91, 0xb1, - 0xf7, 0xe3, 0xf7, 0xd, 0xe5, 0x61, 0xe0, 0xfb, 0xc, 0xfb, 0x88, 0x59, - 0xfb, 0xd2, 0xfb, 0x2, 0x1e, 0xec, 0x9d, 0x15, 0xf7, 0x10, 0xd1, 0xf7, - 0x54, 0xf5, 0xee, 0x7f, 0x31, 0x56, 0x3e, 0x58, 0xfb, 0x73, 0xfb, 0xe, - 0x3b, 0x81, 0xca, 0xcb, 0x1e, 0xe, 0x79, 0x9d, 0xf8, 0x4b, 0x9f, 0xf6, - 0x99, 0x9f, 0x9f, 0x6, 0xfb, 0x26, 0x8f, 0x7, 0x1e, 0xa0, 0x39, 0x63, - 0xff, 0xc, 0x9, 0xe8, 0xa, 0xe8, 0xb, 0x8c, 0xc, 0xe, 0xf8, 0xec, - 0x14, 0xac, 0x13, 0x0, 0x79, 0x2, 0x0, 0x1, 0x0, 0x3b, 0x0, 0x4d, - 0x0, 0x89, 0x0, 0x8d, 0x0, 0xcb, 0x1, 0x15, 0x1, 0x51, 0x1, 0x5d, - 0x1, 0x65, 0x1, 0x6c, 0x1, 0x94, 0x1, 0xb0, 0x1, 0xc5, 0x1, 0xdd, - 0x1, 0xf8, 0x2, 0x16, 0x2, 0x2e, 0x2, 0x3b, 0x2, 0x44, 0x2, 0x59, - 0x2, 0x5e, 0x2, 0x72, 0x2, 0x77, 0x2, 0x7c, 0x2, 0x93, 0x2, 0xba, - 0x2, 0xc1, 0x2, 0xcb, 0x2, 0xd0, 0x2, 0xf2, 0x2, 0xf7, 0x2, 0xfc, - 0x3, 0x4, 0x3, 0xd, 0x3, 0x12, 0x3, 0x15, 0x3, 0x1a, 0x3, 0x22, - 0x3, 0x27, 0x3, 0x3c, 0x3, 0x49, 0x3, 0x55, 0x3, 0x5c, 0x3, 0x61, - 0x3, 0x66, 0x3, 0x77, 0x3, 0x7b, 0x3, 0x8e, 0x3, 0x9b, 0x3, 0xae, - 0x3, 0xc1, 0x3, 0xcc, 0x3, 0xd7, 0x3, 0xdc, 0x3, 0xe0, 0x3, 0xe8, - 0x3, 0xf0, 0x3, 0xf8, 0x3, 0xfd, 0x4, 0x2, 0x4, 0x6, 0x4, 0xe, - 0x4, 0x16, 0x4, 0x1e, 0x4, 0x27, 0x4, 0x2e, 0x4, 0x34, 0x4, 0x3a, - 0x4, 0x40, 0x4, 0x45, 0x4, 0x49, 0x4, 0x52, 0x4, 0x5a, 0x4, 0x66, - 0x4, 0x74, 0x4, 0x7f, 0x4, 0x8a, 0x4, 0x8f, 0x4, 0x94, 0x4, 0x99, - 0x4, 0x9e, 0x4, 0xa2, 0x4, 0xa9, 0x4, 0xb5, 0x4, 0xba, 0x4, 0xc0, - 0x4, 0xc6, 0x4, 0xcc, 0x4, 0xd2, 0x4, 0xd8, 0x4, 0xdc, 0x4, 0xe0, - 0x4, 0xe4, 0x4, 0xe8, 0x4, 0xf3, 0x4, 0xfa, 0x5, 0x0, 0x5, 0x7, - 0x5, 0xc, 0x5, 0x11, 0x5, 0x16, 0x5, 0x1b, 0x5, 0x20, 0x5, 0x25, - 0x5, 0x2a, 0x5, 0x2f, 0x5, 0x33, 0x5, 0x3d, 0x5, 0x47, 0x5, 0x50, - 0x5, 0x58, 0x5, 0x5c, 0x5, 0x65, 0x5, 0x6a, 0x5, 0x6f, 0x5, 0x74, - 0x5, 0x79, 0x5, 0x7e, 0x5, 0x82, 0x5, 0x86, 0x5, 0x8a, 0xf7, 0x8d, - 0x6, 0x9f, 0xe5, 0x5, 0x30, 0x6, 0xb9, 0xd7, 0x5, 0xf7, 0x84, 0x6, - 0x9f, 0x3f, 0x5, 0x33, 0x3c, 0xa, 0xf7, 0x88, 0x37, 0xa, 0x51, 0x6, - 0xfb, 0x1, 0xf8, 0x64, 0x5, 0xfb, 0x91, 0x3c, 0xa, 0xf7, 0x15, 0x6, - 0xfb, 0x8e, 0x7c, 0xa, 0x4e, 0x6, 0xf7, 0x9d, 0xf7, 0x3a, 0x15, 0xf7, - 0xa, 0xf7, 0x3d, 0xb6, 0xfb, 0x3d, 0x5, 0xb, 0x22, 0xa, 0x1f, 0x13, - 0xbc, 0x3b, 0xa, 0x1e, 0x13, 0x7c, 0xa1, 0xf7, 0x1, 0x15, 0x13, 0xbc, - 0x2c, 0xa, 0x15, 0xf7, 0x41, 0x42, 0xa, 0x3c, 0x6, 0xac, 0xf7, 0x36, - 0x5, 0x91, 0xa8, 0x90, 0xaa, 0xa7, 0x1a, 0xcf, 0x46, 0xa9, 0x46, 0x2e, - 0xfb, 0x6, 0x6f, 0x74, 0x51, 0x1e, 0x9f, 0x3c, 0x5, 0x9c, 0xa6, 0xef, - 0xa1, 0xd6, 0x1b, 0xbc, 0xb0, 0x7b, 0x69, 0x84, 0x8a, 0x83, 0x88, 0x83, - 0x1f, 0x8f, 0x68, 0x64, 0x8e, 0x67, 0x1b, 0xfb, 0x8a, 0x6e, 0xfb, 0x20, - 0x64, 0xb, 0x15, 0x20, 0xa, 0xe, 0x15, 0xfb, 0x28, 0xf7, 0x1, 0x43, - 0xf7, 0x8, 0xf7, 0x44, 0xf7, 0x34, 0xf7, 0x9, 0xf7, 0x89, 0xf7, 0x6, - 0x48, 0xf4, 0xfb, 0x29, 0xfb, 0x57, 0xfb, 0x2a, 0xfb, 0x2f, 0xfb, 0x62, - 0x1e, 0xef, 0x9e, 0x15, 0xf7, 0x4, 0x8a, 0xe4, 0xf7, 0x1f, 0xf7, 0x1e, - 0x1b, 0xf7, 0x5, 0xa6, 0x33, 0x46, 0x8a, 0x1f, 0x2a, 0x3d, 0xfb, 0x27, - 0xfb, 0x23, 0x29, 0x5d, 0xd2, 0xda, 0x1e, 0xe, 0x15, 0xdc, 0x6, 0x54, - 0xfb, 0x9c, 0x5, 0x86, 0x73, 0x89, 0x75, 0x77, 0x1a, 0x2d, 0xc8, 0x55, - 0xf7, 0xd, 0xf7, 0x15, 0xe9, 0xac, 0xf7, 0x48, 0xb0, 0x1e, 0xc2, 0xf7, - 0x9d, 0x5, 0xdb, 0x46, 0xa, 0xfb, 0xa2, 0x6, 0x79, 0x31, 0x5, 0xeb, - 0x6, 0x57, 0xfb, 0x95, 0x5, 0x36, 0x79, 0x6b, 0x5e, 0x24, 0x1b, 0x3b, - 0x75, 0xab, 0xb0, 0x8a, 0x1f, 0x9a, 0x8d, 0x9a, 0x8e, 0x9a, 0x1e, 0xc3, - 0xf7, 0xa5, 0x5, 0xea, 0x46, 0xa, 0xfb, 0xa2, 0x6, 0xb, 0x7a, 0x7b, - 0x1a, 0x43, 0xd0, 0x60, 0xdd, 0xbf, 0xc0, 0xa6, 0xa5, 0xb7, 0x1e, 0x13, - 0x70, 0x81, 0x62, 0x5, 0xf7, 0x43, 0x37, 0xa, 0x3b, 0x6, 0xd0, 0xf7, - 0xf7, 0x8f, 0xa, 0x36, 0xa, 0xda, 0x6, 0x65, 0xfb, 0x63, 0x5, 0x13, - 0xb0, 0x6c, 0x63, 0x5b, 0x64, 0x4d, 0x1b, 0x54, 0x7a, 0xa2, 0xa1, 0x97, - 0x8c, 0x96, 0x8c, 0x93, 0x1f, 0xc3, 0xf7, 0xb8, 0x43, 0xa, 0x15, 0xdc, - 0x6, 0x67, 0xfb, 0x5b, 0x5, 0x85, 0x78, 0x89, 0x26, 0xa, 0x15, 0x33, - 0xa, 0x13, 0xd8, 0x2a, 0xa, 0xe, 0x30, 0xa, 0x26, 0xfb, 0x44, 0x2d, - 0xa, 0x7b, 0x42, 0x56, 0xa, 0xbc, 0xf7, 0x80, 0x4e, 0xa, 0x7c, 0x41, - 0x4c, 0xa, 0xa7, 0xf7, 0x1e, 0x88, 0xa, 0x72, 0xfb, 0x8, 0x56, 0xa, - 0xb6, 0xf7, 0x62, 0x5, 0xfc, 0xa1, 0x6, 0x79, 0x31, 0x8a, 0xa, 0x3d, - 0x7c, 0xa, 0x37, 0x6, 0xb, 0xf8, 0x55, 0x37, 0xa, 0xfb, 0x40, 0x6, - 0xdb, 0xf8, 0xa, 0x5, 0xf7, 0x3e, 0x37, 0xa, 0xfc, 0x51, 0x3c, 0xa, - 0xf7, 0x41, 0x6, 0x3b, 0xfc, 0xa, 0x3e, 0xa, 0xb, 0x61, 0x53, 0x49, - 0x6a, 0x48, 0x1b, 0x66, 0x65, 0x98, 0xa4, 0xc3, 0xe4, 0x9d, 0xc3, 0xc5, - 0xb1, 0x84, 0x89, 0xa8, 0x1f, 0xe, 0x1e, 0xf1, 0xa2, 0x15, 0xef, 0xea, - 0xca, 0xf5, 0xf7, 0x3, 0xb0, 0x54, 0x56, 0x20, 0xfb, 0x5, 0x55, 0x35, - 0x53, 0x2d, 0xa3, 0xdd, 0x1e, 0xe, 0x15, 0x9d, 0xe6, 0x5, 0xf7, 0x33, - 0x6, 0xdb, 0xf7, 0x94, 0x5, 0xfb, 0x35, 0x34, 0xa, 0xf7, 0x98, 0x6, - 0x25, 0xfb, 0xef, 0x5, 0xf7, 0x4d, 0x4b, 0xa, 0xe, 0x5, 0x6d, 0x44, - 0x3c, 0x74, 0x3f, 0x1b, 0xfb, 0xf, 0x82, 0xb9, 0xaf, 0x87, 0x1f, 0x9b, - 0xe6, 0x15, 0xc4, 0xac, 0xd5, 0xb0, 0xc8, 0x1b, 0xca, 0xd8, 0x6e, 0x4a, - 0x8c, 0x1f, 0xe, 0x15, 0xfb, 0x12, 0xf7, 0x18, 0x5b, 0xf3, 0xf7, 0x1a, - 0xf7, 0x49, 0xe6, 0xf7, 0x49, 0xe9, 0x48, 0xe0, 0xfb, 0x32, 0xfb, 0x32, - 0xfb, 0x3c, 0xb, 0x3c, 0xf7, 0x2a, 0xea, 0xe0, 0xa1, 0xb5, 0xdd, 0x1f, - 0x7a, 0xdb, 0x2f, 0xa, 0x35, 0xa, 0xfb, 0x4a, 0x93, 0xa, 0xd3, 0x31, - 0xa, 0xf8, 0xa4, 0x6, 0xb5, 0xf7, 0x5e, 0x7a, 0xa, 0x73, 0xfb, 0x4, - 0x95, 0xa, 0xab, 0xf7, 0x27, 0x5, 0xf7, 0x4, 0x6, 0xb, 0x6, 0x9e, - 0xe6, 0x5, 0xb, 0x15, 0xf8, 0x21, 0x6, 0x94, 0xa3, 0x97, 0xc0, 0xa9, - 0x1a, 0xee, 0x89, 0x30, 0xd1, 0xfb, 0x9, 0x1b, 0xfb, 0x17, 0xb, 0x6, - 0x78, 0x30, 0x5, 0xb, 0x6, 0x9e, 0xe5, 0x5, 0xb, 0x49, 0xa, 0xbf, - 0x3a, 0xfb, 0xa, 0x42, 0x3d, 0x35, 0x1e, 0xd9, 0x95, 0x15, 0xb7, 0xaf, - 0xb3, 0xc8, 0xb5, 0xa5, 0x73, 0x53, 0xa, 0xb, 0x15, 0x4d, 0xba, 0x57, - 0xe3, 0xed, 0xef, 0xd2, 0xe9, 0xc7, 0x58, 0xbe, 0x37, 0x27, 0x29, 0x3f, - 0x35, 0x1e, 0xdc, 0x91, 0x15, 0xba, 0xb2, 0xb2, 0xc7, 0xba, 0xa4, 0x72, - 0x6c, 0x56, 0x52, 0x70, 0x5e, 0x62, 0x6f, 0xa3, 0xa5, 0x1e, 0xb, 0x8b, - 0xe6, 0xf8, 0x10, 0xe6, 0x1, 0xb, 0x52, 0xbf, 0x51, 0xf0, 0xda, 0xb6, - 0xa2, 0xae, 0xca, 0xb, 0x6, 0x78, 0x31, 0x5, 0xb, 0x84, 0xa3, 0xa3, - 0x83, 0xa1, 0x1b, 0xd5, 0xc5, 0xbd, 0xa4, 0xa6, 0x1f, 0x5f, 0xca, 0x5, - 0x77, 0x6e, 0x69, 0x72, 0x67, 0x1b, 0x7a, 0x76, 0x91, 0x92, 0x76, 0x1f, - 0x92, 0x75, 0x75, 0x92, 0x76, 0x1b, 0xb, 0x5, 0xfb, 0x43, 0x6, 0xb, - 0x6, 0x9e, 0xe9, 0x5, 0xb, 0x8b, 0xe5, 0xd7, 0xe5, 0xf7, 0x64, 0xe5, - 0xb, 0x7c, 0xe7, 0x3b, 0xe6, 0xf0, 0xe5, 0xcd, 0xe6, 0xb, 0x6, 0x9d, - 0xe6, 0x5, 0xb, 0x3e, 0xa, 0xe, 0x6, 0x78, 0x2d, 0x5, 0xb, 0x1, - 0xa3, 0xf1, 0xf7, 0xf1, 0xef, 0x3, 0xb, 0x6, 0x9d, 0xe5, 0x5, 0xb, - 0xbb, 0xd5, 0xbf, 0xb5, 0x73, 0x5c, 0x99, 0x1e, 0xe6, 0xb0, 0x5, 0xb9, - 0x78, 0x69, 0xdc, 0xfb, 0x15, 0x1b, 0xfb, 0x22, 0xb, 0x15, 0xee, 0x6, - 0xf7, 0x53, 0xf7, 0x25, 0x57, 0xaf, 0xfb, 0x45, 0x5e, 0xa, 0x15, 0x4f, - 0xbb, 0x58, 0xde, 0xf1, 0xe1, 0xd2, 0xe7, 0xc7, 0x5c, 0xb, 0x64, 0xa, - 0xf7, 0xf, 0x65, 0xa, 0xb, 0x6, 0x79, 0x30, 0x5, 0xb, 0x5, 0xfb, - 0x3, 0x6, 0xb, 0x3d, 0xf7, 0x4b, 0x5, 0xbd, 0x84, 0xa, 0xfb, 0x84, - 0x6, 0x77, 0x34, 0x5c, 0xa, 0xf7, 0x8, 0xb, 0x5, 0x29, 0x6, 0xb, - 0x15, 0x6b, 0xa2, 0x73, 0xad, 0xb7, 0xb5, 0xb5, 0xba, 0xbb, 0x72, 0x99, - 0x6a, 0x5a, 0x67, 0x5e, 0x59, 0x1e, 0xb, 0x16, 0x60, 0xa, 0xa8, 0x7a, - 0xa4, 0x63, 0x54, 0x6e, 0x5f, 0x67, 0x1e, 0xb, 0x15, 0xf7, 0x62, 0xfb, - 0x55, 0xc0, 0xc5, 0xfb, 0x26, 0xf7, 0x1b, 0xf7, 0x26, 0xf7, 0xf, 0x56, - 0xc7, 0x5, 0xb, 0xa7, 0xaf, 0x15, 0xb2, 0x4b, 0x5, 0x93, 0x99, 0xcd, - 0xb1, 0xbc, 0x1b, 0xa0, 0xa3, 0x84, 0x83, 0xa4, 0x1f, 0xb, 0x6d, 0x55, - 0x56, 0x70, 0x5d, 0x61, 0x73, 0xa2, 0xa7, 0x1e, 0xb, 0x8b, 0xe5, 0xd5, - 0xf7, 0x36, 0x32, 0xe4, 0xf7, 0x1e, 0xe5, 0xb, 0x6, 0x9f, 0xe9, 0x5, - 0xb, 0x5, 0xed, 0x6, 0xb, 0x7c, 0xe4, 0x3e, 0xe5, 0xf7, 0x9c, 0xe6, - 0xb, 0x1, 0x9e, 0xef, 0xf8, 0x1, 0xeb, 0x3, 0xb, 0x1, 0xf3, 0xe9, - 0xf7, 0x8b, 0xe9, 0x3, 0xb, 0x15, 0xf7, 0x4, 0x6, 0xb, 0x6, 0x9e, - 0xe7, 0x5, 0xb, 0x5, 0xd9, 0x6, 0xb, 0x63, 0xa, 0xf7, 0x75, 0x77, - 0x45, 0xa, 0xb, 0x22, 0xfb, 0x10, 0xf5, 0x45, 0x69, 0x5, 0xe, 0x61, - 0xa, 0xf7, 0x77, 0x77, 0x76, 0xa, 0xb, 0x71, 0xa2, 0x72, 0xb1, 0xba, - 0xac, 0xb3, 0xb0, 0xb, 0x7c, 0xe6, 0xdd, 0xe6, 0xe9, 0xe6, 0xb, 0x1, - 0xf7, 0x67, 0xf1, 0x3, 0xb, 0x7c, 0xe6, 0xf7, 0xa1, 0xe6, 0xb, 0x15, - 0xf7, 0x6, 0x6, 0xa5, 0xb, 0x5, 0xfb, 0x5, 0x6, 0xb, 0x5, 0x2a, - 0x6, 0xb, 0x57, 0xa, 0xf7, 0x6f, 0x77, 0x12, 0x13, 0xb0, 0xb, 0x75, - 0xa, 0xf7, 0x7a, 0x77, 0x62, 0xa, 0xb, 0xf8, 0x8f, 0x5a, 0xa, 0xaa, - 0xf7, 0x2b, 0x5, 0xfb, 0x4, 0x6, 0xb, 0xb1, 0x4c, 0xf7, 0x66, 0xf7, - 0x2e, 0xfb, 0x1b, 0xf7, 0x32, 0x4d, 0x57, 0xc5, 0xb, 0x15, 0x76, 0x34, - 0x5, 0xf7, 0xc0, 0x84, 0xa, 0x46, 0x6, 0xb, 0x5, 0xda, 0x6, 0x9d, - 0xe8, 0x5, 0xfb, 0xa0, 0x82, 0xa, 0xb, 0x15, 0xf7, 0x5, 0x6, 0xb, - 0x6, 0x77, 0x30, 0x5, 0xb, 0x6, 0x77, 0x2d, 0x5, 0xb, 0x5, 0xf7, - 0x28, 0x6, 0xb, 0xf7, 0xb1, 0x5, 0xb, 0x64, 0xa, 0xf7, 0x10, 0x83, - 0xa, 0xb, 0x15, 0xf8, 0x63, 0x6, 0x9e, 0xf7, 0x2, 0x5, 0xfc, 0x63, - 0x6, 0xb, 0x6, 0x3c, 0x7d, 0xa, 0xb, 0x8b, 0xe5, 0xf8, 0xa, 0xe5, - 0xb, 0x1, 0xf8, 0x66, 0xe8, 0x3, 0xb, 0x79, 0xe4, 0xf8, 0x25, 0xe6, - 0xb, 0x8b, 0xe6, 0xf7, 0x94, 0xe6, 0xb, 0x79, 0xe6, 0xf8, 0x17, 0xe5, - 0xb, 0x5, 0x2b, 0x6, 0xb, 0x5, 0x28, 0x6, 0xb, 0xfc, 0xa, 0x5, - 0xb, 0xfc, 0x10, 0x5, 0xb, 0x5, 0xfb, 0x4c, 0x6, 0x79, 0x2e, 0x5, - 0xd8, 0x6, 0x3f, 0xb, 0x8b, 0xe9, 0xf7, 0x8f, 0xe9, 0x1, 0xb, 0x6, - 0xf7, 0x55, 0x71, 0xa, 0xb, 0x8b, 0xe9, 0xf8, 0x4a, 0xe9, 0x1, 0xb, - 0x6, 0x78, 0x2e, 0x5, 0xb, 0x5, 0xfb, 0x6, 0x6, 0xb, 0x6, 0x9f, - 0xe2, 0x5, 0xb, 0x5, 0xfb, 0x28, 0x6, 0xb, 0x5, 0xfb, 0x2, 0x6, - 0xb, 0x6, 0x79, 0x2d, 0x5, 0xb, 0x5, 0xf7, 0x8f, 0x6, 0xb, 0x6, - 0x9f, 0xe8, 0x5, 0xb, 0x5, 0xdb, 0x6, 0xb, 0xf7, 0x1b, 0xc5, 0x98, - 0x1f, 0xe7, 0xf8, 0x2e, 0x5, 0xb, 0xda, 0xf7, 0xb, 0xa4, 0x1f, 0xc5, - 0xf7, 0xb6, 0x5, 0xb, 0x5, 0xfb, 0x45, 0x6, 0x79, 0x32, 0x8a, 0xa, - 0xb, 0x65, 0xca, 0xfb, 0x66, 0xfb, 0x2e, 0x5, 0xe, 0x5, 0xfb, 0x42, - 0xb, 0x55, 0x15, 0x77, 0x33, 0x5, 0xf7, 0xd7, 0x6, 0xb, 0xf7, 0x73, - 0x77, 0x1, 0xb, 0x15, 0xf7, 0x3, 0x6, 0xb, 0x28, 0xfb, 0x42, 0x2a, - 0xb, 0x6, 0x9e, 0xe8, 0x5, 0xb, 0x5, 0xfb, 0x90, 0x6, 0xb, 0x5, - 0xec, 0x6, 0xb, 0xf7, 0x20, 0x5, 0xb, 0xfb, 0x56, 0x5, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp deleted file mode 100644 index 905e7bbc5c..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp +++ /dev/null @@ -1,1572 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitFixedItalicFontData[18746] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x15, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x46, 0x69, 0x78, 0x65, 0x64, 0x4f, 0x54, 0x46, 0x2d, 0x49, - 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x23, 0xf8, 0x10, - 0x0, 0xf8, 0x2a, 0x1, 0xf8, 0x2b, 0x2, 0xf8, 0x2c, 0x3, 0xf8, 0x18, - 0x4, 0x5b, 0xfb, 0x8d, 0xf9, 0x2b, 0xf9, 0xb7, 0x5, 0xf7, 0xa3, 0xf, - 0xf9, 0xc, 0x11, 0xaa, 0x1c, 0x42, 0x78, 0x12, 0x0, 0x12, 0x1, 0x1, - 0x5, 0x7, 0x9, 0x11, 0x19, 0x1f, 0x25, 0x29, 0x2d, 0x39, 0x42, 0x49, - 0x53, 0x5c, 0x65, 0x8f, 0xa5, 0xb4, 0x49, 0x64, 0x6f, 0x74, 0x49, 0x4a, - 0x69, 0x6a, 0x53, 0x63, 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x73, 0x63, - 0x65, 0x64, 0x69, 0x6c, 0x6c, 0x61, 0x47, 0x63, 0x61, 0x72, 0x6f, 0x6e, - 0x67, 0x63, 0x61, 0x72, 0x6f, 0x6e, 0x6c, 0x69, 0x72, 0x61, 0x45, 0x75, - 0x72, 0x6f, 0x70, 0x72, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, 0x74, 0x61, - 0x72, 0x72, 0x6f, 0x77, 0x75, 0x70, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x64, 0x6f, 0x77, - 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x46, 0x69, - 0x78, 0x65, 0x64, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x49, 0x74, 0x61, 0x6c, - 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x46, 0x69, 0x78, 0x65, - 0x64, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x1, 0x0, 0x1, 0x6, 0x0, - 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, - 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, - 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, - 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, - 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, - 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, - 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, - 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, - 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, - 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, - 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, - 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, - 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, - 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, - 0xc9, 0x0, 0x0, 0xc8, 0x0, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, - 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, - 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, - 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, - 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, - 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x1, - 0x87, 0x0, 0x0, 0x91, 0x0, 0x1, 0x88, 0x1, 0x0, 0x8c, 0x0, 0x0, - 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x94, 0x0, 0x1, 0x8a, 0x1, 0x0, - 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, - 0x65, 0x0, 0x1, 0x8c, 0x1, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, - 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, - 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, - 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, - 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, - 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, 0x8e, 0x2, 0x0, 0x99, 0x0, 0x1, - 0x91, 0x4, 0x0, 0xa6, 0x0, 0x0, 0x6d, 0x1, 0x0, 0xf4, 0x2, 0x0, - 0x1, 0x0, 0x2, 0x0, 0x3, 0x0, 0x2f, 0x0, 0x62, 0x0, 0xd0, 0x1, - 0x55, 0x1, 0xb1, 0x2, 0x3c, 0x2, 0x50, 0x2, 0x87, 0x2, 0xbe, 0x2, - 0xf5, 0x3, 0x21, 0x3, 0x2f, 0x3, 0x43, 0x3, 0x52, 0x3, 0x67, 0x3, - 0xab, 0x3, 0xd2, 0x4, 0x22, 0x4, 0x80, 0x4, 0xc1, 0x5, 0x11, 0x5, - 0x67, 0x5, 0x8f, 0x6, 0x0, 0x6, 0x57, 0x6, 0x6f, 0x6, 0x8f, 0x6, - 0xb2, 0x6, 0xd4, 0x6, 0xf7, 0x7, 0x5b, 0x7, 0xf8, 0x8, 0x32, 0x8, - 0x9f, 0x8, 0xf3, 0x9, 0x2e, 0x9, 0x77, 0x9, 0xc3, 0x9, 0xd7, 0xa, - 0x28, 0xa, 0x48, 0xa, 0x84, 0xa, 0xd7, 0xb, 0x1, 0xb, 0x48, 0xb, - 0x83, 0xb, 0xcd, 0xc, 0x1a, 0xc, 0xb7, 0xd, 0x19, 0xd, 0x88, 0xd, - 0xbc, 0xe, 0x12, 0xe, 0x3d, 0xe, 0x7f, 0xe, 0xd2, 0xf, 0x7, 0xf, - 0x3e, 0xf, 0x5e, 0xf, 0x81, 0xf, 0xa4, 0xf, 0xd4, 0xf, 0xe5, 0xf, - 0xf5, 0x10, 0x45, 0x10, 0xaa, 0x10, 0xfe, 0x11, 0x65, 0x11, 0xb9, 0x12, - 0xa, 0x12, 0x1f, 0x12, 0x6b, 0x12, 0xa0, 0x12, 0xe2, 0x13, 0x30, 0x13, - 0x53, 0x13, 0xca, 0x14, 0x29, 0x14, 0x70, 0x14, 0xd7, 0x15, 0x3f, 0x15, - 0x84, 0x15, 0xed, 0x16, 0x39, 0x16, 0x8f, 0x16, 0xbb, 0x16, 0xff, 0x17, - 0x52, 0x17, 0x92, 0x17, 0xc4, 0x18, 0x2b, 0x18, 0x45, 0x18, 0xac, 0x18, - 0xea, 0x19, 0x19, 0x19, 0x77, 0x19, 0xe6, 0x1a, 0x67, 0x1a, 0xca, 0x1a, - 0xe9, 0x1b, 0x82, 0x1b, 0x9e, 0x1c, 0x23, 0x1c, 0x8a, 0x1c, 0xbd, 0x1c, - 0xd8, 0x1d, 0x60, 0x1d, 0x73, 0x1d, 0xb0, 0x1d, 0xee, 0x1e, 0x31, 0x1e, - 0x97, 0x1e, 0xa9, 0x1e, 0xee, 0x1f, 0x27, 0x1f, 0x48, 0x1f, 0x84, 0x1f, - 0xa8, 0x1f, 0xe7, 0x20, 0x1c, 0x20, 0x89, 0x20, 0xfc, 0x21, 0xaa, 0x22, - 0x9, 0x22, 0x27, 0x22, 0x4e, 0x22, 0x7b, 0x22, 0xc6, 0x22, 0xe9, 0x23, - 0x2f, 0x23, 0x9f, 0x24, 0x22, 0x24, 0x40, 0x24, 0x63, 0x24, 0x89, 0x24, - 0xb7, 0x24, 0xd4, 0x25, 0x14, 0x25, 0x3e, 0x25, 0x6d, 0x25, 0xc8, 0x26, - 0x49, 0x26, 0x67, 0x26, 0x88, 0x26, 0xae, 0x26, 0xff, 0x27, 0x31, 0x27, - 0x60, 0x27, 0xe8, 0x27, 0xfd, 0x28, 0x16, 0x28, 0x3f, 0x28, 0x61, 0x28, - 0x80, 0x28, 0xd1, 0x29, 0x5b, 0x29, 0x71, 0x29, 0x97, 0x29, 0xad, 0x2a, - 0x13, 0x2a, 0x36, 0x2a, 0x7f, 0x2b, 0x2d, 0x2b, 0xaf, 0x2b, 0xcd, 0x2b, - 0xea, 0x2c, 0x19, 0x2c, 0x4a, 0x2c, 0x65, 0x2c, 0x96, 0x2c, 0xba, 0x2c, - 0xda, 0x2d, 0x51, 0x2d, 0xf4, 0x2e, 0xc, 0x2e, 0x23, 0x2e, 0x49, 0x2e, - 0x92, 0x2e, 0xb9, 0x2e, 0xeb, 0x2f, 0x6a, 0x2f, 0x89, 0x2f, 0xa8, 0x2f, - 0xd0, 0x2f, 0xf8, 0x30, 0x4b, 0x30, 0xb6, 0x31, 0x1b, 0x31, 0x40, 0x31, - 0x66, 0x31, 0xc3, 0x32, 0x29, 0x32, 0x65, 0x32, 0x9f, 0x33, 0x0, 0x33, - 0x8c, 0x34, 0x39, 0x34, 0xe5, 0x35, 0x70, 0x36, 0x2, 0x36, 0x2d, 0x36, - 0x71, 0x36, 0xb3, 0x37, 0xa, 0x37, 0x28, 0x37, 0x49, 0x37, 0x6b, 0x37, - 0x8d, 0x37, 0xb6, 0x37, 0xc6, 0x37, 0xfd, 0x38, 0x2e, 0x38, 0x6f, 0x38, - 0x8e, 0x38, 0x9e, 0x38, 0xae, 0x38, 0xbf, 0x38, 0xd5, 0x38, 0xe4, 0x39, - 0x7, 0x39, 0x24, 0x39, 0x40, 0x39, 0x70, 0x39, 0xb6, 0x39, 0xd4, 0x39, - 0xf4, 0x3a, 0x2f, 0x3a, 0x4e, 0x3a, 0x6e, 0x3a, 0x81, 0x3b, 0x1, 0x3b, - 0x88, 0x3c, 0x0, 0x3c, 0x53, 0x3c, 0x74, 0x3c, 0x9e, 0x3c, 0xbe, 0x3c, - 0xe3, 0x3d, 0x1d, 0x3d, 0x2c, 0x3d, 0xa7, 0x3e, 0x14, 0xe, 0xe, 0x7c, - 0xf7, 0xc, 0x1, 0xf7, 0x9f, 0xb7, 0x3, 0xf7, 0x9f, 0xf7, 0x49, 0x15, - 0xb7, 0x6, 0xee, 0xf8, 0x1b, 0x5, 0x3d, 0x6, 0xfb, 0x22, 0xfc, 0xab, - 0x15, 0x6e, 0x9d, 0x74, 0xb0, 0xb3, 0xb3, 0xa8, 0xb3, 0xaa, 0x72, 0x9f, - 0x68, 0x66, 0x65, 0x69, 0x69, 0x1e, 0xe, 0xf7, 0xdc, 0xf7, 0x7e, 0x12, - 0xf7, 0x3e, 0xb6, 0x7d, 0xdb, 0xb5, 0xb5, 0x7e, 0xda, 0x13, 0xd0, 0xf7, - 0xd5, 0xf7, 0xdc, 0x15, 0x13, 0xc8, 0xa8, 0x64, 0xa, 0xda, 0x6, 0x13, - 0xd0, 0x49, 0xfb, 0x7e, 0x5, 0xfb, 0x55, 0x16, 0x13, 0xb0, 0xa8, 0x64, - 0xa, 0xdb, 0x6, 0x13, 0xd0, 0x49, 0xfb, 0x7e, 0x5, 0xe, 0xf7, 0x5e, - 0xf7, 0x34, 0xbf, 0xf7, 0x75, 0x1, 0xf7, 0x2a, 0xf7, 0x1a, 0xbb, 0xf7, - 0x39, 0x3, 0xf2, 0x4c, 0x15, 0xba, 0x6, 0xc1, 0xf7, 0x69, 0x5, 0xf7, - 0x16, 0x6, 0x59, 0xfb, 0x69, 0x5, 0xbb, 0x6, 0xbf, 0xf7, 0x69, 0x5, - 0xf2, 0x6, 0x95, 0xbf, 0x5, 0x27, 0x6, 0xb4, 0xf7, 0x34, 0x5, 0xe3, - 0x6, 0x95, 0xbf, 0x5, 0x33, 0x6, 0xc1, 0xf7, 0x75, 0x5, 0x5b, 0x6, - 0x54, 0xfb, 0x75, 0x83, 0xa, 0xc1, 0xf7, 0x75, 0x5, 0x5b, 0x6, 0x51, - 0xfb, 0x75, 0x5, 0x25, 0x6, 0x81, 0x57, 0x5, 0xf1, 0x6, 0x64, 0xfb, - 0x34, 0x5, 0x2f, 0x6, 0x81, 0x57, 0x5, 0xe5, 0x6, 0xca, 0xbf, 0x15, - 0xb1, 0xf7, 0x34, 0x5, 0xf7, 0x17, 0x6, 0x66, 0xfb, 0x34, 0x5, 0xe, - 0x22, 0x76, 0xf7, 0x2b, 0xc0, 0xf8, 0x40, 0xbf, 0x1, 0xc3, 0xc0, 0xf7, - 0xb, 0xc3, 0xf7, 0x28, 0xc5, 0x3, 0xc3, 0x9c, 0x15, 0xc0, 0x6, 0x96, - 0xbe, 0xab, 0x77, 0xa9, 0x7d, 0xb9, 0x81, 0x19, 0x6d, 0xfb, 0x2a, 0x51, - 0xa, 0xa9, 0xf7, 0x2b, 0x5, 0xf7, 0x0, 0xec, 0xbd, 0xee, 0x8c, 0x1f, - 0xd4, 0x45, 0xb1, 0x47, 0xa6, 0x1e, 0x52, 0xa0, 0x2f, 0xa4, 0x89, 0xbc, - 0x8, 0xcd, 0xd9, 0xac, 0xcc, 0xba, 0xb6, 0x72, 0x75, 0xad, 0x1e, 0x83, - 0x66, 0x6a, 0xa, 0xa8, 0xf7, 0x29, 0x5, 0x55, 0x6, 0x80, 0x54, 0x70, - 0x9a, 0x6e, 0x9d, 0x69, 0x8f, 0x19, 0x9f, 0xf7, 0x1, 0x71, 0xa, 0x77, - 0x23, 0x5, 0x57, 0x8a, 0xfb, 0x21, 0x71, 0xfb, 0x1d, 0x1a, 0x45, 0xe6, - 0x6c, 0xd1, 0x72, 0x1e, 0xcb, 0x74, 0xce, 0x6c, 0x59, 0x1a, 0x51, 0x3e, - 0x6f, 0x29, 0x59, 0x5e, 0xa0, 0xaa, 0x6d, 0x1e, 0x94, 0xb9, 0x52, 0xa, - 0xe, 0x7c, 0xc4, 0xf7, 0x28, 0xc2, 0xf7, 0x12, 0xc4, 0xf7, 0x1f, 0xc2, - 0x12, 0xf7, 0x13, 0xc4, 0xac, 0xc4, 0xc3, 0xc5, 0xab, 0xc5, 0x17, 0xf7, - 0x13, 0xf8, 0x6b, 0x6d, 0xa, 0xba, 0x42, 0x35, 0x47, 0x44, 0x3b, 0x1e, - 0xc4, 0x94, 0x15, 0xbc, 0xae, 0xb1, 0xc1, 0xad, 0xa2, 0x70, 0x72, 0xa, - 0xfb, 0x5, 0xfb, 0xb3, 0x15, 0xf8, 0x61, 0xf7, 0x43, 0x5, 0x13, 0xc5, - 0x86, 0xc1, 0xfc, 0x60, 0xfb, 0x45, 0x5, 0xf7, 0x2a, 0xfb, 0x34, 0x6d, - 0xa, 0xc3, 0x42, 0x35, 0x47, 0x3b, 0x3b, 0x1e, 0xc4, 0x94, 0x15, 0xbc, - 0xae, 0xba, 0xc1, 0xad, 0xa2, 0x67, 0x72, 0xa, 0xe, 0x7c, 0xbd, 0x67, - 0xc3, 0xf7, 0x38, 0xc3, 0xf7, 0x6d, 0xbe, 0x12, 0xc0, 0xc0, 0xce, 0xc1, - 0x13, 0x7c, 0xf7, 0xe1, 0xbd, 0x15, 0xa6, 0x58, 0x5, 0xf7, 0x2b, 0x6, - 0x95, 0xc3, 0x5, 0xfb, 0x11, 0x6, 0x78, 0xae, 0xaf, 0xaf, 0xa5, 0xbd, - 0x9b, 0xb6, 0x19, 0xdc, 0x6, 0x95, 0xc3, 0x5, 0xfb, 0xf, 0x6, 0x83, - 0x60, 0x72, 0x54, 0x67, 0x63, 0x21, 0xf7, 0x62, 0x18, 0x88, 0x8f, 0x7a, - 0xac, 0x8a, 0xab, 0x8, 0xc0, 0xc1, 0xa6, 0xcf, 0xaf, 0xb2, 0x7d, 0x72, - 0x9d, 0x1e, 0xa7, 0xbb, 0x5, 0xab, 0x6d, 0x5d, 0x95, 0x5d, 0x1b, 0x39, - 0x2e, 0x60, 0x3d, 0x1f, 0x88, 0x65, 0x9c, 0x67, 0x9b, 0x67, 0x8, 0xfb, - 0x18, 0x39, 0x79, 0x4b, 0x45, 0x1a, 0x13, 0xbc, 0x57, 0xab, 0x50, 0xe2, - 0xc2, 0xc7, 0xa3, 0xb4, 0xb9, 0x1e, 0x76, 0xb9, 0x15, 0x75, 0x6e, 0x60, - 0x64, 0x54, 0x1b, 0x60, 0x68, 0xa2, 0xbe, 0x8a, 0x1f, 0xd8, 0xd4, 0xc2, - 0xbb, 0xa3, 0x1e, 0xe, 0xf7, 0xee, 0x76, 0xf7, 0x81, 0x77, 0x1, 0xf7, - 0x86, 0xf7, 0xd9, 0x15, 0xb9, 0x6, 0xd0, 0xf7, 0x81, 0x7b, 0xa, 0xe, - 0x34, 0x76, 0xf9, 0x6e, 0x77, 0x1, 0xf7, 0x3e, 0xbe, 0x3, 0xf7, 0x6e, - 0xfb, 0x0, 0x15, 0xbe, 0x6, 0x75, 0xc6, 0x71, 0xe2, 0xeb, 0x1a, 0xf7, - 0x4f, 0xee, 0xf7, 0x33, 0xf7, 0x1, 0xf7, 0x22, 0x1e, 0x7a, 0x79, 0x8b, - 0x7a, 0x1b, 0xfb, 0x18, 0xfb, 0x37, 0x40, 0xfb, 0x29, 0xfb, 0x46, 0x1a, - 0x2c, 0xa1, 0x36, 0xa5, 0x4f, 0x1e, 0xe, 0x34, 0x76, 0xf9, 0x6e, 0x77, - 0x1, 0xf8, 0xd, 0xbf, 0x3, 0xf7, 0x3e, 0xfb, 0x0, 0x15, 0x9c, 0x9d, - 0x8b, 0x9c, 0x1b, 0xf7, 0x18, 0xf7, 0x37, 0xd6, 0xf7, 0x29, 0xf7, 0x46, - 0x1a, 0xea, 0x74, 0xe0, 0x71, 0xc7, 0x1e, 0x58, 0x6, 0xa1, 0x50, 0xa5, - 0x34, 0x2b, 0x1a, 0xfb, 0x4f, 0x29, 0xfb, 0x33, 0xfb, 0x1, 0xfb, 0x22, - 0x1e, 0xe, 0xf7, 0x95, 0xf7, 0xf2, 0x1, 0xf7, 0x8, 0xf8, 0x4, 0x3, - 0xf7, 0x1d, 0xf7, 0xb5, 0x15, 0xc0, 0x6b, 0xee, 0xf7, 0xe, 0xbb, 0xfb, - 0xe, 0xca, 0xab, 0x4a, 0xf7, 0x12, 0xf7, 0x29, 0xa7, 0x82, 0xcd, 0xfb, - 0x24, 0x5e, 0xae, 0xf7, 0x23, 0x5, 0x46, 0x6, 0x74, 0xfb, 0x1d, 0xfb, - 0x16, 0xb2, 0x6f, 0x49, 0xf7, 0x17, 0x6e, 0x5, 0xe, 0xf7, 0x79, 0xc1, - 0x1, 0xf7, 0x79, 0xc3, 0x3, 0xd5, 0xf7, 0x79, 0x15, 0xf7, 0x55, 0x6, - 0x65, 0xfb, 0x4d, 0x51, 0xa, 0xb1, 0xf7, 0x4d, 0x5, 0xf7, 0x54, 0x4d, - 0xa, 0xfb, 0x54, 0x6, 0xb1, 0xf7, 0x4f, 0x71, 0xa, 0x65, 0xfb, 0x4f, - 0x5, 0xfb, 0x55, 0x6, 0xe, 0x30, 0x76, 0xf7, 0x7e, 0x77, 0x1, 0xf7, - 0x55, 0xfb, 0x4, 0x15, 0xcb, 0x75, 0xa, 0xf7, 0x7b, 0xc1, 0x1, 0xec, - 0xf8, 0x2a, 0x3, 0xec, 0xf7, 0x7b, 0x15, 0xf8, 0x1e, 0x47, 0xa, 0xfc, - 0x1e, 0x6, 0xe, 0x7c, 0xf7, 0x10, 0x1, 0xf7, 0x78, 0xf7, 0x24, 0x3, - 0xf7, 0x78, 0xae, 0x35, 0xa, 0xe, 0x3b, 0xf9, 0x59, 0x1, 0xc1, 0xf8, - 0x80, 0x3, 0xc1, 0x4f, 0x15, 0xb6, 0x77, 0xf8, 0x55, 0xf9, 0x44, 0x63, - 0xa0, 0x5, 0xe, 0x7c, 0xc5, 0xf8, 0x77, 0xc1, 0x1, 0xe5, 0xc0, 0xf7, - 0xc8, 0xc6, 0x3, 0xe5, 0xf7, 0x46, 0x15, 0x2f, 0xa8, 0x26, 0xf7, 0xe, - 0xf7, 0x78, 0xb4, 0xf7, 0xbe, 0xf7, 0xb, 0xe4, 0x67, 0xe4, 0xfb, 0x3, - 0xfb, 0x5a, 0x40, 0xfb, 0x8f, 0xfb, 0x2b, 0x1e, 0xc0, 0x8e, 0x15, 0xf7, - 0x13, 0xd0, 0xf7, 0x6e, 0xf7, 0x1d, 0xdf, 0x9d, 0x41, 0x4f, 0xfb, 0x46, - 0x3b, 0xfb, 0x43, 0xfb, 0xd, 0x39, 0x72, 0xd3, 0xd1, 0x1e, 0xe, 0x8b, - 0xc2, 0x54, 0xc6, 0xf8, 0x9f, 0x77, 0x1, 0xf7, 0xad, 0xc2, 0x3, 0xe6, - 0x16, 0xf8, 0x2a, 0x36, 0xa, 0xfb, 0x40, 0x6, 0xf2, 0xf8, 0xa3, 0xfb, - 0x7c, 0x58, 0x80, 0x53, 0xf7, 0x42, 0xb0, 0x32, 0x7a, 0xa, 0xfb, 0x47, - 0x6, 0xe, 0x8b, 0xc2, 0x54, 0xc6, 0xf8, 0x6b, 0xc0, 0x12, 0xf7, 0x34, - 0xc3, 0xf7, 0xaa, 0xc2, 0x13, 0xb8, 0xbe, 0x16, 0xf8, 0x31, 0x6, 0xa3, - 0xf7, 0x13, 0x52, 0xa, 0x7e, 0x43, 0x5, 0xfb, 0xa9, 0x6, 0xf7, 0xff, - 0xf7, 0x7a, 0xb6, 0xb8, 0xf7, 0x9, 0x1a, 0xd3, 0x39, 0xc8, 0x37, 0x3e, - 0x4a, 0x7f, 0x43, 0x49, 0x1e, 0x7c, 0x43, 0x51, 0xa, 0xe5, 0x99, 0xdb, - 0x98, 0xc4, 0x1b, 0xd3, 0xc2, 0x65, 0x53, 0x1f, 0x13, 0x78, 0xfb, 0x7, - 0xfb, 0x8b, 0xfb, 0xd, 0xfb, 0x4d, 0xfb, 0x1e, 0x1e, 0xe, 0x7c, 0xc2, - 0xf7, 0x63, 0xc7, 0xf7, 0x96, 0xc4, 0x1, 0xf8, 0x31, 0xc3, 0x3, 0xd3, - 0xa2, 0x15, 0x71, 0xcc, 0xd0, 0x7f, 0xce, 0x1b, 0xf7, 0x10, 0xf7, 0x0, - 0xd0, 0xf7, 0x17, 0xd5, 0x4d, 0xa3, 0x6d, 0x92, 0x1f, 0xbd, 0xa4, 0xcc, - 0xbb, 0xec, 0x1a, 0xda, 0x38, 0xb3, 0x33, 0x8c, 0x1e, 0x4b, 0x49, 0x79, - 0x6a, 0x61, 0x1f, 0x9a, 0x58, 0x5, 0xa4, 0xa8, 0xcb, 0xa3, 0xc9, 0x1b, - 0xc6, 0xc2, 0x76, 0x53, 0x4a, 0x39, 0x41, 0x20, 0x1f, 0x88, 0x6, 0x80, - 0x4b, 0x5, 0xc8, 0x8e, 0xf7, 0xb, 0x88, 0x43, 0x1a, 0x32, 0x32, 0x59, - 0x26, 0x50, 0x57, 0x97, 0xa3, 0x5a, 0x1e, 0xe, 0x8b, 0xc7, 0xf3, 0xc6, - 0xf7, 0xa8, 0xcc, 0x1, 0xf7, 0xe8, 0xcd, 0x3, 0xde, 0xf7, 0x38, 0x15, - 0xf7, 0xa9, 0x6, 0x77, 0xfb, 0x0, 0x5, 0x20, 0x60, 0xa, 0xf7, 0x91, - 0x3c, 0xa, 0x3b, 0x6, 0x9e, 0xf7, 0x0, 0x5, 0xdb, 0x6, 0x96, 0xc6, - 0x89, 0xa, 0xcf, 0xf7, 0xe9, 0x5, 0x30, 0x6, 0xfb, 0xd4, 0xfb, 0xf0, - 0x5, 0xd8, 0x92, 0x15, 0xf7, 0x96, 0xf7, 0xa8, 0x51, 0xfb, 0xa8, 0x5, - 0xe, 0x7c, 0xc6, 0xf7, 0x9f, 0xc6, 0xf7, 0x1e, 0xc3, 0x1, 0xf7, 0x1e, - 0xcb, 0xf7, 0x5d, 0xca, 0x3, 0xc2, 0xa5, 0x15, 0x6f, 0xc4, 0xc7, 0x7e, - 0xc3, 0x1b, 0xf7, 0x27, 0xf7, 0x12, 0xd6, 0xf7, 0x22, 0xde, 0x45, 0xc8, - 0x3a, 0x5c, 0x54, 0x87, 0x72, 0x5d, 0x1f, 0xb2, 0xf7, 0x53, 0x5, 0xf7, - 0xb9, 0x3c, 0xa, 0xfb, 0xf1, 0x6, 0x51, 0xfb, 0xc1, 0xb0, 0x81, 0x5, - 0x9e, 0xb5, 0xcb, 0x9d, 0xba, 0x1b, 0xd0, 0xb4, 0x63, 0x54, 0x2d, 0x23, - 0x50, 0x20, 0x55, 0x54, 0x96, 0xa8, 0x62, 0x1f, 0xe, 0x7c, 0xc6, 0xf7, - 0x99, 0x76, 0xf7, 0x84, 0xc3, 0x1, 0xca, 0xc6, 0xf7, 0x9f, 0xc9, 0x3, - 0xf7, 0x16, 0xf7, 0x9c, 0x15, 0xf7, 0x25, 0xa5, 0xf7, 0x4e, 0xf7, 0x7, - 0xf7, 0x4a, 0x1b, 0x98, 0xc3, 0x5, 0xfb, 0xa5, 0xfb, 0x5d, 0xfb, 0x2f, - 0xfb, 0x7c, 0xfb, 0x28, 0xd8, 0x4f, 0xe8, 0xf7, 0x1d, 0xdc, 0xec, 0xf7, - 0xc, 0xe6, 0x34, 0xbb, 0x38, 0x4e, 0x50, 0x67, 0x62, 0x6c, 0x1f, 0x83, - 0x46, 0x15, 0xbc, 0xa0, 0xc9, 0xb3, 0xca, 0x1b, 0xce, 0xc1, 0x6e, 0x44, - 0x45, 0x4e, 0x41, 0x2f, 0x36, 0x63, 0xd9, 0xd8, 0x96, 0x1f, 0xe, 0xa0, - 0x76, 0xf8, 0x91, 0xc2, 0x1, 0xe0, 0xc0, 0xf7, 0xc8, 0xc5, 0x3, 0xf7, - 0x32, 0x16, 0xc6, 0x6, 0xf7, 0xb3, 0xf8, 0x8d, 0x96, 0xc6, 0x5, 0xfc, - 0x1d, 0x6, 0x66, 0xfb, 0x29, 0x5, 0xc0, 0x6, 0xa6, 0xe9, 0x5, 0xf7, - 0xad, 0x6, 0xe, 0x7c, 0xc2, 0xf7, 0x6d, 0xc8, 0xf7, 0x5f, 0xc6, 0x1, - 0xd3, 0xcb, 0xf7, 0x9b, 0xc9, 0x3, 0xf7, 0x60, 0xf7, 0xb9, 0x15, 0x64, - 0x85, 0x2e, 0x4a, 0x31, 0x1a, 0x2b, 0xcf, 0x58, 0xf6, 0xf7, 0x25, 0xea, - 0xd8, 0xf7, 0xb, 0xd0, 0x5a, 0xa8, 0x6d, 0x99, 0x1e, 0xc0, 0x93, 0xce, - 0xc9, 0xea, 0x1a, 0xc3, 0x54, 0xcd, 0x23, 0xfb, 0x8, 0xfb, 0x3, 0x44, - 0xfb, 0xc, 0x1e, 0x8c, 0x5f, 0xa4, 0x6b, 0xaf, 0x77, 0x8, 0x89, 0xec, - 0x15, 0xf7, 0x5, 0xf7, 0x6, 0xa1, 0xb0, 0xcf, 0xb9, 0x63, 0x62, 0x41, - 0x42, 0x57, 0x39, 0x6d, 0x3b, 0x95, 0xc9, 0x1e, 0x49, 0xfb, 0xa1, 0x15, - 0xf7, 0x6, 0xf7, 0xa, 0xa5, 0xba, 0xcb, 0xc7, 0x61, 0x5b, 0x2e, 0x28, - 0x62, 0x47, 0x62, 0x3a, 0xa4, 0xc6, 0x1e, 0xe, 0x7d, 0xc7, 0xf7, 0x41, - 0xc4, 0xf7, 0x8e, 0xc1, 0x1, 0xf7, 0x25, 0xc4, 0xf7, 0xab, 0xc6, 0x3, - 0xc6, 0x7d, 0x15, 0xf8, 0x9, 0xf7, 0x0, 0xf7, 0x55, 0xf7, 0x78, 0xe9, - 0x58, 0xda, 0xfb, 0x5, 0xfb, 0x18, 0x28, 0x20, 0xfb, 0x4, 0x1f, 0x42, - 0x8c, 0xbf, 0x46, 0xf3, 0x1b, 0xc6, 0xca, 0x93, 0xb6, 0xb4, 0x1f, 0x66, - 0xfb, 0xe, 0x26, 0xfb, 0x0, 0xfb, 0x94, 0x8d, 0x8, 0xf8, 0x2e, 0xf7, - 0xce, 0x15, 0x64, 0x71, 0x4c, 0x62, 0x42, 0x1b, 0x43, 0x5e, 0xb4, 0xbf, - 0xe2, 0xd9, 0xd1, 0xe7, 0xe9, 0xa5, 0x30, 0x3c, 0x80, 0x1f, 0xe, 0x7c, - 0xf7, 0x10, 0xf7, 0x2c, 0xf7, 0x10, 0x1, 0xf7, 0x5a, 0xf7, 0x24, 0x3, - 0xf7, 0x5a, 0xae, 0x35, 0xa, 0xc6, 0xf7, 0xa8, 0x35, 0xa, 0xe, 0xf7, - 0x99, 0xf7, 0x10, 0x1, 0xf7, 0x32, 0xcb, 0xd7, 0xf7, 0x24, 0x3, 0xf7, - 0x32, 0xfb, 0x4, 0x15, 0xcb, 0x6, 0xf7, 0x2a, 0xf7, 0x8f, 0x5, 0x2e, - 0x6, 0x9e, 0xf7, 0x40, 0x35, 0xa, 0xe, 0xca, 0x76, 0xf7, 0xfe, 0xcf, - 0x1, 0xd4, 0xd5, 0x3, 0xd4, 0xf7, 0x6c, 0x15, 0xf7, 0xfa, 0xfb, 0x42, - 0x9c, 0xc9, 0xfb, 0xc1, 0xf7, 0x2d, 0xf8, 0x3, 0xf7, 0x27, 0x98, 0xcf, - 0xfc, 0x48, 0xfb, 0x42, 0x5, 0xe, 0xf7, 0x1e, 0xc8, 0xf7, 0x7, 0xc9, - 0x1, 0xe0, 0xf7, 0xce, 0x15, 0xf8, 0x56, 0x6, 0x95, 0xc9, 0x5, 0xfc, - 0x55, 0x6, 0x61, 0xfb, 0x82, 0x15, 0xf8, 0x54, 0x6, 0x97, 0xc8, 0x5, - 0xfc, 0x55, 0x6, 0xe, 0xb5, 0xcf, 0xf7, 0xc0, 0xc9, 0x1, 0xf8, 0x59, - 0xd5, 0x3, 0xd4, 0xb5, 0x15, 0xf8, 0x48, 0xf7, 0x42, 0x9d, 0xdd, 0xfb, - 0xfa, 0xf7, 0x42, 0x7a, 0x4d, 0xf7, 0xc1, 0xfb, 0x2d, 0xfc, 0x3, 0xfb, - 0x27, 0x5, 0xe, 0x7c, 0xf7, 0xa, 0xf7, 0x44, 0xf7, 0x23, 0xeb, 0xc1, - 0x12, 0xf7, 0xb, 0xc1, 0x9c, 0xc3, 0xf7, 0x48, 0xc1, 0x17, 0xf7, 0x52, - 0xf7, 0x44, 0x15, 0xc3, 0x6, 0x96, 0xc5, 0x5, 0xda, 0x9b, 0xf7, 0x24, - 0xc6, 0xf7, 0x17, 0x1a, 0xe0, 0x43, 0xba, 0x2c, 0x50, 0x4b, 0x73, 0x7a, - 0x59, 0x1e, 0x13, 0xf4, 0x76, 0xfb, 0x1, 0x5, 0xc1, 0x6, 0x97, 0xc9, - 0x5, 0x9a, 0xb1, 0xb5, 0x9e, 0xb3, 0x1b, 0xe7, 0xa8, 0x5e, 0x65, 0x2d, - 0xfb, 0x17, 0x5a, 0x36, 0x7e, 0x1f, 0x36, 0xfb, 0x8f, 0x15, 0x70, 0x8c, - 0x9f, 0x7b, 0xad, 0x1b, 0xae, 0xb9, 0xa9, 0xb3, 0xa3, 0x75, 0xa3, 0x69, - 0x62, 0x63, 0x67, 0x64, 0x8c, 0x1f, 0xe, 0x7d, 0xb0, 0xdf, 0xaf, 0xf7, - 0x6e, 0xb0, 0xf7, 0x0, 0xb0, 0x1, 0xb1, 0xb0, 0xeb, 0xb0, 0xf7, 0xe6, - 0xb1, 0x3, 0xf7, 0xe4, 0xf7, 0x3e, 0x15, 0x6e, 0x8a, 0xa3, 0x69, 0xba, - 0x1b, 0xf0, 0xd8, 0xf7, 0x18, 0xf7, 0xb, 0xf7, 0xb, 0x2c, 0xcd, 0xfb, - 0x6, 0xfb, 0x58, 0xfb, 0x21, 0xfb, 0x34, 0xfb, 0x4d, 0x21, 0xbd, 0x21, - 0xf7, 0x32, 0xdf, 0xe7, 0xa9, 0xb2, 0xd4, 0x1f, 0x83, 0xaf, 0x5, 0x58, - 0x29, 0x42, 0x7a, 0x49, 0x1b, 0x20, 0x47, 0xd1, 0xf5, 0xf7, 0x1c, 0xe4, - 0xf7, 0x3f, 0xf7, 0x5a, 0xf0, 0xde, 0x5a, 0x20, 0x2d, 0x4b, 0xfb, 0x5, - 0x49, 0x71, 0x74, 0x9f, 0xae, 0x91, 0x1f, 0x90, 0xa2, 0x99, 0xa3, 0x95, - 0xa0, 0xc6, 0xf7, 0x12, 0x18, 0x66, 0x6, 0x73, 0x59, 0x5, 0xc2, 0x85, - 0x6b, 0x8c, 0x7e, 0x1b, 0x2d, 0x37, 0x23, 0xfb, 0x11, 0x6a, 0x9e, 0x6e, - 0xb1, 0xb4, 0xb5, 0xa9, 0xac, 0xa4, 0x1f, 0xad, 0xf7, 0x19, 0x15, 0x4a, - 0x7e, 0x50, 0x2c, 0x51, 0x1b, 0x71, 0x85, 0xa1, 0x9f, 0xd8, 0xcd, 0xee, - 0xca, 0xb0, 0x8a, 0x62, 0x7a, 0x88, 0x1f, 0xe, 0x8b, 0xc1, 0xf6, 0xc1, - 0xf7, 0xb4, 0xc1, 0x1, 0x89, 0xf7, 0x65, 0xf7, 0x48, 0xf7, 0x60, 0x3, - 0x89, 0x16, 0xf7, 0x65, 0x2a, 0xa, 0x32, 0x6, 0xca, 0xf7, 0x4, 0x5, - 0xf7, 0xab, 0x6, 0xa2, 0xfb, 0x4, 0x2c, 0xa, 0xf8, 0x90, 0x32, 0xa, - 0x58, 0xa, 0x4f, 0x6, 0xf7, 0x6c, 0xf7, 0x3a, 0x15, 0xf7, 0x3f, 0xf7, - 0xba, 0xcb, 0xfb, 0xba, 0x5, 0xe, 0x8b, 0xc1, 0xf7, 0x50, 0xc2, 0xf7, - 0x67, 0xc1, 0x12, 0xf5, 0xc3, 0xf7, 0xec, 0xc8, 0x62, 0xc7, 0x13, 0xe8, - 0x13, 0xe4, 0x98, 0x16, 0xf7, 0xc8, 0x6, 0xf7, 0x1a, 0xf7, 0x5, 0xbd, - 0xf7, 0x18, 0x8a, 0x1f, 0xbe, 0x58, 0xae, 0x58, 0x95, 0x1e, 0x13, 0xe8, - 0xd2, 0x9e, 0xbd, 0xbb, 0xe9, 0x1a, 0xe8, 0x2c, 0xa9, 0x2a, 0x1e, 0xfb, - 0x9e, 0x45, 0xa, 0xdd, 0x6, 0x2f, 0xfc, 0x5a, 0x6b, 0xa, 0xf7, 0x51, - 0xf7, 0x87, 0x15, 0xb5, 0xf7, 0x67, 0x5, 0xf7, 0x1d, 0xf7, 0x1a, 0x89, - 0x40, 0x2e, 0x24, 0x62, 0x37, 0x1f, 0xfb, 0x45, 0xfb, 0x87, 0x15, 0xb3, - 0xf7, 0x50, 0x5, 0xf7, 0x1e, 0x6, 0x13, 0xf8, 0xc7, 0xf5, 0x83, 0x4c, - 0x30, 0xfb, 0x3, 0x71, 0x41, 0x1f, 0xe, 0x79, 0xc2, 0xf8, 0x7d, 0xc1, - 0x8a, 0x77, 0x12, 0xbc, 0xc5, 0x13, 0xd0, 0xf8, 0x6e, 0xf2, 0x15, 0x64, - 0x4d, 0x42, 0x70, 0x46, 0x1b, 0x22, 0x51, 0xc9, 0xf7, 0x2, 0xf7, 0x5a, - 0xf7, 0x12, 0xf7, 0xb, 0xf7, 0xe, 0xcc, 0xc1, 0x6b, 0x5c, 0xaf, 0x1f, - 0x78, 0x30, 0x6a, 0xa, 0x13, 0xb0, 0xb8, 0xf7, 0x73, 0x52, 0xa, 0x7f, - 0x4e, 0x5, 0x13, 0xd0, 0xb9, 0x4a, 0x5d, 0x9b, 0x55, 0x1b, 0xfb, 0x54, - 0xfb, 0xa, 0xfb, 0x38, 0xfb, 0x61, 0xfb, 0x15, 0xbd, 0x27, 0xf7, 0x2f, - 0xdb, 0xdf, 0xa8, 0xb8, 0xd2, 0x1f, 0xe, 0x3e, 0xa, 0xf8, 0xab, 0xc3, - 0x3, 0x80, 0x16, 0xf7, 0x87, 0x6, 0xf7, 0x48, 0xf7, 0x47, 0xd7, 0xf7, - 0xb6, 0xf7, 0x37, 0xfb, 0x0, 0xac, 0xfb, 0x18, 0x1f, 0xfb, 0x8b, 0x45, - 0xa, 0xdb, 0x5e, 0xa, 0x3a, 0x6, 0xf7, 0x1c, 0x16, 0xe6, 0x87, 0xa, - 0xf7, 0x5a, 0x85, 0xf7, 0x2, 0x9f, 0xfb, 0x3e, 0x1a, 0xfb, 0x42, 0x23, - 0xfb, 0x10, 0xfb, 0x4a, 0x1e, 0xe, 0x8b, 0xc1, 0xf7, 0x5b, 0x61, 0xa, - 0x1, 0x88, 0x16, 0xf8, 0x87, 0x6, 0xb1, 0xf7, 0x4f, 0x62, 0xa, 0x70, - 0xfb, 0x19, 0x5, 0xfb, 0xc4, 0x6, 0xb3, 0xf7, 0x5b, 0x5, 0xf7, 0x39, - 0x6, 0x7a, 0x3a, 0x51, 0xa, 0xba, 0xf7, 0x6d, 0x62, 0xa, 0x79, 0x39, - 0x5, 0xfb, 0x39, 0x6, 0xb4, 0xf7, 0x5d, 0x81, 0xa, 0x70, 0xfb, 0x1a, - 0x5, 0xc4, 0x6, 0xb1, 0xf7, 0x50, 0x5, 0xfc, 0x82, 0x45, 0xa, 0xdf, - 0x6, 0x2f, 0xfc, 0x5a, 0x6b, 0xa, 0xe, 0x8b, 0xc1, 0xf7, 0x5b, 0x61, - 0xa, 0x1, 0xe3, 0xc4, 0xf7, 0x54, 0xc3, 0xf7, 0x6, 0xc4, 0x3, 0x88, - 0x16, 0xf7, 0xa3, 0x6, 0x97, 0xc1, 0x55, 0xa, 0xb3, 0xf7, 0x5b, 0x5, - 0xf7, 0x3a, 0x6, 0x7d, 0x43, 0x51, 0xa, 0xb4, 0xf7, 0x5b, 0x62, 0xa, - 0x7c, 0x42, 0x5, 0xfb, 0x3a, 0x6, 0xb3, 0xf7, 0x5d, 0x5, 0xf7, 0xc0, - 0x6, 0x6e, 0xfb, 0x23, 0x5, 0xc4, 0x6, 0xb3, 0xf7, 0x59, 0x5, 0xfc, - 0x80, 0x45, 0xa, 0xdb, 0x6, 0x2f, 0xfc, 0x5a, 0x89, 0xa, 0xe, 0x79, - 0xc2, 0xf7, 0x39, 0xc2, 0xf7, 0xa0, 0xc2, 0x1, 0x9e, 0xc4, 0xf8, 0x2b, - 0xc3, 0x3, 0x34, 0xa, 0x3d, 0xa, 0xe, 0x8b, 0xc1, 0xf7, 0x60, 0xc1, - 0xf7, 0x58, 0xc1, 0x1, 0xcb, 0xc1, 0xf7, 0xa8, 0xc1, 0x3, 0x70, 0x16, - 0xf7, 0x6a, 0x2a, 0xa, 0x3b, 0x6, 0xb4, 0xf7, 0x60, 0x5, 0xf7, 0xa7, - 0x6, 0x63, 0xfb, 0x60, 0x5, 0x3c, 0x2d, 0xa, 0xf7, 0x68, 0x2a, 0xa, - 0x3c, 0x6, 0xe5, 0x87, 0xa, 0xda, 0x2a, 0xa, 0xfb, 0x68, 0x2d, 0xa, - 0xda, 0x6, 0x64, 0xfb, 0x58, 0x5, 0xfb, 0xa7, 0x6, 0xb1, 0xf7, 0x58, - 0x5, 0xdb, 0x2a, 0xa, 0xfb, 0x6a, 0x2d, 0xa, 0xdb, 0x6, 0x31, 0xfc, - 0x5a, 0x89, 0xa, 0xe, 0x3e, 0xa, 0xaf, 0x16, 0xf8, 0x2e, 0x47, 0xa, - 0xfb, 0x44, 0x6, 0xec, 0x87, 0xa, 0xf7, 0x40, 0x47, 0xa, 0xfc, 0x2a, - 0x45, 0xa, 0xf7, 0x43, 0x6, 0x2a, 0x58, 0xa, 0xfb, 0x43, 0x6, 0xe, - 0x79, 0xc1, 0xf8, 0x6b, 0xc2, 0x1, 0xa2, 0xc3, 0xf7, 0xec, 0xc1, 0x3, - 0x7b, 0xb4, 0x15, 0x65, 0xe2, 0xca, 0x76, 0xce, 0x1b, 0xf7, 0x22, 0xbb, - 0x7c, 0xa, 0xf7, 0x15, 0x36, 0xa, 0xfc, 0x12, 0x38, 0xa, 0xf7, 0x5b, - 0x6, 0x4b, 0xfb, 0xdc, 0x5, 0x3a, 0x7b, 0x5f, 0x4d, 0x2d, 0x1b, 0x71, - 0xfb, 0x1f, 0x91, 0xf7, 0xe, 0xa3, 0x1f, 0x9a, 0xe6, 0x71, 0xa, 0xe, - 0x3e, 0xa, 0xd7, 0xc1, 0xf7, 0xec, 0xcf, 0x3, 0x7b, 0x16, 0xf7, 0x6d, - 0x2a, 0xa, 0x39, 0x6, 0xab, 0xf7, 0x2d, 0xef, 0xdd, 0xa5, 0x5f, 0xb6, - 0x41, 0xae, 0x38, 0xa4, 0x33, 0x19, 0xf7, 0x2a, 0x2a, 0xa, 0xfb, 0x9, - 0x6, 0x76, 0xd2, 0x65, 0xdd, 0x62, 0xcc, 0x8, 0x8b, 0x76, 0xad, 0x82, - 0x9a, 0x1e, 0xf7, 0x81, 0xf7, 0x4f, 0x5, 0xcb, 0x43, 0xa, 0xd2, 0x6, - 0xfb, 0xbf, 0xfb, 0x7f, 0xc3, 0xf7, 0x7f, 0x5, 0xd0, 0x2a, 0xa, 0xfb, - 0x6b, 0x2d, 0xa, 0xe7, 0x6, 0x26, 0x58, 0xa, 0x3a, 0x6, 0xe, 0x3e, - 0xa, 0xf7, 0xb, 0xc3, 0x3, 0x8b, 0x4, 0xf8, 0x96, 0x6, 0xb9, 0xf7, - 0x87, 0x71, 0xa, 0x68, 0xfb, 0x51, 0x5, 0xfb, 0xba, 0x6, 0xe7, 0x87, - 0xa, 0xf7, 0x14, 0x2a, 0xa, 0xfb, 0xb9, 0x2d, 0xa, 0xf7, 0x0, 0x5e, - 0xa, 0xfb, 0x0, 0x6, 0xe, 0x3e, 0xa, 0x9f, 0xc3, 0xf7, 0xfc, 0xc3, - 0x3, 0x63, 0x16, 0xf7, 0x3c, 0x47, 0xa, 0x4b, 0x6, 0xe6, 0x87, 0xa, - 0x94, 0x6, 0xd4, 0xfc, 0xf, 0x5, 0xb7, 0x6, 0xf7, 0x73, 0xf8, 0xf, - 0x5, 0x96, 0x5e, 0xa, 0x4f, 0x5f, 0xa, 0xf7, 0x36, 0x2a, 0xa, 0x5c, - 0x6, 0xe6, 0x87, 0xa, 0xb9, 0x47, 0xa, 0xfb, 0x28, 0x6, 0xfb, 0x5e, - 0xfb, 0xec, 0x48, 0xf7, 0xec, 0x5, 0xfb, 0x2b, 0x5f, 0xa, 0xbb, 0x5e, - 0xa, 0x5b, 0x6, 0xe, 0x8a, 0xc2, 0xf8, 0x59, 0xc2, 0x1, 0x5e, 0x8a, - 0x15, 0xf7, 0x80, 0x36, 0xa, 0x28, 0x6, 0xe1, 0xf8, 0x41, 0xf7, 0x54, - 0xfc, 0x78, 0x5, 0xd6, 0x6, 0xf0, 0xf8, 0x90, 0x5, 0xd8, 0x36, 0xa, - 0xfb, 0x7b, 0x38, 0xa, 0xed, 0x6, 0x35, 0xfc, 0x44, 0xfb, 0x53, 0xf8, - 0x7b, 0x5, 0xfb, 0x31, 0x56, 0xa, 0xdd, 0x6, 0x31, 0xfc, 0x59, 0x5, - 0x3a, 0x6, 0xe, 0x79, 0xc2, 0xf8, 0x7c, 0xc2, 0x1, 0xad, 0xc2, 0xf8, - 0x38, 0xc3, 0x3, 0xad, 0xf7, 0x6c, 0x15, 0xfb, 0x19, 0xd5, 0x26, 0xf7, - 0x1c, 0xf7, 0x4b, 0xf7, 0x1e, 0xf7, 0x4f, 0xf7, 0x50, 0xee, 0x5c, 0xf7, - 0x10, 0xfb, 0x33, 0xfb, 0x5a, 0xfb, 0x13, 0xfb, 0x5c, 0xfb, 0x38, 0x1e, - 0xc2, 0x89, 0x15, 0xf7, 0x3, 0xdd, 0xf7, 0x5c, 0xf7, 0x43, 0xf7, 0x10, - 0xb2, 0x2e, 0x3c, 0xfb, 0x24, 0xfb, 0xb, 0xfb, 0x40, 0xfb, 0x1b, 0x20, - 0x50, 0xd9, 0xee, 0x1e, 0xe, 0x8b, 0xc1, 0xf7, 0x31, 0xc1, 0xf7, 0x87, - 0xc1, 0x1, 0xf6, 0xc5, 0xf7, 0xfa, 0xc6, 0x3, 0x9c, 0x16, 0xf7, 0xba, - 0x2a, 0xa, 0xfb, 0x31, 0x6, 0xab, 0xf7, 0x31, 0x5, 0xf7, 0x1a, 0x6, - 0xf7, 0x31, 0xe9, 0xcf, 0xf7, 0x27, 0xd2, 0x5c, 0xcc, 0xfb, 0x15, 0x1f, - 0xfb, 0xa7, 0x2d, 0xa, 0xdb, 0x6, 0x2e, 0x58, 0xa, 0x3c, 0x6, 0xf7, - 0x47, 0xf7, 0x67, 0x15, 0xbc, 0xf7, 0x87, 0x5, 0xf7, 0x1b, 0x6, 0xd0, - 0xca, 0x6b, 0x52, 0xfb, 0x11, 0x20, 0x6e, 0x4a, 0x1f, 0xe, 0xfb, 0x1e, - 0xf7, 0x41, 0xfb, 0x15, 0xf7, 0x15, 0x54, 0xc2, 0xf8, 0x7e, 0xc2, 0x12, - 0xae, 0xc7, 0xf8, 0x2f, 0xc6, 0x13, 0x5c, 0xd9, 0x3f, 0x15, 0x91, 0x54, - 0x5, 0xaa, 0xb4, 0xb2, 0x91, 0xb2, 0x1b, 0xaa, 0xaa, 0x7c, 0x80, 0xab, - 0x1f, 0x13, 0x9c, 0x82, 0xa6, 0xa6, 0x82, 0xa6, 0x1b, 0xae, 0xaf, 0x9b, - 0x9f, 0xa7, 0x1f, 0x7b, 0xba, 0x5, 0x7f, 0x73, 0x6f, 0x7d, 0x70, 0x1b, - 0x75, 0x75, 0x94, 0x94, 0x75, 0x1f, 0x94, 0x74, 0x74, 0x98, 0x70, 0x1b, - 0x7c, 0x7a, 0x8c, 0x86, 0x7a, 0x1f, 0x13, 0x3c, 0xa9, 0x9a, 0x8d, 0x8b, - 0x95, 0x95, 0x8, 0xf7, 0x5f, 0x8a, 0xf7, 0x12, 0xf7, 0x4a, 0xf7, 0x64, - 0x1a, 0xf7, 0x1, 0x5e, 0xf1, 0xfb, 0x33, 0xfb, 0x4f, 0xfb, 0x1f, 0xfb, - 0x5d, 0xfb, 0x4c, 0x23, 0xbd, 0x3e, 0xeb, 0x6e, 0x1e, 0x6a, 0x70, 0x6a, - 0x7a, 0x66, 0x7a, 0x8, 0x9c, 0xf7, 0xa3, 0x15, 0xf7, 0x2b, 0xf7, 0x1, - 0xf7, 0x47, 0xf7, 0x25, 0xf1, 0xc2, 0x4c, 0x36, 0xfb, 0x60, 0xfb, 0x26, - 0xfb, 0x1e, 0xfb, 0x0, 0x40, 0x39, 0xb0, 0xf7, 0xf, 0x1e, 0xe, 0x8b, - 0xc1, 0xf7, 0x45, 0xbf, 0xf7, 0x75, 0xc1, 0x1, 0xf7, 0x4, 0xc2, 0xf7, - 0xf9, 0xc3, 0x3, 0x9f, 0x16, 0xf7, 0x6c, 0x2a, 0xa, 0x3b, 0x6, 0xae, - 0xf7, 0x43, 0x5, 0xf7, 0x7, 0x6, 0xa8, 0x5c, 0xcc, 0xfb, 0x6, 0xa4, - 0x47, 0x8, 0xf7, 0x18, 0x2a, 0xa, 0x24, 0x6, 0x73, 0xc1, 0x60, 0xd6, - 0x6d, 0xbb, 0x8, 0xe5, 0x8e, 0xf7, 0x3, 0xb6, 0xf7, 0x33, 0x1a, 0xcb, - 0x59, 0xc9, 0x29, 0x1e, 0xfb, 0xbf, 0x2d, 0xa, 0xdc, 0x5e, 0xa, 0x3a, - 0x6, 0xf7, 0x4a, 0xf7, 0x79, 0x15, 0xb8, 0xf7, 0x75, 0x5, 0xf7, 0x24, - 0x6, 0xd6, 0xba, 0x6c, 0x60, 0xfb, 0x26, 0xfb, 0x1c, 0x86, 0x42, 0x1f, - 0xe, 0x77, 0xc5, 0xf8, 0x7b, 0xc2, 0x1, 0xf7, 0xc, 0xc7, 0xf7, 0xbc, - 0xc7, 0x3, 0x98, 0x7f, 0x15, 0xc5, 0x6, 0x95, 0xbf, 0x5, 0x65, 0xc1, - 0xd6, 0x75, 0xd5, 0x1b, 0xf7, 0x8, 0xf7, 0x1c, 0xbe, 0xf7, 0x5, 0xf7, - 0x5, 0x2d, 0x9f, 0x31, 0x95, 0x1f, 0x3d, 0x93, 0x2d, 0xaa, 0xcf, 0x1a, - 0xdf, 0xe3, 0xba, 0xf2, 0xc3, 0xbc, 0x6f, 0x68, 0xab, 0x1e, 0x7a, 0x3b, - 0x5, 0xc5, 0x6, 0xb1, 0xf7, 0x4f, 0x62, 0xa, 0x82, 0x63, 0x5, 0xa6, - 0x68, 0x58, 0xa3, 0x54, 0x1b, 0xfb, 0x3a, 0x2d, 0x3a, 0x20, 0xfb, 0x6, - 0xf7, 0xd, 0x6d, 0xe5, 0x7d, 0x1f, 0xc8, 0x80, 0xdf, 0x82, 0x43, 0x1a, - 0x47, 0x24, 0x67, 0x2f, 0x42, 0x41, 0xa1, 0xb5, 0x63, 0x1e, 0x9a, 0xd0, - 0x5, 0x50, 0x6, 0xe, 0x3e, 0xa, 0xf7, 0x54, 0xc2, 0x3, 0xc5, 0x16, - 0xf7, 0xc2, 0x2a, 0xa, 0xfb, 0x10, 0x6, 0xe5, 0x87, 0xa, 0xf7, 0x43, - 0x6, 0x6d, 0xfb, 0x2d, 0x6a, 0xa, 0xb4, 0xf7, 0x63, 0x5, 0xfc, 0x98, - 0x6, 0x62, 0xfb, 0x63, 0x6a, 0xa, 0xa9, 0xf7, 0x2d, 0x5, 0xf7, 0x43, - 0x6, 0x32, 0x58, 0xa, 0xfb, 0xf, 0x6, 0xe, 0x79, 0xbf, 0xf8, 0x6d, - 0xc2, 0x1, 0xd2, 0xc0, 0x3, 0xbf, 0xf8, 0x8f, 0x85, 0xa, 0x56, 0xfb, - 0x8c, 0x81, 0x46, 0x68, 0x1a, 0x22, 0xb3, 0x47, 0xf7, 0x16, 0xf7, 0x11, - 0xe2, 0xc4, 0xf7, 0x2d, 0xa8, 0x1e, 0x9f, 0xf4, 0x9e, 0xf4, 0x9f, 0xf4, - 0x8, 0xd8, 0x36, 0xa, 0xfb, 0x7c, 0x67, 0xa, 0xad, 0xae, 0x8b, 0xad, - 0x1b, 0x77, 0x22, 0x78, 0x23, 0x77, 0x22, 0x8, 0xfb, 0xe, 0x73, 0x3c, - 0x66, 0x3d, 0x1b, 0x32, 0x66, 0xb7, 0xdb, 0xbf, 0xb4, 0xf7, 0x49, 0x9f, - 0xf7, 0x8, 0x1f, 0xf5, 0x36, 0xa, 0xfb, 0x83, 0x6, 0xe, 0x93, 0x76, - 0xf8, 0x9c, 0xc2, 0x1, 0xf7, 0x31, 0x7e, 0x85, 0xa, 0xf7, 0xbb, 0xf8, - 0x9c, 0x5, 0xcb, 0x36, 0xa, 0xfb, 0x70, 0x38, 0xa, 0xe5, 0x6, 0xfb, - 0x99, 0xfc, 0x64, 0x3a, 0xf8, 0x64, 0x5, 0xe6, 0x46, 0xa, 0xfb, 0x77, - 0x38, 0xa, 0xd3, 0x6, 0xe, 0x93, 0x76, 0xf8, 0x9c, 0xc2, 0x1, 0xb1, - 0xc5, 0x3, 0x9c, 0x7e, 0x15, 0xcb, 0x6, 0xf7, 0x4b, 0xf8, 0x0, 0xbe, - 0xfc, 0x0, 0x5, 0xc6, 0x6, 0xf7, 0x32, 0xf8, 0x9c, 0x5, 0xb7, 0x46, - 0xa, 0xfb, 0x5d, 0x56, 0xa, 0xf2, 0x6, 0xfb, 0xe, 0xfc, 0x36, 0x58, - 0xf8, 0x0, 0x5, 0x63, 0x6, 0xfb, 0x4f, 0xfc, 0x2, 0xaf, 0xf8, 0x38, - 0x5, 0xef, 0x36, 0xa, 0xfb, 0x5d, 0x56, 0xa, 0xba, 0x6, 0xe, 0x3e, - 0xa, 0x71, 0xf7, 0x76, 0xf7, 0x9, 0xf7, 0x6a, 0x3, 0x71, 0x16, 0xf7, - 0x76, 0x2a, 0xa, 0x2b, 0x6, 0xf7, 0x53, 0xf7, 0x50, 0xf7, 0x0, 0xfb, - 0x50, 0x5, 0x35, 0x2d, 0xa, 0xf7, 0x6a, 0x2a, 0xa, 0x4a, 0x6, 0xfb, - 0x18, 0xf7, 0x7b, 0xf7, 0x5f, 0xf7, 0x73, 0x5, 0xce, 0x2a, 0xa, 0xfb, - 0x55, 0x2d, 0xa, 0xca, 0x6, 0xfb, 0x37, 0xfb, 0x49, 0x2c, 0xf7, 0x49, - 0x5, 0xd8, 0x2a, 0xa, 0xfb, 0x64, 0x45, 0xa, 0xcf, 0x6, 0xf7, 0x9, - 0xfb, 0x73, 0xfb, 0x79, 0xfb, 0x7b, 0x5, 0x49, 0x6, 0xe, 0x3e, 0xa, - 0xb4, 0x16, 0xf7, 0xc8, 0x2a, 0xa, 0xfb, 0x11, 0x6, 0xab, 0xf7, 0x42, - 0xf7, 0x7f, 0xf7, 0xac, 0x5, 0xcf, 0x2a, 0xa, 0xfb, 0x5b, 0x2d, 0xa, - 0xd2, 0x6, 0xfb, 0x54, 0xfb, 0x77, 0x27, 0xf7, 0x77, 0x5, 0xd3, 0x43, - 0xa, 0xd1, 0x6, 0xf7, 0xe, 0xfb, 0xac, 0x6b, 0xfb, 0x42, 0x5, 0xfb, - 0x12, 0x6, 0xe, 0x3e, 0xa, 0xba, 0xd3, 0xf7, 0xda, 0xc0, 0x3, 0xb1, - 0x16, 0xf8, 0x38, 0x6, 0xb3, 0xf7, 0x5f, 0x5, 0x56, 0x6, 0x6e, 0xfb, - 0x29, 0x5, 0xfb, 0xbd, 0x6, 0xf8, 0x46, 0xf8, 0x5d, 0x94, 0xbe, 0x5, - 0xfc, 0x19, 0x6, 0x66, 0xfb, 0x50, 0x5, 0xbe, 0x6, 0xa5, 0xf7, 0x1a, - 0x5, 0xf7, 0xa0, 0x6, 0xfc, 0x46, 0xfc, 0x5b, 0x5, 0xe, 0xfb, 0x0, - 0xc1, 0xf9, 0x2, 0xc1, 0x1, 0xf7, 0x1c, 0xfb, 0x0, 0x15, 0xf7, 0x4e, - 0x2a, 0xa, 0xfb, 0x19, 0x6, 0xf7, 0xc, 0xf9, 0x2, 0x5, 0xf7, 0x19, - 0x2a, 0xa, 0xfb, 0x4e, 0x6, 0xe, 0x23, 0xf9, 0x60, 0xfd, 0x33, 0x76, - 0xf9, 0x59, 0x77, 0x12, 0x13, 0x60, 0xf8, 0xb, 0xfb, 0xd, 0x15, 0x13, - 0x80, 0xba, 0x9c, 0x5, 0x13, 0x60, 0xfb, 0x5a, 0xf9, 0x71, 0x5, 0x13, - 0x80, 0x5c, 0x7a, 0x5, 0xe, 0xfb, 0x0, 0xc1, 0xf9, 0x2, 0xc1, 0x1, - 0xf7, 0x27, 0x55, 0x15, 0x80, 0x55, 0x5, 0xf7, 0x4e, 0x6, 0xf7, 0x22, - 0xf9, 0x6e, 0x5, 0xfb, 0x4e, 0x2d, 0xa, 0xf7, 0x19, 0x6, 0xfb, 0xc, - 0xfd, 0x2, 0x5, 0xe, 0xf7, 0xf7, 0xf7, 0x9f, 0x12, 0xf2, 0xf8, 0x27, - 0x17, 0xe9, 0xf7, 0xf6, 0x15, 0xdc, 0xa6, 0xe1, 0xc6, 0xce, 0xc4, 0xb9, - 0x4f, 0xc1, 0x53, 0xd0, 0x71, 0x94, 0xba, 0x18, 0x3b, 0xd7, 0x7c, 0xb8, - 0x78, 0xee, 0x8, 0x58, 0x6, 0x13, 0x40, 0x58, 0x2d, 0x3c, 0x54, 0xfb, - 0x0, 0x43, 0x8, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x90, 0x40, 0x15, 0x81, - 0x59, 0x5, 0xf8, 0xed, 0x6, 0x95, 0xbd, 0x5, 0xe, 0x65, 0xa, 0xf7, - 0x61, 0xf8, 0xeb, 0x15, 0xf7, 0x46, 0x25, 0x97, 0xaa, 0xfb, 0x31, 0x79, - 0xa, 0xf8, 0x20, 0x87, 0x15, 0xf7, 0x1f, 0x36, 0xa, 0x36, 0x6, 0xbf, - 0xf7, 0x97, 0x8b, 0x9e, 0x9b, 0x1a, 0xc7, 0x5a, 0xaf, 0x25, 0x46, 0x36, - 0x77, 0x73, 0x4b, 0x1e, 0x39, 0xa, 0xc8, 0xc1, 0x8c, 0x54, 0x77, 0x87, - 0x5c, 0x85, 0x73, 0x1f, 0x92, 0x5f, 0x5a, 0x92, 0x5a, 0x1b, 0xfb, 0x45, - 0x41, 0x38, 0x3f, 0x52, 0xb9, 0x56, 0xe6, 0xd8, 0xda, 0xaf, 0xc0, 0xcd, - 0x1f, 0x98, 0xd2, 0x15, 0x50, 0x4b, 0x3e, 0x5d, 0x38, 0x1b, 0x56, 0x66, - 0xa8, 0xab, 0xdb, 0xf7, 0x7, 0x9c, 0xdb, 0x40, 0xa, 0x7c, 0xc2, 0x5f, - 0xc3, 0xf7, 0xe8, 0xc3, 0xf7, 0x12, 0xc2, 0x12, 0xf8, 0xb0, 0xc5, 0x13, - 0x78, 0x8d, 0x87, 0x15, 0xf7, 0x21, 0x6, 0x9a, 0xdb, 0x5, 0x13, 0xb8, - 0x7b, 0x96, 0xa8, 0x40, 0xf7, 0x14, 0x1b, 0xf7, 0x33, 0xf7, 0x5, 0xf7, - 0x18, 0xf7, 0x2f, 0xf7, 0x7, 0x32, 0xc8, 0x30, 0xfb, 0x1, 0x46, 0x56, - 0x72, 0x75, 0x1f, 0xbe, 0xf7, 0x97, 0x66, 0xa, 0xe0, 0x6, 0x13, 0x78, - 0x24, 0xfc, 0x9e, 0x5, 0x35, 0x6, 0xf7, 0x48, 0xf7, 0x45, 0x15, 0xf5, - 0xa0, 0xed, 0xc4, 0xe4, 0x1b, 0xea, 0xb7, 0x4c, 0x48, 0x1f, 0x13, 0xb8, - 0xfb, 0xe, 0xfb, 0x1, 0x27, 0x26, 0x3a, 0x3a, 0xcb, 0xf7, 0x11, 0xa4, - 0x1e, 0xe, 0x7c, 0xc0, 0xf7, 0xf0, 0xc2, 0x12, 0xbc, 0xc5, 0xf7, 0xf5, - 0xc2, 0x17, 0xf8, 0x71, 0xf7, 0x9, 0x15, 0x76, 0x6d, 0x31, 0x51, 0x3a, - 0x1b, 0xfb, 0xe, 0x5c, 0xcd, 0xc8, 0x1f, 0x13, 0x50, 0xf7, 0x5, 0xe8, - 0xf7, 0x0, 0xf7, 0x17, 0xc4, 0xbe, 0x7c, 0x67, 0xaf, 0x1e, 0x7c, 0x3c, - 0x6a, 0xa, 0x13, 0xe0, 0xaf, 0xf7, 0x4d, 0x52, 0xa, 0x82, 0x5c, 0x5, - 0xa9, 0x63, 0x5d, 0x9c, 0x51, 0x1b, 0xfb, 0x5b, 0x2c, 0xfb, 0x29, 0xfb, - 0x15, 0xfb, 0x5, 0xe5, 0x4a, 0xf7, 0x2, 0xe8, 0xd8, 0xab, 0xb9, 0xd0, - 0x1f, 0xe, 0x7c, 0xc2, 0x61, 0xc2, 0xf7, 0xe7, 0xc2, 0xf7, 0x13, 0xc2, - 0x12, 0xa1, 0xc5, 0x13, 0x78, 0xf8, 0x1f, 0x89, 0x15, 0xf7, 0x1f, 0x36, - 0xa, 0x39, 0x6, 0xf7, 0x6, 0xf8, 0xd4, 0x5, 0xfb, 0x58, 0x38, 0xa, - 0xf7, 0x20, 0x6, 0x65, 0xfb, 0x57, 0x5, 0xc9, 0x64, 0x46, 0x91, 0x54, - 0x1b, 0xfb, 0x33, 0xfb, 0x14, 0xfb, 0x16, 0xfb, 0x2c, 0x1f, 0x13, 0xb8, - 0x2a, 0xca, 0x38, 0xf7, 0x14, 0xd4, 0xd8, 0xac, 0xc9, 0xbb, 0x1e, 0x13, - 0x78, 0xfb, 0xdf, 0xf7, 0x0, 0x15, 0xf4, 0xf3, 0xee, 0xf7, 0x3, 0xf7, - 0x0, 0xb2, 0x53, 0x52, 0x1e, 0x13, 0xb8, 0xfb, 0xd, 0xfb, 0x1, 0xfb, - 0xa, 0xfb, 0x0, 0x26, 0x5f, 0xd1, 0xd9, 0x1e, 0xe, 0x7c, 0xc0, 0xf7, - 0x31, 0xc2, 0xf7, 0x21, 0xbd, 0x1, 0xe4, 0xf7, 0x57, 0x15, 0xf8, 0x3b, - 0x6, 0x90, 0xa4, 0x8d, 0xa4, 0x8a, 0xa3, 0x8, 0xea, 0x88, 0x51, 0xd8, - 0xfb, 0x17, 0x1b, 0xfb, 0x35, 0xfb, 0x1e, 0xfb, 0x19, 0xfb, 0x3d, 0x35, - 0xd3, 0x47, 0xf7, 0x21, 0xde, 0xe5, 0xa5, 0xaf, 0xd4, 0x1f, 0x84, 0xbf, - 0x5, 0x60, 0x32, 0x38, 0x79, 0x5c, 0x1b, 0xfb, 0x7, 0x30, 0xc0, 0xf3, - 0xae, 0x1f, 0x9c, 0xc3, 0x15, 0xc6, 0x9f, 0xda, 0xdc, 0xf7, 0x7, 0x1b, - 0xf7, 0x21, 0x92, 0xfb, 0x8, 0x72, 0x86, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, - 0xd9, 0xc3, 0xf7, 0x1e, 0xc2, 0x1, 0xf7, 0x26, 0xc5, 0x3, 0xa5, 0x16, - 0xf8, 0x18, 0x36, 0xa, 0xfb, 0x71, 0x6, 0xcb, 0xf7, 0xd9, 0x5, 0xf7, - 0x71, 0x3c, 0xa, 0xfb, 0x71, 0x6, 0xf7, 0x11, 0xab, 0x87, 0x98, 0xf7, - 0x9, 0x1b, 0xb2, 0xc3, 0x85, 0x85, 0xaf, 0x1f, 0x9e, 0xc1, 0x5, 0x90, - 0x6a, 0x49, 0x93, 0x61, 0x1b, 0x3d, 0x31, 0x82, 0x3f, 0x79, 0x1f, 0x71, - 0xfb, 0x0, 0x5, 0xfb, 0x1, 0x6, 0x81, 0x53, 0x5, 0xf7, 0x1, 0x6, - 0x4a, 0xfb, 0xd9, 0x57, 0xa, 0xe, 0xfb, 0x31, 0xbd, 0xf7, 0x38, 0xbe, - 0xf7, 0xae, 0xbe, 0x1, 0xab, 0xc3, 0xf7, 0xca, 0xbf, 0x3, 0x3f, 0xa, - 0x30, 0xa, 0xe, 0x8b, 0xc2, 0xf7, 0xca, 0xc2, 0xf7, 0x2e, 0xc2, 0x1, - 0x9f, 0x16, 0xf7, 0x72, 0x36, 0xa, 0x38, 0x6, 0xbf, 0xf7, 0x99, 0x5, - 0xb6, 0xc3, 0xd2, 0xb7, 0xcc, 0x1b, 0xdf, 0x90, 0x59, 0x54, 0x81, 0x1f, - 0x5a, 0xfb, 0x87, 0x5, 0x37, 0x38, 0xa, 0xf7, 0x6f, 0x36, 0xa, 0x3a, - 0x6, 0xc0, 0xf7, 0x9d, 0x5, 0xca, 0x97, 0x85, 0xd6, 0xfb, 0xa, 0x1b, - 0x45, 0x40, 0x66, 0x5e, 0x4f, 0x1f, 0xba, 0xf7, 0x91, 0x66, 0xa, 0xe2, - 0x6, 0x25, 0xfc, 0x9b, 0x7b, 0xa, 0xe, 0x8b, 0xc2, 0xf7, 0xda, 0xc2, - 0xed, 0xf7, 0xf, 0x1, 0xf7, 0xe6, 0xf8, 0xaa, 0x15, 0xd1, 0x6, 0xa4, - 0xf7, 0xf, 0x5, 0x44, 0x6, 0xfb, 0xb8, 0xfd, 0x25, 0x15, 0xf8, 0x2d, - 0x36, 0xa, 0xfb, 0x42, 0x6, 0xd4, 0xf8, 0x11, 0x5, 0xfb, 0x5b, 0x38, - 0xa, 0xf7, 0x25, 0x6, 0x4b, 0xfb, 0xda, 0x5, 0xfb, 0x47, 0x6, 0xe, - 0xfb, 0x31, 0xc1, 0xf8, 0x84, 0xbf, 0xe9, 0xf7, 0xa, 0x1, 0xf8, 0x50, - 0xf8, 0xaf, 0x54, 0xa, 0xfc, 0x23, 0xfd, 0x80, 0x15, 0x76, 0x59, 0x5, - 0x82, 0xbe, 0xbe, 0x84, 0xbb, 0x1b, 0xf6, 0xe0, 0xb6, 0xf7, 0x12, 0xaf, - 0x1f, 0xea, 0xf8, 0x45, 0x5, 0xfb, 0xe2, 0x82, 0xa, 0xf7, 0xa5, 0x6, - 0x39, 0xfc, 0x3, 0x5, 0xfb, 0x9, 0x61, 0x46, 0x7f, 0x5c, 0x1b, 0x51, - 0x5c, 0x91, 0x91, 0x68, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, 0xd9, 0xc2, 0xf7, - 0x1f, 0xc2, 0x1, 0x97, 0x16, 0xf7, 0x20, 0x6, 0xb1, 0xf7, 0x5a, 0xcd, - 0xb5, 0xad, 0x6a, 0xcd, 0x31, 0xb0, 0x4d, 0x19, 0x53, 0x38, 0xa, 0xf7, - 0x6a, 0x46, 0xa, 0x2b, 0x6, 0x6d, 0xba, 0x6d, 0xc5, 0x67, 0xb3, 0x4f, - 0xcf, 0x18, 0xf7, 0x47, 0xf7, 0x4, 0x5, 0xed, 0x77, 0xa, 0xfb, 0x70, - 0x6, 0x82, 0x54, 0x5, 0xb9, 0x6, 0xfb, 0x5f, 0xfb, 0x13, 0xd5, 0xf8, - 0xc, 0x66, 0xa, 0xe1, 0x6, 0x26, 0xfc, 0x9b, 0x5, 0x36, 0x6, 0xe, - 0x8b, 0xc2, 0xf8, 0x9b, 0xc2, 0x1, 0xe5, 0x16, 0xf8, 0x2d, 0x36, 0xa, - 0xfb, 0x43, 0x6, 0xf7, 0x1, 0xf8, 0xd2, 0x5, 0xfb, 0x6b, 0x38, 0xa, - 0xf7, 0x34, 0x6, 0x29, 0xfc, 0x9b, 0x5, 0xfb, 0x47, 0x6, 0xe, 0x8b, - 0xc1, 0xf7, 0xe0, 0xc2, 0x7e, 0x77, 0x12, 0x13, 0xc0, 0x91, 0x16, 0xf7, - 0x11, 0x47, 0xa, 0x49, 0x6, 0xc5, 0xf7, 0xa2, 0x5, 0xa7, 0xa6, 0xac, - 0xad, 0xbb, 0x1b, 0xbc, 0x96, 0x6d, 0x72, 0x7d, 0x88, 0x7f, 0x8a, 0x87, - 0x1f, 0x4c, 0xfb, 0xc1, 0x5, 0xf7, 0x12, 0x2a, 0xa, 0x49, 0x6, 0xc2, - 0xf7, 0x97, 0x5, 0x96, 0x8d, 0xca, 0xcb, 0xc0, 0x1b, 0xb3, 0x97, 0x77, - 0x72, 0x78, 0x86, 0x74, 0x87, 0x78, 0x1f, 0x50, 0xfb, 0xae, 0x5, 0xf7, - 0x7, 0x2a, 0xa, 0x53, 0x6, 0xc5, 0xf7, 0xa5, 0x8d, 0x9b, 0x99, 0x1a, - 0xba, 0x6d, 0xb0, 0x4c, 0x55, 0x5a, 0x69, 0x67, 0x66, 0x1e, 0xb0, 0x83, - 0x6e, 0xac, 0x55, 0x1b, 0x5b, 0x64, 0x69, 0x74, 0x68, 0x1f, 0x13, 0xa0, - 0x93, 0xb7, 0x5, 0xfb, 0x7, 0x5f, 0xa, 0xc3, 0x6, 0xe, 0x8b, 0xc1, - 0xf7, 0xc8, 0xc2, 0x6d, 0xc1, 0x12, 0xf7, 0x7, 0xc1, 0xf7, 0xa5, 0xc1, - 0x13, 0xd8, 0x9f, 0x16, 0xf7, 0x72, 0x2a, 0xa, 0x37, 0x6, 0xbb, 0xf7, - 0x86, 0x5, 0x13, 0xb8, 0xbf, 0xc9, 0xe1, 0xb2, 0xd6, 0x1b, 0xb5, 0x97, - 0x79, 0x6a, 0x82, 0x8a, 0x81, 0x89, 0x80, 0x1f, 0x5a, 0xfb, 0x90, 0x5, - 0x38, 0x2d, 0xa, 0xf7, 0x70, 0x2a, 0xa, 0x38, 0x6, 0xbd, 0xf7, 0x91, - 0x5, 0x8f, 0x9e, 0x8c, 0x9c, 0x9b, 0x1a, 0xbf, 0x62, 0xa9, 0x40, 0x45, - 0x3f, 0x63, 0x5e, 0x4f, 0x1e, 0x99, 0xd3, 0x5, 0xfb, 0x1e, 0x38, 0xa, - 0xde, 0x6, 0x4d, 0xfb, 0xd3, 0x5, 0x37, 0x6, 0xe, 0x7c, 0xc1, 0xf7, - 0xf0, 0xc1, 0x1, 0xc4, 0xc2, 0xf8, 0xb, 0xc3, 0x3, 0xc4, 0xf7, 0x3b, - 0x15, 0xfb, 0x0, 0xd5, 0x41, 0xf7, 0x17, 0xf7, 0x39, 0xf7, 0x8, 0xf7, - 0x13, 0xf7, 0x2c, 0xde, 0x5d, 0xe9, 0xfb, 0x2b, 0xfb, 0x28, 0xfb, 0x21, - 0xfb, 0x2, 0xfb, 0x38, 0x1e, 0xc2, 0x92, 0x15, 0xf7, 0x1, 0xea, 0xf3, - 0xf7, 0x14, 0xf7, 0xd, 0xaa, 0x40, 0x51, 0xfb, 0x9, 0x2b, 0x29, 0xfb, - 0xc, 0xfb, 0x1, 0x59, 0xcd, 0xd0, 0x1e, 0xe, 0xfb, 0x31, 0xbe, 0xf7, - 0xa, 0xbf, 0xf7, 0xc5, 0xbf, 0x6a, 0xc0, 0x12, 0xf8, 0x90, 0xc4, 0x13, - 0xd8, 0x6a, 0x21, 0x15, 0x80, 0x58, 0x5, 0xf7, 0xbb, 0x78, 0xa, 0xfb, - 0x30, 0x6, 0xb2, 0xf7, 0x4d, 0x5, 0x65, 0xa3, 0xbd, 0x6e, 0xe7, 0x1b, - 0xf7, 0x20, 0xf7, 0x6, 0xf7, 0xa, 0xf7, 0x27, 0xe7, 0x4d, 0xd3, 0x21, - 0x33, 0x50, 0x60, 0x5f, 0x5d, 0x1f, 0x13, 0xe8, 0x9a, 0xce, 0x5, 0xfb, - 0x1f, 0x6, 0x81, 0x57, 0x5, 0xdf, 0x6, 0x25, 0xfc, 0x6f, 0x5, 0xf7, - 0xb, 0xf7, 0xb2, 0x15, 0x13, 0xd8, 0xed, 0xe5, 0xf7, 0x2, 0xf7, 0xe, - 0xf3, 0xa0, 0x4d, 0x55, 0xfb, 0xe, 0x2b, 0x35, 0x2d, 0x37, 0x4c, 0xb2, - 0xd8, 0x1e, 0xe, 0xfb, 0x31, 0xbf, 0xf7, 0xb, 0xbe, 0xf7, 0xcd, 0xbe, - 0x63, 0xbf, 0x12, 0xb4, 0xc4, 0x13, 0xe8, 0xf7, 0x6b, 0x22, 0x15, 0x80, - 0x57, 0x5, 0xf7, 0xbf, 0x6, 0x96, 0xbf, 0x5, 0x35, 0x6, 0xf4, 0xf8, - 0x77, 0x5, 0xe0, 0x6, 0x95, 0xbe, 0x5, 0xfb, 0x20, 0x6, 0x78, 0x42, - 0x5, 0x13, 0xd8, 0xb2, 0x75, 0x53, 0xb9, 0x36, 0x1b, 0xfb, 0x1b, 0xfb, - 0x16, 0xfb, 0x6, 0xfb, 0x24, 0x27, 0xcc, 0x46, 0xf7, 0x2, 0xcb, 0xd2, - 0x98, 0xc1, 0xc7, 0x1f, 0x65, 0xfb, 0x4e, 0x5, 0xfb, 0xa7, 0xf7, 0xbf, - 0x15, 0xd3, 0xbc, 0xf7, 0xf, 0xf7, 0x2a, 0xef, 0xba, 0x49, 0x3f, 0xfb, - 0xb, 0xfb, 0x12, 0x4c, 0x32, 0x40, 0x53, 0xbb, 0xdc, 0x1e, 0xe, 0x8b, - 0xc1, 0xf7, 0xe2, 0xc1, 0x1, 0xf7, 0x32, 0xc4, 0x3, 0x9f, 0x16, 0xf7, - 0xfe, 0x2a, 0xa, 0xfb, 0x46, 0x6, 0xb4, 0xf7, 0x64, 0x5, 0xf2, 0xf7, - 0x18, 0xbc, 0xa2, 0xc1, 0x1b, 0xa4, 0xa0, 0x85, 0x69, 0x8c, 0x1f, 0xc4, - 0x90, 0x5, 0xbe, 0x8c, 0x79, 0xb0, 0x51, 0x1b, 0x2a, 0x3e, 0x4c, 0x54, - 0x3f, 0x1f, 0x9f, 0xf4, 0x5, 0xfb, 0x4c, 0x5f, 0xa, 0xf7, 0x13, 0x6, - 0x4a, 0xfb, 0xd4, 0x5, 0xfb, 0x13, 0x6, 0xe, 0x7c, 0xc1, 0xf7, 0xf0, - 0xc1, 0x1, 0xf7, 0xa, 0xca, 0xf7, 0xaa, 0xc5, 0x3, 0xba, 0x7c, 0x15, - 0xc4, 0x3c, 0xa, 0x72, 0xb2, 0xbe, 0x6c, 0xdd, 0x1b, 0xf7, 0x10, 0xf5, - 0xba, 0xf3, 0xcc, 0x52, 0xa5, 0x53, 0x94, 0x1f, 0x54, 0x94, 0xfb, 0x3c, - 0x9c, 0xbf, 0x1a, 0xd8, 0xea, 0x87, 0xbf, 0xc4, 0xbf, 0x71, 0x70, 0xb1, - 0x1e, 0x81, 0x5a, 0x51, 0xa, 0xab, 0xf7, 0x30, 0x71, 0xa, 0x80, 0x5b, - 0x5, 0xa5, 0x62, 0x58, 0xa1, 0x51, 0x1b, 0xfb, 0x19, 0x36, 0x67, 0x2a, - 0x42, 0xf7, 0x21, 0x60, 0xd6, 0x85, 0x1f, 0xb9, 0x87, 0xda, 0x83, 0x5b, - 0x1a, 0x30, 0xfb, 0x19, 0x8f, 0x62, 0x4a, 0x50, 0xa8, 0xb2, 0x6a, 0x1e, - 0x95, 0xbb, 0x62, 0xa, 0xe, 0x7c, 0xc2, 0xf7, 0xe4, 0xc2, 0xf7, 0x16, - 0x77, 0x1, 0xf7, 0x17, 0xc6, 0x3, 0xf7, 0x5, 0xf8, 0xc, 0x15, 0xd4, - 0x6, 0x54, 0xfb, 0xa7, 0x8b, 0x7f, 0x7f, 0x1a, 0x3d, 0x8c, 0xe9, 0x7d, - 0xb9, 0x1b, 0xd8, 0xdd, 0xa8, 0xa6, 0xd2, 0x1f, 0x8f, 0xc1, 0x5, 0x77, - 0x51, 0x37, 0x68, 0x45, 0x1b, 0x51, 0x5d, 0x92, 0xc7, 0x1f, 0xbf, 0xf7, - 0xa1, 0x5, 0xf7, 0x93, 0x77, 0xa, 0xfb, 0x93, 0x6, 0xa5, 0xf7, 0x16, - 0x71, 0xa, 0x71, 0xfb, 0x16, 0x5, 0x42, 0x6, 0xe, 0x7c, 0xc0, 0x63, - 0xc1, 0xf7, 0xd4, 0xc1, 0x12, 0x13, 0xa0, 0xcb, 0xf8, 0x8, 0x85, 0xa, - 0x58, 0xfb, 0x96, 0x8a, 0x80, 0x81, 0x1a, 0x45, 0xc2, 0x65, 0xd7, 0xb2, - 0xc0, 0x9c, 0xd2, 0xe3, 0x1e, 0x13, 0x60, 0x7c, 0x40, 0x5, 0xf7, 0x1a, - 0x2a, 0xa, 0x3a, 0x6, 0xd3, 0xf8, 0xa, 0x55, 0xa, 0x82, 0x55, 0x5, - 0xdc, 0x6, 0x5e, 0xfb, 0x7a, 0x5, 0x13, 0xa0, 0x59, 0x5b, 0x4d, 0x55, - 0x4d, 0x1b, 0x56, 0x62, 0xa1, 0xb2, 0x90, 0x8b, 0x90, 0x8c, 0x90, 0x1f, - 0x9e, 0xf3, 0x9d, 0xf3, 0x9e, 0xf3, 0x8, 0xfb, 0x1b, 0x6, 0xe, 0x96, - 0x76, 0xf8, 0x11, 0xc2, 0x1, 0xf7, 0x52, 0x81, 0x15, 0xcc, 0x6, 0xf7, - 0x8d, 0xf8, 0x11, 0x5, 0xdc, 0x77, 0xa, 0xfb, 0x6a, 0x67, 0xa, 0xd5, - 0x6, 0xfb, 0x68, 0xfb, 0xd7, 0x38, 0xf7, 0xd7, 0x5, 0xd7, 0x77, 0xa, - 0xfb, 0x72, 0x67, 0xa, 0xe2, 0x6, 0xe, 0x96, 0x76, 0xf8, 0x11, 0xc2, - 0x1, 0xcb, 0xc0, 0x3, 0xdc, 0x81, 0x15, 0xcb, 0x6, 0xf7, 0x11, 0xf7, - 0x9b, 0xaa, 0xfb, 0x9b, 0x5, 0xc8, 0x6, 0xf7, 0x44, 0xf8, 0x11, 0x5, - 0xb0, 0x77, 0xa, 0xfb, 0x32, 0x38, 0xa, 0xd3, 0x6, 0xfb, 0x23, 0xfb, - 0xc5, 0x6b, 0xf7, 0xb2, 0x5, 0x5b, 0x6, 0xfb, 0x1b, 0xfb, 0xb0, 0x71, - 0xf7, 0xc3, 0x5, 0xd4, 0x6, 0x94, 0xc2, 0x5, 0xfb, 0x36, 0x67, 0xa, - 0xac, 0x6, 0xe, 0x8b, 0xc1, 0xf7, 0xd3, 0xc0, 0x1, 0x7a, 0x16, 0xf7, - 0x68, 0x47, 0xa, 0x48, 0x6, 0xf7, 0x3b, 0xf7, 0x16, 0xf7, 0x2, 0xfb, - 0x16, 0x5, 0x4c, 0x2d, 0xa, 0xf7, 0x69, 0x47, 0xa, 0x3b, 0x6, 0xfb, - 0x21, 0xf7, 0x38, 0xf7, 0x48, 0xf7, 0x2f, 0x5, 0xdc, 0x6, 0x95, 0xc0, - 0x5, 0xfb, 0x55, 0x68, 0xa, 0xb6, 0x6, 0xfb, 0x1f, 0xfb, 0xc, 0x30, - 0xf7, 0xc, 0x5, 0xbf, 0x6, 0x95, 0xc0, 0x5, 0xfb, 0x5e, 0x68, 0xa, - 0xdb, 0x6, 0xf7, 0xd, 0xfb, 0x2e, 0xfb, 0x64, 0xfb, 0x39, 0x5, 0x3e, - 0x6, 0xe, 0xfb, 0x31, 0xbe, 0xf8, 0x75, 0xbe, 0x1, 0x6c, 0x21, 0x15, - 0x7f, 0x58, 0x5, 0xf7, 0xa2, 0x78, 0xa, 0x32, 0x6, 0xf8, 0x35, 0xf8, - 0x75, 0x5, 0xce, 0x78, 0xa, 0xfb, 0x53, 0x6, 0x80, 0x58, 0x5, 0xc7, - 0x6, 0xfb, 0x7c, 0xfb, 0xa1, 0x21, 0xf7, 0xa1, 0x5, 0xce, 0x78, 0xa, - 0xfb, 0x5f, 0x6, 0x80, 0x58, 0x5, 0xd3, 0x6, 0xf7, 0x13, 0xfb, 0xd2, - 0xfb, 0x22, 0xfb, 0x37, 0x5, 0xe, 0x8b, 0xc1, 0xf7, 0xd2, 0xc1, 0x1, - 0xc0, 0x16, 0xf8, 0x2d, 0x6, 0xaa, 0xf7, 0x1a, 0x52, 0xa, 0x76, 0x3b, - 0x5, 0xfb, 0xa7, 0x6, 0xf8, 0x1f, 0xf7, 0xd6, 0x95, 0xbd, 0x5, 0xfc, - 0x1f, 0x6, 0x6b, 0xfb, 0x18, 0x5, 0xc1, 0x6, 0xa2, 0xd9, 0x5, 0xf7, - 0x98, 0x6, 0xfc, 0x1e, 0xfb, 0xd5, 0x5, 0xe, 0xfb, 0x70, 0xc0, 0xf9, - 0xf1, 0xc0, 0x1, 0xf7, 0x53, 0xba, 0x3, 0xf7, 0xa, 0xf7, 0x81, 0x15, - 0xbe, 0x73, 0x9e, 0x78, 0x8a, 0x53, 0x8, 0x74, 0x86, 0x6d, 0x82, 0x65, - 0x1e, 0x7a, 0x3b, 0x84, 0x55, 0x65, 0x1a, 0x4c, 0xb1, 0x7b, 0xe4, 0x7b, - 0x1e, 0x95, 0xc0, 0x5, 0x59, 0x93, 0x67, 0x96, 0xad, 0x1a, 0xa9, 0x92, - 0xbb, 0xa0, 0xde, 0x1e, 0x91, 0xa4, 0x8f, 0xb9, 0xb5, 0x1a, 0xb5, 0x7e, - 0xb4, 0x6e, 0xa1, 0x1e, 0xe6, 0xc2, 0xa1, 0xf7, 0x0, 0x92, 0xb9, 0x8, - 0xf7, 0x5f, 0xb0, 0xab, 0x9c, 0xdf, 0x1b, 0x97, 0xc0, 0x5, 0xfb, 0x23, - 0x74, 0x5d, 0xfb, 0x71, 0x59, 0x1f, 0x6f, 0xfb, 0x14, 0x72, 0x6e, 0x38, - 0x6a, 0x8, 0xe, 0xfb, 0x79, 0x76, 0xfa, 0x7c, 0x77, 0x1, 0xf7, 0x3c, - 0xbe, 0x3, 0xf7, 0x3c, 0xfb, 0x8e, 0x15, 0xbe, 0x6, 0xf7, 0x68, 0xfa, - 0x7c, 0x5, 0x58, 0x6, 0xe, 0xfb, 0x71, 0xc0, 0xf9, 0xf1, 0xc0, 0x1, - 0xf7, 0xaf, 0xbe, 0x3, 0xf8, 0x75, 0xf7, 0xb5, 0x15, 0x58, 0xa3, 0x78, - 0x9e, 0x8c, 0xc3, 0x8, 0xa2, 0x8f, 0xa9, 0x94, 0xb1, 0x1e, 0x9c, 0xdb, - 0x93, 0xc1, 0xb1, 0x1a, 0xca, 0x65, 0x9b, 0x32, 0x9b, 0x1e, 0x81, 0x56, - 0x5, 0xbd, 0x83, 0xaf, 0x80, 0x69, 0x1a, 0x6d, 0x81, 0x59, 0x7c, 0x3a, - 0x1e, 0x86, 0x72, 0x83, 0x5d, 0x61, 0x1a, 0x61, 0x98, 0x62, 0xa8, 0x75, - 0x1e, 0x30, 0x54, 0x75, 0xfb, 0x0, 0x84, 0x5d, 0x8, 0xfb, 0x5f, 0x66, - 0x6b, 0x7a, 0x37, 0x1b, 0x7f, 0x56, 0x5, 0xf7, 0x23, 0xa2, 0xb9, 0xf7, - 0x71, 0xbd, 0x1f, 0xa7, 0xf7, 0x14, 0xa4, 0xa8, 0xde, 0xac, 0x8, 0xe, - 0xf7, 0x59, 0xc8, 0x91, 0xc3, 0x12, 0xf0, 0xf7, 0x59, 0x15, 0xaa, 0xa7, - 0xaf, 0xaf, 0xb1, 0x1b, 0xb0, 0xa6, 0x78, 0x7a, 0xa7, 0x1f, 0x7b, 0xa4, - 0xa5, 0x7c, 0xae, 0x1b, 0xcd, 0xbf, 0xaf, 0xb7, 0xb6, 0x1f, 0x64, 0xb6, - 0x5, 0x77, 0x78, 0x4f, 0x61, 0x66, 0x1b, 0x6e, 0x77, 0x97, 0x99, 0x75, - 0x1f, 0x9c, 0x70, 0x6e, 0x9e, 0x53, 0x1b, 0x4b, 0x62, 0x5e, 0x67, 0x62, - 0x1f, 0xe, 0xfb, 0x1c, 0x76, 0xf8, 0x67, 0xf7, 0xc, 0x1, 0xf7, 0x9f, - 0xf7, 0x23, 0x3, 0xf7, 0x9f, 0xf7, 0xf8, 0x15, 0x71, 0xa7, 0x77, 0xa8, - 0xba, 0xb2, 0xae, 0xaf, 0xa5, 0x74, 0xa2, 0x66, 0x5b, 0x68, 0x69, 0x63, - 0x1e, 0x3e, 0xfc, 0x95, 0x85, 0xa, 0xc9, 0xf8, 0x1e, 0x5, 0x5d, 0x6, - 0xe, 0xe9, 0xc2, 0xf7, 0xa1, 0xc2, 0x1, 0xdc, 0xc4, 0xf7, 0x4f, 0xc2, - 0x3, 0xf7, 0x56, 0x5a, 0x15, 0xc2, 0x6, 0xa6, 0xf7, 0x23, 0xd3, 0x8f, - 0xc7, 0xa7, 0xc7, 0xad, 0x19, 0x85, 0xb9, 0x5, 0x6b, 0x50, 0x4b, 0x72, - 0x49, 0x1b, 0x29, 0x66, 0xc2, 0xbb, 0xe1, 0xdd, 0xdb, 0xf3, 0xb8, 0xc1, - 0x7b, 0x6c, 0x9d, 0x1f, 0x81, 0x59, 0x6a, 0xa, 0xab, 0xf7, 0x36, 0x5, - 0x55, 0x6, 0x81, 0x58, 0x6c, 0xa3, 0x6a, 0x99, 0x66, 0x8f, 0x19, 0xa6, - 0xf7, 0x20, 0x52, 0xa, 0x70, 0xfb, 0x21, 0x5, 0x34, 0x8a, 0xfb, 0x16, - 0x2c, 0xfb, 0x18, 0x1a, 0x2e, 0xcf, 0x58, 0xd3, 0x84, 0x1e, 0xe, 0x76, - 0xc5, 0xf7, 0x82, 0xc4, 0xf7, 0x71, 0xc5, 0x12, 0xf7, 0x33, 0xc1, 0x61, - 0xbf, 0x13, 0xe8, 0xbe, 0xaa, 0x15, 0x9b, 0x57, 0x5, 0xa1, 0xc0, 0xe0, - 0x93, 0x9b, 0x1b, 0xa1, 0x9d, 0x82, 0x83, 0xa0, 0x1f, 0x84, 0x9d, 0x9f, - 0x85, 0xa4, 0x53, 0xa, 0x74, 0x7b, 0x91, 0x92, 0x7b, 0x1f, 0x94, 0x77, - 0x79, 0x94, 0x70, 0x1b, 0x69, 0x67, 0x81, 0x7c, 0x69, 0x1f, 0x8e, 0x6, - 0xea, 0xe0, 0x8c, 0xc8, 0x8c, 0xe1, 0x8, 0xf7, 0x6e, 0x6, 0x96, 0xc4, - 0x5, 0xfb, 0x7f, 0x6, 0x13, 0xf0, 0x89, 0xa3, 0x88, 0xa5, 0x8c, 0xa5, - 0x8, 0x42, 0xa, 0x6c, 0x8f, 0x6d, 0x8d, 0x6e, 0x8, 0x2c, 0x6, 0x80, - 0x52, 0x5, 0x13, 0xe8, 0xf7, 0x5, 0x6, 0x23, 0x64, 0x3f, 0x3a, 0x4b, - 0x1e, 0xe, 0xd7, 0xb9, 0x60, 0x76, 0xf8, 0x14, 0xb9, 0x9d, 0x77, 0x12, - 0xe1, 0xbb, 0xf7, 0xdf, 0xbc, 0x13, 0x6c, 0xac, 0xeb, 0x15, 0xa9, 0x65, - 0xda, 0xc5, 0x5, 0x13, 0xac, 0x64, 0xb9, 0xb0, 0x8a, 0xac, 0x1b, 0xbd, - 0xbe, 0x9b, 0xa7, 0xb7, 0x1f, 0x13, 0x5c, 0xbe, 0x4d, 0xae, 0xa8, 0x58, - 0xcb, 0x5, 0xbe, 0xb3, 0xa4, 0xd6, 0xc1, 0x1a, 0x8c, 0xaf, 0x86, 0xa4, - 0x7a, 0xa5, 0xd5, 0xc9, 0x18, 0x6c, 0xb0, 0x42, 0x50, 0x5, 0x13, 0xac, - 0xa9, 0x6c, 0x62, 0x96, 0x5a, 0x1b, 0x59, 0x55, 0x7b, 0x6e, 0x61, 0x1f, - 0x13, 0x9c, 0x57, 0xca, 0x66, 0x6c, 0xc0, 0x4c, 0x5, 0x57, 0x51, 0x75, - 0x5d, 0x4c, 0x1a, 0x8a, 0x68, 0x92, 0x6e, 0x9c, 0x71, 0x8, 0xa4, 0xe4, - 0x15, 0x13, 0xac, 0xea, 0xe2, 0xf2, 0xf7, 0x3, 0xdb, 0xc0, 0x52, 0x48, - 0xfb, 0x4, 0x21, 0x37, 0x30, 0x3f, 0x51, 0xbe, 0xd2, 0x1e, 0xe, 0x8b, - 0xc1, 0xd9, 0xc1, 0xcf, 0xc2, 0xf7, 0x5b, 0xc1, 0x1, 0xc3, 0x16, 0xf7, - 0xa9, 0x2a, 0xa, 0xfb, 0x2, 0x6, 0x9a, 0xd9, 0x5, 0xf7, 0x18, 0x47, - 0xa, 0xfb, 0x19, 0x6, 0x98, 0xcf, 0x5, 0xf7, 0x19, 0x46, 0xa, 0xfb, - 0x12, 0x6, 0xf7, 0x5f, 0xf7, 0x5b, 0x5, 0xdb, 0x2a, 0xa, 0xfb, 0x64, - 0x2d, 0xa, 0xd0, 0x6, 0xfb, 0x45, 0xfb, 0x40, 0x22, 0xf7, 0x40, 0x5, - 0xcf, 0x2a, 0xa, 0xfb, 0x65, 0x2d, 0xa, 0xdc, 0x6, 0xf7, 0xe, 0xfb, - 0x5b, 0x5, 0xfb, 0xb, 0x38, 0xa, 0xf7, 0x17, 0x6, 0x7e, 0x47, 0x5, - 0xfb, 0x17, 0x45, 0xa, 0xf7, 0x18, 0x6, 0x7b, 0x3d, 0x5, 0xfb, 0x2, - 0x6, 0xe, 0xf7, 0x4c, 0xbc, 0x3, 0xf7, 0xad, 0xf7, 0xaf, 0x15, 0xbd, - 0x6, 0xdf, 0xf8, 0x1c, 0x5, 0x59, 0x6, 0xfb, 0x49, 0xfd, 0xe6, 0x15, - 0xbc, 0x6, 0xe0, 0xf8, 0x1d, 0x5, 0x59, 0x6, 0xe, 0x3d, 0xc2, 0xf7, - 0xb, 0xb4, 0xf8, 0x18, 0xc2, 0x1, 0xe3, 0xc4, 0xf7, 0x71, 0xc4, 0x3, - 0xc4, 0x3d, 0x15, 0xf7, 0x87, 0x6, 0xcd, 0xc4, 0xac, 0xbc, 0xa6, 0x7e, - 0xaa, 0x68, 0xad, 0x1f, 0xe3, 0x8a, 0xa7, 0xde, 0xb0, 0x1a, 0xa8, 0x7a, - 0xa3, 0x75, 0x9d, 0x1e, 0xfb, 0x65, 0xf7, 0x4c, 0x87, 0x93, 0x96, 0x1a, - 0xaf, 0x8c, 0xb7, 0x8b, 0xa0, 0x1b, 0xf7, 0x3f, 0x6, 0x75, 0x26, 0x5, - 0xc4, 0x6, 0xab, 0xf7, 0x30, 0x5, 0xfb, 0x50, 0x6, 0x48, 0x24, 0x85, - 0x35, 0x70, 0x9a, 0x76, 0xab, 0x6a, 0x1f, 0x5a, 0x4a, 0x56, 0x52, 0x73, - 0x9d, 0x6a, 0xa0, 0x79, 0x1f, 0xf7, 0x4e, 0xfb, 0x39, 0x5, 0x99, 0x7f, - 0x94, 0x77, 0x7b, 0x1a, 0x79, 0x7d, 0x7d, 0x6d, 0x1e, 0xfb, 0x5a, 0x6, - 0xa0, 0xf0, 0x62, 0xa, 0xf7, 0x93, 0xc6, 0x15, 0xfb, 0x1d, 0xf7, 0xb, - 0x5, 0x7c, 0x99, 0x85, 0x9a, 0x9a, 0x1a, 0xaf, 0xb6, 0xab, 0xb2, 0x8c, - 0x1e, 0xf7, 0x22, 0xfb, 0x9, 0x5, 0x9a, 0x7d, 0x96, 0x7f, 0x74, 0x1a, - 0x7c, 0x75, 0x58, 0x45, 0x1e, 0xe, 0xf8, 0x80, 0xf2, 0x1, 0xf7, 0xd9, - 0xf8, 0x80, 0x15, 0xef, 0x6, 0xa8, 0xf2, 0x5, 0x27, 0x6, 0xfb, 0x64, - 0x24, 0x15, 0xf2, 0x6, 0xa8, 0xf2, 0x5, 0x24, 0x6, 0xe, 0x79, 0xb9, - 0xe6, 0xb8, 0xf7, 0x8f, 0xb8, 0xd7, 0xb7, 0x1, 0x84, 0xb9, 0xf7, 0x0, - 0xba, 0xf8, 0x3, 0xb9, 0x3, 0x84, 0xf7, 0x66, 0x15, 0xfb, 0x18, 0xf5, - 0x2b, 0xf7, 0x23, 0xf7, 0x59, 0xf7, 0x3c, 0xf7, 0x38, 0xf7, 0x5d, 0xf7, - 0x1d, 0x20, 0xeb, 0xfb, 0x1f, 0xfb, 0x41, 0xfb, 0x57, 0xfb, 0x35, 0xfb, - 0x65, 0x1e, 0xb9, 0x9c, 0x15, 0xf7, 0x2f, 0xf7, 0x20, 0xf7, 0x2e, 0xf7, - 0x43, 0xf7, 0x11, 0xdd, 0x39, 0xfb, 0x8, 0xfb, 0x37, 0xfb, 0x2e, 0xfb, - 0x27, 0xfb, 0x31, 0xfb, 0xa, 0x2e, 0xde, 0xf7, 0x8, 0x1e, 0xf7, 0xfc, - 0x7d, 0x15, 0x6b, 0x69, 0x63, 0x7a, 0x68, 0x1b, 0x51, 0x65, 0xb5, 0xc0, - 0xe3, 0xd7, 0xcf, 0xd3, 0xaa, 0xb1, 0x7c, 0x77, 0x9f, 0x1f, 0xad, 0xae, - 0x5, 0xab, 0x66, 0x6e, 0x98, 0x5d, 0x1b, 0xfb, 0x7, 0x30, 0x27, 0x20, - 0x39, 0xca, 0x57, 0xd2, 0xbd, 0xc5, 0xa3, 0xab, 0xb2, 0x1f, 0xe, 0xf7, - 0x8d, 0xc7, 0xda, 0xc5, 0xda, 0xc2, 0x1, 0xf7, 0xeb, 0xf7, 0x95, 0x15, - 0xee, 0x6, 0x94, 0xc6, 0x5, 0x56, 0x6, 0xa0, 0xf7, 0x25, 0x5, 0x8d, - 0x9a, 0x8d, 0x99, 0x95, 0x1a, 0xc8, 0x5c, 0x9e, 0x58, 0x5b, 0x54, 0x7a, - 0x7c, 0x6d, 0x1e, 0x8e, 0x50, 0x5, 0x9d, 0xa6, 0xc1, 0x9d, 0xb4, 0x1b, - 0xac, 0xa2, 0x84, 0x61, 0x80, 0x89, 0x7f, 0x87, 0x7b, 0x1f, 0x90, 0x75, - 0x71, 0x8f, 0x71, 0x1b, 0xfb, 0x8, 0x6e, 0x43, 0x5d, 0x62, 0xa8, 0x65, - 0xbd, 0xb6, 0xb9, 0xa7, 0xac, 0xae, 0x1f, 0x93, 0xd1, 0x15, 0x5f, 0x6a, - 0x5e, 0x70, 0x62, 0x1b, 0x71, 0x78, 0x94, 0x9f, 0xab, 0xa7, 0x9d, 0xc1, - 0xb4, 0xb4, 0x83, 0x8b, 0x1f, 0xe, 0xda, 0x76, 0xf8, 0x18, 0x77, 0x1, - 0xf7, 0x86, 0xf7, 0x93, 0x15, 0xf7, 0x4b, 0xfb, 0x4d, 0xab, 0xba, 0xfb, - 0x15, 0xf7, 0x1e, 0xf7, 0x59, 0xf7, 0x24, 0x6e, 0xba, 0x5, 0xfc, 0x39, - 0xfb, 0x53, 0x15, 0xf7, 0x3e, 0xfb, 0x4d, 0xb1, 0xbc, 0xfb, 0x14, 0xf7, - 0x1c, 0xf7, 0x52, 0xf7, 0x24, 0x6c, 0xba, 0x5, 0xe, 0xf7, 0x15, 0x76, - 0xf7, 0x5b, 0xc9, 0x1, 0xdd, 0xf7, 0xc7, 0x15, 0xf8, 0x7, 0x6, 0x68, - 0xfb, 0x5b, 0x6a, 0xa, 0xb8, 0xf7, 0x99, 0x5, 0xfc, 0x3e, 0x6, 0xe, - 0x79, 0xb9, 0xf7, 0x7, 0xf7, 0x37, 0xe8, 0xbb, 0xe4, 0xb7, 0x1, 0x84, - 0xbb, 0xf7, 0xde, 0xbd, 0xf7, 0x1f, 0xba, 0x3, 0x84, 0xf7, 0x74, 0x15, - 0xfb, 0x1e, 0xf1, 0x23, 0xf7, 0x27, 0xf7, 0x48, 0xf7, 0x4d, 0xf7, 0x35, - 0xf7, 0x5d, 0xf7, 0x1e, 0x21, 0xed, 0xfb, 0x20, 0xfb, 0x3a, 0xfb, 0x5e, - 0xfb, 0x2a, 0xfb, 0x62, 0x1e, 0xbb, 0x93, 0x15, 0xf7, 0x1d, 0xf7, 0x22, - 0xf7, 0x3b, 0xf7, 0x3f, 0xf7, 0xe, 0xdf, 0x33, 0xfb, 0x4, 0xfb, 0x30, - 0xfb, 0x33, 0xfb, 0x2c, 0xfb, 0x2b, 0xfb, 0xc, 0x32, 0xe0, 0xf7, 0xb, - 0x1e, 0xf7, 0x17, 0x32, 0x15, 0xba, 0x6, 0xa1, 0xf5, 0x5, 0xbf, 0x6, - 0xa9, 0x21, 0x5, 0xc6, 0x6, 0x6d, 0xf7, 0x9, 0x5, 0xbf, 0x9d, 0x9c, - 0xba, 0xbc, 0x1a, 0xb8, 0x63, 0xa7, 0x5e, 0x1e, 0x23, 0x6, 0x9d, 0xfb, - 0x21, 0x15, 0x9f, 0xe8, 0x6a, 0xa, 0xa8, 0x9c, 0x79, 0x7b, 0x59, 0x71, - 0x82, 0x65, 0x1f, 0xe, 0xf8, 0xa1, 0xb3, 0x1, 0xf7, 0x8, 0xf8, 0xa1, - 0x15, 0xf7, 0xfc, 0x6, 0x93, 0xb3, 0x5, 0xfb, 0xfc, 0x6, 0xe, 0xf7, - 0x9e, 0xc9, 0xf7, 0x7c, 0xc9, 0x1, 0xf7, 0xb, 0xca, 0xf7, 0x80, 0xca, - 0x3, 0xf7, 0xb, 0xf8, 0x28, 0x15, 0x3f, 0xc6, 0x4d, 0xe2, 0xf7, 0x1, - 0xf6, 0xf2, 0xf7, 0x11, 0xca, 0x5f, 0xcc, 0x28, 0xfb, 0xb, 0x27, 0x23, - 0xfb, 0x6, 0x1e, 0xca, 0x9a, 0x15, 0xbf, 0xc1, 0xe4, 0xe4, 0xd0, 0xa3, - 0x5d, 0x67, 0x4f, 0x46, 0x31, 0x43, 0x4f, 0x68, 0xb6, 0xbb, 0x1e, 0xe, - 0xb7, 0xc0, 0xf7, 0x79, 0xc0, 0xf7, 0x47, 0x77, 0x1, 0xf7, 0x97, 0xc2, - 0x3, 0xf7, 0x97, 0xf7, 0x26, 0x15, 0xc2, 0x6, 0xb0, 0xf7, 0x48, 0x5, - 0xf7, 0x4f, 0x80, 0xa, 0xfb, 0x4f, 0x6, 0xaf, 0xf7, 0x47, 0x52, 0xa, - 0x67, 0xfb, 0x47, 0x5, 0xfb, 0x4f, 0x6, 0x80, 0x56, 0x5, 0xf7, 0x4f, - 0x6, 0xfb, 0x89, 0xfb, 0xae, 0x15, 0xf8, 0x41, 0x80, 0xa, 0xfc, 0x41, - 0x6, 0xe, 0xf7, 0x8d, 0xc3, 0xf7, 0x9b, 0xc1, 0x1, 0xf8, 0x1f, 0xc4, - 0x3, 0xf7, 0x27, 0xf7, 0x8d, 0x15, 0xf7, 0x91, 0x3c, 0xa, 0xfb, 0x3d, - 0x6, 0xf7, 0x17, 0xdf, 0xda, 0xbb, 0xef, 0x1a, 0xb9, 0x68, 0xb2, 0x48, - 0x5f, 0x4a, 0x74, 0x58, 0x73, 0x1e, 0x82, 0x52, 0x5, 0xc0, 0x6, 0xb2, - 0x8a, 0xba, 0xb1, 0xaa, 0x1b, 0xae, 0xa1, 0x75, 0x71, 0x5c, 0x62, 0x63, - 0x68, 0x74, 0x1f, 0xfb, 0x36, 0xfb, 0x1, 0x5, 0xe, 0xf7, 0x84, 0xc3, - 0xf5, 0xc2, 0xf7, 0x2, 0xc2, 0x12, 0xf8, 0xa, 0xc5, 0x5e, 0xc4, 0x13, - 0xf0, 0xf7, 0x30, 0xf7, 0xa3, 0x15, 0x7c, 0xa8, 0xbb, 0x7b, 0xb6, 0x1b, - 0xd7, 0xdb, 0xc0, 0xde, 0xae, 0x79, 0x9a, 0x75, 0x97, 0x1f, 0x13, 0xe8, - 0xae, 0xa1, 0x9c, 0xb2, 0xb4, 0x1a, 0xbc, 0x65, 0xac, 0x54, 0x60, 0x5c, - 0x77, 0x75, 0x64, 0x1e, 0x96, 0x57, 0x5, 0x9d, 0xab, 0xac, 0xa0, 0xad, - 0x1b, 0xa6, 0xa7, 0x7d, 0x71, 0x5e, 0x5a, 0x72, 0x4b, 0x1f, 0x87, 0x79, - 0x87, 0x78, 0x87, 0x79, 0x8, 0x99, 0x9f, 0x8b, 0x9f, 0x1b, 0x13, 0xf0, - 0xa9, 0xa7, 0x81, 0x6e, 0x6a, 0x71, 0x69, 0x4b, 0x66, 0x67, 0x99, 0x9d, - 0x6f, 0x1f, 0xe, 0x65, 0xa, 0xf7, 0x42, 0xf8, 0x85, 0x15, 0xf7, 0x96, - 0xf0, 0x7b, 0xd5, 0xfb, 0x8c, 0xfb, 0x24, 0x5, 0xe, 0xf7, 0x22, 0xac, - 0x15, 0x75, 0x9a, 0xa9, 0x78, 0xbb, 0x1b, 0xbe, 0xdf, 0xab, 0xca, 0xbc, - 0x1f, 0x7b, 0x39, 0x5, 0xf7, 0x1c, 0x2a, 0xa, 0x39, 0x6, 0xd3, 0xf8, - 0x3, 0x5, 0xfb, 0x1c, 0x68, 0xa, 0xdd, 0x6, 0x70, 0xfb, 0x18, 0x5, - 0x35, 0x7b, 0x51, 0xfb, 0x2, 0xfb, 0x11, 0x1b, 0x4b, 0x6a, 0xb9, 0xc6, - 0x96, 0x1f, 0xc2, 0xf7, 0xa8, 0x5, 0xfb, 0x1d, 0x68, 0xa, 0xdd, 0x6, - 0x23, 0xfc, 0xa6, 0x6a, 0xa, 0xe, 0xf8, 0xa9, 0xa8, 0x1, 0xf7, 0x28, - 0xba, 0xda, 0xb6, 0x3, 0xf7, 0x28, 0x3d, 0x15, 0xba, 0x6, 0xf7, 0x52, - 0xf8, 0xf7, 0x5, 0xda, 0x6, 0xfb, 0x52, 0xfc, 0xf7, 0x5, 0xb6, 0x6, - 0xf7, 0x52, 0xf8, 0xf7, 0x5, 0xbc, 0x6, 0x94, 0xa8, 0x5, 0xfb, 0x6f, - 0x6, 0xfb, 0x34, 0xfb, 0x2b, 0x4c, 0xfb, 0x21, 0x53, 0xb9, 0x3e, 0xf7, - 0x35, 0x1f, 0xe, 0xf7, 0x51, 0xf7, 0x1e, 0x1, 0xf7, 0x70, 0xf7, 0x33, - 0x3, 0xf7, 0x70, 0xf7, 0x87, 0x15, 0x6e, 0xa6, 0x72, 0xb4, 0xb7, 0xba, - 0xaf, 0xb9, 0xa9, 0x73, 0xa5, 0x63, 0x58, 0x5f, 0x65, 0x5d, 0x1e, 0xe, - 0xfb, 0x2, 0xb9, 0x1, 0xf7, 0xbf, 0xba, 0x3, 0xf7, 0x76, 0xfb, 0x1a, - 0x15, 0x88, 0x90, 0xa3, 0x7d, 0xa4, 0x1b, 0xbc, 0xb7, 0xb0, 0xba, 0xa4, - 0x78, 0x9c, 0x7c, 0x8d, 0x1f, 0x92, 0xac, 0x5, 0x5c, 0x6, 0x73, 0x41, - 0x5, 0x8c, 0x93, 0x91, 0x8b, 0x91, 0x1b, 0x9d, 0x93, 0x83, 0x83, 0x8c, - 0x1f, 0x78, 0x79, 0x7f, 0x7b, 0x7d, 0x7c, 0x8e, 0x94, 0x81, 0x1e, 0xe, - 0xf7, 0x8d, 0xc3, 0x1, 0xf7, 0xab, 0xc0, 0x3, 0xf7, 0x3e, 0xf7, 0x8d, - 0x15, 0xf7, 0x8d, 0x3c, 0xa, 0x29, 0x6, 0xc5, 0xf7, 0xd1, 0xfb, 0x26, - 0x72, 0x80, 0x53, 0xe6, 0x9a, 0x5e, 0xfb, 0x8f, 0x5, 0x29, 0x6, 0xe, - 0xf7, 0x8d, 0xc6, 0xf7, 0x69, 0xc6, 0x1, 0xf7, 0x1d, 0xc1, 0xf7, 0x6d, - 0xc1, 0x3, 0xf7, 0x1d, 0xf8, 0xc, 0x15, 0x2c, 0xe5, 0x6b, 0xb6, 0xd4, - 0xf7, 0xb, 0xd2, 0xf7, 0x17, 0xd4, 0x5a, 0xc3, 0x39, 0x36, 0xfb, 0x1, - 0x40, 0xfb, 0x15, 0x1e, 0xc1, 0x9a, 0x15, 0xd1, 0xbf, 0xc7, 0xd9, 0xcf, - 0x9d, 0x5d, 0x68, 0x8c, 0x1e, 0x3c, 0x4a, 0x56, 0x4e, 0x5c, 0x5f, 0xa9, - 0xc0, 0x1e, 0xe, 0xe6, 0x76, 0xf8, 0xc, 0x77, 0x1, 0x8c, 0xf8, 0xc4, - 0x3, 0xf3, 0xd1, 0x15, 0xf7, 0x92, 0xf7, 0x53, 0xfb, 0x4b, 0xf7, 0x4d, - 0x6b, 0x5c, 0xf7, 0x15, 0xfb, 0x1e, 0xfb, 0x59, 0xfb, 0x24, 0x5, 0xf7, - 0x48, 0x16, 0xaa, 0x5c, 0xf7, 0x83, 0xf7, 0x53, 0xfb, 0x3e, 0xf7, 0x4d, - 0x65, 0x5a, 0xf7, 0x14, 0xfb, 0x1c, 0x5, 0xe, 0x60, 0xc1, 0x5c, 0x76, - 0xf3, 0xc2, 0xf7, 0x5d, 0xc0, 0xf7, 0xc9, 0x77, 0x12, 0x13, 0xb8, 0xf7, - 0x8d, 0xba, 0x15, 0xf7, 0x14, 0x6, 0x82, 0x67, 0x5, 0x5a, 0x5f, 0xa, - 0xf7, 0x20, 0x76, 0xa, 0x61, 0x6, 0x93, 0xaf, 0x5, 0xb6, 0x6, 0x94, - 0xc2, 0x5, 0x60, 0x6, 0xac, 0xf7, 0x65, 0x52, 0xa, 0xfb, 0x30, 0xfb, - 0x65, 0x5, 0xc9, 0x16, 0xe4, 0xf7, 0x19, 0x76, 0xfb, 0x19, 0x5, 0xfc, - 0x19, 0xfb, 0x14, 0x15, 0x13, 0x78, 0xac, 0x6c, 0xf8, 0xd4, 0xf9, 0x47, - 0x69, 0xaa, 0x5, 0xfc, 0xd3, 0xfb, 0xfe, 0x15, 0xf7, 0x6e, 0x6, 0x94, - 0xc0, 0x5, 0x36, 0x6, 0xbe, 0xf7, 0xc6, 0xfb, 0x14, 0x73, 0x82, 0x55, - 0xdb, 0x99, 0x62, 0xfb, 0x86, 0x5, 0x35, 0x6, 0xe, 0x5f, 0xc1, 0x5d, - 0x76, 0xf7, 0xd5, 0xc0, 0x7c, 0xc1, 0xf7, 0xc9, 0x77, 0x12, 0xf8, 0x65, - 0xbb, 0x13, 0x5c, 0x89, 0x71, 0x15, 0xad, 0x6c, 0xf8, 0xce, 0xf9, 0x47, - 0x67, 0xaa, 0x5, 0xfc, 0xb5, 0xfb, 0xff, 0x15, 0xf7, 0x70, 0x76, 0xa, - 0x34, 0x6, 0xbe, 0xf7, 0xc4, 0xfb, 0x13, 0x74, 0x82, 0x55, 0xda, 0x99, - 0x64, 0xfb, 0x85, 0x5, 0x34, 0x6, 0x13, 0xac, 0xf7, 0x73, 0xfc, 0x24, - 0x15, 0xf7, 0x6b, 0x76, 0xa, 0xfb, 0x23, 0x6, 0xf7, 0xb, 0xee, 0xc6, - 0xa8, 0xe1, 0x1a, 0xbc, 0x72, 0xb7, 0x4d, 0x65, 0x63, 0x78, 0x69, 0x6c, - 0x1e, 0x81, 0x4c, 0x5, 0xb9, 0x6, 0xb0, 0x89, 0xae, 0xa5, 0xaa, 0x1b, - 0xaa, 0x9c, 0x73, 0x6e, 0x62, 0x68, 0x6a, 0x6d, 0x74, 0x1f, 0xfb, 0x1e, - 0xfb, 0x0, 0x5, 0xe, 0x61, 0xc1, 0x5c, 0x76, 0xf7, 0xb, 0xc2, 0xf7, - 0x42, 0xc2, 0xf7, 0xb3, 0x76, 0xc0, 0x77, 0x12, 0xf7, 0x67, 0xba, 0x65, - 0xbb, 0x13, 0xbe, 0xf7, 0x90, 0xca, 0x15, 0xf7, 0x11, 0x6, 0x83, 0x58, - 0x5, 0x59, 0x6, 0x82, 0x55, 0x5, 0xf7, 0x1c, 0x76, 0xa, 0x62, 0x6, - 0x92, 0xbe, 0x5, 0xb6, 0x6, 0x94, 0xc2, 0x5, 0x61, 0x6, 0xab, 0xf7, - 0x57, 0x5, 0x56, 0x6, 0xfb, 0x2c, 0xfb, 0x66, 0x5, 0xc7, 0x9a, 0x15, - 0xe3, 0xf7, 0x8, 0x78, 0xfb, 0x8, 0x5, 0xfc, 0x10, 0xfb, 0x25, 0x15, - 0x13, 0x7e, 0xab, 0x6e, 0xf8, 0xbe, 0xf9, 0x47, 0x6a, 0xaa, 0x5, 0xfc, - 0xa1, 0xfb, 0xe8, 0x15, 0x7d, 0xa2, 0xb1, 0x77, 0xae, 0x1b, 0xc4, 0xd1, - 0xc2, 0xd5, 0x1f, 0x8e, 0xb3, 0x7a, 0x9a, 0x78, 0x97, 0x8, 0x13, 0xbd, - 0xa6, 0xa0, 0x9b, 0xb1, 0xb1, 0x1a, 0xbc, 0x6c, 0xab, 0x5d, 0x69, 0x66, - 0x79, 0x75, 0x6b, 0x1e, 0x94, 0x58, 0x5, 0x9d, 0xa5, 0xa5, 0x9f, 0xa7, - 0x1b, 0xa0, 0x9f, 0x7d, 0x72, 0x8d, 0x1f, 0x64, 0x69, 0x6f, 0x57, 0x1e, - 0x85, 0x6, 0x82, 0x56, 0x5, 0x13, 0xbe, 0xb2, 0xc0, 0x87, 0x6a, 0x6d, - 0x73, 0x63, 0x59, 0x6d, 0x6e, 0x9c, 0x9c, 0x76, 0x1f, 0xe, 0xfb, 0x31, - 0xc1, 0xf8, 0x33, 0xf7, 0xa, 0x12, 0xf7, 0xc, 0xc2, 0xf7, 0x45, 0xc2, - 0x9e, 0xc1, 0x17, 0xf7, 0xe5, 0xf7, 0xf7, 0x15, 0x73, 0xa1, 0x78, 0xac, - 0xb8, 0xad, 0xad, 0xb3, 0xa2, 0x75, 0xa0, 0x68, 0x68, 0x61, 0x69, 0x62, - 0x1e, 0x8e, 0xfb, 0x41, 0x15, 0x38, 0x7a, 0xfb, 0x1d, 0x5e, 0xfb, 0x22, - 0x1a, 0x31, 0xd6, 0x5e, 0xe5, 0xc6, 0xc9, 0x9a, 0x9c, 0xbe, 0x1e, 0x13, - 0xb8, 0xa2, 0xf7, 0xb, 0x5, 0x55, 0x6, 0x7d, 0x44, 0x5, 0x7b, 0x66, - 0x61, 0x81, 0x63, 0x1b, 0x2f, 0x71, 0xba, 0xb1, 0xf7, 0x2, 0xf7, 0x1f, - 0xac, 0xd3, 0x96, 0x1f, 0xa0, 0xf3, 0x52, 0xa, 0xe, 0x8b, 0xc1, 0xf7, - 0x10, 0xc1, 0xf7, 0xb1, 0xc1, 0x1, 0x89, 0x4f, 0xa, 0x89, 0x16, 0x20, - 0xa, 0xfb, 0x43, 0xf8, 0x7d, 0x15, 0xf7, 0x9a, 0x26, 0x9b, 0xa9, 0xfb, - 0x7b, 0x79, 0xa, 0x8b, 0xc1, 0xf7, 0xf, 0xc2, 0xf7, 0xab, 0xc1, 0x84, - 0xa, 0x72, 0xf7, 0x74, 0xf7, 0x5a, 0xf7, 0x71, 0x3, 0xf7, 0xc2, 0xf8, - 0xff, 0x15, 0xf7, 0xd7, 0xf0, 0x77, 0xd4, 0xfb, 0xc9, 0xfb, 0x24, 0x5, - 0xfb, 0xd5, 0xfd, 0x1d, 0x23, 0xa, 0x8b, 0xc0, 0xf7, 0xc, 0xc0, 0xf7, - 0xb1, 0xc1, 0xf7, 0x66, 0x77, 0x1, 0x89, 0x4f, 0xa, 0xf7, 0x7a, 0xf9, - 0x3, 0x15, 0xb0, 0x79, 0xf7, 0x3b, 0xf7, 0x7, 0xf7, 0xd, 0xfb, 0x7, - 0xb5, 0x9d, 0xfb, 0x5, 0xf7, 0x2c, 0x5, 0x3c, 0x6, 0xfc, 0x2b, 0xfd, - 0x9b, 0x23, 0xa, 0x7e, 0xa, 0xd3, 0xbc, 0x9c, 0xbc, 0x1, 0x71, 0x4f, - 0xa, 0xf7, 0x6c, 0xf9, 0x20, 0x15, 0xbc, 0x81, 0x5, 0x9e, 0x97, 0xa6, - 0xb5, 0xbc, 0x1b, 0xa4, 0x9b, 0x7b, 0x7b, 0x9e, 0x1f, 0x7a, 0x9f, 0xa1, - 0x7a, 0xb1, 0x1b, 0xd0, 0xb9, 0xca, 0xb1, 0x9e, 0x1f, 0x5b, 0x94, 0x5, - 0x73, 0x7d, 0x69, 0x66, 0x66, 0x1b, 0x76, 0x7e, 0x99, 0x9b, 0x7a, 0x1f, - 0x9c, 0x79, 0x75, 0x9e, 0x61, 0x1b, 0x52, 0x51, 0x5c, 0x56, 0x6d, 0x1f, - 0xfb, 0x86, 0xfd, 0x20, 0x23, 0xa, 0x7e, 0xa, 0xdb, 0xf7, 0x8, 0x1, - 0x89, 0x4f, 0xa, 0xf8, 0x55, 0xf9, 0x19, 0x15, 0xdd, 0x5c, 0xa, 0x38, - 0x6, 0xfb, 0x3c, 0xfb, 0x8, 0x15, 0xdd, 0x5c, 0xa, 0x39, 0x6, 0xfb, - 0xe0, 0xfd, 0x8d, 0x23, 0xa, 0x8b, 0xbf, 0xf7, 0x20, 0xc1, 0xf7, 0xaa, - 0xc1, 0xaa, 0xc4, 0xd2, 0xc3, 0x1, 0x89, 0xf7, 0x63, 0xf7, 0x11, 0xc6, - 0xd4, 0xc7, 0x3, 0xf7, 0xde, 0xf9, 0x3d, 0x15, 0x5d, 0xb1, 0x71, 0xb7, - 0xc8, 0xbc, 0xbf, 0xc5, 0xab, 0x7f, 0xb5, 0x4a, 0x4c, 0x57, 0x58, 0x4e, - 0x1e, 0xc6, 0x93, 0x15, 0xa3, 0x97, 0xa3, 0xac, 0xad, 0x85, 0x6f, 0x86, - 0x75, 0x77, 0x7b, 0x76, 0x85, 0x71, 0x8b, 0xa2, 0x1e, 0xfc, 0x1b, 0xfd, - 0x45, 0x23, 0xa, 0x8b, 0xc1, 0xeb, 0xc1, 0xbc, 0x61, 0xa, 0x1, 0x71, - 0xf7, 0x56, 0xe2, 0xcd, 0xf6, 0xc1, 0x93, 0xc2, 0x3, 0x71, 0x16, 0xf7, - 0x56, 0x2a, 0xa, 0x35, 0x6, 0xc8, 0xf7, 0x3, 0x5, 0xf7, 0x19, 0x6, - 0x6b, 0xfb, 0x39, 0x5, 0xf7, 0x97, 0x6, 0xaa, 0xf7, 0x2d, 0x52, 0xa, - 0x78, 0x28, 0x5, 0xfb, 0x2a, 0x6, 0xb1, 0xf7, 0x5c, 0x5, 0xdb, 0x6, - 0x80, 0x52, 0x5, 0xc1, 0x6, 0xab, 0xf7, 0x3b, 0x5, 0x57, 0x60, 0xa, - 0x39, 0x6, 0xb3, 0xf7, 0x5c, 0x5, 0xf7, 0x2b, 0x6, 0x78, 0x26, 0x6a, - 0xa, 0xa9, 0xf7, 0x2f, 0x5, 0xfc, 0x2a, 0x2d, 0xa, 0xe4, 0x6, 0xfb, - 0x99, 0x58, 0xa, 0x57, 0x6, 0xf7, 0x5b, 0xf7, 0x39, 0x15, 0xf7, 0x3e, - 0xf7, 0xb4, 0x52, 0xfb, 0xb4, 0x5, 0xe, 0xfb, 0x2b, 0xc2, 0xe7, 0xbe, - 0xf8, 0x76, 0xbe, 0x1, 0x9c, 0xc5, 0xf7, 0x3, 0xbb, 0xf7, 0x8b, 0xc3, - 0x3, 0xf7, 0x5, 0xfb, 0x13, 0x15, 0x84, 0x90, 0xa3, 0x7a, 0xa7, 0x1b, - 0xb3, 0xc2, 0xa2, 0xcb, 0xab, 0x7c, 0xa2, 0x77, 0x93, 0x1f, 0x8f, 0x88, - 0x5, 0xe7, 0xdc, 0xbe, 0xb5, 0xd3, 0x1f, 0x7b, 0xb7, 0x5, 0x66, 0x4d, - 0x45, 0x5a, 0x44, 0x1b, 0xfb, 0x5, 0x43, 0xe5, 0xf7, 0x9, 0xf7, 0x43, - 0xf7, 0x44, 0xef, 0xeb, 0xcc, 0xc5, 0x6d, 0x60, 0xaa, 0x1f, 0x77, 0x36, - 0x51, 0xa, 0xb8, 0xf7, 0x65, 0x52, 0xa, 0x7e, 0x51, 0x5, 0xb7, 0x49, - 0x60, 0x99, 0x55, 0x1b, 0xfb, 0x54, 0xfb, 0x22, 0xfb, 0x3d, 0xfb, 0x44, - 0x22, 0xd1, 0x30, 0xee, 0x7c, 0x1f, 0x78, 0x42, 0x5, 0x8f, 0x92, 0x94, - 0x8b, 0x92, 0x1b, 0x98, 0x96, 0x83, 0x81, 0x80, 0x85, 0x75, 0x6e, 0x7d, - 0x7e, 0x93, 0x92, 0x81, 0x1f, 0xe, 0x5b, 0xa, 0x1, 0xe4, 0xc2, 0xf7, - 0x52, 0xc3, 0xc6, 0xb8, 0x3, 0x88, 0x16, 0x28, 0xa, 0xf8, 0x9d, 0xf8, - 0xc9, 0x15, 0x9a, 0xa9, 0xfb, 0xc9, 0xf7, 0x24, 0x6f, 0x42, 0x5, 0xe, - 0x5b, 0xa, 0x84, 0xa, 0xe5, 0xc3, 0xf7, 0x55, 0xc4, 0xc7, 0xb9, 0x3, - 0xf7, 0xa0, 0xf8, 0xff, 0x15, 0xf7, 0xd5, 0xf0, 0x78, 0xd4, 0xfb, 0xc9, - 0xfb, 0x24, 0x5, 0xfb, 0x9c, 0xfd, 0x1d, 0x15, 0x28, 0xa, 0xe, 0x5b, - 0xa, 0x1, 0xe4, 0xc2, 0x3, 0xf7, 0x54, 0xf9, 0xd, 0x15, 0xb2, 0x79, - 0xf7, 0x45, 0xf7, 0x7, 0xf7, 0x14, 0xfb, 0x7, 0xb9, 0x9d, 0xfb, 0xb, - 0xf7, 0x2c, 0x5, 0x36, 0x6, 0xfc, 0x11, 0xfd, 0xa5, 0x15, 0x28, 0xa, - 0xe, 0x8b, 0xbe, 0xf7, 0x75, 0x76, 0xf7, 0xca, 0x77, 0xf7, 0x2, 0xf7, - 0x8, 0x1, 0xe4, 0xc2, 0x3, 0xf8, 0x3d, 0xf9, 0x23, 0x15, 0xe2, 0x5c, - 0xa, 0x34, 0x6, 0xfb, 0x46, 0xfb, 0x8, 0x15, 0xe2, 0x6, 0xa5, 0x88, - 0xa, 0x34, 0x6, 0xfb, 0xc1, 0xfd, 0x97, 0x15, 0x28, 0xa, 0xe, 0x8b, - 0xc1, 0xf8, 0x5c, 0xc2, 0x84, 0xa, 0xf7, 0x74, 0xc6, 0x3, 0xaf, 0x16, - 0x2f, 0xa, 0xf7, 0x50, 0xf9, 0x2e, 0x15, 0xf7, 0xb5, 0x26, 0x9e, 0xa9, - 0xfb, 0x94, 0x79, 0xa, 0x8b, 0xc1, 0xf8, 0x5d, 0xc2, 0xf7, 0x77, 0x77, - 0x1, 0xf7, 0x6c, 0xc5, 0x3, 0xf7, 0x88, 0xf9, 0x0, 0x15, 0xf7, 0xdb, - 0xef, 0x78, 0xd4, 0xfb, 0xcf, 0xfb, 0x23, 0x5, 0xfb, 0x64, 0xfd, 0x1e, - 0x15, 0xf8, 0x2d, 0x2a, 0xa, 0xfb, 0x43, 0x6, 0xeb, 0xf8, 0x5d, 0x5, - 0xf7, 0x40, 0x46, 0xa, 0xfc, 0x29, 0x6, 0x7e, 0x54, 0x5, 0xf7, 0x42, - 0x6, 0x2d, 0x7a, 0xa, 0xfb, 0x44, 0x6, 0xe, 0x8b, 0xc0, 0xf8, 0x5d, - 0xc2, 0x1, 0xf7, 0x74, 0xc6, 0x3, 0xf7, 0x3f, 0xf9, 0xb, 0x15, 0xb2, - 0x7a, 0xf7, 0x47, 0xf7, 0x8, 0xf7, 0x14, 0xfb, 0x8, 0xb9, 0x9c, 0xfb, - 0xd, 0xf7, 0x2e, 0x5, 0x36, 0x6, 0xfb, 0xd5, 0xfd, 0xa5, 0x15, 0x2f, - 0xa, 0xe, 0x8b, 0xbe, 0xf8, 0x5f, 0xc2, 0xf7, 0x62, 0x77, 0x1, 0xf7, - 0x74, 0xc6, 0x3, 0xf8, 0x35, 0xf9, 0x22, 0x15, 0xe7, 0x6, 0xa5, 0xf7, - 0x9, 0x5, 0x31, 0x6, 0xfb, 0x4e, 0xfb, 0x9, 0x15, 0xe5, 0x6, 0xa6, - 0xf7, 0x9, 0x5, 0x31, 0x6, 0xfb, 0x8e, 0xfd, 0x97, 0x15, 0x2f, 0xa, - 0xe, 0x8b, 0xc1, 0xf7, 0x57, 0xbf, 0xf7, 0x63, 0xc1, 0x1, 0xf8, 0xad, - 0xcb, 0x3, 0x8a, 0x16, 0xf7, 0x6f, 0x6, 0xf7, 0x56, 0xf7, 0x49, 0xe1, - 0xf7, 0xaf, 0xf7, 0x22, 0x28, 0xbe, 0xfb, 0x1a, 0x1f, 0xfb, 0x8c, 0x2d, - 0xa, 0xda, 0x6, 0x63, 0xfb, 0x63, 0x5, 0x3f, 0x6, 0x7f, 0x57, 0x5, - 0xd8, 0x6, 0x64, 0xfb, 0x57, 0x89, 0xa, 0xf7, 0x1b, 0x16, 0xb1, 0xf7, - 0x57, 0x5, 0xf7, 0x55, 0x6, 0x96, 0xbf, 0x5, 0xfb, 0x54, 0x6, 0xb4, - 0xf7, 0x63, 0x5, 0xf0, 0x6, 0xf7, 0x2a, 0xb5, 0x60, 0xfb, 0x16, 0xfb, - 0x1a, 0x21, 0xfb, 0x27, 0xfb, 0x3a, 0x1f, 0xe, 0x7e, 0xbf, 0xf8, 0x4e, - 0xbf, 0xdf, 0xbc, 0x9b, 0xbd, 0x1, 0x61, 0x7e, 0x15, 0xf7, 0x8f, 0x6, - 0x96, 0xbf, 0x5, 0xfb, 0x3, 0x6, 0xe2, 0xf8, 0x37, 0xf7, 0x5a, 0xfc, - 0x6b, 0x5, 0xd7, 0x6, 0xf1, 0xf8, 0x82, 0x5, 0xdb, 0x6, 0x96, 0xbf, - 0x5, 0xfb, 0x8b, 0x82, 0xa, 0xf7, 0x2, 0x6, 0x34, 0xfc, 0x3b, 0xfb, - 0x58, 0xf8, 0x6f, 0x5, 0xfb, 0x34, 0x6, 0x7f, 0x57, 0x5, 0xde, 0x6, - 0x30, 0xfc, 0x4e, 0x7b, 0xa, 0xf7, 0x6c, 0xf8, 0xe5, 0x15, 0xbe, 0x80, - 0x5, 0x9f, 0x97, 0xa8, 0xb4, 0xbe, 0x1b, 0xac, 0x9e, 0x78, 0x7a, 0xa1, - 0x1f, 0x7c, 0x9e, 0x9f, 0x7d, 0xac, 0x1b, 0xd2, 0xbb, 0xcb, 0xb2, 0x9f, - 0x1f, 0x58, 0x94, 0x5, 0x73, 0x7d, 0x6d, 0x64, 0x64, 0x1b, 0x70, 0x7c, - 0x99, 0x9a, 0x7b, 0x1f, 0x9d, 0x78, 0x76, 0x9e, 0x5e, 0x1b, 0x50, 0x4e, - 0x5d, 0x55, 0x6c, 0x1f, 0xe, 0x79, 0xc1, 0xf8, 0x7b, 0xc1, 0xf7, 0x6c, - 0x7d, 0xa, 0xf7, 0x82, 0xf9, 0x64, 0x15, 0xf7, 0xa0, 0x27, 0x9b, 0xa9, - 0xfb, 0x7f, 0xf7, 0x23, 0x5, 0xfb, 0x91, 0xfc, 0xd9, 0x25, 0xa, 0x79, - 0xc1, 0xf8, 0x7a, 0xc1, 0x1, 0xaa, 0xc2, 0xf8, 0x45, 0xc3, 0x3, 0xf7, - 0x97, 0xf8, 0xff, 0x15, 0xf7, 0xbb, 0xef, 0x78, 0xd5, 0xfb, 0xb5, 0xfb, - 0x25, 0x5, 0xfb, 0x68, 0xfc, 0x48, 0x25, 0xa, 0x79, 0xc1, 0xf8, 0x7b, - 0xc1, 0xf7, 0x5a, 0x7d, 0xa, 0xf7, 0x4b, 0xf9, 0x2, 0x15, 0xb1, 0x7a, - 0xf7, 0x40, 0xf7, 0x7, 0xf7, 0xf, 0xfb, 0x7, 0xb6, 0x9c, 0xfb, 0x8, - 0xf7, 0x2d, 0x89, 0xa, 0xfb, 0xdd, 0xfc, 0xc7, 0x25, 0xa, 0x79, 0xbf, - 0xf8, 0x7d, 0xc1, 0xd1, 0xbc, 0x9c, 0xbc, 0x1, 0x9e, 0xc6, 0xf8, 0x36, - 0xc1, 0x3, 0xf7, 0x2e, 0xf9, 0x2a, 0x15, 0xbd, 0x80, 0x5, 0x9f, 0x97, - 0xa7, 0xb5, 0xbb, 0x1b, 0xae, 0x9c, 0x7a, 0x7a, 0x9d, 0x1f, 0x7b, 0x9c, - 0x9e, 0x7b, 0xb0, 0x1b, 0xd1, 0xbb, 0xca, 0xb2, 0x9e, 0x1f, 0x58, 0x94, - 0x5, 0x73, 0x7e, 0x6b, 0x65, 0x66, 0x1b, 0x73, 0x7e, 0x97, 0x99, 0x7d, - 0x1f, 0x9d, 0x79, 0x76, 0xa1, 0x5b, 0x1b, 0x52, 0x4f, 0x5d, 0x55, 0x6d, - 0x1f, 0xfb, 0xc, 0xfc, 0x56, 0x25, 0xa, 0x79, 0xbe, 0xf8, 0x7e, 0xc1, - 0xce, 0xf7, 0x9, 0x1, 0xad, 0xc2, 0xf7, 0x40, 0xdf, 0xc9, 0xde, 0x9e, - 0xc3, 0x3, 0xf8, 0x2b, 0xf9, 0x18, 0x15, 0xde, 0x6, 0xa5, 0xf7, 0x9, - 0x5, 0x37, 0x6, 0xfb, 0x3f, 0xfb, 0x9, 0x15, 0xdf, 0x6, 0xa4, 0xf7, - 0x9, 0x7b, 0xa, 0xfb, 0x91, 0xfc, 0xb9, 0x25, 0xa, 0xcb, 0x76, 0xf8, - 0x3f, 0x77, 0x1, 0xbb, 0xe4, 0x15, 0xb9, 0x5d, 0xf7, 0x5b, 0xf7, 0x3d, - 0xf7, 0x1e, 0xfb, 0x3d, 0xbb, 0xb2, 0xfb, 0x20, 0xf7, 0x3e, 0xf7, 0x69, - 0xf7, 0x41, 0x63, 0xb8, 0xfb, 0x67, 0xfb, 0x41, 0xfb, 0x1f, 0xf7, 0x40, - 0x5d, 0x64, 0xf7, 0x1e, 0xfb, 0x3d, 0x5, 0xe, 0x82, 0xbf, 0x5d, 0x76, - 0xf8, 0xae, 0xc0, 0x12, 0x13, 0x60, 0xf8, 0xbd, 0xf7, 0xab, 0x15, 0x95, - 0xbe, 0x8d, 0xde, 0x67, 0xca, 0xc3, 0xc6, 0x18, 0x68, 0xab, 0x59, 0x57, - 0x5, 0xaa, 0x6c, 0x5f, 0xa0, 0x4a, 0x1b, 0xfb, 0x3f, 0xfb, 0x7, 0xfb, - 0x2b, 0xfb, 0x1d, 0x71, 0x1f, 0x7b, 0x3b, 0x96, 0x41, 0xae, 0x58, 0x4c, - 0x48, 0x18, 0xaf, 0x6c, 0xc6, 0xc9, 0x5, 0x13, 0xa0, 0x6d, 0xad, 0xb9, - 0x7a, 0xc4, 0x1b, 0xf7, 0x31, 0xf7, 0xa, 0xf7, 0x16, 0xf7, 0x32, 0xaa, - 0x1f, 0x55, 0x89, 0x15, 0xfb, 0xe, 0x73, 0x30, 0xfb, 0x4, 0xfb, 0x13, - 0x1b, 0x5f, 0x67, 0x9a, 0xa3, 0x71, 0x1f, 0xf7, 0xe3, 0xf7, 0xf2, 0xa2, - 0x57, 0x88, 0x4c, 0x84, 0x63, 0x19, 0x63, 0xf7, 0x57, 0x15, 0xfb, 0xe6, - 0xfb, 0xf6, 0x72, 0xb6, 0x84, 0xc3, 0x96, 0xc7, 0x19, 0xe1, 0x9d, 0xdb, - 0xf7, 0x2b, 0xf7, 0x29, 0x1b, 0xbf, 0xaf, 0x7b, 0x71, 0xa3, 0x1f, 0xe, - 0x59, 0xa, 0x96, 0xf8, 0x91, 0x26, 0xa, 0xf7, 0x3c, 0xf7, 0x2f, 0x15, - 0xf7, 0x99, 0x26, 0x9c, 0xa9, 0xfb, 0x7b, 0x79, 0xa, 0x59, 0xa, 0xf7, - 0x6c, 0xf8, 0xfa, 0x15, 0xf7, 0xb3, 0xf7, 0x0, 0x7a, 0xd2, 0xfb, 0xb2, - 0xfb, 0x25, 0x5, 0xfb, 0x51, 0xfb, 0x1f, 0x26, 0xa, 0xe, 0x70, 0xa, - 0xf7, 0x4d, 0xc2, 0x50, 0xa, 0xf7, 0x42, 0xf9, 0xe, 0x15, 0xf7, 0x3d, - 0xf7, 0x8, 0xf7, 0xa, 0xfb, 0x8, 0xb5, 0x9c, 0xfb, 0x4, 0xf7, 0x2e, - 0x5, 0x3c, 0x6, 0xfb, 0x43, 0xfb, 0x2e, 0x5, 0xfb, 0x12, 0xfb, 0x22, - 0x26, 0xa, 0xe, 0x70, 0xa, 0x50, 0xa, 0xf7, 0xf8, 0xf9, 0x21, 0x15, - 0xdc, 0x6, 0xa4, 0xf7, 0xa, 0x6b, 0xa, 0xfb, 0x3b, 0xfb, 0xa, 0x85, - 0xa, 0xa3, 0xf7, 0xa, 0x6b, 0xa, 0xfb, 0x76, 0xfb, 0x9a, 0x26, 0xa, - 0xe, 0x8b, 0xc1, 0xf8, 0x5d, 0xc1, 0x84, 0xa, 0xf7, 0x47, 0xc3, 0x3, - 0xb4, 0x16, 0x31, 0xa, 0xf7, 0x34, 0xf8, 0xc7, 0x15, 0xf7, 0xc3, 0xf1, - 0x79, 0xd5, 0xfb, 0xc1, 0xfb, 0x24, 0x5, 0xe, 0x8b, 0xc1, 0xd1, 0x61, - 0xa, 0xd6, 0xc1, 0x1, 0xf8, 0x92, 0xc0, 0x3, 0xaf, 0x16, 0xf7, 0xba, - 0x4d, 0xa, 0xfb, 0x21, 0x6, 0x98, 0xd1, 0x5, 0xf7, 0x15, 0x6, 0xf7, - 0x1, 0xf7, 0x5, 0xb5, 0xf7, 0x32, 0xd3, 0x46, 0xb0, 0x37, 0x1f, 0xfb, - 0x24, 0x6, 0x99, 0xd6, 0x5, 0xf3, 0x76, 0xa, 0xfb, 0x95, 0x5f, 0xa, - 0xf4, 0x6, 0x3a, 0x58, 0xa, 0x23, 0x6, 0xf7, 0x44, 0xf7, 0x10, 0x15, - 0xae, 0xf7, 0x5d, 0x5, 0xf7, 0x1a, 0x6, 0xc0, 0xcd, 0x7d, 0x5a, 0x28, - 0x41, 0x64, 0x38, 0x1f, 0xe, 0x7c, 0xc2, 0x60, 0xc3, 0xf7, 0xda, 0xc3, - 0xf7, 0x1f, 0xc2, 0x12, 0xf7, 0xc4, 0xc0, 0xf7, 0x34, 0xc1, 0x5f, 0xc4, - 0x13, 0x7c, 0x9a, 0x88, 0x15, 0xf7, 0x1c, 0x6, 0xe8, 0xf8, 0x76, 0x5, - 0xd1, 0x99, 0xa5, 0xa4, 0xf2, 0x1b, 0xd8, 0xc0, 0x8a, 0x54, 0x1f, 0x28, - 0xfb, 0x69, 0xb9, 0xfb, 0x23, 0x1a, 0x41, 0xf7, 0x17, 0x73, 0xad, 0x7c, - 0x1e, 0x13, 0xba, 0xb8, 0x76, 0x98, 0x74, 0x74, 0x1a, 0x43, 0xfb, 0x26, - 0x6d, 0x6d, 0x59, 0x5f, 0xa4, 0xab, 0x69, 0x1e, 0x6b, 0x53, 0x5, 0x6d, - 0xb4, 0xc0, 0x71, 0xc4, 0x1b, 0xde, 0xf7, 0x33, 0xb3, 0xf7, 0x1a, 0xb9, - 0x5c, 0xac, 0x5c, 0x9f, 0x1f, 0x53, 0xa5, 0x3e, 0x95, 0xae, 0x1a, 0x13, - 0x7c, 0xe2, 0xf7, 0x6a, 0x5d, 0xf7, 0x25, 0x1a, 0xe8, 0x48, 0xa0, 0xfb, - 0x9, 0x2b, 0x35, 0x6f, 0xfb, 0x1f, 0x79, 0x1e, 0x85, 0x70, 0x7b, 0xa, - 0x81, 0x53, 0x5, 0xde, 0x6, 0x4c, 0xfb, 0xda, 0x6b, 0xa, 0xe, 0x4b, - 0xa, 0xf7, 0x80, 0xf8, 0xe7, 0x15, 0xf7, 0xa5, 0x24, 0x9d, 0xaa, 0xfb, - 0x85, 0xf7, 0x29, 0x5, 0xf4, 0xfd, 0x37, 0x21, 0xa, 0x3b, 0xa, 0xf7, - 0x61, 0x77, 0x4a, 0xa, 0x13, 0x7e, 0xf7, 0x3c, 0xf8, 0x85, 0x15, 0xb1, - 0x79, 0xf7, 0x43, 0xf7, 0xb, 0xf7, 0x10, 0xfb, 0xb, 0xba, 0x9d, 0xfb, - 0xc, 0xf7, 0x31, 0x5, 0x3a, 0x6, 0xb3, 0xfd, 0x25, 0x21, 0xa, 0x4b, - 0xa, 0xf8, 0xa0, 0xf8, 0xe7, 0x15, 0x72, 0xd8, 0xfb, 0x9e, 0xfb, 0x29, - 0x9d, 0x6c, 0x5, 0xf7, 0x20, 0xfc, 0x83, 0x21, 0xa, 0x3b, 0xa, 0xc6, - 0xbd, 0x9e, 0xbc, 0x90, 0x76, 0x4a, 0xa, 0x13, 0xbd, 0x80, 0xf7, 0x21, - 0xf8, 0x9e, 0x15, 0xbd, 0x81, 0x5, 0x9a, 0x92, 0xba, 0xbd, 0xb0, 0x1b, - 0xb1, 0x9e, 0x71, 0x77, 0xa5, 0x1f, 0x7e, 0x9b, 0x9e, 0x81, 0xa7, 0x1b, - 0x13, 0xbb, 0x80, 0xcc, 0xbe, 0xba, 0xc2, 0xab, 0x1f, 0x8a, 0x6, 0x5a, - 0x94, 0x5, 0x73, 0x7c, 0x68, 0x66, 0x65, 0x1b, 0x72, 0x7d, 0x94, 0x97, - 0x7e, 0x1f, 0x13, 0x7d, 0x80, 0x9f, 0x75, 0x7a, 0xa6, 0x55, 0x1b, 0x56, - 0x4c, 0x64, 0x4a, 0x67, 0x1f, 0xf7, 0x8e, 0xfc, 0xa1, 0x22, 0xa, 0x13, - 0xbd, 0x80, 0x3a, 0xa, 0x13, 0x7d, 0x80, 0x98, 0xce, 0x15, 0x13, 0xbd, - 0x80, 0x2b, 0xa, 0x3b, 0xa, 0xd1, 0xf7, 0x8, 0x4a, 0xa, 0x13, 0x7e, - 0xf8, 0x1f, 0xf8, 0x9b, 0x15, 0xdf, 0x5c, 0xa, 0x36, 0x6, 0xfb, 0x42, - 0xfb, 0x8, 0x15, 0xe0, 0x5c, 0xa, 0x36, 0x6, 0xf7, 0xd, 0xfd, 0x12, - 0x21, 0xa, 0x3b, 0xa, 0xb1, 0xf7, 0x48, 0x6a, 0x76, 0x4a, 0xa, 0x13, - 0xbb, 0xf7, 0xb2, 0xf8, 0xc1, 0x15, 0x63, 0xae, 0x6d, 0xba, 0xc6, 0xc7, - 0xbc, 0xc5, 0xb5, 0x6a, 0xaa, 0x5b, 0x4d, 0x51, 0x59, 0x4f, 0x1e, 0xc9, - 0x95, 0x15, 0x13, 0x77, 0xa4, 0xa1, 0xa0, 0xa3, 0x9c, 0x9a, 0x81, 0x7d, - 0x72, 0x74, 0x75, 0x73, 0x7b, 0x7c, 0x97, 0x98, 0x1e, 0xb6, 0xfc, 0xce, - 0x22, 0xa, 0x13, 0xbb, 0x3a, 0xa, 0x13, 0x7b, 0x98, 0xce, 0x15, 0x13, - 0xbb, 0x2b, 0xa, 0x7c, 0xc1, 0xf7, 0x39, 0xc2, 0xf7, 0x13, 0xc2, 0x1, - 0x93, 0xc6, 0x3, 0xf7, 0xa5, 0xd7, 0x15, 0x58, 0x93, 0xb7, 0x63, 0xda, - 0x1b, 0xb8, 0xbb, 0x96, 0x96, 0xb3, 0x1f, 0x8a, 0xc1, 0x5, 0x82, 0x6a, - 0x62, 0x7e, 0x67, 0x1b, 0x3e, 0x6c, 0xbc, 0xcc, 0x8d, 0x1f, 0x97, 0x8f, - 0x98, 0x8c, 0x98, 0x1e, 0x8c, 0x98, 0x5, 0xf7, 0x91, 0x6, 0x93, 0xad, - 0x90, 0xa4, 0xaf, 0x1a, 0xd4, 0x6f, 0xd0, 0x33, 0x54, 0x65, 0x71, 0x62, - 0x68, 0x1e, 0x99, 0x88, 0x88, 0xc0, 0x2b, 0x1b, 0x55, 0x5f, 0x7e, 0x7b, - 0x5c, 0x1f, 0x56, 0x7, 0x98, 0xb0, 0xb6, 0x99, 0xb4, 0x1b, 0xbf, 0x9c, - 0x78, 0x6a, 0x8c, 0x1f, 0x80, 0x8b, 0x73, 0x87, 0x7c, 0x1e, 0x85, 0x72, - 0x5, 0x8f, 0x76, 0x75, 0x83, 0x76, 0x1b, 0x2c, 0x8a, 0xfb, 0x7, 0x59, - 0xfb, 0xe, 0x1a, 0x48, 0xbe, 0x6d, 0xc1, 0xa5, 0xe0, 0x90, 0xe1, 0xbc, - 0x1e, 0xce, 0xf7, 0x4b, 0x15, 0xcb, 0x9b, 0xbe, 0xca, 0xc9, 0x1b, 0xd5, - 0x87, 0x3e, 0x59, 0x87, 0x1f, 0xfb, 0xad, 0xfb, 0x18, 0x15, 0x75, 0x7b, - 0x58, 0x49, 0x4b, 0x1b, 0x68, 0x76, 0xa0, 0xaf, 0xd7, 0xd7, 0xa7, 0xc5, - 0x8c, 0x1f, 0xa7, 0xaa, 0x92, 0x87, 0x96, 0x1f, 0xe, 0xfb, 0x1c, 0x76, - 0xf7, 0x3a, 0xbe, 0xf7, 0xdc, 0xc0, 0x8a, 0x77, 0x12, 0xb9, 0xc5, 0x13, - 0xe8, 0xf7, 0x26, 0xfb, 0x1e, 0x15, 0x7c, 0xa1, 0x9f, 0x87, 0x9d, 0x1b, - 0xbe, 0xb3, 0xaa, 0xbf, 0xa3, 0x78, 0xa9, 0x7d, 0x90, 0x1f, 0x90, 0xa3, - 0xe1, 0x8f, 0xd3, 0xa9, 0xcb, 0xb3, 0x19, 0x80, 0xbf, 0x5, 0x76, 0x6c, - 0x31, 0x55, 0x38, 0x1b, 0xfb, 0x1c, 0x67, 0xda, 0xc8, 0xe3, 0xf2, 0xef, - 0xf7, 0x10, 0xc5, 0xbe, 0x7f, 0x69, 0xb0, 0x1f, 0x7b, 0x40, 0x51, 0xa, - 0x13, 0xd8, 0xb0, 0xf7, 0x41, 0x71, 0xa, 0x82, 0x60, 0x5, 0x13, 0xe8, - 0xa8, 0x62, 0x5d, 0x9a, 0x50, 0x1b, 0xfb, 0x58, 0x26, 0xfb, 0x1b, 0xfb, - 0x10, 0x26, 0xd7, 0x4d, 0xee, 0x81, 0x1f, 0x77, 0x44, 0x5, 0x8d, 0x90, - 0x92, 0x8c, 0x93, 0x1b, 0x98, 0x98, 0x7e, 0x80, 0x77, 0x79, 0x7d, 0x77, - 0x7f, 0x77, 0x91, 0x96, 0x82, 0x1f, 0xe, 0x7c, 0xc2, 0xf7, 0x34, 0xc4, - 0x7f, 0xa, 0xc5, 0x3, 0xf7, 0x7d, 0xf8, 0xe9, 0x15, 0xf7, 0xa8, 0x25, - 0x9d, 0xa9, 0xfb, 0x88, 0xf7, 0x27, 0x5, 0xfb, 0x39, 0xfc, 0x6b, 0x27, - 0xa, 0x7c, 0xc2, 0xf7, 0x33, 0xc5, 0x7f, 0xa, 0xc7, 0x3, 0xf7, 0x78, - 0xf8, 0x82, 0x15, 0xf7, 0xd0, 0xf2, 0x77, 0xd6, 0xfb, 0xc2, 0xfb, 0x26, - 0x5, 0x23, 0xfb, 0xd9, 0x27, 0xa, 0x7c, 0xc2, 0xf7, 0x34, 0xc4, 0xf7, - 0x2c, 0xc4, 0xf7, 0x18, 0xc3, 0x1, 0xc1, 0xc5, 0xf8, 0xb, 0xc6, 0x3, - 0xf7, 0x3b, 0xf8, 0x86, 0x15, 0xb1, 0x79, 0xf7, 0x41, 0xf7, 0xa, 0xf7, - 0xf, 0xfb, 0xa, 0xb8, 0x9d, 0xfb, 0x9, 0xf7, 0x30, 0x89, 0xa, 0xfb, - 0x7b, 0xfc, 0x59, 0x27, 0xa, 0x7c, 0xbd, 0xf7, 0x38, 0xc5, 0xf7, 0x32, - 0x76, 0xf7, 0x1c, 0xf7, 0x7, 0x1, 0xc1, 0xc5, 0xf7, 0x16, 0xe3, 0xcc, - 0xe2, 0x90, 0xc6, 0x3, 0xf8, 0x1f, 0xf8, 0xa6, 0x15, 0xe2, 0x6e, 0xa, - 0x33, 0x6, 0xfb, 0x45, 0xfb, 0x7, 0x15, 0xe3, 0x6e, 0xa, 0x33, 0x6, - 0xfb, 0x29, 0xfc, 0x50, 0x27, 0xa, 0x6f, 0xa, 0xf7, 0x7f, 0x77, 0x1, - 0xf7, 0x82, 0xf8, 0xe8, 0x15, 0xf7, 0x93, 0x25, 0x9c, 0xab, 0xfb, 0x75, - 0xf7, 0x26, 0x5, 0xfb, 0x61, 0xfd, 0x34, 0x33, 0xa, 0x6f, 0xa, 0xf7, - 0x7f, 0x77, 0x1, 0xdb, 0x16, 0xf8, 0x13, 0x46, 0xa, 0xfb, 0x3a, 0x6, - 0xd2, 0xf8, 0x12, 0x5, 0xfb, 0x4f, 0x67, 0xa, 0xf7, 0x1b, 0x6, 0x4e, - 0xfb, 0xdb, 0x5, 0xfb, 0x3b, 0x6, 0xf7, 0x2f, 0xf8, 0x4b, 0x15, 0xf7, - 0xa7, 0xf1, 0x70, 0xd7, 0xfb, 0x9d, 0xfb, 0x26, 0x5, 0xe, 0x6f, 0xa, - 0xf7, 0x6d, 0x77, 0x1, 0xf7, 0x36, 0xf8, 0x86, 0x15, 0xaf, 0x79, 0xf7, - 0x3c, 0xf7, 0xa, 0xf7, 0x9, 0xfb, 0xa, 0xb8, 0x9d, 0xfb, 0x5, 0xf7, - 0x30, 0x5, 0x3e, 0x6, 0xfb, 0x96, 0xfd, 0x22, 0x33, 0xa, 0x6f, 0xa, - 0xde, 0xf7, 0x7, 0x1, 0xf8, 0x2c, 0xf8, 0x9c, 0x15, 0xe4, 0x6e, 0xa, - 0x32, 0x6, 0xfb, 0x4b, 0xfb, 0x7, 0x15, 0xe6, 0x6e, 0xa, 0x31, 0x6, - 0xfb, 0x58, 0xfd, 0xf, 0x33, 0xa, 0x7c, 0xbe, 0xf7, 0xc6, 0xbf, 0xf7, - 0x7f, 0x77, 0x1, 0xaa, 0xc6, 0xf8, 0x2f, 0xce, 0x3, 0xf7, 0x9b, 0xf8, - 0x50, 0x15, 0xf7, 0x13, 0xc6, 0xd2, 0x5d, 0xad, 0x28, 0x8e, 0x7d, 0x19, - 0xaa, 0x69, 0x4c, 0x9e, 0x53, 0x1b, 0xfb, 0x66, 0x23, 0xfb, 0x11, 0xfb, - 0x11, 0x22, 0xe5, 0x55, 0xf7, 0x15, 0xf7, 0x6e, 0xef, 0xf7, 0x26, 0xf7, - 0x35, 0xd9, 0x6c, 0xef, 0x37, 0xcb, 0x1f, 0xf2, 0xbd, 0x78, 0xb8, 0xfb, - 0x18, 0x4b, 0x66, 0x9d, 0x62, 0xa2, 0x5d, 0x90, 0x19, 0x5e, 0x5d, 0xac, - 0x88, 0xaf, 0x79, 0xa9, 0x7f, 0x19, 0x31, 0x5f, 0x5, 0xfb, 0x2f, 0xfb, - 0xe7, 0x15, 0xf7, 0x7, 0xf7, 0x1, 0xd9, 0xf7, 0x11, 0x1e, 0x92, 0x6, - 0xf7, 0x18, 0xb1, 0x5c, 0x52, 0x22, 0xfb, 0xa, 0x2a, 0xfb, 0xe, 0x27, - 0x44, 0xb6, 0xd1, 0x1f, 0xe, 0x8b, 0xbf, 0xf7, 0xc5, 0xc0, 0xdb, 0xbb, - 0x9b, 0xbf, 0x1, 0xea, 0xc3, 0xf7, 0xa9, 0xc3, 0x3, 0xf7, 0x45, 0xf8, - 0x96, 0x15, 0xbb, 0x7d, 0x5, 0x9a, 0x92, 0xb9, 0xbc, 0xaf, 0x1b, 0xaa, - 0x9b, 0x79, 0x7a, 0x9d, 0x1f, 0x7c, 0x9b, 0x9e, 0x7d, 0xae, 0x1b, 0xcb, - 0xc6, 0xb9, 0xc2, 0xa9, 0x1f, 0x59, 0x97, 0x5, 0x73, 0x7d, 0x5e, 0x62, - 0x65, 0x1b, 0x73, 0x7e, 0x9a, 0x9a, 0x7c, 0x1f, 0x9d, 0x7a, 0x78, 0x9f, - 0x62, 0x1b, 0x56, 0x4e, 0x65, 0x4b, 0x68, 0x1f, 0xfb, 0x46, 0xfc, 0x96, - 0x15, 0xf7, 0x76, 0x6, 0x97, 0xbf, 0x5, 0x35, 0x6, 0xbb, 0xf7, 0x7c, - 0x5, 0xb6, 0xc0, 0xda, 0xb7, 0xca, 0x1b, 0xb1, 0xbc, 0x82, 0x5f, 0x84, - 0x8b, 0x82, 0x89, 0x82, 0x1f, 0x58, 0xfb, 0x85, 0x5, 0x37, 0x82, 0xa, - 0xf7, 0x73, 0x6, 0x97, 0xbf, 0x5, 0x37, 0x6, 0xbd, 0xf7, 0x86, 0x5, - 0x8e, 0x98, 0x8d, 0x97, 0x96, 0x1a, 0xc5, 0x8c, 0x67, 0xae, 0x38, 0x1b, - 0x44, 0x3e, 0x65, 0x5f, 0x4d, 0x1f, 0x9a, 0xd0, 0x5, 0xfb, 0x21, 0x6, - 0x80, 0x56, 0x5, 0xe0, 0x6, 0x4b, 0xfb, 0xc5, 0x5, 0x36, 0x6, 0xe, - 0x5a, 0xa, 0xf7, 0x7d, 0xf8, 0xe7, 0x15, 0xf7, 0x93, 0x23, 0x9a, 0xaa, - 0xfb, 0x73, 0xf7, 0x2a, 0x5, 0xfb, 0x73, 0xfc, 0x90, 0x29, 0xa, 0xe, - 0x5a, 0xa, 0xc4, 0xf7, 0x38, 0x29, 0xa, 0xf7, 0x15, 0xf7, 0xcc, 0x15, - 0xf7, 0xba, 0xea, 0x7b, 0xe1, 0xfb, 0xb9, 0xfb, 0x2a, 0x5, 0xe, 0x5d, - 0xa, 0xf7, 0x62, 0x77, 0x49, 0xa, 0xf7, 0x43, 0xf8, 0x85, 0x15, 0xae, - 0x79, 0xf7, 0x38, 0xf7, 0xb, 0xf7, 0x8, 0xfb, 0xb, 0xb7, 0x9d, 0xfb, - 0x4, 0xf7, 0x31, 0x5, 0x3f, 0x6, 0xfb, 0xb5, 0xfc, 0x7e, 0x29, 0xa, - 0xe, 0x5d, 0xa, 0xc9, 0xbd, 0x9c, 0xbc, 0x49, 0xa, 0xf7, 0x2c, 0xf8, - 0xa1, 0x15, 0xbb, 0x80, 0x5, 0x9a, 0x91, 0xb6, 0xbb, 0xaf, 0x1b, 0xa3, - 0x9c, 0x7c, 0x7b, 0x9d, 0x1f, 0x7a, 0x9f, 0x9f, 0x78, 0xaa, 0x1b, 0xc8, - 0xc5, 0xbb, 0xc2, 0xa8, 0x1f, 0x5b, 0x94, 0x5, 0x73, 0x7d, 0x63, 0x65, - 0x67, 0x1b, 0x75, 0x7b, 0x99, 0x98, 0x7c, 0x1f, 0x9e, 0x75, 0x76, 0x9f, - 0x69, 0x1b, 0x59, 0x50, 0x67, 0x4a, 0x69, 0x1f, 0x2c, 0xfb, 0xfd, 0x29, - 0xa, 0xe, 0x5d, 0xa, 0xd3, 0xf7, 0x7, 0x49, 0xa, 0xf8, 0x11, 0xf8, - 0x9c, 0x15, 0xda, 0x6, 0xa3, 0xf7, 0x7, 0x89, 0xa, 0xfb, 0x38, 0xfb, - 0x7, 0x15, 0xdc, 0x6, 0xa2, 0xf7, 0x7, 0x5, 0x3a, 0x6, 0xfb, 0x62, - 0xfc, 0x6b, 0x29, 0xa, 0xe, 0xc6, 0x76, 0xf7, 0x55, 0xc6, 0xf7, 0x45, - 0x77, 0x1, 0xf7, 0xad, 0xf8, 0x2e, 0x6c, 0xa, 0x9f, 0x75, 0x71, 0x6f, - 0x70, 0x6d, 0x1e, 0xfb, 0x5c, 0xfb, 0x47, 0x15, 0xf8, 0x3e, 0x6, 0x96, - 0xc6, 0x5, 0xfc, 0x3e, 0x6, 0xf7, 0x1b, 0xfb, 0x64, 0x6c, 0xa, 0x9d, - 0x75, 0x71, 0x6f, 0x72, 0x6d, 0x1e, 0xe, 0x7f, 0xc3, 0x63, 0x76, 0xf8, - 0x2e, 0xc2, 0x8e, 0x77, 0x12, 0x13, 0x60, 0xa3, 0xa3, 0x15, 0xa7, 0x62, - 0xcb, 0xbe, 0x5, 0x13, 0x90, 0x69, 0xb1, 0xc0, 0x7f, 0xbd, 0x1b, 0xf7, - 0x14, 0xf7, 0xf, 0xdd, 0xf7, 0x29, 0xa6, 0x1f, 0x95, 0xbf, 0x86, 0xbf, - 0x72, 0xb1, 0xc8, 0xbc, 0x18, 0x6f, 0xb4, 0x4c, 0x58, 0x5, 0x13, 0xa0, - 0xac, 0x65, 0x5a, 0x9a, 0x53, 0x1b, 0xfb, 0x2d, 0x21, 0x22, 0xfb, 0x11, - 0x73, 0x1f, 0x82, 0x55, 0x91, 0x54, 0xa6, 0x65, 0x8, 0xdb, 0x8d, 0x15, - 0xf7, 0xc6, 0xf7, 0x8d, 0x9c, 0x6e, 0x8f, 0x66, 0x83, 0x65, 0x19, 0x7e, - 0x5d, 0x5, 0x68, 0x7d, 0x52, 0x2e, 0xfb, 0x18, 0x1b, 0x65, 0x66, 0x93, - 0xa0, 0x6f, 0x1f, 0x69, 0xb0, 0x15, 0x78, 0xa7, 0x86, 0xb3, 0x92, 0xb3, - 0x8, 0xf6, 0x9f, 0xea, 0xcf, 0xf3, 0x1b, 0xaa, 0xb6, 0x84, 0x72, 0xab, - 0x1f, 0xe, 0x4e, 0xa, 0xf7, 0x80, 0x77, 0x12, 0xe8, 0xc6, 0x13, 0xb8, - 0xf7, 0x75, 0xf8, 0xea, 0x15, 0xf7, 0x9c, 0x21, 0x9b, 0xad, 0xfb, 0x7c, - 0xf7, 0x26, 0x5, 0xfb, 0x65, 0xfb, 0xb8, 0x24, 0xa, 0x4e, 0xa, 0xf7, - 0x80, 0x77, 0x12, 0xdd, 0xc6, 0x13, 0xb8, 0xf7, 0x77, 0xf8, 0x81, 0x15, - 0xf7, 0xd4, 0xf3, 0x77, 0xd6, 0xfb, 0xc7, 0xfb, 0x20, 0x5, 0xfb, 0x3b, - 0xfb, 0x2c, 0x24, 0xa, 0x4e, 0xa, 0xf7, 0x82, 0x77, 0x12, 0xe8, 0xc6, - 0x13, 0xb8, 0xf7, 0x39, 0xf8, 0x98, 0x15, 0xaf, 0x7a, 0xf7, 0x3d, 0xf7, - 0xb, 0xf7, 0xc, 0xfb, 0xb, 0xb8, 0x9c, 0xfb, 0x7, 0xf7, 0x32, 0x5, - 0x3d, 0x6, 0xfb, 0xaa, 0xfb, 0xba, 0x24, 0xa, 0x4e, 0xa, 0xe8, 0xf7, - 0x8, 0x12, 0xe8, 0xc6, 0x13, 0xb8, 0xf8, 0x10, 0xf8, 0xa5, 0x15, 0xdc, - 0x6, 0xa3, 0xf7, 0x8, 0x6b, 0xa, 0xfb, 0x3d, 0xfb, 0x8, 0x15, 0xdf, - 0x6, 0xa2, 0xf7, 0x8, 0x7b, 0xa, 0xfb, 0x56, 0xfb, 0x9d, 0x24, 0xa, - 0xfb, 0x31, 0xc1, 0xf8, 0x72, 0xc1, 0x1, 0xe0, 0xcb, 0xf7, 0xf6, 0xcb, - 0x3, 0xf7, 0x70, 0xf8, 0x89, 0x15, 0xf7, 0xdb, 0xef, 0x76, 0xd2, 0xfb, - 0xcc, 0xfb, 0x20, 0x5, 0xfb, 0x89, 0xfd, 0xf, 0x15, 0x7f, 0x55, 0x5, - 0xf7, 0xa3, 0x2a, 0xa, 0x31, 0x6, 0xf8, 0x36, 0xf8, 0x72, 0x5, 0xce, - 0x4d, 0xa, 0xfb, 0x52, 0x5f, 0xa, 0xc6, 0x6, 0xfb, 0x82, 0xfb, 0xa1, - 0x26, 0xf7, 0xa1, 0x5, 0xcf, 0x4d, 0xa, 0xfb, 0x5f, 0x2d, 0xa, 0xd3, - 0x6, 0xf7, 0xf, 0xfb, 0xd6, 0xfb, 0x1e, 0xfb, 0x30, 0x5, 0xe, 0xfb, - 0x31, 0xc0, 0xf7, 0xc, 0xc1, 0xf7, 0xe1, 0xc1, 0xf7, 0xb, 0xc0, 0x1, - 0xdc, 0xc2, 0xf8, 0x3a, 0xc4, 0x3, 0x88, 0x23, 0x15, 0x80, 0x56, 0x5, - 0xf7, 0xba, 0x80, 0xa, 0xfb, 0x2f, 0x6, 0xb6, 0xf7, 0x64, 0x5, 0x65, - 0xa3, 0xb9, 0x59, 0xe7, 0x1b, 0xf7, 0x22, 0xf7, 0x18, 0xf7, 0x11, 0xf7, - 0x2a, 0xf3, 0x37, 0xc9, 0x2c, 0x34, 0x49, 0x71, 0x5e, 0x5e, 0x1f, 0xbc, - 0xf7, 0x87, 0x5, 0xfb, 0x1e, 0x6, 0x7f, 0x56, 0x5, 0xdf, 0x6, 0xfb, - 0x20, 0xfd, 0x3c, 0x5, 0xf7, 0x17, 0xf7, 0xf3, 0x15, 0xe2, 0x9d, 0xdb, - 0xd0, 0xf7, 0x1, 0x1b, 0xf7, 0x5, 0xa5, 0x3c, 0x52, 0xfb, 0xa, 0xfb, - 0xf, 0x3c, 0x34, 0x2d, 0x4c, 0xd8, 0xef, 0xa0, 0x1f, 0xe, 0xfb, 0x31, - 0xbd, 0xf8, 0x64, 0xbc, 0xd8, 0xf7, 0x4, 0x1, 0xf8, 0x15, 0xf8, 0x81, - 0x15, 0xe3, 0x6, 0xa4, 0xf7, 0x4, 0x5, 0x33, 0x6, 0xfb, 0x4b, 0xfb, - 0x4, 0x15, 0xe6, 0x6, 0xa4, 0xf7, 0x4, 0x5, 0x31, 0x6, 0xfb, 0xb0, - 0xfd, 0x5c, 0x15, 0x7f, 0x59, 0x5, 0xf7, 0xa2, 0x6, 0x97, 0xbd, 0x5, - 0x30, 0x6, 0xf8, 0x36, 0xf8, 0x64, 0x5, 0xce, 0x6, 0x96, 0xbc, 0x5, - 0xfb, 0x51, 0x6, 0x7f, 0x5a, 0x5, 0xc6, 0x6, 0xfb, 0x80, 0xfb, 0x97, - 0x24, 0xf7, 0x97, 0x5, 0xd0, 0x6, 0x95, 0xbc, 0x5, 0xfb, 0x5f, 0x6, - 0x81, 0x5a, 0x5, 0xd2, 0x6, 0xf7, 0xf, 0xfb, 0xc8, 0xfb, 0x1e, 0xfb, - 0x30, 0x5, 0xe, 0x8b, 0xc1, 0xf8, 0x3e, 0xc2, 0xcf, 0xf7, 0x5, 0x1, - 0xaf, 0x16, 0x44, 0xa, 0xf8, 0x3e, 0x37, 0xa, 0xfc, 0x3e, 0x5, 0xfb, - 0x45, 0x6, 0xf7, 0xa8, 0xf8, 0xb9, 0x15, 0xe6, 0x6, 0xa4, 0xf7, 0x5, - 0x5, 0x31, 0x6, 0xe, 0x8b, 0xc1, 0xf7, 0xd2, 0xc1, 0x1, 0xf7, 0xab, - 0xc3, 0x3, 0xe5, 0x16, 0xf8, 0x2d, 0x2a, 0xa, 0xfb, 0x43, 0x6, 0xd4, - 0xf8, 0x8, 0x5, 0xfb, 0x5b, 0x5f, 0xa, 0xf7, 0x24, 0x6, 0x4b, 0xfb, - 0xd2, 0x5, 0xfb, 0x46, 0x6, 0xe, 0x7a, 0xc1, 0x69, 0x76, 0xf8, 0xa2, - 0xc1, 0x12, 0xf7, 0x23, 0xc6, 0xf7, 0xd5, 0xc1, 0x13, 0xb8, 0x68, 0x7a, - 0x15, 0xf7, 0x56, 0x47, 0xa, 0x49, 0x6, 0xec, 0xf8, 0x6b, 0x5, 0xc9, - 0x47, 0xa, 0xfb, 0x4e, 0x45, 0xa, 0xcc, 0x6, 0x2a, 0xfc, 0x6b, 0x5, - 0x46, 0x6, 0xf7, 0x92, 0xa0, 0x15, 0x13, 0x78, 0x67, 0xa3, 0xa8, 0x63, - 0xce, 0x1b, 0xf7, 0x13, 0x98, 0x7c, 0xa, 0xba, 0x36, 0xa, 0xfb, 0x66, - 0x38, 0xa, 0xf7, 0x1, 0x6, 0x4b, 0xfb, 0xdc, 0x5, 0x3a, 0x7b, 0x88, - 0x4d, 0x36, 0x1b, 0x71, 0x5b, 0x91, 0xf7, 0xe, 0xa2, 0x1f, 0x9a, 0xe6, - 0x71, 0xa, 0xe, 0xfb, 0x31, 0xc1, 0xf8, 0x84, 0xc4, 0xe4, 0xf7, 0xa, - 0x1, 0xf8, 0x7f, 0xf8, 0xaf, 0x54, 0xa, 0xfb, 0xa2, 0xfd, 0xb2, 0x15, - 0x81, 0xa8, 0xa1, 0x85, 0xa8, 0x1b, 0xf6, 0x92, 0xb6, 0xf7, 0x12, 0xad, - 0x1f, 0xea, 0xf8, 0x45, 0x5, 0xfb, 0x25, 0x82, 0xa, 0xdf, 0x6, 0x39, - 0xfc, 0x3, 0x74, 0x2e, 0x83, 0x69, 0x5c, 0x89, 0x19, 0x6c, 0x8a, 0x7c, - 0x91, 0x73, 0x92, 0x8, 0xfb, 0x93, 0x81, 0x15, 0x80, 0x55, 0x5, 0xf7, - 0x3c, 0x6, 0x98, 0xc1, 0x5, 0x4e, 0x6, 0xf7, 0x1, 0xf8, 0x84, 0x5, - 0xc3, 0x46, 0xa, 0xfb, 0x3e, 0x38, 0xa, 0xc1, 0x6, 0xfb, 0x1, 0xfc, - 0x84, 0x5, 0xf7, 0x17, 0xf9, 0x14, 0x54, 0xa, 0xe, 0x3e, 0xa, 0x9f, - 0x16, 0xf8, 0x91, 0x6, 0xbe, 0xf7, 0x91, 0x71, 0xa, 0x5f, 0xfb, 0x5b, - 0x5, 0xfb, 0xb2, 0x6, 0xb0, 0xf7, 0x4e, 0xf7, 0x53, 0xd1, 0x96, 0xc2, - 0xfb, 0x53, 0x44, 0xb6, 0xf7, 0x6a, 0x5, 0xf7, 0x13, 0x2a, 0xa, 0xfb, - 0xb6, 0x45, 0xa, 0xf7, 0x0, 0x6, 0x5c, 0xfb, 0x80, 0x30, 0x69, 0x80, - 0x55, 0xe6, 0xad, 0x6b, 0xfb, 0x38, 0x57, 0xa, 0xe, 0x8b, 0xc2, 0xf8, - 0x9b, 0xc2, 0x1, 0xc3, 0x16, 0xf8, 0x57, 0x6, 0x98, 0xc2, 0x5, 0xfb, - 0x56, 0x6, 0xbf, 0xf7, 0x89, 0xf7, 0x2e, 0xc0, 0x97, 0xc2, 0xfb, 0x2d, - 0x56, 0xc5, 0xf7, 0xa6, 0x5, 0xfb, 0x90, 0x56, 0xa, 0xf7, 0x53, 0x6, - 0x58, 0xfb, 0x85, 0xfb, 0x33, 0x55, 0x80, 0x55, 0xf7, 0x32, 0xc0, 0x59, - 0xfb, 0x73, 0x5, 0xfb, 0x57, 0x6, 0xe, 0x8b, 0xc1, 0xf7, 0x5b, 0xc2, - 0xf7, 0x5c, 0xc1, 0x1, 0x85, 0xc3, 0x3, 0xf7, 0xc2, 0xc1, 0x15, 0xb2, - 0xf7, 0x5b, 0x5, 0xda, 0x60, 0xa, 0xc1, 0x6, 0xac, 0xf7, 0x3a, 0x5, - 0x55, 0x38, 0xa, 0x3c, 0x6, 0xb2, 0xf7, 0x5c, 0x5, 0xf7, 0x2a, 0x6, - 0x78, 0x27, 0x6a, 0xa, 0xa9, 0xf7, 0x2e, 0x5, 0xfb, 0xa5, 0x6, 0xfb, - 0x3f, 0xfb, 0x3d, 0xfb, 0x21, 0xfb, 0x6a, 0xfb, 0x3, 0xc3, 0x2b, 0xf7, - 0x32, 0x1f, 0xf7, 0xb5, 0x6, 0xaa, 0xf7, 0x2c, 0x52, 0xa, 0x77, 0x29, - 0x5, 0xfb, 0x62, 0x16, 0xfb, 0x25, 0x57, 0xc9, 0xf2, 0xf7, 0x3e, 0xf7, - 0x2c, 0xf7, 0xc, 0xf7, 0x1a, 0x8a, 0x1f, 0xe, 0x7c, 0xc2, 0xf7, 0x38, - 0xc1, 0xf7, 0x14, 0xc2, 0x1, 0x9e, 0xc2, 0xf7, 0x65, 0xba, 0xf7, 0x57, - 0xc2, 0x3, 0xf7, 0xad, 0xd3, 0x15, 0x57, 0x9b, 0xaa, 0x68, 0xd5, 0x1b, - 0xb6, 0xba, 0x97, 0x96, 0xb2, 0x1f, 0xc2, 0x7, 0x82, 0x6d, 0x62, 0x7d, - 0x68, 0x1b, 0x4c, 0x64, 0xad, 0xd6, 0x99, 0x8e, 0xa5, 0x8f, 0x9a, 0x1f, - 0xf7, 0x80, 0x6, 0x94, 0xaa, 0x90, 0xa2, 0xae, 0x1a, 0xd6, 0x78, 0xd4, - 0x36, 0x46, 0x5f, 0x5a, 0x6d, 0x76, 0x1e, 0xba, 0x80, 0x69, 0xab, 0x4b, - 0x1b, 0xfb, 0x2f, 0x50, 0xfb, 0x5c, 0xfb, 0x11, 0xfb, 0xc, 0xe3, 0x80, - 0xa8, 0xe3, 0xb7, 0xcb, 0xa2, 0x98, 0x1f, 0xc7, 0xf7, 0x4e, 0x15, 0xcb, - 0x9b, 0xbe, 0xcb, 0xc7, 0x1b, 0xd1, 0x82, 0x3d, 0x59, 0x87, 0x1f, 0xfc, - 0x57, 0xfb, 0xf, 0x15, 0xe9, 0xbe, 0xf7, 0x31, 0xec, 0xe2, 0x7e, 0x29, - 0x4c, 0x7e, 0x1e, 0x47, 0x7f, 0x75, 0xfb, 0x9, 0x23, 0x1b, 0x4d, 0x82, - 0xbc, 0xb9, 0x1f, 0xe, 0xfb, 0x16, 0x76, 0xf7, 0x70, 0xc6, 0xf7, 0x36, - 0xc4, 0xf7, 0x3a, 0xc8, 0x91, 0x77, 0x12, 0xeb, 0xce, 0xf7, 0xd0, 0xcf, - 0x13, 0xf6, 0x98, 0xcf, 0x15, 0xcc, 0x6, 0x97, 0xc7, 0xba, 0x75, 0xb8, - 0x6c, 0xd8, 0x85, 0x19, 0x78, 0x38, 0x5, 0x90, 0x94, 0x95, 0x8c, 0x94, - 0x1b, 0x9b, 0x98, 0x80, 0x7d, 0x7d, 0x84, 0x6d, 0x68, 0x7a, 0x79, 0x8f, - 0x94, 0x7f, 0x1f, 0x6c, 0x50, 0x5, 0x82, 0x91, 0xa6, 0x78, 0xad, 0x1b, - 0xbb, 0xc9, 0xb5, 0xe1, 0xa6, 0x7e, 0xaf, 0x73, 0x96, 0x1f, 0x8e, 0x9d, - 0x5, 0xf7, 0x20, 0x91, 0xe2, 0xba, 0xf6, 0x1a, 0xcf, 0x3c, 0xb8, 0x34, - 0x90, 0x1e, 0x3c, 0x8f, 0xfb, 0x1f, 0x7f, 0xe5, 0x1a, 0xc7, 0xf7, 0xc, - 0xa3, 0xbc, 0xcc, 0xc8, 0x73, 0x6e, 0xb7, 0x1e, 0x7e, 0x52, 0x5, 0xc9, - 0x6, 0x13, 0xee, 0xaf, 0xf7, 0x45, 0x5, 0x4d, 0x6, 0x82, 0x54, 0x5, - 0x13, 0xf6, 0xa8, 0x5b, 0x4e, 0x9f, 0x4a, 0x1b, 0xfb, 0x16, 0xfb, 0x8, - 0x50, 0x30, 0xfb, 0x16, 0xf7, 0x1f, 0x8b, 0xf3, 0x87, 0x1f, 0xdf, 0x88, - 0xc3, 0x75, 0x5a, 0x1a, 0x35, 0xfb, 0x22, 0x89, 0x56, 0x40, 0x53, 0xad, - 0xb4, 0x5b, 0x1e, 0x96, 0xc0, 0x5, 0x4b, 0x6, 0xe, 0xfb, 0x16, 0x76, - 0xf7, 0x47, 0xba, 0xf7, 0x17, 0xb9, 0xf7, 0x1b, 0xbd, 0x8f, 0x77, 0x12, - 0xf7, 0xa, 0xc8, 0xf7, 0xac, 0xc7, 0x13, 0xf6, 0xba, 0xa6, 0x15, 0xc2, - 0x6, 0x96, 0xbb, 0xb5, 0x7a, 0xb5, 0x76, 0xcd, 0x82, 0x19, 0x7b, 0x47, - 0x5, 0x8e, 0x92, 0x92, 0x8d, 0x92, 0x1b, 0x9a, 0x99, 0x82, 0x7f, 0x80, - 0x85, 0x73, 0x6c, 0x7c, 0x7b, 0x8e, 0x92, 0x80, 0x1f, 0x70, 0x5c, 0x5, - 0x83, 0x90, 0xa3, 0x7c, 0xa9, 0x1b, 0xb5, 0xc2, 0xac, 0xd0, 0x1f, 0x8a, - 0xa1, 0x81, 0xaa, 0x76, 0x94, 0x8d, 0x9a, 0x18, 0xf7, 0x11, 0x90, 0xd8, - 0xb0, 0xe2, 0x1a, 0x8c, 0xc2, 0x44, 0xaf, 0x3d, 0x8f, 0x8, 0x45, 0x8e, - 0xfb, 0xe, 0x82, 0xd4, 0x1a, 0xbc, 0xf5, 0x9e, 0xb6, 0xc4, 0xc2, 0x78, - 0x73, 0xb2, 0x1e, 0x80, 0x5d, 0x5, 0xc1, 0x6, 0x13, 0xee, 0xaa, 0xf7, - 0x23, 0x5, 0x55, 0x6, 0x83, 0x5f, 0x5, 0x13, 0xf6, 0xa2, 0x61, 0x54, - 0x9c, 0x52, 0x1b, 0xfb, 0x7, 0x23, 0x5b, 0x41, 0x21, 0xf7, 0x10, 0x8b, - 0xe7, 0x88, 0x1f, 0xd5, 0x89, 0xbe, 0x79, 0x63, 0x1a, 0x46, 0xfb, 0x13, - 0x89, 0x5c, 0x49, 0x59, 0xa7, 0xac, 0x60, 0x1e, 0x95, 0xb6, 0x62, 0xa, - 0xe, 0x77, 0xc2, 0xf8, 0x7d, 0xc2, 0x8b, 0xb9, 0xf7, 0x48, 0x77, 0x12, - 0xf4, 0xc7, 0xf7, 0xa7, 0xc8, 0x17, 0x8c, 0x81, 0x15, 0xc4, 0x78, 0xa, - 0x5f, 0xc1, 0xe9, 0x7a, 0xb9, 0x1b, 0xf7, 0x9, 0xf7, 0xd, 0xae, 0xf7, - 0x21, 0xe6, 0x38, 0xa8, 0x3a, 0x9f, 0x1f, 0x45, 0x9c, 0x25, 0x98, 0xde, - 0x1a, 0xd7, 0xcd, 0xb2, 0xee, 0xc1, 0xcf, 0x71, 0x68, 0xab, 0x1e, 0x7a, - 0x3a, 0x5, 0xc6, 0x6, 0xad, 0xf7, 0x50, 0x71, 0xa, 0x83, 0x63, 0x5, - 0x13, 0xfc, 0xa7, 0x69, 0x45, 0xa0, 0x56, 0x1b, 0xfb, 0x33, 0x40, 0x4c, - 0xfb, 0x3, 0xfb, 0xf, 0xf7, 0x10, 0x74, 0xdc, 0x79, 0x1f, 0xce, 0x7d, - 0xca, 0x6c, 0x61, 0x1a, 0x49, 0x4e, 0x56, 0xfb, 0x6, 0x4a, 0x3e, 0xa7, - 0xb3, 0x60, 0x1e, 0x99, 0xd1, 0x62, 0xa, 0xf7, 0xbb, 0xf8, 0x58, 0x15, - 0xde, 0x6, 0xf7, 0x4b, 0xf7, 0x36, 0x62, 0x9d, 0xfb, 0x3c, 0xfb, 0xd, - 0xfb, 0x1b, 0xf7, 0xd, 0x5d, 0x78, 0x5, 0xe, 0x7c, 0xc2, 0x8b, 0xf7, - 0x25, 0x8b, 0xbf, 0x8b, 0xf7, 0x2a, 0x8b, 0xc2, 0x8b, 0xbc, 0xf7, 0x46, - 0x77, 0x1, 0xf3, 0xc4, 0xf7, 0xa5, 0xc6, 0x3, 0xf7, 0xc5, 0xf8, 0x7f, - 0x85, 0xa, 0xf7, 0x49, 0xf7, 0x32, 0x64, 0x9f, 0xfb, 0x3d, 0xfb, 0x4, - 0xfb, 0x17, 0xf7, 0x3, 0x5e, 0x77, 0x5, 0xfb, 0x2c, 0xfd, 0x2b, 0x15, - 0xc3, 0x36, 0xa, 0x74, 0xb8, 0xb5, 0x6b, 0xdd, 0x1b, 0xf7, 0x1e, 0xe2, - 0xb5, 0xf2, 0x1f, 0x8c, 0xc8, 0x46, 0xb5, 0x40, 0x8f, 0x8, 0x47, 0x8f, - 0xfb, 0xd, 0x80, 0xdc, 0x1a, 0xc1, 0xf3, 0xa1, 0xb6, 0xc3, 0xbf, 0x75, - 0x70, 0xb1, 0x1e, 0x80, 0x58, 0x5, 0xc1, 0x6, 0xab, 0xf7, 0x34, 0x5, - 0x55, 0x6, 0x82, 0x59, 0x5, 0xa6, 0x62, 0x57, 0x9d, 0x52, 0x1b, 0xfb, - 0x4, 0x27, 0x56, 0x38, 0xfb, 0x9, 0xf7, 0xc, 0x8b, 0xe5, 0x87, 0x1f, - 0xd4, 0x88, 0xba, 0x78, 0x5f, 0x1a, 0x3e, 0xfb, 0xe, 0x89, 0x5d, 0x4a, - 0x5b, 0xa8, 0xb1, 0x62, 0x1e, 0x94, 0xbc, 0x52, 0xa, 0xe, 0x8b, 0xc1, - 0xf8, 0x5d, 0xc1, 0xee, 0xf7, 0x9, 0x1, 0xf7, 0xfb, 0xf9, 0x2c, 0x15, - 0xe2, 0x6, 0xa4, 0xf7, 0x9, 0x5, 0x35, 0x6, 0xfb, 0x44, 0xfb, 0x9, - 0x15, 0xe0, 0x6, 0xa6, 0xf7, 0x9, 0x5, 0x34, 0x6, 0xfb, 0x55, 0xfd, - 0xa1, 0x15, 0x31, 0xa, 0xe, 0x8b, 0xc2, 0xf8, 0x63, 0xc2, 0x8b, 0xc1, - 0x8b, 0xc5, 0x1, 0xf7, 0x6, 0xc3, 0xf7, 0xa1, 0xc0, 0x3, 0xa0, 0x16, - 0xf8, 0x41, 0x6, 0xb5, 0xf7, 0x63, 0x5, 0x56, 0x6, 0x6b, 0xfb, 0x2c, - 0x5, 0xfb, 0xc4, 0x6, 0xf8, 0x4f, 0xf8, 0x66, 0x95, 0xbf, 0x5, 0xfc, - 0x26, 0x6, 0x63, 0xfb, 0x55, 0x51, 0xa, 0xa9, 0xf7, 0x1e, 0x5, 0xf7, - 0xa5, 0x6, 0xfc, 0x4e, 0xfc, 0x64, 0x5, 0xf7, 0xbd, 0xf8, 0xd1, 0x48, - 0xa, 0x8b, 0xc2, 0xf7, 0xd8, 0xc2, 0x8b, 0xc3, 0xf7, 0x47, 0x77, 0x12, - 0xf7, 0xc4, 0xf8, 0x7e, 0x4c, 0xa, 0xfb, 0x28, 0xfd, 0x1c, 0x15, 0xf8, - 0x2b, 0x6, 0xaa, 0xf7, 0x31, 0x52, 0xa, 0x77, 0x25, 0x5, 0xfb, 0xa7, - 0x6, 0xf8, 0x1d, 0xf7, 0xdc, 0x95, 0xbe, 0x5, 0x13, 0x60, 0xfc, 0x1a, - 0x6, 0x6d, 0xfb, 0x2e, 0x5, 0xc1, 0x6, 0x9f, 0xee, 0x5, 0xf7, 0x95, - 0x6, 0xfc, 0x1c, 0xfb, 0xdb, 0x5, 0xe, 0xfb, 0x23, 0xc6, 0xf8, 0x4f, - 0xc5, 0xf7, 0x2d, 0xbf, 0x1, 0x7f, 0x37, 0x15, 0x67, 0x50, 0x5, 0xf7, - 0x75, 0x9f, 0xb3, 0xf7, 0x19, 0xbd, 0x1f, 0xf7, 0x11, 0xf7, 0xdd, 0x5, - 0xf7, 0x2, 0x6, 0x9e, 0xc5, 0x57, 0xa, 0xf7, 0x8, 0xba, 0x97, 0xb0, - 0xf2, 0x1b, 0x9e, 0x9f, 0x88, 0x8a, 0x9e, 0x1f, 0xaf, 0xc3, 0x5, 0x61, - 0x65, 0x8b, 0x6e, 0x1b, 0xfb, 0x1f, 0x80, 0x4b, 0xfb, 0x21, 0x55, 0x1f, - 0xfb, 0x5, 0x6, 0x7a, 0x51, 0x5, 0xf7, 0x0, 0x6, 0xfb, 0xf, 0xfb, - 0xd7, 0x5, 0x20, 0x63, 0x55, 0x7e, 0xfb, 0x1, 0x1b, 0xe, 0x79, 0xc2, - 0x8b, 0xf7, 0x39, 0x8b, 0xc2, 0xf7, 0xa0, 0xc2, 0x8b, 0xba, 0xf7, 0x46, - 0x77, 0x12, 0x9e, 0xc4, 0x17, 0x34, 0xa, 0x13, 0xfe, 0x3d, 0xa, 0xa8, - 0xf8, 0x6, 0x48, 0xa, 0xfb, 0x31, 0xbd, 0x8b, 0xf7, 0x38, 0x8b, 0xbe, - 0xf7, 0xae, 0xbe, 0x8b, 0xbc, 0xf7, 0x47, 0x77, 0x12, 0xab, 0xc3, 0x17, - 0x3f, 0xa, 0x13, 0xfe, 0x30, 0xa, 0xf7, 0x6f, 0xf7, 0xa0, 0x4c, 0xa, - 0xe, 0xf8, 0xe2, 0xcb, 0x1, 0xf7, 0x10, 0xf7, 0xf4, 0x3, 0xf7, 0x10, - 0xf8, 0x83, 0x15, 0xad, 0x79, 0xf7, 0x36, 0xf7, 0x5, 0xf7, 0x5, 0xfb, - 0x5, 0xb6, 0x9d, 0xfb, 0x1, 0xf7, 0x33, 0x5, 0x40, 0x6, 0xe, 0xf8, - 0x80, 0xc9, 0x1, 0xf7, 0x10, 0xf7, 0xf4, 0x3, 0xf7, 0x7f, 0xf8, 0x80, - 0x15, 0xd5, 0x6, 0xf7, 0x3b, 0xf7, 0x31, 0x67, 0x9f, 0xfb, 0x32, 0xfb, - 0x7, 0xfb, 0x9, 0xf7, 0x6, 0x62, 0x77, 0x5, 0xe, 0xf8, 0x89, 0xb2, - 0x1, 0xf7, 0x2b, 0xf7, 0xbd, 0x3, 0xf7, 0x2b, 0xf8, 0xf5, 0x15, 0x3c, - 0xa1, 0xbf, 0x6e, 0xc4, 0x1b, 0xd7, 0xc8, 0xbc, 0xc6, 0xa8, 0x1f, 0x60, - 0x6, 0x6d, 0x7b, 0x5c, 0x64, 0x55, 0x1b, 0x60, 0x64, 0xa5, 0xb6, 0x80, - 0x1f, 0xe, 0xf8, 0x71, 0xf2, 0x1, 0xf7, 0x8b, 0xf8, 0x71, 0x15, 0xde, - 0x6, 0xa2, 0xf2, 0x7b, 0xa, 0xe, 0xf8, 0x63, 0xbe, 0xca, 0xbd, 0x1, - 0xf7, 0x6c, 0xbe, 0xcd, 0xbe, 0x3, 0xf7, 0x6c, 0xf8, 0xa3, 0x15, 0x67, - 0xa6, 0x6f, 0xb4, 0xbf, 0xbb, 0xb9, 0xbf, 0xb1, 0x6f, 0xa7, 0x62, 0x57, - 0x5c, 0x5c, 0x56, 0x1e, 0xbe, 0x96, 0x15, 0xa0, 0x9d, 0x9d, 0x9f, 0x9b, - 0x97, 0x81, 0x7d, 0x77, 0x79, 0x78, 0x76, 0x7b, 0x80, 0x96, 0x98, 0x1e, - 0xe, 0xfb, 0x28, 0xbf, 0xeb, 0x77, 0x1, 0xf7, 0x79, 0xcc, 0x3, 0xf7, - 0xc4, 0x16, 0x64, 0x78, 0x67, 0x65, 0x61, 0x1a, 0x6f, 0x9d, 0x76, 0xae, - 0xa0, 0xa1, 0x92, 0x99, 0x9f, 0x1e, 0x9b, 0xc2, 0x5, 0x7d, 0x83, 0x73, - 0x81, 0x7a, 0x1b, 0x81, 0x83, 0x90, 0x96, 0xb2, 0xbd, 0xa5, 0xa5, 0x9a, - 0x1f, 0xe, 0xf8, 0x7d, 0xbd, 0x9d, 0xbc, 0x1, 0xe6, 0xf8, 0x8c, 0x15, - 0xbc, 0x80, 0x5, 0x9a, 0x92, 0xae, 0xbc, 0xae, 0x1b, 0xa5, 0x9f, 0x78, - 0x79, 0xa2, 0x1f, 0x7b, 0x9f, 0xa1, 0x7c, 0xa9, 0x1b, 0xc9, 0xc5, 0xbb, - 0xc3, 0xa9, 0x1f, 0x5a, 0x95, 0x5, 0x71, 0x7d, 0x5d, 0x65, 0x67, 0x1b, - 0x75, 0x7b, 0x99, 0x9b, 0x78, 0x1f, 0x9d, 0x76, 0x73, 0x9e, 0x6a, 0x1b, - 0x58, 0x58, 0x67, 0x49, 0x68, 0x1f, 0xe, 0x65, 0xa, 0xf7, 0xa5, 0xf8, - 0x99, 0x15, 0xad, 0x77, 0xf7, 0x52, 0xf7, 0x22, 0x55, 0xac, 0x5, 0xfb, - 0xe8, 0xfb, 0x2f, 0x15, 0xad, 0x77, 0xf7, 0x56, 0xf7, 0x22, 0x52, 0xac, - 0x5, 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0xd0, 0xf7, 0x7b, 0x15, 0xf8, 0x57, - 0x2a, 0xa, 0xfc, 0x57, 0x6, 0xe, 0xf7, 0x7b, 0xc1, 0x1, 0x85, 0xf7, - 0x7b, 0x15, 0xf8, 0xed, 0x2a, 0xa, 0xfc, 0xed, 0x6, 0xe, 0xf7, 0xbb, - 0xc9, 0x3, 0xf7, 0xbb, 0xf7, 0xdc, 0x15, 0xc9, 0x6, 0x72, 0x64, 0xa, - 0x32, 0x6, 0xe, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x56, 0xc9, 0x3, 0xf7, - 0x56, 0xf7, 0xdc, 0x15, 0xc9, 0x6, 0xf7, 0x2a, 0x64, 0xa, 0x30, 0x6, - 0xe, 0xef, 0x77, 0x1, 0xf7, 0x56, 0xca, 0x3, 0xf7, 0x56, 0xfb, 0x1a, - 0x15, 0xca, 0x75, 0xa, 0xf8, 0xc6, 0x77, 0x1, 0xf7, 0x68, 0xc9, 0xf4, - 0xc7, 0x3, 0xf8, 0xf, 0xf7, 0xdc, 0x15, 0xc7, 0x6, 0x72, 0x64, 0xa, - 0x32, 0x6, 0xfb, 0x5, 0xfb, 0x7e, 0x15, 0xc9, 0x6, 0x73, 0x64, 0xa, - 0x31, 0x6, 0xe, 0xf8, 0xc6, 0x74, 0xa, 0xf7, 0xdc, 0x15, 0xc7, 0x6, - 0xf7, 0x21, 0x64, 0xa, 0x35, 0x6, 0xfb, 0xa9, 0xfb, 0x7e, 0x15, 0xc6, - 0x6, 0xf7, 0x23, 0x64, 0xa, 0x35, 0x6, 0xe, 0xef, 0x74, 0xa, 0xfb, - 0x1a, 0x15, 0xc7, 0x6, 0xf7, 0x21, 0x64, 0xa, 0x34, 0x6, 0xfb, 0xa8, - 0xfb, 0x7e, 0x15, 0xc6, 0x6, 0xf7, 0x22, 0x64, 0xa, 0x34, 0x6, 0xe, - 0xf7, 0xfb, 0xc6, 0xf7, 0x36, 0x77, 0x1, 0xf7, 0x40, 0xc6, 0x3, 0xf7, - 0x40, 0x3d, 0x15, 0xc6, 0x6, 0xe5, 0xf8, 0x4f, 0x5, 0xf7, 0x17, 0x6, - 0x97, 0xc0, 0x83, 0xa, 0xae, 0xf7, 0x36, 0x5, 0x50, 0x6, 0x69, 0xfb, - 0x36, 0x5, 0xfb, 0x14, 0x6, 0x80, 0x56, 0x5, 0xf7, 0x14, 0x6, 0xe, - 0xf2, 0xc6, 0xf7, 0x64, 0xc5, 0xf7, 0x2c, 0x77, 0x1, 0xec, 0xf2, 0x15, - 0xf7, 0x18, 0x6, 0x64, 0xfb, 0x49, 0x5, 0xcb, 0x6, 0xb2, 0xf7, 0x49, - 0x5, 0xf7, 0x18, 0x6, 0x97, 0xc6, 0x5, 0xfb, 0x17, 0x6, 0xb6, 0xf7, - 0x64, 0x5, 0xf7, 0x16, 0x6, 0x97, 0xc5, 0x5, 0xfb, 0x16, 0x6, 0xab, - 0xf7, 0x2c, 0x5, 0x4b, 0x6, 0x6b, 0xfb, 0x2c, 0x83, 0xa, 0x81, 0x51, - 0x5, 0xf7, 0x17, 0x6, 0x5f, 0xfb, 0x64, 0x83, 0xa, 0xe, 0xf7, 0x2b, - 0x76, 0xf7, 0x91, 0x77, 0x1, 0xf7, 0x3d, 0xf7, 0x7c, 0x15, 0x52, 0xb5, - 0x5e, 0xc9, 0xd7, 0xdc, 0xd2, 0xd9, 0xc6, 0x5f, 0xb8, 0x4c, 0x3c, 0x40, - 0x45, 0x3a, 0x1e, 0xe, 0x7c, 0xf7, 0x12, 0x1, 0xae, 0xf7, 0x15, 0xd2, - 0xf7, 0x15, 0xd2, 0xf7, 0x15, 0x14, 0x70, 0xf7, 0x7f, 0xb1, 0x15, 0x41, - 0xa, 0xfb, 0x5c, 0x16, 0x41, 0xa, 0xf8, 0x24, 0x16, 0x41, 0xa, 0xe, - 0x7c, 0xc2, 0xf7, 0x21, 0xc1, 0xf7, 0x1d, 0xc2, 0xf7, 0x21, 0xc1, 0x12, - 0xaa, 0xc4, 0xf7, 0x57, 0xc4, 0x77, 0xc4, 0xf7, 0x2a, 0xc4, 0x13, 0xfd, - 0xd7, 0xf8, 0x6e, 0x2e, 0xa, 0xfb, 0x5, 0xfb, 0x94, 0x15, 0xf8, 0x6c, - 0xf7, 0x38, 0x87, 0xc0, 0xfc, 0x6c, 0xfb, 0x3a, 0x5, 0x13, 0xfb, 0xf7, - 0xc4, 0xfb, 0x51, 0x2e, 0xa, 0xfb, 0xee, 0x84, 0x2e, 0xa, 0xe, 0xf8, - 0x52, 0x77, 0x1, 0xf7, 0x18, 0xe8, 0x3, 0xf7, 0x18, 0xf7, 0x95, 0x15, - 0xf7, 0x84, 0xfb, 0x4f, 0xa9, 0xba, 0xfb, 0x45, 0xf7, 0x1d, 0xf7, 0x87, - 0xf7, 0x1c, 0x82, 0xc3, 0x5, 0xe, 0xf8, 0x52, 0x77, 0x1, 0xf8, 0x6, - 0xed, 0x3, 0xf7, 0x21, 0xd1, 0x15, 0xf7, 0xdb, 0xf7, 0x4f, 0xfb, 0x84, - 0xf7, 0x51, 0x6c, 0x5c, 0xf7, 0x41, 0xfb, 0x1a, 0xfb, 0x82, 0xfb, 0x20, - 0x5, 0xe, 0x67, 0x76, 0xf9, 0x66, 0x77, 0x1, 0x9e, 0x6e, 0x15, 0xab, - 0x6f, 0xf8, 0xa6, 0xf9, 0x4a, 0x6b, 0xa7, 0x5, 0xe, 0x76, 0xc5, 0xf7, - 0x28, 0xc4, 0xdb, 0xc3, 0xf7, 0x43, 0xc5, 0x1, 0xf7, 0x36, 0xc1, 0x3, - 0xbb, 0xaa, 0x15, 0x9b, 0x57, 0x5, 0xa1, 0xc0, 0xe6, 0x93, 0x9b, 0x1b, - 0x9f, 0x9d, 0x87, 0x84, 0x9e, 0x1f, 0x83, 0x9e, 0xa0, 0x80, 0xa6, 0x53, - 0xa, 0x71, 0x79, 0x97, 0x93, 0x79, 0x1f, 0x93, 0x7a, 0x7a, 0x8e, 0x73, - 0x1b, 0x6e, 0x6d, 0x84, 0x80, 0x6e, 0x1f, 0xc8, 0xb0, 0x9f, 0xc2, 0x8e, - 0xb6, 0x8, 0xf7, 0x48, 0x6, 0x99, 0xc4, 0x5, 0xfb, 0x5c, 0x6, 0x8a, - 0x96, 0x8a, 0xae, 0x8a, 0xad, 0x8, 0xf7, 0x66, 0x6, 0x9b, 0xc3, 0x5, - 0xfb, 0x77, 0xa9, 0x6, 0x42, 0xa, 0x82, 0x8b, 0x7b, 0x8c, 0x78, 0x8, - 0x4a, 0x6, 0x7d, 0x53, 0x5, 0xdb, 0x6, 0x8c, 0x6a, 0x8d, 0x69, 0x8c, - 0x7e, 0x8, 0x29, 0x6, 0x7b, 0x52, 0x5, 0xf7, 0x8, 0x6, 0x55, 0x63, - 0x67, 0x3a, 0x4b, 0x1e, 0xe, 0x8b, 0xbf, 0xf7, 0x22, 0xbf, 0xc8, 0xbf, - 0xf7, 0x2b, 0xbf, 0x1, 0xe0, 0xc2, 0xf8, 0x8, 0xbe, 0x3, 0x89, 0xf7, - 0x56, 0x15, 0xd7, 0x6, 0xfb, 0x7, 0x90, 0xcf, 0x3c, 0xf7, 0x1f, 0x1b, - 0xd6, 0xda, 0xa7, 0xb5, 0xcd, 0x1f, 0x7d, 0xb7, 0x5, 0x67, 0x52, 0x45, - 0x71, 0x4a, 0x1b, 0x2c, 0x49, 0xb9, 0xeb, 0x81, 0x1f, 0xf7, 0x6b, 0x6, - 0xa7, 0xbf, 0x5, 0xfb, 0x87, 0x6, 0x8e, 0x9f, 0x8e, 0xa2, 0x90, 0x9d, - 0x8, 0xf7, 0x98, 0x6, 0xa9, 0xbf, 0x5, 0xfb, 0xa4, 0x6, 0xe5, 0xb4, - 0xdc, 0xc8, 0xe5, 0x1b, 0xcf, 0xc8, 0x73, 0x66, 0xa8, 0x1f, 0x7b, 0x3d, - 0x5, 0xbe, 0x6, 0xb2, 0xf7, 0x53, 0x5, 0x58, 0x6, 0x80, 0x59, 0x5, - 0xac, 0x63, 0x5b, 0x9c, 0x47, 0x1b, 0xfb, 0x12, 0xfb, 0x0, 0x32, 0xfb, - 0x6, 0x5c, 0x1f, 0x54, 0x6, 0x6d, 0x57, 0x5, 0xce, 0x6, 0x86, 0x73, - 0x89, 0x76, 0x89, 0x7b, 0x8, 0x5a, 0x6, 0xe, 0x7c, 0xc2, 0xf7, 0x49, - 0xc1, 0xf7, 0x7c, 0xc2, 0x1, 0xf8, 0xac, 0xc6, 0x3, 0x90, 0x7c, 0x15, - 0xf7, 0x79, 0x36, 0xa, 0x37, 0x6, 0xb1, 0xf7, 0x48, 0x5, 0xf7, 0xc, - 0x6, 0x9d, 0x6e, 0xaa, 0x57, 0xa7, 0x56, 0x40, 0x44, 0x18, 0xba, 0x6d, - 0xc1, 0xbd, 0x94, 0x79, 0x92, 0x7a, 0x91, 0x7c, 0x19, 0xf7, 0x1f, 0x6, - 0x96, 0xc2, 0x57, 0xa, 0x78, 0xb1, 0xda, 0xd5, 0x5c, 0xa9, 0x51, 0x54, - 0x77, 0xae, 0x77, 0xac, 0x7a, 0xa5, 0x19, 0xea, 0x8e, 0xf7, 0x8, 0xb8, - 0xf7, 0x37, 0x1a, 0xcd, 0x57, 0xcb, 0x23, 0x1e, 0xfb, 0xce, 0x38, 0xa, - 0xe1, 0x6, 0x2a, 0xfc, 0x67, 0x5, 0x34, 0x6, 0xf7, 0x56, 0xf7, 0x7f, - 0x15, 0xba, 0xf7, 0x7c, 0x5, 0xf7, 0x2c, 0x6, 0xd9, 0xbc, 0x6b, 0x5f, - 0xfb, 0x2b, 0xfb, 0x23, 0x86, 0x3f, 0x1f, 0xe, 0xf7, 0xb0, 0x76, 0xf7, - 0x93, 0xb7, 0x1, 0xb6, 0xbe, 0xf7, 0x10, 0xbb, 0xf7, 0x60, 0xbd, 0x3, - 0xf7, 0x6e, 0xf7, 0x9b, 0x15, 0xbb, 0x6, 0xc7, 0xf7, 0xa2, 0x97, 0xfb, - 0xa2, 0x5, 0xcb, 0x6, 0xf7, 0x14, 0xf7, 0xa1, 0x4f, 0xfb, 0xa1, 0x5, - 0xbd, 0x6, 0xcd, 0xf7, 0xbf, 0x5, 0x30, 0x6, 0xfb, 0x6, 0xfb, 0x87, - 0x84, 0xf7, 0x87, 0x5, 0x31, 0x6, 0xfb, 0x85, 0xfb, 0xbf, 0x15, 0xbe, - 0x6, 0xc2, 0xf7, 0x93, 0x5, 0xe1, 0x6, 0x95, 0xb7, 0x5, 0xfb, 0x71, - 0x6, 0x81, 0x5f, 0x5, 0xe0, 0x6, 0xe, 0x73, 0xa, 0xf7, 0x11, 0xf7, - 0x7, 0x15, 0xa9, 0xba, 0x2f, 0xf7, 0x3, 0x5, 0xf8, 0xbd, 0x6, 0x96, - 0xbd, 0x5, 0xfc, 0xae, 0x6, 0xf7, 0x18, 0xf3, 0x82, 0xc3, 0xfb, 0x82, - 0xfb, 0x4e, 0x5, 0xe, 0xa0, 0x76, 0xf9, 0x3, 0x77, 0x1, 0xf7, 0x88, - 0xbd, 0x3, 0xf7, 0x38, 0x9c, 0x15, 0xf7, 0x18, 0xf8, 0x80, 0xfb, 0x1a, - 0x26, 0x58, 0xa2, 0xf7, 0x84, 0xf7, 0x49, 0xf7, 0x1e, 0xfb, 0x54, 0x55, - 0x7a, 0x37, 0xf7, 0xa, 0xfb, 0x1b, 0xfc, 0x8e, 0x5, 0xe, 0x73, 0xa, - 0x70, 0xf7, 0xa7, 0x15, 0x96, 0xbd, 0x5, 0xf8, 0xbf, 0x6, 0x2f, 0xf7, - 0x3, 0xa9, 0xba, 0xf7, 0x2a, 0xfb, 0x4a, 0xfb, 0x81, 0xfb, 0x4e, 0x82, - 0xc3, 0xf7, 0x18, 0xf3, 0x5, 0xe, 0x9a, 0x76, 0xf8, 0xea, 0x77, 0x1, - 0xf7, 0x3, 0xf7, 0x4f, 0x15, 0xc0, 0x9c, 0xdd, 0xfb, 0x9, 0xf7, 0x1c, - 0xf8, 0x8d, 0xbe, 0x88, 0xfb, 0x18, 0xfc, 0x7e, 0xf7, 0x1c, 0xef, 0xbf, - 0x74, 0xfb, 0x86, 0xfb, 0x4a, 0x5, 0xe, 0xf7, 0x1c, 0x76, 0xf7, 0x32, - 0xbf, 0xf7, 0x32, 0x77, 0x1, 0xf7, 0x10, 0xf7, 0x7, 0x15, 0xfb, 0x2c, - 0xf7, 0x4a, 0xf7, 0x83, 0xf7, 0x4e, 0x94, 0x53, 0xfb, 0x18, 0x25, 0x5, - 0xf8, 0x58, 0x6, 0x31, 0xf7, 0x3, 0xa9, 0xba, 0xf7, 0x28, 0xfb, 0x4a, - 0xfb, 0x7f, 0xfb, 0x4e, 0x82, 0xc3, 0xf7, 0x16, 0xf2, 0xfc, 0x58, 0x8a, - 0xe7, 0xfb, 0x3, 0x5, 0xe, 0xf7, 0x7c, 0xbe, 0x1, 0xd5, 0xf7, 0x7c, - 0x15, 0xf8, 0x57, 0xbe, 0xfc, 0x57, 0x6, 0xe, 0x8b, 0xc0, 0xf7, 0xc1, - 0xc0, 0xf1, 0xf7, 0xc, 0x1, 0xf7, 0x0, 0xc1, 0xf7, 0xa7, 0xc1, 0x3, - 0xf8, 0x96, 0xf8, 0x91, 0x15, 0xd2, 0x6, 0xa2, 0xf7, 0xc, 0x5, 0x44, - 0x6, 0xfb, 0x6d, 0xfd, 0x9, 0x15, 0xf7, 0xa1, 0x80, 0xa, 0xfb, 0x1, - 0x6, 0xd3, 0xf7, 0xf6, 0x5, 0xfb, 0x1c, 0x68, 0xa, 0xdd, 0x6, 0x4d, - 0xfb, 0xc1, 0x5, 0x21, 0x6, 0xfb, 0xe7, 0x56, 0x15, 0xf7, 0x9e, 0x6, - 0x97, 0xc0, 0x57, 0xa, 0xc9, 0xf7, 0xc1, 0x5, 0xf6, 0x6, 0x96, 0xc0, - 0x57, 0xa, 0xa6, 0xed, 0x5, 0x9f, 0x90, 0x96, 0xa2, 0xd4, 0x1b, 0xa1, - 0xa1, 0x87, 0x87, 0x9e, 0x1f, 0xa0, 0xbf, 0x5, 0x8f, 0x71, 0x5e, 0x90, - 0x78, 0x1b, 0x5a, 0x43, 0x7e, 0x38, 0x77, 0x1f, 0x73, 0x29, 0x5, 0x20, - 0x68, 0xa, 0xf6, 0x6, 0x4e, 0xfb, 0xc1, 0x5, 0x22, 0x6, 0xe, 0x8b, - 0xc2, 0xf7, 0xcf, 0xc2, 0xf7, 0x29, 0xc2, 0x1, 0xf7, 0x2, 0xc1, 0xf7, - 0xa8, 0xc3, 0x3, 0xf7, 0xd5, 0x16, 0xf7, 0xa2, 0x36, 0xa, 0x21, 0x6, - 0xf7, 0x4, 0xf8, 0xd2, 0x5, 0xfb, 0x27, 0x56, 0xa, 0xe8, 0x6, 0x25, - 0xfc, 0x9b, 0x57, 0xa, 0xfb, 0xe8, 0x54, 0x15, 0xf7, 0xa0, 0x6, 0x97, - 0xc2, 0x57, 0xa, 0xc9, 0xf7, 0xcf, 0x5, 0xf6, 0x6, 0x96, 0xc2, 0x57, - 0xa, 0x9c, 0xe0, 0x5, 0xa1, 0x8f, 0x97, 0xb5, 0xde, 0x1b, 0xa2, 0xa0, - 0x86, 0x86, 0xa0, 0x1f, 0x9f, 0xc1, 0x5, 0x90, 0x71, 0x6f, 0x91, 0x6f, - 0x1b, 0x30, 0x58, 0x5a, 0x45, 0x7e, 0x1f, 0x79, 0x36, 0x5, 0xfb, 0x1, - 0x67, 0xa, 0xf7, 0x1, 0x6, 0x4d, 0xfb, 0xcf, 0x5, 0x20, 0x6, 0xe, - 0x79, 0x9d, 0xf8, 0x3e, 0x9a, 0xf7, 0xd, 0x9d, 0xa9, 0x97, 0x6, 0xfb, - 0x31, 0x8b, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xc2, 0xa, - 0xc2, 0xb, 0xf8, 0xec, 0x14, 0xaa, 0x13, 0x0, 0x6a, 0x2, 0x0, 0x1, - 0x0, 0x29, 0x0, 0x38, 0x0, 0x69, 0x0, 0x6d, 0x0, 0xb9, 0x0, 0xf5, - 0x1, 0x3b, 0x1, 0x83, 0x1, 0xc3, 0x1, 0xf8, 0x1, 0xfd, 0x2, 0xe, - 0x2, 0x1a, 0x2, 0x1f, 0x2, 0x46, 0x2, 0x53, 0x2, 0x93, 0x2, 0xc4, - 0x2, 0xce, 0x2, 0xe8, 0x3, 0x19, 0x3, 0x2c, 0x3, 0x31, 0x3, 0x3f, - 0x3, 0x44, 0x3, 0x4e, 0x3, 0x59, 0x3, 0x64, 0x3, 0x69, 0x3, 0x8e, - 0x3, 0x95, 0x3, 0xb8, 0x3, 0xbf, 0x3, 0xd1, 0x3, 0xed, 0x3, 0xf4, - 0x3, 0xff, 0x4, 0x4, 0x4, 0x9, 0x4, 0xe, 0x4, 0x23, 0x4, 0x2b, - 0x4, 0x32, 0x4, 0x3c, 0x4, 0x51, 0x4, 0x56, 0x4, 0x5e, 0x4, 0x66, - 0x4, 0x6e, 0x4, 0x72, 0x4, 0x76, 0x4, 0x87, 0x4, 0x91, 0x4, 0x96, - 0x4, 0x9b, 0x4, 0x9f, 0x4, 0xa3, 0x4, 0xab, 0x4, 0xb3, 0x4, 0xba, - 0x4, 0xbf, 0x4, 0xc5, 0x4, 0xca, 0x4, 0xcf, 0x4, 0xd4, 0x4, 0xd9, - 0x4, 0xdd, 0x4, 0xe1, 0x4, 0xe5, 0x4, 0xed, 0x4, 0xf3, 0x4, 0xf8, - 0x4, 0xfd, 0x5, 0x1, 0x5, 0x5, 0x5, 0x9, 0x5, 0x15, 0x5, 0x21, - 0x5, 0x27, 0x5, 0x2d, 0x5, 0x33, 0x5, 0x37, 0x5, 0x42, 0x5, 0x4d, - 0x5, 0x58, 0x5, 0x60, 0x5, 0x65, 0x5, 0x69, 0x5, 0x6e, 0x5, 0x72, - 0x5, 0x76, 0x5, 0x7a, 0x5, 0x83, 0x5, 0x8c, 0x5, 0x95, 0x5, 0x9e, - 0x5, 0xa3, 0x5, 0xa8, 0x5, 0xad, 0x5, 0xb2, 0x5, 0xb7, 0x5, 0xbb, - 0x5, 0xbf, 0x5, 0xc3, 0x5, 0xc7, 0x5, 0xcb, 0xf7, 0x63, 0x4d, 0xa, - 0x33, 0x6, 0xcc, 0xf7, 0xf, 0x5, 0xf7, 0xaa, 0x6, 0xa3, 0xfb, 0xf, - 0x2c, 0xa, 0xf8, 0x93, 0x32, 0xa, 0x7a, 0xa, 0x4f, 0x6, 0xf7, 0x6b, - 0xf7, 0x45, 0x15, 0xf7, 0x40, 0xf7, 0xbb, 0xca, 0xfb, 0xbb, 0x5, 0xb, - 0x22, 0xa, 0x13, 0xbe, 0x3a, 0xa, 0x13, 0x7e, 0x98, 0xce, 0x15, 0x13, - 0xbe, 0x2b, 0xa, 0x15, 0xf7, 0x1e, 0x3c, 0xa, 0x37, 0x6, 0xbe, 0xf7, - 0x9a, 0x8c, 0x9b, 0x9a, 0x1a, 0xcb, 0x8a, 0x5e, 0xb2, 0x22, 0x1b, 0x46, - 0x36, 0x77, 0x72, 0x4b, 0x1f, 0x39, 0xa, 0xa8, 0xe1, 0x9c, 0x33, 0x1f, - 0x81, 0x49, 0x5, 0x92, 0x5f, 0x5a, 0x92, 0x5a, 0x1b, 0xfb, 0x51, 0x4c, - 0x2c, 0x3f, 0x1f, 0xb, 0x15, 0x20, 0xa, 0xe, 0x15, 0xdb, 0x6, 0x5a, - 0xfb, 0x91, 0x5, 0x88, 0x7e, 0x8c, 0x7f, 0x80, 0x1a, 0x45, 0xc3, 0x67, - 0xd6, 0xb2, 0xc1, 0x9a, 0xd5, 0xe3, 0x1e, 0x13, 0x78, 0x7c, 0x3d, 0x5, - 0xf7, 0x1a, 0x36, 0xa, 0x3a, 0x6, 0xd3, 0xf8, 0x15, 0x55, 0xa, 0x82, - 0x53, 0x5, 0xdc, 0x6, 0x5e, 0xfb, 0x77, 0x5, 0x13, 0xb8, 0x59, 0x5b, - 0x4d, 0x4b, 0x4c, 0x1b, 0x4e, 0x6c, 0xa8, 0xbe, 0x8a, 0x1f, 0x96, 0x8c, - 0x96, 0x8d, 0x98, 0x1e, 0xc0, 0xf7, 0xae, 0x5, 0xfb, 0x1a, 0x6, 0xe, - 0x15, 0xfb, 0x15, 0xd7, 0x26, 0xf7, 0x1a, 0xf7, 0x4d, 0xf7, 0x1c, 0xf7, - 0x4d, 0xf7, 0x4f, 0xed, 0x5f, 0xf7, 0x11, 0xfb, 0x35, 0xfb, 0x60, 0xfb, - 0xe, 0xfb, 0x5c, 0xfb, 0x39, 0x1e, 0xc2, 0x93, 0x15, 0xf7, 0x2, 0xea, - 0xf7, 0x55, 0xf7, 0x3c, 0xf7, 0x1a, 0xa4, 0x20, 0x3a, 0xfb, 0x13, 0xfb, - 0xf, 0xfb, 0x40, 0xfb, 0x19, 0xfb, 0x1, 0x52, 0xdf, 0xef, 0x1e, 0xe, - 0x15, 0xdc, 0x6, 0x55, 0xfb, 0xb5, 0x5, 0x85, 0x6b, 0x88, 0x6d, 0x70, - 0x1a, 0x30, 0xbd, 0x51, 0xf7, 0xc, 0xf7, 0x12, 0xe2, 0xc1, 0xf7, 0x30, - 0xa7, 0x1e, 0xc7, 0xf7, 0xd1, 0x5, 0xd8, 0x3c, 0xa, 0xfb, 0x7b, 0x60, - 0xa, 0xf1, 0x6, 0x50, 0xfb, 0xca, 0x63, 0xa, 0x76, 0x53, 0x54, 0x23, - 0x1b, 0x32, 0x65, 0xb4, 0xdc, 0x9d, 0x8e, 0x9e, 0x8f, 0xa0, 0x1f, 0xc3, - 0xf7, 0xb9, 0x5, 0xf4, 0x3c, 0xa, 0xfb, 0x82, 0x6, 0xb, 0x15, 0xf8, - 0x38, 0x89, 0x5, 0x8f, 0xa1, 0x8f, 0xaa, 0xa0, 0x1a, 0xe8, 0x51, 0xe0, - 0xfb, 0x1c, 0xfb, 0x34, 0xfb, 0x1e, 0xfb, 0x9, 0xfb, 0x48, 0x2c, 0xc5, - 0x41, 0xf7, 0x2c, 0xe0, 0xe5, 0xa8, 0xb0, 0xd5, 0x1e, 0x84, 0xc1, 0x5, - 0x5e, 0x32, 0x37, 0x77, 0x5a, 0x1b, 0x44, 0x26, 0xa1, 0xe3, 0x9b, 0x8b, - 0x9c, 0x91, 0x9d, 0x1f, 0x9b, 0xc3, 0x15, 0xc6, 0xa0, 0xd0, 0xd9, 0xf7, - 0x9, 0x1b, 0xf7, 0x22, 0x8f, 0xfb, 0x4, 0x72, 0x1f, 0xe, 0xf8, 0x85, - 0x6, 0xb1, 0xf7, 0x51, 0x71, 0xa, 0x70, 0xfb, 0x1b, 0x5, 0xfb, 0xc5, - 0x6, 0xb4, 0xf7, 0x5d, 0x5, 0xf7, 0x39, 0x6, 0x7b, 0x39, 0x51, 0xa, - 0xb8, 0xf7, 0x6f, 0x62, 0xa, 0x7a, 0x38, 0x5, 0xfb, 0x38, 0x6, 0xb3, - 0xf7, 0x5e, 0x81, 0xa, 0x71, 0xfb, 0x1b, 0x5, 0xc4, 0x6, 0xb1, 0xf7, - 0x51, 0x5, 0xfc, 0x83, 0x45, 0xa, 0xdf, 0x6, 0x2f, 0xfc, 0x5d, 0x6b, - 0xa, 0xb, 0x15, 0x20, 0xd7, 0x43, 0xf7, 0x15, 0xf7, 0x38, 0xf7, 0x9, - 0xf7, 0x14, 0xf7, 0x2e, 0xdf, 0x5b, 0xec, 0xfb, 0x2a, 0xfb, 0x2b, 0xfb, - 0x1d, 0xfb, 0x9, 0xfb, 0x3b, 0x1e, 0xc9, 0x9a, 0x15, 0xf5, 0xe8, 0xf6, - 0xf7, 0xe, 0xf7, 0x16, 0x9d, 0x34, 0x4f, 0x28, 0x2c, 0x21, 0xfb, 0x9, - 0xfb, 0x7, 0x67, 0xcc, 0xd5, 0x1e, 0xb, 0x6, 0x96, 0xc1, 0x5, 0xb, - 0x4e, 0x4b, 0x3e, 0x5c, 0x38, 0x1b, 0x57, 0x64, 0xa8, 0xab, 0xed, 0xf7, - 0x1d, 0x97, 0xc6, 0x40, 0xa, 0x5, 0x2b, 0x2d, 0xa, 0xf7, 0x60, 0x2a, - 0xa, 0x57, 0x6, 0x21, 0xb, 0x6, 0x80, 0x55, 0x5, 0xb, 0x15, 0x52, - 0xb2, 0x5e, 0xcf, 0xdf, 0xd4, 0xd3, 0xdb, 0xc1, 0x6c, 0xb7, 0x3d, 0x38, - 0x43, 0x42, 0x40, 0x1e, 0xc4, 0x92, 0x15, 0xbc, 0xb3, 0xb1, 0xbe, 0xb3, - 0x9e, 0x73, 0x6c, 0x61, 0x6a, 0x5f, 0x55, 0x66, 0x71, 0x9f, 0xad, 0x1e, - 0xb, 0x44, 0xa, 0xf8, 0x5c, 0x37, 0xa, 0xfc, 0x5c, 0x5, 0xfb, 0x45, - 0x6, 0xb, 0xad, 0x71, 0x53, 0xb4, 0x3c, 0x1b, 0xfb, 0x33, 0xfb, 0x9, - 0xfb, 0x9, 0x22, 0x39, 0xc1, 0x3b, 0xf7, 0x21, 0xcc, 0xd6, 0x98, 0xb8, - 0xbd, 0x1f, 0x78, 0x20, 0x5, 0x34, 0x79, 0x52, 0x6f, 0xfb, 0xb, 0x1b, - 0x48, 0x4b, 0x9c, 0x96, 0x59, 0x1f, 0xcc, 0xf7, 0xc1, 0x15, 0xee, 0xf7, - 0x1, 0xd0, 0xf0, 0xf7, 0x6, 0xab, 0x4c, 0x4b, 0x2c, 0x25, 0x4f, 0x23, - 0x31, 0x4f, 0xbd, 0xcb, 0x1e, 0xb, 0xf7, 0xc9, 0x2a, 0xa, 0xfb, 0x12, - 0x6, 0xad, 0xf7, 0x43, 0xf7, 0x7e, 0xf7, 0xae, 0x5, 0xce, 0x2a, 0xa, - 0xfb, 0x5a, 0x2d, 0xa, 0xd1, 0x6, 0xfb, 0x52, 0xfb, 0x78, 0x26, 0xf7, - 0x78, 0x5, 0xd2, 0x43, 0xa, 0xd1, 0x6, 0xf7, 0x10, 0xfb, 0xae, 0x69, - 0xfb, 0x43, 0x5, 0xfb, 0x12, 0x6, 0xb, 0x5, 0xfb, 0x82, 0x2d, 0xa, - 0x86, 0xa, 0xfb, 0x9d, 0xb, 0x15, 0x69, 0xa, 0xf7, 0x3b, 0x6, 0xc8, - 0xf7, 0xdb, 0x5, 0xfb, 0x1b, 0x77, 0xa, 0xf7, 0x4f, 0x6, 0x44, 0xfc, - 0x12, 0x5, 0xf7, 0x3a, 0x56, 0xa, 0xe, 0xf7, 0xb5, 0xf7, 0x5e, 0x15, - 0xf7, 0x37, 0x6, 0x72, 0xfb, 0x18, 0x5, 0x76, 0x46, 0x64, 0x7f, 0x54, - 0x1b, 0xfb, 0x18, 0x53, 0xd8, 0xeb, 0xf7, 0x74, 0xf7, 0x2a, 0xe6, 0xf7, - 0x7, 0xd0, 0xc0, 0x68, 0x5b, 0xae, 0x1f, 0x7c, 0x3f, 0x51, 0xa, 0xb5, - 0xf7, 0x6a, 0x52, 0xa, 0x7e, 0x49, 0x5, 0xb, 0x15, 0x71, 0xa3, 0x73, - 0xb1, 0xb2, 0xb6, 0xa9, 0xb3, 0xa8, 0x75, 0xa4, 0x67, 0x60, 0x60, 0x69, - 0x63, 0x1e, 0xb, 0x6, 0x96, 0xc2, 0x5, 0xb, 0x5, 0xf7, 0x41, 0x46, - 0xa, 0xfc, 0x2b, 0x38, 0xa, 0xf7, 0x42, 0x6, 0x2c, 0xb, 0x6, 0x80, - 0x54, 0x5, 0xb, 0x8f, 0x55, 0x5, 0x9a, 0xae, 0xe4, 0xa6, 0xd0, 0x1b, - 0xb, 0x51, 0xb9, 0x54, 0xe7, 0xd8, 0xda, 0xb6, 0xc1, 0xcd, 0x1e, 0xb, - 0x7c, 0xc3, 0x5f, 0xc3, 0xf7, 0x33, 0xc4, 0xf7, 0xf, 0xc4, 0xb, 0x6, - 0x96, 0xc3, 0x5, 0xb, 0xb4, 0x62, 0x4d, 0xa4, 0x46, 0x1b, 0xfb, 0x3f, - 0xfb, 0x2b, 0xfb, 0x24, 0xfb, 0x7c, 0xfb, 0x8, 0xce, 0x21, 0xf7, 0x3d, - 0xd4, 0xd9, 0x9f, 0xa5, 0xcf, 0x1f, 0xac, 0xf7, 0x42, 0x5, 0xbf, 0x36, - 0xa, 0xfb, 0xa2, 0x6, 0xb, 0x8b, 0xc1, 0xf8, 0x5a, 0xc1, 0x1, 0xb, - 0xa2, 0x3c, 0x15, 0x76, 0x59, 0x5, 0x80, 0xbd, 0xdc, 0x7a, 0xdd, 0x1b, - 0xf7, 0x10, 0xe3, 0xbf, 0xf0, 0xa2, 0x1f, 0xd9, 0xf8, 0x12, 0x5, 0xc7, - 0x6, 0x95, 0xbe, 0x5, 0xfb, 0x6, 0x6, 0x7c, 0x4c, 0x5, 0xb, 0xb8, - 0xb5, 0x85, 0x84, 0xb5, 0x1f, 0xe, 0x70, 0xa0, 0x71, 0xae, 0xb0, 0xaf, - 0xab, 0xb4, 0xaa, 0x73, 0xa1, 0x6c, 0x65, 0x67, 0x68, 0x65, 0x1e, 0xb, - 0xf3, 0xef, 0xb4, 0xc8, 0xc0, 0xbd, 0x75, 0x59, 0x9b, 0x1e, 0xc2, 0x9c, - 0x5, 0xc3, 0x79, 0x6d, 0xc4, 0xfb, 0x9, 0x1b, 0xfb, 0xc, 0x23, 0x32, - 0x27, 0x1f, 0x8a, 0xb, 0x2a, 0xa, 0xfb, 0x5f, 0x2d, 0xa, 0xb, 0xf8, - 0x2f, 0x6, 0x98, 0xc1, 0x5, 0xfb, 0x45, 0x6, 0xea, 0xb, 0x6, 0x7f, - 0x55, 0x5, 0xb, 0x6, 0x97, 0xc2, 0x5, 0xb, 0x6, 0x97, 0xc1, 0x5, - 0xb, 0x15, 0xd9, 0x6, 0xf7, 0x40, 0xf7, 0x33, 0x65, 0x9d, 0xfb, 0x33, - 0xfb, 0xb, 0xfb, 0x11, 0xf7, 0xc, 0x5f, 0x78, 0x5, 0xe, 0x1, 0xc4, - 0xc9, 0xf7, 0xff, 0xc8, 0x3, 0xb, 0x12, 0xba, 0xc5, 0xf7, 0xee, 0xc4, - 0xb, 0x3b, 0xa, 0xf7, 0x73, 0x77, 0x4a, 0xa, 0x13, 0x7e, 0xb, 0x15, - 0xdb, 0x6, 0xf7, 0x46, 0xf7, 0x33, 0x65, 0x9f, 0xfb, 0x3d, 0xfb, 0xf, - 0xfb, 0x12, 0xf7, 0xe, 0x5f, 0x77, 0x5, 0xb, 0x6, 0x95, 0xc1, 0x5, - 0xb, 0x7c, 0xc1, 0x60, 0xc2, 0xf7, 0xdd, 0xc3, 0xb, 0xf7, 0x63, 0xf7, - 0x4a, 0xf7, 0x60, 0x3, 0xb, 0x1, 0xe7, 0xbf, 0xf7, 0xc4, 0xbf, 0x3, - 0xb, 0x5, 0xc3, 0x6, 0xb, 0x5, 0x54, 0x6, 0xb, 0x1b, 0xb7, 0xb9, - 0x9d, 0xa7, 0xb1, 0x1f, 0x7d, 0xb8, 0x5, 0x7f, 0x77, 0x53, 0x76, 0x67, - 0x1b, 0xb, 0x15, 0xda, 0x6, 0xa5, 0xf7, 0xa, 0x5, 0x3d, 0x6, 0xb, - 0x5, 0xfb, 0x1b, 0x6, 0xb, 0x6, 0x7f, 0x54, 0x5, 0xb, 0x63, 0xa, - 0x6, 0xb, 0xfc, 0x5a, 0x5, 0xb, 0x70, 0xa, 0xf7, 0x78, 0x77, 0x50, - 0xa, 0xb, 0x5d, 0xa, 0xf7, 0x74, 0x77, 0x49, 0xa, 0xb, 0x8b, 0x61, - 0xa, 0xf7, 0x5e, 0xc1, 0xb, 0x6, 0xa4, 0x88, 0xa, 0xb, 0x7c, 0xc2, - 0xf7, 0xf4, 0xc3, 0xb, 0x6, 0x30, 0x58, 0xa, 0xb, 0x6, 0x81, 0x55, - 0x5, 0xb, 0x6, 0x80, 0x53, 0x5, 0xb, 0xc1, 0xf7, 0x5d, 0xc1, 0xb, - 0x5, 0x52, 0x6, 0xb, 0x5, 0xfb, 0x0, 0xb, 0xf7, 0x7e, 0x5, 0xb, - 0xf8, 0x9a, 0x76, 0xf7, 0x43, 0x77, 0x1, 0xb, 0x5, 0xfb, 0x21, 0x38, - 0xa, 0xb, 0x6, 0x81, 0x54, 0x5, 0xb, 0x6, 0x81, 0x56, 0x5, 0xb, - 0x95, 0xc2, 0x5, 0xb, 0x5, 0xc2, 0x6, 0xb, 0x5, 0x39, 0x6, 0xb, - 0x15, 0x74, 0x97, 0x76, 0xa4, 0xa6, 0xa5, 0xa8, 0xa9, 0xa1, 0x7d, 0xb, - 0x15, 0x57, 0xb4, 0x5b, 0xcd, 0xdf, 0xd1, 0xd3, 0xdd, 0xbd, 0x69, 0xb, - 0x6, 0xa4, 0xf7, 0x7, 0x5, 0xb, 0x8b, 0xc2, 0xf7, 0xdb, 0xc2, 0xb, - 0x79, 0xc1, 0xf8, 0x6d, 0xc3, 0xb, 0x5, 0x53, 0x6, 0xb, 0x71, 0x5f, - 0x6c, 0x61, 0x55, 0x68, 0x71, 0xa1, 0xa9, 0x1e, 0xb, 0xf7, 0x1c, 0x76, - 0xf7, 0x32, 0xbd, 0xf7, 0x34, 0x77, 0x1, 0xb, 0x77, 0x1, 0xf7, 0xa, - 0xc6, 0xf2, 0xc7, 0x3, 0xf7, 0xac, 0xb, 0x6, 0xf7, 0x29, 0x64, 0xa, - 0x2f, 0x6, 0xe, 0x6, 0x94, 0xc1, 0x5, 0xb, 0x6, 0x69, 0xa, 0xb, - 0x6, 0x96, 0xbe, 0x5, 0xb, 0xf7, 0x24, 0x5, 0xe, 0xfc, 0x5d, 0x5, - 0xb, 0x5, 0x38, 0x6, 0xb, 0xe2, 0xdd, 0x9b, 0x1f, 0xd1, 0xf7, 0xf8, - 0x5, 0xb, 0x77, 0x1, 0xad, 0xc1, 0xf8, 0x3a, 0xc2, 0x3, 0xb, 0x8b, - 0xbe, 0xf7, 0x12, 0xc1, 0xf7, 0xac, 0xc1, 0xb, 0xf7, 0x1d, 0xc4, 0xf7, - 0x71, 0x77, 0x1, 0xc1, 0xb, 0x6, 0x96, 0xc0, 0x5, 0xb, 0x5, 0xf7, - 0xbe, 0x6, 0xb, 0x6, 0x80, 0x57, 0x5, 0xb, 0x5, 0xfb, 0x18, 0x6, - 0xb, 0xf7, 0x78, 0x77, 0x1, 0xb, 0x15, 0xdd, 0x6, 0xb, 0xf7, 0x1f, - 0x6, 0xb, 0xf8, 0x5a, 0x5, 0xb, 0xf7, 0x8, 0x5, 0xb, 0x5, 0x3b, - 0x6, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSans.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSans.cpp deleted file mode 100644 index 26cd319403..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSans.cpp +++ /dev/null @@ -1,1262 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSansFontData[15025] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xd, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x4f, 0x54, 0x46, 0x0, 0x1, 0x1, - 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, - 0x1d, 0x3, 0xf8, 0x18, 0x4, 0xfb, 0x3a, 0xfb, 0x75, 0xfa, 0x7c, 0xfa, - 0x45, 0x5, 0xf7, 0x16, 0xf, 0xf8, 0xe1, 0x11, 0xab, 0x1c, 0x34, 0xa2, - 0x12, 0x0, 0x3, 0x1, 0x1, 0x5, 0x2f, 0x3d, 0x45, 0x75, 0x72, 0x6f, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, - 0x53, 0x61, 0x6e, 0x73, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x0, 0x0, - 0x22, 0x0, 0x8a, 0x0, 0xab, 0x0, 0xac, 0x0, 0xad, 0x0, 0xae, 0x0, - 0xaf, 0x0, 0xb0, 0x0, 0x23, 0x0, 0x24, 0x0, 0xb1, 0x0, 0x25, 0x0, - 0x26, 0x0, 0xb2, 0x0, 0xb3, 0x0, 0xb4, 0x0, 0xb5, 0x0, 0x9a, 0x1, - 0x87, 0x0, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0xb6, 0x0, - 0xb7, 0x0, 0xb8, 0x0, 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, - 0x8c, 0x0, 0x2e, 0x0, 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, 0x0, - 0xbb, 0x0, 0xbc, 0x0, 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, 0x0, - 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0xc0, 0x0, 0x35, 0x0, - 0x9d, 0x0, 0x36, 0x0, 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, - 0x37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x3a, 0x0, 0xc5, 0x0, 0xc6, 0x0, - 0x3b, 0x0, 0xc7, 0x0, 0x42, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0x7d, 0x0, - 0xca, 0x0, 0x90, 0x0, 0xcb, 0x0, 0x7, 0x0, 0xcc, 0x0, 0x3f, 0x0, - 0x5f, 0x0, 0xb, 0x0, 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, 0x0, - 0x5d, 0x0, 0x5c, 0x0, 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, 0x0, - 0xa0, 0x0, 0x74, 0x0, 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, 0x0, - 0x61, 0x0, 0x7e, 0x0, 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, 0x0, - 0x45, 0x0, 0x70, 0x0, 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, 0x0, - 0x5, 0x0, 0x82, 0x0, 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, 0x0, - 0xd1, 0x0, 0xd2, 0x0, 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, 0x0, - 0x1e, 0x0, 0xa7, 0x0, 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, 0x0, - 0x16, 0x0, 0x6e, 0x0, 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, 0x0, - 0x95, 0x0, 0x7c, 0x0, 0x1f, 0x0, 0x6a, 0x0, 0x78, 0x0, 0x6b, 0x0, - 0x6c, 0x0, 0x49, 0x0, 0x86, 0x0, 0xe, 0x0, 0x4a, 0x0, 0xd3, 0x0, - 0xd4, 0x0, 0xd5, 0x0, 0xd6, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, 0x0, - 0x1d, 0x0, 0x97, 0x0, 0x92, 0x0, 0x4e, 0x0, 0x80, 0x0, 0xa6, 0x0, - 0x98, 0x0, 0xa8, 0x0, 0x4f, 0x0, 0x1a, 0x0, 0xd7, 0x0, 0x4, 0x0, - 0x50, 0x0, 0xd8, 0x0, 0xd9, 0x0, 0xda, 0x0, 0x94, 0x0, 0x87, 0x0, - 0xdb, 0x0, 0x12, 0x0, 0x9b, 0x0, 0x9e, 0x0, 0x96, 0x0, 0x8b, 0x0, - 0x8f, 0x0, 0x93, 0x0, 0xdc, 0x0, 0x51, 0x0, 0x73, 0x0, 0x9, 0x0, - 0xa, 0x0, 0x6, 0x0, 0xf, 0x0, 0x72, 0x0, 0x7a, 0x0, 0xc, 0x0, - 0x9c, 0x0, 0x52, 0x0, 0x20, 0x0, 0x7b, 0x0, 0x3, 0x0, 0x76, 0x0, - 0x69, 0x0, 0x77, 0x0, 0x41, 0x0, 0x8, 0x0, 0x75, 0x0, 0x68, 0x0, - 0x53, 0x0, 0xa5, 0x0, 0x84, 0x0, 0x54, 0x0, 0xdd, 0x0, 0x66, 0x0, - 0x1c, 0x0, 0x18, 0x0, 0x17, 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, - 0x55, 0x0, 0xa2, 0x0, 0x14, 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, - 0x99, 0x0, 0x13, 0x0, 0xa4, 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, - 0xe0, 0x0, 0xe1, 0x0, 0x40, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, - 0x5a, 0x0, 0xe2, 0x0, 0xe3, 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, - 0x11, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, 0x36, 0x0, 0x75, - 0x0, 0x8a, 0x0, 0xa2, 0x0, 0xc2, 0x0, 0xd3, 0x1, 0x4, 0x1, 0x32, - 0x1, 0x92, 0x1, 0xe1, 0x2, 0x5b, 0x2, 0x9d, 0x2, 0xc0, 0x2, 0xcd, - 0x2, 0xd9, 0x2, 0xeb, 0x2, 0xfc, 0x3, 0x47, 0x3, 0xc2, 0x3, 0xe1, - 0x4, 0x42, 0x4, 0x68, 0x4, 0x77, 0x4, 0x87, 0x4, 0xa4, 0x4, 0xbf, - 0x4, 0xd0, 0x5, 0x1, 0x5, 0x2f, 0x5, 0x44, 0x5, 0x71, 0x5, 0xa7, - 0x5, 0xcc, 0x6, 0x16, 0x6, 0x68, 0x6, 0xd7, 0x6, 0xe8, 0x6, 0xf9, - 0x7, 0x8, 0x7, 0x21, 0x7, 0xa4, 0x7, 0xdf, 0x8, 0x1c, 0x8, 0x98, - 0x8, 0xf0, 0x9, 0x58, 0x9, 0xc6, 0x9, 0xe1, 0xa, 0x25, 0xa, 0x58, - 0xa, 0x60, 0xa, 0x67, 0xa, 0x74, 0xa, 0x7b, 0xa, 0x96, 0xa, 0xcf, - 0xb, 0x3, 0xb, 0x2a, 0xb, 0x4e, 0xb, 0x76, 0xb, 0x90, 0xb, 0xb2, - 0xc, 0x31, 0xc, 0x40, 0xc, 0x4e, 0xc, 0x5c, 0xc, 0x6a, 0xd, 0x12, - 0xd, 0x37, 0xd, 0xcd, 0xe, 0xa, 0xe, 0x2c, 0xe, 0x74, 0xe, 0xc8, - 0xf, 0x7c, 0xf, 0xb4, 0x10, 0xb, 0x10, 0x21, 0x10, 0x37, 0x10, 0x85, - 0x10, 0xd3, 0x10, 0xf1, 0x11, 0xe, 0x11, 0x32, 0x11, 0x4f, 0x11, 0x70, - 0x11, 0xba, 0x11, 0xd1, 0x12, 0x42, 0x12, 0x76, 0x12, 0xed, 0x13, 0x3, - 0x13, 0x1c, 0x13, 0x40, 0x13, 0xd1, 0x14, 0x41, 0x14, 0x90, 0x14, 0xb4, - 0x14, 0xe5, 0x15, 0x1d, 0x15, 0x39, 0x15, 0x62, 0x15, 0xe9, 0x15, 0xfd, - 0x16, 0xb, 0x16, 0x5c, 0x16, 0x6f, 0x16, 0x81, 0x16, 0xcb, 0x16, 0xe6, - 0x17, 0x5a, 0x17, 0x81, 0x17, 0x91, 0x17, 0x9f, 0x17, 0xbb, 0x18, 0x2e, - 0x18, 0x56, 0x18, 0x7e, 0x18, 0xae, 0x18, 0xc2, 0x19, 0x15, 0x19, 0x25, - 0x19, 0x87, 0x19, 0xb7, 0x19, 0xcf, 0x1a, 0x40, 0x1a, 0xa3, 0x1a, 0xba, - 0x1a, 0xd6, 0x1b, 0x8, 0x1b, 0x3a, 0x1b, 0x54, 0x1b, 0x6e, 0x1b, 0xa4, - 0x1b, 0xb8, 0x1b, 0xc9, 0x1b, 0xe0, 0x1b, 0xf1, 0x1c, 0xe, 0x1c, 0x29, - 0x1c, 0x3a, 0x1c, 0x6b, 0x1c, 0x92, 0x1c, 0x9a, 0x1c, 0xb7, 0x1c, 0xcb, - 0x1c, 0xe9, 0x1d, 0x3b, 0x1d, 0x4c, 0x1d, 0x58, 0x1d, 0x9b, 0x1d, 0xd1, - 0x1e, 0x1, 0x1e, 0x62, 0x1e, 0xd1, 0x1f, 0x38, 0x1f, 0x7d, 0x1f, 0x8f, - 0x1f, 0xa1, 0x1f, 0xb5, 0x20, 0x40, 0x20, 0x73, 0x20, 0x8c, 0x20, 0xb0, - 0x21, 0x2d, 0x21, 0x85, 0x21, 0xad, 0x22, 0x24, 0x22, 0x66, 0x22, 0xdf, - 0x23, 0x25, 0x23, 0x6e, 0x23, 0x9e, 0x23, 0xd2, 0x24, 0x8, 0x24, 0x9d, - 0x24, 0xac, 0x24, 0xc3, 0x25, 0x37, 0x25, 0x59, 0x25, 0x89, 0x25, 0xd3, - 0x26, 0x29, 0x26, 0x7f, 0x26, 0x9a, 0x26, 0xb5, 0x26, 0xd1, 0x26, 0xf2, - 0x27, 0x16, 0x27, 0x38, 0x27, 0x5a, 0x27, 0x77, 0x27, 0xa8, 0x28, 0x45, - 0x28, 0x7d, 0x28, 0xd4, 0x29, 0x32, 0x29, 0xcd, 0x29, 0xf8, 0x2a, 0x24, - 0x2a, 0x87, 0x2a, 0x9d, 0x2a, 0xa0, 0x2b, 0x31, 0x2b, 0x6b, 0x2b, 0xc2, - 0x2c, 0x21, 0x2c, 0xba, 0x2d, 0x14, 0x2d, 0x50, 0x2d, 0x9d, 0x2d, 0xeb, - 0x2e, 0x36, 0x2e, 0x6b, 0x2e, 0x7a, 0x2e, 0x88, 0x2e, 0xbc, 0x2e, 0xd8, - 0x2e, 0xe4, 0x2f, 0x0, 0x2f, 0x33, 0x2f, 0x62, 0x2f, 0xa0, 0x2f, 0xb3, - 0x2f, 0xcb, 0x30, 0x12, 0x30, 0x23, 0x30, 0x3c, 0x30, 0x85, 0xfc, 0x31, - 0xe, 0x5f, 0xa, 0xf7, 0x70, 0xd6, 0xf8, 0x3b, 0x77, 0x1, 0x99, 0x16, - 0xea, 0x6, 0xd8, 0xf7, 0x70, 0x5, 0xf7, 0xb2, 0x6, 0xdb, 0xfb, 0x70, - 0x5, 0xf1, 0x6, 0xfb, 0xaa, 0xf9, 0x62, 0x5, 0x28, 0x6, 0x49, 0xfc, - 0x3b, 0x15, 0xf7, 0x4, 0xf7, 0xef, 0x5, 0x8d, 0x6, 0xf7, 0xb, 0xfb, - 0xef, 0x5, 0xe, 0xf7, 0xc9, 0x8b, 0xdf, 0xf7, 0xf, 0xdf, 0xaf, 0xdf, - 0xf7, 0x72, 0xe0, 0x1, 0xf8, 0x78, 0xea, 0x3, 0x93, 0x16, 0xf2, 0x6, - 0xec, 0xf7, 0x63, 0x5, 0xf7, 0xa8, 0xfb, 0x63, 0xf8, 0x67, 0xdf, 0xfc, - 0x8, 0xf7, 0x87, 0xf7, 0xdf, 0xdf, 0xfb, 0xdf, 0xf7, 0x72, 0xf8, 0x7, - 0xe0, 0xfc, 0xea, 0x6, 0x23, 0xfc, 0x3f, 0x15, 0xf7, 0x39, 0xf7, 0xea, - 0x5, 0xd2, 0xfb, 0xea, 0x6, 0xe, 0x46, 0xa, 0xf8, 0x7f, 0xf7, 0x19, - 0x1, 0x27, 0xa, 0xfb, 0x44, 0xf8, 0x7f, 0x4c, 0xa, 0xf7, 0x0, 0xf7, - 0x19, 0x59, 0xa, 0x35, 0xa, 0xfb, 0x9d, 0xf8, 0x7f, 0x15, 0xef, 0x6, - 0xc3, 0xda, 0xc0, 0x3c, 0x5, 0xef, 0x6, 0xfb, 0x2, 0xf7, 0x19, 0x5, - 0x2e, 0x6, 0xe, 0x46, 0xa, 0xf8, 0x86, 0xed, 0x1, 0xf7, 0x5a, 0xe5, - 0xe6, 0xe5, 0x3, 0x27, 0xa, 0xfb, 0x8a, 0xf8, 0x86, 0x15, 0xe5, 0xed, - 0x31, 0x6, 0xf7, 0x49, 0x29, 0x15, 0xe5, 0xed, 0x31, 0x6, 0xe, 0x35, - 0xa, 0xfb, 0x11, 0xf8, 0x7a, 0x15, 0xd0, 0x6, 0x4c, 0xf7, 0x1e, 0x5, - 0xfb, 0x1, 0x6, 0xe, 0x46, 0xa, 0xf8, 0x65, 0xaf, 0xf2, 0xaf, 0x1, - 0xf7, 0x85, 0xaf, 0xf3, 0xaf, 0x3, 0x27, 0xa, 0xfb, 0x5f, 0xf8, 0xbe, - 0x64, 0xa, 0xaf, 0x5a, 0x5a, 0x65, 0x67, 0x5a, 0x1e, 0xaf, 0x16, 0xa5, - 0xa1, 0xa3, 0xa9, 0xa9, 0xa1, 0x75, 0x6f, 0x6e, 0x74, 0x73, 0x6e, 0x70, - 0x72, 0xa0, 0xab, 0x1e, 0xe, 0x46, 0xa, 0xf8, 0x87, 0x75, 0xa, 0x13, - 0xe0, 0x27, 0xa, 0xfb, 0xa6, 0xf8, 0x87, 0x6b, 0xa, 0xa3, 0xa2, 0x80, - 0x7f, 0xa1, 0x1f, 0x80, 0xa0, 0x9f, 0x7f, 0x53, 0xa, 0x7e, 0x7b, 0x92, - 0x93, 0x79, 0x1f, 0x13, 0xd0, 0x97, 0x72, 0x70, 0x99, 0x6d, 0x1b, 0x13, - 0xe0, 0x73, 0xa, 0x73, 0x8b, 0xe0, 0xf7, 0x8a, 0xe0, 0xf7, 0x6d, 0xe0, - 0x1, 0xd5, 0xea, 0xf7, 0xd2, 0xe8, 0x3, 0xd5, 0x16, 0xf7, 0x82, 0x6, - 0xf7, 0x18, 0xf7, 0x4b, 0xa5, 0xf7, 0x4a, 0xc3, 0x67, 0xdf, 0xfb, 0x2, - 0xac, 0x1f, 0xe8, 0xba, 0x91, 0xce, 0xa5, 0x1a, 0xf7, 0x32, 0xfb, 0x26, - 0xb2, 0xfb, 0xe, 0x1e, 0xfb, 0x82, 0x6, 0xea, 0xfd, 0xd, 0x15, 0xf7, - 0x8a, 0xf7, 0x23, 0x7, 0xc5, 0xf7, 0x33, 0x8b, 0xfb, 0xf, 0xfb, 0x10, - 0xfb, 0x3b, 0x8c, 0x59, 0x1f, 0xfb, 0x23, 0xf7, 0xdf, 0x15, 0xf7, 0x6d, - 0xf7, 0x23, 0x7, 0xda, 0xeb, 0x89, 0xfb, 0x2, 0x21, 0xfb, 0x4, 0x8c, - 0x4c, 0x1f, 0xe, 0xaa, 0x78, 0xde, 0xf8, 0xe2, 0xde, 0x1, 0xc3, 0xee, - 0x3, 0xf8, 0xde, 0xf7, 0x8d, 0x15, 0x32, 0x78, 0x53, 0x2b, 0xfb, 0x1d, - 0x1b, 0xfb, 0x40, 0x50, 0xf7, 0x47, 0xf7, 0xc, 0xf7, 0xa, 0xab, 0xf7, - 0x41, 0xf7, 0x5b, 0xf7, 0x19, 0xbc, 0x2c, 0x50, 0x9e, 0x1f, 0xe9, 0xa1, - 0x5, 0xf7, 0x2b, 0x60, 0xfb, 0xf, 0xcb, 0xfb, 0x15, 0x1b, 0xfb, 0x45, - 0xfb, 0x2d, 0xfb, 0x8, 0xfb, 0x96, 0xfb, 0x57, 0xe1, 0xfb, 0x4f, 0xf7, - 0x88, 0xd9, 0xf7, 0x41, 0xa2, 0xf7, 0x70, 0xc3, 0x1f, 0xe, 0xaa, 0xfb, - 0x60, 0x76, 0xf7, 0x67, 0xda, 0xf8, 0xe1, 0xde, 0x1, 0xb7, 0xee, 0xf7, - 0x85, 0xe1, 0x3, 0xf7, 0xda, 0x7d, 0x15, 0x72, 0x3f, 0x5, 0xbf, 0x8a, - 0xaa, 0x80, 0x70, 0x1a, 0x65, 0xfb, 0x7, 0x91, 0x78, 0x8a, 0x1e, 0x87, - 0x4c, 0x5, 0xf7, 0x2d, 0xd2, 0x9e, 0xd8, 0xae, 0x75, 0xb0, 0x4e, 0x92, - 0x1f, 0x91, 0xac, 0x5, 0xf7, 0x1e, 0xf7, 0x0, 0xd8, 0xf7, 0x3a, 0xb5, - 0x1f, 0x2b, 0xa4, 0x5, 0x2f, 0x75, 0x59, 0x2d, 0xfb, 0x1e, 0x1b, 0xfb, - 0x42, 0x51, 0xf7, 0x2d, 0xf7, 0x21, 0xf7, 0x1a, 0xbc, 0xf7, 0x35, 0xf7, - 0x52, 0xf7, 0x19, 0xb4, 0x2e, 0x50, 0x9d, 0x1f, 0xe9, 0xa1, 0x5, 0xf7, - 0x2c, 0x60, 0xfb, 0x7, 0xc8, 0xfb, 0x13, 0x1b, 0xfb, 0x31, 0xfb, 0x4a, - 0x28, 0xfb, 0xab, 0xfb, 0x38, 0xd0, 0xfb, 0x65, 0xf7, 0x69, 0x1f, 0xe, - 0xaa, 0x8b, 0xe0, 0xf8, 0xb8, 0xe0, 0x12, 0xdc, 0xea, 0xf8, 0x24, 0xed, - 0x17, 0xdc, 0x16, 0xf7, 0x8a, 0x6, 0xf7, 0x6e, 0xf7, 0x15, 0xf7, 0x10, - 0xf7, 0x82, 0x1f, 0x13, 0xe0, 0xf7, 0x9a, 0xfb, 0x24, 0xe9, 0xfb, 0x5f, - 0x1e, 0xfb, 0x8a, 0x6, 0xea, 0xfd, 0xd, 0x15, 0xf8, 0xb8, 0x7, 0x13, - 0xd0, 0xf7, 0x2b, 0x6, 0xf7, 0x2e, 0xea, 0x21, 0xfb, 0x39, 0xfb, 0xac, - 0xfb, 0x39, 0x8e, 0x37, 0x1f, 0xe, 0x73, 0x8b, 0xe0, 0xf7, 0x86, 0xe0, - 0xf7, 0x71, 0xe0, 0x6e, 0xa, 0x3, 0xe1, 0x16, 0xf9, 0x62, 0xf8, 0x85, - 0x36, 0xfc, 0x26, 0xfb, 0x71, 0xf8, 0x15, 0x36, 0xfc, 0x15, 0xfb, 0x86, - 0xf8, 0x26, 0x36, 0x7, 0xe, 0x43, 0xa, 0xc3, 0xf7, 0x1d, 0x36, 0xa, - 0xf7, 0x54, 0xc3, 0x2f, 0xa, 0xe, 0x43, 0xa, 0xf7, 0x55, 0x77, 0x36, - 0xa, 0xf2, 0xc3, 0x2c, 0xa, 0xe, 0x43, 0xa, 0xcc, 0xef, 0x6e, 0xa, - 0xa6, 0xe5, 0xe6, 0xe5, 0x30, 0xa, 0xf7, 0xe, 0xcc, 0x2e, 0xa, 0xe, - 0x43, 0xa, 0xc7, 0xf7, 0x19, 0x36, 0xa, 0xf7, 0x8f, 0xc7, 0x4c, 0xa, - 0x4a, 0xf7, 0x19, 0x59, 0xa, 0xaa, 0x8b, 0xe0, 0xf7, 0x7b, 0xe0, 0xf7, - 0x7c, 0xe0, 0x1, 0xdb, 0xea, 0xf8, 0x25, 0xed, 0x3, 0xdb, 0x16, 0xf7, - 0x89, 0x6, 0xf7, 0x5a, 0xf7, 0x2b, 0xf7, 0xc, 0xf7, 0x86, 0xf7, 0x9a, - 0xfb, 0x26, 0xe9, 0xfb, 0x5f, 0x1f, 0xfb, 0x89, 0xfb, 0xd1, 0x3b, 0x36, - 0xdb, 0x6, 0xea, 0xfb, 0x7b, 0x15, 0xf7, 0x7b, 0xf7, 0x57, 0xe0, 0xfb, - 0x57, 0xf7, 0x7c, 0xf7, 0x2a, 0x7, 0xf7, 0x34, 0xe6, 0x46, 0xfb, 0x5e, - 0xfb, 0xab, 0xfb, 0x3b, 0x8d, 0x37, 0x1f, 0xe, 0x73, 0x8b, 0xda, 0xf7, - 0x43, 0xcb, 0xdf, 0xcb, 0xf7, 0x41, 0xda, 0x1, 0x99, 0xf7, 0x93, 0x15, - 0xf4, 0x6, 0xfb, 0x40, 0xb7, 0xe4, 0x38, 0xf7, 0x6b, 0x1b, 0xc1, 0xc9, - 0x94, 0x9d, 0xbb, 0x1f, 0xed, 0x7, 0x68, 0x5e, 0x50, 0x80, 0x4f, 0x1b, - 0xfb, 0x20, 0x31, 0xcb, 0xf7, 0x4, 0x73, 0x1f, 0xf7, 0xe4, 0x6, 0x9a, - 0xcb, 0x5, 0xfb, 0xff, 0x6, 0x8a, 0x99, 0x8b, 0xae, 0x8c, 0xac, 0x8, - 0xf8, 0xf, 0x6, 0x9a, 0xcb, 0x5, 0xfc, 0x15, 0x6, 0xf7, 0x6, 0xa2, - 0xf7, 0x2, 0xc7, 0xf7, 0x19, 0x1b, 0xc5, 0xbf, 0x7b, 0x6c, 0xb8, 0x1f, - 0xa2, 0xe2, 0x5, 0xa7, 0x56, 0x4b, 0x96, 0x4e, 0x1b, 0xfb, 0x5b, 0xfb, - 0x12, 0x32, 0xfb, 0x38, 0x66, 0x1f, 0x37, 0x6, 0x7b, 0x4b, 0x5, 0xe7, - 0x6, 0x8a, 0x77, 0x8c, 0x61, 0x8c, 0x77, 0x8, 0x3e, 0x6, 0xe, 0x3b, - 0xa0, 0x76, 0xf7, 0xd8, 0xe0, 0xf7, 0x74, 0xe0, 0x6e, 0xa, 0x3, 0xe1, - 0x16, 0xea, 0xf7, 0xd8, 0xf7, 0xdb, 0xe0, 0xfb, 0xdb, 0xf7, 0x74, 0xf8, - 0x26, 0xe0, 0xfc, 0x85, 0x6, 0xe, 0xe2, 0x78, 0xe2, 0xf7, 0x66, 0xe2, - 0xf7, 0xb5, 0xde, 0x12, 0xbb, 0xea, 0xf8, 0x6a, 0xe6, 0x17, 0xf8, 0x29, - 0xf7, 0xaa, 0x15, 0xf7, 0x64, 0xfb, 0x1c, 0x6, 0x7d, 0x7a, 0x39, 0x4f, - 0x20, 0x1b, 0x13, 0x30, 0xfb, 0x3c, 0x2b, 0xf7, 0xc, 0xf7, 0x3b, 0xd2, - 0xa2, 0xf7, 0x78, 0xf7, 0x83, 0x1f, 0x13, 0xf8, 0xf7, 0x35, 0xa9, 0xfb, - 0x5, 0x5d, 0x98, 0x1f, 0xdf, 0xa3, 0x5, 0xc0, 0x7e, 0x64, 0xf7, 0x39, - 0xfb, 0x80, 0x1b, 0xfb, 0xb4, 0x46, 0xfb, 0x82, 0xfb, 0x24, 0xfb, 0x7b, - 0xf7, 0x24, 0xfb, 0x23, 0xf7, 0x6b, 0xf7, 0x2d, 0xf5, 0xdd, 0xaa, 0xb1, - 0x1f, 0xf7, 0xa3, 0xfb, 0xbf, 0x7, 0xe, 0xaa, 0xa0, 0x76, 0xf7, 0xe5, - 0xe0, 0xf7, 0xbc, 0x77, 0x1, 0xd8, 0xea, 0xf8, 0xf, 0xea, 0x3, 0xd8, - 0x16, 0xea, 0xf7, 0xe5, 0xf8, 0xf, 0xfb, 0xe5, 0xea, 0xf9, 0x62, 0x2c, - 0xfb, 0xbc, 0xfc, 0xf, 0xf7, 0xbc, 0x2c, 0x6, 0xe, 0xfc, 0x31, 0x39, - 0xa, 0xe6, 0xec, 0x3, 0xe6, 0x16, 0xec, 0xf9, 0x62, 0x2a, 0x6, 0xe, - 0x61, 0xa, 0xd2, 0xf9, 0xab, 0x4c, 0xa, 0xf7, 0x15, 0xf7, 0x1e, 0x38, - 0xa, 0x48, 0x51, 0xa, 0x4b, 0xa, 0xf9, 0xac, 0xf7, 0x1d, 0x1, 0xe5, - 0xea, 0x3, 0x85, 0xf9, 0xac, 0x15, 0xef, 0x6, 0xba, 0xde, 0xb8, 0x38, - 0x5, 0xee, 0x6, 0x26, 0x42, 0xa, 0x8a, 0x51, 0xa, 0x4b, 0xa, 0xf9, - 0xb5, 0xef, 0x12, 0x98, 0xe5, 0x7e, 0xea, 0x82, 0xe5, 0x13, 0xd0, 0xe5, - 0x16, 0xea, 0xf9, 0x60, 0x2c, 0x6, 0x13, 0xe8, 0x3e, 0xe0, 0x58, 0xa, - 0x61, 0xa, 0xf7, 0x1e, 0xf9, 0xaa, 0x15, 0xd1, 0x6, 0x35, 0xf7, 0x1f, - 0x38, 0xa, 0xde, 0x51, 0xa, 0xfb, 0x53, 0x78, 0xe0, 0xf9, 0x20, 0x77, - 0x1, 0x9c, 0xe1, 0xf7, 0x7a, 0xea, 0x3, 0x9c, 0xf7, 0x5b, 0x15, 0xfb, - 0x4c, 0xf7, 0x19, 0x69, 0xd2, 0xf7, 0x49, 0xa5, 0xf7, 0x13, 0xf7, 0x3, - 0x1e, 0xf8, 0x87, 0x2c, 0xfc, 0x87, 0x7, 0x50, 0x86, 0x2d, 0x20, 0x27, - 0x7b, 0xeb, 0xbc, 0x89, 0x1e, 0xe, 0x73, 0x39, 0xa, 0xd7, 0xea, 0x3, - 0xd7, 0x16, 0xea, 0xf7, 0x8c, 0x6, 0xf7, 0xa, 0xf7, 0x6, 0xf7, 0x8d, - 0xfb, 0xfe, 0x5, 0xf7, 0x11, 0x6, 0xfb, 0xc8, 0xf8, 0x3e, 0xf7, 0xbf, - 0xf7, 0xb8, 0x5, 0xfb, 0x14, 0x6, 0xfb, 0xf7, 0xfb, 0xf9, 0x5, 0xf7, - 0xf9, 0x2c, 0x7, 0xe, 0x8b, 0xe0, 0xf9, 0xd, 0x77, 0x1, 0xd7, 0xea, - 0x3, 0xd7, 0x16, 0xf8, 0x61, 0xe0, 0xfc, 0x2, 0xf9, 0xd, 0x2c, 0x6, - 0xe, 0x8b, 0xe0, 0xf9, 0xd, 0x77, 0x1, 0xd6, 0xea, 0x3, 0xd6, 0x16, - 0xf8, 0x62, 0xe0, 0xfc, 0x3, 0xf7, 0xa4, 0x6, 0xf7, 0x35, 0x5a, 0xa, - 0xdd, 0x7, 0xfb, 0x35, 0xfb, 0x1e, 0x5, 0xf7, 0xac, 0x2c, 0xfb, 0xfc, - 0x7, 0x2c, 0x38, 0x5, 0x3a, 0x7, 0xea, 0xdd, 0x5, 0xe, 0xf7, 0x22, - 0x39, 0xa, 0xd4, 0xe5, 0xf8, 0x90, 0xe5, 0x3, 0xd4, 0x16, 0xe5, 0xf8, - 0xf7, 0x8e, 0x6, 0xf7, 0x64, 0xfc, 0xf7, 0x5, 0xe0, 0x6, 0xf7, 0x66, - 0xf8, 0xed, 0x5, 0x8d, 0xfc, 0xed, 0xe5, 0xf9, 0x62, 0xfb, 0x16, 0x6, - 0xfb, 0x65, 0xfc, 0xfb, 0x5, 0x89, 0x6, 0xfb, 0x5e, 0xf8, 0xfb, 0x5, - 0xfb, 0x25, 0x6, 0xe, 0xaa, 0x39, 0xa, 0xd7, 0xe5, 0xf8, 0x1a, 0xe5, - 0x3, 0xd7, 0x16, 0xe5, 0xf8, 0xc8, 0x8d, 0x6, 0xf8, 0x11, 0xfc, 0xc8, - 0x5, 0xec, 0xf9, 0x62, 0x31, 0xfc, 0xc8, 0x89, 0x6, 0xfc, 0x11, 0xf8, - 0xc8, 0x5, 0x2a, 0x6, 0xe, 0xaa, 0xa0, 0x76, 0xf8, 0xd7, 0xf7, 0x2e, - 0xf7, 0x22, 0xb5, 0x1, 0xd7, 0xe5, 0xf8, 0x1a, 0xe5, 0x3, 0xd7, 0x16, - 0xe5, 0xf8, 0xc6, 0x8d, 0x6, 0xf8, 0x11, 0xfc, 0xc6, 0x5, 0xec, 0xf9, - 0x60, 0x31, 0xfc, 0xc6, 0x6, 0xfc, 0x13, 0xf8, 0xc6, 0x5, 0x2a, 0x6, - 0xf7, 0x18, 0xe3, 0x6b, 0xa, 0xa1, 0xa1, 0x7f, 0x80, 0xa1, 0x1f, 0x7f, - 0xa1, 0xa1, 0x80, 0x53, 0xa, 0x87, 0x78, 0x94, 0x95, 0x73, 0x1f, 0x96, - 0x72, 0x6c, 0x96, 0x71, 0x1b, 0x73, 0xa, 0xe2, 0x78, 0xde, 0xf8, 0xe2, - 0xde, 0x1, 0xc7, 0xef, 0xf8, 0x5f, 0xef, 0x3, 0xb2, 0xf7, 0xf8, 0x15, - 0xfb, 0x4f, 0xf7, 0xd, 0xfb, 0x50, 0xf7, 0x78, 0xf7, 0x57, 0xf7, 0x30, - 0xf7, 0x1f, 0xf7, 0x80, 0xf7, 0x7f, 0xfb, 0x2c, 0xf7, 0x26, 0xfb, 0x5b, - 0xfb, 0x4c, 0xfb, 0x39, 0xfb, 0xe, 0xfb, 0x97, 0x1e, 0xef, 0x16, 0xf7, - 0x18, 0xcf, 0xf7, 0x3a, 0xf7, 0x49, 0xf7, 0x10, 0xf7, 0x13, 0x32, 0xfb, - 0x65, 0xfb, 0x5c, 0xfb, 0xa, 0x2f, 0xfb, 0x19, 0xfb, 0x28, 0x26, 0xf7, - 0xd, 0xf7, 0x3f, 0x1e, 0xe, 0xf7, 0xc9, 0x78, 0xd7, 0x4c, 0xe0, 0xf7, - 0x8d, 0xe0, 0xf7, 0x79, 0xe0, 0x49, 0xd7, 0x12, 0xcd, 0xed, 0xf8, 0x2, - 0xe3, 0x13, 0x76, 0xf8, 0xa6, 0x85, 0x15, 0xf8, 0x47, 0xe0, 0xfb, 0xef, - 0xf7, 0x8d, 0xf7, 0xc7, 0xe0, 0xfb, 0xc7, 0xf7, 0x79, 0xf7, 0xe0, 0xe0, - 0xfc, 0x39, 0x2a, 0x89, 0x6, 0x13, 0x8e, 0xe2, 0x59, 0x39, 0x9f, 0x43, - 0x1b, 0xfb, 0x66, 0x3e, 0xfb, 0x48, 0xfb, 0x57, 0xfb, 0x3b, 0xca, 0xfb, - 0x6a, 0xf7, 0x74, 0xb5, 0xf1, 0x92, 0xf7, 0x1, 0xc8, 0x1f, 0x8d, 0x6, - 0xfc, 0x20, 0xf7, 0x9d, 0x15, 0xf7, 0xf, 0xac, 0xf7, 0x44, 0xf7, 0x30, - 0xf7, 0x2f, 0xb9, 0xfb, 0x5d, 0x29, 0xfb, 0xe, 0x58, 0xfb, 0x4b, 0xfb, - 0x2a, 0x25, 0x34, 0xf2, 0xf7, 0x5e, 0x1e, 0xe, 0x4f, 0xa, 0xbd, 0xf7, - 0x1d, 0x45, 0xa, 0xf7, 0xe2, 0xf9, 0xac, 0x2f, 0xa, 0xfb, 0xf2, 0x26, - 0xa, 0x4f, 0xa, 0xf7, 0x4f, 0x77, 0x45, 0xa, 0xf7, 0x7f, 0xf9, 0xac, - 0x2c, 0xa, 0xfb, 0xb8, 0x26, 0xa, 0x4f, 0xa, 0x45, 0xa, 0xbc, 0xf7, - 0xf9, 0x21, 0xa, 0xf4, 0xf8, 0x50, 0x2e, 0xa, 0xe, 0x4f, 0xa, 0xb9, - 0xf7, 0x21, 0x45, 0xa, 0xf8, 0x12, 0xf9, 0xa8, 0x15, 0xd5, 0x6, 0x49, - 0xf7, 0x21, 0x5, 0xfb, 0xa, 0x6, 0xfb, 0x73, 0x26, 0xa, 0xe2, 0x87, - 0xda, 0x42, 0x76, 0xf9, 0x28, 0xda, 0x9c, 0x77, 0x12, 0xb8, 0xed, 0xf8, - 0x7c, 0xed, 0x13, 0x6c, 0xb2, 0xa0, 0x15, 0xbc, 0x63, 0xdc, 0xe5, 0x5, - 0x13, 0x9c, 0x6c, 0xb6, 0xc4, 0x5f, 0xf7, 0xb, 0x1b, 0xf7, 0x48, 0xf7, - 0x35, 0xf7, 0x10, 0xf7, 0x80, 0xf7, 0x17, 0x60, 0xcd, 0x6a, 0xbb, 0x1f, - 0xe2, 0xeb, 0x5a, 0xb3, 0x39, 0x30, 0x5, 0x13, 0xac, 0xab, 0x60, 0x4e, - 0xb5, 0xfb, 0x9, 0x1b, 0xfb, 0x65, 0xfb, 0x1a, 0xfb, 0x25, 0xfb, 0x6d, - 0xfb, 0xf, 0xb2, 0x52, 0xb4, 0x4d, 0x1f, 0xc8, 0xce, 0x15, 0x76, 0xb3, - 0x75, 0xb3, 0xea, 0x1a, 0xf7, 0x75, 0xf7, 0x21, 0xc5, 0xf3, 0xdd, 0xb3, - 0x6f, 0x6c, 0xb3, 0x1e, 0xfb, 0xd7, 0xfc, 0x53, 0x15, 0xf8, 0x0, 0xf8, - 0x21, 0x5, 0xa4, 0x5d, 0x9a, 0x52, 0x42, 0x1a, 0xfb, 0x48, 0x24, 0x26, - 0xfb, 0x20, 0x34, 0x5c, 0xb2, 0xa0, 0x70, 0x1e, 0xe, 0x4f, 0xa, 0x45, - 0xa, 0xf7, 0x76, 0xf9, 0xb8, 0x15, 0xcc, 0x6, 0xbb, 0xab, 0x8a, 0x90, - 0x9e, 0xa2, 0x82, 0x80, 0xa3, 0x1e, 0x7f, 0xa7, 0xa3, 0x7d, 0x96, 0x1b, - 0xa0, 0xd6, 0x86, 0xf7, 0x9, 0x56, 0xa, 0x87, 0x78, 0x94, 0x96, 0x73, - 0x1f, 0x72, 0x96, 0x6d, 0x96, 0x70, 0x8a, 0x8, 0x5a, 0x59, 0x67, 0x3f, - 0x1f, 0xfb, 0x45, 0xfc, 0x53, 0x21, 0xa, 0xe, 0x5f, 0xa, 0xf7, 0xb6, - 0xe0, 0xf7, 0x96, 0xe0, 0x6e, 0xa, 0xf7, 0xda, 0xed, 0x3, 0xe1, 0x16, - 0xea, 0xf7, 0xb6, 0xf7, 0x44, 0x6, 0xf7, 0x18, 0xf7, 0x19, 0xbb, 0xf7, - 0x3c, 0xf7, 0x39, 0xfb, 0x15, 0xba, 0xfb, 0x1c, 0x1f, 0xfb, 0xa3, 0x6, - 0xea, 0xfb, 0xeb, 0x15, 0xf7, 0x96, 0xf7, 0x44, 0x7, 0xeb, 0xd2, 0x71, - 0x26, 0xfb, 0x12, 0xfb, 0x7, 0x86, 0x57, 0x1f, 0xe, 0xe2, 0x68, 0x76, - 0xb7, 0xdd, 0xf8, 0xdd, 0xdd, 0x1, 0xc3, 0xed, 0xf8, 0x6f, 0xed, 0x3, - 0xf8, 0xc2, 0xab, 0x15, 0x6c, 0x53, 0x50, 0x7e, 0x4e, 0x1b, 0xfb, 0x5c, - 0xfb, 0x23, 0xf7, 0x2e, 0xf7, 0x70, 0xf7, 0x68, 0xf7, 0x13, 0xf7, 0x37, - 0xf7, 0x6c, 0xf7, 0x5a, 0xf7, 0x27, 0xfb, 0x27, 0xfb, 0x78, 0x37, 0x77, - 0xfb, 0x7, 0x33, 0x36, 0x1f, 0xb0, 0x70, 0xb3, 0x74, 0xb6, 0x7a, 0x70, - 0x48, 0x18, 0x58, 0x9e, 0x58, 0xa8, 0x57, 0xb3, 0x8, 0xfb, 0x29, 0xf7, - 0x3c, 0x15, 0xd7, 0x76, 0xae, 0x71, 0xa3, 0x74, 0x8, 0xd3, 0xcb, 0x98, - 0xef, 0xcf, 0x1a, 0xf7, 0x60, 0xfb, 0xe, 0xe4, 0xfb, 0x11, 0x26, 0xfb, - 0x24, 0x50, 0xfb, 0x7e, 0xfb, 0x6b, 0xf7, 0x13, 0x3e, 0xf7, 0xa, 0xbe, - 0xaf, 0x99, 0x90, 0x96, 0x1e, 0x6c, 0x9e, 0x6f, 0x99, 0x68, 0x93, 0x8, - 0xe, 0xaa, 0xa0, 0x76, 0xf7, 0xd0, 0xe0, 0xf7, 0x82, 0xda, 0x1, 0xe3, - 0xea, 0xf7, 0xec, 0xed, 0x3, 0xe3, 0x16, 0xea, 0xf7, 0xd0, 0xcb, 0x6, - 0xda, 0xb6, 0x84, 0xfb, 0x35, 0xf1, 0x1f, 0xe9, 0xfb, 0x28, 0x5, 0xf7, - 0xb, 0x6, 0xfb, 0xd, 0xf7, 0x43, 0x53, 0xe2, 0x5c, 0xb9, 0x67, 0x9c, - 0x19, 0x8d, 0x7, 0xf7, 0xe, 0x9b, 0xda, 0xcb, 0xf7, 0x7, 0x1a, 0xf7, - 0x2c, 0xfb, 0x25, 0xb7, 0xfb, 0x15, 0x1e, 0xfb, 0x9b, 0x6, 0xea, 0xfb, - 0xd1, 0x15, 0xf7, 0x82, 0xf7, 0x3c, 0x7, 0xd5, 0xf1, 0x72, 0x2f, 0x24, - 0x2a, 0x79, 0x3c, 0x1f, 0xe, 0x73, 0x78, 0xe2, 0xf8, 0xda, 0xe2, 0x1, - 0xd7, 0xe6, 0xf7, 0xf5, 0xe6, 0x3, 0xbc, 0xf7, 0x79, 0x15, 0xfb, 0x27, - 0x9b, 0xd2, 0x26, 0xf7, 0x6b, 0x1b, 0xf7, 0x37, 0xf5, 0xe6, 0xf7, 0xd, - 0xf7, 0x35, 0xfb, 0x2a, 0xb5, 0xfb, 0x17, 0xa8, 0x1f, 0xfb, 0x18, 0xa9, - 0x63, 0x9c, 0xcb, 0x1a, 0xe6, 0xee, 0xa2, 0xc9, 0xf7, 0x29, 0xa4, 0x35, - 0x56, 0x90, 0x1e, 0xe7, 0x92, 0x5, 0xf7, 0x24, 0x86, 0xfb, 0x3, 0xd6, - 0xfb, 0x2f, 0x1b, 0xfb, 0x33, 0x2e, 0x33, 0xfb, 0x5, 0xfb, 0x26, 0xf7, - 0x22, 0x69, 0xe8, 0x74, 0x1f, 0xf7, 0x26, 0x68, 0xd3, 0x78, 0x35, 0x1a, - 0x3a, 0x3c, 0x5f, 0x28, 0x41, 0xfb, 0xe, 0xab, 0xf7, 0x1d, 0x7b, 0x1e, - 0xe, 0x73, 0x78, 0xe0, 0xf8, 0xcc, 0xe0, 0x1, 0xd9, 0xe5, 0xf7, 0xef, - 0xe6, 0x3, 0xbc, 0xf7, 0x74, 0x15, 0xfb, 0x10, 0xa1, 0xcd, 0xfb, 0xb, - 0xf7, 0x6a, 0x1b, 0xf7, 0x37, 0xf5, 0xe4, 0xf7, 0xb, 0xf7, 0x31, 0xfb, - 0x2a, 0xb4, 0xfb, 0x17, 0xa8, 0x1f, 0xfb, 0x17, 0xa8, 0x63, 0x9c, 0xc9, - 0x1a, 0xe4, 0xee, 0xa3, 0xc9, 0xf7, 0x28, 0xa4, 0x36, 0x57, 0x90, 0x1e, - 0xe6, 0x92, 0x5, 0xf7, 0x21, 0x86, 0xfb, 0x2, 0xd5, 0xfb, 0x2e, 0x1b, - 0xfb, 0x33, 0x2f, 0x34, 0xfb, 0x3, 0xfb, 0x23, 0xf7, 0x21, 0x6a, 0xe8, - 0x75, 0x1f, 0xf7, 0x25, 0x68, 0xd3, 0x79, 0x37, 0x1a, 0x3b, 0x3c, 0x60, - 0x28, 0x42, 0xfb, 0x6, 0xad, 0xf7, 0x18, 0x72, 0x1e, 0xf7, 0x2a, 0xf8, - 0xc4, 0x37, 0xa, 0x3b, 0xa0, 0x76, 0xf9, 0xd, 0xe0, 0x1, 0xf7, 0x95, - 0xea, 0x3, 0xf7, 0x95, 0x16, 0xea, 0xf9, 0xd, 0xf7, 0x89, 0xe0, 0xfc, - 0xdb, 0x36, 0xf7, 0x87, 0x6, 0xe, 0x5f, 0xa, 0xf7, 0x25, 0xe0, 0xf7, - 0x94, 0xe0, 0xf7, 0x27, 0x77, 0x6e, 0xa, 0xf7, 0xeb, 0xed, 0x3, 0xe1, - 0x16, 0xea, 0xf7, 0x25, 0xf7, 0x39, 0x6, 0xf7, 0x18, 0xf7, 0x24, 0xb9, - 0xf7, 0x3d, 0xf7, 0x35, 0xfb, 0x1b, 0xbd, 0xfb, 0x21, 0x1f, 0xfb, 0x39, - 0xf7, 0x27, 0x2c, 0x6, 0xea, 0xfc, 0x7c, 0x15, 0xf7, 0x94, 0xf7, 0x39, - 0x7, 0xe5, 0xe3, 0x79, 0xfb, 0x0, 0xfb, 0x13, 0xfb, 0x15, 0x88, 0x5a, - 0x1f, 0xe, 0xaa, 0x78, 0xe0, 0xf9, 0x20, 0x77, 0x41, 0xa, 0xf9, 0x62, - 0x15, 0xfc, 0x3a, 0x7, 0xfb, 0x13, 0x91, 0xfb, 0x50, 0xf7, 0xa3, 0xf7, - 0xac, 0x93, 0xf7, 0x70, 0xea, 0x1e, 0xf8, 0x3a, 0x2c, 0xfc, 0x3a, 0x7, - 0xfb, 0x15, 0x7a, 0x26, 0xfb, 0x44, 0xfb, 0x48, 0x89, 0xf7, 0x23, 0xe2, - 0x1e, 0xf8, 0x3a, 0x7, 0xe, 0x2b, 0xa, 0xf7, 0x18, 0xda, 0x2f, 0xa, - 0xe, 0x2b, 0xa, 0xac, 0xda, 0x2c, 0xa, 0xe, 0xaa, 0x78, 0xe0, 0xf9, - 0x6e, 0xef, 0x2a, 0xa, 0xbf, 0xe3, 0x2e, 0xa, 0xe, 0x2b, 0xa, 0xf7, - 0x3f, 0xda, 0x5e, 0xa, 0x73, 0x39, 0xa, 0xf7, 0xb5, 0x16, 0xe8, 0x6, - 0xf7, 0x9d, 0xf9, 0x62, 0x5, 0x30, 0x6, 0xfb, 0x71, 0xfd, 0x13, 0xfb, - 0x6e, 0xf9, 0x13, 0x5, 0x2a, 0x6, 0xe, 0xf7, 0x91, 0x39, 0xa, 0xf7, - 0x62, 0x16, 0xea, 0x6, 0xf7, 0x3c, 0xf9, 0xc, 0x5, 0x8c, 0x6, 0xf7, - 0x40, 0xfd, 0xc, 0x5, 0xe5, 0x6, 0xf7, 0x58, 0xf9, 0x62, 0x5, 0x2d, - 0x6, 0xfb, 0x27, 0xfc, 0xfe, 0xfb, 0x32, 0xf8, 0xfe, 0x5, 0xfb, 0x2, - 0x6, 0xfb, 0x3a, 0xfc, 0xfe, 0x5, 0x89, 0x6, 0xfb, 0x1f, 0xf8, 0xfe, - 0x5, 0x2b, 0x6, 0xe, 0x73, 0x39, 0xa, 0x9e, 0x16, 0xf7, 0x1, 0x6, - 0xf7, 0x61, 0xf7, 0xc4, 0x5, 0x8c, 0x6, 0xf7, 0x5e, 0xfb, 0xc4, 0x5, - 0xf7, 0x4, 0x6, 0xfb, 0x98, 0xf8, 0x10, 0xf7, 0x85, 0xf7, 0xe6, 0x5, - 0x32, 0x6, 0xfb, 0x5f, 0xfb, 0xa5, 0xfb, 0x47, 0xf7, 0xa5, 0x5, 0xfb, - 0x0, 0x6, 0xf7, 0x7f, 0xfb, 0xec, 0x5, 0xe, 0x73, 0x39, 0xa, 0xf7, - 0xaf, 0xe8, 0x3, 0xf7, 0xaf, 0x16, 0xe8, 0xf7, 0xc3, 0x6, 0xf7, 0xa9, - 0xf8, 0x33, 0x5, 0x20, 0x6, 0xfb, 0x67, 0xfb, 0xe7, 0xfb, 0x65, 0xf7, - 0xe7, 0x5, 0xfb, 0x4, 0x6, 0xf7, 0xa1, 0xfc, 0x33, 0x5, 0xe, 0x5f, - 0xa, 0xf9, 0xac, 0xf7, 0x1d, 0x1, 0xf7, 0xad, 0xea, 0x3, 0x57, 0xa, - 0xfb, 0x65, 0xfb, 0xe2, 0xfb, 0x60, 0xf7, 0xe2, 0x5, 0xfb, 0x8, 0x6, - 0xf7, 0x9f, 0xfc, 0x2e, 0x5, 0x88, 0xf8, 0x7d, 0x2f, 0xa, 0xe, 0x5f, - 0xa, 0xf9, 0xb5, 0xef, 0x12, 0xf7, 0x5a, 0xe5, 0x84, 0xea, 0x8e, 0xe5, - 0x13, 0xd8, 0x57, 0xa, 0xfb, 0x6a, 0xfb, 0xe2, 0xfb, 0x5c, 0xf7, 0xe2, - 0x38, 0xa, 0xf7, 0x9f, 0xfc, 0x2e, 0x5, 0x13, 0xe8, 0x38, 0xf8, 0x86, - 0x2e, 0xa, 0xe, 0x3b, 0x8b, 0xe0, 0xf8, 0xb8, 0xe0, 0x6a, 0xa, 0xf8, - 0x4f, 0xf8, 0xb8, 0x5, 0xe0, 0xfc, 0x93, 0x36, 0xf8, 0x22, 0x7, 0xfc, - 0x4b, 0xfc, 0xb4, 0x5, 0xe, 0x3b, 0x8b, 0xe0, 0xf8, 0xb3, 0xe0, 0xf7, - 0x6c, 0x77, 0x6a, 0xa, 0xf8, 0x51, 0xf8, 0xb3, 0x5, 0xe0, 0xfc, 0x95, - 0x36, 0xf8, 0x24, 0x7, 0xfc, 0x4d, 0xfc, 0xaf, 0x5, 0xf7, 0x82, 0xf9, - 0x53, 0x37, 0xa, 0x7c, 0xd0, 0xf8, 0x30, 0xd3, 0x1, 0xaf, 0xe9, 0xf7, - 0xa0, 0xe3, 0x3, 0xbe, 0xf8, 0xd, 0x15, 0xe1, 0x80, 0x5, 0xb6, 0x96, - 0x9b, 0xc4, 0xf7, 0x2, 0x1b, 0xf7, 0x15, 0x88, 0x3a, 0x53, 0x89, 0x1f, - 0x59, 0x79, 0x2e, 0x81, 0x7e, 0x89, 0x8, 0x52, 0x84, 0xfb, 0x29, 0x7a, - 0xfb, 0x1e, 0x1a, 0x35, 0xcc, 0x49, 0xf7, 0x6, 0xc3, 0xc6, 0x98, 0xca, - 0xd5, 0x1e, 0x8d, 0x7e, 0x9d, 0x73, 0x99, 0x70, 0x8, 0xe7, 0x6, 0x6f, - 0xbd, 0x7b, 0x92, 0xf7, 0x19, 0x1a, 0xf7, 0x28, 0x7, 0xe5, 0x80, 0xf7, - 0x5, 0xfb, 0x5d, 0xfb, 0x5c, 0x7e, 0xfb, 0x7, 0x5d, 0x81, 0x1e, 0xf7, - 0xef, 0xfb, 0x9, 0x15, 0x40, 0x87, 0x5f, 0x68, 0x65, 0x1e, 0x5f, 0x62, - 0x3d, 0x86, 0x72, 0x1b, 0x3c, 0x85, 0xbb, 0xb0, 0xd1, 0xc5, 0x95, 0xc1, - 0x93, 0x1f, 0xb9, 0x92, 0xd7, 0x98, 0xad, 0x98, 0x8, 0xe, 0x40, 0xa, - 0xce, 0xf7, 0x1d, 0x49, 0xa, 0x3f, 0xa, 0xfb, 0x1f, 0xfc, 0xb, 0x20, - 0xa, 0x40, 0xa, 0xf7, 0x60, 0x77, 0x49, 0xa, 0x3a, 0xa, 0x3a, 0xfc, - 0xb, 0x20, 0xa, 0x54, 0xa, 0xf7, 0xe, 0xf8, 0xe5, 0x4c, 0xa, 0xf7, - 0x11, 0xf7, 0x21, 0x59, 0xa, 0x40, 0xa, 0xd7, 0xef, 0x49, 0xa, 0x3e, - 0xa, 0xfb, 0x43, 0xfb, 0xef, 0x20, 0xa, 0xf7, 0x5a, 0x7c, 0xd4, 0xf7, - 0x47, 0xd3, 0xf7, 0x31, 0xd3, 0x1, 0xaf, 0xe9, 0xf7, 0x94, 0xe4, 0x3, - 0xbc, 0xf8, 0x4, 0x15, 0xe1, 0x81, 0x5, 0xba, 0x95, 0xb0, 0xc8, 0xe6, - 0x1b, 0xf6, 0x95, 0x50, 0x3b, 0x87, 0x1f, 0x64, 0x7f, 0x58, 0x88, 0x50, - 0x83, 0x8, 0x25, 0x7d, 0x28, 0x3f, 0x3e, 0x1a, 0x63, 0xa4, 0xfb, 0x4, - 0xf7, 0x2d, 0xed, 0xcc, 0xbd, 0xbd, 0xbd, 0x1e, 0x3d, 0xc7, 0xcc, 0x75, - 0xce, 0x1b, 0xf7, 0x1e, 0xcb, 0xe2, 0xe2, 0xa4, 0x1f, 0x30, 0x97, 0x5, - 0x65, 0x82, 0x69, 0x40, 0x2e, 0x1b, 0x2b, 0x50, 0xdd, 0xec, 0x96, 0x1f, - 0xf8, 0x8, 0x6, 0xf7, 0x38, 0x51, 0xf7, 0x1d, 0xfb, 0x3e, 0x25, 0x5f, - 0x5a, 0x76, 0x77, 0x1e, 0xa1, 0x7e, 0x6d, 0xbb, 0xfb, 0x1d, 0x1b, 0xfb, - 0x4e, 0x71, 0xfb, 0xc, 0x59, 0x7f, 0x1f, 0xf7, 0xe7, 0xfb, 0x0, 0x15, - 0xfb, 0x12, 0xa2, 0x3e, 0x3c, 0xfb, 0xc, 0x1b, 0x33, 0x8f, 0xc8, 0xa3, - 0xb6, 0xd2, 0xb0, 0xaf, 0x91, 0x1f, 0xbf, 0x93, 0xc8, 0x94, 0xb1, 0x9c, - 0x8, 0xe2, 0xbc, 0x15, 0xd5, 0x90, 0xb4, 0xde, 0xed, 0x1b, 0xf7, 0x14, - 0x93, 0xfb, 0x11, 0x6b, 0x8e, 0x1f, 0xe, 0x40, 0xa, 0xcf, 0xf7, 0x1c, - 0x12, 0xba, 0xe9, 0xf7, 0x8d, 0xe3, 0x13, 0xbc, 0xf7, 0x9a, 0xf8, 0xea, - 0x4c, 0xa, 0x4a, 0xf7, 0x1c, 0x38, 0xa, 0x86, 0xfc, 0xb, 0x24, 0xa, - 0x13, 0x7c, 0x25, 0xa, 0x13, 0xbc, 0x28, 0xa, 0x73, 0x7c, 0xda, 0xf8, - 0xda, 0xd3, 0x12, 0xb7, 0xe8, 0x87, 0xe5, 0xf7, 0x38, 0xe5, 0x13, 0xe8, - 0xf7, 0x69, 0xf8, 0x2b, 0x15, 0xfb, 0x12, 0x4e, 0x60, 0x42, 0x3b, 0x1a, - 0x2f, 0xd4, 0xfb, 0x8, 0xf7, 0x2d, 0xde, 0xcd, 0xab, 0xca, 0xc3, 0x1e, - 0x99, 0x7c, 0xb7, 0x5f, 0xc0, 0x68, 0xc6, 0xce, 0x18, 0x64, 0xa7, 0x62, - 0xaf, 0x6a, 0xb5, 0xa8, 0xb7, 0x9e, 0xbb, 0x9b, 0xca, 0x30, 0x9e, 0x18, - 0x88, 0x7f, 0x81, 0x5e, 0x76, 0x60, 0xfb, 0x15, 0xf7, 0x38, 0x18, 0xea, - 0xbd, 0xb3, 0xbe, 0xcd, 0x1a, 0xdd, 0x44, 0xd3, 0x27, 0x1e, 0x13, 0xd8, - 0x22, 0x47, 0x45, 0x37, 0x5f, 0x9d, 0x62, 0xc9, 0x43, 0x1f, 0xb9, 0x52, - 0x15, 0xf7, 0x35, 0xfb, 0x5c, 0x5, 0x5c, 0x6c, 0x4f, 0x64, 0x51, 0x1b, - 0x13, 0xe8, 0x2d, 0x63, 0xe1, 0xba, 0xcf, 0xc7, 0xba, 0xc9, 0xb1, 0x1f, - 0xb1, 0xf2, 0x15, 0x13, 0xd8, 0x47, 0xdb, 0x85, 0x97, 0x9e, 0x1a, 0xbe, - 0xb7, 0xaa, 0xb2, 0xb2, 0xb5, 0x70, 0x54, 0x4d, 0x5d, 0x74, 0x5f, 0x71, - 0x1e, 0xe, 0x40, 0xa, 0xbb, 0xaf, 0xf5, 0xaf, 0x12, 0xba, 0xe9, 0xbd, - 0xaf, 0xf3, 0xaf, 0xa2, 0xe3, 0x13, 0x7f, 0x80, 0xf7, 0x53, 0xf9, 0x2f, - 0x64, 0xa, 0xb3, 0x5a, 0x5a, 0x65, 0x63, 0x5a, 0x1e, 0xaf, 0x8c, 0x15, - 0xa6, 0xa0, 0xa4, 0xaa, 0xaa, 0xa0, 0x72, 0x6f, 0x6e, 0x74, 0x73, 0x6e, - 0x70, 0x72, 0xa1, 0xab, 0x1e, 0x3d, 0xfb, 0xc9, 0x22, 0xa, 0x13, 0xbf, - 0x80, 0x28, 0xa, 0xfb, 0x72, 0xf7, 0xb1, 0x76, 0xf8, 0x3c, 0x77, 0x1, - 0x7d, 0xf7, 0x9c, 0x15, 0xe5, 0x6, 0xf7, 0x32, 0xf7, 0xd9, 0xf7, 0x34, - 0xfb, 0xd9, 0x5, 0xe4, 0x6, 0xfb, 0x69, 0xf8, 0x3c, 0x5, 0x44, 0x6, - 0xe, 0x20, 0xf7, 0x49, 0xe1, 0x49, 0x76, 0xc6, 0xe1, 0x8c, 0x77, 0x12, - 0x13, 0x60, 0xc8, 0xf7, 0x48, 0x15, 0xa6, 0xa8, 0xae, 0xab, 0xc1, 0x1b, - 0xbc, 0xaf, 0x7a, 0x7b, 0xb0, 0x1f, 0x13, 0x90, 0x7e, 0xa9, 0xa9, 0x7f, - 0xb1, 0x1b, 0xc9, 0xae, 0xa5, 0xa3, 0xa6, 0x1f, 0xea, 0x7, 0x82, 0x83, - 0x59, 0x59, 0x51, 0x1b, 0x6e, 0x69, 0x96, 0x97, 0x69, 0x1f, 0x13, 0x60, - 0x9b, 0x5e, 0x5e, 0x9e, 0x69, 0x1b, 0x64, 0x59, 0x7f, 0x63, 0x67, 0x1f, - 0xe, 0xfb, 0xc2, 0xf8, 0x58, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0xf7, 0x16, - 0xf8, 0x43, 0x15, 0x9f, 0xa5, 0x99, 0xa0, 0xa7, 0xbf, 0xa3, 0x63, 0x98, - 0x74, 0xa6, 0x67, 0xc4, 0xb3, 0x18, 0x86, 0x8f, 0x54, 0xcb, 0x75, 0x9e, - 0xaf, 0x8f, 0xbf, 0x97, 0xa9, 0x94, 0x75, 0xcd, 0x18, 0x72, 0x83, 0x59, - 0x79, 0x67, 0x79, 0x8, 0x93, 0xbf, 0x8d, 0xb3, 0xa0, 0x1a, 0x48, 0x6, - 0x6c, 0x8d, 0x79, 0x93, 0x4a, 0x1e, 0x83, 0x84, 0x3d, 0xb7, 0x75, 0x93, - 0x75, 0x49, 0x18, 0xb3, 0x81, 0xaf, 0x83, 0xb1, 0x84, 0x3d, 0x34, 0x18, - 0xe, 0xf7, 0xd8, 0x5c, 0xc8, 0x4e, 0xf7, 0x4e, 0x82, 0xcc, 0xf7, 0xdb, - 0xca, 0xf7, 0x1, 0xc7, 0x12, 0xf7, 0x1c, 0xc6, 0xe8, 0xd6, 0xf8, 0x5e, - 0xc6, 0x13, 0xbf, 0xf8, 0xc3, 0xf7, 0x5c, 0x15, 0x71, 0x8e, 0x90, 0x5f, - 0xd1, 0x1b, 0xf7, 0xc, 0xf7, 0xf, 0xf7, 0x1c, 0xf7, 0x38, 0xf7, 0x33, - 0xfb, 0xb, 0xf7, 0x39, 0xfb, 0x7a, 0xfb, 0xc5, 0x31, 0xfb, 0x99, 0xfb, - 0x3a, 0xfb, 0x5a, 0xf7, 0x7, 0xfb, 0x44, 0xf7, 0xb8, 0x1f, 0x13, 0x5f, - 0xf7, 0x97, 0xe3, 0xf7, 0x39, 0xa0, 0x95, 0x1f, 0x42, 0x6, 0x13, 0xbf, - 0x62, 0x6d, 0x3e, 0x37, 0xfb, 0x45, 0x1b, 0xfb, 0x3d, 0xfb, 0x47, 0xd0, - 0xf7, 0x88, 0xf7, 0x54, 0xf7, 0x15, 0xf7, 0x43, 0xf7, 0x63, 0xf7, 0x35, - 0xf7, 0x15, 0x20, 0xfb, 0x31, 0xfb, 0x24, 0xfb, 0x4, 0x34, 0x5f, 0x7f, - 0x7a, 0x94, 0x9e, 0x1f, 0xd1, 0xf7, 0xed, 0x5, 0x43, 0x6, 0x7d, 0x4a, - 0x5, 0xd3, 0x60, 0x53, 0x91, 0x74, 0x1b, 0xfb, 0x4, 0x29, 0xfb, 0x28, - 0xfb, 0x10, 0x22, 0xcb, 0x3e, 0xde, 0xc7, 0xb6, 0xb8, 0xa3, 0xa0, 0x1f, - 0xfb, 0x58, 0xf7, 0x5, 0x15, 0xd4, 0xb3, 0xf7, 0x1c, 0xea, 0xbc, 0xba, - 0x64, 0x3b, 0xfb, 0x6, 0x32, 0x2d, 0x45, 0x63, 0x6b, 0xad, 0xdf, 0x1e, - 0xe, 0x40, 0xa, 0xda, 0xf7, 0x5, 0x49, 0xa, 0xf7, 0x48, 0xf8, 0xf5, - 0x15, 0xbb, 0xab, 0x8a, 0x90, 0xa7, 0xa0, 0x80, 0x80, 0x9e, 0x1e, 0x7f, - 0x9f, 0x9d, 0x7f, 0xa2, 0x1b, 0xa0, 0xd6, 0x92, 0xf4, 0x56, 0xa, 0x8f, - 0x79, 0x94, 0x96, 0x70, 0x1f, 0x96, 0x6f, 0x66, 0x96, 0x74, 0x1b, 0x5a, - 0x59, 0x66, 0x3f, 0x1f, 0xad, 0xfb, 0x8e, 0x20, 0xa, 0x7c, 0xd3, 0xf8, - 0x25, 0xd3, 0xf7, 0x50, 0x77, 0x12, 0xc5, 0xdc, 0x3a, 0xe3, 0xf7, 0xa5, - 0xe5, 0x13, 0xec, 0xc5, 0x16, 0xdd, 0xcc, 0x8d, 0x6, 0x41, 0xbb, 0xd5, - 0x85, 0xa1, 0x1b, 0xde, 0xf7, 0x28, 0xc3, 0xf7, 0x6f, 0xf7, 0x29, 0x30, - 0xf7, 0xd, 0xfb, 0x20, 0x35, 0x63, 0x57, 0x79, 0x7f, 0x1f, 0x89, 0xf7, - 0x96, 0x33, 0x6, 0x13, 0xf4, 0xdc, 0xfc, 0x5e, 0x15, 0xf4, 0xc3, 0xe8, - 0xe6, 0xe6, 0xbd, 0x37, 0xfb, 0x6, 0xfb, 0x22, 0x44, 0x4e, 0x45, 0x5a, - 0x5e, 0xaa, 0xb3, 0x70, 0x1e, 0x7f, 0x9d, 0x7d, 0xa5, 0xe3, 0x1a, 0xe, - 0xfc, 0x31, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xf7, 0x74, 0x78, 0x15, - 0xd2, 0x6, 0xfb, 0x85, 0xf9, 0x88, 0x5, 0x44, 0x6, 0xe, 0xfc, 0x43, - 0xfb, 0x50, 0x76, 0xfa, 0x46, 0x77, 0x1, 0xe9, 0xd4, 0x3, 0xe9, 0xfb, - 0x65, 0x15, 0xd4, 0xfa, 0x46, 0x42, 0x6, 0xe, 0xfb, 0xf9, 0xfb, 0x58, - 0xd5, 0xf7, 0xee, 0xda, 0xf7, 0xed, 0xd5, 0x1, 0xf7, 0x18, 0xd3, 0x3, - 0xb5, 0xf7, 0x74, 0x15, 0xe4, 0x89, 0x8b, 0x33, 0x8c, 0x2d, 0x8, 0xfb, - 0x4c, 0x8a, 0x9e, 0x57, 0xf7, 0x22, 0x1b, 0xd5, 0x7, 0x33, 0x8d, 0x93, - 0xf7, 0x2e, 0xf7, 0x6, 0x7a, 0xd5, 0x40, 0xae, 0x1f, 0xe5, 0xbb, 0x8d, - 0x8b, 0xf7, 0x44, 0x1a, 0xe2, 0x89, 0xd5, 0xe3, 0x1e, 0xd5, 0x7, 0xfb, - 0x22, 0x79, 0x31, 0xfb, 0x25, 0x1f, 0x8a, 0x2c, 0x8b, 0x34, 0x32, 0x89, - 0x8, 0xe, 0xfb, 0xf9, 0xfb, 0x58, 0xd5, 0xf7, 0xed, 0xda, 0xf7, 0xee, - 0xd5, 0x1, 0xf7, 0x15, 0xd3, 0x3, 0xb5, 0xfb, 0xe, 0x15, 0x41, 0x7, - 0xde, 0xd7, 0x99, 0xf7, 0x33, 0x1f, 0x8c, 0xeb, 0x8d, 0xf7, 0x28, 0xe3, - 0x8d, 0x8, 0xda, 0x7, 0x33, 0x8d, 0x88, 0xdb, 0xea, 0x1a, 0xf7, 0x29, - 0x86, 0xe9, 0xfb, 0x2e, 0x1e, 0x41, 0x7, 0xe2, 0x8b, 0x73, 0xfb, 0x25, - 0xfb, 0x7, 0x9a, 0x49, 0xd6, 0x68, 0x1f, 0x31, 0x5b, 0x8b, 0x4d, 0xfb, - 0x44, 0x1a, 0x34, 0x79, 0x7f, 0x46, 0x1e, 0xe, 0x69, 0xa, 0xca, 0xe3, - 0x33, 0xf7, 0x4f, 0x13, 0xe0, 0xf7, 0x2b, 0xfb, 0xf, 0x15, 0xf9, 0x98, - 0x7, 0x13, 0xd0, 0xee, 0xd4, 0xfb, 0x4f, 0xfe, 0x2a, 0xf7, 0x4f, 0xd4, - 0x6, 0xe, 0x69, 0xa, 0xa7, 0xf7, 0x4f, 0x33, 0xe3, 0x13, 0xe0, 0xa7, - 0xfb, 0xf, 0x15, 0x42, 0xf7, 0x4f, 0xfa, 0x2a, 0xfb, 0x4f, 0x42, 0x7, - 0x13, 0xd0, 0xee, 0xfd, 0x98, 0x6, 0xe, 0xfb, 0xfa, 0xf8, 0xe7, 0xcc, - 0xd2, 0x77, 0x1, 0x98, 0xf9, 0x6f, 0x15, 0x2c, 0xe3, 0x62, 0xcd, 0xce, - 0xe2, 0xb6, 0xe8, 0x1e, 0x4b, 0x6, 0x6a, 0x84, 0x7e, 0x65, 0x45, 0x1b, - 0x43, 0x7d, 0xbf, 0x9e, 0x87, 0x1f, 0xe, 0xfc, 0x43, 0x8d, 0x76, 0xf9, - 0x88, 0x77, 0x1, 0xe9, 0xd4, 0x3, 0xe9, 0xf8, 0x3f, 0x15, 0xd4, 0xf7, - 0xca, 0x42, 0x6, 0xfd, 0x88, 0x4, 0xd4, 0xf7, 0xc9, 0x42, 0x6, 0xe, - 0xfb, 0xe9, 0xf7, 0x5e, 0xf7, 0xcf, 0x1, 0x9d, 0xf7, 0xcf, 0x3, 0x9d, - 0xf7, 0xfb, 0x15, 0x33, 0xd2, 0x46, 0xe1, 0xe1, 0xd3, 0xd0, 0xe3, 0xe4, - 0x43, 0xd0, 0x35, 0x35, 0x44, 0x46, 0x32, 0x1e, 0xe, 0xfb, 0x53, 0x7c, - 0xd3, 0xf8, 0x29, 0xd7, 0x1, 0xbb, 0xe5, 0xf7, 0x9b, 0xe0, 0x3, 0xf8, - 0x24, 0xf7, 0x52, 0x15, 0x71, 0x88, 0x7a, 0x20, 0xfb, 0x4, 0x1b, 0xfb, - 0xf, 0x7c, 0xf7, 0x18, 0xd0, 0xc8, 0x93, 0xf7, 0x23, 0xf7, 0x1d, 0xc1, - 0xc1, 0x6f, 0x40, 0x9d, 0x1f, 0xe0, 0x98, 0x5, 0xf4, 0xfb, 0x8, 0xc8, - 0x2c, 0x24, 0xfb, 0x18, 0x4b, 0xfb, 0x6c, 0xfb, 0x1e, 0xc4, 0xfb, 0x1b, - 0xf7, 0x3f, 0xb7, 0xf7, 0x27, 0x9e, 0xf7, 0x43, 0xa7, 0x1e, 0xe, 0x54, - 0xa, 0xf7, 0xc, 0xf8, 0xe5, 0x15, 0xeb, 0x6, 0xeb, 0xf7, 0x21, 0x5, - 0x31, 0x6, 0x57, 0x34, 0x50, 0xe2, 0x5, 0x31, 0x6, 0xe, 0xfb, 0x53, - 0xfb, 0x60, 0x76, 0xf7, 0x5b, 0xd6, 0xf8, 0x32, 0xd6, 0x1, 0xa9, 0xe4, - 0x3, 0xf7, 0x67, 0x76, 0x15, 0x7b, 0x3d, 0x5, 0x9b, 0xc0, 0x86, 0x69, - 0x8d, 0x1f, 0x78, 0x8c, 0x48, 0x84, 0x60, 0x1b, 0x89, 0x4e, 0x5, 0xf7, - 0x13, 0xcb, 0xb2, 0xbb, 0xc2, 0x5d, 0xa0, 0x6a, 0x1f, 0x91, 0xaf, 0xda, - 0x91, 0xf1, 0xb6, 0xa2, 0xf7, 0x2a, 0x19, 0x36, 0x96, 0x5, 0x71, 0x87, - 0x7a, 0xfb, 0x1, 0xfb, 0x2, 0x1b, 0xfb, 0x23, 0x8c, 0xf7, 0x3d, 0xad, - 0xd9, 0x9c, 0xf7, 0x19, 0xf7, 0x13, 0xc2, 0xba, 0x6d, 0x3c, 0x9c, 0x1f, - 0xe0, 0x9a, 0x5, 0xf7, 0x7, 0x7c, 0x3a, 0xc1, 0xfb, 0x0, 0x1b, 0xfb, - 0x43, 0x51, 0xfb, 0x21, 0xfb, 0x25, 0xfb, 0x2c, 0xd0, 0x27, 0xf7, 0x4, - 0x76, 0x1f, 0xe, 0xfb, 0xfa, 0xfb, 0x60, 0x76, 0xf7, 0x75, 0x77, 0x1, - 0xeb, 0xf2, 0x3, 0xf7, 0x1a, 0x16, 0x6a, 0x2c, 0x5, 0xa5, 0xbe, 0x85, - 0x6b, 0x58, 0x2c, 0x9a, 0x6a, 0x91, 0x1f, 0x86, 0x52, 0x5, 0x87, 0xa1, - 0x92, 0x8a, 0xa1, 0x1b, 0xf7, 0x5, 0xbd, 0xb8, 0xba, 0xb6, 0x64, 0xa3, - 0x5f, 0x90, 0x1f, 0xa2, 0xc8, 0x5, 0xe, 0x2d, 0x76, 0xf1, 0xd2, 0xf8, - 0x25, 0xd3, 0xe7, 0x77, 0x1, 0xbe, 0xe5, 0x3, 0xf7, 0x4a, 0x95, 0x15, - 0x69, 0xfb, 0x1, 0xc2, 0x7b, 0xae, 0xf7, 0x0, 0x5, 0x88, 0x98, 0x98, - 0x88, 0xa2, 0x1b, 0xcd, 0xf7, 0x18, 0xad, 0xf7, 0x33, 0xa7, 0x1f, 0x37, - 0x95, 0x5, 0x2f, 0x7e, 0x45, 0x63, 0x50, 0x1b, 0x7d, 0x84, 0x8d, 0x8d, - 0x82, 0x1f, 0xf7, 0x1, 0xf8, 0xa, 0xad, 0x6f, 0x93, 0x68, 0x8f, 0x77, - 0x19, 0xe1, 0x98, 0x84, 0xac, 0x7d, 0xd4, 0x32, 0xb2, 0x19, 0xa5, 0xeb, - 0x56, 0x9b, 0x6f, 0x2b, 0x5, 0x8f, 0x6c, 0x7f, 0x8b, 0x85, 0x1b, 0x52, - 0xfb, 0x44, 0x6f, 0xfb, 0x8b, 0xfb, 0x12, 0xc3, 0x37, 0xd6, 0x67, 0x1f, - 0xa2, 0xd7, 0x15, 0x56, 0xac, 0x80, 0xea, 0xb5, 0x1a, 0xd5, 0xa1, 0xf7, - 0x22, 0xf7, 0x2b, 0x7e, 0x1e, 0xe, 0x54, 0xa, 0xa0, 0xf8, 0xe5, 0x15, - 0xe9, 0x6, 0xc1, 0xe2, 0xbc, 0x34, 0x5, 0xe9, 0x6, 0x24, 0xf7, 0x21, - 0x5, 0x34, 0x6, 0xe, 0xfc, 0x31, 0x8b, 0xee, 0xf7, 0xd2, 0xee, 0x1, - 0xe2, 0xf3, 0x3, 0xe2, 0x16, 0xf3, 0xee, 0x23, 0x6, 0xf7, 0xd2, 0x4, - 0xf3, 0xee, 0x23, 0x6, 0xe, 0xfc, 0x31, 0xfb, 0x12, 0x76, 0xf7, 0x91, - 0x77, 0x1, 0xe3, 0xf1, 0x3, 0xe3, 0x8d, 0x15, 0xbe, 0x6, 0x61, 0x85, - 0x5a, 0x5d, 0x76, 0x1e, 0xa2, 0x66, 0x5, 0xce, 0xa1, 0x98, 0xe8, 0xad, - 0x1a, 0xf3, 0x25, 0x7, 0xe, 0xb9, 0x78, 0xca, 0xed, 0xc7, 0xf7, 0xce, - 0xc3, 0xf1, 0xca, 0x1, 0x7d, 0xcb, 0xf7, 0xa, 0xd1, 0xf8, 0x57, 0xca, - 0x3, 0xf8, 0x80, 0xf7, 0xbe, 0x15, 0x35, 0x75, 0x3e, 0x81, 0x70, 0x1b, - 0x46, 0x50, 0xbb, 0xf5, 0xd7, 0xa9, 0xdf, 0xed, 0x9c, 0xd4, 0x8a, 0x40, - 0xa9, 0x1f, 0xc8, 0x99, 0x5, 0xdd, 0x72, 0x3e, 0xaf, 0x3c, 0x1b, 0xfb, - 0x14, 0x45, 0x37, 0xfb, 0x18, 0xfb, 0x1c, 0xdc, 0x3d, 0xf7, 0x9, 0xdb, - 0xe0, 0xb6, 0xea, 0xa2, 0x1f, 0xfc, 0xcc, 0xd7, 0x15, 0xfb, 0x65, 0xf7, - 0x3c, 0xfb, 0x3a, 0xf7, 0x68, 0xf7, 0x68, 0xf7, 0x42, 0xf7, 0x3b, 0xf7, - 0x64, 0xf7, 0x67, 0xfb, 0x44, 0xf7, 0x3e, 0xfb, 0x66, 0xfb, 0x66, 0xfb, - 0x3e, 0xfb, 0x3d, 0xfb, 0x68, 0x1e, 0xcb, 0x16, 0xf7, 0x44, 0xf7, 0x1f, - 0xf7, 0x22, 0xf7, 0x45, 0xf7, 0x45, 0xf7, 0x26, 0xfb, 0x22, 0xfb, 0x44, - 0xfb, 0x42, 0xfb, 0x26, 0xfb, 0x1e, 0xfb, 0x45, 0xfb, 0x45, 0xfb, 0x1f, - 0xf7, 0x1e, 0xf7, 0x42, 0x1e, 0xe, 0xf7, 0xc, 0x76, 0xae, 0xdf, 0xf7, - 0x9e, 0xdf, 0xae, 0x77, 0x1, 0xe1, 0xee, 0x15, 0xd2, 0xd2, 0x5, 0x71, - 0xb2, 0xb6, 0x81, 0xb2, 0x1b, 0xb1, 0xb7, 0x95, 0xa5, 0xb2, 0x1f, 0xd2, - 0x44, 0xc5, 0xc8, 0x44, 0xd0, 0x5, 0xaa, 0xbd, 0x91, 0xb9, 0xa5, 0x1a, - 0xa6, 0x85, 0xb8, 0x6c, 0xbc, 0x1e, 0xd2, 0xd1, 0x51, 0xc8, 0x44, 0x44, - 0x5, 0xa5, 0x64, 0x5f, 0x95, 0x65, 0x1b, 0x64, 0x60, 0x81, 0x71, 0x64, - 0x1f, 0x44, 0xd2, 0x51, 0x4e, 0xd2, 0x45, 0x5, 0x6c, 0x5a, 0x85, 0x5e, - 0x70, 0x1a, 0x71, 0x91, 0x5d, 0xaa, 0x59, 0x1e, 0x44, 0x46, 0x5, 0xf7, - 0xa, 0xf7, 0x53, 0x15, 0xd4, 0xc5, 0xc7, 0xd5, 0xce, 0xcc, 0x52, 0x3f, - 0x41, 0x50, 0x50, 0x42, 0x41, 0x51, 0xc6, 0xd5, 0x1e, 0xe, 0x7c, 0xd3, - 0xf8, 0x23, 0xd5, 0xf7, 0x50, 0x77, 0x1, 0xae, 0xe5, 0xf7, 0xa7, 0xe3, - 0x3, 0xf8, 0x35, 0x16, 0xdd, 0xf9, 0x62, 0x33, 0xfb, 0x97, 0x89, 0x6, - 0xb4, 0x70, 0x4d, 0xa9, 0x4a, 0x1b, 0xfb, 0x16, 0x31, 0xfb, 0x2, 0xfb, - 0x3d, 0xfb, 0x3a, 0xec, 0x27, 0xf7, 0xf, 0x9e, 0xe9, 0x8e, 0xd9, 0xbc, - 0x1f, 0xfb, 0xb8, 0xf7, 0x4d, 0x15, 0xb1, 0x89, 0xf7, 0x3b, 0xf7, 0x18, - 0xf6, 0xc4, 0x23, 0x26, 0xfb, 0x46, 0xfb, 0x1c, 0x7b, 0x6f, 0x58, 0x3c, - 0xaa, 0xf7, 0x37, 0x1e, 0xe, 0xfb, 0x1e, 0x76, 0xf8, 0xe0, 0xd9, 0xf7, - 0x67, 0x77, 0x1, 0xf7, 0x7e, 0xe3, 0x3, 0xf7, 0x7e, 0xfb, 0x33, 0x15, - 0xe3, 0xf8, 0xe0, 0x78, 0xa, 0xf7, 0x67, 0x33, 0xfb, 0x67, 0xfb, 0x53, - 0x3d, 0xf7, 0x53, 0x6, 0xe, 0xfb, 0x1e, 0x76, 0xf7, 0x4c, 0xd9, 0xf7, - 0xf5, 0xd9, 0xf7, 0x4c, 0x77, 0x1, 0xf7, 0x7e, 0xe3, 0x3, 0xb6, 0xa4, - 0x15, 0xf7, 0x53, 0xfb, 0x4c, 0xe3, 0xf7, 0x4c, 0x78, 0xa, 0xf7, 0xf5, - 0x78, 0xa, 0xf7, 0x4c, 0x33, 0xfb, 0x4c, 0xfb, 0x53, 0x3d, 0xf7, 0x53, - 0xfb, 0xf5, 0xfb, 0x53, 0x6, 0xe, 0xfb, 0xb7, 0xf8, 0x2f, 0xc4, 0xf7, - 0x46, 0xc4, 0x1, 0xc1, 0xc5, 0xf7, 0x44, 0xc5, 0x3, 0xc1, 0xf8, 0xc2, - 0x15, 0x39, 0xcc, 0x4a, 0xdb, 0xdc, 0xcd, 0xcc, 0xdd, 0xda, 0x4a, 0xcd, - 0x39, 0x3a, 0x4b, 0x4a, 0x3b, 0x1e, 0xc5, 0x16, 0xbb, 0xb1, 0xb3, 0xbc, - 0xbd, 0xb2, 0x63, 0x5b, 0x59, 0x63, 0x63, 0x5a, 0x5b, 0x64, 0xb3, 0xbd, - 0x1e, 0xe, 0xfb, 0xfa, 0xf8, 0xf0, 0xf1, 0x1, 0xb3, 0xe5, 0xd4, 0xe5, - 0x3, 0xb3, 0xf8, 0xf0, 0x15, 0xe5, 0xf1, 0x31, 0x6, 0xf7, 0x37, 0x25, - 0x15, 0xe5, 0xf1, 0x31, 0x6, 0xe, 0x20, 0x78, 0xed, 0xf7, 0x1e, 0xdd, - 0xf7, 0x14, 0xec, 0x1, 0xf7, 0x86, 0xef, 0x3, 0xb2, 0xf7, 0x6c, 0x15, - 0xf8, 0x8e, 0xdd, 0xfc, 0x8e, 0x6, 0xf7, 0x5f, 0xf7, 0x15, 0x15, 0xef, - 0xec, 0x27, 0x6, 0xfc, 0xb3, 0x4, 0xef, 0xed, 0x27, 0x6, 0xe, 0x2d, - 0x76, 0xfa, 0xe, 0x77, 0x1, 0xbb, 0xe6, 0xf7, 0x5, 0xc0, 0xf7, 0xf, - 0xe7, 0x3, 0xab, 0xf7, 0x52, 0x15, 0x98, 0xfb, 0x52, 0xf7, 0x2b, 0x7a, - 0xc3, 0x83, 0x8, 0x31, 0xc0, 0xe6, 0x7, 0xf7, 0x22, 0x90, 0xd4, 0xee, - 0xf5, 0x1a, 0xf7, 0x39, 0xfb, 0x23, 0xb0, 0x43, 0x9b, 0x1e, 0xf7, 0x93, - 0x7, 0xa7, 0x85, 0xc6, 0x7e, 0x9b, 0x2a, 0xe9, 0x98, 0x18, 0x78, 0xf7, - 0x8, 0x3d, 0xc1, 0x27, 0x93, 0x8, 0xb4, 0x56, 0x62, 0x7, 0x22, 0x86, - 0x2d, 0x4f, 0x86, 0xfb, 0x17, 0x88, 0x42, 0xda, 0xfb, 0x13, 0xf7, 0x14, - 0x83, 0x8, 0xfb, 0xad, 0x7, 0x20, 0x96, 0x71, 0xf7, 0x9, 0x88, 0xa8, - 0x8, 0xf7, 0x1c, 0xf7, 0x65, 0x15, 0x26, 0xa8, 0x7f, 0xc1, 0xb5, 0x1a, - 0xbf, 0xac, 0xc2, 0xdb, 0x98, 0x1e, 0xc0, 0xfc, 0xf7, 0x15, 0xf7, 0xa1, - 0x7, 0xcd, 0x76, 0xc4, 0x73, 0x36, 0x1a, 0x2d, 0x40, 0x63, 0x5b, 0x86, - 0x1e, 0xe, 0xfb, 0xfa, 0xf8, 0xf0, 0xf1, 0x1, 0xf7, 0xd, 0xe6, 0x3, - 0xf7, 0xd, 0xf8, 0xf0, 0x15, 0xe6, 0xf1, 0x30, 0x6, 0xe, 0xfc, 0x31, - 0x68, 0xa, 0xea, 0xe3, 0x3, 0xea, 0x16, 0xe3, 0xf8, 0x9f, 0x7a, 0xa, - 0x7c, 0xd3, 0xf7, 0x48, 0xd3, 0xf7, 0x2e, 0xd6, 0x1, 0xc3, 0xe5, 0xf7, - 0x91, 0xe5, 0x3, 0xf7, 0x16, 0xf7, 0x81, 0x15, 0xf8, 0x16, 0x6, 0xf7, - 0x9c, 0xfb, 0x34, 0xb0, 0x41, 0xfb, 0x32, 0x37, 0xfb, 0x11, 0xfb, 0x32, - 0xfb, 0x34, 0xdc, 0xfb, 0x2, 0xf7, 0x35, 0xf7, 0x14, 0xd8, 0xd4, 0xed, - 0xa5, 0x1e, 0x31, 0x96, 0x5, 0x6d, 0x80, 0x6c, 0x3b, 0x28, 0x1b, 0x3d, - 0x48, 0xc3, 0xf7, 0x10, 0x84, 0x1f, 0x90, 0xd3, 0x15, 0xcf, 0x90, 0xb7, - 0xe1, 0xed, 0x1b, 0xe7, 0xbf, 0x3d, 0x3f, 0x1f, 0xe, 0x4a, 0xa, 0xce, - 0xf7, 0x1d, 0x1, 0xf8, 0x34, 0xe5, 0x3, 0x3f, 0xa, 0xfb, 0x28, 0xfc, - 0x85, 0x29, 0xa, 0xe, 0x4a, 0xa, 0xf7, 0x60, 0x77, 0x1, 0xf8, 0x34, - 0xe5, 0x3, 0x3a, 0xa, 0x31, 0xfc, 0x85, 0x29, 0xa, 0xe, 0x4a, 0xa, - 0xd7, 0xef, 0x1, 0xf7, 0xae, 0x8b, 0xf7, 0x1a, 0xe5, 0x3, 0x3e, 0xa, - 0xfb, 0x4c, 0xfc, 0x69, 0x15, 0xf8, 0x2, 0x6, 0xf7, 0x1c, 0x65, 0xd8, - 0x56, 0xb0, 0x1e, 0xb0, 0x56, 0x52, 0x91, 0x74, 0x1b, 0xfb, 0x38, 0x4c, - 0xfb, 0xa, 0xfb, 0x31, 0x86, 0x1f, 0x2d, 0xa, 0x7b, 0x7c, 0x3a, 0x23, - 0x1b, 0x37, 0x5e, 0xc2, 0xf7, 0x11, 0x7e, 0x1f, 0x90, 0xd3, 0x15, 0xcf, - 0x96, 0xa2, 0xdc, 0xf2, 0x1b, 0xec, 0xab, 0x42, 0x3f, 0x90, 0x1f, 0xe, - 0x4a, 0xa, 0xcf, 0xf7, 0x1c, 0x1, 0xf8, 0x34, 0xe5, 0x3, 0xf7, 0x20, - 0xf7, 0x81, 0x29, 0xa, 0xfb, 0x2e, 0xf7, 0xb5, 0x4c, 0xa, 0x4a, 0xf7, - 0x1c, 0x59, 0xa, 0x78, 0xd2, 0xf7, 0xb2, 0xaf, 0x67, 0xd1, 0xf7, 0x74, - 0xd2, 0x12, 0xc1, 0xe7, 0xf7, 0x9d, 0xe7, 0x13, 0xdc, 0xf7, 0x45, 0xf8, - 0xa, 0x15, 0x31, 0x5a, 0xfb, 0x10, 0x56, 0xfb, 0xc, 0xe6, 0x2b, 0xf7, - 0x28, 0xf7, 0x27, 0xe8, 0xeb, 0xf7, 0x9, 0xed, 0x52, 0xc5, 0x3b, 0xa3, - 0x1f, 0x8d, 0x7, 0xab, 0x96, 0xd6, 0xb0, 0xec, 0x1a, 0xe9, 0x3f, 0xe3, - 0xfb, 0x1c, 0xfb, 0x18, 0x40, 0x39, 0x29, 0x21, 0xd9, 0x6c, 0xaa, 0x81, - 0x1e, 0x7a, 0xf7, 0x2a, 0x15, 0xc2, 0xb6, 0xbe, 0xd4, 0xcf, 0xbe, 0x5c, - 0x4b, 0x1e, 0x13, 0xbc, 0x4c, 0x58, 0x59, 0x48, 0x51, 0x50, 0xb3, 0xd9, - 0x1e, 0x6d, 0xfb, 0xde, 0x15, 0xd3, 0xbe, 0xd1, 0xe9, 0xdb, 0xd1, 0x53, - 0x33, 0x33, 0x48, 0x55, 0x3a, 0x31, 0x52, 0xcc, 0xda, 0x1e, 0xe, 0xf7, - 0xc9, 0x8b, 0xf5, 0x1, 0xf7, 0x7, 0xef, 0xf7, 0x7d, 0xef, 0xf7, 0x81, - 0xef, 0x3, 0xf7, 0x7, 0x16, 0xef, 0xf5, 0x27, 0x6, 0xf7, 0xe1, 0x21, - 0x15, 0xef, 0xf5, 0x27, 0x6, 0xf7, 0xe5, 0x21, 0x15, 0xef, 0xf5, 0x27, - 0x6, 0xe, 0xf7, 0xc9, 0xf7, 0x84, 0xd4, 0x1, 0xf7, 0x84, 0x4, 0xfa, - 0x7c, 0xd4, 0xfe, 0x7c, 0x6, 0xe, 0xf7, 0x84, 0xd4, 0x1, 0xf7, 0x84, - 0x4, 0xf8, 0xc0, 0xd4, 0xfc, 0xc0, 0x6, 0xe, 0x20, 0xf7, 0x7, 0xdb, - 0xf7, 0x7, 0xdb, 0x1, 0xb2, 0xf7, 0xca, 0x15, 0xf8, 0x8e, 0xdb, 0xfc, - 0x8e, 0x6, 0xfb, 0xa7, 0x4, 0xf8, 0x8e, 0xdb, 0xfc, 0x8e, 0x6, 0xe, - 0x7c, 0xd5, 0xf8, 0x1d, 0xda, 0xf7, 0x62, 0x77, 0x1, 0xae, 0xe6, 0xf7, - 0xc5, 0xe6, 0x3, 0xf7, 0x41, 0xf8, 0xc0, 0x15, 0xf7, 0xc, 0xc4, 0xb0, - 0x61, 0x97, 0x76, 0xa1, 0x5f, 0x19, 0x98, 0x6f, 0x6b, 0x97, 0x59, 0x1b, - 0x30, 0xfb, 0x14, 0x50, 0xfb, 0x6c, 0xfb, 0x71, 0xf7, 0x15, 0x59, 0xea, - 0xf7, 0x27, 0xf7, 0x8, 0xf4, 0xf7, 0x3a, 0xf7, 0x27, 0x4e, 0xf7, 0x12, - 0x29, 0xf7, 0x8, 0x1f, 0xe4, 0xb6, 0x72, 0xbc, 0x21, 0x58, 0x75, 0xa0, - 0x83, 0x90, 0x6b, 0xa4, 0x19, 0xfb, 0x0, 0x6, 0xb6, 0x6d, 0x9d, 0x7f, - 0xb5, 0x62, 0x20, 0x5a, 0x18, 0x76, 0xfb, 0xf1, 0x15, 0xf7, 0x21, 0xd3, - 0xc2, 0xc9, 0xea, 0xd7, 0x64, 0xfb, 0x31, 0xfb, 0x30, 0x22, 0x62, 0x48, - 0x6b, 0x26, 0x99, 0xf7, 0x4b, 0x1e, 0xe, 0xfc, 0x31, 0x8b, 0xef, 0xf7, - 0x88, 0xef, 0xf7, 0xa6, 0x77, 0xb7, 0x77, 0x1, 0xe5, 0xec, 0x35, 0xd7, - 0x3, 0xe5, 0x16, 0xec, 0xef, 0x2a, 0x6, 0xa2, 0xdb, 0x15, 0xc1, 0x6, - 0x9f, 0xf8, 0xf, 0x5, 0xf7, 0x33, 0x2a, 0xfb, 0x33, 0x7, 0xe, 0xfb, - 0xfa, 0xfb, 0x42, 0x76, 0xf8, 0xfe, 0xef, 0x1, 0xf7, 0xa, 0xec, 0x33, - 0xd8, 0x3, 0xf7, 0xa, 0xf8, 0x3b, 0x15, 0xec, 0xef, 0x2a, 0x6, 0xfc, - 0xc6, 0x4, 0xfb, 0x30, 0xec, 0xf7, 0x30, 0x7, 0x75, 0xf8, 0xf, 0x5, - 0x53, 0x6, 0xe, 0x4b, 0xa, 0xf8, 0x56, 0xcf, 0xf7, 0x66, 0x77, 0x1, - 0xd7, 0xe3, 0x3, 0xd7, 0x16, 0xe3, 0xf8, 0x56, 0xed, 0xcf, 0x29, 0xbc, - 0x6, 0xc2, 0xa7, 0xb4, 0xc3, 0x76, 0x1e, 0x98, 0xd8, 0x5, 0x8b, 0x72, - 0x94, 0x7a, 0xfb, 0x23, 0x8b, 0xfb, 0x3, 0x59, 0x1e, 0x5a, 0x4d, 0x47, - 0xc9, 0x7, 0xe, 0x5b, 0xa, 0xf7, 0x3d, 0x3b, 0xa, 0xf7, 0x95, 0xfc, - 0x56, 0x15, 0xe3, 0xf8, 0x9a, 0x33, 0x6, 0xed, 0x4, 0x6d, 0xa, 0x78, - 0xd2, 0xf7, 0xe0, 0xd8, 0xf7, 0x3f, 0xdf, 0x12, 0xf8, 0x2a, 0xeb, 0x17, - 0xab, 0xf7, 0x46, 0x15, 0xfb, 0x2e, 0x99, 0xf7, 0x16, 0x60, 0xe5, 0x1b, - 0xf7, 0x36, 0xe1, 0xf7, 0x9, 0xf7, 0x13, 0xf7, 0x2f, 0xfb, 0x25, 0xdc, - 0x23, 0x59, 0x61, 0x78, 0x72, 0x74, 0x1f, 0xb3, 0xf7, 0x4f, 0x5, 0xf7, - 0xb6, 0xdf, 0xfb, 0xfd, 0x6, 0x43, 0xfb, 0xfe, 0xe0, 0x81, 0x5, 0xb1, - 0xa3, 0xba, 0xa9, 0xc8, 0x1b, 0xdf, 0xd1, 0x56, 0x21, 0x30, 0x54, 0x39, - 0x2a, 0x1f, 0x6f, 0x2f, 0x92, 0xf7, 0x12, 0x77, 0x1f, 0xe, 0x5b, 0xa, - 0xf7, 0x3b, 0x3b, 0xa, 0xf7, 0x93, 0xfc, 0x56, 0x15, 0xe3, 0xf9, 0x58, - 0x7a, 0xa, 0xfb, 0x4e, 0x76, 0xf9, 0x22, 0xcf, 0xf7, 0x20, 0xdd, 0x1, - 0x90, 0xfb, 0xb, 0x15, 0x7b, 0x3f, 0x5, 0x7f, 0xca, 0xa0, 0x8b, 0x92, - 0x1b, 0xda, 0xbe, 0xb3, 0xe2, 0x9a, 0x1f, 0xe9, 0xf8, 0xa3, 0x5, 0xef, - 0x6, 0x97, 0xcf, 0x5, 0x27, 0x6, 0x98, 0xc8, 0x5, 0xbf, 0x95, 0x94, - 0xa6, 0xba, 0x1b, 0xa0, 0x9c, 0x87, 0x83, 0xaf, 0x1f, 0x9c, 0xd6, 0x5, - 0x95, 0x68, 0x7a, 0x94, 0x64, 0x1b, 0xfb, 0x4, 0x6c, 0x27, 0x4e, 0x7e, - 0x1f, 0x7f, 0x4e, 0x5, 0x28, 0x6, 0x80, 0x47, 0x5, 0xed, 0x6, 0x33, - 0xfc, 0x8a, 0x5, 0x5f, 0x84, 0x73, 0x6c, 0x6c, 0x1b, 0x7b, 0x76, 0x8e, - 0x93, 0x65, 0x1f, 0xe, 0xa0, 0x76, 0xf7, 0x3d, 0xda, 0xf8, 0x5b, 0x77, - 0x1, 0xf7, 0xb3, 0xe3, 0x3, 0xa4, 0xf7, 0x3d, 0x15, 0xf7, 0xcd, 0xfb, - 0x3d, 0xe3, 0xf7, 0x3d, 0xec, 0xda, 0x2a, 0xf8, 0x5b, 0x43, 0x6, 0xfb, - 0xdd, 0xfc, 0x5b, 0x5, 0xe2, 0x16, 0xf7, 0x73, 0xf7, 0xd3, 0x5, 0x8e, - 0xfb, 0xd3, 0x6, 0xe, 0xfc, 0xa0, 0x8d, 0x76, 0xf9, 0x66, 0x77, 0x1, - 0x32, 0x78, 0x15, 0xf8, 0x3a, 0xf9, 0x66, 0x5, 0x3f, 0x6, 0xfc, 0x3b, - 0xfd, 0x66, 0x5, 0xe, 0xfb, 0x70, 0xd4, 0xf7, 0x1c, 0xd3, 0xf8, 0x29, - 0xd3, 0x12, 0xcb, 0xe5, 0xf7, 0x94, 0xe4, 0x39, 0xdd, 0x13, 0xf8, 0xc9, - 0x55, 0x15, 0xfb, 0x28, 0x87, 0xf7, 0x23, 0x79, 0xcc, 0x1b, 0xf7, 0x47, - 0xc1, 0xf7, 0x2, 0xf7, 0x3d, 0x1f, 0xf8, 0x66, 0x3a, 0x4d, 0x89, 0x7, - 0xd2, 0x54, 0x49, 0x8f, 0x6e, 0x1b, 0xfb, 0x36, 0x4b, 0xfb, 0x34, 0xfb, - 0x12, 0xfb, 0x20, 0xdc, 0xfb, 0xf, 0xf7, 0x25, 0x1f, 0x13, 0xb8, 0xb4, - 0xc1, 0x95, 0xc5, 0xbc, 0x1f, 0x24, 0x8e, 0x26, 0xfb, 0x27, 0x24, 0x7f, - 0xc0, 0xa6, 0x87, 0x1e, 0x7a, 0xf7, 0xd3, 0x15, 0xf7, 0x11, 0xc5, 0xe4, - 0xd9, 0x1e, 0x13, 0xf4, 0xc8, 0xe5, 0x49, 0xfb, 0x28, 0x2c, 0x67, 0x2b, - 0xfb, 0x7, 0x26, 0x68, 0xf7, 0x15, 0xc9, 0x1f, 0xe, 0x3b, 0x7c, 0xd3, - 0xf8, 0xeb, 0xd3, 0x12, 0xce, 0xe3, 0xf7, 0x22, 0xe5, 0x80, 0xe0, 0x9f, - 0xe5, 0x13, 0xec, 0xce, 0x16, 0xe3, 0xf8, 0x7e, 0x6, 0xce, 0x93, 0xee, - 0xf7, 0x7, 0xc3, 0xb5, 0x6a, 0x5f, 0x1e, 0x13, 0xf4, 0x57, 0x3c, 0x30, - 0x4e, 0x44, 0xf7, 0x4c, 0x38, 0x3c, 0x1a, 0x5d, 0x62, 0x64, 0x5a, 0x6e, - 0x69, 0x97, 0xd0, 0x66, 0x1e, 0x3f, 0x67, 0x5, 0x67, 0x9c, 0xbf, 0x3a, - 0xf7, 0x1, 0x1b, 0xf7, 0x0, 0xd1, 0xd2, 0xe1, 0x1f, 0xf7, 0x14, 0xfb, - 0x4c, 0xc0, 0xbf, 0x1a, 0x13, 0xec, 0xc2, 0xd5, 0xe9, 0xc2, 0x1a, 0xd2, - 0x4b, 0xd9, 0xfb, 0x9, 0xfb, 0x21, 0x43, 0x35, 0xfb, 0x2c, 0x1e, 0xe, - 0xfb, 0xfa, 0xf8, 0xf8, 0x76, 0xf7, 0x25, 0x77, 0x1, 0xf7, 0x29, 0xf8, - 0xe5, 0x15, 0xc9, 0x6, 0x2f, 0xf7, 0x21, 0x5, 0x22, 0x6, 0xe, 0x71, - 0xa, 0x96, 0x15, 0xf8, 0x7c, 0xf7, 0x5c, 0x5, 0xdd, 0x7, 0xfc, 0x7c, - 0xf7, 0x5e, 0x5, 0x34, 0x7, 0xf8, 0x1a, 0xfb, 0x30, 0xfc, 0x1a, 0xfb, - 0x2e, 0x5, 0xe, 0x3c, 0x52, 0xa, 0xf7, 0x93, 0xf7, 0x16, 0x15, 0xd9, - 0x6, 0xfb, 0xc, 0xf7, 0x5e, 0xf7, 0xc, 0xf7, 0x5f, 0x5, 0x3d, 0x6, - 0xfb, 0x27, 0xfb, 0x5f, 0x5, 0xf7, 0xd1, 0xfb, 0x5e, 0x15, 0xdb, 0x6, - 0xfb, 0xe, 0xf7, 0x5e, 0xf7, 0xe, 0xf7, 0x5f, 0x5, 0x3b, 0x6, 0xfb, - 0x27, 0xfb, 0x5f, 0x5, 0xe, 0x3c, 0x52, 0xa, 0xf7, 0xa9, 0xf7, 0x16, - 0x15, 0xdc, 0x6, 0xf7, 0x27, 0xf7, 0x5e, 0xfb, 0x27, 0xf7, 0x5f, 0x5, - 0x3a, 0x6, 0xf7, 0xd, 0xfb, 0x5f, 0x5, 0xfb, 0xb7, 0xfb, 0x5e, 0x15, - 0xda, 0x6, 0xf7, 0x28, 0xf7, 0x5e, 0xfb, 0x28, 0xf7, 0x5f, 0x5, 0x3c, - 0x6, 0xf7, 0xd, 0xfb, 0x5f, 0x5, 0xe, 0xfb, 0xfa, 0x52, 0xa, 0xf7, - 0x6b, 0xf7, 0x16, 0x15, 0xc1, 0x6, 0x36, 0xf7, 0x5e, 0xe0, 0xf7, 0x5f, - 0x5, 0x55, 0x6, 0xfb, 0xa, 0xfb, 0x5f, 0x5, 0xe, 0xfb, 0xd9, 0x52, - 0xa, 0xec, 0xf7, 0x16, 0x15, 0xc3, 0x6, 0xf7, 0x8, 0xf7, 0x60, 0xfb, - 0x8, 0xf7, 0x5d, 0x5, 0x53, 0x6, 0xe2, 0xfb, 0x5d, 0x5, 0xe, 0xa0, - 0x76, 0xf8, 0x5a, 0xd7, 0xf7, 0x50, 0x77, 0x1, 0xcc, 0xe3, 0xf7, 0x8e, - 0xe3, 0x3, 0xcc, 0x16, 0xe3, 0xf7, 0xaf, 0x6, 0xdd, 0xb2, 0xe4, 0xf4, - 0xf7, 0x1, 0x88, 0x2a, 0x6d, 0x1e, 0xfb, 0xdb, 0xe3, 0xf7, 0xdb, 0x7, - 0xf7, 0x8, 0x49, 0xe2, 0xfb, 0x14, 0x66, 0x59, 0x85, 0x4a, 0x52, 0x1e, - 0xf7, 0x97, 0x33, 0x7, 0xe, 0xfb, 0xfa, 0xf8, 0xe5, 0xf7, 0x21, 0x1, - 0xf7, 0x58, 0xf8, 0xe5, 0x60, 0xa, 0xfb, 0x9b, 0xfb, 0x21, 0x60, 0xa, - 0xe, 0xfb, 0xfa, 0xf7, 0x7c, 0xe5, 0x1, 0xb7, 0xf7, 0x7c, 0x15, 0xf7, - 0x89, 0xe5, 0xfb, 0x89, 0x6, 0xe, 0xfc, 0x69, 0xa0, 0x76, 0xf9, 0x1, - 0xec, 0x1, 0xf7, 0x24, 0xe3, 0x3, 0xce, 0x16, 0xe3, 0xf8, 0x98, 0x33, - 0x6, 0xf4, 0x4, 0x6d, 0xa, 0x62, 0xa, 0xcc, 0xf8, 0xe3, 0x15, 0xd2, - 0x6, 0xf7, 0x12, 0xf7, 0x23, 0x38, 0xa, 0x57, 0x50, 0xa, 0x4b, 0xa, - 0xf8, 0xe9, 0xf7, 0x1d, 0x1, 0xea, 0xe3, 0x3, 0x85, 0xf8, 0xe9, 0x15, - 0xee, 0x6, 0xbb, 0xde, 0xb6, 0x38, 0x5, 0xf0, 0x6, 0x26, 0x42, 0xa, - 0x8f, 0x50, 0xa, 0x4b, 0xa, 0xf8, 0xf2, 0xef, 0x12, 0x98, 0xe5, 0x83, - 0xe3, 0x84, 0xe5, 0x13, 0xd0, 0xea, 0x16, 0xe3, 0xf8, 0x99, 0x33, 0x6, - 0x13, 0xe8, 0x39, 0xe4, 0x58, 0xa, 0x62, 0xa, 0xf7, 0x17, 0xf8, 0xea, - 0x15, 0xd4, 0x6, 0x39, 0xf7, 0x1c, 0x38, 0xa, 0xe3, 0x50, 0xa, 0xfc, - 0x69, 0xfb, 0x51, 0x76, 0xf9, 0xd3, 0xec, 0x1, 0xce, 0xe3, 0x3, 0x8c, - 0xfb, 0x12, 0x15, 0x7a, 0x40, 0x5, 0x85, 0xa2, 0x9e, 0x88, 0x9c, 0x1b, - 0xdc, 0xaa, 0xc7, 0xf7, 0xe, 0x1f, 0xf8, 0xb5, 0x33, 0xfc, 0xb5, 0x7, - 0x2d, 0x72, 0x7d, 0x62, 0x95, 0x1e, 0xcd, 0xf9, 0x7f, 0x15, 0x6d, 0xa, - 0xfb, 0x53, 0x44, 0xa, 0xf7, 0x62, 0x6, 0xca, 0xc6, 0xf7, 0x43, 0xfb, - 0x9d, 0x5, 0xf7, 0x0, 0x6, 0xfb, 0x71, 0xf7, 0xda, 0xf7, 0x5a, 0xf7, - 0x54, 0x5, 0xfb, 0x6, 0x6, 0xfb, 0x65, 0xfb, 0x66, 0x5, 0xf8, 0x2e, - 0x33, 0x7, 0xe, 0xfc, 0x69, 0x44, 0xa, 0xf9, 0x62, 0x7a, 0xa, 0x71, - 0xa, 0xf7, 0x69, 0x15, 0xf8, 0x7c, 0xfb, 0x5e, 0x5, 0xe2, 0x7, 0xfc, - 0x1a, 0xf7, 0x30, 0xf8, 0x1a, 0xf7, 0x2e, 0x5, 0xe2, 0x7, 0xfc, 0x7c, - 0xfb, 0x5c, 0x5, 0xe, 0x20, 0xf7, 0x15, 0x76, 0x1, 0xb2, 0xf7, 0xc8, - 0x15, 0xf8, 0x27, 0xfb, 0x5c, 0xde, 0xf7, 0xae, 0xfc, 0x7a, 0x6, 0xe, - 0xfc, 0x69, 0x44, 0xa, 0xf7, 0xf9, 0x6, 0xe2, 0xd6, 0x5, 0xd8, 0x7, - 0x34, 0x40, 0x5, 0xf7, 0xb0, 0x33, 0xfb, 0xfb, 0x7, 0x34, 0x43, 0x5, - 0x3e, 0x7, 0xe2, 0xd3, 0x5, 0xe, 0xf7, 0x22, 0x6f, 0xa, 0xf7, 0x70, - 0xe3, 0xf7, 0x70, 0xe3, 0x17, 0xcc, 0x16, 0xe3, 0xf7, 0xa1, 0x6, 0xcc, - 0x9c, 0xf7, 0x14, 0xf7, 0x2, 0xe1, 0x92, 0x3f, 0x5a, 0x1e, 0xfb, 0xe5, - 0xe3, 0xf7, 0xc1, 0x7, 0xdc, 0xb2, 0xdb, 0xe3, 0xe8, 0x8b, 0x36, 0x59, - 0x1e, 0xfb, 0xdb, 0xe3, 0xf7, 0xf3, 0x7, 0xb0, 0x76, 0xf7, 0x2a, 0xfb, - 0x34, 0x2a, 0x72, 0x4c, 0x6f, 0x79, 0x1e, 0xc7, 0x76, 0x42, 0xaa, 0x41, - 0x1b, 0x40, 0x6c, 0x5e, 0x5d, 0x6f, 0x1f, 0x13, 0xf8, 0x89, 0x8a, 0x5, - 0xd3, 0x3c, 0x7, 0xe, 0xfb, 0xfa, 0xf9, 0x7, 0xc4, 0x1, 0x95, 0xf9, - 0x7, 0x15, 0xf7, 0xcd, 0xc4, 0xfb, 0xcd, 0x6, 0xe, 0x20, 0xb2, 0xf7, - 0x6c, 0x15, 0xf8, 0x8e, 0xd4, 0xfc, 0x8e, 0x6, 0xe, 0xfb, 0x4e, 0x76, - 0xf7, 0x57, 0xda, 0x48, 0xce, 0xf8, 0x5c, 0x77, 0x4e, 0xa, 0x13, 0xdc, - 0xf7, 0x33, 0xbf, 0x15, 0x6f, 0x9f, 0xa8, 0x67, 0xd4, 0x1b, 0xdd, 0xa9, - 0xb9, 0xa6, 0x9b, 0x1f, 0x8d, 0x6, 0x13, 0xbc, 0x4e, 0xd9, 0xf8, 0x9f, - 0x33, 0xfb, 0x75, 0x7, 0xfb, 0x10, 0x8a, 0x20, 0xfb, 0xb, 0xfb, 0x11, - 0x8b, 0xf7, 0xf, 0xf7, 0x1, 0x1e, 0xf7, 0x74, 0x33, 0xfd, 0x6e, 0xe4, - 0xf7, 0x97, 0x7, 0xe, 0x20, 0xa0, 0x76, 0xf8, 0x8e, 0x77, 0x1, 0xb3, - 0xd1, 0xf8, 0x1, 0xd0, 0x3, 0xb2, 0xd1, 0x15, 0xd1, 0x45, 0xf7, 0x4c, - 0xf7, 0x4b, 0xf7, 0x4a, 0xfb, 0x4b, 0xd1, 0xd2, 0xfb, 0x49, 0xf7, 0x4a, - 0xf7, 0x48, 0xf7, 0x49, 0x46, 0xd2, 0xfb, 0x49, 0xfb, 0x4c, 0xfb, 0x4c, - 0xf7, 0x4d, 0x45, 0x43, 0xf7, 0x4a, 0xfb, 0x4a, 0x5, 0xe, 0x6f, 0xa, - 0xf7, 0x8e, 0xe3, 0x17, 0xcc, 0x16, 0xe3, 0xf7, 0xaf, 0x6, 0xe0, 0xac, - 0xe9, 0xf7, 0x0, 0xf7, 0x0, 0x8c, 0x25, 0x5e, 0x1e, 0xfb, 0xcf, 0xe3, - 0xf7, 0xcf, 0x7, 0xf7, 0xe, 0x4a, 0xf0, 0xfb, 0x18, 0x68, 0x4d, 0x7c, - 0x3d, 0x58, 0x1e, 0x13, 0xf0, 0x89, 0xd4, 0x3c, 0x6, 0xe, 0x78, 0xd2, - 0xf7, 0x47, 0xd7, 0xf7, 0xdd, 0xd4, 0x1, 0xc6, 0xe5, 0xf7, 0x9d, 0xec, - 0x3, 0xc2, 0xf7, 0x30, 0x15, 0xfb, 0x3b, 0xa0, 0xf7, 0x30, 0x83, 0xb2, - 0x1b, 0xf7, 0x86, 0x8c, 0xf7, 0xc0, 0xd9, 0xf7, 0x61, 0x4e, 0xf7, 0x1f, - 0xfb, 0x4a, 0xfb, 0x18, 0x2a, 0x23, 0xfb, 0x20, 0xfb, 0x27, 0xf7, 0xb, - 0x3a, 0xf7, 0x2, 0xe0, 0xb8, 0xc0, 0xb3, 0xa3, 0x1f, 0x8d, 0x6, 0x47, - 0x8c, 0x88, 0xfb, 0x60, 0xfb, 0x2e, 0x1b, 0x29, 0x6e, 0xdf, 0xa6, 0x86, - 0x1f, 0x84, 0xf7, 0xbc, 0x15, 0xe7, 0xc2, 0xda, 0xdf, 0xde, 0xca, 0x39, - 0x32, 0x38, 0x56, 0x46, 0x2e, 0x3d, 0x4e, 0xc6, 0xe8, 0x1e, 0xe, 0xa0, - 0x76, 0xf8, 0x5a, 0xd7, 0xdc, 0x75, 0xa, 0xcc, 0xe3, 0xf7, 0x8e, 0xe3, - 0x13, 0xec, 0xcc, 0x16, 0xe3, 0xf7, 0xc2, 0x6, 0xdf, 0xac, 0xcf, 0xf7, - 0x0, 0xf7, 0x0, 0x8c, 0x20, 0x5e, 0x1e, 0xfb, 0xc2, 0xe3, 0xf7, 0xc2, - 0x7, 0xf7, 0x19, 0x52, 0xea, 0xfb, 0x20, 0x68, 0x4d, 0x83, 0x3e, 0x58, - 0x1e, 0x89, 0xd4, 0x3c, 0x6, 0xbd, 0xe8, 0x15, 0xcc, 0x6, 0xbb, 0xab, - 0x8a, 0x90, 0x9f, 0xa4, 0x7f, 0x7f, 0xa3, 0x1e, 0x80, 0xa2, 0x9f, 0x80, - 0x9c, 0x1b, 0xa1, 0xd0, 0x90, 0xf6, 0x90, 0x1f, 0x4b, 0x6, 0x13, 0xdc, - 0x68, 0x87, 0x80, 0x84, 0x77, 0x1b, 0x86, 0x78, 0x95, 0x96, 0x70, 0x1f, - 0x13, 0xec, 0x96, 0x72, 0x6d, 0x94, 0x74, 0x1b, 0x5a, 0x59, 0x68, 0x3e, - 0x1f, 0xe, 0xa0, 0x76, 0xf7, 0x55, 0xcb, 0xf7, 0x3a, 0xce, 0xf7, 0x5a, - 0x77, 0x1, 0xa7, 0xf8, 0x89, 0x3, 0xcb, 0x16, 0xd0, 0x6, 0xb3, 0xf7, - 0x55, 0x5, 0xf7, 0x25, 0x6, 0x62, 0xfb, 0x55, 0x5, 0xd1, 0x6, 0xb3, - 0xf7, 0x55, 0x5, 0xf7, 0x22, 0xcb, 0xfb, 0x14, 0x6, 0xad, 0xf7, 0x3a, - 0x5, 0xe9, 0xce, 0x3b, 0x6, 0xb2, 0xf7, 0x5a, 0x5, 0x47, 0x6, 0x62, - 0xfb, 0x5a, 0x5, 0xfb, 0x24, 0x6, 0xb3, 0xf7, 0x5a, 0x5, 0x46, 0x6, - 0x62, 0xfb, 0x5a, 0x5, 0xfb, 0x1d, 0x48, 0xf7, 0x10, 0x6, 0x68, 0xfb, - 0x3a, 0x5, 0x32, 0x4b, 0xd7, 0x6, 0xd9, 0xcb, 0x15, 0xae, 0xf7, 0x3b, - 0x5, 0xf7, 0x2e, 0x6, 0x67, 0xfb, 0x3b, 0x5, 0xe, 0x7d, 0xd3, 0xf8, - 0x2c, 0xd3, 0x1, 0xbb, 0xe5, 0xf7, 0xa8, 0xe5, 0x3, 0xae, 0xf7, 0xa0, - 0x15, 0xfb, 0x2e, 0xd1, 0xfb, 0x14, 0xf7, 0x41, 0xf7, 0x30, 0xe2, 0xf1, - 0xf7, 0x48, 0xf7, 0x5a, 0xfb, 0x1a, 0xd3, 0xfb, 0x1, 0xfb, 0x3c, 0x40, - 0xfb, 0x13, 0xfb, 0x23, 0x1e, 0xe5, 0x16, 0xf7, 0x3c, 0xed, 0xa9, 0xc2, - 0xda, 0xd5, 0x4f, 0xfb, 0x1e, 0x39, 0x6f, 0xfb, 0x14, 0xfb, 0x11, 0x57, - 0x26, 0xb4, 0xf7, 0x3d, 0x1e, 0xe, 0x76, 0xa, 0xc8, 0xf7, 0x1d, 0x1, - 0x77, 0xa, 0x3, 0x3f, 0xa, 0xfb, 0x87, 0xfc, 0x6a, 0x23, 0xa, 0xe, - 0x76, 0xa, 0xf7, 0x5a, 0x77, 0x1, 0x77, 0xa, 0x3, 0x3a, 0xa, 0xfb, - 0x4d, 0xfc, 0x6a, 0x23, 0xa, 0xe, 0x7d, 0xd3, 0xf8, 0x34, 0xd3, 0xc7, - 0xef, 0x1, 0x77, 0xa, 0x3, 0x3e, 0xa, 0xfb, 0xab, 0xfc, 0x4e, 0x23, - 0xa, 0xe, 0xf7, 0x91, 0x7c, 0xd4, 0xf7, 0x46, 0xd3, 0xf7, 0x32, 0xd3, - 0x1, 0xae, 0xe5, 0xf7, 0xc8, 0xe7, 0xf7, 0xb1, 0xe7, 0x3, 0xf8, 0x6f, - 0xde, 0x15, 0x3d, 0xbf, 0xd4, 0x77, 0xca, 0x1b, 0xc8, 0xf7, 0x18, 0x9f, - 0xf7, 0x2b, 0xb3, 0x1f, 0x3c, 0x98, 0x5, 0x77, 0x85, 0x5e, 0x30, 0x24, - 0x1b, 0x2e, 0x5c, 0xd8, 0xf0, 0x8a, 0x1f, 0xf8, 0x10, 0x6, 0xf7, 0xaa, - 0xfb, 0x41, 0xa3, 0x49, 0x3d, 0x49, 0x68, 0x4b, 0x5f, 0x1e, 0xc8, 0x61, - 0x5a, 0xb1, 0x21, 0x1b, 0xfb, 0xd, 0xfb, 0xe, 0x2c, 0xfb, 0x49, 0xfb, - 0x47, 0xf7, 0x1, 0x29, 0xf7, 0x1a, 0xa9, 0xea, 0x8e, 0xea, 0xd3, 0x1f, - 0xfb, 0xf2, 0xf7, 0x47, 0x15, 0xf6, 0xc7, 0xec, 0xe8, 0xe0, 0xd1, 0x3c, - 0xfb, 0x11, 0xfb, 0x1d, 0x3e, 0x48, 0x3d, 0x63, 0xfb, 0x5, 0xa2, 0xf7, - 0x49, 0x1e, 0xf8, 0x24, 0xb9, 0x15, 0xf7, 0x4, 0x94, 0xcf, 0xb5, 0xc8, - 0x1b, 0xd7, 0xc8, 0x61, 0xfb, 0x4, 0x95, 0x1f, 0xe, 0xfb, 0xfa, 0xfb, - 0x75, 0xc7, 0xf7, 0x39, 0x77, 0x1, 0xd4, 0xc9, 0xc9, 0xe5, 0x3, 0xe8, - 0x16, 0x7a, 0x4f, 0x88, 0x6e, 0x76, 0x1a, 0x3d, 0xc1, 0x66, 0xc6, 0xae, - 0xb0, 0x97, 0x9d, 0xa8, 0x1e, 0xc2, 0x7, 0x78, 0x6d, 0x6a, 0x85, 0x70, - 0x1b, 0x67, 0x71, 0xa1, 0xba, 0x91, 0x88, 0xb9, 0x9e, 0xb7, 0x1f, 0xe, - 0x76, 0xa, 0xca, 0xf7, 0x1b, 0x1, 0x77, 0xa, 0x3, 0xb8, 0xf7, 0x9c, - 0x23, 0xa, 0xf7, 0x13, 0xf7, 0xe3, 0x4c, 0xa, 0x4a, 0xf7, 0x1b, 0x59, - 0xa, 0xa0, 0x76, 0xf8, 0xbe, 0xf7, 0x33, 0x1, 0xf7, 0xa3, 0xe3, 0x3, - 0xf7, 0xa3, 0x16, 0xe3, 0xf9, 0x53, 0x48, 0x6, 0x67, 0x42, 0x44, 0x47, - 0x37, 0x64, 0x8, 0x36, 0x7, 0xab, 0x97, 0xdd, 0xb3, 0xc3, 0xc1, 0x8, - 0xe, 0xf7, 0x23, 0x81, 0xc3, 0x5f, 0x76, 0xf7, 0xc6, 0xc3, 0xf7, 0xfb, - 0x77, 0xa0, 0x77, 0x12, 0xf7, 0x2a, 0xd1, 0xf8, 0x6f, 0xd7, 0x13, 0x76, - 0xf7, 0x2a, 0xf7, 0xf1, 0x15, 0xd1, 0xf7, 0xf5, 0x57, 0x6, 0x68, 0x60, - 0x53, 0x69, 0x69, 0x80, 0x8, 0x51, 0x7, 0xb0, 0x94, 0xb4, 0xa0, 0xa8, - 0xa3, 0x8, 0x50, 0xfd, 0x9, 0x15, 0xd7, 0x6, 0x13, 0x6e, 0xf8, 0xa3, - 0xf9, 0x66, 0x5, 0x40, 0x6, 0x13, 0xb6, 0xfb, 0x24, 0xfd, 0x5d, 0x15, - 0xf7, 0xbe, 0xc3, 0xfb, 0x4d, 0x6, 0xd3, 0xc3, 0x5, 0xcf, 0xba, 0xb6, - 0xa4, 0xc8, 0x1a, 0xe9, 0xfb, 0xc, 0x99, 0x76, 0xfb, 0xb, 0x79, 0x46, - 0x6a, 0x83, 0x1e, 0xd3, 0x84, 0x5, 0xa6, 0x94, 0x95, 0xa5, 0xc1, 0x1b, - 0xb3, 0xa4, 0x79, 0x69, 0x6b, 0x74, 0x7a, 0x41, 0x57, 0x1f, 0x4c, 0x5e, - 0x55, 0x5c, 0x85, 0x57, 0x8, 0xe, 0xf7, 0x23, 0x8d, 0x76, 0xdc, 0xbe, - 0xf8, 0xe2, 0x77, 0x1, 0xf7, 0x43, 0xce, 0xf8, 0x24, 0xcd, 0x3, 0xf8, - 0x67, 0xc9, 0x15, 0xf7, 0x43, 0x44, 0xcd, 0xd2, 0xbb, 0xbe, 0x5b, 0xf7, - 0x78, 0x53, 0x6, 0xfb, 0x4d, 0xfb, 0x71, 0x5, 0xd1, 0x84, 0x15, 0xf4, - 0xf7, 0xf, 0x5, 0xfb, 0xf, 0x7, 0xfc, 0x67, 0xf7, 0x83, 0x15, 0xce, - 0xf7, 0xf3, 0x59, 0x6, 0x6a, 0x60, 0x56, 0x69, 0x6a, 0x81, 0x8, 0x51, - 0x7, 0xaf, 0x94, 0xb1, 0x9f, 0xa7, 0xa3, 0x8, 0x5d, 0xfd, 0xa, 0x15, - 0xd4, 0x6, 0xf8, 0x8d, 0xf9, 0x63, 0x5, 0x44, 0x6, 0xe, 0xfb, 0xfa, - 0xf7, 0xe0, 0x76, 0xf8, 0x3a, 0x77, 0x1, 0xf7, 0x2b, 0xd2, 0x3, 0xf7, - 0x2b, 0xf7, 0xcb, 0x15, 0xd2, 0xf8, 0x3a, 0x56, 0x6, 0x68, 0x5e, 0x53, - 0x68, 0x68, 0x80, 0x8, 0x4e, 0x7, 0xb1, 0x95, 0xb3, 0xa0, 0xa9, 0xa4, - 0x8, 0xe, 0xfb, 0xd5, 0xf7, 0xc4, 0xd1, 0xf7, 0xbe, 0xcc, 0x1, 0xa3, - 0xd3, 0xf7, 0x38, 0xce, 0x3, 0xf7, 0xa6, 0xf7, 0xcf, 0x4c, 0xa, 0x78, - 0xa7, 0x8b, 0xb3, 0xd6, 0x1a, 0xf7, 0x1e, 0x7, 0xf7, 0x11, 0x3d, 0x9b, - 0x48, 0xfb, 0x9, 0x74, 0x3b, 0x62, 0x86, 0x1e, 0xcc, 0x77, 0x5, 0xc9, - 0x93, 0xb1, 0x99, 0xad, 0x1b, 0xd6, 0x8e, 0x56, 0x64, 0x1f, 0x82, 0x85, - 0x3b, 0x7f, 0x7b, 0x87, 0x8, 0x5a, 0x84, 0x39, 0x7d, 0x22, 0x1a, 0x27, - 0xd2, 0x6f, 0xb8, 0xbe, 0xb7, 0xab, 0xa9, 0xa8, 0x1e, 0x75, 0x8f, 0x7d, - 0x91, 0x7c, 0x1e, 0x7c, 0xf7, 0x5b, 0x15, 0x5b, 0x8a, 0x7d, 0x81, 0x77, - 0x1e, 0x65, 0x79, 0x64, 0x77, 0x68, 0x1b, 0x6a, 0x70, 0x9f, 0xb1, 0xb9, - 0xa6, 0x93, 0xcb, 0x97, 0x1f, 0xb7, 0x94, 0x96, 0x8c, 0x9c, 0x91, 0x8, - 0xe, 0xfb, 0xda, 0xf7, 0xc4, 0xd0, 0xf7, 0xbb, 0xd0, 0x1, 0xa4, 0xcb, - 0xf7, 0x50, 0xcb, 0x3, 0xa4, 0xf8, 0x9e, 0x15, 0xfb, 0x9, 0xc0, 0x26, - 0xf4, 0xf7, 0xe, 0xaf, 0xf7, 0x15, 0xe4, 0xe2, 0x68, 0xf7, 0x14, 0xfb, - 0xf, 0xfb, 0xd, 0x66, 0xfb, 0xc, 0x2c, 0x1e, 0xcb, 0x16, 0xb2, 0x97, - 0xf6, 0xdd, 0xe1, 0x93, 0xfb, 0x12, 0x77, 0x68, 0x83, 0xfb, 0x6, 0x35, - 0x35, 0x83, 0xf7, 0x13, 0xa1, 0x1e, 0xe, 0x3b, 0x8a, 0x76, 0xa6, 0xd0, - 0xf8, 0x10, 0xd0, 0xa1, 0x77, 0x1, 0xa7, 0xd3, 0xf7, 0xf8, 0xdc, 0x3, - 0xb0, 0x97, 0x15, 0xbb, 0x69, 0xc1, 0xcc, 0x5, 0x7d, 0xa3, 0xaf, 0x73, - 0xdc, 0x1b, 0xf7, 0x39, 0xe7, 0xf7, 0x3, 0xf7, 0x27, 0xf7, 0x1, 0x69, - 0xb7, 0x71, 0xab, 0x1f, 0xc2, 0xcb, 0x5a, 0xac, 0x58, 0x4f, 0x5, 0x9b, - 0x6e, 0x5c, 0xa1, 0x3f, 0x1b, 0xfb, 0x3a, 0x35, 0xfb, 0x8, 0xfb, 0x24, - 0x2e, 0xaa, 0x53, 0xad, 0x68, 0x1f, 0xba, 0xc6, 0x15, 0x6e, 0xa6, 0x80, - 0xb8, 0xbe, 0x1a, 0xf7, 0x3a, 0xf7, 0x17, 0xa6, 0xbc, 0xbe, 0xad, 0x78, - 0x7e, 0x9e, 0x1e, 0xfb, 0x60, 0xfb, 0xdc, 0x15, 0xf7, 0x86, 0xf7, 0xaf, - 0x5, 0xa1, 0x6f, 0x97, 0x72, 0x4e, 0x1a, 0xfb, 0x34, 0xfb, 0x8, 0x6e, - 0x4f, 0x59, 0x6c, 0x91, 0x99, 0x78, 0x1e, 0xe, 0x7d, 0xd3, 0xf8, 0x34, - 0xd3, 0xca, 0x75, 0xa, 0x77, 0xa, 0x13, 0xec, 0xf7, 0x7, 0xf8, 0xf5, - 0x15, 0xcc, 0x6, 0xbb, 0xac, 0x8a, 0x8f, 0xa2, 0xa4, 0x7f, 0x7f, 0xa2, - 0x1e, 0x80, 0xa2, 0x9f, 0x80, 0x9a, 0x1b, 0xa0, 0xd6, 0x8d, 0xf7, 0x2, - 0x56, 0xa, 0x87, 0x79, 0x92, 0x96, 0x74, 0x1f, 0x13, 0xdc, 0x70, 0x96, - 0x6b, 0x98, 0x72, 0x8a, 0x8, 0x13, 0xec, 0x5a, 0x59, 0x66, 0x40, 0x1f, - 0x45, 0xfb, 0xed, 0x23, 0xa, 0xe, 0x66, 0xa, 0xc7, 0xe3, 0xf7, 0x98, - 0xe5, 0x3, 0xf7, 0x28, 0xc8, 0x15, 0x68, 0xa5, 0xb3, 0x6c, 0xc9, 0x1b, - 0xf7, 0x6, 0xf7, 0x13, 0xe0, 0xf7, 0x4c, 0xf7, 0x25, 0x2d, 0xf7, 0x15, - 0xfb, 0x27, 0x2d, 0x70, 0x54, 0x73, 0x7c, 0x1f, 0x89, 0xce, 0x3b, 0xfd, - 0x71, 0xe3, 0xf7, 0xa0, 0x6, 0x82, 0xf7, 0x5e, 0x15, 0xf7, 0xd, 0xc2, - 0xe0, 0xdf, 0xcd, 0xe0, 0x50, 0xfb, 0x26, 0xfb, 0x3e, 0x28, 0x70, 0x57, - 0x4f, 0x3c, 0xb3, 0xf7, 0x30, 0x1e, 0xe, 0xfb, 0x2e, 0xfb, 0x2c, 0x76, - 0xf9, 0xba, 0xe0, 0x1, 0x9d, 0xf7, 0xa2, 0xdd, 0xd0, 0x3, 0xf7, 0x6c, - 0xfb, 0x41, 0x15, 0xd3, 0xf9, 0xba, 0xdd, 0xfd, 0xba, 0xd0, 0xf9, 0xba, - 0xc5, 0xe0, 0xfb, 0x8b, 0x6, 0xfb, 0xf, 0xfb, 0x1, 0x48, 0xfb, 0x1d, - 0x27, 0xca, 0x2d, 0xf7, 0x1b, 0x1f, 0xe, 0x70, 0xa, 0x1, 0xcf, 0xe6, - 0x3, 0xf7, 0x88, 0xfb, 0x63, 0x15, 0xc2, 0x6, 0x21, 0xf7, 0x3e, 0x69, - 0xf7, 0x30, 0xf7, 0x23, 0x1a, 0xf7, 0x6d, 0xd4, 0xf7, 0x1f, 0xce, 0xf7, - 0x7, 0x1e, 0x4a, 0x6, 0x21, 0xfb, 0x1f, 0x4f, 0xfb, 0x37, 0xfb, 0x3d, - 0x1a, 0xfb, 0x7f, 0xf7, 0x1d, 0xfb, 0x4d, 0xb2, 0x5a, 0x1e, 0xe, 0x70, - 0xa, 0x12, 0xf7, 0x42, 0xe6, 0x17, 0xad, 0xfb, 0x61, 0x15, 0xc6, 0x89, - 0x5, 0xf5, 0xf7, 0x1f, 0xcd, 0xf7, 0x35, 0xf7, 0x3d, 0x1a, 0xf7, 0x7f, - 0xfb, 0x16, 0xf7, 0x4f, 0x64, 0xbc, 0x1e, 0x4d, 0x6, 0x13, 0x20, 0xf5, - 0xfb, 0x3e, 0xad, 0xfb, 0x32, 0xfb, 0x23, 0x1a, 0xfb, 0x6d, 0x3d, 0xfb, - 0x26, 0x4d, 0x23, 0x1e, 0xe, 0xf7, 0x5a, 0x79, 0xc5, 0x65, 0x76, 0xf7, - 0xc5, 0xc4, 0x89, 0xc5, 0xf7, 0x8a, 0xc4, 0x8c, 0x77, 0x12, 0xb2, 0xde, - 0xf7, 0x3a, 0xdd, 0xf7, 0x29, 0xdd, 0xf7, 0x3b, 0xdd, 0x13, 0x9b, 0xc0, - 0xb2, 0xf8, 0x9d, 0x15, 0xfb, 0x37, 0xf7, 0x2, 0x7a, 0xc0, 0xce, 0xf0, - 0xb2, 0xf7, 0x21, 0xf7, 0x27, 0x26, 0xad, 0x48, 0x1e, 0xfb, 0xa, 0x5e, - 0x29, 0x38, 0x1f, 0xde, 0x16, 0xae, 0x89, 0xe4, 0xdd, 0xdf, 0x8d, 0x28, - 0x72, 0x68, 0x89, 0x34, 0x37, 0x1e, 0x13, 0xa6, 0xc0, 0x39, 0x8d, 0xed, - 0xa3, 0x1f, 0xf8, 0x21, 0xfb, 0xfa, 0x15, 0xfb, 0x37, 0xf7, 0x2, 0x79, - 0xc0, 0xce, 0xf0, 0xb3, 0xf7, 0x21, 0x1e, 0x13, 0xab, 0xc0, 0xf7, 0x26, - 0x26, 0xad, 0x48, 0xfb, 0xb, 0x5f, 0x2a, 0x38, 0x1e, 0xdd, 0x16, 0xae, - 0x89, 0xe3, 0xde, 0xdf, 0x8d, 0x29, 0x72, 0x68, 0x89, 0x33, 0x37, 0x38, - 0x8d, 0xee, 0xa3, 0x1e, 0x13, 0x67, 0xc0, 0xfc, 0x2b, 0xfb, 0x4a, 0x15, - 0xda, 0x6, 0xf8, 0x3b, 0xf9, 0x66, 0x5, 0x3e, 0x6, 0xe, 0xfc, 0x31, - 0x8b, 0xf5, 0x1, 0xe2, 0xf3, 0x3, 0xe2, 0x16, 0xf3, 0xf5, 0x23, 0x6, - 0xe, 0xfc, 0x31, 0xf7, 0x52, 0xf7, 0x11, 0x1, 0xd8, 0xf7, 0x11, 0x3, - 0xd8, 0xf7, 0x52, 0x15, 0xf7, 0x11, 0xf7, 0x11, 0xfb, 0x11, 0x6, 0xe, - 0xf7, 0xc9, 0x78, 0xc5, 0xf7, 0x86, 0xc5, 0x88, 0xc6, 0xf7, 0x85, 0xc4, - 0x95, 0x77, 0x12, 0x92, 0xd5, 0xf7, 0x1f, 0xd4, 0xd9, 0xd4, 0xf7, 0x1f, - 0xd5, 0xbe, 0xd4, 0xf7, 0x1f, 0xd5, 0x13, 0xb7, 0xe0, 0x92, 0xf8, 0x98, - 0x15, 0x52, 0x97, 0xfb, 0xf, 0xf7, 0x16, 0xf7, 0x23, 0x8c, 0xf7, 0x1b, - 0xb8, 0xb2, 0x86, 0xf7, 0x1e, 0xfb, 0x1f, 0xfb, 0x1a, 0x83, 0xfb, 0x16, - 0x5c, 0x1e, 0xd5, 0x16, 0xb1, 0x8a, 0xdd, 0xd0, 0xc4, 0x99, 0x53, 0x4b, - 0x5d, 0x83, 0x40, 0x4c, 0x48, 0x8a, 0xd7, 0xb8, 0x1e, 0xf7, 0xb6, 0xfb, - 0xf8, 0x15, 0x5d, 0xa, 0x1e, 0x13, 0xcf, 0xe0, 0x3c, 0xa, 0xf7, 0x9c, - 0x16, 0x5d, 0xa, 0x3c, 0xa, 0xfd, 0xb, 0xfb, 0x45, 0x15, 0xcd, 0x6, - 0xf7, 0xbf, 0xf9, 0x64, 0x5, 0x49, 0x6, 0xe, 0x20, 0xf7, 0x82, 0xe4, - 0x1, 0xf7, 0x8d, 0xe4, 0x3, 0xb2, 0xf7, 0x82, 0x15, 0xf7, 0x66, 0xfb, - 0x64, 0xe4, 0xf7, 0x64, 0xf7, 0x63, 0xe4, 0xfb, 0x63, 0xf7, 0x64, 0x32, - 0xfb, 0x64, 0xfb, 0x66, 0x6, 0xe, 0x20, 0x8b, 0xd9, 0xf7, 0x57, 0xd8, - 0xf7, 0x30, 0x77, 0x1, 0xf7, 0x8b, 0xe4, 0x3, 0xb2, 0xf7, 0xa5, 0x15, - 0xf7, 0x64, 0xfb, 0x2e, 0xe4, 0xf7, 0x2e, 0xf7, 0x65, 0xd8, 0xfb, 0x65, - 0xf7, 0x30, 0x32, 0xfb, 0x30, 0xfb, 0x64, 0x6, 0xfb, 0xf2, 0x4, 0xf8, - 0x8e, 0xd9, 0xfc, 0x8e, 0x6, 0xe, 0x66, 0xa, 0xbe, 0xe5, 0xf7, 0xa6, - 0xda, 0x3, 0xf8, 0x28, 0xc8, 0x15, 0x8d, 0xfb, 0xa0, 0xe3, 0xf9, 0x71, - 0x3b, 0x48, 0x89, 0x6, 0xa3, 0x7c, 0x5b, 0xc2, 0x2d, 0x1b, 0xfb, 0x27, - 0x42, 0xfb, 0x10, 0xfb, 0x25, 0xfb, 0x4c, 0xf5, 0x31, 0xf7, 0x6, 0xc9, - 0xc8, 0xaa, 0xae, 0xa5, 0x1f, 0xfb, 0xab, 0xf7, 0x64, 0x15, 0xf7, 0x26, - 0xcb, 0xc1, 0xcd, 0xdf, 0xd7, 0x3c, 0xfb, 0xd, 0xfb, 0x30, 0x27, 0x5d, - 0x4f, 0x57, 0x3d, 0xab, 0xf7, 0x3e, 0x1e, 0xe, 0x8b, 0xef, 0xf8, 0xbf, - 0xd3, 0x12, 0xf7, 0x71, 0xeb, 0x31, 0xdc, 0xec, 0xe2, 0x13, 0xd8, 0xf7, - 0x77, 0xf7, 0x44, 0x15, 0xdc, 0x6, 0x8d, 0xed, 0x97, 0x9a, 0xce, 0xc8, - 0x8, 0xc6, 0xc2, 0xb7, 0xb4, 0xdc, 0x1a, 0xf7, 0x4, 0x30, 0xe3, 0xfb, - 0x16, 0x26, 0xfb, 0x6, 0x33, 0xfb, 0xa, 0x1e, 0xd8, 0x81, 0x5, 0xe0, - 0x99, 0xb4, 0xc6, 0xdf, 0x1b, 0xd8, 0xc3, 0x4d, 0x49, 0x59, 0x6f, 0x6e, - 0x62, 0x66, 0x1f, 0x38, 0x40, 0x6c, 0x67, 0x90, 0xfb, 0x10, 0x8, 0x13, - 0xe8, 0x85, 0xfb, 0x44, 0x15, 0xeb, 0xef, 0x2b, 0x6, 0xe, 0x3b, 0xfb, - 0x5d, 0xd3, 0xf8, 0xbf, 0xee, 0x12, 0xe6, 0xe5, 0xe0, 0xef, 0x31, 0xdf, - 0xe0, 0xdd, 0x13, 0xec, 0xf7, 0xa8, 0xf7, 0xea, 0x15, 0x89, 0x29, 0x85, - 0x86, 0x46, 0x4e, 0x8, 0x4d, 0x54, 0x5d, 0x5c, 0x3a, 0x1a, 0xfb, 0x4, - 0xea, 0x37, 0xf7, 0x1b, 0xcc, 0xf7, 0x21, 0xb8, 0xf7, 0x37, 0x1e, 0x39, - 0x95, 0x5, 0x3f, 0x8c, 0x63, 0x45, 0x35, 0x1b, 0x3b, 0x50, 0xc5, 0xcd, - 0xbd, 0xa9, 0xae, 0xb5, 0xb0, 0x1f, 0xe1, 0xd6, 0xa5, 0xa5, 0x86, 0xf7, - 0x10, 0x8, 0x13, 0xf4, 0x2d, 0xdf, 0x15, 0xef, 0xee, 0x27, 0x6, 0xe, - 0xfb, 0xe4, 0xf8, 0x78, 0x76, 0xf7, 0x93, 0x77, 0x1, 0xd1, 0xd8, 0xc8, - 0xd8, 0x3, 0xf7, 0x74, 0xf8, 0x63, 0x5c, 0xa, 0xfb, 0xe, 0xfb, 0x1e, - 0x5c, 0xa, 0xe, 0xfb, 0xfa, 0xfb, 0x14, 0x76, 0xf7, 0x22, 0xf7, 0x5, - 0x1, 0xdb, 0xbb, 0xf7, 0xb, 0xbb, 0x3, 0xad, 0x84, 0x48, 0xa, 0xf7, - 0x3b, 0xfb, 0x5, 0x48, 0xa, 0xe, 0xfb, 0xfa, 0xf8, 0x6a, 0xf7, 0x6, - 0xf7, 0x21, 0x77, 0x1, 0xb1, 0xbb, 0xf7, 0xb, 0xbb, 0x3, 0xf7, 0x61, - 0xf8, 0x6a, 0x47, 0xa, 0xfb, 0x3b, 0x2f, 0x47, 0xa, 0xe, 0xfb, 0xfa, - 0xf8, 0x78, 0x76, 0xf7, 0x21, 0xf7, 0x6, 0x12, 0xdb, 0xbb, 0xf7, 0xb, - 0xbb, 0x17, 0xbb, 0xf8, 0x63, 0x15, 0x13, 0xf0, 0x4d, 0xa, 0xf7, 0x51, - 0x69, 0x15, 0x13, 0x50, 0x4d, 0xa, 0xe, 0xfc, 0x69, 0xf8, 0x6a, 0xef, - 0xf7, 0x2f, 0x77, 0x1, 0xcc, 0xba, 0x3, 0xcc, 0xf8, 0x6a, 0x15, 0xe8, - 0xef, 0x5d, 0x6, 0x8c, 0xa7, 0x90, 0xd3, 0xbe, 0xa0, 0x75, 0xad, 0x18, - 0x3b, 0x67, 0x89, 0x2f, 0x5a, 0x1a, 0xe, 0xfc, 0x69, 0xf8, 0x78, 0x76, - 0x1, 0xf7, 0x2, 0xba, 0x3, 0xd6, 0xf8, 0x63, 0x15, 0xdb, 0xaf, 0x8d, - 0xd6, 0xbc, 0x1a, 0xea, 0x2e, 0xfb, 0x9, 0xb9, 0x7, 0x8a, 0x6f, 0x86, - 0x54, 0x58, 0x76, 0x8, 0xe, 0xfc, 0x69, 0x85, 0xf7, 0x4, 0x1, 0xf7, - 0x1, 0xbb, 0x3, 0xca, 0x85, 0x15, 0xb9, 0x6, 0x8a, 0x6f, 0x87, 0x4f, - 0x58, 0x76, 0xa1, 0x69, 0x18, 0xdb, 0xaf, 0x8d, 0xdb, 0xbc, 0x1a, 0xe5, - 0x2d, 0x7, 0xe, 0xfc, 0x88, 0xf8, 0x78, 0x76, 0xf7, 0x93, 0x77, 0x1, - 0xc6, 0xd4, 0x3, 0xdb, 0xf8, 0x63, 0x15, 0xa9, 0x6, 0xa1, 0xf7, 0x1e, - 0x5, 0xf7, 0x9, 0x42, 0xfb, 0x9, 0x7, 0xe, 0xfb, 0xfa, 0xa0, 0x76, - 0xf8, 0x55, 0xe4, 0x12, 0x85, 0xe3, 0x17, 0xd8, 0x16, 0xe3, 0xf7, 0xac, - 0x6, 0xd7, 0x9b, 0xe8, 0xc3, 0xa2, 0xa0, 0x8a, 0x78, 0xa0, 0x1e, 0xa9, - 0xdd, 0x5, 0x92, 0x82, 0x78, 0x9f, 0x5e, 0x1b, 0x4c, 0x7a, 0x5f, 0x63, - 0x77, 0x1f, 0x13, 0xe0, 0x89, 0xd4, 0x3b, 0x6, 0xe, 0xb9, 0x78, 0xca, - 0xf7, 0xab, 0xc3, 0xf7, 0xe, 0xc2, 0xf7, 0xa, 0xca, 0x1, 0x7d, 0xca, - 0xf7, 0x2e, 0xcd, 0xf7, 0x49, 0xd2, 0xf7, 0x3c, 0xca, 0x3, 0xf7, 0x5f, - 0xf7, 0x2a, 0x15, 0xcd, 0xf7, 0x41, 0xb3, 0x6, 0xc0, 0x9e, 0x76, 0x33, - 0xbd, 0x1f, 0xb0, 0x4b, 0x5, 0xdc, 0x6, 0x59, 0xda, 0x58, 0xdc, 0x7a, - 0x97, 0x73, 0x95, 0x19, 0x9d, 0xeb, 0x94, 0xef, 0xec, 0x2a, 0x9d, 0x3c, - 0x1f, 0xfb, 0x22, 0x6, 0xcd, 0xfb, 0x45, 0x15, 0xf7, 0xe, 0xd7, 0x7, - 0xb4, 0xcb, 0x8b, 0x4f, 0x4d, 0x41, 0x8b, 0x6c, 0x1f, 0xfb, 0xfb, 0x78, - 0x15, 0xfb, 0x66, 0xf7, 0x41, 0xfb, 0x3d, 0xf7, 0x68, 0xf7, 0x68, 0xf7, - 0x3d, 0xf7, 0x3e, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x3f, 0xf7, 0x3c, 0xfb, - 0x66, 0xfb, 0x66, 0xfb, 0x43, 0xfb, 0x3b, 0xfb, 0x66, 0x1e, 0xca, 0x16, - 0xf7, 0x42, 0xf7, 0x25, 0xf7, 0x20, 0xf7, 0x44, 0xf7, 0x44, 0xf7, 0x23, - 0xfb, 0x20, 0xfb, 0x42, 0xfb, 0x43, 0xfb, 0x23, 0xfb, 0x21, 0xfb, 0x44, - 0xfb, 0x44, 0xfb, 0x25, 0xf7, 0x21, 0xf7, 0x43, 0x1e, 0xe, 0xfb, 0xfa, - 0xf8, 0xd0, 0xb1, 0xf7, 0x0, 0xb1, 0x1, 0xd6, 0xb1, 0xf7, 0x0, 0xb1, - 0x3, 0xd6, 0xf9, 0x2e, 0x15, 0x57, 0xb3, 0x61, 0xbe, 0xbf, 0xb4, 0xb5, - 0xbf, 0xbe, 0x62, 0xb2, 0x57, 0x58, 0x63, 0x64, 0x58, 0x1e, 0xb1, 0x16, - 0xa6, 0xa1, 0xa4, 0xaa, 0xab, 0xa2, 0x74, 0x6e, 0x6c, 0x73, 0x72, 0x6c, - 0x6f, 0x72, 0xa1, 0xad, 0x1e, 0xe, 0xfb, 0x53, 0x7c, 0xd3, 0xf8, 0x2d, - 0xd3, 0x1, 0xc8, 0xe0, 0xf7, 0x78, 0xe5, 0x3, 0xab, 0xf7, 0x2f, 0x15, - 0x57, 0x94, 0xa3, 0xfb, 0xa, 0xf7, 0x50, 0x1b, 0xf7, 0x1b, 0xd7, 0xd3, - 0xe1, 0xf6, 0x3f, 0xa9, 0xfb, 0x1c, 0xae, 0x1f, 0x36, 0xa1, 0x66, 0x91, - 0xb7, 0x1a, 0xc6, 0xd2, 0x9f, 0xae, 0xae, 0xd5, 0x83, 0x6c, 0xa, 0xf6, - 0xfb, 0x4a, 0x1b, 0xfb, 0x11, 0x49, 0x44, 0x3b, 0xfb, 0x0, 0xf1, 0x73, - 0xda, 0x78, 0x1f, 0xf7, 0x2, 0x70, 0xb1, 0x73, 0x61, 0x1a, 0x68, 0x6c, - 0x58, 0x30, 0x38, 0x62, 0xb5, 0xd0, 0x82, 0x1e, 0xe, 0xfb, 0x53, 0x7c, - 0xd3, 0xf8, 0x22, 0xd3, 0xf7, 0x63, 0x77, 0x1, 0xb9, 0xe0, 0xf7, 0x87, - 0xe5, 0x3, 0xab, 0xf7, 0x2c, 0x15, 0x57, 0x94, 0xa3, 0xfb, 0x7, 0xf7, - 0x50, 0x1b, 0xf7, 0x1b, 0xd7, 0xd0, 0xe1, 0xf6, 0x40, 0x9c, 0xfb, 0x1c, - 0xae, 0x1f, 0x36, 0xa1, 0x66, 0xa2, 0xb7, 0x1a, 0xc6, 0xd2, 0x93, 0xae, - 0xae, 0xd5, 0x85, 0x6c, 0xa, 0xf4, 0xfb, 0x4a, 0x1b, 0xfb, 0x11, 0x49, - 0x46, 0x3b, 0xfb, 0x0, 0xf1, 0x70, 0xda, 0x78, 0x1f, 0xf7, 0x2, 0x70, - 0xb0, 0x7c, 0x61, 0x1a, 0x68, 0x6d, 0x5b, 0x30, 0x38, 0x61, 0xb2, 0xd0, - 0x82, 0x1e, 0xe2, 0xf8, 0x44, 0x37, 0xa, 0xfb, 0x53, 0xd4, 0xf9, 0xa4, - 0xd2, 0x1, 0xd4, 0x7a, 0x15, 0xfb, 0x10, 0x9b, 0xe6, 0x59, 0xf4, 0x1b, - 0xf7, 0x9, 0xd7, 0xd0, 0xe4, 0xd8, 0x4f, 0xb8, 0x79, 0x99, 0x1f, 0xb5, - 0x9c, 0xd1, 0x98, 0xe7, 0x1a, 0xe7, 0x3f, 0xc6, 0x27, 0xc6, 0x1e, 0x49, - 0xb3, 0x2d, 0xbf, 0xc4, 0x1a, 0xb2, 0xaa, 0xb6, 0xc8, 0xe0, 0x9e, 0x46, - 0x66, 0x92, 0x1e, 0xe6, 0x95, 0x5, 0xf7, 0x8, 0xfb, 0x15, 0xbe, 0x47, - 0xfb, 0x14, 0x52, 0x32, 0x4b, 0x50, 0xb0, 0x68, 0xa7, 0x73, 0x1e, 0x3f, - 0x74, 0x69, 0x4f, 0x54, 0x1a, 0x2a, 0xe2, 0x55, 0xda, 0x5c, 0x1e, 0xda, - 0x5a, 0xb0, 0x6f, 0xa2, 0x79, 0x8, 0xaf, 0x6f, 0x91, 0x76, 0x77, 0x1a, - 0x6d, 0x73, 0x55, 0x3a, 0x28, 0x7b, 0xd5, 0xb2, 0x82, 0x1e, 0xf7, 0x57, - 0xf7, 0x20, 0x15, 0x78, 0x99, 0x6f, 0x9c, 0x4b, 0xb0, 0x8, 0x3b, 0xba, - 0x60, 0xa5, 0xbf, 0x1a, 0xbf, 0xba, 0xb0, 0xa6, 0x9a, 0x1e, 0xa3, 0x77, - 0xab, 0x76, 0xb5, 0x71, 0x8, 0xd9, 0x5b, 0xc3, 0x62, 0x58, 0x1a, 0x70, - 0x79, 0x67, 0x55, 0x70, 0x1e, 0xe, 0xfc, 0x31, 0xfb, 0x12, 0x76, 0xf8, - 0xc8, 0xee, 0x1, 0xe3, 0xf2, 0x3, 0xe3, 0x85, 0x15, 0xc8, 0x6, 0x8a, - 0x61, 0x7d, 0x62, 0x5c, 0x76, 0xa3, 0x66, 0x18, 0xd2, 0xa4, 0x94, 0xdd, - 0xad, 0x1a, 0xee, 0x24, 0x7, 0xf7, 0xd8, 0x4, 0xf2, 0xee, 0x24, 0x6, - 0xe, 0xa0, 0x76, 0xf9, 0xa, 0xdc, 0x1, 0xf7, 0x23, 0xe9, 0x3, 0xf7, - 0x23, 0x16, 0xe9, 0x6, 0xa2, 0xf7, 0xcc, 0xf7, 0x54, 0xf7, 0x85, 0xd2, - 0xd2, 0x8, 0xcb, 0xfc, 0x7a, 0x3a, 0xf8, 0x3, 0x7, 0xfb, 0x3b, 0xfb, - 0x46, 0x2f, 0xfb, 0x9e, 0x89, 0xfb, 0x37, 0x8, 0xe, 0x78, 0xd2, 0xf7, - 0xd8, 0xd7, 0xf7, 0x48, 0xd2, 0x1, 0xc4, 0xf3, 0xf7, 0x9d, 0xe7, 0x3, - 0xf7, 0x14, 0xf7, 0xfa, 0x15, 0xf7, 0x4, 0xb3, 0xf7, 0x36, 0xf7, 0xd, - 0xed, 0xa3, 0x36, 0x70, 0x91, 0x1e, 0xe5, 0x93, 0x5, 0xf7, 0x1b, 0x78, - 0xfb, 0x6, 0xb3, 0x36, 0x1b, 0xfb, 0x88, 0x84, 0xfb, 0xb4, 0x30, 0xfb, - 0x43, 0xb6, 0xfb, 0x3c, 0xf7, 0x64, 0xf7, 0x2d, 0xd7, 0xf7, 0xa, 0xf7, - 0xa, 0xf7, 0x20, 0xfb, 0x6, 0xea, 0xfb, 0x7, 0x40, 0x5d, 0x69, 0x4f, - 0x65, 0x1f, 0x97, 0xfb, 0x1c, 0x15, 0xf1, 0xd8, 0xbf, 0xd1, 0xe3, 0xbc, - 0x45, 0x32, 0x38, 0x5b, 0x39, 0x32, 0x31, 0x52, 0xdc, 0xe4, 0x1e, 0xe, - 0xfc, 0x31, 0x8d, 0x76, 0x1, 0x7a, 0xf7, 0xcc, 0x3, 0x7a, 0x78, 0x15, - 0xd2, 0x6, 0xf7, 0x85, 0xf9, 0x88, 0x5, 0x4c, 0x6, 0xe, 0xfc, 0x31, - 0xe, 0x7b, 0xda, 0x6a, 0xd3, 0xf7, 0x6c, 0xd2, 0xf7, 0x96, 0xd2, 0x12, - 0xe8, 0xe3, 0x67, 0xe7, 0x13, 0x78, 0xac, 0xd0, 0x15, 0xac, 0x37, 0x5, - 0xa7, 0xb5, 0xc4, 0x9c, 0xbb, 0x1b, 0x13, 0xb8, 0xca, 0xe3, 0x5d, 0xc7, - 0x1b, 0xb5, 0xab, 0x98, 0x9c, 0xb4, 0x1f, 0x6f, 0xdb, 0x5, 0x83, 0x7a, - 0x64, 0x74, 0x68, 0x1b, 0x13, 0x74, 0x43, 0x54, 0xb2, 0x41, 0x1b, 0x6d, - 0x73, 0x85, 0x86, 0x7e, 0x1f, 0x89, 0x8d, 0x5, 0xbb, 0xbc, 0xb2, 0xca, - 0xd1, 0x1a, 0xa0, 0x86, 0x95, 0x86, 0x97, 0x1e, 0xf7, 0x1b, 0xd2, 0xfb, - 0x2a, 0x6, 0x13, 0xb8, 0x7e, 0xb1, 0x79, 0xbf, 0xb0, 0x1a, 0xc6, 0xbd, - 0xd3, 0xd8, 0xc9, 0xc2, 0x60, 0x39, 0x95, 0x1e, 0xe1, 0x98, 0x5, 0xf7, - 0x4, 0x84, 0x26, 0xd2, 0x22, 0x1b, 0x20, 0xfb, 0x0, 0x4c, 0xfb, 0x1f, - 0x67, 0x92, 0x6d, 0x9c, 0x4e, 0x1f, 0x42, 0x44, 0xe8, 0x6, 0x13, 0xb4, - 0x8f, 0x7b, 0x8f, 0x7c, 0x6e, 0x1a, 0xfb, 0xc, 0x34, 0x54, 0x72, 0x7d, - 0x1e, 0xe, 0xfc, 0x31, 0x99, 0x76, 0xf8, 0x52, 0xcf, 0xf7, 0x36, 0x77, - 0x1, 0xdc, 0xe3, 0x3, 0xf7, 0x95, 0x8c, 0x15, 0x7f, 0xd9, 0x5, 0x54, - 0x7e, 0x76, 0x93, 0xd4, 0x1a, 0xf7, 0xb8, 0xe3, 0xcf, 0x33, 0xf7, 0x36, - 0x7, 0x33, 0x56, 0x5, 0xfb, 0x1, 0x48, 0x47, 0xce, 0xfb, 0xb8, 0x7, - 0x35, 0x90, 0x47, 0xf7, 0x6, 0xa8, 0x98, 0x90, 0x8e, 0x9a, 0x1e, 0xe, - 0xfb, 0x4e, 0x76, 0xf7, 0x57, 0xd4, 0xf8, 0x20, 0xd4, 0xf7, 0x50, 0x77, - 0x12, 0xc5, 0xda, 0x3c, 0xe3, 0xf7, 0xad, 0xe5, 0x13, 0xf6, 0xf7, 0x26, - 0xc1, 0x15, 0x6c, 0xa8, 0xaf, 0x68, 0xd6, 0x1b, 0xf7, 0x2, 0xf7, 0xd, - 0xdd, 0xf7, 0x4e, 0xf7, 0x25, 0x37, 0xf7, 0x15, 0xfb, 0x27, 0x3c, 0x6d, - 0x6a, 0x6a, 0x6c, 0x1f, 0xf7, 0x92, 0x33, 0xfe, 0x31, 0xe3, 0x7, 0x13, - 0xfa, 0x82, 0xf8, 0x63, 0x15, 0xf7, 0xd, 0xcc, 0xdb, 0xdf, 0xcd, 0xd6, - 0x53, 0xfb, 0x25, 0xfb, 0x3e, 0x32, 0x72, 0x57, 0x4f, 0x32, 0xb2, 0xf7, - 0x30, 0x1e, 0xe, 0x78, 0xd2, 0xf8, 0xd8, 0xd2, 0x1, 0xf8, 0x29, 0xe9, - 0x3, 0xad, 0xf7, 0x47, 0x15, 0x28, 0x95, 0xd8, 0x28, 0xf7, 0x2b, 0x1b, - 0xf7, 0x13, 0xf7, 0xf, 0xdd, 0xf7, 0x1e, 0xd2, 0x4f, 0xf0, 0x3b, 0x1f, - 0x8d, 0x7, 0xe4, 0xb0, 0x99, 0xd2, 0xb0, 0x1a, 0xf1, 0x30, 0xdc, 0xfb, - 0x12, 0x3d, 0xfb, 0xa, 0x6a, 0xfb, 0x2a, 0x6e, 0x1e, 0xe7, 0x7b, 0x5, - 0xd1, 0x96, 0xb3, 0xc5, 0xdf, 0x1b, 0xc5, 0xca, 0x66, 0x40, 0x24, 0xfb, - 0x6, 0x77, 0x57, 0x90, 0x1f, 0x80, 0x3f, 0x5, 0xf4, 0xad, 0xf4, 0x51, - 0x24, 0x1a, 0x38, 0x48, 0x4b, 0x36, 0xfb, 0x9, 0x75, 0xf3, 0xae, 0x84, - 0x1e, 0xe, 0xf7, 0x23, 0x8d, 0x76, 0xdc, 0xbe, 0xf7, 0x77, 0xc2, 0xf7, - 0x6, 0xf7, 0x56, 0x56, 0xc0, 0x12, 0xf7, 0x8f, 0xd7, 0x50, 0xd7, 0xf7, - 0xec, 0xd1, 0x13, 0xf3, 0xf8, 0x89, 0xc9, 0x15, 0xf7, 0x4f, 0x43, 0xd1, - 0xd3, 0xbf, 0xbe, 0x57, 0xf7, 0x78, 0x4f, 0x6, 0xfb, 0x59, 0xfb, 0x71, - 0x5, 0xd6, 0x84, 0x15, 0xf7, 0x4, 0xf7, 0x10, 0x5, 0xfb, 0x10, 0x7, - 0xfd, 0x17, 0xf7, 0xdc, 0x15, 0x51, 0x97, 0xae, 0x60, 0xee, 0x1b, 0xef, - 0xc0, 0xc1, 0xc2, 0xbd, 0x68, 0xa7, 0x5a, 0x96, 0x1f, 0x8d, 0x7, 0x13, - 0xed, 0xbb, 0x97, 0x9e, 0xa3, 0xab, 0x1a, 0xe3, 0xfb, 0x8, 0x92, 0x78, - 0x31, 0x70, 0x68, 0x54, 0x75, 0x1e, 0xd1, 0x80, 0x5, 0xa7, 0x96, 0x99, - 0x9f, 0xb7, 0x1b, 0xb5, 0x9c, 0x77, 0x75, 0x63, 0x59, 0x83, 0x70, 0x1f, - 0x13, 0xf3, 0x81, 0x58, 0x5, 0xc1, 0x8d, 0xbd, 0x7d, 0x5b, 0x1a, 0x65, - 0x69, 0x7b, 0x60, 0x53, 0x7e, 0xae, 0x9d, 0x85, 0x1e, 0xa5, 0xfc, 0x67, - 0x15, 0xd8, 0x6, 0xf8, 0xaf, 0xf9, 0x66, 0x5, 0x3f, 0x6, 0xe, 0xfb, - 0xfa, 0xf7, 0xa2, 0xcd, 0xf7, 0xc4, 0xca, 0x1, 0xf7, 0x76, 0xdc, 0x3, - 0x90, 0xf8, 0x1c, 0x15, 0x46, 0x98, 0xb1, 0x56, 0xf5, 0x1b, 0xf5, 0xc4, - 0xcc, 0xcd, 0xc7, 0x66, 0xac, 0x56, 0x98, 0x1f, 0x8d, 0x7, 0xbf, 0x9a, - 0x9f, 0xa8, 0xb0, 0x1a, 0xf4, 0xfb, 0x11, 0x93, 0x77, 0x2b, 0x6f, 0x62, - 0x49, 0x74, 0x1e, 0xd5, 0x7f, 0x5, 0xab, 0x97, 0x99, 0xa3, 0xba, 0x1b, - 0xb8, 0x9e, 0x73, 0x71, 0x5b, 0x55, 0x82, 0x6f, 0x1f, 0x80, 0x4e, 0x5, - 0xc5, 0x8c, 0xc0, 0x7c, 0x52, 0x1a, 0x5e, 0x67, 0x77, 0x5d, 0x4f, 0x7c, - 0xb6, 0xa0, 0x85, 0x1e, 0xe, 0xfb, 0xfa, 0xf9, 0x37, 0xba, 0x1, 0x87, - 0xf8, 0xf2, 0x15, 0xce, 0x6, 0xbb, 0xad, 0x8b, 0x8f, 0xa0, 0x9f, 0x81, - 0x80, 0x9f, 0x1e, 0x7f, 0xa2, 0xa2, 0x7d, 0xa2, 0x1b, 0xa1, 0xdf, 0x91, - 0xf7, 0x1, 0x1f, 0x49, 0x6, 0x68, 0x87, 0x7c, 0x7f, 0x76, 0x1b, 0x78, - 0x7b, 0x92, 0x94, 0x7c, 0x1f, 0x98, 0x73, 0x74, 0x9c, 0x6a, 0x1b, 0x59, - 0x54, 0x66, 0x3d, 0x1f, 0xe, 0xf7, 0xc9, 0xf7, 0xdb, 0x76, 0xf7, 0xf5, - 0xc6, 0x1, 0xf7, 0x5b, 0xcd, 0xf7, 0x8b, 0xc8, 0xf7, 0xa1, 0xc8, 0x3, - 0xf7, 0x5b, 0xf7, 0xc6, 0x15, 0xcd, 0xf7, 0xf5, 0xf7, 0x2f, 0xc6, 0xfc, - 0xa, 0x50, 0xf7, 0x2d, 0x6, 0xf7, 0xcd, 0xfb, 0xf5, 0x15, 0xc8, 0xf7, - 0xf5, 0x8d, 0x6, 0xf4, 0xfb, 0xf5, 0x5, 0xc7, 0x6, 0xef, 0xf7, 0xf0, - 0x5, 0x8d, 0xfb, 0xf0, 0xc8, 0xf8, 0x30, 0x2b, 0x6, 0x2b, 0xfb, 0xe0, - 0x5, 0x89, 0x6, 0x28, 0xf7, 0xe0, 0x5, 0x29, 0x6, 0xe, 0x8b, 0xde, - 0xf8, 0xbc, 0xd4, 0x1, 0xf8, 0x32, 0xe6, 0x3, 0xa5, 0x16, 0xf8, 0x75, - 0xde, 0xfb, 0xfa, 0x6, 0x97, 0x9e, 0x97, 0xa3, 0xdb, 0xc9, 0x8, 0xf7, - 0x25, 0xf7, 0x4, 0xf6, 0xf5, 0xf1, 0x1a, 0xe1, 0x4c, 0xf7, 0x1, 0xfb, - 0x38, 0xfb, 0xe, 0x2b, 0x49, 0xfb, 0x1c, 0x7d, 0x1e, 0xe6, 0x81, 0x5, - 0xf7, 0x20, 0x8c, 0xf7, 0x11, 0x8a, 0x9a, 0x1b, 0xda, 0xc4, 0x5a, 0x44, - 0x37, 0xfb, 0x0, 0x2d, 0x3d, 0x4f, 0x1f, 0x38, 0x4a, 0xfb, 0xb, 0x2d, - 0xfb, 0x5, 0x1a, 0xe, 0xfb, 0xfa, 0xf7, 0xa0, 0xcd, 0xf7, 0xc7, 0xc9, - 0x1, 0xf7, 0x84, 0xdb, 0x3, 0x8f, 0xf7, 0xad, 0x15, 0xf7, 0xd3, 0xcd, - 0xfb, 0x5d, 0x6, 0x95, 0x96, 0x95, 0x95, 0xc5, 0xbb, 0x8, 0xd3, 0xc4, - 0xbb, 0xa8, 0xd3, 0x1a, 0xf7, 0x4, 0x2b, 0x9c, 0x54, 0xfb, 0x11, 0x77, - 0x38, 0x64, 0x81, 0x1e, 0xd5, 0x83, 0x5, 0xab, 0x95, 0x95, 0xaf, 0xc4, - 0x1b, 0xb6, 0xab, 0x70, 0x63, 0x65, 0x72, 0x78, 0x3d, 0x4b, 0x1f, 0x47, - 0x55, 0x50, 0x53, 0x85, 0x4d, 0x8, 0xe, 0x7c, 0xd7, 0x63, 0x76, 0xf8, - 0x9f, 0x77, 0x4e, 0xa, 0x13, 0x78, 0xf8, 0x2e, 0x16, 0xda, 0xf8, 0x9f, - 0x33, 0xfb, 0xb8, 0x6, 0x13, 0xb8, 0x33, 0x5b, 0x39, 0x30, 0x36, 0x76, - 0xd9, 0xe3, 0x1e, 0xf7, 0xbc, 0x33, 0xfb, 0xda, 0x7, 0xfb, 0x8, 0xca, - 0x2b, 0xf7, 0x17, 0xa4, 0xcc, 0x91, 0xe0, 0xc3, 0x1e, 0x8d, 0x6, 0xe, - 0x79, 0xa, 0xf8, 0xec, 0xf7, 0x1d, 0x34, 0xa, 0xfb, 0x4f, 0xf8, 0xa0, - 0x2f, 0xa, 0xe, 0x79, 0xa, 0xf9, 0x75, 0x77, 0x34, 0xa, 0xfb, 0xb2, - 0xf8, 0xa0, 0x2c, 0xa, 0xe, 0x79, 0xa, 0xf8, 0xf5, 0xef, 0x12, 0xcf, - 0xe3, 0x7e, 0xe5, 0xe6, 0xe5, 0x7e, 0xe3, 0x3c, 0xda, 0x13, 0x71, 0xf8, - 0x2e, 0x88, 0x15, 0xda, 0xf8, 0x9c, 0x6, 0x13, 0xb2, 0x33, 0xfb, 0xa8, - 0x6, 0x32, 0xa, 0x1e, 0x13, 0x69, 0x65, 0xa, 0x1f, 0xfb, 0x9f, 0xf8, - 0xa9, 0x31, 0xa, 0x13, 0xb4, 0xf7, 0x49, 0x72, 0xa, 0x79, 0xa, 0xf8, - 0xec, 0xf7, 0x1d, 0x3d, 0xa, 0x33, 0x6, 0x13, 0xb8, 0xfb, 0xa8, 0x7, - 0x32, 0xa, 0x65, 0xa, 0x1e, 0x13, 0xb4, 0xfb, 0x28, 0xf8, 0xa0, 0x5e, - 0xa, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, 0xc0, 0xbd, 0x7, - 0xe, 0xfb, 0x53, 0x68, 0xa, 0xf7, 0x64, 0x16, 0xdd, 0x6, 0xf7, 0x5e, - 0xf8, 0x9f, 0x5, 0x31, 0x6, 0xfb, 0x2d, 0xfc, 0x38, 0xfb, 0x28, 0xf8, - 0x38, 0x5, 0x2e, 0x6, 0xe, 0xaa, 0x68, 0xa, 0xf7, 0x41, 0x16, 0xe7, - 0x6, 0xe9, 0xf8, 0x28, 0x5, 0x8d, 0x6, 0xf1, 0xfc, 0x28, 0x5, 0xe6, - 0x6, 0xf7, 0x2f, 0xf8, 0x9f, 0x5, 0x35, 0x6, 0xfb, 0x2, 0xfc, 0x28, - 0x5, 0x89, 0x6, 0x25, 0xf8, 0x28, 0x5, 0x31, 0x6, 0x26, 0xfc, 0x33, - 0xfb, 0x5, 0xf8, 0x33, 0x5, 0x30, 0x6, 0xe, 0xfb, 0x53, 0x68, 0xa, - 0x96, 0x16, 0xf4, 0x6, 0xf7, 0x1b, 0xf7, 0x60, 0xf7, 0x18, 0xfb, 0x60, - 0x5, 0xf6, 0x6, 0xfb, 0x52, 0xf7, 0xa6, 0xf7, 0x44, 0xf7, 0x8d, 0x5, - 0x23, 0x6, 0xfb, 0x10, 0xfb, 0x4d, 0xfb, 0x7, 0xf7, 0x4d, 0x5, 0x20, - 0x6, 0xf7, 0x3f, 0xfb, 0x92, 0x5, 0xe, 0xfb, 0x53, 0xfb, 0x6a, 0xdd, - 0xf9, 0x23, 0x77, 0x1, 0xba, 0xfb, 0x10, 0x15, 0x94, 0x3b, 0x55, 0xa, - 0xa4, 0xf7, 0x0, 0xf2, 0xbe, 0x1f, 0xf7, 0x5d, 0xf8, 0xa2, 0x5, 0x32, - 0x6, 0xfb, 0x28, 0xfc, 0x37, 0x5, 0x89, 0x6, 0xfb, 0x24, 0xf8, 0x37, - 0x5, 0x2c, 0x6, 0xf7, 0x58, 0xfc, 0x9a, 0x5, 0x43, 0x71, 0x81, 0x4a, - 0x41, 0x1b, 0x76, 0x7b, 0x8f, 0x8f, 0x7e, 0x1f, 0xe, 0xfb, 0x53, 0xfb, - 0x6a, 0xda, 0xf9, 0x70, 0xf7, 0x1d, 0x1, 0x33, 0xa, 0xf7, 0x27, 0xf9, - 0x62, 0x2f, 0xa, 0xe, 0xfb, 0x53, 0xfb, 0x6a, 0xda, 0xf9, 0x79, 0xef, - 0x1, 0x96, 0xea, 0x94, 0xe5, 0xe6, 0xe5, 0x3, 0x33, 0xa, 0xce, 0xf9, - 0x6b, 0x2e, 0xa, 0xe, 0xa0, 0x76, 0xf7, 0x39, 0xcf, 0xe3, 0xcf, 0xf7, - 0xbf, 0x77, 0x1, 0xf7, 0x7f, 0xe3, 0x3, 0xab, 0xf7, 0x39, 0x15, 0xf7, - 0x5f, 0xfb, 0x39, 0xe3, 0xf7, 0x39, 0xf7, 0x5d, 0xcf, 0xfb, 0x5d, 0xe3, - 0xf7, 0x5d, 0xcf, 0xfb, 0x2f, 0x6, 0xf7, 0x4c, 0xf7, 0xbf, 0x5, 0x23, - 0x6, 0xfb, 0x40, 0xfb, 0xbf, 0xfb, 0x44, 0xf7, 0xbf, 0x5, 0x29, 0x6, - 0xf7, 0x4d, 0xfb, 0xbf, 0x5, 0xfb, 0x30, 0x47, 0xf7, 0x5f, 0x33, 0xfb, - 0x5f, 0x6, 0xe, 0xfb, 0x53, 0x8b, 0xd7, 0xf8, 0xb, 0xd3, 0x63, 0xa, - 0xf8, 0x1a, 0x67, 0xa, 0xfc, 0x10, 0x5, 0xe, 0xfb, 0x53, 0x8b, 0xd7, - 0xf8, 0x6, 0xd3, 0xf7, 0x6c, 0x77, 0x63, 0xa, 0xf8, 0x15, 0x67, 0xa, - 0xfc, 0xb, 0x5, 0xf7, 0x43, 0xf8, 0xa2, 0x37, 0xa, 0x78, 0xd2, 0xf8, - 0xd8, 0xd2, 0x1, 0xbe, 0xe8, 0xf7, 0xa6, 0xe8, 0x3, 0xb1, 0xf7, 0xec, - 0x15, 0x37, 0x92, 0xfb, 0xab, 0xf7, 0x7e, 0xf7, 0x7d, 0x91, 0xf7, 0xb3, - 0xd7, 0xd9, 0x88, 0xf7, 0xad, 0xfb, 0x81, 0xfb, 0x71, 0x78, 0xfb, 0xaf, - 0x3f, 0x1e, 0xe7, 0x16, 0xf7, 0x21, 0xa1, 0xf7, 0x27, 0xf7, 0x12, 0xf7, - 0x1c, 0x96, 0xfb, 0x38, 0xfb, 0x10, 0xfb, 0xd, 0x7e, 0xfb, 0x3f, 0xfb, - 0x19, 0xfb, 0x1c, 0x7e, 0xf7, 0x42, 0xf7, 0xa, 0x1e, 0xe, 0x76, 0xa0, - 0xf8, 0x9f, 0x9a, 0xf7, 0x48, 0x9e, 0x6, 0xfb, 0x70, 0x98, 0x7, 0x1e, - 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xd2, 0xa, 0xe2, 0xb, 0xf8, 0xc0, - 0x14, 0xf9, 0x47, 0x15, 0xab, 0x13, 0x0, 0x5b, 0x2, 0x0, 0x1, 0x0, - 0x7, 0x0, 0x68, 0x0, 0x6d, 0x0, 0xbc, 0x0, 0xf0, 0x1, 0x1e, 0x1, - 0x23, 0x1, 0x4c, 0x1, 0x72, 0x1, 0xac, 0x1, 0xd9, 0x1, 0xdf, 0x1, - 0xee, 0x2, 0xb, 0x2, 0x13, 0x2, 0x1c, 0x2, 0x34, 0x2, 0x3a, 0x2, - 0x50, 0x2, 0x84, 0x2, 0x96, 0x2, 0x9f, 0x2, 0xa4, 0x2, 0xb4, 0x2, - 0xb9, 0x2, 0xc0, 0x2, 0xc7, 0x2, 0xee, 0x3, 0xf, 0x3, 0x1d, 0x3, - 0x24, 0x3, 0x2b, 0x3, 0x33, 0x3, 0x3c, 0x3, 0x41, 0x3, 0x4b, 0x3, - 0x54, 0x3, 0x5c, 0x3, 0x62, 0x3, 0x78, 0x3, 0x8e, 0x3, 0x97, 0x3, - 0xa0, 0x3, 0xa5, 0x3, 0xa9, 0x3, 0xbd, 0x3, 0xc4, 0x3, 0xcb, 0x3, - 0xd3, 0x3, 0xdc, 0x3, 0xe4, 0x3, 0xf5, 0x3, 0xff, 0x4, 0x9, 0x4, - 0x13, 0x4, 0x23, 0x4, 0x29, 0x4, 0x2c, 0x4, 0x30, 0x4, 0x3e, 0x4, - 0x4c, 0x4, 0x59, 0x4, 0x5e, 0x4, 0x62, 0x4, 0x6c, 0x4, 0x76, 0x4, - 0x80, 0x4, 0x8c, 0x4, 0x98, 0x4, 0x9e, 0x4, 0xa9, 0x4, 0xb4, 0x4, - 0xbb, 0x4, 0xc5, 0x4, 0xcf, 0x4, 0xd9, 0x4, 0xe3, 0x4, 0xe7, 0x4, - 0xeb, 0x4, 0xf4, 0x4, 0xfd, 0x5, 0x6, 0x5, 0xa, 0x5, 0x11, 0x5, - 0x15, 0x5, 0x1b, 0x5, 0x21, 0x5, 0x27, 0x5, 0x2d, 0x5, 0x32, 0x5, - 0x35, 0x22, 0xa, 0x13, 0xbc, 0x28, 0xa, 0x15, 0x2b, 0xa9, 0x2e, 0xc6, - 0x44, 0x1e, 0x46, 0xc6, 0xd7, 0x5c, 0xf7, 0x7, 0x1b, 0xf7, 0x4f, 0xf7, - 0x2b, 0xf7, 0x1a, 0xf7, 0x86, 0x8e, 0x1f, 0xf6, 0x64, 0xf1, 0x52, 0xcf, - 0x1e, 0xd0, 0x53, 0x32, 0xb2, 0x27, 0x1b, 0x2c, 0x32, 0x6a, 0x4a, 0x52, - 0x1f, 0x53, 0x4a, 0x61, 0x24, 0xfb, 0xb, 0x1a, 0xef, 0x16, 0xc0, 0x9c, - 0xdd, 0xb3, 0xc7, 0x1e, 0xc8, 0xb3, 0xbe, 0xb7, 0xe6, 0x1b, 0xca, 0xcb, - 0x73, 0x58, 0xb3, 0x1f, 0xb4, 0x58, 0xac, 0x3a, 0x2e, 0x1a, 0x85, 0xfb, - 0x61, 0x2b, 0x35, 0xfb, 0x1f, 0x8a, 0x8, 0x40, 0x58, 0xa9, 0xbe, 0x5f, - 0x1f, 0x5f, 0xbf, 0x72, 0xd3, 0xe2, 0x1a, 0xb, 0x24, 0xa, 0x25, 0xa, - 0xb, 0x15, 0x47, 0x9c, 0x45, 0xb2, 0x57, 0x1e, 0x57, 0xb2, 0xbb, 0x67, - 0xde, 0x1b, 0xf7, 0x24, 0xeb, 0xec, 0xf7, 0x49, 0xee, 0x68, 0xcd, 0x5a, - 0xb3, 0x1f, 0xb4, 0x5a, 0x57, 0x9c, 0x54, 0x1b, 0x3c, 0x5b, 0x6d, 0x5b, - 0x63, 0x1f, 0x64, 0x5b, 0x77, 0x4a, 0x43, 0x1a, 0xe5, 0x16, 0xf7, 0x27, - 0x90, 0xd2, 0xb7, 0xc7, 0x1b, 0xd2, 0xd7, 0x56, 0xfb, 0x1e, 0x8e, 0x1f, - 0x62, 0x82, 0x57, 0x73, 0x62, 0x1e, 0x62, 0x73, 0x6d, 0x6c, 0x4c, 0x1b, - 0x51, 0x43, 0xc2, 0xf7, 0x2b, 0x85, 0x1f, 0xb, 0x15, 0x90, 0xa0, 0x91, - 0xa4, 0x9e, 0x9e, 0x8, 0x9f, 0x9e, 0xa0, 0x99, 0xc2, 0x1b, 0xcb, 0xa1, - 0x78, 0x72, 0x9b, 0x1f, 0x9b, 0x73, 0x8a, 0x6a, 0x8a, 0x6f, 0x54, 0x77, - 0x40, 0x85, 0x79, 0x87, 0x8, 0x60, 0x85, 0xfb, 0x2d, 0x78, 0xfb, 0x1d, - 0x1a, 0x33, 0xd9, 0x4b, 0xe8, 0xc3, 0xbb, 0x9b, 0xca, 0xd6, 0x1e, 0xb, - 0x8e, 0x7e, 0x99, 0x73, 0x9a, 0x70, 0x8, 0xe7, 0x6, 0x6e, 0xbd, 0x7e, - 0xad, 0xf7, 0x19, 0x1a, 0xf7, 0xa, 0x7, 0x90, 0xe5, 0x6e, 0xf3, 0xfb, - 0x48, 0x8c, 0x8, 0x2b, 0x60, 0x6f, 0x68, 0x6a, 0x1f, 0x6e, 0x68, 0x87, - 0x64, 0x85, 0x74, 0x8, 0xf7, 0xdb, 0xfb, 0x22, 0x15, 0xb, 0xfc, 0xd0, - 0x21, 0xa, 0xe, 0x99, 0x16, 0xeb, 0x6, 0xd7, 0xf7, 0x77, 0x5, 0xf7, - 0xb2, 0x6, 0xdb, 0xfb, 0x77, 0x5, 0xf1, 0x6, 0xfb, 0xab, 0xf9, 0x7c, - 0x5, 0x2a, 0x6, 0x49, 0xfc, 0x4b, 0x15, 0xf7, 0x4, 0xf7, 0xfd, 0x5, - 0x8c, 0x6, 0xf7, 0xb, 0xfb, 0xfd, 0x5, 0xb, 0x27, 0x85, 0x45, 0x4c, - 0x2a, 0x1b, 0x78, 0x7a, 0x92, 0x9a, 0x7a, 0x1f, 0x7b, 0x9b, 0x84, 0x9c, - 0x9e, 0x1a, 0xae, 0x99, 0x9f, 0xa0, 0x97, 0x1e, 0xa0, 0x97, 0x9d, 0x90, - 0xa6, 0x8f, 0xbd, 0x94, 0xc7, 0x94, 0xb1, 0x9a, 0x8, 0xe, 0x15, 0xf8, - 0x2, 0x6, 0xf7, 0x1c, 0x66, 0xd8, 0x55, 0xb0, 0x1e, 0xb1, 0x55, 0x53, - 0x90, 0x74, 0x1b, 0xfb, 0x38, 0x8a, 0x4c, 0xfb, 0x8, 0x86, 0xfb, 0x32, - 0x8, 0x2d, 0xa, 0x7a, 0x7e, 0x3a, 0x22, 0x1b, 0x38, 0x5d, 0xc3, 0xf7, - 0x10, 0x7e, 0x1f, 0x90, 0xd3, 0x15, 0x96, 0xce, 0xa2, 0xde, 0xf2, 0x8a, - 0xec, 0x8c, 0xab, 0x40, 0x90, 0x40, 0x8, 0xb, 0x41, 0xa, 0xf9, 0x5d, - 0x15, 0xfc, 0x2f, 0x7, 0xfb, 0x13, 0x8f, 0xfb, 0x56, 0xf7, 0xa3, 0xf7, - 0xac, 0x95, 0xf7, 0x76, 0xea, 0x1e, 0xf8, 0x2f, 0x2c, 0xfc, 0x2f, 0x7, - 0xfb, 0x15, 0x78, 0x20, 0xfb, 0x44, 0xfb, 0x48, 0x8b, 0xf7, 0x29, 0xe2, - 0x1e, 0xf8, 0x2f, 0x7, 0xb, 0xaa, 0x78, 0xe0, 0x2a, 0xa, 0xb, 0x15, - 0xef, 0x6, 0xc3, 0xde, 0xc0, 0x38, 0x5, 0xef, 0x6, 0xfb, 0x2, 0x42, - 0xa, 0xb, 0x3b, 0x9f, 0x48, 0xb3, 0x5b, 0x1e, 0x5b, 0xb4, 0xbe, 0x70, - 0xdb, 0x1b, 0xcb, 0xb5, 0x9d, 0xaa, 0xb0, 0x1f, 0xb2, 0xaa, 0xa4, 0xb5, - 0x98, 0xbc, 0x36, 0x96, 0x18, 0x6e, 0xb, 0x31, 0xa, 0xf7, 0x49, 0x27, - 0x31, 0xa, 0xb, 0x4c, 0xa, 0xf7, 0x0, 0xf7, 0x1d, 0x38, 0xa, 0xb, - 0x3, 0xe1, 0x16, 0xf8, 0xa6, 0xe0, 0xfc, 0x47, 0xf7, 0x90, 0xf8, 0x13, - 0xe0, 0xfc, 0x13, 0xf7, 0x79, 0xf8, 0x38, 0xe0, 0xfc, 0x97, 0x6, 0xb, - 0x15, 0xe5, 0xef, 0x31, 0x6, 0xb, 0x33, 0x6d, 0x2f, 0x20, 0x24, 0x86, - 0xdd, 0xe3, 0x1e, 0xf7, 0xb2, 0x33, 0xfb, 0xd4, 0x7, 0xfb, 0x8, 0xcc, - 0x2b, 0xf7, 0x17, 0xb, 0xbb, 0xfb, 0xd, 0x15, 0x94, 0x38, 0x55, 0xa, - 0xa5, 0xec, 0xf2, 0xbe, 0x1f, 0xf7, 0x5b, 0xf8, 0xa2, 0x5, 0x32, 0x6, - 0xfb, 0x27, 0xfc, 0x37, 0x5, 0x89, 0x6, 0xfb, 0x25, 0xf8, 0x37, 0x5, - 0x2c, 0x6, 0xf7, 0x59, 0xfc, 0x9a, 0x5, 0x43, 0x71, 0x80, 0x52, 0x41, - 0x1b, 0x76, 0x7c, 0x95, 0x8f, 0x7e, 0x1f, 0xb, 0x3d, 0xa, 0x6, 0x13, - 0xb8, 0x33, 0xfb, 0xa8, 0x6, 0x32, 0xa, 0x1e, 0x13, 0x74, 0x65, 0xa, - 0x1f, 0xb, 0x46, 0xa, 0xf9, 0x4, 0x77, 0x1, 0x27, 0xa, 0xb, 0x6e, - 0xa, 0x30, 0xa, 0xb, 0x15, 0xe8, 0x6, 0xf5, 0x5a, 0xa, 0x27, 0x6, - 0x53, 0x38, 0x56, 0xde, 0x5, 0x27, 0x6, 0xe, 0x5, 0xfb, 0x7, 0x6, - 0xb, 0xa0, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xb, 0xf7, 0x10, 0xf8, 0xe9, - 0x2c, 0xa, 0xb, 0xe3, 0x3, 0xe4, 0x16, 0xe3, 0xf8, 0x56, 0xf0, 0xcf, - 0x26, 0xc0, 0x6, 0xc7, 0xb4, 0xa5, 0xe0, 0x7c, 0x1e, 0x99, 0xd5, 0x5, - 0x94, 0x6f, 0x74, 0x8d, 0x74, 0x1b, 0xfb, 0x3, 0x60, 0x2a, 0x4e, 0x1f, - 0x58, 0x40, 0x47, 0xd6, 0x7, 0xb, 0xb2, 0x86, 0xf7, 0x20, 0xfb, 0x1f, - 0xfb, 0x1a, 0x83, 0xfb, 0x19, 0x5d, 0x1e, 0xd4, 0x16, 0xb1, 0x8a, 0xde, - 0xd1, 0xc4, 0x98, 0x52, 0x4b, 0x5d, 0x84, 0x40, 0x4c, 0x47, 0x8a, 0xd7, - 0xb8, 0x1e, 0xb, 0x4e, 0xa, 0x3c, 0xda, 0x13, 0x74, 0xf8, 0x2e, 0x88, - 0x15, 0xda, 0xf8, 0x9c, 0xb, 0xf7, 0x23, 0xf8, 0xf2, 0x2e, 0xa, 0xb, - 0xf7, 0x73, 0xf8, 0xe9, 0x2f, 0xa, 0xb, 0x7d, 0xda, 0x5f, 0x76, 0xf8, - 0x5e, 0xd3, 0xb, 0x1, 0xda, 0xea, 0xf8, 0xb, 0xea, 0x3, 0xda, 0xb, - 0x5a, 0xa, 0x2e, 0x6, 0xb, 0x73, 0x8b, 0xe0, 0xf7, 0x90, 0xe0, 0xf7, - 0x79, 0xe0, 0xb, 0x39, 0xa, 0xce, 0xe3, 0x3, 0xce, 0x16, 0xe3, 0xb, - 0x1, 0xbc, 0xef, 0xf8, 0x74, 0xef, 0x3, 0xb, 0x5f, 0xa, 0xf7, 0x77, - 0xd9, 0xb, 0x15, 0xe9, 0xf7, 0x6, 0x5d, 0x6, 0x8c, 0xa7, 0x8d, 0xc5, - 0xbe, 0xa0, 0x75, 0xad, 0x18, 0x3b, 0x67, 0x8b, 0x3d, 0x5a, 0x1a, 0xb, - 0x15, 0xb9, 0x6, 0x8a, 0x6f, 0x89, 0x50, 0x58, 0x76, 0xa1, 0x69, 0x18, - 0xdb, 0xaf, 0x8b, 0xda, 0xbc, 0x1a, 0xe6, 0x2d, 0x7, 0xb, 0x12, 0xba, - 0xe9, 0xf7, 0x8d, 0xe3, 0x13, 0x7c, 0xb, 0x7c, 0xd3, 0xf7, 0x48, 0xd3, - 0xf7, 0x29, 0xd3, 0xb, 0xfc, 0x31, 0xa0, 0x76, 0xb, 0x15, 0xd3, 0x6, - 0xb, 0xdb, 0xaf, 0x8b, 0xd9, 0xbc, 0x1a, 0xe7, 0x2d, 0xfb, 0x6, 0xb9, - 0x7, 0x8a, 0x6f, 0x89, 0x51, 0x58, 0x76, 0x8, 0xb, 0x12, 0xcf, 0xe3, - 0xf7, 0x89, 0xe3, 0xb, 0xe2, 0x78, 0xdf, 0xf8, 0xe4, 0xe0, 0xb, 0xfd, - 0x72, 0x15, 0xe3, 0xf8, 0x99, 0x7a, 0xa, 0xfe, 0x35, 0x15, 0xea, 0xf9, - 0x60, 0x2c, 0x6, 0xe, 0xf7, 0x2b, 0x76, 0xf8, 0x29, 0x77, 0x1, 0xb, - 0x9e, 0x1b, 0xa0, 0xd2, 0x91, 0xf5, 0x8f, 0x1f, 0x4b, 0x6, 0x69, 0x87, - 0x80, 0x83, 0x77, 0x1b, 0xb, 0xfb, 0xfa, 0xf8, 0xfa, 0x76, 0xf7, 0x21, - 0x77, 0x1, 0xb, 0x5, 0x87, 0x99, 0x8d, 0x85, 0xa4, 0x1b, 0xf7, 0x7, - 0xb, 0x1f, 0x4b, 0x6, 0x68, 0x87, 0x80, 0x84, 0x77, 0x1b, 0xb, 0xf7, - 0xad, 0x16, 0xea, 0xf7, 0xc3, 0x6, 0xf7, 0xa9, 0xf8, 0x2e, 0x5, 0xfb, - 0x2, 0x6, 0xb, 0x31, 0xa, 0xf7, 0x37, 0x72, 0xa, 0x38, 0xa, 0xe, - 0xf7, 0x1d, 0x5, 0xb, 0xfb, 0x53, 0xa0, 0x76, 0xf8, 0x56, 0xcf, 0xf7, - 0x10, 0xd5, 0x1, 0xe4, 0xe3, 0xb, 0x15, 0xb7, 0x6, 0x9c, 0xf7, 0x1e, - 0x5, 0xf7, 0x9, 0x3e, 0xfb, 0x9, 0x7, 0xb, 0x69, 0x8a, 0xfb, 0x25, - 0xf7, 0x23, 0xf7, 0x23, 0x8c, 0xf7, 0x1a, 0xb8, 0xb, 0x4c, 0xa, 0x4a, - 0x74, 0xa, 0x73, 0xa0, 0x76, 0xb, 0x15, 0xc9, 0x6, 0xf7, 0x2b, 0xf7, - 0x21, 0x38, 0xa, 0xb, 0x4b, 0xa, 0xfa, 0x35, 0x77, 0x1, 0xe5, 0xea, - 0x3, 0xb, 0x4b, 0xa, 0xf9, 0x72, 0x77, 0x1, 0xea, 0xe3, 0x3, 0xb, - 0x1, 0xaa, 0x16, 0xf8, 0x4a, 0xd7, 0xfb, 0xde, 0x6, 0xf7, 0xce, 0xb, - 0x15, 0x5a, 0xb1, 0x63, 0xbc, 0xbc, 0xb3, 0xb3, 0xbc, 0xbc, 0x63, 0xb, - 0xa6, 0xc7, 0x8e, 0xe0, 0xc6, 0xb, 0xfb, 0x4e, 0x76, 0xf7, 0x5e, 0xd3, - 0xf8, 0x26, 0xd0, 0x1, 0xb, 0x5, 0xc4, 0xfc, 0x28, 0x43, 0xf7, 0xb7, - 0x7, 0xfb, 0xc9, 0xb, 0xa0, 0x76, 0xf8, 0x9f, 0x77, 0x1, 0xb, 0xfc, - 0x31, 0xfb, 0x58, 0xd4, 0xf9, 0x98, 0xd4, 0x12, 0xb, 0x1, 0xa2, 0x16, - 0xf8, 0xc9, 0xe0, 0xfc, 0x5c, 0x6, 0xb, 0x15, 0xcc, 0x6, 0xba, 0x8a, - 0xad, 0x8b, 0x8f, 0x1b, 0xb, 0x3c, 0x96, 0x1e, 0xe1, 0x97, 0x5, 0xb3, - 0x84, 0x7a, 0xb, 0xe3, 0xec, 0x7a, 0xa, 0x1, 0xe1, 0xea, 0xb, 0xa0, - 0x76, 0xf8, 0x62, 0xd7, 0x12, 0xcc, 0xe3, 0xb, 0xfb, 0xfa, 0xfb, 0x4e, - 0x76, 0xfa, 0x40, 0x77, 0xb, 0x20, 0xab, 0x76, 0xf8, 0x78, 0x77, 0x1, - 0xbb, 0xb, 0x27, 0x31, 0xa, 0xe, 0x5a, 0x58, 0x68, 0x3e, 0x8c, 0x1f, - 0xe, 0xf7, 0x1d, 0x59, 0xa, 0xf7, 0x5, 0x8a, 0x77, 0x12, 0xb, 0x7d, - 0xd3, 0xf8, 0x2a, 0xd3, 0xb, 0xb8, 0xe5, 0xf7, 0xb2, 0xe5, 0xb, 0xf7, - 0x54, 0xd9, 0xfb, 0x54, 0xb, 0x7c, 0xd7, 0x60, 0x76, 0xb, 0x33, 0x6, - 0xe}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSansBold.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSansBold.cpp deleted file mode 100644 index 8b185f50c4..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSansBold.cpp +++ /dev/null @@ -1,1371 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSansBoldFontData[16344] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x12, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x4f, 0x54, 0x46, 0x2d, 0x42, 0x6f, - 0x6c, 0x64, 0x0, 0x1, 0x1, 0x1, 0x24, 0xf8, 0x10, 0x0, 0xf8, 0x1c, - 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x14, 0x4, 0xfb, 0x3e, - 0xfb, 0x78, 0xfa, 0x7e, 0xfa, 0x56, 0x5, 0xf7, 0x2f, 0xf, 0xf8, 0x8f, - 0x11, 0xb5, 0x1c, 0x39, 0x77, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, - 0x42, 0x50, 0x45, 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x4f, - 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x43, 0x68, 0x72, 0x6F, 0x6D, - 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x1, - 0x0, 0x1, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x86, 0x2, - 0x0, 0x91, 0x0, 0x0, 0x63, 0x0, 0x0, 0x6d, 0x1, 0x0, 0x8c, 0x0, - 0x0, 0x92, 0x0, 0x0, 0xc7, 0x0, 0x0, 0xe4, 0x0, 0x0, 0x2, 0x5, - 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x1d, - 0x1, 0x87, 0x0, 0x0, 0x75, 0x0, 0x0, 0x65, 0x0, 0x0, 0x76, 0x0, - 0x0, 0x79, 0x0, 0x0, 0x70, 0x1, 0x0, 0x7e, 0x0, 0x0, 0x7a, 0x0, - 0x0, 0xc0, 0x0, 0x0, 0x6b, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x41, 0x0, - 0x0, 0x8, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x74, 0x0, - 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x99, 0x0, - 0x0, 0xdd, 0x0, 0x0, 0x6c, 0x0, 0x0, 0x94, 0x0, 0x0, 0xc6, 0x0, - 0x0, 0x60, 0x2, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, - 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, - 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa6, 0x0, 0x0, 0xa5, 0x0, - 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, 0x0, - 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, 0x0, - 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, 0x0, - 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, 0x0, - 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, 0x0, - 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, 0x0, - 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, 0x2, - 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, 0x1, - 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, 0x0, - 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, 0x0, - 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, 0x0, - 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, - 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, - 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, - 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, - 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, - 0x0, 0xe3, 0x0, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, 0x7, - 0x0, 0x2c, 0x0, 0x41, 0x0, 0x75, 0x0, 0x84, 0x0, 0xb3, 0x0, 0xce, - 0x0, 0xd9, 0x0, 0xf1, 0x1, 0x30, 0x1, 0x6b, 0x1, 0x9a, 0x1, 0xc3, - 0x1, 0xf1, 0x2, 0x32, 0x2, 0x5e, 0x2, 0x8a, 0x2, 0xed, 0x3, 0x76, - 0x4, 0x7, 0x4, 0xa5, 0x4, 0xc4, 0x4, 0xfb, 0x5, 0x33, 0x5, 0x66, - 0x5, 0x8c, 0x5, 0xbb, 0x5, 0xcc, 0x5, 0xdf, 0x5, 0xf5, 0x6, 0x3f, - 0x6, 0x69, 0x6, 0xbc, 0x7, 0x1e, 0x7, 0x55, 0x7, 0xa7, 0x8, 0xa, - 0x8, 0x3e, 0x8, 0xaf, 0x9, 0x14, 0x9, 0x34, 0x9, 0x6d, 0x9, 0x8c, - 0x9, 0xab, 0x9, 0xc9, 0xa, 0x2e, 0xa, 0xda, 0xb, 0xd, 0xb, 0x6c, - 0xb, 0xbc, 0xb, 0xfb, 0xc, 0x24, 0xc, 0x48, 0xc, 0xc3, 0xc, 0xef, - 0xd, 0x2, 0xd, 0x33, 0xd, 0x64, 0xd, 0x78, 0xd, 0xb8, 0xd, 0xdb, - 0xe, 0x52, 0xe, 0x88, 0xf, 0x1a, 0xf, 0x73, 0xf, 0xdc, 0xf, 0xfb, - 0x10, 0x32, 0x10, 0x50, 0x10, 0x93, 0x10, 0xc5, 0x10, 0xdf, 0x10, 0xf9, - 0x11, 0x13, 0x11, 0x2a, 0x11, 0x44, 0x11, 0x65, 0x11, 0x72, 0x11, 0x88, - 0x11, 0xed, 0x12, 0x48, 0x12, 0x92, 0x12, 0xed, 0x13, 0x43, 0x13, 0x79, - 0x13, 0xe7, 0x14, 0x23, 0x14, 0x3c, 0x14, 0x80, 0x14, 0xaf, 0x14, 0xba, - 0x15, 0x19, 0x15, 0x58, 0x15, 0xa2, 0x15, 0xef, 0x16, 0x43, 0x16, 0x82, - 0x16, 0xe4, 0x17, 0x1e, 0x17, 0x60, 0x17, 0x85, 0x17, 0xc1, 0x17, 0xf3, - 0x18, 0x22, 0x18, 0x48, 0x18, 0x8c, 0x18, 0xa4, 0x18, 0xea, 0x19, 0x2c, - 0x19, 0xa7, 0x19, 0xcf, 0x1a, 0x33, 0x1a, 0x70, 0x1a, 0xa3, 0x1a, 0xcd, - 0x1b, 0x5, 0x1b, 0x19, 0x1b, 0xcf, 0x1c, 0x49, 0x1c, 0x5f, 0x1c, 0xda, - 0x1d, 0x5, 0x1d, 0x2e, 0x1d, 0x7f, 0x1d, 0xb8, 0x1d, 0xdb, 0x1d, 0xea, - 0x1d, 0xfa, 0x1e, 0x3e, 0x1e, 0x8c, 0x1f, 0x4, 0x1f, 0x19, 0x1f, 0xaf, - 0x1f, 0xda, 0x20, 0xa, 0x20, 0x88, 0x21, 0x14, 0x21, 0x8e, 0x21, 0xd3, - 0x21, 0xf2, 0x22, 0x9b, 0x22, 0xab, 0x23, 0x1b, 0x23, 0x95, 0x23, 0xa3, - 0x23, 0xbd, 0x23, 0xcf, 0x24, 0x4d, 0x24, 0x60, 0x24, 0x99, 0x24, 0xc7, - 0x25, 0x9, 0x25, 0x61, 0x25, 0x74, 0x25, 0xba, 0x25, 0xec, 0x26, 0x4, - 0x26, 0x3b, 0x26, 0x61, 0x26, 0xa4, 0x26, 0xb1, 0x27, 0x19, 0x27, 0x96, - 0x28, 0x2f, 0x28, 0x85, 0x28, 0x9d, 0x28, 0xb6, 0x28, 0xd5, 0x29, 0x1b, - 0x29, 0x3d, 0x29, 0x71, 0x29, 0xb8, 0x2a, 0x49, 0x2a, 0x59, 0x2a, 0x6a, - 0x2a, 0x91, 0x2a, 0xb8, 0x2a, 0xcd, 0x2a, 0xe1, 0x2a, 0xfc, 0x2b, 0x15, - 0x2b, 0x63, 0x2b, 0xbb, 0x2b, 0xe9, 0x2c, 0xd, 0x2c, 0x3a, 0x2c, 0x87, - 0x2c, 0xaf, 0x2c, 0xdf, 0x2d, 0x5f, 0x2d, 0x7c, 0x2d, 0x98, 0x2d, 0xbf, - 0x2d, 0xea, 0x2e, 0x1a, 0x2e, 0x5d, 0x2e, 0xcc, 0x2e, 0xe3, 0x2e, 0xfa, - 0x2f, 0x1b, 0x2f, 0x77, 0x2f, 0x9f, 0x2f, 0xe5, 0x30, 0x8f, 0x31, 0x1c, - 0x31, 0x36, 0x31, 0x51, 0x31, 0x73, 0x31, 0x97, 0x31, 0xae, 0x31, 0xc5, - 0x31, 0xe4, 0x32, 0x3, 0x32, 0x7c, 0x32, 0xf4, 0x33, 0x11, 0x33, 0x24, - 0x33, 0x42, 0x33, 0x80, 0x33, 0xa8, 0x33, 0xd7, 0x34, 0x55, 0x34, 0x6b, - 0x34, 0x81, 0x34, 0xa8, 0x34, 0xd6, 0x35, 0x13, 0x35, 0x67, 0x35, 0xac, - 0xfc, 0x15, 0xe, 0xfc, 0x15, 0xe, 0xf8, 0xf0, 0xcb, 0xdd, 0x77, 0x1, - 0x89, 0xf9, 0x82, 0x15, 0x22, 0x95, 0xd9, 0x62, 0xdb, 0x1b, 0xda, 0xdb, - 0xb3, 0xf5, 0x95, 0x1f, 0x4b, 0x6, 0x78, 0x8a, 0x7b, 0x4c, 0x33, 0x1b, - 0x4a, 0x6a, 0xb2, 0xb6, 0x85, 0x1f, 0xe, 0xf8, 0xfa, 0xf7, 0x7, 0x1, - 0xf3, 0xf7, 0x12, 0x3, 0xf3, 0xf8, 0xfa, 0x15, 0xf7, 0x12, 0xf7, 0x7, - 0xfb, 0x12, 0x6, 0xe, 0xf8, 0xcc, 0xc4, 0xe9, 0xc4, 0x1, 0xc6, 0xc6, - 0xed, 0xc6, 0x3, 0xc6, 0xf9, 0x35, 0x15, 0x51, 0xbc, 0x5c, 0xc7, 0xc4, - 0xbd, 0xb8, 0xc7, 0xc6, 0x5a, 0xb7, 0x51, 0x4d, 0x5c, 0x5e, 0x51, 0x1e, - 0xc6, 0x16, 0xa5, 0xa0, 0x9f, 0xa8, 0xa5, 0xa1, 0x78, 0x70, 0x70, 0x75, - 0x76, 0x71, 0x6f, 0x75, 0xa0, 0xa6, 0x1e, 0xe, 0xf8, 0xf0, 0x84, 0xa, - 0x94, 0xf8, 0xf0, 0x6b, 0xa, 0xef, 0xfb, 0x26, 0x6b, 0xa, 0xe, 0xfb, - 0x78, 0xd8, 0xf7, 0x2b, 0x77, 0x1, 0xd2, 0xe2, 0x3, 0xe5, 0x16, 0x80, - 0x61, 0x83, 0x6a, 0x67, 0x1a, 0x35, 0xdd, 0x6c, 0xcc, 0x9c, 0xa5, 0x8e, - 0x9c, 0xb6, 0x1e, 0xd0, 0x7, 0x87, 0x80, 0x61, 0x83, 0x6a, 0x1b, 0x53, - 0x87, 0xac, 0xb8, 0xa3, 0x8e, 0xa7, 0x93, 0xa0, 0x1f, 0xe, 0xf8, 0xf0, - 0xd1, 0x1, 0xed, 0xf8, 0xf0, 0x15, 0xf7, 0x1b, 0x6, 0xf7, 0x2, 0x83, - 0xa, 0xfb, 0xa, 0x6, 0x52, 0x3f, 0x4e, 0xd7, 0x5, 0xfb, 0x9, 0x6, - 0xe, 0xfc, 0x15, 0x73, 0xa, 0xd3, 0x63, 0xa, 0xf8, 0xa8, 0x6d, 0xa, - 0xfc, 0x84, 0x8d, 0x76, 0xf9, 0x6d, 0x77, 0x1, 0x2f, 0x78, 0x15, 0xf8, - 0x40, 0xf9, 0x6d, 0x5, 0x3d, 0x6, 0xfc, 0x40, 0xfd, 0x6d, 0x5, 0xe, - 0x57, 0x76, 0xa, 0xd2, 0xf7, 0x13, 0x1, 0xe2, 0xf7, 0x20, 0xf7, 0x43, - 0x7d, 0xa, 0xe2, 0x16, 0xf7, 0x20, 0xf8, 0x2c, 0xf4, 0xf7, 0x1, 0x22, - 0x6, 0xf4, 0xc5, 0x96, 0xca, 0x78, 0x1e, 0x9f, 0xeb, 0x5, 0x98, 0x5f, - 0x73, 0x8f, 0x6f, 0x1b, 0xfb, 0x37, 0x6f, 0xa, 0xf7, 0xcf, 0xfc, 0x2c, - 0x15, 0xf7, 0x20, 0xf8, 0x99, 0x68, 0xa, 0xd2, 0x4, 0xf7, 0x20, 0xf7, - 0x13, 0x6d, 0xa, 0x57, 0x76, 0xa, 0xf7, 0x66, 0x77, 0x1, 0xe2, 0xf7, - 0x20, 0xf7, 0x44, 0xf7, 0x1f, 0x3, 0xf8, 0x27, 0x16, 0xf7, 0x1f, 0xf9, - 0x5f, 0xfb, 0x1f, 0x6, 0xfb, 0xd0, 0xfd, 0x5f, 0x15, 0xf7, 0x20, 0xf8, - 0x2c, 0xf3, 0xf7, 0x1, 0x23, 0x6, 0xdf, 0xb1, 0xab, 0xde, 0x78, 0x1e, - 0x9e, 0xeb, 0x5, 0x98, 0x5f, 0x74, 0x8f, 0x6e, 0x1b, 0xfb, 0x36, 0x6f, - 0xa, 0xe, 0x86, 0xa, 0xa7, 0xf7, 0x16, 0x3, 0xc6, 0x16, 0xf8, 0xa0, - 0xf7, 0xe, 0xfc, 0x1e, 0xf7, 0x7c, 0x6, 0xf7, 0x3b, 0xf7, 0x1a, 0x5, - 0xf7, 0xc, 0x7, 0xfb, 0x3b, 0xfb, 0x1c, 0x5, 0xf7, 0x8a, 0xfb, 0x16, - 0xfb, 0xf9, 0x7, 0x3c, 0x4a, 0x5, 0xfb, 0x9, 0x7, 0xda, 0xcb, 0x5, - 0xe, 0xfc, 0x15, 0x3f, 0xa, 0xd1, 0xf7, 0xa, 0x3, 0xd1, 0x16, 0xf7, - 0xa, 0xf7, 0xfa, 0x6, 0xf7, 0x0, 0xd8, 0x5, 0xe9, 0x7, 0xfb, 0x0, - 0x3d, 0x5, 0xf7, 0x9f, 0xfb, 0xa, 0xfb, 0xf6, 0x7, 0x33, 0x48, 0x5, - 0x2d, 0x7, 0xe3, 0xcf, 0x5, 0xe, 0x57, 0x8b, 0xf7, 0xd, 0xf8, 0x6e, - 0x82, 0xa, 0xa4, 0x16, 0xf8, 0xc5, 0xf7, 0xd, 0x87, 0xa, 0xf7, 0x5, - 0xfc, 0x8e, 0xfb, 0xd, 0x8c, 0xa, 0xf7, 0x6e, 0xf9, 0x2d, 0x15, 0xf7, - 0xf, 0x6, 0xee, 0xf7, 0x21, 0x5, 0x20, 0x6, 0x58, 0x42, 0x54, 0xd4, - 0x5, 0x21, 0x6, 0xe, 0xfb, 0x37, 0x8b, 0xf7, 0xd, 0xf7, 0xaf, 0xf7, - 0x6, 0xe5, 0xf7, 0x22, 0x1, 0x9f, 0x16, 0xf8, 0x60, 0xf7, 0xd, 0xfb, - 0xad, 0x6, 0xf7, 0x9d, 0xf7, 0xc0, 0x5, 0xec, 0xfc, 0x3d, 0xfb, 0x6, - 0x7, 0xf7, 0x88, 0x8c, 0xfb, 0x9b, 0xfb, 0xbe, 0x5, 0xf7, 0x3b, 0xf8, - 0x89, 0x15, 0xf7, 0x12, 0x6, 0xf1, 0xf7, 0x22, 0x5, 0xfb, 0x2, 0x6, - 0x56, 0x42, 0x53, 0xd4, 0x5, 0xfb, 0x1, 0x6, 0xe, 0x8b, 0xf7, 0x1d, - 0xf8, 0xd9, 0x77, 0x12, 0xe5, 0xf7, 0x28, 0xfb, 0x28, 0xf7, 0x2e, 0x13, - 0xe0, 0xe8, 0x16, 0xf7, 0x25, 0xf7, 0x1d, 0xfb, 0x25, 0x6, 0xab, 0xbc, - 0x15, 0xdd, 0x6, 0x13, 0xd0, 0xb0, 0xf8, 0x0, 0x5, 0xf7, 0x3c, 0xfb, - 0x2e, 0xfb, 0x3c, 0x7, 0xe, 0xfb, 0x51, 0xf8, 0x68, 0x76, 0xf7, 0xa3, - 0x77, 0x1, 0xf7, 0xb3, 0xf8, 0x53, 0x15, 0xd3, 0x6, 0x9c, 0x67, 0xa, - 0xf7, 0x14, 0xfb, 0x1, 0xfb, 0x14, 0x7, 0xfb, 0x2a, 0xfb, 0x23, 0x15, - 0xd4, 0x6, 0x9b, 0x67, 0xa, 0xf7, 0x14, 0xfb, 0x0, 0xfb, 0x14, 0x7, - 0xe, 0x20, 0xa0, 0x76, 0xf7, 0x47, 0xf2, 0xf7, 0x1c, 0xf2, 0xf7, 0x45, - 0x77, 0x1, 0xb8, 0x16, 0xf6, 0x6, 0xb0, 0xf7, 0x47, 0x5, 0xf4, 0x6, - 0x67, 0xfb, 0x47, 0x5, 0xf4, 0x6, 0xb1, 0xf7, 0x47, 0x5, 0xf7, 0x1d, - 0xf2, 0xfb, 0x7, 0x6, 0xa7, 0xf7, 0x1c, 0x5, 0xe2, 0xf2, 0x49, 0x6, - 0xb1, 0xf7, 0x45, 0x5, 0xfb, 0x2, 0x6, 0x66, 0xfb, 0x45, 0x5, 0x24, - 0x6, 0xaf, 0xf7, 0x45, 0x5, 0x22, 0x6, 0x65, 0xfb, 0x45, 0x5, 0xfb, - 0x1b, 0x24, 0xf7, 0x6, 0x6, 0x6e, 0xfb, 0x1c, 0x5, 0x36, 0x24, 0xcb, - 0x6, 0xf7, 0x14, 0xf2, 0x15, 0xa7, 0xf7, 0x1c, 0x5, 0xf4, 0x6, 0x6f, - 0xfb, 0x1c, 0x5, 0xe, 0x20, 0x2d, 0x76, 0xfa, 0xe, 0x77, 0x12, 0xf7, - 0x85, 0xd4, 0xdf, 0xf7, 0x11, 0x17, 0xa9, 0xf7, 0x54, 0x15, 0x9b, 0x24, - 0xc2, 0x2a, 0xf7, 0x20, 0x7b, 0x8, 0x30, 0xd4, 0xe8, 0x7, 0xf7, 0x44, - 0xa4, 0xac, 0xf7, 0x7, 0xd0, 0x1a, 0xf7, 0x34, 0xfb, 0x19, 0xc0, 0x3f, - 0xa0, 0x1e, 0xf7, 0x56, 0x7, 0xbb, 0x77, 0x94, 0x62, 0x8e, 0x79, 0xf7, - 0x13, 0x9b, 0x18, 0x71, 0xf7, 0x2e, 0xfb, 0x13, 0x9a, 0x69, 0x8f, 0x8, - 0x13, 0x70, 0xbd, 0x7, 0x42, 0x59, 0x6, 0x24, 0x81, 0x34, 0x46, 0xfb, - 0xe, 0x1a, 0xfb, 0x32, 0xf7, 0x17, 0x5c, 0xc6, 0x7b, 0x1e, 0xfb, 0x64, - 0x7, 0x74, 0x96, 0x60, 0xab, 0x7e, 0xcf, 0x8, 0xf7, 0x2c, 0xfb, 0xa, - 0x15, 0xf7, 0x56, 0x7, 0xa1, 0x85, 0xc9, 0x79, 0x44, 0x1a, 0x60, 0x6f, - 0x5d, 0x53, 0x81, 0x1e, 0x42, 0xf7, 0xf9, 0x15, 0x4a, 0xa7, 0x8a, 0xb5, - 0x94, 0x1a, 0xad, 0xa1, 0xb7, 0xb7, 0x99, 0x1e, 0xe, 0xf7, 0x76, 0x78, - 0xd5, 0xf7, 0x69, 0xd5, 0x90, 0xd5, 0xf7, 0x69, 0xd5, 0x8d, 0x77, 0x12, - 0xa7, 0xf7, 0x4, 0xf3, 0xf7, 0x4, 0xf7, 0x45, 0xf7, 0x4, 0xf3, 0xf7, - 0x4, 0x13, 0xf7, 0x80, 0xf7, 0x20, 0xf8, 0xa4, 0x15, 0xd2, 0x98, 0xae, - 0xb2, 0xb3, 0x97, 0x67, 0x45, 0x42, 0x7f, 0x69, 0x63, 0x63, 0x7f, 0xaf, - 0xd2, 0x1e, 0xfb, 0x4, 0x16, 0x2d, 0xaf, 0x34, 0xf7, 0x14, 0xf7, 0x29, - 0x9a, 0xf7, 0xd, 0xc7, 0xf6, 0x5e, 0xd4, 0xfb, 0xb, 0xfb, 0x28, 0x7b, - 0xfb, 0xd, 0x50, 0x1e, 0xf7, 0x3b, 0xfc, 0xb7, 0x15, 0xf6, 0x6, 0x13, - 0xef, 0x80, 0xf8, 0x1f, 0xf9, 0x6d, 0x5, 0x24, 0x6, 0x4e, 0xfc, 0xba, - 0x15, 0x2d, 0xb0, 0x36, 0xf7, 0x15, 0xf7, 0x27, 0x9a, 0xf7, 0xb, 0xc9, - 0xf6, 0x5e, 0xd4, 0xfb, 0xa, 0xfb, 0x2a, 0x7c, 0xfb, 0xd, 0x4e, 0x1e, - 0xf7, 0x4, 0x8e, 0x15, 0xd3, 0x97, 0xac, 0xb3, 0xb3, 0x97, 0x68, 0x45, - 0x43, 0x7f, 0x67, 0x63, 0x63, 0x7f, 0xb0, 0xd2, 0x1e, 0xe, 0xc6, 0x7e, - 0xf7, 0x4, 0x2a, 0x76, 0xf9, 0x15, 0xeb, 0x12, 0xc1, 0xf7, 0x1e, 0x59, - 0xf7, 0x17, 0x13, 0x68, 0xf8, 0x8e, 0xca, 0x15, 0xa5, 0x72, 0xb5, 0x69, - 0xb9, 0x74, 0xdc, 0xf5, 0x18, 0x75, 0x94, 0x52, 0xb3, 0x6c, 0xa9, 0x9c, - 0xa1, 0x9c, 0xa7, 0xa5, 0xeb, 0xfb, 0xd, 0xa6, 0x18, 0x87, 0x7a, 0x81, - 0x69, 0x7c, 0x6d, 0x29, 0xf7, 0x16, 0x18, 0xda, 0xbe, 0xbc, 0xb8, 0xd4, - 0x1a, 0xe5, 0x42, 0xd2, 0xfb, 0xd, 0xfb, 0xe, 0x42, 0x40, 0x35, 0x57, - 0xa7, 0x5e, 0xb7, 0x59, 0x1e, 0x13, 0xb0, 0x68, 0x79, 0xfb, 0x11, 0x4c, - 0xfb, 0x1c, 0x1a, 0x54, 0xa6, 0xfb, 0x2b, 0xf7, 0x6b, 0xf7, 0x4, 0xc7, - 0xb4, 0xae, 0xb1, 0x1e, 0x36, 0xe5, 0x15, 0x76, 0x71, 0x64, 0x6a, 0x4f, - 0x1b, 0x43, 0x6b, 0xb8, 0xbc, 0xb5, 0xa3, 0xc0, 0xcf, 0xae, 0x1f, 0xbd, - 0xf7, 0x29, 0x15, 0x6c, 0xaf, 0x5, 0x13, 0xa8, 0x89, 0x8e, 0x6f, 0x8f, - 0xb5, 0x1a, 0xa5, 0x9e, 0xb2, 0xb8, 0xbf, 0xa3, 0x66, 0x6f, 0x74, 0x7c, - 0x7e, 0x7a, 0x7d, 0x1e, 0x7a, 0x7c, 0x77, 0x7e, 0x81, 0x84, 0x8, 0xe, - 0xfc, 0x3d, 0xf8, 0x68, 0x76, 0xf7, 0xa3, 0x77, 0x1, 0x7e, 0x85, 0xa, - 0xc3, 0xf8, 0x53, 0x15, 0xf7, 0x8, 0x6, 0x9b, 0xf7, 0x22, 0x5, 0xf7, - 0x15, 0xfb, 0x28, 0xfb, 0x15, 0x7, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, - 0x77, 0x1, 0xae, 0x85, 0xa, 0xf7, 0x63, 0xfb, 0x64, 0x15, 0xf5, 0x6, - 0x61, 0xdb, 0x33, 0xf7, 0x39, 0xf7, 0x73, 0x1a, 0xf7, 0x52, 0xc0, 0xf7, - 0x16, 0xd9, 0xf7, 0x2e, 0x1e, 0x22, 0x6, 0x34, 0xfb, 0x4, 0x34, 0xfb, - 0x39, 0xfb, 0x59, 0x1a, 0xfb, 0x3b, 0xd0, 0xfb, 0x35, 0xf2, 0xfb, 0x20, - 0x1e, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, 0x77, 0x1, 0xf7, 0x29, 0xf7, - 0x29, 0x3, 0x9e, 0xfb, 0x64, 0x15, 0xf4, 0x6, 0xe2, 0xf7, 0x4, 0xe2, - 0xf7, 0x35, 0xf7, 0x59, 0x1a, 0xf7, 0x3b, 0x46, 0xf7, 0x39, 0x24, 0xf7, - 0x20, 0x1e, 0x21, 0x6, 0xb5, 0x3b, 0xe2, 0xfb, 0x3d, 0xfb, 0x73, 0x1a, - 0xfb, 0x52, 0x57, 0xfb, 0x12, 0x3d, 0xfb, 0x2e, 0x1e, 0xe, 0xfb, 0xa6, - 0x4d, 0xa, 0xf7, 0x30, 0xd2, 0x3, 0xf7, 0x13, 0xf8, 0x17, 0x15, 0xcc, - 0xf7, 0x1, 0xc9, 0x21, 0xd1, 0xbb, 0x3a, 0xeb, 0xf7, 0xb, 0xa2, 0x72, - 0xe1, 0xfb, 0x8, 0x57, 0x97, 0xf7, 0x13, 0x5, 0x39, 0x6, 0x96, 0xfb, - 0x12, 0xfb, 0x1, 0xc2, 0x71, 0x38, 0xf7, 0x9, 0x6d, 0x34, 0x2f, 0x5, - 0xe, 0x3c, 0xa0, 0x76, 0xf7, 0x52, 0xf7, 0x15, 0xf7, 0x4f, 0x90, 0xa, - 0xf7, 0x52, 0x15, 0xf7, 0x50, 0xfb, 0x52, 0xf7, 0x13, 0xf7, 0x52, 0xf7, - 0x51, 0xf7, 0x15, 0xfb, 0x51, 0xf7, 0x4f, 0xfb, 0x13, 0xfb, 0x4f, 0xfb, - 0x50, 0x6, 0xe, 0xfc, 0x15, 0xfb, 0x27, 0x76, 0xf7, 0x51, 0x76, 0xf7, - 0x26, 0x77, 0x12, 0xd7, 0xf7, 0x1e, 0x44, 0xd2, 0x13, 0xf0, 0xd7, 0x16, - 0x13, 0xe8, 0xce, 0x6, 0x89, 0x38, 0x58, 0x7c, 0x71, 0x82, 0xa6, 0x4e, - 0x18, 0xf7, 0xf, 0xba, 0x8b, 0xec, 0xcd, 0x1a, 0xf3, 0x7, 0x13, 0xf0, - 0x81, 0xa, 0xf7, 0x6b, 0xf7, 0x16, 0x1, 0xa6, 0xf7, 0x6b, 0x15, 0xf7, - 0xab, 0xf7, 0x16, 0xfb, 0xab, 0x6, 0xe, 0xfc, 0x15, 0x8b, 0x84, 0xa, - 0xcb, 0xf7, 0x2a, 0x3, 0xcb, 0x16, 0xf7, 0x2a, 0xf7, 0x26, 0xfb, 0x2a, - 0x6, 0xe, 0xfc, 0x15, 0x86, 0x76, 0xf9, 0x8f, 0x77, 0x1, 0x76, 0xf7, - 0x11, 0x3, 0x6a, 0x78, 0x15, 0xf7, 0x11, 0x6, 0xf7, 0x6f, 0x93, 0xa, - 0x79, 0xa, 0xf8, 0x89, 0xf7, 0x6, 0x1, 0xab, 0xf7, 0x2c, 0xf7, 0x50, - 0xf7, 0x2c, 0x3, 0xab, 0xf7, 0xf5, 0x15, 0xfb, 0x21, 0xa2, 0xfb, 0x7b, - 0xf7, 0x74, 0xf7, 0x6d, 0xa7, 0xf7, 0x7d, 0xf7, 0x1d, 0xf7, 0x20, 0x72, - 0xf7, 0x6f, 0xfb, 0x72, 0xfb, 0x70, 0x72, 0xfb, 0x6f, 0xfb, 0x1e, 0x1e, - 0xf7, 0x2c, 0x89, 0x15, 0xf7, 0x53, 0xa4, 0xc1, 0xcf, 0xd1, 0xa4, 0x54, - 0xfb, 0x52, 0xfb, 0x52, 0x72, 0x49, 0x45, 0x47, 0x72, 0xcc, 0xf7, 0x53, - 0x1e, 0xe, 0x20, 0xa0, 0x76, 0xf9, 0x5a, 0x77, 0x1, 0xf7, 0x87, 0xf7, - 0x1b, 0x3, 0xf7, 0x87, 0x16, 0xf7, 0x1b, 0xf9, 0x5a, 0xfb, 0x2, 0x6, - 0x61, 0xfb, 0xc, 0xfb, 0x23, 0x56, 0x7d, 0x86, 0x8, 0xfb, 0xe, 0x7, - 0xe1, 0xa7, 0xc5, 0xba, 0xa9, 0xa7, 0x8, 0xe, 0x20, 0x8b, 0xf7, 0x12, - 0xf8, 0x6b, 0xf7, 0x5, 0x1, 0xb5, 0xf7, 0x1e, 0xf7, 0x55, 0xf7, 0x1e, - 0x3, 0xa5, 0x16, 0xf8, 0x79, 0xf7, 0x12, 0xfb, 0xa7, 0x6, 0x9e, 0xab, - 0xa2, 0xa0, 0xd2, 0xcb, 0x8, 0xd1, 0xca, 0xe7, 0xd5, 0xf7, 0x10, 0x1a, - 0xe3, 0x4a, 0xf7, 0xa, 0xfb, 0x3b, 0xfb, 0x17, 0x21, 0x2d, 0xfb, 0x7, - 0x1e, 0xf7, 0x1e, 0x7d, 0x5, 0xd3, 0x90, 0xa9, 0xb1, 0xcb, 0x1b, 0xc8, - 0xac, 0x63, 0x56, 0x43, 0x5b, 0x64, 0x2b, 0x33, 0x1f, 0xfb, 0x1e, 0xfb, - 0x12, 0x55, 0x41, 0x80, 0x22, 0x8, 0xe, 0x79, 0xa, 0xf8, 0x83, 0xf7, - 0x6, 0x1, 0xf7, 0xe6, 0xf7, 0x25, 0x3, 0xa6, 0xf7, 0x4a, 0x15, 0x25, - 0x97, 0xda, 0x28, 0xf7, 0x2a, 0x1b, 0xf7, 0x1d, 0xf7, 0x3, 0xeb, 0xf7, - 0x16, 0xe1, 0x56, 0xcd, 0x35, 0x9c, 0x1f, 0x8d, 0x7, 0xa5, 0x97, 0xda, - 0xae, 0xe9, 0x1a, 0xdf, 0x3b, 0xf6, 0xfb, 0x22, 0xfb, 0x4f, 0x72, 0xfb, - 0x22, 0x5f, 0x80, 0x1e, 0xf7, 0x17, 0x75, 0x5, 0xd4, 0x94, 0xb9, 0xa0, - 0xb0, 0x1b, 0xbd, 0xaa, 0x6c, 0x5d, 0x43, 0x4c, 0x75, 0x55, 0x8c, 0x1f, - 0x7c, 0xfb, 0x3, 0x5, 0xdd, 0xad, 0xdb, 0x56, 0x32, 0x1a, 0x55, 0x6c, - 0x51, 0x43, 0x48, 0x6c, 0xc0, 0xbd, 0x85, 0x1e, 0xe, 0x20, 0xa0, 0x76, - 0xf7, 0x23, 0xf7, 0xc, 0xf8, 0x53, 0x77, 0x1, 0xf7, 0xcc, 0xf7, 0x14, - 0x3, 0xa6, 0xf7, 0x23, 0x15, 0xf7, 0xb1, 0xfb, 0x23, 0xf7, 0x14, 0xf7, - 0x23, 0xe1, 0xf7, 0xc, 0x35, 0xf8, 0x53, 0x7c, 0xa, 0xfb, 0xc1, 0xfc, - 0x54, 0x5, 0xf7, 0x11, 0x8c, 0x15, 0xf7, 0x32, 0xf7, 0x86, 0x5, 0x8d, - 0xfb, 0x86, 0x6, 0xe, 0x79, 0xa, 0xf8, 0x7f, 0xf7, 0x11, 0x1, 0xf8, - 0x3f, 0xf7, 0x23, 0x3, 0xa6, 0xf7, 0x48, 0x15, 0xfb, 0x11, 0x9b, 0xec, - 0x41, 0xf7, 0x13, 0x1b, 0xf7, 0x3e, 0xda, 0xf7, 0x1e, 0xf7, 0x7, 0x1f, - 0x8a, 0xf7, 0x5e, 0xfb, 0x38, 0xe8, 0xfb, 0x2c, 0x46, 0xa1, 0xf7, 0x19, - 0x18, 0xf7, 0x9b, 0xf7, 0x11, 0xfc, 0x5, 0x6, 0x44, 0xfc, 0x11, 0xf7, - 0x5, 0x7b, 0xbb, 0xbf, 0xc1, 0x96, 0xb4, 0x7a, 0x19, 0xb6, 0x7a, 0xa9, - 0x53, 0x4f, 0x1a, 0x23, 0x54, 0x68, 0x58, 0x5c, 0x60, 0xa6, 0xd3, 0x80, - 0x1e, 0xe, 0x79, 0xa, 0xf7, 0x99, 0xef, 0xf7, 0x20, 0xf7, 0x6, 0x1, - 0xaa, 0xf7, 0x31, 0x3, 0xf7, 0x44, 0xf8, 0x23, 0x15, 0xd5, 0x90, 0x96, - 0xf7, 0xf, 0xee, 0x1b, 0xd2, 0x92, 0x4d, 0x7b, 0x8d, 0x1f, 0xf7, 0x1b, - 0x99, 0x5, 0xf6, 0x77, 0x3f, 0xd2, 0xfb, 0xb, 0x1b, 0xfb, 0x8a, 0x7d, - 0xfb, 0xc4, 0x4a, 0xfb, 0x4d, 0xe6, 0xfb, 0x43, 0xf7, 0x3d, 0xf7, 0x20, - 0xe4, 0xee, 0xf7, 0x22, 0xf7, 0x22, 0xfb, 0x6, 0xe7, 0xfb, 0x7, 0x52, - 0x5e, 0x6f, 0x6e, 0x7e, 0x1f, 0x97, 0xfb, 0x45, 0x15, 0xf7, 0x7, 0xdf, - 0x9e, 0x9e, 0xec, 0x85, 0xfb, 0x9, 0x7a, 0x77, 0x8a, 0x20, 0x31, 0x48, - 0x67, 0xc4, 0xd1, 0x1e, 0xe, 0x20, 0xa0, 0x76, 0xf8, 0xe1, 0xf7, 0x10, - 0x12, 0xf7, 0x14, 0xf7, 0x22, 0x17, 0xf7, 0x14, 0x16, 0xf7, 0x22, 0x6, - 0x13, 0xe0, 0xf7, 0x6e, 0xf7, 0x12, 0xf7, 0x9c, 0xf7, 0x18, 0xf7, 0xd, - 0x1e, 0xea, 0xfc, 0x8b, 0xfb, 0x10, 0xf7, 0xe3, 0x7, 0xfb, 0xb, 0xfb, - 0x1d, 0xfb, 0x5, 0xfb, 0x6f, 0xfb, 0x6e, 0x1a, 0xe, 0x20, 0x78, 0xf7, - 0x2, 0xf8, 0x8d, 0xf7, 0x2, 0x1, 0xab, 0xf7, 0x23, 0xf7, 0x62, 0xf7, - 0x23, 0x3, 0xf7, 0x31, 0xf8, 0xe, 0x15, 0x3b, 0x6a, 0x5e, 0x57, 0x36, - 0x1a, 0xfb, 0x21, 0xf7, 0x4, 0x35, 0xf7, 0x18, 0xf7, 0x1e, 0xf7, 0x2, - 0xe3, 0xf7, 0x1f, 0xc7, 0x72, 0xd1, 0x25, 0xb3, 0x1e, 0xd1, 0xa9, 0xab, - 0xc0, 0xc9, 0x1a, 0xe6, 0x4a, 0xeb, 0xfb, 0x32, 0xfb, 0x34, 0x4c, 0x2b, - 0x30, 0x36, 0xc0, 0x64, 0xbe, 0x76, 0x1e, 0xa8, 0xf7, 0x25, 0x15, 0xb3, - 0xa4, 0xb0, 0xcc, 0xbc, 0xb4, 0x74, 0x55, 0x3c, 0x47, 0x7c, 0x75, 0x77, - 0x45, 0x99, 0xdb, 0x1e, 0x80, 0xfb, 0xcf, 0x15, 0xa9, 0x9a, 0xdc, 0xe1, - 0xd4, 0xab, 0x51, 0x56, 0x2c, 0x48, 0x75, 0x65, 0x59, 0x58, 0xac, 0xdf, - 0x1e, 0xe, 0x79, 0xa, 0xf7, 0x20, 0xef, 0xf7, 0x99, 0xf7, 0x6, 0x1, - 0xa9, 0xf7, 0x1f, 0xf7, 0x41, 0xf7, 0x33, 0x3, 0xb7, 0xf7, 0x33, 0x15, - 0x25, 0x8e, 0xdd, 0x3f, 0xf7, 0x10, 0x1b, 0xf7, 0xa1, 0x8b, 0xf7, 0xc4, - 0xcc, 0xf7, 0x4e, 0x46, 0xf7, 0x42, 0xfb, 0x55, 0xfb, 0x21, 0x32, 0x28, - 0xfb, 0x22, 0xfb, 0x22, 0xf7, 0x2, 0x2f, 0xf7, 0x8, 0xa6, 0xb8, 0x90, - 0xc1, 0xb9, 0x1f, 0x8d, 0x89, 0x5, 0x41, 0x86, 0x78, 0xfb, 0xf, 0x28, - 0x1b, 0x44, 0x8b, 0xc9, 0x9b, 0x89, 0x1f, 0x80, 0xf7, 0xbc, 0x15, 0x9f, - 0x8b, 0xf6, 0xe6, 0xce, 0xaf, 0x47, 0x44, 0xfb, 0x7, 0x33, 0x84, 0x78, - 0x2a, 0x95, 0xf7, 0x9, 0x9c, 0x1e, 0xe, 0x8b, 0xf7, 0x19, 0xf7, 0x89, - 0xf7, 0x1a, 0x1, 0xe7, 0xf7, 0x2a, 0x3, 0xe7, 0x16, 0xf7, 0x2a, 0xf7, - 0x19, 0xfb, 0x2a, 0x6, 0xf7, 0x89, 0x4, 0xf7, 0x2a, 0xf7, 0x1a, 0xfb, - 0x2a, 0x6, 0xe, 0xfb, 0x27, 0x76, 0xf7, 0x4a, 0x76, 0xf8, 0x12, 0xf7, - 0x1d, 0x12, 0xf3, 0xf7, 0x1e, 0x44, 0xd2, 0x13, 0xf0, 0xf3, 0x84, 0x15, - 0x13, 0xe8, 0xce, 0x6, 0x2c, 0x56, 0x8b, 0x71, 0x82, 0x1e, 0xa6, 0x52, - 0x5, 0xf7, 0xf, 0xb7, 0x8b, 0xe9, 0xc9, 0x1a, 0xed, 0x7, 0x13, 0xf0, - 0xfb, 0x1e, 0x6, 0xf7, 0x89, 0x4, 0xf7, 0x1e, 0xf7, 0x1d, 0x81, 0xa, - 0x91, 0xa, 0xf7, 0x58, 0x15, 0xf8, 0x90, 0xfb, 0x60, 0x5, 0xf7, 0x18, - 0x7, 0xfb, 0xf6, 0xf7, 0x14, 0xf7, 0xf6, 0xf7, 0x15, 0x5, 0xf7, 0x19, - 0x7, 0xfc, 0x90, 0xfb, 0x62, 0x5, 0xe, 0x3c, 0xe2, 0xf7, 0xe, 0xe4, - 0x82, 0xa, 0xb3, 0xf8, 0x8c, 0x3, 0xb3, 0xe2, 0x15, 0xf8, 0x8c, 0xf7, - 0xe, 0xfc, 0x8c, 0x6, 0xe4, 0x4, 0xf8, 0x8c, 0xf7, 0xd, 0xfc, 0x8c, - 0x6, 0xe, 0x91, 0xa, 0x83, 0x15, 0xf8, 0x90, 0xf7, 0x62, 0x5, 0xf7, - 0x4, 0x7, 0xfc, 0x90, 0xf7, 0x60, 0x5, 0xfb, 0x18, 0x7, 0xf7, 0xf5, - 0xfb, 0x14, 0xfb, 0xf5, 0xfb, 0x15, 0x5, 0xe, 0x57, 0x8b, 0xf7, 0x1e, - 0xf8, 0x77, 0xf5, 0x12, 0xf7, 0x87, 0xf7, 0xc, 0xfb, 0xc, 0xf7, 0x19, - 0xbe, 0xf7, 0x15, 0x13, 0xe8, 0xf7, 0x87, 0xf7, 0x4e, 0x15, 0xf7, 0xd, - 0x6, 0x8a, 0x92, 0x8b, 0x93, 0x8f, 0x1a, 0xbf, 0x91, 0x9e, 0xc3, 0xba, - 0x1e, 0xe8, 0xdb, 0xb1, 0xba, 0xd2, 0x1a, 0xf7, 0x5, 0x25, 0xe8, 0xfb, - 0x27, 0xfb, 0x37, 0x3d, 0xfb, 0x4, 0x29, 0x85, 0x1e, 0xf7, 0xe, 0x7b, - 0x5, 0xd7, 0x9a, 0xb1, 0xb7, 0xd3, 0x1b, 0xc4, 0xca, 0x6b, 0x4a, 0x60, - 0x75, 0x79, 0x49, 0x52, 0x1f, 0x2d, 0x3d, 0x87, 0x5e, 0x8d, 0x2a, 0x8, - 0xfb, 0x4e, 0x4, 0x13, 0xd8, 0xf7, 0x19, 0xf7, 0x1e, 0xfb, 0x19, 0x6, - 0xe, 0xf8, 0x2d, 0x46, 0xda, 0xf7, 0x0, 0xda, 0xf7, 0xca, 0xdb, 0xec, - 0xda, 0x1, 0xf7, 0x16, 0xd8, 0xdc, 0xf7, 0x1, 0xf8, 0x53, 0xd7, 0x3, - 0xf8, 0xc8, 0xf7, 0x3b, 0x15, 0x79, 0x90, 0x93, 0x6c, 0xcb, 0x1b, 0xf7, - 0x40, 0xf6, 0xf7, 0x37, 0xf7, 0x28, 0xf7, 0x4c, 0xfb, 0x17, 0xf7, 0x2a, - 0xfb, 0x79, 0xfb, 0xc8, 0xfb, 0xe, 0xfb, 0x89, 0xfb, 0x5b, 0xfb, 0x9e, - 0xf7, 0x7d, 0xfb, 0xe, 0xf7, 0x5c, 0xf7, 0x18, 0xf7, 0x41, 0xb4, 0xf7, - 0x2e, 0xd5, 0x1f, 0x32, 0x6, 0x66, 0x6f, 0x47, 0x3c, 0xfb, 0x56, 0x1b, - 0xfb, 0xa9, 0x3c, 0xf7, 0x41, 0xf7, 0x1c, 0xf7, 0x11, 0xc7, 0xf7, 0x84, - 0xf7, 0xb9, 0xf7, 0x72, 0xc9, 0xfb, 0x30, 0x28, 0xfb, 0x1d, 0x20, 0x35, - 0x62, 0x75, 0x91, 0xa9, 0xa8, 0x90, 0x1f, 0xca, 0xf7, 0xcb, 0x5, 0xfb, - 0x2, 0x6, 0x81, 0x5b, 0x5, 0xc0, 0x6a, 0x56, 0x91, 0x72, 0x1b, 0xfb, - 0x2b, 0x3d, 0xfb, 0x3a, 0xfb, 0xd, 0x27, 0xc8, 0x39, 0xf0, 0xcd, 0xb0, - 0xb1, 0x96, 0x96, 0x1f, 0xfb, 0x3b, 0xf7, 0x19, 0x15, 0xc8, 0xa0, 0xf7, - 0x26, 0xee, 0xd0, 0x9d, 0x43, 0x6f, 0x51, 0x6b, 0xfb, 0x2c, 0x28, 0x50, - 0x7a, 0xc0, 0xbd, 0x1e, 0xe, 0x69, 0xa, 0xf7, 0x37, 0xf7, 0xe, 0xf8, - 0x45, 0x77, 0x1, 0x9f, 0xf9, 0x3e, 0x3, 0x9f, 0x16, 0xf7, 0x26, 0x6, - 0xc3, 0xf7, 0x37, 0x5, 0xf7, 0xa3, 0x6, 0xc6, 0xfb, 0x37, 0x5, 0xf7, - 0x2a, 0x6, 0xfb, 0xa4, 0xf9, 0x62, 0x40, 0xa, 0x76, 0xfc, 0x45, 0x15, - 0xe7, 0xf7, 0x9e, 0xe9, 0xfb, 0x9e, 0x5, 0xe, 0xc6, 0x8c, 0xf7, 0xd, - 0xf7, 0x51, 0xf7, 0xe, 0xf7, 0x38, 0x7b, 0xa, 0xf7, 0x22, 0xf7, 0xa9, - 0xf7, 0x1f, 0x3, 0xd7, 0x8d, 0x15, 0xf7, 0xa7, 0x6, 0xf7, 0x30, 0xf7, - 0x36, 0x89, 0xf7, 0x5f, 0xb4, 0x7e, 0xf0, 0xfb, 0xd, 0xb1, 0x1f, 0xcd, - 0xa8, 0xac, 0xba, 0xca, 0x1a, 0xf7, 0x33, 0xfb, 0x22, 0xb0, 0xfb, 0x21, - 0x1e, 0xfb, 0xa7, 0x6, 0xf7, 0x22, 0xfb, 0xb1, 0x15, 0xf7, 0x38, 0xf7, - 0x19, 0x7, 0xc8, 0xde, 0x8c, 0x3f, 0x3f, 0x2a, 0x7e, 0x5c, 0x1f, 0xfb, - 0x19, 0xfb, 0xcb, 0x15, 0xf7, 0x51, 0xf7, 0x19, 0x7, 0xef, 0xd2, 0x82, - 0x28, 0x47, 0x3d, 0x7e, 0x2e, 0x1f, 0xe, 0xc6, 0x78, 0xf7, 0x13, 0xf8, - 0x8a, 0xf7, 0x13, 0x1, 0xb7, 0xf7, 0x2d, 0x3, 0xf8, 0xb0, 0xf7, 0x9a, - 0x15, 0x3b, 0x79, 0x5d, 0x41, 0x29, 0x1b, 0xfb, 0x2b, 0x6d, 0xf7, 0xc, - 0xf7, 0x11, 0xba, 0x89, 0xf7, 0x66, 0xf7, 0x4b, 0xd7, 0xca, 0x60, 0x3c, - 0x9d, 0x1f, 0xf7, 0x27, 0xad, 0x5, 0xf7, 0xa, 0x71, 0xfb, 0x17, 0xec, - 0xfb, 0x27, 0x1b, 0xfb, 0x83, 0x2c, 0xfb, 0x49, 0xfb, 0x5f, 0xfb, 0x78, - 0xf7, 0x1b, 0xfb, 0x24, 0xf7, 0x5b, 0xf7, 0x84, 0xbe, 0xf7, 0x47, 0xc4, - 0x9a, 0x1f, 0xe, 0xc6, 0x8b, 0xf7, 0xd, 0xf8, 0x70, 0x7b, 0xa, 0xf7, - 0x26, 0xf7, 0xcc, 0xf7, 0x2b, 0x3, 0xd7, 0x16, 0xf7, 0x7c, 0x6, 0xf7, - 0x9e, 0xf7, 0x3, 0xf7, 0x23, 0xf7, 0x65, 0xf7, 0xb0, 0xfb, 0x36, 0xdd, - 0xfb, 0x6b, 0x1f, 0xfb, 0x7c, 0x6, 0xf7, 0x26, 0xfc, 0xe9, 0x15, 0xf8, - 0x70, 0xe1, 0x7, 0xf7, 0xe, 0xf3, 0x85, 0xfb, 0x83, 0xfb, 0x7b, 0xfb, - 0x5, 0x8b, 0xfb, 0x5, 0x1f, 0xe, 0x8f, 0x8b, 0xf7, 0xd, 0xf7, 0x57, - 0xf7, 0xd, 0xf7, 0x34, 0x7b, 0xa, 0xf7, 0x24, 0x3, 0xd7, 0x16, 0xf8, - 0xb5, 0xf7, 0xd, 0xfc, 0x25, 0xf7, 0x57, 0xf7, 0xf3, 0xf7, 0xd, 0xfb, - 0xf3, 0xf7, 0x34, 0xf8, 0x18, 0xf7, 0xd, 0xfc, 0xa8, 0x6, 0xe, 0x57, - 0xa0, 0x76, 0xf7, 0xc5, 0xf7, 0xd, 0xf7, 0x3f, 0x7b, 0xa, 0xf7, 0x2a, - 0x3, 0xd7, 0x16, 0xf7, 0x2a, 0xf7, 0xc5, 0xf7, 0xc2, 0xf7, 0xd, 0xfb, - 0xc2, 0xf7, 0x3f, 0xf7, 0xfd, 0xf7, 0xd, 0xfc, 0x93, 0x6, 0xe, 0xf7, - 0x7, 0x78, 0xf7, 0x13, 0xf7, 0x2e, 0xf7, 0x10, 0xf7, 0x60, 0xf7, 0x13, - 0x1, 0xc5, 0xf7, 0x29, 0xf7, 0xfc, 0xf7, 0x26, 0x3, 0xf8, 0x22, 0xf7, - 0x9a, 0x15, 0xf7, 0x3d, 0x2f, 0x6, 0x7d, 0x78, 0x49, 0x5b, 0x37, 0x1b, - 0xfb, 0x3c, 0x66, 0xf7, 0x25, 0xf7, 0x0, 0xa0, 0x8f, 0xa4, 0x94, 0xa9, - 0x1f, 0x94, 0xaa, 0x97, 0xa5, 0x9c, 0xa1, 0x8, 0xb8, 0xae, 0xbe, 0xa8, - 0xcf, 0x1b, 0xb6, 0xe5, 0x7c, 0x27, 0xa8, 0x1f, 0xf7, 0x24, 0xa6, 0x5, - 0xf7, 0x48, 0x63, 0xfb, 0x29, 0xae, 0xfb, 0x9, 0x1b, 0xfb, 0x15, 0x32, - 0x5a, 0x43, 0x53, 0x1f, 0x6f, 0x67, 0x77, 0x63, 0x7e, 0x5e, 0x8, 0x7e, - 0x5e, 0x85, 0x65, 0x6c, 0x1a, 0xfb, 0x54, 0xea, 0xfb, 0x50, 0xf7, 0x97, - 0xf7, 0x26, 0xf7, 0x12, 0xd4, 0xb3, 0xb6, 0x1e, 0xf7, 0xb8, 0xfb, 0xcf, - 0x7, 0xe, 0x69, 0xa, 0xf7, 0xcf, 0xf7, 0xe, 0xf7, 0xad, 0x77, 0x1, - 0xd2, 0xf7, 0x26, 0xf7, 0xb4, 0xf7, 0x26, 0x3, 0xd2, 0x16, 0xf7, 0x26, - 0xf7, 0xcf, 0xf7, 0xb4, 0xfb, 0xcf, 0xf7, 0x26, 0xf9, 0x62, 0xfb, 0x26, - 0xfb, 0xad, 0xfb, 0xb4, 0xf7, 0xad, 0xfb, 0x26, 0x6, 0xe, 0xfc, 0x15, - 0x3f, 0xa, 0xf7, 0x10, 0xf7, 0x2a, 0x3, 0xcb, 0x16, 0xf7, 0x2a, 0xf9, - 0x62, 0xfb, 0x2a, 0x6, 0xe, 0x20, 0x79, 0xf7, 0x12, 0xf8, 0xf6, 0x77, - 0x1, 0xf7, 0xe7, 0xf7, 0x25, 0x3, 0xa1, 0xf7, 0x70, 0x15, 0xfb, 0x38, - 0xdb, 0x41, 0xf7, 0x23, 0xf7, 0x41, 0xcd, 0xf7, 0xb, 0xf7, 0x2b, 0x1e, - 0xf8, 0x66, 0xfb, 0x25, 0xfc, 0x66, 0x7, 0x44, 0x86, 0x42, 0x32, 0x36, - 0x8f, 0xdf, 0xb9, 0x87, 0x1e, 0xe, 0xc6, 0x3f, 0xa, 0xe2, 0xf7, 0x22, - 0x3, 0xe2, 0x16, 0xf7, 0x22, 0xf7, 0x6e, 0x6, 0xf7, 0x8, 0xf7, 0xc, - 0xf7, 0x55, 0xfb, 0xe6, 0x5, 0xf7, 0x4c, 0x6, 0xfb, 0xab, 0xf8, 0x4c, - 0xf7, 0x9c, 0xf7, 0xaa, 0x5, 0xfb, 0x52, 0x6, 0xfb, 0xb4, 0xfb, 0xd1, - 0x5, 0xf7, 0xd1, 0xfb, 0x22, 0x7, 0xe, 0x86, 0xa, 0xd7, 0xf7, 0x25, - 0x3, 0xd7, 0x16, 0xf8, 0x8f, 0xf7, 0xe, 0xfb, 0xfe, 0xf8, 0xe8, 0xfb, - 0x25, 0x6, 0xe, 0xf7, 0x3e, 0xa0, 0x76, 0xf8, 0xc9, 0xf7, 0x2d, 0x1, - 0xd0, 0xf7, 0x1b, 0xf8, 0x3e, 0xf7, 0x1b, 0x3, 0xd0, 0x16, 0xf7, 0x1b, - 0xf8, 0xc9, 0x8d, 0x6, 0xf7, 0x22, 0xfc, 0xc9, 0x5, 0xf7, 0x20, 0x6, - 0xf7, 0x20, 0xf8, 0xc9, 0x5, 0x8d, 0xfc, 0xc9, 0xf7, 0x1b, 0xf9, 0x62, - 0xfb, 0x6f, 0x6, 0xfb, 0x13, 0xfc, 0x7c, 0x5, 0x88, 0x6, 0xfb, 0x15, - 0xf8, 0x7c, 0x5, 0xfb, 0x6e, 0x6, 0xe, 0xc6, 0xa0, 0x76, 0xf9, 0x62, - 0x5c, 0xa, 0xf8, 0x67, 0x8d, 0x6, 0xf7, 0xbb, 0xfc, 0x67, 0x5, 0xf7, - 0x2a, 0xf9, 0x62, 0xfb, 0x1e, 0xfc, 0x72, 0x89, 0x6, 0xfb, 0xc1, 0xf8, - 0x72, 0x5, 0xfb, 0x24, 0x6, 0xe, 0xf7, 0x7, 0x78, 0xf7, 0x13, 0xf8, - 0x76, 0xf7, 0x13, 0x1, 0xd0, 0xf7, 0x28, 0xf7, 0xf8, 0x85, 0xa, 0xb7, - 0xf7, 0xea, 0x15, 0x7c, 0x8d, 0x75, 0x90, 0x6d, 0x1e, 0x94, 0x4f, 0xa0, - 0x53, 0xae, 0x58, 0x8, 0x40, 0xbe, 0xe5, 0x57, 0xf7, 0x18, 0x1b, 0xf7, - 0x10, 0xe2, 0xba, 0xd2, 0xc2, 0x1f, 0xa6, 0xaf, 0x9f, 0xb4, 0x98, 0xb8, - 0x8, 0x98, 0xb9, 0x91, 0xb3, 0xae, 0x1a, 0xf7, 0x69, 0x3d, 0xa, 0xfb, - 0x20, 0xfb, 0x7f, 0x1e, 0xf7, 0x28, 0x16, 0xf7, 0x0, 0xac, 0xf7, 0x20, - 0xf7, 0x38, 0xf7, 0x44, 0xa0, 0xfb, 0x39, 0x38, 0x76, 0x87, 0x72, 0x84, - 0x6c, 0x1e, 0x84, 0x6c, 0x80, 0x70, 0x7c, 0x74, 0x8, 0x5c, 0x6c, 0x59, - 0x6e, 0x43, 0x1b, 0x3f, 0x5a, 0xa9, 0x89, 0xa, 0xaa, 0x8, 0x85, 0xaa, - 0x88, 0xa5, 0xa0, 0x1a, 0xe, 0x8f, 0xa0, 0x76, 0xf7, 0xac, 0xf7, 0xd, - 0xf7, 0x58, 0xf7, 0xd, 0x60, 0xa, 0xf7, 0xac, 0xdb, 0x6, 0xf7, 0x31, - 0xf7, 0x3d, 0x7e, 0xf7, 0x7a, 0xf7, 0x6c, 0xfb, 0x26, 0x90, 0xfb, 0x48, - 0x1f, 0xfb, 0x75, 0x6, 0xf7, 0x25, 0xfb, 0xd1, 0x15, 0xf7, 0x58, 0xdb, - 0x7, 0xf4, 0xd2, 0x89, 0x27, 0x24, 0x26, 0x94, 0x40, 0x1f, 0xe, 0xf7, - 0x7, 0x6c, 0x76, 0xc6, 0xf7, 0xf, 0xf8, 0x6f, 0xf7, 0xe, 0x1, 0xd1, - 0xf7, 0x23, 0xf7, 0xe7, 0xf7, 0x23, 0x3, 0xf8, 0xa8, 0xb0, 0x15, 0xc4, - 0x64, 0xb5, 0x68, 0xc2, 0x7c, 0xbe, 0xf0, 0x18, 0x4f, 0xa2, 0x68, 0xa5, - 0x7b, 0x96, 0x8, 0xa6, 0xa7, 0xc5, 0xe2, 0xf7, 0x20, 0x1a, 0xf7, 0x67, - 0xfb, 0x3, 0xf7, 0x2c, 0xfb, 0x73, 0xfb, 0x6b, 0xfb, 0xa, 0xfb, 0x20, - 0xfb, 0x73, 0x38, 0xa0, 0x2c, 0xbf, 0x47, 0x1e, 0x48, 0xc0, 0xde, 0x5f, - 0xf7, 0x10, 0x1b, 0xd3, 0xc7, 0x9e, 0x96, 0xa2, 0x1f, 0xfb, 0x50, 0xf7, - 0x23, 0x15, 0xab, 0x7f, 0xb2, 0x76, 0x9a, 0x80, 0x8, 0x88, 0x80, 0x80, - 0x88, 0x6c, 0x1b, 0x44, 0x5c, 0xa8, 0x89, 0xa, 0xac, 0x8, 0x85, 0xac, - 0x88, 0xa4, 0x9e, 0x1a, 0xf7, 0x7, 0xac, 0xf7, 0x12, 0xf7, 0x31, 0xf7, - 0x32, 0xac, 0xfb, 0x21, 0x27, 0x6a, 0x81, 0x50, 0x7f, 0x6e, 0x1e, 0x80, - 0x6f, 0x7e, 0x7a, 0x84, 0x82, 0x6a, 0xa4, 0x5d, 0xa8, 0x56, 0x9e, 0x8, - 0xe, 0x69, 0xa, 0xf7, 0xc0, 0xf7, 0x6, 0xf7, 0x4b, 0x7b, 0xa, 0xf7, - 0x1b, 0xf7, 0xa5, 0xf7, 0x1f, 0x3, 0xd7, 0x16, 0xf7, 0x1b, 0xf7, 0xc0, - 0xa6, 0x6, 0xe5, 0xa1, 0x81, 0xfb, 0x16, 0xdc, 0x1f, 0xdf, 0xfb, 0x34, - 0x5, 0xf7, 0x36, 0x6, 0x3a, 0xf7, 0x20, 0x47, 0xf7, 0x8, 0x71, 0xa5, - 0x53, 0xad, 0x19, 0x8d, 0x7, 0xf0, 0x92, 0xd7, 0xdb, 0xf7, 0x3, 0x1a, - 0xf7, 0x52, 0xfb, 0x1b, 0x97, 0xfb, 0x45, 0x1e, 0xfb, 0x7f, 0x6, 0xf7, - 0x1b, 0xfb, 0xc4, 0x15, 0xf7, 0x4b, 0xef, 0x7, 0xf5, 0xce, 0x94, 0x28, - 0x2c, 0x30, 0x8d, 0x39, 0x1f, 0xe, 0x8f, 0x78, 0xf7, 0x10, 0xf7, 0x64, - 0xf7, 0x1b, 0xf7, 0x3b, 0xf7, 0xe, 0x1, 0xcc, 0xf7, 0x21, 0xf7, 0x96, - 0xf7, 0x26, 0x3, 0xb2, 0xf7, 0x7b, 0x15, 0xfb, 0x87, 0x72, 0xa, 0xbe, - 0xf7, 0x42, 0xf7, 0x48, 0xfb, 0x2a, 0xae, 0xfb, 0x3, 0xa6, 0x1f, 0xfb, - 0x9, 0xa6, 0x5e, 0x96, 0xba, 0x1a, 0xc6, 0xda, 0xa2, 0xb6, 0xf7, 0x8, - 0x96, 0x47, 0x65, 0x91, 0x1e, 0xf7, 0x28, 0x91, 0x5, 0xf7, 0x3a, 0x85, - 0xfb, 0x18, 0xc3, 0xfb, 0x23, 0x1b, 0xfb, 0x69, 0x59, 0xfb, 0x11, 0x3c, - 0xfb, 0x36, 0xf7, 0x35, 0x63, 0xd3, 0x79, 0x1f, 0xf7, 0x1a, 0x6a, 0xbe, - 0x7e, 0x4e, 0x1a, 0x5c, 0x61, 0x55, 0x25, 0xfb, 0x18, 0x78, 0xf1, 0xb1, - 0x84, 0x1e, 0xe, 0x57, 0xa0, 0x76, 0xf8, 0xe8, 0xf7, 0xe, 0x1, 0xf7, - 0x7c, 0x85, 0xa, 0xf7, 0x7c, 0x16, 0xf7, 0x28, 0xf8, 0xe8, 0xf7, 0x6e, - 0xf7, 0xe, 0xfc, 0xdc, 0xfb, 0xe, 0xf7, 0x6e, 0x6, 0xe, 0xc6, 0x78, - 0xf7, 0x12, 0xf8, 0xf7, 0x77, 0x42, 0xa, 0xd3, 0xf9, 0x62, 0x15, 0xfc, - 0x22, 0x7, 0xfb, 0x3c, 0xb7, 0xfb, 0x3f, 0xf7, 0x8d, 0xf7, 0x6d, 0xd0, - 0xf7, 0x1, 0xf7, 0x7a, 0x1e, 0xf8, 0x22, 0xfb, 0x26, 0xfc, 0x22, 0x7, - 0xfb, 0x11, 0x8b, 0x33, 0xfb, 0x20, 0xfb, 0x16, 0x7a, 0xdc, 0xf7, 0x18, - 0x1e, 0xf8, 0x22, 0x7, 0xe, 0x8f, 0x3f, 0xa, 0xf7, 0x98, 0x16, 0xf7, - 0x26, 0x6, 0xf7, 0x86, 0xf9, 0x62, 0x40, 0xa, 0xfb, 0x39, 0xfc, 0xa7, - 0x6e, 0xa, 0xfb, 0x3d, 0xf8, 0xa7, 0x5, 0xfb, 0x28, 0x6, 0xe, 0xf7, - 0xad, 0xa0, 0x76, 0xf8, 0xaf, 0x77, 0xf7, 0x5b, 0x77, 0x1, 0xf7, 0x4a, - 0x16, 0xf7, 0x2d, 0x6, 0xf7, 0x1d, 0xf8, 0xaf, 0x5, 0x8c, 0x6, 0xf7, - 0x1d, 0xfc, 0xaf, 0x5, 0xf7, 0x2a, 0x6, 0xf7, 0x3d, 0xf9, 0x62, 0x5, - 0xfb, 0x22, 0x6, 0x22, 0xfc, 0x88, 0x6e, 0xa, 0xfb, 0xd, 0xf8, 0x88, - 0x5, 0xfb, 0x3b, 0x6, 0xfb, 0x12, 0xfc, 0x80, 0x6e, 0xa, 0x23, 0xf8, - 0x80, 0x5, 0xfb, 0x24, 0x6, 0xe, 0x8f, 0x3f, 0xa, 0x99, 0x16, 0xf7, - 0x3b, 0x6, 0xf7, 0x2c, 0xf7, 0x8d, 0xf7, 0x2d, 0xfb, 0x8d, 0x5, 0xf7, - 0x3b, 0x6, 0xfb, 0x7f, 0xf8, 0x7, 0xf7, 0x6a, 0xf7, 0xef, 0x5, 0xfb, - 0x35, 0x6, 0xfb, 0x1b, 0xfb, 0x7c, 0xfb, 0x1e, 0xf7, 0x7c, 0x5, 0xfb, - 0x36, 0x6, 0xf7, 0x69, 0xfb, 0xe9, 0x5, 0xe, 0x8f, 0x3f, 0xa, 0xf7, - 0x9d, 0xf7, 0x1d, 0x3, 0xf7, 0x9d, 0x16, 0xf7, 0x1d, 0xf7, 0xc2, 0x6, - 0xf7, 0x8f, 0xf8, 0x34, 0x4f, 0xa, 0xfc, 0x33, 0x5, 0xe, 0x57, 0x8b, - 0xf7, 0xe, 0xf8, 0x6e, 0xf7, 0xe, 0x1, 0xa4, 0x16, 0xf8, 0xc5, 0xf7, - 0xe, 0x87, 0xa, 0xf7, 0x6, 0xfc, 0x8e, 0xfb, 0xe, 0x8c, 0xa, 0xe, - 0x7f, 0xa, 0xca, 0xf7, 0x19, 0x3, 0xf7, 0x58, 0x33, 0x15, 0xf9, 0x52, - 0xf7, 0x5, 0xf7, 0x0, 0xfb, 0x8a, 0xfe, 0x2a, 0xf7, 0x8a, 0xf7, 0x0, - 0x7, 0xe, 0xfc, 0x15, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0x4e, 0xf7, - 0xec, 0x3, 0xf7, 0x4e, 0x78, 0x15, 0xf7, 0x11, 0x6, 0xfb, 0x6d, 0x93, - 0xa, 0x7f, 0xa, 0xf7, 0x1d, 0xf7, 0x19, 0x3, 0xa3, 0x33, 0x15, 0xfb, - 0x0, 0xf7, 0x8a, 0xfa, 0x2a, 0xfb, 0x8a, 0xfb, 0x0, 0xf7, 0x5, 0xfd, - 0x52, 0x7, 0xe, 0x3c, 0xf7, 0xec, 0x76, 0xf7, 0x79, 0x84, 0xa, 0xc9, - 0xf7, 0xd7, 0x15, 0xf7, 0x1c, 0x6, 0xe9, 0xf7, 0x79, 0xea, 0xfb, 0x79, - 0x5, 0xf7, 0x1b, 0x6, 0xfb, 0x42, 0xf8, 0xb, 0x5, 0x20, 0x6, 0xe, - 0x20, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, 0xc0, 0xbd, 0x7, - 0xe, 0xf8, 0xf0, 0x84, 0xa, 0x74, 0xf7, 0x8c, 0x3, 0xf7, 0x13, 0xf8, - 0xf0, 0x15, 0xed, 0x6, 0x3f, 0x83, 0xa, 0xfb, 0x40, 0x6, 0xe, 0x20, - 0x7d, 0xef, 0x48, 0x76, 0xf8, 0x4c, 0xf7, 0x0, 0x12, 0xa8, 0xf7, 0x1a, - 0xf7, 0x58, 0xf7, 0x1d, 0x13, 0x78, 0xf8, 0x6, 0xc4, 0x30, 0xa, 0x77, - 0xb8, 0x83, 0xa3, 0x38, 0xa, 0xad, 0x1a, 0xeb, 0x8a, 0xf4, 0xfb, 0x73, - 0xfb, 0x32, 0x5b, 0x49, 0x35, 0x73, 0x1e, 0xf7, 0x13, 0x73, 0x5, 0xa6, - 0x2d, 0xa, 0x7f, 0x6e, 0x83, 0x3c, 0x7d, 0x8, 0x41, 0x7c, 0xfb, 0xc, - 0x73, 0xfb, 0x17, 0x1a, 0x13, 0xb8, 0x2e, 0xd1, 0x4a, 0x37, 0xa, 0xf7, - 0x5b, 0x15, 0x6f, 0x7, 0x3c, 0x97, 0x5d, 0x4c, 0x3d, 0x1b, 0x55, 0x6d, - 0xa7, 0xa9, 0xbd, 0xca, 0xa9, 0xa4, 0x90, 0x1f, 0xa9, 0x92, 0xc8, 0x95, - 0x9c, 0x95, 0x8, 0xe, 0x57, 0x7d, 0xf7, 0x2, 0x3e, 0x76, 0xf8, 0x41, - 0xf5, 0xf7, 0x4d, 0x77, 0x12, 0xde, 0xf7, 0x20, 0xf7, 0x5a, 0xf7, 0x24, - 0x13, 0x7c, 0xc8, 0x89, 0x15, 0xf7, 0x17, 0xd8, 0x8d, 0x6, 0x13, 0xbc, - 0x3d, 0xc1, 0xd8, 0x80, 0xaa, 0x1b, 0xf7, 0x7, 0xf6, 0xe0, 0xf7, 0x50, - 0xf7, 0x4c, 0x22, 0xe5, 0xfb, 0xa, 0x35, 0x5b, 0x5a, 0x74, 0x77, 0x1f, - 0xf7, 0x95, 0xfb, 0x20, 0x7, 0x13, 0x7c, 0xf7, 0x1f, 0xfc, 0x52, 0x15, - 0xf5, 0xbf, 0xbc, 0xcc, 0xf3, 0x98, 0xfb, 0x2, 0x51, 0x1e, 0x13, 0xbc, - 0xfb, 0x16, 0x4c, 0x6a, 0x5b, 0x31, 0x6a, 0xda, 0xec, 0x1e, 0xe, 0x20, - 0x7d, 0xf7, 0x8, 0xf7, 0xe1, 0xf7, 0x3, 0x1, 0xb9, 0xf7, 0x21, 0x3, - 0xf8, 0x1a, 0xf7, 0x5e, 0x15, 0x6c, 0x85, 0x76, 0x46, 0x3b, 0x1b, 0x3c, - 0x6e, 0xc6, 0xf7, 0x5, 0xac, 0x86, 0xf7, 0x14, 0xf7, 0x5, 0xce, 0xa4, - 0x5c, 0x66, 0x92, 0x1f, 0xf7, 0x1b, 0xa4, 0x5, 0xd2, 0x77, 0x5a, 0xee, - 0xfb, 0x39, 0x1b, 0xfb, 0x59, 0x57, 0xfb, 0x28, 0xfb, 0x10, 0x31, 0xae, - 0xfb, 0x5a, 0xf7, 0x6a, 0xf7, 0x17, 0xdc, 0xc9, 0xf7, 0x18, 0xa8, 0x1f, - 0xe, 0x57, 0x7d, 0xf7, 0x2, 0x3e, 0x76, 0xf8, 0x3f, 0xf5, 0xf7, 0x4f, - 0x77, 0x12, 0xad, 0xf7, 0x24, 0xf7, 0x6d, 0xf7, 0x20, 0x13, 0x7c, 0xf8, - 0x38, 0x89, 0x15, 0xf7, 0x17, 0xf9, 0x64, 0xfb, 0x20, 0xfb, 0x97, 0x6, - 0xa2, 0x77, 0x5b, 0xbc, 0x35, 0x1b, 0xfb, 0xa, 0x22, 0x36, 0xfb, 0x4c, - 0x1f, 0x13, 0xbc, 0xfb, 0x50, 0xf6, 0x33, 0xf7, 0x7, 0xe9, 0xae, 0xb7, - 0xb7, 0xae, 0x1e, 0x13, 0x7c, 0xfb, 0x86, 0xf7, 0x50, 0x15, 0xc5, 0x98, - 0xf4, 0xf3, 0xcc, 0xbf, 0x51, 0x22, 0x1e, 0x13, 0xbc, 0x2a, 0x6a, 0x46, - 0x31, 0x5b, 0x4c, 0xb0, 0xf7, 0x15, 0x1e, 0xe, 0x20, 0x7d, 0xf7, 0x0, - 0xf7, 0x17, 0xe1, 0xf7, 0x2b, 0xf7, 0x0, 0x1, 0xa9, 0xf7, 0x28, 0xf7, - 0x64, 0xf7, 0x22, 0x3, 0xf7, 0x3c, 0xf7, 0x76, 0x15, 0xf7, 0xfc, 0x6, - 0xf7, 0x33, 0x57, 0xf7, 0x35, 0xfb, 0x5e, 0xfb, 0x3e, 0x3a, 0xfb, 0x1e, - 0xfb, 0x25, 0xfb, 0x3b, 0xf1, 0xfb, 0x2, 0xf7, 0x29, 0xf7, 0x46, 0xc3, - 0xf7, 0x12, 0xac, 0x97, 0x1e, 0xfb, 0x22, 0xa3, 0x5, 0x72, 0x83, 0x6d, - 0x59, 0x49, 0x1b, 0x3a, 0x74, 0xcf, 0xcb, 0x89, 0x1f, 0x8e, 0xe1, 0x15, - 0xce, 0xaf, 0xc6, 0xce, 0xd3, 0xb3, 0x4d, 0x4b, 0x1e, 0xe, 0x76, 0xa, - 0xf4, 0xf4, 0x1, 0xd8, 0xf7, 0x14, 0x3, 0xd8, 0x16, 0xf7, 0x14, 0xf8, - 0x2c, 0xde, 0xf7, 0x1, 0x38, 0xb0, 0x6, 0xa9, 0x8b, 0xb1, 0xbd, 0x93, - 0x9c, 0x89, 0x85, 0xa1, 0x1e, 0x9b, 0xeb, 0x5, 0x98, 0x65, 0x76, 0x8f, - 0x73, 0x1b, 0xfb, 0x21, 0x7a, 0xfb, 0x1, 0x4e, 0x1f, 0x63, 0x48, 0xfb, - 0x1, 0xce, 0x7, 0xe, 0x57, 0xfb, 0x6d, 0xf7, 0x0, 0xf7, 0x1, 0xf7, - 0x7, 0xf7, 0xd7, 0xf7, 0x0, 0x1, 0xb3, 0xf7, 0x23, 0xf7, 0x7b, 0xf7, - 0x1f, 0x3, 0xc5, 0x67, 0x15, 0xfb, 0x40, 0xf7, 0x10, 0x82, 0xf7, 0xe, - 0xf7, 0x79, 0x9f, 0xf7, 0xf, 0xf7, 0x28, 0x1e, 0xf8, 0x74, 0xfb, 0x16, - 0x40, 0x89, 0x7, 0xa3, 0x7c, 0x5c, 0xca, 0x2a, 0x1b, 0x35, 0xfb, 0x1c, - 0x55, 0xfb, 0x70, 0xfb, 0x2c, 0xde, 0xfb, 0xc, 0xf7, 0x1a, 0xca, 0xc4, - 0xae, 0xbe, 0xae, 0x1f, 0x8d, 0x3d, 0x6, 0x4d, 0x8b, 0x54, 0xfb, 0x7, - 0x50, 0x7d, 0x9c, 0xb0, 0x82, 0x1e, 0x69, 0xf7, 0xdb, 0x15, 0xb3, 0x94, - 0xf7, 0x12, 0xf5, 0xea, 0xa1, 0x29, 0x47, 0xfb, 0x1f, 0x38, 0x79, 0x66, - 0x32, 0x74, 0xdf, 0xd4, 0x1e, 0xe, 0x57, 0xa0, 0x76, 0xf8, 0x3e, 0xf4, - 0xf7, 0x4f, 0x77, 0x1, 0xcc, 0xf7, 0x20, 0xf7, 0x5d, 0x7d, 0xa, 0xcc, - 0x16, 0xf7, 0x20, 0xf7, 0x99, 0x6, 0xc4, 0x8b, 0xf7, 0x0, 0xf7, 0x6, - 0xe2, 0x8b, 0x3e, 0x33, 0x1e, 0xfb, 0x99, 0xf7, 0x20, 0xf7, 0x99, 0x7, - 0xf7, 0x44, 0x4f, 0xe9, 0xfb, 0xc, 0x6e, 0x47, 0x88, 0x40, 0x4b, 0x1e, - 0xf7, 0x9d, 0xfb, 0x20, 0x7, 0xe, 0x4c, 0xa, 0xf8, 0xa1, 0x77, 0xe9, - 0xf7, 0x12, 0x1, 0xf7, 0x22, 0x63, 0xa, 0xf8, 0xa1, 0x68, 0xa, 0xd5, - 0x4, 0xf7, 0x20, 0xf7, 0x12, 0x6d, 0xa, 0xfc, 0x15, 0xfb, 0x6a, 0xf7, - 0x16, 0xf8, 0xf5, 0x77, 0xe9, 0xf7, 0x12, 0x1, 0xf7, 0x8, 0xf7, 0x1b, - 0x3, 0xa7, 0x3b, 0x15, 0x73, 0xfb, 0xb, 0x5, 0x88, 0x97, 0xb4, 0x7f, - 0xb3, 0x1b, 0xf7, 0x22, 0x97, 0xf7, 0x9, 0xf7, 0x5, 0x1f, 0xf8, 0x91, - 0xfb, 0x1b, 0xfc, 0x89, 0x7, 0x42, 0x8c, 0x68, 0x52, 0x7c, 0x7f, 0x8e, - 0x8c, 0x86, 0x1e, 0xe3, 0xf9, 0x3b, 0x15, 0xf7, 0x1b, 0xf7, 0x12, 0xfb, - 0x1b, 0x6, 0xe, 0x20, 0x3f, 0xa, 0xd0, 0xf7, 0x21, 0x3, 0xd0, 0x16, - 0xf7, 0x21, 0xf7, 0x3b, 0x6, 0xcd, 0xcf, 0xf7, 0x1a, 0xfb, 0x7f, 0x5, - 0xf7, 0x2c, 0x6, 0xfb, 0x57, 0xf7, 0xdf, 0xf7, 0x4b, 0xf7, 0x53, 0x5, - 0xfb, 0x42, 0x6, 0xfb, 0x3a, 0xfb, 0x4c, 0x5, 0xf8, 0x10, 0xfb, 0x21, - 0x7, 0xe, 0xfc, 0x15, 0x3f, 0xa, 0xd0, 0x63, 0xa, 0xf9, 0x62, 0x6d, - 0xa, 0xf7, 0x76, 0xa0, 0x76, 0xf8, 0x4a, 0xf7, 0x0, 0x7f, 0x77, 0x12, - 0xdc, 0xf7, 0x1d, 0xf7, 0x33, 0xf7, 0x1c, 0xf7, 0x44, 0xf7, 0x1d, 0x13, - 0xdc, 0xcb, 0x16, 0xf7, 0x1d, 0xf7, 0xb1, 0x6, 0xe6, 0x9f, 0xc9, 0xe0, - 0xd3, 0x8a, 0x4f, 0x30, 0x1e, 0xfb, 0xb3, 0xf7, 0x1c, 0xf7, 0xb3, 0x7, - 0xd8, 0xa3, 0xd5, 0xda, 0xd4, 0x8b, 0x33, 0x4c, 0x1e, 0xfb, 0xb3, 0xf7, - 0x1d, 0xf7, 0xb7, 0x7, 0xc5, 0x8b, 0xf7, 0x59, 0xfb, 0x3e, 0x36, 0x59, - 0x53, 0x6f, 0x74, 0x1e, 0xa1, 0x7e, 0x69, 0xc9, 0x28, 0x1b, 0x66, 0x4d, - 0x85, 0x3d, 0x4f, 0x1f, 0x13, 0xbc, 0x89, 0xd3, 0xfb, 0x13, 0x6, 0xe, - 0x57, 0xa0, 0x76, 0xf8, 0x4a, 0xeb, 0x2b, 0xf7, 0x0, 0x12, 0x7a, 0xf7, - 0x20, 0xf7, 0xaf, 0xf7, 0x20, 0x13, 0xb8, 0xcc, 0x16, 0xf7, 0x20, 0xf7, - 0x8f, 0x6, 0xe3, 0x94, 0xee, 0xf6, 0xe0, 0x8b, 0x28, 0x33, 0x1e, 0xfb, - 0x8f, 0xf7, 0x20, 0xf7, 0x8f, 0x7, 0xf7, 0x18, 0x72, 0xf7, 0x37, 0xfb, - 0x2b, 0x55, 0x48, 0x78, 0x43, 0x57, 0x1e, 0x13, 0xd8, 0x89, 0xda, 0xfb, - 0x16, 0x6, 0xe, 0x57, 0x7d, 0xf7, 0x8, 0xf7, 0xdc, 0xf7, 0x8, 0x1, - 0xac, 0xf7, 0x23, 0xf7, 0x95, 0xf7, 0x23, 0x3, 0xad, 0xf7, 0xa1, 0x15, - 0xfb, 0x8e, 0xf7, 0x50, 0x6a, 0xde, 0xf7, 0x3e, 0xf2, 0xf7, 0x1a, 0xf7, - 0x29, 0xf7, 0x1c, 0x32, 0xf7, 0x21, 0xfb, 0x4c, 0xfb, 0x4f, 0x37, 0xfb, - 0x2a, 0xfb, 0x13, 0x1e, 0xf7, 0x23, 0x16, 0xf7, 0x5, 0xc8, 0xbb, 0xce, - 0xd3, 0xc5, 0x56, 0xfb, 0x0, 0xfb, 0xc, 0x49, 0x5c, 0x4b, 0x49, 0x4d, - 0xbf, 0xf7, 0x7, 0x1e, 0xe, 0x5a, 0xa, 0xe5, 0xf7, 0x17, 0xf7, 0x60, - 0xf7, 0x24, 0x13, 0xec, 0xf7, 0x5e, 0xc6, 0x15, 0x73, 0x9f, 0xbb, 0x59, - 0xe1, 0x1b, 0xf7, 0x9, 0xf4, 0xdf, 0xf7, 0x51, 0xf7, 0x55, 0x20, 0xea, - 0xfb, 0x6, 0x6b, 0x3f, 0x80, 0x3b, 0x55, 0x1f, 0x89, 0x6, 0x13, 0xdc, - 0xda, 0xfb, 0x17, 0xfd, 0x79, 0xf7, 0x20, 0x7, 0x8a, 0xf8, 0x65, 0x15, - 0x13, 0xec, 0xee, 0xab, 0xd7, 0xe5, 0xbb, 0xca, 0x61, 0xfb, 0x19, 0x4f, - 0x7e, 0x22, 0x24, 0x4a, 0x57, 0xc3, 0xf7, 0x1, 0x1e, 0xe, 0x5a, 0xa, - 0xad, 0xf7, 0x24, 0xf7, 0x7e, 0xf7, 0x20, 0xfb, 0x17, 0xf7, 0x17, 0x13, - 0xdc, 0xf8, 0x30, 0xc6, 0x15, 0xfb, 0x9e, 0xf7, 0x20, 0xf9, 0x79, 0x7, - 0x13, 0xda, 0xfb, 0x17, 0x3c, 0x89, 0x6, 0x13, 0xec, 0xdb, 0x55, 0x3e, - 0x96, 0x6b, 0x1b, 0xfb, 0x7, 0x20, 0x2c, 0xfb, 0x55, 0xfb, 0x51, 0xf4, - 0x37, 0xf7, 0xa, 0xe1, 0xbb, 0xbd, 0xa3, 0xa0, 0x1f, 0xfb, 0x7e, 0xf7, - 0x5b, 0x15, 0xf7, 0x19, 0xcb, 0xb5, 0xbb, 0xe5, 0xac, 0x3f, 0x28, 0xfb, - 0x1, 0x57, 0x53, 0x49, 0x24, 0x7d, 0xf4, 0xc7, 0x1e, 0xe, 0xfb, 0xa6, - 0xa0, 0x76, 0xf8, 0x37, 0xf7, 0x7, 0xfb, 0x7, 0xf7, 0x13, 0x12, 0xb9, - 0xf7, 0x12, 0xf7, 0x35, 0xb3, 0x13, 0xb8, 0xcb, 0x16, 0xf7, 0x12, 0xf7, - 0x39, 0x6, 0xf7, 0x28, 0x96, 0xf5, 0xdd, 0xa3, 0x9b, 0x7c, 0x84, 0x95, - 0x1e, 0xb3, 0xf7, 0xc, 0x5, 0x9a, 0x75, 0x62, 0x99, 0x70, 0x1b, 0x55, - 0x64, 0x66, 0x58, 0x84, 0x1f, 0x13, 0xd0, 0x89, 0xd7, 0xfb, 0x9, 0x6, - 0xe, 0x20, 0x7d, 0xf0, 0xf7, 0xfa, 0xf0, 0x1, 0xcb, 0xf7, 0x14, 0xf7, - 0x51, 0xf7, 0x1e, 0x3, 0xa9, 0xf7, 0x2b, 0x15, 0xfb, 0x2a, 0x9e, 0xf7, - 0x32, 0x7c, 0xd4, 0x1b, 0xf7, 0x40, 0xce, 0xd7, 0xdf, 0xf7, 0xa, 0x20, - 0xba, 0x2f, 0xa2, 0x1f, 0x66, 0x94, 0x21, 0x99, 0xb6, 0x1a, 0xb7, 0xcf, - 0x8c, 0xa2, 0xa4, 0xc6, 0x89, 0x4c, 0x9c, 0x1e, 0xf7, 0x17, 0xa3, 0x5, - 0xf6, 0x6d, 0x3d, 0xae, 0xfb, 0x10, 0x1b, 0xfb, 0x1, 0xfb, 0x2, 0x62, - 0xfb, 0xf, 0xfb, 0x13, 0xf6, 0x77, 0xf7, 0x32, 0x68, 0x1f, 0xab, 0x84, - 0xae, 0x7b, 0x6c, 0x1a, 0x51, 0x32, 0x8a, 0x7f, 0x5e, 0x58, 0x9a, 0xd2, - 0x7b, 0x1e, 0xe, 0x9a, 0x76, 0xf8, 0x26, 0xf3, 0xf7, 0x44, 0x77, 0x1, - 0xe4, 0xf7, 0x1a, 0x3, 0xf7, 0xc9, 0x99, 0x15, 0x7f, 0xf0, 0x5, 0x46, - 0x71, 0x75, 0x8c, 0xe5, 0x1a, 0xf7, 0x6c, 0xe6, 0xf3, 0x30, 0xf7, 0x44, - 0x7, 0xfb, 0x1a, 0x3e, 0x5, 0x28, 0x4d, 0x23, 0xc9, 0xfb, 0x6c, 0x7, - 0xfb, 0x7, 0x95, 0x44, 0xf7, 0xd, 0x99, 0xbb, 0x8d, 0x9d, 0xb7, 0x1e, - 0xe, 0x57, 0x7d, 0xf7, 0x0, 0x2b, 0xeb, 0xf8, 0x4a, 0x77, 0x12, 0xd5, - 0xf7, 0x1f, 0xf7, 0x55, 0xf7, 0x1f, 0x13, 0x78, 0xf8, 0x34, 0x89, 0x15, - 0xf7, 0x15, 0xf8, 0xaa, 0xfb, 0x1f, 0xfb, 0xbb, 0x6, 0x5c, 0x8d, 0x2b, - 0xfb, 0x7, 0x2f, 0x8f, 0xde, 0xc7, 0x1e, 0xf7, 0xbb, 0xfb, 0x1f, 0xfb, - 0xbb, 0x7, 0x13, 0xb8, 0xfb, 0x37, 0xba, 0x33, 0xf7, 0x14, 0xcf, 0xce, - 0xad, 0xc6, 0xb1, 0x1e, 0x8d, 0x6, 0xe, 0x20, 0x73, 0xa, 0x98, 0xf8, - 0xa6, 0x3, 0xf7, 0x6f, 0x16, 0xf7, 0xd, 0x6, 0xf7, 0x5f, 0xf8, 0xa8, - 0x5, 0xfb, 0x1f, 0x6, 0xfb, 0x11, 0xfb, 0xfd, 0x5, 0x8a, 0x6, 0xfb, - 0xf, 0xf7, 0xfd, 0x5, 0xfb, 0x22, 0x6, 0xe, 0xf7, 0x7, 0x73, 0xa, - 0x95, 0xf9, 0x8b, 0x3, 0xf7, 0x40, 0x16, 0xf7, 0x17, 0x6, 0xe0, 0xf7, - 0xec, 0x5, 0x8d, 0x6, 0xe1, 0xfb, 0xec, 0x5, 0xf7, 0x16, 0x6, 0xf7, - 0x37, 0xf8, 0xa8, 0x5, 0xfb, 0x19, 0x6, 0x2b, 0xfb, 0xf0, 0x6e, 0xa, - 0x38, 0xf7, 0xf0, 0x5, 0xfb, 0x17, 0x6, 0x35, 0xfb, 0xf0, 0x6e, 0xa, - 0x2d, 0xf7, 0xf0, 0x5, 0xfb, 0x18, 0x6, 0xe, 0x20, 0x73, 0xa, 0x9a, - 0xf8, 0xa2, 0x3, 0x9a, 0x16, 0xf7, 0x30, 0x6, 0xf3, 0xf7, 0x3a, 0xf2, - 0xfb, 0x3a, 0x5, 0xf7, 0x37, 0x6, 0xfb, 0x4f, 0xf7, 0xad, 0xf7, 0x3f, - 0xf7, 0x8f, 0x5, 0xfb, 0x30, 0x6, 0x2d, 0xfb, 0x25, 0x32, 0xf7, 0x25, - 0x5, 0xfb, 0x37, 0x6, 0xf7, 0x42, 0xfb, 0x95, 0x5, 0xe, 0x20, 0xfb, - 0x55, 0x76, 0xf9, 0x7e, 0x77, 0x1, 0xb6, 0x2b, 0x15, 0x97, 0xfb, 0x2, - 0x52, 0xa, 0xf7, 0x1, 0xf7, 0x12, 0xc8, 0x1f, 0xf7, 0x4a, 0xf8, 0x93, - 0x78, 0xa, 0xfc, 0xd, 0x6e, 0xa, 0xfb, 0xe, 0xf8, 0xd, 0x40, 0xa, - 0xf7, 0x58, 0xfc, 0xa8, 0x5, 0x29, 0x48, 0xa, 0xe, 0xfb, 0x37, 0x8b, - 0xf7, 0x10, 0xf7, 0xb7, 0xf7, 0x9, 0x1, 0x9f, 0x16, 0xf8, 0x60, 0xf7, - 0x10, 0xfb, 0xae, 0x6, 0xf7, 0x9e, 0xf7, 0xc8, 0x5, 0xef, 0xfc, 0x3d, - 0xfb, 0x9, 0xf7, 0x88, 0x7, 0xfb, 0x9b, 0xfb, 0xc5, 0x5, 0xe, 0x5b, - 0xa, 0xf7, 0x2a, 0xf7, 0xc, 0x14, 0xe0, 0xbb, 0xf7, 0x61, 0x15, 0xe8, - 0x94, 0x3f, 0xfb, 0x4, 0xfb, 0x2f, 0xbd, 0x51, 0xf7, 0x20, 0x1f, 0xa4, - 0xf7, 0x7, 0x6, 0x47, 0x70, 0x8e, 0xcc, 0xf7, 0x4f, 0x78, 0xbc, 0x48, - 0xb3, 0x1f, 0xca, 0xb5, 0xa2, 0xab, 0xf7, 0x5d, 0x1a, 0xcb, 0x9e, 0x90, - 0xd7, 0x1e, 0xf7, 0x7, 0x72, 0x7, 0xfb, 0x52, 0x8b, 0x32, 0xfb, 0x23, - 0xfb, 0x8, 0x7d, 0x56, 0x33, 0x1f, 0xe, 0xfc, 0x13, 0xfb, 0x5a, 0x76, - 0xfa, 0x50, 0x77, 0x1, 0xdf, 0xf7, 0x4, 0x3, 0xdf, 0xfb, 0x6f, 0x15, - 0xf7, 0x4, 0xfa, 0x50, 0x7c, 0xa, 0xe, 0x5b, 0xa, 0xf7, 0xb, 0xf7, - 0xc, 0x14, 0xe0, 0xa3, 0x3a, 0x15, 0xfb, 0x7, 0xa4, 0x7, 0xf7, 0x52, - 0x8b, 0xe4, 0xf7, 0x23, 0xf7, 0x8, 0x92, 0xc0, 0xea, 0x1f, 0xf7, 0x8, - 0x7, 0x29, 0x87, 0xd7, 0xf7, 0x4, 0xf7, 0x2f, 0x59, 0xc5, 0xfb, 0x20, - 0x1f, 0x72, 0xfb, 0x7, 0x6, 0xcf, 0xa6, 0x88, 0x4a, 0xfb, 0x4f, 0x9e, - 0x5a, 0xce, 0x63, 0x1f, 0x4c, 0x61, 0x74, 0x6b, 0xfb, 0x5d, 0x1a, 0x4b, - 0x78, 0x86, 0x3f, 0x1e, 0xe, 0x3c, 0xf7, 0x73, 0xf7, 0xc, 0x1, 0xce, - 0xf8, 0x62, 0x3, 0xc8, 0xf7, 0x37, 0x15, 0xc2, 0xbf, 0xb3, 0x91, 0xa6, - 0x1b, 0xb4, 0xae, 0x7b, 0x7b, 0xae, 0x1f, 0x7d, 0xac, 0xab, 0x7d, 0xb0, - 0x1b, 0xd0, 0xbf, 0xbc, 0x95, 0x94, 0x1f, 0xf7, 0xc, 0x7, 0x4d, 0x53, - 0x56, 0x89, 0x81, 0x1b, 0x72, 0x6b, 0x99, 0x98, 0x69, 0x1f, 0x9b, 0x64, - 0x61, 0x9c, 0x60, 0x1b, 0x76, 0x56, 0x8b, 0x4e, 0x55, 0x1f, 0xe, 0xc6, - 0x8b, 0xf7, 0xb, 0xf7, 0xa4, 0xd5, 0xf7, 0x19, 0xf7, 0xc, 0x1, 0x9f, - 0xf7, 0x93, 0x15, 0xf7, 0x1, 0x6, 0xfb, 0x2e, 0xae, 0xf7, 0x2b, 0x26, - 0xf7, 0x53, 0x1b, 0xcd, 0xc6, 0x95, 0xa0, 0xbc, 0x1f, 0xf7, 0x25, 0x7, - 0x66, 0x5f, 0x51, 0x77, 0x40, 0x1b, 0x28, 0xfb, 0xa, 0xc2, 0xdc, 0x7a, - 0x1f, 0xf8, 0xf, 0x6, 0x9e, 0xd5, 0x5, 0xfc, 0x30, 0x6, 0x9e, 0x89, - 0xa5, 0x8d, 0x9c, 0x1e, 0xf8, 0x3f, 0x6, 0x9f, 0xd5, 0x5, 0xfc, 0x46, - 0x6, 0xdb, 0x9f, 0xf7, 0xb, 0xc0, 0xef, 0x1b, 0xca, 0xba, 0x7e, 0x70, - 0xac, 0x1f, 0xae, 0xf7, 0x17, 0x5, 0x9e, 0x5b, 0x4a, 0x95, 0x4a, 0x1b, - 0xfb, 0x58, 0xfb, 0x21, 0x29, 0xfb, 0x2f, 0x64, 0x1f, 0x2e, 0x6, 0x79, - 0x41, 0x5, 0xee, 0x6, 0x8a, 0x7b, 0x8a, 0x6e, 0x8d, 0x7a, 0x8, 0x3a, - 0x6, 0xe, 0xfc, 0x15, 0xfb, 0x11, 0x76, 0x12, 0xdb, 0xf7, 0x15, 0x48, - 0xce, 0x13, 0xc0, 0xdb, 0x8a, 0x15, 0x13, 0xa0, 0xc9, 0x6, 0x89, 0x43, - 0x5c, 0x7f, 0x73, 0x83, 0xa4, 0x56, 0x18, 0xf7, 0x7, 0x45, 0xa, 0x7, - 0x13, 0xc0, 0xfb, 0x15, 0x6, 0xe, 0x20, 0xfb, 0x66, 0xf7, 0xa, 0xf8, - 0x91, 0xf4, 0xdc, 0xf7, 0x5, 0x1, 0x9b, 0x3b, 0x15, 0x71, 0xfb, 0x3, - 0x5, 0x7d, 0xb5, 0xa8, 0x86, 0xa9, 0x1b, 0xf7, 0xb, 0xb6, 0xd4, 0xd9, - 0x98, 0x1f, 0xd9, 0xf8, 0x70, 0x5, 0xe7, 0x6, 0x9c, 0xf4, 0x5, 0x2d, - 0x6, 0x90, 0xa7, 0x5, 0xb1, 0x92, 0x90, 0xa8, 0xb7, 0x1b, 0xa7, 0xa9, - 0x81, 0x87, 0x98, 0x1f, 0xa4, 0xf7, 0x5, 0x5, 0x9e, 0x52, 0x6f, 0x8d, - 0x80, 0x1b, 0xfb, 0x14, 0x67, 0x48, 0xfb, 0x28, 0x73, 0x1f, 0x30, 0x6, - 0x7a, 0x22, 0x5, 0xe6, 0x6, 0x47, 0xfc, 0x3c, 0x5, 0x4f, 0x82, 0x87, - 0x72, 0x60, 0x1b, 0x77, 0x7b, 0x8d, 0x95, 0x64, 0x1f, 0xe, 0xfb, 0x37, - 0xfb, 0x11, 0x76, 0xf7, 0x26, 0xf7, 0x13, 0x12, 0xd7, 0xf7, 0x1a, 0x46, - 0xd0, 0xe7, 0xf7, 0x1a, 0x45, 0xd1, 0x13, 0xe8, 0xf7, 0xc2, 0x16, 0x13, - 0xe4, 0xcb, 0x6, 0x98, 0xa, 0x72, 0x83, 0xa5, 0x56, 0x18, 0xf7, 0xc, - 0x61, 0xa, 0xfb, 0x76, 0xfb, 0x13, 0x15, 0x13, 0xd8, 0xcc, 0x6, 0x98, - 0xa, 0x71, 0x83, 0xa6, 0x56, 0x18, 0xf7, 0xb, 0x61, 0xa, 0xe, 0xf7, - 0xe5, 0x8b, 0x84, 0xa, 0xe7, 0xf7, 0x1f, 0xf7, 0x5b, 0xf7, 0x20, 0xf7, - 0x5b, 0xf7, 0x1f, 0x14, 0x70, 0xf9, 0x95, 0x16, 0xf7, 0x1f, 0xf7, 0x26, - 0xfb, 0x1f, 0x6, 0xfd, 0x39, 0xfb, 0x26, 0x15, 0xf7, 0x1f, 0xf7, 0x26, - 0xfb, 0x1f, 0x6, 0xf7, 0xe6, 0xfb, 0x26, 0x15, 0xf7, 0x20, 0xf7, 0x26, - 0x6d, 0xa, 0x20, 0xfb, 0x2a, 0x76, 0xf8, 0xda, 0xf7, 0x7, 0xf7, 0x54, - 0x77, 0x1, 0xf7, 0x6b, 0xf7, 0x15, 0x3, 0xf7, 0x6b, 0xfb, 0x3f, 0x15, - 0xf7, 0x15, 0xf8, 0xda, 0x74, 0xa, 0xf7, 0x54, 0xfb, 0x15, 0xfb, 0x54, - 0xfb, 0x47, 0xfb, 0x7, 0xf7, 0x47, 0x6, 0xe, 0x20, 0xfb, 0x2a, 0x76, - 0xf7, 0x3e, 0xf7, 0x7, 0xf7, 0xd3, 0xf7, 0x7, 0xf7, 0x3e, 0x77, 0x1, - 0xf7, 0x6b, 0xf7, 0x15, 0x3, 0xaf, 0x8a, 0x15, 0xf7, 0x47, 0xfb, 0x3e, - 0xf7, 0x15, 0xf7, 0x3e, 0x74, 0xa, 0xf7, 0xd3, 0x74, 0xa, 0xf7, 0x3e, - 0xfb, 0x15, 0xfb, 0x3e, 0xfb, 0x47, 0xfb, 0x7, 0xf7, 0x47, 0xfb, 0xd3, - 0xfb, 0x47, 0x6, 0xe, 0xf9, 0x39, 0xd4, 0x1, 0x81, 0xf8, 0xf0, 0x95, - 0xa, 0xd4, 0xc8, 0x42, 0x77, 0xa, 0x83, 0xa, 0xfb, 0x1b, 0x6, 0xe, - 0xf7, 0xe5, 0x78, 0xd4, 0x5a, 0x76, 0xf7, 0xab, 0xd4, 0x99, 0xd4, 0xf7, - 0x64, 0xd4, 0x91, 0x77, 0x12, 0x88, 0xeb, 0xe6, 0xeb, 0xf7, 0x1, 0xeb, - 0xe7, 0xea, 0xba, 0xeb, 0xe6, 0xeb, 0x13, 0x7b, 0xf0, 0xe8, 0xf8, 0xa8, - 0x15, 0xcc, 0x93, 0xad, 0xb0, 0xaf, 0x96, 0x6b, 0x48, 0x8a, 0x1e, 0x48, - 0x8a, 0x82, 0x61, 0x67, 0x1b, 0x66, 0x83, 0xb7, 0xcc, 0x1f, 0x2b, 0x16, - 0x51, 0x92, 0xfb, 0x10, 0xf7, 0x1a, 0xf7, 0x18, 0x95, 0xf7, 0x10, 0xc5, - 0xd1, 0x72, 0xf1, 0xfb, 0x9, 0xfb, 0x10, 0x7a, 0xfb, 0x5, 0x50, 0x1e, - 0xf7, 0x1d, 0xfc, 0xb8, 0x15, 0xec, 0x6, 0x13, 0x77, 0xf0, 0xf7, 0xc1, - 0xf9, 0x6a, 0x5, 0x2a, 0x6, 0x5d, 0xfc, 0xb2, 0x15, 0x13, 0xbb, 0xf0, - 0x50, 0x91, 0xfb, 0x14, 0xf7, 0x1b, 0xf7, 0x1c, 0x91, 0xf7, 0x1f, 0xbb, - 0xd0, 0x72, 0xee, 0xfb, 0x9, 0x71, 0xa, 0x94, 0xa9, 0xaf, 0xb2, 0x93, - 0x6d, 0x4a, 0x48, 0x83, 0x5d, 0x64, 0x67, 0x82, 0xb9, 0xce, 0x1e, 0xf7, - 0x7e, 0x16, 0x50, 0x92, 0xfb, 0x14, 0xf7, 0x1a, 0xf7, 0x1b, 0x92, 0xf7, - 0x1f, 0xbb, 0xd0, 0x73, 0xee, 0xfb, 0xa, 0x71, 0xa, 0x93, 0xa9, 0xb0, - 0xaf, 0x95, 0x6d, 0x4a, 0x4e, 0x85, 0x56, 0x63, 0x5e, 0x8b, 0xc9, 0xbf, - 0x1e, 0xe, 0x8f, 0x78, 0xf7, 0xe, 0xf8, 0x8c, 0xf7, 0xb, 0x1, 0xcc, - 0xf7, 0x21, 0xf7, 0xa9, 0xf7, 0x26, 0x3, 0xb2, 0xf7, 0x78, 0x15, 0xfb, - 0x84, 0x72, 0xa, 0xbd, 0xf7, 0x40, 0xf7, 0x45, 0xfb, 0x2a, 0xae, 0xfb, - 0x3, 0xa5, 0x1f, 0xfb, 0x9, 0xa7, 0x5e, 0x95, 0xb9, 0x1a, 0xc5, 0xda, - 0xa3, 0xb6, 0xf7, 0x8, 0x96, 0x47, 0x66, 0x91, 0x1e, 0xf7, 0x28, 0x91, - 0x5, 0xf7, 0x37, 0x85, 0xfb, 0x18, 0xc2, 0xfb, 0x23, 0x1b, 0xfb, 0x69, - 0x59, 0xfb, 0xe, 0x3c, 0xfb, 0x33, 0xf7, 0x35, 0x64, 0xd3, 0x78, 0x1f, - 0xf7, 0x1a, 0x6b, 0xbe, 0x7e, 0x4f, 0x1a, 0x5c, 0x61, 0x56, 0x25, 0xfb, - 0x18, 0x78, 0xf0, 0xb0, 0x84, 0x1e, 0xe3, 0xf8, 0xbd, 0x15, 0xf7, 0x14, - 0x6, 0xf4, 0xf7, 0x22, 0x5, 0xfb, 0x5, 0x6, 0x56, 0x41, 0x51, 0xd5, - 0x5, 0x7c, 0xa, 0xe, 0x5d, 0xa, 0xf7, 0x49, 0xd7, 0x15, 0xd0, 0x6, - 0x39, 0xf7, 0x64, 0xdd, 0xf7, 0x5c, 0x5, 0x46, 0x6, 0x29, 0xfb, 0x5c, - 0x5, 0xe, 0xf7, 0xe5, 0x78, 0xf7, 0x13, 0xfb, 0x7, 0xf7, 0x10, 0xf7, - 0x59, 0xf7, 0x10, 0xf7, 0x37, 0xf7, 0x10, 0xfb, 0x7, 0xf7, 0x13, 0x12, - 0xb0, 0xf7, 0x27, 0xf7, 0xcd, 0xf7, 0x19, 0x13, 0x76, 0xf8, 0x8e, 0x84, - 0x15, 0xf8, 0x5b, 0xf7, 0x10, 0xfb, 0xdf, 0xf7, 0x59, 0xf7, 0xad, 0xf7, - 0x10, 0xfb, 0xad, 0xf7, 0x37, 0xf7, 0xd1, 0xf7, 0x10, 0xfc, 0x4d, 0x3a, - 0x89, 0x6, 0x13, 0xae, 0xc2, 0x64, 0x5e, 0xb1, 0x37, 0x1b, 0xfb, 0x48, - 0xfb, 0xb, 0xfb, 0x26, 0xfb, 0x71, 0xfb, 0x7c, 0xeb, 0xfb, 0x31, 0xf7, - 0x55, 0xc0, 0xdb, 0x99, 0xdf, 0xba, 0x1f, 0x13, 0x6e, 0xfb, 0xd6, 0xf7, - 0xb7, 0x15, 0xf7, 0x21, 0xaf, 0xee, 0xf7, 0x8, 0xf7, 0x0, 0xc0, 0x3c, - 0xfb, 0x35, 0x1e, 0x13, 0xb6, 0xfb, 0x5b, 0x3d, 0x4c, 0x2e, 0x29, 0x5f, - 0xcf, 0xf7, 0x56, 0x1e, 0xe, 0xfc, 0x15, 0xf8, 0x6f, 0x76, 0xf7, 0xa5, - 0x77, 0x12, 0xd0, 0xf7, 0x15, 0x17, 0xd0, 0xf8, 0x5a, 0x15, 0xf7, 0x15, - 0xf7, 0x10, 0x6, 0x13, 0xe0, 0x4d, 0x6, 0x8d, 0xd4, 0xba, 0x9a, 0xa3, - 0x93, 0x72, 0xc0, 0x18, 0xfb, 0x7, 0x62, 0x8b, 0x35, 0x51, 0x1a, 0xe, - 0xfc, 0x15, 0xf8, 0x66, 0x76, 0xf7, 0xa5, 0x77, 0x12, 0xdb, 0xf7, 0x15, - 0x48, 0xce, 0x13, 0xe0, 0xe9, 0xf8, 0x51, 0x15, 0xf7, 0x7, 0x45, 0xa, - 0xfb, 0x15, 0xfb, 0x13, 0x7, 0x13, 0xd0, 0xc9, 0x6, 0x89, 0x42, 0x5c, - 0x7f, 0x73, 0x83, 0x8, 0xe, 0xfb, 0x37, 0xf8, 0x5a, 0xf7, 0x10, 0xf7, - 0x29, 0x77, 0x12, 0xcb, 0xd1, 0x45, 0xf7, 0x1a, 0xe7, 0xd0, 0x46, 0xf7, - 0x1a, 0x13, 0xd8, 0xcb, 0xf8, 0x5a, 0x15, 0xf7, 0x1a, 0xf7, 0x10, 0x6, - 0x13, 0xd4, 0x4b, 0x6, 0x8d, 0xd4, 0xbc, 0x9a, 0xa4, 0x93, 0x71, 0xc0, - 0x18, 0xfb, 0xc, 0x62, 0x8b, 0x34, 0x52, 0x1a, 0xf7, 0x76, 0x33, 0x15, - 0xf7, 0x1a, 0xf7, 0x10, 0x6, 0x13, 0xe4, 0x4a, 0x6, 0x8d, 0xd4, 0xbc, - 0x9a, 0xa5, 0x93, 0x70, 0xc0, 0x18, 0xfb, 0xb, 0x62, 0x8b, 0x34, 0x52, - 0x1a, 0xe, 0xfb, 0x37, 0xf8, 0x66, 0x76, 0xf7, 0x26, 0xf7, 0x13, 0x1, - 0xd7, 0xf7, 0x1a, 0xe7, 0xf7, 0x1a, 0x3, 0xf7, 0xd0, 0xf8, 0x51, 0x15, - 0xf7, 0xc, 0x45, 0xa, 0xfb, 0x1a, 0xfb, 0x13, 0xcb, 0x7, 0x98, 0xa, - 0x72, 0x83, 0x8, 0xfb, 0x5b, 0x56, 0x15, 0xf7, 0xb, 0x45, 0xa, 0xfb, - 0x1a, 0xfb, 0x13, 0xcc, 0x7, 0x98, 0xa, 0x71, 0x83, 0x8, 0xe, 0xfb, - 0xcd, 0xf7, 0x6b, 0x76, 0xf7, 0xde, 0x77, 0x1, 0x95, 0xf7, 0xde, 0x3, - 0x95, 0xf7, 0xfb, 0x15, 0x30, 0xd5, 0x41, 0xe5, 0xe6, 0xd6, 0xd4, 0xe7, - 0xe8, 0x40, 0xd3, 0x30, 0x30, 0x42, 0x42, 0x2f, 0x1e, 0xe, 0x20, 0xf7, - 0x77, 0xf5, 0x1, 0xf7, 0x77, 0x4, 0xf8, 0xc0, 0xf5, 0xfc, 0xc0, 0x6, - 0xe, 0xf7, 0xe5, 0xf7, 0x77, 0xf5, 0x1, 0xf7, 0x77, 0x4, 0xfa, 0x7c, - 0xf5, 0xfe, 0x7c, 0x6, 0xe, 0xf8, 0xf8, 0xf7, 0x11, 0x21, 0x76, 0xb7, - 0xde, 0x8a, 0x77, 0x12, 0x13, 0x60, 0x7a, 0xf8, 0xf6, 0x15, 0xcf, 0x65, - 0xa, 0xab, 0xaf, 0x1b, 0xab, 0xa6, 0x81, 0x80, 0xa6, 0x1f, 0x13, 0x80, - 0x81, 0xa6, 0xa5, 0x80, 0xa8, 0x1b, 0xe9, 0x8b, 0xee, 0xa5, 0x1f, 0x46, - 0x7a, 0xa, 0x6d, 0x66, 0x1b, 0x7f, 0x71, 0x95, 0x96, 0x6d, 0x1f, 0x13, - 0x50, 0x96, 0x6d, 0x69, 0x96, 0x71, 0x1b, 0x44, 0x71, 0x59, 0x3f, 0x1f, - 0xe, 0xf7, 0xe5, 0xf7, 0xdb, 0x76, 0xf7, 0xe7, 0xd4, 0x1, 0xf7, 0x5b, - 0xe3, 0xf7, 0x54, 0xdf, 0xf7, 0xca, 0xde, 0x3, 0xf7, 0x5b, 0xf7, 0xc6, - 0x15, 0xe3, 0xf7, 0xe7, 0xf7, 0x2b, 0xd4, 0xfc, 0x1e, 0x42, 0xf7, 0x2f, - 0x6, 0xf7, 0xac, 0xfb, 0xe7, 0x15, 0xdf, 0xf7, 0xdc, 0x8d, 0x6, 0xf7, - 0x5, 0xfb, 0xdc, 0x5, 0xda, 0x6, 0xf7, 0x5, 0xf7, 0xdc, 0x5, 0x8e, - 0xfb, 0xdc, 0xde, 0xf8, 0x30, 0xfb, 0x1e, 0x6, 0x28, 0xfb, 0xaf, 0x6e, - 0xa, 0x27, 0xf7, 0xaf, 0x5, 0x81, 0xa, 0x20, 0x7d, 0xed, 0xf8, 0xa1, - 0xf7, 0x21, 0x1, 0xbc, 0xf7, 0x15, 0xf7, 0x5f, 0xf7, 0x1e, 0x3, 0xa9, - 0xf7, 0x26, 0x15, 0xfb, 0x1c, 0x9e, 0xf7, 0x33, 0x73, 0xd4, 0x1b, 0xf7, - 0x40, 0xcd, 0xe8, 0xdc, 0xf7, 0x6, 0x22, 0xa6, 0x2e, 0xa1, 0x1f, 0x66, - 0x94, 0x21, 0x98, 0xb5, 0x1a, 0xb5, 0xd2, 0x8c, 0xa2, 0xa4, 0xc3, 0x89, - 0x4e, 0x9c, 0x1e, 0xf7, 0x18, 0xa3, 0x5, 0xf2, 0x6d, 0x3d, 0xad, 0xfb, - 0x11, 0x1b, 0xfb, 0x2, 0xfb, 0x2, 0x63, 0xfb, 0xb, 0xfb, 0xf, 0xf2, - 0x75, 0xf7, 0x33, 0x69, 0x1f, 0xab, 0x84, 0xb1, 0x7f, 0x6d, 0x1a, 0x53, - 0x33, 0x8a, 0x7f, 0x5e, 0x58, 0x99, 0xd0, 0x7a, 0x1e, 0xb5, 0xf8, 0x4e, - 0x15, 0xf7, 0x14, 0x6, 0xf3, 0xf7, 0x21, 0x5, 0x7c, 0xa, 0x56, 0x42, - 0x51, 0xd4, 0x5, 0xfb, 0x3, 0x6, 0xe, 0x5d, 0xa, 0xde, 0xd7, 0x15, - 0xcf, 0x6, 0xee, 0xf7, 0x5f, 0x28, 0xf7, 0x61, 0x5, 0x47, 0x6, 0xdc, - 0xfb, 0x61, 0x5, 0xe, 0xf7, 0xad, 0x7d, 0xf7, 0x0, 0xfb, 0x0, 0xf7, - 0x8, 0xf7, 0xf, 0xe4, 0xf7, 0x8, 0xf7, 0x8, 0x24, 0xf2, 0x12, 0xad, - 0xf7, 0x24, 0xf7, 0x8b, 0xf7, 0x1f, 0x13, 0xb6, 0xf8, 0x7c, 0xc7, 0x15, - 0x41, 0xd4, 0xe3, 0x8b, 0x9c, 0x1b, 0xe4, 0xf7, 0x3, 0xb1, 0xf7, 0x10, - 0xb2, 0x1f, 0xfb, 0x1c, 0xa2, 0x5, 0x6f, 0x81, 0x70, 0x5a, 0x49, 0x1b, - 0x4b, 0x6a, 0xbb, 0xde, 0x86, 0x1f, 0xf7, 0xf0, 0x6, 0xf7, 0x82, 0x29, - 0xde, 0xfb, 0x28, 0xfb, 0x0, 0x57, 0x52, 0x7a, 0x7a, 0x1e, 0xd0, 0x46, - 0x35, 0x90, 0x6c, 0x1b, 0xfb, 0x4c, 0x36, 0xfb, 0x18, 0xfb, 0x24, 0xfb, - 0x20, 0xe7, 0xfb, 0x24, 0xf7, 0x45, 0xef, 0xc5, 0xbc, 0xa4, 0xa6, 0x1f, - 0xfb, 0xca, 0xf7, 0x66, 0x15, 0xf7, 0xc, 0xc0, 0xb3, 0xd3, 0xce, 0xc2, - 0x53, 0x23, 0x1e, 0x13, 0x6e, 0xfb, 0x2c, 0x2e, 0x7b, 0x6e, 0x2c, 0x6d, - 0xf7, 0x8, 0xbf, 0x1e, 0xf8, 0x17, 0xb7, 0x15, 0xa6, 0x8d, 0x91, 0xf1, - 0xe8, 0x1b, 0xf0, 0x94, 0xfb, 0x0, 0x76, 0x8c, 0x1f, 0xe, 0x8f, 0xa0, - 0x76, 0xf9, 0xb2, 0xf7, 0x9, 0x12, 0xf7, 0x45, 0xf7, 0x5, 0x72, 0xf7, - 0x1d, 0x73, 0xf7, 0x5, 0x13, 0xd0, 0x70, 0xa, 0xf8, 0x33, 0x4f, 0xa, - 0xfc, 0x32, 0x5, 0x13, 0xe8, 0x33, 0xf8, 0x85, 0x8b, 0xa, 0xf7, 0x5d, - 0xfb, 0x9, 0x8b, 0xa, 0xe, 0xfb, 0x39, 0x76, 0xf8, 0xd9, 0xf7, 0x1d, - 0x12, 0xe5, 0xf7, 0x2e, 0xfb, 0x28, 0xf7, 0x22, 0x13, 0xd0, 0xeb, 0xf8, - 0x1f, 0x15, 0xf7, 0x22, 0xf7, 0x1d, 0xfb, 0x22, 0x6, 0x13, 0xe0, 0x85, - 0xfc, 0xba, 0x15, 0xfb, 0x3c, 0xf7, 0x2e, 0xf7, 0x3c, 0x7, 0x65, 0xf8, - 0x0, 0x5, 0x38, 0x6, 0xe, 0x20, 0x2a, 0x76, 0xf3, 0xf7, 0x1, 0xf7, - 0xcf, 0xf5, 0xf7, 0x4, 0x77, 0x1, 0xad, 0xf7, 0x1a, 0x3, 0xf7, 0x42, - 0x90, 0x15, 0x6c, 0x21, 0xc6, 0x7a, 0xab, 0xf7, 0x0, 0x5, 0x89, 0x94, - 0x9b, 0x89, 0xa4, 0x1b, 0xf7, 0x18, 0xdb, 0xc8, 0xf7, 0xe, 0xa7, 0x1f, - 0xfb, 0x1b, 0xa2, 0x5, 0x6e, 0x86, 0x77, 0x47, 0x3b, 0x1b, 0x7f, 0x8a, - 0x8c, 0x8c, 0x87, 0x1f, 0xe5, 0xf7, 0xb4, 0x9d, 0x78, 0x90, 0x74, 0x8d, - 0x7f, 0x19, 0xf7, 0x1b, 0xa2, 0x70, 0xe8, 0x58, 0xad, 0x5c, 0x9d, 0x19, - 0xb2, 0xf7, 0x4, 0x4f, 0x9c, 0x64, 0xfb, 0x7, 0x5, 0x8c, 0x81, 0x7d, - 0x8d, 0x75, 0x1b, 0xfb, 0x62, 0x5d, 0xfb, 0x35, 0x25, 0x3a, 0xb7, 0xfb, - 0x25, 0xeb, 0x75, 0x1f, 0xb1, 0xf7, 0xc, 0x15, 0x67, 0xb4, 0x83, 0xce, - 0x9f, 0x1a, 0xab, 0x92, 0xf7, 0x1c, 0xf7, 0x11, 0x80, 0x1e, 0xe, 0x20, - 0x7b, 0xf7, 0xf, 0xf7, 0x50, 0xf7, 0x1, 0xf7, 0x62, 0xf7, 0x0, 0x1, - 0xdd, 0xf7, 0x14, 0x3, 0xd9, 0x7b, 0x15, 0x9b, 0xa2, 0xb0, 0xa5, 0xc3, - 0x1b, 0xab, 0xb8, 0x82, 0x81, 0xb4, 0x1f, 0x80, 0xb9, 0xb4, 0x7f, 0x97, - 0x1b, 0xbc, 0xbd, 0x9d, 0x9c, 0xaa, 0x1f, 0x58, 0xf7, 0x7, 0x5, 0x81, - 0x74, 0x67, 0x7a, 0x66, 0x1b, 0x72, 0x79, 0x92, 0x92, 0x75, 0x1f, 0x91, - 0x77, 0x73, 0x91, 0x67, 0x1b, 0x83, 0x6c, 0x8b, 0x7d, 0x73, 0x1f, 0x89, - 0x8d, 0xb1, 0xb4, 0xb4, 0xbd, 0x83, 0xde, 0x19, 0xf7, 0x11, 0xf7, 0x1, - 0xfb, 0x27, 0x6, 0x82, 0xa4, 0x7d, 0xc2, 0xae, 0x1a, 0xb2, 0xa5, 0xbf, - 0xc8, 0xd4, 0x98, 0x42, 0x73, 0x90, 0x1e, 0xf7, 0x13, 0x9e, 0x5, 0xf7, - 0x3f, 0x73, 0xfb, 0x1b, 0x9a, 0x50, 0x1b, 0xfb, 0x1c, 0x3c, 0x2e, 0x22, - 0x7e, 0x8c, 0x5a, 0x9d, 0x55, 0x1f, 0x42, 0xfb, 0x1, 0xec, 0x6, 0x98, - 0x3d, 0x5b, 0x45, 0x4d, 0x5d, 0x8, 0xe, 0x20, 0xec, 0x76, 0xb5, 0xf7, - 0x16, 0xf7, 0x6c, 0xf7, 0x16, 0xb5, 0x77, 0x1, 0xb2, 0xf7, 0x17, 0xf7, - 0x6e, 0xf7, 0x16, 0x3, 0xe6, 0xd8, 0x15, 0xd2, 0xd2, 0x5, 0x78, 0xae, - 0xb3, 0x80, 0xb4, 0x1b, 0xb7, 0xb5, 0x97, 0x9e, 0xaa, 0x1f, 0xd5, 0x42, - 0xe5, 0xe6, 0x43, 0xd3, 0x5, 0x9e, 0xae, 0x97, 0xb3, 0xb5, 0x1a, 0xab, - 0x83, 0xb5, 0x74, 0xb6, 0x1e, 0xd3, 0xd3, 0x30, 0xe6, 0x42, 0x42, 0x5, - 0x95, 0x78, 0x66, 0xa0, 0x4e, 0x1b, 0x4e, 0x63, 0x76, 0x81, 0x7a, 0x1f, - 0x42, 0xd4, 0x31, 0x2b, 0xd2, 0x46, 0x5, 0x78, 0x68, 0x81, 0x64, 0x62, - 0x1a, 0x71, 0x8f, 0x60, 0xa6, 0x5b, 0x1e, 0x44, 0x45, 0x5, 0xf7, 0x3f, - 0xf7, 0x4f, 0x15, 0xc7, 0xbb, 0xbb, 0xc7, 0xc7, 0xbd, 0x5b, 0x4f, 0x4f, - 0x59, 0x5b, 0x4f, 0x4f, 0x5b, 0xbb, 0xc7, 0x1e, 0xe, 0x20, 0xa0, 0x76, - 0xf9, 0x4e, 0x77, 0x1, 0xf7, 0x61, 0xf7, 0x23, 0x3, 0x9b, 0xf7, 0x2a, - 0x15, 0xf7, 0x51, 0xfb, 0x2a, 0xf7, 0x23, 0xf7, 0x2a, 0xf7, 0x54, 0xf5, - 0xfb, 0x54, 0xd0, 0xf7, 0x54, 0xf5, 0xfb, 0xa, 0x6, 0xf7, 0x23, 0xf7, - 0x9f, 0x96, 0xa, 0xfb, 0x16, 0xfb, 0xa0, 0x6e, 0xa, 0xfb, 0x14, 0xf7, - 0xa0, 0x96, 0xa, 0xf7, 0x22, 0xfb, 0x9f, 0x5, 0xfb, 0x9, 0x21, 0xf7, - 0x51, 0x46, 0xfb, 0x51, 0x6, 0xe, 0xfc, 0x13, 0x8d, 0x76, 0xf9, 0x88, - 0x77, 0x1, 0xdf, 0xf7, 0x4, 0x3, 0xdf, 0x78, 0x15, 0xf7, 0x4, 0xf7, - 0xcb, 0x7c, 0xa, 0xf7, 0x1b, 0x4, 0xf7, 0x4, 0xf7, 0xca, 0x7c, 0xa, - 0xe, 0x20, 0xfb, 0x4c, 0xf1, 0xf9, 0x57, 0xf1, 0x12, 0xad, 0xf7, 0x10, - 0x38, 0xf7, 0x1c, 0xf7, 0x27, 0xf7, 0x1a, 0x32, 0xf7, 0xb, 0x13, 0xe8, - 0xc8, 0x7f, 0x15, 0xfb, 0x7, 0x9b, 0xe6, 0x52, 0xf7, 0x8, 0x1b, 0xf7, - 0x2d, 0xc2, 0xe3, 0xd7, 0xaf, 0x7e, 0xb7, 0x5e, 0xb5, 0x1f, 0x13, 0xd4, - 0xa9, 0x9e, 0xc5, 0xb7, 0xe0, 0x1a, 0xd0, 0x67, 0xc0, 0x23, 0xcd, 0x1e, - 0x57, 0xab, 0xfb, 0xb, 0xcb, 0xba, 0x1a, 0x9f, 0x95, 0xa3, 0xbb, 0xba, - 0xaa, 0x71, 0x5d, 0x8d, 0x1e, 0xf7, 0x19, 0x9a, 0x5, 0xc5, 0x83, 0x60, - 0xf0, 0xfb, 0x36, 0x1b, 0xfb, 0xe, 0x43, 0x49, 0x35, 0x53, 0xad, 0x67, - 0x99, 0x7c, 0x1f, 0x13, 0xe8, 0x44, 0x61, 0x79, 0x48, 0x60, 0x1a, 0x24, - 0xb6, 0x6d, 0xf7, 0x1e, 0x36, 0x1e, 0xbd, 0x6c, 0xe8, 0x5f, 0x59, 0x1a, - 0x65, 0x63, 0x7a, 0x69, 0x4c, 0x77, 0xb8, 0xb3, 0x83, 0x1e, 0xf7, 0x3c, - 0xf7, 0x30, 0x15, 0xfb, 0x1f, 0xe7, 0x5, 0x61, 0xa8, 0x75, 0xa8, 0xac, - 0x1a, 0xaf, 0xa9, 0xa3, 0x96, 0x90, 0x1e, 0xf7, 0x18, 0x2d, 0x5, 0x13, - 0xe4, 0xb8, 0x6a, 0xa6, 0x78, 0x6b, 0x1a, 0x72, 0x7a, 0x75, 0x72, 0x74, - 0x1e, 0xe, 0xf8, 0xfa, 0xf7, 0x7, 0x1, 0x91, 0xf7, 0x7, 0xe6, 0xf7, - 0x7, 0x3, 0x91, 0x44, 0xa, 0xe, 0xd5, 0x78, 0xd6, 0xe7, 0xd2, 0xf7, - 0xab, 0xd2, 0xe8, 0xd6, 0x1, 0x80, 0xd6, 0xf7, 0xb, 0xe2, 0xf8, 0x28, - 0xd6, 0x3, 0xcb, 0xf7, 0xfb, 0x15, 0xf7, 0x3c, 0xf7, 0x1d, 0xf7, 0x1b, - 0xf7, 0x3d, 0x58, 0xa, 0xfb, 0x3d, 0xfb, 0x1d, 0xf7, 0x1b, 0xf7, 0x3c, - 0x1e, 0xf8, 0x22, 0x53, 0x15, 0x76, 0x84, 0x78, 0x4c, 0x45, 0x1b, 0x5e, - 0x58, 0xad, 0xf5, 0xbd, 0x99, 0xe4, 0xe4, 0xc9, 0x9e, 0x5b, 0x77, 0x92, - 0x1f, 0xdb, 0x9e, 0x5, 0xaf, 0x7e, 0x66, 0xdf, 0xfb, 0xa, 0x1b, 0xfb, - 0x10, 0x49, 0x36, 0xfb, 0x11, 0xfb, 0x2f, 0xeb, 0x53, 0xe2, 0xcc, 0xdc, - 0xa9, 0xed, 0xa8, 0x1f, 0xfc, 0xbc, 0xde, 0x15, 0xfb, 0x65, 0xf7, 0x3e, - 0xfb, 0x3d, 0xf7, 0x67, 0x57, 0xa, 0xfb, 0x67, 0x80, 0xa, 0xfb, 0xb9, - 0xf7, 0xa8, 0xe7, 0xf7, 0xa5, 0xeb, 0x1, 0xa1, 0xef, 0xf7, 0x4, 0xed, - 0x3, 0xf7, 0x93, 0xf7, 0xb3, 0x15, 0xe7, 0x6, 0x7c, 0xaf, 0x8b, 0xa0, - 0xd3, 0x1a, 0xf7, 0x27, 0x7, 0xf0, 0x8b, 0xd4, 0xfb, 0x29, 0x3a, 0x5a, - 0x6b, 0x2f, 0x7a, 0x1e, 0xe6, 0x73, 0x5, 0x8c, 0x8d, 0x8f, 0x8c, 0x8e, - 0x1e, 0xa5, 0x93, 0x93, 0x9d, 0xb1, 0x1b, 0xba, 0x8c, 0x79, 0x5a, 0x8d, - 0x1f, 0x78, 0x83, 0x73, 0x85, 0x79, 0x86, 0x8, 0x35, 0x74, 0x4a, 0x7f, - 0xfb, 0x0, 0x1a, 0x41, 0xb5, 0x4d, 0xd6, 0xc1, 0xaf, 0xae, 0x9e, 0x9a, - 0x1e, 0x8d, 0x80, 0x8e, 0x7b, 0x91, 0x7b, 0x8, 0x76, 0xf7, 0x62, 0x15, - 0x72, 0x7, 0x30, 0x5a, 0x82, 0x7c, 0x69, 0x7d, 0xa4, 0x9e, 0xb3, 0xaa, - 0x9a, 0xbd, 0x97, 0x1e, 0x9f, 0x90, 0x8f, 0x8f, 0x92, 0x90, 0x8, 0xe, - 0x20, 0x5d, 0xa, 0xf8, 0x10, 0xd7, 0x53, 0xa, 0x61, 0xfb, 0x64, 0x53, - 0xa, 0xe, 0x3c, 0xf7, 0x15, 0x76, 0x1, 0xf8, 0x20, 0xf7, 0x13, 0x3, - 0xb3, 0xf7, 0xc6, 0x15, 0xf7, 0xf9, 0xfb, 0x5a, 0xf7, 0x13, 0xf7, 0xcb, - 0xfc, 0x78, 0x6, 0xe, 0x3c, 0xf7, 0x59, 0xf7, 0x4, 0x1, 0xb3, 0xf7, - 0x59, 0x15, 0xf8, 0x8c, 0xf7, 0x4, 0xfc, 0x8c, 0x6, 0xe, 0xd5, 0x78, - 0xd6, 0xf7, 0x9e, 0xca, 0xf7, 0x1, 0xcb, 0xf3, 0xd6, 0x1, 0x80, 0xd6, - 0xf7, 0x19, 0xdc, 0xf7, 0x32, 0xe2, 0xf7, 0x2a, 0xd6, 0x3, 0xf7, 0x59, - 0xf7, 0x31, 0x15, 0xdc, 0xf7, 0x39, 0xab, 0x6, 0xb4, 0x9e, 0x85, 0x2e, - 0xbb, 0x1f, 0xa7, 0x49, 0x5, 0xf0, 0x6, 0x5c, 0xdc, 0x67, 0xc7, 0x7f, - 0x9f, 0x66, 0x99, 0x19, 0x8d, 0x7, 0xdd, 0x96, 0xa5, 0xc3, 0xb8, 0x1a, - 0xf0, 0x34, 0x96, 0xfb, 0x13, 0x1e, 0x7c, 0xa, 0xdc, 0xfb, 0x41, 0x15, - 0xf7, 0x1, 0xac, 0x7, 0xd2, 0xc1, 0x8b, 0x56, 0x53, 0x57, 0x8b, 0x42, - 0x1f, 0xfb, 0x8b, 0x71, 0x15, 0xf7, 0x3c, 0xf7, 0x1d, 0xf7, 0x1b, 0xf7, - 0x3c, 0x58, 0xa, 0xfb, 0x3c, 0xfb, 0x1d, 0xf7, 0x1b, 0xf7, 0x3c, 0x1e, - 0x40, 0x16, 0xfb, 0x65, 0xf7, 0x3e, 0xfb, 0x3d, 0xf7, 0x66, 0x57, 0xa, - 0xfb, 0x66, 0x80, 0xa, 0xf8, 0xf0, 0xd5, 0x1, 0x85, 0xf7, 0xed, 0x3, - 0x85, 0xf8, 0xf0, 0x15, 0xf7, 0xed, 0xd5, 0xfb, 0xed, 0x6, 0xe, 0xfb, - 0x9b, 0xf8, 0x3e, 0xd6, 0xf7, 0x1c, 0xd6, 0x1, 0xc4, 0xd5, 0xf7, 0x1e, - 0xd5, 0x3, 0xc4, 0xf8, 0xcf, 0x15, 0x3b, 0xca, 0x4a, 0xda, 0xda, 0xcc, - 0xcc, 0xdb, 0xdb, 0x4a, 0xc8, 0x3c, 0x3c, 0x4c, 0x4e, 0x3b, 0x1e, 0xd5, - 0x8a, 0x15, 0xb1, 0xaa, 0xa8, 0xb1, 0xb1, 0xaa, 0x6f, 0x64, 0x65, 0x6c, - 0x6c, 0x65, 0x65, 0x6c, 0xaa, 0xb1, 0x1e, 0xe, 0x3c, 0x8b, 0xe6, 0xf7, - 0x42, 0xf7, 0x6, 0xf7, 0x13, 0x90, 0xa, 0x16, 0xf8, 0x8c, 0xe6, 0xfc, - 0x8c, 0x6, 0xf7, 0x50, 0xb7, 0x15, 0xf7, 0x13, 0xf7, 0x16, 0xf7, 0x51, - 0xf7, 0x6, 0xfb, 0x51, 0xf7, 0x13, 0xfb, 0x13, 0xfb, 0x13, 0xfb, 0x50, - 0xfb, 0x6, 0xf7, 0x50, 0x6, 0xe, 0xf7, 0xaf, 0xdc, 0xf7, 0x9d, 0xdc, - 0x1, 0xf7, 0x76, 0xed, 0x3, 0x94, 0xf7, 0xaf, 0x15, 0xf7, 0xcf, 0xdc, - 0xfb, 0x46, 0x6, 0xf7, 0x9, 0xe4, 0xc8, 0xbc, 0xdc, 0x1a, 0xbd, 0x64, - 0xd8, 0xfb, 0x4, 0xfb, 0x21, 0x83, 0x27, 0x67, 0x87, 0x1e, 0xed, 0x82, - 0x5, 0xa7, 0x8d, 0x90, 0xaf, 0xbb, 0x1b, 0x92, 0xb9, 0x8b, 0x5d, 0x67, - 0x73, 0x78, 0x4b, 0x54, 0x1f, 0x28, 0x36, 0x6d, 0x69, 0x44, 0x1a, 0xe, - 0xf7, 0xa3, 0xdd, 0xf7, 0xa7, 0xdd, 0x1, 0xf7, 0x61, 0xee, 0x3, 0x93, - 0xf8, 0x27, 0x15, 0xfb, 0xf, 0x9a, 0xf7, 0x2, 0x82, 0xab, 0x1b, 0xe9, - 0xce, 0xca, 0xd6, 0xbd, 0x70, 0xae, 0x5e, 0x9d, 0x1f, 0xad, 0xa1, 0x9b, - 0xa6, 0xa9, 0x1a, 0xc8, 0x53, 0xc5, 0x34, 0xfb, 0xe, 0x7b, 0x37, 0x63, - 0x82, 0x1e, 0xea, 0x7d, 0x5, 0xa0, 0x8d, 0x8f, 0xae, 0xb9, 0x1b, 0x9e, - 0xa4, 0x83, 0x6e, 0x5c, 0x50, 0x8c, 0x7d, 0x1f, 0x7f, 0x38, 0x5, 0xb8, - 0x9f, 0xc5, 0x79, 0x54, 0x1a, 0x6f, 0x7a, 0x6f, 0x62, 0x57, 0x87, 0xb5, - 0x9d, 0x87, 0x1e, 0xe, 0xf8, 0xf0, 0x84, 0xa, 0xf7, 0x0, 0xf8, 0xf0, - 0x15, 0xed, 0x6, 0xf7, 0x2a, 0x83, 0xa, 0xfb, 0x40, 0x6, 0xe, 0x57, - 0xfb, 0x4e, 0x76, 0xf7, 0x53, 0xf7, 0x5, 0x27, 0xef, 0xf8, 0x47, 0x77, - 0x49, 0xa, 0x13, 0xdc, 0xf7, 0x61, 0xc9, 0x15, 0x8d, 0x6, 0x68, 0x9c, - 0x9e, 0x60, 0xcb, 0x1b, 0xbc, 0xb1, 0xaf, 0xb5, 0xa0, 0x1f, 0x8d, 0x6, - 0x13, 0xbc, 0x4a, 0xf7, 0x14, 0xf8, 0xab, 0xfb, 0x1f, 0xfb, 0x87, 0x7, - 0x3e, 0x87, 0xfb, 0x7, 0x2c, 0x2c, 0x84, 0xf7, 0x8, 0xd9, 0x1e, 0xf7, - 0x85, 0xfb, 0x1f, 0xfd, 0x77, 0xf7, 0x1f, 0x7, 0xe, 0x20, 0xfb, 0x3e, - 0x76, 0xf9, 0x92, 0xf7, 0x11, 0x1, 0xf8, 0x6, 0xf7, 0x6, 0x3, 0xf7, - 0x4a, 0xfb, 0x53, 0x15, 0xf7, 0x7, 0xf9, 0x92, 0xd4, 0xfd, 0x92, 0xf7, - 0x6, 0xf9, 0x92, 0xc2, 0xf7, 0x11, 0xfb, 0xb4, 0x6, 0xfb, 0x2e, 0x22, - 0x5f, 0xfb, 0x2d, 0x5a, 0xa1, 0xfb, 0x27, 0xf7, 0x3c, 0x1f, 0xe, 0xfc, - 0x15, 0xf7, 0x40, 0xf7, 0x36, 0x1, 0xf7, 0x8, 0xf7, 0x36, 0x3, 0xc5, - 0xf7, 0x40, 0x15, 0xf7, 0x36, 0xf7, 0x36, 0xfb, 0x36, 0x6, 0xe, 0xfb, - 0x78, 0xd0, 0xee, 0xc7, 0x1, 0xc6, 0x7c, 0x15, 0x7f, 0x54, 0x5, 0x90, - 0x99, 0xa3, 0x90, 0x9f, 0x1b, 0xba, 0x94, 0x6e, 0x79, 0x69, 0x6e, 0x79, - 0x60, 0x67, 0x71, 0x8e, 0x8f, 0x76, 0x1f, 0x48, 0x7, 0x84, 0xa1, 0xb7, - 0x89, 0x9e, 0x1b, 0xd5, 0xdb, 0xac, 0xe5, 0xd2, 0x57, 0xad, 0x4f, 0x7a, - 0x69, 0x86, 0x81, 0x74, 0x1f, 0xe, 0xf7, 0xc4, 0x76, 0xf8, 0x3f, 0x77, - 0x1, 0xf7, 0x1e, 0xee, 0x3, 0xf7, 0x1e, 0xf7, 0xaf, 0x15, 0xee, 0xf8, - 0x3f, 0x3b, 0x6, 0x6f, 0x42, 0x31, 0x6f, 0x7e, 0x88, 0x8, 0x34, 0x7, - 0xa5, 0x92, 0xa5, 0x90, 0xc7, 0xb5, 0x8, 0xe, 0xfb, 0xbe, 0xf7, 0xa8, - 0xf4, 0xf7, 0x92, 0xf1, 0x1, 0x91, 0xf7, 0x0, 0xf7, 0x1e, 0xf7, 0x0, - 0x3, 0x91, 0xf8, 0x94, 0x15, 0xfb, 0x1a, 0xc7, 0x25, 0xf7, 0x7, 0xf7, - 0x8, 0xca, 0xf0, 0xf7, 0x1b, 0xf7, 0x12, 0x51, 0xee, 0xfb, 0xd, 0xfb, - 0x6, 0x4e, 0x30, 0xfb, 0x1a, 0x1e, 0xf7, 0x0, 0x16, 0xbb, 0x93, 0xd6, - 0xc6, 0xc6, 0x97, 0x4f, 0x4c, 0x54, 0x80, 0x3f, 0x4f, 0x51, 0x82, 0xda, - 0xbf, 0x1e, 0xe, 0x20, 0x5d, 0xa, 0xe3, 0xd7, 0x50, 0xa, 0xcb, 0xfb, - 0x5f, 0x50, 0xa, 0xe, 0xf7, 0x3f, 0x8d, 0x76, 0xa7, 0x76, 0xd0, 0xcf, - 0xf8, 0xdc, 0x77, 0xa0, 0x77, 0x12, 0xa5, 0xf7, 0x57, 0xf8, 0x2c, 0xe1, - 0x13, 0x6e, 0xf8, 0x5b, 0xc4, 0x15, 0xf7, 0x42, 0x46, 0xe1, 0xd0, 0xbe, - 0xcf, 0x58, 0xf7, 0x71, 0x3f, 0x6, 0xfb, 0x4c, 0xfb, 0x72, 0x5, 0xe1, - 0x8c, 0x15, 0xe1, 0xf6, 0x5, 0x8d, 0x20, 0x6, 0x13, 0xae, 0xfc, 0x77, - 0xfb, 0x24, 0x15, 0xd7, 0x6, 0xf8, 0x38, 0xf9, 0x6d, 0x5, 0x3f, 0x6, - 0xfc, 0x48, 0xfb, 0xfa, 0x15, 0xe6, 0x6, 0x13, 0x76, 0xf7, 0xf9, 0x41, - 0x7, 0x72, 0x4e, 0x37, 0x74, 0x7f, 0x88, 0x8, 0x42, 0x7, 0x8f, 0x8c, - 0x91, 0x8c, 0x8d, 0x8c, 0x96, 0x8e, 0xae, 0x94, 0xb9, 0xa9, 0x8, 0xe, - 0xf7, 0x3f, 0x7d, 0xd6, 0x50, 0x76, 0xf7, 0x8a, 0xf7, 0xb, 0xf8, 0x0, - 0x77, 0x12, 0xa5, 0xf7, 0x5b, 0xf8, 0x71, 0xe7, 0x13, 0x7c, 0xf7, 0x29, - 0x78, 0x15, 0xd8, 0x6, 0xf8, 0x3f, 0xf9, 0x6d, 0x5, 0x3e, 0x6, 0xfc, - 0x50, 0xfb, 0xfb, 0x15, 0xe8, 0xf7, 0xf8, 0x40, 0x6, 0x71, 0x4e, 0x35, - 0x76, 0x7f, 0x88, 0x8, 0x42, 0x7, 0xa3, 0x91, 0xa4, 0x90, 0xc4, 0xae, - 0x8, 0x13, 0xbc, 0xf8, 0x0, 0xfc, 0xf5, 0x15, 0xf7, 0xbe, 0xd6, 0xfb, - 0x2e, 0x6, 0x94, 0x94, 0x91, 0x91, 0x94, 0x90, 0x8, 0xf5, 0xd4, 0xa3, - 0xb0, 0xba, 0x1a, 0xb5, 0x69, 0xcd, 0x21, 0xfb, 0x18, 0x80, 0x37, 0x6c, - 0x87, 0x1e, 0xe7, 0x84, 0x5, 0xa3, 0x8d, 0x90, 0xa9, 0xb8, 0x1b, 0x92, - 0xb7, 0x8a, 0x64, 0x6d, 0x73, 0x7b, 0x4f, 0x5e, 0x1f, 0x2f, 0x41, 0x75, - 0x6c, 0x83, 0x53, 0x8, 0xe, 0xf7, 0x3f, 0x8d, 0x76, 0xa5, 0x76, 0xd0, - 0xcf, 0xf7, 0x71, 0xcf, 0xf7, 0x79, 0xcf, 0x8c, 0x77, 0x12, 0xf7, 0x5c, - 0xe8, 0xf8, 0x2, 0xe2, 0x13, 0x7b, 0xf8, 0x75, 0xc2, 0x15, 0xf7, 0x46, - 0x46, 0xe2, 0xd0, 0xc0, 0xcf, 0x56, 0xf7, 0x71, 0x3e, 0x6, 0xfb, 0x50, - 0xfb, 0x72, 0x5, 0xe3, 0x8c, 0x15, 0xe3, 0xf6, 0x5, 0x8d, 0x20, 0x6, - 0x13, 0xb7, 0xfc, 0x77, 0xfb, 0x22, 0x15, 0xd9, 0x6, 0xf8, 0x42, 0xf9, - 0x6d, 0x5, 0x3d, 0x6, 0xfc, 0xe2, 0xfb, 0x94, 0x15, 0x25, 0x99, 0xf2, - 0x83, 0xa8, 0x1b, 0xe3, 0xca, 0xbf, 0xca, 0xb4, 0x72, 0xa8, 0x60, 0x9a, - 0x1f, 0xac, 0x9d, 0x9a, 0xa4, 0xa4, 0x1a, 0x13, 0x7b, 0xbd, 0x56, 0xba, - 0x39, 0xfb, 0x5, 0x7c, 0x45, 0x6a, 0x83, 0x1e, 0xe3, 0x7f, 0x5, 0x9d, - 0x8d, 0x8f, 0xa8, 0xb5, 0x1b, 0x9e, 0xa2, 0x86, 0x73, 0x64, 0x54, 0x8a, - 0x7e, 0x1f, 0x80, 0x46, 0x5, 0x90, 0x9e, 0x96, 0x8d, 0x9a, 0x1b, 0xac, - 0x9d, 0x71, 0x72, 0x73, 0x7b, 0x74, 0x64, 0x5b, 0x87, 0xae, 0x9a, 0x88, - 0x1f, 0xe, 0x57, 0xfb, 0x57, 0xf5, 0xf8, 0x48, 0x77, 0x1, 0xc2, 0xf7, - 0x15, 0xbe, 0xf7, 0x19, 0x3, 0xf7, 0x8b, 0xf7, 0xef, 0x15, 0x8e, 0x4b, - 0x8a, 0x76, 0x4c, 0x57, 0x8, 0x2e, 0x3a, 0x65, 0x5c, 0x44, 0x1a, 0xfb, - 0x5, 0xec, 0x2e, 0xf7, 0x27, 0xf7, 0x37, 0xde, 0xf7, 0x4, 0xed, 0x91, - 0x1e, 0xfb, 0xc, 0x9c, 0x5, 0x3e, 0x7c, 0x5f, 0x5f, 0x42, 0x1b, 0x52, - 0x51, 0xab, 0xcc, 0xb7, 0xa1, 0x9d, 0xcd, 0xc3, 0x1f, 0xe9, 0xda, 0x8f, - 0xb8, 0x89, 0xec, 0x8, 0xfb, 0x19, 0xbb, 0x15, 0xf7, 0x19, 0xf7, 0x1d, - 0xfb, 0x19, 0x6, 0xe, 0x35, 0xa, 0xd3, 0xf7, 0x28, 0x1, 0xf7, 0xf2, - 0xf9, 0xa8, 0x15, 0xde, 0x6, 0x4a, 0xf7, 0x28, 0x40, 0xa, 0xfb, 0x5f, - 0xfe, 0x3c, 0x28, 0xa, 0x35, 0xa, 0xd3, 0xf7, 0x28, 0x1, 0xf7, 0xb7, - 0xf9, 0xa8, 0x15, 0xde, 0x6, 0xf7, 0x13, 0xf7, 0x28, 0x40, 0xa, 0xfb, - 0xe4, 0xfe, 0x3c, 0x28, 0xa, 0x35, 0xa, 0xd5, 0x84, 0xa, 0xf7, 0x61, - 0xf9, 0xaa, 0x15, 0xf4, 0x6, 0xbe, 0xd4, 0xc1, 0x42, 0x5, 0xf3, 0x6, - 0x2b, 0x83, 0xa, 0xfb, 0xc, 0x6, 0xfb, 0xaf, 0xfe, 0x3c, 0x28, 0xa, - 0x35, 0xa, 0xf7, 0xf, 0xdf, 0x8a, 0x77, 0x12, 0x13, 0xf0, 0xf7, 0x5e, - 0xf9, 0xaf, 0x15, 0xc6, 0x65, 0xa, 0xab, 0xaa, 0x1b, 0xa6, 0xa1, 0x82, - 0x82, 0x9f, 0x1f, 0x80, 0xa6, 0xa3, 0x7e, 0xa6, 0x1b, 0xdd, 0x8b, 0xef, - 0xa5, 0x1f, 0x4f, 0x7a, 0xa, 0x6d, 0x6b, 0x1b, 0x81, 0x78, 0x95, 0x95, - 0x73, 0x1f, 0x13, 0xe8, 0x97, 0x72, 0x6d, 0x96, 0x6e, 0x1b, 0x4d, 0x71, - 0x5a, 0x3d, 0x8e, 0x1f, 0xfb, 0x4a, 0xfd, 0xaf, 0x28, 0xa, 0x35, 0xa, - 0xda, 0xf7, 0xc, 0x1, 0xf7, 0x62, 0xf9, 0xaf, 0x15, 0xf7, 0x4, 0xf7, - 0xc, 0x7c, 0xa, 0xf7, 0x5c, 0xfb, 0xc, 0x15, 0xf7, 0x4, 0xf7, 0xc, - 0x7c, 0xa, 0xfc, 0x16, 0xfe, 0x27, 0x28, 0xa, 0x35, 0xa, 0xc0, 0xf7, - 0x55, 0x1, 0x9f, 0x16, 0x27, 0xa, 0xfb, 0x47, 0xf8, 0xd3, 0x15, 0x56, - 0xb4, 0x5f, 0xbd, 0xbc, 0xb5, 0xb5, 0xc2, 0xc3, 0x62, 0xb3, 0x59, 0x58, - 0x63, 0x62, 0x54, 0x1e, 0xbd, 0x16, 0xa4, 0x9d, 0x9d, 0xa2, 0xa1, 0x9e, - 0x7a, 0x71, 0x73, 0x78, 0x77, 0x75, 0x75, 0x78, 0x9f, 0xa3, 0x1e, 0xe, - 0xf7, 0xe5, 0x8b, 0xf7, 0xe, 0xba, 0xf7, 0x12, 0xa0, 0xf7, 0xe, 0xf7, - 0x35, 0xf7, 0xb, 0x1, 0xf8, 0x66, 0xf7, 0x1d, 0x3, 0x90, 0x16, 0xf7, - 0x2d, 0x6, 0xd1, 0xf7, 0x3d, 0x5, 0xf7, 0x81, 0xfb, 0x3d, 0xf8, 0x7d, - 0xf7, 0xe, 0xfb, 0xf3, 0xf7, 0x56, 0xf7, 0xc2, 0xf7, 0xe, 0xfb, 0xc2, - 0xf7, 0x35, 0xf7, 0xe7, 0xf7, 0xb, 0xfc, 0xfe, 0x6, 0x5e, 0xfc, 0x3b, - 0x15, 0xf7, 0x1a, 0xf7, 0xd0, 0x5, 0xc0, 0xfb, 0xd0, 0x6, 0xe, 0xc6, - 0xfb, 0x78, 0xc9, 0xe4, 0xbe, 0x8d, 0xf7, 0x13, 0xf8, 0x8e, 0xf7, 0x14, - 0x1, 0xb7, 0xf7, 0x2d, 0xf7, 0x68, 0xea, 0x3, 0xf7, 0x7c, 0xfb, 0x35, - 0x15, 0x4f, 0x7, 0x85, 0xa7, 0xbd, 0x8a, 0x8f, 0x1b, 0xf6, 0xde, 0xb1, - 0xd2, 0xb0, 0x78, 0xba, 0x30, 0x94, 0x1f, 0x8d, 0x7, 0xf7, 0x65, 0xca, - 0xf7, 0x40, 0xcc, 0x9d, 0x1f, 0xfb, 0x24, 0xb9, 0x5, 0x3a, 0x79, 0x5d, - 0x40, 0x29, 0x1b, 0xfb, 0x26, 0x68, 0xf7, 0x11, 0xf7, 0xe, 0xbb, 0x8b, - 0xf7, 0x67, 0xf7, 0x4b, 0xd7, 0xc8, 0x60, 0x3b, 0x9d, 0x1f, 0xf7, 0x27, - 0xae, 0x5, 0xf7, 0x40, 0x4d, 0xfb, 0x1b, 0xb7, 0x22, 0x1b, 0xfb, 0x83, - 0x2a, 0xfb, 0x4a, 0xfb, 0x61, 0xfb, 0x7a, 0xf7, 0x20, 0xfb, 0x24, 0xf7, - 0x45, 0x1f, 0x89, 0x7, 0x8c, 0x7, 0x75, 0x8a, 0x76, 0x88, 0x72, 0x82, - 0x7d, 0x5a, 0x18, 0x8f, 0x9b, 0xa6, 0x91, 0xa2, 0x1b, 0xc0, 0x96, 0x6f, - 0x7d, 0x61, 0x54, 0x86, 0x63, 0x6d, 0x86, 0x8b, 0x90, 0x5c, 0x1f, 0xe, - 0x33, 0xa, 0xf7, 0x8a, 0xbb, 0x15, 0xe3, 0x6, 0x46, 0xf7, 0x28, 0x5, - 0xfb, 0x2d, 0x6, 0xe, 0x33, 0xa, 0xf7, 0x4c, 0xbb, 0x15, 0xe2, 0x6, - 0xf7, 0x1b, 0xf7, 0x28, 0x5, 0xfb, 0x2e, 0x6, 0xe, 0x3a, 0xa, 0xbd, - 0x84, 0xa, 0xd7, 0xf7, 0x24, 0x3, 0xf7, 0x3d, 0xf9, 0xaa, 0x15, 0xf7, - 0x3, 0x6, 0xc0, 0xd4, 0xc5, 0x42, 0x5, 0xf7, 0x2, 0x6, 0x26, 0x83, - 0xa, 0xfb, 0x14, 0x6, 0xfb, 0x58, 0xfe, 0x3c, 0x15, 0x2e, 0xa, 0xe, - 0x3a, 0xa, 0xc3, 0xf7, 0xb, 0x12, 0xd7, 0xf7, 0x24, 0x59, 0xf7, 0xa, - 0xe9, 0xf7, 0xa, 0x13, 0xf6, 0xf7, 0x3e, 0xf9, 0xb0, 0x8e, 0xa, 0xf7, - 0x68, 0xfb, 0xb, 0x8e, 0xa, 0x13, 0xfa, 0xfb, 0xc6, 0xfe, 0x27, 0x15, - 0x2e, 0xa, 0xe, 0x4c, 0xa, 0xf9, 0xad, 0xf7, 0x23, 0x94, 0xa, 0xe9, - 0xf9, 0xad, 0x15, 0xe2, 0x6, 0x3d, 0x75, 0xa, 0xf7, 0xb, 0x46, 0xa, - 0x4c, 0xa, 0xfa, 0x3c, 0x77, 0x94, 0xa, 0xcb, 0xf9, 0xad, 0x15, 0xe2, - 0x6, 0xf7, 0x46, 0x75, 0xa, 0x20, 0x46, 0xa, 0x4c, 0xa, 0xf9, 0xaf, - 0xf7, 0x21, 0x94, 0xa, 0x66, 0xf9, 0xaf, 0x95, 0xa, 0xd1, 0xc8, 0x45, - 0x77, 0xa, 0xf7, 0x21, 0x5, 0xfb, 0x1b, 0x6, 0x87, 0x46, 0xa, 0x4c, - 0xa, 0xf9, 0xb3, 0xf7, 0x8, 0x1, 0xd0, 0x63, 0xa, 0xf9, 0x60, 0x68, - 0xa, 0x31, 0xde, 0x92, 0xa, 0xf7, 0x62, 0xfb, 0x8, 0x92, 0xa, 0xe, - 0xc6, 0x8b, 0xf7, 0xd, 0xf8, 0x70, 0x82, 0xa, 0xd2, 0xf7, 0x27, 0xf7, - 0xcc, 0xf7, 0x2f, 0x3, 0xf7, 0x6e, 0xf7, 0xd, 0x15, 0xf7, 0x4f, 0xf7, - 0x31, 0xef, 0xfb, 0x31, 0xf7, 0x51, 0xf7, 0x0, 0x7, 0xf7, 0x24, 0xc7, - 0x8b, 0xfb, 0x86, 0xfb, 0x7a, 0x2e, 0x87, 0xfb, 0x0, 0x1f, 0xfb, 0x96, - 0xfb, 0xd, 0x15, 0xf7, 0x96, 0x6, 0xf7, 0x8e, 0xf5, 0xf7, 0x46, 0xf7, - 0x42, 0xf7, 0x9d, 0xfb, 0x1, 0xf0, 0xfb, 0x8e, 0x1f, 0xfb, 0x93, 0xfb, - 0xca, 0x3f, 0x27, 0xd7, 0x6, 0xe, 0x69, 0xa, 0xf9, 0x74, 0x77, 0xf7, - 0x62, 0x5c, 0xa, 0xf8, 0x74, 0x8d, 0x6, 0xf7, 0xbb, 0xfc, 0x74, 0x5, - 0xf7, 0x2a, 0xf9, 0x74, 0xfb, 0x1e, 0xfc, 0x7f, 0x89, 0x6, 0xfb, 0xc1, - 0xf8, 0x7f, 0x5, 0xfb, 0x24, 0x6, 0xf7, 0xb, 0xc6, 0x15, 0xcb, 0x65, - 0xa, 0xab, 0xad, 0x1b, 0xaa, 0xa2, 0x80, 0x81, 0xa3, 0x1f, 0x81, 0xa4, - 0xa4, 0x80, 0xab, 0x1b, 0xe3, 0x8b, 0xef, 0xa5, 0x1f, 0x4a, 0x7a, 0xa, - 0x6d, 0x68, 0x1b, 0x80, 0x77, 0x95, 0x95, 0x71, 0x1f, 0x97, 0x71, 0x69, - 0x96, 0x6a, 0x1b, 0x48, 0x70, 0x5a, 0x3d, 0x8e, 0x1f, 0xe, 0x59, 0xa, - 0xd1, 0xf7, 0x23, 0x1, 0xc6, 0xf7, 0x28, 0xf8, 0x0, 0x85, 0xa, 0xb7, - 0xf7, 0xf4, 0x29, 0xa, 0xfb, 0x22, 0x51, 0x22, 0xfb, 0x1f, 0xfb, 0x2c, - 0x5e, 0xf7, 0x4, 0xf7, 0x1b, 0x1e, 0xf7, 0x4d, 0xf8, 0x4d, 0x15, 0xe1, - 0x6, 0x47, 0x67, 0xa, 0xfb, 0x2c, 0x6, 0xe, 0x5f, 0xa, 0xf8, 0x82, - 0xf7, 0x10, 0xd1, 0xf7, 0x23, 0x7e, 0xa, 0xf7, 0xcf, 0xf9, 0xad, 0x15, - 0xe1, 0x6, 0xf7, 0x1a, 0x67, 0xa, 0xfb, 0x2c, 0x6, 0xfb, 0xe7, 0x31, - 0xa, 0x54, 0xfb, 0xb, 0xfb, 0x22, 0x41, 0xa, 0x5f, 0xa, 0xf8, 0x82, - 0xf7, 0x10, 0xd3, 0xf7, 0x21, 0x7e, 0xa, 0xf7, 0x74, 0xf9, 0xaf, 0x15, - 0xf7, 0x3, 0x6, 0xc0, 0xd1, 0xc3, 0x45, 0x5, 0xf7, 0x2, 0x6, 0x26, - 0xf7, 0x21, 0x5, 0xfb, 0x12, 0x6, 0xfb, 0xaf, 0x31, 0xa, 0x4f, 0xfb, - 0xb, 0xfb, 0x1d, 0x41, 0xa, 0x59, 0xa, 0xd8, 0x64, 0xa, 0xd1, 0xf7, - 0x28, 0xf7, 0xf1, 0xf7, 0x28, 0x13, 0xd6, 0xf7, 0x71, 0xf9, 0xb2, 0x15, - 0xc9, 0x6a, 0xa, 0x9f, 0x1f, 0x13, 0xe6, 0x80, 0xa3, 0xa1, 0x80, 0xad, - 0x1b, 0xe1, 0x8b, 0xed, 0xa4, 0x1f, 0x4c, 0x7a, 0xa, 0x6e, 0x69, 0x1b, - 0x81, 0x79, 0x93, 0x94, 0x75, 0x1f, 0x13, 0xce, 0x97, 0x70, 0x67, 0x98, - 0x6c, 0x1b, 0x4a, 0x70, 0x5b, 0x3f, 0x8e, 0x1f, 0xfb, 0x45, 0xfc, 0x52, - 0x29, 0xa, 0xfb, 0x2c, 0x4f, 0x2c, 0xfb, 0x1d, 0x41, 0xa, 0x59, 0xa, - 0xd6, 0xf7, 0x9, 0x1, 0xc6, 0xf7, 0x28, 0xf8, 0x1, 0x85, 0xa, 0xf7, - 0x75, 0xf9, 0xb2, 0x8d, 0xa, 0xf7, 0x66, 0xfb, 0x9, 0x8d, 0xa, 0xfc, - 0x1b, 0xfc, 0xc7, 0x29, 0xa, 0xfb, 0x11, 0x54, 0xfb, 0xe, 0xfb, 0x22, - 0x41, 0xa, 0x3c, 0xa1, 0x76, 0xf8, 0x8c, 0x77, 0x1, 0xb4, 0xec, 0x15, - 0xe9, 0x2c, 0xf7, 0x30, 0xf7, 0x31, 0xf7, 0x32, 0xfb, 0x32, 0xeb, 0xec, - 0xfb, 0x32, 0xf7, 0x31, 0xf7, 0x30, 0xf7, 0x2f, 0x2e, 0xea, 0xfb, 0x31, - 0xfb, 0x31, 0xfb, 0x31, 0xf7, 0x31, 0x2b, 0x2b, 0xf7, 0x32, 0xfb, 0x30, - 0x5, 0xe, 0xf7, 0x7, 0x85, 0x76, 0xa6, 0xf7, 0xe, 0xf8, 0x74, 0xf7, - 0xe, 0xa0, 0x77, 0x1, 0xbc, 0xf7, 0x27, 0xf8, 0x7, 0xf7, 0x27, 0x3, - 0xac, 0xab, 0x15, 0xcf, 0x50, 0xd9, 0xe2, 0x5, 0x5a, 0xce, 0xd5, 0x80, - 0xcd, 0x1b, 0xf7, 0x8a, 0xed, 0xf7, 0x56, 0xf7, 0x43, 0xab, 0x89, 0xf7, - 0x2, 0x4a, 0xe1, 0x1f, 0xdc, 0xe4, 0x48, 0xc6, 0x3f, 0x36, 0x5, 0x9f, - 0x71, 0x4c, 0xb7, 0xfb, 0x12, 0x1b, 0xfb, 0x88, 0x2a, 0xfb, 0x40, 0xfb, - 0x4b, 0xfb, 0x18, 0xb1, 0x44, 0xab, 0x60, 0x1f, 0xee, 0xf7, 0x2, 0x15, - 0x7d, 0xad, 0x83, 0xbc, 0xc0, 0x1a, 0xf7, 0x12, 0xc6, 0xf6, 0xf7, 0x1b, - 0xb8, 0xba, 0x80, 0x6e, 0xad, 0x1e, 0xfb, 0x87, 0xfc, 0x25, 0x15, 0xf7, - 0xbb, 0xf7, 0xda, 0x5, 0x95, 0x72, 0x94, 0x64, 0x55, 0x1a, 0xfb, 0x47, - 0x2a, 0x47, 0x27, 0x6e, 0x63, 0x8e, 0xaf, 0x5b, 0x1e, 0xe, 0x54, 0xa, - 0xd3, 0xf9, 0x5e, 0x5e, 0xa, 0xb5, 0xfb, 0x48, 0xf7, 0x8f, 0xf7, 0x7a, - 0xc3, 0x2b, 0xa, 0xf7, 0x18, 0xd9, 0x15, 0xe4, 0x6, 0x45, 0xf7, 0x24, - 0x97, 0xa, 0xe, 0x54, 0xa, 0xf7, 0xb3, 0xf9, 0xac, 0x15, 0xe3, 0x6, - 0xf7, 0x1c, 0xf7, 0x24, 0x97, 0xa, 0xfb, 0xb0, 0xfb, 0x72, 0x5e, 0xa, - 0xa1, 0xfb, 0x48, 0xf7, 0xa3, 0x2f, 0xa, 0xc6, 0x78, 0xf7, 0x11, 0xf9, - 0x44, 0xf7, 0x22, 0x42, 0xa, 0xf7, 0x57, 0xf9, 0xae, 0x15, 0xf7, 0x4, - 0x6, 0xc1, 0xd1, 0xc5, 0x45, 0x5, 0xf7, 0x3, 0x6, 0x25, 0xf7, 0x22, - 0x5, 0xfb, 0x15, 0x6, 0xfb, 0x77, 0xfb, 0x72, 0x34, 0xa, 0xc6, 0x78, - 0xf7, 0x11, 0xf9, 0x48, 0xf7, 0x9, 0x12, 0xd3, 0xf7, 0x26, 0x75, 0xf7, - 0xb, 0xea, 0xf7, 0xb, 0x73, 0xf7, 0x26, 0x13, 0xd8, 0xf7, 0x58, 0xf9, - 0xb2, 0x8f, 0xa, 0xf7, 0x6a, 0xfb, 0x9, 0x8f, 0xa, 0x13, 0xe4, 0xfb, - 0xe6, 0xfb, 0x5d, 0x34, 0xa, 0x8f, 0xa0, 0x76, 0x1, 0xf7, 0x9d, 0xf7, - 0x1d, 0x3, 0x70, 0xa, 0xf8, 0x34, 0x5, 0xfb, 0x32, 0x6, 0xfb, 0x33, - 0xfb, 0xaf, 0xfb, 0x34, 0xf7, 0xaf, 0x5, 0xfb, 0x35, 0x6, 0xf7, 0x8e, - 0xfc, 0x33, 0x5, 0x89, 0xf8, 0x80, 0x15, 0xde, 0x6, 0xf7, 0x14, 0x67, - 0xa, 0xfb, 0x26, 0x6, 0xe, 0x8f, 0xa0, 0x76, 0xf7, 0x1b, 0xf7, 0xe, - 0xf7, 0x60, 0xf7, 0xe, 0xf7, 0x1b, 0x77, 0x60, 0xa, 0xf7, 0x1b, 0xd1, - 0x6, 0xcc, 0xf1, 0x8c, 0xa3, 0xbe, 0x1f, 0xb9, 0xa1, 0xd3, 0xbf, 0xf7, - 0x12, 0x1a, 0xf7, 0x73, 0xfb, 0x2f, 0x8b, 0xfb, 0x49, 0x1e, 0x45, 0xf7, - 0x1b, 0xfb, 0x25, 0x6, 0xf7, 0x25, 0xfc, 0x61, 0x15, 0xf7, 0x60, 0xd1, - 0x7, 0xf4, 0xdc, 0x88, 0x29, 0x24, 0xfb, 0x3, 0x8b, 0x40, 0x1f, 0xe, - 0x57, 0x92, 0x76, 0xf9, 0x11, 0xf7, 0x0, 0x1, 0xd0, 0xf7, 0x1e, 0xf7, - 0x7e, 0xf7, 0x1e, 0x3, 0xd0, 0x84, 0x15, 0xf7, 0x1e, 0xf8, 0x6b, 0x6, - 0xe3, 0x8b, 0xd2, 0xd6, 0xe6, 0x68, 0x36, 0x4c, 0x6d, 0x1e, 0x75, 0x5e, - 0x81, 0x6d, 0x72, 0x1a, 0x64, 0xa6, 0x6e, 0xc3, 0x56, 0x1e, 0xcf, 0x49, - 0x99, 0x7d, 0x6d, 0x1a, 0x6a, 0x73, 0x79, 0x72, 0x76, 0x76, 0x97, 0xa6, - 0x83, 0x1e, 0x2b, 0x53, 0x5, 0x4e, 0xa8, 0xcd, 0x6e, 0xcc, 0x1b, 0xe3, - 0xe0, 0xc3, 0xf7, 0x0, 0xc0, 0x76, 0xb5, 0x4a, 0xcd, 0x1f, 0x57, 0xc0, - 0x75, 0x9c, 0xa3, 0x1a, 0x9c, 0x97, 0x9f, 0xa1, 0xb4, 0x1e, 0xf7, 0x2, - 0xc6, 0x7a, 0xf7, 0x1e, 0xfb, 0x67, 0x1b, 0xfb, 0x59, 0x79, 0xfb, 0x3d, - 0x29, 0x1f, 0xe, 0x39, 0xa, 0xc4, 0xf7, 0x29, 0x51, 0xa, 0xf7, 0x9b, - 0xf8, 0xed, 0x15, 0xe4, 0x6, 0x45, 0xf7, 0x29, 0x96, 0xa, 0xf7, 0x89, - 0x22, 0xa, 0x39, 0xa, 0xc5, 0xf7, 0x28, 0x51, 0xa, 0xf7, 0x5b, 0xf8, - 0xee, 0x15, 0xe4, 0x6, 0xf7, 0x1e, 0xf7, 0x28, 0x96, 0xa, 0xf0, 0x22, - 0xa, 0x39, 0xa, 0xc6, 0xf7, 0x27, 0x51, 0xa, 0xf5, 0xf8, 0xef, 0x15, - 0xf7, 0x6, 0x6, 0xc1, 0xd4, 0xc5, 0x42, 0x5, 0xf7, 0x5, 0x6, 0x24, - 0xf7, 0x27, 0x5, 0xfb, 0x17, 0x6, 0xf7, 0x33, 0x22, 0xa, 0x39, 0xa, - 0xcd, 0xf7, 0x13, 0x37, 0xdf, 0x8a, 0x77, 0x66, 0xa, 0x49, 0xcd, 0xf7, - 0x52, 0xf7, 0x1d, 0x13, 0xa9, 0x80, 0xf2, 0xf8, 0xf4, 0x15, 0xca, 0x6, - 0x98, 0x8c, 0x8b, 0xab, 0xad, 0x1b, 0xb0, 0xa4, 0x7e, 0x80, 0xa3, 0x1f, - 0x13, 0xb2, 0x80, 0x82, 0xa1, 0xa0, 0x81, 0xa9, 0x1b, 0xe3, 0x8b, 0xf0, - 0xa5, 0x1f, 0x4b, 0x6, 0x7d, 0x88, 0x87, 0x6d, 0x69, 0x1b, 0x80, 0x78, - 0x94, 0x95, 0x73, 0x1f, 0x13, 0x65, 0x80, 0x97, 0x70, 0x68, 0x97, 0x6a, - 0x1b, 0x48, 0x70, 0x5a, 0x3c, 0x8e, 0x1f, 0xf7, 0x9f, 0xfc, 0xbb, 0x21, - 0xa, 0x13, 0xb2, 0x80, 0x32, 0xa, 0x39, 0xa, 0xce, 0xf7, 0xa, 0x66, - 0xa, 0x4d, 0xf7, 0xd, 0xea, 0xf7, 0xd, 0x36, 0xf7, 0x1d, 0x13, 0x76, - 0xf6, 0xf8, 0xf7, 0x8a, 0xa, 0xf7, 0x6c, 0xfb, 0xa, 0x8a, 0xa, 0xba, - 0xfd, 0x34, 0x30, 0xa, 0x13, 0xb9, 0x20, 0xa, 0x32, 0xa, 0x39, 0xa, - 0xb1, 0xf7, 0x56, 0x56, 0x77, 0x66, 0xa, 0x9e, 0xf7, 0x58, 0x72, 0xf7, - 0x1d, 0x13, 0xb6, 0xf7, 0x50, 0xf9, 0x3b, 0x15, 0x56, 0xb7, 0x5f, 0xc1, - 0xbf, 0xb9, 0xb5, 0xc2, 0xc3, 0x5e, 0xb4, 0x56, 0x54, 0x60, 0x61, 0x54, - 0x1e, 0xc0, 0x16, 0x13, 0x6d, 0xa4, 0x9f, 0x9e, 0xa4, 0xa3, 0x9f, 0x79, - 0x71, 0x73, 0x77, 0x77, 0x73, 0x73, 0x76, 0x9f, 0xa3, 0x1e, 0xf7, 0x15, - 0xfd, 0x2, 0x24, 0xa, 0x13, 0xb5, 0x26, 0xa, 0xf7, 0x76, 0x7d, 0xf7, - 0x0, 0xf7, 0x17, 0xe4, 0xf7, 0x10, 0xf7, 0x0, 0x1, 0xa8, 0xf7, 0x22, - 0xf7, 0x50, 0xf7, 0x21, 0xf7, 0x6c, 0xf7, 0x22, 0x3, 0xf8, 0x39, 0xc7, - 0x15, 0x52, 0xc8, 0xca, 0x7a, 0xc8, 0x1b, 0xf7, 0x47, 0xbf, 0xf7, 0xc, - 0xb2, 0x99, 0x1f, 0xfb, 0x1f, 0xa3, 0x5, 0x7a, 0x84, 0x72, 0x51, 0x41, - 0x1b, 0x2b, 0x84, 0xf2, 0xa7, 0x88, 0x1f, 0xf7, 0xfa, 0x6, 0xf4, 0x77, - 0xf7, 0x6c, 0xfb, 0x7c, 0x4c, 0x5a, 0x78, 0x6c, 0x63, 0x1e, 0x9a, 0x7b, - 0x4f, 0xae, 0x21, 0x1b, 0xfb, 0x2d, 0x61, 0x59, 0x26, 0x6a, 0x1f, 0xf7, - 0x15, 0x73, 0x5, 0x9d, 0x90, 0x9a, 0xbc, 0xda, 0x1b, 0xe3, 0x8b, 0x53, - 0x75, 0x1f, 0x7e, 0x7, 0x7a, 0x85, 0x78, 0x89, 0x59, 0x7d, 0x8, 0x24, - 0x6e, 0xfb, 0x22, 0x88, 0xfb, 0x29, 0x1a, 0x43, 0xbb, 0x35, 0xf7, 0x1a, - 0xf0, 0xd9, 0xb9, 0xa7, 0xaa, 0x1e, 0x4d, 0xf7, 0x57, 0x15, 0x42, 0x8b, - 0x63, 0x6c, 0x71, 0x1e, 0x56, 0x5f, 0x23, 0x93, 0xd7, 0x1a, 0xb9, 0xb5, - 0x99, 0xb8, 0x97, 0x1e, 0xf7, 0x88, 0xe1, 0x15, 0x9b, 0x8a, 0x92, 0xf7, - 0x0, 0xed, 0x1b, 0xf0, 0x92, 0x2f, 0x6b, 0x8d, 0x1f, 0xe, 0x20, 0xfb, - 0x78, 0xc2, 0xe4, 0xf7, 0x40, 0xfb, 0xa, 0xf7, 0xa, 0xf7, 0xec, 0xf7, - 0x6, 0x12, 0xad, 0xf7, 0x21, 0xf7, 0x23, 0xdd, 0x13, 0xdc, 0xf7, 0x5a, - 0x2f, 0x15, 0x92, 0xaa, 0x9c, 0x8c, 0x92, 0x1b, 0xc4, 0x93, 0x6d, 0x7e, - 0x5d, 0x45, 0x8b, 0x6c, 0x6a, 0x79, 0x8e, 0x8c, 0x83, 0x1f, 0x56, 0x7, - 0x85, 0xb2, 0x9d, 0x8b, 0x8d, 0x1b, 0xf7, 0x11, 0xc5, 0xc7, 0xb9, 0xc1, - 0x5b, 0xaa, 0x5f, 0x90, 0x1f, 0x13, 0xbc, 0x8d, 0x7, 0xf7, 0x3f, 0x91, - 0xaf, 0xf7, 0x2b, 0x94, 0xb5, 0xfb, 0x1b, 0xa3, 0x18, 0x69, 0x85, 0x7e, - 0x44, 0x3a, 0x1b, 0x36, 0x6e, 0xcd, 0xf3, 0xad, 0x89, 0xf7, 0x20, 0xf7, - 0x5, 0xda, 0x99, 0x47, 0x78, 0x8e, 0x1f, 0xf7, 0x1b, 0xa4, 0x5, 0xd4, - 0x77, 0x5e, 0xf2, 0xfb, 0x3a, 0x1b, 0xfb, 0x5e, 0x59, 0xfb, 0x3b, 0xfb, - 0xd, 0x3a, 0xa5, 0xfb, 0x56, 0xf7, 0x5f, 0x7e, 0x1f, 0x89, 0x7, 0x7c, - 0x8a, 0x7e, 0x8a, 0x75, 0x85, 0x8, 0xe, 0x3c, 0xa, 0xc8, 0xf7, 0x28, - 0x43, 0xa, 0xf7, 0x9d, 0xf8, 0xee, 0x15, 0xe6, 0x6, 0x44, 0xf7, 0x28, - 0x5, 0xfb, 0x33, 0x6, 0xb6, 0xfc, 0xa2, 0x25, 0xa, 0x3c, 0xa, 0xc7, - 0xf7, 0x29, 0x43, 0xa, 0xf7, 0x5c, 0xf8, 0xed, 0x15, 0xe6, 0x6, 0xf7, - 0x20, 0xf7, 0x29, 0x5, 0xfb, 0x34, 0x6, 0x25, 0xfc, 0xa2, 0x25, 0xa, - 0x3c, 0xa, 0xc9, 0xf7, 0x27, 0x43, 0xa, 0xf4, 0xf8, 0xef, 0x15, 0xf7, - 0x8, 0x6, 0xc3, 0xd4, 0xc6, 0x42, 0x5, 0xf7, 0x7, 0x6, 0x21, 0xf7, - 0x27, 0x5, 0xfb, 0x18, 0x6, 0x5f, 0xfc, 0xa2, 0x25, 0xa, 0x3c, 0xa, - 0xd1, 0xf7, 0xa, 0x43, 0xa, 0xf5, 0xf8, 0xf7, 0x15, 0xf7, 0x10, 0xf7, - 0xa, 0xfb, 0x10, 0x6, 0xf7, 0x71, 0xfb, 0xa, 0x15, 0xf7, 0xf, 0xf7, - 0xa, 0xfb, 0xf, 0x6, 0xfb, 0x32, 0xfc, 0x8d, 0x25, 0xa, 0x62, 0xa, - 0xf7, 0x23, 0xf8, 0xf2, 0x15, 0xe1, 0x6, 0x20, 0xf7, 0x24, 0x5, 0xfb, - 0x2c, 0x6, 0xf5, 0xfd, 0x82, 0x15, 0x55, 0xa, 0xe, 0x62, 0xa, 0xbc, - 0xf8, 0xf1, 0x15, 0xe2, 0x6, 0xf7, 0x41, 0xf7, 0x25, 0x5, 0xfb, 0x2c, - 0x6, 0x3a, 0xfd, 0x82, 0x15, 0x55, 0xa, 0xe, 0x4c, 0xa, 0xf8, 0xf3, - 0xf7, 0x23, 0x1, 0xd7, 0xf7, 0x13, 0x3, 0xd7, 0x16, 0x55, 0xa, 0xfb, - 0x5, 0xe1, 0x95, 0xa, 0xd3, 0xc8, 0x43, 0x77, 0xa, 0x67, 0xa, 0xfb, - 0x1b, 0x6, 0xe, 0x4c, 0xa, 0xf8, 0xfa, 0xf7, 0x7, 0x12, 0x76, 0xf7, - 0x7, 0x79, 0xf7, 0x13, 0x79, 0xf7, 0x7, 0x13, 0xe8, 0x76, 0x44, 0xa, - 0x13, 0xd0, 0xfb, 0x1, 0xfd, 0x6d, 0x15, 0x55, 0xa, 0xe, 0x57, 0x7d, - 0xf7, 0x8, 0xf7, 0xd4, 0xf7, 0x3, 0xf7, 0x60, 0x77, 0x1, 0xad, 0xf7, - 0x26, 0xf7, 0x90, 0xf7, 0x26, 0x3, 0xf7, 0x65, 0xf8, 0xc7, 0x15, 0xeb, - 0xb8, 0xb0, 0x5b, 0x95, 0x7b, 0xa4, 0x60, 0x19, 0x89, 0x89, 0x5, 0x9b, - 0x70, 0x6b, 0x9d, 0x5a, 0x1b, 0xfb, 0x1, 0xfb, 0x10, 0x22, 0xfb, 0x3b, - 0xfb, 0x26, 0xec, 0xfb, 0x15, 0xf7, 0x40, 0xf7, 0x31, 0xf7, 0xa, 0xea, - 0xf7, 0x48, 0xf7, 0x26, 0x3e, 0xf7, 0x23, 0x26, 0xf2, 0x1f, 0xd2, 0xad, - 0x75, 0xbd, 0x30, 0x60, 0x75, 0x9d, 0x85, 0x8f, 0x72, 0xa0, 0x19, 0xfb, - 0x26, 0x6, 0xbe, 0x66, 0x9a, 0x81, 0xb5, 0x63, 0x3a, 0x65, 0x18, 0x85, - 0xfb, 0xf3, 0x15, 0xf7, 0x4, 0xcc, 0xbc, 0xc5, 0xce, 0xc9, 0x54, 0x21, - 0x27, 0x52, 0x50, 0x44, 0x52, 0x48, 0xb2, 0xf7, 0xc, 0x1e, 0xe, 0x57, - 0xa0, 0x76, 0xf8, 0xfa, 0x64, 0xa, 0xcc, 0xf7, 0x16, 0x58, 0xc8, 0xf7, - 0x5d, 0xf7, 0x20, 0x13, 0xca, 0xcc, 0x16, 0x13, 0xc6, 0xf7, 0x20, 0xf7, - 0x7f, 0x6, 0xe2, 0x90, 0xf2, 0xf7, 0x3, 0xe0, 0x8b, 0x22, 0x36, 0x1e, - 0xfb, 0x7f, 0xf7, 0x20, 0xf7, 0xd6, 0x7, 0xf7, 0x6, 0x3e, 0xe9, 0x28, - 0x55, 0x48, 0x79, 0x45, 0x57, 0x1e, 0x13, 0xca, 0x89, 0xd7, 0xfb, 0x16, - 0x6, 0x13, 0xa6, 0xda, 0xe9, 0x15, 0xca, 0x65, 0xa, 0xaa, 0xad, 0x1b, - 0xa9, 0xa1, 0x82, 0x82, 0xa0, 0x1f, 0x13, 0xca, 0x80, 0xa5, 0xa3, 0x7f, - 0xae, 0x1b, 0xdf, 0x8f, 0xed, 0xa4, 0x1f, 0x4b, 0x6, 0x7d, 0x88, 0x87, - 0x6e, 0x69, 0x1b, 0x13, 0x96, 0x80, 0x73, 0x96, 0x96, 0x70, 0x1f, 0x95, - 0x71, 0x6e, 0x95, 0x6c, 0x1b, 0x49, 0x72, 0x6a, 0x30, 0x1f, 0xe, 0x3e, - 0xa, 0xd7, 0xf7, 0x25, 0x1, 0x56, 0xa, 0x3, 0xf7, 0xb9, 0xf8, 0xf1, - 0x15, 0xe4, 0x6, 0x46, 0xf7, 0x25, 0x5, 0xfb, 0x30, 0x6, 0xfb, 0xf, - 0xfc, 0x7a, 0x23, 0xa, 0x47, 0xa, 0xf7, 0x77, 0xf8, 0xf3, 0x15, 0xe2, - 0x6, 0xf7, 0x1a, 0x75, 0xa, 0xfb, 0x99, 0xfc, 0x7a, 0x23, 0xa, 0x47, - 0xa, 0xf7, 0x1e, 0xf8, 0xf3, 0x15, 0xf7, 0x5, 0x6, 0xc0, 0xd2, 0xc5, - 0x44, 0x5, 0xf7, 0x4, 0x6, 0x25, 0x67, 0xa, 0xfb, 0x16, 0x6, 0xfb, - 0x64, 0xfc, 0x7a, 0x23, 0xa, 0x3e, 0xa, 0xe0, 0x64, 0xa, 0x56, 0xa, - 0x13, 0xd6, 0xf7, 0x1b, 0xf8, 0xf8, 0x15, 0xca, 0x6a, 0xa, 0xa3, 0x1f, - 0x13, 0xe6, 0x80, 0xa4, 0xa3, 0x80, 0xaa, 0x1b, 0xe2, 0x8b, 0xed, 0xa4, - 0x1f, 0x4b, 0x7a, 0xa, 0x6e, 0x69, 0x1b, 0x13, 0xce, 0x7f, 0x75, 0x96, - 0x96, 0x71, 0x1f, 0x95, 0x71, 0x6d, 0x95, 0x6b, 0x1b, 0x49, 0x73, 0x5a, - 0x40, 0x1f, 0x26, 0xfb, 0xf0, 0x23, 0xa, 0x3e, 0xa, 0xe0, 0xf7, 0x7, - 0x12, 0xad, 0xf7, 0x23, 0x65, 0xf7, 0xc, 0xe9, 0xf7, 0xc, 0x65, 0xf7, - 0x23, 0x13, 0xec, 0xf7, 0x1f, 0xf8, 0xfa, 0x4a, 0xa, 0xf7, 0x6a, 0xfb, - 0x7, 0x4a, 0xa, 0x13, 0xf2, 0xfb, 0xd3, 0xfc, 0x65, 0x23, 0xa, 0x3c, - 0x61, 0xf7, 0x1f, 0xe9, 0xf7, 0x13, 0xe9, 0xf7, 0x1c, 0x1, 0xf7, 0x73, - 0xf7, 0x1e, 0x3, 0xb3, 0xf7, 0x53, 0x15, 0xf8, 0x8c, 0xf7, 0x13, 0xfc, - 0x8c, 0x6, 0xf7, 0x4b, 0xe9, 0x15, 0xf7, 0x1e, 0xf7, 0x1c, 0xfb, 0x1e, - 0x6, 0xfc, 0xe2, 0x4, 0xf7, 0x1e, 0xf7, 0x1f, 0x81, 0xa, 0x57, 0x83, - 0x76, 0xa3, 0xf7, 0x6, 0xf7, 0xd5, 0xf7, 0x6, 0x9b, 0x77, 0x12, 0xb2, - 0xf7, 0x26, 0xf7, 0x89, 0xf7, 0x24, 0x13, 0xdc, 0xab, 0x9e, 0x15, 0xc4, - 0x5b, 0xc4, 0xcb, 0x5, 0x71, 0xbb, 0xc8, 0x7d, 0xbd, 0x1b, 0xf7, 0x41, - 0xf7, 0x3, 0xf7, 0x13, 0xf7, 0x28, 0xd4, 0x6d, 0xd0, 0x68, 0xb4, 0x1f, - 0xc5, 0xc9, 0x50, 0xb8, 0x54, 0x4f, 0x5, 0x13, 0xec, 0x95, 0x7a, 0x55, - 0xad, 0x2f, 0x1b, 0xfb, 0x47, 0x23, 0xfb, 0x15, 0xfb, 0x25, 0x41, 0x9e, - 0x4e, 0xbc, 0x56, 0x1f, 0xeb, 0xf7, 0x0, 0x15, 0x7b, 0xb1, 0x89, 0xac, - 0x94, 0x1a, 0xf7, 0x7, 0xd2, 0xb8, 0xcd, 0xb6, 0xa2, 0x7c, 0x82, 0x96, - 0x1e, 0xfb, 0x29, 0xfb, 0xa7, 0x15, 0xf7, 0x56, 0xf7, 0x69, 0x5, 0x91, - 0x7b, 0x97, 0x6c, 0x70, 0x1a, 0x37, 0x5d, 0x3e, 0x2d, 0x60, 0x7b, 0x99, - 0x93, 0x7e, 0x1e, 0xe, 0x4e, 0xa, 0xf8, 0x34, 0x89, 0x2a, 0xa, 0x13, - 0x78, 0xfb, 0xf, 0xf8, 0xa4, 0x15, 0xe3, 0x6, 0x46, 0xf7, 0x25, 0x97, - 0xa, 0xe, 0x4e, 0xa, 0xf7, 0x7a, 0xf8, 0xf1, 0x15, 0xe3, 0x6, 0xf7, - 0x1c, 0xf7, 0x25, 0x97, 0xa, 0xf7, 0x9, 0xfd, 0x84, 0x2a, 0xa, 0xe, - 0x6c, 0xa, 0xf8, 0x97, 0xf7, 0x23, 0x49, 0xa, 0x13, 0x78, 0xf7, 0x1d, - 0xf8, 0xf3, 0x15, 0xf7, 0x5, 0x6, 0xc1, 0xd2, 0xc5, 0x44, 0x5, 0xf7, - 0x4, 0x6, 0x24, 0x67, 0xa, 0xfb, 0x15, 0x6, 0xf7, 0x42, 0xfd, 0x84, - 0x2a, 0xa, 0xe, 0x6c, 0xa, 0xf8, 0x9e, 0xf7, 0x7, 0x12, 0xcd, 0xf7, - 0x1f, 0x48, 0xf7, 0xc, 0xea, 0xf7, 0xc, 0x48, 0xf7, 0x1f, 0x13, 0x6c, - 0xf7, 0x1e, 0xf8, 0xfa, 0x4a, 0xa, 0xf7, 0x6b, 0xfb, 0x7, 0x4a, 0xa, - 0xca, 0xfd, 0x6f, 0x15, 0x13, 0x72, 0x2c, 0xa, 0x13, 0xac, 0x36, 0xa, - 0xe, 0x20, 0xfb, 0x55, 0x76, 0xf9, 0xc8, 0xf7, 0x24, 0x1, 0xb6, 0x28, - 0x15, 0x97, 0x20, 0x52, 0xa, 0xf5, 0xf7, 0xf, 0xc8, 0x1f, 0xf7, 0x4a, - 0xf8, 0x89, 0x78, 0xa, 0xfc, 0x5, 0x6e, 0xa, 0xfb, 0xe, 0xf8, 0x5, - 0x40, 0xa, 0xf7, 0x58, 0xfc, 0x9d, 0x5, 0x2b, 0x48, 0xa, 0xf7, 0x35, - 0xf9, 0x55, 0x15, 0xe1, 0x6, 0xf7, 0x19, 0xf7, 0x24, 0x5, 0xfb, 0x2c, - 0x6, 0xe, 0x57, 0xfb, 0x4f, 0x76, 0xf7, 0x50, 0xf7, 0x3, 0xf7, 0xe2, - 0xf6, 0xf7, 0x4e, 0x77, 0x1, 0xc9, 0xf7, 0x20, 0xf7, 0x7c, 0xf7, 0x24, - 0x3, 0xf7, 0x5e, 0xc5, 0x15, 0x6c, 0xa7, 0xb8, 0x5c, 0xdd, 0x1b, 0xf7, - 0x10, 0xec, 0xef, 0xf7, 0x43, 0xf7, 0x49, 0x21, 0xeb, 0xfb, 0x7, 0x39, - 0x64, 0x64, 0x69, 0x69, 0x1f, 0xf7, 0x97, 0xfb, 0x20, 0xfe, 0x32, 0xf7, - 0x20, 0x7, 0x8a, 0xf8, 0x63, 0x15, 0xf6, 0xbf, 0xca, 0xcc, 0xf2, 0x98, - 0xfb, 0x3, 0x50, 0xfb, 0x16, 0x4c, 0x69, 0x5b, 0x36, 0x66, 0xd1, 0xe9, - 0x1e, 0xe, 0x20, 0xfb, 0x55, 0x76, 0xf9, 0xcf, 0xf7, 0x8, 0x1, 0xf7, - 0x6, 0xf7, 0x9, 0xe8, 0xf7, 0x9, 0x3, 0xf7, 0x6, 0xf8, 0xf9, 0x88, - 0xa, 0xf7, 0x66, 0xfb, 0x8, 0x88, 0xa, 0xfb, 0xad, 0xfd, 0xcf, 0x15, - 0x97, 0xfb, 0x0, 0x52, 0xa, 0xf6, 0xf7, 0x10, 0xc8, 0x1f, 0xf7, 0x4a, - 0xf8, 0x8d, 0x78, 0xa, 0xfc, 0x8, 0x6e, 0xa, 0xfb, 0xe, 0xf8, 0x8, - 0x40, 0xa, 0xf7, 0x58, 0xfc, 0xa1, 0x5, 0x2a, 0x48, 0xa, 0xe, 0x76, - 0xa0, 0xf8, 0x9f, 0x9a, 0xf7, 0x48, 0x9e, 0x6, 0xfb, 0x70, 0x98, 0x7, - 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xf7, 0x11, 0xa, 0xf7, 0x20, - 0xb, 0xf7, 0x0, 0x9c, 0xc, 0xc, 0x8c, 0xc, 0xe, 0xf7, 0xe1, 0x14, - 0xf9, 0x2b, 0x15, 0xb5, 0x13, 0x0, 0x79, 0x2, 0x0, 0x1, 0x0, 0x23, - 0x0, 0x28, 0x0, 0x30, 0x0, 0x65, 0x0, 0x6a, 0x0, 0xaa, 0x0, 0xca, - 0x0, 0xed, 0x0, 0xf1, 0x1, 0x19, 0x1, 0x21, 0x1, 0x3e, 0x1, 0x5b, - 0x1, 0x69, 0x1, 0x81, 0x1, 0x87, 0x1, 0x93, 0x1, 0xc7, 0x1, 0xcb, - 0x1, 0xda, 0x1, 0xe3, 0x1, 0xed, 0x1, 0xfc, 0x2, 0x5, 0x2, 0xe, - 0x2, 0x18, 0x2, 0x25, 0x2, 0x2e, 0x2, 0x39, 0x2, 0x44, 0x2, 0x4d, - 0x2, 0x52, 0x2, 0x57, 0x2, 0x60, 0x2, 0x6a, 0x2, 0x74, 0x2, 0x7f, - 0x2, 0x86, 0x2, 0x8f, 0x2, 0x99, 0x2, 0xa5, 0x2, 0xae, 0x2, 0xb7, - 0x2, 0xc0, 0x2, 0xc5, 0x2, 0xca, 0x2, 0xd5, 0x2, 0xe8, 0x2, 0xfb, - 0x3, 0x4, 0x3, 0xf, 0x3, 0x21, 0x3, 0x2c, 0x3, 0x34, 0x3, 0x3c, - 0x3, 0x4d, 0x3, 0x5e, 0x3, 0x65, 0x3, 0x75, 0x3, 0x85, 0x3, 0x94, - 0x3, 0x9b, 0x3, 0xa2, 0x3, 0xa8, 0x3, 0xb6, 0x3, 0xbf, 0x3, 0xca, - 0x3, 0xd1, 0x3, 0xd9, 0x3, 0xde, 0x3, 0xe3, 0x3, 0xe7, 0x3, 0xeb, - 0x3, 0xef, 0x3, 0xf9, 0x4, 0x4, 0x4, 0xa, 0x4, 0xd, 0x4, 0x11, - 0x4, 0x1c, 0x4, 0x27, 0x4, 0x32, 0x4, 0x3d, 0x4, 0x44, 0x4, 0x4b, - 0x4, 0x51, 0x4, 0x58, 0x4, 0x5f, 0x4, 0x66, 0x4, 0x6b, 0x4, 0x70, - 0x4, 0x74, 0x4, 0x78, 0x4, 0x7c, 0x4, 0x85, 0x4, 0x8f, 0x4, 0x97, - 0x4, 0x9b, 0x4, 0x9f, 0x4, 0xa3, 0x4, 0xa7, 0x4, 0xab, 0x4, 0xb4, - 0x4, 0xbd, 0x4, 0xc6, 0x4, 0xcf, 0x4, 0xd8, 0x4, 0xe1, 0x4, 0xea, - 0x4, 0xf3, 0x4, 0xfc, 0x5, 0x5, 0x5, 0xe, 0x5, 0x17, 0x5, 0x20, - 0x5, 0x27, 0x5, 0x2c, 0x5, 0x32, 0x5, 0x37, 0x5, 0x3c, 0x5, 0x41, - 0x77, 0xb8, 0x83, 0xa2, 0x38, 0xa, 0xac, 0x1a, 0xeb, 0x80, 0xf4, 0xfb, - 0x73, 0xfb, 0x32, 0x65, 0x49, 0x35, 0x73, 0x1e, 0xf7, 0x13, 0x74, 0x5, - 0xa5, 0x2d, 0xa, 0x80, 0x6e, 0x82, 0x3c, 0x7d, 0x8, 0xb, 0x30, 0xa, - 0x20, 0xa, 0xb, 0xfd, 0x49, 0x24, 0xa, 0x13, 0xbc, 0x26, 0xa, 0x15, - 0xfb, 0x84, 0xf7, 0x50, 0x65, 0xde, 0xf7, 0x3e, 0xf2, 0xf7, 0x1b, 0xf7, - 0x23, 0xf7, 0x18, 0x32, 0xf7, 0x19, 0xfb, 0x4c, 0xfb, 0x4f, 0x37, 0xfb, - 0x21, 0xfb, 0x10, 0x1e, 0xf7, 0x23, 0x16, 0xf7, 0x2, 0xc8, 0xb6, 0xce, - 0xd3, 0xc5, 0x5b, 0x22, 0xfb, 0x7, 0x49, 0x58, 0x4b, 0x49, 0x4d, 0xc3, - 0xf7, 0x2, 0x1e, 0xe, 0x21, 0xa, 0x3b, 0xa, 0xb, 0x15, 0xf7, 0xfb, - 0x6, 0xf7, 0x34, 0x5a, 0xf7, 0x31, 0xfb, 0x60, 0xfb, 0x3f, 0x3a, 0xfb, - 0x1d, 0xfb, 0x23, 0xfb, 0x42, 0xf7, 0x20, 0x26, 0xf7, 0xe, 0xf7, 0x47, - 0xb8, 0xf7, 0x11, 0xac, 0x97, 0x1e, 0xfb, 0x23, 0xa2, 0x5, 0x73, 0x83, - 0x79, 0x5a, 0x48, 0x1b, 0x3a, 0x6a, 0xcd, 0xcb, 0x89, 0x1f, 0x8e, 0xe1, - 0x15, 0xd1, 0x8a, 0xb0, 0xc1, 0xce, 0x1b, 0xda, 0xab, 0x55, 0x45, 0x1f, - 0xe, 0x2e, 0xd1, 0x45, 0x37, 0xa, 0xf7, 0x59, 0x15, 0x70, 0x7, 0x3d, - 0x72, 0x4c, 0x34, 0x55, 0x73, 0xac, 0xa9, 0xbc, 0xc4, 0xa4, 0xa4, 0x90, - 0x1e, 0xa9, 0x92, 0xc8, 0x95, 0x9c, 0x94, 0x8, 0xe, 0xf7, 0x26, 0x6, - 0xc3, 0xf7, 0x3b, 0x5, 0xf7, 0xa3, 0x6, 0xc6, 0xfb, 0x3b, 0x5, 0xf7, - 0x2a, 0x6, 0xfb, 0xa4, 0xf9, 0x74, 0x40, 0xa, 0x76, 0xfc, 0x51, 0x15, - 0xe7, 0xf7, 0xa5, 0xe9, 0xfb, 0xa5, 0x5, 0xb, 0x15, 0x27, 0xa, 0xe, - 0x15, 0xfb, 0x3a, 0xd8, 0xfb, 0x61, 0xf7, 0xa0, 0xf7, 0x8d, 0xeb, 0xf7, - 0x4b, 0xf7, 0x50, 0xf7, 0x65, 0x3d, 0xa, 0xfb, 0x22, 0xfb, 0x79, 0x1e, - 0xf7, 0x28, 0x16, 0xf4, 0xac, 0xf7, 0x21, 0xf7, 0x38, 0xf7, 0x43, 0xa1, - 0xfb, 0x39, 0x3a, 0xb, 0x15, 0x2c, 0xa, 0x13, 0xb8, 0x36, 0xa, 0xb, - 0xf7, 0x3, 0xf7, 0x80, 0x1e, 0xf8, 0x16, 0xfb, 0x26, 0xfc, 0x16, 0x7, - 0xfb, 0xf, 0x8b, 0x28, 0xfb, 0x20, 0xfb, 0x1a, 0x7e, 0xe4, 0xf7, 0x19, - 0x1e, 0xf8, 0x16, 0x7, 0xb, 0xf7, 0x15, 0xf8, 0x9e, 0xfb, 0x1f, 0xfb, - 0x67, 0x6, 0xfb, 0x15, 0x8d, 0x33, 0xfb, 0x7, 0x2a, 0x94, 0xe1, 0xf7, - 0x17, 0x1e, 0xf7, 0x67, 0xfb, 0x1f, 0xfb, 0xdd, 0x7, 0xb, 0x95, 0x99, - 0xb4, 0xd0, 0x1b, 0xeb, 0x8b, 0x5d, 0x68, 0x1f, 0x82, 0x7, 0x6f, 0xb, - 0xf8, 0xb5, 0xf7, 0x11, 0xfc, 0x25, 0xf7, 0x5c, 0xf7, 0xfd, 0xf7, 0x11, - 0xfb, 0xfd, 0xf7, 0x39, 0xf8, 0x18, 0xf7, 0x11, 0xfc, 0xa8, 0x6, 0xb, - 0xf7, 0x79, 0xc4, 0x2b, 0xa, 0xe, 0x15, 0x98, 0x5f, 0x8e, 0x84, 0x8e, - 0x83, 0x8, 0xf7, 0x1e, 0x6, 0xb, 0xfc, 0xdc, 0x15, 0xfb, 0x39, 0xd8, - 0xfb, 0x62, 0xf7, 0xa0, 0xf7, 0x8d, 0xeb, 0xf7, 0x4c, 0xf7, 0x4f, 0xf7, - 0x66, 0xfb, 0x5, 0xf7, 0x35, 0xfb, 0x7c, 0xfb, 0x72, 0xfb, 0xf, 0xfb, - 0x21, 0xfb, 0x7a, 0x1e, 0xf7, 0x28, 0x16, 0xf4, 0xac, 0xf7, 0x22, 0xf7, - 0x38, 0xf7, 0x43, 0xa1, 0xfb, 0x3a, 0x3a, 0xfb, 0x14, 0xb, 0x3b, 0xa, - 0x26, 0xa, 0x3a, 0xa, 0xbb, 0xf7, 0x28, 0x1, 0xd7, 0xf7, 0x24, 0x3, - 0xd7, 0x16, 0x2e, 0xa, 0xb, 0x5e, 0xa, 0xa4, 0xfb, 0x48, 0xf7, 0xa0, - 0x2f, 0xa, 0x69, 0xa, 0xf7, 0x3b, 0xf7, 0x10, 0xf8, 0x51, 0x77, 0xb, - 0xfb, 0x8, 0xba, 0x32, 0xf7, 0x14, 0xcf, 0xce, 0xac, 0xc5, 0xb1, 0x1e, - 0x8d, 0x6, 0xb, 0xf5, 0xe1, 0xbf, 0xb6, 0xa7, 0xa6, 0x1e, 0x80, 0xb, - 0x88, 0xd1, 0x8, 0x8a, 0xa9, 0x8d, 0xf7, 0x24, 0xb, 0x20, 0x7d, 0xef, - 0x48, 0x76, 0xf8, 0x4a, 0xf7, 0x0, 0xb, 0x8f, 0x8b, 0xf7, 0x11, 0xf7, - 0x5c, 0xf7, 0x11, 0xf7, 0x39, 0xf7, 0x11, 0xb, 0x41, 0x7d, 0xfb, 0xc, - 0x78, 0xfb, 0x16, 0x1a, 0xb, 0x20, 0x7d, 0xf7, 0x0, 0xf7, 0x16, 0xe1, - 0xf7, 0x10, 0xf6, 0xb, 0xfb, 0x5, 0xf7, 0x36, 0xfb, 0x7c, 0xfb, 0x72, - 0xfb, 0xf, 0xb, 0x57, 0x7d, 0xf7, 0x4, 0xf7, 0xd3, 0xf7, 0x4, 0xb, - 0xa0, 0x76, 0x4d, 0xa, 0xb, 0x5, 0xfb, 0x25, 0x6, 0xb, 0xfb, 0x2c, - 0x5e, 0xf7, 0x5, 0xf7, 0x1a, 0x1e, 0xe, 0x1, 0xd3, 0xf7, 0x26, 0xf7, - 0xb3, 0xf7, 0x26, 0x3, 0xb, 0x1, 0xa2, 0xf7, 0x29, 0xf7, 0x6a, 0xf7, - 0x22, 0x3, 0xb, 0xf8, 0xfa, 0x4b, 0xa, 0xf7, 0x62, 0xfb, 0x7, 0x4b, - 0xa, 0xb, 0xb4, 0x8b, 0xde, 0xc5, 0x1a, 0xe6, 0xb, 0xfe, 0x3c, 0x15, - 0xf7, 0x20, 0xf9, 0x60, 0x6d, 0xa, 0x3e, 0xa, 0xd9, 0xf7, 0x23, 0x1, - 0x56, 0xa, 0x3, 0xb, 0x70, 0x5b, 0x87, 0x6c, 0x1b, 0x76, 0x7f, 0x8c, - 0x90, 0x73, 0x1f, 0xb, 0x12, 0xcd, 0xf7, 0x1f, 0xf7, 0x5d, 0xf7, 0x1f, - 0xb, 0x15, 0xf7, 0xc, 0xf7, 0x7, 0xfb, 0xc, 0x6, 0xb, 0x15, 0xf7, - 0x7, 0xf7, 0x7, 0xfb, 0x7, 0x6, 0xb, 0xfc, 0x15, 0xa0, 0x76, 0xb, - 0xf9, 0x62, 0x77, 0x1, 0xb, 0x6c, 0xa, 0xf8, 0x95, 0xf7, 0x25, 0x49, - 0xa, 0x13, 0x78, 0xb, 0x5, 0xfb, 0x32, 0x6, 0xfb, 0x33, 0xfb, 0xae, - 0xfb, 0x34, 0xf7, 0xae, 0x5, 0xfb, 0x35, 0x6, 0xf7, 0x8e, 0xb, 0x15, - 0xe3, 0x6, 0xf7, 0x11, 0xf7, 0x5f, 0xfb, 0x11, 0xf7, 0x61, 0x5, 0x33, - 0x6, 0xf2, 0xfb, 0x61, 0x5, 0xb, 0x66, 0xa, 0xf7, 0x52, 0xf7, 0x1d, - 0x13, 0x7c, 0xb, 0x5, 0x87, 0x9e, 0x82, 0x87, 0xae, 0x1b, 0xf7, 0x41, - 0xa2, 0xb, 0x15, 0xe3, 0x6, 0x24, 0xf7, 0x64, 0xf2, 0xf7, 0x5c, 0x5, - 0x33, 0x6, 0xfb, 0x11, 0xfb, 0x5c, 0x5, 0xb, 0xc6, 0x78, 0xf7, 0x11, - 0xf9, 0x42, 0xf7, 0x24, 0x42, 0xa, 0xb, 0xf7, 0x13, 0xf8, 0x9d, 0xfb, - 0x13, 0x6, 0xb, 0xad, 0xf7, 0x23, 0xf7, 0x96, 0xf7, 0x23, 0xb, 0xf7, - 0x66, 0xf7, 0x3d, 0xf7, 0x3d, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x3d, 0xf7, - 0x3d, 0xfb, 0x66, 0xb, 0xf7, 0x3c, 0xf7, 0x1c, 0xfb, 0x1b, 0xfb, 0x3c, - 0xfb, 0x3c, 0xfb, 0x1c, 0xfb, 0x1b, 0xfb, 0x3c, 0xb, 0x5f, 0xa, 0xf8, - 0x81, 0xf7, 0x11, 0xb, 0x57, 0xfb, 0x4e, 0x76, 0xf7, 0x54, 0xf7, 0x0, - 0xf7, 0xe8, 0xf7, 0x5, 0x7f, 0x77, 0x12, 0xb, 0xfb, 0xa6, 0xfb, 0x58, - 0xf7, 0x7, 0xf7, 0xb2, 0xf7, 0x8, 0xf7, 0xb2, 0xf7, 0x7, 0x1, 0xb, - 0x77, 0x1, 0xd0, 0xf7, 0x1e, 0xf7, 0xc9, 0xf7, 0x1e, 0x3, 0xd0, 0x16, - 0xf7, 0x1e, 0xb, 0xec, 0x76, 0xf8, 0x2c, 0x77, 0x1, 0xb, 0x15, 0xfc, - 0x16, 0x7, 0xfb, 0x3b, 0xb, 0xf7, 0x7, 0x78, 0xf7, 0x10, 0xb, 0x1, - 0xd7, 0xf7, 0x25, 0xf7, 0x94, 0xf7, 0x2a, 0x3, 0xd7, 0x16, 0xf7, 0x25, - 0xb, 0x45, 0xa, 0x7, 0x13, 0xe8, 0xfb, 0x1a, 0x6, 0xb, 0x4c, 0xa, - 0xf9, 0x82, 0x77, 0x1, 0xd7, 0xf7, 0x13, 0x3, 0xb, 0x7d, 0xa, 0xd0, - 0x16, 0xf7, 0x20, 0xb, 0xf7, 0xf, 0x39, 0xdd, 0x8a, 0x77, 0x12, 0xb, - 0x6, 0x97, 0x8c, 0x8b, 0xb, 0x12, 0xa8, 0xf7, 0x20, 0xb, 0xf7, 0x23, - 0x5, 0xb, 0xfb, 0x20, 0x6, 0xb, 0xc6, 0xa0, 0x76, 0xb, 0x65, 0xa, - 0xaa, 0xac, 0x1b, 0xaa, 0xa2, 0x82, 0x81, 0xb, 0x15, 0xe9, 0x6, 0xf7, - 0x45, 0x83, 0xa, 0xfb, 0x39, 0x6, 0xb, 0x57, 0x7d, 0xf5, 0x2d, 0xe9, - 0xb, 0x68, 0xa, 0xe, 0x5, 0x89, 0x6, 0xb, 0x75, 0xfb, 0x1, 0x26, - 0x1f, 0x3e, 0xfb, 0x1, 0xd8, 0x6, 0xb, 0xf7, 0x9d, 0x16, 0xf7, 0x1d, - 0xf7, 0xc0, 0x6, 0xf7, 0x8f, 0xb, 0xfb, 0x10, 0x7a, 0xfb, 0x3, 0x52, - 0x1e, 0xeb, 0x16, 0xcc, 0xb, 0xa7, 0xf7, 0x55, 0x84, 0xda, 0x1b, 0xf7, - 0xd, 0xf7, 0x3d, 0xb, 0xa0, 0x76, 0xf8, 0xa8, 0x77, 0x1, 0xb, 0xf7, - 0x44, 0xf7, 0x7, 0xfb, 0x44, 0xb, 0x67, 0xa, 0xfb, 0x2d, 0x6, 0xb, - 0xa0, 0x76, 0xf8, 0x2c, 0xf7, 0x1, 0xb, 0x5, 0xf7, 0x9, 0x6, 0xfb, - 0x0, 0xb, 0x5, 0xfb, 0x21, 0x6, 0xfb, 0xb, 0xb, 0x20, 0x78, 0xf7, - 0x6, 0xb, 0x6, 0x7d, 0x89, 0x87, 0xb, 0x82, 0xa, 0xd7, 0xb, 0xfb, - 0x4, 0x6, 0xb, 0xf7, 0x20, 0x3, 0xb, 0x1, 0xcb, 0xf7, 0x28, 0xf7, - 0xfc, 0x85, 0xa, 0xb, 0xfb, 0x58, 0xf7, 0x0, 0xf9, 0x52, 0xf7, 0x0, - 0x1, 0xb, 0xfb, 0x3e, 0xfb, 0x3d, 0xfb, 0x65, 0x1e, 0xe, 0xfb, 0x1e, - 0x6, 0xe, 0xf7, 0xd, 0x1, 0xb, 0xf7, 0x26, 0x5, 0xb, 0xf7, 0x26, - 0x1, 0xb, 0xf7, 0x28, 0x3, 0xb, 0x57, 0x8b, 0xf7, 0xe, 0xf8, 0xe8, - 0x77, 0x1, 0xb, 0xfc, 0x1d, 0x6, 0xf8, 0xf, 0xf8, 0x76, 0x5, 0xb, - 0x15, 0xf7, 0x9, 0xf7, 0x8, 0xfb, 0x9, 0x6, 0xb, 0xb8, 0x6c, 0x1f, - 0x7c, 0xa2, 0x81, 0xa6, 0x84, 0xb, 0x15, 0xf7, 0xd, 0xf7, 0xa, 0xfb, - 0xd, 0x6, 0xb, 0x15, 0xf7, 0x5, 0xf7, 0x9, 0xfb, 0x5, 0x6, 0xb, - 0xf7, 0xd6, 0x7, 0xfb, 0xff, 0xfc, 0x65, 0x5, 0xb, 0x15, 0xf7, 0xa, - 0xf7, 0x9, 0xfb, 0xa, 0x6, 0xb, 0x15, 0xf7, 0xa, 0xf7, 0xb, 0xfb, - 0xa, 0x6, 0xb, 0x15, 0xf7, 0xb, 0xf7, 0x9, 0xfb, 0xb, 0x6, 0xb, - 0x77, 0x1, 0xf7, 0x78, 0xf7, 0x13, 0x3, 0xb3, 0xb, 0x3c, 0x98, 0x76, - 0xf8, 0x9e, 0x77, 0x1, 0xb1, 0xb, 0x15, 0xf7, 0x7, 0xf7, 0x8, 0xfb, - 0x7, 0x6, 0xb, 0xf9, 0x88, 0x5, 0xfb, 0x13, 0x6, 0xe, 0x1, 0xd0, - 0x7d, 0xa, 0xb, 0x15, 0xf7, 0xa, 0x6, 0xc4, 0xb, 0x5, 0xfb, 0x31, - 0x6, 0xb, 0x5, 0xfb, 0x2f, 0x6, 0xb, 0x89, 0x42, 0x5a, 0x7f, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp deleted file mode 100644 index 884c6ebdf6..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp +++ /dev/null @@ -1,1378 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSansBoldItalicFontData[16418] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x17, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x50, 0x53, 0x2d, 0x42, 0x6f, 0x6c, - 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x27, - 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, - 0xf8, 0x14, 0x4, 0x7f, 0xc, 0x2, 0xfb, 0x42, 0xfb, 0x78, 0xfa, 0xee, - 0xfa, 0x56, 0x5, 0xf7, 0x3c, 0xf, 0xf8, 0x9c, 0x11, 0xb1, 0x1c, 0x39, - 0xfc, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, 0x48, 0x55, 0x45, 0x75, - 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, - 0x6d, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x50, 0x53, 0x20, 0x42, 0x6f, - 0x6c, 0x64, 0x20, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x43, 0x68, 0x72, - 0x6F, 0x6D, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x50, 0x53, 0x0, 0x0, - 0x1, 0x0, 0x1, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x86, - 0x2, 0x0, 0x91, 0x0, 0x0, 0x63, 0x0, 0x0, 0x6d, 0x1, 0x0, 0x8c, - 0x0, 0x0, 0x92, 0x0, 0x0, 0xc7, 0x0, 0x0, 0xe4, 0x0, 0x0, 0x2, - 0x5, 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, - 0x1d, 0x1, 0x87, 0x0, 0x0, 0x75, 0x0, 0x0, 0x65, 0x0, 0x0, 0x76, - 0x0, 0x0, 0x79, 0x0, 0x0, 0x70, 0x1, 0x0, 0x7e, 0x0, 0x0, 0x7a, - 0x0, 0x0, 0xc0, 0x0, 0x0, 0x6b, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x41, - 0x0, 0x0, 0x8, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x74, - 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x99, - 0x0, 0x0, 0xdd, 0x0, 0x0, 0x6c, 0x0, 0x0, 0x94, 0x0, 0x0, 0xc6, - 0x0, 0x0, 0x60, 0x2, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, - 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, - 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa6, 0x0, 0x0, 0xa5, - 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, - 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, - 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, - 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, - 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, - 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, - 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, - 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, - 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, - 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, - 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, - 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, - 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, - 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, - 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, - 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, - 0x0, 0x0, 0xe3, 0x0, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, - 0x7, 0x0, 0x37, 0x0, 0x4c, 0x0, 0x76, 0x0, 0x89, 0x0, 0xb9, 0x0, - 0xcf, 0x0, 0xde, 0x0, 0xf6, 0x1, 0x48, 0x1, 0x94, 0x1, 0xbc, 0x1, - 0xe0, 0x2, 0x2b, 0x2, 0x70, 0x2, 0x99, 0x2, 0xd3, 0x3, 0x39, 0x3, - 0xc9, 0x4, 0x5a, 0x5, 0x4, 0x5, 0x21, 0x5, 0x5f, 0x5, 0x97, 0x5, - 0xcc, 0x5, 0xf3, 0x6, 0x1a, 0x6, 0x2e, 0x6, 0x40, 0x6, 0x55, 0x6, - 0x9e, 0x6, 0xca, 0x7, 0x1f, 0x7, 0x83, 0x7, 0xc5, 0x8, 0x25, 0x8, - 0x90, 0x8, 0xc1, 0x9, 0x35, 0x9, 0x9f, 0x9, 0xc2, 0x9, 0xfa, 0xa, - 0x1f, 0xa, 0x3f, 0xa, 0x62, 0xa, 0xb7, 0xb, 0x65, 0xb, 0x96, 0xb, - 0xef, 0xc, 0x39, 0xc, 0x6b, 0xc, 0x97, 0xc, 0xba, 0xd, 0x1a, 0xd, - 0x48, 0xd, 0x58, 0xd, 0x89, 0xd, 0xb7, 0xd, 0xc9, 0xe, 0x7, 0xe, - 0x2d, 0xe, 0x7c, 0xe, 0xb8, 0xf, 0x2d, 0xf, 0x8a, 0xf, 0xe6, 0x10, - 0xa, 0x10, 0x59, 0x10, 0x74, 0x10, 0xb2, 0x10, 0xe1, 0x11, 0x3, 0x11, - 0x31, 0x11, 0x53, 0x11, 0x6c, 0x11, 0x8d, 0x11, 0xae, 0x11, 0xbc, 0x11, - 0xcb, 0x12, 0x1d, 0x12, 0x7d, 0x12, 0xc7, 0x13, 0x21, 0x13, 0x73, 0x13, - 0xb1, 0x14, 0x1c, 0x14, 0x64, 0x14, 0x82, 0x14, 0xc6, 0x14, 0xf2, 0x14, - 0xfe, 0x15, 0x65, 0x15, 0xaf, 0x15, 0xc9, 0x16, 0x24, 0x16, 0x80, 0x16, - 0xbf, 0x17, 0x16, 0x17, 0x5a, 0x17, 0xa8, 0x17, 0xc5, 0x18, 0x1, 0x18, - 0x2f, 0x18, 0x6b, 0x18, 0x98, 0x18, 0xeb, 0x19, 0x4, 0x19, 0x5b, 0x19, - 0xa1, 0x1a, 0x1c, 0x1a, 0x3e, 0x1a, 0x9e, 0x1a, 0xbd, 0x1a, 0xd7, 0x1b, - 0xe, 0x1b, 0x58, 0x1b, 0x6c, 0x1c, 0xa, 0x1c, 0x8f, 0x1c, 0xa7, 0x1d, - 0x32, 0x1d, 0x5a, 0x1d, 0x7d, 0x1d, 0xc5, 0x1d, 0xe8, 0x1e, 0x7, 0x1e, - 0x11, 0x1e, 0x1c, 0x1e, 0x68, 0x1e, 0xb8, 0x1f, 0x2e, 0x1f, 0x44, 0x1f, - 0xdc, 0x20, 0x1b, 0x20, 0x48, 0x20, 0xbc, 0x21, 0x52, 0x21, 0xd7, 0x22, - 0x2d, 0x22, 0x4d, 0x22, 0xf6, 0x23, 0x8, 0x23, 0x98, 0x24, 0x2, 0x24, - 0x10, 0x24, 0x25, 0x24, 0x37, 0x24, 0xd9, 0x24, 0xf1, 0x25, 0x25, 0x25, - 0x56, 0x25, 0x9c, 0x25, 0xf2, 0x26, 0x2, 0x26, 0x4a, 0x26, 0x78, 0x26, - 0x8a, 0x26, 0xbd, 0x26, 0xe2, 0x27, 0x26, 0x27, 0x33, 0x27, 0x93, 0x28, - 0x10, 0x28, 0xaa, 0x29, 0x0, 0x29, 0x18, 0x29, 0x33, 0x29, 0x53, 0x29, - 0x9e, 0x29, 0xc2, 0x29, 0xf9, 0x2a, 0x49, 0x2a, 0xd8, 0x2a, 0xed, 0x2b, - 0x4, 0x2b, 0x24, 0x2b, 0x49, 0x2b, 0x6d, 0x2b, 0x84, 0x2b, 0xa5, 0x2b, - 0xbf, 0x2c, 0xc, 0x2c, 0x66, 0x2c, 0x72, 0x2c, 0x8e, 0x2c, 0xa8, 0x2c, - 0xed, 0x2d, 0x13, 0x2d, 0x46, 0x2d, 0xbd, 0x2d, 0xca, 0x2d, 0xd0, 0x2d, - 0xde, 0x2d, 0xee, 0x2e, 0x1e, 0x2e, 0x6a, 0x2e, 0xe8, 0x2f, 0x5, 0x2f, - 0x2a, 0x2f, 0x4f, 0x2f, 0xa2, 0x2f, 0xc2, 0x30, 0x5b, 0x31, 0x8, 0x31, - 0x8e, 0x31, 0xb1, 0x31, 0xd6, 0x31, 0xfb, 0x32, 0x29, 0x32, 0x3f, 0x32, - 0x5b, 0x32, 0x7d, 0x32, 0x9e, 0x33, 0x1a, 0x33, 0xac, 0x33, 0xbf, 0x33, - 0xe4, 0x34, 0x1, 0x34, 0x52, 0x34, 0x77, 0x34, 0xa3, 0x35, 0x1d, 0x35, - 0x2b, 0x35, 0x37, 0x35, 0x45, 0x35, 0x58, 0x35, 0x94, 0x35, 0xed, 0x36, - 0x24, 0xfb, 0xf9, 0xe, 0xfb, 0xf9, 0xe, 0xf8, 0xf0, 0xd4, 0x42, 0xf7, - 0x26, 0x12, 0x13, 0x40, 0xf7, 0x30, 0xf9, 0x82, 0x15, 0x49, 0x94, 0xae, - 0x3b, 0xf7, 0x4, 0x1b, 0xf7, 0x11, 0xb9, 0xf7, 0x4, 0xad, 0x96, 0x1f, - 0x43, 0x6, 0x13, 0x80, 0x75, 0x80, 0x6c, 0x58, 0x4b, 0x1b, 0x13, 0x40, - 0x55, 0x76, 0xad, 0xb2, 0x81, 0x1f, 0xe, 0xf8, 0xfa, 0xf7, 0x7, 0x1, - 0xf7, 0x7f, 0xf8, 0xfa, 0x15, 0xf7, 0x10, 0x6, 0xa5, 0xf7, 0x7, 0x5, - 0xfb, 0x10, 0x6, 0xe, 0xf7, 0x5c, 0xf9, 0x36, 0x15, 0x51, 0xbd, 0x5b, - 0xc8, 0xc5, 0xbe, 0xb9, 0xc7, 0xc7, 0x59, 0xb5, 0x50, 0x4c, 0x5b, 0x60, - 0x50, 0x1e, 0xc7, 0x16, 0xa5, 0xa1, 0x9d, 0xa8, 0xa5, 0xa2, 0x7a, 0x70, - 0x70, 0x74, 0x76, 0x71, 0x6f, 0x74, 0xa0, 0xa6, 0x1e, 0xe, 0x72, 0xa, - 0xf7, 0x1d, 0xf8, 0xf0, 0x15, 0xf3, 0x52, 0xa, 0xf7, 0x6, 0xfb, 0x26, - 0x15, 0xf3, 0x52, 0xa, 0xe, 0xfb, 0x78, 0xd9, 0xf7, 0x2a, 0x77, 0x1, - 0xb4, 0xdc, 0x3, 0xd6, 0x16, 0x83, 0x7a, 0x71, 0x4f, 0x54, 0x1a, 0x46, - 0xb1, 0x70, 0xc3, 0xaf, 0xbe, 0x9b, 0x9b, 0xa6, 0x1e, 0x9a, 0xcd, 0x5, - 0x89, 0x86, 0x55, 0x79, 0x6a, 0x1b, 0x76, 0x6e, 0x95, 0xb2, 0x9b, 0x8f, - 0xaa, 0xa2, 0xc1, 0x1f, 0xe, 0x72, 0xa, 0xf7, 0x68, 0xf8, 0xf0, 0x8e, - 0xa, 0xf7, 0x2c, 0xf7, 0x26, 0x7a, 0xa, 0x32, 0x34, 0x63, 0xe2, 0x5, - 0x25, 0x6, 0xe, 0x48, 0xa, 0x1, 0xd0, 0x16, 0xf7, 0x23, 0x6, 0xf7, - 0x2, 0xf8, 0xa8, 0x47, 0xa, 0xe, 0xfc, 0x68, 0x8d, 0x76, 0xf9, 0x6d, - 0x77, 0x1, 0x29, 0x78, 0x15, 0xf8, 0xdd, 0xf9, 0x6d, 0x5, 0x3f, 0x6, - 0xfc, 0xdd, 0xfd, 0x6d, 0x5, 0xe, 0x84, 0xa, 0xf9, 0x6b, 0x77, 0x1, - 0xe2, 0x16, 0xf7, 0x21, 0x6, 0xe3, 0xf8, 0x33, 0x5, 0xef, 0x6, 0xa1, - 0xf1, 0x5, 0x27, 0x6, 0xda, 0x9a, 0x9d, 0xa4, 0xb2, 0x1b, 0x99, 0x9d, - 0x87, 0x7d, 0xb1, 0x1f, 0xa6, 0xf0, 0x5, 0x9c, 0x55, 0x59, 0x91, 0x6b, - 0x1b, 0xfb, 0x17, 0x81, 0x28, 0xfb, 0x3, 0x6a, 0x1f, 0x3b, 0x6, 0x76, - 0x25, 0x5, 0xda, 0x6, 0xf7, 0x79, 0xfc, 0x33, 0x15, 0x9b, 0xa, 0xf7, - 0x1, 0xf8, 0x99, 0x3d, 0xa, 0x9a, 0xd2, 0x15, 0xf7, 0x21, 0x6, 0xa5, - 0xf7, 0x13, 0x65, 0xa, 0x84, 0xa, 0xf8, 0x33, 0xf1, 0xf7, 0x66, 0x77, - 0x1, 0xf8, 0x28, 0x16, 0xf7, 0x20, 0x6, 0xf7, 0x2b, 0xf9, 0x5f, 0x3d, - 0xa, 0xfc, 0x67, 0xfd, 0x5f, 0x15, 0x9b, 0xa, 0xe2, 0xf8, 0x33, 0x5, - 0xef, 0x6, 0xa0, 0xf1, 0x5, 0x27, 0x6, 0xda, 0x9c, 0x9a, 0xa4, 0xb2, - 0x1b, 0x99, 0x9f, 0x86, 0x7e, 0xb0, 0x1f, 0xa6, 0xf0, 0x5, 0x9c, 0x55, - 0x5a, 0x91, 0x6a, 0x1b, 0xfb, 0x15, 0x80, 0x28, 0xfb, 0x3, 0x6a, 0x1f, - 0x3c, 0x6, 0x75, 0x25, 0x5, 0xda, 0x6, 0xe, 0x87, 0xa, 0xcf, 0x16, - 0xf8, 0x9a, 0x50, 0xa, 0xfc, 0x4, 0x6, 0xbe, 0xf7, 0x84, 0xf7, 0x4c, - 0xee, 0xa3, 0xf7, 0x7, 0xfb, 0x4c, 0x28, 0xbd, 0xf7, 0x86, 0x94, 0xa, - 0x44, 0xfb, 0xe0, 0x30, 0x59, 0x73, 0xfb, 0x8, 0xe6, 0xbd, 0x5, 0xe, - 0xfb, 0xf9, 0x37, 0xa, 0xdc, 0x16, 0xf7, 0x20, 0x6, 0xd6, 0xf8, 0x0, - 0xe7, 0xcc, 0x9e, 0xe9, 0x2e, 0x4a, 0xc2, 0xf7, 0x98, 0x5, 0xfb, 0x20, - 0x6, 0x44, 0xfb, 0xe8, 0x29, 0x48, 0x77, 0x2d, 0xef, 0xcd, 0x5, 0xe, - 0x73, 0x8b, 0xf7, 0xd, 0xf8, 0x7f, 0xf7, 0x10, 0xbe, 0x95, 0xa, 0xa4, - 0x16, 0xf8, 0xcb, 0x40, 0xa, 0x8c, 0x8a, 0x2c, 0x8b, 0x2b, 0x1b, 0x52, - 0x4c, 0x8b, 0x8a, 0x44, 0x1f, 0xf8, 0x3e, 0xf8, 0x88, 0xa0, 0xf7, 0x8, - 0x5, 0xfc, 0xa2, 0x6, 0x71, 0xfb, 0x10, 0x5, 0xf7, 0xe8, 0x6, 0xfc, - 0x37, 0xfc, 0x84, 0x5, 0xf7, 0xc7, 0xf9, 0x33, 0x15, 0xf7, 0x19, 0x6, - 0xf7, 0x28, 0x67, 0xa, 0xfb, 0xa, 0x6, 0x34, 0x31, 0x65, 0xe5, 0x5, - 0x27, 0x6, 0xe, 0xfb, 0x1b, 0x8b, 0xf7, 0x9, 0xf7, 0xc0, 0xf7, 0x5, - 0xd0, 0x95, 0xa, 0x9f, 0x16, 0xf8, 0x69, 0x6, 0xa5, 0xf7, 0x9, 0x5, - 0xfb, 0xa8, 0x6, 0xf7, 0xd1, 0xf7, 0xdb, 0x9e, 0xe1, 0x5, 0xfc, 0x56, - 0x6, 0x72, 0xfb, 0x5, 0x5, 0xf7, 0x94, 0x6, 0xfb, 0xce, 0xfb, 0xd3, - 0x5, 0xf7, 0x83, 0xf8, 0x89, 0x15, 0xf7, 0x25, 0x6, 0xf7, 0x34, 0x67, - 0xa, 0xfb, 0x14, 0x6, 0x2d, 0x31, 0x61, 0xe5, 0x5, 0x20, 0x6, 0xe, - 0x8b, 0xf7, 0x1b, 0xf8, 0xdb, 0x77, 0x1, 0xe9, 0xf7, 0xc3, 0x3, 0xe9, - 0x16, 0x7c, 0xa, 0xa8, 0xf7, 0x1b, 0x47, 0xa, 0xb1, 0xbb, 0x15, 0xdb, - 0x6, 0xf7, 0x8, 0xf7, 0xf5, 0xb2, 0xf7, 0x4a, 0x5, 0xfb, 0x2d, 0x6, - 0x67, 0xfb, 0x4a, 0x5, 0xe, 0xfb, 0x35, 0xf8, 0x68, 0x76, 0xf7, 0xa3, - 0x77, 0x1, 0xf7, 0x55, 0xf7, 0x25, 0xb9, 0xf7, 0x25, 0x3, 0xf8, 0x14, - 0xf8, 0x53, 0x15, 0xdd, 0x6, 0xb5, 0xf7, 0x22, 0xa0, 0xf7, 0x15, 0x7a, - 0xa, 0x78, 0xfb, 0x15, 0x5, 0xfb, 0x57, 0xfb, 0x22, 0x15, 0xdd, 0x6, - 0xb7, 0xf7, 0x22, 0x9e, 0xf7, 0x15, 0x5, 0xfb, 0xd, 0x6, 0x77, 0xfb, - 0x15, 0x5, 0xe, 0x3c, 0xa0, 0x76, 0xf8, 0x35, 0xf2, 0xf7, 0x46, 0x77, - 0x1, 0xe6, 0x16, 0xf7, 0xb, 0x6, 0xb5, 0xf7, 0x47, 0x5, 0xf7, 0xb, - 0x6, 0x61, 0xfb, 0x47, 0x5, 0xf7, 0xb, 0x6, 0xb5, 0xf7, 0x47, 0x5, - 0xf7, 0x2e, 0xf1, 0xfb, 0x16, 0x6, 0xab, 0xf7, 0x1c, 0x5, 0xed, 0xf2, - 0x41, 0x6, 0xb5, 0xf7, 0x46, 0x5, 0xfb, 0xf, 0x6, 0x62, 0xfb, 0x46, - 0x5, 0xfb, 0x9, 0x6, 0xb5, 0xf7, 0x46, 0x5, 0xfb, 0xb, 0x6, 0x60, - 0xfb, 0x46, 0x5, 0xfb, 0x2b, 0x24, 0xf7, 0x13, 0x6, 0x6c, 0xfb, 0x1c, - 0x5, 0x2b, 0x25, 0xd3, 0x6, 0xf7, 0x24, 0xf1, 0x15, 0xaa, 0xf7, 0x1c, - 0x5, 0xf7, 0xa, 0x6, 0x6b, 0xfb, 0x1c, 0x5, 0xe, 0x3c, 0x2d, 0x76, - 0xe3, 0xf7, 0x3, 0xf9, 0x47, 0x77, 0x1, 0xf7, 0x2e, 0xf7, 0xe, 0xf7, - 0x46, 0xf7, 0xc, 0x3, 0xce, 0xf7, 0x5b, 0x15, 0x93, 0xfb, 0x7, 0xcf, - 0x3c, 0xec, 0x73, 0x76, 0x2b, 0x18, 0xd4, 0x6, 0x9e, 0xe3, 0x5, 0xf7, - 0x41, 0xe5, 0xf4, 0xf7, 0x5, 0xf7, 0x26, 0xfb, 0x12, 0xc9, 0x5f, 0x9c, - 0x1f, 0xb6, 0xf7, 0x5b, 0x97, 0x85, 0xa7, 0x7b, 0x94, 0x53, 0x19, 0xf7, - 0x12, 0x93, 0x80, 0xf7, 0x6, 0x42, 0xba, 0x47, 0x9d, 0x19, 0x95, 0xbe, - 0x5, 0x44, 0x6, 0x81, 0x61, 0x5, 0xfb, 0xb, 0xfb, 0x12, 0x4e, 0xfb, - 0x1d, 0x5b, 0x9f, 0xfb, 0x5, 0xf7, 0x1d, 0x50, 0x1f, 0x5c, 0xfb, 0x71, - 0x50, 0xa5, 0x84, 0xcd, 0x89, 0xa0, 0x19, 0xf7, 0x22, 0xf7, 0x82, 0x15, - 0x66, 0xa0, 0x72, 0xa7, 0xb4, 0x1a, 0xba, 0xb2, 0xb9, 0xc8, 0x89, 0x1e, - 0x61, 0xfc, 0xb2, 0x15, 0xb5, 0xf7, 0x5c, 0x5, 0xb4, 0x77, 0xb0, 0x76, - 0x57, 0x1a, 0x63, 0x70, 0x4f, 0x2e, 0x84, 0x1e, 0xe, 0xf7, 0x92, 0x7a, - 0xdb, 0x4e, 0x76, 0xf7, 0xaf, 0xdc, 0x8f, 0xdb, 0xf7, 0x5d, 0xdb, 0x8a, - 0x77, 0x12, 0xf7, 0xfa, 0xf0, 0xf7, 0xe9, 0xf0, 0x13, 0x7b, 0xf7, 0x81, - 0xf8, 0x6e, 0x15, 0x90, 0x99, 0xf7, 0x2b, 0xce, 0x9d, 0xa1, 0x82, 0x68, - 0x76, 0x7e, 0xfb, 0x1c, 0x47, 0x63, 0x8b, 0xaa, 0x99, 0x1e, 0x47, 0xfc, - 0x81, 0x15, 0xf7, 0x2, 0x6, 0x13, 0x77, 0xf8, 0xe2, 0xf9, 0x6c, 0x5, - 0xfb, 0x3, 0x6, 0xfd, 0x2, 0xfb, 0x75, 0x15, 0x4b, 0xb0, 0x44, 0xeb, - 0xf7, 0x30, 0xad, 0xf7, 0x2f, 0xcb, 0x1e, 0x13, 0xbb, 0xc4, 0x71, 0xe0, - 0xfb, 0x1, 0xfb, 0x1f, 0x5a, 0xfb, 0x1a, 0x2f, 0x1e, 0xf8, 0x4e, 0xfc, - 0x1, 0x15, 0x4a, 0xb0, 0x44, 0xeb, 0xf7, 0x2f, 0xae, 0xf7, 0x30, 0xcb, - 0xc4, 0x70, 0xe0, 0x20, 0xfb, 0x20, 0x5a, 0xfb, 0x1b, 0x30, 0x1e, 0xf0, - 0x81, 0x15, 0x91, 0x98, 0xf7, 0x29, 0xd0, 0x9b, 0xa2, 0x83, 0x68, 0x76, - 0x7d, 0xfb, 0x1d, 0x48, 0x63, 0x8b, 0xab, 0x99, 0x1e, 0xe, 0xe2, 0x7d, - 0xf7, 0x5, 0x2a, 0x76, 0xf9, 0x19, 0xe5, 0x12, 0xe4, 0xf7, 0x23, 0x9a, - 0xf7, 0x19, 0x13, 0x98, 0xf7, 0xac, 0xf8, 0x3b, 0x15, 0x4b, 0x6b, 0xfb, - 0x13, 0x4e, 0xfb, 0x1f, 0x1a, 0x32, 0xcd, 0xfb, 0x8, 0xf7, 0x49, 0xec, - 0xd4, 0xad, 0xa9, 0xb2, 0x1e, 0x13, 0x58, 0x9f, 0x77, 0xb4, 0x69, 0xa6, - 0x7c, 0xe7, 0xe6, 0x18, 0x8a, 0x8c, 0x86, 0x8f, 0x8c, 0x1a, 0x6d, 0xa2, - 0x7d, 0x98, 0x72, 0xa2, 0xa7, 0xa5, 0xae, 0xbb, 0x9e, 0xae, 0x23, 0xc6, - 0x18, 0x68, 0x56, 0x7b, 0x7c, 0x81, 0x81, 0x76, 0xa1, 0x58, 0xd1, 0x62, - 0xcf, 0x8, 0x13, 0x8, 0xf7, 0x2f, 0xd6, 0x9c, 0xe3, 0xab, 0x1a, 0x13, - 0x28, 0xc7, 0x56, 0xd7, 0xfb, 0xc, 0x23, 0x25, 0x54, 0xfb, 0x9, 0x5e, - 0x99, 0x62, 0x9e, 0x66, 0x1e, 0xbf, 0x2a, 0x15, 0xac, 0x52, 0xbf, 0x40, - 0xbb, 0x53, 0x8, 0x13, 0x98, 0x7c, 0x73, 0x63, 0x73, 0x4f, 0x1b, 0x3e, - 0x6b, 0xb7, 0xbb, 0xd9, 0xd5, 0xb7, 0xa5, 0x98, 0x1f, 0xd1, 0xf7, 0x2f, - 0x15, 0x84, 0x98, 0x7c, 0x9f, 0xab, 0x1a, 0x13, 0x0, 0xb6, 0xaa, 0xb2, - 0xb2, 0xac, 0x9f, 0x77, 0x71, 0x5f, 0x50, 0x66, 0x61, 0x77, 0x1e, 0xe, - 0xfc, 0x21, 0xf8, 0x68, 0x76, 0xf7, 0xa3, 0x77, 0x1, 0xf7, 0x39, 0xf8, - 0x53, 0x15, 0xe4, 0x6, 0xb7, 0xf7, 0x22, 0xa2, 0xf7, 0x15, 0x66, 0xa, - 0x77, 0xfb, 0x15, 0x5, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, 0x77, 0x1, - 0xd7, 0xf7, 0x19, 0x3, 0xf7, 0x33, 0xfb, 0x64, 0x15, 0xf1, 0x6, 0x8c, - 0x89, 0x92, 0x8a, 0x8d, 0x1e, 0x6d, 0xed, 0x78, 0xf7, 0x2c, 0xf4, 0x1a, - 0xf7, 0x9a, 0xf7, 0x2a, 0xf7, 0x76, 0xf7, 0x3, 0xe4, 0x1e, 0xfb, 0x5, - 0x6, 0x32, 0x2d, 0xfb, 0x54, 0xfb, 0x62, 0xfb, 0xa9, 0x1a, 0x50, 0x94, - 0xfb, 0x22, 0xd5, 0xfb, 0x38, 0x1e, 0xe, 0xfb, 0x4f, 0x76, 0xfa, 0x42, - 0x77, 0x1, 0xf7, 0x80, 0xf7, 0x19, 0x3, 0x72, 0xfb, 0x64, 0x15, 0xf7, - 0x5, 0x6, 0xe4, 0xe9, 0xf7, 0x54, 0xf7, 0x62, 0xf7, 0xa9, 0x1a, 0xc6, - 0x82, 0xf7, 0x22, 0x41, 0xf7, 0x38, 0x1e, 0x25, 0x6, 0xab, 0x26, 0x9f, - 0xfb, 0x2d, 0xfb, 0x1, 0x1a, 0xfb, 0xd1, 0xfb, 0x5e, 0xfb, 0x6e, 0x50, - 0x5f, 0x1e, 0xe, 0xfb, 0x8a, 0xf8, 0x2c, 0x76, 0xf7, 0xdf, 0x77, 0x1, - 0xf7, 0x8c, 0xf8, 0x17, 0x15, 0xcc, 0xf7, 0x2, 0xca, 0xfb, 0x2, 0xd0, - 0xc1, 0x39, 0xe8, 0xf7, 0xa, 0xa4, 0x71, 0xe0, 0xfb, 0x6, 0x57, 0x97, - 0xf7, 0x12, 0x5, 0x37, 0x6, 0x98, 0xfb, 0x12, 0xfb, 0x0, 0xc2, 0x6f, - 0x36, 0xf7, 0xa, 0x6f, 0x32, 0x2d, 0x5, 0xe, 0x58, 0xf7, 0x52, 0xf7, - 0x14, 0x1, 0xf7, 0xab, 0xf7, 0x19, 0x3, 0xdd, 0xf7, 0x52, 0x15, 0xf7, - 0x59, 0xfb, 0x52, 0xf7, 0x19, 0xf7, 0x52, 0xf7, 0x5a, 0xf7, 0x14, 0xfb, - 0x5a, 0xf7, 0x50, 0xfb, 0x19, 0xfb, 0x50, 0xfb, 0x59, 0x6, 0xe, 0xfb, - 0xf9, 0xfb, 0x27, 0x76, 0xf7, 0xce, 0x77, 0x1, 0xc9, 0x8d, 0x15, 0xd0, - 0x6, 0x7d, 0x4a, 0x70, 0x74, 0x5b, 0x80, 0x7d, 0x44, 0x18, 0xf7, 0x2d, - 0x8e, 0xa4, 0xf7, 0x16, 0x98, 0xca, 0xa5, 0xf7, 0xa, 0x18, 0xfb, 0x2d, - 0x6, 0xe, 0xf7, 0x6b, 0xf7, 0x16, 0x1, 0xd4, 0xf7, 0x6b, 0x15, 0xf7, - 0xa9, 0x6, 0xa8, 0xf7, 0x16, 0x5, 0xfb, 0xa9, 0x6, 0xe, 0xfb, 0xf9, - 0x8b, 0xf7, 0x26, 0x1, 0xcb, 0x16, 0xf7, 0x2b, 0x6, 0xa9, 0xf7, 0x26, - 0x5, 0x97, 0xa, 0xe, 0xfb, 0xf9, 0x78, 0xa, 0x76, 0xf8, 0x8d, 0x3, - 0x66, 0x78, 0x15, 0xef, 0x6, 0xf8, 0x29, 0xf9, 0x88, 0x5, 0x25, 0x6, - 0xe, 0x3c, 0x78, 0xf7, 0x4, 0xf8, 0x8d, 0xf7, 0x4, 0x1, 0xe1, 0xf7, - 0xf, 0xf7, 0xb0, 0xf7, 0x10, 0x3, 0xe1, 0xf7, 0x63, 0x15, 0xfb, 0x3b, - 0xea, 0x50, 0xf7, 0x6, 0xf7, 0x81, 0xe0, 0xf7, 0xe6, 0xf7, 0x30, 0xf7, - 0x3e, 0x2d, 0xcc, 0xfb, 0x5, 0xfb, 0x7a, 0x2d, 0xfb, 0xe3, 0xfb, 0x3c, - 0x1e, 0xf7, 0xf, 0x16, 0xb6, 0xc6, 0xf7, 0xf0, 0xf7, 0x1b, 0xc5, 0xab, - 0x3c, 0x5f, 0x44, 0x52, 0xfb, 0xcb, 0xfb, 0x1b, 0x45, 0x75, 0xe6, 0xa2, - 0x1e, 0xe, 0x3c, 0xa0, 0x76, 0xf9, 0x5a, 0x77, 0x1, 0xf7, 0x41, 0xf7, - 0xf8, 0x3, 0xf7, 0x9c, 0x16, 0xf7, 0x14, 0x6, 0xf7, 0x1d, 0xf9, 0x5a, - 0x5, 0x3e, 0x6, 0x39, 0x2c, 0xfb, 0x1, 0x56, 0x4b, 0x6c, 0x73, 0xfb, - 0x10, 0x18, 0xb3, 0x95, 0xdb, 0xa7, 0xcd, 0xba, 0x8, 0xe, 0x3c, 0x8b, - 0xf7, 0x12, 0xf8, 0x6f, 0xf7, 0x1, 0x1, 0xf8, 0x54, 0xf7, 0x20, 0x3, - 0xa4, 0x16, 0xf8, 0x74, 0x6, 0xa9, 0xf7, 0x12, 0x5, 0xfb, 0xa6, 0x6, - 0xb0, 0xb5, 0x9b, 0x99, 0xf7, 0x10, 0xf2, 0x8, 0xf7, 0x0, 0xe4, 0xb5, - 0xd1, 0xd7, 0x1a, 0xdf, 0x4f, 0xf5, 0xfb, 0x45, 0xfb, 0x15, 0x28, 0x45, - 0xfb, 0x19, 0x73, 0x1e, 0xf7, 0x21, 0x77, 0x5, 0xbf, 0x96, 0xae, 0xc9, - 0xd1, 0x1b, 0xc3, 0xaf, 0x61, 0x65, 0x38, 0xfb, 0x14, 0x35, 0x40, 0x48, - 0x1f, 0xfb, 0x2, 0x2f, 0x2d, 0x3f, 0x7b, 0xfb, 0x9, 0x8, 0xe, 0x3c, - 0x78, 0xf7, 0x6, 0xf7, 0x63, 0xf7, 0x9, 0xf7, 0x46, 0xf7, 0x5, 0x1, - 0xf8, 0x60, 0xf7, 0x28, 0x3, 0xcc, 0xf7, 0x47, 0x15, 0xfb, 0x2b, 0xa0, - 0xf7, 0x4, 0x5c, 0xf2, 0x1b, 0xf7, 0x3b, 0xf3, 0xf7, 0xb, 0xf7, 0x1, - 0xc9, 0x68, 0xc5, 0x50, 0xa8, 0x1f, 0xcc, 0xa1, 0xcc, 0xc3, 0xe3, 0x1a, - 0xe0, 0x45, 0xf0, 0xfb, 0x2f, 0xfb, 0x4c, 0x65, 0xfb, 0x25, 0x64, 0x7e, - 0x1e, 0xf7, 0x1d, 0x71, 0x5, 0xc1, 0x9a, 0xa7, 0xb6, 0xc2, 0x1b, 0xaa, - 0xb9, 0x7c, 0x51, 0x49, 0x4f, 0x64, 0x3d, 0x1f, 0x71, 0xfb, 0x9, 0x5, - 0xd0, 0xc2, 0x72, 0x47, 0x4e, 0x5e, 0x56, 0x42, 0x4b, 0x77, 0xb5, 0xc5, - 0x81, 0x1f, 0xe, 0x3c, 0xa0, 0x76, 0xf7, 0x25, 0xf7, 0xa, 0xf8, 0x38, - 0x77, 0x1, 0xc7, 0xf8, 0xae, 0x3, 0xc7, 0xf7, 0x25, 0x15, 0xf7, 0xb1, - 0x6, 0x6b, 0xfb, 0x25, 0x5, 0xf7, 0x1a, 0x6, 0xaa, 0xf7, 0x25, 0x5, - 0xe3, 0x6, 0xa4, 0xf7, 0xa, 0x5, 0x33, 0x6, 0xea, 0xf8, 0x53, 0x7a, - 0xa, 0xfc, 0x1b, 0xfc, 0x55, 0x5, 0xf7, 0x22, 0x8d, 0x15, 0xf7, 0x50, - 0xf7, 0x72, 0x8d, 0x89, 0x5c, 0xfb, 0x70, 0x5, 0xe, 0x20, 0x78, 0xf7, - 0x7, 0xf7, 0xab, 0xf2, 0xf7, 0x2, 0xf7, 0x14, 0x1, 0xc8, 0xf7, 0x24, - 0xf7, 0x73, 0xf7, 0x27, 0x3, 0xc8, 0xf7, 0x5a, 0x15, 0xfb, 0x22, 0x8d, - 0xf1, 0x40, 0xf7, 0x9, 0x1b, 0xf7, 0x44, 0xf7, 0x9, 0xf7, 0x27, 0xf7, - 0x28, 0xf7, 0x9, 0x3d, 0xe0, 0xfb, 0xd, 0x60, 0x73, 0x81, 0x83, 0x78, - 0x1f, 0xae, 0xf7, 0x2, 0x5, 0xf7, 0x8f, 0x6, 0xa7, 0xf7, 0x14, 0x5, - 0xfc, 0x11, 0x6, 0xfb, 0x6, 0xfc, 0x1, 0xf7, 0xe, 0x82, 0x5, 0xbe, - 0xbc, 0xbd, 0x8b, 0x94, 0x1b, 0xb7, 0xb8, 0x73, 0x3f, 0xfb, 0x9, 0x42, - 0x4d, 0x49, 0x4a, 0x75, 0xbc, 0xcc, 0x8e, 0x1f, 0xe, 0x3c, 0x78, 0xf7, - 0x4, 0xf7, 0xb0, 0xe7, 0xf7, 0x15, 0xf7, 0x4, 0x1, 0xe0, 0xf7, 0x26, - 0xf7, 0x5e, 0xf7, 0x27, 0x3, 0xf7, 0xa3, 0xf8, 0x4c, 0x15, 0xb7, 0x98, - 0xaf, 0xf7, 0x6, 0xe3, 0x1b, 0xc9, 0x90, 0x59, 0x72, 0x8d, 0x1f, 0xf7, - 0x22, 0x94, 0x5, 0xf7, 0xd, 0x7c, 0x45, 0xc4, 0xfb, 0x7, 0x1b, 0xfb, - 0x6b, 0xfb, 0xb, 0xfb, 0x8f, 0xfb, 0x81, 0xfb, 0x10, 0xd7, 0xfb, 0x9, - 0xf7, 0x2a, 0xf7, 0x43, 0xe9, 0xf7, 0x2a, 0xf7, 0x14, 0xf7, 0x11, 0x3a, - 0xe0, 0xfb, 0x10, 0x64, 0x6a, 0x82, 0x77, 0x6b, 0x1f, 0x63, 0xfb, 0x6e, - 0x15, 0xe3, 0xb8, 0xce, 0xd7, 0xb0, 0xb7, 0x6d, 0x33, 0xfb, 0x0, 0x54, - 0x51, 0x4c, 0x47, 0x7b, 0xde, 0xb9, 0x1e, 0xe, 0x3c, 0xa0, 0x76, 0xf8, - 0xdd, 0xf7, 0x11, 0x1, 0xf7, 0x27, 0x16, 0xf7, 0x27, 0x6, 0xa7, 0xf7, - 0x1c, 0xf7, 0x2d, 0xf7, 0xe7, 0xf7, 0x47, 0xf7, 0x13, 0xa1, 0xeb, 0x18, - 0xfc, 0x9c, 0x6, 0x6c, 0xfb, 0x11, 0x5, 0xf7, 0xe7, 0x6, 0xfb, 0x8e, - 0xfb, 0x9c, 0x4b, 0xfb, 0xb3, 0x88, 0x75, 0x8, 0xe, 0x3c, 0x78, 0xf6, - 0xf7, 0x80, 0xf6, 0xf7, 0x38, 0xf6, 0x1, 0xd0, 0xf7, 0x2d, 0xf7, 0x65, - 0xf7, 0x29, 0x3, 0xf7, 0x7c, 0xf8, 0x16, 0x15, 0xfb, 0x21, 0x5f, 0x75, - 0xfb, 0xd, 0x5d, 0x1a, 0x22, 0xdc, 0x32, 0xf7, 0x28, 0xf7, 0x48, 0xf1, - 0xf7, 0x13, 0xf7, 0x6, 0xee, 0x47, 0xb1, 0x6f, 0x9b, 0x1e, 0xac, 0x98, - 0xee, 0xa9, 0xf7, 0x0, 0x1a, 0xf0, 0x37, 0xde, 0xfb, 0x1e, 0xfb, 0x3e, - 0x41, 0xfb, 0xd, 0x38, 0x3b, 0xc6, 0x71, 0xa2, 0x7d, 0x1e, 0x81, 0xfb, - 0x67, 0x15, 0xcf, 0xb3, 0xdc, 0xdd, 0xbe, 0xaf, 0x55, 0x5b, 0x60, 0x72, - 0x30, 0x29, 0x62, 0x5e, 0xa4, 0xc9, 0x1e, 0xcf, 0xf7, 0xdf, 0x15, 0xc4, - 0xbd, 0xb3, 0xbf, 0xc1, 0xa7, 0x65, 0x64, 0x59, 0x5b, 0x5e, 0x53, 0x5b, - 0x6b, 0xab, 0xb6, 0x1e, 0xe, 0x3c, 0x78, 0xf7, 0x4, 0xfb, 0x4, 0xf7, - 0x4a, 0xc6, 0xe7, 0xf7, 0xb0, 0xf7, 0x4, 0x1, 0xf7, 0x9, 0xf7, 0x28, - 0xf7, 0x5e, 0xf7, 0x28, 0x3, 0xd9, 0xf7, 0x33, 0x15, 0xfb, 0xd, 0x9a, - 0xd2, 0x52, 0xf7, 0x7, 0x1b, 0xf7, 0x6c, 0xf7, 0xc, 0xf7, 0x90, 0xf7, - 0x81, 0xf7, 0x10, 0x3f, 0xf7, 0x8, 0xfb, 0x2b, 0xfb, 0x44, 0x2c, 0xfb, - 0x2f, 0xfb, 0x14, 0xfb, 0x11, 0xdd, 0x3b, 0xf7, 0x11, 0xb2, 0xab, 0x94, - 0x9f, 0xac, 0x1f, 0x5f, 0x7e, 0x67, 0xfb, 0x6, 0x32, 0x1b, 0x4d, 0x86, - 0xbd, 0xa4, 0x88, 0x1f, 0xb8, 0xf7, 0x97, 0x15, 0xf7, 0x0, 0xc2, 0xca, - 0xca, 0xd0, 0x9a, 0x3a, 0x5d, 0x33, 0x5f, 0x46, 0x3e, 0x67, 0x5e, 0xa4, - 0xe3, 0x1e, 0xe, 0x8b, 0xf7, 0x17, 0xf7, 0x8f, 0xf7, 0x16, 0x1, 0xf7, - 0x44, 0xf8, 0x12, 0x15, 0xf7, 0x26, 0x6, 0xa8, 0xf7, 0x16, 0x93, 0xa, - 0xfb, 0x5, 0xfc, 0x94, 0x15, 0xf7, 0x26, 0x6, 0xa8, 0xf7, 0x17, 0x93, - 0xa, 0xe, 0xfb, 0x27, 0x76, 0xf7, 0x47, 0x76, 0xf8, 0x19, 0xf7, 0x19, - 0x1, 0xc3, 0xf7, 0xbb, 0x3, 0xe5, 0x81, 0x15, 0xcf, 0x6, 0x7d, 0x4f, - 0x70, 0x75, 0x5c, 0x81, 0x7d, 0x49, 0x18, 0xf7, 0x2a, 0x8e, 0xa5, 0xf7, - 0xd, 0x97, 0xc5, 0xa5, 0xf7, 0x2, 0x18, 0x97, 0xa, 0xc2, 0xf7, 0x93, - 0x15, 0xf7, 0x27, 0x6, 0xa9, 0xf7, 0x19, 0x7b, 0xa, 0xe, 0x58, 0x98, - 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xdd, 0xf7, 0x58, 0x15, 0xf8, 0x8b, 0xfb, - 0x60, 0x5, 0xf7, 0x17, 0x7, 0xfb, 0xdd, 0xf7, 0x17, 0xf7, 0xdd, 0xf7, - 0x13, 0x5, 0xf7, 0x19, 0x7, 0xfc, 0x8b, 0xfb, 0x60, 0x5, 0xe, 0x58, - 0xe2, 0xf7, 0xb, 0xe9, 0xf7, 0xb, 0x1, 0xc5, 0xf8, 0xd3, 0x3, 0xc5, - 0xe2, 0x15, 0xf8, 0xd3, 0xf7, 0xb, 0xfc, 0xd3, 0x6, 0xe9, 0x4, 0xf8, - 0xd3, 0xf7, 0xb, 0xfc, 0xd3, 0x6, 0xe, 0x58, 0x98, 0x76, 0xf8, 0x9e, - 0x77, 0x1, 0xf5, 0x83, 0x15, 0xf8, 0x8b, 0xf7, 0x60, 0x5, 0xf7, 0x6, - 0x7, 0xfc, 0x8b, 0xf7, 0x60, 0x98, 0xa, 0x7, 0xf7, 0xdc, 0xfb, 0x17, - 0xfb, 0xdc, 0xfb, 0x13, 0x5, 0xe, 0x73, 0x8b, 0xf7, 0x1b, 0xf8, 0x7d, - 0xf2, 0x1, 0xf7, 0x98, 0xf7, 0x47, 0x15, 0xf7, 0x15, 0x6, 0x96, 0xca, - 0x9f, 0x9b, 0xdd, 0xce, 0x8, 0xf7, 0xa, 0xea, 0xbe, 0xbc, 0xda, 0x1a, - 0xdf, 0x45, 0xea, 0xfb, 0x35, 0xfb, 0x50, 0x46, 0xfb, 0x1b, 0x45, 0x79, - 0x1e, 0xf7, 0x17, 0x74, 0x5, 0xf7, 0x9, 0xa6, 0xd3, 0x93, 0xb6, 0x1b, - 0xd8, 0xa1, 0x5f, 0x6b, 0x66, 0x75, 0x79, 0x35, 0x42, 0x1f, 0xfb, 0x4, - 0x2d, 0x61, 0x5b, 0x7c, 0x28, 0x8, 0x5f, 0xfb, 0x47, 0x15, 0xf7, 0x21, - 0x6, 0xa9, 0xf7, 0x1b, 0x92, 0xa, 0xe, 0xf8, 0x49, 0x4d, 0xda, 0xf7, - 0x0, 0xda, 0xf7, 0xca, 0xda, 0xed, 0xda, 0x1, 0xf7, 0x61, 0xdb, 0xe0, - 0xf7, 0x5, 0xf8, 0x64, 0xdb, 0x3, 0xf9, 0x25, 0xf7, 0x42, 0x15, 0x79, - 0x8f, 0x94, 0x6c, 0xce, 0x1b, 0xf7, 0x46, 0xf7, 0x4, 0xf7, 0x37, 0xf7, - 0x28, 0xf7, 0x4c, 0xfb, 0x1b, 0xf7, 0x2a, 0xfb, 0x83, 0xfb, 0xd4, 0xfb, - 0x14, 0xfb, 0x87, 0xfb, 0x5b, 0xfb, 0xa5, 0xf7, 0x7f, 0xfb, 0x9, 0xf7, - 0x6c, 0xf7, 0x1d, 0xf7, 0x47, 0xb4, 0xf7, 0x2e, 0xd8, 0x1f, 0x2f, 0x6, - 0x68, 0x6d, 0x46, 0x3a, 0xfb, 0x5e, 0x1b, 0xfb, 0xb5, 0x39, 0xf7, 0x41, - 0xf7, 0x1e, 0xf7, 0xf, 0xca, 0xf7, 0x84, 0xf7, 0xc4, 0xf7, 0x7a, 0xcc, - 0xfb, 0x2b, 0x28, 0xfb, 0x1d, 0xfb, 0x3, 0x30, 0x61, 0x73, 0x91, 0xa9, - 0xa8, 0x92, 0x1f, 0xcc, 0xf7, 0xcb, 0x5, 0xfb, 0x6, 0x6, 0x80, 0x5b, - 0x5, 0xc0, 0x67, 0x56, 0x90, 0x6f, 0x1b, 0xfb, 0x30, 0x3b, 0xfb, 0x39, - 0xfb, 0xd, 0x28, 0xc8, 0x38, 0xf5, 0xd0, 0xb3, 0xb1, 0x96, 0x96, 0x1f, - 0xfb, 0x42, 0xf7, 0x19, 0x15, 0xc8, 0xab, 0xf7, 0x26, 0xf0, 0xd2, 0x95, - 0x42, 0x70, 0x51, 0x6a, 0xfb, 0x2c, 0x24, 0x4f, 0x79, 0xbf, 0xbe, 0x1e, - 0xe, 0x68, 0xa, 0xf7, 0x33, 0xf7, 0xc, 0xf8, 0x4b, 0x77, 0x1, 0x9f, - 0x16, 0x5e, 0xa, 0xe1, 0xf7, 0x33, 0x5, 0xf7, 0xaf, 0x6, 0xa3, 0xfb, - 0x33, 0x5, 0xf7, 0x1f, 0x6, 0xfb, 0x8, 0xf9, 0x62, 0x43, 0xa, 0x27, - 0xfc, 0x4b, 0x15, 0xf7, 0x30, 0xf7, 0xb5, 0x5c, 0xa, 0xb3, 0xfb, 0xb5, - 0x5, 0xe, 0xe2, 0x8b, 0xf7, 0xc, 0xf7, 0x50, 0xf7, 0xc, 0xf7, 0x3e, - 0x8b, 0xa, 0xf7, 0xef, 0x6, 0xf7, 0x27, 0xf7, 0x42, 0xb5, 0xf7, 0x4c, - 0xc0, 0x6c, 0xd1, 0x32, 0xa3, 0x1f, 0x8d, 0x7, 0xa9, 0x93, 0xf7, 0x2, - 0x9c, 0xf7, 0x12, 0x1a, 0xf7, 0x23, 0x24, 0xbc, 0xfb, 0x47, 0x1e, 0xfb, - 0x90, 0x6, 0xa2, 0xfc, 0xea, 0x15, 0xb3, 0xf7, 0x50, 0x5, 0xf7, 0x48, - 0x6, 0xa2, 0xe9, 0x8b, 0x39, 0x25, 0x24, 0x87, 0x32, 0x1f, 0x3c, 0xf7, - 0xc8, 0x15, 0xaf, 0xf7, 0x3e, 0x5, 0xf7, 0x9, 0x6, 0xd5, 0xcf, 0x8b, - 0x43, 0x2d, 0x2b, 0x87, 0x37, 0x1f, 0xe, 0xe2, 0x78, 0xf7, 0x12, 0xf8, - 0x8c, 0xf7, 0x12, 0x1, 0xf6, 0xf7, 0x2c, 0x3, 0xf8, 0xe6, 0xf7, 0x95, - 0x15, 0xfb, 0xb, 0x64, 0x34, 0x6c, 0x51, 0x1b, 0x27, 0x58, 0xe3, 0xef, - 0xf7, 0xa, 0x80, 0xa, 0x69, 0x92, 0x1f, 0xf7, 0x28, 0x99, 0x5, 0xf7, - 0x3d, 0x77, 0xfb, 0x16, 0xcd, 0xfb, 0x1c, 0x1b, 0xfb, 0x7f, 0xfb, 0x35, - 0xfb, 0x54, 0xfb, 0x8e, 0xfb, 0x31, 0xce, 0xfb, 0x31, 0xf7, 0x75, 0xf7, - 0x62, 0xf0, 0xf7, 0x1b, 0xf7, 0x9, 0xb6, 0x1f, 0xe, 0x57, 0xa, 0xd7, - 0x16, 0xf7, 0x98, 0x6, 0xf7, 0x7c, 0xf7, 0x65, 0xf7, 0x24, 0xf7, 0xa7, - 0xf7, 0x71, 0xfb, 0x3, 0xd9, 0xfb, 0x81, 0x1f, 0xfb, 0x58, 0x6, 0xa0, - 0xfc, 0xec, 0x15, 0xf3, 0xf8, 0x76, 0x5, 0xe1, 0x6, 0xd8, 0xf4, 0x86, - 0xfb, 0x44, 0xfb, 0x8a, 0xfb, 0x38, 0x54, 0xfb, 0x17, 0x1f, 0xe, 0xab, - 0x8b, 0xf7, 0xc, 0xf7, 0x56, 0xf7, 0xc, 0xf7, 0x38, 0x8b, 0xa, 0xf8, - 0xc4, 0x6, 0xa5, 0x83, 0xa, 0xfc, 0x31, 0x6, 0xb3, 0xf7, 0x56, 0x5, - 0xf7, 0xfe, 0x40, 0xa, 0xfb, 0xfe, 0x6, 0xad, 0xf7, 0x38, 0x5, 0xf8, - 0x14, 0x40, 0xa, 0xfc, 0xa7, 0x6, 0xe, 0x84, 0xa, 0xf7, 0xc5, 0xf7, - 0xc, 0xf7, 0x41, 0x8b, 0xa, 0x5e, 0xa, 0xcc, 0xf7, 0xc5, 0x5, 0xf7, - 0xeb, 0x40, 0xa, 0xfb, 0xea, 0x6, 0xaf, 0xf7, 0x41, 0x5, 0xf7, 0xfe, - 0x40, 0xa, 0xfc, 0x93, 0x6, 0xe, 0x8c, 0xa, 0xf7, 0x2e, 0xf7, 0xf, - 0xf7, 0x77, 0xf7, 0x12, 0x1, 0xf7, 0x0, 0xf7, 0x25, 0x3, 0xf8, 0x4c, - 0xf7, 0x99, 0x15, 0xf7, 0x4e, 0x6, 0x74, 0xfb, 0x0, 0x5, 0x81, 0x78, - 0x3d, 0x67, 0x32, 0x1b, 0x4d, 0x25, 0x98, 0xf7, 0x3b, 0xf7, 0x28, 0xd1, - 0xf7, 0x44, 0xf7, 0x55, 0xd3, 0xc9, 0x6d, 0x2f, 0xa7, 0x1f, 0xf7, 0x1f, - 0x9a, 0x5, 0xf7, 0x3a, 0x71, 0xfb, 0x15, 0xce, 0xfb, 0x28, 0x1b, 0xfb, - 0xb2, 0xfb, 0xc, 0xfb, 0x97, 0xfb, 0x55, 0xfb, 0x49, 0xee, 0xfb, 0xf, - 0xf7, 0x63, 0xf7, 0x26, 0xf7, 0x9, 0xc4, 0xab, 0xbb, 0x1f, 0xcd, 0xf7, - 0xce, 0x5, 0xfb, 0xda, 0x6, 0xe, 0x68, 0xa, 0xf7, 0xd4, 0xf7, 0xd, - 0xf7, 0xa9, 0x77, 0x1, 0xd2, 0x16, 0x5e, 0xa, 0xcf, 0xf7, 0xd4, 0x5, - 0xf7, 0xad, 0x6, 0x47, 0xfb, 0xd4, 0x5, 0x5e, 0xa, 0xf7, 0x2c, 0xf9, - 0x62, 0x53, 0xa, 0x50, 0xfb, 0xa9, 0x5, 0xfb, 0xad, 0x6, 0xc5, 0xf7, - 0xa9, 0x5a, 0xa, 0xe, 0xfb, 0xf9, 0x37, 0xa, 0xcb, 0x16, 0x5e, 0xa, - 0xf7, 0x2d, 0xf9, 0x62, 0x5, 0x97, 0xa, 0xe, 0x3c, 0x79, 0xf7, 0x11, - 0xf8, 0xf7, 0x77, 0x1, 0xc7, 0xf7, 0x5b, 0x15, 0xfb, 0x20, 0xbb, 0x3e, - 0xf7, 0x32, 0xf7, 0x5b, 0xb7, 0xf7, 0xd, 0xf7, 0x45, 0xb0, 0x1e, 0xe6, - 0xf8, 0x4a, 0x7b, 0xa, 0x30, 0xfc, 0x4a, 0x85, 0xa, 0x6f, 0x6a, 0x66, - 0x4c, 0x1b, 0x2f, 0x98, 0xcf, 0xb1, 0x8d, 0x1f, 0xe, 0xe2, 0x37, 0xa, - 0xe2, 0x16, 0x5e, 0xa, 0xb9, 0xf7, 0x70, 0xf7, 0x20, 0xf7, 0xe, 0xf7, - 0x48, 0xfb, 0xea, 0x5, 0xf7, 0x3d, 0x6, 0xfb, 0x83, 0xf8, 0x49, 0xf7, - 0xd9, 0xf7, 0xad, 0x5, 0xfb, 0x5c, 0x6, 0xfb, 0xe1, 0xfb, 0xc4, 0x89, - 0x8d, 0xcb, 0xf7, 0xc2, 0x53, 0xa, 0xe, 0x87, 0xa, 0xd7, 0x16, 0xf8, - 0x92, 0x50, 0xa, 0xfb, 0xff, 0x6, 0xf7, 0x10, 0xf8, 0xe9, 0x7b, 0xa, - 0xe, 0xf7, 0x5a, 0x37, 0xa, 0xf7, 0xe1, 0xf7, 0x3, 0x3, 0xd0, 0x16, - 0x82, 0xa, 0xf7, 0x6, 0xf8, 0xec, 0x5c, 0xa, 0xa6, 0xfc, 0xec, 0x5, - 0xf7, 0x20, 0x6, 0xf7, 0xb0, 0xf8, 0xe7, 0x8d, 0x89, 0xfb, 0x23, 0xfc, - 0xe5, 0x5, 0xf7, 0x1c, 0x6, 0xf7, 0x2c, 0xf9, 0x62, 0x5, 0xfb, 0x6b, - 0x6, 0xfb, 0x8a, 0xfc, 0x8b, 0x51, 0xa, 0x76, 0xf8, 0x8b, 0x5, 0xfb, - 0x69, 0x6, 0xe, 0xe2, 0x37, 0xa, 0xd0, 0xf9, 0x76, 0x3, 0x8a, 0xa, - 0xf2, 0xf8, 0x77, 0x5c, 0xa, 0xf7, 0x59, 0xfc, 0x77, 0x5, 0x9b, 0xa, - 0xf7, 0x2d, 0xf9, 0x62, 0x3d, 0xa, 0x25, 0xfc, 0x74, 0x51, 0xa, 0xfb, - 0x5a, 0xf8, 0x74, 0x65, 0xa, 0x8c, 0xa, 0xf8, 0x8c, 0xf7, 0x12, 0x1, - 0xf7, 0x17, 0xf7, 0x2a, 0xf8, 0xf, 0xf7, 0x2a, 0x3, 0xf6, 0xf7, 0xb1, - 0x15, 0xfb, 0x22, 0xe3, 0xfb, 0x36, 0xf7, 0x69, 0xf7, 0xb1, 0xf7, 0x16, - 0xf7, 0x93, 0xf7, 0x55, 0xf7, 0x48, 0xfb, 0x6, 0xf7, 0x14, 0xfb, 0x53, - 0xfb, 0xc9, 0x25, 0xfb, 0xaf, 0xfb, 0x3d, 0x1e, 0xf7, 0x2a, 0x16, 0xf7, - 0x37, 0xf0, 0xf7, 0x37, 0xf7, 0x29, 0xf7, 0x3, 0xc2, 0x33, 0x2b, 0xfb, - 0x9, 0x3b, 0xfb, 0x5f, 0xfb, 0x3c, 0x2a, 0x44, 0xd5, 0xf3, 0x1e, 0xe, - 0xab, 0xa0, 0x76, 0xf7, 0xa6, 0xf7, 0xc, 0xf7, 0x60, 0x8b, 0xa, 0xf7, - 0x27, 0x6, 0xc4, 0xf7, 0xa6, 0x5, 0xea, 0x6, 0xf7, 0x51, 0xf7, 0x42, - 0xba, 0xf7, 0x60, 0xf7, 0x49, 0xfb, 0x3c, 0x97, 0x57, 0x1f, 0xfb, 0xb9, - 0x6, 0xdb, 0xfb, 0xd8, 0x15, 0xb6, 0xf7, 0x60, 0x5, 0xf6, 0x6, 0xd6, - 0xc9, 0x8d, 0x40, 0xfb, 0xb, 0xfb, 0x19, 0x7f, 0xfb, 0x1, 0x1f, 0xe, - 0xf7, 0x23, 0x6c, 0x76, 0xdb, 0xf7, 0xa, 0xf8, 0x6d, 0xf7, 0xa, 0x36, - 0xa, 0xf8, 0xc4, 0xc0, 0x15, 0xa4, 0x6b, 0xb3, 0x5e, 0xca, 0x6f, 0xd3, - 0xe3, 0x18, 0x67, 0x9e, 0x67, 0xa5, 0x6d, 0xa6, 0x8, 0xf7, 0x4, 0xe1, - 0xc0, 0xf7, 0x1b, 0xf7, 0xb, 0x1a, 0xf7, 0x3f, 0xfb, 0x7, 0xf7, 0xa, - 0xfb, 0x50, 0xfb, 0xd0, 0x2a, 0xfb, 0xa8, 0xfb, 0x29, 0xfb, 0x1f, 0xe6, - 0xfb, 0x25, 0xf7, 0x66, 0xc1, 0xba, 0x92, 0x9d, 0xbe, 0x1e, 0xfb, 0x35, - 0xf7, 0x35, 0x15, 0xb8, 0x7b, 0xb0, 0x67, 0x85, 0x1a, 0x81, 0x5a, 0x8b, - 0x86, 0x32, 0x3a, 0xbd, 0xf7, 0x8, 0xf7, 0x15, 0xe6, 0xf7, 0x46, 0xf7, - 0x33, 0xf7, 0x2, 0xc3, 0x3d, 0x2e, 0x5a, 0x75, 0xfb, 0x9, 0x3c, 0x3f, - 0x1e, 0x62, 0xb8, 0x65, 0xa3, 0x65, 0x9d, 0x8, 0xe, 0x68, 0xa, 0xf7, - 0xbb, 0xf7, 0x4, 0xf7, 0x53, 0x96, 0xa, 0xf9, 0x25, 0xf7, 0x27, 0x3, - 0xd7, 0x16, 0xf7, 0x29, 0x6, 0xca, 0xf7, 0xbb, 0x5, 0xc7, 0x6, 0xb7, - 0xa8, 0x8b, 0x5d, 0xab, 0x1f, 0xb5, 0x50, 0xce, 0xfb, 0x50, 0x89, 0x1a, - 0xf7, 0x34, 0x6, 0x60, 0xf7, 0x1, 0x51, 0xf7, 0x1f, 0x4b, 0xc4, 0x8, - 0xf7, 0x0, 0x9a, 0xf7, 0x5, 0xbe, 0xf7, 0x32, 0x1a, 0xf7, 0x51, 0xfb, - 0x36, 0x8b, 0x47, 0x1e, 0xfb, 0xd5, 0x6, 0xde, 0xfb, 0xcb, 0x15, 0xb3, - 0xf7, 0x53, 0x5, 0xf7, 0x38, 0x6, 0xbc, 0xcf, 0x8b, 0x44, 0xfb, 0x4, - 0xfb, 0x1c, 0x83, 0x21, 0x1f, 0xe, 0xab, 0x78, 0xf7, 0x12, 0xf8, 0x92, - 0x96, 0xa, 0xdc, 0xf7, 0x7a, 0x15, 0xfb, 0x53, 0xf7, 0x28, 0x51, 0xf7, - 0x24, 0xf7, 0x67, 0xdf, 0xf7, 0x0, 0xf7, 0x0, 0xf7, 0x10, 0x34, 0xc3, - 0xfb, 0x14, 0xc2, 0x1e, 0x35, 0xae, 0x59, 0x8e, 0xbf, 0x1a, 0xd8, 0xe7, - 0x9d, 0xa5, 0xd1, 0xcd, 0x70, 0x3a, 0x1e, 0xf7, 0x27, 0x92, 0x5, 0xf7, - 0x2d, 0xfb, 0x1f, 0xcf, 0xfb, 0x23, 0xfb, 0x65, 0x53, 0xfb, 0x13, 0x33, - 0xfb, 0x12, 0xe5, 0x64, 0xf7, 0x15, 0x54, 0x1e, 0xdc, 0x68, 0xb8, 0x79, - 0x57, 0x1a, 0x3e, 0x32, 0x7e, 0x57, 0xfb, 0x23, 0x88, 0xce, 0xca, 0x89, - 0x1e, 0xe, 0x84, 0xa, 0xf8, 0xe9, 0xf7, 0xd, 0x1, 0xf7, 0x77, 0x16, - 0xf7, 0x2d, 0x6, 0xf7, 0x15, 0xf8, 0xe9, 0x5, 0xf7, 0x6c, 0x6, 0xa5, - 0xf7, 0xd, 0x5, 0xfc, 0xdd, 0x6, 0x71, 0xfb, 0xd, 0x5, 0xf7, 0x6c, - 0x6, 0xe, 0xe2, 0x78, 0xf7, 0x11, 0xf8, 0xf8, 0x77, 0x1, 0xf7, 0x8, - 0xf7, 0x2b, 0x3, 0xf7, 0x66, 0xf9, 0x62, 0x15, 0x39, 0xfc, 0x20, 0x5, - 0x84, 0x67, 0x86, 0x67, 0x65, 0x1a, 0xfb, 0xd, 0x8c, 0xc1, 0xfb, 0x2, - 0xf7, 0x5f, 0x1b, 0xf7, 0xa5, 0xb6, 0xf7, 0x60, 0xf7, 0x1d, 0xa8, 0x1f, - 0xe0, 0xf8, 0x20, 0x5, 0xfb, 0x2c, 0x6, 0x36, 0xfc, 0x20, 0x5, 0xfb, - 0x11, 0x71, 0x49, 0x30, 0x2d, 0x1b, 0x36, 0x6e, 0xba, 0xc8, 0xb0, 0x8f, - 0xb1, 0x92, 0xac, 0x1f, 0xdf, 0xf8, 0x20, 0x5, 0xe, 0xab, 0x37, 0xa, - 0xf7, 0xb6, 0x16, 0xf7, 0x26, 0x6, 0xf8, 0x1, 0xf9, 0x62, 0x91, 0xa, - 0xfb, 0xa6, 0xfc, 0xb3, 0x51, 0xa, 0x39, 0xf8, 0xb3, 0x5b, 0xa, 0xe, - 0xf7, 0xc9, 0x37, 0xa, 0xf7, 0x4a, 0xf7, 0x14, 0xf7, 0xb5, 0xf7, 0x3, - 0x3, 0xf7, 0x57, 0x16, 0xf7, 0x26, 0x6, 0xf7, 0x8d, 0xf8, 0xa0, 0x5c, - 0xa, 0x9a, 0xfc, 0xa0, 0x8d, 0xa, 0xf7, 0xe0, 0xf9, 0x62, 0x5, 0xfb, - 0x1d, 0x6, 0xfb, 0x75, 0xfc, 0x85, 0x51, 0xa, 0x7c, 0xf8, 0x85, 0x5, - 0xfb, 0x2e, 0x6, 0xfb, 0x7e, 0xfc, 0x8a, 0x51, 0xa, 0x85, 0xf8, 0x8a, - 0x81, 0xa, 0xab, 0x37, 0xa, 0x99, 0x16, 0xf7, 0x49, 0x6, 0xf7, 0x50, - 0xf7, 0x7b, 0xf3, 0xfb, 0x7b, 0x5, 0xf7, 0x33, 0x6, 0xfb, 0x3b, 0xf7, - 0xe8, 0xf7, 0xcc, 0xf8, 0xe, 0x5, 0xfb, 0x45, 0x6, 0xfb, 0x5f, 0xfb, - 0x8b, 0xfb, 0xa, 0xf7, 0x8b, 0x7b, 0xa, 0xf7, 0x3e, 0xfb, 0xf6, 0x5, - 0xe, 0xab, 0x37, 0xa, 0xf7, 0x3c, 0xf9, 0x12, 0x3, 0x64, 0xa, 0xf7, - 0x9e, 0xf7, 0xcc, 0xf8, 0x58, 0x43, 0xa, 0xfb, 0x5d, 0xfb, 0xc7, 0xfb, - 0x10, 0xf7, 0xc7, 0x5a, 0xa, 0xf7, 0x51, 0xfc, 0x4a, 0x5, 0xe, 0x84, - 0xa, 0xf8, 0xe9, 0xf7, 0xd, 0x1, 0xa4, 0x16, 0xf8, 0xfb, 0x6, 0xa6, - 0xf7, 0x9, 0x5, 0x8a, 0xfc, 0x33, 0x8c, 0x8b, 0x1e, 0xf8, 0x62, 0xf8, - 0x7d, 0xa2, 0xf7, 0x4, 0x5, 0xfc, 0xcf, 0x6, 0x6f, 0xfb, 0xd, 0x5, - 0xf8, 0x5, 0x6, 0xfc, 0x5b, 0xfc, 0x78, 0x5, 0xe, 0x7f, 0xa, 0xf7, - 0x48, 0x35, 0x15, 0xf7, 0x29, 0xf9, 0x4e, 0x5, 0xf7, 0x1, 0x6, 0xa3, - 0xf7, 0x2, 0x5, 0xfb, 0x89, 0x6, 0xfb, 0x58, 0xfe, 0x2a, 0x5, 0xf7, - 0x89, 0x6, 0xa3, 0xf7, 0x2, 0x5, 0xe, 0xfb, 0xf9, 0x78, 0xa, 0xf7, - 0x10, 0xf7, 0x87, 0x3, 0xf7, 0x85, 0x78, 0x15, 0xf7, 0x12, 0x6, 0xfb, - 0x7, 0xf9, 0x88, 0x5, 0xfb, 0x14, 0x6, 0xe, 0x7f, 0xa, 0x91, 0x35, - 0x15, 0x73, 0xfb, 0x2, 0x5, 0xf7, 0x89, 0x6, 0xf7, 0x58, 0xfa, 0x2a, - 0x5, 0xfb, 0x89, 0x6, 0x73, 0xfb, 0x2, 0x5, 0xf7, 0x2, 0x6, 0xfb, - 0x29, 0xfd, 0x4e, 0x5, 0xe, 0x58, 0xf7, 0xec, 0x76, 0xf8, 0xb, 0x77, - 0x1, 0xf7, 0x17, 0xf7, 0xd7, 0x15, 0xf7, 0x1c, 0x6, 0xe9, 0xf7, 0x79, - 0xea, 0xfb, 0x79, 0x5, 0x82, 0xa, 0xfb, 0x42, 0xf8, 0xb, 0x5, 0x20, - 0x6, 0xe, 0x3c, 0xfb, 0x11, 0xbd, 0x1, 0x70, 0x40, 0x15, 0x59, 0xf8, - 0xcb, 0xbd, 0x7, 0xe, 0x72, 0xa, 0xf7, 0x8c, 0xf8, 0xf0, 0x15, 0xf4, - 0x6, 0x47, 0xf7, 0x26, 0x53, 0xa, 0xe, 0x42, 0xa, 0xf7, 0xf1, 0xf2, - 0x76, 0xa, 0xf8, 0x1a, 0x89, 0x2f, 0xa, 0x13, 0xb0, 0x99, 0xa, 0xaa, - 0xb2, 0x1a, 0xab, 0x7c, 0xf7, 0x3, 0x33, 0xa, 0x80, 0x5, 0xb8, 0x98, - 0xb1, 0x9b, 0xb8, 0x1b, 0xce, 0xa8, 0x5a, 0x55, 0x70, 0x1f, 0x6c, 0x80, - 0x54, 0x86, 0x50, 0x86, 0x8, 0x42, 0x86, 0xfb, 0x2f, 0x81, 0xfb, 0x34, - 0x1a, 0x28, 0xd6, 0x50, 0xe1, 0x1e, 0x30, 0xa, 0x99, 0xf7, 0x8a, 0x15, - 0x60, 0x81, 0x77, 0x20, 0x20, 0x1b, 0x5a, 0x77, 0xa1, 0xa7, 0xca, 0xdc, - 0xa2, 0xe7, 0x97, 0x1f, 0xe, 0x73, 0x7d, 0xf6, 0x41, 0x76, 0xf8, 0x45, - 0xf0, 0xf7, 0x4e, 0x77, 0x12, 0xf7, 0x67, 0xf7, 0x18, 0xf7, 0x36, 0xf7, - 0x20, 0x13, 0x7c, 0xc8, 0x89, 0x15, 0xf7, 0x18, 0x6, 0x9d, 0xe1, 0x5c, - 0xa, 0x13, 0xb4, 0x73, 0x96, 0xb4, 0x41, 0xf7, 0x7, 0x1b, 0xf7, 0x25, - 0xf7, 0xc, 0xf7, 0x23, 0xf7, 0x4f, 0xf7, 0x5, 0x57, 0xf2, 0xfb, 0x1b, - 0x42, 0x5f, 0x6c, 0x73, 0x6b, 0x1f, 0xbe, 0xf7, 0x85, 0x44, 0xa, 0x13, - 0x74, 0xb3, 0xfc, 0x90, 0x15, 0xf7, 0x3, 0xc4, 0xf7, 0x2, 0xe6, 0xc1, - 0xba, 0x60, 0x3f, 0x1e, 0x13, 0xb4, 0x38, 0x5e, 0xfb, 0x1c, 0x25, 0x4c, - 0x64, 0xc5, 0xc6, 0x1e, 0xe, 0x3c, 0x7d, 0xf7, 0x5, 0xf7, 0xe8, 0xf6, - 0x1, 0xda, 0xf7, 0x23, 0x3, 0xf8, 0x38, 0xf7, 0x5b, 0x15, 0x36, 0x6d, - 0x4f, 0x7c, 0x70, 0x1b, 0x63, 0x62, 0xb2, 0xd0, 0xe0, 0xb3, 0xf7, 0x27, - 0xf7, 0x5, 0xd7, 0x93, 0x48, 0x77, 0x8d, 0x1f, 0xf7, 0x1e, 0x9a, 0x5, - 0xe3, 0x83, 0x4d, 0xe6, 0xfb, 0x25, 0x1b, 0xfb, 0x4b, 0xfb, 0xe, 0xfb, - 0x2f, 0xfb, 0x4c, 0xfb, 0x4, 0xc6, 0xfb, 0x1, 0xf7, 0x36, 0xf7, 0x16, - 0xe3, 0xd6, 0xf7, 0x8, 0xb6, 0x1f, 0xe, 0x73, 0x7d, 0xf6, 0x2c, 0xea, - 0xf7, 0xde, 0xf7, 0x1, 0xf7, 0x4e, 0x77, 0x12, 0x13, 0x70, 0xf8, 0x38, - 0x89, 0x15, 0xf7, 0x17, 0x6, 0xf7, 0x2d, 0xf9, 0x64, 0x47, 0xa, 0x52, - 0xfb, 0xa1, 0x5, 0x9e, 0x7e, 0x62, 0xcb, 0x20, 0x1b, 0xfb, 0x32, 0x24, - 0xfb, 0x34, 0xfb, 0x3c, 0x1f, 0x13, 0xb0, 0xfb, 0x20, 0xd1, 0x3d, 0xf7, - 0x6, 0xe1, 0xbe, 0xb3, 0xa7, 0xa6, 0x1e, 0x8d, 0x89, 0x5, 0x13, 0x70, - 0xfb, 0x67, 0xf7, 0x2c, 0x15, 0xe7, 0xbe, 0xf7, 0x13, 0xe7, 0xc8, 0xb4, - 0x54, 0x49, 0x3f, 0x62, 0xfb, 0x19, 0x22, 0x4b, 0x68, 0xba, 0xcb, 0x1e, - 0xe, 0x3c, 0xf7, 0x71, 0xe3, 0xf7, 0x1a, 0xf2, 0x7d, 0xa, 0xf7, 0x68, - 0xf7, 0x71, 0x15, 0xf8, 0x8, 0x6, 0x93, 0xae, 0x8c, 0xb8, 0x99, 0x1a, - 0xf0, 0x5e, 0xf7, 0x16, 0xfb, 0x41, 0xfb, 0x6d, 0x33, 0xfb, 0x53, 0xfb, - 0x1a, 0xfb, 0x24, 0xeb, 0x30, 0xf7, 0x2c, 0xd7, 0xf7, 0x0, 0xa6, 0xf7, - 0x15, 0xcc, 0x1e, 0xfb, 0x19, 0xa0, 0x5, 0x7b, 0x82, 0x6b, 0x51, 0x41, - 0x1b, 0x4e, 0x59, 0xbc, 0xde, 0x8f, 0x1f, 0x9a, 0xe3, 0x15, 0xbd, 0x96, - 0xaf, 0xdf, 0xe0, 0x1b, 0xd8, 0xa5, 0x4c, 0x44, 0x88, 0x1f, 0xe, 0xa0, - 0x76, 0xf8, 0x33, 0xf1, 0xf7, 0x66, 0x77, 0x1, 0xe2, 0x16, 0xf7, 0x15, - 0x6, 0xda, 0xf8, 0x33, 0x5, 0xe6, 0x6, 0x9f, 0xf1, 0x5, 0x30, 0x6, - 0xda, 0x99, 0x91, 0xa4, 0xae, 0x1b, 0x98, 0xa6, 0x86, 0x7e, 0xad, 0x1f, - 0xa4, 0xf0, 0x5, 0x9c, 0x5a, 0x5e, 0x91, 0x6d, 0x1b, 0xfb, 0xa, 0x80, - 0x28, 0xfb, 0x3, 0x6d, 0x1f, 0x44, 0x6, 0x76, 0x25, 0x5, 0xd4, 0x6, - 0xe, 0x73, 0xfb, 0x6d, 0xf2, 0xf7, 0x3, 0xf6, 0xf7, 0xe7, 0xf2, 0x7e, - 0x77, 0x12, 0x13, 0xd0, 0xb1, 0x6e, 0x15, 0xfb, 0x46, 0xf7, 0x40, 0x81, - 0xca, 0xf7, 0x7b, 0xa3, 0xf6, 0xf7, 0x5a, 0xb5, 0x1e, 0xeb, 0xf8, 0x51, - 0x3d, 0xa, 0x78, 0x2d, 0x51, 0xa, 0x13, 0xe0, 0xd3, 0x68, 0x48, 0xae, - 0x46, 0x1b, 0xfb, 0x1d, 0xfb, 0x14, 0x20, 0xfb, 0x65, 0xfb, 0x3d, 0xf2, - 0x4b, 0xdd, 0xde, 0xc2, 0xb7, 0x9e, 0x9f, 0x1f, 0x8d, 0x89, 0x5, 0xfb, - 0x8, 0x74, 0x80, 0x53, 0x24, 0x1b, 0x44, 0x80, 0xae, 0xa7, 0x8d, 0x1f, - 0x9d, 0xf7, 0xac, 0x15, 0xc5, 0xb3, 0xf7, 0x30, 0xf4, 0xcb, 0xb4, 0x4d, - 0x4a, 0x2b, 0x53, 0xfb, 0x8, 0x2c, 0x51, 0x62, 0xb9, 0xda, 0x1e, 0xe, - 0x84, 0xa, 0xf8, 0x44, 0xef, 0xf7, 0x4e, 0x77, 0x1, 0xf8, 0x76, 0xf7, - 0x27, 0x3, 0xcc, 0x16, 0x7c, 0xa, 0xb7, 0xf7, 0x62, 0x5, 0xf4, 0xa2, - 0xb2, 0xf7, 0xd, 0xf6, 0x1b, 0xba, 0x98, 0x6f, 0x69, 0x76, 0x87, 0x74, - 0x86, 0x75, 0x1f, 0x49, 0xfb, 0xc4, 0x5, 0x7c, 0xa, 0xcc, 0xf7, 0xc4, - 0x5, 0x91, 0xa7, 0x92, 0xaf, 0xae, 0x1a, 0xcd, 0x6f, 0xca, 0xfb, 0x3, - 0x30, 0x51, 0x5d, 0x73, 0x6b, 0x1e, 0xc1, 0xf7, 0x94, 0x44, 0xa, 0xe, - 0x48, 0xa, 0xf8, 0xa1, 0x77, 0xe7, 0xf7, 0x14, 0x1, 0xd0, 0x16, 0x9b, - 0xa, 0xf7, 0x1, 0xf8, 0xa1, 0x92, 0xa, 0x9b, 0xd3, 0x15, 0x9b, 0xa, - 0xa6, 0xf7, 0x14, 0x92, 0xa, 0xe, 0xfb, 0xf9, 0xfb, 0x55, 0x76, 0x1, - 0x75, 0x3a, 0x15, 0x77, 0xfb, 0xa, 0x5, 0x7c, 0xb6, 0xb8, 0x8b, 0x94, - 0x1b, 0xf7, 0xe, 0xb1, 0xf7, 0x31, 0xf7, 0x1d, 0xa5, 0x1f, 0xdf, 0xf8, - 0x51, 0x5, 0xfb, 0x16, 0x6, 0x3a, 0xfc, 0x51, 0x5, 0xfb, 0x30, 0x6c, - 0x7e, 0x7e, 0x63, 0x1b, 0x80, 0x7a, 0x8c, 0x92, 0x73, 0x1f, 0xf7, 0x7b, - 0xf9, 0x3a, 0x15, 0xf7, 0x16, 0x6, 0xa3, 0xf7, 0x14, 0x5, 0xfb, 0x16, - 0x6, 0xe, 0x3c, 0x37, 0xa, 0xd0, 0x16, 0xf7, 0x26, 0x6, 0xae, 0xf7, - 0x31, 0xed, 0xdf, 0xd6, 0xfb, 0x85, 0x5, 0xf7, 0x26, 0x6, 0xfb, 0x8, - 0xf7, 0xdf, 0xf7, 0x6d, 0xf7, 0x51, 0x5, 0xfb, 0x52, 0x6, 0xfb, 0x50, - 0xfb, 0x44, 0x89, 0x8d, 0xdd, 0xf8, 0x8, 0x93, 0xa, 0xe, 0xfb, 0xf9, - 0x37, 0xa, 0x8a, 0xa, 0xf7, 0x2c, 0xf9, 0x62, 0x65, 0xa, 0xf7, 0x92, - 0xa0, 0x76, 0xf8, 0x4f, 0xf2, 0x1, 0xcb, 0x16, 0xf7, 0x23, 0x6, 0xbe, - 0xf7, 0x89, 0x5, 0xdf, 0x9d, 0xa1, 0xf7, 0x6, 0xf2, 0x1b, 0xb5, 0x96, - 0x75, 0x6e, 0x78, 0x87, 0x75, 0x87, 0x77, 0x1f, 0x45, 0xfb, 0xdf, 0x5, - 0x7c, 0xa, 0xbe, 0xf7, 0x86, 0x5, 0xd2, 0x98, 0xaf, 0xf7, 0x16, 0xed, - 0x1b, 0xae, 0x94, 0x68, 0x68, 0x7a, 0x89, 0x7a, 0x88, 0x7e, 0x1f, 0x47, - 0xfb, 0xda, 0x8d, 0xa, 0xd0, 0xf7, 0xda, 0x5, 0x8f, 0xa5, 0x8f, 0xa6, - 0xa5, 0x1a, 0xd5, 0x72, 0xce, 0x23, 0x3a, 0x44, 0x5e, 0x59, 0x6a, 0x1e, - 0xe1, 0x7b, 0x40, 0x94, 0x60, 0x1b, 0x38, 0x61, 0x77, 0x54, 0x63, 0x1f, - 0x99, 0xc9, 0x91, 0xa, 0xe, 0x84, 0xa, 0xf8, 0x4f, 0xe5, 0x31, 0xf2, - 0x12, 0x13, 0xa0, 0xcc, 0x16, 0x7c, 0xa, 0xba, 0xf7, 0x6f, 0x5, 0xf3, - 0xa1, 0xa7, 0xf7, 0xc, 0xf7, 0x9, 0x1b, 0xb7, 0x9b, 0x6a, 0x76, 0x6d, - 0x84, 0x6d, 0x86, 0x71, 0x1f, 0x4b, 0xfb, 0xc3, 0x5, 0xf7, 0x25, 0x6, - 0xcb, 0xf7, 0xc2, 0x5, 0x92, 0xad, 0x91, 0xb3, 0xb0, 0x1a, 0xd2, 0x6c, - 0xc9, 0xfb, 0x0, 0x34, 0x4f, 0x5f, 0x65, 0x61, 0x1e, 0x89, 0x8d, 0x5, - 0x13, 0xc0, 0x99, 0xce, 0x5b, 0xa, 0xe, 0x73, 0x7d, 0xf7, 0x2, 0xf7, - 0xe8, 0xf7, 0x2, 0x3f, 0xa, 0xdd, 0xf7, 0x71, 0x15, 0xfb, 0x11, 0xde, - 0xfb, 0x2, 0x38, 0xa, 0xf7, 0x37, 0x26, 0xa, 0xe, 0x73, 0xfb, 0x4e, - 0x76, 0xf7, 0x54, 0xf7, 0x4, 0xf7, 0xe8, 0xeb, 0x2b, 0xf7, 0x1, 0x12, - 0xf8, 0x8d, 0xf7, 0x20, 0x13, 0xd8, 0x9d, 0xfb, 0x63, 0x15, 0x7c, 0xa, - 0xc5, 0xf7, 0xaa, 0x5, 0x77, 0x98, 0xb4, 0x49, 0xf6, 0x1b, 0xf7, 0x34, - 0xf3, 0xf7, 0x32, 0xf7, 0x41, 0xf7, 0x23, 0x44, 0xe2, 0xfb, 0x6, 0x34, - 0x58, 0x62, 0x6e, 0x6f, 0x1f, 0x89, 0x8d, 0x5, 0x13, 0xe8, 0x96, 0xc2, - 0x5, 0xfb, 0x18, 0x6, 0xe2, 0xfb, 0xcb, 0x15, 0xd8, 0xb4, 0xf7, 0x1e, - 0xf5, 0xcc, 0xae, 0x54, 0x49, 0x2d, 0x58, 0xfb, 0x11, 0x2e, 0x4d, 0x62, - 0xc3, 0xd0, 0x1e, 0xe, 0x73, 0xfb, 0x4e, 0x76, 0xf7, 0x54, 0xf2, 0xf7, - 0xf1, 0xf7, 0x1, 0x7e, 0x77, 0x12, 0xdb, 0xf7, 0x21, 0x13, 0xd8, 0xf8, - 0x2, 0xfb, 0x63, 0x15, 0xf7, 0x25, 0x6, 0xf7, 0x2e, 0xf9, 0x78, 0x66, - 0xa, 0x79, 0x34, 0x51, 0xa, 0x13, 0xe8, 0xa3, 0x7f, 0x62, 0xd7, 0xfb, - 0x7, 0x1b, 0xfb, 0x26, 0xfb, 0xc, 0xfb, 0x27, 0xfb, 0x54, 0xfb, 0x9, - 0xbf, 0x22, 0xf7, 0x1b, 0xd5, 0xb7, 0xab, 0xa4, 0xac, 0x1f, 0xfb, 0x59, - 0xf7, 0x39, 0x15, 0xe0, 0xb7, 0xf7, 0x25, 0xf2, 0xca, 0xb2, 0x4f, 0x4e, - 0xfb, 0x6, 0x52, 0xfb, 0x6, 0x30, 0x54, 0x5d, 0xb4, 0xd9, 0x1e, 0xe, - 0xfb, 0x8a, 0xa0, 0x76, 0xf8, 0x30, 0xf7, 0xd, 0xfb, 0xd, 0xf7, 0x1a, - 0x12, 0xd7, 0xf8, 0x3d, 0x13, 0xb0, 0xcb, 0x16, 0x82, 0xa, 0xab, 0xf7, - 0x3c, 0xa6, 0xf7, 0x17, 0xa2, 0xf7, 0x13, 0xf7, 0x30, 0x7d, 0x19, 0xbf, - 0xf7, 0xb, 0x5, 0x91, 0x7e, 0x76, 0x94, 0x6e, 0x1b, 0x49, 0x59, 0x51, - 0x51, 0x69, 0x1f, 0x89, 0x8d, 0x5, 0x13, 0xc0, 0x9f, 0xf0, 0x5, 0xfb, - 0x12, 0x6, 0xe, 0x3c, 0x7d, 0xef, 0xf7, 0xfc, 0xef, 0x1, 0xca, 0xf7, - 0x28, 0x15, 0xfb, 0x7, 0xab, 0xe5, 0x5c, 0xf7, 0x17, 0x1b, 0xf7, 0x48, - 0xc0, 0xf7, 0x8, 0xd3, 0xf4, 0x20, 0xab, 0x3f, 0xa3, 0x1f, 0x44, 0xa0, - 0x71, 0x93, 0xab, 0x1a, 0xa5, 0xa3, 0xa3, 0xc4, 0x9b, 0xd0, 0x8b, 0x4b, - 0xa0, 0x1e, 0xf7, 0x14, 0xa3, 0x5, 0xf7, 0x11, 0x70, 0xfb, 0x6, 0x9a, - 0x44, 0x1b, 0xfb, 0x32, 0x42, 0x46, 0x38, 0x35, 0xd7, 0x4f, 0xe2, 0x6c, - 0x1f, 0xe9, 0x69, 0x95, 0x85, 0x6e, 0x1a, 0x67, 0x5d, 0x71, 0x5a, 0x41, - 0x71, 0xb3, 0xb8, 0x7b, 0x1e, 0xe, 0x9a, 0x76, 0xf8, 0x2c, 0xee, 0xf7, - 0x43, 0x77, 0x1, 0xf7, 0xda, 0x85, 0x15, 0xa2, 0xf1, 0x5, 0x87, 0x25, - 0x76, 0x9b, 0xc7, 0x1f, 0x70, 0x6f, 0x91, 0xa8, 0x91, 0x1f, 0xc5, 0xf7, - 0xa8, 0x5, 0xe3, 0x6, 0xa1, 0xee, 0x5, 0x33, 0x6, 0xb1, 0xf7, 0x43, - 0xfb, 0x37, 0x2c, 0x7a, 0x3b, 0x5, 0x45, 0x6, 0x75, 0x28, 0x5, 0xd0, - 0x6, 0x8b, 0x4c, 0xfb, 0xb2, 0x73, 0x1a, 0x2e, 0xf7, 0x1b, 0x86, 0xe0, - 0x1e, 0xe, 0x59, 0xa, 0xf8, 0x4f, 0x77, 0x12, 0xed, 0xf7, 0x27, 0x13, - 0x70, 0xf8, 0x31, 0x89, 0x15, 0xf7, 0x1a, 0x6, 0xf7, 0x3, 0xf8, 0xaa, - 0x44, 0xa, 0x57, 0xfb, 0x91, 0x5, 0x46, 0x72, 0x82, 0xfb, 0xd, 0xfb, - 0xe, 0x1b, 0x5d, 0x7c, 0xb0, 0xb4, 0x9c, 0x8f, 0x9c, 0x8f, 0x9a, 0x1f, - 0xcd, 0xf7, 0xd0, 0x47, 0xa, 0x4a, 0xfb, 0xd0, 0x5, 0x85, 0x6f, 0x84, - 0x67, 0x67, 0x1a, 0x13, 0xb0, 0x47, 0xa5, 0x4d, 0xf7, 0x5, 0xcf, 0xce, - 0xa9, 0xc1, 0xc2, 0x1e, 0x8c, 0x89, 0x5, 0xe, 0x3c, 0x79, 0xa, 0xf7, - 0x78, 0x16, 0xf7, 0x9, 0x6, 0xf7, 0xcb, 0xf8, 0xa8, 0x7b, 0xa, 0xfb, - 0x57, 0xfb, 0xf8, 0x51, 0xa, 0x57, 0xf7, 0xf8, 0x5, 0xfb, 0x1a, 0x6, - 0xe, 0xf7, 0x23, 0x79, 0xa, 0xf8, 0x79, 0xe5, 0x3, 0xf7, 0x4f, 0x16, - 0xf7, 0x15, 0x6, 0xf7, 0x2f, 0xf7, 0xea, 0x5c, 0xa, 0xa3, 0xfb, 0xea, - 0x5, 0xf7, 0x16, 0x6, 0xf7, 0x93, 0xf8, 0xa8, 0x54, 0xa, 0xfb, 0x32, - 0xfb, 0xf7, 0x51, 0xa, 0x7a, 0xf7, 0xf7, 0x5, 0xfb, 0x12, 0x6, 0xfb, - 0x33, 0xfb, 0xf7, 0x51, 0xa, 0x69, 0xf7, 0xf7, 0x5, 0xfb, 0xf, 0x6, - 0xe, 0x3c, 0x79, 0xa, 0x9a, 0x16, 0xf7, 0x3f, 0x6, 0xf7, 0x16, 0xf7, - 0x2b, 0xd4, 0xfb, 0x2b, 0x5, 0xf7, 0x29, 0x6, 0xfb, 0x17, 0xf7, 0x97, - 0xf7, 0x85, 0xf7, 0xa5, 0x5, 0xfb, 0x3e, 0x6, 0xfb, 0x18, 0xfb, 0x28, - 0x41, 0xf7, 0x28, 0x53, 0xa, 0xf7, 0x18, 0xfb, 0x96, 0x5, 0xe, 0x3c, - 0xfb, 0x6a, 0xf7, 0x9, 0xf9, 0x9, 0x77, 0x1, 0xc2, 0x34, 0x15, 0x7e, - 0xfb, 0x0, 0x5, 0x7e, 0xad, 0xaa, 0x85, 0xa6, 0x1b, 0xe2, 0xc5, 0xcd, - 0xf0, 0xc3, 0x1f, 0xf7, 0xd1, 0xf8, 0xd7, 0x77, 0xa, 0xfc, 0x27, 0x51, - 0xa, 0x59, 0xf8, 0x27, 0x54, 0xa, 0xe5, 0xfc, 0xa3, 0x5, 0x4c, 0x6f, - 0x6c, 0x64, 0x5c, 0x1b, 0x7d, 0x7b, 0x8e, 0x92, 0x79, 0x1f, 0xe, 0xfb, - 0x1b, 0x8b, 0xf7, 0xa, 0xf7, 0xc1, 0xf7, 0x5, 0x1, 0x9f, 0x16, 0xf8, - 0x70, 0x6, 0xa5, 0xf7, 0xa, 0x5, 0xfb, 0xac, 0x6, 0xf7, 0xd6, 0xf7, - 0xdc, 0x9e, 0xe1, 0x5, 0xfc, 0x5c, 0x6, 0x71, 0xfb, 0x5, 0x5, 0xf7, - 0x98, 0x6, 0xfb, 0xd3, 0xfb, 0xd5, 0x5, 0xe, 0x73, 0xa, 0xf7, 0xb2, - 0xf7, 0x7, 0x1, 0x14, 0xe0, 0xe9, 0xf7, 0x61, 0x15, 0xef, 0x79, 0x3f, - 0xfb, 0x4, 0x74, 0x1f, 0xfb, 0x2f, 0x69, 0xb1, 0x51, 0xf7, 0x1e, 0x1b, - 0xa3, 0x6, 0xa3, 0xf7, 0x7, 0x5, 0x49, 0x72, 0x8e, 0xcc, 0x98, 0x1f, - 0xb4, 0xf7, 0x4e, 0x82, 0xbd, 0x52, 0xb3, 0xd3, 0xb5, 0xa8, 0xac, 0xb7, - 0xf7, 0x5c, 0x8, 0xcb, 0x98, 0xa0, 0x90, 0xd6, 0x1b, 0xa3, 0xf7, 0x7, - 0x5, 0x73, 0x6, 0xfb, 0x50, 0x77, 0x32, 0xfb, 0x23, 0x6c, 0x1f, 0xfb, - 0x9, 0x72, 0x7f, 0x57, 0x27, 0x1b, 0xe, 0xfb, 0xf7, 0xfb, 0x50, 0x76, - 0xfa, 0x46, 0x77, 0x1, 0xbd, 0xfb, 0x65, 0x15, 0xf7, 0x3, 0x6, 0xf7, - 0x5e, 0xfa, 0x46, 0x5, 0xfb, 0x3, 0x6, 0xe, 0x73, 0xa, 0xf8, 0x25, - 0x77, 0x1, 0x93, 0x3a, 0x15, 0x71, 0xfb, 0x7, 0x5, 0xf7, 0x66, 0x9f, - 0xe4, 0xf7, 0x23, 0xac, 0x1f, 0xf7, 0x9, 0xa5, 0xa8, 0xbf, 0xdd, 0x1b, - 0xa4, 0xf7, 0x8, 0x5, 0x29, 0x9c, 0xd7, 0xf7, 0x4, 0xa4, 0x1f, 0x94, - 0xae, 0x8e, 0xa9, 0xa5, 0x1a, 0xe3, 0x59, 0xad, 0xfb, 0x10, 0x1e, 0x71, - 0xfb, 0x7, 0x5, 0xc0, 0xa6, 0x89, 0x67, 0x83, 0x8a, 0x82, 0x88, 0x7e, - 0x1f, 0x61, 0xfb, 0x4e, 0x94, 0x59, 0xc4, 0x63, 0x41, 0x61, 0x6e, 0x6a, - 0x5f, 0xfb, 0x5c, 0x8, 0x4b, 0x7c, 0x77, 0x86, 0x42, 0x1b, 0xe, 0x58, - 0xf7, 0x4d, 0x76, 0xf7, 0x47, 0x77, 0x1, 0xf7, 0x7, 0xf8, 0x62, 0x3, - 0xf7, 0x7, 0xf7, 0x37, 0x15, 0xc2, 0xbf, 0xb3, 0x91, 0xa6, 0x1b, 0xbc, - 0xab, 0x7d, 0x7c, 0xa9, 0x1f, 0x7b, 0xaa, 0xa9, 0x7c, 0xb4, 0x1b, 0xd0, - 0xbf, 0xbc, 0x95, 0x94, 0x1f, 0xf7, 0xc, 0x7, 0x4d, 0x53, 0x56, 0x89, - 0x81, 0x1b, 0x69, 0x6d, 0x97, 0x98, 0x6e, 0x1f, 0x9b, 0x64, 0x66, 0x9e, - 0x5d, 0x1b, 0x75, 0x57, 0x8b, 0x4e, 0x55, 0x1f, 0xe, 0xe2, 0x8b, 0xf7, - 0xc, 0xf8, 0x6f, 0xf7, 0xf, 0x1, 0xf7, 0x8, 0xf7, 0x1f, 0x3, 0x9f, - 0xf7, 0x94, 0x15, 0xeb, 0x6, 0xfb, 0x32, 0x9a, 0xec, 0x29, 0xf7, 0x4b, - 0x1b, 0xbb, 0xba, 0x93, 0x9a, 0xb9, 0x1f, 0xaf, 0xf7, 0x25, 0x5, 0x6b, - 0x5c, 0x53, 0x7b, 0x4c, 0x1b, 0x38, 0x3a, 0xca, 0xd4, 0x88, 0x1f, 0xf7, - 0xda, 0x6, 0x9b, 0xd4, 0x5, 0xfb, 0xe7, 0x6, 0x8f, 0xaa, 0x90, 0xa1, - 0x8d, 0x94, 0x8, 0xf7, 0xe9, 0x6, 0x9b, 0xd4, 0x5, 0xfb, 0xdf, 0x6, - 0xe2, 0xb9, 0xdb, 0xb7, 0xeb, 0x1b, 0xc4, 0xb5, 0x81, 0x6a, 0xa6, 0x1f, - 0xc6, 0x55, 0xa, 0xa8, 0x5a, 0x4e, 0x9a, 0x43, 0x1b, 0xfb, 0x49, 0xfb, - 0x20, 0x23, 0xfb, 0x2a, 0x54, 0x1f, 0xfb, 0x0, 0x6, 0x7b, 0x42, 0x5, - 0xf4, 0x6, 0x87, 0x71, 0x89, 0x76, 0x8a, 0x7c, 0x8, 0x39, 0x6, 0xe, - 0xfb, 0xf9, 0xfb, 0x11, 0x76, 0xf7, 0x3a, 0x76, 0xf7, 0x14, 0x77, 0x1, - 0xd3, 0x8a, 0x15, 0xc9, 0x6, 0x7e, 0x52, 0x73, 0x7a, 0x60, 0x82, 0x7e, - 0x4d, 0x18, 0xf7, 0x1d, 0x3e, 0xa, 0xfb, 0x1d, 0x6, 0xe, 0x3c, 0xfb, - 0x51, 0x76, 0xf9, 0xcf, 0x96, 0xa, 0x88, 0x3b, 0x15, 0x5c, 0xfb, 0x3, - 0x5, 0x7d, 0xb6, 0xc5, 0x86, 0xaa, 0x1b, 0xf7, 0x15, 0xbb, 0xf7, 0xf, - 0xd9, 0xa6, 0x1f, 0xf7, 0x27, 0xf8, 0x3e, 0x5, 0xef, 0x6, 0xae, 0xf4, - 0x5, 0x27, 0x6, 0xcd, 0xa2, 0x96, 0xa8, 0xba, 0x1b, 0xa9, 0xa9, 0x81, - 0x87, 0x98, 0x1f, 0xba, 0xf7, 0x5, 0x5, 0x9e, 0x50, 0x52, 0x8d, 0x80, - 0x1b, 0xfb, 0x1e, 0x7b, 0x35, 0xfb, 0x15, 0x51, 0x1f, 0x2a, 0x6, 0x67, - 0x22, 0x5, 0xed, 0x6, 0xfb, 0x26, 0xfc, 0x3c, 0x5, 0x4f, 0x77, 0x75, - 0x72, 0x6b, 0x1b, 0x77, 0x78, 0x8d, 0x95, 0x64, 0x1f, 0xe, 0xfb, 0x1b, - 0xfb, 0x11, 0x76, 0xf7, 0x25, 0xf7, 0x14, 0x1, 0xf7, 0xbd, 0x8a, 0x61, - 0xa, 0xf7, 0x1f, 0x3e, 0xa, 0xfb, 0x1e, 0x6, 0xfb, 0x96, 0xfb, 0x14, - 0x61, 0xa, 0x56, 0xa, 0xe, 0xf8, 0x1, 0x8b, 0xf7, 0x26, 0x1, 0xf9, - 0x92, 0x16, 0x4b, 0xa, 0xfd, 0x53, 0xfb, 0x26, 0x15, 0x4b, 0xa, 0xf7, - 0xc8, 0xfb, 0x26, 0x15, 0x4b, 0xa, 0xe, 0x3c, 0xfb, 0x2a, 0x76, 0xf8, - 0xdb, 0xf7, 0x3, 0xf7, 0x57, 0x77, 0x1, 0xf7, 0x45, 0xfb, 0x3f, 0x15, - 0xf7, 0x18, 0x6, 0xf7, 0xc, 0xf8, 0xdb, 0x5, 0xf7, 0x42, 0x6, 0xa2, - 0xf7, 0x3, 0x5, 0xfb, 0x43, 0x6, 0xb4, 0xf7, 0x57, 0x66, 0xa, 0x62, - 0xfb, 0x57, 0x5, 0xfb, 0x48, 0x6, 0x75, 0xfb, 0x3, 0x5, 0xf7, 0x48, - 0x6, 0xe, 0x3c, 0xfb, 0x2a, 0x76, 0xf7, 0x42, 0xf7, 0x3, 0xf7, 0xd7, - 0xf7, 0x3, 0xf7, 0x3e, 0x77, 0x1, 0xb9, 0x8e, 0x15, 0xf7, 0x43, 0x6, - 0x69, 0xfb, 0x42, 0x5, 0xf7, 0x14, 0x6, 0xad, 0xf7, 0x42, 0x5, 0xf7, - 0x3d, 0x89, 0xa, 0xcc, 0xf7, 0xd7, 0x5, 0xf7, 0x3e, 0x89, 0xa, 0xac, - 0xf7, 0x3e, 0x5, 0xfb, 0x13, 0x6, 0x69, 0xfb, 0x3e, 0x5, 0xfb, 0x44, - 0x6, 0x75, 0xfb, 0x3, 0x5, 0xf7, 0x43, 0x6, 0x4b, 0xfb, 0xd7, 0x5, - 0xfb, 0x44, 0x6, 0xe, 0x72, 0xa, 0xf7, 0xa, 0xf8, 0xf0, 0x8f, 0xa, - 0xe4, 0xe1, 0xb3, 0x35, 0x5, 0xf1, 0x6, 0x4c, 0xf7, 0x26, 0x81, 0xa, - 0xf8, 0x1, 0x7a, 0xdb, 0x4e, 0x76, 0xf9, 0x1d, 0xdb, 0x12, 0x13, 0x60, - 0xf7, 0x3e, 0xf8, 0x6f, 0x15, 0x9b, 0xa1, 0xf7, 0x1f, 0xc3, 0x9b, 0x9e, - 0x76, 0x6e, 0x75, 0x77, 0xfb, 0x17, 0x4f, 0x6a, 0x8b, 0xaa, 0x9c, 0x1e, - 0x47, 0xfc, 0x82, 0x15, 0xed, 0x6, 0xf8, 0x6a, 0xf9, 0x6d, 0x5, 0x26, - 0x6, 0xfc, 0x81, 0xfb, 0x7f, 0x15, 0xfb, 0x1, 0xd3, 0x79, 0xba, 0xf7, - 0x1c, 0xb8, 0xf7, 0x36, 0xd1, 0xb5, 0x79, 0xe3, 0x21, 0xfb, 0x2f, 0x76, - 0xfb, 0x6b, 0x77, 0x1e, 0xf7, 0xd7, 0xfc, 0x1, 0x15, 0x13, 0xa0, 0xfb, - 0x1, 0xd1, 0x79, 0xbb, 0xf7, 0x1c, 0xb8, 0xf7, 0x3e, 0xd0, 0xb5, 0x79, - 0xdc, 0x21, 0x74, 0xa, 0xa1, 0xf7, 0x1f, 0xc3, 0x9a, 0x9e, 0x7e, 0x6d, - 0x76, 0x77, 0xfb, 0x1e, 0x51, 0x69, 0x8b, 0xaa, 0x9b, 0x1e, 0xf7, 0x8b, - 0x16, 0xfb, 0x1, 0xd1, 0x79, 0xba, 0xf7, 0x1e, 0xb7, 0xf7, 0x3d, 0xcf, - 0xb2, 0x7b, 0xe1, 0xfb, 0x0, 0x74, 0xa, 0xa0, 0xf7, 0x1f, 0xc4, 0x9a, - 0x9e, 0x7c, 0x6d, 0x76, 0x77, 0xfb, 0x1c, 0x50, 0x6a, 0x8b, 0xaa, 0x9b, - 0x1e, 0xe, 0xab, 0x78, 0xf7, 0x14, 0x12, 0xdc, 0xf7, 0x26, 0x53, 0xf7, - 0x26, 0xf7, 0x5b, 0xf7, 0x2c, 0x2a, 0xf7, 0x27, 0x13, 0xd0, 0xdc, 0xf7, - 0x7e, 0x15, 0xfb, 0x46, 0xf7, 0x28, 0x40, 0xf7, 0x24, 0xf7, 0x67, 0xdf, - 0xf7, 0x2, 0xf7, 0x1, 0xf7, 0x12, 0x34, 0xc4, 0xfb, 0x14, 0xc2, 0x1e, - 0x13, 0xa8, 0x35, 0xb0, 0x59, 0x8e, 0xc0, 0x1a, 0xd8, 0xe7, 0x9e, 0xa5, - 0xd1, 0xc5, 0x73, 0x35, 0x93, 0x1e, 0xf7, 0x27, 0x92, 0x5, 0xf7, 0x37, - 0x80, 0xfb, 0x14, 0xc8, 0xfb, 0x23, 0x1b, 0xfb, 0x65, 0x53, 0xfb, 0x14, - 0x32, 0xfb, 0x15, 0xe5, 0x6e, 0xf7, 0x15, 0x53, 0x1f, 0x13, 0xd0, 0xdc, - 0x68, 0xb8, 0x6e, 0x56, 0x1a, 0x3d, 0x32, 0x7e, 0x57, 0xfb, 0x23, 0x88, - 0xcf, 0xcb, 0x89, 0x1e, 0xf7, 0x3e, 0xf8, 0xb3, 0x15, 0xf7, 0x1d, 0x6, - 0xf7, 0x2b, 0x5d, 0xa, 0xfb, 0xd, 0x6, 0x32, 0x31, 0x64, 0xe5, 0x5, - 0x26, 0x6, 0xe, 0x58, 0xa, 0xf7, 0x62, 0xd7, 0x15, 0xd0, 0x6, 0x5e, - 0xf7, 0x65, 0xf7, 0xf, 0xf7, 0x5b, 0x5, 0x39, 0x6, 0xfb, 0x21, 0xfb, - 0x5b, 0x5, 0xe, 0xf8, 0x1, 0x78, 0xf7, 0xd, 0xfb, 0x1, 0xf7, 0x1, - 0xfb, 0x1, 0xf7, 0xf, 0xf7, 0x5c, 0xf7, 0xf, 0xf7, 0x37, 0xf7, 0xf, - 0xfb, 0x1, 0xf7, 0xd, 0x12, 0xee, 0xf7, 0x19, 0x13, 0x3a, 0xf8, 0x84, - 0x84, 0x15, 0xf8, 0x88, 0x71, 0xa, 0xfb, 0xfc, 0x6, 0xb4, 0xf7, 0x5c, - 0x5, 0xf7, 0xc7, 0x71, 0xa, 0xfb, 0xc8, 0x6, 0xac, 0xf7, 0x37, 0x5, - 0xf7, 0xdc, 0x6, 0xa4, 0xf7, 0xf, 0x5, 0xfc, 0x68, 0x6, 0x7a, 0x39, - 0x5, 0x13, 0x96, 0xd6, 0x62, 0x3c, 0x9e, 0x57, 0x1b, 0xfb, 0x52, 0xfb, - 0x3c, 0xfb, 0x57, 0xfb, 0xab, 0xfb, 0x61, 0xf7, 0x12, 0x3e, 0xf7, 0x12, - 0xe3, 0xb4, 0xb1, 0xad, 0xa5, 0x1f, 0x8d, 0x88, 0x5, 0x13, 0x56, 0xfb, - 0xa8, 0xf7, 0x69, 0x15, 0xf7, 0x12, 0xc5, 0xf7, 0x77, 0xf7, 0x38, 0xe1, - 0xb7, 0x4a, 0x3e, 0x4e, 0x76, 0xfb, 0x9, 0x6f, 0x42, 0x1e, 0x6f, 0x80, - 0x63, 0x2e, 0x20, 0x1b, 0x38, 0x4d, 0xc5, 0xf2, 0x1f, 0xe, 0xfb, 0xf9, - 0xf8, 0x6f, 0x76, 0xf7, 0xa5, 0x77, 0x1, 0xf7, 0x39, 0xf8, 0x5a, 0x8e, - 0xa, 0xa6, 0xf7, 0x15, 0x5, 0x4d, 0x6, 0x97, 0xc4, 0xa4, 0x9a, 0xb6, - 0x95, 0x98, 0xc9, 0x18, 0xfb, 0x1e, 0x88, 0x74, 0xfb, 0x1, 0x7f, 0x54, - 0x8, 0xe, 0xfb, 0xf9, 0xf8, 0x66, 0x76, 0xf7, 0xa5, 0x77, 0x1, 0xf7, - 0x3b, 0xf8, 0x51, 0x15, 0xf7, 0x1d, 0x3e, 0xa, 0xfb, 0x1d, 0x6, 0x70, - 0xfb, 0x15, 0x5, 0xc9, 0x6, 0x7e, 0x53, 0x73, 0x7b, 0x60, 0x81, 0x8, - 0xe, 0xfb, 0x1b, 0xf8, 0x5a, 0xf7, 0x14, 0xf7, 0x25, 0x77, 0x1, 0xf7, - 0x34, 0xf8, 0x5a, 0x15, 0xf7, 0x1f, 0x6, 0xa6, 0xf7, 0x14, 0x5, 0x4d, - 0x6, 0x97, 0xc3, 0xa4, 0x9d, 0xb7, 0x94, 0x97, 0xc9, 0x18, 0xfb, 0x1e, - 0x88, 0x73, 0xfb, 0x3, 0x7f, 0x55, 0x8, 0xf7, 0x64, 0x22, 0x8e, 0xa, - 0xa7, 0xf7, 0x14, 0x5, 0x4c, 0x6, 0x98, 0xc3, 0xa3, 0x9d, 0xb7, 0x94, - 0x98, 0xc9, 0x18, 0xfb, 0x1f, 0x88, 0x74, 0xfb, 0x3, 0x7f, 0x55, 0x8, - 0xe, 0xfb, 0x1b, 0xf8, 0x66, 0x76, 0xf7, 0x24, 0xf7, 0x15, 0x1, 0xf8, - 0x1c, 0xf8, 0x51, 0x15, 0xf7, 0x1f, 0x3e, 0xa, 0xfb, 0x1e, 0x6, 0x6f, - 0x62, 0xa, 0xfb, 0x87, 0x4d, 0x15, 0x56, 0xa, 0x70, 0x62, 0xa, 0xe, - 0xfb, 0xb1, 0xf7, 0x6b, 0x76, 0xf7, 0xde, 0x77, 0x1, 0xde, 0xf7, 0xfd, - 0x15, 0x2f, 0xd7, 0x40, 0xe7, 0xe7, 0xd8, 0xd5, 0xe8, 0xe9, 0x3e, 0xd0, - 0x2f, 0x2e, 0x40, 0x44, 0x2f, 0x1e, 0xe, 0x3c, 0x88, 0xa, 0xf8, 0xd7, - 0xf5, 0xfc, 0xd7, 0x6, 0xe, 0xf8, 0x1, 0x88, 0xa, 0xfa, 0x93, 0xf5, - 0xfe, 0x93, 0x6, 0xe, 0xf8, 0xf6, 0xf7, 0x13, 0x38, 0xde, 0x89, 0x77, - 0x12, 0x13, 0x80, 0xf7, 0x5, 0xf8, 0xf6, 0x15, 0xd4, 0x6, 0x13, 0x40, - 0x8f, 0x9a, 0x96, 0xa7, 0xae, 0x8c, 0x8, 0xaa, 0xa2, 0x81, 0x81, 0xa3, - 0x1f, 0x81, 0xa2, 0xa2, 0x80, 0xaa, 0x1b, 0xc1, 0xbb, 0xb5, 0xdd, 0x99, - 0x1f, 0x41, 0x6, 0x72, 0x83, 0x83, 0x7a, 0x74, 0x1b, 0x75, 0x75, 0x93, - 0x93, 0x72, 0x1f, 0x13, 0x20, 0x96, 0x6c, 0x6a, 0x98, 0x69, 0x1b, 0x13, - 0x80, 0x3d, 0x72, 0x42, 0x57, 0x80, 0x1f, 0xe, 0xf8, 0x1, 0xf7, 0xdb, - 0x76, 0xf7, 0xe7, 0xd4, 0x1, 0xf7, 0x68, 0xe5, 0xf7, 0x58, 0xe0, 0xf7, - 0xd0, 0xe0, 0x3, 0xf7, 0x68, 0xf7, 0xc6, 0x15, 0xe5, 0xf7, 0xe7, 0xf7, - 0x2e, 0xd4, 0xfc, 0x26, 0x42, 0xf7, 0x32, 0x6, 0xf7, 0xb2, 0xfb, 0xe7, - 0x15, 0xe0, 0xf7, 0xdc, 0x8d, 0x6, 0xf7, 0x8, 0xfb, 0xdc, 0x5, 0xdb, - 0x6, 0xf7, 0x7, 0xf7, 0xdc, 0x5, 0x8e, 0xfb, 0xdc, 0xe0, 0xf8, 0x30, - 0xfb, 0x21, 0x6, 0x26, 0xfb, 0xaf, 0x51, 0xa, 0x25, 0xf7, 0xaf, 0x5, - 0xfb, 0x20, 0x6, 0xe, 0x3c, 0x7d, 0xef, 0xf8, 0x94, 0xf7, 0x2c, 0x1, - 0xf7, 0x24, 0xf7, 0x1c, 0xf7, 0x26, 0xf7, 0x28, 0x3, 0xca, 0xf7, 0x28, - 0x15, 0xfb, 0x7, 0xad, 0xe9, 0x5c, 0xf7, 0x1e, 0x1b, 0xf7, 0x51, 0xc3, - 0xe5, 0xd3, 0xf4, 0xfb, 0x4, 0xc5, 0x3a, 0xa3, 0x1f, 0x41, 0xa1, 0x70, - 0x8b, 0xab, 0x1a, 0xa4, 0xa4, 0xab, 0xc7, 0x9b, 0xd4, 0x8b, 0x4b, 0xa2, - 0x1e, 0xf7, 0x1a, 0xa3, 0x5, 0xf7, 0x11, 0x6f, 0xfb, 0xc, 0x9b, 0x40, - 0x1b, 0xfb, 0x3a, 0x3d, 0x46, 0x32, 0x27, 0xdc, 0x69, 0xe6, 0x6c, 0x1f, - 0xef, 0x69, 0x95, 0x7e, 0x6e, 0x1a, 0x67, 0x5a, 0x71, 0x58, 0x3d, 0x70, - 0xb3, 0xb8, 0x7a, 0x1e, 0xf7, 0x11, 0xf8, 0x3f, 0x15, 0x82, 0xa, 0xf7, - 0x2a, 0x5d, 0xa, 0xfb, 0xc, 0x6, 0x33, 0x31, 0x64, 0xe5, 0x5, 0x27, - 0x6, 0xe, 0x58, 0xa, 0xee, 0xd7, 0x15, 0xdd, 0x6, 0xf7, 0x21, 0xf7, - 0x55, 0x3f, 0xf7, 0x6b, 0x5, 0x46, 0x6, 0xb8, 0xfb, 0x6b, 0x5, 0xe, - 0xf7, 0xc9, 0x7d, 0xf1, 0x25, 0xf7, 0x2, 0xf7, 0x10, 0xe3, 0xf7, 0x15, - 0xf7, 0x1, 0x24, 0xf2, 0x12, 0xdd, 0xf7, 0x21, 0xf7, 0x98, 0xf7, 0x15, - 0x13, 0xb6, 0xf8, 0xa5, 0xcc, 0x15, 0x56, 0xb8, 0xd0, 0x71, 0xd0, 0x1b, - 0xf7, 0x2a, 0xca, 0xf7, 0x1, 0xb9, 0xa5, 0x1f, 0xfb, 0x13, 0xa2, 0x5, - 0x69, 0x7b, 0x6a, 0x61, 0x4d, 0x1b, 0x68, 0x47, 0xa4, 0xf6, 0x8d, 0x1f, - 0xf7, 0xf6, 0x6, 0x94, 0xae, 0x8d, 0xb0, 0xaf, 0x1a, 0xec, 0x4c, 0xf7, - 0xd, 0xfb, 0x2b, 0x74, 0x33, 0x89, 0x42, 0x39, 0x1e, 0xca, 0x51, 0x45, - 0x97, 0x53, 0x1b, 0xfb, 0xaa, 0x71, 0xfb, 0xa5, 0x4a, 0xfb, 0xa, 0xcf, - 0x23, 0xf7, 0x45, 0xd6, 0xd5, 0xa5, 0xc0, 0xc0, 0x1f, 0xec, 0xf7, 0x87, - 0x15, 0x13, 0xae, 0xa8, 0x92, 0xa4, 0xf5, 0xe9, 0x1b, 0xf0, 0x86, 0xfb, - 0x4, 0x74, 0x8a, 0x1f, 0xfd, 0x4, 0x27, 0x15, 0x13, 0x76, 0xf7, 0x5, - 0xc0, 0xf7, 0x8, 0xf0, 0xb7, 0xc9, 0x6f, 0x29, 0x43, 0x65, 0xfb, 0x23, - 0xfb, 0x9, 0x47, 0x66, 0xc1, 0xc5, 0x1e, 0xe, 0xab, 0xa0, 0x76, 0xf9, - 0x6d, 0x77, 0xdf, 0xf7, 0xe, 0x1, 0x64, 0xa, 0xf7, 0xa2, 0xf7, 0xcc, - 0xf8, 0x5f, 0x43, 0xa, 0xfb, 0x5d, 0xfb, 0xcc, 0xfb, 0x10, 0xf7, 0xcc, - 0x5a, 0xa, 0xf7, 0x51, 0xfc, 0x50, 0x5, 0x8a, 0xf8, 0x90, 0x15, 0xf7, - 0x6, 0x6, 0xa3, 0x55, 0xa, 0xfb, 0x7, 0x6, 0xf7, 0x40, 0xfb, 0xe, - 0x15, 0xf7, 0x6, 0x6, 0xa3, 0x55, 0xa, 0xfb, 0x6, 0x6, 0xe, 0xfb, - 0x39, 0x76, 0xf8, 0xab, 0x77, 0xcf, 0xf7, 0x1b, 0x1, 0xf7, 0x46, 0xf8, - 0x21, 0x15, 0xf7, 0x25, 0x6, 0xa9, 0xf7, 0x1b, 0x93, 0xa, 0xfb, 0xb, - 0xfc, 0xb9, 0x15, 0x65, 0xfb, 0x3d, 0x5, 0xf7, 0x2b, 0x6, 0xb0, 0xf7, - 0x3d, 0xb9, 0xf8, 0x2, 0x5, 0x3a, 0x6, 0xe, 0x3c, 0x2a, 0x76, 0xf6, - 0xf5, 0xf7, 0xed, 0xe9, 0xe9, 0x77, 0x1, 0xda, 0xf7, 0x1b, 0x3, 0xf7, - 0x24, 0x2c, 0x15, 0xc9, 0x74, 0xbe, 0xf7, 0x3, 0x5, 0x89, 0x95, 0x9b, - 0x89, 0xa1, 0x1b, 0xf7, 0x2f, 0xd5, 0xf7, 0x3, 0xd8, 0xa6, 0x1f, 0xfb, - 0x19, 0x9f, 0x73, 0x50, 0x64, 0x5c, 0x4b, 0x8f, 0x19, 0xf7, 0x1c, 0xf7, - 0xd8, 0xa0, 0x79, 0x96, 0x72, 0x8d, 0x6d, 0x19, 0xf7, 0x14, 0x99, 0x85, - 0xe3, 0x4f, 0xbb, 0x54, 0xa0, 0x19, 0xb0, 0xe2, 0x4f, 0xa3, 0x61, 0x2b, - 0x5, 0x8c, 0x85, 0x81, 0x8c, 0x7b, 0x1b, 0xfb, 0x39, 0xfb, 0x1d, 0xfb, - 0x20, 0xfb, 0x57, 0x2a, 0xb6, 0x4f, 0xd3, 0x6b, 0x1f, 0xb9, 0xf7, 0x2, - 0x15, 0x82, 0x93, 0x7a, 0x9e, 0xbf, 0x1a, 0xd2, 0xab, 0xf7, 0x35, 0xf7, - 0x14, 0x94, 0x1e, 0xe, 0x3c, 0x90, 0x76, 0xa6, 0x76, 0xf7, 0xc8, 0xf7, - 0x0, 0xf7, 0x61, 0xf6, 0x12, 0xf7, 0x4b, 0xf7, 0x14, 0x13, 0xb8, 0xcb, - 0x7b, 0x15, 0x9c, 0xaa, 0xc2, 0xa3, 0xc4, 0x1b, 0xbb, 0xa9, 0x82, 0x82, - 0xaa, 0x1f, 0x13, 0x78, 0x82, 0xa9, 0xab, 0x83, 0xbc, 0x1b, 0xc5, 0xaf, - 0x9a, 0x98, 0xaf, 0x1f, 0x61, 0xf7, 0xb, 0x5, 0x71, 0x53, 0x68, 0x8b, - 0x78, 0x1b, 0x7e, 0x41, 0x97, 0x84, 0xad, 0x1f, 0x86, 0xa4, 0x3e, 0x97, - 0x74, 0x1b, 0x75, 0x78, 0x87, 0x81, 0x7e, 0x1f, 0x89, 0x8d, 0xca, 0xc2, - 0xad, 0xbd, 0x90, 0xdd, 0x19, 0xe9, 0x6, 0xa2, 0xf7, 0x0, 0x7a, 0xa, - 0x87, 0xa1, 0x88, 0xa1, 0xa3, 0x1a, 0xe9, 0xc2, 0xb6, 0xc0, 0xd7, 0x96, - 0x44, 0x72, 0x8f, 0x1e, 0xf7, 0x11, 0x98, 0x5, 0xea, 0x84, 0x4f, 0xea, - 0xfb, 0x23, 0x1b, 0xfb, 0x28, 0x2d, 0xfb, 0x8, 0xfb, 0x14, 0x85, 0x8b, - 0x75, 0x93, 0x63, 0x1f, 0x3d, 0x6, 0x75, 0xfb, 0x0, 0x5, 0xf7, 0x3, - 0x6, 0x7e, 0xfb, 0x9, 0x23, 0x52, 0x68, 0x7c, 0x8, 0xe, 0x3c, 0xec, - 0x76, 0xb5, 0xf7, 0x16, 0xf7, 0x69, 0xf7, 0x16, 0xb8, 0x77, 0x1, 0xdc, - 0xd8, 0x15, 0xe6, 0xd2, 0x5, 0x78, 0xa6, 0xad, 0x80, 0xb1, 0x1b, 0xb5, - 0xb7, 0x97, 0x9e, 0xae, 0x1f, 0xb8, 0x42, 0xf7, 0x7, 0xe6, 0x5f, 0xd3, - 0xaa, 0xae, 0xa4, 0xb4, 0x99, 0xb5, 0x19, 0x92, 0xa0, 0x91, 0xa6, 0xa7, - 0x1a, 0x98, 0x8b, 0x98, 0x88, 0x99, 0x1e, 0xe7, 0xd3, 0x55, 0xe6, 0x2e, - 0x42, 0x5, 0x95, 0x7d, 0x6e, 0x9d, 0x52, 0x1b, 0x51, 0x60, 0x79, 0x81, - 0x77, 0x1f, 0x5e, 0xd4, 0xfb, 0x8, 0x2b, 0xb5, 0x46, 0x6e, 0x69, 0x74, - 0x62, 0x7e, 0x62, 0x19, 0x82, 0x71, 0x80, 0x60, 0x93, 0x5c, 0x32, 0x44, - 0x18, 0xf7, 0x74, 0xf7, 0x51, 0x15, 0xc6, 0x9e, 0xc9, 0xb8, 0xc3, 0x1b, - 0xb7, 0xa8, 0x6f, 0x62, 0x80, 0x89, 0x7f, 0x87, 0x7f, 0x1f, 0x4f, 0x77, - 0x4b, 0x5a, 0x53, 0x1b, 0x53, 0x6e, 0xbc, 0xc7, 0xa0, 0x1f, 0xe, 0x3c, - 0xa0, 0x76, 0xf7, 0x21, 0xe6, 0xf8, 0x66, 0x77, 0x1, 0xc7, 0xf7, 0x21, - 0x15, 0xf7, 0x4d, 0x6, 0x6d, 0xfb, 0x21, 0x5, 0xf7, 0x20, 0x6, 0xab, - 0xf7, 0x21, 0x5, 0xf7, 0x4b, 0x6, 0x9f, 0xe6, 0x5, 0xfb, 0x4c, 0x6, - 0x9c, 0xd7, 0x5, 0xf7, 0x4b, 0x6, 0x9f, 0xe7, 0x5, 0xfb, 0x13, 0x6, - 0xf7, 0x6a, 0xf7, 0xbe, 0x43, 0xa, 0xfb, 0x4b, 0xfb, 0xbe, 0x51, 0xa, - 0x40, 0xf7, 0xbe, 0x44, 0xa, 0xe8, 0xfb, 0xbe, 0x5, 0xfb, 0xf, 0x6, - 0x78, 0x2f, 0x5, 0xf7, 0x4d, 0x6, 0x7b, 0x3f, 0x5, 0xfb, 0x4e, 0x6, - 0xe, 0xfb, 0xf7, 0x78, 0xa, 0xdb, 0x78, 0x15, 0xf7, 0x0, 0x6, 0xce, - 0xf7, 0xc9, 0x5, 0xfb, 0x0, 0x6, 0xaa, 0xf7, 0x1d, 0x15, 0xf7, 0x0, - 0x6, 0xce, 0xf7, 0xca, 0x5, 0xfb, 0x0, 0x6, 0xe, 0x3c, 0xfb, 0x4c, - 0xe9, 0xf9, 0x1e, 0xf7, 0x3b, 0x12, 0xf6, 0xf7, 0xd, 0x78, 0xf7, 0x11, - 0xa1, 0xf7, 0x16, 0x6b, 0xf7, 0xa, 0x13, 0xe8, 0xc8, 0x77, 0x15, 0x35, - 0x9c, 0xd6, 0x3d, 0xf7, 0x1a, 0x1b, 0xf7, 0x1b, 0xcb, 0xd6, 0xd5, 0xbd, - 0x6f, 0xb7, 0x7d, 0x9e, 0x1f, 0x13, 0xd4, 0xd5, 0xae, 0xc1, 0xc6, 0xd3, - 0x1a, 0xc6, 0x6e, 0xbe, 0x2f, 0xdb, 0x1e, 0x27, 0xe3, 0x7a, 0x92, 0xb1, - 0x1a, 0xa5, 0x9c, 0xb3, 0xba, 0xcf, 0x8f, 0x4f, 0x78, 0x8d, 0x1e, 0xf7, - 0x12, 0x97, 0x5, 0xc4, 0x84, 0x72, 0xf3, 0xfb, 0x36, 0x1b, 0xfb, 0x28, - 0x5c, 0x30, 0x46, 0x75, 0x90, 0x6d, 0xa3, 0x65, 0x1f, 0x13, 0xe8, 0x67, - 0x79, 0x2c, 0x63, 0x22, 0x1a, 0x76, 0x89, 0x4a, 0xe1, 0x3e, 0x1e, 0xc8, - 0x55, 0xf3, 0x48, 0x4a, 0x1a, 0x83, 0x87, 0x5c, 0x4d, 0x60, 0x64, 0x9f, - 0xd9, 0x77, 0x1e, 0xf7, 0x57, 0xf7, 0x1c, 0x15, 0xfb, 0x9, 0xf7, 0x2, - 0x5, 0x65, 0xaf, 0x8b, 0x98, 0x96, 0x1a, 0xb9, 0xad, 0xaa, 0xab, 0x9d, - 0x1e, 0x86, 0xe2, 0x40, 0x82, 0x8f, 0x1f, 0x13, 0xe4, 0xb6, 0x64, 0xaa, - 0x6e, 0x66, 0x1a, 0x5d, 0x51, 0x71, 0x7e, 0x87, 0x1e, 0xe, 0xf8, 0xfa, - 0xf7, 0x7, 0x1, 0xf7, 0x1d, 0xf8, 0xfa, 0x69, 0xa, 0xf7, 0x45, 0xfb, - 0x7, 0x69, 0xa, 0xe, 0xf1, 0x78, 0xd6, 0xe7, 0xd2, 0xf7, 0xab, 0xd2, - 0xe8, 0xd6, 0x1, 0xc3, 0xd8, 0xf9, 0x5, 0xd8, 0x3, 0xf7, 0x19, 0xf7, - 0xf8, 0x15, 0xf7, 0x3c, 0xf7, 0x1d, 0xf7, 0x1e, 0xf7, 0x41, 0xf7, 0x41, - 0xf7, 0x22, 0xfb, 0x1e, 0xfb, 0x3c, 0xfb, 0x3c, 0xfb, 0x22, 0xfb, 0x18, - 0xfb, 0x41, 0xfb, 0x41, 0xfb, 0x1d, 0xf7, 0x18, 0xf7, 0x3c, 0x1e, 0xf8, - 0x2c, 0x56, 0x15, 0x76, 0x83, 0x79, 0x4c, 0x43, 0x1b, 0x5c, 0x57, 0xaa, - 0xf5, 0xbc, 0x93, 0xe8, 0xe6, 0xcb, 0xa4, 0x5b, 0x77, 0x93, 0x1f, 0xdd, - 0x9e, 0x5, 0xaf, 0x7d, 0x60, 0xdf, 0xfb, 0xe, 0x1b, 0xfb, 0x13, 0x4e, - 0x33, 0xfb, 0x11, 0xfb, 0x2f, 0xed, 0x56, 0xe5, 0xcd, 0xde, 0xa9, 0xed, - 0xa9, 0x1f, 0xfc, 0xca, 0xdb, 0x15, 0xfb, 0x65, 0xf7, 0x40, 0xfb, 0x3a, - 0xf7, 0x6b, 0xf7, 0x6b, 0xf7, 0x45, 0xf7, 0x3a, 0xf7, 0x65, 0xf7, 0x65, - 0xfb, 0x45, 0xf7, 0x40, 0xfb, 0x6b, 0xfb, 0x6b, 0xfb, 0x40, 0xfb, 0x40, - 0xfb, 0x65, 0x1e, 0xe, 0xfb, 0x9d, 0xf7, 0xa8, 0xe3, 0xf8, 0x9, 0x77, - 0x1, 0xf7, 0xd9, 0xf7, 0xb2, 0x15, 0xf5, 0x6, 0x81, 0xa6, 0x89, 0xa1, - 0x9b, 0xe9, 0xb9, 0xe0, 0xdf, 0x1a, 0xf7, 0xf, 0xfb, 0x15, 0x8b, 0x76, - 0x6b, 0x21, 0x8a, 0xfb, 0x16, 0x5b, 0x1e, 0xf4, 0x7b, 0x5, 0xbe, 0xa4, - 0xb3, 0x8b, 0x95, 0x1b, 0xaf, 0xab, 0x6d, 0x53, 0x70, 0x1f, 0xfb, 0x3, - 0x7e, 0x78, 0x89, 0x65, 0x80, 0x8, 0x54, 0x7a, 0x68, 0x4a, 0x4f, 0x1a, - 0x51, 0xad, 0x56, 0xe0, 0xaf, 0xb2, 0x98, 0xa4, 0xac, 0x1e, 0x8c, 0x7d, - 0x8c, 0x87, 0x8f, 0x81, 0x8, 0x8c, 0xf7, 0x4a, 0x15, 0x61, 0x82, 0x7e, - 0x4d, 0x4e, 0x1b, 0x73, 0x6d, 0x9c, 0xa4, 0xb5, 0xbf, 0x94, 0xe0, 0x96, - 0x1f, 0xe, 0x3c, 0x58, 0xa, 0xf8, 0x23, 0xd7, 0x4a, 0xa, 0x35, 0xfb, - 0x6d, 0x4a, 0xa, 0xe, 0x58, 0xf7, 0x15, 0x76, 0x1, 0xf4, 0xf7, 0xc6, - 0x15, 0xf8, 0x1, 0xfb, 0x5a, 0xf7, 0x19, 0xf7, 0xcb, 0xfc, 0x86, 0x6, - 0xe, 0x58, 0xf7, 0x59, 0xf7, 0x4, 0x1, 0xdd, 0xf7, 0x59, 0x15, 0xf7, - 0x4, 0xf8, 0xa4, 0xfb, 0x4, 0x7, 0xe, 0xf1, 0x78, 0xd6, 0xf7, 0xa0, - 0xca, 0xf7, 0xa7, 0xd6, 0x1, 0xc2, 0xd8, 0xf8, 0x32, 0xe4, 0xf7, 0xe, - 0xd8, 0x3, 0xf7, 0x94, 0xf7, 0x33, 0x15, 0xde, 0x6, 0xa4, 0xf7, 0x39, - 0x5, 0xa1, 0x6, 0xb5, 0xa4, 0x85, 0x2e, 0xae, 0x1f, 0xa3, 0x49, 0x5, - 0xf3, 0x6, 0x66, 0xdc, 0x71, 0xc7, 0x81, 0x9f, 0x67, 0x99, 0x19, 0x8d, - 0x7, 0xe1, 0x96, 0xb5, 0xbd, 0xb9, 0x1a, 0xf7, 0x15, 0xfb, 0x6, 0x7f, - 0xfb, 0xc, 0x1e, 0x38, 0x6, 0xc3, 0xfb, 0x41, 0x15, 0x9c, 0xf7, 0x1, - 0x5, 0xae, 0x6, 0xd4, 0xba, 0x8f, 0x52, 0x52, 0x4d, 0x8c, 0x40, 0x1f, - 0xfb, 0xa9, 0x6f, 0x15, 0xf7, 0x3c, 0xf7, 0x20, 0xf7, 0x1b, 0xf7, 0x41, - 0xf7, 0x41, 0xf7, 0x1f, 0xfb, 0x1b, 0xfb, 0x3c, 0xfb, 0x3c, 0xfb, 0x1f, - 0xfb, 0x1b, 0xfb, 0x41, 0xfb, 0x41, 0xfb, 0x20, 0xf7, 0x1b, 0xf7, 0x3c, - 0x1e, 0x3e, 0x16, 0xfb, 0x65, 0xf7, 0x43, 0xfb, 0x3d, 0xf7, 0x6b, 0xf7, - 0x6b, 0xf7, 0x42, 0xf7, 0x3d, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x42, 0xf7, - 0x3d, 0xfb, 0x6b, 0xfb, 0x6b, 0xfb, 0x43, 0xfb, 0x3d, 0xfb, 0x65, 0x1e, - 0xe, 0xf8, 0xf0, 0xd5, 0x1, 0xf7, 0xe, 0xf7, 0xfd, 0x3, 0xf7, 0xe, - 0xf8, 0xf0, 0x15, 0xf7, 0xe7, 0x6, 0xa1, 0xd5, 0x5, 0xfb, 0xe8, 0x6, - 0xe, 0xfb, 0x7f, 0xf7, 0x43, 0xd7, 0xf7, 0x20, 0xd7, 0x3, 0xf7, 0x43, - 0xf8, 0xcf, 0x15, 0x3b, 0xcc, 0x4a, 0xdb, 0xdc, 0xcd, 0xcc, 0xdb, 0xdb, - 0x49, 0xc8, 0x3a, 0x3b, 0x4a, 0x4e, 0x3b, 0x1e, 0xd7, 0x8a, 0x15, 0xb2, - 0xab, 0xa7, 0xb1, 0xb1, 0xab, 0x70, 0x63, 0x65, 0x6b, 0x6c, 0x65, 0x65, - 0x6b, 0xaa, 0xb1, 0x1e, 0xe, 0x58, 0x8b, 0xe7, 0xf7, 0x4c, 0xe9, 0xf7, - 0x1c, 0x77, 0x1, 0xf7, 0xaa, 0xf7, 0x0, 0x3, 0xb3, 0x16, 0xf8, 0xdd, - 0xe7, 0xfc, 0xdd, 0x6, 0xf7, 0x4c, 0x4, 0xf7, 0x82, 0xfb, 0x1f, 0xf7, - 0x0, 0xf7, 0x1f, 0xf7, 0x83, 0xe9, 0xfb, 0x83, 0xf7, 0x1c, 0xfb, 0x0, - 0xfb, 0x1c, 0xfb, 0x82, 0x6, 0xe, 0xf7, 0xaf, 0xe4, 0xf7, 0x95, 0xdc, - 0x1, 0xd0, 0xf7, 0xaf, 0x15, 0xf7, 0xd8, 0x6, 0xa2, 0xe4, 0x5, 0xfb, - 0x3c, 0x6, 0xa0, 0x9c, 0xc4, 0xb1, 0x97, 0x96, 0x8, 0xdc, 0xd3, 0xa9, - 0xb3, 0xb5, 0x1a, 0xc5, 0x5d, 0xc7, 0xfb, 0x7, 0xfb, 0x25, 0x75, 0x22, - 0x6f, 0x86, 0x1e, 0xf7, 0x4, 0x7d, 0x5, 0xa7, 0x92, 0x94, 0xb1, 0xb9, - 0x1b, 0xef, 0x30, 0xfb, 0x1, 0x52, 0x30, 0x1f, 0x2a, 0x4e, 0x6c, 0x5d, - 0x80, 0x42, 0x8, 0xe, 0xf7, 0xa3, 0xdd, 0x39, 0xf7, 0x1c, 0xf7, 0xc3, - 0x77, 0x1, 0xe6, 0xf8, 0x26, 0x15, 0x71, 0x8e, 0x9b, 0x22, 0xf7, 0x1b, - 0x1b, 0xf7, 0x2, 0xca, 0xda, 0xc8, 0x1f, 0xb9, 0x61, 0x9e, 0x9f, 0x9c, - 0xcc, 0xa6, 0xc0, 0x1a, 0xb8, 0x6a, 0xd3, 0x21, 0xfb, 0xa, 0x6c, 0x33, - 0x6a, 0x7f, 0x1e, 0xed, 0x79, 0x5, 0xb0, 0x95, 0x9c, 0x9f, 0xa8, 0x1b, - 0x92, 0xad, 0x8a, 0x69, 0x4f, 0x46, 0x92, 0x7d, 0x8d, 0x1f, 0x77, 0x34, - 0x5, 0xab, 0x95, 0xba, 0x83, 0x5d, 0x1a, 0x6d, 0x72, 0x6f, 0x61, 0x60, - 0x86, 0xaa, 0xa7, 0x86, 0x1e, 0xe, 0xf9, 0x5, 0x76, 0xf7, 0x26, 0x77, - 0x1, 0xf7, 0x80, 0xf8, 0xf0, 0x15, 0xf2, 0x52, 0xa, 0xe, 0x73, 0xfb, - 0x4e, 0x76, 0xf7, 0x62, 0xeb, 0x33, 0x76, 0xf8, 0xb6, 0x77, 0x12, 0x13, - 0xb0, 0xf7, 0x70, 0xc3, 0x15, 0x70, 0x9a, 0xa4, 0x60, 0xc8, 0x1b, 0xb7, - 0xa3, 0xa0, 0xb4, 0xb1, 0x1f, 0x13, 0xd0, 0x82, 0x5a, 0x5, 0xf7, 0x14, - 0x6, 0xf7, 0x4, 0xf8, 0xa9, 0x3d, 0xa, 0x4f, 0xfb, 0xa9, 0x5, 0x54, - 0x80, 0x74, 0x22, 0x33, 0x1b, 0x68, 0x5c, 0xa6, 0xcb, 0x1f, 0xce, 0xf7, - 0xee, 0x92, 0xa, 0xfb, 0x30, 0xfd, 0x77, 0x8d, 0xa, 0xe, 0x3c, 0xfb, - 0x3e, 0x76, 0xf9, 0x92, 0xf7, 0x11, 0x1, 0xf7, 0xc3, 0xfb, 0x53, 0x15, - 0xf7, 0x10, 0xf9, 0x92, 0xd9, 0xfd, 0x92, 0xf7, 0xc, 0xf9, 0x92, 0xca, - 0xf7, 0x11, 0xfb, 0xcb, 0x6, 0xfb, 0x29, 0xfb, 0x16, 0x5f, 0xfb, 0x2d, - 0x5a, 0xa4, 0xfb, 0x26, 0xf7, 0x48, 0x1f, 0xe, 0xfb, 0xf9, 0xf7, 0x40, - 0xf7, 0x36, 0x1, 0xf7, 0x2, 0xf7, 0x40, 0x8e, 0xa, 0xa7, 0xf7, 0x36, - 0x81, 0xa, 0xfb, 0x78, 0xce, 0xf7, 0x35, 0x77, 0x1, 0xf7, 0x18, 0xe3, - 0x3, 0xbc, 0x80, 0x15, 0x7b, 0x53, 0x5, 0x8e, 0x9d, 0x9b, 0x8e, 0x95, - 0x1b, 0x99, 0xb4, 0x87, 0x66, 0x5c, 0x48, 0x7f, 0x3c, 0x1f, 0x74, 0x48, - 0x5, 0xf7, 0x2f, 0xf1, 0xae, 0xe6, 0xbc, 0x69, 0xc0, 0x41, 0x70, 0x76, - 0x86, 0x85, 0x7c, 0x1f, 0xe, 0xf7, 0xc4, 0x76, 0xf8, 0x3f, 0x77, 0x1, - 0xf7, 0x62, 0xf7, 0xaf, 0x15, 0xe7, 0x6, 0xe5, 0xf8, 0x3f, 0x5, 0x51, - 0x6, 0x71, 0x6f, 0x55, 0x5f, 0x3f, 0x6b, 0x71, 0x31, 0x18, 0xaf, 0x93, - 0xb2, 0x98, 0xb4, 0xa2, 0x8, 0xe, 0xfb, 0xa2, 0xf7, 0xa8, 0xf2, 0xf7, - 0x93, 0xf2, 0x1, 0xe7, 0xf7, 0x6, 0xf7, 0x39, 0xf7, 0x6, 0x3, 0xe7, - 0xf8, 0x57, 0x15, 0x30, 0xbe, 0x37, 0xf7, 0xf, 0xf7, 0x3f, 0xbb, 0xf7, - 0x60, 0xd8, 0xe9, 0x50, 0xe1, 0xfb, 0xa, 0xfb, 0x2b, 0x4a, 0xfb, 0x43, - 0xfb, 0x3, 0x1e, 0xf7, 0x6, 0x16, 0xc2, 0xa6, 0xf7, 0x14, 0xd8, 0xa8, - 0xab, 0x74, 0x55, 0x5a, 0x6f, 0xfb, 0x15, 0x3f, 0x62, 0x77, 0xad, 0xb1, - 0x1e, 0xe, 0x3c, 0x58, 0xa, 0xf3, 0xd7, 0x4d, 0xa, 0xaa, 0xfb, 0x59, - 0x4d, 0xa, 0xe, 0xf7, 0x5b, 0x92, 0x76, 0xf9, 0x68, 0x77, 0x1, 0xf8, - 0x69, 0xc3, 0x15, 0xf7, 0x31, 0x6, 0x7b, 0x45, 0x5, 0xd7, 0x6, 0x9c, - 0xd1, 0x5, 0xba, 0x6, 0x9b, 0xcd, 0x5, 0x5d, 0x6, 0xbd, 0xf7, 0x70, - 0x5, 0x41, 0x6, 0xfb, 0x67, 0xfb, 0x70, 0x5, 0xdf, 0x16, 0xee, 0xf6, - 0x8d, 0x89, 0x70, 0x22, 0x5, 0xfc, 0x93, 0xfb, 0x21, 0x15, 0xd8, 0x6, - 0xf8, 0xe9, 0xf9, 0x6d, 0x5, 0x3e, 0x6, 0xfc, 0xa5, 0xfb, 0xfd, 0x15, - 0xe2, 0x6, 0xdf, 0xf7, 0xfb, 0x5, 0x55, 0x6, 0x72, 0x74, 0x58, 0x66, - 0x44, 0x70, 0x84, 0x89, 0x18, 0x7a, 0x41, 0xac, 0x92, 0xb0, 0x96, 0xb2, - 0x9e, 0x19, 0xe, 0xf7, 0x5b, 0x7d, 0xd5, 0x51, 0x76, 0xf7, 0xbe, 0xcd, - 0xf8, 0x1, 0x77, 0x12, 0x13, 0x70, 0xf7, 0x18, 0x78, 0x15, 0xdd, 0x6, - 0xf9, 0xe, 0xf9, 0x6d, 0x5, 0x39, 0x6, 0xfc, 0xb8, 0xfb, 0xfd, 0x15, - 0xe7, 0x6, 0xe5, 0xf7, 0xfb, 0x5, 0x51, 0x6, 0x71, 0x74, 0x55, 0x66, - 0x3f, 0x70, 0x83, 0x89, 0x18, 0x79, 0x41, 0xaf, 0x92, 0xb2, 0x96, 0xb4, - 0x9e, 0x19, 0x13, 0xb0, 0xf7, 0xaa, 0xfc, 0xe8, 0x15, 0xf7, 0x97, 0x6, - 0x9e, 0xd5, 0x91, 0xa, 0x9c, 0x9a, 0x94, 0x95, 0x96, 0x92, 0x8, 0xf7, - 0x1, 0xd9, 0x9a, 0xb3, 0xaf, 0x1a, 0xbb, 0x66, 0xbe, 0x2f, 0xfb, 0x8, - 0x7a, 0x32, 0x74, 0x87, 0x1e, 0xe4, 0x7f, 0x5, 0xa3, 0x91, 0x92, 0xad, - 0xb0, 0x1b, 0xa5, 0x97, 0x79, 0x7c, 0x70, 0x70, 0x76, 0x3e, 0x4e, 0x1f, - 0x43, 0x51, 0x6d, 0x6b, 0x82, 0x4e, 0x8, 0xe, 0xf7, 0x5b, 0x92, 0x76, - 0xf7, 0xfa, 0xce, 0xf7, 0xbf, 0x77, 0x12, 0xf7, 0xb4, 0xe6, 0x45, 0xe5, - 0x13, 0xf0, 0xf8, 0x6f, 0xc3, 0x15, 0xf7, 0x38, 0x6, 0x7a, 0x45, 0x5, - 0xdb, 0x6, 0x9e, 0xd1, 0x5, 0xbb, 0x6, 0x9c, 0xcd, 0x5, 0x5b, 0x6, - 0xbf, 0xf7, 0x70, 0x5, 0x3e, 0x6, 0xfb, 0x72, 0xfb, 0x70, 0x5, 0xe3, - 0x16, 0xf3, 0xf6, 0x8d, 0x89, 0x70, 0x22, 0x5, 0xfc, 0xa2, 0xfb, 0x21, - 0x15, 0xdd, 0x6, 0xf9, 0x5, 0xf9, 0x6d, 0x5, 0x3b, 0x6, 0xfd, 0x28, - 0xfb, 0x96, 0x15, 0x76, 0x8e, 0x98, 0x34, 0xf7, 0x8, 0x1b, 0xe9, 0xc1, - 0xcc, 0xbe, 0x1f, 0xb3, 0x67, 0x99, 0x9c, 0x1a, 0x13, 0xe8, 0x98, 0xc3, - 0x93, 0xc8, 0x1a, 0xb0, 0x6e, 0xc5, 0x30, 0x26, 0x71, 0x42, 0x6f, 0x81, - 0x1e, 0xdf, 0x7d, 0x5, 0xaa, 0x94, 0x99, 0x9b, 0xa4, 0x1b, 0x90, 0xa9, - 0x8a, 0x6f, 0x59, 0x50, 0x91, 0x7e, 0x8c, 0x1f, 0x7a, 0x44, 0x5, 0x13, - 0xf0, 0xa7, 0x92, 0xb3, 0x85, 0x65, 0x1a, 0x72, 0x76, 0x73, 0x67, 0x66, - 0x87, 0xa6, 0xa2, 0x87, 0x1e, 0xe, 0x73, 0xfb, 0x57, 0xf2, 0xf8, 0x54, - 0x77, 0xcb, 0xf7, 0x18, 0x1, 0xc0, 0xf7, 0x1a, 0x3, 0xf8, 0x40, 0xad, - 0x15, 0xfb, 0xa, 0x70, 0x43, 0x83, 0x60, 0x1b, 0x3e, 0x75, 0xb3, 0xab, - 0xb0, 0xa1, 0xa2, 0xe1, 0xd4, 0x1f, 0xf7, 0x4, 0xeb, 0xb5, 0xbb, 0x9a, - 0xee, 0x8, 0xfb, 0x15, 0x6, 0x80, 0x4c, 0x77, 0x7b, 0x39, 0x48, 0x8, - 0xfb, 0xa, 0x2a, 0x58, 0x55, 0x3c, 0x1a, 0x36, 0xd1, 0x31, 0xf7, 0x35, - 0xf7, 0x50, 0xd0, 0xf7, 0x1c, 0xd1, 0x9d, 0x1e, 0xfb, 0x72, 0xf8, 0x19, - 0x15, 0x9b, 0xa, 0xa8, 0xf7, 0x18, 0x65, 0xa, 0x34, 0xa, 0xd7, 0xf7, - 0x27, 0x1, 0xf8, 0x7d, 0xf9, 0xa9, 0x15, 0xea, 0x6, 0x4d, 0xf7, 0x27, - 0x91, 0xa, 0xfc, 0x3, 0xfe, 0x3c, 0x27, 0xa, 0x34, 0xa, 0xf7, 0x73, - 0x77, 0x1, 0xf8, 0x51, 0xf9, 0xa8, 0x15, 0xee, 0x6, 0xf7, 0x3d, 0xf7, - 0x28, 0x5, 0xfb, 0x33, 0x6, 0xfc, 0xaa, 0xfe, 0x3c, 0x27, 0xa, 0x34, - 0xa, 0xd6, 0xf7, 0x28, 0x1, 0xf7, 0xd5, 0xf9, 0xa8, 0x15, 0xf7, 0x9, - 0x6, 0xe0, 0xe1, 0xb1, 0x35, 0x5, 0xec, 0x6, 0x4f, 0xf7, 0x28, 0x66, - 0xa, 0xfc, 0x53, 0xfe, 0x3c, 0x27, 0xa, 0x34, 0xa, 0xe3, 0xf7, 0xe, - 0x39, 0xdd, 0x12, 0x13, 0xe8, 0xf7, 0xed, 0xf9, 0xb2, 0x15, 0xcc, 0x6, - 0x98, 0x90, 0x94, 0xa9, 0xab, 0x1b, 0xaa, 0xa0, 0x82, 0x80, 0x9e, 0x1f, - 0x13, 0xf0, 0x80, 0xa0, 0x9e, 0x82, 0xa7, 0x1b, 0xbb, 0xb6, 0xb4, 0xdc, - 0x98, 0x1f, 0x49, 0x6, 0x72, 0x83, 0x84, 0x7b, 0x77, 0x1b, 0x74, 0x78, - 0x94, 0x94, 0x74, 0x1f, 0x96, 0x73, 0x71, 0x95, 0x67, 0x1b, 0x46, 0x75, - 0x43, 0x58, 0x80, 0x1f, 0xfb, 0xd9, 0xfd, 0xb2, 0x27, 0xa, 0x34, 0xa, - 0xde, 0xf7, 0xb, 0x1, 0xf7, 0xed, 0xf9, 0xb0, 0x8f, 0xa, 0xa4, 0xf7, - 0xb, 0x5, 0xfb, 0xd, 0x6, 0xf7, 0x4a, 0xfb, 0xb, 0x8f, 0xa, 0xa5, - 0xf7, 0xb, 0x7a, 0xa, 0xfc, 0xc3, 0xfe, 0x27, 0x27, 0xa, 0x34, 0xa, - 0xf7, 0x58, 0xc0, 0x1, 0x9f, 0xf9, 0x3e, 0x3, 0x9f, 0x16, 0x25, 0xa, - 0x29, 0xf8, 0xdb, 0x15, 0x56, 0xb6, 0x5f, 0xc0, 0xbe, 0xb6, 0xb5, 0xc2, - 0xc3, 0x61, 0xb1, 0x57, 0x54, 0x62, 0x64, 0x54, 0x1e, 0xbf, 0x16, 0xa3, - 0x9e, 0x9c, 0xa4, 0xa2, 0x9f, 0x7b, 0x72, 0x72, 0x77, 0x78, 0x74, 0x73, - 0x77, 0x9e, 0xa4, 0x1e, 0xe, 0xf8, 0x1, 0x8b, 0xf7, 0xd, 0xc6, 0xf7, - 0xc, 0x98, 0xf7, 0xd, 0xf7, 0x39, 0xf7, 0xb, 0x1, 0x90, 0x16, 0xf7, - 0x2c, 0x6, 0xf1, 0xf7, 0x48, 0x5, 0xf7, 0x83, 0x6, 0x66, 0xfb, 0x48, - 0x5, 0xf8, 0x99, 0x50, 0xa, 0xfc, 0x10, 0x6, 0xb3, 0xf7, 0x54, 0x5, - 0xf7, 0xdd, 0x50, 0xa, 0xfb, 0xdd, 0x6, 0xaf, 0xf7, 0x39, 0x5, 0xf7, - 0xf3, 0x6, 0xa4, 0xf7, 0xb, 0x5, 0xfd, 0x39, 0x6, 0x2c, 0xfc, 0x36, - 0x15, 0xf7, 0x3e, 0xf7, 0xbf, 0x5, 0xe2, 0x6, 0x4d, 0xfb, 0xbf, 0x5, - 0xe, 0xe2, 0xfb, 0x63, 0x76, 0xf7, 0x27, 0xf7, 0x4b, 0xfb, 0x11, 0xf7, - 0x11, 0xf8, 0x90, 0xf7, 0x13, 0x12, 0xf6, 0xf7, 0x2c, 0xf7, 0x38, 0xed, - 0x13, 0xbc, 0xf7, 0x88, 0xfb, 0x36, 0x15, 0x70, 0x51, 0x5, 0x83, 0xbe, - 0xc7, 0x8b, 0x93, 0x1b, 0xf1, 0xde, 0xaa, 0xd9, 0xc6, 0x5b, 0xa7, 0x51, - 0x91, 0x1f, 0x8d, 0x7, 0xf7, 0x61, 0x92, 0xe6, 0xf7, 0x23, 0xb1, 0xf3, - 0xfb, 0x2f, 0xa2, 0x18, 0xfb, 0x9, 0x64, 0x37, 0x69, 0x4e, 0x1b, 0x27, - 0x58, 0xe6, 0xef, 0xf7, 0xb, 0x80, 0xa, 0x68, 0x92, 0x1f, 0xf7, 0x28, - 0x99, 0x5, 0xf7, 0x3e, 0x76, 0xfb, 0x15, 0xce, 0xfb, 0x1c, 0x1b, 0xfb, - 0x84, 0xfb, 0x30, 0xfb, 0x5e, 0xfb, 0x86, 0xfb, 0x31, 0xcd, 0xfb, 0x33, - 0xf7, 0x67, 0x1f, 0x8c, 0x87, 0x89, 0x87, 0x1b, 0x5b, 0x82, 0x73, 0x56, - 0x5, 0x13, 0xdc, 0x8e, 0x99, 0x9d, 0x8e, 0xa0, 0x1b, 0xbd, 0x9a, 0x77, - 0x79, 0x5c, 0x2e, 0x8b, 0x7c, 0x7e, 0x5c, 0x8e, 0x8c, 0x80, 0x1f, 0xe, - 0x41, 0xa, 0xbb, 0x95, 0xa, 0xd7, 0x16, 0x2c, 0xa, 0xf7, 0xa2, 0xbb, - 0x15, 0xea, 0x6, 0x4d, 0xf7, 0x2b, 0x5b, 0xa, 0xe, 0x41, 0xa, 0xf7, - 0x5b, 0x77, 0x1, 0xd7, 0x16, 0x2c, 0xa, 0xf7, 0x4f, 0xbb, 0x15, 0xe9, - 0x6, 0xf7, 0x32, 0xf7, 0x2b, 0x53, 0xa, 0xe, 0x41, 0xa, 0xbb, 0x95, - 0xa, 0xd7, 0xf9, 0x3d, 0x3, 0xd7, 0x16, 0x2c, 0xa, 0xe4, 0xbb, 0x15, - 0xf7, 0x9, 0x6, 0xe0, 0xe4, 0xb1, 0x32, 0x5, 0xec, 0x6, 0x4f, 0xf7, - 0x2b, 0x66, 0xa, 0xe, 0xab, 0x8b, 0xf7, 0xe, 0xf7, 0x5c, 0xf7, 0x10, - 0xf7, 0x3c, 0xf7, 0xf, 0x1, 0xf7, 0xec, 0xf9, 0xad, 0x15, 0xf7, 0xd, - 0x5f, 0xa, 0xf7, 0xc, 0x4f, 0xa, 0xfb, 0xc, 0x6, 0xfc, 0x87, 0xfe, - 0x27, 0x15, 0x2c, 0xa, 0xe, 0x4e, 0xa, 0xd0, 0x95, 0xa, 0xf7, 0xbd, - 0xf9, 0xa5, 0x15, 0xe5, 0x6, 0x50, 0x67, 0xa, 0xfb, 0x14, 0x6, 0xfb, - 0x1c, 0xfe, 0x3c, 0x15, 0xf7, 0x3f, 0xf9, 0x74, 0x5, 0x5e, 0xa, 0xfb, - 0x40, 0xfd, 0x74, 0x5, 0xe, 0x4e, 0xa, 0xf7, 0x70, 0x77, 0x1, 0xcb, - 0x16, 0x46, 0xa, 0x90, 0xbc, 0x15, 0xf6, 0x6, 0xf7, 0x49, 0x67, 0xa, - 0xfb, 0x3f, 0x6, 0xe, 0x4e, 0xa, 0xd0, 0x95, 0xa, 0xf7, 0xf, 0xf9, - 0xa5, 0x15, 0xf7, 0x11, 0x6, 0xe6, 0xe4, 0xb4, 0x32, 0x5, 0xf3, 0x6, - 0x4b, 0xf7, 0x2b, 0x3d, 0xa, 0xfb, 0x6b, 0xfe, 0x3c, 0x15, 0x46, 0xa, - 0xe, 0x4e, 0xa, 0xd8, 0xf7, 0xe, 0x1, 0xf7, 0x1f, 0xf9, 0xad, 0x6a, - 0xa, 0xf7, 0x4b, 0xfb, 0xe, 0x6a, 0xa, 0xfb, 0xc8, 0xfe, 0x27, 0x15, - 0x46, 0xa, 0xe, 0x57, 0xa, 0xd3, 0x16, 0xf7, 0x99, 0x6, 0xf7, 0x7e, - 0xf7, 0x66, 0xf7, 0x22, 0xf7, 0xa7, 0xf7, 0x71, 0xfb, 0x1a, 0xdb, 0xfb, - 0x6c, 0x1f, 0xfb, 0x59, 0x6, 0x49, 0xfb, 0xc3, 0x5, 0x3d, 0x6, 0x73, - 0xfb, 0x4, 0x5, 0xd8, 0x6, 0xf7, 0x5, 0xfb, 0x4d, 0x15, 0xb2, 0xf7, - 0x4d, 0x5, 0xf7, 0x32, 0x6, 0xa3, 0xf7, 0x4, 0x5, 0xfb, 0x31, 0x6, - 0xb3, 0xf7, 0x4d, 0x5, 0xe1, 0x6, 0xd9, 0xf5, 0x84, 0xfb, 0x44, 0xfb, - 0x8a, 0xfb, 0x15, 0x56, 0xfb, 0x3d, 0x1f, 0xe, 0x68, 0xa, 0xf9, 0x73, - 0x77, 0x1, 0x8a, 0xa, 0xf2, 0xf8, 0x82, 0x5c, 0xa, 0xf7, 0x59, 0xfc, - 0x82, 0x5, 0x9b, 0xa, 0xf7, 0x2d, 0xf9, 0x73, 0x3d, 0xa, 0x25, 0xfc, - 0x80, 0x51, 0xa, 0xfb, 0x5a, 0xf8, 0x80, 0x3d, 0xa, 0xf7, 0x12, 0xca, - 0x15, 0xca, 0x6, 0x8f, 0x99, 0x95, 0xaa, 0xaa, 0x89, 0xab, 0x89, 0x9e, - 0x81, 0x9c, 0x81, 0x9e, 0x81, 0x9b, 0x81, 0xab, 0x8d, 0xba, 0x8d, 0xb6, - 0xb2, 0x97, 0xdc, 0x8, 0x4a, 0x63, 0xa, 0x77, 0x78, 0x93, 0x94, 0x76, - 0x1f, 0x96, 0x73, 0x70, 0x96, 0x67, 0x1b, 0x47, 0x75, 0x43, 0x58, 0x82, - 0x1f, 0xe, 0x49, 0xa, 0xf8, 0x9e, 0xf9, 0xa4, 0x75, 0xa, 0xfb, 0xca, - 0x2b, 0xa, 0xf7, 0x23, 0x78, 0xf7, 0x14, 0xf9, 0xcf, 0x77, 0x36, 0xa, - 0xf8, 0x54, 0xf9, 0xa4, 0x15, 0xea, 0x6, 0xf7, 0x37, 0x5d, 0xa, 0xfb, - 0x2e, 0x6, 0xfc, 0x51, 0x2b, 0xa, 0x49, 0xa, 0xf7, 0xef, 0xf9, 0xa4, - 0x15, 0xf7, 0xb, 0x6, 0xe2, 0xe5, 0xb3, 0x31, 0x5, 0xee, 0x6, 0x4e, - 0xf7, 0x2c, 0x91, 0xa, 0xfc, 0x19, 0x2b, 0xa, 0xf7, 0x23, 0x78, 0xf7, - 0x13, 0xf9, 0x70, 0xde, 0x36, 0xa, 0xf8, 0xa, 0xf9, 0xb1, 0x15, 0xcb, - 0x6, 0x99, 0x8f, 0x95, 0xa8, 0xa9, 0x1b, 0xac, 0xa0, 0x82, 0x81, 0x9f, - 0x1f, 0x80, 0x9e, 0x9d, 0x81, 0xa4, 0x1b, 0xbb, 0xb5, 0xb4, 0xdd, 0x97, - 0x1f, 0x4a, 0x63, 0xa, 0x76, 0x79, 0x94, 0x94, 0x76, 0x1f, 0x96, 0x74, - 0x70, 0x95, 0x66, 0x1b, 0x47, 0x75, 0x43, 0x57, 0x81, 0x1f, 0xfb, 0x9f, - 0xfc, 0x97, 0x21, 0xa, 0xe, 0x8c, 0xa, 0xf8, 0x8f, 0xf7, 0x12, 0x36, - 0xa, 0xf6, 0xf7, 0xae, 0x21, 0xa, 0xf7, 0xc, 0xf8, 0x92, 0x15, 0xf7, - 0xf, 0x71, 0xa, 0xfb, 0x10, 0x6, 0xf7, 0x4d, 0xfb, 0xf, 0x15, 0xf7, - 0x10, 0x71, 0xa, 0xfb, 0x10, 0x6, 0xe, 0x58, 0xa1, 0x76, 0xf8, 0x8c, - 0x77, 0x1, 0xc5, 0xec, 0x15, 0xf7, 0x0, 0x2c, 0xf7, 0x46, 0xf7, 0x31, - 0xf7, 0x49, 0xfb, 0x32, 0xf7, 0x2, 0xec, 0xfb, 0x49, 0xf7, 0x31, 0xf7, - 0x47, 0xf7, 0x2f, 0x20, 0xea, 0xfb, 0x47, 0xfb, 0x31, 0xfb, 0x48, 0xf7, - 0x31, 0xfb, 0x2, 0x2b, 0xf7, 0x49, 0xfb, 0x30, 0x5, 0xe, 0xf7, 0x23, - 0x85, 0x76, 0xf9, 0x98, 0x77, 0x1, 0xe0, 0xf7, 0xb, 0xf8, 0x21, 0xf7, - 0x3, 0x3, 0xf8, 0xea, 0xf8, 0x9c, 0x15, 0x98, 0x76, 0x94, 0x55, 0x65, - 0x1a, 0xfb, 0xf, 0x23, 0xfb, 0x2b, 0xfb, 0x32, 0x5a, 0x65, 0x8b, 0x94, - 0x7b, 0x1e, 0x4f, 0xca, 0x15, 0x80, 0x97, 0x82, 0xb2, 0xb6, 0x1a, 0xf7, - 0x14, 0xf3, 0xf7, 0x3b, 0xf7, 0x31, 0xc3, 0xb4, 0x89, 0x84, 0x93, 0x1e, - 0xfc, 0x93, 0xfc, 0xc4, 0x15, 0xd1, 0x57, 0xd7, 0xde, 0x5, 0x6c, 0xc0, - 0xc5, 0x84, 0xc0, 0x1b, 0xf7, 0xac, 0xf7, 0x3, 0xf7, 0x62, 0xf7, 0x4b, - 0xc4, 0x87, 0xe7, 0x64, 0xc7, 0x1f, 0xd3, 0xd8, 0x46, 0xbf, 0x44, 0x3e, - 0x5, 0xa8, 0x58, 0x4e, 0x97, 0x4e, 0x1b, 0xfb, 0xc1, 0x31, 0xfb, 0x8c, - 0xfb, 0x36, 0x59, 0x95, 0x3b, 0xb4, 0x4f, 0x1f, 0xe, 0x2d, 0xa, 0xf7, - 0x30, 0xbc, 0x15, 0xed, 0x6, 0x4a, 0xf7, 0x2c, 0x81, 0xa, 0x2d, 0xa, - 0xb6, 0xc1, 0x60, 0xa, 0xe2, 0x78, 0xf7, 0x14, 0xf9, 0x3c, 0xf7, 0x27, - 0x24, 0xa, 0x68, 0xc1, 0x45, 0xa, 0xe2, 0x78, 0xf7, 0x14, 0xf9, 0x6, - 0x77, 0xdb, 0xf7, 0xc, 0x24, 0xa, 0x85, 0xc7, 0x3a, 0xa, 0xab, 0xa0, - 0x76, 0xf9, 0x74, 0x77, 0xf7, 0x70, 0x77, 0x1, 0x64, 0xa, 0xf7, 0xa5, - 0xf7, 0xcc, 0xf8, 0x63, 0x43, 0xa, 0xfb, 0x5d, 0xfb, 0xcf, 0xfb, 0x10, - 0xf7, 0xcf, 0x5a, 0xa, 0xf7, 0x51, 0xfc, 0x55, 0x5, 0xcb, 0xf8, 0x86, - 0x15, 0xe4, 0x6, 0xf7, 0x2a, 0xf7, 0x2b, 0x92, 0xa, 0xe, 0xab, 0xa0, - 0x76, 0xf7, 0x1d, 0xf7, 0xc, 0xf7, 0x60, 0xf7, 0xc, 0xf7, 0x1d, 0x77, - 0x1, 0xf8, 0xcc, 0xf7, 0x28, 0x3, 0xd7, 0x16, 0xf7, 0x29, 0x6, 0xa8, - 0xf7, 0x1d, 0x5, 0xeb, 0x6, 0xf7, 0x52, 0xf7, 0x44, 0xba, 0xf7, 0x61, - 0xf7, 0x48, 0xfb, 0x3e, 0x97, 0x57, 0x1f, 0xfb, 0x27, 0x6, 0xa8, 0xf7, - 0x1d, 0x53, 0xa, 0xbf, 0xfc, 0x61, 0x15, 0xb7, 0xf7, 0x60, 0x5, 0xf6, - 0x6, 0xd7, 0xc9, 0x8d, 0x41, 0xfb, 0xc, 0xfb, 0x1a, 0x7f, 0xfb, 0x1, - 0x1f, 0xe, 0x73, 0x7d, 0xf7, 0x8, 0x38, 0x76, 0xf9, 0x7, 0xf5, 0x12, - 0xf8, 0x94, 0xf7, 0x25, 0x13, 0x70, 0xd0, 0x89, 0x15, 0xf7, 0x2e, 0x6, - 0xf2, 0xf8, 0x56, 0x5, 0xe1, 0x9e, 0xa0, 0xe6, 0xe2, 0x1b, 0xb4, 0x97, - 0x7b, 0x74, 0x73, 0x77, 0x6d, 0x79, 0x77, 0x1f, 0x61, 0x5b, 0x79, 0x61, - 0x63, 0x1a, 0x5e, 0xa4, 0x5e, 0xb2, 0x55, 0x1e, 0x9c, 0x72, 0xa2, 0x65, - 0x6e, 0x1a, 0x13, 0xb0, 0x72, 0x7c, 0x78, 0x5c, 0x65, 0x7c, 0x9f, 0x9b, - 0x7e, 0x1e, 0xfb, 0x1, 0x53, 0x5, 0x66, 0xa7, 0xcf, 0x50, 0xef, 0x1b, - 0xf7, 0x1c, 0xbd, 0xd1, 0xdc, 0xc1, 0x73, 0xc7, 0x68, 0xb6, 0x1f, 0x6a, - 0xb2, 0x7b, 0xa0, 0xa3, 0x1a, 0xa2, 0x98, 0x9b, 0xa0, 0xaa, 0x1e, 0xac, - 0xbb, 0xaf, 0xcf, 0xc4, 0x1a, 0xc4, 0x5c, 0xc0, 0xfb, 0x1a, 0xfb, 0x63, - 0x5a, 0xfb, 0x0, 0xfb, 0x43, 0x61, 0x1e, 0xe, 0x42, 0xa, 0xf8, 0x8c, - 0xf7, 0x2c, 0x76, 0xa, 0xf8, 0x1a, 0x89, 0x20, 0xa, 0x13, 0xb0, 0x2a, - 0xa, 0x70, 0xf7, 0xf2, 0x15, 0xf2, 0x6, 0x48, 0xf7, 0x2c, 0x93, 0xa, - 0xe, 0x42, 0xa, 0xf7, 0xf1, 0xf3, 0xf7, 0x5f, 0x77, 0x12, 0xc2, 0xf7, - 0x2b, 0x13, 0x78, 0xf7, 0xe8, 0xf8, 0xea, 0x15, 0xf5, 0x6, 0xf7, 0x49, - 0x5d, 0xa, 0xfb, 0x3e, 0x6, 0x48, 0xfd, 0x84, 0x20, 0xa, 0x13, 0xb8, - 0x2e, 0xa, 0x42, 0xa, 0xf8, 0x8c, 0xf7, 0x2c, 0x76, 0xa, 0xf7, 0x62, - 0xf8, 0xea, 0x15, 0xf7, 0x11, 0x6, 0xe7, 0xe5, 0xb4, 0x31, 0x5, 0xf3, - 0x6, 0x4b, 0xf7, 0x2c, 0x92, 0xa, 0xa7, 0xfd, 0x84, 0x20, 0xa, 0x13, - 0xb0, 0x2e, 0xa, 0x42, 0xa, 0xf8, 0xc5, 0xdd, 0x89, 0x77, 0x12, 0xc2, - 0xf7, 0x2b, 0x13, 0xa8, 0xf7, 0x7f, 0xf8, 0xf7, 0x15, 0xd2, 0x6, 0x90, - 0x9a, 0x95, 0xa7, 0xad, 0x8c, 0xaa, 0x8c, 0xa6, 0x7f, 0xa6, 0x80, 0x8, - 0x82, 0xa2, 0xa0, 0x82, 0xa1, 0x1b, 0xbf, 0xba, 0xb4, 0xdc, 0x99, 0x1f, - 0x43, 0x6, 0x72, 0x83, 0x83, 0x7b, 0x75, 0x1b, 0x77, 0x79, 0x91, 0x93, - 0x76, 0x1f, 0x13, 0x58, 0x97, 0x70, 0x6b, 0x98, 0x5e, 0x1b, 0x40, 0x72, - 0x43, 0x57, 0x80, 0x1f, 0xf7, 0x2f, 0xfc, 0xf9, 0x20, 0xa, 0x13, 0xa8, - 0x2e, 0xa, 0x3c, 0x7d, 0xf6, 0x2c, 0xea, 0x12, 0xc2, 0xf7, 0x22, 0x13, - 0x60, 0xf7, 0x6d, 0xf8, 0xf3, 0x6d, 0xa, 0xf7, 0x56, 0xfb, 0xe, 0x6d, - 0xa, 0x40, 0xfd, 0x6f, 0x20, 0xa, 0x13, 0xa0, 0x2e, 0xa, 0x42, 0xa, - 0xf7, 0xba, 0xf7, 0x33, 0x23, 0xf3, 0xad, 0xf7, 0x57, 0x56, 0x77, 0x12, - 0xc2, 0xf7, 0x23, 0x13, 0xaa, 0xf7, 0xb3, 0xf9, 0x3a, 0x15, 0x56, 0xba, - 0x5f, 0xc4, 0xc3, 0xb9, 0xb5, 0xc2, 0xc2, 0x5d, 0xb6, 0x53, 0x4f, 0x5f, - 0x60, 0x54, 0x1e, 0xc3, 0x16, 0x13, 0x56, 0xa4, 0xa0, 0x9f, 0xa6, 0xa4, - 0xa0, 0x79, 0x70, 0x73, 0x76, 0x77, 0x72, 0x70, 0x76, 0x9f, 0xa3, 0x1e, - 0xba, 0xfd, 0x3c, 0x32, 0xa, 0x99, 0xca, 0x9a, 0xc0, 0x1e, 0x99, 0xa, - 0xab, 0xb1, 0x1a, 0xab, 0x7b, 0xf7, 0x4, 0xfb, 0x59, 0x27, 0xfb, 0x4, - 0x6b, 0xfb, 0xd, 0x60, 0x1e, 0xf7, 0x28, 0x7f, 0x5, 0xba, 0x98, 0xb1, - 0x99, 0xb8, 0x1b, 0xcf, 0xa6, 0x5b, 0x54, 0x71, 0x1f, 0x6c, 0x80, 0x55, - 0x88, 0x4f, 0x84, 0x8, 0x42, 0x87, 0xfb, 0x2f, 0x7d, 0xfb, 0x33, 0x1a, - 0x28, 0xd6, 0x52, 0xe1, 0x1e, 0x13, 0xaa, 0xba, 0xcb, 0x9d, 0xc2, 0xbf, - 0x1f, 0x8e, 0x70, 0x8b, 0x82, 0x93, 0x72, 0x8, 0x99, 0xf7, 0x7b, 0x15, - 0x31, 0xa, 0x91, 0xe6, 0x98, 0x1f, 0xe, 0xf7, 0x92, 0x7d, 0xf7, 0x1, - 0xf7, 0x11, 0xe3, 0xf7, 0x1b, 0xf2, 0x1, 0xc3, 0xf7, 0x17, 0xf8, 0xef, - 0xf7, 0x19, 0x3, 0xf7, 0x7, 0xf8, 0x1e, 0x15, 0xf7, 0x1f, 0x7d, 0x5, - 0xa4, 0x94, 0x99, 0xb1, 0xd0, 0x1b, 0xce, 0xa2, 0x60, 0x50, 0x7f, 0x1f, - 0x7b, 0x86, 0x7c, 0x84, 0xfb, 0x0, 0x82, 0x8, 0x35, 0x83, 0xfb, 0x23, - 0x86, 0xfb, 0x31, 0x1a, 0x28, 0xd3, 0x4a, 0xec, 0xf7, 0x15, 0xd0, 0xe7, - 0xac, 0xa3, 0x1e, 0x6e, 0x99, 0xb8, 0x2b, 0xf7, 0x22, 0x1b, 0xf7, 0x36, - 0xcf, 0xf7, 0x11, 0xab, 0x9e, 0x1f, 0xfb, 0x17, 0x9f, 0x5, 0x46, 0x64, - 0x50, 0x8b, 0x7d, 0x1b, 0x4f, 0x5a, 0xbb, 0xd9, 0x88, 0x1f, 0xf8, 0x7, - 0x6, 0x94, 0xb4, 0x8c, 0xb0, 0x9a, 0x1a, 0xf7, 0x1f, 0x37, 0xe9, 0xfb, - 0x1b, 0x64, 0x3f, 0x85, 0x4e, 0x4b, 0x1e, 0x9f, 0x7f, 0x6d, 0xba, 0xfb, - 0x12, 0x1b, 0xfb, 0x1b, 0x39, 0x4d, 0x31, 0x72, 0x1f, 0xf8, 0x4a, 0x35, - 0x15, 0xf7, 0x5, 0xa4, 0xd7, 0xa1, 0xb1, 0x1b, 0xcb, 0xb3, 0x5b, 0x34, - 0x85, 0x1f, 0xfc, 0x15, 0x52, 0x15, 0x43, 0x7c, 0x56, 0x37, 0x3a, 0x1b, - 0x55, 0x7c, 0xab, 0xa2, 0xbb, 0xbf, 0xad, 0xf7, 0x3a, 0x9e, 0x1f, 0xe, - 0x3c, 0xfb, 0x63, 0x76, 0xf9, 0x2c, 0xf7, 0x2, 0x1, 0xda, 0xf7, 0x23, - 0xe4, 0xe2, 0x3, 0xf7, 0x8a, 0x67, 0x15, 0x72, 0x55, 0x5, 0xa0, 0x8e, - 0xd0, 0x9b, 0x5d, 0x1a, 0x56, 0x2c, 0x8d, 0x61, 0x8c, 0x1e, 0x71, 0x52, - 0x5, 0x88, 0x9e, 0xa4, 0x8a, 0x9e, 0x1b, 0xa6, 0xf7, 0x34, 0x8b, 0xf7, - 0x3, 0x97, 0x89, 0xc7, 0x3c, 0x98, 0x1f, 0x8d, 0x7, 0xa7, 0x8c, 0xbc, - 0x90, 0xbd, 0xad, 0xa3, 0x9a, 0xc5, 0xb6, 0xae, 0xed, 0xfb, 0x20, 0xa3, - 0x18, 0x33, 0x6c, 0x50, 0x7c, 0x6f, 0x1b, 0x64, 0x61, 0xb1, 0xd2, 0xe3, - 0xb4, 0xf7, 0x2c, 0xf7, 0x4, 0xd7, 0x93, 0x46, 0x77, 0x8e, 0x1f, 0xf7, - 0x1d, 0x9a, 0x5, 0xe3, 0x84, 0x4f, 0xeb, 0xfb, 0x28, 0x1b, 0xfb, 0x3f, - 0xfb, 0x1a, 0xfb, 0x1e, 0xfb, 0x68, 0x22, 0xc9, 0x2d, 0xdd, 0x7a, 0x1f, - 0x89, 0x96, 0xb2, 0x83, 0x88, 0x1b, 0x89, 0x8a, 0x7f, 0x89, 0x81, 0x88, - 0x8, 0xe, 0x3c, 0xf7, 0x71, 0xe3, 0xf7, 0xb5, 0xf7, 0x2c, 0x1, 0xd1, - 0xf7, 0x21, 0xf7, 0x8c, 0xf7, 0x1a, 0x3, 0xf7, 0x67, 0xf7, 0x71, 0x23, - 0xa, 0x35, 0xf7, 0xb5, 0x15, 0xef, 0x6, 0x4a, 0xf7, 0x2c, 0x47, 0xa, - 0xe, 0x3c, 0xf7, 0x71, 0xe3, 0xf8, 0x4d, 0x77, 0x1, 0xce, 0xf7, 0x2c, - 0xf7, 0x7e, 0xf7, 0x23, 0x3, 0xf7, 0xd8, 0xf8, 0xea, 0x15, 0xf3, 0x6, - 0xf7, 0x46, 0x5d, 0xa, 0xfb, 0x3c, 0x6, 0xfb, 0x77, 0xfc, 0xa5, 0x23, - 0xa, 0xe, 0x3c, 0x7d, 0xf2, 0xf7, 0x18, 0xe3, 0xf7, 0xb5, 0xf7, 0x2c, - 0x7d, 0xa, 0xf7, 0x4c, 0xf8, 0xea, 0x8f, 0xa, 0xe5, 0xe5, 0xb3, 0x31, - 0x5, 0xf1, 0x6, 0x4c, 0xf7, 0x2c, 0x54, 0xa, 0xfb, 0x12, 0xfc, 0xa5, - 0x23, 0xa, 0xe, 0x3c, 0x7d, 0xf1, 0xf7, 0x17, 0xe1, 0x1, 0xd1, 0xf7, - 0x23, 0xf7, 0x8b, 0xf7, 0x1a, 0x3, 0xf7, 0x6b, 0xf8, 0xf3, 0x15, 0xf7, - 0x13, 0x6e, 0xa, 0xfb, 0x13, 0x6, 0xf7, 0x52, 0xfb, 0xe, 0x15, 0xf7, - 0x13, 0x6e, 0xa, 0xfb, 0x12, 0x6, 0xfb, 0x8b, 0xfc, 0x90, 0x23, 0xa, - 0xe, 0x48, 0xa, 0xf8, 0xeb, 0x95, 0xa, 0xd0, 0x16, 0x3c, 0xa, 0xc7, - 0xd0, 0x15, 0xe7, 0x6, 0x4f, 0x67, 0xa, 0xfb, 0x18, 0x6, 0xe, 0x48, - 0xa, 0xf9, 0x82, 0x77, 0x1, 0xf7, 0x4a, 0xf8, 0xeb, 0x15, 0xf5, 0x6, - 0xf7, 0x48, 0x67, 0xa, 0xfb, 0x3e, 0x6, 0xfb, 0x79, 0xfd, 0x82, 0x15, - 0x3c, 0xa, 0xe, 0x48, 0xa, 0xf8, 0xeb, 0x95, 0xa, 0xc9, 0xf8, 0xeb, - 0x15, 0xf7, 0x15, 0x6, 0xe9, 0xe4, 0xb5, 0x32, 0x5, 0xf6, 0x6, 0x49, - 0x67, 0xa, 0xfb, 0x25, 0x6, 0xfb, 0x2e, 0xfd, 0x82, 0x15, 0x3c, 0xa, - 0xe, 0x48, 0xa, 0xf8, 0xf3, 0xf7, 0xe, 0x1, 0xe6, 0xf8, 0xf3, 0x15, - 0xf7, 0xe, 0x5f, 0xa, 0xf7, 0xe, 0x6, 0xa4, 0xf7, 0xe, 0x5, 0xfb, - 0xd, 0x6, 0xfb, 0x93, 0xfd, 0x6d, 0x15, 0x3c, 0xa, 0xe, 0x73, 0x7d, - 0xf7, 0x3, 0xf7, 0xd8, 0xf7, 0x4, 0xf7, 0x60, 0x77, 0x1, 0xdd, 0xf7, - 0x28, 0xf7, 0xae, 0xf7, 0x2f, 0x3, 0xf7, 0xe7, 0xf8, 0xcf, 0x15, 0xf7, - 0x13, 0xb6, 0xac, 0x52, 0x98, 0x5a, 0x93, 0x68, 0x19, 0x88, 0x89, 0x5, - 0xa4, 0x76, 0x67, 0xb0, 0x32, 0x1b, 0xfb, 0x42, 0xfb, 0x7, 0xfb, 0x26, - 0xfb, 0x36, 0x26, 0xc2, 0xfb, 0x1e, 0xf7, 0x68, 0xf7, 0x87, 0xd6, 0xf7, - 0x4e, 0xf7, 0x18, 0xf7, 0x1e, 0x68, 0xf7, 0x6, 0x53, 0xed, 0x1f, 0xe9, - 0xad, 0x7a, 0xbc, 0x20, 0x65, 0x81, 0x9b, 0x87, 0x91, 0x7f, 0x9b, 0x19, - 0x9a, 0xa, 0xae, 0x64, 0x93, 0x82, 0x9c, 0x6f, 0xfb, 0x9, 0x63, 0x18, - 0x30, 0xfc, 0x20, 0x15, 0xdd, 0xc2, 0xf7, 0x6, 0xf7, 0x6, 0xbe, 0xc9, - 0x6c, 0x35, 0x57, 0x5f, 0xfb, 0x2f, 0xfb, 0x10, 0x3c, 0x68, 0xd1, 0xc5, - 0x1e, 0xe, 0x84, 0xa, 0xf8, 0xf8, 0xf7, 0x11, 0x39, 0xdd, 0x89, 0x77, - 0x12, 0xf8, 0x84, 0xf7, 0x2a, 0x13, 0xc8, 0xcc, 0x16, 0xf7, 0x29, 0x6, - 0xbb, 0xf7, 0x6f, 0x9d, 0xdc, 0x91, 0xad, 0xa7, 0xb0, 0x19, 0xad, 0xa7, - 0xb9, 0xb0, 0xb9, 0x1b, 0xba, 0x9a, 0x71, 0x6a, 0x70, 0x85, 0x6c, 0x85, - 0x75, 0x1f, 0x49, 0xfb, 0xc3, 0x5, 0xf7, 0x29, 0x6, 0xcd, 0xf7, 0xc2, - 0x5, 0x94, 0xb2, 0x8f, 0xb8, 0xb4, 0x1a, 0xc1, 0x65, 0xcb, 0x22, 0x32, - 0x4d, 0x5f, 0x65, 0x60, 0x1e, 0x89, 0x8d, 0x99, 0xce, 0x5, 0xfb, 0x20, - 0x6, 0xe3, 0xdb, 0x15, 0xcd, 0x6, 0x13, 0xa8, 0x90, 0x99, 0x94, 0xa7, - 0xab, 0x8c, 0xa6, 0x8c, 0xa0, 0x80, 0xa1, 0x7f, 0xa1, 0x81, 0xa0, 0x82, - 0xa6, 0x8c, 0xbc, 0x8e, 0xb7, 0xb1, 0x98, 0xdc, 0x8, 0x48, 0x6, 0x72, - 0x83, 0x84, 0x7b, 0x77, 0x1b, 0x78, 0x78, 0x91, 0x93, 0x78, 0x1f, 0x13, - 0x98, 0x97, 0x70, 0x6d, 0x98, 0x65, 0x1b, 0x13, 0xc8, 0x44, 0x74, 0x43, - 0x58, 0x81, 0x1f, 0xe, 0x4c, 0xa, 0xdd, 0xf7, 0x70, 0x22, 0xa, 0xf7, - 0x4c, 0xf8, 0xe, 0x15, 0xee, 0x6, 0x4b, 0xf7, 0x2c, 0x65, 0xa, 0x73, - 0x7d, 0xf7, 0x1, 0xf9, 0x23, 0x77, 0x1, 0xdd, 0xf7, 0x28, 0xf7, 0x9d, - 0xf7, 0x28, 0x3, 0xf7, 0xfe, 0xf8, 0xea, 0x15, 0xee, 0x6, 0xf7, 0x3d, - 0x5d, 0xa, 0xfb, 0x33, 0x6, 0xfc, 0x19, 0xfc, 0xa6, 0x22, 0xa, 0xe, - 0x4c, 0xa, 0xf7, 0x73, 0xf8, 0xea, 0x15, 0xf7, 0xd, 0x6, 0xe4, 0xe5, - 0xb3, 0x31, 0x5, 0xf0, 0x6, 0x4c, 0xf7, 0x2c, 0x5b, 0xa, 0xfb, 0xb9, - 0xfc, 0xa6, 0x22, 0xa, 0xe, 0x73, 0x7d, 0xf7, 0x1, 0xf8, 0xc4, 0xdd, - 0x89, 0x77, 0x12, 0xdd, 0xf7, 0x26, 0xf7, 0xa4, 0xf7, 0x26, 0x13, 0xd8, - 0xf7, 0x9b, 0xf8, 0xf7, 0x15, 0xcc, 0x6, 0x8f, 0x9a, 0x94, 0xa7, 0xab, - 0x8c, 0xa4, 0x8c, 0xa5, 0x7c, 0xa7, 0x80, 0x9f, 0x82, 0xa0, 0x84, 0x9e, - 0x8c, 0xbb, 0x8e, 0xb6, 0xb1, 0x98, 0xdc, 0x8, 0x48, 0x63, 0xa, 0x77, - 0x78, 0x92, 0x93, 0x76, 0x1f, 0x13, 0xb8, 0x97, 0x70, 0x6d, 0x97, 0x6a, - 0x1b, 0x45, 0x74, 0x43, 0x57, 0x82, 0x1f, 0xfb, 0x49, 0xfc, 0x1b, 0x22, - 0xa, 0xe, 0x73, 0x7d, 0xf7, 0x0, 0x3f, 0xa, 0xf7, 0x91, 0xf8, 0xf3, - 0x15, 0xf7, 0x12, 0x6e, 0xa, 0xfb, 0x12, 0x6, 0xf7, 0x50, 0xfb, 0xe, - 0x15, 0xf7, 0x12, 0x6e, 0xa, 0xfb, 0x11, 0x6, 0xfc, 0x30, 0xfc, 0x91, - 0x22, 0xa, 0xe, 0x58, 0xf7, 0x4d, 0xf7, 0x1d, 0x1, 0xf7, 0xa6, 0xf7, - 0x24, 0x3, 0xdd, 0xf7, 0x4d, 0x15, 0xf8, 0xa4, 0xf7, 0x1d, 0xfc, 0xa4, - 0x6, 0xf7, 0x54, 0xda, 0x15, 0xf7, 0x24, 0xf7, 0x27, 0xfb, 0x24, 0x6, - 0xfc, 0xe2, 0x4, 0xf7, 0x24, 0xf7, 0x25, 0xfb, 0x24, 0x6, 0xe, 0xfb, - 0x8, 0x83, 0x76, 0xb1, 0xeb, 0xf7, 0xd5, 0xeb, 0xb1, 0x77, 0x1, 0xd3, - 0xf7, 0xb, 0xf7, 0x68, 0xf7, 0xc, 0x3, 0x9e, 0x9a, 0x15, 0xc2, 0x5f, - 0xcb, 0xce, 0x5, 0x70, 0xc3, 0xc0, 0x89, 0xac, 0x1b, 0xf7, 0x59, 0xeb, - 0xf7, 0x24, 0xf7, 0x28, 0xbf, 0x7b, 0xd0, 0x73, 0xa8, 0x1f, 0xca, 0xcd, - 0x52, 0xb6, 0x4b, 0x49, 0x5, 0xa6, 0x56, 0x4d, 0x8c, 0x72, 0x1b, 0xfb, - 0x97, 0x69, 0xfb, 0x6c, 0x32, 0x48, 0x9b, 0x59, 0xa2, 0x78, 0x1f, 0xe3, - 0xe7, 0x15, 0x88, 0x93, 0x86, 0x98, 0xa2, 0x1a, 0xd7, 0xc2, 0xf7, 0x19, - 0xf7, 0x7, 0xb0, 0x9e, 0x80, 0x87, 0x94, 0x1e, 0xfb, 0x47, 0xfb, 0xb8, - 0x15, 0xf7, 0x76, 0xf7, 0x82, 0x5, 0x8e, 0x80, 0x92, 0x73, 0x76, 0x1a, - 0x49, 0x5d, 0xfb, 0x16, 0xfb, 0x13, 0x67, 0x7b, 0x94, 0x90, 0x80, 0x1e, - 0xe, 0x59, 0xa, 0xf8, 0x91, 0xf7, 0x2c, 0x29, 0xa, 0x79, 0xf8, 0xa5, - 0x75, 0xa, 0xe, 0x59, 0xa, 0xf9, 0x29, 0x77, 0x29, 0xa, 0x21, 0xf8, - 0xaa, 0x60, 0xa, 0x59, 0xa, 0xf8, 0x96, 0xf7, 0x27, 0x29, 0xa, 0xfb, - 0x74, 0xf8, 0xaa, 0x45, 0xa, 0x59, 0xa, 0x12, 0x13, 0x40, 0x28, 0xa, - 0x13, 0x80, 0x35, 0xa, 0x13, 0x40, 0xfb, 0x2f, 0xf8, 0xb0, 0x3a, 0xa, - 0x3c, 0xfb, 0x55, 0x76, 0xfa, 0x58, 0x77, 0x1, 0xcb, 0xf8, 0xf6, 0x3, - 0xc2, 0x30, 0x15, 0x7e, 0xfb, 0x0, 0x7e, 0xa, 0xcb, 0xee, 0xc2, 0x1f, - 0xf7, 0xd1, 0xf8, 0xd9, 0x77, 0xa, 0xfc, 0x28, 0x51, 0xa, 0x59, 0xf8, - 0x28, 0x54, 0xa, 0xe5, 0xfc, 0xa4, 0x5, 0x4e, 0x6c, 0xa, 0xf7, 0xa5, - 0xf9, 0x46, 0x15, 0xe7, 0x6, 0xf7, 0x31, 0xf7, 0x2b, 0x94, 0xa, 0xe, - 0x73, 0xfb, 0x4f, 0x76, 0xf7, 0x51, 0xf6, 0xf7, 0xea, 0xf0, 0xf7, 0x4f, - 0x77, 0x1, 0x9d, 0xf7, 0x23, 0xf7, 0xec, 0xf7, 0x20, 0x3, 0xf7, 0x70, - 0xcc, 0x15, 0x3d, 0xbd, 0xd8, 0x85, 0xac, 0x1b, 0xf7, 0x2d, 0xf7, 0x4, - 0xf7, 0x2d, 0xf7, 0x3e, 0xe9, 0x69, 0xf7, 0x19, 0xfb, 0x2b, 0x40, 0x58, - 0x66, 0x79, 0x73, 0x1f, 0xbd, 0xf7, 0x86, 0x47, 0xa, 0xfb, 0x5b, 0xfe, - 0x32, 0x8d, 0xa, 0xed, 0xf8, 0x3d, 0x15, 0xc0, 0xab, 0xf7, 0x34, 0xf7, - 0x5, 0xc1, 0xba, 0x60, 0x38, 0x4a, 0x67, 0xfb, 0x2b, 0xfb, 0x1, 0x6a, - 0x47, 0xa2, 0xf5, 0x1e, 0xe, 0x3c, 0xfb, 0x55, 0x76, 0xf9, 0xca, 0xf7, - 0xd, 0x1, 0xc2, 0x2f, 0x15, 0x7e, 0x20, 0x7e, 0xa, 0xca, 0xee, 0xc2, - 0x1f, 0xf7, 0xd1, 0xf8, 0xd8, 0x77, 0xa, 0xfc, 0x29, 0x51, 0xa, 0x59, - 0xf8, 0x29, 0x54, 0xa, 0xe5, 0xfc, 0xa4, 0x5, 0x4f, 0x6c, 0xa, 0xf7, - 0x42, 0xf9, 0x50, 0x6b, 0xa, 0xf7, 0x47, 0xfb, 0xd, 0x6b, 0xa, 0xe, - 0x78, 0x9e, 0xf8, 0xa8, 0x99, 0xf7, 0x40, 0x9e, 0x6, 0xfb, 0x6d, 0x95, - 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xf2, 0xa, 0xf7, 0x2a, - 0xb, 0xf2, 0x9c, 0x93, 0xc, 0xc, 0xf7, 0xe1, 0x14, 0xf9, 0xf, 0x15, - 0xb1, 0x13, 0x0, 0x7c, 0x2, 0x0, 0x1, 0x0, 0x31, 0x0, 0x6d, 0x0, - 0x7a, 0x0, 0xc0, 0x1, 0x5, 0x1, 0x2a, 0x1, 0x51, 0x1, 0x55, 0x1, - 0x87, 0x1, 0x93, 0x1, 0xa3, 0x1, 0xa8, 0x1, 0xc7, 0x1, 0xd1, 0x1, - 0xd4, 0x1, 0xdc, 0x1, 0xea, 0x1, 0xf8, 0x2, 0x4, 0x2, 0x11, 0x2, - 0x1b, 0x2, 0x2a, 0x2, 0x34, 0x2, 0x3b, 0x2, 0x44, 0x2, 0x4d, 0x2, - 0x56, 0x2, 0x5e, 0x2, 0x67, 0x2, 0x6c, 0x2, 0x71, 0x2, 0x7b, 0x2, - 0x80, 0x2, 0x8d, 0x2, 0x94, 0x2, 0x99, 0x2, 0x9e, 0x2, 0xaf, 0x2, - 0xb9, 0x2, 0xbe, 0x2, 0xc3, 0x2, 0xcf, 0x2, 0xe2, 0x2, 0xea, 0x2, - 0xf5, 0x3, 0x7, 0x3, 0xd, 0x3, 0x12, 0x3, 0x18, 0x3, 0x1c, 0x3, - 0x26, 0x3, 0x2b, 0x3, 0x30, 0x3, 0x34, 0x3, 0x3e, 0x3, 0x4d, 0x3, - 0x54, 0x3, 0x5a, 0x3, 0x5f, 0x3, 0x63, 0x3, 0x67, 0x3, 0x6b, 0x3, - 0x6f, 0x3, 0x7a, 0x3, 0x84, 0x3, 0x91, 0x3, 0x9e, 0x3, 0xa6, 0x3, - 0xae, 0x3, 0xb1, 0x3, 0xb5, 0x3, 0xb9, 0x3, 0xbd, 0x3, 0xc9, 0x3, - 0xcf, 0x3, 0xd8, 0x3, 0xe4, 0x3, 0xef, 0x3, 0xf4, 0x3, 0xfa, 0x4, - 0x0, 0x4, 0x6, 0x4, 0xc, 0x4, 0x17, 0x4, 0x22, 0x4, 0x2c, 0x4, - 0x33, 0x4, 0x38, 0x4, 0x3f, 0x4, 0x46, 0x4, 0x4b, 0x4, 0x50, 0x4, - 0x54, 0x4, 0x5e, 0x4, 0x68, 0x4, 0x72, 0x4, 0x7c, 0x4, 0x7f, 0x4, - 0x83, 0x4, 0x87, 0x4, 0x8b, 0x4, 0x8f, 0x4, 0x95, 0x4, 0x9e, 0x4, - 0xa7, 0x4, 0xb0, 0x4, 0xb6, 0x4, 0xbb, 0x4, 0xc1, 0x4, 0xc6, 0x4, - 0xcb, 0x4, 0xd0, 0x4, 0xd5, 0x4, 0xda, 0x4, 0xde, 0x4, 0xe3, 0x4, - 0xe8, 0x4, 0xec, 0x4, 0xf0, 0x4, 0xf4, 0x4, 0xf8, 0x4, 0xfc, 0x5, - 0x0, 0x5, 0x4, 0x2f, 0xa, 0x99, 0xa, 0xab, 0xb1, 0x1a, 0xab, 0x7c, - 0xf7, 0x4, 0x33, 0xa, 0x7f, 0x5, 0xb9, 0x98, 0xb1, 0x9a, 0xb8, 0x1b, - 0xce, 0xa8, 0x5b, 0x54, 0x70, 0x1f, 0x6c, 0x81, 0x54, 0x86, 0x50, 0x85, - 0x8, 0x42, 0x86, 0xfb, 0x2f, 0x7f, 0xfb, 0x34, 0x1a, 0x28, 0xd6, 0x52, - 0xe1, 0x1e, 0xb, 0x15, 0xfb, 0x23, 0xe3, 0xfb, 0x32, 0xf7, 0x69, 0xf7, - 0xb1, 0xf7, 0x16, 0xf7, 0x95, 0xf7, 0x56, 0xf7, 0x49, 0xfb, 0x6, 0xf7, - 0x13, 0xfb, 0x53, 0xfb, 0xc9, 0x25, 0xfb, 0xb4, 0xfb, 0x3e, 0x1e, 0xf7, - 0x2a, 0x16, 0xf7, 0x37, 0xf0, 0xf7, 0x3d, 0xf7, 0x29, 0xf7, 0x3, 0xc2, - 0x34, 0x2a, 0xfb, 0xa, 0x3b, 0xfb, 0x61, 0xfb, 0x3c, 0x2a, 0x44, 0xd1, - 0xf4, 0x1e, 0xb, 0x15, 0xfb, 0x11, 0xde, 0xfb, 0x1, 0x38, 0xa, 0xf7, - 0x36, 0x26, 0xa, 0xb, 0x15, 0xf8, 0x8, 0x6, 0x94, 0xae, 0x8c, 0xb3, - 0x99, 0x1a, 0xf0, 0x5d, 0xf7, 0x1c, 0xfb, 0x41, 0xfb, 0x6e, 0x35, 0xfb, - 0x33, 0xfb, 0x1b, 0xfb, 0x24, 0xe9, 0xfb, 0xf, 0xf7, 0x2d, 0xd7, 0xf7, - 0x1, 0xa6, 0xf7, 0x15, 0xcc, 0x1e, 0xfb, 0x1a, 0xa1, 0x5, 0x7a, 0x83, - 0x6a, 0x51, 0x41, 0x1b, 0x4d, 0x5a, 0xbc, 0xde, 0x8f, 0x1f, 0x9a, 0xe3, - 0x15, 0xbe, 0x95, 0xaf, 0xde, 0xe1, 0x1b, 0xd8, 0xa6, 0x4c, 0x44, 0x88, - 0x1f, 0xb, 0x1, 0xf7, 0x8, 0xf7, 0x28, 0x3, 0xf7, 0x6b, 0xf9, 0x73, - 0x15, 0x3a, 0xfc, 0x2a, 0x5, 0x81, 0x5f, 0x83, 0x59, 0x5b, 0x1a, 0xfb, - 0x1, 0xc2, 0x2a, 0xf7, 0x62, 0xf7, 0xa3, 0xb6, 0xf7, 0x64, 0xf7, 0x20, - 0xa8, 0x1e, 0xdf, 0xf8, 0x2a, 0x5, 0x97, 0xa, 0x37, 0xfc, 0x2a, 0x5, - 0xfb, 0x13, 0x71, 0x78, 0x2e, 0xfb, 0x20, 0x1b, 0x2b, 0x73, 0xb4, 0xc5, - 0xaf, 0x94, 0xb5, 0x94, 0xb6, 0x1f, 0xdf, 0xf8, 0x2a, 0x5, 0xb, 0x5e, - 0xa, 0xe1, 0xf7, 0x36, 0x5, 0xf7, 0xaf, 0x6, 0xa3, 0xfb, 0x36, 0x5, - 0xf7, 0x1f, 0x6, 0xfb, 0x8, 0xf9, 0x71, 0x43, 0xa, 0x27, 0xfc, 0x54, - 0x15, 0xf7, 0x30, 0xf7, 0xba, 0x5c, 0xa, 0xb3, 0xfb, 0xba, 0x5, 0xb, - 0xf7, 0xe, 0x48, 0xf7, 0xa, 0xfb, 0x4f, 0xfb, 0x7d, 0x41, 0xfb, 0x4c, - 0xfb, 0x21, 0x1e, 0xf7, 0x25, 0x16, 0xcb, 0xb0, 0xf7, 0x2b, 0xf7, 0x11, - 0xdb, 0xa8, 0x3d, 0x57, 0x29, 0x56, 0xfb, 0x4, 0x21, 0x3f, 0x67, 0xcb, - 0xc8, 0x1e, 0xb, 0x15, 0x25, 0xa, 0xe, 0xf8, 0x31, 0x89, 0x15, 0x82, - 0xa, 0xf7, 0x2, 0xf8, 0xa7, 0x47, 0xa, 0x57, 0xfb, 0x8e, 0x5, 0x46, - 0x71, 0x7f, 0xfb, 0xd, 0xfb, 0xe, 0x1b, 0x5e, 0x7d, 0xa4, 0xad, 0xa1, - 0x90, 0xa4, 0x91, 0xa0, 0x1f, 0xcc, 0xf7, 0xcd, 0x44, 0xa, 0x4d, 0xfb, - 0xba, 0x5, 0x85, 0x6a, 0x81, 0x60, 0x62, 0x1a, 0xb, 0x12, 0x13, 0x60, - 0x28, 0xa, 0x13, 0xa0, 0x35, 0xa, 0x13, 0x60, 0xb, 0x30, 0xa, 0x9c, - 0xf7, 0x8e, 0x15, 0x88, 0x78, 0x5, 0x31, 0xa, 0x90, 0xe6, 0x99, 0x1f, - 0xb, 0xfd, 0x22, 0x21, 0xa, 0xe, 0xf8, 0xc4, 0x6, 0xa5, 0xf7, 0x10, - 0x5, 0xfc, 0x31, 0x6, 0xb3, 0xf7, 0x5a, 0x70, 0xa, 0xf7, 0x10, 0x5, - 0xfb, 0xfe, 0x6, 0xad, 0xf7, 0x3c, 0x6f, 0xa, 0xf7, 0xf, 0x90, 0xa, - 0xb, 0xe2, 0x78, 0xf7, 0x14, 0xf9, 0x6, 0x77, 0x24, 0xa, 0xb, 0x2a, - 0xa, 0xe, 0x32, 0xa, 0x9a, 0xca, 0x99, 0xc0, 0x1e, 0xb, 0xba, 0xcb, - 0x9d, 0xc2, 0xbf, 0x1f, 0x8d, 0x70, 0x8c, 0x82, 0x93, 0x72, 0x8, 0xb, - 0x5f, 0x81, 0x77, 0x30, 0x20, 0x1b, 0x5a, 0x77, 0xab, 0xa7, 0xd6, 0xf7, - 0xa, 0xb, 0x15, 0xf7, 0x27, 0x6, 0x83, 0xa6, 0x87, 0x9e, 0xaa, 0x1a, - 0xbc, 0xb, 0xfb, 0x5a, 0x27, 0xfb, 0x3, 0x6b, 0xfb, 0xd, 0x5f, 0x1e, - 0xf7, 0x28, 0xb, 0x68, 0xa, 0xf7, 0x36, 0xf7, 0xf, 0xf8, 0x54, 0x77, - 0xb, 0x46, 0xa6, 0x4c, 0xf7, 0x6, 0xcd, 0xce, 0xa9, 0xc2, 0xc2, 0x1e, - 0x8d, 0x89, 0x5, 0xb, 0x1, 0xf6, 0xf7, 0x2a, 0xf8, 0x34, 0xf7, 0x2a, - 0x3, 0xb, 0xa0, 0x76, 0xf9, 0x62, 0x77, 0x1, 0xb, 0xf7, 0x3d, 0xf7, - 0x59, 0xf7, 0x4, 0xf7, 0x31, 0xb, 0x15, 0xf7, 0xc, 0x40, 0xa, 0xfb, - 0xc, 0x6, 0xb, 0x39, 0xa, 0xf7, 0x48, 0xfb, 0xc, 0x39, 0xa, 0xe, - 0xf7, 0x2, 0x97, 0xc1, 0xa2, 0xf5, 0x18, 0xb, 0xf7, 0x1c, 0x6, 0xf4, - 0xf8, 0xa6, 0x5b, 0xa, 0xb, 0x5, 0xfb, 0x21, 0x6, 0xb, 0x8e, 0xa2, - 0x3b, 0xa, 0xb, 0x1, 0xdd, 0xf7, 0x25, 0xf7, 0xa3, 0xf7, 0x25, 0x3, - 0xb, 0x6, 0xa4, 0x83, 0xa, 0xb, 0xab, 0x8b, 0xf7, 0x10, 0xf7, 0x5a, - 0xf7, 0x10, 0xf7, 0x3c, 0xf7, 0xf, 0xb, 0x3c, 0x7d, 0xf7, 0x0, 0x2b, - 0xeb, 0xb, 0x5, 0xfb, 0x37, 0x6, 0xb, 0x5, 0xfb, 0x24, 0x6, 0xb, - 0x15, 0xf7, 0x8, 0x6, 0xe0, 0xe2, 0xb1, 0x34, 0x5, 0xec, 0x6, 0x4f, - 0xf7, 0x27, 0x66, 0xa, 0xe, 0xf7, 0x29, 0x6, 0xf7, 0x40, 0xf9, 0x74, - 0x5a, 0xa, 0xb, 0x5, 0xfb, 0x23, 0x6, 0xb, 0xfb, 0xf9, 0xa0, 0x76, - 0xb, 0xf7, 0x23, 0x78, 0xf7, 0x14, 0xf9, 0x37, 0xf7, 0x2c, 0x36, 0xa, - 0xb, 0x15, 0xdb, 0x6, 0x57, 0xf7, 0x65, 0xf7, 0x24, 0xf7, 0x5b, 0x5, - 0x2b, 0x6, 0xfb, 0x39, 0xfb, 0x53, 0x5, 0xb, 0x7c, 0xa, 0xa8, 0xf7, - 0x26, 0x44, 0xa, 0xb, 0x73, 0x7d, 0xf7, 0x1, 0xf8, 0x8b, 0xf7, 0x2c, - 0x3f, 0xa, 0xb, 0x15, 0xeb, 0x6, 0xf7, 0x39, 0xf7, 0x59, 0x32, 0xf7, - 0x67, 0x5, 0x3b, 0x6, 0xbf, 0xfb, 0x67, 0x5, 0xb, 0x48, 0xa, 0xf9, - 0x74, 0x77, 0xb, 0x6, 0xa4, 0x55, 0xa, 0xb, 0x6, 0xa4, 0xf7, 0xd, - 0x5, 0xb, 0x5, 0x89, 0x6, 0xb, 0x6, 0xf7, 0x44, 0xf7, 0x26, 0x5, - 0xfb, 0x3a, 0x6, 0xb, 0x5, 0xfb, 0x29, 0x6, 0xb, 0x5, 0xfb, 0x1e, - 0x6, 0xb, 0xf7, 0xe, 0x5, 0xb, 0xf7, 0x1e, 0x8e, 0xa3, 0x3b, 0xa, - 0xfb, 0x1f, 0x6, 0xb, 0xe2, 0x8b, 0xf7, 0xa, 0xf8, 0x76, 0xf7, 0xa, - 0x1, 0xf9, 0x6, 0xf7, 0x2b, 0x3, 0xb, 0xec, 0x76, 0xf8, 0x2c, 0x77, - 0x1, 0xb, 0x73, 0x7d, 0xf2, 0x30, 0xe6, 0xb, 0x5, 0xfb, 0x2a, 0x6, - 0xb, 0x85, 0xa, 0x6, 0xb, 0x5, 0x8d, 0x6, 0xb, 0xf7, 0x2c, 0x5, - 0xb, 0xf7, 0x2a, 0x6, 0xb, 0x4f, 0xa, 0xfb, 0xd, 0x6, 0xf7, 0x49, - 0xfb, 0xe, 0x15, 0xb, 0x15, 0xe8, 0x6, 0xf7, 0x32, 0xf7, 0x27, 0x53, - 0xa, 0xe, 0x15, 0xca, 0x6, 0x7e, 0x52, 0x73, 0x7a, 0x5f, 0x82, 0x7e, - 0x4d, 0x18, 0xb, 0xfb, 0x15, 0x5, 0xca, 0x6, 0x7e, 0x53, 0x73, 0x7b, - 0x5f, 0x81, 0x8, 0xb, 0x6, 0x72, 0x84, 0x84, 0x7b, 0x77, 0x1b, 0xb, - 0xf7, 0xc0, 0x16, 0xf7, 0x20, 0x6, 0xc1, 0xb, 0x3d, 0xa, 0xe, 0x98, - 0xa, 0x6, 0xb, 0xf7, 0x2b, 0x5, 0xb, 0xe2, 0xa0, 0x76, 0xb, 0x15, - 0xf7, 0xa, 0x6, 0xa4, 0xf7, 0x7, 0x5, 0xfb, 0xa, 0x6, 0xb, 0x86, - 0xa, 0xfb, 0xe, 0x6, 0xb, 0x15, 0xf7, 0xb, 0x50, 0xa, 0xfb, 0xb, - 0x6, 0xb, 0x72, 0x69, 0x63, 0x5c, 0x1b, 0x86, 0x79, 0x8b, 0x93, 0x72, - 0x1f, 0xb, 0x15, 0xf7, 0x15, 0x6, 0xa6, 0x55, 0xa, 0xfb, 0x15, 0x6, - 0xb, 0x6, 0xa5, 0x55, 0xa, 0xb, 0x5, 0xf8, 0x14, 0x6, 0xa4, 0xb, - 0x5, 0xf7, 0xfe, 0x6, 0xa4, 0xb, 0x6, 0xa5, 0xf7, 0xf, 0x5, 0xb, - 0xf8, 0xf0, 0xf7, 0x26, 0x1, 0xb, 0xfb, 0x8a, 0xfb, 0x58, 0xf7, 0x7, - 0xf7, 0xb2, 0xf7, 0x8, 0xb, 0xfb, 0x11, 0x59, 0xfb, 0x2f, 0x3b, 0x1e, - 0xe8, 0x16, 0x9b, 0xb, 0x15, 0xec, 0x6, 0x4c, 0x5d, 0xa, 0xfb, 0x1f, - 0x6, 0xb, 0x12, 0xc2, 0xf7, 0x23, 0x13, 0x70, 0xb, 0x94, 0xa, 0xfb, - 0x57, 0xb, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xb, 0xa0, 0x76, 0xf8, - 0xa8, 0x77, 0x1, 0xb, 0x5, 0xfb, 0xe, 0x6, 0xb, 0x5, 0xfb, 0x27, - 0x6, 0xb, 0xf7, 0x24, 0x6, 0xb, 0x1, 0xd1, 0xf7, 0x22, 0xf7, 0x8b, - 0xf7, 0x1a, 0x3, 0xb, 0x5, 0x87, 0x9b, 0xb8, 0x80, 0xb2, 0x1b, 0xf2, - 0xae, 0xb, 0xfb, 0x58, 0xf7, 0x2, 0xf9, 0x4e, 0xf7, 0x2, 0x1, 0xb, - 0xcc, 0xf7, 0x5a, 0xf7, 0x44, 0xf7, 0x9, 0x9c, 0x32, 0xb, 0x54, 0xa, - 0xe, 0xf7, 0x1b, 0x6, 0xb, 0xf7, 0xc, 0x5, 0xb, 0x73, 0xa0, 0x76, - 0xb, 0x5, 0xfb, 0x1c, 0xb, 0x15, 0xf7, 0xe, 0x4f, 0xa, 0xb, 0x73, - 0x8b, 0xf7, 0xd, 0xf8, 0xe9, 0x77, 0x1, 0xb, 0xf7, 0x77, 0xf5, 0x1, - 0xbb, 0xf7, 0x77, 0x15, 0xb, 0x6, 0xa1, 0xf7, 0x3, 0x5, 0xfb, 0x3d, - 0x6, 0xb, 0xd0, 0x16, 0xf7, 0x21, 0x6, 0xb, 0x96, 0xa, 0xd7, 0x16, - 0xb, 0xf7, 0x23, 0x78, 0xf7, 0x12, 0xb, 0x5, 0xf7, 0x23, 0x6, 0xb, - 0x15, 0xf7, 0x1e, 0x6, 0xb, 0x15, 0xf7, 0xe, 0x6, 0xb, 0x5, 0xfc, - 0xa7, 0x6, 0xb, 0x5, 0xfb, 0x1b, 0x6, 0xb, 0x5, 0x9a, 0xa, 0xb, - 0x5, 0xfb, 0x26, 0x6, 0xb, 0x5, 0xfb, 0x28, 0x6, 0xb, 0xf7, 0x2b, - 0x1, 0xb, 0xf7, 0xc, 0x1, 0xb, 0xfb, 0x2b, 0x6, 0xb, 0x5, 0xfb, - 0x17, 0xb, 0xa0, 0xe8, 0x93, 0xb, 0xfb, 0x22, 0x6, 0xb, 0xf7, 0x22, - 0x6, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp deleted file mode 100644 index 9e1b558340..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp +++ /dev/null @@ -1,1371 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSansItalicFontData[16339] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x14, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x61, 0x6e, 0x73, 0x4f, 0x54, 0x46, 0x2d, 0x49, 0x74, - 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x27, 0xf8, 0x10, 0x0, - 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x18, 0x4, - 0x7f, 0xc, 0x2, 0xfb, 0x3e, 0xfb, 0x75, 0xfa, 0xf0, 0xfa, 0x4b, 0x5, - 0xf7, 0x36, 0xf, 0xf9, 0x1, 0x11, 0xc3, 0x1c, 0x3a, 0xfc, 0x12, 0x0, - 0x4, 0x1, 0x1, 0x5, 0x2f, 0x44, 0x52, 0x45, 0x75, 0x72, 0x6f, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, - 0x61, 0x6e, 0x73, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x49, 0x74, 0x61, 0x6c, - 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x61, 0x6e, 0x73, - 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x8a, 0x0, - 0xab, 0x0, 0xac, 0x0, 0xad, 0x0, 0xae, 0x0, 0xaf, 0x0, 0xb0, 0x0, - 0x23, 0x0, 0x24, 0x0, 0xb1, 0x0, 0x25, 0x0, 0x26, 0x0, 0xb2, 0x0, - 0xb3, 0x0, 0xb4, 0x0, 0xb5, 0x0, 0x9a, 0x1, 0x87, 0x0, 0x27, 0x0, - 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0xb6, 0x0, 0xb7, 0x0, 0xb8, 0x0, - 0xb9, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, 0x8c, 0x0, 0x2e, 0x0, - 0x2f, 0x0, 0xba, 0x0, 0x30, 0x0, 0x8e, 0x0, 0xbb, 0x0, 0xbc, 0x0, - 0xbd, 0x0, 0xbe, 0x0, 0x8d, 0x0, 0xbf, 0x0, 0x31, 0x0, 0x32, 0x0, - 0x33, 0x0, 0x34, 0x0, 0xc0, 0x0, 0x35, 0x0, 0x9d, 0x0, 0x36, 0x0, - 0xc1, 0x0, 0xc2, 0x0, 0xc3, 0x0, 0xc4, 0x0, 0x37, 0x0, 0x38, 0x0, - 0x39, 0x0, 0x3a, 0x0, 0xc5, 0x0, 0xc6, 0x0, 0x3b, 0x0, 0xc7, 0x0, - 0x42, 0x0, 0xc8, 0x0, 0xc9, 0x0, 0x7d, 0x0, 0xca, 0x0, 0x90, 0x0, - 0xcb, 0x0, 0x7, 0x0, 0xcc, 0x0, 0x3f, 0x0, 0x5f, 0x0, 0xb, 0x0, - 0x21, 0x0, 0xcd, 0x0, 0x43, 0x0, 0x3d, 0x0, 0x5d, 0x0, 0x5c, 0x0, - 0x5e, 0x0, 0x3c, 0x0, 0x3e, 0x0, 0x81, 0x0, 0xa0, 0x0, 0x74, 0x0, - 0x44, 0x0, 0x88, 0x0, 0xce, 0x0, 0x85, 0x0, 0x61, 0x0, 0x7e, 0x0, - 0x1b, 0x0, 0xd, 0x0, 0xaa, 0x0, 0x67, 0x0, 0x45, 0x0, 0x70, 0x0, - 0x71, 0x0, 0xa1, 0x0, 0x83, 0x0, 0x9f, 0x0, 0x5, 0x0, 0x82, 0x0, - 0x91, 0x0, 0x46, 0x0, 0xcf, 0x0, 0xd0, 0x0, 0xd1, 0x0, 0xd2, 0x0, - 0x19, 0x0, 0x79, 0x0, 0x89, 0x0, 0x6f, 0x0, 0x1e, 0x0, 0xa7, 0x0, - 0x2, 0x0, 0x60, 0x0, 0x47, 0x0, 0x6d, 0x0, 0x16, 0x0, 0x6e, 0x0, - 0x65, 0x0, 0x15, 0x0, 0x63, 0x0, 0x48, 0x0, 0x95, 0x0, 0x7c, 0x0, - 0x1f, 0x0, 0x6a, 0x0, 0x78, 0x0, 0x6b, 0x0, 0x6c, 0x0, 0x49, 0x0, - 0x86, 0x0, 0xe, 0x0, 0x4a, 0x0, 0xd3, 0x0, 0xd4, 0x0, 0xd5, 0x0, - 0xd6, 0x0, 0x4b, 0x0, 0x4c, 0x0, 0x4d, 0x0, 0x1d, 0x0, 0x97, 0x0, - 0x92, 0x0, 0x4e, 0x0, 0x80, 0x0, 0xa6, 0x0, 0x98, 0x0, 0xa8, 0x0, - 0x4f, 0x0, 0x1a, 0x0, 0xd7, 0x0, 0x4, 0x0, 0x50, 0x0, 0xd8, 0x0, - 0xd9, 0x0, 0xda, 0x0, 0x94, 0x0, 0x87, 0x0, 0xdb, 0x0, 0x12, 0x0, - 0x9b, 0x0, 0x9e, 0x0, 0x96, 0x0, 0x8b, 0x0, 0x8f, 0x0, 0x93, 0x0, - 0xdc, 0x0, 0x51, 0x0, 0x73, 0x0, 0x9, 0x0, 0xa, 0x0, 0x6, 0x0, - 0xf, 0x0, 0x72, 0x0, 0x7a, 0x0, 0xc, 0x0, 0x9c, 0x0, 0x52, 0x0, - 0x20, 0x0, 0x7b, 0x0, 0x3, 0x0, 0x76, 0x0, 0x69, 0x0, 0x77, 0x0, - 0x41, 0x0, 0x8, 0x0, 0x75, 0x0, 0x68, 0x0, 0x53, 0x0, 0xa5, 0x0, - 0x84, 0x0, 0x54, 0x0, 0xdd, 0x0, 0x66, 0x0, 0x1c, 0x0, 0x18, 0x0, - 0x17, 0x0, 0x10, 0x0, 0x1, 0x0, 0x62, 0x0, 0x55, 0x0, 0xa2, 0x0, - 0x14, 0x0, 0xa3, 0x0, 0xa9, 0x0, 0x7f, 0x0, 0x99, 0x0, 0x13, 0x0, - 0xa4, 0x0, 0x56, 0x0, 0xde, 0x0, 0xdf, 0x0, 0xe0, 0x0, 0xe1, 0x0, - 0x40, 0x0, 0x57, 0x0, 0x58, 0x0, 0x59, 0x0, 0x5a, 0x0, 0xe2, 0x0, - 0xe3, 0x0, 0x64, 0x0, 0x5b, 0x0, 0xe4, 0x0, 0x11, 0x0, 0xe6, 0x2, - 0x0, 0x1, 0x0, 0x3, 0x0, 0x36, 0x0, 0x82, 0x0, 0x94, 0x0, 0xa7, - 0x0, 0xb9, 0x0, 0xd1, 0x1, 0x10, 0x1, 0x54, 0x1, 0xb3, 0x2, 0x5, - 0x2, 0x89, 0x2, 0xc9, 0x2, 0xf6, 0x3, 0x3, 0x3, 0x10, 0x3, 0x1c, - 0x3, 0x2f, 0x3, 0x87, 0x4, 0x6, 0x4, 0x2e, 0x4, 0x8d, 0x4, 0xbc, - 0x4, 0xca, 0x4, 0xe6, 0x5, 0x6, 0x5, 0x29, 0x5, 0x3e, 0x5, 0x72, - 0x5, 0xa5, 0x5, 0xbb, 0x5, 0xe6, 0x6, 0x17, 0x6, 0x3f, 0x6, 0xa1, - 0x6, 0xf1, 0x7, 0x77, 0x7, 0x9a, 0x7, 0xc3, 0x7, 0xe8, 0x8, 0x5, - 0x8, 0x84, 0x8, 0xd2, 0x9, 0x12, 0x9, 0x91, 0x9, 0xec, 0xa, 0x59, - 0xa, 0xdf, 0xa, 0xff, 0xb, 0x47, 0xb, 0x84, 0xb, 0xd6, 0xb, 0xf7, - 0xc, 0x1f, 0xc, 0x71, 0xc, 0x8c, 0xc, 0xc9, 0xc, 0xfa, 0xd, 0x22, - 0xd, 0x51, 0xd, 0x89, 0xd, 0xb1, 0xd, 0xee, 0xe, 0x7c, 0xe, 0x9e, - 0xe, 0xc3, 0xe, 0xda, 0xf, 0x9, 0xf, 0xbb, 0xf, 0xda, 0x10, 0x79, - 0x10, 0xc2, 0x10, 0xe4, 0x11, 0x2e, 0x11, 0x63, 0x12, 0x19, 0x12, 0x70, - 0x12, 0xca, 0x12, 0xe2, 0x12, 0xfc, 0x13, 0x4f, 0x13, 0xa6, 0x13, 0xca, - 0x13, 0xec, 0x14, 0x16, 0x14, 0x38, 0x14, 0x56, 0x14, 0xa0, 0x14, 0xb7, - 0x15, 0x2a, 0x15, 0x63, 0x15, 0xce, 0x15, 0xee, 0x16, 0x6, 0x16, 0x26, - 0x16, 0xbd, 0x17, 0x35, 0x17, 0x90, 0x17, 0xc8, 0x18, 0x16, 0x18, 0x50, - 0x18, 0x61, 0x18, 0x92, 0x19, 0x1f, 0x19, 0x31, 0x19, 0x42, 0x19, 0x99, - 0x19, 0xbc, 0x19, 0xe6, 0x1a, 0x4, 0x1a, 0x25, 0x1a, 0x96, 0x1a, 0xad, - 0x1a, 0xb8, 0x1a, 0xc1, 0x1a, 0xe2, 0x1b, 0x51, 0x1b, 0x75, 0x1b, 0xa3, - 0x1b, 0xde, 0x1c, 0x22, 0x1c, 0x7a, 0x1c, 0xb7, 0x1d, 0x16, 0x1d, 0x53, - 0x1d, 0x70, 0x1d, 0xdd, 0x1e, 0x52, 0x1e, 0x60, 0x1e, 0x89, 0x1e, 0xb7, - 0x1e, 0xe3, 0x1e, 0xfd, 0x1f, 0x1b, 0x1f, 0x5d, 0x1f, 0x6b, 0x1f, 0x82, - 0x1f, 0x9f, 0x1f, 0xbb, 0x1f, 0xdd, 0x1f, 0xfd, 0x20, 0x13, 0x20, 0x51, - 0x20, 0x7c, 0x20, 0x8b, 0x20, 0xaf, 0x20, 0xcd, 0x20, 0xee, 0x21, 0x52, - 0x21, 0x66, 0x21, 0x7a, 0x21, 0xcc, 0x21, 0xfd, 0x22, 0x3c, 0x22, 0xa1, - 0x23, 0x1b, 0x23, 0x72, 0x23, 0xb9, 0x23, 0xd7, 0x23, 0xfb, 0x24, 0x23, - 0x24, 0xba, 0x24, 0xeb, 0x25, 0x3, 0x25, 0x2f, 0x25, 0xb0, 0x26, 0x16, - 0x26, 0x3c, 0x26, 0xc6, 0x27, 0x6, 0x27, 0x7c, 0x27, 0xd3, 0x28, 0x29, - 0x28, 0x52, 0x28, 0x88, 0x28, 0xbd, 0x29, 0x5d, 0x29, 0x6b, 0x29, 0x7f, - 0x2a, 0x39, 0x2a, 0x5c, 0x2a, 0x9d, 0x2a, 0xf8, 0x2b, 0x4b, 0x2b, 0xa1, - 0x2b, 0xd2, 0x2b, 0xfa, 0x2c, 0x12, 0x2c, 0x3e, 0x2c, 0x54, 0x2c, 0x6b, - 0x2c, 0x86, 0x2c, 0x9f, 0x2c, 0xd7, 0x2d, 0x7d, 0x2d, 0xb7, 0x2e, 0x17, - 0x2e, 0x8e, 0x2f, 0x26, 0x2f, 0x55, 0x2f, 0x84, 0x2f, 0xe7, 0x2f, 0xfc, - 0x2f, 0xfe, 0x30, 0x8c, 0x30, 0xde, 0x31, 0x35, 0x31, 0x95, 0x32, 0x30, - 0x32, 0x8e, 0x32, 0xe2, 0x33, 0x3e, 0x33, 0x8c, 0x33, 0xdc, 0x34, 0x27, - 0x34, 0x34, 0x34, 0x42, 0x34, 0x4e, 0x34, 0x62, 0x34, 0x6f, 0x34, 0x8b, - 0x34, 0xc1, 0x34, 0xf0, 0x35, 0x27, 0x35, 0x75, 0x35, 0xc2, 0x36, 0x1b, - 0x36, 0x41, 0x36, 0x7a, 0x36, 0xbf, 0x77, 0xe, 0x35, 0xa, 0xf7, 0x62, - 0xd5, 0xf8, 0x4a, 0x77, 0x1, 0x99, 0x16, 0xf4, 0x6, 0xf7, 0x7, 0xf7, - 0x62, 0x5, 0xf7, 0xb8, 0x6, 0xae, 0xfb, 0x62, 0x5, 0xe8, 0x6, 0xfb, - 0xa, 0xf9, 0x62, 0x5, 0xfb, 0x5, 0x6, 0xfb, 0x28, 0xfc, 0x4a, 0x15, - 0xf7, 0x53, 0xf7, 0xfc, 0x48, 0xa, 0xb9, 0xfb, 0xfc, 0x5, 0xe, 0xf9, - 0x52, 0x8b, 0xdc, 0xf7, 0x10, 0xdc, 0xb9, 0xdc, 0xf7, 0x74, 0xdc, 0x1, - 0x93, 0x16, 0xf7, 0x0, 0x6, 0xf7, 0x10, 0xf7, 0x61, 0x5, 0xf7, 0xaa, - 0x6, 0x60, 0xfb, 0x61, 0x5, 0xf8, 0x98, 0x55, 0xa, 0xfc, 0x33, 0x6, - 0xbf, 0xf7, 0x8f, 0x5, 0xf8, 0x3, 0x55, 0xa, 0xfc, 0x3, 0x6, 0xba, - 0xf7, 0x74, 0x5, 0xf8, 0x7, 0x55, 0xa, 0xfd, 0x1a, 0x6, 0xfb, 0x35, - 0xfc, 0x44, 0x15, 0xf7, 0x6b, 0xf7, 0xf3, 0x5, 0xf2, 0x6, 0x42, 0xfb, - 0xf3, 0x5, 0xe, 0x31, 0xa, 0xf9, 0x13, 0x77, 0x1, 0xf8, 0x74, 0xf9, - 0xae, 0x36, 0xa, 0xfc, 0xc1, 0xfe, 0x35, 0x26, 0xa, 0x31, 0xa, 0xf8, - 0x8c, 0xf7, 0x1b, 0x1, 0xf7, 0xc7, 0xf9, 0xae, 0x30, 0xa, 0xfc, 0x3b, - 0xfe, 0x35, 0x26, 0xa, 0x31, 0xa, 0xf8, 0x93, 0xef, 0x1, 0xf8, 0xb1, - 0xf9, 0xb5, 0x2e, 0xa, 0xfc, 0x4, 0xfe, 0x19, 0x26, 0xa, 0x31, 0xa, - 0xf8, 0x87, 0xf7, 0x20, 0x1, 0xf8, 0x78, 0xf9, 0xa9, 0x56, 0xa, 0xf7, - 0x20, 0x5, 0x20, 0x6, 0xfc, 0xb, 0xfe, 0x35, 0x26, 0xa, 0x31, 0xa, - 0xf8, 0x77, 0xb0, 0xf7, 0x36, 0x76, 0x1, 0xf8, 0x28, 0xb0, 0xf3, 0xb0, - 0x3, 0xf8, 0x28, 0xf9, 0xf2, 0x15, 0x59, 0xb4, 0x64, 0xbb, 0xbb, 0xb4, - 0xb2, 0xbd, 0xbd, 0x63, 0xb2, 0x5a, 0x5a, 0x63, 0x64, 0x59, 0x1e, 0xb0, - 0x8a, 0x15, 0xa8, 0xa2, 0xa3, 0xa8, 0xa8, 0xa2, 0x74, 0x6d, 0x6e, 0x74, - 0x75, 0x6e, 0x6f, 0x73, 0xa1, 0xa8, 0x1e, 0xfc, 0x3f, 0xfd, 0xf1, 0x26, - 0xa, 0x31, 0xa, 0xf8, 0x9a, 0xf5, 0x8e, 0x77, 0x12, 0x13, 0xe0, 0xf8, - 0x5, 0xf9, 0xbc, 0x15, 0xc8, 0x66, 0xa, 0xa3, 0x1b, 0xa7, 0xa1, 0x82, - 0x82, 0x9e, 0x1f, 0x80, 0xa2, 0x9f, 0x7e, 0xa0, 0x1b, 0xc5, 0xac, 0xc1, - 0xc0, 0x90, 0x1f, 0x50, 0x6, 0x7d, 0x87, 0x85, 0x73, 0x5e, 0xa, 0x13, - 0xd0, 0x95, 0x73, 0x70, 0x96, 0x6e, 0x1b, 0x13, 0xe0, 0x48, 0x7a, 0x58, - 0x51, 0x7c, 0x1f, 0xfb, 0xf7, 0xfd, 0xbc, 0x26, 0xa, 0xf8, 0x5, 0x8b, - 0xdc, 0xf7, 0x8d, 0xdd, 0xf7, 0x75, 0xdc, 0x1, 0xf8, 0xd4, 0xf1, 0x3, - 0xd5, 0x16, 0xf7, 0xfd, 0x6, 0xf7, 0x37, 0xec, 0xf7, 0xd, 0xf5, 0xe5, - 0x4b, 0xb3, 0x52, 0x9e, 0x1f, 0xb6, 0x99, 0xea, 0xac, 0xf7, 0xa, 0x1a, - 0xf7, 0x22, 0xfb, 0x18, 0xae, 0xfb, 0xb, 0x1e, 0xfb, 0x7b, 0x6, 0x64, - 0xfd, 0x11, 0x15, 0xc1, 0xf7, 0x8d, 0x5, 0xf7, 0x52, 0x6, 0xc9, 0xeb, - 0x8a, 0x25, 0xfb, 0x11, 0xfb, 0x13, 0x76, 0x22, 0x1f, 0x29, 0xf7, 0xdf, - 0x15, 0xbc, 0xf7, 0x75, 0x5, 0xf7, 0x29, 0x6, 0xc7, 0xec, 0x8a, 0x2c, - 0xfb, 0x3, 0xfb, 0x6, 0x79, 0x31, 0x1f, 0xe, 0xf8, 0x3c, 0x78, 0xdc, - 0xf8, 0xe6, 0xdc, 0x1, 0xf7, 0x14, 0xef, 0x3, 0xf9, 0x1b, 0xf7, 0x8f, - 0x15, 0x51, 0x79, 0x4a, 0xfb, 0x17, 0xfb, 0x2b, 0x1b, 0x3c, 0xfb, 0x12, - 0xb4, 0xf7, 0x53, 0xf7, 0x47, 0xf2, 0xf7, 0x4b, 0xf7, 0x52, 0xf7, 0x28, - 0xaa, 0xfb, 0x8, 0x62, 0x92, 0x1f, 0xea, 0x93, 0x5, 0xf7, 0x52, 0x75, - 0xfb, 0x3a, 0xb3, 0x2e, 0x1b, 0xfb, 0x7e, 0xfb, 0x33, 0xfb, 0x5d, 0xfb, - 0x86, 0xfb, 0x74, 0xf7, 0x1c, 0x32, 0xf7, 0x36, 0xf7, 0x3b, 0xf7, 0x8, - 0xf2, 0xf7, 0x2d, 0xc5, 0x1f, 0xe, 0xf8, 0x3c, 0xfb, 0x75, 0xc6, 0xf7, - 0x24, 0xdc, 0xf8, 0xe9, 0xdc, 0x1, 0xf7, 0x0, 0xf0, 0x3, 0xf7, 0x79, - 0xfb, 0x37, 0x15, 0x72, 0x52, 0x5, 0x87, 0xa6, 0xad, 0x8a, 0xa6, 0x1b, - 0xf7, 0x46, 0x9e, 0xd5, 0xa8, 0xc6, 0x53, 0x93, 0x77, 0x8e, 0x1f, 0x99, - 0xa9, 0xc8, 0x8e, 0xf7, 0x43, 0xa6, 0xe0, 0xf7, 0x78, 0x19, 0x27, 0x98, - 0x5, 0x50, 0x78, 0x4c, 0xfb, 0x17, 0xfb, 0x2c, 0x1b, 0x38, 0xfb, 0xe, - 0xbe, 0xf7, 0x54, 0xf7, 0x48, 0xf0, 0xf7, 0x42, 0xf7, 0x54, 0xf7, 0x28, - 0xa8, 0xfb, 0x9, 0x62, 0x93, 0x1f, 0xea, 0x93, 0x5, 0xf7, 0x54, 0x76, - 0xfb, 0x3b, 0xb2, 0x2f, 0x1b, 0xfb, 0x7f, 0xfb, 0x33, 0xfb, 0x53, 0xfb, - 0x88, 0xfb, 0x35, 0xd0, 0xfb, 0x1c, 0xf7, 0x48, 0x73, 0x1f, 0x6a, 0x47, - 0x5, 0xc4, 0x8a, 0x9d, 0x7b, 0x78, 0x1a, 0x5f, 0x43, 0x8c, 0x57, 0x82, - 0x87, 0x8d, 0x8c, 0x6a, 0x1e, 0xe, 0xf8, 0x3c, 0x8b, 0xdc, 0xf8, 0xc0, - 0xdc, 0x1, 0xf9, 0x2c, 0xef, 0x3, 0xdc, 0x16, 0xf7, 0x9b, 0x6, 0xf7, - 0x6a, 0xf7, 0x62, 0xf7, 0x12, 0xf7, 0xc0, 0xf7, 0x42, 0xfb, 0xb, 0xf7, - 0xa, 0xfb, 0x52, 0x1f, 0xfb, 0x72, 0x6, 0x66, 0xfd, 0x11, 0x15, 0xf7, - 0xa, 0xf8, 0xc0, 0x5, 0xf7, 0x17, 0x6, 0xe0, 0xf7, 0x1a, 0x87, 0xfb, - 0x63, 0xfb, 0x9b, 0xfb, 0x30, 0x39, 0xfb, 0x58, 0x1f, 0xe, 0xf8, 0x5, - 0x8b, 0xdc, 0xf7, 0x8e, 0xdd, 0xf7, 0x74, 0xdc, 0x1, 0xe1, 0x16, 0xf8, - 0xbe, 0x6b, 0xa, 0xfc, 0x5d, 0x6, 0xc2, 0xf7, 0x8e, 0x5, 0xf8, 0x2a, - 0x6, 0x9c, 0xdd, 0x5, 0xfc, 0x29, 0x6, 0xb7, 0xf7, 0x74, 0x5, 0xf8, - 0x3e, 0x6b, 0xa, 0xfc, 0xa0, 0x6, 0xe, 0x32, 0xa, 0xf7, 0x53, 0x77, - 0x2a, 0xa, 0xf7, 0x1e, 0xc3, 0x36, 0xa, 0xe, 0x32, 0xa, 0xc3, 0xf7, - 0x1b, 0x2a, 0xa, 0xf7, 0x1, 0xc3, 0x30, 0xa, 0xe, 0x32, 0xa, 0xca, - 0xef, 0x2a, 0xa, 0xf7, 0xa7, 0xca, 0x2e, 0xa, 0xe, 0x32, 0xa, 0xbe, - 0xf7, 0x20, 0x2a, 0xa, 0xf7, 0x95, 0xbe, 0x56, 0xa, 0xf7, 0x20, 0x5, - 0xfb, 0x0, 0x6, 0xe, 0xf8, 0x3c, 0x8b, 0xdc, 0xf7, 0x8e, 0xdc, 0xf7, - 0x75, 0xdc, 0x1, 0xf9, 0x2c, 0xef, 0x3, 0xd8, 0x16, 0xf7, 0x9c, 0x6, - 0xf7, 0x6a, 0xf7, 0x65, 0xf7, 0x12, 0xf7, 0xbf, 0xf7, 0x44, 0xfb, 0xb, - 0xf7, 0x9, 0xfb, 0x55, 0x1f, 0xfb, 0x6f, 0x6, 0x49, 0xfb, 0xc6, 0x5, - 0x3a, 0x6, 0x7a, 0x3a, 0x5, 0xdb, 0x6, 0xb6, 0xfb, 0x8e, 0x15, 0xc2, - 0xf7, 0x8e, 0x5, 0xf7, 0x64, 0x6b, 0xa, 0xfb, 0x65, 0x6, 0xbd, 0xf7, - 0x75, 0x5, 0xf7, 0x14, 0x6, 0xe1, 0xf7, 0x1c, 0x86, 0xfb, 0x63, 0xfb, - 0x9b, 0xfb, 0x33, 0x3a, 0xfb, 0x58, 0x1f, 0xe, 0xf8, 0x5, 0x8b, 0xd8, - 0xf7, 0x50, 0xcb, 0xc9, 0xcb, 0xf7, 0x4e, 0xd8, 0x1, 0xd0, 0xf0, 0x3, - 0x99, 0xf7, 0x9d, 0x15, 0xc2, 0x6, 0xfb, 0x38, 0x97, 0xf2, 0x26, 0xf7, - 0x4b, 0x1b, 0xb8, 0xb6, 0x92, 0x9a, 0xb2, 0x1f, 0xa3, 0xf0, 0x5, 0x6c, - 0x62, 0x5b, 0x7c, 0x55, 0x1b, 0xfb, 0x12, 0x44, 0xda, 0xf7, 0x1, 0x83, - 0x1f, 0xf7, 0xcb, 0x6, 0x9a, 0xcb, 0x5, 0xfb, 0xda, 0x6, 0x8e, 0x9f, - 0x8c, 0xa1, 0x90, 0x9f, 0x8, 0xf7, 0xdf, 0x6, 0x9a, 0xcb, 0x5, 0xfb, - 0xd9, 0x6, 0xf6, 0xb8, 0xdf, 0xda, 0xf7, 0x17, 0x1b, 0xc6, 0xc4, 0x7b, - 0x5f, 0xae, 0x1f, 0xb6, 0xdc, 0x5, 0xb3, 0x54, 0x45, 0x9b, 0x46, 0x1b, - 0xfb, 0x46, 0xfb, 0x1c, 0xfb, 0x3, 0xfb, 0x2c, 0x56, 0x1f, 0x4a, 0x6, - 0x7d, 0x4b, 0x5, 0xc9, 0x6, 0x87, 0x77, 0x89, 0x75, 0x8a, 0x77, 0x8, - 0x62, 0x6, 0xe, 0xf7, 0xcd, 0xa0, 0x76, 0xf7, 0xd9, 0xdd, 0xf7, 0x7a, - 0xdc, 0x1, 0xe1, 0x16, 0xf0, 0x6, 0xd3, 0xf7, 0xd9, 0x5, 0xf8, 0x19, - 0x6, 0x9d, 0xdd, 0x5, 0xfc, 0x19, 0x6, 0xbd, 0xf7, 0x7a, 0x5, 0xf8, - 0x1b, 0x6b, 0xa, 0xfc, 0x81, 0x6, 0xe, 0x6c, 0xa, 0xf7, 0x70, 0xdd, - 0xf7, 0xb8, 0xdc, 0x1, 0xf7, 0x3, 0xef, 0x3, 0xf8, 0x43, 0xf7, 0xae, - 0x15, 0xf7, 0x75, 0x6, 0x6a, 0xfb, 0x31, 0x5, 0x78, 0x67, 0x37, 0x5f, - 0x33, 0x1b, 0xfb, 0x15, 0x40, 0xf7, 0x1, 0xf7, 0x6, 0xf7, 0x69, 0xf7, - 0xc, 0xf7, 0x32, 0xf7, 0x49, 0xe5, 0xd8, 0x5f, 0xfb, 0x4, 0xa2, 0x1f, - 0xec, 0x95, 0x5, 0xf7, 0x26, 0x81, 0xfb, 0x20, 0xdc, 0xfb, 0x1a, 0x1b, - 0xfb, 0xa6, 0xfb, 0x16, 0xfb, 0x87, 0xfb, 0x65, 0x26, 0xb0, 0xfb, 0x5f, - 0xf7, 0xa0, 0xf7, 0xe, 0xf7, 0x2, 0xbc, 0xb2, 0xc9, 0x1f, 0xc9, 0xf7, - 0xbb, 0x5, 0xfb, 0xd8, 0x6, 0xe, 0xf8, 0x3c, 0xa0, 0x76, 0xf7, 0xe5, - 0xdc, 0xf7, 0xc0, 0x77, 0x1, 0xd8, 0x16, 0xed, 0x6, 0xd1, 0xf7, 0xe5, - 0x5, 0xf8, 0xb, 0x6, 0x45, 0xfb, 0xe5, 0x5, 0xeb, 0x6, 0xf7, 0x2d, - 0xf9, 0x62, 0x57, 0xa, 0x4b, 0xfb, 0xc0, 0x5, 0xfc, 0xc, 0x6, 0xcb, - 0xf7, 0xc0, 0x4d, 0xa, 0xe, 0x77, 0x2d, 0xa, 0xe6, 0x16, 0xeb, 0x6, - 0xf7, 0x2e, 0xf9, 0x62, 0x4d, 0xa, 0xe, 0x54, 0xa, 0xf7, 0x6a, 0x77, - 0x1, 0xf7, 0x85, 0xf9, 0xa8, 0x15, 0xd6, 0x6, 0xf7, 0x23, 0x6d, 0xa, - 0xfb, 0x8, 0x6, 0xfb, 0x90, 0xfe, 0x35, 0x15, 0x34, 0xa, 0xe, 0x54, - 0xa, 0xd6, 0xf7, 0x1f, 0x1, 0xf7, 0x2f, 0xf9, 0xaa, 0x6e, 0xa, 0xda, - 0xe4, 0xb2, 0x32, 0x5, 0xd9, 0x6, 0x4e, 0x6f, 0xa, 0x2a, 0x6, 0xfb, - 0x55, 0xfe, 0x35, 0x15, 0x34, 0xa, 0xe, 0x5c, 0xa, 0xf9, 0x6d, 0x77, - 0x1, 0xf7, 0xed, 0xf9, 0xb4, 0x15, 0xe7, 0x6, 0xa0, 0xf0, 0x3d, 0xa, - 0xfb, 0x5e, 0x26, 0x15, 0xe7, 0x6, 0xa1, 0xf0, 0x5, 0x2e, 0x6, 0x2d, - 0xfe, 0x19, 0x15, 0x34, 0xa, 0xe, 0x54, 0xa, 0xf7, 0x6a, 0x77, 0x1, - 0xe6, 0x16, 0x34, 0xa, 0xb9, 0xc0, 0x15, 0xce, 0x6, 0x54, 0x6d, 0xa, - 0x23, 0x6, 0xe, 0xf7, 0x5e, 0x78, 0xdb, 0xf9, 0x25, 0x77, 0x1, 0xba, - 0xea, 0x3, 0xba, 0xf7, 0x60, 0x15, 0xfb, 0x2c, 0xc3, 0x44, 0xf7, 0x15, - 0xf7, 0x31, 0xbe, 0xf5, 0xf1, 0xa2, 0x1e, 0xf7, 0xa, 0xf8, 0xa5, 0x5, - 0x24, 0x6, 0xfb, 0x8, 0xfc, 0xa5, 0x5, 0x49, 0x7d, 0x61, 0x4d, 0x42, - 0x1b, 0x5b, 0x60, 0xbe, 0xee, 0x1f, 0xe, 0xf8, 0x5, 0x2d, 0xa, 0xf9, - 0x1f, 0xf7, 0x21, 0x3, 0xd7, 0x16, 0xf0, 0x6, 0xbe, 0xf7, 0x7e, 0xf7, - 0x31, 0xf7, 0x17, 0xf7, 0x6d, 0xfc, 0x1, 0x5, 0xf7, 0x4, 0x6, 0xfb, - 0x93, 0xf8, 0x3f, 0xf7, 0xf1, 0xf7, 0xb7, 0x5, 0xfb, 0x21, 0x6, 0xfc, - 0x30, 0xfb, 0xf1, 0xdb, 0xf7, 0xf1, 0x5, 0x26, 0x6, 0xe, 0x8b, 0xdc, - 0xf9, 0x11, 0x77, 0x1, 0xd7, 0x16, 0xf8, 0x62, 0x55, 0xa, 0xfc, 0x2, - 0x6, 0xf7, 0x19, 0xf9, 0x11, 0x50, 0xa, 0xe, 0x8b, 0xdc, 0xf9, 0x11, - 0x77, 0x1, 0xd1, 0x16, 0xf8, 0x68, 0x55, 0xa, 0xfc, 0x7, 0x6, 0xc4, - 0xf7, 0xa7, 0xf7, 0x54, 0xf7, 0x0, 0x9c, 0xdc, 0xfb, 0x54, 0x21, 0xc6, - 0xf7, 0xab, 0x50, 0xa, 0x43, 0xfb, 0xe8, 0x30, 0x59, 0x7a, 0x37, 0xe6, - 0xbf, 0x5, 0xe, 0xf8, 0xab, 0x2d, 0xa, 0xd4, 0x16, 0xe9, 0x6, 0xf7, - 0xd, 0xf8, 0xf4, 0xe2, 0xfc, 0xf4, 0x5, 0xe8, 0x6, 0xf7, 0xf0, 0xf8, - 0xf9, 0xfb, 0x28, 0xfc, 0xf9, 0x5, 0xea, 0x6, 0xf7, 0x2b, 0xf9, 0x62, - 0x5, 0xfb, 0xc, 0x6, 0xfb, 0xfc, 0xfd, 0x15, 0x30, 0xf9, 0x15, 0x5, - 0xfb, 0xa, 0x6, 0xe, 0xf8, 0x3c, 0x2d, 0xa, 0xcb, 0xf9, 0x67, 0x3, - 0xd7, 0x16, 0xea, 0x6, 0xf7, 0xb, 0xf8, 0xf4, 0xf7, 0x99, 0xfc, 0xf4, - 0x5, 0xeb, 0x6, 0xf7, 0x2c, 0xf9, 0x62, 0x4d, 0xa, 0xfb, 0xf, 0xfc, - 0xf5, 0xfb, 0x97, 0xf8, 0xf5, 0x4d, 0xa, 0xe, 0xf8, 0x3c, 0xa0, 0x76, - 0xf9, 0x6d, 0x77, 0xf7, 0xa, 0x76, 0xf7, 0x3, 0x77, 0x12, 0xd7, 0x16, - 0xea, 0x6, 0xf7, 0xd, 0xf8, 0xfc, 0x48, 0xa, 0xf7, 0x95, 0xfc, 0xfc, - 0x5, 0xeb, 0x6, 0xf7, 0x2c, 0xf9, 0x6d, 0x4d, 0xa, 0xfb, 0xf, 0xfc, - 0xfe, 0x4e, 0xa, 0xfb, 0x94, 0xf8, 0xfe, 0x4d, 0xa, 0xf7, 0x19, 0xd8, - 0x15, 0xca, 0x66, 0xa, 0xa4, 0x1b, 0x13, 0x10, 0xa5, 0xa0, 0x83, 0x82, - 0x9e, 0x1f, 0x7f, 0xa3, 0xa0, 0x7e, 0xa4, 0x1b, 0xc6, 0xad, 0xc2, 0xc1, - 0x90, 0x1f, 0x4e, 0x69, 0xa, 0x5e, 0xa, 0x13, 0x30, 0x96, 0x72, 0x6f, - 0x96, 0x6d, 0x1b, 0x46, 0x7a, 0x57, 0x50, 0x7b, 0x1f, 0xe, 0x6c, 0xa, - 0xf8, 0xe6, 0xdc, 0x1, 0xf7, 0x18, 0xef, 0xf8, 0x59, 0xef, 0x3, 0xf7, - 0x21, 0xf7, 0xbb, 0x15, 0xfb, 0x40, 0xf5, 0xfb, 0x22, 0xf7, 0x47, 0xf7, - 0x60, 0xf7, 0x34, 0xf7, 0x54, 0xf7, 0x80, 0xf7, 0x52, 0xfb, 0x1, 0xf7, - 0x1e, 0xfb, 0x47, 0xfb, 0x55, 0xfb, 0x3c, 0xfb, 0x3f, 0xfb, 0xa3, 0x1e, - 0xe5, 0x16, 0xf7, 0x89, 0xf7, 0x28, 0xf7, 0x8, 0xf7, 0xf, 0xf0, 0xec, - 0x30, 0xfb, 0x30, 0xfb, 0x46, 0xfb, 0x2, 0xfb, 0x3d, 0xfb, 0x31, 0x27, - 0x25, 0xdc, 0xf7, 0x2c, 0x1e, 0xe, 0xf9, 0x52, 0x78, 0xdc, 0x46, 0xd0, - 0x46, 0xde, 0xf7, 0x8f, 0xde, 0xf7, 0x7b, 0xdf, 0x46, 0xdc, 0x12, 0xed, - 0xe8, 0x13, 0x3a, 0xf8, 0xa6, 0x84, 0x15, 0xf8, 0x67, 0x6, 0x9d, 0xde, - 0x5, 0xfc, 0x3, 0x6, 0xc2, 0xf7, 0x8f, 0x5, 0xf7, 0xd4, 0x6, 0x9d, - 0xde, 0x5, 0xfb, 0xd4, 0x6, 0xbd, 0xf7, 0x7b, 0x5, 0xf7, 0xdb, 0x6, - 0x9d, 0xdf, 0x5, 0xfc, 0x41, 0x6, 0x78, 0x34, 0x5, 0x13, 0x96, 0xdb, - 0x51, 0x3c, 0x9e, 0x52, 0x1b, 0xfb, 0x66, 0xfb, 0x3a, 0xfb, 0x4b, 0xfb, - 0x93, 0xfb, 0x69, 0xf7, 0xe, 0x22, 0xf7, 0x26, 0xf2, 0xba, 0xb6, 0xa0, - 0xa5, 0x1f, 0x13, 0x56, 0xfb, 0xf3, 0xf7, 0x92, 0x15, 0xf7, 0x2c, 0xf7, - 0x3, 0xf7, 0x61, 0xf7, 0x39, 0xde, 0xdc, 0x4f, 0x25, 0x59, 0x6c, 0xfb, - 0x32, 0x74, 0x50, 0x1e, 0x6d, 0x80, 0x59, 0xfb, 0x1b, 0xfb, 0x21, 0x1b, - 0xfb, 0x23, 0x62, 0xef, 0xf7, 0x1d, 0x1f, 0xe, 0xf8, 0x74, 0x78, 0xdd, - 0xf9, 0x7e, 0x76, 0xf7, 0x21, 0x77, 0x1, 0xf4, 0xf0, 0xf8, 0x9b, 0xf0, - 0x3, 0xf8, 0x51, 0xf9, 0xa8, 0x15, 0xda, 0x6, 0xf7, 0x1d, 0x6d, 0xa, - 0xfb, 0xa, 0x6, 0xfc, 0x4a, 0x28, 0xa, 0xf8, 0x74, 0x78, 0xdd, 0xf9, - 0xc4, 0xbd, 0x1, 0xf4, 0xf0, 0xf7, 0xc4, 0xf2, 0xf7, 0x4, 0xf0, 0x3, - 0xf8, 0x8, 0xf9, 0xa9, 0x15, 0xec, 0x6, 0xe0, 0xe5, 0xb4, 0x31, 0x5, - 0xdd, 0x6, 0x4b, 0xf7, 0x20, 0x5, 0x24, 0x6, 0xfc, 0x29, 0x28, 0xa, - 0x6c, 0xa, 0xf9, 0x74, 0xf2, 0x1, 0x68, 0xa, 0x3, 0xf4, 0xf7, 0xc1, - 0x21, 0xa, 0xf8, 0x1, 0xf8, 0x8a, 0x15, 0xec, 0x6, 0xa2, 0xf2, 0x57, - 0xa, 0xfb, 0x68, 0x24, 0x15, 0xec, 0x6, 0xa1, 0xf2, 0x5, 0x2a, 0x6, - 0xe, 0xf8, 0x74, 0x78, 0xdd, 0xf8, 0xef, 0xdd, 0x1, 0x68, 0xa, 0x3, - 0xf8, 0x94, 0xf9, 0xa9, 0x15, 0xd4, 0x6, 0x4f, 0xf7, 0x20, 0x5, 0xfb, - 0x5, 0x6, 0xfb, 0xc7, 0x28, 0xa, 0xf8, 0x74, 0x8d, 0x76, 0xae, 0xdf, - 0xf8, 0x9b, 0xdf, 0xad, 0x77, 0x1, 0xbb, 0xe0, 0xf8, 0x97, 0xe5, 0x3, - 0xa6, 0x9b, 0x15, 0xba, 0x68, 0xdd, 0xe3, 0x5, 0x67, 0xc3, 0xcd, 0x7a, - 0xcf, 0x1b, 0xf7, 0x77, 0xf7, 0x39, 0xf7, 0x43, 0xf7, 0x65, 0xce, 0x81, - 0xdd, 0x4e, 0xcb, 0x1f, 0xdf, 0xe3, 0x5c, 0xaf, 0x3a, 0x34, 0x5, 0xbe, - 0x3b, 0x33, 0x8d, 0x6f, 0x1b, 0xfb, 0x84, 0xfb, 0x1f, 0xfb, 0x54, 0xfb, - 0x5c, 0x4e, 0x92, 0x3e, 0xc3, 0x49, 0x1f, 0xc8, 0xc8, 0x15, 0x6c, 0xb2, - 0x83, 0xc6, 0xba, 0x1a, 0xf7, 0x3b, 0xf7, 0x1a, 0xf7, 0x1f, 0xf7, 0x35, - 0xc0, 0xc3, 0x81, 0x74, 0xa6, 0x1e, 0xfb, 0xf3, 0xfc, 0x5c, 0x15, 0xf8, - 0x1b, 0xf8, 0x35, 0x5, 0x9e, 0x6e, 0xa4, 0x55, 0x49, 0x1a, 0xfb, 0x2c, - 0xfb, 0x13, 0xfb, 0x26, 0xfb, 0x39, 0x5a, 0x52, 0x8e, 0xa6, 0x66, 0x1e, - 0xe, 0x6c, 0xa, 0xf9, 0x7b, 0xf7, 0x1, 0x8e, 0x77, 0x12, 0x68, 0xa, - 0x13, 0xd8, 0xf7, 0xf9, 0xf9, 0xb9, 0x15, 0xcb, 0x6, 0xa4, 0x90, 0x97, - 0x9c, 0xa4, 0x1b, 0xa7, 0xa0, 0x83, 0x82, 0x9e, 0x1f, 0x7f, 0xa4, 0xa0, - 0x7d, 0xa6, 0x1b, 0xc8, 0xae, 0xc2, 0xc2, 0x90, 0x1f, 0x4d, 0x69, 0xa, - 0x70, 0x1b, 0x13, 0xb8, 0x7b, 0x75, 0x96, 0x96, 0x71, 0x1f, 0x95, 0x73, - 0x6f, 0x95, 0x6e, 0x1b, 0x13, 0xd8, 0x44, 0x79, 0x57, 0x4f, 0x7c, 0x1f, - 0xfb, 0x90, 0xfc, 0x8c, 0x21, 0xa, 0xe, 0x35, 0xa, 0xf7, 0xb6, 0xdc, - 0xf7, 0xa0, 0xda, 0x1, 0xf9, 0x16, 0xea, 0x3, 0xe1, 0x16, 0xeb, 0x6, - 0xc7, 0xf7, 0xb6, 0x5, 0xf7, 0x47, 0x6, 0xf7, 0x32, 0xf7, 0x32, 0xd7, - 0xf7, 0x40, 0xf7, 0x1b, 0x33, 0xb8, 0xfb, 0x7, 0x1f, 0xfb, 0xbf, 0x6, - 0xa3, 0xfb, 0xef, 0x15, 0xc2, 0xf7, 0xa0, 0x5, 0xf7, 0x4c, 0x6, 0xd1, - 0xd5, 0x8a, 0x27, 0xfb, 0x1c, 0xfb, 0x18, 0x6c, 0x2d, 0x1f, 0xe, 0xf8, - 0x74, 0x68, 0x76, 0xcf, 0xd8, 0xf8, 0xcf, 0xd8, 0x1, 0xf7, 0x1c, 0xf0, - 0xf8, 0x7c, 0xf0, 0x3, 0xf8, 0xcd, 0xb7, 0x15, 0xb0, 0x5f, 0xb0, 0x6c, - 0xb1, 0x72, 0xb3, 0xc3, 0x18, 0x7d, 0x95, 0x5e, 0xa6, 0x69, 0xb5, 0x8, - 0xef, 0xd8, 0xc9, 0xf7, 0xf, 0xf7, 0x23, 0x1a, 0xf7, 0x4a, 0xfb, 0x1, - 0xf7, 0x19, 0xfb, 0x49, 0xfb, 0x75, 0xfb, 0x1a, 0xfb, 0x67, 0xfb, 0x60, - 0xfb, 0xb9, 0xf7, 0x7b, 0x7a, 0xcb, 0xb6, 0xb9, 0x95, 0xa1, 0xb7, 0x1e, - 0xfb, 0x24, 0xf7, 0x10, 0x15, 0xac, 0x7a, 0x9f, 0x7c, 0xad, 0x6c, 0x8, - 0x80, 0x6d, 0x6c, 0x86, 0x6c, 0x1b, 0x53, 0xfb, 0x18, 0xbb, 0xf7, 0x4d, - 0xf7, 0x52, 0xf7, 0xa, 0xf7, 0x28, 0xf7, 0x2d, 0xe5, 0xf5, 0x3d, 0xfb, - 0x34, 0x26, 0x60, 0xfb, 0x7, 0x37, 0x49, 0x1f, 0x83, 0x94, 0x76, 0x9f, - 0x6c, 0xad, 0x55, 0xa3, 0x19, 0xe, 0xf8, 0x3c, 0xa0, 0x76, 0xf7, 0xd2, - 0xd8, 0xf7, 0x88, 0xda, 0x1, 0xf9, 0x3d, 0xe7, 0x3, 0xe3, 0x16, 0xeb, - 0x6, 0xcd, 0xf7, 0xd2, 0x5, 0xf7, 0x2, 0x6, 0xf7, 0x10, 0xaf, 0x2f, - 0x2e, 0xaf, 0x1f, 0xbf, 0xfb, 0x19, 0x5, 0xf6, 0x6, 0x54, 0xf7, 0x19, - 0x6d, 0xd3, 0x64, 0xd2, 0x4d, 0xb9, 0x19, 0xbe, 0x92, 0xf7, 0x55, 0xa4, - 0xf7, 0x4f, 0x1a, 0xf7, 0x43, 0xfb, 0x25, 0x8d, 0x30, 0x1e, 0xfb, 0xbf, - 0x6, 0xa8, 0xfb, 0xd7, 0x15, 0xbd, 0xf7, 0x88, 0x5, 0xf7, 0x70, 0x6, - 0xbe, 0xe8, 0x87, 0x2d, 0xfb, 0x27, 0xfb, 0x2a, 0x8c, 0xfb, 0x19, 0x1f, - 0xe, 0xf8, 0x5, 0x78, 0xdb, 0xf8, 0xe8, 0xdb, 0x12, 0xe5, 0xeb, 0x86, - 0xea, 0xf7, 0xaf, 0xee, 0x62, 0xeb, 0x13, 0xe8, 0xe5, 0xf7, 0x7a, 0x15, - 0xfb, 0x48, 0xf7, 0x1c, 0x46, 0xf7, 0x28, 0xf7, 0x43, 0xf7, 0x1, 0xe6, - 0xf7, 0x9, 0xf7, 0xb, 0x36, 0xb7, 0xfb, 0x21, 0xc8, 0x1e, 0x13, 0xd4, - 0xfb, 0x0, 0xba, 0x5b, 0x9d, 0xca, 0x1a, 0xe8, 0xf7, 0x4, 0xa2, 0xba, - 0xe1, 0xeb, 0x53, 0x2f, 0x1e, 0xeb, 0x92, 0x5, 0xe0, 0x49, 0xf7, 0x1c, - 0xfb, 0x64, 0xfb, 0x2a, 0xfb, 0x0, 0x41, 0xfb, 0xe, 0xfb, 0xe, 0xf7, - 0x0, 0x5e, 0xf7, 0x0, 0x5c, 0x1e, 0x13, 0xe8, 0xf5, 0x5d, 0xc3, 0x70, - 0x4a, 0x1a, 0x4a, 0x4e, 0x4c, 0xfb, 0xd, 0xfb, 0x40, 0x78, 0xe6, 0xe1, - 0x1e, 0xe, 0xf8, 0x5, 0x78, 0xdd, 0xf8, 0xf1, 0xdd, 0xb2, 0xf7, 0x20, - 0x12, 0xe5, 0xec, 0x86, 0xeb, 0xf7, 0xb1, 0xef, 0x13, 0xf4, 0xe5, 0xf7, - 0x7f, 0x15, 0xfb, 0x4c, 0xf7, 0x1d, 0x45, 0xf7, 0x29, 0xf7, 0x45, 0xf7, - 0x2, 0xe6, 0xf7, 0xc, 0xf7, 0xf, 0x35, 0xb6, 0xfb, 0x22, 0xcb, 0x1e, - 0x13, 0xec, 0xfb, 0x1, 0xbb, 0x5b, 0x9c, 0xcc, 0x1a, 0xea, 0xf7, 0x3, - 0xa0, 0xbc, 0xe1, 0xe7, 0x62, 0xfb, 0x0, 0x1e, 0xec, 0x93, 0x5, 0xeb, - 0x4e, 0xf7, 0x13, 0xfb, 0x66, 0xfb, 0x2b, 0xfb, 0x1, 0x41, 0xfb, 0x10, - 0xfb, 0x11, 0xf7, 0x1, 0x5d, 0xf7, 0x0, 0x5b, 0x1e, 0xf6, 0x5e, 0xc4, - 0x6e, 0x48, 0x1a, 0x4a, 0x4e, 0x4b, 0xfb, 0xf, 0x1e, 0x13, 0xf4, 0xfb, - 0x20, 0x5a, 0xe0, 0xea, 0x88, 0x1f, 0xf7, 0x70, 0xf8, 0xb6, 0x15, 0xef, - 0x6, 0xf7, 0x1b, 0xf7, 0x20, 0x5, 0x2d, 0x6, 0x38, 0x31, 0x63, 0xe5, - 0x5, 0x39, 0x6, 0xe, 0xf7, 0xcd, 0xa0, 0x76, 0xf9, 0x11, 0xdc, 0x1, - 0xf7, 0x94, 0x16, 0xee, 0x6, 0xf7, 0x1c, 0xf9, 0x11, 0x5, 0xf7, 0x85, - 0x6b, 0xa, 0xfc, 0xdc, 0x6, 0x79, 0x3a, 0x5, 0xf7, 0x89, 0x6, 0xe, - 0x35, 0xa, 0xf7, 0x26, 0xdc, 0xf7, 0xa0, 0xda, 0xf7, 0x24, 0x77, 0x1, - 0xf8, 0xfd, 0xea, 0x3, 0xe1, 0x16, 0xeb, 0x6, 0xaa, 0xf7, 0x26, 0x5, - 0xf7, 0x47, 0x6, 0xf7, 0x33, 0xf7, 0x35, 0xcd, 0xf7, 0x41, 0xf7, 0x1c, - 0x30, 0xc0, 0xfb, 0x7, 0x1f, 0xfb, 0x61, 0x6, 0xaa, 0xf7, 0x24, 0x50, - 0xa, 0x85, 0xfc, 0x7f, 0x15, 0xc2, 0xf7, 0xa0, 0x5, 0xf7, 0x4d, 0x6, - 0xd1, 0xd8, 0x82, 0x26, 0xfb, 0x1d, 0xfb, 0x1b, 0x76, 0x2c, 0x1f, 0xe, - 0xf8, 0x3c, 0x78, 0xdd, 0xf9, 0x23, 0x42, 0xa, 0xf7, 0x77, 0xf9, 0x62, - 0x15, 0x8f, 0xfb, 0x0, 0xfc, 0x7b, 0x65, 0xfb, 0x22, 0xf7, 0x9, 0x45, - 0xf7, 0x27, 0xf7, 0x91, 0xbb, 0xf7, 0x7a, 0xde, 0x9d, 0x1f, 0xe6, 0xf8, - 0x3c, 0x57, 0xa, 0x30, 0xfc, 0x3c, 0x5, 0xfb, 0x10, 0x72, 0x5c, 0x20, - 0xfb, 0x2e, 0x1b, 0x39, 0x3b, 0xb7, 0xe1, 0x1f, 0xf4, 0xf8, 0xa1, 0x5, - 0xe, 0xf8, 0x3c, 0x78, 0xdf, 0xf9, 0x31, 0x77, 0xe9, 0x76, 0xf7, 0x22, - 0x42, 0xa, 0xf8, 0x49, 0xf9, 0xa7, 0x15, 0xd5, 0x6, 0xf7, 0x19, 0xf7, - 0x22, 0x5, 0xfb, 0x7, 0x6, 0xfb, 0xc1, 0xfb, 0x57, 0x15, 0x8b, 0x22, - 0xfc, 0x85, 0x64, 0x1a, 0xfb, 0x25, 0xf7, 0xa, 0x43, 0xf7, 0x28, 0xf7, - 0x90, 0xbb, 0xf7, 0x7f, 0xe1, 0x9c, 0x1e, 0xe6, 0xf8, 0x44, 0x57, 0xa, - 0x32, 0xfc, 0x44, 0x5, 0xfb, 0xb, 0x75, 0x48, 0xfb, 0xa, 0xfb, 0x1e, - 0x1b, 0x3a, 0x39, 0xb8, 0xe3, 0x1f, 0xf4, 0xf8, 0xac, 0x5, 0xe, 0xf8, - 0x3c, 0x78, 0xdf, 0xf9, 0x32, 0x42, 0xa, 0xf8, 0x2, 0xf9, 0xa8, 0x15, - 0xe8, 0x6, 0xdd, 0xe5, 0xb3, 0x31, 0x5, 0xdb, 0x6, 0x4d, 0xf7, 0x21, - 0x47, 0xa, 0xfb, 0xa3, 0xfb, 0x56, 0x2c, 0xa, 0xf8, 0x3c, 0x78, 0xde, - 0xf9, 0x2b, 0x77, 0xf7, 0x56, 0x42, 0xa, 0xf8, 0xcb, 0xf9, 0xb2, 0x15, - 0xe9, 0x6, 0xa0, 0xf2, 0x5, 0x2d, 0x6, 0xfb, 0x62, 0x24, 0x15, 0xe9, - 0x6, 0xa1, 0xf2, 0x5, 0x2d, 0x6, 0xfb, 0x44, 0xfb, 0x3a, 0x2c, 0xa, - 0xf8, 0x3c, 0x78, 0xdf, 0xf9, 0x33, 0x77, 0xd4, 0xf7, 0x20, 0x1, 0xf7, - 0xf, 0xeb, 0x3, 0xf7, 0x77, 0xf9, 0x74, 0x15, 0x8b, 0x23, 0xfc, 0x87, - 0x64, 0x1a, 0xfb, 0x25, 0xf7, 0x9, 0x43, 0xf7, 0x27, 0xf7, 0x92, 0xbb, - 0xf7, 0x80, 0xe0, 0x9d, 0x1e, 0xe5, 0xf8, 0x46, 0x57, 0xa, 0x33, 0xfc, - 0x46, 0x5, 0xfb, 0xb, 0x74, 0x48, 0xfb, 0xa, 0xfb, 0x1f, 0x1b, 0x39, - 0x3a, 0xb8, 0xe3, 0x1f, 0xf4, 0xf8, 0xae, 0x5, 0xf7, 0x4e, 0xc0, 0x15, - 0xd2, 0x6, 0x50, 0xf7, 0x20, 0x5, 0xfb, 0x2, 0x6, 0xe, 0xf8, 0x5, - 0x2d, 0xa, 0xf7, 0xcc, 0x16, 0xf1, 0x6, 0xf8, 0x16, 0xf9, 0x62, 0x5, - 0x28, 0x6, 0xfb, 0xd5, 0xfc, 0xfd, 0xfb, 0x7, 0xf8, 0xfd, 0x3d, 0xa, - 0xe, 0xf9, 0x1a, 0x2d, 0xa, 0xf7, 0x52, 0xdf, 0xf7, 0xe6, 0xd9, 0xf7, - 0xbc, 0xea, 0x3, 0xf7, 0x68, 0x16, 0xec, 0x6, 0xf7, 0xb3, 0xf8, 0xd0, - 0x48, 0xa, 0xa7, 0xfc, 0xd0, 0x5, 0xf0, 0x6, 0xf7, 0xf6, 0xf9, 0x62, - 0x4d, 0xa, 0xfb, 0xac, 0xfc, 0xe5, 0x4e, 0xa, 0x70, 0xf8, 0xe5, 0x5, - 0x2a, 0x6, 0xfb, 0xb9, 0xfc, 0xde, 0x89, 0x8d, 0x76, 0xf8, 0xdc, 0x4d, - 0xa, 0xe, 0xf8, 0x5, 0x2d, 0xa, 0x9e, 0x16, 0xf7, 0xe, 0x6, 0xf7, - 0x92, 0xf7, 0xb4, 0xf7, 0x2b, 0xfb, 0xb4, 0x5, 0xef, 0x6, 0xfb, 0x51, - 0xf7, 0xee, 0xf7, 0xe1, 0xf8, 0x8, 0x5, 0xfb, 0xc, 0x6, 0xfb, 0x98, - 0xfb, 0xbc, 0xfb, 0x30, 0xf7, 0xbc, 0x5, 0x26, 0x6, 0xf7, 0x57, 0xfb, - 0xf8, 0x5, 0xe, 0xf8, 0x5, 0x2d, 0xa, 0xf7, 0x3b, 0xef, 0xf8, 0x40, - 0xf7, 0x3, 0x3, 0xf7, 0xda, 0x16, 0xe8, 0x6, 0xc2, 0xf7, 0xa1, 0xf7, - 0xe0, 0xf8, 0x55, 0x51, 0xa, 0xfb, 0xf9, 0xfb, 0x3d, 0xf7, 0xf9, 0x47, - 0xa, 0xf7, 0x6b, 0xfc, 0x4d, 0x5, 0xe, 0x35, 0xa, 0xfa, 0x35, 0x77, - 0x1, 0xf7, 0xda, 0x16, 0xe7, 0x6, 0xc3, 0xf7, 0xaa, 0xf7, 0xe0, 0xf8, - 0x5f, 0x51, 0xa, 0xfc, 0x0, 0xfb, 0x3d, 0xf8, 0x0, 0x47, 0xa, 0xf7, - 0x6a, 0xfc, 0x57, 0x5, 0xb1, 0xf8, 0x8c, 0x15, 0xd2, 0x6, 0xf7, 0x13, - 0x6f, 0xa, 0xfb, 0x1, 0x6, 0xe, 0x35, 0xa, 0xf9, 0x6d, 0x77, 0xe5, - 0xf1, 0x1, 0xf7, 0xda, 0x16, 0xe7, 0x6, 0xc3, 0xf7, 0xa6, 0xf7, 0xe0, - 0xf8, 0x5b, 0x51, 0xa, 0xfb, 0xfd, 0xfb, 0x3d, 0xf7, 0xfd, 0x47, 0xa, - 0xf7, 0x6a, 0xfc, 0x5b, 0x5, 0xf7, 0x36, 0xf8, 0xa1, 0x15, 0xe5, 0x6, - 0x9f, 0xf1, 0x3f, 0xa, 0xfb, 0x57, 0x25, 0x15, 0xe4, 0x6, 0xa0, 0xf1, - 0x3e, 0xa, 0xf7, 0xcd, 0x8b, 0xdc, 0xf8, 0xc0, 0xdc, 0x1, 0x84, 0x16, - 0xf9, 0x2, 0x6, 0x9f, 0xdc, 0x5, 0xfc, 0x7f, 0x6, 0xf8, 0xe0, 0xf8, - 0xc6, 0x94, 0xd6, 0x5, 0xfc, 0xd8, 0x6, 0x77, 0x3a, 0xf8, 0x5d, 0x8c, - 0xfc, 0xe6, 0xfc, 0xca, 0x5, 0xe, 0xf7, 0xcd, 0x8b, 0xdf, 0xf9, 0x56, - 0xf7, 0x1f, 0x1, 0x84, 0x16, 0xf8, 0xf8, 0x6, 0x9f, 0xdf, 0x5, 0xfc, - 0x75, 0x6, 0xf8, 0xe0, 0xf8, 0xd6, 0x94, 0xd8, 0x5, 0xfc, 0xd8, 0x6, - 0x77, 0x37, 0xf8, 0x57, 0x8a, 0xfc, 0xe0, 0xfc, 0xd8, 0x5, 0xf8, 0x24, - 0xf9, 0x60, 0x15, 0xf7, 0x6, 0x6, 0xf7, 0x2d, 0x6f, 0xa, 0x20, 0x6, - 0x2d, 0x31, 0x5d, 0xe5, 0x45, 0xa, 0xe, 0x7c, 0xd1, 0x66, 0x76, 0xf7, - 0x8b, 0xcd, 0xf7, 0x2e, 0xd5, 0x12, 0xc8, 0xe7, 0x13, 0x78, 0xf8, 0x3c, - 0x88, 0x15, 0xe8, 0x6, 0x85, 0xa7, 0x87, 0x9f, 0xa3, 0x1a, 0xae, 0x91, - 0xad, 0x92, 0xad, 0x1e, 0xaa, 0xf7, 0x17, 0x5, 0x91, 0xa4, 0x8d, 0xa4, - 0xa2, 0x1a, 0xe7, 0x51, 0xd1, 0xfb, 0x25, 0x40, 0xfb, 0x25, 0x60, 0xfb, - 0xb, 0x73, 0x1e, 0xe9, 0x83, 0x5, 0xd8, 0xa7, 0xc6, 0x9e, 0xc6, 0x1b, - 0x13, 0xb8, 0xc1, 0xe3, 0x7b, 0xfb, 0xb, 0x6a, 0x1f, 0x65, 0x7d, 0x64, - 0x89, 0x3d, 0x88, 0x8, 0x4d, 0x89, 0xfb, 0x4b, 0x83, 0xfb, 0x36, 0x1a, - 0x29, 0xd6, 0x54, 0xe6, 0x1e, 0xe8, 0xca, 0xc0, 0xa5, 0xa9, 0x1f, 0x8c, - 0x7f, 0x8d, 0x6e, 0x93, 0x71, 0x8, 0xa2, 0xf7, 0xa1, 0x15, 0x82, 0x56, - 0x80, 0x5f, 0x71, 0x66, 0x8, 0x5a, 0x69, 0x53, 0x6f, 0x53, 0x1b, 0x3c, - 0x74, 0xb7, 0xb2, 0xe0, 0xe8, 0x9a, 0xc7, 0x91, 0x1f, 0xdd, 0x92, 0xa4, - 0x8d, 0xad, 0x98, 0x8, 0xe, 0x4a, 0xa, 0xf8, 0x39, 0x77, 0x12, 0xc8, - 0xea, 0xf7, 0xe1, 0xed, 0x13, 0x7c, 0xf7, 0xcf, 0xf8, 0xe9, 0x15, 0xda, - 0x6, 0xf7, 0x21, 0xf7, 0x1d, 0x5, 0xfb, 0xd, 0x6, 0x90, 0xfd, 0x75, - 0x22, 0xa, 0xe, 0x4a, 0xa, 0xf7, 0xb0, 0xf7, 0x1d, 0x12, 0x13, 0x70, - 0xf7, 0x7b, 0xf8, 0xe9, 0x15, 0xe8, 0x6, 0xdd, 0xe2, 0xb3, 0x34, 0x5, - 0xdb, 0x6, 0x4d, 0xf7, 0x1d, 0x47, 0xa, 0xc2, 0xfd, 0x75, 0x20, 0xa, - 0x13, 0xb0, 0x2b, 0xa, 0xae, 0xf8, 0xfa, 0x76, 0xf7, 0x21, 0x77, 0x1, - 0xf7, 0x8c, 0xf8, 0xe5, 0x15, 0xdd, 0x6, 0xf7, 0x25, 0x6d, 0xa, 0xfb, - 0x11, 0x6, 0xe, 0x7c, 0xd0, 0x67, 0x76, 0xf7, 0x8a, 0xcd, 0xf7, 0xbe, - 0xee, 0x12, 0xc8, 0xe5, 0xf7, 0xcf, 0xe8, 0x13, 0x7c, 0xf8, 0x44, 0xf8, - 0xf3, 0x15, 0xe9, 0x6, 0xa1, 0xee, 0x4d, 0xa, 0xfb, 0x62, 0x28, 0x15, - 0xea, 0x6, 0xa0, 0xee, 0x5, 0x2d, 0x6, 0xf7, 0x2a, 0xfd, 0x59, 0x22, - 0xa, 0xe, 0xf8, 0xe3, 0x7c, 0xd1, 0xf7, 0x4c, 0xcf, 0xf7, 0x35, 0xd0, - 0x8c, 0x77, 0x12, 0xc8, 0xe6, 0x13, 0xe8, 0xf8, 0x47, 0xf1, 0x15, 0x44, - 0xa8, 0xe3, 0x5d, 0xd6, 0x1b, 0xf7, 0x39, 0xcc, 0xf7, 0x1b, 0xbb, 0xa2, - 0x1f, 0x2f, 0x93, 0x5, 0x33, 0x5f, 0x4c, 0x6e, 0x57, 0x1b, 0x44, 0x50, - 0xcd, 0xf7, 0x6, 0x99, 0x1f, 0xf8, 0x19, 0x6, 0x8d, 0x9a, 0x90, 0xad, - 0xa9, 0x1a, 0xf7, 0x7, 0x46, 0xf3, 0xfb, 0x20, 0x49, 0x4b, 0x72, 0x5c, - 0x5d, 0x1e, 0x13, 0xd8, 0x9f, 0x7c, 0x5f, 0xc0, 0xfb, 0x0, 0x1b, 0xfb, - 0x2, 0x2c, 0x5c, 0xfb, 0x7, 0x65, 0x1f, 0xe4, 0x84, 0x5, 0x13, 0xe8, - 0xa6, 0x97, 0xa7, 0xd3, 0xf7, 0x4, 0x1b, 0xd7, 0xb9, 0x51, 0x38, 0x65, - 0x1f, 0x30, 0x76, 0xfb, 0xe, 0x89, 0x58, 0x7c, 0x8, 0x2f, 0x6f, 0x75, - 0x45, 0x57, 0x1a, 0x48, 0xb2, 0x34, 0xf7, 0x16, 0xf6, 0xc0, 0xc4, 0xc7, - 0xb8, 0x1e, 0x81, 0xf7, 0x30, 0x15, 0x54, 0x82, 0x67, 0xfb, 0x28, 0xfb, - 0x14, 0x1b, 0x42, 0x70, 0xb6, 0xb4, 0xde, 0xdc, 0x96, 0xc9, 0x91, 0x1f, - 0xd8, 0x92, 0xa3, 0x91, 0xa8, 0x91, 0x8, 0xf4, 0xbc, 0x15, 0xec, 0xa6, - 0xc8, 0xcb, 0xe1, 0x1b, 0xc8, 0xd8, 0x60, 0xfb, 0xa, 0x78, 0x1f, 0xe, - 0x4a, 0xa, 0xf7, 0xb0, 0xf7, 0x1d, 0x12, 0xc8, 0xe5, 0xf7, 0xcf, 0xe8, - 0x13, 0x7c, 0xf8, 0x37, 0x88, 0x22, 0xa, 0x4a, 0xf7, 0xdc, 0x56, 0xa, - 0xf7, 0x1d, 0x5, 0xfb, 0x2, 0x6, 0xe, 0xf8, 0x5, 0x7e, 0xd9, 0x50, - 0x76, 0xf9, 0x2b, 0xd1, 0x12, 0xd8, 0xe2, 0xcb, 0xe3, 0xf7, 0x30, 0xe4, - 0x13, 0xbc, 0xf7, 0x9e, 0xf8, 0x34, 0x15, 0x47, 0x6e, 0xfb, 0xd, 0x52, - 0xfb, 0x26, 0x1a, 0xfb, 0x7, 0xe3, 0x39, 0xf7, 0x14, 0xea, 0xbf, 0xb4, - 0xb6, 0xbf, 0x1e, 0x13, 0x7c, 0xa9, 0x63, 0xaf, 0x6b, 0x9c, 0x7d, 0xcd, - 0xbf, 0x18, 0x74, 0xa5, 0x6c, 0xac, 0x6f, 0xb0, 0xa6, 0xaa, 0xaf, 0xbb, - 0xa4, 0xbf, 0x40, 0xae, 0x18, 0x6a, 0x51, 0x76, 0x76, 0x7b, 0x79, 0x57, - 0xcc, 0x56, 0xea, 0x7c, 0xa6, 0x8, 0xdc, 0xb5, 0xed, 0xc3, 0xeb, 0x1a, - 0xca, 0x58, 0xd3, 0x23, 0xfb, 0x6, 0x4b, 0x2d, 0x3e, 0x58, 0x9b, 0x6d, - 0x9b, 0x67, 0x1e, 0xf7, 0x4a, 0xfb, 0xb9, 0x15, 0x13, 0xbc, 0x55, 0x57, - 0x59, 0x79, 0x60, 0x1b, 0x46, 0x4b, 0xb6, 0xd7, 0xe7, 0xe1, 0xbb, 0xbe, - 0xa3, 0x1f, 0xb1, 0x44, 0xcc, 0x31, 0xb1, 0x59, 0x8, 0x2e, 0xf7, 0xd2, - 0x15, 0x6d, 0xc4, 0x88, 0xa6, 0x93, 0x1a, 0xb9, 0xb2, 0xc2, 0xbd, 0xb1, - 0xa8, 0x6d, 0x66, 0x4a, 0x2d, 0x5c, 0x6e, 0x7d, 0x1e, 0xe, 0x7c, 0xd0, - 0x67, 0x76, 0xf7, 0x88, 0xcc, 0xf7, 0xa3, 0xb1, 0xf3, 0xb0, 0x12, 0xc8, - 0xe5, 0xf7, 0x22, 0xb0, 0xf6, 0xb1, 0x13, 0x7f, 0xf7, 0xb9, 0xf9, 0x2f, - 0x15, 0x59, 0xb5, 0x63, 0xbc, 0xbc, 0xb5, 0xb3, 0xbd, 0xbe, 0x62, 0xb1, - 0x59, 0x59, 0x62, 0x65, 0x58, 0x1e, 0xb0, 0x8a, 0x15, 0xa8, 0xa3, 0xa3, - 0xa9, 0xa8, 0xa3, 0x74, 0x6d, 0x6e, 0x73, 0x75, 0x6e, 0x6e, 0x72, 0xa1, - 0xa8, 0x1e, 0xe4, 0xfd, 0x31, 0x20, 0xa, 0x13, 0xbf, 0x2b, 0xa, 0xf7, - 0x3f, 0xf7, 0xb1, 0x76, 0xf8, 0x3c, 0x77, 0x1, 0xb5, 0xf7, 0x9c, 0x15, - 0xec, 0x6, 0xf7, 0x2a, 0xf7, 0xda, 0xf7, 0x2e, 0xfb, 0xda, 0x5, 0xeb, - 0x6, 0xfb, 0x63, 0xf8, 0x3c, 0x5, 0x37, 0x6, 0xe, 0xf7, 0xb2, 0xf7, - 0x49, 0xdf, 0x4b, 0x76, 0xc7, 0xe0, 0x8c, 0x77, 0x12, 0x13, 0x60, 0xf7, - 0x3, 0xf7, 0x48, 0x15, 0xa6, 0xa8, 0xaf, 0xac, 0xc2, 0x1b, 0xb6, 0xac, - 0x80, 0x7f, 0xa9, 0x1f, 0x13, 0x90, 0x7a, 0xb3, 0xae, 0x78, 0xb4, 0x1b, - 0xca, 0xb0, 0xa5, 0xa4, 0xa6, 0x1f, 0xe9, 0x7, 0x82, 0x82, 0x59, 0x57, - 0x4f, 0x1b, 0x60, 0x65, 0x9d, 0x9c, 0x63, 0x1f, 0x13, 0x60, 0x98, 0x6b, - 0x6a, 0x97, 0x66, 0x1b, 0x64, 0x58, 0x7e, 0x62, 0x66, 0x1f, 0xe, 0xe6, - 0xf8, 0x58, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0xf7, 0xb6, 0xc5, 0x3, 0xf7, - 0x96, 0xf8, 0x43, 0x15, 0xc8, 0xee, 0xcb, 0x28, 0xc3, 0xb3, 0x3a, 0xe2, - 0xf7, 0x9, 0xa4, 0x75, 0xcd, 0xfb, 0x2, 0x5f, 0x95, 0xf7, 0x5, 0x47, - 0x8a, 0x95, 0xfb, 0x5, 0xfb, 0x1, 0xb7, 0x76, 0x49, 0xf7, 0x7, 0x73, - 0x3d, 0x33, 0x5, 0xe, 0xf9, 0xc6, 0x61, 0xcb, 0x4b, 0xf7, 0x56, 0x81, - 0xcc, 0xf7, 0xe9, 0xca, 0xeb, 0xcb, 0x12, 0xf7, 0x81, 0xca, 0xf2, 0xdb, - 0xf8, 0x7f, 0xcb, 0x13, 0xbf, 0xf9, 0x49, 0xf7, 0x6a, 0x15, 0x70, 0x8e, - 0x90, 0x5e, 0xd8, 0x1b, 0xf7, 0x12, 0xf7, 0x1a, 0xf7, 0x23, 0xf7, 0x3a, - 0xf7, 0x3c, 0xfb, 0x12, 0xf7, 0x3f, 0xfb, 0x87, 0xfb, 0xdf, 0x26, 0xfb, - 0xa6, 0xfb, 0x3e, 0xfb, 0x66, 0xf7, 0x19, 0xfb, 0x46, 0xf7, 0xc6, 0x1f, - 0x13, 0x5f, 0xf7, 0xaa, 0xea, 0xf7, 0x3d, 0xa4, 0x97, 0x1f, 0x3d, 0x6, - 0x13, 0xbf, 0x5f, 0x6d, 0x30, 0x35, 0xfb, 0x4c, 0x1b, 0xfb, 0x5e, 0xfb, - 0x44, 0xe0, 0xf7, 0x83, 0xf7, 0x63, 0xf7, 0x27, 0xf7, 0x41, 0xf7, 0x6d, - 0xf7, 0x3e, 0xf7, 0x20, 0xfb, 0x4, 0xfb, 0x37, 0xfb, 0x2a, 0xfb, 0xd, - 0x33, 0x5d, 0x1f, 0x67, 0x83, 0x94, 0xca, 0x94, 0xb4, 0xc9, 0xf7, 0xb6, - 0x18, 0x3e, 0x6, 0x7c, 0x48, 0x5, 0xd5, 0x5e, 0x4c, 0x90, 0x73, 0x1b, - 0xfb, 0xc, 0x23, 0xfb, 0x26, 0xfb, 0x1a, 0x26, 0xca, 0x33, 0xe9, 0xc8, - 0xbe, 0xbb, 0xa3, 0xa0, 0x1f, 0xfb, 0x66, 0xf7, 0x9, 0x15, 0xd9, 0xbf, - 0xf7, 0x1f, 0xec, 0xbb, 0xc1, 0x6b, 0x2d, 0xfb, 0x6, 0x39, 0x26, 0x40, - 0x5d, 0x5b, 0xb3, 0xdf, 0x1e, 0xe, 0x7c, 0xd0, 0x67, 0x76, 0xf7, 0x89, - 0xcd, 0xf0, 0xd5, 0xf7, 0x83, 0x77, 0x12, 0xc8, 0xea, 0xf7, 0xe1, 0xee, - 0x13, 0x7e, 0xf7, 0x7e, 0xf8, 0xf7, 0x15, 0xcd, 0x6, 0xa4, 0x91, 0x97, - 0x9c, 0xa5, 0x1b, 0xa5, 0xa4, 0x82, 0x81, 0xa2, 0x1f, 0x7f, 0xa6, 0xa3, - 0x7f, 0x9e, 0x1b, 0xca, 0xaf, 0xc2, 0xc1, 0x90, 0x1f, 0x4b, 0x6, 0x7d, - 0x87, 0x84, 0x72, 0x70, 0x1b, 0x7c, 0x77, 0x95, 0x95, 0x74, 0x1f, 0x96, - 0x72, 0x6e, 0x96, 0x67, 0x1b, 0x42, 0x79, 0x57, 0x50, 0x7a, 0x1f, 0xf7, - 0x4d, 0xfc, 0xfa, 0x20, 0xa, 0x13, 0xae, 0x2b, 0xa, 0x7c, 0xd3, 0x64, - 0x76, 0xf8, 0x61, 0xd4, 0xf7, 0x4f, 0x77, 0x12, 0xf8, 0x80, 0xe7, 0x13, - 0x78, 0xc5, 0x88, 0x15, 0xdd, 0x6, 0x9f, 0xee, 0x48, 0xa, 0x13, 0xb8, - 0x4a, 0x9e, 0xce, 0x5d, 0xd3, 0x1b, 0xf7, 0x13, 0xf7, 0x1d, 0xf7, 0x19, - 0xf7, 0x5a, 0xf7, 0x5a, 0xfb, 0x20, 0x9c, 0x66, 0x4c, 0x5d, 0x6e, 0x63, - 0x5d, 0x1f, 0xc2, 0xf7, 0x94, 0x3d, 0xa, 0x13, 0x78, 0x77, 0xfc, 0x8e, - 0x15, 0xdd, 0xcd, 0xf7, 0x38, 0xf7, 0xa, 0xea, 0x9d, 0x29, 0x5f, 0x1e, - 0x13, 0xb8, 0x42, 0x60, 0xfb, 0x4e, 0xfb, 0x1d, 0x6a, 0x37, 0x98, 0xf7, - 0x22, 0x1e, 0xe, 0x77, 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xf7, 0x20, - 0xf7, 0x5e, 0x3, 0xf7, 0x90, 0x78, 0x15, 0xe5, 0x6, 0xfb, 0x4, 0xf9, - 0x88, 0x3e, 0xa, 0x65, 0xfb, 0x64, 0x76, 0xfa, 0x5a, 0x77, 0x1, 0xd5, - 0xf7, 0x74, 0x3, 0xd5, 0xfb, 0x79, 0x15, 0xd7, 0x6, 0xf7, 0x28, 0xfa, - 0x5a, 0x5, 0x3f, 0x6, 0xe, 0xaf, 0xfb, 0x58, 0xd5, 0xf7, 0xee, 0xd9, - 0xf7, 0xed, 0xd5, 0x1, 0xe7, 0xf7, 0xf5, 0x3, 0xe7, 0xf7, 0x74, 0x15, - 0xeb, 0x82, 0x31, 0x2c, 0x7e, 0x1f, 0xfb, 0x26, 0x76, 0x89, 0x32, 0xf7, - 0x3c, 0x1b, 0x96, 0xd5, 0x5, 0x29, 0x8b, 0x94, 0xf7, 0x2c, 0xa3, 0x1f, - 0x9b, 0xf7, 0x6, 0x85, 0xd7, 0x3c, 0xad, 0xf6, 0xbb, 0x90, 0x9f, 0xa3, - 0xf7, 0x44, 0x8, 0xe3, 0x98, 0xa3, 0xbf, 0xdd, 0x1b, 0x96, 0xd5, 0x5, - 0xfb, 0x36, 0x72, 0x45, 0xfb, 0x24, 0x73, 0x1f, 0x2b, 0x7b, 0x79, 0xfb, - 0x1, 0x2a, 0x1b, 0xe, 0xaf, 0xfb, 0x58, 0xd5, 0xf7, 0xee, 0xd9, 0xf8, - 0x7, 0xd5, 0x1, 0x8b, 0xf7, 0xf6, 0x3, 0x96, 0xfb, 0xe, 0x15, 0x80, - 0x41, 0x5, 0xf7, 0x24, 0xb9, 0xd7, 0xf7, 0x13, 0x9f, 0x1f, 0xea, 0x9a, - 0xa2, 0xf7, 0xe, 0xe9, 0x1b, 0x97, 0xd9, 0x5, 0x2d, 0x91, 0xdd, 0xea, - 0x99, 0x1f, 0xf7, 0x28, 0xa1, 0x89, 0xea, 0xfb, 0x38, 0x1b, 0x80, 0x41, - 0x5, 0xee, 0x89, 0x7c, 0xfb, 0x2e, 0x74, 0x1f, 0x7a, 0xfb, 0x6, 0x92, - 0x48, 0xd9, 0x68, 0xfb, 0x0, 0x5b, 0x86, 0x6b, 0x71, 0xfb, 0x44, 0x8, - 0x33, 0x7e, 0x71, 0x62, 0x3d, 0x1b, 0xe, 0x5f, 0xa, 0xa0, 0xf8, 0x12, - 0x3, 0xf7, 0xf, 0xfb, 0x14, 0x15, 0xf7, 0x33, 0xf9, 0xa2, 0x5, 0xf6, - 0x6, 0x99, 0xcf, 0x5, 0xfb, 0x59, 0x6, 0xfb, 0x4d, 0xfe, 0x2a, 0x5, - 0xf7, 0x57, 0x6, 0x9a, 0xcf, 0x5, 0xe, 0x5f, 0xa, 0x7d, 0xf8, 0x12, - 0x3, 0xfb, 0x14, 0x4, 0x7d, 0x47, 0x5, 0xf7, 0x56, 0x6, 0xf7, 0x50, - 0xfa, 0x2a, 0x5, 0xfb, 0x54, 0x6, 0x7c, 0x47, 0x5, 0xf5, 0x6, 0xfb, - 0x36, 0xfd, 0xa2, 0x5, 0xe, 0xae, 0xf8, 0xe7, 0xca, 0x1, 0xf7, 0x3b, - 0xc8, 0x3, 0xf7, 0x3b, 0xf9, 0x6f, 0x15, 0x42, 0x8e, 0xb9, 0x4c, 0xe5, - 0x1b, 0xf7, 0x2, 0xb9, 0xe2, 0xbc, 0x99, 0x1f, 0x4e, 0x6, 0x73, 0x81, - 0x6f, 0x5a, 0x47, 0x1b, 0x53, 0x78, 0xa9, 0xb6, 0x85, 0x1f, 0xe, 0x65, - 0x8d, 0x76, 0xf9, 0x88, 0x77, 0x1, 0xf7, 0x4b, 0xf8, 0x3f, 0x15, 0xd8, - 0x6, 0xcb, 0xf7, 0xca, 0x5, 0x3e, 0x6, 0xfb, 0x31, 0xfd, 0x88, 0x15, - 0xd8, 0x6, 0xcb, 0xf7, 0xc9, 0x5, 0x3e, 0x6, 0xe, 0xbf, 0xf7, 0x73, - 0x76, 0xf7, 0xcf, 0x77, 0x1, 0xe6, 0xf7, 0xfd, 0x15, 0x34, 0xd3, 0x43, - 0xe4, 0xe3, 0xd4, 0xd3, 0xe2, 0xe1, 0x42, 0xd1, 0x33, 0x32, 0x43, 0x45, - 0x35, 0x1e, 0xe, 0xf7, 0x5e, 0x7c, 0xd1, 0xf7, 0xc5, 0xf7, 0x46, 0x41, - 0xd5, 0x1, 0xd5, 0xea, 0xf7, 0xb8, 0xe7, 0x3, 0xf8, 0x3e, 0xf7, 0x52, - 0x15, 0x54, 0x78, 0x5c, 0x3b, 0x36, 0x1b, 0x72, 0x3a, 0x98, 0xf7, 0x12, - 0xbf, 0xa0, 0xf7, 0x6e, 0xf7, 0x36, 0xa6, 0xdd, 0x84, 0x28, 0x1f, 0xe7, - 0x90, 0x5, 0xf7, 0x1d, 0xfb, 0x4, 0xb1, 0x3b, 0xfb, 0x6d, 0x45, 0xfb, - 0x66, 0xfb, 0x1a, 0xfb, 0x26, 0xe7, 0x4c, 0xf7, 0x0, 0xf3, 0xe8, 0xc6, - 0xf7, 0x1d, 0xbb, 0x1e, 0xe, 0x53, 0xa, 0xf7, 0x83, 0xf8, 0xe5, 0x15, - 0xed, 0x6, 0xf7, 0x17, 0xf7, 0x21, 0x3d, 0xa, 0x3a, 0x31, 0x64, 0xe5, - 0x5, 0x3c, 0x6, 0xe, 0xf7, 0x5e, 0xfb, 0x60, 0x76, 0xf7, 0x58, 0xd1, - 0xf7, 0xce, 0xf7, 0x4b, 0x40, 0xd6, 0x1, 0xd5, 0xea, 0xf7, 0x3, 0xdd, - 0xee, 0xe6, 0x3, 0xf7, 0x63, 0x2d, 0x15, 0xa7, 0xb8, 0x8e, 0x68, 0x5c, - 0x3c, 0x91, 0x5b, 0x1f, 0x78, 0x53, 0x5, 0x8a, 0x9e, 0xa1, 0x8a, 0x9e, - 0x1b, 0xb2, 0xf7, 0x15, 0x98, 0xe3, 0x9d, 0x83, 0xbb, 0x41, 0x1f, 0x97, - 0xa8, 0x5, 0xf7, 0x1, 0xd9, 0xe1, 0xf7, 0x6, 0xb3, 0x1f, 0x2f, 0x95, - 0x5, 0x53, 0x78, 0x5b, 0x37, 0x36, 0x1b, 0x63, 0x49, 0xb3, 0xf5, 0xdc, - 0xa8, 0xf7, 0x57, 0xf7, 0x2f, 0xa6, 0xdc, 0x74, 0x33, 0x1f, 0xe6, 0x91, - 0x5, 0xf7, 0x20, 0xfb, 0x3, 0xb3, 0x3b, 0xfb, 0x68, 0x40, 0xfb, 0x61, - 0xfb, 0x26, 0xfb, 0x44, 0xf7, 0x11, 0x62, 0xae, 0x8e, 0x1e, 0xe, 0xae, - 0xfb, 0x60, 0x76, 0xf7, 0x75, 0x77, 0x12, 0xf7, 0x2e, 0xd9, 0x17, 0xee, - 0x16, 0x78, 0x38, 0x5, 0xb8, 0xa8, 0x79, 0x6f, 0x67, 0x4b, 0x8d, 0x7d, - 0x66, 0x7f, 0x8d, 0x8c, 0x7b, 0x1f, 0x13, 0xe0, 0x82, 0x4f, 0x5, 0x87, - 0xa2, 0xa9, 0x8a, 0xa2, 0x1b, 0xa7, 0xf7, 0x12, 0x90, 0xe6, 0x96, 0x88, - 0xc6, 0x3d, 0x98, 0x1f, 0x95, 0xb9, 0x5, 0xe, 0xad, 0xc1, 0xf7, 0xd8, - 0xc5, 0x1, 0xf6, 0x2a, 0x15, 0xc4, 0x79, 0xe0, 0xf7, 0x2d, 0x5, 0x89, - 0x94, 0x9b, 0x89, 0xa4, 0x1b, 0xf2, 0xed, 0xb7, 0xf7, 0x1, 0xbd, 0x1f, - 0x40, 0x92, 0x5, 0x61, 0x78, 0x46, 0x4b, 0x34, 0x1b, 0x82, 0x83, 0x8d, - 0x8c, 0x87, 0x1f, 0xf7, 0x40, 0xf7, 0xca, 0xb4, 0x75, 0x9e, 0x68, 0x8c, - 0x78, 0x19, 0xd3, 0x8f, 0x5, 0x9f, 0x7d, 0xd7, 0x32, 0xa7, 0x1e, 0xdf, - 0xf7, 0x2c, 0x53, 0x9d, 0x34, 0xfb, 0x33, 0x5, 0x8c, 0x83, 0x82, 0x8c, - 0x7a, 0x1b, 0xfb, 0x71, 0x43, 0xfb, 0x3a, 0x23, 0x5d, 0x9a, 0x4e, 0xdd, - 0x68, 0x1f, 0xac, 0xc7, 0x15, 0x79, 0x95, 0x66, 0x9d, 0xc1, 0x1a, 0xb7, - 0xa9, 0xf7, 0x3c, 0xf7, 0x51, 0x1e, 0xe, 0xae, 0xf8, 0xe5, 0xe5, 0x31, - 0xf7, 0x21, 0x12, 0x13, 0x80, 0xf7, 0x27, 0xf8, 0xe5, 0x15, 0xe7, 0x6, - 0xdc, 0xe5, 0xb2, 0x31, 0x5, 0xda, 0x6, 0x13, 0x40, 0x4d, 0xf7, 0x21, - 0x57, 0xa, 0xe, 0x77, 0x8b, 0xeb, 0xf7, 0xd8, 0xeb, 0x1, 0xe2, 0xf7, - 0x6a, 0x3, 0xf7, 0x43, 0xf8, 0x38, 0x40, 0xa, 0xfb, 0x2, 0xfc, 0x98, - 0x40, 0xa, 0xe, 0x77, 0xfb, 0x12, 0x76, 0xf7, 0x91, 0x77, 0x1, 0xe2, - 0x8e, 0x15, 0xc4, 0x6, 0x78, 0x2d, 0x5f, 0x81, 0x7a, 0x87, 0x83, 0x61, - 0x18, 0x67, 0xa, 0x92, 0xaf, 0x9e, 0xe5, 0x18, 0x22, 0x6, 0xe, 0xf8, - 0x4b, 0x78, 0xc9, 0xee, 0xc6, 0xf7, 0xce, 0xc2, 0xf4, 0xc9, 0x1, 0xc1, - 0xcc, 0xf9, 0x21, 0xcc, 0x3, 0xf8, 0xcb, 0xf7, 0xbe, 0x15, 0x34, 0x6b, - 0x41, 0x81, 0x6f, 0x1b, 0x44, 0x4f, 0xbb, 0xf6, 0x98, 0x1f, 0xd6, 0x94, - 0xb9, 0xdf, 0xef, 0x1b, 0x9d, 0xd0, 0x8a, 0x3f, 0xa1, 0x1f, 0xcb, 0x99, - 0x5, 0xdd, 0x7b, 0x46, 0xaf, 0x3a, 0x1b, 0xfb, 0x17, 0x35, 0x37, 0xfb, - 0x16, 0x7b, 0x1f, 0xfb, 0x1c, 0x7b, 0xd9, 0x3d, 0xf7, 0xc, 0x1b, 0xdd, - 0xe2, 0xb6, 0xe9, 0xad, 0x1f, 0xfc, 0xd3, 0xd8, 0x15, 0xfb, 0x65, 0xf7, - 0x45, 0xfb, 0x3a, 0xf7, 0x6d, 0xf7, 0x6d, 0xf7, 0x40, 0xf7, 0x3b, 0xf7, - 0x64, 0xf7, 0x65, 0xfb, 0x42, 0xf7, 0x40, 0xfb, 0x6b, 0xfb, 0x6a, 0xfb, - 0x48, 0xfb, 0x3f, 0xfb, 0x66, 0x1e, 0xcc, 0x16, 0xf7, 0x42, 0xf7, 0x29, - 0xf7, 0x25, 0xf7, 0x48, 0xf7, 0x49, 0xf7, 0x23, 0xfb, 0x25, 0xfb, 0x42, - 0xfb, 0x42, 0xfb, 0x23, 0xfb, 0x1f, 0xfb, 0x49, 0xfb, 0x48, 0xfb, 0x29, - 0xf7, 0x1f, 0xf7, 0x42, 0x1e, 0xe, 0xf7, 0xc, 0x76, 0xae, 0xdf, 0xf7, - 0x9e, 0xdf, 0xae, 0x77, 0x1, 0xee, 0xee, 0x15, 0xe3, 0xd3, 0x5, 0x70, - 0xa9, 0xb0, 0x81, 0xb0, 0x1b, 0xb0, 0xbb, 0x95, 0xa6, 0xb7, 0x1f, 0xbb, - 0x43, 0xd4, 0xc8, 0x5a, 0xd0, 0xb6, 0xbd, 0x9c, 0xb8, 0x92, 0xa5, 0x19, - 0x92, 0xa7, 0x94, 0xb8, 0x7a, 0xbb, 0xe3, 0xd2, 0x18, 0x63, 0xc8, 0x33, - 0x43, 0x5, 0xa6, 0x6e, 0x63, 0x95, 0x66, 0x1b, 0x66, 0x5e, 0x81, 0x70, - 0x5e, 0x1f, 0x5b, 0xd3, 0x43, 0x4e, 0xbb, 0x44, 0x60, 0x5b, 0x79, 0x5e, - 0x84, 0x6f, 0x19, 0x84, 0x71, 0x83, 0x5e, 0x9c, 0x59, 0x34, 0x46, 0x18, - 0xf7, 0x39, 0xf7, 0x52, 0x15, 0xd6, 0xa0, 0xd3, 0xc6, 0xd1, 0x1b, 0xd1, - 0xb5, 0x4f, 0x41, 0x76, 0x1f, 0x42, 0x77, 0x42, 0x50, 0x44, 0x1b, 0x46, - 0x62, 0xc6, 0xd4, 0x9f, 0x1f, 0xe, 0x7c, 0xd3, 0x4f, 0xc7, 0xf8, 0x25, - 0xd4, 0xf7, 0x4f, 0x77, 0x12, 0xdf, 0xe7, 0x13, 0x78, 0xf8, 0x30, 0x88, - 0x15, 0xe0, 0x6, 0xf7, 0x2f, 0xf9, 0x65, 0x3d, 0xa, 0x50, 0xfb, 0xad, - 0x4e, 0xa, 0xd5, 0x64, 0x51, 0x9f, 0x55, 0x1b, 0xfb, 0x20, 0xfb, 0x10, - 0xfb, 0x1c, 0xfb, 0x4a, 0x1f, 0x13, 0xb8, 0xfb, 0x3c, 0xf3, 0x4f, 0xd6, - 0xd0, 0xc0, 0xb2, 0xba, 0xb6, 0x1e, 0x13, 0x78, 0xfb, 0x90, 0xf7, 0x22, - 0x15, 0xc4, 0xb5, 0xf7, 0x50, 0xf7, 0x16, 0xc2, 0xcf, 0x67, 0x2a, 0xfb, - 0x1e, 0x3a, 0xfb, 0x16, 0x27, 0xfb, 0x6, 0x8b, 0xf7, 0x11, 0xaa, 0x1e, - 0xe, 0xfb, 0x1e, 0x76, 0xf8, 0xe6, 0xd5, 0xf7, 0x65, 0x77, 0x1, 0xf7, - 0x1b, 0xf8, 0x7b, 0x3, 0xf7, 0x61, 0xfb, 0x33, 0x15, 0xe2, 0x6, 0xf7, - 0xf, 0xf8, 0xe6, 0x5, 0xf7, 0x54, 0x6, 0x9a, 0xd5, 0x5, 0xfb, 0x53, - 0x6, 0xb6, 0xf7, 0x65, 0x5, 0x33, 0x6, 0x60, 0xfb, 0x65, 0x5, 0xfb, - 0x55, 0x6, 0x7c, 0x41, 0x5, 0xf7, 0x55, 0x6, 0xe, 0xfb, 0x1e, 0x76, - 0xf7, 0x50, 0xd5, 0xf7, 0xf6, 0xd8, 0xf7, 0x4c, 0x77, 0x1, 0xbf, 0xa8, - 0x15, 0xf7, 0x53, 0x6, 0x66, 0xfb, 0x50, 0x5, 0xe1, 0x6, 0xb0, 0xf7, - 0x50, 0x5, 0xf7, 0x50, 0x6, 0x9b, 0xd5, 0x5, 0xfb, 0x51, 0x6, 0xd5, - 0xf7, 0xf6, 0x5, 0xf7, 0x4f, 0x6, 0x9d, 0xd8, 0x5, 0xfb, 0x52, 0x6, - 0xb0, 0xf7, 0x4c, 0x5, 0x35, 0x6, 0x65, 0xfb, 0x4c, 0x5, 0xfb, 0x52, - 0x6, 0x7b, 0x3e, 0x5, 0xf7, 0x53, 0x6, 0x42, 0xfb, 0xf6, 0x5, 0xfb, - 0x52, 0x6, 0xe, 0xf1, 0xf8, 0x2f, 0xc2, 0xf7, 0x4c, 0xc0, 0x1, 0xf7, - 0x3d, 0xc1, 0xf7, 0x51, 0xc3, 0x3, 0xf7, 0x3d, 0xf8, 0xc3, 0x15, 0x38, - 0xcf, 0x4a, 0xdc, 0xdd, 0xcf, 0xcc, 0xde, 0xdc, 0x49, 0xca, 0x37, 0x38, - 0x49, 0x4d, 0x39, 0x1e, 0xc1, 0x8c, 0x15, 0xbe, 0xb5, 0xb2, 0xbf, 0xc0, - 0xb5, 0x64, 0x58, 0x57, 0x60, 0x61, 0x57, 0x58, 0x60, 0xb5, 0xbf, 0x1e, - 0xe, 0xae, 0xf8, 0xf0, 0xf1, 0x1, 0xf7, 0xf9, 0xf9, 0x56, 0x5d, 0xa, - 0xfb, 0x27, 0xf1, 0x5d, 0xa, 0xe, 0xf7, 0xb2, 0x78, 0xec, 0xf7, 0x18, - 0xdd, 0xf7, 0x1a, 0xed, 0x1, 0xe0, 0xf7, 0x66, 0x15, 0xf8, 0x76, 0x6, - 0xb2, 0xdd, 0x5, 0xfc, 0x76, 0x6, 0xf7, 0x7c, 0xf7, 0x1a, 0x15, 0xf0, - 0x6, 0xb9, 0xed, 0x5, 0x25, 0x6, 0xfb, 0x61, 0xfc, 0xb3, 0x15, 0xf1, - 0x6, 0xb8, 0xec, 0x5, 0x26, 0x6, 0xe, 0x2d, 0x76, 0xf7, 0x12, 0x76, - 0xf9, 0x35, 0xd4, 0xb2, 0x77, 0x1, 0xf7, 0x1a, 0xe6, 0xf7, 0xc3, 0xde, - 0x3, 0xf7, 0x8c, 0x81, 0x15, 0x74, 0x22, 0x5, 0xbf, 0x6, 0xa0, 0xee, - 0x5, 0xf7, 0x5e, 0xd0, 0xf7, 0xb, 0xe5, 0xf7, 0x12, 0xfb, 0xe, 0xc9, - 0x50, 0xa3, 0x1f, 0xc1, 0xf7, 0x8e, 0x5, 0xc6, 0xa8, 0x38, 0x6f, 0x8f, - 0x1f, 0xde, 0x91, 0x5, 0xb2, 0x4e, 0xf7, 0x1f, 0x29, 0x1e, 0x95, 0xba, - 0x5, 0x59, 0x6, 0x81, 0x64, 0x5, 0xfb, 0x55, 0x52, 0xfb, 0x8, 0x3a, - 0xfb, 0x13, 0xf7, 0x5, 0x58, 0xbf, 0x76, 0x1f, 0x50, 0xfb, 0xa9, 0x5, - 0x65, 0x53, 0xb6, 0xf4, 0x83, 0x1f, 0x2e, 0x86, 0x5, 0x25, 0x91, 0xca, - 0xfb, 0x6, 0xf7, 0x2, 0x1b, 0xe9, 0xf8, 0x46, 0x15, 0x62, 0x9e, 0x57, - 0xa1, 0xd5, 0x1a, 0xda, 0xd9, 0xb8, 0xcd, 0x1e, 0x3c, 0xfc, 0xf5, 0x15, - 0xc2, 0xf7, 0x9d, 0x5, 0xba, 0x77, 0xc8, 0x6e, 0x3e, 0x1a, 0x44, 0x4a, - 0x47, 0x29, 0x1e, 0xe, 0xae, 0xf8, 0xf0, 0xf1, 0x1, 0xf7, 0x8d, 0xf8, - 0xf0, 0x15, 0xe7, 0x6, 0xa0, 0xf1, 0x5, 0x2e, 0x6, 0xe, 0x77, 0x43, - 0xa, 0xea, 0xf7, 0x5b, 0x3, 0xea, 0x16, 0xe4, 0x6, 0xf7, 0x2, 0xf8, - 0x9f, 0x3e, 0xa, 0x7c, 0xd5, 0xf7, 0x49, 0xd0, 0xf7, 0x33, 0xd1, 0x1, - 0xdf, 0xe7, 0xf7, 0xcf, 0xe2, 0x3, 0xf7, 0x44, 0xf7, 0x84, 0x15, 0xf8, - 0x1f, 0x6, 0x8e, 0x9f, 0x8f, 0x9f, 0xb3, 0x1a, 0xe6, 0x5c, 0xf7, 0x13, - 0xfb, 0x38, 0xfb, 0x5a, 0x36, 0xfb, 0x55, 0xfb, 0x1b, 0xfb, 0x27, 0xe8, - 0x3d, 0xf7, 0x8, 0xf7, 0x1f, 0xe6, 0xf7, 0x2, 0xd4, 0xa1, 0x1e, 0x32, - 0x94, 0x5, 0x2a, 0x61, 0x39, 0x76, 0x64, 0x1b, 0x43, 0x4f, 0xd5, 0xf6, - 0x9a, 0x1f, 0x99, 0xd0, 0x15, 0xce, 0xa0, 0xc0, 0xe7, 0xf4, 0x1b, 0xd3, - 0xc6, 0x4c, 0x2b, 0x82, 0x1f, 0xe, 0x7c, 0xd5, 0x41, 0xf7, 0x50, 0xcf, - 0xd1, 0xf8, 0x3b, 0x77, 0x1, 0xdf, 0xe7, 0x3, 0xf7, 0xd7, 0xf8, 0xe7, - 0x15, 0xd8, 0x6, 0xf7, 0x1d, 0x6f, 0xa, 0xfb, 0xa, 0x6, 0xfb, 0x86, - 0xfc, 0x81, 0x25, 0xa, 0xe, 0x7c, 0xd5, 0xf7, 0x4a, 0xd1, 0xf7, 0xb0, - 0xf7, 0x1f, 0x1, 0xdf, 0xe6, 0xf7, 0xd0, 0xe2, 0x3, 0xf7, 0x8c, 0xf8, - 0xe7, 0x15, 0xe9, 0x6, 0xdd, 0xe5, 0xb4, 0x31, 0x5, 0xdb, 0x6, 0x4c, - 0xf7, 0x1f, 0x47, 0xa, 0xfb, 0x61, 0xfc, 0x81, 0x25, 0xa, 0xe, 0x7c, - 0xd4, 0xf7, 0x48, 0xcf, 0xf7, 0xbf, 0xf0, 0x1, 0xdf, 0xe6, 0x3, 0xf8, - 0x56, 0xf8, 0xf1, 0x63, 0xa, 0xfb, 0x64, 0x26, 0x63, 0xa, 0xfb, 0x1, - 0xfc, 0x65, 0x25, 0xa, 0xe, 0x7c, 0xd5, 0xf7, 0x4a, 0xd1, 0xf7, 0xb1, - 0xf7, 0x1e, 0x1, 0xdf, 0xe6, 0x3, 0xf7, 0x45, 0xf7, 0x85, 0x25, 0xa, - 0x29, 0xf7, 0xb1, 0x15, 0xd3, 0x6, 0x50, 0xf7, 0x1e, 0x5, 0xfb, 0x3, - 0x6, 0xe, 0x78, 0xd0, 0xf7, 0xbb, 0xcb, 0xf7, 0x75, 0xd0, 0x1, 0xd5, - 0xeb, 0xf7, 0xee, 0xe6, 0x3, 0xf7, 0x83, 0xf8, 0x15, 0x15, 0xfb, 0x31, - 0x63, 0x83, 0xfb, 0x2a, 0x6c, 0x1a, 0x23, 0xe0, 0x3c, 0xf7, 0x1f, 0xf7, - 0x3e, 0xf2, 0xf7, 0xb, 0xf7, 0xe, 0xe9, 0x4d, 0xb4, 0x6b, 0x9d, 0x1e, - 0xd0, 0x9c, 0xc8, 0xcc, 0xd3, 0x1a, 0xca, 0x5c, 0xf7, 0x3, 0xfb, 0x3f, - 0xfb, 0x39, 0x44, 0xfb, 0xb, 0x40, 0x78, 0x8d, 0x4c, 0xdf, 0x61, 0x1e, - 0x46, 0xfb, 0x71, 0x15, 0xe7, 0xcf, 0xe4, 0xf6, 0xd3, 0xc5, 0x55, 0x46, - 0x40, 0x4f, 0x2a, 0x20, 0x39, 0x53, 0xbc, 0xcc, 0x1e, 0xd8, 0xf7, 0xed, - 0x15, 0xc2, 0xb2, 0xd1, 0xf2, 0xd4, 0xc1, 0x5d, 0x50, 0x54, 0x5f, 0x4a, - 0x23, 0x43, 0x5a, 0xb0, 0xca, 0x1e, 0xe, 0xf9, 0x52, 0x8b, 0xf5, 0x1, - 0xf8, 0x57, 0x16, 0x4b, 0xa, 0xf7, 0xcf, 0x21, 0x15, 0x4b, 0xa, 0xfd, - 0x49, 0x21, 0x15, 0x4b, 0xa, 0xe, 0xf9, 0x52, 0x64, 0xa, 0xfa, 0x8c, - 0xd4, 0xfe, 0x8c, 0x6, 0xe, 0x64, 0xa, 0xf8, 0xd0, 0xd4, 0xfc, 0xd0, - 0x6, 0xe, 0xf7, 0xb2, 0xf7, 0x7, 0xdc, 0xf7, 0x8, 0xd9, 0x1, 0xb5, - 0xf8, 0xc9, 0x3, 0xca, 0xf7, 0xce, 0x15, 0xf8, 0xc9, 0xd7, 0xfc, 0xc9, - 0x6, 0xfb, 0xa7, 0x4, 0xf8, 0xc9, 0xda, 0xfc, 0xc9, 0x6, 0xe, 0x81, - 0xd5, 0x1, 0xf8, 0x8e, 0xf0, 0x3, 0xf7, 0xf0, 0xf8, 0xd1, 0x15, 0xf7, - 0x0, 0xb9, 0xa5, 0x5e, 0xa0, 0x5b, 0x94, 0x59, 0x19, 0x89, 0x89, 0x5, - 0xa2, 0x72, 0x61, 0xae, 0x36, 0x1b, 0xfb, 0x2a, 0xfb, 0x13, 0xfb, 0x29, - 0xfb, 0x47, 0xfb, 0x7, 0xd2, 0x23, 0xf7, 0x32, 0xf7, 0x8c, 0xc6, 0xf7, - 0x90, 0xf7, 0x8, 0xf7, 0x38, 0x53, 0xe4, 0x6d, 0xb9, 0x1f, 0xdd, 0xae, - 0x73, 0xbd, 0x2e, 0x65, 0x88, 0x90, 0x78, 0x9e, 0x7a, 0x99, 0x19, 0x28, - 0x6, 0xa5, 0x73, 0x90, 0x85, 0xad, 0x62, 0x28, 0x60, 0x18, 0xfb, 0x26, - 0xfc, 0x37, 0x15, 0xea, 0xc3, 0xf7, 0x33, 0xf7, 0x26, 0xcb, 0xd3, 0x68, - 0x21, 0x34, 0x4f, 0xfb, 0x3f, 0xfb, 0x24, 0xfb, 0x3, 0x74, 0xdf, 0xc8, - 0x1e, 0xe, 0x77, 0x8b, 0xef, 0xe0, 0x77, 0xf8, 0xbd, 0x77, 0x1, 0xe5, - 0x16, 0xef, 0x6, 0xa0, 0xef, 0x47, 0xa, 0xb0, 0xe0, 0x15, 0xc2, 0x6, - 0xf3, 0xf8, 0x4, 0xac, 0xf7, 0x39, 0x5, 0x20, 0x6, 0x6c, 0xfb, 0x39, - 0x5, 0xe, 0xae, 0xfb, 0x42, 0x76, 0xf8, 0xaf, 0x77, 0xf0, 0xed, 0x1, - 0xd8, 0xf7, 0x8d, 0x3, 0xf7, 0x61, 0xf8, 0x3d, 0x15, 0xef, 0x6, 0xa0, - 0xed, 0x47, 0xa, 0xfb, 0x8, 0xfc, 0xc0, 0x15, 0x6a, 0xfb, 0x36, 0x5, - 0xf6, 0x6, 0xab, 0xf7, 0x36, 0xc1, 0xf8, 0xd, 0x5, 0x54, 0x6, 0xe, - 0x77, 0x3a, 0xa, 0xf5, 0xf7, 0xde, 0x3, 0xe1, 0x16, 0xdb, 0x6, 0xe0, - 0xf8, 0x56, 0x5, 0xe5, 0x6, 0x98, 0xcf, 0x3f, 0xa, 0xf0, 0x9f, 0x91, - 0xa9, 0xb5, 0x1b, 0xa7, 0xa8, 0x82, 0x88, 0x98, 0x1f, 0x99, 0xd8, 0x5, - 0x8f, 0x79, 0x62, 0x95, 0x6c, 0x1b, 0x25, 0x80, 0x36, 0x46, 0x7a, 0x1f, - 0x7f, 0x53, 0x5, 0x43, 0x6, 0x7f, 0x47, 0x5, 0xd2, 0x6, 0xe, 0xf7, - 0x5e, 0x3a, 0xa, 0xe1, 0x16, 0xe5, 0x46, 0xa, 0xa1, 0x8f, 0xa9, 0xba, - 0x1b, 0xaa, 0xae, 0x82, 0x88, 0x99, 0x1f, 0x9b, 0xd8, 0x5, 0x8f, 0x77, - 0x62, 0x95, 0x68, 0x1b, 0xfb, 0x6, 0x7a, 0x36, 0x46, 0x78, 0x1f, 0x7e, - 0x53, 0x5, 0x3b, 0x6, 0x7c, 0x47, 0x5, 0xdc, 0x6, 0xf7, 0x36, 0xfc, - 0x56, 0x15, 0xe5, 0x6, 0xf7, 0x3, 0xf8, 0x9a, 0x3f, 0xa, 0x9f, 0xe9, - 0x15, 0xe5, 0x6, 0xa1, 0xf3, 0x3e, 0xa, 0x78, 0xd0, 0xf7, 0xef, 0xd9, - 0xf7, 0x2d, 0xdb, 0x1, 0xcf, 0xee, 0xf7, 0xb7, 0xeb, 0x3, 0xce, 0xf7, - 0x57, 0x15, 0x23, 0xd4, 0xfb, 0x2, 0xf7, 0x2e, 0xf7, 0x41, 0xf7, 0x10, - 0xf7, 0xd, 0xf7, 0x37, 0xf7, 0x2c, 0xfb, 0xa, 0xc5, 0x34, 0x41, 0x61, - 0x6e, 0x7e, 0x73, 0x1e, 0xc6, 0xf7, 0x47, 0x5, 0xf7, 0xbd, 0x6, 0x9e, - 0xdb, 0x5, 0xfc, 0x12, 0x6, 0xfb, 0x9, 0xfb, 0xfe, 0xdf, 0x84, 0x5, - 0x9e, 0x9b, 0xbc, 0xc2, 0xdf, 0x1b, 0xe7, 0xbb, 0x4c, 0x46, 0x23, 0x34, - 0xfb, 0x3, 0x20, 0x50, 0x38, 0xb8, 0xf7, 0x1, 0x93, 0x1f, 0xe, 0xf7, - 0x5e, 0x3a, 0xa, 0xe1, 0x16, 0xe4, 0x46, 0xa, 0xa2, 0x8f, 0xa9, 0xba, - 0x1b, 0xaa, 0xac, 0x82, 0x88, 0x9a, 0x1f, 0x9b, 0xd8, 0x5, 0x8f, 0x77, - 0x63, 0x95, 0x68, 0x1b, 0xfb, 0x5, 0x78, 0x37, 0x46, 0x79, 0x1f, 0x7e, - 0x52, 0x5, 0x3a, 0x6, 0x7d, 0x47, 0x5, 0xdc, 0x6, 0xf7, 0x35, 0xfc, - 0x56, 0x15, 0xe5, 0x6, 0xf7, 0x2c, 0xf9, 0x60, 0x5, 0x32, 0x6, 0xe, - 0xfb, 0x63, 0xd9, 0xf8, 0xda, 0xd1, 0xf7, 0x17, 0xde, 0x1, 0x77, 0xfb, - 0xa, 0x15, 0x6b, 0x3e, 0x5, 0x7f, 0xc7, 0xb2, 0x8b, 0x92, 0x1b, 0xdb, - 0xca, 0xdc, 0xe4, 0xae, 0x1f, 0xf7, 0x4d, 0xf8, 0x7e, 0x5, 0xf0, 0x6, - 0xa7, 0xd1, 0x5, 0x25, 0x6, 0xf3, 0xb6, 0x98, 0xa6, 0xbb, 0x1b, 0xa0, - 0x9c, 0x87, 0x82, 0xae, 0x1f, 0xac, 0xd8, 0x5, 0x95, 0x6a, 0x6d, 0x94, - 0x64, 0x1b, 0xfb, 0x6, 0x67, 0x27, 0xfb, 0x6, 0x5b, 0x1f, 0x27, 0x6, - 0x71, 0x45, 0x5, 0xee, 0x6, 0xfb, 0x48, 0xfc, 0x7d, 0x5, 0x64, 0x7b, - 0x68, 0x55, 0x60, 0x1b, 0x7b, 0x76, 0x8e, 0x93, 0x67, 0x1f, 0xe, 0xa0, - 0x76, 0xf7, 0x48, 0xd9, 0xf7, 0xc0, 0xf7, 0x2e, 0x1, 0xcb, 0xf7, 0x48, - 0x15, 0xf7, 0xd0, 0x6, 0x62, 0xfb, 0x48, 0x5, 0xeb, 0x6, 0xb5, 0xf7, - 0x48, 0x5, 0xf7, 0x1, 0x6, 0x9e, 0xd9, 0x5, 0xfb, 0x2, 0x6, 0xf1, - 0xf8, 0x51, 0x5, 0x3d, 0x6, 0xfc, 0x46, 0xfc, 0x49, 0x5, 0xe8, 0x83, - 0x15, 0xf7, 0xb2, 0xf7, 0xb9, 0x8d, 0x89, 0x48, 0xfb, 0xb7, 0x5, 0xe, - 0xfb, 0x17, 0x8d, 0x76, 0xf9, 0x66, 0x77, 0x1, 0xfb, 0x3b, 0xf9, 0x20, - 0x3, 0x23, 0x78, 0x15, 0xf8, 0xde, 0xf9, 0x66, 0x5, 0x43, 0x6, 0xfc, - 0xd8, 0xfd, 0x66, 0x5, 0xe, 0xfb, 0x70, 0xd5, 0xf7, 0x1f, 0xd5, 0xf8, - 0x21, 0xd5, 0x7f, 0x77, 0x12, 0x13, 0xd0, 0xb5, 0x54, 0x15, 0xfb, 0x30, - 0xf7, 0x36, 0x82, 0xc0, 0xf7, 0x57, 0xac, 0xf7, 0x2f, 0xd6, 0x9b, 0x1e, - 0xf7, 0x1, 0xf8, 0x98, 0x5, 0x37, 0x6, 0x7b, 0x33, 0x4e, 0xa, 0x13, - 0xe0, 0xe0, 0x5c, 0x47, 0x9a, 0x5c, 0x1b, 0xfb, 0x28, 0xfb, 0xe, 0xfb, - 0x26, 0xfb, 0x33, 0xfb, 0x2b, 0xe2, 0x32, 0xf4, 0xb5, 0xbf, 0x98, 0xc4, - 0xc5, 0x1f, 0x82, 0x56, 0x5, 0x2e, 0x7a, 0x61, 0x4c, 0x22, 0x1b, 0x25, - 0x81, 0xb9, 0xaf, 0x1f, 0xae, 0xf7, 0xbd, 0x15, 0xd2, 0xc2, 0xf7, 0x34, - 0xf7, 0xf, 0xd9, 0xbd, 0x4b, 0x3d, 0x27, 0x4b, 0xfb, 0x2f, 0xfb, 0x12, - 0x31, 0x71, 0xe6, 0xd6, 0x1e, 0xe, 0xf7, 0xcd, 0x7c, 0xd3, 0x64, 0x76, - 0xf9, 0x2b, 0xcf, 0x12, 0xf8, 0xb8, 0xef, 0x13, 0x70, 0xce, 0x88, 0x15, - 0xee, 0x6, 0xf7, 0x6, 0xf8, 0x84, 0x5, 0xe5, 0xa0, 0xbb, 0xd8, 0xf6, - 0x1b, 0xe0, 0x81, 0x2a, 0x5a, 0x61, 0x1f, 0x53, 0x4b, 0x6b, 0x62, 0x65, - 0x1a, 0x66, 0xa7, 0x68, 0xc6, 0x59, 0x1e, 0xc0, 0x5c, 0x9c, 0x79, 0x6f, - 0x1a, 0x13, 0xb0, 0x5d, 0x56, 0x56, 0x4b, 0x4e, 0x6b, 0xc4, 0xa6, 0x7c, - 0x1e, 0x38, 0x62, 0x5, 0x23, 0xd0, 0xd7, 0x80, 0xba, 0x1b, 0xf7, 0x8, - 0xef, 0xda, 0xe7, 0xc1, 0x6e, 0xa5, 0x4a, 0xc8, 0x1f, 0x5f, 0xb4, 0x79, - 0xa2, 0xa2, 0x1a, 0xa2, 0xa2, 0xa5, 0xb3, 0xb9, 0x1e, 0xec, 0xdf, 0x7f, - 0xf7, 0x2c, 0xfb, 0x46, 0x1b, 0xfb, 0x3d, 0x3b, 0xfb, 0x1, 0xfb, 0x12, - 0x6d, 0x1f, 0xe, 0x53, 0xa, 0xf7, 0x9f, 0xf8, 0xe5, 0x56, 0xa, 0x6d, - 0xa, 0xfb, 0x1, 0x6, 0xe, 0xf7, 0xb2, 0xbc, 0x76, 0xf8, 0x60, 0x77, - 0x1, 0xf7, 0x16, 0xf8, 0x71, 0x3, 0xf7, 0xc, 0x96, 0x15, 0xf8, 0x71, - 0xf7, 0x5c, 0x5, 0xde, 0x7, 0xfc, 0x71, 0xf7, 0x5d, 0x5, 0x34, 0x7, - 0xf8, 0x0, 0xfb, 0x2f, 0xfc, 0x0, 0xfb, 0x2f, 0x5, 0xe, 0x49, 0xa, - 0xf8, 0x2c, 0xf7, 0x17, 0x15, 0xc6, 0x6, 0x45, 0xf7, 0x64, 0xf7, 0x31, - 0xf7, 0x5d, 0x5, 0x4a, 0x6, 0xfb, 0x3f, 0xfb, 0x5d, 0x5, 0x39, 0xfb, - 0x64, 0x15, 0xc7, 0x6, 0x45, 0xf7, 0x64, 0xf7, 0x30, 0xf7, 0x5d, 0x5, - 0x4b, 0x6, 0xfb, 0x40, 0xfb, 0x5d, 0x5, 0xe, 0x49, 0xa, 0xf7, 0xc, - 0xf7, 0x17, 0x15, 0xcc, 0x6, 0xf7, 0x3f, 0xf7, 0x5d, 0x31, 0xf7, 0x64, - 0x5, 0x51, 0x6, 0xd0, 0xfb, 0x64, 0x5, 0x9a, 0xfb, 0x5d, 0x15, 0xcb, - 0x6, 0xf7, 0x40, 0xf7, 0x5d, 0x31, 0xf7, 0x64, 0x5, 0x50, 0x6, 0xd0, - 0xfb, 0x64, 0x5, 0xe, 0xbf, 0x49, 0xa, 0xf7, 0x75, 0xf7, 0x17, 0x15, - 0xc0, 0x6, 0x4c, 0xf7, 0x60, 0xf7, 0x22, 0xf7, 0x61, 0x5, 0x51, 0x6, - 0xfb, 0x2f, 0xfb, 0x61, 0x5, 0xe, 0xae, 0xf7, 0x2b, 0x76, 0xf8, 0x29, - 0x77, 0x1, 0xf7, 0x9, 0xf7, 0x16, 0x15, 0xc5, 0x6, 0xf7, 0x2f, 0xf7, - 0x55, 0x39, 0xf7, 0x68, 0x5, 0x57, 0x6, 0xc8, 0xfb, 0x68, 0x5, 0xe, - 0xa0, 0x76, 0xf8, 0x5f, 0xd3, 0xf7, 0x4f, 0x77, 0x1, 0xcc, 0x16, 0xe7, - 0x6, 0xba, 0xf7, 0x73, 0x94, 0xb5, 0x9c, 0xd6, 0xad, 0xb8, 0x19, 0xb4, - 0xac, 0xc0, 0xac, 0xcc, 0x1b, 0xeb, 0x71, 0x2f, 0x4f, 0x7d, 0x1f, 0x47, - 0xfb, 0xc7, 0x5, 0xe7, 0x6, 0xcd, 0xf7, 0xc7, 0x5, 0x91, 0xac, 0x91, - 0xaf, 0xad, 0x1a, 0xcc, 0x6c, 0xc3, 0x22, 0x34, 0x4f, 0x56, 0x69, 0x65, - 0x1e, 0xc5, 0xf7, 0xa6, 0x3e, 0xa, 0x53, 0xa, 0xf7, 0x31, 0xf8, 0xe5, - 0x4f, 0xa, 0xdd, 0xfb, 0x21, 0x4f, 0xa, 0xe, 0xae, 0xf7, 0x7c, 0xe5, - 0x1, 0xe8, 0xf7, 0x9c, 0x3, 0xe8, 0xf7, 0x7c, 0x15, 0xf7, 0x8b, 0x6, - 0x9c, 0xe5, 0x5, 0xfb, 0x8b, 0x6, 0xe, 0x3f, 0xa0, 0x76, 0xf8, 0x99, - 0x77, 0xf7, 0xe, 0xee, 0x1, 0xce, 0x16, 0xe4, 0x6, 0xf7, 0x2, 0xf8, - 0x99, 0x3f, 0xa, 0xa0, 0xf1, 0x15, 0xe5, 0x6, 0xa0, 0xee, 0x3e, 0xa, - 0x52, 0xa, 0xf7, 0x77, 0x77, 0x1, 0xf7, 0x45, 0xf8, 0xe8, 0x6e, 0xa, - 0xf7, 0x34, 0xf7, 0x1e, 0x5, 0xfb, 0x1e, 0x6, 0xfb, 0x57, 0xfd, 0x72, - 0x15, 0x38, 0xa, 0xe, 0x52, 0xa, 0xe4, 0xf7, 0x1e, 0x1, 0xf7, 0x2, - 0xf8, 0xe8, 0x15, 0xea, 0x6, 0xdf, 0xe4, 0xb3, 0x32, 0x5, 0xdd, 0x6, - 0x4b, 0xf7, 0x1e, 0x5, 0x26, 0x6, 0xfb, 0x2b, 0xfd, 0x72, 0x15, 0x38, - 0xa, 0xe, 0x5c, 0xa, 0xf8, 0xf1, 0xf0, 0x1, 0xf7, 0xc4, 0xf8, 0xf1, - 0x6e, 0xa, 0xa0, 0xf0, 0x45, 0xa, 0xfb, 0x5c, 0x26, 0x6e, 0xa, 0xa0, - 0xf0, 0x45, 0xa, 0x58, 0xfd, 0x56, 0x15, 0x38, 0xa, 0xe, 0x52, 0xa, - 0xf7, 0x77, 0x77, 0x1, 0xea, 0x16, 0x38, 0xa, 0xb8, 0xd0, 0x15, 0xcd, - 0x6, 0x54, 0xf7, 0x1e, 0x5, 0x25, 0x6, 0xe, 0x3f, 0xfb, 0x51, 0x76, - 0xf9, 0x6b, 0x77, 0xf7, 0xe, 0xee, 0x1, 0x5d, 0xfb, 0xd, 0x15, 0x7d, - 0x3f, 0x5, 0x7e, 0xba, 0xa5, 0x8b, 0x92, 0x1b, 0xe7, 0xab, 0xf7, 0x10, - 0xdf, 0x9c, 0x1f, 0xf7, 0x0, 0xf8, 0x9b, 0x5, 0x36, 0x6, 0x24, 0xfc, - 0x9b, 0x72, 0xfb, 0x11, 0x78, 0x7a, 0x38, 0xa2, 0x19, 0xf7, 0x8d, 0xf9, - 0x78, 0x15, 0xe0, 0x6, 0x9f, 0xee, 0x5, 0x36, 0x6, 0xe, 0xf7, 0x5e, - 0x2d, 0xa, 0xce, 0x16, 0xe5, 0x6, 0xb1, 0xf7, 0x42, 0xf7, 0x2, 0xe9, - 0xf4, 0xfb, 0xa0, 0x5, 0xef, 0x6, 0xfb, 0x1e, 0xf7, 0xdb, 0xf7, 0x78, - 0xf7, 0x57, 0x5, 0xfb, 0xc, 0x6, 0xfb, 0x9a, 0xfb, 0x8c, 0x89, 0x8d, - 0xea, 0xf8, 0x4e, 0x3e, 0xa, 0x3f, 0x2d, 0xa, 0xce, 0x16, 0xe5, 0x6, - 0xf7, 0x2b, 0xf9, 0x62, 0x5, 0x32, 0x6, 0xe, 0xf7, 0xb2, 0xab, 0x76, - 0xf8, 0x78, 0x77, 0x1, 0xe9, 0xf7, 0x68, 0x15, 0xf8, 0x71, 0xfb, 0x5d, - 0x5, 0xe2, 0x7, 0xfc, 0x0, 0xf7, 0x2f, 0xf8, 0x0, 0xf7, 0x2f, 0x5, - 0xe2, 0x7, 0xfc, 0x71, 0xfb, 0x5d, 0x5, 0xe, 0xf7, 0xb2, 0xf7, 0x15, - 0x76, 0xf7, 0x60, 0xd9, 0x1, 0xf5, 0xf7, 0xcc, 0x15, 0xf8, 0x3b, 0x6, - 0x5b, 0xfb, 0x60, 0x5, 0xdd, 0x6, 0xcc, 0xf7, 0xae, 0x5, 0xfc, 0x8d, - 0x6, 0xe, 0x3f, 0x2d, 0xa, 0xc0, 0x16, 0xf1, 0x6, 0xe0, 0xf7, 0xfb, - 0xe4, 0xb4, 0x9d, 0xd8, 0x32, 0x61, 0xcf, 0xf7, 0xaf, 0x5, 0x26, 0x6, - 0x3b, 0xfb, 0xe4, 0x34, 0x64, 0x7a, 0x3e, 0xe0, 0xb3, 0x5, 0xe, 0xf8, - 0xab, 0x60, 0xa, 0x13, 0xc0, 0xcc, 0x16, 0xe5, 0x6, 0xbf, 0xf7, 0x8d, - 0x5, 0xe1, 0x9e, 0xbc, 0xf7, 0x16, 0xf7, 0xe, 0x1b, 0xd2, 0x83, 0x42, - 0x56, 0x7f, 0x1f, 0x41, 0xfb, 0xe7, 0x5, 0xe4, 0x6, 0xc1, 0xf7, 0x94, - 0x5, 0xc9, 0x98, 0xb6, 0xf7, 0x27, 0xf7, 0x16, 0x1b, 0xca, 0x91, 0x52, - 0x46, 0x7d, 0x1f, 0x41, 0xfb, 0xe7, 0x5, 0xe4, 0x6, 0xd3, 0xf7, 0xe7, - 0x5, 0x90, 0xa3, 0x8d, 0xa0, 0x9f, 0x1a, 0x13, 0xa0, 0xdb, 0x5d, 0xc1, - 0x38, 0x6c, 0x42, 0x83, 0x31, 0x42, 0x1e, 0xdf, 0x78, 0x49, 0x99, 0x62, - 0x1b, 0x37, 0x59, 0x55, 0x61, 0x63, 0x1f, 0x13, 0xc0, 0x9d, 0xdf, 0x5, - 0x32, 0x6, 0xe, 0xae, 0xf9, 0x7, 0xc4, 0x1, 0xf7, 0x23, 0xf9, 0x7, - 0x15, 0xf7, 0xca, 0x6, 0x9a, 0xc4, 0x5, 0xfb, 0xcb, 0x6, 0xe, 0xf7, - 0xb2, 0xf7, 0x6c, 0xd4, 0x1, 0xe0, 0xf7, 0x6c, 0x15, 0xf8, 0x6e, 0x6, - 0xba, 0xd4, 0x5, 0xfc, 0x6e, 0x6, 0xe, 0xfb, 0x4e, 0x76, 0xf7, 0x5f, - 0xcb, 0x54, 0x76, 0xf8, 0xaf, 0x77, 0x12, 0x13, 0xb0, 0xf7, 0x39, 0xb9, - 0x15, 0x76, 0x9d, 0xac, 0x62, 0xce, 0x1b, 0xcc, 0xb5, 0xac, 0xa0, 0xa2, - 0x1f, 0x8d, 0x89, 0x5, 0x13, 0xd0, 0x83, 0x63, 0x5, 0xde, 0x6, 0xf7, - 0x2, 0xf8, 0xa3, 0x5, 0x32, 0x6, 0x4f, 0xfb, 0xae, 0x5, 0x37, 0x78, - 0x68, 0x2a, 0x23, 0x1b, 0xfb, 0x0, 0x8d, 0xe3, 0xe8, 0xa0, 0x1f, 0x8c, - 0x91, 0x90, 0xa4, 0xc0, 0xf7, 0x8f, 0x8, 0x31, 0x6, 0xfb, 0x2d, 0xfd, - 0x6e, 0x5, 0xe2, 0x6, 0xe, 0xf7, 0xb2, 0xa0, 0x76, 0xf8, 0x8e, 0x77, - 0x1, 0xbd, 0xd2, 0x15, 0xc2, 0x44, 0xf7, 0x81, 0xf7, 0x52, 0xf7, 0x22, - 0xfb, 0x52, 0xd8, 0xce, 0xfb, 0x22, 0xf7, 0x51, 0xf7, 0x73, 0xf7, 0x47, - 0x55, 0xd1, 0xfb, 0x74, 0xfb, 0x46, 0xfb, 0x23, 0xf7, 0x47, 0x3e, 0x4e, - 0xf7, 0x23, 0xfb, 0x48, 0x5, 0xe, 0x60, 0xa, 0x13, 0xa0, 0xcc, 0x16, - 0xe7, 0x6, 0xbf, 0xf7, 0x89, 0x5, 0xd5, 0x9a, 0xc6, 0xf7, 0x26, 0xf7, - 0x18, 0x1b, 0xd9, 0x8b, 0x3d, 0x47, 0x7b, 0x1f, 0x43, 0xfb, 0xd3, 0x5, - 0xe7, 0x6, 0xcf, 0xf7, 0xd3, 0x5, 0x90, 0xa1, 0x8e, 0xa0, 0x9e, 0x1a, - 0xe4, 0x5e, 0xcf, 0x31, 0x2e, 0x44, 0x44, 0x6a, 0x6c, 0x1e, 0x89, 0x8d, - 0x5, 0x13, 0xc0, 0x9f, 0xe5, 0x5, 0x38, 0x6, 0xe, 0x78, 0xd4, 0x42, - 0xf7, 0x47, 0xf8, 0x6e, 0xd0, 0x1, 0xf7, 0x9, 0xe6, 0xf7, 0xa9, 0xec, - 0x3, 0xdd, 0xf7, 0x30, 0x15, 0x35, 0x93, 0xbc, 0x32, 0xf7, 0x17, 0x1b, - 0xf7, 0x97, 0xdb, 0xf7, 0xf3, 0xf7, 0x24, 0xf7, 0x4e, 0xfb, 0x12, 0xb4, - 0x26, 0xfb, 0x30, 0xfb, 0x1, 0xfb, 0x1a, 0xfb, 0x25, 0xfb, 0x1b, 0xeb, - 0x48, 0xf7, 0x0, 0xd9, 0xc2, 0xb3, 0x9f, 0xa3, 0x1f, 0x8d, 0x89, 0x5, - 0x69, 0x82, 0x4c, 0xfb, 0x54, 0xfb, 0x18, 0x1b, 0x46, 0x70, 0xbc, 0xc8, - 0x82, 0x1f, 0xb0, 0xf7, 0x98, 0x15, 0xee, 0xdf, 0xf7, 0x3, 0xe3, 0xf4, - 0xa6, 0x34, 0x45, 0xfb, 0xe, 0x33, 0x4b, 0x37, 0x3d, 0x55, 0xc0, 0xdb, - 0x1e, 0xe, 0xa0, 0x76, 0xf9, 0x21, 0xcd, 0x8e, 0x77, 0x12, 0xcc, 0xf8, - 0xa3, 0x13, 0xd0, 0xcc, 0x16, 0xe8, 0x6, 0xbf, 0xf7, 0x88, 0x5, 0xf7, - 0xf, 0xa7, 0xe3, 0xeb, 0xe8, 0x1b, 0xd3, 0x90, 0x3d, 0x48, 0x7c, 0x1f, - 0x42, 0xfb, 0xd2, 0x5, 0xe9, 0x6, 0xcf, 0xf7, 0xd2, 0x5, 0x91, 0xa5, - 0x8d, 0xa4, 0xa2, 0x1a, 0xe0, 0x5a, 0xc6, 0x34, 0x2d, 0x44, 0x44, 0x6b, - 0x6b, 0x1e, 0x89, 0x8d, 0x9f, 0xe4, 0x5, 0x37, 0x6, 0xce, 0xe3, 0x15, - 0xcb, 0x66, 0xa, 0xa5, 0x1b, 0xa8, 0xa2, 0x80, 0x80, 0xa1, 0x1f, 0x81, - 0xa0, 0x9f, 0x81, 0xa3, 0x1b, 0xc8, 0xae, 0xc1, 0xc1, 0x90, 0x1f, 0x4d, - 0x6, 0x7d, 0x86, 0x85, 0x73, 0x71, 0x1b, 0x7d, 0x75, 0x94, 0x95, 0x73, - 0x1f, 0x13, 0xa0, 0x96, 0x70, 0x6e, 0x96, 0x70, 0x1b, 0x45, 0x79, 0x57, - 0x51, 0x7b, 0x1f, 0xe, 0x8c, 0x76, 0xf7, 0x69, 0xd5, 0xf7, 0x55, 0xd4, - 0xf7, 0x60, 0x77, 0x1, 0xf7, 0x7, 0x66, 0x15, 0xd8, 0x6, 0xb7, 0xf7, - 0x69, 0x5, 0xf7, 0x34, 0x6, 0x5f, 0xfb, 0x69, 0x5, 0xd8, 0x6, 0xb7, - 0xf7, 0x69, 0x5, 0xf7, 0x32, 0xd5, 0xfb, 0x23, 0x6, 0xb1, 0xf7, 0x55, - 0x5, 0xf4, 0xd4, 0x31, 0x6, 0xb7, 0x58, 0xa, 0xfb, 0x33, 0x6, 0xb6, - 0x58, 0xa, 0xfb, 0x2e, 0x42, 0xf7, 0x20, 0x6, 0x64, 0xfb, 0x55, 0x5, - 0x26, 0x41, 0xe2, 0x6, 0xe6, 0xd5, 0x15, 0xb1, 0xf7, 0x55, 0x5, 0xf7, - 0x35, 0x6, 0x64, 0xfb, 0x55, 0x5, 0xe, 0x7d, 0xd1, 0xf8, 0x30, 0xd1, - 0x1, 0xed, 0xe5, 0xf7, 0xb6, 0xe5, 0x3, 0xde, 0xf7, 0x67, 0x15, 0xfb, - 0x24, 0xf1, 0x3a, 0xf7, 0x6, 0xf7, 0x30, 0xf7, 0x16, 0xf7, 0x1b, 0xf7, - 0x5a, 0xf7, 0x1f, 0x33, 0xdb, 0xfb, 0x12, 0xfb, 0x4c, 0x23, 0xfb, 0x26, - 0xfb, 0x49, 0x1e, 0xe5, 0x16, 0xf7, 0x5, 0xcb, 0xf7, 0x24, 0xf7, 0x17, - 0xe1, 0xb4, 0x48, 0x3a, 0xfb, 0x5, 0x43, 0xfb, 0x2b, 0xfb, 0xf, 0x6e, - 0x29, 0x98, 0xf7, 0x22, 0x1e, 0xe, 0x7d, 0xd1, 0xf9, 0x3a, 0x77, 0x1, - 0xe8, 0xe5, 0xf7, 0xc2, 0xe5, 0x3, 0xf7, 0xd3, 0xf8, 0xe7, 0x15, 0xd6, - 0x6, 0xf7, 0x19, 0x6f, 0xa, 0xfb, 0x7, 0x6, 0xfb, 0xdd, 0x29, 0xa, - 0x7d, 0xd1, 0xf8, 0xaf, 0xf7, 0x1f, 0x1, 0xe8, 0xe5, 0xf7, 0xbd, 0xe5, - 0x3, 0xf7, 0x8c, 0xf8, 0xe7, 0x15, 0xe8, 0x6, 0xdc, 0xe5, 0xb3, 0x31, - 0x5, 0xdb, 0x6, 0x4d, 0x6f, 0xa, 0x28, 0x6, 0xfb, 0xbe, 0x29, 0xa, - 0x7d, 0xd0, 0xf8, 0xba, 0xf0, 0x1, 0xe8, 0xe5, 0xf7, 0xb8, 0xe5, 0x3, - 0xde, 0xf7, 0x64, 0x24, 0xa, 0xf7, 0xa7, 0xf8, 0x21, 0x15, 0xe9, 0x6, - 0xa1, 0xf0, 0x4d, 0xa, 0xfb, 0x61, 0x26, 0x15, 0xe9, 0x6, 0xa0, 0xf0, - 0x5, 0x2d, 0x6, 0xe, 0xf9, 0x1a, 0x7c, 0xd4, 0x42, 0xf7, 0x4f, 0xcd, - 0xd0, 0xf7, 0x36, 0xd0, 0x1, 0xde, 0xe4, 0xf9, 0x53, 0xe4, 0x3, 0xf8, - 0x8b, 0xe3, 0x15, 0x40, 0xb3, 0xd0, 0x6f, 0xd3, 0x1b, 0xf7, 0x11, 0xe1, - 0xed, 0xe0, 0xb0, 0x1f, 0x2d, 0x94, 0x5, 0x61, 0x79, 0x54, 0x3e, 0x3b, - 0x1b, 0xfb, 0x2, 0x7d, 0xf7, 0xe, 0xc5, 0x93, 0x1f, 0xf8, 0x16, 0x6, - 0x8f, 0x9e, 0x90, 0xb1, 0xa4, 0x1a, 0xf7, 0x13, 0x3a, 0xe6, 0xfb, 0x14, - 0xfb, 0x0, 0x53, 0x52, 0x61, 0x63, 0x1e, 0xee, 0x53, 0xfb, 0x0, 0x8b, - 0x75, 0x1b, 0xfb, 0x52, 0x2f, 0xfb, 0x43, 0xfb, 0x32, 0xfb, 0x32, 0xf1, - 0x4d, 0xf7, 0x0, 0xf7, 0xc, 0xc8, 0xd1, 0xac, 0xa8, 0x1f, 0xfb, 0xdf, - 0xf7, 0x9, 0x15, 0xdd, 0xbb, 0xf7, 0x4a, 0xf7, 0x26, 0xea, 0xa7, 0x32, - 0x56, 0xfb, 0x1, 0x4b, 0xfb, 0x38, 0xfb, 0x17, 0xfb, 0xe, 0x8b, 0xf7, - 0xf, 0xa7, 0x1e, 0xf8, 0x2f, 0xf1, 0x15, 0xf7, 0x17, 0xb7, 0xdb, 0xaa, - 0xbc, 0x1b, 0xa0, 0xf7, 0x4, 0x87, 0xfb, 0x32, 0x7d, 0x1f, 0xe, 0xae, - 0xfb, 0x60, 0x76, 0xf7, 0x75, 0x77, 0x1, 0xb6, 0xc9, 0x3, 0xda, 0x16, - 0x75, 0x5d, 0x7d, 0x5a, 0x64, 0x1a, 0x6e, 0x93, 0x4d, 0xdb, 0xbb, 0xb2, - 0x9c, 0x96, 0x9e, 0x1e, 0x97, 0xc7, 0x5, 0x7c, 0x66, 0x70, 0x83, 0x74, - 0x1b, 0x81, 0x5c, 0x91, 0xc1, 0xae, 0xa1, 0xbd, 0x91, 0x9a, 0x1f, 0xe, - 0x7d, 0xd1, 0x1, 0xf2, 0xe5, 0xf7, 0xb8, 0xe5, 0x3, 0xf8, 0x1c, 0xf8, - 0xe7, 0x56, 0xa, 0x6f, 0xa, 0xfb, 0x1, 0x6, 0xfb, 0x68, 0x29, 0xa, - 0xa0, 0x76, 0xf8, 0xa4, 0xf7, 0x43, 0x1, 0xf7, 0x63, 0xf7, 0xc1, 0x3, - 0xf7, 0xb7, 0x16, 0xdb, 0x6, 0xf7, 0x1d, 0xf9, 0x53, 0x5, 0x5c, 0x6, - 0x5a, 0x35, 0xfb, 0x18, 0x40, 0x51, 0x72, 0x7c, 0x3d, 0x18, 0xbd, 0x99, - 0xdd, 0xa9, 0xbf, 0xba, 0x8d, 0x89, 0x18, 0xe, 0xf8, 0xac, 0x80, 0xc4, - 0x5f, 0x76, 0xf7, 0xc5, 0xc3, 0xf7, 0xfc, 0x77, 0xa0, 0x77, 0x12, 0xf9, - 0x92, 0xd1, 0x13, 0x6c, 0xf7, 0x6, 0x78, 0x15, 0xd5, 0x6, 0xf9, 0x1f, - 0xf9, 0x66, 0x5, 0x3a, 0x6, 0x13, 0xb4, 0xfb, 0x7d, 0xfd, 0x5e, 0x15, - 0xf7, 0xa7, 0x6, 0x96, 0xc4, 0x5, 0xfb, 0x43, 0x6, 0x9d, 0xa2, 0xa0, - 0x97, 0xca, 0xb2, 0x8, 0xc1, 0xac, 0xb7, 0xa9, 0xc5, 0x1a, 0xba, 0x6b, - 0xc1, 0x2a, 0x3c, 0x5a, 0x6a, 0x44, 0x78, 0x1e, 0xd1, 0x85, 0x5, 0xb3, - 0x98, 0xa4, 0x99, 0xb4, 0x1b, 0xb3, 0x9c, 0x74, 0x75, 0x6b, 0x72, 0x7d, - 0x5a, 0x6e, 0x1f, 0xfb, 0xf, 0x44, 0x6f, 0x55, 0x7b, 0x57, 0x8, 0xfb, - 0xaa, 0xf7, 0xfd, 0x15, 0xd1, 0x6, 0xd4, 0xf7, 0xf4, 0x5, 0x57, 0x6, - 0x5d, 0x53, 0x3c, 0x6f, 0x79, 0x85, 0x7e, 0x50, 0x18, 0xa8, 0x90, 0xb7, - 0x96, 0xb7, 0xab, 0x8, 0xe, 0x65, 0xa, 0xf8, 0xe0, 0x77, 0xa0, 0x77, - 0x12, 0x13, 0x68, 0xf8, 0x6a, 0xc7, 0x15, 0xf7, 0x36, 0x6, 0x7e, 0x44, - 0x5, 0xc6, 0x6, 0x99, 0xd2, 0x5, 0xb4, 0x6, 0x13, 0xa8, 0x96, 0xc1, - 0x5, 0x61, 0x6, 0xb5, 0xf7, 0x77, 0x5, 0x59, 0x6, 0xfb, 0x6a, 0xfb, - 0x74, 0x5, 0xd0, 0x88, 0x15, 0xf7, 0xb, 0xf7, 0xf, 0x70, 0xfb, 0xf, - 0x5, 0xfc, 0x7f, 0xfb, 0x19, 0x15, 0xce, 0x6, 0xf8, 0xdd, 0xf9, 0x66, - 0x5, 0x42, 0x6, 0xfc, 0x74, 0xfb, 0xf5, 0x15, 0xcb, 0x6, 0x13, 0x70, - 0xcc, 0xf7, 0xf4, 0x5, 0x5c, 0x6, 0x64, 0x55, 0x41, 0x6c, 0x7b, 0x86, - 0x80, 0x4f, 0x18, 0xa5, 0x91, 0xb2, 0x95, 0xb3, 0xab, 0x8, 0xe, 0xae, - 0xf7, 0xc2, 0x76, 0xf8, 0x3a, 0x77, 0x1, 0xf7, 0x7a, 0xf7, 0xad, 0x15, - 0xd1, 0x6, 0xd2, 0xf8, 0x3a, 0x5, 0x58, 0x6, 0x5d, 0x48, 0x3d, 0x6b, - 0x79, 0x84, 0x7f, 0x43, 0x18, 0xa7, 0x92, 0xb6, 0x98, 0xb8, 0xb1, 0x8, - 0xe, 0xd3, 0xf7, 0xd1, 0x77, 0xa7, 0x76, 0xf7, 0x4d, 0xd0, 0xf7, 0x47, - 0x77, 0x12, 0xef, 0xd6, 0x13, 0xb8, 0xf7, 0xee, 0xf7, 0xd1, 0x15, 0xd3, - 0x6, 0x84, 0x97, 0x88, 0x95, 0xac, 0x1a, 0x99, 0x89, 0x9d, 0xa0, 0xda, - 0x1e, 0x96, 0xb4, 0x95, 0xb5, 0xb2, 0x1a, 0xd6, 0x6d, 0xc4, 0xfb, 0x4, - 0xfb, 0xa, 0x63, 0x30, 0x69, 0x7e, 0x1e, 0xd6, 0x7d, 0x5, 0xd0, 0xa6, - 0xc4, 0x8c, 0x96, 0x1b, 0xad, 0xb1, 0x76, 0x63, 0x81, 0x89, 0x7f, 0x86, - 0x7c, 0x1f, 0x6b, 0x84, 0x7b, 0x87, 0x5f, 0x8a, 0x8, 0x53, 0x88, 0xfb, - 0xe, 0x82, 0xfb, 0x11, 0x1a, 0x13, 0x78, 0x63, 0xa4, 0x3e, 0xe7, 0xc2, - 0xbc, 0xab, 0x9d, 0x9d, 0x1e, 0x13, 0xb8, 0x8f, 0x74, 0x8b, 0x88, 0x8e, - 0x80, 0x8, 0x95, 0xf7, 0x50, 0x15, 0xfb, 0x16, 0x71, 0x3a, 0x89, 0x7a, - 0x1b, 0x79, 0x64, 0x97, 0xb6, 0xb9, 0xbb, 0x95, 0xab, 0x90, 0x1f, 0xc9, - 0x90, 0x94, 0x8e, 0xa9, 0x93, 0x8, 0xe, 0xce, 0xf7, 0xc4, 0xd7, 0xf7, - 0xad, 0xd7, 0x1, 0xef, 0xd8, 0xf7, 0x6a, 0xd8, 0x3, 0xef, 0xf8, 0x84, - 0x15, 0x27, 0xa9, 0x2f, 0xf7, 0x18, 0xf7, 0x10, 0xdd, 0xf7, 0x22, 0xf7, - 0x6, 0xe7, 0x53, 0xe0, 0xfb, 0x1, 0xfb, 0x23, 0x4f, 0xfb, 0x2f, 0x35, - 0x1e, 0xd8, 0x8d, 0x15, 0xbe, 0xb4, 0xf7, 0x4, 0xe0, 0xbe, 0xb0, 0x61, - 0x50, 0x3c, 0x5b, 0x26, 0x3a, 0x4e, 0x73, 0xbe, 0xce, 0x1e, 0xe, 0xf7, - 0xcd, 0x9b, 0xca, 0xf8, 0x2, 0xca, 0x1, 0xbc, 0xd6, 0xf7, 0xf0, 0xd8, - 0x3, 0xb8, 0x94, 0x15, 0xb8, 0x6c, 0xc4, 0xcb, 0x5, 0x80, 0x9f, 0xb5, - 0x79, 0xca, 0x1b, 0xf7, 0x37, 0xf7, 0xb, 0xf7, 0x13, 0xf7, 0x3d, 0xc4, - 0x80, 0xb9, 0x6e, 0xae, 0x1f, 0xc6, 0xcd, 0x5e, 0xab, 0x51, 0x4b, 0x5, - 0x93, 0x7e, 0x63, 0xa2, 0x43, 0x1b, 0xfb, 0x63, 0x41, 0xfb, 0x3d, 0xfb, - 0x18, 0x40, 0xa2, 0x67, 0x9b, 0x71, 0x1f, 0xc5, 0xca, 0x15, 0x7e, 0xa2, - 0x82, 0xa2, 0xa8, 0x1a, 0xec, 0xcc, 0xf7, 0x20, 0xf7, 0x1d, 0xba, 0xa2, - 0x7a, 0x84, 0x93, 0x1e, 0xfb, 0x72, 0xfb, 0xdc, 0x15, 0xf7, 0x97, 0xf7, - 0xb1, 0x5, 0x90, 0x7c, 0x9b, 0x78, 0x64, 0x1a, 0x24, 0x3b, 0xfb, 0x16, - 0xfb, 0x11, 0x6e, 0x72, 0x93, 0x98, 0x76, 0x1e, 0xe, 0x7d, 0xd0, 0xf8, - 0x15, 0xcf, 0xf2, 0xf7, 0x0, 0x49, 0xcd, 0x8e, 0x77, 0x12, 0xe5, 0xe8, - 0xf7, 0xb8, 0xe8, 0x13, 0xe6, 0xf7, 0x8b, 0xf8, 0xf7, 0x15, 0xcb, 0x6, - 0x13, 0xd6, 0xa4, 0x91, 0x96, 0x9c, 0xa5, 0x1b, 0xad, 0xa1, 0x7d, 0x7f, - 0xa3, 0x1f, 0x82, 0x9d, 0x9e, 0x83, 0xa2, 0x1b, 0xc8, 0xae, 0xc2, 0xc1, - 0x91, 0x1f, 0x4c, 0x69, 0xa, 0x70, 0x1b, 0x7c, 0x78, 0x96, 0x95, 0x73, - 0x1f, 0x13, 0xce, 0x96, 0x73, 0x6e, 0x95, 0x69, 0x1b, 0x13, 0xe6, 0x45, - 0x79, 0x57, 0x50, 0x7b, 0x1f, 0xfb, 0x38, 0xfc, 0x27, 0x24, 0xa, 0xe, - 0xfb, 0x4e, 0x76, 0xf7, 0x53, 0xd5, 0xf8, 0x2a, 0xc9, 0x4d, 0xd5, 0x12, - 0xf8, 0x80, 0xe7, 0x13, 0xd8, 0xf7, 0x3b, 0xdd, 0x15, 0x4b, 0xad, 0xbb, - 0x69, 0xd0, 0x1b, 0xf7, 0x1c, 0xf7, 0x16, 0xf7, 0x25, 0xf7, 0x53, 0xf7, - 0x21, 0x3c, 0xd8, 0x26, 0x45, 0x5c, 0x65, 0x5d, 0x5c, 0x1f, 0x13, 0xe8, - 0x9b, 0xd3, 0x5, 0x35, 0x6, 0xfb, 0x30, 0xfd, 0x71, 0x5, 0xe7, 0x6, - 0xe5, 0xf8, 0x38, 0x15, 0xe0, 0xcb, 0xf7, 0x3a, 0xf7, 0x9, 0xda, 0xaf, - 0x43, 0x43, 0x3e, 0x5c, 0xfb, 0x4d, 0xfb, 0x17, 0x31, 0x6f, 0xda, 0xd7, - 0x1e, 0xe, 0xf7, 0x83, 0xfb, 0x2c, 0x76, 0xf9, 0xc0, 0xda, 0x1, 0xf7, - 0xd2, 0xfb, 0x41, 0x15, 0xd9, 0xf9, 0xc0, 0xf6, 0xfd, 0xc0, 0xda, 0xf9, - 0xc0, 0xcf, 0xda, 0xfb, 0xc0, 0x6, 0xfb, 0xb, 0x22, 0x47, 0xfb, 0x19, - 0x29, 0xd5, 0x2d, 0xf7, 0xa, 0x1f, 0xe, 0x61, 0xa, 0xf7, 0x0, 0xe2, - 0x3, 0xf7, 0x4d, 0xfb, 0x63, 0x15, 0xcd, 0x6, 0x68, 0xf7, 0x0, 0x76, - 0xf7, 0x6, 0xf7, 0x5, 0x1a, 0xf7, 0xda, 0xf7, 0x74, 0xf7, 0x85, 0xae, - 0xb1, 0x1e, 0x46, 0x6, 0xfb, 0x0, 0xfb, 0x12, 0xfb, 0x3d, 0xfb, 0x4b, - 0xfb, 0xbc, 0x1a, 0xfb, 0x5, 0xa6, 0xfb, 0x5, 0xbd, 0xfb, 0x1, 0x1e, - 0xe, 0x61, 0xa, 0xf7, 0x8e, 0xe2, 0x3, 0x82, 0xfb, 0x63, 0x15, 0xd0, - 0x6, 0xf7, 0x0, 0xf7, 0x12, 0xf7, 0x3d, 0xf7, 0x42, 0xf7, 0xbc, 0x1a, - 0xf7, 0x5, 0x70, 0xf7, 0xe, 0x59, 0xf7, 0x1, 0x1e, 0x49, 0x6, 0xae, - 0xfb, 0x0, 0xa0, 0xfb, 0xf, 0xfb, 0x5, 0x1a, 0xfb, 0xda, 0xfb, 0x74, - 0xfb, 0x7c, 0x68, 0x65, 0x1e, 0xe, 0xf8, 0xe3, 0x78, 0xc3, 0xf7, 0x89, - 0xc7, 0x86, 0xc4, 0xf7, 0x8a, 0xc4, 0x91, 0x77, 0x12, 0xf7, 0x27, 0xd8, - 0xf7, 0x3d, 0xd7, 0xee, 0xd7, 0xf7, 0x3c, 0xd8, 0x13, 0xd7, 0x80, 0xf8, - 0xcc, 0xf7, 0x2, 0x15, 0x68, 0x8b, 0x2d, 0xf7, 0x18, 0xf7, 0x4f, 0x8d, - 0xf7, 0x74, 0x91, 0xf7, 0x1, 0x3f, 0xa1, 0x4b, 0x1e, 0xfb, 0x18, 0x5a, - 0xfb, 0x3c, 0x4b, 0x1f, 0xd7, 0x16, 0xae, 0x9f, 0xf7, 0x1d, 0xe3, 0x96, - 0xbc, 0x84, 0x4b, 0x7c, 0x80, 0xfb, 0x33, 0x28, 0x1e, 0x13, 0x37, 0x0, - 0x53, 0x89, 0xbe, 0xa1, 0x1f, 0xfc, 0x85, 0xf7, 0xfd, 0x15, 0x13, 0xb7, - 0x80, 0x68, 0x8b, 0x28, 0xf7, 0x18, 0xf7, 0x4f, 0x8e, 0xf7, 0x72, 0x92, - 0xf7, 0x1, 0x3f, 0xa1, 0x49, 0x1e, 0x13, 0x36, 0x0, 0xfb, 0x16, 0x59, - 0xfb, 0x36, 0x4b, 0x1f, 0xd8, 0x16, 0xad, 0x9f, 0xf7, 0x1b, 0xe2, 0x9f, - 0xb5, 0x7a, 0x52, 0x7d, 0x80, 0xfb, 0x32, 0x26, 0x1e, 0x13, 0x8c, 0x0, - 0x54, 0x89, 0xc3, 0xa0, 0x1f, 0x5f, 0xfc, 0x7e, 0x15, 0xde, 0x6, 0x13, - 0xcf, 0x80, 0xf8, 0xe7, 0xf9, 0x66, 0x5, 0x3a, 0x6, 0xe, 0x77, 0x8b, - 0xf5, 0x1, 0xe2, 0x16, 0xf4, 0x6, 0xa1, 0xf5, 0x5, 0x22, 0x6, 0xe, - 0x77, 0xf7, 0x52, 0xf7, 0x11, 0x1, 0xf7, 0x15, 0xf7, 0x52, 0x15, 0xf5, - 0x6, 0xa1, 0xf7, 0x11, 0x5, 0x21, 0x6, 0xe, 0xf9, 0x52, 0x78, 0xc3, - 0xf7, 0x8c, 0xc4, 0x8b, 0xc3, 0xf7, 0x8b, 0xc3, 0x8d, 0x77, 0x12, 0xe3, - 0xd3, 0xf7, 0x31, 0xd3, 0x8e, 0xd3, 0x13, 0xf7, 0xf7, 0x34, 0xf8, 0x6b, - 0x15, 0x95, 0x9a, 0xf7, 0x38, 0xe4, 0xc0, 0x8b, 0x52, 0x82, 0x67, 0x75, - 0xfb, 0x25, 0x39, 0x56, 0x8b, 0xbd, 0xa2, 0x1e, 0x64, 0xfc, 0x7e, 0x15, - 0xd4, 0x6, 0x13, 0xe8, 0xf8, 0x67, 0xf9, 0x66, 0x5, 0x41, 0x6, 0xfc, - 0x87, 0xfb, 0x7c, 0x5b, 0xa, 0xf7, 0x53, 0xb9, 0x1e, 0x13, 0xf0, 0xd5, - 0x5e, 0xbb, 0x3d, 0xfb, 0x1a, 0x5f, 0xfb, 0x26, 0x37, 0x1e, 0xf7, 0xc4, - 0xfb, 0xfd, 0x5b, 0xa, 0xf7, 0x51, 0xb9, 0xd6, 0x5e, 0xbb, 0x3d, 0xfb, - 0x1a, 0x5f, 0xfb, 0x25, 0x37, 0x1e, 0xd3, 0x16, 0x96, 0x9a, 0xf7, 0x35, - 0xe4, 0xc0, 0x8b, 0x53, 0x81, 0x68, 0x75, 0xfb, 0x24, 0x39, 0x1e, 0x13, - 0x81, 0x56, 0x8b, 0xbd, 0xa2, 0x1f, 0xf7, 0x9d, 0x16, 0x74, 0x8b, 0x21, - 0xf7, 0x10, 0x1e, 0x13, 0x0, 0xf7, 0x2e, 0xa1, 0xf7, 0x53, 0xb7, 0xd7, - 0x5d, 0xba, 0x3f, 0x1f, 0x13, 0x80, 0xfb, 0xe, 0x53, 0xfb, 0x2b, 0x3d, - 0x1f, 0xd3, 0x16, 0x96, 0x9a, 0xf7, 0x35, 0xe4, 0xbf, 0x8b, 0x53, 0x81, - 0x68, 0x75, 0xfb, 0x24, 0x3a, 0x1e, 0x13, 0x0, 0x56, 0x8b, 0xbd, 0xa2, - 0x1f, 0xe, 0xf7, 0xb2, 0xf7, 0x64, 0xe2, 0x1, 0xf7, 0xc0, 0xe6, 0x3, - 0xe0, 0xf7, 0x64, 0x15, 0xf7, 0x6b, 0xfb, 0x64, 0xe6, 0xf7, 0x64, 0xf7, - 0x6b, 0xe2, 0xfb, 0x6b, 0xf7, 0x66, 0x30, 0xfb, 0x66, 0xfb, 0x6b, 0x6, - 0xe, 0xf7, 0xb2, 0x8b, 0xcf, 0xf7, 0x64, 0xcf, 0xf7, 0x36, 0x77, 0x1, - 0xf7, 0xa0, 0xf7, 0x6, 0x15, 0xdd, 0x6, 0xbf, 0xf7, 0x36, 0x5, 0xf7, - 0x55, 0x6, 0xa2, 0xcf, 0x5, 0xfb, 0x55, 0x6, 0xbf, 0xf7, 0x36, 0x5, - 0x3a, 0x6, 0x57, 0xfb, 0x36, 0x5, 0xfb, 0x56, 0x6, 0x75, 0x47, 0x5, - 0xf7, 0x55, 0x6, 0xfb, 0xae, 0xfb, 0xa8, 0x15, 0xf8, 0x67, 0x6, 0xa1, - 0xcf, 0x5, 0xfc, 0x66, 0x6, 0xe, 0xfb, 0x4e, 0x76, 0xf7, 0x53, 0xd4, - 0xf8, 0x2c, 0xd4, 0x7f, 0x77, 0x12, 0xdf, 0xe7, 0x13, 0xd8, 0xf8, 0x31, - 0xc1, 0x15, 0x52, 0xfb, 0x99, 0x5, 0xe8, 0x6, 0xf7, 0x30, 0xf9, 0x71, - 0x5, 0x3b, 0x6, 0x77, 0x2a, 0x5, 0x13, 0xe8, 0xf5, 0x5b, 0x37, 0x8e, - 0x74, 0x1b, 0xfb, 0x26, 0xfb, 0xc, 0xfb, 0x1d, 0xfb, 0x52, 0xfb, 0x3c, - 0xf4, 0x50, 0xd4, 0xb3, 0xba, 0x99, 0xc3, 0xcb, 0x1f, 0xfb, 0x81, 0xf7, - 0x31, 0x15, 0xd1, 0xb7, 0xf7, 0x4c, 0xf7, 0x16, 0xd2, 0xbd, 0x4f, 0x3c, - 0xfb, 0x4, 0x44, 0xfb, 0x31, 0xfb, 0x3, 0x43, 0x62, 0xc1, 0xef, 0x1e, - 0xe, 0x8b, 0xef, 0xf8, 0xbf, 0xd3, 0x1, 0xf7, 0x86, 0xf3, 0x3, 0xf7, - 0x89, 0xf7, 0x47, 0x15, 0xe1, 0x6, 0x96, 0xc7, 0x95, 0xa4, 0xea, 0xd4, - 0x8, 0xe7, 0xd3, 0xd2, 0xc1, 0xe5, 0x1a, 0xeb, 0x35, 0xd9, 0xfb, 0x14, - 0xfb, 0x28, 0x34, 0xfb, 0x9, 0x31, 0x1e, 0xe8, 0x7c, 0x5, 0xb0, 0x90, - 0x9a, 0xf7, 0x5, 0xf7, 0x10, 0x1b, 0xd1, 0xbe, 0x5a, 0x56, 0x4c, 0x49, - 0x5c, 0x56, 0x61, 0x1f, 0x39, 0x4b, 0x4f, 0x5b, 0x7e, 0xfb, 0x2, 0x8, - 0x5d, 0xfb, 0x47, 0x15, 0xf3, 0x6, 0xa1, 0xef, 0x5, 0x23, 0x6, 0xe, - 0xf7, 0xcd, 0xfb, 0x5d, 0xd3, 0xf8, 0x73, 0x77, 0xee, 0xeb, 0x1, 0xe0, - 0xe8, 0x3, 0xf8, 0x56, 0xa2, 0x15, 0x86, 0x66, 0x61, 0xfb, 0x6, 0x24, - 0x8a, 0x8, 0x44, 0x8a, 0x58, 0xb8, 0xc0, 0x1a, 0xcb, 0xcd, 0xc0, 0xc0, - 0xb5, 0x1e, 0xde, 0xcb, 0xc8, 0xbb, 0x98, 0xf7, 0x3, 0x8, 0x34, 0x6, - 0x80, 0x4e, 0x81, 0x72, 0x2b, 0x42, 0x8, 0x2e, 0x43, 0x43, 0x4f, 0x30, - 0x1a, 0x2b, 0xe2, 0x42, 0xf7, 0x16, 0xf7, 0xd, 0xf7, 0x3, 0xf5, 0xf2, - 0x1e, 0xfb, 0x35, 0xf8, 0x39, 0x15, 0xf4, 0x6, 0xa1, 0xeb, 0x5, 0x22, - 0x6, 0xe, 0xc4, 0xf8, 0x78, 0x44, 0xa, 0xf7, 0x3c, 0xf7, 0xa2, 0x3, - 0xf7, 0xd5, 0xf8, 0x63, 0x15, 0xbc, 0x6, 0xb8, 0xf7, 0x1f, 0xa2, 0xf7, - 0x8, 0x3f, 0xa, 0x74, 0xfb, 0x8, 0x5, 0xfb, 0x31, 0xfb, 0x1f, 0x15, - 0xbc, 0x6, 0xb9, 0xf7, 0x1f, 0xa1, 0xf7, 0x8, 0x3f, 0xa, 0x75, 0xfb, - 0x8, 0x5, 0xe, 0xae, 0xfb, 0x14, 0x76, 0xf7, 0x2a, 0xf4, 0x1, 0xa4, - 0x8c, 0x15, 0x37, 0xa, 0x83, 0x62, 0x18, 0x67, 0xa, 0x93, 0xb0, 0x9d, - 0xe6, 0x18, 0x22, 0x6, 0xf7, 0x24, 0x22, 0x15, 0x62, 0xa, 0x83, 0x62, - 0x18, 0xf6, 0x3c, 0xa, 0x22, 0x6, 0xe, 0xae, 0xf8, 0x6a, 0xf4, 0xf7, - 0x2a, 0x77, 0x1, 0xf7, 0x1e, 0xf4, 0x3, 0xf7, 0xc3, 0xf8, 0x6a, 0x33, - 0xa, 0xfb, 0x4c, 0x30, 0x33, 0xa, 0xe, 0xae, 0xf8, 0x78, 0x76, 0xf7, - 0x2a, 0xf4, 0x1, 0xf7, 0x10, 0xf8, 0x63, 0x15, 0x67, 0xa, 0x93, 0xb0, - 0x9d, 0xe6, 0x18, 0x22, 0x6, 0x75, 0x22, 0x5, 0x37, 0xa, 0x8, 0xf7, - 0x32, 0x62, 0x15, 0xf6, 0x3c, 0xa, 0x22, 0x6, 0x75, 0x22, 0x5, 0x62, - 0xa, 0x8, 0xe, 0x3f, 0xf8, 0x7f, 0x44, 0xa, 0xf7, 0x39, 0xf8, 0x6a, - 0x3b, 0xa, 0xea, 0xb7, 0x95, 0x41, 0xa, 0xfb, 0x4, 0x84, 0x66, 0x8, - 0xe, 0x3f, 0xf8, 0x78, 0x44, 0xa, 0xf7, 0x2b, 0xf8, 0x63, 0x15, 0xf7, - 0x0, 0x3c, 0xa, 0x21, 0x6, 0x75, 0x22, 0x5, 0x37, 0xa, 0x8, 0xe, - 0x3f, 0xfb, 0x14, 0x44, 0xa, 0xbf, 0x8c, 0x15, 0x37, 0xa, 0x83, 0x62, - 0x18, 0xf7, 0x0, 0x99, 0xa3, 0xf7, 0x5, 0x93, 0xb0, 0x9e, 0xe6, 0x18, - 0x21, 0x6, 0xe, 0x20, 0xf8, 0x78, 0x44, 0xa, 0xf7, 0x31, 0xf8, 0x63, - 0x15, 0xc1, 0x6, 0xbc, 0xf7, 0x1f, 0xa4, 0xf7, 0x8, 0x57, 0xa, 0x72, - 0xfb, 0x8, 0x5, 0xe, 0xae, 0xa0, 0x76, 0xf8, 0x59, 0xd4, 0x42, 0xe0, - 0x12, 0x13, 0xa0, 0xd8, 0x16, 0xdb, 0x6, 0xb5, 0xf7, 0x67, 0x5, 0xf7, - 0x3, 0xa1, 0xc0, 0xf7, 0x17, 0xe4, 0x1b, 0x9c, 0x9b, 0x86, 0x7e, 0x9a, - 0x1f, 0xae, 0xdf, 0x5, 0x96, 0x76, 0x78, 0x93, 0x74, 0x1b, 0x41, 0x56, - 0x37, 0x68, 0x77, 0x1f, 0x13, 0xc0, 0x9e, 0xf6, 0x5, 0x41, 0x6, 0xe, - 0xf8, 0x4b, 0x78, 0xca, 0xf7, 0xab, 0xc3, 0xf7, 0xe, 0xc2, 0xf7, 0xa, - 0xca, 0x1, 0xc1, 0xcc, 0xf9, 0x21, 0xcc, 0x3, 0xf7, 0x93, 0xf7, 0x2a, - 0x15, 0xd0, 0x6, 0xad, 0xf7, 0x41, 0x5, 0xb3, 0x6, 0xc1, 0x9c, 0x76, - 0x33, 0xad, 0x1f, 0xa3, 0x4b, 0x5, 0xde, 0x6, 0x68, 0xda, 0x65, 0xdc, - 0x7a, 0x98, 0x73, 0x93, 0x19, 0x8c, 0x8d, 0xe3, 0x90, 0xb8, 0xc4, 0x94, - 0xb9, 0x19, 0xec, 0x9d, 0x2d, 0x9d, 0x3a, 0x1b, 0xfb, 0x27, 0x6, 0xad, - 0xfb, 0x45, 0x15, 0xa4, 0xf7, 0xe, 0x5, 0xd9, 0x6, 0xb4, 0xcd, 0x8b, - 0x4f, 0x7f, 0x1f, 0x4d, 0x7e, 0x45, 0x8b, 0x6b, 0x1b, 0xfc, 0x22, 0x78, - 0x15, 0xfb, 0x66, 0xf7, 0x44, 0xfb, 0x3d, 0xf7, 0x6c, 0xf7, 0x6d, 0xf7, - 0x42, 0xf7, 0x3e, 0xf7, 0x65, 0xf7, 0x65, 0xfb, 0x45, 0xf7, 0x3c, 0xfb, - 0x6a, 0xfb, 0x6a, 0xfb, 0x46, 0xfb, 0x3b, 0xfb, 0x66, 0x1e, 0xcc, 0x16, - 0xf7, 0x42, 0xf7, 0x25, 0xf7, 0x20, 0xf7, 0x48, 0xf7, 0x4a, 0xf7, 0x26, - 0xfb, 0x20, 0xfb, 0x42, 0xfb, 0x43, 0xfb, 0x26, 0xfb, 0x21, 0xfb, 0x4a, - 0xfb, 0x48, 0xfb, 0x25, 0xf7, 0x21, 0xf7, 0x43, 0x1e, 0xe, 0xae, 0xf8, - 0xd0, 0xb1, 0xf7, 0x0, 0xb1, 0x1, 0xf7, 0x6a, 0xb2, 0xf7, 0x2, 0xb2, - 0x3, 0xf7, 0x6a, 0xf9, 0x2d, 0x15, 0x57, 0xb6, 0x62, 0xbe, 0xbe, 0xb6, - 0xb4, 0xbf, 0xbe, 0x61, 0xb3, 0x57, 0x57, 0x61, 0x63, 0x58, 0x1e, 0xb2, - 0x89, 0x15, 0xaa, 0xa3, 0xa3, 0xaa, 0xaa, 0xa3, 0x74, 0x6b, 0x6d, 0x73, - 0x74, 0x6c, 0x6d, 0x72, 0xa2, 0xa9, 0x1e, 0xe, 0xf7, 0x5e, 0x7c, 0xd0, - 0xf8, 0x33, 0xd0, 0x12, 0xf7, 0x1d, 0xde, 0xf7, 0x49, 0xe6, 0x57, 0xe4, - 0x13, 0xf0, 0xca, 0xf7, 0x46, 0x15, 0xfb, 0x49, 0xf7, 0x39, 0x7f, 0xbd, - 0xf7, 0x27, 0xce, 0xd4, 0xd8, 0xeb, 0x3f, 0xb7, 0x2a, 0xb5, 0x1e, 0x49, - 0xa7, 0x6a, 0x94, 0xb5, 0x1a, 0xaa, 0xac, 0xb5, 0xcc, 0x1e, 0x13, 0xe8, - 0x9b, 0xf5, 0x81, 0x2e, 0x1f, 0xe4, 0x90, 0x5, 0xf7, 0x1c, 0xfb, 0x14, - 0xaa, 0x3e, 0xfb, 0x1f, 0x5b, 0x3c, 0x4c, 0x34, 0xcd, 0x66, 0xe5, 0x63, - 0x1e, 0x13, 0xf0, 0xca, 0x6f, 0xb8, 0x75, 0x5c, 0x1a, 0x58, 0x56, 0x6d, - 0x4a, 0xfb, 0x14, 0x89, 0xf0, 0xa8, 0x1e, 0xe, 0xf7, 0x5e, 0x7c, 0xd1, - 0xf8, 0x36, 0xd1, 0x12, 0xf7, 0x20, 0xe2, 0x9f, 0xde, 0xe2, 0xe9, 0x55, - 0xe8, 0x13, 0xf8, 0xca, 0xf7, 0x47, 0x15, 0xfb, 0x4b, 0xf7, 0x40, 0x80, - 0xbf, 0xf7, 0x2e, 0xd1, 0xd6, 0xd7, 0xec, 0x3b, 0xb6, 0x27, 0xb6, 0x1e, - 0x46, 0xa8, 0x68, 0x8a, 0xb5, 0x1a, 0xaa, 0xae, 0xc0, 0xcf, 0x1e, 0x13, - 0xf4, 0x9b, 0xf7, 0x3, 0x8f, 0xfb, 0x0, 0x1f, 0xe8, 0x90, 0x5, 0xf7, - 0x1e, 0xfb, 0x19, 0xaa, 0x3a, 0xfb, 0x27, 0x5a, 0x31, 0x4b, 0x34, 0xd0, - 0x6f, 0xe9, 0x63, 0x1e, 0x13, 0xf8, 0xce, 0x6e, 0xba, 0x77, 0x5a, 0x1a, - 0x58, 0x52, 0x6d, 0x48, 0xfb, 0x19, 0x88, 0xf1, 0xa8, 0x1e, 0xf7, 0x2f, - 0xf8, 0x2d, 0x15, 0xf1, 0x6, 0xf7, 0x1e, 0xf7, 0x1f, 0x50, 0xa, 0x36, - 0x31, 0x62, 0xe5, 0x5, 0x38, 0x6, 0xe, 0xfb, 0x53, 0xce, 0xf9, 0xaa, - 0xd2, 0x1, 0xd7, 0x71, 0x15, 0xfb, 0xb, 0xa4, 0xe7, 0x5d, 0xe8, 0x1b, - 0xf7, 0xb, 0xd0, 0xdc, 0xd9, 0xae, 0x7d, 0xae, 0x6a, 0xb1, 0x1f, 0xed, - 0xbb, 0xad, 0xbe, 0xc2, 0x1a, 0xc9, 0x68, 0xba, 0x29, 0xdb, 0x1e, 0x3b, - 0xcd, 0x5a, 0xb4, 0xc2, 0x1a, 0xb9, 0xb3, 0xb2, 0xc5, 0x9d, 0xe0, 0x88, - 0x27, 0x1e, 0xe1, 0x96, 0x5, 0xbd, 0x83, 0x7a, 0xf7, 0x5, 0xfb, 0x34, - 0x1b, 0xfb, 0xd, 0x4e, 0x40, 0x38, 0x66, 0x99, 0x69, 0xa2, 0x70, 0x1f, - 0x53, 0x6f, 0x3c, 0x5f, 0x29, 0x1a, 0x41, 0xbc, 0x63, 0xc8, 0x57, 0x1e, - 0xf7, 0x1f, 0xfb, 0x7, 0xa3, 0x7a, 0x5e, 0x1a, 0x5d, 0x5f, 0x5d, 0x4d, - 0x73, 0x39, 0x90, 0xf7, 0x5, 0x73, 0x1e, 0xf7, 0x78, 0xf7, 0x14, 0x15, - 0x75, 0xa0, 0x5f, 0xae, 0x64, 0xaa, 0x8, 0x55, 0xb7, 0x6e, 0x9d, 0xb3, - 0x1a, 0xcb, 0xcd, 0xbb, 0xa5, 0x9a, 0x1e, 0xac, 0x67, 0xbd, 0x5f, 0xbf, - 0x60, 0x8, 0xb6, 0x66, 0x98, 0x79, 0x6d, 0x1a, 0x73, 0x7c, 0x5d, 0x3b, - 0x65, 0x1e, 0xe, 0x77, 0xfb, 0x12, 0x76, 0xf7, 0x3b, 0x76, 0xf8, 0x39, - 0xeb, 0x1, 0xc3, 0xf7, 0x89, 0x3, 0xe2, 0x8a, 0x15, 0xc5, 0x6, 0x77, - 0x30, 0x5f, 0x7f, 0x7b, 0x87, 0x82, 0x64, 0x18, 0xf6, 0x98, 0xa4, 0xf7, - 0x3, 0x92, 0xae, 0x9d, 0xe2, 0x18, 0x23, 0x6, 0xcd, 0xf7, 0xd5, 0x40, - 0xa, 0xe, 0xa0, 0x76, 0xf9, 0x9, 0xda, 0x1, 0xf7, 0x3a, 0x16, 0xf1, - 0x6, 0xb9, 0xf7, 0x52, 0xf7, 0x1b, 0xf7, 0x94, 0xf7, 0x5d, 0xf7, 0x3b, - 0x9e, 0xda, 0x18, 0xfc, 0x95, 0x6, 0x78, 0x3c, 0x5, 0xf8, 0x24, 0x6, - 0xfb, 0x63, 0xfb, 0x51, 0xfb, 0x1d, 0xfb, 0xa1, 0x70, 0xfb, 0x2f, 0x8, - 0xe, 0x78, 0xd0, 0xf7, 0xec, 0xd0, 0xf7, 0x44, 0xd4, 0x1, 0xe6, 0xe9, - 0xf7, 0xb8, 0xe5, 0x3, 0xf7, 0x6f, 0xf8, 0x29, 0x15, 0xac, 0x93, 0xcb, - 0xf7, 0x54, 0xf7, 0x17, 0x1b, 0xd0, 0xa7, 0x58, 0x50, 0x93, 0x1f, 0xe3, - 0x93, 0x5, 0xe0, 0x83, 0x5a, 0xe5, 0xfb, 0x16, 0x1b, 0xfb, 0x95, 0x3b, - 0xfb, 0xf2, 0xfb, 0x24, 0xfb, 0x4d, 0xf7, 0x11, 0x60, 0xef, 0xf7, 0x30, - 0xf7, 0x0, 0xf7, 0x13, 0xf7, 0x25, 0xf7, 0x19, 0x2c, 0xd8, 0x20, 0x3d, - 0x52, 0x64, 0x78, 0x73, 0x1f, 0x69, 0xfb, 0x58, 0x15, 0xf7, 0xd, 0xe5, - 0xcb, 0xde, 0xd9, 0xc1, 0x4d, 0x3c, 0x28, 0x37, 0x23, 0x33, 0x3e, 0x53, - 0xe4, 0xd1, 0x1e, 0xe, 0x77, 0x8d, 0x76, 0x1, 0x88, 0xf8, 0x6d, 0x3, - 0x76, 0x78, 0x15, 0xd2, 0x6, 0xf8, 0x26, 0xf9, 0x88, 0x5, 0x44, 0x6, - 0xe, 0x77, 0xe, 0x90, 0x76, 0xf7, 0xdc, 0xd3, 0xf7, 0x9c, 0xd1, 0x1, - 0xf7, 0x4c, 0xe6, 0x3, 0xc6, 0x7b, 0x15, 0xaf, 0xae, 0xb5, 0x95, 0xb8, - 0x8a, 0xb6, 0x8a, 0xb8, 0x7f, 0xb6, 0x80, 0x8, 0x81, 0xb3, 0xb0, 0x81, - 0xab, 0x1b, 0x95, 0xb9, 0x8b, 0xaf, 0xd7, 0x1f, 0x6f, 0xd9, 0x5, 0x6d, - 0x57, 0x5d, 0x8b, 0x81, 0x1b, 0x6b, 0x69, 0x96, 0x94, 0x65, 0x1f, 0x65, - 0x94, 0x61, 0x93, 0x5c, 0x84, 0x88, 0x8c, 0x18, 0xc0, 0xb1, 0xc2, 0xc4, - 0x88, 0xf7, 0xa, 0x8, 0xf7, 0x11, 0x6, 0x9a, 0xd3, 0x5, 0xfb, 0x23, - 0x6, 0x81, 0xbe, 0x8a, 0xb0, 0x98, 0x1a, 0xf7, 0x18, 0xea, 0xaa, 0xc0, - 0x9e, 0xeb, 0x88, 0xfb, 0x10, 0x9a, 0x1e, 0xdc, 0x93, 0x5, 0xf7, 0x30, - 0x7a, 0xfb, 0xd, 0xac, 0x43, 0x1b, 0xfb, 0x14, 0xfb, 0x4, 0x28, 0xfb, - 0x1a, 0x5f, 0x8d, 0x7e, 0x92, 0x5f, 0x1f, 0x35, 0x6, 0x7c, 0x43, 0x5, - 0xf7, 0x1, 0x6, 0x9f, 0xfb, 0xa, 0xfb, 0x11, 0x29, 0x5c, 0x70, 0x8, - 0xe, 0x77, 0x84, 0xd2, 0xf7, 0xfd, 0xcb, 0xf7, 0x48, 0x77, 0x1, 0xf7, - 0x3, 0xf7, 0x9d, 0x3, 0xf7, 0xa2, 0x8d, 0x15, 0x9a, 0xcf, 0x5, 0x87, - 0x79, 0x79, 0x89, 0x79, 0x1b, 0x65, 0x8b, 0xb2, 0xbd, 0x96, 0x1f, 0xc7, - 0xf7, 0xa4, 0x5, 0xe4, 0x6, 0x9a, 0xcb, 0x5, 0x32, 0x6, 0xb4, 0xf7, - 0x48, 0x23, 0x51, 0x70, 0xfb, 0xe, 0x5, 0x43, 0x6, 0x7d, 0x4b, 0x5, - 0xd2, 0x6, 0x4b, 0xfb, 0xa4, 0x5, 0x86, 0x72, 0x88, 0x75, 0x77, 0x1a, - 0x51, 0xa8, 0x68, 0xd6, 0x93, 0xa7, 0x8c, 0x93, 0xa7, 0x1e, 0xe, 0xfb, - 0x4e, 0x76, 0xf7, 0x51, 0xd4, 0xf8, 0x26, 0xd4, 0xf7, 0x50, 0x77, 0x1, - 0xb1, 0xe7, 0xf7, 0xfe, 0xe7, 0x3, 0xf7, 0x3c, 0xd9, 0x15, 0x4d, 0xad, - 0xb9, 0x69, 0xd1, 0x1b, 0xf7, 0x1c, 0xf7, 0x16, 0xf7, 0x23, 0xf7, 0x52, - 0xf7, 0x1e, 0x3d, 0xd8, 0x25, 0x57, 0x5d, 0x77, 0x56, 0x52, 0x1f, 0xc5, - 0xf7, 0x99, 0x5, 0x2e, 0x6, 0xfb, 0x5c, 0xfe, 0x31, 0x5, 0xe7, 0x6, - 0xe5, 0xf8, 0x32, 0x15, 0xdf, 0xca, 0xf7, 0x3a, 0xf7, 0xa, 0xd9, 0xb0, - 0x45, 0x43, 0x3e, 0x5b, 0xfb, 0x4b, 0xfb, 0x16, 0x31, 0x6f, 0xd9, 0xd5, - 0x1e, 0xe, 0x78, 0xd0, 0xf7, 0xa3, 0xd4, 0xf7, 0x84, 0xd0, 0x1, 0xf8, - 0x71, 0xeb, 0x3, 0xd6, 0xf7, 0x45, 0x15, 0xfb, 0x20, 0x96, 0xf7, 0x8, - 0x53, 0xf7, 0x3, 0x1b, 0xf7, 0x20, 0xf7, 0xc, 0xe6, 0xf7, 0x15, 0xe5, - 0x48, 0xbf, 0x75, 0x97, 0x1f, 0xe6, 0xb2, 0xae, 0xc3, 0xcf, 0x1a, 0xeb, - 0x38, 0xe4, 0xfb, 0x19, 0x6f, 0xfb, 0x34, 0x87, 0xfb, 0x46, 0x5b, 0x1e, - 0xe8, 0x79, 0x5, 0xe8, 0x9d, 0xce, 0xb1, 0xc5, 0x1b, 0xd0, 0xc0, 0x58, - 0x4a, 0x52, 0x46, 0x48, 0xfb, 0x10, 0x1f, 0x7b, 0x42, 0x5, 0xe8, 0xd8, - 0x61, 0x3d, 0x43, 0x44, 0x3c, 0x27, 0xfb, 0xc, 0x7d, 0xf0, 0xb0, 0x86, - 0x1f, 0xe, 0x65, 0xa, 0xf7, 0x77, 0xc4, 0xf7, 0x92, 0xbe, 0x12, 0xf7, - 0xe7, 0xd3, 0x55, 0xd1, 0x13, 0x7c, 0xf8, 0x79, 0xc7, 0x15, 0xf7, 0x45, - 0x6, 0x7d, 0x44, 0x5, 0xcb, 0x6, 0x9a, 0xd2, 0x5, 0xb8, 0x6, 0x97, - 0xc1, 0x5, 0x5e, 0x6, 0xb8, 0xf7, 0x77, 0x5, 0x55, 0x6, 0xfb, 0x7e, - 0xfb, 0x74, 0x5, 0xd6, 0x88, 0x15, 0xf7, 0x14, 0xf7, 0x11, 0x8d, 0x89, - 0x6e, 0xfb, 0xf, 0x5, 0xfc, 0xb2, 0xf7, 0xdc, 0x15, 0x50, 0x9b, 0xbe, - 0x61, 0xd6, 0x1b, 0xde, 0xc3, 0xbd, 0xc4, 0xc1, 0x66, 0x9a, 0x74, 0x95, - 0x1f, 0x8d, 0x7, 0x13, 0x7a, 0xb7, 0x94, 0xab, 0xa1, 0xbb, 0x1a, 0xc7, - 0x51, 0xae, 0x47, 0x48, 0x57, 0x6c, 0x50, 0x7b, 0x1e, 0xce, 0x82, 0x5, - 0x9e, 0x92, 0x97, 0xa8, 0xbc, 0x1b, 0xa8, 0xa6, 0x7d, 0x6d, 0x5d, 0x5c, - 0x85, 0x60, 0x8a, 0x1f, 0x81, 0x58, 0x5, 0x13, 0xbc, 0xae, 0xba, 0x82, - 0x5c, 0x79, 0x80, 0x6b, 0x51, 0x55, 0x7c, 0xb0, 0x9a, 0x85, 0x1f, 0x5d, - 0xfc, 0x69, 0x15, 0xd4, 0x6, 0xf9, 0x13, 0xf9, 0x66, 0x5, 0x3c, 0x6, - 0xe, 0xae, 0xf7, 0xa2, 0xcf, 0xf7, 0xc4, 0xc8, 0x12, 0xf7, 0xe2, 0xdf, - 0x4b, 0xdd, 0x13, 0xe0, 0xe5, 0xf8, 0x1b, 0x15, 0x45, 0x9d, 0xc5, 0x58, - 0xe2, 0x1b, 0xec, 0xcf, 0xc7, 0xcf, 0xcb, 0x5f, 0x9d, 0x70, 0x98, 0x1f, - 0x8d, 0x7, 0x13, 0xd0, 0xbe, 0x97, 0xb1, 0xa7, 0xc5, 0x1a, 0xd3, 0x48, - 0xb1, 0x3b, 0x3d, 0x4f, 0x66, 0x44, 0x77, 0x1e, 0xda, 0x81, 0x5, 0xa2, - 0x93, 0x98, 0xad, 0xc5, 0x1b, 0xad, 0xaa, 0x7a, 0x67, 0x55, 0x55, 0x83, - 0x59, 0x8a, 0x1f, 0x7f, 0x4d, 0x5, 0x13, 0xe0, 0xb3, 0xc3, 0x8b, 0x53, - 0x75, 0x7e, 0x5b, 0x47, 0x4c, 0x7a, 0xb8, 0x9c, 0x84, 0x1f, 0xe, 0xae, - 0xf8, 0xf3, 0xf7, 0x4, 0x2f, 0x76, 0xb7, 0xd0, 0x8e, 0x77, 0x12, 0xf7, - 0x11, 0xce, 0xf7, 0x7d, 0xcc, 0x13, 0x8c, 0xf7, 0x11, 0xf8, 0xf3, 0x15, - 0xce, 0x6, 0x13, 0x6c, 0xa4, 0x91, 0x97, 0x9d, 0xa6, 0x1b, 0xae, 0xa6, - 0x7e, 0x7f, 0xa3, 0x1f, 0x81, 0x9f, 0x9e, 0x82, 0xa1, 0x1b, 0xcb, 0xaf, - 0xc4, 0xc3, 0x91, 0x1f, 0x4a, 0x6, 0x7c, 0x86, 0x85, 0x72, 0x6f, 0x1b, - 0x7a, 0x78, 0x91, 0x92, 0x78, 0x1f, 0x13, 0x5c, 0x98, 0x6a, 0x69, 0x9c, - 0x6d, 0x1b, 0x13, 0x8c, 0x41, 0x79, 0x55, 0x4e, 0x7a, 0x1f, 0xe, 0xf9, - 0x52, 0xf7, 0xdb, 0x76, 0xf7, 0xf3, 0xc8, 0x1, 0xf9, 0x33, 0xc8, 0x3, - 0xf7, 0x5c, 0xf7, 0xc6, 0x15, 0xd2, 0x6, 0xf7, 0x13, 0xf7, 0xf3, 0x5, - 0xf7, 0x21, 0x6, 0xa0, 0xc8, 0x5, 0xfb, 0xf4, 0x6, 0x75, 0x4e, 0x5, - 0xf7, 0x21, 0x6, 0xf7, 0x31, 0xfb, 0xf3, 0x15, 0xcd, 0x6, 0xf7, 0x12, - 0xf7, 0xf3, 0x48, 0xa, 0x7e, 0xfb, 0xf3, 0x5, 0xcd, 0x6, 0xf7, 0x7d, - 0xf7, 0xed, 0x48, 0xa, 0xfb, 0x10, 0xfb, 0xed, 0x5, 0xcd, 0x6, 0xf7, - 0x28, 0xf8, 0x30, 0x5, 0x23, 0x6, 0xfb, 0x73, 0xfb, 0xdd, 0x4e, 0xa, - 0x96, 0xf7, 0xdd, 0x5, 0x21, 0x6, 0xe, 0x8b, 0xda, 0xf8, 0xbd, 0xd7, - 0x1, 0xf8, 0x63, 0xe9, 0x3, 0xa2, 0x16, 0xf8, 0x58, 0x6, 0x9d, 0xda, - 0x5, 0xfb, 0xe8, 0x6, 0xe1, 0xf7, 0xa, 0xf7, 0x11, 0xc2, 0xcf, 0xc7, - 0x8, 0xa9, 0xa3, 0xea, 0xe1, 0xe8, 0x1a, 0xee, 0x3d, 0xe4, 0xfb, 0x26, - 0xfb, 0x31, 0x49, 0x23, 0x29, 0x7b, 0x1e, 0xe6, 0x80, 0x5, 0xce, 0x98, - 0xb6, 0xd1, 0xe7, 0x1b, 0xd3, 0xc5, 0x5e, 0x48, 0x38, 0x37, 0x53, 0x36, - 0x4b, 0x1f, 0xfb, 0x4a, 0xfb, 0x1b, 0x4d, 0x5f, 0x70, 0xfb, 0x19, 0x8, - 0xe, 0xae, 0xf7, 0xad, 0xcf, 0xf7, 0x76, 0xf7, 0x14, 0x47, 0xcf, 0x1, - 0xf7, 0xfe, 0xe2, 0x3, 0xcb, 0xf7, 0xad, 0x15, 0xf7, 0xe8, 0x6, 0x99, - 0xcf, 0x5, 0xfb, 0x6d, 0x6, 0xa2, 0xa6, 0xa4, 0x9a, 0xda, 0xb9, 0x8, - 0xce, 0xb2, 0xc1, 0xb1, 0xd0, 0x1a, 0xc2, 0x63, 0xcc, 0xfb, 0xc, 0x2a, - 0x4e, 0x63, 0x37, 0x73, 0x1e, 0xe2, 0x83, 0x5, 0xbb, 0x9c, 0xa7, 0x9b, - 0xbd, 0x1b, 0xbd, 0xa2, 0x71, 0x71, 0x64, 0x6d, 0x78, 0x4e, 0x6a, 0x1f, - 0xfb, 0x2c, 0x36, 0x67, 0x4b, 0x78, 0x4d, 0x8, 0xe, 0x7c, 0xd5, 0x62, - 0x76, 0xf8, 0xa2, 0x77, 0x12, 0x13, 0x60, 0xf8, 0x2e, 0x88, 0x15, 0xdd, - 0x6, 0xf7, 0x0, 0xf8, 0xa2, 0x5, 0x33, 0x6, 0x5c, 0xfb, 0x75, 0x7d, - 0x44, 0x7d, 0x4c, 0x55, 0x57, 0x19, 0x13, 0xa0, 0x62, 0x60, 0x62, 0x7f, - 0x69, 0x1b, 0x4e, 0x5d, 0x97, 0xf7, 0xa, 0xa9, 0x1f, 0xcc, 0xf7, 0xe2, - 0x5, 0x38, 0x6, 0x49, 0xfb, 0xe2, 0x5, 0x85, 0x6b, 0x87, 0x6b, 0x70, - 0x1a, 0x4c, 0xb5, 0x59, 0xf2, 0xd9, 0xca, 0xbd, 0xc3, 0xbd, 0x1e, 0xe, - 0x39, 0xa, 0xf7, 0x78, 0x77, 0x27, 0xa, 0x31, 0xf8, 0x8f, 0x36, 0xa, - 0xe, 0x39, 0xa, 0xe8, 0xf7, 0x1b, 0x27, 0xa, 0xfb, 0x40, 0xf8, 0x8f, - 0x30, 0xa, 0xe, 0x39, 0xa, 0xef, 0xef, 0x27, 0xa, 0x8d, 0xf8, 0x96, - 0x2e, 0xa, 0xe, 0x39, 0xa, 0xe4, 0xf7, 0x1f, 0x27, 0xa, 0x65, 0xf8, - 0x8b, 0x15, 0xd3, 0x6, 0x50, 0x6f, 0xa, 0xfb, 0x3, 0x6, 0xe, 0xfb, - 0x11, 0xbd, 0x1, 0x70, 0x40, 0x15, 0x59, 0xf8, 0xcb, 0xbd, 0x7, 0xe, - 0xf7, 0x5e, 0x43, 0xa, 0xf7, 0x61, 0x16, 0xee, 0x6, 0xf7, 0xbf, 0xf8, - 0x9f, 0x4d, 0xa, 0xfb, 0x83, 0xfc, 0x4e, 0x4e, 0xa, 0x4e, 0xf8, 0x4e, - 0x5, 0x34, 0x6, 0xe, 0xf8, 0x3c, 0x43, 0xa, 0xf8, 0x65, 0xcd, 0x3, - 0xf7, 0x47, 0x16, 0xe7, 0x6, 0xf7, 0x4a, 0xf8, 0x36, 0xa3, 0xfc, 0x36, - 0x5, 0xe6, 0x6, 0xf7, 0x90, 0xf8, 0x9f, 0x5, 0x34, 0x6, 0xfb, 0x51, - 0xfc, 0x38, 0x4e, 0xa, 0x76, 0xf8, 0x38, 0x50, 0xa, 0xfb, 0x48, 0xfc, - 0x3d, 0x4e, 0xa, 0x6a, 0xf8, 0x3d, 0x5, 0x36, 0x6, 0xe, 0xf7, 0x5e, - 0x43, 0xa, 0x96, 0x16, 0xf7, 0xc, 0x6, 0xf7, 0x3a, 0xf7, 0x54, 0xec, - 0xfb, 0x54, 0x5, 0xf4, 0x6, 0xfb, 0x20, 0xf7, 0x98, 0xf7, 0x7f, 0xf7, - 0x9b, 0x5, 0xfb, 0x9, 0x6, 0xfb, 0x36, 0xfb, 0x52, 0x2c, 0xf7, 0x52, - 0x5, 0x22, 0x6, 0xf7, 0x20, 0xfb, 0x93, 0x5, 0xe, 0xf7, 0x5e, 0xfb, - 0x55, 0x76, 0xf9, 0x75, 0x77, 0x1, 0x9f, 0xfb, 0xe, 0x15, 0x86, 0x36, - 0x5, 0x86, 0x9f, 0x9d, 0x89, 0x9c, 0x1b, 0xe8, 0xc0, 0xd1, 0xd3, 0xb3, - 0x1f, 0xf7, 0xec, 0xf8, 0xe7, 0x50, 0xa, 0xfb, 0x86, 0xfc, 0x3a, 0x4e, - 0xf8, 0x3a, 0x3f, 0xa, 0xe4, 0xfc, 0xa3, 0x41, 0xfb, 0x15, 0x74, 0x7e, - 0x38, 0xa3, 0x19, 0xe, 0xf7, 0x5e, 0xfb, 0x55, 0x76, 0xf9, 0x7d, 0x77, - 0xf7, 0x73, 0x77, 0x1, 0xf8, 0x74, 0xeb, 0x3, 0x9f, 0xfb, 0xb, 0x15, - 0x86, 0x36, 0x59, 0xa, 0xd8, 0xce, 0xb2, 0x1f, 0xf7, 0xec, 0xf8, 0xed, - 0x50, 0xa, 0xfb, 0x85, 0xfc, 0x3f, 0x4e, 0xa, 0x4f, 0xf8, 0x3f, 0x45, - 0xa, 0xe5, 0xfc, 0xa8, 0x5, 0xfb, 0x15, 0x53, 0x59, 0x8e, 0x78, 0x1b, - 0x71, 0x7b, 0x8f, 0x8f, 0x7e, 0x1f, 0xf7, 0x97, 0xf9, 0x5f, 0x15, 0xd7, - 0x6, 0xf7, 0x1c, 0xf7, 0x1e, 0x5, 0xfb, 0x9, 0x6, 0xe, 0xf7, 0x5e, - 0xfb, 0x6a, 0xe1, 0xf9, 0x71, 0xf0, 0x1, 0x9f, 0xfb, 0xc, 0x15, 0x86, - 0x37, 0x59, 0xa, 0xd7, 0xce, 0xb2, 0x1f, 0xf7, 0xec, 0xf8, 0xe6, 0x50, - 0xa, 0xfb, 0x85, 0xfc, 0x3a, 0x4e, 0xa, 0x4f, 0xf8, 0x3a, 0x45, 0xa, - 0xe5, 0xfc, 0xa2, 0x5, 0xfb, 0x16, 0x3f, 0x7f, 0x90, 0x66, 0x1b, 0x71, - 0x7b, 0x8f, 0x8f, 0x7e, 0x1f, 0xf8, 0x1b, 0xf9, 0x69, 0x15, 0xeb, 0x6, - 0xa1, 0xf0, 0x50, 0xa, 0xfb, 0x65, 0x26, 0x15, 0xea, 0x6, 0xa1, 0xf0, - 0x50, 0xa, 0xe, 0xa0, 0x76, 0xf7, 0xbf, 0xcb, 0xf7, 0xd9, 0x77, 0x1, - 0xdc, 0xf7, 0x2e, 0x15, 0xf7, 0x58, 0x6, 0x6b, 0xfb, 0x2e, 0x5, 0xe1, - 0x6, 0xac, 0xf7, 0x2e, 0x5, 0xf7, 0x56, 0x6, 0x99, 0xcc, 0x5, 0xfb, - 0x56, 0x6, 0x9b, 0xdb, 0x5, 0xf7, 0x54, 0x6, 0x99, 0xcb, 0x5, 0xfb, - 0x2c, 0x6, 0xf7, 0x8f, 0xf7, 0xd9, 0x5, 0xfb, 0x0, 0x6, 0xfb, 0x77, - 0xfb, 0xd9, 0x4e, 0xa, 0xfb, 0x9, 0xf7, 0xd9, 0x5, 0x33, 0x6, 0xf7, - 0x13, 0xfb, 0xd9, 0x5, 0xfb, 0x35, 0x6, 0x7e, 0x4b, 0x5, 0xf7, 0x59, - 0x6, 0x7b, 0x3b, 0x5, 0xfb, 0x58, 0x6, 0xe, 0xf7, 0x5e, 0x8b, 0xda, - 0xf8, 0x6, 0xd5, 0x1, 0xaa, 0xf8, 0xb0, 0x3, 0xaa, 0x16, 0xf8, 0x5e, - 0x6, 0x9c, 0xda, 0x5, 0xfb, 0xe3, 0x6, 0xf8, 0x18, 0xf8, 0x18, 0x5a, - 0xa, 0xf7, 0xca, 0x6, 0xfc, 0xe, 0xfc, 0x10, 0x5, 0xe, 0xf7, 0x5e, - 0x8b, 0xdb, 0xf8, 0x98, 0xf7, 0x1e, 0x1, 0xaa, 0x16, 0xf8, 0x5e, 0x6, - 0x9c, 0xdb, 0x5, 0xfb, 0xe3, 0x6, 0xf8, 0x18, 0xf8, 0x1c, 0x5a, 0xa, - 0xf7, 0xc8, 0x6, 0x8d, 0x89, 0xfc, 0xe, 0xfc, 0x12, 0x5, 0xf7, 0x9b, - 0xf8, 0xa2, 0x15, 0xf5, 0x6, 0xf7, 0x23, 0xf7, 0x1e, 0x47, 0xa, 0x33, - 0x32, 0x60, 0xe4, 0x5, 0x36, 0x6, 0xe, 0x78, 0xd0, 0xf8, 0xdc, 0xd0, - 0x1, 0xf7, 0x2, 0xe3, 0xf7, 0xd0, 0xe3, 0x3, 0xe8, 0xf7, 0x63, 0x15, - 0xfb, 0x44, 0xf0, 0x59, 0xec, 0xf7, 0x73, 0xe9, 0xf7, 0xbc, 0xf7, 0x50, - 0xf7, 0x4f, 0xfb, 0xd, 0xbe, 0x3b, 0xfb, 0x6c, 0x29, 0xfb, 0xd7, 0xfb, - 0x41, 0x1e, 0xe3, 0x16, 0xa2, 0xac, 0xf8, 0x28, 0xf7, 0x56, 0xf7, 0x3, - 0x8c, 0xfb, 0x1d, 0x6b, 0x38, 0x5a, 0xfb, 0xe0, 0xfb, 0x43, 0x49, 0x5a, - 0xbd, 0xf6, 0x1e, 0xe, 0x78, 0x9e, 0xf8, 0x9f, 0x9a, 0xf7, 0x48, 0x9e, - 0x6, 0xfb, 0x70, 0x98, 0xf8, 0xc0, 0x94, 0x7, 0x78, 0x9e, 0xf8, 0x9f, - 0x9a, 0xf7, 0x48, 0x9e, 0x8, 0xfb, 0x70, 0x98, 0x9, 0x1e, 0xa0, 0x39, - 0x63, 0xff, 0xc, 0x9, 0xdc, 0xa, 0xe5, 0xb, 0xd5, 0x92, 0xc, 0xc, - 0xe5, 0x95, 0xc, 0xd, 0xf8, 0xc0, 0x14, 0xf7, 0xbe, 0x15, 0xc3, 0x13, - 0x0, 0x50, 0x2, 0x0, 0x1, 0x0, 0x4e, 0x0, 0x92, 0x0, 0x99, 0x0, - 0xc9, 0x1, 0x1, 0x1, 0x49, 0x1, 0x72, 0x1, 0xb1, 0x1, 0xb6, 0x1, - 0xbb, 0x1, 0xde, 0x1, 0xe1, 0x2, 0x13, 0x2, 0x1a, 0x2, 0x22, 0x2, - 0x2a, 0x2, 0x3a, 0x2, 0x40, 0x2, 0x4b, 0x2, 0x58, 0x2, 0x61, 0x2, - 0x66, 0x2, 0x72, 0x2, 0x7b, 0x2, 0x84, 0x2, 0x8c, 0x2, 0x96, 0x2, - 0xa0, 0x2, 0xa8, 0x2, 0xac, 0x2, 0xaf, 0x2, 0xb3, 0x2, 0xbc, 0x2, - 0xc5, 0x2, 0xcc, 0x2, 0xd3, 0x2, 0xd9, 0x2, 0xdd, 0x2, 0xeb, 0x2, - 0xef, 0x2, 0xf3, 0x2, 0xfb, 0x3, 0x3, 0x3, 0xa, 0x3, 0xf, 0x3, - 0x13, 0x3, 0x17, 0x3, 0x22, 0x3, 0x26, 0x3, 0x2d, 0x3, 0x33, 0x3, - 0x3a, 0x3, 0x40, 0x3, 0x45, 0x3, 0x4a, 0x3, 0x4e, 0x3, 0x58, 0x3, - 0x62, 0x3, 0x6c, 0x3, 0x76, 0x3, 0x7a, 0x3, 0x83, 0x3, 0x8c, 0x3, - 0x95, 0x3, 0x9e, 0x3, 0xa7, 0x3, 0xb0, 0x3, 0xb8, 0x3, 0xc1, 0x3, - 0xca, 0x3, 0xd0, 0x3, 0xd4, 0x3, 0xda, 0x3, 0xe0, 0x3, 0xe5, 0x3, - 0xea, 0x3, 0xef, 0x3, 0xf3, 0x3, 0xf7, 0x3, 0xfb, 0x6e, 0xa, 0x85, - 0xa7, 0x87, 0x9f, 0xa4, 0x1a, 0xae, 0x91, 0xae, 0x92, 0xad, 0x1e, 0xa9, - 0xf7, 0x18, 0x5, 0x97, 0xc4, 0x8f, 0xa5, 0x91, 0x1a, 0xe3, 0x2d, 0xc8, - 0xfb, 0x2, 0x30, 0xfb, 0x11, 0x5f, 0xfb, 0xc, 0x73, 0x1e, 0xe1, 0x83, - 0x5, 0xd8, 0xa6, 0xcc, 0xa0, 0xc5, 0x1b, 0xa4, 0xe5, 0x87, 0x44, 0x80, - 0x87, 0x6f, 0x83, 0x74, 0x1f, 0x67, 0x7c, 0x65, 0x89, 0x3d, 0x88, 0x8, - 0x4e, 0x89, 0xfb, 0x48, 0x83, 0xfb, 0x37, 0x1a, 0x28, 0xd6, 0x53, 0xe4, - 0x1e, 0xb, 0x15, 0xfb, 0x41, 0xf7, 0xb, 0xfb, 0x27, 0xf7, 0x5b, 0xf7, - 0x76, 0xf7, 0x45, 0xf7, 0x54, 0xf7, 0x82, 0xf7, 0x54, 0xfb, 0xb, 0xf7, - 0x1c, 0xfb, 0x5c, 0xfb, 0x6a, 0xfb, 0x50, 0xfb, 0x38, 0xfb, 0xa6, 0x1e, - 0xef, 0x86, 0x15, 0xf7, 0x8b, 0xf7, 0x39, 0xf7, 0x7, 0xf7, 0x1d, 0xf7, - 0x4, 0xf6, 0x32, 0xfb, 0x32, 0xfb, 0x47, 0xfb, 0xd, 0xfb, 0x3e, 0xfb, - 0x42, 0xfb, 0x4, 0xfb, 0x6, 0xdd, 0xf7, 0x2c, 0x1e, 0xb, 0x20, 0xa, - 0x13, 0xbc, 0x23, 0xa, 0xb, 0xe7, 0xc9, 0xc1, 0xa4, 0xa7, 0x1f, 0x8c, - 0x80, 0x8d, 0x6d, 0x94, 0x71, 0x8, 0xa1, 0xf7, 0xa4, 0x15, 0x82, 0x55, - 0x81, 0x5f, 0x71, 0x66, 0x8, 0x59, 0x69, 0x54, 0x6e, 0x54, 0x1b, 0x3e, - 0x73, 0xbd, 0xb2, 0xe1, 0xe7, 0x96, 0xc6, 0x90, 0x1f, 0xdd, 0x92, 0xa2, - 0x8d, 0xad, 0x99, 0x8, 0xb, 0x15, 0xfb, 0x22, 0xf1, 0x3b, 0xf7, 0x7, - 0xf7, 0x30, 0xf7, 0x15, 0xf7, 0x1a, 0xf7, 0x57, 0xf7, 0x1d, 0x34, 0xde, - 0xfb, 0x13, 0xfb, 0x4c, 0x23, 0xfb, 0x28, 0xfb, 0x47, 0x1e, 0xe5, 0x16, - 0xf7, 0x3, 0xcb, 0xf7, 0x27, 0xf7, 0x17, 0xe2, 0xb3, 0x43, 0x3c, 0xfb, - 0x4, 0x43, 0xfb, 0x28, 0xfb, 0xe, 0x6d, 0x29, 0x98, 0xf7, 0x20, 0x1e, - 0xb, 0x15, 0xf8, 0x1e, 0x6, 0x8e, 0x9f, 0x8f, 0xa0, 0xb3, 0x1a, 0xe7, - 0x5d, 0xf7, 0x15, 0xfb, 0x38, 0xfb, 0x5a, 0x35, 0xfb, 0x58, 0xfb, 0x1c, - 0xfb, 0x29, 0xe9, 0x3e, 0xf7, 0x7, 0xf7, 0x20, 0xe5, 0xf7, 0x2, 0xd5, - 0xa1, 0x1e, 0x32, 0x94, 0x5, 0x29, 0x61, 0x3a, 0x76, 0x63, 0x1b, 0x4c, - 0x54, 0xbe, 0xf2, 0x96, 0x8c, 0x92, 0x8c, 0x95, 0x1f, 0x99, 0xd1, 0x15, - 0xcf, 0xa0, 0xbf, 0xe9, 0xf5, 0x1b, 0xd2, 0xcd, 0x4b, 0x29, 0x7b, 0x1f, - 0xb, 0x15, 0xf4, 0x6, 0xf7, 0x8, 0xf7, 0x69, 0x5, 0xf7, 0xb6, 0x6, - 0xaf, 0xfb, 0x69, 0x5, 0xe8, 0x6, 0xfb, 0xb, 0xf9, 0x76, 0x5, 0xfb, - 0x5, 0x6, 0xfb, 0x26, 0xfc, 0x54, 0x15, 0xf7, 0x51, 0xf8, 0x4, 0x48, - 0xa, 0xb9, 0xfc, 0x4, 0x5, 0xe, 0x12, 0x13, 0x70, 0xf8, 0x27, 0x88, - 0x15, 0xe0, 0x6, 0xf7, 0x4, 0xf8, 0xa5, 0x45, 0xa, 0x5a, 0xfb, 0x76, - 0x5, 0x21, 0x75, 0x50, 0xfb, 0x1b, 0xfb, 0x12, 0x1b, 0x4b, 0x7a, 0xc5, - 0xd4, 0x9a, 0x1f, 0xd4, 0xf7, 0xe4, 0x45, 0xa, 0x46, 0xfb, 0xe2, 0x5, - 0x87, 0x74, 0x89, 0x76, 0x76, 0x1a, 0x13, 0xb0, 0x3a, 0xae, 0x4e, 0xec, - 0xdc, 0xcc, 0xbd, 0xc4, 0xbf, 0x1e, 0x13, 0x70, 0xb, 0xfd, 0x8, 0x21, - 0xa, 0xe, 0xfc, 0xa2, 0x24, 0xa, 0xe, 0x1, 0xe1, 0x16, 0xf8, 0xbe, - 0x6a, 0xa, 0xfc, 0x5c, 0x6, 0xbf, 0xf7, 0x94, 0x5, 0xf8, 0x29, 0x6, - 0x9d, 0xde, 0x5, 0xfc, 0x29, 0x6, 0xb9, 0xf7, 0x7b, 0x5, 0xf8, 0x40, - 0x6a, 0xa, 0xfc, 0xa0, 0x6, 0xb, 0x23, 0xa, 0xe, 0x15, 0x8b, 0x22, - 0xfc, 0x86, 0x64, 0x1a, 0xfb, 0x25, 0xf7, 0xb, 0x43, 0xf7, 0x27, 0xf7, - 0x91, 0xbb, 0xf7, 0x80, 0xe0, 0x9c, 0x1e, 0xe5, 0xf8, 0x45, 0x57, 0xa, - 0x33, 0xfc, 0x45, 0x5, 0xfb, 0xb, 0x74, 0x49, 0xfb, 0xa, 0xfb, 0x1e, - 0x1b, 0x39, 0x39, 0xb8, 0xe3, 0x1f, 0xf4, 0xf8, 0xad, 0x5, 0xe, 0xa0, - 0x76, 0xf9, 0x62, 0x77, 0x1, 0xb, 0x2f, 0xa, 0xfb, 0x5d, 0x27, 0x2f, - 0xa, 0xb, 0x15, 0xe7, 0x6, 0xa0, 0xef, 0x3d, 0xa, 0xb, 0x6e, 0xa, - 0xdb, 0xe2, 0xb2, 0x34, 0x5, 0xd9, 0x6, 0x4e, 0xf7, 0x1b, 0x5, 0x2a, - 0x6, 0xb, 0x35, 0xa, 0xf7, 0x69, 0xd8, 0xb, 0xf8, 0x5, 0x8b, 0xdf, - 0xf7, 0x94, 0xde, 0xf7, 0x7b, 0xdf, 0xb, 0x3b, 0xa, 0xe9, 0xb7, 0x96, - 0x41, 0xa, 0xfb, 0x5, 0x84, 0x66, 0x8, 0xb, 0xe9, 0x6, 0xf7, 0x25, - 0xf9, 0x73, 0x3d, 0xa, 0xb, 0xf8, 0x5, 0xa0, 0x76, 0xb, 0x15, 0xd4, - 0x6, 0xf7, 0x16, 0xf7, 0x1b, 0x5, 0xfb, 0x4, 0x6, 0xb, 0xc5, 0x6, - 0x77, 0x2d, 0x5f, 0x80, 0x7a, 0x87, 0xb, 0xdf, 0x6, 0xf4, 0xf8, 0xa3, - 0x5, 0x36, 0x6, 0xb, 0x7c, 0xd5, 0x4d, 0xc9, 0xf8, 0x67, 0x77, 0xb, - 0xa0, 0x76, 0xf8, 0x56, 0xcf, 0xf7, 0x17, 0xda, 0x1, 0xb, 0x15, 0xf4, - 0x6, 0xa1, 0xf4, 0x5, 0x52, 0x6, 0x9e, 0xb, 0x4c, 0xa, 0x92, 0xb0, - 0x9e, 0xe6, 0x18, 0xb, 0x5, 0x2f, 0x6, 0xb, 0x3f, 0xa, 0xe, 0x5, - 0x31, 0x6, 0xb, 0x15, 0xf3, 0x6, 0xa1, 0xeb, 0x5, 0x23, 0x6, 0xb, - 0x9c, 0x8f, 0x93, 0xb4, 0x18, 0x20, 0x7d, 0x72, 0xb, 0x77, 0x1, 0xf7, - 0xf, 0xec, 0x3, 0xb, 0xa0, 0x76, 0xf8, 0x9f, 0x77, 0x1, 0xb, 0x76, - 0xf7, 0x93, 0x77, 0x1, 0xb, 0x5, 0x30, 0x6, 0xb, 0x6, 0xeb, 0xf8, - 0x56, 0x5, 0xf0, 0x6, 0x99, 0xcf, 0x5, 0x26, 0x6, 0xf0, 0xb, 0x5, - 0x27, 0x6, 0xb, 0x5, 0x8d, 0x6, 0xb, 0xf7, 0x2c, 0x76, 0xf8, 0x2d, - 0x77, 0x1, 0xb, 0x7c, 0xd1, 0x66, 0x76, 0xf7, 0x8d, 0xce, 0xb, 0xef, - 0x6, 0xa0, 0xf5, 0x47, 0xa, 0xb, 0x99, 0xa4, 0xf7, 0x5, 0xb, 0x5, - 0x2c, 0x6, 0xb, 0x5, 0x89, 0x6, 0xb, 0x15, 0xdc, 0x6, 0xf7, 0x24, - 0x6d, 0xa, 0xfb, 0x10, 0x6, 0xb, 0x5, 0x2b, 0x6, 0xb, 0x5, 0xfb, - 0x3, 0x6, 0xfb, 0x97, 0xb, 0x5c, 0xa, 0xf8, 0xa3, 0x77, 0xb, 0xae, - 0xf8, 0xe5, 0xf7, 0x21, 0x1, 0xb, 0x5c, 0xa, 0xf9, 0x73, 0x77, 0xb, - 0x6, 0x9c, 0xdc, 0x5, 0xb, 0x15, 0xd1, 0x6, 0x51, 0xb, 0x5, 0x29, - 0x6, 0xb, 0xf7, 0x60, 0x5, 0x3f, 0x6, 0x5e, 0xfb, 0x60, 0x5, 0xb, - 0x5, 0x82, 0xa5, 0xa1, 0x8a, 0x9a, 0x1b, 0xe9, 0xb8, 0xb, 0x97, 0xc3, - 0x5, 0xfc, 0x4c, 0x6, 0x7a, 0x41, 0x5, 0xb, 0x15, 0x74, 0x8b, 0x21, - 0xf7, 0x10, 0xf7, 0x2d, 0xa3, 0xb, 0x77, 0xa0, 0x76, 0xb, 0x15, 0xe1, - 0x6, 0x76, 0x25, 0x5, 0x35, 0x6, 0xb, 0x72, 0x1b, 0x7c, 0x78, 0x95, - 0x95, 0x74, 0x1f, 0xb, 0x77, 0xfb, 0x58, 0xcf, 0xf9, 0xa2, 0xcf, 0x1, - 0xb, 0xa0, 0x76, 0xf8, 0x65, 0xc8, 0x4e, 0xd4, 0x12, 0xb, 0xae, 0xfb, - 0x4e, 0x76, 0xfa, 0x40, 0x77, 0x1, 0xb, 0xc4, 0x6, 0x77, 0x2d, 0x60, - 0x80, 0x7a, 0x87, 0xb, 0x15, 0xea, 0x6, 0xa1, 0xf0, 0x4d, 0xa, 0xb, - 0xf7, 0x84, 0xd4, 0x1, 0xbe, 0xf7, 0x84, 0x15, 0xb, 0xf8, 0xac, 0x8d, - 0x76, 0xa8, 0x76, 0xd2, 0xc1, 0xb, 0x6, 0xa3, 0x90, 0x96, 0x9c, 0xb, - 0xf6, 0x4c, 0xa, 0xb, 0xf4, 0xef, 0xf8, 0x9d, 0xef, 0xb, 0x6, 0x7d, - 0x87, 0x85, 0x72, 0xb, 0x6, 0x9c, 0xdf, 0x5, 0xb, 0x6, 0x9d, 0xdc, - 0x5, 0xb, 0xf8, 0x74, 0x78, 0xdc, 0xb, 0xf7, 0x21, 0x5, 0xb, 0x15, - 0xe6, 0x6, 0xb, 0xf7, 0x1f, 0x5, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSansMM.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSansMM.cpp deleted file mode 100644 index 3cc6ef8d1e..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSansMM.cpp +++ /dev/null @@ -1,5587 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSansMMFontData[66919] = { - 0x80, 0x01, 0xD2, 0x29, 0x00, 0x00, 0x25, 0x21, 0x50, 0x53, 0x2D, 0x41, - 0x64, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x6E, 0x74, 0x2D, 0x31, 0x2E, 0x30, - 0x3A, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x53, 0x61, 0x6E, 0x73, - 0x4D, 0x4D, 0x20, 0x30, 0x30, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x0D, 0x25, - 0x25, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x44, 0x61, 0x74, - 0x65, 0x3A, 0x20, 0x46, 0x72, 0x69, 0x20, 0x53, 0x65, 0x70, 0x20, 0x32, - 0x39, 0x20, 0x31, 0x36, 0x3A, 0x30, 0x32, 0x3A, 0x35, 0x33, 0x20, 0x32, - 0x30, 0x30, 0x36, 0x0D, 0x25, 0x25, 0x56, 0x4D, 0x75, 0x73, 0x61, 0x67, - 0x65, 0x3A, 0x20, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, 0x35, - 0x30, 0x30, 0x30, 0x30, 0x0D, 0x31, 0x37, 0x20, 0x64, 0x69, 0x63, 0x74, - 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, - 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x31, 0x34, 0x20, 0x64, 0x69, 0x63, 0x74, - 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x2F, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x30, 0x30, 0x31, - 0x2E, 0x30, 0x30, 0x30, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, - 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x4E, 0x6F, 0x74, 0x69, - 0x63, 0x65, 0x20, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, - 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x75, 0x6C, 0x6C, - 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x28, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, - 0x20, 0x53, 0x61, 0x6E, 0x73, 0x20, 0x4D, 0x4D, 0x29, 0x20, 0x72, 0x65, - 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, - 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x28, - 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x73, 0x20, - 0x4D, 0x4D, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, - 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x49, 0x74, 0x61, 0x6C, 0x69, 0x63, - 0x41, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x2F, 0x69, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x69, 0x74, 0x63, - 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x65, 0x50, 0x6F, - 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x2D, 0x31, 0x30, 0x30, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, - 0x6E, 0x65, 0x54, 0x68, 0x69, 0x63, 0x6B, 0x6E, 0x65, 0x73, 0x73, 0x20, - 0x35, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x20, 0x28, 0x41, 0x6C, 0x6C, 0x29, 0x20, 0x72, 0x65, 0x61, - 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, - 0x6C, 0x65, 0x6E, 0x64, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x50, 0x6F, - 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x5B, 0x5B, 0x30, 0x20, - 0x30, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x30, 0x20, - 0x31, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x31, 0x20, 0x5D, 0x5D, 0x20, 0x64, - 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x44, 0x65, 0x73, - 0x69, 0x67, 0x6E, 0x4D, 0x61, 0x70, 0x20, 0x5B, 0x5B, 0x5B, 0x35, 0x30, - 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x31, 0x34, 0x35, 0x30, 0x20, 0x31, 0x20, - 0x5D, 0x5D, 0x5B, 0x5B, 0x35, 0x30, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x31, - 0x34, 0x35, 0x30, 0x20, 0x31, 0x20, 0x5D, 0x5D, 0x5D, 0x20, 0x64, 0x65, - 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, 0x69, 0x73, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x20, 0x5B, 0x2F, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x20, 0x2F, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, 0x5D, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x65, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, - 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x5B, - 0x30, 0x2E, 0x33, 0x31, 0x35, 0x38, 0x20, 0x30, 0x2E, 0x31, 0x33, 0x34, - 0x39, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x34, 0x39, 0x20, 0x30, 0x2E, 0x31, - 0x36, 0x34, 0x34, 0x20, 0x5D, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, - 0x6F, 0x6E, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x2F, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x65, 0x53, 0x61, 0x6E, 0x73, 0x4D, 0x4D, 0x20, 0x64, 0x65, - 0x66, 0x0D, 0x2F, 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, 0x6E, 0x67, 0x20, - 0x32, 0x35, 0x36, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x0D, 0x30, 0x20, - 0x31, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7B, 0x31, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x2E, 0x6E, 0x6F, - 0x74, 0x64, 0x65, 0x66, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x20, 0x66, - 0x6F, 0x72, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x32, 0x20, 0x2F, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x33, 0x33, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x6C, 0x61, 0x6D, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x34, 0x20, 0x2F, - 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x35, 0x20, 0x2F, 0x6E, 0x75, 0x6D, - 0x62, 0x65, 0x72, 0x73, 0x69, 0x67, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x33, 0x36, 0x20, 0x2F, 0x64, 0x6F, 0x6C, 0x6C, - 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, - 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6E, 0x74, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x38, 0x20, 0x2F, 0x61, - 0x6D, 0x70, 0x65, 0x72, 0x73, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x39, 0x20, 0x2F, 0x71, 0x75, 0x6F, - 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x30, 0x20, 0x2F, 0x70, 0x61, 0x72, - 0x65, 0x6E, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x34, 0x31, 0x20, 0x2F, 0x70, 0x61, 0x72, 0x65, 0x6E, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x34, 0x32, 0x20, 0x2F, 0x61, 0x73, 0x74, 0x65, 0x72, 0x69, - 0x73, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, - 0x33, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x34, 0x34, 0x20, 0x2F, 0x63, 0x6F, 0x6D, 0x6D, - 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x35, - 0x20, 0x2F, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x36, 0x20, 0x2F, 0x70, 0x65, 0x72, - 0x69, 0x6F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x34, 0x37, 0x20, 0x2F, 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x38, 0x20, 0x2F, 0x7A, 0x65, - 0x72, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, - 0x39, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x35, 0x30, 0x20, 0x2F, 0x74, 0x77, 0x6F, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x31, 0x20, 0x2F, 0x74, - 0x68, 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x35, 0x32, 0x20, 0x2F, 0x66, 0x6F, 0x75, 0x72, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x33, 0x20, 0x2F, 0x66, 0x69, - 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, - 0x34, 0x20, 0x2F, 0x73, 0x69, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x35, 0x35, 0x20, 0x2F, 0x73, 0x65, 0x76, 0x65, 0x6E, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x36, 0x20, - 0x2F, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x35, 0x37, 0x20, 0x2F, 0x6E, 0x69, 0x6E, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x38, 0x20, 0x2F, - 0x63, 0x6F, 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x35, 0x39, 0x20, 0x2F, 0x73, 0x65, 0x6D, 0x69, 0x63, 0x6F, - 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x36, 0x30, 0x20, 0x2F, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x31, 0x20, 0x2F, 0x65, 0x71, 0x75, - 0x61, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, - 0x32, 0x20, 0x2F, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x33, 0x20, 0x2F, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x36, 0x34, 0x20, 0x2F, 0x61, 0x74, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x35, 0x20, 0x2F, 0x41, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x36, 0x20, - 0x2F, 0x42, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, - 0x37, 0x20, 0x2F, 0x43, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x36, 0x38, 0x20, 0x2F, 0x44, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x36, 0x39, 0x20, 0x2F, 0x45, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x30, 0x20, 0x2F, 0x46, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x31, 0x20, 0x2F, 0x47, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x32, 0x20, - 0x2F, 0x48, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, - 0x33, 0x20, 0x2F, 0x49, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x37, 0x34, 0x20, 0x2F, 0x4A, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x37, 0x35, 0x20, 0x2F, 0x4B, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x36, 0x20, 0x2F, 0x4C, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x37, 0x20, 0x2F, 0x4D, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x38, 0x20, - 0x2F, 0x4E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, - 0x39, 0x20, 0x2F, 0x4F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x38, 0x30, 0x20, 0x2F, 0x50, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x38, 0x31, 0x20, 0x2F, 0x51, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x32, 0x20, 0x2F, 0x52, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x33, 0x20, 0x2F, 0x53, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x34, 0x20, - 0x2F, 0x54, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, - 0x35, 0x20, 0x2F, 0x55, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x38, 0x36, 0x20, 0x2F, 0x56, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x38, 0x37, 0x20, 0x2F, 0x57, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x38, 0x20, 0x2F, 0x58, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x39, 0x20, 0x2F, 0x59, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x30, 0x20, - 0x2F, 0x5A, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, - 0x31, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x6C, 0x65, - 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, - 0x32, 0x20, 0x2F, 0x62, 0x61, 0x63, 0x6B, 0x73, 0x6C, 0x61, 0x73, 0x68, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x33, 0x20, - 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x34, - 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x63, 0x69, 0x72, 0x63, 0x75, - 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x35, - 0x20, 0x2F, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6F, 0x72, 0x65, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x36, 0x20, - 0x2F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x39, 0x37, 0x20, 0x2F, 0x61, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x38, 0x20, 0x2F, 0x62, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x39, 0x20, 0x2F, 0x63, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x30, - 0x20, 0x2F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x30, 0x31, 0x20, 0x2F, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x30, 0x32, 0x20, 0x2F, 0x66, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x33, 0x20, 0x2F, 0x67, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x34, - 0x20, 0x2F, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x30, 0x35, 0x20, 0x2F, 0x69, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x30, 0x36, 0x20, 0x2F, 0x6A, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x37, 0x20, 0x2F, 0x6B, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x38, - 0x20, 0x2F, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x30, 0x39, 0x20, 0x2F, 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x31, 0x30, 0x20, 0x2F, 0x6E, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x31, 0x20, 0x2F, 0x6F, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x32, - 0x20, 0x2F, 0x70, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x31, 0x33, 0x20, 0x2F, 0x71, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x31, 0x34, 0x20, 0x2F, 0x72, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x35, 0x20, 0x2F, 0x73, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x36, - 0x20, 0x2F, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x31, 0x37, 0x20, 0x2F, 0x75, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x31, 0x38, 0x20, 0x2F, 0x76, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x39, 0x20, 0x2F, 0x77, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x30, - 0x20, 0x2F, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x32, 0x31, 0x20, 0x2F, 0x79, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x32, 0x32, 0x20, 0x2F, 0x7A, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x33, 0x20, 0x2F, 0x62, - 0x72, 0x61, 0x63, 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x34, 0x20, 0x2F, 0x62, 0x61, - 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, - 0x35, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x65, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, - 0x36, 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x74, 0x69, 0x6C, 0x64, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, - 0x38, 0x20, 0x2F, 0x45, 0x75, 0x72, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x30, 0x20, 0x2F, 0x71, 0x75, 0x6F, - 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x62, 0x61, 0x73, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x31, 0x20, - 0x2F, 0x66, 0x6C, 0x6F, 0x72, 0x69, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x32, 0x20, 0x2F, 0x71, 0x75, 0x6F, - 0x74, 0x65, 0x64, 0x62, 0x6C, 0x62, 0x61, 0x73, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x33, 0x20, 0x2F, 0x65, - 0x6C, 0x6C, 0x69, 0x70, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x34, 0x20, 0x2F, 0x64, 0x61, 0x67, - 0x67, 0x65, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x33, 0x35, 0x20, 0x2F, 0x64, 0x61, 0x67, 0x67, 0x65, 0x72, 0x64, - 0x62, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x33, 0x36, 0x20, 0x2F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, - 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x33, 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x74, 0x68, 0x6F, 0x75, 0x73, - 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x33, 0x38, 0x20, 0x2F, 0x53, 0x63, 0x61, 0x72, 0x6F, 0x6E, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x39, 0x20, - 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x6C, 0x65, - 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x34, 0x30, 0x20, 0x2F, 0x4F, 0x45, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x34, 0x35, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, - 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x34, 0x36, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, 0x65, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x34, 0x37, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, 0x65, - 0x64, 0x62, 0x6C, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x38, 0x20, 0x2F, 0x71, 0x75, 0x6F, - 0x74, 0x65, 0x64, 0x62, 0x6C, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x39, 0x20, 0x2F, - 0x62, 0x75, 0x6C, 0x6C, 0x65, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x35, 0x30, 0x20, 0x2F, 0x65, 0x6E, 0x64, 0x61, - 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x35, 0x31, 0x20, 0x2F, 0x65, 0x6D, 0x64, 0x61, 0x73, 0x68, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x32, 0x20, 0x2F, - 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x35, 0x33, 0x20, 0x2F, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x35, 0x34, 0x20, 0x2F, 0x73, 0x63, 0x61, 0x72, 0x6F, 0x6E, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x35, - 0x20, 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x35, 0x36, 0x20, 0x2F, 0x6F, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x39, 0x20, 0x2F, 0x59, 0x64, - 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x31, 0x20, 0x2F, 0x65, 0x78, 0x63, - 0x6C, 0x61, 0x6D, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x32, 0x20, 0x2F, 0x63, 0x65, 0x6E, - 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, - 0x33, 0x20, 0x2F, 0x73, 0x74, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x67, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x34, 0x20, - 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x35, 0x20, 0x2F, 0x79, - 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x36, 0x36, 0x20, 0x2F, 0x62, 0x72, 0x6F, 0x6B, 0x65, 0x6E, 0x62, 0x61, - 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, - 0x37, 0x20, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x38, 0x20, 0x2F, - 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x39, 0x20, 0x2F, 0x63, 0x6F, - 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x30, 0x20, 0x2F, 0x6F, 0x72, 0x64, - 0x66, 0x65, 0x6D, 0x69, 0x6E, 0x69, 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x31, 0x20, 0x2F, 0x67, 0x75, - 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x6C, 0x65, 0x66, 0x74, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x32, 0x20, - 0x2F, 0x6C, 0x6F, 0x67, 0x69, 0x63, 0x61, 0x6C, 0x6E, 0x6F, 0x74, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x34, 0x20, - 0x2F, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x35, 0x20, - 0x2F, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x36, 0x20, 0x2F, 0x64, 0x65, 0x67, - 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x37, 0x37, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, 0x6D, 0x69, 0x6E, - 0x75, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x37, 0x38, 0x20, 0x2F, 0x74, 0x77, 0x6F, 0x73, 0x75, 0x70, 0x65, 0x72, - 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x37, 0x39, 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x65, 0x73, 0x75, - 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x38, 0x30, 0x20, 0x2F, 0x61, 0x63, 0x75, 0x74, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, - 0x31, 0x20, 0x2F, 0x6D, 0x75, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x38, 0x32, 0x20, 0x2F, 0x70, 0x61, 0x72, 0x61, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x38, 0x33, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x64, - 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x34, 0x20, 0x2F, 0x63, 0x65, - 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x38, 0x35, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x73, 0x75, - 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x38, 0x36, 0x20, 0x2F, 0x6F, 0x72, 0x64, 0x6D, - 0x61, 0x73, 0x63, 0x75, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x37, 0x20, 0x2F, 0x67, 0x75, - 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x72, 0x69, 0x67, 0x68, 0x74, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x38, - 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x39, - 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x68, 0x61, 0x6C, 0x66, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x30, 0x20, 0x2F, 0x74, - 0x68, 0x72, 0x65, 0x65, 0x71, 0x75, 0x61, 0x72, 0x74, 0x65, 0x72, 0x73, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x31, - 0x20, 0x2F, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, 0x6E, 0x64, 0x6F, - 0x77, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x39, 0x32, 0x20, 0x2F, 0x41, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x33, 0x20, 0x2F, - 0x41, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x39, 0x34, 0x20, 0x2F, 0x41, 0x63, 0x69, 0x72, - 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x35, 0x20, 0x2F, 0x41, 0x74, 0x69, - 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x39, 0x36, 0x20, 0x2F, 0x41, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, - 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x39, 0x37, 0x20, 0x2F, 0x41, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x38, 0x20, 0x2F, 0x41, - 0x45, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, - 0x39, 0x20, 0x2F, 0x43, 0x63, 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x30, 0x20, - 0x2F, 0x45, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x31, 0x20, 0x2F, 0x45, 0x61, 0x63, - 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x30, 0x32, 0x20, 0x2F, 0x45, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, - 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x32, 0x30, 0x33, 0x20, 0x2F, 0x45, 0x64, 0x69, 0x65, 0x72, 0x65, - 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x30, 0x34, 0x20, 0x2F, 0x49, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x35, 0x20, - 0x2F, 0x49, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x36, 0x20, 0x2F, 0x49, 0x63, 0x69, - 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x37, 0x20, 0x2F, 0x49, 0x64, - 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x38, 0x20, 0x2F, 0x45, 0x74, 0x68, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x39, - 0x20, 0x2F, 0x4E, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x30, 0x20, 0x2F, 0x4F, 0x67, - 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x32, 0x31, 0x31, 0x20, 0x2F, 0x4F, 0x61, 0x63, 0x75, 0x74, 0x65, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x32, - 0x20, 0x2F, 0x4F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, - 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, - 0x33, 0x20, 0x2F, 0x4F, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x34, 0x20, 0x2F, 0x4F, - 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x35, 0x20, 0x2F, 0x6D, 0x75, - 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x79, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x31, 0x36, 0x20, 0x2F, 0x4F, 0x73, 0x6C, 0x61, - 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x31, 0x37, 0x20, 0x2F, 0x55, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x38, 0x20, 0x2F, - 0x55, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x31, 0x39, 0x20, 0x2F, 0x55, 0x63, 0x69, 0x72, - 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x30, 0x20, 0x2F, 0x55, 0x64, 0x69, - 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x32, 0x31, 0x20, 0x2F, 0x59, 0x61, 0x63, 0x75, - 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x32, 0x32, 0x20, 0x2F, 0x54, 0x68, 0x6F, 0x72, 0x6E, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x33, 0x20, 0x2F, 0x67, - 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x64, 0x62, 0x6C, 0x73, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x34, 0x20, 0x2F, 0x61, - 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x32, 0x35, 0x20, 0x2F, 0x61, 0x61, 0x63, 0x75, 0x74, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, - 0x36, 0x20, 0x2F, 0x61, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, - 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x32, 0x37, 0x20, 0x2F, 0x61, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x38, 0x20, 0x2F, - 0x61, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x39, 0x20, 0x2F, 0x61, - 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x32, 0x33, 0x30, 0x20, 0x2F, 0x61, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x31, 0x20, 0x2F, 0x63, 0x63, - 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x33, 0x32, 0x20, 0x2F, 0x65, 0x67, 0x72, 0x61, - 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x33, 0x33, 0x20, 0x2F, 0x65, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x34, 0x20, 0x2F, - 0x65, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x35, 0x20, - 0x2F, 0x65, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x36, 0x20, 0x2F, - 0x69, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x33, 0x37, 0x20, 0x2F, 0x69, 0x61, 0x63, 0x75, - 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x33, 0x38, 0x20, 0x2F, 0x69, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, - 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x33, 0x39, 0x20, 0x2F, 0x69, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, - 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x34, 0x30, 0x20, 0x2F, 0x65, 0x74, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x31, 0x20, 0x2F, 0x6E, 0x74, 0x69, - 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x34, 0x32, 0x20, 0x2F, 0x6F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x33, 0x20, - 0x2F, 0x6F, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x34, 0x20, 0x2F, 0x6F, 0x63, 0x69, - 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x35, 0x20, 0x2F, 0x6F, 0x74, - 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x32, 0x34, 0x36, 0x20, 0x2F, 0x6F, 0x64, 0x69, 0x65, 0x72, 0x65, - 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x34, 0x37, 0x20, 0x2F, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x38, 0x20, - 0x2F, 0x6F, 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x39, 0x20, 0x2F, 0x75, 0x67, 0x72, - 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x35, 0x30, 0x20, 0x2F, 0x75, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x31, 0x20, - 0x2F, 0x75, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x32, - 0x20, 0x2F, 0x75, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x33, 0x20, - 0x2F, 0x79, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x34, 0x20, 0x2F, 0x74, 0x68, 0x6F, - 0x72, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x35, 0x35, 0x20, 0x2F, 0x79, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, - 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, - 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x50, 0x61, 0x69, 0x6E, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x31, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x24, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, - 0x7B, 0x20, 0x30, 0x2E, 0x31, 0x33, 0x34, 0x39, 0x20, 0x6D, 0x75, 0x6C, - 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x30, 0x2E, 0x33, 0x38, 0x34, 0x39, - 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x30, 0x2E, 0x31, 0x36, 0x34, 0x34, 0x20, 0x6D, 0x75, 0x6C, - 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x62, - 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, - 0x74, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x5B, 0x20, 0x30, 0x2E, - 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, 0x30, 0x20, - 0x30, 0x2E, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x20, - 0x30, 0x20, 0x5D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, - 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x42, 0x42, - 0x6F, 0x78, 0x20, 0x7B, 0x2D, 0x31, 0x31, 0x39, 0x20, 0x2D, 0x32, 0x35, - 0x37, 0x20, 0x31, 0x31, 0x35, 0x30, 0x20, 0x38, 0x37, 0x32, 0x7D, 0x20, - 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, - 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x33, 0x20, 0x64, 0x69, - 0x63, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, - 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x42, 0x42, 0x6F, 0x78, 0x20, 0x7B, - 0x7B, 0x20, 0x2D, 0x35, 0x35, 0x20, 0x2D, 0x31, 0x31, 0x32, 0x20, 0x2D, - 0x31, 0x36, 0x32, 0x20, 0x2D, 0x31, 0x34, 0x35, 0x20, 0x7D, 0x20, 0x7B, - 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, - 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x7D, 0x20, 0x7B, - 0x20, 0x34, 0x32, 0x34, 0x20, 0x31, 0x31, 0x35, 0x36, 0x20, 0x31, 0x33, - 0x38, 0x39, 0x20, 0x31, 0x39, 0x38, 0x31, 0x20, 0x7D, 0x20, 0x7B, 0x20, - 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, - 0x38, 0x37, 0x32, 0x20, 0x7D, 0x7D, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, - 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x31, 0x34, 0x20, 0x64, - 0x69, 0x63, 0x74, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x65, 0x6E, 0x64, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x25, 0x20, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x30, - 0x2D, 0x31, 0x39, 0x39, 0x34, 0x20, 0x41, 0x64, 0x6F, 0x62, 0x65, 0x20, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x49, 0x6E, 0x63, 0x6F, - 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x65, 0x64, 0x0D, 0x25, 0x20, 0x41, - 0x6C, 0x6C, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D, 0x2F, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, - 0x65, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, - 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, - 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x75, 0x73, - 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x20, 0x64, 0x75, 0x70, 0x0D, 0x2F, 0x6D, 0x61, 0x6B, - 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x6D, 0x61, - 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, - 0x74, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x20, 0x2F, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, - 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, - 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, - 0x30, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x20, 0x2F, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x74, - 0x79, 0x70, 0x65, 0x20, 0x6E, 0x65, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x31, - 0x31, 0x20, 0x6C, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, - 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, - 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, - 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, - 0x7B, 0x0D, 0x31, 0x31, 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x63, - 0x6F, 0x70, 0x79, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x2F, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x56, - 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x67, 0x65, 0x74, 0x20, 0x6C, 0x65, - 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x71, 0x0D, 0x7B, 0x20, 0x64, 0x75, - 0x70, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x61, - 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, - 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x61, 0x62, 0x73, 0x20, 0x2E, 0x30, - 0x30, 0x31, 0x20, 0x67, 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x74, 0x72, - 0x75, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, - 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, - 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, 0x20, 0x65, - 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, 0x72, 0x61, - 0x6E, 0x67, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, 0x74, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, - 0x6D, 0x61, 0x78, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x64, 0x69, - 0x63, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x7B, 0x0D, 0x66, - 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x46, 0x49, 0x44, 0x20, - 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x49, 0x44, 0x20, 0x2F, 0x58, - 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x33, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7D, 0x20, - 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x65, 0x66, - 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, - 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x2F, 0x58, 0x55, 0x49, 0x44, - 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6B, 0x6E, 0x6F, 0x77, - 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, - 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x73, 0x75, - 0x62, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x67, 0x74, 0x20, 0x7B, - 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, - 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, - 0x6F, 0x70, 0x79, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x32, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x36, 0x35, 0x35, 0x33, 0x36, - 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x63, 0x76, 0x69, 0x20, 0x33, 0x20, 0x63, - 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, - 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x2F, 0x58, 0x55, 0x49, 0x44, - 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x7D, 0x20, - 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, - 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x50, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, 0x6F, - 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x6F, 0x61, - 0x64, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6D, 0x61, 0x78, 0x6C, 0x65, 0x6E, - 0x67, 0x74, 0x68, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x62, 0x65, 0x67, - 0x69, 0x6E, 0x20, 0x7B, 0x0D, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7B, - 0x20, 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x49, 0x44, 0x20, 0x2F, - 0x58, 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x33, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7D, - 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7B, 0x20, 0x70, 0x6F, - 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x65, - 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, - 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x24, 0x42, 0x6C, - 0x65, 0x6E, 0x64, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x5B, 0x0D, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, - 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x2D, 0x31, 0x20, 0x31, - 0x20, 0x7B, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x64, - 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x33, 0x20, - 0x2D, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x73, 0x75, 0x62, 0x20, - 0x67, 0x65, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x65, 0x71, - 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6C, - 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, - 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x2F, 0x70, 0x6F, 0x70, 0x20, 0x6C, - 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, - 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x31, 0x20, 0x65, - 0x71, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7B, 0x20, - 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x34, 0x20, 0x31, - 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x33, - 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x2F, 0x6D, 0x75, 0x6C, - 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, - 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, - 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x61, - 0x64, 0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, - 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, 0x70, 0x6F, 0x70, 0x20, - 0x7B, 0x20, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x5D, 0x20, 0x63, 0x76, 0x78, 0x20, 0x64, - 0x65, 0x66, 0x0D, 0x7B, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, - 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x20, 0x7B, 0x20, - 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, - 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, - 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, 0x74, 0x79, 0x70, 0x65, - 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, - 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x30, 0x20, 0x30, 0x20, - 0x31, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, - 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x7B, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x6D, 0x75, 0x6C, 0x20, - 0x61, 0x64, 0x64, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x7B, 0x20, 0x64, 0x75, - 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, - 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x70, - 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, 0x79, - 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x70, - 0x6F, 0x70, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x2F, - 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, 0x6F, 0x6C, 0x64, 0x20, 0x65, 0x71, - 0x20, 0x7B, 0x0D, 0x35, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x30, - 0x20, 0x30, 0x20, 0x31, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, - 0x62, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, - 0x20, 0x7B, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, 0x20, - 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, - 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x2F, 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, 0x6F, 0x6C, 0x64, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, 0x20, 0x67, 0x65, 0x74, - 0x20, 0x67, 0x74, 0x20, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x7D, - 0x20, 0x7B, 0x0D, 0x7B, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, - 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, - 0x74, 0x68, 0x20, 0x6E, 0x65, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x74, 0x72, - 0x75, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x74, 0x79, - 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x69, 0x6E, 0x74, 0x65, - 0x67, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x74, 0x79, 0x70, - 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6F, 0x72, - 0x20, 0x61, 0x6E, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, - 0x6C, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, - 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x38, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x65, 0x78, 0x65, - 0x63, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x35, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x35, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, - 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x78, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x7B, 0x20, - 0x63, 0x76, 0x78, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, - 0x62, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x31, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x20, - 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, - 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, - 0x64, 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, 0x79, - 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, - 0x70, 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, 0x72, 0x61, 0x79, 0x74, - 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x36, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, - 0x63, 0x20, 0x7B, 0x0D, 0x39, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x39, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, - 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x33, 0x20, - 0x63, 0x6F, 0x70, 0x79, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x53, 0x74, 0x65, 0x6D, 0x53, 0x6E, - 0x61, 0x70, 0x48, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x2F, 0x53, 0x74, 0x65, 0x6D, 0x53, 0x6E, 0x61, 0x70, 0x56, 0x20, 0x65, - 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, - 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, - 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x6C, 0x65, 0x20, 0x7B, - 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, - 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, - 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x67, 0x65, 0x74, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, - 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x30, 0x20, 0x70, 0x75, 0x74, 0x20, 0x30, 0x20, 0x7D, 0x20, 0x69, 0x66, - 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, - 0x7D, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, - 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x0D, 0x33, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, - 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x33, 0x20, 0x63, - 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, 0x70, 0x6F, 0x70, 0x0D, - 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, - 0x20, 0x6C, 0x74, 0x20, 0x7B, 0x20, 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x67, 0x65, 0x74, 0x20, 0x30, - 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x30, 0x20, 0x67, 0x74, 0x20, - 0x7B, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, - 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, - 0x6C, 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x73, 0x75, 0x62, 0x20, 0x67, 0x65, 0x74, 0x69, 0x6E, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x2F, 0x64, - 0x69, 0x63, 0x74, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x7B, - 0x20, 0x36, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x33, 0x20, 0x31, 0x20, - 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, - 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, - 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, - 0x63, 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x2F, 0x74, 0x79, 0x70, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, - 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x7D, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, - 0x63, 0x74, 0x20, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x32, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x6E, - 0x64, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x2F, 0x24, 0x66, 0x62, 0x66, 0x20, 0x7B, 0x20, 0x46, 0x6F, 0x6E, - 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x63, - 0x6F, 0x75, 0x6E, 0x74, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x33, - 0x20, 0x61, 0x64, 0x64, 0x20, 0x2D, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, - 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x63, 0x6C, 0x65, - 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, - 0x7B, 0x0D, 0x5D, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x66, 0x69, 0x6E, - 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6D, - 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, - 0x6E, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x45, 0x6E, 0x63, 0x6F, - 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, - 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, - 0x6E, 0x67, 0x20, 0x67, 0x65, 0x74, 0x20, 0x70, 0x75, 0x74, 0x20, 0x64, - 0x65, 0x66, 0x69, 0x6E, 0x65, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x7D, 0x20, - 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6E, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x53, 0x63, 0x61, 0x6C, - 0x65, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x67, 0x65, 0x74, 0x20, - 0x6D, 0x61, 0x6B, 0x65, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x74, - 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, - 0x70, 0x75, 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x4E, 0x6F, 0x72, 0x6D, 0x61, - 0x6C, 0x69, 0x7A, 0x65, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, - 0x63, 0x74, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x35, 0x30, 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, - 0x64, 0x69, 0x76, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x35, 0x30, 0x20, - 0x73, 0x75, 0x62, 0x20, 0x31, 0x34, 0x30, 0x30, 0x20, 0x64, 0x69, 0x76, - 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x2F, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x44, 0x65, 0x73, 0x69, - 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x31, - 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, 0x62, - 0x20, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, - 0x75, 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, - 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, - 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, - 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, - 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, - 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, - 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x70, - 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, - 0x66, 0x0D, 0x2F, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, - 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x77, 0x68, - 0x65, 0x72, 0x65, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x73, 0x61, - 0x76, 0x65, 0x20, 0x7B, 0x20, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x65, - 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x7D, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x7B, - 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x20, 0x70, - 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, - 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, - 0x73, 0x65, 0x0D, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x64, - 0x75, 0x70, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x7B, - 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x7B, - 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, - 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x0D, 0x7D, 0x20, 0x7B, 0x20, - 0x7B, 0x20, 0x7D, 0x20, 0x75, 0x73, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, - 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x62, 0x65, - 0x67, 0x69, 0x6E, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x62, 0x65, 0x67, 0x69, - 0x6E, 0x20, 0x7B, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, - 0x69, 0x63, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x7D, - 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, - 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, - 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, - 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x24, 0x6D, 0x6D, 0x66, 0x66, - 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, - 0x74, 0x20, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, - 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, - 0x6F, 0x6E, 0x74, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, - 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0D, 0x7B, - 0x20, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x67, 0x65, 0x74, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x20, 0x67, 0x65, 0x74, 0x20, 0x33, 0x20, 0x6E, 0x65, 0x20, 0x7D, - 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, - 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, - 0x6E, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, - 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x67, - 0x65, 0x74, 0x20, 0x33, 0x20, 0x6E, 0x65, 0x20, 0x7D, 0x0D, 0x7B, 0x20, - 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, - 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, - 0x7B, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, - 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x7B, - 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, - 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x63, - 0x76, 0x73, 0x20, 0x28, 0x5F, 0x29, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x20, 0x7B, 0x0D, 0x63, 0x76, 0x6E, 0x20, 0x64, 0x75, 0x70, 0x20, - 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, - 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x53, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, - 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x74, 0x72, - 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, - 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x37, 0x20, 0x61, 0x64, 0x64, 0x20, - 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, - 0x20, 0x28, 0x25, 0x66, 0x6F, 0x6E, 0x74, 0x25, 0x29, 0x20, 0x70, 0x75, - 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x36, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, - 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x63, - 0x76, 0x73, 0x20, 0x70, 0x75, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6C, 0x0D, 0x7B, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, - 0x7D, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x70, 0x65, 0x64, 0x20, 0x7B, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, - 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, 0x24, 0x6D, 0x6D, 0x66, - 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, - 0x6E, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x70, 0x6F, 0x70, - 0x0D, 0x5B, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x28, 0x5F, - 0x29, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x7B, - 0x20, 0x63, 0x76, 0x72, 0x20, 0x7D, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x70, - 0x65, 0x64, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, - 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, - 0x73, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, 0x6F, - 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, - 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x2F, 0x42, - 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6B, 0x6E, 0x6F, - 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, 0x20, 0x6C, 0x65, 0x6E, - 0x67, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x74, 0x6F, 0x6D, - 0x61, 0x72, 0x6B, 0x20, 0x32, 0x20, 0x73, 0x75, 0x62, 0x20, 0x65, 0x71, - 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x7D, 0x20, - 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, - 0x7B, 0x0D, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x44, - 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x0D, - 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x44, 0x65, 0x73, 0x69, 0x67, - 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x0D, 0x5D, 0x20, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, - 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, - 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, - 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x66, 0x6F, 0x6E, 0x74, - 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, - 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, - 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x65, 0x6E, 0x64, - 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, - 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, - 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, - 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, - 0x63, 0x0D, 0x2F, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, - 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x64, - 0x75, 0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x20, 0x70, - 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x30, - 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, - 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x65, 0x6E, 0x64, 0x20, 0x65, 0x78, 0x65, 0x63, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x6E, - 0x64, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x66, 0x69, 0x6C, - 0x65, 0x20, 0x65, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x80, 0x02, 0x6D, 0xD9, - 0x00, 0x00, 0xE8, 0xDC, 0x61, 0x72, 0x80, 0x71, 0xAB, 0xD4, 0xD5, 0xBC, - 0xD2, 0x30, 0xC4, 0xE1, 0x86, 0xDC, 0xE0, 0x96, 0x54, 0x1C, 0x9C, 0x1F, - 0x2E, 0x58, 0x69, 0x40, 0x4E, 0x33, 0xF9, 0xCE, 0xFF, 0x7D, 0x2F, 0xBF, - 0xEF, 0x5F, 0x26, 0xC7, 0xE1, 0x84, 0x89, 0x54, 0xC7, 0x07, 0x55, 0x24, - 0x4E, 0x73, 0x41, 0xB8, 0x26, 0x97, 0xE2, 0xE8, 0xEA, 0x9C, 0xE9, 0x13, - 0x1D, 0x00, 0x55, 0x78, 0xAB, 0x3D, 0xE1, 0x9F, 0xA9, 0xF2, 0xFA, 0xFF, - 0x3B, 0xEB, 0x53, 0x17, 0x4A, 0x8E, 0x2F, 0x33, 0xE9, 0xDB, 0xE0, 0x38, - 0x63, 0x42, 0xF4, 0x0E, 0x5D, 0xF2, 0x5B, 0x7A, 0x88, 0x22, 0xEE, 0x2B, - 0x6C, 0xDC, 0xAC, 0x58, 0xA9, 0x8F, 0x9B, 0x04, 0x71, 0x44, 0xE3, 0xF6, - 0xE7, 0x4A, 0xB6, 0x0C, 0x00, 0xE4, 0x42, 0xE8, 0x30, 0xB1, 0x30, 0x30, - 0x8A, 0x3F, 0x0E, 0xDF, 0x2C, 0xE6, 0x62, 0x35, 0xF9, 0x21, 0x6D, 0x42, - 0x0F, 0x23, 0xAC, 0xED, 0xEC, 0x60, 0xA8, 0x8A, 0x73, 0x77, 0x14, 0x62, - 0xE1, 0xB2, 0x04, 0x04, 0x29, 0x5D, 0x49, 0xBA, 0x8A, 0x8B, 0xCB, 0xF2, - 0x04, 0x2A, 0x8D, 0xEB, 0x9A, 0x65, 0xBA, 0xF1, 0xC8, 0x24, 0x2F, 0x7E, - 0x90, 0xD9, 0x49, 0x63, 0x23, 0x73, 0xF8, 0x43, 0x8F, 0xC1, 0xE7, 0x37, - 0x37, 0x0B, 0x91, 0x15, 0x08, 0x9D, 0xA7, 0x90, 0xA8, 0x28, 0x50, 0xB6, - 0x91, 0xE6, 0xE9, 0xE2, 0x79, 0x11, 0x12, 0x36, 0xFF, 0xD7, 0xC7, 0x69, - 0xE2, 0x5A, 0x86, 0xDA, 0xFA, 0x47, 0x58, 0x69, 0x73, 0xB5, 0x49, 0xF3, - 0xB4, 0x9B, 0x15, 0x16, 0x9C, 0x35, 0xF5, 0xDD, 0x2F, 0xD1, 0x4A, 0x95, - 0x2A, 0x95, 0x04, 0x43, 0x8B, 0xF2, 0x75, 0x99, 0xA4, 0x90, 0xA6, 0xA1, - 0x0A, 0x87, 0x35, 0x71, 0xEB, 0x17, 0x1A, 0x46, 0x59, 0x3E, 0xC6, 0xF8, - 0x99, 0xF7, 0x60, 0x2C, 0x66, 0x27, 0x4A, 0x48, 0x63, 0x35, 0xAD, 0xC1, - 0xDF, 0x19, 0x26, 0x81, 0x68, 0x9C, 0x17, 0xD4, 0x71, 0x79, 0xEF, 0x5B, - 0xE3, 0xB5, 0xBE, 0xA9, 0xE5, 0xD2, 0x6C, 0xA2, 0x64, 0x0A, 0x14, 0x44, - 0xFE, 0x73, 0x6B, 0x69, 0xEF, 0x3D, 0xF3, 0x0A, 0x79, 0x68, 0x5B, 0x61, - 0x86, 0xAE, 0x9B, 0x42, 0x80, 0x6E, 0xBF, 0x24, 0x85, 0xA9, 0x87, 0x98, - 0x59, 0xBB, 0x30, 0x36, 0x38, 0x81, 0x2A, 0x82, 0xB6, 0x05, 0x19, 0x94, - 0x0A, 0x88, 0x24, 0x8A, 0x57, 0x0C, 0x51, 0x58, 0xE4, 0xAE, 0x1B, 0xE4, - 0xDF, 0xD3, 0x2F, 0x92, 0xBE, 0xB5, 0xDB, 0x51, 0x5E, 0xA2, 0xC4, 0x58, - 0xF0, 0x64, 0xF7, 0x57, 0xFB, 0x61, 0x3E, 0xAA, 0x46, 0xE6, 0x33, 0x46, - 0x6E, 0x45, 0x4D, 0x33, 0x17, 0x66, 0xE7, 0xD7, 0xCE, 0x92, 0xF0, 0xF6, - 0xB2, 0xFB, 0x62, 0x7B, 0xAD, 0x7C, 0x68, 0x0A, 0x8E, 0x14, 0x8F, 0xB7, - 0x48, 0x3D, 0x84, 0xEF, 0x49, 0xDC, 0x52, 0xE3, 0xAA, 0x04, 0xC9, 0xF3, - 0x0B, 0x21, 0x41, 0x96, 0x4D, 0x36, 0xC3, 0x3D, 0x54, 0xE8, 0x82, 0x69, - 0xFF, 0xB1, 0xA8, 0xE3, 0x8A, 0x39, 0xDC, 0xC8, 0x14, 0x0A, 0x49, 0xAC, - 0x96, 0x33, 0x1E, 0x09, 0xE8, 0x62, 0x64, 0x57, 0x82, 0x68, 0x46, 0xAB, - 0xE0, 0xBB, 0xCF, 0xCF, 0x8F, 0xCF, 0x9E, 0x08, 0xB0, 0xAD, 0x98, 0x71, - 0x33, 0x08, 0xE4, 0x5C, 0xCC, 0x7F, 0x17, 0x09, 0x98, 0x65, 0xEE, 0xED, - 0x93, 0x84, 0xC9, 0xFD, 0x46, 0x57, 0xB4, 0xF1, 0x98, 0x3A, 0xB5, 0xC2, - 0x7F, 0xF8, 0xFB, 0x60, 0x78, 0xD7, 0x47, 0xD7, 0x63, 0x58, 0x51, 0xE9, - 0xDC, 0xF1, 0x0E, 0xB8, 0x59, 0x3B, 0x72, 0x81, 0x31, 0xAF, 0xC8, 0x5B, - 0x35, 0x47, 0xF1, 0xBC, 0xCD, 0xED, 0x45, 0xF1, 0xFC, 0x6D, 0xFF, 0x2E, - 0xAA, 0x6C, 0xC2, 0x65, 0x5F, 0x8F, 0x8F, 0x95, 0x20, 0xBA, 0xCA, 0xF9, - 0x68, 0xA5, 0x47, 0x7F, 0xCC, 0xD0, 0xA6, 0x3B, 0xAE, 0xA2, 0xE5, 0x11, - 0x0D, 0x4E, 0x20, 0x44, 0x6B, 0x64, 0xDB, 0x75, 0x68, 0x9D, 0xA4, 0xEC, - 0xB2, 0x1D, 0xDF, 0x66, 0xC5, 0x89, 0x4F, 0x94, 0x0B, 0x06, 0xD9, 0x11, - 0x9C, 0x83, 0x3F, 0x55, 0x21, 0xA0, 0x65, 0x2E, 0x6D, 0x39, 0x6F, 0xCA, - 0x08, 0xDE, 0x60, 0x7F, 0x47, 0xE8, 0x9D, 0xC2, 0x9E, 0x5F, 0x81, 0x9C, - 0xAA, 0xB7, 0x46, 0x0A, 0xAC, 0xA0, 0xFD, 0x22, 0x59, 0xE6, 0xCB, 0x78, - 0xF6, 0x37, 0x7A, 0xD8, 0x6C, 0x8D, 0x61, 0xF1, 0x10, 0xE9, 0x60, 0x74, - 0x4C, 0x43, 0xB0, 0x4B, 0x3C, 0x0A, 0x77, 0x6A, 0xF3, 0xF5, 0xAE, 0x16, - 0x1C, 0xBB, 0x75, 0xDB, 0x81, 0x97, 0xA2, 0xDA, 0x6A, 0x8C, 0xE4, 0xBA, - 0xB4, 0xBE, 0x6C, 0xAD, 0x24, 0x18, 0x37, 0x3F, 0x05, 0x8A, 0x96, 0x9C, - 0x75, 0xD0, 0x97, 0xC5, 0x3B, 0xDB, 0x23, 0xBF, 0x62, 0x76, 0xC8, 0xD3, - 0xFD, 0x09, 0x57, 0xD7, 0x8B, 0x85, 0x1B, 0x9F, 0x65, 0x79, 0x83, 0x16, - 0x10, 0x92, 0xE4, 0x10, 0xB3, 0x65, 0xED, 0x7B, 0x42, 0x3B, 0xC6, 0x05, - 0x03, 0xF7, 0xFE, 0xEE, 0x4B, 0x1E, 0x87, 0x05, 0x65, 0x4E, 0x00, 0xE2, - 0x30, 0x67, 0x0A, 0xDB, 0xAB, 0x57, 0x04, 0xB6, 0x19, 0x39, 0x24, 0xFA, - 0x7F, 0xB8, 0xD9, 0x08, 0x64, 0x38, 0xFA, 0x16, 0xE1, 0xF2, 0x19, 0xB2, - 0x12, 0xBB, 0x5F, 0xDB, 0xEE, 0x81, 0xDA, 0x96, 0x41, 0x88, 0xE0, 0x9B, - 0x41, 0x27, 0x2C, 0x9B, 0xB8, 0x27, 0x41, 0x72, 0xC1, 0xE5, 0xD9, 0xE7, - 0x8D, 0x1F, 0x94, 0xF9, 0xCD, 0x0F, 0x68, 0x0D, 0xD3, 0x24, 0x6B, 0xBB, - 0xD5, 0x65, 0x71, 0x8B, 0xE9, 0x10, 0x4F, 0xED, 0x59, 0xCD, 0xEF, 0x1D, - 0x0E, 0xA7, 0x70, 0xB5, 0x1C, 0x62, 0xE5, 0x05, 0x88, 0x0C, 0xF3, 0x26, - 0x5D, 0xD8, 0x78, 0xA1, 0xF9, 0x79, 0x06, 0x9C, 0x7A, 0x5A, 0xEA, 0x30, - 0xCA, 0x16, 0x0F, 0x4E, 0xBE, 0x5F, 0x97, 0x58, 0xAA, 0x3F, 0x9B, 0xB0, - 0x32, 0xBE, 0xC8, 0x2C, 0x32, 0x70, 0xA1, 0xC3, 0xD9, 0x4A, 0xEB, 0x00, - 0xAF, 0xB2, 0x4E, 0x57, 0x7A, 0x2E, 0xE9, 0x68, 0xBD, 0x27, 0x09, 0x91, - 0xD6, 0xDC, 0xB5, 0x01, 0x5C, 0x6D, 0x1F, 0x98, 0x7C, 0x2E, 0x73, 0x41, - 0x8A, 0x09, 0x1D, 0x00, 0xE6, 0x5A, 0x9C, 0x4A, 0x6C, 0xEF, 0x59, 0x75, - 0x30, 0x70, 0x4C, 0xCF, 0xF1, 0x7F, 0x7B, 0x3F, 0xFA, 0x01, 0x0F, 0xED, - 0x29, 0x31, 0x5A, 0x5E, 0x62, 0x0D, 0x37, 0x52, 0xAB, 0x92, 0x04, 0x28, - 0xA6, 0xA8, 0x88, 0x63, 0x24, 0x0A, 0x38, 0x7F, 0x32, 0xCF, 0xC5, 0xC6, - 0xC0, 0x7C, 0x00, 0x77, 0x6C, 0x4F, 0x36, 0x82, 0xEF, 0x69, 0xF0, 0xEB, - 0xCC, 0x8C, 0x6D, 0x08, 0xFF, 0xCB, 0x03, 0x29, 0x8B, 0xEF, 0x0F, 0x45, - 0x81, 0xA3, 0xDF, 0x22, 0xEE, 0xB4, 0x72, 0x53, 0x20, 0xDC, 0x19, 0x6F, - 0x21, 0xEA, 0xF1, 0xF1, 0x51, 0x98, 0x3C, 0xA8, 0x48, 0x2E, 0x4C, 0xF9, - 0xEB, 0x10, 0x71, 0xFA, 0xF8, 0x87, 0x64, 0xE1, 0xBB, 0xAD, 0xD8, 0x12, - 0xE2, 0x8A, 0x1E, 0xFE, 0x48, 0x1C, 0x0C, 0xA6, 0x3D, 0xBD, 0x33, 0x54, - 0x8E, 0xD9, 0x88, 0x53, 0x55, 0x0D, 0x55, 0x62, 0x4F, 0x2D, 0x36, 0xE6, - 0xDF, 0x7C, 0x0F, 0xAE, 0x0E, 0x78, 0x11, 0xA3, 0x70, 0x65, 0x41, 0xE8, - 0x91, 0x36, 0xEE, 0xB6, 0xDD, 0xAB, 0xBA, 0x1F, 0x0D, 0x06, 0x48, 0x1F, - 0xE0, 0x4C, 0x12, 0xF6, 0xD2, 0x37, 0xC0, 0xBD, 0x5D, 0x34, 0x25, 0xE2, - 0xAB, 0x93, 0x4B, 0xD6, 0x17, 0x7B, 0x95, 0xD9, 0x2B, 0xFE, 0x60, 0xB0, - 0x32, 0xCD, 0x5F, 0x0F, 0x0B, 0x81, 0x58, 0xBC, 0x95, 0x9C, 0x4B, 0x81, - 0xBF, 0xD2, 0xA0, 0x64, 0xDB, 0xE8, 0xE0, 0x6A, 0x49, 0xFB, 0xC4, 0x99, - 0x59, 0x2F, 0x2B, 0xED, 0x21, 0x8D, 0xD7, 0xA7, 0x56, 0x04, 0x67, 0xC6, - 0x0C, 0x89, 0x58, 0x12, 0x5A, 0x5C, 0x27, 0x62, 0x79, 0x0C, 0x5E, 0xC3, - 0xCC, 0x99, 0x5A, 0xCF, 0x71, 0x99, 0x75, 0x2E, 0xBA, 0x1C, 0x28, 0xAA, - 0x64, 0x62, 0x17, 0xF9, 0xCD, 0x38, 0x1A, 0x0B, 0xE3, 0xF7, 0xF7, 0x98, - 0x4F, 0x0D, 0xB5, 0xF0, 0x03, 0x37, 0x68, 0x5F, 0x3D, 0xE8, 0x13, 0x01, - 0xE2, 0x36, 0xF9, 0xB6, 0x25, 0x41, 0xDE, 0x4C, 0x53, 0xD2, 0xD5, 0xB1, - 0xA1, 0x77, 0x1B, 0x9D, 0x3A, 0x67, 0x93, 0xCB, 0x00, 0xB9, 0xA0, 0x50, - 0x56, 0x00, 0xFF, 0xA6, 0xCC, 0x17, 0x5A, 0x4A, 0x5C, 0x98, 0xFA, 0x98, - 0x1E, 0x12, 0x60, 0x50, 0x4B, 0xA9, 0x91, 0x7E, 0x25, 0x9C, 0x30, 0x91, - 0xA9, 0x39, 0x22, 0xC3, 0xF8, 0x6D, 0xDC, 0xC7, 0xE7, 0x09, 0x4A, 0x56, - 0xCA, 0xD8, 0x3B, 0x4F, 0x4D, 0x2F, 0xC2, 0x2B, 0x93, 0x32, 0xE5, 0x47, - 0xEC, 0x14, 0x03, 0xC8, 0xB7, 0xE2, 0xA0, 0x84, 0xF7, 0x99, 0x51, 0x86, - 0x68, 0x08, 0x98, 0x02, 0x41, 0x29, 0x07, 0x56, 0x55, 0xE6, 0x6C, 0x74, - 0xC5, 0x61, 0x7B, 0xDB, 0x33, 0x01, 0xF8, 0xF0, 0xA9, 0x18, 0xFE, 0xC5, - 0x35, 0x8C, 0xB2, 0x80, 0xDA, 0xD0, 0x84, 0x8A, 0xFC, 0x4C, 0x3C, 0x3A, - 0x1F, 0x71, 0xF4, 0x46, 0x63, 0x60, 0x13, 0xF4, 0x1D, 0x82, 0xD7, 0xB0, - 0x48, 0x4F, 0x2E, 0x79, 0xF7, 0xEC, 0x06, 0x12, 0x7A, 0xD2, 0x94, 0x74, - 0x91, 0xC9, 0x68, 0x8A, 0xF0, 0x63, 0xD9, 0x18, 0x3C, 0x8B, 0x54, 0x94, - 0x12, 0x4F, 0xFE, 0x9F, 0x9D, 0x12, 0xFA, 0xAD, 0xEE, 0xD1, 0xFD, 0x56, - 0x31, 0x17, 0x5A, 0xC3, 0x09, 0xC1, 0x35, 0x53, 0x41, 0xEF, 0xF9, 0x9B, - 0x7E, 0xBE, 0xFC, 0xA8, 0x96, 0x6E, 0x8D, 0xFD, 0xB8, 0x42, 0xC3, 0xA7, - 0x78, 0xCB, 0xF9, 0x9B, 0xFB, 0x01, 0xCB, 0x9F, 0xA4, 0xA2, 0x0C, 0x80, - 0xB7, 0x4D, 0x01, 0x50, 0x2F, 0xD3, 0xC1, 0xD5, 0x4B, 0x01, 0xEE, 0xDF, - 0x08, 0x6A, 0xB2, 0xC6, 0x08, 0x49, 0x71, 0x89, 0xB3, 0xF0, 0xC1, 0x50, - 0x74, 0xAC, 0xFE, 0x7E, 0x82, 0xE7, 0xA6, 0x10, 0xF2, 0x0C, 0x5A, 0xEC, - 0xC2, 0xE8, 0x55, 0x40, 0xB0, 0x1E, 0x7F, 0x95, 0xF7, 0x39, 0x1C, 0xA7, - 0xEC, 0xEB, 0x81, 0xF4, 0xCB, 0x82, 0x1D, 0x94, 0x8C, 0xBF, 0xDA, 0xB7, - 0x65, 0x51, 0x05, 0x22, 0x92, 0x3C, 0x7A, 0x38, 0xB1, 0xBB, 0x14, 0xAF, - 0xB1, 0xFF, 0x8A, 0x98, 0x24, 0x1B, 0xE0, 0x51, 0x0B, 0x72, 0xD1, 0x2E, - 0x97, 0xE0, 0x4D, 0xA2, 0xFF, 0x0F, 0x30, 0xAC, 0x7A, 0xD2, 0x88, 0x6C, - 0xB4, 0xCE, 0x67, 0xC2, 0xF7, 0x18, 0x91, 0x1E, 0x1C, 0xF4, 0xFA, 0x0D, - 0xDC, 0x42, 0x3B, 0xA4, 0xB8, 0x48, 0xF3, 0x98, 0x94, 0x5C, 0x57, 0x98, - 0xA9, 0x71, 0x14, 0x5B, 0x79, 0xCF, 0x33, 0xAA, 0xE1, 0x19, 0x49, 0xFC, - 0x2E, 0x66, 0x2C, 0x6C, 0xEB, 0xB8, 0x71, 0x3B, 0x9C, 0x19, 0x14, 0x5C, - 0x95, 0xDB, 0x7D, 0x47, 0xB8, 0x54, 0x14, 0xC9, 0xA8, 0x38, 0xA3, 0x3A, - 0xF8, 0x40, 0xD6, 0x4F, 0x3E, 0x52, 0x48, 0x66, 0xED, 0xE9, 0xB8, 0xB7, - 0x03, 0x0E, 0x4B, 0x8F, 0x84, 0xDF, 0xA3, 0xE4, 0x7A, 0x97, 0xA6, 0xB8, - 0x9C, 0x97, 0xBF, 0x70, 0xDA, 0xAC, 0x71, 0x01, 0xAA, 0xDE, 0x0E, 0xFB, - 0xFA, 0xF1, 0xCF, 0x0D, 0x9C, 0x93, 0xEB, 0xE4, 0xF4, 0xAF, 0xB6, 0x1D, - 0x10, 0xB0, 0x0C, 0xDB, 0x80, 0xF2, 0x9A, 0x8C, 0xB5, 0x5F, 0x2C, 0xB1, - 0x67, 0xE9, 0x3A, 0xD7, 0xE4, 0xCF, 0x20, 0xE7, 0x06, 0x86, 0xFA, 0x23, - 0x8E, 0xBF, 0x85, 0x45, 0x2A, 0x4B, 0x53, 0x45, 0xF1, 0xA2, 0x6C, 0x2A, - 0x4F, 0x4D, 0x67, 0xED, 0x78, 0x15, 0x06, 0x43, 0x94, 0x44, 0xFB, 0x1C, - 0xD5, 0xDB, 0x88, 0x95, 0xD5, 0x53, 0x90, 0xBD, 0xF8, 0x7A, 0xD8, 0xED, - 0xE0, 0x3E, 0x86, 0xC9, 0x9D, 0xFC, 0xA7, 0x29, 0x94, 0x82, 0xC3, 0x71, - 0xB4, 0xE7, 0x77, 0x35, 0x48, 0x7A, 0xA0, 0x79, 0x8A, 0x68, 0x7F, 0xA2, - 0xDF, 0xDA, 0x34, 0x4D, 0x72, 0xD2, 0xB3, 0x51, 0xA6, 0x64, 0x84, 0xF5, - 0x01, 0x74, 0x87, 0x57, 0xA3, 0x3F, 0x25, 0x28, 0xAA, 0x88, 0x75, 0xFC, - 0xE6, 0x79, 0x62, 0xBF, 0xF8, 0xD7, 0xBE, 0x22, 0x13, 0xD2, 0xAD, 0x08, - 0x7D, 0x15, 0xF3, 0x9D, 0x74, 0xB6, 0x49, 0x53, 0xE7, 0x4C, 0xE9, 0x57, - 0x80, 0x5A, 0x8F, 0x5D, 0x75, 0xDE, 0x04, 0x59, 0x0B, 0x8C, 0xC6, 0x1B, - 0x7A, 0xFC, 0xF0, 0x42, 0xC2, 0x6A, 0x17, 0x3A, 0x19, 0x92, 0x66, 0xE3, - 0x04, 0x28, 0x85, 0x02, 0xA3, 0x2F, 0xA8, 0x3D, 0x92, 0x9F, 0xD4, 0xDF, - 0x24, 0x57, 0xF9, 0x61, 0x10, 0xD6, 0x6B, 0x32, 0x5F, 0x7F, 0xC6, 0xDD, - 0x58, 0x4D, 0x83, 0xF9, 0x27, 0x0E, 0xF9, 0x6D, 0x4F, 0x30, 0x32, 0x12, - 0x5A, 0xC5, 0xEA, 0x83, 0x35, 0x14, 0x23, 0x58, 0x66, 0x79, 0x5B, 0x44, - 0x44, 0x9E, 0xBE, 0xBF, 0x2D, 0x02, 0x76, 0x4A, 0x59, 0x2A, 0x1F, 0xC8, - 0xF6, 0x84, 0xD1, 0x87, 0x55, 0xE5, 0x3D, 0xF2, 0xCC, 0x63, 0xE0, 0x47, - 0x1F, 0x14, 0x00, 0x56, 0xF1, 0xF1, 0x7B, 0x45, 0xD2, 0xE6, 0xC9, 0x38, - 0x1C, 0xE1, 0x29, 0x3D, 0xF4, 0x1D, 0x2B, 0x3E, 0x67, 0x9C, 0x67, 0xE4, - 0x82, 0x40, 0x29, 0x55, 0xC4, 0x46, 0xBE, 0x6B, 0xA5, 0x2A, 0xDD, 0xFF, - 0xCA, 0xD0, 0xC9, 0x05, 0x03, 0xA0, 0x4F, 0x0D, 0xA0, 0xA5, 0x04, 0x26, - 0x02, 0x92, 0x16, 0x5C, 0x2D, 0x68, 0xDF, 0x06, 0x87, 0x79, 0x71, 0xA3, - 0x40, 0xB5, 0xCC, 0x1E, 0x71, 0x3C, 0x7F, 0x16, 0xFA, 0xA0, 0xA5, 0x58, - 0xD9, 0x53, 0x93, 0x31, 0x03, 0x28, 0x0A, 0x94, 0x41, 0xC1, 0xEE, 0x61, - 0x47, 0xE0, 0x02, 0x8E, 0x39, 0xEF, 0x6D, 0xA9, 0xD3, 0x00, 0xA0, 0x30, - 0x95, 0xF5, 0xFC, 0xBF, 0xC7, 0x6B, 0x8A, 0x32, 0x16, 0x9E, 0x50, 0xB0, - 0xEF, 0x0C, 0xF3, 0x55, 0x61, 0xD0, 0x21, 0xF7, 0x6B, 0xA0, 0xB9, 0xC9, - 0x69, 0xE7, 0x85, 0xF8, 0xE7, 0x69, 0xC4, 0xB5, 0x27, 0x01, 0x1B, 0xB1, - 0xAD, 0x09, 0x5A, 0xD0, 0x40, 0xC0, 0x1C, 0x34, 0x51, 0x23, 0x3F, 0xD2, - 0xD4, 0x94, 0xBA, 0x42, 0xA8, 0xC9, 0x4B, 0x84, 0x2B, 0x82, 0xDD, 0xDA, - 0x22, 0x14, 0xE0, 0x24, 0x53, 0x12, 0xD0, 0x67, 0x62, 0xC2, 0x4E, 0xF6, - 0x7A, 0xBA, 0xCB, 0xF1, 0xF0, 0xE4, 0x51, 0x2A, 0xA5, 0x48, 0x4C, 0xC6, - 0xC2, 0x30, 0x00, 0xEC, 0xEE, 0xEB, 0xBC, 0xE9, 0x76, 0x4E, 0x23, 0xB1, - 0xCE, 0x05, 0x40, 0x1F, 0x2D, 0x0E, 0xEB, 0x84, 0x96, 0x38, 0x16, 0x5B, - 0xCF, 0x4D, 0xFB, 0x1A, 0xB4, 0x74, 0x61, 0x7C, 0x4D, 0x67, 0x95, 0x79, - 0xB5, 0x81, 0x88, 0x32, 0xDA, 0x84, 0x9D, 0xC1, 0x53, 0x21, 0xDD, 0x0A, - 0xDE, 0x3C, 0xB3, 0xB5, 0xB8, 0x1A, 0xFC, 0x72, 0x7A, 0xB8, 0xEB, 0xC8, - 0xF6, 0x7A, 0x00, 0xDD, 0x2E, 0x7E, 0x52, 0x06, 0x66, 0x0C, 0xFF, 0x3F, - 0x8B, 0x16, 0x4B, 0x1A, 0x9B, 0x3C, 0x17, 0x5B, 0xD8, 0xCB, 0xA0, 0xCA, - 0xF9, 0x41, 0x36, 0xD6, 0xA6, 0x08, 0x6D, 0xFC, 0xD3, 0x77, 0x14, 0x58, - 0xF1, 0xB5, 0x3E, 0x54, 0xDB, 0xAC, 0x03, 0xAC, 0x11, 0x5C, 0x4D, 0xC6, - 0xB5, 0x03, 0x5A, 0xFF, 0x52, 0xA8, 0xDF, 0xDC, 0x39, 0xF3, 0x6A, 0xC8, - 0xB4, 0x23, 0x0B, 0x0B, 0x67, 0x1B, 0x02, 0xBA, 0x79, 0x03, 0x16, 0xB2, - 0xA9, 0xC3, 0xA1, 0x62, 0x6B, 0x96, 0x23, 0x14, 0x6D, 0x8F, 0x94, 0xF1, - 0xD2, 0xEA, 0x5B, 0x3A, 0x48, 0x79, 0x1E, 0x02, 0xCE, 0xE8, 0xF5, 0x2C, - 0x6A, 0xB2, 0x08, 0x62, 0xC6, 0x85, 0x09, 0x9E, 0x5A, 0xD0, 0xE5, 0x34, - 0x75, 0x81, 0xF5, 0xA7, 0x55, 0x6A, 0x31, 0x6E, 0x30, 0x08, 0x1B, 0xF9, - 0xF1, 0x5A, 0x33, 0x36, 0x3C, 0x7D, 0xA9, 0xB5, 0x91, 0x80, 0x06, 0x34, - 0x57, 0xD7, 0xC5, 0xA8, 0x74, 0x0F, 0x01, 0x27, 0x4C, 0x82, 0x98, 0xC6, - 0x6B, 0x4F, 0xC5, 0x7F, 0xFF, 0xAC, 0x13, 0x4A, 0xDA, 0x73, 0x97, 0xBF, - 0xEA, 0xA3, 0xF2, 0xBB, 0xE9, 0x51, 0x7D, 0x7E, 0xE6, 0xE9, 0x15, 0x85, - 0x1D, 0x72, 0x4A, 0xB8, 0xB7, 0x99, 0x3E, 0x9F, 0x71, 0x8F, 0x18, 0x56, - 0x9C, 0xBF, 0x45, 0x54, 0xB8, 0x14, 0x5C, 0x39, 0x7B, 0x93, 0xD8, 0x41, - 0xA7, 0x00, 0x1B, 0x74, 0x47, 0x29, 0x29, 0xB4, 0x42, 0xCF, 0x17, 0x69, - 0x43, 0xB2, 0x2E, 0x38, 0x1E, 0x11, 0xA7, 0x97, 0x6A, 0xB4, 0xB5, 0xDF, - 0x40, 0xE6, 0x75, 0x5B, 0xC0, 0xF0, 0x80, 0xC6, 0xFF, 0x73, 0xD5, 0x45, - 0x03, 0x04, 0x83, 0x17, 0xF4, 0x62, 0xBE, 0xF6, 0x4D, 0x25, 0x84, 0xD6, - 0xB2, 0xE3, 0x34, 0x49, 0xDE, 0x3D, 0x67, 0xF8, 0x7A, 0x7F, 0xFB, 0xF9, - 0xE5, 0x5E, 0xD1, 0x39, 0x8B, 0x9D, 0xFE, 0x7F, 0xE3, 0x0B, 0x8B, 0x48, - 0xA0, 0x9E, 0x15, 0x82, 0x57, 0xAF, 0xBA, 0xFE, 0x65, 0xFE, 0x07, 0x7A, - 0x3B, 0x46, 0xDE, 0x94, 0x7B, 0x69, 0x9C, 0xB0, 0x48, 0x68, 0x14, 0x45, - 0xF6, 0x85, 0xBB, 0x95, 0x94, 0x5E, 0x2D, 0x6C, 0x38, 0x2C, 0xF8, 0x65, - 0x13, 0x88, 0xA7, 0xEA, 0x05, 0xE7, 0x25, 0xAF, 0x13, 0xC8, 0x0F, 0xA3, - 0xDB, 0x1E, 0x58, 0x28, 0x95, 0xBD, 0x34, 0x50, 0x06, 0xEF, 0xBB, 0xC9, - 0x93, 0xA3, 0xD4, 0x2D, 0x4F, 0x07, 0x4F, 0x1D, 0xB8, 0xAF, 0x42, 0x59, - 0x34, 0x8A, 0x33, 0xB0, 0xD5, 0x4E, 0x55, 0x79, 0x0E, 0x53, 0xCD, 0xA4, - 0xE0, 0x96, 0x23, 0x8B, 0x1A, 0x04, 0xB0, 0x48, 0x82, 0xE8, 0xEC, 0xA8, - 0xB8, 0x52, 0xAF, 0xD0, 0xFB, 0xD1, 0xF1, 0xD0, 0x50, 0xFC, 0x7B, 0x27, - 0x38, 0xFC, 0x7A, 0xDE, 0x83, 0x50, 0x7E, 0xD3, 0xE6, 0xF5, 0x45, 0x76, - 0xC5, 0x2D, 0x50, 0xB4, 0x69, 0xF5, 0x10, 0x91, 0xBD, 0x18, 0xB1, 0x49, - 0xE4, 0x6A, 0x17, 0x45, 0xB1, 0xF1, 0x20, 0xC7, 0xE0, 0xC2, 0x02, 0x2D, - 0x3C, 0x91, 0x16, 0x26, 0x25, 0xDE, 0x49, 0x88, 0xB3, 0xD7, 0x91, 0x7D, - 0x21, 0xC1, 0x08, 0xDC, 0xEF, 0x52, 0x15, 0xD8, 0xE5, 0x3B, 0x58, 0xC6, - 0xD9, 0x97, 0x0E, 0x7E, 0xD8, 0x94, 0x4F, 0xCE, 0xCA, 0xD7, 0xC7, 0x3C, - 0xEF, 0xD1, 0x34, 0x3D, 0x78, 0xB6, 0x67, 0xA7, 0x6A, 0x13, 0x9D, 0x1E, - 0x0A, 0x50, 0x67, 0xA0, 0xBF, 0x88, 0xAA, 0x34, 0xB4, 0xAA, 0x47, 0x71, - 0x48, 0x78, 0x34, 0x42, 0xC8, 0x13, 0x1A, 0x96, 0x3E, 0x29, 0xF9, 0x9B, - 0xD3, 0x87, 0xC0, 0x64, 0xD6, 0x5C, 0x76, 0xBF, 0xD4, 0xF2, 0x85, 0xE7, - 0xB6, 0x64, 0x68, 0x47, 0x54, 0xE8, 0x1C, 0x3A, 0x06, 0x06, 0x83, 0xE6, - 0xF2, 0x43, 0x53, 0x2A, 0x8F, 0xFE, 0x8C, 0x04, 0xB0, 0xAB, 0x70, 0xE0, - 0xC7, 0xE3, 0x72, 0x4E, 0xB8, 0x2E, 0xA5, 0x8F, 0x1E, 0xDB, 0x80, 0xE6, - 0x46, 0xDD, 0xE5, 0x55, 0xAB, 0xBB, 0x1C, 0xB4, 0x98, 0xD3, 0x79, 0xAF, - 0xBE, 0x10, 0x9E, 0xB1, 0x33, 0x47, 0xDE, 0xF3, 0x46, 0x10, 0xAB, 0xBB, - 0xF1, 0xDD, 0x24, 0x4E, 0x91, 0xBF, 0x6E, 0xDD, 0xE5, 0x88, 0x46, 0xDB, - 0x44, 0x07, 0x69, 0x38, 0x2A, 0x8D, 0x48, 0xEE, 0xF3, 0xF0, 0xBE, 0xEE, - 0xA4, 0x67, 0x07, 0x25, 0x4D, 0x39, 0x76, 0x74, 0x17, 0xBB, 0x59, 0xA7, - 0x99, 0x49, 0xE7, 0x22, 0x73, 0xCD, 0x83, 0x4E, 0xA5, 0xDD, 0x65, 0xB7, - 0x36, 0x3D, 0xDF, 0x77, 0xF9, 0xB2, 0x5C, 0xD8, 0xC7, 0x0C, 0xCF, 0x7C, - 0x33, 0x7E, 0x28, 0x32, 0xDD, 0xAB, 0x5C, 0x27, 0x80, 0x54, 0x4C, 0xCF, - 0xF4, 0x92, 0xD5, 0xFC, 0x28, 0x15, 0x91, 0x7B, 0x77, 0x28, 0x0E, 0x85, - 0x63, 0xE2, 0x38, 0x6C, 0x10, 0xAE, 0x55, 0xB1, 0x76, 0x69, 0xCA, 0x0E, - 0x1E, 0x86, 0x76, 0x6B, 0x40, 0xC3, 0xA9, 0xD5, 0xDC, 0xB3, 0x2E, 0xBE, - 0x1F, 0xE9, 0x3A, 0x2C, 0xB8, 0x0B, 0xEC, 0xB4, 0xCA, 0x9E, 0x47, 0xCD, - 0x0D, 0x49, 0xC3, 0xB9, 0x28, 0xD9, 0xBF, 0xCD, 0xB9, 0xFA, 0x66, 0xC5, - 0x89, 0xD3, 0xDF, 0x04, 0xC1, 0x06, 0x31, 0xAF, 0xA4, 0xBC, 0xEE, 0xEB, - 0x33, 0xF6, 0x2B, 0x8B, 0xCB, 0xC4, 0x51, 0x84, 0x8D, 0x94, 0xFD, 0xDC, - 0xA8, 0xBC, 0x23, 0xDE, 0x48, 0xF1, 0xE6, 0x20, 0x20, 0x6E, 0x88, 0x6C, - 0x69, 0xA0, 0x3D, 0x3B, 0x7F, 0xE1, 0x35, 0x16, 0x79, 0x23, 0x8E, 0x23, - 0xED, 0x54, 0x7A, 0x1C, 0x90, 0x6C, 0x35, 0xD9, 0x31, 0xD6, 0x9B, 0xE6, - 0x18, 0x41, 0x07, 0x4C, 0x0A, 0xDC, 0x57, 0x8F, 0xEB, 0x04, 0xA2, 0xB9, - 0xDD, 0xC1, 0xBD, 0xEF, 0xD2, 0x51, 0x3D, 0x9D, 0x8B, 0x3F, 0xEC, 0x34, - 0xF3, 0x0D, 0xB3, 0xAD, 0xBC, 0xAD, 0x62, 0xAA, 0x02, 0xF8, 0x7C, 0x21, - 0xD9, 0x8F, 0x65, 0x08, 0xA1, 0x0E, 0x5F, 0x5D, 0xA5, 0x24, 0x5E, 0xF4, - 0x9C, 0x8A, 0x24, 0xA8, 0xF7, 0xF6, 0x0A, 0xAD, 0x28, 0xAE, 0x21, 0x50, - 0xA2, 0x2B, 0x1B, 0x6C, 0xAF, 0xDC, 0x63, 0xC4, 0x88, 0x54, 0xB6, 0x77, - 0xE0, 0xC5, 0x27, 0xD6, 0xF3, 0x92, 0xE1, 0x81, 0x19, 0x99, 0x0E, 0x83, - 0x3A, 0x17, 0x10, 0xF2, 0xB5, 0x74, 0x95, 0xB2, 0x87, 0x98, 0xBC, 0x75, - 0xFA, 0x54, 0x2C, 0x8B, 0x26, 0xAD, 0xE9, 0xA7, 0xCA, 0x28, 0x89, 0xB9, - 0x77, 0x5B, 0xF7, 0xC2, 0x75, 0x42, 0x73, 0x76, 0x83, 0xCA, 0x26, 0xF5, - 0xB9, 0x70, 0x23, 0x6F, 0x5F, 0x35, 0x91, 0xCE, 0x6A, 0x5D, 0x57, 0xB8, - 0xE0, 0x3C, 0x91, 0x6F, 0xC4, 0xB7, 0x30, 0x6F, 0xDD, 0xBD, 0xD7, 0x5F, - 0x1A, 0xD2, 0xE4, 0xE7, 0x0D, 0x2B, 0x02, 0x2F, 0x61, 0x9E, 0x22, 0x4C, - 0xFE, 0xBD, 0x1A, 0xDD, 0xE5, 0x67, 0xA2, 0x6F, 0x90, 0x4C, 0x31, 0x5E, - 0x6A, 0x9F, 0x8E, 0xE8, 0xC1, 0xB2, 0x4E, 0xE4, 0xCA, 0x2B, 0xB8, 0x4A, - 0xE8, 0xFF, 0x06, 0x91, 0x76, 0x2E, 0x51, 0x3F, 0x1B, 0xA5, 0x2A, 0x1C, - 0xEB, 0xD4, 0x07, 0x00, 0x03, 0x40, 0x33, 0x6A, 0xD8, 0xB7, 0x5A, 0xF0, - 0xF8, 0xF7, 0xCD, 0xCB, 0x3D, 0xB8, 0x98, 0xB4, 0x56, 0xE9, 0x20, 0xCC, - 0x45, 0x0F, 0xA3, 0x76, 0xB1, 0x2D, 0x41, 0x9A, 0x89, 0x24, 0x7C, 0xAC, - 0x62, 0xCC, 0xCF, 0xE5, 0xA1, 0xEB, 0x7E, 0x41, 0x64, 0x7D, 0x6D, 0xF1, - 0x05, 0xC2, 0x65, 0xE9, 0xF8, 0xE8, 0xDB, 0xA0, 0xB8, 0x1A, 0x87, 0x32, - 0x9C, 0xF7, 0x48, 0xA4, 0x83, 0x66, 0x12, 0xAC, 0x9D, 0x9D, 0xE4, 0x7B, - 0xF4, 0x7A, 0x2B, 0x28, 0xB7, 0x12, 0x3B, 0xAC, 0x7D, 0xF4, 0xB6, 0x72, - 0x87, 0x4C, 0xFC, 0x5F, 0x75, 0x4C, 0xE5, 0xE1, 0x6D, 0x10, 0xF8, 0xD5, - 0xA2, 0x3F, 0x04, 0xB2, 0x33, 0x6A, 0x0A, 0x3C, 0x45, 0x95, 0x77, 0x5F, - 0x20, 0x9E, 0x78, 0x91, 0xEB, 0x72, 0x6B, 0x90, 0x78, 0x9C, 0x5D, 0x47, - 0xE4, 0x9A, 0xC5, 0x10, 0xB8, 0xE1, 0x1D, 0x5A, 0x7D, 0xF3, 0x55, 0x8F, - 0x66, 0x54, 0x1D, 0x97, 0x05, 0x3F, 0xFC, 0xDA, 0x29, 0x04, 0x57, 0x3F, - 0xD0, 0x52, 0x12, 0x3C, 0xBA, 0xF5, 0x52, 0x02, 0xE6, 0x37, 0x3A, 0xF9, - 0xAD, 0xB7, 0x2F, 0x81, 0x8D, 0x14, 0xCC, 0x1C, 0x8C, 0x3A, 0x9D, 0x54, - 0x5D, 0x75, 0xEC, 0x15, 0x29, 0xB4, 0xCE, 0x44, 0xDA, 0x71, 0x8B, 0xD1, - 0xB6, 0x77, 0x08, 0x2E, 0x80, 0x43, 0x57, 0xF5, 0x94, 0x37, 0xFC, 0x11, - 0x1C, 0x75, 0x62, 0xA1, 0x17, 0xB2, 0x5E, 0x54, 0xA6, 0xBD, 0xAF, 0x0B, - 0xB4, 0x38, 0x77, 0xE8, 0x08, 0xC7, 0x93, 0xDD, 0x96, 0x83, 0x91, 0x1D, - 0x4B, 0x5F, 0xE5, 0xB3, 0xC8, 0x28, 0xA9, 0x51, 0x5D, 0xCB, 0xCE, 0x6F, - 0x7E, 0xCF, 0xBE, 0x4D, 0x5D, 0x46, 0xB0, 0x02, 0xFA, 0xAF, 0x6E, 0x0A, - 0x5B, 0xA4, 0x6D, 0x35, 0xEB, 0x78, 0x31, 0xB3, 0x36, 0x05, 0xD2, 0x84, - 0xBD, 0xB7, 0x38, 0x47, 0xCA, 0x47, 0x07, 0xA5, 0x9B, 0x67, 0x45, 0x3E, - 0x10, 0x82, 0x05, 0xE7, 0x7B, 0x80, 0xA9, 0x55, 0x34, 0x44, 0x6A, 0xC7, - 0x84, 0x24, 0x4F, 0xAA, 0xD5, 0x7D, 0x78, 0xF7, 0x16, 0x43, 0xC1, 0xD5, - 0x20, 0x83, 0xD7, 0xB0, 0x51, 0x14, 0xC6, 0xF4, 0xD5, 0xCB, 0x62, 0xDE, - 0xE4, 0xAD, 0x47, 0xB5, 0xE5, 0x57, 0xCA, 0x9D, 0x76, 0x10, 0x35, 0xDE, - 0x8F, 0xDA, 0x2B, 0x0A, 0xF8, 0x65, 0x90, 0xDB, 0xF5, 0x3D, 0x2E, 0xDE, - 0x1F, 0xF5, 0x6C, 0xF4, 0x2B, 0x2E, 0x18, 0x1C, 0xD5, 0x97, 0xC2, 0xDE, - 0xC2, 0xD8, 0xE1, 0x79, 0x43, 0xC8, 0xFC, 0x9A, 0x2A, 0xF3, 0x14, 0x28, - 0x0E, 0xB6, 0x08, 0xE1, 0xE8, 0xF1, 0x76, 0xB9, 0xA5, 0x57, 0x5C, 0x81, - 0x19, 0x27, 0xA5, 0x80, 0x16, 0x0A, 0x5E, 0xDC, 0xCC, 0xE1, 0xBD, 0x8B, - 0xC5, 0xEC, 0x07, 0xFF, 0x53, 0x3B, 0xB1, 0x1D, 0xAD, 0x02, 0xAB, 0xB6, - 0x04, 0x7B, 0xA1, 0x2E, 0x3F, 0x07, 0x19, 0xD5, 0x82, 0xDA, 0x77, 0x22, - 0x80, 0x31, 0x20, 0xDA, 0x83, 0xDB, 0x56, 0x22, 0x88, 0x89, 0x44, 0x53, - 0x87, 0x67, 0xAE, 0x30, 0x50, 0x4C, 0xD0, 0x90, 0x8B, 0x45, 0x23, 0xCE, - 0x41, 0x39, 0x03, 0xDE, 0xE6, 0xD3, 0xFC, 0x28, 0x19, 0x3E, 0x0B, 0xD2, - 0x2E, 0x96, 0xAC, 0x8D, 0xD0, 0x8E, 0x29, 0x48, 0x58, 0xA2, 0xD4, 0x17, - 0x65, 0x4B, 0x75, 0x4C, 0x48, 0x43, 0x34, 0x43, 0x3A, 0xDD, 0xCE, 0xC5, - 0xF0, 0xF4, 0x6C, 0xB8, 0xDD, 0xF3, 0x3E, 0x34, 0x50, 0x2A, 0x8C, 0x6C, - 0x90, 0x96, 0x1E, 0x21, 0x61, 0x13, 0x42, 0xA5, 0x12, 0x0F, 0x73, 0x02, - 0xBA, 0x9E, 0xFF, 0x47, 0x83, 0xDB, 0xE4, 0x16, 0x90, 0xD9, 0x0A, 0x40, - 0x84, 0xCA, 0xD2, 0x03, 0x05, 0xD8, 0x64, 0xB2, 0x3D, 0x8A, 0x42, 0x02, - 0x8C, 0x88, 0xDF, 0xEE, 0x5A, 0x47, 0xF1, 0xF4, 0x82, 0x6E, 0x61, 0xD5, - 0xF5, 0xA3, 0x58, 0x21, 0x6B, 0xEE, 0x8F, 0xE2, 0xEB, 0x07, 0x39, 0xA9, - 0x71, 0xFC, 0x55, 0x39, 0x37, 0x4D, 0xD2, 0x41, 0xC5, 0x33, 0xF7, 0xF5, - 0xED, 0x67, 0xA7, 0x42, 0xAD, 0x61, 0xEC, 0xE2, 0x9D, 0xB9, 0x13, 0x4B, - 0xF5, 0x14, 0xB0, 0xE1, 0x47, 0x06, 0x2B, 0x65, 0xCD, 0x09, 0x31, 0x46, - 0x47, 0xFE, 0x1B, 0xB5, 0xD8, 0x53, 0x04, 0x28, 0x5C, 0x3F, 0x46, 0x28, - 0xCD, 0xB9, 0x87, 0x9A, 0xB0, 0xE2, 0x49, 0xA6, 0xCF, 0x56, 0x8D, 0x52, - 0xD5, 0x05, 0xCD, 0x0C, 0x3D, 0x45, 0x11, 0x18, 0x84, 0x38, 0x98, 0xD4, - 0xD3, 0x2D, 0xD0, 0x2A, 0xAD, 0xF4, 0x7A, 0xAB, 0xBF, 0xF4, 0xA8, 0x9F, - 0x7A, 0xB7, 0x73, 0xC0, 0xEC, 0xF5, 0x3E, 0x87, 0x9F, 0x12, 0xEF, 0xB8, - 0xAC, 0x19, 0x34, 0xB9, 0x72, 0xB9, 0x6B, 0xF3, 0xBB, 0x08, 0x8E, 0x7F, - 0xEC, 0x24, 0x1A, 0xF4, 0x00, 0xC0, 0xD4, 0x27, 0xB1, 0x3B, 0x05, 0x68, - 0xD4, 0x30, 0xD2, 0x21, 0x63, 0xD8, 0x33, 0x6C, 0xDC, 0xA9, 0x3E, 0x7C, - 0xA4, 0xE0, 0x43, 0xC9, 0x80, 0xA3, 0xCA, 0x35, 0x72, 0x10, 0xF1, 0xEA, - 0xCD, 0xA2, 0xDB, 0x02, 0x5A, 0xEE, 0x52, 0x5E, 0x31, 0x33, 0x2C, 0x68, - 0x3A, 0xBE, 0x34, 0x5E, 0xCE, 0xF2, 0x23, 0xE7, 0x4D, 0xCF, 0x71, 0xD4, - 0x3E, 0x8C, 0x4E, 0x08, 0x82, 0xF5, 0x01, 0xE9, 0xF8, 0x35, 0xFC, 0x88, - 0xFE, 0xC1, 0x1E, 0x67, 0x95, 0x44, 0x45, 0xF8, 0x67, 0xB8, 0x91, 0xF0, - 0x8E, 0x6C, 0xE4, 0x57, 0xA6, 0xDB, 0x56, 0xE3, 0x6C, 0x18, 0x37, 0x0C, - 0x48, 0x49, 0xB5, 0x7E, 0x51, 0x7A, 0x46, 0x0E, 0xD4, 0x8E, 0x2B, 0x93, - 0x63, 0x6B, 0xEC, 0xE5, 0x5B, 0x72, 0x49, 0xB2, 0x3D, 0x24, 0xAA, 0x59, - 0xAF, 0x1B, 0x0A, 0x82, 0xE8, 0x56, 0xC1, 0x56, 0x46, 0x9F, 0xB2, 0x5B, - 0x8D, 0x4E, 0x45, 0x34, 0x49, 0xE6, 0xDA, 0xEF, 0x43, 0x53, 0x11, 0x41, - 0x12, 0x82, 0xB9, 0xA8, 0xCC, 0x95, 0x8E, 0x5F, 0xD3, 0xB9, 0xA0, 0x53, - 0xC5, 0x6E, 0x75, 0xC0, 0x50, 0xF8, 0xC8, 0xA8, 0x19, 0xEE, 0x17, 0x6F, - 0xD0, 0xB1, 0xA6, 0xD3, 0xC5, 0x39, 0x5E, 0x68, 0xCA, 0x7D, 0x17, 0x17, - 0x46, 0x83, 0xF3, 0x84, 0x05, 0x36, 0xB8, 0xE2, 0xD4, 0x20, 0xC0, 0x86, - 0xCE, 0xB3, 0xC2, 0x4D, 0xE8, 0xE8, 0x1A, 0x7E, 0x06, 0x1C, 0xE1, 0xA9, - 0x55, 0xCB, 0x2A, 0x88, 0xC5, 0x5A, 0xE1, 0x15, 0x74, 0x1E, 0x31, 0x0E, - 0xCE, 0xA9, 0x7D, 0xA4, 0xCB, 0xF1, 0x7B, 0xCD, 0x56, 0x54, 0xF2, 0xDC, - 0xD7, 0xE8, 0x59, 0x5C, 0xC1, 0x47, 0x6D, 0xB5, 0x3A, 0xB7, 0x4F, 0x30, - 0x90, 0x10, 0x7F, 0xD7, 0x16, 0xC2, 0xD5, 0xA2, 0x36, 0x10, 0x1A, 0x71, - 0x19, 0x4A, 0x6F, 0xFF, 0x5E, 0x4E, 0xC1, 0x2B, 0xC1, 0x96, 0xE4, 0x2A, - 0x2A, 0xEB, 0x60, 0x9C, 0x4B, 0x11, 0x97, 0xED, 0xEA, 0x6E, 0x83, 0xA3, - 0x8B, 0x17, 0xEB, 0x42, 0xC8, 0x18, 0x40, 0x61, 0xB0, 0x26, 0x72, 0xAC, - 0xA2, 0x49, 0xA4, 0x9C, 0xD1, 0x32, 0x8E, 0xCF, 0x80, 0x71, 0xF1, 0x20, - 0x47, 0xA5, 0x28, 0xD4, 0xC8, 0x1E, 0xF1, 0xB0, 0xD2, 0x15, 0x21, 0xBF, - 0x9C, 0x57, 0x88, 0xED, 0x30, 0x6F, 0x69, 0x3A, 0xB4, 0x14, 0x16, 0x98, - 0x17, 0xC1, 0xC2, 0x36, 0x16, 0x54, 0x02, 0xB7, 0x42, 0x0C, 0x88, 0x45, - 0x5E, 0x90, 0x89, 0xD6, 0xE3, 0xDB, 0x0F, 0xF6, 0x07, 0xC8, 0x5B, 0x89, - 0x8E, 0x24, 0xA0, 0x9D, 0xB7, 0xC6, 0xEC, 0x7E, 0xDB, 0xC1, 0xAC, 0x38, - 0xB3, 0x26, 0xD9, 0xFE, 0x8A, 0xC2, 0x76, 0xDD, 0x01, 0x41, 0x30, 0x2D, - 0x75, 0xDC, 0xE8, 0x60, 0x0B, 0xEF, 0xCC, 0xBA, 0x41, 0x85, 0xFC, 0x34, - 0x59, 0x4C, 0xA4, 0x13, 0x10, 0x7D, 0xF6, 0xE0, 0x00, 0x14, 0x86, 0x95, - 0xF0, 0x00, 0x41, 0xDF, 0xBD, 0xB5, 0x00, 0xDB, 0xDC, 0x8F, 0x5B, 0x75, - 0xDE, 0x5F, 0x75, 0xFC, 0x11, 0x7A, 0xC0, 0x0D, 0xA2, 0xDB, 0xB8, 0x53, - 0x59, 0x0B, 0xFE, 0xAF, 0x45, 0xDD, 0xB7, 0x72, 0x87, 0x2C, 0x4B, 0x04, - 0xCE, 0xC3, 0x37, 0x54, 0x9D, 0x62, 0xC3, 0x6A, 0x4D, 0x71, 0xAB, 0xF4, - 0x85, 0xA5, 0x89, 0xD1, 0xC9, 0xFB, 0x8C, 0x23, 0x70, 0x36, 0x75, 0x74, - 0x5A, 0x6C, 0xD4, 0x50, 0x5C, 0xD0, 0x49, 0xCC, 0x9B, 0x27, 0x8C, 0x99, - 0xC9, 0x55, 0x9C, 0x48, 0xD1, 0x40, 0x91, 0xD9, 0x1F, 0xA2, 0x4F, 0xBB, - 0x87, 0x42, 0xA5, 0xDA, 0xC5, 0xCB, 0x13, 0xA4, 0x9C, 0xFB, 0xD1, 0xD7, - 0xB9, 0x90, 0xEF, 0xF5, 0x03, 0x92, 0xCD, 0x7B, 0xF9, 0x76, 0xF4, 0xF8, - 0x76, 0x2E, 0x99, 0x13, 0x33, 0x61, 0xE1, 0x72, 0x92, 0x4A, 0x9E, 0x8F, - 0x20, 0xCE, 0x37, 0xC7, 0x17, 0x0F, 0xFF, 0x25, 0xDF, 0x16, 0xD4, 0xAF, - 0xD2, 0x47, 0x65, 0x4E, 0x2B, 0x0E, 0xBE, 0x45, 0x58, 0x8D, 0xFA, 0x7D, - 0x59, 0x9D, 0xAE, 0x4E, 0x7D, 0x9F, 0x8B, 0x40, 0x5E, 0x1D, 0x0C, 0x23, - 0xAE, 0xC9, 0xFD, 0x9E, 0x61, 0x38, 0xF8, 0x81, 0xC5, 0x71, 0xD4, 0x6B, - 0x24, 0xB6, 0x96, 0xDC, 0xC9, 0x1B, 0xD1, 0x7C, 0x84, 0xFD, 0x79, 0xEE, - 0x7B, 0x34, 0x82, 0xA9, 0x01, 0xB1, 0x76, 0x61, 0x65, 0xDA, 0x74, 0x94, - 0x93, 0x38, 0x1D, 0x23, 0x3E, 0x69, 0x24, 0x4C, 0xA4, 0x9F, 0x4D, 0x04, - 0xDA, 0x99, 0x32, 0x56, 0x81, 0x8D, 0x75, 0xDE, 0x53, 0x09, 0x51, 0x6E, - 0x31, 0x81, 0x0B, 0x1B, 0x18, 0xA3, 0xFF, 0xDF, 0x76, 0x7D, 0x57, 0x97, - 0x62, 0x8C, 0x48, 0x3B, 0x99, 0x1C, 0xA2, 0x8A, 0x16, 0xDA, 0x2D, 0x07, - 0xEB, 0xE8, 0x2F, 0xAE, 0x4E, 0xCF, 0xB4, 0xA1, 0xAD, 0xB2, 0xC5, 0xEB, - 0x2C, 0x69, 0x8B, 0x3F, 0x02, 0xD8, 0x8E, 0x17, 0x5E, 0xED, 0x51, 0xD9, - 0x2A, 0x95, 0xAA, 0x3C, 0x61, 0x18, 0x67, 0x69, 0x8B, 0x1B, 0x5D, 0x60, - 0x88, 0xCF, 0x6C, 0x61, 0x96, 0xD5, 0x2C, 0xCD, 0xF2, 0x8A, 0xA5, 0x8E, - 0x66, 0xC2, 0x18, 0x27, 0x51, 0xA6, 0x4E, 0xDE, 0x95, 0x18, 0xBD, 0xC7, - 0xDC, 0x52, 0x9F, 0xC0, 0x74, 0xBA, 0xD8, 0xF2, 0x1C, 0x2B, 0x5C, 0x01, - 0x29, 0xE4, 0x9D, 0xEE, 0xD5, 0xF6, 0xFF, 0x0E, 0x7C, 0x0D, 0x9E, 0x07, - 0x29, 0xF5, 0xED, 0xD7, 0x37, 0xA0, 0x57, 0x1A, 0x54, 0x3E, 0x15, 0xB6, - 0xEC, 0x97, 0x27, 0x32, 0xEA, 0x32, 0xC6, 0xB6, 0xBB, 0xF6, 0x2F, 0x0C, - 0x12, 0x74, 0x0E, 0xFA, 0x75, 0x94, 0xD0, 0x11, 0x79, 0xEE, 0xE4, 0xBD, - 0x9C, 0x0E, 0x34, 0xFA, 0xA9, 0x66, 0x14, 0x89, 0xDA, 0x0E, 0x20, 0x65, - 0x4A, 0x68, 0x5B, 0xE8, 0xAE, 0x51, 0x4F, 0x9E, 0x18, 0x5D, 0x6F, 0x7C, - 0x16, 0xD3, 0x76, 0x6C, 0xBE, 0x5E, 0x2D, 0x95, 0x95, 0x0B, 0x08, 0x07, - 0x35, 0xD3, 0x09, 0xCB, 0x68, 0x31, 0x13, 0x0C, 0x5B, 0xED, 0x4A, 0xE2, - 0x0F, 0x8B, 0x5B, 0x68, 0xDC, 0x33, 0xA6, 0x83, 0x98, 0x6B, 0x85, 0x06, - 0x16, 0xF3, 0xFE, 0xED, 0x60, 0x4E, 0x52, 0x6D, 0x71, 0x91, 0x88, 0x43, - 0xBE, 0xEF, 0xC4, 0xAD, 0x13, 0x42, 0x18, 0x50, 0x71, 0x34, 0x1A, 0x18, - 0xE0, 0x83, 0x5F, 0xD0, 0xE3, 0x68, 0xAD, 0x85, 0xFB, 0x81, 0x9A, 0xCE, - 0x38, 0x25, 0xFE, 0xDF, 0xE8, 0xE9, 0xE4, 0x89, 0xE9, 0x38, 0x6D, 0x99, - 0xA4, 0x7C, 0x05, 0xB6, 0xB6, 0x5C, 0x96, 0x70, 0xDE, 0x62, 0xE5, 0x6F, - 0x91, 0x19, 0xFF, 0x84, 0x14, 0x5E, 0xD4, 0xCC, 0xE9, 0x99, 0x89, 0xF5, - 0x72, 0x72, 0x83, 0x9D, 0xEF, 0x8B, 0xA3, 0x63, 0xEA, 0x76, 0x7A, 0xF2, - 0xD5, 0x1D, 0x50, 0xC9, 0x1B, 0xBC, 0x4D, 0x77, 0xB3, 0xDA, 0x1E, 0x8B, - 0x1B, 0x39, 0x04, 0xB5, 0x1A, 0x42, 0xDD, 0x18, 0xE5, 0xE3, 0x5F, 0xFD, - 0x05, 0x9B, 0xBE, 0x01, 0xA5, 0xAD, 0x0A, 0x9A, 0x62, 0xBB, 0xE2, 0x43, - 0xAB, 0x14, 0x96, 0xD2, 0xCC, 0xBE, 0xA9, 0x0C, 0xE8, 0xBF, 0x40, 0x04, - 0x01, 0xD5, 0x34, 0x5F, 0x25, 0x25, 0x2B, 0xD2, 0x76, 0xA4, 0x60, 0x6F, - 0xF2, 0xE6, 0x5C, 0x35, 0x44, 0x06, 0x36, 0x8D, 0xBA, 0xD5, 0xD7, 0x9F, - 0x13, 0xC8, 0xF1, 0x0B, 0x0A, 0x40, 0xED, 0xD2, 0x40, 0x93, 0xCE, 0x4E, - 0x15, 0x78, 0xF1, 0x92, 0x59, 0xDB, 0xE9, 0x1B, 0x1E, 0x91, 0xF3, 0xCA, - 0x22, 0x00, 0x28, 0xE6, 0xCE, 0xF1, 0x4E, 0x77, 0x2B, 0xF5, 0xFC, 0x2E, - 0x90, 0xAA, 0xFA, 0x47, 0x00, 0xEC, 0x42, 0x45, 0x8B, 0xD0, 0xD8, 0xAA, - 0x06, 0x0A, 0x79, 0xD3, 0xBB, 0xAE, 0xDA, 0xE6, 0xF2, 0x7E, 0x15, 0x34, - 0xA7, 0x10, 0xB9, 0xAD, 0xC7, 0x24, 0x25, 0xFF, 0xF1, 0xDD, 0x12, 0x68, - 0xFA, 0x93, 0xAF, 0x55, 0xEB, 0xEC, 0xA0, 0xAB, 0x48, 0x66, 0xBB, 0x2C, - 0x15, 0x9A, 0x36, 0xD9, 0xC4, 0x6C, 0x6B, 0x9E, 0x8B, 0x55, 0x67, 0x03, - 0xE4, 0xAE, 0x23, 0xB0, 0x89, 0x92, 0xDD, 0x04, 0x3A, 0xEB, 0xFA, 0x43, - 0x00, 0xA5, 0x03, 0x32, 0x25, 0x86, 0x02, 0x37, 0xCD, 0xCA, 0xF2, 0x88, - 0x22, 0x41, 0x93, 0x31, 0x75, 0x6C, 0xA1, 0x66, 0xD5, 0xC8, 0x26, 0x2C, - 0x30, 0x4F, 0xED, 0xF2, 0x07, 0xA6, 0x4F, 0x85, 0x0C, 0xBC, 0xEC, 0xA6, - 0xE5, 0x8A, 0xBA, 0x1C, 0xCA, 0xF6, 0x22, 0x65, 0xDD, 0x7A, 0x65, 0x85, - 0x2C, 0x5A, 0xF3, 0xDC, 0xAD, 0xB6, 0xC3, 0xF8, 0x03, 0x2A, 0x0B, 0x01, - 0xB2, 0x38, 0x96, 0xF7, 0x2F, 0xFA, 0xD6, 0x6B, 0xD9, 0x5C, 0x0C, 0xCD, - 0x3F, 0xE4, 0xB9, 0x8B, 0xA7, 0x51, 0x23, 0x8A, 0xCE, 0x08, 0xD5, 0xDB, - 0x19, 0xF6, 0xF4, 0x92, 0xF8, 0xE2, 0x6B, 0xB0, 0xC6, 0x3D, 0x2E, 0xE7, - 0xF1, 0x84, 0xA1, 0x12, 0x07, 0x14, 0x50, 0xBB, 0x86, 0x8D, 0x59, 0xBD, - 0x6C, 0xE3, 0x3B, 0xA6, 0xEF, 0xF9, 0xD4, 0x3B, 0x1F, 0x1D, 0x39, 0xBF, - 0xB6, 0xFD, 0xF2, 0x22, 0x00, 0xBC, 0xF5, 0xA8, 0x48, 0xFF, 0x65, 0xF4, - 0xD0, 0xD5, 0x5E, 0x47, 0x47, 0x82, 0xF6, 0xC5, 0x88, 0x95, 0xE7, 0x65, - 0xA7, 0x89, 0x2D, 0x6C, 0x1C, 0xCA, 0x2D, 0x30, 0xE7, 0xD5, 0x77, 0xBA, - 0xA4, 0x08, 0x03, 0x8B, 0x2D, 0x2D, 0x5A, 0xA3, 0xA5, 0x1D, 0x00, 0x62, - 0x61, 0xC8, 0x6D, 0x9B, 0xF9, 0x61, 0xF1, 0x0A, 0x8C, 0x2B, 0x48, 0x10, - 0x66, 0x9D, 0x41, 0xC8, 0x5A, 0xE3, 0x7C, 0xC1, 0x24, 0x09, 0x93, 0xE3, - 0x71, 0x53, 0x2D, 0x44, 0xA5, 0x9A, 0xE1, 0xCF, 0xBE, 0x89, 0x35, 0x1E, - 0x7A, 0x22, 0x71, 0xD4, 0x68, 0x4D, 0x7F, 0xBD, 0x4D, 0x67, 0x76, 0x03, - 0xA8, 0x56, 0x12, 0xC7, 0x6B, 0x84, 0x81, 0xBB, 0x0B, 0x3A, 0x6A, 0xE2, - 0x0F, 0x9D, 0xA0, 0xD6, 0x2E, 0x88, 0xA9, 0x64, 0xE7, 0xF0, 0x28, 0x78, - 0xCD, 0x26, 0xBB, 0x4B, 0xE5, 0xFB, 0xB8, 0xD1, 0x63, 0xA2, 0x99, 0x76, - 0x50, 0xCE, 0xF6, 0xC1, 0x96, 0xE0, 0x1A, 0x4E, 0x1B, 0xC6, 0x09, 0x58, - 0x3B, 0xE6, 0xFF, 0x75, 0x96, 0x80, 0x8D, 0x85, 0x2B, 0x90, 0x01, 0x06, - 0x8D, 0xB0, 0x42, 0x7E, 0xF5, 0x25, 0xAD, 0x24, 0xB1, 0x88, 0x9C, 0x1A, - 0x24, 0x8A, 0x68, 0x5A, 0xD5, 0x24, 0x94, 0x78, 0xB2, 0x1A, 0xB9, 0xC3, - 0xA2, 0x19, 0x92, 0x91, 0x1A, 0x77, 0x66, 0xD6, 0x6B, 0xF5, 0x5A, 0x49, - 0xC7, 0xAA, 0x44, 0x41, 0x43, 0xF3, 0xE9, 0xC3, 0x5F, 0x16, 0x43, 0x7D, - 0x15, 0xF5, 0x0A, 0xC2, 0x8A, 0x50, 0x64, 0x01, 0x7B, 0x8C, 0x09, 0x85, - 0xDD, 0x22, 0xE3, 0x9E, 0xA9, 0x46, 0x1E, 0x02, 0xE4, 0x01, 0xB0, 0x5D, - 0xB8, 0xE8, 0x14, 0xEB, 0x4E, 0x29, 0x23, 0xDE, 0xAE, 0x62, 0x45, 0x01, - 0xC8, 0x25, 0x87, 0x18, 0xB3, 0xF9, 0xAD, 0x03, 0x3E, 0x59, 0x49, 0x71, - 0xA9, 0xC7, 0x27, 0xD7, 0xBA, 0x65, 0xCD, 0x27, 0x1E, 0x50, 0xE0, 0xD8, - 0x8F, 0x84, 0x6B, 0x0F, 0x6C, 0x12, 0x36, 0x04, 0x6B, 0x5D, 0xE3, 0x7D, - 0xD5, 0x53, 0xAF, 0xBC, 0xB0, 0x82, 0x21, 0x58, 0xC9, 0xFF, 0xDF, 0x87, - 0x18, 0x09, 0x4B, 0x79, 0x50, 0xB4, 0x5F, 0x9B, 0xF7, 0x94, 0xAA, 0x7F, - 0xB5, 0x03, 0x29, 0x58, 0x60, 0xD4, 0xC9, 0x39, 0xC1, 0x58, 0x21, 0xE8, - 0xF5, 0x2D, 0x49, 0x58, 0xB1, 0x25, 0xE9, 0x82, 0x15, 0xB7, 0xDD, 0x8E, - 0x3D, 0x28, 0x1F, 0x97, 0xE5, 0xDA, 0x2B, 0x33, 0xB9, 0x2F, 0x08, 0x29, - 0x80, 0x87, 0xA2, 0xB7, 0x80, 0x33, 0x2A, 0xE5, 0xD5, 0x49, 0x7B, 0x84, - 0x13, 0x66, 0x7D, 0xE3, 0x1B, 0x92, 0x9F, 0x90, 0xCE, 0x74, 0x67, 0x4C, - 0xC3, 0x74, 0xC0, 0x75, 0x86, 0x63, 0x4C, 0x5E, 0xA1, 0x42, 0xAC, 0xC7, - 0x9B, 0x65, 0x17, 0x23, 0x6D, 0x50, 0x19, 0xF9, 0x99, 0x15, 0xA8, 0x73, - 0x0E, 0x28, 0xBA, 0x2C, 0x9A, 0xC0, 0x35, 0x13, 0x16, 0xBC, 0x12, 0x09, - 0x0F, 0xF3, 0x0C, 0xE3, 0xE1, 0x27, 0x63, 0x75, 0x60, 0xD3, 0xA8, 0xB9, - 0xAD, 0x10, 0x18, 0xC3, 0x52, 0x36, 0xED, 0xF4, 0xA4, 0x22, 0x4C, 0xC0, - 0x24, 0x36, 0xD5, 0xBC, 0xDF, 0xD5, 0x5A, 0xC2, 0xA1, 0x23, 0x6F, 0x2F, - 0x1A, 0xA2, 0x31, 0x97, 0x24, 0xB8, 0x67, 0xD7, 0x4B, 0x53, 0x50, 0x19, - 0x6A, 0xDF, 0x40, 0x21, 0xCB, 0x2F, 0x43, 0xD1, 0xD2, 0x68, 0x6B, 0x76, - 0x07, 0x8B, 0xA4, 0xC8, 0xD0, 0x5E, 0xAF, 0x22, 0x51, 0x13, 0x34, 0x1F, - 0x26, 0xAC, 0x7D, 0xC2, 0x6E, 0x6D, 0x21, 0x98, 0xFC, 0x3B, 0xC2, 0x95, - 0xAD, 0x74, 0xCB, 0xF0, 0xC0, 0xB7, 0xD0, 0xAE, 0x86, 0x46, 0x5D, 0x84, - 0xED, 0xEB, 0xB8, 0x64, 0x66, 0x2A, 0xA7, 0xA1, 0xE3, 0xCB, 0x48, 0x7D, - 0xD8, 0x2E, 0xCE, 0x7B, 0x37, 0xD2, 0x24, 0xB5, 0x80, 0x31, 0x0C, 0x77, - 0x24, 0x4E, 0x96, 0x59, 0x99, 0x05, 0x80, 0xCF, 0x13, 0x15, 0x4A, 0x97, - 0x43, 0x6F, 0x45, 0xB9, 0xE8, 0x45, 0x46, 0x90, 0x98, 0x49, 0xC1, 0x83, - 0x85, 0x4B, 0x67, 0x7E, 0x58, 0x78, 0x9E, 0x69, 0x9C, 0xDF, 0x1F, 0xEC, - 0xC5, 0x01, 0xB3, 0x5D, 0x51, 0xF9, 0xCE, 0x84, 0x19, 0x5C, 0x67, 0xC1, - 0xCE, 0x26, 0x4A, 0xAD, 0xBF, 0x23, 0x00, 0x43, 0x78, 0x3C, 0x2A, 0x0C, - 0xAE, 0xFC, 0x0A, 0x9A, 0x46, 0x2D, 0x37, 0x80, 0xCB, 0xB2, 0xBE, 0x8B, - 0x5D, 0xAE, 0x21, 0x11, 0xAC, 0xDE, 0x6F, 0xC1, 0x8D, 0xFB, 0xA1, 0xCF, - 0xBA, 0x72, 0xCF, 0x81, 0xD7, 0x74, 0x1A, 0x10, 0x82, 0x2A, 0x5F, 0xFB, - 0xE0, 0x22, 0xD5, 0x7B, 0x5A, 0x62, 0xB3, 0x4B, 0x5D, 0x94, 0x9C, 0xFE, - 0xFE, 0x7E, 0xFE, 0xC9, 0x1F, 0xA7, 0x9B, 0xBB, 0x8F, 0x42, 0x26, 0x8E, - 0x96, 0x70, 0x2C, 0xD0, 0x20, 0xE3, 0xC7, 0xC0, 0x29, 0x4C, 0xCE, 0x37, - 0x67, 0x77, 0x51, 0x22, 0x43, 0x83, 0xEA, 0x36, 0x85, 0xEA, 0xCD, 0x08, - 0x28, 0xC7, 0x36, 0x8E, 0xF6, 0x5F, 0x34, 0x65, 0x02, 0x61, 0xAC, 0xB5, - 0x42, 0xE3, 0xD6, 0x8D, 0x9B, 0xFC, 0x2F, 0x5A, 0xBA, 0xC4, 0x84, 0x10, - 0x42, 0xCE, 0xBB, 0x8C, 0x48, 0xF6, 0xD1, 0x0A, 0xDA, 0x45, 0x8D, 0x47, - 0x6C, 0x18, 0xBB, 0x87, 0xB6, 0x35, 0xDB, 0xDE, 0x01, 0x79, 0x5E, 0x0C, - 0x94, 0xFC, 0xF0, 0x9B, 0x61, 0x77, 0xEF, 0x6C, 0x36, 0xE9, 0x85, 0x54, - 0xC8, 0x37, 0x1F, 0x35, 0x85, 0x8B, 0x22, 0x53, 0x02, 0xF4, 0xBA, 0x09, - 0x5E, 0xD9, 0x4A, 0x74, 0xE5, 0x62, 0x7C, 0xE0, 0x41, 0xC9, 0x02, 0xA2, - 0xAB, 0x9E, 0x0B, 0x53, 0xB7, 0x04, 0xAF, 0xBF, 0x4A, 0xC3, 0x88, 0x53, - 0x13, 0xE5, 0xED, 0xC7, 0x2D, 0x35, 0x4E, 0x7F, 0xA5, 0x34, 0xA7, 0xB3, - 0x3B, 0xEB, 0x7B, 0x60, 0xB1, 0x0B, 0xB3, 0xA0, 0x32, 0x02, 0xBB, 0x31, - 0x34, 0x7B, 0xE5, 0x91, 0x1F, 0x48, 0xE0, 0x7F, 0x94, 0x95, 0x3C, 0xA4, - 0x36, 0x86, 0x31, 0x3A, 0x77, 0xA0, 0xDA, 0x50, 0x15, 0xB9, 0x13, 0xA0, - 0x35, 0x27, 0x70, 0xCC, 0x19, 0xF3, 0x89, 0x22, 0x7C, 0x35, 0xF1, 0xF0, - 0xCE, 0xCF, 0x3B, 0x15, 0x39, 0xB7, 0xE1, 0x11, 0xB4, 0xFC, 0x4E, 0x02, - 0x60, 0x05, 0xBB, 0x7E, 0x08, 0x01, 0x8B, 0xB5, 0x77, 0x87, 0x70, 0x60, - 0xDB, 0x38, 0x52, 0x31, 0x6B, 0x11, 0x41, 0xBF, 0x1B, 0xCB, 0x67, 0x84, - 0xC9, 0x7B, 0xA1, 0xBA, 0xA3, 0x2F, 0x21, 0xEC, 0x0D, 0x89, 0x5A, 0x75, - 0x36, 0x20, 0x82, 0xC6, 0xC1, 0x93, 0x12, 0xD6, 0x11, 0x22, 0xBF, 0x9F, - 0x0E, 0x59, 0xFC, 0xFB, 0xA0, 0x20, 0x47, 0xC7, 0x9A, 0x98, 0xB8, 0x1F, - 0x95, 0x1D, 0x4C, 0x5B, 0x97, 0xEF, 0x92, 0x40, 0xAB, 0xB7, 0x21, 0x60, - 0xE4, 0x65, 0xCF, 0xAC, 0xD8, 0x34, 0x91, 0x83, 0xD2, 0x71, 0xAA, 0xFC, - 0xAB, 0xA8, 0xF5, 0x6A, 0x05, 0x86, 0x01, 0x56, 0x72, 0x8F, 0x5B, 0xAA, - 0x51, 0x6B, 0x3F, 0xA3, 0x32, 0xA3, 0xE4, 0x99, 0xED, 0x38, 0x43, 0x46, - 0x8D, 0x61, 0x80, 0x88, 0xC3, 0xEF, 0xAA, 0xF6, 0xAA, 0x6F, 0x34, 0xA1, - 0xD7, 0x81, 0x4C, 0x9C, 0xD7, 0xEC, 0xE0, 0x9E, 0x26, 0x6B, 0x2C, 0xF8, - 0xC0, 0xD5, 0x0B, 0xA1, 0x73, 0xA7, 0xBD, 0x4B, 0x68, 0xD0, 0xFB, 0x75, - 0xF3, 0x1C, 0x9C, 0x26, 0xC3, 0x60, 0xB2, 0x11, 0x81, 0xFE, 0x12, 0x13, - 0xC4, 0x6B, 0xE5, 0x52, 0x72, 0x00, 0x26, 0x4E, 0x7A, 0xFF, 0x2C, 0x20, - 0xCB, 0x32, 0xAA, 0xE4, 0xEE, 0x6B, 0x89, 0x52, 0xC5, 0x2B, 0xDC, 0xFA, - 0x1B, 0x52, 0x4D, 0x8E, 0x02, 0xDB, 0x84, 0x4E, 0x7C, 0x37, 0xBA, 0xFF, - 0xDC, 0x8D, 0x3F, 0xC6, 0xBE, 0x5C, 0x1D, 0x85, 0xF3, 0xE3, 0x4A, 0x83, - 0x28, 0x61, 0xB3, 0xC0, 0xF6, 0x05, 0x8B, 0x8A, 0xE8, 0xED, 0x3E, 0x92, - 0x70, 0x9A, 0xFB, 0xF3, 0x5B, 0x39, 0x3A, 0x3B, 0x3E, 0x33, 0x25, 0x01, - 0x15, 0x86, 0x5B, 0x17, 0x14, 0x42, 0xBD, 0x83, 0xD5, 0x8B, 0x7E, 0xA8, - 0xFC, 0xF9, 0x26, 0x1D, 0xEC, 0xD9, 0xE4, 0x25, 0xCC, 0x3A, 0x3A, 0xD7, - 0x07, 0x7C, 0x59, 0x87, 0xC2, 0x4F, 0x7C, 0x7E, 0xDD, 0x4F, 0x02, 0x4B, - 0x46, 0xBA, 0xFD, 0x1A, 0x26, 0x46, 0x01, 0x3C, 0x26, 0xDF, 0x38, 0x03, - 0xA5, 0x0E, 0xF0, 0x8B, 0xC8, 0xDD, 0xE1, 0x37, 0xD5, 0xDB, 0x51, 0x1B, - 0x9C, 0x7B, 0x81, 0x12, 0x15, 0xCA, 0x6D, 0x85, 0xDB, 0x02, 0x2A, 0xA3, - 0x2B, 0x52, 0xAA, 0x05, 0xE9, 0xCA, 0x42, 0xCA, 0x01, 0x4B, 0xBF, 0x2C, - 0x82, 0x5F, 0x4E, 0x9E, 0xE2, 0xCB, 0x2D, 0xAD, 0x64, 0xC4, 0xA6, 0xC1, - 0xFB, 0xA8, 0xA7, 0x7F, 0x46, 0xC3, 0xA9, 0xF5, 0xC1, 0x68, 0x5F, 0x54, - 0x18, 0x2F, 0xD4, 0x5A, 0xD1, 0x94, 0x71, 0x52, 0x90, 0x33, 0xD0, 0xD9, - 0xF2, 0x05, 0x83, 0x08, 0x42, 0x77, 0xE5, 0x57, 0x6D, 0x78, 0xB9, 0x20, - 0x92, 0x1C, 0xB0, 0x64, 0x39, 0xE1, 0xC8, 0x27, 0x33, 0xB6, 0x24, 0x3D, - 0x8E, 0xE3, 0x6D, 0x41, 0x9A, 0x4C, 0x36, 0x11, 0xB2, 0x7D, 0x5C, 0xD3, - 0x4B, 0x56, 0x42, 0x1E, 0xB3, 0xD4, 0x1E, 0x55, 0xFE, 0x0C, 0x1B, 0x91, - 0x30, 0x74, 0x3C, 0x2C, 0x98, 0x58, 0xD7, 0x0D, 0xA3, 0xCD, 0x17, 0x07, - 0xBD, 0xDC, 0x31, 0x7C, 0xCE, 0x89, 0x9E, 0xDB, 0xDF, 0x39, 0x52, 0x9B, - 0x8B, 0x02, 0x78, 0xAD, 0xD8, 0xA7, 0xB3, 0xE4, 0x81, 0xE4, 0xFB, 0x41, - 0xE6, 0x64, 0x56, 0x8F, 0x86, 0x80, 0xF4, 0x67, 0x20, 0x40, 0x72, 0xFD, - 0xCC, 0x36, 0x15, 0xDA, 0xB7, 0x2E, 0xD8, 0x4F, 0x25, 0x54, 0x50, 0xA9, - 0xD0, 0x5B, 0x1A, 0x7D, 0xB0, 0xA6, 0xDF, 0x5D, 0xB4, 0x1B, 0x13, 0x3A, - 0xA2, 0x46, 0xEF, 0xE7, 0x53, 0x60, 0xF4, 0x20, 0xF1, 0x51, 0x31, 0x5A, - 0x36, 0xB1, 0xA6, 0xA7, 0xDA, 0x9E, 0x26, 0x73, 0xEC, 0x8B, 0x65, 0xD8, - 0x64, 0x85, 0x27, 0x51, 0x27, 0xB1, 0xEB, 0x4B, 0xBB, 0x78, 0x0C, 0xD0, - 0xF5, 0xE4, 0xEC, 0x52, 0xEB, 0x0E, 0xEB, 0x13, 0x3C, 0x1E, 0xD7, 0x35, - 0x88, 0x5D, 0x98, 0x11, 0x9D, 0x0B, 0x75, 0xEC, 0xEC, 0x67, 0x42, 0xB5, - 0x4C, 0xF6, 0xF0, 0x4C, 0xA2, 0xE1, 0x38, 0xF4, 0x55, 0x95, 0xCB, 0x54, - 0x0F, 0xD3, 0xE8, 0x3C, 0xF2, 0x39, 0x9E, 0xD6, 0x34, 0x46, 0x21, 0x85, - 0xD5, 0x63, 0xE8, 0x4B, 0x34, 0xAA, 0x31, 0x6E, 0xA7, 0xD0, 0xA9, 0xC7, - 0x54, 0x54, 0x62, 0x00, 0x9B, 0xB5, 0x89, 0x94, 0x8F, 0x6C, 0x0C, 0xD5, - 0x6C, 0x23, 0x13, 0xCD, 0x58, 0x6E, 0xCA, 0x9A, 0xF1, 0x08, 0x24, 0x94, - 0xA3, 0x80, 0xD9, 0x2F, 0xA9, 0x32, 0x1D, 0x3A, 0x3F, 0x67, 0xCB, 0xD5, - 0x7D, 0x4D, 0x89, 0x56, 0x5C, 0xE5, 0xDC, 0x37, 0x99, 0x27, 0x3E, 0x66, - 0x82, 0x59, 0x3F, 0xF2, 0x68, 0xE2, 0xC4, 0xA9, 0xE9, 0xD8, 0xFB, 0x5E, - 0x8E, 0x22, 0x0E, 0x77, 0x5F, 0x65, 0x9B, 0x91, 0xDC, 0x59, 0xC4, 0x91, - 0x30, 0x44, 0x24, 0x7A, 0x74, 0x49, 0xA3, 0xA1, 0x4C, 0x2A, 0xBF, 0xC3, - 0xD7, 0x21, 0x21, 0x2A, 0xA9, 0x8C, 0x5F, 0x45, 0xDA, 0x78, 0x5E, 0x55, - 0x7F, 0x7C, 0x41, 0xD3, 0x6D, 0x0B, 0xBE, 0x83, 0xA8, 0x5E, 0x08, 0xF5, - 0xEC, 0xCC, 0xFD, 0x21, 0xB3, 0x1D, 0x6A, 0xCC, 0xF9, 0x52, 0xF3, 0x89, - 0x96, 0x2A, 0x70, 0xAB, 0x63, 0x62, 0xA3, 0xB4, 0xE7, 0x70, 0xE9, 0xDF, - 0x4C, 0xED, 0x52, 0xA0, 0x24, 0x38, 0x58, 0xF1, 0xC6, 0x5B, 0x28, 0xA0, - 0x8F, 0x84, 0x36, 0x60, 0xFB, 0x17, 0xAA, 0x27, 0xB1, 0xA5, 0x71, 0xE8, - 0x1E, 0xDF, 0xB9, 0x0A, 0x0D, 0x15, 0x83, 0xF6, 0xE1, 0xF2, 0x51, 0x8F, - 0x92, 0x67, 0x63, 0xAB, 0xD1, 0x2A, 0x29, 0x77, 0x2D, 0xF0, 0x1E, 0x0E, - 0x19, 0xCC, 0x4E, 0x9D, 0x8F, 0xAA, 0xDE, 0xC1, 0x15, 0x1A, 0xBD, 0x19, - 0x79, 0xD0, 0x61, 0x51, 0x2D, 0x23, 0x82, 0x8E, 0x2C, 0xA3, 0x00, 0x9E, - 0x91, 0x83, 0xD4, 0x61, 0x6E, 0x53, 0x1B, 0x81, 0xBD, 0x07, 0x69, 0x24, - 0xE7, 0xF7, 0xD4, 0x5B, 0x65, 0x72, 0xE2, 0x0F, 0x05, 0x41, 0xD5, 0xD6, - 0x5E, 0x9D, 0xF3, 0xF0, 0xA0, 0xF5, 0x7C, 0xC9, 0x2F, 0x0C, 0x87, 0xEC, - 0x13, 0xDB, 0x79, 0x70, 0x89, 0x0C, 0x67, 0x40, 0xC9, 0xCA, 0xF3, 0xE0, - 0xEA, 0x12, 0xF1, 0x92, 0xD4, 0x02, 0x71, 0x79, 0xE6, 0xF7, 0xC6, 0xC5, - 0x27, 0x4A, 0x9D, 0xAC, 0x32, 0x6A, 0x44, 0xD9, 0x01, 0x8D, 0x01, 0x1F, - 0x2A, 0xD7, 0xE5, 0x7F, 0x32, 0x51, 0x9F, 0xB6, 0x36, 0x8A, 0x98, 0x4E, - 0xA1, 0x0D, 0xA3, 0xCD, 0x3C, 0xF7, 0xDF, 0x30, 0x0A, 0xD9, 0x2A, 0x6A, - 0xD6, 0x97, 0x14, 0x34, 0x0C, 0xA1, 0xC5, 0x87, 0x1B, 0x63, 0x4D, 0xBA, - 0x23, 0x9E, 0x3D, 0x6E, 0x4F, 0x80, 0x3D, 0x32, 0x28, 0x1D, 0x51, 0x8F, - 0x63, 0xCA, 0xA6, 0x5A, 0x77, 0xB8, 0xB9, 0xA2, 0xE5, 0x05, 0x8C, 0xE9, - 0xE3, 0xC7, 0xC8, 0xF0, 0x43, 0x14, 0x29, 0x7E, 0x70, 0x23, 0x77, 0x18, - 0x2D, 0x3A, 0x20, 0x14, 0x1F, 0x26, 0x0F, 0x46, 0x33, 0x0A, 0x6A, 0x6B, - 0xCA, 0x62, 0xB0, 0xF0, 0xCB, 0xB4, 0x48, 0xFA, 0xB2, 0x84, 0x55, 0x0B, - 0x45, 0x35, 0xC2, 0x47, 0x65, 0x72, 0x4B, 0x78, 0x54, 0x29, 0xD3, 0xD6, - 0x44, 0xF9, 0xA5, 0x83, 0xA7, 0xA7, 0x04, 0x31, 0x34, 0xA8, 0x3B, 0x8B, - 0xCD, 0x13, 0xA2, 0x00, 0xCB, 0x61, 0x9D, 0x9E, 0x40, 0xE1, 0xDB, 0x75, - 0x47, 0x12, 0xE8, 0x89, 0x4C, 0x31, 0xA5, 0x4D, 0xDC, 0xA5, 0x6D, 0x79, - 0x47, 0x3E, 0x58, 0xB5, 0x91, 0x9B, 0x02, 0xEC, 0x82, 0x28, 0xCF, 0x11, - 0x5C, 0x12, 0xFA, 0x88, 0xDE, 0x9C, 0x15, 0x4D, 0xCF, 0xD4, 0x24, 0xAD, - 0x5F, 0x16, 0xF0, 0xD0, 0x88, 0xC0, 0xF9, 0x77, 0x97, 0xE0, 0xC5, 0x69, - 0x20, 0x18, 0x4E, 0x9C, 0x2A, 0x19, 0x66, 0x42, 0xD5, 0x5C, 0xD3, 0x87, - 0x6B, 0xB2, 0xB0, 0xDE, 0x78, 0xB3, 0x8C, 0x5D, 0x90, 0xC3, 0x25, 0x3D, - 0xA3, 0xCC, 0xB0, 0x4C, 0x97, 0x0F, 0x6D, 0x29, 0x11, 0x42, 0xB3, 0x86, - 0x99, 0x87, 0x37, 0x5A, 0x45, 0x93, 0xE0, 0x88, 0xC9, 0x35, 0x05, 0x48, - 0xCA, 0x84, 0xAB, 0x13, 0xF8, 0x06, 0xA4, 0x0B, 0x72, 0x2A, 0x8D, 0xEB, - 0xA0, 0x89, 0x3D, 0x0B, 0x00, 0x1A, 0x17, 0x87, 0xCD, 0x95, 0x30, 0x2E, - 0xC5, 0xF3, 0xA6, 0x42, 0x5C, 0x63, 0x7A, 0xF6, 0xD0, 0xE3, 0x6D, 0x9C, - 0xC8, 0xF7, 0x83, 0xC3, 0xED, 0x9F, 0xFA, 0xF0, 0xC6, 0xE0, 0xFE, 0xCD, - 0xFB, 0xC8, 0x18, 0x83, 0x77, 0xAA, 0xDA, 0x58, 0x17, 0xD2, 0x7B, 0x73, - 0x62, 0x2D, 0xC0, 0xE1, 0xF8, 0xA9, 0x3E, 0x06, 0x97, 0x3F, 0x9B, 0xF4, - 0xBB, 0x16, 0x25, 0x31, 0x69, 0x7C, 0xD6, 0xD6, 0xB3, 0x01, 0x35, 0x41, - 0x77, 0x25, 0x71, 0xDE, 0x2D, 0x2C, 0xEF, 0x9E, 0x9A, 0xD6, 0x4C, 0xD9, - 0x8C, 0x0C, 0xD1, 0xD8, 0xA2, 0x48, 0x59, 0x6D, 0x41, 0x15, 0xED, 0xAC, - 0x98, 0xA8, 0x47, 0x3D, 0x4B, 0x7D, 0xE7, 0x14, 0xB7, 0xAB, 0x7F, 0xA9, - 0xCD, 0xAA, 0x49, 0x65, 0x48, 0x34, 0x8C, 0x65, 0xD6, 0x38, 0x5D, 0xE1, - 0x14, 0xFC, 0x4F, 0xE6, 0xE4, 0x87, 0x21, 0xE2, 0x54, 0x08, 0x91, 0x22, - 0xED, 0x3E, 0x87, 0xEE, 0x31, 0x9A, 0xC4, 0x40, 0x78, 0x46, 0x2E, 0xF9, - 0xDB, 0xED, 0x64, 0xD7, 0x10, 0xA4, 0x99, 0x3E, 0x43, 0x43, 0xB2, 0x54, - 0x20, 0x20, 0x7D, 0x93, 0x34, 0x0D, 0x0C, 0x86, 0x52, 0x1A, 0x9D, 0x19, - 0x12, 0x88, 0xDD, 0x14, 0xAE, 0x57, 0x72, 0x75, 0x26, 0xDF, 0xC4, 0xA1, - 0x90, 0x49, 0xC7, 0x0C, 0xE1, 0xA6, 0x11, 0x2C, 0x00, 0xBF, 0xB6, 0xF5, - 0xF2, 0x21, 0x4B, 0x14, 0xB4, 0x07, 0xBE, 0x04, 0x72, 0xCB, 0xBE, 0xB6, - 0x24, 0x27, 0xCF, 0x7D, 0x75, 0x2B, 0x31, 0xD6, 0xA6, 0x84, 0x55, 0x11, - 0xD7, 0x91, 0x5A, 0x15, 0x9C, 0xB0, 0x9D, 0x7E, 0xB1, 0xC6, 0xB7, 0xA5, - 0xE0, 0xB2, 0x88, 0x98, 0x9C, 0x2F, 0x67, 0x29, 0xDA, 0x88, 0xC9, 0xA5, - 0x27, 0x53, 0x4D, 0x8F, 0x0B, 0xF8, 0x08, 0x2C, 0xE7, 0x88, 0x26, 0x9C, - 0xD9, 0x10, 0xD9, 0xE4, 0xDB, 0xA4, 0xF7, 0xAD, 0x9F, 0x4E, 0x65, 0x3E, - 0xF4, 0xA4, 0x57, 0x18, 0x2C, 0xDD, 0x0E, 0x6D, 0x26, 0xA3, 0xC2, 0x66, - 0x0D, 0x71, 0x79, 0x22, 0x8E, 0xD5, 0x6A, 0xFC, 0xF4, 0x71, 0x83, 0x27, - 0xEF, 0x24, 0x50, 0xBA, 0x54, 0x1A, 0xE4, 0x98, 0x84, 0x3F, 0x27, 0xE3, - 0x29, 0x3E, 0x45, 0xC1, 0xB1, 0x00, 0x88, 0x54, 0x4D, 0xF0, 0x87, 0x7B, - 0x30, 0x7B, 0xA1, 0xC7, 0x6C, 0xD7, 0x48, 0xA0, 0xFF, 0xCB, 0x89, 0x92, - 0x6D, 0x0E, 0x05, 0x3A, 0xCE, 0x95, 0x30, 0x23, 0xD7, 0x42, 0x77, 0xA9, - 0x5E, 0xF5, 0xD9, 0xEB, 0x5A, 0xB7, 0x83, 0xB9, 0x91, 0x14, 0x51, 0x13, - 0x96, 0x1E, 0x13, 0x5B, 0x28, 0x56, 0xFB, 0x4C, 0x6C, 0x7B, 0x87, 0x4A, - 0xF5, 0x44, 0xD3, 0xC6, 0xC0, 0x17, 0x77, 0x45, 0x61, 0x60, 0x5E, 0x1D, - 0xA6, 0x0C, 0x19, 0x70, 0x95, 0x46, 0x7D, 0xD2, 0x3B, 0x94, 0xD5, 0x9E, - 0xD9, 0xB9, 0x1C, 0x02, 0x2D, 0xF5, 0x52, 0xEF, 0x77, 0x84, 0x1A, 0xA0, - 0x65, 0x7A, 0x61, 0xFF, 0x5A, 0xDD, 0x1E, 0xB6, 0xD5, 0xE7, 0xEC, 0xF6, - 0x33, 0x54, 0xB7, 0xE7, 0x33, 0x30, 0xB0, 0xB4, 0x61, 0x0F, 0xAA, 0xFE, - 0xAC, 0xDB, 0x9D, 0x3A, 0x2B, 0x78, 0x82, 0x93, 0x8B, 0x74, 0x86, 0x6A, - 0x07, 0xDF, 0x82, 0x1F, 0x35, 0xFA, 0xFD, 0x65, 0x39, 0x52, 0x87, 0xD9, - 0x20, 0x05, 0xF5, 0x56, 0x85, 0x70, 0xFA, 0x46, 0x54, 0x59, 0xE5, 0xA0, - 0xF3, 0x14, 0x09, 0x95, 0x5F, 0x9B, 0x56, 0x45, 0xA5, 0x32, 0x64, 0x88, - 0x98, 0x4A, 0x1D, 0x91, 0xDF, 0x32, 0x22, 0xAF, 0xCD, 0x3D, 0x8B, 0x5E, - 0x77, 0x59, 0x41, 0x25, 0xA0, 0xCC, 0x7F, 0xC6, 0x6B, 0x61, 0x60, 0x0F, - 0xCD, 0x0A, 0xC9, 0x55, 0x6E, 0x0E, 0xB7, 0x6B, 0x85, 0xC8, 0xD9, 0xD6, - 0x26, 0x93, 0x0C, 0x3D, 0x1C, 0xEE, 0xEB, 0x19, 0x8F, 0x98, 0xF0, 0x90, - 0x88, 0x06, 0x05, 0xF0, 0x0D, 0xE7, 0xC9, 0x5B, 0x86, 0xE2, 0x7E, 0x2C, - 0x4A, 0xD3, 0x80, 0xB6, 0x74, 0x54, 0x7F, 0x03, 0x12, 0x38, 0xB3, 0xA2, - 0xBB, 0x43, 0x24, 0xDA, 0x41, 0x6D, 0xEE, 0x99, 0x4D, 0xD1, 0xEC, 0x69, - 0x37, 0xE7, 0x41, 0xF3, 0x9D, 0xAA, 0xD8, 0xC1, 0xA5, 0xE0, 0x11, 0x3F, - 0x47, 0xB4, 0x2E, 0xAD, 0x09, 0x84, 0x56, 0x0F, 0x4E, 0x0C, 0xB1, 0x78, - 0xE6, 0xE0, 0x33, 0xA0, 0x32, 0xDA, 0xF6, 0x67, 0x80, 0xF0, 0xB3, 0xE9, - 0x2F, 0x41, 0x23, 0xF2, 0x79, 0xE3, 0xD2, 0x59, 0x7A, 0x0D, 0x4A, 0x58, - 0x29, 0x90, 0x92, 0xCA, 0x6C, 0x70, 0x15, 0x41, 0xCB, 0x72, 0xF4, 0x09, - 0x47, 0xB9, 0xE2, 0x98, 0xAB, 0x15, 0xCE, 0x3D, 0xA9, 0x9D, 0x0E, 0x44, - 0xDD, 0xA9, 0x23, 0x8E, 0x0E, 0x1D, 0x78, 0xBC, 0xEC, 0x5F, 0x48, 0x92, - 0x22, 0xEC, 0x2A, 0xED, 0x9A, 0x41, 0x8D, 0x14, 0xC8, 0x77, 0x44, 0x36, - 0xCE, 0xE6, 0xF5, 0x70, 0xF4, 0xC1, 0x50, 0x41, 0xAB, 0x7B, 0x28, 0xFD, - 0xB9, 0x00, 0x39, 0x63, 0x8D, 0x20, 0x73, 0x8E, 0x42, 0x7E, 0xB8, 0x40, - 0x7A, 0xAD, 0x8D, 0x8D, 0x6E, 0xFA, 0x93, 0x24, 0xA5, 0xF6, 0xF7, 0x61, - 0x72, 0x75, 0xFC, 0xBB, 0xF5, 0xD1, 0xBE, 0xA0, 0x36, 0x91, 0x61, 0x87, - 0x7F, 0x7F, 0xFD, 0x2A, 0x9B, 0xC8, 0x12, 0xE9, 0xB2, 0xE9, 0xFC, 0xBB, - 0x05, 0xA3, 0xA8, 0x21, 0x97, 0x9B, 0x96, 0x3C, 0x40, 0x64, 0x7F, 0xA3, - 0x51, 0x27, 0x3D, 0x6A, 0xB7, 0x67, 0x15, 0x57, 0x68, 0x4E, 0x87, 0x7D, - 0xB5, 0x2F, 0x45, 0x8F, 0x77, 0x3E, 0x92, 0x98, 0x10, 0xB7, 0x77, 0xA3, - 0x27, 0x20, 0x3C, 0x82, 0x42, 0x37, 0xF2, 0xD7, 0xD6, 0xE7, 0xBF, 0x8D, - 0xD6, 0xEF, 0x4B, 0x53, 0xEC, 0x0F, 0xCC, 0xA7, 0xB0, 0x91, 0x03, 0x27, - 0xAC, 0xE1, 0x9A, 0xA6, 0x38, 0x6E, 0x64, 0xF6, 0x4E, 0xE9, 0xD1, 0x78, - 0x7C, 0x7A, 0xD6, 0xF9, 0x0E, 0xEB, 0x24, 0x2C, 0x01, 0xF3, 0xB1, 0x38, - 0x22, 0x22, 0xBF, 0x91, 0x19, 0x44, 0xCB, 0xEC, 0x8B, 0xEF, 0x59, 0xF0, - 0xA8, 0x3D, 0x5D, 0x66, 0x43, 0xEF, 0x56, 0x6C, 0x1A, 0x88, 0x0A, 0xA7, - 0x74, 0x48, 0x0B, 0x1A, 0x9E, 0x2D, 0xD5, 0x0B, 0xCC, 0x43, 0xA3, 0x09, - 0xB9, 0xCD, 0xD7, 0x82, 0x0C, 0x73, 0x29, 0x4F, 0xE7, 0x0B, 0x69, 0x68, - 0x82, 0x00, 0x65, 0x4D, 0x5F, 0xF8, 0xE6, 0xD7, 0x02, 0x2A, 0x8F, 0x22, - 0x99, 0x5E, 0xAA, 0x08, 0x4D, 0xBD, 0x9A, 0xC4, 0xEC, 0x32, 0x0E, 0x15, - 0x3F, 0xB4, 0x94, 0xBF, 0x01, 0x3A, 0xB1, 0x0C, 0x78, 0x77, 0xDF, 0x72, - 0x5B, 0x77, 0x0D, 0x33, 0x7A, 0x0B, 0xC1, 0x1E, 0xED, 0x9A, 0xE8, 0x72, - 0x68, 0x8D, 0x24, 0xEE, 0x97, 0x24, 0xF6, 0xCA, 0x6D, 0xE8, 0x3B, 0x9D, - 0xDA, 0x93, 0x40, 0x85, 0xA1, 0x9D, 0x1F, 0xB8, 0xC9, 0xE5, 0xEA, 0x59, - 0xA0, 0xD4, 0x6D, 0xCB, 0x71, 0x52, 0x75, 0x9D, 0xA2, 0xAF, 0x91, 0x6A, - 0x4E, 0x0A, 0x6B, 0xB5, 0x67, 0x7B, 0x6C, 0xAC, 0x5E, 0x9B, 0x02, 0x27, - 0x4B, 0x3E, 0xCF, 0x19, 0x57, 0xCC, 0x74, 0x4B, 0x33, 0xA4, 0x6B, 0x1E, - 0x56, 0x6D, 0x0B, 0xA4, 0x84, 0xA3, 0x81, 0xC9, 0x89, 0xF7, 0x9E, 0x3F, - 0xFE, 0x57, 0x60, 0x4F, 0x79, 0x84, 0x53, 0xEB, 0x80, 0x8F, 0xB9, 0x63, - 0x29, 0x4F, 0xBD, 0xA0, 0x0C, 0xF0, 0x7F, 0x35, 0xEC, 0x18, 0xC1, 0x22, - 0xA3, 0x6D, 0x7F, 0x2E, 0xCC, 0x4D, 0x51, 0xFD, 0x76, 0x74, 0x18, 0x19, - 0x67, 0x6B, 0x81, 0x07, 0x07, 0x5B, 0x5D, 0xB3, 0x98, 0x4D, 0x23, 0xB8, - 0x77, 0xD1, 0xEC, 0x3C, 0x0E, 0x10, 0xD0, 0x65, 0x99, 0x29, 0xF1, 0x42, - 0x83, 0x51, 0x26, 0x18, 0x8C, 0x8E, 0x4F, 0x8D, 0x2A, 0x14, 0x34, 0x6A, - 0xC5, 0x71, 0x2F, 0x4C, 0xFF, 0xBA, 0x11, 0xD7, 0x76, 0x16, 0x00, 0xEE, - 0xBA, 0x26, 0xD9, 0xC2, 0x51, 0xBD, 0xC6, 0x67, 0x85, 0x56, 0x98, 0x36, - 0x12, 0xC3, 0xF1, 0xCC, 0xFA, 0xFB, 0xF6, 0x5A, 0xD2, 0x7A, 0xFF, 0x1B, - 0x33, 0xD3, 0x72, 0x05, 0x01, 0x67, 0xA2, 0x42, 0x45, 0x0C, 0x5E, 0x46, - 0xAD, 0x26, 0xA7, 0xCE, 0x38, 0x30, 0xFB, 0x9B, 0x39, 0x8D, 0x40, 0x61, - 0xDF, 0xE5, 0xC5, 0x8A, 0x26, 0xA6, 0x31, 0xFC, 0x8B, 0x0B, 0x2E, 0xAD, - 0xD8, 0xA5, 0x12, 0x92, 0xD2, 0xCA, 0x86, 0x73, 0x52, 0xA6, 0x19, 0xE7, - 0x70, 0xD2, 0x31, 0x14, 0x1C, 0xDA, 0x27, 0xC9, 0xB7, 0x6C, 0x98, 0xE9, - 0xD9, 0x59, 0x8B, 0x5F, 0x27, 0xA6, 0xB3, 0xAC, 0x89, 0xFC, 0x99, 0xF5, - 0x6A, 0x56, 0xC1, 0x99, 0xFE, 0x05, 0x3A, 0x0A, 0x27, 0x1E, 0xE4, 0xD2, - 0x75, 0x98, 0x7C, 0x00, 0x23, 0xD0, 0x19, 0x0B, 0x49, 0xC6, 0x52, 0x48, - 0x03, 0xB5, 0x24, 0x40, 0x03, 0xA2, 0x18, 0xA2, 0x0A, 0x5D, 0x84, 0xF2, - 0xDA, 0xF2, 0x01, 0xF5, 0xE7, 0xDD, 0x54, 0x1F, 0x6C, 0x04, 0xBA, 0x74, - 0x46, 0x29, 0xA3, 0x08, 0x18, 0xA1, 0xA9, 0x80, 0xA3, 0x85, 0x42, 0x49, - 0x33, 0x30, 0x79, 0x08, 0x7B, 0x72, 0x32, 0xB7, 0x59, 0x85, 0xA1, 0xB5, - 0x29, 0xDF, 0x69, 0xDF, 0x2C, 0xC3, 0x5F, 0xD7, 0xA7, 0xE9, 0x97, 0x6A, - 0xA4, 0x38, 0x8B, 0x8C, 0xDE, 0xB2, 0xA8, 0x27, 0xFE, 0x6E, 0xD5, 0xFF, - 0xF6, 0x00, 0x64, 0xB7, 0xBD, 0x14, 0x3C, 0xEC, 0x0E, 0x86, 0x83, 0x7A, - 0x16, 0xEF, 0x50, 0xBB, 0x3D, 0xBA, 0xA2, 0x43, 0x14, 0x61, 0x06, 0x8B, - 0x85, 0xCF, 0x86, 0xE6, 0xC9, 0x77, 0xC6, 0x9F, 0x84, 0xF2, 0x1E, 0xD8, - 0x51, 0x9F, 0xB6, 0xC8, 0x11, 0x56, 0x9A, 0x4B, 0x8B, 0xEA, 0x58, 0x68, - 0x18, 0x78, 0x44, 0x8C, 0x36, 0x0B, 0xA0, 0x4C, 0x74, 0x2E, 0x14, 0xBD, - 0xE8, 0x57, 0xA9, 0x1D, 0x4A, 0x9F, 0xD5, 0x44, 0xB3, 0x15, 0xD6, 0xED, - 0xAE, 0x7A, 0x4E, 0x7D, 0xA7, 0x3C, 0x30, 0xFF, 0x6F, 0x0C, 0x23, 0xCC, - 0x1B, 0x92, 0xC1, 0x48, 0xF9, 0x8C, 0x97, 0x47, 0x3E, 0x5E, 0x66, 0x83, - 0xE8, 0xB9, 0xF0, 0xD0, 0x1B, 0x79, 0x68, 0x1D, 0xA2, 0x35, 0xC7, 0x34, - 0x07, 0x8A, 0xCE, 0x68, 0xBD, 0x9B, 0x7C, 0x76, 0x38, 0x7A, 0x23, 0x9B, - 0x39, 0xD7, 0x04, 0x4A, 0x82, 0xB9, 0x4B, 0xCF, 0xB1, 0x9A, 0xBA, 0x75, - 0x6B, 0x04, 0xF5, 0x23, 0x8D, 0x36, 0x4F, 0x9A, 0x3E, 0x60, 0xD3, 0xAA, - 0xF9, 0x0F, 0x05, 0x5C, 0xA7, 0x28, 0x7E, 0xB4, 0xCA, 0x77, 0x92, 0x9B, - 0x21, 0x0C, 0x99, 0x84, 0xB0, 0xB1, 0xD2, 0x1C, 0xF7, 0x9A, 0x24, 0x0A, - 0xD7, 0x8A, 0xE3, 0x08, 0x3F, 0xE1, 0x5A, 0xC6, 0x32, 0xCF, 0xD8, 0xBB, - 0x6F, 0x86, 0x62, 0x28, 0xDC, 0xC6, 0xF5, 0x00, 0x8C, 0xBE, 0x15, 0x25, - 0x53, 0x87, 0x81, 0xAF, 0xDE, 0xAC, 0x6D, 0x59, 0x0D, 0x51, 0x1F, 0xF9, - 0x76, 0xEA, 0x44, 0x95, 0xFB, 0x1C, 0xC5, 0xB0, 0x0A, 0x29, 0xF2, 0xAE, - 0x8F, 0x03, 0xE7, 0x41, 0xD1, 0x54, 0x9D, 0xD3, 0xD2, 0xB4, 0x7D, 0x9A, - 0xC1, 0x09, 0xDA, 0xC5, 0xD8, 0x26, 0x59, 0xC4, 0x35, 0x66, 0xD7, 0xD1, - 0xE5, 0xA6, 0xED, 0xBB, 0x82, 0xAD, 0x50, 0x4C, 0xE0, 0x01, 0xC9, 0x57, - 0x78, 0x66, 0x8E, 0x0E, 0x69, 0xFD, 0x8C, 0xE9, 0x63, 0xA3, 0x21, 0xDA, - 0xC8, 0x58, 0x1D, 0x6B, 0x76, 0x6F, 0xA4, 0x8F, 0x46, 0xC8, 0x00, 0xB2, - 0x1E, 0xEF, 0x93, 0x54, 0x89, 0xAB, 0xD9, 0x18, 0x23, 0x95, 0xE6, 0x2A, - 0xF8, 0xCC, 0xF2, 0x74, 0xE5, 0x71, 0x60, 0x8C, 0xA1, 0x0E, 0x67, 0x14, - 0xBA, 0xEF, 0x69, 0xC4, 0x01, 0xFE, 0x93, 0x54, 0x26, 0x0A, 0xE1, 0xC2, - 0xC1, 0x47, 0xC9, 0x6A, 0xF6, 0x6A, 0xD8, 0xB6, 0xDD, 0xEE, 0x67, 0xB5, - 0xA0, 0xD8, 0x5F, 0x58, 0x7B, 0x42, 0xFE, 0xD3, 0xD0, 0xCB, 0xFD, 0x5E, - 0x22, 0x4F, 0x31, 0xF7, 0xBA, 0x12, 0x6C, 0xEF, 0x4A, 0x78, 0x23, 0x85, - 0xA3, 0xB1, 0x35, 0x59, 0x13, 0x5D, 0x35, 0xA2, 0x32, 0xF4, 0x6C, 0x07, - 0x33, 0x56, 0x53, 0xD9, 0xB5, 0x4B, 0x6F, 0xC7, 0x73, 0x01, 0x69, 0x54, - 0x7F, 0x95, 0x8C, 0x10, 0xD7, 0x11, 0xF1, 0xF5, 0x0C, 0x21, 0x17, 0xE5, - 0x23, 0x34, 0xDB, 0x4D, 0xC5, 0xA9, 0x18, 0x54, 0xD0, 0x76, 0xB2, 0x74, - 0x68, 0x61, 0x00, 0x8D, 0xCA, 0x3A, 0x70, 0xE4, 0x36, 0xDE, 0x2D, 0x9B, - 0x5F, 0xB0, 0x4E, 0x66, 0x15, 0x7B, 0x92, 0x04, 0x38, 0xBD, 0xC1, 0x61, - 0xF2, 0x19, 0xB9, 0xD9, 0x71, 0xCF, 0xFB, 0x4D, 0x19, 0x99, 0xE5, 0x2A, - 0x50, 0x27, 0x20, 0xC2, 0x18, 0x7B, 0xE9, 0xFA, 0x02, 0x13, 0x66, 0x89, - 0xE7, 0x72, 0x2A, 0xDC, 0x27, 0x72, 0x91, 0xE7, 0xCF, 0x3A, 0x76, 0x6B, - 0xFD, 0xAF, 0x6C, 0x68, 0x57, 0x38, 0xEE, 0x97, 0x55, 0x0C, 0xBF, 0xA6, - 0xBA, 0xDD, 0xC3, 0x2F, 0xDE, 0xD5, 0x39, 0x91, 0x8E, 0xFA, 0xE8, 0xFC, - 0x52, 0x87, 0x94, 0x85, 0x24, 0x3A, 0xDE, 0x03, 0xBE, 0x02, 0x1B, 0x81, - 0xE8, 0x1F, 0xE6, 0x96, 0xAA, 0x38, 0x42, 0x42, 0x2F, 0xDF, 0x4F, 0x13, - 0x50, 0xD3, 0x77, 0xE4, 0x2C, 0x8E, 0x96, 0x3C, 0x4A, 0x6E, 0x37, 0xAF, - 0xE5, 0x03, 0x27, 0x5F, 0x71, 0xE1, 0x79, 0xEA, 0xF7, 0xC5, 0x71, 0x4F, - 0xAC, 0xFE, 0x36, 0x45, 0x0A, 0x96, 0x60, 0x59, 0xD9, 0x52, 0x9F, 0x31, - 0xDF, 0x20, 0x6F, 0x33, 0x03, 0x3D, 0x51, 0x57, 0x18, 0xC1, 0xD0, 0xA4, - 0x7C, 0x33, 0x2E, 0x59, 0x04, 0xF8, 0x3C, 0xF3, 0x58, 0xBB, 0x2F, 0x12, - 0xB1, 0x35, 0xC4, 0xF6, 0xC4, 0x95, 0x3D, 0xDF, 0x13, 0x09, 0xFC, 0xFB, - 0x30, 0xA2, 0xF6, 0x9B, 0xAE, 0xC4, 0xA3, 0xB3, 0x2E, 0xFE, 0x29, 0x8D, - 0x56, 0x24, 0x37, 0xA4, 0xA4, 0x1E, 0xC3, 0x13, 0x6F, 0x99, 0x3D, 0x35, - 0xF8, 0xA0, 0x08, 0x7E, 0x4C, 0x7C, 0x59, 0x81, 0xC0, 0xD8, 0x8F, 0xF7, - 0x33, 0x8E, 0x67, 0x2F, 0xD2, 0x04, 0xE7, 0x4D, 0xB4, 0x90, 0x07, 0xD3, - 0xF7, 0x73, 0x18, 0x1D, 0x69, 0x89, 0x49, 0x13, 0x08, 0x65, 0x6F, 0xCA, - 0xDC, 0x8A, 0x32, 0xBC, 0xCF, 0x5C, 0x6E, 0xDE, 0x23, 0x83, 0x22, 0x94, - 0xEE, 0x02, 0xC6, 0x44, 0xE8, 0xDE, 0xBD, 0xB4, 0x79, 0xD2, 0xF0, 0x9E, - 0x46, 0xCB, 0xF6, 0x5B, 0x2B, 0xA3, 0x97, 0x98, 0x05, 0x60, 0x83, 0xE3, - 0x74, 0xFA, 0xA5, 0x0A, 0x04, 0xE0, 0x76, 0xB5, 0x2B, 0x16, 0xA2, 0x00, - 0xE1, 0x0D, 0xAF, 0x5C, 0x8E, 0xB3, 0x5E, 0x24, 0xC4, 0xA3, 0xB5, 0x8B, - 0xAC, 0x56, 0x13, 0x09, 0x8D, 0xDE, 0xE5, 0xA1, 0x85, 0x49, 0x65, 0xB2, - 0xFF, 0xE4, 0xF2, 0x61, 0x12, 0xE2, 0x45, 0x48, 0x8D, 0x8A, 0x02, 0x60, - 0xBB, 0x2F, 0xF3, 0xFF, 0x10, 0xCD, 0xE3, 0xA7, 0xE8, 0xF0, 0xC1, 0x14, - 0xB5, 0x0D, 0x65, 0xDE, 0x37, 0x33, 0xFC, 0x2F, 0x22, 0xB9, 0xBF, 0xE0, - 0x56, 0x0C, 0x44, 0x18, 0xFC, 0xAA, 0xBA, 0xBE, 0x24, 0x0E, 0xA1, 0x31, - 0x17, 0x7D, 0x2C, 0x2A, 0xA2, 0xAA, 0xF4, 0x65, 0x81, 0x12, 0xB4, 0x7E, - 0x0D, 0x13, 0xE3, 0x9B, 0x3F, 0xAD, 0xA1, 0x20, 0x19, 0x91, 0x34, 0x92, - 0xAD, 0x15, 0x5A, 0x93, 0x65, 0xC1, 0xDD, 0x10, 0xCD, 0x6D, 0xAD, 0x94, - 0x15, 0xA4, 0x88, 0x30, 0x4A, 0x8B, 0x8C, 0xB0, 0xEB, 0xA9, 0x04, 0x8E, - 0xEA, 0x4A, 0xBA, 0x28, 0x1F, 0x28, 0xD4, 0x65, 0x85, 0x49, 0xF4, 0x7C, - 0x69, 0x13, 0xB4, 0x3E, 0x84, 0x36, 0x77, 0x9E, 0x70, 0x36, 0x12, 0x53, - 0x1B, 0xD4, 0xD0, 0x2A, 0x17, 0xDC, 0x84, 0x93, 0xC1, 0xDF, 0xB9, 0x44, - 0x68, 0x0B, 0xF5, 0xEE, 0x3B, 0xB2, 0xA2, 0x8C, 0xCB, 0xB6, 0xA6, 0xD8, - 0x97, 0xA8, 0x2C, 0x61, 0x7C, 0xB7, 0x21, 0x58, 0x07, 0xC9, 0xD4, 0x5D, - 0x54, 0x3A, 0x70, 0xC9, 0xF4, 0x51, 0x00, 0xC6, 0x25, 0xFF, 0x1E, 0x1D, - 0x94, 0xBA, 0x48, 0xDE, 0x5E, 0x69, 0xB4, 0x87, 0x4F, 0x87, 0x83, 0x64, - 0x9A, 0xDF, 0x83, 0x93, 0x59, 0x2A, 0x43, 0xD7, 0xCE, 0x35, 0xE7, 0xD5, - 0x77, 0x72, 0x23, 0xB5, 0xFF, 0x52, 0xA6, 0x11, 0x2A, 0x29, 0x0A, 0xCA, - 0x3B, 0xB8, 0xBC, 0xF3, 0xFE, 0x3A, 0x6B, 0x1B, 0x13, 0xC9, 0x5D, 0xD1, - 0xF5, 0xEE, 0x6A, 0xC4, 0x05, 0x03, 0xAE, 0x04, 0xC5, 0x36, 0x03, 0x56, - 0x3C, 0x5D, 0xE1, 0x3E, 0x32, 0x45, 0x18, 0x3C, 0x90, 0x46, 0xF3, 0xB0, - 0xDA, 0xD4, 0xCC, 0xE0, 0xE1, 0xCD, 0x40, 0xAD, 0xC3, 0xFA, 0x6B, 0x2B, - 0x74, 0xC5, 0x20, 0xCA, 0xF6, 0xA2, 0xA7, 0xC6, 0xD3, 0xA2, 0x38, 0x1E, - 0x5C, 0x03, 0xE5, 0xCC, 0x3F, 0x21, 0xED, 0x8E, 0xAE, 0x6B, 0xDE, 0x75, - 0xF9, 0x67, 0x63, 0xEA, 0x8B, 0x18, 0x06, 0x7A, 0xBD, 0x67, 0x32, 0xA3, - 0x89, 0x6D, 0x71, 0x0A, 0x43, 0x00, 0x74, 0x6B, 0x19, 0x42, 0x8D, 0x0C, - 0x93, 0xAC, 0x4F, 0x69, 0x3B, 0x5C, 0xB0, 0x35, 0xAE, 0x7F, 0x54, 0x48, - 0x1A, 0x48, 0x36, 0x4A, 0xD4, 0x60, 0x32, 0x16, 0x21, 0x75, 0xF6, 0xAA, - 0x3A, 0x34, 0x14, 0xC3, 0xC7, 0x0D, 0xB6, 0x3E, 0xF8, 0x7D, 0xDE, 0x17, - 0x46, 0xBD, 0xA7, 0x87, 0x08, 0xF5, 0x1B, 0x6B, 0x13, 0x0B, 0xCD, 0xA9, - 0x4D, 0x9A, 0xD2, 0x39, 0x83, 0xCA, 0xE9, 0x47, 0xE1, 0xCF, 0xD6, 0x73, - 0xF1, 0x15, 0xCC, 0x50, 0x87, 0xE2, 0xB2, 0x56, 0x04, 0xCC, 0x20, 0x06, - 0x87, 0x3F, 0x19, 0x8D, 0xE6, 0x45, 0x70, 0xF1, 0x13, 0xB1, 0x32, 0x1C, - 0xC2, 0xFF, 0xB9, 0x2F, 0xC9, 0x76, 0x2C, 0x0E, 0x81, 0x18, 0xEF, 0x34, - 0xA7, 0xD0, 0x85, 0xD1, 0x37, 0xC3, 0x83, 0x44, 0xFB, 0x35, 0x2B, 0xB8, - 0x38, 0x4A, 0xB8, 0x44, 0x61, 0xE0, 0x65, 0x97, 0x90, 0x2A, 0xFB, 0x09, - 0x68, 0x1A, 0x8A, 0xF0, 0x56, 0xF7, 0xF7, 0xE4, 0xF5, 0x01, 0x35, 0xD2, - 0x92, 0xB5, 0xE0, 0x82, 0x2D, 0x39, 0x03, 0x1B, 0x0C, 0xDC, 0x30, 0x8D, - 0x7E, 0x55, 0xB4, 0x38, 0x29, 0x93, 0xA0, 0x99, 0x85, 0x6E, 0x8B, 0x6B, - 0x82, 0x6F, 0x5A, 0x57, 0xC0, 0x04, 0x68, 0xE3, 0x41, 0xB6, 0xF9, 0x5B, - 0xC7, 0xE9, 0xCF, 0x96, 0x06, 0x86, 0x63, 0x93, 0x12, 0xC1, 0xEC, 0xF3, - 0xBB, 0x25, 0x39, 0x8F, 0x1F, 0x06, 0x70, 0x08, 0xC6, 0x60, 0x4C, 0xD1, - 0x67, 0x89, 0x8A, 0x13, 0x97, 0x67, 0x13, 0x6E, 0x08, 0x2B, 0xE5, 0x59, - 0x5C, 0xAA, 0xFF, 0x4B, 0xE7, 0x49, 0x81, 0x6E, 0x46, 0x5E, 0x9E, 0x13, - 0x5C, 0x69, 0xEB, 0x95, 0x36, 0x2A, 0x77, 0xBF, 0xD2, 0xB5, 0xDC, 0x49, - 0x33, 0x5F, 0x17, 0x5D, 0x1F, 0x1C, 0x78, 0x8B, 0x38, 0x4D, 0x5D, 0xC4, - 0x03, 0xF2, 0x58, 0xF4, 0x0A, 0xFD, 0xE4, 0xEF, 0x18, 0xF0, 0x8F, 0x31, - 0x29, 0x5D, 0x69, 0xEE, 0xA1, 0x31, 0x37, 0xE2, 0x31, 0x5F, 0xF6, 0x92, - 0x33, 0xDC, 0x70, 0x28, 0xD2, 0x6D, 0xC7, 0x88, 0xC5, 0x86, 0x61, 0x0D, - 0xA9, 0x7B, 0x15, 0xA4, 0xE5, 0x35, 0x7C, 0xF3, 0xBD, 0xE1, 0x80, 0xDE, - 0x9D, 0x7A, 0x7D, 0x98, 0x06, 0xFF, 0x20, 0x6A, 0xF4, 0xCD, 0xC8, 0x99, - 0x25, 0x64, 0x81, 0xEA, 0xC8, 0x7E, 0x3C, 0x5B, 0x28, 0x06, 0xBD, 0xA5, - 0xA8, 0xF8, 0x9C, 0xF3, 0x3D, 0x4F, 0xB1, 0xB5, 0x15, 0x1D, 0x50, 0x0C, - 0x45, 0x55, 0x48, 0xEA, 0x4C, 0x62, 0x5C, 0x11, 0xF3, 0xAE, 0x7E, 0x13, - 0xA0, 0x9E, 0x6A, 0xB4, 0x99, 0x88, 0x03, 0x8F, 0xC7, 0xAE, 0x20, 0x67, - 0x2D, 0x4D, 0x88, 0x11, 0xB5, 0x41, 0x0D, 0x37, 0xA3, 0xAB, 0xD8, 0xE4, - 0x7C, 0x59, 0xC5, 0x71, 0x74, 0x5E, 0x95, 0xB8, 0x38, 0x95, 0x40, 0xAC, - 0x15, 0xD3, 0x7D, 0x21, 0xD0, 0xB3, 0x82, 0x40, 0x55, 0x92, 0x43, 0x90, - 0xDE, 0x83, 0x62, 0xE7, 0xD4, 0x56, 0x32, 0x72, 0x52, 0x0B, 0x2E, 0x09, - 0x30, 0x64, 0x4A, 0xAC, 0x5A, 0x67, 0x01, 0x0A, 0xBD, 0x22, 0xF4, 0x58, - 0xB0, 0xE5, 0x6B, 0x92, 0x69, 0x89, 0x72, 0xE2, 0x91, 0x50, 0x3E, 0x47, - 0xBB, 0xE0, 0x23, 0x57, 0xBC, 0xA5, 0x5D, 0xEF, 0xA7, 0x39, 0x96, 0x00, - 0x99, 0xE4, 0x30, 0x89, 0xCF, 0x0C, 0xA5, 0x22, 0x8F, 0x78, 0x5F, 0xAA, - 0x69, 0x50, 0xF6, 0xB9, 0x61, 0xA1, 0x3E, 0x1C, 0x65, 0x15, 0xD1, 0x50, - 0x4B, 0xDF, 0xD0, 0xA0, 0x87, 0xC2, 0xF8, 0xB2, 0xAA, 0x00, 0xB6, 0xFD, - 0x7A, 0x4E, 0xA6, 0xEA, 0xD8, 0xCE, 0x22, 0x3C, 0x41, 0xFA, 0x6A, 0x05, - 0xCA, 0x5F, 0xEC, 0x98, 0x4E, 0xFC, 0xF1, 0x06, 0x5E, 0x07, 0xF3, 0x98, - 0x73, 0xCF, 0xBD, 0x17, 0xF5, 0xB5, 0x5B, 0x52, 0x29, 0xEF, 0xCC, 0xAE, - 0x8C, 0x8F, 0x6C, 0xB0, 0x82, 0x9D, 0x1C, 0x15, 0x62, 0x4C, 0xFC, 0x99, - 0xFD, 0x3D, 0xD1, 0x7F, 0x13, 0xFD, 0x8A, 0xD1, 0x96, 0x50, 0x98, 0x2D, - 0x30, 0xE8, 0x57, 0x07, 0xFC, 0xD0, 0x06, 0x24, 0xB5, 0x7A, 0xC6, 0xBE, - 0xAA, 0x1E, 0xBF, 0xFF, 0xC6, 0x6C, 0x24, 0x70, 0xB7, 0x59, 0xC3, 0xDB, - 0xC1, 0x3A, 0x79, 0x6F, 0x83, 0xCB, 0x55, 0x84, 0x7E, 0x04, 0xF8, 0xDB, - 0x7D, 0x41, 0xAF, 0x5D, 0xDB, 0x5A, 0xE6, 0xCE, 0x9B, 0x66, 0x6F, 0x38, - 0xF4, 0xEA, 0x20, 0x09, 0x75, 0x75, 0xCD, 0xF8, 0x62, 0x74, 0x7E, 0x4A, - 0x3E, 0x2E, 0xAE, 0xCC, 0x8D, 0x49, 0xBC, 0xCC, 0x34, 0xE9, 0x9B, 0xC7, - 0x05, 0x81, 0x9C, 0xBA, 0x00, 0xF2, 0x83, 0xC5, 0xE4, 0x78, 0x85, 0xD0, - 0xC5, 0xF3, 0x0F, 0xB0, 0x18, 0x30, 0x9B, 0xA3, 0x62, 0x92, 0x72, 0xD5, - 0xEA, 0xE1, 0xC0, 0x5B, 0xDA, 0x0C, 0xBC, 0x19, 0x46, 0x7F, 0x03, 0xC8, - 0x7B, 0x31, 0x13, 0x1B, 0xA0, 0x91, 0xB4, 0x99, 0xC1, 0x9D, 0xB8, 0xE5, - 0x33, 0xD9, 0x41, 0x53, 0x19, 0x97, 0x99, 0x27, 0x8C, 0x8E, 0x5B, 0xAA, - 0x17, 0x85, 0x42, 0xA9, 0x47, 0x1C, 0x19, 0x33, 0xCB, 0x88, 0xBE, 0xF4, - 0x48, 0x43, 0x66, 0xEB, 0x9F, 0xF6, 0x94, 0x2C, 0xC2, 0x74, 0xF8, 0xD7, - 0x9B, 0xEB, 0x2F, 0x2F, 0xF3, 0x52, 0x1F, 0x45, 0x9D, 0x9E, 0xB4, 0x86, - 0x76, 0xAB, 0x43, 0xB9, 0x52, 0x0C, 0x0A, 0x06, 0xD7, 0xF2, 0xA5, 0xFE, - 0x9C, 0x0D, 0x8A, 0xE0, 0xA4, 0xEA, 0x65, 0x3F, 0x2B, 0x7C, 0x03, 0x31, - 0x3A, 0x40, 0x97, 0xA8, 0x56, 0xA2, 0xAD, 0x63, 0x7A, 0xE5, 0xDC, 0xFD, - 0x8D, 0xA9, 0xF3, 0x55, 0xB5, 0x14, 0xB7, 0x51, 0xBA, 0x00, 0x32, 0x43, - 0x25, 0xEB, 0x61, 0x78, 0xA6, 0x2A, 0xEA, 0x9D, 0x15, 0x72, 0x5D, 0xD0, - 0x0E, 0x0C, 0xB4, 0xC1, 0x4B, 0x10, 0x9A, 0xFB, 0x1B, 0x54, 0x33, 0x8D, - 0x3A, 0x0B, 0x43, 0x51, 0x6C, 0x22, 0xB8, 0x29, 0xC5, 0x11, 0x1F, 0x28, - 0xF5, 0x82, 0x5F, 0xCF, 0x0A, 0xB0, 0xBF, 0xDA, 0x90, 0x13, 0xCE, 0x69, - 0xFF, 0x05, 0x85, 0x9D, 0x80, 0xF3, 0x3D, 0x4B, 0x21, 0xAB, 0xED, 0x73, - 0xB9, 0xC4, 0xAD, 0x70, 0xEA, 0x17, 0x20, 0x78, 0xCA, 0xCC, 0x4E, 0x47, - 0xCA, 0x30, 0xA8, 0xDB, 0x1C, 0x7B, 0x46, 0x3C, 0xC0, 0xE2, 0x96, 0xF8, - 0x60, 0xDD, 0x43, 0xFE, 0x41, 0x7C, 0xD2, 0x7B, 0xB9, 0x90, 0x97, 0xF6, - 0x86, 0x62, 0xD5, 0xF3, 0x49, 0x78, 0x81, 0xCF, 0x0C, 0xF1, 0x30, 0xC7, - 0x37, 0x16, 0xDE, 0xB4, 0x93, 0x6A, 0xE0, 0x9F, 0x5B, 0x17, 0x43, 0x69, - 0x7E, 0x54, 0xBB, 0x83, 0x4F, 0x1B, 0xA9, 0x70, 0x41, 0x97, 0x5A, 0x5D, - 0x6E, 0x51, 0x1F, 0xEA, 0xDF, 0x44, 0xFB, 0x2D, 0x1E, 0xB9, 0xF9, 0xA4, - 0xCE, 0x11, 0xD5, 0x6C, 0x43, 0xF5, 0xD1, 0x23, 0x7B, 0x7E, 0x30, 0x4B, - 0x82, 0xF4, 0x3F, 0x9C, 0x53, 0xF5, 0xC8, 0xF6, 0xA1, 0xAB, 0x39, 0xD2, - 0x01, 0xD5, 0xEA, 0x01, 0xFF, 0x75, 0xFD, 0x23, 0x63, 0xBE, 0x4C, 0x70, - 0xC0, 0xF6, 0x78, 0xED, 0x83, 0x79, 0x19, 0x33, 0x58, 0xEA, 0x73, 0xC4, - 0xE9, 0x0E, 0xF6, 0x89, 0x3C, 0xD4, 0x0C, 0xF6, 0xBE, 0xAC, 0x81, 0x32, - 0x70, 0x24, 0x7D, 0xEA, 0x70, 0xBF, 0xC4, 0x45, 0x56, 0x8C, 0x49, 0x91, - 0xA4, 0x04, 0x76, 0x84, 0x5B, 0x43, 0x11, 0x72, 0x74, 0x1C, 0xF5, 0xEB, - 0x93, 0x42, 0x87, 0x1D, 0x6B, 0x16, 0x9F, 0xAD, 0xCA, 0x9B, 0xD3, 0x1F, - 0x78, 0x1A, 0x0A, 0xC5, 0x7D, 0x44, 0xD2, 0xDE, 0x91, 0x0C, 0x3E, 0x12, - 0x74, 0xDF, 0x92, 0xF7, 0x96, 0xD3, 0x6E, 0x76, 0xD6, 0x98, 0x48, 0x78, - 0x77, 0x92, 0xC9, 0x45, 0xD8, 0x75, 0xB3, 0x84, 0xDC, 0x1A, 0x2A, 0x0E, - 0xAF, 0xD8, 0xB2, 0x6D, 0x88, 0x60, 0xEE, 0x77, 0x4A, 0xFE, 0x4B, 0xC1, - 0x2E, 0x27, 0x4C, 0x4F, 0x31, 0x51, 0x5B, 0x92, 0x75, 0xC2, 0x41, 0x7F, - 0xB0, 0x43, 0x09, 0xC7, 0xBA, 0xB0, 0xB3, 0x9B, 0x27, 0x3D, 0xD4, 0x10, - 0x59, 0xD3, 0x4F, 0xB8, 0x7C, 0xFF, 0xC8, 0x4C, 0x06, 0xCA, 0xB4, 0x5C, - 0x37, 0xA4, 0xCD, 0x12, 0x60, 0x5C, 0x15, 0xB2, 0xA2, 0xAA, 0x81, 0x1A, - 0x17, 0x7D, 0xD9, 0xF6, 0x31, 0xD6, 0xEB, 0xE7, 0xE7, 0x16, 0x85, 0x36, - 0x3C, 0xE3, 0x57, 0x76, 0xAC, 0x35, 0xE3, 0xEC, 0x0F, 0xB7, 0x9B, 0xD5, - 0xD1, 0x8E, 0x63, 0x7F, 0x1A, 0xB8, 0x23, 0x02, 0x50, 0x62, 0x06, 0xBF, - 0xE5, 0x14, 0x2D, 0xED, 0xF0, 0x68, 0xEF, 0x8B, 0x82, 0x35, 0x29, 0x8A, - 0xE1, 0x64, 0x14, 0xFB, 0xAA, 0x4B, 0xE3, 0x2B, 0x91, 0x6A, 0x1D, 0x8E, - 0xB2, 0x60, 0xC1, 0xC4, 0x5A, 0x0B, 0xA5, 0xD6, 0xA1, 0xE8, 0x91, 0x97, - 0xA1, 0x51, 0xBD, 0x81, 0xD0, 0xB5, 0x7F, 0x69, 0x4A, 0xA8, 0x5D, 0xB5, - 0x36, 0x55, 0x22, 0xE2, 0x7E, 0x1C, 0x53, 0xE2, 0x5B, 0x57, 0x17, 0x62, - 0x96, 0xC8, 0x7E, 0x31, 0xCB, 0xE0, 0xC6, 0x71, 0x5E, 0xC1, 0xB9, 0xD6, - 0x54, 0x22, 0x49, 0xEF, 0xDD, 0x50, 0xB0, 0x88, 0xC0, 0x0F, 0x16, 0xE7, - 0xD6, 0xBA, 0x9A, 0x08, 0xAC, 0xD6, 0x78, 0xDA, 0x80, 0xDF, 0x7D, 0x69, - 0x97, 0xD4, 0xA7, 0x97, 0xFA, 0xDF, 0x76, 0x54, 0xE4, 0x3B, 0x1D, 0xF1, - 0x98, 0xC4, 0x68, 0xA6, 0xE8, 0x0B, 0x27, 0xE1, 0x0C, 0x2C, 0xC2, 0x8F, - 0x88, 0xB3, 0x31, 0xFF, 0x3A, 0xDB, 0x90, 0x1C, 0x59, 0x2A, 0x88, 0x54, - 0x26, 0x7E, 0xCB, 0xFF, 0x73, 0x99, 0xE5, 0xCF, 0x31, 0x8B, 0x69, 0xDB, - 0x8F, 0x28, 0x4D, 0x3B, 0x2F, 0x63, 0xC8, 0xEB, 0x61, 0x3E, 0x95, 0xBC, - 0x8B, 0x5C, 0x1C, 0xCA, 0xED, 0x43, 0xDF, 0x1A, 0x94, 0xF4, 0xF1, 0xF2, - 0x7D, 0x37, 0x71, 0xC2, 0x28, 0xE7, 0xFE, 0x69, 0x69, 0x3B, 0x6D, 0x31, - 0x3A, 0xE7, 0x0F, 0x26, 0xCE, 0xCD, 0x19, 0xA5, 0xE0, 0x66, 0x29, 0x54, - 0x65, 0x43, 0x43, 0xB9, 0x22, 0x86, 0x0E, 0x2E, 0xD5, 0x63, 0x55, 0xA8, - 0x78, 0x05, 0x54, 0xE3, 0x1E, 0xEC, 0x01, 0x67, 0xB4, 0x22, 0xFC, 0x18, - 0xDB, 0x53, 0x6F, 0x97, 0xC0, 0xEB, 0x58, 0x57, 0x49, 0xDC, 0xBD, 0x76, - 0xCA, 0x00, 0x46, 0xE3, 0x7F, 0x4D, 0x53, 0xAC, 0xDC, 0x77, 0xF3, 0xAF, - 0x4F, 0x5A, 0x85, 0xC8, 0x37, 0x2B, 0x41, 0x63, 0x6F, 0xD7, 0x25, 0x61, - 0x6D, 0x09, 0x9C, 0xEB, 0x43, 0xE2, 0xE8, 0x49, 0x72, 0xCD, 0x8E, 0x1C, - 0xD0, 0x8E, 0xD3, 0x96, 0x1F, 0x98, 0xAA, 0x2B, 0xF6, 0x47, 0x4D, 0x92, - 0x2A, 0xAA, 0x41, 0xA5, 0xA9, 0x71, 0xFE, 0x6C, 0x43, 0x7E, 0xB8, 0x21, - 0x4A, 0x58, 0xA4, 0xF7, 0x5D, 0xF8, 0x44, 0xC4, 0xE8, 0x9A, 0xA7, 0xB9, - 0xAC, 0x97, 0xD4, 0x8D, 0xA6, 0xC4, 0x04, 0x43, 0x30, 0x21, 0x54, 0x16, - 0x92, 0x49, 0x77, 0x7D, 0xEA, 0xD1, 0x1F, 0xB4, 0x75, 0xF4, 0x1F, 0x73, - 0xD0, 0xEA, 0x0F, 0xA6, 0x60, 0x4B, 0xE9, 0xDE, 0x79, 0x4C, 0xFF, 0xD9, - 0xAB, 0x9D, 0xA6, 0x92, 0xE8, 0x64, 0x25, 0x2F, 0x75, 0x97, 0x5C, 0x7A, - 0x7E, 0xF1, 0x5A, 0xE1, 0x6D, 0xD7, 0x16, 0x5A, 0x42, 0x83, 0x43, 0xDD, - 0x8D, 0x22, 0xEB, 0xEE, 0x63, 0xB0, 0x73, 0x67, 0x83, 0x1E, 0xF8, 0x7C, - 0xB6, 0x5B, 0xA5, 0xF9, 0xD1, 0xFF, 0x8A, 0xAD, 0x9A, 0x75, 0x4A, 0x3D, - 0x37, 0x67, 0x40, 0x78, 0xD5, 0x2A, 0xB3, 0xBE, 0xF3, 0x66, 0x3F, 0x51, - 0x94, 0x79, 0x2D, 0x98, 0xB7, 0x29, 0x81, 0x9B, 0xC3, 0xC4, 0x28, 0x38, - 0xB3, 0x99, 0x84, 0xBA, 0x50, 0x15, 0x66, 0x68, 0x40, 0x3D, 0xCD, 0xAF, - 0x3B, 0xF3, 0x1F, 0xD1, 0xE4, 0x17, 0x80, 0x74, 0xE3, 0x14, 0xBF, 0xB3, - 0x3D, 0xC3, 0xC2, 0x07, 0x1E, 0x74, 0x57, 0x96, 0xDF, 0xE4, 0x62, 0xBA, - 0x4C, 0x57, 0x47, 0x0A, 0x09, 0xC2, 0x46, 0x81, 0xF5, 0xBB, 0x77, 0x34, - 0x49, 0x3B, 0xBB, 0x02, 0xDC, 0xF1, 0x15, 0x99, 0x15, 0xB8, 0xF0, 0xD2, - 0x28, 0xD5, 0xC8, 0x79, 0xAB, 0xAF, 0xF8, 0x83, 0xE3, 0x57, 0x9A, 0x5E, - 0xC0, 0x0C, 0x72, 0x2E, 0xD8, 0xB7, 0xDE, 0xAB, 0x27, 0x49, 0xEC, 0x4E, - 0x8E, 0xB0, 0x49, 0x65, 0xDD, 0x2F, 0x56, 0xA4, 0xBE, 0x04, 0x90, 0x9C, - 0xCA, 0x76, 0x5F, 0x59, 0x94, 0x99, 0x5F, 0x97, 0xFD, 0xA7, 0x38, 0xD2, - 0x7F, 0x53, 0xBC, 0x7B, 0x0F, 0x6F, 0xC9, 0xE5, 0x3A, 0x0F, 0x94, 0x2C, - 0xBA, 0x85, 0x6D, 0xAE, 0xF7, 0x21, 0x6A, 0x64, 0xFD, 0xAA, 0x65, 0xD8, - 0x30, 0xB3, 0x0A, 0x6C, 0x91, 0xC6, 0xB6, 0x29, 0x8D, 0x68, 0xC7, 0x1A, - 0x06, 0x9C, 0x58, 0x30, 0x3C, 0xF2, 0xC6, 0x15, 0xD3, 0x8A, 0xC9, 0xA0, - 0x4D, 0x56, 0x88, 0xC7, 0xC2, 0x4E, 0x47, 0x87, 0x9F, 0x20, 0x13, 0x6C, - 0xEF, 0xC4, 0x6D, 0x31, 0x47, 0xB3, 0xEB, 0xBC, 0x61, 0x11, 0xE1, 0xA1, - 0xD8, 0x6E, 0x2B, 0x5C, 0xC1, 0xFD, 0xC3, 0x75, 0xBF, 0x70, 0xBC, 0x77, - 0x4E, 0x47, 0x65, 0xE5, 0xEC, 0xDD, 0x70, 0x24, 0x63, 0xA9, 0xD6, 0x9C, - 0xA9, 0x0C, 0x86, 0xDB, 0xC0, 0x3D, 0x96, 0x65, 0xA4, 0x9D, 0x89, 0xF1, - 0xB1, 0x65, 0x16, 0x29, 0x3E, 0x8C, 0x97, 0xC0, 0x73, 0xED, 0xD1, 0x96, - 0x84, 0x17, 0x8D, 0x66, 0x8E, 0x7F, 0x47, 0xD1, 0x64, 0x7F, 0x83, 0x54, - 0xE6, 0xD3, 0xA0, 0x6E, 0xB7, 0xB0, 0xA5, 0x7E, 0x8E, 0xFE, 0xBD, 0xA9, - 0xDE, 0x0B, 0x7E, 0xE9, 0x68, 0x82, 0x2B, 0x59, 0xF2, 0xA2, 0x45, 0x86, - 0x84, 0xEF, 0x04, 0x18, 0x6E, 0x5F, 0x5D, 0x21, 0xED, 0x8B, 0xAE, 0x65, - 0x0A, 0xC4, 0xD0, 0xD8, 0x2A, 0x9E, 0x81, 0x85, 0x78, 0x2B, 0x4E, 0x11, - 0x47, 0xC6, 0x60, 0x31, 0x63, 0xB1, 0x9A, 0xEB, 0x55, 0x34, 0x98, 0x27, - 0x9E, 0xCC, 0x7D, 0x28, 0x1B, 0xF9, 0xFF, 0x4D, 0x14, 0xF1, 0x48, 0x88, - 0x8C, 0x26, 0xDE, 0x1F, 0xF3, 0xE0, 0xCB, 0xD1, 0x4A, 0x06, 0x0C, 0xE0, - 0x79, 0x07, 0x6F, 0x01, 0xF6, 0x0F, 0x7B, 0x6E, 0x9E, 0x21, 0x0A, 0x7C, - 0x8D, 0xDC, 0xAB, 0xE9, 0xDB, 0xCB, 0xC8, 0x68, 0x4F, 0x20, 0xBB, 0xDB, - 0xF6, 0x3A, 0xEC, 0xD4, 0x52, 0x6F, 0xDF, 0xFF, 0x39, 0xAB, 0x30, 0xF9, - 0xBF, 0xCB, 0xC6, 0xC6, 0x63, 0x6B, 0xFE, 0x38, 0xF8, 0x50, 0x56, 0x00, - 0x23, 0xF9, 0xB7, 0x33, 0xE2, 0x93, 0x0A, 0x4A, 0xA1, 0x20, 0x85, 0xEC, - 0x88, 0x0E, 0x83, 0x57, 0x25, 0x38, 0x91, 0x48, 0x99, 0x0D, 0xAA, 0x28, - 0xEA, 0xBF, 0x66, 0x01, 0xC5, 0x08, 0xFF, 0xC6, 0x78, 0x37, 0x36, 0x51, - 0x0B, 0xF0, 0x63, 0x74, 0xC5, 0x3E, 0x14, 0x9C, 0xE4, 0x4B, 0x3A, 0x71, - 0x02, 0x96, 0x3F, 0x56, 0xF0, 0x9C, 0xCA, 0x9C, 0xAB, 0xA7, 0x86, 0x7E, - 0xB0, 0x9E, 0xFB, 0x58, 0xDE, 0xE5, 0x6E, 0x47, 0xEE, 0x80, 0x39, 0x52, - 0xD9, 0xCA, 0xE6, 0xC9, 0xA7, 0x9C, 0x89, 0xB0, 0x52, 0x68, 0xAB, 0x4B, - 0x3F, 0x86, 0xD3, 0x11, 0xE6, 0xFC, 0x2C, 0x77, 0x8C, 0x5C, 0x6E, 0x19, - 0xD8, 0x53, 0x95, 0xA4, 0x46, 0x08, 0xAC, 0x7D, 0x5D, 0xFB, 0xDE, 0x6C, - 0x4D, 0x45, 0xA3, 0x41, 0x9D, 0xCE, 0xC5, 0xB1, 0x49, 0xBD, 0x06, 0xF6, - 0x74, 0x2F, 0x82, 0xF6, 0x91, 0x4D, 0xDE, 0x8A, 0x2D, 0xD8, 0xAF, 0x17, - 0xFB, 0xC8, 0x85, 0xE2, 0x19, 0x39, 0xDD, 0x1B, 0x58, 0x2B, 0x4F, 0xB6, - 0xED, 0x32, 0x35, 0xF6, 0xEB, 0x12, 0xCE, 0x7F, 0xD1, 0x3C, 0xF1, 0x6E, - 0xC4, 0xE5, 0xBA, 0x6E, 0x92, 0xF7, 0x36, 0xF0, 0x84, 0xB3, 0x36, 0xFE, - 0x89, 0x4C, 0xFE, 0xA7, 0x9D, 0x73, 0x98, 0x28, 0xBB, 0x01, 0x5A, 0x9B, - 0x76, 0x6C, 0x82, 0x81, 0x55, 0x3B, 0xA9, 0x42, 0xD7, 0x7A, 0x37, 0x0C, - 0x3E, 0x1D, 0x6D, 0xB6, 0xF8, 0xD7, 0xA5, 0xAC, 0x5A, 0xBF, 0x83, 0x16, - 0x10, 0x2B, 0x2F, 0x25, 0x2D, 0x28, 0x7F, 0xD3, 0xB4, 0xC3, 0x54, 0x1D, - 0x7E, 0x36, 0xF1, 0x00, 0x80, 0xD5, 0x50, 0xA0, 0xB7, 0x81, 0xAB, 0x6E, - 0xA9, 0xEF, 0x7F, 0xB2, 0x1E, 0xA5, 0xE4, 0x62, 0x06, 0x49, 0xB3, 0xA8, - 0x61, 0xD2, 0x6C, 0xED, 0x4B, 0xF7, 0xAD, 0xD3, 0x4C, 0x1F, 0x23, 0xB1, - 0x5B, 0x54, 0x1B, 0xA5, 0xAA, 0x5F, 0x92, 0x6D, 0x6D, 0x23, 0xB2, 0x5F, - 0x73, 0xC5, 0x1A, 0x1E, 0xD9, 0x17, 0xE5, 0x19, 0xAF, 0x30, 0x9B, 0x77, - 0x0D, 0xF5, 0xC4, 0xAF, 0xDF, 0x57, 0x72, 0x25, 0xAE, 0xA6, 0x63, 0xFD, - 0xB3, 0xAF, 0x73, 0x1B, 0x37, 0x12, 0x1F, 0x4C, 0x62, 0x93, 0xC3, 0x3B, - 0x07, 0x59, 0xEA, 0x82, 0xB5, 0x4D, 0xCF, 0x90, 0xC7, 0x36, 0x08, 0xA4, - 0xE7, 0x69, 0xE5, 0xF9, 0x6E, 0x84, 0x68, 0x6D, 0x2A, 0x00, 0x27, 0x3B, - 0x7E, 0xD4, 0x34, 0x6B, 0x1B, 0xFB, 0x0C, 0x8F, 0xF4, 0x03, 0x31, 0x39, - 0x79, 0x07, 0x53, 0x04, 0x54, 0xFA, 0x6E, 0x23, 0x0D, 0x95, 0x6D, 0xF9, - 0x7D, 0xCA, 0x1B, 0x08, 0xDE, 0xD9, 0xC0, 0xFE, 0x99, 0x76, 0x8A, 0xE4, - 0x41, 0x33, 0x6F, 0x83, 0xC1, 0x55, 0xDA, 0xE7, 0x23, 0xA4, 0x56, 0x0A, - 0xC5, 0x06, 0x1E, 0x0D, 0xB1, 0x7F, 0x5B, 0xDB, 0x9A, 0xE5, 0x39, 0x28, - 0x3B, 0x41, 0xC6, 0x22, 0xAC, 0x23, 0x09, 0x43, 0x3B, 0x16, 0xFF, 0x02, - 0xC9, 0x3D, 0xC3, 0x53, 0x0E, 0xF9, 0xDB, 0x8A, 0x3B, 0xA0, 0xF5, 0xCC, - 0x89, 0x2D, 0x59, 0xFF, 0xB1, 0x39, 0xB1, 0xB4, 0x0E, 0x9C, 0x98, 0x8F, - 0x27, 0xF7, 0x6F, 0x91, 0x8B, 0x53, 0x67, 0x8B, 0xA2, 0x5E, 0xC0, 0x17, - 0x84, 0x3C, 0x76, 0xD2, 0xB8, 0x9A, 0x10, 0x8D, 0x0B, 0xAE, 0x3E, 0xA9, - 0x51, 0x50, 0xC1, 0x94, 0x05, 0xB2, 0x8B, 0x88, 0x67, 0xFE, 0x76, 0x0F, - 0xAF, 0xD6, 0x88, 0xFD, 0x38, 0x9F, 0xF8, 0xA9, 0x27, 0xB8, 0xB3, 0x99, - 0x97, 0x1A, 0xD6, 0x82, 0x8E, 0x92, 0x8E, 0x85, 0x7B, 0x85, 0xD4, 0x94, - 0xF8, 0x4F, 0x9A, 0xF1, 0xC8, 0xE6, 0x9A, 0x1F, 0xC8, 0xA3, 0xD7, 0x87, - 0xAD, 0x0C, 0xF8, 0x34, 0x00, 0x7E, 0x30, 0xCC, 0xBE, 0x8E, 0xD9, 0x44, - 0xF3, 0xBF, 0x98, 0xCF, 0xBF, 0x0F, 0x78, 0xBA, 0x39, 0xD7, 0x20, 0x94, - 0x46, 0x4A, 0xE2, 0x8A, 0xB0, 0x22, 0x5C, 0x8E, 0x43, 0xF8, 0xC3, 0x1D, - 0x4F, 0x6B, 0x4A, 0x14, 0x26, 0x9A, 0xD3, 0x10, 0xD4, 0xD3, 0x99, 0xB6, - 0xD4, 0xC8, 0x6A, 0x8E, 0x5D, 0x45, 0x09, 0x14, 0x30, 0x28, 0xE6, 0x75, - 0xCB, 0x4C, 0x28, 0xB7, 0x27, 0x36, 0x6D, 0x4F, 0xFE, 0x25, 0xCB, 0xD5, - 0xAF, 0x0B, 0xA1, 0x61, 0x77, 0x7C, 0x64, 0x28, 0xDB, 0x74, 0x65, 0x2C, - 0xA7, 0x88, 0x3F, 0xF8, 0xA0, 0xFC, 0xD3, 0xCF, 0x99, 0x4B, 0xE8, 0xDE, - 0xB7, 0x16, 0xA2, 0x80, 0x16, 0x8F, 0xBB, 0x53, 0x27, 0x72, 0x6B, 0x53, - 0xAB, 0x80, 0xAB, 0x37, 0xE8, 0x7C, 0x16, 0x31, 0xA9, 0x81, 0xDF, 0x36, - 0xD3, 0x69, 0xD9, 0xA1, 0xA9, 0x4B, 0x8F, 0x1F, 0x85, 0x64, 0x6E, 0x4D, - 0x39, 0x79, 0x47, 0x87, 0xF3, 0x0B, 0xB9, 0xF9, 0xE1, 0xF7, 0x6E, 0x5F, - 0x29, 0x0B, 0x32, 0xEE, 0xBA, 0x79, 0x01, 0x34, 0x1F, 0x1C, 0xF0, 0x03, - 0xEE, 0x96, 0x2F, 0x76, 0x4E, 0x2E, 0x0F, 0xD1, 0x8B, 0x94, 0x61, 0x9B, - 0x33, 0x16, 0xFD, 0xA7, 0x37, 0x6F, 0x6D, 0x6C, 0x5B, 0xCA, 0xA4, 0x9F, - 0x19, 0x69, 0x4E, 0x17, 0xEC, 0x02, 0xE6, 0x49, 0xAA, 0x7E, 0x8E, 0xC0, - 0xE9, 0x15, 0x54, 0x2F, 0xA6, 0x01, 0xE9, 0x27, 0x9F, 0x2E, 0x9D, 0x85, - 0x4D, 0xFF, 0x3E, 0x78, 0x0B, 0x14, 0xAC, 0x19, 0x78, 0x30, 0xCF, 0xA0, - 0x24, 0x01, 0x7B, 0x1D, 0x82, 0x43, 0x02, 0xAC, 0xF7, 0x6C, 0x0C, 0xA9, - 0xC7, 0x74, 0xE3, 0x8E, 0x15, 0xC1, 0xF2, 0xAD, 0x9D, 0x58, 0xDA, 0x50, - 0x93, 0x69, 0x4F, 0x74, 0x5A, 0xD2, 0xB5, 0xA0, 0x06, 0x08, 0x9D, 0xC0, - 0x0F, 0x27, 0x2B, 0x19, 0x82, 0x41, 0x27, 0x32, 0x66, 0xBC, 0xAA, 0x4E, - 0x90, 0x44, 0x88, 0x33, 0x6E, 0x60, 0xBC, 0x7C, 0xDA, 0x29, 0x04, 0x94, - 0x19, 0xF7, 0xD8, 0x5E, 0x99, 0x7F, 0xEF, 0xA8, 0xBD, 0x3A, 0xE0, 0x6A, - 0xB6, 0xA8, 0x00, 0x15, 0x29, 0x04, 0xF1, 0x41, 0x3F, 0x2B, 0xF7, 0x59, - 0x3E, 0x8E, 0xAB, 0x8D, 0x84, 0x26, 0x2D, 0xC2, 0xAD, 0xA7, 0x33, 0x6C, - 0x08, 0xCA, 0xB4, 0x8A, 0xF8, 0x5E, 0xD7, 0x6A, 0x5B, 0x92, 0xCE, 0x70, - 0x23, 0x01, 0x54, 0x88, 0xDB, 0xD7, 0xF5, 0x24, 0xED, 0xA8, 0x49, 0xDB, - 0x5C, 0x4C, 0x25, 0xE1, 0xBB, 0xC7, 0x5E, 0x0D, 0x05, 0x0B, 0xD0, 0x26, - 0x4F, 0x1D, 0xE4, 0xD6, 0xEB, 0x38, 0x30, 0xC5, 0x3F, 0x50, 0xB1, 0x46, - 0x91, 0x01, 0x7A, 0xE3, 0x01, 0xD1, 0x17, 0x29, 0x4B, 0x56, 0x34, 0xAC, - 0x72, 0xA0, 0xA5, 0x0C, 0xBB, 0x69, 0x93, 0x3D, 0x39, 0xE4, 0x8A, 0x94, - 0x2C, 0xD9, 0xD0, 0x24, 0x24, 0x1C, 0x60, 0xA9, 0x79, 0xD6, 0xF2, 0x33, - 0xBD, 0xB3, 0x7A, 0x61, 0x55, 0x7F, 0x66, 0xEF, 0xC5, 0xC8, 0xE7, 0x60, - 0xFC, 0xA5, 0xAF, 0x44, 0x34, 0x7E, 0x30, 0x17, 0xC5, 0xB1, 0xC4, 0x35, - 0xC7, 0x62, 0xBF, 0xA4, 0x6C, 0xD9, 0xD2, 0x86, 0xD7, 0xD7, 0x48, 0x5C, - 0x8A, 0x67, 0x76, 0xFF, 0xBE, 0x34, 0x5B, 0x4E, 0x20, 0xD9, 0x9F, 0xB9, - 0xD4, 0x94, 0x30, 0x22, 0x6B, 0xA9, 0x01, 0xBC, 0x7B, 0xEF, 0x35, 0xBD, - 0x7D, 0x18, 0x68, 0x5B, 0x1D, 0x4A, 0xF5, 0x11, 0x57, 0x1D, 0xE3, 0x66, - 0x8C, 0xA8, 0x40, 0xD9, 0xFA, 0x55, 0xB8, 0x83, 0xE9, 0x2C, 0xDE, 0x0E, - 0xBA, 0xE2, 0x16, 0xEF, 0xA6, 0xE3, 0x5E, 0xA6, 0xD9, 0x1F, 0x17, 0x97, - 0xCE, 0x78, 0xAC, 0x8A, 0xA0, 0x5C, 0x51, 0x2D, 0xF4, 0xDE, 0xCE, 0x14, - 0x57, 0xA0, 0x3A, 0x36, 0x0C, 0xAB, 0xF9, 0xEB, 0xC0, 0x91, 0x57, 0xED, - 0x21, 0x3D, 0x39, 0x87, 0x61, 0x93, 0x8E, 0x3E, 0x55, 0x3A, 0x7A, 0x2F, - 0x1B, 0xA1, 0x00, 0x89, 0xB5, 0xF7, 0x1C, 0xE0, 0x08, 0x74, 0x00, 0xD8, - 0x9B, 0x4A, 0x74, 0x37, 0xE6, 0x24, 0xDB, 0x7B, 0xAE, 0xA9, 0xF8, 0x92, - 0x35, 0x44, 0x3A, 0x0B, 0xDB, 0xB7, 0xED, 0x65, 0xAA, 0x5F, 0x7F, 0xE3, - 0x35, 0xD5, 0x2D, 0x24, 0x74, 0x53, 0xA6, 0x1D, 0x55, 0x60, 0x1F, 0xB6, - 0x22, 0x9C, 0x14, 0xBA, 0x63, 0x52, 0x7F, 0x88, 0xF9, 0x90, 0xBC, 0xE9, - 0xDB, 0x80, 0xB5, 0x00, 0x2B, 0x12, 0x50, 0xE4, 0x10, 0xC9, 0xBB, 0x18, - 0x76, 0x06, 0x8A, 0x93, 0xD3, 0x0B, 0xE4, 0xCB, 0x2E, 0x5C, 0xA3, 0x42, - 0xC5, 0xFF, 0xCF, 0x9D, 0x53, 0xD1, 0x6B, 0xE7, 0x10, 0x7D, 0x9F, 0x3C, - 0xC3, 0xF9, 0xB1, 0x5B, 0x8A, 0x15, 0x56, 0x63, 0xD5, 0x27, 0x40, 0x1E, - 0x01, 0x1A, 0xDC, 0x0C, 0x6B, 0x7D, 0x42, 0x91, 0xDD, 0x63, 0x9D, 0x1A, - 0xA9, 0xA8, 0xB0, 0xC5, 0xE4, 0x4A, 0x79, 0x4B, 0x04, 0x29, 0xDF, 0x22, - 0x59, 0xC1, 0xF3, 0xAB, 0x09, 0x00, 0x51, 0xEE, 0x3A, 0x96, 0xE1, 0x7B, - 0xDB, 0xC2, 0x36, 0x41, 0x60, 0xB1, 0x84, 0x74, 0x76, 0xB4, 0xA0, 0xD2, - 0x2F, 0x95, 0x5A, 0x89, 0x42, 0xB7, 0x57, 0xCD, 0xFB, 0x3E, 0x5B, 0x33, - 0xDC, 0x0A, 0x62, 0x18, 0x0F, 0x98, 0x71, 0x9B, 0xE6, 0x74, 0x19, 0x39, - 0xF6, 0xFF, 0x69, 0x4B, 0x5C, 0x24, 0x18, 0xF9, 0x3A, 0xD5, 0x70, 0x1F, - 0x7B, 0x5D, 0xAC, 0x01, 0xE9, 0xFE, 0xC2, 0x9E, 0xB5, 0x28, 0xB2, 0xFF, - 0x5A, 0xCB, 0xA2, 0x1A, 0xF2, 0xEA, 0x7D, 0xA0, 0x7A, 0xCC, 0x89, 0xEB, - 0x0A, 0x1C, 0x81, 0x2B, 0x8F, 0xF3, 0x2D, 0xF5, 0x67, 0x58, 0xF9, 0x10, - 0x3A, 0x8F, 0x9E, 0x0A, 0x04, 0xAD, 0x7F, 0xB2, 0x2D, 0xCB, 0xCC, 0x3D, - 0x84, 0x38, 0x46, 0x1B, 0x9A, 0xE1, 0xAA, 0xB2, 0x7E, 0xA7, 0xF3, 0x5E, - 0x43, 0x7B, 0x67, 0x7F, 0xC8, 0x0F, 0x45, 0xC0, 0xB8, 0xEE, 0xE6, 0x68, - 0x16, 0x1E, 0xBF, 0x14, 0xA5, 0xD1, 0xDA, 0x12, 0x7F, 0x42, 0x3B, 0x18, - 0xD3, 0x85, 0x8A, 0xEB, 0x2A, 0x47, 0xCF, 0xEB, 0x85, 0xFB, 0xA5, 0x10, - 0x98, 0x4C, 0x56, 0x4B, 0x63, 0x8A, 0x86, 0xD9, 0x98, 0x36, 0xB5, 0x2B, - 0x4A, 0xA1, 0xC9, 0x2B, 0x7F, 0xF9, 0xC9, 0x29, 0x9C, 0x90, 0xFE, 0x58, - 0x2B, 0x85, 0xD8, 0x01, 0x93, 0x0E, 0x2A, 0x5B, 0x0E, 0xCA, 0xD6, 0xB6, - 0x8F, 0xE1, 0x49, 0x9C, 0x49, 0xEE, 0x83, 0xAD, 0x28, 0x33, 0x94, 0xFB, - 0xA9, 0x2B, 0x47, 0x35, 0xCF, 0xBD, 0x1F, 0x06, 0xFB, 0x9E, 0x70, 0xA4, - 0xEC, 0x26, 0x79, 0x36, 0x3F, 0x67, 0xCF, 0x71, 0x61, 0x00, 0x35, 0xD8, - 0xB2, 0x3B, 0x03, 0x02, 0xD7, 0x80, 0x69, 0xE3, 0x22, 0x5F, 0x57, 0xD6, - 0x0A, 0x12, 0x77, 0xBB, 0x51, 0x93, 0xAC, 0xBF, 0x8A, 0xDC, 0x88, 0x48, - 0x77, 0x5F, 0xD9, 0x40, 0x01, 0x93, 0x83, 0xAD, 0x71, 0x32, 0xFA, 0xF8, - 0xF7, 0x1D, 0x81, 0xE2, 0x6B, 0xB9, 0x39, 0xE3, 0xB7, 0x4C, 0x22, 0xEA, - 0x38, 0x1B, 0xF5, 0x03, 0x9D, 0xBC, 0x5A, 0x81, 0xA5, 0x87, 0xB8, 0x8D, - 0x91, 0x59, 0xA8, 0xBE, 0xB0, 0x47, 0x68, 0x14, 0x70, 0xC2, 0xE0, 0x65, - 0xBA, 0x4B, 0xF4, 0x18, 0x7E, 0xDD, 0xDD, 0x6B, 0xE2, 0xE1, 0x95, 0x14, - 0xA0, 0x3E, 0x26, 0xA5, 0x43, 0x54, 0x51, 0xFE, 0x26, 0x24, 0x90, 0xA3, - 0x32, 0xB3, 0xE6, 0xB4, 0x8D, 0xF0, 0x7A, 0x77, 0x76, 0x2E, 0xE1, 0x0B, - 0x32, 0x44, 0x7B, 0x5F, 0x6B, 0x3F, 0x3C, 0x1E, 0x03, 0x0C, 0x49, 0x6E, - 0x22, 0x5B, 0x18, 0x5F, 0x49, 0x72, 0xDA, 0x3E, 0xB4, 0xB8, 0xA4, 0xE4, - 0xB9, 0xED, 0xAA, 0xC6, 0xAB, 0xB1, 0x69, 0x80, 0x55, 0xCD, 0x9C, 0xDF, - 0x03, 0xC1, 0x24, 0xEC, 0xA7, 0xA1, 0x8C, 0x15, 0x6C, 0x1B, 0x3B, 0xBA, - 0xA5, 0xCF, 0xDF, 0x7B, 0x38, 0x81, 0xDF, 0x40, 0xF1, 0xA4, 0x03, 0x7B, - 0x57, 0xAD, 0x75, 0x96, 0xE9, 0xC2, 0xEE, 0x76, 0x90, 0x81, 0x3E, 0xE8, - 0xD3, 0x23, 0x9B, 0x96, 0x3E, 0xF6, 0xF8, 0xFE, 0xC5, 0x52, 0xA3, 0xBB, - 0x68, 0x98, 0xFF, 0x92, 0xE7, 0xED, 0xC1, 0xDD, 0xF8, 0x6C, 0xC5, 0xBC, - 0xC4, 0x6A, 0x50, 0x53, 0x95, 0x28, 0x1D, 0x8D, 0x84, 0x90, 0xEE, 0xB0, - 0x27, 0x4C, 0xE9, 0x7C, 0x2E, 0x46, 0x94, 0xF5, 0xE3, 0xBB, 0xEB, 0x9F, - 0x6E, 0xD1, 0x6B, 0x6F, 0x83, 0xCB, 0x2A, 0x5A, 0x22, 0xAC, 0x67, 0xE4, - 0x5C, 0xF9, 0x57, 0x20, 0x42, 0xA7, 0xA6, 0x89, 0x22, 0x08, 0x68, 0x92, - 0x64, 0x1B, 0x4B, 0x82, 0xD3, 0x62, 0xE6, 0x80, 0xAC, 0x84, 0x36, 0x19, - 0x24, 0x55, 0x02, 0x4C, 0x79, 0x32, 0xAD, 0x22, 0xF4, 0xE0, 0x46, 0x7B, - 0x8B, 0x96, 0x9A, 0xEC, 0xC7, 0x67, 0xA1, 0x21, 0x8F, 0x5C, 0x48, 0xFC, - 0x52, 0xC7, 0x33, 0xA8, 0x22, 0xA0, 0x3D, 0x72, 0x44, 0x7E, 0xEB, 0x8F, - 0x19, 0xBE, 0x54, 0x98, 0x96, 0x91, 0xA2, 0xCA, 0x72, 0xA6, 0xAE, 0x5E, - 0xA8, 0xA6, 0xC9, 0x14, 0xB3, 0x09, 0xA4, 0x2B, 0x3B, 0xF8, 0x13, 0x13, - 0x1D, 0x51, 0xDC, 0x93, 0x37, 0x1B, 0xFC, 0x18, 0xF9, 0xA4, 0xFA, 0x57, - 0x3E, 0x8D, 0xF7, 0xF0, 0xD8, 0xBF, 0x8D, 0x83, 0x3F, 0x9B, 0x5A, 0x73, - 0x63, 0x82, 0x56, 0x94, 0x2E, 0x02, 0x62, 0x61, 0x01, 0x3C, 0x20, 0x86, - 0x44, 0xCA, 0xF8, 0xB7, 0x2D, 0xDA, 0x99, 0x25, 0xD7, 0x16, 0xE1, 0xEB, - 0x71, 0xEB, 0x16, 0xBC, 0xEB, 0x2F, 0x93, 0x6D, 0x9F, 0xD2, 0xD0, 0xE8, - 0xD4, 0xDD, 0x70, 0x8A, 0x2E, 0x82, 0xF6, 0x23, 0xF3, 0x11, 0x53, 0xC5, - 0xE3, 0x87, 0x06, 0xF9, 0xE6, 0x0A, 0xEE, 0xBA, 0x7B, 0x2C, 0x03, 0xBB, - 0x59, 0x60, 0x1E, 0xD2, 0x55, 0x43, 0xE6, 0xC1, 0x0C, 0x9E, 0x8A, 0x3A, - 0x69, 0xEB, 0x0F, 0x9E, 0x34, 0x3D, 0x48, 0x5D, 0xB4, 0xC1, 0xC0, 0xEF, - 0x50, 0x0E, 0xC6, 0x4A, 0xFB, 0xAC, 0x5F, 0x05, 0x03, 0x39, 0xDE, 0x3C, - 0x09, 0xF4, 0x29, 0xC9, 0x62, 0x90, 0xFB, 0x0F, 0x78, 0x66, 0x31, 0x06, - 0x2D, 0xE4, 0x1D, 0x4A, 0x80, 0xF0, 0x9E, 0x33, 0xBE, 0x89, 0x35, 0x8F, - 0x5D, 0xC0, 0x86, 0x0B, 0xCF, 0x4B, 0xE0, 0xF8, 0xEF, 0x43, 0x69, 0x3D, - 0x0D, 0xF7, 0x74, 0xC0, 0x42, 0x3A, 0x87, 0x44, 0x1D, 0xE4, 0x15, 0x82, - 0x54, 0x13, 0xCB, 0x05, 0xFD, 0x1D, 0xE1, 0x34, 0x97, 0x91, 0xFB, 0x4B, - 0x9F, 0xB8, 0x42, 0xAC, 0x9C, 0x97, 0x01, 0x26, 0x38, 0x76, 0xC5, 0x94, - 0xCF, 0xA0, 0xA3, 0x18, 0x1D, 0x4C, 0x10, 0x63, 0xEE, 0x20, 0x6A, 0xAD, - 0xFD, 0x85, 0xCF, 0x00, 0x9E, 0x3D, 0x63, 0xE9, 0x7F, 0x73, 0x30, 0x65, - 0x39, 0xF4, 0x5C, 0x25, 0xE5, 0x64, 0x80, 0xE3, 0x42, 0x04, 0xCE, 0x25, - 0xCB, 0x4B, 0x7C, 0x47, 0x09, 0x76, 0x1B, 0x92, 0xFA, 0x1E, 0x50, 0x66, - 0x87, 0x24, 0x9B, 0x12, 0x77, 0x9B, 0xC0, 0x6E, 0x26, 0xC8, 0x29, 0x11, - 0x29, 0x6E, 0xEC, 0x13, 0x83, 0x7B, 0xD4, 0x73, 0xDE, 0x86, 0x00, 0x08, - 0xD0, 0xD5, 0xA1, 0xD0, 0xCB, 0xBF, 0x05, 0x1C, 0xBC, 0xBD, 0x6F, 0x65, - 0x69, 0x45, 0x22, 0xFF, 0xBD, 0x0F, 0x02, 0xC0, 0xFC, 0x9B, 0x68, 0x4A, - 0xC0, 0x60, 0xA4, 0x9E, 0x40, 0x50, 0xC5, 0xD2, 0x76, 0x08, 0x7E, 0x58, - 0xB7, 0xE2, 0x4F, 0xA2, 0xCB, 0x0B, 0xA2, 0x56, 0x10, 0xAF, 0x40, 0xA9, - 0xF1, 0x89, 0x77, 0xD6, 0xE8, 0xD5, 0x07, 0x9A, 0x77, 0x4D, 0x44, 0xFE, - 0x18, 0x71, 0xCC, 0x4D, 0x1A, 0x20, 0x5C, 0x1B, 0x44, 0x7B, 0x1E, 0xB4, - 0x25, 0x2C, 0xDF, 0xE5, 0x47, 0xD4, 0xA0, 0xC7, 0xB1, 0x2E, 0xDA, 0xFA, - 0xB1, 0x76, 0xBB, 0xFD, 0xA0, 0x02, 0xEB, 0x4D, 0x04, 0x00, 0xCA, 0xAF, - 0x45, 0x83, 0x58, 0xC6, 0x52, 0x71, 0x5A, 0x3D, 0x3C, 0xF7, 0xF2, 0x29, - 0xA6, 0xA2, 0xA4, 0xF3, 0xC0, 0x30, 0xE0, 0x61, 0xB2, 0x55, 0x78, 0x2C, - 0x57, 0x84, 0xB4, 0x33, 0xB3, 0xF8, 0xD9, 0x57, 0x81, 0x37, 0xA7, 0xC1, - 0x14, 0x3F, 0x1C, 0x9B, 0x0B, 0x44, 0x99, 0xDB, 0x7C, 0x0E, 0x87, 0xF2, - 0xAC, 0xA6, 0x71, 0xFD, 0xC9, 0x29, 0x2E, 0x3C, 0x67, 0x2C, 0x7F, 0xB2, - 0xF7, 0xCB, 0x07, 0x82, 0x54, 0xC8, 0x92, 0x1A, 0x94, 0xEB, 0x46, 0x96, - 0x7D, 0xBB, 0x08, 0x70, 0x8C, 0x8E, 0x5F, 0x7F, 0x2F, 0xAF, 0xAA, 0xF3, - 0x6A, 0x2B, 0xA9, 0xF8, 0xDC, 0x92, 0x20, 0x9F, 0xC5, 0xFC, 0x18, 0xED, - 0x03, 0x85, 0xB1, 0x86, 0xF2, 0x74, 0x93, 0x81, 0x5D, 0x07, 0x48, 0xE4, - 0xED, 0xDC, 0x67, 0x4F, 0x12, 0xA0, 0x3B, 0x2A, 0x85, 0x4C, 0x04, 0xC7, - 0xFA, 0x87, 0xC1, 0x25, 0x20, 0x96, 0x17, 0x5D, 0x89, 0xC4, 0x0E, 0x36, - 0x9B, 0xA6, 0x92, 0x70, 0xFC, 0xF5, 0x1A, 0x5C, 0xAD, 0xED, 0xD8, 0xFD, - 0xDD, 0x67, 0xC6, 0x3A, 0xF0, 0x5B, 0x16, 0xDF, 0x4E, 0x3F, 0xBF, 0xF9, - 0x47, 0x9F, 0x01, 0x47, 0x73, 0xE1, 0x5A, 0x38, 0x7E, 0xC0, 0xA9, 0x18, - 0x70, 0x00, 0x88, 0xFF, 0x21, 0x2B, 0x12, 0xF4, 0xC5, 0x4E, 0xC6, 0x80, - 0x7D, 0xC4, 0x11, 0xB9, 0xC3, 0xF9, 0x5C, 0x69, 0x2A, 0x60, 0x6F, 0xE0, - 0xC6, 0x79, 0x3D, 0x15, 0xC2, 0xE7, 0x23, 0xDA, 0xFB, 0x9B, 0xAB, 0x13, - 0x1D, 0x6D, 0xBD, 0xC2, 0x6F, 0x3D, 0xF7, 0x44, 0xBD, 0x51, 0xF8, 0xA6, - 0xD1, 0x47, 0x7D, 0x8C, 0xA8, 0x52, 0x56, 0xF7, 0x01, 0x04, 0xD5, 0x22, - 0xE8, 0x16, 0x21, 0x61, 0x27, 0xC8, 0xE2, 0xF9, 0xA1, 0x55, 0x44, 0x5F, - 0x8F, 0xC3, 0x22, 0x22, 0x3A, 0xCA, 0x2B, 0x05, 0x31, 0xCF, 0x88, 0x8E, - 0x3B, 0xB0, 0x99, 0x1C, 0xAA, 0x96, 0xF9, 0xDB, 0x41, 0x91, 0x64, 0x0E, - 0xE1, 0xF1, 0xE0, 0xB0, 0x50, 0x62, 0x5D, 0x6B, 0x36, 0xA7, 0x59, 0xD9, - 0x2B, 0x77, 0x36, 0xA2, 0x18, 0xF4, 0x67, 0x74, 0xB8, 0x09, 0x88, 0x91, - 0x38, 0x9A, 0x01, 0x7D, 0xDE, 0xDF, 0xC3, 0xBB, 0x08, 0x59, 0xE9, 0xAD, - 0xA0, 0xEE, 0xC0, 0x4B, 0xC2, 0xBC, 0xB0, 0xAB, 0x4C, 0x32, 0xCB, 0x92, - 0xC9, 0x97, 0x0D, 0xCF, 0x43, 0x83, 0x9D, 0xED, 0x40, 0x98, 0x8E, 0x1B, - 0x2D, 0x67, 0x68, 0x7C, 0x68, 0x8A, 0x38, 0x71, 0xC8, 0xCB, 0x81, 0x32, - 0x95, 0x86, 0x9E, 0x77, 0x5F, 0x9E, 0x85, 0xEE, 0x63, 0xC6, 0x41, 0x49, - 0xD2, 0x98, 0xB0, 0x52, 0x41, 0xDE, 0x59, 0x54, 0x41, 0x64, 0x6F, 0xE5, - 0x1E, 0x73, 0x15, 0xA6, 0x21, 0x51, 0x4A, 0x66, 0xAC, 0xB3, 0x0B, 0x69, - 0x4C, 0xA3, 0xE5, 0xFA, 0xE5, 0xE3, 0xA9, 0xF5, 0x9A, 0x3A, 0x54, 0x04, - 0x82, 0x89, 0xF0, 0x33, 0x8F, 0x5C, 0x0E, 0x1E, 0x80, 0x17, 0x8A, 0x0E, - 0x2F, 0xF8, 0x2D, 0xF3, 0x84, 0xDE, 0xA7, 0x76, 0x1F, 0x4A, 0x39, 0xCA, - 0x6C, 0x8E, 0xA6, 0x27, 0x4B, 0x8C, 0xC8, 0xE3, 0xFF, 0x60, 0xD9, 0xE0, - 0xC2, 0x90, 0xD7, 0x8E, 0x28, 0xA4, 0xD4, 0xC9, 0xA9, 0x05, 0x27, 0xD1, - 0x7D, 0x0C, 0xEA, 0x9F, 0x4B, 0x45, 0xC5, 0x34, 0xDA, 0xE4, 0xAC, 0x51, - 0x23, 0xCC, 0xB0, 0x76, 0x41, 0x91, 0x92, 0x6B, 0x7E, 0x19, 0xDD, 0x7C, - 0x8D, 0x3D, 0xB9, 0xA1, 0xB3, 0x77, 0xEB, 0xD5, 0x62, 0xAF, 0x45, 0x9C, - 0xBD, 0x3B, 0xD4, 0x84, 0xAE, 0xA7, 0x8D, 0x3E, 0x47, 0xE1, 0xFB, 0x6C, - 0xD5, 0x27, 0xC6, 0x39, 0x1F, 0x74, 0x5C, 0x4D, 0x95, 0xE4, 0x7A, 0x79, - 0xA9, 0x9D, 0x29, 0x02, 0xC0, 0xC8, 0xA1, 0x33, 0xB8, 0xDF, 0x2A, 0x2E, - 0xDC, 0x6F, 0x99, 0x9C, 0x49, 0xA3, 0x4C, 0x2A, 0x2A, 0xFA, 0x4B, 0x56, - 0xE8, 0x84, 0x21, 0xBE, 0x6A, 0xDA, 0x6B, 0x71, 0x98, 0x20, 0x52, 0x32, - 0xF3, 0xA9, 0xFA, 0x36, 0xC1, 0x42, 0x58, 0x3B, 0xDD, 0x5F, 0x05, 0x73, - 0x5F, 0x3A, 0xEB, 0xC9, 0x7A, 0x8A, 0x84, 0xC1, 0xDE, 0x50, 0x67, 0x1C, - 0x7B, 0x98, 0xCE, 0xD9, 0x9C, 0x12, 0x81, 0x99, 0xA5, 0x6B, 0x27, 0x8E, - 0x32, 0x43, 0x12, 0xC9, 0xE1, 0x7A, 0x9A, 0x4D, 0xF6, 0x36, 0xAE, 0xF8, - 0x99, 0x4A, 0xC2, 0x90, 0x77, 0x79, 0xEF, 0x10, 0x1A, 0x4D, 0xD6, 0x71, - 0x6F, 0xFB, 0xB8, 0x83, 0x4E, 0x3F, 0xF3, 0xF9, 0xE5, 0xEB, 0xEB, 0xF9, - 0x6E, 0x1C, 0x89, 0x47, 0x52, 0xED, 0x3F, 0x4D, 0xEF, 0x26, 0xA7, 0x3C, - 0x4B, 0x46, 0x9A, 0x32, 0x1E, 0x80, 0x70, 0xBC, 0x5C, 0xF2, 0x80, 0x6E, - 0x62, 0x7C, 0xAE, 0x80, 0xBB, 0x81, 0x82, 0x27, 0xCD, 0xA0, 0x86, 0x34, - 0xD0, 0x80, 0x1E, 0x42, 0xFE, 0x1B, 0xA4, 0x42, 0xC0, 0x67, 0x4D, 0xBB, - 0xFC, 0x08, 0x20, 0x03, 0x6D, 0x62, 0x2F, 0xF2, 0x0C, 0x57, 0x77, 0x6A, - 0xC1, 0x51, 0x66, 0x74, 0x8D, 0x94, 0xE1, 0xF9, 0xF6, 0xC5, 0x78, 0xCD, - 0xCC, 0x68, 0xC6, 0x59, 0x2E, 0x3C, 0x94, 0x49, 0x76, 0x74, 0xD8, 0x67, - 0x41, 0xF6, 0x30, 0xF2, 0x83, 0xF1, 0xA8, 0x31, 0x7B, 0x86, 0x65, 0xED, - 0x5F, 0xD3, 0xF3, 0x9A, 0xF3, 0x7C, 0x57, 0x13, 0x57, 0x2C, 0x00, 0x49, - 0xB6, 0x96, 0xB5, 0x0B, 0x13, 0xE6, 0x2B, 0x17, 0xFA, 0x66, 0xFF, 0x40, - 0xF9, 0x55, 0xF3, 0x61, 0xB2, 0x85, 0xA6, 0xA7, 0xC3, 0x95, 0xFC, 0x69, - 0x48, 0x16, 0x8E, 0x61, 0x84, 0x61, 0xCB, 0xF5, 0x5C, 0x51, 0x8E, 0x22, - 0xC1, 0x26, 0x3F, 0x65, 0x59, 0xD2, 0x05, 0x23, 0xAB, 0xFB, 0x18, 0x09, - 0xFF, 0x91, 0x15, 0x21, 0x3E, 0xFD, 0xA3, 0x74, 0x33, 0xB4, 0x32, 0x49, - 0xA9, 0x3D, 0x73, 0x46, 0xA6, 0xF2, 0x20, 0x4F, 0x93, 0xD8, 0x83, 0xC0, - 0xA1, 0x90, 0x28, 0xBD, 0x58, 0x94, 0x53, 0x5A, 0xF1, 0x1F, 0xC7, 0x74, - 0x9E, 0x6A, 0x6A, 0xD3, 0x11, 0x7A, 0x02, 0x06, 0x1F, 0x9C, 0x84, 0x43, - 0xAE, 0xE0, 0x92, 0x36, 0xD1, 0x93, 0x81, 0x26, 0xDC, 0x31, 0x6C, 0x0A, - 0xD7, 0x5B, 0x39, 0xF2, 0x8B, 0xD3, 0xAF, 0xD9, 0x9D, 0xB2, 0xBB, 0x2B, - 0xFC, 0x0D, 0x0B, 0x7A, 0x71, 0xEA, 0x5E, 0xC9, 0xC5, 0x78, 0xDF, 0xB4, - 0x66, 0xAA, 0xB8, 0x49, 0x3E, 0x3C, 0x9D, 0x69, 0xA1, 0xC2, 0xED, 0x24, - 0xCE, 0xCB, 0x1D, 0x66, 0x05, 0x6B, 0xAF, 0x38, 0x0E, 0xE2, 0x52, 0x26, - 0x36, 0x9A, 0x78, 0xCC, 0xB1, 0xF5, 0x67, 0xC9, 0xA0, 0x4C, 0x47, 0x82, - 0xC0, 0x94, 0xD5, 0x57, 0x63, 0xD5, 0xA6, 0x7E, 0x7A, 0x68, 0xCA, 0x62, - 0xA1, 0x5D, 0xD5, 0x21, 0x7D, 0x84, 0x1E, 0xA1, 0xB5, 0x3A, 0xE3, 0xD4, - 0x06, 0x9B, 0xEC, 0xED, 0x19, 0xE3, 0xD3, 0xCA, 0x90, 0x8C, 0xB7, 0x6E, - 0xDC, 0x1B, 0x58, 0xED, 0x3B, 0x1B, 0x55, 0xE9, 0xAA, 0xED, 0xB9, 0x36, - 0x74, 0x46, 0x24, 0xA8, 0x30, 0x32, 0xE9, 0x1C, 0x56, 0xFE, 0x80, 0xF6, - 0x62, 0x44, 0x99, 0x22, 0x8C, 0xEB, 0x33, 0x8D, 0x6F, 0xB2, 0xF9, 0xAA, - 0x4D, 0x85, 0x64, 0x9F, 0xCE, 0x9A, 0x02, 0x98, 0x30, 0x94, 0x5F, 0x95, - 0xD4, 0xD9, 0xDE, 0xC1, 0x3B, 0xC2, 0x74, 0x84, 0xE4, 0x0C, 0x3F, 0xB6, - 0xFC, 0x5E, 0xCA, 0x22, 0xFE, 0xED, 0xAC, 0x59, 0x08, 0xCD, 0x90, 0x5A, - 0xCB, 0x12, 0x8E, 0xE4, 0xD6, 0x87, 0x3B, 0x75, 0xB8, 0xB8, 0x8F, 0xFC, - 0x20, 0x5F, 0x1B, 0x90, 0xCF, 0x60, 0xF3, 0xF2, 0xBE, 0x86, 0xF4, 0x47, - 0x50, 0x13, 0xCE, 0xF7, 0xBD, 0x1B, 0x51, 0xE5, 0x75, 0x2A, 0xDB, 0x27, - 0xA4, 0x30, 0xF4, 0xE5, 0x75, 0xC2, 0x2F, 0x65, 0xC8, 0xAF, 0x65, 0xFE, - 0x83, 0x82, 0x1D, 0x3B, 0xA6, 0xA3, 0x62, 0xE7, 0x76, 0xD1, 0x03, 0x82, - 0x60, 0xB6, 0x50, 0xE5, 0xE0, 0xF1, 0xB6, 0x1F, 0x1C, 0xFE, 0x03, 0x5F, - 0x33, 0x13, 0xFA, 0x01, 0xF4, 0x56, 0x45, 0xB1, 0xD9, 0x58, 0x8D, 0xC4, - 0xE4, 0xAE, 0x68, 0xD1, 0x5D, 0xA0, 0x47, 0x4B, 0x3B, 0xCF, 0x60, 0x94, - 0xBE, 0x8B, 0xFC, 0xC8, 0x8E, 0x2A, 0x1C, 0xDF, 0x09, 0x10, 0x26, 0x92, - 0x30, 0x9D, 0x15, 0x67, 0x35, 0xD1, 0xD9, 0xAD, 0x09, 0x50, 0x02, 0xA9, - 0xC7, 0xD5, 0xCA, 0x8E, 0x88, 0xD7, 0x17, 0x50, 0x0B, 0x76, 0xA4, 0x21, - 0xCD, 0xE2, 0x6C, 0xBA, 0x36, 0x39, 0x6D, 0xB4, 0xD0, 0xFA, 0x8A, 0x67, - 0x68, 0x3D, 0xF1, 0x8D, 0x3A, 0xB7, 0x61, 0x06, 0x2A, 0x9D, 0x3B, 0xB0, - 0x9B, 0xD1, 0xA1, 0x0A, 0x5A, 0xBD, 0x45, 0xD9, 0x06, 0x17, 0xFD, 0x24, - 0x63, 0x7E, 0x21, 0x76, 0x85, 0x9B, 0x56, 0x4E, 0x5A, 0xDA, 0x98, 0x2C, - 0x63, 0x4C, 0x01, 0xC3, 0x1E, 0xE9, 0xA7, 0xEB, 0xB8, 0x8E, 0xE2, 0x2B, - 0xB4, 0xFF, 0x6B, 0x09, 0x61, 0xFB, 0xE9, 0xCC, 0xDA, 0xE9, 0xEC, 0xA5, - 0xFF, 0x43, 0x68, 0x7E, 0xFE, 0x4D, 0x69, 0x49, 0xF7, 0xF2, 0x99, 0xBD, - 0x56, 0x18, 0xB6, 0x79, 0x98, 0x40, 0x6D, 0xC1, 0x60, 0xF8, 0x09, 0x14, - 0x4C, 0xBD, 0xD3, 0xB8, 0xF3, 0x0A, 0x7C, 0xF2, 0x98, 0x58, 0x61, 0xA6, - 0x30, 0x95, 0xEA, 0xB8, 0x91, 0xF2, 0xD0, 0x30, 0x68, 0x62, 0x25, 0xEF, - 0xFC, 0x4F, 0xC3, 0x5A, 0x40, 0x3C, 0xC9, 0xCE, 0xD9, 0x31, 0xA4, 0xBB, - 0x27, 0x59, 0xAA, 0x30, 0xD8, 0x71, 0xD2, 0x95, 0xDC, 0x76, 0x57, 0xCE, - 0x35, 0x1B, 0x51, 0x04, 0x7F, 0x42, 0x3C, 0xF5, 0x3A, 0xC8, 0xE7, 0x15, - 0x36, 0x8E, 0x69, 0x1F, 0x5E, 0x08, 0x40, 0x0E, 0x63, 0x12, 0x92, 0x1E, - 0x78, 0xF4, 0x49, 0xD0, 0x0A, 0x90, 0xBE, 0x41, 0x3B, 0xBC, 0x8B, 0x50, - 0x89, 0xFC, 0x88, 0x6C, 0x3C, 0x00, 0xFC, 0xC0, 0x3A, 0x52, 0x59, 0x42, - 0xA9, 0xC4, 0x35, 0x71, 0x7E, 0x5D, 0x73, 0x53, 0x28, 0xD7, 0xA4, 0x58, - 0x09, 0x52, 0x0F, 0xF1, 0xD5, 0xCB, 0xD6, 0x3C, 0x6C, 0x5E, 0xF6, 0xF3, - 0x0F, 0xE6, 0x07, 0xF0, 0x25, 0xB0, 0x76, 0x5A, 0xF0, 0x53, 0x70, 0xFB, - 0xF3, 0x3A, 0xDE, 0x52, 0x97, 0x4C, 0x1F, 0x34, 0x7B, 0xEE, 0xD9, 0x4C, - 0xFF, 0xAD, 0x53, 0xC6, 0xBA, 0x74, 0x82, 0x21, 0x81, 0x2E, 0x00, 0x19, - 0x32, 0xAA, 0x3E, 0x52, 0x0E, 0x53, 0x40, 0x1A, 0x63, 0xC4, 0x74, 0xF5, - 0xA2, 0x33, 0x2D, 0xAB, 0x3F, 0xE4, 0x56, 0xFE, 0x1D, 0x91, 0xF3, 0x8F, - 0x46, 0x21, 0x10, 0x1D, 0x38, 0x3D, 0x71, 0x85, 0x6C, 0xD3, 0x44, 0xDA, - 0x3D, 0x7C, 0x69, 0xEB, 0x92, 0xDF, 0xE1, 0x6C, 0x82, 0x88, 0xF5, 0x15, - 0x2D, 0xB2, 0x0F, 0x2D, 0xBF, 0x56, 0x6E, 0x8A, 0xC8, 0x87, 0x20, 0xA2, - 0xA7, 0xBC, 0xFF, 0x2A, 0x4A, 0x1F, 0x2C, 0x5B, 0x0A, 0x84, 0x41, 0x82, - 0xDE, 0xE2, 0x64, 0x0B, 0x42, 0xA6, 0x76, 0x44, 0x93, 0xDC, 0xD6, 0xDF, - 0x26, 0x95, 0x89, 0xEF, 0x76, 0x74, 0x34, 0x93, 0x45, 0x49, 0xB1, 0xB4, - 0x0B, 0x2F, 0xF6, 0x6F, 0xE0, 0xC9, 0x99, 0x47, 0xB1, 0x76, 0x1A, 0xBD, - 0x7E, 0xCD, 0x04, 0x7E, 0xBA, 0x50, 0xA6, 0xB7, 0xC8, 0x31, 0x2C, 0x16, - 0x0E, 0xB9, 0x8A, 0x96, 0xC4, 0x45, 0xB4, 0x06, 0xCE, 0xFF, 0x73, 0x80, - 0xED, 0x24, 0xD0, 0x9E, 0xA9, 0x24, 0x1B, 0x79, 0x25, 0xA9, 0x3D, 0x86, - 0x19, 0x68, 0xBF, 0x31, 0x83, 0x3C, 0x12, 0xB0, 0x5B, 0x23, 0x3B, 0x07, - 0x23, 0x81, 0xAF, 0xDD, 0x62, 0xE8, 0x55, 0x2D, 0x36, 0xA5, 0x16, 0xB1, - 0xA4, 0xFB, 0x20, 0x1A, 0x10, 0x3A, 0x0E, 0x7E, 0x97, 0xFC, 0x29, 0x06, - 0x78, 0xC1, 0x63, 0xB3, 0x6F, 0x64, 0xBE, 0x70, 0x8B, 0x43, 0x70, 0xEB, - 0xEB, 0xE9, 0xEF, 0x7C, 0xC3, 0x59, 0x1B, 0xCC, 0xAB, 0x5B, 0xE0, 0xBF, - 0xF4, 0xC6, 0xD4, 0xE5, 0x07, 0xCF, 0xAB, 0x5E, 0xE8, 0x2F, 0x68, 0xD9, - 0xF6, 0x3A, 0x36, 0x08, 0xE3, 0xF6, 0xAE, 0x7B, 0xC5, 0x7A, 0xF1, 0x16, - 0xC8, 0x46, 0x59, 0xEA, 0xD9, 0xAD, 0x65, 0x74, 0xE7, 0x63, 0xA8, 0xF4, - 0x5E, 0x01, 0x91, 0xE7, 0xEB, 0xA2, 0x0B, 0x92, 0x3C, 0x28, 0x50, 0x9A, - 0x54, 0x76, 0x4A, 0xEC, 0x38, 0x0E, 0x52, 0x02, 0xF4, 0xC8, 0x82, 0xC5, - 0x7D, 0x2D, 0x39, 0x6B, 0x30, 0xB3, 0x68, 0x87, 0x7B, 0x0A, 0x5C, 0x14, - 0xDF, 0x5D, 0xF9, 0xF8, 0x7E, 0x81, 0x6D, 0x76, 0x27, 0x78, 0x33, 0xBC, - 0x9B, 0x9E, 0xEE, 0xDD, 0xFB, 0x24, 0x1B, 0xBD, 0x49, 0x4B, 0x5E, 0xEA, - 0xC9, 0xDD, 0x2A, 0x04, 0x2D, 0xEB, 0xB3, 0xBD, 0x22, 0xDC, 0x61, 0xC3, - 0x95, 0xB7, 0x95, 0x92, 0xDC, 0x32, 0x39, 0xC0, 0x18, 0xC1, 0x43, 0x3B, - 0x20, 0x20, 0x32, 0x0A, 0xB0, 0x51, 0x70, 0x21, 0x59, 0x64, 0x8E, 0x35, - 0xFA, 0xD6, 0xF8, 0x75, 0x56, 0x59, 0x96, 0xA8, 0xEE, 0x3F, 0xF1, 0x49, - 0x64, 0xF1, 0x8F, 0x7C, 0x2B, 0xB9, 0x74, 0xC0, 0x03, 0x55, 0xBF, 0x95, - 0x9C, 0x31, 0x80, 0xDA, 0x37, 0x61, 0x99, 0x28, 0x8A, 0x45, 0x38, 0xF4, - 0x23, 0xC7, 0x55, 0x13, 0x79, 0x01, 0xE2, 0x1D, 0xFC, 0x76, 0x64, 0x20, - 0x4B, 0x63, 0x74, 0x0B, 0x40, 0x8C, 0x11, 0x52, 0xBF, 0xD1, 0x1C, 0xAF, - 0x32, 0xAD, 0x92, 0x11, 0x50, 0x61, 0x57, 0x1A, 0xDD, 0x7A, 0x4B, 0x54, - 0xC3, 0x57, 0x2A, 0xC3, 0xF6, 0x4C, 0xDF, 0x82, 0x6B, 0x5E, 0xD9, 0x7F, - 0x06, 0x52, 0x1D, 0xE3, 0x78, 0x4E, 0x6C, 0xC3, 0x14, 0x73, 0xF1, 0x10, - 0x7D, 0xDC, 0xBE, 0xE0, 0x30, 0x75, 0xCF, 0x24, 0x18, 0x44, 0xA2, 0x61, - 0xC5, 0x36, 0xD8, 0x44, 0x5E, 0x57, 0x3A, 0x2C, 0xFA, 0xDF, 0x6F, 0x0B, - 0x75, 0x69, 0xB7, 0x82, 0x53, 0x78, 0x23, 0x8A, 0x46, 0x65, 0xFF, 0x04, - 0xC8, 0xBF, 0x7D, 0xF0, 0x79, 0xDE, 0x36, 0x78, 0x2B, 0xDF, 0x30, 0x16, - 0x25, 0x71, 0xDC, 0xE3, 0x02, 0xD7, 0x49, 0xF7, 0x08, 0xB4, 0x9B, 0xC1, - 0xEE, 0x73, 0xA5, 0x35, 0x43, 0x9E, 0xB0, 0xEA, 0x11, 0x82, 0xC4, 0xC0, - 0x14, 0x1D, 0x00, 0xDC, 0xB4, 0x43, 0x41, 0xC2, 0x22, 0xA3, 0xBD, 0x1B, - 0x41, 0xEF, 0x9E, 0x3F, 0x3A, 0x50, 0x8E, 0x0E, 0xEB, 0x08, 0x5C, 0xAC, - 0x66, 0x05, 0x19, 0xF0, 0xCD, 0x3D, 0x84, 0xB8, 0x04, 0x0A, 0x22, 0x69, - 0xD2, 0xE1, 0x41, 0x9A, 0x9B, 0xFA, 0xAD, 0xB9, 0x84, 0x08, 0xFF, 0xEC, - 0x50, 0x9B, 0xD2, 0x55, 0xF6, 0x21, 0xA8, 0x4A, 0xF7, 0x19, 0xC4, 0xE9, - 0x1B, 0xE7, 0xD6, 0x97, 0x0F, 0xCB, 0xA3, 0xE1, 0xF5, 0xEB, 0x48, 0x38, - 0x8D, 0xCD, 0x6C, 0x14, 0xC8, 0x30, 0xDD, 0xC6, 0x3D, 0xA0, 0xDB, 0x46, - 0xB1, 0x07, 0x89, 0x38, 0xF7, 0x2E, 0x30, 0x7F, 0xD8, 0x93, 0x92, 0x32, - 0x0B, 0xD8, 0x8B, 0xC8, 0x5A, 0x1A, 0x60, 0xAC, 0xD1, 0x41, 0xEC, 0xB5, - 0xB5, 0xE3, 0x7B, 0xDE, 0x3A, 0x33, 0x24, 0x5E, 0x06, 0x85, 0x2B, 0x65, - 0x74, 0xBA, 0x40, 0x7D, 0x60, 0x87, 0xD3, 0xBE, 0xD9, 0x88, 0xF8, 0x36, - 0xA5, 0x83, 0xB8, 0x83, 0x62, 0x44, 0x20, 0x2F, 0xCB, 0xC7, 0xA1, 0x57, - 0xA8, 0x32, 0x60, 0xAB, 0x97, 0x6F, 0x70, 0x07, 0x2B, 0x41, 0x71, 0xF8, - 0xCE, 0xCD, 0x73, 0x4C, 0xB9, 0x04, 0x14, 0x9E, 0xC2, 0x5A, 0x6F, 0x14, - 0xD0, 0x83, 0x10, 0xAE, 0x2F, 0x67, 0x10, 0x46, 0x5F, 0x6D, 0x40, 0xF5, - 0x2F, 0x77, 0x50, 0x82, 0x65, 0x16, 0xAB, 0x82, 0x3F, 0xBA, 0xF1, 0xBC, - 0x53, 0x2D, 0x86, 0xAA, 0x96, 0x40, 0x14, 0x6D, 0x38, 0x4D, 0x37, 0xD0, - 0x0E, 0xFF, 0x2D, 0xBE, 0x31, 0x04, 0xC3, 0x78, 0x56, 0x28, 0x7A, 0x92, - 0xB6, 0xFD, 0x9D, 0x2D, 0x65, 0x1E, 0x90, 0xFE, 0x30, 0x0E, 0xC6, 0x7B, - 0x08, 0x27, 0x2E, 0xDC, 0x3A, 0xED, 0x07, 0x74, 0xF0, 0xF2, 0x09, 0xE9, - 0x1D, 0x96, 0x5B, 0xB2, 0x4D, 0x37, 0x41, 0xA9, 0xB4, 0xA3, 0x71, 0x2A, - 0xAB, 0x15, 0x4F, 0x31, 0x85, 0xC2, 0xD9, 0x10, 0x22, 0x10, 0xFF, 0xAF, - 0xD1, 0x08, 0x36, 0x0F, 0x05, 0x2A, 0xA9, 0xE2, 0xBA, 0x0E, 0x07, 0xAB, - 0xAC, 0x01, 0xCF, 0xC6, 0xB8, 0xE9, 0x61, 0x45, 0xFB, 0x3F, 0x94, 0x5A, - 0x0C, 0x6D, 0x7B, 0x0E, 0x57, 0x5D, 0x9D, 0xEB, 0x96, 0x0C, 0x1D, 0xC1, - 0x13, 0x24, 0x49, 0xB8, 0xA7, 0xE9, 0x5C, 0x9E, 0xED, 0xAD, 0xF3, 0x56, - 0xED, 0x91, 0xA0, 0xA1, 0x72, 0x51, 0xDE, 0xCD, 0xCC, 0x05, 0x89, 0xD4, - 0x01, 0xA4, 0x80, 0x0D, 0x4E, 0x5A, 0xA9, 0x5F, 0xEA, 0x71, 0x27, 0x84, - 0xE6, 0x70, 0x1D, 0xA2, 0xC9, 0x4C, 0x4C, 0x08, 0xAB, 0xD1, 0x73, 0x9B, - 0x5D, 0xE0, 0xB7, 0x5D, 0xDE, 0x1F, 0x49, 0x75, 0xD1, 0x92, 0x5B, 0x52, - 0x58, 0x3A, 0xCE, 0xA0, 0x25, 0x1F, 0xA7, 0xB1, 0xF7, 0xDD, 0x68, 0xD5, - 0xA7, 0xB6, 0xAA, 0xEC, 0x57, 0x93, 0x61, 0xF5, 0x67, 0x9E, 0x5B, 0x9C, - 0xB8, 0xE0, 0x0A, 0xC5, 0x34, 0x35, 0x25, 0xDC, 0x4B, 0xC5, 0xCF, 0x20, - 0x47, 0x84, 0x53, 0xDD, 0x0B, 0x83, 0x70, 0xD6, 0xF7, 0x2C, 0xF3, 0x55, - 0x3A, 0x52, 0xBC, 0x48, 0x0F, 0xCA, 0xFD, 0x4F, 0x91, 0x79, 0x57, 0xDD, - 0x46, 0xB5, 0xF2, 0xA8, 0x16, 0xC0, 0x06, 0x9B, 0xAF, 0x02, 0x12, 0x15, - 0xB6, 0xB0, 0x48, 0x1E, 0x95, 0xA4, 0x36, 0xBB, 0xD6, 0xF8, 0xBA, 0x1D, - 0x70, 0x50, 0x23, 0xA8, 0xF6, 0xBB, 0x61, 0x46, 0x91, 0x24, 0x16, 0x4E, - 0x02, 0xD8, 0x73, 0x01, 0x78, 0xDD, 0x42, 0x7A, 0xA6, 0x4F, 0xFE, 0x94, - 0xF6, 0xEA, 0x1E, 0x62, 0xB0, 0xAC, 0xE4, 0x94, 0x09, 0x0D, 0x43, 0xF4, - 0xA0, 0xA8, 0x7A, 0xAA, 0x1C, 0x28, 0x49, 0xD7, 0xCC, 0x8B, 0x55, 0xF3, - 0xD3, 0x99, 0x9B, 0xEC, 0x41, 0x6B, 0x86, 0x85, 0x65, 0x1B, 0xC2, 0x2E, - 0xD2, 0xF6, 0x46, 0x9F, 0x46, 0xFF, 0x9A, 0x5F, 0xAF, 0x6F, 0x22, 0x29, - 0x59, 0x40, 0xE4, 0x2D, 0xBE, 0x4A, 0x8E, 0xF0, 0x2B, 0x48, 0x5F, 0xC1, - 0x76, 0xA5, 0x2F, 0xEE, 0x03, 0xEB, 0xCF, 0xA7, 0x2E, 0xB0, 0x27, 0xD7, - 0x49, 0xB1, 0xB4, 0x01, 0x46, 0x00, 0x72, 0xCC, 0x98, 0xD7, 0xA3, 0xBC, - 0x4E, 0xF1, 0x32, 0x3D, 0xF1, 0x29, 0x98, 0xA4, 0x39, 0xD0, 0xD9, 0xD9, - 0x2A, 0x99, 0x14, 0x69, 0xE1, 0x99, 0x70, 0xC8, 0xEE, 0x5D, 0xC9, 0xC3, - 0x92, 0xF3, 0xB6, 0xE7, 0xA7, 0x14, 0xC3, 0xC4, 0xBB, 0x05, 0x44, 0xDD, - 0xDC, 0x77, 0xDB, 0x00, 0x73, 0xC9, 0x0B, 0x17, 0x38, 0xAF, 0xCB, 0x7E, - 0x5F, 0x4D, 0x3F, 0x79, 0x16, 0x10, 0x75, 0x79, 0x69, 0x16, 0xAC, 0x7E, - 0xAA, 0x73, 0xC7, 0x71, 0xF6, 0x01, 0x45, 0xC2, 0xA9, 0xB8, 0xC2, 0x77, - 0x88, 0x45, 0x3A, 0xCC, 0x9E, 0x02, 0xF5, 0xCC, 0x58, 0x4B, 0x98, 0x9B, - 0xA4, 0x7F, 0x9F, 0xB2, 0xE9, 0x8F, 0x0F, 0x21, 0xA2, 0xA3, 0x30, 0x24, - 0x96, 0x8E, 0x45, 0xCA, 0x7E, 0x88, 0x92, 0x8A, 0x81, 0xC5, 0xB5, 0x84, - 0x99, 0x98, 0x2D, 0x97, 0xAF, 0x75, 0x7D, 0x0E, 0xCB, 0x28, 0x96, 0xD5, - 0x4D, 0xFE, 0xDD, 0x30, 0xE1, 0xC3, 0x19, 0x3D, 0x04, 0x5A, 0xEA, 0x09, - 0x82, 0x66, 0x51, 0xE2, 0xE9, 0x03, 0xA3, 0xC2, 0xF7, 0x72, 0x7F, 0xE0, - 0x13, 0xF6, 0x29, 0x15, 0xE9, 0x51, 0xF3, 0x12, 0xE1, 0xB1, 0xC8, 0xC9, - 0x4F, 0xE0, 0x44, 0xA7, 0xE8, 0x80, 0x42, 0x82, 0x98, 0x1D, 0xA9, 0x0F, - 0x17, 0x29, 0xEF, 0xD6, 0xAB, 0x6D, 0x5F, 0x9D, 0xD3, 0x63, 0x61, 0xF3, - 0x63, 0x02, 0xC0, 0xF5, 0xB5, 0x75, 0x52, 0x9F, 0x0B, 0xED, 0x8E, 0x37, - 0x1C, 0xC4, 0x33, 0x02, 0xD8, 0xF5, 0xE4, 0x57, 0x0F, 0xD4, 0x7F, 0x07, - 0xFB, 0x7B, 0x98, 0x92, 0x71, 0x17, 0x45, 0xB0, 0x03, 0xD3, 0x62, 0xFF, - 0x65, 0xDC, 0x5B, 0xA4, 0xA1, 0x8A, 0x3F, 0xF8, 0x0F, 0x34, 0xF8, 0xDF, - 0x59, 0x60, 0xE4, 0xC1, 0x16, 0xC7, 0xAE, 0x46, 0x88, 0x33, 0x9E, 0xE0, - 0xD0, 0xB6, 0x21, 0xB6, 0x4B, 0x77, 0xB0, 0x12, 0x3A, 0x15, 0x15, 0x21, - 0x5E, 0xC7, 0xC5, 0xE3, 0x90, 0x4E, 0x79, 0x96, 0x1C, 0xCA, 0xEA, 0xC3, - 0x2D, 0x0B, 0x8C, 0xCE, 0x3E, 0x54, 0x7A, 0x44, 0xBA, 0xE4, 0xCC, 0x23, - 0x14, 0xEA, 0x73, 0x96, 0x88, 0x54, 0x99, 0xD8, 0x7B, 0x10, 0xB8, 0xB9, - 0xD2, 0xA4, 0x57, 0x63, 0x35, 0xDB, 0x8A, 0xFB, 0xBE, 0x57, 0xA3, 0x9B, - 0x0B, 0x39, 0x35, 0x08, 0x03, 0x9A, 0x22, 0x55, 0x04, 0xE2, 0x14, 0xBF, - 0xA1, 0xCA, 0x15, 0xAC, 0xA6, 0x6E, 0xF7, 0xEC, 0x7B, 0xE4, 0xE7, 0x9C, - 0x22, 0x4C, 0x25, 0x77, 0x77, 0x23, 0xEF, 0xF8, 0xB3, 0x52, 0x88, 0xB2, - 0x85, 0x65, 0xFC, 0xAE, 0xCA, 0xAB, 0x44, 0x77, 0x5B, 0x09, 0xC0, 0xC3, - 0xB1, 0x46, 0xAF, 0xEB, 0xEF, 0x50, 0xC4, 0x47, 0x0E, 0xAC, 0xEF, 0x22, - 0xAF, 0x24, 0x53, 0x51, 0x52, 0xB9, 0x55, 0xD7, 0xA8, 0x1A, 0x1A, 0xC5, - 0xDC, 0x64, 0xD4, 0x0C, 0x15, 0x37, 0x23, 0xC5, 0xD9, 0x2C, 0x02, 0xC5, - 0x53, 0x9D, 0xB4, 0x0C, 0x27, 0xB8, 0x00, 0xA3, 0x2E, 0x38, 0xAD, 0xE8, - 0xD0, 0x52, 0xB0, 0x37, 0x9A, 0xC8, 0x81, 0x33, 0x87, 0x37, 0x0C, 0xB8, - 0x17, 0x45, 0x8A, 0xAC, 0xB1, 0xEF, 0xA4, 0xA1, 0x10, 0x4E, 0x88, 0x13, - 0x10, 0x28, 0xF0, 0x22, 0x55, 0x18, 0x96, 0xB1, 0xDC, 0x54, 0x7B, 0xC3, - 0x7A, 0xA1, 0x8C, 0x58, 0x14, 0x9D, 0xB4, 0xC5, 0x98, 0xA9, 0xBF, 0xB6, - 0x27, 0x4F, 0x7A, 0x1C, 0xF4, 0x03, 0x6B, 0x60, 0x91, 0xB0, 0x1E, 0x9A, - 0x3B, 0x2B, 0x40, 0x30, 0x22, 0x3F, 0x61, 0x16, 0x8E, 0x4D, 0xC0, 0x8F, - 0xED, 0xA5, 0x4F, 0x73, 0x10, 0x4A, 0xD2, 0x73, 0xC5, 0xF8, 0x95, 0x25, - 0xB0, 0xBC, 0x01, 0x14, 0x37, 0x0D, 0x74, 0x45, 0xAA, 0xD6, 0x21, 0x4B, - 0x7D, 0x55, 0x93, 0x16, 0x02, 0xBB, 0xBD, 0x77, 0x4F, 0xEE, 0xEA, 0x29, - 0x3C, 0xDF, 0x45, 0x9A, 0x9B, 0x73, 0xBC, 0x01, 0xF7, 0x18, 0x53, 0x1A, - 0x73, 0x2B, 0x3F, 0x78, 0x69, 0xB8, 0x45, 0x16, 0x9F, 0x76, 0x09, 0x91, - 0x04, 0x21, 0x6B, 0x82, 0xCF, 0xFB, 0x0C, 0xF2, 0x15, 0x6A, 0xDD, 0x67, - 0x2C, 0x21, 0x39, 0x06, 0x13, 0x6C, 0xD7, 0x58, 0x54, 0xBA, 0xAC, 0x8D, - 0x1A, 0x13, 0x8F, 0x4F, 0xC3, 0xE8, 0x0A, 0xCC, 0xA0, 0x25, 0xC5, 0xBD, - 0x49, 0x95, 0x6D, 0x95, 0xA8, 0x6F, 0xCA, 0x85, 0x4F, 0xA1, 0x94, 0x45, - 0x86, 0xE2, 0xBA, 0xD6, 0xE3, 0xFA, 0x91, 0xF5, 0x03, 0xA2, 0x2C, 0xCD, - 0x54, 0x37, 0x61, 0xA6, 0x34, 0xE0, 0x8D, 0x1C, 0xD4, 0xC9, 0x31, 0x4B, - 0x13, 0x04, 0xA6, 0x52, 0xFC, 0x8F, 0x4F, 0x81, 0x0A, 0x15, 0xB0, 0xB0, - 0x33, 0x2F, 0x2A, 0xFC, 0xFF, 0x95, 0x87, 0x66, 0xFD, 0x19, 0xDE, 0x77, - 0x4C, 0xF9, 0x3A, 0x5D, 0x34, 0x5D, 0x47, 0x0B, 0x33, 0x55, 0x9B, 0x90, - 0x13, 0x2C, 0xE3, 0xD8, 0xA9, 0xDB, 0xAA, 0xA0, 0x4F, 0x7F, 0x20, 0xF6, - 0x8C, 0x5A, 0x48, 0x8F, 0x88, 0x95, 0x51, 0x11, 0x95, 0x88, 0x13, 0x31, - 0x4D, 0x6F, 0xA2, 0x5A, 0x1B, 0xE5, 0x16, 0x6E, 0x9C, 0x24, 0xA2, 0x82, - 0x69, 0xAC, 0x0A, 0x54, 0x8B, 0x12, 0x64, 0x4D, 0xC4, 0x51, 0x7F, 0xEA, - 0x4C, 0x44, 0x58, 0xF2, 0xA1, 0x1E, 0xBF, 0x02, 0x15, 0x75, 0x4C, 0x4A, - 0xEB, 0x4F, 0x77, 0xE5, 0xB1, 0x3C, 0x26, 0x4F, 0x21, 0xB9, 0xAD, 0x70, - 0x36, 0x4C, 0x02, 0x10, 0x55, 0x29, 0x7C, 0xA1, 0x01, 0x9F, 0xD9, 0x67, - 0xAB, 0xEE, 0x93, 0xD5, 0x91, 0xDF, 0xC5, 0x18, 0x48, 0x9B, 0x9D, 0x3C, - 0xCB, 0xCF, 0x06, 0x21, 0xA7, 0x5B, 0xE5, 0x83, 0x3B, 0x54, 0xCC, 0x04, - 0x43, 0x63, 0x60, 0x66, 0x60, 0x0F, 0xA2, 0x23, 0xAE, 0xE1, 0x55, 0x78, - 0x09, 0x62, 0x51, 0x0F, 0xAE, 0xF1, 0xE5, 0xBE, 0xCB, 0x4E, 0x83, 0xB1, - 0xB8, 0x45, 0x0E, 0x85, 0x54, 0x69, 0xCC, 0xFD, 0x7C, 0x5C, 0x95, 0xBB, - 0x46, 0xF5, 0x21, 0xB9, 0x86, 0x8C, 0x71, 0x10, 0xF3, 0x6C, 0x1E, 0xE5, - 0xBB, 0x5B, 0xCA, 0x38, 0xAE, 0xF1, 0xB8, 0x73, 0xDB, 0x16, 0x30, 0x28, - 0xB6, 0x18, 0xB4, 0xF4, 0x01, 0x0A, 0x99, 0xCC, 0x01, 0x14, 0x80, 0xC1, - 0xC1, 0xED, 0xC4, 0xE3, 0xE6, 0x92, 0x61, 0x7E, 0x18, 0x44, 0xB2, 0x41, - 0xE6, 0x41, 0xC5, 0xFB, 0x07, 0x75, 0xD3, 0xFB, 0xA7, 0xA9, 0xE7, 0x3B, - 0xAA, 0xFE, 0xB8, 0x16, 0x34, 0x9B, 0xA9, 0xEB, 0x75, 0xBA, 0xE6, 0x19, - 0x21, 0x4B, 0x3E, 0xF9, 0xFF, 0xC7, 0x03, 0x22, 0x42, 0xC4, 0x03, 0x38, - 0x83, 0xA9, 0xB0, 0xCE, 0xB7, 0x32, 0x8E, 0x99, 0x18, 0x8A, 0x3E, 0xC9, - 0x38, 0x23, 0x7E, 0x21, 0x0A, 0xBD, 0x2A, 0x07, 0x3C, 0x05, 0xA6, 0x1E, - 0x5A, 0x56, 0xD8, 0xC8, 0xE7, 0x5F, 0x5D, 0x6D, 0x4F, 0xA6, 0x6F, 0xB6, - 0xE1, 0xEE, 0x65, 0x6A, 0x9F, 0xA1, 0xD8, 0x69, 0xC0, 0x9E, 0x6D, 0x4F, - 0x64, 0x78, 0x34, 0x21, 0x56, 0x46, 0x98, 0xC4, 0x23, 0xE7, 0x4D, 0x25, - 0x24, 0x50, 0x86, 0xFC, 0xED, 0xB9, 0x32, 0x1D, 0x81, 0x0E, 0xE1, 0xFD, - 0x01, 0x67, 0x07, 0xD8, 0xF0, 0x15, 0xFC, 0x67, 0x62, 0x24, 0xD7, 0xB3, - 0xAE, 0x48, 0x26, 0xE2, 0xBD, 0x98, 0x51, 0xE2, 0x28, 0xC7, 0x54, 0x30, - 0xC0, 0x7C, 0xFF, 0xA7, 0x8A, 0x43, 0x19, 0xE0, 0xEF, 0x17, 0x1D, 0xF2, - 0x15, 0xD5, 0x8E, 0x55, 0xAA, 0x8B, 0x98, 0x13, 0xF8, 0xAA, 0xCB, 0xB8, - 0x44, 0x74, 0x8E, 0x54, 0x38, 0xA9, 0xB7, 0x2E, 0xCE, 0x69, 0xEE, 0x12, - 0x13, 0xEB, 0xA4, 0x73, 0xE0, 0x22, 0x0D, 0x1D, 0x38, 0xA5, 0x51, 0x68, - 0xFC, 0x8D, 0x1F, 0xF8, 0x97, 0xE9, 0xD9, 0xF6, 0xC4, 0x0E, 0x19, 0x8C, - 0xB8, 0xB4, 0xE0, 0xB7, 0x9C, 0x88, 0x97, 0x45, 0xA5, 0x09, 0xEC, 0x28, - 0x6C, 0x84, 0xE6, 0xA2, 0x79, 0xD2, 0x82, 0x08, 0x3E, 0xA4, 0xD5, 0x27, - 0x6E, 0x2C, 0x00, 0x3B, 0x2C, 0x69, 0x5C, 0x9F, 0x23, 0x98, 0x14, 0x44, - 0x73, 0x1C, 0x2B, 0x42, 0x69, 0xAE, 0x77, 0xF3, 0xA8, 0x8D, 0xC5, 0xA0, - 0x75, 0xD6, 0xDF, 0xDA, 0xC1, 0x72, 0x77, 0x5F, 0x25, 0x7A, 0x76, 0x80, - 0x8C, 0x78, 0x5D, 0xD4, 0x13, 0xA7, 0x4C, 0x72, 0xB8, 0x8C, 0x0F, 0xE1, - 0x10, 0xE2, 0x00, 0xBA, 0xE9, 0x7A, 0x50, 0x81, 0xDB, 0x60, 0x98, 0x39, - 0x90, 0x58, 0x5B, 0x8E, 0xA7, 0x96, 0x56, 0xB5, 0x0A, 0xC7, 0x72, 0x5A, - 0x26, 0x53, 0x23, 0x99, 0x52, 0xCB, 0xD5, 0xFE, 0xC9, 0xF8, 0xE3, 0x78, - 0x16, 0x80, 0xFE, 0xCC, 0x6A, 0x4F, 0x4B, 0x0C, 0xCA, 0x72, 0xCC, 0xF7, - 0x23, 0xCA, 0x0E, 0x0E, 0x5C, 0xD7, 0xA2, 0xA5, 0xA9, 0x8D, 0xC1, 0xE9, - 0x73, 0x7B, 0x84, 0xD6, 0x86, 0x49, 0x45, 0xD2, 0xD4, 0x05, 0xEB, 0xA8, - 0xD2, 0x5A, 0x69, 0x0F, 0xCB, 0x99, 0x39, 0x26, 0xDD, 0x4F, 0xDC, 0x42, - 0xFD, 0x8F, 0xC8, 0x0B, 0x29, 0xB8, 0x83, 0x3D, 0xB8, 0x96, 0x6C, 0x8A, - 0x5E, 0xC5, 0x28, 0x60, 0xE3, 0xC8, 0x9F, 0xFA, 0x0C, 0xC7, 0xAB, 0x67, - 0x8D, 0x23, 0x0F, 0x35, 0xAB, 0xCF, 0xBF, 0x7D, 0xC2, 0xF6, 0x33, 0xC8, - 0xED, 0x53, 0x86, 0x77, 0x28, 0x0B, 0xD5, 0x47, 0x3E, 0x17, 0x54, 0x9F, - 0x49, 0xD7, 0x29, 0x69, 0x57, 0xC0, 0x70, 0xC9, 0x0E, 0xC1, 0x3A, 0x77, - 0x4A, 0x91, 0x2E, 0x23, 0xF1, 0x13, 0xD0, 0x61, 0x8F, 0xA3, 0x6A, 0xDE, - 0x01, 0x6A, 0xC2, 0x4B, 0x8F, 0xCD, 0x5D, 0x98, 0x70, 0x6D, 0xAC, 0xE3, - 0xFD, 0x17, 0x77, 0x37, 0x81, 0x4C, 0x31, 0xC0, 0x93, 0x74, 0x27, 0x79, - 0xA3, 0x65, 0x7F, 0x35, 0x31, 0x9F, 0x4E, 0x21, 0x13, 0xCE, 0x7E, 0xAB, - 0x01, 0x85, 0x1D, 0x66, 0x95, 0xF5, 0x0C, 0x19, 0x8B, 0x06, 0x3D, 0xB3, - 0x14, 0xD9, 0x64, 0x2B, 0x46, 0xB5, 0x8A, 0x47, 0x0A, 0x98, 0x6D, 0x4E, - 0x7C, 0xE6, 0x26, 0xC8, 0xFA, 0xAB, 0x90, 0xFB, 0x4F, 0x04, 0xCC, 0xB2, - 0x0C, 0x9D, 0x62, 0x45, 0x55, 0x89, 0x4A, 0x55, 0x9B, 0x76, 0x71, 0x1D, - 0x90, 0xE4, 0xCF, 0x46, 0xFC, 0x2F, 0x92, 0x88, 0x9B, 0xFA, 0xF0, 0xCE, - 0xB1, 0x56, 0xB5, 0xD7, 0x65, 0xBF, 0x8A, 0x63, 0x5E, 0x0E, 0x05, 0xDA, - 0xD9, 0xFF, 0x26, 0xFD, 0x2A, 0xA0, 0x98, 0x70, 0x32, 0xBC, 0xBC, 0x93, - 0x22, 0x8C, 0x6E, 0xB1, 0x36, 0xE8, 0x9D, 0x7F, 0xBC, 0xDE, 0xDD, 0x0A, - 0x3F, 0x6D, 0xEA, 0xA2, 0xDA, 0xAC, 0x7B, 0x77, 0x4E, 0x6D, 0x7A, 0x71, - 0xEF, 0x49, 0x6E, 0x31, 0xD1, 0xD6, 0xC9, 0x15, 0xBA, 0x1E, 0x18, 0x98, - 0x92, 0xF1, 0x21, 0x23, 0xC0, 0xB5, 0x9C, 0x37, 0x15, 0x97, 0xA6, 0x48, - 0x09, 0x6D, 0x46, 0x6C, 0x45, 0x06, 0xC5, 0x27, 0x64, 0x54, 0x78, 0xF5, - 0xFF, 0xD3, 0xD3, 0xAE, 0xC8, 0x6E, 0xFC, 0x59, 0xB1, 0xD9, 0x26, 0xE8, - 0xEE, 0x3C, 0x1D, 0xC7, 0xCF, 0xC0, 0xE0, 0xAB, 0xDC, 0x10, 0x74, 0x48, - 0xBA, 0xC2, 0xCA, 0xA1, 0x9C, 0xFB, 0x87, 0x99, 0x7A, 0x6B, 0x37, 0x5C, - 0x6F, 0x9F, 0x97, 0xCB, 0x90, 0x4F, 0xBC, 0x26, 0x15, 0xAC, 0x0D, 0xC6, - 0x72, 0xF6, 0x29, 0xF8, 0xDD, 0x57, 0x68, 0x46, 0x35, 0x60, 0xD8, 0x16, - 0xE7, 0x3F, 0xC7, 0xEC, 0xDE, 0x6B, 0x8C, 0xF0, 0x3D, 0x4A, 0x17, 0x58, - 0x55, 0xD5, 0xE8, 0xA8, 0x4A, 0x62, 0x48, 0x8B, 0x52, 0xBD, 0x13, 0x00, - 0xF7, 0x44, 0xD1, 0x78, 0x3C, 0x1D, 0xAC, 0x34, 0xEE, 0xA5, 0x9B, 0xCC, - 0x6D, 0xAD, 0x30, 0x31, 0xFC, 0x81, 0x91, 0x50, 0x26, 0x2A, 0x48, 0x30, - 0x20, 0xB7, 0xAA, 0x87, 0x02, 0x99, 0xB2, 0xE4, 0xAC, 0x83, 0x71, 0x59, - 0xDC, 0xD9, 0x5D, 0x6C, 0xB1, 0x03, 0x32, 0x97, 0x97, 0xEE, 0xFD, 0xCC, - 0xC4, 0xF3, 0xDD, 0x94, 0xC6, 0x43, 0xB9, 0xB7, 0x1D, 0x2F, 0x9C, 0x9D, - 0x7F, 0x91, 0x51, 0x1A, 0x35, 0xAF, 0xD8, 0x50, 0xFB, 0xBF, 0xD0, 0xA0, - 0x28, 0x39, 0x6F, 0x47, 0x96, 0x57, 0x7D, 0x52, 0x5C, 0xCD, 0xC9, 0x7F, - 0xBB, 0x2C, 0x15, 0xFE, 0x2A, 0x3A, 0xFD, 0x23, 0xB2, 0x91, 0x6F, 0xC7, - 0x3C, 0xB2, 0x91, 0xB9, 0x59, 0xAA, 0x2E, 0x96, 0x45, 0xC5, 0x30, 0xAC, - 0x03, 0x42, 0x78, 0xFD, 0x46, 0xD2, 0x2F, 0x7A, 0x46, 0x55, 0x26, 0x49, - 0x38, 0x4C, 0xA1, 0xD2, 0x78, 0x17, 0xD6, 0x3D, 0x00, 0xCB, 0xF7, 0xB2, - 0x68, 0x7D, 0x4A, 0xDA, 0x2E, 0x54, 0xF6, 0x6C, 0xCF, 0xDE, 0x8F, 0xF7, - 0xFA, 0xF8, 0x87, 0x38, 0xCA, 0xEA, 0xD2, 0x1F, 0xED, 0x04, 0xD0, 0xE9, - 0x12, 0xCF, 0x11, 0x18, 0xAF, 0xF3, 0x4E, 0x13, 0x3D, 0xBC, 0x30, 0xB4, - 0x15, 0x71, 0x8B, 0x2D, 0x63, 0xCA, 0x53, 0x8C, 0x20, 0x6D, 0x0C, 0x4E, - 0xF8, 0x10, 0xD2, 0x1A, 0xC1, 0x0C, 0xE8, 0xCF, 0xE1, 0xA8, 0x93, 0x7E, - 0x8B, 0x32, 0x9D, 0x47, 0x03, 0x2B, 0x92, 0x27, 0x73, 0xE9, 0x39, 0xBD, - 0x9F, 0x7B, 0x76, 0x8B, 0x3C, 0x66, 0xA1, 0x3E, 0x4B, 0x69, 0x36, 0x71, - 0x93, 0x02, 0x47, 0x5E, 0x3D, 0x8F, 0x28, 0x72, 0x15, 0x85, 0x64, 0x1C, - 0x8F, 0x2F, 0x58, 0x8F, 0xDD, 0x25, 0x84, 0x70, 0x0A, 0xD4, 0x8A, 0x3A, - 0x02, 0x08, 0xC6, 0x91, 0xBD, 0xE9, 0xA9, 0x66, 0xD0, 0x9F, 0xE5, 0x2F, - 0xCF, 0xA2, 0x94, 0x7E, 0xB8, 0x91, 0x31, 0x90, 0xC8, 0x06, 0x9B, 0x91, - 0xCD, 0xE7, 0xDD, 0x1D, 0x6F, 0x57, 0x40, 0x59, 0x64, 0x95, 0x49, 0xAA, - 0xA6, 0x48, 0x2F, 0x09, 0x78, 0xE8, 0xA5, 0xCF, 0x41, 0x8C, 0x23, 0x38, - 0xEB, 0xA6, 0x93, 0x7F, 0x33, 0xE1, 0x38, 0x02, 0x64, 0x8C, 0x6A, 0x40, - 0x93, 0xD0, 0x4D, 0xA9, 0x9A, 0x4C, 0xE4, 0x2F, 0x8C, 0xC4, 0xFE, 0x00, - 0xB6, 0x6C, 0xD2, 0x55, 0xA8, 0xB6, 0xF1, 0x44, 0x43, 0x07, 0x53, 0x38, - 0x12, 0xD3, 0xA3, 0x25, 0x76, 0x13, 0x7E, 0x81, 0x39, 0xAB, 0x87, 0x90, - 0x15, 0xEC, 0x81, 0xC4, 0x37, 0x08, 0x18, 0xDC, 0xED, 0xE5, 0xF0, 0xA5, - 0x68, 0x41, 0x52, 0x92, 0xFA, 0x53, 0x70, 0xF6, 0xA0, 0xDC, 0xEF, 0xCF, - 0x6C, 0x3F, 0xDE, 0x72, 0x33, 0x3F, 0x43, 0x84, 0xB0, 0xA0, 0xC5, 0xEF, - 0x1B, 0x45, 0x63, 0x00, 0x6B, 0xDA, 0x3E, 0xCD, 0x84, 0x19, 0xD4, 0xD9, - 0x0D, 0x8C, 0x27, 0xF0, 0x6E, 0xA2, 0x03, 0xD5, 0xFD, 0xD7, 0x8F, 0x43, - 0x46, 0x5E, 0x38, 0x91, 0x7B, 0x2E, 0xB8, 0x65, 0xCD, 0x16, 0xC2, 0xB9, - 0x50, 0x97, 0x1C, 0xAF, 0x3A, 0xE0, 0xA9, 0x44, 0xE7, 0xF6, 0x5E, 0x40, - 0x41, 0x55, 0xDD, 0x05, 0xD9, 0xFC, 0x50, 0xB1, 0x1D, 0x51, 0xEE, 0xB0, - 0x8A, 0x52, 0x38, 0x77, 0x59, 0x36, 0xDE, 0xB2, 0xB9, 0x28, 0x07, 0xE0, - 0xC8, 0x44, 0x80, 0x6D, 0x91, 0x72, 0x65, 0xD8, 0xC6, 0xA2, 0xFF, 0xF6, - 0x61, 0x37, 0x22, 0x1B, 0x98, 0x65, 0xF9, 0x96, 0xDB, 0xF9, 0x33, 0xE7, - 0xAE, 0x25, 0x07, 0xC2, 0x01, 0x54, 0xF3, 0xA3, 0xFD, 0xC8, 0x25, 0x8E, - 0x7B, 0x7F, 0x49, 0xD1, 0x55, 0xA3, 0x17, 0x58, 0x53, 0xF0, 0x0F, 0xCA, - 0x1F, 0x6D, 0xEF, 0x28, 0x46, 0x0B, 0x35, 0x21, 0x66, 0x6C, 0x4F, 0x01, - 0x79, 0x92, 0xD2, 0x16, 0x3C, 0x2C, 0xBE, 0x88, 0x2E, 0x09, 0xC3, 0x8E, - 0x8E, 0x62, 0x0F, 0x5E, 0x4D, 0x3C, 0x0C, 0xFE, 0x02, 0x1A, 0x02, 0xB1, - 0xF4, 0x86, 0xCA, 0x17, 0x0E, 0x57, 0x00, 0x35, 0x6C, 0xA6, 0xBF, 0x29, - 0x35, 0x24, 0x78, 0x30, 0x90, 0xF3, 0xBE, 0x0B, 0x9D, 0x88, 0x79, 0x14, - 0x92, 0x32, 0x8F, 0xA0, 0xC1, 0xF7, 0x98, 0xFA, 0x9B, 0x62, 0x70, 0x84, - 0xA6, 0x5A, 0xA6, 0x03, 0xD0, 0x9F, 0xE9, 0x6A, 0x9F, 0x3A, 0xD4, 0xB7, - 0xE2, 0x83, 0x6A, 0x5B, 0x94, 0x44, 0x01, 0x99, 0x2F, 0x7F, 0x59, 0xA9, - 0xF2, 0xAD, 0x74, 0x15, 0xC7, 0x31, 0x22, 0x13, 0x76, 0xF4, 0x3D, 0x4A, - 0x07, 0xA7, 0xC0, 0x89, 0xFC, 0x7A, 0x83, 0x6D, 0xB1, 0xF8, 0xA3, 0x1F, - 0xB9, 0x3B, 0xCC, 0x81, 0x32, 0x37, 0x65, 0x46, 0x2D, 0xAF, 0x9A, 0x4E, - 0x96, 0x14, 0x3D, 0x57, 0x9C, 0xF1, 0x92, 0xB3, 0x0E, 0x54, 0x4F, 0xF0, - 0xA0, 0x70, 0x66, 0x65, 0x36, 0x8D, 0x11, 0xD0, 0xBD, 0xD6, 0xEB, 0x49, - 0x76, 0x79, 0xB4, 0xB7, 0x91, 0xAA, 0x21, 0x2D, 0xBA, 0x19, 0x1C, 0xDC, - 0x90, 0x16, 0xEC, 0xB7, 0x09, 0xFF, 0x1F, 0xC8, 0xE5, 0x75, 0xDB, 0x42, - 0x35, 0x53, 0x07, 0x77, 0x1F, 0x0C, 0xA3, 0x77, 0xD0, 0xCA, 0xDE, 0xC5, - 0xB8, 0x15, 0xA6, 0xAB, 0x5E, 0x2B, 0xC9, 0x3A, 0x1B, 0xDC, 0xDB, 0x4F, - 0x1C, 0xA7, 0xF7, 0xD7, 0xBF, 0x27, 0x07, 0x0C, 0xF7, 0xFD, 0x64, 0xF1, - 0xA1, 0x89, 0x50, 0xE8, 0xA5, 0x94, 0x12, 0xBC, 0x0B, 0x82, 0x3A, 0xDB, - 0xE4, 0xCC, 0x8C, 0x61, 0x5D, 0xB6, 0xD0, 0x38, 0xC6, 0xF2, 0xE3, 0xE8, - 0x6E, 0xDE, 0xA8, 0x5E, 0x13, 0x05, 0x08, 0x17, 0x1F, 0xE5, 0x04, 0x51, - 0x7E, 0xB8, 0x67, 0x55, 0xEA, 0x3F, 0x09, 0x53, 0xE0, 0x02, 0xD4, 0xD7, - 0xE5, 0x4B, 0x71, 0x0C, 0x28, 0xF0, 0x84, 0x9A, 0x3C, 0x5E, 0x3D, 0xA2, - 0x79, 0xDE, 0x75, 0x8B, 0xCF, 0xA6, 0x69, 0xDC, 0xAB, 0x13, 0x92, 0xFE, - 0xDA, 0xEC, 0x89, 0x7C, 0x88, 0x66, 0x94, 0x14, 0xD2, 0xDB, 0xCC, 0x5E, - 0x5D, 0x5D, 0xD6, 0x64, 0x85, 0x17, 0x9A, 0x48, 0xD3, 0xCC, 0xD7, 0x4C, - 0x43, 0x40, 0x13, 0x56, 0x3C, 0x27, 0x28, 0xDB, 0xDF, 0xF9, 0x7D, 0x10, - 0xE5, 0xB4, 0xAB, 0x62, 0x79, 0x08, 0xFA, 0x9E, 0xCE, 0xB2, 0x92, 0x27, - 0x05, 0x8F, 0x6C, 0x7B, 0xCD, 0xC6, 0xAD, 0x7A, 0xBD, 0x89, 0x04, 0x21, - 0x32, 0x52, 0xF8, 0x5B, 0xB1, 0x53, 0x5C, 0x0B, 0x43, 0x0E, 0xD2, 0x2D, - 0x13, 0xC9, 0xFD, 0x33, 0xB7, 0x5D, 0x91, 0xC5, 0xC8, 0x33, 0xB8, 0xDD, - 0x29, 0x9D, 0x5D, 0xC4, 0x5A, 0xF9, 0x4A, 0x1A, 0xAF, 0x3F, 0x40, 0x0D, - 0x53, 0x64, 0x85, 0x51, 0xC4, 0xCD, 0xA3, 0x2E, 0x68, 0x57, 0xFD, 0x4E, - 0xF6, 0x43, 0x8F, 0x7D, 0x2E, 0x3D, 0x44, 0x14, 0xB0, 0xF1, 0xB3, 0x65, - 0x95, 0x3E, 0x20, 0xE1, 0x19, 0xCC, 0xFB, 0x54, 0xA7, 0x89, 0x7F, 0xF4, - 0xD7, 0x4D, 0x61, 0x00, 0xA0, 0x9C, 0x97, 0x03, 0xA0, 0x0E, 0x95, 0xCD, - 0xF4, 0xF5, 0xF9, 0xCA, 0x2E, 0x3F, 0x23, 0x86, 0xFE, 0xCF, 0xAA, 0x70, - 0x26, 0x8E, 0x80, 0x7F, 0xBC, 0x71, 0x16, 0x40, 0x92, 0x4D, 0xB3, 0xF7, - 0x82, 0x55, 0x60, 0x20, 0xA2, 0x79, 0x88, 0x55, 0x52, 0xD2, 0xD8, 0x62, - 0x1B, 0x4B, 0xBD, 0x3D, 0x95, 0x35, 0x3B, 0x90, 0x98, 0xE5, 0x90, 0x83, - 0xB9, 0x68, 0xF0, 0xD3, 0xFF, 0x20, 0xB9, 0x19, 0xCB, 0xE1, 0xD6, 0x30, - 0x69, 0xDF, 0xEB, 0x59, 0xDF, 0x89, 0x77, 0xD1, 0x49, 0x8C, 0x5A, 0x4E, - 0x8D, 0xD9, 0x63, 0xAF, 0xAA, 0x2E, 0xF1, 0x93, 0x9C, 0xAA, 0xB2, 0x7D, - 0x6C, 0x2C, 0x69, 0x1E, 0xDA, 0x9C, 0x24, 0xAA, 0x56, 0x66, 0x19, 0x03, - 0xBE, 0x21, 0x9D, 0xF4, 0x36, 0x65, 0x5A, 0x02, 0x6B, 0x91, 0x41, 0xF7, - 0x07, 0x68, 0x26, 0xEA, 0x33, 0x1A, 0x79, 0x9D, 0xEF, 0x7A, 0xAF, 0x9B, - 0x66, 0x8B, 0xA2, 0xA7, 0x8C, 0x17, 0x33, 0xA0, 0x64, 0x2D, 0x3E, 0x84, - 0xBC, 0x13, 0x74, 0x52, 0xF9, 0x25, 0x22, 0x67, 0x9A, 0xC3, 0x8C, 0x04, - 0x56, 0x66, 0xD6, 0x55, 0xB7, 0xF5, 0x50, 0xDC, 0x22, 0xB6, 0x0D, 0x80, - 0x49, 0xD9, 0xC8, 0x48, 0x3C, 0xEB, 0x37, 0x42, 0x9E, 0x2F, 0xE4, 0xD5, - 0xA3, 0xD5, 0xBF, 0xD9, 0xBC, 0x3D, 0x99, 0x03, 0xBE, 0x0C, 0x53, 0x18, - 0x93, 0x0D, 0xCE, 0x59, 0xB4, 0x08, 0xFA, 0x93, 0x93, 0xAD, 0xEC, 0x24, - 0xC1, 0x76, 0x07, 0x06, 0xFB, 0x78, 0x93, 0x40, 0xB0, 0x40, 0x7C, 0xBA, - 0x4E, 0xBE, 0x93, 0x04, 0xD5, 0xF6, 0x6D, 0x72, 0x84, 0x09, 0x2D, 0x8A, - 0x5C, 0x86, 0xF3, 0xC0, 0x6B, 0x53, 0xE6, 0xDD, 0xA0, 0x34, 0x41, 0x2B, - 0x46, 0x7C, 0xE3, 0x76, 0x32, 0xD3, 0x3A, 0x8C, 0x46, 0x9C, 0x98, 0xFF, - 0x3D, 0x5F, 0xD5, 0xB0, 0xA1, 0xF2, 0x0A, 0xAE, 0x52, 0x3D, 0xD1, 0x71, - 0xBA, 0x5B, 0x09, 0xB4, 0x52, 0x65, 0xE8, 0x15, 0x80, 0xD5, 0x59, 0x68, - 0x68, 0xEC, 0x2B, 0x80, 0x72, 0xDA, 0xCB, 0xEB, 0x68, 0xBC, 0x68, 0xD0, - 0x19, 0xBC, 0x5E, 0xED, 0x1F, 0x80, 0x8F, 0xD1, 0x76, 0x44, 0x46, 0x6E, - 0xD9, 0x78, 0x91, 0xED, 0x71, 0x9B, 0x4A, 0xCF, 0x1B, 0x1D, 0xDE, 0xC2, - 0x4A, 0xEC, 0xF1, 0x2E, 0xC0, 0xC3, 0xEA, 0x7E, 0x76, 0x1F, 0x74, 0xCE, - 0x9D, 0xF1, 0x6B, 0x94, 0x21, 0x06, 0x00, 0x58, 0x1E, 0x37, 0x6B, 0xFB, - 0xB6, 0x45, 0xB4, 0x71, 0x35, 0x74, 0x20, 0x83, 0xA1, 0xD8, 0x3A, 0x1F, - 0xA4, 0x17, 0x71, 0xEB, 0x10, 0x93, 0xD0, 0xD7, 0x6C, 0xD2, 0x43, 0xF2, - 0xF3, 0x66, 0xC1, 0x55, 0x07, 0x00, 0x54, 0xA1, 0x4A, 0x4E, 0x55, 0xD9, - 0x9D, 0x1D, 0xB0, 0x3F, 0x2E, 0x60, 0xF1, 0x5F, 0x30, 0x1E, 0x66, 0xD8, - 0xE9, 0xCD, 0x99, 0x0B, 0x72, 0x35, 0x99, 0x55, 0x1E, 0x4A, 0xD7, 0xA3, - 0x02, 0x87, 0x27, 0x76, 0x5A, 0x8D, 0xBC, 0x3D, 0xAA, 0xD6, 0xDA, 0xFA, - 0x43, 0xE7, 0xD4, 0xCD, 0x92, 0xF0, 0xAB, 0xEB, 0x9F, 0xD2, 0xC8, 0xA4, - 0x3A, 0xF6, 0x1F, 0xAE, 0xBC, 0x79, 0xDD, 0xDD, 0x98, 0xE6, 0xA5, 0x11, - 0x53, 0x35, 0x24, 0xEE, 0x55, 0xC6, 0x86, 0x17, 0x55, 0x57, 0x8A, 0xCB, - 0xAC, 0x9B, 0xA3, 0xBA, 0x25, 0x24, 0xB6, 0x14, 0xC2, 0x42, 0xB2, 0xDE, - 0x42, 0x0A, 0x23, 0x58, 0xCE, 0xBF, 0x21, 0x2A, 0xDB, 0xF1, 0xBD, 0x78, - 0xD4, 0x18, 0xCC, 0xFE, 0x49, 0xAE, 0x04, 0xD7, 0x94, 0x58, 0x71, 0x6E, - 0x8F, 0x3B, 0xE1, 0xBF, 0x6A, 0x9C, 0x73, 0x88, 0x9D, 0xD7, 0xAB, 0x7C, - 0xE6, 0xAC, 0x31, 0xFB, 0xB0, 0x80, 0xD7, 0x47, 0x8E, 0x32, 0x81, 0x61, - 0xCF, 0xCF, 0x41, 0x2B, 0xA8, 0x84, 0x2D, 0x4F, 0x64, 0x89, 0xC3, 0xC8, - 0xEE, 0xFA, 0xF5, 0x6E, 0xB9, 0x62, 0x38, 0xBC, 0xBA, 0xFF, 0x26, 0x75, - 0xB4, 0xF3, 0x34, 0xB4, 0x94, 0xD1, 0x31, 0x57, 0x87, 0xDF, 0x93, 0xBC, - 0x27, 0xE5, 0x34, 0xEF, 0xF5, 0x50, 0xD1, 0x52, 0x53, 0x36, 0xAD, 0x7F, - 0xF1, 0x7A, 0x0C, 0xAB, 0x29, 0x17, 0x0A, 0xD4, 0xD1, 0x18, 0xA0, 0xC5, - 0xD9, 0xC9, 0xFB, 0xC6, 0x08, 0x47, 0xD8, 0x2D, 0x8B, 0xA6, 0x06, 0xA0, - 0xC1, 0xF3, 0xF4, 0x50, 0x65, 0x0F, 0xF2, 0x1B, 0x04, 0x48, 0x3E, 0x9B, - 0xC4, 0x70, 0x6A, 0xCC, 0xE6, 0x7C, 0x6D, 0x1F, 0x3F, 0x3B, 0x5B, 0xBE, - 0x87, 0x60, 0x31, 0x09, 0x3F, 0xF6, 0x37, 0xF3, 0xD9, 0xB8, 0x13, 0x20, - 0x38, 0x41, 0xF1, 0xF5, 0xE1, 0x2A, 0xDB, 0x33, 0xE4, 0xFA, 0xCE, 0x15, - 0xA0, 0x9D, 0x59, 0x2C, 0x05, 0x92, 0xC0, 0x87, 0xBE, 0x3C, 0x21, 0x53, - 0xEF, 0xF8, 0x63, 0xB5, 0x7F, 0x67, 0x7A, 0xA3, 0x5E, 0x76, 0x75, 0x79, - 0x90, 0x15, 0xA8, 0x8B, 0x06, 0xB4, 0x91, 0x6B, 0xDE, 0x37, 0x0D, 0x31, - 0x40, 0xE1, 0x7E, 0xC4, 0x1F, 0x00, 0xDD, 0xBA, 0x62, 0x00, 0xEA, 0x90, - 0xE5, 0xF2, 0xEE, 0x71, 0x2E, 0x1C, 0xA3, 0xFA, 0xBA, 0x9C, 0x64, 0xFF, - 0x11, 0x07, 0xD2, 0xE7, 0x00, 0xF1, 0x08, 0xAA, 0x8E, 0x1A, 0x55, 0x29, - 0xFB, 0xFB, 0x17, 0x11, 0xC7, 0xA3, 0xA0, 0x7D, 0x10, 0x4E, 0x02, 0xFA, - 0xBB, 0x12, 0x3D, 0x74, 0xA2, 0x84, 0xE7, 0xBD, 0x78, 0x77, 0x1E, 0x97, - 0xC9, 0x33, 0x2B, 0x19, 0x5B, 0x5D, 0xDD, 0xF2, 0xE1, 0xD6, 0xB3, 0x08, - 0x0D, 0xE0, 0x56, 0x71, 0x9D, 0xE2, 0x0C, 0xB9, 0x60, 0xC4, 0x0C, 0x90, - 0x54, 0x07, 0xDC, 0x03, 0x92, 0xC6, 0x20, 0x38, 0x3D, 0x3D, 0xC5, 0xC9, - 0xF6, 0x02, 0x84, 0x7D, 0x84, 0x5C, 0x6A, 0x60, 0xE5, 0xEF, 0xBC, 0x54, - 0x71, 0x0C, 0xD3, 0xF7, 0xED, 0x3D, 0x76, 0x0F, 0x19, 0x15, 0x50, 0x53, - 0xB4, 0x81, 0x8D, 0x0E, 0xCF, 0xA1, 0x59, 0x8D, 0xEF, 0xF2, 0x29, 0x21, - 0xF2, 0x64, 0xCE, 0x9C, 0xE2, 0x96, 0x4A, 0x0C, 0x1B, 0x71, 0x7A, 0x72, - 0x45, 0x24, 0x68, 0xC7, 0xD0, 0x6B, 0xD2, 0x3B, 0x5B, 0x16, 0xEC, 0xFE, - 0x40, 0x84, 0x72, 0xD7, 0x35, 0x7C, 0xA8, 0x80, 0x8C, 0xBA, 0xDA, 0x56, - 0xA3, 0xA9, 0xC1, 0xCC, 0x98, 0x6C, 0x20, 0x42, 0xBB, 0xB7, 0x1B, 0x0C, - 0xCF, 0x98, 0x77, 0x71, 0x07, 0x1D, 0xDA, 0x66, 0xA3, 0xD7, 0xE1, 0x2F, - 0xB0, 0x70, 0x7B, 0x53, 0xA9, 0x80, 0x76, 0x16, 0x4E, 0xB3, 0x82, 0x0A, - 0x33, 0xD0, 0x30, 0x2F, 0x76, 0x89, 0x80, 0x76, 0x25, 0x85, 0xA1, 0x29, - 0x97, 0xFA, 0xE3, 0xAE, 0x6E, 0x44, 0xBD, 0xA2, 0x6A, 0xA5, 0xCA, 0x9C, - 0x13, 0x7A, 0xAE, 0x51, 0x8D, 0x7C, 0xC8, 0xE1, 0xE6, 0xA8, 0x36, 0x01, - 0x34, 0x1D, 0xA6, 0x40, 0x93, 0xF2, 0x2F, 0x7F, 0xCD, 0x29, 0xB5, 0x5B, - 0x15, 0xEE, 0x59, 0x63, 0xE6, 0xD7, 0x77, 0xBB, 0x77, 0x0A, 0x25, 0x4D, - 0xF3, 0x9D, 0x23, 0x0C, 0xD4, 0x6D, 0xBB, 0x11, 0x96, 0x4E, 0x96, 0x15, - 0xDE, 0xFE, 0xE6, 0x1A, 0xD2, 0x10, 0xE2, 0xA4, 0x6B, 0x2F, 0x99, 0xB5, - 0xFA, 0xAC, 0xC5, 0xB6, 0x90, 0xFA, 0x6C, 0x90, 0x16, 0x45, 0xB6, 0x93, - 0x71, 0x6B, 0x80, 0xE1, 0x9C, 0x65, 0x0D, 0x05, 0x84, 0xB0, 0x1B, 0xAC, - 0x4E, 0xAE, 0x6A, 0x42, 0x80, 0xF5, 0xD7, 0xAA, 0x43, 0x93, 0xE1, 0x3E, - 0x51, 0x71, 0x5B, 0x6E, 0xA7, 0x9F, 0x56, 0x9A, 0xFC, 0xFD, 0x3B, 0xA5, - 0x07, 0x7C, 0xF6, 0x65, 0x22, 0xEA, 0x8E, 0x52, 0xAA, 0x51, 0x5A, 0x41, - 0x4A, 0x19, 0x7F, 0x92, 0x18, 0x0C, 0x04, 0x6A, 0xFB, 0x23, 0x30, 0xEC, - 0xF5, 0x5B, 0x4E, 0xEA, 0xE8, 0x4D, 0x3D, 0x87, 0xAE, 0xE7, 0x7C, 0x9A, - 0x9F, 0xC0, 0xAC, 0xB8, 0x28, 0xC2, 0xC8, 0x9D, 0xB9, 0x45, 0x9E, 0x4C, - 0xC6, 0x7F, 0x34, 0x15, 0x2F, 0x58, 0xE5, 0x10, 0x75, 0x5A, 0x44, 0xB2, - 0xB6, 0x2B, 0xF5, 0x1D, 0x8F, 0xF7, 0xD8, 0xF5, 0xB2, 0xF5, 0xAA, 0x88, - 0x16, 0xD0, 0x26, 0xF4, 0x32, 0xFC, 0x8E, 0x60, 0xE7, 0x41, 0x6F, 0x9A, - 0xCA, 0x51, 0x8E, 0x45, 0xF6, 0x39, 0xFF, 0x8C, 0x48, 0x61, 0x40, 0xE1, - 0xC9, 0x45, 0x82, 0x04, 0xEF, 0xB2, 0x59, 0x30, 0xA4, 0x2C, 0x62, 0xD9, - 0x2D, 0xDD, 0xAB, 0xAD, 0x18, 0x81, 0x19, 0x81, 0xCA, 0xCA, 0x75, 0xB3, - 0xD0, 0x37, 0x0F, 0xE9, 0x5D, 0x54, 0x8E, 0x0B, 0xB2, 0x55, 0x2A, 0x98, - 0xC0, 0x75, 0x5A, 0xEB, 0x9D, 0x11, 0x3F, 0x20, 0xE2, 0x3E, 0xB0, 0xB7, - 0xCA, 0xB1, 0xD8, 0x30, 0x66, 0x4C, 0xBC, 0xEA, 0x8F, 0x76, 0x30, 0xC4, - 0x9D, 0x03, 0x21, 0x93, 0xEF, 0x54, 0x06, 0xEC, 0x93, 0xFA, 0x89, 0x48, - 0xC7, 0x9C, 0x06, 0x22, 0x77, 0xBD, 0xD1, 0x5E, 0xCF, 0x60, 0xD6, 0xA5, - 0x17, 0x9A, 0x75, 0x50, 0xF3, 0x97, 0xD4, 0x8E, 0xE3, 0x17, 0x41, 0xFD, - 0xC0, 0x3B, 0xBB, 0x8A, 0xA7, 0x2B, 0x98, 0xF6, 0xBD, 0xE7, 0x14, 0x2D, - 0xE9, 0xEF, 0xC9, 0x0B, 0x6E, 0xCC, 0xE3, 0x17, 0xF3, 0xB8, 0xDF, 0x06, - 0x3A, 0xE1, 0xB3, 0x58, 0x22, 0x3D, 0xEF, 0xEA, 0xBA, 0xF1, 0x9D, 0x4F, - 0xDB, 0xCC, 0x0C, 0xED, 0x57, 0x39, 0x80, 0x3A, 0x3B, 0xBC, 0xEE, 0x29, - 0x04, 0x34, 0xA5, 0x08, 0xE9, 0xDF, 0x96, 0xD3, 0x53, 0xC5, 0x4E, 0xF6, - 0x38, 0xAD, 0xCA, 0x53, 0x77, 0x59, 0xF1, 0x80, 0x9F, 0xA8, 0xB6, 0xDA, - 0x5A, 0x56, 0xAA, 0x84, 0x6C, 0x0E, 0xA8, 0xB2, 0x10, 0x37, 0xC8, 0x6A, - 0xD8, 0x4D, 0x78, 0xAE, 0x36, 0xD0, 0xDC, 0xE7, 0x1D, 0x8E, 0x57, 0xAC, - 0xDD, 0x15, 0xAB, 0xB5, 0x30, 0x3C, 0xE7, 0xE6, 0x51, 0xD3, 0x26, 0xF6, - 0x13, 0x1D, 0xC8, 0xFC, 0x28, 0x83, 0x5E, 0x64, 0xA6, 0xCA, 0xA7, 0x67, - 0xE6, 0x34, 0x19, 0x66, 0xC8, 0x07, 0xB6, 0x74, 0xB2, 0x59, 0xAE, 0xDA, - 0x36, 0x3F, 0x1F, 0xF6, 0x81, 0xEB, 0xC7, 0xB3, 0x6D, 0x1F, 0x87, 0xA8, - 0x90, 0x37, 0xD5, 0x85, 0xC3, 0x17, 0xC5, 0xE5, 0xE8, 0xCE, 0x83, 0xB5, - 0x73, 0x49, 0xA7, 0x2B, 0x91, 0x28, 0x2D, 0x2A, 0xC2, 0x22, 0xA7, 0x31, - 0x18, 0xA6, 0xA4, 0x8C, 0x45, 0x68, 0xA5, 0x95, 0xA4, 0x91, 0xA3, 0xEE, - 0x4E, 0x2D, 0xE7, 0xEB, 0x20, 0x8E, 0xE5, 0xF6, 0x9E, 0x53, 0x15, 0xCE, - 0xA9, 0x21, 0x18, 0xE3, 0x9B, 0x75, 0x32, 0x02, 0x3D, 0xFC, 0x2C, 0x9D, - 0x85, 0x6A, 0xB2, 0xB9, 0x5D, 0x3A, 0xD1, 0x85, 0xFB, 0xD8, 0xB8, 0x8B, - 0x48, 0x09, 0xD3, 0xFD, 0xED, 0x11, 0xAA, 0x90, 0xB5, 0x25, 0xC8, 0xB9, - 0xA5, 0x49, 0xE9, 0x1E, 0xD0, 0x43, 0xBA, 0x7A, 0x49, 0xB7, 0xE3, 0x87, - 0xBE, 0xE0, 0xF4, 0x83, 0xDA, 0x82, 0x4F, 0x9E, 0xC1, 0x55, 0x57, 0xF2, - 0x58, 0x20, 0x63, 0xCF, 0x2C, 0x34, 0x61, 0x6C, 0x15, 0xEF, 0x11, 0xB3, - 0x7E, 0xA6, 0x13, 0xD9, 0x2F, 0xD1, 0xAD, 0x61, 0xDE, 0x69, 0xB9, 0x9D, - 0x1A, 0x24, 0x72, 0x5D, 0x4E, 0xA0, 0xB4, 0x7E, 0xE9, 0x14, 0x77, 0x4C, - 0xD6, 0xAE, 0xF6, 0x35, 0x69, 0x2D, 0x28, 0x98, 0x29, 0x73, 0xDE, 0x1D, - 0x3D, 0x10, 0x50, 0x8C, 0x55, 0x3D, 0x27, 0x89, 0x57, 0x1F, 0x7B, 0x62, - 0xD9, 0x12, 0xF7, 0x8D, 0xD3, 0x0F, 0x6B, 0x98, 0x6A, 0x64, 0xF7, 0x62, - 0xFB, 0x69, 0x6D, 0x14, 0xF1, 0xF5, 0x6D, 0x5E, 0xC1, 0x79, 0x3C, 0x1D, - 0xDE, 0x45, 0x95, 0xE4, 0x10, 0x70, 0x68, 0x78, 0x0F, 0x70, 0xBE, 0xAC, - 0xFE, 0xD3, 0x6E, 0x5B, 0x9F, 0x7E, 0x2C, 0xD3, 0x0E, 0xC2, 0x6A, 0x96, - 0x4D, 0x11, 0xEA, 0x62, 0x6F, 0xAC, 0xAB, 0xE7, 0x8E, 0x0F, 0xC4, 0xFB, - 0x23, 0x06, 0x7E, 0x0A, 0x87, 0x8E, 0x8D, 0xA8, 0xE9, 0x90, 0x2D, 0xA2, - 0xBF, 0x0B, 0x4C, 0x4C, 0x91, 0xE1, 0x7F, 0x55, 0x7C, 0x01, 0x94, 0xE3, - 0xA1, 0x08, 0xA0, 0x52, 0x8A, 0x2B, 0x0F, 0x5D, 0xD5, 0x70, 0x5F, 0x65, - 0x1C, 0xB9, 0x9B, 0x0C, 0x2B, 0xD6, 0x8E, 0x95, 0x29, 0x6C, 0x69, 0x63, - 0xEA, 0x50, 0xB1, 0x2F, 0xAE, 0x06, 0x14, 0xDD, 0x44, 0x38, 0x59, 0xF4, - 0x35, 0xC6, 0x5B, 0xE9, 0xA8, 0x42, 0x10, 0xB1, 0x3C, 0x56, 0x76, 0x33, - 0x81, 0x88, 0x9D, 0x5B, 0x71, 0xEB, 0xA8, 0x78, 0xA2, 0xC6, 0x37, 0x3E, - 0x75, 0xDB, 0x4F, 0xB5, 0xE6, 0x9E, 0x53, 0x6C, 0x66, 0x65, 0x4C, 0x9F, - 0xF7, 0x52, 0x7A, 0x24, 0x5B, 0x1C, 0xD1, 0x6B, 0xFE, 0xD4, 0x05, 0x22, - 0x5D, 0x4A, 0x85, 0x88, 0x82, 0xF6, 0xF7, 0x25, 0xF5, 0xED, 0xF0, 0xCC, - 0x47, 0xDE, 0x79, 0x9A, 0x88, 0xBE, 0xA1, 0x94, 0xF1, 0x4E, 0x2C, 0xFA, - 0x8C, 0xE5, 0xE0, 0x8C, 0xA1, 0x86, 0xFF, 0x2B, 0x0A, 0x84, 0x1C, 0xBB, - 0x38, 0x49, 0x94, 0x33, 0xBD, 0xBA, 0xAB, 0x8B, 0x66, 0x6D, 0x2C, 0x08, - 0x78, 0x21, 0xB7, 0xDF, 0xAD, 0x17, 0x23, 0xCF, 0x42, 0x4E, 0xBD, 0x4F, - 0x1B, 0x50, 0x9A, 0x55, 0x60, 0x1D, 0x1D, 0x52, 0xAC, 0x3A, 0x70, 0x8E, - 0x20, 0x4C, 0x74, 0x7F, 0xBE, 0xC1, 0xFB, 0xF7, 0x0E, 0x03, 0x90, 0x36, - 0x25, 0x08, 0x10, 0xAD, 0x02, 0xAB, 0x0E, 0xD0, 0x3E, 0xA3, 0xF8, 0x8D, - 0x06, 0x73, 0x09, 0x07, 0x81, 0x1B, 0x07, 0x15, 0x56, 0x13, 0xB4, 0x5A, - 0xBD, 0x88, 0xB5, 0xA8, 0x64, 0xC2, 0x8C, 0x20, 0xDD, 0xA5, 0xD1, 0x3F, - 0x43, 0xEA, 0xD1, 0x64, 0x70, 0x78, 0x66, 0x0F, 0x14, 0xC8, 0x13, 0x30, - 0x74, 0xEE, 0x2D, 0x8C, 0xD3, 0x39, 0x3B, 0xDA, 0x21, 0x64, 0x66, 0x0E, - 0xC0, 0xC2, 0xCF, 0xF9, 0x27, 0xDD, 0x95, 0xDC, 0xA7, 0x2A, 0x72, 0xE2, - 0x2C, 0x60, 0x6F, 0x93, 0x45, 0x36, 0x58, 0x7B, 0xD2, 0x47, 0x88, 0xDF, - 0xCD, 0xD7, 0x76, 0xEC, 0xA6, 0x2C, 0xE4, 0x5E, 0xD9, 0x74, 0xBD, 0x06, - 0xC7, 0xBD, 0xBB, 0x09, 0x87, 0x97, 0x2E, 0x2B, 0x55, 0x48, 0xC1, 0xCD, - 0x58, 0xB0, 0x33, 0x31, 0xD8, 0x19, 0x56, 0x4A, 0x57, 0x33, 0xEA, 0x86, - 0xA7, 0x68, 0x2A, 0xBB, 0x15, 0xC9, 0xB5, 0x9C, 0xCE, 0x77, 0x82, 0xD5, - 0x56, 0xE2, 0x8C, 0xA0, 0xC3, 0x86, 0x0A, 0x61, 0xE4, 0xF8, 0xF6, 0x1F, - 0xA6, 0xE1, 0xD7, 0x96, 0xC9, 0xD7, 0xD7, 0x12, 0xB8, 0x2E, 0xFB, 0x31, - 0x8D, 0xFA, 0x13, 0x4C, 0xE7, 0x82, 0x90, 0xBC, 0x41, 0xA5, 0x9B, 0x55, - 0x24, 0xF5, 0xCE, 0xA6, 0x3D, 0x24, 0xCF, 0xB1, 0x66, 0xF9, 0x51, 0x2C, - 0x86, 0xCD, 0x67, 0x82, 0x3F, 0xA9, 0x29, 0x6B, 0x33, 0x00, 0xD2, 0xBB, - 0x75, 0x12, 0xEC, 0x8F, 0x0E, 0x45, 0x2A, 0x5C, 0x2D, 0x79, 0xC8, 0xFD, - 0x84, 0xE8, 0x29, 0x61, 0x73, 0xFF, 0x9F, 0xB3, 0x23, 0x9C, 0xD5, 0x56, - 0x47, 0x72, 0x71, 0xF3, 0x69, 0xC5, 0xD5, 0x48, 0x6B, 0x12, 0xBF, 0x93, - 0xB0, 0x2F, 0x6F, 0x31, 0xF6, 0xCD, 0x53, 0xAB, 0x9F, 0xA3, 0x61, 0x60, - 0x09, 0x44, 0x27, 0x18, 0x75, 0x90, 0xFA, 0x72, 0x77, 0xC9, 0xC7, 0xFC, - 0x2F, 0x37, 0x9A, 0xC2, 0x94, 0xE9, 0xE0, 0x55, 0x44, 0x15, 0x8A, 0xFC, - 0xE2, 0x68, 0x93, 0x69, 0x68, 0x79, 0xC3, 0x49, 0xF7, 0x6B, 0xCA, 0xE3, - 0xF4, 0x51, 0xDB, 0x05, 0x66, 0xBF, 0x95, 0x80, 0x9B, 0xEA, 0xED, 0xE7, - 0x9A, 0xB6, 0xFF, 0xA1, 0xBB, 0x2D, 0x4B, 0xF9, 0xD1, 0xAC, 0x8C, 0x1B, - 0x8A, 0xF5, 0xEE, 0x37, 0xDF, 0xC8, 0xEA, 0x73, 0x23, 0x74, 0xAE, 0xCE, - 0x5F, 0x9B, 0x08, 0x3D, 0xD9, 0x40, 0xF2, 0x0B, 0x0D, 0x0D, 0x8D, 0x6D, - 0x5C, 0xAB, 0x7B, 0xB3, 0x12, 0x7E, 0xA1, 0xD5, 0xEA, 0xD5, 0xA8, 0x13, - 0xF9, 0x71, 0xE2, 0x3A, 0x5B, 0x35, 0x8C, 0x7A, 0x6F, 0x52, 0xB0, 0xB8, - 0x0F, 0x78, 0x30, 0xF3, 0xD5, 0x8A, 0x93, 0xF6, 0x24, 0x75, 0xBE, 0x18, - 0xB1, 0x81, 0x6A, 0xC3, 0xCC, 0x5B, 0x23, 0x55, 0x9D, 0xEB, 0x5F, 0x25, - 0x76, 0x5C, 0xCD, 0x9E, 0x58, 0x12, 0xFD, 0x49, 0xC5, 0x46, 0xD3, 0x5D, - 0x45, 0xAD, 0xCD, 0xC1, 0x4A, 0xA2, 0x7B, 0xF7, 0x5D, 0x13, 0x97, 0xCF, - 0xB4, 0x94, 0xAA, 0xCD, 0xC9, 0xDC, 0x9C, 0xE4, 0xB1, 0x67, 0xE1, 0x7D, - 0x11, 0x64, 0x2E, 0x13, 0x59, 0x70, 0xB9, 0x27, 0x33, 0x77, 0xB7, 0xC1, - 0xA6, 0x54, 0xAA, 0x43, 0x94, 0xA1, 0x06, 0xA4, 0xDE, 0x8F, 0x0A, 0x9B, - 0xD5, 0x40, 0xBF, 0x7E, 0x69, 0xAA, 0x5C, 0x0A, 0xDC, 0x93, 0xFD, 0x05, - 0x04, 0x6F, 0x9D, 0x1F, 0x42, 0x7D, 0x2A, 0x60, 0x77, 0x87, 0xF4, 0x52, - 0xAB, 0xC3, 0xD5, 0x88, 0xF5, 0x89, 0xA0, 0xC7, 0x6A, 0x48, 0xB9, 0x75, - 0xE5, 0x39, 0x7A, 0x39, 0xC1, 0x25, 0xC6, 0xF8, 0xF6, 0x96, 0x7B, 0x0F, - 0x4B, 0xBC, 0x37, 0x46, 0x9D, 0xA7, 0xA5, 0xDD, 0x71, 0x99, 0xDA, 0x12, - 0x88, 0x18, 0x80, 0x04, 0xF9, 0x5B, 0xDE, 0x01, 0x2C, 0xA2, 0x97, 0xDF, - 0xC9, 0xC3, 0xC8, 0xAB, 0x18, 0x80, 0x3D, 0xDA, 0xD0, 0xD6, 0x9C, 0xDC, - 0xE6, 0xA1, 0x08, 0xD8, 0x63, 0xC0, 0x28, 0x6E, 0x61, 0x33, 0x3F, 0x44, - 0xD0, 0x8B, 0xB9, 0x4D, 0xB5, 0x99, 0x53, 0xE9, 0x20, 0x02, 0x2F, 0x40, - 0xD6, 0x16, 0x32, 0x1E, 0xE7, 0x6D, 0x20, 0xCA, 0x73, 0xC7, 0xCA, 0x3A, - 0x3C, 0x0C, 0xFE, 0xBB, 0xE8, 0xB4, 0x5F, 0x85, 0xA6, 0x33, 0x9C, 0x3D, - 0x4B, 0xD9, 0x94, 0xAA, 0x5D, 0x23, 0xDE, 0xC7, 0x8F, 0xDE, 0xF3, 0x94, - 0x54, 0x56, 0x36, 0x9A, 0x52, 0x18, 0x6A, 0x91, 0x0E, 0x00, 0xD4, 0x2F, - 0xBB, 0x2A, 0x2E, 0xEB, 0x11, 0x05, 0xA5, 0xB3, 0xA9, 0x9A, 0xB1, 0x96, - 0xAB, 0xBB, 0x5F, 0x55, 0x9F, 0x9E, 0xDB, 0x44, 0x44, 0xE7, 0x19, 0x2F, - 0x42, 0xAA, 0x66, 0xA1, 0x8E, 0xFC, 0x4F, 0xD5, 0xBC, 0x6C, 0x70, 0x65, - 0x05, 0x4F, 0x0A, 0xD4, 0xD1, 0x11, 0xA8, 0x24, 0x4A, 0xDD, 0x6C, 0x70, - 0xA4, 0x62, 0xC6, 0x17, 0xB1, 0x55, 0xF1, 0x2D, 0x7B, 0x3D, 0x8F, 0xF9, - 0xB6, 0x86, 0xEF, 0xD7, 0xF2, 0x70, 0x2C, 0xF0, 0x82, 0x3F, 0x2E, 0x05, - 0xC6, 0xFE, 0xD6, 0x14, 0xFA, 0x43, 0xCE, 0x3A, 0xD9, 0xC3, 0x18, 0x42, - 0xF8, 0xE3, 0x92, 0x59, 0x90, 0x5C, 0xE1, 0xBE, 0x30, 0x36, 0xEF, 0x15, - 0x9E, 0xFB, 0x1F, 0xD0, 0x82, 0xCF, 0x34, 0xB8, 0x44, 0xF3, 0x6C, 0x98, - 0x13, 0x9A, 0x25, 0xEC, 0xD7, 0x8C, 0x1B, 0x7D, 0x92, 0x91, 0xBB, 0x39, - 0xD9, 0x5C, 0x76, 0xBA, 0x5D, 0x8B, 0xA3, 0xF3, 0x48, 0x72, 0x7D, 0xAE, - 0x6E, 0x2B, 0x41, 0x6D, 0xCA, 0xDC, 0xBA, 0xD4, 0x01, 0x47, 0x5E, 0x92, - 0xDA, 0x8F, 0x06, 0xAF, 0xB5, 0x76, 0xDE, 0xA2, 0xC0, 0x64, 0x1A, 0xB3, - 0x5F, 0xA1, 0x16, 0xCF, 0x77, 0x48, 0x1E, 0x5C, 0x7F, 0xCD, 0x03, 0xA1, - 0x2F, 0x83, 0x8C, 0x1B, 0x6B, 0xFD, 0x9B, 0x67, 0x32, 0x7E, 0xBE, 0x9E, - 0xE0, 0x82, 0x75, 0x7E, 0xAC, 0xD7, 0x3F, 0x26, 0x53, 0xB8, 0x83, 0x15, - 0x16, 0x49, 0x70, 0x01, 0x6F, 0x22, 0x3D, 0x9B, 0x56, 0x61, 0x96, 0x59, - 0x05, 0x98, 0x0F, 0xA5, 0x76, 0x26, 0x5D, 0xFE, 0x92, 0x0E, 0xF4, 0xAC, - 0x73, 0x40, 0xEF, 0xEB, 0x56, 0x14, 0xCD, 0x8D, 0x94, 0x8E, 0x34, 0xBF, - 0x5B, 0xA0, 0xD0, 0xE3, 0xBA, 0xF3, 0x1F, 0x0D, 0x40, 0xD0, 0xE4, 0x53, - 0x00, 0xCB, 0x30, 0x4A, 0x8C, 0xA2, 0x95, 0xCC, 0xB0, 0x36, 0xE3, 0x51, - 0x19, 0x00, 0xBE, 0x86, 0x91, 0x7F, 0x15, 0x1B, 0xF1, 0x9D, 0x37, 0x9C, - 0x24, 0xCB, 0x7F, 0xFB, 0x96, 0x22, 0x49, 0xC0, 0x5F, 0x12, 0xE8, 0x97, - 0x00, 0xCB, 0x09, 0x2B, 0x10, 0x82, 0x88, 0xEA, 0x83, 0x79, 0x50, 0xA5, - 0x78, 0x40, 0x61, 0xD3, 0xB7, 0x28, 0x55, 0xC9, 0x16, 0xFA, 0x31, 0xA0, - 0x38, 0xCE, 0x89, 0x36, 0xA3, 0x75, 0xC0, 0x13, 0xF0, 0xB1, 0xD9, 0x0B, - 0x83, 0x92, 0x84, 0xEC, 0xF8, 0x42, 0x26, 0xF8, 0xA1, 0xDE, 0x4F, 0xC1, - 0xE9, 0x22, 0x74, 0xA1, 0x11, 0x93, 0x3F, 0x98, 0x5C, 0x7D, 0x84, 0xC1, - 0x66, 0xD0, 0xDC, 0x7E, 0x5A, 0x9B, 0xF1, 0xBD, 0x46, 0xBA, 0x2B, 0xD9, - 0xCA, 0x80, 0xDA, 0x3D, 0x04, 0xE1, 0xBE, 0x74, 0x1F, 0x83, 0x6C, 0xD1, - 0x1C, 0xC5, 0x6F, 0x1D, 0x1E, 0xF3, 0x29, 0x93, 0x12, 0xFB, 0x19, 0xCF, - 0xB7, 0xA0, 0xF6, 0x21, 0x24, 0x5E, 0x1D, 0xD9, 0x1C, 0x66, 0x21, 0xE9, - 0xC8, 0x54, 0xDB, 0x5B, 0x81, 0x4B, 0xDB, 0xE0, 0x36, 0x88, 0xC5, 0x5F, - 0x0B, 0xA2, 0xBD, 0x8D, 0x6B, 0x14, 0x46, 0xA0, 0xE0, 0x37, 0x1D, 0x11, - 0xB0, 0x15, 0x53, 0xF5, 0xBF, 0xF8, 0x0F, 0x6E, 0xCB, 0x42, 0xE2, 0xFC, - 0xE5, 0xBB, 0xFB, 0x8F, 0x98, 0x23, 0x21, 0xC2, 0x69, 0x6D, 0x13, 0x2A, - 0x55, 0xEF, 0x32, 0xBF, 0x9E, 0xC3, 0x74, 0x55, 0x0D, 0xA3, 0xF8, 0x56, - 0xC0, 0xE1, 0x25, 0x91, 0x78, 0x79, 0x6D, 0xEA, 0xEB, 0xCF, 0x48, 0x82, - 0xB0, 0xEB, 0x44, 0x0C, 0xB6, 0xF6, 0x21, 0x9D, 0xD2, 0xF4, 0x67, 0xC1, - 0x93, 0x55, 0x48, 0x35, 0xB3, 0xE0, 0x62, 0x86, 0x9C, 0x5C, 0xF1, 0x4C, - 0xB5, 0x2A, 0xAF, 0x3D, 0x42, 0xFD, 0x6F, 0x95, 0x4F, 0x00, 0xE9, 0x42, - 0x20, 0x6E, 0x8B, 0x51, 0xFF, 0xD4, 0xD8, 0xCE, 0x76, 0xE4, 0xE8, 0x9F, - 0x2B, 0x0E, 0x47, 0x12, 0xC4, 0xEF, 0xAB, 0x91, 0xCF, 0x37, 0x4F, 0x52, - 0x29, 0x75, 0xC3, 0xC0, 0xB8, 0xF4, 0x04, 0x9E, 0xA9, 0x86, 0x6B, 0x93, - 0x21, 0x7A, 0x11, 0x26, 0x33, 0xC0, 0x0A, 0x7B, 0xED, 0x0F, 0x2B, 0x9F, - 0x91, 0xE3, 0x19, 0x47, 0xD8, 0xD8, 0x0D, 0xCB, 0x6D, 0xC0, 0xAC, 0xEB, - 0xEB, 0x59, 0xA6, 0x44, 0x56, 0xE3, 0x95, 0xB6, 0x2A, 0xBA, 0xBC, 0x65, - 0x5B, 0x0C, 0x9E, 0x04, 0xDE, 0x65, 0x8E, 0x29, 0x73, 0x18, 0x0B, 0xC7, - 0xA3, 0x76, 0x43, 0xD4, 0x07, 0xF0, 0x3B, 0x09, 0xCC, 0xF7, 0x10, 0x57, - 0x9C, 0x05, 0x2A, 0xC5, 0x8C, 0x53, 0xE3, 0xA9, 0xA6, 0x20, 0x0B, 0x71, - 0xAF, 0x4B, 0x95, 0x8F, 0xB1, 0xA6, 0x96, 0xDC, 0xFC, 0x85, 0xC5, 0x94, - 0xBF, 0x86, 0xA6, 0x88, 0xC9, 0xEB, 0x04, 0x2A, 0x3B, 0xF8, 0x17, 0x07, - 0x7D, 0x0F, 0x89, 0x44, 0x3D, 0x97, 0xA1, 0x8A, 0x4E, 0x2E, 0x8F, 0x9C, - 0xB8, 0x6C, 0xA0, 0x50, 0x5D, 0xC4, 0x22, 0xDF, 0xF0, 0x5A, 0xD2, 0xF4, - 0x3F, 0x20, 0xFD, 0xAA, 0x6E, 0x04, 0xF3, 0xFA, 0x2E, 0x5D, 0x6F, 0x6B, - 0x2A, 0xE9, 0x77, 0x16, 0x65, 0xB7, 0x1B, 0xDC, 0x8F, 0x58, 0x2F, 0x32, - 0x9D, 0x57, 0xB7, 0x64, 0xD0, 0x77, 0x6E, 0xE7, 0x03, 0x39, 0xB0, 0xDF, - 0x19, 0x97, 0x29, 0xCA, 0xFE, 0xFC, 0xB6, 0x21, 0xD0, 0x2C, 0x07, 0x36, - 0x1D, 0x72, 0x07, 0x9B, 0xEB, 0xED, 0x1B, 0xB9, 0xD3, 0x87, 0xF8, 0x33, - 0x94, 0x42, 0xAF, 0x91, 0x7C, 0x43, 0x91, 0xAF, 0x33, 0x22, 0x5E, 0x48, - 0xE6, 0x73, 0xF6, 0xB6, 0x00, 0xAC, 0x29, 0x88, 0xCB, 0x45, 0x31, 0x3D, - 0xF8, 0x24, 0x98, 0x3F, 0xD9, 0x21, 0xAA, 0x6D, 0xCA, 0x49, 0x53, 0xC5, - 0x20, 0x48, 0xA7, 0xCE, 0x5B, 0x9C, 0x23, 0x54, 0x51, 0xFC, 0xB6, 0x7A, - 0x61, 0x4E, 0xDE, 0xE2, 0x82, 0xE8, 0xE0, 0xEC, 0xE3, 0x65, 0xA6, 0xB5, - 0x5E, 0x0F, 0x5A, 0xDC, 0xB2, 0x9D, 0x4B, 0x5D, 0x35, 0x71, 0xDB, 0x9F, - 0x9D, 0x5F, 0xB6, 0x56, 0x17, 0x02, 0x69, 0x65, 0x1C, 0x5E, 0xC2, 0x81, - 0x0D, 0x5D, 0x4A, 0x0F, 0x25, 0x89, 0x60, 0x06, 0xEB, 0xEB, 0x1C, 0x8D, - 0x8C, 0x2F, 0xBD, 0xD2, 0x68, 0xB6, 0xE5, 0x86, 0xCA, 0xEC, 0x85, 0x3F, - 0x69, 0x90, 0x45, 0xC3, 0x70, 0x57, 0x72, 0x3E, 0xCD, 0xAA, 0xAE, 0xA2, - 0x46, 0xEE, 0x70, 0xBE, 0x30, 0xEC, 0x6F, 0xA5, 0xC2, 0xCD, 0x5B, 0x1C, - 0x9A, 0x4D, 0xAA, 0x23, 0xE4, 0xC7, 0x4F, 0x9B, 0xF2, 0x19, 0x67, 0x14, - 0x32, 0x66, 0xD8, 0xF2, 0x0D, 0xD6, 0x62, 0xEC, 0x95, 0xF5, 0x50, 0xF3, - 0x98, 0x75, 0xFA, 0xE2, 0xCA, 0x5D, 0x3F, 0x28, 0x7D, 0xD0, 0xE2, 0x34, - 0x40, 0x7B, 0xB5, 0x07, 0x1F, 0x52, 0xEF, 0x2C, 0x3D, 0xAB, 0x3A, 0x72, - 0x45, 0xC5, 0x47, 0x83, 0xFA, 0x5C, 0xE3, 0x66, 0x77, 0x4F, 0x89, 0x7C, - 0xFE, 0x9C, 0xDB, 0x4E, 0xA4, 0xB9, 0xE6, 0xE8, 0x78, 0x50, 0x43, 0x20, - 0x8B, 0x8C, 0x78, 0x27, 0x88, 0x9A, 0x40, 0x89, 0x36, 0x4B, 0x08, 0x2E, - 0xC2, 0x60, 0x51, 0x9C, 0xE8, 0x96, 0x93, 0x8B, 0x69, 0xF7, 0x2A, 0x7E, - 0x9E, 0xF7, 0x4C, 0xFC, 0xD2, 0xF5, 0x97, 0xC2, 0x49, 0x9D, 0x1B, 0xB0, - 0xAA, 0x61, 0x50, 0xD9, 0x06, 0xE7, 0x9E, 0x61, 0x06, 0xB7, 0xD6, 0xDE, - 0x64, 0x2A, 0x9D, 0x1E, 0xF3, 0xFB, 0xD4, 0xC1, 0x49, 0x13, 0x4C, 0xC8, - 0x1C, 0x84, 0x0C, 0xD9, 0xF8, 0x70, 0x7A, 0x57, 0x7B, 0xE5, 0xAA, 0xD7, - 0x0C, 0xD8, 0x90, 0xBB, 0x10, 0x7D, 0x68, 0x76, 0xD9, 0x70, 0xBE, 0x89, - 0x75, 0xF9, 0xE6, 0x67, 0x06, 0x1E, 0x43, 0xAF, 0x44, 0xB0, 0x0C, 0xC8, - 0x69, 0x9B, 0x07, 0x42, 0xAF, 0xB2, 0x87, 0xCE, 0x39, 0xC6, 0xFE, 0xCF, - 0xF9, 0x3F, 0xD0, 0xB6, 0xC5, 0x3C, 0xC4, 0xC9, 0x15, 0x04, 0xA7, 0x4B, - 0xB2, 0xC2, 0x1F, 0x52, 0x08, 0x5E, 0xBB, 0x1C, 0x87, 0x0C, 0xF3, 0xF2, - 0x3D, 0xE2, 0xC3, 0xEC, 0xFD, 0xA6, 0x99, 0x6B, 0x6D, 0x2F, 0xC6, 0xE0, - 0x24, 0xE5, 0xCD, 0xF5, 0x0C, 0x43, 0xDD, 0xDA, 0x85, 0xEF, 0xDD, 0x47, - 0xDD, 0xB0, 0xE5, 0x56, 0x8E, 0xC7, 0x3E, 0x20, 0x29, 0x0F, 0x36, 0x6C, - 0x5C, 0x39, 0x9C, 0x60, 0x9B, 0x42, 0xDE, 0x40, 0x6E, 0xC0, 0x27, 0x76, - 0x68, 0x5C, 0x35, 0xE5, 0x57, 0x1E, 0x27, 0x38, 0x3C, 0x59, 0x17, 0x3E, - 0xC1, 0x77, 0x06, 0x45, 0xBD, 0x5E, 0xFD, 0x13, 0x72, 0x2E, 0xCD, 0x62, - 0x28, 0x63, 0xAF, 0x61, 0x26, 0x67, 0x07, 0x0F, 0xC3, 0xFE, 0xBB, 0x99, - 0x17, 0x6F, 0xBB, 0x82, 0xCC, 0x6E, 0x99, 0xF1, 0x70, 0xAD, 0x4B, 0x78, - 0x1C, 0x44, 0x78, 0x36, 0x05, 0x01, 0x38, 0x1E, 0x8E, 0xB1, 0xCE, 0x2F, - 0xD2, 0x9F, 0x09, 0x4F, 0x01, 0xB1, 0x12, 0xDD, 0x8E, 0x94, 0x51, 0x43, - 0xCD, 0x48, 0xE4, 0x62, 0x71, 0xA5, 0x64, 0xDD, 0xB5, 0x25, 0x2B, 0x67, - 0x97, 0x17, 0xC8, 0xE5, 0xD1, 0x52, 0x0E, 0x2E, 0xD1, 0x7D, 0xA1, 0x0C, - 0x2E, 0x16, 0x91, 0xC2, 0x5D, 0xE0, 0x16, 0x41, 0x91, 0xA9, 0x27, 0x84, - 0x36, 0x1C, 0xC2, 0xAC, 0x10, 0x69, 0x1E, 0x5E, 0x83, 0xE4, 0xA2, 0x9B, - 0xEE, 0x4F, 0xAE, 0xE5, 0xAF, 0x83, 0x6C, 0xD7, 0xF8, 0x24, 0x41, 0x33, - 0x2B, 0x02, 0xD8, 0xBE, 0x77, 0x8D, 0xC4, 0x86, 0xBA, 0x2F, 0xE6, 0x0F, - 0x46, 0xE8, 0x83, 0x38, 0x8E, 0x17, 0x02, 0x98, 0xF7, 0x3B, 0xA0, 0x0C, - 0xDD, 0x34, 0x25, 0x0C, 0x19, 0x94, 0x18, 0xF9, 0xA7, 0xCD, 0x33, 0xED, - 0xD1, 0xA9, 0x8B, 0xB7, 0xEF, 0x6B, 0xF0, 0x1D, 0x71, 0x22, 0x6D, 0xC5, - 0x5B, 0xF0, 0xCA, 0x08, 0xE0, 0xBE, 0x75, 0x76, 0x5E, 0x50, 0x68, 0xA3, - 0xC1, 0x39, 0x08, 0x18, 0x85, 0xA8, 0xC6, 0xDE, 0x50, 0x0E, 0xF0, 0x38, - 0x8B, 0xA9, 0x16, 0xFB, 0x2D, 0x69, 0x16, 0xA2, 0x55, 0x3D, 0x48, 0x82, - 0xD3, 0x14, 0xCA, 0x76, 0x26, 0xA3, 0x61, 0x56, 0xC1, 0x0E, 0xF7, 0xAE, - 0x61, 0xC4, 0xEC, 0xB8, 0x1D, 0x7C, 0x8E, 0x4A, 0x9F, 0xC4, 0x62, 0xB8, - 0x5A, 0x42, 0x5E, 0xA9, 0x5E, 0x20, 0x06, 0x66, 0xBD, 0x53, 0x49, 0x84, - 0x8C, 0xE7, 0xA4, 0xB3, 0xF8, 0x25, 0xA3, 0xF8, 0x49, 0x8B, 0x8F, 0x66, - 0xEF, 0xC9, 0xBF, 0x88, 0x5A, 0xE9, 0x22, 0xDD, 0x38, 0xEE, 0xED, 0x7B, - 0xB7, 0x0C, 0x0A, 0xEC, 0x26, 0x72, 0x5A, 0xE8, 0xAF, 0x62, 0xAE, 0x01, - 0xFA, 0xA0, 0x91, 0x52, 0x55, 0x49, 0x09, 0x5A, 0x4E, 0xC4, 0xB4, 0x78, - 0x8C, 0xAE, 0x4F, 0xED, 0x32, 0x88, 0x55, 0xE1, 0x40, 0xDA, 0x77, 0x1A, - 0x17, 0x00, 0x9C, 0x14, 0xB9, 0x52, 0x94, 0xB3, 0x02, 0x91, 0x03, 0x90, - 0xF4, 0xF1, 0x4C, 0x52, 0x6C, 0x52, 0x39, 0xC5, 0x92, 0xCE, 0x91, 0x42, - 0x27, 0xAE, 0x16, 0x44, 0xCF, 0xE4, 0xB8, 0x51, 0x39, 0x03, 0xC0, 0xEE, - 0xCE, 0xAB, 0x9F, 0x76, 0x75, 0x53, 0xCD, 0x5E, 0x88, 0x54, 0x9F, 0x61, - 0x70, 0xFA, 0xDD, 0x36, 0xFA, 0x37, 0x35, 0x6D, 0xF4, 0x0F, 0x29, 0xC2, - 0x22, 0x40, 0x7B, 0x86, 0x7E, 0xCE, 0x9A, 0xED, 0x1A, 0xDC, 0x49, 0xDE, - 0x7A, 0xCD, 0xCB, 0x0F, 0xAB, 0xFC, 0x97, 0xC8, 0x8B, 0x3A, 0x0A, 0xAB, - 0x23, 0x6D, 0xFC, 0xE9, 0xC4, 0x30, 0x46, 0x30, 0x82, 0x14, 0xFB, 0xBA, - 0x77, 0x6F, 0x16, 0x32, 0xD7, 0xE8, 0xAA, 0x79, 0x3D, 0x0B, 0x91, 0x11, - 0x45, 0x57, 0x05, 0x79, 0x99, 0x12, 0x55, 0x36, 0x5B, 0x06, 0xCA, 0xAA, - 0x82, 0x51, 0x84, 0x8B, 0x20, 0xE9, 0x6A, 0x3A, 0x17, 0x30, 0x30, 0xFD, - 0x99, 0xEC, 0xBD, 0x54, 0xCC, 0x3A, 0xC0, 0xFF, 0x5C, 0x49, 0xE0, 0x6C, - 0x99, 0x0F, 0x48, 0xCD, 0x70, 0x62, 0x7B, 0x69, 0x92, 0x34, 0x2D, 0x44, - 0x63, 0x23, 0x9E, 0x1F, 0x17, 0x7B, 0x2A, 0xF5, 0x06, 0x02, 0x24, 0x21, - 0x51, 0x2E, 0x02, 0x2D, 0x23, 0x51, 0x7C, 0x8E, 0xD3, 0x32, 0xE2, 0x28, - 0x3B, 0x6B, 0x0E, 0x5B, 0x4B, 0xD5, 0x2B, 0x38, 0x1E, 0x5C, 0xC9, 0x31, - 0x88, 0x85, 0xB9, 0xD3, 0x6F, 0x37, 0xAF, 0x93, 0x80, 0xD6, 0x19, 0x31, - 0x9A, 0x98, 0x45, 0xF9, 0x74, 0x30, 0x99, 0x56, 0x29, 0xF3, 0xFA, 0x33, - 0x6A, 0xBB, 0x70, 0x58, 0x53, 0x0E, 0x17, 0x27, 0xDD, 0x3D, 0xE8, 0x07, - 0x85, 0x2A, 0xCB, 0x33, 0x60, 0x23, 0xB0, 0xE9, 0x60, 0x7C, 0xF1, 0x47, - 0x69, 0xE1, 0x69, 0x57, 0x3E, 0x8C, 0x49, 0x30, 0xA3, 0x7A, 0xD6, 0x79, - 0x1F, 0xF9, 0xCF, 0x1C, 0xE1, 0x56, 0xF1, 0x92, 0xC0, 0x66, 0xC7, 0x67, - 0xF0, 0xC6, 0x78, 0x6A, 0x48, 0x26, 0xD4, 0xE9, 0xFA, 0x50, 0x8B, 0xC4, - 0xB1, 0x19, 0x96, 0x1F, 0x0C, 0x67, 0x0A, 0xB0, 0x4B, 0x75, 0x1C, 0xBA, - 0x86, 0x42, 0xE3, 0x2E, 0x0C, 0xF8, 0xFC, 0x19, 0x66, 0x7B, 0x51, 0xDB, - 0x3E, 0xBB, 0xA2, 0xC0, 0xBF, 0x31, 0x9A, 0x8A, 0x3E, 0x4F, 0x24, 0xA0, - 0xD3, 0xDA, 0x15, 0x35, 0x91, 0x10, 0x3F, 0x1B, 0x40, 0x9A, 0x79, 0xB7, - 0xE4, 0x8B, 0x9E, 0xBB, 0xD8, 0x98, 0x31, 0x8C, 0x69, 0xDE, 0x25, 0xFD, - 0x0E, 0x87, 0xC3, 0xD9, 0x8C, 0xAD, 0xC0, 0x95, 0x19, 0x15, 0x18, 0xE1, - 0xBD, 0xB1, 0x4F, 0xD4, 0x94, 0x09, 0x3B, 0xD5, 0x07, 0xC1, 0x72, 0xEE, - 0x33, 0xA2, 0x9E, 0xAA, 0x05, 0x4E, 0xD3, 0xD3, 0x43, 0x43, 0xB9, 0xE6, - 0xBE, 0xCF, 0xE8, 0xE4, 0x00, 0x11, 0x5D, 0xA2, 0x97, 0xAE, 0x1F, 0x3C, - 0x3C, 0x0F, 0xA5, 0x06, 0xE5, 0xF8, 0xDE, 0x94, 0x00, 0xA0, 0x99, 0xD2, - 0x4C, 0x13, 0x05, 0x09, 0xB8, 0x08, 0x61, 0x3A, 0x67, 0xBB, 0x77, 0xA8, - 0x69, 0xA3, 0x8F, 0xF4, 0xF2, 0x2A, 0x6A, 0x88, 0x9E, 0xFD, 0x81, 0xF1, - 0x7B, 0xA7, 0xFA, 0x15, 0xCF, 0x32, 0x04, 0x22, 0xD3, 0x62, 0x4C, 0xF4, - 0x65, 0x76, 0x5C, 0x85, 0x5E, 0x98, 0x18, 0x6A, 0xF8, 0x95, 0xC1, 0x2A, - 0x8E, 0xFF, 0xCD, 0x48, 0x8E, 0x58, 0xE6, 0xCA, 0x8A, 0x8E, 0xA2, 0x0D, - 0x33, 0x35, 0xA0, 0xD3, 0xC6, 0x28, 0x72, 0x63, 0xB4, 0xCB, 0x0A, 0xB1, - 0x47, 0xF8, 0xFC, 0xF1, 0xC3, 0x7A, 0xAD, 0x56, 0x51, 0x4D, 0xE5, 0x53, - 0xB1, 0x3F, 0xC4, 0x2C, 0x7E, 0x93, 0xEB, 0x71, 0x91, 0x06, 0x7C, 0xC7, - 0x4E, 0x1F, 0xC0, 0x3C, 0x70, 0x7C, 0x54, 0x7A, 0xA7, 0x46, 0x92, 0x33, - 0x3C, 0x99, 0x32, 0x07, 0xAE, 0x7F, 0xD9, 0xF0, 0xEE, 0x4E, 0x26, 0xEE, - 0xD7, 0x67, 0xCD, 0xE6, 0x47, 0xD1, 0x1C, 0x17, 0x71, 0x68, 0xAA, 0x07, - 0xA4, 0xF4, 0xD0, 0x87, 0xA3, 0x65, 0x2D, 0xA8, 0x3A, 0x06, 0x7B, 0x23, - 0x6C, 0xA7, 0xD3, 0x4B, 0xE3, 0x46, 0x6C, 0x31, 0x5B, 0x4F, 0x8F, 0xBF, - 0xEB, 0x17, 0x68, 0x05, 0xF3, 0x3D, 0xD9, 0xA1, 0x7B, 0x05, 0x7E, 0x05, - 0x14, 0xEF, 0x00, 0xE2, 0xF6, 0xD3, 0xF1, 0x4C, 0x60, 0xC9, 0x71, 0xBD, - 0x8B, 0x47, 0x84, 0x24, 0x99, 0x94, 0x99, 0x03, 0xB7, 0xE7, 0x1E, 0x8A, - 0x56, 0xE0, 0xCB, 0xD8, 0x12, 0x73, 0x08, 0x3D, 0x31, 0xCF, 0xE2, 0x46, - 0xBF, 0x16, 0x62, 0x13, 0xA3, 0x3B, 0x62, 0x2A, 0x6C, 0xF4, 0x77, 0x90, - 0x04, 0x7A, 0x95, 0x2C, 0x61, 0xD0, 0xA4, 0x84, 0x3F, 0x32, 0x48, 0xBA, - 0xE5, 0xCD, 0x39, 0xF5, 0x5D, 0x5A, 0x3E, 0x0A, 0x4C, 0xBF, 0x0A, 0xEC, - 0xCF, 0x0B, 0xF2, 0xEA, 0x38, 0x17, 0x36, 0xDB, 0xD6, 0x2D, 0x48, 0x78, - 0xBB, 0x20, 0x5F, 0x5F, 0xDF, 0x63, 0x6D, 0xF5, 0x3D, 0x74, 0xA8, 0xE1, - 0xE4, 0x4C, 0x87, 0x65, 0x78, 0x1B, 0x5B, 0xC6, 0xEE, 0x37, 0x69, 0x39, - 0x8C, 0xD6, 0x3C, 0x24, 0x6B, 0xFE, 0x4A, 0xC9, 0x13, 0xF8, 0x33, 0x2C, - 0xDB, 0xA3, 0x7A, 0xE3, 0x6C, 0x76, 0x18, 0x01, 0x62, 0x95, 0x67, 0x4A, - 0xB5, 0xE7, 0xF4, 0xD7, 0x63, 0x74, 0x2F, 0xE0, 0x57, 0x3B, 0x3C, 0x33, - 0xC6, 0x06, 0x03, 0xD7, 0x93, 0x0F, 0x8D, 0xDD, 0x57, 0xC3, 0x0C, 0x50, - 0xBC, 0x08, 0xF6, 0x98, 0xA1, 0x04, 0x1D, 0xC8, 0x46, 0x02, 0x2E, 0x2D, - 0x3D, 0xF1, 0xCD, 0x4B, 0x9B, 0x3F, 0x0C, 0xBC, 0xD3, 0x2F, 0x87, 0xE7, - 0x50, 0xA1, 0x7B, 0x94, 0xC5, 0xCD, 0xEC, 0xE9, 0x29, 0xE7, 0x6C, 0xD4, - 0xC1, 0x18, 0xA4, 0xCA, 0x4F, 0x00, 0x4E, 0xF9, 0x36, 0x89, 0xFD, 0x07, - 0x47, 0xE6, 0xD5, 0xB7, 0xAA, 0x34, 0x7C, 0x16, 0x7B, 0xCB, 0x49, 0x92, - 0xF2, 0x03, 0x66, 0x8E, 0xEF, 0x11, 0xFC, 0x8F, 0x26, 0xA5, 0x78, 0x9A, - 0x4B, 0x29, 0xC7, 0x98, 0x15, 0xA1, 0x35, 0x58, 0x0C, 0xD5, 0xF8, 0x6F, - 0x50, 0x1C, 0xDC, 0x41, 0x20, 0xCC, 0x2A, 0x42, 0xE1, 0xEF, 0x28, 0x22, - 0x67, 0x89, 0x71, 0x5B, 0x9B, 0xBA, 0x92, 0xED, 0x1C, 0xB6, 0x9C, 0x89, - 0xD4, 0x00, 0x21, 0xD3, 0xF1, 0xD9, 0x3E, 0x9B, 0x55, 0x71, 0xF7, 0x75, - 0x26, 0x5A, 0x13, 0x65, 0xBF, 0x6E, 0x46, 0x90, 0x85, 0x7B, 0xD7, 0xD4, - 0xDC, 0x90, 0x23, 0x4C, 0x83, 0x12, 0x87, 0x7D, 0x8D, 0xF2, 0x39, 0x4E, - 0x9A, 0xA0, 0x4A, 0xDE, 0xAB, 0xCA, 0xA7, 0xCB, 0xBD, 0x1A, 0xA5, 0x3F, - 0x54, 0x12, 0x92, 0x6F, 0xEF, 0x37, 0x88, 0xDD, 0x52, 0xDB, 0xD0, 0x8F, - 0xEA, 0xCD, 0x88, 0x69, 0x8C, 0x44, 0x6A, 0xF3, 0xD0, 0x61, 0x8B, 0x20, - 0x91, 0x17, 0x32, 0x32, 0xBE, 0x39, 0x42, 0xE7, 0x1C, 0x3E, 0x8A, 0x02, - 0x58, 0x95, 0x76, 0x45, 0x3A, 0x06, 0x28, 0xE0, 0x7A, 0x47, 0x23, 0x87, - 0xB1, 0x5F, 0xF0, 0xE1, 0x2D, 0x18, 0xA4, 0x9B, 0xE7, 0x90, 0xB3, 0xFC, - 0x96, 0x2D, 0xAA, 0x04, 0x72, 0x39, 0xCA, 0xF6, 0x8B, 0xFE, 0x5D, 0xF8, - 0xAA, 0xFF, 0xBE, 0x94, 0xE3, 0xEF, 0xF2, 0x74, 0x22, 0xD4, 0x8C, 0x82, - 0x2C, 0x73, 0x8B, 0xB8, 0x39, 0x35, 0xCF, 0xCB, 0x48, 0xE8, 0xAC, 0x05, - 0x49, 0xEE, 0x08, 0x30, 0xFF, 0x99, 0x48, 0xE1, 0x66, 0xDD, 0x01, 0xD9, - 0x39, 0x22, 0xDE, 0x2C, 0x1C, 0x47, 0x08, 0xA3, 0x97, 0xFE, 0x02, 0x8C, - 0x6B, 0x9E, 0xBF, 0xC4, 0x46, 0xAB, 0x94, 0x6D, 0x86, 0xC2, 0x45, 0x95, - 0xB9, 0x1D, 0x15, 0x89, 0xA9, 0x76, 0x7A, 0xDD, 0x11, 0xDC, 0x54, 0x4E, - 0x37, 0x96, 0x1E, 0x37, 0xE2, 0xB4, 0xE0, 0xD8, 0xB6, 0xBC, 0xF8, 0xA4, - 0x47, 0xC5, 0x6E, 0x33, 0x8F, 0xC2, 0x5C, 0x3B, 0x8E, 0x51, 0x01, 0x10, - 0xF1, 0x08, 0x10, 0xD8, 0x47, 0x38, 0xF4, 0x28, 0x22, 0x0E, 0x21, 0x96, - 0x8B, 0x89, 0xA6, 0x43, 0x6B, 0xDA, 0xBC, 0xD5, 0xDC, 0x74, 0x74, 0xC6, - 0x64, 0xCA, 0x6A, 0x42, 0x7C, 0x24, 0x80, 0x40, 0x1F, 0x82, 0x19, 0x25, - 0xB7, 0x97, 0x40, 0x78, 0x16, 0x18, 0x71, 0x5C, 0x44, 0xCD, 0x1B, 0x9F, - 0xC9, 0xE0, 0xA6, 0x3F, 0xF4, 0xAA, 0x2B, 0x4E, 0xC2, 0x12, 0x24, 0x3F, - 0x98, 0xAD, 0x54, 0x84, 0xAF, 0x72, 0xA9, 0xBF, 0x61, 0x85, 0xA1, 0x95, - 0xD8, 0xC1, 0x72, 0x4B, 0x02, 0x21, 0x38, 0x7E, 0x29, 0xA8, 0x90, 0xBA, - 0x9A, 0xF9, 0x4D, 0xB4, 0xFC, 0xAC, 0xB8, 0x27, 0x77, 0xA0, 0xBE, 0x1E, - 0x45, 0xFE, 0x2B, 0x49, 0x8E, 0x48, 0x66, 0xD5, 0x97, 0x1B, 0x21, 0x65, - 0x4F, 0xA5, 0x7E, 0xF8, 0x7E, 0x89, 0xB6, 0x1B, 0x4F, 0xB1, 0x2E, 0xC2, - 0x84, 0x50, 0xB6, 0xC7, 0xD5, 0xBC, 0xEE, 0x86, 0xBE, 0xB7, 0x27, 0xDB, - 0xE8, 0xF3, 0x49, 0x02, 0xBF, 0xB1, 0x33, 0x71, 0x5D, 0xA3, 0x3D, 0x28, - 0x7E, 0x24, 0x76, 0x0E, 0x29, 0xAA, 0x65, 0xC8, 0x0B, 0xD2, 0xE1, 0xF1, - 0x36, 0x03, 0x2C, 0x28, 0x92, 0x3A, 0x42, 0x5A, 0xF8, 0x20, 0xEE, 0x43, - 0xB6, 0x56, 0x12, 0xA9, 0x2B, 0x8A, 0xC5, 0x5D, 0x7B, 0x77, 0x76, 0xC3, - 0x9B, 0x80, 0xD9, 0x30, 0x7F, 0xE5, 0x0F, 0x2B, 0x6A, 0x87, 0x29, 0xEF, - 0x51, 0xED, 0x8C, 0x27, 0x2D, 0xD3, 0x9E, 0xEC, 0x4D, 0x3A, 0xDA, 0x65, - 0xB6, 0x17, 0xD1, 0x73, 0xEE, 0xE7, 0x94, 0x07, 0x12, 0x79, 0x9F, 0xF4, - 0xA0, 0x0C, 0x7F, 0x95, 0xBB, 0x28, 0xF9, 0xE3, 0x5F, 0x46, 0xB5, 0xC6, - 0x0C, 0x4A, 0x18, 0xCB, 0x79, 0xA6, 0x90, 0x36, 0xC5, 0xF7, 0x08, 0x36, - 0xD2, 0xE7, 0x73, 0x21, 0x59, 0x8F, 0xF5, 0xC8, 0x89, 0xB1, 0x09, 0x11, - 0x03, 0xCD, 0xA4, 0xB7, 0x64, 0x04, 0x4A, 0xF4, 0x69, 0x06, 0x89, 0x66, - 0x9E, 0xB1, 0x96, 0x1C, 0x55, 0x22, 0x3F, 0x70, 0xBE, 0x72, 0x3D, 0x7C, - 0xBC, 0x18, 0x8F, 0xEF, 0x69, 0x91, 0x76, 0x75, 0x21, 0x20, 0x01, 0xAB, - 0x44, 0x60, 0x13, 0x6A, 0xBC, 0xB5, 0x0B, 0x95, 0x3E, 0xE4, 0xA3, 0x4E, - 0x18, 0xD6, 0xBC, 0x51, 0x3C, 0xE2, 0x3D, 0x71, 0x70, 0xFB, 0xBF, 0xAD, - 0x5F, 0x57, 0xB6, 0x6E, 0x9F, 0xBE, 0x70, 0x69, 0x53, 0xEE, 0x34, 0x53, - 0x9D, 0xE5, 0xBD, 0x51, 0x9D, 0x1D, 0xEA, 0xBC, 0xD8, 0x89, 0x98, 0xC1, - 0x26, 0xCF, 0x0F, 0x65, 0x71, 0xFE, 0x3B, 0x89, 0x9B, 0x5E, 0xAF, 0x6C, - 0xFD, 0xB2, 0x53, 0x88, 0x42, 0x7C, 0xFB, 0x87, 0x49, 0x69, 0x4D, 0x7D, - 0xC9, 0x76, 0xA7, 0x84, 0x10, 0xFF, 0xF8, 0x63, 0x64, 0xB1, 0xF2, 0x7D, - 0x72, 0x79, 0xD8, 0xF1, 0x8B, 0xB6, 0xA3, 0x80, 0xEF, 0x15, 0x92, 0x40, - 0xBE, 0x01, 0x05, 0xCB, 0xA8, 0x07, 0x0C, 0xE0, 0xEE, 0x8F, 0xEA, 0xF6, - 0x62, 0x9B, 0x4C, 0x89, 0xC4, 0x0D, 0xBC, 0x55, 0x32, 0x91, 0xCC, 0x68, - 0xD7, 0x40, 0x54, 0x13, 0x1D, 0xD9, 0x96, 0x49, 0xB6, 0x63, 0xCB, 0xF3, - 0x3E, 0x4C, 0xA1, 0xE3, 0xDA, 0xD1, 0x7C, 0x88, 0x2D, 0xB5, 0xED, 0x6F, - 0x9D, 0x85, 0x91, 0x3A, 0x5B, 0x80, 0xBB, 0xB8, 0x3B, 0x7E, 0xD2, 0x4B, - 0xE1, 0xDF, 0x2A, 0x32, 0x5B, 0x2C, 0xED, 0xB4, 0x39, 0xD2, 0x46, 0xB9, - 0x3F, 0x4F, 0x98, 0xB5, 0xB7, 0xB7, 0x16, 0xE9, 0xB1, 0x2A, 0xD5, 0x3A, - 0x1B, 0xC1, 0xC4, 0xA4, 0xEB, 0x15, 0x86, 0x86, 0x2E, 0x51, 0xA6, 0xCE, - 0x9D, 0xEB, 0x47, 0x15, 0x7F, 0x37, 0x1B, 0x3E, 0x26, 0xED, 0x17, 0xE4, - 0x23, 0xE2, 0x7E, 0xDA, 0x03, 0xC8, 0x94, 0xE0, 0x50, 0x6C, 0x8C, 0x68, - 0xCE, 0x04, 0x24, 0x7F, 0x67, 0x0D, 0x2F, 0x77, 0xF7, 0x07, 0x75, 0x33, - 0xFE, 0x4C, 0x1B, 0x2C, 0x53, 0x19, 0x47, 0xFA, 0x4E, 0x1F, 0x5D, 0x2E, - 0x80, 0x2E, 0x9E, 0xE5, 0xA6, 0x4E, 0x41, 0x45, 0x8C, 0x63, 0xA4, 0x4C, - 0x5E, 0x19, 0x04, 0x51, 0x6A, 0xAF, 0x6E, 0x4F, 0xBB, 0xA8, 0xAB, 0x87, - 0xD4, 0xD7, 0x99, 0x59, 0x77, 0x54, 0x0E, 0x10, 0xE8, 0x7B, 0xC5, 0x7B, - 0x6D, 0x13, 0xA8, 0x58, 0xB7, 0x67, 0xD6, 0x23, 0xF1, 0x97, 0xC6, 0xB1, - 0xFE, 0x83, 0xE8, 0xBB, 0xC1, 0xD2, 0x26, 0x83, 0xDD, 0x8E, 0x86, 0x4F, - 0x69, 0xE5, 0xC4, 0x72, 0x56, 0x98, 0x0A, 0xB1, 0x58, 0x03, 0x4E, 0x14, - 0xCD, 0x25, 0x65, 0xEF, 0x31, 0xD0, 0x68, 0x45, 0x9C, 0x42, 0x84, 0xB8, - 0xC9, 0x8F, 0xB0, 0xF8, 0xF1, 0xD2, 0x45, 0x75, 0xD3, 0x4F, 0x13, 0x52, - 0xD3, 0x8F, 0xF3, 0x8A, 0x3F, 0x73, 0xF0, 0x56, 0x24, 0x1B, 0x77, 0xFC, - 0xE4, 0xCC, 0x42, 0x57, 0x8F, 0xF8, 0xE8, 0x4C, 0x53, 0x5F, 0x22, 0x35, - 0xDD, 0x6E, 0x33, 0x11, 0xC8, 0xB2, 0xEB, 0xFF, 0x9B, 0x0F, 0xC7, 0x20, - 0xED, 0x6F, 0x70, 0xC8, 0x8D, 0x1E, 0xDE, 0x2F, 0x0E, 0x19, 0x50, 0xA2, - 0xF1, 0x4F, 0x90, 0x56, 0x07, 0x63, 0x0A, 0x8D, 0xE2, 0x6E, 0xAE, 0x95, - 0x68, 0xCA, 0xEA, 0x78, 0x0C, 0xB1, 0xA4, 0x30, 0x14, 0x77, 0x48, 0x0C, - 0x51, 0xD9, 0xE5, 0x30, 0x7C, 0xCE, 0x77, 0xBA, 0xC7, 0x34, 0x9D, 0x25, - 0x4D, 0xCF, 0x21, 0xE2, 0xCF, 0x50, 0xBA, 0x2A, 0x32, 0xC7, 0x66, 0x07, - 0xBA, 0x46, 0xE6, 0x69, 0xDE, 0x46, 0xDF, 0x03, 0x28, 0x51, 0xFE, 0x11, - 0x1C, 0x33, 0xBC, 0x4F, 0xD4, 0x2E, 0xC3, 0x7A, 0xED, 0x2A, 0xCE, 0xCA, - 0x34, 0xE8, 0x4F, 0x65, 0x8E, 0xF3, 0x77, 0x05, 0x67, 0xFB, 0xD5, 0x1D, - 0x5C, 0x94, 0xB5, 0x27, 0xA9, 0x61, 0xF7, 0x99, 0x15, 0x77, 0x2B, 0xA0, - 0xB1, 0xB4, 0x3B, 0x72, 0x33, 0x67, 0xA7, 0x70, 0xFB, 0x60, 0x72, 0x04, - 0xC4, 0x88, 0x4C, 0xA5, 0x1C, 0xEF, 0x17, 0x66, 0x74, 0xAE, 0xBC, 0x01, - 0xC3, 0x2F, 0x0D, 0xD6, 0x12, 0xDF, 0x4F, 0x2C, 0x63, 0xC1, 0x79, 0xF8, - 0x50, 0xC9, 0x52, 0x34, 0xA0, 0x6E, 0x73, 0xBA, 0x5A, 0x31, 0x22, 0xF3, - 0xC5, 0x98, 0xB0, 0x18, 0xD8, 0x7B, 0x2B, 0x06, 0x47, 0x9D, 0x50, 0xE6, - 0x16, 0xBF, 0x59, 0xC9, 0x34, 0xF0, 0x51, 0x58, 0x60, 0xD8, 0xEE, 0x83, - 0xC8, 0x8B, 0x1E, 0x92, 0x8F, 0xF0, 0xDF, 0x12, 0x61, 0xCC, 0x69, 0x21, - 0x68, 0xE8, 0x78, 0xB8, 0xF2, 0xF0, 0xDE, 0xE7, 0xAB, 0x8A, 0xA4, 0x38, - 0x32, 0x06, 0xAE, 0xCD, 0x53, 0x92, 0xE4, 0x9B, 0x2C, 0xC1, 0x63, 0x30, - 0x29, 0xB5, 0x12, 0x21, 0x99, 0xCA, 0x99, 0x94, 0x92, 0x71, 0xFB, 0x0A, - 0x31, 0xEF, 0xBF, 0xE2, 0x52, 0x2B, 0xA5, 0xCE, 0x16, 0x5D, 0x15, 0x4A, - 0x25, 0xCF, 0x74, 0x96, 0x9A, 0x95, 0x21, 0x2C, 0xEA, 0xB7, 0xA1, 0xAE, - 0xD4, 0x15, 0x29, 0x38, 0xF9, 0x7B, 0x6C, 0xD7, 0x3A, 0x52, 0xFD, 0x60, - 0xA2, 0xD0, 0xEE, 0xA5, 0xDF, 0x4C, 0xC6, 0xBF, 0x30, 0x82, 0x20, 0xB6, - 0x73, 0x58, 0xC8, 0x7B, 0xA8, 0xEA, 0x01, 0x9B, 0xEA, 0x02, 0x89, 0xD0, - 0x83, 0x71, 0x14, 0x98, 0xB0, 0x6E, 0x5B, 0x80, 0xB4, 0xBA, 0x4D, 0xC5, - 0x95, 0x77, 0x5A, 0x44, 0x56, 0x74, 0x12, 0x48, 0xBC, 0xAE, 0x92, 0xCF, - 0x5A, 0xF9, 0x62, 0xE8, 0x72, 0xA5, 0x72, 0x5B, 0x58, 0xC6, 0x14, 0x29, - 0xF1, 0xC4, 0xD6, 0xC6, 0x75, 0x71, 0x9C, 0xC4, 0x7D, 0xC5, 0x93, 0x26, - 0xA2, 0x9B, 0x1C, 0x30, 0xE8, 0x41, 0xC7, 0x03, 0x66, 0x98, 0x2C, 0x10, - 0x34, 0x6A, 0x0E, 0xC2, 0x35, 0x53, 0xAA, 0x17, 0x3E, 0xF4, 0xCB, 0x9C, - 0xC4, 0x1E, 0xB4, 0x79, 0x0B, 0xA0, 0x41, 0x4B, 0xC6, 0xB4, 0xAC, 0x5F, - 0xDA, 0x48, 0x01, 0x0D, 0xBF, 0xDF, 0x6A, 0x0E, 0x42, 0x16, 0xFC, 0x97, - 0x58, 0x98, 0x04, 0xDA, 0x46, 0x1E, 0x37, 0x55, 0x77, 0x2A, 0xB8, 0x58, - 0x6B, 0x9E, 0x55, 0x2E, 0xF6, 0x52, 0x17, 0x38, 0xE1, 0xA7, 0xD9, 0xA0, - 0x08, 0xF3, 0x3E, 0x0B, 0xE4, 0x10, 0x37, 0x2A, 0x16, 0x54, 0x63, 0x1E, - 0x5A, 0x43, 0xC7, 0xDE, 0xA3, 0xE9, 0x3B, 0x85, 0x3A, 0xFB, 0x03, 0xE9, - 0xDE, 0xD9, 0x1C, 0xDD, 0x9B, 0x56, 0x4F, 0x70, 0x77, 0xDD, 0xF3, 0xBA, - 0x0F, 0xA4, 0x0F, 0x12, 0x5A, 0x1C, 0xF4, 0x32, 0xE8, 0x58, 0x6C, 0x23, - 0xC5, 0x46, 0x2E, 0x1C, 0xCA, 0xE0, 0x99, 0x27, 0x77, 0xC8, 0x14, 0xD3, - 0x34, 0xA4, 0xEA, 0xDD, 0x76, 0x3C, 0x91, 0x39, 0x96, 0x2A, 0xEE, 0x63, - 0x05, 0x6A, 0x2D, 0x65, 0x48, 0x88, 0xE6, 0x9D, 0x26, 0xE3, 0x95, 0xD6, - 0xFC, 0x86, 0xC8, 0x41, 0xB5, 0x14, 0x99, 0x2C, 0x35, 0x8C, 0xBD, 0xA8, - 0x28, 0x1D, 0xF7, 0x74, 0x00, 0x36, 0xCA, 0xE8, 0xBB, 0x28, 0x35, 0x03, - 0x10, 0x23, 0xEC, 0x82, 0x4C, 0x32, 0x59, 0xAB, 0x6B, 0x01, 0x2B, 0x42, - 0xEB, 0x67, 0x4D, 0x49, 0x80, 0x47, 0x7C, 0xD0, 0xFE, 0x48, 0xB5, 0xC8, - 0xB3, 0xF3, 0x06, 0x37, 0x13, 0x65, 0xF1, 0x53, 0x9C, 0x24, 0x00, 0x29, - 0x41, 0x8E, 0x97, 0xE7, 0x47, 0x21, 0xF8, 0xB6, 0xEF, 0xC1, 0x08, 0xAC, - 0x8B, 0xF3, 0xDF, 0xD1, 0x9B, 0xED, 0x16, 0xEA, 0x5C, 0x3C, 0x39, 0xF6, - 0xB9, 0x0F, 0x0D, 0xC1, 0x0C, 0x79, 0xB4, 0xFA, 0xEC, 0x7F, 0xD2, 0xE0, - 0x80, 0xEC, 0xF1, 0x88, 0xBE, 0x68, 0xA8, 0xD1, 0x38, 0xB5, 0xFE, 0xB5, - 0xED, 0x1A, 0xB1, 0x8D, 0xBC, 0x50, 0x9B, 0xA5, 0x40, 0x45, 0xB4, 0x94, - 0x25, 0xF8, 0xA5, 0xEB, 0x88, 0x00, 0xC8, 0xCA, 0xBA, 0x86, 0xF6, 0xB6, - 0xDA, 0xC0, 0xF3, 0x42, 0xDA, 0xE4, 0x16, 0xB1, 0x3A, 0xC1, 0xAB, 0x29, - 0xF8, 0xD2, 0xCF, 0xB6, 0x24, 0xBD, 0xE9, 0xA7, 0x18, 0xA7, 0xED, 0x80, - 0x0B, 0x0A, 0x91, 0xD7, 0x8C, 0xC9, 0x60, 0x5F, 0x73, 0xBE, 0x7C, 0x12, - 0x26, 0xED, 0xC5, 0xA4, 0x55, 0x83, 0x55, 0x93, 0x74, 0xF7, 0x1B, 0x05, - 0x8B, 0xBA, 0x88, 0x1D, 0x42, 0x9A, 0x15, 0x78, 0x9F, 0xE9, 0x62, 0x95, - 0x65, 0xD5, 0x16, 0x02, 0x1F, 0xCA, 0x13, 0xA8, 0x52, 0x84, 0xBF, 0xAD, - 0xE5, 0xDD, 0xDB, 0x18, 0xB5, 0x37, 0x8D, 0x70, 0x5E, 0xF9, 0xE3, 0xC2, - 0x33, 0x1F, 0xCC, 0x97, 0x52, 0x35, 0x13, 0xD9, 0xD0, 0x29, 0x44, 0x0B, - 0xD8, 0xBD, 0xB2, 0x93, 0x6C, 0x2C, 0xAC, 0x7B, 0x14, 0x94, 0x67, 0xCC, - 0x65, 0x5E, 0x78, 0x53, 0x82, 0x72, 0xFE, 0xFB, 0xD9, 0x04, 0x5F, 0x90, - 0x6C, 0xB0, 0xFB, 0x80, 0x6C, 0x7D, 0x0B, 0x62, 0x8B, 0x7B, 0x73, 0x7D, - 0x1F, 0x6B, 0x93, 0x7D, 0x07, 0x66, 0x98, 0xBB, 0xB2, 0x49, 0xB3, 0x34, - 0x10, 0xBB, 0x23, 0x2B, 0x14, 0xA0, 0xB4, 0x4A, 0xC1, 0x56, 0x7B, 0x47, - 0xD4, 0x49, 0x97, 0x4D, 0x69, 0x9C, 0xFC, 0x7C, 0xF2, 0x87, 0xF4, 0x8B, - 0xA4, 0xD6, 0xF8, 0xAE, 0x3B, 0x8F, 0x9A, 0x5B, 0x90, 0x29, 0x9C, 0xD9, - 0xE2, 0xA9, 0xA2, 0x60, 0x52, 0x4A, 0x1F, 0xE5, 0x6E, 0x7C, 0x49, 0xEC, - 0x83, 0xA8, 0x0E, 0x79, 0x5B, 0x0A, 0x1F, 0x53, 0xDB, 0x6C, 0xEF, 0x78, - 0x2D, 0x52, 0xBA, 0x00, 0x3A, 0x49, 0xB2, 0xB1, 0x56, 0x1C, 0x3B, 0x7E, - 0x99, 0x9C, 0x20, 0xB7, 0xC7, 0x9E, 0x8B, 0x8C, 0x88, 0xF2, 0x15, 0xFF, - 0x4F, 0x06, 0xF4, 0x1B, 0x6F, 0x02, 0x1E, 0x3A, 0x29, 0xA0, 0x7B, 0xFA, - 0x2C, 0x26, 0x58, 0xE3, 0x75, 0x5F, 0xB8, 0x94, 0x27, 0x70, 0xF6, 0xA5, - 0x79, 0x51, 0x0F, 0x72, 0x52, 0x81, 0xDC, 0xDC, 0x74, 0x93, 0xAF, 0xB4, - 0xB5, 0x9F, 0xF2, 0x03, 0x4F, 0x79, 0x0A, 0xC5, 0xB9, 0xC7, 0x3E, 0x12, - 0x53, 0x3A, 0x63, 0x6A, 0x8A, 0x27, 0xB6, 0x9D, 0x4C, 0x84, 0x87, 0x92, - 0xBF, 0x7D, 0x49, 0x52, 0xAF, 0x10, 0xCD, 0x6C, 0x58, 0xC5, 0xF0, 0xFE, - 0x59, 0x5C, 0xA8, 0x5A, 0xDE, 0x0E, 0x19, 0x23, 0x3F, 0x01, 0x87, 0xFD, - 0x95, 0xA8, 0x61, 0x90, 0x06, 0x49, 0x77, 0xD8, 0xAD, 0xC4, 0x5D, 0x72, - 0x65, 0x5D, 0x2A, 0x48, 0x70, 0xE1, 0x37, 0x2C, 0x20, 0x50, 0x24, 0xC4, - 0xE7, 0x74, 0x91, 0x30, 0x91, 0x0E, 0xA3, 0x8B, 0x73, 0x6C, 0x31, 0xE1, - 0xAF, 0xC7, 0x8C, 0x37, 0xF8, 0x22, 0x71, 0x36, 0xCA, 0xE0, 0xE1, 0x41, - 0xF6, 0x74, 0x26, 0x17, 0x08, 0xC2, 0xD9, 0xB5, 0xCE, 0x4A, 0x67, 0x17, - 0xC2, 0x54, 0xA0, 0x1F, 0x22, 0xFF, 0x8D, 0xB6, 0x60, 0x26, 0x7B, 0x7B, - 0x05, 0x0D, 0x69, 0xAE, 0x6F, 0x09, 0x78, 0x9D, 0xD0, 0x2C, 0x59, 0xB1, - 0xE7, 0xAB, 0x9F, 0x5F, 0x0C, 0xB7, 0xB4, 0x98, 0x47, 0x85, 0x28, 0x24, - 0x74, 0x05, 0x79, 0xC8, 0x37, 0xDB, 0x2D, 0x71, 0xBA, 0x70, 0x24, 0x1D, - 0xC6, 0x4C, 0x23, 0xF6, 0xFE, 0xE5, 0x47, 0x33, 0xA2, 0xAE, 0x44, 0xB1, - 0x64, 0x5D, 0xAB, 0xA3, 0xD5, 0xF1, 0x91, 0x12, 0xA1, 0x12, 0x42, 0xFC, - 0xF5, 0xE7, 0x15, 0x57, 0x1F, 0x3F, 0x08, 0x7F, 0xD4, 0x5D, 0x0B, 0x97, - 0x43, 0x0B, 0xF3, 0x36, 0x54, 0xF6, 0x0A, 0x54, 0xE4, 0x77, 0xBE, 0xDF, - 0x8A, 0xCA, 0xC2, 0x43, 0x5F, 0x4A, 0x32, 0xBC, 0x9A, 0x20, 0x27, 0xB3, - 0xB9, 0x2F, 0xA7, 0x92, 0x8E, 0xDD, 0x12, 0x15, 0x27, 0x5A, 0x0D, 0xD6, - 0x5E, 0xC7, 0xDE, 0xFB, 0x78, 0xE6, 0x63, 0x5E, 0x07, 0x35, 0xC7, 0xAE, - 0x04, 0xC0, 0x14, 0xDB, 0x26, 0x45, 0x4D, 0x57, 0x91, 0x4A, 0xB5, 0xDE, - 0xF8, 0x40, 0xE1, 0xE4, 0x6C, 0x32, 0xCC, 0x37, 0x44, 0x34, 0x05, 0xC8, - 0xC3, 0x49, 0x28, 0xFA, 0xED, 0x93, 0x08, 0x10, 0xA8, 0x8B, 0x00, 0x8C, - 0x4D, 0xF5, 0x23, 0xB1, 0x47, 0x2E, 0x2E, 0x6B, 0xC8, 0x18, 0x89, 0x86, - 0x59, 0xBA, 0xC7, 0x3F, 0x1C, 0xD5, 0x24, 0x35, 0xBC, 0x37, 0x46, 0x7F, - 0xB3, 0x7E, 0xEF, 0x35, 0xA9, 0x1C, 0x2D, 0x8F, 0x10, 0x11, 0x07, 0x8B, - 0x5C, 0x1C, 0x4C, 0x42, 0xC6, 0xE6, 0x17, 0x32, 0xF1, 0xBF, 0x61, 0x7A, - 0x75, 0x3E, 0x02, 0x58, 0xE1, 0x6B, 0x59, 0x1E, 0xFF, 0x16, 0xC8, 0x65, - 0xAF, 0xF1, 0xB1, 0x14, 0x86, 0x84, 0xC1, 0x03, 0x7A, 0x75, 0x7B, 0x9E, - 0x6B, 0xD2, 0x4C, 0x39, 0xD0, 0x01, 0x71, 0xB7, 0xFA, 0x36, 0x78, 0x59, - 0xB5, 0xF0, 0x63, 0xF1, 0x24, 0xD1, 0x10, 0x37, 0x92, 0xF6, 0x0F, 0x58, - 0x7A, 0xC7, 0xCE, 0xB5, 0xC9, 0x79, 0x1C, 0x38, 0x36, 0x07, 0x34, 0x99, - 0xCE, 0xC4, 0x97, 0x98, 0x7C, 0xA0, 0xA7, 0xD0, 0x04, 0x2B, 0x5F, 0x10, - 0xC9, 0xE8, 0x7A, 0xF6, 0x5C, 0xFC, 0xAC, 0xF4, 0x6F, 0x2E, 0x6B, 0xB7, - 0xE8, 0xC5, 0x26, 0xC5, 0xB1, 0x38, 0x8E, 0x5B, 0x81, 0x90, 0x1C, 0x38, - 0xB8, 0x8F, 0xD0, 0x82, 0x1B, 0xF0, 0x4A, 0x0C, 0x46, 0x8B, 0xED, 0x49, - 0x21, 0xD9, 0x6D, 0x17, 0x29, 0xA1, 0xBB, 0x59, 0xDE, 0x98, 0x24, 0xDF, - 0xAE, 0x07, 0xC5, 0x92, 0xD2, 0xC9, 0x92, 0x00, 0x8F, 0xB0, 0xB0, 0x36, - 0x58, 0xFA, 0xB8, 0xB0, 0x43, 0x17, 0xB0, 0xA3, 0x3B, 0xAF, 0x39, 0xB8, - 0x31, 0x8A, 0x38, 0xBF, 0xD2, 0xEE, 0x06, 0x0B, 0xB6, 0x99, 0x00, 0x41, - 0xF5, 0x72, 0x9A, 0x9C, 0x1F, 0xBA, 0xFB, 0x22, 0xB3, 0xA5, 0x8A, 0x11, - 0x7B, 0xF2, 0x53, 0xEB, 0x90, 0x60, 0x72, 0x3C, 0xC3, 0x56, 0xAC, 0xBD, - 0xE2, 0xFA, 0xBF, 0x37, 0xB8, 0x9F, 0xDD, 0x4E, 0xF1, 0x05, 0x9E, 0x65, - 0x3B, 0x45, 0x89, 0xA5, 0xD3, 0xA3, 0xBA, 0xD4, 0x1C, 0xCA, 0x0C, 0xCE, - 0xDC, 0x5C, 0x66, 0xFE, 0x4B, 0x44, 0x1A, 0xC9, 0xB0, 0x52, 0x02, 0xCD, - 0x47, 0x89, 0x90, 0x2E, 0xA4, 0x3F, 0xEC, 0x90, 0xCD, 0x84, 0xF3, 0x58, - 0x6B, 0x24, 0xBA, 0x03, 0xBC, 0x57, 0x1B, 0xA2, 0xAC, 0xF2, 0x80, 0x0F, - 0x26, 0x04, 0x59, 0xA2, 0x74, 0x07, 0x03, 0xFD, 0xC4, 0x57, 0x29, 0xCF, - 0x90, 0xF7, 0xD3, 0x58, 0x4A, 0x71, 0x69, 0x7C, 0x7F, 0x52, 0x77, 0x1B, - 0x0D, 0xFF, 0x0A, 0x59, 0x80, 0x4E, 0x3F, 0xE8, 0x82, 0xB6, 0xA5, 0x68, - 0x9C, 0x62, 0x3A, 0x6C, 0x71, 0x3A, 0xCA, 0x23, 0x6E, 0x03, 0xB1, 0x50, - 0x32, 0x13, 0x27, 0x81, 0xCB, 0x68, 0x42, 0x7D, 0x32, 0x23, 0x4F, 0x85, - 0x39, 0x76, 0x8C, 0x8F, 0xB0, 0x73, 0xD3, 0xED, 0x56, 0xF0, 0xC6, 0x66, - 0x01, 0x13, 0xB4, 0x13, 0x95, 0x8E, 0x49, 0x22, 0x4F, 0x5D, 0xFF, 0xDB, - 0xAE, 0x50, 0x71, 0x6E, 0xC2, 0xA2, 0xA7, 0x70, 0xEE, 0xDB, 0xB5, 0x18, - 0x1E, 0x4C, 0x0F, 0x57, 0xC7, 0x4E, 0x46, 0xDD, 0x78, 0x5F, 0x1A, 0xEE, - 0x02, 0xAC, 0x80, 0xE4, 0xA8, 0x38, 0x67, 0xAD, 0x5C, 0xF7, 0x00, 0xC5, - 0xCA, 0x0B, 0x52, 0x49, 0x94, 0x43, 0x97, 0x90, 0x46, 0xF5, 0x1A, 0xA5, - 0x21, 0x7E, 0x05, 0xAC, 0xF1, 0x97, 0x66, 0x42, 0xFB, 0x5D, 0x4F, 0x71, - 0x4B, 0x8E, 0x3E, 0xC3, 0x9E, 0x14, 0xF7, 0xAD, 0xDE, 0x34, 0xEB, 0x9C, - 0x06, 0xB1, 0x8A, 0xE2, 0x9D, 0xA6, 0x25, 0xFD, 0x1B, 0x69, 0xDF, 0x41, - 0x60, 0xBF, 0xA4, 0x04, 0x5C, 0xF7, 0x76, 0xFD, 0x22, 0x30, 0x0C, 0x63, - 0xDB, 0xAD, 0x42, 0xA8, 0x0A, 0x97, 0xE7, 0xF0, 0x57, 0x9D, 0x17, 0x6B, - 0x37, 0x5D, 0x35, 0xC9, 0x5F, 0xAC, 0xF6, 0xB8, 0x89, 0x41, 0xB0, 0x6F, - 0x49, 0xA8, 0x47, 0x61, 0xB1, 0x63, 0x65, 0x40, 0x07, 0xD8, 0xC5, 0x5A, - 0x5D, 0x1D, 0x82, 0x7F, 0xCC, 0x6A, 0xF2, 0xA1, 0x36, 0x3C, 0xC0, 0x51, - 0x6E, 0xD3, 0x4B, 0x36, 0xE0, 0x07, 0xCE, 0xA3, 0x9B, 0xB1, 0x13, 0x04, - 0x32, 0x87, 0x75, 0x4A, 0x16, 0x34, 0xB4, 0x75, 0x0F, 0x75, 0x33, 0x7C, - 0xEC, 0x02, 0x35, 0xA9, 0x49, 0x39, 0xF6, 0x24, 0x03, 0x73, 0xCE, 0x54, - 0x45, 0x02, 0x6C, 0x0A, 0x53, 0x2B, 0x73, 0x38, 0x3C, 0x81, 0x56, 0xA7, - 0xBB, 0xF2, 0x73, 0x0F, 0xC7, 0xB7, 0x0E, 0xAA, 0x45, 0x62, 0xA6, 0x29, - 0x8C, 0xC9, 0x0D, 0x45, 0x0E, 0xBD, 0xDB, 0xD8, 0x71, 0x5C, 0xD7, 0x18, - 0xFC, 0xB0, 0x61, 0x89, 0xA2, 0x22, 0xF4, 0xF5, 0x48, 0x38, 0xE8, 0x7F, - 0x17, 0x5C, 0x82, 0xF6, 0x2D, 0x1F, 0x28, 0x85, 0xD9, 0xB7, 0x16, 0xA4, - 0x52, 0x6F, 0x3A, 0xF1, 0xEE, 0xA7, 0x2D, 0x99, 0x71, 0xAD, 0xAA, 0x15, - 0x24, 0xD8, 0x86, 0x1D, 0x78, 0x90, 0x0B, 0x4C, 0x4E, 0x78, 0xC1, 0xC2, - 0xD7, 0xED, 0xE6, 0xB4, 0xF0, 0xAC, 0x2A, 0xFD, 0xE6, 0x75, 0xBA, 0xCA, - 0x0C, 0xAD, 0xD6, 0x3D, 0x38, 0x4D, 0x1F, 0xE9, 0x7D, 0x87, 0xA8, 0xCA, - 0x13, 0x1A, 0xFA, 0x72, 0x53, 0x8E, 0xB2, 0x2F, 0xE3, 0xAD, 0xAA, 0x8E, - 0x7A, 0xBA, 0x6A, 0xBC, 0x2C, 0x8E, 0xBA, 0xD5, 0x0B, 0x3E, 0x2F, 0x4D, - 0xB3, 0xC4, 0xF6, 0x6F, 0x01, 0xEF, 0x90, 0x60, 0xC9, 0x3D, 0xD2, 0x93, - 0x45, 0x03, 0xCB, 0x65, 0x11, 0xE1, 0xAD, 0x7A, 0x90, 0xCE, 0xFA, 0x41, - 0x05, 0x45, 0x55, 0x10, 0xE9, 0x44, 0xBF, 0x59, 0x58, 0xC2, 0x71, 0xDB, - 0x00, 0xBA, 0x0C, 0x32, 0x08, 0xF9, 0xB1, 0x58, 0xFA, 0xE6, 0x45, 0xFD, - 0x0B, 0xBC, 0x23, 0xB7, 0x82, 0xE1, 0x89, 0x3A, 0x1F, 0xA1, 0xDA, 0xD2, - 0x27, 0x7A, 0x0C, 0x18, 0xA1, 0x1D, 0x02, 0xD0, 0x59, 0xEE, 0xA8, 0x42, - 0xF4, 0x67, 0x02, 0x0A, 0xC1, 0xB0, 0xC2, 0x3E, 0x8E, 0x86, 0xAD, 0xB5, - 0x3B, 0x78, 0x05, 0xBE, 0x51, 0x12, 0xBF, 0x50, 0x58, 0xBD, 0xF3, 0x94, - 0xFB, 0x02, 0x04, 0x38, 0x5F, 0xFD, 0xDC, 0x7D, 0xCB, 0xDA, 0x26, 0x36, - 0x79, 0x5C, 0x89, 0x52, 0xB8, 0xF8, 0x96, 0x4B, 0xA9, 0x49, 0x43, 0xB5, - 0x32, 0x22, 0x40, 0x27, 0x67, 0xFE, 0x46, 0xB9, 0x0B, 0x17, 0x75, 0x4B, - 0xEB, 0x08, 0xA1, 0xDE, 0xC6, 0x7E, 0xD5, 0xAF, 0x4A, 0x69, 0xAA, 0x8C, - 0xA1, 0x74, 0x33, 0x54, 0x33, 0x47, 0x62, 0x00, 0xE8, 0x63, 0x76, 0x4C, - 0xE7, 0x76, 0xEE, 0x78, 0x5A, 0xB8, 0x44, 0x4A, 0x8F, 0x0D, 0xD7, 0x32, - 0xC4, 0xB9, 0xB0, 0x1A, 0xF9, 0x58, 0x8F, 0x9E, 0x06, 0x9F, 0x87, 0x9D, - 0x29, 0x1E, 0xBF, 0xA5, 0xFD, 0xA6, 0xCD, 0xF9, 0xD8, 0x6D, 0x01, 0xCC, - 0x0F, 0xF6, 0x52, 0xCB, 0xFA, 0xE0, 0xA5, 0x2D, 0xCC, 0xB9, 0xA0, 0xB1, - 0x9D, 0xD3, 0x09, 0x24, 0x34, 0xD7, 0x01, 0x15, 0x3D, 0xEB, 0x0F, 0x07, - 0xAC, 0x3A, 0x94, 0xCC, 0xAA, 0x52, 0x1E, 0xBD, 0x4C, 0x49, 0xCD, 0x22, - 0x85, 0x89, 0x47, 0x27, 0x21, 0x4E, 0x96, 0x41, 0x94, 0x6F, 0xFF, 0x2E, - 0x69, 0x3A, 0x6B, 0xA7, 0x74, 0xBA, 0x9B, 0xEB, 0x25, 0x5E, 0xA9, 0x5A, - 0xE0, 0x66, 0x59, 0xF6, 0x18, 0x5B, 0x77, 0xDF, 0x8E, 0x56, 0x67, 0x52, - 0x2C, 0xDA, 0x0C, 0xB0, 0xF2, 0xF8, 0xB9, 0xE2, 0x80, 0xB4, 0x2A, 0x6E, - 0xFF, 0x81, 0xC2, 0x72, 0x7C, 0xEE, 0x71, 0xC7, 0x06, 0xF5, 0x61, 0xAC, - 0xFC, 0x77, 0x84, 0xD4, 0xEB, 0x41, 0x95, 0x7F, 0xEE, 0xD0, 0xDD, 0x91, - 0x20, 0xAE, 0xF9, 0xBE, 0xF8, 0x30, 0xF3, 0x25, 0x57, 0xA4, 0x1D, 0xDB, - 0x0F, 0xD3, 0x5A, 0xA7, 0x93, 0x1B, 0x83, 0x4B, 0x62, 0xD4, 0x4C, 0xA1, - 0xD6, 0x34, 0x0D, 0xBC, 0x36, 0x00, 0x35, 0x65, 0x61, 0x14, 0x48, 0x03, - 0x4B, 0xB5, 0xBB, 0xFA, 0x5D, 0xB0, 0x2D, 0xCA, 0x8E, 0x54, 0x2A, 0xBA, - 0x77, 0xA4, 0xE4, 0x94, 0x31, 0x21, 0x0B, 0xDB, 0x04, 0xA2, 0x6B, 0xEB, - 0x80, 0xF2, 0x71, 0xD9, 0x2E, 0xDA, 0x8C, 0x61, 0xA5, 0x79, 0x48, 0x7F, - 0x70, 0xFB, 0x04, 0xF5, 0xB8, 0xA0, 0xCD, 0x1D, 0xB0, 0xBF, 0x62, 0x29, - 0xC1, 0xAB, 0xB1, 0xA1, 0xD8, 0x6E, 0x48, 0xC7, 0x0B, 0x20, 0x1A, 0xF6, - 0xD6, 0xB2, 0x37, 0xD2, 0xA3, 0xCC, 0x84, 0x33, 0xBD, 0x90, 0xFE, 0x23, - 0x10, 0x9A, 0x41, 0x0A, 0xBA, 0xB3, 0xE6, 0x75, 0x62, 0x7D, 0x91, 0x82, - 0x1C, 0x45, 0xBB, 0x24, 0xD3, 0x67, 0xDA, 0xB2, 0xA5, 0xE5, 0x0F, 0xDF, - 0x0B, 0x58, 0xDA, 0x25, 0xEB, 0x02, 0x66, 0xE1, 0x5C, 0xEA, 0x3E, 0x6B, - 0x32, 0xFF, 0xFA, 0x8A, 0x6F, 0x91, 0x23, 0x3E, 0x52, 0xD5, 0x84, 0x30, - 0xA4, 0x15, 0xB5, 0x04, 0xCC, 0xCE, 0x10, 0x9F, 0x04, 0xD2, 0x53, 0x94, - 0xB9, 0x01, 0x71, 0x0D, 0xA2, 0xA0, 0xCB, 0x8F, 0x9C, 0xA3, 0x49, 0x6C, - 0x2A, 0x3E, 0x88, 0xC3, 0x39, 0x05, 0x99, 0x57, 0xAE, 0xEA, 0x38, 0x78, - 0xF9, 0x4C, 0x49, 0x1D, 0xCE, 0x32, 0x10, 0x4A, 0x10, 0x24, 0x5D, 0x16, - 0xBE, 0x82, 0x40, 0x28, 0xC5, 0xC4, 0xC9, 0x4E, 0xE0, 0xF9, 0x68, 0xB8, - 0x83, 0x68, 0xAC, 0x2F, 0x74, 0xB1, 0x9B, 0x52, 0xFC, 0x0D, 0x31, 0xBB, - 0xF2, 0xB0, 0x24, 0x94, 0x78, 0x8C, 0x39, 0xEC, 0xA7, 0xDE, 0x3F, 0xF4, - 0xC7, 0xC8, 0x4A, 0x3B, 0x37, 0x42, 0x41, 0x46, 0x4B, 0x5D, 0x53, 0x6C, - 0x45, 0xB2, 0x2A, 0x6E, 0x6A, 0x4A, 0x8F, 0xDD, 0x56, 0x1E, 0xAA, 0xB2, - 0x41, 0x60, 0xDC, 0xE7, 0x45, 0x86, 0xFD, 0xE2, 0xCE, 0xD9, 0x9B, 0x98, - 0x39, 0x4E, 0xBE, 0x2B, 0x89, 0x2E, 0xEF, 0xCB, 0xE4, 0x4D, 0xCD, 0x00, - 0x0A, 0x8E, 0x69, 0xAD, 0x36, 0x0A, 0xBB, 0xCC, 0x5E, 0x8F, 0x5D, 0x12, - 0x30, 0x6E, 0xEF, 0xAE, 0x4E, 0xAD, 0xFE, 0xF8, 0x3D, 0x71, 0x61, 0x75, - 0x37, 0x5B, 0x61, 0xC7, 0x1B, 0x38, 0xFB, 0x16, 0x19, 0xD7, 0x82, 0x5F, - 0x98, 0x4E, 0xDF, 0x7E, 0xAD, 0x24, 0x38, 0x6E, 0xCF, 0xA6, 0xD0, 0x93, - 0xBE, 0x70, 0x16, 0x1C, 0x01, 0x29, 0xA9, 0x67, 0xD9, 0x08, 0x22, 0x48, - 0xDD, 0x1E, 0x82, 0x13, 0xB7, 0xA7, 0xFD, 0x74, 0xAE, 0xA2, 0xE4, 0xEA, - 0x60, 0xB8, 0xD1, 0x43, 0xDA, 0x35, 0xFF, 0x76, 0xF8, 0xF5, 0x91, 0x5F, - 0xB7, 0xEF, 0x21, 0x81, 0xA1, 0x8B, 0x88, 0xE7, 0x4E, 0xA4, 0x12, 0xDC, - 0x3C, 0x35, 0xA8, 0x9D, 0x27, 0x78, 0x1F, 0x48, 0xE7, 0x54, 0x4C, 0x98, - 0x7B, 0x13, 0x1F, 0x42, 0xD4, 0x36, 0x55, 0xDB, 0x96, 0x74, 0xE4, 0xDA, - 0xF2, 0xE3, 0xCC, 0xC1, 0xC8, 0x23, 0x4D, 0x90, 0x51, 0x77, 0x0B, 0xA3, - 0x4D, 0x0C, 0xDD, 0x19, 0x87, 0x13, 0x15, 0xDB, 0x4F, 0x39, 0x8B, 0x48, - 0x25, 0x85, 0x3B, 0x02, 0x1E, 0x73, 0x83, 0xEF, 0xBD, 0x5A, 0x13, 0x06, - 0xAD, 0xAB, 0x90, 0xD9, 0x9F, 0xBC, 0x59, 0xE7, 0x0A, 0xA8, 0xB6, 0xEF, - 0xAD, 0xB5, 0x37, 0x7B, 0x9D, 0xAA, 0xAC, 0x9C, 0xC7, 0x0F, 0x7B, 0x34, - 0x78, 0x83, 0x51, 0xCB, 0x5B, 0xD3, 0xFE, 0x14, 0x0E, 0xB1, 0x31, 0xAB, - 0x78, 0x9F, 0xDE, 0x3F, 0xDF, 0x05, 0x96, 0xA4, 0xA3, 0x44, 0x3B, 0x5F, - 0x20, 0x80, 0x5C, 0xE5, 0x02, 0xFF, 0xD2, 0xD3, 0xB9, 0x0A, 0xFD, 0x39, - 0x97, 0x39, 0x68, 0x43, 0x2E, 0x73, 0x18, 0x29, 0xFC, 0x9B, 0x2D, 0x03, - 0x4B, 0x93, 0xD0, 0x57, 0x82, 0x82, 0x14, 0x4C, 0xD3, 0x87, 0x21, 0x39, - 0x9E, 0x2B, 0x15, 0x6C, 0xCE, 0xB6, 0xB4, 0x69, 0x17, 0xE9, 0xD5, 0xA0, - 0x67, 0xED, 0x47, 0xAF, 0xAE, 0xFD, 0xBC, 0xA6, 0xAA, 0xC3, 0xEA, 0x86, - 0xF5, 0x5E, 0x2A, 0xA9, 0x41, 0xF9, 0x4D, 0x70, 0x77, 0x43, 0xBF, 0x31, - 0xCC, 0x02, 0x06, 0x31, 0xCB, 0x9C, 0x47, 0xD6, 0xAF, 0x79, 0x5B, 0xE3, - 0x0B, 0xA9, 0xCB, 0xBF, 0x42, 0xC4, 0x3E, 0xC2, 0x13, 0x3D, 0x5B, 0x5C, - 0x23, 0x82, 0xF3, 0x57, 0x08, 0xA7, 0x0A, 0x06, 0x73, 0xC3, 0x13, 0x86, - 0xE0, 0x24, 0xAC, 0x45, 0xA6, 0x93, 0x2D, 0x69, 0xA4, 0x13, 0x28, 0x18, - 0x7D, 0x92, 0xFB, 0x51, 0x3F, 0x9B, 0x62, 0xFD, 0x51, 0xA9, 0xDA, 0xFC, - 0x4A, 0xA0, 0x9D, 0xFC, 0x15, 0xE1, 0xFA, 0x19, 0x08, 0xD3, 0xB7, 0xE3, - 0x1F, 0xA5, 0x53, 0xA1, 0xFE, 0xFF, 0xA5, 0xF3, 0x28, 0x9D, 0x26, 0x12, - 0xED, 0xD2, 0x3C, 0xFA, 0x7E, 0x7C, 0x20, 0x8D, 0x9D, 0x4E, 0xD8, 0x6A, - 0xBD, 0xEE, 0xF8, 0x31, 0x29, 0xDF, 0x36, 0xC7, 0x2B, 0x5F, 0x45, 0xB7, - 0x9B, 0xAE, 0x33, 0x95, 0xE3, 0xE3, 0x9F, 0x0C, 0x9C, 0xEB, 0xCE, 0xD3, - 0xF2, 0x05, 0x3D, 0xDC, 0x0A, 0xD5, 0x7C, 0xF8, 0x4A, 0xDA, 0xEB, 0xA9, - 0x47, 0x90, 0xA1, 0x2B, 0x3E, 0xE3, 0x46, 0xFE, 0x44, 0xE4, 0x90, 0x55, - 0xD7, 0x3C, 0x36, 0xAF, 0xCE, 0x42, 0x1C, 0xC8, 0xD7, 0xF2, 0xAB, 0x02, - 0x4E, 0x6F, 0x3F, 0xA5, 0x71, 0x9B, 0xB4, 0x67, 0x65, 0x17, 0x06, 0x4C, - 0x7A, 0x0E, 0xF5, 0x22, 0x46, 0x11, 0x55, 0x21, 0xD8, 0x27, 0x16, 0x1D, - 0xB4, 0xF1, 0xA8, 0x5B, 0x9D, 0xA4, 0x4B, 0xD6, 0xEC, 0xC7, 0x20, 0x37, - 0x93, 0x20, 0x40, 0x12, 0x88, 0x9A, 0xE9, 0xDA, 0x63, 0x1A, 0xA4, 0xA6, - 0xE1, 0x3E, 0x04, 0xE2, 0x9C, 0x74, 0xDF, 0x7C, 0x4C, 0x34, 0xED, 0x58, - 0xAC, 0x6B, 0x55, 0x85, 0x9A, 0xC6, 0x9E, 0x3F, 0x00, 0x2F, 0x2E, 0x03, - 0xED, 0x48, 0xDD, 0xC2, 0x49, 0xF5, 0x2B, 0x64, 0x76, 0xD7, 0xF5, 0x2F, - 0xC3, 0xE0, 0xE8, 0x56, 0x4D, 0xD4, 0x64, 0x1B, 0xBB, 0xD3, 0x1B, 0x21, - 0x1F, 0x01, 0x4C, 0x32, 0xD2, 0xCC, 0xFD, 0xF5, 0x38, 0x99, 0xBC, 0x40, - 0x05, 0xE2, 0x02, 0xCB, 0x28, 0x92, 0xE5, 0x5D, 0xFF, 0x2A, 0xBC, 0xFF, - 0x98, 0x01, 0x7C, 0xEF, 0x04, 0x36, 0x50, 0xFC, 0x61, 0x35, 0xC6, 0xC1, - 0xB2, 0x1B, 0xCD, 0x8C, 0x38, 0x42, 0xBD, 0x8F, 0x84, 0x06, 0xBE, 0x4C, - 0x3F, 0xBE, 0xF0, 0xA2, 0x0A, 0x92, 0x4E, 0xD4, 0x87, 0x7E, 0x8A, 0x11, - 0x0B, 0x75, 0xF6, 0x5A, 0xBD, 0x3B, 0xB5, 0x9B, 0xFF, 0x39, 0x5E, 0x7E, - 0x3C, 0xA1, 0xBD, 0x76, 0xAF, 0xCB, 0x1B, 0xA5, 0x48, 0x35, 0x83, 0x89, - 0xCF, 0xB4, 0x18, 0x37, 0xFB, 0x95, 0x34, 0x4F, 0x39, 0x29, 0x17, 0x9C, - 0xBB, 0xDC, 0xF7, 0x68, 0x1B, 0xFB, 0x95, 0x42, 0xED, 0xA6, 0xFE, 0xE2, - 0xBE, 0x06, 0xDB, 0xE1, 0x6B, 0xC9, 0x54, 0x2F, 0xA3, 0x75, 0x91, 0xBE, - 0xE0, 0x55, 0x6B, 0xA5, 0xD8, 0x0E, 0xD0, 0xD0, 0x08, 0x64, 0xEE, 0xFC, - 0xEE, 0x7E, 0x39, 0xAC, 0x94, 0x9C, 0x3F, 0x77, 0xF2, 0xDA, 0xF5, 0xBE, - 0x9F, 0x91, 0x63, 0x68, 0xB6, 0xE2, 0x06, 0xAD, 0x8B, 0x1B, 0xDB, 0xE9, - 0x0D, 0x87, 0x6F, 0x78, 0x6B, 0x51, 0x86, 0xE1, 0x44, 0x91, 0xD7, 0x62, - 0x1D, 0x7F, 0x88, 0xE8, 0x2A, 0xAD, 0x19, 0x01, 0x02, 0x76, 0x05, 0x43, - 0xBE, 0x1A, 0xB8, 0x36, 0xC2, 0x0D, 0x24, 0x90, 0x2E, 0x13, 0xCF, 0xFC, - 0x0C, 0x3E, 0x18, 0x9D, 0xBF, 0x16, 0x1E, 0xAB, 0x22, 0x5B, 0xF8, 0x72, - 0xE0, 0xDF, 0xF9, 0x51, 0x73, 0xB2, 0x54, 0x99, 0x32, 0x00, 0x4E, 0x06, - 0x3F, 0xAA, 0x1F, 0xE5, 0x6C, 0xF0, 0x1D, 0xF5, 0xA0, 0x10, 0x2B, 0x63, - 0x1C, 0x65, 0xAA, 0xC6, 0x8C, 0x8D, 0x7D, 0xE5, 0xA8, 0x98, 0xBD, 0x0E, - 0xE4, 0xCF, 0x06, 0x28, 0x8A, 0xC3, 0xFB, 0x16, 0x2A, 0x29, 0xE7, 0xCA, - 0xDC, 0xCC, 0xAB, 0xB3, 0xF1, 0x7B, 0x87, 0x76, 0xBA, 0xB3, 0xA2, 0x70, - 0x47, 0x08, 0x52, 0x2F, 0x3A, 0xA6, 0x30, 0x0F, 0xA8, 0x66, 0x32, 0xC3, - 0x0B, 0x7F, 0x19, 0x24, 0x0A, 0xE3, 0x69, 0x09, 0xD4, 0x90, 0x14, 0xE8, - 0xF5, 0xD3, 0xAB, 0x7C, 0xB4, 0xB4, 0x2B, 0x4C, 0xB8, 0x44, 0x90, 0xCF, - 0xE4, 0xB1, 0x5C, 0xEE, 0x0E, 0xC1, 0x19, 0xFF, 0x10, 0xC6, 0x9A, 0xD5, - 0x32, 0x90, 0x69, 0x9D, 0xCF, 0xD4, 0x7B, 0x65, 0x39, 0x59, 0x19, 0x97, - 0x30, 0xB8, 0x00, 0xD1, 0xE2, 0x82, 0x61, 0xBF, 0x9C, 0x6E, 0x05, 0x6A, - 0xB4, 0x36, 0x42, 0xC2, 0x7A, 0xB9, 0x96, 0x6E, 0x62, 0x9C, 0x68, 0x11, - 0x71, 0x87, 0x64, 0x87, 0x96, 0x80, 0x56, 0x67, 0xFC, 0xDB, 0x71, 0x51, - 0x87, 0x4C, 0x5C, 0xFD, 0xA2, 0x90, 0xD2, 0x0E, 0x9C, 0x52, 0xD2, 0xE7, - 0x49, 0x07, 0x56, 0x12, 0xA6, 0xD8, 0x8A, 0x1C, 0xAD, 0xAF, 0xA7, 0x20, - 0x56, 0x1F, 0xD0, 0xCD, 0x93, 0xBE, 0x4F, 0xFB, 0x60, 0xA3, 0x10, 0xB5, - 0x79, 0xB5, 0x7E, 0x79, 0xF5, 0x2F, 0x57, 0xC2, 0xDD, 0x23, 0x23, 0x4E, - 0x91, 0xC2, 0xBD, 0x81, 0xDA, 0x48, 0x88, 0xA3, 0xDC, 0x2A, 0xF0, 0xBE, - 0x08, 0x00, 0xE7, 0xC6, 0xA4, 0x66, 0x16, 0x30, 0x40, 0xA5, 0xF1, 0x40, - 0x1C, 0x57, 0x5F, 0x1D, 0x96, 0x76, 0xF2, 0xE3, 0x71, 0xD4, 0x2E, 0x76, - 0x90, 0x32, 0x4F, 0x2F, 0xF5, 0xED, 0x59, 0x2F, 0x20, 0x97, 0x7A, 0x1F, - 0xE1, 0xE0, 0xE4, 0x1E, 0x93, 0xF3, 0x79, 0x8B, 0xCD, 0x0B, 0x84, 0x91, - 0xDF, 0x35, 0x7C, 0x7F, 0xEE, 0xC9, 0x61, 0xF1, 0xFD, 0xBF, 0xFB, 0xA0, - 0x09, 0x7A, 0xA1, 0xFF, 0xD6, 0x13, 0x14, 0xD7, 0xEB, 0x37, 0x26, 0x31, - 0x98, 0x16, 0xD8, 0xA7, 0xCE, 0x6C, 0x64, 0x71, 0xE0, 0xE3, 0x5C, 0x33, - 0x97, 0x9E, 0x1A, 0x25, 0x13, 0xBF, 0x05, 0x04, 0x0D, 0x11, 0xF3, 0x19, - 0x20, 0x43, 0x7B, 0x7D, 0x8A, 0x5F, 0x89, 0x05, 0xAC, 0x59, 0xBC, 0xDA, - 0x45, 0x57, 0x30, 0xA3, 0x68, 0x9F, 0x18, 0x0B, 0x9A, 0x41, 0x7E, 0x7B, - 0x85, 0x8E, 0x37, 0xAE, 0x2D, 0xDE, 0x7C, 0xE8, 0xB5, 0x37, 0xA7, 0xB9, - 0xF0, 0xA9, 0xA4, 0x55, 0x83, 0x3F, 0x8F, 0x1E, 0x01, 0x0C, 0xF9, 0x9E, - 0x43, 0x5C, 0x60, 0x3F, 0x26, 0xE4, 0xBB, 0x8B, 0xAC, 0x61, 0xFF, 0x2F, - 0x43, 0x1E, 0x6B, 0x0B, 0xFB, 0xC9, 0x6A, 0x8C, 0x22, 0x36, 0xC1, 0x21, - 0x77, 0x44, 0xFF, 0x2C, 0xF8, 0xCF, 0x29, 0x9F, 0x6F, 0x3E, 0x43, 0x2B, - 0xE2, 0x3F, 0x8E, 0x0F, 0xC1, 0x38, 0x2E, 0x7D, 0x25, 0x76, 0x1A, 0x10, - 0x19, 0xEE, 0x37, 0x05, 0xEB, 0x7A, 0x4F, 0x07, 0xD8, 0x1D, 0x0F, 0xF3, - 0x50, 0x43, 0x4E, 0x67, 0x85, 0x26, 0x16, 0xE5, 0x38, 0x3D, 0x3F, 0xEB, - 0x4C, 0x87, 0x5E, 0xDE, 0x9E, 0xD2, 0x82, 0x04, 0x5B, 0x69, 0x12, 0xEA, - 0xB4, 0x8D, 0x73, 0xE0, 0xA9, 0x1A, 0xEB, 0x19, 0x89, 0xEA, 0xBF, 0x6E, - 0xBA, 0x6D, 0x9D, 0x2B, 0x0B, 0x6A, 0x64, 0x50, 0x9B, 0x79, 0x30, 0xB3, - 0x12, 0x30, 0x89, 0x92, 0x0B, 0xF8, 0x88, 0x31, 0x7E, 0xB7, 0xD0, 0x2D, - 0x84, 0xFD, 0x7D, 0xE0, 0x08, 0x39, 0x84, 0x45, 0xD2, 0x5E, 0x1F, 0x42, - 0xEE, 0x2C, 0xF3, 0xE5, 0xBA, 0xB5, 0xA5, 0x50, 0xAB, 0xD2, 0xEB, 0xEB, - 0x72, 0x9A, 0xE7, 0x18, 0x7A, 0x41, 0xFE, 0x8A, 0xBB, 0x4F, 0x0B, 0x2B, - 0xB7, 0xF0, 0x12, 0x12, 0x58, 0xCC, 0xC1, 0x88, 0x9E, 0x20, 0xF2, 0xFA, - 0x0F, 0xE5, 0x36, 0xAD, 0x64, 0x05, 0xB4, 0x1C, 0xA4, 0xD8, 0x60, 0x36, - 0x7C, 0xD8, 0x1F, 0xED, 0xAA, 0x51, 0x60, 0x2F, 0x1F, 0x76, 0x80, 0xB9, - 0x02, 0xAA, 0x2C, 0x14, 0x17, 0xE6, 0xD2, 0xFE, 0x26, 0xBA, 0xD2, 0xE5, - 0xCB, 0x0B, 0x7D, 0xBE, 0xCC, 0x09, 0xD9, 0xEE, 0x8D, 0x23, 0x52, 0xFB, - 0x54, 0xF4, 0x9E, 0x3B, 0x2A, 0xEA, 0x91, 0x40, 0x6E, 0x3B, 0x03, 0xC0, - 0x82, 0x3D, 0x35, 0x72, 0xAD, 0xC5, 0xB9, 0x53, 0xA1, 0x82, 0x4E, 0xE9, - 0xB6, 0x99, 0x16, 0xF7, 0xE4, 0x98, 0x93, 0x70, 0xAB, 0xEB, 0x91, 0xC6, - 0x7E, 0x70, 0x5D, 0x47, 0xCF, 0x71, 0x5C, 0xCB, 0x61, 0x90, 0xDA, 0xD8, - 0xF1, 0x41, 0xA5, 0x85, 0xA2, 0x4A, 0x9A, 0x15, 0xA3, 0x9D, 0x4A, 0xC9, - 0x42, 0x9A, 0x41, 0x67, 0x68, 0x02, 0xC1, 0x8D, 0x5F, 0xD5, 0x7F, 0xDF, - 0x8F, 0x08, 0xE9, 0x96, 0xF9, 0x8A, 0x43, 0x30, 0xA6, 0x2F, 0x46, 0x31, - 0xCC, 0x73, 0x16, 0x31, 0xF5, 0x56, 0x19, 0x7B, 0x99, 0xC1, 0xF0, 0xA3, - 0x54, 0x90, 0xFF, 0x1E, 0x81, 0xCB, 0x88, 0x50, 0x64, 0x9F, 0x23, 0xFC, - 0xB5, 0x12, 0x24, 0xDC, 0xD2, 0x6B, 0x22, 0x5C, 0xED, 0xA3, 0xF2, 0x8B, - 0x0E, 0xE9, 0xD4, 0x8B, 0xAF, 0x94, 0x0B, 0xA4, 0x7B, 0x25, 0x88, 0xD8, - 0x4A, 0x5E, 0x33, 0x85, 0x5B, 0xD0, 0xD4, 0x50, 0xA4, 0xB2, 0xE5, 0x18, - 0x7B, 0x7B, 0xEE, 0xCB, 0xF0, 0xDA, 0xF5, 0x18, 0xD8, 0x5C, 0x22, 0x0B, - 0x11, 0xDE, 0x02, 0x1F, 0xF8, 0xC6, 0x0D, 0x75, 0x36, 0xCA, 0x82, 0xCE, - 0x46, 0x31, 0x8C, 0x5E, 0x6A, 0x28, 0x3E, 0xD5, 0x3F, 0xB7, 0x16, 0x31, - 0x13, 0x6A, 0x14, 0x59, 0x88, 0x6A, 0x55, 0x65, 0x8A, 0x21, 0xD5, 0x48, - 0xD3, 0x4A, 0xD1, 0x70, 0xF4, 0x3B, 0x72, 0xC2, 0x8D, 0x1E, 0x28, 0xAF, - 0x41, 0x7B, 0xC2, 0x0C, 0x82, 0x6C, 0x3D, 0xD9, 0x25, 0x48, 0x6C, 0xD9, - 0x49, 0x0F, 0x8A, 0xDF, 0x27, 0x6E, 0x1E, 0x21, 0xB7, 0x65, 0x5A, 0x8F, - 0x89, 0x4E, 0x3F, 0x82, 0x47, 0xBF, 0x7C, 0x21, 0x91, 0x75, 0x10, 0x55, - 0x54, 0x21, 0x95, 0xE3, 0xDC, 0x4F, 0x12, 0x0C, 0x1B, 0x55, 0xC2, 0xBE, - 0x85, 0x60, 0x57, 0xB3, 0x70, 0x31, 0x54, 0xD3, 0x53, 0x84, 0xB6, 0x93, - 0xB5, 0x68, 0xC2, 0x14, 0x80, 0xC9, 0x91, 0x32, 0x87, 0x96, 0xFA, 0x20, - 0x03, 0xC2, 0xBE, 0xC2, 0x42, 0xDC, 0x4D, 0x28, 0xC4, 0xC1, 0x95, 0x5D, - 0xCF, 0x4D, 0xFE, 0xFA, 0x09, 0x43, 0x4F, 0xC2, 0x30, 0x65, 0xC4, 0x55, - 0xDE, 0x05, 0x6C, 0x29, 0xFA, 0xDD, 0x9C, 0x17, 0x9F, 0x05, 0x89, 0xD9, - 0xA8, 0x97, 0x46, 0x8C, 0x85, 0x81, 0xFC, 0x99, 0x72, 0x4F, 0x0A, 0xA0, - 0x8F, 0xF3, 0x25, 0x89, 0xBA, 0xDD, 0x63, 0x53, 0x6B, 0xA7, 0x15, 0x20, - 0x14, 0x92, 0x88, 0x51, 0x23, 0x82, 0xA3, 0x9D, 0x0D, 0xC2, 0x79, 0xB7, - 0xA3, 0x18, 0x88, 0xC9, 0xE0, 0xB0, 0x56, 0x8F, 0x16, 0x16, 0x36, 0xAA, - 0x40, 0xC9, 0x61, 0x41, 0x30, 0x82, 0x65, 0x2F, 0x81, 0x57, 0xD3, 0x86, - 0x90, 0x05, 0xC4, 0x44, 0x04, 0x12, 0xC8, 0x1B, 0xB8, 0x4D, 0x6A, 0x06, - 0x1B, 0x9F, 0xEF, 0xC0, 0xA3, 0xE9, 0x9B, 0xEA, 0x70, 0xC0, 0xCE, 0x73, - 0x89, 0x5F, 0x6D, 0x0C, 0x9B, 0x4C, 0x3B, 0x96, 0xB2, 0x8B, 0x6B, 0xF5, - 0x07, 0x00, 0xE4, 0x30, 0xED, 0xE0, 0xB6, 0xF0, 0xB5, 0xF8, 0x1D, 0xFB, - 0xCC, 0xC9, 0x10, 0x66, 0x5B, 0xE0, 0x15, 0xFB, 0x1D, 0xB7, 0x5C, 0x67, - 0x7F, 0x52, 0xD5, 0xA0, 0xF0, 0x9A, 0x6D, 0x37, 0xA7, 0x1B, 0xBD, 0x1F, - 0x7B, 0xF9, 0x82, 0x11, 0x98, 0x7D, 0x27, 0x0B, 0xF5, 0x31, 0x5F, 0x20, - 0x8D, 0x47, 0xA0, 0xB4, 0xD3, 0x59, 0x4B, 0x17, 0xF9, 0xA2, 0x38, 0x66, - 0x31, 0x3F, 0x02, 0xCD, 0x5D, 0xBE, 0x5B, 0x06, 0x17, 0xD7, 0xEC, 0xC4, - 0xD1, 0x67, 0x97, 0x49, 0xBA, 0x1D, 0xE5, 0xCD, 0x8E, 0xCF, 0x0D, 0xCD, - 0x6B, 0xAB, 0x9A, 0xDA, 0x2F, 0x3F, 0x62, 0xDF, 0xFA, 0xE5, 0xEC, 0x50, - 0x6D, 0x62, 0xCB, 0x0F, 0x53, 0xC7, 0x8A, 0x33, 0xF5, 0xB2, 0x8D, 0xFD, - 0x85, 0x31, 0x06, 0xE3, 0xCE, 0x77, 0xB6, 0x8B, 0x2A, 0xC7, 0xC2, 0x72, - 0xD5, 0xA9, 0x06, 0xBF, 0xAF, 0x76, 0x6F, 0xC2, 0x62, 0x31, 0x9A, 0x89, - 0x87, 0xE7, 0x54, 0xD4, 0x8F, 0x32, 0x31, 0x40, 0xE8, 0xAF, 0x82, 0x6C, - 0x69, 0x18, 0x19, 0x25, 0x74, 0xF0, 0xD1, 0xEB, 0x43, 0x71, 0x50, 0x20, - 0xCD, 0x84, 0xE9, 0x94, 0x86, 0x17, 0xA0, 0xF9, 0xB8, 0x65, 0xFE, 0x48, - 0x81, 0x57, 0xCE, 0x0F, 0xA7, 0xF3, 0x28, 0x3F, 0x02, 0x0D, 0xD9, 0x78, - 0x7A, 0x2F, 0x9F, 0x36, 0xAD, 0x8D, 0x47, 0x76, 0x51, 0xA7, 0x95, 0xF2, - 0xE3, 0x20, 0xDB, 0x57, 0x7F, 0xA9, 0x26, 0x29, 0xF1, 0x0F, 0xF7, 0xAB, - 0x2F, 0x7B, 0x2F, 0xEB, 0x96, 0x6C, 0xFD, 0xAA, 0x25, 0x21, 0x35, 0x38, - 0x89, 0xFF, 0xAE, 0xCD, 0x5F, 0xA0, 0xFE, 0x0F, 0x57, 0x70, 0xC0, 0x65, - 0x49, 0xA6, 0x5E, 0x3F, 0xB5, 0x24, 0x8A, 0x46, 0x32, 0xA1, 0x12, 0xC0, - 0x79, 0x0B, 0xD6, 0xE4, 0x26, 0x21, 0x90, 0x25, 0xB6, 0x81, 0xE5, 0x84, - 0xB9, 0x4E, 0x78, 0xFF, 0x44, 0xB7, 0xDB, 0xD5, 0xE2, 0x9B, 0x46, 0xBF, - 0xB9, 0x5F, 0xC5, 0x70, 0xCC, 0xD3, 0xA2, 0x77, 0xAE, 0xAC, 0xCE, 0x52, - 0x08, 0x52, 0x34, 0x6C, 0x41, 0xDA, 0xD6, 0x03, 0x87, 0x71, 0xFB, 0xD6, - 0x2B, 0xFC, 0x64, 0x89, 0x9F, 0x5D, 0x1C, 0x4E, 0xEE, 0x2F, 0xE5, 0xAC, - 0x01, 0x31, 0x46, 0x63, 0x12, 0x45, 0x79, 0x41, 0x93, 0x0C, 0x1A, 0x6B, - 0x3E, 0x73, 0x25, 0xCE, 0xD9, 0x35, 0x87, 0xBD, 0x9F, 0x30, 0xBC, 0x82, - 0xA8, 0x47, 0xCE, 0x8F, 0x48, 0x77, 0x26, 0x71, 0xCB, 0x9B, 0xD3, 0x1A, - 0x79, 0x2A, 0x29, 0x78, 0x7C, 0x6D, 0x5A, 0x72, 0x01, 0x0B, 0xE1, 0x46, - 0x32, 0x65, 0x9D, 0x2B, 0xD4, 0xD6, 0x28, 0x1F, 0xB2, 0x23, 0xA9, 0xF6, - 0x62, 0x2F, 0xCD, 0x99, 0x6C, 0x5D, 0x03, 0x5D, 0xA0, 0x7A, 0xC4, 0x05, - 0x82, 0x71, 0xB3, 0xC3, 0x2B, 0x9B, 0xC5, 0x47, 0x22, 0x84, 0x29, 0x23, - 0xB7, 0x7D, 0xAF, 0xFA, 0xB7, 0x00, 0x10, 0xC9, 0xAB, 0xCF, 0xD6, 0xEA, - 0x24, 0xE3, 0x4A, 0x29, 0xDE, 0xD4, 0x93, 0x95, 0x44, 0xC5, 0xD7, 0xEC, - 0xA9, 0x2C, 0x31, 0x82, 0x12, 0x7E, 0x21, 0x47, 0x1C, 0x5A, 0xD5, 0xA1, - 0x19, 0x9A, 0x57, 0x42, 0x46, 0x70, 0x94, 0x6A, 0xC0, 0xC6, 0x66, 0xA9, - 0x88, 0xB6, 0x52, 0x5E, 0xB8, 0xB3, 0x09, 0x84, 0xF5, 0x0B, 0xF1, 0x2E, - 0x89, 0x0B, 0x01, 0xD0, 0x40, 0xFC, 0x97, 0xC4, 0xE4, 0xF0, 0x99, 0x1E, - 0x48, 0xA5, 0x20, 0x0B, 0x4F, 0xF4, 0xA7, 0x6E, 0xB5, 0x78, 0xB8, 0x80, - 0xFB, 0x5C, 0x51, 0x6B, 0xE3, 0x4E, 0x94, 0xF3, 0x94, 0xAC, 0xCC, 0xBB, - 0xA4, 0x39, 0x78, 0x67, 0xF9, 0x43, 0x73, 0x63, 0x6E, 0xC0, 0x51, 0xFB, - 0xEA, 0xEE, 0x85, 0x57, 0xD4, 0x16, 0xEB, 0xB0, 0x36, 0x1E, 0x2A, 0x80, - 0x8A, 0x63, 0x7B, 0x91, 0xB0, 0x6A, 0xA7, 0xC5, 0x59, 0x93, 0x04, 0x1E, - 0x44, 0x52, 0x02, 0xB2, 0xBB, 0xEF, 0x23, 0x07, 0x2F, 0x41, 0x93, 0x80, - 0x4A, 0x3E, 0x2B, 0x4A, 0x83, 0x79, 0x65, 0x1E, 0x02, 0x58, 0xD5, 0x3E, - 0x51, 0xFF, 0x5F, 0x8A, 0x3E, 0x09, 0x90, 0x02, 0xAF, 0x57, 0xCF, 0x0F, - 0x30, 0x78, 0x2F, 0x0D, 0x50, 0x51, 0xA9, 0x24, 0xD2, 0x10, 0xB5, 0xE2, - 0x3E, 0xD5, 0x53, 0xA2, 0xD9, 0xC6, 0x9C, 0xBC, 0xEB, 0x26, 0xAB, 0xEE, - 0x3B, 0x0E, 0x26, 0x03, 0x54, 0x73, 0x0E, 0x58, 0xDA, 0x92, 0x00, 0xA7, - 0x2A, 0xDC, 0xA7, 0xD2, 0x4B, 0x78, 0x20, 0x88, 0x5D, 0x11, 0x43, 0x15, - 0x67, 0xB5, 0xC2, 0x31, 0x78, 0xD7, 0xCB, 0x5A, 0x1A, 0x04, 0x38, 0xAF, - 0x1A, 0xDB, 0x24, 0x90, 0x5F, 0xF0, 0xB3, 0x11, 0xB9, 0x68, 0x9A, 0x8B, - 0x1B, 0x28, 0xCA, 0x51, 0x63, 0x8C, 0xD2, 0x70, 0xA9, 0x8B, 0x42, 0x69, - 0x86, 0x2E, 0x46, 0x5F, 0x85, 0xA7, 0x80, 0x4D, 0x70, 0x1E, 0xAE, 0x08, - 0xD2, 0xFC, 0xCF, 0x5E, 0xDB, 0x41, 0x9F, 0x21, 0xEF, 0xA6, 0x64, 0x38, - 0xE7, 0x73, 0xEF, 0xEA, 0xF9, 0x31, 0x61, 0x67, 0xEF, 0xD5, 0x21, 0x44, - 0xD9, 0x28, 0xB0, 0x6D, 0xD6, 0x11, 0xF9, 0x28, 0x02, 0x99, 0x84, 0x11, - 0x8A, 0xFB, 0x56, 0xF8, 0x37, 0x98, 0xDC, 0x90, 0x22, 0x13, 0xE3, 0x37, - 0xBF, 0x9A, 0xD4, 0x05, 0xBF, 0x69, 0x76, 0xE1, 0x70, 0x90, 0x81, 0x72, - 0xA5, 0x7A, 0x19, 0x6B, 0x68, 0x13, 0xF1, 0x05, 0xA4, 0xFB, 0xBA, 0x6F, - 0x13, 0xCB, 0x15, 0xA4, 0x5D, 0x09, 0x47, 0x4A, 0xD0, 0x50, 0x34, 0x00, - 0x45, 0xB8, 0xDF, 0x5E, 0x89, 0x02, 0x50, 0x42, 0x65, 0xDF, 0xB7, 0x46, - 0x59, 0x35, 0x81, 0xD9, 0x7D, 0xB6, 0x1E, 0x84, 0x41, 0x08, 0xBA, 0xFA, - 0x2B, 0xBB, 0x85, 0x92, 0x0A, 0x9C, 0x9F, 0x9E, 0x8F, 0xE2, 0x7A, 0xF7, - 0x6F, 0x5D, 0x8D, 0x0B, 0xA8, 0xE1, 0x02, 0x94, 0x54, 0x76, 0xFB, 0xD0, - 0x80, 0xEA, 0x66, 0x17, 0xE5, 0x76, 0x96, 0xF9, 0xC1, 0xB1, 0xA6, 0x7B, - 0x3C, 0x7C, 0xA8, 0x0B, 0x4E, 0x28, 0x8B, 0x46, 0xFE, 0x0B, 0xCC, 0x57, - 0x41, 0x54, 0x37, 0x49, 0x28, 0x19, 0xD8, 0x43, 0xBF, 0x59, 0x76, 0x59, - 0x37, 0x71, 0xD5, 0x19, 0x99, 0xD2, 0xA3, 0xD8, 0x0A, 0x09, 0x58, 0xF4, - 0xEE, 0xC6, 0xF4, 0x47, 0xD7, 0xB3, 0xB4, 0x42, 0x74, 0x71, 0x23, 0xF8, - 0xE0, 0x76, 0xA1, 0x91, 0x28, 0xE8, 0xE6, 0xFD, 0x38, 0x13, 0x02, 0xD0, - 0x07, 0x4C, 0x06, 0x1B, 0xB8, 0x18, 0xA5, 0xB3, 0x0F, 0xBF, 0x06, 0xBB, - 0x40, 0xD7, 0xE2, 0xE1, 0x54, 0xAC, 0x3F, 0x40, 0x5E, 0x68, 0x08, 0xA6, - 0xF2, 0x7B, 0xA7, 0x97, 0xFE, 0x05, 0x75, 0x41, 0x99, 0xBB, 0xCB, 0x2D, - 0xC9, 0xE9, 0x41, 0x69, 0xA5, 0x69, 0x51, 0xC0, 0x85, 0xD9, 0x3D, 0x82, - 0x09, 0xF8, 0x91, 0xCB, 0xE1, 0x89, 0xA6, 0xD1, 0x30, 0xBF, 0xF7, 0xFC, - 0x5E, 0x23, 0xBB, 0x66, 0x65, 0x17, 0x2B, 0x96, 0xF2, 0xA0, 0xF3, 0xA0, - 0xDA, 0xF2, 0x5B, 0x2A, 0xDA, 0x20, 0x25, 0x1C, 0x7B, 0x3E, 0x42, 0xEC, - 0xFC, 0xA0, 0x75, 0x1C, 0xDA, 0x96, 0x37, 0x40, 0xF9, 0xD7, 0x6C, 0xA5, - 0x2D, 0xE1, 0x9C, 0x69, 0x7D, 0xB3, 0x07, 0x8E, 0xC7, 0xE8, 0x8A, 0x24, - 0xDF, 0x77, 0x18, 0x4C, 0xCC, 0xAE, 0x1A, 0x5F, 0xF9, 0xC4, 0x21, 0x77, - 0xFA, 0x2B, 0xA7, 0x2C, 0xC3, 0xB4, 0x85, 0x3B, 0x2D, 0x34, 0xF7, 0x2D, - 0xFA, 0xE8, 0x42, 0xDA, 0x7D, 0x4B, 0x18, 0x40, 0xC6, 0xC6, 0x4B, 0xE4, - 0xCE, 0x64, 0x97, 0x46, 0xC1, 0xA0, 0x32, 0x1C, 0xA4, 0xBB, 0xA0, 0x6C, - 0x49, 0xE9, 0x80, 0x46, 0x08, 0xA8, 0x1B, 0x30, 0x5E, 0x79, 0x54, 0x74, - 0xE2, 0x0C, 0xC3, 0xD5, 0x5C, 0x27, 0xD0, 0x0C, 0x30, 0xDC, 0x24, 0x47, - 0x51, 0x78, 0xF5, 0x42, 0x37, 0xE2, 0x13, 0x4D, 0x6B, 0x1C, 0x3B, 0x92, - 0xF6, 0x70, 0xEE, 0x29, 0x04, 0xDF, 0x61, 0x68, 0x7E, 0xC9, 0xF2, 0xA8, - 0x9B, 0x0A, 0xD3, 0xC8, 0x2E, 0x34, 0x9B, 0x35, 0xE1, 0xD4, 0x7F, 0x15, - 0x1B, 0x77, 0xDE, 0xF6, 0x17, 0x44, 0xE8, 0xDA, 0xDF, 0x5D, 0xE1, 0xEE, - 0xA2, 0x4B, 0xBE, 0x7E, 0x69, 0xFA, 0x01, 0x27, 0x3F, 0x2C, 0xA6, 0x59, - 0x4C, 0x63, 0x68, 0x48, 0x66, 0xC9, 0x43, 0xAB, 0x2A, 0x44, 0x20, 0xC7, - 0x04, 0x29, 0x0A, 0xA5, 0x83, 0x8C, 0xD7, 0x84, 0xE0, 0x87, 0xBB, 0x16, - 0xBF, 0xC3, 0xBD, 0xC9, 0x84, 0x41, 0x15, 0x9A, 0xDC, 0x67, 0xD8, 0x08, - 0xB1, 0x89, 0xE1, 0xDC, 0x4C, 0x66, 0xFA, 0x64, 0x1E, 0x21, 0xC8, 0x89, - 0x1F, 0xC3, 0x74, 0x82, 0xB9, 0x88, 0x2B, 0x05, 0xA4, 0x95, 0xB2, 0x50, - 0xE6, 0xC2, 0x85, 0xC6, 0x4B, 0xE1, 0x7E, 0xB0, 0x63, 0x29, 0x9C, 0x2E, - 0x51, 0x52, 0xB8, 0xB9, 0xC6, 0x00, 0xE1, 0x7C, 0xA8, 0xFD, 0x41, 0x6D, - 0xF0, 0x6E, 0x20, 0x53, 0xB6, 0x2E, 0x2A, 0x42, 0xD7, 0xDF, 0x0F, 0xA5, - 0x4E, 0x77, 0xC9, 0xEF, 0xBA, 0x71, 0xA7, 0x51, 0x39, 0xB1, 0xDB, 0xF6, - 0x81, 0x67, 0x0E, 0x87, 0x87, 0xE6, 0x47, 0x89, 0xC7, 0xF3, 0xDD, 0xB4, - 0x6C, 0xA5, 0x53, 0x83, 0xBF, 0xD7, 0xEC, 0xBE, 0xED, 0x8A, 0xAD, 0xE2, - 0x31, 0x43, 0x9E, 0x2C, 0xBE, 0xAD, 0x0F, 0x60, 0xA9, 0xEA, 0xB2, 0x95, - 0x0B, 0xBE, 0x13, 0x3C, 0x98, 0x9C, 0xED, 0x0A, 0x04, 0x36, 0xBD, 0x7A, - 0x9F, 0x21, 0x41, 0x17, 0xA4, 0x89, 0x01, 0x62, 0xD5, 0x3C, 0xCF, 0xF9, - 0xD7, 0x68, 0x4B, 0x3A, 0xF4, 0x89, 0x10, 0x08, 0x10, 0x0C, 0xC5, 0x7C, - 0xAD, 0x97, 0x24, 0x7C, 0xF5, 0x52, 0xB6, 0x65, 0xEE, 0x3F, 0x76, 0x81, - 0x41, 0xDF, 0x19, 0x8C, 0x75, 0x1D, 0x8E, 0x09, 0xCA, 0x60, 0xBD, 0x29, - 0x91, 0x68, 0x2C, 0x4C, 0x23, 0x90, 0x75, 0x27, 0x7F, 0xA5, 0x40, 0xB8, - 0xAC, 0xE8, 0xFC, 0xDB, 0xCB, 0xDD, 0x2A, 0xFA, 0x8A, 0x76, 0x3D, 0x9D, - 0xF7, 0x74, 0x16, 0x7C, 0x31, 0x6A, 0x88, 0x93, 0x95, 0xD6, 0x5F, 0xE8, - 0xBE, 0x1B, 0x0C, 0x4D, 0x65, 0xC1, 0xF6, 0x0D, 0x8E, 0xC9, 0x71, 0x13, - 0x61, 0x26, 0xBD, 0xB5, 0xFD, 0x16, 0xDF, 0xE1, 0x2E, 0x36, 0x8C, 0xA8, - 0x51, 0xB7, 0x9B, 0xB1, 0x69, 0x35, 0xD1, 0xF6, 0x09, 0x3D, 0x09, 0xB7, - 0xDD, 0xAC, 0x39, 0xBD, 0x3F, 0x1D, 0xA6, 0xB8, 0xA2, 0xE8, 0x70, 0x17, - 0x9F, 0x49, 0xF9, 0x29, 0x48, 0xDF, 0xA3, 0xBF, 0x95, 0x8C, 0xD2, 0x8E, - 0x32, 0xD1, 0xDD, 0x98, 0x49, 0xC8, 0xBC, 0xA2, 0xAD, 0x99, 0x5A, 0xB4, - 0x33, 0x51, 0x3D, 0xB8, 0x6E, 0xA3, 0x72, 0xDD, 0xEF, 0x45, 0x51, 0xEC, - 0x06, 0x8D, 0xFE, 0x15, 0xA9, 0x76, 0x69, 0xA1, 0xAF, 0x75, 0x1B, 0xE7, - 0x8E, 0xDE, 0x4B, 0xF7, 0x49, 0xDC, 0x66, 0xAA, 0xBE, 0xDA, 0x01, 0x18, - 0xA7, 0x2A, 0x11, 0xA3, 0x16, 0xF7, 0x29, 0x2C, 0x97, 0xCC, 0x2B, 0x54, - 0xBC, 0xEF, 0x9F, 0x94, 0xC8, 0xA4, 0xB8, 0x87, 0x01, 0x3F, 0x0C, 0x69, - 0xD5, 0xE9, 0xB9, 0x71, 0x30, 0x9B, 0xAC, 0x1B, 0x1F, 0xB2, 0xC0, 0x67, - 0x52, 0x78, 0x91, 0xBA, 0x3F, 0x2F, 0xC3, 0x5C, 0x80, 0x39, 0x70, 0x1C, - 0x7E, 0x07, 0x71, 0x70, 0x9D, 0x95, 0x6D, 0xE2, 0x0A, 0x5D, 0x1E, 0x19, - 0x06, 0x9A, 0x85, 0xE1, 0x2E, 0xD5, 0xFA, 0x02, 0x2E, 0x32, 0x53, 0xAD, - 0x05, 0x2F, 0xEC, 0x08, 0x7E, 0xDD, 0x71, 0x9D, 0x34, 0xFC, 0x9D, 0x0D, - 0x44, 0x4E, 0x3E, 0x20, 0x00, 0xA8, 0x76, 0x02, 0xF8, 0xBF, 0x6B, 0x9F, - 0x4A, 0x60, 0x99, 0xA1, 0x74, 0x4B, 0xB9, 0x91, 0x16, 0x4D, 0x41, 0xC5, - 0xA1, 0x33, 0xD3, 0x90, 0x8A, 0x2F, 0x83, 0x92, 0x8B, 0x53, 0x1D, 0x29, - 0x8F, 0x97, 0xD8, 0xA0, 0x48, 0x63, 0xB4, 0x43, 0x20, 0x82, 0xC7, 0xC2, - 0x0A, 0x7F, 0xFB, 0x07, 0x74, 0x31, 0x54, 0x2A, 0xCB, 0xCA, 0x7E, 0xD6, - 0x91, 0x6B, 0x82, 0x73, 0x51, 0x66, 0x7B, 0xDF, 0x63, 0x53, 0x08, 0xFC, - 0x17, 0x20, 0xA9, 0x87, 0x1D, 0x24, 0xD0, 0x44, 0x45, 0xBC, 0x80, 0x80, - 0x4B, 0x52, 0x90, 0x4E, 0xA5, 0xDF, 0xD1, 0x3F, 0xA9, 0xCC, 0xD7, 0xD9, - 0xAD, 0x1F, 0x65, 0x63, 0xA6, 0x57, 0x85, 0x39, 0x98, 0x33, 0xE8, 0xBC, - 0xF5, 0xE2, 0xD2, 0x4B, 0xF7, 0xEA, 0x61, 0xE3, 0xFA, 0xF3, 0x73, 0x6C, - 0xA2, 0x0A, 0x26, 0xCB, 0x09, 0x2E, 0xC4, 0x03, 0x38, 0x97, 0x7A, 0x3A, - 0xC7, 0xB0, 0x0C, 0x35, 0x6D, 0x73, 0x14, 0x70, 0x01, 0xF6, 0x8F, 0x67, - 0xBA, 0xD9, 0x4E, 0xAF, 0xEA, 0x96, 0x3D, 0xC6, 0x7E, 0xE7, 0x2B, 0x29, - 0x27, 0xAB, 0xFA, 0xA8, 0x08, 0xB1, 0x01, 0x20, 0xF3, 0xD1, 0x45, 0x35, - 0x33, 0x56, 0x26, 0x81, 0x00, 0xB2, 0x41, 0x01, 0x1A, 0x71, 0x28, 0x35, - 0xF4, 0x43, 0x2F, 0x48, 0x59, 0x69, 0x22, 0x5A, 0x89, 0x8D, 0xC7, 0x38, - 0x5F, 0x12, 0x40, 0x65, 0x7B, 0x89, 0x06, 0x76, 0x74, 0x08, 0xE5, 0xFC, - 0x83, 0x61, 0x2B, 0xAF, 0xB4, 0xE0, 0xE4, 0x51, 0x4D, 0xF7, 0x31, 0x09, - 0x0A, 0xC0, 0xB9, 0x47, 0x23, 0xCB, 0xF7, 0x90, 0x86, 0x65, 0x27, 0xF3, - 0x65, 0xBF, 0x52, 0xAF, 0x4A, 0x3E, 0xBF, 0x0C, 0x9E, 0xC9, 0x6D, 0x4D, - 0xD6, 0x64, 0x77, 0x59, 0x2B, 0x88, 0x6B, 0xD7, 0x7E, 0xBF, 0x8F, 0x53, - 0x48, 0xD8, 0x9E, 0x6E, 0x7E, 0x16, 0x60, 0x4C, 0xE9, 0x33, 0x83, 0x01, - 0x74, 0xCD, 0x1F, 0x8B, 0x4F, 0x3A, 0xEA, 0xCC, 0x45, 0xEE, 0x8F, 0xEA, - 0x0C, 0x40, 0x76, 0xA7, 0xDF, 0x69, 0xFE, 0xD4, 0xD3, 0x23, 0x93, 0x07, - 0x77, 0x8D, 0xCD, 0x20, 0xE9, 0x71, 0xB7, 0xFA, 0xFB, 0x27, 0x6D, 0x0A, - 0xBC, 0x1E, 0xFE, 0x49, 0x2B, 0x15, 0x68, 0x9B, 0x58, 0x3A, 0xA7, 0xC5, - 0xB8, 0x17, 0xA3, 0xAA, 0xCF, 0xF7, 0x91, 0x2E, 0xF2, 0xFC, 0xA4, 0xDC, - 0x50, 0xB3, 0x19, 0x5C, 0x85, 0xA2, 0x89, 0x8C, 0xBB, 0x9A, 0x12, 0x45, - 0xC9, 0x06, 0x36, 0xA3, 0x10, 0x3F, 0x4A, 0x0E, 0x08, 0x7F, 0xF9, 0x45, - 0x09, 0xBC, 0xD5, 0xAC, 0x56, 0x6F, 0xB4, 0xC1, 0x15, 0x4E, 0xD4, 0x55, - 0xD1, 0xF4, 0x97, 0x19, 0x7E, 0x88, 0x4E, 0xA7, 0x95, 0x5B, 0x89, 0xF9, - 0x4A, 0x7A, 0xDD, 0x69, 0xB9, 0xEF, 0xB6, 0x1D, 0x68, 0x98, 0xAB, 0xBE, - 0xF9, 0x10, 0x12, 0x79, 0xC0, 0x2E, 0x08, 0x8B, 0xD4, 0xFE, 0xFB, 0x33, - 0xF5, 0x17, 0x6F, 0x71, 0x71, 0xD9, 0x95, 0x08, 0xBC, 0x05, 0x71, 0x6A, - 0x54, 0x99, 0x80, 0x94, 0x8A, 0x92, 0x2B, 0x1A, 0x52, 0x60, 0x53, 0xAC, - 0xB0, 0x58, 0xE1, 0x97, 0xC6, 0xAB, 0x1A, 0x81, 0x89, 0xBE, 0x60, 0xB1, - 0x16, 0x79, 0xED, 0x3D, 0xE5, 0x31, 0xA2, 0x35, 0x74, 0x26, 0xAE, 0xFF, - 0xEB, 0x7D, 0x62, 0xD0, 0x08, 0x00, 0x44, 0x9C, 0xBA, 0x22, 0x1F, 0x4D, - 0x12, 0x1C, 0xF6, 0xEF, 0x43, 0x31, 0xBA, 0x80, 0xB7, 0x21, 0x2C, 0xAA, - 0x0C, 0x47, 0xAA, 0x50, 0xC9, 0xE5, 0x9B, 0x6F, 0xAF, 0x69, 0x92, 0xD6, - 0x72, 0x73, 0xAE, 0x2D, 0x7B, 0x60, 0x91, 0x0B, 0xC5, 0x48, 0x4D, 0xE4, - 0x1B, 0x92, 0xC5, 0x60, 0x81, 0xF5, 0x96, 0xD5, 0x19, 0x72, 0x39, 0xF6, - 0xC7, 0x47, 0x81, 0x3C, 0x2E, 0x5D, 0xDA, 0xBE, 0xAE, 0xF0, 0x04, 0x40, - 0x2C, 0x0F, 0x98, 0x91, 0x2A, 0xB3, 0x2B, 0x90, 0xCD, 0x31, 0x92, 0x75, - 0x9A, 0x93, 0x51, 0x83, 0x74, 0xCD, 0xFE, 0x53, 0x00, 0x99, 0xAE, 0x49, - 0x47, 0x4B, 0x4F, 0x04, 0x70, 0xEE, 0x58, 0x4D, 0x84, 0x97, 0x7C, 0x75, - 0x46, 0xBC, 0x64, 0xC7, 0x85, 0xA9, 0x0A, 0x7D, 0x5C, 0x6C, 0x9A, 0x21, - 0x0B, 0x2A, 0x16, 0xF6, 0x96, 0xE6, 0x35, 0x6B, 0x59, 0xB1, 0xBB, 0xF7, - 0xC2, 0x24, 0x33, 0x52, 0x79, 0x55, 0x33, 0x8D, 0xE6, 0xD0, 0xD8, 0xA7, - 0xE5, 0x18, 0x5F, 0xF3, 0xE1, 0xE4, 0x23, 0xFF, 0xBF, 0x16, 0xDC, 0xFE, - 0x5F, 0x32, 0x99, 0x2B, 0x22, 0x1A, 0x77, 0x2A, 0xAD, 0x04, 0x07, 0x3C, - 0x15, 0xBF, 0x99, 0x53, 0x9C, 0x29, 0x2B, 0x67, 0xAF, 0xDD, 0x51, 0x89, - 0x03, 0x85, 0xFF, 0x64, 0x2E, 0x1D, 0x0B, 0x03, 0x32, 0xB9, 0x51, 0xB8, - 0xE4, 0x9F, 0x54, 0x49, 0xC4, 0x32, 0x0F, 0x99, 0x34, 0xB3, 0x51, 0xE9, - 0x2D, 0x75, 0xF3, 0xF8, 0x04, 0x86, 0x6B, 0x84, 0xB0, 0x97, 0x95, 0xF4, - 0x38, 0x4C, 0x8C, 0x88, 0x49, 0x48, 0x9E, 0x59, 0x0E, 0x8B, 0xB1, 0xE1, - 0x41, 0x66, 0x10, 0x94, 0x59, 0xF9, 0x6E, 0x78, 0xCC, 0x11, 0x80, 0x92, - 0x33, 0x7E, 0x6A, 0xB8, 0xC9, 0x33, 0xE8, 0xDD, 0x1B, 0x3F, 0x74, 0x79, - 0x42, 0x5C, 0x93, 0x00, 0x4B, 0x68, 0xDA, 0x70, 0x8A, 0xB5, 0x24, 0xFD, - 0x6B, 0x14, 0xF8, 0x1A, 0x26, 0x6A, 0x21, 0x36, 0x7C, 0xF6, 0x49, 0x44, - 0xB4, 0xA6, 0x59, 0xF3, 0x00, 0x76, 0xC5, 0x8A, 0x30, 0xF4, 0x9C, 0x13, - 0xC9, 0xB2, 0xCE, 0xF1, 0x3F, 0xAB, 0x75, 0xD6, 0x4F, 0x36, 0xEA, 0x86, - 0x12, 0x7A, 0x9A, 0x54, 0x68, 0xEA, 0x13, 0xF4, 0x39, 0xC1, 0xC5, 0x70, - 0x22, 0x79, 0x21, 0x0D, 0x7B, 0x47, 0x02, 0x97, 0x14, 0xFF, 0xD2, 0xBE, - 0x99, 0x84, 0x0F, 0x3E, 0xDF, 0xA5, 0x64, 0x98, 0xDF, 0xF8, 0xAA, 0xA2, - 0xD2, 0xED, 0xE8, 0x6E, 0x41, 0xF4, 0x04, 0x3C, 0xE8, 0x39, 0x80, 0x07, - 0xBA, 0x7A, 0xCF, 0x69, 0x32, 0xDB, 0x7B, 0x72, 0x56, 0xE4, 0x1A, 0xA9, - 0x87, 0xB2, 0x32, 0x3F, 0xD9, 0xF4, 0x3F, 0x4B, 0x04, 0xF2, 0xE1, 0x55, - 0xD0, 0xED, 0x5D, 0xD9, 0x57, 0x7A, 0x04, 0x08, 0x05, 0x68, 0x15, 0x7B, - 0x41, 0x61, 0x73, 0x52, 0x7C, 0xC9, 0x23, 0x30, 0x7A, 0x2F, 0xA4, 0xDF, - 0x53, 0xEB, 0x99, 0xAF, 0x28, 0x89, 0x47, 0x10, 0xC5, 0xFD, 0xE0, 0x72, - 0xA3, 0x5D, 0xE1, 0x02, 0x22, 0x49, 0x25, 0xDF, 0x00, 0x71, 0x26, 0xE7, - 0xC5, 0x16, 0x6C, 0x5F, 0x24, 0x7F, 0xBF, 0x12, 0x2E, 0x71, 0xF1, 0x54, - 0x15, 0xE3, 0x76, 0xDA, 0x27, 0x41, 0x8E, 0xF8, 0xA0, 0xC0, 0xF9, 0x5F, - 0x6D, 0x4F, 0xC5, 0x4B, 0x58, 0xB5, 0xAB, 0xC4, 0x40, 0xA4, 0x89, 0x32, - 0x08, 0x63, 0x5F, 0x68, 0x93, 0x56, 0x1C, 0x1F, 0x6F, 0xDE, 0xF1, 0x63, - 0x28, 0x2E, 0x88, 0x52, 0x10, 0x3C, 0xFC, 0xEF, 0x03, 0x87, 0x91, 0xA5, - 0x22, 0x06, 0x58, 0x88, 0x4F, 0x2C, 0x0B, 0x11, 0xFC, 0x21, 0x23, 0xB8, - 0x6A, 0xBD, 0x21, 0x5B, 0x0C, 0x59, 0x2D, 0x6C, 0x83, 0x6F, 0x7C, 0xF8, - 0x4D, 0x7F, 0x62, 0xBC, 0xD1, 0x7D, 0x39, 0x6E, 0x78, 0xCB, 0x88, 0xF2, - 0x98, 0xDC, 0xBE, 0xCE, 0x38, 0x45, 0xF5, 0xE9, 0x3F, 0x58, 0x54, 0x62, - 0xB4, 0x15, 0xE6, 0xF7, 0xE3, 0xCA, 0x91, 0x05, 0x35, 0x8C, 0x6A, 0xE6, - 0x08, 0xFC, 0x05, 0x6D, 0x64, 0x31, 0x4B, 0xA4, 0x61, 0x21, 0x99, 0x4D, - 0x51, 0xF5, 0x98, 0x07, 0x65, 0x3F, 0xD0, 0x6A, 0x8F, 0xDB, 0x8B, 0xB2, - 0x0E, 0x43, 0x75, 0x49, 0x5D, 0x57, 0xAF, 0x98, 0x51, 0xA8, 0x28, 0x62, - 0x8B, 0xBA, 0x47, 0x60, 0x90, 0xCC, 0xC8, 0xC2, 0x8D, 0xA7, 0xC0, 0xD5, - 0x80, 0x6D, 0x54, 0x7F, 0xCD, 0xC6, 0xE6, 0x08, 0x23, 0x84, 0x69, 0x79, - 0x29, 0x8F, 0x47, 0xB7, 0x85, 0x78, 0x8F, 0x29, 0xE1, 0x53, 0x50, 0xE4, - 0x1B, 0x77, 0x66, 0x10, 0x63, 0xBF, 0xA4, 0xC2, 0xDF, 0xB3, 0x2C, 0x87, - 0x21, 0x34, 0xE4, 0xE6, 0xE4, 0x6F, 0x2F, 0x5D, 0x5E, 0x45, 0xCF, 0x31, - 0x7C, 0x4A, 0x5E, 0x99, 0xB9, 0x81, 0xAF, 0x9C, 0xCD, 0x24, 0x6B, 0x33, - 0xE6, 0x8D, 0xB8, 0xB8, 0xA0, 0xDE, 0x15, 0x41, 0xFA, 0xBA, 0x21, 0xFC, - 0x5D, 0xD0, 0x85, 0x3E, 0xD2, 0x06, 0x43, 0x3E, 0x93, 0xD6, 0x83, 0x58, - 0x74, 0x57, 0xE0, 0xBD, 0x11, 0x4E, 0xF4, 0x17, 0xEA, 0x1C, 0x8B, 0x22, - 0xB7, 0x6E, 0x89, 0x92, 0xC8, 0x48, 0xF9, 0x88, 0xEA, 0x46, 0x83, 0x54, - 0x76, 0x94, 0xFD, 0x58, 0xD3, 0xA7, 0xD3, 0x24, 0xAF, 0xC9, 0x05, 0x64, - 0x76, 0xC9, 0xC5, 0xA6, 0x41, 0x2E, 0xD7, 0xAA, 0x37, 0x72, 0x7A, 0x7C, - 0x1B, 0x69, 0xBD, 0xA4, 0xD2, 0x43, 0x9D, 0xC6, 0xE4, 0x20, 0x8F, 0x08, - 0x31, 0xE7, 0x6E, 0xD4, 0xFB, 0x2D, 0x85, 0x3D, 0x5A, 0x21, 0xEC, 0x03, - 0xB5, 0x66, 0xFE, 0xF0, 0x24, 0x2A, 0xBF, 0x32, 0x6D, 0x5C, 0x4D, 0x9C, - 0x4B, 0x22, 0x49, 0xEC, 0x72, 0x9B, 0x9A, 0x36, 0x03, 0x91, 0x8C, 0x7C, - 0xB9, 0xE9, 0x8D, 0x72, 0xE0, 0xB0, 0x52, 0x63, 0x2E, 0xDB, 0x9C, 0x0D, - 0x55, 0x33, 0xA5, 0x17, 0x7A, 0x2D, 0xAF, 0x75, 0x69, 0x50, 0x7D, 0xDC, - 0xEE, 0x26, 0xC6, 0xE3, 0x26, 0xF9, 0x59, 0xF9, 0x10, 0x42, 0x1E, 0xC7, - 0x3E, 0x11, 0xCB, 0xFA, 0x4E, 0xE6, 0xAB, 0x6E, 0xA9, 0x1C, 0xD1, 0x76, - 0x20, 0xB6, 0xD6, 0xBD, 0xD3, 0xCA, 0x9C, 0x82, 0x33, 0xB8, 0x5E, 0xED, - 0xCA, 0x2C, 0x50, 0xC3, 0x58, 0x13, 0x7A, 0xA7, 0xF0, 0x92, 0x89, 0x04, - 0xF8, 0x27, 0x98, 0xE2, 0x1C, 0xF2, 0xDA, 0xF6, 0x4D, 0xC0, 0x6A, 0x1C, - 0xC5, 0xA5, 0x79, 0x6B, 0x84, 0x37, 0x05, 0x90, 0x6A, 0x0E, 0x2B, 0xAF, - 0x96, 0x9E, 0x45, 0xDB, 0x79, 0xDA, 0x2F, 0x46, 0x5F, 0xE2, 0xE8, 0xA6, - 0xC6, 0x00, 0xF2, 0x8F, 0xC2, 0xA0, 0xF9, 0x32, 0x53, 0x63, 0xF9, 0xED, - 0x9C, 0x0F, 0x29, 0x8F, 0x5D, 0x6C, 0x56, 0xE9, 0xBF, 0x52, 0xB1, 0xB5, - 0xD3, 0x8A, 0xE4, 0xE6, 0x1D, 0xB2, 0xC9, 0x0E, 0x8F, 0x28, 0xB0, 0xBF, - 0x68, 0x91, 0x87, 0x8E, 0x30, 0x6A, 0xF6, 0x5E, 0x44, 0x81, 0x3E, 0xAA, - 0xC2, 0x93, 0x9D, 0x41, 0xAE, 0x54, 0xF1, 0x96, 0x40, 0x30, 0x5F, 0xAD, - 0x44, 0xCF, 0xB4, 0x34, 0x86, 0xE2, 0xF4, 0x97, 0x14, 0x21, 0x1D, 0xA5, - 0x58, 0xAF, 0x7B, 0x32, 0x5D, 0x63, 0x9A, 0x9D, 0x2A, 0x7C, 0xDA, 0xAD, - 0xD5, 0xB2, 0xA8, 0x0D, 0x8F, 0xDA, 0x44, 0xCE, 0xB6, 0xA0, 0xC3, 0x3C, - 0x73, 0xC5, 0x8C, 0x9B, 0x62, 0x0C, 0xF2, 0x79, 0x3C, 0x78, 0xF8, 0xC3, - 0xC4, 0x4B, 0xAE, 0x29, 0x5A, 0x30, 0xC9, 0xB9, 0x6A, 0xE4, 0x52, 0x09, - 0xE1, 0x09, 0x60, 0x8B, 0x56, 0x90, 0x84, 0xE2, 0x5A, 0x07, 0x88, 0x25, - 0x03, 0xB7, 0x5B, 0x86, 0x1E, 0x68, 0x2C, 0x25, 0x5D, 0xFE, 0xB9, 0x5A, - 0xF0, 0xDC, 0x81, 0x1F, 0xEE, 0xF7, 0x11, 0x94, 0x67, 0x85, 0x13, 0xEC, - 0x65, 0xEC, 0x83, 0x53, 0x81, 0x57, 0xEB, 0x95, 0xF5, 0xCE, 0xFF, 0x26, - 0xDE, 0x85, 0xDD, 0x7D, 0xA3, 0xFB, 0xA2, 0xB9, 0xD9, 0x33, 0x82, 0x0D, - 0x43, 0xC9, 0x1B, 0x72, 0x14, 0x39, 0x24, 0x57, 0x2A, 0x8E, 0x36, 0xA6, - 0x86, 0xCC, 0xE8, 0x1F, 0x6B, 0xAD, 0x7B, 0x0E, 0x89, 0xF9, 0x1C, 0xBB, - 0x6E, 0x43, 0x99, 0xD5, 0xAA, 0x59, 0xDF, 0x63, 0x12, 0x29, 0x56, 0xCD, - 0x55, 0x56, 0xFC, 0x3E, 0xC2, 0x38, 0xD4, 0x65, 0x59, 0xE8, 0x6E, 0x31, - 0xFE, 0xA8, 0x18, 0xAA, 0xB4, 0x4C, 0x72, 0x3C, 0xB2, 0xBD, 0xA7, 0x54, - 0x8B, 0x53, 0xF8, 0xF7, 0xB8, 0x80, 0xCE, 0x06, 0x89, 0x5E, 0x9D, 0x19, - 0x29, 0xDE, 0x73, 0x01, 0xCF, 0x0C, 0xD2, 0xF8, 0xE3, 0x2B, 0x3D, 0x7C, - 0x84, 0xFF, 0x4D, 0xE3, 0x2E, 0x33, 0x6F, 0x47, 0x1E, 0x97, 0xB3, 0x55, - 0x0B, 0x5C, 0xE3, 0xAB, 0x9C, 0xCB, 0x40, 0x82, 0xD6, 0xA3, 0x47, 0x8B, - 0xFF, 0xB1, 0x26, 0x44, 0xE3, 0x7E, 0x39, 0xDB, 0xDD, 0x1B, 0x35, 0xE6, - 0x6E, 0xF2, 0x48, 0x57, 0x09, 0x02, 0xB6, 0xA4, 0xD4, 0xB9, 0x7E, 0x20, - 0x93, 0x8F, 0x59, 0xE7, 0x2D, 0x0D, 0xB8, 0x82, 0x9A, 0xA4, 0xC7, 0xB2, - 0x2A, 0x31, 0x88, 0x52, 0x98, 0xDF, 0x4C, 0xF6, 0xD4, 0xB4, 0xD2, 0x71, - 0x41, 0xAA, 0x37, 0x52, 0x34, 0x70, 0x51, 0x9B, 0x33, 0x2D, 0xA3, 0x71, - 0x3E, 0xB4, 0xC2, 0x5B, 0xEC, 0xC4, 0xD4, 0x51, 0xF5, 0x8A, 0xD8, 0xB2, - 0x87, 0xAE, 0x41, 0xC2, 0xBA, 0x0B, 0x43, 0xEA, 0x83, 0xD8, 0x32, 0x97, - 0x5C, 0xCA, 0xF6, 0xBD, 0x65, 0x89, 0xF7, 0x92, 0x8E, 0xF9, 0x97, 0x7F, - 0xF7, 0x17, 0x28, 0x47, 0x45, 0xB3, 0xEB, 0x71, 0x86, 0x16, 0x40, 0x86, - 0x28, 0x43, 0x33, 0x92, 0x11, 0x06, 0xED, 0x26, 0x5D, 0x8F, 0x35, 0xAB, - 0xA7, 0xF6, 0x6C, 0xCE, 0x29, 0x62, 0xD6, 0xBE, 0x16, 0xA3, 0x6B, 0x34, - 0xAE, 0x40, 0xED, 0x25, 0x2A, 0xA7, 0x84, 0x1A, 0x7F, 0xB0, 0xBE, 0x2E, - 0x09, 0x8A, 0x06, 0x90, 0x11, 0x2D, 0x54, 0x88, 0x2C, 0x23, 0x78, 0x4A, - 0x79, 0x13, 0x39, 0xEA, 0xC5, 0x4F, 0x05, 0x30, 0x46, 0xBB, 0x38, 0xF1, - 0x47, 0x36, 0xBF, 0xAF, 0xD1, 0x7E, 0x3A, 0x7B, 0x31, 0x54, 0x22, 0x2F, - 0x3D, 0xA6, 0xAB, 0x10, 0x1A, 0x3B, 0x76, 0x9A, 0xED, 0xCC, 0xD2, 0xD3, - 0x29, 0xA5, 0x90, 0xEB, 0x57, 0x15, 0x1D, 0xC8, 0xB6, 0xCD, 0xD0, 0x11, - 0x44, 0x2C, 0x7B, 0xCF, 0x42, 0xA0, 0x76, 0xE2, 0x14, 0x43, 0xC0, 0xBD, - 0x53, 0x22, 0x37, 0x4E, 0x83, 0xD2, 0x91, 0x47, 0xDD, 0xCB, 0x8E, 0x5A, - 0xB0, 0xA6, 0xB0, 0x13, 0x84, 0x81, 0x6A, 0x59, 0xC4, 0xC9, 0x58, 0x1A, - 0x3B, 0x41, 0x09, 0x2B, 0xC1, 0xCB, 0x39, 0x98, 0xE8, 0xDD, 0x1B, 0x45, - 0x5F, 0xB6, 0x86, 0x6B, 0x41, 0x7C, 0x32, 0xDC, 0x0E, 0x03, 0xE7, 0xF3, - 0xB9, 0x65, 0x8E, 0x3A, 0x69, 0x67, 0x8E, 0xE2, 0x6D, 0x6F, 0xB7, 0xA7, - 0x2A, 0x93, 0x9D, 0xEA, 0xA7, 0x2E, 0x82, 0x88, 0x67, 0xC6, 0x91, 0x36, - 0xDC, 0x93, 0x47, 0x9A, 0xCD, 0xF9, 0xF6, 0xFA, 0x2A, 0x3A, 0x85, 0xD1, - 0x66, 0x48, 0xFC, 0x1A, 0x9E, 0x64, 0x6C, 0x20, 0xD4, 0x19, 0x07, 0xDA, - 0xE3, 0xC3, 0x54, 0xD2, 0x45, 0xB5, 0x47, 0x10, 0x2A, 0xB4, 0x00, 0xDF, - 0x06, 0xF6, 0xE4, 0xBF, 0x47, 0x6C, 0x61, 0xDD, 0xD7, 0x3C, 0xE2, 0x27, - 0x3A, 0x4E, 0xEE, 0xCA, 0x07, 0x03, 0x7E, 0xFC, 0x41, 0x94, 0x3B, 0xA8, - 0xD5, 0x28, 0x65, 0xBE, 0x55, 0x28, 0x69, 0x10, 0xF3, 0x91, 0xCE, 0xF8, - 0x84, 0x65, 0x45, 0xDC, 0xB0, 0x54, 0x79, 0x1A, 0x17, 0x60, 0x61, 0xBD, - 0xB6, 0x2C, 0x93, 0x21, 0x8E, 0x19, 0x35, 0x27, 0x9B, 0x5E, 0xFE, 0x8D, - 0xB4, 0x1A, 0xD6, 0xD1, 0xB2, 0xCE, 0xC6, 0x20, 0x6B, 0x92, 0xEC, 0x78, - 0xF8, 0x7D, 0x93, 0x22, 0xF0, 0xD5, 0xD4, 0x5B, 0x41, 0xF3, 0xC2, 0x32, - 0xB7, 0x58, 0x5E, 0x40, 0x9E, 0x0F, 0x93, 0x2A, 0xBC, 0xBC, 0xD5, 0x33, - 0x27, 0x13, 0x0E, 0x4B, 0x9B, 0x8F, 0x3D, 0x77, 0x02, 0x24, 0xA4, 0x72, - 0xAE, 0x77, 0xE4, 0x1A, 0xE8, 0xA3, 0x88, 0x7C, 0xDC, 0x15, 0x23, 0x62, - 0xD1, 0x53, 0xF8, 0x2F, 0x42, 0xAB, 0xC1, 0xF9, 0x43, 0x4F, 0x5E, 0xAD, - 0x44, 0xD3, 0x8B, 0x36, 0x39, 0x5C, 0xAB, 0x52, 0x3D, 0xEB, 0x86, 0x00, - 0x49, 0x18, 0x3C, 0x3C, 0x5A, 0x2B, 0xD0, 0xD4, 0xEF, 0xD9, 0xEA, 0xC5, - 0x51, 0x53, 0xBD, 0xBD, 0xBE, 0x42, 0x37, 0x37, 0x74, 0x89, 0xBB, 0x1D, - 0x6E, 0x2D, 0x42, 0xD3, 0x73, 0x28, 0x47, 0x2F, 0xFD, 0x2C, 0xC0, 0xE0, - 0xBE, 0xFD, 0x7D, 0x4E, 0x8A, 0xD8, 0xC6, 0xE0, 0xFE, 0xF5, 0xE0, 0x33, - 0x2D, 0xB2, 0x38, 0xAC, 0x83, 0xDF, 0x6D, 0x7F, 0x29, 0xAA, 0x0C, 0x12, - 0x74, 0xC0, 0x5B, 0xB6, 0x7E, 0x7F, 0x07, 0x83, 0xC9, 0x70, 0x2E, 0x89, - 0x86, 0x13, 0xE6, 0xBA, 0x83, 0xE6, 0x41, 0xA2, 0xC2, 0xFF, 0xE4, 0x33, - 0x77, 0xD8, 0x42, 0x80, 0x46, 0xDB, 0x0C, 0x02, 0xF1, 0x4D, 0xAD, 0x82, - 0x0E, 0x6F, 0xE2, 0x76, 0x3F, 0x5E, 0x16, 0x23, 0xF8, 0xC9, 0x8D, 0x55, - 0x91, 0xBA, 0x52, 0xEF, 0x8A, 0x49, 0x0E, 0x33, 0x7A, 0xF6, 0xB5, 0x62, - 0xD3, 0x79, 0xC4, 0x99, 0x49, 0xE9, 0x81, 0xC1, 0xF9, 0x3F, 0x75, 0x9E, - 0x24, 0x14, 0x9A, 0x9D, 0x70, 0x62, 0x04, 0x6A, 0xB4, 0x3C, 0xA9, 0xDB, - 0x46, 0x5C, 0x3C, 0xDE, 0xA3, 0xF4, 0xCE, 0x9D, 0x4C, 0x84, 0x69, 0xDA, - 0x0E, 0x29, 0x86, 0x8F, 0xF0, 0xD1, 0x3A, 0x33, 0xE4, 0xEE, 0xFC, 0x8D, - 0xA9, 0x51, 0x3C, 0x60, 0x27, 0x61, 0x3F, 0x90, 0xE4, 0xC9, 0x71, 0xE1, - 0xEB, 0xF9, 0x04, 0xEB, 0xA3, 0xB8, 0xAD, 0x04, 0x82, 0x2B, 0x40, 0x13, - 0x46, 0xC0, 0x47, 0x72, 0xC7, 0x37, 0xD5, 0xCF, 0x0E, 0x93, 0x58, 0x2C, - 0xED, 0x03, 0x68, 0xE2, 0x78, 0xFD, 0x70, 0xE8, 0x53, 0x27, 0x06, 0x70, - 0x7A, 0x7F, 0x85, 0xEF, 0x2B, 0x98, 0x7F, 0xFD, 0x34, 0x2B, 0xAC, 0xA0, - 0x46, 0x35, 0x56, 0x75, 0x96, 0x0B, 0xF9, 0xEC, 0xE4, 0x9B, 0xBD, 0x1E, - 0xE0, 0x94, 0x67, 0x86, 0xD3, 0xBB, 0xE4, 0x53, 0x82, 0x28, 0x29, 0xC2, - 0x1B, 0x3F, 0x79, 0x86, 0x44, 0x6A, 0x50, 0x1E, 0xCE, 0x1B, 0xCC, 0x8C, - 0x13, 0x49, 0x32, 0xE3, 0xE6, 0xD1, 0x5B, 0xDD, 0x59, 0x33, 0x75, 0x95, - 0xF2, 0xC1, 0xC5, 0x77, 0x08, 0x81, 0x47, 0x39, 0xCD, 0xBA, 0x78, 0xA1, - 0x47, 0xD4, 0x2C, 0xDE, 0x9F, 0xB0, 0x20, 0x55, 0xA1, 0x4B, 0xD9, 0x0A, - 0xA8, 0x9C, 0xFE, 0x8C, 0x5F, 0x80, 0x2B, 0x90, 0x5D, 0x86, 0xB5, 0x91, - 0x31, 0x5C, 0x34, 0x4A, 0xC8, 0x27, 0xFF, 0x2D, 0xDA, 0xA8, 0xA3, 0xBE, - 0x9A, 0xB3, 0x24, 0x8A, 0xB4, 0x1C, 0xCC, 0xC1, 0x80, 0x75, 0xEB, 0x88, - 0x79, 0xA2, 0x20, 0xD9, 0x7E, 0x13, 0xCC, 0x6E, 0xE9, 0x2E, 0xA0, 0x3A, - 0x46, 0x2F, 0xA1, 0x99, 0xDE, 0x57, 0xE4, 0x33, 0x10, 0xB2, 0xC8, 0xE5, - 0xCF, 0xC0, 0x75, 0x9E, 0xF7, 0xB9, 0x74, 0xA8, 0xD0, 0x56, 0xFF, 0x86, - 0x95, 0x73, 0xE1, 0x36, 0xF5, 0xED, 0x89, 0x0C, 0x35, 0x25, 0xDF, 0x05, - 0xDB, 0xAA, 0x09, 0x54, 0x29, 0xF4, 0x96, 0xD1, 0x82, 0x50, 0xC2, 0x60, - 0x2C, 0xE4, 0xCB, 0x86, 0xBE, 0xAB, 0xB1, 0x05, 0x1D, 0x85, 0xA6, 0x76, - 0xA3, 0xE2, 0x4E, 0x74, 0x71, 0xEB, 0x65, 0xA1, 0x53, 0xF6, 0x32, 0x67, - 0x3A, 0x56, 0x2A, 0xE3, 0xE1, 0x8E, 0x75, 0xCF, 0xE0, 0xB2, 0xBB, 0x40, - 0x0A, 0xD1, 0x93, 0x83, 0xA0, 0x21, 0x29, 0x77, 0xC1, 0x8D, 0x67, 0x67, - 0x27, 0xF0, 0xB1, 0x9B, 0x1C, 0xD2, 0x3F, 0x93, 0x63, 0x86, 0x38, 0x12, - 0xB6, 0x33, 0x6D, 0xAB, 0x5B, 0x16, 0xF2, 0xB5, 0xAD, 0x30, 0xD6, 0xDD, - 0xA7, 0xA1, 0x9F, 0xDD, 0x52, 0xEE, 0xEA, 0x50, 0xD4, 0x36, 0x1E, 0x9C, - 0x2B, 0xD0, 0x45, 0xEF, 0x7E, 0x43, 0xC7, 0x72, 0xBB, 0x55, 0xF7, 0xF6, - 0x32, 0xE8, 0xC4, 0xAE, 0x48, 0x1A, 0x6A, 0x8D, 0xE1, 0xA0, 0xBC, 0x83, - 0x0F, 0x4A, 0xAC, 0x9C, 0x6F, 0x98, 0x56, 0x8A, 0x66, 0x73, 0x15, 0x07, - 0xA6, 0x46, 0xD1, 0x6B, 0x07, 0x1C, 0x36, 0x1E, 0xC9, 0x48, 0x8A, 0x05, - 0xC2, 0x1D, 0x9D, 0x54, 0x37, 0x34, 0x8F, 0x4B, 0xD7, 0x63, 0x1F, 0xC3, - 0x02, 0xC2, 0x11, 0x70, 0x40, 0x61, 0x4F, 0xE1, 0x17, 0x63, 0xDF, 0x21, - 0x50, 0x7D, 0x08, 0x02, 0xB6, 0x97, 0x11, 0x2E, 0xF5, 0xE6, 0x0C, 0x94, - 0x10, 0x31, 0x5A, 0x51, 0x5D, 0x00, 0x84, 0xC2, 0x86, 0x90, 0xD4, 0xAE, - 0x34, 0xB7, 0x1E, 0x97, 0x80, 0x3F, 0x85, 0x52, 0x2D, 0x7A, 0xBD, 0x32, - 0x03, 0x2B, 0x9F, 0xF5, 0xCA, 0x85, 0x6D, 0x9A, 0xF3, 0x65, 0xAF, 0xE2, - 0x60, 0xDF, 0x8C, 0x4F, 0x18, 0xD1, 0x85, 0xD3, 0x01, 0x6B, 0x07, 0xA0, - 0x54, 0xB6, 0xCB, 0x25, 0xB3, 0x92, 0x96, 0xC5, 0x0B, 0xE8, 0xB4, 0xA4, - 0x60, 0x23, 0x81, 0x47, 0xBA, 0xAD, 0x31, 0x05, 0x58, 0x3D, 0xC4, 0xA9, - 0xF7, 0xAB, 0x9E, 0x9F, 0xAF, 0x7E, 0xAA, 0x20, 0xB5, 0xA4, 0xA5, 0x9A, - 0x46, 0xF7, 0xCC, 0xE8, 0xFE, 0x6B, 0x93, 0x07, 0x7B, 0x43, 0x9F, 0x79, - 0x55, 0x4E, 0xAB, 0xCD, 0xEF, 0x3A, 0xA1, 0x8E, 0xC4, 0xDE, 0x62, 0x5F, - 0x0A, 0xFF, 0xC7, 0x1B, 0x4E, 0x53, 0x50, 0x36, 0x93, 0x1C, 0x47, 0xF2, - 0x6A, 0x58, 0xD0, 0xBF, 0x70, 0x8B, 0x45, 0x34, 0x34, 0x33, 0x9E, 0x44, - 0xB9, 0x64, 0xED, 0x9B, 0x6D, 0x07, 0x5F, 0x8C, 0x12, 0xEF, 0xDC, 0x26, - 0xFF, 0x4C, 0xCE, 0xCE, 0x8D, 0xB9, 0x91, 0xC7, 0x82, 0xBF, 0x08, 0x23, - 0xA8, 0x9A, 0x8E, 0x21, 0x8C, 0xDE, 0x1C, 0x92, 0x5B, 0xB0, 0x70, 0x69, - 0x42, 0xD6, 0xB9, 0x94, 0x1A, 0xA2, 0x12, 0x91, 0xF1, 0x54, 0x80, 0x02, - 0x0C, 0xD2, 0x54, 0x17, 0x4C, 0x29, 0xEA, 0x31, 0xC1, 0x60, 0x94, 0x9F, - 0x44, 0xDF, 0x7B, 0x38, 0xFE, 0xD4, 0x32, 0x36, 0x6C, 0xD4, 0x6A, 0xD1, - 0x3D, 0x6C, 0x73, 0x77, 0x81, 0xDC, 0xE2, 0x9D, 0x48, 0x5A, 0xB2, 0x95, - 0x28, 0x40, 0x5F, 0xF5, 0x6C, 0x9A, 0x63, 0x4B, 0x24, 0xD5, 0xE3, 0x25, - 0x75, 0xD4, 0xAC, 0x87, 0xA4, 0x55, 0x97, 0xA7, 0xB0, 0xD7, 0x06, 0x10, - 0xD5, 0x0F, 0xC9, 0x8F, 0xC7, 0x6C, 0x63, 0x49, 0x81, 0x14, 0x24, 0xB0, - 0x2C, 0xAA, 0xDE, 0x01, 0xB0, 0x4E, 0x2C, 0xD8, 0xB7, 0xDF, 0x24, 0x21, - 0xF8, 0x07, 0xF6, 0x36, 0x93, 0x09, 0x66, 0x1D, 0xBF, 0x6D, 0x76, 0xA7, - 0xDC, 0xA2, 0x67, 0xAA, 0x9E, 0x04, 0xB4, 0x9C, 0xE9, 0xBC, 0x78, 0xDC, - 0xEC, 0x1D, 0x4D, 0xED, 0x5F, 0x9F, 0xAA, 0xFF, 0x75, 0x24, 0x3A, 0x95, - 0xF8, 0xA2, 0xC0, 0x38, 0x73, 0xEF, 0xFF, 0x11, 0x71, 0xDE, 0xBB, 0x76, - 0x19, 0xBA, 0xB9, 0xB0, 0xA6, 0x1B, 0x0F, 0x33, 0xFA, 0x3B, 0xB5, 0x4D, - 0x32, 0x9F, 0x15, 0x09, 0xC3, 0x22, 0xCE, 0x73, 0x31, 0xDD, 0x23, 0xBF, - 0x1E, 0x99, 0x57, 0x6D, 0x0B, 0xDF, 0xF8, 0xFD, 0xAC, 0x41, 0xA7, 0x91, - 0x8B, 0x70, 0x5C, 0x41, 0x02, 0x77, 0x52, 0x1D, 0xAC, 0xBF, 0xBD, 0x03, - 0xA3, 0x5A, 0xC4, 0x61, 0xA8, 0xE1, 0x00, 0xE1, 0x77, 0x14, 0x7E, 0x5F, - 0xDF, 0x11, 0x80, 0x40, 0xBA, 0xA1, 0x07, 0x9F, 0xC7, 0xED, 0xC6, 0x77, - 0xF4, 0x14, 0x55, 0x99, 0x56, 0x15, 0x6C, 0xF9, 0x34, 0x02, 0x28, 0x69, - 0x81, 0xDD, 0x0D, 0x9E, 0x5B, 0x35, 0xEA, 0x1D, 0x9C, 0xA9, 0xBB, 0x82, - 0x79, 0x1B, 0xE7, 0xF5, 0xF8, 0xFD, 0x14, 0xC8, 0xDC, 0xE8, 0x7A, 0x6D, - 0x7B, 0xA1, 0x35, 0x7C, 0x0B, 0x13, 0x1B, 0x08, 0x2E, 0x8B, 0x04, 0x27, - 0x16, 0x04, 0xFC, 0x6C, 0xE4, 0x1E, 0x29, 0x06, 0xF1, 0x05, 0xCD, 0x6C, - 0x10, 0xB1, 0xBA, 0xB9, 0x7F, 0x97, 0xDD, 0x8C, 0xA5, 0x51, 0xB8, 0xD5, - 0xE8, 0xE9, 0xEA, 0x23, 0x5D, 0x2C, 0x6A, 0xC2, 0x74, 0x7F, 0x81, 0xB6, - 0x47, 0xF9, 0xA5, 0x94, 0x57, 0x31, 0x3B, 0xCE, 0xCB, 0x13, 0xA7, 0xED, - 0x9A, 0x29, 0x33, 0x4F, 0xE2, 0xB5, 0xAA, 0x41, 0x37, 0x6F, 0xF4, 0x82, - 0x65, 0x5F, 0x5D, 0xAE, 0x4D, 0x92, 0xD9, 0x03, 0xCC, 0x71, 0xA7, 0x6D, - 0x68, 0x46, 0x87, 0xA0, 0x79, 0x28, 0x9C, 0x4A, 0x39, 0x7F, 0x5E, 0xA2, - 0xD5, 0xB4, 0x8B, 0x35, 0x07, 0x49, 0x66, 0x47, 0x08, 0xFB, 0xFF, 0xE4, - 0x44, 0x06, 0x3B, 0x7D, 0x99, 0xED, 0xE6, 0x9D, 0xDD, 0x9B, 0x86, 0x27, - 0x4D, 0x3A, 0x46, 0x42, 0xDA, 0xEC, 0xCD, 0xEA, 0x1E, 0x4F, 0xDA, 0x5F, - 0x5F, 0x0E, 0x0C, 0xCF, 0x65, 0x64, 0x34, 0x29, 0x4E, 0x14, 0x4B, 0x8A, - 0x9A, 0x2C, 0xF6, 0x80, 0xBC, 0x4B, 0xAD, 0xB9, 0x24, 0xC3, 0x56, 0x2E, - 0x5E, 0x3D, 0xBD, 0xE0, 0x48, 0x96, 0x30, 0x01, 0xD7, 0x4A, 0xEA, 0x0B, - 0xCD, 0xF2, 0xFA, 0x99, 0x67, 0xA3, 0x98, 0x01, 0xD5, 0x19, 0x0D, 0xD5, - 0x6E, 0xB3, 0x18, 0x05, 0x62, 0x5C, 0x75, 0xB3, 0xC2, 0x60, 0xCF, 0xF5, - 0x22, 0x42, 0x32, 0x73, 0x99, 0x1D, 0x31, 0x94, 0xE6, 0x37, 0xC8, 0x74, - 0x41, 0xF1, 0xBD, 0x46, 0xBA, 0x0B, 0x2A, 0xA7, 0x4A, 0x28, 0xB8, 0x25, - 0x48, 0x99, 0xEF, 0xE1, 0xE7, 0x4D, 0xEB, 0x53, 0xBA, 0x76, 0xA2, 0x15, - 0x1B, 0xFE, 0x80, 0x6F, 0x66, 0x81, 0x15, 0x99, 0x6B, 0x1C, 0x12, 0xB6, - 0x61, 0x52, 0xCD, 0xBA, 0x47, 0x79, 0x0D, 0x9A, 0xEE, 0xA9, 0x3E, 0xFB, - 0xBD, 0x56, 0xA7, 0xBC, 0x41, 0xF1, 0x17, 0x00, 0xC5, 0x0E, 0x58, 0xA7, - 0x71, 0x42, 0x7D, 0x4A, 0xAF, 0x3C, 0x8E, 0xA6, 0x77, 0x6F, 0x35, 0xEC, - 0x92, 0x8A, 0xC9, 0xCC, 0xB0, 0x58, 0x74, 0xCE, 0xD3, 0xBB, 0xA0, 0xC1, - 0xCD, 0x12, 0xF2, 0x81, 0x1C, 0xA4, 0x26, 0x7C, 0x92, 0x8A, 0x27, 0x19, - 0x3C, 0x44, 0x2A, 0x7D, 0x0E, 0xD3, 0xEA, 0x15, 0x3A, 0xF9, 0x4B, 0xBF, - 0x99, 0x8A, 0x7F, 0xAB, 0x13, 0x24, 0x65, 0x46, 0x94, 0x29, 0xBD, 0xB7, - 0x2A, 0xEE, 0x65, 0xEF, 0x02, 0x34, 0x20, 0xF4, 0xD2, 0xAF, 0xC4, 0x10, - 0x93, 0x05, 0xD5, 0x82, 0x71, 0x7C, 0xF8, 0x9D, 0x43, 0x72, 0x09, 0xBB, - 0x8C, 0xC3, 0x60, 0x21, 0x40, 0xCB, 0x97, 0xA3, 0x47, 0xE1, 0xDF, 0x18, - 0x5E, 0x22, 0x2F, 0x95, 0x49, 0x3F, 0x89, 0x50, 0xFD, 0x08, 0x3D, 0xC2, - 0xE2, 0x5D, 0x5A, 0xA3, 0xF2, 0x09, 0x4F, 0x0C, 0x55, 0x38, 0x69, 0xF8, - 0x39, 0xC3, 0x94, 0xF7, 0x55, 0x71, 0xA9, 0xC7, 0x0F, 0x2C, 0x8E, 0x3C, - 0x70, 0x86, 0x57, 0x6F, 0xCF, 0x5D, 0xE9, 0x4B, 0x4F, 0x80, 0x7E, 0x15, - 0x42, 0x43, 0x7B, 0xEC, 0xCD, 0x4E, 0x92, 0x8D, 0x5C, 0x89, 0xD2, 0x08, - 0x5A, 0x32, 0x0F, 0x6E, 0x0D, 0x09, 0x29, 0x02, 0x6F, 0xA0, 0x2E, 0x8E, - 0x5C, 0x10, 0x16, 0x1E, 0x82, 0xDF, 0xD3, 0xCD, 0xB5, 0x93, 0xD6, 0x21, - 0x7B, 0x96, 0xC5, 0xFC, 0x79, 0x21, 0x88, 0x99, 0xC9, 0x3C, 0x75, 0x98, - 0x13, 0x67, 0x62, 0xFD, 0x70, 0xB0, 0x58, 0xDA, 0xCF, 0xDC, 0x9E, 0x92, - 0x5F, 0x84, 0x3B, 0x0E, 0xD8, 0xE0, 0xCF, 0xF3, 0x90, 0x9E, 0xFC, 0x40, - 0xC7, 0x58, 0x2F, 0x11, 0x55, 0x9D, 0x7A, 0xE9, 0x9D, 0x5C, 0xD7, 0xDF, - 0xEF, 0xC5, 0x87, 0x7E, 0xC5, 0x14, 0xA7, 0xCE, 0xE6, 0xDB, 0x83, 0xD4, - 0x3A, 0xF7, 0x86, 0xD0, 0xE6, 0x2B, 0xFF, 0x8B, 0x80, 0xF8, 0xD6, 0xFE, - 0x55, 0x82, 0xD7, 0x5B, 0xEB, 0x29, 0x9C, 0x1D, 0xCD, 0x69, 0x1D, 0xF2, - 0xB5, 0x44, 0x09, 0xAD, 0x1D, 0x40, 0xDD, 0xC1, 0xFB, 0xDF, 0x79, 0xCA, - 0xA4, 0x61, 0xAC, 0x39, 0x80, 0x66, 0xB8, 0x37, 0x91, 0xF6, 0x23, 0xEB, - 0x82, 0x49, 0x05, 0x41, 0x72, 0x98, 0xA6, 0x1C, 0x21, 0xB1, 0x64, 0x90, - 0xDC, 0x68, 0x00, 0x2E, 0x61, 0x2A, 0x80, 0x91, 0xEB, 0xCA, 0x04, 0x3D, - 0x8E, 0x70, 0x21, 0x60, 0x1E, 0x11, 0x69, 0x4A, 0x3B, 0x09, 0x84, 0x90, - 0x98, 0x78, 0xF0, 0x9D, 0x5A, 0x92, 0x71, 0xC3, 0xB7, 0x4B, 0x42, 0x98, - 0x8E, 0xB6, 0x2B, 0x39, 0x59, 0x5F, 0xC1, 0x04, 0xC6, 0x8F, 0x6B, 0x33, - 0xF7, 0x9E, 0x0B, 0x32, 0x35, 0x60, 0x57, 0x23, 0xA1, 0xCB, 0x73, 0x82, - 0xEA, 0x05, 0x3D, 0xDC, 0xF5, 0x36, 0x1B, 0x5E, 0x18, 0x1F, 0x37, 0x14, - 0xD7, 0x06, 0xAE, 0xDD, 0x46, 0x15, 0x82, 0xA2, 0x9C, 0xAA, 0x41, 0xFE, - 0x28, 0xB8, 0x3E, 0x2A, 0x7D, 0x78, 0xB8, 0x27, 0xE7, 0x65, 0x52, 0x7D, - 0x93, 0x9F, 0x13, 0x9A, 0x22, 0xF1, 0xF5, 0xB3, 0x2A, 0x37, 0xB6, 0x81, - 0xF7, 0x5D, 0x4C, 0xA3, 0x65, 0x28, 0x13, 0x9E, 0x41, 0xD8, 0xC4, 0xA8, - 0x10, 0xD5, 0x5D, 0xB0, 0xBA, 0xE5, 0xDF, 0xF3, 0xFF, 0x49, 0xD1, 0xED, - 0x9D, 0x9E, 0xFA, 0x19, 0xF7, 0x41, 0xDB, 0xC1, 0xBE, 0x8E, 0x72, 0xAD, - 0xB2, 0xD5, 0x7A, 0x93, 0x6F, 0xF7, 0x25, 0xB9, 0x62, 0xB5, 0xA9, 0x3B, - 0x79, 0xF6, 0xA8, 0x56, 0x4A, 0x8F, 0x98, 0x9E, 0xC7, 0x4F, 0x42, 0x49, - 0xB3, 0x75, 0xFA, 0x73, 0xDD, 0x37, 0xCA, 0xCE, 0xEA, 0x5E, 0xF0, 0x84, - 0x88, 0x6F, 0x54, 0x54, 0xA5, 0xA0, 0x1D, 0xF9, 0xE7, 0x4E, 0xCB, 0xD6, - 0x0A, 0xB4, 0x84, 0xBF, 0xD0, 0x2E, 0x2C, 0xF9, 0x12, 0x33, 0x28, 0x91, - 0x40, 0x3E, 0xC9, 0x18, 0x9E, 0x84, 0x76, 0xDB, 0xEB, 0x21, 0x62, 0x35, - 0xAE, 0x98, 0x20, 0x97, 0x2B, 0x8D, 0x6B, 0x86, 0x73, 0x91, 0x00, 0x0C, - 0xA0, 0xF1, 0xAB, 0xB7, 0x65, 0x94, 0x7A, 0x80, 0x09, 0x28, 0x90, 0x0B, - 0xAF, 0x1C, 0x72, 0xCD, 0x93, 0x7C, 0xDA, 0xC7, 0xE0, 0x85, 0x72, 0x3F, - 0x0A, 0xAA, 0x1E, 0xE7, 0xBF, 0xEA, 0x84, 0xE1, 0xF9, 0xB8, 0x2B, 0x41, - 0x4E, 0x30, 0x23, 0x99, 0x47, 0xE4, 0x6C, 0x45, 0x86, 0x51, 0xB2, 0xB1, - 0x2A, 0x11, 0x1B, 0x3E, 0xD1, 0x5A, 0xC4, 0x6C, 0xEF, 0x37, 0xBC, 0xAE, - 0x10, 0x0C, 0x28, 0xB0, 0x14, 0x6B, 0xB7, 0x34, 0x12, 0x21, 0x12, 0x5D, - 0xFC, 0x19, 0x80, 0x72, 0x0B, 0xF3, 0x27, 0x8B, 0x3F, 0x14, 0x7B, 0xD5, - 0x66, 0xF2, 0x0F, 0xEF, 0x2E, 0xC6, 0x87, 0x49, 0x61, 0xD1, 0xE6, 0xA5, - 0x00, 0xF9, 0x1A, 0x11, 0xB2, 0x3B, 0xAC, 0x77, 0xBF, 0xFB, 0x6B, 0xB1, - 0x9C, 0x25, 0x0D, 0x68, 0x2C, 0x2C, 0xA8, 0xE8, 0x67, 0xE7, 0xAF, 0x32, - 0x03, 0x6C, 0xAB, 0xF2, 0x27, 0x55, 0xD6, 0xCA, 0x36, 0xC4, 0x2A, 0xD7, - 0x74, 0x7F, 0xD5, 0xE5, 0x4E, 0x2F, 0x97, 0xA8, 0x21, 0x71, 0xE0, 0xD7, - 0x96, 0xD3, 0x14, 0xA2, 0x3D, 0x6C, 0xC0, 0x86, 0x17, 0x80, 0xA0, 0x9B, - 0x96, 0x3F, 0x42, 0x45, 0xCF, 0x34, 0x24, 0x9C, 0xEF, 0x8A, 0xA2, 0x33, - 0xB7, 0xEB, 0xF7, 0xB1, 0xE1, 0xE9, 0x9F, 0xDB, 0xA9, 0x80, 0xD0, 0xA8, - 0xBC, 0x6A, 0x49, 0x86, 0x69, 0xAF, 0x21, 0x82, 0x9B, 0xF1, 0x90, 0x12, - 0x92, 0x7C, 0xCE, 0x56, 0xB7, 0x31, 0xFF, 0x68, 0xE1, 0x5D, 0x54, 0x17, - 0xBC, 0x06, 0x46, 0x56, 0xE3, 0x4A, 0x36, 0xAB, 0x7D, 0xBC, 0xE8, 0x34, - 0x32, 0x79, 0xEB, 0x96, 0xFC, 0xA5, 0x17, 0x72, 0x50, 0x63, 0xCB, 0x6C, - 0x4D, 0x0D, 0xBD, 0xEC, 0x78, 0xC7, 0x73, 0x97, 0x7F, 0xA6, 0xF5, 0xCE, - 0xFC, 0xC7, 0x28, 0x59, 0x62, 0xAF, 0xCC, 0x9F, 0xFB, 0x4F, 0x8D, 0xBE, - 0xC6, 0xEF, 0xCF, 0x92, 0xDE, 0x56, 0x06, 0xF0, 0xB6, 0xEE, 0x7F, 0xFE, - 0x90, 0x59, 0xFF, 0xF1, 0xB2, 0x7A, 0x67, 0xA9, 0x16, 0x0B, 0xB9, 0xDB, - 0xF8, 0x5B, 0xAB, 0x6C, 0xD0, 0x4F, 0x6A, 0xB1, 0x42, 0x39, 0x2D, 0x71, - 0x31, 0x30, 0x83, 0xC4, 0x3D, 0x5D, 0xB7, 0x6A, 0xE5, 0xE0, 0x1A, 0x07, - 0xC8, 0xA1, 0xCC, 0x5C, 0x8B, 0x0E, 0xDA, 0xBA, 0xC5, 0x0E, 0x1D, 0x6D, - 0x8C, 0x25, 0x56, 0xAA, 0xA2, 0xC3, 0x1C, 0xB1, 0xDE, 0x5E, 0xAA, 0xCA, - 0x53, 0xF8, 0x78, 0x69, 0x51, 0x69, 0x03, 0xA4, 0x0F, 0xB7, 0xA7, 0xAA, - 0xB6, 0x44, 0x59, 0x9F, 0xB8, 0x45, 0x48, 0x19, 0x5F, 0x29, 0x64, 0x66, - 0xA7, 0x7B, 0x7F, 0x79, 0xF8, 0x9D, 0x15, 0x48, 0x34, 0x57, 0xA1, 0x25, - 0x27, 0xCE, 0xBF, 0xD1, 0xC8, 0x5E, 0x96, 0xBF, 0xC9, 0xD2, 0xC7, 0x08, - 0x75, 0xDB, 0x8D, 0x55, 0x26, 0x92, 0x2C, 0xB2, 0x87, 0xB1, 0x15, 0x37, - 0x22, 0x9B, 0x61, 0xBC, 0xA8, 0xC7, 0x7E, 0xC3, 0x98, 0x89, 0xBC, 0x44, - 0x6B, 0x13, 0x93, 0x30, 0xCD, 0x5B, 0x35, 0xB4, 0x9F, 0x5C, 0xB5, 0x2E, - 0xB1, 0x23, 0x20, 0xA8, 0xF3, 0xA3, 0x5A, 0x01, 0x29, 0x24, 0x54, 0x20, - 0xEF, 0x27, 0xCD, 0xF3, 0x56, 0xE0, 0x6B, 0x02, 0x23, 0x0A, 0xD9, 0x6A, - 0xA6, 0x23, 0xE1, 0xC3, 0x96, 0xEE, 0x06, 0x11, 0x53, 0x9E, 0xD6, 0x80, - 0xC1, 0x68, 0x15, 0xA4, 0x24, 0x8F, 0xBF, 0xB2, 0x49, 0xC1, 0x2E, 0xE2, - 0x6B, 0xD2, 0x48, 0x45, 0x3C, 0xA6, 0xF8, 0x6C, 0xC0, 0x55, 0x51, 0xC4, - 0xAC, 0x52, 0x8D, 0x44, 0xEF, 0xBC, 0x04, 0x05, 0x69, 0x5C, 0x87, 0x99, - 0x0C, 0x27, 0xFB, 0x02, 0x6E, 0xD1, 0xF7, 0x5E, 0x07, 0x11, 0x26, 0x5A, - 0x59, 0x5A, 0xF8, 0x54, 0x12, 0x88, 0x20, 0xBB, 0x38, 0x92, 0x49, 0xF0, - 0xE5, 0x82, 0xA3, 0xF6, 0xEE, 0xBD, 0xD7, 0xCC, 0x58, 0xDC, 0x3B, 0x8A, - 0x13, 0xE8, 0x5F, 0x58, 0x0C, 0x12, 0x64, 0x3C, 0xAF, 0x92, 0xC0, 0xC9, - 0x11, 0xE9, 0xC1, 0xB8, 0xE7, 0xFA, 0x09, 0xAE, 0x61, 0xA3, 0x70, 0x4C, - 0x07, 0x45, 0x7C, 0x61, 0x82, 0x1B, 0x64, 0x4C, 0x0F, 0x7D, 0xC2, 0xC5, - 0xD9, 0x92, 0x00, 0x35, 0xCC, 0x34, 0x07, 0xBA, 0xDD, 0x52, 0xE3, 0x67, - 0x76, 0xC6, 0x8B, 0xD5, 0x51, 0xE7, 0xB3, 0x57, 0x7D, 0xF6, 0xA3, 0x82, - 0xEA, 0x7D, 0x88, 0x09, 0x67, 0x49, 0x2B, 0x37, 0x04, 0x1E, 0xBF, 0x83, - 0x76, 0xBA, 0x7F, 0xB4, 0xC1, 0x8F, 0xCD, 0xD3, 0x04, 0xD2, 0x89, 0x5F, - 0x0E, 0xA7, 0x43, 0x4F, 0x8A, 0x4A, 0x98, 0x48, 0x74, 0x83, 0x0B, 0x2E, - 0x6E, 0xC4, 0xAF, 0x29, 0x38, 0xBA, 0xD1, 0x67, 0xEA, 0x96, 0x10, 0x35, - 0x69, 0xFF, 0xD2, 0x43, 0x00, 0x2E, 0x9D, 0x60, 0x08, 0x04, 0xDF, 0xFB, - 0xCD, 0x6C, 0x98, 0xCE, 0x73, 0x9A, 0xF4, 0x46, 0x23, 0x22, 0x58, 0x0C, - 0x1F, 0xE1, 0x5A, 0x43, 0x76, 0x18, 0x81, 0xE3, 0xF4, 0xBE, 0x95, 0xBF, - 0x61, 0x88, 0x16, 0xF4, 0x7B, 0x01, 0xEB, 0xD4, 0x85, 0xB9, 0xC2, 0x0C, - 0x22, 0x02, 0x27, 0x8D, 0xB5, 0x7F, 0xC8, 0xA9, 0xAA, 0x8A, 0xF7, 0x91, - 0x7A, 0x4A, 0x20, 0x37, 0xB7, 0xBE, 0x15, 0x6E, 0x48, 0x2C, 0x50, 0xE3, - 0xAE, 0x2B, 0xAE, 0x1E, 0x5C, 0x59, 0x9A, 0x36, 0x46, 0x85, 0x04, 0xE8, - 0x51, 0xED, 0x1F, 0xB0, 0x38, 0xE3, 0xC7, 0x5D, 0x9A, 0xD1, 0x07, 0x85, - 0xED, 0xDC, 0x3C, 0x99, 0x35, 0x03, 0x57, 0x85, 0xE2, 0x83, 0xFB, 0x06, - 0x81, 0x08, 0xDA, 0xF2, 0xFA, 0xF4, 0x9E, 0x5F, 0x2F, 0x82, 0xC2, 0xBA, - 0xE3, 0x04, 0x42, 0x59, 0x4B, 0xBD, 0xEB, 0xFD, 0x8F, 0x5D, 0x34, 0x37, - 0x86, 0x06, 0x6B, 0xCC, 0x8C, 0x48, 0x7C, 0x14, 0xE9, 0x48, 0xF5, 0x28, - 0x51, 0xF3, 0x7E, 0xC9, 0xC8, 0x73, 0x88, 0x8B, 0x03, 0xAD, 0xEA, 0x37, - 0x3F, 0x02, 0x95, 0xB8, 0x6A, 0x28, 0xFC, 0x42, 0xD9, 0xAD, 0xFC, 0x4C, - 0xE8, 0xEA, 0xDC, 0x4B, 0xD3, 0x9C, 0x74, 0x09, 0x44, 0x74, 0x81, 0xB6, - 0x36, 0x96, 0x07, 0xFB, 0x48, 0xF5, 0xBA, 0x21, 0xA5, 0xD4, 0xCA, 0x48, - 0x1E, 0x63, 0xF4, 0x8C, 0x16, 0x4C, 0xDF, 0xC2, 0xAA, 0x11, 0x02, 0xCF, - 0xE8, 0x28, 0xEF, 0xB9, 0x57, 0x70, 0x6C, 0x2C, 0x43, 0x18, 0x6D, 0xBD, - 0x2D, 0xF4, 0x20, 0x54, 0x2A, 0xF3, 0xAE, 0x57, 0x46, 0xA4, 0x0E, 0xC8, - 0x18, 0xB3, 0x37, 0x6E, 0xFF, 0x99, 0x6A, 0x26, 0xF8, 0x7E, 0xCF, 0x8B, - 0xDB, 0x43, 0xF3, 0x10, 0x30, 0xA7, 0x27, 0x96, 0x07, 0x8F, 0x50, 0xE0, - 0x45, 0x41, 0x16, 0xA6, 0xC1, 0x1B, 0xCB, 0x97, 0x00, 0x81, 0x9D, 0x3A, - 0x1A, 0x1E, 0xA0, 0x11, 0xFA, 0xBC, 0x89, 0xF5, 0x07, 0x66, 0x93, 0x4E, - 0xC4, 0x90, 0xF7, 0xA1, 0x65, 0x00, 0xDE, 0x39, 0x9A, 0xED, 0xCC, 0xEA, - 0x70, 0x57, 0x83, 0x62, 0x68, 0xE0, 0x9C, 0x0A, 0xC5, 0x2F, 0x6E, 0x75, - 0xB9, 0x93, 0x15, 0x62, 0xAC, 0x7C, 0x8B, 0x23, 0x32, 0xF4, 0xC9, 0x97, - 0xBA, 0x7D, 0x7D, 0x9D, 0x19, 0x13, 0x4B, 0x6E, 0xEF, 0xDE, 0x2B, 0x9B, - 0x30, 0x9B, 0x30, 0xA8, 0x22, 0xBC, 0x7B, 0x63, 0xC8, 0x08, 0x84, 0xA6, - 0x66, 0xE0, 0x87, 0x0C, 0x4A, 0x1B, 0xC3, 0xE2, 0xE4, 0x3B, 0x45, 0x21, - 0x45, 0x36, 0x05, 0x98, 0x41, 0xE1, 0x03, 0x82, 0x95, 0x69, 0x0C, 0x6D, - 0x4A, 0x13, 0x94, 0x15, 0x66, 0x9C, 0x2F, 0xA5, 0x93, 0x3F, 0x59, 0xE0, - 0x86, 0xED, 0x13, 0xD5, 0x9A, 0x0A, 0xEB, 0x0C, 0x58, 0xD1, 0xBB, 0x9C, - 0xD9, 0x16, 0x3C, 0xC7, 0x47, 0x7A, 0x2B, 0x62, 0xC5, 0x29, 0x08, 0x03, - 0xC6, 0xCE, 0x7B, 0xAB, 0x9B, 0x96, 0x69, 0x42, 0x9A, 0x27, 0x23, 0x0E, - 0xAC, 0x69, 0xDA, 0x84, 0xD3, 0xCC, 0xFF, 0x55, 0x58, 0x30, 0x45, 0xFD, - 0xBE, 0xA2, 0x25, 0xE1, 0x66, 0xF9, 0x70, 0xAE, 0x1E, 0xC3, 0x3E, 0xC6, - 0xF8, 0xF2, 0x0D, 0xA6, 0x49, 0x1F, 0x73, 0x82, 0xBE, 0x74, 0x8C, 0x3B, - 0xD7, 0xF1, 0xDA, 0x94, 0x41, 0x20, 0xD4, 0x45, 0xD8, 0xB4, 0x44, 0x97, - 0x85, 0x12, 0xE9, 0xB4, 0x4A, 0xDF, 0xD4, 0xED, 0xA5, 0x7D, 0xCD, 0x15, - 0x08, 0xD2, 0x7C, 0x46, 0xF4, 0x34, 0x0C, 0x0C, 0x56, 0x4A, 0xFA, 0xDB, - 0x8B, 0xC2, 0xB3, 0x0F, 0xB4, 0xEB, 0x26, 0xB6, 0xA7, 0x0A, 0x0C, 0xB7, - 0x19, 0x0A, 0x2C, 0x27, 0xC9, 0x1B, 0x83, 0x4B, 0x32, 0xAE, 0xBE, 0x11, - 0xA3, 0xBC, 0x3D, 0x94, 0x2B, 0xC8, 0xCB, 0x5D, 0x1F, 0xA6, 0x7C, 0xB6, - 0x4C, 0x5E, 0xCF, 0xA4, 0x51, 0x90, 0xDB, 0xE2, 0xBA, 0x4D, 0x14, 0x9D, - 0x22, 0x1E, 0x82, 0x2E, 0x28, 0xB9, 0x94, 0x83, 0x46, 0x63, 0xD6, 0xEA, - 0x14, 0x03, 0xDE, 0x74, 0x09, 0xD4, 0x21, 0x07, 0xFA, 0xEB, 0x36, 0xB5, - 0x76, 0x7D, 0x98, 0xBC, 0x3A, 0x9E, 0xD4, 0xB3, 0x24, 0x35, 0x87, 0x0C, - 0x70, 0x09, 0x7C, 0xE4, 0x70, 0x46, 0x6C, 0x8C, 0x19, 0xD0, 0x42, 0xE9, - 0x24, 0x2F, 0xCA, 0x16, 0xAD, 0x21, 0xD1, 0x16, 0xDF, 0x01, 0xEC, 0x23, - 0xCA, 0xE3, 0x81, 0xD2, 0x53, 0x20, 0x7E, 0xA1, 0x99, 0x8E, 0x88, 0x5D, - 0x73, 0xF8, 0xD9, 0x0E, 0x37, 0xB4, 0xF3, 0xE9, 0x66, 0x7B, 0x2D, 0xA0, - 0x5B, 0x4B, 0x28, 0xE5, 0xE3, 0x6C, 0xA2, 0x82, 0x6C, 0xA9, 0xE7, 0x1C, - 0xD3, 0x33, 0x2C, 0xB4, 0x7D, 0x95, 0xEA, 0x9F, 0x20, 0xEF, 0x02, 0x38, - 0x26, 0x3C, 0x5F, 0x39, 0xBB, 0xFA, 0x75, 0x10, 0xBE, 0x00, 0x1A, 0x4B, - 0xE8, 0xBC, 0x1B, 0xCE, 0x02, 0x59, 0x97, 0x36, 0xD9, 0xE9, 0x03, 0x2B, - 0x1A, 0x54, 0x35, 0x31, 0x9E, 0x59, 0xDE, 0x46, 0x56, 0x5D, 0xF6, 0xB5, - 0x91, 0xBC, 0x52, 0xB6, 0xB5, 0x9A, 0xF6, 0x8B, 0x5B, 0xE4, 0x7D, 0x4F, - 0xD6, 0x74, 0x2A, 0x7D, 0xC3, 0x85, 0x50, 0xF4, 0xCD, 0x3A, 0x81, 0x3C, - 0x2C, 0xA5, 0xF5, 0xAF, 0xE2, 0xA9, 0x9F, 0x97, 0xE5, 0x7B, 0x67, 0x64, - 0x46, 0xD4, 0x7C, 0x1A, 0x41, 0xD4, 0x2D, 0x7C, 0xE3, 0xD9, 0xFA, 0x2A, - 0xDE, 0x83, 0x17, 0xEC, 0x78, 0x02, 0x7D, 0xAF, 0x4A, 0x06, 0x53, 0xE3, - 0x44, 0x0B, 0x06, 0xEC, 0xD4, 0xA7, 0xA5, 0x87, 0x09, 0x23, 0x44, 0x76, - 0x3D, 0xD4, 0xA5, 0xEF, 0x5C, 0x75, 0x3A, 0xF7, 0x99, 0xC8, 0x21, 0x6A, - 0xFB, 0xBF, 0x0D, 0x08, 0xF0, 0xEE, 0xD6, 0x7E, 0xF8, 0x67, 0x02, 0x87, - 0xCA, 0x94, 0x27, 0x4D, 0x0C, 0x5F, 0xA1, 0x94, 0xC9, 0x1F, 0xE1, 0x4B, - 0x93, 0x2D, 0x40, 0xE0, 0x25, 0x5A, 0xDB, 0x28, 0xBE, 0x7F, 0xFD, 0x0D, - 0x6D, 0x22, 0xF4, 0x31, 0xE5, 0x1C, 0x84, 0x71, 0x09, 0x5F, 0x1D, 0x78, - 0xE9, 0x64, 0xD9, 0xB9, 0x82, 0x7D, 0xF5, 0x9B, 0x73, 0x4F, 0x74, 0x8B, - 0xA1, 0xB3, 0xC2, 0x01, 0x30, 0x1E, 0x20, 0x72, 0xB9, 0xB8, 0x92, 0x1A, - 0xFE, 0x34, 0xF8, 0x5F, 0x69, 0xEC, 0x09, 0x41, 0x50, 0x77, 0x44, 0xF9, - 0x68, 0xE4, 0xEC, 0xC7, 0xB5, 0xA3, 0x45, 0x6B, 0x03, 0xC4, 0xE8, 0xA0, - 0x53, 0xF2, 0x94, 0xB9, 0x49, 0xA0, 0x6D, 0x11, 0xBA, 0x1C, 0x89, 0x87, - 0x08, 0x72, 0xC0, 0xE3, 0x7B, 0x0C, 0x8D, 0x18, 0xDD, 0xB0, 0x3B, 0x0E, - 0xC2, 0x0E, 0xBB, 0x4B, 0x61, 0x22, 0x48, 0x64, 0x69, 0x54, 0xE8, 0x29, - 0x94, 0x84, 0xE5, 0xD7, 0x1A, 0x5F, 0x4B, 0xBC, 0xAD, 0x35, 0x82, 0xF1, - 0xFD, 0x40, 0x14, 0xAE, 0xD0, 0x28, 0x0E, 0xE9, 0xEE, 0x2E, 0x88, 0xFF, - 0xD1, 0xC9, 0xC5, 0x36, 0x39, 0xFB, 0x9F, 0xC9, 0x85, 0x97, 0x2A, 0x58, - 0x07, 0xD9, 0x6E, 0x6E, 0x83, 0x09, 0x6D, 0xC6, 0x92, 0x1C, 0xBF, 0x50, - 0xE3, 0xCB, 0xAD, 0x50, 0x3C, 0xDB, 0xF9, 0xE3, 0x32, 0x51, 0x58, 0x20, - 0xE6, 0xD8, 0xCA, 0x50, 0xF7, 0x50, 0x05, 0xAF, 0xB6, 0xF7, 0xAB, 0x3E, - 0x48, 0xB7, 0xA4, 0xB1, 0x52, 0x32, 0x2A, 0xD6, 0xC2, 0x78, 0x62, 0x05, - 0x34, 0x96, 0x61, 0xF1, 0x21, 0x14, 0x69, 0x6F, 0x10, 0x96, 0xDD, 0xE2, - 0x1D, 0xEB, 0xE5, 0x4F, 0xA0, 0x67, 0xA8, 0x46, 0x52, 0xBD, 0x2F, 0xA5, - 0x59, 0xF8, 0xCB, 0xB2, 0x51, 0x09, 0xD3, 0x13, 0x9C, 0x37, 0xD3, 0x9B, - 0xD4, 0x5C, 0x8E, 0xF9, 0xF2, 0xE4, 0xBF, 0x69, 0xA2, 0xB2, 0x06, 0xC1, - 0xF5, 0x65, 0xB9, 0x0A, 0xC6, 0x73, 0x77, 0xEF, 0x4E, 0x50, 0x2D, 0x2C, - 0xEE, 0xFF, 0xE9, 0x61, 0x8A, 0x07, 0xC9, 0x64, 0x48, 0x27, 0x4B, 0xCE, - 0xE1, 0x80, 0xCC, 0x14, 0x8F, 0x42, 0x92, 0x4D, 0x6F, 0x87, 0x48, 0x90, - 0x29, 0xF4, 0x4E, 0x72, 0x2C, 0xCC, 0x1A, 0xDD, 0x96, 0xDA, 0xFE, 0xD7, - 0xCB, 0xEE, 0x6F, 0xA4, 0xA0, 0xCB, 0xEE, 0x7F, 0xB3, 0x21, 0x54, 0xBA, - 0x6F, 0xC9, 0x53, 0x66, 0x7B, 0x38, 0xEC, 0xF4, 0x5F, 0xA0, 0x99, 0x23, - 0x5F, 0x79, 0xD7, 0x08, 0xCC, 0x74, 0xDA, 0x02, 0xA1, 0xFC, 0x01, 0xF0, - 0xF6, 0xA9, 0x9C, 0xA5, 0x85, 0xC6, 0x7E, 0xF6, 0x0F, 0x53, 0x11, 0x91, - 0x92, 0x6D, 0x60, 0xC7, 0x63, 0xD5, 0x1C, 0x84, 0x7E, 0x91, 0xDA, 0x97, - 0x5B, 0xD8, 0x3D, 0xBF, 0x83, 0xC3, 0x42, 0xC1, 0xDB, 0xB6, 0xE3, 0xFB, - 0x9F, 0x40, 0x36, 0x6E, 0xB9, 0x8F, 0x44, 0xB8, 0x73, 0x2C, 0x14, 0xBD, - 0x6C, 0x5E, 0x71, 0x76, 0xD2, 0xB9, 0xA2, 0x0B, 0xEC, 0xD4, 0x97, 0x9A, - 0x1F, 0xCF, 0x0C, 0x3D, 0x5F, 0x49, 0x24, 0x08, 0x3C, 0xEC, 0xCE, 0xA3, - 0x16, 0xFC, 0x7B, 0xD9, 0x98, 0x73, 0xEF, 0x74, 0x76, 0x0E, 0x51, 0x94, - 0xBC, 0x18, 0x71, 0xAB, 0x43, 0xA8, 0x27, 0xA1, 0x5D, 0x69, 0x23, 0xB5, - 0x5C, 0xFB, 0xFB, 0xD1, 0xBE, 0x59, 0x9C, 0x35, 0x1B, 0x5D, 0x49, 0x58, - 0xEB, 0x06, 0xFB, 0x0E, 0xFC, 0x3B, 0x4B, 0x47, 0xF9, 0x80, 0xD2, 0x50, - 0x97, 0xA1, 0xFB, 0x2F, 0x0D, 0x65, 0x7A, 0x30, 0xA3, 0x33, 0x04, 0x44, - 0x0B, 0x4A, 0x88, 0xEB, 0x59, 0x1A, 0xA5, 0x96, 0x8C, 0x09, 0x1E, 0x26, - 0x6A, 0x89, 0x74, 0x0C, 0x97, 0xDE, 0x51, 0x1C, 0x49, 0x16, 0x99, 0xDE, - 0x80, 0x95, 0xDA, 0x0B, 0xD6, 0x0B, 0x85, 0x83, 0x13, 0x70, 0xCC, 0x60, - 0xE3, 0x24, 0xDA, 0xB1, 0xE9, 0x8E, 0x29, 0x04, 0x68, 0xE7, 0x85, 0x0F, - 0x78, 0x9D, 0x69, 0x9A, 0x3A, 0xFC, 0x1B, 0x34, 0x65, 0x9D, 0x0D, 0x84, - 0xF5, 0x21, 0x30, 0xF6, 0xDF, 0x4E, 0xC5, 0xEB, 0x8C, 0x9A, 0x5F, 0x00, - 0xDE, 0x19, 0x2B, 0x1F, 0x7C, 0x86, 0x7D, 0x43, 0xA2, 0x43, 0xC5, 0xA9, - 0xDD, 0x84, 0x18, 0x90, 0xAB, 0x4C, 0xD3, 0x0B, 0x01, 0xA6, 0xCC, 0x04, - 0x24, 0xF0, 0x0C, 0x3A, 0x8B, 0x20, 0x36, 0x1C, 0xBF, 0x40, 0x5E, 0x1F, - 0x70, 0x7D, 0x69, 0xAA, 0xF6, 0xA8, 0x7B, 0x0F, 0x55, 0x4C, 0x63, 0xB8, - 0x28, 0x8B, 0x9F, 0xB1, 0xF9, 0x84, 0x20, 0x7C, 0xFD, 0x41, 0x94, 0xAA, - 0x92, 0xE0, 0x4E, 0x66, 0x7B, 0x4D, 0xBF, 0x96, 0xA3, 0xE9, 0x9B, 0xEC, - 0xD5, 0x75, 0x8B, 0x08, 0x8A, 0x1A, 0xFF, 0x0C, 0xF3, 0x9D, 0xFC, 0x92, - 0x61, 0x19, 0x41, 0x5A, 0x52, 0x5E, 0xC2, 0x91, 0xFE, 0xD8, 0x8F, 0xF2, - 0xD6, 0x0B, 0x73, 0x4B, 0x1F, 0x63, 0x30, 0xC5, 0x8E, 0x85, 0x8C, 0xE2, - 0xEA, 0xE1, 0xDC, 0xBC, 0xDA, 0xF7, 0xA1, 0xBA, 0x3F, 0xCC, 0xD7, 0xAC, - 0xF8, 0xAD, 0xB8, 0x53, 0x82, 0x3B, 0xD3, 0x69, 0xC1, 0xDD, 0xB7, 0xD5, - 0x89, 0x89, 0x50, 0xF7, 0x73, 0x56, 0xA7, 0xC5, 0x05, 0xB5, 0xEE, 0xE6, - 0x4A, 0x22, 0xF8, 0x33, 0xEB, 0xED, 0xF2, 0xDE, 0x73, 0x02, 0x95, 0x3C, - 0x0E, 0x4E, 0x5B, 0x0B, 0xE7, 0x6C, 0xF7, 0xE1, 0xF8, 0x67, 0x8A, 0xDF, - 0x41, 0x3F, 0xCC, 0x5E, 0x0C, 0xD6, 0x6E, 0x96, 0xBF, 0x95, 0x71, 0x4C, - 0x79, 0x7C, 0x3B, 0x88, 0x46, 0x73, 0x96, 0xA2, 0xDA, 0x6C, 0x71, 0xEC, - 0x54, 0x14, 0x79, 0x1E, 0x47, 0xF8, 0x94, 0x63, 0x28, 0x4A, 0xFB, 0xBB, - 0x82, 0x66, 0x91, 0x99, 0x0E, 0xBE, 0xBB, 0x33, 0x4D, 0x55, 0xE2, 0x08, - 0xCA, 0xE7, 0x52, 0x4A, 0xED, 0x64, 0xFF, 0xDD, 0xF7, 0xF9, 0xEA, 0x7D, - 0xD0, 0xBD, 0xB9, 0xAC, 0x62, 0x3B, 0xBC, 0xC6, 0x47, 0xEF, 0xEC, 0xA0, - 0x6D, 0x7D, 0x0F, 0xD8, 0xC6, 0x10, 0x90, 0x29, 0xCB, 0xF3, 0xA1, 0xC2, - 0x2B, 0x1D, 0xDD, 0x43, 0x6A, 0x49, 0xCB, 0x1F, 0x8C, 0x29, 0xC4, 0x4A, - 0xAB, 0xCB, 0xD3, 0x89, 0xF6, 0x24, 0x73, 0xA3, 0xA0, 0x5C, 0x9E, 0xE2, - 0x93, 0x2C, 0x18, 0x6A, 0xA1, 0x07, 0x5A, 0x77, 0xAA, 0x26, 0x38, 0x2C, - 0xF0, 0xA9, 0xFC, 0x6C, 0x94, 0xBE, 0xAF, 0x20, 0xCA, 0x8B, 0xB1, 0x7B, - 0x9A, 0x3A, 0xBD, 0x0B, 0xF5, 0x03, 0x73, 0x6D, 0x6F, 0x15, 0xB1, 0x8F, - 0x85, 0xDE, 0x24, 0x47, 0x94, 0x1B, 0x94, 0x25, 0xA5, 0x85, 0x31, 0x33, - 0x75, 0xA9, 0x0E, 0x16, 0x90, 0x12, 0x91, 0x72, 0x0F, 0x1E, 0x47, 0x7B, - 0x42, 0xB4, 0x99, 0x9E, 0xDA, 0xD8, 0xD9, 0xB4, 0x2C, 0xA4, 0x06, 0x05, - 0x2F, 0x83, 0xF6, 0xE7, 0x6D, 0x7A, 0x9E, 0x40, 0xCE, 0x91, 0x37, 0x6C, - 0x2A, 0x90, 0x87, 0x5D, 0x3E, 0xAA, 0xDB, 0x45, 0x55, 0xEC, 0x79, 0x03, - 0x03, 0x22, 0x3B, 0x61, 0x73, 0xBD, 0x53, 0xF3, 0x5A, 0x9B, 0xD4, 0xB4, - 0x0E, 0x2C, 0x68, 0x5F, 0x5D, 0x1B, 0xCC, 0xD6, 0x11, 0x7B, 0xA0, 0x4A, - 0xB6, 0xD0, 0x56, 0xD0, 0x26, 0xC1, 0xFE, 0x3B, 0x05, 0x20, 0x05, 0xC0, - 0xBA, 0xF4, 0xB7, 0x2B, 0x55, 0xE7, 0x69, 0x67, 0xB2, 0x7A, 0xB5, 0x59, - 0x78, 0xB4, 0x3E, 0x80, 0x08, 0x20, 0xD8, 0x75, 0x28, 0xF1, 0x21, 0xFE, - 0xA3, 0x86, 0xD1, 0x21, 0x76, 0x1F, 0xA6, 0x95, 0x60, 0xA7, 0x5E, 0xB5, - 0x68, 0x25, 0xB7, 0x02, 0x56, 0xDA, 0xF8, 0x6D, 0xE3, 0x79, 0x31, 0x63, - 0x76, 0xC4, 0x9B, 0x16, 0x08, 0xCA, 0xA8, 0xBA, 0xA0, 0x5A, 0x9A, 0x76, - 0x3D, 0x09, 0x80, 0x54, 0x89, 0x50, 0xFC, 0x4F, 0x04, 0x52, 0x2C, 0xAB, - 0x01, 0x3B, 0x52, 0xA7, 0x7E, 0x4F, 0x0C, 0x08, 0xE2, 0x18, 0x6F, 0xC6, - 0xDF, 0x77, 0x09, 0xE4, 0x21, 0x5E, 0xD7, 0xE2, 0x4A, 0x15, 0x1C, 0xB5, - 0xFD, 0x6F, 0x4D, 0xC6, 0xC8, 0x97, 0x26, 0x9F, 0x7C, 0x97, 0xE8, 0x05, - 0x4C, 0x89, 0xC3, 0xA6, 0x89, 0x38, 0x11, 0xAB, 0xEC, 0x7E, 0xF4, 0x4C, - 0xE1, 0x3A, 0x37, 0x24, 0x57, 0xD9, 0x93, 0xCE, 0x9E, 0xC8, 0x22, 0x78, - 0xBB, 0xDB, 0x35, 0x99, 0xFB, 0x82, 0xF4, 0x56, 0x3B, 0x4B, 0x72, 0xE3, - 0xF1, 0x48, 0xF3, 0xFE, 0x4B, 0x08, 0xAB, 0x33, 0xF7, 0x30, 0x57, 0xB1, - 0x9E, 0xF0, 0xE1, 0xCD, 0x11, 0x7D, 0xD2, 0x1B, 0x33, 0xE8, 0x22, 0xF2, - 0xA4, 0x90, 0xB7, 0xD1, 0xFA, 0xA9, 0xB3, 0x23, 0x0F, 0x0F, 0xF4, 0x56, - 0x9C, 0x15, 0x31, 0x59, 0x2C, 0x6F, 0xE4, 0xD6, 0x3A, 0xB4, 0x06, 0xCF, - 0x80, 0xDD, 0xAE, 0x6F, 0x9B, 0x54, 0x74, 0x31, 0x66, 0xF5, 0x1F, 0x41, - 0x0B, 0x4B, 0x19, 0x11, 0xA7, 0x7B, 0x58, 0x29, 0x96, 0x83, 0x44, 0x54, - 0x63, 0xAF, 0x09, 0x6B, 0xA4, 0xFE, 0x03, 0xCC, 0xA8, 0xCA, 0x4A, 0xDC, - 0xD9, 0x95, 0x56, 0xEB, 0x2E, 0x79, 0x7C, 0xCE, 0xDC, 0x14, 0x26, 0xF5, - 0x94, 0x9D, 0x9D, 0xD1, 0x95, 0x09, 0x8B, 0x2E, 0x21, 0xA0, 0x96, 0xC5, - 0x4E, 0x09, 0xA0, 0x35, 0x92, 0xAA, 0x95, 0x3C, 0x30, 0xE7, 0xC7, 0x6A, - 0x7B, 0xB1, 0x62, 0x01, 0x7D, 0x62, 0x78, 0x77, 0x62, 0xE6, 0x08, 0x63, - 0x77, 0x5E, 0xE1, 0x0A, 0xFD, 0xB5, 0x08, 0xE1, 0xED, 0x79, 0x27, 0xD9, - 0xB8, 0x1D, 0xB6, 0xBA, 0x3D, 0x6C, 0xA0, 0xB5, 0xA6, 0xE1, 0x92, 0x18, - 0x15, 0xC9, 0x25, 0x25, 0xF6, 0x21, 0x7A, 0x4E, 0x2E, 0x18, 0x08, 0x8D, - 0x54, 0x79, 0x35, 0xED, 0x76, 0x2F, 0x39, 0xB1, 0x38, 0x38, 0x9F, 0xB6, - 0xF4, 0x2D, 0xBF, 0x55, 0x64, 0x3F, 0xEB, 0x49, 0x17, 0x5D, 0xEC, 0x07, - 0xC1, 0x08, 0x4E, 0x75, 0xE7, 0xE8, 0xF7, 0xA3, 0xB5, 0x63, 0x01, 0x27, - 0xCF, 0xF5, 0x39, 0xDD, 0x65, 0x38, 0x4C, 0xD4, 0xE3, 0xAA, 0xAD, 0x55, - 0xD3, 0x3C, 0x6E, 0xC4, 0x99, 0x09, 0x3E, 0xD1, 0xA5, 0x0B, 0xEF, 0xF2, - 0x08, 0xA1, 0xBE, 0xD8, 0xE0, 0x7C, 0x58, 0xB9, 0x9E, 0x2E, 0x95, 0x4A, - 0xAA, 0x1D, 0xEE, 0xE3, 0x2F, 0x6A, 0xE2, 0x94, 0x70, 0xC4, 0x1C, 0x07, - 0xCC, 0x76, 0xE0, 0x40, 0xEA, 0x6D, 0xB4, 0x83, 0xA0, 0x6A, 0x97, 0x76, - 0x84, 0x11, 0x40, 0x9F, 0xCA, 0x18, 0x00, 0x6F, 0x7D, 0x07, 0xBE, 0xC9, - 0xFC, 0x2D, 0xD7, 0xAF, 0x60, 0x76, 0xC9, 0xD8, 0x28, 0xC2, 0xC8, 0xA8, - 0xD7, 0x60, 0x90, 0x64, 0x6C, 0xED, 0xEE, 0xFD, 0x2C, 0xD1, 0x3F, 0x35, - 0xD4, 0xCB, 0xA0, 0x34, 0xAA, 0xB0, 0x3A, 0x91, 0x07, 0x1B, 0xD4, 0xB5, - 0x33, 0xD2, 0xD3, 0x9D, 0x08, 0xCD, 0x45, 0x01, 0x83, 0x04, 0xB1, 0xE7, - 0x0C, 0x1A, 0x57, 0x9F, 0xBB, 0xED, 0x37, 0x46, 0xB1, 0x16, 0x87, 0x3C, - 0x20, 0xDE, 0x63, 0x10, 0xAF, 0x2D, 0x77, 0x71, 0x56, 0xEF, 0x7C, 0x14, - 0xD0, 0xE3, 0x1E, 0xFB, 0x1F, 0x77, 0x18, 0x1E, 0xA8, 0xD3, 0x40, 0xA7, - 0xD7, 0x1F, 0x36, 0x7D, 0x87, 0x1C, 0x42, 0xF6, 0x2F, 0x51, 0xAF, 0x69, - 0x2C, 0xCF, 0x79, 0x11, 0xD1, 0x17, 0x47, 0xD3, 0x44, 0x86, 0x9D, 0x2B, - 0x44, 0xA3, 0x74, 0x1C, 0x83, 0x75, 0xAB, 0xD1, 0xA5, 0xFE, 0x14, 0x0A, - 0x41, 0x76, 0x89, 0x1B, 0x08, 0x4F, 0x29, 0x30, 0x82, 0xD1, 0xFE, 0xD6, - 0x0B, 0x71, 0xCD, 0x2C, 0x8E, 0x31, 0x69, 0xAF, 0xD8, 0x67, 0xA6, 0x1A, - 0x8E, 0x2A, 0xD4, 0xF1, 0x83, 0xC3, 0xEC, 0x08, 0x76, 0x27, 0xA3, 0xB5, - 0xF6, 0x7B, 0xC2, 0x6F, 0xEA, 0xD0, 0x52, 0x6C, 0x6E, 0x2F, 0x18, 0xBB, - 0x23, 0x10, 0x3E, 0x7F, 0x37, 0x90, 0x89, 0x7E, 0xF4, 0xBA, 0x47, 0x09, - 0xCE, 0x80, 0x34, 0x5D, 0x20, 0x87, 0x1F, 0x76, 0x30, 0xBF, 0xC3, 0xFC, - 0x3C, 0xB3, 0x88, 0x89, 0xC9, 0x3D, 0xA4, 0xF4, 0xCE, 0x7E, 0x93, 0xA6, - 0x88, 0xFA, 0xAC, 0x32, 0x64, 0x19, 0x76, 0xE7, 0xE0, 0xAE, 0x4B, 0x4F, - 0xC3, 0xAC, 0x82, 0xD9, 0xDB, 0x3D, 0xBE, 0x3E, 0x58, 0x4B, 0xBF, 0xD0, - 0x17, 0x43, 0xEC, 0x17, 0xEA, 0xFA, 0xA9, 0x6F, 0x9A, 0x33, 0xC2, 0xB9, - 0xDC, 0xFF, 0x80, 0x14, 0x9D, 0xD6, 0xA1, 0x41, 0x7F, 0xFE, 0x08, 0x57, - 0x21, 0xD6, 0xEB, 0xED, 0xEF, 0xA2, 0xAD, 0x5D, 0x9E, 0xC5, 0x31, 0xC6, - 0xBE, 0x73, 0xB9, 0x7D, 0x58, 0x12, 0x28, 0x35, 0x0A, 0xB7, 0x56, 0x9A, - 0x23, 0x61, 0x0B, 0x3B, 0x8D, 0x20, 0x35, 0xC7, 0xBF, 0xB1, 0xCE, 0x33, - 0x28, 0xEC, 0x2F, 0x71, 0x49, 0xE1, 0x90, 0x36, 0x53, 0x9D, 0x19, 0xB1, - 0xBB, 0xFF, 0xF4, 0x50, 0x89, 0xE8, 0x69, 0x88, 0xAF, 0xB6, 0x58, 0x46, - 0xDF, 0x73, 0xEC, 0x5B, 0x82, 0xA6, 0xDC, 0x18, 0x71, 0x81, 0xE3, 0x03, - 0x25, 0x71, 0x0E, 0x0B, 0xB5, 0x63, 0x67, 0x1A, 0xD1, 0x13, 0x0A, 0xE5, - 0xFF, 0x4B, 0x97, 0xEA, 0xBB, 0x75, 0xD7, 0x31, 0xCD, 0x4B, 0x06, 0xBD, - 0x6E, 0xB1, 0xA1, 0xD9, 0x30, 0x52, 0x8F, 0xF4, 0x4C, 0x51, 0x16, 0x72, - 0x73, 0x81, 0x48, 0x88, 0x3F, 0x9B, 0x80, 0x40, 0xDD, 0xE7, 0xA4, 0x98, - 0xC3, 0xB6, 0x7A, 0xF9, 0x91, 0xA1, 0xB1, 0xBB, 0x1D, 0x16, 0x3D, 0x13, - 0xF9, 0x7D, 0xD9, 0x31, 0xE6, 0x19, 0x83, 0xCF, 0xA6, 0x59, 0xC9, 0x8F, - 0xF7, 0x1E, 0xA3, 0x9C, 0x2B, 0x65, 0x9D, 0x21, 0x5B, 0x7C, 0xA4, 0x4D, - 0x07, 0x24, 0x99, 0xA2, 0x51, 0xDF, 0x4D, 0x5F, 0xB6, 0xB0, 0x17, 0xAA, - 0xEF, 0x16, 0xAB, 0x45, 0xAA, 0xD2, 0xA0, 0xBC, 0x09, 0x1B, 0x9A, 0x3C, - 0x27, 0x86, 0xE0, 0xAD, 0x9E, 0xE4, 0x4D, 0x73, 0x09, 0x88, 0xCC, 0x55, - 0x2A, 0x8A, 0x33, 0x29, 0x84, 0xD1, 0x8D, 0xF6, 0xE6, 0xDF, 0x27, 0x70, - 0xA0, 0xD6, 0x5B, 0x31, 0xEE, 0x7E, 0x7A, 0x31, 0x87, 0xF2, 0xCC, 0x4C, - 0xBE, 0x63, 0xC1, 0x41, 0xC6, 0x39, 0xFA, 0x3B, 0x9A, 0x60, 0x05, 0x29, - 0xDF, 0x91, 0x9E, 0x3B, 0x7B, 0xDB, 0x8F, 0x6E, 0xFB, 0x0F, 0xF1, 0x20, - 0xC7, 0x08, 0x47, 0x2A, 0x14, 0xB4, 0x7C, 0x93, 0xEB, 0x63, 0xE3, 0x03, - 0xC7, 0x4D, 0x9F, 0x7D, 0x29, 0x7F, 0xC3, 0x03, 0x44, 0x89, 0x22, 0x8D, - 0x2D, 0xF1, 0x86, 0xCB, 0x28, 0xBE, 0x39, 0xAC, 0x16, 0xBB, 0x73, 0xB2, - 0x44, 0xC6, 0xA5, 0x63, 0x06, 0xE2, 0xED, 0x76, 0x95, 0x73, 0x02, 0xCE, - 0x6A, 0x7E, 0x55, 0x2D, 0x2A, 0x1D, 0x78, 0x30, 0x3B, 0x0A, 0xAB, 0x3A, - 0xDB, 0x21, 0xD8, 0x6D, 0xA4, 0xBE, 0xAD, 0x07, 0xD1, 0x08, 0xAC, 0x26, - 0xBC, 0x4F, 0x50, 0x31, 0xA2, 0xDA, 0x18, 0x75, 0xA2, 0xE9, 0x1D, 0x93, - 0xB6, 0x34, 0x01, 0xA5, 0xE9, 0xBE, 0x94, 0x7B, 0x33, 0x61, 0x7C, 0x71, - 0xE3, 0x72, 0x78, 0x45, 0x3D, 0x2A, 0x7A, 0x87, 0x5B, 0x8D, 0x4E, 0xF8, - 0x79, 0x01, 0xF6, 0x49, 0x5B, 0x9B, 0xBD, 0xB8, 0xC8, 0xAE, 0xBD, 0xC2, - 0x5D, 0x14, 0x8B, 0x51, 0x4F, 0x86, 0x56, 0xB2, 0xD8, 0xF5, 0x5C, 0x0F, - 0x38, 0xDC, 0x30, 0x15, 0x2B, 0x6A, 0x15, 0x98, 0x08, 0x23, 0x5A, 0xEA, - 0x1E, 0xCA, 0xC7, 0xAC, 0x74, 0x26, 0xD0, 0x7C, 0xC6, 0x75, 0x1A, 0x67, - 0x1E, 0xD3, 0xD3, 0x26, 0x9F, 0x82, 0x2E, 0x90, 0x5D, 0x50, 0xD1, 0x4F, - 0x2B, 0x79, 0x5C, 0xCE, 0x4A, 0x8F, 0x9F, 0xBB, 0x60, 0xD4, 0x21, 0x92, - 0x63, 0x3E, 0xBC, 0x77, 0x57, 0x0E, 0xC0, 0x56, 0x62, 0x6F, 0x47, 0x75, - 0x88, 0xF0, 0x87, 0xA3, 0xCC, 0x1F, 0x12, 0xCC, 0xA2, 0x0B, 0x74, 0x19, - 0xEE, 0xD6, 0x2F, 0x5C, 0x34, 0x06, 0x50, 0x7D, 0xBB, 0xB6, 0x21, 0xDB, - 0xB4, 0xB1, 0x8C, 0x88, 0x42, 0x8E, 0x3B, 0xBF, 0x89, 0x5F, 0x89, 0x77, - 0x5A, 0x46, 0xE4, 0x02, 0xE4, 0x48, 0xBB, 0xA9, 0x3F, 0x09, 0xAA, 0x1F, - 0x62, 0x98, 0xF8, 0xE6, 0xCD, 0x62, 0xCB, 0xF7, 0xD0, 0x1D, 0xA4, 0x7A, - 0x18, 0x0A, 0x0D, 0x44, 0x6C, 0x14, 0xDB, 0x97, 0x94, 0xCA, 0x98, 0x7F, - 0x60, 0x36, 0x1E, 0x13, 0x52, 0xE8, 0x7F, 0x18, 0xEE, 0x99, 0xFA, 0xCB, - 0x23, 0x5D, 0xB1, 0x2B, 0xA1, 0xFE, 0xD6, 0xB0, 0x77, 0x13, 0xE4, 0x55, - 0xCC, 0x56, 0xFA, 0x8E, 0x29, 0x25, 0xA9, 0xDF, 0x81, 0x58, 0xEE, 0xB6, - 0x3B, 0xC2, 0x29, 0xB4, 0x1E, 0x72, 0xCA, 0x55, 0xD3, 0x7B, 0xA6, 0xDD, - 0x48, 0x96, 0x3B, 0x76, 0x3A, 0x41, 0xF3, 0x2A, 0x94, 0x13, 0xF3, 0x51, - 0xC3, 0x00, 0x09, 0x4F, 0x88, 0xBA, 0x24, 0xD1, 0x14, 0x12, 0x14, 0x2D, - 0xC1, 0xAB, 0x3B, 0x21, 0x54, 0x8B, 0x4C, 0xDC, 0x17, 0x08, 0x1E, 0xE8, - 0x83, 0x4A, 0x3E, 0x25, 0x0E, 0x7B, 0xBC, 0xD5, 0xC7, 0xCA, 0x13, 0x31, - 0x1B, 0xD8, 0x8F, 0xE2, 0x4A, 0x23, 0x24, 0xA9, 0x69, 0xF4, 0x8E, 0x65, - 0xB2, 0xEF, 0xA1, 0x83, 0xFF, 0xBF, 0x01, 0xE7, 0x8B, 0xFC, 0xD1, 0x92, - 0x91, 0xCF, 0x3D, 0xB7, 0x49, 0x3B, 0xF5, 0x81, 0x54, 0xB1, 0xFF, 0xB6, - 0xD9, 0x2C, 0x31, 0xA1, 0xC0, 0x8F, 0x56, 0x54, 0x52, 0x5B, 0x7D, 0x80, - 0x61, 0x44, 0x44, 0x8C, 0xC4, 0xFA, 0x8E, 0x59, 0xDE, 0xA1, 0xC5, 0xFB, - 0xF7, 0x40, 0xE7, 0xD6, 0x06, 0x55, 0xC3, 0x19, 0x73, 0x21, 0xFD, 0x86, - 0x8C, 0x68, 0x1B, 0x37, 0x7A, 0xC9, 0xC4, 0x70, 0x07, 0x38, 0x15, 0x03, - 0xA7, 0x2A, 0xBD, 0x37, 0x8A, 0xD0, 0x63, 0x13, 0x66, 0xEA, 0x9D, 0x65, - 0x67, 0x87, 0x78, 0xE8, 0xD2, 0x7E, 0xDB, 0x90, 0xA2, 0xAC, 0x9F, 0xAC, - 0x7A, 0x81, 0xF1, 0x5F, 0x4C, 0x6C, 0x53, 0x0C, 0xD5, 0x9E, 0x64, 0x1D, - 0xD1, 0x85, 0x5D, 0x65, 0x54, 0x9C, 0xE5, 0x20, 0xF7, 0xE5, 0x9C, 0x03, - 0x29, 0x71, 0x9A, 0xE4, 0xC7, 0xD1, 0x91, 0x07, 0x66, 0x60, 0x89, 0x37, - 0xF9, 0x3F, 0x58, 0x7D, 0x07, 0x06, 0xCC, 0xEE, 0x05, 0x49, 0xEA, 0x50, - 0xD7, 0x4A, 0x76, 0x63, 0x16, 0x66, 0xE3, 0x1D, 0xDC, 0xCA, 0x3B, 0x0B, - 0x89, 0x4C, 0xF8, 0x04, 0xD2, 0x50, 0x62, 0x2C, 0x1B, 0x7E, 0x62, 0x8B, - 0x7B, 0x55, 0x68, 0x3F, 0xAC, 0xD0, 0x5E, 0xB4, 0xF8, 0x25, 0xE5, 0xEA, - 0x40, 0xA4, 0x06, 0x7B, 0xA3, 0xC6, 0x8B, 0xE1, 0x4A, 0x83, 0x4B, 0xCC, - 0x9C, 0xDA, 0x7C, 0x9F, 0xF6, 0xE7, 0x7A, 0xC2, 0xDD, 0x9E, 0x2F, 0xB4, - 0x3A, 0x07, 0xBA, 0x47, 0x83, 0x43, 0x79, 0xBE, 0x69, 0x19, 0x02, 0x48, - 0x03, 0x22, 0x10, 0xAE, 0x99, 0x80, 0xEE, 0xB0, 0xDE, 0xBA, 0xC1, 0x51, - 0x4B, 0xF4, 0x2E, 0x61, 0xB0, 0xF9, 0x1B, 0x88, 0x6D, 0x92, 0x8B, 0x36, - 0x30, 0x92, 0x32, 0x0A, 0xE8, 0xA5, 0x79, 0xAC, 0x27, 0x18, 0xE9, 0x67, - 0x4B, 0xBC, 0x12, 0xE5, 0xB3, 0x66, 0x19, 0xD8, 0xFC, 0x62, 0x55, 0xF0, - 0x59, 0xFB, 0x58, 0x57, 0x15, 0xB9, 0x15, 0x89, 0x32, 0xAA, 0xA1, 0x0F, - 0xC7, 0xD8, 0xFB, 0xD5, 0x6E, 0x94, 0xB8, 0xE3, 0xC7, 0x7B, 0x76, 0x25, - 0x0D, 0xB1, 0xD7, 0x2D, 0x26, 0x5E, 0xCA, 0x88, 0xA3, 0x96, 0xD8, 0x1C, - 0xBC, 0x31, 0x34, 0x6A, 0xBA, 0x99, 0x64, 0x51, 0xEF, 0x4C, 0xB4, 0x6A, - 0x06, 0xEB, 0x4F, 0x98, 0x95, 0x56, 0x75, 0x6F, 0x74, 0x86, 0x22, 0x53, - 0x9C, 0x0A, 0x1E, 0x4D, 0xF0, 0xB0, 0xD5, 0x1B, 0x85, 0x8F, 0xD6, 0x37, - 0xE1, 0x25, 0x66, 0x5E, 0xE9, 0x89, 0x8F, 0x51, 0x51, 0x8D, 0x76, 0x99, - 0xD7, 0xBC, 0x17, 0xEE, 0xF6, 0x6B, 0x3F, 0xCF, 0x56, 0x31, 0x50, 0x77, - 0x84, 0x1E, 0xFB, 0x4D, 0x5A, 0x35, 0xBE, 0xE3, 0xAF, 0x88, 0xC3, 0xAC, - 0x22, 0xDF, 0x56, 0x58, 0x34, 0x52, 0x8A, 0xCA, 0xE7, 0x9D, 0x76, 0xD4, - 0xB8, 0x86, 0xFB, 0xD9, 0xBD, 0x59, 0xEC, 0x84, 0x29, 0x06, 0x0E, 0x65, - 0x65, 0x18, 0x50, 0x57, 0xE5, 0xCC, 0xA2, 0xBB, 0x1A, 0x85, 0xF6, 0xFD, - 0xBA, 0x40, 0xA8, 0x1E, 0x52, 0xAD, 0x36, 0x12, 0xC7, 0xF1, 0x9B, 0xEA, - 0x50, 0xA0, 0xFA, 0x99, 0x54, 0xF5, 0xD0, 0xFA, 0xDA, 0xEC, 0x70, 0xC8, - 0x21, 0xA0, 0xEA, 0xEF, 0xC0, 0x51, 0x26, 0x3A, 0x13, 0xD6, 0x4C, 0x95, - 0xC5, 0x07, 0xA1, 0xA8, 0x3B, 0x63, 0x8A, 0x4E, 0xAE, 0xE8, 0xA4, 0x68, - 0x8E, 0xA3, 0x13, 0xD9, 0x13, 0xDF, 0xA2, 0xB3, 0xEF, 0x9F, 0x4E, 0x0D, - 0x00, 0xB2, 0xC2, 0x40, 0xBE, 0x0D, 0xD1, 0x59, 0x20, 0x1F, 0x27, 0x2D, - 0x99, 0xEE, 0x1D, 0x05, 0xD7, 0x7D, 0x2A, 0xA3, 0x86, 0x44, 0x54, 0x28, - 0x8A, 0x31, 0x1C, 0x66, 0xFB, 0x9F, 0x68, 0xE8, 0xCA, 0xEB, 0x74, 0x9A, - 0xAC, 0x77, 0x2F, 0xF4, 0xCF, 0x9D, 0x48, 0xA9, 0x8F, 0xB2, 0x9F, 0x74, - 0x9F, 0x75, 0xE3, 0x88, 0x42, 0xB1, 0x5F, 0x7C, 0xEE, 0xED, 0x7E, 0x5A, - 0xB0, 0x62, 0xCD, 0x2F, 0x95, 0x68, 0x2F, 0xF2, 0x58, 0x29, 0x8A, 0x22, - 0x31, 0xC8, 0x82, 0x75, 0x51, 0x9B, 0xF7, 0xE3, 0x59, 0x52, 0xD9, 0x5B, - 0xDE, 0x49, 0x54, 0x22, 0xD1, 0xF2, 0xF6, 0xB0, 0x0B, 0xB8, 0x4E, 0x08, - 0x43, 0xF9, 0xEA, 0x98, 0xB4, 0xE3, 0x10, 0xB7, 0x8B, 0x79, 0x2C, 0x86, - 0xAC, 0x75, 0x80, 0x6A, 0xC2, 0x18, 0x43, 0x06, 0x5E, 0xB9, 0x80, 0xA9, - 0x87, 0x02, 0x9A, 0xF5, 0x57, 0x73, 0xA2, 0x68, 0x49, 0x4E, 0xEF, 0x2D, - 0x48, 0x7F, 0x0B, 0x0C, 0x91, 0x35, 0x8A, 0x20, 0x7F, 0xB2, 0xD8, 0x7A, - 0x88, 0x70, 0xC3, 0xA7, 0x37, 0xC4, 0x68, 0x21, 0x3E, 0x55, 0x91, 0x88, - 0x07, 0x2C, 0x0F, 0xC6, 0xB3, 0x49, 0x7F, 0x85, 0xFB, 0xFF, 0x2D, 0x7E, - 0x78, 0x13, 0xB7, 0xD5, 0x69, 0x21, 0xB7, 0x7C, 0xAF, 0x20, 0x14, 0xFD, - 0xD9, 0x9C, 0xA8, 0xB2, 0x2F, 0xFE, 0x28, 0x8B, 0xF3, 0x66, 0xF0, 0xA5, - 0xED, 0x8E, 0x1B, 0x1C, 0xF8, 0x24, 0x67, 0xB7, 0xE6, 0x06, 0x33, 0xC6, - 0x60, 0x28, 0x6A, 0xE6, 0xB8, 0xA1, 0xCF, 0x9B, 0x15, 0x41, 0xA4, 0x7A, - 0x7F, 0xAD, 0xF4, 0x8A, 0x1F, 0xE1, 0x77, 0x07, 0x51, 0x66, 0x8C, 0x6B, - 0x35, 0x81, 0x60, 0x66, 0x8D, 0x58, 0xA1, 0xDF, 0xAA, 0x0C, 0x3B, 0x9A, - 0x70, 0x0F, 0x1F, 0x06, 0x67, 0xC2, 0x0C, 0x6E, 0xD1, 0xFC, 0x93, 0x5C, - 0xC7, 0x1F, 0x19, 0x59, 0x70, 0x6C, 0x5C, 0xC8, 0xFA, 0x9C, 0xFB, 0xB2, - 0x46, 0x98, 0x5F, 0x1F, 0x80, 0x7B, 0x8D, 0x16, 0x2D, 0x2A, 0x03, 0xF6, - 0x27, 0xCB, 0x11, 0xAE, 0x9D, 0xE5, 0x36, 0xDD, 0x20, 0x52, 0x53, 0xD7, - 0x66, 0x22, 0x4F, 0x51, 0xE1, 0x2B, 0x7E, 0xF1, 0x9A, 0xAC, 0xBC, 0x8A, - 0x6D, 0x78, 0x60, 0x62, 0x20, 0xB3, 0xA2, 0x1E, 0xA5, 0x68, 0x1A, 0x29, - 0x45, 0x25, 0x7E, 0xF8, 0x50, 0x62, 0xED, 0x4E, 0x06, 0x44, 0x2A, 0x79, - 0xF4, 0x52, 0xD0, 0x4F, 0x2C, 0x2F, 0xC6, 0xFF, 0x74, 0xE2, 0x5B, 0x13, - 0x4C, 0x99, 0xB5, 0x7D, 0x0D, 0x01, 0x66, 0x77, 0x3C, 0x74, 0x38, 0x11, - 0xFE, 0x1F, 0x31, 0xAA, 0xF4, 0xAF, 0x42, 0x7D, 0xC7, 0x62, 0xA1, 0xA2, - 0xBB, 0xFE, 0xE9, 0x89, 0x8F, 0x3D, 0x0B, 0xE4, 0xA0, 0x5B, 0xA1, 0x18, - 0x87, 0x36, 0xA0, 0x75, 0x06, 0xA8, 0x83, 0x00, 0xF3, 0x5B, 0x83, 0x3E, - 0x42, 0xFA, 0x09, 0x4C, 0x35, 0x27, 0xA7, 0xB0, 0x00, 0xDA, 0x8C, 0x8E, - 0x1A, 0x51, 0x9B, 0x5A, 0x8F, 0x05, 0x9A, 0xBD, 0xCB, 0x10, 0x12, 0x4D, - 0x17, 0xE5, 0x78, 0xDF, 0xE7, 0x49, 0x5D, 0xB0, 0x78, 0x5F, 0x44, 0xE1, - 0xDB, 0xE9, 0x84, 0xD9, 0x90, 0xAD, 0xBE, 0x86, 0x95, 0x81, 0xC1, 0xCD, - 0x1B, 0xD4, 0xCE, 0x6D, 0x5E, 0xB3, 0x52, 0xB1, 0x67, 0x5E, 0xF2, 0xE4, - 0xC5, 0xCB, 0x5C, 0xC6, 0x57, 0xBE, 0x1C, 0x0E, 0xDE, 0x7B, 0xD3, 0xB3, - 0x01, 0xDC, 0x1F, 0x11, 0x12, 0xFC, 0x62, 0x9B, 0xFD, 0xF8, 0x8C, 0xDC, - 0xE4, 0x35, 0x22, 0x61, 0x0E, 0xA0, 0x80, 0xF9, 0x48, 0xFC, 0x1C, 0x36, - 0x2A, 0x02, 0x4A, 0xDC, 0x55, 0xE2, 0x35, 0xC8, 0xB4, 0x2E, 0xED, 0x43, - 0x11, 0x31, 0x6C, 0xFB, 0x77, 0x68, 0x5E, 0xC6, 0x72, 0x37, 0x08, 0x5A, - 0xC4, 0x98, 0x23, 0x9E, 0x0A, 0xE3, 0x82, 0x1B, 0xCA, 0xDE, 0x3F, 0xBE, - 0xF0, 0x74, 0x6C, 0x9E, 0x16, 0x9B, 0x41, 0xC9, 0x79, 0xB9, 0x82, 0x9D, - 0x66, 0x60, 0x09, 0xBD, 0x46, 0x2F, 0xDC, 0xF8, 0xC9, 0xB8, 0x0B, 0xB6, - 0xEB, 0x30, 0xD1, 0xAD, 0x93, 0xB4, 0xE3, 0xD1, 0xE6, 0x35, 0xE1, 0x6B, - 0xC7, 0x49, 0x47, 0xAE, 0xF1, 0x7A, 0x7A, 0x2E, 0xAE, 0xF8, 0xEC, 0x5D, - 0x62, 0x67, 0xFD, 0x9D, 0x18, 0x74, 0xBA, 0xA6, 0xA8, 0xA8, 0x6E, 0xD8, - 0xBF, 0x24, 0xCA, 0x74, 0x51, 0xE1, 0x6A, 0x8B, 0xAC, 0x96, 0x43, 0xC5, - 0x75, 0x60, 0xAE, 0xA9, 0xCC, 0x89, 0x06, 0xA9, 0x6C, 0xEA, 0x47, 0x53, - 0x60, 0x21, 0x7A, 0x38, 0xD4, 0xE4, 0x8A, 0xE6, 0x86, 0xAB, 0x36, 0x39, - 0x2F, 0xEA, 0x08, 0xC1, 0x32, 0xDA, 0xA2, 0xC4, 0xD5, 0xB2, 0xC0, 0x12, - 0x37, 0x9E, 0xDC, 0xBA, 0xC4, 0xF6, 0x8D, 0xDF, 0xA1, 0x9A, 0x3B, 0x70, - 0xE9, 0x9F, 0x4E, 0xD1, 0xE1, 0x27, 0x52, 0x27, 0x69, 0x57, 0xFF, 0x63, - 0xF6, 0x68, 0xF5, 0xF1, 0x42, 0x31, 0xE5, 0x05, 0xD2, 0xB7, 0xB5, 0x21, - 0xB9, 0xCE, 0x5D, 0xD4, 0xBB, 0xFE, 0xC5, 0x09, 0x8E, 0x98, 0xAA, 0xE7, - 0x9D, 0xE4, 0x92, 0x42, 0x7C, 0x2F, 0xC2, 0xC8, 0x05, 0xE0, 0xF7, 0xC5, - 0xD5, 0xFA, 0xC7, 0x9E, 0x75, 0x32, 0x7A, 0x7C, 0x18, 0x08, 0xB8, 0x90, - 0xDE, 0x09, 0xF1, 0x15, 0xA5, 0x6F, 0xFC, 0xE2, 0xAD, 0x97, 0x9A, 0x63, - 0x55, 0xDB, 0x2E, 0x0A, 0xFC, 0x2C, 0x3B, 0xD0, 0x47, 0xC4, 0xF1, 0x06, - 0x32, 0xF0, 0x5D, 0xC9, 0xC9, 0x87, 0x13, 0xC0, 0x67, 0xC4, 0x8B, 0x76, - 0x80, 0x62, 0x60, 0xC9, 0x3B, 0x0C, 0x81, 0x51, 0x00, 0xFD, 0xF6, 0x9B, - 0xE4, 0xF9, 0xC1, 0x03, 0xBB, 0x0F, 0x5D, 0xE3, 0xAC, 0xE6, 0x1F, 0x49, - 0xB5, 0x3C, 0x3E, 0x60, 0xC7, 0xC5, 0xD3, 0xB8, 0xAF, 0x07, 0xDF, 0x60, - 0x4B, 0x19, 0xB5, 0x90, 0x33, 0x41, 0x61, 0x75, 0xDB, 0x50, 0xD4, 0xB6, - 0x63, 0xFA, 0xF9, 0x83, 0x06, 0xBC, 0x4E, 0xF2, 0x53, 0xF0, 0xDC, 0xB8, - 0xD5, 0x9B, 0x63, 0xEE, 0xF3, 0x92, 0x68, 0xBB, 0xCB, 0xC3, 0x08, 0x7E, - 0x12, 0x4A, 0x8A, 0x48, 0xF9, 0xED, 0xA7, 0x6A, 0xCE, 0xDE, 0x0D, 0x7A, - 0xED, 0x2E, 0xA4, 0x75, 0x6C, 0x94, 0xB3, 0x0A, 0xF1, 0x3E, 0xA4, 0xE6, - 0x8F, 0x34, 0x13, 0x0E, 0xC7, 0xCE, 0x6B, 0x82, 0x5D, 0xD3, 0xD2, 0x79, - 0x7B, 0x6F, 0xB5, 0x00, 0x8B, 0xD6, 0x47, 0x95, 0x98, 0xDD, 0x56, 0xBC, - 0x8C, 0x40, 0x3B, 0x5A, 0x65, 0x88, 0x9F, 0xF5, 0x6F, 0x96, 0x32, 0x40, - 0x31, 0xAC, 0x3F, 0x18, 0x22, 0xE2, 0xDB, 0xD1, 0xF7, 0xAD, 0x48, 0x20, - 0x31, 0x8D, 0x3F, 0xD0, 0xC9, 0x88, 0x7F, 0x94, 0x34, 0x69, 0xBC, 0xEE, - 0xB2, 0x5B, 0x42, 0x82, 0x31, 0xBC, 0x83, 0xBD, 0x2C, 0x5A, 0x57, 0x74, - 0x94, 0x29, 0xC4, 0xD0, 0x18, 0x8B, 0x2C, 0xAA, 0x09, 0x14, 0x99, 0x33, - 0xD0, 0xDA, 0xD8, 0xCD, 0xED, 0x75, 0xBD, 0x69, 0xAA, 0x34, 0xD8, 0x4B, - 0x3D, 0xC2, 0xC0, 0x69, 0x7F, 0x2F, 0x0B, 0xDE, 0x23, 0xEE, 0xB1, 0x7C, - 0xD8, 0x5A, 0x7C, 0x0C, 0x45, 0x89, 0x08, 0x21, 0xE4, 0x23, 0x99, 0x75, - 0xFC, 0x0C, 0xF1, 0x59, 0x19, 0x07, 0xA9, 0xA9, 0x5E, 0x48, 0xEB, 0xCD, - 0x10, 0x61, 0xC2, 0xEB, 0x60, 0x74, 0x34, 0x80, 0xC2, 0xAA, 0xEF, 0x35, - 0x55, 0x19, 0x8A, 0x95, 0xE4, 0x4A, 0x88, 0x9E, 0x70, 0x73, 0x17, 0xA5, - 0x75, 0xB6, 0xBC, 0x5E, 0x5E, 0xAC, 0x88, 0xA8, 0x4E, 0x54, 0x71, 0x4F, - 0xB8, 0x84, 0xC2, 0xA3, 0xB5, 0x9D, 0x6C, 0xA2, 0x9B, 0x6C, 0x6F, 0xA6, - 0xD8, 0xE6, 0x83, 0x5D, 0xC3, 0x01, 0x2F, 0xB5, 0xE0, 0xFF, 0x62, 0x52, - 0xD4, 0x71, 0x8D, 0x2D, 0x72, 0x57, 0xF9, 0x90, 0xA7, 0x76, 0x3D, 0x47, - 0x76, 0xDE, 0x7E, 0x1B, 0xFB, 0xA4, 0x44, 0x7A, 0xE1, 0xBC, 0xB9, 0x72, - 0x3C, 0x42, 0xC6, 0x26, 0x0F, 0x70, 0xF1, 0xA6, 0x58, 0x91, 0xB1, 0xE7, - 0xA1, 0x70, 0x13, 0x75, 0xFE, 0x2C, 0xC2, 0x11, 0x48, 0x19, 0x72, 0xDF, - 0xD2, 0x1E, 0x5A, 0x35, 0xC9, 0x2B, 0xE6, 0x8E, 0xC6, 0x10, 0x9E, 0x6F, - 0x67, 0xCF, 0x40, 0xB8, 0x7D, 0x60, 0x8A, 0xD9, 0x09, 0x59, 0xFD, 0x04, - 0x51, 0xEB, 0xE7, 0x18, 0x8A, 0x77, 0x2C, 0x94, 0xA3, 0xA2, 0x82, 0xF2, - 0x50, 0xA6, 0xD9, 0x9C, 0x55, 0x65, 0x94, 0xE9, 0x67, 0xC4, 0xE1, 0x34, - 0x04, 0x22, 0x3F, 0x50, 0xAB, 0x1F, 0x0B, 0x94, 0xCC, 0x51, 0x35, 0x28, - 0xF9, 0x88, 0xA0, 0xA0, 0xA3, 0xF1, 0x97, 0x00, 0xC2, 0x9C, 0x35, 0x01, - 0xC1, 0x1B, 0x01, 0x49, 0x44, 0x4C, 0x06, 0xC9, 0x35, 0xA2, 0xEA, 0x93, - 0x26, 0xF0, 0xCA, 0x07, 0x7E, 0x1E, 0xBB, 0xCB, 0x03, 0x27, 0x35, 0x2D, - 0xF1, 0xE0, 0x15, 0x1D, 0xBE, 0xCE, 0x89, 0x3A, 0x65, 0xDA, 0x5B, 0xB8, - 0x3C, 0xF7, 0xF1, 0x3C, 0xDC, 0xFA, 0xAA, 0xD0, 0x43, 0x72, 0x73, 0x94, - 0x72, 0xD2, 0x10, 0x82, 0x32, 0x10, 0xB6, 0x05, 0x25, 0x16, 0x25, 0xD2, - 0x10, 0x73, 0xFD, 0x97, 0x7B, 0x7D, 0x31, 0x25, 0x89, 0x26, 0x83, 0xF8, - 0x78, 0x1B, 0x32, 0xFF, 0x35, 0x19, 0x91, 0x68, 0x3F, 0x1F, 0x78, 0x38, - 0x83, 0xA0, 0x49, 0x63, 0x4F, 0x70, 0x04, 0xAD, 0x57, 0xBC, 0x9D, 0x6F, - 0xBE, 0xDA, 0x56, 0xD1, 0xFF, 0xC2, 0x25, 0xA1, 0xF5, 0x39, 0xB3, 0xA8, - 0x69, 0x0A, 0xD2, 0xB1, 0xA0, 0x4F, 0x16, 0xB3, 0x15, 0xF4, 0xDD, 0x59, - 0x8C, 0xD3, 0x56, 0xDF, 0x11, 0x50, 0x33, 0x6D, 0x15, 0xB9, 0xCC, 0x89, - 0xC9, 0x81, 0xC2, 0x7A, 0xCD, 0x1F, 0x04, 0x17, 0xDB, 0x2B, 0x80, 0xFA, - 0xC8, 0x00, 0x94, 0xB1, 0x41, 0x42, 0xA8, 0x0F, 0x6D, 0x72, 0xCB, 0xA9, - 0xBA, 0xBC, 0x19, 0x5E, 0x42, 0x70, 0x94, 0x1B, 0xA4, 0x16, 0x86, 0x04, - 0xF7, 0x06, 0x6E, 0xC2, 0x4A, 0xBE, 0xD5, 0x27, 0x2A, 0x61, 0x1F, 0x56, - 0x34, 0x31, 0x8D, 0x59, 0x57, 0x2B, 0x86, 0x01, 0xC3, 0x94, 0x62, 0x8A, - 0x9C, 0x18, 0xB5, 0xDD, 0x52, 0xBC, 0x85, 0xB5, 0x09, 0x25, 0xBC, 0x36, - 0x05, 0x3F, 0xE4, 0xA8, 0xC9, 0x4A, 0xA1, 0x7C, 0xEB, 0xC1, 0x12, 0x64, - 0x05, 0xD4, 0x6A, 0x2D, 0x41, 0xBC, 0xC3, 0xF5, 0x57, 0x00, 0x4A, 0xB0, - 0xFF, 0xD3, 0xD2, 0x51, 0x76, 0x71, 0x0E, 0xC4, 0x78, 0x01, 0xD8, 0xC1, - 0xCA, 0xA4, 0x1B, 0xBB, 0xB5, 0x99, 0x50, 0xC7, 0xB9, 0xCD, 0x74, 0xAB, - 0x09, 0x89, 0x07, 0x54, 0x3A, 0xEA, 0x76, 0xA5, 0xA7, 0xE9, 0x96, 0x3D, - 0x8A, 0xFE, 0x24, 0x46, 0x7A, 0x4F, 0x57, 0x8B, 0x6D, 0x5B, 0xB2, 0x12, - 0xCA, 0x09, 0x7B, 0x45, 0x4D, 0xC1, 0x03, 0x7A, 0x27, 0xFB, 0x2C, 0xE2, - 0x95, 0xC6, 0x17, 0x46, 0x7B, 0x48, 0xFB, 0x8F, 0x78, 0x5B, 0xC8, 0x3E, - 0x54, 0x51, 0x99, 0x71, 0xE3, 0xC7, 0x92, 0xED, 0x99, 0xB4, 0x8A, 0x98, - 0x86, 0xA8, 0x91, 0x1D, 0x36, 0xB6, 0xB2, 0xC7, 0x9C, 0xD6, 0x68, 0x4D, - 0x45, 0x9B, 0x4D, 0x37, 0xB5, 0xA0, 0xCE, 0x30, 0x00, 0x13, 0x5A, 0x49, - 0xE4, 0x52, 0x45, 0x7D, 0x30, 0xEA, 0x74, 0xBE, 0xEE, 0x41, 0x43, 0xBC, - 0xB5, 0xC9, 0x0C, 0x40, 0x7F, 0x75, 0xC6, 0x57, 0x56, 0x9A, 0x90, 0xF6, - 0x56, 0x35, 0x83, 0x99, 0x80, 0x08, 0x69, 0x08, 0xB2, 0x59, 0x9F, 0x79, - 0x51, 0x5D, 0x9A, 0xE1, 0xCA, 0x16, 0x17, 0x28, 0xFE, 0x2B, 0xD1, 0x9F, - 0x1B, 0x25, 0x62, 0xC0, 0x5A, 0xF6, 0x26, 0x11, 0x6E, 0xD7, 0xE1, 0xBA, - 0x5C, 0xB8, 0x04, 0x7A, 0x55, 0xD3, 0x16, 0x59, 0x5C, 0x37, 0x26, 0xD0, - 0xB6, 0x09, 0xED, 0x57, 0x88, 0x56, 0x21, 0x5C, 0x91, 0xB6, 0xEB, 0xE4, - 0xC2, 0x70, 0x8D, 0x2F, 0x5A, 0x9F, 0x07, 0x5B, 0x57, 0x38, 0x9E, 0x3A, - 0x49, 0xDF, 0x67, 0x18, 0xA5, 0x50, 0x90, 0xDC, 0xBD, 0xA1, 0xA6, 0xE5, - 0x33, 0x25, 0xD7, 0xA0, 0x25, 0x71, 0x63, 0xD3, 0x8B, 0x89, 0xE2, 0xC0, - 0xC5, 0xC8, 0x51, 0xF1, 0x9B, 0x23, 0xD7, 0x35, 0xAC, 0x04, 0xD6, 0x8B, - 0x5A, 0xDF, 0x9A, 0x9D, 0x98, 0x5E, 0x5B, 0xD0, 0x2B, 0x28, 0xDF, 0x89, - 0x1B, 0x85, 0xC5, 0xB2, 0xDD, 0x43, 0xEF, 0x14, 0x99, 0x74, 0x8B, 0xAB, - 0x49, 0x45, 0xA7, 0x57, 0xBF, 0xCD, 0x7E, 0x80, 0xDF, 0x0C, 0x1B, 0x05, - 0xB2, 0x1E, 0xD0, 0xFD, 0x72, 0x3E, 0x25, 0xD2, 0xE1, 0x0B, 0x1C, 0x17, - 0x6C, 0x5B, 0x61, 0xC0, 0x84, 0xCD, 0xFA, 0xB6, 0x07, 0x0A, 0xBE, 0x2B, - 0xF7, 0x3E, 0xEA, 0x2B, 0x0B, 0x52, 0x33, 0x0A, 0x37, 0xC3, 0x48, 0x0A, - 0x93, 0x9C, 0xF7, 0x52, 0x45, 0x9B, 0xE5, 0x04, 0xED, 0x3B, 0x5A, 0xFF, - 0x8E, 0x4A, 0xFE, 0xD5, 0x76, 0x04, 0xED, 0xA2, 0xAE, 0x36, 0x6A, 0xCC, - 0x62, 0x7F, 0xB2, 0xBE, 0x3A, 0x30, 0x02, 0x59, 0xF3, 0x2F, 0xDF, 0x94, - 0x0D, 0x03, 0x22, 0xB6, 0x65, 0xDF, 0x26, 0x8A, 0xCE, 0x9F, 0x32, 0x4B, - 0x8D, 0x4E, 0x3B, 0x37, 0x24, 0x00, 0x0F, 0xB7, 0xF4, 0x4B, 0x2F, 0x0B, - 0xF9, 0x94, 0x14, 0x41, 0x94, 0xD0, 0x66, 0x80, 0x66, 0x9F, 0x04, 0x74, - 0xB8, 0x90, 0x35, 0xEE, 0xCC, 0x4B, 0xA7, 0xD4, 0x42, 0x7D, 0xD6, 0x23, - 0x3C, 0x2A, 0x8A, 0xB6, 0xAC, 0x19, 0x92, 0x37, 0xD9, 0x46, 0xDF, 0xE1, - 0x75, 0x2D, 0x05, 0x02, 0xB1, 0xCA, 0x34, 0x34, 0x1B, 0xB4, 0x67, 0x1F, - 0x56, 0xBD, 0x55, 0xCD, 0xEC, 0x9E, 0x3D, 0x4E, 0x83, 0x90, 0x5D, 0x66, - 0xBA, 0xA6, 0x76, 0x7E, 0x2E, 0xAA, 0x92, 0xD2, 0x80, 0xC5, 0x25, 0x0D, - 0x91, 0xF5, 0x9B, 0x54, 0x6F, 0x05, 0xCE, 0xE3, 0x4A, 0x55, 0xCB, 0xA6, - 0xDD, 0x4C, 0x91, 0x92, 0xA0, 0x1C, 0x83, 0xBD, 0x28, 0x05, 0xB9, 0xFC, - 0x75, 0x42, 0xEF, 0xB1, 0x7D, 0x2A, 0x17, 0x3E, 0x7A, 0xB3, 0xB5, 0xCB, - 0xD9, 0x43, 0x0F, 0xAD, 0x4D, 0x36, 0x70, 0x4E, 0x39, 0x3C, 0x91, 0xF6, - 0x05, 0xDB, 0x0A, 0x43, 0xDC, 0x5B, 0xAF, 0x4C, 0x34, 0x72, 0x9B, 0xF1, - 0x2D, 0x89, 0x0F, 0x85, 0x1C, 0x90, 0x8B, 0x90, 0x84, 0xCC, 0x1D, 0xD0, - 0xAE, 0xF6, 0x58, 0x20, 0x38, 0xE9, 0x44, 0x16, 0xB6, 0xCB, 0x90, 0x5C, - 0x76, 0x91, 0xB7, 0x1B, 0x15, 0xB6, 0xEF, 0xB1, 0x31, 0xAE, 0xD0, 0x9E, - 0x78, 0x37, 0xBC, 0x69, 0x3B, 0x2C, 0x22, 0x89, 0x10, 0xE5, 0xBF, 0xA5, - 0xAA, 0x32, 0x0F, 0x5F, 0xED, 0x7A, 0x85, 0xC2, 0x25, 0x0E, 0x8C, 0x8D, - 0xEB, 0x8D, 0xE7, 0x33, 0x84, 0x9B, 0x47, 0xC5, 0xD6, 0x49, 0xAB, 0x1D, - 0xA1, 0x0A, 0x84, 0x14, 0x1A, 0x90, 0xD8, 0x11, 0x78, 0x4A, 0x1A, 0x01, - 0xE2, 0x27, 0xC9, 0x49, 0x61, 0x82, 0x62, 0xA2, 0xE0, 0xE4, 0xDF, 0x99, - 0xC5, 0x5A, 0x7B, 0x54, 0x7B, 0x77, 0xC9, 0xF8, 0xA4, 0xB5, 0xA2, 0xA0, - 0x09, 0x42, 0x9F, 0x47, 0x82, 0x6C, 0x79, 0xED, 0x5F, 0x79, 0xBD, 0x0C, - 0x73, 0x84, 0x88, 0x05, 0x16, 0x17, 0x08, 0x9D, 0x3C, 0xCA, 0xCB, 0x55, - 0xD4, 0x14, 0x16, 0xD3, 0x83, 0xAE, 0x39, 0x1D, 0x3D, 0x19, 0x51, 0x1A, - 0x45, 0x32, 0x19, 0xA0, 0xF0, 0xC0, 0xB0, 0x27, 0x4D, 0xC6, 0x6F, 0x75, - 0x52, 0x59, 0x14, 0x50, 0xF7, 0xDF, 0x6A, 0x51, 0xE5, 0xB0, 0xDC, 0xE8, - 0x27, 0x2E, 0x49, 0x7A, 0x53, 0x96, 0x2C, 0x28, 0x9A, 0x65, 0x75, 0x65, - 0xBE, 0x35, 0x1B, 0x6D, 0x1C, 0x90, 0xCA, 0x80, 0x42, 0xBF, 0xA4, 0x45, - 0xA2, 0x5C, 0x93, 0xFC, 0xB5, 0x63, 0x30, 0xB2, 0xA7, 0x7B, 0x20, 0x3F, - 0x0F, 0x5E, 0xE1, 0x41, 0x61, 0x79, 0xBC, 0xB1, 0x07, 0x69, 0x2F, 0xA9, - 0x48, 0x99, 0xEE, 0xD3, 0x46, 0xFF, 0x51, 0x54, 0x31, 0xB5, 0xC1, 0xCE, - 0x87, 0x20, 0xB9, 0x0F, 0x47, 0x77, 0x46, 0xB3, 0x57, 0xAD, 0x3C, 0x1E, - 0x03, 0xD0, 0xA5, 0x3D, 0x66, 0xB3, 0xC5, 0x28, 0x2E, 0x06, 0xF6, 0x02, - 0x49, 0x9D, 0xF9, 0xF5, 0x29, 0x69, 0xF8, 0x16, 0x0A, 0x2F, 0xB7, 0xCD, - 0xE8, 0xDB, 0x5F, 0xA2, 0x12, 0xAB, 0x7C, 0x09, 0x24, 0x81, 0x9C, 0x04, - 0x27, 0x51, 0x66, 0x4D, 0xDC, 0xE5, 0x24, 0xE9, 0xE4, 0x53, 0xA9, 0x8B, - 0x41, 0x25, 0x47, 0x2B, 0x2B, 0xC6, 0xA0, 0x41, 0x81, 0xEB, 0xD1, 0xC6, - 0xB3, 0x77, 0x97, 0x90, 0x25, 0x15, 0xFA, 0xB2, 0x37, 0x9F, 0xE4, 0xE3, - 0xB2, 0x11, 0xEB, 0xF2, 0x72, 0x62, 0xC6, 0x8A, 0x00, 0xF3, 0x99, 0x83, - 0x11, 0x26, 0x64, 0x82, 0xA6, 0xA2, 0x8B, 0xF2, 0xB0, 0xCE, 0xAE, 0x49, - 0xE1, 0x16, 0xC1, 0x6F, 0x81, 0x89, 0x61, 0x6F, 0x9E, 0x0A, 0x07, 0xB3, - 0xDB, 0x62, 0x45, 0xEF, 0x54, 0x6C, 0x9F, 0x95, 0xC5, 0x50, 0xEF, 0xD7, - 0x81, 0x0B, 0x8F, 0x67, 0x15, 0xE4, 0xDF, 0xC6, 0xFB, 0xD5, 0x17, 0x8F, - 0x90, 0x27, 0xE5, 0x3B, 0x86, 0xF4, 0xBC, 0xF1, 0x9D, 0x1D, 0x07, 0xB1, - 0x3D, 0x45, 0xE4, 0x62, 0x76, 0x6B, 0xFC, 0x2C, 0xE5, 0x31, 0x7E, 0x1D, - 0x66, 0x0B, 0x85, 0x27, 0x80, 0xF8, 0xCB, 0xB8, 0x2A, 0xA4, 0x23, 0x4B, - 0x3D, 0xB7, 0xE3, 0x10, 0x4D, 0xB8, 0xD1, 0xA9, 0x10, 0x33, 0x84, 0xF1, - 0x07, 0x28, 0xE0, 0x89, 0x4D, 0x9C, 0x4F, 0xA3, 0x84, 0xFA, 0x30, 0xBC, - 0x38, 0x72, 0x91, 0x59, 0xD5, 0x66, 0x49, 0x2E, 0x62, 0x69, 0x7A, 0x6E, - 0xCB, 0x3F, 0x18, 0x9A, 0x24, 0x8A, 0x8A, 0x72, 0x1E, 0x2F, 0xF5, 0xD5, - 0x23, 0x5D, 0x85, 0x58, 0x22, 0x1D, 0x23, 0x44, 0x82, 0x94, 0x85, 0x66, - 0x07, 0x4C, 0x1C, 0x85, 0xF8, 0x1C, 0x28, 0x0A, 0x09, 0x39, 0x79, 0xFF, - 0xCC, 0xF0, 0x20, 0x84, 0xCA, 0x88, 0x77, 0x8F, 0xC3, 0x58, 0x56, 0xDD, - 0xB9, 0x06, 0x1C, 0x0D, 0xFB, 0x9B, 0x10, 0xE1, 0xDB, 0x23, 0x84, 0xF0, - 0xB0, 0x76, 0xC0, 0x0C, 0xF8, 0x28, 0x13, 0xE7, 0x4E, 0xDD, 0xC3, 0x1A, - 0xBD, 0x9F, 0x5B, 0x47, 0xEC, 0x22, 0x01, 0x0A, 0x8E, 0xFC, 0x4A, 0x36, - 0xF7, 0xC6, 0xFC, 0x33, 0x1E, 0x29, 0xBB, 0x34, 0xD0, 0xA9, 0x9A, 0x57, - 0x17, 0x8E, 0x02, 0x1C, 0x44, 0xB8, 0x33, 0x24, 0xD6, 0x8D, 0xB6, 0x3F, - 0xDB, 0x1B, 0xAD, 0xC5, 0x5A, 0x98, 0x88, 0xE6, 0x7D, 0x9C, 0x2F, 0xE7, - 0x0E, 0x14, 0xD3, 0xA1, 0x9A, 0x98, 0xB8, 0x54, 0xE2, 0x90, 0x97, 0x5E, - 0x48, 0xDE, 0xCF, 0x3B, 0x4F, 0x57, 0x92, 0x66, 0x2D, 0xB4, 0xA7, 0x71, - 0x4D, 0x08, 0xB7, 0xA3, 0xF1, 0x5A, 0xAA, 0x7E, 0xAD, 0xAD, 0xAC, 0xD2, - 0xBD, 0x27, 0x41, 0x51, 0xC1, 0xEA, 0x4F, 0xE0, 0x0D, 0xC7, 0x3B, 0x20, - 0x84, 0x18, 0x7B, 0xBB, 0x78, 0xB7, 0xCB, 0x6E, 0x5B, 0x83, 0xBF, 0x59, - 0x72, 0x2F, 0x74, 0x32, 0xA6, 0x55, 0x81, 0x6B, 0xFA, 0xE0, 0xA7, 0x68, - 0x0D, 0xB5, 0xCF, 0x02, 0xCB, 0xDD, 0xF0, 0x69, 0xB1, 0x74, 0x4A, 0x53, - 0x77, 0xF7, 0xD1, 0xC2, 0xCE, 0x2A, 0x59, 0xFD, 0x01, 0xBD, 0xD9, 0x50, - 0x3E, 0xC4, 0xE6, 0xE0, 0x0C, 0x62, 0x44, 0x64, 0xEE, 0x70, 0x9F, 0x69, - 0x81, 0x0D, 0xCE, 0x42, 0x87, 0x3A, 0xF2, 0x3A, 0x6B, 0x78, 0xDA, 0x42, - 0x99, 0x33, 0xC9, 0xEB, 0x3B, 0x9C, 0xED, 0x3B, 0xC7, 0xF2, 0x65, 0xD1, - 0x32, 0xB2, 0x3F, 0x9D, 0x80, 0xEC, 0xAC, 0x7D, 0x04, 0xF1, 0xE9, 0xBA, - 0x52, 0x4A, 0x74, 0x70, 0x8C, 0xCF, 0xB1, 0xB9, 0x91, 0x8C, 0x4F, 0x12, - 0x0D, 0xC2, 0x7A, 0x2F, 0xB8, 0x86, 0xF2, 0x9B, 0x4D, 0x58, 0xE0, 0xA0, - 0x2E, 0xEA, 0x82, 0x17, 0xC1, 0x7E, 0x48, 0xBE, 0x56, 0xA5, 0xC7, 0xB9, - 0x88, 0xF5, 0x26, 0xA6, 0xC1, 0x60, 0x83, 0xBC, 0x40, 0x7C, 0x36, 0x2B, - 0x32, 0x57, 0x25, 0xBE, 0x88, 0x38, 0x2B, 0x8D, 0xBE, 0xA0, 0xE0, 0x64, - 0x0D, 0x06, 0x2C, 0xD5, 0x88, 0x31, 0xCC, 0x79, 0x49, 0x81, 0x19, 0xE5, - 0x36, 0x43, 0x3D, 0x74, 0xA3, 0x20, 0x59, 0x3C, 0xFD, 0x5B, 0x5C, 0x35, - 0x4D, 0xF1, 0x90, 0x26, 0x8A, 0x06, 0xB5, 0x76, 0x87, 0x1D, 0xC6, 0x7D, - 0x93, 0x8A, 0x35, 0x62, 0x12, 0x23, 0x7E, 0xD7, 0x33, 0x4C, 0x73, 0xEB, - 0x01, 0x6D, 0xCB, 0xAF, 0xE5, 0xF2, 0x5D, 0x6C, 0x48, 0x73, 0x8E, 0x78, - 0xA6, 0xA1, 0x11, 0xAC, 0x91, 0xA1, 0x6D, 0x13, 0xAE, 0x2B, 0xA7, 0x7B, - 0x03, 0xDA, 0x16, 0x7A, 0xE3, 0x6A, 0x53, 0xF1, 0x82, 0x1F, 0xD0, 0x29, - 0xA6, 0x99, 0xB0, 0xC1, 0x1A, 0x28, 0xBC, 0x08, 0xC7, 0x6C, 0x3E, 0xD8, - 0x3B, 0x7D, 0x31, 0x4F, 0xB9, 0xCC, 0x1F, 0x8F, 0x06, 0x85, 0xDE, 0x97, - 0xBD, 0x7A, 0x02, 0xA4, 0x16, 0x0E, 0x8F, 0xF2, 0x61, 0xAE, 0x02, 0xA2, - 0x43, 0x84, 0xE0, 0x9E, 0x1E, 0xA9, 0xDB, 0xF0, 0x7A, 0xC3, 0xA0, 0xDD, - 0x93, 0xE9, 0x84, 0x8D, 0xC3, 0x79, 0x9C, 0xE5, 0x68, 0xBC, 0x63, 0xB8, - 0x82, 0xA0, 0x94, 0x7D, 0x7F, 0x5B, 0x73, 0x13, 0x0B, 0x7A, 0x46, 0xBE, - 0xEF, 0x70, 0x64, 0xB9, 0x26, 0xB0, 0x86, 0xBB, 0x33, 0x8A, 0xCC, 0x81, - 0x04, 0x8E, 0x62, 0x7A, 0x34, 0xFA, 0x25, 0x14, 0x0F, 0x0A, 0xD4, 0x0B, - 0xCF, 0xD6, 0x92, 0x05, 0x88, 0x2C, 0x2D, 0x26, 0xDF, 0x08, 0xD6, 0x19, - 0x6A, 0xAB, 0x74, 0x2C, 0xB0, 0x08, 0x6B, 0xAB, 0x87, 0xEA, 0x6A, 0x48, - 0xB8, 0x73, 0xB6, 0x16, 0x30, 0x33, 0xE7, 0x4B, 0x81, 0xBD, 0xEE, 0x67, - 0x31, 0x83, 0x4B, 0xCF, 0x83, 0x22, 0x05, 0x8A, 0x81, 0xEB, 0xFA, 0x75, - 0xBB, 0x54, 0x8E, 0x78, 0x5B, 0x76, 0x70, 0x3F, 0x7D, 0x3F, 0xAA, 0x6C, - 0x69, 0x7F, 0x19, 0x68, 0xB3, 0x68, 0x51, 0xD1, 0x61, 0xD5, 0x3C, 0x2C, - 0x6B, 0xC5, 0x96, 0xE0, 0xDA, 0x26, 0x63, 0xC5, 0x0E, 0xA1, 0xF5, 0x59, - 0xD5, 0x78, 0x87, 0x81, 0xEF, 0x87, 0x01, 0x88, 0xD4, 0xE1, 0xBD, 0xB8, - 0x96, 0x1D, 0x5D, 0x85, 0x1C, 0x6F, 0x53, 0xED, 0x6A, 0x6A, 0xC0, 0x2A, - 0xB2, 0xF1, 0x6C, 0x7A, 0x92, 0xF5, 0x70, 0x6D, 0x94, 0xD5, 0x87, 0x57, - 0xE3, 0x26, 0xCD, 0xDA, 0x52, 0x5C, 0x22, 0x03, 0xBD, 0xF6, 0x60, 0xA6, - 0xC9, 0x64, 0xF0, 0xC6, 0x11, 0xA4, 0x96, 0xB1, 0x27, 0x8B, 0x8E, 0x99, - 0x3E, 0xC2, 0xC1, 0x43, 0xD4, 0x10, 0x7D, 0xCC, 0x9F, 0xE4, 0x7C, 0xA6, - 0x10, 0x1E, 0xE5, 0x59, 0x37, 0x58, 0xF0, 0xB3, 0xF6, 0x4F, 0x8B, 0x41, - 0xDB, 0x65, 0x01, 0xDD, 0xE3, 0xAB, 0xBD, 0x4C, 0x4C, 0x69, 0x2B, 0x82, - 0xBA, 0x80, 0xDE, 0x9E, 0x4D, 0xAC, 0x86, 0xDF, 0x34, 0xDB, 0xDF, 0x1C, - 0xBA, 0x25, 0x03, 0xD0, 0x5E, 0x29, 0x29, 0x4E, 0xFC, 0xF6, 0xC0, 0x10, - 0x03, 0xCA, 0xB0, 0xA3, 0x22, 0xB0, 0x46, 0xAA, 0xC3, 0xBB, 0xF1, 0xC6, - 0x7C, 0xB1, 0xC2, 0x70, 0xCD, 0xAC, 0xE0, 0x6B, 0xDD, 0x14, 0xEC, 0xAD, - 0x80, 0x09, 0xF9, 0xBD, 0x1F, 0x4A, 0xD7, 0x20, 0xFA, 0x15, 0xCF, 0xDD, - 0xE5, 0x65, 0x2A, 0x06, 0xBD, 0x88, 0xC0, 0x12, 0x74, 0xC4, 0x8B, 0x3C, - 0x50, 0x8D, 0x73, 0xC3, 0xF0, 0x36, 0x40, 0x64, 0x39, 0x4C, 0x78, 0x92, - 0xD8, 0xDC, 0x93, 0x2A, 0xC0, 0x91, 0x16, 0xB0, 0x96, 0x88, 0x70, 0x85, - 0x86, 0xEF, 0x38, 0xF5, 0x8E, 0x70, 0x63, 0x3C, 0xE8, 0xDB, 0x26, 0xDF, - 0x3F, 0xEE, 0x01, 0xB1, 0xF6, 0xF6, 0x8E, 0x1A, 0xEE, 0x6F, 0x42, 0x9B, - 0x76, 0x08, 0xF2, 0xE4, 0xB5, 0xD8, 0x45, 0x55, 0xCE, 0xF3, 0x89, 0xEC, - 0x2D, 0x00, 0xF7, 0xC1, 0xED, 0x4D, 0xD0, 0x04, 0xC1, 0xB2, 0x92, 0xE1, - 0xE5, 0xEE, 0x44, 0xFD, 0x79, 0xC1, 0x45, 0xAD, 0x1F, 0x99, 0x49, 0xB9, - 0xC3, 0x79, 0xAF, 0xFC, 0x09, 0x31, 0x3F, 0xBE, 0x15, 0x37, 0xB7, 0x9B, - 0xA2, 0xD5, 0xD7, 0xDD, 0x1B, 0xBC, 0x69, 0xA3, 0x27, 0x8A, 0x7C, 0xAA, - 0xC6, 0x31, 0x2A, 0xA9, 0x6F, 0xA1, 0x3D, 0xFE, 0xB6, 0x40, 0xD0, 0x96, - 0xBF, 0xEC, 0x37, 0xB1, 0x5C, 0x8E, 0xA8, 0xF7, 0x4B, 0x9D, 0x62, 0x5C, - 0x33, 0x4E, 0x54, 0xDA, 0x66, 0xF2, 0xFF, 0xEE, 0xE2, 0x19, 0xF3, 0x47, - 0x74, 0xD2, 0xC8, 0x8D, 0xDB, 0x67, 0xEC, 0x77, 0xD7, 0xC0, 0x1F, 0xC7, - 0x4D, 0x7D, 0x03, 0xD1, 0xEB, 0xDD, 0x43, 0xD1, 0x25, 0xD8, 0x29, 0x18, - 0xCA, 0xE5, 0xF3, 0x89, 0x86, 0xA0, 0x09, 0xD1, 0x4E, 0x0C, 0x69, 0x47, - 0x1B, 0x89, 0x9B, 0xB2, 0xE9, 0xE3, 0x7E, 0x9C, 0xE4, 0xCD, 0xE8, 0x0A, - 0x70, 0xF0, 0x95, 0x81, 0x70, 0xF5, 0xAD, 0x6E, 0xD9, 0x41, 0x2D, 0xCD, - 0xEC, 0xA3, 0x10, 0x18, 0xF1, 0x34, 0xD3, 0xC1, 0x85, 0x5D, 0x07, 0xE5, - 0x8C, 0x6A, 0xEF, 0xCC, 0xB0, 0xA7, 0x00, 0xE8, 0x53, 0x5D, 0xD5, 0xE5, - 0x47, 0x60, 0x94, 0xAB, 0x43, 0x26, 0xCD, 0x0E, 0x02, 0xD3, 0x8C, 0xF1, - 0x8F, 0xAC, 0x23, 0x0F, 0xDF, 0xB1, 0x3A, 0x8F, 0x99, 0xAF, 0x89, 0xAC, - 0x5B, 0xAE, 0x6C, 0x40, 0x6D, 0xC1, 0x20, 0x2A, 0x01, 0xFB, 0xC6, 0x02, - 0x19, 0xC1, 0x89, 0x98, 0x41, 0x24, 0x9F, 0xCF, 0xA2, 0x43, 0x15, 0x3F, - 0xA7, 0x8F, 0x6F, 0xC6, 0x47, 0x91, 0x0A, 0xBA, 0x7B, 0xD3, 0x5E, 0xD2, - 0xB3, 0x70, 0x00, 0x86, 0xAD, 0xD6, 0xF4, 0xC4, 0x1D, 0x76, 0x90, 0x26, - 0x47, 0xE3, 0x69, 0xA5, 0x8E, 0x2E, 0xBF, 0xA8, 0x9D, 0x72, 0x84, 0x41, - 0xC3, 0x8E, 0x4A, 0x6B, 0xE5, 0xA5, 0xB3, 0x05, 0x67, 0xDC, 0x5F, 0xAF, - 0xF0, 0x06, 0x08, 0x9C, 0x8E, 0x10, 0xDC, 0x73, 0x98, 0x73, 0x9A, 0x9B, - 0xA6, 0x3D, 0xCF, 0xC2, 0x2E, 0x7F, 0x37, 0xF8, 0xC2, 0xC6, 0x45, 0x6D, - 0xD3, 0x01, 0x48, 0x55, 0x4E, 0x62, 0xEF, 0x67, 0xD6, 0xAC, 0x7F, 0x6E, - 0x9C, 0x0A, 0x1F, 0x5D, 0x9F, 0xB4, 0x55, 0x4F, 0xEB, 0x9D, 0xFC, 0xDD, - 0x92, 0x45, 0x1D, 0xAE, 0xBD, 0xCA, 0xCB, 0x04, 0xB9, 0x18, 0x3A, 0xBB, - 0x2B, 0x8C, 0x8A, 0x80, 0x4D, 0x1A, 0x24, 0x39, 0xDA, 0x10, 0x94, 0xDA, - 0xC9, 0x4B, 0x2F, 0x0F, 0x86, 0x24, 0x0B, 0x51, 0xF5, 0x57, 0xBA, 0x57, - 0x23, 0x4D, 0x03, 0xAA, 0xA4, 0xC0, 0x23, 0x7D, 0xF9, 0x13, 0x02, 0x30, - 0x42, 0x4D, 0xDA, 0xE0, 0x5E, 0x11, 0x8E, 0xA7, 0x21, 0x20, 0xEA, 0x1F, - 0x26, 0xF1, 0x5C, 0xCD, 0x9C, 0x6F, 0x1E, 0xCC, 0xE8, 0x23, 0xA4, 0xDD, - 0x40, 0x36, 0xFC, 0x8A, 0x95, 0x80, 0xFD, 0x91, 0xD3, 0x8F, 0x61, 0x75, - 0x6B, 0x09, 0xF8, 0x0A, 0xBE, 0x94, 0x25, 0x9C, 0x02, 0xFD, 0x65, 0x50, - 0x6F, 0x90, 0xA5, 0x9E, 0xDE, 0xD8, 0x98, 0x90, 0xBA, 0x06, 0xEF, 0xF6, - 0xDC, 0x37, 0x4F, 0x46, 0x3F, 0xF4, 0xD1, 0x91, 0xB2, 0x0D, 0xA7, 0x56, - 0x78, 0x76, 0x35, 0xE7, 0x2D, 0x66, 0x2A, 0xF8, 0x5B, 0xC5, 0x1F, 0x41, - 0xB1, 0x89, 0xB6, 0x7C, 0x43, 0x68, 0x8E, 0x19, 0x44, 0x03, 0x8C, 0xD0, - 0xCA, 0xEF, 0x64, 0x34, 0x87, 0xC4, 0xEB, 0xD4, 0xCD, 0x33, 0x07, 0x71, - 0x57, 0xA7, 0xDC, 0xE5, 0x65, 0x2E, 0xD9, 0xE1, 0x7F, 0xAA, 0xCA, 0x11, - 0xEC, 0xDF, 0x83, 0xAB, 0xBD, 0x9C, 0x27, 0xAB, 0x5C, 0x34, 0x6A, 0x49, - 0xDF, 0xAD, 0x68, 0xFA, 0x61, 0x39, 0xDC, 0x49, 0x7D, 0xF5, 0x76, 0xC2, - 0x3F, 0xD4, 0x48, 0xA2, 0x9C, 0x2D, 0x50, 0x94, 0x3E, 0xF7, 0xB3, 0xBA, - 0x71, 0x23, 0x9F, 0x63, 0x5F, 0x6D, 0x4D, 0x89, 0xA5, 0x37, 0x03, 0xDB, - 0x79, 0x87, 0x27, 0x9E, 0x15, 0x65, 0x1C, 0x9F, 0x61, 0x2B, 0x37, 0xFF, - 0x87, 0xF4, 0x18, 0xF8, 0xBE, 0xAA, 0x1D, 0x4E, 0xBC, 0x02, 0x26, 0x1A, - 0xA5, 0x3E, 0x52, 0x97, 0x21, 0xE1, 0xD2, 0xDA, 0xC0, 0x2D, 0x8D, 0x4B, - 0x57, 0xFC, 0x08, 0xAA, 0x7C, 0x59, 0xF9, 0xBF, 0x3A, 0xF1, 0x96, 0x83, - 0xA2, 0x59, 0x70, 0xA4, 0x06, 0x13, 0x6B, 0x15, 0xA8, 0xCB, 0xC8, 0x0B, - 0x85, 0x31, 0x42, 0x3E, 0x3E, 0x83, 0x0C, 0xAF, 0x40, 0xAC, 0xBE, 0x6C, - 0x6E, 0x17, 0x9A, 0xC6, 0x45, 0xCE, 0x1B, 0x1B, 0xBC, 0x94, 0xBF, 0xA2, - 0x53, 0x5B, 0xDF, 0x95, 0xEF, 0x6A, 0x41, 0x93, 0xC4, 0x58, 0xE9, 0x20, - 0x68, 0x28, 0xB1, 0xA3, 0x80, 0x80, 0x48, 0xEF, 0x7A, 0x7C, 0x11, 0x33, - 0x62, 0x18, 0xB7, 0x41, 0x52, 0x36, 0xD5, 0xB6, 0xC0, 0x95, 0xD7, 0x71, - 0x00, 0x0B, 0x0A, 0x86, 0xE7, 0x13, 0x8D, 0xE6, 0x73, 0x33, 0xB5, 0x8B, - 0xEE, 0xC3, 0xCA, 0x24, 0x12, 0x96, 0x89, 0x91, 0x90, 0x95, 0xCA, 0x24, - 0x30, 0xDB, 0x25, 0x9B, 0x1B, 0xF2, 0x13, 0xCA, 0xC3, 0x3A, 0x8A, 0x7E, - 0xEA, 0xF9, 0x7D, 0xB1, 0xF0, 0x69, 0xF8, 0xD9, 0xA0, 0xEE, 0x3C, 0xF8, - 0x02, 0x37, 0x93, 0xB5, 0xE3, 0xD9, 0x7B, 0x54, 0xF1, 0x3A, 0x9D, 0x20, - 0xB0, 0xD2, 0xC6, 0xAE, 0x61, 0x26, 0x90, 0x4C, 0xA5, 0x9D, 0x20, 0xE1, - 0xEF, 0x4A, 0x07, 0xF6, 0xAF, 0xE9, 0x28, 0xF5, 0x9B, 0x47, 0xDE, 0xD1, - 0x65, 0x76, 0x0C, 0x70, 0x40, 0xBC, 0xA6, 0xA4, 0xE1, 0xF2, 0xEE, 0x0B, - 0xAA, 0xF3, 0x3A, 0x8E, 0x4F, 0x7D, 0x9F, 0x97, 0xB6, 0x65, 0x54, 0x16, - 0x88, 0xAF, 0x5C, 0xCD, 0xE3, 0x66, 0xEB, 0xB2, 0xA2, 0xA2, 0x5B, 0xE9, - 0x0A, 0x54, 0x9B, 0x0E, 0x50, 0x4F, 0x89, 0xAD, 0x67, 0x11, 0x48, 0x33, - 0x08, 0x47, 0xA6, 0xE1, 0xB4, 0x03, 0xF5, 0x65, 0x2B, 0xD1, 0xF7, 0xC7, - 0x48, 0x3D, 0x1A, 0x33, 0xA6, 0x1E, 0x71, 0x1C, 0x02, 0x0A, 0x47, 0x9C, - 0xE1, 0x97, 0xB3, 0x14, 0xD4, 0xEA, 0xFA, 0xF9, 0xFF, 0x35, 0x67, 0xAA, - 0xC3, 0x2E, 0x78, 0x33, 0x3D, 0x03, 0x17, 0x78, 0x0B, 0xC7, 0x68, 0xC1, - 0x19, 0x4D, 0x21, 0xFE, 0xD7, 0x84, 0xB8, 0xA0, 0x50, 0x36, 0xE6, 0x98, - 0xE7, 0x5C, 0xF2, 0x0C, 0xAC, 0x8D, 0x9E, 0xB4, 0xC4, 0xFB, 0x29, 0x50, - 0x9F, 0xF7, 0x27, 0xEB, 0x22, 0xDB, 0xD1, 0x19, 0x8E, 0x1C, 0xC4, 0x8C, - 0x84, 0xF8, 0x0D, 0xB4, 0x1F, 0x80, 0x91, 0x70, 0xE1, 0xFC, 0x64, 0xE2, - 0x5B, 0xD8, 0x07, 0x67, 0x87, 0xA2, 0x7E, 0x37, 0xE4, 0x7A, 0xBF, 0x87, - 0xE4, 0x1F, 0x05, 0xAE, 0x25, 0xA5, 0x8C, 0xCE, 0xB5, 0x5F, 0x87, 0x77, - 0xCF, 0x8E, 0x18, 0xA7, 0xAB, 0x4E, 0x16, 0xB1, 0xFC, 0x70, 0x9C, 0x00, - 0x4D, 0xC6, 0x9F, 0x92, 0x3F, 0x42, 0xAF, 0xB4, 0xD0, 0x36, 0x13, 0xF0, - 0xA3, 0xFE, 0x0E, 0x4B, 0xA3, 0xB9, 0xD6, 0xF0, 0x5F, 0xD3, 0x29, 0xDD, - 0xB0, 0x27, 0x49, 0x13, 0x9F, 0x2B, 0xF8, 0xCB, 0x62, 0xC2, 0xBF, 0x80, - 0x1D, 0x62, 0x23, 0x5B, 0xCE, 0x19, 0x6F, 0xE1, 0xAA, 0xD9, 0x99, 0x0F, - 0x48, 0x72, 0xFE, 0xEF, 0x52, 0x58, 0x39, 0xF6, 0x4A, 0x98, 0x4A, 0xEF, - 0xCF, 0xA3, 0x71, 0x92, 0xC6, 0xC6, 0x8F, 0x39, 0xED, 0x7D, 0x0B, 0x6C, - 0x62, 0xE1, 0xA8, 0x0E, 0x62, 0xF7, 0x59, 0xD6, 0xB0, 0x67, 0x82, 0x12, - 0x5C, 0xA9, 0xBC, 0x52, 0x7F, 0xCF, 0xD3, 0x33, 0x7A, 0x98, 0xFE, 0x8E, - 0x70, 0x31, 0xB9, 0x82, 0x37, 0xD2, 0x37, 0xC9, 0xEE, 0x1C, 0xBC, 0x76, - 0x0B, 0xBD, 0x95, 0xD4, 0xD0, 0x9C, 0xEE, 0x9F, 0x8A, 0x9C, 0xA0, 0x34, - 0xFE, 0x8D, 0x64, 0xF0, 0xDA, 0x02, 0x17, 0xA3, 0x26, 0x68, 0x4B, 0xE8, - 0x54, 0xF7, 0xE1, 0x94, 0x6D, 0xA9, 0x5E, 0x8B, 0x86, 0x13, 0xDB, 0x5C, - 0x0C, 0xF0, 0x3C, 0x40, 0x4F, 0x0D, 0x15, 0xD7, 0xE7, 0x48, 0x3F, 0xC6, - 0x33, 0x24, 0x30, 0x83, 0x50, 0x30, 0xBC, 0xD7, 0xE5, 0x25, 0x32, 0x11, - 0xD0, 0xA7, 0xE3, 0x7C, 0x4D, 0xE4, 0x46, 0xE3, 0xCB, 0xF7, 0x04, 0x49, - 0xFF, 0x5F, 0x0C, 0xFE, 0x36, 0xEE, 0x39, 0x46, 0x5B, 0x41, 0x7D, 0x1B, - 0xF0, 0xCF, 0x90, 0xEF, 0x72, 0x6E, 0x61, 0xE5, 0x26, 0xC7, 0xC5, 0x6A, - 0xCA, 0x40, 0x7A, 0x30, 0x8E, 0x0A, 0x2F, 0xDD, 0x64, 0x95, 0xF7, 0x19, - 0x6D, 0x0F, 0xDB, 0x80, 0xFB, 0x9E, 0x6B, 0x36, 0xD6, 0x1E, 0x0A, 0x34, - 0x7A, 0x8B, 0x1B, 0xB9, 0xA8, 0xBB, 0x49, 0x67, 0xCA, 0x7E, 0xD6, 0x27, - 0x6F, 0xAC, 0xED, 0x25, 0x89, 0xFD, 0xB4, 0x11, 0x2F, 0x43, 0x74, 0x40, - 0x2D, 0x73, 0x20, 0xA1, 0x94, 0x9E, 0x79, 0x5D, 0x20, 0x88, 0xD5, 0x1F, - 0x13, 0x10, 0x35, 0x7A, 0x4C, 0xF0, 0x5B, 0x09, 0x96, 0x75, 0x6F, 0x5F, - 0xED, 0x9D, 0x68, 0xBD, 0x0D, 0x77, 0x5C, 0x85, 0x13, 0x3A, 0x11, 0x0D, - 0x0A, 0x90, 0x98, 0x8F, 0xCE, 0x4C, 0xE5, 0x46, 0x40, 0x86, 0x75, 0xA5, - 0x49, 0x5C, 0x12, 0x57, 0xF8, 0x48, 0x86, 0xD4, 0x81, 0xA4, 0x47, 0x39, - 0x19, 0x42, 0x23, 0x44, 0x7F, 0x57, 0x9C, 0x95, 0xA1, 0xFD, 0x3E, 0xA6, - 0x29, 0x84, 0xF6, 0x8F, 0x87, 0x79, 0x8B, 0xF6, 0x45, 0x5A, 0x9B, 0x7E, - 0xBB, 0xC1, 0xD3, 0xB7, 0xE4, 0x18, 0xB0, 0x61, 0x77, 0xB4, 0x12, 0x25, - 0xEE, 0x6C, 0x3D, 0x6C, 0xA9, 0xFE, 0x67, 0xDE, 0xCC, 0x8F, 0x11, 0xC1, - 0x8A, 0xD6, 0x72, 0xAC, 0x45, 0x77, 0xEF, 0xD3, 0x96, 0x41, 0xA7, 0xC1, - 0x92, 0x15, 0x93, 0x44, 0x18, 0x08, 0x14, 0x7C, 0xAB, 0xCE, 0xBF, 0xFA, - 0x89, 0xEF, 0xAD, 0x09, 0x9A, 0xB9, 0x8A, 0x7D, 0xD5, 0xA2, 0x82, 0x90, - 0x10, 0x4E, 0xD6, 0xCC, 0x04, 0x43, 0x21, 0x6B, 0xDF, 0xE4, 0x56, 0xE9, - 0x7D, 0x17, 0xCD, 0xC1, 0x3A, 0xC0, 0xA1, 0x83, 0xCE, 0xC8, 0x90, 0x2E, - 0xA6, 0x73, 0x44, 0x72, 0x10, 0x7B, 0x03, 0xDB, 0x2F, 0xCA, 0x9C, 0x71, - 0x44, 0x06, 0xAC, 0xCB, 0x4A, 0x09, 0xF0, 0x08, 0x1C, 0x99, 0x49, 0x13, - 0x19, 0x6E, 0xEE, 0x4C, 0xA2, 0xE4, 0xB8, 0xA0, 0x36, 0xE2, 0x9C, 0x13, - 0x7E, 0x6C, 0x9B, 0x3C, 0x74, 0x5A, 0x50, 0x90, 0x8C, 0xE1, 0x24, 0x76, - 0x14, 0xF7, 0x2E, 0x77, 0x24, 0x64, 0xFA, 0x37, 0x0C, 0xE1, 0x90, 0xDB, - 0xB4, 0x4C, 0x9E, 0xC5, 0x26, 0xA8, 0xED, 0x02, 0x72, 0x4D, 0xF4, 0x91, - 0x94, 0xDF, 0x77, 0x3B, 0x96, 0xB9, 0x42, 0x34, 0xD2, 0xB7, 0x1E, 0x49, - 0xBD, 0x29, 0xBB, 0x3C, 0xC6, 0x5B, 0x3F, 0x15, 0xE5, 0x8F, 0x0E, 0x23, - 0xA5, 0xD5, 0x73, 0x06, 0x6F, 0xEF, 0x73, 0x51, 0xB2, 0xC8, 0xD4, 0x44, - 0xFC, 0x25, 0x95, 0xA9, 0x44, 0x57, 0xB7, 0x80, 0x07, 0xB0, 0xCE, 0x58, - 0x12, 0xFF, 0xD3, 0xD9, 0x13, 0xDD, 0x11, 0x26, 0x5B, 0xC3, 0x5B, 0xEE, - 0xA9, 0x53, 0x19, 0xE9, 0x31, 0x9C, 0x1B, 0x3A, 0x2A, 0x9F, 0xD9, 0x7C, - 0x7A, 0x55, 0x52, 0x40, 0xE0, 0xEC, 0x11, 0x39, 0x7E, 0x09, 0xD7, 0xE7, - 0xCF, 0xC7, 0x67, 0xDB, 0xDE, 0x02, 0x92, 0xEF, 0x47, 0x2C, 0x54, 0xFD, - 0xE4, 0x37, 0xC6, 0x9F, 0x51, 0x66, 0x96, 0x84, 0x19, 0x94, 0x90, 0xE6, - 0x4E, 0x43, 0x2A, 0xB9, 0x13, 0x40, 0x9C, 0xE9, 0x89, 0xA2, 0x2B, 0x8E, - 0x8C, 0x39, 0x42, 0x42, 0xF8, 0xD9, 0x5A, 0x86, 0x0E, 0xA6, 0x3A, 0x9E, - 0xA8, 0xA5, 0x23, 0x19, 0x58, 0xDB, 0x4C, 0x46, 0xCA, 0x26, 0x50, 0x0B, - 0xD2, 0x6A, 0x9B, 0xBE, 0x63, 0x55, 0xF4, 0x42, 0xD8, 0x20, 0xCD, 0x55, - 0x01, 0xA0, 0x3D, 0xE3, 0x97, 0x23, 0x14, 0xF1, 0x6A, 0x2A, 0x5A, 0xA9, - 0xBD, 0x01, 0x5E, 0x56, 0x8F, 0xC7, 0x31, 0x6F, 0xBB, 0x78, 0x88, 0x01, - 0xF0, 0x00, 0xD2, 0x1B, 0x40, 0x6D, 0x50, 0xD0, 0xCB, 0x44, 0x35, 0x3A, - 0xBC, 0xBB, 0x6F, 0x6C, 0xF4, 0xDB, 0x6F, 0x54, 0x27, 0x8C, 0x0A, 0x5A, - 0xE8, 0x56, 0xC9, 0x28, 0x44, 0xBC, 0xF7, 0x70, 0xF0, 0x95, 0x17, 0xA1, - 0x0B, 0x91, 0xDF, 0x80, 0xF8, 0xF3, 0xF9, 0xB9, 0x1C, 0xEB, 0x81, 0x31, - 0x18, 0xE2, 0xB6, 0xF8, 0x80, 0x64, 0x61, 0x1F, 0xD9, 0x14, 0x6C, 0x64, - 0xE8, 0xDB, 0x45, 0x5E, 0x16, 0xD4, 0xDB, 0xC9, 0x13, 0x70, 0x4B, 0x0E, - 0x40, 0x80, 0xB9, 0xCA, 0x9E, 0xB7, 0x85, 0x88, 0xDA, 0xF8, 0x13, 0xFE, - 0x51, 0x28, 0xB9, 0x6E, 0x65, 0x92, 0xAA, 0x45, 0x68, 0xC6, 0x82, 0xCC, - 0xBA, 0x28, 0x6E, 0xCF, 0x54, 0x7A, 0xB4, 0x8A, 0x8A, 0x92, 0x3C, 0x2F, - 0x55, 0x6A, 0xE3, 0x23, 0x27, 0x4B, 0xFA, 0x13, 0x58, 0xB5, 0xAE, 0x9D, - 0xA3, 0x77, 0x25, 0xFA, 0x70, 0x59, 0x5A, 0x34, 0x4C, 0xF1, 0xA9, 0x9A, - 0x37, 0x2B, 0xEF, 0xA0, 0x85, 0xB7, 0x97, 0x74, 0x04, 0xD0, 0x08, 0xFE, - 0x01, 0x7B, 0x33, 0x44, 0xB8, 0x44, 0x12, 0xE6, 0x1D, 0xCF, 0xE0, 0x8D, - 0xDE, 0x92, 0x93, 0x49, 0xB8, 0x2B, 0x65, 0x0D, 0x38, 0x55, 0x3B, 0x90, - 0x89, 0x01, 0x40, 0xEB, 0xF1, 0x33, 0x5C, 0x36, 0xAA, 0xF7, 0x84, 0x75, - 0x8A, 0xB1, 0xE4, 0x68, 0x6F, 0x3C, 0x7C, 0x84, 0x71, 0x06, 0x57, 0xC4, - 0x83, 0x9F, 0x6A, 0x96, 0x8F, 0xEB, 0xA6, 0x59, 0xBB, 0x2D, 0x68, 0x35, - 0x8F, 0xBF, 0x8D, 0xFE, 0xC8, 0xBC, 0xA7, 0x41, 0x97, 0x17, 0x49, 0x82, - 0x6E, 0x4D, 0xB0, 0xE8, 0xC9, 0x10, 0x57, 0x7B, 0x9C, 0x03, 0xDD, 0x90, - 0xE3, 0x15, 0x30, 0x9A, 0x66, 0xAB, 0xF8, 0x9A, 0x69, 0xBE, 0x6E, 0x74, - 0x3C, 0xF4, 0xDD, 0x0D, 0x77, 0x77, 0x30, 0x2C, 0x3C, 0x2B, 0x7E, 0x01, - 0x90, 0xFD, 0xD7, 0xF1, 0x87, 0x03, 0x61, 0x87, 0x8B, 0x46, 0x5C, 0x02, - 0x20, 0x5C, 0xB0, 0x8C, 0x56, 0x51, 0xA3, 0xFE, 0x15, 0x28, 0x24, 0xC7, - 0x43, 0xE9, 0x15, 0x43, 0xA7, 0xD7, 0x21, 0x12, 0x88, 0xD5, 0x32, 0xAE, - 0x04, 0xC8, 0x3E, 0x28, 0x7E, 0x08, 0xD4, 0x97, 0x5E, 0xCF, 0x60, 0xF1, - 0x42, 0x96, 0x2B, 0xED, 0xAE, 0x71, 0x43, 0xD0, 0x04, 0x48, 0x65, 0x03, - 0x9A, 0xFA, 0x77, 0x45, 0x5A, 0xFC, 0x48, 0x12, 0x16, 0xCF, 0xAF, 0x13, - 0xE4, 0x03, 0xCC, 0x8F, 0xF4, 0xB5, 0x68, 0xB3, 0xF5, 0x53, 0x13, 0x42, - 0x26, 0x8F, 0xB5, 0x71, 0x8E, 0x9B, 0xB3, 0x2E, 0xF6, 0x9F, 0x1E, 0x4A, - 0xBC, 0xB9, 0xD8, 0xA5, 0x77, 0xCE, 0x95, 0x94, 0xE3, 0x9F, 0xD8, 0xAD, - 0x53, 0x79, 0x03, 0xA6, 0x57, 0xF7, 0x13, 0xD5, 0x66, 0x25, 0x66, 0x88, - 0x78, 0xF7, 0xF6, 0x35, 0xF9, 0xCC, 0x7F, 0xC6, 0x36, 0xAD, 0xC2, 0x70, - 0x34, 0x94, 0xAA, 0xED, 0xCA, 0x4A, 0x14, 0x16, 0xF6, 0x6E, 0x46, 0xE8, - 0x32, 0x63, 0xDF, 0x88, 0x66, 0x65, 0x6E, 0xA3, 0xCF, 0xDB, 0x1E, 0x5B, - 0xFD, 0xCB, 0xB1, 0x99, 0x4A, 0x65, 0xD3, 0x24, 0xD8, 0xC9, 0xA1, 0xAA, - 0x06, 0xA9, 0x4C, 0xF5, 0x7C, 0x9E, 0x98, 0x77, 0x12, 0xC2, 0xA9, 0xF9, - 0x8D, 0x5F, 0x43, 0x1B, 0x9D, 0xEB, 0xD2, 0x28, 0x2C, 0x54, 0x60, 0x97, - 0x5A, 0x70, 0x28, 0x78, 0xCA, 0x43, 0xD1, 0xBA, 0xA3, 0x5F, 0x49, 0x6A, - 0x0C, 0x2A, 0x53, 0x09, 0xF8, 0x5E, 0x89, 0x5C, 0x6A, 0x5D, 0x2A, 0x8B, - 0x58, 0x7D, 0x19, 0x1A, 0xF1, 0x1B, 0x5A, 0x12, 0xE7, 0x09, 0x9C, 0x88, - 0xD5, 0xD7, 0x15, 0xFB, 0xDF, 0x62, 0xA9, 0x54, 0xD7, 0xD5, 0x7A, 0x2B, - 0xBF, 0xCA, 0x0B, 0xB9, 0x07, 0xB4, 0xC9, 0x17, 0x81, 0x33, 0x07, 0x25, - 0xE2, 0x0A, 0x6C, 0xF4, 0xD1, 0xF7, 0xF7, 0x65, 0xDE, 0x71, 0x00, 0x72, - 0x9C, 0x2A, 0xBC, 0x31, 0xC0, 0x94, 0x85, 0x93, 0x9C, 0x65, 0xA6, 0xF1, - 0x2F, 0x01, 0x8B, 0xD8, 0x66, 0x3E, 0x96, 0xB6, 0x96, 0xA0, 0x78, 0xA3, - 0x85, 0x35, 0x6C, 0x3A, 0x37, 0x09, 0x76, 0x12, 0xB1, 0xA8, 0xC5, 0xE3, - 0x53, 0xFB, 0x17, 0xB4, 0x10, 0xD1, 0x0F, 0xFA, 0xE7, 0x42, 0x58, 0x20, - 0x72, 0x79, 0xC2, 0x94, 0xAF, 0xF7, 0x7D, 0x35, 0xD3, 0x48, 0x23, 0x67, - 0x0F, 0xD7, 0x65, 0xE0, 0x48, 0x05, 0x7E, 0x09, 0xE6, 0x0A, 0x4B, 0xD2, - 0xB0, 0xB9, 0x84, 0x12, 0xAF, 0x4B, 0x92, 0xDD, 0x30, 0x4B, 0x9F, 0xDC, - 0xD5, 0x5D, 0xD4, 0x5A, 0x13, 0xE6, 0xB7, 0x18, 0x18, 0xC0, 0x52, 0x18, - 0xBF, 0xC2, 0xB8, 0x7D, 0x2B, 0x2A, 0x36, 0x7A, 0x63, 0x6E, 0xF7, 0x59, - 0x61, 0xC3, 0x97, 0x31, 0xDD, 0x61, 0x15, 0x1B, 0x30, 0xC3, 0xDD, 0xF5, - 0x51, 0x2F, 0x77, 0xB4, 0x54, 0x6E, 0x4D, 0x98, 0x13, 0xDB, 0x3E, 0x4C, - 0xA9, 0xCF, 0x77, 0xC8, 0x2D, 0x8E, 0x49, 0xDA, 0x67, 0xBA, 0x6C, 0x37, - 0x54, 0xAB, 0x55, 0x80, 0x15, 0x94, 0x5F, 0xB6, 0x4D, 0x6B, 0xB3, 0xA3, - 0x13, 0xBD, 0x7C, 0x47, 0xE3, 0xA5, 0x70, 0x9B, 0xEC, 0x5C, 0x94, 0x60, - 0xC9, 0xEA, 0xD6, 0x64, 0xEE, 0x3B, 0x8F, 0x4E, 0xE2, 0x07, 0x61, 0xC6, - 0xA4, 0x64, 0x8A, 0xA1, 0xF9, 0x57, 0xC2, 0xEA, 0x89, 0x95, 0x12, 0x67, - 0xE0, 0xC6, 0xCF, 0x44, 0x40, 0x98, 0x8E, 0xB7, 0xDF, 0xFF, 0xCB, 0xAA, - 0xEF, 0xC5, 0x72, 0x8D, 0xD4, 0xC7, 0x58, 0x60, 0x9D, 0xE1, 0xD6, 0x1D, - 0x3A, 0x12, 0xBA, 0x5E, 0xA9, 0xAB, 0x21, 0xB9, 0x2E, 0xE0, 0x04, 0x47, - 0x1B, 0xB2, 0x37, 0x28, 0xED, 0x7F, 0x7D, 0x24, 0x63, 0x2D, 0x98, 0x04, - 0x4D, 0x1E, 0x6B, 0xE7, 0x11, 0x1C, 0xED, 0xB1, 0x02, 0x64, 0x63, 0x51, - 0x71, 0x6E, 0xB1, 0x3D, 0xAD, 0xE1, 0xEB, 0x3B, 0x23, 0x51, 0xE3, 0x45, - 0xA4, 0x83, 0xB2, 0x83, 0xD9, 0x43, 0x5C, 0xF6, 0x99, 0xDE, 0xC8, 0xD2, - 0xB7, 0x11, 0x26, 0xF3, 0xEA, 0x69, 0xFE, 0x54, 0x22, 0x33, 0xCD, 0xDE, - 0xE4, 0x2F, 0x65, 0x19, 0xA0, 0x3E, 0xDB, 0x4E, 0xB0, 0x4A, 0xFA, 0x57, - 0x47, 0x13, 0x84, 0x7B, 0x73, 0x3B, 0x8E, 0xB1, 0x8A, 0x1C, 0x80, 0x0C, - 0x9D, 0x67, 0xF3, 0xD5, 0x00, 0xD7, 0xDA, 0x92, 0xA5, 0xF7, 0xE4, 0x8D, - 0x60, 0x48, 0xD2, 0x5C, 0xF6, 0x9A, 0x0D, 0x94, 0xE4, 0x19, 0x75, 0xCF, - 0xE2, 0xCD, 0x22, 0xD5, 0x87, 0x9C, 0x36, 0x65, 0xC7, 0x36, 0x0D, 0x5B, - 0x5C, 0x7A, 0x08, 0xC7, 0x98, 0xF5, 0xAE, 0x04, 0x45, 0xCE, 0x32, 0x1A, - 0x25, 0xC9, 0x1F, 0x2E, 0x96, 0x95, 0x62, 0x97, 0x4C, 0x27, 0x82, 0xB9, - 0x0A, 0xFA, 0x0D, 0xE3, 0xF1, 0xEA, 0xD6, 0x59, 0x3A, 0x6C, 0x9B, 0x28, - 0xCA, 0x8A, 0x19, 0x79, 0x5C, 0xE9, 0xFF, 0xFD, 0x93, 0x54, 0x26, 0xF4, - 0x09, 0x58, 0xB9, 0x41, 0x90, 0x2C, 0x74, 0x98, 0x45, 0x9A, 0x71, 0x12, - 0x06, 0x52, 0xAA, 0x31, 0xAD, 0xEA, 0x97, 0x81, 0x33, 0xD6, 0xA3, 0x54, - 0xCA, 0x9D, 0x5E, 0xF1, 0x87, 0xDD, 0xAB, 0x1E, 0xF1, 0x1B, 0xA4, 0xFD, - 0x74, 0x60, 0x93, 0xD6, 0x01, 0x9F, 0x5C, 0x2D, 0x7D, 0xE7, 0xB8, 0x76, - 0x36, 0x80, 0xD0, 0x63, 0x27, 0xC8, 0x94, 0x15, 0x4B, 0x1C, 0xC2, 0x6B, - 0x67, 0x23, 0xEC, 0xAC, 0xD2, 0xEB, 0xC5, 0x5D, 0x78, 0x81, 0xD6, 0x30, - 0xDD, 0xA6, 0x2C, 0xEE, 0x16, 0xDA, 0x8B, 0xA0, 0x9D, 0x20, 0xF8, 0x62, - 0x87, 0x6D, 0xC2, 0x9C, 0x80, 0x53, 0x3C, 0x20, 0x06, 0x78, 0x71, 0xD7, - 0xA6, 0x0D, 0xEA, 0xA8, 0x58, 0xA6, 0x21, 0x77, 0xCB, 0xD0, 0x6F, 0x05, - 0x7A, 0x47, 0x1C, 0xFB, 0xA0, 0x4D, 0xD8, 0x22, 0xD1, 0xE3, 0x9B, 0x14, - 0x98, 0xF4, 0xAE, 0x20, 0xEC, 0x64, 0xD9, 0xC6, 0xBF, 0xB1, 0x40, 0x1A, - 0x4C, 0x66, 0xC3, 0x2B, 0xC0, 0xE7, 0xD3, 0x61, 0x4C, 0x6D, 0xF8, 0x5D, - 0xC9, 0x33, 0x92, 0xC4, 0x1D, 0xA3, 0xF5, 0x69, 0x10, 0xF3, 0x4B, 0x31, - 0x1C, 0x1D, 0x11, 0x8E, 0xB0, 0xF8, 0xD9, 0x3A, 0xBF, 0x06, 0xC1, 0xB0, - 0x27, 0x8B, 0xB6, 0x9E, 0x7C, 0x6E, 0x27, 0x15, 0xF1, 0xE0, 0xE7, 0x31, - 0x87, 0x10, 0x94, 0x2C, 0x0D, 0xC6, 0x75, 0x54, 0xD2, 0x5A, 0xE4, 0x25, - 0xA7, 0xB9, 0x16, 0x4A, 0x93, 0x8E, 0x1D, 0x84, 0x06, 0xDC, 0x84, 0xDE, - 0x57, 0x9D, 0xF7, 0xC1, 0x68, 0x08, 0x67, 0xFD, 0x5C, 0x38, 0x2A, 0xC9, - 0x99, 0x28, 0xEC, 0x5D, 0xB4, 0x2A, 0xCA, 0xB3, 0xBC, 0x92, 0x0C, 0xFC, - 0xC9, 0xED, 0x22, 0x52, 0x79, 0xC4, 0x04, 0x3F, 0xD0, 0x7D, 0x4B, 0xE0, - 0x0C, 0x0F, 0x82, 0x00, 0xB8, 0x38, 0x70, 0x06, 0xC5, 0x34, 0x1E, 0x0D, - 0x96, 0x7E, 0xDC, 0x94, 0x7E, 0x64, 0x47, 0xA9, 0x62, 0xAE, 0xA3, 0x8B, - 0x6E, 0x0B, 0x1D, 0xB9, 0x8F, 0xE8, 0xAA, 0x57, 0xD7, 0xE3, 0x65, 0x15, - 0x28, 0x88, 0xF5, 0x21, 0xF3, 0x38, 0xA4, 0xFC, 0xDB, 0x09, 0xC1, 0x7A, - 0x7B, 0xA7, 0xFF, 0x0B, 0xA3, 0x18, 0xA2, 0x42, 0x28, 0x22, 0xB2, 0x95, - 0x25, 0x56, 0x08, 0xFF, 0x3D, 0xB5, 0xF1, 0x41, 0x44, 0x34, 0x64, 0x67, - 0x2C, 0xD5, 0xF0, 0x40, 0x9B, 0x82, 0x18, 0xAE, 0x8E, 0x74, 0xFE, 0x6D, - 0xCC, 0x3E, 0x02, 0x13, 0x41, 0xC3, 0x32, 0x33, 0x76, 0x3A, 0x4A, 0x5B, - 0xED, 0xFC, 0x64, 0xFB, 0x17, 0x2A, 0xB1, 0x9B, 0xF6, 0xB9, 0x45, 0x83, - 0xBC, 0x42, 0x12, 0xAB, 0x91, 0xFD, 0x2A, 0x34, 0xE7, 0x56, 0xBA, 0xB8, - 0x69, 0x81, 0xBA, 0x30, 0x6C, 0x8C, 0x4B, 0xAB, 0x1D, 0x47, 0x57, 0xAA, - 0xE7, 0x3F, 0x25, 0x25, 0x7E, 0x6A, 0x2D, 0x35, 0x61, 0xB0, 0xC1, 0xAC, - 0x81, 0xFE, 0xB5, 0x28, 0x7E, 0xFF, 0x6B, 0x6B, 0x71, 0xBA, 0x60, 0x0C, - 0x56, 0xCC, 0x6D, 0xA2, 0x23, 0xB2, 0x2B, 0xFB, 0xCB, 0x16, 0x25, 0xFE, - 0x6C, 0xAC, 0x81, 0x2E, 0xAC, 0x11, 0xB2, 0x79, 0xC8, 0x7A, 0x44, 0x0B, - 0x82, 0xF8, 0xC6, 0xE0, 0x2D, 0x92, 0x58, 0x73, 0xAF, 0x8A, 0xD7, 0x3D, - 0x2C, 0x05, 0x09, 0x54, 0x2F, 0xDE, 0x12, 0x17, 0xC5, 0xB1, 0x32, 0xFA, - 0x58, 0xE4, 0x0F, 0x74, 0x1E, 0xAA, 0xAC, 0x3B, 0x35, 0xDF, 0x92, 0x9C, - 0xB2, 0xC2, 0xA6, 0x90, 0x6D, 0xD4, 0xEB, 0x13, 0xA8, 0xEA, 0xC2, 0x61, - 0xED, 0x67, 0x65, 0x44, 0xAD, 0x46, 0x28, 0x11, 0x0F, 0x46, 0x04, 0x49, - 0xE6, 0x2E, 0x1A, 0xD6, 0x67, 0x72, 0x7C, 0x0D, 0x6A, 0x8A, 0xFA, 0xDB, - 0x94, 0x66, 0x84, 0xF1, 0x31, 0x3F, 0x38, 0x1C, 0x04, 0xCF, 0x09, 0x52, - 0x2F, 0xDB, 0xF6, 0x6F, 0xEB, 0x69, 0x03, 0x10, 0x92, 0xA0, 0x95, 0x0A, - 0xE5, 0x52, 0x4A, 0x9B, 0xD7, 0x76, 0x05, 0x80, 0x07, 0x09, 0x4A, 0x3A, - 0x37, 0xCD, 0xB3, 0x73, 0x64, 0x1F, 0xAB, 0x14, 0x57, 0xA0, 0xFF, 0x9B, - 0x0D, 0x34, 0x56, 0x0A, 0x79, 0x79, 0x20, 0x7C, 0x4A, 0x52, 0xD8, 0xB4, - 0x22, 0x45, 0x88, 0x90, 0xA0, 0x35, 0x36, 0x71, 0x9B, 0xD8, 0x2E, 0xC5, - 0x89, 0x20, 0x54, 0x36, 0x7A, 0x47, 0x03, 0x45, 0xF8, 0xB2, 0x20, 0xD0, - 0xBC, 0x84, 0x05, 0x40, 0xDB, 0xD4, 0xD0, 0x1C, 0x9E, 0xF0, 0x37, 0x02, - 0x31, 0xD9, 0xDE, 0xBC, 0xBD, 0x87, 0x3E, 0xA7, 0x2A, 0xD9, 0x7E, 0x8B, - 0xBD, 0xEF, 0x67, 0xC4, 0x06, 0x00, 0x43, 0xA7, 0x89, 0xE6, 0xA8, 0x7B, - 0xBD, 0x03, 0xCB, 0xC8, 0x2F, 0x46, 0xEF, 0xA5, 0xEF, 0x16, 0x7D, 0xE3, - 0xE9, 0x63, 0xCC, 0x89, 0xFC, 0xE5, 0x14, 0x40, 0x3A, 0x5A, 0xC8, 0xBC, - 0xF6, 0xD9, 0x3D, 0xAC, 0x82, 0xB5, 0x7F, 0xB7, 0xE4, 0x8F, 0x5C, 0x0A, - 0x5F, 0x6E, 0x0C, 0xF1, 0x7E, 0xAD, 0x12, 0xFA, 0x4E, 0x01, 0xC5, 0x62, - 0xBF, 0x10, 0x27, 0xE7, 0x72, 0xC0, 0xC3, 0xA6, 0x8B, 0xF7, 0xD8, 0xA5, - 0x52, 0x20, 0xA3, 0xEE, 0x70, 0xB0, 0xF6, 0xE2, 0x6A, 0x8D, 0x29, 0x73, - 0x17, 0xBD, 0x68, 0x45, 0x25, 0x53, 0x68, 0xC5, 0x1B, 0xD5, 0xC1, 0xFF, - 0x38, 0x17, 0x25, 0x47, 0x0C, 0x2E, 0xD4, 0x3E, 0xF7, 0x91, 0x36, 0x35, - 0xAD, 0x72, 0xBE, 0x5A, 0x19, 0x04, 0x97, 0x77, 0x51, 0x5D, 0x2E, 0x51, - 0xA7, 0xC3, 0x22, 0xEE, 0xE6, 0xC9, 0x9A, 0x3B, 0x9D, 0xA2, 0x84, 0xDE, - 0x2B, 0x76, 0x62, 0x00, 0x2C, 0x4F, 0xA5, 0x12, 0xC5, 0x43, 0x8B, 0xD0, - 0x13, 0x9E, 0x88, 0x3D, 0x33, 0xC3, 0xF4, 0x41, 0x6D, 0x00, 0x3B, 0xC3, - 0xE1, 0xA1, 0x0A, 0x6A, 0x63, 0xE8, 0x42, 0x89, 0x05, 0xAF, 0xAA, 0x2B, - 0x07, 0x25, 0x5B, 0xE1, 0xAA, 0xC6, 0xA7, 0xBD, 0x72, 0xC5, 0x17, 0x75, - 0x53, 0x61, 0x20, 0x76, 0x14, 0xCC, 0x7A, 0x06, 0xF5, 0x21, 0xD2, 0x8F, - 0x8F, 0x18, 0x5C, 0x50, 0xAA, 0x98, 0xA4, 0xB9, 0x7E, 0xBF, 0xD6, 0xBA, - 0xEA, 0x9D, 0x64, 0xF3, 0x31, 0x4D, 0x48, 0x18, 0x58, 0xF0, 0x07, 0x23, - 0xD6, 0x3E, 0xCA, 0xB4, 0x54, 0xE6, 0x04, 0x19, 0x18, 0xD5, 0xC7, 0x54, - 0x85, 0x75, 0xA6, 0x58, 0x0E, 0xEB, 0x74, 0xD6, 0xF6, 0xAF, 0xB4, 0x9D, - 0x70, 0xF0, 0x7B, 0x88, 0x8B, 0x8B, 0x64, 0x2C, 0x20, 0x40, 0x98, 0x5E, - 0x2C, 0x64, 0xC6, 0x98, 0x26, 0x1D, 0x94, 0x90, 0x01, 0x03, 0x66, 0x5D, - 0x6D, 0xC0, 0xBB, 0x5A, 0xC4, 0xF0, 0x0B, 0x78, 0x4E, 0x2E, 0x89, 0xA2, - 0x86, 0x41, 0x90, 0x7B, 0x1D, 0x2C, 0x76, 0x17, 0xE5, 0x39, 0xE9, 0xF7, - 0x00, 0xC0, 0x6B, 0x1F, 0x7E, 0xC1, 0xC2, 0x15, 0xA8, 0xA3, 0xF6, 0x7C, - 0xF6, 0x19, 0x3F, 0xE0, 0xCE, 0xEF, 0x5C, 0x7B, 0x63, 0x63, 0xBE, 0x64, - 0x33, 0x0E, 0x03, 0xFE, 0xF9, 0x03, 0xD9, 0xF7, 0xDF, 0x99, 0x37, 0x70, - 0xAE, 0x6B, 0x90, 0x2A, 0x99, 0x14, 0x1D, 0x0C, 0x83, 0x6A, 0xC9, 0xEA, - 0x34, 0x8C, 0xAC, 0x51, 0x30, 0x04, 0x4A, 0x71, 0xA8, 0x8E, 0xC6, 0xD8, - 0x19, 0x70, 0xB0, 0xE4, 0x80, 0x55, 0x52, 0x09, 0x5E, 0x58, 0x22, 0xFF, - 0x80, 0xC1, 0xAE, 0x0A, 0x87, 0xC7, 0xBE, 0xC7, 0x95, 0xEA, 0x98, 0x5A, - 0xC0, 0x67, 0xA3, 0xDA, 0x68, 0xEF, 0xBA, 0x48, 0xF1, 0xA0, 0x2C, 0x33, - 0x56, 0x1A, 0x45, 0xB8, 0xA3, 0x70, 0xA8, 0xD3, 0xB2, 0xCF, 0x1C, 0xC0, - 0x02, 0x1E, 0xDA, 0x14, 0x0B, 0x2C, 0x03, 0xEA, 0xEC, 0x2E, 0x2B, 0x21, - 0x1C, 0xE1, 0x99, 0xDF, 0x46, 0xD1, 0xC1, 0xE9, 0x00, 0x90, 0xB6, 0x7D, - 0x79, 0xA2, 0x42, 0xF7, 0x0E, 0x67, 0xE3, 0x8B, 0xE1, 0x42, 0x26, 0x7A, - 0x69, 0x82, 0x9D, 0x5C, 0x26, 0xFE, 0xE2, 0x6D, 0x51, 0x48, 0x74, 0x4A, - 0xE1, 0xA7, 0x77, 0x07, 0x09, 0xA3, 0x30, 0x0B, 0x48, 0x4F, 0x64, 0xB1, - 0x84, 0x91, 0xFF, 0x81, 0xFF, 0x5C, 0x94, 0x08, 0x44, 0xA8, 0xD6, 0x80, - 0x5B, 0x26, 0xF7, 0x5A, 0xDC, 0xF0, 0xC1, 0x6D, 0xED, 0xAF, 0xC3, 0x8D, - 0xFA, 0x54, 0xE4, 0xB1, 0x8F, 0x03, 0x45, 0x01, 0x63, 0x72, 0x17, 0x81, - 0x21, 0x1D, 0x1E, 0xF3, 0x19, 0x2A, 0xD2, 0x43, 0x4C, 0x6E, 0xC8, 0x83, - 0x13, 0x13, 0x4A, 0x00, 0x7E, 0xEF, 0x2D, 0x06, 0x07, 0x40, 0x81, 0x0A, - 0xC3, 0xE8, 0x13, 0xF6, 0xDC, 0xD7, 0x2C, 0xEB, 0xEC, 0x7C, 0xF9, 0x7B, - 0xC9, 0xD1, 0x79, 0x3A, 0x18, 0x74, 0xFF, 0xE8, 0xB3, 0xAC, 0x06, 0xDC, - 0x68, 0x07, 0x35, 0x0A, 0x45, 0x67, 0x5B, 0xC8, 0x1C, 0x3D, 0x4F, 0x77, - 0xCD, 0x1D, 0xEF, 0x2E, 0xBD, 0xA7, 0x2E, 0xD4, 0xD7, 0x2E, 0x32, 0xEC, - 0x89, 0x42, 0x46, 0x4B, 0x68, 0x60, 0x86, 0x72, 0xA9, 0x9B, 0xC3, 0x36, - 0xDE, 0x00, 0xBF, 0xCF, 0x4A, 0xFD, 0x2C, 0x98, 0xEE, 0x98, 0x6F, 0xD7, - 0xA7, 0x7B, 0xE4, 0xDA, 0xF6, 0xE2, 0x6E, 0x33, 0x29, 0x7F, 0x7E, 0xA0, - 0xE9, 0x6A, 0x07, 0x69, 0xA8, 0xF3, 0x65, 0xC6, 0x8F, 0x9D, 0x43, 0x88, - 0xDB, 0xF9, 0x7A, 0x81, 0x7C, 0x8F, 0xF0, 0x99, 0xC7, 0x4A, 0x30, 0xC0, - 0x5C, 0x15, 0x21, 0x00, 0xC7, 0x19, 0x23, 0x48, 0xD7, 0x4E, 0x64, 0x8C, - 0xA4, 0x26, 0x94, 0x80, 0x24, 0xC1, 0xC1, 0x87, 0xC9, 0x55, 0x51, 0x90, - 0x7F, 0x9A, 0xDB, 0x2A, 0x7E, 0x56, 0xCA, 0xE1, 0xDF, 0x81, 0xD9, 0x8B, - 0x78, 0xAB, 0x7C, 0x65, 0x04, 0x69, 0x49, 0x6C, 0x42, 0x8D, 0x48, 0x24, - 0x1C, 0xB7, 0x8A, 0x58, 0xAA, 0x18, 0x8E, 0xF3, 0xD1, 0x73, 0xB2, 0x20, - 0xD9, 0x46, 0x0C, 0x5A, 0xBE, 0x76, 0x2E, 0x86, 0x9F, 0xD5, 0x15, 0xA9, - 0x7C, 0x24, 0x09, 0x05, 0x0F, 0xF0, 0x3E, 0xB9, 0x9A, 0x12, 0x1A, 0xDC, - 0x41, 0x5A, 0x9F, 0x50, 0x3C, 0x76, 0xE5, 0x21, 0x98, 0x33, 0x1A, 0xA1, - 0x90, 0x2C, 0xF0, 0x22, 0x1A, 0x3D, 0x20, 0x24, 0xC4, 0x96, 0xC9, 0x13, - 0xD5, 0x8D, 0x81, 0x89, 0xA1, 0x61, 0x88, 0xAA, 0xEC, 0x8C, 0xDC, 0x31, - 0x7E, 0x3A, 0xFD, 0x6A, 0xBF, 0x8F, 0x97, 0x03, 0x67, 0x58, 0x31, 0xD3, - 0x2D, 0x63, 0xFC, 0x67, 0x8D, 0x14, 0xC3, 0xEB, 0xB7, 0xF8, 0x3E, 0x85, - 0xD3, 0x8F, 0x9E, 0xD7, 0xB4, 0x86, 0x3C, 0xDB, 0xD2, 0x5F, 0x0D, 0xD2, - 0xB2, 0xD1, 0xFC, 0xA5, 0x95, 0x4E, 0x80, 0x9E, 0x4E, 0x8D, 0x93, 0xAD, - 0xB3, 0xCA, 0x8A, 0xE0, 0xBC, 0x54, 0x7F, 0xD6, 0xB1, 0x74, 0xC0, 0xE8, - 0x4A, 0xF5, 0xC7, 0x72, 0xA7, 0xB7, 0x42, 0x4D, 0xD9, 0x60, 0x15, 0xEB, - 0xB6, 0x29, 0x02, 0x1F, 0x83, 0x78, 0x58, 0x09, 0x9E, 0x50, 0xA3, 0x39, - 0xC6, 0x22, 0x1E, 0xD1, 0xE6, 0xB9, 0x5A, 0xA3, 0x6F, 0x80, 0x43, 0xA9, - 0x58, 0x0B, 0x8C, 0x60, 0xF4, 0xC2, 0xD2, 0x0F, 0x9C, 0x78, 0xFE, 0xB1, - 0x33, 0x01, 0x67, 0xFF, 0xEC, 0x93, 0xC1, 0x6C, 0x77, 0x04, 0x1E, 0xD7, - 0xD2, 0x65, 0xDD, 0xF5, 0xAF, 0x6D, 0xC2, 0x04, 0x33, 0xF9, 0x38, 0x8F, - 0xF3, 0xCF, 0x80, 0x7D, 0x46, 0xFA, 0x53, 0x58, 0x30, 0xA6, 0x0B, 0x47, - 0xAE, 0xF0, 0xCB, 0x31, 0xA2, 0xC2, 0xB4, 0xB9, 0xA3, 0x8C, 0xA3, 0xAA, - 0x48, 0xF5, 0x0E, 0x8E, 0x45, 0x92, 0x12, 0xFB, 0x17, 0x8F, 0xC3, 0x2C, - 0x8D, 0xA7, 0x93, 0x2A, 0xB3, 0x76, 0x7B, 0x8D, 0xE6, 0x66, 0xBF, 0x9A, - 0x88, 0x64, 0x91, 0x2C, 0xD5, 0x9D, 0xE6, 0x28, 0xD6, 0x91, 0x48, 0xAC, - 0x5D, 0xCB, 0xE1, 0x9B, 0x1E, 0x9C, 0x73, 0xF4, 0xCB, 0x54, 0x3D, 0x72, - 0xED, 0xA0, 0xFA, 0x97, 0x00, 0xCB, 0x32, 0x69, 0xCC, 0xB7, 0x00, 0x61, - 0xE8, 0x97, 0x78, 0x79, 0xBA, 0x3D, 0x7B, 0x98, 0xA8, 0xBF, 0xA0, 0xF2, - 0x3B, 0x23, 0x22, 0x02, 0x10, 0x16, 0xB2, 0x93, 0xE1, 0x74, 0x95, 0x65, - 0xE5, 0x5F, 0x53, 0xEC, 0x70, 0x9F, 0x9F, 0xB6, 0xDD, 0x0B, 0xFF, 0xB4, - 0x48, 0x34, 0x1F, 0xA1, 0xF6, 0xBF, 0x61, 0x36, 0x4B, 0xF2, 0xCD, 0xE4, - 0xD6, 0x88, 0x08, 0x4A, 0x17, 0xE9, 0x33, 0xC6, 0xCA, 0x44, 0xD6, 0x00, - 0xA1, 0x6D, 0x2C, 0xFD, 0x09, 0x80, 0x51, 0xB8, 0xDC, 0xA1, 0xF9, 0x7D, - 0x55, 0x87, 0xE1, 0x52, 0x66, 0xF3, 0xA5, 0xF7, 0x0E, 0x61, 0xFC, 0x7B, - 0xA5, 0xC0, 0x26, 0x82, 0x37, 0x7A, 0x2D, 0xBF, 0xEA, 0x0E, 0xBD, 0xF3, - 0xCD, 0x50, 0x4C, 0x7E, 0x0F, 0xD2, 0xCC, 0x90, 0x81, 0x25, 0x28, 0xAF, - 0xD5, 0x7E, 0x89, 0xA5, 0xA8, 0x18, 0x2C, 0x6B, 0x53, 0x07, 0x51, 0xE5, - 0x09, 0x07, 0x3E, 0xCF, 0x58, 0xB8, 0x49, 0xCA, 0xE7, 0xA3, 0x36, 0x88, - 0xAD, 0x46, 0xF4, 0x8F, 0xA9, 0x55, 0x53, 0x02, 0xED, 0x8D, 0xFE, 0x50, - 0x20, 0xD6, 0x5E, 0xD4, 0xEB, 0x2B, 0x34, 0x3D, 0x04, 0x84, 0x39, 0x20, - 0x16, 0xCD, 0xDF, 0x40, 0x06, 0x2E, 0xE1, 0xB7, 0x81, 0x13, 0xE3, 0xC2, - 0x94, 0x5A, 0xFF, 0xE4, 0x4D, 0xBC, 0x1A, 0x80, 0x9A, 0x17, 0xBD, 0x1C, - 0xD3, 0x2B, 0x3C, 0xDE, 0xE4, 0x77, 0xA6, 0x59, 0x48, 0x5A, 0x1C, 0xE1, - 0x81, 0x89, 0xAF, 0x34, 0xBC, 0x2F, 0xC2, 0x69, 0x39, 0x9E, 0xE9, 0xEF, - 0x9B, 0x72, 0x56, 0x19, 0x90, 0x5E, 0x54, 0x09, 0xF7, 0x5D, 0xBF, 0x04, - 0x4F, 0x4D, 0x9A, 0x0B, 0x93, 0x55, 0x09, 0xDB, 0x63, 0xB1, 0xF3, 0x7C, - 0xD8, 0xB0, 0x8A, 0x69, 0x43, 0x1E, 0x11, 0x3B, 0x57, 0x6C, 0x0B, 0x04, - 0xC8, 0x38, 0xFF, 0x1F, 0x11, 0x07, 0xF7, 0x05, 0x9E, 0x15, 0x3E, 0xF9, - 0x37, 0x34, 0x66, 0x33, 0x0B, 0x33, 0x01, 0xBE, 0x7B, 0xD6, 0xDA, 0x54, - 0x38, 0xA9, 0x5B, 0x82, 0x83, 0xCC, 0x91, 0xD4, 0x89, 0xA2, 0x3F, 0x88, - 0x46, 0x4A, 0x38, 0xE7, 0x23, 0x03, 0xCB, 0x80, 0x3B, 0xFA, 0xFE, 0xB9, - 0x1E, 0xE9, 0x2D, 0x3C, 0x64, 0x60, 0x2D, 0xB6, 0xAC, 0xBA, 0xAB, 0xD6, - 0x51, 0x15, 0xB2, 0x1A, 0xB6, 0x98, 0xBB, 0x67, 0x2D, 0x04, 0xBB, 0x78, - 0x6D, 0xE5, 0xFB, 0x95, 0x8B, 0xE5, 0xCC, 0xAD, 0xE4, 0x15, 0xBB, 0x5F, - 0xF0, 0x56, 0x41, 0x06, 0x4D, 0x21, 0x10, 0x61, 0x3C, 0x63, 0xAC, 0x59, - 0x83, 0x2D, 0x4F, 0x0E, 0x52, 0xDB, 0x0A, 0x9D, 0x3B, 0xCB, 0x61, 0xAA, - 0x4D, 0x84, 0xB2, 0xC2, 0xFC, 0x7E, 0x67, 0xD3, 0x86, 0x3E, 0x83, 0xF2, - 0x6B, 0x1C, 0x8D, 0xD2, 0x6C, 0x55, 0x80, 0x14, 0x54, 0xC9, 0x14, 0x7E, - 0x14, 0xD9, 0x2A, 0xEE, 0x53, 0xAE, 0xB8, 0x27, 0xB3, 0x34, 0x02, 0xD2, - 0xFE, 0xA3, 0xC8, 0x75, 0x81, 0x6E, 0xC7, 0xCE, 0x83, 0xD5, 0xCB, 0xDF, - 0x5C, 0xED, 0xD2, 0x5A, 0xCC, 0xA9, 0x4E, 0xD1, 0x0A, 0x50, 0x0C, 0x9D, - 0x84, 0x79, 0x84, 0x6D, 0xA4, 0x41, 0x53, 0x69, 0x0E, 0x6C, 0x7D, 0x19, - 0x66, 0x1D, 0x05, 0xCE, 0xF8, 0xBE, 0xCC, 0xF8, 0xC5, 0x22, 0x0B, 0x8A, - 0x12, 0xC1, 0xB6, 0xF1, 0x96, 0xC7, 0xEA, 0xDC, 0xAE, 0x8D, 0xE9, 0x4A, - 0x88, 0x8B, 0xC0, 0xA9, 0xBD, 0xE7, 0xA4, 0x61, 0x3C, 0xE7, 0x8A, 0xB5, - 0x60, 0x5C, 0xA3, 0x02, 0x63, 0x6A, 0x3D, 0xE3, 0xBB, 0x25, 0x62, 0xA6, - 0xC1, 0xFA, 0x37, 0x10, 0x51, 0x24, 0x85, 0x7A, 0x2F, 0x03, 0x07, 0x35, - 0x0E, 0xDF, 0xFE, 0xA1, 0x81, 0x06, 0xCC, 0xC4, 0xBA, 0xFA, 0xE7, 0x92, - 0x1E, 0xCA, 0xB2, 0x2C, 0x69, 0x92, 0xAD, 0x10, 0xDF, 0x14, 0xBA, 0xC0, - 0xD1, 0xE0, 0x80, 0x56, 0x63, 0xF7, 0x02, 0x63, 0x9B, 0x2C, 0xEA, 0xE6, - 0x07, 0x14, 0x77, 0x30, 0xD9, 0x9A, 0xA5, 0xEF, 0xE8, 0xF1, 0x69, 0xA9, - 0x8B, 0x74, 0xD6, 0xCB, 0x4A, 0xAB, 0x3E, 0xD0, 0x05, 0xCF, 0xC7, 0xCB, - 0x5F, 0x77, 0x61, 0x0B, 0xF3, 0xEF, 0x84, 0x42, 0x63, 0x1A, 0x08, 0x90, - 0x38, 0xCC, 0xCC, 0x77, 0x73, 0xF4, 0x10, 0x16, 0x3B, 0x88, 0x6A, 0x36, - 0x7F, 0x3D, 0x1B, 0x47, 0xA8, 0x43, 0x13, 0xDE, 0x0F, 0x3E, 0xF8, 0x32, - 0xEB, 0xE0, 0x13, 0x3F, 0xE9, 0x45, 0x64, 0x17, 0xAD, 0x1D, 0x94, 0x00, - 0x89, 0x5B, 0xDD, 0x1B, 0xD8, 0xCC, 0x3C, 0x2A, 0x48, 0xB3, 0xF8, 0xB8, - 0xF1, 0xC1, 0x3D, 0x36, 0x45, 0xB6, 0xDC, 0x29, 0x47, 0x8F, 0x1D, 0x5B, - 0x3C, 0x11, 0xF1, 0xEC, 0xA0, 0xB6, 0x74, 0xBF, 0xF0, 0x55, 0xC6, 0x52, - 0x65, 0x24, 0x6E, 0x75, 0xE5, 0xC0, 0x3D, 0xE1, 0x34, 0x50, 0xB2, 0xB1, - 0xD2, 0xC4, 0x69, 0xAB, 0x31, 0xB5, 0xFD, 0x10, 0xAD, 0x10, 0x00, 0x18, - 0x87, 0x0B, 0x63, 0xEC, 0x74, 0x72, 0x07, 0xCC, 0x6B, 0xD8, 0x46, 0x69, - 0x4A, 0x3A, 0xD1, 0x2B, 0x25, 0x6C, 0xF7, 0x45, 0x84, 0x1D, 0x97, 0x63, - 0x70, 0x68, 0xF4, 0x8B, 0x33, 0x4A, 0xE5, 0x16, 0x81, 0xD2, 0x50, 0x2B, - 0xD8, 0x51, 0xEC, 0x33, 0xDB, 0xC8, 0xC0, 0x50, 0xE3, 0xF0, 0x1B, 0x57, - 0xFC, 0xC9, 0x7D, 0x7A, 0xC4, 0xA4, 0xF3, 0x39, 0x73, 0xAB, 0xAE, 0x42, - 0x71, 0x4B, 0xF0, 0xD1, 0xAD, 0xF4, 0x67, 0x3A, 0x9E, 0xFD, 0xA9, 0xA7, - 0x22, 0xF9, 0x06, 0x93, 0xEE, 0xBA, 0x96, 0xB4, 0x31, 0x69, 0x41, 0x8A, - 0x6D, 0x8D, 0x7C, 0xBA, 0x03, 0xBB, 0x56, 0x91, 0xAA, 0x63, 0x58, 0xC0, - 0x99, 0x61, 0xF8, 0x83, 0x65, 0x9D, 0x0B, 0x95, 0x64, 0x6D, 0xD6, 0x24, - 0x9D, 0x52, 0x6F, 0x4A, 0x46, 0xDD, 0x77, 0x09, 0x10, 0x4B, 0x4F, 0x94, - 0x82, 0x3E, 0xA6, 0xB4, 0x48, 0xE9, 0x9D, 0x5E, 0x8D, 0x79, 0x36, 0xDD, - 0x4A, 0xF4, 0x23, 0x79, 0x10, 0x38, 0xF4, 0x4D, 0x53, 0xA4, 0xB9, 0xD1, - 0xC3, 0xF3, 0x79, 0x31, 0xC3, 0x63, 0xBD, 0x71, 0x0B, 0x6A, 0x0C, 0x5F, - 0x08, 0x6E, 0xB5, 0x36, 0x89, 0x03, 0x16, 0x5D, 0x26, 0xCE, 0x9C, 0xBF, - 0x8F, 0x7E, 0x8D, 0x9A, 0x0B, 0x01, 0x77, 0xD1, 0x94, 0xA9, 0x39, 0x04, - 0x20, 0x02, 0xF0, 0x90, 0x4A, 0x89, 0xF0, 0x6F, 0x22, 0xD9, 0xC5, 0x05, - 0xDD, 0x2A, 0xB7, 0xDA, 0x78, 0x9A, 0x2C, 0xEB, 0xA0, 0x43, 0xE8, 0xAB, - 0x82, 0xA4, 0xF2, 0x5F, 0xA2, 0xFA, 0xC3, 0x30, 0x3E, 0x75, 0xCE, 0x2A, - 0xFC, 0x5B, 0x46, 0x87, 0x94, 0xC8, 0x6E, 0x3A, 0x97, 0x07, 0x31, 0x1D, - 0x80, 0xE0, 0xD8, 0xC7, 0x80, 0x43, 0x47, 0xC5, 0xA3, 0xBD, 0xFA, 0x47, - 0x6B, 0x09, 0x21, 0xF8, 0x2D, 0xA0, 0xFE, 0x41, 0x78, 0xC1, 0x44, 0x54, - 0xE5, 0xAD, 0x1E, 0xCF, 0x9B, 0x67, 0xED, 0x27, 0x5C, 0x76, 0x1A, 0x16, - 0x08, 0x8A, 0x70, 0x7D, 0x74, 0x93, 0x0B, 0x01, 0x7A, 0x3E, 0x5E, 0x15, - 0xBD, 0x4B, 0xFC, 0x29, 0x34, 0x11, 0x43, 0x95, 0x0F, 0xE7, 0x50, 0xCC, - 0xAD, 0xE3, 0xD4, 0x1F, 0x53, 0x5B, 0x85, 0x52, 0x72, 0x3C, 0x65, 0x2F, - 0xFA, 0x34, 0xD7, 0x1C, 0xAF, 0x81, 0x74, 0x7F, 0xCD, 0x2C, 0x14, 0x08, - 0xD6, 0x72, 0xA6, 0xBF, 0x7F, 0x5B, 0x23, 0x74, 0x55, 0xFD, 0xBF, 0x58, - 0x4C, 0x1F, 0x26, 0x4C, 0x77, 0xDA, 0x0B, 0x11, 0xDD, 0x11, 0x99, 0x10, - 0xB6, 0x9A, 0xE5, 0x77, 0xA5, 0x63, 0x81, 0xF7, 0x2B, 0x9D, 0x8E, 0xD1, - 0xFE, 0xF8, 0x8D, 0x8E, 0x24, 0x12, 0x5B, 0x7D, 0x3A, 0xDD, 0x49, 0xAD, - 0x06, 0xEE, 0x1F, 0x8C, 0x95, 0x9A, 0x8F, 0x2C, 0xEF, 0xF5, 0x85, 0x61, - 0xAF, 0x09, 0xB0, 0x27, 0x16, 0x48, 0xC6, 0x37, 0x2D, 0x0A, 0x17, 0xC4, - 0xDA, 0x53, 0x51, 0xEB, 0x42, 0x95, 0xCA, 0x14, 0x32, 0x93, 0x5B, 0x40, - 0x92, 0x08, 0x6A, 0xE9, 0xB3, 0x66, 0x9D, 0xE0, 0x81, 0x57, 0x9A, 0x38, - 0x4A, 0x23, 0xFE, 0x8F, 0x02, 0x65, 0x33, 0x35, 0x55, 0xB8, 0xB2, 0x34, - 0x9D, 0xD2, 0xDC, 0xD7, 0xF4, 0x19, 0x1D, 0x83, 0x2A, 0x91, 0xF0, 0x84, - 0xD6, 0x7F, 0x45, 0x63, 0x6E, 0x4F, 0x0E, 0x7E, 0x59, 0xBC, 0x22, 0x92, - 0xD4, 0xC5, 0xCF, 0xE8, 0xED, 0x15, 0x8C, 0xB5, 0xAA, 0x43, 0x17, 0xE0, - 0x46, 0x04, 0x7A, 0x80, 0x15, 0x0A, 0x40, 0xE8, 0x6E, 0x4E, 0x53, 0x10, - 0x7E, 0xB1, 0x71, 0x43, 0x20, 0x14, 0xA3, 0xF5, 0xD2, 0x04, 0x37, 0x90, - 0xA8, 0xBF, 0x4C, 0x4E, 0x1E, 0xB7, 0xCE, 0x0F, 0x0C, 0xD1, 0x82, 0x64, - 0x4B, 0x79, 0x47, 0x12, 0xE6, 0x7A, 0x4E, 0xC1, 0xAD, 0xFD, 0xFE, 0x31, - 0x09, 0x36, 0x41, 0x24, 0x0A, 0xCF, 0x20, 0x0C, 0xC3, 0x04, 0x57, 0x39, - 0xDD, 0x9C, 0x3E, 0x2E, 0xED, 0xAD, 0x96, 0x20, 0xBD, 0xC6, 0xB7, 0x18, - 0xEC, 0x03, 0x2E, 0xFC, 0x45, 0x93, 0xD2, 0x09, 0x13, 0xAE, 0xB8, 0x22, - 0xFB, 0x4B, 0xB4, 0x7D, 0x0F, 0x5E, 0x9F, 0xE1, 0xFB, 0x94, 0xA4, 0xC7, - 0x07, 0x9E, 0x72, 0x48, 0x7F, 0xEC, 0xC5, 0x0A, 0x19, 0xD5, 0x54, 0x2B, - 0x77, 0x16, 0x0A, 0xDC, 0x22, 0xC7, 0x03, 0x12, 0x9E, 0x11, 0xAC, 0x70, - 0x44, 0x1D, 0xA4, 0xC5, 0xE2, 0x19, 0x9B, 0xE3, 0xDC, 0x05, 0x36, 0x30, - 0x92, 0xCC, 0xC3, 0xF7, 0xCF, 0xD5, 0x67, 0x3C, 0xF7, 0x99, 0x37, 0x16, - 0xB3, 0x38, 0x38, 0xEE, 0x66, 0x7C, 0x80, 0xFD, 0x02, 0x94, 0xFA, 0x1F, - 0x10, 0xD9, 0xA8, 0x45, 0x58, 0x91, 0x85, 0xDA, 0x1F, 0xF2, 0x6B, 0xE3, - 0x8F, 0x09, 0xB8, 0xA1, 0x17, 0xA2, 0xF0, 0x75, 0x5B, 0x5D, 0xEC, 0x39, - 0x86, 0x0C, 0x88, 0xAE, 0xF6, 0x99, 0x7F, 0x55, 0x70, 0x52, 0xF0, 0x63, - 0x66, 0x75, 0x80, 0xF4, 0x87, 0x13, 0x01, 0x26, 0x82, 0x39, 0xE3, 0x2F, - 0xE2, 0x5F, 0xCF, 0xFC, 0x22, 0x28, 0xE9, 0x75, 0x8F, 0xCD, 0x7A, 0x03, - 0x77, 0xB0, 0x4E, 0x19, 0x03, 0x73, 0x2B, 0xFB, 0x87, 0xF4, 0x94, 0x18, - 0xF8, 0xF7, 0xCB, 0x94, 0x7C, 0xB9, 0x54, 0xD5, 0xED, 0xC5, 0x47, 0x3B, - 0x12, 0xA1, 0x65, 0x05, 0x39, 0x45, 0x5A, 0x51, 0x75, 0x3B, 0xC8, 0x84, - 0x6F, 0x1F, 0x5D, 0x6C, 0x7E, 0xBE, 0xE2, 0x42, 0x1A, 0xD8, 0x74, 0x0D, - 0x17, 0x62, 0x9B, 0xBE, 0xDF, 0x55, 0x15, 0x50, 0xC4, 0xDF, 0x95, 0x92, - 0x9D, 0xCD, 0xA2, 0x3F, 0x38, 0x5C, 0x09, 0x51, 0xBB, 0xF4, 0xD8, 0xE9, - 0xEF, 0xB0, 0x88, 0x0C, 0x92, 0x7F, 0xCB, 0x01, 0x91, 0x13, 0x7A, 0x44, - 0xA1, 0x98, 0x2E, 0x0E, 0x12, 0x63, 0xA7, 0xBC, 0xD3, 0x0C, 0x07, 0xE0, - 0xD4, 0x72, 0xF5, 0x45, 0xCE, 0x44, 0x4D, 0xF8, 0x76, 0xF9, 0x1A, 0x1C, - 0xF5, 0x80, 0xB2, 0x93, 0x23, 0x93, 0x9B, 0xEE, 0x99, 0x35, 0xE4, 0xBB, - 0xE9, 0x4D, 0x72, 0xFC, 0xA0, 0xE6, 0x7B, 0x27, 0x67, 0x11, 0x88, 0x9B, - 0xAA, 0x38, 0x8D, 0x6C, 0x33, 0x52, 0x5D, 0xD6, 0x22, 0xF4, 0xBC, 0xD1, - 0xCD, 0x9C, 0x74, 0x3A, 0xEA, 0x2B, 0xB0, 0x20, 0x2E, 0xAA, 0x75, 0xF2, - 0xD6, 0xDA, 0xFB, 0x93, 0xDB, 0x71, 0xB6, 0x07, 0xD9, 0x85, 0xCA, 0xBB, - 0x45, 0x97, 0x00, 0x42, 0xA8, 0xD1, 0xA3, 0x44, 0x13, 0x66, 0xAF, 0x0A, - 0xA0, 0xEB, 0x2F, 0xA3, 0x27, 0x64, 0x78, 0x46, 0x9C, 0xE4, 0x99, 0xA5, - 0x47, 0x96, 0xC1, 0xD1, 0x99, 0x5C, 0x9A, 0x6A, 0xBA, 0x5E, 0xC6, 0xBA, - 0xEB, 0x63, 0x19, 0x6F, 0xC9, 0xDB, 0x36, 0xD8, 0xAD, 0x58, 0x44, 0x30, - 0x8F, 0x59, 0x19, 0x42, 0xAF, 0x6A, 0x1B, 0x8A, 0xC9, 0xA2, 0xAE, 0x00, - 0x5D, 0x5A, 0x09, 0x33, 0xAC, 0x02, 0xDA, 0x64, 0xAF, 0xDD, 0xDF, 0x15, - 0x2A, 0xA2, 0xD2, 0xA1, 0xA6, 0x93, 0x5C, 0xE1, 0x10, 0xC3, 0x6A, 0x10, - 0xA5, 0x97, 0x2D, 0x6D, 0xD9, 0xA9, 0xB5, 0x36, 0x71, 0x54, 0xC4, 0xEF, - 0xC8, 0xC6, 0x17, 0x30, 0xDD, 0xCF, 0x96, 0x86, 0xC8, 0x63, 0x60, 0x21, - 0xAB, 0x3D, 0xBA, 0x40, 0x8F, 0x30, 0x16, 0xBE, 0xD9, 0xDF, 0x7E, 0x13, - 0xCB, 0xBF, 0xF7, 0x0E, 0x33, 0x31, 0x18, 0xED, 0x1E, 0x47, 0xD8, 0xF2, - 0xCF, 0x42, 0xC8, 0xF3, 0x2C, 0x20, 0x00, 0xB1, 0x8F, 0xB9, 0x1F, 0xEA, - 0x82, 0x11, 0x03, 0x8D, 0xB5, 0x25, 0xB4, 0x84, 0x79, 0x97, 0xDC, 0x56, - 0x3C, 0x8B, 0x41, 0x9A, 0x01, 0x63, 0x7A, 0xF7, 0x66, 0x0F, 0x05, 0xF7, - 0x4A, 0xDC, 0x05, 0x03, 0x29, 0x5C, 0xF1, 0x89, 0x8D, 0x38, 0x19, 0x48, - 0x38, 0xBE, 0x82, 0xCD, 0x04, 0x16, 0xEC, 0xD6, 0x68, 0xB8, 0x00, 0x3D, - 0xC6, 0x6E, 0xDA, 0x10, 0x0F, 0x12, 0x19, 0x18, 0xAE, 0x24, 0x29, 0x2E, - 0xD1, 0x5D, 0xD3, 0xA2, 0x7A, 0x8A, 0x10, 0x20, 0xB5, 0x8A, 0xD4, 0x41, - 0x66, 0x8E, 0x00, 0x9E, 0x29, 0x11, 0x3A, 0xBD, 0xEA, 0x66, 0xA6, 0x18, - 0x87, 0xD3, 0xEE, 0x0F, 0x17, 0xE5, 0x5B, 0xB9, 0x16, 0x56, 0x22, 0xDD, - 0x9C, 0xB6, 0x02, 0xBD, 0x6C, 0x19, 0xBA, 0x85, 0x1F, 0x44, 0xB7, 0x88, - 0x43, 0x45, 0xBE, 0x29, 0x65, 0xA2, 0xBE, 0xC1, 0x4E, 0xCF, 0x25, 0x53, - 0xD6, 0xC2, 0x53, 0x59, 0xF9, 0xA3, 0xC3, 0x52, 0x9C, 0xEE, 0xE0, 0x92, - 0x39, 0x20, 0x97, 0xA0, 0xF7, 0x8C, 0x58, 0x8B, 0x7A, 0xEA, 0x05, 0x7B, - 0x6B, 0x92, 0x65, 0xAC, 0x63, 0x9C, 0x11, 0x06, 0xB5, 0x2F, 0xC2, 0x5D, - 0x97, 0x55, 0x88, 0x25, 0x3C, 0x37, 0xE8, 0x8D, 0xBE, 0xB2, 0x3C, 0xFB, - 0xC5, 0x0D, 0xD9, 0x6B, 0xA6, 0x7F, 0xD4, 0xD7, 0xB9, 0xB8, 0x56, 0xC3, - 0x9B, 0xA0, 0x75, 0x7B, 0x3D, 0x5D, 0xF4, 0x53, 0xED, 0xF7, 0xBF, 0xA7, - 0xD9, 0xD8, 0x0C, 0x14, 0x4F, 0xD6, 0xA4, 0xAC, 0xB3, 0x33, 0x44, 0x62, - 0x04, 0x52, 0xB4, 0xA2, 0xE3, 0x1E, 0x46, 0x73, 0x78, 0x92, 0x66, 0x24, - 0xEB, 0x43, 0x46, 0xEC, 0x6C, 0x1D, 0x7B, 0xA1, 0x0B, 0x55, 0xCB, 0xA1, - 0xF7, 0x7F, 0xCA, 0x78, 0x46, 0x22, 0x8F, 0xD7, 0xB2, 0x42, 0x86, 0x4A, - 0xE9, 0xCC, 0xFC, 0x77, 0x88, 0x84, 0x95, 0x0A, 0x24, 0x8B, 0xB5, 0xC2, - 0x66, 0x6B, 0xA3, 0x91, 0x47, 0xFD, 0x5B, 0x87, 0x9B, 0xE0, 0xBF, 0xB0, - 0x49, 0x38, 0xD9, 0x6D, 0x05, 0x7A, 0x53, 0xFF, 0xDC, 0xE8, 0x9C, 0xB9, - 0xAF, 0x59, 0xFD, 0xE5, 0xD4, 0xE3, 0x3A, 0x58, 0xCD, 0xA7, 0x9C, 0x6F, - 0xE0, 0x19, 0x17, 0xB4, 0x14, 0xFD, 0x16, 0xD5, 0x39, 0x77, 0x8F, 0xCE, - 0x7F, 0xC0, 0xF1, 0x5F, 0xE1, 0x69, 0x26, 0x89, 0x4C, 0x43, 0xCA, 0xD7, - 0x37, 0x51, 0x12, 0x6B, 0x45, 0x3D, 0x8B, 0xD9, 0xD7, 0x8B, 0xDB, 0x22, - 0x33, 0x79, 0x34, 0x56, 0xE7, 0xDC, 0x00, 0xBD, 0xD1, 0x98, 0x52, 0xAC, - 0x1D, 0x47, 0x69, 0xFF, 0x88, 0xBF, 0x15, 0x3F, 0x7D, 0xDF, 0x12, 0x26, - 0xF7, 0x1F, 0xBD, 0xD4, 0x13, 0x52, 0x86, 0xB5, 0x2F, 0x4F, 0x0F, 0xD2, - 0x44, 0x6A, 0xB7, 0x71, 0x67, 0x69, 0x2E, 0x76, 0x56, 0x82, 0xFA, 0x88, - 0x8B, 0xE2, 0x80, 0x45, 0x31, 0x4E, 0xE8, 0xEF, 0xFC, 0x48, 0xEA, 0x2E, - 0x10, 0x9C, 0x73, 0x12, 0x89, 0xA6, 0x17, 0x3A, 0xFE, 0x2E, 0x4C, 0x33, - 0x97, 0x54, 0x3C, 0x8D, 0x0F, 0xAC, 0xA5, 0xD0, 0x71, 0x62, 0x73, 0x97, - 0xF8, 0xED, 0xD5, 0xCF, 0xC5, 0x18, 0x67, 0x1A, 0x1C, 0xE2, 0xA6, 0x2E, - 0xD1, 0x51, 0x74, 0x57, 0xD3, 0xE8, 0x6E, 0x60, 0x00, 0x96, 0x2D, 0x3E, - 0x7F, 0xD3, 0x05, 0xB0, 0x22, 0xC2, 0x0F, 0xF4, 0x69, 0x73, 0xAF, 0xC2, - 0x02, 0x22, 0x40, 0xF9, 0x6F, 0x35, 0x13, 0x04, 0xA4, 0x48, 0xD3, 0xE7, - 0xEE, 0x88, 0xC4, 0x03, 0xD5, 0x0D, 0x90, 0x48, 0x97, 0x8A, 0x9D, 0x12, - 0x02, 0xE9, 0x04, 0xD4, 0x2A, 0xA6, 0x13, 0xF6, 0x04, 0x3C, 0x76, 0x0D, - 0x37, 0xBB, 0xF5, 0x8A, 0x12, 0x04, 0x3A, 0xFE, 0xAC, 0xA7, 0x8D, 0xB8, - 0x6E, 0xC4, 0xA5, 0x26, 0x84, 0xFF, 0xEA, 0x81, 0x8D, 0x33, 0x2D, 0xF0, - 0x9D, 0x0B, 0xFB, 0x04, 0x7B, 0x46, 0x71, 0x57, 0xA0, 0x24, 0xD9, 0xF6, - 0x8A, 0x44, 0x16, 0xE1, 0x7F, 0x28, 0xD2, 0xC5, 0xC2, 0xEF, 0x8D, 0xA9, - 0x63, 0x8B, 0x6B, 0x98, 0x50, 0x1A, 0xB4, 0x66, 0xFB, 0xCD, 0x3D, 0x1E, - 0x79, 0x86, 0x22, 0xA3, 0xB3, 0x78, 0xBF, 0x0D, 0x2E, 0x66, 0x45, 0x0A, - 0xA0, 0x58, 0xE9, 0x4D, 0x52, 0x5E, 0x9E, 0x07, 0xAD, 0x05, 0x3D, 0x35, - 0x17, 0xA2, 0x65, 0x0C, 0xFE, 0x80, 0x56, 0x81, 0x8C, 0x5D, 0x08, 0x0B, - 0x15, 0x75, 0x0E, 0x88, 0x19, 0x34, 0x2D, 0xB7, 0x88, 0x92, 0x6C, 0xC9, - 0xF3, 0xDF, 0x19, 0xB6, 0x6D, 0xAB, 0x58, 0x13, 0x6E, 0xCE, 0xC9, 0x9A, - 0x07, 0xF9, 0x34, 0x9C, 0x5C, 0x9E, 0x33, 0x8F, 0x11, 0xCA, 0xA5, 0x1D, - 0xD4, 0xDA, 0xC7, 0x8C, 0x3B, 0x61, 0xBF, 0x8D, 0xCB, 0x69, 0xFF, 0x36, - 0x8E, 0x0C, 0xAD, 0xF4, 0x32, 0xC3, 0x20, 0x57, 0xCE, 0x19, 0xAD, 0x61, - 0xB0, 0x2C, 0xB0, 0xCD, 0xA4, 0xBD, 0xE0, 0xFC, 0x73, 0x3F, 0xA6, 0xE9, - 0x72, 0x6E, 0xB8, 0x84, 0x2F, 0x6A, 0xE8, 0xAF, 0x58, 0xC6, 0x64, 0xD7, - 0xA0, 0x3F, 0x36, 0x63, 0x95, 0x72, 0x06, 0x8B, 0xA7, 0xE5, 0xB4, 0x25, - 0xC7, 0xB7, 0xB7, 0xBD, 0xFA, 0xF2, 0xCD, 0x28, 0xDD, 0xC2, 0x80, 0x7B, - 0x45, 0xFA, 0x8D, 0xCF, 0xD2, 0x5E, 0xB8, 0x0C, 0xA1, 0x40, 0xC7, 0x40, - 0xCB, 0x0D, 0xF4, 0x61, 0xAC, 0x20, 0x45, 0x58, 0xB7, 0x56, 0x2A, 0xE6, - 0x2E, 0x64, 0xFF, 0xC3, 0xC7, 0xE1, 0xF6, 0xB3, 0xE8, 0x42, 0x3F, 0xB5, - 0x26, 0x4F, 0x49, 0x02, 0x39, 0x91, 0x2C, 0x49, 0x70, 0xDA, 0x87, 0x86, - 0xA4, 0x29, 0x36, 0x62, 0xF8, 0x2F, 0xBD, 0xD0, 0xF1, 0x0B, 0xD3, 0xEB, - 0x8A, 0x68, 0x13, 0xD6, 0x9C, 0xC8, 0x78, 0x28, 0xBD, 0xAA, 0xDF, 0xEA, - 0x72, 0xCD, 0x03, 0x83, 0xE9, 0xBB, 0x3C, 0x6F, 0x75, 0x1F, 0xAF, 0x67, - 0x47, 0x5E, 0x01, 0xC1, 0x88, 0xE9, 0x9B, 0xB0, 0xF9, 0x65, 0xF6, 0x8D, - 0x79, 0x2A, 0xA9, 0xC9, 0x3C, 0xF3, 0x24, 0x19, 0x22, 0x81, 0x32, 0x9E, - 0xBE, 0xFA, 0xB4, 0x53, 0x17, 0x64, 0x02, 0x8C, 0x7C, 0x18, 0x21, 0x01, - 0xF2, 0x14, 0xE8, 0x6E, 0xAE, 0x3E, 0xAE, 0x60, 0xB1, 0x4C, 0x51, 0x9B, - 0xBA, 0x28, 0x24, 0xA0, 0xB9, 0xFC, 0xEA, 0xE5, 0x9C, 0xA7, 0x18, 0xE2, - 0x35, 0x05, 0x07, 0x19, 0xAD, 0xE8, 0x02, 0x71, 0x17, 0x53, 0x20, 0x4A, - 0xCD, 0x33, 0xC6, 0xB3, 0x70, 0x9F, 0x46, 0x24, 0xEB, 0xA8, 0x18, 0x24, - 0x99, 0xD4, 0x87, 0x16, 0x00, 0xBE, 0xF4, 0x41, 0x6C, 0xBF, 0x45, 0xE3, - 0xF7, 0x6F, 0xD1, 0x0A, 0x4A, 0x6A, 0x23, 0x5D, 0x0B, 0xFA, 0xB5, 0x71, - 0x97, 0xE2, 0x6B, 0xD3, 0x81, 0xB9, 0x49, 0xBC, 0xC4, 0x3C, 0xB2, 0x0C, - 0x15, 0x77, 0x8E, 0x5A, 0xC0, 0x89, 0x5F, 0x9A, 0x93, 0x9A, 0x75, 0xB2, - 0xA4, 0xE2, 0x7E, 0x5A, 0x9C, 0x0A, 0x7E, 0x8C, 0xDD, 0x9F, 0x31, 0x10, - 0x95, 0x8D, 0x57, 0x0E, 0xB7, 0xDD, 0x8B, 0xE7, 0x39, 0xAC, 0x79, 0x11, - 0x51, 0x3C, 0xBB, 0x21, 0x58, 0xD7, 0x23, 0xFA, 0x63, 0xFD, 0x21, 0x85, - 0x3F, 0x5F, 0x85, 0xF0, 0x3C, 0xF8, 0xE9, 0x40, 0x72, 0x92, 0x79, 0xCF, - 0x21, 0x14, 0xED, 0xAB, 0xB9, 0xC3, 0xCF, 0x10, 0x85, 0x28, 0x3B, 0x81, - 0xB6, 0x6E, 0x99, 0x18, 0x7C, 0xD9, 0x36, 0x11, 0x22, 0x6C, 0xF8, 0x83, - 0xB2, 0x51, 0xD3, 0xF7, 0x42, 0x37, 0xD4, 0xBA, 0x85, 0xB7, 0x9E, 0x6C, - 0x61, 0xB3, 0xDB, 0x6F, 0x79, 0xF2, 0x34, 0xA7, 0x29, 0x3C, 0xE9, 0x2B, - 0x2B, 0x0B, 0xF4, 0x5F, 0x47, 0x96, 0x14, 0x36, 0xA4, 0x2F, 0x67, 0x54, - 0x77, 0x48, 0x2B, 0x5F, 0x4A, 0x1F, 0xB2, 0xE5, 0xFF, 0x38, 0xE4, 0xE2, - 0xAE, 0x76, 0xB1, 0x66, 0x7F, 0x01, 0xE8, 0x31, 0xA4, 0x24, 0xBA, 0x95, - 0xAB, 0x0A, 0x9B, 0x1F, 0xC4, 0x04, 0x59, 0x9C, 0x0D, 0xD0, 0x3D, 0x2E, - 0x7F, 0xCE, 0xBE, 0xD2, 0x93, 0x2A, 0xB0, 0x95, 0x22, 0xA5, 0xE9, 0xE4, - 0xCA, 0xE2, 0x49, 0x15, 0xDF, 0x64, 0x65, 0xE4, 0xE5, 0xC8, 0x65, 0xA3, - 0x18, 0x53, 0x36, 0xD4, 0x8B, 0xC7, 0x97, 0xE1, 0x4E, 0xD9, 0x92, 0xE7, - 0x4A, 0x01, 0x2F, 0x93, 0xB0, 0x09, 0x40, 0x4E, 0x5A, 0x58, 0x7F, 0x2D, - 0xDB, 0x7E, 0xA5, 0xAB, 0x8A, 0xA1, 0xFD, 0x4C, 0x9C, 0x55, 0x0F, 0x47, - 0x64, 0x02, 0x80, 0xCB, 0x57, 0x50, 0xEC, 0xFE, 0xB7, 0xDC, 0xD2, 0x21, - 0xD7, 0x0B, 0xF5, 0x0F, 0xD3, 0xB2, 0x10, 0xDF, 0x8D, 0x8B, 0x91, 0xE0, - 0x9C, 0x44, 0x59, 0x0E, 0x08, 0xF2, 0xAB, 0x94, 0x75, 0xF3, 0x56, 0x96, - 0xF0, 0x3E, 0x65, 0xA0, 0xBA, 0x4C, 0x10, 0x20, 0xB7, 0xF4, 0x2E, 0xEC, - 0xE2, 0xC4, 0x03, 0x7D, 0xFB, 0xD9, 0x79, 0xCC, 0x88, 0x1F, 0x77, 0xE8, - 0x9D, 0x1B, 0x89, 0xCD, 0xBB, 0x3D, 0x63, 0x3D, 0xCC, 0x95, 0x8C, 0xFA, - 0x5C, 0x79, 0xC2, 0xE1, 0x83, 0x64, 0xE0, 0xB3, 0x52, 0x38, 0x90, 0x49, - 0x2A, 0x02, 0x1A, 0x9F, 0x85, 0xC4, 0x45, 0x59, 0xE2, 0xE1, 0xF6, 0x7B, - 0x61, 0xAF, 0x0A, 0xBA, 0xA3, 0x8F, 0xA0, 0x2D, 0xEE, 0x7C, 0xBE, 0x54, - 0x40, 0x15, 0xB5, 0x87, 0xA1, 0xEF, 0x7E, 0x09, 0x38, 0x51, 0xED, 0x2D, - 0xDE, 0xDB, 0x41, 0xC6, 0xEE, 0x88, 0xAD, 0x1F, 0x9C, 0x1C, 0xEC, 0x70, - 0x39, 0x38, 0x45, 0xB8, 0x01, 0xB6, 0x58, 0x85, 0x61, 0x48, 0x3A, 0xCB, - 0xE9, 0x97, 0xB3, 0x96, 0x8C, 0x0B, 0xD7, 0x33, 0x73, 0x73, 0x7F, 0x1D, - 0x85, 0xFF, 0xE9, 0x9E, 0xCE, 0xD1, 0x1E, 0xFD, 0x1B, 0x7A, 0x63, 0x33, - 0x10, 0x47, 0x96, 0xBA, 0x0A, 0x8E, 0xF6, 0x4C, 0x70, 0xC1, 0xE1, 0xFD, - 0x19, 0x5A, 0xE0, 0x19, 0xE8, 0xD9, 0x0C, 0x31, 0x8E, 0xA7, 0x42, 0x9D, - 0x50, 0xB2, 0xC9, 0x20, 0xE8, 0x62, 0xD2, 0x27, 0x67, 0x8E, 0xB6, 0x33, - 0x8C, 0xD9, 0x38, 0x85, 0xDC, 0x4D, 0xCF, 0x72, 0xF3, 0xCF, 0xAF, 0xB6, - 0x00, 0xF0, 0x54, 0xAE, 0x27, 0xEC, 0x80, 0x28, 0x4B, 0x4B, 0xA8, 0x57, - 0x5C, 0xC3, 0xEE, 0x3A, 0x1F, 0x77, 0xAC, 0x9E, 0xA9, 0x11, 0x71, 0x23, - 0x5B, 0xFB, 0xF6, 0x80, 0x0E, 0x80, 0xCB, 0xC7, 0xE8, 0x1F, 0x8B, 0x09, - 0x45, 0xA0, 0xF6, 0x70, 0xD1, 0x3D, 0x9D, 0x46, 0x00, 0x80, 0x3E, 0x79, - 0x1F, 0x4C, 0xF2, 0x4F, 0xCC, 0x8B, 0x9F, 0x63, 0xCC, 0x01, 0x62, 0xD3, - 0x30, 0x7D, 0xB1, 0x74, 0xB8, 0xF5, 0xB1, 0x0F, 0x13, 0x57, 0xF7, 0x70, - 0x7F, 0x16, 0x6C, 0x27, 0x17, 0x16, 0x49, 0xE6, 0x5F, 0x87, 0xA2, 0x52, - 0x0E, 0x9C, 0xF9, 0xA9, 0xEE, 0x91, 0xF0, 0xB1, 0x9C, 0x32, 0x13, 0x67, - 0x08, 0xFA, 0x0C, 0x62, 0xBF, 0x11, 0xB2, 0x81, 0x9F, 0xFF, 0xC1, 0x0C, - 0xF9, 0x84, 0xBA, 0x85, 0x2E, 0xC2, 0xBC, 0xC0, 0x59, 0x1E, 0x56, 0x62, - 0x58, 0x39, 0x38, 0x6B, 0xFC, 0xC5, 0xC4, 0x9A, 0x97, 0xBC, 0x15, 0xA3, - 0x2E, 0x90, 0xD2, 0x8E, 0x18, 0xDF, 0x51, 0x39, 0x61, 0x99, 0xE4, 0x2D, - 0xA9, 0x50, 0x70, 0x0B, 0x0F, 0x41, 0x20, 0x89, 0x37, 0xFC, 0xE5, 0xD7, - 0x3B, 0x57, 0xF5, 0x94, 0x69, 0x4C, 0xEC, 0x56, 0x1B, 0x9B, 0xA3, 0x73, - 0xC2, 0x6F, 0xA8, 0xFF, 0xF2, 0xEC, 0xD0, 0xD9, 0x79, 0x9F, 0x39, 0x0B, - 0x7C, 0xF2, 0xE2, 0x5E, 0x52, 0x7A, 0xE0, 0x81, 0xE3, 0x54, 0xC6, 0x2D, - 0x86, 0x27, 0x8D, 0x04, 0xC3, 0x63, 0x2E, 0x25, 0x6E, 0x05, 0x8F, 0xFB, - 0xCA, 0x89, 0x18, 0x4D, 0x9B, 0xB9, 0x20, 0xA1, 0x15, 0xA2, 0x33, 0x56, - 0xAB, 0x3F, 0x2D, 0x14, 0x5A, 0x04, 0x5D, 0xBB, 0x7E, 0xE8, 0xF7, 0x4B, - 0xD6, 0x49, 0xE8, 0xAF, 0xE5, 0x10, 0x1F, 0x91, 0x68, 0x7C, 0xA0, 0x55, - 0x24, 0x75, 0x46, 0xAF, 0xE1, 0xCD, 0x75, 0x0D, 0x36, 0xC7, 0xAB, 0x21, - 0xAC, 0xA8, 0x1C, 0xF0, 0x69, 0x6F, 0x38, 0x5E, 0x67, 0x7D, 0x99, 0x72, - 0xB9, 0x39, 0xE9, 0xFB, 0xCF, 0xCC, 0x24, 0x8C, 0x63, 0x6B, 0x6D, 0xBD, - 0x0C, 0xFF, 0x5A, 0x2D, 0xD0, 0x3F, 0x62, 0xE9, 0xFE, 0xC3, 0x50, 0x18, - 0xC1, 0xE9, 0x07, 0xE8, 0xE5, 0x2E, 0xA5, 0x98, 0x53, 0x27, 0x4A, 0x3D, - 0xC9, 0xAF, 0x1B, 0x5E, 0x41, 0x4F, 0x67, 0xFE, 0x84, 0xBB, 0x74, 0x0C, - 0x6C, 0x88, 0x02, 0xFA, 0x37, 0x6A, 0xAD, 0xBC, 0x08, 0xDB, 0xE8, 0xF2, - 0xCD, 0xA4, 0xF0, 0xFC, 0xCC, 0xAD, 0xB5, 0xE7, 0x95, 0x61, 0x93, 0x99, - 0xF1, 0xA3, 0x06, 0xCC, 0x01, 0x8D, 0x45, 0x9E, 0xE1, 0xA6, 0x15, 0xDC, - 0x4A, 0x99, 0x0F, 0x15, 0x34, 0x1E, 0x7E, 0x4F, 0xE5, 0x42, 0xEC, 0xE9, - 0xD3, 0xA3, 0xAD, 0xAB, 0x96, 0x5B, 0x89, 0x94, 0x12, 0xD3, 0xB1, 0x64, - 0x69, 0x5B, 0x55, 0xC6, 0x8C, 0x77, 0xD0, 0x9D, 0x0D, 0xF3, 0x36, 0x79, - 0x49, 0x50, 0xE9, 0xBC, 0x61, 0x62, 0xFA, 0x67, 0xDE, 0x00, 0x87, 0xC5, - 0x95, 0x02, 0xBD, 0xAC, 0x7F, 0x3C, 0x92, 0x49, 0x15, 0xFE, 0xB4, 0x9D, - 0x44, 0xD9, 0x19, 0x10, 0x88, 0xDE, 0xBB, 0xC9, 0xE1, 0xEF, 0xC0, 0xD6, - 0x60, 0xC7, 0x1D, 0x8B, 0xE8, 0xE3, 0xD1, 0xE8, 0x28, 0x5D, 0xEC, 0x49, - 0xEA, 0x79, 0xE4, 0x61, 0x61, 0x7C, 0x81, 0xBF, 0x6D, 0xA1, 0x89, 0x80, - 0x63, 0x83, 0x65, 0xF2, 0x5C, 0xF6, 0xBB, 0xAD, 0xD4, 0x3B, 0x2F, 0xFE, - 0x6F, 0x0A, 0xD6, 0x6E, 0x2D, 0x6E, 0x34, 0xB9, 0x0B, 0xE2, 0x12, 0x8B, - 0x40, 0xFE, 0x0E, 0x24, 0x6C, 0x67, 0xDE, 0x25, 0xCD, 0x48, 0x34, 0x8A, - 0x5B, 0x0D, 0x9B, 0xC4, 0xD3, 0x1C, 0xE6, 0x9D, 0x8C, 0x77, 0xB0, 0x2B, - 0x0C, 0x77, 0x2C, 0x0D, 0xBE, 0xAD, 0xE1, 0x9D, 0x9F, 0x10, 0x84, 0x34, - 0x39, 0x52, 0xB0, 0xB8, 0x1C, 0x02, 0x24, 0x3C, 0xD8, 0x80, 0xD4, 0x40, - 0x63, 0x59, 0xE6, 0x6C, 0x0F, 0xFA, 0xEB, 0xAE, 0xDC, 0x67, 0x47, 0x03, - 0x25, 0x80, 0xCD, 0x4B, 0x21, 0x77, 0x17, 0xBB, 0x19, 0x8C, 0xC1, 0x09, - 0x7E, 0x0F, 0x7D, 0xD7, 0x50, 0xF9, 0xC3, 0xAA, 0x05, 0x10, 0xDD, 0x6B, - 0xD2, 0x96, 0x46, 0x14, 0xC2, 0xA5, 0xD7, 0xF8, 0xED, 0xDA, 0x58, 0x53, - 0xC3, 0x8F, 0xAB, 0x47, 0x91, 0x95, 0x48, 0x0C, 0xDE, 0xED, 0x99, 0x04, - 0x3A, 0xC7, 0xCC, 0xB5, 0x1C, 0xAC, 0x29, 0xAE, 0xFA, 0xA6, 0xA5, 0x57, - 0x65, 0x12, 0x86, 0xBE, 0x72, 0xFB, 0x06, 0x93, 0x49, 0xD0, 0x53, 0x43, - 0xD0, 0xD4, 0xC7, 0x2F, 0x8A, 0x13, 0xEC, 0x95, 0x3B, 0x18, 0xD3, 0x67, - 0x2B, 0xA6, 0xCF, 0x0B, 0xE6, 0x47, 0xF9, 0x3A, 0x32, 0x41, 0x27, 0xC8, - 0xDB, 0xD7, 0xC7, 0xED, 0xB7, 0xCF, 0x75, 0xF1, 0x29, 0xC7, 0x28, 0x97, - 0x07, 0xBA, 0x74, 0x2C, 0x5A, 0xAE, 0x6E, 0x39, 0x51, 0xF3, 0xD2, 0x07, - 0xE2, 0x82, 0xFA, 0xE0, 0xD0, 0x22, 0x6B, 0xC7, 0xDA, 0x90, 0x0D, 0x1B, - 0xB5, 0x17, 0x8A, 0xFA, 0x9E, 0xB5, 0x1A, 0xBD, 0x6F, 0x64, 0x02, 0xF5, - 0x14, 0xB4, 0x63, 0x64, 0xFB, 0x42, 0x99, 0x42, 0xDE, 0x6A, 0x6C, 0xAB, - 0x5B, 0xE5, 0xC4, 0x62, 0x25, 0x66, 0x83, 0xC3, 0x6A, 0x64, 0x4A, 0xD0, - 0xA7, 0x4F, 0x66, 0x21, 0xF9, 0x7C, 0xCC, 0x15, 0x5F, 0x69, 0xB3, 0x2E, - 0x83, 0x26, 0x12, 0xC7, 0xE0, 0xE4, 0xAE, 0x92, 0x44, 0xA4, 0x1F, 0xEE, - 0xBC, 0x06, 0xAF, 0xC4, 0x5A, 0x14, 0x89, 0xCF, 0x46, 0xC2, 0xA8, 0x80, - 0x98, 0xF6, 0xCC, 0xA8, 0x7E, 0xDE, 0x94, 0x31, 0x36, 0xBF, 0x80, 0xA9, - 0x49, 0x62, 0xF9, 0x4B, 0x09, 0xFF, 0x29, 0xCC, 0xB6, 0x5A, 0x84, 0xBC, - 0xCB, 0xF4, 0xBB, 0x19, 0xC1, 0xA7, 0x09, 0x60, 0xF9, 0xD4, 0x0F, 0x84, - 0xE0, 0xDF, 0x9A, 0x0D, 0xCC, 0xCA, 0x14, 0x68, 0x39, 0x74, 0x10, 0x63, - 0x13, 0xC0, 0xAE, 0xD2, 0x2B, 0x3C, 0x6E, 0xC2, 0x29, 0x51, 0xC9, 0xAF, - 0x0E, 0x09, 0x87, 0xAD, 0x82, 0x8A, 0xA6, 0x0F, 0x02, 0x4B, 0xAD, 0x1F, - 0x63, 0xEE, 0xAE, 0x57, 0xE0, 0xE5, 0x51, 0xCC, 0x8C, 0x9A, 0x9E, 0x4F, - 0x67, 0xFB, 0xD4, 0x9F, 0xA5, 0x18, 0x13, 0x9F, 0x24, 0xF4, 0x9E, 0x2B, - 0x52, 0xC0, 0x08, 0xE8, 0x77, 0xEA, 0xBB, 0x01, 0x5A, 0x77, 0x46, 0xEF, - 0x10, 0xAC, 0xA4, 0x70, 0x56, 0x98, 0x5A, 0xBF, 0x4A, 0x82, 0x72, 0x96, - 0xB9, 0xB1, 0x61, 0x78, 0x6D, 0x6E, 0xAD, 0x66, 0x6C, 0x67, 0xB3, 0x45, - 0x8F, 0xF8, 0xFD, 0x1E, 0xAA, 0x7A, 0x13, 0x0C, 0x35, 0x1A, 0x9F, 0x69, - 0x5E, 0x13, 0x8A, 0xB5, 0xE7, 0x17, 0x58, 0x7A, 0xF5, 0xB3, 0x06, 0x48, - 0x16, 0x55, 0xDC, 0xD8, 0xB7, 0x70, 0x3D, 0xB1, 0x04, 0x13, 0xA1, 0x21, - 0x60, 0xF2, 0x15, 0xA8, 0x09, 0x2A, 0xD2, 0xBC, 0x67, 0xAD, 0x23, 0x01, - 0x8E, 0x91, 0xE2, 0x4C, 0x73, 0x41, 0xA4, 0x29, 0x9A, 0x09, 0xFD, 0xC6, - 0x8C, 0xC2, 0x0D, 0x62, 0xFE, 0x70, 0x53, 0x8B, 0x72, 0x07, 0x26, 0x73, - 0xC1, 0xED, 0x07, 0xE0, 0xD3, 0x02, 0x9C, 0x10, 0x30, 0x83, 0x83, 0x50, - 0xDA, 0x11, 0x36, 0x8B, 0x22, 0xE6, 0xF3, 0x90, 0xDE, 0x90, 0x87, 0x6F, - 0x10, 0x41, 0x3B, 0x6E, 0x41, 0x87, 0x0A, 0x56, 0x27, 0x95, 0xCA, 0xFE, - 0xC8, 0xE0, 0x15, 0xD2, 0xEE, 0xB8, 0xBF, 0x35, 0x4F, 0x8B, 0xF3, 0xBA, - 0x37, 0x6F, 0x16, 0x61, 0x80, 0x7E, 0x95, 0x50, 0x27, 0x7A, 0x46, 0x0F, - 0xBF, 0xDC, 0x74, 0xB1, 0x73, 0xE0, 0x50, 0x86, 0x6F, 0x92, 0xB6, 0x41, - 0x5B, 0x2E, 0xE1, 0xCA, 0x8E, 0xDB, 0x8E, 0xEC, 0xD1, 0x8C, 0xF4, 0x74, - 0x7C, 0x9C, 0x1E, 0x24, 0x60, 0xF4, 0xD3, 0x5B, 0xA0, 0x3B, 0xE2, 0x5B, - 0x17, 0xBB, 0x7D, 0x97, 0x57, 0x2A, 0x09, 0x9A, 0x1D, 0x5C, 0x02, 0x63, - 0x4A, 0xC0, 0x0E, 0xA1, 0xA0, 0x96, 0xE5, 0x4D, 0x6D, 0x91, 0x3C, 0x69, - 0x59, 0x80, 0x41, 0x7D, 0xF7, 0x53, 0x93, 0x52, 0x58, 0xF9, 0x11, 0x33, - 0xFF, 0xDB, 0x7F, 0x26, 0x5E, 0x90, 0x5B, 0xB5, 0x42, 0x16, 0xE0, 0x05, - 0x4E, 0x5B, 0x23, 0xAE, 0x35, 0x7D, 0x95, 0x79, 0x4C, 0xD1, 0x77, 0x47, - 0x77, 0x9B, 0x63, 0xED, 0x86, 0x6E, 0x6F, 0x76, 0x54, 0x7C, 0x4A, 0x9D, - 0x0F, 0xAE, 0xE7, 0x41, 0xBD, 0x20, 0x1F, 0x04, 0xF4, 0xA8, 0x90, 0x48, - 0xF7, 0x59, 0xF7, 0x14, 0xCF, 0x1D, 0x18, 0xE5, 0x54, 0x25, 0x4D, 0x87, - 0xE4, 0x61, 0x84, 0x7B, 0xB5, 0xCB, 0xF5, 0x70, 0x78, 0x80, 0xF1, 0x52, - 0x89, 0x2D, 0xEA, 0x72, 0xB3, 0xE7, 0x7D, 0x24, 0x59, 0xB7, 0x22, 0x49, - 0x9F, 0xDA, 0x7D, 0x81, 0x86, 0xAB, 0xD3, 0x80, 0x18, 0x55, 0xF5, 0x21, - 0xC6, 0xE4, 0x9E, 0xE5, 0xBB, 0x12, 0x8D, 0x3E, 0xD1, 0xEE, 0x33, 0x56, - 0xCF, 0x24, 0x37, 0x65, 0x73, 0x41, 0x63, 0xDD, 0x21, 0x4C, 0x85, 0xA3, - 0xB1, 0x74, 0x67, 0xFC, 0x60, 0xC9, 0x14, 0x0D, 0x4F, 0x31, 0x15, 0x87, - 0x70, 0xEA, 0x18, 0x9C, 0xE9, 0x13, 0x09, 0x6A, 0xC5, 0xE2, 0x01, 0x08, - 0xF3, 0x2A, 0xE0, 0x28, 0x42, 0x1B, 0x80, 0x30, 0xC3, 0x87, 0xF8, 0x31, - 0xBC, 0x0C, 0xC7, 0xBA, 0x61, 0x77, 0x85, 0xC7, 0x9B, 0x56, 0x29, 0x48, - 0xCF, 0x65, 0x18, 0x05, 0x2F, 0x8E, 0x23, 0x3D, 0xA3, 0x34, 0xB2, 0x17, - 0xAB, 0x42, 0xE6, 0x88, 0x8C, 0x96, 0xB5, 0x5F, 0x44, 0x20, 0x47, 0xAB, - 0x1F, 0x02, 0xE3, 0xDF, 0xF2, 0xEF, 0xBE, 0x5A, 0xA8, 0x87, 0x98, 0x57, - 0xCE, 0x73, 0x75, 0xAE, 0xA1, 0x51, 0x16, 0xEC, 0x5A, 0x0F, 0xFA, 0xF0, - 0xC6, 0x80, 0xFE, 0x7F, 0xE4, 0x3B, 0x02, 0x27, 0x9D, 0x75, 0xE3, 0x41, - 0x8C, 0x5C, 0x5B, 0x20, 0x40, 0x22, 0xBF, 0x09, 0x79, 0x63, 0xB4, 0xDC, - 0x06, 0x44, 0xE4, 0x5B, 0x09, 0x58, 0xC9, 0x51, 0x38, 0x9D, 0x07, 0x10, - 0x98, 0x75, 0x6A, 0x3B, 0x87, 0x00, 0x76, 0x9D, 0x6C, 0xE9, 0xB0, 0x94, - 0x1E, 0x50, 0x48, 0x26, 0x5E, 0xFB, 0x2D, 0x10, 0x54, 0x8E, 0xA2, 0x50, - 0x03, 0xC6, 0x78, 0x55, 0x86, 0x4E, 0xD4, 0x4B, 0xFC, 0x15, 0x61, 0x4C, - 0x72, 0xFB, 0xCE, 0x21, 0xC5, 0x89, 0x23, 0x00, 0x16, 0x63, 0x73, 0xAD, - 0xB0, 0xE1, 0x94, 0x36, 0x43, 0xFE, 0xA4, 0x37, 0x34, 0x3F, 0xE2, 0xB9, - 0x75, 0x2D, 0x95, 0x72, 0x2C, 0xC8, 0x8A, 0xC5, 0x4B, 0x03, 0x8C, 0xA4, - 0xE8, 0x79, 0x15, 0x38, 0x24, 0x8D, 0x92, 0x0B, 0x91, 0xA4, 0xF3, 0x94, - 0x58, 0x35, 0xD6, 0x6D, 0x14, 0x3E, 0x78, 0x4E, 0x17, 0x21, 0x80, 0x5D, - 0x95, 0xF0, 0x73, 0x7E, 0xA2, 0xDA, 0x3D, 0xD4, 0x33, 0xF4, 0x0A, 0x80, - 0x4A, 0x5C, 0x83, 0x91, 0x6E, 0xE7, 0x13, 0x73, 0x26, 0x94, 0x17, 0xD4, - 0x13, 0xBD, 0x8B, 0x74, 0x25, 0x06, 0x34, 0xA8, 0x98, 0x99, 0x94, 0x1F, - 0xC7, 0xDC, 0x3F, 0x36, 0xF8, 0x24, 0x57, 0x1E, 0xB7, 0x9D, 0x29, 0xA4, - 0xB6, 0x27, 0x1B, 0x31, 0xF3, 0x21, 0x80, 0x60, 0x51, 0xF1, 0x66, 0x10, - 0xBD, 0x15, 0xF5, 0xBB, 0x47, 0x50, 0xCD, 0xC7, 0xEC, 0x05, 0x48, 0xCB, - 0x84, 0x70, 0xB0, 0x58, 0x5F, 0x53, 0x2A, 0x2B, 0x02, 0x42, 0x5C, 0x78, - 0x1C, 0x7C, 0x56, 0xA2, 0xF2, 0x4B, 0xA0, 0x94, 0x8A, 0x84, 0xB0, 0x2D, - 0x9B, 0xF5, 0xA8, 0xC2, 0xE2, 0xE3, 0x20, 0xC5, 0xAE, 0xD6, 0x4F, 0x17, - 0xDF, 0x52, 0x47, 0x8E, 0x6F, 0x6D, 0x41, 0xDB, 0x59, 0xF0, 0xC5, 0x9D, - 0x6D, 0xBD, 0xA0, 0xC9, 0x9D, 0x72, 0x2D, 0x2E, 0x51, 0x10, 0xAC, 0x37, - 0x01, 0xA7, 0xD7, 0x4E, 0xF3, 0x96, 0xD6, 0x79, 0xFD, 0xA0, 0xC4, 0x3F, - 0x38, 0x68, 0xA4, 0x19, 0x01, 0xE6, 0x0B, 0x96, 0x32, 0xA3, 0x48, 0x8B, - 0x4F, 0x77, 0x56, 0x98, 0xB6, 0x85, 0x73, 0xA9, 0x2B, 0x04, 0xED, 0x2F, - 0x13, 0x6A, 0x32, 0x0C, 0xAB, 0x51, 0x54, 0xBE, 0x0B, 0x7F, 0xBD, 0x93, - 0x4E, 0xB1, 0xBB, 0xA9, 0xA8, 0xD4, 0x53, 0x64, 0x83, 0x49, 0x63, 0x64, - 0x5B, 0xD7, 0xB5, 0x02, 0xDD, 0x13, 0x3F, 0xFD, 0x64, 0xF5, 0xC3, 0x18, - 0x97, 0xC7, 0xCF, 0x96, 0x11, 0x63, 0xB3, 0x20, 0x15, 0x81, 0x3D, 0x9A, - 0x52, 0x99, 0xF2, 0xBE, 0x76, 0xD1, 0x1F, 0xF6, 0x0E, 0xD3, 0x7C, 0x55, - 0x42, 0x55, 0x94, 0x5E, 0x10, 0x96, 0x37, 0x4C, 0x2E, 0xAC, 0x9E, 0x30, - 0x40, 0xB9, 0xD0, 0xFC, 0x81, 0xA2, 0x87, 0x34, 0x74, 0x82, 0xA2, 0x88, - 0xDD, 0x30, 0x4D, 0x50, 0xA6, 0x0E, 0x0C, 0x50, 0x0C, 0xB7, 0xB6, 0xC2, - 0x33, 0x7D, 0x73, 0x8C, 0x66, 0x90, 0xC2, 0x42, 0x87, 0x35, 0xD5, 0x4D, - 0xB7, 0xEE, 0x1D, 0x0D, 0xB4, 0xFC, 0xD4, 0x3B, 0xD9, 0xA7, 0xF1, 0x2D, - 0x02, 0x16, 0x89, 0x1B, 0x32, 0xB2, 0x4D, 0x38, 0x61, 0x6C, 0xD3, 0x3B, - 0x53, 0xBF, 0x1E, 0x46, 0xA8, 0x6B, 0x1A, 0x83, 0xB8, 0x3A, 0x2C, 0xCD, - 0x6E, 0xBF, 0xBB, 0xDD, 0x42, 0x71, 0xB9, 0x71, 0x93, 0x4C, 0x3B, 0x24, - 0x3B, 0xBD, 0x6A, 0x78, 0x93, 0x42, 0x6B, 0x5A, 0x24, 0xCF, 0x41, 0x10, - 0xAD, 0x05, 0x3B, 0x7E, 0x90, 0x2C, 0xA7, 0x9C, 0x6B, 0xB5, 0xE0, 0x5E, - 0xB5, 0xA0, 0x3C, 0xCB, 0xD0, 0xCB, 0x48, 0x75, 0xE3, 0x17, 0x86, 0x42, - 0x5A, 0xF7, 0x2E, 0x4C, 0x6C, 0xF2, 0x21, 0x37, 0xEE, 0xB4, 0xE5, 0x30, - 0x6B, 0xA1, 0x4B, 0x31, 0xDB, 0x8C, 0x86, 0xF9, 0x5C, 0xDA, 0xDA, 0x44, - 0x95, 0xEA, 0x26, 0x96, 0xD6, 0x26, 0xAE, 0x23, 0x11, 0xEB, 0x21, 0x34, - 0xFF, 0xB2, 0x8C, 0x9E, 0x9B, 0xBD, 0x27, 0xFB, 0x09, 0x0F, 0xE3, 0x50, - 0x73, 0x8E, 0xAC, 0xE0, 0x05, 0x22, 0x20, 0xD5, 0xF7, 0x4E, 0x72, 0xD0, - 0x4E, 0xF7, 0xC5, 0xC9, 0xE7, 0x25, 0x7F, 0xF9, 0x91, 0x19, 0x68, 0x03, - 0x17, 0x04, 0xD2, 0xBA, 0x4D, 0x94, 0xAF, 0x95, 0xBC, 0x81, 0x57, 0xB6, - 0xD9, 0x56, 0x8F, 0x67, 0x40, 0x24, 0x6D, 0xEC, 0xD5, 0xD1, 0x1E, 0x2E, - 0xFC, 0xE8, 0xBA, 0xAB, 0x80, 0x63, 0x35, 0xC3, 0x38, 0x18, 0x98, 0x71, - 0x55, 0xA7, 0xC8, 0x09, 0xAE, 0xA3, 0xA3, 0x37, 0xA3, 0x96, 0xCE, 0x8F, - 0x0F, 0x12, 0x53, 0xF5, 0x8E, 0x02, 0xB1, 0xBC, 0x56, 0x1E, 0x67, 0x71, - 0xFE, 0xAB, 0xF0, 0x04, 0x5B, 0x87, 0x93, 0x92, 0xB2, 0xAC, 0x47, 0xB6, - 0xEF, 0xBD, 0x55, 0x1D, 0x30, 0xCB, 0xA6, 0x60, 0x13, 0x13, 0xFE, 0x82, - 0x4E, 0x06, 0xA8, 0xAB, 0x2B, 0x40, 0x2E, 0x7C, 0x66, 0x8F, 0xCC, 0x40, - 0x36, 0x20, 0xE9, 0xAF, 0xC6, 0x3A, 0xE2, 0xE2, 0xFE, 0x01, 0x97, 0x7E, - 0xCA, 0x82, 0x20, 0x58, 0x5E, 0xB5, 0x10, 0xE1, 0x99, 0xE3, 0x4F, 0x82, - 0xE3, 0x4D, 0x35, 0xB6, 0x7B, 0x28, 0x37, 0x02, 0x26, 0x00, 0xA1, 0x6C, - 0x7B, 0xA1, 0x48, 0x4F, 0xCB, 0x55, 0x25, 0xB8, 0x6B, 0xDD, 0xB1, 0xAE, - 0xA0, 0xD3, 0xA1, 0x8B, 0x84, 0x9E, 0xF2, 0xB8, 0x53, 0xDC, 0xE0, 0xE4, - 0x6C, 0x5C, 0x63, 0xA8, 0xD7, 0x4F, 0x1C, 0xB6, 0x73, 0xF9, 0x50, 0xA7, - 0x99, 0x30, 0x42, 0x3E, 0x60, 0x49, 0x6A, 0x7F, 0x6F, 0x0A, 0x83, 0xAD, - 0x99, 0x90, 0x00, 0xC3, 0x5A, 0xFD, 0x83, 0xDA, 0xDE, 0x0A, 0x37, 0xC0, - 0x7F, 0xC6, 0x96, 0x61, 0x9A, 0xF8, 0xBF, 0xBF, 0x45, 0x33, 0x3C, 0x17, - 0x48, 0x7B, 0x54, 0xB8, 0x38, 0xAD, 0x88, 0xD7, 0x7C, 0x1B, 0x08, 0x04, - 0xA9, 0x88, 0xDD, 0x1A, 0x7B, 0x53, 0xEF, 0x8F, 0x49, 0xBC, 0xBC, 0x64, - 0x98, 0x17, 0xA0, 0xB2, 0xAE, 0x63, 0x5B, 0x33, 0xE3, 0xED, 0x93, 0x88, - 0x5D, 0xB9, 0x3F, 0xF2, 0x8A, 0xD3, 0x38, 0xD9, 0xD6, 0xC9, 0xFE, 0x13, - 0x92, 0x3B, 0xF0, 0xA5, 0xE4, 0x1A, 0x09, 0x28, 0x70, 0x27, 0x1A, 0xB5, - 0x99, 0xBA, 0x39, 0x2A, 0xBA, 0x8E, 0xAE, 0x79, 0x6A, 0x21, 0xF7, 0xB7, - 0x7D, 0x16, 0x34, 0xA4, 0x5D, 0x0E, 0x97, 0xF5, 0xFC, 0x1A, 0x88, 0xEE, - 0x4A, 0x9E, 0xB9, 0x64, 0x2B, 0xFF, 0x89, 0xC2, 0x45, 0x34, 0xE7, 0xC4, - 0xE0, 0xFC, 0x9E, 0xF8, 0xF6, 0x89, 0x5E, 0x68, 0x53, 0xEC, 0xF0, 0x98, - 0x63, 0x5E, 0x53, 0xA0, 0xBE, 0x42, 0x8E, 0xD9, 0x70, 0x5D, 0x3C, 0xC5, - 0x11, 0x11, 0x20, 0xC1, 0x9B, 0xF4, 0x6E, 0x61, 0x63, 0x4A, 0xB3, 0xE7, - 0x5F, 0x91, 0xC9, 0x2C, 0xFF, 0x1E, 0xCE, 0x25, 0xFE, 0x26, 0x6A, 0xA4, - 0x06, 0xE3, 0x30, 0xCF, 0xFC, 0x9D, 0xE8, 0x0D, 0xFD, 0x41, 0xC6, 0x9F, - 0x20, 0x2E, 0xB0, 0x24, 0x9B, 0xA1, 0xB2, 0x30, 0x75, 0x3F, 0xFC, 0x33, - 0x68, 0x8E, 0x97, 0x33, 0xE5, 0xFE, 0xF8, 0xEC, 0x28, 0xAC, 0xD4, 0x52, - 0xA5, 0x97, 0x23, 0x9B, 0x89, 0xDF, 0x42, 0x38, 0xA2, 0xD9, 0x38, 0x7C, - 0x59, 0x58, 0x78, 0x2D, 0x64, 0x3E, 0xAC, 0xA4, 0x2F, 0x30, 0x55, 0xD2, - 0xE3, 0x4C, 0x4E, 0xA5, 0xEC, 0x4E, 0x5A, 0xF9, 0xAA, 0xB6, 0xB9, 0xBA, - 0xFA, 0x23, 0x41, 0x9D, 0xCA, 0x54, 0xDA, 0x90, 0xDD, 0xC4, 0x68, 0x16, - 0x2E, 0x4F, 0xB5, 0xDC, 0x9A, 0x25, 0xBF, 0x8B, 0xC0, 0x79, 0x0D, 0xCF, - 0xB7, 0xBE, 0xDE, 0x95, 0x59, 0xF0, 0x28, 0x8A, 0x14, 0xD9, 0x90, 0x66, - 0xAA, 0xEB, 0x5F, 0x64, 0x61, 0xD1, 0x7E, 0x4C, 0x45, 0x8E, 0x98, 0x11, - 0x7A, 0x84, 0x81, 0x0A, 0xD2, 0xBA, 0x5D, 0x72, 0x09, 0xA0, 0x05, 0x1E, - 0x16, 0xD4, 0x4A, 0x91, 0xEE, 0xD8, 0x4A, 0x06, 0x4B, 0x5C, 0xEC, 0x79, - 0x28, 0xA3, 0xB3, 0x81, 0x4C, 0x90, 0xF1, 0xB2, 0x29, 0x02, 0x2B, 0xF2, - 0x44, 0x9F, 0xD9, 0x6D, 0x66, 0x33, 0x78, 0x73, 0x23, 0x5D, 0x26, 0x2C, - 0x86, 0x43, 0x9E, 0x69, 0x0A, 0x97, 0x01, 0x8F, 0x64, 0xDA, 0xF9, 0xCC, - 0xC7, 0xA0, 0x59, 0xF0, 0x60, 0xD9, 0x46, 0xAA, 0x77, 0x9F, 0xFC, 0xF3, - 0xBA, 0x66, 0xD4, 0xBE, 0x69, 0x9B, 0xAE, 0x3C, 0xB6, 0x57, 0x8A, 0x30, - 0x53, 0xEC, 0xC6, 0xF8, 0x14, 0x76, 0x84, 0x76, 0x7F, 0x53, 0xA8, 0x14, - 0x8A, 0x55, 0xAE, 0x89, 0xE8, 0x4D, 0x8C, 0x69, 0xC2, 0x56, 0xB7, 0x64, - 0x2A, 0x57, 0x9A, 0x76, 0xC5, 0x77, 0x8A, 0xC8, 0x01, 0x29, 0xB6, 0xB2, - 0xA9, 0x50, 0x43, 0xCD, 0x22, 0xD0, 0xE8, 0xDE, 0x6B, 0xB9, 0x87, 0x18, - 0x70, 0xEF, 0xCB, 0x72, 0xAA, 0x18, 0xB6, 0x42, 0xCE, 0xBD, 0xC4, 0x34, - 0x7C, 0x6E, 0xA7, 0x6F, 0x63, 0x29, 0x16, 0x97, 0x3A, 0x19, 0x11, 0xEF, - 0xB6, 0x47, 0xF0, 0x01, 0xAA, 0x25, 0x4A, 0x50, 0x67, 0xCC, 0x60, 0xF2, - 0x36, 0x06, 0x85, 0x7A, 0x99, 0x50, 0x11, 0x24, 0xDD, 0xA5, 0xC1, 0x1A, - 0xA6, 0x76, 0x62, 0xBB, 0xB6, 0x34, 0xB8, 0x90, 0x37, 0x35, 0xAA, 0x96, - 0xF3, 0xC5, 0xA2, 0x5E, 0x5D, 0x4F, 0x9C, 0x9F, 0x95, 0x99, 0xEF, 0xDE, - 0xCC, 0x89, 0xC5, 0x2E, 0x73, 0xC7, 0xF7, 0xAC, 0xFB, 0x87, 0x95, 0xFE, - 0x20, 0x99, 0x2B, 0x62, 0x5D, 0xDC, 0x61, 0x3B, 0x10, 0x7A, 0x5C, 0xF5, - 0x09, 0xCB, 0xE0, 0xB1, 0x41, 0xB0, 0x7A, 0x90, 0x49, 0x65, 0x2D, 0x3F, - 0x7D, 0x10, 0x6C, 0xDD, 0x5F, 0x04, 0x21, 0x70, 0xCA, 0x13, 0x42, 0x2B, - 0x71, 0x30, 0xE9, 0x40, 0x80, 0xB4, 0xDD, 0xBF, 0xDF, 0x0D, 0x11, 0x21, - 0xC1, 0xE4, 0x51, 0xC8, 0x48, 0xAC, 0x37, 0xD3, 0xDE, 0x32, 0xBE, 0xCF, - 0x61, 0xF6, 0x8A, 0xEB, 0x8C, 0xE1, 0xF7, 0x1D, 0xCD, 0xAA, 0x24, 0x68, - 0x4C, 0xA1, 0x33, 0x8A, 0x0B, 0xA5, 0xA4, 0xC6, 0x94, 0xCD, 0x1E, 0x07, - 0x62, 0xB9, 0x3B, 0x3E, 0xD6, 0x13, 0x6F, 0x54, 0xD9, 0x93, 0x02, 0xD9, - 0x1E, 0x72, 0x9C, 0x6C, 0xC9, 0x97, 0xEF, 0xB6, 0x96, 0xDA, 0x93, 0x7E, - 0x8D, 0x4F, 0x88, 0x0B, 0xA4, 0x7E, 0xF9, 0x0A, 0x7E, 0xD3, 0x2D, 0x8D, - 0x15, 0xCA, 0xC4, 0x14, 0xDC, 0x0E, 0x1B, 0x93, 0x02, 0xC5, 0x7E, 0x31, - 0xC8, 0xCC, 0x59, 0x92, 0x9F, 0x66, 0x43, 0xA5, 0x51, 0xFA, 0x76, 0x92, - 0xDE, 0x20, 0xCF, 0x5D, 0x28, 0xAA, 0x4E, 0x80, 0x61, 0x6D, 0xE2, 0x3C, - 0xD3, 0xAE, 0x55, 0xEC, 0xD1, 0xC2, 0x30, 0xEA, 0xE3, 0xD7, 0x9D, 0xCE, - 0x01, 0x64, 0xD4, 0x85, 0x95, 0xC0, 0x91, 0xBD, 0xB7, 0xAF, 0x78, 0xDB, - 0xAC, 0x3C, 0xCF, 0x18, 0xE3, 0x07, 0x6C, 0xD4, 0x85, 0xD9, 0x04, 0xF5, - 0xFA, 0x43, 0x1C, 0x27, 0x85, 0x1A, 0xF1, 0x86, 0xE5, 0xEE, 0x36, 0x83, - 0x18, 0xE4, 0x40, 0x88, 0x67, 0xA4, 0xF9, 0x0E, 0x2C, 0x6F, 0xA9, 0xB2, - 0xD8, 0x58, 0x89, 0xC1, 0xF5, 0x5C, 0xC0, 0x79, 0xDB, 0xF0, 0xA3, 0x92, - 0xED, 0xBB, 0x7F, 0x76, 0xEE, 0x7D, 0x60, 0x5D, 0x05, 0xB5, 0xBA, 0x4C, - 0x6A, 0x58, 0x8A, 0xBD, 0xF3, 0x69, 0x68, 0x4F, 0xDE, 0xE3, 0x7F, 0xF2, - 0x05, 0x42, 0xC6, 0xDC, 0x7D, 0x04, 0x48, 0x3B, 0x1F, 0x99, 0x7E, 0x6C, - 0x1E, 0x91, 0x86, 0xC8, 0xDF, 0x10, 0x92, 0x3F, 0xBD, 0xC3, 0x43, 0x39, - 0xE3, 0xC1, 0x30, 0x7B, 0xBD, 0x02, 0x1F, 0x16, 0xEF, 0x72, 0x07, 0x99, - 0xB1, 0x3B, 0x6A, 0x2C, 0xBE, 0x41, 0x38, 0xC6, 0xBF, 0xA0, 0xA4, 0xF4, - 0xFF, 0x65, 0x4D, 0xF0, 0x76, 0xF2, 0x2F, 0x02, 0x87, 0x02, 0x13, 0xFD, - 0x19, 0xC6, 0x4F, 0x6B, 0x57, 0x45, 0xCE, 0xDE, 0xEC, 0x24, 0x9E, 0x29, - 0x0D, 0x9C, 0xF4, 0x16, 0x7A, 0x13, 0x33, 0xB9, 0x1C, 0x9E, 0xC1, 0x6B, - 0xE3, 0xAD, 0xFD, 0x06, 0x52, 0xDF, 0x8B, 0xAE, 0x35, 0xA6, 0x1B, 0xE7, - 0x93, 0x24, 0xB5, 0x5F, 0xD1, 0x77, 0xD5, 0x3E, 0xC4, 0x9F, 0x2F, 0x8A, - 0x5C, 0x1C, 0x35, 0xAE, 0x08, 0xBE, 0x22, 0x10, 0x54, 0xDD, 0x6C, 0xC4, - 0x1A, 0xDD, 0xD1, 0x04, 0x16, 0x04, 0x3D, 0x7B, 0x65, 0x92, 0xAC, 0x4B, - 0x51, 0x51, 0x12, 0x96, 0xAB, 0x10, 0x05, 0x78, 0xD8, 0x77, 0x6D, 0x46, - 0x3A, 0x50, 0x3B, 0xB8, 0xB9, 0xF5, 0x64, 0x13, 0xDA, 0xAD, 0x17, 0x2A, - 0xD5, 0xAA, 0x40, 0x56, 0x7F, 0xC5, 0xF4, 0x73, 0xE5, 0xFC, 0x77, 0x96, - 0xFD, 0xC5, 0x96, 0xCE, 0x68, 0x2C, 0x95, 0xDB, 0x0B, 0x98, 0xAC, 0x99, - 0x3F, 0xF9, 0x22, 0x3D, 0xA2, 0xDC, 0x59, 0x30, 0xBF, 0x40, 0x1F, 0x73, - 0xB9, 0xBA, 0xE3, 0x09, 0xF2, 0xDD, 0x51, 0x97, 0x46, 0x2E, 0xB5, 0x1E, - 0xA3, 0x4D, 0x62, 0x9F, 0x20, 0xCA, 0xF5, 0xC3, 0xF5, 0x14, 0xC4, 0xD5, - 0x5C, 0x06, 0x9A, 0xD7, 0x9B, 0x93, 0xD3, 0x0B, 0xA4, 0xDE, 0xCD, 0xAA, - 0xBC, 0xFA, 0x91, 0xD8, 0xF5, 0xA2, 0xC1, 0x31, 0xCD, 0x16, 0xE3, 0x5C, - 0xFB, 0x33, 0x4C, 0x33, 0x02, 0xD1, 0x17, 0x69, 0x29, 0xE1, 0x94, 0x97, - 0xC9, 0x6C, 0x0F, 0x73, 0x5D, 0xCE, 0xBC, 0xF1, 0x76, 0xCE, 0x22, 0xBC, - 0xB5, 0x11, 0xAF, 0x5D, 0x0F, 0x78, 0x54, 0x2E, 0x45, 0xDB, 0x02, 0x58, - 0x7C, 0xE3, 0x39, 0x99, 0x74, 0x9D, 0x11, 0xFD, 0xF6, 0x87, 0x10, 0x47, - 0xA9, 0xF3, 0x3B, 0x08, 0x6E, 0xBC, 0x0C, 0x8E, 0x54, 0x5E, 0x04, 0x58, - 0xF6, 0xD9, 0x66, 0xEC, 0xD9, 0x11, 0x6D, 0x35, 0xAB, 0xB4, 0xE5, 0xDC, - 0xF0, 0xB6, 0x1E, 0x71, 0xAC, 0x5D, 0x92, 0xC1, 0x5C, 0xB1, 0xC7, 0xD0, - 0x0B, 0x10, 0x6E, 0xE2, 0x32, 0xA6, 0x89, 0x42, 0xAD, 0xA6, 0x5C, 0xBA, - 0xAD, 0xB2, 0x0F, 0x47, 0x8C, 0xEF, 0xDD, 0x88, 0xEA, 0x04, 0x70, 0xB5, - 0xFA, 0xD7, 0x22, 0x78, 0xD8, 0xCB, 0x20, 0xDD, 0xE4, 0xFE, 0x84, 0x68, - 0xFD, 0x86, 0x1E, 0xE3, 0x87, 0x7B, 0x74, 0x61, 0xB2, 0x03, 0xC5, 0xA5, - 0x06, 0xED, 0x4E, 0x87, 0x4E, 0x31, 0x0C, 0x0A, 0x2B, 0x49, 0x25, 0xD1, - 0x33, 0xFF, 0xFE, 0xAC, 0x5E, 0x1F, 0xB2, 0x8D, 0xC0, 0x0D, 0x67, 0xAD, - 0x92, 0x64, 0x12, 0xCD, 0x4C, 0x80, 0x68, 0x8B, 0x91, 0xA3, 0xBD, 0x88, - 0xA6, 0x0F, 0xEC, 0x4D, 0x26, 0x1F, 0xD6, 0xB1, 0x8C, 0x5D, 0x6B, 0x25, - 0x7A, 0x98, 0xA7, 0x30, 0x57, 0x7D, 0x9D, 0x31, 0x8B, 0xE0, 0x61, 0xBC, - 0xA1, 0xB5, 0xB6, 0xD3, 0x21, 0xAF, 0x26, 0x7C, 0x53, 0xC2, 0xFB, 0x3E, - 0x82, 0xEC, 0xB3, 0x17, 0x02, 0x82, 0xD7, 0x00, 0x82, 0x0A, 0x28, 0x4B, - 0xDE, 0x55, 0x8E, 0x9E, 0x42, 0xB5, 0x93, 0xA6, 0x0C, 0x54, 0x09, 0x59, - 0xD0, 0x02, 0x68, 0xBE, 0x00, 0x0C, 0x8F, 0x50, 0x73, 0xE9, 0x19, 0x03, - 0xBB, 0x47, 0x65, 0xDE, 0x85, 0x23, 0x8C, 0xDC, 0xBB, 0x5A, 0xB5, 0x59, - 0xC7, 0xA3, 0x1A, 0xDF, 0x10, 0x1E, 0x2C, 0x10, 0xD7, 0x36, 0xAE, 0x1E, - 0x27, 0x78, 0x4D, 0xEE, 0xE6, 0xC0, 0x30, 0xC3, 0x57, 0x0B, 0x5F, 0xFF, - 0x5A, 0xB1, 0x05, 0x73, 0xF6, 0x4D, 0x1C, 0x3E, 0x18, 0x3F, 0x01, 0x43, - 0x47, 0x23, 0xE2, 0x0F, 0xA9, 0x1C, 0xDE, 0xC5, 0xAA, 0x2B, 0x24, 0xAB, - 0x8F, 0xE0, 0xEC, 0x3A, 0x57, 0xBD, 0xBD, 0x47, 0xF4, 0x86, 0x53, 0x7A, - 0xC3, 0x32, 0x20, 0x78, 0x3E, 0x0A, 0xDB, 0xBD, 0x33, 0xA4, 0x62, 0x57, - 0x55, 0x5B, 0xB3, 0x33, 0x48, 0x2E, 0x24, 0xCD, 0x54, 0xB9, 0xD6, 0x7B, - 0x73, 0x51, 0xDB, 0x45, 0xC5, 0x91, 0xDF, 0x49, 0xC0, 0x83, 0x22, 0x2C, - 0x08, 0x9A, 0xE7, 0x24, 0x31, 0xEF, 0xDA, 0x7E, 0x54, 0xE1, 0xAF, 0x43, - 0xB3, 0xBB, 0x57, 0x79, 0x4A, 0x07, 0xCC, 0x50, 0x6D, 0x2F, 0x32, 0x46, - 0x00, 0xE0, 0xCA, 0x4A, 0xE6, 0x2C, 0xE6, 0xCD, 0x41, 0x23, 0xE3, 0xB9, - 0x2F, 0x6A, 0x9B, 0xB7, 0xDE, 0x17, 0x50, 0xEA, 0x38, 0x58, 0x97, 0x40, - 0x34, 0x4A, 0x9A, 0x57, 0x5E, 0x68, 0x1A, 0xA3, 0xF9, 0x53, 0xB3, 0xC3, - 0x5F, 0xC5, 0x20, 0x37, 0xC9, 0x59, 0xFC, 0xE4, 0xFC, 0x3F, 0xD4, 0x5B, - 0xBA, 0xF8, 0xB4, 0xAD, 0x50, 0x65, 0xAE, 0xDC, 0x5D, 0xE6, 0xF9, 0x95, - 0xF2, 0xAC, 0x41, 0xC2, 0x96, 0x0F, 0x3F, 0x1F, 0xE3, 0x33, 0x7A, 0x0B, - 0x13, 0x2D, 0x68, 0x34, 0xAA, 0x23, 0x5B, 0xC9, 0x81, 0x9D, 0xD1, 0x97, - 0x4A, 0x5A, 0x55, 0xD6, 0xF9, 0xCE, 0x7F, 0xA2, 0x05, 0x00, 0x63, 0xF8, - 0xF8, 0xE2, 0xD4, 0x43, 0x2B, 0x92, 0x63, 0x49, 0x3B, 0xE0, 0x05, 0x60, - 0xBA, 0x29, 0x1F, 0x20, 0x09, 0x3E, 0xB9, 0x56, 0xF8, 0x8D, 0xBC, 0x23, - 0xAA, 0xC8, 0xDB, 0xAE, 0xF7, 0xED, 0x15, 0x6E, 0xFE, 0xA8, 0xBA, 0xFC, - 0xD5, 0x5B, 0x85, 0xCC, 0x78, 0xC6, 0x50, 0xA1, 0x96, 0xE8, 0x0D, 0x56, - 0xBD, 0x45, 0x35, 0xFB, 0xF3, 0xF0, 0x1F, 0x87, 0x90, 0xD8, 0x1B, 0x49, - 0x3B, 0x8B, 0xB6, 0x44, 0xF5, 0x08, 0xA7, 0xCB, 0xE6, 0x29, 0x72, 0x01, - 0xC5, 0x73, 0x07, 0xD3, 0x6F, 0x8A, 0x08, 0xBC, 0x35, 0x07, 0x7B, 0xE8, - 0x3F, 0x85, 0xE4, 0x63, 0x23, 0xF2, 0x99, 0x99, 0x52, 0x6D, 0x4F, 0xEC, - 0xAE, 0x92, 0x8A, 0xB1, 0x5D, 0x62, 0x20, 0xFE, 0xC6, 0x8B, 0x5B, 0xA1, - 0xD9, 0x21, 0x1E, 0xB5, 0x26, 0x6C, 0x53, 0x92, 0x9C, 0x82, 0x66, 0xCD, - 0xA0, 0x2E, 0xD2, 0x72, 0xE2, 0xEB, 0xB1, 0x21, 0xCD, 0xC6, 0xC2, 0xB0, - 0xB8, 0x13, 0x96, 0x1B, 0xF3, 0x5E, 0xF8, 0x46, 0xA2, 0xA7, 0x73, 0xFB, - 0x67, 0xCB, 0x5E, 0x24, 0x1E, 0x1A, 0x40, 0xA2, 0x96, 0x9E, 0x72, 0x44, - 0x3F, 0xFA, 0x4C, 0x03, 0x9B, 0x2B, 0x0E, 0x44, 0xDB, 0x0F, 0x2F, 0x55, - 0x82, 0xAF, 0x08, 0x27, 0x85, 0xFB, 0xFE, 0x55, 0x08, 0x28, 0x85, 0x04, - 0x92, 0x0D, 0xC7, 0x25, 0x48, 0x2C, 0x2A, 0x49, 0x31, 0x52, 0x65, 0xB4, - 0xB4, 0xF2, 0xC0, 0xD2, 0x64, 0x0C, 0xB0, 0xEB, 0xC3, 0x6F, 0x11, 0xF6, - 0xB3, 0x8B, 0xB1, 0xA8, 0x1F, 0xB2, 0x69, 0x46, 0x7E, 0x15, 0xFE, 0xCC, - 0xE2, 0x1A, 0xF9, 0x1F, 0x7B, 0x65, 0xDD, 0xA6, 0xD9, 0x10, 0x03, 0xD5, - 0x37, 0x8C, 0x25, 0x41, 0x0B, 0xFF, 0xFF, 0xF8, 0x46, 0xCE, 0x8A, 0x7A, - 0x9F, 0x74, 0x61, 0xD8, 0xD4, 0x64, 0xE6, 0xF1, 0x46, 0xC6, 0x04, 0xC0, - 0xEA, 0xDB, 0x10, 0x40, 0x6B, 0x9B, 0xD0, 0xC1, 0x45, 0x83, 0x1C, 0x74, - 0xA8, 0x3B, 0x5F, 0xC9, 0x45, 0x69, 0x70, 0x90, 0xBD, 0x93, 0x79, 0x82, - 0x71, 0x96, 0x75, 0x23, 0x01, 0x9A, 0x3B, 0x0E, 0xCA, 0x7D, 0xDE, 0x66, - 0x49, 0x57, 0x11, 0xB2, 0xBF, 0xB4, 0x7E, 0x33, 0xEB, 0xA4, 0x4E, 0xE0, - 0x33, 0xCC, 0x44, 0x6F, 0x89, 0xEC, 0xD0, 0x7D, 0x75, 0x79, 0x41, 0x96, - 0x37, 0x9D, 0x5A, 0x82, 0x7A, 0xAA, 0xE8, 0x1A, 0x43, 0xA3, 0xE8, 0x1A, - 0x24, 0x14, 0x29, 0x84, 0xE0, 0x2E, 0xD0, 0x7F, 0xAC, 0x35, 0x52, 0xF2, - 0xE5, 0xD5, 0xA9, 0x7B, 0x9F, 0x55, 0xF3, 0xF1, 0xCB, 0x31, 0x3C, 0xDF, - 0x22, 0x4A, 0x1A, 0x47, 0xB7, 0x5E, 0x3A, 0x8C, 0x1A, 0xF2, 0xE7, 0x0C, - 0x9A, 0xC8, 0xE4, 0xF9, 0xF9, 0x30, 0xC7, 0x00, 0x9F, 0x57, 0xEF, 0x67, - 0xB4, 0x36, 0x0A, 0xF9, 0xB4, 0x3F, 0xE6, 0x20, 0x66, 0x36, 0x88, 0x60, - 0x19, 0x74, 0x8B, 0x29, 0x55, 0x64, 0xF2, 0x6C, 0x9D, 0x3B, 0xF4, 0xE9, - 0xC8, 0x74, 0x48, 0x48, 0xCA, 0x56, 0xFF, 0x74, 0xE7, 0x39, 0x98, 0xD9, - 0x1D, 0xCE, 0x22, 0x98, 0x35, 0xB6, 0xF5, 0xA8, 0x70, 0x51, 0xA8, 0x53, - 0x6C, 0xEB, 0xB7, 0x99, 0xDF, 0x97, 0x34, 0x3C, 0x51, 0x74, 0x4E, 0x1E, - 0xB9, 0xF4, 0x11, 0xB6, 0x3B, 0xAC, 0x5F, 0x32, 0xA3, 0xB8, 0x3E, 0xB3, - 0x78, 0x45, 0xEB, 0x08, 0xB2, 0xAB, 0xA8, 0xD9, 0xBD, 0x32, 0x95, 0xD2, - 0x5C, 0xAE, 0xF2, 0x86, 0x82, 0x1A, 0x53, 0xBB, 0x97, 0xA4, 0x8E, 0x4E, - 0xD4, 0x1B, 0x3D, 0x5B, 0x70, 0x4A, 0xCE, 0x7A, 0x1A, 0xBD, 0xAE, 0xF0, - 0xE4, 0xF2, 0xC0, 0x9D, 0x00, 0xBA, 0xD7, 0xAF, 0xF6, 0x63, 0x7D, 0x7C, - 0xA0, 0x58, 0x29, 0x45, 0xBF, 0x96, 0x8F, 0x5D, 0xE1, 0x79, 0x75, 0x52, - 0x98, 0xBF, 0x8E, 0x2C, 0x9B, 0xAE, 0xA5, 0x1B, 0x2A, 0xB0, 0x8A, 0x89, - 0x25, 0xFE, 0x4D, 0xDA, 0x12, 0xFE, 0xA5, 0x11, 0xC3, 0x72, 0xEB, 0xE5, - 0x91, 0xE0, 0xD8, 0x7E, 0x9B, 0xD1, 0x2D, 0xA5, 0x25, 0x3D, 0x18, 0x53, - 0x68, 0x5C, 0x22, 0x7D, 0x18, 0x0A, 0x12, 0x3D, 0x40, 0x08, 0x40, 0x59, - 0xA6, 0x12, 0x5F, 0x1C, 0x3A, 0xC5, 0xF5, 0xDB, 0xF6, 0x8D, 0x04, 0x90, - 0xF9, 0xB7, 0x43, 0x6D, 0x88, 0x42, 0x0F, 0x5F, 0x97, 0xD0, 0x6E, 0x1B, - 0xA3, 0xED, 0x0E, 0xEA, 0x68, 0xDE, 0x9C, 0x42, 0x91, 0xE3, 0xC2, 0xFC, - 0xB3, 0x06, 0x7F, 0x55, 0x43, 0x07, 0x1B, 0x76, 0xC2, 0x8F, 0xFE, 0x55, - 0xA9, 0x08, 0x83, 0x7F, 0xC5, 0xD9, 0x69, 0xAB, 0x91, 0xCC, 0x68, 0x6C, - 0x7C, 0xCA, 0x45, 0x99, 0x72, 0x15, 0xF1, 0x50, 0x47, 0xC6, 0x10, 0xAD, - 0xB2, 0x91, 0x93, 0xEA, 0x02, 0x57, 0x73, 0x96, 0x91, 0xB3, 0xD1, 0x06, - 0x33, 0x2F, 0x73, 0xB0, 0x9F, 0xB1, 0xC3, 0x44, 0x48, 0x3F, 0xB0, 0x99, - 0xD4, 0xE5, 0x89, 0x03, 0xC6, 0x10, 0x31, 0xBA, 0xD4, 0xD0, 0x93, 0x91, - 0xBC, 0x21, 0xFA, 0xEA, 0x4B, 0xB1, 0x1A, 0x01, 0x88, 0x0C, 0x30, 0x03, - 0x78, 0x8D, 0xF6, 0xF5, 0x99, 0x57, 0x1B, 0x00, 0xBB, 0x08, 0x31, 0x23, - 0xA4, 0xAD, 0x68, 0x59, 0x80, 0xE5, 0x52, 0x59, 0x32, 0xE0, 0xC2, 0x93, - 0x3B, 0x99, 0xC2, 0x0E, 0x03, 0x46, 0x4A, 0x5E, 0x12, 0x24, 0x7F, 0xE8, - 0x35, 0xA5, 0xA3, 0x1A, 0xB6, 0xF6, 0xA5, 0xBE, 0xEA, 0x93, 0x04, 0xFA, - 0x06, 0x0A, 0x9B, 0xEB, 0x0D, 0x9C, 0x52, 0x57, 0xC7, 0x88, 0x59, 0xAF, - 0x2A, 0x72, 0x59, 0x7C, 0xB3, 0xFC, 0x92, 0x1B, 0x6E, 0xE4, 0x76, 0x1F, - 0xD5, 0xFC, 0x4A, 0xF1, 0x2B, 0xEF, 0x64, 0xF8, 0x48, 0x17, 0x43, 0x7E, - 0x1A, 0xC0, 0xAE, 0x3B, 0xC1, 0xC2, 0x37, 0x2E, 0xDC, 0x16, 0xAB, 0x8F, - 0xE7, 0x54, 0x9D, 0x7C, 0xFD, 0x38, 0xC0, 0xE7, 0x7F, 0xF9, 0x5E, 0x54, - 0x56, 0x51, 0xE9, 0x37, 0x95, 0x8A, 0x9E, 0xF0, 0x8F, 0x86, 0x57, 0xE8, - 0x49, 0x1C, 0xCE, 0x26, 0x29, 0x94, 0x8C, 0x31, 0x35, 0xB3, 0xD5, 0x7A, - 0x22, 0x36, 0xFB, 0x8A, 0x65, 0x21, 0xED, 0x02, 0x0D, 0x97, 0x92, 0xD5, - 0x37, 0x6E, 0x25, 0xAC, 0x23, 0xC2, 0x92, 0xCF, 0xF4, 0x11, 0x9B, 0x04, - 0x58, 0x31, 0x9C, 0xB6, 0xFA, 0xF8, 0x60, 0xDF, 0xA1, 0xE0, 0x53, 0x5F, - 0x78, 0x5D, 0x27, 0x02, 0xD7, 0x60, 0xD3, 0x78, 0xF6, 0xF8, 0x0D, 0xA7, - 0x9F, 0x07, 0x91, 0xAB, 0xDC, 0xB6, 0xB4, 0x8E, 0xD3, 0xCE, 0x44, 0x30, - 0xEE, 0xEC, 0x94, 0x32, 0xB0, 0x0C, 0x49, 0x07, 0x88, 0x76, 0x67, 0xC0, - 0xD7, 0x46, 0x84, 0x1F, 0x07, 0xBA, 0x1A, 0xD6, 0xB9, 0x3B, 0xBF, 0xD1, - 0x81, 0xF0, 0xE0, 0xB8, 0xB4, 0xE8, 0x00, 0x20, 0x74, 0xA2, 0x2D, 0x25, - 0x40, 0xE6, 0x97, 0x0C, 0xCA, 0xCF, 0xE6, 0xCD, 0x47, 0x9A, 0xAC, 0xD8, - 0x68, 0x96, 0x80, 0x3F, 0x1C, 0x2E, 0x22, 0x8F, 0x34, 0x37, 0xCC, 0x7A, - 0xC5, 0x30, 0x24, 0xB7, 0x98, 0x25, 0x62, 0x41, 0x6C, 0x9B, 0x38, 0x51, - 0x91, 0x99, 0x98, 0x61, 0x54, 0xE7, 0x56, 0xD0, 0x76, 0x4D, 0xFB, 0xEB, - 0xE3, 0x7A, 0x85, 0xCF, 0x18, 0x31, 0x6D, 0xD8, 0x58, 0x17, 0x40, 0x18, - 0x9F, 0xED, 0x01, 0xBF, 0x68, 0x6D, 0x5E, 0x3D, 0xE7, 0x02, 0x37, 0xF8, - 0x11, 0x71, 0x2D, 0x1A, 0xD4, 0x7E, 0xC6, 0xBD, 0x48, 0xB9, 0xE5, 0xF1, - 0xF5, 0x9C, 0x6B, 0x34, 0xC4, 0xB8, 0xB2, 0x24, 0x04, 0x9E, 0xFC, 0x02, - 0x99, 0x5E, 0xF6, 0x3B, 0x37, 0xAA, 0xA6, 0x54, 0xAB, 0x34, 0x46, 0x26, - 0xF5, 0xC7, 0x5E, 0x06, 0xFA, 0x6E, 0x6E, 0xB1, 0x6E, 0xBC, 0xF1, 0x64, - 0xDB, 0x86, 0x07, 0x69, 0x35, 0x51, 0x72, 0xCE, 0x8B, 0x3C, 0xE5, 0x1D, - 0xB0, 0x54, 0xCD, 0xDE, 0x29, 0x52, 0x72, 0x7F, 0xDF, 0xA0, 0xE7, 0x75, - 0xDA, 0xED, 0x05, 0xE9, 0x5E, 0xFE, 0x7F, 0xE5, 0xEF, 0x3B, 0x21, 0x0E, - 0xD0, 0x08, 0xE7, 0x7F, 0x77, 0x69, 0xF3, 0x5D, 0x00, 0xB1, 0x51, 0xC4, - 0x0C, 0xBA, 0x8D, 0xC2, 0x5E, 0x36, 0xE9, 0xF7, 0xCC, 0x50, 0xEE, 0xD8, - 0xF9, 0x5E, 0x53, 0x26, 0x49, 0x7B, 0xAD, 0xE2, 0x80, 0xDF, 0xBE, 0x0D, - 0xD1, 0x6A, 0x86, 0x35, 0x34, 0x6D, 0x35, 0x6D, 0x2F, 0xA9, 0xAC, 0x14, - 0xE7, 0x06, 0xB5, 0x75, 0xED, 0x5A, 0xF5, 0x5B, 0xE1, 0xA5, 0x64, 0x55, - 0x0F, 0x72, 0x1A, 0x43, 0x70, 0x48, 0x6B, 0x13, 0xC1, 0x18, 0x2C, 0x50, - 0xC7, 0xCF, 0x7D, 0x69, 0x2C, 0x20, 0xD3, 0xEE, 0xE0, 0xB7, 0x29, 0x97, - 0xB2, 0x89, 0xF8, 0xAF, 0x4B, 0x4D, 0xBB, 0x44, 0xFB, 0xC6, 0x28, 0x1D, - 0xD3, 0x05, 0xD2, 0xF5, 0x59, 0x2D, 0x92, 0x7D, 0xEC, 0xB0, 0x81, 0x76, - 0x76, 0x7A, 0xF8, 0x09, 0x8E, 0x67, 0x5A, 0xAC, 0x77, 0x4C, 0x64, 0x4D, - 0x6B, 0x61, 0xE9, 0x27, 0x85, 0x91, 0x57, 0xF9, 0x45, 0xF0, 0xFC, 0xCC, - 0x11, 0x0E, 0x6D, 0x84, 0x8F, 0x21, 0xE4, 0xB2, 0xA7, 0x7B, 0x9B, 0x31, - 0xF9, 0xEF, 0x45, 0xE1, 0x3F, 0x74, 0x10, 0xEA, 0xF5, 0xBF, 0x65, 0x7E, - 0xC8, 0xCF, 0x01, 0xBD, 0x40, 0x41, 0x32, 0x9D, 0x3E, 0xC0, 0x00, 0xC1, - 0x9E, 0x6A, 0xE2, 0x54, 0xA1, 0x0D, 0xB3, 0x84, 0x3A, 0xD4, 0x08, 0xC7, - 0x4D, 0x6A, 0x01, 0xC5, 0xD3, 0xB9, 0x80, 0xB9, 0x3C, 0xD1, 0x81, 0xB7, - 0x5D, 0x8D, 0x37, 0xD4, 0x3C, 0x5A, 0xDC, 0xC9, 0xDD, 0x84, 0x4F, 0x56, - 0xBC, 0xCC, 0xA5, 0x0D, 0x9A, 0x53, 0x9D, 0xCC, 0x7A, 0x52, 0xA7, 0xAE, - 0x3A, 0x7F, 0x4E, 0xE1, 0x63, 0xAE, 0xFF, 0x0E, 0xA7, 0x7A, 0x3B, 0x05, - 0x0A, 0x53, 0xC5, 0xAC, 0xD3, 0x58, 0xB5, 0xB6, 0xE1, 0xC1, 0x8B, 0x1C, - 0xEF, 0x77, 0xEB, 0x2A, 0xAF, 0x41, 0xDA, 0x4D, 0xBC, 0xC5, 0x37, 0x27, - 0xCD, 0x20, 0xBD, 0xA9, 0x83, 0x64, 0xA6, 0x28, 0xDE, 0x1C, 0xD7, 0x7A, - 0x98, 0xEA, 0x55, 0x3D, 0xE2, 0x59, 0x2F, 0x4E, 0x96, 0xEE, 0xB2, 0xAF, - 0xAA, 0xD3, 0xC7, 0x03, 0xEB, 0x47, 0x37, 0xF5, 0x3C, 0x6A, 0x07, 0x88, - 0x20, 0x9D, 0x2A, 0xD8, 0xED, 0x0F, 0x38, 0xB7, 0x55, 0x3E, 0x99, 0x67, - 0x8A, 0x80, 0x0F, 0x20, 0x38, 0xC2, 0x3E, 0x21, 0x65, 0x07, 0x62, 0x7D, - 0x56, 0xE2, 0x61, 0x3E, 0x1F, 0x29, 0x20, 0x06, 0x2E, 0xB4, 0xEA, 0x23, - 0x72, 0x91, 0xB6, 0x2B, 0x78, 0xB1, 0x01, 0xF0, 0x25, 0x0E, 0x6F, 0xD0, - 0x3A, 0x98, 0x14, 0x4B, 0xF7, 0x18, 0x27, 0x70, 0xBF, 0x89, 0x29, 0xF2, - 0x0C, 0xFA, 0xAC, 0x26, 0x73, 0xBC, 0xAA, 0x21, 0x5C, 0x0A, 0xC4, 0xF6, - 0x95, 0x10, 0xA3, 0x90, 0x46, 0x49, 0x5C, 0x53, 0x25, 0x95, 0x93, 0x80, - 0x0F, 0xF3, 0xB5, 0xA1, 0x7F, 0x27, 0xD5, 0xF2, 0x9D, 0x41, 0xA0, 0x34, - 0xAB, 0xDC, 0xD2, 0x8F, 0xA4, 0xBC, 0xE8, 0x54, 0x06, 0x60, 0x13, 0x6D, - 0x9B, 0x74, 0x57, 0x82, 0x1C, 0x0D, 0x1F, 0xDB, 0x54, 0xC3, 0x4F, 0x0C, - 0xC3, 0x99, 0x0F, 0xF6, 0x6B, 0x6A, 0x72, 0x4F, 0x2C, 0x01, 0x0C, 0x91, - 0xDC, 0x06, 0x05, 0xA7, 0xCC, 0xD4, 0x6C, 0xB3, 0x35, 0xAF, 0x10, 0xDE, - 0xEE, 0xE6, 0x42, 0x93, 0x11, 0x41, 0x66, 0x86, 0x2F, 0xD6, 0xCF, 0xC3, - 0xA7, 0x61, 0x24, 0xD0, 0xC8, 0x9D, 0x8B, 0x01, 0x68, 0xF7, 0x54, 0x10, - 0x5C, 0xE7, 0x01, 0x49, 0xA3, 0x4D, 0x5D, 0x97, 0xEA, 0x79, 0xA8, 0xFA, - 0x09, 0x0F, 0xAD, 0x93, 0x16, 0xCD, 0x75, 0x6B, 0x70, 0x79, 0xDB, 0xC3, - 0xC8, 0x04, 0xE1, 0xD6, 0xDA, 0x11, 0x8E, 0x4B, 0xB6, 0x6E, 0x60, 0x5D, - 0x21, 0xAA, 0xB0, 0xC0, 0xA0, 0xCD, 0xC7, 0x81, 0x92, 0x0F, 0xF3, 0xBC, - 0xA3, 0x80, 0x5C, 0x54, 0xCA, 0x05, 0x9C, 0x75, 0x5B, 0x80, 0x3E, 0x66, - 0x76, 0x65, 0xAA, 0x96, 0xE3, 0x6E, 0x9A, 0x6C, 0x09, 0xEC, 0x74, 0xF3, - 0x95, 0x7A, 0xA8, 0x0F, 0x4D, 0x08, 0x1B, 0x39, 0x7F, 0xA3, 0x27, 0xA3, - 0x50, 0x4F, 0xCA, 0x1A, 0xDA, 0x40, 0xFE, 0x6F, 0x63, 0xFB, 0xB6, 0xBC, - 0x03, 0x8F, 0xBD, 0x4A, 0x95, 0xE2, 0xA1, 0xCE, 0x1E, 0xFA, 0xE6, 0xF0, - 0x6D, 0x65, 0x7E, 0x03, 0x6C, 0xEF, 0x10, 0x88, 0x2F, 0xC3, 0x35, 0xFC, - 0x67, 0xDB, 0xEF, 0xF3, 0xA1, 0xBC, 0x5B, 0x12, 0x9C, 0x4C, 0xFF, 0xD9, - 0x5E, 0x53, 0x4E, 0xEC, 0x9C, 0x67, 0x9F, 0xED, 0x24, 0x75, 0x9D, 0xC5, - 0xE0, 0xCB, 0x74, 0x89, 0x0D, 0x0B, 0x3B, 0x85, 0x24, 0x12, 0xAA, 0xF8, - 0x22, 0x32, 0xAC, 0xDD, 0x3B, 0xC6, 0x90, 0x6F, 0xEF, 0xBB, 0x72, 0xEF, - 0xCA, 0x0D, 0xB1, 0x49, 0x30, 0x9B, 0xE3, 0xBC, 0x50, 0x8D, 0x8D, 0xE0, - 0x21, 0x79, 0x64, 0x89, 0x01, 0x59, 0xEF, 0xD6, 0x0C, 0x83, 0xED, 0xA4, - 0x23, 0xCB, 0x41, 0xC5, 0x4D, 0x10, 0xC4, 0xCF, 0xC2, 0x2F, 0xC7, 0xA3, - 0xD9, 0x03, 0xF5, 0x11, 0xD4, 0x2C, 0xC5, 0x31, 0x62, 0xF6, 0xAF, 0x90, - 0x39, 0x3D, 0xC8, 0xCB, 0x9F, 0x98, 0xCD, 0x00, 0xBD, 0x0E, 0x80, 0xE4, - 0xDF, 0xE7, 0x66, 0x00, 0x19, 0xA4, 0x8D, 0x40, 0x1A, 0x1E, 0xED, 0x2B, - 0xD2, 0xAB, 0xDC, 0x6E, 0x0F, 0x0A, 0xD4, 0xD7, 0x44, 0xC7, 0x74, 0x85, - 0xC2, 0xF2, 0x63, 0x96, 0x62, 0x90, 0x56, 0x0D, 0x3B, 0x27, 0x1A, 0xB1, - 0xBF, 0x9F, 0x58, 0x07, 0xF1, 0xF5, 0x3E, 0xAF, 0x07, 0x00, 0x76, 0xA9, - 0xB7, 0x38, 0x7A, 0xBC, 0xF8, 0xD7, 0x83, 0xF7, 0x17, 0x9F, 0xD5, 0xD5, - 0x0A, 0x34, 0xBE, 0x07, 0x28, 0xFB, 0xA9, 0x00, 0xC3, 0x2A, 0xD0, 0x32, - 0xC6, 0xAD, 0x4A, 0x58, 0x5E, 0xD9, 0xAD, 0x4D, 0x86, 0x14, 0x1D, 0x3E, - 0xEB, 0xE9, 0xE5, 0x7D, 0xD0, 0x95, 0x33, 0x54, 0xEC, 0xC1, 0x72, 0x8B, - 0xD1, 0x5A, 0x23, 0xBF, 0xB8, 0xD0, 0x85, 0x6E, 0x38, 0x93, 0xD7, 0xD4, - 0xE9, 0x7C, 0x03, 0xC7, 0x21, 0x3F, 0x38, 0x36, 0xFB, 0xF5, 0xAD, 0xF4, - 0xCA, 0x1A, 0x03, 0x82, 0x9B, 0x3B, 0xEB, 0xB0, 0x0F, 0xE1, 0xEF, 0x98, - 0x6D, 0x76, 0x8C, 0x1E, 0xDC, 0xBA, 0x45, 0xE0, 0xE9, 0xAE, 0xC7, 0xC9, - 0xAC, 0x91, 0xE7, 0xB5, 0xD1, 0x18, 0xFA, 0x56, 0x5A, 0xA1, 0x92, 0xF9, - 0x2C, 0x9C, 0x06, 0x4F, 0x34, 0xDD, 0x80, 0xB5, 0xF4, 0x5F, 0x7E, 0xE0, - 0xAF, 0xAB, 0xDE, 0x95, 0x72, 0x7F, 0xCD, 0x5D, 0x29, 0x54, 0x6A, 0xA8, - 0x13, 0x5B, 0xDB, 0xCB, 0x30, 0xEE, 0x56, 0xD3, 0x45, 0x8E, 0xCB, 0x59, - 0xDA, 0x07, 0xED, 0xEC, 0x43, 0x5E, 0x17, 0x44, 0xAF, 0xBC, 0x81, 0x5C, - 0x4B, 0xDB, 0xAE, 0xA0, 0x46, 0x19, 0xA8, 0x61, 0x35, 0x9F, 0x17, 0xB3, - 0xAF, 0xCC, 0x22, 0xC6, 0x0B, 0x78, 0x58, 0xE9, 0x87, 0xE2, 0x2D, 0x96, - 0xF0, 0xA9, 0x62, 0x12, 0x35, 0xD0, 0x46, 0x6C, 0x61, 0xAE, 0xB9, 0x5D, - 0x5A, 0xDE, 0x8B, 0x7F, 0xAC, 0x9E, 0x29, 0xA1, 0xEA, 0xC7, 0x1B, 0x24, - 0x9E, 0x08, 0x48, 0xBD, 0x23, 0xF6, 0xAB, 0x4E, 0xE9, 0xDE, 0xAF, 0x4C, - 0x79, 0xCC, 0x52, 0xB2, 0xAC, 0xF4, 0x01, 0xA9, 0xA8, 0x02, 0x9B, 0x14, - 0x86, 0x4B, 0xEE, 0x94, 0xA8, 0x34, 0x6C, 0x00, 0x4F, 0x4C, 0xE1, 0x6D, - 0xF9, 0x19, 0x8F, 0x36, 0x5E, 0x22, 0x5D, 0xB7, 0x03, 0x62, 0x7C, 0x4D, - 0xC4, 0xF0, 0x4C, 0x3C, 0x5F, 0xBD, 0x0E, 0xB0, 0x74, 0x14, 0x08, 0xEE, - 0x0E, 0x06, 0x65, 0xAB, 0x69, 0x7A, 0x70, 0x67, 0xC2, 0x12, 0x04, 0x45, - 0xF2, 0xC8, 0xD7, 0x80, 0x7F, 0xDB, 0xB5, 0xD0, 0xF7, 0xAB, 0x62, 0x7A, - 0xFA, 0xD6, 0x1A, 0x9E, 0x14, 0x4C, 0x4A, 0x6C, 0x75, 0x81, 0x37, 0xEF, - 0x68, 0x4A, 0x5D, 0x23, 0xDD, 0x7E, 0xF5, 0xDD, 0x9E, 0xEF, 0xB3, 0xC8, - 0x3F, 0x18, 0x65, 0x42, 0x14, 0x68, 0x77, 0x56, 0x24, 0x8C, 0xAD, 0x7A, - 0xC3, 0x1D, 0xB3, 0xAA, 0x3C, 0x90, 0x38, 0x65, 0xA2, 0x6A, 0x42, 0xD9, - 0x4D, 0xA1, 0xAA, 0x04, 0xA5, 0xE6, 0x36, 0xF4, 0xA3, 0x18, 0xA3, 0x9B, - 0x8C, 0x9A, 0x5E, 0xAF, 0x6D, 0xDC, 0x6A, 0xD3, 0x61, 0xB7, 0x59, 0x2C, - 0xF4, 0xE1, 0x16, 0xFF, 0xFC, 0x3D, 0xBC, 0x2F, 0xD6, 0xC1, 0xEE, 0xBD, - 0x9B, 0x48, 0x11, 0x90, 0x7B, 0xED, 0x58, 0x9B, 0x84, 0x57, 0x85, 0xB3, - 0xB3, 0x65, 0x14, 0x08, 0x14, 0x8F, 0x71, 0xF2, 0x50, 0x38, 0x7C, 0xCE, - 0xEE, 0x47, 0xBD, 0xFD, 0x27, 0x6B, 0x07, 0xB7, 0xB2, 0xBB, 0x05, 0xB0, - 0x4F, 0xB5, 0x94, 0xA0, 0x30, 0x89, 0x97, 0xD2, 0x2E, 0xE1, 0xCC, 0xAC, - 0xDA, 0x95, 0x2F, 0x2E, 0xDD, 0xA9, 0xA9, 0xD0, 0xC6, 0xC3, 0x77, 0xB8, - 0xBA, 0x19, 0xD2, 0x66, 0x91, 0xB6, 0xA8, 0x4D, 0x34, 0xC5, 0xE3, 0xC9, - 0x4B, 0x8C, 0x49, 0x68, 0xD2, 0x47, 0xC5, 0x8C, 0x10, 0xE4, 0xBB, 0x40, - 0x04, 0x7B, 0x26, 0x34, 0x75, 0x53, 0xC5, 0xA5, 0x57, 0x91, 0x11, 0x81, - 0x49, 0x79, 0x0F, 0xE9, 0x95, 0x33, 0x6C, 0xF2, 0x2F, 0x2A, 0x07, 0x43, - 0x71, 0xAD, 0x7B, 0x2C, 0x99, 0xFD, 0x4E, 0xC0, 0x8C, 0xC8, 0x69, 0x12, - 0xF9, 0x1F, 0x11, 0xFA, 0x28, 0x80, 0xC7, 0xEE, 0x50, 0x63, 0x6D, 0x08, - 0x88, 0x9D, 0x6C, 0x2E, 0x05, 0x54, 0xC2, 0x0B, 0x26, 0x69, 0xAB, 0xA5, - 0xAD, 0xC1, 0xFD, 0xD9, 0x1D, 0xE6, 0x85, 0xD5, 0x71, 0xB6, 0xA9, 0xE9, - 0x10, 0xB7, 0x2F, 0x1E, 0x12, 0x9C, 0x41, 0x14, 0xAF, 0xE0, 0x07, 0x8C, - 0xF2, 0xA3, 0x7F, 0xA4, 0x94, 0x91, 0xF9, 0x41, 0x62, 0x8B, 0xE9, 0xA4, - 0x11, 0x78, 0x9D, 0x75, 0x33, 0x01, 0xBD, 0x7F, 0x1E, 0x4F, 0x2F, 0x80, - 0x7A, 0xF9, 0x70, 0x84, 0xE6, 0x45, 0xDE, 0x76, 0xD8, 0x36, 0x5C, 0xC1, - 0xB9, 0x42, 0x59, 0x85, 0x9C, 0x60, 0x5F, 0x29, 0x03, 0x34, 0xE8, 0x65, - 0xEB, 0x99, 0x7B, 0xCD, 0x3A, 0x9C, 0xB6, 0x9E, 0xA9, 0xBA, 0x7D, 0x6D, - 0x9D, 0x27, 0xDD, 0xBE, 0xD4, 0xF9, 0xB5, 0xF8, 0x66, 0xD5, 0xAC, 0x27, - 0x9D, 0x8F, 0x72, 0x04, 0x1D, 0xA3, 0x91, 0x9E, 0x3C, 0xBA, 0x4B, 0xF7, - 0x58, 0x06, 0xBD, 0xE6, 0x8F, 0xB5, 0xA5, 0x8F, 0x7F, 0x1C, 0xF9, 0xD9, - 0x2E, 0xD6, 0xB0, 0x52, 0x2D, 0x23, 0x8B, 0x8E, 0xD7, 0xE8, 0xFF, 0x5E, - 0x04, 0x4A, 0xC4, 0xDA, 0x95, 0xA4, 0x91, 0xFF, 0xCB, 0x36, 0x38, 0xEE, - 0x47, 0xB7, 0x51, 0xCD, 0x80, 0x37, 0x0D, 0x06, 0xB6, 0x56, 0x19, 0xFB, - 0xAF, 0x4E, 0x94, 0x57, 0x12, 0xCC, 0x46, 0xD4, 0x16, 0x59, 0xF4, 0x83, - 0xEF, 0x3C, 0x7C, 0xE3, 0x50, 0x61, 0x69, 0xB3, 0xC7, 0xB5, 0x96, 0xDB, - 0x89, 0x6C, 0x27, 0xA6, 0x48, 0x67, 0x9F, 0xE8, 0x31, 0x01, 0x6D, 0x16, - 0xD4, 0x8A, 0xFF, 0x93, 0x47, 0x9D, 0xC6, 0x2C, 0x53, 0x18, 0x01, 0x09, - 0x09, 0x35, 0xFD, 0xAA, 0x43, 0x1B, 0xC0, 0xD7, 0x9D, 0x84, 0x01, 0x4D, - 0x08, 0x51, 0x76, 0xF0, 0x21, 0x21, 0x74, 0x1D, 0xB6, 0x97, 0x0C, 0xEE, - 0xC8, 0xCA, 0x00, 0x87, 0x52, 0xD9, 0x50, 0xD3, 0x84, 0xC9, 0xF6, 0xB3, - 0x3E, 0x69, 0xB8, 0x7A, 0xDF, 0x10, 0x02, 0xE9, 0xB1, 0x4E, 0xF7, 0x81, - 0x6D, 0x3A, 0x6E, 0x5B, 0x14, 0x78, 0xBF, 0x0E, 0x50, 0xB8, 0x63, 0x8B, - 0x1F, 0x5F, 0xEB, 0xEA, 0x5C, 0xBB, 0xE8, 0x87, 0x07, 0x60, 0x50, 0x13, - 0xE1, 0x36, 0xD9, 0x54, 0xEA, 0xDD, 0x9B, 0x9B, 0x53, 0xEF, 0xFD, 0xD6, - 0x92, 0x88, 0x90, 0x50, 0x18, 0xD2, 0xAA, 0x67, 0xFF, 0xF4, 0x95, 0x06, - 0xC4, 0x36, 0xB1, 0x38, 0x74, 0xAA, 0xFD, 0x05, 0xC8, 0x0E, 0x59, 0xB3, - 0xBA, 0xD3, 0x83, 0x84, 0x3B, 0x96, 0x9E, 0x8D, 0xF4, 0xE2, 0xCA, 0x2A, - 0x77, 0x0B, 0xD6, 0xE1, 0x2E, 0x37, 0x88, 0x0E, 0xD9, 0x13, 0xC8, 0xF8, - 0x6D, 0xFC, 0x70, 0x95, 0xF5, 0x83, 0x02, 0xA2, 0x0F, 0x75, 0xD4, 0xE0, - 0xEC, 0xFD, 0x4A, 0x82, 0xDD, 0x87, 0x1D, 0xC4, 0x57, 0x96, 0x54, 0xDB, - 0x36, 0x07, 0x11, 0x0C, 0x0B, 0x94, 0xD0, 0xF4, 0x97, 0x75, 0xF9, 0x1D, - 0xC4, 0x5D, 0x34, 0x19, 0x38, 0xE1, 0x2A, 0x23, 0xBD, 0x3B, 0xE6, 0x8F, - 0xC2, 0x0A, 0x2B, 0x1D, 0xFD, 0x2E, 0x68, 0xBC, 0x11, 0xA4, 0xA1, 0x87, - 0x98, 0x4E, 0x71, 0x1C, 0xBE, 0x19, 0x3F, 0xFC, 0x17, 0x24, 0x52, 0xA5, - 0xA3, 0x16, 0xD1, 0xAD, 0x0F, 0xF8, 0x57, 0x9F, 0x7B, 0x8E, 0xD0, 0xC2, - 0x3F, 0x78, 0x43, 0xDC, 0x58, 0xEA, 0xE2, 0x5B, 0x71, 0x66, 0x46, 0x20, - 0x28, 0x01, 0xFC, 0x41, 0xAF, 0x19, 0x55, 0xA8, 0x8F, 0xB0, 0x08, 0x91, - 0x9C, 0xA5, 0x4C, 0x10, 0xA1, 0xD5, 0x6C, 0x9E, 0x85, 0x68, 0x55, 0x5E, - 0x07, 0x7B, 0xF6, 0xA3, 0x91, 0xEC, 0x11, 0xA7, 0xE7, 0x2C, 0x6D, 0xF8, - 0x73, 0x26, 0x53, 0xB5, 0x44, 0x2C, 0x7E, 0x9B, 0xDD, 0x78, 0x24, 0xBA, - 0xB9, 0xE5, 0xB2, 0xD1, 0x0E, 0xE6, 0xC8, 0x4D, 0x1F, 0x14, 0x32, 0x76, - 0x1C, 0xBC, 0xE5, 0x1F, 0xC6, 0x81, 0x0E, 0x38, 0xD9, 0xB0, 0xC3, 0x89, - 0xE7, 0x51, 0xE2, 0x6D, 0xB5, 0x4C, 0x10, 0x3B, 0xAE, 0x9F, 0x07, 0x6C, - 0x88, 0x52, 0x09, 0x06, 0xA5, 0x5C, 0x1A, 0x2D, 0x2F, 0x3F, 0x90, 0x2D, - 0xB9, 0xB7, 0x85, 0x2F, 0xC0, 0xE0, 0x60, 0x4A, 0x7D, 0x24, 0xC3, 0xCD, - 0x9C, 0x15, 0x37, 0x5A, 0xF0, 0x56, 0x58, 0x9B, 0xA6, 0xB6, 0x0A, 0xED, - 0x9E, 0x21, 0xF3, 0xA8, 0x53, 0x78, 0x8C, 0xB4, 0x84, 0x41, 0x02, 0xC4, - 0xB7, 0xF5, 0x4B, 0xB2, 0x98, 0x9D, 0x89, 0xB8, 0xAD, 0xE3, 0x5E, 0x84, - 0xB9, 0xDB, 0xC7, 0xA8, 0xC9, 0x20, 0x91, 0x05, 0x8E, 0x4B, 0x6F, 0x74, - 0x1D, 0xC9, 0x6D, 0x2A, 0x4A, 0xF1, 0x5E, 0xD1, 0x6B, 0xFA, 0xF2, 0x4B, - 0xC6, 0x72, 0xB5, 0x99, 0x05, 0xEF, 0xFF, 0xE3, 0x00, 0x97, 0xE1, 0xB6, - 0x07, 0x1F, 0xBC, 0x95, 0xCD, 0x1F, 0xDC, 0xD5, 0x93, 0x62, 0x7C, 0xA0, - 0xEC, 0xCE, 0x9A, 0xC4, 0x55, 0x9C, 0x79, 0x23, 0x2A, 0x61, 0x17, 0x46, - 0x86, 0x9E, 0x81, 0xC5, 0x40, 0x0D, 0x63, 0xBC, 0xAC, 0x52, 0xE8, 0x69, - 0xBE, 0x7C, 0x76, 0xE8, 0x12, 0xB3, 0x66, 0x3F, 0xE7, 0xB9, 0x97, 0xF0, - 0x32, 0xD9, 0xC6, 0xBF, 0xF3, 0x12, 0xC9, 0x9E, 0x93, 0xD8, 0xF4, 0x2E, - 0x17, 0x54, 0xA7, 0x32, 0xE2, 0xF6, 0x6C, 0xBE, 0xCA, 0xBA, 0x8D, 0x76, - 0x11, 0xA2, 0x48, 0xB7, 0x4E, 0x84, 0x42, 0xE5, 0xF4, 0xAF, 0x12, 0x4F, - 0x56, 0x98, 0x7B, 0xF3, 0xE0, 0x22, 0x94, 0x1A, 0x64, 0xA3, 0xDD, 0x26, - 0x13, 0x73, 0x96, 0x84, 0x46, 0xB5, 0x98, 0xE4, 0x91, 0xEC, 0xF3, 0x06, - 0x37, 0x21, 0x79, 0x77, 0x91, 0x02, 0x2E, 0x18, 0xE0, 0x60, 0x75, 0xB8, - 0xC5, 0xAD, 0x9D, 0xB3, 0x56, 0x8B, 0x92, 0x0E, 0x01, 0xAB, 0x91, 0xF2, - 0xDC, 0x41, 0xBC, 0x25, 0xCE, 0x16, 0x31, 0x1B, 0x24, 0x52, 0xD9, 0x02, - 0x25, 0x4E, 0x64, 0x8A, 0x11, 0x15, 0xB9, 0x20, 0x33, 0x01, 0xD0, 0x4F, - 0x6B, 0x04, 0x67, 0x32, 0xB9, 0xEC, 0xD0, 0x77, 0xFC, 0x51, 0x0F, 0x9E, - 0x5C, 0xF5, 0x3C, 0x18, 0x0A, 0xF2, 0xD3, 0x4E, 0x2C, 0x3B, 0xA7, 0xC0, - 0x43, 0x33, 0xE8, 0x59, 0x40, 0xB7, 0xAF, 0x75, 0x38, 0xDC, 0x1D, 0xF3, - 0x77, 0xAD, 0xD9, 0xF7, 0x3A, 0x5D, 0xF4, 0xD4, 0xB5, 0x54, 0x15, 0x73, - 0x7B, 0xE7, 0xA3, 0x2B, 0x22, 0xE9, 0x09, 0x2C, 0xDE, 0x60, 0x2A, 0x5B, - 0xBB, 0xD9, 0xA1, 0xF6, 0x1E, 0x69, 0x38, 0xC2, 0x4B, 0xCD, 0xEC, 0xA2, - 0xA3, 0x1D, 0xBA, 0xBE, 0x0C, 0xA4, 0x42, 0x01, 0xE9, 0x1C, 0x4A, 0xC6, - 0xCF, 0xF8, 0x9A, 0x1B, 0x2B, 0x2B, 0x44, 0x81, 0x50, 0x69, 0x85, 0x08, - 0xDD, 0xE7, 0xBE, 0xF9, 0xBF, 0x65, 0x59, 0xB3, 0x80, 0x5C, 0x85, 0x5D, - 0x68, 0x05, 0xBA, 0xA1, 0xDC, 0x32, 0x9C, 0xA9, 0x98, 0x7D, 0x3B, 0x4E, - 0x03, 0xA4, 0x28, 0x0A, 0x3F, 0xB3, 0x09, 0xA8, 0x0C, 0x5A, 0x92, 0xA3, - 0xDF, 0xAE, 0x69, 0xBE, 0x5D, 0xFA, 0x75, 0x49, 0xA4, 0x5C, 0xE5, 0xBB, - 0xCD, 0x7C, 0xD8, 0x5A, 0xAA, 0x77, 0x7C, 0x81, 0xE3, 0xCA, 0xB9, 0x7C, - 0xC8, 0xF9, 0x83, 0x8B, 0x84, 0xB7, 0xE6, 0xEF, 0x52, 0xF0, 0xC5, 0xB8, - 0xAF, 0x7F, 0xA6, 0xA0, 0x4E, 0xE0, 0x1A, 0x41, 0x93, 0x01, 0xF7, 0xBE, - 0x0E, 0x58, 0x73, 0xFA, 0x43, 0xE7, 0xC0, 0x72, 0x2B, 0x4F, 0x4A, 0x80, - 0xBA, 0xC7, 0x2E, 0x19, 0x4C, 0xB5, 0xF1, 0xFD, 0x97, 0x11, 0x8A, 0xD3, - 0xB7, 0xC9, 0x73, 0x6D, 0x04, 0x9E, 0xAA, 0xC2, 0xD3, 0xEE, 0xB9, 0xC0, - 0x98, 0x06, 0x9D, 0xA5, 0x6B, 0x19, 0x5B, 0x95, 0x13, 0x6C, 0x27, 0x9E, - 0x77, 0xFB, 0x66, 0x7B, 0x7F, 0x1E, 0x9D, 0x5D, 0x38, 0x30, 0xB6, 0x7E, - 0xA9, 0x0D, 0xF6, 0x8B, 0xAE, 0x58, 0x94, 0xA3, 0x3B, 0x67, 0x95, 0xAD, - 0xCD, 0xEE, 0x37, 0xB6, 0x4A, 0xC1, 0x68, 0x2B, 0x69, 0x5F, 0x46, 0x9F, - 0x7D, 0x29, 0x52, 0xEF, 0x7A, 0xCF, 0xB2, 0x28, 0x8C, 0xCE, 0x3D, 0x71, - 0xBC, 0x0F, 0x46, 0x7F, 0xC2, 0xB9, 0x86, 0x84, 0x9B, 0x45, 0x21, 0x96, - 0x01, 0x1D, 0xD7, 0x03, 0x48, 0xC5, 0xBB, 0x55, 0x30, 0x18, 0x8A, 0xDA, - 0xE8, 0xFA, 0x72, 0x94, 0xE0, 0xD8, 0x13, 0xF1, 0x8B, 0x4C, 0xC3, 0xD5, - 0x6D, 0x74, 0x92, 0xD0, 0x21, 0xDE, 0xAF, 0x38, 0x99, 0xB3, 0x7D, 0xCB, - 0xB3, 0xF4, 0x3C, 0xC8, 0xC3, 0xFA, 0xB6, 0x3F, 0xF8, 0x3E, 0x30, 0x82, - 0x55, 0x7F, 0x64, 0x71, 0xEE, 0x62, 0x6B, 0xFA, 0x1D, 0x97, 0x7E, 0xBC, - 0x89, 0xCD, 0x3C, 0x72, 0x6A, 0xEA, 0xE0, 0xDE, 0xB7, 0x10, 0x62, 0x16, - 0x00, 0x2A, 0xD9, 0x02, 0x47, 0x51, 0xAA, 0x56, 0x8D, 0x1F, 0xC9, 0x04, - 0x33, 0x87, 0xE3, 0x1F, 0x0F, 0x19, 0xBC, 0x54, 0x17, 0x9A, 0x3A, 0x88, - 0x48, 0x81, 0xC0, 0x68, 0xC7, 0x96, 0xBB, 0xB7, 0x24, 0x7B, 0xF2, 0xA0, - 0x45, 0x65, 0x30, 0x4A, 0xDA, 0x70, 0x78, 0x77, 0xC8, 0x0E, 0x98, 0x7B, - 0x4E, 0xC3, 0x04, 0x41, 0xDD, 0x9B, 0xA3, 0xED, 0x1A, 0x88, 0x1E, 0x2A, - 0xCF, 0x8A, 0xB7, 0xD7, 0x86, 0x2F, 0xC1, 0xBF, 0x67, 0xC2, 0x65, 0x70, - 0xDC, 0x77, 0x7B, 0xC5, 0xFA, 0x03, 0x57, 0x42, 0xAD, 0x92, 0xCF, 0xCB, - 0xD0, 0x11, 0x11, 0x9E, 0x93, 0x5B, 0xCB, 0x78, 0xC2, 0x55, 0xD6, 0xAD, - 0x95, 0x3A, 0x45, 0x32, 0x42, 0x8F, 0xB1, 0x18, 0x17, 0xAF, 0xF2, 0x94, - 0x21, 0x08, 0x58, 0x13, 0x19, 0x8F, 0x12, 0x51, 0xB7, 0x95, 0x26, 0x8E, - 0xD6, 0x9A, 0x82, 0x78, 0x4D, 0x58, 0xEF, 0xC0, 0x89, 0x0D, 0xF7, 0xB6, - 0xCF, 0x46, 0x28, 0x3C, 0x97, 0x68, 0x32, 0xC5, 0x09, 0x25, 0x18, 0xE5, - 0x9E, 0x74, 0x0E, 0x73, 0xD8, 0x98, 0xC6, 0x2D, 0xCA, 0xE4, 0xDF, 0x2B, - 0x8A, 0xE1, 0x15, 0x8D, 0x9F, 0x70, 0xC0, 0x81, 0xCC, 0x9B, 0x4B, 0x0A, - 0xA5, 0x0A, 0x82, 0x5F, 0xC0, 0x55, 0x73, 0x47, 0x0D, 0xEE, 0x59, 0xFD, - 0xE5, 0xDD, 0x52, 0x74, 0xA2, 0x0F, 0xF1, 0xFC, 0xE9, 0x14, 0x9C, 0xF7, - 0x03, 0x3F, 0xC3, 0xF5, 0xFD, 0x7D, 0x1C, 0xB4, 0x62, 0x8E, 0xDD, 0x01, - 0x77, 0x96, 0x4D, 0x23, 0x5D, 0x37, 0x88, 0x83, 0x33, 0xB0, 0x75, 0x1E, - 0x9D, 0x15, 0xB5, 0x9F, 0x78, 0x04, 0x92, 0x9E, 0x54, 0x40, 0x10, 0x4E, - 0xFF, 0x5B, 0xF3, 0xF8, 0xFC, 0x67, 0xEF, 0x85, 0x1D, 0xFF, 0x0B, 0x2F, - 0x5D, 0x54, 0xE1, 0xEA, 0x8C, 0xB8, 0x41, 0x71, 0x91, 0x2D, 0xEB, 0x14, - 0x78, 0x78, 0x25, 0x95, 0x73, 0x70, 0xED, 0x24, 0x2F, 0x97, 0x51, 0xE0, - 0x8E, 0x6E, 0x43, 0x12, 0x2B, 0xCF, 0x88, 0xDE, 0xA1, 0xB0, 0xDB, 0x7F, - 0x1C, 0xA1, 0x75, 0xD9, 0x54, 0x1D, 0x9E, 0xE1, 0x95, 0x68, 0x7E, 0xD4, - 0x47, 0xD1, 0x42, 0x61, 0x60, 0xD9, 0xDE, 0x25, 0xC0, 0xD1, 0x5A, 0xB6, - 0x72, 0xF5, 0x37, 0xF8, 0x73, 0xC2, 0x05, 0xE3, 0xE1, 0x3B, 0x55, 0x29, - 0xCB, 0xB0, 0x2D, 0xBD, 0x6A, 0xF8, 0x67, 0xF6, 0xCD, 0x8B, 0xE3, 0x80, - 0x49, 0x24, 0x38, 0x22, 0x2E, 0xA6, 0x68, 0x25, 0x41, 0xCA, 0xEF, 0x0F, - 0x33, 0x53, 0xC0, 0xBB, 0x74, 0xEA, 0xC6, 0xC5, 0xA5, 0x5F, 0x07, 0xE6, - 0x3B, 0xB4, 0xA0, 0x43, 0xFC, 0xA9, 0x28, 0x9B, 0xD2, 0x11, 0x57, 0x61, - 0xD9, 0x79, 0x63, 0x5E, 0x7A, 0x7E, 0x9A, 0xDF, 0x77, 0x70, 0x0E, 0x0C, - 0xDA, 0xD6, 0xCE, 0x6B, 0x92, 0x71, 0x94, 0x9B, 0x2B, 0xEE, 0x3B, 0x99, - 0xCB, 0x82, 0x19, 0x55, 0x0E, 0x3E, 0xA3, 0xAF, 0x1D, 0xF4, 0x05, 0x1E, - 0x50, 0x8F, 0x0E, 0x72, 0x6E, 0x16, 0x28, 0xE3, 0xD1, 0xB2, 0x57, 0xBE, - 0x54, 0x9F, 0xE8, 0x7F, 0xBE, 0xC2, 0x07, 0x22, 0xD0, 0x3E, 0xE4, 0x1A, - 0x50, 0xB5, 0x78, 0x48, 0x93, 0xC3, 0x7E, 0xA8, 0x62, 0xD1, 0x92, 0x29, - 0x52, 0x70, 0xC5, 0x62, 0x5F, 0x44, 0xE8, 0xD5, 0x27, 0x5A, 0x07, 0xBE, - 0xE2, 0x01, 0xCB, 0x9F, 0xFF, 0xD4, 0x02, 0x15, 0xD8, 0x9E, 0xB6, 0x19, - 0x5A, 0x94, 0x2C, 0x74, 0xC9, 0xEE, 0x0B, 0x0D, 0x57, 0x32, 0x0E, 0x3C, - 0x75, 0xC3, 0xEE, 0xC4, 0x48, 0x13, 0xB3, 0xD1, 0x5F, 0xB4, 0xAA, 0xE4, - 0x6F, 0xE9, 0x98, 0xD8, 0x02, 0xF4, 0x00, 0xF5, 0xA5, 0x52, 0xED, 0x27, - 0x3E, 0x40, 0xB1, 0x84, 0x81, 0x3E, 0x79, 0xF0, 0xF4, 0x09, 0x34, 0x36, - 0x01, 0xF3, 0xD5, 0x5D, 0x68, 0xE8, 0xE0, 0xEF, 0x36, 0xA6, 0x67, 0xBA, - 0xD7, 0xE2, 0xC7, 0x06, 0x6A, 0x43, 0xCD, 0xC5, 0xD2, 0x78, 0x45, 0x8A, - 0xE8, 0x8D, 0x5F, 0x41, 0x10, 0xCA, 0x38, 0x8B, 0x6D, 0x91, 0xF1, 0x05, - 0x06, 0xDE, 0x51, 0xE8, 0xF9, 0xC3, 0x68, 0xEE, 0x2D, 0x48, 0x09, 0x58, - 0x2E, 0x08, 0x18, 0x0B, 0xD3, 0x64, 0x6B, 0xD3, 0xB3, 0xC4, 0x66, 0xB7, - 0x29, 0x4B, 0xDB, 0x47, 0x40, 0xB2, 0xC7, 0xBD, 0x48, 0x21, 0xA0, 0xCF, - 0xBC, 0x23, 0xA1, 0x31, 0x42, 0x48, 0x3E, 0xB2, 0xAF, 0x6F, 0x25, 0x95, - 0x89, 0xCC, 0x8F, 0xC0, 0x4F, 0xA6, 0x37, 0xCE, 0x0A, 0xF7, 0xF5, 0x93, - 0xBE, 0x98, 0x5E, 0x5C, 0x37, 0x2B, 0xBD, 0x14, 0xD3, 0xF7, 0x1F, 0x38, - 0x27, 0xA8, 0xD1, 0x55, 0x18, 0xDD, 0x16, 0xF1, 0x3B, 0xC1, 0x20, 0x75, - 0x21, 0x30, 0x0B, 0xC3, 0xC1, 0xD9, 0x78, 0x9E, 0x7A, 0xDD, 0xD0, 0x36, - 0xEF, 0x97, 0xFC, 0x61, 0x45, 0x9B, 0x49, 0x8D, 0x73, 0x70, 0xC5, 0xEC, - 0xB0, 0x45, 0x78, 0x09, 0x85, 0x42, 0x68, 0x9F, 0x7F, 0x50, 0x35, 0xE4, - 0x2A, 0x5F, 0xEB, 0x30, 0xB5, 0x01, 0x0F, 0x5B, 0x2B, 0x48, 0xAE, 0xD4, - 0x41, 0x00, 0x69, 0x58, 0x7D, 0xCA, 0x23, 0x0B, 0xC0, 0x32, 0xDC, 0x54, - 0xBA, 0x26, 0x22, 0xB5, 0xB1, 0xDB, 0xF9, 0x5E, 0x81, 0x6E, 0x48, 0xB8, - 0x70, 0x66, 0xAA, 0x7E, 0x6B, 0x42, 0xB4, 0x51, 0x25, 0xB5, 0x0D, 0x1B, - 0x45, 0x4B, 0x6C, 0x31, 0x45, 0xA3, 0x91, 0x56, 0x18, 0x2E, 0x34, 0x1A, - 0x67, 0x87, 0xA8, 0xC9, 0x6B, 0x72, 0xD8, 0xE5, 0x91, 0x2D, 0x71, 0xD8, - 0xC8, 0xA4, 0x95, 0xB1, 0xFD, 0xF8, 0x0F, 0xEA, 0x08, 0x4F, 0x11, 0x2A, - 0x39, 0xE7, 0xF6, 0x50, 0xCC, 0xF7, 0x64, 0xA1, 0x66, 0xE7, 0xA9, 0xDD, - 0x49, 0xAB, 0xBF, 0x5B, 0x99, 0x14, 0xE2, 0xD6, 0x91, 0x3A, 0x70, 0x08, - 0x67, 0x87, 0x7C, 0xB7, 0x76, 0x21, 0xE5, 0x23, 0x32, 0x9F, 0x6F, 0x88, - 0xBB, 0x10, 0xB6, 0xBE, 0xA2, 0xB1, 0x3E, 0xDA, 0x64, 0x5C, 0x25, 0x0B, - 0x0F, 0x94, 0x39, 0x0E, 0x21, 0x91, 0x01, 0x60, 0x8C, 0x9B, 0x3D, 0x9E, - 0xEB, 0x3C, 0x05, 0x28, 0x66, 0x58, 0x9A, 0x7D, 0xA3, 0x2C, 0x42, 0x13, - 0xD7, 0x52, 0x09, 0x0A, 0x12, 0x14, 0xB1, 0x05, 0x4D, 0x7C, 0xE4, 0x04, - 0x2C, 0xC8, 0x93, 0x98, 0xBB, 0x90, 0x7C, 0xDE, 0x31, 0xD1, 0x21, 0x5C, - 0x21, 0x75, 0x94, 0x64, 0x62, 0x33, 0xB9, 0xCF, 0xD1, 0x5C, 0x77, 0xC0, - 0xAB, 0x0A, 0xF8, 0x03, 0x00, 0x35, 0xA1, 0xE9, 0x8D, 0xB5, 0x43, 0x6F, - 0x94, 0x82, 0xAA, 0xCE, 0xB3, 0x5E, 0x6C, 0x13, 0x45, 0x6F, 0xD5, 0xE8, - 0x12, 0xFA, 0x4C, 0x68, 0x3D, 0x04, 0x57, 0x77, 0x87, 0x1D, 0xFC, 0xA6, - 0x19, 0xC2, 0x09, 0x5B, 0x65, 0xD7, 0x86, 0xE2, 0x8E, 0x14, 0x52, 0x92, - 0xA5, 0xC9, 0xCA, 0xFD, 0x42, 0x54, 0x12, 0xF3, 0xB9, 0x87, 0x11, 0x71, - 0x70, 0x8D, 0x98, 0x85, 0xBB, 0x92, 0x36, 0x42, 0x42, 0x4F, 0x2D, 0xDB, - 0x8A, 0x77, 0x2A, 0x93, 0x8D, 0xF6, 0x87, 0x5D, 0x8F, 0x52, 0x91, 0x5A, - 0x50, 0xC2, 0x9D, 0xE3, 0x8C, 0xA6, 0xD2, 0x4C, 0xDF, 0xE6, 0xEC, 0xF7, - 0x6E, 0x4C, 0xAF, 0x80, 0x28, 0xF1, 0x1A, 0x80, 0x25, 0x15, 0x27, 0xFF, - 0xB2, 0x6C, 0x3A, 0x49, 0xC1, 0xF4, 0x8F, 0xCD, 0x82, 0x8A, 0xC7, 0x9F, - 0x3D, 0x32, 0x6D, 0xDD, 0x36, 0xDB, 0x2F, 0x26, 0x60, 0x2F, 0x21, 0x91, - 0xBC, 0x8C, 0x53, 0x7C, 0x76, 0xEF, 0x8F, 0xE7, 0xE6, 0x1D, 0xA9, 0x32, - 0x2C, 0x23, 0x81, 0xF9, 0x07, 0x88, 0xB3, 0xD7, 0xBE, 0x83, 0x1A, 0xE4, - 0x02, 0x5A, 0x29, 0x72, 0x73, 0x2A, 0x6A, 0xBE, 0x57, 0x3A, 0x05, 0x89, - 0xD1, 0xD8, 0x26, 0x9B, 0xCF, 0x01, 0x9F, 0xA4, 0xAB, 0xC1, 0x53, 0x62, - 0x83, 0xE9, 0x3D, 0xE5, 0x7C, 0xA4, 0x2A, 0x98, 0x95, 0x57, 0x19, 0x45, - 0xE3, 0x54, 0x43, 0xD4, 0x39, 0x51, 0x3B, 0x27, 0x8E, 0xB9, 0x33, 0x90, - 0xEF, 0x0E, 0xAD, 0xD2, 0xE6, 0x7A, 0x2A, 0x00, 0xEB, 0x84, 0x3C, 0xE8, - 0x97, 0x1F, 0x0A, 0xAB, 0x56, 0x0F, 0x9D, 0xB7, 0xD1, 0x67, 0x64, 0x24, - 0xF9, 0x89, 0xE1, 0xB6, 0x1B, 0xEE, 0xB7, 0xA8, 0xDD, 0x03, 0x40, 0xB0, - 0xEB, 0x2D, 0x29, 0x53, 0x81, 0x8B, 0x0C, 0x67, 0x53, 0x5E, 0xD3, 0xD5, - 0xC5, 0xE6, 0x7C, 0x12, 0xE6, 0xBB, 0x34, 0x24, 0xF1, 0x5B, 0x05, 0xBA, - 0x6E, 0x16, 0xA7, 0xA9, 0x31, 0xFB, 0x47, 0xE1, 0xFE, 0x67, 0x07, 0xF9, - 0x96, 0x34, 0x5A, 0x3E, 0x95, 0xAD, 0x64, 0x16, 0xE9, 0xD8, 0x72, 0x58, - 0x90, 0x67, 0x52, 0xFE, 0x08, 0x83, 0x35, 0xEB, 0x8A, 0x8C, 0xF2, 0xD0, - 0xAA, 0x79, 0x42, 0x33, 0x13, 0x8D, 0x34, 0x76, 0xFD, 0x39, 0x2C, 0xEC, - 0xCA, 0x74, 0x07, 0xC1, 0xE2, 0x47, 0xF4, 0x5C, 0x65, 0x99, 0xE4, 0xBA, - 0xC9, 0x41, 0xA4, 0x48, 0x51, 0xEF, 0x99, 0x5E, 0x99, 0x4F, 0x74, 0x56, - 0x4C, 0xA6, 0xFA, 0xC7, 0x4C, 0xC2, 0xAD, 0xA4, 0x3C, 0xF6, 0xD4, 0x8C, - 0xB6, 0x91, 0x6B, 0xB4, 0xCE, 0xFB, 0x34, 0xF7, 0xE3, 0xF6, 0x11, 0xE2, - 0x56, 0x3E, 0xA2, 0x60, 0xA3, 0x47, 0x59, 0x3E, 0xDF, 0x6A, 0x13, 0xB8, - 0xED, 0x03, 0x8B, 0x54, 0x12, 0xD1, 0x29, 0xFD, 0x06, 0x26, 0x03, 0xF5, - 0x25, 0x69, 0x05, 0x6D, 0x73, 0xE6, 0x1D, 0x28, 0xC0, 0x6F, 0x75, 0x67, - 0xCE, 0xC4, 0xF7, 0x31, 0xBB, 0x21, 0x61, 0xB1, 0xC4, 0x5D, 0x36, 0x50, - 0xEC, 0xBE, 0x23, 0xEE, 0x47, 0x62, 0x82, 0x6B, 0xE9, 0x79, 0xCE, 0xAF, - 0x76, 0x6A, 0xD1, 0xFC, 0x79, 0x5E, 0xE8, 0x1E, 0xD8, 0x8F, 0xF9, 0x63, - 0x5F, 0x09, 0x1A, 0x21, 0x93, 0x09, 0x90, 0x15, 0x62, 0xDE, 0x69, 0x65, - 0x8D, 0xA3, 0xAC, 0x79, 0x71, 0xA1, 0xBB, 0xA9, 0xCF, 0x45, 0x89, 0x15, - 0x1B, 0x7D, 0x49, 0x37, 0x56, 0x2D, 0x52, 0xF1, 0x66, 0x8F, 0x03, 0xA1, - 0xE3, 0x93, 0x8C, 0xAC, 0xB3, 0x77, 0x89, 0x69, 0x41, 0x23, 0xE4, 0x17, - 0xEE, 0x8E, 0x73, 0x06, 0xE4, 0xDC, 0x95, 0x49, 0xA6, 0x30, 0xCD, 0x1B, - 0x30, 0x42, 0xD9, 0x06, 0xF9, 0x5C, 0x8A, 0x50, 0xBB, 0xA0, 0xA8, 0xEF, - 0xD3, 0xA1, 0x83, 0xF1, 0xC1, 0x77, 0x4C, 0x4B, 0x7B, 0xCC, 0xEF, 0xE4, - 0xB4, 0x4D, 0x50, 0x01, 0x1B, 0x44, 0x33, 0xFD, 0xEF, 0xB5, 0x10, 0x72, - 0x92, 0x3E, 0x96, 0x61, 0xAB, 0x20, 0x7C, 0x38, 0xCB, 0xD7, 0x79, 0xA3, - 0x7A, 0x35, 0x87, 0xFA, 0xC6, 0x5E, 0xB8, 0x9E, 0x2C, 0xE5, 0x96, 0xBA, - 0x6E, 0xF1, 0xC3, 0x63, 0x92, 0x65, 0xEE, 0x05, 0x5B, 0x13, 0xFA, 0xE8, - 0x8B, 0xE7, 0xCB, 0x73, 0xB9, 0xC9, 0x0F, 0x60, 0xC6, 0x36, 0x1D, 0x8F, - 0x9C, 0xC0, 0x83, 0x1A, 0xB4, 0x34, 0xDE, 0xF6, 0x13, 0x4E, 0x58, 0x15, - 0x3D, 0xD6, 0x21, 0x5F, 0xE6, 0x21, 0x25, 0x15, 0x07, 0xEF, 0xD7, 0x06, - 0x5D, 0x9A, 0x59, 0xC2, 0x9F, 0x2D, 0x5A, 0xE4, 0x21, 0x19, 0x02, 0xF2, - 0x01, 0x5E, 0xC2, 0x80, 0xAB, 0x8D, 0x96, 0x38, 0x0F, 0x43, 0x71, 0x61, - 0x17, 0x72, 0x1E, 0x16, 0x3E, 0x4B, 0xE1, 0xA0, 0xB5, 0x22, 0xFB, 0x74, - 0xED, 0x4F, 0xEF, 0x4E, 0x56, 0x8A, 0x52, 0x5D, 0x76, 0x60, 0x9D, 0xE2, - 0x8B, 0xC0, 0xEC, 0xF3, 0x05, 0x2F, 0x59, 0xE5, 0xC0, 0x68, 0x02, 0xE9, - 0x77, 0x17, 0x86, 0x7D, 0xC6, 0x71, 0xA7, 0xF1, 0x44, 0x50, 0xB3, 0xFB, - 0xB6, 0x27, 0x23, 0x57, 0x5E, 0xCA, 0x18, 0xAA, 0xA7, 0x7C, 0xCD, 0xE7, - 0xEA, 0xB9, 0xA9, 0xB8, 0xA0, 0x99, 0xF0, 0xED, 0xF1, 0xF8, 0x4D, 0x11, - 0xFA, 0x04, 0x75, 0xA7, 0x41, 0xC5, 0xB3, 0xFB, 0x37, 0x46, 0x14, 0xBF, - 0x89, 0xAB, 0x33, 0x55, 0x86, 0x92, 0x36, 0x2F, 0xF6, 0xF1, 0x7B, 0x60, - 0x8D, 0xA9, 0x85, 0x48, 0xF5, 0x49, 0x46, 0xD9, 0xB3, 0x18, 0xB9, 0x1E, - 0x3F, 0x09, 0x87, 0x33, 0x23, 0x72, 0xE8, 0x4F, 0x48, 0xC9, 0xD7, 0x30, - 0x1C, 0xF0, 0x7B, 0x88, 0xF9, 0xAE, 0x5C, 0x23, 0x42, 0xC8, 0x3D, 0xD4, - 0xA4, 0xA9, 0x8F, 0xBA, 0x9E, 0xFD, 0x6F, 0xC7, 0x10, 0x4F, 0xFD, 0xA5, - 0xAC, 0xA4, 0xBF, 0xDB, 0x1D, 0xFB, 0x67, 0xAA, 0x47, 0xE1, 0x8E, 0x47, - 0xCC, 0x51, 0xE3, 0xAD, 0x80, 0x63, 0x2A, 0x5A, 0xEF, 0x3B, 0x6B, 0x7E, - 0x5B, 0xC6, 0x6F, 0x84, 0x3E, 0xD9, 0xAE, 0x3A, 0x7B, 0x2F, 0xED, 0x23, - 0x57, 0x56, 0x59, 0x5A, 0x35, 0x11, 0x0D, 0xFD, 0x43, 0x06, 0x6C, 0xB3, - 0x26, 0xDA, 0xB4, 0xEA, 0x84, 0x94, 0xB8, 0x4F, 0x60, 0xAC, 0x3F, 0x2E, - 0x9D, 0xF0, 0x1B, 0xD5, 0xCA, 0xF6, 0x97, 0x82, 0x7A, 0x45, 0x76, 0xCC, - 0xF2, 0x63, 0x3E, 0xED, 0x80, 0x63, 0xB2, 0x1E, 0x18, 0x21, 0x85, 0x84, - 0x89, 0xF8, 0xB0, 0x31, 0x4F, 0x12, 0x76, 0x8E, 0x3B, 0x32, 0x54, 0x57, - 0x95, 0x26, 0x0E, 0xB0, 0x28, 0x65, 0xC3, 0x31, 0x18, 0x5B, 0xD1, 0x8E, - 0x32, 0x53, 0x40, 0x57, 0xD5, 0x90, 0x16, 0xE6, 0x23, 0xAE, 0xAF, 0x59, - 0xD1, 0x8B, 0xDC, 0x3D, 0x34, 0xA5, 0x56, 0xCA, 0x61, 0xF2, 0xEE, 0xF4, - 0xD2, 0x67, 0x82, 0x54, 0x5F, 0x5A, 0x05, 0x94, 0x24, 0xDF, 0xD9, 0xE3, - 0x72, 0x20, 0x30, 0x6C, 0x58, 0x25, 0x66, 0x12, 0x81, 0x75, 0x46, 0x51, - 0xAB, 0xCB, 0x0F, 0xEC, 0x77, 0x84, 0x3D, 0xB1, 0xA7, 0x4A, 0xF5, 0x35, - 0xAF, 0xF2, 0x01, 0x6C, 0x7F, 0x42, 0xA9, 0x28, 0x76, 0xE4, 0x6E, 0xF2, - 0x4B, 0x7E, 0xD0, 0x7D, 0x57, 0x2E, 0x25, 0x4F, 0x90, 0x8A, 0x74, 0xB2, - 0x87, 0x4C, 0x9C, 0x75, 0x5A, 0xBE, 0xEF, 0x46, 0xA1, 0x0D, 0x20, 0xF5, - 0x94, 0x7A, 0xA7, 0x72, 0x0A, 0x6E, 0xBC, 0x80, 0x01, 0x14, 0x02, 0x00, - 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x0D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, - 0x6D, 0x61, 0x72, 0x6B, 0x0D, 0x80, 0x03, -}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSerif.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSerif.cpp deleted file mode 100644 index 57e70dc0b9..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSerif.cpp +++ /dev/null @@ -1,1632 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSerifFontData[19469] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xe, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x0, 0x1, - 0x1, 0x1, 0x26, 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, - 0xf8, 0x1d, 0x3, 0xf8, 0x18, 0x4, 0xfb, 0x3c, 0xfb, 0x8e, 0xfa, 0x7c, - 0xfa, 0x2, 0x5, 0x1c, 0x7, 0x9f, 0xf, 0x1c, 0x8, 0xf6, 0x11, 0xb6, - 0x1c, 0x44, 0xa3, 0x12, 0x0, 0x3, 0x1, 0x1, 0x5, 0x2f, 0x3e, 0x45, - 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, - 0x0, 0x7b, 0x2, 0x0, 0x1, 0x0, 0x9, 0x0, 0x11, 0x0, 0x24, 0x0, - 0x2c, 0x0, 0x4a, 0x0, 0x54, 0x0, 0x60, 0x0, 0x68, 0x0, 0x71, 0x0, - 0x86, 0x0, 0x91, 0x0, 0x9e, 0x0, 0xb9, 0x0, 0xc1, 0x0, 0xe2, 0x0, - 0xff, 0x1, 0xb, 0x1, 0x1d, 0x1, 0x25, 0x1, 0x33, 0x1, 0x4e, 0x1, - 0x55, 0x1, 0x68, 0x1, 0x7a, 0x1, 0x7f, 0x1, 0x90, 0x1, 0x94, 0x1, - 0x9d, 0x1, 0xa9, 0x1, 0xb9, 0x1, 0xc6, 0x1, 0xfb, 0x2, 0x14, 0x2, - 0x1a, 0x2, 0x34, 0x2, 0x3c, 0x2, 0x48, 0x2, 0x59, 0x2, 0x63, 0x2, - 0x71, 0x2, 0x84, 0x2, 0x89, 0x2, 0x92, 0x2, 0xac, 0x2, 0xb6, 0x2, - 0xc2, 0x2, 0xe6, 0x2, 0xf0, 0x2, 0xfe, 0x3, 0x11, 0x3, 0x19, 0x3, - 0x20, 0x3, 0x23, 0x3, 0x2a, 0x3, 0x49, 0x3, 0x53, 0x3, 0x71, 0x3, - 0x8e, 0x3, 0x9c, 0x3, 0xa2, 0x3, 0xa8, 0x3, 0xc0, 0x3, 0xd8, 0x3, - 0xef, 0x3, 0xf7, 0x3, 0xfe, 0x4, 0x2, 0x4, 0x17, 0x4, 0x2a, 0x4, - 0x30, 0x4, 0x44, 0x4, 0x57, 0x4, 0x62, 0x4, 0x69, 0x4, 0x7b, 0x4, - 0x87, 0x4, 0x98, 0x4, 0xa3, 0x4, 0xb3, 0x4, 0xb9, 0x4, 0xbf, 0x4, - 0xc5, 0x4, 0xcb, 0x4, 0xd8, 0x4, 0xe7, 0x4, 0xf1, 0x4, 0xfb, 0x5, - 0xa, 0x5, 0x19, 0x5, 0x22, 0x5, 0x28, 0x5, 0x2d, 0x5, 0x3b, 0x5, - 0x3f, 0x5, 0x4c, 0x5, 0x59, 0x5, 0x5e, 0x5, 0x62, 0x5, 0x6e, 0x5, - 0x74, 0x5, 0x77, 0x5, 0x82, 0x5, 0x8d, 0x5, 0x94, 0x5, 0x99, 0x5, - 0x9e, 0x5, 0xa3, 0x5, 0xad, 0x5, 0xb7, 0x5, 0xc1, 0x5, 0xcb, 0x5, - 0xd3, 0x5, 0xdc, 0x5, 0xe5, 0x5, 0xee, 0x5, 0xf7, 0x6, 0x0, 0x6, - 0x5, 0x6, 0xc, 0x6, 0x12, 0x6, 0x18, 0x6, 0x1d, 0x6, 0x21, 0x21, - 0xa, 0x78, 0x5f, 0x6c, 0x2a, 0x1d, 0xb, 0x15, 0xb3, 0x6, 0xf7, 0x2e, - 0x22, 0x1d, 0xb, 0xec, 0x5, 0x95, 0x91, 0x9f, 0x98, 0xa2, 0x1a, 0x8f, - 0x8a, 0xa7, 0x6b, 0x7d, 0x84, 0x8b, 0x74, 0x74, 0x1e, 0xb, 0x36, 0x1d, - 0x26, 0xa, 0x3e, 0x7a, 0xa, 0xb, 0x70, 0x1d, 0x88, 0x7f, 0x6c, 0x7c, - 0x1e, 0x86, 0x82, 0x6c, 0x74, 0x75, 0x1b, 0x66, 0x6e, 0xaa, 0xba, 0x1f, - 0x8d, 0x7, 0xad, 0x96, 0xc3, 0xf7, 0x2b, 0xbd, 0x1e, 0x2a, 0xa, 0xb, - 0x2b, 0x1d, 0xfb, 0x11, 0xf7, 0x3b, 0x5, 0x4d, 0x6, 0xb, 0x37, 0x1d, - 0x4e, 0xfb, 0x4d, 0xfb, 0x22, 0xd7, 0x39, 0x2b, 0xa, 0xb, 0x2d, 0xa, - 0x8a, 0x81, 0x1d, 0x9c, 0x57, 0xa, 0x24, 0x1d, 0x40, 0xa, 0xef, 0xfb, - 0x29, 0x1e, 0xb, 0x70, 0xa, 0xfb, 0x1f, 0x69, 0x1d, 0xf7, 0xf, 0x61, - 0x1d, 0xf7, 0x10, 0x34, 0xa, 0x32, 0x71, 0x1d, 0x3a, 0x5e, 0xa, 0xb, - 0x4c, 0x74, 0x72, 0x19, 0x79, 0x78, 0x7a, 0x7f, 0x2e, 0xa, 0xb, 0x15, - 0xad, 0x6, 0xf7, 0xd, 0xf2, 0xf7, 0xe, 0x24, 0x5, 0xad, 0x6, 0xb, - 0x6d, 0x1b, 0x49, 0x82, 0xc9, 0x99, 0x1f, 0xf7, 0xda, 0xfb, 0x26, 0x7d, - 0x7, 0xa9, 0x89, 0xab, 0x7f, 0x4f, 0x1a, 0xfb, 0x86, 0x7, 0x21, 0xd9, - 0x73, 0xb4, 0xb, 0x2e, 0x1d, 0x9e, 0xfb, 0x7c, 0x50, 0x1d, 0xb, 0x15, - 0xd7, 0x86, 0x99, 0x76, 0x41, 0x1a, 0xfb, 0xc2, 0x7, 0x4f, 0x8b, 0xfb, - 0x57, 0xf7, 0x8c, 0xf7, 0x97, 0x8b, 0xf7, 0x50, 0xdb, 0x1e, 0xf7, 0x8f, - 0x7, 0xf4, 0x9c, 0xa4, 0xd8, 0x93, 0x1e, 0xb, 0xa8, 0xf7, 0x78, 0x15, - 0xfb, 0x1b, 0xe5, 0x24, 0x65, 0x1d, 0xf7, 0x1f, 0xee, 0xf7, 0x25, 0x2d, - 0xe2, 0xfb, 0x17, 0xfb, 0x1a, 0x39, 0xfb, 0x1, 0xfb, 0xf, 0x1e, 0xe5, - 0xb, 0x5b, 0xa, 0xf7, 0x6a, 0x77, 0x85, 0xa, 0xf7, 0xe6, 0x29, 0x1d, - 0xb, 0x9b, 0x16, 0xf7, 0x81, 0x9a, 0x6, 0x46, 0x8f, 0x86, 0xa6, 0xcd, - 0x1a, 0xf7, 0xed, 0x7, 0x87, 0x8e, 0xb, 0x2d, 0x1d, 0x4f, 0x3f, 0xfb, - 0x13, 0x49, 0x1d, 0xa0, 0x1e, 0xf7, 0x1b, 0x4e, 0xa, 0x6, 0x88, 0xf7, - 0x23, 0x5, 0xfc, 0xa7, 0xb, 0x8c, 0xa, 0x86, 0x83, 0x70, 0x75, 0x1e, - 0x7f, 0x7c, 0x70, 0x7e, 0x75, 0x1b, 0x66, 0x6e, 0xaa, 0xba, 0xaf, 0x96, - 0xc3, 0xf7, 0x2b, 0xbd, 0x1f, 0x4d, 0xa, 0xb, 0x7d, 0x1d, 0xa1, 0xa1, - 0x3d, 0xa, 0xb, 0x39, 0x1d, 0x8b, 0xdc, 0x1f, 0xf7, 0x65, 0x7, 0xf7, - 0x24, 0x89, 0xde, 0x8a, 0xa4, 0x7d, 0x97, 0x3b, 0x19, 0xb, 0xe9, 0xf7, - 0x9f, 0x15, 0xf7, 0xcb, 0x6, 0xf7, 0x17, 0x80, 0x44, 0xc9, 0x2d, 0x1b, - 0x3b, 0xfb, 0x10, 0xb, 0x8d, 0x1b, 0x39, 0xa, 0xb, 0xb8, 0xf7, 0x3d, - 0x5, 0x6f, 0x6, 0x26, 0x5f, 0x59, 0x6d, 0xfb, 0x11, 0x1b, 0xfb, 0x29, - 0x8b, 0xb, 0x3b, 0x1d, 0xa2, 0xb, 0x15, 0xb3, 0x6, 0xfb, 0x27, 0xf7, - 0x28, 0x5, 0xb, 0xaa, 0xb1, 0x37, 0xa, 0xbf, 0x89, 0xa, 0xbd, 0xac, - 0xb0, 0x1e, 0xb, 0x8e, 0xab, 0x15, 0xe3, 0x9b, 0xb2, 0xb0, 0xc2, 0x1b, - 0xda, 0x95, 0x3e, 0x5b, 0x92, 0x1f, 0xb, 0xfb, 0x8, 0x5c, 0x44, 0x57, - 0x1d, 0x1f, 0x94, 0x86, 0x9a, 0x9a, 0x1a, 0xb, 0x3, 0x94, 0x16, 0xf8, - 0xc8, 0x6, 0xa3, 0xf7, 0x44, 0x5, 0x74, 0x6, 0x42, 0x75, 0x6e, 0x4a, - 0xfb, 0x17, 0x1b, 0xfb, 0x8b, 0x6, 0xf8, 0x44, 0xf8, 0xf5, 0x5, 0x9a, - 0xfc, 0xa2, 0x7, 0x77, 0xfb, 0x3f, 0x5, 0xa5, 0x6, 0xce, 0x98, 0xa1, - 0xcd, 0xf7, 0x23, 0x1b, 0xf7, 0x67, 0x6, 0xfc, 0x49, 0xfc, 0xf5, 0x5, - 0xb, 0xf7, 0xb3, 0xf7, 0x9, 0x15, 0x3b, 0xa, 0xf7, 0x6, 0xfb, 0x80, - 0x18, 0x99, 0x6c, 0xbb, 0x2f, 0x7c, 0x1a, 0x7b, 0x63, 0xfb, 0x1e, 0x57, - 0x1e, 0xb, 0xa7, 0xa7, 0x76, 0x55, 0x1d, 0xb, 0x15, 0x6d, 0xb9, 0xf7, - 0x2c, 0xfb, 0x38, 0x98, 0x1b, 0x91, 0x90, 0x8f, 0x92, 0x98, 0x6f, 0xb3, - 0x79, 0xa3, 0x1f, 0x75, 0xa9, 0x64, 0xb7, 0x75, 0xa9, 0xb, 0x65, 0xad, - 0x4d, 0x1d, 0x72, 0x99, 0xa, 0xb, 0xfb, 0x7a, 0x1e, 0xf7, 0x6, 0x8c, - 0x15, 0xf7, 0x78, 0xf7, 0x3, 0xb, 0x7a, 0xae, 0x1f, 0x7d, 0xa8, 0xa0, - 0x7c, 0x52, 0x1d, 0x63, 0x7a, 0x7d, 0x81, 0x70, 0x1b, 0x7c, 0xb, 0x3c, - 0xa, 0xae, 0x7e, 0xa5, 0x92, 0x91, 0x88, 0x1d, 0xb, 0xfc, 0x2a, 0x35, - 0xa, 0xfb, 0x87, 0x7, 0x6e, 0x73, 0x7c, 0x6e, 0x89, 0x1e, 0xb, 0x51, - 0xa, 0x6a, 0x98, 0x71, 0x84, 0x83, 0x87, 0x8a, 0x88, 0x1e, 0x8a, 0x87, - 0x88, 0x8a, 0x89, 0x64, 0xa, 0xb, 0x47, 0xa, 0x88, 0xa, 0xe, 0x15, - 0x43, 0xa, 0xf7, 0x5c, 0x16, 0x43, 0xa, 0xe, 0x9e, 0xfb, 0x6f, 0x78, - 0x7, 0xaa, 0xb1, 0x89, 0x75, 0x1d, 0xfb, 0x76, 0xfb, 0x28, 0xf7, 0x72, - 0x75, 0xa, 0x8c, 0xb9, 0x8d, 0x1e, 0x9e, 0xfb, 0xac, 0xb, 0x1, 0xa8, - 0xe5, 0xf7, 0x99, 0xe5, 0x3, 0x2f, 0x1d, 0xb, 0x7b, 0xa0, 0xa0, 0xae, - 0x9c, 0xb0, 0xaa, 0x71, 0xa5, 0x6d, 0x6d, 0xb, 0xb1, 0xa5, 0xa1, 0xa5, - 0xab, 0x1a, 0xa8, 0x6f, 0xbf, 0x37, 0x5f, 0x55, 0x75, 0x42, 0x69, 0x1e, - 0xa4, 0x79, 0x5, 0xa4, 0x9d, 0x9f, 0xab, 0xbb, 0x1b, 0xb5, 0x9a, 0x73, - 0x71, 0x65, 0x5c, 0x72, 0x50, 0x79, 0x1f, 0xe, 0xe2, 0x81, 0xc5, 0xf7, - 0x95, 0xf7, 0x2f, 0x73, 0xa3, 0xb, 0x78, 0x7, 0xd1, 0x87, 0xa3, 0x70, - 0x20, 0x1a, 0xfb, 0x98, 0x7, 0xfb, 0x1f, 0xb, 0x7e, 0x1b, 0x85, 0x86, - 0x87, 0x84, 0x7e, 0xa7, 0x63, 0x9d, 0x73, 0x1f, 0xa1, 0x6d, 0xb2, 0x5f, - 0xa1, 0x6d, 0xb, 0xaa, 0x1b, 0xd9, 0x9d, 0xd3, 0x65, 0xa, 0xb, 0x8d, - 0x99, 0x1b, 0x9b, 0x9e, 0x8a, 0xb, 0x33, 0xa, 0xe, 0xa1, 0x6f, 0x6f, - 0x76, 0x62, 0x1d, 0xb, 0x6, 0xf7, 0xa1, 0xf8, 0x29, 0x5, 0x9a, 0xfb, - 0xef, 0x7, 0x88, 0xfb, 0xa, 0x5, 0x9d, 0x6, 0xc1, 0x92, 0x99, 0xad, - 0xd4, 0x1b, 0xf7, 0x14, 0x6, 0xfb, 0x9e, 0xfc, 0x29, 0x5, 0xb, 0x63, - 0x7b, 0x97, 0x6f, 0xaa, 0xa5, 0x9e, 0xa1, 0xa0, 0xb, 0xf7, 0x1, 0x3, - 0x9b, 0x16, 0xf7, 0xb0, 0x6, 0xf7, 0xc6, 0xda, 0xf7, 0x58, 0xf7, 0x19, - 0xf7, 0x74, 0xfb, 0x33, 0xf7, 0x1, 0xfb, 0x84, 0x1f, 0xfb, 0xa2, 0x78, - 0x6, 0xd8, 0xb, 0x5, 0x76, 0x6, 0x6a, 0x83, 0x60, 0x8b, 0x86, 0x75, - 0x54, 0xac, 0x32, 0x1b, 0xfb, 0x40, 0xfb, 0x3c, 0xfb, 0xd, 0xfb, 0x74, - 0xfb, 0x8d, 0xf7, 0x41, 0x2b, 0xf7, 0x35, 0xb, 0x7b, 0xa, 0xf7, 0x17, - 0x77, 0xdd, 0x77, 0xf7, 0x8, 0xb4, 0xf7, 0x94, 0xb1, 0xb, 0x80, 0x1d, - 0xf7, 0x6c, 0xb4, 0xb, 0x5b, 0x1d, 0xf8, 0x35, 0x77, 0xb, 0xf1, 0x3, - 0x97, 0x16, 0xf8, 0xae, 0x6, 0xbb, 0xf7, 0x42, 0x5, 0x72, 0x6, 0xfb, - 0x17, 0x52, 0x4b, 0x87, 0xfb, 0x2a, 0x1b, 0x38, 0x79, 0xb, 0x78, 0x7, - 0xb8, 0x87, 0x9a, 0x88, 0xf1, 0xfb, 0x2a, 0xf7, 0x17, 0xfb, 0x54, 0x18, - 0xfb, 0x38, 0x7, 0x3f, 0x88, 0x6a, 0x29, 0x89, 0x1e, 0xb, 0x6b, 0xac, - 0xa7, 0x80, 0xb3, 0x1b, 0xf7, 0x1f, 0xd2, 0xf7, 0x20, 0xf7, 0x7, 0xf7, - 0x19, 0x3f, 0xdd, 0x32, 0x3e, 0x5d, 0x5a, 0x6f, 0xb, 0x9f, 0xd9, 0x1a, - 0xf8, 0x3c, 0x7, 0xdb, 0xb, 0xf7, 0x69, 0xf7, 0x7a, 0xfb, 0x37, 0xb, - 0x75, 0x6f, 0x1e, 0xb, 0x7d, 0x94, 0x5, 0x58, 0x69, 0x66, 0x60, 0x43, - 0x1b, 0x37, 0x46, 0xd7, 0xf7, 0x7, 0xf7, 0x27, 0xe7, 0xaa, 0xb0, 0xc0, - 0xb, 0x15, 0x6f, 0xa2, 0x74, 0xa7, 0xa7, 0xa2, 0xa2, 0xa7, 0xa7, 0x74, - 0xa2, 0x6f, 0x6f, 0x74, 0x74, 0x6f, 0x1e, 0xe, 0xf7, 0x15, 0xf7, 0x2c, - 0xd1, 0xb, 0x7, 0x89, 0xa3, 0x9e, 0x8a, 0xa3, 0x1b, 0xf4, 0xcb, 0x9d, - 0xb4, 0xb6, 0x1f, 0x9c, 0x9b, 0xb7, 0xb4, 0xd9, 0x1a, 0xb, 0x7, 0xd2, - 0x97, 0xa2, 0xd7, 0x91, 0x1e, 0x9e, 0xfb, 0xaa, 0x78, 0x7, 0xd5, 0x85, - 0x99, 0x77, 0x41, 0x1a, 0xb, 0x15, 0xbc, 0x6, 0xf8, 0x56, 0xf9, 0x46, - 0x5, 0x5d, 0x6, 0xb, 0xf7, 0x49, 0xf7, 0x49, 0xf7, 0x26, 0xb, 0x70, - 0xa1, 0x75, 0xa6, 0xa6, 0xa2, 0xa1, 0xa6, 0xa6, 0x74, 0xa2, 0x70, 0x70, - 0x75, 0x74, 0x70, 0x1e, 0xb, 0x5b, 0x7a, 0x5a, 0x7d, 0x5b, 0x6f, 0x1d, - 0x91, 0x95, 0x82, 0xa, 0xb, 0x6f, 0xa1, 0x7d, 0x1d, 0xa2, 0xa1, 0xa7, - 0xa7, 0x74, 0xa2, 0x6f, 0x6f, 0x75, 0x74, 0x6f, 0x1e, 0xb, 0x6f, 0xa0, - 0x76, 0x9a, 0x1d, 0x95, 0x1d, 0x74, 0x6f, 0x1e, 0xb, 0x6f, 0xa1, 0x7d, - 0x1d, 0x9f, 0xa1, 0xa7, 0xa7, 0x77, 0xa1, 0x6f, 0x6f, 0x75, 0x62, 0x1d, - 0xb, 0x7e, 0x19, 0x7b, 0x7, 0x8c, 0xb, 0x15, 0xfb, 0x1b, 0x7, 0x6d, - 0xb, 0xfb, 0x78, 0xfb, 0x70, 0x25, 0xb, 0xfb, 0x3, 0xfb, 0x3, 0x25, - 0xb, 0xa4, 0x9c, 0xcf, 0x8f, 0x1e, 0x9e, 0xfb, 0xae, 0x78, 0x7, 0x60, - 0xa, 0xb, 0xfb, 0x23, 0xfb, 0x2c, 0xfb, 0x1a, 0x8b, 0x66, 0x76, 0x77, - 0x8c, 0x8d, 0x78, 0x1e, 0xe, 0x6c, 0x7d, 0x84, 0x7f, 0x84, 0x80, 0x1f, - 0xfb, 0x23, 0xb, 0x81, 0xc7, 0xf8, 0x24, 0x77, 0xf7, 0x8c, 0x90, 0xa, - 0xb, 0x6d, 0x6c, 0x43, 0x44, 0xfb, 0xf, 0x1b, 0xfb, 0x12, 0xfb, 0xb, - 0xe2, 0xf7, 0x68, 0xb, 0xbc, 0xac, 0x69, 0xb7, 0x1b, 0xa6, 0x9e, 0x9c, - 0xa5, 0xa5, 0x78, 0x9c, 0x70, 0x1f, 0xb, 0xc2, 0xb8, 0xb7, 0xc2, 0xc2, - 0x5e, 0xb8, 0x54, 0xb, 0x76, 0xf9, 0x46, 0x77, 0x1, 0xb, 0x1, 0xad, - 0xf7, 0x6, 0xb, 0x8f, 0x78, 0x1b, 0x2a, 0x60, 0x49, 0x53, 0x41, 0xc2, - 0x66, 0xc9, 0x68, 0x1f, 0xb, 0x75, 0xa7, 0xa7, 0xb, 0x7, 0xf7, 0x28, - 0xf7, 0x76, 0xd0, 0xf5, 0xac, 0x8f, 0xaf, 0x8f, 0x19, 0xb, 0xb6, 0x1b, - 0xbd, 0xa1, 0x5c, 0x6d, 0x6d, 0x6c, 0x59, 0x59, 0x53, 0x1f, 0xb, 0xf8, - 0x1, 0xa0, 0x76, 0xb, 0x6e, 0x89, 0x76, 0xb, 0x66, 0x88, 0x1e, 0x7c, - 0xf7, 0x64, 0x9a, 0x7, 0x5a, 0x8f, 0x7f, 0xb, 0x15, 0xa8, 0x6, 0x9c, - 0x91, 0xb, 0x87, 0x1e, 0xe, 0xbb, 0xf7, 0xca, 0xc3, 0x12, 0xf7, 0x51, - 0xd7, 0x54, 0xdc, 0xb, 0xf7, 0x69, 0x5, 0x76, 0x6, 0x80, 0x89, 0x7c, - 0x74, 0x6f, 0xb, 0xe2, 0x81, 0xd0, 0xf7, 0x64, 0xab, 0xb, 0x8f, 0x8c, - 0x8e, 0x1e, 0xb, 0x1a, 0xfc, 0x3c, 0x7, 0xb, 0x76, 0xf9, 0x2a, 0x77, - 0xb, 0x2e, 0x6f, 0x1e, 0xa4, 0x7d, 0x5, 0xb2, 0x9b, 0xa7, 0xb, 0xf7, - 0x63, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xa7, 0xb, 0xb6, 0x28, 0xee, - 0xef, 0xb6, 0xee, 0xd9, 0xda, 0x60, 0xb, 0xfb, 0x58, 0x76, 0xf7, 0x63, - 0xab, 0xf8, 0xe, 0xc7, 0xb, 0x85, 0x1a, 0x84, 0x8e, 0x87, 0x93, 0x1e, - 0xe, 0x73, 0xfb, 0x30, 0x76, 0xf9, 0xe9, 0x77, 0x1, 0xb, 0x73, 0xf8, - 0x5a, 0x76, 0xf7, 0x87, 0x77, 0x1, 0xb, 0x73, 0xf8, 0xa4, 0x76, 0xf7, - 0x3f, 0x77, 0x1, 0xb, 0x73, 0xfb, 0x30, 0xa4, 0xf9, 0x94, 0xa4, 0x1, - 0xb, 0xa8, 0x73, 0xa3, 0x6e, 0x6e, 0x74, 0x73, 0x6e, 0xb, 0xa1, 0x3d, - 0xa, 0x77, 0xb, 0x1a, 0x92, 0x88, 0x8f, 0x83, 0x1e, 0xe, 0xf7, 0x1f, - 0xe8, 0xf7, 0x1f, 0xb, 0xfb, 0x13, 0xfb, 0x42, 0x8b, 0xb, 0xf7, 0x5b, - 0xa0, 0x76, 0xb, 0xa7, 0xa7, 0xa0, 0xb, 0x1, 0x0, 0x1, 0x6, 0x0, - 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, - 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, - 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, - 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, - 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, - 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, - 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, - 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, - 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, - 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, - 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, - 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, - 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, - 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, - 0xc8, 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, - 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, - 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, - 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, - 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, - 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x0, 0x91, 0x0, 0x0, - 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x94, 0x0, 0x0, - 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, - 0x65, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, 0x81, 0x1, 0x0, - 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x86, 0x0, 0x0, - 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, 0x8, 0x0, 0x0, - 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x76, 0x0, 0x0, - 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, 0x6b, 0x1, 0x0, - 0x63, 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, 0x0, 0x0, 0xa6, 0x0, 0x0, - 0x6d, 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x3, 0x0, 0x5, 0x0, - 0x47, 0x0, 0x61, 0x0, 0xcc, 0x1, 0x51, 0x1, 0xe0, 0x2, 0x97, 0x2, - 0xaa, 0x2, 0xdd, 0x3, 0x14, 0x3, 0xb8, 0x3, 0xdd, 0x4, 0x0, 0x4, - 0x10, 0x4, 0x1f, 0x4, 0x34, 0x4, 0x7e, 0x4, 0xb4, 0x5, 0x3, 0x5, - 0x71, 0x5, 0xa1, 0x6, 0x12, 0x6, 0x72, 0x6, 0x9b, 0x7, 0x10, 0x7, - 0x7d, 0x7, 0x98, 0x7, 0xf6, 0x8, 0x1a, 0x8, 0x3e, 0x8, 0x5d, 0x8, - 0xc5, 0x9, 0x7e, 0x9, 0xc2, 0xa, 0x4a, 0xa, 0x7e, 0xa, 0xb5, 0xa, - 0xfc, 0xb, 0x54, 0xb, 0xc1, 0xc, 0x9, 0xc, 0x11, 0xc, 0x5f, 0xc, - 0xd3, 0xc, 0xf4, 0xd, 0x4c, 0xd, 0x67, 0xd, 0x8f, 0xd, 0xc6, 0xe, - 0x30, 0xe, 0xa4, 0xe, 0xfe, 0xf, 0x44, 0xf, 0x58, 0xf, 0xa3, 0x10, - 0x30, 0x10, 0xb0, 0x10, 0xfa, 0x11, 0x6, 0x11, 0x27, 0x11, 0x3e, 0x11, - 0x60, 0x11, 0x7f, 0x11, 0x8f, 0x11, 0xab, 0x12, 0x4, 0x12, 0x54, 0x12, - 0x94, 0x13, 0x3, 0x13, 0x1c, 0x13, 0x6b, 0x14, 0x1a, 0x14, 0x87, 0x14, - 0xbb, 0x15, 0xd, 0x15, 0x90, 0x15, 0xb2, 0x16, 0x4c, 0x16, 0x6a, 0x16, - 0xa7, 0x16, 0xeb, 0x17, 0x55, 0x17, 0xb0, 0x18, 0x17, 0x18, 0x5f, 0x18, - 0x85, 0x18, 0xdb, 0x19, 0x6e, 0x19, 0xf4, 0x1a, 0x17, 0x1a, 0x28, 0x1a, - 0x79, 0x1a, 0x91, 0x1a, 0xdc, 0x1b, 0x1c, 0x1b, 0x5e, 0x1b, 0xe1, 0x1c, - 0x8e, 0x1d, 0x10, 0x1d, 0x94, 0x1d, 0xae, 0x1e, 0x5f, 0x1e, 0x75, 0x1e, - 0xce, 0x1f, 0x44, 0x1f, 0x5e, 0x1f, 0x81, 0x1f, 0xf9, 0x20, 0x9, 0x20, - 0x40, 0x20, 0x7b, 0x20, 0x99, 0x20, 0xb6, 0x20, 0xbd, 0x21, 0x2f, 0x21, - 0x5e, 0x21, 0x71, 0x21, 0xb4, 0x21, 0xcf, 0x22, 0x8, 0x22, 0x34, 0x22, - 0x59, 0x22, 0x8c, 0x22, 0xba, 0x23, 0x20, 0x23, 0x3d, 0x23, 0x58, 0x23, - 0x6b, 0x23, 0xb7, 0x23, 0xd5, 0x23, 0xff, 0x24, 0xb1, 0x25, 0xe, 0x25, - 0x27, 0x25, 0x3c, 0x25, 0x4f, 0x25, 0x83, 0x25, 0x96, 0x25, 0xc1, 0x25, - 0xf5, 0x26, 0x26, 0x26, 0x66, 0x26, 0x99, 0x26, 0xa1, 0x26, 0xa9, 0x26, - 0xbb, 0x26, 0xf3, 0x27, 0x23, 0x27, 0x5b, 0x27, 0xd6, 0x28, 0x32, 0x28, - 0x44, 0x28, 0x5a, 0x28, 0x93, 0x28, 0xac, 0x28, 0xf0, 0x29, 0x72, 0x29, - 0xab, 0x29, 0xf5, 0x2a, 0x6, 0x2a, 0x31, 0x2a, 0x5c, 0x2a, 0xc0, 0x2b, - 0x65, 0x2b, 0xc1, 0x2b, 0xdf, 0x2b, 0xf6, 0x2c, 0xe, 0x2c, 0x2d, 0x2c, - 0x39, 0x2c, 0x44, 0x2c, 0x50, 0x2c, 0x6a, 0x2c, 0xda, 0x2d, 0x29, 0x2d, - 0x5a, 0x2d, 0x9b, 0x2d, 0xbd, 0x2d, 0xfa, 0x2e, 0x2e, 0x2e, 0x60, 0x2e, - 0xd8, 0x2e, 0xec, 0x2e, 0xfa, 0x2f, 0xf, 0x2f, 0x36, 0x2f, 0x51, 0x2f, - 0x90, 0x2f, 0xae, 0x2f, 0xb5, 0x2f, 0xe8, 0x30, 0x22, 0x30, 0xda, 0x31, - 0x68, 0x31, 0xbd, 0x32, 0x2c, 0x32, 0x68, 0x32, 0x80, 0x32, 0x99, 0x33, - 0xc, 0x33, 0x1b, 0x33, 0x23, 0x33, 0x4a, 0x33, 0x5b, 0x33, 0x91, 0x33, - 0xc3, 0x33, 0xe9, 0x34, 0x4, 0x34, 0xd, 0x34, 0x18, 0x34, 0x37, 0x34, - 0x4e, 0x34, 0x6f, 0x34, 0x89, 0x34, 0xa1, 0x34, 0xdc, 0x35, 0x75, 0x36, - 0x33, 0x36, 0x51, 0x36, 0x85, 0x37, 0x3a, 0x37, 0x50, 0x37, 0x70, 0x37, - 0x8b, 0x38, 0x1a, 0x38, 0xbf, 0x38, 0xd2, 0x39, 0x5c, 0x39, 0xdd, 0x20, - 0xe, 0x20, 0xe, 0x73, 0x82, 0xf5, 0xf8, 0xd7, 0x77, 0x1, 0xf7, 0x16, - 0xf7, 0x0, 0x14, 0x20, 0xf7, 0x44, 0xf7, 0x44, 0x15, 0x9c, 0x6, 0xa1, - 0xf7, 0x50, 0xa2, 0xf7, 0xe, 0xd8, 0x1a, 0xca, 0x82, 0xbd, 0x5d, 0x5f, - 0x82, 0x58, 0x4e, 0x3d, 0xa3, 0xfb, 0x10, 0xa1, 0xfb, 0x4e, 0x1e, 0x5d, - 0xfb, 0x18, 0x15, 0x6e, 0xa3, 0x73, 0xa8, 0xa8, 0xa5, 0xa2, 0xa8, 0xa8, - 0x71, 0xa4, 0x6e, 0x6e, 0x73, 0x73, 0x6e, 0x1e, 0xe, 0xbe, 0xf8, 0x58, - 0x76, 0xf7, 0x89, 0x77, 0x1, 0xd8, 0xe0, 0xdf, 0xe0, 0x3, 0xf7, 0xaa, - 0xf8, 0x43, 0x15, 0x44, 0xa, 0xfb, 0x3d, 0x16, 0x44, 0xa, 0xe, 0xa0, - 0x76, 0xf7, 0x6d, 0xbd, 0xf7, 0x21, 0xbc, 0xf7, 0x61, 0x77, 0x12, 0x8d, - 0xf8, 0x85, 0x17, 0xde, 0x16, 0xbf, 0x6, 0xaf, 0xf7, 0x6d, 0x5, 0xf7, - 0x1b, 0x6, 0x6b, 0xfb, 0x6d, 0x5, 0xc1, 0x6, 0xab, 0xf7, 0x6d, 0x5, - 0xf7, 0x1, 0xbd, 0x26, 0x6, 0x9f, 0xf7, 0x21, 0x5, 0xf7, 0x3, 0xbc, - 0x25, 0x6, 0xab, 0xf7, 0x61, 0x5, 0x55, 0x6, 0x6c, 0xfb, 0x61, 0x5, - 0xfb, 0x1c, 0x6, 0xaa, 0xf7, 0x61, 0x5, 0x54, 0x6, 0x6b, 0xfb, 0x61, - 0x5, 0xfb, 0xc, 0x5a, 0xf7, 0x7, 0x6, 0x75, 0xfb, 0x21, 0x5, 0xfb, - 0xf, 0x59, 0xf7, 0x7, 0x6, 0x13, 0x60, 0xc8, 0xbd, 0x15, 0x9f, 0xf7, - 0x21, 0x5, 0xf7, 0x1c, 0x6, 0x78, 0xfb, 0x21, 0x5, 0xe, 0x49, 0x76, - 0xe3, 0xa7, 0xf8, 0xf4, 0xa6, 0xca, 0x77, 0x12, 0xb7, 0x9a, 0xf7, 0x3f, - 0xad, 0xf7, 0x26, 0x9a, 0x17, 0xb7, 0xbe, 0x15, 0x7a, 0xa6, 0xc7, 0x69, - 0xee, 0x1b, 0x34, 0xad, 0xe2, 0x7, 0xf4, 0x99, 0xe3, 0xb8, 0xf7, 0x7, - 0x1a, 0xf7, 0x0, 0x4b, 0xae, 0xfb, 0x15, 0xd5, 0x1e, 0xf7, 0x8a, 0x7, - 0xbe, 0xd5, 0x70, 0xfb, 0x2, 0xa0, 0x1f, 0x9a, 0xf7, 0x3, 0x6, 0xb2, - 0x5f, 0x45, 0x99, 0x5c, 0x1b, 0xca, 0x69, 0x4c, 0x7, 0xfb, 0x13, 0x58, - 0x39, 0x44, 0x29, 0xe2, 0x57, 0xe6, 0x58, 0x1f, 0xfb, 0xae, 0x7, 0x2d, - 0x54, 0xbf, 0xf0, 0x75, 0x1f, 0x7c, 0x6, 0xf7, 0x4d, 0xf7, 0x76, 0x15, - 0x13, 0x64, 0x4f, 0xb3, 0x60, 0xab, 0xc0, 0x1a, 0xa1, 0x91, 0xde, 0xec, - 0x1e, 0xae, 0xfc, 0xf5, 0x15, 0xf7, 0x9d, 0x7, 0x13, 0x44, 0xca, 0x64, - 0xbe, 0x6b, 0x44, 0x1a, 0x25, 0x3a, 0x7c, 0x6a, 0x85, 0x1e, 0xe, 0xf8, - 0x70, 0x7f, 0xa9, 0x6e, 0x76, 0xf7, 0xc4, 0xa9, 0x9f, 0xa9, 0xf7, 0x91, - 0xa9, 0x9c, 0x77, 0x12, 0xbc, 0xd4, 0xf7, 0x24, 0xd3, 0xde, 0xd4, 0xf7, - 0x23, 0xd4, 0x13, 0x77, 0xc0, 0xf7, 0x34, 0x82, 0x15, 0xa9, 0x74, 0xf8, - 0x28, 0xf9, 0x29, 0x6a, 0xa2, 0x5, 0x13, 0xbb, 0xc0, 0xfc, 0x94, 0xfb, - 0x5b, 0x15, 0x3c, 0xb6, 0x25, 0xf1, 0xf1, 0xb5, 0xf1, 0xdb, 0xdb, 0x60, - 0xf0, 0x27, 0x1e, 0x8a, 0x6, 0x25, 0x60, 0x26, 0x3a, 0x1f, 0xd4, 0x8c, - 0x15, 0xbe, 0x96, 0xef, 0xc8, 0x1e, 0x8c, 0x6, 0xc9, 0x94, 0x26, 0x58, - 0x5b, 0x82, 0x24, 0x4d, 0x4d, 0x80, 0xf0, 0xbe, 0x1f, 0xf7, 0xbf, 0xfb, - 0xb1, 0x15, 0x3c, 0xb6, 0x25, 0xf1, 0xf0, 0xb6, 0xf1, 0xdb, 0xdb, 0x60, - 0xf1, 0x27, 0x1e, 0x8a, 0x6, 0x25, 0x60, 0x25, 0x3a, 0x1f, 0xd4, 0x8c, - 0x15, 0xc0, 0x96, 0xee, 0xc7, 0x1e, 0x8c, 0x6, 0xc9, 0x94, 0x26, 0x58, - 0x5a, 0x82, 0x24, 0x4e, 0x4d, 0x80, 0xf1, 0xbd, 0x1f, 0xe, 0xf8, 0x39, - 0x7e, 0xbf, 0x57, 0xd2, 0xf8, 0x4, 0x77, 0xf7, 0x82, 0xab, 0x12, 0xb5, - 0xe7, 0xcf, 0xda, 0x8b, 0xf7, 0x31, 0x8b, 0xc0, 0x13, 0x7f, 0xf7, 0xd5, - 0xf8, 0x34, 0x15, 0x77, 0xb4, 0x77, 0xbf, 0xbb, 0x1a, 0xc9, 0xb0, 0xa4, - 0xb4, 0xb6, 0xaf, 0x69, 0x59, 0x38, 0x31, 0x5c, 0x70, 0x7d, 0x1e, 0xf7, - 0x0, 0xfb, 0xe6, 0x15, 0x6d, 0xa8, 0xc7, 0x4e, 0xdc, 0x1b, 0xf5, 0xb7, - 0xf7, 0x1, 0x8f, 0x8c, 0x1f, 0x7c, 0x96, 0x5, 0x6d, 0x73, 0x77, 0x74, - 0x57, 0x1b, 0x41, 0x47, 0xdc, 0x99, 0x82, 0x1f, 0xef, 0xf7, 0x2d, 0xaf, - 0xc3, 0xbe, 0xb1, 0xaf, 0x90, 0x19, 0xa0, 0xfb, 0x6c, 0x76, 0x7, 0xb0, - 0x88, 0xa6, 0x7c, 0x65, 0x1a, 0x55, 0x4d, 0x3c, 0x6e, 0x65, 0x1e, 0x58, - 0xc9, 0x5e, 0xd3, 0x67, 0xd3, 0x8, 0xcb, 0xa9, 0xe6, 0xb7, 0xed, 0x1a, - 0xd7, 0x4c, 0xb7, 0x42, 0x26, 0x57, 0x36, 0x43, 0x5b, 0x98, 0x6a, 0xa1, - 0x4e, 0x1e, 0x23, 0x4f, 0x30, 0x46, 0x23, 0x1a, 0xfb, 0x17, 0xf3, 0x71, - 0xc8, 0xf7, 0xb, 0xca, 0xc3, 0xae, 0xb3, 0x1e, 0x72, 0xa5, 0x15, 0x13, - 0xbf, 0x51, 0x46, 0x5a, 0x84, 0x74, 0x1b, 0x44, 0x51, 0xcb, 0xd8, 0xe3, - 0xd4, 0xb9, 0xb8, 0xa8, 0x1f, 0xb5, 0x3b, 0xbf, 0x32, 0xc5, 0x45, 0x8, - 0xe, 0xfb, 0x45, 0xf8, 0x58, 0x76, 0xf7, 0x89, 0x77, 0x1, 0xbb, 0xe0, - 0x3, 0xe5, 0xf8, 0x43, 0x15, 0x44, 0xa, 0xe, 0x90, 0x1d, 0xbb, 0xdc, - 0x3, 0xf7, 0xbb, 0xfb, 0x45, 0x15, 0x97, 0x9b, 0x5, 0xfb, 0x24, 0xf7, - 0x3, 0x69, 0xf7, 0x66, 0xf1, 0x1a, 0xf7, 0x92, 0xf0, 0xe0, 0xd5, 0xc6, - 0x1e, 0x82, 0x9b, 0x5, 0xfb, 0x2f, 0x2f, 0x2f, 0xfb, 0x2a, 0xfb, 0x40, - 0x1a, 0xfb, 0x73, 0xea, 0x27, 0xf7, 0x2c, 0xfb, 0x8, 0x1e, 0xe, 0x90, - 0x1d, 0xf7, 0x5e, 0xde, 0x3, 0xa8, 0xfb, 0x35, 0x15, 0x94, 0x7b, 0x5, - 0xf7, 0x2f, 0xf7, 0x1, 0xe7, 0xf7, 0x19, 0xf7, 0x40, 0x1a, 0xf7, 0x73, - 0x2f, 0xf7, 0x0, 0xfb, 0x2c, 0xf7, 0x0, 0x1e, 0x7f, 0x7b, 0x5, 0xf7, - 0x3e, 0xfb, 0xd, 0x8e, 0xfb, 0x5e, 0x25, 0x1a, 0xfb, 0x71, 0xfb, 0x27, - 0xfb, 0x31, 0x71, 0x79, 0x1e, 0xe, 0xf8, 0x65, 0x90, 0x8b, 0xf7, 0xf, - 0xfb, 0x8, 0x76, 0xa9, 0x77, 0xb7, 0xf7, 0x13, 0x12, 0xf7, 0x73, 0xa9, - 0x13, 0x2c, 0xf7, 0x84, 0xf8, 0x5c, 0x15, 0x8c, 0x84, 0x5, 0x94, 0x4f, - 0x67, 0x55, 0x6c, 0x1a, 0x72, 0x9d, 0x7d, 0x9c, 0xa4, 0x99, 0xa2, 0x9e, - 0x1e, 0xa9, 0x6f, 0x98, 0xee, 0x1a, 0x92, 0x7, 0x92, 0x88, 0x5, 0x71, - 0xc9, 0xa2, 0x3e, 0xb7, 0x1b, 0x9e, 0x9c, 0x97, 0xa3, 0x1f, 0x13, 0xc4, - 0xc6, 0x40, 0x6c, 0x3a, 0xbe, 0x1e, 0x83, 0x90, 0x5, 0xf2, 0xcc, 0xc7, - 0x61, 0xcb, 0x1a, 0xa7, 0x73, 0x93, 0x7f, 0x66, 0x71, 0x47, 0x66, 0x4a, - 0x1e, 0x84, 0x87, 0x5, 0x13, 0x1c, 0xa5, 0x7, 0xbf, 0xa6, 0xbb, 0xa6, - 0x1a, 0x98, 0x83, 0xa5, 0x71, 0x84, 0x6d, 0x8b, 0x64, 0x1e, 0x5f, 0xa4, - 0x7e, 0x3a, 0x1a, 0x7e, 0x7, 0xbe, 0x2c, 0x8c, 0xc1, 0x5e, 0x1b, 0x70, - 0x85, 0x70, 0x84, 0x51, 0xe1, 0xa1, 0xcf, 0x60, 0x1f, 0x96, 0x84, 0x5, - 0x37, 0x51, 0x3a, 0xac, 0x4c, 0x1a, 0x80, 0x93, 0x76, 0xa5, 0xa2, 0x90, - 0x91, 0xb0, 0xac, 0x1e, 0x13, 0x2c, 0xa4, 0xa7, 0x8b, 0x8b, 0xbe, 0xad, - 0x8, 0xe, 0xf7, 0x63, 0xa0, 0x76, 0xf7, 0x89, 0xb3, 0x1, 0xf7, 0x9a, - 0xb5, 0x3, 0xa9, 0xf7, 0x7c, 0x15, 0xf7, 0x7c, 0xfb, 0x7c, 0xb5, 0xf7, - 0x7c, 0xf7, 0x7a, 0xb3, 0xfb, 0x7a, 0xf7, 0x7e, 0x61, 0xfb, 0x7e, 0xfb, - 0x7c, 0x6, 0xe, 0x20, 0x7f, 0xf7, 0x6, 0x38, 0x76, 0x12, 0x13, 0x80, - 0xd5, 0xfb, 0xe, 0x15, 0x94, 0x78, 0x5, 0x3f, 0xa, 0x79, 0x60, 0x5f, - 0xb3, 0x78, 0xaa, 0x95, 0x1e, 0x13, 0x40, 0x8c, 0x8f, 0x94, 0x94, 0x38, - 0x1d, 0xe, 0x73, 0xf7, 0x56, 0xca, 0x1, 0xb2, 0xf7, 0x56, 0x15, 0xf7, - 0x8a, 0xca, 0xfb, 0x8a, 0x6, 0xe, 0x20, 0x80, 0xf7, 0x3, 0x1, 0xd1, - 0xf7, 0x3, 0x3, 0xd1, 0xb6, 0x15, 0x43, 0x1d, 0xe, 0x3c, 0x92, 0x7a, - 0x1d, 0x83, 0xf7, 0xbb, 0x3, 0x83, 0x7d, 0x15, 0xb3, 0x6, 0xf7, 0x93, - 0xf9, 0x46, 0x5, 0x66, 0x6, 0xe, 0x7d, 0xa5, 0xf9, 0x12, 0xa5, 0x1, - 0xa3, 0xeb, 0xf7, 0x98, 0xeb, 0x3, 0xf7, 0xc, 0xf7, 0xdf, 0x15, 0xcf, - 0x8d, 0xf7, 0x8f, 0xf7, 0x14, 0xf7, 0x14, 0x8d, 0xfb, 0x8f, 0x47, 0x3c, - 0x89, 0xfb, 0x84, 0xfb, 0x14, 0xfb, 0x14, 0x89, 0xf7, 0x82, 0xdc, 0x1e, - 0x2b, 0x16, 0xfb, 0xd, 0xb5, 0xfb, 0x74, 0xf7, 0x4c, 0xf7, 0x4c, 0xb5, - 0xf7, 0x74, 0xf7, 0xd, 0xf7, 0xa, 0x61, 0xf7, 0x77, 0xfb, 0x4c, 0xfb, - 0x4c, 0x61, 0xfb, 0x77, 0xfb, 0xa, 0x1e, 0xe, 0xa0, 0x76, 0xf9, 0x38, - 0x77, 0x1, 0xf7, 0x69, 0xe1, 0x3, 0xf7, 0x3, 0x16, 0xf7, 0xaf, 0x9a, - 0x6, 0x40, 0x77, 0x99, 0xd6, 0x1f, 0xf8, 0xce, 0x7, 0x83, 0x8d, 0xfb, - 0x48, 0x30, 0x5, 0x7d, 0x7, 0xa1, 0xc3, 0x8b, 0x8b, 0x97, 0x1b, 0xad, - 0x8b, 0x71, 0x76, 0x1f, 0xfc, 0x4f, 0x7, 0x41, 0x5f, 0x7f, 0x51, 0x89, - 0x1e, 0xe, 0x8b, 0xd7, 0xf8, 0xa2, 0xd5, 0x1, 0xf7, 0xe6, 0xe1, 0x3, - 0xa9, 0x16, 0xf8, 0x1a, 0x6, 0xc2, 0xf7, 0x1d, 0x7e, 0x90, 0x5, 0x4c, - 0x64, 0x6c, 0x88, 0x66, 0x1b, 0xfb, 0x77, 0x6, 0xf7, 0x3c, 0xf7, 0x44, - 0x5, 0xb7, 0xba, 0xdf, 0xe6, 0xf5, 0x1a, 0xf7, 0x4, 0x31, 0xcf, 0x30, - 0x33, 0x2c, 0x5b, 0xfb, 0x2b, 0x6d, 0x1e, 0xa1, 0x86, 0x5, 0xc1, 0xa1, - 0xa9, 0xd7, 0xe6, 0x1b, 0xf7, 0xa, 0xa4, 0x2f, 0x58, 0x40, 0x60, 0x31, - 0x34, 0x2e, 0x1f, 0xfb, 0x46, 0xfb, 0x51, 0x5, 0xe, 0x7d, 0xaf, 0xf8, - 0xe6, 0xc7, 0x12, 0xf7, 0xfb, 0xc5, 0x51, 0xd3, 0x13, 0xd0, 0xf7, 0x2d, - 0xf7, 0xdc, 0x15, 0xd0, 0x8d, 0xa4, 0x88, 0xaf, 0x78, 0x8, 0xcb, 0x6a, - 0x97, 0x2b, 0x72, 0x1a, 0x40, 0x62, 0x52, 0x2e, 0x6e, 0x73, 0x98, 0x99, - 0x75, 0x1e, 0x99, 0x74, 0x75, 0x9a, 0x74, 0x1b, 0x7b, 0x74, 0x84, 0x6f, - 0x57, 0xe2, 0x86, 0xa3, 0xf7, 0x31, 0xf7, 0xc, 0xcd, 0xf7, 0x22, 0xf7, - 0x18, 0x36, 0xc4, 0x61, 0x9d, 0x1f, 0x13, 0x60, 0xcd, 0xb6, 0xba, 0xb6, - 0xc1, 0x1a, 0xb4, 0x70, 0xe9, 0xfb, 0x15, 0x48, 0xfb, 0x3, 0x6c, 0xfb, - 0x17, 0x63, 0x1e, 0x9c, 0x87, 0x5, 0xa7, 0x9a, 0xcb, 0xd9, 0xe6, 0x1b, - 0xd5, 0xad, 0x56, 0x58, 0x2f, 0x2c, 0x63, 0x30, 0x6e, 0x1f, 0xe, 0xa0, - 0x76, 0xf7, 0x31, 0xcb, 0xf8, 0x5b, 0x77, 0x1, 0xf7, 0xb8, 0xd9, 0x3, - 0x97, 0xf7, 0x31, 0x15, 0xf7, 0xad, 0xfb, 0x31, 0xd8, 0xf7, 0x31, 0xf1, - 0xcb, 0x25, 0xf8, 0x5b, 0x5f, 0x6, 0xfb, 0xce, 0xfc, 0x5b, 0x5, 0xb3, - 0x16, 0xf7, 0x82, 0xf7, 0xf2, 0x5, 0x8d, 0xfb, 0xf2, 0x6, 0xe, 0x7d, - 0xb0, 0xf8, 0xcd, 0xda, 0x12, 0xf7, 0xf8, 0xd1, 0x17, 0xf7, 0x1f, 0xf8, - 0x79, 0x15, 0xb5, 0xe3, 0x5, 0xf7, 0x4e, 0x6, 0x96, 0x9e, 0x8b, 0x94, - 0x8e, 0x1f, 0xb1, 0xda, 0x82, 0x9c, 0x5, 0x7c, 0x80, 0x78, 0x80, 0x71, - 0x1b, 0xfb, 0x61, 0x6, 0x24, 0xfb, 0x84, 0x5, 0x84, 0x88, 0x8e, 0x85, - 0x91, 0x1b, 0xf7, 0x0, 0x87, 0xf7, 0x45, 0x69, 0xfb, 0x34, 0x1a, 0xfb, - 0xe, 0x41, 0x53, 0x4a, 0x70, 0x76, 0x9b, 0x9b, 0x75, 0x1e, 0x13, 0xc0, - 0x9a, 0x76, 0x74, 0x9a, 0x6c, 0x1b, 0x63, 0x8b, 0x6e, 0x81, 0x67, 0xba, - 0x73, 0xda, 0x1f, 0x13, 0x60, 0xf7, 0x32, 0xf7, 0x2, 0xf5, 0xf7, 0x19, - 0xe4, 0x80, 0x9e, 0x60, 0xbf, 0x1f, 0x13, 0x40, 0x50, 0xd3, 0x2d, 0x99, - 0x3b, 0x99, 0x8, 0xe, 0x7d, 0xa7, 0xf7, 0xe6, 0xb8, 0xf7, 0xb2, 0x77, - 0x1, 0xbe, 0xe8, 0xf7, 0x77, 0xe5, 0x3, 0xf7, 0x2e, 0xf8, 0xd, 0x15, - 0x9e, 0xf7, 0xe, 0xf6, 0xe6, 0xf7, 0x46, 0xa7, 0x89, 0xaf, 0x18, 0xfb, - 0x86, 0x83, 0xfb, 0x3e, 0xfb, 0x40, 0xfb, 0x5f, 0x1a, 0xfb, 0x66, 0xf1, - 0x40, 0xf7, 0xa, 0xf7, 0x46, 0xa8, 0xf7, 0x33, 0xd4, 0xf7, 0x1a, 0x44, - 0xcd, 0x21, 0x53, 0x64, 0x86, 0x67, 0x5e, 0x1e, 0x75, 0xfb, 0x21, 0x15, - 0xc7, 0x90, 0x9e, 0x97, 0x9c, 0x1e, 0xa7, 0x9f, 0xbc, 0x97, 0xad, 0x1b, - 0xf5, 0xa2, 0x31, 0x24, 0xfb, 0x5, 0x64, 0x57, 0x4c, 0x40, 0x43, 0xc1, - 0xf7, 0x3c, 0x1f, 0xe, 0x98, 0x76, 0xf8, 0xe8, 0xd5, 0x1, 0x9f, 0xf8, - 0x41, 0x3, 0xf7, 0x40, 0x83, 0x15, 0xcc, 0x6, 0xf7, 0x68, 0xf9, 0x22, - 0x5, 0x9b, 0xfc, 0x6, 0x7, 0x50, 0xfb, 0x27, 0x9c, 0x83, 0x5, 0xbf, - 0xac, 0xa7, 0xa8, 0xcc, 0x1b, 0xf7, 0x63, 0x6, 0xe, 0x7d, 0xa7, 0xf9, - 0xe, 0xa7, 0x12, 0xd6, 0xd7, 0x45, 0xd1, 0xf7, 0x60, 0xd0, 0x4c, 0xd7, - 0x13, 0xe4, 0xf7, 0x6c, 0xf7, 0xcc, 0x15, 0xf7, 0x7, 0x39, 0xbb, 0x6d, - 0x41, 0x1a, 0x45, 0x52, 0x61, 0x4c, 0x3a, 0x5d, 0xcc, 0xd8, 0xe6, 0xbf, - 0xb2, 0xab, 0xa5, 0x1e, 0x71, 0x9f, 0x15, 0x32, 0x47, 0x5e, 0x6c, 0x34, - 0x1a, 0x3d, 0xcd, 0x39, 0xf7, 0x10, 0xf7, 0x3a, 0xb6, 0xf7, 0x4, 0xbf, - 0xce, 0x7a, 0xc5, 0xfb, 0x1a, 0xeb, 0x1e, 0x13, 0xd8, 0xc1, 0xa8, 0xd7, - 0xb5, 0xe7, 0x1a, 0xd7, 0x43, 0xcd, 0xfb, 0x5, 0x35, 0x26, 0x55, 0x26, - 0x3a, 0xb7, 0x69, 0xdf, 0x41, 0x1e, 0xd6, 0xc4, 0x15, 0x67, 0xa2, 0x2e, - 0xc4, 0xd9, 0x1a, 0xbb, 0xab, 0xc0, 0xd6, 0xd8, 0xb8, 0x55, 0x54, 0x33, - 0x4d, 0x66, 0x65, 0x72, 0x1e, 0xe, 0x8b, 0x76, 0xf7, 0x74, 0xb6, 0xf8, - 0x19, 0xa7, 0x1, 0xa9, 0xe7, 0xf7, 0x88, 0xe8, 0x3, 0xc6, 0x75, 0x15, - 0xf7, 0x91, 0x9b, 0xf7, 0x27, 0xf7, 0x51, 0xf7, 0x69, 0x1a, 0xdf, 0x73, - 0xc7, 0x63, 0xbb, 0x1e, 0xbc, 0x64, 0x54, 0xa8, 0x4e, 0x1b, 0xfb, 0x17, - 0x89, 0x3c, 0x23, 0xfb, 0x11, 0x1a, 0x38, 0xba, 0x23, 0xf7, 0x19, 0xbe, - 0xbf, 0x92, 0xb0, 0xb7, 0x1e, 0x8c, 0x8a, 0x83, 0x73, 0x58, 0xfb, 0x78, - 0xfb, 0x87, 0x62, 0x19, 0xf7, 0xc7, 0xf7, 0xf9, 0x15, 0x54, 0x4a, 0x82, - 0x5b, 0x20, 0x76, 0xee, 0xd7, 0xa7, 0x93, 0xbb, 0x9c, 0xae, 0x1e, 0xaf, - 0x9e, 0xa6, 0xa4, 0xb6, 0x1b, 0xcd, 0xad, 0x5b, 0x52, 0x9b, 0x1f, 0x9a, - 0x56, 0x8c, 0x59, 0x89, 0x68, 0x8, 0xe, 0x3c, 0x80, 0xf7, 0x3, 0xf7, - 0x8c, 0xf7, 0x3, 0x8b, 0x77, 0x1, 0xdc, 0xf7, 0x3, 0x3, 0xdc, 0xf8, - 0x26, 0x15, 0x43, 0x1d, 0xfb, 0xfb, 0x4, 0x43, 0x1d, 0xe, 0x3c, 0xfb, - 0xc, 0x76, 0xf7, 0x28, 0x76, 0xf7, 0x8, 0x77, 0xf7, 0x9d, 0xf7, 0x4, - 0x12, 0xdb, 0xf7, 0x4, 0xfb, 0x4, 0xf7, 0x1f, 0x13, 0x94, 0xed, 0xfb, - 0xe, 0x15, 0x94, 0x78, 0x5, 0x13, 0x74, 0xac, 0x97, 0xda, 0xcc, 0xd1, - 0x1a, 0xdf, 0x50, 0x97, 0x76, 0x80, 0x5b, 0x85, 0x54, 0x66, 0xa3, 0x79, - 0xab, 0x92, 0x96, 0x94, 0x8c, 0x8e, 0x1e, 0x8c, 0x8f, 0x8e, 0x8c, 0x8d, - 0x1b, 0x13, 0x18, 0x39, 0xa, 0x79, 0xf8, 0xa1, 0x15, 0x13, 0x10, 0x6c, - 0xa4, 0x72, 0xaa, 0x1e, 0x13, 0x98, 0xaa, 0xa4, 0xa4, 0xaa, 0xaa, 0x72, - 0xa4, 0x6c, 0x6c, 0x72, 0x72, 0x6c, 0x1f, 0xe, 0x8c, 0x1d, 0xf8, 0x90, - 0xfc, 0x7e, 0xca, 0x3, 0xa7, 0xf7, 0x81, 0x15, 0xf8, 0x90, 0xfb, 0x89, - 0x5, 0xb8, 0x7, 0xfc, 0x51, 0xf7, 0x6c, 0xf8, 0x51, 0xf7, 0x6b, 0x5, - 0xb9, 0x7, 0xfc, 0x90, 0xfb, 0x8c, 0x5, 0xe, 0xf7, 0x63, 0xf7, 0xc, - 0xcd, 0xf7, 0x1a, 0xcd, 0x63, 0xb3, 0x12, 0x13, 0xa0, 0xa9, 0xf7, 0xee, - 0x15, 0xf8, 0x8c, 0xb3, 0xfc, 0x8c, 0x6, 0xfb, 0x9e, 0x4, 0xf8, 0x8c, - 0x6, 0x13, 0xc0, 0xb6, 0xfc, 0x8c, 0x7, 0xe, 0x8c, 0x1d, 0x8b, 0x3, - 0xa7, 0x83, 0x15, 0xf8, 0x90, 0xf7, 0x89, 0x5, 0xa8, 0x7, 0xfc, 0x90, - 0xf7, 0x8c, 0x5, 0x5d, 0x7, 0xf8, 0x51, 0xfb, 0x6b, 0xfc, 0x51, 0xfb, - 0x6c, 0x5, 0xe, 0xe2, 0x83, 0xf4, 0xf7, 0xfe, 0x77, 0xf7, 0x63, 0xa9, - 0x12, 0xcf, 0xbe, 0xf7, 0x5f, 0xe7, 0x17, 0xf7, 0x77, 0xf7, 0x38, 0x15, - 0x9c, 0x6, 0x99, 0xe1, 0xa5, 0xb3, 0xc2, 0xcb, 0x8, 0xa9, 0xae, 0xb8, - 0xd1, 0xbe, 0x1a, 0xf1, 0x44, 0xcb, 0xfb, 0x4, 0x46, 0x2d, 0x56, 0x26, - 0x69, 0x95, 0x6e, 0xb3, 0xa7, 0x96, 0xa3, 0x9c, 0x9c, 0x83, 0x97, 0x82, - 0x95, 0x1e, 0x81, 0x97, 0x80, 0x95, 0x99, 0x1a, 0xac, 0xbe, 0xb1, 0xb5, - 0xd8, 0xac, 0x48, 0x4f, 0x63, 0x78, 0x46, 0x79, 0x63, 0x1e, 0x69, 0x3d, - 0x73, 0x46, 0x50, 0x1a, 0x61, 0xfb, 0xc, 0x15, 0x6e, 0xa2, 0x74, 0xa8, - 0xa8, 0xa3, 0xa2, 0xa8, 0x1e, 0x13, 0x80, 0x94, 0x1d, 0x1e, 0xe, 0xf8, - 0xc8, 0x7d, 0xb2, 0xf7, 0xa, 0xac, 0x7f, 0xb7, 0xf7, 0x7a, 0xb7, 0xf7, - 0x37, 0xaa, 0x12, 0xf7, 0x8, 0xdf, 0xf7, 0xd, 0xd2, 0xf8, 0xd, 0xb3, - 0x13, 0xbf, 0xf8, 0x1c, 0xf7, 0xa3, 0x15, 0xf7, 0xd, 0xe4, 0xd3, 0xbb, - 0xa9, 0x94, 0x74, 0x61, 0x5a, 0x7d, 0x63, 0x7e, 0x6b, 0x1e, 0x4e, 0x72, - 0x6a, 0x6d, 0x6f, 0x1b, 0x68, 0x6f, 0xa3, 0xc7, 0x1f, 0xf7, 0x22, 0x52, - 0x15, 0x7e, 0x8a, 0xa3, 0x51, 0xcd, 0x1b, 0xf7, 0xb, 0xce, 0xf7, 0x1c, - 0xf1, 0xf7, 0x3d, 0xfb, 0x24, 0xf7, 0x12, 0xfb, 0x4c, 0xfb, 0x5a, 0xfb, - 0x3b, 0xfb, 0x25, 0xfb, 0x6c, 0xfb, 0x1a, 0xf7, 0x6, 0xfb, 0x57, 0xf7, - 0x99, 0xd9, 0xd9, 0xab, 0xa8, 0xca, 0x1f, 0x7f, 0xa9, 0x5, 0x71, 0x52, - 0x4d, 0x71, 0x32, 0x1b, 0xfb, 0x42, 0xfb, 0x8, 0xf7, 0x1d, 0xf7, 0x23, - 0xf7, 0x72, 0xf7, 0x14, 0xf7, 0xa, 0xf7, 0x2d, 0xf7, 0x4b, 0xf4, 0xfb, - 0x2b, 0xfb, 0x6, 0x1f, 0x13, 0xdf, 0x35, 0x5a, 0xfb, 0xa, 0x3a, 0x5e, - 0x91, 0xbc, 0x9a, 0x8e, 0x1e, 0xcd, 0xf7, 0x9c, 0x5, 0x46, 0x6, 0x80, - 0x5b, 0x5, 0x13, 0x32, 0xa3, 0x7e, 0x7f, 0xa7, 0x5d, 0x1b, 0xfb, 0x1b, - 0x4d, 0xfb, 0x3e, 0x45, 0xfb, 0x5, 0xcf, 0x80, 0xa7, 0xc5, 0xb9, 0xbf, - 0x9d, 0x96, 0x1f, 0xe, 0x5c, 0x1d, 0x1, 0x9a, 0x16, 0xf7, 0x5a, 0x9e, - 0x6, 0x76, 0x51, 0xa4, 0xb2, 0x9a, 0x1f, 0xbd, 0xf7, 0x19, 0x5, 0xf7, - 0x9a, 0x6, 0xba, 0x27, 0x93, 0x7d, 0x8f, 0x7b, 0x8, 0x5f, 0x96, 0x60, - 0x74, 0x66, 0x1b, 0x78, 0xf7, 0x93, 0x9e, 0x7, 0x73, 0x68, 0xa1, 0xb8, - 0x77, 0x1f, 0xfb, 0x98, 0xf8, 0xe0, 0x5, 0x77, 0x6, 0xfb, 0x77, 0xfc, - 0xab, 0x78, 0x71, 0x7c, 0x6d, 0x73, 0x5c, 0x6c, 0x7b, 0x2e, 0xa, 0xe, - 0xf7, 0xca, 0x8b, 0xb0, 0xf7, 0xb5, 0xb2, 0xf7, 0x98, 0xb0, 0x12, 0xf7, - 0x5, 0xf1, 0xf7, 0x86, 0xf1, 0x3a, 0xf7, 0x7, 0x13, 0xf4, 0x9c, 0x16, - 0xf7, 0xe2, 0x6, 0xf7, 0x72, 0x9f, 0xf7, 0x1e, 0xb1, 0xf4, 0x3b, 0xbb, - 0x34, 0x9d, 0x1f, 0x8d, 0x7, 0x13, 0xf8, 0xb8, 0x96, 0xe3, 0xa1, 0xf7, - 0x3, 0x1a, 0xf7, 0x2f, 0xfb, 0x43, 0x99, 0x34, 0x1e, 0xfb, 0xac, 0x78, - 0x6, 0xda, 0x9c, 0x66, 0x77, 0x1f, 0xfc, 0x86, 0x7, 0x6c, 0x7f, 0x67, - 0x37, 0x89, 0x1e, 0xf7, 0x5a, 0xf7, 0xc7, 0x15, 0xeb, 0xab, 0x86, 0x81, - 0xad, 0x1f, 0x13, 0xf4, 0xbf, 0x7b, 0xbc, 0x6a, 0x39, 0x1a, 0xfb, 0x1a, - 0xfb, 0xd, 0x82, 0x49, 0x51, 0x79, 0x99, 0xb0, 0x1e, 0xf7, 0xa9, 0x4, - 0xf7, 0x70, 0x7, 0x9a, 0x8d, 0xa3, 0x9f, 0x1e, 0x95, 0x99, 0x8c, 0xa0, - 0x1b, 0x13, 0xf8, 0xd2, 0xf3, 0x78, 0xfb, 0xb, 0xfb, 0xb, 0xfb, 0xb, - 0x89, 0x6f, 0x1f, 0xe, 0xf7, 0xca, 0x7d, 0xb7, 0xf8, 0x39, 0x77, 0xf7, - 0x61, 0xb3, 0x1, 0xa7, 0xf7, 0x8, 0x3, 0xf8, 0xfb, 0xf7, 0x17, 0x15, - 0x77, 0x1d, 0xf7, 0x57, 0xdb, 0xf7, 0x4, 0xf7, 0x2d, 0xf7, 0xf, 0xd3, - 0x3b, 0x22, 0xa4, 0x1f, 0xa2, 0x6, 0x82, 0xf7, 0x75, 0x59, 0x1d, 0xf7, - 0x4c, 0xe1, 0xf7, 0x11, 0x8d, 0x8c, 0x1f, 0xe, 0xf8, 0x1, 0x8b, 0xb0, - 0xf8, 0xe0, 0xb0, 0x1, 0xf3, 0xf1, 0xf7, 0xf3, 0x58, 0x1d, 0x85, 0x96, - 0x72, 0x67, 0x1a, 0xfc, 0x7c, 0x7, 0x6c, 0x7f, 0x69, 0x3f, 0x87, 0x1e, - 0xf7, 0x52, 0xd0, 0x15, 0xf8, 0x7c, 0x7, 0x9f, 0x8b, 0xa8, 0x8b, 0xa, - 0xfb, 0xa8, 0xfb, 0x8a, 0x7b, 0x4b, 0x8c, 0x1e, 0x5b, 0x8c, 0x7f, 0x9b, - 0xad, 0x1a, 0xe, 0x7b, 0xa, 0xf7, 0xb5, 0xb4, 0xf7, 0x9a, 0xb1, 0x12, - 0xee, 0xf1, 0xf7, 0x9c, 0xa2, 0x17, 0x62, 0xa, 0x96, 0xb4, 0x1f, 0xf7, - 0x82, 0x7, 0xf7, 0x2e, 0x89, 0xde, 0x8a, 0x9a, 0x7d, 0x97, 0x3b, 0x19, - 0x6f, 0xa, 0x44, 0x80, 0x81, 0x73, 0x32, 0x1b, 0xfb, 0x2e, 0xf7, 0x68, - 0x6, 0xad, 0x97, 0x95, 0x33, 0x1d, 0x6, 0x13, 0x10, 0x78, 0x7, 0xca, - 0x86, 0xa3, 0x71, 0x6b, 0x1a, 0xfc, 0x7d, 0x7, 0x64, 0x74, 0x6e, 0x4b, - 0x84, 0x1d, 0x99, 0x1d, 0xf7, 0x7b, 0x77, 0xf7, 0x8, 0xb4, 0xf7, 0x9a, - 0xb1, 0x1, 0xee, 0xf1, 0xf7, 0x8a, 0xa2, 0xb4, 0xa4, 0x3, 0x97, 0x16, - 0xf7, 0xac, 0x9e, 0x6, 0x44, 0x8e, 0x77, 0xa1, 0xd6, 0x1a, 0xf7, 0x65, - 0x7, 0xf7, 0x25, 0x89, 0xd6, 0x8a, 0xa3, 0x81, 0x96, 0x37, 0x19, 0x6f, - 0xa, 0x40, 0x81, 0x79, 0x77, 0x39, 0x1b, 0xfb, 0x25, 0xf7, 0x68, 0x6, - 0xa9, 0x92, 0x99, 0xa4, 0x1e, 0xf7, 0x1c, 0x4e, 0xa, 0xf7, 0x23, 0xfc, - 0xaa, 0x78, 0x6, 0xca, 0x86, 0xa3, 0x71, 0x6b, 0x1a, 0xfc, 0x61, 0x7, - 0x45, 0x7f, 0x71, 0x40, 0x84, 0x1d, 0xf8, 0x1, 0x7d, 0xb3, 0xf7, 0xca, - 0x9d, 0xf7, 0xae, 0xb3, 0x1, 0xab, 0xf7, 0x6, 0xf8, 0x17, 0xec, 0x3, - 0xf8, 0x5a, 0xf7, 0xe4, 0x15, 0xcf, 0x86, 0x9f, 0x7b, 0x49, 0x98, 0xa, - 0x67, 0x46, 0x74, 0x47, 0xfb, 0x2f, 0x23, 0xf7, 0x5, 0xf7, 0x49, 0xf7, - 0x91, 0xf7, 0x27, 0xca, 0xea, 0xf7, 0x20, 0xbf, 0x28, 0x43, 0xa6, 0x1e, - 0xa2, 0x6, 0x83, 0xf7, 0x67, 0x5, 0x75, 0x6, 0x6f, 0x85, 0x6a, 0x86, - 0x83, 0x6b, 0x5d, 0xac, 0x26, 0x1b, 0xfb, 0x68, 0xfb, 0x16, 0xfb, 0x3b, - 0xfb, 0x3c, 0xfb, 0x80, 0xf7, 0x2a, 0xfb, 0xb, 0xf7, 0x6a, 0xf7, 0x2, - 0xf7, 0x19, 0xc5, 0x99, 0x1f, 0xf7, 0x53, 0x7, 0xd2, 0xa5, 0x97, 0xb7, - 0x8f, 0x1e, 0x9d, 0xfb, 0x93, 0x7, 0xe, 0x80, 0x1d, 0xf7, 0xcf, 0xb7, - 0xf7, 0xc3, 0x77, 0x1, 0xf6, 0xf1, 0xf7, 0xc3, 0xf1, 0x3, 0x9e, 0x16, - 0xf7, 0xaa, 0x9e, 0x6, 0x3d, 0x90, 0x81, 0xb3, 0xcd, 0x1a, 0xf7, 0x4d, - 0xf7, 0xc3, 0xfb, 0x4d, 0x7, 0x40, 0x87, 0x6b, 0x37, 0x87, 0x1e, 0x78, - 0xf7, 0xaa, 0x9e, 0x7, 0x3d, 0x90, 0x81, 0xae, 0xcd, 0x1a, 0xf8, 0x36, - 0x67, 0x1d, 0xfb, 0x4c, 0xfb, 0xc3, 0xf7, 0x4c, 0x67, 0x1d, 0xfc, 0x31, - 0x7, 0x40, 0x87, 0x6b, 0x37, 0x84, 0x1d, 0x73, 0xa0, 0x76, 0xf9, 0x2a, - 0x42, 0xa, 0xe, 0xab, 0x6a, 0xf7, 0xe, 0xf8, 0xd4, 0x77, 0x1, 0xf7, - 0x44, 0xf1, 0x3, 0xde, 0xf9, 0x17, 0x15, 0xdc, 0x86, 0x97, 0x73, 0x44, - 0x1a, 0xfc, 0x53, 0x7, 0x57, 0x7c, 0x7d, 0x73, 0x75, 0x8a, 0xa8, 0xa3, - 0x81, 0x1e, 0x9c, 0x84, 0x7e, 0x99, 0x6f, 0x1b, 0x6e, 0x7a, 0x6d, 0x78, - 0x7d, 0x91, 0x7b, 0x9b, 0x79, 0x1f, 0x7f, 0x96, 0xa4, 0x7e, 0xb5, 0x1b, - 0xa6, 0xf7, 0x21, 0x8e, 0xf7, 0x56, 0x1f, 0xf7, 0xf6, 0x7, 0xd5, 0x99, - 0xa0, 0xd9, 0x90, 0x1e, 0x9e, 0xfb, 0xb3, 0x7, 0xe, 0xf8, 0x1, 0x83, - 0xa, 0x1, 0xf7, 0x10, 0xf1, 0x3, 0xad, 0x16, 0xf7, 0xae, 0x9e, 0x6, - 0x3d, 0x8f, 0x7f, 0xa5, 0xd1, 0x1a, 0xf7, 0x45, 0x7, 0xa5, 0xa0, 0xf5, - 0x22, 0x5, 0xad, 0x69, 0xeb, 0x24, 0x6c, 0x1a, 0x75, 0x7a, 0x8a, 0x56, - 0x89, 0x1e, 0x78, 0xf7, 0xc5, 0x9e, 0x7, 0x52, 0x89, 0x67, 0xbe, 0x4b, - 0xc6, 0xfb, 0x7d, 0xf7, 0x8e, 0x18, 0xf7, 0x52, 0xf7, 0x50, 0xd2, 0xd1, - 0xa0, 0x8e, 0xc7, 0x90, 0x19, 0x9e, 0xfb, 0x9a, 0x78, 0x7, 0xbc, 0x89, - 0x9e, 0x89, 0x70, 0x1a, 0x69, 0x6e, 0x70, 0xfb, 0x76, 0xfb, 0x5f, 0x1e, - 0xf7, 0x57, 0x7, 0xd5, 0x99, 0xa0, 0xd9, 0x90, 0x1e, 0x9e, 0xfb, 0xb0, - 0x78, 0x7, 0xcf, 0x86, 0xa1, 0x7a, 0x3d, 0x1a, 0xfc, 0x3a, 0x7, 0x43, - 0x7f, 0x71, 0x3d, 0x84, 0x1d, 0xf7, 0x92, 0x8b, 0xb2, 0xf7, 0x1b, 0x77, - 0xf8, 0x90, 0x77, 0x1, 0xf7, 0x13, 0x5d, 0x1d, 0x96, 0xb3, 0x1f, 0xf8, - 0x59, 0x7, 0xda, 0x73, 0x1d, 0xfc, 0x59, 0x7, 0x68, 0x74, 0x6b, 0x4b, - 0x84, 0x1d, 0xf8, 0xa8, 0x83, 0xa, 0x1, 0xf7, 0x1, 0xb7, 0xf8, 0x9d, - 0xf1, 0x3, 0x5f, 0xa, 0xf8, 0x19, 0x8d, 0x7, 0xf7, 0x8d, 0xfc, 0xb6, - 0x5, 0x99, 0x6, 0xf7, 0x92, 0xf8, 0xcd, 0x5, 0x8d, 0xfc, 0x57, 0x6, - 0x4e, 0x7e, 0x69, 0x3d, 0x87, 0x1e, 0x78, 0xf7, 0xac, 0x9e, 0x7, 0x4b, - 0x8f, 0x74, 0x9e, 0xd8, 0x1a, 0xf8, 0x46, 0x7, 0xda, 0xa3, 0x91, 0xca, - 0x90, 0x1e, 0x9e, 0xfb, 0x5b, 0x7, 0xfb, 0x71, 0xfc, 0x8d, 0xfb, 0x7b, - 0xf8, 0x8d, 0x5, 0xfb, 0x5c, 0x78, 0x6, 0xd5, 0x87, 0xa2, 0x83, 0x3d, - 0x1a, 0xfc, 0x20, 0x78, 0xa, 0xe, 0xf8, 0x1, 0x95, 0x76, 0xab, 0x8a, - 0x1d, 0x12, 0xf7, 0x1, 0xb7, 0xf8, 0x33, 0xb7, 0x13, 0x78, 0x5f, 0xa, - 0xf8, 0x10, 0x8d, 0x7, 0x13, 0xb8, 0x3a, 0xa, 0xe, 0x5b, 0xa, 0x85, - 0xa, 0xf7, 0xe4, 0x70, 0xa, 0xfb, 0x1d, 0x69, 0x1d, 0xf7, 0xf, 0x61, - 0x1d, 0xf7, 0x10, 0x61, 0xa, 0xfb, 0x2, 0x44, 0x1d, 0xd6, 0xf1, 0xf1, - 0xf7, 0x3, 0x32, 0x71, 0x1d, 0x3a, 0x72, 0x1d, 0xea, 0xf7, 0x70, 0x1e, - 0xe, 0x99, 0x1d, 0xf7, 0xb4, 0xb3, 0xf7, 0xbd, 0xb0, 0x6d, 0xa, 0xa5, - 0xdc, 0x1a, 0xf7, 0x37, 0x66, 0x1d, 0xf7, 0x13, 0xfb, 0x10, 0xc0, 0xfb, - 0x1e, 0x1e, 0xfb, 0x9c, 0x78, 0x6, 0xd4, 0x84, 0x96, 0x6d, 0x74, 0x1a, - 0xfc, 0x59, 0x8d, 0xa, 0xf7, 0xcc, 0x15, 0xf7, 0x8e, 0x7, 0xac, 0x96, - 0x96, 0xa9, 0xb7, 0xf7, 0x26, 0x89, 0x74, 0x1d, 0xf8, 0x1, 0xfb, 0x46, - 0x9e, 0xf7, 0x32, 0xa2, 0x8b, 0xf8, 0xfe, 0x8b, 0xaf, 0x1, 0xc4, 0xf7, - 0x6, 0xf8, 0x16, 0x9a, 0xa, 0xf7, 0x93, 0x8a, 0x15, 0xfb, 0x33, 0xf7, - 0x21, 0xf7, 0x27, 0x79, 0xf7, 0x32, 0x1b, 0x9e, 0x7, 0xfb, 0x22, 0x99, - 0x53, 0xb9, 0x3e, 0xe7, 0x8, 0xf7, 0x0, 0x98, 0xf7, 0x24, 0xf3, 0xf7, - 0x70, 0x1a, 0xf7, 0x7a, 0xfb, 0x2d, 0xf7, 0x8, 0xfb, 0x38, 0xfb, 0x38, - 0xfb, 0x2d, 0xfb, 0x9, 0xfb, 0x79, 0xfb, 0x69, 0xf7, 0xa, 0x2e, 0xe8, - 0x72, 0x1e, 0x2a, 0xf7, 0xdf, 0x15, 0xf7, 0x79, 0xf0, 0xdc, 0xf1, 0xf1, - 0xf0, 0x3a, 0xfb, 0x79, 0xfb, 0x6f, 0x2f, 0x32, 0xfb, 0x3, 0xfb, 0x3, - 0x2f, 0xe4, 0xf7, 0x6f, 0x1e, 0xe, 0xf7, 0xca, 0x8b, 0x9e, 0xf7, 0xb3, - 0xb0, 0xf7, 0xae, 0xb0, 0x1, 0xf1, 0xf1, 0xf7, 0x7e, 0xf7, 0x1, 0x3, - 0x9c, 0x16, 0xf7, 0xa9, 0x9e, 0x6, 0x3b, 0x8f, 0x81, 0xa8, 0xce, 0x1a, - 0xf7, 0x4f, 0x7, 0xc3, 0x8d, 0xf7, 0x82, 0xfb, 0xc8, 0x5, 0xf7, 0x35, - 0x9e, 0x6, 0x62, 0x8d, 0x73, 0x9d, 0x75, 0xa6, 0xfb, 0x62, 0xf7, 0x91, - 0x18, 0xbe, 0x95, 0xf7, 0x16, 0xa3, 0xf7, 0x1a, 0x1a, 0xf7, 0x2e, 0xfb, - 0x39, 0xa0, 0x32, 0x1e, 0xfb, 0xa8, 0x78, 0x6, 0xd1, 0x84, 0x9a, 0x6f, - 0x6f, 0x1a, 0xfc, 0x63, 0x7, 0x4f, 0x87, 0x6a, 0x3a, 0x86, 0x1e, 0xf7, - 0x4f, 0xf7, 0xd8, 0x15, 0xf7, 0x80, 0x7, 0xa8, 0x94, 0x9c, 0xc0, 0xb4, - 0xf7, 0x17, 0x88, 0xfb, 0x19, 0xfb, 0x23, 0xfb, 0x2a, 0x89, 0x37, 0x8a, - 0x1e, 0xe, 0xf7, 0x5b, 0x7d, 0xaf, 0xf8, 0xf4, 0xb4, 0x12, 0xb5, 0xa1, - 0x96, 0xe1, 0xf7, 0x79, 0xf0, 0x17, 0xb5, 0x7d, 0x15, 0xa1, 0x6, 0x9b, - 0xbd, 0x9d, 0xa0, 0x9c, 0x9f, 0x80, 0x81, 0xa8, 0x1e, 0x13, 0xf8, 0x84, - 0xa0, 0xa5, 0x85, 0xab, 0x1b, 0xf7, 0x23, 0xcf, 0xeb, 0xe0, 0xf1, 0x38, - 0xc4, 0x38, 0xbc, 0x1f, 0x37, 0xbd, 0x37, 0xb5, 0xd6, 0x1a, 0xc9, 0xbe, - 0xaa, 0xbd, 0xf4, 0xb8, 0x31, 0x39, 0x9c, 0x1e, 0xa4, 0x6, 0x88, 0x86, - 0x1d, 0x1b, 0x7d, 0x77, 0x96, 0x94, 0x71, 0x1f, 0x92, 0x77, 0x74, 0x92, - 0x71, 0x55, 0xa, 0x13, 0x70, 0x74, 0x6, 0xe, 0xf7, 0x92, 0xa0, 0x76, - 0xf9, 0x0, 0xb5, 0x1, 0xf7, 0x92, 0xf1, 0x3, 0xf7, 0x34, 0x16, 0xf7, - 0xb8, 0x9e, 0x6, 0x37, 0x8e, 0x7f, 0xa8, 0xcf, 0x1a, 0xf8, 0x89, 0xc1, - 0x7, 0xf7, 0x2, 0xa7, 0x79, 0xfb, 0x2, 0xa0, 0x1f, 0xa3, 0x6, 0x85, - 0xf7, 0x3e, 0x5, 0xfc, 0xc8, 0x6, 0x85, 0xfb, 0x3e, 0x5, 0xa3, 0x6, - 0xf7, 0x1, 0xa1, 0xa6, 0x9e, 0xf7, 0x2, 0x1b, 0xc1, 0xfc, 0x8b, 0x6, - 0x4d, 0x88, 0x6b, 0x30, 0x84, 0x1d, 0x6e, 0xa, 0x1, 0xf3, 0xf1, 0xf7, - 0xfd, 0xb7, 0x3, 0x99, 0xf9, 0x17, 0x2d, 0x1d, 0x63, 0x3f, 0xfb, 0x27, - 0x49, 0x1d, 0xf8, 0x1, 0x95, 0x76, 0xf9, 0x35, 0x77, 0x12, 0x9b, 0xf9, - 0x3d, 0x17, 0xf8, 0x4, 0x80, 0x15, 0x9a, 0x6, 0xf7, 0x86, 0xf8, 0xe9, - 0x5, 0x13, 0x60, 0x97, 0xa9, 0x97, 0xa3, 0xbb, 0x8e, 0x8, 0x9e, 0xfb, - 0x61, 0x78, 0x7, 0xb1, 0x89, 0xae, 0x7e, 0x62, 0x1a, 0xfb, 0x3a, 0xfc, - 0x3e, 0x5, 0xfb, 0x42, 0xf8, 0xf, 0x79, 0xb4, 0x9a, 0x1a, 0xab, 0x9e, - 0x97, 0xc3, 0x8e, 0x1e, 0x9e, 0xfb, 0x9e, 0x78, 0x7, 0xba, 0x89, 0x9f, - 0x77, 0x98, 0x6f, 0x8, 0xe, 0xf8, 0xdf, 0x95, 0x76, 0xf9, 0x35, 0x77, - 0x9f, 0x8b, 0x12, 0x90, 0xfa, 0x33, 0x17, 0xf7, 0xc1, 0x80, 0x15, 0x13, - 0xf0, 0x9a, 0x6, 0xf7, 0x2e, 0xf8, 0x3b, 0xb6, 0xfb, 0x1, 0xdd, 0xfb, - 0x66, 0xae, 0x23, 0x19, 0x9a, 0x6, 0xc6, 0xf7, 0x55, 0xd9, 0xf7, 0x60, - 0xd0, 0xf7, 0x4e, 0x99, 0xb2, 0x9d, 0xa3, 0xbc, 0x93, 0x8, 0x9e, 0xfb, - 0x5a, 0x78, 0x7, 0xad, 0x88, 0xac, 0x7d, 0x64, 0x1a, 0x76, 0x83, 0x6d, - 0x83, 0x76, 0x1e, 0xfb, 0xf, 0xfb, 0xdd, 0x5, 0xfb, 0x27, 0xf8, 0x10, - 0x7d, 0x97, 0x9c, 0x1a, 0xaf, 0xbb, 0x97, 0xaa, 0x1e, 0x9e, 0xfb, 0x9f, - 0x78, 0x7, 0xc0, 0x8a, 0x98, 0x7b, 0xac, 0x38, 0xae, 0x43, 0x18, 0x20, - 0xfb, 0xae, 0x5, 0xfb, 0x29, 0xf8, 0x19, 0x83, 0x92, 0x99, 0x1a, 0xa5, - 0xa1, 0x9b, 0xb8, 0x8d, 0x1e, 0x9e, 0xfb, 0x89, 0x78, 0x7, 0xc4, 0x86, - 0x97, 0x64, 0xab, 0x38, 0xb1, 0x27, 0xf5, 0xfb, 0xa6, 0xbe, 0xfb, 0x2d, - 0x8, 0xe, 0xf8, 0x1, 0x8b, 0x9e, 0xf9, 0x4, 0x9e, 0x1, 0x95, 0x16, - 0xf7, 0x7d, 0x9e, 0x6, 0x64, 0x66, 0x9a, 0xab, 0x9e, 0xaa, 0xb2, 0xa0, - 0xa5, 0x1f, 0xf7, 0xb, 0xf7, 0x1e, 0xea, 0xfb, 0x16, 0x5, 0x9b, 0x74, - 0xae, 0x55, 0x79, 0x1a, 0x6c, 0x70, 0x7e, 0x59, 0x1e, 0x78, 0xf7, 0xbd, - 0x9e, 0x7, 0x57, 0x77, 0xa8, 0xc2, 0x64, 0x1f, 0xfb, 0x54, 0xf7, 0x9c, - 0xf7, 0x26, 0xf7, 0x40, 0x5, 0xe2, 0xd1, 0xa5, 0x9c, 0xc0, 0x1b, 0x9e, - 0xfb, 0x82, 0x78, 0x7, 0xad, 0xaf, 0x7f, 0x6c, 0x78, 0x7a, 0x77, 0x74, - 0x6e, 0x1f, 0xfb, 0x5, 0xfb, 0x14, 0x5, 0xfb, 0x1, 0xf7, 0x24, 0x79, - 0xac, 0x9f, 0x1a, 0xa9, 0xa3, 0x97, 0xbf, 0x1e, 0x9e, 0xfb, 0xc2, 0x78, - 0x7, 0xc5, 0xa0, 0x7a, 0xfb, 0x2a, 0xf1, 0x1f, 0xf7, 0x1, 0xfb, 0x2a, - 0x5, 0xfb, 0xac, 0xfb, 0x80, 0x80, 0x70, 0x54, 0x1b, 0xe, 0xf8, 0x1, - 0xa0, 0x76, 0xf9, 0x2a, 0x72, 0xa, 0xa6, 0xd3, 0x1a, 0xf7, 0x4c, 0x7, - 0xf7, 0x28, 0xf7, 0x6c, 0xd0, 0xf5, 0xac, 0x99, 0xaf, 0x8f, 0x19, 0x9e, - 0xfb, 0x6f, 0x78, 0x7, 0xaa, 0xb1, 0x7f, 0x75, 0x1d, 0xfb, 0x6c, 0xfb, - 0x28, 0xf7, 0x68, 0x75, 0xa, 0x96, 0xb9, 0x8d, 0x1e, 0x9e, 0xfb, 0xac, - 0x78, 0x7, 0xb8, 0x87, 0x9a, 0x7e, 0xf1, 0xfb, 0x2a, 0xf7, 0x17, 0xfb, - 0x4a, 0x18, 0xfb, 0x44, 0x7, 0x46, 0x88, 0x6f, 0x29, 0x89, 0x1e, 0xe, - 0x7b, 0xa, 0xf8, 0xde, 0xb1, 0x1, 0x94, 0xf8, 0xe0, 0x3f, 0x1d, 0xe, - 0x93, 0x1d, 0xe3, 0xd7, 0x3, 0xe3, 0xfb, 0x30, 0x15, 0xf7, 0x67, 0xa4, - 0x3f, 0x6, 0x5a, 0x81, 0xb3, 0x97, 0x1f, 0xf9, 0x34, 0x7, 0x99, 0x95, - 0xa9, 0xb8, 0x1e, 0xdb, 0xa4, 0xfb, 0x67, 0x6, 0xe, 0x3c, 0xfb, 0x23, - 0x76, 0xf7, 0x3f, 0x7a, 0x1d, 0xf7, 0x7e, 0xfb, 0x38, 0x15, 0xb6, 0x6, - 0xfb, 0x7c, 0xf9, 0xdc, 0x5, 0x60, 0x6, 0xe, 0x93, 0x1d, 0xf7, 0x3d, - 0xd7, 0x3, 0xad, 0xfb, 0x17, 0x15, 0x72, 0xf7, 0x67, 0xf9, 0xc6, 0xfb, - 0x67, 0x72, 0xd7, 0x7, 0xbc, 0x95, 0x63, 0x7f, 0x1f, 0xfd, 0x34, 0x7, - 0x7d, 0x81, 0x6d, 0x5e, 0x1e, 0xe, 0xf7, 0x4, 0xf9, 0x2a, 0x77, 0x1, - 0xa3, 0xf7, 0xbd, 0x15, 0xcf, 0x6, 0xf7, 0x23, 0xf7, 0xb5, 0xf7, 0x23, - 0xfb, 0xb5, 0x5, 0xcf, 0x6, 0xfb, 0x48, 0xf8, 0x1, 0x5, 0x4d, 0x6, - 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x8b, 0xf8, 0x88, 0x3, 0x40, 0x4, 0x59, - 0xf8, 0x88, 0xbd, 0x7, 0xe, 0x92, 0x1d, 0x9e, 0xf7, 0x73, 0x3, 0xf7, - 0x5e, 0xf8, 0x8f, 0x15, 0xb3, 0x6, 0xfb, 0x1d, 0xf7, 0x24, 0x5, 0xa2, - 0x72, 0x7e, 0x94, 0xa, 0xa6, 0x79, 0x97, 0x7d, 0xa, 0x4f, 0x1d, 0x12, - 0xb0, 0xe3, 0x4a, 0xe3, 0xf7, 0x1f, 0xdc, 0x13, 0xd4, 0xf7, 0xb3, 0xf7, - 0xaa, 0x15, 0xfb, 0x2f, 0x7, 0x5d, 0x61, 0x6e, 0x55, 0x66, 0x6e, 0xaa, - 0xba, 0x1e, 0x8d, 0x7, 0xad, 0x96, 0xcd, 0xf7, 0x2b, 0xbd, 0x1e, 0x8c, - 0xfb, 0x6b, 0x15, 0x43, 0x90, 0xb5, 0x8a, 0x2f, 0xa, 0x40, 0xa, 0xef, - 0xfb, 0x29, 0x1e, 0x13, 0xcc, 0x3e, 0x1d, 0x13, 0xb4, 0xaa, 0xb1, 0x9d, - 0xac, 0xa9, 0xba, 0x80, 0x43, 0x1e, 0x58, 0x7, 0xfb, 0x37, 0x4b, 0x34, - 0x5f, 0x27, 0x1a, 0x48, 0xbf, 0x66, 0xc1, 0xc2, 0xc0, 0xb3, 0xac, 0xb0, - 0x1e, 0xe, 0x81, 0xab, 0xf8, 0xb, 0xca, 0xf7, 0x73, 0x77, 0x1, 0xd0, - 0xdf, 0xf7, 0x77, 0xe3, 0x3, 0xf7, 0x2d, 0xd1, 0x15, 0xf7, 0x90, 0x7, - 0xc4, 0xcf, 0x9d, 0xab, 0xe6, 0xaf, 0x24, 0x2e, 0x49, 0x7b, 0xfb, 0x5, - 0xfb, 0x7, 0x72, 0x44, 0x98, 0xae, 0x1e, 0xf7, 0xc9, 0x4, 0xf7, 0xc2, - 0x7, 0x86, 0x8d, 0x6b, 0x1d, 0x6c, 0x6d, 0x1f, 0xfc, 0x91, 0x7, 0x66, - 0xf4, 0x70, 0xbd, 0xf7, 0x4d, 0xc6, 0xf7, 0x32, 0xe5, 0xf6, 0x52, 0xf7, - 0x7, 0xfb, 0xd, 0x3f, 0x56, 0x51, 0x74, 0x85, 0x1e, 0xe, 0xe2, 0x81, - 0xd3, 0xf8, 0x5, 0xa8, 0x1, 0xa4, 0xd8, 0x3, 0xf8, 0x30, 0xf7, 0x27, - 0x15, 0x63, 0x1d, 0x93, 0x79, 0x6d, 0x93, 0x1f, 0x5f, 0x97, 0x99, 0x73, - 0xa5, 0x1b, 0xa9, 0x9b, 0xa0, 0xa2, 0x9d, 0x81, 0xaa, 0x6d, 0xa0, 0x1f, - 0x9b, 0x72, 0x5b, 0x9a, 0x67, 0x1b, 0xfb, 0x0, 0xfb, 0x8, 0x38, 0xfb, - 0x38, 0xfb, 0x32, 0xf6, 0x4a, 0xdb, 0xdc, 0xcc, 0xb6, 0xf7, 0x6, 0xc1, - 0x1f, 0xe, 0x81, 0xbf, 0xf8, 0x1a, 0xa7, 0xf7, 0x78, 0x77, 0x1, 0xa6, - 0xe1, 0xf7, 0x77, 0xdf, 0x3, 0xf7, 0xe8, 0xf1, 0x15, 0x67, 0x83, 0x64, - 0x73, 0x61, 0x1b, 0x49, 0x43, 0xc3, 0xf7, 0x29, 0xf7, 0x1c, 0xcf, 0xbc, - 0xc3, 0xba, 0xbc, 0x6b, 0x47, 0x92, 0x1f, 0xfb, 0xe7, 0x4, 0x8f, 0x88, - 0xc0, 0x9e, 0xb9, 0x9b, 0xbb, 0x9c, 0x19, 0x9b, 0x7, 0x48, 0x86, 0x8b, - 0xa9, 0xb4, 0x1a, 0xf8, 0xc1, 0x7, 0x86, 0x8d, 0x5b, 0x7a, 0x5a, 0x7d, - 0x59, 0x6f, 0x1d, 0x93, 0x95, 0x82, 0xa, 0x6c, 0x6d, 0x1f, 0xfb, 0x26, - 0x7, 0xa8, 0x6a, 0x6d, 0x99, 0x60, 0x1b, 0xfb, 0x4, 0x2c, 0xfb, 0x7, - 0xfb, 0x17, 0xfb, 0x60, 0xf7, 0x23, 0x77, 0xb2, 0xd5, 0xb0, 0xb0, 0xa6, - 0x9d, 0x1f, 0x8d, 0x6, 0xe, 0x87, 0x1d, 0xf6, 0xaf, 0x1, 0xae, 0xd0, - 0xf7, 0x5b, 0xf1, 0x3, 0x37, 0x1d, 0x58, 0xfb, 0x4d, 0xfb, 0x22, 0xd7, - 0x2f, 0x2b, 0xa, 0x3d, 0x1d, 0xe, 0x73, 0xa0, 0x76, 0xf8, 0x36, 0xab, - 0xf7, 0x61, 0xa7, 0x1, 0xf2, 0xdf, 0x3, 0x9f, 0x16, 0xf7, 0x98, 0x9a, - 0x6, 0x2f, 0x8d, 0x8a, 0xaf, 0xc8, 0x1a, 0xf7, 0xc4, 0xf7, 0xe, 0xab, - 0xfb, 0xf, 0xf7, 0x8, 0x7, 0xb0, 0x90, 0xbf, 0xc2, 0xa1, 0x98, 0x7a, - 0x79, 0x97, 0x1e, 0x77, 0x98, 0x97, 0x77, 0xa1, 0x1b, 0x9f, 0xa2, 0x98, - 0xa8, 0xad, 0x5f, 0xa6, 0x53, 0xfb, 0x48, 0x8b, 0xfb, 0x45, 0x53, 0x1f, - 0x38, 0x6b, 0xde, 0xfb, 0xc4, 0x6, 0x3e, 0x7a, 0x78, 0x49, 0x88, 0x1e, - 0xe, 0xfb, 0x6e, 0xc4, 0xf7, 0x26, 0xd4, 0xe6, 0xa4, 0xf7, 0x8c, 0xb2, - 0x6e, 0xa7, 0x1, 0xa7, 0xd1, 0x6e, 0xde, 0xf7, 0x45, 0xd8, 0xa6, 0xa7, - 0x3, 0xf7, 0x27, 0x89, 0x15, 0x6c, 0x66, 0x79, 0x77, 0x6c, 0x1a, 0x6b, - 0xa1, 0x64, 0xeb, 0xf7, 0x9, 0xef, 0xb8, 0xbf, 0xb8, 0x5a, 0x8c, 0x41, - 0x8e, 0x1e, 0x2d, 0x8e, 0x76, 0x8a, 0x5b, 0x96, 0x8, 0x90, 0xf7, 0xec, - 0x15, 0x3b, 0xa6, 0x33, 0xd8, 0xcf, 0x90, 0xcf, 0xbe, 0xbe, 0x7a, 0xe3, - 0x36, 0x67, 0x64, 0x75, 0x47, 0x1e, 0x71, 0xfb, 0xe9, 0x15, 0x70, 0x98, - 0x71, 0x97, 0xa7, 0x1a, 0x9d, 0x8b, 0x96, 0xe4, 0xdb, 0x1e, 0x4f, 0xa6, - 0x6a, 0xb7, 0xc6, 0x1a, 0xf7, 0xf, 0xe3, 0xb7, 0xe0, 0xae, 0xad, 0x83, - 0x7c, 0xa6, 0x1e, 0x80, 0x9f, 0x9e, 0x8c, 0x9b, 0x1b, 0xd8, 0x64, 0x38, - 0x6, 0x94, 0x74, 0x95, 0x77, 0x5a, 0x1a, 0xfb, 0x0, 0x24, 0x64, 0x53, - 0x1e, 0x7e, 0x68, 0x90, 0x85, 0x1b, 0x77, 0x88, 0x63, 0x62, 0x78, 0x1a, - 0x74, 0xbc, 0x87, 0xa8, 0x1e, 0xf7, 0x15, 0x85, 0x5, 0xf6, 0x86, 0x99, - 0x41, 0x6f, 0x1a, 0xfb, 0x5, 0xfb, 0x3a, 0x53, 0x31, 0x26, 0x3f, 0xb7, - 0xc0, 0xb9, 0xba, 0xb1, 0xbe, 0xb1, 0x1e, 0xe, 0xa0, 0x76, 0xf8, 0x2a, - 0xc1, 0xf7, 0x73, 0x77, 0x1, 0xd4, 0xdf, 0xf7, 0x4e, 0xdf, 0x3, 0x94, - 0x16, 0xf7, 0x6c, 0x9a, 0x6, 0x5a, 0x90, 0x78, 0x9a, 0xd8, 0x1a, 0xf7, - 0x7b, 0x7, 0xbb, 0xb4, 0xb2, 0x9a, 0xa8, 0x1b, 0xc2, 0xa1, 0x64, 0x48, - 0x1f, 0xfb, 0x50, 0x7, 0x3e, 0x78, 0x7c, 0x5a, 0x86, 0x1e, 0x7c, 0xf7, - 0x68, 0x9a, 0x7, 0x59, 0x94, 0x81, 0x9a, 0xd4, 0x1a, 0xf7, 0x51, 0x7, - 0xb3, 0x8a, 0xf7, 0xb, 0xfb, 0xf, 0x4f, 0x5a, 0x6b, 0x59, 0x68, 0x1e, - 0x89, 0xf7, 0xc2, 0x6, 0x86, 0x8e, 0x5b, 0x7a, 0x59, 0x7d, 0x5e, 0x7e, - 0x19, 0x71, 0x7, 0x8c, 0x8e, 0x96, 0x82, 0xa, 0x76, 0x6d, 0x1f, 0xfc, - 0x57, 0x7, 0x42, 0x81, 0x7a, 0x55, 0x84, 0x1e, 0xe, 0x8f, 0xa, 0xf8, - 0xd9, 0xf1, 0x12, 0xd9, 0xf0, 0x37, 0xdf, 0x13, 0xe0, 0x31, 0x1d, 0x57, - 0x78, 0x54, 0x78, 0x57, 0x7a, 0x19, 0x7c, 0x7, 0x8d, 0x98, 0x9c, 0x8d, - 0x99, 0x1b, 0x13, 0xd0, 0x9b, 0x9e, 0x80, 0x50, 0x1f, 0xfb, 0x68, 0x7, - 0x3d, 0x7a, 0x7b, 0x4d, 0x88, 0x1e, 0x13, 0xe0, 0xc9, 0xf8, 0xfd, 0x64, - 0x1d, 0x3c, 0xfb, 0x6e, 0xad, 0xf9, 0x91, 0xf1, 0x12, 0xf3, 0xf0, 0x2b, - 0xdf, 0x13, 0xd0, 0xab, 0xf8, 0x1a, 0x15, 0x8d, 0x9a, 0x98, 0x8d, 0x99, - 0x1b, 0x9b, 0x9e, 0x80, 0x50, 0x1f, 0xfc, 0x5, 0x7, 0x39, 0x8b, 0x52, - 0x59, 0x78, 0x80, 0x9b, 0x9b, 0x7e, 0x1e, 0x99, 0x7f, 0x7e, 0x99, 0x76, - 0x1b, 0x78, 0x76, 0x7c, 0x74, 0x66, 0xb9, 0x78, 0xba, 0xf7, 0x15, 0xb4, - 0xf0, 0xf7, 0x9, 0x1f, 0x8c, 0xf8, 0x5d, 0x85, 0x8e, 0x57, 0x77, 0x57, - 0x79, 0x57, 0x7b, 0x19, 0x13, 0xe0, 0xc7, 0xf7, 0x76, 0x64, 0x1d, 0xa0, - 0x76, 0xf8, 0x56, 0x77, 0xf7, 0x91, 0x77, 0x1, 0xdd, 0xdf, 0x3, 0x92, - 0x16, 0xf7, 0x7e, 0x9a, 0x6, 0x77, 0x8c, 0x5, 0x6a, 0x8d, 0x75, 0x9d, - 0xb4, 0x1a, 0xf7, 0x3f, 0x8d, 0x7, 0xf7, 0x1e, 0xfb, 0x4c, 0x5, 0x97, - 0x7a, 0x94, 0x82, 0x84, 0x1a, 0x7e, 0x7e, 0x88, 0x83, 0x1e, 0x78, 0x7c, - 0xf7, 0x6e, 0x9a, 0x6, 0x70, 0x8d, 0x64, 0x92, 0x58, 0xcb, 0xfb, 0x2d, - 0xf7, 0x56, 0x18, 0xa8, 0xa6, 0x5, 0xf7, 0x12, 0xf7, 0x1b, 0xa7, 0x8b, - 0xc0, 0x1b, 0x9a, 0xfb, 0x60, 0x7d, 0x7, 0xb5, 0x93, 0x83, 0x80, 0x82, - 0x83, 0x80, 0x7c, 0x7d, 0x1f, 0x63, 0x69, 0x50, 0x54, 0x67, 0x6c, 0x89, - 0x8d, 0x18, 0xf8, 0x34, 0x7, 0x87, 0x8d, 0x56, 0x7a, 0x56, 0x7d, 0x5a, - 0x6f, 0x1d, 0x93, 0x94, 0x8c, 0x98, 0x1b, 0xb2, 0x91, 0x71, 0x5e, 0x1f, - 0xfc, 0x70, 0x7, 0x69, 0x83, 0x79, 0x48, 0x80, 0x1e, 0xe, 0x8f, 0xa, - 0xf9, 0x3f, 0x77, 0x1, 0xed, 0xdf, 0x3, 0x9e, 0x16, 0xf7, 0x82, 0x9a, - 0x6, 0x51, 0x8e, 0x7a, 0x9d, 0xc5, 0x1a, 0xf8, 0xdf, 0x5d, 0xa, 0xfc, - 0x67, 0x7, 0x54, 0x77, 0x74, 0x50, 0x84, 0x1d, 0xf8, 0x39, 0xa0, 0x76, - 0xf8, 0x2c, 0xbf, 0x1, 0xe1, 0xdf, 0xf7, 0x4c, 0xdf, 0xf7, 0x4c, 0xdf, - 0x14, 0x38, 0x9b, 0x16, 0xf7, 0x72, 0x9a, 0x6, 0x68, 0x8c, 0x6a, 0x98, - 0xcb, 0x1a, 0xf7, 0x94, 0x7, 0x90, 0xb9, 0xc1, 0xd0, 0xbf, 0x9c, 0x64, - 0x49, 0x1e, 0xfb, 0x63, 0x7, 0x4a, 0x74, 0x7e, 0x5e, 0x88, 0x1e, 0x7c, - 0xf7, 0x74, 0x9a, 0x7, 0x62, 0x8c, 0x6c, 0x9c, 0xca, 0x1a, 0xf7, 0x8f, - 0x7, 0xad, 0xa1, 0xad, 0xa6, 0xc2, 0x1b, 0xd3, 0x8c, 0x50, 0x58, 0x1f, - 0xfb, 0x5d, 0x7, 0x4b, 0x7b, 0x7f, 0x59, 0x85, 0x1e, 0x7c, 0xf7, 0x6f, - 0x9a, 0x7, 0x71, 0x8d, 0x5, 0x5f, 0x92, 0x8c, 0xac, 0xb3, 0x1a, 0xf7, - 0x4d, 0x7, 0xd5, 0x7d, 0xf3, 0x23, 0x3c, 0x4e, 0x4f, 0x73, 0x76, 0x1e, - 0xb5, 0x80, 0x6c, 0xb5, 0x4a, 0x1b, 0x55, 0x62, 0x6b, 0x5e, 0x50, 0x1f, - 0xd6, 0x7, 0x84, 0x8d, 0x5d, 0x7a, 0x59, 0x7c, 0x5c, 0x7e, 0x19, 0x7a, - 0x7, 0x8d, 0x93, 0x98, 0x53, 0x1d, 0x4c, 0x1f, 0xfb, 0x87, 0x7, 0x48, - 0x6d, 0x7f, 0x63, 0x8a, 0x1e, 0xe, 0xa0, 0x76, 0xf8, 0x2a, 0xc2, 0x73, - 0xa, 0xa5, 0xbe, 0x1a, 0xf7, 0x91, 0x7e, 0xa, 0xfb, 0x6e, 0x7, 0x50, - 0x71, 0x7e, 0x82, 0x1d, 0xa4, 0xba, 0x1a, 0xf7, 0x6f, 0x46, 0xa, 0xe, - 0x7f, 0xa7, 0xf8, 0x35, 0xa7, 0x1, 0xb8, 0xe5, 0xf7, 0x82, 0xe5, 0x3, - 0xa8, 0xf7, 0x7a, 0x15, 0xfb, 0x1b, 0xe5, 0x22, 0x65, 0x1d, 0xf7, 0x1d, - 0xee, 0xf7, 0x25, 0x2d, 0xe4, 0xfb, 0x17, 0xfb, 0x1a, 0x39, 0x20, 0xfb, - 0xf, 0x1e, 0xe5, 0xa0, 0x15, 0xf3, 0xca, 0xd8, 0xca, 0xe7, 0xb6, 0x37, - 0x80, 0xa, 0x39, 0x4c, 0x58, 0xfb, 0xc, 0x83, 0xf7, 0x33, 0xd5, 0x1e, - 0xe, 0x8e, 0x1d, 0x1, 0xd6, 0xdf, 0xf7, 0x75, 0xe1, 0x3, 0xf7, 0x33, - 0xac, 0x15, 0x5f, 0x1d, 0x76, 0x1f, 0x89, 0x8d, 0x5, 0xd4, 0x7, 0x85, - 0x8d, 0x5b, 0x78, 0x5b, 0x7a, 0x5b, 0x7c, 0x19, 0x7b, 0x7, 0x8c, 0x94, - 0x95, 0x8b, 0x94, 0x1b, 0xae, 0x8e, 0x7a, 0x63, 0x1f, 0xfc, 0x5e, 0x7, - 0x60, 0x87, 0x6c, 0x49, 0x86, 0x1e, 0x7a, 0xf7, 0x86, 0x9d, 0x7, 0x43, - 0x7b, 0xa1, 0xc5, 0x1f, 0xf7, 0x63, 0x4, 0x5a, 0xa, 0xfb, 0x58, 0x76, - 0xf7, 0x63, 0xc8, 0xf8, 0x11, 0xa7, 0x1, 0xa3, 0xe1, 0xf7, 0x7b, 0xdf, - 0x3, 0xf7, 0x90, 0xfb, 0x5c, 0x15, 0x7a, 0xf7, 0x80, 0x99, 0x7, 0x5e, - 0x95, 0x79, 0x9b, 0xc7, 0x1a, 0xf8, 0xd1, 0x7, 0x84, 0x8f, 0x51, 0x68, - 0x5, 0xa1, 0x64, 0x74, 0x98, 0x58, 0x1b, 0xfb, 0x11, 0x29, 0xfb, 0x2, - 0xfb, 0x1e, 0xfb, 0x2b, 0xd6, 0x44, 0xe4, 0xc8, 0xd1, 0xb5, 0xa9, 0x9c, - 0x1f, 0x90, 0xfb, 0x44, 0x6, 0x59, 0x7d, 0x6a, 0x40, 0x88, 0x1e, 0xe4, - 0xf7, 0xdb, 0x15, 0x8a, 0x6b, 0x8b, 0x7b, 0x57, 0x78, 0x8, 0x84, 0x79, - 0x7a, 0x89, 0x7c, 0x1b, 0x32, 0x64, 0xea, 0xe7, 0xf7, 0xd, 0xc1, 0xd4, - 0xdc, 0xea, 0x8c, 0x44, 0x6f, 0x1f, 0xe, 0x73, 0xa0, 0x76, 0xf8, 0x21, - 0xca, 0x55, 0xc1, 0x12, 0xd7, 0xdf, 0x13, 0xd0, 0x90, 0x16, 0xf7, 0x84, - 0x9a, 0x6, 0x58, 0x8d, 0x69, 0x99, 0xd0, 0x1a, 0xf7, 0x6b, 0x7, 0xab, - 0xb7, 0xbd, 0xa3, 0x98, 0x94, 0x81, 0x82, 0x95, 0x1e, 0x83, 0x95, 0x95, - 0x83, 0x9c, 0x1b, 0x13, 0xb0, 0xa3, 0x99, 0x9e, 0xa4, 0xac, 0x77, 0xa0, - 0x69, 0x65, 0x69, 0x77, 0x44, 0x5c, 0x1f, 0x89, 0xe4, 0x6, 0x86, 0x8d, - 0x5a, 0x77, 0x59, 0x79, 0x5a, 0x7b, 0x19, 0x7b, 0x7, 0x8d, 0x94, 0x96, - 0x53, 0x1d, 0x50, 0x1f, 0xfb, 0x7e, 0x7, 0x4b, 0x7b, 0x80, 0x54, 0x81, - 0x1e, 0xe, 0xab, 0x7d, 0xa1, 0xf8, 0x3c, 0xa2, 0x87, 0x77, 0x12, 0xc9, - 0xc9, 0xf7, 0x2e, 0xd1, 0x57, 0x9a, 0x13, 0xd8, 0xbe, 0x81, 0x15, 0x99, - 0x91, 0x5, 0x94, 0x91, 0x99, 0x8e, 0x97, 0x1b, 0x9c, 0x8c, 0x9d, 0x84, - 0xa1, 0x86, 0x8, 0x87, 0x9a, 0x9b, 0x88, 0x9d, 0x1b, 0xcb, 0xdc, 0xb5, - 0xe2, 0xc7, 0x68, 0x66, 0xa, 0x1e, 0x13, 0xd4, 0xb7, 0xb4, 0x76, 0x25, - 0xa1, 0x1f, 0x9a, 0x6, 0x13, 0xb4, 0xf7, 0x1d, 0x80, 0x7, 0x87, 0x88, - 0x7c, 0x84, 0x82, 0x1b, 0x81, 0x80, 0x91, 0x91, 0x7b, 0x1f, 0x8f, 0x7f, - 0x7d, 0x7c, 0x1d, 0xc5, 0x6a, 0x5, 0x13, 0xd8, 0xab, 0x79, 0x9f, 0x73, - 0x6b, 0x1a, 0x52, 0x5c, 0x95, 0xa, 0x7a, 0x6, 0xe, 0x3c, 0x81, 0xbf, - 0xf8, 0x2, 0xab, 0x1, 0xd1, 0xdf, 0x3, 0xf7, 0x9e, 0xd8, 0x15, 0x7e, - 0x80, 0x79, 0x75, 0x6b, 0x1b, 0x58, 0x8b, 0xc6, 0xaa, 0x1f, 0xf7, 0xa8, - 0xf0, 0xab, 0x26, 0xf7, 0x12, 0x7, 0x93, 0x8b, 0x90, 0x84, 0x1e, 0x66, - 0x56, 0x7c, 0x6b, 0x65, 0x64, 0x8, 0x75, 0x75, 0x75, 0x85, 0x7f, 0x1a, - 0x88, 0x8d, 0x88, 0x8d, 0x8a, 0x1e, 0xc0, 0xfb, 0xb7, 0x6, 0x27, 0xb4, - 0x70, 0xbe, 0xb9, 0xba, 0xac, 0xb6, 0xa3, 0x1e, 0xe, 0x81, 0xc7, 0xf8, - 0x24, 0x90, 0xa, 0xf7, 0xe6, 0x84, 0x15, 0x8d, 0x89, 0xba, 0x9c, 0xb1, - 0x99, 0xc1, 0x99, 0x19, 0x32, 0xa, 0xfb, 0x75, 0x52, 0xa, 0x7d, 0x2c, - 0x1d, 0x9d, 0xbb, 0x8f, 0xb2, 0xb2, 0x1e, 0xb6, 0xb6, 0x5, 0xe, 0x92, - 0x76, 0xf8, 0x64, 0x77, 0x1, 0x9e, 0xf8, 0x47, 0x15, 0x9f, 0x8a, 0x9f, - 0x7b, 0x9a, 0x6d, 0xaf, 0x44, 0xeb, 0xfb, 0x72, 0xa3, 0x4d, 0x8, 0x60, - 0x9b, 0x8d, 0x87, 0x94, 0x1b, 0x92, 0x94, 0xa2, 0xa6, 0x96, 0x1f, 0xf7, - 0x14, 0xf7, 0xcb, 0xa3, 0xc6, 0x92, 0xa5, 0xad, 0x8e, 0x19, 0x9a, 0xfb, - 0x1f, 0x7c, 0x7, 0xa4, 0x8a, 0xa1, 0x78, 0x74, 0x1a, 0x67, 0x44, 0xfb, - 0x26, 0x69, 0x2b, 0x1e, 0x25, 0xf7, 0x8a, 0x5, 0x88, 0x93, 0x85, 0x9a, - 0x97, 0x1a, 0xa4, 0xa1, 0x98, 0xa3, 0x8d, 0x1e, 0x9a, 0xfb, 0x58, 0x7, - 0xe, 0xf8, 0x1, 0x92, 0x76, 0xf8, 0x64, 0x77, 0x12, 0xa0, 0xf7, 0x48, - 0xf8, 0x6, 0xf7, 0xf, 0x17, 0xa0, 0xf8, 0x47, 0x15, 0xa4, 0x89, 0x93, - 0x74, 0x9f, 0x5b, 0xf7, 0x1b, 0xfb, 0xe0, 0x18, 0x69, 0x99, 0x90, 0x81, - 0x92, 0x1b, 0x91, 0x90, 0x96, 0xa7, 0x99, 0x1f, 0xf7, 0x4, 0xf7, 0x84, - 0xe6, 0xfb, 0x80, 0x5, 0x67, 0x99, 0x8d, 0x84, 0x93, 0x1b, 0x93, 0x8f, - 0x95, 0xb2, 0x9b, 0x1f, 0xf7, 0x1e, 0xf7, 0xe4, 0x9a, 0xb0, 0x90, 0x9f, - 0xa0, 0x92, 0x19, 0x13, 0x70, 0x9a, 0xfb, 0xf, 0x7c, 0x7, 0xa3, 0x86, - 0x9f, 0x7d, 0x73, 0x1a, 0x7f, 0x85, 0x70, 0x80, 0x72, 0x1e, 0x31, 0xfb, - 0x68, 0x3b, 0xf7, 0x6a, 0x5, 0x7c, 0xb2, 0x85, 0x8c, 0x9d, 0x1a, 0xa8, - 0xa4, 0x98, 0xac, 0x90, 0x1e, 0x9a, 0xfb, 0x5f, 0x7c, 0x7, 0xb4, 0x86, - 0x96, 0x84, 0xb0, 0xfb, 0x5, 0x30, 0xfb, 0x5b, 0x18, 0x5d, 0xf7, 0x14, - 0x50, 0xf7, 0x9, 0xae, 0x1a, 0xa7, 0xa2, 0x99, 0xa2, 0x8d, 0x1e, 0x9a, - 0xfb, 0x48, 0x7, 0xe, 0xa0, 0x76, 0xf8, 0x59, 0x77, 0x12, 0x9c, 0xf7, - 0x25, 0xf7, 0x8, 0xf7, 0x5d, 0x17, 0x9c, 0x16, 0xf7, 0x25, 0x9a, 0x6, - 0x7a, 0x76, 0x95, 0x9d, 0x89, 0x1f, 0x96, 0x99, 0xa0, 0x91, 0x94, 0x1e, - 0x13, 0xf0, 0xda, 0xf7, 0x5, 0xdc, 0xfb, 0x6, 0x5, 0x8f, 0x86, 0x97, - 0x7f, 0x7c, 0x1a, 0x76, 0x82, 0x7d, 0x6c, 0x8a, 0x1e, 0x7c, 0xf7, 0x5d, - 0x9a, 0x7, 0x7a, 0x8c, 0x70, 0x96, 0x65, 0xc5, 0xfb, 0x14, 0xf7, 0x4e, - 0x18, 0xde, 0xf7, 0x2, 0x93, 0x98, 0xa9, 0xb3, 0xb6, 0x8c, 0x19, 0x9a, - 0xfb, 0x32, 0x7c, 0x7, 0x9c, 0x8a, 0xa2, 0x80, 0x76, 0x1a, 0x80, 0x85, - 0x82, 0x4e, 0x33, 0x1e, 0x78, 0xa8, 0x62, 0xc8, 0x9d, 0x1a, 0xa0, 0xa4, - 0x97, 0x9d, 0x1e, 0x9a, 0xfb, 0x63, 0x7c, 0x7, 0xac, 0x8c, 0x97, 0x81, - 0xb4, 0x4e, 0xe9, 0xfb, 0x1a, 0x18, 0xfb, 0x6, 0xfb, 0x2f, 0x6b, 0x5d, - 0x7d, 0x7f, 0x70, 0x88, 0x19, 0xe, 0x96, 0xa, 0xf8, 0xca, 0x77, 0x12, - 0x13, 0xa0, 0xf7, 0x86, 0xa1, 0x15, 0x68, 0x85, 0x68, 0xfb, 0xd, 0x57, - 0x1b, 0x13, 0x60, 0x45, 0xa, 0x9b, 0xb4, 0x9e, 0x4a, 0xa, 0x3d, 0xfb, - 0x68, 0x3b, 0xa, 0x8, 0xe, 0xe2, 0x61, 0xa9, 0xf8, 0x46, 0xa9, 0x6a, - 0xa, 0x7b, 0x6c, 0x21, 0x1b, 0xfb, 0x14, 0x56, 0x1d, 0xe, 0x92, 0xa, - 0x12, 0xf7, 0x47, 0xd5, 0x47, 0xd5, 0x13, 0xe0, 0xef, 0xf7, 0x8e, 0x15, - 0x13, 0xd0, 0xd0, 0x78, 0x9b, 0x5f, 0x4b, 0x98, 0xa, 0xfb, 0xc, 0xc9, - 0x77, 0xf2, 0x1e, 0x96, 0x7, 0x44, 0x9b, 0x77, 0xb5, 0xd0, 0x1a, 0xf7, - 0x38, 0x7, 0xd2, 0x7e, 0xb2, 0x3d, 0x9c, 0x1e, 0x8d, 0x7, 0xd9, 0x9d, - 0x98, 0xb2, 0xd2, 0x1a, 0xf7, 0x38, 0x7, 0xd0, 0x9f, 0xb5, 0xd2, 0x9b, - 0x1e, 0x96, 0x7, 0x24, 0x4d, 0x77, 0xfb, 0xb, 0x1f, 0xfb, 0x3b, 0x7, - 0x4b, 0x7b, 0x61, 0x46, 0x79, 0x1e, 0xe, 0xfb, 0x31, 0xfb, 0x2a, 0x76, - 0xf7, 0x46, 0x7a, 0x1d, 0xce, 0xcd, 0x55, 0xb4, 0x3, 0xda, 0xfb, 0x3f, - 0x15, 0xb4, 0xf9, 0xe3, 0x62, 0x6, 0xe, 0x92, 0xa, 0x1, 0xf7, 0x70, - 0xd5, 0x3, 0xf7, 0x16, 0xfb, 0x3e, 0x15, 0x80, 0x7, 0xf2, 0xc8, 0x9f, - 0xf7, 0xc, 0x1f, 0xf7, 0x38, 0x7, 0xcb, 0x9c, 0xb7, 0xd0, 0x9e, 0x1e, - 0x46, 0x9d, 0x7a, 0xb5, 0xcb, 0x1a, 0xf7, 0x3b, 0x7, 0xf7, 0xb, 0x4e, - 0x9f, 0x24, 0x1e, 0x80, 0x7, 0xd2, 0x7b, 0x9e, 0x61, 0x46, 0x98, 0xa, - 0x44, 0x98, 0x64, 0xd9, 0x79, 0x1e, 0x89, 0x7, 0x3d, 0x7a, 0x7e, 0x64, - 0x44, 0x98, 0xa, 0x46, 0x78, 0x61, 0x44, 0x7b, 0x1e, 0xe, 0xf7, 0x4c, - 0xf7, 0x4b, 0xcb, 0x97, 0xcb, 0x1, 0xd7, 0xf7, 0x4b, 0x15, 0xae, 0x9b, - 0xa3, 0xb4, 0xb7, 0x1b, 0xba, 0xa7, 0x79, 0x79, 0xa6, 0x1f, 0x77, 0xa8, - 0xa9, 0x77, 0xc3, 0x1b, 0xc9, 0xac, 0xbb, 0xb5, 0xa9, 0x1f, 0x67, 0xbd, - 0x5, 0x68, 0x74, 0x72, 0x62, 0x63, 0x1b, 0x6d, 0x6e, 0x9e, 0x9e, 0x69, - 0x1f, 0x9e, 0x69, 0x64, 0x9e, 0x5c, 0x1b, 0x48, 0x67, 0x5b, 0x61, 0x75, - 0x1f, 0xe, 0x73, 0xfb, 0x59, 0x76, 0xf8, 0xd5, 0xf7, 0x0, 0x1, 0xec, - 0xf7, 0x0, 0x3, 0xf7, 0x23, 0xf7, 0xac, 0x15, 0x98, 0x6, 0xa5, 0xfb, - 0x5d, 0xa2, 0xfb, 0x48, 0x73, 0x1a, 0x5a, 0x7f, 0x5f, 0x5f, 0x61, 0x81, - 0xb2, 0xbf, 0xa4, 0xa0, 0xf7, 0x49, 0xa4, 0xf7, 0x5d, 0x1e, 0x5d, 0xf7, - 0x19, 0x15, 0x6d, 0xa3, 0x73, 0xa9, 0xa9, 0xa3, 0xa3, 0xa9, 0xa9, 0x73, - 0xa3, 0x6d, 0x6d, 0x73, 0x73, 0x6d, 0x1e, 0xe, 0x87, 0xd4, 0x52, 0xbf, - 0xf7, 0xfc, 0xa9, 0x73, 0xa9, 0x12, 0xca, 0xd8, 0x13, 0xa8, 0xf7, 0xa, - 0xfb, 0x1e, 0x15, 0xad, 0x6, 0xbc, 0xf7, 0x1e, 0x5, 0x86, 0x9d, 0x99, - 0x87, 0xa1, 0x1b, 0xe2, 0xc6, 0xc8, 0xf3, 0xba, 0x1f, 0x7e, 0x93, 0x5, - 0x13, 0x68, 0x45, 0x5d, 0x62, 0x6d, 0x4d, 0x1b, 0x74, 0x7c, 0x90, 0x92, - 0x78, 0x1f, 0xf0, 0xf7, 0xb7, 0x5, 0x67, 0x9b, 0x9a, 0x7b, 0xa8, 0x1b, - 0xa2, 0x9d, 0x9e, 0xa5, 0xad, 0x6b, 0xaf, 0x60, 0x99, 0x1f, 0xba, 0xf7, - 0x1b, 0x5, 0x68, 0x6, 0x5f, 0xfb, 0x10, 0x5, 0x13, 0x98, 0x8e, 0x78, - 0x7b, 0x8d, 0x7b, 0x1b, 0xfb, 0x19, 0x34, 0xfb, 0x7, 0xfb, 0xe, 0x1f, - 0x13, 0x68, 0x3f, 0xac, 0x3c, 0xde, 0x53, 0x1e, 0xa8, 0xe1, 0x15, 0x5c, - 0xb1, 0x76, 0xbf, 0xce, 0x1a, 0x13, 0x98, 0xf7, 0x19, 0xde, 0xb5, 0xbf, - 0xa1, 0x98, 0x87, 0x86, 0x98, 0x1e, 0xe, 0x83, 0xa7, 0x6f, 0xdf, 0x37, - 0xf7, 0x1e, 0xf7, 0x5a, 0xb8, 0xf7, 0x31, 0xf7, 0x26, 0x70, 0xa6, 0x12, - 0xf7, 0xf, 0xe0, 0xf7, 0x2b, 0xe4, 0x13, 0x57, 0xf7, 0x46, 0xc1, 0x15, - 0x6c, 0xb7, 0xba, 0x6c, 0xbe, 0x1b, 0xd7, 0xe9, 0xda, 0xcc, 0x90, 0x88, - 0x8b, 0x88, 0x1f, 0x76, 0x75, 0x4a, 0x2f, 0x1b, 0x6b, 0x53, 0x92, 0xa7, - 0x4d, 0x1f, 0xa2, 0xed, 0x8e, 0xac, 0x89, 0xc6, 0x8a, 0xa6, 0x18, 0xf7, - 0x18, 0xb8, 0xfb, 0x1b, 0x6, 0x84, 0xc4, 0x87, 0xab, 0xbe, 0x1a, 0xae, - 0x93, 0xf0, 0xe2, 0x97, 0xb7, 0x8b, 0x57, 0x1e, 0x13, 0x3b, 0x6a, 0x8b, - 0x69, 0xb3, 0xa4, 0xa3, 0x9e, 0xad, 0xb9, 0x5d, 0xba, 0x37, 0x22, 0x31, - 0x42, 0xfb, 0x37, 0x6b, 0x8e, 0x7d, 0x8f, 0x76, 0x1e, 0x20, 0x5e, 0xf7, - 0x0, 0x6, 0x90, 0x60, 0x90, 0x69, 0x8f, 0x6e, 0x90, 0x64, 0x8f, 0x6d, - 0x86, 0x6f, 0x8, 0x8f, 0x7d, 0x7d, 0x8c, 0x7d, 0x1b, 0x59, 0x5e, 0x72, - 0x57, 0x60, 0xae, 0x79, 0xab, 0xb9, 0xa5, 0xa9, 0xab, 0xa6, 0x1f, 0xfb, - 0x20, 0x8d, 0x15, 0xa8, 0xab, 0x94, 0xa7, 0xa2, 0xa0, 0x83, 0x82, 0x1e, - 0x13, 0x9b, 0x81, 0x7b, 0x5c, 0x5b, 0x75, 0x79, 0x9a, 0xa0, 0x1e, 0xe, - 0xf7, 0x1d, 0xc4, 0xf7, 0xa4, 0xc4, 0x12, 0xaf, 0xce, 0x5d, 0xc8, 0xf7, - 0x9c, 0xc8, 0x5d, 0xce, 0x13, 0xd4, 0xf7, 0xa, 0xf7, 0xdf, 0x15, 0xd3, - 0xc4, 0xca, 0xd7, 0x1e, 0x13, 0xe8, 0xd6, 0xc3, 0x4c, 0x43, 0x41, 0x53, - 0x4c, 0x40, 0x1f, 0x13, 0xd4, 0x3f, 0x52, 0xca, 0xd5, 0x1f, 0x47, 0xfb, - 0x8a, 0x15, 0xe2, 0xe3, 0x5, 0x74, 0xa5, 0xb6, 0x7e, 0xb6, 0x1b, 0xb7, - 0xb7, 0x97, 0xa3, 0xa5, 0x1f, 0xe4, 0x33, 0xb6, 0xb8, 0x34, 0xe2, 0x5, - 0x13, 0xe8, 0xa4, 0xa7, 0x95, 0xbb, 0xb9, 0x1a, 0xb3, 0x7e, 0xb2, 0x75, - 0xa4, 0x1e, 0xe2, 0xe4, 0x60, 0xb6, 0x32, 0x34, 0x5, 0xa3, 0x71, 0x5f, - 0x96, 0x60, 0x1b, 0x60, 0x5f, 0x7f, 0x74, 0x71, 0x1f, 0x34, 0xe2, 0x5e, - 0x60, 0xe3, 0x32, 0x5, 0x13, 0xd4, 0x74, 0x72, 0x7e, 0x62, 0x60, 0x1a, - 0x5e, 0x96, 0x5e, 0xa4, 0x70, 0x1e, 0x33, 0x34, 0x5, 0xe, 0xa0, 0x76, - 0xf7, 0x4a, 0xb3, 0xe5, 0xb3, 0xf7, 0xca, 0x77, 0x1, 0xf7, 0x52, 0xe0, - 0x3, 0xf7, 0x3, 0x16, 0xf7, 0x88, 0x9e, 0x6, 0x52, 0x8c, 0x74, 0xa3, - 0xd6, 0x1a, 0xca, 0xf7, 0x41, 0xb3, 0xfb, 0x41, 0xd7, 0x7, 0x92, 0x99, - 0x5, 0xf7, 0x3a, 0xb3, 0xfb, 0x26, 0x6, 0xe7, 0xf7, 0x42, 0xad, 0xce, - 0xaf, 0xb4, 0xbb, 0x94, 0x19, 0x9e, 0xfb, 0x57, 0x78, 0x7, 0xae, 0x8e, - 0xa9, 0x77, 0x73, 0x1a, 0x7b, 0x85, 0x7e, 0x83, 0x7c, 0x1e, 0xfb, 0x4, - 0xfb, 0x66, 0xfb, 0xa, 0xf7, 0x67, 0x5, 0x83, 0x9a, 0x86, 0x9c, 0x97, - 0x1a, 0xa0, 0x9d, 0x9f, 0xba, 0x8a, 0x1e, 0x9e, 0xfb, 0x87, 0x78, 0x7, - 0xbe, 0x8a, 0xa0, 0x5f, 0xb9, 0x38, 0xea, 0xfb, 0x37, 0x18, 0xfb, 0x24, - 0x63, 0xf7, 0x3b, 0x6, 0x92, 0x7d, 0x5, 0x3f, 0xfb, 0x42, 0x63, 0xf7, - 0x42, 0x4e, 0x7, 0x53, 0x83, 0x5f, 0x44, 0x89, 0x1e, 0xe, 0xfb, 0x31, - 0x92, 0x7a, 0x1d, 0xd9, 0xb7, 0x3, 0xd9, 0xf8, 0x1d, 0x15, 0xb7, 0xf7, - 0xaf, 0x5f, 0x6, 0xfd, 0x46, 0x4, 0xb7, 0xf7, 0xa9, 0x5f, 0x6, 0xe, - 0xfb, 0x29, 0xa0, 0xf7, 0x74, 0xa0, 0xf8, 0xd0, 0x77, 0x12, 0xcb, 0xc0, - 0xf7, 0x67, 0xed, 0x2b, 0xc3, 0x13, 0xf8, 0xf7, 0xbc, 0xf7, 0x11, 0x15, - 0xe1, 0x83, 0xb7, 0xca, 0xce, 0x1a, 0xc6, 0x62, 0xc1, 0x5b, 0xb3, 0x1e, - 0xfb, 0x1d, 0xf7, 0x5, 0x5, 0x72, 0xa0, 0x82, 0xaa, 0x9f, 0x1a, 0xa2, - 0x9e, 0xba, 0xc7, 0xb9, 0xa1, 0x72, 0x79, 0x87, 0x7f, 0x84, 0x81, 0x7f, - 0x1e, 0x85, 0x83, 0x85, 0x81, 0x7e, 0x1a, 0x7d, 0x94, 0x6e, 0xb1, 0xae, - 0x9b, 0xa3, 0xa9, 0x1e, 0x13, 0xf4, 0xc5, 0x4e, 0xbc, 0x4b, 0x42, 0x46, - 0x65, 0x37, 0x48, 0xb5, 0x68, 0xc2, 0x5d, 0x1e, 0x89, 0x89, 0x5, 0x38, - 0x95, 0x57, 0x51, 0x41, 0x1a, 0x5a, 0xa8, 0x51, 0xd0, 0x56, 0x1e, 0xf7, - 0x26, 0xfb, 0x4, 0x9b, 0x7b, 0x61, 0x1a, 0x59, 0x68, 0x6e, 0x5a, 0x54, - 0x78, 0xad, 0x96, 0x1e, 0x98, 0xad, 0x95, 0xad, 0x1a, 0x9c, 0x7c, 0xa3, - 0x6a, 0x71, 0x6f, 0x79, 0x67, 0x52, 0xc8, 0x56, 0xda, 0xec, 0xb8, 0xca, - 0xca, 0xc3, 0x71, 0xac, 0x49, 0xc3, 0x1e, 0xfb, 0x3f, 0xf7, 0x56, 0x15, - 0xbb, 0xb2, 0x9d, 0xa9, 0xc2, 0xf7, 0x13, 0xfb, 0x0, 0x50, 0x5f, 0x69, - 0x71, 0x66, 0x4c, 0xfb, 0x9, 0xed, 0xd4, 0x1e, 0xe, 0x73, 0xf8, 0x9f, - 0xef, 0x1, 0x9d, 0xed, 0xf0, 0xed, 0x3, 0x9d, 0xf8, 0xd1, 0x15, 0x6e, - 0x1d, 0xf7, 0x5b, 0x16, 0x6e, 0x1d, 0xe, 0xf8, 0x27, 0x7d, 0xb5, 0xf7, - 0x2e, 0x9f, 0xf7, 0x9f, 0x9f, 0xf7, 0x25, 0xb5, 0x1, 0xb1, 0xc2, 0xf1, - 0xd8, 0xf7, 0x97, 0x9b, 0xf7, 0xc, 0xc2, 0x3, 0xb1, 0xf7, 0xde, 0x3e, - 0xa, 0x69, 0xa, 0xf8, 0x4a, 0x38, 0x15, 0x5d, 0x77, 0x68, 0x63, 0x49, - 0x1b, 0x25, 0x61, 0xd8, 0xf4, 0x8c, 0x1f, 0xec, 0x8c, 0xb6, 0xd3, 0xe8, - 0x1b, 0xd9, 0xa7, 0x52, 0x61, 0x8f, 0x1f, 0x9c, 0xdb, 0x6, 0xa9, 0x36, - 0x94, 0x64, 0xfb, 0x2c, 0x4a, 0xfb, 0x2, 0x38, 0xfb, 0x21, 0xea, 0x52, - 0xf7, 0x7, 0xcc, 0xb0, 0x95, 0xa5, 0xa8, 0x1e, 0x9b, 0xd1, 0x5, 0xe, - 0x3a, 0xf8, 0x33, 0x76, 0xf7, 0x92, 0xa7, 0x12, 0x9b, 0xca, 0xd9, 0xd3, - 0x17, 0xf7, 0x32, 0xf8, 0xbb, 0x15, 0x48, 0x7, 0x8a, 0x85, 0x8b, 0x84, - 0x81, 0x82, 0x8, 0x88, 0x85, 0x77, 0x79, 0x7d, 0x1b, 0x73, 0x7b, 0x9d, - 0xa8, 0x9e, 0xa2, 0xa1, 0xcf, 0xa1, 0x1f, 0x93, 0x24, 0x15, 0x5f, 0x92, - 0xa6, 0x81, 0x97, 0x1b, 0x96, 0x9f, 0x8c, 0xa8, 0xa6, 0x1f, 0x9d, 0x7, - 0x85, 0x84, 0x82, 0x85, 0x7f, 0x1b, 0x7e, 0x8b, 0x97, 0xa2, 0x1f, 0xf7, - 0x7, 0x7, 0xac, 0x84, 0xca, 0x2a, 0x40, 0x69, 0x68, 0x6b, 0x7d, 0x96, - 0x7a, 0x9f, 0x9f, 0x97, 0x98, 0x98, 0xa5, 0x89, 0x9d, 0xb8, 0xa2, 0x97, - 0x7a, 0x54, 0x1e, 0x2d, 0x69, 0x50, 0x76, 0x4f, 0x1a, 0x13, 0x80, 0x5e, - 0xb0, 0x75, 0xae, 0xae, 0xae, 0x9f, 0xad, 0x9f, 0x1e, 0xe, 0x79, 0xa, - 0xb5, 0xf7, 0x77, 0x50, 0xa, 0xa4, 0xaf, 0x92, 0x1a, 0x92, 0x89, 0x8f, - 0x83, 0x1e, 0x78, 0xfb, 0x51, 0x50, 0xa, 0xa5, 0xaf, 0x92, 0x96, 0x1d, - 0xf7, 0x63, 0xf7, 0x15, 0x76, 0xf7, 0x68, 0xcd, 0x63, 0xb3, 0x12, 0xf8, - 0x68, 0xcd, 0x5e, 0xb8, 0x13, 0xd0, 0x13, 0xa8, 0xa9, 0xf7, 0xee, 0x15, - 0xf8, 0x5f, 0xfb, 0x82, 0xb8, 0xf7, 0xaa, 0xfc, 0x8c, 0x6, 0xe, 0xf8, - 0x27, 0x7d, 0xb5, 0x7d, 0xf7, 0x49, 0xf7, 0xcd, 0xf7, 0x43, 0x12, 0xb1, - 0xc2, 0xf7, 0x43, 0xcb, 0xf7, 0x4, 0xce, 0xf7, 0x30, 0xc2, 0x13, 0x7e, - 0xf7, 0x6f, 0xf7, 0x2c, 0x15, 0xf7, 0x36, 0x9a, 0x6, 0x59, 0x90, 0x8c, - 0x95, 0xb6, 0x1a, 0xda, 0xbb, 0x7, 0x2d, 0xcb, 0xa4, 0x51, 0xab, 0x1b, - 0xcb, 0x93, 0x6, 0x78, 0x9a, 0x6c, 0xad, 0x71, 0xaf, 0x52, 0xd0, 0x18, - 0xb8, 0x9a, 0xad, 0xb1, 0xbf, 0x1a, 0xca, 0x53, 0xb1, 0x50, 0x1e, 0xfb, - 0x45, 0x7c, 0x6, 0xa1, 0x87, 0xa6, 0x8b, 0x70, 0x1a, 0xfb, 0x8d, 0x7, - 0x60, 0x8c, 0x81, 0x59, 0x86, 0x1e, 0xf7, 0x5, 0xf7, 0x30, 0x15, 0xf7, - 0x46, 0xb4, 0x7, 0xb2, 0xab, 0x6d, 0x52, 0x56, 0x77, 0x65, 0x5a, 0x1f, - 0xfb, 0xe5, 0x92, 0x3e, 0xa, 0x1e, 0x13, 0xbe, 0x69, 0xa, 0xe, 0x73, - 0xf8, 0xb7, 0xc1, 0x1, 0x96, 0xf8, 0xb7, 0x15, 0xf7, 0xcb, 0xc1, 0xfb, - 0xcb, 0x6, 0xe, 0xb6, 0xf8, 0x1a, 0xad, 0xf7, 0x6e, 0xad, 0x1, 0xc4, - 0xb2, 0xf7, 0x64, 0xb2, 0x3, 0xeb, 0xf8, 0xa9, 0x15, 0xc5, 0xb9, 0xbe, - 0xc5, 0xc5, 0xb9, 0x58, 0x51, 0x51, 0x5d, 0x58, 0x51, 0x51, 0x5d, 0xbe, - 0xc5, 0x1e, 0x64, 0x16, 0x3b, 0xca, 0x4c, 0xdb, 0xdb, 0xca, 0xca, 0xdb, - 0xdb, 0x4c, 0xca, 0x3b, 0x3b, 0x4c, 0x4c, 0x3b, 0x1e, 0xe, 0xf7, 0x63, - 0x8b, 0xcd, 0xc3, 0x77, 0xf7, 0x48, 0xcd, 0x54, 0xb6, 0xf7, 0x3e, 0x77, - 0x12, 0xf7, 0x8d, 0xcd, 0x55, 0xb3, 0x13, 0xec, 0xa9, 0x16, 0xf8, 0x8c, - 0xb5, 0xfc, 0x8c, 0x6, 0x13, 0xea, 0xf7, 0x7b, 0xdb, 0x15, 0xb3, 0x6, - 0x13, 0xda, 0xf7, 0x3f, 0xf7, 0x7d, 0xb6, 0xfb, 0x7d, 0xf7, 0x3e, 0x63, - 0xfb, 0x3e, 0xfb, 0x7b, 0x60, 0xf7, 0x7b, 0x7, 0xe, 0x52, 0xf7, 0xa2, - 0xcc, 0xf7, 0xaa, 0xca, 0x1, 0xf7, 0x4d, 0xe7, 0x3, 0x90, 0xf7, 0xa2, - 0x15, 0xf7, 0x92, 0x56, 0xa, 0x67, 0x8b, 0x1d, 0xb4, 0x7f, 0x1d, 0x28, - 0x20, 0x5, 0xe, 0x52, 0xf7, 0x9a, 0x85, 0x1d, 0x13, 0xd0, 0xdf, 0xf8, - 0x60, 0x77, 0xa, 0x79, 0x7c, 0x96, 0x95, 0x7d, 0x1e, 0x94, 0x7e, 0x7e, - 0x94, 0x7d, 0x63, 0xa, 0x13, 0xe0, 0x4e, 0x1d, 0x92, 0x1d, 0xe8, 0xf8, - 0x8f, 0x24, 0xa, 0xfb, 0x59, 0x76, 0xf7, 0x64, 0xc9, 0xf8, 0x22, 0x77, - 0x12, 0xaf, 0xe7, 0x47, 0xab, 0x6b, 0xe3, 0xf7, 0x56, 0xe3, 0x13, 0xea, - 0xe7, 0xc5, 0x15, 0x8d, 0x8d, 0x5, 0x4f, 0xab, 0xc1, 0x81, 0xaa, 0x1b, - 0xbe, 0xbf, 0xb9, 0xbe, 0xa8, 0x1f, 0x8d, 0x6, 0x62, 0x9c, 0x53, 0xbf, - 0xaf, 0xa7, 0x95, 0xba, 0xad, 0x1e, 0x93, 0x7, 0x77, 0x76, 0x7d, 0x83, - 0x7c, 0x1b, 0x6b, 0x8b, 0xb5, 0xa2, 0x1f, 0xf7, 0xfa, 0x33, 0xfb, 0xd9, - 0x7, 0x72, 0x7f, 0x60, 0x5b, 0x58, 0x1b, 0x13, 0xe6, 0x4f, 0x6f, 0xb1, - 0xc1, 0x1f, 0xf7, 0xc6, 0x33, 0xfc, 0x20, 0x7, 0x13, 0xf2, 0x4d, 0x73, - 0x3c, 0x4f, 0x1a, 0x5c, 0x95, 0x73, 0xaf, 0xaf, 0x95, 0xa3, 0xba, 0x1e, - 0x13, 0xea, 0xc7, 0x6d, 0xda, 0x85, 0xcd, 0x1e, 0xe, 0xeb, 0xfb, 0x57, - 0x76, 0xf9, 0xe7, 0xa6, 0x1, 0xf7, 0x7a, 0xaf, 0xe6, 0xaf, 0x3, 0xf7, - 0x7a, 0xfb, 0x6c, 0x15, 0xaf, 0xf9, 0xe7, 0xe6, 0xfd, 0xe7, 0xaf, 0xf9, - 0xe7, 0xcb, 0xa6, 0xfb, 0x87, 0x6, 0xfb, 0x20, 0x3d, 0x4f, 0xfb, 0x11, - 0xfb, 0x11, 0xd9, 0x50, 0xf7, 0x30, 0x1f, 0xe, 0x20, 0xf7, 0x70, 0x76, - 0xf7, 0x3, 0x77, 0x1, 0xd1, 0xf7, 0x3, 0x3, 0xd1, 0xf7, 0x91, 0x15, - 0x43, 0x1d, 0xe, 0x73, 0xfb, 0x6b, 0xf7, 0x2d, 0xc9, 0x77, 0x1, 0xf7, - 0x4e, 0xd6, 0x3, 0xeb, 0x23, 0x15, 0x92, 0x86, 0x5, 0x8f, 0x98, 0x9c, - 0x8d, 0x9a, 0x1b, 0xa0, 0x9c, 0x81, 0x75, 0x68, 0x70, 0x81, 0x6c, 0x76, - 0x74, 0x91, 0x91, 0x79, 0x1f, 0x7d, 0x6c, 0x5, 0x83, 0xac, 0x9e, 0x83, - 0xb5, 0x1b, 0xba, 0xcf, 0xb7, 0xb2, 0xb8, 0x68, 0xa4, 0x60, 0x80, 0x7f, - 0x8a, 0x89, 0x80, 0x1f, 0xa4, 0xcc, 0x5, 0x68, 0x6, 0xe, 0x52, 0xf7, - 0xa2, 0xa3, 0xf8, 0x12, 0x77, 0x1, 0xf7, 0x2, 0xdc, 0x3, 0xc4, 0xf7, - 0xa2, 0x35, 0xa, 0xfb, 0x86, 0x7, 0x69, 0x73, 0x80, 0x6e, 0x89, 0x1e, - 0xe, 0x5c, 0xf8, 0x1e, 0xac, 0xf7, 0x6c, 0xac, 0x1, 0x91, 0xd4, 0xf7, - 0x2c, 0xd4, 0x3, 0x91, 0xf8, 0xa8, 0x15, 0x3f, 0xc6, 0x4d, 0xdf, 0xf7, - 0x1, 0xb9, 0xde, 0xcc, 0xdd, 0x4d, 0xbf, 0x36, 0x2a, 0x55, 0x4a, 0x3c, - 0x1e, 0xd4, 0xa4, 0x15, 0xb7, 0xab, 0xb5, 0xb4, 0xbd, 0xa8, 0x67, 0x3f, - 0x4c, 0x62, 0x62, 0x6a, 0x47, 0x81, 0xe3, 0xb5, 0x1e, 0xe, 0x79, 0xa, - 0xf7, 0x8b, 0xac, 0x15, 0x58, 0xa, 0x7d, 0x79, 0x5c, 0x4d, 0x6a, 0x5d, - 0x8, 0x78, 0x70, 0x7c, 0x75, 0x86, 0x1a, 0x84, 0x8d, 0x87, 0x93, 0x1e, - 0xfb, 0x54, 0x16, 0x58, 0xa, 0x7e, 0x79, 0x5e, 0x52, 0x6a, 0x5e, 0x8, - 0x75, 0x6d, 0x7b, 0x73, 0x8f, 0x1d, 0xf8, 0x1d, 0x92, 0x76, 0xae, 0x76, - 0xe5, 0xc4, 0xf7, 0xf, 0xa3, 0xf8, 0x12, 0x77, 0x12, 0xe5, 0xdc, 0xf8, - 0x3a, 0xd1, 0x13, 0x7e, 0x53, 0xa, 0x13, 0xbe, 0xfc, 0x5b, 0xfb, 0x35, - 0x68, 0x1d, 0xfc, 0xbe, 0x47, 0x1d, 0xe, 0xf8, 0x1d, 0x8b, 0xcc, 0x51, - 0x76, 0xf7, 0xb0, 0xa3, 0xbc, 0xca, 0xf7, 0xa2, 0x77, 0x12, 0xdf, 0xdc, - 0xf8, 0x6a, 0xe7, 0x13, 0x7e, 0xf0, 0x7d, 0x68, 0x1d, 0xfc, 0x9f, 0x47, - 0x1d, 0x13, 0xbe, 0xf8, 0x3d, 0xfb, 0xba, 0x15, 0xf7, 0x91, 0x56, 0xa, - 0x71, 0x8b, 0x1d, 0xaa, 0x7f, 0x1d, 0x29, 0x20, 0x5, 0xe, 0xf8, 0x1d, - 0x92, 0x76, 0xf3, 0xc4, 0xf7, 0x7, 0x85, 0x1d, 0xf7, 0xc2, 0xd1, 0x13, - 0xf6, 0x53, 0xa, 0xfc, 0x5b, 0xfb, 0x35, 0x68, 0x1d, 0xfc, 0x8f, 0xfb, - 0x6c, 0x77, 0xa, 0x7a, 0x7c, 0x95, 0x95, 0x7d, 0x1e, 0x94, 0x7e, 0x7e, - 0x95, 0x7c, 0x63, 0xa, 0x13, 0xfa, 0x4e, 0x1d, 0xe2, 0xfb, 0x6e, 0xa9, - 0xf8, 0xb9, 0xf4, 0x12, 0xa9, 0xe7, 0xac, 0xf4, 0x17, 0xf7, 0x5c, 0xf7, - 0xba, 0x15, 0x4e, 0x64, 0x5a, 0x63, 0x59, 0x1e, 0x5f, 0x54, 0x5c, 0x53, - 0x40, 0x1a, 0x25, 0xd2, 0x4b, 0xf7, 0x4, 0xd0, 0xe9, 0xb6, 0xf0, 0xad, - 0x81, 0xa8, 0x63, 0x6f, 0x76, 0x73, 0x7a, 0x79, 0x94, 0x7f, 0x95, 0x80, - 0x1e, 0x94, 0x80, 0x95, 0x81, 0x7e, 0x1a, 0x6a, 0x62, 0x6f, 0x61, 0x3e, - 0x6a, 0xce, 0xc7, 0x1e, 0x13, 0x50, 0xb3, 0x9e, 0xd0, 0x9d, 0xb3, 0x1e, - 0xa7, 0xcb, 0x5, 0x91, 0x99, 0xa3, 0xd0, 0xc6, 0x1a, 0x4d, 0xf7, 0xb, - 0x15, 0x6e, 0xa2, 0x74, 0xa8, 0x1e, 0xa8, 0xa3, 0xa2, 0xa8, 0x94, 0x1d, - 0x1f, 0xe, 0xf8, 0x1, 0x99, 0x76, 0xf7, 0x73, 0xb4, 0xf8, 0x35, 0x77, - 0xf7, 0x80, 0x77, 0x1, 0x54, 0xf9, 0x47, 0xfd, 0x2, 0xf7, 0x5a, 0x3, - 0x20, 0x1d, 0x59, 0xf8, 0x62, 0x27, 0x1d, 0x5c, 0x1d, 0xf7, 0x80, 0x77, - 0x1, 0x4c, 0xf9, 0x47, 0xfb, 0x93, 0xf7, 0x93, 0x3, 0x21, 0xa, 0x79, - 0x5f, 0x6b, 0x2a, 0x1d, 0xfb, 0x33, 0xf8, 0x62, 0x24, 0xa, 0x5c, 0x1d, - 0xf7, 0x7c, 0x77, 0x1, 0x54, 0xf9, 0x47, 0x3, 0x20, 0x1d, 0xfb, 0x85, - 0xf8, 0x62, 0x25, 0x1d, 0xe, 0x5b, 0x1d, 0xf8, 0x7f, 0xf1, 0x5a, 0xbc, - 0x12, 0x90, 0xf9, 0x47, 0x13, 0xd0, 0x20, 0xa, 0x13, 0x58, 0x77, 0x6, - 0xfb, 0x64, 0xfc, 0x7f, 0x78, 0x5f, 0x6c, 0x2a, 0x1d, 0xfb, 0x8f, 0xf8, - 0x7b, 0x83, 0x1d, 0x9b, 0xb3, 0xb0, 0x1b, 0xa4, 0xa1, 0x80, 0x80, 0x9f, - 0x1f, 0x13, 0xe0, 0x7c, 0xa5, 0xa1, 0x7b, 0xa1, 0x1b, 0xd9, 0x9d, 0xcf, - 0x65, 0xa, 0x63, 0x7a, 0x6f, 0x81, 0x72, 0x1b, 0x7c, 0x75, 0x98, 0x98, - 0x73, 0x1f, 0x97, 0x75, 0x74, 0x97, 0x77, 0x54, 0xa, 0x5c, 0x1d, 0xdd, - 0xee, 0x12, 0x8b, 0xf7, 0x5a, 0x99, 0xee, 0xef, 0xee, 0x13, 0xfa, 0x20, - 0x1d, 0x67, 0xf8, 0xa4, 0x15, 0x6a, 0x1d, 0x13, 0xf6, 0xfb, 0x5b, 0x16, - 0x6a, 0x1d, 0xe, 0x5b, 0x1d, 0xf8, 0x6f, 0xf7, 0x3a, 0x12, 0xf7, 0xb1, - 0xf7, 0x18, 0xfb, 0x15, 0xf7, 0x3a, 0x13, 0xe8, 0x20, 0x1d, 0xfb, 0x57, - 0xf8, 0xb1, 0x67, 0xa, 0xac, 0x16, 0xaf, 0xa9, 0x93, 0xa, 0x6d, 0x67, - 0x1e, 0x13, 0xf0, 0x67, 0x6d, 0xa9, 0xaf, 0x1f, 0xe, 0xf8, 0xa8, 0x8b, - 0xb1, 0xf7, 0x72, 0xb2, 0xa9, 0xb0, 0xf7, 0x98, 0xaf, 0x77, 0x9f, 0x12, - 0x8b, 0xf7, 0x5b, 0xf7, 0x5b, 0xee, 0xf7, 0x87, 0xa0, 0xab, 0xa2, 0x13, - 0xf3, 0x0, 0x13, 0xeb, 0x0, 0x8b, 0x4, 0xf7, 0x5b, 0x9e, 0x6, 0x7e, - 0x8d, 0x49, 0x89, 0xa0, 0xd8, 0x93, 0xaa, 0xa5, 0xb7, 0xba, 0xe4, 0x8, - 0xf7, 0x44, 0xfb, 0x22, 0x6, 0x44, 0x7b, 0x78, 0x53, 0x84, 0x1e, 0x7a, - 0x89, 0x5, 0x78, 0xf8, 0x92, 0x7, 0xb7, 0xf7, 0x3c, 0x5, 0x73, 0x6, - 0xfb, 0x2, 0x52, 0x68, 0x77, 0x22, 0x1b, 0x3f, 0x6, 0x49, 0x88, 0x96, - 0xcc, 0x1f, 0xf7, 0x6b, 0xf7, 0x25, 0x7, 0xe2, 0x90, 0x5c, 0x56, 0x91, - 0x1f, 0xa0, 0xf7, 0x7e, 0x76, 0x6, 0x44, 0x85, 0x7c, 0x71, 0xfb, 0x3, - 0x1b, 0xfb, 0x3, 0xf7, 0x7a, 0x6, 0xa8, 0x9b, 0x8c, 0x96, 0x1e, 0xe2, - 0x6, 0xf7, 0x16, 0xb4, 0x84, 0x29, 0x96, 0x1f, 0xa2, 0xf7, 0x21, 0xfc, - 0xc8, 0x6, 0x13, 0xf7, 0x80, 0x77, 0x7, 0xc8, 0xa8, 0x80, 0x73, 0x83, - 0x86, 0x81, 0x87, 0x83, 0x1f, 0xfb, 0x89, 0xfc, 0x6e, 0x68, 0x46, 0x79, - 0x7e, 0x68, 0x85, 0x19, 0xf7, 0x83, 0xf7, 0xac, 0x15, 0xf7, 0x30, 0xf7, - 0xcd, 0x5, 0x8e, 0xfb, 0xcd, 0x6, 0xe, 0xf7, 0xca, 0xfb, 0x56, 0x76, - 0xf7, 0x5d, 0xb7, 0xf8, 0xf2, 0xb3, 0x1, 0xa7, 0xf7, 0x8, 0xf7, 0xa4, - 0xd6, 0xf5, 0xa2, 0x3, 0xf7, 0xae, 0x8e, 0xa, 0xcc, 0x8c, 0xce, 0xa9, - 0xbf, 0x1a, 0xc3, 0x54, 0xa2, 0x52, 0x7f, 0x1e, 0xa0, 0xc1, 0xf7, 0x32, - 0x9a, 0xd5, 0xf6, 0x8c, 0x8d, 0x19, 0x79, 0x9d, 0x5, 0x77, 0x1d, 0xf7, - 0x24, 0xb7, 0xcb, 0xb2, 0xb1, 0x1f, 0xb4, 0xb5, 0xc5, 0x9f, 0xbd, 0x1b, - 0xf7, 0xf, 0xd3, 0x31, 0x22, 0xa4, 0x1f, 0xa2, 0x6, 0x82, 0xf7, 0x7f, - 0x59, 0x1d, 0x1f, 0x8c, 0x6, 0x66, 0x33, 0x92, 0x86, 0x5, 0xab, 0x94, - 0xbe, 0x8c, 0x86, 0xa, 0x5a, 0x1d, 0xf7, 0x78, 0x77, 0x12, 0x7f, 0xa, - 0x17, 0x97, 0x16, 0xf8, 0xb0, 0x6, 0x13, 0xff, 0x80, 0x23, 0x1d, 0xf7, - 0xdd, 0xf9, 0x50, 0x27, 0x1d, 0x5a, 0x1d, 0xf7, 0x78, 0x77, 0x1, 0x7f, - 0xa, 0x3, 0xf7, 0x7c, 0xf9, 0x63, 0x21, 0x1d, 0xfc, 0x3, 0xfd, 0xf7, - 0x2c, 0xa, 0x5a, 0x1d, 0xf7, 0x74, 0x77, 0x1, 0x7f, 0xa, 0x3, 0xf7, - 0x2a, 0x38, 0xa, 0xfb, 0x9a, 0xfe, 0xa, 0x2c, 0xa, 0x7b, 0xa, 0xf7, - 0xb5, 0xb4, 0xf7, 0x94, 0xb1, 0xd3, 0xf0, 0x12, 0xee, 0xf1, 0x5d, 0xf0, - 0xee, 0xf0, 0x94, 0xa2, 0x13, 0xfa, 0x97, 0x16, 0xf8, 0xb0, 0x6, 0x36, - 0x1d, 0x13, 0x7b, 0x26, 0xa, 0x13, 0x16, 0x3e, 0x7a, 0xa, 0x13, 0xf6, - 0xf7, 0x23, 0xf9, 0x91, 0x15, 0x6c, 0x1d, 0xf7, 0x5c, 0x16, 0x6c, 0x1d, - 0xe, 0x73, 0x83, 0xa, 0xf7, 0x8c, 0x42, 0xa, 0xf7, 0x4c, 0xf9, 0x50, - 0x2d, 0xa, 0x89, 0x81, 0x1d, 0x9d, 0x57, 0xa, 0x73, 0x83, 0xa, 0xf7, - 0x8c, 0x77, 0x1, 0xf7, 0x7, 0xf1, 0x3, 0xe8, 0xf9, 0x63, 0x21, 0x1d, - 0xfb, 0x72, 0xfd, 0xf7, 0x15, 0xf7, 0xbf, 0x9e, 0x6, 0x41, 0x8d, 0x71, - 0x60, 0x1d, 0xa6, 0x9c, 0xd4, 0x8e, 0x1e, 0x9e, 0xfb, 0xbf, 0x78, 0x7, - 0x49, 0xa, 0xe, 0x73, 0x83, 0xa, 0xf7, 0x88, 0x77, 0x1, 0xf7, 0x7, - 0xf1, 0x3, 0x96, 0x38, 0xa, 0xfb, 0x10, 0xfe, 0xa, 0x15, 0xf7, 0xcb, - 0x9e, 0x6, 0x41, 0x8d, 0x6c, 0x60, 0x1d, 0xab, 0x9c, 0xd4, 0x8e, 0x1e, - 0x9e, 0xfb, 0xcb, 0x78, 0x7, 0xde, 0x87, 0xa0, 0x75, 0x41, 0x89, 0x1d, - 0x44, 0x78, 0x70, 0x36, 0x89, 0x1e, 0xe, 0x73, 0xa0, 0x76, 0xf9, 0x17, - 0x97, 0xa, 0x12, 0xad, 0xed, 0x7a, 0xf1, 0x13, 0xd0, 0x9d, 0x16, 0xf7, - 0xbd, 0x9e, 0x6, 0x13, 0xc8, 0x59, 0xa, 0x13, 0xb0, 0x9e, 0xfb, 0xbd, - 0x7, 0x13, 0xd0, 0x78, 0x7, 0x13, 0xc8, 0x49, 0xa, 0xf9, 0x91, 0x4, - 0x6d, 0x1d, 0xf7, 0x5b, 0x16, 0x6d, 0x1d, 0xe, 0xf8, 0x1, 0x8b, 0xb0, - 0xf7, 0xaa, 0xb7, 0xf7, 0x9e, 0xb0, 0x1, 0xf3, 0xf1, 0xf8, 0x6, 0x58, - 0x1d, 0x96, 0x71, 0x41, 0x1f, 0xfb, 0x4c, 0x34, 0x5f, 0xe2, 0xfb, 0x58, - 0x7, 0x45, 0x7f, 0x6d, 0x3f, 0x1e, 0xf7, 0x52, 0xf7, 0xbc, 0x15, 0xf7, - 0x26, 0xb7, 0xfb, 0x26, 0xf7, 0x4b, 0x6, 0xbe, 0x8b, 0xab, 0x8b, 0xa, - 0xfb, 0xb7, 0xfb, 0x8a, 0x8b, 0x4b, 0x5b, 0x7f, 0x9f, 0xc5, 0x1e, 0xe, - 0xf8, 0x1, 0x95, 0x76, 0xab, 0x76, 0xf7, 0x49, 0x77, 0xf8, 0x89, 0x77, - 0xf1, 0xf5, 0x12, 0xf7, 0x1, 0xb7, 0xf8, 0x33, 0xb7, 0x13, 0x7e, 0x5f, - 0xa, 0xf8, 0x10, 0x8d, 0x7, 0x13, 0xbe, 0x3a, 0xa, 0x13, 0x7e, 0xf7, - 0x4c, 0xf9, 0x69, 0x4c, 0xa, 0x9d, 0x67, 0x1f, 0x97, 0x74, 0x75, 0x91, - 0x76, 0x54, 0xa, 0x30, 0x1d, 0xf7, 0x8d, 0xf8, 0x10, 0x27, 0x1d, 0x30, - 0x1d, 0xf7, 0x20, 0xf8, 0x10, 0x24, 0xa, 0x5b, 0xa, 0xf7, 0x66, 0x77, - 0x74, 0xa, 0xf7, 0x62, 0x38, 0xa, 0xfb, 0xbc, 0xfc, 0xb8, 0x29, 0x1d, - 0xe, 0x5b, 0xa, 0xcf, 0xf5, 0x85, 0xa, 0xf7, 0xde, 0x70, 0xa, 0xfb, - 0x17, 0x69, 0x1d, 0xf7, 0x17, 0x61, 0x1d, 0xf7, 0x8, 0x61, 0xa, 0xfb, - 0x8, 0x44, 0x1d, 0xdc, 0xf1, 0xf1, 0xf7, 0x3, 0x3a, 0x71, 0x1d, 0x32, - 0x72, 0x1d, 0xe4, 0xf7, 0x70, 0x1e, 0xbb, 0xf8, 0x31, 0x4c, 0xa, 0x91, - 0x7f, 0x1f, 0xa3, 0x5c, 0x75, 0x91, 0x76, 0x54, 0xa, 0x5b, 0xa, 0xc6, - 0xef, 0x7b, 0x1d, 0xca, 0xef, 0xef, 0xef, 0xca, 0x9a, 0xa, 0xad, 0xf7, - 0xe6, 0x70, 0xa, 0xfb, 0x1f, 0x69, 0x1d, 0xf7, 0x10, 0x61, 0x1d, 0xf7, - 0xf, 0x34, 0xa, 0x33, 0x71, 0x1d, 0x39, 0x5e, 0xa, 0xca, 0xf8, 0x52, - 0x15, 0x30, 0xa, 0xf7, 0x5c, 0x16, 0x30, 0xa, 0xe, 0xf7, 0x63, 0xa8, - 0x76, 0xac, 0x76, 0xf8, 0x71, 0x77, 0x12, 0x13, 0xa0, 0xc5, 0xc3, 0x15, - 0xa6, 0x6f, 0xf7, 0x59, 0xf7, 0x59, 0x5, 0x13, 0x60, 0xf7, 0x61, 0xfb, - 0x61, 0xa7, 0xa6, 0xfb, 0x61, 0xf7, 0x62, 0xf7, 0x59, 0xf7, 0x58, 0x6f, - 0xa7, 0xfb, 0x59, 0xfb, 0x59, 0xfb, 0x58, 0xf7, 0x59, 0x70, 0x6e, 0xf7, - 0x57, 0xfb, 0x57, 0x5, 0xe, 0xf8, 0x1, 0x50, 0x76, 0xcd, 0xaf, 0xf8, - 0xfe, 0xaf, 0xc5, 0x77, 0x74, 0xa, 0xf7, 0x6f, 0xe3, 0x15, 0xf7, 0xc8, - 0xf8, 0x58, 0x5, 0xa8, 0x5a, 0x9d, 0x41, 0x2e, 0x1a, 0xfb, 0x70, 0x25, - 0x39, 0xfb, 0x3, 0x57, 0x57, 0x9f, 0xb9, 0x65, 0x1e, 0x72, 0xae, 0x15, - 0x6e, 0xbc, 0x7a, 0xd9, 0xe6, 0x1a, 0xf7, 0x78, 0xf7, 0x3, 0xd2, 0xf1, - 0xbc, 0xbf, 0x78, 0x5d, 0xb3, 0x1e, 0xfc, 0x52, 0xfd, 0x23, 0x15, 0xbc, - 0x6, 0xda, 0xf7, 0x8, 0x5, 0x6a, 0xbe, 0xc8, 0x7a, 0xcc, 0x1b, 0xf7, - 0x49, 0xf7, 0x26, 0xf7, 0x10, 0xf7, 0x69, 0xf7, 0x11, 0x5b, 0xed, 0x45, - 0xc5, 0x1f, 0xe3, 0xf7, 0x16, 0x5, 0x5a, 0x6, 0x43, 0x20, 0x5, 0xac, - 0x56, 0x4e, 0x9b, 0x4d, 0x1b, 0xfb, 0x38, 0xfb, 0x37, 0x21, 0xfb, 0x7a, - 0xfb, 0xb, 0xb8, 0x24, 0xd3, 0x50, 0x1f, 0xe, 0x7c, 0xa, 0xf7, 0xfd, - 0xb7, 0x3, 0x99, 0xf9, 0x17, 0x15, 0xd7, 0x99, 0x71, 0x41, 0x1f, 0xfb, - 0xc6, 0x7, 0x4a, 0x8b, 0xfb, 0x4e, 0xf7, 0x8c, 0xf7, 0x97, 0x8b, 0xf7, - 0x47, 0xe4, 0x1e, 0xf7, 0x8f, 0x7, 0xf4, 0x9c, 0xab, 0xd8, 0x8c, 0x1e, - 0x9e, 0xfb, 0x7c, 0x78, 0x7, 0xd1, 0x8a, 0xa3, 0x6d, 0x20, 0x1a, 0xfb, - 0x98, 0x7, 0xfb, 0x11, 0x4f, 0x31, 0x98, 0x1d, 0xf7, 0x22, 0xc8, 0x1e, - 0xf7, 0xca, 0x7, 0xd2, 0x97, 0xa7, 0xda, 0x8c, 0x1e, 0x88, 0xa, 0xf8, - 0x13, 0xc4, 0x3a, 0x1d, 0x73, 0x87, 0x8b, 0x7b, 0x1b, 0x6c, 0x8a, 0x81, - 0x1d, 0x9c, 0x57, 0xa, 0x7c, 0xa, 0xf7, 0xf6, 0xb7, 0x3, 0xf8, 0x4, - 0xf9, 0x63, 0x21, 0x1d, 0xfc, 0x89, 0xfb, 0x74, 0x32, 0x1d, 0x6e, 0xa, - 0xf7, 0x88, 0x77, 0x1, 0xf3, 0xf1, 0xf7, 0xf6, 0xb7, 0x3, 0xf7, 0x62, - 0x38, 0xa, 0xfb, 0xd0, 0xfb, 0x87, 0x32, 0x1d, 0xf8, 0x1, 0x7d, 0xb7, - 0xf8, 0xf9, 0x97, 0xa, 0xe9, 0xee, 0x12, 0xf7, 0x13, 0xf1, 0x7a, 0xee, - 0xf0, 0xee, 0xb4, 0xb7, 0x13, 0xcb, 0x99, 0xf9, 0x17, 0x2e, 0x1d, 0x13, - 0xbb, 0x9e, 0xfb, 0x7c, 0x7, 0x13, 0xcb, 0x50, 0x1d, 0x4f, 0x3f, 0xfb, - 0x13, 0x47, 0xa, 0x13, 0xbb, 0x88, 0xa, 0x13, 0xcb, 0x13, 0xb7, 0xf7, - 0x5a, 0xf7, 0xf, 0x4a, 0x1d, 0xf8, 0x1, 0x83, 0xa, 0xf7, 0x8c, 0x72, - 0xa, 0xa8, 0xde, 0x1a, 0xf7, 0x3f, 0x7e, 0x1d, 0x4b, 0x1d, 0x5e, 0x1d, - 0xf7, 0x6, 0xf9, 0x50, 0x24, 0xa, 0xf7, 0x5b, 0x93, 0x9e, 0xf7, 0x25, - 0xb3, 0xf7, 0x95, 0xb1, 0xf7, 0x34, 0x77, 0x6d, 0xa, 0x98, 0xe9, 0x1a, - 0xac, 0x66, 0x1d, 0xf7, 0x6, 0x21, 0xcd, 0xfb, 0x2e, 0x1e, 0x3b, 0x6, - 0x88, 0xe7, 0x9a, 0x97, 0xda, 0x92, 0x8, 0x9e, 0xfb, 0xa9, 0x78, 0x7, - 0xd4, 0x84, 0x96, 0x7f, 0x44, 0x1a, 0xfc, 0x3b, 0x8d, 0xa, 0xf7, 0x4a, - 0x15, 0xf7, 0x98, 0x7, 0xac, 0x96, 0x8b, 0xa9, 0xb7, 0xf7, 0x26, 0x8a, - 0x74, 0x1d, 0x82, 0xa8, 0x77, 0x9f, 0xf9, 0x10, 0xa6, 0x12, 0xd4, 0xdf, - 0xf7, 0x45, 0xe2, 0x5c, 0xe9, 0x13, 0x78, 0x97, 0x16, 0xf7, 0x25, 0xf8, - 0xb9, 0x6, 0x9b, 0x8d, 0xe6, 0xe2, 0xbb, 0xb3, 0x5f, 0x2d, 0x1e, 0xfb, - 0x38, 0xfb, 0x10, 0xc1, 0x69, 0x1a, 0x6e, 0xc4, 0xa5, 0xbb, 0x65, 0x1e, - 0x13, 0xb4, 0x9c, 0x7d, 0xb5, 0x60, 0x23, 0x1a, 0x38, 0x82, 0x46, 0x54, - 0x7a, 0x85, 0x92, 0x99, 0x87, 0x1e, 0x89, 0x93, 0x8a, 0x96, 0x8a, 0x97, - 0x8, 0x9f, 0x89, 0x7c, 0x9f, 0x72, 0x1b, 0x71, 0x78, 0x77, 0x6e, 0x75, - 0x9c, 0x59, 0xdd, 0xf7, 0x1, 0xcf, 0xef, 0xe6, 0xf7, 0x21, 0xfb, 0x4, - 0xbe, 0x46, 0x8d, 0x1f, 0x8d, 0x7, 0x13, 0x78, 0xf7, 0x3, 0xbb, 0xa2, - 0xb4, 0xd0, 0x1a, 0xf6, 0x2c, 0xb3, 0x43, 0xfb, 0x48, 0x8a, 0xfb, 0x3a, - 0x4c, 0x1e, 0xfb, 0xfc, 0x7, 0x4a, 0x73, 0x80, 0x66, 0x88, 0x1e, 0xe, - 0x4f, 0x1d, 0xf7, 0x6e, 0x77, 0x12, 0xb0, 0xe3, 0x39, 0xe3, 0xf7, 0x30, - 0xdc, 0x13, 0xda, 0x34, 0x1d, 0x1e, 0x13, 0xd6, 0xfb, 0x8, 0x67, 0x44, - 0x63, 0x7b, 0x8c, 0x6f, 0xaa, 0xa5, 0xa4, 0x97, 0xa0, 0x1f, 0x94, 0x80, - 0xa4, 0x9a, 0x1a, 0x13, 0xba, 0xaa, 0xb1, 0x37, 0xa, 0xcb, 0x89, 0xa, - 0xbe, 0xab, 0xa4, 0x1e, 0x6d, 0xf8, 0x46, 0x27, 0x1d, 0x4f, 0x1d, 0xf7, - 0x6e, 0x77, 0x1, 0xaa, 0xe3, 0xf7, 0x3c, 0xdc, 0x3, 0x34, 0x1d, 0xfb, - 0x8, 0x4f, 0x44, 0x63, 0x7b, 0xa4, 0x6f, 0xaa, 0xa5, 0x91, 0xa1, 0xa0, - 0x1e, 0xb2, 0x7, 0xaa, 0xb9, 0x37, 0xa, 0xb3, 0x66, 0xc1, 0xe9, 0xb1, - 0xbe, 0xab, 0xa4, 0x1e, 0xfb, 0x1f, 0xf8, 0x46, 0x15, 0xf7, 0x27, 0xf7, - 0x28, 0x5, 0xa2, 0xa2, 0x91, 0x8b, 0x9a, 0x1b, 0xab, 0x8c, 0x6f, 0x87, - 0x74, 0x78, 0x7f, 0x80, 0x84, 0x1f, 0xfb, 0x2e, 0x2a, 0x5, 0xe, 0x4f, - 0x1d, 0xf7, 0x6a, 0x77, 0x84, 0xa, 0xce, 0xf8, 0x8f, 0x25, 0x1d, 0xeb, - 0xfc, 0x2a, 0x29, 0xa, 0x4f, 0x1d, 0xd3, 0xf5, 0x84, 0xa, 0xc4, 0xf8, - 0xa8, 0x83, 0x1d, 0x96, 0xaf, 0xb1, 0x1b, 0x97, 0x98, 0x84, 0x45, 0x1d, - 0x74, 0x94, 0x91, 0x7f, 0x1f, 0xa3, 0x5c, 0x77, 0x96, 0x76, 0x1b, 0x48, - 0x6d, 0x4d, 0x5f, 0x83, 0x1f, 0xf7, 0x7a, 0xfb, 0x9c, 0x29, 0xa, 0x4f, - 0x1d, 0xcb, 0xee, 0x12, 0xb0, 0xe3, 0x46, 0xe3, 0x44, 0xee, 0xf0, 0xea, - 0x3a, 0xdc, 0x13, 0xd8, 0x80, 0xf7, 0xb3, 0xf7, 0xa0, 0x28, 0x1d, 0x13, - 0xd5, 0x0, 0x3e, 0x1d, 0x13, 0xb8, 0x80, 0x3c, 0x1d, 0x13, 0xd3, 0x0, - 0xfb, 0x6b, 0xf8, 0x88, 0x4a, 0x1d, 0xe2, 0x81, 0xc5, 0xf7, 0x95, 0xf7, - 0x2b, 0x77, 0xa3, 0xcd, 0xad, 0xf7, 0x17, 0xad, 0x12, 0xc3, 0xe3, 0x64, - 0xe3, 0x3d, 0xad, 0xf7, 0x7, 0xdc, 0x98, 0xae, 0x13, 0xda, 0x40, 0xf7, - 0xb3, 0xf7, 0xa0, 0x24, 0x1d, 0x13, 0xdc, 0x80, 0x40, 0xa, 0xeb, 0xfb, - 0x29, 0xfb, 0x8, 0x5c, 0x48, 0x57, 0x1d, 0x1e, 0x94, 0x86, 0x9a, 0x9a, - 0x1a, 0x13, 0xba, 0x40, 0xaa, 0xb1, 0x99, 0xac, 0xa9, 0xba, 0x57, 0x43, - 0x1e, 0x7b, 0x4f, 0xa, 0xbf, 0x89, 0xa, 0xbd, 0xac, 0xb0, 0x1e, 0x13, - 0xd9, 0x40, 0xfb, 0x39, 0xf8, 0xae, 0x67, 0xa, 0xad, 0x16, 0xaf, 0xa8, - 0x93, 0xa, 0x6e, 0x67, 0x67, 0x6e, 0xa8, 0xaf, 0x1e, 0xe, 0xf7, 0xca, - 0x81, 0xbb, 0x5b, 0xce, 0xf7, 0x70, 0xa9, 0x88, 0xf7, 0x30, 0x73, 0xa3, - 0x12, 0xb1, 0xe2, 0x4a, 0xe4, 0xf7, 0x10, 0xdc, 0x13, 0x6d, 0xf7, 0xc6, - 0xd4, 0x15, 0x71, 0x9c, 0xa9, 0x52, 0xe1, 0x1b, 0xb1, 0xe9, 0x98, 0xf7, - 0x26, 0xc8, 0x1f, 0x7f, 0x90, 0x5, 0x56, 0x6a, 0x59, 0x5f, 0x54, 0x1b, - 0xfb, 0x14, 0x8b, 0xf7, 0xd, 0xee, 0x1f, 0xf7, 0x9a, 0x6, 0x13, 0x93, - 0xbd, 0x7c, 0xf7, 0x19, 0xfb, 0x22, 0x58, 0x6d, 0x7f, 0x6a, 0x62, 0x1e, - 0xa0, 0x73, 0x6e, 0xa3, 0x49, 0x1b, 0x35, 0x43, 0x5e, 0x4d, 0x65, 0xa4, - 0x80, 0x9c, 0xba, 0x8b, 0xb5, 0xaf, 0x1f, 0x13, 0xad, 0xa8, 0x9e, 0xa4, - 0xb8, 0xcd, 0x89, 0x57, 0x24, 0x87, 0x1e, 0xfb, 0x35, 0x4a, 0x41, 0x6d, - 0x31, 0x1a, 0x61, 0xab, 0x4b, 0xde, 0xee, 0x92, 0xb7, 0xb2, 0xba, 0x1e, - 0x7e, 0xa4, 0x15, 0x7d, 0x52, 0x5d, 0x64, 0x54, 0x7a, 0xc2, 0xa5, 0xca, - 0xa4, 0xa7, 0xf7, 0xf, 0xb6, 0x1e, 0x8c, 0x57, 0x5, 0x8c, 0x44, 0x9d, - 0x72, 0x84, 0x1a, 0xc9, 0xf7, 0x65, 0x15, 0xb5, 0x8d, 0x8f, 0xdd, 0xde, - 0x1b, 0xd3, 0x90, 0x37, 0x63, 0x1f, 0xe, 0xe2, 0xfb, 0x56, 0x76, 0xf7, - 0x61, 0xd3, 0xf7, 0x91, 0xf7, 0x25, 0x6e, 0xa8, 0x12, 0xa4, 0xd8, 0xf7, - 0x31, 0xd6, 0x13, 0xdc, 0xf7, 0x11, 0x8e, 0xa, 0xcb, 0xcf, 0xaa, 0xbf, - 0xc3, 0x54, 0xa2, 0x52, 0x7f, 0x1f, 0xa1, 0xc5, 0xcd, 0x95, 0xc2, 0xb8, - 0xba, 0xee, 0x19, 0x63, 0x1d, 0x90, 0x79, 0x6d, 0x93, 0x1f, 0x13, 0xec, - 0x5f, 0x97, 0x9c, 0x73, 0xa5, 0x1b, 0xa9, 0x9b, 0xa0, 0xa2, 0xca, 0x33, - 0xb1, 0x4e, 0xfb, 0x0, 0xfb, 0x8, 0x38, 0xfb, 0x38, 0xfb, 0x30, 0xf3, - 0x4a, 0xda, 0x89, 0x1f, 0x65, 0x2e, 0x92, 0x86, 0x5, 0xab, 0x94, 0xbd, - 0x8d, 0x86, 0xa, 0xe2, 0x81, 0xd0, 0xf7, 0x4f, 0xab, 0xf7, 0xd, 0xaf, - 0xf7, 0x87, 0x77, 0x12, 0xa3, 0xd0, 0xf7, 0x68, 0xf1, 0x17, 0x26, 0x1d, - 0x13, 0x7c, 0x3d, 0x1d, 0x5e, 0xf7, 0x64, 0x27, 0x1d, 0x87, 0x1d, 0xf7, - 0x11, 0xaf, 0xf7, 0x6e, 0x77, 0x1, 0xac, 0xd0, 0xf7, 0x46, 0xf1, 0x3, - 0x28, 0xa, 0xfb, 0x6, 0xf7, 0x64, 0x24, 0xa, 0x87, 0x1d, 0xf7, 0x11, - 0xaf, 0xf7, 0x6a, 0x77, 0x1, 0xa4, 0xd0, 0xf7, 0x65, 0xf1, 0x3, 0x28, - 0xa, 0xfb, 0x80, 0xf7, 0x64, 0x25, 0x1d, 0xe, 0xe2, 0x81, 0xd0, 0xf7, - 0x58, 0xab, 0xf7, 0x1d, 0xaf, 0xca, 0xef, 0x12, 0xa4, 0xd0, 0x77, 0xed, - 0xf0, 0xed, 0x13, 0xfa, 0x28, 0xa, 0x13, 0xf6, 0xfb, 0x79, 0xf7, 0xa6, - 0x15, 0x4b, 0xa, 0x8f, 0xa, 0xf9, 0x3a, 0x27, 0xa, 0xf7, 0x33, 0xf8, - 0x80, 0x27, 0x1d, 0x8f, 0xa, 0xf9, 0x3a, 0x27, 0xa, 0xbd, 0xf8, 0x80, - 0x24, 0xa, 0x8f, 0xa, 0xf9, 0x36, 0x27, 0xa, 0x6b, 0xf8, 0x80, 0x25, - 0x1d, 0xe, 0x8f, 0xa, 0xf8, 0xa0, 0xee, 0x1, 0x82, 0xed, 0x91, 0xdf, - 0x96, 0xed, 0x23, 0xa, 0x72, 0xf8, 0xc2, 0x15, 0x6b, 0xa, 0xf7, 0x5b, - 0x16, 0x6b, 0xa, 0xe, 0x71, 0xa, 0xf7, 0x76, 0x77, 0x1, 0xa8, 0xe5, - 0xf7, 0x9a, 0xe5, 0x3, 0xf7, 0xb, 0xf7, 0xaa, 0x15, 0xf1, 0xc3, 0xbf, - 0xca, 0xd4, 0xd1, 0x3d, 0xfb, 0x2f, 0xfb, 0x23, 0x48, 0x65, 0x58, 0xfb, - 0xc, 0x73, 0xf7, 0x4c, 0xd7, 0x1e, 0xf7, 0x89, 0xf7, 0x11, 0x15, 0xb4, - 0x60, 0x69, 0x9b, 0x61, 0x1b, 0xfb, 0x19, 0x38, 0xfb, 0x1, 0xfb, 0x17, - 0xfb, 0x13, 0xe6, 0x24, 0x65, 0x1d, 0xf7, 0x32, 0xf7, 0x1c, 0xf7, 0xb, - 0x5e, 0xf7, 0xd, 0x2e, 0xd9, 0x1f, 0xe6, 0xbb, 0x6a, 0xa9, 0x2c, 0x59, - 0x62, 0xa5, 0x57, 0xa5, 0x50, 0x8f, 0x19, 0x61, 0x75, 0xbb, 0x84, 0xb8, - 0x6d, 0xb3, 0x6e, 0x19, 0xfb, 0xd, 0x4b, 0xac, 0x6d, 0xf7, 0xf, 0xcc, - 0xbe, 0x5a, 0xae, 0x54, 0x95, 0x4f, 0x19, 0xe, 0xa0, 0x76, 0xf8, 0x29, - 0xc2, 0xd6, 0xf2, 0x73, 0xa, 0xb2, 0xb6, 0x1a, 0xf7, 0x8c, 0x7e, 0xa, - 0xfb, 0x5b, 0x7, 0x3f, 0x71, 0x7c, 0x82, 0x1d, 0xa7, 0xce, 0x1a, 0xf7, - 0x58, 0x46, 0xa, 0xd0, 0xf8, 0x99, 0x15, 0xa8, 0x6, 0xb0, 0x8e, 0xac, - 0x9e, 0xa3, 0x1b, 0xa6, 0x9f, 0x79, 0x82, 0xa0, 0x1f, 0x7e, 0xaa, 0xa2, - 0x7e, 0x9e, 0x1b, 0xd9, 0x98, 0xd0, 0x65, 0xa, 0x5e, 0x83, 0x7a, 0x80, - 0x75, 0x1b, 0x77, 0x72, 0x98, 0x95, 0x74, 0x1f, 0x9b, 0x66, 0x76, 0x9c, - 0x74, 0x54, 0xa, 0x71, 0xa, 0xf7, 0x6e, 0x77, 0x1, 0xb9, 0xe5, 0xf7, - 0x8a, 0xe5, 0x3, 0x2f, 0x1d, 0xa6, 0x15, 0xf3, 0xc2, 0xd4, 0xca, 0xe7, - 0xbe, 0x34, 0x80, 0xa, 0x46, 0x4f, 0x58, 0xfb, 0xc, 0x76, 0xf7, 0x37, - 0xd5, 0x1e, 0xf7, 0x3b, 0xf7, 0x90, 0x3b, 0x1d, 0x9e, 0x74, 0x86, 0x94, - 0xa, 0x9c, 0x57, 0xa, 0x71, 0xa, 0xf7, 0x6e, 0x77, 0x1, 0xa8, 0xe5, - 0xf7, 0x99, 0xe5, 0x3, 0xa8, 0xf7, 0x7b, 0x15, 0xfb, 0x1b, 0xe5, 0x21, - 0x65, 0x1d, 0xf7, 0x1c, 0xee, 0xf7, 0x25, 0x2d, 0xe5, 0xfb, 0x17, 0xfb, - 0x1a, 0x39, 0x21, 0xfb, 0xf, 0x1e, 0xe5, 0xad, 0x15, 0xf3, 0xc9, 0xca, - 0xca, 0xe7, 0xb7, 0x30, 0x80, 0xa, 0x3b, 0x53, 0x58, 0xfb, 0xc, 0x81, - 0xf7, 0x41, 0xd5, 0x1e, 0xc5, 0xf7, 0x86, 0x24, 0xa, 0x71, 0xa, 0xf7, - 0x6a, 0x77, 0x4c, 0x1d, 0xa9, 0x15, 0xf3, 0xc2, 0xd1, 0xca, 0xe7, 0xbe, - 0x3a, 0x80, 0xa, 0x44, 0x49, 0x58, 0xfb, 0xc, 0x78, 0xf7, 0x3a, 0xd5, - 0x1e, 0x73, 0xf7, 0x8d, 0x25, 0x1d, 0xe, 0x71, 0xa, 0xd3, 0xf5, 0x4c, - 0x1d, 0xbb, 0x15, 0xf3, 0xc2, 0xbf, 0xca, 0xe7, 0xbe, 0xfb, 0x1, 0x80, - 0xa, 0x48, 0x65, 0x58, 0xfb, 0xc, 0x74, 0xf7, 0x4c, 0xd5, 0x1e, 0x69, - 0xf7, 0x94, 0x15, 0xa8, 0x6, 0x91, 0x9c, 0x9b, 0xbb, 0xaf, 0x7e, 0x8, - 0x71, 0xd1, 0xb0, 0x71, 0x52, 0x1d, 0x7a, 0x63, 0x7c, 0x7a, 0x71, 0x92, - 0x8, 0x9b, 0x51, 0x50, 0xad, 0x76, 0x54, 0xa, 0x71, 0xa, 0xca, 0xef, - 0x12, 0xa8, 0xe5, 0x79, 0xef, 0xee, 0xef, 0x77, 0xe5, 0x13, 0xf2, 0x2f, - 0x1d, 0xa4, 0x15, 0xf3, 0xc2, 0xd6, 0xca, 0xe7, 0xbe, 0x3d, 0x80, 0xa, - 0x48, 0x46, 0x58, 0xfb, 0xc, 0x74, 0xf7, 0x35, 0xd5, 0x1e, 0x13, 0xec, - 0x79, 0xf7, 0xd4, 0x15, 0x30, 0xa, 0xf7, 0x5b, 0x16, 0x30, 0xa, 0xe, - 0xf7, 0x63, 0x96, 0x76, 0xe1, 0x77, 0xb9, 0xf7, 0xa, 0x8b, 0xcd, 0x55, - 0xb6, 0xf7, 0x85, 0x77, 0x12, 0xf7, 0x76, 0xf7, 0x5, 0x27, 0xe1, 0x13, - 0xee, 0xa9, 0xf7, 0x7c, 0x15, 0xf8, 0x8c, 0xb6, 0xfc, 0x8c, 0x6, 0xf7, - 0x90, 0xfb, 0xb1, 0x15, 0x13, 0xf5, 0x6c, 0xa, 0xf8, 0x4c, 0x4, 0x6c, - 0xa, 0xe, 0x30, 0x76, 0xf1, 0xa7, 0xf8, 0x32, 0xa7, 0xe6, 0x77, 0x1, - 0xa8, 0xe5, 0xf7, 0x99, 0xe5, 0x3, 0xf7, 0x47, 0xc7, 0x15, 0xf7, 0x35, - 0xf7, 0xc6, 0x5, 0xa5, 0x60, 0x99, 0x4f, 0x4b, 0x1a, 0xfb, 0x23, 0x48, - 0x65, 0x58, 0x67, 0x70, 0x9b, 0xa5, 0x77, 0x1e, 0xfb, 0x13, 0xfb, 0x40, - 0x15, 0xb0, 0x6, 0xcc, 0xf7, 0xf, 0x5, 0x7d, 0xa8, 0xaa, 0x84, 0xad, - 0x1b, 0xf7, 0x2c, 0xd1, 0xf7, 0x1f, 0xee, 0xe7, 0x66, 0xcf, 0x4e, 0xb1, - 0x1f, 0xcc, 0xf7, 0x11, 0x5, 0x64, 0x6, 0x52, 0xfb, 0x1, 0x5, 0x97, - 0x6e, 0x6b, 0x91, 0x68, 0x1b, 0xfb, 0x1a, 0x39, 0xfb, 0x1, 0xfb, 0xf, - 0x36, 0xaf, 0x42, 0xc7, 0x61, 0x1f, 0xac, 0xcb, 0x15, 0x6c, 0xc6, 0x83, - 0xdd, 0xb6, 0x1a, 0xf3, 0xc2, 0xbf, 0xca, 0xab, 0xa5, 0x7e, 0x74, 0xa1, - 0x1e, 0xe, 0x76, 0x1d, 0xf7, 0xe6, 0xe1, 0x15, 0x2e, 0x7, 0x8d, 0x88, - 0x87, 0xa, 0x19, 0x22, 0xa, 0x57, 0xf8, 0x39, 0x27, 0x1d, 0x76, 0x1d, - 0xf7, 0x45, 0xf8, 0x8f, 0x21, 0x1d, 0x9b, 0xfd, 0x2d, 0x25, 0xa, 0xe, - 0x81, 0xc7, 0xf8, 0x24, 0x77, 0xf7, 0x88, 0x90, 0xa, 0xea, 0xf8, 0x8f, - 0x25, 0x1d, 0xf7, 0xd, 0xfd, 0x40, 0x25, 0xa, 0xe, 0x81, 0xc7, 0xf8, - 0x13, 0xf7, 0x52, 0x27, 0xef, 0x12, 0xd2, 0xdf, 0x55, 0xef, 0xed, 0xef, - 0x49, 0xdf, 0x13, 0xd2, 0xf7, 0xe8, 0x81, 0x25, 0xa, 0x13, 0xac, 0xfb, - 0x81, 0xf8, 0xd8, 0x15, 0x30, 0xa, 0xf7, 0x5a, 0x16, 0x30, 0xa, 0xe, - 0x96, 0xa, 0xf8, 0xc2, 0x9a, 0xf7, 0x71, 0x77, 0x12, 0xf7, 0xe8, 0xf7, - 0x1b, 0x13, 0x90, 0x40, 0x1d, 0x13, 0x78, 0x41, 0xa, 0xfb, 0x28, 0xf7, - 0x46, 0x24, 0xa, 0x8e, 0x1d, 0xf7, 0x73, 0x77, 0x1, 0xd6, 0xdf, 0xf7, - 0x75, 0xe1, 0x3, 0x90, 0xfb, 0x5b, 0x15, 0x79, 0xf7, 0x86, 0x9d, 0x7, - 0x43, 0x7b, 0xa0, 0xcb, 0x1f, 0xf7, 0x27, 0x7, 0x5f, 0x1d, 0x75, 0x1f, - 0x89, 0x8d, 0x5, 0x8c, 0xf7, 0xbb, 0x6, 0x86, 0x8e, 0x6b, 0x1d, 0x76, - 0x6d, 0x1f, 0xfd, 0x4a, 0x7, 0x60, 0x87, 0x6c, 0x49, 0x87, 0x1e, 0xf7, - 0x2e, 0xf7, 0xb3, 0x15, 0x5a, 0xa, 0x96, 0xa, 0xf8, 0xbb, 0xf7, 0x50, - 0x27, 0xef, 0x12, 0xf1, 0xed, 0xf0, 0xed, 0x13, 0xac, 0x40, 0x1d, 0x13, - 0x6c, 0x41, 0xa, 0xfb, 0x9b, 0xf7, 0x88, 0x15, 0x13, 0x9c, 0x4b, 0xa, - 0x8f, 0xa, 0xf8, 0x60, 0x27, 0xa, 0xe, 0xf7, 0x92, 0x8b, 0x9e, 0xf9, - 0x4, 0x9e, 0x1, 0xee, 0x5d, 0x1d, 0x9b, 0xd4, 0x1f, 0xf7, 0x40, 0x7, - 0xf7, 0x2f, 0xe9, 0x5, 0xbc, 0x7, 0xfb, 0x2f, 0x2c, 0x5, 0xf7, 0x50, - 0x7, 0xe1, 0x73, 0x1d, 0xfb, 0x88, 0x7, 0x34, 0x55, 0x5, 0x5a, 0x7, - 0xe2, 0xc0, 0x5, 0xfb, 0xb, 0x7, 0x33, 0x7a, 0xa, 0xe, 0x8f, 0xa, - 0xf9, 0x3, 0x9b, 0xb7, 0x77, 0x1, 0xe1, 0xdf, 0x3, 0x9e, 0x16, 0xf7, - 0x84, 0x9a, 0x6, 0x51, 0x8e, 0x78, 0x9d, 0xc5, 0x1a, 0xf7, 0xcd, 0x7, - 0xd8, 0xbf, 0x5, 0xb7, 0x7, 0x3e, 0x56, 0x5, 0xf7, 0x7b, 0x5d, 0xa, - 0xfb, 0x40, 0x7, 0x3c, 0x56, 0x5, 0x5f, 0x7, 0xda, 0xbf, 0x5, 0xfb, - 0x91, 0x7, 0x57, 0x77, 0x74, 0x50, 0x84, 0x1d, 0xf8, 0xa8, 0x85, 0xb0, - 0x6c, 0xb2, 0xf7, 0xb6, 0xb0, 0xf7, 0x9e, 0xa9, 0x6d, 0xaf, 0x6b, 0xaf, - 0x12, 0xa9, 0xf7, 0x4, 0xf7, 0xb5, 0xef, 0xf7, 0x7b, 0xa1, 0x13, 0xa7, - 0x0, 0xf8, 0xa7, 0xf7, 0xdd, 0x15, 0xf7, 0x2c, 0x88, 0x8a, 0x81, 0xa4, - 0x1f, 0xab, 0x81, 0x9f, 0x6d, 0x90, 0x5a, 0x8, 0x13, 0xa7, 0x80, 0xa1, - 0xf7, 0x7e, 0x75, 0x6, 0x2a, 0x7d, 0x85, 0x8b, 0xfb, 0x67, 0x1b, 0xf7, - 0x80, 0x7, 0x9e, 0x8f, 0x90, 0xf7, 0x4, 0xf7, 0x4, 0xb8, 0x84, 0x29, - 0x96, 0x1e, 0xa2, 0xf7, 0x21, 0xfb, 0xda, 0x6, 0x64, 0x66, 0x8d, 0x8c, - 0x6e, 0x1f, 0x13, 0xab, 0x0, 0x8d, 0x6e, 0x77, 0x8c, 0x84, 0x1b, 0xfb, - 0x4a, 0xfb, 0x1f, 0x24, 0xfb, 0x8f, 0xfb, 0x64, 0xf7, 0x18, 0xfb, 0x4, - 0xf7, 0x29, 0xa9, 0xa8, 0x8d, 0x8c, 0xa9, 0x1f, 0x13, 0x67, 0x0, 0x8d, - 0xa9, 0xaa, 0x8c, 0xa9, 0x1b, 0xf7, 0xf2, 0x6, 0xb7, 0xf7, 0x3c, 0x5, - 0x73, 0x6, 0x52, 0xfb, 0x2, 0x5e, 0x7b, 0x5b, 0x89, 0xfb, 0x10, 0x89, - 0x18, 0x67, 0x77, 0x8d, 0xb7, 0x1f, 0x27, 0xba, 0x15, 0x13, 0xb3, 0x0, - 0x56, 0x7d, 0x5c, 0x37, 0xfb, 0x23, 0x5b, 0xf7, 0x16, 0xf7, 0x3d, 0xf7, - 0x34, 0xbf, 0xf7, 0x22, 0xf7, 0x1e, 0xe3, 0x96, 0x54, 0x59, 0x1e, 0xe, - 0xf8, 0x1, 0x81, 0xa5, 0x71, 0xce, 0xf7, 0x66, 0xa9, 0xf7, 0x1a, 0xa8, - 0x12, 0xa9, 0xe5, 0xf7, 0x73, 0xd8, 0xf7, 0x33, 0xea, 0x13, 0x7e, 0xf8, - 0x13, 0xe0, 0x15, 0x4c, 0xa4, 0xb3, 0x6b, 0xcc, 0x1b, 0xec, 0xbc, 0xdd, - 0xce, 0xaa, 0x1f, 0x80, 0x91, 0x5, 0x6e, 0x76, 0x60, 0x50, 0x4b, 0x1b, - 0xfb, 0xf, 0x85, 0xf7, 0x32, 0xbf, 0x89, 0x1f, 0xf7, 0x92, 0x6, 0xf7, - 0x36, 0xfb, 0xa, 0xaa, 0x62, 0x40, 0x6a, 0x5e, 0x6c, 0x74, 0x1e, 0xd0, - 0x54, 0x4a, 0x92, 0x6e, 0x1b, 0xfb, 0x43, 0x6d, 0xfb, 0x48, 0x50, 0xfb, - 0x3e, 0xf7, 0x8, 0x4e, 0xe9, 0xa3, 0xd5, 0x8f, 0xe6, 0xb8, 0x1f, 0xfb, - 0x9b, 0xf7, 0x58, 0x15, 0xf7, 0xc, 0xcc, 0xa9, 0xb5, 0xf7, 0x1, 0x92, - 0xfb, 0x3c, 0x52, 0x1e, 0x13, 0xbe, 0xfb, 0x6, 0x71, 0x3f, 0x3d, 0xfb, - 0x7, 0x87, 0xf7, 0x4c, 0xdc, 0x1e, 0xf7, 0xbf, 0x9b, 0x15, 0xa8, 0x8d, - 0xf4, 0xdc, 0xbc, 0xa7, 0x50, 0x5b, 0x1e, 0x70, 0x7, 0xe, 0xf7, 0x5b, - 0x7d, 0xaf, 0x7d, 0x76, 0xf9, 0x1c, 0xb4, 0xf7, 0x66, 0x77, 0x12, 0xd2, - 0xe1, 0xf7, 0x7d, 0xf0, 0x13, 0x7c, 0xd3, 0x7e, 0x15, 0xa1, 0x6, 0x9b, - 0x9f, 0x9c, 0xa0, 0x1e, 0x13, 0xbc, 0xa9, 0xb2, 0x69, 0xd7, 0x1b, 0xf7, - 0x23, 0xcf, 0xeb, 0xe0, 0xf5, 0x32, 0xc4, 0x35, 0xbd, 0x1f, 0x3a, 0xba, - 0x3d, 0xb5, 0xd4, 0x1a, 0xc9, 0xbe, 0xaa, 0xbd, 0xf4, 0xcb, 0x31, 0x39, - 0x9c, 0x1e, 0xa4, 0x6, 0x75, 0x86, 0x1d, 0x72, 0x5f, 0xad, 0x4f, 0x55, - 0xa, 0x74, 0x6, 0x13, 0x7c, 0xf7, 0x61, 0xf8, 0x9c, 0x31, 0xa, 0xab, - 0x81, 0xa1, 0x90, 0x76, 0xf7, 0x30, 0x77, 0xf7, 0xb0, 0xa2, 0x97, 0x77, - 0xf7, 0x87, 0x77, 0x12, 0xf7, 0xac, 0xd1, 0x13, 0x76, 0xbf, 0x87, 0x15, - 0x98, 0x6, 0x94, 0x91, 0x99, 0x8e, 0x97, 0x1b, 0x9b, 0x8c, 0x9e, 0x84, - 0xa0, 0x86, 0x8, 0x13, 0xb6, 0x87, 0x9a, 0x9b, 0x88, 0x9e, 0x1b, 0xcb, - 0xde, 0xb5, 0xe2, 0xc7, 0x66, 0x66, 0xa, 0xb7, 0xb8, 0x76, 0x25, 0xa1, - 0x1e, 0x9a, 0x6, 0x13, 0xae, 0x87, 0xf7, 0x1d, 0x5, 0x80, 0x6, 0x87, - 0x88, 0x7c, 0x84, 0x82, 0x1b, 0x82, 0x80, 0x91, 0x91, 0x7c, 0x1f, 0x13, - 0xb6, 0x8f, 0x7f, 0x7b, 0x7c, 0x1d, 0xe5, 0x58, 0xa1, 0x73, 0x6b, 0x1a, - 0x52, 0x5a, 0x95, 0xa, 0x7b, 0x6, 0x13, 0x76, 0xf7, 0x3, 0xf7, 0xf7, - 0x31, 0xa, 0x80, 0x1d, 0xf9, 0x17, 0x97, 0xa, 0xe8, 0xef, 0x12, 0xf7, - 0x69, 0xed, 0x8f, 0xf1, 0x82, 0xed, 0x13, 0xcc, 0x68, 0xa, 0xa3, 0xdd, - 0x1a, 0xf7, 0x45, 0x7e, 0x1d, 0x13, 0x3c, 0x4b, 0x1d, 0x7, 0x13, 0x4c, - 0x5e, 0x1d, 0x8a, 0xf9, 0x92, 0x15, 0x13, 0x9a, 0x6f, 0x9f, 0x35, 0x1d, - 0x77, 0x62, 0x1d, 0xf7, 0x5b, 0x16, 0x6f, 0x9f, 0x35, 0x1d, 0x77, 0x62, - 0x1d, 0xe, 0x7b, 0xa, 0x8b, 0x77, 0xf8, 0xf2, 0xb1, 0xf7, 0x74, 0x77, - 0x1, 0xaa, 0xa5, 0xf8, 0x99, 0xa2, 0x3f, 0x1d, 0xf7, 0x9d, 0xf9, 0x54, - 0x31, 0xa, 0xe2, 0x8b, 0xa9, 0xf8, 0x1a, 0xa9, 0xf7, 0x74, 0x77, 0x6a, - 0xa, 0x7a, 0x6c, 0x21, 0x1b, 0xfb, 0x13, 0x56, 0x1d, 0xf7, 0x38, 0xf8, - 0x80, 0x31, 0xa, 0xfb, 0x51, 0xa3, 0xf8, 0xb1, 0xaa, 0xf7, 0x84, 0xa8, - 0x1, 0xeb, 0xf8, 0xc, 0x15, 0xf7, 0xd, 0x6, 0x63, 0xfc, 0x3, 0x5, - 0x38, 0x84, 0x79, 0x30, 0x50, 0x1b, 0x80, 0x83, 0x91, 0x92, 0x1f, 0x95, - 0x9a, 0x96, 0x9e, 0x1a, 0xa2, 0x7d, 0x99, 0x75, 0x7e, 0x6a, 0x83, 0x67, - 0x65, 0xa8, 0x6b, 0xbd, 0xeb, 0xba, 0xf1, 0xf7, 0x43, 0xac, 0x1e, 0x9a, - 0xda, 0x93, 0xe4, 0x9c, 0xf7, 0xc, 0x8, 0xf7, 0xc, 0x6, 0x95, 0xaa, - 0x5, 0xfb, 0x12, 0x6, 0xf7, 0x18, 0x97, 0x99, 0xf7, 0x0, 0xcc, 0x1b, - 0x96, 0x96, 0x89, 0x80, 0x1f, 0x82, 0x7e, 0x7f, 0x7b, 0x1a, 0x7f, 0x97, - 0x75, 0xa4, 0xa3, 0xa2, 0x9c, 0xa9, 0xa8, 0x6c, 0xb0, 0x57, 0xfb, 0x26, - 0x6c, 0xfb, 0x6f, 0x59, 0x84, 0x1e, 0xfb, 0x9, 0x6, 0xe, 0x91, 0xa, - 0x96, 0xf8, 0x8f, 0x2b, 0x1d, 0xfb, 0xf, 0xf7, 0x3b, 0x5, 0x49, 0x6, - 0xe, 0x91, 0xa, 0xf7, 0x1b, 0xf8, 0x8f, 0x31, 0xa, 0x73, 0xf8, 0x8f, - 0xc0, 0xf3, 0x77, 0x1, 0xa5, 0xf9, 0x2c, 0x15, 0x6e, 0x9b, 0xfb, 0x14, - 0xf7, 0xe, 0xf7, 0x14, 0x9a, 0xf7, 0x12, 0xaa, 0x1e, 0x6e, 0x6, 0x4e, - 0x82, 0x5c, 0x60, 0x53, 0x1b, 0x4b, 0x66, 0xb6, 0xc8, 0x81, 0x1f, 0xe, - 0x73, 0xf8, 0x9f, 0xef, 0x1, 0xf7, 0xa, 0xed, 0x3, 0xf7, 0xa, 0xf8, - 0xd1, 0x15, 0x36, 0xa, 0xe, 0x73, 0xf8, 0x94, 0xad, 0xf7, 0x17, 0xad, - 0x12, 0xce, 0xf7, 0x5b, 0x69, 0xad, 0x13, 0xe0, 0xce, 0xf8, 0xf7, 0x15, - 0x55, 0xb5, 0x5e, 0xc4, 0x79, 0x1d, 0x53, 0x60, 0x5d, 0x55, 0x1e, 0xad, - 0x8c, 0x15, 0xa3, 0x9f, 0xb4, 0xb8, 0x1e, 0x13, 0xd0, 0xb0, 0xa8, 0x6d, - 0x67, 0x67, 0x6e, 0x6e, 0x65, 0x5e, 0x78, 0xb4, 0xa4, 0x1f, 0xe, 0x73, - 0xfb, 0x24, 0x76, 0xf7, 0x39, 0x77, 0x1, 0xcb, 0xc0, 0x3, 0xf7, 0xc, - 0x16, 0x72, 0x7b, 0x6c, 0x61, 0x64, 0x1a, 0x6d, 0xa0, 0x65, 0xc5, 0xb4, - 0xbd, 0xa9, 0xc2, 0x9a, 0x1e, 0x7b, 0x92, 0x5, 0x6c, 0x81, 0x68, 0x7b, - 0x6e, 0x1b, 0x73, 0x79, 0x99, 0xa8, 0xab, 0xa8, 0xaa, 0x9d, 0x99, 0x1f, - 0xe, 0x73, 0xf8, 0xa8, 0xf5, 0x1, 0x8c, 0xf8, 0xa8, 0x15, 0xa8, 0x6, - 0x91, 0x9c, 0x98, 0xb9, 0xaf, 0x7f, 0x8, 0x6c, 0xe5, 0x9f, 0x77, 0x52, - 0x1d, 0x7a, 0x63, 0x7c, 0x79, 0x71, 0x93, 0x8, 0xa2, 0x43, 0x5e, 0xa6, - 0x76, 0x54, 0xa, 0x73, 0xf8, 0x8f, 0xf7, 0x3f, 0x1, 0x88, 0xf8, 0x8f, - 0x15, 0xb5, 0x6, 0xf7, 0x2c, 0x22, 0x1d, 0x94, 0xfb, 0x28, 0x15, 0xb5, - 0x6, 0xf7, 0x2c, 0x22, 0x1d, 0xe, 0x8a, 0xa, 0xf8, 0x88, 0xb4, 0xfc, - 0x88, 0x6, 0xe, 0xf9, 0x17, 0x8a, 0xa, 0xfa, 0x7c, 0xb4, 0xfe, 0x7c, - 0x6, 0xe, 0x91, 0x1d, 0xf7, 0x7, 0xf7, 0x1f, 0x3, 0xf7, 0x80, 0xf9, - 0x25, 0x15, 0x51, 0xa, 0x6b, 0x99, 0x71, 0x84, 0x87, 0x88, 0x89, 0x86, - 0x1e, 0x89, 0x87, 0x87, 0x8a, 0x87, 0x64, 0xa, 0xe, 0x91, 0x1d, 0xda, - 0xf7, 0x1f, 0x3, 0xf5, 0xf8, 0x45, 0x15, 0x3c, 0xa, 0xad, 0x7c, 0xa5, - 0x92, 0x92, 0x91, 0x8c, 0x8e, 0x1e, 0x54, 0x1d, 0x73, 0xfb, 0xc, 0x76, - 0xf7, 0x2d, 0x76, 0xa7, 0x76, 0xf3, 0x77, 0x12, 0xda, 0xf7, 0x1f, 0x13, - 0xd8, 0xec, 0xfb, 0xe, 0x15, 0x94, 0x78, 0x5, 0x3c, 0xa, 0xad, 0x7e, - 0xa5, 0x92, 0x92, 0x5c, 0xa, 0xe2, 0xf8, 0x45, 0xf7, 0x3, 0xf7, 0x18, - 0x77, 0x1, 0xb6, 0x97, 0x1d, 0x3, 0xf7, 0x38, 0xf9, 0x25, 0x15, 0x48, - 0x1d, 0xf7, 0x7c, 0x16, 0x48, 0x1d, 0xe, 0xe2, 0xf8, 0x5a, 0x76, 0xf7, - 0x18, 0xf7, 0x3, 0x1, 0xa9, 0x97, 0x1d, 0x3, 0xc4, 0xf8, 0x45, 0x48, - 0xa, 0xf7, 0x85, 0x78, 0x48, 0xa, 0xe, 0xe2, 0xfb, 0xc, 0x76, 0xf7, - 0x18, 0xf7, 0x3, 0x38, 0x76, 0x12, 0xb8, 0x97, 0x1d, 0x13, 0xd8, 0xca, - 0xfb, 0xe, 0x15, 0x94, 0x78, 0x5, 0x46, 0x1d, 0x13, 0xb8, 0x33, 0xa, - 0xf7, 0x7c, 0x16, 0x94, 0x78, 0x5, 0xa9, 0x95, 0xdd, 0xcd, 0xd2, 0x1a, - 0x13, 0xd8, 0xde, 0x51, 0x98, 0x74, 0x72, 0x6a, 0x7c, 0x60, 0x63, 0xae, - 0x7e, 0xa5, 0x92, 0x91, 0x5c, 0xa, 0xfb, 0x14, 0x76, 0xf8, 0xbd, 0xe2, - 0xf7, 0x4d, 0x77, 0x1, 0xf7, 0x84, 0xa2, 0x3, 0xf7, 0x85, 0xfb, 0x29, - 0x15, 0xa0, 0x6, 0x8c, 0xf7, 0x23, 0x5, 0xf7, 0xf, 0xa0, 0xec, 0x9e, - 0xb2, 0x1e, 0x61, 0xb6, 0x8b, 0xeb, 0xb9, 0x1a, 0xb2, 0x88, 0xa2, 0x84, - 0x9c, 0x84, 0x8, 0x82, 0xa0, 0x98, 0x83, 0xa4, 0x1b, 0x9d, 0xa4, 0x94, - 0xae, 0xaa, 0x74, 0x97, 0x79, 0x72, 0x7d, 0x81, 0x82, 0x76, 0x1f, 0x79, - 0x83, 0x75, 0x84, 0x63, 0x8a, 0x8, 0xc2, 0x92, 0xaa, 0x93, 0xa1, 0x1e, - 0x95, 0xa5, 0x96, 0x98, 0xa5, 0x1a, 0xa4, 0x75, 0xa1, 0x73, 0x71, 0x76, - 0x75, 0x72, 0x71, 0x96, 0x7e, 0x95, 0x71, 0x1e, 0x93, 0x75, 0x92, 0x6c, - 0x54, 0x1a, 0x5f, 0x8c, 0x73, 0x94, 0x78, 0x94, 0x8, 0x93, 0x79, 0x7e, - 0x93, 0x75, 0x1b, 0x79, 0x74, 0x7f, 0x6c, 0x68, 0xa2, 0x82, 0x9d, 0xa1, - 0x98, 0x91, 0x92, 0x9c, 0x1f, 0x9e, 0x93, 0xa2, 0x95, 0xb9, 0x8e, 0x8, - 0x5d, 0x8b, 0x2b, 0x61, 0x60, 0x1e, 0x9c, 0x64, 0xa2, 0x2a, 0x8d, 0xfb, - 0xf, 0x8, 0xe, 0xfb, 0x57, 0x76, 0xf7, 0x38, 0xe1, 0x7e, 0x76, 0xf8, - 0x50, 0xe1, 0xf7, 0x38, 0x77, 0x12, 0xcf, 0xf7, 0x54, 0x4f, 0xef, 0x4f, - 0x9f, 0x77, 0xf7, 0x54, 0x13, 0xd9, 0x0, 0xf7, 0x84, 0x16, 0x13, 0xda, - 0x0, 0x76, 0xa, 0x13, 0xd9, 0x0, 0xb7, 0xac, 0xad, 0xbc, 0x1b, 0x8c, - 0x5d, 0x62, 0x52, 0x63, 0x1a, 0x13, 0xdc, 0x0, 0x6d, 0xa0, 0x72, 0xa8, - 0xa8, 0xa0, 0xa4, 0xa9, 0x1e, 0x13, 0xb9, 0x0, 0xb3, 0x62, 0xc4, 0x8c, - 0xb9, 0x1e, 0x78, 0x1d, 0x5f, 0x6a, 0x69, 0x5a, 0x1b, 0x13, 0xdc, 0x0, - 0x8f, 0xb3, 0x98, 0xa1, 0xa9, 0xa0, 0x8, 0x67, 0xb6, 0x80, 0xc6, 0xc1, - 0x1a, 0xc1, 0x96, 0xc6, 0xaf, 0xb6, 0x1e, 0x13, 0xd9, 0x0, 0x6d, 0xa0, - 0x7e, 0xa1, 0x87, 0xb3, 0x8, 0x13, 0xda, 0x0, 0x78, 0x1d, 0x13, 0xdc, - 0x0, 0x5f, 0x6a, 0x69, 0x5a, 0x1b, 0x8a, 0xb9, 0xb4, 0xc4, 0xb3, 0x1a, - 0x13, 0xd8, 0x80, 0xa9, 0x76, 0xa4, 0x6e, 0x6e, 0x76, 0x72, 0x6d, 0x1e, - 0x13, 0xbc, 0x0, 0x63, 0xb4, 0x52, 0x8a, 0x5d, 0x1e, 0x76, 0xa, 0xb7, - 0xac, 0xad, 0xbc, 0x1b, 0x87, 0x63, 0x7e, 0x75, 0x6d, 0x76, 0x8, 0x13, - 0xd8, 0x80, 0xaf, 0x60, 0x96, 0x50, 0x55, 0x1a, 0x55, 0x80, 0x50, 0x67, - 0x60, 0x1e, 0x13, 0xd9, 0x0, 0xa9, 0x76, 0x98, 0x75, 0x8f, 0x63, 0x8, - 0xe, 0x84, 0xf7, 0x6d, 0x76, 0xf7, 0xa2, 0x77, 0x1, 0xb3, 0xf7, 0xdf, - 0x15, 0x40, 0xc7, 0x4f, 0xd6, 0xd6, 0xc7, 0xc8, 0xd5, 0xd6, 0x4f, 0xc7, - 0x40, 0x3f, 0x50, 0x4f, 0x40, 0x1e, 0xe, 0xf9, 0x17, 0x80, 0xf7, 0x3, - 0x1, 0xf7, 0x3, 0xf7, 0x4, 0xf7, 0x70, 0xf7, 0x5, 0xf7, 0x70, 0xf7, - 0x4, 0x14, 0x70, 0xf7, 0x3, 0xb6, 0x15, 0x65, 0xad, 0x81, 0xa, 0x72, - 0x99, 0xa, 0xf7, 0xe0, 0x16, 0x65, 0xae, 0x81, 0xa, 0x71, 0x99, 0xa, - 0xf7, 0xe1, 0x16, 0x65, 0xae, 0x4d, 0x1d, 0x71, 0x99, 0xa, 0xe, 0xf9, - 0x17, 0x7f, 0xa8, 0x6f, 0x76, 0xf7, 0xcd, 0xa7, 0x90, 0xa8, 0xf7, 0x9b, - 0xa8, 0x9c, 0x77, 0x12, 0xb2, 0xd4, 0xf7, 0x1f, 0xd4, 0xb7, 0xd4, 0xf7, - 0x1f, 0xd4, 0xa9, 0xd3, 0xf7, 0x20, 0xd4, 0x13, 0x77, 0xf0, 0xf7, 0xe, - 0x82, 0x15, 0xaa, 0x74, 0xf8, 0x27, 0xf9, 0x29, 0x6b, 0xa2, 0x5, 0x13, - 0xbb, 0xf0, 0xfc, 0x79, 0xfb, 0x57, 0x15, 0x3e, 0x8d, 0x1d, 0xed, 0x28, - 0x1e, 0x8a, 0x6, 0x28, 0x60, 0x29, 0x3b, 0x1f, 0xd4, 0x8c, 0x15, 0xbe, - 0x95, 0xec, 0xc7, 0x1e, 0x8c, 0x6, 0xc8, 0x92, 0x28, 0x59, 0x5d, 0x84, - 0x25, 0x4e, 0x50, 0x7f, 0xf0, 0xbb, 0x1f, 0xf7, 0x94, 0xfb, 0xb9, 0x15, - 0x3d, 0xb6, 0x28, 0xef, 0xee, 0xb6, 0xee, 0xd9, 0xda, 0x60, 0xee, 0x29, - 0x1e, 0x8a, 0x6, 0x27, 0x60, 0x28, 0x3c, 0x1f, 0xf7, 0xcf, 0x16, 0x3d, - 0x8d, 0x1d, 0xee, 0x28, 0x1e, 0x8a, 0x6, 0x28, 0x60, 0x28, 0x3c, 0x1f, - 0xfb, 0x86, 0x8c, 0x15, 0xbd, 0x94, 0xed, 0xc8, 0x1e, 0x8c, 0x6, 0xc8, - 0x92, 0x27, 0x5a, 0x5d, 0x83, 0x25, 0x4f, 0x4d, 0x82, 0xf0, 0xbb, 0x1f, - 0xf7, 0xce, 0x16, 0xbd, 0x96, 0xed, 0xc6, 0x1e, 0x8c, 0x6, 0xc9, 0x92, - 0x27, 0x5a, 0x5d, 0x83, 0x25, 0x4e, 0x4e, 0x81, 0xef, 0xbc, 0x1f, 0xe, - 0x73, 0x79, 0xa, 0xca, 0xf7, 0x77, 0x42, 0x1d, 0x97, 0x9b, 0xb1, 0xbc, - 0xab, 0xb6, 0x8, 0xa5, 0xae, 0xa0, 0xaa, 0x91, 0x96, 0x1d, 0x73, 0x79, - 0xa, 0xc6, 0xac, 0x15, 0xf7, 0x67, 0xf7, 0x51, 0x5, 0xaa, 0x5e, 0xfb, - 0x2d, 0xf7, 0x37, 0x51, 0x1d, 0x7e, 0x7a, 0x61, 0x55, 0x6a, 0x5e, 0x8, - 0x74, 0x6b, 0x79, 0x71, 0x8f, 0x1d, 0xfb, 0x52, 0x92, 0x7a, 0x1d, 0xfb, - 0x3c, 0xf8, 0x87, 0x3, 0xfb, 0xb, 0x7d, 0x15, 0xf8, 0x56, 0xf9, 0x46, - 0x5, 0x5d, 0x6, 0xfc, 0x59, 0xfd, 0x46, 0x5, 0xe, 0xf8, 0x1, 0x8b, - 0xc3, 0xf7, 0x57, 0xb3, 0xe4, 0xb3, 0xf7, 0x6c, 0xb1, 0x1, 0xf7, 0x26, - 0xf7, 0x4, 0x2f, 0xf7, 0x4, 0xf8, 0x14, 0xa5, 0x3, 0xf7, 0x3a, 0xf7, - 0x8f, 0x15, 0xfb, 0x2a, 0x9a, 0xf7, 0x1e, 0x26, 0xf7, 0x15, 0x1b, 0xf7, - 0xb, 0xdc, 0xc9, 0xd9, 0xc5, 0x1f, 0x77, 0x95, 0x5, 0x5f, 0x56, 0x59, - 0x59, 0x51, 0x1b, 0xfb, 0x6, 0xfb, 0x18, 0xc8, 0xf7, 0x1a, 0x8a, 0x1f, - 0xf7, 0xc3, 0x6, 0x99, 0xb3, 0x5, 0xfb, 0xd2, 0x6, 0x89, 0xab, 0x89, - 0xa5, 0x8f, 0xaa, 0x8, 0xf7, 0xe4, 0x6, 0x9a, 0xb3, 0x5, 0xfb, 0xee, - 0x6, 0xf7, 0x16, 0xf1, 0xe0, 0xf5, 0x8c, 0x1e, 0xf7, 0x11, 0xba, 0x51, - 0x2c, 0x1f, 0xa5, 0xf7, 0x26, 0x6, 0xa4, 0x49, 0x64, 0x9f, 0x23, 0x1b, - 0xfb, 0x18, 0xfb, 0x7, 0x68, 0xfb, 0x6f, 0x4d, 0x1f, 0xfb, 0xc, 0x6, - 0x7c, 0x63, 0x5, 0xf7, 0x16, 0x6, 0x88, 0x6d, 0x8a, 0x6e, 0x8d, 0x6d, - 0x8, 0xfb, 0x5, 0x6, 0x7c, 0x63, 0x5, 0xe, 0xf9, 0x3, 0xf7, 0x96, - 0x9f, 0x8a, 0x76, 0xf8, 0x16, 0x9f, 0x12, 0xf7, 0x3b, 0xd2, 0xf7, 0x8e, - 0xa5, 0xf7, 0xd0, 0xd2, 0x13, 0xbc, 0xf7, 0x9, 0xf7, 0x96, 0x15, 0xf7, - 0x3f, 0x9f, 0x6, 0x57, 0x91, 0x8d, 0x95, 0xbb, 0x1a, 0xf7, 0xc0, 0xbd, - 0x7, 0xb4, 0x9c, 0x6c, 0x66, 0x94, 0x1f, 0x9f, 0xe3, 0xfb, 0xed, 0x33, - 0x9f, 0x6, 0xb0, 0x94, 0x9c, 0xaa, 0xb5, 0x1b, 0xbc, 0xfb, 0xc0, 0x6, - 0x5b, 0x8d, 0x81, 0x57, 0x85, 0x1e, 0xf7, 0xd3, 0x77, 0x15, 0xf7, 0x17, - 0x9f, 0x6, 0x5e, 0x8f, 0x83, 0xa6, 0xb7, 0x1a, 0xf7, 0x65, 0x8d, 0x7, - 0x13, 0x7c, 0xf7, 0x29, 0xfb, 0xc6, 0x5, 0x96, 0x6, 0xf7, 0x2c, 0xf7, - 0xc8, 0x5, 0x8d, 0xfb, 0x72, 0x6, 0x13, 0xbc, 0x5b, 0x8e, 0x81, 0x57, - 0x85, 0x1e, 0x77, 0xf7, 0x3e, 0x9f, 0x7, 0x57, 0x91, 0x8d, 0x95, 0xbb, - 0x1a, 0xf7, 0x89, 0x7, 0xae, 0x97, 0x9d, 0xb7, 0x8d, 0x1e, 0x9f, 0x24, - 0x7, 0xfb, 0x34, 0xfb, 0xc9, 0xfb, 0x2e, 0xf7, 0xc9, 0x5, 0xfb, 0xd, - 0x77, 0x6, 0xa8, 0xa7, 0x77, 0x6d, 0x97, 0x1f, 0xfb, 0x83, 0x7, 0x5f, - 0x83, 0x70, 0x5f, 0x84, 0x1d, 0xf7, 0x63, 0xf7, 0x70, 0xcd, 0x12, 0x13, - 0x80, 0xa9, 0xf7, 0x70, 0x15, 0xf8, 0x8c, 0xba, 0xfc, 0x8c, 0x6, 0xe, - 0x99, 0x1d, 0xf8, 0x36, 0xab, 0xf7, 0x64, 0xa4, 0x1, 0xee, 0xdf, 0xf7, - 0x4f, 0xdf, 0x3, 0xaa, 0x16, 0xf7, 0x71, 0x9a, 0x6, 0x48, 0x8e, 0x89, - 0xb3, 0xb3, 0x1a, 0xf7, 0xd4, 0x7, 0xa0, 0xf7, 0x9, 0x89, 0x8a, 0x98, - 0x1f, 0xac, 0x86, 0x8e, 0x80, 0x65, 0x1a, 0xfb, 0x92, 0x7, 0x4f, 0x89, - 0x6f, 0x48, 0x87, 0x1e, 0x7c, 0xf7, 0x70, 0x9a, 0x7, 0x58, 0x8f, 0x7b, - 0x9f, 0xcf, 0x1a, 0xf7, 0x90, 0x7, 0xa4, 0x8c, 0xb4, 0x8c, 0xab, 0x1e, - 0x87, 0x8e, 0x5, 0x85, 0x6a, 0x60, 0x87, 0x66, 0x1b, 0xfb, 0x31, 0x6, - 0x8a, 0xce, 0x8b, 0xba, 0x97, 0xa9, 0x8, 0xa8, 0x97, 0xad, 0xae, 0xba, - 0x1b, 0xac, 0x9d, 0x7a, 0x78, 0x99, 0x1f, 0x74, 0x9c, 0x97, 0x72, 0xa8, - 0x1b, 0x9e, 0x9b, 0x9c, 0x9f, 0xbf, 0x4e, 0x9f, 0x4a, 0xfb, 0x20, 0x42, - 0x36, 0xfb, 0x28, 0x86, 0x1f, 0x46, 0x6b, 0xcf, 0xfb, 0xd5, 0x6, 0x51, - 0x78, 0x74, 0x5a, 0x8a, 0x1e, 0xe, 0x99, 0x1d, 0xf8, 0x36, 0xab, 0xf7, - 0x62, 0xa6, 0x1, 0xf0, 0xdf, 0xf7, 0x50, 0xdf, 0x3, 0xab, 0x16, 0xf7, - 0x74, 0x9a, 0x6, 0x61, 0x8f, 0x6e, 0x9a, 0xc2, 0x1a, 0xf7, 0xdd, 0xf7, - 0x50, 0xfb, 0xd8, 0x7, 0x4d, 0x6a, 0x7d, 0x69, 0x88, 0x1e, 0x7c, 0xf7, - 0x6b, 0x9a, 0x7, 0x51, 0x8e, 0x85, 0xa6, 0xb9, 0x1a, 0xf8, 0xe2, 0x7, - 0x86, 0x8d, 0x5, 0x8a, 0x7f, 0x5d, 0x73, 0x7d, 0x1b, 0x7c, 0x7e, 0x94, - 0x92, 0x76, 0x1f, 0x90, 0x7c, 0x78, 0x8f, 0x71, 0x1b, 0x61, 0xfb, 0x11, - 0x78, 0xfb, 0x6a, 0x8a, 0x1f, 0x44, 0x6b, 0xd0, 0xfb, 0xdd, 0x6, 0x69, - 0x78, 0x67, 0x59, 0x87, 0x1e, 0xf7, 0x2d, 0xf8, 0x47, 0x15, 0xe5, 0x89, - 0x89, 0xf7, 0x8, 0xd1, 0x1b, 0xa9, 0x96, 0x78, 0x79, 0x97, 0x1f, 0x79, - 0x97, 0x97, 0x7a, 0xa9, 0x1b, 0x94, 0x8e, 0x8f, 0x8e, 0x8e, 0x1f, 0xfb, - 0x21, 0x7, 0xe, 0x7d, 0x99, 0xf8, 0x56, 0x95, 0xf7, 0x5e, 0x99, 0x6, - 0xfb, 0x6e, 0x8c, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xa7, - 0xa, 0xdf, 0xb, 0xa7, 0x93, 0x8d, 0x8e, 0xc, 0xc, 0xdf, 0x91, 0x97, - 0xc, 0xd, 0xf8, 0x88, 0x14, 0xf7, 0xf9, 0x15, 0xb6, 0x13, 0x0, 0x7b, - 0x2, 0x0, 0x1, 0x0, 0x36, 0x0, 0x3f, 0x0, 0x4f, 0x0, 0x69, 0x0, - 0x6c, 0x0, 0x75, 0x0, 0x8f, 0x0, 0x96, 0x0, 0x9b, 0x0, 0xa6, 0x0, - 0xb1, 0x0, 0xcc, 0x0, 0xd3, 0x0, 0xdc, 0x0, 0xee, 0x0, 0xff, 0x1, - 0x7, 0x1, 0x1b, 0x1, 0x30, 0x1, 0x37, 0x1, 0x43, 0x1, 0x65, 0x1, - 0x6e, 0x1, 0x79, 0x1, 0x7e, 0x1, 0x89, 0x1, 0xbd, 0x1, 0xda, 0x1, - 0xe0, 0x1, 0xe7, 0x2, 0x1c, 0x2, 0x29, 0x2, 0x34, 0x2, 0x3c, 0x2, - 0x52, 0x2, 0x5f, 0x2, 0x78, 0x2, 0x91, 0x2, 0xbb, 0x2, 0xcc, 0x2, - 0xd2, 0x2, 0xe0, 0x2, 0xf6, 0x2, 0xfe, 0x3, 0xc, 0x3, 0x14, 0x3, - 0x1e, 0x3, 0x28, 0x3, 0x34, 0x3, 0x47, 0x3, 0x52, 0x3, 0x74, 0x3, - 0x7b, 0x3, 0x9b, 0x3, 0xba, 0x3, 0xbe, 0x3, 0xcc, 0x3, 0xd7, 0x3, - 0xf1, 0x3, 0xf9, 0x3, 0xff, 0x4, 0x14, 0x4, 0x1b, 0x4, 0x28, 0x4, - 0x2f, 0x4, 0x36, 0x4, 0x3e, 0x4, 0x53, 0x4, 0x5f, 0x4, 0x65, 0x4, - 0x78, 0x4, 0x85, 0x4, 0x90, 0x4, 0xa2, 0x4, 0xb4, 0x4, 0xbd, 0x4, - 0xcf, 0x4, 0xe1, 0x4, 0xe9, 0x4, 0xef, 0x4, 0xf5, 0x4, 0xfb, 0x5, - 0x4, 0x5, 0x15, 0x5, 0x1c, 0x5, 0x26, 0x5, 0x35, 0x5, 0x44, 0x5, - 0x4d, 0x5, 0x54, 0x5, 0x5a, 0x5, 0x5f, 0x5, 0x68, 0x5, 0x6b, 0x5, - 0x78, 0x5, 0x80, 0x5, 0x85, 0x5, 0x91, 0x5, 0x97, 0x5, 0x9b, 0x5, - 0xa6, 0x5, 0xaa, 0x5, 0xb3, 0x5, 0xba, 0x5, 0xbf, 0x5, 0xc4, 0x5, - 0xce, 0x5, 0xd8, 0x5, 0xdf, 0x5, 0xe9, 0x5, 0xf3, 0x5, 0xf7, 0x6, - 0x0, 0x6, 0x9, 0x6, 0x12, 0x6, 0x1b, 0x6, 0x23, 0x6, 0x2c, 0x6, - 0x32, 0x6, 0x38, 0x6, 0x3d, 0x6, 0x41, 0x6, 0x45, 0x9a, 0x16, 0xf7, - 0x5a, 0x9e, 0x6, 0x76, 0x5c, 0x95, 0xb5, 0x96, 0x8e, 0x99, 0x90, 0x98, - 0x1f, 0xb9, 0xf6, 0x5, 0xf7, 0x9a, 0x6, 0xb4, 0x35, 0x5, 0x91, 0x7d, - 0x98, 0x6a, 0x7b, 0x1a, 0x66, 0x6a, 0x80, 0x66, 0x1e, 0x78, 0xf7, 0x93, - 0x9e, 0x7, 0x5f, 0x8e, 0x7d, 0xa0, 0x6b, 0xd4, 0xfb, 0x8d, 0xf8, 0xc2, - 0x18, 0xb, 0x20, 0xa, 0x77, 0x6, 0xfb, 0x64, 0xfc, 0x7f, 0xb, 0x32, - 0xa, 0xfb, 0x6b, 0x52, 0xa, 0x73, 0x2c, 0x1d, 0xbc, 0xc7, 0xb9, 0xbd, - 0xb2, 0x1e, 0xb, 0x3, 0x31, 0x1d, 0xfb, 0x2f, 0x54, 0x5, 0x7c, 0x7, - 0x8d, 0x98, 0x98, 0x53, 0x1d, 0x50, 0x1f, 0xfb, 0x72, 0x7, 0x3d, 0x7a, - 0x7b, 0x4d, 0x88, 0x1e, 0xb, 0x21, 0x1d, 0xe, 0x15, 0x87, 0xa, 0x8, - 0x22, 0xa, 0x2e, 0x7, 0xb, 0x6f, 0xa, 0x44, 0x80, 0x77, 0x73, 0x32, - 0x1b, 0xfb, 0x24, 0xf7, 0x46, 0x6, 0xc2, 0x97, 0xa2, 0x33, 0x1d, 0x78, - 0x6, 0x60, 0xa, 0xfc, 0x3c, 0x7, 0xb, 0x77, 0x1, 0xea, 0xdf, 0x23, - 0xa, 0xb, 0x26, 0x1d, 0x3d, 0x1d, 0xb, 0x28, 0x1d, 0x13, 0xd6, 0x3e, - 0x1d, 0x13, 0xba, 0x3c, 0x1d, 0xe, 0x8c, 0xfb, 0x57, 0x15, 0x43, 0x90, - 0xb5, 0x80, 0x2f, 0xa, 0xb, 0xf7, 0x3, 0xf7, 0x24, 0xc5, 0xf7, 0x1c, - 0xaa, 0x95, 0x1f, 0x7b, 0x92, 0x5, 0x66, 0x74, 0x60, 0x47, 0x32, 0x1b, - 0x49, 0x3a, 0xaa, 0xf7, 0x45, 0x7f, 0x1f, 0xb, 0x15, 0xf8, 0xb0, 0x6, - 0x23, 0x1d, 0xe, 0x3a, 0x1d, 0x72, 0x88, 0x8b, 0x7b, 0x1b, 0x6c, 0xb, - 0x7b, 0x8a, 0x8, 0xf7, 0x5d, 0xf7, 0x82, 0x15, 0xf7, 0x7, 0xf7, 0xa7, - 0xf7, 0x8, 0xfb, 0xa7, 0x5, 0xb, 0x9d, 0x1b, 0x9b, 0xaa, 0x8c, 0xbc, - 0xb5, 0x1f, 0xa5, 0x7, 0x82, 0x80, 0x7e, 0x81, 0x76, 0x1b, 0xb, 0x6f, - 0xa1, 0x35, 0x1d, 0x75, 0x62, 0x1d, 0xb, 0x15, 0xc9, 0x6, 0xf7, 0x11, - 0xf7, 0x3b, 0x5, 0x69, 0x6, 0xfb, 0xe, 0x24, 0xfb, 0xd, 0xf2, 0x5, - 0x69, 0x6, 0xe, 0x99, 0x7, 0x4f, 0x89, 0x89, 0xa2, 0xaf, 0x1a, 0xf7, - 0xeb, 0xfb, 0x32, 0x7a, 0x7, 0xd1, 0x89, 0x8f, 0x6c, 0x63, 0x1a, 0xb, - 0x8c, 0x8f, 0x8e, 0x8c, 0x38, 0x1d, 0xb, 0x61, 0xa, 0xfb, 0x0, 0x44, - 0x1d, 0xd4, 0xf1, 0xf1, 0xf7, 0x3, 0xb, 0x15, 0xf7, 0x53, 0xa3, 0x6, - 0x65, 0x8d, 0x78, 0x9a, 0xa8, 0x1a, 0xf7, 0xe1, 0x7, 0x7d, 0x8e, 0xfb, - 0xa, 0x54, 0x5, 0x74, 0x7, 0x98, 0xaf, 0x8b, 0x8b, 0x93, 0x1b, 0x92, - 0x8b, 0x7c, 0x7e, 0x1f, 0xb, 0x6f, 0xa0, 0x75, 0x9a, 0x1d, 0xa1, 0x41, - 0x1d, 0xb, 0x9d, 0xac, 0xa9, 0xba, 0x80, 0x43, 0x1e, 0x4e, 0x4f, 0xa, - 0xb, 0xf9, 0x63, 0x25, 0x1d, 0xb, 0x92, 0x92, 0x86, 0x82, 0x78, 0x7b, - 0x5e, 0x49, 0x61, 0x1f, 0xb, 0xf8, 0x4c, 0xfc, 0xb8, 0x5, 0x9c, 0xf8, - 0x98, 0x6, 0xf7, 0x9, 0xab, 0x99, 0xca, 0x92, 0x1e, 0x9e, 0xfb, 0x7f, - 0x78, 0x7, 0xcf, 0x86, 0xa7, 0x79, 0xfb, 0x7, 0x1a, 0xfb, 0xd8, 0x89, - 0x7, 0xfc, 0x13, 0xf8, 0x75, 0x5, 0xfb, 0x3f, 0x78, 0x6, 0xb3, 0x9b, - 0x86, 0x59, 0xb4, 0x1f, 0xfc, 0x43, 0x78, 0xa, 0xb, 0xfb, 0x7, 0xf7, - 0x87, 0x5, 0x88, 0x92, 0x84, 0x9b, 0x98, 0x1a, 0xa6, 0xae, 0x96, 0xa2, - 0x8c, 0x1e, 0x9a, 0xfb, 0x62, 0x7d, 0x7, 0x98, 0x89, 0xa5, 0x7c, 0x97, - 0x72, 0xb, 0x3f, 0xa, 0x7c, 0x60, 0x63, 0xb, 0xa7, 0xa7, 0x75, 0xa1, - 0x6f, 0x6f, 0xb, 0x15, 0xfb, 0x53, 0xf7, 0x2a, 0xfb, 0x2d, 0xf7, 0x56, - 0xf7, 0x53, 0xf7, 0x29, 0xf7, 0x2d, 0xf7, 0x53, 0xf7, 0x53, 0xfb, 0x29, - 0xf7, 0x2f, 0xfb, 0x53, 0xfb, 0x56, 0xfb, 0x2a, 0xfb, 0x2f, 0xfb, 0x53, - 0x1e, 0xc2, 0x16, 0xf7, 0x35, 0xf7, 0x12, 0xf7, 0x23, 0xf7, 0x37, 0xf7, - 0x34, 0xf7, 0x11, 0xfb, 0x22, 0xfb, 0x36, 0xb, 0xa9, 0x95, 0xdd, 0xcd, - 0xd2, 0x1a, 0xde, 0x51, 0x98, 0x74, 0x72, 0x6a, 0xb, 0x6e, 0x8b, 0xa8, - 0xa8, 0x1f, 0xf7, 0x57, 0x7, 0xc7, 0x8b, 0xb, 0x45, 0xa, 0x9a, 0xb4, - 0x9f, 0x4a, 0xa, 0xb, 0x77, 0x1, 0xf7, 0x7, 0xf1, 0x3, 0x9d, 0x16, - 0xf7, 0xbd, 0x9e, 0x6, 0x59, 0xa, 0x9e, 0xfb, 0xbd, 0x78, 0x7, 0x49, - 0xa, 0xb, 0x6f, 0xa0, 0x76, 0xa7, 0xa7, 0xa1, 0xa0, 0xa7, 0xa7, 0x75, - 0x55, 0x1d, 0xb, 0xa0, 0x6, 0x95, 0xc2, 0xa1, 0xf7, 0x3, 0xa7, 0x1a, - 0xa6, 0x74, 0xa3, 0x78, 0x77, 0x74, 0x73, 0x70, 0x6f, 0xa1, 0xfb, 0x3, - 0x95, 0x54, 0x1e, 0xb, 0x7e, 0x6c, 0x9d, 0x70, 0x1b, 0x5d, 0x89, 0x65, - 0x85, 0x71, 0xa2, 0x6b, 0xbd, 0xd6, 0xb7, 0xcd, 0xf7, 0x1a, 0xbe, 0x1f, - 0xf7, 0x2e, 0xf8, 0x22, 0xb, 0x7, 0xf7, 0xf, 0x44, 0xa6, 0x5d, 0x50, - 0x65, 0x68, 0x5d, 0x5a, 0x1e, 0xda, 0x7, 0x84, 0x8d, 0x5d, 0x7a, 0x5c, - 0x7c, 0x5e, 0x7e, 0x19, 0x7a, 0x7, 0x8d, 0x8f, 0x96, 0x53, 0x1d, 0x4c, - 0x1f, 0xfb, 0x82, 0x7, 0x50, 0x7a, 0x74, 0x5c, 0x88, 0x1e, 0xb, 0xfb, - 0x42, 0x8b, 0xf7, 0x1f, 0xcb, 0x1e, 0xf7, 0xca, 0x7, 0xd2, 0x97, 0xa2, - 0xda, 0x91, 0x1e, 0xb, 0x15, 0x46, 0x1d, 0x33, 0xa, 0xb, 0xde, 0x87, - 0x99, 0x75, 0x41, 0x89, 0x1d, 0x44, 0x7f, 0x70, 0x36, 0x89, 0x1e, 0xb, - 0x97, 0x98, 0x8d, 0x19, 0x9a, 0xfb, 0x1b, 0x7c, 0x7, 0xab, 0x8c, 0x9b, - 0x77, 0x78, 0x1a, 0x82, 0x7e, 0x6b, 0x81, 0x70, 0x1e, 0xb, 0x36, 0xa, - 0xf7, 0x5b, 0x16, 0x36, 0xa, 0xe, 0x83, 0x1d, 0x96, 0xad, 0xb1, 0x1b, - 0x97, 0x98, 0x86, 0x45, 0x1d, 0x76, 0x99, 0xb, 0x2a, 0xa, 0x40, 0xa, - 0xef, 0xfb, 0x29, 0xb, 0x6, 0xf7, 0x3, 0xa5, 0x7b, 0x32, 0x9a, 0x1f, - 0xa4, 0xb, 0x7, 0xfb, 0x37, 0x4b, 0x34, 0x69, 0x27, 0x1a, 0x48, 0xb, - 0x42, 0x1d, 0x96, 0x9a, 0xac, 0xb6, 0xa9, 0xb3, 0x8, 0xa8, 0xb2, 0xb, - 0x82, 0x9e, 0x5, 0x6d, 0x81, 0x39, 0x49, 0x44, 0x1a, 0x38, 0xc5, 0x7e, - 0xa2, 0xa4, 0xac, 0x9a, 0xb6, 0xb3, 0xb, 0x7, 0x6a, 0x84, 0x81, 0x82, - 0x83, 0x1e, 0x75, 0x70, 0x6d, 0xb, 0xf8, 0x31, 0xe5, 0x15, 0xf7, 0x48, - 0x31, 0xd1, 0xe5, 0xc2, 0xc4, 0x54, 0xf7, 0x96, 0x5c, 0x6, 0xfb, 0x5f, - 0xfb, 0x9e, 0x5, 0xb8, 0x93, 0x15, 0xf7, 0x19, 0xf7, 0x44, 0x5, 0x8d, - 0xfb, 0x44, 0x6, 0xb, 0x1b, 0x48, 0x6d, 0x4d, 0x5f, 0x7d, 0xa, 0x1b, - 0x31, 0x30, 0x53, 0xfb, 0x6, 0x28, 0xcb, 0x5f, 0xe7, 0x56, 0x1f, 0xf7, - 0x27, 0x35, 0x9b, 0x69, 0x52, 0x1a, 0x55, 0x63, 0x52, 0x3b, 0xfb, 0x1b, - 0x58, 0xf7, 0x16, 0xba, 0x78, 0x1e, 0xb, 0x6, 0xb0, 0xe0, 0x7a, 0x92, - 0x7c, 0x73, 0x7f, 0x89, 0x73, 0x8a, 0x19, 0xfb, 0xd, 0x6, 0xe1, 0xe0, - 0x5, 0xa8, 0xa7, 0xc2, 0xc1, 0xcd, 0x1a, 0xce, 0x52, 0xb4, 0x48, 0x40, - 0x5a, 0xb, 0x7d, 0x97, 0x7d, 0xa, 0xf7, 0x67, 0xf7, 0x51, 0x5, 0xa9, - 0x5d, 0xfb, 0x2c, 0xf7, 0x38, 0x51, 0x1d, 0xb, 0x41, 0x8d, 0x73, 0x60, - 0x1d, 0xa4, 0x9c, 0xd4, 0x8e, 0x1e, 0xb, 0xf7, 0x8a, 0x7, 0xb1, 0x91, - 0xc3, 0xa7, 0xaf, 0x1b, 0xf7, 0xe, 0x90, 0xfb, 0x36, 0x74, 0xfb, 0x42, - 0x31, 0x78, 0x6a, 0x54, 0x5c, 0xb6, 0xa2, 0x1f, 0xe, 0xf8, 0x1, 0x7d, - 0xaf, 0xf8, 0xfe, 0xaf, 0xb, 0x88, 0x1d, 0x13, 0xb8, 0x54, 0x1d, 0x7, - 0x87, 0x8d, 0x56, 0x7a, 0x56, 0x7d, 0x56, 0x6f, 0x1d, 0x97, 0x94, 0x8c, - 0x98, 0x1b, 0xb2, 0x91, 0x7b, 0x5e, 0x1f, 0xb, 0x72, 0x1d, 0xec, 0xf7, - 0x70, 0x1e, 0xb, 0x97, 0x16, 0xf7, 0x7f, 0x9e, 0x6, 0x42, 0x8e, 0x76, - 0xab, 0xf2, 0x1a, 0xb, 0xca, 0x86, 0xa3, 0x7b, 0x3c, 0x1a, 0xb, 0xfb, - 0x38, 0xfb, 0x38, 0xfb, 0x37, 0xb, 0x97, 0x16, 0xf8, 0xb0, 0x6, 0x39, - 0x1d, 0xb, 0x1b, 0x75, 0x7e, 0x78, 0x7a, 0x5b, 0xc8, 0x88, 0x9a, 0xf7, - 0x29, 0xbe, 0xdd, 0xbc, 0xd7, 0x56, 0xa9, 0x6a, 0x97, 0x1f, 0xb, 0x1b, - 0x84, 0x84, 0x90, 0x94, 0x9e, 0x9b, 0xb8, 0xcd, 0xb5, 0x1f, 0xb, 0xad, - 0x94, 0x1f, 0x6e, 0x6, 0xb, 0xa7, 0x5a, 0xa9, 0x1f, 0xfb, 0x0, 0xcb, - 0x5, 0x66, 0xa1, 0x85, 0xa8, 0x9f, 0x1a, 0xa5, 0xa0, 0xb2, 0xc2, 0xb, - 0x15, 0x54, 0xb7, 0x5f, 0xc2, 0x79, 0x1d, 0x54, 0x5f, 0x5e, 0x54, 0x1e, - 0xb, 0xf7, 0x6a, 0x16, 0xf7, 0xc6, 0x9e, 0x6, 0x31, 0x8c, 0x7e, 0xb, - 0xfb, 0x34, 0xfb, 0x13, 0xfb, 0x22, 0xfb, 0x32, 0xfb, 0x36, 0xfb, 0x13, - 0xf7, 0x22, 0xf7, 0x34, 0x1e, 0xb, 0x1, 0xc0, 0x9d, 0x3, 0xa6, 0x16, - 0xf8, 0xd, 0x6, 0x99, 0xf7, 0x1b, 0x79, 0x8f, 0x5, 0x3d, 0x7b, 0xb, - 0x6f, 0xa0, 0x76, 0x9a, 0x1d, 0xa0, 0x41, 0x1d, 0xb, 0xa3, 0x9e, 0x9e, - 0xa3, 0xa3, 0x78, 0x9e, 0x73, 0x73, 0x78, 0x78, 0x73, 0x73, 0x9e, 0x78, - 0xa3, 0x1f, 0xb, 0x1, 0xef, 0xf1, 0xf7, 0x7b, 0xf7, 0x1, 0x3, 0x9b, - 0x16, 0xf7, 0xac, 0x9e, 0x6, 0x3e, 0x8d, 0x7a, 0xb, 0xf8, 0x1, 0x7d, - 0xb7, 0xf9, 0xc, 0x77, 0xb, 0xa2, 0xf7, 0x7c, 0x74, 0x6, 0xb, 0x15, - 0xfb, 0x69, 0xf7, 0x26, 0xb, 0x81, 0xa7, 0xf8, 0x32, 0xa7, 0xb, 0x77, - 0x1, 0xf7, 0xcf, 0xf1, 0x3, 0x68, 0xa, 0xb, 0x1, 0xdb, 0xdf, 0xf7, - 0x44, 0xdf, 0x3, 0x9b, 0x16, 0xf7, 0x6a, 0x9a, 0x6, 0x57, 0x8e, 0x7d, - 0xb, 0x7b, 0x1d, 0xf8, 0x3e, 0x9a, 0xa, 0xb, 0x5, 0x82, 0x98, 0x83, - 0x9e, 0x96, 0x1a, 0xa7, 0xa4, 0xb, 0x5a, 0x6a, 0xad, 0x5f, 0x1b, 0x70, - 0x78, 0x7a, 0x71, 0x71, 0x9e, 0x7a, 0xa6, 0x1f, 0xb, 0x15, 0xa2, 0x8e, - 0x5, 0xc6, 0x88, 0xb7, 0x6a, 0x58, 0x1a, 0x72, 0x7e, 0x62, 0x4f, 0xb, - 0x7, 0xfb, 0x0, 0x76, 0x72, 0x3f, 0x86, 0x1e, 0xb, 0xc1, 0x76, 0xf8, - 0x13, 0x77, 0x1, 0xb, 0x74, 0x78, 0x4b, 0x87, 0x1e, 0xb, 0xf7, 0x92, - 0x8b, 0xb1, 0xb, 0x6e, 0xa, 0xf7, 0x8c, 0x77, 0x1, 0xf3, 0xf1, 0xb, - 0x83, 0x1f, 0xe, 0x7, 0xb0, 0xb1, 0xaa, 0x9f, 0xa9, 0x1b, 0xc6, 0x9d, - 0x67, 0x4e, 0x1f, 0xb, 0xee, 0xf1, 0xf7, 0x9c, 0xa2, 0xac, 0xa4, 0xb, - 0xfb, 0x10, 0xfb, 0x23, 0xb, 0x7b, 0xa0, 0xa0, 0xaf, 0x9c, 0xb0, 0xaa, - 0x70, 0xa5, 0x6d, 0x6d, 0xb, 0x8b, 0x91, 0x1b, 0xb7, 0x8b, 0xb, 0xa0, - 0x8a, 0x1d, 0xb, 0x12, 0xb0, 0xe3, 0x46, 0xe3, 0xf7, 0x23, 0xdc, 0x13, - 0xda, 0xb, 0x74, 0xa, 0xad, 0xb, 0x65, 0x1a, 0x4f, 0x3e, 0x97, 0x60, - 0x9a, 0x1e, 0xe, 0xba, 0x9c, 0xb1, 0x9a, 0xc1, 0x99, 0xb, 0x9e, 0xfb, - 0xaf, 0x7, 0xb, 0x66, 0xc1, 0xe9, 0x99, 0xb, 0xf7, 0x5d, 0xbc, 0x12, - 0x13, 0x80, 0xf7, 0x5d, 0x4, 0xb, 0xba, 0xf7, 0x66, 0xf7, 0x5, 0xfb, - 0x2, 0xfb, 0x4f, 0xb, 0xf7, 0xb3, 0xf7, 0xa0, 0x70, 0x1d, 0xb, 0x7, - 0x43, 0x8b, 0x6a, 0x37, 0x85, 0x1e, 0xf7, 0x4e, 0xb, 0xfb, 0x5b, 0x15, - 0x80, 0xa0, 0xa7, 0x86, 0xa7, 0x1b, 0xb, 0x3c, 0xa0, 0x76, 0xb, 0x77, - 0x1, 0xd2, 0xdf, 0xf7, 0x46, 0xdf, 0x3, 0xb, 0x73, 0xf8, 0xa4, 0x76, - 0xf7, 0x3b, 0x77, 0x1, 0xb, 0xf7, 0xf, 0xfb, 0x34, 0x76, 0xf9, 0xf1, - 0x77, 0xb, 0xa9, 0xaf, 0xaf, 0xa9, 0x6d, 0x67, 0x67, 0x6d, 0xb, 0x8f, - 0x7b, 0x1b, 0x6c, 0x8a, 0x81, 0x1d, 0xb, 0x7b, 0x69, 0x29, 0x78, 0xe2, - 0xc0, 0x7f, 0x1e, 0xb, 0xfb, 0x6e, 0xdf, 0x37, 0xf1, 0xb, 0xf7, 0x54, - 0xfb, 0x41, 0x77, 0xb, 0x1a, 0xfb, 0x38, 0x7, 0xb, 0x72, 0x6b, 0x1e, - 0xb, 0xf7, 0x6, 0x3, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp deleted file mode 100644 index ee481beba5..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp +++ /dev/null @@ -1,1626 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSerifBoldFontData[19395] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x13, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x2d, 0x42, - 0x6f, 0x6c, 0x64, 0x0, 0x1, 0x1, 0x1, 0x26, 0xf8, 0x10, 0x0, 0xf8, - 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x14, 0x4, 0xfb, - 0x3c, 0xfb, 0x8e, 0xfa, 0x7c, 0xfa, 0xd, 0x5, 0x1c, 0x7, 0x67, 0xf, - 0x1c, 0x8, 0xbe, 0x11, 0xaf, 0x1c, 0x44, 0x8e, 0x12, 0x0, 0x4, 0x1, - 0x1, 0x5, 0x2f, 0x43, 0x52, 0x45, 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, - 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x43, - 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, - 0x54, 0x46, 0x0, 0x7b, 0x2, 0x0, 0x1, 0x0, 0xf, 0x0, 0x4f, 0x0, - 0x54, 0x0, 0x62, 0x0, 0x6d, 0x0, 0x78, 0x0, 0x96, 0x0, 0xbb, 0x0, - 0xbe, 0x0, 0xc7, 0x0, 0xd6, 0x0, 0xdc, 0x0, 0xef, 0x0, 0xf8, 0x1, - 0x5, 0x1, 0x12, 0x1, 0x38, 0x1, 0x45, 0x1, 0x53, 0x1, 0x5a, 0x1, - 0x6b, 0x1, 0x73, 0x1, 0x7e, 0x1, 0x87, 0x1, 0x8b, 0x1, 0x9b, 0x1, - 0xa6, 0x1, 0xab, 0x1, 0xb6, 0x1, 0xce, 0x1, 0xe8, 0x1, 0xf3, 0x1, - 0xfa, 0x2, 0x21, 0x2, 0x33, 0x2, 0x38, 0x2, 0x41, 0x2, 0x4b, 0x2, - 0x70, 0x2, 0x94, 0x2, 0xa2, 0x2, 0xad, 0x2, 0xcf, 0x2, 0xd5, 0x2, - 0xe0, 0x2, 0xec, 0x2, 0xf2, 0x3, 0x8, 0x3, 0x10, 0x3, 0x17, 0x3, - 0x20, 0x3, 0x29, 0x3, 0x30, 0x3, 0x37, 0x3, 0x3b, 0x3, 0x48, 0x3, - 0x53, 0x3, 0x61, 0x3, 0x79, 0x3, 0x7f, 0x3, 0x87, 0x3, 0x8f, 0x3, - 0x96, 0x3, 0x9d, 0x3, 0xb2, 0x3, 0xb6, 0x3, 0xc0, 0x3, 0xc6, 0x3, - 0xcf, 0x3, 0xd5, 0x3, 0xdb, 0x3, 0xef, 0x3, 0xfe, 0x4, 0x9, 0x4, - 0x14, 0x4, 0x1b, 0x4, 0x2d, 0x4, 0x35, 0x4, 0x41, 0x4, 0x47, 0x4, - 0x4d, 0x4, 0x5e, 0x4, 0x6f, 0x4, 0x79, 0x4, 0x89, 0x4, 0x98, 0x4, - 0xa5, 0x4, 0xae, 0x4, 0xb3, 0x4, 0xb8, 0x4, 0xc6, 0x4, 0xd4, 0x4, - 0xe1, 0x4, 0xee, 0x4, 0xf1, 0x4, 0xf5, 0x5, 0x1, 0x5, 0xb, 0x5, - 0x11, 0x5, 0x17, 0x5, 0x20, 0x5, 0x2b, 0x5, 0x36, 0x5, 0x41, 0x5, - 0x48, 0x5, 0x4d, 0x5, 0x51, 0x5, 0x54, 0x5, 0x5e, 0x5, 0x68, 0x5, - 0x72, 0x5, 0x7c, 0x5, 0x86, 0x5, 0x90, 0x5, 0x9a, 0x5, 0x9e, 0x5, - 0xa7, 0x5, 0xb0, 0x5, 0xb9, 0x5, 0xc0, 0x5, 0xc6, 0x5, 0xcb, 0x5, - 0xcf, 0x15, 0x3a, 0xa, 0x20, 0xa, 0x7f, 0x6d, 0x88, 0x86, 0x55, 0x83, - 0x19, 0x31, 0x1d, 0x3c, 0xa, 0x71, 0x29, 0x1b, 0x4a, 0x78, 0x97, 0xb7, - 0x1f, 0xf7, 0x86, 0x7, 0xee, 0xb4, 0x6d, 0xfb, 0x11, 0x97, 0x1f, 0xaf, - 0xf7, 0xe6, 0x67, 0x6, 0xfb, 0x10, 0x7c, 0x62, 0x72, 0x2b, 0x1b, 0xf7, - 0x6d, 0x7, 0xb6, 0x9d, 0x9e, 0xc2, 0xf7, 0x1b, 0xc8, 0x72, 0xfb, 0x22, - 0xa2, 0x1e, 0xae, 0xf7, 0x5d, 0xfc, 0xd5, 0x53, 0x1d, 0xfc, 0x81, 0x7, - 0x4d, 0x6c, 0x9b, 0x52, 0x85, 0x1e, 0xb, 0x15, 0xc3, 0x22, 0xa, 0xb, - 0x32, 0x1d, 0x31, 0xa, 0x2d, 0xb6, 0xfb, 0x3, 0xfb, 0x10, 0x51, 0x3a, - 0x1d, 0xb, 0x29, 0xa, 0x80, 0x7f, 0xa, 0x9a, 0x7c, 0xa4, 0x7c, 0x1f, - 0xb, 0x27, 0x1d, 0x69, 0x7, 0xb4, 0x84, 0x93, 0x7f, 0x38, 0xa, 0xb, - 0x3f, 0xc9, 0x6c, 0xbb, 0xa3, 0xd1, 0x90, 0xcc, 0xcc, 0x1e, 0x8a, 0xb7, - 0x15, 0x7b, 0x7d, 0x74, 0x70, 0x69, 0x1b, 0x67, 0x7c, 0xaf, 0xaa, 0xe2, - 0xee, 0xa8, 0xa2, 0x90, 0x1f, 0xb, 0x5e, 0x8c, 0x80, 0x9d, 0xb2, 0x1a, - 0xf7, 0xfc, 0xfb, 0x5d, 0x69, 0x7, 0xad, 0x88, 0xa7, 0x8a, 0x54, 0x1a, - 0xfb, 0xa5, 0x7, 0x78, 0x78, 0x72, 0x72, 0x65, 0x1b, 0x54, 0x8a, 0xb6, - 0xa7, 0x1f, 0xf7, 0xe7, 0xfb, 0x50, 0xb, 0x22, 0x1d, 0xe, 0x4e, 0xa, - 0xed, 0xf7, 0x4, 0x29, 0x2e, 0xa, 0xb, 0x67, 0xa8, 0x74, 0xa, 0xa8, - 0xa8, 0xaf, 0xaf, 0x6e, 0x61, 0xa, 0x6e, 0x61, 0x1d, 0xb, 0x34, 0xa, - 0x1f, 0x39, 0x1d, 0xb, 0x64, 0x8f, 0x83, 0xa1, 0xaa, 0x1a, 0xf8, 0x6, - 0xfb, 0x54, 0x69, 0x7, 0xb1, 0x84, 0x9a, 0x84, 0x5e, 0x1a, 0xb, 0x15, - 0x2e, 0x1d, 0xf7, 0x66, 0x16, 0x2e, 0x1d, 0xe, 0x67, 0xa7, 0x6f, 0xaf, - 0xaf, 0xa8, 0xa7, 0xaf, 0xaf, 0x6e, 0x6f, 0x1d, 0xb, 0xf7, 0xeb, 0xbf, - 0x15, 0x4a, 0x7, 0xc4, 0x9e, 0x99, 0x8c, 0x28, 0xa, 0xb, 0x33, 0xbc, - 0x31, 0xef, 0xef, 0xbc, 0xe5, 0xe3, 0xe3, 0x5a, 0xe5, 0x27, 0x27, 0x5a, - 0x31, 0x33, 0x1e, 0xf7, 0x6, 0x16, 0xd0, 0x8b, 0xe0, 0xae, 0xae, 0x8b, - 0x36, 0x46, 0x46, 0x8b, 0x36, 0x68, 0x68, 0x8b, 0xe0, 0xd0, 0x1e, 0xb, - 0xf7, 0x48, 0xf7, 0x5d, 0x15, 0xe9, 0xf7, 0x87, 0xf0, 0xfb, 0x87, 0x5, - 0xe, 0x15, 0x6f, 0x91, 0x93, 0x61, 0xd1, 0x1b, 0xb8, 0xb0, 0xa3, 0xac, - 0xa7, 0x1f, 0xb, 0xc0, 0xa9, 0xf7, 0x5, 0x3d, 0xa, 0xb, 0x54, 0x8f, - 0x63, 0x8e, 0xcb, 0x1a, 0xf8, 0x64, 0x7, 0xcf, 0xbb, 0x8c, 0xba, 0x8d, - 0x1e, 0xae, 0xb, 0x5c, 0xa, 0xf7, 0x8b, 0x77, 0x27, 0xa, 0xb, 0x94, - 0x1a, 0x13, 0xbc, 0x3b, 0xa, 0x13, 0x8c, 0x24, 0xa, 0xe, 0x2a, 0xa, - 0x85, 0x93, 0x85, 0x92, 0x94, 0x1a, 0xb, 0x16, 0x2a, 0x1d, 0xe, 0x73, - 0x99, 0x5, 0x74, 0x78, 0x68, 0x5f, 0x50, 0x1b, 0x2c, 0x75, 0xf1, 0xe0, - 0x88, 0x1f, 0xb, 0x4e, 0x4c, 0x47, 0xc1, 0x8b, 0x97, 0xbf, 0x9a, 0xb1, - 0x9d, 0xb, 0x3b, 0xa, 0x24, 0xa, 0xb, 0x65, 0x1d, 0xf7, 0x7f, 0x45, - 0xa, 0xfb, 0x25, 0x5f, 0x1d, 0xb, 0x9a, 0x1a, 0xa7, 0x97, 0x91, 0xd0, - 0x1e, 0xae, 0xfb, 0xe3, 0x68, 0x7, 0xbe, 0x88, 0xa3, 0x60, 0x90, 0x82, - 0xf7, 0x4b, 0xfb, 0xd6, 0x18, 0xb, 0xfc, 0x31, 0x15, 0xf7, 0x89, 0xa9, - 0x6, 0x4b, 0x85, 0x9b, 0xb3, 0x1f, 0xf7, 0xdb, 0x46, 0xa, 0xfb, 0x67, - 0x7, 0x65, 0x87, 0x74, 0x40, 0x8c, 0x1e, 0xb, 0x9f, 0xa1, 0x92, 0x70, - 0x53, 0x3a, 0x52, 0x6f, 0x78, 0x1f, 0xb, 0x15, 0x2a, 0x1d, 0xf7, 0x66, - 0x38, 0x1d, 0x15, 0x2e, 0xca, 0x36, 0xf0, 0xf0, 0xca, 0xe0, 0xe8, 0xe8, - 0x4c, 0xe0, 0x26, 0x26, 0x4c, 0x36, 0x2e, 0x1e, 0xf7, 0xe, 0x16, 0xbd, - 0x8b, 0xef, 0xb5, 0xb5, 0x8b, 0x27, 0x59, 0x59, 0x8b, 0x27, 0x61, 0x61, - 0x8b, 0xef, 0xbd, 0x1e, 0xb, 0xfb, 0x14, 0xf7, 0x8c, 0x7b, 0x9a, 0x3d, - 0x1d, 0xfb, 0x1d, 0x7, 0x38, 0x73, 0x89, 0x46, 0x84, 0x1e, 0xb, 0x33, - 0x1d, 0x5d, 0x67, 0xb, 0xfb, 0x22, 0x60, 0xfb, 0x13, 0x63, 0x23, 0x1a, - 0xb, 0x15, 0xb5, 0x6, 0x9d, 0x8c, 0x9b, 0xa8, 0xab, 0x1b, 0xb, 0x1b, - 0xfb, 0x52, 0x71, 0xfb, 0x1c, 0x4e, 0x5d, 0x8b, 0x35, 0xf7, 0x3f, 0x39, - 0x1f, 0xf7, 0x18, 0x4c, 0xba, 0x73, 0x48, 0x1a, 0x7e, 0x82, 0x28, 0xfb, - 0xc, 0xfb, 0x13, 0x5f, 0xf7, 0x5, 0xf0, 0x77, 0x1e, 0x64, 0x6, 0xb, - 0xf7, 0x4c, 0xcb, 0xf7, 0xd, 0xe3, 0xf7, 0x1, 0x3f, 0xc5, 0x69, 0x9c, - 0x1f, 0xfb, 0x7b, 0xf7, 0x7, 0x78, 0xa1, 0xc1, 0x1a, 0xcc, 0xc2, 0xa9, - 0xbf, 0xf7, 0xa, 0xbd, 0xfb, 0x7, 0x45, 0x9d, 0x1e, 0xb1, 0x6, 0xb, - 0x1e, 0xad, 0xfb, 0x8e, 0x69, 0x7, 0xa4, 0x87, 0x90, 0x8b, 0x97, 0x74, - 0x8, 0xb, 0xfb, 0x5f, 0x7d, 0xd3, 0xf7, 0x4f, 0xb0, 0xf7, 0x34, 0xaa, - 0xb, 0xa5, 0x9b, 0xb9, 0x1a, 0xc3, 0x5c, 0xa3, 0x4d, 0x3e, 0x59, 0x56, - 0x65, 0x78, 0x1e, 0x9f, 0x84, 0x5, 0x9a, 0x95, 0xa2, 0xae, 0xb1, 0x1b, - 0xbb, 0xa0, 0x71, 0x68, 0x54, 0x56, 0x7c, 0x6c, 0x82, 0x1f, 0xb, 0x54, - 0xa, 0xf8, 0x5a, 0x77, 0xb, 0x49, 0x1d, 0xf7, 0x84, 0x77, 0x98, 0xa, - 0x17, 0x4d, 0xa, 0xb, 0xad, 0xfb, 0x2b, 0x69, 0x7, 0xa4, 0x8a, 0xa9, - 0x8b, 0x6b, 0x1a, 0xb, 0x8b, 0xae, 0xf8, 0xf2, 0xae, 0xb, 0x96, 0x83, - 0x5, 0xa7, 0x94, 0xb9, 0x87, 0x66, 0x1a, 0x73, 0x1d, 0x1e, 0x7b, 0x66, - 0x5, 0x7b, 0xb4, 0xa1, 0x89, 0x97, 0x1b, 0xb, 0x1b, 0x2f, 0x78, 0x31, - 0x68, 0x84, 0x1f, 0xb, 0xf7, 0x17, 0x78, 0xac, 0x93, 0x1d, 0xb, 0x12, - 0xa4, 0xf7, 0x26, 0xf7, 0xe, 0xf7, 0x1e, 0xb, 0x68, 0x6, 0xb9, 0x88, - 0xb5, 0x93, 0x49, 0x1a, 0xb, 0x7a, 0x85, 0x81, 0x6b, 0x66, 0x1b, 0xb, - 0x51, 0xa, 0xf7, 0x8b, 0x72, 0xa, 0xb, 0x15, 0xc3, 0x6, 0xb, 0x5a, - 0xa, 0xf7, 0x68, 0xf7, 0xe9, 0x79, 0x1d, 0xf7, 0x3f, 0x66, 0x1d, 0xb, - 0x65, 0x1d, 0xf7, 0x84, 0x45, 0xa, 0xfb, 0x2a, 0x5f, 0x1d, 0xb, 0x5d, - 0x90, 0x88, 0xa8, 0xa2, 0x1a, 0xf7, 0x95, 0x7, 0x94, 0xb6, 0xbc, 0xb3, - 0xb, 0x1a, 0xe6, 0x3b, 0xa0, 0x63, 0x2f, 0x65, 0x33, 0x69, 0x7e, 0x1e, - 0xa3, 0x6, 0xbd, 0xa3, 0xae, 0x8f, 0x9a, 0x1b, 0xcd, 0x96, 0x4f, 0x7a, - 0xb, 0xae, 0xfb, 0x70, 0x68, 0x7, 0xb, 0xae, 0xf7, 0x45, 0xf7, 0xf6, - 0xf7, 0x45, 0xb, 0xa4, 0xf7, 0x27, 0xf7, 0x31, 0xf7, 0x27, 0xb, 0xfb, - 0x55, 0xfb, 0x55, 0xfb, 0x35, 0xb, 0xf7, 0x61, 0xf7, 0x61, 0xf7, 0x29, - 0xb, 0xae, 0x1, 0xf4, 0x7f, 0x1d, 0x9e, 0x16, 0xf8, 0xd6, 0x6, 0xb4, - 0xf7, 0x77, 0x5, 0x6e, 0x6, 0xfb, 0x5, 0x5d, 0x53, 0xb, 0x6e, 0x67, - 0x1e, 0xb, 0x63, 0x1d, 0xb2, 0x5c, 0x5b, 0x67, 0x63, 0x5e, 0x1e, 0xe, - 0x15, 0x5c, 0xaf, 0x64, 0x1d, 0xb, 0x66, 0xbb, 0xba, 0xb1, 0xaf, 0xbb, - 0xb9, 0x65, 0xb, 0xfb, 0x3f, 0xfb, 0x3f, 0x85, 0xb, 0xf7, 0x20, 0xf7, - 0x20, 0xb0, 0xb, 0xb9, 0xb4, 0x63, 0xba, 0x1b, 0xa4, 0xa5, 0xa2, 0xa6, - 0xa6, 0x71, 0xa2, 0x72, 0x1f, 0x5c, 0x62, 0x63, 0x5d, 0x1b, 0xb, 0x76, - 0xf7, 0x42, 0xf7, 0x35, 0x12, 0x99, 0x77, 0xa, 0xe1, 0x77, 0xa, 0x13, - 0xe8, 0xb, 0xf7, 0x4d, 0x16, 0xf7, 0xef, 0xae, 0x6, 0x45, 0x92, 0x75, - 0xb, 0xf7, 0x7e, 0x66, 0x7, 0x72, 0x81, 0x82, 0x76, 0x70, 0x1b, 0xb, - 0xf7, 0xf, 0x98, 0x8, 0xa2, 0x7, 0xb, 0x67, 0xa7, 0x6d, 0xaf, 0xaf, - 0xa6, 0xa9, 0xaf, 0xaf, 0x70, 0xa7, 0x67, 0x67, 0x6f, 0x6f, 0x67, 0x1e, - 0xb, 0x67, 0xa6, 0x81, 0x1d, 0x70, 0x61, 0x1d, 0xb, 0x67, 0xa7, 0x74, - 0xa, 0xa6, 0xa8, 0xaf, 0xaf, 0x70, 0x6f, 0x1d, 0xb, 0x61, 0xa, 0x6f, - 0x61, 0x1d, 0xb, 0xfb, 0x17, 0xfb, 0x1f, 0x34, 0xb, 0xa5, 0xf7, 0xe3, - 0x15, 0xfb, 0x5a, 0xf7, 0x2a, 0xfb, 0x30, 0xf7, 0x5a, 0xf7, 0x5a, 0xf7, - 0x29, 0xb, 0x9b, 0x16, 0xf7, 0x77, 0xae, 0x6, 0x41, 0x93, 0x76, 0x8b, - 0xd3, 0x1a, 0xf8, 0x2d, 0x8d, 0x7, 0xb, 0x62, 0x5d, 0x8b, 0x7f, 0x73, - 0x7b, 0x92, 0x92, 0x78, 0xb, 0x15, 0xf7, 0x35, 0x34, 0xe9, 0xe2, 0xb4, - 0xcd, 0x62, 0xf7, 0x98, 0x57, 0x6, 0x4f, 0x43, 0xb, 0x99, 0x16, 0xf7, - 0x87, 0xad, 0x6, 0x5d, 0x90, 0x8a, 0xa8, 0xa2, 0x1a, 0xf7, 0xda, 0xb, - 0xfc, 0x95, 0x15, 0xcd, 0x6, 0xf8, 0x60, 0xf9, 0x48, 0x5, 0x49, 0x6, - 0xe, 0xa9, 0x30, 0xf1, 0x70, 0xb4, 0x1f, 0xa9, 0xb1, 0xb, 0x15, 0xf7, - 0x6, 0x90, 0xb, 0x15, 0xf7, 0x26, 0xb0, 0xb, 0xfb, 0x57, 0xfb, 0xa6, - 0x15, 0x69, 0xf7, 0xa5, 0xaa, 0x7, 0x5c, 0x8d, 0x6c, 0xb, 0x8f, 0x85, - 0x80, 0x79, 0x7e, 0x82, 0x80, 0x1e, 0xfb, 0x5f, 0xfb, 0x38, 0x5, 0xb, - 0xae, 0x78, 0x15, 0xb2, 0x6, 0x9b, 0x8f, 0x90, 0x9d, 0xa0, 0x1b, 0x98, - 0xb, 0xc5, 0xbb, 0xba, 0xc6, 0xc5, 0x5b, 0xbc, 0x51, 0x51, 0x5a, 0x5b, - 0x50, 0xb, 0x2e, 0xa, 0xe, 0xf7, 0x36, 0x3, 0xb, 0xfb, 0x30, 0xfb, - 0x31, 0xfb, 0xc, 0xf7, 0x1e, 0xf7, 0x38, 0x1e, 0xb, 0x74, 0xa, 0xa7, - 0xa8, 0xaf, 0xaf, 0x6f, 0x61, 0xa, 0xb, 0x8b, 0xad, 0xf8, 0x8, 0xce, - 0xb, 0x76, 0xf7, 0x44, 0x77, 0x1, 0xb, 0xf7, 0x1f, 0x13, 0xe0, 0x9b, - 0x16, 0x99, 0xa, 0xb, 0xf7, 0x1f, 0xf7, 0xe, 0xf7, 0x1f, 0xfb, 0xf, - 0xf7, 0x1f, 0xb, 0xf7, 0x8b, 0xf7, 0x41, 0x6c, 0xaa, 0x12, 0xa4, 0xf7, - 0x21, 0xb, 0xfb, 0x5f, 0xa0, 0x76, 0xf7, 0xe8, 0x76, 0xf7, 0x2, 0xab, - 0xb, 0x89, 0xd3, 0xfb, 0x53, 0x69, 0x6, 0xb, 0xf7, 0xeb, 0xbf, 0x15, - 0xb, 0xd6, 0x8b, 0xae, 0xb, 0x85, 0x1e, 0xe, 0xa1, 0x8a, 0x8a, 0xaf, - 0xcb, 0x1b, 0xf7, 0x40, 0xa2, 0xb, 0xfb, 0x91, 0xfb, 0x2e, 0x76, 0xf9, - 0xfd, 0x77, 0x1, 0xb, 0x6, 0x84, 0x6c, 0x6f, 0x49, 0x54, 0x76, 0x69, - 0x80, 0xb, 0x55, 0x8b, 0x5a, 0xc3, 0x93, 0xc7, 0x8b, 0xcb, 0xd3, 0xb, - 0xd4, 0x90, 0x28, 0x37, 0x53, 0x88, 0xfb, 0x1b, 0x39, 0xb, 0xfb, 0xce, - 0xfb, 0x29, 0xb6, 0xf9, 0x79, 0xb6, 0x1, 0xb, 0xfb, 0xce, 0xfb, 0x27, - 0x76, 0xf9, 0xf2, 0x77, 0x1, 0xb, 0xf9, 0x18, 0xac, 0xb, 0x86, 0x84, - 0x9d, 0x1f, 0x81, 0xa5, 0xae, 0x7f, 0xb, 0xfb, 0xac, 0x1f, 0xfb, 0xc5, - 0x68, 0x6, 0xb2, 0xb, 0xfb, 0x2b, 0x1b, 0x48, 0x75, 0x93, 0xbb, 0x1f, - 0xb, 0x7, 0x73, 0x80, 0x67, 0x63, 0x1e, 0xe, 0x76, 0xf7, 0x4d, 0x77, - 0x1, 0xb, 0xf7, 0x8b, 0x77, 0x1, 0xb, 0xf7, 0x16, 0x12, 0xb, 0x1, - 0x0, 0x1, 0x6, 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, - 0x0, 0x42, 0x20, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, - 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, - 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, - 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, - 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, - 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, - 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, - 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, - 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, - 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, - 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, - 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, - 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, - 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, - 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, - 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, - 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, - 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, - 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, - 0x0, 0x91, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, - 0x0, 0x94, 0x0, 0x0, 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, - 0x0, 0xe4, 0x0, 0x0, 0x65, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, - 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, - 0x0, 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, - 0x0, 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, - 0x0, 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, - 0x0, 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, 0x0, - 0x0, 0xa6, 0x0, 0x0, 0x6d, 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, - 0x4, 0x0, 0x7, 0x0, 0x4b, 0x0, 0x78, 0x0, 0xec, 0x1, 0x74, 0x1, - 0xa0, 0x2, 0x61, 0x2, 0x8c, 0x2, 0xba, 0x2, 0xea, 0x3, 0xe4, 0x4, - 0x10, 0x4, 0x3e, 0x4, 0x51, 0x4, 0x59, 0x4, 0x74, 0x4, 0xc5, 0x4, - 0xfb, 0x5, 0x4c, 0x5, 0xb5, 0x5, 0xf3, 0x6, 0x51, 0x6, 0xb4, 0x6, - 0xda, 0x7, 0x5c, 0x7, 0xbb, 0x7, 0xe1, 0x8, 0x28, 0x8, 0x45, 0x8, - 0x67, 0x8, 0x83, 0x8, 0xf4, 0x9, 0xad, 0x9, 0xcd, 0xa, 0x4a, 0xa, - 0xa9, 0xa, 0xee, 0xb, 0x4c, 0xb, 0xab, 0xc, 0x23, 0xc, 0x8c, 0xc, - 0x91, 0xc, 0xe4, 0xd, 0x50, 0xd, 0x75, 0xd, 0xe6, 0xe, 0x0, 0xe, - 0x20, 0xe, 0x7d, 0xe, 0xd7, 0xf, 0x50, 0xf, 0x78, 0xf, 0xbb, 0x10, - 0x3, 0x10, 0x46, 0x10, 0xc0, 0x11, 0x3d, 0x11, 0x5f, 0x11, 0x65, 0x11, - 0x86, 0x11, 0xa1, 0x11, 0xc2, 0x11, 0xe3, 0x11, 0xef, 0x11, 0xf7, 0x12, - 0x36, 0x12, 0x9e, 0x12, 0xe2, 0x13, 0x49, 0x13, 0x76, 0x13, 0xcc, 0x14, - 0x91, 0x14, 0xc3, 0x14, 0xed, 0x15, 0x50, 0x15, 0xb9, 0x15, 0xd7, 0x16, - 0x64, 0x16, 0xac, 0x16, 0xeb, 0x17, 0x23, 0x17, 0x85, 0x17, 0xe0, 0x18, - 0x63, 0x18, 0xac, 0x18, 0xbf, 0x18, 0xef, 0x19, 0x6c, 0x19, 0xe6, 0x19, - 0xfa, 0x1a, 0x25, 0x1a, 0x74, 0x1a, 0x8f, 0x1a, 0xde, 0x1b, 0x21, 0x1b, - 0x70, 0x1b, 0xf8, 0x1c, 0xad, 0x1d, 0x20, 0x1d, 0x9f, 0x1d, 0xc1, 0x1e, - 0x93, 0x1e, 0x9e, 0x1f, 0x19, 0x1f, 0x90, 0x1f, 0xc5, 0x1f, 0xe5, 0x20, - 0x79, 0x20, 0x8a, 0x20, 0xc2, 0x20, 0xff, 0x21, 0x30, 0x21, 0x51, 0x21, - 0x6d, 0x21, 0xec, 0x22, 0x28, 0x22, 0x32, 0x22, 0x57, 0x22, 0x80, 0x22, - 0xb8, 0x22, 0xe4, 0x23, 0x18, 0x23, 0x60, 0x23, 0x98, 0x24, 0xb, 0x24, - 0x1d, 0x24, 0x2f, 0x24, 0x41, 0x24, 0x7c, 0x24, 0x9f, 0x24, 0xd9, 0x25, - 0x78, 0x26, 0x6, 0x26, 0x12, 0x26, 0x22, 0x26, 0x36, 0x26, 0x60, 0x26, - 0x68, 0x26, 0x6f, 0x26, 0x7c, 0x26, 0xae, 0x26, 0xfc, 0x27, 0x35, 0x27, - 0x57, 0x27, 0x6a, 0x27, 0x8a, 0x27, 0xe6, 0x28, 0x5, 0x28, 0x35, 0x28, - 0xa9, 0x28, 0xba, 0x28, 0xce, 0x28, 0xe2, 0x29, 0x6, 0x29, 0x3a, 0x29, - 0xdd, 0x2a, 0x81, 0x2a, 0x9c, 0x2a, 0xb8, 0x2a, 0xd8, 0x2b, 0x28, 0x2b, - 0x46, 0x2b, 0x8e, 0x2c, 0x43, 0x2c, 0x9f, 0x2c, 0xb4, 0x2c, 0xca, 0x2c, - 0xea, 0x2d, 0xf, 0x2d, 0x29, 0x2d, 0x48, 0x2d, 0x6d, 0x2d, 0x90, 0x2e, - 0x5, 0x2e, 0x51, 0x2e, 0xa3, 0x2e, 0xb1, 0x2e, 0xbe, 0x2e, 0xe9, 0x2f, - 0x6, 0x2f, 0x38, 0x2f, 0xc3, 0x2f, 0xde, 0x2f, 0xfe, 0x30, 0x15, 0x30, - 0x3b, 0x30, 0x78, 0x30, 0xa9, 0x30, 0xcd, 0x30, 0xd6, 0x31, 0x14, 0x31, - 0x46, 0x31, 0xe0, 0x32, 0x71, 0x32, 0xa1, 0x33, 0x19, 0x33, 0x4f, 0x33, - 0x61, 0x33, 0x93, 0x34, 0x16, 0x34, 0x21, 0x34, 0x39, 0x34, 0x64, 0x34, - 0x85, 0x34, 0xcc, 0x35, 0x0, 0x35, 0x39, 0x35, 0x52, 0x35, 0x60, 0x35, - 0x70, 0x35, 0x95, 0x35, 0xa1, 0x35, 0xb0, 0x35, 0xd9, 0x35, 0xf3, 0x36, - 0xc, 0x36, 0xb0, 0x37, 0x19, 0x37, 0x38, 0x37, 0x5b, 0x37, 0x96, 0x37, - 0xba, 0x37, 0xdf, 0x37, 0xf8, 0x38, 0x86, 0x39, 0x2f, 0x39, 0x3f, 0x39, - 0xa5, 0x3a, 0x0, 0xfc, 0x21, 0xe, 0xfc, 0x21, 0xe, 0xfb, 0xce, 0x7e, - 0xf7, 0x3d, 0xf8, 0xab, 0x77, 0x1, 0xdc, 0xf7, 0x3e, 0x3, 0xdc, 0xd2, - 0x15, 0x5c, 0xb0, 0x64, 0x1d, 0xb2, 0x5c, 0x5b, 0x66, 0x63, 0x5e, 0x1e, - 0xd1, 0xf7, 0x37, 0x15, 0xa8, 0x6, 0x94, 0xe5, 0x96, 0xc7, 0x96, 0xb7, - 0x8, 0x9f, 0xdd, 0x9f, 0xa5, 0xc2, 0x1a, 0xcb, 0x69, 0xaf, 0x58, 0x57, - 0x6a, 0x67, 0x4b, 0x54, 0x9f, 0x70, 0x9f, 0x38, 0x1e, 0x96, 0x5f, 0x95, - 0x4f, 0x94, 0x33, 0x8, 0xe, 0x2f, 0xf8, 0x3d, 0x76, 0xf7, 0xb3, 0x77, - 0x1, 0xde, 0xf7, 0x15, 0xf7, 0x17, 0xf7, 0x15, 0x3, 0xf7, 0x13, 0xf8, - 0x28, 0x15, 0x6e, 0xa, 0x74, 0xa6, 0xfb, 0xc, 0x9c, 0x43, 0x1e, 0xf7, - 0x98, 0x16, 0x6e, 0xa, 0x1e, 0x8a, 0x74, 0xa7, 0xfb, 0xc, 0x9c, 0x43, - 0x8, 0xe, 0xa0, 0x76, 0xf7, 0x66, 0xcc, 0x4a, 0xd4, 0xf7, 0x20, 0xd4, - 0x45, 0xcb, 0xf7, 0x66, 0x77, 0x12, 0x13, 0xb4, 0xb5, 0x16, 0xce, 0x6, - 0xbb, 0xf7, 0x66, 0x5, 0xf7, 0x21, 0x6, 0x5d, 0xfb, 0x66, 0x5, 0xce, - 0x6, 0xb9, 0xf7, 0x66, 0x5, 0xf0, 0x6, 0x13, 0xcc, 0x8c, 0xcc, 0x5, - 0x35, 0x6, 0xad, 0xf7, 0x2b, 0x5, 0xdb, 0x6, 0x8c, 0xcb, 0x5, 0x47, - 0x6, 0xba, 0xf7, 0x66, 0x5, 0x49, 0x6, 0x5b, 0xfb, 0x66, 0x5, 0xfb, - 0x22, 0x6, 0xb9, 0xf7, 0x66, 0x5, 0x49, 0x6, 0x5c, 0xfb, 0x66, 0x5, - 0xfb, 0xa, 0x6, 0x8a, 0x4b, 0x5, 0xf2, 0x6, 0x6b, 0xfb, 0x2b, 0x5, - 0x28, 0x6, 0x8a, 0x4a, 0x5, 0xe1, 0x6, 0xdc, 0xcc, 0x15, 0xab, 0xf7, - 0x2b, 0x5, 0xf7, 0x25, 0x6, 0x69, 0xfb, 0x2b, 0x5, 0xe, 0x3d, 0x76, - 0xf9, 0xe5, 0x77, 0x12, 0xdc, 0xea, 0xbc, 0xc3, 0xe9, 0xf7, 0x2, 0x17, - 0xf7, 0xa1, 0xa9, 0x15, 0xf7, 0x70, 0x7, 0xc5, 0x6a, 0xae, 0x78, 0x51, - 0x1a, 0x2e, 0x49, 0x7f, 0x70, 0x86, 0x1e, 0xfb, 0x73, 0x98, 0x15, 0xd3, - 0x6e, 0xa7, 0x80, 0xcf, 0x88, 0x8, 0x28, 0xc2, 0xee, 0x7, 0x13, 0x78, - 0xf0, 0x9c, 0xf1, 0xaf, 0xf7, 0x26, 0x1a, 0xf7, 0xe, 0x2c, 0xbd, 0xfb, - 0x0, 0xc2, 0x1e, 0xf7, 0x6b, 0x7, 0xeb, 0x7b, 0xa0, 0x22, 0x96, 0x64, - 0x8, 0xaa, 0xf7, 0x21, 0x6, 0x6f, 0x9c, 0x68, 0xa0, 0x2b, 0x99, 0x8, - 0xd7, 0x54, 0x3d, 0x7, 0x37, 0x87, 0x26, 0x54, 0xfb, 0x9, 0x1a, 0xfb, - 0xd, 0xf7, 0x5, 0x50, 0xd2, 0x68, 0x1e, 0xfb, 0x8f, 0x7, 0x54, 0x95, - 0x5e, 0xa8, 0x67, 0xf7, 0x14, 0x6c, 0x8d, 0x18, 0xf7, 0x3b, 0xf7, 0x93, - 0x15, 0x80, 0x8f, 0x3d, 0xa3, 0xd2, 0x1a, 0xc9, 0xbb, 0x9f, 0xb4, 0x94, - 0x1e, 0xe, 0xf7, 0xf5, 0x7d, 0xb9, 0xf7, 0x9a, 0xb9, 0x78, 0xbe, 0xf7, - 0x97, 0xba, 0x99, 0x77, 0x1, 0xf7, 0x10, 0xf7, 0x6, 0xf7, 0x56, 0xac, - 0xd1, 0xf7, 0x9, 0xf7, 0x54, 0xac, 0x3, 0xf8, 0xee, 0xf7, 0x38, 0x41, - 0x1d, 0xfd, 0x22, 0xf7, 0xe2, 0x41, 0x1d, 0xb9, 0x76, 0x1d, 0xf7, 0x4e, - 0x7b, 0xd8, 0x3e, 0xf0, 0xf8, 0xd1, 0xac, 0x12, 0xc9, 0xf7, 0x1f, 0xf7, - 0xe, 0xf7, 0x24, 0x8b, 0xf0, 0xd6, 0xf7, 0x24, 0x13, 0x7c, 0xf8, 0x6f, - 0xd3, 0x15, 0x5c, 0xb1, 0xc6, 0x62, 0xc9, 0x1b, 0xb0, 0xad, 0x9d, 0xb1, - 0xb1, 0x1f, 0x13, 0x7e, 0x9c, 0x9c, 0xa5, 0xc0, 0x8c, 0x8c, 0x77, 0x97, - 0x18, 0x75, 0x7f, 0x77, 0x7b, 0x72, 0x1b, 0x5c, 0x6c, 0xb0, 0xc1, 0x61, - 0x1f, 0xc1, 0xd0, 0x96, 0x96, 0xc2, 0xe4, 0x9c, 0xa6, 0x9a, 0x94, 0xb8, - 0x8f, 0x8, 0xad, 0xfb, 0x66, 0x69, 0x7, 0xbf, 0x85, 0x99, 0x89, 0x66, - 0x1a, 0x5b, 0x5f, 0x5f, 0x6b, 0x64, 0x1e, 0xfb, 0x2b, 0xf7, 0x6a, 0x5, - 0xcc, 0xa1, 0xe2, 0xb6, 0xdd, 0x1a, 0xc1, 0x61, 0xce, 0xfb, 0x12, 0xfb, - 0x34, 0x25, 0xfb, 0x2c, 0xfb, 0x2b, 0xf7, 0xc, 0x1e, 0x49, 0x6b, 0xfb, - 0x16, 0x4c, 0xfb, 0x17, 0x1a, 0xfb, 0xb, 0xea, 0x50, 0xeb, 0xf1, 0xdc, - 0xc5, 0xa9, 0xb2, 0x1e, 0x74, 0xa7, 0x15, 0x13, 0xbc, 0x77, 0x70, 0x6b, - 0x78, 0x6c, 0x1b, 0x2d, 0x48, 0xf7, 0x17, 0xcf, 0xb7, 0xa0, 0xa3, 0xc0, - 0xa9, 0x1f, 0xe3, 0xfb, 0x18, 0xbe, 0x3f, 0xb1, 0x59, 0x8, 0x54, 0xf7, - 0xf4, 0x15, 0x73, 0xa8, 0x59, 0xce, 0xbe, 0x1a, 0xbb, 0xa7, 0x96, 0xa4, - 0xc4, 0xad, 0x41, 0x59, 0x52, 0x60, 0x7b, 0x70, 0x82, 0x1e, 0xe, 0xfc, - 0x5, 0xf8, 0x3d, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0x5c, 0xf7, 0x15, 0x3, - 0xf7, 0xb, 0xf8, 0x28, 0x15, 0xb4, 0x6, 0x9c, 0xd3, 0xa6, 0xf7, 0x4, - 0xa2, 0x1a, 0xb6, 0x72, 0xb0, 0x63, 0x63, 0x73, 0x66, 0x60, 0x74, 0xa6, - 0xfb, 0x4, 0x9c, 0x43, 0x1e, 0xe, 0x92, 0x1d, 0xbf, 0xf7, 0x5, 0x3, - 0xf7, 0xc6, 0xfb, 0x20, 0x15, 0x2a, 0xc6, 0x59, 0xd3, 0xf7, 0xa4, 0x1a, - 0xf7, 0xc5, 0xcb, 0xb6, 0xde, 0xc3, 0x1e, 0xa6, 0x7, 0x54, 0x72, 0xfb, - 0x61, 0xfb, 0x6, 0xfb, 0xb8, 0x1a, 0x39, 0xa7, 0xfb, 0x74, 0xf7, 0x7c, - 0xfb, 0x11, 0x1e, 0xe, 0x92, 0x1d, 0xf7, 0x42, 0xf7, 0x5, 0x3, 0xa6, - 0xfb, 0x21, 0x15, 0x70, 0x7, 0xc2, 0xa4, 0xf7, 0x61, 0xf7, 0x11, 0xf7, - 0xb8, 0x1a, 0xdd, 0x6f, 0xf7, 0x69, 0xfb, 0x7c, 0xf7, 0x11, 0x1e, 0x6f, - 0x7, 0xec, 0x50, 0xbd, 0x4e, 0xfb, 0xa4, 0x1a, 0xfb, 0xc5, 0x4b, 0x55, - 0x38, 0x53, 0x1e, 0xe, 0xf7, 0xa8, 0x76, 0xf4, 0x76, 0xa3, 0x76, 0xf7, - 0xf, 0x76, 0xf7, 0x8b, 0x77, 0x12, 0xf7, 0x5d, 0xee, 0x13, 0xbc, 0xf7, - 0x85, 0xf8, 0x55, 0x15, 0x6f, 0x88, 0x78, 0x86, 0x7d, 0x1e, 0x80, 0x6a, - 0x76, 0x85, 0x64, 0x1a, 0x69, 0xa2, 0x76, 0xa4, 0xa3, 0xa6, 0xa0, 0xaa, - 0x1e, 0x8a, 0xa8, 0x7b, 0x98, 0x7e, 0xb3, 0x86, 0x9a, 0x87, 0x9f, 0x89, - 0xa4, 0x92, 0x90, 0x18, 0xa1, 0x80, 0x94, 0x85, 0x99, 0x7a, 0x93, 0x81, - 0x94, 0x7d, 0x9a, 0x76, 0x8, 0x76, 0x99, 0xa1, 0x7f, 0x9e, 0x1b, 0xa5, - 0xa2, 0x9a, 0xac, 0xc6, 0x56, 0x7f, 0x4e, 0x97, 0x1f, 0x79, 0x8f, 0x78, - 0x90, 0x79, 0x95, 0x8, 0x93, 0x7, 0xa2, 0x9b, 0x9e, 0x91, 0x9b, 0x8e, - 0xa5, 0x8f, 0xa0, 0x85, 0xa2, 0x94, 0x8, 0xa7, 0x95, 0x98, 0xa1, 0xa0, - 0x1a, 0xa4, 0x79, 0xa2, 0x6a, 0x63, 0x86, 0x6d, 0x64, 0x6b, 0x1e, 0x7f, - 0x7d, 0x7a, 0x7b, 0x75, 0x7b, 0x83, 0x8e, 0x18, 0x88, 0xb1, 0x94, 0xa0, - 0x94, 0x9c, 0x8, 0x96, 0xa0, 0x99, 0x99, 0xa8, 0x1a, 0xad, 0x71, 0x9f, - 0x71, 0x73, 0x73, 0x78, 0x6d, 0x6c, 0x9a, 0x7c, 0x97, 0x73, 0x1e, 0x94, - 0x7a, 0x90, 0x75, 0x67, 0x1a, 0x84, 0x88, 0x6f, 0x98, 0x7d, 0x9c, 0x7f, - 0x9b, 0x19, 0xac, 0x73, 0x86, 0xac, 0x58, 0x1b, 0x7e, 0x6c, 0x80, 0x66, - 0x68, 0x9a, 0x81, 0xa5, 0x86, 0x1f, 0x9d, 0x88, 0xa1, 0x8a, 0xa4, 0x87, - 0x9f, 0x87, 0xa0, 0x85, 0xa2, 0x80, 0x8a, 0x84, 0x18, 0x73, 0x79, 0x78, - 0x85, 0x7a, 0x89, 0x8, 0x89, 0x7e, 0x7b, 0x8b, 0x7b, 0x1b, 0x6e, 0x6a, - 0x7a, 0x67, 0x89, 0x1f, 0x13, 0xdc, 0x71, 0x8a, 0xa1, 0x71, 0xa6, 0x1b, - 0xb6, 0x8f, 0xab, 0xb2, 0xac, 0x1f, 0x97, 0x99, 0x9a, 0x9a, 0xa2, 0x9a, - 0x8, 0xe, 0x3e, 0xa0, 0x76, 0xf7, 0x74, 0xc6, 0xf7, 0x73, 0x77, 0x12, - 0xf7, 0x81, 0xe5, 0x3f, 0xcb, 0x13, 0xf0, 0xac, 0xf7, 0x76, 0x15, 0x13, - 0xe8, 0xf7, 0x6e, 0xfb, 0x76, 0xcb, 0xf7, 0x76, 0xf7, 0x72, 0xc6, 0xfb, - 0x72, 0xf7, 0x71, 0x4b, 0xfb, 0x71, 0xfb, 0x6e, 0x6, 0xe, 0xfc, 0x21, - 0xfb, 0x33, 0x83, 0xa, 0xb2, 0x77, 0xa, 0x13, 0xe0, 0xb6, 0xfb, 0x34, - 0x15, 0x97, 0x77, 0x5, 0xc0, 0xa9, 0xf7, 0x7, 0x3d, 0xa, 0x5d, 0x67, - 0x6d, 0x57, 0x4c, 0xb9, 0x7b, 0xa7, 0x1e, 0x13, 0xd0, 0x9f, 0xa1, 0x92, - 0x70, 0x53, 0x37, 0x50, 0x6f, 0x78, 0x1f, 0xe, 0xfb, 0xce, 0xf7, 0x3f, - 0xf7, 0x8, 0x1, 0xb7, 0xf7, 0x3f, 0x15, 0xf7, 0x87, 0xf7, 0x8, 0xfb, - 0x87, 0x6, 0xe, 0xfc, 0x21, 0x7e, 0x93, 0xa, 0xd2, 0x62, 0x1d, 0xfc, - 0x5, 0x8d, 0x76, 0xf9, 0x4b, 0x77, 0xae, 0x77, 0x12, 0x13, 0xc0, 0x84, - 0x78, 0x15, 0xd3, 0x6, 0x13, 0xa0, 0xf7, 0x78, 0xf9, 0x5a, 0x5, 0x3b, - 0x6, 0xe, 0x7e, 0xa7, 0xf9, 0x19, 0xa7, 0x1, 0xa3, 0xf7, 0x32, 0xf7, - 0x1c, 0xf7, 0x32, 0x3, 0xf7, 0x4a, 0xf7, 0x72, 0x15, 0xf7, 0x79, 0x7, - 0xde, 0x8b, 0xf7, 0x12, 0xce, 0xbb, 0xa0, 0x51, 0xfb, 0x2b, 0x1e, 0xfb, - 0x79, 0x7, 0x3c, 0x8f, 0xfb, 0x14, 0x43, 0x57, 0x7b, 0xcb, 0xf7, 0x23, - 0x1e, 0xfb, 0x32, 0xf7, 0x2, 0x15, 0xfb, 0x5d, 0xed, 0xfb, 0x24, 0xf7, - 0x14, 0xf7, 0x20, 0xe1, 0xf7, 0x39, 0xf7, 0x48, 0xf7, 0x84, 0xfb, 0xe, - 0xf7, 0x8, 0x22, 0x26, 0xfb, 0x10, 0x23, 0xfb, 0x90, 0x1e, 0xe, 0x8b, - 0xad, 0xf9, 0x22, 0x77, 0x1, 0xf7, 0x4e, 0xf7, 0x28, 0x3, 0xcc, 0x16, - 0xf8, 0xd, 0xad, 0x6, 0x28, 0x82, 0xa6, 0xce, 0x1f, 0xf8, 0xc4, 0x7a, - 0x7, 0xfb, 0x90, 0xfb, 0x1, 0x5, 0x71, 0x7, 0x98, 0xad, 0xad, 0x97, - 0x99, 0x1b, 0xb2, 0x8b, 0x5f, 0x72, 0x1f, 0xfc, 0xb, 0x7, 0x4d, 0x86, - 0x65, 0xfb, 0x8, 0x1e, 0xe, 0x8b, 0xf7, 0x19, 0xf8, 0x8, 0x76, 0xe5, - 0xf7, 0x6, 0x1, 0xf7, 0xc0, 0xf7, 0x1c, 0x3, 0x9c, 0x16, 0xf8, 0x34, - 0x6, 0xb8, 0xf7, 0x67, 0x5, 0x69, 0x6, 0x47, 0x6f, 0x82, 0x81, 0x21, - 0x1b, 0xfb, 0x21, 0x6, 0xf7, 0xa8, 0xf7, 0x9b, 0x8b, 0xd7, 0xa8, 0x1a, - 0xf7, 0x2c, 0xfb, 0xf, 0xae, 0x4d, 0xfb, 0x21, 0x50, 0xfb, 0x27, 0x52, - 0x77, 0x1e, 0xa7, 0x6, 0xdf, 0xb0, 0xc9, 0x91, 0xa2, 0x1b, 0xf2, 0x9b, - 0x27, 0x6f, 0xfb, 0xa, 0xfb, 0xd, 0xfb, 0x18, 0xfb, 0x36, 0xfb, 0x41, - 0x1f, 0xe, 0x7d, 0xbd, 0x59, 0xf7, 0x28, 0xf8, 0x6d, 0xdc, 0x12, 0xf7, - 0xf6, 0xf7, 0x6, 0x13, 0xb0, 0xf7, 0x2d, 0xf7, 0xf8, 0x15, 0xd7, 0x71, - 0xf7, 0x11, 0x61, 0xfb, 0x19, 0x1a, 0x31, 0x57, 0x6e, 0x5b, 0x6d, 0x74, - 0xa2, 0xa3, 0x72, 0x1e, 0x13, 0x70, 0xa4, 0x71, 0x6e, 0xa5, 0x60, 0x1b, - 0x6b, 0x6d, 0x74, 0x6a, 0x4c, 0xd2, 0x6e, 0xdb, 0xf7, 0x48, 0xf7, 0xd, - 0xf7, 0xe, 0xf7, 0x20, 0xd6, 0x60, 0xd3, 0x3c, 0xa8, 0x1f, 0xb7, 0xa6, - 0xb2, 0xa4, 0xd8, 0x1a, 0xe8, 0x43, 0xb5, 0x2b, 0xfb, 0xa, 0x3e, 0x31, - 0x4c, 0x6e, 0x1e, 0xa0, 0x7f, 0x5, 0xa3, 0x9a, 0xae, 0xc7, 0xd0, 0x1b, - 0xd4, 0xac, 0x5f, 0x50, 0x30, 0x39, 0x72, 0x5b, 0x7c, 0x1f, 0xe, 0xa0, - 0x76, 0xf7, 0x24, 0xf7, 0x3, 0xf7, 0xcf, 0x76, 0xf7, 0x1f, 0x77, 0x1, - 0xf7, 0xa1, 0xf7, 0x23, 0x3, 0x9e, 0xf7, 0x24, 0x15, 0xf7, 0x8c, 0xfb, - 0x24, 0xf7, 0x25, 0xf7, 0x24, 0xca, 0xf7, 0x3, 0x4c, 0xf8, 0x45, 0x31, - 0x6, 0x31, 0xfb, 0xe, 0xfb, 0x10, 0xfb, 0x3b, 0x32, 0xfb, 0x22, 0x8, - 0xb4, 0x89, 0x15, 0xf7, 0x63, 0xf7, 0xba, 0x5, 0x8d, 0xfb, 0xba, 0x6, - 0xe, 0x83, 0xc8, 0x4e, 0xf7, 0x28, 0xf7, 0x53, 0xf7, 0x1d, 0xdc, 0xf7, - 0x13, 0x12, 0xf8, 0x9, 0xd9, 0x13, 0xb8, 0xbe, 0xf7, 0xdf, 0x15, 0xd3, - 0x86, 0xd7, 0x86, 0xce, 0x6d, 0x8, 0xc0, 0x74, 0xc1, 0x59, 0x4e, 0x1a, - 0x39, 0x49, 0x75, 0x69, 0x6c, 0x6d, 0xa0, 0xa0, 0x6d, 0x1e, 0x13, 0x78, - 0xa1, 0x6c, 0x6b, 0xa2, 0x68, 0x1b, 0x60, 0x78, 0x6b, 0x6f, 0x52, 0xcd, - 0x6c, 0xd8, 0xf7, 0x4a, 0xf3, 0xf7, 0x2, 0xf7, 0x17, 0xed, 0x50, 0xca, - 0x5e, 0xa4, 0x1f, 0x48, 0xb1, 0x4d, 0x91, 0x30, 0x90, 0xa1, 0xe6, 0x18, - 0xf7, 0xaa, 0x6, 0xb6, 0xf7, 0x13, 0x5, 0xfb, 0xd6, 0x6, 0xe, 0x7e, - 0xa6, 0xf7, 0xfe, 0xb8, 0xf7, 0x9f, 0x77, 0x1, 0xa7, 0xf7, 0x31, 0xf7, - 0x1e, 0xf7, 0x2c, 0x3, 0xf8, 0x6a, 0xf9, 0x2a, 0x15, 0xa5, 0x7, 0xfb, - 0xc0, 0x6d, 0xfb, 0x22, 0xfb, 0x54, 0xfb, 0x4a, 0x1a, 0xfb, 0x84, 0xf7, - 0x1f, 0x52, 0xe5, 0xf7, 0x48, 0xb1, 0xf7, 0x3e, 0xc1, 0xf7, 0x40, 0xfb, - 0x4, 0xb1, 0x46, 0x5b, 0x79, 0x84, 0x81, 0x73, 0x1e, 0xb7, 0xf7, 0x4c, - 0xf7, 0xe, 0xc1, 0xef, 0x9f, 0x8, 0xfb, 0xa8, 0xfb, 0xbf, 0x15, 0x97, - 0x96, 0x9c, 0x8c, 0x9b, 0x1b, 0xd0, 0x9b, 0x3f, 0xfb, 0x24, 0x3c, 0x8b, - 0x4c, 0x4e, 0x4d, 0x7c, 0xc9, 0xf7, 0x59, 0xac, 0x93, 0xc3, 0x8c, 0x8c, - 0x1f, 0xe, 0xa0, 0x76, 0xf8, 0x6f, 0x76, 0xe0, 0xf7, 0x1d, 0x1, 0xf7, - 0x27, 0x16, 0xea, 0x6, 0xf7, 0x7f, 0xf9, 0x38, 0x5, 0xfc, 0x34, 0x6, - 0x5f, 0xfb, 0x72, 0x5, 0xae, 0x6, 0xe0, 0xa1, 0xbd, 0x8b, 0xa5, 0x1b, - 0xf7, 0x4f, 0x6, 0xe, 0x7e, 0xab, 0xf9, 0x14, 0xa8, 0x12, 0xa7, 0xf7, - 0xd, 0xfb, 0x2, 0xf7, 0x15, 0xf7, 0x39, 0xf7, 0x1f, 0xfb, 0x19, 0xf7, - 0xb, 0x13, 0xd4, 0xf7, 0xbe, 0xf8, 0x3a, 0x15, 0x81, 0x90, 0xfb, 0xc, - 0xc5, 0xe8, 0x1a, 0xb4, 0xb0, 0xb3, 0xbc, 0xd5, 0x96, 0x44, 0x58, 0x4f, - 0x79, 0x73, 0x74, 0x6c, 0x1e, 0xfb, 0xc, 0x29, 0x15, 0x13, 0xe8, 0x48, - 0x76, 0x38, 0x64, 0xfb, 0x1, 0x1a, 0xfb, 0x2, 0xf0, 0x51, 0xf7, 0x0, - 0xf7, 0x23, 0xe7, 0xd9, 0xf7, 0x11, 0xe8, 0x4b, 0xd1, 0x35, 0xbe, 0x1e, - 0x13, 0xd4, 0xc2, 0x9d, 0xdc, 0xa9, 0xe0, 0x1a, 0xc4, 0x57, 0xe9, 0xfb, - 0x2c, 0xfb, 0x34, 0x54, 0x36, 0x2e, 0x38, 0xcb, 0x4e, 0xd6, 0x61, 0x1e, - 0xa1, 0x79, 0x15, 0x13, 0xe8, 0xcf, 0x5e, 0xcc, 0x60, 0x39, 0x1a, 0x71, - 0x84, 0x30, 0x32, 0x4a, 0x74, 0xcd, 0xd3, 0xd4, 0xa0, 0xaa, 0xa9, 0xb8, - 0x1e, 0xe, 0x93, 0x76, 0xf7, 0x9f, 0xb8, 0xf7, 0xfe, 0xa6, 0x1, 0xa5, - 0xf7, 0x2c, 0xf7, 0x1e, 0xf7, 0x31, 0x3, 0xaa, 0x7e, 0x15, 0xf7, 0xc0, - 0xa9, 0xf7, 0x22, 0xf7, 0x54, 0xf7, 0x4a, 0x1a, 0xf7, 0x84, 0xfb, 0x1f, - 0xc4, 0x31, 0xfb, 0x48, 0x65, 0xfb, 0x3e, 0x55, 0xfb, 0x40, 0xf7, 0x4, - 0x65, 0xd0, 0xae, 0xa5, 0x8e, 0x9b, 0xaa, 0x1e, 0x58, 0xfb, 0x51, 0xfb, - 0x9, 0x58, 0x27, 0x77, 0x8, 0xf7, 0xa8, 0xf7, 0xbf, 0x15, 0x83, 0x8a, - 0x70, 0x86, 0x7b, 0x1b, 0x46, 0x7b, 0xd7, 0xf7, 0x24, 0xda, 0x90, 0xca, - 0xc8, 0xc9, 0x95, 0x42, 0xfb, 0x59, 0x74, 0x85, 0x63, 0x88, 0x7b, 0x1f, - 0xe, 0xfb, 0xce, 0x7e, 0xf7, 0x3a, 0xf7, 0x2f, 0xf7, 0x38, 0x1, 0xdd, - 0xf7, 0x3d, 0x3, 0xdd, 0xd2, 0x63, 0x1d, 0xaf, 0x5c, 0x5b, 0x67, 0x66, - 0x5e, 0x1e, 0xf7, 0xd6, 0x4, 0x86, 0xa, 0xac, 0x5c, 0x5b, 0x67, 0x69, - 0x5e, 0x1e, 0xe, 0xfb, 0xce, 0xfb, 0x33, 0x76, 0xf7, 0xe3, 0xf7, 0x2c, - 0x8b, 0xf7, 0x39, 0x12, 0xdd, 0xf7, 0x3d, 0x56, 0xcf, 0x13, 0xe8, 0xe4, - 0xfb, 0x32, 0x15, 0x96, 0x75, 0x5, 0x33, 0x1d, 0x1e, 0x13, 0xf0, 0x5d, - 0x67, 0x6d, 0x57, 0x3c, 0xd2, 0x8b, 0x8e, 0x1f, 0x13, 0xe8, 0xaf, 0x8d, - 0x91, 0x80, 0x80, 0x1a, 0x53, 0x3a, 0x52, 0x6f, 0x78, 0x1e, 0x13, 0xf0, - 0x84, 0xf8, 0xba, 0x15, 0x86, 0xa, 0xad, 0x5c, 0x5b, 0x67, 0x68, 0x5e, - 0x1e, 0xe, 0x95, 0xa, 0xf7, 0x6b, 0x15, 0xf8, 0x90, 0xfb, 0x73, 0x5, - 0xd4, 0x7, 0xfc, 0x38, 0xf7, 0x53, 0xf8, 0x38, 0xf7, 0x4d, 0x5, 0xd4, - 0x7, 0xfc, 0x90, 0xfb, 0x73, 0x5, 0xe, 0x3e, 0xf6, 0xdf, 0xf7, 0xe, - 0xe1, 0x47, 0xcf, 0x12, 0x13, 0xa0, 0xac, 0xf7, 0xdf, 0x15, 0xf8, 0x8c, - 0xcf, 0xfc, 0x8c, 0x6, 0xfb, 0xb8, 0x4, 0xf8, 0x8c, 0x6, 0x13, 0xc0, - 0xcc, 0xfc, 0x8c, 0x7, 0xe, 0x95, 0xa, 0x83, 0x15, 0xf8, 0x90, 0xf7, - 0x73, 0x5, 0xd7, 0x7, 0xfc, 0x90, 0xf7, 0x73, 0x5, 0x3f, 0x7, 0xf8, - 0x37, 0xfb, 0x4b, 0xfc, 0x37, 0xfb, 0x50, 0x5, 0xe, 0x7e, 0xf7, 0x3d, - 0xf8, 0x85, 0xaf, 0x12, 0xc4, 0xf7, 0x17, 0x69, 0xf7, 0x3d, 0x70, 0xf7, - 0x29, 0x13, 0xe8, 0xf7, 0x73, 0xf7, 0x7b, 0x15, 0xa9, 0x6, 0xe2, 0x9a, - 0x90, 0xde, 0xbe, 0x1e, 0xc0, 0xac, 0xb4, 0xbb, 0xcb, 0x1a, 0xf7, 0x33, - 0xfb, 0x37, 0x96, 0x6c, 0xfb, 0x38, 0x6d, 0x25, 0x62, 0x68, 0x9e, 0x61, - 0xbe, 0x9f, 0xb4, 0x97, 0xbf, 0xa7, 0x7f, 0x97, 0x81, 0x96, 0x1e, 0x83, - 0x93, 0x84, 0x93, 0x98, 0x1a, 0xb0, 0xbd, 0x8e, 0x94, 0xd9, 0x93, 0x2f, - 0x61, 0x51, 0x7b, 0x65, 0x7a, 0x6a, 0x1e, 0x71, 0x59, 0x6d, 0x65, 0x9b, - 0x44, 0x8, 0x13, 0xd0, 0x46, 0xfb, 0x34, 0x15, 0x5c, 0xb0, 0x66, 0xbb, - 0xb9, 0xb1, 0xaf, 0xbb, 0xb9, 0x65, 0xb2, 0x5d, 0x5b, 0x66, 0x63, 0x5e, - 0x1e, 0xe, 0xf7, 0xaf, 0x6d, 0xb9, 0xf7, 0x13, 0xb0, 0x66, 0xbb, 0xf7, - 0xa2, 0xbb, 0xf7, 0x23, 0xb2, 0x12, 0xeb, 0xe7, 0xf7, 0x25, 0xd8, 0xf8, - 0x1, 0xba, 0x13, 0xbf, 0xf8, 0x20, 0xf7, 0xac, 0x15, 0xf7, 0xd, 0xe3, - 0xd1, 0xbc, 0xa9, 0x99, 0x75, 0x60, 0x1e, 0x13, 0xaf, 0xfb, 0x25, 0x7d, - 0x4e, 0x45, 0x5f, 0x1b, 0x69, 0x6f, 0xa8, 0xc7, 0x1f, 0xf7, 0x23, 0x4b, - 0x15, 0x7e, 0x8a, 0xa3, 0x4f, 0xd0, 0x1b, 0xf7, 0xf, 0xcf, 0xf7, 0x1f, - 0xf4, 0xf7, 0x42, 0xfb, 0x28, 0xf7, 0x16, 0xfb, 0x52, 0xfb, 0x5f, 0xfb, - 0x41, 0xfb, 0x29, 0xfb, 0x72, 0xfb, 0x1e, 0xf7, 0xa, 0xfb, 0x5d, 0xf7, - 0xa1, 0xdb, 0xd1, 0xa7, 0xab, 0xcd, 0x1f, 0x7e, 0xae, 0x5, 0x70, 0x50, - 0x55, 0x75, 0x30, 0x1b, 0xfb, 0x41, 0xfb, 0xd, 0xf7, 0x25, 0xf7, 0x28, - 0xf7, 0x78, 0xf7, 0x1a, 0xf3, 0xf7, 0x2a, 0xf7, 0x4c, 0xf6, 0xfb, 0x28, - 0xfb, 0x9, 0x1f, 0x13, 0xdf, 0x33, 0x59, 0xfb, 0xb, 0x3d, 0x60, 0x8f, - 0xbc, 0x9c, 0x8e, 0x1e, 0xcd, 0xf7, 0x98, 0x5, 0x44, 0x6, 0x80, 0x63, - 0x5, 0xa5, 0x7d, 0x80, 0xa6, 0x5b, 0x1b, 0xfb, 0x1e, 0x4a, 0xfb, 0x36, - 0x3e, 0x1f, 0x13, 0x0, 0xfb, 0x4, 0xd1, 0x72, 0xa8, 0x8c, 0x1e, 0xc8, - 0x90, 0xba, 0xbd, 0x96, 0x9c, 0x8, 0xe, 0x4b, 0x1d, 0x12, 0x94, 0xf7, - 0x5f, 0x65, 0x9a, 0x13, 0xf0, 0x94, 0x16, 0x3a, 0xa, 0x13, 0xe8, 0x20, - 0xa, 0x5, 0x13, 0xf0, 0x7f, 0x6d, 0x88, 0x86, 0x55, 0x83, 0x8, 0x13, - 0xe8, 0x31, 0x1d, 0x9f, 0x8b, 0xb5, 0xf7, 0xc1, 0xa9, 0xf7, 0x9b, 0xb3, - 0x12, 0xf3, 0xf7, 0x34, 0xf7, 0x30, 0xf7, 0x39, 0xfb, 0x1e, 0xf7, 0x40, - 0x13, 0xf4, 0xf7, 0x9c, 0xf7, 0xeb, 0x15, 0xa9, 0x6, 0xcc, 0x88, 0xe3, - 0x7c, 0xfb, 0x23, 0x1a, 0x4e, 0x7e, 0x3c, 0xfb, 0x2, 0x61, 0x79, 0x9b, - 0xb8, 0x1e, 0xf7, 0xa2, 0x4, 0xf7, 0x63, 0x7, 0xa2, 0x8c, 0x8c, 0xac, - 0xbe, 0x1b, 0x13, 0xf8, 0xdc, 0xa1, 0x59, 0x45, 0x25, 0x75, 0x62, 0xfb, - 0x1a, 0x1f, 0xfb, 0x8c, 0xfc, 0x9, 0x15, 0xf7, 0xd6, 0x6, 0x13, 0xf4, - 0xf7, 0x67, 0xd1, 0xed, 0xdf, 0xf7, 0x6, 0x22, 0xc1, 0x37, 0x99, 0x1f, - 0x8d, 0x7, 0x13, 0xf8, 0xb5, 0x98, 0xf7, 0x5, 0xa5, 0xf7, 0x3, 0x1a, - 0xf7, 0x30, 0xfb, 0x60, 0x8f, 0x53, 0x1e, 0xfb, 0xc9, 0x53, 0x1d, 0xfc, - 0x71, 0x7, 0x4e, 0x6b, 0x8a, 0x53, 0x8b, 0x1d, 0xd6, 0x78, 0xbb, 0x7d, - 0xa, 0xfb, 0x44, 0xf7, 0x45, 0xf8, 0x2b, 0xae, 0x13, 0xe6, 0xf9, 0x25, - 0xf7, 0x2c, 0x15, 0x2e, 0x38, 0x38, 0x6d, 0x3d, 0x1b, 0x13, 0xea, 0xfb, - 0x28, 0x64, 0xf7, 0x46, 0xf7, 0x11, 0xf7, 0x3d, 0xb4, 0xf7, 0x31, 0xf7, - 0x26, 0xf7, 0x6, 0xd3, 0xfb, 0x9, 0x34, 0xae, 0x1f, 0xae, 0x6, 0x13, - 0xd6, 0x6a, 0x1d, 0x83, 0x80, 0x90, 0x92, 0x7c, 0x1f, 0x13, 0xe6, 0x99, - 0x6c, 0x5c, 0xa2, 0x4e, 0x1b, 0x13, 0xea, 0xfb, 0x66, 0xfb, 0x2e, 0xfb, - 0x30, 0xfb, 0x5f, 0xfb, 0x4f, 0xf7, 0x17, 0xfb, 0x38, 0xf7, 0x7d, 0xf7, - 0x14, 0xd4, 0xca, 0xde, 0xd4, 0x1f, 0xe, 0x8a, 0x1d, 0x68, 0xb8, 0xf8, - 0xdf, 0xb7, 0x12, 0xec, 0xf7, 0x36, 0xf7, 0x95, 0xf7, 0x42, 0x13, 0xb8, - 0x99, 0x16, 0xf7, 0xd0, 0x6, 0xf7, 0x90, 0xf7, 0x0, 0xf7, 0x38, 0xf7, - 0x4c, 0xf7, 0x2e, 0x30, 0xf7, 0x42, 0x95, 0x1d, 0x87, 0xb7, 0x89, 0x4e, - 0x1a, 0xfc, 0x6d, 0x7, 0x66, 0x77, 0x6e, 0x4c, 0x1e, 0xf7, 0x89, 0xcd, - 0x15, 0xf8, 0x6d, 0x7, 0x8c, 0x1d, 0xfb, 0x55, 0x30, 0x1f, 0x13, 0x78, - 0x84, 0xa, 0x1e, 0xe, 0x9f, 0x8b, 0xb4, 0xf7, 0xb4, 0xad, 0xf7, 0xa1, - 0xb7, 0x12, 0xf3, 0xf7, 0x36, 0xf7, 0x36, 0xa5, 0xf7, 0x6, 0xa4, 0x17, - 0x9b, 0x16, 0x3c, 0xa, 0x7b, 0x29, 0x1b, 0x4a, 0x78, 0x97, 0xb7, 0x1f, - 0xf7, 0x7c, 0x7, 0xee, 0xbe, 0x6d, 0xfb, 0x11, 0x97, 0x1f, 0xa5, 0xf7, - 0xe6, 0x71, 0x6, 0xfb, 0x10, 0x7c, 0x58, 0x72, 0x2b, 0x1b, 0xf7, 0x63, - 0x7, 0xb6, 0x9d, 0x9e, 0xc2, 0xf7, 0x1b, 0xd2, 0x7c, 0xfb, 0x22, 0xa2, - 0x1e, 0xa4, 0xf7, 0x5d, 0xfc, 0xd5, 0x6, 0x13, 0x10, 0x68, 0x7, 0xb9, - 0x88, 0xb5, 0x89, 0x49, 0x1a, 0xfc, 0x6d, 0x7, 0x4d, 0x6c, 0x91, 0x52, - 0x8b, 0x1d, 0x67, 0x8b, 0xae, 0xf7, 0xba, 0xad, 0xf7, 0x19, 0x76, 0xc5, - 0x76, 0xf7, 0xc, 0xb7, 0x1, 0xf3, 0xf7, 0x36, 0xf7, 0x2d, 0xa4, 0xf7, - 0x7, 0xa3, 0x3, 0x9b, 0x16, 0xf7, 0xfc, 0xae, 0x6, 0x45, 0x8e, 0x63, - 0x83, 0xcd, 0x1a, 0xf7, 0x7d, 0x7, 0xf7, 0x12, 0x9b, 0x42, 0x39, 0x96, - 0x1f, 0xa4, 0xf7, 0xe6, 0x72, 0x6, 0x3b, 0x7d, 0x7c, 0x46, 0xfb, 0x10, - 0x1b, 0xf7, 0x6d, 0x7, 0xb6, 0x9d, 0x94, 0xc1, 0xf7, 0x40, 0xa6, 0x56, - 0x23, 0xa1, 0x1e, 0xa3, 0xf7, 0x5d, 0xfc, 0xcb, 0x68, 0x6, 0xba, 0x88, - 0xb4, 0x93, 0x49, 0x1a, 0xfc, 0x78, 0x7, 0x4d, 0x6c, 0x92, 0x52, 0x8b, - 0x1d, 0xf7, 0x17, 0x78, 0xac, 0xf7, 0x82, 0xae, 0xf7, 0x50, 0x76, 0xf7, - 0x60, 0xac, 0x88, 0x77, 0x12, 0xb0, 0xf7, 0x45, 0xf7, 0xbf, 0xf7, 0x30, - 0x13, 0xf6, 0xf8, 0x30, 0xf7, 0x90, 0x15, 0xd0, 0x87, 0xab, 0x7d, 0x4b, - 0x1a, 0x38, 0x7, 0x60, 0x7b, 0x6d, 0x33, 0xfb, 0x51, 0x85, 0xf7, 0x8b, - 0xd2, 0xf7, 0x40, 0xb5, 0xf7, 0x2e, 0xf7, 0x25, 0xf7, 0x6, 0xd3, 0xfb, - 0x9, 0x34, 0xae, 0x1e, 0xae, 0x6, 0x13, 0xee, 0x6a, 0x1d, 0x84, 0x81, - 0x8f, 0x90, 0x7f, 0x1f, 0x13, 0xf6, 0x99, 0x6c, 0x5b, 0xa5, 0x4a, 0x1b, - 0xfb, 0x6c, 0xfb, 0x28, 0xfb, 0x36, 0xfb, 0x59, 0xfb, 0x42, 0xf7, 0xe, - 0xfb, 0x45, 0xf7, 0x8e, 0xe2, 0xf7, 0x11, 0xa7, 0xad, 0xbb, 0x1f, 0xf7, - 0x13, 0x7, 0xdd, 0xa3, 0x84, 0xc9, 0x92, 0x1e, 0xae, 0xfb, 0xeb, 0x7, - 0xe, 0xf7, 0x17, 0xa0, 0x76, 0xf7, 0xda, 0xba, 0xf7, 0xa0, 0xae, 0x1, - 0xf5, 0xf7, 0x36, 0xf7, 0x85, 0x7f, 0x1d, 0xa0, 0x16, 0xf7, 0xe5, 0xae, - 0x6, 0x56, 0x91, 0x66, 0x8f, 0xc8, 0x1a, 0xf7, 0x70, 0xf7, 0x85, 0xfb, - 0x70, 0x7, 0x4e, 0x66, 0x87, 0x56, 0x85, 0x1e, 0x68, 0xf7, 0xe8, 0xae, - 0x7, 0x56, 0x92, 0x68, 0x8f, 0xc7, 0x1a, 0xf8, 0x64, 0x7, 0xcc, 0xb8, - 0x8e, 0xb6, 0x8e, 0x1e, 0xae, 0xfb, 0xe8, 0x68, 0x7, 0xb7, 0x88, 0xb9, - 0x89, 0x49, 0x1a, 0xfb, 0x59, 0xfb, 0x85, 0xf7, 0x59, 0x7, 0xcd, 0xb9, - 0x8d, 0xb7, 0x8e, 0x1e, 0xae, 0xfb, 0xe5, 0x68, 0x7, 0xb5, 0x87, 0xb6, - 0x89, 0x4a, 0x7e, 0xa, 0x50, 0x6b, 0x86, 0x56, 0x8b, 0xa, 0x5c, 0xa, - 0x27, 0xa, 0xe, 0x2b, 0xac, 0xb7, 0xac, 0xf9, 0x7, 0xae, 0x1, 0x63, - 0xf7, 0x23, 0xf7, 0x11, 0x7f, 0x1d, 0xf7, 0x13, 0xf9, 0x15, 0x15, 0xc4, - 0x89, 0xb7, 0x7f, 0x47, 0x1a, 0xfc, 0x5e, 0x7, 0x6c, 0x8b, 0x53, 0x4a, - 0x6f, 0x7b, 0x99, 0x9c, 0x9b, 0x94, 0x92, 0x93, 0x95, 0x1e, 0x90, 0x92, - 0x90, 0x94, 0x9b, 0x1a, 0xc2, 0x59, 0x9f, 0x75, 0x6e, 0x61, 0x75, 0x54, - 0x7a, 0x95, 0xfb, 0x2, 0xf7, 0x2a, 0xf2, 0xf7, 0x10, 0x9a, 0xf4, 0x1e, - 0xf8, 0x5e, 0x7, 0xd0, 0xab, 0x94, 0xc4, 0x8f, 0x1e, 0xae, 0xfb, 0xf4, - 0x7, 0xe, 0xf7, 0x17, 0x4e, 0x1d, 0x1, 0xf7, 0x9, 0x7f, 0x1d, 0xa9, - 0x16, 0xf7, 0xe5, 0xae, 0x6, 0x56, 0x92, 0x68, 0x8f, 0xc7, 0x1a, 0xf7, - 0x4e, 0x7, 0xa6, 0xa4, 0xf7, 0x4a, 0xfb, 0x6d, 0xb5, 0x59, 0x84, 0x7b, - 0x31, 0x8c, 0x19, 0x68, 0xf7, 0xe4, 0xae, 0x7, 0x77, 0x8c, 0x7d, 0x8d, - 0x7c, 0x9d, 0xfb, 0xc5, 0xf8, 0x4, 0x18, 0xf7, 0x3c, 0xf7, 0x40, 0xbb, - 0xb2, 0xf4, 0x91, 0x8, 0xae, 0xfb, 0xb5, 0x68, 0x7, 0xf7, 0x0, 0x8a, - 0x86, 0x6a, 0x55, 0x55, 0xfb, 0x6d, 0xfb, 0x64, 0x18, 0xf7, 0x6a, 0x7, - 0xe1, 0xad, 0x83, 0xc2, 0x8f, 0x1e, 0xae, 0xfb, 0xe6, 0x68, 0x7, 0xb9, - 0x88, 0xb4, 0x7e, 0x49, 0x1a, 0xfc, 0x59, 0x7, 0x4e, 0x6b, 0x87, 0x54, - 0x8b, 0x1d, 0x9f, 0x8b, 0xb4, 0xf8, 0xec, 0x60, 0x1d, 0x42, 0x96, 0x1d, - 0xf8, 0x62, 0x7, 0xcf, 0xaa, 0x99, 0xd1, 0x1e, 0xae, 0xfb, 0xf1, 0x68, - 0x7, 0xb8, 0xb4, 0x7b, 0x49, 0x1f, 0xfc, 0x62, 0x7, 0x4e, 0x61, 0x91, - 0x5f, 0x8b, 0xa, 0xf7, 0xbd, 0x8b, 0xae, 0xf8, 0xf3, 0xae, 0x12, 0xb2, - 0xf7, 0x17, 0x4a, 0xb5, 0xf8, 0x8c, 0xf7, 0x2f, 0x13, 0xd8, 0x99, 0x16, - 0xf7, 0x7e, 0xae, 0x6, 0x38, 0x90, 0x79, 0x90, 0xd1, 0x1a, 0xf8, 0x64, - 0x8d, 0x7, 0x13, 0xe8, 0xf7, 0x8e, 0xfc, 0xd7, 0x5, 0xa6, 0x6, 0xf7, - 0x8e, 0xf8, 0xe6, 0x5, 0x8d, 0xfc, 0x78, 0x6, 0x49, 0x6e, 0x88, 0x4f, - 0x85, 0x1e, 0x68, 0xf7, 0xe0, 0xae, 0x7, 0x49, 0x94, 0x75, 0x7d, 0xdb, - 0x1a, 0xf8, 0x4b, 0x7, 0xe1, 0xab, 0x8d, 0xc3, 0x8f, 0x1e, 0xae, 0xfb, - 0x90, 0x7, 0x13, 0xd0, 0xfb, 0x5c, 0xfc, 0x6c, 0xfb, 0x5c, 0xf8, 0x6c, - 0x5, 0xfb, 0x91, 0x68, 0x6, 0xd2, 0x86, 0x9d, 0x7d, 0x57, 0x1a, 0xfc, - 0x5b, 0x7, 0x51, 0x7e, 0x7c, 0x3d, 0x8b, 0xa, 0xd6, 0x8e, 0x76, 0xb2, - 0x76, 0xf8, 0xb5, 0x76, 0xf7, 0x9, 0xae, 0x12, 0xf3, 0xb7, 0xf8, 0x43, - 0xb7, 0x13, 0x7c, 0x72, 0x1d, 0x13, 0xbc, 0x37, 0xa, 0xe, 0x51, 0x1d, - 0x1, 0xae, 0xf7, 0x45, 0xf7, 0xf6, 0x48, 0xa, 0xfb, 0x48, 0x78, 0xa, - 0xfb, 0x7b, 0x3c, 0x1d, 0xf7, 0x21, 0x5e, 0xa, 0xf7, 0x21, 0x5e, 0x1d, - 0xfb, 0x1d, 0xfb, 0x6e, 0x1e, 0xe, 0x67, 0xa0, 0x76, 0xf7, 0xc3, 0xae, - 0xf7, 0xb9, 0xb8, 0x1, 0xef, 0xf7, 0x36, 0xf7, 0x3a, 0xf7, 0x40, 0x3, - 0x9b, 0x16, 0xf7, 0xe2, 0xae, 0x6, 0x46, 0x94, 0x78, 0x83, 0xdc, 0x1a, - 0xf7, 0x4e, 0x7, 0xf7, 0x3a, 0xf7, 0x40, 0xb6, 0xf7, 0x23, 0xf7, 0x3d, - 0xfb, 0x4a, 0x9d, 0x3b, 0x1f, 0xfb, 0xd6, 0x68, 0x6, 0xc0, 0x86, 0xaa, - 0x86, 0x62, 0x1a, 0xfc, 0x6d, 0x7, 0x31, 0x64, 0x93, 0x5e, 0x1e, 0xf7, - 0x8a, 0xf7, 0xc3, 0x15, 0xf7, 0x96, 0x7, 0xa1, 0x8c, 0x98, 0x98, 0xad, - 0x1b, 0xdd, 0xaf, 0x6f, 0xfb, 0x6, 0xfb, 0x10, 0x5e, 0x6e, 0xfb, 0xd, - 0x8d, 0x1f, 0xe, 0xf7, 0x17, 0xfb, 0x44, 0xf7, 0x52, 0x93, 0x1d, 0x5a, - 0xa, 0xf7, 0xa5, 0x89, 0x15, 0xfb, 0x1f, 0xf7, 0x5, 0xf5, 0x68, 0xe1, - 0x1b, 0xcd, 0xc1, 0x9f, 0x9a, 0xb1, 0x1f, 0x85, 0xa3, 0x2d, 0x6d, 0x2f, - 0xa4, 0x55, 0xf7, 0x8, 0x19, 0xf7, 0x2b, 0xb2, 0xf1, 0xf7, 0x12, 0xf7, - 0x42, 0x1a, 0xf7, 0x6e, 0xfb, 0x35, 0xf7, 0x20, 0x5e, 0x1d, 0xfb, 0x13, - 0xfb, 0x7b, 0xfb, 0x14, 0xd8, 0xfb, 0x33, 0xf7, 0x35, 0x5b, 0x1e, 0x4e, - 0xf7, 0xe3, 0x79, 0x1d, 0xf7, 0x47, 0x66, 0x1d, 0xfb, 0x47, 0x78, 0xa, - 0xfb, 0x7c, 0x65, 0x1d, 0xf7, 0x7c, 0xe2, 0x1e, 0xe, 0xd6, 0xa0, 0x76, - 0xf9, 0xc, 0xb7, 0x68, 0xae, 0x12, 0xf7, 0x6, 0xf7, 0x36, 0xf7, 0x4b, - 0xf7, 0x3f, 0x13, 0xd8, 0xf7, 0xa8, 0xf7, 0xed, 0x15, 0xf7, 0x89, 0x7, - 0xaa, 0x90, 0x8d, 0x96, 0xc2, 0x1b, 0xdb, 0xb4, 0x6a, 0x26, 0xfb, 0x16, - 0x57, 0x75, 0xfb, 0x17, 0x8a, 0x1f, 0xfb, 0x8e, 0xfb, 0xed, 0x15, 0xf7, - 0xe6, 0xae, 0x6, 0x49, 0x94, 0x75, 0x8e, 0xdb, 0x1a, 0xf7, 0x4e, 0xa6, - 0x7, 0xf7, 0x63, 0xfb, 0xcd, 0x5, 0xf7, 0x61, 0xae, 0x6, 0x7f, 0x77, - 0x8c, 0x9d, 0x7d, 0x1f, 0xfb, 0x58, 0xf7, 0xa7, 0x5, 0xc1, 0x9c, 0xf2, - 0xa8, 0xf7, 0xf, 0x1a, 0xf7, 0x3c, 0xfb, 0x68, 0x95, 0x45, 0x1e, 0xfb, - 0xd6, 0x6, 0x13, 0xb8, 0x68, 0x7, 0xc4, 0x87, 0xaa, 0x86, 0x60, 0x1a, - 0xfc, 0x62, 0x7, 0x3a, 0x77, 0x88, 0x47, 0x83, 0x1e, 0xe, 0x30, 0x78, - 0xac, 0xf9, 0x1a, 0xaa, 0x8c, 0x8e, 0xa, 0x13, 0xd8, 0x7c, 0x1d, 0x97, - 0x94, 0x1d, 0xc4, 0x1b, 0x47, 0x1d, 0x13, 0xb8, 0x85, 0xa, 0x77, 0x75, - 0x92, 0x93, 0x73, 0x1f, 0x13, 0xd8, 0x94, 0x70, 0x6e, 0x94, 0x6e, 0x46, - 0x1d, 0xe, 0x9f, 0x8b, 0xae, 0xf8, 0x61, 0x76, 0xf7, 0x3d, 0xab, 0x1, - 0xf7, 0x91, 0x7f, 0x1d, 0xf7, 0x30, 0x16, 0xf7, 0xf9, 0xae, 0x6, 0x41, - 0x90, 0x73, 0x8d, 0xe0, 0x1a, 0xf8, 0x99, 0x7, 0xd0, 0x87, 0xf2, 0x86, - 0x9f, 0xfb, 0x34, 0x8, 0xa8, 0x6, 0x89, 0xf7, 0x5d, 0x5, 0xfc, 0xef, - 0xfb, 0x5d, 0xa8, 0x6, 0x9f, 0xf7, 0x34, 0xf2, 0x90, 0xd1, 0x8f, 0x8, - 0xfc, 0x99, 0x7, 0x37, 0x73, 0x89, 0x42, 0x8b, 0x1d, 0x6b, 0xa, 0x63, - 0xa, 0x9b, 0xf9, 0x15, 0x15, 0xc3, 0x85, 0xa5, 0x8c, 0x37, 0x1a, 0xfb, - 0xdb, 0x7, 0xfb, 0x4d, 0xf7, 0x1c, 0x50, 0xf7, 0x1c, 0xf7, 0x26, 0xf6, - 0xe6, 0xf7, 0x2d, 0x1e, 0xf7, 0xdb, 0x7, 0xcd, 0xa2, 0x9a, 0x43, 0xa, - 0x73, 0x4e, 0x1a, 0xfb, 0xdb, 0x7, 0x4b, 0x89, 0xfb, 0x17, 0xfb, 0x44, - 0xfb, 0x24, 0x8b, 0xf7, 0x1e, 0xc4, 0x1e, 0xf7, 0xdb, 0x7, 0xe3, 0xaa, - 0x89, 0xcd, 0x8e, 0x1e, 0xae, 0xfb, 0xe6, 0x7, 0xe, 0xd6, 0x8e, 0x76, - 0xf9, 0x27, 0xae, 0x1, 0xf7, 0xf8, 0x79, 0x15, 0xa6, 0x6, 0xf7, 0x78, - 0xf8, 0xd5, 0xa1, 0xc3, 0x98, 0x9e, 0xc2, 0x92, 0x19, 0xae, 0xfb, 0x69, - 0x68, 0x7, 0xc4, 0x88, 0xa8, 0x87, 0x64, 0x1a, 0xfb, 0x27, 0xfc, 0x18, - 0x5, 0xfb, 0x21, 0xf7, 0xe9, 0x77, 0xab, 0x9e, 0x1a, 0xb1, 0xa2, 0x8b, - 0xca, 0x8f, 0x1e, 0xae, 0xfb, 0xe4, 0x68, 0x7, 0xb6, 0x84, 0x9a, 0x88, - 0xa5, 0x4f, 0x8, 0xe, 0xf7, 0xf5, 0x91, 0x76, 0xf8, 0x7d, 0x76, 0xf7, - 0x50, 0xae, 0x1, 0xf7, 0xc0, 0x7c, 0x15, 0xa7, 0x6, 0xf7, 0x4a, 0xf8, - 0x68, 0x5, 0x92, 0x6, 0xf7, 0x3c, 0xfc, 0x68, 0x5, 0xa6, 0x6, 0xf7, - 0x5c, 0xf8, 0xe4, 0x97, 0xb0, 0xa1, 0xa3, 0xae, 0x8e, 0x19, 0xae, 0xfb, - 0x4a, 0x68, 0x7, 0xad, 0x89, 0xae, 0x8a, 0x62, 0x1a, 0xfb, 0xa, 0xfc, - 0x8, 0x5, 0x89, 0x6, 0xfb, 0x5, 0xf7, 0xf4, 0x83, 0x99, 0x97, 0x1a, - 0xad, 0xa8, 0x8c, 0xb6, 0x8e, 0x1e, 0xae, 0xfb, 0xcc, 0x68, 0x7, 0xbb, - 0x89, 0x96, 0x80, 0x98, 0x75, 0xae, 0x35, 0x18, 0xfb, 0x9, 0xfb, 0xc5, - 0x5, 0x89, 0x6, 0xfb, 0xf, 0xf8, 0x8, 0x88, 0x8c, 0x96, 0x1a, 0xb0, - 0xa7, 0x8d, 0xaf, 0x8e, 0x1e, 0xae, 0xfb, 0xba, 0x68, 0x7, 0xb5, 0x85, - 0x95, 0x81, 0x9c, 0x5b, 0x8, 0xe, 0xd6, 0x4e, 0x1d, 0x1, 0x9b, 0xf9, - 0x3f, 0x3, 0x9b, 0x16, 0xf7, 0x8e, 0xae, 0x6, 0x68, 0x8e, 0x55, 0x8f, - 0xae, 0x1a, 0xf7, 0x20, 0xf7, 0x56, 0x5, 0xf7, 0x3, 0xfb, 0x46, 0x96, - 0x7b, 0x81, 0x1a, 0x70, 0x6f, 0x89, 0x57, 0x88, 0x1e, 0x68, 0xf7, 0xe8, - 0xae, 0x7, 0x6f, 0x8d, 0x7b, 0x8d, 0x56, 0xdd, 0xfb, 0x4a, 0xf7, 0xa5, - 0x18, 0xf7, 0x32, 0xf7, 0x72, 0x9e, 0x9c, 0xe6, 0x93, 0x8, 0xae, 0xfb, - 0x8e, 0x68, 0x7, 0xb7, 0x88, 0xa7, 0x8a, 0x6c, 0x1a, 0x70, 0x8b, 0x95, - 0xfb, 0x6, 0xfb, 0x32, 0x1e, 0xfb, 0x1, 0xf7, 0x3c, 0x88, 0x87, 0x98, - 0x1a, 0xa8, 0x9f, 0x8b, 0xc6, 0x8f, 0x1e, 0xae, 0xfb, 0xee, 0x68, 0x7, - 0xb5, 0x89, 0x9c, 0x72, 0xa0, 0x6c, 0xf7, 0x5a, 0xfb, 0xad, 0x18, 0xfb, - 0x39, 0xfb, 0x67, 0x62, 0x55, 0x5b, 0x8b, 0x72, 0x89, 0x19, 0xe, 0xd6, - 0x4e, 0x1d, 0x1, 0xf7, 0xaa, 0xf7, 0x36, 0xf7, 0x1d, 0xf7, 0xe, 0x3, - 0x69, 0x1d, 0x8d, 0xde, 0x1a, 0xf7, 0x42, 0x66, 0xa, 0xcf, 0x7f, 0x7a, - 0x6e, 0xfb, 0x38, 0xfb, 0xa0, 0x18, 0x42, 0x1d, 0xe, 0x8c, 0xa, 0x1, - 0x39, 0xa, 0xe, 0x91, 0x1d, 0xce, 0xf3, 0x3, 0xce, 0xfb, 0x29, 0x15, - 0xf7, 0x7e, 0xb6, 0x3b, 0x6, 0x5a, 0x8a, 0xa0, 0xab, 0x1f, 0xf8, 0xfe, - 0x7, 0xc6, 0x96, 0x96, 0xc3, 0x1e, 0xca, 0xb6, 0xfb, 0x7e, 0x6, 0xe, - 0xfc, 0x5, 0xfb, 0xa, 0x76, 0xf7, 0x21, 0x76, 0xf9, 0x5a, 0x77, 0x1, - 0xf7, 0x56, 0xfb, 0x1f, 0x15, 0xcf, 0x6, 0xfb, 0x4e, 0xf9, 0xd2, 0x5, - 0x44, 0x6, 0xe, 0x91, 0x1d, 0xf7, 0x36, 0xf3, 0x3, 0xab, 0x21, 0x15, - 0x60, 0xf7, 0x7e, 0xf9, 0xcf, 0xfb, 0x7e, 0x60, 0xca, 0x7, 0xc3, 0x96, - 0x80, 0x50, 0x1f, 0xfc, 0xfe, 0x7, 0x6a, 0x8b, 0x77, 0x59, 0x1e, 0xe, - 0x49, 0xf7, 0xe0, 0x76, 0xf8, 0x1, 0x77, 0x1, 0xd4, 0xf7, 0xcb, 0x15, - 0xe4, 0x6, 0xf7, 0x15, 0xf7, 0xa0, 0xf7, 0x15, 0xfb, 0xa0, 0x5, 0xe4, - 0x6, 0xfb, 0x46, 0xf8, 0x1, 0x5, 0x3b, 0x6, 0xe, 0xfb, 0x11, 0xbd, - 0x1, 0x40, 0x4, 0x59, 0xf8, 0x88, 0xbd, 0x7, 0xe, 0x90, 0xa, 0xf7, - 0x52, 0xf8, 0xa4, 0x26, 0xa, 0x7d, 0xd1, 0x5a, 0x50, 0xa, 0x12, 0xa4, - 0xf7, 0x26, 0xfb, 0x13, 0xf7, 0x19, 0xf7, 0x8, 0xf7, 0x1e, 0x13, 0x66, - 0xf7, 0xba, 0xc3, 0x32, 0x1d, 0x13, 0x26, 0x31, 0xa, 0x23, 0xb6, 0xfb, - 0x3, 0xfb, 0x10, 0x5b, 0x3a, 0x1d, 0x1e, 0xb2, 0x6d, 0x93, 0xa0, 0x1a, - 0x13, 0x5a, 0x9b, 0xac, 0x9f, 0xaf, 0xd5, 0x8f, 0x55, 0x58, 0x1e, 0x53, - 0x7, 0x44, 0x1d, 0x13, 0x8a, 0x26, 0x1d, 0xe, 0x30, 0x7d, 0xab, 0x81, - 0x76, 0xf8, 0x44, 0xc1, 0xf7, 0x5f, 0x77, 0x12, 0xd3, 0xf7, 0x1f, 0xf7, - 0x37, 0xf7, 0x27, 0x13, 0x7c, 0xd3, 0x7e, 0x15, 0x97, 0x6, 0xda, 0xc3, - 0x5, 0x13, 0xbc, 0x5e, 0xb9, 0xb2, 0x7f, 0xaa, 0x1b, 0xf7, 0x39, 0xd8, - 0xf7, 0x5, 0xf7, 0x13, 0xf7, 0x17, 0x46, 0xf7, 0x8, 0xfb, 0xb, 0x46, - 0x67, 0x65, 0x79, 0x7a, 0x1f, 0xf7, 0x97, 0xfb, 0x56, 0x69, 0x7, 0xaf, - 0x84, 0x9e, 0x87, 0x5c, 0x1a, 0x13, 0x7c, 0xf7, 0x1f, 0xfc, 0x7b, 0x15, - 0xf7, 0x9b, 0x7, 0xa1, 0x94, 0x9a, 0xb0, 0xb9, 0x1b, 0xe2, 0x91, 0xfb, - 0x1a, 0x50, 0x1f, 0x13, 0xbc, 0xfb, 0x31, 0x68, 0x58, 0x4f, 0x54, 0x7e, - 0xbe, 0xa7, 0x1e, 0xe, 0xfb, 0x5f, 0x7d, 0xce, 0x86, 0x1d, 0xf7, 0x12, - 0xf7, 0x10, 0x13, 0xb8, 0xf8, 0x30, 0xf7, 0x1, 0x15, 0x70, 0x73, 0x71, - 0x6e, 0x52, 0x1b, 0x3d, 0x4d, 0xb5, 0xf7, 0x20, 0x8c, 0x1f, 0xf5, 0x8c, - 0x91, 0xf0, 0xd9, 0x1b, 0x9a, 0xa5, 0x82, 0x6d, 0x1f, 0x13, 0xd8, 0x8f, - 0x1d, 0x37, 0xb0, 0x44, 0x2d, 0xfb, 0x22, 0x62, 0xfb, 0x59, 0xfb, 0x1f, - 0xe1, 0xfb, 0x2, 0xf7, 0x14, 0xda, 0xcd, 0xb3, 0xcc, 0xb9, 0x1e, 0xe, - 0x30, 0x7d, 0xc3, 0xf8, 0xb, 0xc3, 0xf7, 0x3d, 0xad, 0x12, 0xa4, 0xf7, - 0x28, 0xf7, 0x37, 0xf7, 0x1f, 0x17, 0xf7, 0xe7, 0xbf, 0x15, 0x4a, 0x7, - 0xc9, 0x9c, 0x94, 0x8c, 0xf7, 0x10, 0x9a, 0x8, 0x13, 0xf8, 0xac, 0x7, - 0x52, 0x8d, 0x89, 0xa8, 0xa6, 0x1a, 0xf8, 0xc9, 0xfb, 0x6b, 0x69, 0x7, - 0xc2, 0x87, 0xa0, 0x8a, 0x56, 0x1a, 0xfb, 0x41, 0x7, 0xa5, 0x73, 0x69, - 0xaf, 0x4f, 0x1b, 0x2d, 0x28, 0x42, 0xfb, 0x42, 0xfb, 0x26, 0xe7, 0x2d, - 0xde, 0xd6, 0xa7, 0xa7, 0xb1, 0xaf, 0x1f, 0x13, 0xd8, 0x88, 0xc7, 0x15, - 0x80, 0x66, 0x50, 0x5d, 0x3b, 0x8b, 0xf7, 0x12, 0xc5, 0xec, 0x99, 0xe9, - 0xd2, 0xc3, 0xa1, 0x4e, 0x8a, 0x1e, 0xe, 0x49, 0x1d, 0x98, 0xa, 0x17, - 0xf7, 0x38, 0xf7, 0xae, 0x15, 0x13, 0xe0, 0xf7, 0x1e, 0xa9, 0xa1, 0xb0, - 0xdb, 0x7d, 0xfb, 0x6, 0x5d, 0x8c, 0x1e, 0xfb, 0x15, 0x66, 0x15, 0xf7, - 0x90, 0x6, 0x13, 0xf0, 0xc1, 0x7b, 0xf7, 0x42, 0xfb, 0x42, 0x1e, 0x13, - 0xd0, 0x2b, 0x1d, 0xe, 0xfb, 0xce, 0x8b, 0xad, 0xf8, 0x13, 0xb7, 0xcf, - 0xf7, 0x36, 0x6c, 0xaa, 0x12, 0xd2, 0xf7, 0x1f, 0x13, 0xd8, 0x99, 0x16, - 0xf7, 0xaa, 0xad, 0x6, 0x4a, 0x8d, 0x7a, 0x9a, 0xb6, 0x1a, 0xf7, 0xd7, - 0xe2, 0xb7, 0x34, 0xf7, 0xe, 0x7, 0xa6, 0x86, 0xbd, 0xbb, 0x97, 0xa3, - 0x88, 0x7b, 0x1e, 0x7c, 0x75, 0x7b, 0x70, 0x1a, 0x13, 0xe8, 0x77, 0x9c, - 0x69, 0xb5, 0xb3, 0xa2, 0xa6, 0xae, 0xd0, 0x40, 0xaa, 0x4e, 0xfb, 0x49, - 0x8a, 0xfb, 0x19, 0x2a, 0x1e, 0x52, 0x5f, 0xc4, 0xfb, 0xd7, 0x6, 0x56, - 0x74, 0x88, 0x69, 0x87, 0x1e, 0xe, 0xfb, 0x62, 0xf7, 0x3a, 0xfb, 0x2d, - 0xab, 0xf7, 0x1, 0xf7, 0xb, 0xe2, 0xa7, 0xf7, 0x6c, 0xc0, 0x82, 0xaa, - 0x12, 0xa7, 0xe3, 0x3c, 0xf7, 0x9, 0xfb, 0x9, 0xf7, 0x1d, 0xf7, 0x15, - 0xf7, 0x1b, 0x69, 0xda, 0x13, 0x7a, 0x20, 0xf7, 0xc, 0x63, 0x15, 0x53, - 0x86, 0x67, 0x71, 0x63, 0x1a, 0x13, 0x79, 0x20, 0x53, 0xd5, 0x64, 0xf7, - 0x10, 0xf7, 0x11, 0xf7, 0x18, 0xa6, 0xf7, 0x10, 0xf7, 0x3, 0xfb, 0x7, - 0x95, 0x5a, 0x8c, 0x1e, 0x13, 0x79, 0x40, 0xfb, 0x1f, 0x8d, 0x71, 0x8c, - 0xad, 0x1a, 0xa9, 0xb0, 0x9f, 0x9e, 0xec, 0x8b, 0x8b, 0x94, 0xa8, 0x1e, - 0xd3, 0xa2, 0xac, 0xc9, 0xc8, 0x1a, 0xc7, 0x6d, 0x9e, 0x81, 0x95, 0x1e, - 0x13, 0x7a, 0x20, 0xdd, 0xc0, 0xfb, 0x17, 0x6, 0x13, 0x94, 0xc0, 0x9b, - 0x63, 0x67, 0x91, 0x67, 0x1b, 0xfb, 0x1d, 0x49, 0x37, 0x3b, 0x43, 0xbb, - 0x5a, 0xd5, 0x70, 0x1f, 0x89, 0x7, 0x60, 0x7f, 0x41, 0x64, 0x4c, 0x1a, - 0x57, 0xac, 0x7c, 0xb8, 0x7b, 0x1e, 0x13, 0x7a, 0x20, 0xaa, 0x7d, 0x15, - 0xf7, 0x41, 0x6, 0xbf, 0xa7, 0x7c, 0x67, 0x44, 0xfb, 0x1e, 0x8b, 0x63, - 0x7a, 0x2e, 0x8a, 0xcb, 0xa1, 0x94, 0x9b, 0xa5, 0xa0, 0x1f, 0x13, 0x74, - 0xc0, 0xa2, 0xf7, 0xfd, 0x15, 0xca, 0x90, 0xd1, 0xc8, 0xcd, 0x8b, 0x33, - 0x5e, 0x52, 0x88, 0x45, 0x4c, 0x50, 0x84, 0xc5, 0xd0, 0x1e, 0xe, 0x30, - 0x82, 0x1d, 0xf7, 0x5f, 0x77, 0x1, 0xbb, 0xf7, 0x1f, 0xf7, 0x2c, 0x8a, - 0xa, 0x9b, 0x41, 0xa, 0x8b, 0xb3, 0x9c, 0x1f, 0x76, 0xa, 0x57, 0x60, - 0x75, 0x53, 0x5b, 0x1e, 0xf7, 0xad, 0xfb, 0x54, 0x69, 0x7, 0xb2, 0x83, - 0x99, 0x88, 0x5c, 0x1a, 0xfc, 0x81, 0x7, 0x5a, 0x7a, 0x8a, 0x67, 0x8b, - 0xa, 0x5d, 0xa, 0x12, 0xb5, 0xf7, 0x2f, 0xfb, 0x1d, 0xf7, 0x2f, 0xfb, - 0x26, 0x84, 0x1d, 0x13, 0xc8, 0x2d, 0xa, 0x13, 0xd0, 0xb7, 0xf8, 0xd7, - 0x15, 0x60, 0xab, 0x69, 0xb9, 0xb6, 0xad, 0xac, 0xb7, 0xb6, 0x69, 0xae, - 0x60, 0x5e, 0x6a, 0x67, 0x61, 0x1e, 0xe, 0xfb, 0xce, 0xfb, 0x5f, 0xf7, - 0x35, 0xf8, 0xd6, 0xf7, 0x2f, 0x12, 0xea, 0xf7, 0x2c, 0xfb, 0x27, 0xf7, - 0x1f, 0x13, 0xd0, 0xc5, 0xf8, 0x3f, 0x15, 0xae, 0x88, 0xa7, 0x8a, 0x54, - 0x7e, 0xa, 0x61, 0x83, 0x69, 0x63, 0x88, 0x6e, 0x8c, 0x9b, 0x93, 0x92, - 0x95, 0x91, 0x96, 0x1e, 0x90, 0x94, 0x90, 0x95, 0x96, 0x1a, 0xa0, 0x79, - 0xac, 0x62, 0x61, 0x77, 0x6c, 0x6f, 0x41, 0xd6, 0x6f, 0xc2, 0xf7, 0x4b, - 0x8f, 0xf7, 0x28, 0xc4, 0x1e, 0xf8, 0x5f, 0xfb, 0x5e, 0x7, 0x13, 0xe0, - 0xbd, 0xf7, 0x2c, 0x15, 0x60, 0xaa, 0x69, 0xb9, 0xb6, 0xae, 0xac, 0xb7, - 0xb6, 0x68, 0xae, 0x60, 0x5e, 0x6b, 0x67, 0x61, 0x1e, 0xe, 0x30, 0x8b, - 0xad, 0xf8, 0x3f, 0x77, 0xf7, 0x7f, 0x77, 0x1, 0xd1, 0x8a, 0xa, 0xa1, - 0x16, 0x99, 0xa, 0x5b, 0x92, 0x87, 0x94, 0xb7, 0x1a, 0xf3, 0x7, 0xa2, - 0xa3, 0x5, 0xf5, 0xfb, 0x1e, 0x98, 0x77, 0x80, 0x1a, 0x7b, 0x6f, 0x88, - 0x7d, 0x1e, 0x69, 0xf7, 0x7e, 0xad, 0x7, 0x83, 0x84, 0x8c, 0x99, 0x81, - 0x1f, 0xfb, 0x56, 0xf7, 0x96, 0xa5, 0xaa, 0xc1, 0xb1, 0xa1, 0x9d, 0x19, - 0xa7, 0xa2, 0x9e, 0x8f, 0xb3, 0x92, 0x8, 0xac, 0xfb, 0x6a, 0x6a, 0x7, - 0xbb, 0x84, 0x96, 0x89, 0x77, 0x1a, 0xfb, 0x29, 0xfb, 0x2e, 0x5, 0xf8, - 0x43, 0xfb, 0x4f, 0x69, 0x7, 0xbb, 0x8b, 0x5c, 0x80, 0x1f, 0xfc, 0x7e, - 0x7, 0x73, 0x83, 0x67, 0x63, 0x1e, 0xe, 0xfc, 0x5, 0x8b, 0xad, 0xf9, - 0x16, 0x77, 0x12, 0xc1, 0xf7, 0x1f, 0xfb, 0x12, 0x84, 0x1d, 0x13, 0xd0, - 0x64, 0x81, 0xaa, 0xa8, 0x1f, 0xf8, 0xda, 0x8d, 0xa, 0xfc, 0x7e, 0x97, - 0x1d, 0xf7, 0x4e, 0x82, 0x1d, 0x4c, 0x76, 0xd3, 0x77, 0x12, 0xd2, 0xf7, - 0x1f, 0xf7, 0x1e, 0x53, 0xa, 0x14, 0xe, 0x13, 0xce, 0x9b, 0x16, 0xf7, - 0x84, 0xad, 0x6, 0x64, 0x8f, 0x84, 0xa1, 0xaa, 0x1a, 0xf7, 0x95, 0x7, - 0x93, 0xb3, 0xbd, 0xb6, 0xc2, 0x8b, 0x58, 0x6b, 0x1e, 0xfb, 0x7c, 0x7, - 0x74, 0x8b, 0x6c, 0x5b, 0x88, 0x1e, 0x69, 0xf7, 0x7e, 0xad, 0x7, 0x65, - 0x8e, 0x82, 0xa1, 0xab, 0x1a, 0xf7, 0x95, 0x7, 0x93, 0xb5, 0xbd, 0xb5, - 0xc1, 0x8b, 0x57, 0x6c, 0x1e, 0xfb, 0x7c, 0x7, 0x73, 0x8b, 0x6c, 0x5a, - 0x89, 0x1e, 0x69, 0xf7, 0x82, 0xad, 0x7, 0x59, 0x8c, 0x8b, 0xaa, 0xa4, - 0x1a, 0xf7, 0x85, 0x7, 0xf7, 0x2, 0x3c, 0xaa, 0x54, 0x51, 0x5e, 0x6f, - 0x50, 0x5e, 0x1e, 0xab, 0x7c, 0x72, 0xc2, 0x30, 0x1b, 0x13, 0xbe, 0x37, - 0x5f, 0x4f, 0x73, 0x7d, 0x1f, 0x88, 0x1d, 0xa8, 0x87, 0xa5, 0x88, 0x57, - 0x1a, 0xfb, 0xa6, 0x7, 0x5a, 0x75, 0x86, 0x6a, 0x8b, 0x1d, 0x30, 0x82, - 0x1d, 0x4c, 0x76, 0xd3, 0x77, 0x12, 0xcd, 0xf7, 0x1f, 0xfb, 0x17, 0x85, - 0x1d, 0x13, 0xca, 0xa0, 0x16, 0xf7, 0x85, 0xad, 0x6, 0x13, 0xc6, 0x59, - 0x1d, 0x1e, 0x13, 0xc9, 0xc1, 0x8c, 0x54, 0x6f, 0x1f, 0x4f, 0xa, 0x8d, - 0x8b, 0xaa, 0xa3, 0x1a, 0x76, 0xa, 0x1e, 0x13, 0xba, 0x36, 0x60, 0x4f, - 0x73, 0x7d, 0x1f, 0x88, 0x1d, 0x13, 0xc6, 0xb3, 0x85, 0x98, 0x83, 0x5e, - 0x1a, 0xfb, 0xa6, 0x7, 0x5a, 0x7a, 0x87, 0x67, 0x8b, 0xa, 0x65, 0xa, - 0x12, 0xa4, 0xf7, 0x27, 0xf7, 0x25, 0xf7, 0x27, 0xfb, 0x1b, 0xf7, 0x27, - 0x13, 0xf0, 0xf7, 0x40, 0xf7, 0x7c, 0x78, 0x1d, 0xeb, 0xd5, 0x1e, 0x13, - 0xe8, 0xc8, 0x9c, 0x4d, 0x64, 0xa, 0x39, 0x46, 0x3b, 0x8b, 0xf6, 0xf7, - 0x0, 0x1f, 0xfb, 0x27, 0x16, 0xfb, 0x16, 0xe2, 0xfb, 0x8, 0x70, 0xa, - 0xf6, 0x6f, 0xa, 0xf7, 0x0, 0x70, 0x1d, 0xfb, 0x4, 0xfb, 0x15, 0x1e, - 0xe, 0x7c, 0xa, 0x7f, 0x77, 0x12, 0xd6, 0xf7, 0x1f, 0xf7, 0xc, 0xf7, - 0x28, 0x21, 0xf7, 0x28, 0x13, 0xf6, 0x81, 0xa, 0x1e, 0x13, 0xf5, 0x90, - 0x1d, 0x54, 0x75, 0xc8, 0x8b, 0x1f, 0x7a, 0x1d, 0x89, 0xc8, 0x58, 0xa, - 0x7a, 0x1f, 0x89, 0x6, 0x13, 0xee, 0xcd, 0xfb, 0x55, 0x69, 0x7, 0xb9, - 0x85, 0x95, 0x7c, 0x65, 0x1a, 0xfc, 0x75, 0x92, 0xa, 0x30, 0xfb, 0x4c, - 0x76, 0xf7, 0x53, 0xc1, 0xf8, 0x25, 0xab, 0x1, 0xad, 0xf7, 0x26, 0xf7, - 0x36, 0x8a, 0xa, 0xf7, 0xea, 0xed, 0x15, 0x8d, 0x7a, 0x51, 0x56, 0x1b, - 0x49, 0x6f, 0xc7, 0xf7, 0x16, 0xde, 0x91, 0xf7, 0x14, 0xde, 0xb9, 0xa6, - 0x63, 0x63, 0x1f, 0x42, 0xfc, 0xa7, 0x15, 0x68, 0xf7, 0x9f, 0xad, 0x7, - 0x67, 0x92, 0x78, 0x8e, 0xbb, 0x1a, 0xf8, 0xde, 0x7c, 0x7, 0x3d, 0x52, - 0x5, 0xab, 0x67, 0x6c, 0xa4, 0x57, 0x1b, 0xfb, 0x2a, 0x36, 0xfb, 0x11, - 0xfb, 0xa, 0xfb, 0x3f, 0xe4, 0x42, 0xef, 0xa8, 0xbc, 0x96, 0xb8, 0xb4, - 0x1f, 0xfb, 0x2f, 0x7, 0x5e, 0x79, 0x89, 0x54, 0x81, 0x1e, 0xe, 0xfb, - 0x5f, 0x8b, 0xad, 0xf7, 0xba, 0xf7, 0x25, 0x45, 0x76, 0xa5, 0x76, 0xd5, - 0x77, 0x12, 0xde, 0xf7, 0x1f, 0x13, 0x9c, 0xa8, 0x16, 0xf7, 0x9e, 0xad, - 0x6, 0x4e, 0x8e, 0x7f, 0x92, 0xbd, 0x1a, 0xf7, 0x5a, 0x7, 0xd4, 0xb7, - 0xa1, 0x9a, 0x9c, 0x93, 0x79, 0x7b, 0x98, 0x1e, 0x13, 0xc4, 0x7e, 0x96, - 0x99, 0x7f, 0xa5, 0x1b, 0xbd, 0x99, 0xb4, 0xa5, 0xa3, 0x7c, 0xc1, 0x47, - 0x1f, 0x13, 0xac, 0x4a, 0x5e, 0x4f, 0x6c, 0x76, 0x1f, 0x89, 0xda, 0xfb, - 0x51, 0x73, 0x6, 0xa9, 0x87, 0xa3, 0x86, 0x59, 0x1a, 0xfb, 0xb0, 0x7, - 0x59, 0x75, 0x87, 0x6b, 0x8b, 0x1d, 0xfb, 0x96, 0x7d, 0xad, 0x7f, 0x76, - 0xf7, 0xfc, 0x76, 0xf7, 0x6, 0xac, 0x89, 0x77, 0x12, 0xa4, 0xef, 0xf7, - 0x20, 0xeb, 0x13, 0x76, 0xa4, 0x7e, 0x15, 0xae, 0x6, 0x9f, 0x95, 0x91, - 0x93, 0x96, 0x1b, 0x8d, 0x90, 0x89, 0x88, 0x91, 0x1f, 0x13, 0xb6, 0x83, - 0x9e, 0xae, 0x7b, 0xb0, 0x1b, 0xe8, 0xd8, 0xc6, 0xea, 0xdb, 0x52, 0xaf, - 0x52, 0xa6, 0x1f, 0x4f, 0xa8, 0x4d, 0x9e, 0xbf, 0x1a, 0xaa, 0xa4, 0xa5, - 0xaf, 0xc4, 0xb4, 0x60, 0x44, 0xa0, 0x1e, 0xae, 0x6, 0x13, 0xae, 0xf7, - 0x25, 0x6b, 0x7, 0x83, 0x88, 0x87, 0x7f, 0x79, 0x1b, 0x83, 0x80, 0x8f, - 0x90, 0x7e, 0x1f, 0x13, 0xb6, 0x91, 0x7a, 0x75, 0x92, 0x71, 0x1b, 0x2f, - 0x46, 0x50, 0x33, 0x41, 0xc3, 0x66, 0xc5, 0x6e, 0x1f, 0xc9, 0x6c, 0xcb, - 0x76, 0x5b, 0x1a, 0x6d, 0x73, 0x67, 0x59, 0xfb, 0x3, 0x80, 0xf4, 0xa6, - 0x85, 0x1e, 0x65, 0x6, 0xe, 0xfb, 0xce, 0x7f, 0xd2, 0xf7, 0xfa, 0xb7, - 0xf7, 0x3d, 0x77, 0x12, 0xc0, 0xf7, 0x1f, 0xfb, 0xc, 0xf7, 0x1f, 0x13, - 0xf0, 0xf7, 0xc7, 0xf7, 0x3, 0x15, 0x76, 0x80, 0x7a, 0x6c, 0x6e, 0x1b, - 0x13, 0xe8, 0x63, 0x8c, 0xa7, 0x9b, 0x1f, 0xf7, 0xce, 0xe9, 0xb7, 0x2d, - 0xf7, 0x3d, 0x72, 0x7, 0x47, 0x2a, 0x5e, 0x5f, 0x56, 0x5e, 0x8, 0x70, - 0xbf, 0xfb, 0xce, 0x7, 0x76, 0x8c, 0x8f, 0x2d, 0xf7, 0x0, 0x1b, 0xe5, - 0xaf, 0xd0, 0xb6, 0xa0, 0x1f, 0xe, 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, - 0x12, 0xcc, 0x85, 0x1d, 0x13, 0xf0, 0x71, 0xa, 0x13, 0xe8, 0x25, 0x1d, - 0xe, 0x92, 0x76, 0xf8, 0x4d, 0xad, 0x1, 0xa0, 0xf8, 0x64, 0x3, 0xf7, - 0x85, 0x7d, 0x15, 0xa5, 0x6, 0xf7, 0x34, 0xf8, 0x16, 0x9f, 0xbd, 0x99, - 0x8d, 0xa3, 0x8e, 0x19, 0x4d, 0x1d, 0x38, 0xfb, 0x6d, 0x5, 0x33, 0xf7, - 0x6c, 0x8b, 0x8e, 0x8f, 0x1a, 0xa2, 0x9f, 0x8c, 0xac, 0x8e, 0x48, 0x1d, - 0xe, 0xd6, 0x92, 0x76, 0xf7, 0xd8, 0x76, 0xf7, 0x40, 0x77, 0x1, 0xf8, - 0xd0, 0xf7, 0x1b, 0x3, 0xf7, 0x78, 0x7d, 0x15, 0xa3, 0x6, 0xf7, 0xe, - 0xf7, 0xc3, 0x5, 0x90, 0x6, 0xef, 0xfb, 0xc3, 0x5, 0xa2, 0x6, 0xf7, - 0x2f, 0xf8, 0x1b, 0x9c, 0xb7, 0x99, 0x8d, 0x9e, 0x8f, 0x19, 0xad, 0xfb, - 0x1b, 0x69, 0x7, 0xa7, 0x88, 0x9f, 0x89, 0x6b, 0x1a, 0x75, 0x58, 0xfb, - 0x1, 0x70, 0x3f, 0x1e, 0x89, 0x6, 0x79, 0xd9, 0x61, 0xf7, 0xc, 0xa0, - 0x1a, 0xa0, 0xa1, 0x8d, 0xa5, 0x8d, 0x1e, 0xad, 0xfb, 0x7e, 0x69, 0x7, - 0xa3, 0x88, 0x96, 0x8b, 0x94, 0x76, 0x90, 0x7f, 0x91, 0x81, 0x95, 0x69, - 0x47, 0xfb, 0x3f, 0x18, 0x59, 0xf7, 0x1a, 0x69, 0xcd, 0xa0, 0x1a, 0xa5, - 0xa3, 0x8d, 0x99, 0x8d, 0x1e, 0xad, 0xfb, 0x72, 0x69, 0x7, 0xa5, 0x86, - 0x90, 0x8e, 0xa5, 0x4a, 0x8, 0xe, 0xa0, 0x76, 0xf8, 0x3f, 0xad, 0x1, - 0x99, 0xf8, 0x6a, 0x3, 0x99, 0x16, 0xf7, 0x3d, 0xad, 0x6, 0x7a, 0x8c, - 0x5b, 0x90, 0x9a, 0x9f, 0x8, 0x9a, 0xa0, 0xcc, 0xe5, 0x8b, 0x1a, 0x8b, - 0xc1, 0x36, 0xa0, 0x6c, 0x1e, 0x94, 0x7e, 0x6b, 0x84, 0x75, 0x8a, 0x8, - 0x69, 0xf7, 0x85, 0xad, 0x7, 0x7e, 0x8f, 0x83, 0x8e, 0x82, 0x98, 0xfb, - 0x28, 0xf7, 0x6e, 0x18, 0xf0, 0xf7, 0x8, 0x9d, 0xa2, 0xa3, 0x97, 0xa7, - 0x8f, 0x19, 0xad, 0xfb, 0x3c, 0x69, 0x7, 0xb2, 0x88, 0x97, 0x8a, 0x76, - 0x1a, 0x7d, 0x8b, 0x95, 0x41, 0x2c, 0x1e, 0x7c, 0x9e, 0x53, 0xcf, 0x9c, - 0x1a, 0x9b, 0xa2, 0x8f, 0xa3, 0x1e, 0xad, 0xfb, 0x8e, 0x69, 0x7, 0xa6, - 0x87, 0x93, 0x82, 0x9c, 0x71, 0xf7, 0x14, 0xfb, 0x4f, 0x18, 0xfb, 0x17, - 0xfb, 0x3f, 0x88, 0x94, 0x5f, 0x86, 0x8, 0xe, 0xfb, 0x61, 0xf7, 0x23, - 0xf8, 0x9f, 0x77, 0x1, 0xf7, 0x80, 0x7e, 0x15, 0x79, 0x56, 0x5, 0x75, - 0x84, 0x2b, 0xa, 0xe, 0x87, 0x1d, 0x1, 0xb1, 0xaf, 0x87, 0xa, 0x65, - 0x8e, 0x1d, 0x6b, 0x8b, 0x62, 0x8c, 0xf7, 0x7f, 0xf8, 0x27, 0x18, 0xa5, - 0xfc, 0xb, 0x7, 0x84, 0xfb, 0x22, 0x5, 0xaf, 0x6, 0xa5, 0xf7, 0x1, - 0xb0, 0x8b, 0xf7, 0xa, 0x8c, 0xfb, 0x7e, 0xfc, 0x28, 0x18, 0xe, 0x8d, - 0x1d, 0xf7, 0x15, 0xf4, 0x3, 0xa1, 0xf7, 0x99, 0x15, 0xe2, 0x78, 0x9f, - 0x5e, 0x49, 0x1a, 0xfb, 0x3f, 0x7, 0xfb, 0xd, 0xd9, 0x7d, 0xf7, 0x19, - 0x1e, 0x97, 0x7, 0x3a, 0x99, 0x72, 0xb3, 0xd0, 0x1a, 0xf7, 0x3f, 0x7, - 0xd2, 0x7a, 0xb3, 0x2a, 0x9d, 0x1e, 0x8d, 0x7, 0xec, 0x9d, 0x9c, 0xa5, - 0xd2, 0x1a, 0xf7, 0x47, 0x7, 0xd1, 0xa4, 0xb8, 0xdc, 0x9a, 0x1e, 0x97, - 0x7, 0xfb, 0x19, 0x3d, 0x77, 0xfb, 0xe, 0x1f, 0xfb, 0x47, 0x7, 0x49, - 0x77, 0x6c, 0x34, 0x78, 0x1e, 0xe, 0xfc, 0x3f, 0xfb, 0x29, 0x76, 0xf7, - 0x40, 0x76, 0xf9, 0x5a, 0x77, 0x1, 0xcd, 0xe3, 0x3e, 0xd0, 0x3, 0xd8, - 0xfb, 0x3e, 0x15, 0xd0, 0xf9, 0xf1, 0x46, 0x6, 0xe, 0x8d, 0x1d, 0xf7, - 0x34, 0xf4, 0x3, 0xc1, 0xfb, 0x37, 0x15, 0x7f, 0x7, 0xf7, 0x19, 0xd9, - 0x99, 0xf7, 0xe, 0x1f, 0xf7, 0x3f, 0x7, 0xcd, 0x9f, 0xb8, 0xe2, 0x9e, - 0x1e, 0x34, 0x9e, 0x77, 0xaa, 0xcd, 0x1a, 0xf7, 0x47, 0x7, 0xf7, 0xd, - 0x3d, 0x9f, 0xfb, 0x19, 0x1e, 0x7f, 0x7, 0xdc, 0x7d, 0xa4, 0x5d, 0x46, - 0x1a, 0xfb, 0x47, 0x7, 0x44, 0x9c, 0x71, 0xec, 0x79, 0x1e, 0x89, 0x7, - 0x2a, 0x79, 0x7a, 0x63, 0x44, 0x1a, 0xfb, 0x3f, 0x7, 0x45, 0x72, 0x64, - 0x3a, 0x7c, 0x1e, 0xe, 0xfb, 0x13, 0xf7, 0x41, 0xf7, 0x34, 0x1, 0xa8, - 0xf8, 0x62, 0x3, 0xcc, 0xf7, 0x41, 0x15, 0xae, 0x9b, 0xa3, 0xb0, 0xb7, - 0x1b, 0xb1, 0xaa, 0x7e, 0x7c, 0xa8, 0x1f, 0x78, 0xb1, 0xae, 0x76, 0xb9, - 0x1b, 0xc9, 0xac, 0xb7, 0xb5, 0xa9, 0x1f, 0x67, 0xd1, 0x5, 0x68, 0x74, - 0x72, 0x66, 0x63, 0x1b, 0x6e, 0x68, 0x9b, 0x9b, 0x66, 0x1f, 0x9d, 0x64, - 0x63, 0x9d, 0x6a, 0x1b, 0x48, 0x67, 0x5f, 0x61, 0x75, 0x1f, 0xe, 0xfb, - 0xce, 0xfb, 0x4a, 0x76, 0xf8, 0xab, 0xf7, 0x3d, 0x12, 0xdd, 0xf7, 0x3d, - 0x29, 0xa8, 0x13, 0xe0, 0xdd, 0xf8, 0x35, 0x15, 0x5d, 0xb1, 0x64, 0xba, - 0xbb, 0xaf, 0xb3, 0xb8, 0xba, 0x67, 0xb0, 0x5b, 0x5c, 0x65, 0x67, 0x5b, - 0x1e, 0x13, 0xd0, 0xd2, 0xfb, 0x37, 0x15, 0x84, 0x44, 0x83, 0x57, 0x82, - 0x62, 0x8, 0x75, 0x20, 0x73, 0x71, 0x4e, 0x1a, 0x4b, 0xac, 0x68, 0xbe, - 0xbf, 0xac, 0xae, 0xcb, 0xc8, 0x73, 0xa4, 0x75, 0xf5, 0x1e, 0x82, 0xb4, - 0x83, 0xc0, 0x84, 0xd3, 0x8, 0xe, 0xfb, 0xb, 0x76, 0xf7, 0x27, 0x76, - 0xf7, 0xe3, 0x76, 0xf7, 0x22, 0xaa, 0xf7, 0x7, 0x77, 0x1, 0xc0, 0xf7, - 0x21, 0xf7, 0x13, 0xf7, 0xf, 0x3, 0xf7, 0x75, 0xf7, 0x14, 0x15, 0x77, - 0xb1, 0x80, 0xbe, 0xc4, 0x1a, 0xab, 0x90, 0xf7, 0x1c, 0xdb, 0x9c, 0xa4, - 0x7f, 0x6d, 0x1e, 0x88, 0x7, 0xfb, 0x53, 0xfc, 0xad, 0x15, 0xb3, 0x6, - 0xba, 0xf7, 0x19, 0x5, 0x86, 0x9b, 0x9c, 0x89, 0x9d, 0x1b, 0xac, 0xe2, - 0x8b, 0xee, 0xd1, 0x1f, 0x79, 0x9d, 0x5, 0x74, 0x78, 0x6f, 0x70, 0x4f, - 0x1b, 0x6b, 0x70, 0x98, 0xa3, 0x75, 0x1f, 0xdd, 0xf7, 0x7a, 0x5, 0x7d, - 0x96, 0x9c, 0x85, 0x9b, 0x1b, 0x8f, 0xc9, 0x8b, 0xcb, 0xb4, 0x70, 0xa8, - 0x67, 0x9d, 0x1f, 0xbb, 0xf7, 0x1c, 0x5, 0x63, 0x6, 0x5f, 0xfb, 0xf, - 0x5, 0x90, 0x78, 0x77, 0x8e, 0x78, 0x1b, 0xfb, 0x2, 0xfb, 0x10, 0x39, - 0xfb, 0x3b, 0xfb, 0x7, 0xc3, 0x42, 0xd3, 0x6c, 0x1f, 0xe, 0x7d, 0xaa, - 0x6c, 0xf7, 0x12, 0x23, 0x76, 0xf7, 0x17, 0xb9, 0xf7, 0x24, 0xcc, 0xf7, - 0x12, 0xf7, 0x4d, 0x6d, 0xa9, 0x12, 0xa0, 0xab, 0xbf, 0xf7, 0x12, 0x13, - 0x5b, 0x80, 0xf7, 0x71, 0xbc, 0x15, 0x54, 0xc6, 0xad, 0x83, 0xaa, 0x1b, - 0xf7, 0x7, 0x96, 0xf7, 0xf, 0xd5, 0x91, 0x1f, 0x74, 0x6, 0x60, 0x80, - 0x7b, 0x6f, 0x3f, 0x1b, 0x7f, 0x6c, 0x8d, 0x9f, 0x58, 0x1f, 0xa2, 0xc6, - 0x8a, 0xc5, 0x87, 0xc4, 0x8, 0xf7, 0x1, 0xcc, 0xfb, 0x6, 0x6, 0x87, - 0x9a, 0x68, 0xf7, 0x3f, 0xa3, 0x1a, 0xac, 0x96, 0xb1, 0xb8, 0xb7, 0x8b, - 0x69, 0x7f, 0x1e, 0x13, 0x3d, 0x80, 0x37, 0x89, 0xa4, 0x72, 0xad, 0x1b, - 0xbf, 0x9e, 0xad, 0xb1, 0x97, 0x8b, 0xf0, 0xfb, 0x2e, 0xfb, 0x2d, 0x5c, - 0xfb, 0xa, 0x3c, 0x65, 0x92, 0x65, 0x92, 0x65, 0x1f, 0x3b, 0x4a, 0x6, - 0x13, 0x39, 0x0, 0xed, 0x6, 0x9b, 0x5d, 0xa3, 0x51, 0x8c, 0x5c, 0x8, - 0x8f, 0x7c, 0x80, 0x8e, 0x71, 0x1b, 0x26, 0x87, 0x46, 0x70, 0x43, 0xcc, - 0x82, 0x9d, 0xd2, 0xa9, 0xb4, 0xa0, 0x9b, 0x1f, 0x63, 0xb0, 0x15, 0x13, - 0x9d, 0x80, 0x71, 0x84, 0x7e, 0x60, 0x55, 0x1b, 0x7a, 0x66, 0x94, 0xb3, - 0x99, 0x93, 0xb1, 0xb8, 0xb2, 0x9e, 0x7a, 0x7c, 0x9c, 0x1f, 0xe, 0xf7, - 0x38, 0xd4, 0xf7, 0x5b, 0xd6, 0x1, 0xd8, 0xe3, 0xf7, 0x31, 0xe3, 0x3, - 0xf7, 0x1c, 0xf7, 0xe6, 0x15, 0xca, 0xbb, 0xbf, 0xcc, 0xce, 0xbb, 0x57, - 0x4c, 0x4a, 0x5b, 0x52, 0x48, 0x4a, 0x5b, 0xc4, 0xcc, 0x1e, 0x39, 0xfb, - 0x8d, 0x15, 0xe1, 0xe3, 0x5, 0x78, 0xa7, 0xb3, 0x7c, 0xb4, 0x1b, 0xb6, - 0xb3, 0x9a, 0x9e, 0xa7, 0x1f, 0xe1, 0x33, 0xbf, 0xbf, 0x33, 0xe3, 0x5, - 0xa0, 0xa5, 0x97, 0xb3, 0xb6, 0x1a, 0xb6, 0x7d, 0xb1, 0x78, 0xa7, 0x1e, - 0xe3, 0xe3, 0x57, 0xbd, 0x35, 0x35, 0x5, 0x9e, 0x6f, 0x65, 0x95, 0x5e, - 0x1b, 0x62, 0x63, 0x81, 0x78, 0x6f, 0x1f, 0x35, 0xe1, 0x57, 0x59, 0xe3, - 0x33, 0x5, 0x78, 0x71, 0x7c, 0x63, 0x60, 0x1a, 0x60, 0x98, 0x65, 0xa0, - 0x6f, 0x1e, 0x33, 0x33, 0x5, 0xe, 0x8b, 0xae, 0xf7, 0xb, 0xbd, 0xe8, - 0xbd, 0xf7, 0xb9, 0xaf, 0x1, 0xf7, 0x4d, 0xf7, 0x16, 0xe0, 0xf7, 0x13, - 0x3, 0xde, 0x16, 0xf7, 0xdf, 0xae, 0x6, 0x4b, 0x91, 0x68, 0x8d, 0xdd, - 0x1a, 0xb2, 0xf7, 0x1b, 0xbd, 0xfb, 0x1b, 0xce, 0x7, 0x8f, 0x96, 0x5, - 0xf7, 0x17, 0xbd, 0xfb, 0x3, 0x6, 0xf7, 0x10, 0xf7, 0x99, 0x9c, 0xac, - 0xaa, 0x8d, 0x9b, 0x8d, 0x19, 0xaf, 0xfb, 0x61, 0x67, 0x7, 0xb5, 0x89, - 0xaf, 0x8a, 0x64, 0x1a, 0x21, 0xfb, 0x92, 0x5, 0x89, 0x6, 0x55, 0xf7, - 0x2, 0x51, 0xf7, 0x14, 0xa5, 0x1a, 0xa3, 0x9d, 0x93, 0xc6, 0x1e, 0xaf, - 0xfb, 0xc1, 0x67, 0x7, 0xb8, 0x89, 0xa3, 0x74, 0x99, 0x6f, 0xf7, 0x2, - 0xfb, 0x89, 0x18, 0x28, 0x59, 0xf7, 0x10, 0x6, 0x96, 0x76, 0x5, 0x52, - 0xfb, 0x1b, 0x59, 0xf7, 0x1b, 0x64, 0x7, 0x39, 0x66, 0x89, 0x4a, 0x8b, - 0x1d, 0xfc, 0x3f, 0x8d, 0x76, 0xf8, 0x5d, 0x76, 0xf7, 0xa6, 0x77, 0x1, - 0xcd, 0xe3, 0x3e, 0xce, 0x3, 0xd8, 0xf8, 0x35, 0x15, 0xcd, 0xf7, 0xa6, - 0x49, 0x6, 0xfd, 0x5a, 0x4, 0xce, 0xf7, 0xae, 0x48, 0x6, 0xe, 0xfb, - 0xf, 0xa2, 0xf7, 0x93, 0xa4, 0xf7, 0x2d, 0x77, 0xea, 0xa2, 0xf7, 0x6a, - 0x77, 0x12, 0xb3, 0xd6, 0x56, 0xd6, 0x5c, 0xf7, 0x14, 0xf7, 0x0, 0xe0, - 0x13, 0x8c, 0x80, 0xf7, 0xc5, 0xf7, 0x24, 0x15, 0xb8, 0x8c, 0xe8, 0x8e, - 0xf7, 0x6, 0xf7, 0x38, 0xfb, 0xa2, 0xdc, 0xe4, 0x1a, 0xb9, 0xa7, 0xa5, - 0xb4, 0xb9, 0xa1, 0x7d, 0x84, 0x84, 0x80, 0x82, 0x80, 0x81, 0x1e, 0x81, - 0x82, 0x81, 0x7f, 0x7c, 0x1a, 0x71, 0xa8, 0x6c, 0xac, 0x9a, 0xbb, 0x9a, - 0xbf, 0xa6, 0x67, 0xd0, 0xfb, 0x7, 0x1e, 0x13, 0xfc, 0x80, 0x3f, 0x48, - 0x59, 0x38, 0x51, 0xbb, 0x64, 0xbd, 0x5f, 0x1f, 0x89, 0x89, 0x5, 0x13, - 0xea, 0x80, 0x62, 0x8e, 0x2a, 0x87, 0xfb, 0xf, 0x1a, 0x3d, 0xb9, 0x6b, - 0xf7, 0xe, 0x24, 0x1e, 0xd8, 0x4d, 0x9c, 0x7c, 0x62, 0x1a, 0x65, 0x71, - 0x6c, 0x53, 0x51, 0x84, 0xa2, 0x91, 0x91, 0x94, 0x90, 0x94, 0x91, 0x1e, - 0x98, 0x93, 0x9a, 0x95, 0xa2, 0x1a, 0x13, 0xf9, 0x80, 0xa1, 0x75, 0xac, - 0x5f, 0x5c, 0x7c, 0x5e, 0x79, 0x46, 0xe0, 0x6a, 0xc9, 0x1e, 0x13, 0xfa, - 0x80, 0xf6, 0xc7, 0xc6, 0xd0, 0xc8, 0x61, 0xba, 0x52, 0xb1, 0x1f, 0xfb, - 0x41, 0xf7, 0x57, 0x15, 0xb8, 0xb1, 0x95, 0x9d, 0x1e, 0x13, 0x8c, 0x80, - 0xba, 0xe2, 0x33, 0x89, 0x8d, 0x1f, 0xb1, 0x64, 0x90, 0x80, 0x70, 0x1a, - 0x72, 0x7d, 0x6a, 0x62, 0x6b, 0x6c, 0xa4, 0xa3, 0x6f, 0x1e, 0x48, 0xc3, - 0x75, 0x9f, 0xb8, 0x1a, 0xe, 0xfb, 0xce, 0xf8, 0xad, 0xf7, 0x16, 0x1, - 0x89, 0x3f, 0xa, 0xe, 0xef, 0x78, 0xbf, 0xf7, 0x5, 0xa2, 0xf7, 0xb0, - 0x76, 0xe0, 0xa2, 0xf6, 0xbf, 0x1, 0xae, 0xd2, 0xf7, 0x7, 0xf1, 0xf7, - 0x4a, 0x9e, 0xf7, 0x12, 0xd2, 0x3, 0x71, 0x1d, 0xf7, 0x30, 0xf7, 0x5a, - 0xf7, 0x5b, 0xfb, 0x29, 0xf7, 0x31, 0x55, 0xa, 0xfb, 0x1f, 0xfb, 0x39, - 0xfb, 0x38, 0xfb, 0xc, 0xfb, 0x1e, 0x80, 0x1d, 0xf8, 0x40, 0x3c, 0x15, - 0x58, 0x74, 0x64, 0x63, 0x4f, 0x1b, 0x2e, 0x6a, 0xd7, 0xf4, 0x8c, 0x1f, - 0xef, 0x8c, 0xb2, 0xd6, 0xdd, 0x1b, 0xd2, 0xa6, 0x5c, 0x61, 0x95, 0x1f, - 0x9e, 0xd3, 0x6, 0x94, 0x85, 0x92, 0x7b, 0x90, 0x1e, 0x94, 0x70, 0x71, - 0x95, 0x57, 0x1b, 0xfb, 0x3b, 0x52, 0xfb, 0x5, 0x36, 0xfb, 0x1e, 0xef, - 0x49, 0xf7, 0x13, 0xba, 0xaa, 0x99, 0x8f, 0x9e, 0x1f, 0x9c, 0x92, 0x95, - 0x8e, 0x8c, 0x97, 0x9b, 0xd5, 0x18, 0xe, 0xfb, 0xef, 0xf8, 0x36, 0x76, - 0xf7, 0xa0, 0xa2, 0x12, 0x8a, 0xed, 0x36, 0xe0, 0xd6, 0xeb, 0x13, 0xd8, - 0xf7, 0x43, 0xf8, 0x4a, 0x15, 0x7b, 0x8f, 0x90, 0x72, 0xb9, 0x1b, 0xa8, - 0xa3, 0x99, 0x9f, 0x9d, 0x1f, 0x81, 0x97, 0x5, 0x7a, 0x7a, 0x85, 0x9f, - 0x8f, 0x1a, 0xf7, 0x30, 0x7, 0xc4, 0x51, 0xa4, 0x43, 0x36, 0x62, 0x67, - 0x65, 0x62, 0xaf, 0x8b, 0x92, 0xb0, 0x95, 0xa2, 0x96, 0x1e, 0x9e, 0x77, - 0x90, 0x98, 0x1a, 0x94, 0x9a, 0x97, 0xa3, 0xb8, 0x92, 0x6b, 0x6d, 0x1e, - 0x6d, 0x7, 0x13, 0xe8, 0x31, 0x74, 0x37, 0x73, 0x4d, 0x1a, 0x13, 0xa8, - 0x5a, 0xb4, 0x79, 0xab, 0x9a, 0xb9, 0x8d, 0xb2, 0xb5, 0x1e, 0x88, 0xa6, - 0x15, 0x81, 0x84, 0x7c, 0x7b, 0x75, 0x1b, 0x76, 0x81, 0xa1, 0x9d, 0xbf, - 0xcb, 0x9d, 0x96, 0x8e, 0x1f, 0xe, 0x82, 0xa, 0x1, 0xf7, 0x6f, 0xf7, - 0x92, 0x3, 0xa2, 0xf7, 0x75, 0x88, 0xa, 0x82, 0x95, 0x9b, 0x7d, 0x96, - 0x1b, 0x91, 0x90, 0x8f, 0x99, 0x77, 0x1d, 0xe1, 0xf6, 0xa8, 0x1a, 0x95, - 0x88, 0x7b, 0x1d, 0xf7, 0x58, 0x87, 0x88, 0xa, 0x82, 0x95, 0x9c, 0x7d, - 0x96, 0x1b, 0x91, 0x8f, 0x75, 0xa, 0x95, 0x86, 0x7b, 0x1d, 0xe, 0x3e, - 0xf7, 0x15, 0x76, 0xf7, 0x73, 0xcf, 0x12, 0xf8, 0x54, 0xe6, 0x44, 0xd0, - 0x13, 0xe0, 0xac, 0xf7, 0xdf, 0x15, 0x13, 0xd0, 0xf8, 0x47, 0xfb, 0x73, - 0xd0, 0xf7, 0xb7, 0xfc, 0x8c, 0x6, 0xe, 0xef, 0x78, 0xbf, 0x57, 0xf7, - 0x52, 0x7e, 0xf7, 0x51, 0x85, 0x76, 0xf7, 0xef, 0xbf, 0x12, 0xa5, 0xd2, - 0xf7, 0x3e, 0xdb, 0xe4, 0xe0, 0xf7, 0x15, 0xd2, 0x13, 0xaf, 0x80, 0x71, - 0x1d, 0xf7, 0x34, 0xf7, 0x5a, 0xf7, 0x5b, 0xfb, 0x29, 0xf7, 0x2d, 0x55, - 0xa, 0xfb, 0x1b, 0xfb, 0x39, 0xfb, 0x38, 0xfb, 0xc, 0xfb, 0x22, 0x80, - 0x1d, 0xf7, 0x2, 0xfb, 0x4a, 0x15, 0xf7, 0x40, 0x6, 0x13, 0x5f, 0x80, - 0x9d, 0x7, 0x5c, 0x8e, 0x8c, 0x8f, 0xb0, 0x1a, 0xf4, 0xb0, 0x7, 0x13, - 0xaf, 0x80, 0x3a, 0xc0, 0xc9, 0x35, 0x88, 0x1b, 0xdc, 0x96, 0x6, 0xfb, - 0x14, 0xf7, 0x3b, 0x5, 0xbb, 0x9b, 0xab, 0xb0, 0xba, 0x1a, 0xcf, 0x56, - 0xac, 0x4d, 0x1e, 0xfb, 0x55, 0x79, 0x6, 0xba, 0x89, 0x8a, 0x87, 0x65, - 0x1a, 0xfb, 0x93, 0x7, 0x13, 0x5f, 0x80, 0x66, 0x8c, 0x87, 0x5c, 0x88, - 0x1e, 0x13, 0xaf, 0x80, 0xf7, 0x12, 0xf7, 0x3f, 0x15, 0xf7, 0x3c, 0xaf, - 0x7, 0xaf, 0xa4, 0x77, 0x50, 0x5d, 0x7c, 0x60, 0x5c, 0x1f, 0xe, 0xfb, - 0xce, 0xf8, 0xc9, 0xd3, 0x1, 0x8c, 0xf8, 0xc9, 0x15, 0xf7, 0xde, 0xd3, - 0xfb, 0xde, 0x6, 0xe, 0xfb, 0x8b, 0xf8, 0x26, 0xaf, 0xf7, 0x6a, 0xaf, - 0x1, 0xbb, 0xb4, 0xf7, 0x69, 0xb4, 0x3, 0xed, 0xf8, 0xb5, 0x15, 0xc4, - 0xb8, 0xbd, 0xc4, 0xc4, 0xb8, 0x59, 0x52, 0x52, 0x5e, 0x59, 0x52, 0x52, - 0x5e, 0xbd, 0xc4, 0x1e, 0x62, 0x16, 0x3b, 0xca, 0x4c, 0xdb, 0xdb, 0xca, - 0xca, 0xdb, 0xdb, 0x4c, 0xca, 0x3b, 0x3b, 0x4c, 0x4c, 0x3b, 0x1e, 0xe, - 0x3e, 0x8b, 0xe1, 0xf7, 0x51, 0xe3, 0x3b, 0xcd, 0xf7, 0x31, 0x77, 0x12, - 0xf7, 0x85, 0xe3, 0x3e, 0xcd, 0x13, 0xd4, 0xf7, 0x90, 0xf7, 0x12, 0x15, - 0xcd, 0x6, 0x13, 0xb4, 0xf7, 0x31, 0xf7, 0x6f, 0xcd, 0xfb, 0x6f, 0xf7, - 0x31, 0x49, 0xfb, 0x31, 0xfb, 0x6f, 0x49, 0xf7, 0x6f, 0x7, 0xfb, 0x6f, - 0xfb, 0xaf, 0x15, 0xf8, 0x8c, 0x6, 0x13, 0xd8, 0xcd, 0xfc, 0x8c, 0x7, - 0xe, 0xfb, 0xef, 0xf7, 0xa7, 0xdb, 0xf7, 0x9d, 0xcf, 0x12, 0xf7, 0x4c, - 0xe3, 0x17, 0xf7, 0xa7, 0x4, 0xf7, 0xa2, 0x6, 0xa9, 0xf7, 0x13, 0x5, - 0x7b, 0x6, 0x62, 0x79, 0x85, 0x85, 0x46, 0x1b, 0x2f, 0x6, 0xf7, 0x25, - 0xed, 0xa7, 0xe7, 0xaa, 0x5a, 0x1d, 0x1f, 0x44, 0x3c, 0x3c, 0x22, 0x23, - 0x1e, 0xe, 0xfb, 0xef, 0xf7, 0xb5, 0x76, 0xf8, 0x8, 0xbb, 0x12, 0xf7, - 0x44, 0xea, 0x5a, 0xd6, 0x13, 0xd0, 0xe7, 0xf8, 0x7e, 0x40, 0xa, 0x70, - 0xb6, 0x56, 0x9d, 0x1e, 0x13, 0x60, 0xa7, 0x9a, 0x4a, 0x1d, 0xe, 0x90, - 0xa, 0xe1, 0xf8, 0xa4, 0x56, 0x1d, 0xf7, 0x1e, 0xe1, 0x5, 0xa3, 0x9a, - 0x9f, 0x97, 0xa7, 0x1a, 0xaf, 0x71, 0x93, 0x79, 0x81, 0x73, 0x89, 0x71, - 0x74, 0x1e, 0xe, 0x30, 0xfb, 0x4d, 0x76, 0xf9, 0x2f, 0x77, 0x12, 0xac, - 0xf7, 0x14, 0x2c, 0xf7, 0x1f, 0xf7, 0x17, 0xf7, 0x1f, 0x13, 0xd8, 0xf7, - 0x15, 0x9d, 0x15, 0x8d, 0x8d, 0x5, 0x77, 0xa3, 0xab, 0x7e, 0xb9, 0x1b, - 0xb2, 0xaa, 0x9d, 0xad, 0xa5, 0x1f, 0x64, 0xa0, 0xb1, 0x7e, 0xb6, 0x1b, - 0xbd, 0xa2, 0x9f, 0xa8, 0xab, 0x1f, 0xa3, 0x7, 0x82, 0x86, 0x83, 0x89, - 0x83, 0x8c, 0x8, 0x7c, 0x8d, 0x76, 0x99, 0xaa, 0x1a, 0xf7, 0xfc, 0xfb, - 0x1f, 0xfb, 0xfb, 0x7, 0x7d, 0x77, 0x6a, 0x7e, 0x78, 0x1b, 0x6f, 0x6c, - 0x9f, 0xc1, 0x1f, 0xf7, 0xcc, 0xfb, 0x1f, 0xfc, 0x9, 0x7, 0x56, 0x85, - 0x62, 0x83, 0x6a, 0x1e, 0x13, 0xe8, 0x82, 0x64, 0x81, 0x70, 0x74, 0x1a, - 0x5d, 0x9e, 0x6b, 0xbc, 0xb4, 0x9e, 0xab, 0xb9, 0xa8, 0x7f, 0xa7, 0x82, - 0xab, 0x1e, 0x86, 0x9d, 0x87, 0x9e, 0x89, 0x9f, 0x8, 0xe, 0x20, 0xfb, - 0x54, 0x76, 0xf9, 0xd9, 0xb1, 0x75, 0xa1, 0x12, 0xf7, 0x9a, 0xbc, 0xe3, - 0xbc, 0x13, 0xd8, 0xf7, 0x98, 0xfb, 0x69, 0x15, 0xbc, 0xf9, 0xd9, 0xed, - 0xfd, 0xd9, 0x6, 0x13, 0xb8, 0xbc, 0xf9, 0x7a, 0x6, 0xe1, 0x97, 0xa4, - 0xd3, 0x1e, 0xa1, 0xfb, 0xb2, 0x7, 0xfb, 0x6, 0xfb, 0x20, 0x67, 0xfb, - 0x4e, 0xfb, 0x33, 0xf7, 0x6, 0x44, 0xf7, 0x26, 0x1f, 0xe, 0xfc, 0x21, - 0xf7, 0x8c, 0x93, 0xa, 0xf7, 0xe0, 0x62, 0x1d, 0xfb, 0xce, 0xfb, 0x59, - 0x76, 0xf7, 0x6e, 0x77, 0x12, 0xf7, 0x5d, 0xe8, 0x17, 0xf7, 0x33, 0x16, - 0x60, 0x2b, 0x4f, 0x1d, 0x13, 0x60, 0xb1, 0xf7, 0x5, 0x8c, 0xdc, 0xc8, - 0x4b, 0xa7, 0x52, 0x7a, 0x1f, 0xa7, 0xcb, 0x5, 0xe, 0xfb, 0xef, 0xf7, - 0xa7, 0xa9, 0xbd, 0xa9, 0xf7, 0xc3, 0x77, 0x1, 0xf6, 0xeb, 0x3, 0xa9, - 0xf7, 0xf7, 0x15, 0xf7, 0x87, 0xa9, 0x6, 0x4b, 0x85, 0x9b, 0xb3, 0x1f, - 0xf7, 0x8b, 0x46, 0xa, 0xfb, 0x17, 0x7, 0x65, 0x89, 0x74, 0x40, 0x8c, - 0x1e, 0xe, 0xfb, 0xd1, 0xf8, 0x21, 0x9f, 0xf7, 0x8e, 0xa0, 0x1, 0x9d, - 0xec, 0xee, 0xed, 0x3, 0xf7, 0x7, 0xf8, 0xb2, 0x15, 0xe7, 0x97, 0xac, - 0xb1, 0xb1, 0x96, 0x6a, 0x2f, 0x3e, 0x86, 0x5b, 0x5f, 0x5f, 0x85, 0xbb, - 0xd8, 0x1e, 0x2a, 0x16, 0x3b, 0xc5, 0x4a, 0xe4, 0xe4, 0xc5, 0xcc, 0xdb, - 0xde, 0x4e, 0xca, 0x35, 0x35, 0x4e, 0x4c, 0x38, 0x1e, 0xe, 0x82, 0xa, - 0x12, 0xf7, 0x25, 0xf7, 0x1c, 0x17, 0xf7, 0x25, 0x91, 0xa, 0x81, 0x91, - 0x87, 0x91, 0x97, 0x9f, 0x9b, 0x91, 0x92, 0x4c, 0xa, 0xf7, 0x58, 0x16, - 0x6d, 0x65, 0x35, 0x20, 0x6e, 0x1a, 0x80, 0x8f, 0x88, 0x91, 0x96, 0x9d, - 0x99, 0x93, 0x95, 0x4c, 0xa, 0xe, 0xf2, 0x94, 0x76, 0xac, 0x76, 0xe2, - 0xcd, 0xf7, 0xe, 0xa9, 0xb4, 0x76, 0xf7, 0x1, 0x76, 0xf7, 0xa7, 0x77, - 0x12, 0xf6, 0xeb, 0xf8, 0x2a, 0xe8, 0x13, 0x7f, 0x80, 0xf8, 0x53, 0xe2, - 0x74, 0x1d, 0x37, 0x23, 0x50, 0x38, 0x73, 0xa, 0x13, 0xbf, 0x80, 0xfb, - 0xc0, 0xfb, 0x39, 0x69, 0xa, 0xfc, 0xdf, 0x3e, 0x1d, 0xe, 0xf2, 0x8b, - 0xdb, 0x44, 0x76, 0xf7, 0xb3, 0xa9, 0xb3, 0xcf, 0xf7, 0xa7, 0x77, 0x12, - 0xd3, 0xeb, 0xf8, 0x7f, 0xe3, 0x13, 0x7e, 0xf7, 0x18, 0x7f, 0x69, 0xa, - 0xfc, 0xd8, 0x3e, 0x1d, 0x13, 0xbe, 0xf8, 0x76, 0xfb, 0xc5, 0x15, 0xf7, - 0xa2, 0x6, 0xa9, 0xf7, 0x13, 0x5, 0x71, 0x6, 0x62, 0x79, 0x85, 0x85, - 0x46, 0x1b, 0x3f, 0x90, 0x6, 0xe8, 0xe2, 0x5, 0xd5, 0xcd, 0x8b, 0xb8, - 0x9d, 0x5a, 0x1d, 0x44, 0x3c, 0x3c, 0x22, 0x23, 0x1f, 0xe, 0xf2, 0x94, - 0x76, 0xee, 0xcd, 0xf8, 0x7b, 0xbb, 0x12, 0xf7, 0x58, 0xea, 0x5a, 0xd6, - 0xf7, 0xae, 0xe8, 0x13, 0xec, 0xf7, 0x40, 0x7f, 0x69, 0xa, 0xfc, 0x89, - 0xfb, 0x5a, 0x40, 0xa, 0x6f, 0xb6, 0x5b, 0x9b, 0x1e, 0x8f, 0x7, 0x13, - 0xf4, 0xa3, 0x98, 0x4a, 0x1d, 0xf7, 0xd9, 0xfc, 0x31, 0x74, 0x1d, 0x35, - 0x26, 0x52, 0x35, 0x73, 0xa, 0xe, 0xfb, 0x5d, 0xaf, 0xf8, 0x88, 0xf7, - 0x3a, 0x12, 0xc2, 0xf7, 0x29, 0x70, 0xf7, 0x3d, 0x69, 0xf7, 0x17, 0x13, - 0xe8, 0x13, 0xd0, 0xf7, 0x8b, 0xf7, 0x95, 0x15, 0x99, 0x3e, 0x59, 0x6a, - 0x56, 0x68, 0x8, 0x58, 0x6a, 0x57, 0x68, 0x40, 0x1a, 0xfb, 0x33, 0xf7, - 0x37, 0x80, 0xaa, 0xf7, 0x38, 0xa9, 0xf1, 0xb4, 0xae, 0x78, 0xb5, 0x58, - 0x77, 0x62, 0x7f, 0x57, 0x70, 0x96, 0x7f, 0x95, 0x80, 0x1e, 0x93, 0x82, - 0x93, 0x83, 0x7e, 0x1a, 0x66, 0x59, 0x88, 0x82, 0x3d, 0x83, 0xe4, 0xb5, - 0xcf, 0xa1, 0xb5, 0x9f, 0xb1, 0x1e, 0xa2, 0xb6, 0xa4, 0xae, 0x7a, 0xcc, - 0x8, 0x13, 0xe8, 0x27, 0xf7, 0x37, 0x15, 0x5d, 0xb1, 0x64, 0xb9, 0xbb, - 0xb0, 0xb3, 0xb8, 0xba, 0x66, 0xad, 0x5b, 0x5d, 0x65, 0x6a, 0x5b, 0x1e, - 0xe, 0x4b, 0x1d, 0xf7, 0x91, 0x77, 0x1, 0xf8, 0xe, 0xf9, 0x76, 0x24, - 0x1d, 0xfb, 0x77, 0xfd, 0xce, 0x20, 0x1d, 0x4b, 0x1d, 0xf7, 0x91, 0x77, - 0x1, 0xf7, 0xa6, 0xf9, 0x76, 0x22, 0x1d, 0xfc, 0x26, 0xfe, 0x13, 0x20, - 0x1d, 0x4b, 0x1d, 0xf7, 0x88, 0x77, 0x1, 0xf7, 0x4e, 0xf9, 0x76, 0x29, - 0x1d, 0xfb, 0xbf, 0xfe, 0x26, 0x20, 0x1d, 0x54, 0xa, 0xf8, 0x9d, 0xd9, - 0x80, 0xd9, 0x12, 0x13, 0xd0, 0xf7, 0x40, 0xf9, 0x8b, 0x45, 0x1d, 0xa1, - 0xa5, 0x81, 0x80, 0xa3, 0x1f, 0x13, 0xe0, 0x7e, 0xa9, 0xa8, 0x7c, 0xa1, - 0x1b, 0x13, 0xd0, 0x44, 0xa, 0x13, 0xe0, 0x54, 0x1d, 0x6b, 0x77, 0x96, - 0x96, 0x77, 0x1f, 0x13, 0xd0, 0x98, 0x74, 0x75, 0x99, 0x69, 0x50, 0x1d, - 0xfb, 0x37, 0xfd, 0x8b, 0x20, 0x1d, 0x4b, 0x1d, 0xd8, 0xf7, 0x16, 0x1, - 0xf7, 0x4e, 0xf7, 0x13, 0x8b, 0xde, 0x8b, 0xf7, 0x13, 0x14, 0xe, 0xf7, - 0x4e, 0xf9, 0xc0, 0x15, 0x6e, 0x1d, 0xf7, 0x66, 0x16, 0x6e, 0x1d, 0xfc, - 0x17, 0xfd, 0xc0, 0x20, 0x1d, 0x54, 0xa, 0xf8, 0x5f, 0x77, 0xba, 0xbb, - 0xf7, 0x15, 0xbb, 0x1, 0xf7, 0x84, 0xbb, 0x8b, 0xf7, 0x9, 0x8b, 0xbb, - 0x14, 0x7, 0xf7, 0x84, 0xf9, 0xd0, 0x15, 0x4f, 0xbc, 0x5d, 0xc5, 0x7d, - 0x1d, 0x1e, 0xbb, 0x16, 0xac, 0xa4, 0xa5, 0xac, 0xac, 0xa5, 0x71, 0x6a, - 0x6a, 0x71, 0x72, 0x6a, 0x6a, 0x72, 0xa4, 0xac, 0x1e, 0xfb, 0xab, 0xfd, - 0xd0, 0x20, 0x1d, 0xf7, 0xf5, 0x8b, 0xae, 0x68, 0xb7, 0xf7, 0x97, 0xb3, - 0x7f, 0xab, 0xf7, 0xa0, 0xb8, 0x12, 0xf8, 0x44, 0xf7, 0x34, 0x13, 0xac, - 0x8f, 0x16, 0xf7, 0x62, 0xae, 0x6, 0x59, 0x91, 0x66, 0x8f, 0xac, 0x1a, - 0xf7, 0xb, 0xf7, 0x75, 0x5, 0xf7, 0x52, 0xfb, 0x60, 0x6, 0x64, 0x7d, - 0x75, 0x41, 0x88, 0x1e, 0x68, 0xf8, 0xca, 0x7, 0xb4, 0xf7, 0x67, 0x5, - 0x74, 0x6, 0x7e, 0x60, 0x44, 0x6b, 0x6c, 0x1e, 0x13, 0x5c, 0x61, 0x5e, - 0x62, 0x81, 0x21, 0x1b, 0x4f, 0x82, 0x9e, 0xae, 0x1f, 0xf7, 0x7d, 0x7, - 0xf7, 0x16, 0x86, 0x8a, 0x56, 0x9b, 0x28, 0x8, 0xac, 0xf7, 0xe6, 0x6a, - 0x6, 0x6f, 0xfb, 0x14, 0x8b, 0x81, 0xfb, 0x9, 0x80, 0x8, 0xf7, 0x82, - 0x7, 0x9e, 0x8b, 0x96, 0xdd, 0xf7, 0x44, 0x90, 0x49, 0x31, 0x9e, 0x1e, - 0xae, 0xf7, 0x5d, 0xfd, 0xe, 0x6b, 0x6, 0xbf, 0x89, 0xae, 0x85, 0x6c, - 0x1a, 0xfb, 0xbc, 0xfc, 0xac, 0x5, 0x13, 0xac, 0x78, 0x68, 0x84, 0x93, - 0x67, 0x84, 0x8, 0xf7, 0x98, 0xf7, 0xc8, 0x15, 0xf7, 0x35, 0xf7, 0xac, - 0x5, 0x92, 0xfb, 0xac, 0x6, 0xe, 0xd6, 0xfb, 0x59, 0x76, 0xf7, 0x33, - 0xb5, 0x8b, 0xb9, 0x7d, 0xa, 0xf7, 0x57, 0xe8, 0x13, 0xfb, 0xf7, 0xc4, - 0xfb, 0x37, 0x15, 0x7b, 0x66, 0x5, 0x7b, 0xb4, 0xb1, 0x89, 0x97, 0x1b, - 0xb1, 0xec, 0x93, 0xdc, 0xbc, 0x64, 0xa0, 0x58, 0x7e, 0x83, 0x89, 0x88, - 0x81, 0x1f, 0x9f, 0xb8, 0xf7, 0x11, 0x8c, 0xd8, 0xca, 0xd3, 0xdd, 0x19, - 0x6d, 0xa4, 0x5, 0x2e, 0x38, 0x40, 0x6d, 0x3d, 0x1b, 0xfb, 0x2a, 0x5e, - 0xf7, 0x45, 0xf7, 0x12, 0xf7, 0x3d, 0xaa, 0xf7, 0x31, 0xf7, 0x26, 0xf7, - 0x6, 0xdd, 0xfb, 0x9, 0x34, 0xae, 0x1f, 0xae, 0x6, 0x13, 0xf7, 0x6a, - 0x1d, 0x7b, 0x6c, 0x9d, 0x99, 0x61, 0x1f, 0x13, 0xfb, 0x94, 0x70, 0x6b, - 0x93, 0x68, 0x1b, 0xfb, 0x66, 0xfb, 0x24, 0xfb, 0x30, 0xfb, 0x5f, 0xfb, - 0x44, 0xf7, 0x4, 0xfb, 0x30, 0xf7, 0x66, 0x7a, 0x1f, 0x68, 0x3c, 0x96, - 0x83, 0x5, 0x8d, 0x93, 0x92, 0x8d, 0x98, 0x1b, 0xa5, 0x9f, 0x80, 0x72, - 0x73, 0x1d, 0x1f, 0xe, 0x55, 0x1d, 0x9b, 0x16, 0x21, 0x1d, 0xf7, 0xf0, - 0xf9, 0x53, 0x26, 0xa, 0x55, 0x1d, 0xf7, 0x98, 0xf9, 0x76, 0x22, 0x1d, - 0xfc, 0x11, 0xfe, 0x13, 0x15, 0x21, 0x1d, 0xe, 0x51, 0xa, 0xf7, 0x82, - 0x72, 0xa, 0xf7, 0x40, 0xf9, 0x76, 0x29, 0x1d, 0xfb, 0xaa, 0xfe, 0x26, - 0x15, 0x21, 0x1d, 0xe, 0x9f, 0x8b, 0xaa, 0xf7, 0xbe, 0xad, 0xf7, 0xab, - 0xad, 0xd2, 0x9a, 0x1d, 0xf3, 0xf7, 0x36, 0x2c, 0xf7, 0x16, 0xda, 0xf7, - 0x16, 0x2f, 0xaf, 0x13, 0xf9, 0x9b, 0x16, 0x21, 0x1d, 0x13, 0xf6, 0xf7, - 0x2f, 0xf9, 0x9d, 0x15, 0x2a, 0x1d, 0xf7, 0x65, 0x38, 0x1d, 0x35, 0x1d, - 0xf7, 0x5a, 0xf9, 0x53, 0x26, 0xa, 0x35, 0x1d, 0xe9, 0xf9, 0x53, 0x28, - 0x1d, 0x5c, 0xa, 0xf7, 0x82, 0x77, 0x27, 0xa, 0x91, 0xf9, 0x53, 0x29, - 0x1d, 0xe, 0x5c, 0xa, 0xd2, 0x9a, 0x1d, 0x9f, 0xf7, 0x1a, 0x62, 0xf7, - 0x36, 0x62, 0xf7, 0x16, 0x13, 0xf4, 0x9f, 0x16, 0xf7, 0xf2, 0xae, 0x6, - 0x13, 0xe8, 0x34, 0x1d, 0x7, 0x13, 0xf4, 0xfb, 0xf2, 0x68, 0x6, 0x13, - 0xe8, 0x4b, 0xa, 0x13, 0xf4, 0x4d, 0x64, 0x87, 0x55, 0x86, 0x1e, 0x8f, - 0xf9, 0x9d, 0x40, 0x1d, 0x8a, 0x1d, 0xf7, 0xb7, 0xba, 0xf7, 0xa1, 0xad, - 0x1, 0xec, 0xf7, 0x36, 0xf7, 0x95, 0xf7, 0x42, 0x3, 0xf7, 0x97, 0xf7, - 0xda, 0x15, 0xf7, 0x6, 0xba, 0xfb, 0x6, 0xf7, 0x67, 0x6, 0x8c, 0x1d, - 0xfb, 0x69, 0x30, 0x84, 0xa, 0x1f, 0xfb, 0x89, 0x30, 0x15, 0xf7, 0xd0, - 0x6, 0xf7, 0x90, 0xf7, 0x0, 0xf7, 0x2e, 0xf7, 0x4c, 0xf7, 0x2e, 0x30, - 0xf7, 0x4c, 0x95, 0x1d, 0xb7, 0x8f, 0x4e, 0x1f, 0xfb, 0x67, 0x30, 0x5c, - 0xe6, 0xfb, 0x7f, 0x7, 0x66, 0x77, 0x78, 0x4c, 0x1e, 0xe, 0xd6, 0x8e, - 0x76, 0xf9, 0x27, 0xae, 0xdc, 0xd9, 0x12, 0xf2, 0xb7, 0xf8, 0x44, 0xb7, - 0x17, 0x72, 0x1d, 0x37, 0xa, 0xf7, 0x37, 0xf9, 0x68, 0x45, 0x1d, 0x13, - 0x30, 0xa8, 0xa2, 0x81, 0x80, 0xa0, 0x1f, 0x7e, 0xa4, 0xa3, 0x7c, 0xaa, - 0x1b, 0x42, 0xa, 0x13, 0x10, 0x74, 0x76, 0x98, 0x98, 0x72, 0x1f, 0x97, - 0x74, 0x71, 0x96, 0x6a, 0x50, 0x1d, 0xe, 0x51, 0x1d, 0xf7, 0x7c, 0x77, - 0x57, 0x1d, 0xfb, 0x48, 0x78, 0xa, 0xfb, 0x7b, 0x58, 0x1d, 0xf7, 0x21, - 0x5e, 0xa, 0xf7, 0x21, 0x5e, 0x1d, 0xfb, 0x18, 0xfb, 0x6e, 0x1e, 0xf8, - 0xe, 0xf8, 0x21, 0x26, 0xa, 0x51, 0x1d, 0xf7, 0x7c, 0x77, 0x1, 0xae, - 0xf7, 0x45, 0xf7, 0xf6, 0x30, 0xa, 0xf7, 0xa6, 0xf8, 0x26, 0x28, 0x1d, - 0x51, 0x1d, 0x57, 0x1d, 0xfb, 0x49, 0x78, 0xa, 0xfb, 0x7a, 0x58, 0x1d, - 0xf7, 0x20, 0x5e, 0xa, 0xf7, 0x22, 0x5e, 0x1d, 0xfb, 0x18, 0xfb, 0x6e, - 0x1e, 0xf7, 0x4e, 0xf8, 0x21, 0x29, 0x1d, 0xe, 0x51, 0x1d, 0xcd, 0xd9, - 0x6e, 0xd9, 0x12, 0x5c, 0x1d, 0x13, 0xdc, 0xf7, 0x68, 0xf7, 0xea, 0x79, - 0x1d, 0xf7, 0x3e, 0x66, 0x1d, 0xfb, 0x49, 0x78, 0xa, 0xfb, 0x7a, 0x65, - 0x1d, 0xf7, 0x85, 0x45, 0xa, 0xfb, 0x2b, 0x5f, 0x1d, 0xf7, 0x20, 0x5e, - 0xa, 0xf7, 0x22, 0xfb, 0x55, 0x96, 0xa, 0x1e, 0xf7, 0x3a, 0xf8, 0x35, - 0x45, 0x1d, 0xa9, 0xa1, 0x80, 0x80, 0xa1, 0x1f, 0x13, 0xec, 0x7e, 0xa4, - 0xa2, 0x7d, 0xaa, 0x1b, 0x13, 0xdc, 0x44, 0xa, 0x13, 0xec, 0x54, 0x1d, - 0x75, 0x76, 0x98, 0x97, 0x73, 0x1f, 0x13, 0xdc, 0x97, 0x74, 0x70, 0x97, - 0x69, 0x50, 0x1d, 0xe, 0x51, 0x1d, 0xc3, 0xf7, 0x16, 0x1, 0xae, 0xf7, - 0x45, 0x94, 0xf7, 0x14, 0xdc, 0xf7, 0x14, 0x93, 0x30, 0xa, 0xf7, 0x4e, - 0xf8, 0x70, 0x15, 0x6d, 0xa, 0xf7, 0x65, 0x16, 0x6d, 0xa, 0xe, 0x3e, - 0xb0, 0x76, 0xf8, 0x6e, 0x77, 0x1, 0xbb, 0xca, 0x15, 0xb8, 0x5c, 0xf7, - 0x54, 0xf7, 0x56, 0xf7, 0x54, 0xfb, 0x56, 0xb8, 0xbb, 0xfb, 0x54, 0xf7, - 0x51, 0xf7, 0x54, 0xf7, 0x55, 0x5b, 0xb7, 0xfb, 0x51, 0xfb, 0x52, 0xfb, - 0x51, 0xf7, 0x52, 0x5b, 0x5e, 0xf7, 0x53, 0xfb, 0x54, 0x5, 0xe, 0xf7, - 0x17, 0x56, 0x76, 0xc2, 0xac, 0x93, 0x1d, 0xb9, 0x77, 0x5a, 0xa, 0xdc, - 0x41, 0x15, 0xbd, 0x6, 0xd2, 0xf3, 0x5, 0x6b, 0xc0, 0xca, 0x7a, 0xd2, - 0x1b, 0xf7, 0x61, 0xf7, 0x29, 0xf7, 0x1f, 0xf7, 0x66, 0xf7, 0x12, 0x55, - 0xf4, 0x39, 0xc8, 0x1f, 0xd9, 0xf7, 0x7, 0x5, 0x59, 0x6, 0x4c, 0x2e, - 0x5, 0xaa, 0x56, 0x4c, 0x9b, 0x48, 0x1b, 0x96, 0xa, 0xfb, 0xd, 0xbd, - 0x21, 0xdd, 0x4c, 0x1f, 0xce, 0xee, 0x15, 0x76, 0xcf, 0x8a, 0xdc, 0xb5, - 0x1a, 0xf7, 0x26, 0xb0, 0xf7, 0x3e, 0xf7, 0x20, 0xca, 0xb4, 0x68, 0x55, - 0xa6, 0x1e, 0xfb, 0x9f, 0xfc, 0x65, 0x15, 0xf7, 0xb3, 0xf8, 0x38, 0x5, - 0x9e, 0x53, 0x92, 0x40, 0x4c, 0x1a, 0x34, 0x85, 0xfb, 0x79, 0xfb, 0x3f, - 0x46, 0x61, 0xb1, 0xbf, 0x72, 0x1e, 0xe, 0x6b, 0xa, 0xf7, 0x8b, 0x77, - 0x63, 0xa, 0x9b, 0xf9, 0x15, 0x21, 0xa, 0xf8, 0x20, 0xc9, 0x26, 0xa, - 0x6b, 0xa, 0xf7, 0x8b, 0x77, 0x63, 0xa, 0xf7, 0xc8, 0xf9, 0x76, 0x22, - 0x1d, 0xfc, 0x41, 0xfb, 0x92, 0x21, 0xa, 0xe, 0x6b, 0xa, 0xf7, 0x82, - 0x77, 0x63, 0xa, 0xf7, 0x70, 0xf9, 0x76, 0x29, 0x1d, 0xfb, 0xda, 0xfb, - 0xa5, 0x21, 0xa, 0xe, 0x6b, 0xa, 0xd2, 0x9a, 0x1d, 0xed, 0xf7, 0x33, - 0x64, 0xf7, 0x16, 0xc8, 0xf7, 0x16, 0x9c, 0xb7, 0x13, 0xf6, 0x9b, 0xf9, - 0x15, 0x21, 0xa, 0x13, 0xee, 0xf7, 0x5e, 0xf7, 0x1c, 0x15, 0x2a, 0x1d, - 0xf7, 0x67, 0x38, 0x1d, 0xd6, 0x4e, 0x1d, 0xf7, 0x90, 0x77, 0x1, 0xf7, - 0xaa, 0x7f, 0x1d, 0x69, 0x1d, 0x83, 0xde, 0x1a, 0xf7, 0x4c, 0x66, 0xa, - 0xb8, 0x89, 0x64, 0x1a, 0xfb, 0x32, 0xfb, 0xa0, 0x5, 0xfb, 0x14, 0xf7, - 0x82, 0x7b, 0xa4, 0x3d, 0x1d, 0xfb, 0x27, 0x7, 0x38, 0x73, 0x93, 0x46, - 0x84, 0x1e, 0xf7, 0x3, 0xf9, 0x58, 0x28, 0x1d, 0x67, 0x8f, 0x76, 0xb1, - 0x76, 0xf7, 0x41, 0xae, 0x7d, 0xae, 0xf7, 0xa6, 0xae, 0x68, 0xf7, 0x41, - 0xfb, 0x3d, 0xf7, 0x39, 0x8f, 0x77, 0x12, 0xef, 0xf7, 0x36, 0xfb, 0x26, - 0xf7, 0x36, 0xf7, 0x29, 0xf7, 0x40, 0xfb, 0x3f, 0xf7, 0x40, 0x13, 0xa2, - 0xa0, 0xf7, 0x9a, 0xf7, 0x64, 0x15, 0xf7, 0x98, 0x7, 0x13, 0x99, 0x60, - 0xa1, 0x8c, 0x98, 0x98, 0xad, 0x1b, 0x13, 0x92, 0x50, 0xdd, 0xaf, 0x6d, - 0xfb, 0x6, 0x1f, 0x13, 0xa2, 0xa0, 0xfb, 0x10, 0x5e, 0x70, 0xfb, 0xd, - 0x1e, 0x13, 0x52, 0x60, 0xfb, 0x8a, 0xfb, 0x64, 0x15, 0xf7, 0xe2, 0xae, - 0x6, 0x13, 0x92, 0xa0, 0x46, 0x94, 0x78, 0x83, 0xdc, 0x1a, 0x13, 0xa2, - 0xa0, 0xc3, 0x7, 0x13, 0x92, 0x50, 0xf7, 0x3c, 0x8a, 0xf7, 0x3e, 0xb8, - 0xf7, 0x25, 0x1a, 0x13, 0x99, 0x60, 0xdf, 0x60, 0xe7, 0xfb, 0x79, 0x1e, - 0x13, 0x99, 0xa0, 0x49, 0x97, 0x6, 0xdc, 0x9e, 0x8b, 0xd0, 0x95, 0x1e, - 0x13, 0x94, 0x60, 0xae, 0xfb, 0xe2, 0x68, 0x7, 0x13, 0x92, 0xa0, 0xc0, - 0x86, 0xaa, 0x8a, 0x37, 0x1a, 0xfc, 0x46, 0x7, 0x31, 0x70, 0x9e, 0x52, - 0x80, 0x1e, 0xe, 0x30, 0x7f, 0xae, 0x6e, 0xf7, 0x12, 0x28, 0x76, 0xf8, - 0x9, 0xad, 0xf7, 0x94, 0xa7, 0x12, 0xd1, 0xf7, 0x1f, 0xf7, 0x16, 0xf7, - 0x1d, 0x22, 0xf7, 0x26, 0x13, 0x9e, 0x9e, 0x16, 0xad, 0x7, 0x13, 0x5d, - 0xb0, 0x91, 0x99, 0x91, 0xbe, 0x1a, 0xf8, 0x2e, 0x7, 0xf4, 0xdd, 0xda, - 0xf7, 0x8, 0xf7, 0x31, 0xbe, 0x2a, 0x55, 0x3b, 0x4b, 0x5a, 0x32, 0x7a, - 0x1e, 0x89, 0x7, 0xf7, 0x1a, 0x68, 0xc7, 0x53, 0xfb, 0x3, 0x1a, 0x36, - 0x5b, 0x51, 0x57, 0x68, 0x1e, 0x13, 0x9e, 0x7f, 0x83, 0x7d, 0x84, 0x7d, - 0x8a, 0x6e, 0x89, 0x18, 0x6e, 0x6e, 0x94, 0x9e, 0x79, 0x1f, 0x13, 0x3e, - 0x7f, 0x98, 0x83, 0x9b, 0xa0, 0x1a, 0xa8, 0x9f, 0x9e, 0xa7, 0xad, 0x97, - 0x72, 0x75, 0x1e, 0x7f, 0x88, 0x85, 0x81, 0x1a, 0x7d, 0x96, 0x88, 0x97, - 0x1e, 0xa4, 0x90, 0x88, 0xa4, 0x7e, 0xbb, 0x8, 0x85, 0xa3, 0x8d, 0xa7, - 0xab, 0x1a, 0xf7, 0x2e, 0x67, 0xa5, 0x49, 0x8e, 0x1e, 0xad, 0x7, 0x13, - 0x9d, 0xd6, 0x91, 0x86, 0xb6, 0xdf, 0x1a, 0xed, 0x6d, 0xa4, 0x62, 0x55, - 0x87, 0x57, 0x72, 0x8a, 0x1e, 0x13, 0x5e, 0xfc, 0xde, 0x7, 0xe, 0x92, - 0x50, 0xa, 0x52, 0x1d, 0x13, 0xd8, 0xf7, 0xba, 0xc3, 0x2a, 0xa, 0x84, - 0x93, 0x86, 0x92, 0x94, 0x1a, 0x13, 0xb8, 0x3b, 0x1d, 0x71, 0xf7, 0xaf, - 0x26, 0xa, 0x92, 0x50, 0xa, 0xd7, 0x76, 0xf7, 0x4d, 0x77, 0x52, 0x1d, - 0x13, 0xde, 0xf7, 0x37, 0xf8, 0xa4, 0x22, 0x1d, 0x85, 0xfd, 0x9, 0x37, - 0x1d, 0x13, 0xbe, 0x3b, 0x1d, 0xe, 0x92, 0x50, 0xa, 0xf7, 0x7b, 0x77, - 0x52, 0x1d, 0x13, 0xdc, 0xd6, 0xf8, 0xa4, 0x29, 0x1d, 0xec, 0xfd, 0x1c, - 0x23, 0x1d, 0xa2, 0x81, 0x97, 0x82, 0x96, 0x1e, 0x85, 0x92, 0x86, 0x91, - 0x36, 0x1d, 0x92, 0x50, 0xa, 0xd5, 0xd9, 0x6e, 0xd9, 0x52, 0x1d, 0x13, - 0xce, 0xc8, 0xf8, 0xb9, 0x45, 0x1d, 0xa7, 0xa2, 0x82, 0x80, 0xa1, 0x1f, - 0x13, 0xd6, 0x7d, 0xa7, 0xa5, 0x7c, 0xa5, 0x1b, 0x13, 0xce, 0x44, 0xa, - 0x13, 0xd6, 0x54, 0x1d, 0x71, 0x73, 0x96, 0x97, 0x73, 0x1f, 0x13, 0xce, - 0x98, 0x71, 0x72, 0x98, 0x71, 0x50, 0x1d, 0xf7, 0x7d, 0xfc, 0x81, 0x23, - 0x1d, 0xa2, 0x81, 0x98, 0x82, 0x95, 0x1e, 0x85, 0x92, 0x86, 0x91, 0x94, - 0x1a, 0x13, 0xb6, 0x3b, 0xa, 0x13, 0x86, 0x24, 0xa, 0xe, 0x92, 0x50, - 0xa, 0xcb, 0xf7, 0x16, 0x52, 0x1d, 0x13, 0xdc, 0xd6, 0x3f, 0xa, 0x94, - 0xfc, 0xb6, 0x23, 0x1d, 0xa2, 0x80, 0x97, 0x83, 0x95, 0x1e, 0x85, 0x92, - 0x86, 0x92, 0x36, 0x1d, 0x92, 0x76, 0xf7, 0xbb, 0xf7, 0x54, 0xc1, 0xbb, - 0x5b, 0xf7, 0x38, 0xfb, 0x8, 0xf7, 0x8, 0x8b, 0xbc, 0x12, 0xa4, 0xf7, - 0x26, 0x69, 0xf7, 0x38, 0xfb, 0x8, 0xf7, 0x39, 0x13, 0xd5, 0x0, 0xf7, - 0x1d, 0x94, 0xa, 0x13, 0xee, 0x80, 0x7d, 0x1d, 0x1f, 0xf7, 0x31, 0xfc, - 0xd5, 0x37, 0x1d, 0x3b, 0x1d, 0xfb, 0x0, 0xf8, 0x18, 0x15, 0xab, 0xa5, - 0xa5, 0xab, 0xab, 0xa5, 0x71, 0x6b, 0x6b, 0x71, 0x71, 0x6b, 0x6b, 0x71, - 0xa5, 0xab, 0x1e, 0xe, 0xd6, 0x7d, 0xca, 0x4c, 0xd1, 0xf7, 0x54, 0xb0, - 0x8a, 0xf7, 0x51, 0x6b, 0xab, 0x12, 0xac, 0xf7, 0x29, 0xfb, 0x18, 0xf7, - 0x18, 0xf7, 0x6, 0xf7, 0x1e, 0xf7, 0x1d, 0xf7, 0xd, 0x13, 0x6d, 0x80, - 0xf7, 0xe5, 0xd6, 0x15, 0x37, 0xba, 0xcf, 0x86, 0xb0, 0x1b, 0xde, 0xce, - 0xb1, 0xe4, 0xc1, 0x1f, 0x76, 0x9a, 0x5, 0x72, 0x77, 0x69, 0x5c, 0x42, - 0x1b, 0xfb, 0x3, 0x8b, 0xf7, 0xf, 0xb9, 0x1f, 0xa2, 0xf7, 0x96, 0x7, - 0x13, 0x93, 0x80, 0xf7, 0x41, 0x8c, 0xfb, 0x1, 0xbf, 0x39, 0x1b, 0x4b, - 0x65, 0x73, 0x70, 0x71, 0x1f, 0xa0, 0x76, 0x66, 0xa9, 0x29, 0x1b, 0x27, - 0x47, 0x52, 0x47, 0x5f, 0xae, 0x77, 0xa8, 0xb8, 0xa2, 0x9d, 0xb3, 0xa1, - 0x83, 0x95, 0x84, 0x93, 0x1f, 0x84, 0x92, 0x84, 0x91, 0x97, 0x1a, 0x13, - 0xad, 0x80, 0xa1, 0xaf, 0x97, 0xa8, 0xdb, 0x89, 0x57, 0x6e, 0x1e, 0x3b, - 0x7, 0xfb, 0x45, 0x52, 0x35, 0x6f, 0x23, 0x1a, 0x46, 0xb6, 0x67, 0xd7, - 0xe1, 0xc6, 0xbc, 0xad, 0xad, 0x1e, 0x68, 0x97, 0x15, 0x6c, 0x6e, 0x79, - 0x8a, 0x78, 0x1b, 0x5e, 0x83, 0xb7, 0xa7, 0xdb, 0xcb, 0xa7, 0xc2, 0x9e, - 0x1f, 0xf7, 0x1e, 0xb0, 0x15, 0xcb, 0x8b, 0xe9, 0xcf, 0xbf, 0x9c, 0x67, - 0x32, 0x1e, 0x6a, 0x7, 0xe, 0xfb, 0x5f, 0xfb, 0x59, 0x76, 0xf7, 0x63, - 0xcb, 0x86, 0x1d, 0xea, 0xe8, 0x4e, 0xf7, 0x10, 0x13, 0xdc, 0xf7, 0x44, - 0x2b, 0x15, 0x4f, 0x1d, 0xb1, 0xf7, 0x5, 0x8e, 0xda, 0xc7, 0x49, 0xa6, - 0x54, 0x7c, 0x1f, 0xa1, 0xbe, 0xd3, 0x8f, 0xc7, 0xb2, 0xb6, 0xc8, 0x19, - 0x79, 0x9d, 0x5, 0x70, 0x73, 0x71, 0x6e, 0x52, 0x1b, 0x3d, 0x4e, 0xdc, - 0xf7, 0x20, 0xb8, 0x98, 0xf7, 0xf, 0xd9, 0x1f, 0x13, 0xea, 0x9a, 0x9f, - 0x82, 0x6d, 0x8f, 0x1d, 0x33, 0xb0, 0x44, 0x1f, 0x13, 0x4a, 0x2d, 0xfb, - 0x1e, 0x4e, 0xfb, 0x59, 0xfb, 0x7, 0xd6, 0x27, 0xf7, 0x6, 0x80, 0x1f, - 0xe, 0x4c, 0x1d, 0x78, 0xfb, 0x4, 0x5b, 0x94, 0x1e, 0xfb, 0x1c, 0x79, - 0xa, 0x13, 0xd8, 0x2b, 0x1d, 0xde, 0xf7, 0xaf, 0x26, 0xa, 0x4c, 0x1d, - 0x86, 0xfb, 0x9, 0x60, 0x8d, 0x1e, 0xfb, 0x23, 0x80, 0xa, 0x1e, 0x13, - 0xd8, 0x2b, 0x1d, 0x76, 0xf7, 0xaf, 0x28, 0x1d, 0x49, 0x1d, 0xd7, 0x83, - 0x1d, 0xa4, 0x8a, 0xa, 0x4d, 0xa, 0x82, 0xfb, 0x4, 0x5b, 0x92, 0x1e, - 0xfb, 0x24, 0x80, 0xa, 0x34, 0xa, 0x1e, 0x39, 0x1d, 0xfb, 0x1, 0xf7, - 0xaf, 0x29, 0x1d, 0xe, 0x49, 0x1d, 0xcb, 0xf7, 0x16, 0x98, 0xa, 0x21, - 0xf7, 0x16, 0xdb, 0xf7, 0x16, 0x13, 0xfa, 0x4d, 0xa, 0x7d, 0xfb, 0x4, - 0x5b, 0x92, 0x1e, 0xfb, 0x1f, 0x79, 0xa, 0x2b, 0x1d, 0x13, 0xf6, 0xfb, - 0x3, 0xf7, 0xf9, 0x40, 0x1d, 0x3e, 0xa, 0xfb, 0xa6, 0x7, 0x5b, 0x7a, - 0x88, 0x67, 0x82, 0x1e, 0xf7, 0x1f, 0xf8, 0x82, 0x29, 0xa, 0x81, 0x7f, - 0xa, 0x99, 0x7c, 0xa4, 0x7c, 0x1f, 0xe, 0x3e, 0xa, 0xfb, 0xa9, 0x7, - 0x5b, 0x7a, 0x8b, 0x67, 0x82, 0x1e, 0xae, 0xf8, 0x82, 0x56, 0x1d, 0xf7, - 0x22, 0xe3, 0x5, 0xa3, 0x9a, 0x9c, 0x95, 0xa7, 0x1a, 0xaf, 0x6b, 0x2c, - 0xa, 0xe, 0x5d, 0xa, 0xf7, 0x0, 0x83, 0x1d, 0xd0, 0x8a, 0xa, 0x67, - 0xf8, 0xa4, 0x56, 0x1d, 0xf7, 0x3, 0xed, 0xf7, 0x5, 0x29, 0x5, 0xc4, - 0x6, 0xfb, 0x10, 0xf7, 0x44, 0x5, 0x2f, 0x6, 0x46, 0xfd, 0x54, 0x15, - 0x33, 0xa, 0xe, 0xfc, 0x5, 0xa0, 0x76, 0xf8, 0xad, 0x9a, 0x1d, 0x67, - 0xf7, 0x13, 0x75, 0xf7, 0x1f, 0x69, 0xf7, 0x13, 0x13, 0xd0, 0x49, 0xa, - 0x13, 0xe8, 0x57, 0xf8, 0xcd, 0x15, 0x6c, 0x1d, 0xf7, 0x66, 0x16, 0x6c, - 0x1d, 0xe, 0x65, 0xa, 0xf7, 0x6e, 0x77, 0x12, 0x5d, 0x1d, 0xfb, 0x1c, - 0xf7, 0x27, 0x13, 0xf8, 0xf7, 0x40, 0xf7, 0x83, 0x78, 0x1d, 0xe4, 0xd5, - 0xc8, 0x9c, 0x5a, 0x64, 0xa, 0x2c, 0x46, 0x3b, 0x8b, 0xf7, 0x6, 0xf7, - 0x0, 0x1e, 0x13, 0xf4, 0xf7, 0x3c, 0xf7, 0x55, 0x15, 0xab, 0x73, 0x6b, - 0x94, 0x6a, 0x1b, 0xfb, 0x1f, 0x34, 0x22, 0xfb, 0x15, 0xfb, 0x16, 0xe2, - 0xfb, 0xf, 0xf7, 0x1f, 0x1f, 0x13, 0xf8, 0xf7, 0x1c, 0xe4, 0xf6, 0xf7, - 0x26, 0xf7, 0x36, 0x4e, 0xf7, 0x2e, 0x3b, 0xc6, 0x1f, 0xe7, 0xba, 0x5a, - 0xa9, 0x31, 0x5d, 0x55, 0xa8, 0x51, 0x98, 0x5b, 0x8f, 0x19, 0x5d, 0x72, - 0xb8, 0x83, 0xb9, 0x78, 0xb5, 0x6c, 0x19, 0xfb, 0x9, 0x50, 0xbb, 0x6c, - 0xf7, 0x2, 0xc3, 0xb1, 0x66, 0xa9, 0x5c, 0x9d, 0x54, 0x19, 0xe, 0x30, - 0x82, 0x1d, 0xd5, 0xd9, 0x6e, 0xd9, 0x12, 0xd5, 0x53, 0xa, 0x13, 0xdc, - 0xa0, 0x41, 0xa, 0x8d, 0x8b, 0xaa, 0xa3, 0x1a, 0x76, 0xa, 0x36, 0x60, - 0x4f, 0x73, 0x7d, 0x1e, 0x88, 0x1d, 0xb3, 0x85, 0x98, 0x83, 0x5e, 0x1a, - 0xfb, 0xa9, 0x7, 0x5a, 0x7a, 0x8a, 0x67, 0x84, 0x1e, 0xd6, 0xf8, 0x97, - 0x45, 0x1d, 0xa6, 0xa3, 0x80, 0x80, 0xa3, 0x1f, 0x13, 0xec, 0x7e, 0xa6, - 0xa5, 0x7d, 0xa4, 0x1b, 0x13, 0x10, 0x42, 0xa, 0x6d, 0x8f, 0xa, 0x6d, - 0x50, 0x1d, 0xe, 0x65, 0xa, 0xd7, 0x98, 0x1d, 0x5d, 0x1d, 0x3, 0xf7, - 0x40, 0xf7, 0x90, 0x78, 0x1d, 0xd7, 0xd5, 0xc8, 0x9c, 0x5f, 0x64, 0xa, - 0x27, 0x46, 0x3b, 0x8b, 0xf7, 0x13, 0xf7, 0x0, 0x1e, 0xfb, 0x27, 0x75, - 0x15, 0xfb, 0x16, 0xe2, 0xfb, 0x6, 0x70, 0xa, 0xf7, 0x4, 0x6f, 0xa, - 0xf2, 0x70, 0x1d, 0xfb, 0x6, 0xfb, 0x15, 0x1e, 0xf7, 0x8d, 0xf7, 0xbe, - 0x56, 0x1d, 0x49, 0xd7, 0x64, 0xbd, 0x70, 0xa6, 0x8, 0xaa, 0x6c, 0x7c, - 0x8c, 0x80, 0x1b, 0x65, 0x80, 0x7f, 0xa, 0xa5, 0x75, 0xa4, 0x7b, 0x1f, - 0xe, 0x65, 0xa, 0xd7, 0x76, 0xf7, 0x4d, 0x32, 0xa, 0xf7, 0x27, 0xf7, - 0xbf, 0x28, 0x1d, 0x65, 0xa, 0xd7, 0x76, 0xf7, 0x44, 0x32, 0xa, 0xc4, - 0xf7, 0xbf, 0x60, 0xa, 0x65, 0xa, 0xd5, 0xd9, 0x6e, 0xd9, 0x12, 0x5d, - 0x1d, 0x13, 0xdc, 0x25, 0xa, 0xc0, 0xf7, 0xd4, 0x45, 0x1d, 0xa7, 0xa6, - 0x7f, 0x7f, 0xa4, 0x1f, 0x13, 0xec, 0x7f, 0xa4, 0xa3, 0x7e, 0xa3, 0x1b, - 0x13, 0x10, 0x42, 0xa, 0x6c, 0x8f, 0xa, 0x6e, 0x50, 0x1d, 0xe, 0x65, - 0xa, 0xcc, 0xf7, 0x15, 0x12, 0xa4, 0xf7, 0x27, 0x30, 0xf7, 0x15, 0xdc, - 0xf7, 0x15, 0x30, 0xf7, 0x27, 0x13, 0xf2, 0x25, 0xa, 0x13, 0xec, 0xc3, - 0xf8, 0x9, 0x2d, 0x1d, 0x3e, 0x6c, 0xef, 0x27, 0xf7, 0x2a, 0xe5, 0xe2, - 0x40, 0xcb, 0xef, 0xf7, 0x2c, 0x27, 0xef, 0x12, 0xf7, 0x65, 0xf7, 0x2d, - 0xfb, 0x13, 0xef, 0x13, 0x5a, 0xad, 0xf7, 0x71, 0x15, 0xf8, 0x8b, 0xcb, - 0xfc, 0x8b, 0x6, 0x13, 0xa5, 0xf7, 0x5d, 0xfb, 0x9e, 0x15, 0x6c, 0xa, - 0xf8, 0x68, 0x4, 0x6c, 0xa, 0xe, 0x44, 0x76, 0xd9, 0xaa, 0xf7, 0xd9, - 0x76, 0xf7, 0xd, 0xaa, 0xd7, 0x77, 0x12, 0xa2, 0xf7, 0x27, 0xfb, 0x25, - 0xf7, 0x27, 0xf7, 0x31, 0xf7, 0x27, 0x13, 0xfd, 0xf7, 0x41, 0xf7, 0x23, - 0x15, 0x13, 0xfb, 0x8a, 0xa5, 0x8b, 0xa4, 0xa9, 0x1a, 0xf7, 0x6, 0x90, - 0xf3, 0xd5, 0xad, 0x9f, 0x78, 0x62, 0x96, 0x1e, 0xfb, 0x21, 0xfb, 0x83, - 0x5, 0xfb, 0x21, 0xfb, 0x7f, 0x15, 0xba, 0x6, 0xca, 0xf4, 0x5, 0x7a, - 0xa9, 0xb0, 0x81, 0xb3, 0x1b, 0xf7, 0x1c, 0xe4, 0xf4, 0xf7, 0x19, 0xde, - 0x69, 0xd7, 0x55, 0xb6, 0x1f, 0xd4, 0xf7, 0xf, 0x5, 0x5d, 0x6, 0x4f, - 0x26, 0x5, 0x9b, 0x6e, 0x67, 0x94, 0x64, 0x1b, 0xfb, 0x1f, 0x34, 0xfb, - 0xc, 0xfb, 0x15, 0x3e, 0xaa, 0x49, 0xc1, 0x5e, 0x1f, 0xd4, 0xb7, 0x15, - 0xf7, 0x22, 0xf7, 0x85, 0x5, 0x8d, 0x6, 0x8c, 0x72, 0x8c, 0x67, 0x67, - 0x1a, 0xfb, 0x13, 0x83, 0x3b, 0x46, 0x64, 0x77, 0xa3, 0xb2, 0x81, 0x1e, - 0xe, 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, 0xf7, 0x0, 0x98, 0x1d, 0xcc, - 0x53, 0xa, 0x3, 0x89, 0x1d, 0x49, 0x89, 0xa, 0x8d, 0x28, 0xa, 0x5b, - 0xf8, 0x70, 0x26, 0xa, 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, 0xf7, 0x0, - 0x98, 0x1d, 0xcc, 0x53, 0xa, 0x3, 0x71, 0xa, 0x27, 0x1d, 0x6c, 0x7, - 0xb4, 0x84, 0x93, 0x7c, 0x38, 0xa, 0xfb, 0x2c, 0xf8, 0x70, 0x28, 0x1d, - 0x30, 0x7d, 0xcc, 0xf8, 0x2e, 0x77, 0xf7, 0x0, 0x83, 0x1d, 0xcc, 0x53, - 0xa, 0x3, 0x2f, 0x1d, 0xfb, 0x84, 0xf8, 0x70, 0x29, 0x1d, 0xe, 0x30, - 0x7d, 0xcc, 0xf8, 0x7a, 0x9a, 0x1d, 0xcc, 0xf7, 0x1f, 0x26, 0xf7, 0x13, - 0xde, 0xf7, 0x13, 0x29, 0xf7, 0x1f, 0x13, 0xe4, 0x2f, 0x1d, 0x13, 0xd8, - 0xfb, 0x84, 0xf8, 0xba, 0x15, 0x6d, 0x1d, 0xf7, 0x66, 0x16, 0x6d, 0x1d, - 0xe, 0xfb, 0x61, 0xf7, 0x23, 0xf8, 0x9f, 0x77, 0xf7, 0x0, 0x76, 0xf7, - 0x4d, 0x77, 0x12, 0x9b, 0xf7, 0xe, 0xfb, 0xe, 0xf8, 0x64, 0xfb, 0x2b, - 0xf7, 0x2b, 0x13, 0x8a, 0x13, 0x4, 0xf7, 0x80, 0x7e, 0x15, 0x40, 0x72, - 0x2f, 0xa, 0x5, 0x13, 0x72, 0x9e, 0xbd, 0x9c, 0x8d, 0xa1, 0x8e, 0x8, - 0x13, 0x74, 0x4d, 0x1d, 0x13, 0xfa, 0x36, 0xa, 0xf7, 0x4, 0xf7, 0x14, - 0x28, 0x1d, 0x7c, 0xa, 0xf7, 0x5f, 0x77, 0x1, 0xd6, 0xf7, 0x1f, 0xf7, - 0x36, 0xf7, 0x28, 0x3, 0x81, 0xa, 0x90, 0x1d, 0x6f, 0x6a, 0xa0, 0xb3, - 0x7b, 0x1e, 0x7a, 0x1d, 0x93, 0xbe, 0x58, 0xa, 0x7c, 0x1f, 0x89, 0xf7, - 0xad, 0xfb, 0x56, 0x69, 0x6, 0xaf, 0x84, 0x9e, 0x87, 0x5c, 0x1a, 0xfd, - 0x4d, 0x92, 0xa, 0xfb, 0x61, 0xf7, 0x23, 0xf8, 0xec, 0xf7, 0x15, 0x12, - 0x9b, 0xf7, 0x56, 0xfb, 0x15, 0xf7, 0x15, 0xdc, 0xf7, 0x15, 0x13, 0xe8, - 0xf7, 0x80, 0x7e, 0x15, 0x40, 0x72, 0x2b, 0xa, 0x13, 0xd8, 0xa2, 0xf7, - 0x5e, 0x2d, 0x1d, 0x5d, 0xa, 0x1, 0xd0, 0x8a, 0xa, 0x49, 0xa, 0xe, - 0x9f, 0x8b, 0xaa, 0xf8, 0xf6, 0x60, 0x1d, 0x38, 0x96, 0x1d, 0xf7, 0x59, - 0x7, 0xf7, 0xf, 0xd7, 0x5, 0xc8, 0x7, 0xfb, 0xf, 0x3f, 0x5, 0xf7, - 0x6a, 0x7, 0xc7, 0xaa, 0x9e, 0xd1, 0x8e, 0x1e, 0xae, 0xfb, 0xf1, 0x68, - 0x7, 0xb8, 0x88, 0xb4, 0x7e, 0x49, 0x1a, 0xfb, 0xc9, 0x7, 0x3a, 0x5a, - 0x5, 0x4e, 0x7, 0xdc, 0xbc, 0x5, 0x25, 0x7, 0x62, 0x6d, 0x87, 0x53, - 0x8b, 0xa, 0xfc, 0x5, 0x8b, 0xad, 0xf9, 0x16, 0x77, 0x1, 0xce, 0x8a, - 0xa, 0x9b, 0x16, 0x99, 0xa, 0x64, 0x81, 0xaa, 0xa8, 0x1f, 0xf7, 0xd1, - 0x7, 0xec, 0xdb, 0x5, 0xbd, 0x7, 0x2a, 0x3b, 0x5, 0xf7, 0x6b, 0x8d, - 0xa, 0xfb, 0x68, 0x7, 0x32, 0x43, 0x5, 0x59, 0x7, 0xe4, 0xd3, 0x5, - 0xfb, 0x78, 0x97, 0x1d, 0xf7, 0xf5, 0x8b, 0xa6, 0x70, 0xae, 0x78, 0x76, - 0xf7, 0xe6, 0xac, 0xf7, 0xa7, 0xae, 0x73, 0xab, 0x12, 0xa1, 0xf7, 0x3e, - 0xf7, 0xac, 0xf7, 0x2f, 0x13, 0x97, 0xf8, 0x6c, 0xf7, 0x68, 0x15, 0xfb, - 0x14, 0x8b, 0x52, 0x21, 0x34, 0x34, 0xa7, 0xf7, 0xa1, 0xf7, 0x9, 0x9f, - 0xf7, 0x67, 0xf7, 0x35, 0xee, 0x8b, 0x51, 0x30, 0x1e, 0xf7, 0x2f, 0xfb, - 0x3e, 0x15, 0xf7, 0xc, 0x93, 0x46, 0x33, 0x98, 0x1f, 0xac, 0xf7, 0xe6, - 0x6a, 0x6, 0xfb, 0x2, 0x73, 0x8d, 0x65, 0xfb, 0xb, 0x1b, 0xf7, 0x8d, - 0x7, 0x13, 0x9b, 0xa3, 0x9b, 0x8d, 0xc4, 0xf7, 0x43, 0x99, 0x42, 0x2e, - 0x9a, 0x1e, 0xaf, 0xf7, 0x5d, 0xfc, 0x30, 0x6, 0x13, 0x37, 0x79, 0xfb, - 0x4, 0x93, 0x79, 0x1b, 0xfb, 0xc6, 0x57, 0xfb, 0x86, 0x2c, 0xfb, 0x79, - 0xf7, 0x19, 0xfb, 0xf, 0xf7, 0x5e, 0x1f, 0x13, 0x9b, 0xc3, 0xa7, 0x90, - 0xcf, 0x1b, 0xf8, 0x42, 0x6, 0xb5, 0xf7, 0x67, 0x5, 0x70, 0x6, 0x13, - 0x5b, 0xfb, 0x33, 0x47, 0x2c, 0x7a, 0x2b, 0x1b, 0x47, 0x8b, 0xa2, 0xa4, - 0x1f, 0xe, 0xd6, 0x7d, 0xa9, 0x6d, 0xd3, 0xf7, 0x4f, 0xb0, 0xf7, 0x36, - 0xa8, 0x12, 0xa1, 0xf7, 0x25, 0xf7, 0x1c, 0xf7, 0x1c, 0xf7, 0x18, 0xf7, - 0x11, 0x13, 0x7e, 0xf8, 0x50, 0xf7, 0xae, 0x15, 0xe0, 0x8c, 0x8b, 0xd8, - 0xc9, 0x1b, 0xc4, 0x8f, 0x4e, 0x26, 0x8e, 0x1f, 0xfb, 0x50, 0xfb, 0x8c, - 0x15, 0x7a, 0x9a, 0xa5, 0x6c, 0xda, 0x1b, 0xf6, 0xbe, 0xd4, 0xbd, 0xae, - 0x1f, 0x77, 0x9b, 0x5, 0x6a, 0x6e, 0x6e, 0x69, 0x4c, 0x1b, 0xfb, 0x1, - 0x87, 0xf7, 0xe, 0xcc, 0x8d, 0x1f, 0xf7, 0x90, 0x6, 0xf7, 0xe, 0x89, - 0x64, 0xf5, 0xfb, 0x28, 0x1b, 0x4e, 0x5d, 0x6f, 0x76, 0x70, 0x1f, 0x9b, - 0x7b, 0x6a, 0xac, 0x38, 0x1b, 0xfb, 0x19, 0x35, 0xfb, 0x2, 0xfb, 0x1c, - 0xfb, 0xd, 0xd9, 0xfb, 0xc, 0xf7, 0x21, 0xe2, 0xae, 0xaa, 0x9c, 0x9f, - 0x1f, 0x40, 0xf7, 0x7, 0x15, 0x13, 0xbe, 0x4b, 0x7c, 0x46, 0x57, 0x5e, - 0x6e, 0x8b, 0xf7, 0x67, 0xf7, 0x3e, 0xa5, 0xba, 0xbb, 0xc0, 0x99, 0x66, - 0x2b, 0x1e, 0xe, 0x30, 0x78, 0xac, 0xf8, 0x76, 0x76, 0xf7, 0x4d, 0xaa, - 0xf7, 0x73, 0x8e, 0xa, 0x17, 0x7c, 0x1d, 0x98, 0x94, 0x1d, 0xc3, 0x1b, - 0x13, 0xfc, 0x47, 0x1d, 0x13, 0xbc, 0x85, 0xa, 0x80, 0x7d, 0x90, 0x91, - 0x7b, 0x1f, 0x95, 0x71, 0x68, 0x97, 0x5a, 0x46, 0x1d, 0xf7, 0x59, 0xf8, - 0x92, 0x35, 0xa, 0xfb, 0x96, 0x7d, 0xad, 0x7f, 0x76, 0xf8, 0x59, 0xac, - 0x12, 0xa6, 0xef, 0xf7, 0x1e, 0xeb, 0x13, 0x78, 0xa4, 0x7e, 0x15, 0xa4, - 0x6, 0x9f, 0x95, 0x91, 0x93, 0x96, 0x1b, 0x90, 0x9f, 0x82, 0x83, 0xa4, - 0x1f, 0x13, 0xb8, 0x85, 0x9f, 0xa4, 0x85, 0xa1, 0x1b, 0xe8, 0xd5, 0xc6, - 0xea, 0x1f, 0xf7, 0x38, 0xfb, 0x7e, 0x74, 0xf1, 0x1a, 0xaa, 0xa2, 0xa5, - 0xaf, 0xc4, 0xbe, 0x60, 0x44, 0xa0, 0x1e, 0xa4, 0xf7, 0x25, 0x75, 0x6, - 0x83, 0x88, 0x87, 0x7f, 0x79, 0x1b, 0x81, 0x7b, 0x91, 0x91, 0x77, 0x1f, - 0x90, 0x79, 0x76, 0x90, 0x75, 0x1b, 0x2f, 0x48, 0x50, 0x33, 0x1f, 0xfb, - 0x2e, 0xf7, 0x82, 0x91, 0x2f, 0x1a, 0x6d, 0x76, 0x67, 0x59, 0xfb, 0x3, - 0x73, 0xf4, 0xa6, 0x85, 0x1e, 0x6f, 0x6, 0x13, 0x78, 0xf7, 0xf, 0xf8, - 0xc, 0x35, 0xa, 0xd6, 0x4e, 0x1d, 0xd3, 0xf7, 0x15, 0x12, 0xf7, 0x68, - 0xf7, 0x15, 0x4c, 0xf7, 0x36, 0x79, 0xf7, 0x15, 0x13, 0xe8, 0x69, 0x1d, - 0x8d, 0xde, 0x1a, 0xf7, 0x42, 0x7, 0xf7, 0x4b, 0xf7, 0xc1, 0x9f, 0xab, - 0xb0, 0x62, 0xa, 0xb0, 0x89, 0x64, 0x1a, 0xfb, 0x2a, 0xfb, 0xa0, 0x5, - 0x42, 0x1d, 0x13, 0xf4, 0xa6, 0xf9, 0x9d, 0x2d, 0x1d, 0x8c, 0xa, 0xf7, - 0x82, 0x77, 0x1, 0xa7, 0xf8, 0xf2, 0x3, 0x39, 0xa, 0xf7, 0x97, 0xf9, - 0x66, 0x35, 0xa, 0x87, 0x1d, 0xe3, 0x83, 0x1d, 0xb1, 0xa5, 0x87, 0xa, - 0x6f, 0x8e, 0x1d, 0x61, 0x8b, 0x62, 0x8c, 0xf7, 0x7b, 0xf8, 0x27, 0x18, - 0xa5, 0xfc, 0x7, 0x7, 0x84, 0xfb, 0x22, 0x5, 0xa5, 0x6, 0xa5, 0xf7, - 0x1, 0xba, 0x8b, 0xf7, 0xa, 0x8c, 0xfb, 0x7e, 0xfc, 0x25, 0x18, 0xf7, - 0x2f, 0xf8, 0x88, 0x35, 0xa, 0xfb, 0x1a, 0x76, 0xf8, 0xb9, 0xb9, 0xf7, - 0x13, 0xf7, 0x1f, 0x6d, 0xa9, 0x12, 0x8b, 0xf7, 0x0, 0xd6, 0xf7, 0x1f, - 0x13, 0xdc, 0xd5, 0xf8, 0x1e, 0x15, 0xf7, 0x8, 0x6, 0x7e, 0xfc, 0x2a, - 0x5, 0x31, 0x88, 0x65, 0x74, 0x73, 0x1b, 0x7f, 0x81, 0x93, 0x92, 0x1f, - 0x98, 0x9d, 0x8d, 0xa5, 0x1a, 0xad, 0x70, 0x9a, 0x70, 0x76, 0x6a, 0x7e, - 0x5e, 0x6a, 0xa0, 0x5f, 0xd3, 0x1e, 0x13, 0x54, 0xf7, 0x1c, 0xc4, 0xf7, - 0x23, 0xf7, 0x25, 0x9d, 0x1f, 0x96, 0xe2, 0x8a, 0xc6, 0x93, 0xf7, 0x7, - 0x8, 0xf7, 0xe, 0xb9, 0xfb, 0xe, 0xe5, 0x6, 0xae, 0x8b, 0xf7, 0x3, - 0xcc, 0x9e, 0x8e, 0x7e, 0x89, 0x1e, 0x85, 0x79, 0x77, 0x76, 0x1a, 0x13, - 0xec, 0x6f, 0xa5, 0x78, 0xa8, 0xa8, 0xa2, 0xa7, 0xab, 0x1e, 0x13, 0x60, - 0x9a, 0x7d, 0xcb, 0x2a, 0xfb, 0x31, 0x73, 0xfb, 0x54, 0x41, 0x7f, 0x1e, - 0xfb, 0xc, 0x6, 0xe, 0xfb, 0xce, 0xf8, 0xb9, 0x83, 0x1d, 0x89, 0xf8, - 0xa4, 0x60, 0xa, 0xfb, 0xce, 0xf8, 0xb9, 0x83, 0x1d, 0xf7, 0xc, 0xf8, - 0xa4, 0x52, 0xa, 0x51, 0x6, 0xfb, 0x3, 0x28, 0xfb, 0x3, 0xee, 0x5, - 0x52, 0x6, 0xe, 0xfb, 0xce, 0xf8, 0xa4, 0xd7, 0x3f, 0xf7, 0x37, 0x12, - 0x13, 0x40, 0x9a, 0xf9, 0x47, 0x15, 0x21, 0xc5, 0x52, 0xe8, 0xec, 0xc2, - 0xca, 0xef, 0x1e, 0x5f, 0x6, 0x13, 0x80, 0x6c, 0x83, 0x7c, 0x53, 0x37, - 0x1b, 0x13, 0x40, 0x30, 0x7f, 0xc6, 0xa7, 0x86, 0x1f, 0xe, 0xfb, 0xce, - 0xf8, 0xad, 0xf7, 0x16, 0x1, 0xf2, 0xf7, 0x13, 0x3, 0xf2, 0xf8, 0xef, - 0x15, 0x66, 0xa6, 0x6e, 0xb0, 0xae, 0xa7, 0xa8, 0xb0, 0xb0, 0x6f, 0xa6, - 0x68, 0x67, 0x6f, 0x6f, 0x67, 0x1e, 0xe, 0xfb, 0xce, 0xf8, 0xa3, 0xf7, - 0x39, 0xfb, 0x9, 0xf7, 0x9, 0xfb, 0x9, 0xf7, 0x39, 0x12, 0xc7, 0xf7, - 0x3a, 0xfb, 0x9, 0xf7, 0x9, 0xfb, 0x9, 0xf7, 0x38, 0x13, 0x90, 0xc7, - 0x94, 0xa, 0x13, 0x24, 0xc5, 0xbb, 0xba, 0xc6, 0xc5, 0x5c, 0xbc, 0x51, - 0x1f, 0x13, 0x90, 0x51, 0x59, 0x5b, 0x50, 0x1f, 0x13, 0x48, 0xbc, 0x16, - 0x6b, 0xa6, 0x71, 0xab, 0xab, 0xa5, 0xa5, 0xab, 0xab, 0x71, 0xa6, 0x6b, - 0x6b, 0x70, 0x70, 0x6b, 0x1e, 0xe, 0xfb, 0xce, 0xfb, 0x41, 0xd0, 0xf7, - 0x28, 0x77, 0x1, 0xe5, 0xdf, 0x3, 0xf7, 0x31, 0xb7, 0x15, 0x5b, 0x5f, - 0x78, 0x5e, 0x5e, 0x1a, 0x46, 0xd2, 0x7d, 0xb3, 0xad, 0xc9, 0xa6, 0xbb, - 0xa1, 0x1e, 0x75, 0xa1, 0x5, 0x7d, 0x75, 0x7e, 0x7d, 0x74, 0x1b, 0x63, - 0x72, 0x9d, 0xba, 0xa4, 0x98, 0xb2, 0x8f, 0x9e, 0x1f, 0xe, 0xfb, 0xce, - 0xf8, 0xb7, 0xd9, 0x6e, 0xd9, 0x12, 0x13, 0x80, 0x7b, 0xf8, 0xb7, 0x15, - 0xb5, 0x6, 0x13, 0x40, 0x9d, 0x8c, 0x9b, 0xaa, 0xab, 0x1b, 0xb5, 0xa4, - 0x7b, 0x7e, 0xa3, 0x1f, 0x80, 0x9e, 0x9d, 0x82, 0xa4, 0x1b, 0x42, 0xa, - 0x74, 0x74, 0x92, 0x94, 0x75, 0x1f, 0x99, 0x68, 0x6c, 0x9e, 0x7a, 0x1b, - 0x2f, 0x78, 0x2f, 0x68, 0x84, 0x1f, 0xe, 0xfb, 0xce, 0xf8, 0xa4, 0xf7, - 0x4d, 0x1, 0x7e, 0xf8, 0xa4, 0x15, 0xc0, 0x6, 0xf7, 0x25, 0x23, 0xa, - 0xcc, 0xfb, 0x31, 0x15, 0xc1, 0x22, 0xa, 0xe, 0xf7, 0x49, 0xe5, 0x1, - 0xf7, 0x49, 0x4, 0xf8, 0x88, 0xca, 0xfc, 0x88, 0x6, 0xe, 0xf7, 0xf5, - 0xf7, 0x49, 0xe5, 0x1, 0xf7, 0x49, 0x4, 0xfa, 0x7c, 0xc9, 0xfe, 0x7c, - 0x6, 0xe, 0xfb, 0xce, 0xf8, 0xd, 0x83, 0xa, 0xd1, 0xcf, 0x47, 0xf7, - 0x4c, 0x13, 0xd0, 0xf7, 0x8b, 0xf9, 0x31, 0x15, 0x5b, 0xa, 0xa5, 0x4d, - 0xd4, 0xb9, 0xb2, 0xa9, 0xbf, 0xca, 0x5d, 0x9b, 0x6f, 0x1e, 0x13, 0xe0, - 0x68, 0xa, 0xe, 0xfb, 0xce, 0xf8, 0xd, 0x7b, 0xa, 0xec, 0xf7, 0xf8, - 0x15, 0x47, 0xa, 0xfb, 0xce, 0xfb, 0x33, 0x7b, 0xa, 0xe1, 0xfb, 0x32, - 0x15, 0x96, 0x75, 0x5, 0x47, 0xa, 0xf7, 0xf8, 0xf7, 0x35, 0xf7, 0x42, - 0x77, 0x12, 0xab, 0xcf, 0x47, 0xf7, 0x4c, 0xe1, 0xcf, 0x47, 0xf7, 0x4c, - 0x13, 0xd8, 0xf7, 0x65, 0xf9, 0x31, 0x15, 0x57, 0xa, 0x13, 0xe4, 0x68, - 0xa, 0xf7, 0xa2, 0x16, 0x57, 0xa, 0x13, 0xe8, 0x68, 0xa, 0xe, 0xf8, - 0xd, 0x68, 0x1d, 0xf7, 0xc2, 0xf7, 0xf8, 0x15, 0x5f, 0xa, 0x13, 0xe4, - 0x3f, 0x1d, 0xfb, 0x97, 0x75, 0x15, 0x5f, 0xa, 0x13, 0xd8, 0x3f, 0x1d, - 0xe, 0xfb, 0x33, 0x68, 0x1d, 0xf7, 0xb7, 0xfb, 0x32, 0x15, 0x56, 0xa, - 0x13, 0xe4, 0x3f, 0x1d, 0xfb, 0xa2, 0x16, 0x56, 0xa, 0x13, 0xd8, 0x3f, - 0x1d, 0xe, 0xfb, 0x5, 0x76, 0xf8, 0xae, 0xf5, 0xf7, 0x49, 0x77, 0x12, - 0xf7, 0x56, 0xf7, 0x5, 0x46, 0xa7, 0x13, 0xe8, 0xf7, 0x84, 0xfb, 0x1a, - 0x15, 0xa0, 0x6, 0x90, 0xf7, 0x2e, 0x90, 0xf7, 0x14, 0xb4, 0xf6, 0x91, - 0x98, 0x19, 0x8e, 0x91, 0x4d, 0xa6, 0x8d, 0xf7, 0x25, 0x8, 0xa8, 0xa0, - 0x83, 0x83, 0x9d, 0x1f, 0x7f, 0xa4, 0x9f, 0x7d, 0xa7, 0x1b, 0xaa, 0x9f, - 0xa8, 0xa7, 0xa4, 0x7c, 0xa3, 0x66, 0x71, 0x79, 0x7d, 0x7f, 0x6f, 0x1f, - 0x7a, 0x84, 0x76, 0x84, 0x6d, 0x87, 0x8a, 0xb3, 0x91, 0xa4, 0x93, 0x9f, - 0x8, 0x13, 0xf0, 0x99, 0xad, 0x9e, 0x9b, 0xb1, 0x1a, 0xbb, 0x5f, 0x8f, - 0x7e, 0x61, 0x7d, 0x6a, 0x71, 0x67, 0xa0, 0x84, 0x98, 0x62, 0x1e, 0x13, - 0xe8, 0x91, 0x78, 0x8f, 0x72, 0x65, 0x1a, 0x6d, 0x8d, 0x78, 0x92, 0x7b, - 0x92, 0x8, 0x98, 0x70, 0x7c, 0x9a, 0x6b, 0x1b, 0x66, 0x7c, 0x72, 0x72, - 0x6f, 0x9f, 0x6e, 0xaa, 0xae, 0x96, 0x9a, 0x98, 0xa8, 0x1f, 0x9a, 0x92, - 0x9f, 0x91, 0xa9, 0x8d, 0x8, 0xfb, 0x26, 0x53, 0x72, 0x8d, 0x85, 0x1e, - 0x8e, 0x83, 0xb7, 0xfb, 0x5, 0x8f, 0xfb, 0x14, 0x8, 0xe, 0xf7, 0x83, - 0x8a, 0x15, 0x87, 0x60, 0x63, 0x55, 0x63, 0x1a, 0x6b, 0xa1, 0x6f, 0xac, - 0xac, 0xa1, 0xa7, 0xab, 0xb3, 0x63, 0xc1, 0x87, 0xb6, 0x1e, 0x67, 0x1d, - 0x8e, 0xad, 0xa0, 0xa9, 0xa7, 0x9e, 0x8, 0x5c, 0xaf, 0x87, 0xb9, 0xbb, - 0x1a, 0xbb, 0x8f, 0xb9, 0xba, 0xaf, 0x1e, 0x6f, 0x9e, 0x76, 0xa9, 0x88, - 0xad, 0x8, 0x67, 0x1d, 0x8f, 0xb6, 0xb3, 0xc1, 0xb3, 0x1a, 0xab, 0x75, - 0xa7, 0x6a, 0x6a, 0x75, 0x6f, 0x6b, 0x63, 0xb3, 0x55, 0x8f, 0x60, 0x1e, - 0x67, 0xa, 0x88, 0x69, 0x76, 0x6d, 0x6f, 0x78, 0x8, 0xba, 0x67, 0x8f, - 0x5d, 0x5b, 0x1a, 0x5b, 0x87, 0x5d, 0x5c, 0x67, 0x1e, 0xa7, 0x78, 0xa0, - 0x6d, 0x8e, 0x69, 0x8, 0x67, 0xa, 0xe, 0xfb, 0xbd, 0xf7, 0x6f, 0x76, - 0xf7, 0xac, 0x77, 0x1, 0xae, 0xf7, 0xe6, 0x15, 0x3c, 0xcb, 0x4e, 0xd7, - 0xda, 0xc8, 0xc8, 0xda, 0xd8, 0x4e, 0xca, 0x3c, 0x3f, 0x4b, 0x4c, 0x3e, - 0x1e, 0xe, 0xf7, 0xf5, 0x7e, 0xf7, 0x3d, 0x1, 0xdd, 0xf7, 0x3d, 0xf7, - 0x38, 0xf7, 0x3d, 0xf7, 0x38, 0xf7, 0x3d, 0x14, 0x70, 0xdd, 0xd4, 0x15, - 0x4a, 0xa, 0xf7, 0xe1, 0x16, 0x4a, 0xa, 0xf7, 0xe1, 0x16, 0x4a, 0xa, - 0xe, 0xf7, 0xf5, 0x7d, 0xa3, 0x87, 0x76, 0xf7, 0xe1, 0xa3, 0x8a, 0x76, - 0xb8, 0x76, 0xf7, 0xc8, 0xa3, 0x8c, 0x77, 0x12, 0xa3, 0x97, 0xa, 0xa1, - 0x97, 0xa, 0xaf, 0x97, 0xa, 0x13, 0xad, 0xf8, 0xf7, 0xec, 0xf7, 0x38, - 0x15, 0x30, 0x1d, 0xf7, 0x70, 0x16, 0x30, 0x1d, 0x13, 0x9d, 0xf8, 0xfd, - 0x94, 0xf7, 0xe2, 0x15, 0x30, 0x1d, 0x13, 0x6b, 0xf8, 0x47, 0x76, 0x1d, - 0xfb, 0xce, 0x82, 0xa, 0x1, 0xbe, 0xf7, 0x75, 0x88, 0xa, 0x81, 0x95, - 0x9b, 0x7e, 0x96, 0x1b, 0x91, 0x90, 0x75, 0xa, 0x96, 0x85, 0x8e, 0x85, - 0x80, 0x79, 0x7e, 0x82, 0x81, 0x1e, 0xfb, 0x5f, 0xfb, 0x38, 0x5, 0xe, - 0xfb, 0xce, 0x82, 0xa, 0x1, 0xf7, 0x26, 0x91, 0xa, 0x80, 0x91, 0x88, - 0x91, 0x96, 0x9d, 0x99, 0x93, 0x95, 0x59, 0xa, 0x95, 0x81, 0x7b, 0x98, - 0x80, 0x1b, 0x84, 0x87, 0x86, 0x7e, 0x6d, 0xe6, 0x25, 0xa6, 0x62, 0x1f, - 0xe, 0xfc, 0x74, 0x94, 0x76, 0xf9, 0x50, 0x77, 0x1, 0xfb, 0x2, 0x7f, - 0x15, 0xf8, 0x4b, 0xf9, 0x50, 0x5, 0x53, 0x6, 0xfc, 0x4d, 0xfd, 0x50, - 0x5, 0xe, 0xd6, 0x8b, 0xe7, 0xf7, 0x3e, 0xb3, 0xe4, 0xb3, 0xe3, 0x76, - 0xf7, 0x34, 0xab, 0x1, 0xf6, 0xf7, 0x3b, 0x3, 0x94, 0xf7, 0x9a, 0x15, - 0xed, 0x6, 0xfb, 0x2a, 0x9a, 0xf7, 0x31, 0xfb, 0x4, 0xf7, 0x15, 0x1b, - 0xf7, 0xb, 0xf3, 0xc0, 0xe2, 0xc5, 0x1f, 0x77, 0x95, 0x5, 0x64, 0x51, - 0x4c, 0x78, 0x51, 0x1b, 0xfb, 0x6, 0x2c, 0xca, 0xf6, 0x84, 0x1f, 0xf7, - 0xb8, 0x6, 0x99, 0xb3, 0x5, 0xfb, 0xc7, 0x6, 0x8a, 0x9c, 0x8a, 0x9a, - 0x9a, 0x1a, 0x99, 0x8b, 0x98, 0x8d, 0x9a, 0x1e, 0xf7, 0xd9, 0x6, 0x9a, - 0xb3, 0x5, 0xfb, 0xe3, 0x6, 0xf7, 0x20, 0x98, 0xc0, 0xe2, 0xf5, 0x1b, - 0xf7, 0x11, 0xc8, 0x4a, 0x2c, 0x96, 0x1f, 0xa5, 0xf7, 0x26, 0x6, 0xa4, - 0x49, 0x4b, 0xa0, 0x23, 0x1b, 0xfb, 0x18, 0xfb, 0x1a, 0x75, 0xfb, 0x81, - 0x4d, 0x1f, 0x34, 0x6, 0x7c, 0x63, 0x5, 0xeb, 0x6, 0x8a, 0x7d, 0x8a, - 0x7c, 0x7d, 0x1a, 0x7c, 0x8b, 0x7c, 0x8c, 0x7b, 0x1e, 0x3b, 0x6, 0xe, - 0xf7, 0xf5, 0xf7, 0xa4, 0xac, 0x7e, 0x76, 0xf8, 0x8, 0xac, 0x73, 0xa3, - 0x12, 0xf7, 0x32, 0xe8, 0xf7, 0x8a, 0xa8, 0xf7, 0xc4, 0xe8, 0x13, 0x9e, - 0xf7, 0x0, 0xf7, 0xa4, 0x15, 0xf7, 0x56, 0xac, 0x6, 0x57, 0x8f, 0x8c, - 0x8f, 0xb3, 0x1a, 0xf7, 0xbf, 0xb9, 0x7, 0xb3, 0x9d, 0x6e, 0x68, 0x93, - 0x1f, 0xa2, 0xe3, 0xfb, 0xfe, 0x33, 0xa2, 0x6, 0xae, 0x93, 0x9c, 0xa8, - 0xb3, 0x1b, 0xb9, 0xfb, 0xbf, 0x6, 0x63, 0x8c, 0x87, 0x58, 0x87, 0x1e, - 0xf7, 0xe5, 0x6a, 0x15, 0xf7, 0x19, 0xac, 0x6, 0x5c, 0x8e, 0x86, 0x91, - 0xbd, 0x1a, 0xf7, 0x5b, 0x8d, 0x7, 0x13, 0x6e, 0xf7, 0x20, 0xfb, 0xb8, - 0x5, 0x98, 0x6, 0xf7, 0x27, 0xf7, 0xba, 0x5, 0x8d, 0xfb, 0x68, 0x6, - 0x13, 0xae, 0x63, 0x8d, 0x87, 0x57, 0x87, 0x1e, 0x6a, 0xf7, 0x56, 0xac, - 0x7, 0x57, 0x8f, 0x8c, 0x8f, 0xb3, 0x1a, 0xf7, 0x86, 0x7, 0xab, 0x92, - 0x99, 0xba, 0x8d, 0x1e, 0xac, 0xfb, 0xa, 0x7, 0xfb, 0x2b, 0xfb, 0xb5, - 0xfb, 0x22, 0xf7, 0xb5, 0x5, 0xfb, 0x1f, 0x6a, 0x6, 0xa8, 0xa6, 0x81, - 0x6b, 0x99, 0x1f, 0xfb, 0x81, 0x7, 0x59, 0x86, 0x85, 0x5c, 0x88, 0x1e, - 0xe, 0x3e, 0xf7, 0x65, 0xcb, 0x1, 0xac, 0xf7, 0x65, 0x15, 0xf8, 0x8c, - 0xcb, 0xfc, 0x8c, 0x6, 0xe, 0x30, 0x8b, 0xad, 0xf8, 0x13, 0xb7, 0xf7, - 0x5c, 0xa9, 0x12, 0xd2, 0xf7, 0x1f, 0xf7, 0x1e, 0xf7, 0x10, 0xfb, 0x10, - 0xf7, 0x1f, 0x13, 0xf8, 0x75, 0x1d, 0xf3, 0x7, 0xa9, 0x8f, 0x7e, 0x76, - 0x1f, 0xfb, 0xb8, 0x7, 0x73, 0x8a, 0x6e, 0x5d, 0x87, 0x6a, 0xa, 0x13, - 0xf4, 0x65, 0x8c, 0x80, 0x9f, 0xaf, 0x1a, 0xf8, 0x12, 0x7, 0x86, 0x56, - 0x49, 0x84, 0x57, 0x1b, 0x21, 0x6, 0xf7, 0x15, 0x88, 0xd2, 0xe0, 0xb7, - 0x9b, 0x78, 0x82, 0x1e, 0x87, 0x82, 0x7f, 0x73, 0x1a, 0x5c, 0xbc, 0x84, - 0x99, 0x1e, 0x13, 0xf8, 0x90, 0xc8, 0x8c, 0xc7, 0xdf, 0xfb, 0x3a, 0x92, - 0x7d, 0xfb, 0x6c, 0x87, 0xfb, 0x38, 0x49, 0x8a, 0x7a, 0xa, 0xe, 0x30, - 0xa0, 0x76, 0xf8, 0x35, 0xb7, 0xf7, 0x59, 0xac, 0x8a, 0x77, 0x12, 0xd2, - 0x53, 0xa, 0x13, 0xdc, 0x75, 0x1d, 0xf7, 0x1e, 0xfb, 0xda, 0x7, 0x78, - 0x8a, 0x6b, 0x5d, 0x85, 0x6a, 0xa, 0x59, 0x8f, 0x8c, 0xb6, 0x95, 0x1a, - 0xf8, 0xeb, 0x78, 0x7, 0x5c, 0x6d, 0x5, 0x13, 0xec, 0xaa, 0x47, 0x4e, - 0x8b, 0x87, 0x1b, 0xfb, 0x52, 0x72, 0xfb, 0x1a, 0x2b, 0x89, 0x7a, 0xa, - 0xf7, 0x58, 0xf8, 0x3f, 0x15, 0xc9, 0x7, 0xc6, 0x87, 0xd7, 0xdd, 0xae, - 0x9c, 0x84, 0x7b, 0x1e, 0x83, 0x7e, 0x79, 0x7d, 0x1a, 0x78, 0x97, 0x7c, - 0x94, 0x89, 0x1e, 0x29, 0x7, 0xe, 0x78, 0x9e, 0xf8, 0x61, 0x97, 0xf7, - 0x5f, 0x9a, 0x6, 0xf7, 0xa0, 0x92, 0x7, 0x1e, 0xa0, 0x39, 0x63, 0xff, - 0xc, 0x9, 0xb5, 0xa, 0xf7, 0x1d, 0xb, 0x8c, 0xc, 0xe, 0xf8, 0x88, - 0x14, 0xf9, 0x1b, 0x15, 0xaf, 0x13, 0x0, 0x7a, 0x2, 0x0, 0x1, 0x0, - 0x2d, 0x0, 0x6e, 0x0, 0x74, 0x0, 0x81, 0x0, 0x86, 0x0, 0xb2, 0x0, - 0xb5, 0x0, 0xcf, 0x0, 0xd4, 0x0, 0xe3, 0x0, 0xec, 0x0, 0xfa, 0x1, - 0x3, 0x1, 0xf, 0x1, 0x1a, 0x1, 0x40, 0x1, 0x58, 0x1, 0x66, 0x1, - 0x6e, 0x1, 0x73, 0x1, 0x84, 0x1, 0x92, 0x1, 0xa5, 0x1, 0xdc, 0x1, - 0xec, 0x2, 0x21, 0x2, 0x2c, 0x2, 0x38, 0x2, 0x46, 0x2, 0x4f, 0x2, - 0x5f, 0x2, 0x88, 0x2, 0xb0, 0x2, 0xbf, 0x2, 0xc4, 0x2, 0xcd, 0x2, - 0xd6, 0x2, 0xe0, 0x2, 0xf4, 0x2, 0xfb, 0x3, 0x9, 0x3, 0xe, 0x3, - 0x20, 0x3, 0x28, 0x3, 0x3b, 0x3, 0x47, 0x3, 0x4c, 0x3, 0x58, 0x3, - 0x60, 0x3, 0x6f, 0x3, 0x78, 0x3, 0x7f, 0x3, 0x85, 0x3, 0x9f, 0x3, - 0xac, 0x3, 0xbb, 0x3, 0xd4, 0x3, 0xe2, 0x3, 0xe7, 0x3, 0xf4, 0x3, - 0xf9, 0x4, 0x1, 0x4, 0x8, 0x4, 0x12, 0x4, 0x1a, 0x4, 0x1e, 0x4, - 0x27, 0x4, 0x30, 0x4, 0x36, 0x4, 0x3c, 0x4, 0x47, 0x4, 0x5b, 0x4, - 0x66, 0x4, 0x71, 0x4, 0x78, 0x4, 0x7f, 0x4, 0x91, 0x4, 0x9a, 0x4, - 0xac, 0x4, 0xb2, 0x4, 0xb8, 0x4, 0xc1, 0x4, 0xcb, 0x4, 0xdb, 0x4, - 0xdf, 0x4, 0xe8, 0x4, 0xf1, 0x4, 0xf6, 0x4, 0xfb, 0x5, 0x9, 0x5, - 0x17, 0x5, 0x1f, 0x5, 0x2c, 0x5, 0x39, 0x5, 0x3e, 0x5, 0x42, 0x5, - 0x4e, 0x5, 0x5a, 0x5, 0x60, 0x5, 0x66, 0x5, 0x71, 0x5, 0x7c, 0x5, - 0x87, 0x5, 0x92, 0x5, 0x99, 0x5, 0x9e, 0x5, 0xa2, 0x5, 0xa5, 0x5, - 0xaf, 0x5, 0xb9, 0x5, 0xc3, 0x5, 0xcd, 0x5, 0xd4, 0x5, 0xde, 0x5, - 0xe5, 0x5, 0xee, 0x5, 0xf7, 0x6, 0x0, 0x6, 0x9, 0x6, 0xf, 0x6, - 0x14, 0x6, 0x19, 0x9b, 0x9b, 0xaa, 0xa7, 0xd3, 0x1e, 0xf7, 0x75, 0x6, - 0x99, 0x6b, 0xab, 0x4b, 0x70, 0x1a, 0x6a, 0x79, 0x8a, 0x4d, 0x86, 0x1e, - 0x68, 0xf7, 0xd8, 0xae, 0x7, 0x5b, 0x89, 0x87, 0x95, 0x7e, 0xaa, 0xfb, - 0x9f, 0xf8, 0xfc, 0x18, 0x6f, 0x6, 0xfb, 0x8f, 0xfc, 0xf8, 0xb, 0x15, - 0xc3, 0x85, 0xa5, 0x96, 0x37, 0x1a, 0xfb, 0xe5, 0x7, 0xfb, 0x4d, 0xf7, - 0x30, 0x50, 0xf7, 0x1c, 0xf7, 0x36, 0xd2, 0xdd, 0xf7, 0x36, 0x1e, 0xf7, - 0xe5, 0x7, 0xcd, 0xa2, 0x90, 0x43, 0xa, 0x7d, 0x4e, 0x1a, 0xfb, 0xe5, - 0x7, 0x4b, 0x7e, 0xfb, 0x17, 0xfb, 0x44, 0xfb, 0x24, 0x96, 0xf7, 0x1e, - 0xc4, 0x1e, 0xf7, 0xe5, 0x7, 0xe3, 0xaa, 0x7f, 0xcd, 0x8e, 0x1e, 0xae, - 0xfb, 0xe6, 0x7, 0xb, 0x6, 0xf7, 0x22, 0x23, 0xa, 0xb, 0xe3, 0x5, - 0xa3, 0x9a, 0x9b, 0x95, 0xa7, 0x1a, 0xaf, 0x6c, 0x2c, 0xa, 0xb, 0x44, - 0x1d, 0x26, 0x1d, 0xb, 0xf7, 0x40, 0xf7, 0x79, 0x78, 0x1d, 0xee, 0xd5, - 0xc8, 0x9c, 0x50, 0x64, 0xa, 0x36, 0x46, 0x3b, 0x8b, 0xf3, 0xf7, 0x0, - 0x1e, 0xfb, 0x27, 0x16, 0xfb, 0x16, 0xe2, 0xfb, 0x5, 0x70, 0xa, 0xf7, - 0x2, 0x6f, 0xa, 0xf4, 0x70, 0x1d, 0xfb, 0x7, 0xfb, 0x15, 0x1e, 0xb, - 0x24, 0x1d, 0xe, 0x1, 0xf7, 0x5, 0x7f, 0x1d, 0x9f, 0x16, 0xf7, 0xf2, - 0xae, 0x6, 0x34, 0x1d, 0xfb, 0xf2, 0x68, 0x7, 0x4b, 0xa, 0x4d, 0x64, - 0x87, 0x55, 0x86, 0x1e, 0xb, 0x6b, 0x1d, 0x25, 0x1d, 0xb, 0x56, 0x1d, - 0xfb, 0x1d, 0xf7, 0x31, 0x5, 0x98, 0x80, 0x77, 0x9a, 0x76, 0x1b, 0x65, - 0xb, 0x23, 0x1d, 0xa1, 0x81, 0x97, 0x83, 0x95, 0x1e, 0xb, 0x2f, 0xa, - 0x9e, 0xbd, 0x9c, 0x8d, 0xa1, 0x8e, 0x19, 0x4d, 0x1d, 0x36, 0xa, 0xb, - 0x93, 0x79, 0x81, 0x78, 0x89, 0x71, 0x74, 0x1e, 0xb, 0x2c, 0x1d, 0xfb, - 0xa9, 0x7, 0x5b, 0x7a, 0x8b, 0x67, 0x82, 0x1e, 0xb, 0x5, 0xc4, 0x6, - 0xfb, 0xf, 0xf7, 0x44, 0x5, 0x2f, 0x6, 0xb, 0x72, 0x4f, 0x69, 0x1b, - 0x7f, 0x86, 0x97, 0x90, 0x1f, 0x8f, 0x8e, 0x90, 0x94, 0x1a, 0x9d, 0x80, - 0xac, 0x5e, 0x4f, 0x85, 0x58, 0x7d, 0x6b, 0xa6, 0x5d, 0xcc, 0xe9, 0xa0, - 0xc4, 0xf7, 0x19, 0xbd, 0x1e, 0xf7, 0x29, 0xf8, 0x17, 0xb, 0x48, 0xa, - 0xfb, 0x44, 0x78, 0xa, 0xfb, 0x7f, 0x3c, 0x1d, 0xf7, 0x25, 0x5e, 0xa, - 0xf7, 0x1d, 0x5e, 0x1d, 0xfb, 0x1d, 0xfb, 0x6e, 0x1e, 0xb, 0x7c, 0xa0, - 0x5, 0x6c, 0x6c, 0x80, 0xb1, 0x8f, 0x1a, 0xf7, 0x99, 0x7, 0xe9, 0xb, - 0x77, 0x1, 0x5d, 0x1d, 0x3, 0x25, 0xa, 0xb, 0x99, 0xa, 0x2d, 0xa, - 0xb, 0xfb, 0x7, 0x30, 0x2d, 0xfb, 0x28, 0xfb, 0x3f, 0xf1, 0x41, 0xf0, - 0xdb, 0xc4, 0xab, 0xe8, 0xc8, 0xb, 0x52, 0xa, 0x52, 0x6, 0xfb, 0x4, - 0x28, 0xfb, 0x4, 0xee, 0x5, 0x53, 0x6, 0xe, 0x3c, 0xfb, 0x77, 0x5, - 0x3a, 0xf7, 0x63, 0x80, 0x9b, 0x95, 0x1a, 0xa3, 0xa6, 0x8c, 0xa5, 0x8d, - 0x48, 0x1d, 0xb, 0xf8, 0x51, 0xfc, 0xb2, 0x5, 0xa7, 0xf8, 0xce, 0x6, - 0xbb, 0x91, 0xab, 0xd3, 0x94, 0x1e, 0xae, 0xfb, 0x6b, 0x68, 0x7, 0xdc, - 0x85, 0x97, 0x74, 0x4f, 0x1a, 0xfb, 0xc3, 0x89, 0x7, 0xfb, 0xef, 0xf8, - 0x3f, 0x5, 0xfb, 0x67, 0x72, 0x6, 0x98, 0x9b, 0x88, 0x46, 0xc3, 0x1f, - 0xfc, 0x64, 0x7, 0x49, 0x6f, 0x84, 0x4f, 0x84, 0x1e, 0xb, 0x63, 0x1a, - 0xfb, 0x8a, 0x7, 0x44, 0xad, 0x4a, 0xf1, 0xce, 0xb9, 0xb4, 0xa4, 0xa8, - 0x1e, 0xb, 0xa7, 0x16, 0xf8, 0xd8, 0x6, 0xa5, 0xf7, 0x85, 0x5, 0x67, - 0x6, 0x57, 0xfb, 0x66, 0x29, 0x8c, 0xfb, 0x73, 0x8e, 0xf8, 0xf, 0xf9, - 0x5, 0x18, 0x9b, 0xfc, 0xa0, 0x7, 0x76, 0xfb, 0x62, 0x5, 0xb1, 0x6, - 0x9d, 0xbe, 0x9d, 0xdd, 0xd6, 0xa2, 0xac, 0x95, 0x8b, 0x8b, 0xf7, 0x3d, - 0x90, 0xfc, 0x12, 0xfd, 0x5, 0x18, 0xb, 0xf7, 0x5f, 0xae, 0x6, 0x69, - 0x8d, 0x5b, 0x8e, 0xb1, 0x1a, 0xb, 0x9b, 0xb6, 0x9f, 0xaf, 0xd5, 0x85, - 0x55, 0x58, 0x1e, 0x53, 0x7, 0xb, 0xf8, 0xdd, 0x6, 0xb3, 0xf7, 0x64, - 0x5, 0x6f, 0x6, 0xfb, 0x2b, 0x4c, 0x25, 0xb, 0xcc, 0xf7, 0x12, 0x1a, - 0xbf, 0x6e, 0xc9, 0x42, 0xb, 0x5d, 0xa, 0xf7, 0x0, 0x98, 0x1d, 0xd0, - 0x8a, 0xa, 0x9b, 0x16, 0x99, 0xa, 0x2c, 0x1d, 0xb, 0xf8, 0xee, 0x15, - 0x72, 0x9f, 0x63, 0xb6, 0xb0, 0xa6, 0xa8, 0xae, 0xaf, 0x6e, 0xa9, 0x68, - 0x61, 0x76, 0x63, 0x72, 0x1e, 0xf7, 0x66, 0x16, 0x72, 0x9e, 0x63, 0xb6, - 0xb0, 0xa7, 0xa8, 0xae, 0xaf, 0x6d, 0xa9, 0x68, 0x61, 0x77, 0x63, 0x72, - 0x1e, 0xb, 0x15, 0xbc, 0x7b, 0xdc, 0x72, 0x3b, 0x1a, 0x5b, 0x6a, 0x7a, - 0x6b, 0x76, 0x7c, 0x9b, 0x9a, 0x7a, 0x1e, 0x99, 0x7b, 0x78, 0x99, 0x71, - 0x1b, 0x76, 0x85, 0x78, 0x7d, 0x77, 0x1a, 0x55, 0xe4, 0x8a, 0x94, 0xf7, - 0x9, 0xda, 0xd4, 0xdf, 0xb8, 0xb, 0x16, 0xf7, 0x85, 0xad, 0x6, 0x59, - 0x1d, 0xc1, 0x8c, 0x54, 0x6f, 0x1e, 0x4f, 0xa, 0xb, 0x44, 0xa, 0x54, - 0x1d, 0xb, 0xc2, 0x93, 0x1e, 0x5b, 0x1d, 0xe1, 0x87, 0x97, 0xb, 0xe4, - 0xa2, 0xe7, 0xae, 0x94, 0x1f, 0x60, 0x6, 0xb, 0xe2, 0x1e, 0xfb, 0x45, - 0x16, 0xfb, 0x66, 0xf7, 0x29, 0xb, 0x80, 0x7, 0xfb, 0x38, 0x4a, 0x5, - 0x76, 0x7, 0x93, 0xa1, 0xa1, 0x92, 0x95, 0x1b, 0xa4, 0x8b, 0x71, 0x7c, - 0x1f, 0xb, 0x5f, 0xa, 0x13, 0xd0, 0x3f, 0x1d, 0xe, 0xf7, 0x45, 0x3, - 0xf7, 0x68, 0xf7, 0xe4, 0x79, 0x1d, 0xf7, 0x44, 0x66, 0x1d, 0xb, 0x9b, - 0x16, 0x33, 0xa, 0xb, 0x5c, 0xaf, 0x64, 0xbb, 0xba, 0xb1, 0xb1, 0xbb, - 0xb9, 0x65, 0xb0, 0x5c, 0x5b, 0x67, 0x65, 0x5e, 0x1e, 0xb, 0xb9, 0x88, - 0xba, 0x89, 0x49, 0x7e, 0xa, 0xb, 0x59, 0xa, 0x94, 0x81, 0x7b, 0x99, - 0x80, 0x1b, 0x85, 0x86, 0x87, 0x7d, 0x6d, 0xe6, 0x25, 0xa6, 0x62, 0x1f, - 0xb, 0xf7, 0x38, 0xf7, 0xae, 0x15, 0xf7, 0x1e, 0xad, 0xa1, 0xb0, 0xdb, - 0xb, 0x56, 0x1d, 0xf7, 0x4, 0xb, 0xfb, 0x7c, 0x7, 0x66, 0x7d, 0x7a, - 0x6a, 0x88, 0x6a, 0xa, 0x5a, 0xb, 0x76, 0xf7, 0xbb, 0xf7, 0x54, 0x6b, - 0xab, 0xb, 0x9f, 0x8b, 0xaa, 0xf7, 0xbe, 0xad, 0xf7, 0x19, 0x76, 0xc5, - 0x76, 0xf7, 0x16, 0xad, 0xb, 0x15, 0xe7, 0x6, 0xf7, 0xf, 0xf7, 0x44, - 0x5, 0xb, 0xf7, 0x1f, 0xf7, 0x1e, 0xf7, 0x1f, 0xb, 0x8a, 0x1d, 0xf7, - 0x36, 0xb2, 0xb, 0xfb, 0x5a, 0xfb, 0x5a, 0xfb, 0x2a, 0xfb, 0x31, 0xfb, - 0x5b, 0x1e, 0xd2, 0x16, 0xf7, 0x39, 0xf7, 0xc, 0xf7, 0x1f, 0xf7, 0x31, - 0xf7, 0x31, 0xf7, 0xb, 0xb, 0x96, 0x75, 0x5, 0x43, 0x1d, 0x6e, 0x57, - 0x4c, 0xb9, 0x7a, 0xa7, 0x1e, 0xb, 0x5b, 0xa, 0xa8, 0x4d, 0xd4, 0xb9, - 0xaf, 0xa9, 0xbf, 0xca, 0x5d, 0x9b, 0x6f, 0x1e, 0xb, 0x1a, 0xf7, 0x34, - 0x7, 0x6a, 0xad, 0xa7, 0x70, 0xc3, 0x1b, 0xf1, 0xe5, 0xdc, 0xf7, 0x39, - 0xf7, 0x36, 0x28, 0xd9, 0x37, 0x3b, 0x6d, 0x5e, 0x6a, 0xb, 0x1e, 0xf7, - 0x5f, 0xf7, 0x38, 0x5, 0x8f, 0x7, 0xfb, 0x62, 0xf7, 0x3a, 0x5, 0xb, - 0x1, 0x5c, 0x1d, 0x3, 0xb, 0x80, 0xa1, 0x5, 0x56, 0x6d, 0xfb, 0x5, - 0x4a, 0xfb, 0x12, 0x1a, 0x57, 0xb, 0xfb, 0x96, 0x4e, 0x1d, 0xb, 0xfc, - 0x5, 0xa0, 0x76, 0xf8, 0x61, 0x77, 0xb, 0xf7, 0x66, 0xf7, 0x6e, 0xfb, - 0x35, 0xb, 0x43, 0x1d, 0x6d, 0x57, 0x4c, 0xb9, 0x7b, 0xa7, 0x1e, 0xb, - 0x4e, 0xa, 0xf1, 0xf7, 0x4, 0x25, 0x7e, 0x1d, 0xa8, 0x67, 0x67, 0xb, - 0x8f, 0x9e, 0x8e, 0x19, 0x5b, 0x1d, 0xba, 0x88, 0xb, 0x1, 0xed, 0xf7, - 0x33, 0xf7, 0xd6, 0xb7, 0x3, 0xb, 0xfb, 0x2e, 0xfb, 0x13, 0x83, 0xb, - 0x7d, 0xaa, 0xf8, 0x3d, 0xaa, 0xb, 0x7, 0xf7, 0x53, 0xf7, 0xc1, 0x9f, - 0xab, 0xa8, 0x62, 0xa, 0xb, 0x5d, 0x62, 0xb3, 0x5c, 0x1b, 0x72, 0x71, - 0x74, 0x70, 0x70, 0xa5, 0x74, 0xa4, 0x1f, 0xba, 0xb4, 0xb3, 0xb9, 0x1b, - 0xb, 0x77, 0x75, 0x84, 0xa6, 0xc3, 0xdc, 0xc4, 0xa7, 0x9e, 0x1f, 0xb, - 0x15, 0xc5, 0x6, 0xf8, 0x4b, 0xf9, 0x50, 0x5, 0x53, 0x6, 0xb, 0x1e, - 0x69, 0xf7, 0x7f, 0xad, 0x7, 0xb, 0xd6, 0x78, 0xbc, 0xf8, 0xf7, 0xae, - 0xb, 0x6f, 0xa1, 0x75, 0xa7, 0xa7, 0xa1, 0xa1, 0xa7, 0xa7, 0x75, 0xa1, - 0x6f, 0x6f, 0x75, 0x75, 0x6f, 0x1e, 0xb, 0x67, 0xa7, 0x81, 0x1d, 0x6f, - 0x6e, 0x67, 0x1e, 0xb, 0xb4, 0x6, 0x9c, 0xd3, 0xa6, 0xf7, 0xc, 0xa2, - 0x1a, 0xb6, 0x72, 0xa8, 0x63, 0x63, 0x73, 0x6e, 0x60, 0xb, 0xf7, 0x19, - 0xf7, 0x1f, 0x2d, 0xb, 0xf7, 0x1f, 0xf7, 0x1c, 0xe4, 0xb, 0x89, 0x1d, - 0x4a, 0x89, 0xa, 0x8c, 0x6b, 0x1d, 0xb, 0x77, 0x1, 0xf3, 0xf7, 0x36, - 0xf7, 0x2c, 0xaf, 0x3, 0xb, 0x8, 0xa6, 0x8c, 0x15, 0xf7, 0x19, 0xf7, - 0x3e, 0x5, 0x8d, 0xfb, 0x40, 0xfb, 0x1b, 0x6, 0xb, 0x6e, 0xaf, 0xaf, - 0xb, 0x90, 0x98, 0x77, 0x1d, 0xe3, 0xf6, 0xa8, 0x1a, 0xb, 0xf7, 0x7c, - 0x7, 0xf7, 0x2, 0x3c, 0xb3, 0x54, 0xb, 0xf7, 0x4c, 0x47, 0xcf, 0xb, - 0xfb, 0x26, 0x34, 0x85, 0xb, 0x66, 0x15, 0xf7, 0x90, 0x6, 0xc1, 0x88, - 0x7e, 0xf7, 0x42, 0xfb, 0x42, 0x1b, 0xb, 0x1f, 0x52, 0x5f, 0xc4, 0xfb, - 0xd7, 0x6, 0x57, 0x76, 0x88, 0x67, 0x86, 0x1e, 0xb, 0x83, 0xa, 0xda, - 0x77, 0xa, 0x13, 0xe0, 0xb, 0x30, 0xfb, 0x4c, 0x76, 0xf7, 0x54, 0xc2, - 0xf8, 0xa, 0x76, 0xa0, 0xc4, 0xb, 0xf8, 0x52, 0x76, 0xf7, 0x60, 0xac, - 0x88, 0x77, 0x12, 0xbc, 0xf7, 0x45, 0xb, 0x1a, 0xfc, 0x64, 0x7, 0xb, - 0x6d, 0x7d, 0x74, 0xb, 0x66, 0x15, 0xf7, 0x95, 0x6, 0xc1, 0x76, 0xf7, - 0x42, 0xfb, 0x42, 0xb, 0xf7, 0x6a, 0xf2, 0x15, 0xf7, 0x87, 0x7, 0x99, - 0xb2, 0xc3, 0xb8, 0xb, 0xc4, 0x76, 0xf8, 0xf, 0x77, 0xb, 0x76, 0xf7, - 0xe3, 0x77, 0x12, 0xb, 0xfb, 0x83, 0x33, 0x4b, 0xfb, 0x4, 0x5b, 0x82, - 0x9b, 0xb3, 0xb, 0xf7, 0x6d, 0x63, 0x7, 0x78, 0x86, 0x86, 0x7c, 0x74, - 0x1b, 0xb, 0x5c, 0xaf, 0x65, 0xbb, 0xba, 0xb1, 0xb0, 0xbb, 0xb9, 0x65, - 0xb, 0x3, 0xa0, 0x16, 0xf8, 0x13, 0x6, 0x9b, 0xf7, 0x34, 0x5, 0xb, - 0x15, 0xf7, 0x62, 0xfb, 0x3a, 0x5, 0xb, 0x7, 0xc4, 0x9e, 0x99, 0xb, - 0xf7, 0x1f, 0x3, 0xb, 0x84, 0x1e, 0xe, 0x9f, 0x8b, 0xae, 0xf8, 0x47, - 0x77, 0xf7, 0x53, 0xae, 0xb, 0xfb, 0x52, 0x69, 0x7, 0xbc, 0x8d, 0x5c, - 0x80, 0x1f, 0xb, 0x77, 0x12, 0xb7, 0xf7, 0x1, 0xf7, 0x85, 0xf7, 0xb, - 0xb, 0x74, 0x93, 0x95, 0x78, 0x1f, 0x99, 0x6f, 0x76, 0x9c, 0xb, 0xfb, - 0xce, 0xf8, 0xb9, 0x98, 0x1d, 0xb, 0xf7, 0x74, 0x15, 0x6d, 0x65, 0x33, - 0x20, 0x6e, 0x1a, 0xb, 0x7, 0x62, 0x81, 0x81, 0x5d, 0x8b, 0xa, 0xf7, - 0x3d, 0x1, 0xb4, 0xf7, 0x3d, 0x3, 0xb4, 0xb, 0xf9, 0xd, 0x15, 0x4f, - 0xbc, 0x5d, 0xc5, 0x1e, 0xb, 0x3e, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, - 0xaa, 0xb, 0xfb, 0x55, 0xfb, 0x35, 0xfb, 0x17, 0xfb, 0x6e, 0xb, 0xf7, - 0x6, 0xd1, 0xf7, 0x6, 0xb, 0x12, 0xa4, 0xf7, 0x1f, 0xb, 0xf7, 0x83, - 0xad, 0x6, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp deleted file mode 100644 index e3eea02753..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp +++ /dev/null @@ -1,1737 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSerifBoldItalicFontData[20733] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x19, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x2d, 0x42, - 0x6f, 0x6c, 0x64, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, - 0x1, 0x29, 0xf8, 0x10, 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, - 0x1e, 0x3, 0xf8, 0x14, 0x4, 0x7d, 0xc, 0x2, 0xfb, 0x5c, 0xfb, 0x8e, - 0xfa, 0x6e, 0xf9, 0xf9, 0x5, 0x1c, 0x6, 0xf6, 0xf, 0x1c, 0x8, 0x4d, - 0x11, 0xb7, 0x1c, 0x4a, 0x64, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, - 0x4a, 0x59, 0x45, 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, - 0x4f, 0x54, 0x46, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x20, 0x49, 0x74, 0x61, - 0x6c, 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, 0x20, 0x53, 0x65, 0x72, - 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x71, 0x2, 0x0, 0x1, 0x0, - 0xf, 0x0, 0x18, 0x0, 0x1d, 0x0, 0x30, 0x0, 0x43, 0x0, 0x50, 0x0, - 0x5a, 0x0, 0x61, 0x0, 0x6d, 0x0, 0x84, 0x0, 0x87, 0x0, 0xc2, 0x0, - 0xe0, 0x0, 0xe3, 0x0, 0xf7, 0x1, 0xa, 0x1, 0x17, 0x1, 0x1f, 0x1, - 0x32, 0x1, 0x39, 0x1, 0x4a, 0x1, 0x6f, 0x1, 0x76, 0x1, 0x89, 0x1, - 0xab, 0x1, 0xb8, 0x1, 0xed, 0x1, 0xf4, 0x1, 0xfe, 0x2, 0xe, 0x2, - 0x1e, 0x2, 0x26, 0x2, 0x35, 0x2, 0x47, 0x2, 0x59, 0x2, 0x5f, 0x2, - 0x6c, 0x2, 0x75, 0x2, 0x7e, 0x2, 0x8d, 0x2, 0x96, 0x2, 0xa4, 0x2, - 0xb2, 0x2, 0xbd, 0x2, 0xca, 0x2, 0xd3, 0x2, 0xdb, 0x2, 0xfb, 0x3, - 0x5, 0x3, 0xb, 0x3, 0x12, 0x3, 0x2e, 0x3, 0x36, 0x3, 0x3e, 0x3, - 0x44, 0x3, 0x4b, 0x3, 0x52, 0x3, 0x6c, 0x3, 0x7a, 0x3, 0x80, 0x3, - 0x84, 0x3, 0x8b, 0x3, 0xa1, 0x3, 0xa4, 0x3, 0xad, 0x3, 0xb9, 0x3, - 0xbf, 0x3, 0xd3, 0x3, 0xe7, 0x3, 0xee, 0x3, 0xf3, 0x4, 0x5, 0x4, - 0xd, 0x4, 0x12, 0x4, 0x23, 0x4, 0x30, 0x4, 0x34, 0x4, 0x39, 0x4, - 0x49, 0x4, 0x59, 0x4, 0x68, 0x4, 0x71, 0x4, 0x78, 0x4, 0x7e, 0x4, - 0x83, 0x4, 0x88, 0x4, 0x96, 0x4, 0xa3, 0x4, 0xaa, 0x4, 0xb7, 0x4, - 0xbf, 0x4, 0xc4, 0x4, 0xd0, 0x4, 0xd6, 0x4, 0xd9, 0x4, 0xdf, 0x4, - 0xea, 0x4, 0xf5, 0x4, 0xfd, 0x5, 0x2, 0x5, 0xc, 0x5, 0x16, 0x5, - 0x20, 0x5, 0x2a, 0x5, 0x2e, 0x5, 0x37, 0x5, 0x40, 0x5, 0x49, 0x5, - 0x4d, 0x5, 0x53, 0x5, 0x57, 0x5, 0x5d, 0x5, 0x62, 0x66, 0xa9, 0x6d, - 0xb0, 0xb0, 0xa9, 0xa9, 0x36, 0x1d, 0x6d, 0x6d, 0x66, 0x1e, 0xb, 0xe2, - 0x5, 0xa2, 0x98, 0x9b, 0x96, 0x25, 0x1d, 0xb, 0x15, 0xbc, 0x21, 0xa, - 0xb, 0x5c, 0x79, 0x9c, 0xa2, 0x90, 0x8d, 0x91, 0x8e, 0x90, 0x3f, 0xa, - 0x5c, 0x69, 0x85, 0x5e, 0x88, 0x2c, 0xa, 0xb, 0x15, 0xf7, 0x58, 0xae, - 0x6, 0x23, 0x1d, 0xf7, 0x78, 0xf7, 0x69, 0x15, 0xf7, 0x28, 0xf7, 0x87, - 0x74, 0x1d, 0xe, 0xa2, 0x1a, 0xab, 0x6f, 0x9a, 0x76, 0x75, 0x76, 0x74, - 0x70, 0x71, 0x1e, 0xb, 0xf7, 0x27, 0x5, 0x98, 0x80, 0x79, 0xa0, 0x30, - 0x1d, 0xb, 0x7b, 0xa, 0xfb, 0x3, 0x26, 0x1d, 0xb, 0x44, 0xa, 0xfb, - 0x3, 0x8e, 0x7a, 0x4a, 0x6f, 0xa, 0x27, 0xa, 0xb, 0x15, 0xc9, 0x8b, - 0x60, 0x6b, 0x1f, 0x5d, 0x2e, 0xfb, 0xa5, 0x38, 0xa, 0xcd, 0xf7, 0x78, - 0xb3, 0xf7, 0x1f, 0x97, 0x84, 0x55, 0xa, 0xb, 0x27, 0x1d, 0xe, 0x15, - 0x43, 0xb2, 0x51, 0xd7, 0xf7, 0x6, 0xd9, 0xf7, 0xf, 0xf3, 0xd6, 0x63, - 0xc3, 0x3d, 0xfb, 0x0, 0x3a, 0xfb, 0xe, 0x21, 0x1e, 0xf7, 0x9, 0xe3, - 0x15, 0xac, 0x95, 0xa0, 0xdc, 0xb6, 0x1b, 0xa4, 0x92, 0x74, 0x76, 0x6b, - 0x6f, 0x32, 0x81, 0x69, 0x1f, 0x6c, 0x82, 0x79, 0x3f, 0x61, 0x1b, 0x75, - 0x81, 0x9e, 0x9e, 0xac, 0xa2, 0xe2, 0x95, 0xad, 0x1f, 0xb, 0xf7, 0xb2, - 0xf7, 0x2f, 0x15, 0x8d, 0x8a, 0x5, 0x81, 0x6d, 0x7f, 0x69, 0x60, 0x1a, - 0x53, 0xbf, 0x8b, 0x9a, 0xdf, 0xc3, 0xea, 0xad, 0x9e, 0x1e, 0x76, 0x98, - 0x5, 0x7f, 0x8d, 0xb, 0x2b, 0xa, 0xe, 0x83, 0x6e, 0x86, 0x79, 0x7b, - 0x1a, 0x57, 0xbb, 0x7d, 0x9e, 0xc8, 0xc4, 0xd5, 0xbf, 0xac, 0x1e, 0x76, - 0x9a, 0x5, 0xb, 0xfb, 0x5a, 0xfb, 0x27, 0x6a, 0x95, 0x2a, 0xee, 0xde, - 0xbe, 0xde, 0xb7, 0xa5, 0x1f, 0xfb, 0x26, 0x8c, 0x15, 0xb, 0x70, 0x1b, - 0x70, 0x79, 0x73, 0x76, 0x76, 0xa0, 0x7a, 0x98, 0x82, 0x1f, 0xb, 0x40, - 0x1d, 0x83, 0x96, 0x89, 0x43, 0xa, 0xb, 0xab, 0xc8, 0xf7, 0x67, 0xb2, - 0xf7, 0x23, 0x1f, 0x47, 0x7b, 0x2d, 0x82, 0x63, 0x88, 0x8, 0x70, 0x7, - 0xa8, 0xb, 0x65, 0x1d, 0xf7, 0x71, 0x25, 0xa, 0xb, 0x74, 0x3d, 0xfb, - 0x8e, 0x5f, 0x1a, 0x73, 0x96, 0x60, 0xc5, 0xd5, 0xb5, 0xc5, 0xd9, 0xbe, - 0x1e, 0xb, 0xf7, 0x85, 0xf7, 0x5, 0x15, 0x70, 0xf7, 0x2f, 0x6b, 0xf7, - 0x27, 0x78, 0xba, 0x66, 0x81, 0x55, 0x82, 0x51, 0x86, 0x8, 0x70, 0x7, - 0xb2, 0x95, 0x8b, 0xfb, 0x2c, 0xad, 0x1f, 0x93, 0x67, 0xb0, 0xfb, 0x48, - 0x5a, 0x1a, 0xb, 0xb0, 0xb0, 0x6d, 0xa9, 0x66, 0x66, 0xb, 0xf8, 0xbe, - 0x6, 0xc6, 0xf7, 0x56, 0x72, 0x90, 0x5, 0xfb, 0x12, 0x46, 0xfb, 0x4, - 0x62, 0xfb, 0xc, 0x1b, 0xb, 0x1b, 0x63, 0x7e, 0x66, 0x79, 0x70, 0xa1, - 0x6a, 0xb0, 0xee, 0xe3, 0xeb, 0xf7, 0x3d, 0xf1, 0x1f, 0x94, 0x9a, 0xf7, - 0x15, 0xf7, 0x64, 0xf7, 0x9, 0x1a, 0xac, 0x6d, 0xa8, 0x6a, 0x6b, 0x73, - 0x6c, 0x72, 0xb, 0x83, 0xba, 0x2b, 0xf8, 0xe4, 0x18, 0x72, 0x6, 0xfc, - 0x8, 0xfc, 0xe4, 0xb, 0xf7, 0x3f, 0xf7, 0x2d, 0x15, 0xe7, 0xe2, 0xf8, - 0x28, 0xf7, 0x4c, 0xf3, 0x8c, 0x20, 0x76, 0xfb, 0x8, 0x2d, 0xfc, 0x19, - 0xfb, 0x46, 0x50, 0x5e, 0xb0, 0x55, 0x1d, 0xd2, 0xfb, 0x17, 0xf7, 0x3b, - 0xf7, 0x8d, 0xf7, 0x45, 0xf7, 0x9b, 0xf7, 0x56, 0xf7, 0x42, 0xfb, 0x19, - 0xd1, 0x5d, 0x1d, 0xfb, 0x78, 0xfb, 0x89, 0x1e, 0xb, 0x5, 0xbe, 0x6, - 0x35, 0x4e, 0xa, 0xb, 0x6c, 0x1d, 0x53, 0x55, 0x73, 0x1b, 0x85, 0x32, - 0xa, 0xb, 0x1b, 0xe2, 0xa1, 0xdf, 0xae, 0x94, 0x1f, 0x62, 0x6, 0x78, - 0x82, 0x81, 0x74, 0x69, 0x1b, 0xb, 0x1f, 0xdd, 0xf7, 0xb6, 0x9c, 0xcb, - 0xa5, 0x90, 0xbe, 0x8e, 0x19, 0xae, 0xfb, 0xcb, 0x7, 0xb, 0x1b, 0x85, - 0x88, 0x90, 0x94, 0x28, 0x1d, 0xb, 0x3c, 0x41, 0x1f, 0xa6, 0x86, 0xb6, - 0xf7, 0x52, 0x5, 0xfc, 0xb0, 0x68, 0x6, 0xc9, 0xb, 0x71, 0x9e, 0x61, - 0xba, 0xb2, 0xa9, 0xa9, 0xaf, 0xb0, 0x6c, 0xaa, 0x65, 0x5e, 0x76, 0x61, - 0x73, 0x1e, 0xb, 0x65, 0xa8, 0x6e, 0xb1, 0xb1, 0xa9, 0xa8, 0xb1, 0xb1, - 0x6d, 0xa9, 0x65, 0x65, 0x6e, 0x6d, 0x65, 0x1e, 0xb, 0x15, 0x62, 0xa9, - 0x45, 0x1d, 0xb, 0xe9, 0xf7, 0xc8, 0x7d, 0x8a, 0x21, 0x74, 0x32, 0x87, - 0x6d, 0xa, 0xad, 0xb, 0x6a, 0xb7, 0xb4, 0xac, 0xab, 0xb5, 0xb4, 0x6a, - 0xb, 0x15, 0x42, 0x1d, 0xf7, 0x68, 0x16, 0x42, 0x1d, 0xe, 0x89, 0x7f, - 0x1f, 0xfb, 0x14, 0xfc, 0x5e, 0x7b, 0x52, 0x76, 0x82, 0x60, 0x85, 0x19, - 0xb, 0x1f, 0xd0, 0xf7, 0x9, 0x5, 0xf7, 0x6b, 0x6, 0xb, 0xf7, 0x77, - 0x70, 0xa, 0x8e, 0x88, 0x90, 0x9d, 0xb6, 0xb4, 0x9b, 0x4a, 0xa, 0xb, - 0x1f, 0x51, 0xfb, 0x65, 0x5, 0x21, 0x6e, 0x64, 0xfb, 0x1e, 0xfb, 0x23, - 0x1b, 0xb, 0x65, 0xfb, 0x32, 0xfb, 0x15, 0xfb, 0x3c, 0xfb, 0x2e, 0x1e, - 0xb, 0x15, 0xdd, 0x6, 0xf7, 0x36, 0xf7, 0x42, 0x5, 0x53, 0x6, 0xfb, - 0x1b, 0xb, 0x1, 0xf7, 0x6c, 0xf7, 0x21, 0x15, 0x72, 0x88, 0xb, 0x88, - 0xf7, 0xb, 0xf7, 0x62, 0xf7, 0xb, 0xb, 0x2a, 0x7d, 0x71, 0x92, 0xab, - 0x1f, 0x7f, 0x57, 0x15, 0x7b, 0xaa, 0x98, 0x85, 0xa4, 0x1b, 0xf7, 0x22, - 0xf7, 0x1a, 0xf7, 0x56, 0xf7, 0x2f, 0xe7, 0x58, 0xad, 0x4f, 0x60, 0x54, - 0x70, 0x3c, 0xb, 0xf7, 0x21, 0xf7, 0x4a, 0x15, 0xf7, 0x55, 0xa9, 0xcb, - 0xb, 0x56, 0xa, 0xf8, 0x47, 0x77, 0xb, 0x1, 0x4e, 0x1d, 0x3, 0xf7, - 0x8, 0xb, 0x58, 0x8b, 0xab, 0xf8, 0xee, 0xae, 0x1, 0x75, 0x16, 0xf8, - 0xbd, 0x6, 0xc6, 0xf7, 0x56, 0x73, 0x90, 0x5, 0xfb, 0x11, 0x46, 0xfb, - 0x4, 0x61, 0xfb, 0xc, 0x1b, 0xb, 0x1b, 0x29, 0x78, 0xfb, 0x8, 0x89, - 0x1f, 0xe, 0xef, 0x1e, 0xfb, 0x24, 0xc4, 0x15, 0x2a, 0xb, 0xb1, 0x90, - 0x19, 0x61, 0xa, 0xb, 0x19, 0xae, 0xfb, 0x64, 0x68, 0x7, 0xb, 0x7e, - 0xd2, 0x58, 0x76, 0xf8, 0x46, 0xb, 0x1, 0xf7, 0xd5, 0xf7, 0x11, 0x3, - 0xf7, 0x5, 0xc8, 0x15, 0xa4, 0xbd, 0xf7, 0x42, 0xa2, 0xbb, 0x1e, 0xb1, - 0x9d, 0xb1, 0xb8, 0xb2, 0x1b, 0xa1, 0x9d, 0xb, 0x77, 0x1, 0xf7, 0x77, - 0xf9, 0x67, 0x5b, 0xa, 0xea, 0xe3, 0x2c, 0x3b, 0x1d, 0xb, 0x58, 0x1d, - 0xb0, 0x90, 0x77, 0xb, 0x77, 0x52, 0x1d, 0xb, 0xfb, 0x1, 0xfb, 0x6f, - 0xfb, 0x5f, 0xb, 0x15, 0xf7, 0x82, 0x6, 0xbe, 0xf7, 0x6, 0x5, 0x7b, - 0x6, 0x69, 0x75, 0x7b, 0x80, 0x57, 0x1b, 0x34, 0x8d, 0x6, 0xf7, 0xf, - 0xb, 0x26, 0x1d, 0xe, 0x4c, 0x1d, 0x26, 0x30, 0xf0, 0x5, 0x59, 0x6, - 0xe, 0x15, 0xc5, 0x6, 0xf8, 0x47, 0xf9, 0x48, 0x5, 0x8d, 0x51, 0x7, - 0xb, 0xf7, 0x19, 0x1a, 0xdb, 0x50, 0xb, 0xce, 0xaa, 0x97, 0xad, 0xa4, - 0x1a, 0xc3, 0x54, 0xa5, 0x61, 0x47, 0x62, 0x62, 0x64, 0x71, 0x1e, 0x99, - 0x7e, 0x5, 0xb, 0x1f, 0x3b, 0xfb, 0xb3, 0xfb, 0x6b, 0xf8, 0x65, 0x5, - 0xfb, 0x57, 0x68, 0x6, 0xc0, 0x86, 0x96, 0x8f, 0x9e, 0x5f, 0xb, 0xc7, - 0x79, 0xad, 0xf9, 0xd, 0xad, 0xb, 0xfc, 0x14, 0x97, 0x76, 0xb, 0x1f, - 0xb1, 0x70, 0x7e, 0x94, 0x79, 0x1b, 0x73, 0x7e, 0x79, 0x70, 0x84, 0x90, - 0x64, 0xdd, 0xf0, 0xe4, 0xb, 0xfb, 0x6e, 0x7e, 0xcb, 0xf8, 0xe, 0xac, - 0xb, 0xf8, 0x1a, 0x62, 0xa, 0xb, 0x1e, 0xae, 0xfb, 0xaf, 0x68, 0x7, - 0xbb, 0x84, 0x92, 0x8a, 0x9d, 0x54, 0xe3, 0xfb, 0x96, 0x18, 0xb, 0x19, - 0xf7, 0x78, 0xf7, 0x69, 0x15, 0xf7, 0x28, 0xf7, 0x87, 0x74, 0x1d, 0xe, - 0x77, 0x4d, 0x1d, 0xb, 0xf7, 0x30, 0x35, 0xe1, 0xb, 0xef, 0xf7, 0xde, - 0x5e, 0x82, 0x66, 0x83, 0x2c, 0x7d, 0x19, 0x89, 0x76, 0x5, 0xa8, 0xb3, - 0xb, 0x15, 0xcb, 0xf7, 0x83, 0x5, 0xa0, 0x8f, 0x91, 0xa2, 0xb2, 0x1b, - 0xe0, 0x8b, 0x23, 0x76, 0xb, 0xa7, 0x88, 0x5, 0xa3, 0x94, 0x98, 0xb0, - 0xb4, 0x1b, 0xf7, 0x25, 0x6, 0xfb, 0xb8, 0xb, 0x15, 0xc1, 0x54, 0xc4, - 0x51, 0xbc, 0x56, 0x8, 0xb, 0xc0, 0x76, 0xf8, 0x13, 0x77, 0x1, 0xb, - 0x9b, 0xb5, 0x1b, 0xf7, 0x51, 0xb, 0xb0, 0xfb, 0x87, 0x5, 0xb, 0xf7, - 0xbc, 0xae, 0x6, 0xb, 0x4a, 0xc1, 0x8b, 0x9b, 0xd9, 0xba, 0xd8, 0xc1, - 0xab, 0x1e, 0x75, 0x98, 0x5, 0xb, 0x7d, 0x4e, 0x83, 0x41, 0x83, 0x6d, - 0xa, 0xad, 0x8c, 0xa8, 0x8b, 0x69, 0xb, 0x28, 0x30, 0xee, 0x5, 0x59, - 0x6, 0xe, 0xfb, 0x6e, 0xfb, 0x61, 0xf7, 0x7, 0xf7, 0x5f, 0x77, 0xf8, - 0x5, 0x77, 0xb, 0x1a, 0xc3, 0xee, 0xbe, 0x9e, 0x95, 0x1e, 0xb, 0xf7, - 0x0, 0xa5, 0xa1, 0xb, 0x1a, 0x86, 0x8b, 0x85, 0x89, 0x85, 0x1e, 0xfb, - 0x19, 0xfc, 0x65, 0xb, 0x45, 0x1d, 0xac, 0x62, 0x60, 0xb, 0x3b, 0x1d, - 0xe, 0xfb, 0xdd, 0xf8, 0xad, 0x76, 0xb, 0x5, 0xb4, 0x96, 0xab, 0x88, - 0x9a, 0x1b, 0xf7, 0x35, 0x8c, 0xb, 0x1f, 0xab, 0x85, 0xbe, 0xf7, 0x7e, - 0x5, 0x6d, 0x6, 0x7b, 0xb, 0x6d, 0xa, 0xac, 0xa9, 0x8d, 0x68, 0x1f, - 0xe, 0xf7, 0xb, 0x40, 0xd6, 0xb, 0x69, 0xa9, 0x79, 0xa6, 0xb1, 0xa4, - 0xa6, 0xb8, 0xb7, 0xb, 0x77, 0x12, 0xf1, 0xf7, 0xd, 0xf7, 0x10, 0xf7, - 0xd, 0xb, 0xe3, 0x8b, 0xf7, 0x29, 0xfb, 0x22, 0x76, 0xf1, 0xc8, 0xb, - 0xfb, 0x61, 0xb0, 0xf7, 0x2f, 0xae, 0xf8, 0x5, 0xd2, 0xb, 0x1b, 0x85, - 0x87, 0xb, 0x21, 0x97, 0x76, 0xa9, 0x76, 0xf8, 0x1a, 0xd3, 0xb, 0x83, - 0x93, 0x1b, 0x90, 0x8f, 0x8f, 0x97, 0x1f, 0xb, 0xc7, 0x8b, 0xae, 0x6e, - 0x76, 0xf9, 0x1d, 0xae, 0xb, 0x83, 0x1d, 0x12, 0xb, 0x76, 0xf9, 0x53, - 0x77, 0x1, 0xb, 0x15, 0x75, 0x1d, 0xb, 0x7e, 0xa8, 0xf8, 0x33, 0xa8, - 0xb, 0xa5, 0xaf, 0xa1, 0xa4, 0xb, 0x1, 0x0, 0x1, 0x6, 0x0, 0x68, - 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, 0x0, 0x0, 0x42, 0x20, 0x0, 0x67, - 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, - 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, - 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, - 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, - 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, - 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, - 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, - 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, - 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, - 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, - 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, - 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, - 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, - 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, - 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, - 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, - 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, - 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, - 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, 0x0, 0x0, 0x91, 0x0, 0x0, 0x8c, - 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, 0x0, 0x0, 0x94, 0x0, 0x0, 0xc0, - 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, 0x1, 0x0, 0xe4, 0x0, 0x0, 0x65, - 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, - 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x86, 0x0, 0x0, 0x6f, - 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, 0x0, 0x0, 0x8, 0x0, 0x0, 0x75, - 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, 0x0, 0x0, 0x76, 0x0, 0x0, 0x70, - 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, 0x1, 0x0, 0x6b, 0x1, 0x0, 0x63, - 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, 0x0, 0x0, 0xa6, 0x0, 0x0, 0x6d, - 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, 0x0, 0x4, 0x0, 0x7, 0x0, 0x5e, - 0x0, 0x9d, 0x1, 0x14, 0x1, 0xa9, 0x1, 0xe3, 0x2, 0xb8, 0x2, 0xe4, - 0x3, 0x17, 0x3, 0x49, 0x4, 0x25, 0x4, 0x51, 0x4, 0x80, 0x4, 0x96, - 0x4, 0xa4, 0x4, 0xb9, 0x5, 0x3, 0x5, 0x44, 0x5, 0x9a, 0x6, 0x2, - 0x6, 0x47, 0x6, 0x98, 0x7, 0x2, 0x7, 0x2e, 0x7, 0xae, 0x8, 0xe, - 0x8, 0x3a, 0x8, 0x8b, 0x8, 0xaf, 0x8, 0xd1, 0x8, 0xf2, 0x9, 0x57, - 0xa, 0x11, 0xa, 0x3b, 0xa, 0xc1, 0xb, 0x17, 0xb, 0x57, 0xb, 0x76, - 0xb, 0xd9, 0xc, 0x5a, 0xc, 0xda, 0xd, 0x15, 0xd, 0x74, 0xd, 0xed, - 0xe, 0x14, 0xe, 0x94, 0xe, 0xd1, 0xf, 0x14, 0xf, 0x6c, 0x10, 0x7, - 0x10, 0x7e, 0x10, 0xff, 0x11, 0x41, 0x11, 0x8c, 0x11, 0xdb, 0x12, 0x59, - 0x12, 0xd5, 0x13, 0x19, 0x13, 0x1f, 0x13, 0x4d, 0x13, 0x64, 0x13, 0x95, - 0x13, 0xb6, 0x13, 0xc2, 0x13, 0xe4, 0x14, 0x1c, 0x14, 0x6d, 0x14, 0xbc, - 0x15, 0x38, 0x15, 0x70, 0x15, 0xee, 0x16, 0x9b, 0x16, 0xff, 0x17, 0x1e, - 0x17, 0x72, 0x17, 0xd0, 0x18, 0x0, 0x18, 0xa0, 0x18, 0xd3, 0x19, 0x10, - 0x19, 0x45, 0x19, 0xb2, 0x19, 0xfd, 0x1a, 0x64, 0x1a, 0xab, 0x1a, 0xd9, - 0x1b, 0x2d, 0x1b, 0xa5, 0x1c, 0x31, 0x1c, 0x53, 0x1c, 0x97, 0x1c, 0xf5, - 0x1d, 0x10, 0x1d, 0x6a, 0x1d, 0xb5, 0x1e, 0x3, 0x1e, 0x79, 0x1f, 0x31, - 0x1f, 0xa7, 0x20, 0x30, 0x20, 0x5f, 0x21, 0x28, 0x21, 0x42, 0x21, 0xdf, - 0x22, 0x4d, 0x22, 0x81, 0x22, 0xa0, 0x23, 0x55, 0x23, 0x69, 0x23, 0x9c, - 0x23, 0xdb, 0x23, 0xff, 0x24, 0x32, 0x24, 0x44, 0x24, 0xc7, 0x25, 0x10, - 0x25, 0x20, 0x25, 0x57, 0x25, 0x90, 0x25, 0xca, 0x25, 0xf4, 0x26, 0x2e, - 0x26, 0x79, 0x26, 0xd3, 0x27, 0x34, 0x27, 0x51, 0x27, 0x63, 0x27, 0x6f, - 0x27, 0xcc, 0x27, 0xf5, 0x28, 0x20, 0x28, 0xc6, 0x29, 0x5d, 0x29, 0x9b, - 0x29, 0xdf, 0x2a, 0x7, 0x2a, 0x36, 0x2a, 0x58, 0x2a, 0x87, 0x2a, 0xab, - 0x2a, 0xd1, 0x2b, 0x29, 0x2b, 0x84, 0x2b, 0x8c, 0x2b, 0x94, 0x2b, 0xa5, - 0x2b, 0xd2, 0x2b, 0xf5, 0x2c, 0x25, 0x2c, 0xa4, 0x2c, 0xcc, 0x2c, 0xf7, - 0x2d, 0x24, 0x2d, 0x59, 0x2d, 0x9f, 0x2e, 0x13, 0x2e, 0xb5, 0x2e, 0xde, - 0x2e, 0xf5, 0x2f, 0xb, 0x2f, 0x45, 0x2f, 0x67, 0x2f, 0xd1, 0x30, 0x8a, - 0x31, 0xe, 0x31, 0x1b, 0x31, 0x24, 0x31, 0x3c, 0x31, 0x5f, 0x31, 0x6e, - 0x31, 0x82, 0x31, 0xa2, 0x31, 0xcb, 0x32, 0x31, 0x32, 0x85, 0x32, 0x94, - 0x32, 0xba, 0x32, 0xc7, 0x32, 0xf4, 0x33, 0x15, 0x33, 0x47, 0x33, 0xbe, - 0x33, 0xdc, 0x33, 0xf0, 0x34, 0x6, 0x34, 0x22, 0x34, 0x4d, 0x34, 0x7f, - 0x34, 0xbb, 0x34, 0xc2, 0x35, 0x4, 0x35, 0x50, 0x36, 0x3, 0x36, 0x9a, - 0x37, 0x2f, 0x37, 0x9c, 0x38, 0xb, 0x38, 0x19, 0x38, 0x65, 0x38, 0xee, - 0x38, 0xfe, 0x39, 0xa, 0x39, 0x35, 0x39, 0x49, 0x39, 0x70, 0x39, 0xa3, - 0x39, 0xf1, 0x3a, 0x9, 0x3a, 0x1a, 0x3a, 0x2c, 0x3a, 0x59, 0x3a, 0x7f, - 0x3a, 0xa9, 0x3a, 0xe2, 0x3b, 0x1b, 0x3b, 0x5b, 0x3b, 0xfb, 0x3c, 0xdb, - 0x3c, 0xfc, 0x3d, 0x34, 0x3d, 0x67, 0x3d, 0x7c, 0x3d, 0x90, 0x3d, 0xaa, - 0x3e, 0x30, 0x3e, 0xd6, 0x3e, 0xe8, 0x3f, 0x9b, 0x40, 0x47, 0xfc, 0x30, - 0xe, 0xfc, 0x30, 0xe, 0xfb, 0xa5, 0x72, 0xf7, 0x24, 0xfb, 0x18, 0xf7, - 0x24, 0xf8, 0xb0, 0x77, 0xac, 0x77, 0x12, 0xce, 0xf7, 0x28, 0x13, 0xa8, - 0xf7, 0x3b, 0xf7, 0x68, 0x15, 0xa8, 0x83, 0xd2, 0xf7, 0x39, 0xd8, 0xf7, - 0x2f, 0x97, 0xa9, 0x19, 0x93, 0xa0, 0x91, 0xa0, 0x9d, 0x1a, 0x13, 0x98, - 0xb4, 0x71, 0xa8, 0x6b, 0x50, 0x6b, 0x38, 0x61, 0x85, 0x1e, 0x7a, 0xfb, - 0x7, 0x80, 0xfb, 0x15, 0x77, 0x24, 0x8, 0x27, 0xfb, 0x2f, 0x15, 0x13, - 0x68, 0x64, 0xa8, 0x6c, 0xb7, 0xb8, 0xa9, 0xad, 0xaf, 0xb1, 0x6a, 0xaf, - 0x60, 0x6a, 0x64, 0x70, 0x5c, 0x1e, 0xe, 0x20, 0xf8, 0x37, 0x76, 0xf7, - 0xb3, 0x77, 0x1, 0xf7, 0x1c, 0xf8, 0x22, 0x15, 0xb3, 0x6, 0xde, 0xf7, - 0x4e, 0x5, 0x91, 0x99, 0x90, 0x9f, 0x9e, 0x1a, 0xa4, 0x7e, 0xa2, 0x66, - 0x65, 0x70, 0x68, 0x65, 0x88, 0x1e, 0xf7, 0x90, 0xfb, 0x6a, 0x15, 0xb1, - 0x6, 0xe0, 0xf7, 0x4e, 0x5, 0x91, 0x98, 0x8e, 0x9d, 0x9c, 0x1a, 0xa6, - 0x7b, 0xa5, 0x6b, 0x65, 0x70, 0x68, 0x65, 0x88, 0x1e, 0xe, 0xa0, 0x76, - 0xf7, 0x66, 0xca, 0x4c, 0xd4, 0xf7, 0x1a, 0xd4, 0x4c, 0xca, 0xf7, 0x66, - 0x77, 0x12, 0x13, 0xb4, 0x75, 0x16, 0xe0, 0xf7, 0x66, 0x5, 0x2b, 0x6, - 0x9f, 0xca, 0x5, 0xf1, 0x6, 0xcb, 0xf7, 0x2e, 0x5, 0x25, 0x6, 0x9f, - 0xca, 0x5, 0xf7, 0x3, 0x6, 0xdc, 0xf7, 0x66, 0x5, 0xd0, 0x6, 0x3b, - 0xfb, 0x66, 0x5, 0xf7, 0x14, 0x6, 0xdc, 0xf7, 0x66, 0x5, 0xd1, 0x6, - 0x3b, 0xfb, 0x66, 0x5, 0xdd, 0x6, 0x77, 0x4c, 0x5, 0x30, 0x6, 0x13, - 0xcc, 0x4b, 0xfb, 0x2e, 0x5, 0xe6, 0x6, 0x77, 0x4c, 0x5, 0x2a, 0x6, - 0x36, 0xfb, 0x66, 0x5, 0x44, 0x6, 0xe0, 0xf7, 0x66, 0x5, 0xfb, 0x14, - 0x6, 0x36, 0xfb, 0x66, 0x5, 0xf7, 0x3, 0xf7, 0xa5, 0x15, 0xf7, 0x14, - 0x6, 0xcb, 0xf7, 0x2e, 0x5, 0xfb, 0x14, 0x6, 0xe, 0x3c, 0x76, 0xf0, - 0xaa, 0xf8, 0xf1, 0xac, 0xca, 0x77, 0x1, 0xda, 0xee, 0xf7, 0x25, 0xf7, - 0x1, 0x3, 0xf7, 0x13, 0x92, 0x15, 0x62, 0x96, 0x62, 0x93, 0x4a, 0xc7, - 0xb5, 0xf7, 0x22, 0x18, 0xa1, 0x85, 0x8e, 0x2e, 0x98, 0x57, 0xd8, 0x68, - 0x19, 0xd5, 0xf7, 0x99, 0x5, 0x20, 0xd8, 0x72, 0xdd, 0xc7, 0x1a, 0xe7, - 0xcf, 0xc3, 0xf7, 0x19, 0x96, 0x94, 0x8a, 0x8a, 0x98, 0x1e, 0x9d, 0xcc, - 0x5, 0xbd, 0x6, 0x77, 0x43, 0xb5, 0x86, 0xcc, 0x69, 0xa8, 0x73, 0x19, - 0x61, 0xfb, 0x19, 0x76, 0x90, 0x8e, 0xb8, 0x8d, 0xe1, 0x33, 0xa3, 0x19, - 0x50, 0xfb, 0x79, 0x5, 0xdb, 0x46, 0xc7, 0x46, 0x32, 0x1a, 0xfb, 0x1, - 0x22, 0x50, 0xfb, 0x29, 0x1e, 0x6f, 0x26, 0x5, 0x57, 0x6, 0xf7, 0x2a, - 0xf8, 0x9e, 0x15, 0xc2, 0xf7, 0x69, 0x5, 0x8e, 0x84, 0x8d, 0x8a, 0x7c, - 0x1b, 0x45, 0x68, 0x48, 0x5b, 0x68, 0x9a, 0x71, 0xc2, 0x64, 0x1f, 0x4d, - 0xfc, 0x1a, 0x15, 0xe2, 0xbd, 0xc5, 0xda, 0xc6, 0x68, 0x9c, 0x68, 0xa8, - 0x1f, 0xe, 0xf7, 0x3f, 0x7d, 0xa5, 0x85, 0x76, 0xf7, 0xe3, 0xa1, 0xf7, - 0xc8, 0xa5, 0x8c, 0x77, 0x12, 0xf7, 0x0, 0xdf, 0xf7, 0x20, 0xdf, 0xc9, - 0xdf, 0xf7, 0x20, 0xdf, 0x13, 0xb7, 0x80, 0xf8, 0xe4, 0x7d, 0x3b, 0xa, - 0xfc, 0x9, 0xf7, 0xc8, 0x3b, 0xa, 0x13, 0x6f, 0x80, 0xf8, 0xba, 0xf7, - 0xdf, 0x15, 0x4f, 0x6, 0xfc, 0xe9, 0xfd, 0x48, 0x5, 0xc7, 0x6, 0xe, - 0xf7, 0x8, 0x79, 0xd1, 0x45, 0xdc, 0x4e, 0x76, 0xca, 0xaf, 0xc0, 0xaf, - 0xf8, 0x74, 0xac, 0x12, 0xa5, 0xf7, 0x19, 0xd6, 0xf7, 0xd, 0xf7, 0xe, - 0xdb, 0x75, 0xa1, 0x13, 0x3f, 0x80, 0xf8, 0x1a, 0xb7, 0x15, 0x13, 0x4f, - 0x80, 0x73, 0xa3, 0xb6, 0x65, 0xd4, 0x1b, 0x13, 0x3f, 0x80, 0xe3, 0xb9, - 0xc4, 0xb4, 0xae, 0x1f, 0x71, 0xa0, 0x5, 0x13, 0x4f, 0x40, 0x70, 0x7f, - 0x75, 0x80, 0x72, 0x1b, 0x5c, 0x52, 0xac, 0xb0, 0x73, 0x1f, 0xe3, 0xf7, - 0xa, 0x8a, 0x81, 0xa3, 0xa6, 0xb4, 0xba, 0x9b, 0x8e, 0xb0, 0x93, 0x8, - 0xae, 0xfb, 0x68, 0x68, 0x7, 0xa6, 0x86, 0xa8, 0x89, 0x6a, 0x1a, 0x68, - 0x61, 0x61, 0x6b, 0x63, 0x1e, 0x6e, 0xb5, 0x5c, 0xf3, 0x81, 0xdc, 0x8, - 0xb8, 0x9e, 0xf7, 0x1d, 0xc0, 0xf0, 0x1a, 0xc2, 0x5d, 0xc5, 0x2e, 0xfb, - 0xb, 0x4a, 0x2b, 0xfb, 0x2, 0x6a, 0x91, 0x6b, 0x90, 0x70, 0x1e, 0xfb, - 0x5, 0x4d, 0xfb, 0x13, 0x75, 0xfb, 0x24, 0x1a, 0x13, 0x3f, 0x80, 0xfb, - 0x30, 0xf7, 0x23, 0x78, 0xb7, 0xb8, 0xd9, 0x92, 0xc3, 0xd6, 0x1e, 0x6f, - 0xaf, 0x15, 0x13, 0x8f, 0x80, 0x80, 0x74, 0x6c, 0x7a, 0x60, 0x1b, 0x30, - 0x67, 0xdd, 0xc0, 0xe8, 0xc3, 0xac, 0xc6, 0xa9, 0x1f, 0x13, 0x3f, 0x80, - 0xab, 0xfb, 0x21, 0xb8, 0x43, 0xab, 0x59, 0x8, 0x8f, 0xf7, 0xf6, 0x15, - 0x84, 0xb6, 0x87, 0xa5, 0xa3, 0x1a, 0xc8, 0x92, 0xc8, 0xc3, 0xb4, 0x9d, - 0x5b, 0x6b, 0x66, 0x78, 0x59, 0x2f, 0x5b, 0x1e, 0xe, 0xfc, 0x14, 0xf8, - 0x37, 0x76, 0xf7, 0xb3, 0x77, 0x1, 0xf7, 0x21, 0xf7, 0xb, 0x3, 0xf7, - 0x3b, 0xf8, 0x22, 0x15, 0xe4, 0xf7, 0x4e, 0x5, 0x92, 0x98, 0x90, 0x9c, - 0x9e, 0x1a, 0xa6, 0x7f, 0xa4, 0x64, 0x64, 0x71, 0x69, 0x64, 0x88, 0x1e, - 0x76, 0xfb, 0x6a, 0x5, 0xe, 0x84, 0xa, 0xa7, 0xe9, 0x3, 0xf7, 0x3e, - 0xfb, 0x47, 0x15, 0xa2, 0x9a, 0x5, 0x70, 0xbb, 0x5f, 0xf7, 0x26, 0xf7, - 0x15, 0x1a, 0xf7, 0xd0, 0xf7, 0x26, 0xf7, 0xe, 0xd7, 0xcf, 0x1e, 0x79, - 0x9f, 0x5, 0xfb, 0x9f, 0xfb, 0x4c, 0x6c, 0xfb, 0x6a, 0xfb, 0x14, 0x1a, - 0xfb, 0x51, 0xf0, 0x2f, 0xb4, 0x52, 0x1e, 0xe, 0x84, 0xa, 0xf7, 0x45, - 0xe9, 0x3, 0x5f, 0xfb, 0x33, 0x15, 0xf7, 0x1f, 0xf7, 0x1c, 0xdd, 0xf7, - 0x2, 0xf7, 0x65, 0x1a, 0xdf, 0x82, 0xf7, 0x57, 0x4c, 0xea, 0x1e, 0xa2, - 0x9a, 0x5, 0xdf, 0x22, 0xc6, 0xfb, 0x19, 0xfb, 0x2b, 0x1a, 0xfb, 0x5e, - 0xfb, 0xb, 0xfb, 0x30, 0xfb, 0x47, 0xfb, 0x9, 0x1e, 0xe, 0xf7, 0xa2, - 0x76, 0xdf, 0xf7, 0x0, 0xc1, 0xf5, 0xdf, 0x77, 0x1, 0xf7, 0x69, 0xee, - 0xe9, 0xbd, 0x3, 0xf7, 0x87, 0xf8, 0x54, 0x15, 0x6e, 0x78, 0x7c, 0x77, - 0x7c, 0x7a, 0x8, 0x76, 0x7b, 0x77, 0x65, 0x6b, 0x1b, 0x72, 0x72, 0x9b, - 0xaa, 0xbc, 0xaa, 0x92, 0xc7, 0x8e, 0x1f, 0xab, 0x8e, 0xaa, 0x8e, 0x9a, - 0x9e, 0x8, 0x94, 0x7, 0x7b, 0x96, 0x63, 0x94, 0x72, 0x8e, 0x8, 0x57, - 0x93, 0x66, 0x87, 0xbd, 0x1a, 0xa7, 0x97, 0xa2, 0xb6, 0xa7, 0x98, 0x6f, - 0x71, 0xa0, 0x1e, 0xa4, 0x6c, 0xa4, 0x70, 0x98, 0x8a, 0x92, 0x90, 0x18, - 0xb4, 0x81, 0xa0, 0x80, 0x9e, 0x1e, 0x80, 0x9e, 0x82, 0x9a, 0xa3, 0x1a, - 0xa3, 0x97, 0xa8, 0xb0, 0xa7, 0xa0, 0x75, 0x6c, 0x74, 0x82, 0x7d, 0x80, - 0x78, 0x1e, 0x80, 0x78, 0x82, 0x75, 0x60, 0x1a, 0x97, 0x86, 0xaa, 0xa0, - 0x99, 0x9f, 0x9b, 0xa2, 0x19, 0xa8, 0x9f, 0x96, 0xa0, 0xac, 0x1b, 0xae, - 0x9a, 0x6c, 0x7b, 0x5b, 0x5c, 0x83, 0x5e, 0x88, 0x1f, 0x70, 0x8a, 0x6e, - 0x85, 0x76, 0x7b, 0x8, 0x81, 0x7, 0x9c, 0x7f, 0xa1, 0x84, 0xaf, 0x88, - 0x8, 0xb7, 0x88, 0xbd, 0x7d, 0x63, 0x1a, 0x5f, 0x5e, 0x86, 0x86, 0x6c, - 0x7f, 0xa0, 0xb0, 0x70, 0x1e, 0x78, 0xa4, 0x7f, 0x9d, 0x70, 0x98, 0x83, - 0x85, 0x18, 0x68, 0x93, 0x76, 0x93, 0x78, 0x1e, 0x97, 0x70, 0x95, 0x7e, - 0x73, 0x1a, 0x6f, 0x7b, 0x71, 0x6c, 0x72, 0x72, 0x99, 0xb4, 0x8a, 0x1e, - 0x8a, 0xa2, 0x99, 0x9a, 0x96, 0xa2, 0x8, 0x94, 0x9e, 0x95, 0xa3, 0xaf, - 0x1a, 0xe, 0x2f, 0xa0, 0x76, 0xf7, 0x70, 0xcc, 0xf7, 0x71, 0x77, 0x12, - 0xf7, 0x83, 0xe5, 0x3b, 0xcb, 0x13, 0xf0, 0xac, 0xf7, 0x70, 0x15, 0x13, - 0xe8, 0xf7, 0x6c, 0xfb, 0x70, 0xcb, 0xf7, 0x70, 0xf7, 0x74, 0xcc, 0xfb, - 0x74, 0xf7, 0x71, 0x4b, 0xfb, 0x71, 0xfb, 0x6c, 0x6, 0xe, 0xfc, 0x30, - 0xfb, 0x35, 0x62, 0xa, 0x7f, 0x6d, 0x1d, 0x13, 0xd0, 0x4f, 0x81, 0xa, - 0xdf, 0x62, 0x1d, 0x9a, 0x70, 0x1e, 0x13, 0xe0, 0x62, 0x6e, 0x6c, 0x61, - 0x6d, 0x9a, 0x7d, 0x9b, 0x7f, 0x1f, 0x13, 0xd0, 0x9e, 0x7e, 0x9f, 0x81, - 0x75, 0x1a, 0x53, 0x28, 0x57, 0x78, 0x81, 0x1e, 0xe, 0xfb, 0xdd, 0xf7, - 0x3a, 0xf7, 0x8, 0x1, 0x8d, 0xf7, 0x3a, 0x15, 0xf7, 0x88, 0x6, 0xa4, - 0xf7, 0x8, 0x5, 0xfb, 0x87, 0x6, 0xe, 0xfc, 0x30, 0x7e, 0xf7, 0x28, - 0x1, 0x82, 0xf7, 0x28, 0x3, 0x82, 0xc8, 0x3c, 0xa, 0xfc, 0x14, 0x8e, - 0x8d, 0x1d, 0x8d, 0x79, 0x15, 0xf7, 0xe8, 0xf9, 0x53, 0x5, 0x45, 0x6, - 0xfb, 0xe4, 0xfd, 0x53, 0x5, 0xe, 0x7d, 0xa8, 0xf9, 0x13, 0xa8, 0x1, - 0xf8, 0xa, 0xf2, 0x3, 0x9c, 0xf7, 0x63, 0x15, 0x30, 0xa4, 0xfb, 0x16, - 0xf7, 0x13, 0xf7, 0x38, 0xf7, 0x24, 0xf7, 0x82, 0xf7, 0x7e, 0xf7, 0x15, - 0x4b, 0xeb, 0x32, 0xfb, 0x47, 0xfb, 0x14, 0xfb, 0xa2, 0xfb, 0x62, 0x1e, - 0xf7, 0x4c, 0xf7, 0x81, 0x15, 0xd5, 0xa2, 0xb6, 0xf7, 0x1c, 0xc4, 0x1b, - 0xb0, 0x98, 0x6b, 0x5a, 0x47, 0x32, 0xfc, 0x7e, 0xfb, 0x8, 0xfb, 0xb, - 0xf7, 0x25, 0xf8, 0x2d, 0x9f, 0x91, 0x1f, 0xe, 0x8b, 0xac, 0xf9, 0x1e, - 0x77, 0x1, 0x90, 0x16, 0xf7, 0xed, 0xac, 0x6, 0x53, 0x60, 0x8e, 0xa9, - 0x8f, 0x8c, 0x8f, 0x8c, 0x90, 0x1f, 0xf7, 0x3a, 0xf8, 0xf0, 0x49, 0x7b, - 0x52, 0x7d, 0xfb, 0x27, 0x75, 0x19, 0x89, 0x74, 0x5, 0x8e, 0x9f, 0xa6, - 0x8d, 0x9f, 0x1b, 0x93, 0xae, 0x8a, 0x74, 0x88, 0x8b, 0x87, 0x8a, 0x87, - 0x1f, 0xfb, 0x18, 0xfc, 0x87, 0x80, 0x61, 0x4c, 0x88, 0x5e, 0x8a, 0x19, - 0xe, 0x8b, 0xf7, 0x3, 0xdb, 0x77, 0xf8, 0x3a, 0xe5, 0x1, 0xf7, 0xcc, - 0xf7, 0x1a, 0x3, 0x70, 0x16, 0xf8, 0x3, 0x6, 0xda, 0xf7, 0x53, 0x5, - 0x72, 0x6, 0x4d, 0x69, 0x73, 0x79, 0x3a, 0x1b, 0xfb, 0x29, 0x6, 0xf7, - 0x58, 0xf7, 0x3b, 0x5, 0xcf, 0xc5, 0xd7, 0xd5, 0xda, 0x1a, 0xf7, 0x11, - 0x51, 0xd0, 0x22, 0xfb, 0x11, 0x49, 0x22, 0x50, 0x6f, 0x1e, 0xa1, 0x7f, - 0x5, 0xa0, 0x99, 0xb6, 0xcc, 0xd7, 0x1b, 0xe8, 0x8b, 0x36, 0x78, 0x3e, - 0x59, 0x3f, 0x52, 0x45, 0x1f, 0x5a, 0x50, 0x8b, 0x8b, 0xfb, 0x4b, 0xfb, - 0x4b, 0x8, 0xe, 0x7e, 0xb3, 0xeb, 0x77, 0xf8, 0x91, 0xd2, 0x12, 0xf7, - 0xb1, 0xf7, 0xf, 0x34, 0xf7, 0x15, 0x13, 0xf0, 0xf7, 0x14, 0xf7, 0xef, - 0x15, 0xef, 0xc4, 0x66, 0x27, 0x2e, 0x58, 0x31, 0x51, 0x68, 0x76, 0xa4, - 0xa4, 0x77, 0x1f, 0xa2, 0x78, 0x7b, 0xa2, 0x74, 0x1b, 0x7a, 0x63, 0x84, - 0x56, 0x80, 0x92, 0x4a, 0xf7, 0x14, 0xf7, 0x30, 0xf7, 0x18, 0xec, 0xf7, - 0x12, 0xf0, 0x6a, 0xc1, 0x5f, 0xab, 0x1f, 0x13, 0xe8, 0xf1, 0xbe, 0x9c, - 0xb7, 0xb5, 0x1a, 0xe7, 0x3a, 0xc4, 0x4a, 0x23, 0x4c, 0x46, 0x4b, 0x63, - 0x1e, 0xa0, 0x7e, 0x5, 0xae, 0xa6, 0xa6, 0xb3, 0xcb, 0x1b, 0xc9, 0xa2, - 0x65, 0x63, 0xfb, 0x9, 0xfb, 0x25, 0x63, 0x5f, 0x83, 0x1f, 0xe, 0xa0, - 0x76, 0xf7, 0x2a, 0xed, 0xf8, 0x47, 0x77, 0x1, 0xf7, 0x50, 0xf7, 0x14, - 0xf7, 0xd, 0xcd, 0x3, 0xf7, 0x79, 0xf7, 0x2a, 0x15, 0x62, 0xfb, 0x2a, - 0x5, 0xf7, 0x14, 0x6, 0xb5, 0xf7, 0x2a, 0x5, 0xcf, 0x6, 0xa6, 0xed, - 0x5, 0x46, 0x6, 0xf7, 0xb, 0xf8, 0x47, 0x5, 0x49, 0x6, 0xfc, 0x3c, - 0xfc, 0x40, 0x6f, 0x22, 0x5, 0xf7, 0xef, 0xf8, 0xb, 0x15, 0x8d, 0x89, - 0x3d, 0xfb, 0xa7, 0x5, 0xfb, 0x5f, 0x6, 0xe, 0x7e, 0xb3, 0x63, 0xf7, - 0x1c, 0xf7, 0x8d, 0xf7, 0x4, 0xd7, 0xf7, 0x1, 0x12, 0xf7, 0xc7, 0xf4, - 0x13, 0xb8, 0xd4, 0xf8, 0x8, 0x15, 0xf7, 0x2a, 0xdf, 0x38, 0x25, 0x40, - 0x52, 0x36, 0x3d, 0x6d, 0x7f, 0xa6, 0xa4, 0x7b, 0x1f, 0x13, 0x78, 0xa2, - 0x7d, 0x7a, 0xa0, 0x68, 0x1b, 0x6f, 0x6c, 0x7b, 0x5f, 0x6d, 0xac, 0x5d, - 0xeb, 0xf7, 0x29, 0xf7, 0x25, 0xed, 0xf7, 0x3c, 0xe6, 0x22, 0xf7, 0x20, - 0xfb, 0x24, 0x1f, 0xad, 0xd7, 0x5, 0xf7, 0x92, 0x6, 0xaf, 0xf7, 0x1, - 0x5, 0xfb, 0xaf, 0x6, 0xe, 0x7c, 0xab, 0xf8, 0x1, 0xb2, 0xf7, 0x96, - 0x77, 0x1, 0xa2, 0xf7, 0x4, 0xf7, 0x34, 0xf7, 0x10, 0x3, 0xf7, 0x7b, - 0xf8, 0x2d, 0x15, 0xbb, 0xee, 0xdd, 0xe8, 0xf7, 0x28, 0xc1, 0x85, 0xa3, - 0x18, 0xfb, 0xdd, 0x5b, 0xfb, 0x2b, 0xfb, 0x8c, 0xfb, 0x4a, 0x1a, 0x3f, - 0x9f, 0xfb, 0x20, 0xf7, 0x32, 0xf7, 0xf, 0xf7, 0xb, 0xf7, 0x1, 0xf7, - 0x30, 0xf7, 0x10, 0x4b, 0xba, 0x4a, 0x6e, 0x6d, 0x88, 0x82, 0x73, 0x1e, - 0x2b, 0xfb, 0xce, 0x15, 0xc7, 0xa1, 0xd8, 0xa0, 0xc6, 0x1e, 0xde, 0xab, - 0x8d, 0x93, 0xb7, 0x1b, 0xca, 0x8b, 0x58, 0x77, 0x3f, 0x59, 0xfb, 0x1c, - 0x88, 0x80, 0x1f, 0x5c, 0x79, 0x72, 0x73, 0x6c, 0x1b, 0x53, 0x8a, 0xc0, - 0xa4, 0x1f, 0xe, 0xa0, 0x76, 0xf8, 0xc0, 0xf7, 0x5, 0x1, 0xde, 0xf8, - 0x68, 0x3, 0xf7, 0x24, 0x16, 0xf8, 0x11, 0xf9, 0x31, 0x5, 0xfc, 0x11, - 0x6, 0x34, 0xfb, 0x52, 0x5, 0xa5, 0x6, 0xc8, 0xae, 0xa3, 0x9b, 0xf7, - 0x1, 0x1b, 0xf7, 0xf, 0x6, 0xfb, 0xd6, 0xfc, 0xc0, 0x5, 0xe, 0x7e, - 0xa9, 0xf9, 0xd, 0xac, 0x12, 0x8e, 0xec, 0x94, 0xf7, 0x3, 0xe1, 0xf7, - 0x5, 0x67, 0xe8, 0x13, 0xf8, 0xf7, 0x4b, 0xf7, 0xe8, 0x15, 0x59, 0x7a, - 0xfb, 0x16, 0x5e, 0xfb, 0x14, 0x1a, 0x6b, 0x9b, 0xfb, 0x17, 0xf7, 0x49, - 0xf7, 0x9, 0xf1, 0xdd, 0xf7, 0x11, 0xe5, 0x50, 0xca, 0x70, 0xa8, 0x1e, - 0x90, 0x7, 0x13, 0xf4, 0xd8, 0xaa, 0xcd, 0xb6, 0xe2, 0x1a, 0xf7, 0x1, - 0xfb, 0xc, 0xab, 0x55, 0xfb, 0x2, 0x38, 0x39, 0x43, 0x3e, 0xb4, 0x43, - 0xac, 0x68, 0x1e, 0xa5, 0x73, 0x15, 0x13, 0xf8, 0xd7, 0x31, 0xa0, 0x71, - 0x4f, 0x1a, 0x4c, 0x65, 0x4a, 0x47, 0x39, 0x79, 0xd7, 0xb7, 0xea, 0xbe, - 0xbd, 0xc5, 0xb2, 0x1e, 0xf0, 0xdd, 0x15, 0x5b, 0xb8, 0x61, 0xb7, 0xc8, - 0x1a, 0xb5, 0xa2, 0xc2, 0xc6, 0x1e, 0x13, 0xf4, 0xba, 0xad, 0x65, 0x45, - 0x4b, 0x65, 0x65, 0x68, 0x66, 0x1f, 0xe, 0x96, 0x76, 0xf7, 0x93, 0x77, - 0xf8, 0x3e, 0xab, 0x1, 0xf7, 0x45, 0xf7, 0xf8, 0x15, 0xa0, 0x9e, 0xf7, - 0x1c, 0xaf, 0xd1, 0x1e, 0xb2, 0x9f, 0xa6, 0xa8, 0xad, 0x1b, 0xbe, 0x8a, - 0x5c, 0x6e, 0x88, 0x88, 0x2e, 0x63, 0x25, 0x1f, 0x37, 0x6b, 0x7c, 0x86, - 0x6c, 0x1b, 0x7c, 0x59, 0x8c, 0xce, 0x1f, 0xfb, 0x4b, 0xfc, 0x2, 0x15, - 0xf7, 0xfc, 0xbe, 0xf7, 0xd, 0xf7, 0xa7, 0xf7, 0x2a, 0x1a, 0xf7, 0x18, - 0x57, 0xe0, 0xfb, 0x2, 0xfb, 0x41, 0x34, 0xfb, 0x2f, 0xfb, 0x8, 0x28, - 0xc7, 0x47, 0xe6, 0xa6, 0x9b, 0x91, 0x93, 0x9d, 0x1e, 0x55, 0xfb, 0x9, - 0x21, 0x2c, 0xfb, 0x9, 0x6b, 0x8, 0xe, 0xfb, 0xdd, 0x7e, 0xf7, 0x26, - 0xf7, 0x47, 0xf7, 0x27, 0x12, 0xa2, 0xf7, 0x28, 0x54, 0xf7, 0x28, 0x13, - 0xe0, 0xa2, 0xc8, 0x43, 0x1d, 0xaa, 0x62, 0x60, 0x6c, 0x6b, 0x63, 0x1e, - 0x13, 0xd0, 0xe8, 0xf7, 0xd9, 0x43, 0x1d, 0xab, 0x62, 0x60, 0x6c, 0x6a, - 0x63, 0x1e, 0xe, 0xfb, 0xdd, 0xfb, 0x36, 0x76, 0xf7, 0xd0, 0x77, 0xf7, - 0x5b, 0xf7, 0x27, 0x1, 0xa2, 0x6d, 0x1d, 0x4c, 0xf7, 0x28, 0x3, 0x72, - 0xfb, 0x33, 0x15, 0x9e, 0x96, 0xee, 0xbc, 0xc4, 0x1a, 0xa2, 0x79, 0x93, - 0x78, 0x98, 0x1e, 0x7a, 0x97, 0x7b, 0x99, 0xaa, 0x1a, 0xb6, 0xa8, 0xaa, - 0xb4, 0xa7, 0xc5, 0x7a, 0x3c, 0xfb, 0x18, 0xfb, 0x44, 0x37, 0x7c, 0x87, - 0x1e, 0xf7, 0x14, 0xf8, 0xcd, 0x15, 0xb3, 0xaa, 0xac, 0xb6, 0xb4, 0xac, - 0x6b, 0x62, 0x60, 0x6a, 0x6c, 0x62, 0x5f, 0x6d, 0xac, 0xb4, 0x1e, 0xe, - 0x2f, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xaa, 0xf8, 0x90, 0x3, 0xf8, - 0x7d, 0x83, 0x15, 0xcf, 0x7, 0xfc, 0x6, 0xf7, 0x55, 0xf8, 0x38, 0xf7, - 0x55, 0x5, 0xcf, 0x7, 0xfc, 0x90, 0xfb, 0x7d, 0x5, 0x53, 0x7, 0xe, - 0x2f, 0xf1, 0xe5, 0xdd, 0xe4, 0x67, 0xcf, 0x12, 0x13, 0xa0, 0xde, 0xf7, - 0xdf, 0x15, 0xf8, 0x5a, 0xcf, 0xfc, 0x5a, 0x6, 0x59, 0xfb, 0xb8, 0x15, - 0xf8, 0x5a, 0x6, 0x13, 0xc0, 0xcc, 0xfc, 0x5a, 0x7, 0xe, 0x2f, 0x98, - 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xf8, 0xaf, 0xf7, 0x75, 0x15, 0xc3, 0x7, - 0xfc, 0x5e, 0xf7, 0x7d, 0x5, 0x47, 0x7, 0xf8, 0x6, 0xfb, 0x55, 0xfc, - 0x38, 0xfb, 0x55, 0x5, 0x47, 0x7, 0xe, 0x7e, 0xf7, 0x28, 0xf7, 0xf5, - 0xf7, 0x58, 0x6c, 0xaa, 0x12, 0xda, 0xf7, 0x28, 0xfb, 0x0, 0xf7, 0xe, - 0xf1, 0xf7, 0x13, 0x13, 0xcc, 0xf7, 0x3b, 0xf7, 0x6b, 0x15, 0xa8, 0x84, - 0xa3, 0xc6, 0x9a, 0xaa, 0xb6, 0xa7, 0x19, 0xf7, 0x19, 0xe2, 0xc6, 0xbc, - 0xd9, 0x1a, 0xba, 0x65, 0xec, 0xfb, 0x29, 0xfb, 0x1, 0x54, 0x4d, 0x47, - 0x67, 0xa5, 0x6d, 0xae, 0xab, 0xa8, 0xa4, 0xad, 0x9f, 0x83, 0x98, 0x83, - 0x95, 0x1e, 0x84, 0x94, 0x85, 0x92, 0x94, 0x1a, 0x13, 0xb4, 0xa0, 0xb6, - 0x9c, 0xa7, 0xaa, 0xa8, 0x7b, 0x49, 0x55, 0x71, 0x59, 0x3c, 0x2e, 0x1e, - 0x4e, 0x3f, 0x84, 0x59, 0x88, 0x6a, 0x8, 0x33, 0xfb, 0x2e, 0x3c, 0xa, - 0xf7, 0x3e, 0x79, 0xb9, 0xf7, 0x6, 0xb0, 0x66, 0xbb, 0x5c, 0x77, 0xe7, - 0x77, 0xf7, 0xa4, 0xbb, 0xf7, 0x17, 0xb2, 0x12, 0xca, 0xe6, 0xf7, 0xa, - 0xd7, 0xf8, 0xc, 0xb9, 0x13, 0xaf, 0xc0, 0xf7, 0xf0, 0xf7, 0xaa, 0x15, - 0xf7, 0xc, 0xe3, 0xd0, 0xbb, 0xa8, 0x9a, 0x75, 0x60, 0xfb, 0x22, 0x40, - 0x45, 0x5f, 0x6a, 0x6f, 0xa7, 0xc7, 0x1e, 0xf7, 0x22, 0x4c, 0x15, 0x7e, - 0xa2, 0x4f, 0xcf, 0xf7, 0xd, 0xcf, 0xf7, 0x1e, 0xf3, 0xf7, 0x40, 0xfb, - 0x27, 0xf7, 0x15, 0xfb, 0x50, 0xfb, 0x5c, 0xfb, 0x40, 0xfb, 0x28, 0xfb, - 0x70, 0xfb, 0x1d, 0xf7, 0x8, 0xfb, 0x5a, 0xf7, 0x9e, 0xdb, 0xd1, 0xa7, - 0xaa, 0xcc, 0x1e, 0x7e, 0xae, 0x5, 0x70, 0x50, 0x57, 0x76, 0x30, 0x1b, - 0xfb, 0x3f, 0xfb, 0xc, 0xf7, 0x25, 0xf7, 0x24, 0xf7, 0x77, 0xf7, 0x19, - 0xf1, 0xf7, 0x28, 0xf7, 0x4b, 0xf5, 0xfb, 0x26, 0xfb, 0x8, 0x1f, 0x13, - 0xcf, 0xc0, 0x34, 0x59, 0xfb, 0xa, 0x3e, 0x6c, 0x85, 0xa4, 0x9f, 0x92, - 0x8c, 0x91, 0x8c, 0x92, 0x1e, 0xcc, 0xf7, 0x95, 0x5, 0x44, 0x6, 0x80, - 0x65, 0x5, 0xa4, 0x7d, 0x81, 0xa6, 0x5b, 0x1b, 0xfb, 0x1d, 0x4b, 0xfb, - 0x35, 0x3f, 0x1f, 0x13, 0x9f, 0xc0, 0xfb, 0x3, 0xd0, 0x73, 0xa8, 0xc7, - 0xba, 0xc3, 0x9b, 0x96, 0x1e, 0xe, 0x51, 0x1d, 0x1, 0x40, 0xf9, 0x28, - 0x3, 0xf7, 0x15, 0x16, 0xae, 0x7, 0x5f, 0x76, 0x9e, 0x9f, 0x90, 0x8d, - 0x90, 0x8e, 0x92, 0x3f, 0xa, 0x5b, 0x69, 0x83, 0x5e, 0x2c, 0xa, 0x68, - 0x7, 0xf8, 0xc, 0xf8, 0x7f, 0x15, 0x74, 0x1d, 0xfb, 0x4d, 0x6, 0xe, - 0x90, 0x8b, 0xab, 0xf7, 0xc6, 0xa9, 0xf7, 0xa1, 0xae, 0x12, 0xf8, 0x3e, - 0xf7, 0x2d, 0x25, 0xea, 0x2c, 0xf7, 0x27, 0x13, 0xf0, 0x73, 0x16, 0xf7, - 0xaf, 0x6, 0xf7, 0x27, 0xf7, 0x3a, 0xbe, 0xf7, 0x31, 0xf1, 0x38, 0xa7, - 0x58, 0x9b, 0x1f, 0x8d, 0x7, 0x13, 0xe4, 0xcd, 0x9b, 0xf7, 0xc, 0xaf, - 0xf7, 0xd, 0x1a, 0xf7, 0x1f, 0xfb, 0x45, 0x8c, 0x50, 0x1e, 0xfb, 0xa4, - 0x68, 0x6, 0xb5, 0xaa, 0x86, 0x63, 0x1f, 0xfb, 0x19, 0xfc, 0x76, 0x7a, - 0x4d, 0x6f, 0x86, 0x68, 0x86, 0x19, 0xf7, 0xb9, 0xf7, 0xc3, 0x15, 0x13, - 0xf0, 0xd3, 0xd9, 0x76, 0xfb, 0x1, 0x5f, 0x72, 0xfb, 0x18, 0xfb, 0x1b, - 0x65, 0x74, 0x95, 0xa4, 0x93, 0x8c, 0x93, 0x8f, 0x96, 0x1f, 0xd5, 0xf7, - 0xa6, 0x15, 0xc8, 0xf7, 0x75, 0x5, 0x9f, 0x90, 0x91, 0xa3, 0xb1, 0x1b, - 0x13, 0xe8, 0xd1, 0x9f, 0x55, 0x55, 0xfb, 0x38, 0xfb, 0xc, 0x8e, 0x3b, - 0x1f, 0xe, 0x90, 0x79, 0xc0, 0xf8, 0xfb, 0xae, 0x1, 0xab, 0xf7, 0x2e, - 0x3, 0xf8, 0xb6, 0xf7, 0x2d, 0x15, 0x2f, 0x42, 0x4b, 0x71, 0x3c, 0x1b, - 0x7d, 0xfb, 0x16, 0x9f, 0xf7, 0x47, 0xf7, 0x45, 0xf3, 0xf7, 0x83, 0xf7, - 0x35, 0xe3, 0xc5, 0x49, 0x32, 0x7f, 0x8a, 0x7e, 0x89, 0x7e, 0x81, 0x1d, - 0x81, 0x83, 0x7e, 0x75, 0x1b, 0x82, 0x7f, 0x8f, 0x90, 0x7c, 0x1f, 0x94, - 0x70, 0x65, 0x96, 0x54, 0x1b, 0xfb, 0x87, 0xfb, 0x44, 0xfb, 0x79, 0xfb, - 0x72, 0xfb, 0x49, 0xf7, 0x22, 0x44, 0xf7, 0x16, 0xf7, 0x16, 0xe6, 0xd3, - 0xd8, 0xbe, 0x1f, 0xe, 0xc7, 0x8b, 0xad, 0xf8, 0xf0, 0xaa, 0x1, 0xf8, - 0xae, 0xf7, 0x27, 0x3, 0xf7, 0x52, 0xf7, 0x12, 0x15, 0xf7, 0x14, 0xf8, - 0x6e, 0x80, 0x1d, 0xfb, 0x2c, 0x2c, 0x25, 0x60, 0xfb, 0x93, 0xfb, 0x97, - 0x61, 0x7d, 0x99, 0xa3, 0x9a, 0x8f, 0x9d, 0x77, 0xa, 0x8c, 0xf7, 0x13, - 0xf7, 0x73, 0x5d, 0xa, 0x77, 0x83, 0x72, 0xfb, 0xa, 0xfc, 0x37, 0x1e, - 0x75, 0x3d, 0x6b, 0x83, 0x6a, 0x86, 0x8, 0xe, 0x51, 0xa, 0x1, 0x70, - 0x16, 0x37, 0x1d, 0x55, 0x7d, 0x95, 0x9c, 0x98, 0x93, 0x9b, 0x90, 0x9e, - 0x7e, 0xa, 0xf7, 0x4, 0xab, 0x6f, 0x4c, 0x7e, 0x89, 0x7d, 0x89, 0x7b, - 0x2a, 0xa, 0xe, 0x90, 0xa0, 0x76, 0xf7, 0xe6, 0xab, 0xf7, 0x9f, 0xab, - 0x1, 0x7e, 0x16, 0xf7, 0xbb, 0x6, 0x90, 0xae, 0x5, 0x5d, 0x71, 0x96, - 0xa2, 0x8e, 0x8b, 0x8f, 0x8c, 0x8f, 0x1f, 0xcb, 0xf7, 0x96, 0x5, 0xf7, - 0x2, 0xa6, 0x6c, 0x4e, 0x7e, 0x89, 0x7d, 0x89, 0x7c, 0x4c, 0xa, 0x5, - 0x37, 0x5f, 0x7f, 0x75, 0xfb, 0x22, 0x1b, 0xc8, 0xf7, 0x73, 0x5, 0xab, - 0x94, 0x96, 0x97, 0xb2, 0x1b, 0xf7, 0x49, 0x8b, 0x36, 0x47, 0x1f, 0xa6, - 0x86, 0xb6, 0xf7, 0x52, 0x5, 0xfc, 0xa9, 0x68, 0x6, 0xbd, 0x85, 0xa4, - 0x87, 0x7a, 0x8b, 0xa, 0x85, 0x1e, 0xfb, 0x14, 0xfc, 0x94, 0x82, 0x67, - 0x6c, 0x89, 0x63, 0x84, 0x19, 0xe, 0xc7, 0x79, 0xb1, 0xf7, 0xa6, 0xaf, - 0xf7, 0xd3, 0xaf, 0x1, 0xa0, 0xf7, 0x30, 0x3, 0xf8, 0x37, 0xf7, 0xba, - 0x15, 0xb9, 0x87, 0xaa, 0x88, 0x65, 0x1a, 0x84, 0x8a, 0x81, 0x89, 0x81, - 0x1e, 0x84, 0x68, 0x60, 0xfb, 0x10, 0x87, 0x84, 0x8, 0x74, 0x7d, 0x60, - 0x7e, 0x5f, 0x1b, 0x6a, 0xfb, 0x14, 0xbd, 0xf7, 0x3f, 0xf7, 0x67, 0xf4, - 0xf7, 0x59, 0xf7, 0x34, 0xf7, 0x3, 0xbb, 0x3b, 0x26, 0x1f, 0xa8, 0x87, - 0xbe, 0xf7, 0x71, 0x5, 0x6c, 0x6, 0x81, 0x86, 0x82, 0x77, 0x6f, 0x1b, - 0x7e, 0x80, 0x90, 0x90, 0x7c, 0x1f, 0x94, 0x73, 0x68, 0x96, 0x47, 0x1b, - 0xfb, 0x99, 0xfb, 0x34, 0xfb, 0x88, 0xfb, 0x5c, 0xfb, 0x45, 0xf7, 0x1c, - 0x39, 0xf7, 0x39, 0xd7, 0xf7, 0x7, 0xa4, 0xa4, 0xc1, 0x1f, 0x97, 0x94, - 0xbb, 0xf7, 0x49, 0x9d, 0xd0, 0x93, 0x8a, 0xc0, 0x8f, 0x19, 0xaf, 0xfb, - 0xb3, 0x7, 0xe, 0xf7, 0x8, 0x8b, 0xae, 0xf7, 0xba, 0xb7, 0xf7, 0x99, - 0xae, 0x1, 0x73, 0x16, 0x75, 0x1d, 0x5e, 0x8e, 0x6e, 0x95, 0xa5, 0x1a, - 0x8f, 0x8c, 0x8f, 0x8c, 0x90, 0x1e, 0xcd, 0xf7, 0x86, 0x5, 0xf7, 0x83, - 0x6, 0x4c, 0xfb, 0x86, 0x83, 0x6b, 0x79, 0x7a, 0x3f, 0x88, 0x19, 0x68, - 0xf7, 0xd1, 0xae, 0x7, 0x69, 0x8c, 0x64, 0x97, 0xa7, 0x1a, 0x8e, 0x8b, - 0x8f, 0x8c, 0x8f, 0x1e, 0xf7, 0x19, 0xf8, 0x79, 0x9b, 0xc9, 0xa4, 0x85, - 0xb3, 0x91, 0x19, 0x61, 0xa, 0xc0, 0x83, 0xa1, 0x7b, 0x74, 0x1a, 0x86, - 0x8a, 0x86, 0x8a, 0x86, 0x1e, 0x52, 0xfb, 0x5b, 0x5, 0xfb, 0x83, 0x6, - 0xc1, 0xf7, 0x5b, 0x9b, 0xc7, 0xa8, 0x8b, 0xc3, 0x8d, 0x82, 0xa, 0xbe, - 0x84, 0xa3, 0x7b, 0x74, 0x1a, 0x86, 0x8a, 0x86, 0x8a, 0x85, 0x1e, 0xfb, - 0x18, 0xfc, 0x79, 0x80, 0x62, 0x6a, 0x86, 0x66, 0x85, 0x19, 0xe, 0xfb, - 0xa5, 0xa0, 0x76, 0xf9, 0xe, 0xae, 0x1, 0x6b, 0x16, 0x75, 0x1d, 0x60, - 0x8d, 0x6e, 0x9b, 0xa4, 0x1a, 0x90, 0x8b, 0x90, 0x8c, 0x90, 0x1e, 0xf7, - 0x21, 0xf8, 0x77, 0x9a, 0xbe, 0x9e, 0x8d, 0x56, 0x1d, 0xc5, 0x86, 0xa0, - 0x75, 0x88, 0x7a, 0x8a, 0x86, 0x8a, 0x86, 0x8a, 0x87, 0xfb, 0x18, 0xfc, - 0x77, 0x18, 0x80, 0x61, 0x70, 0x81, 0x60, 0x85, 0x8, 0xe, 0x45, 0xf7, - 0x3f, 0xf8, 0xcc, 0x77, 0x12, 0x5d, 0xf7, 0x13, 0xfb, 0x13, 0xf8, 0xce, - 0x13, 0xe0, 0xf7, 0x77, 0xf9, 0xe, 0x15, 0xbd, 0x84, 0xa4, 0x7c, 0x73, - 0x8b, 0xa, 0x84, 0x1e, 0x22, 0xfc, 0x2d, 0x5, 0xfb, 0xb, 0x6b, 0x5d, - 0x61, 0x73, 0x1b, 0x81, 0x86, 0x92, 0x99, 0x98, 0x8f, 0x8f, 0x92, 0x92, - 0x1f, 0x92, 0x92, 0x90, 0x92, 0x9e, 0x1a, 0xaf, 0x6e, 0xa5, 0x68, 0x68, - 0x6f, 0x6f, 0x60, 0x4e, 0xd1, 0x64, 0xdc, 0xf7, 0x18, 0xbe, 0xe5, 0xf1, - 0xa6, 0x1e, 0xf7, 0x0, 0xf8, 0x2d, 0x5, 0x13, 0xd0, 0x9e, 0xc4, 0x9a, - 0x88, 0xba, 0x93, 0x8, 0xae, 0xfb, 0xbd, 0x7, 0xe, 0x90, 0xa0, 0x76, - 0xf9, 0x31, 0x77, 0x1, 0x76, 0x16, 0xf7, 0xb5, 0xae, 0x6, 0x64, 0x70, - 0x98, 0xad, 0x90, 0x8c, 0x90, 0x8c, 0x91, 0x1f, 0xcb, 0xf7, 0x79, 0x93, - 0x89, 0x5, 0xf7, 0x1, 0xfb, 0x7d, 0x97, 0x74, 0x88, 0x1a, 0x74, 0x84, - 0x8a, 0x51, 0x84, 0x1e, 0x68, 0xf7, 0xac, 0xae, 0x7, 0x71, 0x8e, 0x74, - 0x8d, 0x7d, 0xa9, 0xfb, 0x31, 0xf7, 0xdc, 0x18, 0xf7, 0x6c, 0xf7, 0x50, - 0xb8, 0xb5, 0x98, 0x8c, 0xaf, 0x90, 0x19, 0xae, 0xfb, 0x67, 0x68, 0x7, - 0xb2, 0x87, 0x9c, 0x89, 0x75, 0x1a, 0x72, 0xfb, 0x78, 0xfb, 0x44, 0x64, - 0x54, 0x1e, 0x86, 0x8c, 0xc7, 0xf7, 0x71, 0x9b, 0xc5, 0xa7, 0x8b, 0xbd, - 0x8f, 0x19, 0xae, 0xfb, 0xca, 0x68, 0x7, 0xbd, 0x84, 0xa4, 0x7c, 0x74, - 0x7c, 0x1d, 0x79, 0x4b, 0x70, 0x88, 0x68, 0x86, 0x19, 0xe, 0x53, 0x1d, - 0x55, 0x7e, 0x96, 0x9d, 0x94, 0x8f, 0x96, 0x8e, 0x98, 0x1f, 0xf7, 0x15, - 0xf8, 0x72, 0x9b, 0xc7, 0xa8, 0x8a, 0xc3, 0x8e, 0x82, 0xa, 0xbf, 0x84, - 0xa2, 0x7b, 0x75, 0x7c, 0x1d, 0x7b, 0x52, 0x76, 0x82, 0x60, 0x85, 0x19, - 0xe, 0xf7, 0x77, 0x8b, 0xae, 0x71, 0x76, 0xf7, 0x60, 0x77, 0xf8, 0x85, - 0x77, 0x12, 0x13, 0xb0, 0x6e, 0x16, 0xf7, 0x63, 0xae, 0x6, 0x50, 0x79, - 0xa3, 0xac, 0xa5, 0x93, 0xab, 0x93, 0xa7, 0x1f, 0xef, 0xf8, 0x0, 0x5, - 0x8d, 0x6, 0x13, 0x70, 0xcd, 0xfc, 0xbe, 0x5, 0xa7, 0x6, 0xf8, 0x7, - 0xf8, 0xca, 0x8d, 0x89, 0xfb, 0xf, 0xfc, 0x47, 0x5, 0x13, 0xb0, 0x7b, - 0x50, 0x6f, 0x78, 0x53, 0x87, 0x8, 0x68, 0xf7, 0xcc, 0xae, 0x7, 0x55, - 0x7a, 0x96, 0xa0, 0x98, 0x8f, 0x9c, 0x90, 0x9f, 0x1f, 0xf7, 0xf, 0xf8, - 0x51, 0x9b, 0xc9, 0xa4, 0x8f, 0xb3, 0x91, 0x19, 0xae, 0xfb, 0x68, 0x7, - 0xfb, 0xc8, 0xfc, 0x71, 0x6f, 0xa, 0x55, 0xf8, 0x71, 0x5, 0xfb, 0x71, - 0x68, 0x6, 0xc0, 0x89, 0x9e, 0x89, 0x6c, 0x1a, 0xfb, 0xc, 0xfc, 0x39, - 0x63, 0xfb, 0x1e, 0x7f, 0x92, 0x5a, 0x7f, 0x19, 0xe, 0x8b, 0x1d, 0x12, - 0x13, 0xa0, 0x70, 0x16, 0xf7, 0x64, 0xae, 0x6, 0x51, 0x79, 0x9d, 0xb0, - 0x9a, 0x8e, 0x9b, 0x90, 0x9c, 0x1f, 0xf4, 0xf8, 0x20, 0x5, 0x13, 0x60, - 0x59, 0xa, 0x8d, 0x96, 0x94, 0x8a, 0x93, 0x1b, 0xaf, 0x97, 0x72, 0x6b, - 0x6f, 0x85, 0x6a, 0x83, 0x71, 0x64, 0x1d, 0xfb, 0x12, 0xfc, 0x57, 0x18, - 0x13, 0xa0, 0x6d, 0x21, 0x80, 0x9b, 0x55, 0x7e, 0x8, 0xe, 0xc7, 0x79, - 0xad, 0xf9, 0xf, 0xad, 0x1, 0x4d, 0xa, 0x3, 0xf7, 0x3f, 0xf7, 0x2a, - 0x15, 0xe7, 0xe0, 0xf8, 0x2d, 0xf7, 0x4c, 0xf3, 0x8e, 0x21, 0x76, 0xfb, - 0x8, 0x2f, 0xfc, 0x1c, 0xfb, 0x46, 0x50, 0x5c, 0xad, 0x55, 0x1d, 0xd4, - 0xfb, 0x14, 0xf7, 0x3b, 0xf7, 0x8d, 0xf7, 0x43, 0xf7, 0x9e, 0xf7, 0x56, - 0xf7, 0x42, 0xfb, 0x1b, 0xd0, 0xfb, 0x1, 0xfb, 0x6f, 0xfb, 0x5d, 0xfb, - 0x7d, 0xfb, 0x89, 0x1e, 0xe, 0x58, 0xa0, 0x76, 0xf7, 0xd6, 0xab, 0xf7, - 0xaf, 0xab, 0x1, 0xf8, 0x67, 0xf7, 0x26, 0x3, 0xf7, 0xa1, 0xf7, 0xf6, - 0x6f, 0x1d, 0x23, 0x54, 0x55, 0xfb, 0x23, 0x1f, 0xfb, 0xbc, 0xfb, 0xf6, - 0x15, 0xf7, 0xba, 0xae, 0x6, 0x5a, 0x78, 0xa3, 0xb2, 0x97, 0x8e, 0x98, - 0x8e, 0x99, 0x1f, 0xc1, 0xf7, 0x4d, 0x5, 0xf7, 0x27, 0xf7, 0x63, 0xa4, - 0xf7, 0x39, 0xf7, 0x12, 0x20, 0xaa, 0x21, 0x1f, 0xfb, 0xb3, 0x68, 0x6, - 0xbe, 0x84, 0xa3, 0x88, 0x79, 0x8b, 0xa, 0x86, 0x1e, 0xfb, 0xf, 0xfc, - 0x5b, 0x7a, 0x4d, 0x6a, 0x6a, 0x63, 0x84, 0x19, 0xe, 0xc7, 0xfb, 0x64, - 0xe8, 0x5d, 0xf7, 0x46, 0x69, 0xad, 0xf9, 0xe, 0xad, 0x12, 0x4d, 0xa, - 0x13, 0x5c, 0xf7, 0x3f, 0xf7, 0x2a, 0x15, 0xe7, 0xe2, 0xf8, 0x2d, 0xf7, - 0x4c, 0xf3, 0x8c, 0x23, 0x76, 0xfb, 0x8, 0x2d, 0xfc, 0x1d, 0xfb, 0x46, - 0x50, 0x5e, 0xac, 0xef, 0x1e, 0xfb, 0x23, 0xfb, 0xcf, 0x15, 0x99, 0x73, - 0x5, 0xa2, 0xc4, 0xad, 0x90, 0xa0, 0x1b, 0xbe, 0xae, 0x7b, 0x7e, 0xb6, - 0x1f, 0x13, 0xbc, 0x81, 0xab, 0xaf, 0x83, 0xbc, 0x1b, 0xf7, 0x20, 0xd2, - 0xe3, 0xc8, 0xb7, 0x1f, 0x76, 0x9e, 0x5, 0x58, 0x6b, 0x51, 0x73, 0x4e, - 0x1b, 0x6e, 0x6c, 0x8e, 0x94, 0x70, 0x1f, 0x57, 0x9b, 0x5e, 0x93, 0x69, - 0x8f, 0x8, 0x66, 0x90, 0x75, 0x8c, 0x8f, 0x1a, 0x90, 0xaa, 0xa8, 0x9a, - 0x99, 0x1e, 0xf7, 0x86, 0xf7, 0x59, 0xf7, 0x91, 0xf7, 0x64, 0xf7, 0x42, - 0xfb, 0x19, 0xce, 0x5d, 0x1d, 0xfb, 0x7d, 0xfb, 0x89, 0x38, 0xbc, 0x27, - 0xf7, 0x5, 0x6c, 0x1f, 0x95, 0x87, 0x8b, 0x8b, 0x8f, 0x86, 0x88, 0x85, - 0x8b, 0x8b, 0xfb, 0x40, 0xfb, 0x23, 0x8, 0xe, 0x90, 0xa0, 0x76, 0xf9, - 0x11, 0xab, 0x1, 0xf8, 0x6c, 0xf7, 0x2b, 0x3, 0xf7, 0xa5, 0xf7, 0xff, - 0x15, 0xc7, 0xf7, 0x7a, 0x5, 0xa2, 0x90, 0x92, 0xa0, 0xac, 0x1b, 0xcb, - 0xa9, 0x56, 0x4f, 0x25, 0x3b, 0x50, 0xfb, 0xb, 0x1f, 0xfb, 0xc2, 0xfb, - 0xff, 0x8e, 0x1d, 0x66, 0x71, 0x8e, 0xb0, 0x94, 0x8d, 0x95, 0x8e, 0x98, - 0x1f, 0xc2, 0xf7, 0x74, 0x5, 0xa8, 0x6, 0xf6, 0xfb, 0xdf, 0x5, 0xf7, - 0x5e, 0xae, 0x6, 0x5b, 0x90, 0x79, 0x8d, 0x75, 0xcc, 0x38, 0xf7, 0x80, - 0x18, 0xf7, 0x17, 0xa0, 0xc8, 0xdf, 0xd7, 0x1a, 0xf7, 0x25, 0xfb, 0x44, - 0x8b, 0x4f, 0x1e, 0xfb, 0xa8, 0x68, 0x6, 0xbf, 0x84, 0xa2, 0x82, 0x77, - 0x1a, 0x87, 0x8a, 0x87, 0x8a, 0x84, 0x1e, 0xfb, 0x19, 0xfc, 0x70, 0x7b, - 0x52, 0x77, 0x81, 0x5f, 0x86, 0x19, 0xe, 0x21, 0x79, 0xad, 0xf9, 0xe, - 0xae, 0x87, 0x85, 0x1d, 0x13, 0xd8, 0x8d, 0x79, 0x15, 0xa9, 0x6, 0xa2, - 0x96, 0x8f, 0x97, 0xa4, 0x1b, 0x98, 0x9a, 0x84, 0x83, 0xa2, 0x1f, 0x82, - 0xa6, 0xaa, 0x80, 0xb4, 0x1b, 0xf7, 0x30, 0xe5, 0xf7, 0x0, 0xf7, 0x18, - 0xd3, 0x54, 0xc2, 0x51, 0xb8, 0x1f, 0x4b, 0xbe, 0x47, 0xb6, 0xc2, 0x1a, - 0x97, 0x84, 0xea, 0xf1, 0xf7, 0x6, 0xa6, 0xfb, 0x2, 0x53, 0x1e, 0xa6, - 0x87, 0x5, 0x13, 0xb8, 0xb3, 0xf7, 0x5d, 0x5, 0x6d, 0x6, 0x72, 0x7e, - 0x70, 0x8a, 0x87, 0x1b, 0x7c, 0x7a, 0x92, 0x92, 0x74, 0x1f, 0x13, 0xd8, - 0x93, 0x74, 0x70, 0x93, 0x6e, 0x1b, 0xfb, 0x19, 0x38, 0x2b, 0x26, 0x3b, - 0xc8, 0x5e, 0xc8, 0x63, 0x1f, 0xc8, 0x63, 0xc9, 0x66, 0x4b, 0x1a, 0x77, - 0x7e, 0xfb, 0x26, 0xfb, 0x4, 0x61, 0xfb, 0x5, 0x9b, 0xf7, 0x40, 0x1e, - 0x6e, 0x8d, 0x5, 0xe, 0x58, 0x58, 0xa, 0x1, 0xbd, 0x16, 0xf7, 0xdf, - 0x6, 0x8d, 0xae, 0x5, 0x51, 0x76, 0x91, 0xa9, 0x94, 0x8e, 0x97, 0x8f, - 0x9a, 0x1f, 0xf7, 0x1e, 0xf8, 0xa3, 0x5, 0xc0, 0xe0, 0x85, 0xfb, 0x29, - 0x1f, 0xa6, 0x89, 0xaf, 0xf7, 0x54, 0x5, 0xfc, 0xbb, 0x6, 0x65, 0xfb, - 0x3f, 0xa4, 0x84, 0x5, 0xf1, 0xbe, 0xd2, 0xb4, 0xea, 0x1b, 0xfb, 0x26, - 0xfc, 0xa3, 0x78, 0x46, 0x62, 0x86, 0x5e, 0x8d, 0x19, 0xe, 0xc7, 0x79, - 0xc3, 0xf8, 0xe9, 0xad, 0x1, 0xce, 0xf7, 0x1e, 0x3, 0xed, 0xf9, 0xe, - 0x15, 0xc9, 0x83, 0x96, 0x6b, 0x6b, 0x5d, 0x23, 0xfb, 0xa8, 0x38, 0xa, - 0xe1, 0xf7, 0xbb, 0x99, 0xbc, 0x9d, 0x9b, 0x55, 0xa, 0x8c, 0x93, 0x93, - 0x8b, 0x92, 0x1b, 0xba, 0x98, 0x68, 0x72, 0x85, 0x8a, 0x85, 0x8a, 0x86, - 0x1f, 0x3b, 0xfb, 0xbb, 0x5, 0x21, 0x6f, 0x65, 0xfb, 0xb, 0xfb, 0x23, - 0x1b, 0x28, 0x73, 0xb7, 0xc5, 0xb3, 0x9b, 0xbb, 0x97, 0xb7, 0x3e, 0x1d, - 0xe, 0x90, 0x87, 0x76, 0xf7, 0x53, 0x77, 0xb2, 0x77, 0xf8, 0x5c, 0xae, - 0x12, 0xd3, 0xf9, 0x1e, 0x13, 0xd8, 0x13, 0xb8, 0xf7, 0x7b, 0x79, 0x15, - 0xab, 0x6, 0xf8, 0x1d, 0xf8, 0xf8, 0x91, 0x94, 0x9b, 0x9f, 0xb0, 0x96, - 0x19, 0xae, 0xfb, 0x54, 0x68, 0x7, 0xba, 0x87, 0x9d, 0x8a, 0x6c, 0x1a, - 0xfb, 0x8b, 0xfc, 0x31, 0x6f, 0xa, 0x58, 0xf8, 0x18, 0x5, 0x8a, 0x96, - 0x8b, 0x94, 0x92, 0x1a, 0xa7, 0xa7, 0x8d, 0xbb, 0x8f, 0x1e, 0x61, 0xa, - 0xc7, 0x89, 0x93, 0x82, 0x94, 0x51, 0x8, 0xe, 0xf7, 0x77, 0x8e, 0x76, - 0xf7, 0x8b, 0x77, 0xf8, 0x3d, 0xae, 0x1, 0xf7, 0x70, 0x79, 0x15, 0xa8, - 0x6, 0xf7, 0x7b, 0xf8, 0x7a, 0x5, 0x8d, 0x6, 0xc6, 0xfc, 0x7a, 0x5, - 0xa8, 0x6, 0xf7, 0xa8, 0xf8, 0xcf, 0xab, 0xcb, 0xaa, 0x98, 0xaa, 0x90, - 0x19, 0xad, 0xfb, 0x4f, 0x68, 0x7, 0xb8, 0x8e, 0x9d, 0x81, 0x74, 0x1a, - 0x7d, 0x86, 0x7a, 0x81, 0x77, 0x1e, 0xfb, 0x2e, 0xfb, 0xd8, 0x6f, 0xa, - 0x6a, 0xf7, 0xb8, 0x5, 0x88, 0xa4, 0x89, 0xa0, 0x9e, 0x1a, 0xaa, 0x99, - 0x9b, 0xbb, 0x8c, 0x1e, 0xae, 0xfb, 0xa1, 0x69, 0x7, 0xbe, 0x83, 0x9f, - 0x92, 0x2a, 0x1a, 0xfb, 0x28, 0xfb, 0xc8, 0x6f, 0xa, 0x64, 0xf7, 0xe0, - 0x5, 0x8a, 0x94, 0x8b, 0x93, 0x92, 0x1a, 0xb0, 0xa8, 0x94, 0xab, 0x8e, - 0x1e, 0xae, 0xfb, 0xa9, 0x69, 0x7, 0xcb, 0x80, 0x8d, 0x94, 0x96, 0x43, - 0x8, 0xe, 0x90, 0x58, 0xa, 0x1, 0x73, 0x16, 0xf7, 0x6a, 0xae, 0x6, - 0x74, 0x8d, 0x57, 0x90, 0xae, 0x1a, 0xf7, 0x42, 0xf7, 0x4f, 0x5, 0x95, - 0x63, 0xba, 0x20, 0x60, 0x1a, 0x69, 0x6b, 0x89, 0x67, 0x88, 0x1e, 0x68, - 0xf7, 0xc8, 0xae, 0x7, 0x3f, 0x92, 0x7e, 0xa2, 0x70, 0xe1, 0x41, 0xf7, - 0x77, 0x18, 0xf7, 0x5b, 0xf7, 0x57, 0xbf, 0xc1, 0xa3, 0x8e, 0xa2, 0x8f, - 0x19, 0xae, 0xfb, 0x5f, 0x68, 0x7, 0xac, 0x88, 0xa6, 0x7b, 0x7b, 0x1a, - 0x87, 0x8a, 0x87, 0x87, 0x87, 0x1e, 0xfb, 0x38, 0xfb, 0x3a, 0x5, 0x7c, - 0xbf, 0x67, 0xda, 0x9e, 0x1a, 0xad, 0x9a, 0xa2, 0xc6, 0x91, 0x1e, 0xae, - 0xfb, 0xc5, 0x68, 0x7, 0xbf, 0x86, 0xa3, 0x83, 0x9a, 0x59, 0xdf, 0xfb, - 0x9a, 0x18, 0x4f, 0x4c, 0xfb, 0x3, 0xfb, 0xc, 0x47, 0x50, 0x75, 0x78, - 0x84, 0x87, 0x6c, 0x82, 0x8, 0xe, 0x58, 0x58, 0xa, 0x1, 0xd4, 0x16, - 0xf7, 0xd6, 0xae, 0x6, 0x5d, 0x8d, 0x6c, 0x8c, 0xb4, 0x1a, 0xc7, 0xf7, - 0x79, 0x6a, 0xa, 0xc4, 0x88, 0xa3, 0x80, 0x78, 0x1a, 0x81, 0x87, 0x7f, - 0x81, 0x7e, 0x1e, 0xfb, 0x2f, 0xfb, 0x6a, 0x48, 0xf7, 0x5c, 0x8d, 0x83, - 0x81, 0xa5, 0x19, 0x87, 0x95, 0x88, 0x96, 0x92, 0x1a, 0xa6, 0xa8, 0x94, - 0xb9, 0x6a, 0x1d, 0x4f, 0xfb, 0x62, 0x79, 0x4b, 0x72, 0x88, 0x51, 0x86, - 0x19, 0xe, 0x58, 0x58, 0xa, 0x3e, 0xa, 0xe, 0xfb, 0xdd, 0xfb, 0x33, - 0xb8, 0xf9, 0x7b, 0xb8, 0x1, 0x66, 0xfb, 0x33, 0x15, 0xf7, 0x6f, 0x6, - 0x92, 0xb8, 0x5, 0x3b, 0x6, 0x7f, 0x76, 0x8b, 0xa3, 0x1f, 0xf7, 0x32, - 0xf9, 0x24, 0x5, 0xc6, 0x99, 0x8a, 0x8f, 0xb0, 0x1b, 0xd2, 0x6, 0x92, - 0xb8, 0x5, 0xfb, 0x5c, 0x6, 0xe, 0xfc, 0x14, 0xfb, 0x1c, 0x76, 0xf7, - 0x34, 0x8d, 0x1d, 0xf7, 0x1e, 0xfb, 0x31, 0x15, 0xc6, 0x6, 0x32, 0xf9, - 0xde, 0x5, 0x50, 0x6, 0xe, 0xfb, 0xdd, 0xfb, 0x31, 0xb8, 0xf9, 0x79, - 0xb8, 0x1, 0x64, 0xfb, 0x4, 0x15, 0x84, 0x5e, 0x5, 0xf7, 0x5b, 0x6, - 0xf7, 0x5c, 0xf9, 0xd3, 0x5, 0xfb, 0x70, 0x6, 0x84, 0x5e, 0x5, 0xd9, - 0x6, 0x96, 0xa3, 0x88, 0x75, 0x1f, 0xfb, 0x31, 0xfd, 0x21, 0x5, 0x51, - 0x7d, 0x89, 0x86, 0x66, 0x1b, 0xe, 0x2f, 0xf7, 0xd9, 0x76, 0xf8, 0x1, - 0x77, 0x1, 0xce, 0xf7, 0xc4, 0x15, 0xe4, 0x6, 0xf7, 0x15, 0xf7, 0xa1, - 0xf7, 0x15, 0xfb, 0xa1, 0x5, 0xe4, 0x6, 0xfb, 0x46, 0xf8, 0x1, 0x5, - 0x3b, 0x6, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x40, 0x4, 0x59, 0xf8, 0x88, - 0xbd, 0x7, 0xe, 0x7f, 0x1d, 0xf7, 0x49, 0x77, 0x1, 0xf7, 0x90, 0xf8, - 0x98, 0x7b, 0xa, 0xfb, 0x3, 0xf7, 0x27, 0x5, 0x98, 0x80, 0x7a, 0xa0, - 0x70, 0x1b, 0x70, 0x78, 0x75, 0x76, 0x76, 0xa0, 0x78, 0x98, 0x82, 0x1f, - 0xe, 0x58, 0x1d, 0xb5, 0x85, 0x77, 0x74, 0xa, 0x13, 0x68, 0xf7, 0x8e, - 0xf7, 0x7, 0x15, 0x2e, 0x1d, 0x13, 0x98, 0x71, 0xa, 0x90, 0x94, 0x44, - 0xa, 0x5, 0xfb, 0x3, 0x6, 0x7a, 0x4d, 0x6f, 0xa, 0x13, 0xa8, 0xa4, - 0x87, 0x8a, 0xb6, 0x4f, 0x1b, 0xfb, 0xe, 0xfb, 0x33, 0x2f, 0x1d, 0xcc, - 0xd5, 0xf7, 0x84, 0xdf, 0x94, 0xad, 0x39, 0xa, 0xe, 0x7e, 0xac, 0xf8, - 0xa, 0xcf, 0xf7, 0x81, 0x77, 0x1, 0xf7, 0xd3, 0xf7, 0x11, 0x3, 0xf7, - 0x5a, 0xf8, 0xc, 0x15, 0x89, 0x8d, 0xe3, 0xf7, 0xd5, 0x42, 0x77, 0x1d, - 0x65, 0xfb, 0x2d, 0xfc, 0x83, 0x6e, 0x1a, 0x77, 0xc1, 0x63, 0xe0, 0xf7, - 0x3b, 0xf7, 0x2c, 0xf7, 0x3e, 0xf7, 0x3d, 0xd9, 0x5b, 0xc5, 0x4d, 0x4c, - 0x64, 0x63, 0x5d, 0x69, 0x1e, 0x32, 0xfb, 0xd9, 0x15, 0x8c, 0xc7, 0xf7, - 0xea, 0xf3, 0xb9, 0x8b, 0x58, 0x7a, 0x36, 0x4a, 0xfb, 0x71, 0xfb, 0x5, - 0x86, 0x70, 0x8b, 0xaa, 0x1e, 0xe, 0xfb, 0x6e, 0x7e, 0xcb, 0xf7, 0x8f, - 0xf7, 0x34, 0x6a, 0xac, 0x12, 0x86, 0xf7, 0x14, 0x13, 0xb0, 0xf7, 0xd2, - 0xf7, 0x21, 0x15, 0x51, 0x63, 0x66, 0x6b, 0x5e, 0x1b, 0x6e, 0x5f, 0x95, - 0xdb, 0xd2, 0xc7, 0xf7, 0x6d, 0xe2, 0x94, 0x99, 0x87, 0x7e, 0x83, 0x85, - 0x83, 0x85, 0x81, 0x1f, 0x86, 0x82, 0x87, 0x81, 0x7e, 0x1a, 0x13, 0xd0, - 0x84, 0x1d, 0x67, 0xb7, 0x3c, 0xfb, 0x1e, 0xfb, 0x24, 0xfb, 0x3c, 0xfb, - 0x2d, 0xfb, 0x3, 0xde, 0x60, 0xcd, 0xf5, 0xbe, 0xd3, 0xcb, 0xb8, 0x1e, - 0xe, 0x7e, 0xd3, 0x5a, 0x76, 0xf8, 0x43, 0xb5, 0xf7, 0x81, 0x77, 0x12, - 0x76, 0xf7, 0x10, 0x13, 0x78, 0xf7, 0x8e, 0xf7, 0x7, 0x15, 0x84, 0x6c, - 0x88, 0x79, 0x7b, 0x1a, 0x4e, 0xc0, 0x8b, 0x92, 0xd1, 0xc2, 0xe2, 0xb2, - 0xa3, 0x1e, 0x75, 0x9b, 0x5, 0x84, 0x90, 0x55, 0x4b, 0x76, 0x1b, 0x86, - 0x88, 0x8f, 0x94, 0x1f, 0xf7, 0x3c, 0xf9, 0x6, 0x68, 0x83, 0x5d, 0x80, - 0xfb, 0x14, 0x81, 0x6d, 0xa, 0xb6, 0x9e, 0x85, 0x73, 0x7c, 0x72, 0x35, - 0x75, 0x38, 0x1f, 0x99, 0x7d, 0x83, 0x9e, 0x60, 0x1b, 0xfb, 0x8, 0xfb, - 0x37, 0xfb, 0x55, 0xfb, 0x2f, 0x1f, 0x13, 0xb8, 0x5f, 0xa2, 0x38, 0xde, - 0xe1, 0xbb, 0xd9, 0xbc, 0xa8, 0x1e, 0xfb, 0x25, 0x16, 0xd1, 0xcf, 0xf7, - 0x80, 0xe2, 0xb0, 0x98, 0x5d, 0x85, 0x6e, 0x47, 0xfb, 0xac, 0x2c, 0x63, - 0x89, 0xbd, 0x90, 0x1e, 0xe, 0xfb, 0x6e, 0x7e, 0xcb, 0xf8, 0x21, 0xac, - 0x1, 0x90, 0xf7, 0x16, 0xf7, 0x3f, 0xe7, 0x3, 0x50, 0x1d, 0xf7, 0x7, - 0xc2, 0x1a, 0xd3, 0x47, 0x93, 0x68, 0xfb, 0x37, 0xfb, 0x13, 0xfb, 0x55, - 0xfb, 0x1c, 0xfb, 0x4, 0xdf, 0x69, 0x35, 0xa, 0x8e, 0xda, 0x9e, 0x8d, - 0x97, 0x3d, 0xa, 0x65, 0x82, 0x57, 0x70, 0x3a, 0xfb, 0x17, 0x68, 0x1f, - 0xe, 0xfb, 0xdd, 0xfb, 0x61, 0xaa, 0xf8, 0xd9, 0xb5, 0xf7, 0x70, 0xa8, - 0x1, 0xb2, 0xf8, 0x2b, 0x15, 0xd4, 0x6, 0x76, 0x3b, 0x63, 0xfb, 0x57, - 0x70, 0xfb, 0x9, 0x8, 0xfb, 0x1c, 0x6e, 0x7c, 0x56, 0x5b, 0x1b, 0x80, - 0x86, 0x90, 0x92, 0x8e, 0x8f, 0x90, 0x8f, 0x92, 0x1f, 0x8f, 0x92, 0x8f, - 0x93, 0x96, 0x1a, 0xaf, 0x66, 0x98, 0x7e, 0x74, 0x6f, 0x79, 0x6c, 0x4f, - 0xb8, 0x73, 0xbf, 0xf7, 0x43, 0xb3, 0xf7, 0x67, 0xf8, 0x25, 0xe1, 0x1e, - 0xe5, 0x6, 0x94, 0xb5, 0x5, 0x2f, 0x6, 0xf7, 0x3, 0xa6, 0xaa, 0xf7, - 0x1, 0xbe, 0x1b, 0x93, 0x94, 0x88, 0x80, 0x88, 0x87, 0x87, 0x87, 0x84, - 0x1f, 0x87, 0x84, 0x87, 0x83, 0x80, 0x1a, 0x6e, 0xa0, 0x76, 0xa6, 0xa3, - 0xa7, 0x99, 0xb2, 0x9f, 0x81, 0xc7, 0x33, 0xfb, 0x12, 0x49, 0xfb, 0x5, - 0xfb, 0x1c, 0x68, 0x1e, 0x42, 0x6, 0xe, 0xfb, 0x5f, 0xad, 0xf7, 0x4c, - 0x76, 0xf7, 0x33, 0xaa, 0x74, 0x77, 0xf7, 0xb6, 0xaa, 0x12, 0x57, 0xe2, - 0xf7, 0x7b, 0xf7, 0x1, 0x40, 0xf7, 0x9, 0x13, 0xde, 0xd9, 0x93, 0x15, - 0x89, 0x7, 0x4c, 0x7b, 0x48, 0x7a, 0x42, 0x1a, 0x3f, 0xf3, 0x70, 0xdb, - 0xf7, 0x3f, 0xd3, 0xda, 0xd0, 0xda, 0x44, 0xa6, 0x3d, 0xa0, 0x1e, 0x30, - 0xa6, 0x7e, 0x97, 0x9b, 0x1a, 0x96, 0x99, 0xa2, 0x98, 0x1e, 0x13, 0xed, - 0x92, 0x92, 0x8a, 0x88, 0x92, 0x1f, 0x88, 0x93, 0x93, 0x8a, 0x96, 0x1b, - 0xf7, 0x1, 0xf7, 0x3, 0xcc, 0xf7, 0x4, 0x9f, 0x89, 0x93, 0x87, 0x9a, - 0x1f, 0xce, 0xc3, 0xfb, 0x3, 0x6, 0x9e, 0x73, 0x67, 0x99, 0x5b, 0x1b, - 0xfb, 0x28, 0x3f, 0x25, 0x3e, 0x54, 0xa8, 0x64, 0xbe, 0x78, 0x1f, 0x4b, - 0x68, 0x6b, 0x79, 0x5e, 0x1a, 0x60, 0xb7, 0x7b, 0x9a, 0x86, 0x1e, 0x13, - 0xee, 0xae, 0x7d, 0x15, 0xa7, 0xf7, 0x11, 0x63, 0x56, 0x4f, 0x32, 0x81, - 0x5e, 0x40, 0x75, 0xab, 0xb0, 0xbe, 0xd4, 0xb6, 0x90, 0x1f, 0xb1, 0xf7, - 0x92, 0x15, 0x13, 0xed, 0xac, 0xa7, 0xf7, 0x2a, 0xd6, 0xaf, 0x95, 0x68, - 0x70, 0x5b, 0x68, 0xfb, 0x1d, 0x45, 0x5f, 0x8b, 0xb9, 0x9d, 0x1e, 0xe, - 0x89, 0x1d, 0xf7, 0x81, 0x77, 0x12, 0x13, 0x70, 0x7e, 0x83, 0xa, 0xa4, - 0xe3, 0xae, 0xf7, 0xa, 0xb4, 0xc9, 0x8, 0xb6, 0xa7, 0xbe, 0xda, 0xb5, - 0x1b, 0x9e, 0x8f, 0x7c, 0x83, 0x7d, 0x70, 0x44, 0x73, 0x41, 0x1f, 0x78, - 0x4f, 0x79, 0x4e, 0x68, 0x1a, 0x13, 0xb0, 0x6a, 0xa1, 0x6f, 0xb6, 0xdd, - 0xb8, 0xd3, 0xcb, 0xb4, 0x1e, 0x75, 0x9a, 0x5, 0x77, 0x88, 0x53, 0x4d, - 0x8f, 0xa, 0x90, 0x96, 0x90, 0xa0, 0xc5, 0xa1, 0xcb, 0x1f, 0xa3, 0xd0, - 0xa3, 0xd6, 0x9f, 0x1a, 0xda, 0x53, 0x9b, 0x75, 0x59, 0x50, 0x6f, 0xfb, - 0x26, 0x29, 0x1e, 0x89, 0x8c, 0xf5, 0xf8, 0x2e, 0x40, 0x7c, 0x53, 0x83, - 0x3e, 0x84, 0x82, 0x1d, 0x66, 0x1d, 0xf8, 0xc3, 0xf7, 0x1a, 0x4d, 0x1d, - 0x53, 0x55, 0x73, 0x88, 0x1d, 0x8f, 0x95, 0x32, 0x1d, 0xa9, 0x8b, 0x6b, - 0x1f, 0x34, 0x1d, 0xfb, 0x2, 0xf8, 0x7f, 0x15, 0x41, 0x1d, 0xe, 0xfc, - 0x14, 0xfb, 0x4e, 0x76, 0xf9, 0x89, 0xf7, 0x1a, 0x1, 0xaa, 0xf8, 0x2b, - 0x15, 0xbb, 0x99, 0x85, 0x72, 0x1f, 0x23, 0xfc, 0x39, 0x5, 0x36, 0x75, - 0x7c, 0x5d, 0x67, 0x1b, 0x81, 0x7f, 0x92, 0x90, 0x8f, 0x8e, 0x90, 0x8f, - 0x90, 0x1f, 0x8f, 0x91, 0x8f, 0x91, 0x97, 0x1a, 0xb3, 0x65, 0x94, 0x80, - 0x73, 0x72, 0x76, 0x6b, 0x6f, 0xa0, 0x5a, 0xe0, 0xe4, 0xd6, 0xc9, 0xf7, - 0x3d, 0xb7, 0x1e, 0xf7, 0x6, 0xf8, 0x4a, 0x45, 0x7c, 0x7b, 0x89, 0xfb, - 0xe, 0x80, 0x19, 0xf7, 0x5, 0xf7, 0x4c, 0x15, 0x41, 0x1d, 0xe, 0x83, - 0xd2, 0x61, 0x76, 0xf8, 0x55, 0x77, 0xf7, 0xa2, 0x77, 0x12, 0x13, 0x70, - 0x74, 0x16, 0xf7, 0xe, 0x6, 0xbd, 0xf7, 0x50, 0xb2, 0xa6, 0x5, 0x13, - 0xb0, 0xfb, 0xe, 0xa1, 0xa3, 0x26, 0xd9, 0x1b, 0xd0, 0xb5, 0xdb, 0xb7, - 0xa3, 0x1f, 0x75, 0x96, 0x5, 0x76, 0x7f, 0x74, 0x60, 0x71, 0x1b, 0x69, - 0x7d, 0xd3, 0xf7, 0x32, 0x6c, 0x1f, 0xca, 0xc2, 0xd7, 0xce, 0xa2, 0x85, - 0xaf, 0x90, 0x19, 0xae, 0xfb, 0x63, 0x68, 0x7, 0xa5, 0xa4, 0x89, 0x74, - 0x68, 0xfb, 0xf, 0x39, 0x65, 0x6d, 0x1f, 0x89, 0x8d, 0xf7, 0xe, 0xf8, - 0x5b, 0x4c, 0x7f, 0x38, 0x7f, 0x4d, 0x85, 0x82, 0x1d, 0x66, 0x1d, 0xf9, - 0x58, 0x6c, 0x1d, 0x54, 0x55, 0x73, 0x1b, 0x84, 0x87, 0x8f, 0x95, 0x9f, - 0x9b, 0xc5, 0x91, 0xa1, 0x1f, 0xf7, 0x25, 0xf8, 0x9f, 0x7f, 0xa, 0xac, - 0x8d, 0x6c, 0x1f, 0x5c, 0xfb, 0x22, 0xfc, 0x54, 0x4f, 0x1a, 0x7d, 0x8b, - 0x56, 0xcf, 0xdb, 0xb7, 0xd0, 0xce, 0xb7, 0x1e, 0xe, 0xf7, 0x8, 0x97, - 0x76, 0xa9, 0x76, 0xf8, 0x19, 0xd4, 0x12, 0x13, 0x60, 0x7d, 0x83, 0xa, - 0xf8, 0x0, 0xe8, 0xf7, 0x3, 0xa4, 0x92, 0x1b, 0xb8, 0x4d, 0xfb, 0x2e, - 0xfb, 0x7f, 0x41, 0x1f, 0xf7, 0xc, 0x6, 0xbd, 0xf7, 0x38, 0x99, 0xb8, - 0xb0, 0xcb, 0x8e, 0x91, 0xde, 0xf7, 0x5, 0xad, 0x8c, 0x8, 0x94, 0x91, - 0x83, 0x78, 0x7d, 0x6b, 0x38, 0x72, 0x3c, 0x1f, 0x7a, 0x56, 0x7d, 0x57, - 0x6e, 0x1a, 0x13, 0xa0, 0x4a, 0xc0, 0x8b, 0x9c, 0xdb, 0xb9, 0xd9, 0xc0, - 0xaa, 0x1e, 0x75, 0x98, 0x5, 0x73, 0x88, 0x57, 0x58, 0x76, 0x1b, 0x86, - 0x87, 0x90, 0x94, 0x9d, 0x9f, 0xc3, 0xa0, 0xc7, 0x1f, 0xa2, 0xce, 0xa4, - 0xd4, 0xae, 0x1a, 0xb7, 0x73, 0xae, 0x54, 0x39, 0x50, 0x37, 0x3a, 0x58, - 0x1e, 0x8a, 0x8d, 0x5, 0x94, 0xa2, 0x99, 0xad, 0xb2, 0x1a, 0xce, 0x4e, - 0x8b, 0x86, 0x32, 0x4a, 0x27, 0x32, 0x51, 0x1e, 0x88, 0x8d, 0xc7, 0xf7, - 0x4e, 0x46, 0x7b, 0x72, 0x89, 0x21, 0x82, 0x6d, 0xa, 0x9a, 0xb2, 0x8e, - 0x6e, 0x1f, 0x13, 0x60, 0x6a, 0x5e, 0xfb, 0x1f, 0x52, 0xfb, 0x65, 0x1e, - 0xe, 0x89, 0x1d, 0x12, 0x13, 0x60, 0x78, 0xa, 0xaf, 0x6d, 0x2e, 0x30, - 0x6d, 0x1f, 0x77, 0x4f, 0x78, 0x50, 0x6c, 0x1a, 0x13, 0xa0, 0x76, 0x1d, - 0x6a, 0x81, 0x62, 0x61, 0x76, 0x1b, 0x84, 0x86, 0x90, 0x97, 0x99, 0x9f, - 0xc4, 0xa0, 0xc9, 0x1f, 0xa1, 0xcd, 0xa3, 0xd4, 0xad, 0x4f, 0xa, 0x13, - 0x60, 0x88, 0xa, 0xe, 0x7e, 0xa8, 0xf8, 0x35, 0xa8, 0x52, 0x1d, 0xe1, - 0x15, 0xcb, 0xbf, 0xf7, 0xaf, 0xf7, 0x0, 0xa5, 0x9f, 0x7d, 0x59, 0x40, - 0x4f, 0xfb, 0xaa, 0x2b, 0x57, 0x8d, 0xbd, 0x9f, 0x1e, 0xfb, 0xb, 0xbd, - 0x15, 0x2b, 0xd7, 0x56, 0xdd, 0xf7, 0x34, 0xf7, 0x12, 0xf7, 0x40, 0xf7, - 0x29, 0xf7, 0x1a, 0xfb, 0x9, 0x9f, 0x65, 0xfb, 0x32, 0xfb, 0x17, 0xfb, - 0x40, 0xfb, 0x2e, 0x1e, 0xe, 0x87, 0x1d, 0x59, 0x1d, 0x78, 0x6b, 0x43, - 0x44, 0xfb, 0x8a, 0x4f, 0x1d, 0x57, 0x1f, 0x88, 0x8e, 0xad, 0xf2, 0x44, - 0x7d, 0x64, 0x87, 0x38, 0x81, 0x6d, 0xa, 0xaf, 0x9d, 0x89, 0x72, 0x75, - 0x4a, 0xfb, 0x85, 0x4f, 0xfb, 0x8f, 0x1f, 0x69, 0x83, 0x6d, 0x87, 0xa, - 0x6d, 0x8d, 0xab, 0xa1, 0xa8, 0xe3, 0x93, 0xac, 0x1f, 0xe, 0xfb, 0x61, - 0xb0, 0xf7, 0x2f, 0xd3, 0xf7, 0xfc, 0xb6, 0x7e, 0x77, 0x12, 0x8c, 0xf7, - 0x11, 0x13, 0xd8, 0xf3, 0xfb, 0x3c, 0x15, 0x66, 0xf7, 0x9f, 0xb0, 0x7, - 0x68, 0x6d, 0x8b, 0xa9, 0xa0, 0xf7, 0x13, 0xf8, 0x37, 0xb1, 0xf7, 0x27, - 0x1f, 0xfb, 0x1, 0x6, 0x7d, 0x54, 0x6f, 0xa, 0x13, 0xe8, 0xab, 0x86, - 0x84, 0xaf, 0x4b, 0x1b, 0xfb, 0x13, 0xfb, 0x22, 0xfb, 0x60, 0xfb, 0x11, - 0x6a, 0x8b, 0xfb, 0x5, 0xf4, 0xd4, 0xb8, 0xc5, 0xb9, 0xa7, 0x1f, 0x8d, - 0x89, 0x4f, 0xfb, 0x77, 0x83, 0x6d, 0x6d, 0x8e, 0x57, 0x88, 0x19, 0xa1, - 0xf7, 0xc1, 0x15, 0xd6, 0xdc, 0xf7, 0x67, 0xdd, 0xa7, 0x93, 0x70, 0x74, - 0x54, 0x4a, 0xfb, 0x93, 0x2e, 0x62, 0x8b, 0xbc, 0xa4, 0x1e, 0xe, 0xfb, - 0xa5, 0xa0, 0x76, 0xf8, 0x62, 0x77, 0x1, 0x76, 0x83, 0xa, 0xab, 0xe8, - 0x95, 0xbb, 0xa5, 0xce, 0x8, 0xc0, 0xa1, 0xbf, 0xef, 0xa7, 0x1b, 0x91, - 0x91, 0x83, 0x83, 0x92, 0x1f, 0x81, 0x94, 0x98, 0x7f, 0x9e, 0x1b, 0xaa, - 0xa7, 0xa6, 0xb9, 0xcd, 0x55, 0x8b, 0x87, 0x49, 0x50, 0xfb, 0xc, 0x51, - 0x68, 0x1f, 0xc3, 0xf7, 0x46, 0x48, 0x7a, 0x6c, 0x89, 0x25, 0x82, 0x6d, - 0xa, 0xaf, 0x9d, 0x89, 0x72, 0x6b, 0x5a, 0xfb, 0x3c, 0x56, 0xfb, 0x48, - 0x1f, 0xe, 0xfb, 0xa5, 0x93, 0x76, 0xf8, 0x51, 0xac, 0x87, 0x77, 0x12, - 0x8e, 0xa6, 0xf7, 0x2d, 0xeb, 0xa4, 0xa8, 0x13, 0xdc, 0x85, 0xa, 0x96, - 0x95, 0x87, 0x86, 0x97, 0x1f, 0x86, 0x9a, 0x9c, 0x85, 0xa3, 0x1b, 0xcb, - 0xe4, 0xb0, 0xec, 0xba, 0x6f, 0xb6, 0x6c, 0xb3, 0x1f, 0x66, 0xbb, 0x62, - 0xb5, 0xad, 0x1a, 0x90, 0x87, 0xbc, 0xc0, 0xc6, 0xa4, 0x46, 0x59, 0x93, - 0x1e, 0xa6, 0x89, 0x5, 0x13, 0xbc, 0x79, 0xa, 0x7b, 0x82, 0x91, 0x90, - 0x80, 0x1f, 0x91, 0x80, 0x7e, 0x90, 0x72, 0x1b, 0x4a, 0x3c, 0x67, 0x32, - 0x62, 0xaa, 0x5f, 0xab, 0x60, 0x1f, 0xae, 0x5c, 0xb1, 0x5c, 0x60, 0x1a, - 0x72, 0x78, 0x6d, 0x65, 0x82, 0x43, 0x7c, 0xa, 0xe, 0x66, 0x1d, 0xf8, - 0x34, 0xb5, 0xf7, 0x25, 0x77, 0x1, 0xf7, 0x5f, 0xf7, 0x21, 0x15, 0x79, - 0x89, 0x55, 0x4e, 0x72, 0x1b, 0x84, 0x87, 0x8f, 0x95, 0xad, 0xc1, 0xf7, - 0x43, 0xac, 0xf7, 0xe, 0x1f, 0xde, 0xb5, 0x43, 0x6, 0xb2, 0xf7, 0x25, - 0x5, 0x68, 0x6, 0x47, 0x21, 0x3f, 0x6c, 0x64, 0x7c, 0x8, 0x68, 0xbe, - 0x7, 0x5f, 0xfb, 0x32, 0x5b, 0xfb, 0x2a, 0x62, 0x1a, 0x84, 0x8b, 0x4f, - 0xd3, 0xd9, 0xbc, 0xd9, 0xc5, 0xb0, 0x1e, 0xe, 0x64, 0xa, 0xac, 0x77, - 0x12, 0x13, 0xc0, 0x2c, 0x1d, 0x56, 0x4d, 0x73, 0x1b, 0x84, 0x87, 0x91, - 0x98, 0x31, 0xa, 0x63, 0xa0, 0xc2, 0xaf, 0x96, 0x1f, 0x13, 0xa0, 0x44, - 0x1d, 0xa1, 0x88, 0x71, 0x6e, 0x78, 0x50, 0x79, 0x4f, 0x1f, 0x78, 0x4d, - 0x78, 0x4b, 0x68, 0x47, 0xa, 0xe, 0xfb, 0x6e, 0x93, 0x76, 0xf8, 0x6f, - 0x77, 0x1, 0xda, 0xf7, 0xf, 0xdd, 0xf7, 0x9, 0x3, 0xe0, 0x7e, 0x15, - 0xa5, 0x6, 0xf7, 0x3e, 0xf7, 0x32, 0xf7, 0xc, 0xf7, 0x29, 0xef, 0x1a, - 0xb6, 0x68, 0xa4, 0x6f, 0x73, 0x6d, 0x73, 0x6a, 0x76, 0x95, 0x7d, 0x95, - 0x7f, 0x1e, 0x97, 0x7d, 0x97, 0x80, 0x79, 0x1a, 0x6f, 0x75, 0x60, 0x23, - 0xfb, 0x8, 0x1e, 0xf7, 0x4e, 0x82, 0xcf, 0x75, 0xdb, 0x1e, 0x4f, 0x7c, - 0x63, 0x86, 0x54, 0x83, 0x8, 0x70, 0x7, 0xaa, 0xa5, 0x87, 0x6a, 0x1f, - 0x86, 0x8c, 0x85, 0x84, 0x1a, 0xe, 0x90, 0x93, 0x76, 0xf7, 0x5f, 0x77, - 0xf7, 0xb8, 0x77, 0x1, 0xe0, 0xf7, 0xb, 0xf7, 0xe2, 0xd7, 0x3, 0xea, - 0x7e, 0x15, 0xa6, 0x6, 0xda, 0xf7, 0xd, 0xdb, 0xf7, 0x22, 0x94, 0x9e, - 0x8, 0x8d, 0x6, 0x8f, 0x5d, 0x9c, 0xfb, 0x67, 0x8d, 0x72, 0x8, 0xa6, - 0x6, 0xb5, 0xb7, 0xf7, 0x7a, 0xf7, 0x85, 0xf7, 0x11, 0x1a, 0xb9, 0x66, - 0x9e, 0x73, 0x6a, 0x74, 0x6b, 0x70, 0x77, 0x95, 0x7d, 0x95, 0x7d, 0x1e, - 0x95, 0x7d, 0x96, 0x7d, 0x79, 0x1a, 0x62, 0x37, 0x2a, 0x68, 0x62, 0x1e, - 0x6b, 0xf7, 0xe0, 0x5, 0x70, 0x6, 0x52, 0x30, 0x5d, 0x31, 0x58, 0x30, - 0x8, 0x89, 0x6, 0xf7, 0x12, 0x7e, 0xd3, 0x77, 0xd5, 0x1e, 0x5e, 0x82, - 0x5d, 0x81, 0x4b, 0x82, 0x8, 0x70, 0x7, 0xab, 0xa5, 0x8b, 0x69, 0x1f, - 0x85, 0x8c, 0x84, 0x83, 0x1a, 0xe, 0x93, 0x76, 0xe9, 0x77, 0xb4, 0x77, - 0xf8, 0x10, 0x77, 0x1, 0xf7, 0x41, 0xf7, 0x22, 0x15, 0xfb, 0xa, 0x9f, - 0xab, 0x66, 0xba, 0x1b, 0xcd, 0xc4, 0xdf, 0xb1, 0xa5, 0x1f, 0x76, 0x99, - 0x5, 0x68, 0x76, 0x75, 0x75, 0x78, 0x1b, 0x78, 0x7c, 0x99, 0xb0, 0x83, - 0x1f, 0x6b, 0xf7, 0x30, 0x5, 0x9f, 0x99, 0xb6, 0xd6, 0xae, 0x1b, 0x97, - 0x92, 0x86, 0x86, 0x93, 0x1f, 0x86, 0x92, 0x93, 0x86, 0x99, 0x1b, 0xac, - 0xa3, 0xa5, 0xa5, 0xa3, 0x74, 0xb1, 0x6a, 0x57, 0x69, 0x6a, 0x22, 0x41, - 0x1f, 0x7b, 0xd9, 0x82, 0xab, 0x77, 0xa7, 0xfb, 0x3b, 0x73, 0x18, 0x70, - 0x7, 0x8c, 0x95, 0x98, 0x8c, 0x96, 0x1b, 0x9e, 0xa4, 0x8b, 0x48, 0x98, - 0x1f, 0xa9, 0xfb, 0x2e, 0x5, 0x34, 0x55, 0x7c, 0x73, 0x75, 0x1b, 0x7f, - 0x85, 0x91, 0x91, 0x81, 0x1f, 0x8f, 0x83, 0x81, 0x90, 0x7b, 0x1b, 0x68, - 0x77, 0x6c, 0x73, 0x7b, 0x94, 0x5f, 0xc0, 0xc2, 0xcb, 0xd4, 0xdd, 0xb1, - 0x1f, 0xe, 0x79, 0x1d, 0x1, 0xf7, 0xdc, 0xcb, 0x3, 0x45, 0xa, 0x95, - 0x94, 0x7c, 0x1e, 0x93, 0x7e, 0x7d, 0x93, 0x79, 0x38, 0x1d, 0x6a, 0x99, - 0x80, 0x99, 0x81, 0x1e, 0x98, 0x82, 0x99, 0x83, 0x75, 0x7a, 0xa, 0xe, - 0xfb, 0xa5, 0x52, 0x76, 0xf8, 0x46, 0xe8, 0x1, 0x79, 0x74, 0x15, 0xa7, - 0xb1, 0x8b, 0x8b, 0x9a, 0x1b, 0xa4, 0xa4, 0x79, 0x78, 0xa8, 0x1f, 0x75, - 0xac, 0xb2, 0x73, 0xc0, 0x76, 0xa, 0x7f, 0x8e, 0x83, 0x8f, 0x85, 0x1f, - 0x91, 0x82, 0x92, 0x86, 0x82, 0x1a, 0x84, 0x83, 0x83, 0x7e, 0x6f, 0x81, - 0xa6, 0xac, 0x7a, 0x1e, 0x7a, 0xab, 0x72, 0xb1, 0x51, 0xa2, 0x80, 0xa, - 0xfb, 0x2b, 0x70, 0x1d, 0xfb, 0xf9, 0x5, 0xe, 0x8a, 0xa, 0x12, 0xa7, - 0xf3, 0x60, 0xf1, 0x13, 0xe0, 0xf7, 0x69, 0xfb, 0x43, 0x15, 0x47, 0x95, - 0x7e, 0xad, 0xaf, 0x1a, 0x13, 0xd0, 0xc5, 0xc6, 0xf7, 0x2f, 0xc0, 0x1a, - 0xb7, 0x77, 0x9b, 0x47, 0x9c, 0x1e, 0x8d, 0x7, 0xf1, 0x9d, 0xa6, 0xa5, - 0x9d, 0xd2, 0xb8, 0xf7, 0x47, 0x18, 0x9d, 0xd1, 0xae, 0xb8, 0xe0, 0x9a, - 0x8e, 0x97, 0x18, 0xfb, 0x19, 0x37, 0x77, 0xfb, 0xe, 0x6c, 0x1f, 0x5d, - 0xfb, 0x47, 0x7a, 0x49, 0x6f, 0x6c, 0x2f, 0x78, 0x19, 0xc4, 0x7d, 0xa6, - 0x79, 0x60, 0x1a, 0x13, 0xe0, 0x64, 0x4e, 0xfb, 0x41, 0x52, 0x1a, 0x4b, - 0xb2, 0x6f, 0xf7, 0x23, 0x1e, 0xe, 0xfc, 0x4e, 0xfb, 0x3b, 0x76, 0xf7, - 0x53, 0x8d, 0x1d, 0xb0, 0xe3, 0x3, 0xf7, 0x5d, 0xf9, 0x41, 0x15, 0xcf, - 0x6, 0xfb, 0x79, 0xfd, 0xfd, 0x5, 0x47, 0x6, 0xe, 0x8a, 0xa, 0x1, - 0xf7, 0x8, 0xf1, 0x6d, 0xf3, 0x3, 0xfb, 0x12, 0xfb, 0x43, 0x15, 0xe0, - 0x9b, 0xad, 0xb1, 0x9e, 0xd1, 0xb8, 0xf7, 0x3f, 0x18, 0x9e, 0xd3, 0xa6, - 0xb1, 0xf0, 0x9e, 0x8, 0x8d, 0x7, 0x47, 0x9b, 0x77, 0x9a, 0xb6, 0xc0, - 0xc6, 0xf7, 0x2f, 0xc6, 0x1a, 0xb0, 0x7e, 0xad, 0x47, 0x96, 0x1e, 0x8e, - 0x97, 0x5, 0xf7, 0x23, 0xb2, 0x6d, 0x4b, 0x1f, 0x52, 0x4e, 0xfb, 0x3e, - 0x63, 0x1a, 0x60, 0xa6, 0x7a, 0xc4, 0x7c, 0x1e, 0x2e, 0x78, 0x71, 0x5e, - 0x79, 0x49, 0x5d, 0xfb, 0x3f, 0x18, 0xfb, 0xd, 0x6b, 0x38, 0x7c, 0xfb, - 0x19, 0x1b, 0xe, 0x2f, 0xf7, 0x45, 0xdf, 0x48, 0x76, 0xa2, 0x76, 0xd1, - 0xdf, 0x8f, 0x77, 0x12, 0x13, 0x50, 0xef, 0xf7, 0x41, 0x15, 0xae, 0x9b, - 0xa3, 0xb0, 0xb7, 0x1b, 0xb4, 0xac, 0x7c, 0x7b, 0xaa, 0x1f, 0x13, 0x88, - 0x79, 0xae, 0xad, 0x78, 0xb6, 0x1b, 0xc9, 0xac, 0xb7, 0xb5, 0xa9, 0x1f, - 0x67, 0xd1, 0x5, 0x68, 0x74, 0x72, 0x66, 0x63, 0x1b, 0x6e, 0x68, 0x9b, - 0x9b, 0x67, 0x1f, 0x13, 0x30, 0x9d, 0x64, 0x63, 0x9d, 0x69, 0x1b, 0x48, - 0x67, 0x5f, 0x61, 0x75, 0x1f, 0xe, 0xfb, 0xa5, 0xfb, 0x4c, 0x76, 0xf8, - 0xbd, 0xf7, 0x24, 0x1, 0x9e, 0xf7, 0x29, 0x95, 0xf7, 0x24, 0x3, 0xf7, - 0x55, 0xf7, 0xa7, 0x15, 0x4c, 0xfb, 0x39, 0x3a, 0xfb, 0x2f, 0x7b, 0x6d, - 0x8, 0x82, 0x7a, 0x86, 0x7a, 0x7c, 0x1a, 0x5d, 0xac, 0x68, 0xae, 0xc6, - 0x9e, 0xc1, 0xb5, 0x8e, 0x1e, 0x94, 0xf7, 0x7, 0xa4, 0xf7, 0x32, 0x9f, - 0xf2, 0x8, 0x5f, 0xf7, 0x2d, 0x15, 0x63, 0xab, 0x6b, 0xb3, 0xb3, 0xab, - 0xab, 0xb3, 0xb3, 0x6b, 0xab, 0x63, 0x63, 0x6b, 0x6b, 0x63, 0x1e, 0xe, - 0xfb, 0xe, 0x76, 0xf7, 0x2b, 0x76, 0xf8, 0x4f, 0xac, 0xf7, 0x5, 0x77, - 0x1, 0x97, 0xf7, 0x13, 0x3, 0xf7, 0x6a, 0xc4, 0x15, 0x63, 0x9c, 0x86, - 0xbe, 0xa5, 0x1a, 0xce, 0xca, 0xf7, 0x68, 0xde, 0xa0, 0x8e, 0x82, 0x84, - 0x1e, 0xfb, 0x29, 0xfc, 0x3f, 0x15, 0x5d, 0xfb, 0x16, 0x5, 0xad, 0x6, - 0xba, 0xf7, 0x19, 0xdd, 0x98, 0xb6, 0xc8, 0xb5, 0xc6, 0x19, 0x70, 0x9d, - 0x6b, 0x5b, 0x64, 0x63, 0x5c, 0x8a, 0x19, 0xe7, 0xf7, 0x9a, 0x5, 0x85, - 0x92, 0x97, 0x86, 0x9d, 0x1b, 0xaa, 0xab, 0xa5, 0xb5, 0xab, 0x79, 0xa9, - 0x68, 0x9c, 0x1f, 0xb8, 0xf7, 0x12, 0x5, 0x68, 0x6, 0x62, 0xfb, 0x8, - 0x5, 0x8d, 0x81, 0x81, 0x8c, 0x7f, 0x1b, 0xfb, 0x1b, 0xfb, 0x26, 0xfb, - 0x2e, 0xfb, 0x32, 0xfb, 0xe, 0xe9, 0x61, 0xc1, 0x1f, 0xe, 0x7f, 0xaa, - 0x6c, 0xf3, 0x23, 0xf7, 0x42, 0xfb, 0x2c, 0x76, 0xf7, 0x17, 0x77, 0xc2, - 0x77, 0xf7, 0x43, 0xc7, 0xf7, 0xab, 0xad, 0x12, 0x6b, 0xa9, 0x13, 0x4f, - 0x80, 0xf7, 0x30, 0xbc, 0x15, 0x6e, 0xab, 0xb8, 0x6b, 0xb8, 0x1b, 0xe7, - 0xb9, 0xd0, 0xed, 0x9d, 0x1f, 0x72, 0x6, 0x67, 0x7b, 0x7f, 0x70, 0x46, - 0x1b, 0x65, 0x4a, 0xa5, 0x91, 0x7c, 0x1f, 0xad, 0xc0, 0xaa, 0xde, 0x95, - 0xbd, 0x8, 0xf7, 0x7, 0x6, 0x95, 0xc7, 0x5, 0xfb, 0x6, 0x6, 0xb2, - 0xf7, 0x5e, 0x5, 0xbc, 0x94, 0xa0, 0xa7, 0xaa, 0x1b, 0xa7, 0x87, 0x73, - 0x73, 0x86, 0x1f, 0x89, 0x82, 0x8a, 0x82, 0x83, 0x1a, 0x67, 0xab, 0x7c, - 0xa0, 0xa7, 0xac, 0xa2, 0xb7, 0xcc, 0x4f, 0xa6, 0x58, 0x67, 0xfb, 0x37, - 0x7d, 0xfb, 0xbf, 0x59, 0x1e, 0x22, 0x6, 0x81, 0x4f, 0x5, 0xf7, 0x1, - 0x6, 0x83, 0x56, 0x86, 0x4d, 0x85, 0x5c, 0x8, 0x13, 0x23, 0x80, 0x93, - 0x78, 0x7d, 0x91, 0x6b, 0x1b, 0x5d, 0x5d, 0x6d, 0x50, 0x1f, 0x13, 0x1f, - 0x80, 0x5e, 0xaf, 0x64, 0xbe, 0xca, 0xa2, 0xaf, 0xa3, 0x9a, 0x1e, 0x60, - 0xb4, 0x15, 0x13, 0x8f, 0x80, 0x6a, 0x85, 0x7b, 0x65, 0x66, 0x1b, 0x75, - 0x69, 0x99, 0xad, 0xb7, 0xaa, 0x94, 0x9f, 0xa9, 0xa0, 0x79, 0x7f, 0x98, - 0x1f, 0xe, 0xd2, 0x76, 0xdc, 0xd5, 0xf7, 0x65, 0xd5, 0xd4, 0x77, 0x1, - 0xd3, 0xdb, 0xf7, 0x5d, 0xda, 0x3, 0xf7, 0x1c, 0xf7, 0xcc, 0x15, 0xca, - 0xbe, 0xbf, 0xcb, 0xcd, 0xba, 0x55, 0x4c, 0x4a, 0x5b, 0x54, 0x48, 0x4a, - 0x5b, 0xc4, 0xcc, 0x1e, 0x39, 0xfb, 0x8e, 0x15, 0xe1, 0xe3, 0x5, 0x78, - 0xa7, 0xb3, 0x7c, 0xb6, 0x1b, 0xb6, 0xb1, 0x9a, 0x9e, 0xa7, 0x1f, 0xe1, - 0x33, 0xbf, 0xbf, 0x34, 0xe3, 0x5, 0xa0, 0xa6, 0x96, 0xb2, 0xb6, 0x1a, - 0xb6, 0x7d, 0xb1, 0x78, 0xa7, 0x1e, 0xe3, 0xe3, 0x57, 0xbd, 0x34, 0x35, - 0x5, 0x9e, 0x6e, 0x67, 0x95, 0x5f, 0x1b, 0x62, 0x62, 0x81, 0x78, 0x6f, - 0x1f, 0x35, 0xe1, 0x57, 0x59, 0xe3, 0x33, 0x5, 0x78, 0x70, 0x7c, 0x64, - 0x60, 0x1a, 0x60, 0x98, 0x65, 0xa0, 0x6f, 0x1e, 0x33, 0x33, 0x5, 0xe, - 0x8b, 0xa4, 0xf7, 0x1f, 0xbd, 0xd9, 0xbd, 0xf7, 0xc2, 0xa4, 0x1, 0xb9, - 0x16, 0xf7, 0xd6, 0xa4, 0x6, 0x59, 0x8d, 0x6c, 0x8c, 0xb4, 0x1a, 0xa8, - 0x98, 0xb6, 0x91, 0xa2, 0x1e, 0xf7, 0x2c, 0x6, 0x99, 0xbd, 0x5, 0xfb, - 0x2c, 0x6, 0xa0, 0xd9, 0x5, 0xf7, 0x2a, 0x6, 0x98, 0xbd, 0x5, 0xfb, - 0x1b, 0x6, 0xf7, 0x30, 0xf7, 0x7d, 0x90, 0x1d, 0xb8, 0x93, 0x19, 0xa4, - 0xfb, 0x5c, 0x72, 0x7, 0xc7, 0xa1, 0x7c, 0x79, 0x82, 0x86, 0x80, 0x84, - 0x80, 0x1f, 0xfb, 0x2b, 0xfb, 0x80, 0x5, 0x74, 0xc1, 0x56, 0xf7, 0x54, - 0x9d, 0x1a, 0xa2, 0x97, 0x98, 0xca, 0x1e, 0xa4, 0xfb, 0xac, 0x72, 0x7, - 0xc0, 0x84, 0x8a, 0x92, 0xa1, 0x64, 0xd8, 0xfb, 0x9b, 0x18, 0xfb, 0x11, - 0x6, 0x7d, 0x59, 0x5, 0xf7, 0x22, 0x6, 0x75, 0x3d, 0x5, 0xfb, 0x21, - 0x6, 0x7d, 0x59, 0x5, 0xf7, 0x21, 0x6, 0x70, 0x2c, 0x7f, 0x62, 0x71, - 0x8d, 0x4c, 0x86, 0x19, 0xe, 0xfc, 0x4e, 0x3e, 0x76, 0xf0, 0x76, 0xf7, - 0x96, 0x77, 0xad, 0x77, 0xf8, 0x57, 0x77, 0x12, 0xcd, 0xe3, 0x13, 0xdc, - 0xf5, 0xf7, 0xf5, 0x15, 0xcf, 0x6, 0xef, 0xf7, 0xe0, 0x5, 0x43, 0x6, - 0xfb, 0x78, 0xfd, 0xa3, 0x15, 0xd4, 0x6, 0x13, 0xec, 0xeb, 0xf7, 0xe6, - 0x5, 0x47, 0x6, 0xe, 0xfb, 0xe, 0x76, 0xa2, 0x77, 0xf7, 0x99, 0xa6, - 0xf7, 0x90, 0xa4, 0xf7, 0x78, 0xa1, 0x12, 0xaf, 0xf7, 0x6, 0x9d, 0xd1, - 0xa9, 0xd8, 0x9e, 0xd2, 0x13, 0x7f, 0x80, 0xf7, 0xb2, 0xf7, 0xd, 0x15, - 0x8d, 0x8f, 0x5, 0x88, 0x93, 0x95, 0x8a, 0x97, 0x1b, 0xc6, 0xc5, 0xbc, - 0xd6, 0xca, 0x62, 0xc1, 0x78, 0xa3, 0x1f, 0x26, 0xf7, 0xc, 0x67, 0xb5, - 0xb4, 0x1a, 0xb0, 0xa3, 0xb0, 0xc3, 0xaf, 0xa7, 0x7c, 0x7f, 0x82, 0x83, - 0x87, 0x83, 0x84, 0x1e, 0x80, 0x84, 0x82, 0x81, 0x77, 0x1a, 0x70, 0xa3, - 0x71, 0xaa, 0xa0, 0xb0, 0x99, 0xbb, 0xb7, 0x62, 0xc0, 0x27, 0x37, 0x49, - 0x55, 0x3a, 0x4b, 0xb7, 0x56, 0x96, 0x80, 0x1e, 0x89, 0x88, 0x5, 0x8f, - 0x7e, 0x6d, 0x8d, 0x86, 0x1b, 0xfb, 0x0, 0x6e, 0xfb, 0x2b, 0x28, 0xde, - 0x1f, 0xf7, 0x16, 0xfb, 0x34, 0x9e, 0x77, 0x63, 0x1a, 0x4e, 0x4f, 0x7d, - 0x70, 0x75, 0x5f, 0x95, 0x9d, 0x96, 0x93, 0x8f, 0x94, 0x93, 0x1e, 0x94, - 0x93, 0x94, 0x94, 0xa2, 0x1a, 0xb4, 0x66, 0x95, 0x77, 0x6f, 0x6e, 0x76, - 0x64, 0x1e, 0x13, 0xbf, 0x80, 0x52, 0xc4, 0x5b, 0xe3, 0xe2, 0xd8, 0xc4, - 0xd8, 0xc6, 0x64, 0xb9, 0x77, 0xa4, 0x1e, 0x3b, 0xec, 0x15, 0x88, 0x8e, - 0x4b, 0xcf, 0xbe, 0x1a, 0xb2, 0xa5, 0xa0, 0xab, 0xc2, 0xf7, 0x4, 0xfb, - 0x17, 0x50, 0x60, 0x69, 0x78, 0x72, 0x6e, 0x7a, 0x97, 0xc5, 0x56, 0x1e, - 0xe, 0xfb, 0xdd, 0xf8, 0xa1, 0xf7, 0x16, 0x1, 0xb8, 0xf7, 0x16, 0xdf, - 0xf7, 0x16, 0x3, 0xb8, 0xf8, 0xe2, 0x15, 0x4b, 0xa, 0xf7, 0x68, 0x16, - 0x4b, 0xa, 0xe, 0xe0, 0x79, 0xb9, 0xf7, 0x4, 0xa2, 0xe2, 0x77, 0xf7, - 0xb4, 0x9f, 0xf0, 0xb9, 0x1, 0x9f, 0xc8, 0x58, 0xc8, 0xe4, 0xe0, 0xf8, - 0x1c, 0xc8, 0x3, 0xa9, 0xf7, 0xe1, 0x15, 0xf7, 0x57, 0xf7, 0x2b, 0xf7, - 0x31, 0xf7, 0x55, 0xf7, 0x55, 0xf7, 0x2b, 0xfb, 0x31, 0xfb, 0x58, 0xfb, - 0x58, 0xfb, 0x2b, 0xfb, 0x2e, 0xfb, 0x55, 0xfb, 0x55, 0xfb, 0x2b, 0xf7, - 0x2f, 0xf7, 0x58, 0x1e, 0xc8, 0x16, 0xfb, 0x38, 0xf7, 0x12, 0xfb, 0x21, - 0xf7, 0x31, 0xf7, 0x31, 0xf7, 0x12, 0xf7, 0x20, 0xf7, 0x38, 0xf7, 0x38, - 0xfb, 0x12, 0xf7, 0x23, 0xfb, 0x31, 0xfb, 0x32, 0xfb, 0x11, 0xfb, 0x23, - 0xfb, 0x37, 0x1e, 0xf8, 0x59, 0x38, 0x15, 0x7a, 0x43, 0x5, 0x70, 0x6e, - 0x66, 0x80, 0x48, 0x1b, 0xfb, 0xc, 0x2d, 0xc8, 0xf7, 0x21, 0xe0, 0xc8, - 0xf7, 0x3, 0xf7, 0x32, 0xc0, 0xa5, 0x82, 0x82, 0xa6, 0x1f, 0x9a, 0x86, - 0x92, 0x84, 0x82, 0x1a, 0x44, 0x7a, 0x7, 0xb6, 0x83, 0x70, 0xba, 0x3f, - 0x1b, 0x2f, 0x61, 0x3e, 0x28, 0x20, 0xa8, 0x43, 0xef, 0xcc, 0xba, 0xb2, - 0xbb, 0x9f, 0x1f, 0xe, 0xfc, 0x20, 0xf8, 0x24, 0xb8, 0x72, 0x76, 0xf7, - 0x97, 0xa6, 0x12, 0x9b, 0xd9, 0x13, 0x70, 0xf7, 0x54, 0xf8, 0x6f, 0x15, - 0x87, 0x7b, 0x88, 0x81, 0x81, 0x1a, 0x6c, 0xaa, 0x82, 0x97, 0xb3, 0xb0, - 0xb8, 0xaa, 0xa0, 0x1e, 0x7e, 0x94, 0x5, 0x7f, 0x85, 0x6f, 0x6e, 0x7f, - 0x1b, 0x88, 0x89, 0x8d, 0x91, 0xa1, 0x98, 0xb2, 0x94, 0xa7, 0x1f, 0xb9, - 0xf7, 0x20, 0x3f, 0x88, 0x81, 0x6a, 0x6f, 0xa, 0x9a, 0x88, 0x84, 0xa5, - 0x64, 0x1b, 0x39, 0x2c, 0xfb, 0xb, 0x33, 0x1f, 0x13, 0xb0, 0x77, 0x92, - 0x51, 0xcc, 0xc1, 0xac, 0xbd, 0xa6, 0x9a, 0x1e, 0x2b, 0x16, 0xb8, 0xc5, - 0xf7, 0x1c, 0xba, 0x94, 0x95, 0x7f, 0x7a, 0x63, 0x5e, 0xfb, 0x24, 0x52, - 0x88, 0x78, 0x8f, 0xa7, 0x1e, 0xe, 0x72, 0x1d, 0x97, 0xf7, 0x6d, 0x71, - 0x1d, 0x81, 0x94, 0x96, 0x82, 0x93, 0x1b, 0x91, 0x8f, 0x8e, 0x98, 0x1f, - 0x41, 0x8d, 0xa, 0xe3, 0x5f, 0xa, 0xf7, 0x4d, 0x82, 0x71, 0x1d, 0x80, - 0x94, 0x97, 0x8a, 0x1d, 0x41, 0x8d, 0xa, 0xe3, 0xdc, 0xaf, 0x1a, 0x94, - 0x88, 0x8e, 0x86, 0x79, 0x60, 0x62, 0x7b, 0x6c, 0xa, 0xe, 0x53, 0xf7, - 0x15, 0x76, 0xf7, 0x5d, 0xce, 0x48, 0xe5, 0x1, 0xf8, 0x65, 0xe5, 0x43, - 0xd3, 0x3, 0xbe, 0xf7, 0xc9, 0x15, 0xf8, 0x44, 0xfb, 0x5d, 0xd3, 0xf7, - 0xa0, 0xfc, 0x8c, 0x6, 0xe, 0xe0, 0x79, 0xb9, 0xf7, 0xf, 0xf7, 0x4e, - 0xf7, 0x3d, 0xa0, 0xf7, 0x4, 0xb9, 0x1, 0xa9, 0xc8, 0xf7, 0x3a, 0xd2, - 0xf7, 0x1, 0xd4, 0xf7, 0x27, 0xc8, 0x3, 0xa9, 0xf7, 0xe3, 0x15, 0xfb, - 0x58, 0xf7, 0x2b, 0xfb, 0x31, 0xf7, 0x55, 0xf7, 0x55, 0xf7, 0x2b, 0xf7, - 0x2d, 0xf7, 0x58, 0xf7, 0x58, 0xfb, 0x2b, 0xf7, 0x32, 0xfb, 0x55, 0xfb, - 0x55, 0xfb, 0x2b, 0xfb, 0x2f, 0xfb, 0x57, 0x1e, 0xc8, 0x16, 0xf7, 0x38, - 0xf7, 0x11, 0xf7, 0x20, 0xf7, 0x32, 0xf7, 0x32, 0xf7, 0x11, 0xfb, 0x24, - 0xfb, 0x38, 0xfb, 0x38, 0xfb, 0x11, 0xfb, 0x1f, 0xfb, 0x32, 0xfb, 0x31, - 0xfb, 0x12, 0xf7, 0x23, 0xf7, 0x38, 0x1e, 0xf7, 0xb, 0xfb, 0x4c, 0x15, - 0xf7, 0x3a, 0x9b, 0x6, 0x5a, 0x90, 0x8c, 0x8c, 0xb5, 0x1a, 0xf1, 0xb7, - 0x7, 0x30, 0xc8, 0xc8, 0x40, 0x89, 0x1b, 0xd1, 0x6, 0x77, 0xa5, 0x6e, - 0xad, 0x37, 0xf7, 0x9, 0x8, 0xbb, 0x9a, 0xac, 0xb3, 0xbd, 0x1a, 0xcc, - 0x54, 0xa8, 0x4d, 0x1e, 0xfb, 0x4b, 0x7b, 0x6, 0xbc, 0x86, 0x89, 0x8a, - 0x62, 0x1a, 0xfb, 0x8d, 0x7, 0x61, 0x8d, 0x8a, 0x5a, 0x86, 0x1e, 0xf7, - 0xa, 0xf7, 0x3e, 0x15, 0xf7, 0x3d, 0xb3, 0x7, 0xb2, 0xa9, 0x78, 0x51, - 0x56, 0x77, 0x64, 0x5b, 0x1f, 0xe, 0xfb, 0xdd, 0xf8, 0xbd, 0xd1, 0x1, - 0xbe, 0xf8, 0xbd, 0x15, 0xf7, 0xd8, 0x6, 0x9d, 0xd1, 0x5, 0xfb, 0xd7, - 0x6, 0xe, 0xfb, 0x9a, 0xf8, 0x36, 0x76, 0xf7, 0xb2, 0x77, 0x1, 0xde, - 0xf8, 0xb2, 0x15, 0x3c, 0xcb, 0x49, 0xda, 0xda, 0xcb, 0xc9, 0xda, 0xda, - 0x4b, 0xcd, 0x3c, 0x3c, 0x4b, 0x4d, 0x3c, 0x1e, 0xb1, 0x8a, 0x15, 0x51, - 0xb9, 0x5b, 0xc5, 0xc5, 0xba, 0xb7, 0xc5, 0xc5, 0x5c, 0xbc, 0x51, 0x51, - 0x5d, 0x5e, 0x51, 0x1e, 0xe, 0x2f, 0x8b, 0xe4, 0xb2, 0x77, 0xf7, 0x36, - 0xe4, 0x3c, 0xc9, 0xf7, 0x38, 0x77, 0x12, 0xf7, 0x85, 0xe3, 0x3e, 0xcc, - 0x13, 0xea, 0xf7, 0x90, 0xf7, 0x14, 0x15, 0xcc, 0x6, 0x13, 0xda, 0xf7, - 0x2c, 0xf7, 0x70, 0xc9, 0xfb, 0x70, 0xf7, 0x38, 0x4a, 0xfb, 0x38, 0xfb, - 0x6f, 0x4d, 0xf7, 0x6f, 0x7, 0xfb, 0x6f, 0xfb, 0xac, 0x15, 0xf8, 0x8c, - 0x6, 0x13, 0xec, 0xcf, 0xfc, 0x8c, 0x7, 0xe, 0xfb, 0xfe, 0xf7, 0xa6, - 0xd0, 0xf7, 0xab, 0xc8, 0x1, 0x8d, 0xf7, 0xa6, 0x5e, 0x1d, 0xef, 0x5, - 0xb6, 0xaa, 0xbc, 0xbd, 0x52, 0xa, 0x6d, 0x66, 0x61, 0x1f, 0x6b, 0x68, - 0x8b, 0x84, 0xfb, 0x8, 0xfb, 0x2, 0x8, 0xe, 0xfb, 0xfe, 0xf7, 0xb2, - 0x76, 0xf8, 0x3, 0xbe, 0x12, 0xf7, 0x66, 0xdf, 0x4e, 0xe3, 0x13, 0xe0, - 0xf7, 0x2, 0xf8, 0x75, 0x15, 0xcc, 0xae, 0x69, 0x4f, 0x69, 0x66, 0x4f, - 0x69, 0x81, 0x82, 0x8f, 0x97, 0x83, 0x67, 0x1d, 0xcf, 0xe1, 0xbc, 0x74, - 0xa3, 0x6e, 0x9e, 0x1f, 0x13, 0xd0, 0x63, 0x1d, 0x69, 0xa, 0xe, 0x7f, - 0x1d, 0xf7, 0x49, 0x77, 0x1, 0xf7, 0x1f, 0xf8, 0x98, 0x15, 0xbd, 0x6, - 0xf7, 0x2b, 0x21, 0x1d, 0xe, 0x35, 0xfb, 0x4e, 0x76, 0xf7, 0x63, 0xd1, - 0x4d, 0x76, 0xf7, 0x11, 0x77, 0xf7, 0xf9, 0x77, 0x12, 0x4f, 0xf7, 0xb, - 0x13, 0xdc, 0xf7, 0xaf, 0xf7, 0x4, 0x15, 0x83, 0x6c, 0x89, 0x7c, 0x7a, - 0x1a, 0x6d, 0xa1, 0x6b, 0xb3, 0xda, 0xba, 0xd6, 0xc3, 0xb5, 0x1e, 0x76, - 0x9b, 0x5, 0x13, 0xbc, 0x71, 0x80, 0x6b, 0x67, 0x79, 0x1b, 0x80, 0x85, - 0x94, 0xab, 0x93, 0x1f, 0xf3, 0xf7, 0xe4, 0x5, 0xfb, 0x1b, 0x6, 0x58, - 0xfb, 0x38, 0x5, 0xfb, 0xe, 0x62, 0x42, 0x2e, 0x53, 0x1b, 0x6e, 0x95, - 0xb7, 0xa2, 0x91, 0x1f, 0xe8, 0xf7, 0xcc, 0x5, 0x13, 0xdc, 0xfb, 0x1b, - 0x6, 0xfb, 0x3, 0xfc, 0xb, 0x5, 0x5f, 0xfb, 0x12, 0x81, 0x54, 0x64, - 0x1a, 0x60, 0xa0, 0x79, 0xa9, 0xb3, 0xa7, 0xae, 0xbd, 0xb6, 0x87, 0xc0, - 0x9c, 0xbd, 0x1e, 0x7a, 0xa2, 0x94, 0x84, 0xae, 0x1b, 0xc0, 0xcd, 0xd2, - 0xb4, 0xa2, 0x1f, 0xe, 0xfb, 0x57, 0x76, 0xf9, 0xdc, 0xb1, 0x12, 0xb2, - 0xf7, 0x64, 0x42, 0xe4, 0xf7, 0x2c, 0xe4, 0x13, 0xd8, 0xf7, 0x11, 0xfb, - 0x6c, 0x15, 0xbc, 0x6, 0xf7, 0x85, 0xf9, 0xdc, 0x5, 0xe4, 0x6, 0xfb, - 0x85, 0xfd, 0xdc, 0x5, 0xbc, 0x6, 0xf7, 0x69, 0xf9, 0x7e, 0x5, 0xed, - 0xa7, 0x92, 0x9b, 0xe5, 0x1b, 0x90, 0x9d, 0x5, 0xfb, 0xbd, 0x6, 0x13, - 0xe8, 0xfb, 0x64, 0xfb, 0x3, 0xfb, 0x30, 0xfb, 0x1c, 0xfb, 0x13, 0xf0, - 0x6c, 0xf6, 0x89, 0x1f, 0xe, 0xfc, 0x30, 0xf7, 0x95, 0xf7, 0x28, 0x1, - 0xbe, 0xf7, 0x28, 0x3, 0xbe, 0xf7, 0xdf, 0x3c, 0xa, 0xfb, 0xdd, 0xfb, - 0x6e, 0xb4, 0x80, 0xd8, 0x49, 0xd8, 0xf4, 0x77, 0x12, 0x13, 0x50, 0xb4, - 0x90, 0x15, 0x49, 0x2a, 0x98, 0x7f, 0x5, 0x13, 0xb0, 0x7d, 0xa, 0x72, - 0x7c, 0x6c, 0x6e, 0x7b, 0x86, 0xa, 0x9f, 0x79, 0xbf, 0x1b, 0xc0, 0xe9, - 0xa3, 0xca, 0xbf, 0x5e, 0x9e, 0x67, 0x7d, 0x7e, 0x8b, 0x89, 0x83, 0x1f, - 0xb8, 0xce, 0x5, 0xe, 0xfb, 0xfe, 0xf7, 0xbb, 0x76, 0xf7, 0x17, 0x76, - 0xf7, 0xbf, 0x77, 0x1, 0xa9, 0xf8, 0x14, 0x8c, 0xa, 0x62, 0x71, 0x91, - 0xa0, 0x93, 0x1f, 0x9d, 0xb9, 0xc7, 0xf7, 0x21, 0xa7, 0xcd, 0x5e, 0x82, - 0x66, 0x83, 0x2c, 0x7d, 0x89, 0x76, 0x18, 0xa8, 0xb3, 0x93, 0x71, 0x7c, - 0x45, 0xfb, 0x1f, 0x7b, 0x6e, 0x1f, 0x70, 0x7d, 0x66, 0x8b, 0x73, 0x1b, - 0xe, 0xfb, 0xfe, 0xf8, 0x24, 0x9f, 0xf7, 0x89, 0x9f, 0x1, 0xf7, 0x9e, - 0xdc, 0x3, 0xf7, 0x1d, 0xf8, 0x5f, 0x15, 0xb2, 0xae, 0xf7, 0x3b, 0xd2, - 0x95, 0x98, 0x85, 0x6d, 0x5e, 0x64, 0xfb, 0x38, 0x4d, 0x6f, 0x8b, 0xa6, - 0x97, 0x1e, 0x3a, 0xa9, 0x15, 0x52, 0xbe, 0x6b, 0xc0, 0xf3, 0xde, 0xf2, - 0xe5, 0xdb, 0x3f, 0x97, 0x72, 0x24, 0x34, 0x24, 0x2e, 0x1e, 0xe, 0x72, - 0x1d, 0xf7, 0xeb, 0x49, 0x1d, 0x95, 0x82, 0x80, 0x94, 0x83, 0x88, 0x1d, - 0x88, 0x7e, 0x1f, 0xfb, 0x4, 0xfb, 0x40, 0x70, 0xa, 0x8f, 0x88, 0x90, - 0x9d, 0xb5, 0xb5, 0x9a, 0x4a, 0xa, 0x95, 0x82, 0x80, 0x94, 0x83, 0x88, - 0x1d, 0x88, 0x7e, 0x1f, 0xe, 0x86, 0x1d, 0xf8, 0xa7, 0x77, 0xa2, 0x77, - 0x12, 0x13, 0x70, 0xf8, 0x11, 0xe3, 0x15, 0xf7, 0x33, 0x6, 0x13, 0x90, - 0x70, 0x33, 0x5, 0xe1, 0x6, 0x13, 0x70, 0x48, 0xa, 0xfc, 0x39, 0xfb, - 0x37, 0x61, 0x1d, 0xfc, 0xc8, 0xfc, 0x2a, 0x8c, 0xa, 0x5d, 0x7e, 0x92, - 0xa2, 0x93, 0x8e, 0x95, 0x8e, 0x97, 0x1f, 0x13, 0x88, 0x6e, 0x1d, 0x94, - 0x70, 0x6b, 0xa, 0xe3, 0x8b, 0xd0, 0x4d, 0x76, 0xf7, 0x14, 0x77, 0xf7, - 0x92, 0xc8, 0xf7, 0xa3, 0x77, 0xa2, 0x77, 0x12, 0x13, 0x78, 0xf7, 0xd, - 0x7d, 0x61, 0x1d, 0x13, 0xb4, 0xfb, 0x24, 0xfd, 0x3c, 0x5e, 0x1d, 0xee, - 0x5, 0xb6, 0xaa, 0xbc, 0xbe, 0x52, 0xa, 0x63, 0x66, 0x61, 0x1f, 0x6b, - 0x68, 0x8b, 0x8b, 0xfb, 0x8, 0xfb, 0x2, 0x8, 0xfc, 0x39, 0xf7, 0x96, - 0x8c, 0xa, 0x5f, 0x7c, 0x90, 0xa0, 0x94, 0x8d, 0x96, 0x8f, 0x99, 0x1f, - 0x6e, 0x1d, 0x93, 0x71, 0x6b, 0xa, 0x86, 0x1d, 0xf7, 0x8, 0x77, 0xf7, - 0x80, 0xf7, 0x5b, 0x5b, 0xbb, 0x8e, 0x77, 0x12, 0xf7, 0x5c, 0xdf, 0x4e, - 0xe3, 0x13, 0x79, 0x0, 0xf7, 0x21, 0x7d, 0x61, 0x1d, 0xfc, 0x70, 0xfb, - 0x5b, 0x15, 0xcc, 0xae, 0x69, 0x4f, 0x5c, 0x6c, 0x61, 0x65, 0x7e, 0x80, - 0x8f, 0x92, 0x86, 0x67, 0x1d, 0xd1, 0xe1, 0xbc, 0x74, 0xa1, 0x6e, 0x9e, - 0x1f, 0x13, 0x92, 0x80, 0x63, 0x1d, 0x13, 0x94, 0x80, 0x69, 0xa, 0x13, - 0x79, 0x0, 0xf7, 0xb0, 0xfc, 0x2b, 0x15, 0xf7, 0x33, 0x6, 0x13, 0x99, - 0x0, 0x70, 0x33, 0x5, 0xe1, 0x6, 0x13, 0x79, 0x0, 0x48, 0xa, 0xe, - 0xfb, 0x61, 0xaa, 0x6c, 0xf7, 0x58, 0xf7, 0xf5, 0xf7, 0x28, 0x12, 0xa9, - 0xf7, 0x13, 0xf7, 0x8, 0xf7, 0x28, 0x13, 0x78, 0xf7, 0xc4, 0xf7, 0xa3, - 0x15, 0x73, 0x50, 0x7c, 0x6c, 0x60, 0x6f, 0x8, 0xfb, 0x19, 0x34, 0x50, - 0x5a, 0x3d, 0x1a, 0x5c, 0xa8, 0x2a, 0xf7, 0x29, 0xf7, 0x1, 0xcb, 0xc9, - 0xcf, 0xaf, 0x71, 0xa9, 0x68, 0x6b, 0x6e, 0x72, 0x69, 0x78, 0x93, 0x7f, - 0x92, 0x81, 0x1e, 0x92, 0x81, 0x92, 0x83, 0x82, 0x1a, 0x13, 0xb8, 0x76, - 0x6a, 0x7a, 0x6f, 0x6c, 0x64, 0x9b, 0xcd, 0xc1, 0xa9, 0xbd, 0xd6, 0xe8, - 0x1e, 0xc8, 0xd7, 0x92, 0xbd, 0x8e, 0xac, 0x8, 0x4f, 0xf7, 0x2e, 0x3c, - 0xa, 0x51, 0x1d, 0xf7, 0x85, 0x77, 0x1, 0xf8, 0x3c, 0xf9, 0x67, 0x7b, - 0xa, 0xfb, 0x2, 0xf7, 0x26, 0x5, 0x98, 0x80, 0x78, 0xa1, 0x30, 0x1d, - 0xfb, 0xfa, 0xfd, 0xc0, 0x33, 0xa, 0x51, 0x1d, 0xf7, 0x85, 0x77, 0x1, - 0xf7, 0xcb, 0xf9, 0x67, 0x22, 0x1d, 0xfc, 0x88, 0xfd, 0xea, 0x33, 0xa, - 0x51, 0x1d, 0xf7, 0x7e, 0x5a, 0x1d, 0xfc, 0x5a, 0xfe, 0x15, 0x24, 0x1d, - 0x56, 0xa, 0xf8, 0x4d, 0x77, 0xd5, 0x83, 0x1d, 0x5e, 0xd6, 0x12, 0x13, - 0xe4, 0xf7, 0x93, 0xf9, 0x7c, 0x15, 0x13, 0xe8, 0x9e, 0x93, 0x94, 0xa3, - 0xac, 0x1b, 0xac, 0xa2, 0x84, 0x80, 0xa0, 0x1f, 0x13, 0xf0, 0x7f, 0xa6, - 0x9f, 0x7d, 0xa6, 0x1b, 0xe1, 0xa3, 0xde, 0xaf, 0x93, 0x1f, 0x62, 0x6, - 0x78, 0x82, 0x82, 0x74, 0x68, 0x1b, 0x7c, 0x73, 0x96, 0x96, 0x70, 0x1f, - 0x96, 0x70, 0x6f, 0x94, 0x70, 0x1b, 0x28, 0x79, 0xfb, 0x7, 0x88, 0x1f, - 0x35, 0xfd, 0x7c, 0x15, 0xae, 0x7, 0x23, 0x1d, 0x68, 0x7, 0xf8, 0xc, - 0xf8, 0x7f, 0x15, 0x74, 0x1d, 0xfb, 0x4d, 0x6, 0xe, 0x56, 0xa, 0xf8, - 0x59, 0x77, 0xba, 0xf7, 0x1a, 0xfb, 0xd, 0xf7, 0x1a, 0x12, 0xf7, 0x80, - 0xf7, 0x1a, 0xbd, 0xf7, 0x1a, 0x13, 0xee, 0xf7, 0x73, 0xf9, 0xaf, 0x15, - 0x13, 0xf6, 0x20, 0x1d, 0xf7, 0x68, 0x2b, 0xa, 0xfc, 0x8a, 0xfd, 0xaf, - 0x24, 0x1d, 0x51, 0x1d, 0xb8, 0xbb, 0xf7, 0x1, 0xbc, 0x1, 0xf7, 0xb0, - 0xbb, 0xf7, 0x8, 0xbc, 0x3, 0xf7, 0xb0, 0xf9, 0xc2, 0x15, 0x4f, 0xb9, - 0x5d, 0xc7, 0xc6, 0xbb, 0xba, 0xc6, 0xc6, 0x5b, 0xbb, 0x50, 0x50, 0x5c, - 0x5b, 0x5e, 0xa, 0xfc, 0x23, 0xfd, 0xc2, 0x24, 0x1d, 0xf7, 0xae, 0x8b, - 0xab, 0xf7, 0x73, 0xb2, 0xb7, 0xab, 0xf7, 0x9f, 0xab, 0x1, 0x4b, 0xab, - 0x15, 0xac, 0x90, 0x8a, 0x8b, 0xc3, 0xd3, 0xf8, 0x2, 0xf8, 0x5b, 0x18, - 0x98, 0x9b, 0x92, 0x99, 0x98, 0x1a, 0xa0, 0x6d, 0x93, 0x58, 0x1e, 0xac, - 0xf8, 0xe1, 0x7, 0x5e, 0xfb, 0x52, 0x73, 0x90, 0x5, 0xf7, 0x14, 0x39, - 0xa4, 0x3c, 0x56, 0x87, 0x80, 0x76, 0x86, 0x1e, 0x4a, 0xfb, 0x7f, 0xf0, - 0x88, 0xc0, 0x98, 0xb3, 0xeb, 0x19, 0xa5, 0x87, 0x42, 0xfb, 0xa5, 0x72, - 0x90, 0x98, 0xe9, 0x77, 0xb6, 0xfb, 0xf, 0x88, 0x19, 0x4c, 0xfb, 0x85, - 0x5, 0x89, 0x82, 0x8a, 0x83, 0x85, 0x1a, 0x6f, 0x9d, 0x7d, 0xa7, 0xf7, - 0x2b, 0xcf, 0xba, 0xf7, 0xc, 0xd3, 0x1e, 0xa5, 0x88, 0x50, 0xfb, 0x58, - 0x5, 0xfc, 0xa3, 0xab, 0x6, 0xba, 0x93, 0x9a, 0x90, 0x9b, 0xc5, 0xb9, - 0xf7, 0x2c, 0x18, 0xfb, 0x54, 0x6, 0xfb, 0x6, 0xfb, 0x2a, 0x5, 0x82, - 0x7e, 0x86, 0x80, 0x81, 0x1a, 0x71, 0xa0, 0x7e, 0xb5, 0x1e, 0x6b, 0xfb, - 0x57, 0x7, 0xf8, 0x62, 0xf7, 0xba, 0x15, 0xe7, 0xf7, 0xd7, 0x5, 0x7f, - 0x6, 0xfb, 0x91, 0xfb, 0xd7, 0x5, 0xe, 0x90, 0xfb, 0x6e, 0xb4, 0xf7, - 0x6f, 0x76, 0xae, 0xbf, 0xf8, 0xaf, 0xae, 0x1, 0xab, 0xf7, 0x2e, 0xef, - 0xb8, 0xf7, 0xa1, 0xab, 0x98, 0xa9, 0x3, 0xf7, 0x7f, 0x2f, 0x15, 0x98, - 0x7f, 0x5, 0x8f, 0x94, 0x94, 0x8c, 0x93, 0x1b, 0xa8, 0xa1, 0x72, 0x7f, - 0x70, 0x74, 0x7d, 0x6c, 0x6e, 0x7a, 0x91, 0x96, 0x74, 0x1f, 0x75, 0x6a, - 0x5, 0x83, 0x9b, 0xa3, 0x7a, 0xbe, 0x1b, 0xc0, 0xe7, 0x9e, 0xca, 0xc3, - 0x58, 0xa0, 0x65, 0x80, 0x82, 0x8a, 0x89, 0x84, 0x1f, 0xaa, 0xb9, 0x5, - 0xf7, 0x9, 0xdb, 0xd6, 0xd3, 0xbb, 0x1f, 0x6d, 0xa1, 0x5, 0x2e, 0x43, - 0x49, 0x72, 0x3d, 0x1b, 0x7d, 0xfb, 0x16, 0x8b, 0xf7, 0x47, 0xf7, 0x45, - 0xf3, 0xf7, 0x97, 0xf7, 0x35, 0xe3, 0xc5, 0x4d, 0x2a, 0x7f, 0x8a, 0x80, - 0x89, 0x80, 0x81, 0x1d, 0x80, 0x85, 0x7e, 0x74, 0x1b, 0x7e, 0x77, 0x93, - 0x93, 0x6f, 0x1f, 0x92, 0x73, 0x6c, 0x91, 0x63, 0x1b, 0xfb, 0x87, 0xfb, - 0x44, 0xfb, 0x74, 0xfb, 0x71, 0xfb, 0x40, 0xf7, 0x15, 0x36, 0xf7, 0x11, - 0x1f, 0xe, 0x51, 0xa, 0x73, 0xa, 0xf8, 0x3c, 0xf9, 0x67, 0x27, 0x1d, - 0xfb, 0xd2, 0xfd, 0xc0, 0x15, 0x37, 0x1d, 0x57, 0x7b, 0x94, 0x9b, 0x98, - 0x93, 0x9c, 0x90, 0x9f, 0x7e, 0xa, 0xf7, 0x1, 0xae, 0x71, 0x4f, 0x7d, - 0x8a, 0x7b, 0x88, 0x79, 0x4c, 0xa, 0x5, 0x3a, 0x60, 0x7c, 0x72, 0xfb, - 0x27, 0x1b, 0x65, 0xa, 0x93, 0x73, 0x1d, 0x8b, 0x40, 0x1d, 0x85, 0x96, - 0x87, 0x43, 0xa, 0xe, 0x51, 0xa, 0x73, 0xa, 0xf7, 0xcb, 0xf9, 0x67, - 0x15, 0xbc, 0x6, 0xf7, 0x2b, 0xe1, 0x5, 0xa2, 0x98, 0x9c, 0x97, 0x25, - 0x1d, 0xfc, 0x60, 0xfd, 0xea, 0x15, 0x37, 0x1d, 0x55, 0x7d, 0x95, 0x9c, - 0x98, 0x93, 0x9b, 0x90, 0x9e, 0x7e, 0xa, 0xf7, 0x3, 0xac, 0x70, 0x4d, - 0x7e, 0x89, 0x7c, 0x89, 0x7a, 0x4c, 0xa, 0x60, 0x3a, 0x7c, 0x71, 0xfb, - 0x27, 0x8c, 0x19, 0x65, 0xa, 0x95, 0x73, 0x1d, 0x89, 0x31, 0x1d, 0xe, - 0x51, 0xa, 0xf7, 0x78, 0x5a, 0x1d, 0xfc, 0x32, 0xfe, 0x15, 0x15, 0x37, - 0x1d, 0x56, 0x7c, 0x95, 0x9c, 0x98, 0x91, 0x9b, 0x90, 0x9e, 0x1f, 0xca, - 0xf7, 0x7b, 0x5, 0xf7, 0x6, 0xa9, 0x6e, 0x49, 0x7f, 0x89, 0x7e, 0x89, - 0x7d, 0x2a, 0xa, 0xe, 0x51, 0xa, 0xc5, 0xf7, 0x1b, 0x1, 0xf7, 0x86, - 0xf7, 0x1b, 0xd8, 0xf7, 0x1b, 0x3, 0x70, 0x16, 0x37, 0x1d, 0x56, 0x7c, - 0x95, 0x9b, 0x98, 0x93, 0x9b, 0x90, 0x9f, 0x7e, 0xa, 0xf7, 0x3, 0xac, - 0x70, 0x4d, 0x7e, 0x89, 0x7c, 0x89, 0x7a, 0x2a, 0xa, 0xf7, 0xa1, 0xf9, - 0x8b, 0x46, 0x1d, 0x68, 0xa, 0x73, 0xa, 0x6b, 0x16, 0x75, 0x1d, 0x4a, - 0x7f, 0x9a, 0xa1, 0x97, 0x91, 0x98, 0x8e, 0x95, 0x41, 0xa, 0xc6, 0x9b, - 0x7e, 0x7a, 0x7f, 0x86, 0x7c, 0x47, 0x1d, 0xf7, 0xe5, 0xf9, 0x44, 0x2a, - 0x1d, 0x68, 0xa, 0x73, 0xa, 0xf7, 0x54, 0xf9, 0x67, 0x7b, 0xa, 0xf7, - 0x1a, 0xdc, 0x5, 0xa1, 0x98, 0x9e, 0x9c, 0x25, 0x1d, 0xfb, 0xda, 0xfd, - 0xea, 0x8e, 0x1d, 0x4e, 0x7b, 0x98, 0x9f, 0x98, 0x91, 0x9a, 0x8e, 0x96, - 0x41, 0xa, 0xc6, 0x9b, 0x7f, 0x79, 0x7f, 0x86, 0x7c, 0x47, 0x1d, 0xe, - 0x68, 0xa, 0xf7, 0x78, 0x77, 0x1, 0xf7, 0xb, 0xf9, 0x67, 0x15, 0xc4, - 0x6, 0xf4, 0xea, 0xe3, 0x2c, 0x3b, 0x1d, 0xfb, 0xb1, 0xfe, 0x15, 0x8e, - 0x1d, 0x4e, 0x7b, 0x98, 0x9f, 0x98, 0x91, 0x9a, 0x8e, 0x96, 0x46, 0xa, - 0x68, 0xa, 0xc6, 0xf7, 0x1a, 0x1, 0xf2, 0xf7, 0x1b, 0x3, 0xf2, 0xf9, - 0xb0, 0x15, 0x41, 0x1d, 0xf7, 0x63, 0x16, 0x41, 0x1d, 0xfb, 0xea, 0xfd, - 0xb0, 0x8e, 0x1d, 0x4a, 0x7f, 0x9a, 0xa1, 0x97, 0x91, 0x98, 0x8e, 0x95, - 0x46, 0xa, 0xc7, 0x8b, 0xad, 0xf7, 0xbb, 0xb7, 0xf7, 0x9d, 0xaa, 0x1, - 0xf8, 0xbd, 0xf7, 0x27, 0x3, 0xf7, 0x98, 0xf7, 0xdd, 0x15, 0xf7, 0xe, - 0x6, 0x97, 0xb7, 0x5, 0xfb, 0xe, 0x6, 0xc8, 0xf7, 0x77, 0x80, 0x1d, - 0xfb, 0x1d, 0x5b, 0x25, 0x60, 0xfb, 0xd1, 0xfb, 0x97, 0x61, 0x7d, 0x9a, - 0xa3, 0x9a, 0x8f, 0x9c, 0x77, 0xa, 0x91, 0xf7, 0x13, 0xf7, 0x6e, 0x5d, - 0xa, 0x7e, 0x82, 0x75, 0x5a, 0xfb, 0x4a, 0x1e, 0x25, 0x6, 0x7f, 0x5f, - 0x5, 0xf1, 0x6, 0x86, 0x78, 0x80, 0x5c, 0x67, 0xfb, 0xf, 0x6f, 0x2d, - 0x6d, 0x85, 0x6a, 0x86, 0x8, 0xe, 0x8b, 0x1d, 0xd5, 0x8c, 0x1d, 0x13, - 0xb0, 0x70, 0x16, 0xf7, 0x64, 0xae, 0x6, 0x52, 0x77, 0x9e, 0xaf, 0xa7, - 0x92, 0xac, 0x93, 0xa6, 0x1f, 0xee, 0xf7, 0xf8, 0x5, 0x13, 0x70, 0x59, - 0xa, 0xc2, 0xa0, 0x78, 0x6a, 0x6f, 0x85, 0x68, 0x83, 0x6f, 0x64, 0x1d, - 0xfb, 0xc, 0xfc, 0x2f, 0x18, 0x13, 0xa8, 0x63, 0xfb, 0x1f, 0x80, 0x93, - 0x59, 0x7f, 0x8, 0xf7, 0xb1, 0xf9, 0x59, 0x50, 0xa, 0xa8, 0xa2, 0x7f, - 0x80, 0xa2, 0x1f, 0x13, 0xb0, 0x80, 0xa1, 0xa2, 0x81, 0xaa, 0x3d, 0x1d, - 0x7c, 0x73, 0x96, 0x96, 0x70, 0x1f, 0x95, 0x71, 0x6e, 0x95, 0x70, 0x54, - 0x1d, 0x33, 0x1d, 0xf8, 0x3d, 0xf8, 0x96, 0x2a, 0x1d, 0x33, 0x1d, 0xf7, - 0xef, 0xf8, 0x96, 0x26, 0xa, 0x65, 0x1d, 0xf7, 0x6a, 0x25, 0xa, 0xf7, - 0x87, 0xf8, 0x96, 0x5b, 0xa, 0xec, 0xe3, 0x2a, 0x7e, 0x1d, 0x65, 0x1d, - 0xc7, 0x8c, 0x1d, 0x4d, 0xa, 0x13, 0xdc, 0x3a, 0x1d, 0xf7, 0x80, 0xf8, - 0xaa, 0x50, 0xa, 0xa4, 0xa2, 0x7f, 0x80, 0xa4, 0x1f, 0x13, 0xec, 0x80, - 0xa3, 0xa4, 0x81, 0xa8, 0x3d, 0x1d, 0x7c, 0x72, 0x96, 0x96, 0x70, 0x1f, - 0x95, 0x71, 0x6f, 0x95, 0x70, 0x54, 0x1d, 0x65, 0x1d, 0xb8, 0xf7, 0x1a, - 0x12, 0xa6, 0xf7, 0x24, 0xf7, 0xc, 0xf7, 0x1a, 0xd8, 0xf7, 0x1a, 0x32, - 0xf7, 0x24, 0x13, 0xfa, 0x3a, 0x1d, 0xf7, 0x9c, 0xf8, 0xdd, 0x2e, 0xa, - 0x13, 0xfc, 0xf7, 0x67, 0x2d, 0x1d, 0x2f, 0xb0, 0x76, 0xf8, 0x6e, 0x77, - 0x1, 0xbb, 0xc7, 0x15, 0xb7, 0x5f, 0xf7, 0x54, 0xf7, 0x54, 0xf7, 0x53, - 0xfb, 0x54, 0xba, 0xba, 0xfb, 0x55, 0xf7, 0x52, 0xf7, 0x55, 0xf7, 0x56, - 0x59, 0xb6, 0xfb, 0x50, 0xfb, 0x52, 0xfb, 0x52, 0xf7, 0x52, 0x5d, 0x5c, - 0xf7, 0x51, 0xfb, 0x51, 0x5, 0xe, 0xc7, 0x23, 0x76, 0xf6, 0xad, 0xf9, - 0xf, 0xad, 0xda, 0x77, 0x1, 0x4d, 0xa, 0x3, 0xf7, 0x4a, 0xd8, 0x15, - 0x83, 0x9f, 0x88, 0xa2, 0xa9, 0x1a, 0xeb, 0xe4, 0xf8, 0x29, 0xf7, 0x49, - 0xa8, 0xa0, 0x83, 0x7e, 0x9a, 0x1e, 0xfb, 0xbe, 0xfc, 0xe4, 0x15, 0xf7, - 0xd9, 0xf8, 0xbf, 0x5, 0x96, 0x74, 0x8e, 0x6f, 0x79, 0x1a, 0xfb, 0x2, - 0x2e, 0xfc, 0x22, 0xfb, 0x47, 0x72, 0x74, 0x91, 0x9b, 0x78, 0x1e, 0xfb, - 0x23, 0xfb, 0x37, 0x15, 0xbb, 0x6, 0xd1, 0xf7, 0xc, 0x5, 0x83, 0xa3, - 0xa6, 0x86, 0xaa, 0x1b, 0xf7, 0x8d, 0xf7, 0x45, 0xf7, 0xa0, 0xf7, 0x56, - 0xf7, 0x2, 0x56, 0xce, 0x47, 0xae, 0x1f, 0xca, 0xf7, 0x0, 0x5, 0x5a, - 0x6, 0x56, 0x2f, 0x5, 0x94, 0x70, 0x67, 0x8f, 0x70, 0x1b, 0xfb, 0x6f, - 0xfb, 0x57, 0xfb, 0x7d, 0xfb, 0x89, 0x46, 0xaf, 0x36, 0xdc, 0x61, 0x1f, - 0xe, 0x72, 0xa, 0x73, 0xa, 0xb0, 0xf7, 0x1e, 0x3, 0xed, 0xf9, 0xe, - 0x29, 0x1d, 0xc3, 0x9e, 0x7a, 0x68, 0x6e, 0x84, 0x68, 0x84, 0x70, 0x4a, - 0x1d, 0x2c, 0x6f, 0xb4, 0xc1, 0xb5, 0x9a, 0xbd, 0x98, 0xba, 0x3e, 0x1d, - 0xf7, 0xf6, 0xc1, 0x2a, 0x1d, 0x72, 0xa, 0x73, 0xa, 0xce, 0xf7, 0x1e, - 0x3, 0xf8, 0x32, 0xf9, 0x67, 0x22, 0x1d, 0xfc, 0x4a, 0xfb, 0x70, 0x29, - 0x1d, 0xc3, 0x9e, 0x79, 0x68, 0x6f, 0x84, 0x68, 0x84, 0x70, 0x4a, 0x1d, - 0x2f, 0x6c, 0xb1, 0xbf, 0xb6, 0x99, 0xbf, 0x99, 0xbc, 0x3e, 0x1d, 0xe, - 0x72, 0xa, 0xf7, 0x78, 0x77, 0x1, 0xce, 0xf7, 0x1e, 0x3, 0xf7, 0xa2, - 0xf9, 0x67, 0x42, 0xa, 0xfb, 0xe0, 0xfb, 0x9b, 0x29, 0x1d, 0xc0, 0xa1, - 0x7b, 0x6b, 0x6e, 0x85, 0x66, 0x83, 0x6e, 0x4a, 0x1d, 0x30, 0x6b, 0xb1, - 0xbe, 0xb6, 0x99, 0xc0, 0x99, 0xbc, 0x3e, 0x1d, 0xe, 0x72, 0xa, 0xc6, - 0xf7, 0x1a, 0x1, 0xf3, 0xf7, 0x1e, 0xca, 0xf7, 0x1a, 0xba, 0xf7, 0x1a, - 0x3, 0xed, 0xf9, 0xe, 0x29, 0x1d, 0xc4, 0x9d, 0x78, 0x67, 0x6f, 0x84, - 0x6a, 0x84, 0x70, 0x4a, 0x1d, 0x2d, 0x6e, 0xb3, 0xc1, 0xb5, 0x9a, 0xbe, - 0x98, 0xba, 0x3e, 0x1d, 0xf7, 0x63, 0xf7, 0x12, 0x2e, 0xa, 0xf7, 0x69, - 0x2d, 0x1d, 0x58, 0x58, 0xa, 0x73, 0xa, 0xd4, 0x16, 0xf7, 0xd6, 0xae, - 0x6, 0x58, 0x70, 0x98, 0xab, 0x99, 0x8d, 0x9b, 0x92, 0x9c, 0x1f, 0xbf, - 0xf7, 0x49, 0x6a, 0xa, 0xc2, 0xa6, 0x7e, 0x79, 0x81, 0x87, 0x7e, 0x80, - 0x7c, 0x1f, 0xfb, 0x2f, 0xfb, 0x69, 0x5, 0x4b, 0xf7, 0x5c, 0x81, 0x82, - 0xa7, 0x1a, 0xa2, 0x94, 0xb3, 0xc5, 0x6a, 0x1d, 0x55, 0xfb, 0x4e, 0x79, - 0x4b, 0x6c, 0x74, 0x51, 0x86, 0x19, 0xf7, 0xb1, 0xf9, 0x44, 0x26, 0xa, - 0x58, 0x8b, 0xae, 0xf7, 0x27, 0xab, 0xf7, 0xb4, 0xab, 0x6b, 0xf7, 0x3b, - 0x12, 0xf8, 0x3f, 0xf7, 0x26, 0x13, 0xe8, 0xf7, 0x79, 0xf7, 0x6f, 0x6f, - 0x1d, 0x33, 0x62, 0x40, 0x26, 0x7a, 0x78, 0x8c, 0x8f, 0x77, 0x1f, 0xfb, - 0x94, 0xfb, 0x6f, 0x15, 0xf7, 0xba, 0xae, 0x6, 0x4c, 0x7f, 0x9e, 0xa2, - 0x94, 0x8d, 0x94, 0x8d, 0x93, 0x1f, 0xa2, 0xdf, 0x5, 0x87, 0xb0, 0x9a, - 0x8a, 0xb4, 0x1b, 0xf7, 0x1a, 0xf7, 0x13, 0xce, 0xf7, 0x14, 0xf7, 0x12, - 0x20, 0xaa, 0x21, 0x1f, 0x5b, 0x6, 0xa9, 0xe5, 0xa3, 0x8f, 0xb3, 0x91, - 0x8, 0x13, 0xd8, 0x8c, 0xae, 0x5, 0xfb, 0xba, 0x68, 0x6, 0xbf, 0x9f, - 0x7f, 0x77, 0x7c, 0x88, 0x78, 0x85, 0x75, 0x1f, 0xfb, 0xf, 0xfc, 0x4b, - 0x7a, 0x4d, 0x74, 0x88, 0x63, 0x84, 0x19, 0xe, 0xfb, 0x5c, 0xf7, 0x16, - 0xca, 0xad, 0xf9, 0x1c, 0xa9, 0x12, 0xf7, 0xcf, 0xf7, 0xc, 0x42, 0xf7, - 0x3, 0x13, 0xf0, 0xf7, 0x22, 0x9a, 0x15, 0x82, 0x98, 0x96, 0x7e, 0xb6, - 0x1b, 0xf7, 0xb, 0xf6, 0xf7, 0x1a, 0xf7, 0x12, 0xe9, 0x4c, 0xb1, 0x3d, - 0x98, 0x1f, 0x8d, 0x7, 0x13, 0xe8, 0xca, 0xa2, 0xf7, 0x8, 0xbf, 0xf7, - 0x2, 0x1a, 0xd4, 0x4f, 0xba, 0x36, 0xfb, 0x2e, 0x43, 0xfb, 0x33, 0xfb, - 0x23, 0x71, 0x1e, 0x49, 0xfb, 0xff, 0x6d, 0xfb, 0x1c, 0x66, 0x5c, 0x8, - 0x80, 0x82, 0x71, 0x7a, 0x7c, 0x1b, 0x84, 0x87, 0x8f, 0x94, 0x96, 0x93, - 0x8c, 0x90, 0x95, 0x1f, 0x8d, 0x90, 0x8d, 0x91, 0x96, 0x1a, 0xb0, 0x6b, - 0x92, 0x7e, 0x55, 0x8b, 0x5c, 0x83, 0x67, 0xaa, 0x64, 0xcc, 0xf7, 0xa, - 0xcf, 0xf7, 0xd, 0xf7, 0x49, 0xb4, 0x1e, 0xe6, 0xf8, 0x2b, 0x5, 0xf7, - 0x3, 0xa4, 0xa8, 0xc2, 0xb9, 0x1b, 0xba, 0x8c, 0x47, 0x75, 0x4d, 0x79, - 0x21, 0x2b, 0x1f, 0x84, 0x6a, 0x5, 0x13, 0xf0, 0xb6, 0x85, 0xaa, 0x5f, - 0x3a, 0x1a, 0x5b, 0x6d, 0xfb, 0x46, 0x3f, 0x7a, 0x78, 0x93, 0x9a, 0x80, - 0x1e, 0xe, 0x58, 0x1d, 0xb5, 0x85, 0x77, 0xf7, 0x99, 0x34, 0xa, 0x6f, - 0x81, 0x62, 0x62, 0x76, 0x1b, 0x84, 0x86, 0x8f, 0x95, 0x44, 0xa, 0x5, - 0xfb, 0x1, 0x6, 0x78, 0x4d, 0x6f, 0xa, 0x13, 0xac, 0x27, 0xa, 0x30, - 0xa, 0xf7, 0x74, 0xf8, 0x25, 0x2a, 0x1d, 0x5b, 0x1d, 0xf7, 0x93, 0x34, - 0xa, 0x6e, 0x80, 0x5f, 0x63, 0x77, 0x3f, 0x1d, 0x13, 0xac, 0x30, 0xa, - 0xf7, 0xd, 0xf8, 0x25, 0x26, 0xa, 0x5b, 0x1d, 0xf7, 0x8c, 0x34, 0xa, - 0x71, 0xa, 0x8f, 0x95, 0x28, 0x1d, 0x13, 0xac, 0x30, 0xa, 0xa1, 0xf8, - 0x25, 0x42, 0xa, 0xe, 0x5b, 0x1d, 0xe9, 0x8c, 0x1d, 0x76, 0xf7, 0xf, - 0x13, 0x6a, 0x28, 0xa, 0x13, 0x9a, 0x6e, 0x80, 0x5e, 0x63, 0x78, 0x3f, - 0x1d, 0x13, 0xa6, 0x30, 0xa, 0xa9, 0xf8, 0x3a, 0x50, 0xa, 0xa5, 0xa2, - 0x82, 0x81, 0xa1, 0x1f, 0x13, 0xaa, 0x7f, 0xa6, 0xa6, 0x7e, 0xa5, 0x3d, - 0x1d, 0x7b, 0x71, 0x98, 0x96, 0x6e, 0x1f, 0x95, 0x72, 0x70, 0x93, 0x72, - 0x54, 0x1d, 0x5b, 0x1d, 0xda, 0xf7, 0x1a, 0x74, 0xa, 0xa6, 0x8e, 0xa, - 0x13, 0x6f, 0x28, 0xa, 0x13, 0x9f, 0x6e, 0x80, 0x5f, 0x63, 0x77, 0x3f, - 0x1d, 0x13, 0xaf, 0x30, 0xa, 0xa6, 0xf8, 0x6d, 0x2e, 0xa, 0x3a, 0xa, - 0x58, 0x1d, 0xb0, 0x66, 0xb5, 0xc1, 0xbc, 0x5a, 0xf7, 0x39, 0xfb, 0x8, - 0xf7, 0x8, 0xfb, 0x8, 0xf7, 0x38, 0x5b, 0xbb, 0x74, 0xa, 0xf7, 0x3, - 0xf7, 0x37, 0xfb, 0x8, 0xf7, 0x8, 0xfb, 0x8, 0xf7, 0x3a, 0x59, 0xbd, - 0x13, 0x64, 0xe4, 0x28, 0xa, 0x13, 0x99, 0x64, 0x71, 0xa, 0x8f, 0x95, - 0x28, 0x1d, 0x30, 0xa, 0xf7, 0x3, 0xf8, 0x8f, 0x15, 0xc6, 0xba, 0xbb, - 0xc6, 0x1e, 0x13, 0xaa, 0xc8, 0xc6, 0xbb, 0x5b, 0x50, 0x50, 0x5b, 0x5c, - 0x50, 0x1f, 0x13, 0xa4, 0xe4, 0x50, 0x5c, 0xba, 0xc6, 0x1f, 0x13, 0xaa, - 0xd4, 0xba, 0x8c, 0x15, 0x6b, 0xa5, 0x71, 0xab, 0xab, 0xa5, 0xa5, 0xab, - 0xab, 0x71, 0xa5, 0x6b, 0x6b, 0x71, 0x71, 0x6b, 0x1e, 0xe, 0xc7, 0x7e, - 0xca, 0x4c, 0xd2, 0x5a, 0x76, 0xf7, 0xa, 0x77, 0xf7, 0x14, 0x77, 0xf7, - 0x75, 0xb3, 0x6d, 0xa9, 0x8e, 0x77, 0x12, 0x86, 0xf7, 0x12, 0xf8, 0x62, - 0xe5, 0x13, 0x9c, 0xc0, 0xf7, 0xac, 0xf7, 0x8, 0x15, 0x8d, 0x6, 0x5b, - 0x94, 0x9a, 0x3a, 0xf7, 0x10, 0x1b, 0xf7, 0x17, 0xc4, 0xf7, 0x19, 0x8d, - 0x8c, 0x1f, 0x6f, 0x9c, 0x5, 0x7a, 0x82, 0x60, 0x43, 0x44, 0x1b, 0x51, - 0x82, 0xc5, 0xa4, 0x9b, 0x8d, 0x9c, 0x8e, 0x9a, 0x1f, 0xb2, 0x94, 0x5, - 0xf7, 0x35, 0xb0, 0xce, 0xd4, 0xd2, 0x1a, 0xc8, 0x60, 0xa6, 0x53, 0x68, - 0x63, 0x83, 0x56, 0x61, 0x1e, 0x89, 0x8d, 0x9d, 0xc6, 0x5, 0x13, 0x39, - 0xc0, 0x28, 0x8e, 0x76, 0x4d, 0x5, 0x88, 0x6, 0xa5, 0x82, 0x7f, 0xaf, - 0x4d, 0x1b, 0xfb, 0x10, 0xfb, 0x28, 0xfb, 0x5e, 0xfb, 0x21, 0x26, 0xc9, - 0x6d, 0xbe, 0xea, 0xbe, 0xdf, 0xb7, 0xa5, 0x1f, 0xfb, 0x33, 0x8d, 0x15, - 0x13, 0x5c, 0xc0, 0xe9, 0xe0, 0xf7, 0x63, 0xd7, 0xb0, 0x99, 0x71, 0x66, - 0x5a, 0x49, 0xfb, 0x8d, 0x2b, 0x67, 0x7d, 0xa8, 0xaa, 0x1e, 0xf7, 0xb8, - 0xeb, 0x15, 0x90, 0x9c, 0x5, 0x13, 0x9a, 0xc0, 0xc1, 0x9b, 0xb5, 0xf7, - 0x24, 0xd5, 0x1b, 0xac, 0x8b, 0x6f, 0x7d, 0xfb, 0xd, 0xfb, 0x22, 0x57, - 0x6f, 0x1f, 0xe, 0xfb, 0x6e, 0xfb, 0x6e, 0xb4, 0xd8, 0xf7, 0x2b, 0xfb, - 0x2, 0x77, 0xe3, 0x76, 0xf7, 0xce, 0xf7, 0x34, 0x6a, 0xac, 0x12, 0x73, - 0xf7, 0x14, 0x13, 0xba, 0xf7, 0x3, 0x7f, 0x15, 0x54, 0x3b, 0x98, 0x7f, - 0x5, 0x13, 0xca, 0x7d, 0xa, 0x74, 0x7c, 0x6c, 0x6e, 0x79, 0x86, 0xa, - 0xa1, 0x79, 0xbf, 0x1b, 0xc0, 0xe7, 0x9e, 0xca, 0x1f, 0x13, 0xba, 0xc7, - 0x49, 0x9c, 0x73, 0x82, 0x83, 0x8a, 0x89, 0x82, 0x1e, 0xae, 0xbf, 0xe0, - 0x96, 0xcb, 0xcb, 0xb4, 0xc5, 0x19, 0x6f, 0x9d, 0x5, 0x13, 0xc6, 0x51, - 0x63, 0x53, 0x6b, 0x5e, 0x1b, 0x6e, 0x5f, 0xaa, 0xdb, 0xd2, 0xda, 0xf7, - 0x58, 0xe2, 0x94, 0x99, 0x87, 0x7e, 0x86, 0x88, 0x85, 0x87, 0x84, 0x1f, - 0x85, 0x81, 0x83, 0x7e, 0x7a, 0x1a, 0x13, 0xba, 0x84, 0x1d, 0x60, 0xb7, - 0x3c, 0xfb, 0x1e, 0xfb, 0x30, 0xfb, 0x2e, 0xfb, 0x2d, 0x23, 0xd3, 0x4c, - 0xca, 0x1e, 0xe, 0x2f, 0xa, 0xf7, 0x2a, 0xf7, 0xc2, 0x15, 0xb6, 0x6, - 0xfb, 0x1, 0x5f, 0x1d, 0x2f, 0xa, 0xbe, 0xf7, 0xc2, 0x15, 0xb8, 0x5a, - 0xa, 0x68, 0x1d, 0xf7, 0x78, 0x22, 0xa, 0x5b, 0xf7, 0xc2, 0x15, 0xc0, - 0x6, 0xf7, 0x17, 0xe8, 0xe4, 0x2e, 0x5, 0xbd, 0x6, 0x35, 0x4e, 0xa, - 0xe, 0x68, 0x1d, 0xc7, 0xf7, 0x19, 0x12, 0x90, 0xf7, 0x16, 0x69, 0xf7, - 0x19, 0xd3, 0xe7, 0x2f, 0xf7, 0x1d, 0x13, 0xf4, 0x20, 0xa, 0x13, 0xea, - 0x5c, 0xf8, 0xa, 0x15, 0x67, 0xa, 0xf7, 0x65, 0x16, 0x67, 0xa, 0xe, - 0x66, 0x1d, 0xf9, 0x56, 0x3c, 0x1d, 0x74, 0xf8, 0x19, 0x7b, 0xa, 0xfb, - 0x4, 0x5f, 0x1d, 0x66, 0x1d, 0xf9, 0x56, 0x6c, 0x1d, 0x52, 0x55, 0x8f, - 0xa, 0x90, 0x94, 0x24, 0xa, 0xfb, 0x12, 0xf8, 0x19, 0x26, 0xa, 0x66, - 0x1d, 0xf9, 0x4f, 0x6c, 0x1d, 0x54, 0x55, 0x73, 0x1b, 0x84, 0x32, 0xa, - 0xfb, 0x84, 0xf8, 0x19, 0x15, 0xc4, 0x6, 0xf7, 0x16, 0xe8, 0xe4, 0x2e, - 0x5, 0xbe, 0x6, 0x34, 0x4e, 0xa, 0xe, 0x66, 0x1d, 0xf8, 0xa6, 0xf7, - 0x1a, 0x1, 0x9c, 0xf7, 0x1a, 0xd6, 0xf7, 0x1a, 0x3, 0xf7, 0x6c, 0xf7, - 0x21, 0x15, 0x71, 0x88, 0x51, 0x56, 0x74, 0x1b, 0x85, 0x88, 0x90, 0x94, - 0x24, 0xa, 0xfb, 0x71, 0xf8, 0x61, 0x2e, 0xa, 0xf7, 0x65, 0x2d, 0x1d, - 0x7e, 0xa8, 0xf8, 0x35, 0x6e, 0xa, 0xf7, 0x2e, 0x90, 0xa, 0xf7, 0x6b, - 0x7b, 0x1d, 0x7d, 0x59, 0x40, 0x51, 0xfb, 0xaa, 0x2b, 0x57, 0x8b, 0xf7, - 0xa, 0x9f, 0x1e, 0xf7, 0x77, 0xf7, 0x9e, 0x15, 0xa9, 0x7a, 0x6f, 0x97, - 0x73, 0x1b, 0xfb, 0x28, 0xfb, 0x15, 0xfb, 0x2e, 0xfb, 0x2e, 0x2b, 0xd9, - 0x44, 0xdd, 0xf7, 0x2f, 0xf7, 0x15, 0xf7, 0x45, 0xf7, 0x6c, 0xe0, 0x66, - 0xdd, 0x52, 0xc8, 0x1f, 0xf6, 0xc3, 0x69, 0xab, 0x20, 0x52, 0x64, 0xab, - 0x5d, 0xa1, 0x5c, 0x91, 0x19, 0x5f, 0x70, 0xb1, 0x85, 0xb5, 0x73, 0xaf, - 0x68, 0x19, 0xfb, 0xe, 0x4b, 0xac, 0x6c, 0xf7, 0xb, 0xc9, 0x5, 0xae, - 0x5f, 0xa6, 0x56, 0x56, 0x1a, 0xe, 0x21, 0x97, 0x76, 0xa9, 0x76, 0xf8, - 0x62, 0x77, 0xf7, 0x1e, 0xd6, 0x12, 0x13, 0x70, 0x78, 0xa, 0x98, 0x97, - 0x81, 0x7f, 0x1f, 0x75, 0x33, 0xfb, 0x6f, 0x44, 0x1a, 0x13, 0xb0, 0x76, - 0x1d, 0x68, 0x80, 0x60, 0x63, 0x77, 0x88, 0x1d, 0x91, 0x96, 0x1f, 0xa8, - 0xe2, 0xf7, 0x68, 0xcc, 0x4f, 0xa, 0x13, 0x70, 0x88, 0xa, 0xf7, 0x2b, - 0xf8, 0xad, 0x50, 0xa, 0xa9, 0xa1, 0x81, 0x81, 0xa1, 0x1f, 0x7f, 0xa4, - 0xa3, 0x7f, 0xa7, 0x3d, 0x1d, 0x7c, 0x74, 0x95, 0x96, 0x70, 0x1f, 0x95, - 0x71, 0x6d, 0x96, 0x70, 0x54, 0x1d, 0x7e, 0xa8, 0xf8, 0x33, 0xa8, 0xf7, - 0x81, 0x37, 0xa, 0xf7, 0xdd, 0xf8, 0xe, 0x2a, 0x1d, 0x7e, 0xa8, 0xf8, - 0x33, 0x6e, 0xa, 0xe3, 0x90, 0xa, 0xf7, 0xab, 0x7b, 0x1d, 0x7f, 0x59, - 0x40, 0x51, 0xfb, 0xaa, 0x36, 0xa, 0xf7, 0x40, 0xf7, 0x29, 0xf7, 0x1a, - 0xfb, 0xb, 0x9d, 0x4b, 0x1d, 0xf7, 0x76, 0xf8, 0xe, 0x26, 0xa, 0x8f, - 0x1d, 0xf7, 0x7a, 0x37, 0xa, 0xf7, 0x13, 0xf8, 0xe, 0x42, 0xa, 0xe, - 0x8f, 0x1d, 0xd7, 0x8c, 0x1d, 0x4e, 0x1d, 0x13, 0xdc, 0x23, 0xa, 0xf7, - 0x1b, 0xf8, 0x23, 0x50, 0xa, 0xa9, 0xa0, 0x81, 0x80, 0xa0, 0x1f, 0x13, - 0xec, 0x80, 0xa2, 0xa2, 0x7f, 0xac, 0x3d, 0x1d, 0x7c, 0x74, 0x95, 0x96, - 0x71, 0x1f, 0x95, 0x70, 0x6d, 0x96, 0x70, 0x54, 0x1d, 0x8f, 0x1d, 0xc8, - 0xf7, 0x1a, 0x12, 0x88, 0xf7, 0xb, 0x93, 0xf7, 0x1a, 0xcb, 0xf7, 0xb, - 0xfb, 0x1, 0xf7, 0x1a, 0x13, 0xfc, 0x23, 0xa, 0xf7, 0x13, 0xf8, 0x56, - 0x2e, 0xa, 0x13, 0xfa, 0x3a, 0xa, 0x2f, 0x6e, 0xef, 0x27, 0xf7, 0x28, - 0xe7, 0xe1, 0x36, 0xd0, 0xf5, 0xf7, 0x28, 0x27, 0xef, 0x12, 0xf7, 0x67, - 0xf7, 0x28, 0xfb, 0xc, 0xef, 0x13, 0x5a, 0xac, 0xf7, 0x68, 0x15, 0xf8, - 0x8c, 0xd0, 0xfc, 0x8c, 0x6, 0x13, 0xa5, 0xf7, 0x62, 0xfb, 0x98, 0x15, - 0x66, 0xa, 0xf8, 0x64, 0x4, 0x66, 0xa, 0xe, 0x29, 0x76, 0xf5, 0xa8, - 0xcd, 0x77, 0xf8, 0x8, 0xa8, 0xec, 0x5c, 0x1d, 0xe1, 0x90, 0xa, 0xf7, - 0xb0, 0xf7, 0x0, 0x98, 0x96, 0x86, 0x81, 0x94, 0x1e, 0xfb, 0x51, 0xfb, - 0xe5, 0x6f, 0xa, 0x61, 0x40, 0x15, 0x43, 0xfb, 0x12, 0x5, 0xb3, 0x6, - 0xcb, 0xf7, 0x6, 0x5, 0x86, 0x9b, 0x9d, 0x88, 0x9c, 0x1b, 0xf7, 0x34, - 0xf7, 0x10, 0xf7, 0x40, 0xf7, 0x29, 0xda, 0x62, 0xb2, 0x62, 0x9d, 0x1f, - 0xcc, 0xf7, 0x8, 0x5, 0x66, 0x6, 0x50, 0x23, 0x5, 0x90, 0x79, 0x71, - 0x8d, 0x81, 0x1b, 0xfb, 0x32, 0xfb, 0xb, 0xfb, 0x41, 0xfb, 0x2e, 0x4d, - 0xab, 0x5f, 0xb8, 0x74, 0x1f, 0xc1, 0xa6, 0x15, 0xf7, 0x55, 0xf7, 0xeb, - 0x5, 0x8c, 0x8a, 0x8b, 0x87, 0x88, 0x1a, 0x40, 0x51, 0xfb, 0xaa, 0x2b, - 0x77, 0x7f, 0x92, 0x96, 0x83, 0x1e, 0xe, 0x64, 0xa, 0xf7, 0xa0, 0x77, - 0x1, 0x2c, 0x1d, 0x54, 0x4e, 0x8f, 0xa, 0x91, 0x97, 0x31, 0xa, 0x79, - 0x86, 0x97, 0x9a, 0x9e, 0x94, 0xa4, 0x2d, 0xa, 0xcf, 0xf7, 0xfd, 0x2a, - 0x1d, 0x64, 0xa, 0xf7, 0xa0, 0x77, 0x1, 0x29, 0xa, 0x96, 0x9b, 0x9e, - 0x94, 0xa4, 0x2d, 0xa, 0x68, 0xf7, 0xfd, 0x26, 0xa, 0x64, 0xa, 0xf7, - 0x99, 0x77, 0x1, 0x29, 0xa, 0x95, 0x9a, 0x9e, 0x94, 0xa6, 0x2d, 0xa, - 0xfb, 0x1a, 0xf7, 0xfd, 0x42, 0xa, 0xe, 0x64, 0xa, 0xe7, 0xf7, 0x1a, - 0x1, 0xf7, 0x2c, 0x8e, 0xa, 0x3, 0x29, 0xa, 0x96, 0x9a, 0x9e, 0x94, - 0xa5, 0x2d, 0xa, 0xfb, 0x1a, 0xf8, 0x45, 0x2e, 0xa, 0x3a, 0xa, 0x79, - 0x1d, 0xf7, 0x93, 0x77, 0x1, 0x35, 0x1d, 0x55, 0x4b, 0x4a, 0x70, 0x7b, - 0x7e, 0x93, 0x93, 0x7e, 0x1e, 0x94, 0x7c, 0x7c, 0x95, 0x77, 0x38, 0x1d, - 0x6f, 0x96, 0x7e, 0x97, 0x82, 0x1e, 0x9a, 0x7f, 0x9c, 0x85, 0x72, 0x7a, - 0xa, 0x5b, 0xf8, 0x27, 0x26, 0xa, 0x87, 0x1d, 0xf7, 0x81, 0x77, 0x59, - 0x1d, 0x74, 0x6b, 0x43, 0x44, 0xfb, 0x86, 0x4f, 0x1d, 0x5a, 0x1f, 0x88, - 0x8e, 0xea, 0xf7, 0xe8, 0x44, 0x77, 0x1d, 0x1a, 0x7e, 0xfb, 0xe, 0xfc, - 0x5e, 0x4c, 0xfb, 0x88, 0x1e, 0x4d, 0x7b, 0x75, 0x87, 0xa, 0x77, 0xa9, - 0xab, 0xa1, 0x9e, 0xc7, 0x93, 0xac, 0x1f, 0xe, 0xfb, 0x6e, 0xfb, 0x61, - 0xf7, 0x7, 0xf7, 0x65, 0x77, 0xf7, 0xff, 0x77, 0xda, 0xf7, 0x1a, 0x12, - 0xeb, 0x8e, 0xa, 0xfb, 0x2, 0xcb, 0x13, 0xfa, 0x45, 0xa, 0x94, 0x94, - 0x7d, 0x1e, 0x94, 0x7d, 0x7e, 0x93, 0x78, 0x38, 0x1d, 0x6c, 0x98, 0x7e, - 0x98, 0x82, 0x1e, 0x99, 0x81, 0x9a, 0x84, 0x74, 0x7a, 0xa, 0xfb, 0x27, - 0xf8, 0x6f, 0x2e, 0xa, 0x13, 0xfc, 0x3a, 0xa, 0x66, 0x1d, 0xf8, 0x6b, - 0x3c, 0x1d, 0xe, 0x53, 0x1d, 0x56, 0x7d, 0x96, 0x9c, 0x94, 0x8e, 0x97, - 0x8f, 0x98, 0x1f, 0xbd, 0xf7, 0x4d, 0xf7, 0x28, 0xde, 0xa0, 0xd1, 0xfb, - 0x2a, 0x3a, 0xc7, 0xf7, 0x67, 0x9c, 0xc7, 0xa7, 0x94, 0xc3, 0x8e, 0x82, - 0xa, 0xba, 0x84, 0xa3, 0x79, 0x74, 0x1a, 0x83, 0x8b, 0x83, 0x89, 0x83, - 0x1e, 0x3e, 0xfb, 0xa8, 0x27, 0x56, 0x75, 0x45, 0xf3, 0xc3, 0x69, 0xfb, - 0xe, 0x7b, 0x52, 0x76, 0x8c, 0x60, 0x85, 0x19, 0xe, 0x66, 0x1d, 0xf9, - 0x58, 0x77, 0x1, 0xf7, 0x66, 0xf7, 0x21, 0x15, 0x71, 0x88, 0x52, 0x56, - 0x8f, 0xa, 0x90, 0x94, 0x9f, 0x9b, 0xc5, 0x91, 0xa1, 0x1f, 0xc4, 0xf7, - 0x61, 0xe1, 0xba, 0x9e, 0xcf, 0x35, 0x5c, 0xd0, 0xf7, 0x8e, 0x7f, 0xa, - 0x8d, 0xac, 0x8b, 0x6c, 0x1a, 0x76, 0x6f, 0x28, 0x71, 0x2f, 0x1e, 0x3d, - 0x60, 0x78, 0x45, 0xd8, 0xb6, 0x5, 0x65, 0xfb, 0x1d, 0x6d, 0xfb, 0x1, - 0x70, 0x1a, 0x7d, 0x85, 0x56, 0xcf, 0xdb, 0xbd, 0xd0, 0xce, 0xb7, 0x1e, - 0xe, 0xf7, 0xae, 0x83, 0xab, 0x73, 0xab, 0xf7, 0xc4, 0xad, 0xf7, 0x9f, - 0xab, 0x73, 0xab, 0x12, 0xa2, 0xf7, 0x21, 0x13, 0xb4, 0xf8, 0xe1, 0xf7, - 0xe4, 0x15, 0xde, 0x8a, 0xba, 0x80, 0x48, 0x1a, 0x83, 0x88, 0x6b, 0x8a, - 0x7d, 0x1e, 0xa6, 0x86, 0xd3, 0xf7, 0xa4, 0x70, 0x8e, 0x72, 0x54, 0x71, - 0x5a, 0xfb, 0x1e, 0x8c, 0x19, 0xc8, 0xf7, 0x70, 0x5, 0xac, 0x94, 0x8f, - 0x99, 0xb0, 0x1b, 0xf7, 0x44, 0x81, 0x30, 0x4d, 0x1f, 0xa4, 0x85, 0xb9, - 0xf7, 0x53, 0x5, 0xfb, 0xe3, 0x6, 0x78, 0x6d, 0x8d, 0x8d, 0x71, 0x1f, - 0x13, 0xac, 0x8d, 0x70, 0x73, 0x8d, 0x82, 0x1b, 0xfb, 0x24, 0xfb, 0xc9, - 0xfb, 0x6, 0xfb, 0xe0, 0xfb, 0xc, 0xeb, 0xfb, 0xb, 0xf7, 0x3c, 0x1f, - 0xf7, 0x35, 0x92, 0x5, 0x13, 0x74, 0xd5, 0x8c, 0x5, 0xf7, 0xbc, 0x6, - 0xc7, 0xf7, 0x56, 0x70, 0x90, 0x5, 0x46, 0x67, 0x40, 0x29, 0xfb, 0x14, - 0x1b, 0x4c, 0x70, 0x8e, 0xa9, 0x92, 0x8c, 0x94, 0x8d, 0x95, 0x1f, 0xfb, - 0x19, 0xab, 0x15, 0x13, 0xac, 0x4e, 0x7a, 0x73, 0x65, 0x4b, 0x1b, 0xfb, - 0x4, 0x80, 0xf2, 0xab, 0xf7, 0xe, 0xdf, 0xf7, 0xff, 0xf7, 0x50, 0x8c, - 0x1f, 0x9e, 0xc4, 0x8b, 0x4b, 0x74, 0x81, 0x67, 0x89, 0x83, 0x1f, 0xe, - 0xc7, 0x7e, 0xa8, 0x6e, 0xca, 0xf8, 0x13, 0xa8, 0x12, 0x91, 0xf7, 0x9, - 0x13, 0x70, 0xf8, 0x39, 0xf7, 0x6e, 0x15, 0xf7, 0x6a, 0xd2, 0xaf, 0x8b, - 0xa3, 0x1b, 0x9e, 0x9a, 0x7c, 0x70, 0x89, 0x8b, 0xfb, 0x17, 0xfb, 0x39, - 0x64, 0x1f, 0x20, 0xfb, 0x42, 0x15, 0x5c, 0xb3, 0xb8, 0x81, 0xa7, 0x1b, - 0xe6, 0xc5, 0xbd, 0xe2, 0xb6, 0x1f, 0x6f, 0x9a, 0x5, 0x58, 0x6a, 0x70, - 0x65, 0x4f, 0x1b, 0x60, 0x75, 0xb8, 0xbc, 0x98, 0x8e, 0x99, 0x90, 0x98, - 0x1f, 0xf1, 0xa2, 0xf7, 0x32, 0xb3, 0xf7, 0xd, 0x1a, 0xd5, 0x50, 0x9f, - 0x54, 0x49, 0x60, 0x69, 0x6f, 0x68, 0x1e, 0xa4, 0x7a, 0x70, 0xb0, 0x42, - 0x1b, 0xfb, 0x49, 0xfb, 0x4, 0xfb, 0x5c, 0x22, 0xfb, 0x39, 0xf7, 0x19, - 0x86, 0xa5, 0xaf, 0xd0, 0x96, 0xb9, 0xb7, 0x1f, 0xfb, 0x53, 0xc7, 0x15, - 0xea, 0xca, 0xf7, 0x1e, 0x8a, 0x87, 0x1e, 0xb9, 0x9f, 0xa6, 0xc1, 0xbb, - 0x1b, 0xc3, 0x8c, 0x56, 0x76, 0x1f, 0x13, 0xb0, 0x56, 0x51, 0xfb, 0xb6, - 0x28, 0x5d, 0x80, 0xb1, 0xbd, 0x1e, 0xe, 0x21, 0x79, 0xad, 0xf9, 0xe, - 0xae, 0x87, 0x77, 0xf7, 0x80, 0x85, 0x1d, 0x13, 0xdc, 0x8d, 0x79, 0x15, - 0xa9, 0x6, 0xa2, 0x95, 0x90, 0x97, 0xa4, 0x1b, 0x9c, 0xa3, 0x7e, 0x81, - 0xad, 0x1f, 0x84, 0xa1, 0xa6, 0x86, 0xa9, 0x1b, 0xf7, 0x2f, 0xe2, 0xdb, - 0xf7, 0x18, 0xd9, 0x4d, 0xc8, 0x4d, 0xc2, 0x1f, 0x4e, 0xc2, 0x4f, 0xbb, - 0xbf, 0x1a, 0x96, 0x83, 0xeb, 0xf1, 0xf7, 0x6, 0xa1, 0xfb, 0x2, 0x53, - 0x91, 0x1e, 0xa6, 0x87, 0x5, 0x13, 0xbc, 0xb3, 0xf7, 0x5d, 0x5, 0x6d, - 0x6, 0x71, 0x7f, 0x6f, 0x8b, 0x87, 0x1b, 0x7b, 0x76, 0x93, 0x93, 0x73, - 0x1f, 0x13, 0xdc, 0x92, 0x75, 0x72, 0x92, 0x70, 0x1b, 0xfb, 0x1a, 0x3a, - 0x2b, 0x26, 0x3e, 0xc2, 0x57, 0xc5, 0x5b, 0x1f, 0xcb, 0x56, 0xcf, 0x5b, - 0x47, 0x1a, 0x77, 0x82, 0x21, 0xfb, 0x4, 0x61, 0xfb, 0x8, 0x9b, 0xf7, - 0x40, 0x8a, 0x1e, 0x6e, 0x8d, 0x5, 0xf7, 0x94, 0xf8, 0x99, 0x15, 0xdd, - 0x6, 0xf7, 0x2a, 0xf7, 0x42, 0x5, 0x53, 0x6, 0xfb, 0xf, 0x78, 0x1d, - 0xfb, 0xa5, 0x93, 0x76, 0xf8, 0x4e, 0xac, 0x8a, 0x77, 0xf7, 0x8d, 0x77, - 0x12, 0xf7, 0x40, 0xf6, 0x13, 0xd8, 0x85, 0xa, 0x98, 0x96, 0x85, 0x85, - 0x9a, 0x1f, 0x87, 0x97, 0x99, 0x87, 0x9e, 0x1b, 0xcb, 0xe9, 0xb0, 0xec, - 0xba, 0x6e, 0xb7, 0x6c, 0xb3, 0x1f, 0x66, 0xba, 0x63, 0xb5, 0xad, 0x1a, - 0x90, 0x85, 0xbc, 0xc0, 0xc6, 0xa6, 0x46, 0x59, 0x93, 0x1e, 0xa6, 0x89, - 0x5, 0x13, 0xb8, 0x79, 0xa, 0x7a, 0x82, 0x90, 0x91, 0x7f, 0x1f, 0x13, - 0xd8, 0x90, 0x80, 0x7d, 0x91, 0x73, 0x1b, 0x4a, 0x3e, 0x67, 0x32, 0x4e, - 0xaa, 0x65, 0xbc, 0x4c, 0x1f, 0xa4, 0x6b, 0x9f, 0x5e, 0x69, 0x1a, 0x70, - 0x7d, 0x77, 0x66, 0x82, 0x48, 0x7c, 0xa, 0xf7, 0x6a, 0xf8, 0xa5, 0x60, - 0x1d, 0x58, 0x8b, 0xa4, 0xf8, 0xff, 0xa4, 0xc5, 0xf7, 0x1b, 0x1, 0xf7, - 0x74, 0xf7, 0x1b, 0xd8, 0xf7, 0x1b, 0x3, 0xd4, 0x16, 0xf7, 0xd6, 0xa4, - 0x6, 0x64, 0x67, 0x95, 0xac, 0x93, 0x8d, 0x95, 0x8f, 0x96, 0x1f, 0xbf, - 0xf7, 0x67, 0xf7, 0x52, 0xf7, 0x9f, 0x90, 0x1d, 0xb6, 0x93, 0x19, 0xa4, - 0xfb, 0x64, 0x72, 0x7, 0xbc, 0x89, 0x9f, 0x7c, 0x74, 0x1a, 0x79, 0x80, - 0x74, 0x7a, 0x72, 0x1e, 0xfb, 0x15, 0xfb, 0x4e, 0x5, 0x4b, 0xf7, 0x5c, - 0x7e, 0x96, 0xa7, 0x1a, 0xa2, 0x97, 0xa9, 0xc5, 0x1e, 0xa4, 0xfb, 0xaf, - 0x72, 0x7, 0xbb, 0x84, 0x92, 0x94, 0x9d, 0x54, 0xe3, 0xfb, 0xaa, 0x18, - 0x4f, 0xfb, 0x6c, 0x79, 0x4b, 0x72, 0x88, 0x51, 0x86, 0x19, 0xf7, 0x2b, - 0xf9, 0x95, 0x46, 0x1d, 0x58, 0x58, 0xa, 0xf7, 0x78, 0x77, 0x3e, 0xa, - 0xf7, 0xd1, 0xf9, 0x40, 0x60, 0xa, 0xfb, 0xa5, 0x52, 0x76, 0xf8, 0x43, - 0xeb, 0xf7, 0x85, 0x77, 0x1, 0x72, 0x75, 0x15, 0xa7, 0xb1, 0x92, 0x8a, - 0x9a, 0x1b, 0xa5, 0xa4, 0x78, 0x78, 0xa8, 0x1f, 0x75, 0xac, 0xb2, 0x74, - 0xbf, 0x76, 0xa, 0x7e, 0x8f, 0x82, 0x8f, 0x85, 0x1f, 0x90, 0x83, 0x92, - 0x86, 0x83, 0x1a, 0x84, 0x83, 0x83, 0x7e, 0x71, 0x81, 0xa2, 0xa8, 0x7c, - 0x1e, 0x7a, 0xad, 0x73, 0xb5, 0x4c, 0xa4, 0x80, 0xa, 0xfb, 0x2e, 0x70, - 0x1d, 0xfb, 0xf6, 0x5, 0xf7, 0x73, 0xf8, 0x99, 0x60, 0xa, 0xfb, 0x30, - 0xf7, 0x27, 0xf8, 0x29, 0xb7, 0xf7, 0xb, 0xf7, 0x28, 0x6d, 0xa9, 0x12, - 0xf8, 0x3c, 0xf7, 0x5, 0x13, 0xd8, 0xd9, 0xf8, 0x20, 0x15, 0xf4, 0x6, - 0x3f, 0xfc, 0x22, 0x8f, 0x3d, 0x55, 0x69, 0x8, 0x85, 0x82, 0x77, 0x85, - 0x7c, 0x1b, 0x81, 0x83, 0x8f, 0x94, 0x91, 0x94, 0x93, 0x93, 0x96, 0x1f, - 0x91, 0x93, 0x90, 0x95, 0x96, 0x1a, 0x9c, 0x7e, 0xac, 0x64, 0x5c, 0x80, - 0x62, 0x7d, 0x48, 0xc0, 0x72, 0xc3, 0xf7, 0x7, 0xef, 0xe5, 0xf7, 0xc8, - 0xc1, 0x1e, 0xa6, 0xf7, 0x2e, 0x5, 0xf7, 0x8, 0x6, 0x94, 0xb7, 0x5, - 0xfb, 0xa, 0x6, 0xf7, 0x1f, 0xa2, 0x9b, 0xed, 0xcc, 0x1b, 0x97, 0x97, - 0x86, 0x81, 0x86, 0x86, 0x86, 0x85, 0x86, 0x1f, 0x83, 0x83, 0x81, 0x81, - 0x77, 0x1a, 0x13, 0xe8, 0x66, 0xaa, 0x7e, 0x9d, 0xcb, 0x8b, 0xc0, 0x95, - 0xba, 0x5c, 0xb1, 0x4f, 0xfb, 0x41, 0x64, 0xfb, 0x54, 0x40, 0x72, 0x1e, - 0x20, 0x6, 0xe, 0x7f, 0x1d, 0xf7, 0x42, 0x77, 0x1, 0xb3, 0xf8, 0x98, - 0x5b, 0xa, 0xe6, 0xe3, 0x30, 0x7e, 0x1d, 0x7f, 0x1d, 0xf7, 0x42, 0x77, - 0x1, 0xf7, 0x3b, 0xf8, 0x98, 0x60, 0x1d, 0xfb, 0xdd, 0xf8, 0x98, 0xd3, - 0x43, 0xf7, 0x36, 0x1, 0xd3, 0xf9, 0x3a, 0x15, 0xb6, 0x6, 0x57, 0x90, - 0xaa, 0x65, 0xd3, 0x1b, 0xe5, 0x9e, 0xc3, 0xad, 0x9b, 0x1f, 0xb2, 0x6, - 0x85, 0x80, 0xfb, 0x30, 0xfb, 0x37, 0xfb, 0x1f, 0x89, 0xf7, 0xa, 0xb7, - 0x1e, 0xe, 0xfb, 0xdd, 0xf8, 0xa1, 0xf7, 0x16, 0x1, 0xf7, 0x57, 0xf7, - 0x16, 0x3, 0xf7, 0x37, 0xf8, 0xe2, 0x15, 0x4b, 0xa, 0xe, 0xfb, 0xdd, - 0xf8, 0x9d, 0xbc, 0xf7, 0xb, 0xbb, 0x1, 0xf7, 0x6, 0xbb, 0xf7, 0x15, - 0xbc, 0x3, 0xf7, 0x13, 0xf9, 0x3, 0x15, 0x4f, 0xbb, 0x5c, 0xc6, 0xc5, - 0xbb, 0xbb, 0xc6, 0xc5, 0x5b, 0xbb, 0x51, 0x50, 0x5b, 0x5c, 0x5e, 0xa, - 0xe, 0xfb, 0xdd, 0xfb, 0x41, 0xd0, 0xf7, 0x28, 0x77, 0x1, 0x63, 0xdf, - 0x3, 0xa7, 0xb7, 0x15, 0x63, 0x5f, 0x6f, 0x5e, 0x5e, 0x1a, 0x46, 0xd2, - 0x7d, 0xb3, 0xad, 0xc9, 0xa6, 0xbb, 0xa1, 0x1e, 0x71, 0x99, 0x5, 0x81, - 0x79, 0x7e, 0x81, 0x74, 0x1b, 0x63, 0x72, 0x9d, 0xba, 0xa4, 0x98, 0xb2, - 0x8f, 0x9e, 0x1f, 0xe, 0xfb, 0xdd, 0xf8, 0xb2, 0xf6, 0x30, 0x76, 0xa6, - 0x76, 0xb0, 0xd6, 0x41, 0xcf, 0x12, 0x13, 0x30, 0x87, 0xf8, 0xb3, 0x15, - 0xaf, 0x6, 0x13, 0x48, 0x9c, 0x92, 0x93, 0xa0, 0xa9, 0x1b, 0xa5, 0xa1, - 0x82, 0x81, 0x9f, 0x1f, 0x13, 0x80, 0x81, 0xa0, 0xa0, 0x81, 0xa5, 0x1b, - 0xd9, 0x9f, 0xd6, 0xab, 0x93, 0x1f, 0x66, 0x6, 0x7a, 0x83, 0x82, 0x76, - 0x6c, 0x1b, 0x7e, 0x74, 0x95, 0x95, 0x72, 0x1f, 0x94, 0x74, 0x72, 0x94, - 0x73, 0x1b, 0x13, 0x30, 0x33, 0x7a, 0x23, 0x89, 0x1f, 0xe, 0xfb, 0xdd, - 0xf8, 0x98, 0xf7, 0x49, 0x1, 0xd0, 0xf8, 0x98, 0x15, 0xbb, 0x6, 0xf7, - 0x2d, 0x21, 0x1d, 0xd0, 0xfb, 0x17, 0x15, 0xba, 0x5a, 0xa, 0xf7, 0x46, - 0xc7, 0x4f, 0xe6, 0x1, 0x80, 0xf7, 0x46, 0x15, 0xf8, 0x55, 0xc7, 0xfc, - 0x55, 0x6, 0xe, 0xf7, 0xe6, 0xf7, 0x46, 0xc8, 0x4e, 0xe6, 0x1, 0xf7, - 0x46, 0x4, 0xfa, 0x53, 0xc8, 0xfe, 0x53, 0x6, 0xe, 0xfb, 0xdd, 0x69, - 0x1d, 0xf7, 0x14, 0xe1, 0x35, 0xf7, 0x30, 0x13, 0xe0, 0xf7, 0xe0, 0xf9, - 0x29, 0x15, 0x5c, 0xa, 0xc6, 0x7b, 0xa6, 0x1e, 0x13, 0xd0, 0xb4, 0xa8, - 0xab, 0xb5, 0xa9, 0x7c, 0x9a, 0x7a, 0x97, 0x1f, 0x13, 0xe0, 0x79, 0x98, - 0x77, 0x94, 0xa1, 0x7a, 0x1d, 0xe, 0xfb, 0xdd, 0x69, 0x1d, 0xf7, 0x26, - 0x6d, 0x1d, 0x13, 0xd0, 0xf7, 0x3, 0xf8, 0x5, 0x15, 0x49, 0xa, 0x13, - 0xe0, 0x62, 0x6e, 0x6b, 0x61, 0x6b, 0x9c, 0x7d, 0x9c, 0x7f, 0x1f, 0x13, - 0xd0, 0x9d, 0x7f, 0x9d, 0x81, 0x89, 0xa, 0xe, 0xfb, 0xdd, 0xfb, 0x35, - 0x62, 0xa, 0xb6, 0x6d, 0x1d, 0x13, 0xd0, 0x86, 0xfb, 0x32, 0x15, 0x98, - 0x73, 0x5, 0x49, 0xa, 0x13, 0xe0, 0x62, 0x6e, 0x6b, 0x61, 0x6f, 0x98, - 0x7c, 0x9a, 0x80, 0x1f, 0x13, 0xd0, 0x9e, 0x7c, 0xa2, 0x83, 0x73, 0x54, - 0xa, 0xe, 0x69, 0x1d, 0xc0, 0xe1, 0x35, 0xf7, 0x30, 0xef, 0xe1, 0x35, - 0xf7, 0x30, 0x13, 0xd8, 0xf7, 0x95, 0xf9, 0x29, 0x15, 0x63, 0xa, 0xab, - 0x79, 0x9a, 0x7a, 0x97, 0x1e, 0x13, 0xe4, 0x79, 0x97, 0x7a, 0x94, 0xa0, - 0x7a, 0x1d, 0xf7, 0x94, 0x16, 0x63, 0xa, 0xa8, 0x7c, 0x9a, 0x7b, 0x97, - 0x1e, 0x13, 0xe8, 0x78, 0x99, 0x77, 0x93, 0xa2, 0x7a, 0x1d, 0xe, 0x69, - 0x1d, 0xf0, 0x6d, 0x1d, 0xef, 0x6d, 0x1d, 0x13, 0xe4, 0xf7, 0xd6, 0xf8, - 0x5, 0x15, 0x40, 0xa, 0x6d, 0x61, 0x6c, 0x9c, 0x7b, 0x9c, 0x7f, 0x1f, - 0x13, 0xd4, 0x9d, 0x7e, 0x9d, 0x81, 0x89, 0xa, 0xfb, 0x87, 0x73, 0x15, - 0x40, 0xa, 0x6d, 0x61, 0x6d, 0x9a, 0x7c, 0x9b, 0x7f, 0x1f, 0x13, 0xd8, - 0x9e, 0x7d, 0x9f, 0x81, 0x75, 0x54, 0xa, 0xe, 0xfb, 0x35, 0x62, 0xa, - 0x82, 0x6d, 0x1d, 0xef, 0x6d, 0x1d, 0x13, 0xe4, 0xf7, 0x5b, 0xfb, 0x32, - 0x15, 0x98, 0x73, 0x5, 0x40, 0xa, 0x6c, 0x61, 0x6a, 0x9d, 0x7c, 0x9d, - 0x7f, 0x1f, 0x13, 0xd4, 0x9c, 0x7f, 0x9c, 0x82, 0x89, 0xa, 0xfb, 0x94, - 0x16, 0x98, 0x73, 0x5, 0x40, 0xa, 0x6c, 0x61, 0x6c, 0x9b, 0x7c, 0x9c, - 0x7f, 0x1f, 0x13, 0xd8, 0x9d, 0x7e, 0x9e, 0x82, 0x75, 0x54, 0xa, 0xe, - 0xfb, 0x10, 0x76, 0xf8, 0xb7, 0xf3, 0x4c, 0xa3, 0xf7, 0x6e, 0x77, 0x12, - 0x13, 0xb0, 0xf7, 0x30, 0xfb, 0x25, 0x15, 0xa2, 0x6, 0xb1, 0xf7, 0x1e, - 0xb0, 0xf7, 0x4d, 0xd0, 0xe6, 0x8, 0x81, 0x99, 0x7b, 0xce, 0xbe, 0x1a, - 0x9b, 0x8d, 0x9a, 0x8f, 0x96, 0x1e, 0xa9, 0x8d, 0xa1, 0x84, 0x9d, 0x82, - 0x8, 0x13, 0xd0, 0x7f, 0xa2, 0x9d, 0x7c, 0xa2, 0x1b, 0x95, 0xba, 0x90, - 0xba, 0x90, 0x8b, 0xba, 0x54, 0x73, 0x7a, 0x7e, 0x80, 0x73, 0x1f, 0x13, - 0xb0, 0x83, 0x7a, 0x77, 0x84, 0x6e, 0x1b, 0x8f, 0x9d, 0x91, 0xac, 0x9e, - 0xa2, 0x8, 0xa6, 0xad, 0x9f, 0xa5, 0xa9, 0x1a, 0x9d, 0x80, 0xaf, 0x5d, - 0x69, 0x76, 0x73, 0x68, 0x6c, 0x96, 0x6f, 0x91, 0x71, 0x1e, 0x90, 0x72, - 0x8a, 0x73, 0x80, 0x72, 0x6a, 0x8a, 0x75, 0x94, 0x78, 0x94, 0x8, 0x13, - 0xd0, 0x96, 0x76, 0x79, 0x96, 0x70, 0x1b, 0x81, 0x62, 0x89, 0x57, 0x72, - 0x9e, 0x74, 0xaa, 0xab, 0x9c, 0x97, 0x96, 0x9f, 0x1f, 0x13, 0xb0, 0x9c, - 0x94, 0x9f, 0x93, 0xaa, 0x8a, 0x88, 0x67, 0x6c, 0x38, 0x56, 0x5f, 0x95, - 0xfb, 0xa, 0x18, 0xe, 0xfb, 0x57, 0x76, 0xf7, 0x57, 0xf4, 0xf7, 0xb9, - 0xf4, 0xf7, 0x57, 0x77, 0x1, 0xd9, 0xf7, 0x12, 0xaf, 0x9f, 0xaf, 0xf7, - 0x12, 0x14, 0xe, 0xf7, 0x4a, 0xa1, 0x15, 0x73, 0x40, 0x3b, 0x59, 0x51, - 0x1a, 0x6c, 0xa1, 0x73, 0xaa, 0xb9, 0xa6, 0xb8, 0xb5, 0x1e, 0xad, 0x80, - 0xac, 0xad, 0x1a, 0x9c, 0x8f, 0x9c, 0x8e, 0x9b, 0x1e, 0x8a, 0xc1, 0xb8, - 0x61, 0xc0, 0x1b, 0xa9, 0xa1, 0xa2, 0xa8, 0xaa, 0x71, 0xa1, 0x6e, 0x1f, - 0x8c, 0x6c, 0x50, 0x5e, 0x58, 0x1b, 0x9c, 0xbe, 0xab, 0xa3, 0xbb, 0xa0, - 0x8, 0x70, 0x9e, 0x79, 0xa1, 0xae, 0x1a, 0xc2, 0xb7, 0xa7, 0xb6, 0x9e, - 0x1e, 0x74, 0xa0, 0x7b, 0x9c, 0xad, 0x1a, 0x97, 0x8d, 0x96, 0x8e, 0x97, - 0x1e, 0xb4, 0xcd, 0x58, 0x92, 0xad, 0x1f, 0xac, 0xa0, 0x9e, 0xad, 0xac, - 0x70, 0x9e, 0x6b, 0x5d, 0x67, 0x5f, 0x8c, 0x5a, 0x1f, 0xa3, 0xd6, 0xdb, - 0xbd, 0xc5, 0x1a, 0xaa, 0x75, 0xa3, 0x6c, 0x5d, 0x70, 0x5e, 0x61, 0x1e, - 0x69, 0x96, 0x6a, 0x69, 0x1a, 0x7a, 0x87, 0x7a, 0x88, 0x7b, 0x1e, 0x8c, - 0x55, 0x5e, 0xb5, 0x56, 0x1b, 0x6d, 0x75, 0x74, 0x6e, 0x6c, 0xa5, 0x75, - 0xa8, 0x1f, 0x8a, 0xaa, 0xc6, 0xb8, 0xbe, 0x1b, 0x7a, 0x58, 0x6b, 0x73, - 0x5b, 0x76, 0x8, 0xa6, 0x78, 0x9d, 0x75, 0x68, 0x1a, 0x54, 0x5f, 0x6f, - 0x60, 0x78, 0x1e, 0xa2, 0x76, 0x9b, 0x7a, 0x69, 0x1a, 0x7f, 0x89, 0x80, - 0x88, 0x7f, 0x1e, 0x62, 0x49, 0xbe, 0x84, 0x69, 0x1f, 0x6a, 0x76, 0x78, - 0x69, 0x6a, 0xa6, 0x78, 0xab, 0xb9, 0xaf, 0xb7, 0x8a, 0xbc, 0x1f, 0xe, - 0xfb, 0xcc, 0xf7, 0x58, 0x76, 0xf7, 0xc4, 0x77, 0xcd, 0x77, 0x1, 0xac, - 0xf7, 0xe6, 0x15, 0x3c, 0xcb, 0x4c, 0xd9, 0xd9, 0xca, 0xc9, 0xd9, 0xd9, - 0x4a, 0xcc, 0x3d, 0x3c, 0x4e, 0x4c, 0x3d, 0x1e, 0xe, 0xf7, 0xe6, 0x7e, - 0xf7, 0x28, 0x1, 0xb3, 0xf7, 0x2a, 0xf7, 0x49, 0xf7, 0x2a, 0xf7, 0x49, - 0xf7, 0x2a, 0x14, 0x70, 0xb3, 0xc8, 0x15, 0x62, 0xab, 0x7d, 0x1d, 0x6a, - 0x69, 0x63, 0x1e, 0xf7, 0xdf, 0x16, 0x62, 0xab, 0x7d, 0x1d, 0x6a, 0x69, - 0x63, 0x1e, 0xf7, 0xdf, 0x16, 0x62, 0xa9, 0x6a, 0xb7, 0xb4, 0xae, 0xab, - 0xb5, 0xb4, 0x68, 0x53, 0xa, 0xf7, 0xe6, 0x7d, 0xa5, 0x85, 0x76, 0xf7, - 0xe1, 0xa5, 0xf7, 0xc6, 0xa5, 0x8c, 0x77, 0x12, 0x13, 0xb0, 0xf7, 0xe6, - 0xf7, 0x8, 0x2b, 0x1d, 0xf7, 0x74, 0x33, 0x2b, 0x1d, 0xfd, 0x69, 0xf7, - 0x88, 0x2b, 0x1d, 0x13, 0x68, 0xfb, 0x30, 0xfc, 0xbb, 0x15, 0xc7, 0x6, - 0xf8, 0xe9, 0xf9, 0x48, 0x5, 0x4f, 0x6, 0xe, 0xfb, 0xdd, 0x72, 0x1d, - 0xab, 0xf7, 0x6d, 0x71, 0x1d, 0x80, 0x95, 0x96, 0x8a, 0x1d, 0x42, 0x8d, - 0xa, 0xe2, 0x5f, 0xa, 0xe, 0xfb, 0xdd, 0x72, 0x1d, 0xf7, 0x30, 0x49, - 0x1d, 0x96, 0x82, 0x7f, 0x93, 0x83, 0x1b, 0x86, 0x87, 0x87, 0x7f, 0x1f, - 0xe, 0xfc, 0x83, 0x92, 0x76, 0xf9, 0x4d, 0x77, 0x1, 0xfb, 0x1, 0x7d, - 0x15, 0xf8, 0x45, 0xf9, 0x4b, 0x5, 0x8d, 0x4f, 0x7, 0xfc, 0x45, 0xfd, - 0x4d, 0x5, 0xe, 0x90, 0x8b, 0xba, 0xf7, 0x60, 0xb4, 0xef, 0xb4, 0xf7, - 0x69, 0xb0, 0x1, 0xf7, 0x4, 0xf7, 0x26, 0xf7, 0xa7, 0xae, 0x3, 0xb3, - 0xf7, 0x8f, 0x15, 0xfb, 0x41, 0xf7, 0x1a, 0x3d, 0xf7, 0x4, 0xf7, 0xb, - 0xf7, 0x16, 0xbb, 0xde, 0xc5, 0x1e, 0x6d, 0xa1, 0x5, 0x53, 0x63, 0xfb, - 0x2, 0x59, 0x57, 0x1b, 0xfb, 0xe, 0x55, 0xc3, 0xf7, 0x28, 0x8c, 0x1f, - 0xf7, 0xbd, 0x6, 0x97, 0xb4, 0x5, 0xfb, 0xc5, 0x6, 0xa5, 0x96, 0xb9, - 0x94, 0xa7, 0x1e, 0xf7, 0xc1, 0x6, 0x99, 0xb4, 0x5, 0xfb, 0xc2, 0x6, - 0xd5, 0x97, 0xe3, 0xf7, 0x1f, 0xf1, 0x1b, 0xf7, 0x6, 0x91, 0x51, 0x2e, - 0x1f, 0xae, 0xf7, 0x22, 0x6, 0x9e, 0x63, 0x79, 0xa6, 0x2c, 0x1b, 0x52, - 0xfb, 0x77, 0x55, 0xfb, 0x58, 0x49, 0x1f, 0xfb, 0x17, 0x6, 0x7e, 0x62, - 0x5, 0xf7, 0x14, 0x6, 0x83, 0x6e, 0x83, 0x61, 0x89, 0x6e, 0x8, 0x2a, - 0x6, 0x7e, 0x62, 0x5, 0xe, 0xf7, 0xe6, 0xf7, 0x9d, 0xa0, 0x89, 0x76, - 0xf8, 0x14, 0xa1, 0x12, 0xf7, 0x3c, 0xd9, 0xf7, 0x8d, 0xa6, 0xf7, 0xcc, - 0xd9, 0x13, 0xbc, 0xf7, 0xa, 0xf7, 0x9d, 0x15, 0xf7, 0x46, 0xa0, 0x6, - 0x58, 0x90, 0x8c, 0x8c, 0xb9, 0x1a, 0xf7, 0xc9, 0xbc, 0x7, 0xb3, 0x9d, - 0x6d, 0x67, 0x93, 0x1f, 0xa0, 0xe3, 0xfb, 0xf2, 0x33, 0xa0, 0x6, 0xaf, - 0x93, 0x9d, 0xa9, 0xb3, 0x1b, 0xbc, 0xfb, 0xc9, 0x6, 0x5d, 0x8c, 0x8a, - 0x58, 0x86, 0x1e, 0xf7, 0xd9, 0x76, 0x15, 0xf7, 0x17, 0xa0, 0x6, 0x5e, - 0x8f, 0x84, 0x8c, 0xba, 0x1a, 0xf7, 0x77, 0x8d, 0x7, 0x13, 0x7c, 0xf7, - 0x26, 0xfb, 0xc2, 0x5, 0x96, 0x6, 0xf7, 0x2b, 0xf7, 0xc4, 0x5, 0x8d, - 0xfb, 0x79, 0x6, 0x13, 0xbc, 0x5d, 0x8d, 0x8a, 0x57, 0x86, 0x1e, 0x76, - 0xf7, 0x46, 0xa0, 0x7, 0x58, 0x90, 0x8c, 0x8c, 0xb9, 0x1a, 0xf7, 0x95, - 0x7, 0xad, 0x96, 0x9f, 0xb8, 0x1e, 0x9f, 0xfb, 0x1, 0x7, 0xfb, 0x31, - 0xfb, 0xc2, 0xfb, 0x2a, 0xf7, 0xc2, 0x5, 0xfb, 0x13, 0x77, 0x6, 0xa8, - 0xa7, 0x76, 0x6c, 0x98, 0x1f, 0xfb, 0x97, 0x7, 0x5c, 0x84, 0x8a, 0x5e, - 0x87, 0x1e, 0xe, 0x53, 0xf7, 0x65, 0xc9, 0x4d, 0xe3, 0x1, 0xbe, 0xf7, - 0x65, 0x15, 0xf8, 0x8c, 0xc9, 0xfc, 0x8c, 0x6, 0xe, 0x21, 0xfb, 0x61, - 0xad, 0xf7, 0x4b, 0x76, 0xf8, 0x34, 0xb5, 0xf1, 0xf7, 0x2c, 0x6d, 0xa9, - 0x12, 0x13, 0xe8, 0x9c, 0xf8, 0x2b, 0x15, 0xd6, 0x6, 0x2f, 0xfc, 0x2f, - 0x5, 0xfb, 0x19, 0x6d, 0x7e, 0x69, 0x5d, 0x1b, 0x79, 0x8b, 0x91, 0x8e, - 0x93, 0x92, 0x8e, 0x90, 0x92, 0x1f, 0x8f, 0x90, 0x8e, 0x91, 0x96, 0x1a, - 0xa9, 0x73, 0x9e, 0x6e, 0x80, 0x67, 0x84, 0x59, 0x60, 0xb6, 0x6b, 0xc2, - 0xed, 0xdf, 0xf7, 0x13, 0xd5, 0x9c, 0x1e, 0xf1, 0xf8, 0x2f, 0x5, 0xf7, - 0x2a, 0x6, 0x46, 0xfb, 0xa1, 0x5, 0x85, 0x74, 0x86, 0x6f, 0x71, 0x1a, - 0x65, 0x9b, 0x6b, 0xbc, 0xcc, 0xb5, 0xb3, 0xeb, 0xc8, 0x1e, 0x75, 0x98, - 0x5, 0x7f, 0x83, 0x5f, 0x48, 0x74, 0x1b, 0x80, 0x87, 0x94, 0x99, 0xa8, - 0x9b, 0xbc, 0x8e, 0x99, 0x1f, 0xd4, 0xf7, 0xaf, 0x5, 0x8a, 0x76, 0xfb, - 0x1, 0x82, 0x72, 0x1b, 0xfb, 0xa, 0x6, 0xf7, 0x23, 0xb1, 0xaa, 0xdc, - 0xee, 0x1b, 0xa4, 0x8b, 0x7f, 0x86, 0x84, 0x82, 0x85, 0x85, 0x80, 0x1f, - 0x87, 0x84, 0x88, 0x83, 0x7f, 0x1a, 0x13, 0xf0, 0x71, 0xa0, 0x6f, 0xb0, - 0xa8, 0xa7, 0x9f, 0xb0, 0xc8, 0x48, 0xad, 0x47, 0xfb, 0x4a, 0x5c, 0xfb, - 0x1d, 0xfb, 0x9, 0x63, 0x1e, 0x3f, 0x6, 0xe, 0x21, 0xfb, 0x61, 0xae, - 0xf7, 0x4a, 0x76, 0xf8, 0x34, 0xb5, 0xf7, 0x76, 0xa8, 0x1, 0x9f, 0xf8, - 0x2b, 0x15, 0xd5, 0x6, 0x2f, 0xfc, 0x26, 0x5, 0xfb, 0x3, 0x72, 0x7c, - 0x4b, 0x61, 0x1b, 0x7a, 0x85, 0x91, 0x91, 0x91, 0x90, 0x90, 0x8f, 0x92, - 0x1f, 0x8f, 0x91, 0x8e, 0x91, 0x96, 0x1a, 0xa5, 0x79, 0x9f, 0x6f, 0x85, - 0x5c, 0x8b, 0x57, 0x41, 0xd7, 0x83, 0x9d, 0xf3, 0xd1, 0xba, 0xf7, 0x37, - 0xab, 0x1e, 0xee, 0xf8, 0x26, 0x5, 0xf7, 0x27, 0x6, 0x3c, 0xfb, 0xd5, - 0x5, 0x89, 0x81, 0x89, 0x80, 0x81, 0x1a, 0x68, 0x9c, 0x6e, 0xc1, 0xd7, - 0xb5, 0xcc, 0xd1, 0xb8, 0x1e, 0x77, 0x96, 0x5, 0x7a, 0x80, 0x64, 0x51, - 0x72, 0x1b, 0x7d, 0x87, 0x93, 0x95, 0x91, 0x8d, 0x92, 0x8d, 0x91, 0x1f, - 0xf7, 0x2b, 0xf8, 0xee, 0x28, 0x7f, 0x5, 0x87, 0x50, 0x9a, 0x6c, 0x1b, - 0xfb, 0x45, 0x61, 0xfb, 0x1d, 0xfb, 0xa, 0x66, 0x1f, 0x41, 0x6, 0xf7, - 0x53, 0x16, 0xe3, 0xa0, 0xab, 0xf7, 0x1e, 0xe9, 0x1b, 0xa2, 0x96, 0x7e, - 0x85, 0x87, 0x84, 0x84, 0x85, 0x81, 0x1f, 0x87, 0x84, 0x87, 0x82, 0x81, - 0x1a, 0x73, 0x98, 0x80, 0x93, 0x85, 0x1e, 0x6d, 0xfb, 0xb, 0x5, 0xe, - 0x79, 0x9d, 0xf8, 0x54, 0x99, 0xf7, 0x63, 0x9b, 0x98, 0x91, 0x6, 0xfb, - 0x62, 0x8d, 0xf7, 0x60, 0x8b, 0xf7, 0x9c, 0x94, 0x7, 0x1e, 0xa0, 0x39, - 0x63, 0xff, 0xc, 0x9, 0xb4, 0xa, 0xf7, 0xc, 0xb, 0x8c, 0xc, 0xe, - 0xf8, 0x88, 0x14, 0xf9, 0x2a, 0x15, 0xb7, 0x13, 0x0, 0x71, 0x2, 0x0, - 0x1, 0x0, 0x29, 0x0, 0x2f, 0x0, 0x3b, 0x0, 0x58, 0x0, 0x61, 0x0, - 0x9b, 0x0, 0x9e, 0x0, 0xab, 0x0, 0xb6, 0x0, 0xc3, 0x0, 0xd6, 0x0, - 0xda, 0x0, 0xea, 0x0, 0xfb, 0x0, 0xff, 0x1, 0x6, 0x1, 0x10, 0x1, - 0x28, 0x1, 0x2e, 0x1, 0x58, 0x1, 0x62, 0x1, 0x76, 0x1, 0x89, 0x1, - 0x96, 0x1, 0xa8, 0x1, 0xb5, 0x1, 0xb9, 0x1, 0xf3, 0x1, 0xfd, 0x2, - 0xd, 0x2, 0x41, 0x2, 0x4a, 0x2, 0x51, 0x2, 0x5d, 0x2, 0x65, 0x2, - 0x73, 0x2, 0x7d, 0x2, 0x86, 0x2, 0x92, 0x2, 0x9e, 0x2, 0xc4, 0x2, - 0xcd, 0x2, 0xe0, 0x2, 0xf2, 0x2, 0xfb, 0x3, 0x3, 0x3, 0x9, 0x3, - 0x28, 0x3, 0x32, 0x3, 0x3c, 0x3, 0x58, 0x3, 0x60, 0x3, 0x68, 0x3, - 0x6d, 0x3, 0x74, 0x3, 0x7b, 0x3, 0x81, 0x3, 0x9a, 0x3, 0x9d, 0x3, - 0xa3, 0x3, 0xb0, 0x3, 0xc6, 0x3, 0xdc, 0x3, 0xea, 0x3, 0xee, 0x3, - 0xf4, 0x3, 0xfa, 0x4, 0x4, 0x4, 0xb, 0x4, 0x12, 0x4, 0x24, 0x4, - 0x32, 0x4, 0x37, 0x4, 0x48, 0x4, 0x53, 0x4, 0x62, 0x4, 0x6c, 0x4, - 0x70, 0x4, 0x76, 0x4, 0x7a, 0x4, 0x83, 0x4, 0x8b, 0x4, 0x92, 0x4, - 0x97, 0x4, 0x9c, 0x4, 0xa1, 0x4, 0xaf, 0x4, 0xbd, 0x4, 0xc8, 0x4, - 0xd5, 0x4, 0xdd, 0x4, 0xe1, 0x4, 0xed, 0x4, 0xf9, 0x4, 0xff, 0x5, - 0x9, 0x5, 0x14, 0x5, 0x1d, 0x5, 0x24, 0x5, 0x29, 0x5, 0x33, 0x5, - 0x3d, 0x5, 0x47, 0x5, 0x51, 0x5, 0x5a, 0x5, 0x5e, 0x5, 0x67, 0x5, - 0x6d, 0x5, 0x73, 0x5, 0x79, 0x5, 0x7f, 0x5, 0x83, 0x5, 0x87, 0x50, - 0x1d, 0xf4, 0xc2, 0x1a, 0xd3, 0x47, 0x9d, 0x68, 0xfb, 0x37, 0xfb, 0x13, - 0xfb, 0x4b, 0xfb, 0x1c, 0xfb, 0x4, 0xdf, 0x5f, 0x35, 0xa, 0x98, 0xda, - 0x9e, 0x8d, 0x8d, 0x3d, 0xa, 0x72, 0x82, 0x57, 0x70, 0x2d, 0xfb, 0x17, - 0x68, 0x1f, 0xb, 0x6, 0xf7, 0x2c, 0x21, 0x1d, 0xb, 0x77, 0x1, 0x90, - 0xf7, 0x16, 0xf7, 0x3f, 0xe7, 0x3, 0x20, 0xa, 0xb, 0xf7, 0x8, 0xe3, - 0x90, 0xa, 0xf7, 0xab, 0x7b, 0x1d, 0x7b, 0x59, 0x40, 0x51, 0xfb, 0xa6, - 0x36, 0xa, 0xf7, 0x3c, 0xf7, 0x29, 0xf7, 0x1a, 0xfb, 0xb, 0xa1, 0x4b, - 0x1d, 0xb, 0x32, 0x1d, 0x8c, 0xa9, 0x8a, 0x6b, 0x34, 0x1d, 0xb, 0x77, - 0x1, 0x4d, 0xa, 0x3, 0xf7, 0x3f, 0xf7, 0x2c, 0x15, 0xe7, 0xe2, 0xf8, - 0x29, 0xf7, 0x4c, 0xf3, 0x8c, 0x21, 0x76, 0xfb, 0x8, 0x2d, 0xfc, 0x1a, - 0xfb, 0x46, 0x50, 0x5e, 0xaf, 0x55, 0x1d, 0xd2, 0xfb, 0x16, 0xf7, 0x3b, - 0xf7, 0x8d, 0xf7, 0x45, 0xf7, 0x9c, 0xf7, 0x56, 0xf7, 0x42, 0xfb, 0x19, - 0xd0, 0x5d, 0x1d, 0xfb, 0x79, 0xfb, 0x89, 0x1e, 0xb, 0x22, 0x1d, 0xe, - 0xa4, 0x87, 0x80, 0xb6, 0x4f, 0x1b, 0xfb, 0xe, 0xfb, 0x29, 0x2f, 0x1d, - 0xb, 0xf7, 0x8c, 0xf7, 0x6, 0x15, 0x8d, 0x8c, 0x5, 0x2e, 0x1d, 0xb, - 0x2c, 0x1d, 0x54, 0x4d, 0x8f, 0xa, 0x91, 0x98, 0x31, 0xa, 0x79, 0x86, - 0xb, 0x4c, 0xa, 0x60, 0x3a, 0x7c, 0x71, 0xfb, 0x27, 0x8c, 0x19, 0x65, - 0xa, 0x93, 0x73, 0x1d, 0x8b, 0x31, 0x1d, 0xb, 0x16, 0x20, 0x1d, 0xb, - 0x57, 0xa, 0x4e, 0x90, 0x7c, 0x8f, 0x39, 0x1d, 0x65, 0x50, 0x7b, 0x97, - 0x6e, 0x82, 0x19, 0xb, 0x91, 0x9f, 0x1f, 0x44, 0x1d, 0x89, 0xa1, 0x8a, - 0x71, 0x51, 0x40, 0xfb, 0x4a, 0x46, 0x47, 0xa, 0xb, 0x15, 0x20, 0x1d, - 0xb, 0x68, 0x1d, 0xf7, 0x7f, 0x22, 0xa, 0xb, 0xcc, 0xdb, 0xf7, 0x84, - 0xdf, 0x94, 0xa7, 0x39, 0xa, 0xb, 0xab, 0xde, 0xf7, 0xa1, 0x9f, 0xd1, - 0x1f, 0xfb, 0xa, 0x6, 0x6c, 0x20, 0x74, 0x3c, 0x5e, 0x3a, 0x8, 0x73, - 0x7e, 0x4e, 0x2c, 0x63, 0x1b, 0xb, 0x87, 0x8f, 0x95, 0x24, 0xa, 0xb, - 0x15, 0xf7, 0x58, 0xae, 0x6, 0x60, 0x75, 0x98, 0xa1, 0x92, 0x8c, 0x93, - 0x8f, 0x91, 0x48, 0x1d, 0x9a, 0x20, 0x8b, 0x95, 0x77, 0x1a, 0x5a, 0x69, - 0x84, 0x5e, 0x57, 0xa, 0x4d, 0x91, 0x7d, 0x8e, 0x39, 0x1d, 0x67, 0x50, - 0x78, 0x95, 0x6f, 0x84, 0x6b, 0x1d, 0x77, 0x74, 0xa, 0x13, 0x6c, 0x28, - 0xa, 0x13, 0x9c, 0xb, 0xcd, 0xf7, 0x0, 0xbf, 0xe2, 0xbe, 0xaa, 0x1e, - 0x6e, 0x9c, 0x5, 0x66, 0x72, 0x67, 0x55, 0x55, 0x1b, 0x77, 0x5c, 0xb, - 0x2b, 0x57, 0x8b, 0xbf, 0x9f, 0x1e, 0xfb, 0xb, 0xbd, 0x15, 0x2b, 0xd9, - 0x54, 0xdd, 0xf7, 0x34, 0xf7, 0x10, 0xb, 0x77, 0x1, 0x88, 0xf7, 0xb, - 0xf7, 0x62, 0xf7, 0xb, 0x3, 0x23, 0xa, 0xb, 0x35, 0x1a, 0xfb, 0xc, - 0xf7, 0x4, 0x57, 0xf6, 0xf7, 0x65, 0xb4, 0xf7, 0x22, 0xf7, 0x1f, 0xb3, - 0x1e, 0xb, 0x84, 0x61, 0x41, 0x45, 0xfb, 0x83, 0x34, 0x7d, 0x6d, 0x96, - 0xb9, 0x1e, 0xb, 0xf7, 0x64, 0x2d, 0x1d, 0x15, 0xf7, 0xa, 0xd7, 0xf7, - 0x12, 0xf6, 0xd1, 0x5f, 0xc0, 0x42, 0xfb, 0x8, 0x40, 0xfb, 0xc, 0x20, - 0x44, 0xb0, 0x51, 0xd8, 0x1f, 0x8e, 0xa5, 0x15, 0x72, 0x83, 0x9c, 0xa1, - 0xab, 0xa5, 0xe4, 0x95, 0xae, 0x1f, 0xad, 0x95, 0x9b, 0xd6, 0xb8, 0x1b, - 0xa0, 0x97, 0x7b, 0x76, 0x65, 0x70, 0x36, 0x7f, 0x63, 0x1f, 0x68, 0x81, - 0x7f, 0x46, 0x5d, 0x1b, 0xb, 0x15, 0x62, 0xa9, 0x7d, 0x1d, 0x6c, 0x69, - 0x63, 0x1e, 0xe, 0x8f, 0x9d, 0x1f, 0x92, 0xab, 0x15, 0xd4, 0x9b, 0xbe, - 0xf7, 0x22, 0xc9, 0x1b, 0xa8, 0x8b, 0xb, 0x1, 0x80, 0x16, 0xf8, 0x8e, - 0x6, 0xc6, 0xf7, 0x56, 0x70, 0x90, 0x5, 0xfb, 0x18, 0x4d, 0xfb, 0x1c, - 0x6b, 0x24, 0x1b, 0x45, 0x6, 0xf8, 0x46, 0xf8, 0xe7, 0x5, 0xb2, 0xfc, - 0x68, 0x7, 0x52, 0xfb, 0x46, 0xa7, 0x87, 0x5, 0xcd, 0xba, 0xc8, 0xdc, - 0xf7, 0x24, 0x1b, 0xd9, 0x6, 0xfc, 0x46, 0xfc, 0xe7, 0x5, 0xb, 0x48, - 0x1d, 0x9b, 0x21, 0x8a, 0x94, 0x77, 0x1a, 0xb, 0x49, 0xa, 0x13, 0xe8, - 0x62, 0x6e, 0xb, 0x1f, 0xf7, 0x14, 0xf8, 0x5b, 0x9c, 0xca, 0xa6, 0x8f, - 0x56, 0x1d, 0xb, 0x5b, 0xa, 0xe8, 0xe3, 0x2e, 0x3b, 0x1d, 0xb, 0x6b, - 0x1a, 0xfb, 0x19, 0xfc, 0x79, 0x7a, 0x4d, 0x74, 0x88, 0x63, 0x84, 0x19, - 0xb, 0xaf, 0x9f, 0xcc, 0x99, 0xba, 0x1f, 0xd2, 0xf7, 0x80, 0xb, 0x35, - 0x1d, 0x53, 0x4b, 0x4c, 0x70, 0x79, 0x7d, 0xb, 0x41, 0xa, 0xc7, 0x9a, - 0x7e, 0x79, 0x7f, 0x86, 0x7d, 0x47, 0x1d, 0xe, 0x1a, 0x74, 0x8b, 0x54, - 0xd8, 0xd7, 0xb5, 0xc5, 0xf5, 0xd7, 0x1e, 0xb, 0xa7, 0xe3, 0x5, 0xb7, - 0x6, 0x9c, 0xc8, 0x5, 0x5e, 0x6, 0xd9, 0xf7, 0x99, 0x5, 0x5d, 0x6, - 0xfb, 0xaa, 0xfb, 0x93, 0x5, 0xa7, 0x85, 0x15, 0xf7, 0x48, 0xf7, 0x3a, - 0x8d, 0x89, 0x5, 0x8c, 0x6, 0x58, 0xfb, 0x38, 0x5, 0xb, 0x75, 0xa, - 0xde, 0x62, 0x1d, 0x9b, 0x70, 0x1e, 0xb, 0xa0, 0x1e, 0xbd, 0xaf, 0xdc, - 0xc7, 0xbd, 0xaf, 0x8, 0x94, 0x7, 0x55, 0xc2, 0x52, 0xc5, 0x5a, 0xc0, - 0x8, 0xb, 0x67, 0xa8, 0x6e, 0xaf, 0xaf, 0xa8, 0xa8, 0xaf, 0xaf, 0x6e, - 0xa8, 0x67, 0x67, 0x6e, 0x6e, 0x67, 0x1e, 0xb, 0x1f, 0xa7, 0x86, 0xd5, - 0xf7, 0xa5, 0x6f, 0x8f, 0xb, 0xa6, 0xf7, 0x24, 0xf8, 0xc, 0xf7, 0x24, - 0xb, 0xf7, 0x42, 0x5, 0x3a, 0x6, 0xb, 0x1a, 0xd8, 0x57, 0x8d, 0x73, - 0x34, 0x55, 0x38, 0x21, 0x43, 0x1e, 0x88, 0x8d, 0xc7, 0xf7, 0x4e, 0x5, - 0x79, 0x3c, 0x28, 0x82, 0x75, 0x1b, 0x70, 0x7, 0xa6, 0xa6, 0x8b, 0x71, - 0x1f, 0xb, 0x15, 0xb3, 0x6, 0x9e, 0x93, 0x94, 0xa3, 0xac, 0x1b, 0xb, - 0x90, 0x8b, 0xab, 0xf7, 0xc6, 0xab, 0xf7, 0x9f, 0xab, 0xb, 0xc4, 0x1a, - 0xba, 0x65, 0xc0, 0x47, 0x36, 0x60, 0x4d, 0x67, 0x79, 0x1e, 0x9d, 0x80, - 0x5, 0x94, 0x94, 0xa5, 0xb2, 0xba, 0x1b, 0xc6, 0x8b, 0x52, 0x7f, 0x67, - 0x6a, 0xb, 0xac, 0x62, 0x60, 0x6c, 0x69, 0x63, 0x1e, 0xe, 0x1a, 0x53, - 0x28, 0x58, 0x78, 0x81, 0x1e, 0xb, 0xbd, 0x96, 0x57, 0x1d, 0xb, 0x90, - 0x8b, 0xae, 0xf7, 0x41, 0xb3, 0xb, 0x1e, 0x68, 0xf7, 0xc4, 0xae, 0x7, - 0xb, 0x8b, 0xae, 0xf8, 0xeb, 0xae, 0xb, 0xf7, 0x95, 0xfc, 0xb9, 0x5, - 0xa7, 0x6, 0xf7, 0x23, 0xf8, 0x8e, 0xb2, 0xf7, 0x1e, 0x95, 0x83, 0xc0, - 0x98, 0x19, 0xae, 0xfb, 0x65, 0x68, 0x7, 0xb, 0x21, 0xa, 0xe, 0x15, - 0xc4, 0x6, 0xf7, 0x17, 0xb, 0x7e, 0xa3, 0x5, 0x7c, 0x87, 0xfb, 0x44, - 0x38, 0xfb, 0x19, 0x1a, 0x3b, 0xb, 0xf7, 0x3b, 0x1a, 0xf7, 0x48, 0xfb, - 0x6, 0xed, 0xfb, 0x4f, 0x1e, 0xfb, 0xb6, 0x68, 0x6, 0xc9, 0x82, 0x96, - 0x89, 0x6a, 0x1a, 0xb, 0x50, 0x1e, 0xbb, 0x16, 0xab, 0xa5, 0xa5, 0xab, - 0xab, 0xa5, 0x71, 0x6b, 0x6b, 0x71, 0x71, 0x6b, 0x6b, 0x71, 0xa5, 0xab, - 0x1e, 0xb, 0xdc, 0xaf, 0x1a, 0x94, 0x87, 0x8e, 0x86, 0x79, 0x61, 0x61, - 0x7c, 0x6c, 0xa, 0xb, 0x4c, 0x1d, 0x78, 0x1d, 0xae, 0xfb, 0xbe, 0x68, - 0x7, 0xb, 0x76, 0xf7, 0xd0, 0x77, 0x12, 0xb, 0x5c, 0xa, 0xc3, 0x7b, - 0xa6, 0xb4, 0xab, 0xab, 0xb5, 0xb, 0x21, 0x82, 0xd3, 0xf8, 0x16, 0x77, - 0xb, 0xc8, 0xf7, 0x73, 0x5, 0xa7, 0x93, 0xb, 0x6f, 0xa1, 0x75, 0xa7, - 0xa7, 0xa1, 0xa1, 0xa7, 0xa7, 0x75, 0xa1, 0x6f, 0x6f, 0x75, 0x75, 0x6f, - 0x1e, 0xb, 0x66, 0xa8, 0x6e, 0xb0, 0xb0, 0xa9, 0xa8, 0x36, 0x1d, 0x6e, - 0x6d, 0x66, 0x1e, 0xb, 0xfb, 0xa5, 0x58, 0xa, 0xb, 0x9e, 0x9c, 0x9e, - 0xa2, 0xb4, 0x1b, 0xb3, 0x98, 0x6e, 0x74, 0x4c, 0x2f, 0x7a, 0x6e, 0x86, - 0x1f, 0xb, 0xf7, 0x52, 0xf7, 0x95, 0x90, 0x1d, 0xb6, 0x93, 0x57, 0x1d, - 0xb, 0x7c, 0x59, 0xfb, 0x2c, 0x67, 0xfb, 0x6, 0x1f, 0x65, 0x7b, 0x68, - 0x8a, 0x73, 0x1b, 0xe, 0x76, 0x1e, 0x59, 0x67, 0x3a, 0x4f, 0x59, 0x67, - 0x8, 0xb, 0x19, 0x70, 0x7, 0xb, 0xa8, 0xf7, 0x81, 0x5c, 0x1d, 0xb, - 0x5, 0x89, 0x6, 0xb, 0x15, 0x50, 0x49, 0x34, 0x3a, 0x67, 0x1a, 0x82, - 0xb, 0x6f, 0x80, 0x60, 0x62, 0x77, 0x88, 0x1d, 0xb, 0xc7, 0x79, 0xc3, - 0xf8, 0xe8, 0xae, 0xb, 0xf7, 0x7f, 0x77, 0x1, 0xb, 0x12, 0x76, 0xf7, - 0xf, 0xb, 0x9a, 0x8f, 0xf7, 0x44, 0xb, 0x1b, 0xd7, 0xaa, 0xc3, 0xac, - 0xb4, 0x67, 0x98, 0x79, 0x6f, 0x76, 0x70, 0x74, 0xb, 0x91, 0xa0, 0x1f, - 0xfb, 0x80, 0xfb, 0x12, 0x15, 0xf7, 0xb2, 0x6, 0xf7, 0xd2, 0xb, 0x85, - 0x83, 0xa, 0xf7, 0xe8, 0xe3, 0xf0, 0xbd, 0xa4, 0x1b, 0xb, 0xa2, 0xf7, - 0x2d, 0x5, 0x6e, 0x6, 0x7a, 0x81, 0x88, 0x87, 0x7c, 0x1b, 0xb, 0x1a, - 0x67, 0x62, 0x3c, 0x5f, 0x36, 0x1e, 0xb, 0x15, 0xb8, 0x6, 0xb, 0x8b, - 0xf7, 0x19, 0x7c, 0x1e, 0x70, 0x8e, 0x75, 0xfb, 0x3a, 0x5, 0xb, 0x8d, - 0x93, 0x94, 0x8d, 0x99, 0x1b, 0xb9, 0x8b, 0x6b, 0x87, 0x71, 0xb, 0x1f, - 0xc8, 0xf7, 0x7b, 0x5, 0xb, 0x3c, 0x7c, 0x59, 0x83, 0x3b, 0x84, 0x6d, - 0xa, 0xa9, 0xb, 0xf7, 0xad, 0xf7, 0xe3, 0x18, 0x95, 0xfb, 0xcc, 0x7, - 0x60, 0xb, 0xfb, 0x32, 0x15, 0x98, 0x73, 0x5, 0x75, 0xa, 0xb, 0x19, - 0xae, 0xfb, 0xd1, 0x68, 0x7, 0xb, 0x16, 0xf7, 0xd, 0x6, 0xb, 0xfb, - 0xdd, 0xfb, 0x32, 0x76, 0xf9, 0xf4, 0x77, 0x1, 0xb, 0x93, 0x7e, 0x15, - 0x9c, 0x90, 0x9f, 0x8e, 0x8f, 0x1b, 0xb, 0x92, 0x95, 0x75, 0x1f, 0x75, - 0x6a, 0x5, 0x84, 0x9c, 0xb, 0x8b, 0x69, 0x1b, 0x66, 0xf7, 0x8d, 0xb0, - 0x7, 0x68, 0xb, 0x72, 0x58, 0xfb, 0x39, 0x58, 0xfb, 0x53, 0x1e, 0xb, - 0x76, 0x54, 0xa, 0xb, 0xfb, 0xce, 0xfb, 0x3a, 0x76, 0xf9, 0xfd, 0x77, - 0xb, 0x1a, 0x87, 0x8a, 0x86, 0x8a, 0xb, 0x15, 0xf7, 0x74, 0x9e, 0x6, - 0xb, 0xf7, 0x40, 0x5, 0xc6, 0xcd, 0xb, 0xf7, 0x1a, 0xd5, 0xf7, 0x1a, - 0xb, 0x74, 0x88, 0x1d, 0xb, 0x15, 0xcb, 0xbd, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp deleted file mode 100644 index e13edf995e..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp +++ /dev/null @@ -1,1778 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSerifItalicFontData[21227] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0x15, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4f, 0x54, 0x46, 0x2d, 0x49, - 0x74, 0x61, 0x6c, 0x69, 0x63, 0x0, 0x1, 0x1, 0x1, 0x2a, 0xf8, 0x10, - 0x0, 0xf8, 0x1c, 0x1, 0xf8, 0x1d, 0x2, 0xf8, 0x1e, 0x3, 0xf8, 0x18, - 0x4, 0x1e, 0xe1, 0x5a, 0x4f, 0xc, 0x2, 0xfb, 0x3c, 0xfb, 0x8e, 0xfa, - 0x71, 0xf9, 0xf8, 0x5, 0xf7, 0x3c, 0xf, 0xf8, 0x93, 0x11, 0xb0, 0x1c, - 0x46, 0xd6, 0x12, 0x0, 0x4, 0x1, 0x1, 0x5, 0x2f, 0x45, 0x54, 0x45, - 0x75, 0x72, 0x6f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, - 0x20, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 0x43, 0x68, 0x72, 0x6F, 0x6D, - 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4f, 0x54, 0x46, 0x0, 0x0, - 0x1, 0x0, 0x1, 0x6, 0x0, 0x68, 0x0, 0x0, 0x9, 0x37, 0x0, 0x7c, - 0x0, 0x0, 0x42, 0x20, 0x0, 0x67, 0x0, 0x0, 0x64, 0x0, 0x0, 0xa0, - 0x0, 0x0, 0x66, 0x0, 0x0, 0x83, 0x0, 0x0, 0xaa, 0x0, 0x0, 0x8b, - 0x0, 0x0, 0x6a, 0x0, 0x0, 0x97, 0x0, 0x0, 0xa5, 0x0, 0x0, 0x80, - 0x0, 0x0, 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0xa4, 0x0, 0x0, 0xa9, - 0x0, 0x0, 0x7d, 0x0, 0x0, 0x98, 0x0, 0x0, 0x73, 0x0, 0x0, 0x72, - 0x0, 0x0, 0x85, 0x0, 0x0, 0x96, 0x0, 0x0, 0x8f, 0x0, 0x0, 0x78, - 0x0, 0x0, 0x9e, 0x0, 0x0, 0x9b, 0x0, 0x0, 0xa3, 0x0, 0x0, 0x7b, - 0x0, 0x0, 0xae, 0x0, 0x0, 0xab, 0x1, 0x0, 0xb0, 0x0, 0x0, 0xad, - 0x0, 0x0, 0xaf, 0x0, 0x0, 0x8a, 0x0, 0x0, 0xb1, 0x0, 0x0, 0xb5, - 0x0, 0x0, 0xb2, 0x2, 0x0, 0xb9, 0x0, 0x0, 0xb6, 0x2, 0x0, 0x9a, - 0x0, 0x0, 0xba, 0x0, 0x0, 0xbe, 0x0, 0x0, 0xbb, 0x1, 0x0, 0xbf, - 0x0, 0x0, 0xbd, 0x0, 0x0, 0xa8, 0x0, 0x0, 0x8d, 0x0, 0x0, 0xc4, - 0x0, 0x0, 0xc1, 0x2, 0x0, 0xc5, 0x0, 0x0, 0x9d, 0x0, 0x0, 0x95, - 0x0, 0x0, 0xcb, 0x0, 0x0, 0xc8, 0x1, 0x0, 0xcd, 0x0, 0x0, 0xca, - 0x0, 0x0, 0xcc, 0x0, 0x0, 0x90, 0x0, 0x0, 0xce, 0x0, 0x0, 0xd2, - 0x0, 0x0, 0xcf, 0x2, 0x0, 0xd6, 0x0, 0x0, 0xd3, 0x2, 0x0, 0xa7, - 0x0, 0x0, 0xd7, 0x0, 0x0, 0xdb, 0x0, 0x0, 0xd8, 0x1, 0x0, 0xdc, - 0x0, 0x0, 0xda, 0x0, 0x0, 0x9f, 0x0, 0x0, 0x93, 0x0, 0x0, 0xe1, - 0x0, 0x0, 0xde, 0x2, 0x0, 0xe2, 0x0, 0x0, 0xa2, 0x0, 0x0, 0xe3, - 0x0, 0x0, 0x91, 0x0, 0x0, 0x8c, 0x0, 0x0, 0x92, 0x0, 0x0, 0x8e, - 0x0, 0x0, 0x94, 0x0, 0x0, 0xc0, 0x0, 0x0, 0xdd, 0x0, 0x0, 0xc6, - 0x1, 0x0, 0xe4, 0x0, 0x0, 0x65, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x88, - 0x0, 0x0, 0x81, 0x1, 0x0, 0x84, 0x0, 0x0, 0x87, 0x0, 0x0, 0x7f, - 0x0, 0x0, 0x86, 0x0, 0x0, 0x6f, 0x0, 0x0, 0x89, 0x0, 0x0, 0x41, - 0x0, 0x0, 0x8, 0x0, 0x0, 0x75, 0x0, 0x0, 0x69, 0x0, 0x0, 0x77, - 0x0, 0x0, 0x76, 0x0, 0x0, 0x70, 0x1, 0x0, 0x74, 0x0, 0x0, 0x79, - 0x1, 0x0, 0x6b, 0x1, 0x0, 0x63, 0x0, 0x1, 0x87, 0x0, 0x0, 0x99, - 0x0, 0x0, 0xa6, 0x0, 0x0, 0x6d, 0x1, 0x0, 0xe6, 0x2, 0x0, 0x1, - 0x0, 0x3, 0x0, 0x5, 0x0, 0x4a, 0x0, 0x82, 0x0, 0xf8, 0x1, 0x8c, - 0x1, 0xb7, 0x2, 0x73, 0x2, 0xa0, 0x2, 0xd9, 0x3, 0x17, 0x3, 0xed, - 0x4, 0x1a, 0x4, 0x49, 0x4, 0x60, 0x4, 0x6d, 0x4, 0x88, 0x4, 0xcf, - 0x5, 0x1d, 0x5, 0x70, 0x5, 0xe3, 0x6, 0x2a, 0x6, 0x7a, 0x6, 0xd3, - 0x6, 0xff, 0x7, 0x7d, 0x7, 0xe1, 0x7, 0xfe, 0x8, 0x46, 0x8, 0x71, - 0x8, 0x95, 0x8, 0xb5, 0x9, 0x2c, 0x9, 0xe6, 0xa, 0x2e, 0xa, 0xb6, - 0xa, 0xe4, 0xb, 0x2e, 0xb, 0x8c, 0xb, 0xf5, 0xc, 0x6e, 0xc, 0xf7, - 0xd, 0x30, 0xd, 0x87, 0xe, 0xb, 0xe, 0x3a, 0xe, 0xb5, 0xf, 0x1f, - 0xf, 0x62, 0xf, 0xc8, 0x10, 0x4c, 0x10, 0xc6, 0x11, 0x2, 0x11, 0x4d, - 0x11, 0xa6, 0x11, 0xf6, 0x12, 0x75, 0x12, 0xf6, 0x13, 0x4f, 0x13, 0x59, - 0x13, 0x85, 0x13, 0xa3, 0x13, 0xd2, 0x13, 0xf9, 0x14, 0xa, 0x14, 0x26, - 0x14, 0x63, 0x14, 0xd3, 0x15, 0x11, 0x15, 0x9e, 0x15, 0xea, 0x16, 0x6e, - 0x17, 0x1a, 0x17, 0x8e, 0x17, 0xc6, 0x18, 0x33, 0x18, 0xa9, 0x18, 0xe1, - 0x19, 0x85, 0x19, 0xab, 0x19, 0xea, 0x1a, 0x2a, 0x1a, 0x95, 0x1a, 0xf1, - 0x1b, 0x53, 0x1b, 0xb1, 0x1b, 0xef, 0x1c, 0x56, 0x1c, 0xf1, 0x1d, 0x95, - 0x1d, 0xd7, 0x1e, 0x19, 0x1e, 0x75, 0x1e, 0x8b, 0x1e, 0xe9, 0x1f, 0x36, - 0x1f, 0x81, 0x1f, 0xf7, 0x20, 0x99, 0x21, 0xc, 0x21, 0xa1, 0x21, 0xc0, - 0x22, 0x97, 0x22, 0xa5, 0x23, 0x4c, 0x23, 0xc3, 0x24, 0x4, 0x24, 0x25, - 0x25, 0x13, 0x25, 0x2a, 0x25, 0x62, 0x25, 0x9a, 0x25, 0xb6, 0x25, 0xfd, - 0x26, 0x1c, 0x26, 0x98, 0x26, 0xd0, 0x26, 0xdf, 0x27, 0x21, 0x27, 0x73, - 0x27, 0xb1, 0x27, 0xc4, 0x28, 0x1c, 0x28, 0x88, 0x28, 0xd1, 0x29, 0x31, - 0x29, 0x65, 0x29, 0x8c, 0x29, 0xc3, 0x29, 0xfd, 0x2a, 0x29, 0x2a, 0x89, - 0x2b, 0x2f, 0x2b, 0x91, 0x2b, 0xd0, 0x2b, 0xf3, 0x2c, 0x12, 0x2c, 0x33, - 0x2c, 0x40, 0x2c, 0x5e, 0x2c, 0x74, 0x2c, 0x89, 0x2c, 0xec, 0x2d, 0x85, - 0x2d, 0x96, 0x2d, 0xa9, 0x2d, 0xc2, 0x2d, 0xfd, 0x2e, 0x1f, 0x2e, 0x61, - 0x2e, 0xdd, 0x2f, 0x5, 0x2f, 0x1c, 0x2f, 0x2f, 0x2f, 0x5c, 0x2f, 0xc8, - 0x30, 0x43, 0x30, 0xfb, 0x31, 0x9, 0x31, 0x1b, 0x31, 0x35, 0x31, 0x5d, - 0x31, 0x74, 0x31, 0xbd, 0x32, 0x62, 0x32, 0xd5, 0x32, 0xf4, 0x33, 0x2c, - 0x33, 0x50, 0x33, 0x73, 0x33, 0x92, 0x33, 0xaf, 0x33, 0xbe, 0x33, 0xdb, - 0x34, 0x4f, 0x34, 0x8b, 0x34, 0xa6, 0x34, 0xc0, 0x34, 0xda, 0x35, 0x13, - 0x35, 0x33, 0x35, 0x64, 0x35, 0xd5, 0x35, 0xf0, 0x35, 0xfe, 0x36, 0x24, - 0x36, 0x49, 0x36, 0x95, 0x36, 0xe0, 0x37, 0x3e, 0x37, 0x54, 0x37, 0x93, - 0x37, 0xdd, 0x38, 0x99, 0x39, 0x38, 0x39, 0x7d, 0x39, 0xe5, 0x3a, 0x66, - 0x3a, 0x78, 0x3a, 0xc8, 0x3b, 0x4c, 0x3b, 0x67, 0x3b, 0x83, 0x3b, 0xad, - 0x3b, 0xbd, 0x3c, 0xf, 0x3c, 0x41, 0x3c, 0x5e, 0x3c, 0x7e, 0x3c, 0x92, - 0x3c, 0xa8, 0x3c, 0xcd, 0x3c, 0xfd, 0x3d, 0x1e, 0x3d, 0x60, 0x3d, 0x99, - 0x3d, 0xd2, 0x3e, 0x75, 0x3f, 0x4e, 0x3f, 0x7a, 0x3f, 0xb5, 0x3f, 0xed, - 0x40, 0xb, 0x40, 0x27, 0x40, 0x3c, 0x40, 0xba, 0x41, 0x60, 0x41, 0x6d, - 0x42, 0x36, 0x43, 0x7, 0x20, 0xe, 0x20, 0xe, 0x73, 0x8e, 0xf4, 0xf8, - 0xc3, 0x77, 0x12, 0xb2, 0xf4, 0x17, 0xf7, 0xc, 0xf7, 0x49, 0x15, 0x9c, - 0x87, 0xc5, 0xf7, 0x32, 0xbe, 0xf7, 0x8, 0xb7, 0xf7, 0x10, 0x19, 0x92, - 0x9f, 0x90, 0x9b, 0x9a, 0x1a, 0xa6, 0x6e, 0x99, 0x7c, 0x1e, 0x13, 0xa0, - 0x71, 0x77, 0x6d, 0x64, 0x82, 0x1f, 0x6f, 0xfb, 0x10, 0x76, 0xfb, 0x18, - 0x69, 0xfb, 0x35, 0x8, 0x3a, 0xfb, 0x20, 0x15, 0x6e, 0xa2, 0x85, 0xa, - 0x74, 0x73, 0x6e, 0x1e, 0xe, 0xca, 0xf8, 0x4e, 0x76, 0xf7, 0x89, 0x77, - 0x1, 0xf7, 0x24, 0xa0, 0xf7, 0x32, 0xa0, 0x3, 0xf7, 0xd7, 0xf8, 0x39, - 0x15, 0xa0, 0x6, 0xa8, 0xd0, 0xc6, 0xf6, 0xac, 0x1a, 0x9c, 0x7f, 0x9e, - 0x76, 0x77, 0x71, 0xbc, 0xa, 0xfb, 0x47, 0x16, 0xa0, 0x6, 0xa7, 0xcc, - 0xc1, 0xee, 0xbb, 0x1a, 0x9a, 0x81, 0x9d, 0x7a, 0x72, 0x76, 0xbc, 0xa, - 0xe, 0xa0, 0x76, 0xf7, 0x5f, 0xb2, 0x64, 0xc1, 0xf7, 0x2d, 0xc1, 0x63, - 0xb3, 0xf7, 0x68, 0x77, 0x12, 0xe9, 0xf8, 0x64, 0x13, 0xb6, 0x9c, 0x16, - 0xb3, 0x6, 0xd6, 0xf7, 0x5f, 0x5, 0xf7, 0x42, 0x6, 0x40, 0xfb, 0x5f, - 0x5, 0xb2, 0x6, 0xd7, 0xf7, 0x5f, 0x5, 0xf4, 0x6, 0x13, 0xce, 0x96, - 0xb2, 0x5, 0x26, 0x6, 0xce, 0xf7, 0x4a, 0x5, 0xf0, 0x6, 0x96, 0xb3, - 0x5, 0x2b, 0x6, 0xdb, 0xf7, 0x68, 0x5, 0x62, 0x6, 0x3b, 0xfb, 0x68, - 0x5, 0xfb, 0x41, 0x6, 0xda, 0xf7, 0x68, 0x5, 0x66, 0x6, 0x3b, 0xfb, - 0x68, 0x5, 0x22, 0x6, 0x80, 0x63, 0x5, 0xee, 0x6, 0x49, 0xfb, 0x4a, - 0x5, 0x2b, 0x6, 0x80, 0x64, 0x5, 0xe7, 0x6, 0xc1, 0xb2, 0x15, 0xce, - 0xf7, 0x4a, 0x5, 0xf7, 0x42, 0x6, 0x47, 0xfb, 0x4a, 0x5, 0xe, 0x47, - 0x76, 0xf5, 0x76, 0xa4, 0x76, 0xf9, 0x15, 0xa6, 0xb9, 0x77, 0x12, 0xa2, - 0xd9, 0xf7, 0xab, 0xd6, 0x13, 0xde, 0xf7, 0xae, 0xf8, 0x38, 0x15, 0x61, - 0xa9, 0x64, 0xab, 0xc1, 0x1a, 0xd5, 0xc5, 0xaa, 0xd8, 0x1e, 0xfb, 0x7, - 0xfc, 0xfc, 0x15, 0xcf, 0xf7, 0xad, 0x5, 0xc2, 0x5d, 0xaf, 0x6d, 0x48, - 0x1a, 0xfb, 0x14, 0xfb, 0x14, 0x81, 0x6c, 0x1e, 0xfb, 0x52, 0xb5, 0x15, - 0x97, 0x80, 0xbf, 0x65, 0xe1, 0x7b, 0x75, 0x30, 0x18, 0xae, 0x6, 0x13, - 0xbe, 0xa0, 0xe4, 0x5, 0x13, 0x5e, 0xf7, 0x56, 0xb9, 0xf6, 0xe4, 0xdb, - 0x5e, 0xb9, 0x2a, 0xd5, 0x1f, 0xc3, 0xf7, 0x81, 0x5, 0xad, 0x7d, 0xbe, - 0x76, 0x29, 0x1a, 0x9a, 0x89, 0xa7, 0xf7, 0x6, 0x60, 0xaa, 0x50, 0x9b, - 0x78, 0x8f, 0x19, 0x9b, 0xcf, 0x5, 0x69, 0x6, 0x7a, 0x4c, 0x5, 0x13, - 0x44, 0xfb, 0xe, 0x2b, 0x58, 0xfb, 0x0, 0x44, 0xcc, 0x4d, 0xd1, 0x5c, - 0x1f, 0x46, 0xfb, 0xbd, 0x2a, 0xa1, 0x82, 0xcc, 0x82, 0xd5, 0x19, 0x7b, - 0x88, 0x5, 0xe, 0xf8, 0x70, 0xb0, 0xa, 0xd5, 0xd0, 0xa, 0xf7, 0x1e, - 0xd0, 0xa, 0x13, 0xb7, 0x80, 0xf8, 0x97, 0xf7, 0x9, 0x30, 0xa, 0xfc, - 0x8b, 0xf8, 0x11, 0x30, 0xa, 0x13, 0x6f, 0x80, 0x54, 0xfc, 0x33, 0x15, - 0xba, 0x6, 0xf9, 0x48, 0xf9, 0x48, 0x5, 0x5c, 0x6, 0xe, 0xf8, 0x39, - 0x79, 0xbc, 0x5b, 0xbc, 0xf8, 0x1, 0xaa, 0xf7, 0x62, 0xab, 0x12, 0xd7, - 0xe9, 0xf7, 0x2e, 0xdc, 0xf7, 0x4, 0xd0, 0x13, 0x7e, 0xf8, 0x5d, 0xc8, - 0x15, 0x13, 0xbe, 0x6d, 0xa3, 0xb3, 0x5a, 0xd5, 0x1b, 0xbe, 0xb6, 0xa5, - 0xb5, 0xad, 0x1f, 0x80, 0x96, 0x5, 0x7f, 0x7b, 0x76, 0x79, 0x69, 0x1b, - 0x62, 0x60, 0xa6, 0xce, 0x66, 0x1f, 0xc2, 0xd2, 0xa8, 0xbe, 0x9a, 0x9f, - 0x8, 0xb0, 0xa6, 0x9f, 0xa8, 0xbc, 0x1b, 0x9c, 0xfb, 0x4d, 0x78, 0x7, - 0xaa, 0x95, 0x7b, 0x70, 0x61, 0x71, 0x6a, 0x5f, 0x56, 0x1f, 0x60, 0xcd, - 0x6b, 0xf7, 0xb, 0x7f, 0xbf, 0x8, 0xc7, 0xa9, 0xf7, 0x4, 0xc3, 0xe6, - 0x1a, 0xbb, 0x61, 0xb7, 0x50, 0x30, 0x45, 0x3b, 0xfb, 0x11, 0x7e, 0x8c, - 0x82, 0x91, 0x4e, 0x1e, 0xfb, 0x17, 0x52, 0xfb, 0x10, 0x55, 0xfb, 0x15, - 0x1a, 0xfb, 0x1a, 0xf7, 0x14, 0x75, 0xbd, 0xdb, 0xb3, 0xa5, 0xc0, 0xde, - 0x1e, 0x78, 0xa8, 0x15, 0x61, 0x5d, 0x52, 0x7d, 0x68, 0x1b, 0x48, 0x4c, - 0xba, 0xe1, 0xf7, 0x9, 0xf7, 0x36, 0xc8, 0x8c, 0x1f, 0x9f, 0x45, 0xb2, - 0xfb, 0x13, 0xb9, 0x51, 0x8, 0x6f, 0xf7, 0xe6, 0x15, 0x88, 0xa5, 0x89, - 0x9c, 0xaf, 0x1a, 0xc2, 0x94, 0xd3, 0xc4, 0x9b, 0xa9, 0x8b, 0x53, 0x38, - 0x5c, 0x6e, 0x4f, 0x65, 0x1e, 0xe, 0xfb, 0x23, 0xf8, 0x4e, 0x76, 0xf7, - 0x89, 0x77, 0x1, 0xf7, 0x18, 0xa0, 0x3, 0xf7, 0x18, 0xf8, 0x39, 0x15, - 0xa0, 0x6, 0xb4, 0xe3, 0xba, 0xe5, 0xa8, 0x1a, 0x9c, 0x80, 0xa0, 0x75, - 0x77, 0x71, 0x7e, 0x72, 0x84, 0x1e, 0x82, 0x6b, 0x82, 0xfb, 0xc, 0x86, - 0x54, 0x8, 0xe, 0x73, 0xfb, 0x34, 0x76, 0xf9, 0xe6, 0x77, 0x1, 0xb5, - 0xd2, 0x3, 0xf7, 0x21, 0xfb, 0x49, 0x15, 0x9d, 0x91, 0x5, 0x4c, 0xf7, - 0x9, 0x9c, 0xf7, 0x53, 0xc4, 0x1a, 0xf7, 0x21, 0xeb, 0xf7, 0x7c, 0xf5, - 0xe6, 0x1e, 0x7e, 0x9a, 0x5, 0xfb, 0x4a, 0xfb, 0x2f, 0x3d, 0xfb, 0x30, - 0xfb, 0x39, 0x1a, 0x4b, 0x90, 0xfb, 0x2a, 0xe9, 0xfb, 0x34, 0x1e, 0xe, - 0x73, 0xfb, 0x36, 0x76, 0xf9, 0xe8, 0x77, 0x12, 0xf7, 0x6d, 0xd3, 0x17, - 0x9b, 0xfb, 0x39, 0x15, 0x98, 0x7c, 0x5, 0x13, 0x60, 0xf7, 0x28, 0xf7, - 0xb, 0xf7, 0x4, 0xf7, 0x3a, 0xf7, 0x51, 0x1a, 0xf7, 0x16, 0x70, 0xf7, - 0x14, 0x43, 0xf7, 0x9, 0x1e, 0x78, 0x86, 0xbd, 0x2b, 0x98, 0xfb, 0x1b, - 0x7a, 0xfb, 0x1f, 0x19, 0x75, 0xfb, 0x47, 0x43, 0xfb, 0x4a, 0x20, 0x29, - 0x8, 0xe, 0xf7, 0x37, 0xf7, 0x9, 0x66, 0x76, 0xf8, 0x10, 0x76, 0xe0, - 0x77, 0xa6, 0x77, 0x12, 0xf7, 0xc1, 0x9d, 0x13, 0xac, 0xf7, 0xc0, 0xf8, - 0x52, 0x15, 0x8c, 0x73, 0x8c, 0x71, 0x84, 0x73, 0x8, 0x82, 0x6c, 0x7e, - 0x6f, 0x7c, 0x1a, 0x13, 0x6c, 0x72, 0x9d, 0x79, 0x9d, 0x9d, 0x9e, 0x9c, - 0xa6, 0x8c, 0x1e, 0x8c, 0xa1, 0x7e, 0x99, 0x82, 0xb0, 0x8, 0x87, 0x9d, - 0x88, 0xa2, 0xac, 0x1a, 0xa2, 0x7e, 0x9c, 0x7e, 0x99, 0x7f, 0x8, 0x65, - 0xb6, 0x92, 0x6c, 0xab, 0x1b, 0x9d, 0x9e, 0x9a, 0xa3, 0xb1, 0x62, 0x87, - 0x4c, 0x9e, 0x1f, 0x79, 0x90, 0x76, 0x97, 0x76, 0x96, 0xa3, 0x9d, 0xa3, - 0x94, 0xa0, 0x91, 0x8, 0xc3, 0x9c, 0xb2, 0x82, 0xbb, 0x1a, 0x9e, 0x7a, - 0x9a, 0x78, 0x6f, 0x7b, 0x6f, 0x6f, 0x70, 0x1e, 0x70, 0x70, 0x66, 0x71, - 0x89, 0x1b, 0xb0, 0x8e, 0xa9, 0x90, 0x98, 0x1e, 0x95, 0xa7, 0x94, 0xa1, - 0xa0, 0x1a, 0x13, 0xb4, 0xa7, 0x7a, 0x99, 0x7a, 0x79, 0x78, 0x7b, 0x70, - 0x76, 0x95, 0x7a, 0x93, 0x6a, 0x1e, 0x8f, 0x78, 0x8f, 0x73, 0x6a, 0x1a, - 0x6f, 0x9b, 0x78, 0x9a, 0x7c, 0x99, 0x8, 0xae, 0x66, 0x83, 0xa4, 0x6b, - 0x1b, 0x74, 0x80, 0x77, 0x7d, 0x5e, 0xb3, 0x90, 0xc2, 0x7c, 0x1f, 0x9d, - 0x86, 0x9f, 0x84, 0xac, 0x78, 0x70, 0x79, 0x71, 0x81, 0x74, 0x85, 0x8, - 0x56, 0x7d, 0x66, 0x8f, 0x5f, 0x1a, 0x81, 0x96, 0x74, 0xa3, 0xa8, 0x9c, - 0xa7, 0xa8, 0xa5, 0x1e, 0xa4, 0xa6, 0xa7, 0x97, 0x97, 0x95, 0x8, 0xe, - 0xf7, 0xd2, 0xa0, 0x76, 0xf7, 0x86, 0xb4, 0xf7, 0x73, 0x77, 0x12, 0xf7, - 0xc5, 0xcd, 0x53, 0xb5, 0x13, 0xf0, 0xe1, 0xf7, 0x86, 0x15, 0x13, 0xe8, - 0xf7, 0x79, 0xfb, 0x86, 0xb5, 0xf7, 0x86, 0xf7, 0x7d, 0xb4, 0xfb, 0x7d, - 0xf7, 0x73, 0x61, 0xfb, 0x73, 0xfb, 0x79, 0x6, 0xe, 0x20, 0xfb, 0x0, - 0x76, 0xf7, 0x7a, 0x77, 0x12, 0xa2, 0xc0, 0xa, 0x13, 0xe0, 0x87, 0xfb, - 0x4, 0x15, 0x94, 0x7a, 0x5, 0xc8, 0xa, 0x83, 0x5e, 0x7f, 0x61, 0x75, - 0x97, 0x81, 0x97, 0x83, 0x1e, 0x13, 0xd0, 0x97, 0x83, 0x97, 0x84, 0x7a, - 0x1a, 0x66, 0x54, 0x66, 0x77, 0x7e, 0x1e, 0xe, 0x73, 0xf7, 0x54, 0xca, - 0x1, 0xbc, 0xf7, 0x7d, 0x3, 0xbc, 0xf7, 0x54, 0x15, 0xf7, 0x6e, 0x6, - 0x9a, 0xca, 0x5, 0xfb, 0x6d, 0x6, 0xe, 0x20, 0x80, 0xf7, 0x3, 0x1, - 0xa6, 0xf7, 0x3, 0x3, 0xa6, 0xb7, 0x84, 0xa, 0x3c, 0x8e, 0x76, 0xf9, - 0x40, 0x77, 0x1, 0x77, 0xf8, 0xb, 0x3, 0x77, 0x79, 0x15, 0xf8, 0x2a, - 0xf9, 0x40, 0x5, 0x5f, 0x6, 0xfc, 0x2b, 0xfd, 0x40, 0x5, 0xe, 0x84, - 0xa7, 0xf9, 0x7, 0xa7, 0x1, 0xab, 0xda, 0xf7, 0xc7, 0xda, 0x3, 0xf7, - 0x3, 0xf7, 0x30, 0x15, 0xec, 0xd3, 0xf8, 0x1f, 0xf7, 0x29, 0xe1, 0x8b, - 0x25, 0x6d, 0xfb, 0x43, 0x35, 0xfb, 0xd4, 0xfb, 0x1a, 0x6b, 0x54, 0x9e, - 0xf7, 0x8, 0x1e, 0x3c, 0xbb, 0x15, 0x23, 0xc4, 0x20, 0xf3, 0xf7, 0x3c, - 0xf7, 0x1c, 0xf7, 0x7c, 0xf7, 0x5a, 0xed, 0x70, 0xf7, 0x2f, 0xfb, 0x19, - 0xfb, 0x1f, 0xfb, 0x3a, 0xfb, 0x5e, 0xfb, 0xa2, 0x1e, 0xe, 0xa0, 0x76, - 0xf9, 0x38, 0x77, 0x1, 0xbc, 0xf7, 0xf8, 0x3, 0xbc, 0x16, 0xf7, 0xab, - 0x9a, 0x6, 0x5e, 0x6c, 0x96, 0xaf, 0x8f, 0x8b, 0x8f, 0x8c, 0x90, 0x1f, - 0xf7, 0x2a, 0xf8, 0xc9, 0x5, 0x8e, 0x95, 0x8e, 0x98, 0x92, 0x1a, 0x8f, - 0x8a, 0x8d, 0x88, 0x83, 0xfb, 0x1f, 0x6d, 0x83, 0x5c, 0x1e, 0x7c, 0x7, - 0x8c, 0xa1, 0x9e, 0x8c, 0x99, 0x1b, 0xa7, 0x97, 0x80, 0x76, 0x83, 0x87, - 0x7d, 0x88, 0x80, 0x1f, 0xfb, 0x1a, 0xfc, 0x76, 0x5, 0x5e, 0x7e, 0x52, - 0x79, 0x5d, 0x1b, 0xe, 0x8b, 0xd7, 0xf8, 0xa3, 0xd4, 0x1, 0xf8, 0x2, - 0xe1, 0x3, 0x97, 0x16, 0xf7, 0xf7, 0x6, 0xbd, 0xf7, 0x18, 0x7a, 0x92, - 0x5, 0x67, 0x7a, 0x71, 0x70, 0x49, 0x1b, 0xfb, 0x48, 0x90, 0x6, 0xf7, - 0x54, 0xf7, 0x54, 0x5, 0xf7, 0x10, 0xf7, 0x10, 0xa4, 0xb8, 0xce, 0x1a, - 0xd6, 0x53, 0xe7, 0x21, 0x72, 0xfb, 0x17, 0x87, 0xfb, 0x30, 0x55, 0x1e, - 0xa0, 0x84, 0x5, 0xa4, 0x99, 0xb1, 0xd0, 0xe5, 0x1b, 0xd8, 0xb9, 0x4f, - 0x4d, 0x6a, 0x87, 0x51, 0xfb, 0x20, 0xfb, 0x29, 0x1f, 0xfb, 0x66, 0xfb, - 0x6d, 0x5, 0xe, 0x84, 0xb1, 0x65, 0xf7, 0x0, 0xf7, 0x98, 0x9b, 0xf7, - 0x95, 0xb5, 0x12, 0xf7, 0xee, 0xdb, 0x5b, 0xe2, 0x13, 0x98, 0xf7, 0x20, - 0xf7, 0xfd, 0x15, 0xec, 0x92, 0xe3, 0x66, 0xfb, 0x20, 0x1a, 0xfb, 0x12, - 0x2d, 0x69, 0x69, 0x6f, 0x76, 0x9c, 0x9c, 0x76, 0x1e, 0x13, 0x74, 0x9d, - 0x76, 0x76, 0x9d, 0x74, 0x1b, 0x66, 0x81, 0x6f, 0x76, 0x5e, 0xc2, 0x7d, - 0xc6, 0x1f, 0x13, 0x34, 0xf7, 0x4d, 0xe6, 0xf7, 0x22, 0xf7, 0x3, 0xf7, - 0x2, 0x46, 0xa9, 0x71, 0x97, 0x1f, 0x8e, 0x7, 0xf4, 0xb2, 0xbd, 0xae, - 0xd7, 0x1a, 0xde, 0x43, 0xb5, 0x41, 0x52, 0x40, 0x5f, 0x4f, 0x72, 0x1e, - 0x9b, 0x86, 0x5, 0x9f, 0x9a, 0xae, 0xba, 0xca, 0x1b, 0xb1, 0xbc, 0x73, - 0x48, 0xfb, 0x0, 0xfb, 0x1f, 0x5f, 0x27, 0x7d, 0x1f, 0xe, 0xa0, 0x76, - 0xf7, 0x3c, 0xca, 0xf8, 0x51, 0x77, 0x12, 0x8c, 0xf8, 0x72, 0x17, 0xcc, - 0xf7, 0x7b, 0x15, 0x8f, 0x7, 0xf7, 0xc4, 0xf7, 0xdc, 0x5, 0x8f, 0x6, - 0x13, 0xf0, 0x28, 0xfb, 0xe0, 0x5, 0xfb, 0xa5, 0x4c, 0x15, 0xf7, 0x97, - 0x6, 0x5d, 0xfb, 0x3c, 0x5, 0xda, 0x6, 0xb6, 0xf7, 0x3a, 0x5, 0xef, - 0x6, 0x99, 0xcc, 0x5, 0x2c, 0x6, 0x13, 0x30, 0xf7, 0x10, 0xf8, 0x51, - 0x5, 0x62, 0x6, 0xfc, 0x35, 0xfc, 0x4d, 0x5, 0xe, 0x84, 0xb5, 0xf8, - 0xc4, 0xd2, 0x1, 0xf7, 0xf2, 0xd0, 0x3, 0xf7, 0x17, 0xf8, 0x3b, 0x15, - 0xf7, 0x8, 0x72, 0xf2, 0x7f, 0xfb, 0x2d, 0x1a, 0x34, 0x42, 0xfb, 0x3, - 0x29, 0x6f, 0x77, 0x9a, 0x99, 0x78, 0x1e, 0x98, 0x79, 0x7a, 0x98, 0x75, - 0x1b, 0x78, 0x76, 0x7f, 0x6e, 0x6f, 0xa9, 0x6f, 0xd3, 0xf7, 0x57, 0xf6, - 0xf7, 0x2e, 0xf7, 0x14, 0xf7, 0x1a, 0x31, 0xc9, 0xfb, 0x16, 0xa5, 0x1f, - 0xb2, 0xed, 0x5, 0xf7, 0x7a, 0x6, 0xa2, 0xd2, 0x5, 0xfb, 0x94, 0x6, - 0x23, 0xfb, 0x78, 0x5, 0xe, 0x84, 0xa5, 0xf8, 0x11, 0xaf, 0xf7, 0x8e, - 0x77, 0x1, 0xac, 0xd7, 0xf7, 0x9b, 0xe4, 0x3, 0xf7, 0x5b, 0xf8, 0x4a, - 0x15, 0xbd, 0xa3, 0xf7, 0xe, 0xf7, 0x4a, 0xf7, 0x44, 0x1b, 0x8a, 0x9b, - 0x5, 0xfb, 0xc5, 0xfb, 0x4d, 0xfb, 0xa2, 0xfb, 0x62, 0xfb, 0x38, 0xee, - 0x56, 0xdc, 0xf7, 0x3e, 0xdc, 0xf7, 0x3d, 0xf0, 0xf7, 0x22, 0x26, 0xbf, - 0x47, 0x6c, 0x6d, 0x83, 0x7e, 0x6f, 0x1f, 0x2a, 0xfb, 0xab, 0x15, 0x9b, - 0x95, 0xf7, 0x8c, 0xf7, 0x1e, 0xd7, 0xb5, 0x51, 0x39, 0x31, 0x55, 0xfb, - 0x40, 0xfb, 0x6, 0x29, 0x8b, 0xf7, 0x4, 0xa5, 0x1e, 0xe, 0x98, 0x76, - 0xf8, 0xed, 0xd4, 0x1, 0xd6, 0xf8, 0x5c, 0x3, 0xda, 0x83, 0x15, 0xd1, - 0x6, 0xf8, 0x18, 0xf9, 0x2c, 0x85, 0x95, 0x5, 0xfc, 0xb, 0x6, 0x3a, - 0xfb, 0x1c, 0x99, 0x82, 0x5, 0xb3, 0xad, 0xb0, 0xab, 0xd3, 0x1b, 0xf7, - 0x68, 0x6, 0x8d, 0x88, 0x5, 0xe, 0x84, 0xa1, 0xf9, 0x12, 0xa2, 0x12, - 0xa9, 0xcf, 0xb3, 0xd9, 0xf7, 0x2d, 0xd6, 0x78, 0xcf, 0x13, 0xf8, 0xf7, - 0x75, 0xf7, 0xfc, 0x15, 0x73, 0x84, 0xfb, 0x3f, 0x58, 0xfb, 0x25, 0x1a, - 0x6d, 0xa0, 0xfb, 0x1a, 0xf7, 0x47, 0xf7, 0x1a, 0xdb, 0xe1, 0xe1, 0xd9, - 0x63, 0xcb, 0x40, 0xd6, 0x1e, 0x13, 0xf4, 0xc2, 0x9d, 0xf7, 0x1, 0xb1, - 0xec, 0x1a, 0xf7, 0x2, 0xfb, 0x0, 0xaa, 0x49, 0x2d, 0x34, 0x5a, 0x24, - 0x57, 0xa5, 0x5c, 0xc8, 0x4a, 0x1e, 0xa1, 0x7b, 0x15, 0x13, 0xf8, 0xec, - 0x27, 0xa4, 0x6e, 0x4a, 0x1a, 0x2b, 0x3d, 0x64, 0x55, 0x35, 0x56, 0xc7, - 0xda, 0xf7, 0x13, 0xf7, 0xf, 0xc2, 0xa5, 0x93, 0x1e, 0xcb, 0xc2, 0x15, - 0x2c, 0xe1, 0x8b, 0xaa, 0xa5, 0x1a, 0xce, 0xb1, 0xb7, 0xcb, 0x1e, 0x13, - 0xf4, 0xdc, 0xa5, 0x48, 0x5b, 0x38, 0x50, 0x6d, 0x54, 0x71, 0x1f, 0xe, - 0x8f, 0x76, 0xf7, 0x93, 0xb9, 0xf8, 0x2, 0xa5, 0x1, 0xd0, 0xe3, 0xf7, - 0x98, 0xd6, 0x3, 0xa2, 0x8c, 0x15, 0x79, 0x7, 0xf7, 0x2e, 0xf7, 0xcf, - 0xf7, 0x42, 0xf7, 0xbd, 0xf7, 0x28, 0x3b, 0xd5, 0x24, 0xfb, 0x9, 0xfb, - 0xf, 0xfb, 0x10, 0xfb, 0x1d, 0xfb, 0xb, 0xcd, 0x3e, 0xe0, 0xb7, 0xb7, - 0x9e, 0xa5, 0xb3, 0x1f, 0x8f, 0x89, 0x5, 0x51, 0x80, 0xfb, 0x54, 0xfb, - 0x5f, 0xfb, 0x12, 0x1b, 0xf7, 0x1a, 0xf8, 0x2f, 0x15, 0xe8, 0xbb, 0xf7, - 0x25, 0xf7, 0x5, 0xee, 0x8b, 0xfb, 0x0, 0x64, 0x70, 0x7b, 0xfb, 0x4, - 0x72, 0x64, 0x1e, 0x60, 0x6f, 0x53, 0x7a, 0x6c, 0x1b, 0x27, 0x87, 0xf7, - 0x7, 0xab, 0x1f, 0xe, 0x73, 0x80, 0xf7, 0x2, 0xf7, 0x7c, 0xf7, 0x2, - 0x12, 0xbd, 0xf7, 0x2, 0x82, 0xf7, 0x2, 0x13, 0xe0, 0xbd, 0xb7, 0x8a, - 0xa, 0x13, 0xd0, 0xf0, 0xf7, 0xea, 0x8a, 0xa, 0xe, 0x73, 0xf7, 0xdd, - 0xf7, 0x4, 0x12, 0xf7, 0x29, 0xf7, 0x4, 0xfb, 0x3, 0xf7, 0x3, 0x13, - 0xa0, 0xa6, 0xfb, 0x4, 0x15, 0x94, 0x7a, 0x5, 0x13, 0xc0, 0xc8, 0xa, - 0x76, 0x6c, 0x7c, 0x61, 0x73, 0x99, 0x83, 0x98, 0x83, 0x1e, 0x95, 0x84, - 0x95, 0x84, 0x7c, 0x1a, 0x66, 0x54, 0x66, 0x77, 0x7e, 0x1e, 0xf7, 0xe, - 0xf8, 0x85, 0x15, 0x6c, 0xa4, 0x72, 0xaa, 0xaa, 0xa4, 0xa4, 0xaa, 0xaa, - 0x72, 0xa4, 0x6c, 0x6c, 0x72, 0x72, 0x6c, 0x1e, 0xe, 0xf7, 0xd2, 0x98, - 0x76, 0xb9, 0x76, 0xf8, 0x85, 0x77, 0x1, 0xf7, 0x33, 0xf8, 0x59, 0x3, - 0xdf, 0xf7, 0x88, 0x15, 0xf8, 0x90, 0xfb, 0x90, 0x5, 0xb5, 0x7, 0xfc, - 0x4e, 0xf7, 0x6f, 0xf8, 0x4e, 0xf7, 0x6f, 0x5, 0xb5, 0x7, 0xfc, 0x90, - 0xfb, 0x90, 0x5, 0xe, 0xf7, 0xd2, 0xf7, 0xc, 0xce, 0xf7, 0x18, 0xce, - 0x63, 0xb3, 0x12, 0x13, 0xa0, 0xe1, 0xf7, 0xee, 0x15, 0xf8, 0x8c, 0xb3, - 0xfc, 0x8c, 0x6, 0xfb, 0x9e, 0x4, 0xf8, 0x8c, 0x6, 0x13, 0xc0, 0xb0, - 0xfc, 0x8c, 0x7, 0xe, 0xf7, 0xd2, 0x98, 0x76, 0xf8, 0x9e, 0x77, 0x1, - 0xdf, 0x83, 0x15, 0xb5, 0x7, 0xf8, 0x4e, 0xf7, 0x6f, 0xfc, 0x4e, 0xf7, - 0x6f, 0x5, 0xb5, 0x7, 0xf8, 0x90, 0xfb, 0x90, 0x5, 0x79, 0x7, 0xe, - 0x7f, 0xf3, 0xf8, 0xba, 0xa1, 0x12, 0xf7, 0x18, 0xf3, 0x57, 0xcb, 0xf7, - 0x2a, 0xd5, 0x13, 0xd8, 0xf7, 0x5b, 0xf7, 0x44, 0x15, 0x9c, 0x89, 0x5, - 0xd3, 0xdb, 0xd6, 0xb5, 0xac, 0x1e, 0xbf, 0xb4, 0xdd, 0xc1, 0xe3, 0x1a, - 0xd5, 0x54, 0xc0, 0x2b, 0x44, 0x49, 0x64, 0x44, 0x6e, 0xa1, 0x77, 0xa3, - 0x95, 0xac, 0x94, 0xa9, 0x96, 0x85, 0x92, 0x85, 0x92, 0x1e, 0x85, 0x92, - 0x84, 0x92, 0x97, 0x1a, 0xba, 0xcc, 0x8b, 0x90, 0xd4, 0x92, 0x50, 0x72, - 0x44, 0x62, 0x5e, 0x5b, 0x58, 0x1e, 0x57, 0x55, 0x51, 0x34, 0x41, 0x1a, - 0x13, 0xe8, 0x48, 0xfb, 0x1c, 0x15, 0x13, 0xd8, 0x6e, 0xa2, 0x74, 0xa8, - 0x1e, 0x13, 0xe8, 0xa8, 0xa2, 0xa2, 0xa8, 0x1f, 0x13, 0xd8, 0xa8, 0x74, - 0xa2, 0x6e, 0x1e, 0x13, 0xe8, 0x6e, 0x74, 0x74, 0x6e, 0x1f, 0xe, 0xf8, - 0xc7, 0x79, 0xb2, 0xed, 0xac, 0x7d, 0xb6, 0xf7, 0xb3, 0xb7, 0xf7, 0xf, - 0xaa, 0x12, 0xf7, 0xa, 0xde, 0xf7, 0xc, 0xd2, 0xf8, 0xa, 0xb3, 0x13, - 0xbf, 0xf8, 0x1c, 0xf7, 0x9c, 0x15, 0xf7, 0xc, 0xe3, 0xd3, 0xbb, 0x1e, - 0x13, 0xaf, 0xa8, 0x98, 0x75, 0x61, 0x1f, 0x2a, 0x8c, 0x40, 0xfb, 0x6, - 0x61, 0x1b, 0x68, 0x70, 0xa3, 0xc6, 0x1f, 0xf7, 0x21, 0x53, 0x15, 0x7f, - 0x8a, 0xa2, 0x51, 0xcd, 0x1b, 0xf7, 0xa, 0xce, 0xf7, 0x1b, 0xf0, 0xf7, - 0x3b, 0xfb, 0x23, 0xf7, 0x11, 0xfb, 0x4b, 0xfb, 0x58, 0xfb, 0x3a, 0xfb, - 0x24, 0xfb, 0x69, 0xfb, 0x19, 0xf7, 0x5, 0xfb, 0x56, 0xf7, 0x97, 0xd8, - 0xd9, 0xab, 0xa9, 0xca, 0x1f, 0x7f, 0xa8, 0x5, 0x71, 0x52, 0x4d, 0x71, - 0x33, 0x1b, 0xfb, 0x41, 0xfb, 0x7, 0xf7, 0x1c, 0xf7, 0x21, 0xf7, 0x71, - 0xf7, 0x13, 0xf7, 0x8, 0xf7, 0x2c, 0xf7, 0x4a, 0xf3, 0xfb, 0x29, 0xfb, - 0x5, 0x1f, 0x13, 0xdf, 0x35, 0x5b, 0xfb, 0x8, 0x39, 0x5f, 0x90, 0xbb, - 0x9a, 0x8f, 0x1e, 0xcc, 0xf7, 0x9a, 0x5, 0x46, 0x6, 0x81, 0x5c, 0x5, - 0xa2, 0x7e, 0x80, 0xa7, 0x5c, 0x1b, 0xfb, 0x19, 0x4d, 0xfb, 0x3c, 0x45, - 0x1f, 0x13, 0x0, 0xfb, 0x5, 0xcf, 0x81, 0xa6, 0x1e, 0xc5, 0x8a, 0xb8, - 0xc0, 0x97, 0x9c, 0x8, 0xe, 0x5a, 0xa, 0x1, 0x58, 0xf7, 0x4f, 0xf7, - 0x98, 0xf7, 0x3c, 0x3, 0x58, 0x16, 0x9b, 0xa, 0x5d, 0x7e, 0x9e, 0xa5, - 0xa8, 0x91, 0x91, 0xd2, 0xf7, 0x16, 0x1f, 0xf7, 0x70, 0x6, 0xa1, 0xfb, - 0x12, 0x8b, 0x74, 0x8a, 0x1a, 0x63, 0x71, 0x77, 0x57, 0x1e, 0x7b, 0xf7, - 0x8a, 0x9b, 0x7, 0x51, 0x87, 0xa6, 0xc8, 0x80, 0x1f, 0x2a, 0xf8, 0xc8, - 0x5, 0x71, 0x6, 0xfb, 0xd9, 0xfc, 0xb7, 0x5, 0x59, 0x6e, 0x70, 0x54, - 0x65, 0x1b, 0x45, 0xa, 0xe, 0xf7, 0x92, 0x86, 0xa9, 0x72, 0xa9, 0xf7, - 0xc1, 0xab, 0xf7, 0x98, 0xa9, 0x12, 0xf7, 0x51, 0xf0, 0xf7, 0x21, 0xf7, - 0x0, 0x57, 0xf0, 0x13, 0x7c, 0x83, 0x16, 0xf7, 0xae, 0x6, 0xf7, 0x14, - 0xf7, 0x1d, 0xc9, 0xf7, 0x1d, 0xed, 0x45, 0xa9, 0x56, 0xa2, 0x1f, 0x8d, - 0x7, 0x13, 0xba, 0xe9, 0x9e, 0xd9, 0xb6, 0xe5, 0x1a, 0xf7, 0x7, 0x2b, - 0xad, 0x23, 0x1e, 0xfb, 0x96, 0x7b, 0x6, 0xdf, 0x81, 0x51, 0x52, 0x7c, - 0x1f, 0xfb, 0x5, 0xfc, 0x47, 0x7f, 0x5d, 0x67, 0x73, 0x67, 0x8a, 0x19, - 0x13, 0x7c, 0xf7, 0x4a, 0xd0, 0x15, 0x9e, 0xbc, 0xf7, 0x37, 0x9a, 0xcb, - 0x1e, 0xf7, 0x3a, 0xa6, 0x5e, 0x3d, 0x28, 0x52, 0x3c, 0xfb, 0x21, 0x6e, - 0x6d, 0x9c, 0xb1, 0x1f, 0xd5, 0xf7, 0xaa, 0x15, 0xb5, 0xf7, 0x33, 0x5, - 0xeb, 0xa2, 0x83, 0x90, 0xd1, 0x1b, 0x13, 0xba, 0xd6, 0xb0, 0x67, 0x47, - 0xfb, 0x20, 0xfb, 0xd, 0x7b, 0xfb, 0xa, 0x1f, 0xe, 0xf7, 0xca, 0x79, - 0xb8, 0xd4, 0xa, 0x13, 0xb0, 0xf9, 0x20, 0xf8, 0x65, 0x15, 0xb8, 0xa, - 0x7e, 0x74, 0x93, 0x92, 0x6d, 0x1f, 0x13, 0xd0, 0x90, 0x75, 0x70, 0x8f, - 0x6c, 0xd5, 0xa, 0xfb, 0x5c, 0xf7, 0x26, 0x45, 0xf7, 0x8, 0xf7, 0x26, - 0xe4, 0xf4, 0xb7, 0xb0, 0x6f, 0xa, 0xe, 0xf8, 0x1, 0x8b, 0xa9, 0xf8, - 0xe5, 0xa9, 0x12, 0xf8, 0xe1, 0xf7, 0x3, 0x17, 0xb1, 0xa, 0x1f, 0x13, - 0xe0, 0xf4, 0x4d, 0xf7, 0x35, 0xfb, 0x7a, 0x1e, 0xfb, 0xaa, 0x7b, 0x6, - 0xe3, 0x7e, 0x45, 0x59, 0x7d, 0x1f, 0xfb, 0x7, 0xfc, 0x35, 0x5, 0x4d, - 0x7a, 0x70, 0x75, 0x63, 0x1b, 0xf7, 0x5f, 0xf7, 0x30, 0x15, 0xf7, 0x4, - 0xf8, 0x30, 0x5, 0x99, 0x8f, 0x95, 0xa4, 0xc4, 0xb2, 0xa, 0x59, 0x79, - 0x9d, 0xa5, 0xa6, 0x97, 0xaf, 0x95, 0xae, 0x1f, 0xe, 0xf7, 0x92, 0x8b, - 0xac, 0xf7, 0xb9, 0xac, 0x6c, 0xe9, 0xa, 0x12, 0x8a, 0xf9, 0xf, 0x13, - 0xd8, 0x8b, 0xa, 0x74, 0x62, 0x92, 0xb4, 0x90, 0x8b, 0x96, 0x8d, 0x92, - 0x1f, 0x13, 0xb8, 0x8e, 0x96, 0x85, 0x79, 0xcb, 0xf7, 0x7b, 0x8, 0xf7, - 0x37, 0x8b, 0x7d, 0x63, 0x40, 0xa, 0x85, 0x80, 0xfb, 0x35, 0x1b, 0xb7, - 0xf7, 0x37, 0x5, 0xce, 0x9d, 0x81, 0xa8, 0xe9, 0x1b, 0xf7, 0x3e, 0x9a, - 0x6f, 0x67, 0x7c, 0x8b, 0x79, 0x89, 0x76, 0x63, 0xa, 0xc2, 0x9c, 0x70, - 0x75, 0x77, 0x87, 0x74, 0x84, 0x74, 0x1f, 0xfb, 0x7, 0xfc, 0x3a, 0x5, - 0x47, 0x79, 0x64, 0x7b, 0x70, 0x1b, 0xe, 0x7d, 0xa, 0xf7, 0xdc, 0xe9, - 0xa, 0x1, 0xf7, 0x64, 0xee, 0x3, 0x93, 0x16, 0xf7, 0x90, 0x9b, 0x6, - 0x49, 0x8a, 0x80, 0xb6, 0x9a, 0xc4, 0xc4, 0xf7, 0x69, 0x18, 0xe3, 0xd1, - 0x95, 0x4f, 0x76, 0x86, 0x74, 0x88, 0x7d, 0x1f, 0x9c, 0x86, 0xd7, 0xf7, - 0x7e, 0x79, 0x90, 0x5, 0x2c, 0x5d, 0x7a, 0x8d, 0xfb, 0x2d, 0x1b, 0xb6, - 0xf7, 0x35, 0x5, 0xe4, 0xa3, 0x8b, 0x94, 0xdb, 0x1b, 0xf7, 0x28, 0xaf, - 0x7e, 0x4c, 0x7d, 0x89, 0x7d, 0x8a, 0x7d, 0x1f, 0xa0, 0x89, 0xab, 0xf7, - 0x2d, 0x5, 0xfc, 0x86, 0x7b, 0x6, 0xc2, 0x9b, 0x75, 0x6d, 0x78, 0x87, - 0x74, 0x85, 0x76, 0x1f, 0xfb, 0x1, 0xfc, 0x2a, 0x75, 0x3a, 0x87, 0x84, - 0x4a, 0x7f, 0x19, 0xe, 0xb6, 0xa, 0xb0, 0xf8, 0xf9, 0xad, 0x1, 0xbf, - 0xf7, 0x2, 0x3, 0xf8, 0x5c, 0xf7, 0xc3, 0x15, 0xb9, 0xa0, 0x71, 0x69, - 0x85, 0x8b, 0x84, 0x8a, 0x84, 0x1f, 0x88, 0x7b, 0x76, 0xfb, 0x17, 0x6e, - 0x74, 0x8, 0x74, 0x6e, 0x72, 0x80, 0x58, 0x1b, 0xfb, 0x3e, 0x6b, 0xf7, - 0x10, 0xd9, 0xf7, 0x38, 0xed, 0xf7, 0x8b, 0xf7, 0x5d, 0xd2, 0xf7, 0x1, - 0x6a, 0xfb, 0x17, 0x1f, 0x9d, 0x88, 0xbc, 0xf7, 0x59, 0x7c, 0x8f, 0x5, - 0x7d, 0x81, 0x7d, 0x77, 0x64, 0x1b, 0x7c, 0x70, 0x96, 0x95, 0x67, 0x1f, - 0x92, 0x70, 0x6b, 0x91, 0x67, 0x1b, 0xfb, 0x6a, 0xfb, 0x53, 0xfb, 0x59, - 0xfb, 0x79, 0x60, 0xa8, 0xfb, 0x6b, 0xf7, 0x9c, 0xd4, 0xe9, 0xa1, 0xb3, - 0xcb, 0x1f, 0xb8, 0xf7, 0x45, 0x5, 0xcb, 0x9c, 0xaa, 0x9d, 0xc0, 0x1b, - 0x9b, 0xfb, 0x9e, 0x7, 0xe, 0xf8, 0x1, 0xa0, 0x76, 0xf7, 0xb9, 0xb5, - 0xf7, 0xd2, 0x77, 0x12, 0x83, 0xf7, 0x8a, 0xfb, 0x8a, 0xf9, 0x9b, 0xfb, - 0x8b, 0xf7, 0x8b, 0x13, 0xf4, 0x83, 0x16, 0xf7, 0x8a, 0x9b, 0x6, 0x68, - 0x6d, 0x9a, 0xb1, 0x92, 0x8c, 0x92, 0x8d, 0x94, 0x1f, 0x13, 0xe8, 0xc7, - 0xf7, 0x7e, 0x5, 0xf7, 0xb1, 0x6, 0x50, 0xfb, 0x76, 0x5, 0x4b, 0x79, - 0x55, 0x77, 0x68, 0x1b, 0xe6, 0xa, 0x64, 0x6b, 0x9b, 0xb4, 0x92, 0x8c, - 0x93, 0x8d, 0x93, 0x1f, 0xf7, 0x3, 0xf8, 0x3c, 0x5, 0xf7, 0x7, 0xa9, - 0xaa, 0x8d, 0xae, 0x1b, 0x93, 0xa, 0xbb, 0x9b, 0x73, 0x6c, 0x78, 0x87, - 0x76, 0x85, 0x77, 0x1f, 0x62, 0xfb, 0x2e, 0x5, 0xfb, 0xb1, 0x6, 0xb5, - 0xf7, 0x2e, 0x5, 0xf7, 0x5, 0xaa, 0xbf, 0x8d, 0xa9, 0x1b, 0xc4, 0xa, - 0xc1, 0x9d, 0x74, 0x6c, 0x78, 0x86, 0x76, 0x85, 0x76, 0x1f, 0xfb, 0x4, - 0xfc, 0x3a, 0x5, 0x4d, 0x7a, 0x67, 0x75, 0x69, 0x1b, 0xe, 0x73, 0xcb, - 0xa, 0x83, 0xf8, 0x1c, 0x3, 0x83, 0x16, 0xf7, 0x88, 0x9b, 0x6, 0x59, - 0x7d, 0xa4, 0xaa, 0x9e, 0x90, 0xa0, 0x90, 0x9d, 0x1f, 0xf7, 0x1, 0xf8, - 0x1c, 0x5, 0xec, 0xa6, 0xa2, 0x9d, 0xb6, 0x1b, 0x93, 0xa, 0xb9, 0x9d, - 0x76, 0x72, 0x76, 0x88, 0x72, 0x85, 0x74, 0x1f, 0x20, 0xfc, 0x1c, 0x5, - 0x28, 0x70, 0x78, 0x7c, 0x5c, 0x1b, 0xe, 0xe2, 0x79, 0xaa, 0x6c, 0xf7, - 0x22, 0xf8, 0xa5, 0x77, 0x12, 0x85, 0xe8, 0x13, 0xb0, 0xf7, 0x81, 0xf9, - 0x11, 0x15, 0xc3, 0x9d, 0x76, 0x6d, 0x78, 0x86, 0x74, 0x85, 0x75, 0x1f, - 0xfb, 0x15, 0xfc, 0x5b, 0x5, 0x77, 0x85, 0x82, 0x69, 0x69, 0x1b, 0x6a, - 0x88, 0xa1, 0xa2, 0x8c, 0x1f, 0x91, 0x8c, 0x92, 0x91, 0x1a, 0x13, 0x70, - 0xa4, 0x75, 0xa1, 0x71, 0x6e, 0x7a, 0x74, 0x6c, 0x4e, 0xc7, 0x70, 0xc0, - 0xf7, 0x17, 0xb2, 0xf3, 0xf5, 0xa8, 0x1e, 0xea, 0xf7, 0xde, 0x5, 0xd9, - 0xa2, 0x99, 0xb0, 0xc0, 0x1b, 0x9b, 0xfb, 0x92, 0x7, 0xe, 0xf7, 0xca, - 0xa0, 0x76, 0xf7, 0xe6, 0xb0, 0xf7, 0xaa, 0x77, 0x1, 0x92, 0xf9, 0x5f, - 0x3, 0x92, 0x16, 0xf7, 0x8c, 0x9b, 0x6, 0x52, 0x7e, 0x9d, 0xaa, 0x9a, - 0x91, 0x9e, 0x91, 0xa0, 0x1f, 0xc7, 0xf7, 0x6f, 0x93, 0x8a, 0xf7, 0x7, - 0xfb, 0x5a, 0x5, 0x9a, 0x70, 0x9f, 0x6c, 0x73, 0x1a, 0x73, 0x7b, 0x79, - 0x53, 0x1e, 0x7b, 0xf7, 0xa7, 0x9b, 0x7, 0x5d, 0x74, 0x92, 0xbc, 0x6f, - 0x1f, 0xfb, 0x42, 0xf7, 0xc3, 0xf7, 0xc0, 0xf7, 0x76, 0x5, 0x90, 0x92, - 0xb2, 0xaa, 0xa8, 0x1b, 0x9b, 0xfb, 0x72, 0x7b, 0x7, 0xbc, 0x97, 0x83, - 0x7a, 0x72, 0x3f, 0x4b, 0x47, 0x5b, 0x1f, 0xfb, 0x24, 0x26, 0x85, 0x8c, - 0xb7, 0xf7, 0x31, 0x5, 0xe0, 0xa3, 0xa5, 0x9f, 0xc5, 0x1b, 0xc4, 0xa, - 0xc3, 0xa0, 0x7b, 0x70, 0x7a, 0x87, 0x76, 0x84, 0x73, 0x1f, 0xfb, 0x7, - 0xfc, 0x2f, 0x5, 0x38, 0x74, 0x81, 0x75, 0x52, 0x1b, 0xe, 0x6e, 0xa, - 0x58, 0x59, 0x8b, 0xb2, 0x8f, 0x8b, 0x90, 0x8d, 0x91, 0x1f, 0xf7, 0xd, - 0xf8, 0x4f, 0x5, 0xcd, 0x9d, 0xa5, 0xb1, 0xcd, 0x1b, 0xc4, 0xa, 0xc7, - 0x9c, 0x79, 0x6e, 0x7b, 0x86, 0x77, 0x85, 0x75, 0x1f, 0xfb, 0xf, 0xfc, - 0x4e, 0x5, 0x4d, 0x7a, 0x6a, 0x7f, 0x6c, 0x1b, 0xe, 0xf8, 0x70, 0xcb, - 0xa, 0x79, 0xfa, 0xf, 0xfd, 0x61, 0xf7, 0x49, 0xf7, 0x20, 0xf7, 0xa5, - 0x3, 0x79, 0xe4, 0xa, 0x55, 0x7d, 0xa4, 0xab, 0xa1, 0x93, 0xa6, 0x92, - 0xa3, 0x1f, 0xf5, 0xf8, 0x1a, 0x5, 0x8f, 0x6, 0xc7, 0xfc, 0xac, 0x5, - 0x9c, 0x6, 0xf8, 0x8, 0xf8, 0xbd, 0x5, 0x8e, 0x6, 0xfb, 0xc, 0xfc, - 0x45, 0x5, 0x57, 0x7d, 0x86, 0x57, 0x32, 0x1b, 0xe6, 0xa, 0x4d, 0x7a, - 0x9d, 0xa6, 0x9c, 0x92, 0x9f, 0x91, 0xa1, 0x1f, 0xf7, 0xf, 0xf8, 0x4f, - 0x5, 0xca, 0x9c, 0xa8, 0x96, 0xaf, 0x1b, 0x9b, 0xfb, 0x3b, 0x7, 0xfb, - 0xe1, 0xfc, 0x7d, 0x5, 0x88, 0x6, 0x54, 0xf8, 0x7d, 0x5, 0xfb, 0x49, - 0x7b, 0x6, 0xc2, 0x9e, 0x79, 0x76, 0x82, 0x80, 0x6c, 0x80, 0x63, 0x1f, - 0x21, 0xfc, 0x8, 0x5, 0xfb, 0x8, 0x6a, 0x6b, 0x7d, 0x6a, 0x1b, 0xe, - 0xf7, 0xca, 0x91, 0x76, 0xaf, 0x76, 0xf7, 0x32, 0x77, 0xf8, 0x97, 0x77, - 0x12, 0xf7, 0x5a, 0xaa, 0x13, 0x78, 0x77, 0xe4, 0xa, 0x54, 0x7b, 0xa1, - 0xaa, 0xa9, 0x9a, 0xb0, 0x93, 0xaa, 0x1f, 0xee, 0xf7, 0xfe, 0x5, 0x8f, - 0x6, 0x13, 0xb8, 0xf7, 0x78, 0xfc, 0xb4, 0x5, 0x9d, 0x6, 0xf7, 0x24, - 0xf8, 0x8b, 0x5, 0xf7, 0xd, 0xae, 0xa0, 0xa7, 0xbb, 0x1b, 0xeb, 0xa, - 0x7b, 0x7, 0xc3, 0x9a, 0x77, 0x6d, 0x79, 0x7c, 0x5e, 0x81, 0x67, 0x1f, - 0x33, 0xfb, 0xde, 0x5, 0x88, 0x6, 0xfb, 0x62, 0xf8, 0x83, 0x5, 0xfb, - 0x35, 0x7b, 0x6, 0xb4, 0xa7, 0x78, 0x66, 0x9c, 0x1f, 0xfb, 0xb, 0xfc, - 0x35, 0x5, 0xfb, 0x16, 0x66, 0x75, 0x79, 0x5f, 0x1b, 0xe, 0xbf, 0xa, - 0x90, 0xa, 0xc7, 0xf7, 0x73, 0x15, 0xfb, 0x52, 0xf7, 0x1f, 0x58, 0xe0, - 0xf7, 0x74, 0xf7, 0x53, 0xf7, 0x86, 0xf7, 0x5d, 0xf7, 0x3c, 0x24, 0xd4, - 0xfb, 0xc, 0xfb, 0x47, 0xfb, 0x81, 0xfb, 0x72, 0xfb, 0x71, 0x1e, 0xf4, - 0x5d, 0x15, 0xf7, 0x16, 0xf7, 0x1, 0xf7, 0xda, 0xf7, 0x5a, 0xea, 0xa6, - 0x47, 0x30, 0xfb, 0xe, 0x30, 0xfb, 0xe5, 0xfb, 0x5f, 0xfb, 0x16, 0x86, - 0xf7, 0x1f, 0xa2, 0x1e, 0xe, 0x7d, 0xa, 0xf7, 0xc5, 0xaf, 0xf7, 0xae, - 0xa9, 0x1, 0xf8, 0x8a, 0xf2, 0x3, 0x8b, 0x4, 0xf7, 0x89, 0x9b, 0x6, - 0x59, 0x7d, 0x9d, 0xaa, 0x9d, 0x91, 0xa1, 0x92, 0xa4, 0x1f, 0xbb, 0xf7, - 0x4b, 0x5, 0x86, 0xa1, 0x99, 0x88, 0xd1, 0x1b, 0xf7, 0x5c, 0xc4, 0xf7, - 0xe, 0xd5, 0xf7, 0x2b, 0xfb, 0x3b, 0x8c, 0x5f, 0x1f, 0xfb, 0x8c, 0x7b, - 0x6, 0xc0, 0x9c, 0x79, 0x70, 0x76, 0x83, 0x6f, 0x83, 0x6f, 0x1f, 0x22, - 0xfc, 0x14, 0x5, 0x4b, 0x79, 0x7e, 0x58, 0x4b, 0x1b, 0xf7, 0x8f, 0xf7, - 0xdf, 0xd8, 0xa, 0x9b, 0xa9, 0x1b, 0xf7, 0x2, 0xa9, 0x61, 0x41, 0xfb, - 0x1f, 0x28, 0x70, 0x3a, 0x70, 0x72, 0x8e, 0x8e, 0x78, 0x1f, 0xe, 0xf8, - 0x1, 0xfb, 0x4a, 0xcf, 0x73, 0xf7, 0x2f, 0x6a, 0xac, 0xf8, 0xfc, 0xac, - 0x12, 0x86, 0xa, 0x13, 0x5c, 0xc6, 0xfb, 0x2e, 0x15, 0x95, 0x7c, 0x5, - 0xa4, 0xb2, 0xac, 0x91, 0xaa, 0x1b, 0xad, 0xac, 0x7e, 0x80, 0xb2, 0x1f, - 0x13, 0xbc, 0x81, 0xae, 0xb3, 0x81, 0xbc, 0x1b, 0xba, 0xf7, 0x28, 0xa5, - 0xf6, 0xd2, 0x1f, 0x7c, 0x96, 0x5, 0x62, 0x63, 0x4f, 0x68, 0x26, 0x1b, - 0x75, 0x72, 0x91, 0x92, 0x6f, 0x1f, 0x13, 0x3c, 0x5a, 0x98, 0x53, 0x9c, - 0x55, 0x89, 0xc8, 0xc4, 0x18, 0xae, 0xa, 0xf7, 0x82, 0x4f, 0xa, 0xfb, - 0x66, 0xfb, 0x71, 0xfb, 0x35, 0xeb, 0x44, 0xdb, 0x7c, 0x1f, 0x2a, 0x36, - 0x82, 0x85, 0x44, 0x58, 0x8, 0xf5, 0xf7, 0xeb, 0x15, 0xf7, 0x16, 0xef, - 0xf7, 0xce, 0xf7, 0x5a, 0xea, 0xaf, 0x45, 0x30, 0xfb, 0xe, 0x2b, 0xfb, - 0xe1, 0xfb, 0x5f, 0xfb, 0x16, 0x8b, 0xf7, 0x29, 0xa2, 0x1e, 0xe, 0x7d, - 0xa, 0xf7, 0xe1, 0xa7, 0xf7, 0x9a, 0xa9, 0x1, 0xf8, 0x77, 0xf4, 0x3, - 0x7e, 0x16, 0xf7, 0x88, 0x9b, 0x6, 0x5b, 0x78, 0x98, 0xaa, 0x9a, 0x8f, - 0xa0, 0x92, 0xa3, 0x1f, 0xc3, 0xf7, 0x65, 0xcc, 0x86, 0xf7, 0xf, 0xfb, - 0xd8, 0x5, 0xf7, 0x28, 0x9b, 0x6, 0x57, 0x74, 0xbb, 0xae, 0x7e, 0x1f, - 0x33, 0xf7, 0x7e, 0x5, 0xc1, 0xf7, 0x23, 0xc4, 0xf7, 0xb, 0xf7, 0x24, - 0xfb, 0x40, 0x8b, 0x67, 0x1f, 0xfb, 0x8c, 0x7b, 0x6, 0xbe, 0x9f, 0x7b, - 0x72, 0x79, 0x85, 0x74, 0x85, 0x74, 0x1f, 0xfb, 0x7, 0xfc, 0x30, 0x5, - 0x4c, 0x79, 0x80, 0x62, 0x4f, 0x1b, 0xf7, 0x94, 0xf7, 0xf2, 0x15, 0xcc, - 0xf7, 0x79, 0x5, 0x9d, 0x92, 0x8f, 0x95, 0xb8, 0x1b, 0xc4, 0xc9, 0x74, - 0x35, 0x40, 0x66, 0x3d, 0xfb, 0x24, 0x70, 0x83, 0x8c, 0x8f, 0x73, 0x1f, - 0xe, 0x79, 0xae, 0x76, 0xae, 0x72, 0x76, 0xf9, 0x1c, 0xac, 0x8c, 0x77, - 0x12, 0x13, 0x30, 0xb9, 0xa, 0x9c, 0x84, 0x83, 0x9f, 0x1f, 0x13, 0x90, - 0x81, 0xa4, 0xa8, 0x80, 0xb1, 0x6d, 0xa, 0x13, 0x48, 0xb3, 0xf7, 0x5b, - 0x5, 0x74, 0x6, 0x79, 0x7f, 0x78, 0x83, 0x74, 0x1b, 0x73, 0x7b, 0x94, - 0x92, 0x72, 0x1f, 0x13, 0x90, 0x90, 0x7b, 0x77, 0x8f, 0x70, 0x64, 0xa, - 0xe, 0xf7, 0x5b, 0xa0, 0x76, 0xf8, 0xfe, 0xae, 0x1, 0xcc, 0x16, 0xf7, - 0xb6, 0x9b, 0x6, 0x49, 0x77, 0x9e, 0xac, 0x9c, 0x91, 0xa0, 0x92, 0xa3, - 0x1f, 0xf7, 0x1a, 0xf8, 0x7c, 0x5, 0xf7, 0x12, 0xac, 0x85, 0x3c, 0x7f, - 0x8a, 0x7d, 0x89, 0x7c, 0x1f, 0x9c, 0x89, 0xb7, 0xf7, 0x37, 0x5, 0xfc, - 0xa8, 0x6, 0x61, 0xfb, 0x2e, 0x9d, 0x87, 0x5, 0xf7, 0xf, 0xc5, 0xbd, - 0x8b, 0xf7, 0x16, 0x1b, 0xfb, 0x17, 0xfc, 0x7c, 0x5, 0x49, 0x79, 0x60, - 0x5b, 0x51, 0x1b, 0xe, 0xaa, 0xa, 0x77, 0x1, 0xf1, 0xe5, 0xf8, 0xa, - 0xf7, 0x5b, 0x3, 0xf7, 0x13, 0xf9, 0x11, 0x15, 0xbe, 0xa2, 0x7b, 0x67, - 0x1f, 0x59, 0x28, 0xfb, 0xaf, 0x7c, 0xa, 0xf7, 0x3d, 0xc5, 0xf7, 0x0, - 0xf7, 0x29, 0xb7, 0x1e, 0xee, 0xf7, 0xe3, 0x5, 0x9d, 0x90, 0xa7, 0xb8, - 0xba, 0x1b, 0xeb, 0xa, 0x7b, 0x7, 0xae, 0xaa, 0x7a, 0x5f, 0x79, 0x3d, - 0xfb, 0xb2, 0x83, 0x6c, 0x1f, 0x26, 0x6f, 0x56, 0xfb, 0x9, 0xfb, 0x1a, - 0x1b, 0x4b, 0x40, 0xab, 0xe4, 0xc1, 0xef, 0xf7, 0xea, 0x9a, 0xb8, 0x1f, - 0xaf, 0x97, 0xb0, 0x9b, 0xb7, 0x1b, 0xd2, 0xa, 0xe, 0xf7, 0x92, 0x8e, - 0x76, 0xf9, 0x33, 0x77, 0x1, 0xd7, 0xf8, 0xf8, 0x3, 0xf7, 0x84, 0x79, - 0x15, 0x9e, 0x6, 0xf7, 0xca, 0xf8, 0x94, 0x5, 0x95, 0x91, 0xca, 0xf7, - 0x19, 0xbd, 0x1b, 0x9b, 0xfb, 0x4e, 0x7b, 0x7, 0xb4, 0x9c, 0x75, 0x79, - 0x69, 0x6e, 0x5b, 0x7d, 0x73, 0x1f, 0xfb, 0x62, 0xfb, 0xf8, 0x5, 0x86, - 0x6, 0x4e, 0xf7, 0xfb, 0x5, 0x87, 0xa1, 0x85, 0xa6, 0xa3, 0x1a, 0xb1, - 0x9c, 0xab, 0xcc, 0x1e, 0x9b, 0xfb, 0x85, 0x7b, 0x7, 0xbc, 0x8e, 0x75, - 0xfb, 0xf, 0x9f, 0x1f, 0xe, 0xf8, 0x70, 0x8e, 0x76, 0xf9, 0x33, 0x77, - 0x1, 0xd2, 0xf9, 0xd7, 0x3, 0xf7, 0x68, 0x79, 0x15, 0x9e, 0x6, 0xf7, - 0x72, 0xf8, 0x5a, 0x5, 0x90, 0x6, 0xbd, 0xfc, 0x5a, 0x5, 0x9f, 0x6, - 0xf7, 0xc0, 0xf8, 0xd1, 0x5, 0xbf, 0xa6, 0xa9, 0xa9, 0xa0, 0x1b, 0x9b, - 0xfb, 0x4d, 0x7b, 0x7, 0xbe, 0x99, 0x73, 0x75, 0x79, 0x84, 0x7a, 0x89, - 0x87, 0x1f, 0xfb, 0x58, 0xfc, 0x15, 0x5, 0x88, 0x6, 0x5c, 0xf8, 0x24, - 0x5, 0x8f, 0x8b, 0x90, 0x8f, 0x1a, 0xaa, 0xb2, 0xa5, 0xae, 0x1e, 0x9b, - 0xfb, 0x82, 0x7b, 0x7, 0xc7, 0x97, 0x74, 0x5e, 0x90, 0x1f, 0x92, 0x50, - 0xfb, 0x3e, 0xfb, 0xeb, 0x5, 0x88, 0x6, 0x87, 0xa9, 0x61, 0xf7, 0xfd, - 0x5, 0x8a, 0x93, 0x8b, 0x92, 0x91, 0x1a, 0xb4, 0xb8, 0x9c, 0xaa, 0x1e, - 0x9b, 0xfb, 0x80, 0x7b, 0x7, 0xc1, 0x98, 0x5f, 0x69, 0x8f, 0x1f, 0xe, - 0xf7, 0x92, 0xcb, 0xa, 0x6e, 0xf9, 0x40, 0x3, 0x6e, 0x16, 0xf7, 0x6a, - 0x9b, 0x6, 0x61, 0x75, 0x9a, 0xa0, 0x98, 0x91, 0x9a, 0x99, 0x9c, 0x1f, - 0xf7, 0x2b, 0xf7, 0x40, 0xd3, 0xfb, 0x47, 0x5, 0x8f, 0x81, 0x8d, 0x81, - 0x82, 0x1a, 0x73, 0x79, 0x76, 0x51, 0x1e, 0xe6, 0xa, 0x60, 0x67, 0x95, - 0xcb, 0x72, 0x1f, 0x25, 0xf7, 0x96, 0xf7, 0x4d, 0xf7, 0x68, 0x5, 0xbe, - 0xb8, 0xc0, 0xa5, 0x96, 0x1b, 0x9b, 0xfb, 0x64, 0x7b, 0x7, 0xb4, 0x9e, - 0x7d, 0x78, 0x7e, 0x85, 0x7b, 0x7e, 0x7c, 0x1f, 0xfb, 0x25, 0xfb, 0x3b, - 0x50, 0xf7, 0x27, 0x5, 0x82, 0xa0, 0x86, 0x9e, 0x9b, 0x1a, 0xa4, 0xa1, - 0x9b, 0xbb, 0x1e, 0x9b, 0xfb, 0x9c, 0x7b, 0x7, 0xc2, 0xa2, 0x76, 0x3f, - 0xa9, 0x1f, 0xe5, 0xfb, 0x77, 0xfb, 0x32, 0xfb, 0x4c, 0x7d, 0x7c, 0x7a, - 0x7a, 0x19, 0x53, 0x53, 0x62, 0x72, 0x7a, 0x1b, 0xe, 0xf7, 0x5b, 0xcb, - 0xa, 0xcf, 0xa, 0x58, 0x6d, 0x99, 0xb3, 0x94, 0x8c, 0x95, 0x8e, 0x97, - 0x1f, 0xc1, 0xf7, 0x61, 0xf7, 0x6f, 0xf7, 0xa2, 0x5, 0xb3, 0xab, 0xa9, - 0xa0, 0x93, 0x1b, 0xe8, 0xa, 0xaa, 0xa7, 0x7d, 0x72, 0x83, 0x89, 0x83, - 0x87, 0x81, 0x1f, 0x7a, 0x64, 0xfb, 0x2, 0xfb, 0x16, 0x5e, 0x53, 0x73, - 0xe7, 0x6a, 0xf5, 0x85, 0xa5, 0x8, 0x89, 0x92, 0x8b, 0x90, 0x91, 0x1a, - 0xaa, 0xaf, 0x9c, 0xad, 0xcd, 0xa, 0xaf, 0xa3, 0x82, 0x52, 0x9b, 0x1f, - 0xd8, 0xfb, 0xa1, 0x52, 0xfb, 0x5e, 0x5, 0x49, 0x78, 0x55, 0x79, 0x67, - 0x1b, 0xe, 0xf7, 0x5b, 0x8b, 0xaf, 0xf8, 0xd9, 0xaf, 0x50, 0xa, 0xe, - 0xe1, 0xa, 0xa0, 0xf8, 0x6, 0x3, 0xa0, 0xfb, 0x2d, 0x15, 0xf7, 0x50, - 0x6, 0x92, 0xa6, 0x5, 0x5d, 0x6, 0x6b, 0x68, 0x92, 0xb5, 0x97, 0x1f, - 0xf7, 0x34, 0xf9, 0x3a, 0x5, 0xa6, 0x91, 0xa3, 0x93, 0xa6, 0x1b, 0xbf, - 0x6, 0x92, 0xa6, 0x5, 0xfb, 0x41, 0x6, 0xe, 0x3c, 0xfb, 0x13, 0x76, - 0xf7, 0x20, 0x76, 0xf9, 0x4b, 0x77, 0x1, 0x54, 0xf8, 0xb, 0x3, 0xf7, - 0x6b, 0xfb, 0x28, 0x15, 0xad, 0x6, 0xfb, 0x41, 0xf9, 0xc2, 0x5, 0x66, - 0x6, 0xe, 0xe1, 0xa, 0x97, 0xf8, 0x6, 0x3, 0x9e, 0xfb, 0x12, 0x15, - 0x84, 0x70, 0x5, 0xf7, 0x41, 0x6, 0xf7, 0x59, 0xf9, 0xc4, 0x5, 0xfb, - 0x51, 0x6, 0x84, 0x70, 0x5, 0xba, 0x6, 0xaa, 0xad, 0x86, 0x60, 0x81, - 0x1f, 0xfb, 0x35, 0xfd, 0x3a, 0x5, 0x79, 0x87, 0x7d, 0x79, 0x65, 0x1b, - 0xe, 0xcc, 0xf9, 0x2e, 0x77, 0xa2, 0x76, 0x12, 0xf7, 0x49, 0xf7, 0x41, - 0x13, 0x60, 0xf7, 0xc1, 0x4, 0x13, 0xa0, 0xcf, 0x6, 0xf7, 0x23, 0xf7, - 0xb2, 0xf7, 0x23, 0xfb, 0xb2, 0x5, 0xcf, 0x6, 0xfb, 0x49, 0xf8, 0x1, - 0x5, 0x4f, 0x6, 0xe, 0xfb, 0x11, 0xbd, 0x1, 0x94, 0x40, 0x15, 0x82, - 0x59, 0x5, 0xf8, 0x80, 0x6, 0x93, 0xbd, 0x5, 0xe, 0x73, 0xf8, 0x95, - 0x76, 0xf7, 0x40, 0x77, 0x1, 0xf7, 0xac, 0xf8, 0x80, 0xb7, 0xa, 0xfb, - 0x3, 0xf7, 0x22, 0xc5, 0xa, 0x79, 0x92, 0x56, 0xa, 0x9e, 0x7a, 0x80, - 0xa, 0x80, 0xbc, 0xf8, 0x11, 0xa1, 0x12, 0x9c, 0xdf, 0xf7, 0x58, 0xd4, - 0x8b, 0x99, 0x17, 0xf7, 0xd2, 0xf7, 0x1f, 0x61, 0xa, 0x70, 0xb5, 0xb6, - 0xad, 0xb0, 0xd5, 0xc7, 0x1e, 0x13, 0xf8, 0x38, 0xa, 0x45, 0x8a, 0x7a, - 0x4f, 0x5, 0x89, 0x6, 0xa7, 0x6d, 0xaf, 0x5f, 0xa, 0x36, 0xa, 0xa8, - 0xa1, 0x6e, 0x5b, 0x29, 0x2f, 0xfb, 0x62, 0x21, 0x70, 0x6a, 0x9d, 0xc0, - 0x1e, 0xe, 0x80, 0xa2, 0x7f, 0xa2, 0xf8, 0x5, 0xbc, 0x91, 0xbc, 0xf7, - 0x4f, 0x77, 0x12, 0xa2, 0xe1, 0xf7, 0xab, 0xe0, 0x13, 0x7e, 0xf7, 0x1, - 0xb8, 0x15, 0xf4, 0xeb, 0xf7, 0x86, 0xf7, 0x2, 0xca, 0x95, 0x55, 0x6c, - 0x1e, 0x13, 0xbe, 0x37, 0x2c, 0xfb, 0x67, 0xfb, 0x1d, 0x5c, 0x8b, 0xa5, - 0x92, 0x1e, 0x8c, 0xf8, 0xea, 0x15, 0xb8, 0x9c, 0x7e, 0x76, 0x7b, 0x85, - 0x75, 0x84, 0x73, 0x1f, 0xfb, 0x1c, 0xfc, 0x89, 0x5, 0x87, 0x7, 0x75, - 0xd8, 0x6c, 0xc0, 0xf7, 0x2d, 0xf7, 0x3b, 0xf7, 0x41, 0xf7, 0x32, 0xd4, - 0x5a, 0xbb, 0x45, 0x31, 0x50, 0x38, 0x57, 0x6a, 0x1e, 0x89, 0x8c, 0xad, - 0xf7, 0x5, 0xb5, 0xf7, 0x44, 0xa1, 0xdd, 0x19, 0x86, 0x90, 0x57, 0x81, - 0x58, 0x84, 0x59, 0x85, 0x19, 0xe, 0xe2, 0x80, 0xaf, 0xf8, 0x1f, 0xa0, - 0x1, 0xa9, 0xe1, 0xf7, 0x72, 0xe2, 0x3, 0xf7, 0xf2, 0xf5, 0x15, 0x63, - 0x67, 0x5c, 0x62, 0x4f, 0x1b, 0x4e, 0x6d, 0xb8, 0xd8, 0xeb, 0xd0, 0xdb, - 0xa, 0x84, 0x89, 0x85, 0x88, 0x84, 0x1f, 0x87, 0x80, 0x85, 0x7f, 0x7b, - 0xa3, 0xa, 0xfb, 0x1e, 0xfb, 0x2d, 0xfb, 0x21, 0xfb, 0x19, 0xde, 0x72, - 0xcc, 0xf4, 0xc5, 0xd6, 0xab, 0xa4, 0x1e, 0xe, 0x7f, 0xbb, 0x6f, 0x76, - 0xf8, 0x8a, 0xa2, 0xd3, 0x77, 0x12, 0x9a, 0xe2, 0x13, 0xb8, 0xf1, 0xf7, - 0x3, 0x15, 0xe6, 0xea, 0xf7, 0x69, 0xf7, 0x4, 0xba, 0x8b, 0x62, 0x74, - 0xfb, 0x10, 0x29, 0xfb, 0x53, 0x2c, 0x4e, 0x8b, 0xc5, 0x9c, 0x1e, 0xf7, - 0x59, 0x8e, 0x15, 0x83, 0x68, 0x87, 0x74, 0x74, 0x1a, 0x13, 0x78, 0x76, - 0x93, 0x72, 0xb2, 0xac, 0xcc, 0xba, 0xce, 0xb6, 0x1e, 0x7f, 0x95, 0x5, - 0x5b, 0x61, 0x77, 0x74, 0x77, 0x1b, 0x81, 0x83, 0x92, 0x9a, 0x9b, 0xf7, - 0xd, 0xf8, 0x3e, 0xb6, 0xf7, 0x42, 0x1f, 0x86, 0x90, 0x58, 0x80, 0x58, - 0x84, 0x58, 0x86, 0x19, 0x7a, 0x7, 0xb3, 0x9a, 0x7c, 0x72, 0x79, 0x85, - 0x74, 0x84, 0x72, 0x1f, 0x65, 0xfb, 0x29, 0x89, 0x89, 0x5, 0xa1, 0x87, - 0x84, 0xa9, 0x53, 0x1b, 0x13, 0x38, 0xfb, 0xb, 0xfb, 0x3e, 0xfb, 0x48, - 0xfb, 0x2b, 0x1f, 0x13, 0xb8, 0x57, 0xa0, 0x48, 0xde, 0xbd, 0xc3, 0x9d, - 0xf7, 0x2, 0xd3, 0x1e, 0xe, 0xe2, 0x80, 0xb8, 0xf8, 0x14, 0xa2, 0x12, - 0xaa, 0xe2, 0xf7, 0x78, 0xcd, 0x17, 0xf7, 0x17, 0xf7, 0x5a, 0x15, 0xa0, - 0xc1, 0x5, 0xe5, 0xae, 0xd1, 0xd7, 0xc1, 0x1b, 0xa4, 0x95, 0x6e, 0x76, - 0x83, 0x82, 0xfb, 0xc, 0xfb, 0x62, 0x61, 0x1f, 0x84, 0x75, 0x15, 0xf7, - 0x52, 0xa0, 0xed, 0xe2, 0xda, 0x1a, 0xb7, 0x6c, 0xad, 0x58, 0x1e, 0x13, - 0xa0, 0xfb, 0x21, 0xfb, 0x32, 0x5c, 0xa, 0x1f, 0x73, 0xa, 0x61, 0x57, - 0xa2, 0xcf, 0x9f, 0x8c, 0x95, 0x90, 0xa0, 0x1f, 0xe, 0x3c, 0xfb, 0x63, - 0xa0, 0xf8, 0xd0, 0xab, 0xf7, 0x82, 0xa1, 0x12, 0xf7, 0xed, 0xda, 0x13, - 0xe0, 0xa9, 0xf8, 0x16, 0x15, 0xe5, 0x6, 0x38, 0xfc, 0x2e, 0x5, 0x63, - 0x83, 0x71, 0xfb, 0xe, 0x4b, 0x1b, 0x7f, 0x84, 0x93, 0x93, 0x8f, 0x8c, - 0x8e, 0x8d, 0x8e, 0x1f, 0x8e, 0x8f, 0x8e, 0x8f, 0x95, 0x1a, 0xa4, 0x71, - 0x97, 0x7d, 0x68, 0x8a, 0x63, 0x88, 0x1e, 0x13, 0xf0, 0x65, 0xb7, 0x76, - 0xad, 0xf7, 0x9, 0xc4, 0xf7, 0x35, 0xf7, 0xe, 0xa6, 0x1e, 0xce, 0xf7, - 0xca, 0x5, 0xf7, 0x1, 0x6, 0x91, 0xab, 0x5, 0xfb, 0x0, 0x6, 0xbe, - 0x94, 0xae, 0xf7, 0x4f, 0xdd, 0x1b, 0x98, 0x95, 0x87, 0x83, 0x86, 0x89, - 0x88, 0x89, 0x88, 0x1f, 0x88, 0x87, 0x88, 0x85, 0x7f, 0x1a, 0x80, 0x91, - 0x70, 0xab, 0xa2, 0x9d, 0x9f, 0x9f, 0x9f, 0x7b, 0xb8, 0x43, 0xfb, 0x12, - 0x54, 0xfb, 0x43, 0x36, 0x71, 0x1e, 0x2f, 0x6, 0xe, 0xfb, 0x52, 0xa1, - 0xf7, 0xd3, 0xa0, 0xf7, 0x8b, 0xa1, 0x12, 0x93, 0xcc, 0xa2, 0xd9, 0xf7, - 0x2b, 0xc7, 0x6a, 0xda, 0x13, 0xfc, 0xf7, 0x11, 0xb2, 0x15, 0x37, 0x54, - 0x6a, 0x75, 0x52, 0x1a, 0x54, 0xc0, 0x53, 0xf7, 0x1, 0xf7, 0x1d, 0xd9, - 0xc8, 0xe0, 0xc6, 0x64, 0xaa, 0x5f, 0x9f, 0x1e, 0x4f, 0xa6, 0x45, 0x93, - 0xa9, 0x1a, 0x98, 0xa1, 0xa6, 0x99, 0x1e, 0x98, 0x99, 0x87, 0x98, 0x1b, - 0x13, 0xfa, 0xe3, 0xea, 0xdd, 0xd5, 0x9f, 0x88, 0x9f, 0x85, 0x9e, 0x1f, - 0xbd, 0x6, 0x13, 0xa8, 0xb2, 0x4e, 0x7, 0x7c, 0x60, 0xaf, 0x50, 0x1b, - 0x39, 0xfb, 0x8, 0x51, 0xfb, 0x4, 0x46, 0xb6, 0x73, 0xaf, 0x7b, 0x1f, - 0x69, 0x74, 0x60, 0x6e, 0x6c, 0x1a, 0x78, 0x9a, 0x7f, 0x97, 0x82, 0x1e, - 0xa1, 0x80, 0x15, 0x92, 0x8e, 0xed, 0x63, 0x9d, 0x82, 0x8, 0x13, 0xfc, - 0x9e, 0x82, 0xaf, 0x7a, 0x5e, 0x1a, 0x59, 0x5a, 0x5e, 0x31, 0x7c, 0x2a, - 0x9a, 0xdd, 0x8a, 0x1e, 0xb1, 0x99, 0xbf, 0xc7, 0xa4, 0x1e, 0xa6, 0xf7, - 0x72, 0x15, 0x13, 0xa0, 0xce, 0xb7, 0xf1, 0xd8, 0x1e, 0x13, 0xfa, 0xb5, - 0x9a, 0x6e, 0x64, 0x38, 0x59, 0x2b, 0x49, 0x5e, 0x7a, 0xac, 0xb8, 0x1f, - 0xe, 0xbe, 0xa, 0xf7, 0x86, 0x77, 0x12, 0xf8, 0x6, 0xd9, 0x13, 0x70, - 0x9e, 0x16, 0xd6, 0x6, 0xac, 0xf7, 0x12, 0x99, 0xc2, 0xb9, 0xcf, 0x8, - 0xa7, 0x9e, 0xe0, 0xf7, 0x5, 0xbd, 0x1b, 0x9b, 0x98, 0x81, 0x7a, 0x1f, - 0x7e, 0x39, 0xfb, 0xb3, 0x71, 0x1a, 0x13, 0xb0, 0x70, 0x98, 0x78, 0xab, - 0xcd, 0xb6, 0xc9, 0xbf, 0xaf, 0x1e, 0x13, 0x10, 0x7e, 0x97, 0x5, 0x5b, - 0x65, 0x73, 0x6c, 0x77, 0x1b, 0x83, 0x83, 0x92, 0x97, 0x1f, 0x13, 0x38, - 0xa0, 0xdc, 0xf7, 0x94, 0xae, 0x1a, 0xcc, 0x5d, 0x92, 0x75, 0x31, 0x25, - 0xfb, 0x2e, 0x59, 0x6c, 0x1e, 0x89, 0x8d, 0xf7, 0xa, 0xf8, 0x4b, 0x86, - 0x90, 0x57, 0x7f, 0x56, 0x82, 0x57, 0x85, 0x19, 0x7b, 0x7, 0xb7, 0x9c, - 0x94, 0x4f, 0x81, 0x7a, 0x51, 0x83, 0x6d, 0x1f, 0xe, 0xd7, 0xa, 0xf8, - 0xc4, 0xf4, 0x12, 0xbc, 0xd6, 0xb0, 0xf2, 0x17, 0xf7, 0x72, 0xf7, 0x6, - 0x4a, 0xa, 0xe7, 0xf7, 0xe4, 0x1f, 0x88, 0x8d, 0x5, 0x84, 0x64, 0x32, - 0x79, 0x6b, 0x1b, 0x13, 0xf0, 0x7b, 0x7, 0xc2, 0x8f, 0x7c, 0x76, 0x1f, - 0x6f, 0x40, 0x4b, 0xa, 0x41, 0xf8, 0x86, 0x15, 0x6e, 0xa0, 0x85, 0xa, - 0x76, 0x73, 0x6e, 0x1e, 0xe, 0x3c, 0xfb, 0x63, 0xa2, 0x74, 0xf2, 0xf9, - 0x24, 0xf1, 0x12, 0xfb, 0x10, 0xdc, 0xf7, 0x6d, 0xf1, 0x13, 0xb8, 0xd4, - 0xf8, 0x24, 0x15, 0xc7, 0x8c, 0x99, 0x8c, 0x61, 0x1a, 0x33, 0xfb, 0xff, - 0x5, 0x3e, 0x78, 0x72, 0x23, 0x58, 0x1b, 0x82, 0x80, 0x8c, 0x95, 0x91, - 0x8e, 0x8e, 0x8e, 0x8f, 0x1f, 0x8e, 0x8f, 0x8f, 0x90, 0x96, 0x1a, 0x13, - 0x78, 0xa0, 0x77, 0x9a, 0x77, 0x66, 0x87, 0x68, 0x87, 0x5a, 0xb8, 0x7c, - 0xac, 0xe4, 0xc5, 0xd6, 0xf7, 0x34, 0xb4, 0x1e, 0xf3, 0xf8, 0x2f, 0x88, - 0x8d, 0x5, 0x84, 0x64, 0x2b, 0x79, 0x68, 0x1b, 0xf0, 0xf7, 0x4f, 0x15, - 0x6f, 0xa2, 0x74, 0xa7, 0xa7, 0xa2, 0xa2, 0xa7, 0xa7, 0x74, 0xa2, 0x6f, - 0x6f, 0x74, 0x74, 0x6f, 0x1e, 0xe, 0xe2, 0x95, 0x76, 0xab, 0x76, 0xf9, - 0x24, 0x77, 0xba, 0x77, 0x12, 0x99, 0xf8, 0x53, 0x13, 0x70, 0x99, 0x16, - 0xd6, 0x6, 0xbb, 0xf7, 0x48, 0xb5, 0xab, 0x95, 0x6d, 0xb1, 0x33, 0x97, - 0x74, 0x19, 0x13, 0xb0, 0x50, 0xa9, 0x9d, 0x74, 0xaa, 0x1b, 0xb7, 0xa8, - 0xb0, 0xd3, 0xb1, 0x1f, 0x7c, 0x96, 0x5, 0x59, 0x6e, 0x81, 0x79, 0x75, - 0x1b, 0x71, 0x78, 0xb9, 0xf7, 0x3f, 0x43, 0x1f, 0xf7, 0xe, 0xf7, 0x1e, - 0xb5, 0xab, 0xb8, 0x1b, 0x13, 0x38, 0x9b, 0xfb, 0x4b, 0x7b, 0x7, 0xa6, - 0xa7, 0x8b, 0x78, 0x6c, 0xfb, 0x14, 0x2b, 0x54, 0x60, 0x1f, 0x89, 0x8d, - 0xf7, 0xb, 0xf8, 0x59, 0x86, 0x90, 0x5, 0x7f, 0x57, 0x36, 0x7c, 0x78, - 0x1b, 0x13, 0x0, 0x7b, 0x7, 0xa5, 0xb2, 0x82, 0x71, 0x7c, 0x73, 0x3a, - 0x82, 0x67, 0x1f, 0xe, 0x3c, 0x8f, 0x76, 0xf9, 0x35, 0x77, 0xba, 0x77, - 0x12, 0xb4, 0xd8, 0x17, 0xf7, 0x78, 0xd3, 0xa, 0x7c, 0x8b, 0x99, 0x91, - 0x96, 0x93, 0xa6, 0x8d, 0x94, 0x1f, 0xf7, 0x2b, 0xf8, 0xd7, 0x86, 0x90, - 0x5, 0x7f, 0x57, 0x3d, 0x7c, 0x71, 0x1b, 0x13, 0x90, 0x7b, 0x7, 0xa5, - 0xb1, 0x82, 0x71, 0x1f, 0x76, 0xfb, 0x21, 0xfc, 0x94, 0x76, 0xb5, 0xa, - 0xf8, 0x1, 0x97, 0x76, 0xa9, 0x76, 0xf8, 0x19, 0xbf, 0x12, 0x13, 0x60, - 0x97, 0x16, 0xd6, 0x6, 0xb0, 0xf7, 0xe, 0x9f, 0xcd, 0xb3, 0xc7, 0x8, - 0xb3, 0xa6, 0xd7, 0xf0, 0xb8, 0x1b, 0x94, 0x98, 0x8b, 0x70, 0x78, 0x46, - 0xfb, 0x8a, 0x71, 0x2a, 0x1f, 0xd6, 0x6, 0xa8, 0xf7, 0x5, 0x9c, 0xca, - 0xbb, 0xd7, 0x8, 0xbc, 0xaa, 0xd3, 0xe3, 0xb4, 0x1b, 0x97, 0x94, 0x83, - 0x7c, 0x1f, 0x77, 0x3d, 0xfb, 0xab, 0x70, 0x1a, 0x13, 0xa0, 0x7d, 0x8b, - 0x68, 0xb5, 0xc3, 0xbd, 0xc3, 0xc5, 0xb4, 0x1e, 0x7c, 0x97, 0x5, 0x5c, - 0x65, 0x71, 0x6b, 0x78, 0x1b, 0x7f, 0x88, 0x8e, 0x9c, 0x1f, 0x99, 0xdc, - 0xf7, 0xa0, 0xad, 0x1a, 0xb3, 0x74, 0xa6, 0x67, 0x49, 0x3a, 0x33, 0xfb, - 0x8, 0x45, 0x1e, 0x89, 0x8d, 0x5, 0x99, 0xb3, 0xa2, 0xde, 0x99, 0x1a, - 0xb5, 0x76, 0xa2, 0x65, 0x37, 0x24, 0xfb, 0x2f, 0x5a, 0x6d, 0x1e, 0x89, - 0x8d, 0xc3, 0xf7, 0x5a, 0x88, 0x8f, 0x56, 0x80, 0x56, 0x81, 0x55, 0x81, - 0x19, 0x13, 0x0, 0x7b, 0x7, 0xbc, 0x96, 0x75, 0x75, 0x1f, 0x13, 0x60, - 0x75, 0x3d, 0xfb, 0x9a, 0x7b, 0x49, 0x1e, 0xe, 0xbe, 0xa, 0x12, 0xf7, - 0xfd, 0xdc, 0x13, 0x70, 0x89, 0xa, 0x13, 0x90, 0xc3, 0xa, 0x13, 0xb0, - 0x51, 0xa, 0x13, 0x0, 0x7b, 0x7, 0xc1, 0x93, 0x76, 0x7c, 0x1f, 0x13, - 0x70, 0x76, 0x4a, 0xfb, 0x74, 0x6c, 0xfb, 0x5, 0x1e, 0xe, 0x80, 0xa0, - 0xf8, 0x2e, 0xa0, 0x92, 0xa, 0xa6, 0xf7, 0x1b, 0x15, 0x38, 0xba, 0x4c, - 0xf5, 0xf7, 0x2d, 0xf7, 0x1b, 0xf7, 0x47, 0xf7, 0xf, 0xcd, 0x6a, 0xdf, - 0xfb, 0x8, 0xfb, 0x26, 0xfb, 0x26, 0xfb, 0x33, 0xfb, 0x27, 0x1e, 0xdf, - 0x6d, 0x15, 0xf7, 0xa, 0xe4, 0xf7, 0x59, 0xf7, 0x4, 0xbb, 0xa3, 0x5d, - 0x57, 0x20, 0x3e, 0xfb, 0x61, 0xfb, 0x6, 0x59, 0x6b, 0xb1, 0xc4, 0x1e, - 0xe, 0xfb, 0x48, 0x76, 0xf7, 0x67, 0x76, 0xf8, 0x2d, 0xb6, 0x48, 0xa, - 0x73, 0x1f, 0x89, 0x8d, 0xa6, 0xe8, 0x5, 0x96, 0x8e, 0x88, 0x8d, 0x88, - 0x1b, 0xfb, 0x2f, 0x75, 0x5, 0x13, 0x80, 0x8d, 0x7b, 0x5, 0xb9, 0x9e, - 0x81, 0x79, 0x76, 0x29, 0xfb, 0xfe, 0x70, 0xfb, 0x4, 0x1f, 0x6b, 0x83, - 0x81, 0xda, 0xa, 0x61, 0x75, 0x8b, 0xd1, 0x94, 0x1f, 0x8e, 0x9f, 0x9b, - 0xd3, 0x94, 0xad, 0x8, 0xe, 0xfb, 0x50, 0x76, 0xf7, 0x5a, 0xc0, 0xf8, - 0xd, 0xa1, 0x1, 0xa4, 0xe1, 0xf7, 0xa1, 0x99, 0x3, 0xf7, 0x2a, 0xfb, - 0x55, 0x15, 0x7b, 0xf7, 0x85, 0x9d, 0x7, 0x6e, 0x5c, 0x9a, 0xb5, 0x97, - 0x1f, 0xf7, 0x30, 0xf8, 0xc4, 0x5, 0x42, 0x6, 0x7d, 0x5f, 0x5, 0x89, - 0x6, 0xa5, 0x85, 0x7b, 0xac, 0x53, 0x1b, 0xfb, 0x16, 0xfb, 0x35, 0xfb, - 0x52, 0xfb, 0x1d, 0x47, 0xa5, 0x52, 0xd8, 0xe4, 0xc5, 0xdc, 0xd8, 0xc0, - 0x1f, 0x8d, 0x89, 0x3b, 0xfb, 0xa7, 0x5, 0x5e, 0x7d, 0x6c, 0x79, 0x54, - 0x1b, 0x64, 0xf7, 0xc9, 0x15, 0xf7, 0x8, 0xf7, 0x8, 0xf7, 0x4f, 0xe8, - 0xaa, 0xa8, 0x76, 0x5e, 0x29, 0xfb, 0x0, 0xfb, 0x69, 0x22, 0x68, 0x76, - 0xaa, 0xb6, 0x1e, 0xe, 0xab, 0xa0, 0x76, 0xf8, 0x4d, 0x77, 0x1, 0xb8, - 0xf8, 0x3, 0x3, 0xb8, 0x16, 0xd7, 0x6, 0xb4, 0xf7, 0x19, 0x99, 0xb8, - 0xb1, 0xd3, 0x8, 0x9a, 0x93, 0xc7, 0xf7, 0x3, 0xaa, 0x1b, 0x97, 0x8d, - 0x83, 0x82, 0x8f, 0x1f, 0x82, 0x90, 0x92, 0x81, 0xa1, 0x1b, 0x96, 0xaf, - 0x8b, 0xbf, 0xad, 0x72, 0x9a, 0x74, 0x4c, 0x39, 0xfb, 0x6, 0x46, 0x70, - 0x1f, 0x83, 0x77, 0x89, 0x8d, 0xbc, 0xf7, 0x5b, 0x88, 0x8d, 0x5, 0x84, - 0x5b, 0x2f, 0x77, 0x7c, 0x1b, 0x7a, 0x7, 0x8d, 0x96, 0x96, 0x8e, 0x96, - 0x1b, 0xa3, 0x94, 0x7a, 0x73, 0x73, 0x83, 0x6d, 0x84, 0x72, 0x1f, 0xe, - 0xab, 0x80, 0xa0, 0x89, 0x76, 0xf8, 0x43, 0xa2, 0x8c, 0x77, 0x12, 0xf7, - 0x1, 0xd4, 0xb9, 0xd7, 0x13, 0x6c, 0xc2, 0xa, 0x9a, 0x9a, 0x86, 0x86, - 0x9a, 0x1f, 0x13, 0xac, 0x86, 0x9a, 0x99, 0x87, 0x9a, 0x1b, 0xc3, 0xe8, - 0xa4, 0xf7, 0x1, 0xb3, 0x70, 0xb5, 0x6e, 0xb2, 0x1f, 0x6b, 0xb6, 0x69, - 0xb3, 0xac, 0x1a, 0xbc, 0xab, 0x94, 0xa1, 0xcc, 0xa8, 0x49, 0x5a, 0x1e, - 0x9b, 0x6, 0x13, 0x9c, 0xbb, 0xa, 0x7d, 0x82, 0x8e, 0x8f, 0x80, 0x1f, - 0x13, 0xac, 0x90, 0x7e, 0x7d, 0x90, 0x73, 0x1b, 0x21, 0x7d, 0x3b, 0x6c, - 0x65, 0xa8, 0x60, 0xa9, 0x61, 0x1f, 0xa9, 0x61, 0xa9, 0x62, 0x6a, 0xb4, - 0xa, 0xe, 0xd7, 0xa, 0xf8, 0x20, 0xab, 0xf7, 0x15, 0x77, 0x1, 0xb0, - 0xf7, 0x97, 0x3, 0xf7, 0x6a, 0xf7, 0x9, 0x15, 0x6b, 0x72, 0x68, 0x5c, - 0x77, 0x1b, 0x86, 0x80, 0x8e, 0x97, 0x97, 0xa6, 0xeb, 0xc7, 0xf7, 0x74, - 0x1f, 0xe1, 0x6, 0x90, 0xab, 0x5, 0x39, 0x6, 0xa9, 0xf7, 0x6, 0x5, - 0x93, 0x8d, 0x89, 0x92, 0x84, 0x1b, 0x82, 0x87, 0x84, 0x86, 0x87, 0x1f, - 0x6f, 0x68, 0x58, 0x53, 0x6b, 0x7a, 0x8, 0x6b, 0x7a, 0x75, 0x91, 0x6d, - 0x1a, 0xd6, 0x6, 0x45, 0xfb, 0x9c, 0x5, 0x87, 0x7b, 0x78, 0x4e, 0x7c, - 0x1a, 0x6d, 0xa7, 0x81, 0x9f, 0xbf, 0xb2, 0xb7, 0xd8, 0xbe, 0x1e, 0xe, - 0x82, 0xbe, 0x6b, 0x76, 0xf8, 0x58, 0xa9, 0xa, 0xd9, 0x13, 0xa0, 0xf7, - 0xe0, 0xf7, 0x77, 0x15, 0x13, 0xb8, 0x4d, 0xa, 0x72, 0xa, 0x80, 0x8a, - 0x96, 0x90, 0x9a, 0x99, 0xb7, 0x90, 0x9f, 0x42, 0xa, 0x84, 0x7c, 0x8f, - 0x9e, 0x97, 0xaa, 0xf7, 0xc, 0xc8, 0xf7, 0x86, 0x1f, 0x88, 0x8d, 0x5, - 0x7f, 0x59, 0x37, 0x7c, 0x7b, 0x1b, 0x13, 0x50, 0x5d, 0xa, 0x13, 0x60, - 0xa6, 0xa, 0xe2, 0x8e, 0x76, 0xf8, 0x5f, 0x77, 0x12, 0xf7, 0x1c, 0xd2, - 0xf7, 0x3c, 0xbe, 0x17, 0xf7, 0x63, 0xd1, 0x15, 0x8a, 0xc9, 0x83, 0xf7, - 0x32, 0x69, 0xf7, 0x17, 0x8, 0x9e, 0x86, 0x8a, 0x8c, 0x81, 0x87, 0xfb, - 0x1, 0x72, 0x7d, 0x1b, 0x7e, 0x7, 0xbc, 0xa2, 0x9e, 0xfb, 0x4, 0xa0, - 0x1f, 0x9b, 0x34, 0x91, 0xfb, 0x4a, 0x6e, 0x1a, 0x7a, 0x8b, 0x7e, 0x94, - 0x1e, 0x13, 0x50, 0x9a, 0x9d, 0x9f, 0xd2, 0xcd, 0x1f, 0xac, 0xae, 0xf7, - 0x29, 0xf7, 0x46, 0xe7, 0x1a, 0xb0, 0x73, 0xa5, 0x6a, 0x77, 0x7b, 0x7d, - 0x7c, 0x73, 0x93, 0x80, 0x94, 0x83, 0x1e, 0x97, 0x80, 0x98, 0x85, 0x75, - 0x1a, 0x59, 0x3b, 0xfb, 0xb, 0x52, 0x50, 0x1e, 0xe, 0xf7, 0xca, 0x8e, - 0x76, 0xf8, 0x5e, 0x77, 0xa0, 0x77, 0x12, 0xf7, 0xd, 0xd2, 0xf7, 0x38, - 0xca, 0xf7, 0x49, 0xbb, 0x13, 0xbc, 0xf7, 0x52, 0xf7, 0x15, 0x15, 0x9d, - 0x84, 0xf7, 0x13, 0x79, 0xf0, 0x1e, 0xc1, 0x81, 0x85, 0x97, 0x85, 0x82, - 0x29, 0x73, 0x77, 0x1b, 0x7d, 0x7, 0xc4, 0x9c, 0x8e, 0x30, 0x94, 0x1f, - 0x90, 0x54, 0x9c, 0x3f, 0xfb, 0x2f, 0x1a, 0x7d, 0x8c, 0x8a, 0x6a, 0x98, - 0x1b, 0x9a, 0x92, 0xa0, 0xf7, 0x40, 0xec, 0x1f, 0xb8, 0xda, 0xa3, 0xb5, - 0x9d, 0xab, 0x8, 0x8d, 0x6, 0xa8, 0xfb, 0xd0, 0x5, 0x7b, 0x8c, 0x8b, - 0x7d, 0x96, 0x1b, 0x96, 0x98, 0x9e, 0xbb, 0xb3, 0x1f, 0xb9, 0xc1, 0xf7, - 0x2f, 0xf7, 0x57, 0xe2, 0x1a, 0xa8, 0x7b, 0xa6, 0x66, 0x6e, 0x82, 0x79, - 0x7a, 0x7a, 0x96, 0x82, 0x96, 0x81, 0x1e, 0x96, 0x81, 0x95, 0x81, 0x79, - 0x1a, 0x57, 0x3e, 0x2a, 0x33, 0xfb, 0x1, 0x1e, 0x6b, 0xf7, 0xfb, 0x5, - 0x13, 0xdc, 0x8d, 0x8a, 0x8b, 0x90, 0x84, 0x1b, 0x85, 0x88, 0x87, 0x86, - 0x88, 0x1f, 0xfb, 0x53, 0xfb, 0xc2, 0x5, 0xe, 0xe2, 0x80, 0xc2, 0xf8, - 0x21, 0x77, 0x1, 0x70, 0xf8, 0x6e, 0x3, 0xf7, 0x62, 0xf7, 0x44, 0x15, - 0xa9, 0xfb, 0xc, 0x5, 0x56, 0x98, 0x9a, 0x7d, 0xa8, 0x1b, 0xa2, 0xa8, - 0x8b, 0xf7, 0x6, 0xd2, 0x1f, 0x7d, 0x93, 0x5, 0x6d, 0x70, 0x77, 0x66, - 0x76, 0x1b, 0x77, 0x84, 0xa4, 0x9b, 0x87, 0x1f, 0x85, 0xa4, 0x69, 0xf7, - 0x1c, 0x9d, 0x1a, 0x8b, 0xcf, 0xf7, 0xd, 0xa8, 0x96, 0x92, 0x87, 0x87, - 0x92, 0x1e, 0x87, 0x93, 0x93, 0x86, 0x97, 0x1b, 0xa3, 0x95, 0x9e, 0x9d, - 0xa3, 0x75, 0x97, 0x78, 0x57, 0x5c, 0x4e, 0x39, 0x57, 0x1f, 0x80, 0xc2, - 0x5, 0xe3, 0x79, 0x7c, 0x8b, 0x75, 0x1b, 0x6b, 0x49, 0x73, 0x82, 0x70, - 0x1f, 0x8f, 0x7c, 0x5, 0x93, 0xab, 0x99, 0x8e, 0x94, 0x1b, 0xa6, 0x97, - 0x73, 0x6c, 0x94, 0x1f, 0x8c, 0x86, 0xa5, 0xfb, 0xf, 0x82, 0x1a, 0xfb, - 0x17, 0x31, 0x71, 0x69, 0x7a, 0x1b, 0x82, 0x82, 0x90, 0x90, 0x81, 0x1f, - 0x90, 0x82, 0x81, 0x8f, 0x80, 0x1b, 0x75, 0x7f, 0x79, 0x7b, 0x73, 0x9b, - 0x78, 0xac, 0xaa, 0x97, 0x96, 0x9e, 0x9c, 0x1f, 0xad, 0xb0, 0xb5, 0xc1, - 0xbb, 0xcd, 0x8, 0xe, 0xe2, 0xfb, 0x4d, 0x76, 0xf9, 0x1b, 0x77, 0x12, - 0xf8, 0x1d, 0xc7, 0xa, 0xcf, 0x7e, 0x5d, 0xf7, 0x11, 0x7e, 0x7e, 0xfb, - 0x12, 0x73, 0x86, 0x1b, 0x13, 0xe0, 0x98, 0xa, 0x9f, 0x4c, 0xe2, 0xa, - 0xae, 0xfb, 0x2f, 0x7a, 0xa, 0x83, 0x85, 0x90, 0x91, 0x83, 0x1f, 0x93, - 0x81, 0x7f, 0x94, 0x7a, 0x96, 0xa, 0x70, 0xa, 0x76, 0x96, 0x83, 0x97, - 0x83, 0x1f, 0x9a, 0x82, 0x9b, 0x84, 0x74, 0xa7, 0xa, 0xe, 0xab, 0x4f, - 0x76, 0xf8, 0x55, 0xc7, 0x1, 0xba, 0xa, 0xb1, 0xb2, 0x71, 0x74, 0xb2, - 0x1f, 0x78, 0xac, 0xad, 0x79, 0xad, 0xaf, 0xa, 0x81, 0x8e, 0x83, 0x8e, - 0x85, 0x1f, 0x8f, 0x83, 0x8f, 0x85, 0x85, 0x1a, 0x7e, 0x7b, 0x88, 0x7f, - 0x81, 0x74, 0x8b, 0xac, 0x75, 0x1e, 0xce, 0x5f, 0x50, 0xac, 0x6b, 0x1b, - 0xf7, 0xb6, 0xf7, 0xec, 0x5, 0xca, 0xa, 0x8e, 0x94, 0xc3, 0xdd, 0x1e, - 0xf7, 0x1c, 0x6, 0xe, 0xdd, 0xa, 0xbe, 0xd6, 0x82, 0xd6, 0x13, 0xe0, - 0xf7, 0x47, 0xfb, 0x3a, 0x15, 0x6b, 0x93, 0x76, 0x9b, 0xb9, 0x1a, 0x13, - 0xd0, 0xb3, 0xcd, 0xf7, 0x61, 0xb4, 0x1a, 0xb3, 0x69, 0x9b, 0x78, 0x93, - 0x1e, 0x8c, 0x8d, 0xcf, 0x9c, 0xa2, 0xb2, 0x9e, 0xd3, 0x19, 0xb8, 0xf7, - 0x3c, 0x5, 0xe6, 0xa3, 0xc0, 0xac, 0xab, 0x1b, 0x8e, 0x96, 0x5, 0x2f, - 0x50, 0x7c, 0xfb, 0xc, 0x69, 0x1f, 0x5a, 0xfb, 0x3e, 0x79, 0x4b, 0x77, - 0x5e, 0x45, 0x79, 0x19, 0xb6, 0x7d, 0x94, 0x78, 0x6d, 0x1a, 0x13, 0xe0, - 0x52, 0x49, 0xfb, 0x49, 0x5a, 0x1a, 0x54, 0xaa, 0x70, 0xe9, 0x1e, 0xe, - 0x39, 0xfb, 0x27, 0x76, 0xf7, 0x3f, 0xe0, 0xa, 0x9a, 0xfb, 0x3c, 0x15, - 0xb6, 0x6, 0xf7, 0x6c, 0xf9, 0xd6, 0x5, 0x62, 0x6, 0xe, 0xdd, 0xa, - 0xf7, 0xa6, 0xd6, 0x42, 0xd6, 0x13, 0xd0, 0x87, 0xfb, 0x3a, 0x15, 0x88, - 0x80, 0x5, 0xe7, 0xc9, 0x9a, 0xf7, 0xc, 0xac, 0x1f, 0xba, 0xf7, 0x3e, - 0x9c, 0xcb, 0xa0, 0xb8, 0xd1, 0x9d, 0x19, 0x60, 0x99, 0x82, 0x9e, 0xa9, - 0x1a, 0x13, 0xe0, 0xc4, 0xcd, 0xf7, 0x49, 0xbc, 0x1a, 0xc2, 0x6c, 0xa6, - 0x2d, 0x1e, 0x88, 0x80, 0x5, 0xa1, 0xaa, 0x73, 0x5d, 0x1f, 0x13, 0xd0, - 0x63, 0x49, 0xfb, 0x61, 0x62, 0x1a, 0x63, 0xad, 0x7b, 0x9e, 0x83, 0x1e, - 0x8a, 0x89, 0x47, 0x7a, 0x74, 0x64, 0x78, 0x43, 0x19, 0x5e, 0xfb, 0x3c, - 0x5, 0x31, 0x73, 0x56, 0x69, 0x6b, 0x1b, 0xe, 0xf7, 0x4c, 0xf7, 0x4f, - 0xcb, 0x5c, 0x76, 0xd3, 0xcb, 0x8f, 0x77, 0x12, 0xb3, 0xf8, 0x62, 0x13, - 0x68, 0xd7, 0xf7, 0x4b, 0x15, 0xae, 0x9b, 0xa3, 0xb0, 0xb7, 0x1b, 0xb9, - 0xa9, 0x7d, 0x7b, 0xa7, 0x1f, 0x13, 0x98, 0x79, 0xac, 0xa9, 0x77, 0xbd, - 0x1b, 0xc9, 0xac, 0xb7, 0xb5, 0xa9, 0x1f, 0x67, 0xbd, 0x5, 0x68, 0x74, - 0x72, 0x66, 0x63, 0x1b, 0x69, 0x6c, 0x99, 0x9b, 0x6c, 0x1f, 0x13, 0x68, - 0x9d, 0x67, 0x66, 0x9f, 0x5f, 0x1b, 0x48, 0x67, 0x5f, 0x61, 0x75, 0x1f, - 0xe, 0xab, 0xfb, 0x4c, 0x76, 0xf8, 0xd0, 0xf5, 0x1, 0xf7, 0x6c, 0xf5, - 0x3, 0xf7, 0x6c, 0xf8, 0x38, 0x15, 0x6e, 0xa3, 0x73, 0xa8, 0xa8, 0xa3, - 0xa3, 0xa8, 0xa8, 0x73, 0xa3, 0x6e, 0x6e, 0x73, 0x73, 0x6e, 0x1e, 0x94, - 0xfb, 0x1a, 0x15, 0x51, 0xfb, 0x32, 0x58, 0xfb, 0xa, 0x5f, 0xfb, 0x10, - 0x8, 0x84, 0x78, 0x85, 0x7d, 0x7c, 0x1a, 0x75, 0x9e, 0x76, 0x9d, 0xb5, - 0x95, 0x9c, 0xc0, 0x96, 0x1e, 0xa5, 0xf7, 0x10, 0xa2, 0xf7, 0x18, 0xad, - 0xf7, 0x35, 0x8, 0xe, 0x81, 0xae, 0x80, 0x76, 0xf8, 0x3c, 0xa2, 0x12, - 0xd8, 0xe1, 0x13, 0xb0, 0xf7, 0x1d, 0xfb, 0x23, 0xb7, 0xa, 0xba, 0xf7, - 0x19, 0x5, 0xf7, 0x16, 0xb5, 0xdb, 0xa5, 0xa5, 0x1f, 0x7b, 0x95, 0x5, - 0x64, 0x69, 0x57, 0x61, 0x57, 0x1b, 0x13, 0x70, 0x81, 0x80, 0x8c, 0x8e, - 0x81, 0x1f, 0xf7, 0x1d, 0xf8, 0x1b, 0x5, 0x9c, 0x9d, 0x85, 0x7d, 0x82, - 0x87, 0x82, 0x87, 0x81, 0x1f, 0x88, 0x82, 0x87, 0x81, 0x7f, 0x97, 0xa, - 0xa9, 0x74, 0xbd, 0x3e, 0x1e, 0xb5, 0xf7, 0xc, 0x5, 0x6d, 0x6, 0x61, - 0xfb, 0xc, 0x5, 0x13, 0x50, 0xfb, 0x12, 0xfb, 0x1f, 0xfb, 0x32, 0xfb, - 0x1b, 0x1f, 0x13, 0x70, 0xfb, 0x6, 0xd3, 0x63, 0xaf, 0x1e, 0x9c, 0xbb, - 0x15, 0x71, 0x9e, 0x7e, 0xaf, 0xbe, 0x1a, 0xf2, 0xe2, 0xf7, 0x3b, 0xdf, - 0x1e, 0xe, 0x7b, 0xa1, 0x7f, 0xd3, 0xa9, 0xa7, 0xf7, 0x61, 0xb5, 0xf7, - 0xa2, 0xa8, 0x12, 0x13, 0xb8, 0xf7, 0x34, 0xf7, 0x7, 0x15, 0x96, 0x63, - 0x8b, 0x8b, 0x76, 0x1b, 0x49, 0x74, 0x5f, 0x79, 0x59, 0xa7, 0x77, 0xb2, - 0xb7, 0xa7, 0xaf, 0xa6, 0xa1, 0x1f, 0x4e, 0xd6, 0xb3, 0x89, 0xaa, 0x1b, - 0xf3, 0xad, 0xe5, 0x92, 0x8d, 0x1f, 0x80, 0x94, 0x5, 0x13, 0x78, 0x70, - 0x66, 0x66, 0x84, 0x68, 0x1b, 0x56, 0x55, 0x9d, 0x9f, 0x6a, 0x1f, 0xb8, - 0xec, 0x91, 0xa4, 0xa4, 0xf2, 0x8, 0xf7, 0x12, 0x6, 0x92, 0xb5, 0x5, - 0xfb, 0xf, 0x6, 0x9d, 0xed, 0x96, 0xc9, 0xa3, 0xc2, 0x8, 0xa1, 0x95, - 0x9b, 0xac, 0xb4, 0x1b, 0xa2, 0x97, 0x7e, 0x6c, 0x8f, 0x1f, 0x6d, 0x8e, - 0x93, 0x7d, 0xa4, 0x1b, 0x9e, 0x9f, 0x93, 0xad, 0xb1, 0x6b, 0xb0, 0x50, - 0xfb, 0x3e, 0x56, 0xfb, 0x76, 0x42, 0x82, 0x1f, 0xfb, 0x2, 0x6, 0x82, - 0x61, 0x5, 0xf7, 0x5, 0x6, 0x61, 0xfb, 0x94, 0x15, 0x13, 0xb8, 0x6c, - 0x83, 0x67, 0x71, 0x73, 0x1b, 0x69, 0x7f, 0xa0, 0x9b, 0x90, 0x8e, 0xb3, - 0xbd, 0xa5, 0x99, 0x81, 0x7c, 0xa0, 0x1f, 0xe, 0xf7, 0x18, 0xc4, 0xf7, - 0xa4, 0xc4, 0x1, 0xc4, 0xc8, 0xf7, 0x9c, 0xc8, 0x3, 0xf7, 0xa, 0xf7, - 0xda, 0x15, 0xd3, 0xc4, 0xca, 0xd7, 0xd6, 0xc3, 0x4c, 0x43, 0x41, 0x53, - 0x4c, 0x40, 0x3f, 0x52, 0xca, 0xd5, 0x1e, 0x47, 0xfb, 0x8a, 0x15, 0xe2, - 0xe3, 0x5, 0x73, 0xa5, 0xb9, 0x7f, 0xb7, 0x1b, 0xb6, 0xb5, 0x97, 0xa3, - 0xa4, 0x1f, 0xe4, 0x33, 0xb6, 0xb8, 0x34, 0xe2, 0x5, 0xa2, 0xa6, 0x97, - 0xb6, 0xb6, 0x1a, 0xb6, 0x80, 0xb6, 0x73, 0xa6, 0x1e, 0xe2, 0xe4, 0x60, - 0xb6, 0x32, 0x34, 0x5, 0xa3, 0x71, 0x5f, 0x96, 0x60, 0x1b, 0x60, 0x5f, - 0x7f, 0x74, 0x71, 0x1f, 0x34, 0xe2, 0x5e, 0x60, 0xe3, 0x32, 0x5, 0x73, - 0x71, 0x7f, 0x5f, 0x5f, 0x1a, 0x60, 0x97, 0x60, 0xa3, 0x71, 0x1e, 0x33, - 0x34, 0x5, 0xe, 0xa0, 0x76, 0xf7, 0x4a, 0xb3, 0xe5, 0xb3, 0xf7, 0xc1, - 0x77, 0x1, 0xbf, 0x16, 0xf7, 0xb1, 0x9b, 0x6, 0x53, 0x6a, 0xa0, 0xb7, - 0x91, 0x8c, 0x91, 0x8d, 0x91, 0x1f, 0x92, 0xa7, 0x8f, 0x96, 0x99, 0xb7, - 0x8, 0xf7, 0x48, 0x6, 0x97, 0xb3, 0x5, 0xfb, 0x48, 0x6, 0xa3, 0xdd, - 0x91, 0x93, 0x5, 0xf7, 0x3e, 0x6, 0x97, 0xb3, 0x5, 0xfb, 0x2b, 0x6, - 0xf7, 0x32, 0xf7, 0x74, 0x5, 0xb3, 0xab, 0xaa, 0xa0, 0x95, 0x1b, 0xe8, - 0xa, 0xa8, 0xab, 0x7c, 0x74, 0x84, 0x89, 0x83, 0x87, 0x83, 0x1f, 0x77, - 0x64, 0x35, 0xfb, 0x1a, 0x5c, 0x53, 0x72, 0xe7, 0x61, 0xf5, 0x86, 0xa5, - 0x8, 0x89, 0x95, 0x8a, 0x94, 0x93, 0x1a, 0xaa, 0x9f, 0x93, 0xbf, 0xcd, - 0xa, 0xa3, 0xb7, 0x8d, 0x47, 0x9f, 0x1f, 0xd4, 0xfb, 0x6f, 0x5, 0xfb, - 0x20, 0x6, 0x7f, 0x63, 0x5, 0xf7, 0x37, 0x6, 0x8e, 0x81, 0x74, 0x3b, - 0x5, 0xfb, 0x38, 0x6, 0x7f, 0x63, 0x5, 0xf7, 0x39, 0x6, 0x73, 0x39, - 0x5, 0x48, 0x77, 0x50, 0x7a, 0x6a, 0x1b, 0xe, 0x39, 0x8e, 0xe0, 0xa, - 0xf7, 0x36, 0xf8, 0x1c, 0x15, 0xb3, 0x6, 0xdd, 0xf7, 0xa6, 0x5, 0x65, - 0x6, 0xfb, 0x5d, 0xfd, 0x40, 0x15, 0xb5, 0x6, 0xd5, 0xf7, 0x93, 0x5, - 0x5e, 0x6, 0xe, 0xfb, 0x29, 0xa0, 0xf7, 0x78, 0xa0, 0xf7, 0x9f, 0xa0, - 0xe8, 0xf7, 0x38, 0x7c, 0xa0, 0x12, 0xc0, 0xf2, 0x49, 0xc4, 0xb0, 0xc8, - 0xb5, 0xc5, 0xab, 0xc5, 0x13, 0xed, 0xc0, 0xf7, 0xae, 0xf3, 0x15, 0x8d, - 0x8e, 0x5, 0x86, 0x96, 0x90, 0x89, 0xa0, 0x1b, 0xcf, 0xb9, 0xc2, 0xd1, - 0xc5, 0x70, 0xb3, 0x7d, 0x9c, 0x1f, 0xfb, 0xf, 0xf7, 0x2a, 0x5, 0x7c, - 0x9e, 0x80, 0xa3, 0xa7, 0x1a, 0xca, 0xba, 0xa0, 0xbb, 0xac, 0xa3, 0x7c, - 0x7b, 0x81, 0x80, 0x82, 0x82, 0x7f, 0x1e, 0x83, 0x81, 0x85, 0x80, 0x7b, - 0x1a, 0x13, 0xf3, 0xc0, 0x79, 0x98, 0x71, 0xac, 0xb6, 0x94, 0xb7, 0xa0, - 0xc0, 0x5c, 0xb9, 0x38, 0x41, 0x42, 0x61, 0x37, 0x5e, 0xa3, 0x60, 0xb6, - 0x58, 0x1e, 0x89, 0x88, 0x5, 0x95, 0x76, 0x70, 0x8c, 0x86, 0x1b, 0x55, - 0x57, 0x5a, 0x3d, 0x60, 0xa4, 0x56, 0xb9, 0x56, 0x1f, 0xd7, 0x34, 0x5, - 0xb6, 0x5a, 0x92, 0x76, 0x6f, 0x1a, 0x5a, 0x66, 0x63, 0x47, 0x67, 0x6b, - 0x9e, 0x9c, 0x95, 0x95, 0x92, 0x95, 0x94, 0x1e, 0x13, 0xed, 0xc0, 0x96, - 0x95, 0x96, 0x97, 0xa4, 0x1a, 0xad, 0x73, 0x95, 0x75, 0x52, 0x8b, 0x51, - 0x80, 0x5c, 0xba, 0x51, 0xe7, 0xd5, 0xda, 0xbe, 0xdf, 0xbe, 0x76, 0xa5, - 0x61, 0xc1, 0x1e, 0x13, 0xeb, 0xc0, 0xfb, 0x1b, 0xf7, 0x6e, 0x15, 0xb5, - 0xae, 0xa3, 0xa9, 0xa9, 0xa6, 0x80, 0x4a, 0xbe, 0x1e, 0xbf, 0x49, 0x90, - 0x6e, 0x71, 0x1a, 0x58, 0x5f, 0x78, 0x75, 0x52, 0x20, 0xf7, 0x17, 0xd1, - 0x1e, 0xe, 0x73, 0xf8, 0x90, 0xed, 0x1, 0xf6, 0xc6, 0xa, 0x3, 0xf6, - 0xf8, 0xc1, 0x23, 0xa, 0xf8, 0x27, 0x79, 0xb5, 0xf7, 0x4, 0x9f, 0xf7, - 0xef, 0x9f, 0xf0, 0xb5, 0x1, 0xb4, 0xc2, 0xea, 0xd8, 0xf7, 0x89, 0x9b, - 0xf7, 0x1b, 0xc2, 0x3, 0xb4, 0xf7, 0xd7, 0x15, 0xfb, 0x51, 0xf7, 0x29, - 0xfb, 0x2c, 0xf7, 0x54, 0xf7, 0x52, 0xf7, 0x27, 0xf7, 0x2c, 0xf7, 0x51, - 0xf7, 0x51, 0xfb, 0x27, 0xf7, 0x2e, 0xfb, 0x52, 0xfb, 0x54, 0xfb, 0x29, - 0xfb, 0x2e, 0xfb, 0x51, 0x1e, 0xc2, 0x16, 0xf7, 0x33, 0xf7, 0x11, 0xf7, - 0x22, 0xf7, 0x35, 0xf7, 0x32, 0xf7, 0x10, 0xfb, 0x21, 0xfb, 0x34, 0xfb, - 0x33, 0xfb, 0x11, 0xfb, 0x20, 0xfb, 0x31, 0xfb, 0x34, 0xfb, 0x12, 0xf7, - 0x20, 0xf7, 0x33, 0x1e, 0xf8, 0x47, 0x42, 0x15, 0x5e, 0x78, 0x66, 0x5a, - 0x49, 0x1b, 0x26, 0x62, 0xd7, 0xf3, 0x8c, 0x1f, 0xeb, 0x8c, 0xb5, 0xd2, - 0xe8, 0x1b, 0xd8, 0xa6, 0x5d, 0x61, 0x90, 0x1f, 0x9b, 0xd0, 0x6, 0x93, - 0x86, 0x93, 0x7b, 0x90, 0x1e, 0x93, 0x71, 0x72, 0x95, 0x59, 0x1b, 0xfb, - 0x2a, 0x49, 0xfb, 0x1, 0x39, 0xfb, 0x20, 0xea, 0x53, 0xf7, 0x6, 0xb9, - 0xb2, 0x95, 0x92, 0x9e, 0x1f, 0x9b, 0x8f, 0x94, 0x8e, 0x8c, 0x97, 0x9c, - 0xd9, 0x18, 0xe, 0x3a, 0xf8, 0x2a, 0xad, 0xf7, 0x80, 0x77, 0x12, 0xb5, - 0xd4, 0xf7, 0x26, 0xaf, 0x13, 0xe0, 0xf7, 0x87, 0xf8, 0x7a, 0x15, 0x80, - 0x70, 0x88, 0x7e, 0x7d, 0x1a, 0x81, 0x90, 0x7b, 0xa6, 0xa7, 0xa1, 0xa1, - 0xb7, 0xb2, 0x1e, 0x13, 0x70, 0x84, 0x95, 0x5, 0x6f, 0x71, 0x7e, 0x80, - 0x84, 0x1b, 0x86, 0x8e, 0x9a, 0x99, 0x8e, 0x1f, 0x13, 0xe0, 0x90, 0xa9, - 0xba, 0xf7, 0x3a, 0x8d, 0x92, 0x56, 0x8a, 0x18, 0x7f, 0x64, 0x5, 0x89, - 0x6, 0x9b, 0x89, 0x7a, 0xa4, 0x65, 0x1b, 0x35, 0x27, 0xfb, 0x3, 0x33, - 0x79, 0x92, 0x56, 0xd1, 0xb8, 0xac, 0x9d, 0xca, 0xb7, 0x1f, 0xfb, 0x12, - 0x89, 0x15, 0xbd, 0xcc, 0xf7, 0xf, 0xd2, 0x98, 0x90, 0x81, 0x64, 0x87, - 0x1e, 0x5a, 0x86, 0x57, 0xfb, 0xc, 0x4a, 0x1b, 0x83, 0x77, 0x95, 0xae, - 0x1f, 0xe, 0xce, 0xa, 0xc0, 0xf7, 0x6c, 0x68, 0xa, 0x93, 0x78, 0xbb, - 0x75, 0xbd, 0x1f, 0x81, 0xa2, 0x80, 0xa3, 0x81, 0x9e, 0xa1, 0xa2, 0x9e, - 0x9f, 0x9b, 0x9c, 0x8, 0xd6, 0xdc, 0x99, 0xa2, 0x99, 0x69, 0xa, 0xf7, - 0x36, 0x82, 0x68, 0xa, 0x93, 0x76, 0xc2, 0x73, 0xc0, 0x1f, 0x82, 0x9f, - 0x82, 0x9e, 0x82, 0x9c, 0xa2, 0xa3, 0x9f, 0xa0, 0x9c, 0x9d, 0x8, 0xd4, - 0xd9, 0x98, 0xa2, 0x99, 0x69, 0xa, 0xe, 0xf7, 0xd2, 0xf7, 0x15, 0x76, - 0xf7, 0x84, 0xb1, 0x12, 0xf8, 0x92, 0xcf, 0x6d, 0xb5, 0x13, 0xe0, 0xe1, - 0xf7, 0xf0, 0x15, 0x13, 0xd0, 0xf8, 0x62, 0xfb, 0x84, 0xb5, 0xf7, 0xaa, - 0xfc, 0x8c, 0x6, 0xe, 0xf8, 0x27, 0x79, 0xb5, 0xf7, 0xe, 0x9a, 0x7c, - 0xf7, 0x35, 0xfb, 0x35, 0xf7, 0x47, 0xfb, 0x3e, 0xf7, 0x3e, 0xf7, 0x3b, - 0xf7, 0x42, 0x51, 0xb5, 0x71, 0xb5, 0x12, 0xb4, 0xc2, 0x5f, 0xc2, 0xf7, - 0x36, 0xcb, 0xf3, 0xce, 0x4e, 0xce, 0xf7, 0x2e, 0xc2, 0x13, 0x92, 0x74, - 0xf7, 0xe1, 0xf7, 0xd9, 0x15, 0x13, 0x94, 0x74, 0xf7, 0x3b, 0xb4, 0x7, - 0x13, 0x92, 0x6c, 0xb1, 0xaa, 0x78, 0x52, 0x56, 0x78, 0x65, 0x5a, 0x1f, - 0x13, 0x92, 0xb4, 0xfb, 0xe2, 0x16, 0xfb, 0x51, 0xf7, 0x29, 0xfb, 0x2e, - 0xf7, 0x54, 0xf7, 0x52, 0xf7, 0x27, 0xf7, 0x2f, 0xf7, 0x51, 0x1e, 0x13, - 0x91, 0x74, 0xf7, 0x51, 0xfb, 0x27, 0xf7, 0x2b, 0xfb, 0x52, 0x1e, 0x13, - 0x92, 0xb4, 0xfb, 0x54, 0xfb, 0x29, 0xfb, 0x2c, 0xfb, 0x51, 0x1f, 0xc2, - 0x16, 0x13, 0x91, 0x74, 0xf7, 0x33, 0xf7, 0x11, 0xf7, 0x20, 0xf7, 0x35, - 0xf7, 0x32, 0xf7, 0x10, 0xfb, 0x1e, 0xfb, 0x34, 0xfb, 0x33, 0xfb, 0x11, - 0xfb, 0x23, 0xfb, 0x31, 0x1e, 0x13, 0x92, 0xb4, 0xfb, 0x34, 0xfb, 0x12, - 0xf7, 0x22, 0xf7, 0x33, 0x1f, 0xf7, 0x11, 0xfb, 0x47, 0x15, 0xf7, 0x34, - 0x6, 0x13, 0xc2, 0x74, 0x9a, 0x7, 0x59, 0x90, 0x8d, 0x8b, 0xb6, 0x1a, - 0x13, 0xa2, 0x74, 0xed, 0xba, 0x7, 0x2e, 0xca, 0xa4, 0x47, 0xab, 0x1b, - 0xca, 0x6, 0x13, 0x8a, 0x74, 0x94, 0x7, 0x78, 0x99, 0x6d, 0xad, 0x71, - 0xaf, 0x52, 0xd9, 0x18, 0x13, 0xc2, 0x6c, 0xb8, 0x9a, 0xad, 0xb1, 0xbe, - 0x1a, 0xc9, 0x54, 0xa7, 0x50, 0x1e, 0xfb, 0x43, 0x7c, 0x6, 0xbc, 0x86, - 0x8a, 0x8c, 0x5f, 0x1a, 0xfb, 0x83, 0x7, 0x60, 0x8c, 0x8b, 0x5a, 0x86, - 0x1e, 0xe, 0x73, 0xf8, 0xa8, 0xbe, 0x1, 0xee, 0xf7, 0xcc, 0x3, 0xee, - 0xf8, 0xa8, 0x15, 0xf7, 0xbf, 0x6, 0x98, 0xbe, 0x5, 0xfb, 0xbf, 0x6, - 0xe, 0xb6, 0xf8, 0x1a, 0xad, 0xf7, 0x6e, 0xad, 0x1, 0xf0, 0xb2, 0xf7, - 0x64, 0xb2, 0x3, 0xf7, 0x20, 0xf8, 0xab, 0x15, 0xc5, 0xb9, 0xbc, 0xc5, - 0xc5, 0xb9, 0x5c, 0x51, 0x51, 0x5d, 0x54, 0x51, 0x51, 0x5d, 0xc0, 0xc5, - 0x1e, 0x64, 0x16, 0x3b, 0xca, 0x4a, 0xdb, 0xdb, 0xca, 0xce, 0xdb, 0xdb, - 0x4c, 0xc6, 0x3b, 0x3b, 0x4c, 0x4e, 0x3b, 0x1e, 0xe, 0xf7, 0xd2, 0x8b, - 0xce, 0xf7, 0x69, 0xcf, 0x54, 0xb8, 0xf7, 0x3c, 0x77, 0x12, 0xf7, 0xc5, - 0xcf, 0x53, 0xb6, 0x13, 0xd8, 0xe1, 0x16, 0xf8, 0x8c, 0xb5, 0xfc, 0x8c, - 0x6, 0x13, 0xb8, 0xf7, 0x8f, 0x4, 0x13, 0xb4, 0xf7, 0x7b, 0xfb, 0x3f, - 0xb6, 0xf7, 0x3f, 0xf7, 0x7a, 0xb8, 0xfb, 0x7a, 0xf7, 0x3c, 0x60, 0xfb, - 0x3c, 0xfb, 0x7b, 0x6, 0xe, 0x52, 0xf7, 0xa3, 0xc0, 0xf7, 0xc1, 0xbe, - 0x1, 0xac, 0xf7, 0xa3, 0xc1, 0xa, 0x77, 0x7e, 0x60, 0x1b, 0x29, 0x95, - 0xa, 0xc2, 0x46, 0x79, 0x36, 0x89, 0x75, 0xa, 0xe, 0x52, 0xf7, 0xa0, - 0xb2, 0x64, 0xd8, 0xf7, 0x24, 0x94, 0x82, 0xf7, 0x4f, 0x6b, 0xab, 0x12, - 0xf7, 0x82, 0xca, 0x6e, 0xce, 0x13, 0x54, 0xf7, 0x11, 0xf8, 0x7d, 0x15, - 0xc3, 0xc4, 0x79, 0x37, 0x47, 0x4e, 0x77, 0x75, 0x7c, 0x84, 0x95, 0x95, - 0x83, 0x1f, 0x98, 0x81, 0x80, 0x98, 0x70, 0x1b, 0x13, 0xac, 0x6c, 0x88, - 0xa5, 0xa, 0x7b, 0x93, 0x1f, 0x87, 0x8d, 0x5, 0x13, 0x6a, 0xc9, 0xa, - 0x66, 0x5a, 0x72, 0x67, 0x7b, 0x1e, 0x83, 0xa, 0x73, 0xf8, 0x97, 0x76, - 0xf7, 0x3e, 0x77, 0x1, 0xf7, 0x48, 0xad, 0xa, 0xf7, 0x33, 0xeb, 0x9f, - 0xa, 0x9d, 0x9c, 0x9a, 0x1a, 0x9d, 0x7d, 0x9c, 0x76, 0x80, 0x76, 0x7d, - 0x9d, 0xa, 0xe, 0xfb, 0x50, 0x76, 0xf7, 0x5b, 0xc2, 0xf8, 0x13, 0x77, - 0x1, 0x6d, 0xf4, 0xf7, 0x99, 0xde, 0x3, 0xd9, 0xc7, 0x15, 0x4f, 0x9d, - 0xbf, 0x81, 0xaa, 0x1b, 0xbe, 0xcc, 0xb9, 0xbe, 0xb2, 0x1f, 0x8d, 0x6, - 0x89, 0x81, 0x85, 0x77, 0x81, 0x1a, 0x68, 0x9d, 0x75, 0xaf, 0xaf, 0xa9, - 0x95, 0xba, 0xb7, 0x1e, 0x8e, 0x94, 0x5, 0x76, 0x71, 0x7b, 0x86, 0x7c, - 0x1b, 0x67, 0x98, 0xb4, 0xa0, 0x8f, 0x1f, 0xd9, 0xf7, 0xe4, 0x5, 0x33, - 0x6, 0x47, 0xfb, 0xc3, 0x5, 0x72, 0x7a, 0x53, 0x54, 0x58, 0x1b, 0x4f, - 0x77, 0xb8, 0xc1, 0x96, 0x1f, 0xce, 0xf7, 0xb0, 0x5, 0x33, 0x6, 0x36, - 0xfc, 0xa, 0x84, 0x6b, 0x7f, 0x68, 0x7c, 0x6a, 0x19, 0x7d, 0x6c, 0x73, - 0x66, 0x5a, 0x1a, 0x72, 0x91, 0x76, 0xa7, 0xcb, 0x92, 0xf7, 0x0, 0xaf, - 0xb4, 0x87, 0xb4, 0x8f, 0xb6, 0x1e, 0xe, 0xf7, 0x3a, 0xfb, 0x57, 0x76, - 0xf9, 0xe7, 0xa6, 0x1, 0xf7, 0x17, 0xfb, 0x6c, 0x15, 0xaf, 0x6, 0xf7, - 0x88, 0xf9, 0xe7, 0x5, 0xe6, 0x6, 0xfb, 0x88, 0xfd, 0xe7, 0x5, 0xae, - 0x6, 0xf7, 0x88, 0xf9, 0xe7, 0x5, 0xcc, 0x6, 0x93, 0xa6, 0x5, 0xfb, - 0x7a, 0x6, 0xfb, 0x8a, 0x5c, 0xfb, 0x44, 0x4c, 0xfb, 0x4, 0xed, 0x7a, - 0xe7, 0x1f, 0xe, 0x20, 0xf7, 0x5b, 0xf7, 0x3, 0x1, 0xd1, 0xf7, 0x3, - 0x3, 0xd1, 0xf7, 0x92, 0x84, 0xa, 0x73, 0xfb, 0x6d, 0xaf, 0xf7, 0x49, - 0x77, 0x1, 0xf7, 0x0, 0xd5, 0x3, 0xdc, 0x16, 0x4c, 0x21, 0x94, 0x83, - 0x5, 0x91, 0x96, 0x9b, 0x8e, 0x99, 0x1b, 0xa0, 0x9e, 0x81, 0x74, 0x6f, - 0x6b, 0x7c, 0x68, 0x78, 0x77, 0x8f, 0x95, 0x7c, 0x1f, 0x7a, 0x6e, 0x5, - 0x7e, 0xa3, 0xaf, 0x83, 0xaf, 0x1b, 0xc6, 0xc4, 0xa2, 0xcb, 0xb5, 0x67, - 0xa4, 0x64, 0x80, 0x80, 0x8b, 0x88, 0x81, 0x1f, 0xb7, 0xcd, 0x5, 0xe, - 0x52, 0xf7, 0xa3, 0x9b, 0xf7, 0x6, 0x76, 0xf7, 0xbc, 0x77, 0x1, 0xb6, - 0xf7, 0x7f, 0x3, 0xb6, 0xf7, 0xa3, 0x15, 0xf7, 0x49, 0x9b, 0x6, 0x68, - 0x7e, 0x96, 0x9b, 0x9c, 0x96, 0xa4, 0x96, 0xae, 0x1f, 0xdd, 0xf7, 0x9c, - 0x5, 0x8e, 0x92, 0x8c, 0x90, 0x8f, 0x1a, 0x8e, 0x89, 0x8d, 0x87, 0x83, - 0x2e, 0x78, 0x88, 0x6e, 0x1e, 0x78, 0x7, 0x8c, 0x9b, 0x97, 0x8b, 0x93, - 0x1b, 0x97, 0x91, 0x86, 0x82, 0x83, 0x8a, 0x81, 0x88, 0x84, 0x1f, 0x4c, - 0xfb, 0x63, 0x73, 0x3b, 0x83, 0x84, 0x4f, 0x7b, 0x19, 0xe, 0x5c, 0xf7, - 0xb9, 0xa3, 0xe4, 0xa3, 0xf7, 0x5d, 0xa1, 0x8c, 0xa1, 0x1, 0xce, 0xd4, - 0xf7, 0x29, 0xd4, 0x3, 0xce, 0xf8, 0x82, 0x15, 0xe3, 0xe8, 0xe9, 0xef, - 0xd8, 0xa4, 0x59, 0x63, 0x40, 0x34, 0x22, 0x23, 0x43, 0x6b, 0xb0, 0xbe, - 0x1e, 0xd4, 0x81, 0x15, 0x6c, 0x97, 0x74, 0xa7, 0xcf, 0xb4, 0xf7, 0xb, - 0xbe, 0xa6, 0x84, 0xa6, 0x70, 0x48, 0x5b, 0xfb, 0x4, 0x51, 0x1e, 0xe, - 0xce, 0xa, 0xc2, 0xf8, 0x1c, 0x3, 0xf7, 0xff, 0xf7, 0x73, 0x15, 0x49, - 0xa, 0xfb, 0x36, 0x16, 0x49, 0xa, 0xe, 0xd9, 0xa, 0xf7, 0x10, 0x9b, - 0xf8, 0x19, 0x77, 0x12, 0xac, 0xf9, 0x53, 0x13, 0x68, 0x67, 0xa, 0x13, - 0xbc, 0x94, 0xa, 0x13, 0xa8, 0xfb, 0xb2, 0xfb, 0x31, 0x8c, 0xa, 0xfc, - 0xc9, 0xfc, 0x29, 0x15, 0xf7, 0x49, 0x6, 0x13, 0x10, 0x9b, 0x7, 0x13, - 0x1c, 0x71, 0x74, 0x95, 0x9d, 0x8d, 0x8b, 0x8d, 0xf4, 0xf7, 0xe4, 0x1f, - 0x8d, 0x92, 0x8d, 0x8f, 0x8f, 0x1a, 0x8e, 0x8a, 0x8e, 0x86, 0xdc, 0xa, - 0x8c, 0x9c, 0x97, 0x8b, 0x93, 0x1b, 0xa7, 0x80, 0x72, 0x7d, 0x87, 0x1f, - 0x32, 0xfb, 0xa7, 0x85, 0x78, 0x71, 0x7f, 0x69, 0x87, 0x19, 0xe, 0xf8, - 0x1d, 0x8b, 0xc0, 0x61, 0x76, 0xf8, 0x0, 0xbf, 0xf7, 0xa2, 0x77, 0x12, - 0xad, 0xf7, 0x83, 0xfb, 0x24, 0xbe, 0xf8, 0x8c, 0xcc, 0x13, 0x76, 0xf7, - 0x15, 0x81, 0x8c, 0xa, 0x13, 0xba, 0xfb, 0x12, 0xfd, 0x38, 0xc1, 0xa, - 0x81, 0x7e, 0x60, 0x1b, 0xfb, 0x0, 0x95, 0xa, 0xc3, 0x46, 0x79, 0x36, - 0x88, 0x75, 0xa, 0xfc, 0x3c, 0xf7, 0x91, 0x15, 0xf7, 0x48, 0x6, 0x13, - 0x0, 0x9b, 0x7, 0x13, 0x18, 0x72, 0x6e, 0x96, 0x9b, 0x90, 0x1f, 0xc8, - 0xf7, 0x5d, 0xba, 0xf7, 0x2d, 0x88, 0x1a, 0x8e, 0x8d, 0x93, 0x84, 0xdc, - 0xa, 0xb0, 0x8c, 0x5, 0x99, 0x8f, 0x86, 0x82, 0x7e, 0x89, 0x88, 0x2f, - 0xfb, 0xb0, 0x1f, 0x85, 0x78, 0x72, 0x7f, 0x69, 0x87, 0x8, 0xe, 0xd9, - 0xa, 0xf7, 0xea, 0xf7, 0x4f, 0x12, 0xf7, 0x6e, 0xca, 0x6e, 0xce, 0x13, - 0x78, 0x67, 0xa, 0x94, 0xa, 0x13, 0xb8, 0xfb, 0xb1, 0xfb, 0x31, 0x8c, - 0xa, 0xfc, 0x82, 0xfb, 0x4f, 0x15, 0xc3, 0xc4, 0x7e, 0x32, 0x47, 0x4e, - 0x77, 0x75, 0x7a, 0x7f, 0x98, 0x97, 0x7f, 0x1f, 0x96, 0x80, 0x80, 0x95, - 0x7d, 0x1b, 0x68, 0x8b, 0xa5, 0xa, 0x77, 0x95, 0x1f, 0x13, 0x74, 0xc9, - 0xa, 0x1e, 0x13, 0x4, 0x66, 0x5a, 0x72, 0x67, 0x7b, 0x1f, 0x83, 0xa, - 0xfb, 0x88, 0xa1, 0x12, 0xa5, 0xd5, 0xf7, 0x2c, 0xcb, 0x55, 0xf5, 0x13, - 0xe0, 0xf7, 0xb0, 0xf7, 0xb1, 0x15, 0x73, 0x26, 0x54, 0x5f, 0x60, 0x68, - 0x8, 0x26, 0x39, 0x6a, 0x6c, 0x45, 0x1a, 0x41, 0xc2, 0x56, 0xeb, 0x1e, - 0xd2, 0xcd, 0xb2, 0xd2, 0xa8, 0x7c, 0xa7, 0x73, 0x81, 0x6d, 0x86, 0x6d, - 0x80, 0x8f, 0x81, 0x8f, 0x81, 0x1f, 0x8f, 0x81, 0x8e, 0x81, 0x7f, 0x1a, - 0x5c, 0x4a, 0x8b, 0x86, 0x42, 0x84, 0xc6, 0xa4, 0xd6, 0xba, 0xba, 0xbc, - 0xc1, 0x1e, 0xba, 0xbf, 0xbb, 0xc6, 0x93, 0xea, 0x8, 0x13, 0xd0, 0x64, - 0xf7, 0x1b, 0x15, 0x6e, 0xa3, 0x85, 0xa, 0x73, 0x73, 0x6e, 0x1e, 0xe, - 0x88, 0xa, 0x58, 0x16, 0x9b, 0xa, 0x5f, 0x7d, 0xa0, 0xa3, 0x9d, 0x93, - 0xa8, 0xcf, 0xf7, 0xa, 0x1f, 0xf7, 0x70, 0x6, 0xa2, 0xfb, 0x18, 0x8b, - 0x82, 0x82, 0x1a, 0x66, 0x74, 0x74, 0x53, 0x27, 0xa, 0xc7, 0xf8, 0x4e, - 0xb7, 0xa, 0xfb, 0x3, 0xf7, 0x27, 0xc5, 0xa, 0x79, 0x8d, 0x56, 0xa, - 0x9e, 0x7f, 0x80, 0xa, 0x88, 0xa, 0xf7, 0xd3, 0xf9, 0x56, 0x7f, 0xa, - 0xfc, 0xa3, 0xfd, 0xf1, 0xe7, 0xa, 0x64, 0x78, 0x9f, 0xa3, 0x9e, 0x94, - 0xa2, 0x96, 0xa0, 0x81, 0xa, 0xa1, 0xfb, 0x11, 0x8c, 0x83, 0x82, 0x1a, - 0x61, 0x78, 0x71, 0x4f, 0x27, 0xa, 0xe, 0x5a, 0xa, 0xf7, 0x75, 0x77, - 0x1, 0x58, 0xf8, 0xfb, 0x3, 0xf7, 0x7f, 0x46, 0xa, 0xfc, 0x4f, 0xfd, - 0xfd, 0xe7, 0xa, 0x63, 0x79, 0x9f, 0xa4, 0x9e, 0x94, 0xa1, 0x96, 0xa0, - 0x81, 0xa, 0xa3, 0xfb, 0x16, 0x8a, 0x82, 0x83, 0x1a, 0x67, 0x71, 0x70, - 0x56, 0x35, 0xa, 0x82, 0x68, 0x7c, 0x19, 0xf7, 0x76, 0xf7, 0x8b, 0x4c, - 0xa, 0xe, 0x5a, 0xa, 0xdf, 0xac, 0xa, 0x13, 0xf4, 0xf7, 0x83, 0xf9, - 0x6d, 0x65, 0xa, 0x73, 0x97, 0x96, 0x71, 0x1f, 0x13, 0xe8, 0x95, 0x73, - 0x72, 0x95, 0x71, 0x6c, 0xa, 0xfb, 0xb6, 0xfd, 0x6d, 0xe7, 0xa, 0x64, - 0x78, 0x9d, 0xa4, 0x9e, 0x94, 0xa3, 0x96, 0xa0, 0x81, 0xa, 0xa1, 0xfb, - 0x12, 0x8c, 0x81, 0x84, 0x1a, 0x61, 0x70, 0x72, 0x57, 0x27, 0xa, 0xe, - 0x5a, 0xa, 0xd3, 0xed, 0x1, 0xf7, 0x8a, 0xc6, 0xa, 0x3, 0x58, 0x16, - 0x9b, 0xa, 0x65, 0x77, 0xa0, 0x9f, 0xa3, 0x94, 0x9f, 0x96, 0xa1, 0x81, - 0xa, 0xa1, 0xfb, 0xf, 0x8c, 0x7f, 0x84, 0x1a, 0x60, 0x72, 0x72, 0x55, - 0x27, 0xa, 0xfb, 0xf, 0xf8, 0x8f, 0x23, 0xa, 0x5a, 0xa, 0xae, 0xf7, - 0x3a, 0xab, 0xa, 0xf7, 0x39, 0x12, 0x58, 0xf7, 0x4f, 0xf7, 0x28, 0xad, - 0x69, 0xf7, 0x39, 0xab, 0xa, 0xf7, 0x3a, 0x13, 0xf2, 0x80, 0xf7, 0xb0, - 0xf9, 0xa3, 0x15, 0x54, 0xb8, 0x5e, 0xc2, 0x1e, 0x13, 0xe7, 0x20, 0xc2, - 0xb8, 0xb8, 0xc2, 0xc2, 0x5e, 0xb8, 0x54, 0x1f, 0x13, 0xf2, 0x80, 0x54, - 0x5e, 0x5e, 0x54, 0x1f, 0xad, 0x16, 0xb3, 0xa, 0x13, 0xeb, 0x40, 0xe5, - 0xa, 0xfc, 0x5, 0xfd, 0xa3, 0xe7, 0xa, 0x65, 0x77, 0xa0, 0x9f, 0xa3, - 0x94, 0x9f, 0x96, 0xa1, 0x81, 0xa, 0xa1, 0xfb, 0xf, 0x8c, 0x7f, 0x84, - 0x1a, 0x60, 0x72, 0x72, 0x55, 0x27, 0xa, 0xe, 0xf8, 0xa8, 0x8b, 0xac, - 0xf7, 0x5d, 0xb0, 0xc4, 0xe9, 0xa, 0x1, 0xf9, 0x88, 0x9d, 0x3, 0x70, - 0x16, 0x9b, 0xa, 0x6e, 0x6a, 0x9b, 0xa2, 0xb2, 0xe4, 0xe8, 0xad, 0xba, - 0x1f, 0xf7, 0x52, 0x6, 0x5d, 0xfb, 0x34, 0x7f, 0x63, 0x7b, 0x7f, 0x54, - 0x85, 0x19, 0x7b, 0xf8, 0x86, 0x7, 0xcb, 0xf7, 0x38, 0x79, 0x90, 0x5, - 0xfb, 0x3, 0x42, 0x49, 0x72, 0xfb, 0x21, 0x1b, 0x6d, 0x6, 0x65, 0x81, - 0x9f, 0x9f, 0x9d, 0xba, 0xf7, 0x36, 0xa0, 0xd6, 0x1f, 0xb3, 0x6, 0xeb, - 0xa1, 0x84, 0x5d, 0x7b, 0x88, 0x7a, 0x88, 0x7b, 0x1f, 0x9c, 0x87, 0xd0, - 0xf7, 0x7c, 0x79, 0x8f, 0x5, 0x2e, 0x60, 0x7c, 0x87, 0xfb, 0x2d, 0x1b, - 0xc8, 0xf7, 0x72, 0x5, 0xb0, 0x95, 0x94, 0x8b, 0xc7, 0x1b, 0xf7, 0x4e, - 0x81, 0x76, 0x2a, 0x1f, 0x9c, 0x89, 0xac, 0xf7, 0x2d, 0x5, 0xfc, 0x99, - 0x7c, 0x6, 0xbd, 0x87, 0x99, 0x8a, 0x72, 0x1a, 0x7d, 0x7a, 0x78, 0x7c, - 0x79, 0x1e, 0xfc, 0x16, 0xfc, 0x77, 0x71, 0x6b, 0x7a, 0x77, 0x73, 0x85, - 0x19, 0xf7, 0xa8, 0xf7, 0x93, 0x15, 0xf7, 0x97, 0xf7, 0xde, 0x5, 0x91, - 0x6, 0x2f, 0xfb, 0xde, 0x5, 0xe, 0xf7, 0xca, 0xfb, 0x58, 0x76, 0xf7, - 0x5d, 0xb6, 0xd4, 0xa, 0x13, 0xe8, 0xf7, 0x90, 0x21, 0x15, 0x93, 0x83, - 0x5, 0x91, 0x97, 0x9b, 0x8e, 0x9a, 0x1b, 0xa1, 0x9e, 0x81, 0x74, 0x6e, - 0x67, 0x7d, 0x67, 0x7a, 0x79, 0xde, 0xa, 0xa3, 0xb0, 0x83, 0xaf, 0x1b, - 0xc5, 0xc4, 0xa3, 0xca, 0xb5, 0x67, 0xa4, 0x64, 0x80, 0x81, 0x8b, 0x88, - 0x80, 0x1f, 0xac, 0xbd, 0x5, 0xf7, 0x1d, 0xde, 0xf4, 0xb5, 0xaf, 0x6f, - 0xa, 0x9d, 0x88, 0x5, 0x13, 0xd8, 0xb8, 0xa, 0x7f, 0x76, 0x92, 0x91, - 0x70, 0x1f, 0x13, 0xe8, 0x91, 0x73, 0x6e, 0x90, 0x6a, 0xd5, 0xa, 0xfb, - 0x4f, 0xf7, 0x14, 0x3a, 0xf7, 0x5, 0x1f, 0xe, 0x8d, 0xa, 0xf7, 0x73, - 0x77, 0x1, 0xf8, 0x24, 0x9f, 0xf7, 0x36, 0xa0, 0x3, 0x8b, 0xa, 0x68, - 0x6d, 0x98, 0xb2, 0x90, 0x8c, 0x90, 0x8c, 0x91, 0x1f, 0x8d, 0x97, 0x99, - 0x3c, 0xa, 0x7f, 0x80, 0xfb, 0x2f, 0x74, 0xa, 0xf7, 0x50, 0x86, 0x76, - 0x2a, 0x41, 0xa, 0xf8, 0x42, 0xf9, 0x44, 0xb7, 0xa, 0xfb, 0x1, 0xf7, - 0x22, 0xc5, 0xa, 0x77, 0x92, 0x56, 0xa, 0xa0, 0x7a, 0x80, 0xa, 0x8d, - 0xa, 0xf7, 0x73, 0x77, 0x1, 0xf8, 0xda, 0xa0, 0x3, 0xf7, 0xdd, 0xf9, - 0x56, 0x9e, 0xa, 0xf7, 0x38, 0xf0, 0x9f, 0xa, 0x98, 0x97, 0x47, 0xa, - 0x7c, 0x82, 0x9d, 0xa, 0xfc, 0x79, 0xfd, 0xf1, 0x34, 0xa, 0xf7, 0x92, - 0x8b, 0xac, 0xf7, 0xbb, 0xac, 0xf7, 0x99, 0xac, 0x89, 0xbe, 0xd1, 0xa, - 0xf8, 0x24, 0x9f, 0xf7, 0x36, 0xa0, 0x3, 0xf7, 0x98, 0x46, 0xa, 0xfc, - 0x36, 0xfd, 0xfd, 0x34, 0xa, 0x8d, 0xa, 0xce, 0xed, 0x1, 0xf7, 0x9e, - 0xc6, 0xa, 0x3, 0x8a, 0x16, 0x32, 0xa, 0x7f, 0x80, 0xfb, 0x2f, 0x74, - 0xa, 0xf7, 0x50, 0x86, 0x76, 0x2a, 0x41, 0xa, 0xf7, 0x9f, 0xf9, 0x85, - 0x23, 0xa, 0x73, 0x99, 0xa, 0x83, 0x16, 0x2a, 0xa, 0xf7, 0xbe, 0xf9, - 0x44, 0x77, 0xa, 0x73, 0x99, 0xa, 0xf7, 0x66, 0xf9, 0x56, 0x9e, 0xa, - 0xf7, 0x21, 0xee, 0x9f, 0xa, 0x9b, 0x99, 0x47, 0xa, 0x79, 0x80, 0x9d, - 0xa, 0xfb, 0xf2, 0xfd, 0xef, 0x15, 0x2a, 0xa, 0xe, 0x73, 0x9a, 0xa, - 0xbe, 0xd1, 0xa, 0x83, 0xf8, 0x45, 0x3, 0xf7, 0x17, 0x46, 0xa, 0xfb, - 0xbc, 0xfd, 0xfd, 0x15, 0x2a, 0xa, 0xe, 0x73, 0x87, 0xa, 0xe2, 0xed, - 0x1, 0xf7, 0x1d, 0xc6, 0xa, 0x3, 0x83, 0x16, 0x2a, 0xa, 0xf7, 0x25, - 0xf9, 0x85, 0x23, 0xa, 0xf8, 0x1, 0x8b, 0xa9, 0xf7, 0xbc, 0xb5, 0xf7, - 0x93, 0xa9, 0x1, 0xf7, 0x58, 0xee, 0xf7, 0xba, 0xf7, 0x3, 0x3, 0xb1, - 0xa, 0xf4, 0x4d, 0xf7, 0x35, 0xfb, 0x7a, 0x1f, 0xfb, 0xaa, 0x7b, 0x6, - 0xc4, 0x9d, 0x76, 0x6d, 0x7a, 0x87, 0x79, 0x86, 0x78, 0x1f, 0x5d, 0xfb, - 0x38, 0x5, 0x31, 0x6, 0x7f, 0x61, 0x5, 0xe5, 0x6, 0x5d, 0xfb, 0x38, - 0x5, 0x26, 0x6f, 0x86, 0x5e, 0x48, 0x1b, 0xf7, 0x8a, 0xf7, 0xca, 0x15, - 0xf7, 0x2d, 0x6, 0x97, 0xb5, 0x5, 0xfb, 0x2d, 0x6, 0xb8, 0xf7, 0x39, - 0x5, 0xc1, 0x9a, 0x8e, 0xaf, 0xcc, 0xb2, 0xa, 0x55, 0x7a, 0x9b, 0xa5, - 0xa2, 0x97, 0xaa, 0x95, 0xaf, 0x1f, 0xe, 0xf7, 0xca, 0x91, 0x76, 0xaf, - 0x76, 0xf9, 0x1e, 0xf7, 0x2f, 0xfb, 0x2c, 0x77, 0xee, 0xc7, 0x56, 0xf2, - 0x85, 0x77, 0x12, 0x13, 0x62, 0x77, 0xe4, 0xa, 0x56, 0x7c, 0xa0, 0xab, - 0x9c, 0x90, 0x9e, 0x91, 0xa1, 0x1f, 0xf7, 0x0, 0xf8, 0x26, 0x5, 0x8f, - 0x6, 0x13, 0xa2, 0xf7, 0x78, 0xfc, 0xb4, 0x5, 0x9d, 0x6, 0xf7, 0x2c, - 0xf8, 0xad, 0xa2, 0xdb, 0x9c, 0xa2, 0xc3, 0x97, 0x19, 0x13, 0x5a, 0xeb, - 0xa, 0x7, 0x13, 0x62, 0x7b, 0x7, 0xbd, 0x9b, 0x74, 0x6d, 0x78, 0x87, - 0x76, 0x85, 0x77, 0x1f, 0x29, 0xfc, 0x2, 0x5, 0x88, 0x6, 0x13, 0x5a, - 0xfb, 0x62, 0xf8, 0x83, 0x5, 0xfb, 0x35, 0x6, 0x13, 0x62, 0x7b, 0x7, - 0xbb, 0xa0, 0x78, 0x66, 0x9c, 0x1f, 0xfb, 0x13, 0xfc, 0x57, 0x76, 0x3f, - 0x78, 0x6d, 0x54, 0x83, 0x19, 0xf7, 0xbd, 0xf9, 0x5d, 0x60, 0xa, 0x9d, - 0xa9, 0x7f, 0x80, 0xa8, 0x1f, 0x13, 0x5a, 0x80, 0xa7, 0xa6, 0x81, 0x71, - 0xa, 0x77, 0x74, 0x96, 0x96, 0x71, 0x1f, 0x13, 0x54, 0x95, 0x73, 0x71, - 0x96, 0x71, 0xd6, 0xa, 0xbf, 0xa, 0xf7, 0x66, 0xa8, 0xa, 0xc7, 0xf7, - 0x77, 0x24, 0xa, 0xf7, 0xd4, 0xf8, 0x71, 0x77, 0xa, 0xbf, 0xa, 0xf7, - 0x66, 0xa8, 0xa, 0xf8, 0x33, 0xf9, 0x56, 0x5e, 0xa, 0xfc, 0x95, 0xfd, - 0xe, 0x24, 0xa, 0xe, 0xb6, 0xa, 0xac, 0xf8, 0xf7, 0xb1, 0x6c, 0xac, - 0x8b, 0xb1, 0xf7, 0x3d, 0xa8, 0xa, 0xf7, 0xd5, 0x46, 0xa, 0xfc, 0x36, - 0xfd, 0x1a, 0x24, 0xa, 0xe, 0xb6, 0xa, 0xac, 0xf8, 0xff, 0xac, 0xd0, - 0xf2, 0x88, 0x77, 0x12, 0x86, 0xa, 0x13, 0xec, 0xf7, 0xcf, 0xf9, 0x6d, - 0x60, 0xa, 0x9c, 0xa6, 0x81, 0x81, 0xa6, 0x1f, 0x7f, 0xa9, 0xa9, 0x7f, - 0x9e, 0x1b, 0x13, 0xdc, 0x43, 0xa, 0x78, 0x74, 0x96, 0x96, 0x72, 0x1f, - 0x13, 0xec, 0x96, 0x73, 0x70, 0x95, 0x70, 0x6c, 0xa, 0xfb, 0x93, 0xfc, - 0x8a, 0x24, 0xa, 0xe, 0xb6, 0xa, 0xac, 0xf8, 0xb8, 0xac, 0xf7, 0x14, - 0xed, 0x12, 0xc7, 0xf4, 0xf8, 0x8, 0xed, 0x62, 0xf4, 0x13, 0xf4, 0xc7, - 0xf7, 0x77, 0x24, 0xa, 0xf7, 0x40, 0xf8, 0xb2, 0x58, 0xa, 0x13, 0xf8, - 0x25, 0xa, 0xf7, 0xd2, 0xa8, 0x76, 0xb4, 0x76, 0xf8, 0x56, 0x77, 0xb2, - 0x77, 0x12, 0xf7, 0x1e, 0xf8, 0x26, 0x13, 0x98, 0xf7, 0x8, 0xc4, 0x15, - 0xa7, 0x70, 0xf7, 0x57, 0xf7, 0x53, 0x5, 0x13, 0x58, 0xf7, 0x57, 0xfb, - 0x55, 0xa7, 0xa8, 0xfb, 0x57, 0xf7, 0x56, 0xf7, 0x5c, 0xf7, 0x5a, 0x5, - 0x13, 0xa8, 0x6e, 0xa8, 0xfb, 0x5b, 0xfb, 0x5a, 0xfb, 0x58, 0xf7, 0x58, - 0x70, 0x6e, 0xf7, 0x56, 0xfb, 0x58, 0x5, 0xe, 0xf8, 0x1, 0x37, 0x76, - 0xe2, 0xac, 0xf8, 0xfe, 0xac, 0xc3, 0xa8, 0xa, 0xf7, 0x52, 0xd5, 0x15, - 0x72, 0xba, 0x8b, 0xe5, 0x98, 0x1a, 0xf7, 0x12, 0xf7, 0x16, 0xf7, 0xaf, - 0xf7, 0x3c, 0xaf, 0xa7, 0x81, 0x7b, 0x9e, 0x1e, 0xfb, 0xdf, 0xfc, 0xc7, - 0x15, 0xf7, 0xf7, 0xf8, 0xa6, 0x5, 0x9d, 0x6f, 0x91, 0x39, 0x62, 0x1a, - 0xfb, 0x1, 0xfb, 0xe, 0xfb, 0xbf, 0xfb, 0x44, 0x65, 0x71, 0x97, 0x9c, - 0x7a, 0x1e, 0xfb, 0x26, 0xfb, 0x29, 0x15, 0xb7, 0x6, 0xd5, 0xf7, 0x0, - 0x5, 0x7e, 0xa9, 0xad, 0x83, 0xa7, 0x1b, 0xae, 0xa, 0xf7, 0x84, 0xf7, - 0x5d, 0xed, 0x65, 0xcd, 0x53, 0xb2, 0x1f, 0xcb, 0xeb, 0x5, 0x5f, 0x6, - 0x57, 0x3d, 0x5, 0x9a, 0x6a, 0x67, 0x92, 0x66, 0x1b, 0xfb, 0x47, 0xfb, - 0x78, 0xfb, 0x6e, 0xfb, 0x71, 0x21, 0xb5, 0x4b, 0xc0, 0x68, 0x1f, 0xe, - 0xaa, 0xa, 0x77, 0xf7, 0x83, 0x77, 0xa3, 0x77, 0x12, 0xcc, 0xa, 0x13, - 0xec, 0xf7, 0x13, 0xf9, 0x11, 0x29, 0xa, 0xf8, 0x4, 0xbe, 0xb7, 0xa, - 0x20, 0xf7, 0x22, 0x5, 0x13, 0xdc, 0xa2, 0x79, 0x75, 0x92, 0x56, 0xa, - 0xa2, 0x7a, 0x80, 0xa, 0xaa, 0xa, 0x77, 0xf7, 0x87, 0x77, 0x1, 0xcc, - 0xa, 0x3, 0xf8, 0x33, 0xf9, 0x56, 0x5e, 0xa, 0xfc, 0x52, 0xfb, 0x74, - 0x29, 0xa, 0xe, 0xaa, 0xa, 0xbe, 0xd1, 0xa, 0xcc, 0xa, 0x3, 0xf7, - 0xc6, 0x46, 0xa, 0xfb, 0xe4, 0xfb, 0x80, 0x29, 0xa, 0xe, 0xb6, 0xa, - 0xb4, 0xf8, 0xfa, 0xdf, 0xa, 0xf1, 0xe5, 0xf7, 0x48, 0xc6, 0xa, 0x13, - 0xce, 0xf7, 0x13, 0xf9, 0x11, 0x3a, 0xa, 0x13, 0xbe, 0xeb, 0xa, 0x7, - 0x13, 0xce, 0x37, 0xa, 0x13, 0xbe, 0xd2, 0xa, 0x13, 0xce, 0xf7, 0x89, - 0xf7, 0x8, 0x15, 0x13, 0xbe, 0x21, 0xa, 0xf7, 0x5b, 0x99, 0xa, 0xcf, - 0xa, 0x59, 0x69, 0x9c, 0xba, 0x92, 0x8c, 0x91, 0x8d, 0x93, 0x1f, 0x91, - 0xa7, 0x92, 0xa1, 0xb8, 0xf7, 0x2f, 0xf7, 0x6f, 0xf7, 0xa2, 0x18, 0xab, - 0xb3, 0x96, 0x93, 0xa6, 0x98, 0x8, 0xe8, 0xa, 0xab, 0xac, 0x86, 0x67, - 0x62, 0xfb, 0x1f, 0xfb, 0x2c, 0x5e, 0x53, 0x1f, 0x73, 0xe7, 0x6c, 0xf5, - 0x85, 0xa5, 0x8, 0x89, 0x95, 0x8b, 0x93, 0x92, 0x1a, 0xa4, 0xaa, 0x98, - 0xb0, 0x8e, 0xcd, 0xa, 0xa9, 0xa7, 0x88, 0x4c, 0x9d, 0x1f, 0xd8, 0xfb, - 0xa1, 0x51, 0xfb, 0x5e, 0x5, 0x49, 0x78, 0x57, 0x79, 0x66, 0x1b, 0xf7, - 0xa6, 0xf9, 0x46, 0x9e, 0xa, 0xf7, 0x3f, 0xf5, 0x9f, 0xa, 0x91, 0x92, - 0x47, 0xa, 0x83, 0x87, 0x9d, 0xa, 0xe, 0x7d, 0xa, 0xf7, 0x3e, 0xb0, - 0xf7, 0xad, 0xa9, 0x6d, 0xf7, 0x39, 0x12, 0xf8, 0x66, 0xf2, 0x13, 0xe8, - 0x8b, 0x4, 0xf7, 0x89, 0x9b, 0x6, 0x55, 0x7e, 0x9d, 0xa5, 0x96, 0x8e, - 0x98, 0x8f, 0x99, 0x1f, 0xa0, 0xdd, 0x5, 0x84, 0xae, 0xad, 0x88, 0xab, - 0x1b, 0xf7, 0x2d, 0xf7, 0x1, 0xdb, 0xf7, 0x8, 0xf7, 0x2b, 0xfb, 0x3b, - 0x8c, 0x5f, 0x1f, 0x53, 0x6, 0x99, 0xc9, 0x94, 0xaf, 0xa6, 0x9b, 0xab, - 0x90, 0x19, 0x13, 0xd8, 0x9b, 0xfb, 0x82, 0x7b, 0x7, 0xb5, 0x86, 0xa5, - 0x7e, 0x66, 0x1a, 0x7d, 0x83, 0x6d, 0x85, 0x74, 0x1e, 0xfb, 0x7, 0xfc, - 0x33, 0x79, 0x4b, 0x7b, 0x7f, 0x58, 0x83, 0x19, 0xf7, 0x6b, 0xf7, 0x57, - 0xd8, 0xa, 0x9c, 0xa9, 0x1b, 0xf7, 0x2, 0xa9, 0x60, 0x41, 0xfb, 0x1f, - 0x30, 0x72, 0x38, 0x6f, 0x70, 0x8d, 0x8d, 0x75, 0x1f, 0xe, 0xfb, 0x63, - 0xa3, 0x73, 0xf3, 0xdb, 0xa1, 0xf9, 0x25, 0xa2, 0x12, 0xf8, 0x3, 0xe2, - 0x62, 0xdb, 0x13, 0xb4, 0xa2, 0x87, 0x15, 0x2c, 0x76, 0x75, 0x37, 0x4c, - 0x1b, 0x7d, 0x87, 0x8f, 0x90, 0x8e, 0x8e, 0x8f, 0x8e, 0x92, 0x1f, 0x8e, - 0x91, 0x8e, 0x93, 0x92, 0x1a, 0x13, 0x74, 0x94, 0x84, 0xa6, 0x6c, 0x74, - 0x79, 0x80, 0x6a, 0x65, 0xaf, 0x75, 0xb5, 0xf7, 0xe, 0xbf, 0xf7, 0x44, - 0xb6, 0x96, 0x1e, 0xf7, 0x3, 0xf8, 0x3e, 0x5, 0xb5, 0x96, 0xb9, 0xf7, - 0x44, 0xe1, 0x1b, 0xb4, 0xa2, 0x70, 0x5b, 0x4d, 0x7b, 0x3f, 0x4b, 0x6b, - 0x1f, 0x74, 0x80, 0x7a, 0x89, 0x7f, 0x8a, 0x8, 0x7c, 0x8a, 0x85, 0x8d, - 0x7c, 0x1a, 0x80, 0x95, 0x89, 0x99, 0x8a, 0x1e, 0x13, 0xb8, 0xab, 0x88, - 0xbe, 0x89, 0xfb, 0x1, 0x1a, 0x40, 0x61, 0xfb, 0x49, 0x3a, 0x7e, 0x86, - 0x94, 0x8f, 0x91, 0x8f, 0x8f, 0x8e, 0x92, 0x1e, 0x8e, 0x90, 0x8d, 0x91, - 0x95, 0x1a, 0xa0, 0x7f, 0x9e, 0x71, 0x73, 0x77, 0x7b, 0x6d, 0x58, 0xba, - 0x7b, 0xaa, 0xf7, 0x28, 0xd3, 0xf7, 0x4b, 0xd6, 0xdc, 0x5e, 0xc6, 0x3c, - 0x91, 0x1e, 0x8e, 0x7, 0x13, 0xb4, 0xc9, 0xa1, 0xf0, 0xb2, 0xf3, 0x1a, - 0xc7, 0x64, 0xd1, 0x28, 0xfb, 0x22, 0x48, 0xfb, 0x20, 0xfb, 0x74, 0x58, - 0x1e, 0xe, 0xa1, 0xa, 0x33, 0xa, 0x13, 0xb8, 0x28, 0xa, 0xf7, 0x9b, - 0xf8, 0x13, 0x78, 0xa, 0xa1, 0xa, 0xf7, 0x9c, 0xf8, 0x82, 0x7f, 0xa, - 0x24, 0xfc, 0x92, 0x22, 0xa, 0x13, 0xb8, 0x28, 0xa, 0xe, 0x76, 0xa, - 0x8b, 0xbe, 0xf7, 0x3d, 0x77, 0x12, 0x9c, 0xdf, 0x13, 0x7c, 0xf7, 0x43, - 0x55, 0xa, 0x7d, 0xfc, 0x9e, 0x22, 0xa, 0x13, 0xbc, 0x28, 0xa, 0xe, - 0x76, 0xa, 0xda, 0xac, 0xa, 0x9c, 0xdf, 0x13, 0xb6, 0xf7, 0x4c, 0xf8, - 0x99, 0x65, 0xa, 0x74, 0x97, 0x96, 0x71, 0x1f, 0x13, 0x6a, 0x95, 0x73, - 0x71, 0x95, 0x71, 0x6c, 0xa, 0xf7, 0x1a, 0xfc, 0xe, 0x22, 0xa, 0x13, - 0xb6, 0x28, 0xa, 0xe, 0x76, 0xa, 0xce, 0xed, 0x12, 0x9c, 0xdf, 0xe5, - 0xc6, 0xa, 0x13, 0x7e, 0x33, 0xa, 0x13, 0xbe, 0x28, 0xa, 0xe5, 0xf8, - 0x54, 0x23, 0xa, 0x76, 0xa, 0xbe, 0xac, 0x8b, 0xf7, 0x17, 0xfb, 0x17, - 0xf7, 0x3a, 0x12, 0x9c, 0xdf, 0xf7, 0x1f, 0xf7, 0x38, 0xab, 0xa, 0xf7, - 0x3a, 0x13, 0x76, 0x40, 0x33, 0xa, 0x13, 0xb7, 0x0, 0x28, 0xa, 0xf7, - 0x1f, 0xf8, 0x76, 0x15, 0x54, 0xb7, 0x5f, 0xc2, 0x1e, 0x13, 0xb6, 0x40, - 0xc2, 0xb8, 0xb7, 0xc2, 0xc2, 0x5e, 0xb8, 0x54, 0x1f, 0x13, 0xb7, 0x0, - 0x54, 0x5f, 0x5e, 0x54, 0x1f, 0xac, 0x8a, 0x15, 0xb3, 0xa, 0x13, 0xba, - 0x80, 0xe5, 0xa, 0xe, 0xf7, 0xca, 0x80, 0xbd, 0xf8, 0xd, 0xa4, 0x77, - 0x9f, 0x12, 0xa2, 0xe1, 0xf7, 0x53, 0xe3, 0xf7, 0x4e, 0xcd, 0x13, 0xbc, - 0xf7, 0xba, 0xf7, 0x20, 0x15, 0x90, 0x6, 0x89, 0x83, 0x8a, 0x85, 0x82, - 0x1a, 0x49, 0xab, 0x4d, 0xd9, 0xeb, 0xe5, 0xf1, 0x95, 0x91, 0x1e, 0x81, - 0x97, 0x5, 0x48, 0x48, 0x58, 0x81, 0x76, 0x1b, 0x42, 0x8b, 0xd6, 0xa8, - 0xa3, 0x8c, 0x8d, 0x90, 0xa1, 0x1f, 0xf7, 0xa, 0xad, 0xf7, 0x20, 0xb2, - 0xf1, 0x1a, 0xc7, 0x50, 0x9d, 0x75, 0x64, 0x62, 0x76, 0x64, 0x65, 0x1e, - 0x89, 0x8d, 0x9f, 0xc3, 0x44, 0x89, 0x78, 0x60, 0x5, 0xa3, 0x80, 0x81, - 0xa2, 0x5b, 0x1b, 0xfb, 0x12, 0xfb, 0x2b, 0xfb, 0x6a, 0xfb, 0x18, 0x5c, - 0x9a, 0x50, 0xd3, 0xd7, 0xc6, 0xda, 0xd3, 0xbc, 0x1f, 0xfb, 0x4d, 0x67, - 0x15, 0xed, 0xee, 0xf7, 0x6f, 0xe9, 0x99, 0xad, 0x88, 0x54, 0x27, 0x20, - 0xfb, 0x74, 0x29, 0x1e, 0x13, 0x58, 0x69, 0x89, 0xaa, 0xad, 0x1f, 0xf7, - 0xab, 0xf7, 0x1, 0x15, 0xf7, 0x1d, 0xb5, 0xc7, 0xcd, 0xbb, 0x1b, 0x13, - 0xc, 0x9b, 0x9f, 0x7c, 0x6b, 0x56, 0x59, 0x40, 0xfb, 0x1c, 0x6f, 0x1f, - 0xe, 0xe2, 0xfb, 0x6d, 0xaf, 0xdc, 0xad, 0xc3, 0xae, 0xf8, 0x1f, 0xa0, - 0x1, 0xa5, 0xe1, 0xd7, 0xd5, 0xd7, 0xe2, 0x3, 0xf0, 0x28, 0x15, 0x94, - 0x83, 0x5, 0x91, 0x95, 0x98, 0x8c, 0x97, 0x1b, 0xa1, 0xa0, 0x7e, 0x72, - 0x6e, 0x69, 0x7d, 0x67, 0x79, 0x78, 0xde, 0xa, 0xa2, 0xaf, 0x83, 0xaf, - 0x1b, 0xc6, 0xc5, 0xa2, 0xcb, 0xb4, 0x69, 0xa5, 0x65, 0x7f, 0x7f, 0x8b, - 0x88, 0x80, 0x1f, 0xb1, 0xc3, 0xeb, 0x91, 0xc0, 0xd1, 0xa3, 0xa9, 0x19, - 0x7b, 0x95, 0x5, 0x63, 0x67, 0x5c, 0x62, 0x4f, 0x1b, 0x4e, 0x69, 0xb8, - 0xd8, 0xeb, 0xd4, 0xdb, 0xa, 0x81, 0x86, 0x82, 0x87, 0x80, 0x1f, 0x88, - 0x83, 0x88, 0x81, 0x80, 0xa3, 0xa, 0xfb, 0x22, 0xfb, 0x2d, 0xfb, 0x21, - 0xfb, 0xa, 0xd0, 0x6a, 0xc7, 0x85, 0x1e, 0xe, 0xe2, 0x80, 0xb8, 0xf7, - 0xfc, 0xa2, 0x8c, 0xa2, 0xf7, 0x73, 0x77, 0x1, 0xaa, 0xe0, 0x3, 0xf7, - 0x17, 0xf7, 0x5a, 0x15, 0x9c, 0xb7, 0x5, 0x2d, 0xa, 0xf7, 0x68, 0xf7, - 0xd0, 0x78, 0xa, 0xe2, 0x80, 0xb8, 0xf8, 0xd, 0xa2, 0xf7, 0x7a, 0x77, - 0x12, 0xaa, 0xe0, 0xf7, 0x7b, 0xcc, 0x17, 0xf7, 0x80, 0xad, 0xa, 0xf7, - 0x3a, 0xee, 0x9f, 0xa, 0x96, 0x99, 0x47, 0xa, 0x7e, 0x80, 0x9d, 0xa, - 0xfb, 0x9a, 0xfc, 0x55, 0x15, 0x9c, 0xb7, 0x5, 0x3d, 0xa, 0x13, 0xd0, - 0xb7, 0x70, 0xad, 0x58, 0x1e, 0x5b, 0xa, 0x1f, 0x54, 0xa, 0xe, 0xe2, - 0x80, 0xb8, 0xf7, 0xf3, 0xa2, 0x95, 0xa2, 0x8b, 0xbe, 0xf3, 0xcc, 0x8b, - 0x77, 0x1, 0xaa, 0xe0, 0xf7, 0x7b, 0xcc, 0x3, 0xf7, 0x27, 0x55, 0xa, - 0xfb, 0x41, 0xfc, 0x63, 0x15, 0x9c, 0xb7, 0x5, 0x2d, 0xa, 0xe, 0xe2, - 0x80, 0xb8, 0xf8, 0xd, 0xa2, 0x7b, 0xa2, 0xce, 0xed, 0x12, 0xaa, 0xe0, - 0xb0, 0xc6, 0xa, 0x13, 0xde, 0xf7, 0x17, 0xf7, 0x5a, 0x15, 0x9c, 0xb7, - 0x5, 0x13, 0xbe, 0x2d, 0xa, 0xa8, 0xf8, 0x11, 0x23, 0xa, 0xd7, 0xa, - 0xf9, 0x37, 0xe3, 0xa, 0xf7, 0x72, 0xf7, 0x6, 0x2c, 0xa, 0x9d, 0xf8, - 0x19, 0xb7, 0xa, 0xfb, 0x3, 0xf7, 0x23, 0xc5, 0xa, 0x79, 0x91, 0x56, - 0xa, 0x9e, 0x7b, 0x80, 0xa, 0xd7, 0xa, 0xf9, 0x37, 0xe3, 0xa, 0xf7, - 0x18, 0xad, 0xa, 0xf7, 0x3a, 0xef, 0x9f, 0xa, 0x97, 0x98, 0x47, 0xa, - 0x7d, 0x81, 0x9d, 0xa, 0x48, 0xfc, 0xaa, 0x2c, 0xa, 0xe, 0xd7, 0xa, - 0xf9, 0x34, 0xe3, 0xa, 0xad, 0x55, 0xa, 0xaa, 0xfc, 0xb7, 0x2c, 0xa, - 0xe, 0xd7, 0xa, 0xf8, 0x9b, 0xed, 0x1, 0xbc, 0xf2, 0xf2, 0xed, 0x3, - 0xf7, 0x72, 0xf7, 0x6, 0x2c, 0xa, 0xfb, 0x49, 0xf8, 0x5a, 0x58, 0xa, - 0xf7, 0x5d, 0x16, 0x20, 0xa, 0xe, 0x80, 0xa0, 0xf7, 0x46, 0xa0, 0xf8, - 0x6e, 0x77, 0x12, 0xa6, 0xdf, 0xf7, 0xa5, 0xde, 0x17, 0xf7, 0x3, 0xf2, - 0x15, 0xf7, 0xa, 0xe6, 0xf7, 0x5b, 0xf7, 0x4, 0xbb, 0xa1, 0x5f, 0x57, - 0x20, 0x3c, 0xfb, 0x63, 0xfb, 0x6, 0x59, 0x6d, 0xaf, 0xc4, 0x1e, 0xf7, - 0xaf, 0xf7, 0xb5, 0x15, 0xa9, 0x7d, 0x6a, 0x9e, 0x66, 0x1b, 0xfb, 0x1b, - 0xfb, 0x28, 0xfb, 0x35, 0xfb, 0x27, 0x38, 0xb8, 0x4e, 0xf5, 0xf7, 0x2d, - 0xf7, 0x1c, 0xf7, 0x43, 0xf7, 0x5c, 0xec, 0x67, 0xce, 0x59, 0xc1, 0x1f, - 0xf0, 0xb8, 0x6b, 0xa7, 0x28, 0x60, 0x64, 0xac, 0x5b, 0xa9, 0x63, 0x93, - 0x19, 0x68, 0x7a, 0xaf, 0x7d, 0xb3, 0x6b, 0xab, 0x6c, 0x19, 0xfb, 0xf, - 0x55, 0xac, 0x6e, 0xf7, 0x9, 0xbe, 0xaf, 0x5e, 0xa6, 0x5a, 0x94, 0x45, - 0x19, 0xe, 0xbe, 0xa, 0xda, 0xac, 0xa, 0xf7, 0xfd, 0xdc, 0x13, 0x6a, - 0x89, 0xa, 0xc3, 0xa, 0x13, 0xaa, 0x51, 0xa, 0x7b, 0x7, 0xc1, 0x92, - 0x76, 0x7c, 0x1f, 0x13, 0x76, 0x76, 0x4b, 0xfb, 0x74, 0x6c, 0xfb, 0x5, - 0x1e, 0xf7, 0x1b, 0xa2, 0xa, 0xa7, 0x1f, 0x80, 0xa8, 0x57, 0xa, 0x77, - 0x72, 0x98, 0x96, 0x70, 0x1f, 0x13, 0x6a, 0x95, 0x74, 0x72, 0x94, 0x72, - 0xd6, 0xa, 0xa4, 0xa, 0xa6, 0xf7, 0x19, 0x26, 0xa, 0xf7, 0x91, 0xf7, - 0xfc, 0xb7, 0xa, 0xfb, 0x5, 0xf7, 0x26, 0xc5, 0xa, 0x7b, 0x8e, 0x56, - 0xa, 0x9c, 0x7e, 0x80, 0xa, 0xa4, 0xa, 0xf7, 0x9c, 0xad, 0xa, 0xf7, - 0x33, 0xed, 0x9f, 0xa, 0x9d, 0x9a, 0x47, 0xa, 0x77, 0x7f, 0x9d, 0xa, - 0xfc, 0x17, 0xfc, 0x95, 0x26, 0xa, 0xe, 0x80, 0xa0, 0xf8, 0x18, 0xa0, - 0x8c, 0xa0, 0x8b, 0xbe, 0xf3, 0xcc, 0x8b, 0x77, 0x92, 0xa, 0xf7, 0x39, - 0x55, 0xa, 0xfb, 0xbb, 0xfc, 0xa4, 0x26, 0xa, 0xe, 0x80, 0xa0, 0xf8, - 0x21, 0xa0, 0xe7, 0xac, 0xa, 0xa6, 0xdf, 0xf7, 0xa5, 0xdf, 0x13, 0xee, - 0xf7, 0x3d, 0xf8, 0x99, 0x60, 0xa, 0x9c, 0xa6, 0x81, 0x80, 0xa7, 0x1f, - 0x80, 0xa8, 0xa9, 0x7f, 0x9e, 0x1b, 0x43, 0xa, 0x77, 0x74, 0x97, 0x96, - 0x71, 0x1f, 0x13, 0xd6, 0x95, 0x73, 0x71, 0x95, 0x71, 0x6c, 0xa, 0xfb, - 0x22, 0xfc, 0x14, 0x26, 0xa, 0xe, 0x80, 0xa0, 0xf8, 0x25, 0xa0, 0xd7, - 0xed, 0x12, 0xa6, 0xdf, 0xdb, 0xed, 0xea, 0xdf, 0x3e, 0xed, 0x13, 0xfc, - 0xa6, 0xf7, 0x19, 0x26, 0xa, 0xdb, 0xf8, 0x3d, 0x58, 0xa, 0x13, 0xfa, - 0x25, 0xa, 0xf7, 0xd2, 0x80, 0xf7, 0x3, 0xf7, 0xc, 0xcd, 0x53, 0xb9, - 0xf7, 0x16, 0xf7, 0x3, 0x12, 0xf7, 0xaf, 0xf7, 0x3, 0x23, 0xe1, 0x13, - 0xb8, 0xe1, 0xf7, 0x7a, 0x15, 0xf8, 0x8c, 0xb9, 0xfc, 0x8c, 0x6, 0xf7, - 0x8b, 0xf7, 0x2f, 0x15, 0x13, 0xd4, 0x8e, 0xa, 0x8d, 0xfc, 0x4e, 0x15, - 0x8e, 0xa, 0xe, 0x82, 0xa2, 0xf8, 0x28, 0xa1, 0x12, 0xa7, 0xdf, 0xf7, - 0xa5, 0xdf, 0x17, 0xf7, 0x20, 0xa8, 0x15, 0x78, 0x9c, 0x82, 0x97, 0xd7, - 0x1a, 0xd9, 0xd8, 0xf7, 0x62, 0xf7, 0x1f, 0x1e, 0xfb, 0x35, 0xfc, 0x28, - 0x15, 0xf7, 0x52, 0xf8, 0x1c, 0x5, 0xaa, 0x67, 0x88, 0x71, 0x58, 0x1a, - 0x7c, 0x64, 0xfb, 0x9c, 0xfb, 0x47, 0x1e, 0x60, 0x79, 0x15, 0x4b, 0xfb, - 0x17, 0x5, 0xae, 0x6, 0x13, 0xf0, 0xc8, 0xf7, 0x12, 0x5, 0x13, 0x50, - 0xf7, 0x61, 0xf7, 0x0, 0xf7, 0x54, 0xf7, 0x0, 0xcf, 0x6f, 0xc6, 0x44, - 0x9c, 0x1f, 0xc5, 0xf7, 0xb, 0x5, 0x69, 0x6, 0x54, 0xfb, 0x6, 0x5, - 0x13, 0x20, 0xfb, 0x3b, 0xfb, 0x24, 0xfb, 0x34, 0xfb, 0x25, 0x1f, 0x13, - 0x0, 0x53, 0xa1, 0x4c, 0xd5, 0x77, 0x1e, 0xe, 0xa0, 0xa, 0xf7, 0xdd, - 0xf7, 0x77, 0x3b, 0xa, 0xae, 0xf7, 0x9d, 0xb7, 0xa, 0xfb, 0x4, 0xf7, - 0x25, 0xc5, 0xa, 0x7a, 0x8f, 0x56, 0xa, 0x9d, 0x7d, 0x80, 0xa, 0xa0, - 0xa, 0xf7, 0x92, 0xf8, 0x82, 0x7e, 0xa, 0x3b, 0xfc, 0x38, 0x3b, 0xa, - 0xe, 0x82, 0xba, 0x6f, 0x76, 0xf8, 0x4f, 0xc7, 0xf7, 0x3d, 0xa9, 0xa, - 0xe5, 0x13, 0xb0, 0xf7, 0x39, 0xf8, 0x80, 0x15, 0xb2, 0x6, 0x13, 0xbc, - 0x39, 0xa, 0x92, 0xfc, 0x46, 0x53, 0xa, 0x13, 0xac, 0x2e, 0xa, 0x13, - 0x70, 0xa6, 0xa, 0x82, 0xba, 0x6f, 0x76, 0xf8, 0x9b, 0xed, 0x12, 0xb5, - 0xd8, 0xc9, 0xc6, 0xa, 0x13, 0xac, 0xf7, 0xdd, 0xf7, 0x77, 0x53, 0xa, - 0x13, 0xbc, 0x2b, 0xa, 0x13, 0x7c, 0x5d, 0xa, 0x62, 0xa, 0xfb, 0x28, - 0xf7, 0xde, 0x23, 0xa, 0xe2, 0xfb, 0x62, 0xb8, 0xf8, 0xee, 0x77, 0xf7, - 0x87, 0x77, 0x12, 0xf8, 0x16, 0xc7, 0xa, 0xdb, 0x7c, 0x5f, 0xf7, 0x5, - 0x7e, 0x1b, 0x79, 0x3d, 0x7b, 0x83, 0x5b, 0x1f, 0x98, 0xa, 0x9e, 0x4f, - 0xe2, 0xa, 0xaf, 0xfb, 0x32, 0x7a, 0xa, 0x84, 0x84, 0x8f, 0x91, 0x84, - 0x1f, 0x93, 0x81, 0x7f, 0x95, 0x79, 0x96, 0xa, 0x1f, 0x13, 0x70, 0x70, - 0xa, 0x73, 0x99, 0x82, 0x99, 0x83, 0x1f, 0x98, 0x83, 0x98, 0x84, 0x77, - 0xa7, 0xa, 0x6f, 0xf8, 0x3a, 0x7e, 0xa, 0xe, 0xfb, 0x4c, 0x76, 0xf7, - 0x6b, 0x76, 0xf8, 0x2d, 0xb6, 0xf7, 0x86, 0x77, 0x48, 0xa, 0x77, 0x1f, - 0x89, 0x8d, 0x91, 0x9c, 0xdd, 0xf7, 0xce, 0x8e, 0x97, 0x19, 0x13, 0x90, - 0x86, 0x90, 0x58, 0x81, 0x58, 0x84, 0x59, 0x85, 0x19, 0x7a, 0x7, 0xba, - 0x9a, 0x7d, 0x75, 0x7a, 0x84, 0x76, 0x85, 0x75, 0x1f, 0x6a, 0xfb, 0x9, - 0xfb, 0xf, 0xfc, 0x64, 0x76, 0x35, 0x8, 0x6b, 0x83, 0x82, 0xda, 0xa, - 0x74, 0x66, 0x90, 0xb9, 0x9e, 0xa4, 0xe5, 0x93, 0xaf, 0x1f, 0xe, 0xe2, - 0xfb, 0x4d, 0x76, 0xf9, 0x1b, 0x77, 0xe2, 0xed, 0x12, 0xf7, 0x23, 0xc6, - 0xa, 0x54, 0xb3, 0x13, 0xf4, 0xf7, 0x9c, 0xd3, 0x15, 0x6a, 0xf7, 0x3f, - 0x5, 0xd6, 0x7d, 0x5e, 0xf7, 0xf, 0x7e, 0x1b, 0x79, 0x8a, 0x3d, 0x7c, - 0x5b, 0x83, 0x8, 0x13, 0xb8, 0x98, 0xa, 0x9f, 0x43, 0xe2, 0xa, 0xae, - 0xfb, 0x26, 0x7a, 0xa, 0x82, 0x83, 0x93, 0x92, 0x81, 0x1f, 0x92, 0x82, - 0x80, 0x91, 0x7d, 0x96, 0xa, 0x1f, 0x13, 0x74, 0x70, 0xa, 0x75, 0x97, - 0x83, 0x98, 0x83, 0x1f, 0x99, 0x82, 0x9a, 0x84, 0x75, 0xa7, 0xa, 0xfb, - 0xd, 0xf8, 0x79, 0x58, 0xa, 0x13, 0xf8, 0x25, 0xa, 0xd7, 0xa, 0xf8, - 0x58, 0xe3, 0xa, 0xf7, 0x72, 0xf7, 0x6, 0x3f, 0xa, 0x64, 0x84, 0x38, - 0x7b, 0x65, 0x89, 0x19, 0x3e, 0xa, 0xe, 0x6e, 0xa, 0x54, 0x5e, 0x8b, - 0xb7, 0xac, 0xac, 0xe4, 0xab, 0xf7, 0x11, 0x1f, 0xf7, 0x22, 0xde, 0x99, - 0xbc, 0xfb, 0x23, 0x36, 0xb9, 0xf7, 0x31, 0xaa, 0xf5, 0x9b, 0x82, 0xc8, - 0x94, 0x19, 0xc4, 0xa, 0xc3, 0x9f, 0x78, 0x6e, 0x7b, 0x87, 0x77, 0x85, - 0x76, 0x1f, 0x4f, 0xfb, 0x6a, 0x28, 0x50, 0x7e, 0x5b, 0xee, 0xc6, 0x5c, - 0xfb, 0x3e, 0x7a, 0x4d, 0x79, 0x7e, 0x5a, 0x82, 0x19, 0xe, 0xd7, 0xa, - 0xf9, 0x4a, 0x77, 0x1, 0xb0, 0xd7, 0x3, 0xf7, 0x74, 0xd3, 0xa, 0x7e, - 0x88, 0x95, 0x97, 0x9c, 0x94, 0xa0, 0x8d, 0x92, 0x1f, 0xd5, 0xf7, 0xaf, - 0xec, 0xbd, 0x97, 0xb9, 0x2a, 0x59, 0xcc, 0xf7, 0x8e, 0x86, 0x90, 0x57, - 0x7f, 0x57, 0x82, 0x57, 0x85, 0x19, 0x7b, 0x7, 0xa5, 0xb2, 0x82, 0x71, - 0x81, 0x6f, 0xfb, 0x0, 0x6e, 0xfb, 0x1, 0x1f, 0x43, 0x67, 0x7f, 0x5d, - 0xd3, 0xaf, 0x5, 0x62, 0xfb, 0x28, 0x6b, 0xfb, 0xf, 0x81, 0xb5, 0xa, - 0xf8, 0xdf, 0x83, 0xab, 0x73, 0xac, 0xf7, 0xbb, 0xe9, 0xa, 0x78, 0xab, - 0x12, 0xbc, 0xf7, 0x0, 0x13, 0xb4, 0xf9, 0x84, 0xf7, 0x74, 0x15, 0x9f, - 0x89, 0xcd, 0xf7, 0x7a, 0x79, 0x8f, 0x5, 0x37, 0x64, 0x7b, 0x80, 0xfb, - 0x39, 0x1b, 0xcb, 0xf7, 0x77, 0x5, 0x9a, 0x8f, 0x91, 0x9c, 0xa6, 0x1b, - 0xeb, 0x6, 0xf7, 0xc, 0x8b, 0x69, 0x38, 0x1f, 0x9b, 0x6, 0xaa, 0xf7, - 0x2a, 0x5, 0xfc, 0x5, 0x6, 0x7b, 0x71, 0x8f, 0x8e, 0x6f, 0x1f, 0x13, - 0xac, 0x8f, 0x6e, 0x6d, 0x8d, 0x73, 0x1b, 0xfb, 0x5e, 0xfb, 0x53, 0xfb, - 0x5e, 0xfb, 0x88, 0xfb, 0x14, 0xf0, 0x27, 0xf7, 0xc, 0xb2, 0xae, 0x8d, - 0x8d, 0xad, 0x1f, 0x13, 0x74, 0x8d, 0xae, 0xae, 0x8d, 0xb3, 0x1b, 0xf7, - 0xee, 0x6, 0xcc, 0xf7, 0x3a, 0x7b, 0x91, 0x5, 0x49, 0x5b, 0x56, 0x42, - 0xfb, 0x37, 0x1b, 0x46, 0x71, 0x8d, 0xae, 0x99, 0x95, 0xad, 0x90, 0x9f, - 0x1f, 0xbf, 0xf7, 0x52, 0x5, 0xf7, 0x1f, 0xa7, 0x7a, 0x5e, 0x1f, 0x87, - 0x71, 0x8f, 0xa0, 0x85, 0x66, 0x8, 0xfb, 0xba, 0x72, 0x15, 0x13, 0xac, - 0xfb, 0x3, 0x6d, 0x72, 0x4b, 0x21, 0x1b, 0xfb, 0x1f, 0x8a, 0xf7, 0x20, - 0xb6, 0xf7, 0x45, 0xf7, 0x7, 0xf7, 0x8e, 0xf7, 0x42, 0xca, 0xb5, 0x6c, - 0x58, 0x7a, 0x7e, 0x62, 0x84, 0x70, 0x1f, 0xe, 0xf7, 0xca, 0x7f, 0xa0, - 0x76, 0xb5, 0x77, 0x76, 0xf8, 0x41, 0xa2, 0x12, 0x9f, 0xde, 0x13, 0x58, - 0xf7, 0xc3, 0xc3, 0x15, 0x62, 0x9e, 0xb3, 0x70, 0xb8, 0x1b, 0xe0, 0xd6, - 0xcf, 0xb1, 0xb0, 0x1f, 0x80, 0x96, 0x5, 0x5f, 0x52, 0x63, 0x6c, 0x59, - 0x1b, 0x79, 0x54, 0x99, 0xcf, 0xa0, 0x8d, 0xaf, 0x94, 0x99, 0x1f, 0x93, - 0x97, 0xf0, 0x8a, 0xe5, 0xcc, 0x8, 0xb7, 0xab, 0x9e, 0xb6, 0xa6, 0x1a, - 0x92, 0x85, 0xd4, 0x49, 0x61, 0x5c, 0x86, 0x40, 0x3c, 0x1e, 0x93, 0x89, - 0x73, 0xd3, 0x32, 0x1b, 0xfb, 0xe, 0xfb, 0x29, 0xfb, 0x37, 0xfb, 0x1e, - 0x1f, 0x13, 0x38, 0xfb, 0x3, 0xdf, 0x63, 0xc2, 0xd5, 0xae, 0xac, 0xad, - 0xae, 0x1e, 0xfb, 0x5c, 0xc1, 0x15, 0xf7, 0x5, 0xe1, 0xf7, 0x57, 0xe6, - 0xc3, 0x92, 0x61, 0x6e, 0x1e, 0x13, 0x98, 0x66, 0x5a, 0xfb, 0xc1, 0xfb, - 0xe, 0x46, 0x8b, 0xd6, 0xa5, 0x1e, 0xf7, 0xb2, 0xea, 0x15, 0xf7, 0x8, - 0xa9, 0xd7, 0xea, 0xc1, 0x1b, 0xa2, 0x93, 0x70, 0x74, 0x7a, 0x83, 0x5c, - 0x54, 0x60, 0x1f, 0x6a, 0x72, 0x73, 0x84, 0x44, 0x75, 0x8, 0xe, 0x79, - 0xae, 0x80, 0x76, 0xf9, 0x1c, 0xac, 0x8c, 0x77, 0x12, 0xbe, 0x9f, 0xc7, - 0xe3, 0x13, 0x6c, 0xb9, 0xa, 0x9a, 0x85, 0x83, 0x9e, 0x1f, 0x13, 0xac, - 0x81, 0xa4, 0xaa, 0x7f, 0xb2, 0x6d, 0xa, 0x13, 0x9c, 0xb3, 0xf7, 0x5b, - 0x5, 0x74, 0x6, 0x78, 0x80, 0x7a, 0x85, 0x78, 0x1b, 0x78, 0x75, 0x91, - 0x91, 0x7a, 0x1f, 0x13, 0xac, 0x91, 0x79, 0x7d, 0x91, 0x5e, 0x64, 0xa, - 0x13, 0x6c, 0xf7, 0x98, 0xf8, 0x84, 0x52, 0xa, 0xab, 0x93, 0x76, 0xf8, - 0x43, 0xa2, 0xf7, 0x70, 0x77, 0x12, 0xf7, 0x1, 0xd4, 0x8b, 0xf7, 0x28, - 0x25, 0xd7, 0x13, 0xf4, 0xc2, 0xa, 0x99, 0x9a, 0x87, 0x86, 0x99, 0x1f, - 0x86, 0x9a, 0x9b, 0x86, 0x9a, 0x1b, 0xc3, 0xe8, 0xa4, 0xf7, 0x1, 0xb5, - 0x6d, 0xb6, 0x6d, 0xb3, 0x1f, 0x6c, 0xb4, 0x6c, 0xb2, 0xab, 0x1a, 0xbc, - 0xab, 0x94, 0xa1, 0x1e, 0x13, 0xf8, 0xcc, 0xa8, 0x51, 0x52, 0x1f, 0x9b, - 0x6, 0xbb, 0xa, 0x7b, 0x80, 0x90, 0x90, 0x7e, 0x1f, 0x8f, 0x80, 0x7e, - 0x8e, 0x76, 0x1b, 0x21, 0x7d, 0x3b, 0x6c, 0x63, 0xab, 0x5d, 0xaa, 0x60, - 0x1f, 0x13, 0xf4, 0xa8, 0x63, 0xa6, 0x65, 0x6b, 0xb4, 0xa, 0xf7, 0x65, - 0xf7, 0xee, 0x52, 0xa, 0xf7, 0x5b, 0xa0, 0x76, 0xf9, 0x11, 0xdf, 0xa, - 0xf7, 0x8d, 0xc6, 0xa, 0x13, 0xcc, 0xcf, 0xa, 0x51, 0x8f, 0x6c, 0x90, - 0xb6, 0x1a, 0x94, 0x8d, 0x96, 0x8f, 0x98, 0x1e, 0xc7, 0xf7, 0x61, 0xf7, - 0x6f, 0xf7, 0xa2, 0xab, 0xb3, 0x96, 0x93, 0xa6, 0x98, 0x19, 0x13, 0xbc, - 0x9b, 0xfb, 0x51, 0x7, 0x13, 0xcc, 0x7b, 0x7, 0xb3, 0x87, 0xa6, 0x86, - 0x73, 0x1a, 0x84, 0x89, 0x83, 0x87, 0x80, 0x1e, 0x7c, 0x64, 0xfb, 0xc, - 0xfb, 0x1c, 0x5e, 0x53, 0x73, 0xe7, 0x6e, 0xf0, 0x83, 0xad, 0x8, 0x88, - 0x96, 0x8b, 0x94, 0x93, 0x1a, 0xa4, 0xa3, 0x95, 0xb8, 0x1e, 0x13, 0xbc, - 0x9b, 0xfb, 0x83, 0x7, 0x13, 0xcc, 0x7b, 0x7, 0xbf, 0x83, 0x93, 0x8a, - 0x9b, 0x52, 0xd8, 0xfb, 0xa1, 0x18, 0x4b, 0xfb, 0x5e, 0x78, 0x49, 0x67, - 0x7d, 0x5c, 0x87, 0x19, 0xf7, 0x3f, 0xf9, 0x85, 0x15, 0x13, 0xbc, 0x21, - 0xa, 0xf7, 0x5b, 0x8b, 0xaf, 0xf8, 0xd9, 0xaf, 0xf7, 0x70, 0x77, 0x50, - 0xa, 0xf7, 0xe3, 0xf9, 0x46, 0x52, 0xa, 0xab, 0x54, 0x76, 0xf8, 0x50, - 0xc7, 0xf7, 0x7d, 0x77, 0x12, 0xf7, 0xd8, 0xd0, 0x17, 0xba, 0xa, 0xac, - 0xac, 0x79, 0x77, 0xac, 0x1f, 0x74, 0xb2, 0xb2, 0x72, 0xb3, 0xaf, 0xa, - 0x82, 0x8d, 0x85, 0x8e, 0x85, 0x1f, 0x8f, 0x82, 0x90, 0x84, 0x84, 0x1a, - 0x7e, 0x7b, 0x88, 0x7f, 0x81, 0x78, 0x8b, 0xac, 0x71, 0x1e, 0x57, 0xce, - 0x7a, 0x9e, 0x49, 0x99, 0xf7, 0xb6, 0xf7, 0xec, 0x18, 0xca, 0xa, 0xc3, - 0xa1, 0xaa, 0x8e, 0xb1, 0x1b, 0xf7, 0x1c, 0x6, 0x13, 0xa0, 0x38, 0xf7, - 0x10, 0x52, 0xa, 0xfb, 0x4a, 0xa2, 0xf8, 0xa7, 0xa9, 0xf7, 0x8f, 0xa8, - 0x1, 0xa4, 0xdf, 0xf7, 0xd1, 0xdc, 0x3, 0xf7, 0xe, 0xf8, 0x8, 0x15, - 0xf7, 0x4, 0x6, 0x67, 0xfb, 0xe1, 0x5, 0xfb, 0x8, 0x7e, 0x80, 0x39, - 0x4f, 0x1b, 0x85, 0x7e, 0x8f, 0x97, 0x91, 0x8f, 0x90, 0x8e, 0x91, 0x1f, - 0x8f, 0x91, 0x8e, 0x92, 0x93, 0x1a, 0x9c, 0x7c, 0xa0, 0x73, 0x85, 0x64, - 0x89, 0x5a, 0x6d, 0xa4, 0x69, 0xc2, 0xf7, 0x18, 0xb0, 0xf7, 0x72, 0xb2, - 0x90, 0x1e, 0xb2, 0xf7, 0xb9, 0x5, 0xf7, 0xe, 0x6, 0x92, 0xa9, 0x5, - 0xfb, 0x12, 0x6, 0xf7, 0x34, 0x9f, 0x99, 0xe6, 0xcc, 0x1b, 0x97, 0x92, - 0x84, 0x85, 0x85, 0x88, 0x85, 0x87, 0x85, 0x1f, 0x88, 0x86, 0x88, 0x86, - 0x84, 0x1a, 0x72, 0xa2, 0x7d, 0x9c, 0xa5, 0x9a, 0xa0, 0xa5, 0xbe, 0x59, - 0x9d, 0x6d, 0xfb, 0x2, 0x50, 0xfb, 0x20, 0xfb, 0x20, 0x77, 0x1e, 0xfb, - 0x1, 0x6, 0xe, 0x73, 0xf8, 0x95, 0x76, 0xd1, 0xa, 0xe6, 0xf8, 0x80, - 0x15, 0xb4, 0x6, 0xf7, 0x16, 0xf3, 0xe0, 0x23, 0x5, 0xb1, 0x6, 0x33, - 0xf7, 0x3d, 0x5, 0x5a, 0x6, 0xe, 0x73, 0xf8, 0x95, 0x76, 0xd1, 0xa, - 0xf7, 0xd, 0xf7, 0xc5, 0x3, 0xf7, 0x6d, 0xf8, 0x80, 0x7b, 0xa, 0x66, - 0x6, 0xfb, 0x1e, 0x22, 0x2f, 0xf4, 0x5, 0x65, 0x6, 0xe, 0x73, 0xf8, - 0x80, 0xc3, 0xf1, 0x77, 0x1, 0xf7, 0x9, 0xa9, 0x3, 0xf7, 0x9, 0xf9, - 0x1e, 0x15, 0x61, 0x8c, 0xfb, 0x8, 0xf7, 0x19, 0xe1, 0xce, 0xd2, 0xe2, - 0x99, 0x1e, 0x6d, 0x6, 0x87, 0x8a, 0x6b, 0x29, 0x28, 0x1b, 0x28, 0x81, - 0xe1, 0x9b, 0x1f, 0xe, 0x73, 0xf8, 0x90, 0xed, 0x1, 0xf7, 0x63, 0xed, - 0x3, 0xf7, 0x63, 0xf8, 0xc1, 0x58, 0xa, 0xe, 0x73, 0xf8, 0x80, 0xad, - 0x69, 0xf7, 0x39, 0xab, 0xa, 0xf7, 0x39, 0x12, 0xf7, 0x2f, 0xae, 0x68, - 0xf7, 0x3b, 0xfb, 0x18, 0xf7, 0x18, 0xfb, 0x18, 0xf7, 0x39, 0x6a, 0xac, - 0x13, 0xa4, 0x80, 0xf7, 0x2f, 0xf8, 0xe3, 0x15, 0x54, 0xb7, 0x5f, 0xc2, - 0x1e, 0x13, 0x99, 0x0, 0xc2, 0xb9, 0xb7, 0xc2, 0xc2, 0x5d, 0xb8, 0x54, - 0x1f, 0x13, 0x44, 0x80, 0x54, 0x5f, 0x5e, 0x54, 0x1f, 0xae, 0x16, 0xaf, - 0xa8, 0xa9, 0xaf, 0xaf, 0xaa, 0x6d, 0x67, 0x67, 0x6c, 0x6e, 0x67, 0x1e, - 0x13, 0xaa, 0x80, 0xe5, 0xa, 0xe, 0x73, 0xfb, 0x3d, 0xb7, 0xf7, 0x39, - 0x77, 0x1, 0x77, 0xc5, 0x3, 0xc5, 0xb3, 0x15, 0x6e, 0x71, 0x5a, 0x44, - 0x62, 0x1a, 0x59, 0xa3, 0x76, 0xaa, 0xbb, 0xe8, 0xb2, 0xb4, 0xa3, 0x1e, - 0x75, 0x9c, 0x5, 0x6f, 0x76, 0x43, 0x72, 0x74, 0x1b, 0x7d, 0x81, 0x94, - 0x9f, 0xb3, 0xa2, 0xc5, 0xa5, 0xb1, 0x1f, 0xe, 0x73, 0xf8, 0x9c, 0xf2, - 0x12, 0xef, 0xa2, 0xa, 0xa8, 0x1f, 0x13, 0x80, 0x80, 0xa7, 0x57, 0xa, - 0x78, 0x75, 0x95, 0x96, 0x72, 0x1f, 0x96, 0x72, 0x70, 0x96, 0x70, 0xd6, - 0xa, 0x73, 0xf8, 0x82, 0xf7, 0x3e, 0x1, 0xe8, 0xf8, 0x1d, 0x3, 0xe8, - 0xad, 0xa, 0xf7, 0x36, 0xee, 0x9f, 0xa, 0x9a, 0x99, 0x47, 0xa, 0x7a, - 0x80, 0x9d, 0xa, 0x9c, 0xfb, 0x2d, 0x5e, 0xa, 0xe, 0xf7, 0x59, 0xad, - 0x69, 0xb9, 0x1, 0x85, 0xf7, 0x59, 0x15, 0xf8, 0x89, 0x6, 0x95, 0xad, - 0x5, 0xfc, 0x89, 0x6, 0xe, 0xf8, 0xa8, 0xf7, 0x59, 0xb1, 0x65, 0xb9, - 0x1, 0x85, 0xf7, 0x59, 0x15, 0xfa, 0xd, 0x6, 0x96, 0xb1, 0x5, 0xfe, - 0xd, 0x6, 0xe, 0x73, 0x91, 0xa, 0xf7, 0x3f, 0xcb, 0x4b, 0xf7, 0x5, - 0x13, 0xd0, 0xf7, 0xca, 0xf9, 0x1d, 0x15, 0x79, 0xa, 0xb9, 0x93, 0xb5, - 0xa0, 0x80, 0x96, 0x7f, 0x95, 0x1e, 0x13, 0xe0, 0x7e, 0x96, 0x7e, 0x93, - 0x9d, 0xbd, 0xa, 0xe, 0x73, 0x91, 0xa, 0xf7, 0x44, 0xf7, 0x6, 0x4b, - 0xcb, 0x13, 0xe0, 0xf7, 0x34, 0xf8, 0x48, 0x15, 0xea, 0xa, 0xc8, 0x9c, - 0xa, 0xaa, 0x69, 0x83, 0x5c, 0x84, 0x61, 0x76, 0x96, 0x81, 0x97, 0x81, - 0x1e, 0x13, 0xd0, 0x98, 0x80, 0x99, 0x82, 0x79, 0x1a, 0x66, 0x54, 0x68, - 0x77, 0x7e, 0x1e, 0xe, 0x73, 0xfb, 0x15, 0xf7, 0x7a, 0x12, 0xd2, 0xc0, - 0xa, 0x13, 0xc0, 0xb7, 0xfb, 0x4, 0x15, 0x6b, 0xa, 0x74, 0x98, 0x7f, - 0x98, 0x81, 0x1e, 0x13, 0xa0, 0x96, 0x82, 0x96, 0x82, 0x7b, 0x82, 0xa, - 0xe, 0xf7, 0x5b, 0x91, 0xa, 0xf7, 0x3a, 0xcb, 0x4b, 0xf7, 0x4, 0xec, - 0xcb, 0x4b, 0xf7, 0x4, 0x13, 0xd4, 0xf7, 0xc5, 0xf9, 0x1d, 0x15, 0x79, - 0xa, 0xb8, 0x93, 0xb5, 0xa2, 0x7e, 0x97, 0x7e, 0x95, 0x1e, 0x13, 0xe4, - 0x80, 0x94, 0x80, 0x94, 0x9b, 0xbd, 0xa, 0xf7, 0x65, 0x16, 0x79, 0xa, - 0xb8, 0x93, 0xb5, 0xa3, 0x7d, 0x96, 0x7e, 0x96, 0x1e, 0x13, 0xd8, 0x80, - 0x94, 0x81, 0x93, 0x9b, 0xbd, 0xa, 0xe, 0xf7, 0x5b, 0x91, 0xa, 0xf7, - 0x46, 0xc0, 0xa, 0xec, 0xc0, 0xa, 0x13, 0xe4, 0xf7, 0x34, 0xf8, 0x48, - 0x15, 0x59, 0xa, 0x75, 0x96, 0x80, 0x97, 0x81, 0x1e, 0x13, 0xd8, 0x97, - 0x81, 0x98, 0x82, 0x7a, 0x82, 0xa, 0xf7, 0x6e, 0x7a, 0x15, 0x59, 0xa, - 0x77, 0x94, 0x80, 0x96, 0x82, 0x1e, 0x13, 0xd4, 0x98, 0x80, 0x9a, 0x82, - 0x78, 0x82, 0xa, 0xe, 0xf7, 0x5b, 0xfb, 0x15, 0xf7, 0x7a, 0x12, 0xdf, - 0xc0, 0xa, 0xec, 0xc0, 0xa, 0x13, 0xd0, 0xc4, 0xfb, 0x4, 0x15, 0x6b, - 0xa, 0x75, 0x97, 0x7f, 0x97, 0x81, 0x1e, 0x13, 0xb0, 0x97, 0x81, 0x97, - 0x83, 0x7a, 0x82, 0xa, 0xf7, 0x65, 0x16, 0x6b, 0xa, 0x73, 0x99, 0x80, - 0x98, 0x80, 0x1e, 0x13, 0xa8, 0x96, 0x82, 0x95, 0x83, 0x7b, 0x82, 0xa, - 0xe, 0xf8, 0x3e, 0xa0, 0xf7, 0x6f, 0x77, 0x12, 0xf7, 0xb2, 0xe4, 0x17, - 0xf7, 0x31, 0xfb, 0x33, 0x15, 0xa1, 0x6, 0xbb, 0xf7, 0x66, 0x97, 0xc1, - 0xb2, 0xf7, 0x1, 0xa9, 0xb7, 0x19, 0x81, 0x8e, 0x85, 0xb5, 0xb7, 0x1a, - 0xa7, 0x8e, 0xa9, 0x91, 0xa0, 0x1e, 0xbc, 0xa7, 0x82, 0x82, 0xa0, 0x1f, - 0x84, 0x9c, 0x97, 0x85, 0x9a, 0x1b, 0xa8, 0x9b, 0xa0, 0xa0, 0x1f, 0x13, - 0xe0, 0x9f, 0x7c, 0x9f, 0x6c, 0x72, 0x7e, 0x84, 0x83, 0x7a, 0x1e, 0x84, - 0x7a, 0x75, 0x83, 0x5f, 0x1b, 0x96, 0xc3, 0x9d, 0xa7, 0x9a, 0x9f, 0x8, - 0x9a, 0x9f, 0x97, 0x98, 0xa5, 0x1a, 0xb0, 0x77, 0x9e, 0x76, 0x74, 0x72, - 0x77, 0x67, 0x7a, 0x8e, 0x7f, 0x8d, 0x7e, 0x1e, 0x8d, 0x81, 0x8d, 0x7f, - 0x7c, 0x1a, 0x78, 0x88, 0x6f, 0x84, 0x66, 0x1e, 0x60, 0x75, 0x92, 0x93, - 0x79, 0x1f, 0x92, 0x7a, 0x7e, 0x93, 0x72, 0x1b, 0x6c, 0x7c, 0x77, 0x77, - 0x76, 0x9b, 0x76, 0xa8, 0x9c, 0x99, 0x93, 0x93, 0x9e, 0x1f, 0x93, 0x9e, - 0xa4, 0x92, 0xb3, 0x1b, 0x7f, 0x45, 0x73, 0x55, 0x65, 0x63, 0x99, 0xfb, - 0x20, 0x76, 0x56, 0x61, 0xfb, 0x78, 0x8, 0xe, 0xfb, 0x57, 0x76, 0xf7, - 0x3e, 0xd3, 0x74, 0x76, 0xb2, 0x76, 0xf8, 0x58, 0xd3, 0xf7, 0x3e, 0x77, - 0x12, 0xd8, 0xe0, 0xf7, 0x39, 0xe0, 0x13, 0x9f, 0xf7, 0x30, 0x79, 0x15, - 0x7b, 0x5b, 0x4c, 0x4a, 0x5b, 0x1a, 0x79, 0x99, 0x78, 0x9e, 0xaa, 0xa0, - 0xa3, 0xdb, 0xab, 0x8e, 0xab, 0x94, 0xa9, 0x1e, 0xc2, 0xb8, 0x6f, 0xaf, - 0x1b, 0xa0, 0x9e, 0x9a, 0xa0, 0x9f, 0x78, 0x9b, 0x78, 0x1f, 0x66, 0x67, - 0x71, 0x50, 0x1b, 0x9b, 0xb3, 0x9e, 0xb5, 0xb0, 0xa4, 0x8, 0x84, 0x9d, - 0x88, 0x9d, 0x9e, 0x1a, 0xd0, 0xb3, 0xee, 0xc3, 0xb4, 0x1e, 0x7f, 0x9e, - 0x85, 0x9a, 0xa2, 0x1a, 0x9c, 0x8f, 0x9c, 0x8f, 0x9b, 0x1e, 0xc9, 0xb1, - 0x71, 0xae, 0x1b, 0x9f, 0x9f, 0x9a, 0xa0, 0x9e, 0x77, 0x9c, 0x79, 0x1f, - 0x66, 0x5b, 0x6f, 0x5c, 0x1b, 0x9b, 0xbb, 0xca, 0xcc, 0xbb, 0x1a, 0x9d, - 0x7d, 0x9e, 0x78, 0x6c, 0x76, 0x73, 0x3b, 0x1e, 0x13, 0xcf, 0x6b, 0x88, - 0x6b, 0x82, 0x6d, 0x1e, 0x54, 0x5e, 0xa7, 0x67, 0x1b, 0x76, 0x78, 0x7c, - 0x76, 0x1f, 0x13, 0xaf, 0x77, 0x9e, 0x7b, 0x9e, 0x1e, 0xb0, 0xaf, 0xa5, - 0xc6, 0x1b, 0x7b, 0x63, 0x78, 0x61, 0x66, 0x72, 0x8, 0x92, 0x79, 0x8e, - 0x79, 0x78, 0x1a, 0x46, 0x63, 0x28, 0x53, 0x62, 0x1e, 0x13, 0xcf, 0x97, - 0x78, 0x91, 0x7c, 0x74, 0x1a, 0x7a, 0x87, 0x7a, 0x87, 0x7b, 0x1e, 0x4d, - 0x65, 0xa5, 0x68, 0x1b, 0x13, 0x9f, 0x77, 0x77, 0x7c, 0x76, 0x78, 0x9f, - 0x7a, 0x9d, 0x1f, 0xb0, 0xbb, 0xa7, 0xba, 0x1b, 0xe, 0x84, 0xf7, 0x68, - 0x76, 0xad, 0x76, 0xf7, 0x87, 0x77, 0xad, 0x77, 0x12, 0xbe, 0xf7, 0x8a, - 0x13, 0x98, 0xc0, 0xf7, 0xdb, 0x15, 0x13, 0x58, 0x47, 0xc1, 0x54, 0xcf, - 0xce, 0xc1, 0xc3, 0xce, 0x1e, 0x13, 0xa8, 0xce, 0x55, 0xc0, 0x47, 0x47, - 0x56, 0x56, 0x48, 0x1e, 0xe, 0xf8, 0xa8, 0x80, 0xef, 0x12, 0xc4, 0xf7, - 0x3, 0x35, 0xef, 0xf7, 0x3b, 0xef, 0x2c, 0xf7, 0x3, 0xf7, 0x2c, 0xef, - 0x49, 0xf7, 0x3, 0x13, 0xaa, 0xdd, 0xb2, 0x15, 0x8f, 0xa, 0x13, 0xd2, - 0xf7, 0x9f, 0x16, 0x8f, 0xa, 0x13, 0xcc, 0xf7, 0xa0, 0x16, 0x6f, 0xa0, - 0x75, 0xa7, 0xa7, 0xa2, 0xa1, 0xa7, 0xa7, 0x74, 0xa1, 0x6f, 0x6f, 0x76, - 0x75, 0x6f, 0x1e, 0xe, 0xf9, 0x17, 0xb0, 0xa, 0xcb, 0xd0, 0xa, 0x75, - 0xd0, 0xa, 0xb1, 0xd0, 0xa, 0x13, 0xb5, 0xe0, 0xf9, 0x42, 0xf7, 0x9, - 0x30, 0xa, 0xfc, 0x27, 0xbc, 0x30, 0xa, 0xfb, 0xeb, 0xf8, 0x11, 0x6a, - 0xa, 0x1e, 0x13, 0xb6, 0xe0, 0x2f, 0xa, 0x13, 0x6e, 0xe0, 0x53, 0xfc, - 0x33, 0x15, 0xb5, 0x6, 0xf8, 0xad, 0xf9, 0x48, 0x5, 0x61, 0x6, 0xe, - 0x73, 0xb0, 0xf8, 0x2, 0x1, 0xbe, 0xf7, 0x7a, 0x3, 0xbe, 0xf7, 0x6c, - 0x68, 0xa, 0x96, 0x63, 0xef, 0x6c, 0xc8, 0x1f, 0xf7, 0x12, 0xf7, 0x16, - 0x9e, 0xaa, 0x9c, 0x69, 0xa, 0xe, 0x73, 0xce, 0xa, 0xc7, 0xf7, 0x72, - 0x3, 0xf7, 0x5a, 0xf7, 0x73, 0x15, 0xfb, 0x12, 0xfb, 0x16, 0x77, 0x6c, - 0x7a, 0x44, 0xa, 0x80, 0xb4, 0x27, 0xaa, 0x4e, 0x1f, 0xe, 0xfb, 0x52, - 0x96, 0x76, 0xf9, 0x42, 0x77, 0x1, 0x82, 0x81, 0x15, 0xb7, 0x6, 0xf7, - 0x36, 0xf9, 0x42, 0x5, 0x5c, 0x6, 0xe, 0x8b, 0xb8, 0xf7, 0x65, 0xb1, - 0xe1, 0xb1, 0xf7, 0x6b, 0xb0, 0x1, 0xf7, 0x4e, 0xf7, 0x1, 0xf7, 0x8a, - 0xa2, 0x3, 0xce, 0xf7, 0x92, 0x15, 0xfb, 0x41, 0xf4, 0x3a, 0xf6, 0xf6, - 0xf7, 0x12, 0xba, 0xdf, 0xbf, 0x1e, 0x7a, 0x94, 0x5, 0x53, 0x63, 0x26, - 0x64, 0x57, 0x1b, 0xfb, 0x13, 0x58, 0xbf, 0xf7, 0x31, 0x1f, 0xf7, 0xac, - 0x6, 0x97, 0xb1, 0x5, 0xfb, 0xb7, 0x6, 0xa5, 0x94, 0xab, 0x94, 0xa7, - 0x1e, 0xf7, 0xb5, 0x6, 0x99, 0xb1, 0x5, 0xfb, 0xb5, 0x6, 0xd5, 0x97, - 0xe2, 0xf7, 0x21, 0xf1, 0x1b, 0xf7, 0x6, 0x91, 0x52, 0x2e, 0x1f, 0xa2, - 0xf7, 0x22, 0x6, 0x9e, 0x63, 0x79, 0xa5, 0x2c, 0x1b, 0x52, 0xfb, 0x44, - 0x53, 0xfb, 0x58, 0x49, 0x1f, 0x28, 0x6, 0x7e, 0x65, 0x5, 0xeb, 0x6, - 0x83, 0x6e, 0x83, 0x6f, 0x89, 0x6e, 0x8, 0x4a, 0x6, 0x7e, 0x65, 0x5, - 0xe, 0xf9, 0x3, 0xf7, 0x8d, 0x9f, 0x8a, 0x76, 0xf8, 0x16, 0x9f, 0x12, - 0xf7, 0x3b, 0xd2, 0xf7, 0x8e, 0xa5, 0xf7, 0xd0, 0xd2, 0x13, 0xbc, 0xf7, - 0x9, 0xf7, 0x8d, 0x15, 0xf7, 0x3f, 0x9f, 0x6, 0x57, 0x91, 0x8d, 0x95, - 0xbb, 0x1a, 0xf7, 0xc0, 0xbd, 0x7, 0xb4, 0x9c, 0x6c, 0x66, 0x94, 0x1f, - 0x9f, 0xe3, 0xfb, 0xed, 0x33, 0x9f, 0x6, 0xb0, 0x94, 0x9c, 0xaa, 0xb5, - 0x1b, 0xbc, 0xfb, 0xc0, 0x6, 0x5b, 0x8d, 0x81, 0x57, 0x85, 0x1e, 0xf7, - 0xd3, 0x77, 0x15, 0xf7, 0x17, 0x9f, 0x6, 0x5e, 0x8f, 0x83, 0xa6, 0xb7, - 0x1a, 0xf7, 0x65, 0x8d, 0x7, 0x13, 0x7c, 0xf7, 0x29, 0xfb, 0xc6, 0x5, - 0x96, 0x6, 0xf7, 0x2c, 0xf7, 0xc8, 0x5, 0x8d, 0xfb, 0x72, 0x6, 0x13, - 0xbc, 0x5b, 0x8e, 0x81, 0x57, 0x85, 0x1e, 0x77, 0xf7, 0x3e, 0x9f, 0x7, - 0x57, 0x91, 0x8d, 0x95, 0xbb, 0x1a, 0xf7, 0x89, 0x7, 0xae, 0x97, 0x9d, - 0xb7, 0x8d, 0x1e, 0x9f, 0x24, 0x7, 0xfb, 0x34, 0xfb, 0xc9, 0xfb, 0x2e, - 0xf7, 0xc9, 0x5, 0xfb, 0xd, 0x77, 0x6, 0xa8, 0xa7, 0x77, 0x6d, 0x97, - 0x1f, 0xfb, 0x83, 0x7, 0x5f, 0x83, 0x70, 0x5f, 0x87, 0x1e, 0xe, 0xf7, - 0xd2, 0xe1, 0xf7, 0x70, 0x15, 0xf8, 0x96, 0xb5, 0xfc, 0x96, 0x6, 0xe, - 0xfb, 0x63, 0xa3, 0x73, 0xf7, 0x4, 0xf3, 0x76, 0xf8, 0x2c, 0xab, 0xf7, - 0x7b, 0xa1, 0x12, 0x13, 0xb8, 0xb8, 0xf8, 0x20, 0x15, 0xe2, 0x6, 0x81, - 0x75, 0x53, 0xfb, 0xb3, 0x74, 0xfb, 0x3, 0x8, 0x55, 0x80, 0x70, 0x22, - 0x54, 0x1b, 0x77, 0x87, 0x8e, 0x95, 0x90, 0x8e, 0x92, 0x8e, 0x93, 0x1f, - 0x13, 0x78, 0x8d, 0x91, 0x8c, 0x91, 0x91, 0x1a, 0x98, 0x82, 0xa3, 0x70, - 0x70, 0x7e, 0x68, 0x7c, 0x7a, 0x98, 0x5e, 0xcc, 0xf7, 0x9, 0xc3, 0xf7, - 0x34, 0xf7, 0xf, 0xa7, 0x1e, 0xd3, 0xf7, 0xd4, 0x5, 0xf7, 0x2f, 0x6, - 0x97, 0x8f, 0x87, 0x86, 0x88, 0x8b, 0x87, 0x8a, 0x88, 0x1f, 0x6e, 0x20, - 0x53, 0xfb, 0x52, 0x66, 0x1a, 0x6c, 0x9d, 0x77, 0xaa, 0xb8, 0xb7, 0xb9, - 0xc6, 0xb5, 0x1e, 0x7b, 0x94, 0x5, 0x78, 0x7b, 0x61, 0x59, 0x78, 0x1b, - 0x86, 0x84, 0x8d, 0x94, 0x9a, 0xe3, 0xf7, 0xce, 0x92, 0xa7, 0x1f, 0x90, - 0x9e, 0x8c, 0x91, 0x8a, 0x8e, 0x86, 0x8e, 0x18, 0x85, 0x80, 0x89, 0x89, - 0x7b, 0x1f, 0x89, 0x7b, 0x75, 0x89, 0x6f, 0x1b, 0xfb, 0x2a, 0x6, 0xf7, - 0x16, 0xb0, 0xa7, 0xf0, 0xea, 0x1b, 0x9f, 0x9a, 0x86, 0x80, 0x86, 0x88, - 0x87, 0x88, 0x85, 0x1f, 0x88, 0x85, 0x87, 0x83, 0x7d, 0x1a, 0x70, 0x9b, - 0x7d, 0xa0, 0x9f, 0xa5, 0x99, 0xb2, 0xba, 0x55, 0xa1, 0x5d, 0xfb, 0x37, - 0x58, 0xfb, 0x31, 0x2b, 0x6f, 0x1e, 0x34, 0x6, 0xe, 0xfb, 0x60, 0xa4, - 0xf7, 0x53, 0x76, 0xf8, 0x29, 0xab, 0xf7, 0x7c, 0xa1, 0x12, 0xfb, 0x21, - 0xd3, 0x17, 0xf7, 0x6c, 0xf8, 0x40, 0x15, 0xd2, 0x9d, 0xb0, 0xf7, 0x35, - 0xf7, 0x1, 0x1b, 0x13, 0xf8, 0xa9, 0x97, 0x7d, 0x82, 0x1f, 0x86, 0x7f, - 0x81, 0x7d, 0x1a, 0x85, 0x8d, 0x86, 0x8e, 0x85, 0x1e, 0x8e, 0x85, 0x8e, - 0x84, 0x89, 0x85, 0x67, 0xfb, 0x24, 0x18, 0xfb, 0xea, 0x6b, 0x15, 0xe4, - 0x6, 0x87, 0x79, 0x5f, 0xfb, 0x69, 0x64, 0xfb, 0x4e, 0x8, 0x4e, 0x7e, - 0x70, 0x2a, 0x57, 0x1b, 0x75, 0x88, 0x8f, 0x94, 0x90, 0x8e, 0x92, 0x8d, - 0x92, 0x1f, 0x8d, 0x91, 0x8d, 0x91, 0x92, 0x1a, 0x9e, 0x7c, 0x9c, 0x77, - 0x6b, 0x82, 0x6c, 0x77, 0x7e, 0x94, 0x5b, 0xd1, 0xea, 0xce, 0xf7, 0x3, - 0xf7, 0x47, 0xb3, 0x1e, 0xd0, 0xf7, 0xca, 0x5, 0xf7, 0x3a, 0x6, 0x7a, - 0x35, 0x4c, 0xfb, 0x67, 0x53, 0x1a, 0x6a, 0x9e, 0x78, 0xa7, 0xad, 0xb0, - 0x9c, 0xe3, 0xc9, 0x1e, 0x7b, 0x94, 0x5, 0x70, 0x74, 0x67, 0x61, 0x79, - 0x1b, 0x86, 0x84, 0x8d, 0x95, 0x1f, 0x13, 0x30, 0xa1, 0xf7, 0x1d, 0xf8, - 0xc0, 0x94, 0xac, 0x1e, 0x8c, 0x90, 0x8c, 0x90, 0x8f, 0x1a, 0x90, 0x89, - 0x8f, 0x88, 0x87, 0x85, 0x88, 0x89, 0x84, 0x1e, 0x88, 0x84, 0x84, 0x88, - 0x83, 0x1b, 0x83, 0x7d, 0x8e, 0x8e, 0x7b, 0x1f, 0x8d, 0x7b, 0x7a, 0x8e, - 0x7d, 0x1b, 0xfb, 0x2e, 0x4a, 0xfb, 0x1e, 0xfb, 0x8, 0x6b, 0x1f, 0x30, - 0x6, 0xe, 0x79, 0x9d, 0xf8, 0x3f, 0x98, 0xf7, 0x68, 0x9c, 0x91, 0x92, - 0x6, 0xfb, 0x64, 0x8f, 0xf8, 0x6c, 0x8d, 0x7, 0x1e, 0xa0, 0x39, 0x63, - 0xff, 0xc, 0x9, 0xaa, 0xa, 0xd6, 0xb, 0xf8, 0x88, 0x14, 0xf7, 0xf9, - 0x15, 0xb0, 0x13, 0x0, 0xcd, 0x2, 0x0, 0x1, 0x0, 0x13, 0x0, 0x17, - 0x0, 0x31, 0x0, 0x34, 0x0, 0x61, 0x0, 0x67, 0x0, 0x9c, 0x0, 0xa5, - 0x0, 0xb6, 0x0, 0xbf, 0x0, 0xf3, 0x1, 0xf, 0x1, 0x1b, 0x1, 0x27, - 0x1, 0x2c, 0x1, 0x4e, 0x1, 0x53, 0x1, 0x59, 0x1, 0x6b, 0x1, 0x72, - 0x1, 0x88, 0x1, 0xa2, 0x1, 0xb8, 0x1, 0xdf, 0x1, 0xf3, 0x2, 0x2, - 0x2, 0x21, 0x2, 0x2a, 0x2, 0x37, 0x2, 0x57, 0x2, 0x63, 0x2, 0x6e, - 0x2, 0x85, 0x2, 0x99, 0x2, 0xae, 0x2, 0xbd, 0x2, 0xe3, 0x2, 0xea, - 0x2, 0xef, 0x2, 0xf7, 0x3, 0x37, 0x3, 0x53, 0x3, 0x62, 0x3, 0x71, - 0x3, 0x7e, 0x3, 0x8f, 0x3, 0xa0, 0x3, 0xae, 0x3, 0xe7, 0x4, 0x1f, - 0x4, 0x2c, 0x4, 0x32, 0x4, 0x3f, 0x4, 0x44, 0x4, 0x4c, 0x4, 0x51, - 0x4, 0x55, 0x4, 0x61, 0x4, 0x6a, 0x4, 0x71, 0x4, 0x7f, 0x4, 0x8d, - 0x4, 0x9d, 0x4, 0xa7, 0x4, 0xb1, 0x4, 0xbb, 0x4, 0xc8, 0x4, 0xd4, - 0x4, 0xf9, 0x5, 0x3, 0x5, 0xa, 0x5, 0x2d, 0x5, 0x40, 0x5, 0x53, - 0x5, 0x5e, 0x5, 0x64, 0x5, 0x6c, 0x5, 0x8c, 0x5, 0xac, 0x5, 0xcc, - 0x5, 0xdd, 0x5, 0xe2, 0x5, 0xec, 0x5, 0xf6, 0x6, 0x2, 0x6, 0x1e, - 0x6, 0x26, 0x6, 0x36, 0x6, 0x46, 0x6, 0x55, 0x6, 0x64, 0x6, 0x6d, - 0x6, 0x76, 0x6, 0x7b, 0x6, 0x8b, 0x6, 0x9b, 0x6, 0x9f, 0x6, 0xa7, - 0x6, 0xaf, 0x6, 0xc3, 0x6, 0xd6, 0x6, 0xe2, 0x6, 0xe8, 0x6, 0xec, - 0x6, 0xf7, 0x7, 0xa, 0x7, 0x1d, 0x7, 0x22, 0x7, 0x2d, 0x7, 0x36, - 0x7, 0x48, 0x7, 0x5a, 0x7, 0x5f, 0x7, 0x67, 0x7, 0x6f, 0x7, 0x75, - 0x7, 0x86, 0x7, 0x97, 0x7, 0xa1, 0x7, 0xab, 0x7, 0xb5, 0x7, 0xbc, - 0x7, 0xc1, 0x7, 0xc6, 0x7, 0xcb, 0x7, 0xcf, 0x7, 0xd3, 0x7, 0xd7, - 0x7, 0xe3, 0x7, 0xee, 0x7, 0xf3, 0x7, 0xfc, 0x8, 0x7, 0x8, 0x16, - 0x8, 0x19, 0x8, 0x22, 0x8, 0x26, 0x8, 0x2d, 0x8, 0x33, 0x8, 0x3a, - 0x8, 0x41, 0x8, 0x46, 0x8, 0x4b, 0x8, 0x59, 0x8, 0x67, 0x8, 0x75, - 0x8, 0x83, 0x8, 0x91, 0x8, 0x9f, 0x8, 0xab, 0x8, 0xaf, 0x8, 0xb3, - 0x8, 0xc0, 0x8, 0xcd, 0x8, 0xda, 0x8, 0xe7, 0x8, 0xf4, 0x8, 0xfc, - 0x9, 0x4, 0x9, 0xb, 0x9, 0x10, 0x9, 0x1c, 0x9, 0x28, 0x9, 0x34, - 0x9, 0x3a, 0x9, 0x3e, 0x9, 0x42, 0x9, 0x4d, 0x9, 0x55, 0x9, 0x60, - 0x9, 0x6b, 0x9, 0x6f, 0x9, 0x76, 0x9, 0x7d, 0x9, 0x84, 0x9, 0x8b, - 0x9, 0x90, 0x9, 0x95, 0x9, 0x9a, 0x9, 0xa4, 0x9, 0xae, 0x9, 0xb8, - 0x9, 0xbb, 0x9, 0xbf, 0x9, 0xc8, 0x9, 0xd1, 0x9, 0xda, 0x9, 0xe3, - 0x9, 0xec, 0x9, 0xf5, 0x9, 0xfe, 0xa, 0x7, 0xa, 0x10, 0xa, 0x19, - 0xa, 0x1f, 0xa, 0x25, 0xa, 0x2b, 0xa, 0x31, 0xa, 0x37, 0xa, 0x3b, - 0xa, 0x41, 0xa, 0x46, 0xa, 0x4a, 0xa, 0x4e, 0xa, 0x52, 0x70, 0xa1, - 0x75, 0xa6, 0xa6, 0xa1, 0xa1, 0xa6, 0xa6, 0x75, 0xa1, 0x70, 0x70, 0x75, - 0x75, 0x70, 0x1e, 0xb, 0x20, 0xa, 0x25, 0xa, 0x61, 0xa, 0x71, 0xb5, - 0xb6, 0xad, 0xaf, 0xd5, 0xc7, 0x1e, 0x38, 0xa, 0x47, 0x87, 0x7b, 0x52, - 0x5, 0x89, 0x6, 0xa4, 0x6a, 0xb2, 0x5f, 0xa, 0x1e, 0xb, 0x15, 0x21, - 0xa, 0x15, 0xfb, 0x52, 0xf7, 0x1a, 0x54, 0xe0, 0xae, 0xa, 0xf7, 0x84, - 0x4f, 0xa, 0xfb, 0x6e, 0xfb, 0x71, 0x1e, 0xf4, 0x16, 0xd8, 0xeb, 0xf7, - 0xdd, 0xf7, 0x5e, 0xef, 0xaa, 0x48, 0xfb, 0x17, 0x2e, 0x2b, 0xfb, 0xdb, - 0xfb, 0x5f, 0xfb, 0x16, 0x8b, 0xf7, 0x1a, 0xd9, 0x1e, 0xb, 0xf7, 0x5c, - 0x16, 0x20, 0xa, 0xe, 0x15, 0x38, 0xb8, 0x4e, 0xf5, 0xf7, 0x2d, 0xf7, - 0x1d, 0xf7, 0x49, 0xf7, 0xf, 0xcd, 0x6c, 0xdd, 0xfb, 0x8, 0xfb, 0x26, - 0xfb, 0x28, 0xfb, 0x35, 0xfb, 0x27, 0x1e, 0xdf, 0x8a, 0x15, 0xc9, 0xe6, - 0xf7, 0x76, 0xf7, 0x4, 0xb8, 0xa4, 0x7d, 0xfb, 0x5, 0x5a, 0x3c, 0xfb, - 0x7e, 0xfb, 0x6, 0x59, 0x6d, 0xaa, 0xe6, 0x1e, 0xb, 0x35, 0xa, 0x83, - 0x68, 0x7c, 0x19, 0x45, 0xa, 0xb, 0x36, 0xa, 0xaa, 0xa2, 0x7c, 0x4d, - 0x2e, 0x2c, 0xfb, 0x67, 0x21, 0x70, 0x6a, 0x9d, 0xc0, 0x1e, 0xb, 0x3a, - 0xa, 0xeb, 0xa, 0x37, 0xa, 0xd2, 0xa, 0xb, 0xf7, 0x88, 0x9b, 0x6, - 0x58, 0x8f, 0x7c, 0xa1, 0xa6, 0x1a, 0x9e, 0x92, 0xa1, 0x90, 0x9f, 0x1e, - 0xf5, 0xf8, 0x1b, 0xa3, 0xe1, 0x90, 0xa0, 0xce, 0x94, 0x19, 0x93, 0xa, - 0xbc, 0x85, 0x9c, 0x76, 0x6f, 0x1a, 0x79, 0x87, 0x76, 0x85, 0x76, 0x1e, - 0xfb, 0x0, 0xfc, 0x1b, 0x73, 0x36, 0x87, 0x77, 0x4a, 0x81, 0x19, 0xb, - 0x72, 0xa, 0x70, 0xa8, 0xd8, 0x9d, 0x90, 0x42, 0xa, 0x79, 0x87, 0x9a, - 0x97, 0x8d, 0x8c, 0x94, 0xe6, 0xf7, 0xfb, 0x1f, 0x56, 0x81, 0x59, 0x82, - 0x59, 0x85, 0x8, 0xb, 0x3f, 0xa, 0x5, 0x84, 0x64, 0x2c, 0x79, 0x71, - 0x1b, 0x3e, 0xa, 0xb, 0x3d, 0xa, 0xb7, 0x70, 0xad, 0x58, 0x5b, 0xa, - 0x1e, 0x54, 0xa, 0xb, 0x2b, 0xa, 0x5d, 0xa, 0xb, 0xe5, 0x4d, 0xb9, - 0x58, 0xfb, 0x1, 0x3a, 0xfb, 0x11, 0x27, 0x1e, 0xc9, 0x5a, 0x15, 0xd1, - 0xc0, 0xf7, 0x4c, 0xd6, 0xb5, 0x94, 0x65, 0x6f, 0x4e, 0x56, 0xfb, 0x4f, - 0x3e, 0x6a, 0x7b, 0xa9, 0xa9, 0x1e, 0xb, 0x6a, 0xa, 0x2f, 0xa, 0xb, - 0x15, 0xb2, 0x6, 0x39, 0xa, 0xb, 0x4e, 0xa, 0x69, 0x6c, 0x97, 0xb0, - 0x91, 0x8b, 0x91, 0x8d, 0x92, 0x1f, 0x8e, 0x97, 0x98, 0x3c, 0xa, 0xb, - 0xf7, 0xd2, 0xf7, 0x1f, 0x22, 0xa, 0xb, 0x15, 0x32, 0xa, 0x7e, 0x80, - 0xfb, 0x2e, 0x74, 0xa, 0xf7, 0x2f, 0xa9, 0x7d, 0x4f, 0x7e, 0x8a, 0x7d, - 0x8a, 0x7a, 0x41, 0xa, 0xe, 0x1e, 0x7b, 0xf7, 0x8a, 0x9b, 0x7, 0x51, - 0x90, 0x86, 0xa0, 0x7f, 0xd1, 0x2c, 0xf8, 0xc0, 0x18, 0x71, 0x6, 0xfb, - 0xce, 0xfc, 0xb3, 0x5a, 0x35, 0x76, 0xb, 0x6e, 0x8e, 0x32, 0xef, 0xc7, - 0xc0, 0xa9, 0xf7, 0xe, 0xde, 0x1e, 0xfb, 0x6b, 0x6b, 0x15, 0xe5, 0xe5, - 0xf7, 0x70, 0xf7, 0x9, 0xb, 0x7b, 0x7, 0xb1, 0xa9, 0x7a, 0x5f, 0x79, - 0x2f, 0xfb, 0xd6, 0x82, 0x6c, 0x1f, 0x5f, 0x7e, 0x58, 0xfb, 0x1e, 0xfb, - 0x1e, 0x1b, 0x4b, 0x40, 0xab, 0xe4, 0xc1, 0xf4, 0xf7, 0xe8, 0x97, 0xb9, - 0x1f, 0xa9, 0x93, 0xa4, 0xa2, 0xc5, 0x1b, 0xb, 0x7f, 0x95, 0x5, 0x5f, - 0x5e, 0x77, 0x72, 0x7c, 0xec, 0xa, 0x91, 0x92, 0xaa, 0xe7, 0xf7, 0xe9, - 0x8e, 0x97, 0x1f, 0xb, 0xf7, 0x1d, 0xf3, 0xdd, 0x23, 0x5, 0xaf, 0x6, - 0x33, 0xf7, 0x3d, 0x5, 0x5a, 0x6, 0xb, 0x15, 0xc5, 0x86, 0x9c, 0x7f, - 0x67, 0x59, 0x27, 0xfb, 0xae, 0x7c, 0xa, 0xf7, 0x2d, 0xd2, 0xe3, 0xf7, - 0x19, 0xb2, 0x1e, 0xf5, 0xf8, 0x7, 0x95, 0xae, 0x97, 0x9c, 0xc6, 0x96, - 0x19, 0xb, 0x53, 0xa, 0x2e, 0xa, 0x13, 0x78, 0x62, 0xa, 0xb, 0xb4, - 0xb9, 0xf7, 0x42, 0x8, 0xf7, 0x37, 0x8b, 0x86, 0x5a, 0x40, 0xa, 0xb, - 0xe5, 0xae, 0xd9, 0xe1, 0xc1, 0x1b, 0x9e, 0x98, 0x84, 0x64, 0x83, 0x81, - 0xfb, 0x10, 0xfb, 0x62, 0x61, 0x1f, 0x84, 0x75, 0x15, 0xa7, 0x8f, 0x5, - 0xf7, 0x36, 0xa2, 0xed, 0xdc, 0xda, 0x1a, 0xb, 0x7b, 0x7, 0xc2, 0x90, - 0x7c, 0x76, 0x1f, 0x6f, 0x3f, 0x4b, 0xa, 0xb, 0x4a, 0xa, 0x8f, 0x99, - 0x1f, 0xe3, 0xf7, 0xd6, 0x88, 0x8d, 0xb, 0x7b, 0x88, 0x7b, 0x87, 0x7c, - 0x1f, 0x9f, 0x86, 0xcf, 0xf7, 0x7c, 0x79, 0x8f, 0x81, 0x75, 0x82, 0x78, - 0x82, 0x7d, 0x19, 0x6c, 0x75, 0xb, 0x63, 0xa, 0xdb, 0x8f, 0x5d, 0x50, - 0x79, 0x1f, 0xfb, 0x9, 0xfc, 0x40, 0x7a, 0x4d, 0x76, 0x7a, 0x5a, 0x82, - 0x19, 0xb, 0x1f, 0xda, 0xf7, 0xbf, 0x5, 0x41, 0x6, 0x64, 0x20, 0x75, - 0x4c, 0x5a, 0x41, 0x8, 0x57, 0x69, 0x4c, 0x2d, 0x60, 0x1b, 0xb, 0xb8, - 0xb3, 0xb0, 0xce, 0x96, 0x1f, 0x6f, 0x6, 0x76, 0x84, 0x83, 0x74, 0x65, - 0x1b, 0xb, 0x1a, 0x86, 0x8d, 0x88, 0x91, 0x94, 0xd0, 0xc9, 0xa7, 0xab, - 0x1e, 0xaa, 0xa6, 0xbf, 0xb1, 0xa8, 0xa2, 0x8, 0x94, 0x7, 0x84, 0x97, - 0x5f, 0xc1, 0x7b, 0x9d, 0x8, 0x9c, 0x7c, 0x56, 0xd9, 0x7e, 0x1b, 0x83, - 0x8b, 0x85, 0x89, 0xb, 0xf7, 0x76, 0xf7, 0x8a, 0x4c, 0xa, 0xb, 0xf9, - 0x54, 0x31, 0xa, 0xb, 0x9a, 0x1a, 0x9d, 0x7c, 0x9c, 0x76, 0x80, 0xb, - 0x12, 0xf8, 0xf, 0xe5, 0x17, 0xf7, 0x9, 0xb8, 0x15, 0xb2, 0xb3, 0xf7, - 0x1c, 0xa4, 0xcb, 0x1e, 0xcf, 0xa5, 0xc5, 0xb9, 0xba, 0x1b, 0xcc, 0x8c, - 0x51, 0x70, 0xfb, 0xb, 0x31, 0xfb, 0x4e, 0xfb, 0xe, 0x72, 0x72, 0x96, - 0xa5, 0x1f, 0x7d, 0x64, 0x15, 0x7f, 0xa2, 0x9f, 0x86, 0xa4, 0x1b, 0xf7, - 0x1e, 0xf7, 0x34, 0xf7, 0x3a, 0xf7, 0x2f, 0xd3, 0x6d, 0xc6, 0x32, 0x39, - 0x52, 0x42, 0x68, 0xb, 0x75, 0x74, 0x78, 0x77, 0x7b, 0x7a, 0x8, 0x40, - 0x3a, 0x7d, 0x74, 0x7d, 0x44, 0xa, 0x84, 0x9d, 0x5a, 0xa1, 0x5a, 0x1f, - 0x95, 0x73, 0x97, 0x74, 0x95, 0x77, 0x8, 0xb, 0x15, 0x51, 0x62, 0x6e, - 0x77, 0x7f, 0x1b, 0x82, 0x84, 0x93, 0x92, 0x97, 0x97, 0xb3, 0xb, 0xfb, - 0x82, 0x5c, 0x1a, 0x79, 0x8b, 0x5f, 0xba, 0xc3, 0xb7, 0xc2, 0xc6, 0xb2, - 0x1e, 0xb, 0x15, 0xf7, 0x29, 0xf7, 0x97, 0x5, 0x8c, 0x6, 0xb7, 0xfb, - 0x97, 0x5, 0xb, 0x74, 0x39, 0x77, 0x37, 0x79, 0x1a, 0x7c, 0x8d, 0x66, - 0xb8, 0xbd, 0xa5, 0xa5, 0xe6, 0xca, 0x1e, 0xb, 0xf8, 0x8f, 0x6, 0xc9, - 0xf7, 0x36, 0x7b, 0x93, 0x5, 0x28, 0x44, 0x60, 0x65, 0xfb, 0x55, 0x1b, - 0xb, 0xf7, 0x5d, 0xf7, 0x3c, 0xfb, 0x4, 0xd6, 0xfb, 0xc, 0xfb, 0x47, - 0xfb, 0x78, 0xb, 0x1, 0x85, 0xf8, 0xf8, 0x3, 0x85, 0x16, 0xf8, 0x8d, - 0x6, 0xc1, 0xf7, 0x3c, 0x78, 0x8e, 0x5, 0x24, 0x5a, 0x5c, 0x6b, 0xfb, - 0x38, 0x1b, 0xfb, 0x2b, 0x6, 0xf8, 0x77, 0xf8, 0xef, 0x5, 0x99, 0xfc, - 0x7a, 0x7, 0x5d, 0xfb, 0x26, 0x9e, 0x86, 0x5, 0xd0, 0xad, 0xab, 0xb9, - 0xf7, 0x2d, 0x1b, 0xf7, 0x35, 0x6, 0xfc, 0x73, 0xfc, 0xef, 0x5, 0xb, - 0x6e, 0x8d, 0x6d, 0xb9, 0xc1, 0xae, 0xb9, 0xce, 0xbd, 0x1e, 0x7d, 0x98, - 0x5, 0x5c, 0x66, 0x72, 0x6b, 0x77, 0x1b, 0x89, 0x7d, 0x8d, 0x9a, 0x1f, - 0xa9, 0xdb, 0xf7, 0x8b, 0xb6, 0x1a, 0xb5, 0x74, 0xa3, 0x5d, 0x38, 0x2f, - 0xfb, 0x1f, 0x41, 0x5c, 0x1e, 0x89, 0x8d, 0xcb, 0xf7, 0x65, 0x88, 0x8d, - 0x55, 0x80, 0x55, 0x81, 0x55, 0x81, 0x19, 0xb, 0x7b, 0xa, 0x67, 0x6, - 0xfb, 0x22, 0x22, 0x31, 0xf4, 0x5, 0x66, 0x6, 0xe, 0x15, 0x8e, 0x6, - 0x4d, 0xa, 0xb, 0x73, 0xa, 0x57, 0x5f, 0xb4, 0xc8, 0x98, 0x8e, 0x98, - 0x90, 0x99, 0x1f, 0xb, 0xf8, 0x80, 0x31, 0xa, 0xb, 0x84, 0x1b, 0x75, - 0x7d, 0x7c, 0x77, 0x7a, 0xb, 0xa7, 0x80, 0x71, 0xa, 0xb, 0x15, 0x20, - 0xa, 0xb, 0xea, 0xa, 0xc7, 0x9c, 0xa, 0xab, 0x69, 0x83, 0x5e, 0x83, - 0x61, 0xb, 0x7d, 0xa, 0xf7, 0x76, 0xaf, 0xf8, 0x2a, 0x77, 0xb, 0xfb, - 0x21, 0xfb, 0x36, 0x5c, 0xa, 0xb, 0xfb, 0x3c, 0xfb, 0x23, 0x4c, 0xab, - 0x3d, 0xf4, 0xef, 0xe6, 0xe7, 0x9b, 0x96, 0xb, 0x7d, 0x7, 0xb4, 0x9b, - 0x81, 0x6e, 0x1f, 0x70, 0x42, 0xfb, 0x86, 0x5f, 0x1a, 0xb, 0x9e, 0xa, - 0xf7, 0x3b, 0xf0, 0x9f, 0xa, 0x95, 0x97, 0x47, 0xa, 0x7f, 0x82, 0x9d, - 0xa, 0xb, 0x60, 0xfb, 0x19, 0xfb, 0x2d, 0xfb, 0x4f, 0xfb, 0x27, 0xb, - 0x15, 0xa8, 0x6, 0xa7, 0x92, 0x9c, 0x9e, 0xa7, 0x1b, 0xb, 0x15, 0x7b, - 0x4e, 0x86, 0x75, 0x74, 0x1a, 0x7a, 0x8b, 0xb, 0x5f, 0x9e, 0x7c, 0xaf, - 0xe5, 0xd5, 0xf7, 0x11, 0xf7, 0x5, 0xcf, 0x1e, 0xb, 0x1f, 0xa0, 0x89, - 0xaa, 0xf7, 0x2d, 0x5, 0xfc, 0x85, 0x7b, 0x6, 0xb, 0x1b, 0x2e, 0x3c, - 0x48, 0x2a, 0x4a, 0x90, 0x80, 0xf7, 0x1e, 0xfb, 0x27, 0x1f, 0xac, 0x68, - 0xb0, 0x6c, 0x4b, 0x1a, 0x59, 0x68, 0x39, 0x2d, 0x31, 0x53, 0xda, 0xe4, - 0x93, 0x8c, 0x90, 0x8c, 0x93, 0x1e, 0x77, 0x8d, 0x5, 0xb, 0x66, 0xa, - 0xa8, 0x1f, 0x80, 0xa7, 0x57, 0xa, 0x77, 0xb, 0x60, 0xa, 0x9d, 0xa8, - 0x80, 0x80, 0xb, 0xf8, 0x64, 0xf7, 0x27, 0x15, 0xf7, 0x4c, 0xf7, 0x49, - 0x8d, 0x89, 0x8c, 0x8c, 0x51, 0xfb, 0x48, 0x5, 0xfb, 0x45, 0x61, 0x15, - 0xf7, 0x3c, 0x6, 0x6b, 0x22, 0x5, 0xca, 0x6, 0xa9, 0xf3, 0x5, 0xc5, - 0x6, 0xb, 0x15, 0x92, 0x7f, 0xb7, 0x55, 0x9b, 0x79, 0x8, 0x7a, 0x9a, - 0xc0, 0x3d, 0x98, 0x1b, 0x93, 0x8b, 0x91, 0x8d, 0xb, 0x1a, 0x90, 0x89, - 0x8e, 0x85, 0x82, 0x46, 0x4d, 0x6f, 0x6b, 0x1e, 0x6c, 0x70, 0x57, 0x65, - 0x6e, 0x74, 0x8, 0xb, 0x15, 0x45, 0xb9, 0x50, 0xd4, 0xde, 0xf0, 0xed, - 0xf7, 0xc, 0xb, 0x94, 0x7a, 0x5, 0x59, 0xa, 0xb, 0x1b, 0x41, 0x7a, - 0x47, 0x65, 0x81, 0x1f, 0xb, 0x1b, 0xf7, 0x19, 0xd1, 0xf3, 0xe9, 0xcd, - 0x77, 0xb3, 0x2e, 0xe6, 0x1f, 0x35, 0xe1, 0x7e, 0xa2, 0xba, 0x1a, 0xce, - 0xbe, 0xac, 0xc2, 0xf7, 0xd, 0x8f, 0x22, 0x52, 0x1e, 0x9d, 0x88, 0x5, - 0xb, 0xf7, 0x5b, 0x8b, 0xaf, 0xf8, 0xfd, 0x77, 0x1, 0x83, 0xf8, 0xcb, - 0x3, 0x83, 0x16, 0xf8, 0x91, 0x6, 0xc5, 0xf7, 0x47, 0x77, 0x91, 0x5, - 0xfb, 0x26, 0x49, 0x3a, 0x88, 0xfb, 0xd, 0x1b, 0xb, 0x1f, 0x7a, 0x99, - 0x5, 0x5c, 0x5b, 0x45, 0x44, 0xfb, 0x5, 0x1b, 0xfb, 0xb, 0x54, 0xde, - 0xf7, 0x17, 0xf7, 0x27, 0xf1, 0xf7, 0x86, 0xf7, 0x5c, 0xf7, 0x23, 0x96, - 0xfb, 0x1a, 0x6f, 0x1f, 0xb, 0xf7, 0xb, 0xf7, 0xac, 0xf8, 0x66, 0xf7, - 0xb, 0xaf, 0x77, 0xa5, 0x66, 0x71, 0x80, 0x76, 0x7d, 0xb, 0x9d, 0x1b, - 0x43, 0xa, 0xb, 0x7d, 0x94, 0x5, 0x5f, 0x68, 0x6f, 0x68, 0x78, 0x1b, - 0xb, 0x7f, 0x97, 0x5, 0x62, 0x59, 0x61, 0x69, 0x55, 0x1b, 0xb, 0x1b, - 0xbc, 0xf7, 0x40, 0x5, 0xd5, 0xa0, 0x82, 0x98, 0xe0, 0x1b, 0xb, 0x2d, - 0x68, 0x1e, 0x98, 0x83, 0x5, 0x96, 0x94, 0xa4, 0xb5, 0xc5, 0x1b, 0xba, - 0xa8, 0x67, 0x6d, 0x7c, 0x8a, 0x67, 0x2f, 0x32, 0x1f, 0xfb, 0x19, 0xfb, - 0x16, 0x5, 0xb, 0x80, 0xbc, 0x70, 0x76, 0xf8, 0x41, 0xa1, 0xb, 0xb7, - 0xa, 0xfb, 0x2, 0xf7, 0x22, 0xc5, 0xa, 0x78, 0x92, 0x56, 0xa, 0x9f, - 0x7a, 0x80, 0xa, 0xb7, 0xa, 0xfb, 0x2, 0xf7, 0x23, 0xc5, 0xa, 0x78, - 0x91, 0x56, 0xa, 0x9f, 0x7b, 0x80, 0xa, 0x82, 0x9c, 0x5, 0x52, 0x6f, - 0x42, 0x4f, 0x48, 0x1a, 0x60, 0xa4, 0x6b, 0xad, 0x93, 0xb, 0x65, 0x1a, - 0x70, 0x61, 0x5a, 0x72, 0x6e, 0x1e, 0x63, 0x69, 0x7e, 0x82, 0x7b, 0x1b, - 0xb, 0x15, 0xb9, 0x6, 0xf7, 0x37, 0xf7, 0x3d, 0x5, 0xb, 0x26, 0x1a, - 0xfb, 0x6, 0xf7, 0x3, 0x54, 0xf1, 0xb, 0xf7, 0x92, 0xa0, 0x76, 0xb, - 0x9e, 0xa, 0xf7, 0x38, 0xee, 0x9f, 0xa, 0x98, 0x99, 0x47, 0xa, 0x7c, - 0x80, 0x9d, 0xa, 0xb, 0x9e, 0xa, 0xf7, 0x3a, 0xf0, 0x9f, 0xa, 0x96, - 0x97, 0x47, 0xa, 0x7e, 0x82, 0x9d, 0xa, 0xb, 0x90, 0x87, 0x1f, 0xe, - 0x1f, 0xc3, 0xf2, 0x5, 0xf7, 0x70, 0x6, 0xb, 0x1a, 0x66, 0x54, 0x69, - 0x77, 0x7e, 0x1e, 0xb, 0x95, 0x84, 0x5, 0x94, 0x95, 0xa2, 0xa6, 0xb4, - 0x1b, 0x9d, 0xaa, 0x7e, 0x63, 0x51, 0x31, 0x71, 0x52, 0x82, 0x1f, 0xe, - 0x15, 0x6c, 0xa3, 0x73, 0xaa, 0xaa, 0xa4, 0xa3, 0xaa, 0xaa, 0x72, 0xa4, - 0x6c, 0x6c, 0x73, 0x72, 0x6c, 0x1e, 0xe, 0x74, 0xa8, 0xa8, 0xa3, 0xa2, - 0xa8, 0xa8, 0x73, 0xa3, 0x6e, 0x6e, 0xb, 0xc7, 0xf4, 0xf8, 0x41, 0xf4, - 0xb, 0x9a, 0xa, 0x77, 0xb, 0x5a, 0xa, 0xf7, 0x78, 0x77, 0x1, 0x58, - 0xf8, 0xfb, 0x3, 0xb, 0x99, 0x16, 0xd6, 0x6, 0xb4, 0xf7, 0x1c, 0x99, - 0xb6, 0xb8, 0xd0, 0x8, 0xc3, 0xb0, 0xc9, 0xe1, 0xbb, 0x1b, 0xb, 0x15, - 0x6d, 0xa4, 0x72, 0xa9, 0xa9, 0xa4, 0xa4, 0xa9, 0xa9, 0x72, 0xa4, 0x6d, - 0x6d, 0x72, 0x72, 0x6d, 0x1e, 0xb, 0x8a, 0x16, 0x4e, 0xa, 0xb, 0x15, - 0xbe, 0x6, 0xf8, 0x5b, 0xf9, 0x42, 0x5, 0x58, 0x6, 0xb, 0xf7, 0x92, - 0x8b, 0xac, 0xf7, 0xbb, 0xe9, 0xa, 0xb, 0xa3, 0x9e, 0x9e, 0xa3, 0xa3, - 0x78, 0x9e, 0x73, 0x73, 0x78, 0x78, 0x73, 0x73, 0x9e, 0x78, 0xa3, 0x1f, - 0xb, 0x6f, 0xa1, 0x75, 0xa7, 0xa7, 0xa1, 0xa1, 0xa7, 0xa7, 0x75, 0xa1, - 0x6f, 0x6f, 0x75, 0x75, 0x6f, 0x1e, 0xb, 0x1, 0x86, 0xa, 0x3, 0xb, - 0xf8, 0x5d, 0x76, 0xf7, 0x7a, 0x77, 0x12, 0xb, 0x1, 0xa6, 0xdf, 0xf7, - 0xa5, 0xdf, 0x3, 0xb, 0x9b, 0xfb, 0x8b, 0x7b, 0x7, 0xb, 0x94, 0xb6, - 0x5, 0x54, 0x6, 0xda, 0xf7, 0x97, 0x5, 0x67, 0x6, 0xfb, 0xa3, 0xfb, - 0x97, 0x5, 0xb, 0x6, 0x89, 0x90, 0xf7, 0x6, 0xf7, 0x2, 0x5, 0xdb, - 0xd8, 0x9e, 0xa3, 0xb3, 0x1a, 0xb4, 0x64, 0xb, 0x1b, 0x76, 0x7a, 0x7a, - 0x76, 0x61, 0xb6, 0x88, 0x93, 0xb, 0x1a, 0x74, 0x9a, 0x7d, 0xa4, 0xa4, - 0xa1, 0xa7, 0xa7, 0xb, 0x7a, 0x7, 0x8e, 0x97, 0x92, 0x8c, 0x9a, 0x1b, - 0xc4, 0xb, 0x87, 0xa, 0xf7, 0x87, 0x77, 0x1, 0xb, 0xa0, 0x76, 0xf9, - 0x21, 0xb, 0xf7, 0x4f, 0x9b, 0x6, 0xb, 0xce, 0x1a, 0xb6, 0x72, 0xb, - 0x85, 0x85, 0x1e, 0xb, 0x15, 0xae, 0x6, 0xb, 0x5, 0x96, 0x92, 0xb, - 0x82, 0xba, 0x6f, 0x76, 0xf9, 0x37, 0xa9, 0xa, 0xe5, 0x13, 0xb8, 0xb, - 0x76, 0xa, 0xf7, 0x73, 0x77, 0x12, 0x9c, 0xdf, 0x13, 0x78, 0xb, 0xf8, - 0x99, 0x66, 0xa, 0xb, 0x97, 0xa, 0xaa, 0x72, 0xbd, 0x37, 0xfb, 0x28, - 0xb, 0x80, 0xa0, 0xf8, 0x2e, 0xa0, 0xf7, 0x73, 0x77, 0x92, 0xa, 0xb, - 0x72, 0x7e, 0x6c, 0xaf, 0x83, 0xb2, 0xf7, 0x10, 0xc6, 0xe0, 0xce, 0xcd, - 0x60, 0x9c, 0xb, 0x62, 0xa, 0xe, 0x1a, 0x56, 0x3c, 0xfb, 0x1b, 0x60, - 0x45, 0x1e, 0xb, 0x77, 0x90, 0xa, 0xb, 0x77, 0x12, 0xb5, 0xd8, 0xf7, - 0x3e, 0xb, 0xb6, 0xa, 0xb4, 0xf9, 0xa, 0xb, 0xfb, 0x17, 0xf7, 0x17, - 0xfb, 0x17, 0xb, 0xc7, 0x4f, 0xf2, 0x8c, 0x77, 0x12, 0xb, 0xf8, 0x82, - 0x9e, 0xa, 0xb, 0xf7, 0x74, 0xf7, 0x58, 0xb, 0x1b, 0xbe, 0xb6, 0xb0, - 0xb1, 0xab, 0x72, 0x90, 0x82, 0x74, 0x7f, 0x7d, 0x7a, 0xb, 0x7f, 0x9f, - 0x89, 0x76, 0xf7, 0xe5, 0x9f, 0xf7, 0xcc, 0x9f, 0x8e, 0x77, 0x12, 0xb, - 0x83, 0x16, 0xf7, 0x91, 0x6, 0xf7, 0xba, 0xf7, 0x35, 0xf7, 0x4d, 0xf7, - 0x5e, 0xb, 0x1b, 0xf7, 0x45, 0xad, 0xfb, 0xf, 0x26, 0x4e, 0x6a, 0xfb, - 0xc8, 0xfb, 0xcf, 0xb, 0xaf, 0xa8, 0xa9, 0xaf, 0xaf, 0xa9, 0x6d, 0x67, - 0x67, 0x6d, 0x6e, 0x67, 0x1e, 0xb, 0x1a, 0x6a, 0x7b, 0x5b, 0x53, 0x3a, - 0x7b, 0xe7, 0xb7, 0x84, 0x1e, 0x7b, 0x6, 0xb, 0x1a, 0x6f, 0x8f, 0x69, - 0xb7, 0xc9, 0xb2, 0xbb, 0xd8, 0xbe, 0x1e, 0xe, 0xf8, 0x1, 0x79, 0xb, - 0x15, 0xaa, 0x6, 0xb, 0xb0, 0xf7, 0x5b, 0x5, 0x76, 0x6, 0x81, 0x86, - 0x7b, 0x7f, 0x6e, 0x1b, 0xb, 0x9c, 0x7c, 0x15, 0x9d, 0x6, 0x98, 0x8f, - 0x9c, 0x9f, 0xa7, 0x1b, 0x9a, 0xb, 0x89, 0x87, 0x15, 0x94, 0x82, 0x5, - 0x96, 0x98, 0x9a, 0x92, 0x9c, 0x1b, 0xb, 0x9f, 0xf7, 0x1f, 0x5, 0x7d, - 0x6, 0x83, 0x86, 0x7b, 0x81, 0x7a, 0x1b, 0xb, 0x7d, 0x72, 0x84, 0x1e, - 0x82, 0x6b, 0x82, 0xfb, 0xb, 0x86, 0x54, 0x8, 0xb, 0x1a, 0xb0, 0xc2, - 0xad, 0x9f, 0x98, 0x1e, 0xb, 0x97, 0x76, 0xa9, 0x76, 0xf8, 0x1a, 0xbe, - 0xb, 0xb6, 0xa, 0xac, 0xf8, 0xfe, 0xac, 0xb, 0xf7, 0x4, 0x4b, 0xcb, - 0xb, 0x15, 0xf7, 0x7b, 0x6, 0xac, 0xda, 0x80, 0x93, 0x5, 0x76, 0x7f, - 0xb, 0x9b, 0x7e, 0x15, 0x9b, 0x6, 0x96, 0x91, 0x99, 0x95, 0x99, 0x1b, - 0xb, 0x9e, 0x91, 0x7d, 0x79, 0x1f, 0x63, 0x41, 0xfb, 0x88, 0x73, 0x1a, - 0xb, 0x9b, 0xfb, 0xa5, 0x7b, 0x7, 0xb, 0x5, 0xa2, 0x79, 0xb, 0xed, - 0xf1, 0xed, 0xb, 0xb3, 0x17, 0xf7, 0x9c, 0xd3, 0x15, 0x6a, 0xf7, 0x44, - 0x5, 0xb, 0xea, 0xa, 0xca, 0x9c, 0xa, 0xa8, 0x69, 0xb, 0xcf, 0xa2, - 0xac, 0xa0, 0xb9, 0x1a, 0xbc, 0x59, 0xa3, 0x5b, 0xb, 0x96, 0xfb, 0xb0, - 0x7, 0x6c, 0xfb, 0x7, 0x9b, 0x87, 0x5, 0xb, 0x87, 0xa, 0x1, 0xb, - 0xf1, 0xe5, 0xf8, 0x4e, 0xf7, 0x17, 0xb, 0x1e, 0x9b, 0xfb, 0x83, 0x7b, - 0x7, 0xb, 0xc5, 0x76, 0xf8, 0x2, 0x77, 0x1, 0xb, 0xd9, 0x16, 0xf7, - 0xb5, 0x9b, 0x6, 0xb, 0xc9, 0xf7, 0x47, 0xc9, 0xb, 0xf7, 0x3d, 0x77, - 0x1, 0xb, 0x9b, 0xfb, 0xa5, 0x7, 0xb, 0xf7, 0xf, 0x15, 0x4c, 0x5a, - 0x76, 0x6f, 0x72, 0x1b, 0xb, 0xf8, 0xef, 0xaf, 0x89, 0x77, 0x12, 0xcd, - 0xf7, 0x4, 0xb, 0x1b, 0xfb, 0x79, 0xfb, 0x45, 0xfb, 0x71, 0xfb, 0x55, - 0xb, 0x6c, 0xa, 0xe, 0x3c, 0x95, 0x76, 0xb, 0x15, 0xd2, 0xf7, 0x8c, - 0x5, 0x97, 0x8e, 0x92, 0xb, 0xf8, 0x1d, 0x96, 0x76, 0xaa, 0x76, 0xf4, - 0xb5, 0xb, 0x66, 0x56, 0x1b, 0x7b, 0xf7, 0x61, 0x9a, 0x7, 0xb, 0xf7, - 0x45, 0xf7, 0x16, 0x9d, 0x9f, 0x86, 0x7c, 0xb, 0x82, 0x30, 0x79, 0x87, - 0x6d, 0x1e, 0x78, 0x7, 0xb, 0xb6, 0xfb, 0x30, 0x76, 0xf9, 0xf4, 0x77, - 0x12, 0xb, 0x90, 0x94, 0x7d, 0x1f, 0x7a, 0x6e, 0x5, 0x7e, 0xb, 0xf7, - 0x49, 0xfb, 0x39, 0x77, 0xe2, 0xed, 0x12, 0xb, 0x76, 0xf9, 0x40, 0x77, - 0x1, 0xf4, 0xcd, 0x3, 0xb, 0xab, 0xfb, 0x2d, 0xa6, 0xf9, 0x8e, 0xa6, - 0x1, 0xb, 0x30, 0xa7, 0x1f, 0x9b, 0x55, 0xb, 0x77, 0x1, 0xbc, 0xd6, - 0x3, 0xb, 0x16, 0xf7, 0x5a, 0x9b, 0x6, 0xb, 0x67, 0x6e, 0xa8, 0xaf, - 0x1f, 0xb, 0x7b, 0xf7, 0xa5, 0x9b, 0x7, 0xb, 0x15, 0x9b, 0xa, 0xb, - 0x9b, 0xfb, 0x51, 0x7b, 0x7, 0xb, 0xac, 0xf7, 0x97, 0xac, 0xb, 0xc4, - 0xa7, 0xd4, 0xb, 0x9b, 0xfb, 0x5b, 0xb, 0x1b, 0x83, 0x85, 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp deleted file mode 100644 index 5180d10912..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp +++ /dev/null @@ -1,9462 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSerifMMFontData[113417] = { - 0x80, 0x01, 0xD6, 0x29, 0x00, 0x00, 0x25, 0x21, 0x50, 0x53, 0x2D, 0x41, - 0x64, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x6E, 0x74, 0x2D, 0x31, 0x2E, 0x30, - 0x3A, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, - 0x66, 0x4D, 0x4D, 0x20, 0x30, 0x30, 0x31, 0x2E, 0x30, 0x30, 0x30, 0x0D, - 0x25, 0x25, 0x43, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x44, 0x61, - 0x74, 0x65, 0x3A, 0x20, 0x54, 0x75, 0x65, 0x20, 0x4F, 0x63, 0x74, 0x20, - 0x33, 0x31, 0x20, 0x30, 0x31, 0x3A, 0x33, 0x34, 0x3A, 0x32, 0x32, 0x20, - 0x32, 0x30, 0x30, 0x36, 0x0D, 0x25, 0x25, 0x56, 0x4D, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x3A, 0x20, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 0x20, 0x31, - 0x35, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x31, 0x37, 0x20, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, - 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x31, 0x34, 0x20, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, - 0x2F, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x30, 0x30, - 0x31, 0x2E, 0x30, 0x30, 0x30, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, - 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x4E, 0x6F, 0x74, - 0x69, 0x63, 0x65, 0x20, 0x28, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, - 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x75, 0x6C, 0x6C, - 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x28, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, - 0x20, 0x53, 0x65, 0x72, 0x69, 0x66, 0x20, 0x4D, 0x4D, 0x29, 0x20, 0x72, - 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x2F, 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x20, - 0x28, 0x43, 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x20, 0x53, 0x65, 0x72, 0x69, - 0x66, 0x20, 0x4D, 0x4D, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, - 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x49, 0x74, 0x61, 0x6C, - 0x69, 0x63, 0x41, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x30, 0x20, 0x64, 0x65, - 0x66, 0x0D, 0x2F, 0x69, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x50, 0x69, - 0x74, 0x63, 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x64, 0x65, - 0x66, 0x0D, 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x65, - 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x2D, 0x31, 0x30, - 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x55, 0x6E, 0x64, 0x65, 0x72, - 0x6C, 0x69, 0x6E, 0x65, 0x54, 0x68, 0x69, 0x63, 0x6B, 0x6E, 0x65, 0x73, - 0x73, 0x20, 0x35, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x41, 0x6C, 0x6C, 0x29, 0x20, 0x72, - 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, - 0x50, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x5B, 0x5B, - 0x30, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x30, 0x20, 0x5D, 0x5B, - 0x30, 0x20, 0x31, 0x20, 0x5D, 0x5B, 0x31, 0x20, 0x31, 0x20, 0x5D, 0x5D, - 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x44, - 0x65, 0x73, 0x69, 0x67, 0x6E, 0x4D, 0x61, 0x70, 0x20, 0x5B, 0x5B, 0x5B, - 0x31, 0x31, 0x30, 0x20, 0x30, 0x20, 0x5D, 0x5B, 0x37, 0x39, 0x30, 0x20, - 0x31, 0x20, 0x5D, 0x5D, 0x5B, 0x5B, 0x31, 0x30, 0x30, 0x20, 0x30, 0x20, - 0x5D, 0x5B, 0x39, 0x30, 0x30, 0x20, 0x31, 0x20, 0x5D, 0x5D, 0x5D, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, - 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, 0x73, 0x20, 0x5B, 0x2F, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x20, 0x2F, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, - 0x5D, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x65, 0x6E, 0x64, 0x20, 0x72, 0x65, - 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, - 0x20, 0x5B, 0x30, 0x2E, 0x32, 0x37, 0x30, 0x32, 0x20, 0x30, 0x2E, 0x31, - 0x30, 0x34, 0x38, 0x20, 0x30, 0x2E, 0x34, 0x35, 0x30, 0x34, 0x20, 0x30, - 0x2E, 0x31, 0x37, 0x34, 0x36, 0x20, 0x5D, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x2F, 0x43, - 0x68, 0x72, 0x6f, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x66, 0x4D, 0x4D, - 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, - 0x6E, 0x67, 0x20, 0x32, 0x35, 0x36, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, - 0x0D, 0x30, 0x20, 0x31, 0x20, 0x32, 0x35, 0x35, 0x20, 0x7B, 0x31, 0x20, - 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, - 0x2E, 0x6E, 0x6F, 0x74, 0x64, 0x65, 0x66, 0x20, 0x70, 0x75, 0x74, 0x20, - 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x32, - 0x20, 0x2F, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x33, 0x33, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x6C, - 0x61, 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, - 0x34, 0x20, 0x2F, 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x35, 0x20, 0x2F, - 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x69, 0x67, 0x6E, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x36, 0x20, 0x2F, 0x64, - 0x6F, 0x6C, 0x6C, 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x33, 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6E, - 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x38, - 0x20, 0x2F, 0x61, 0x6D, 0x70, 0x65, 0x72, 0x73, 0x61, 0x6E, 0x64, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x33, 0x39, 0x20, 0x2F, - 0x71, 0x75, 0x6F, 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x30, 0x20, 0x2F, - 0x70, 0x61, 0x72, 0x65, 0x6E, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x31, 0x20, 0x2F, 0x70, 0x61, - 0x72, 0x65, 0x6E, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x32, 0x20, 0x2F, 0x61, 0x73, 0x74, - 0x65, 0x72, 0x69, 0x73, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x34, 0x33, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x34, 0x20, 0x2F, 0x63, - 0x6F, 0x6D, 0x6D, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x34, 0x35, 0x20, 0x2F, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6E, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x36, 0x20, 0x2F, - 0x70, 0x65, 0x72, 0x69, 0x6F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x34, 0x37, 0x20, 0x2F, 0x73, 0x6C, 0x61, 0x73, 0x68, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x38, 0x20, - 0x2F, 0x7A, 0x65, 0x72, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x34, 0x39, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x30, 0x20, 0x2F, 0x74, 0x77, - 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x31, - 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x35, 0x32, 0x20, 0x2F, 0x66, 0x6F, 0x75, 0x72, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x33, 0x20, - 0x2F, 0x66, 0x69, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x35, 0x34, 0x20, 0x2F, 0x73, 0x69, 0x78, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x35, 0x20, 0x2F, 0x73, 0x65, - 0x76, 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x35, 0x36, 0x20, 0x2F, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x37, 0x20, 0x2F, 0x6E, 0x69, - 0x6E, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, - 0x38, 0x20, 0x2F, 0x63, 0x6F, 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x35, 0x39, 0x20, 0x2F, 0x73, 0x65, 0x6D, - 0x69, 0x63, 0x6F, 0x6C, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x36, 0x30, 0x20, 0x2F, 0x6C, 0x65, 0x73, 0x73, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x31, 0x20, 0x2F, - 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x36, 0x32, 0x20, 0x2F, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x33, - 0x20, 0x2F, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x34, 0x20, 0x2F, 0x61, - 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x35, - 0x20, 0x2F, 0x41, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x36, 0x36, 0x20, 0x2F, 0x42, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x36, 0x37, 0x20, 0x2F, 0x43, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x36, 0x38, 0x20, 0x2F, 0x44, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x36, 0x39, 0x20, 0x2F, 0x45, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x30, 0x20, 0x2F, - 0x46, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x31, - 0x20, 0x2F, 0x47, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x37, 0x32, 0x20, 0x2F, 0x48, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x37, 0x33, 0x20, 0x2F, 0x49, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x37, 0x34, 0x20, 0x2F, 0x4A, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x35, 0x20, 0x2F, 0x4B, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x36, 0x20, 0x2F, - 0x4C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x37, 0x37, - 0x20, 0x2F, 0x4D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x37, 0x38, 0x20, 0x2F, 0x4E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x37, 0x39, 0x20, 0x2F, 0x4F, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x38, 0x30, 0x20, 0x2F, 0x50, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x31, 0x20, 0x2F, 0x51, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x32, 0x20, 0x2F, - 0x52, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x33, - 0x20, 0x2F, 0x53, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x38, 0x34, 0x20, 0x2F, 0x54, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x38, 0x35, 0x20, 0x2F, 0x55, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x38, 0x36, 0x20, 0x2F, 0x56, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x37, 0x20, 0x2F, 0x57, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x38, 0x20, 0x2F, - 0x58, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x38, 0x39, - 0x20, 0x2F, 0x59, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x39, 0x30, 0x20, 0x2F, 0x5A, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x39, 0x31, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, - 0x74, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x39, 0x32, 0x20, 0x2F, 0x62, 0x61, 0x63, 0x6B, 0x73, 0x6C, - 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x39, 0x33, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x39, 0x34, 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x63, 0x69, - 0x72, 0x63, 0x75, 0x6D, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x39, 0x35, 0x20, 0x2F, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x73, 0x63, - 0x6F, 0x72, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x39, 0x36, 0x20, 0x2F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x37, 0x20, 0x2F, 0x61, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x38, 0x20, 0x2F, - 0x62, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x39, 0x39, - 0x20, 0x2F, 0x63, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x30, 0x30, 0x20, 0x2F, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x30, 0x31, 0x20, 0x2F, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x32, 0x20, 0x2F, 0x66, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x33, - 0x20, 0x2F, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x30, 0x34, 0x20, 0x2F, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x30, 0x35, 0x20, 0x2F, 0x69, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x36, 0x20, 0x2F, 0x6A, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x37, - 0x20, 0x2F, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x30, 0x38, 0x20, 0x2F, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x30, 0x39, 0x20, 0x2F, 0x6D, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x30, 0x20, 0x2F, 0x6E, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x31, - 0x20, 0x2F, 0x6F, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x31, 0x32, 0x20, 0x2F, 0x70, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x31, 0x33, 0x20, 0x2F, 0x71, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x34, 0x20, 0x2F, 0x72, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x35, - 0x20, 0x2F, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x31, 0x36, 0x20, 0x2F, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x31, 0x37, 0x20, 0x2F, 0x75, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x38, 0x20, 0x2F, 0x76, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x31, 0x39, - 0x20, 0x2F, 0x77, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x32, 0x30, 0x20, 0x2F, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x32, 0x31, 0x20, 0x2F, 0x79, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x32, 0x20, 0x2F, 0x7A, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x33, - 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x32, 0x34, 0x20, - 0x2F, 0x62, 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x32, 0x35, 0x20, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x65, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x32, 0x36, 0x20, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x74, - 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x32, 0x38, 0x20, 0x2F, 0x45, 0x75, 0x72, 0x6F, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x30, 0x20, 0x2F, - 0x71, 0x75, 0x6F, 0x74, 0x65, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x62, 0x61, - 0x73, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x33, 0x31, 0x20, 0x2F, 0x66, 0x6C, 0x6F, 0x72, 0x69, 0x6E, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x32, 0x20, 0x2F, - 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x62, 0x61, 0x73, 0x65, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x33, - 0x20, 0x2F, 0x65, 0x6C, 0x6C, 0x69, 0x70, 0x73, 0x69, 0x73, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x33, 0x34, 0x20, 0x2F, - 0x64, 0x61, 0x67, 0x67, 0x65, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x33, 0x35, 0x20, 0x2F, 0x64, 0x61, 0x67, 0x67, - 0x65, 0x72, 0x64, 0x62, 0x6C, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x33, 0x36, 0x20, 0x2F, 0x63, 0x69, 0x72, 0x63, 0x75, - 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x33, 0x37, 0x20, 0x2F, 0x70, 0x65, 0x72, 0x74, 0x68, - 0x6F, 0x75, 0x73, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x33, 0x38, 0x20, 0x2F, 0x53, 0x63, 0x61, 0x72, - 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x33, 0x39, 0x20, 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, 0x67, - 0x6C, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x34, 0x30, 0x20, 0x2F, 0x4F, 0x45, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x35, 0x20, 0x2F, 0x71, - 0x75, 0x6F, 0x74, 0x65, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x36, 0x20, 0x2F, 0x71, 0x75, - 0x6F, 0x74, 0x65, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x37, 0x20, 0x2F, 0x71, 0x75, - 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, 0x38, 0x20, 0x2F, - 0x71, 0x75, 0x6F, 0x74, 0x65, 0x64, 0x62, 0x6C, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x34, - 0x39, 0x20, 0x2F, 0x62, 0x75, 0x6C, 0x6C, 0x65, 0x74, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x30, 0x20, 0x2F, 0x65, - 0x6E, 0x64, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x35, 0x31, 0x20, 0x2F, 0x65, 0x6D, 0x64, 0x61, 0x73, - 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, - 0x32, 0x20, 0x2F, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x33, 0x20, 0x2F, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x34, 0x20, 0x2F, 0x73, 0x63, 0x61, - 0x72, 0x6F, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x35, 0x35, 0x20, 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x73, 0x69, 0x6E, - 0x67, 0x6C, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x36, 0x20, 0x2F, 0x6F, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x35, 0x39, 0x20, - 0x2F, 0x59, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x31, 0x20, 0x2F, - 0x65, 0x78, 0x63, 0x6C, 0x61, 0x6D, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x32, 0x20, 0x2F, - 0x63, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x36, 0x33, 0x20, 0x2F, 0x73, 0x74, 0x65, 0x72, 0x6C, 0x69, - 0x6E, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x36, 0x34, 0x20, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x79, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x35, - 0x20, 0x2F, 0x79, 0x65, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x36, 0x36, 0x20, 0x2F, 0x62, 0x72, 0x6F, 0x6B, 0x65, - 0x6E, 0x62, 0x61, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x36, 0x37, 0x20, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, - 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, - 0x38, 0x20, 0x2F, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x36, 0x39, 0x20, - 0x2F, 0x63, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x30, 0x20, 0x2F, - 0x6F, 0x72, 0x64, 0x66, 0x65, 0x6D, 0x69, 0x6E, 0x69, 0x6E, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x31, 0x20, - 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x6C, 0x65, - 0x66, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x37, 0x32, 0x20, 0x2F, 0x6C, 0x6F, 0x67, 0x69, 0x63, 0x61, 0x6C, 0x6E, - 0x6F, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x37, 0x34, 0x20, 0x2F, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, - 0x65, 0x64, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x37, 0x35, 0x20, 0x2F, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x6E, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x37, 0x36, 0x20, 0x2F, - 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x37, 0x37, 0x20, 0x2F, 0x70, 0x6C, 0x75, 0x73, - 0x6D, 0x69, 0x6E, 0x75, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x37, 0x38, 0x20, 0x2F, 0x74, 0x77, 0x6F, 0x73, 0x75, - 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x37, 0x39, 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, - 0x65, 0x73, 0x75, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x30, 0x20, 0x2F, 0x61, - 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x38, 0x31, 0x20, 0x2F, 0x6D, 0x75, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x32, 0x20, 0x2F, 0x70, 0x61, - 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x33, 0x20, 0x2F, 0x70, 0x65, 0x72, - 0x69, 0x6F, 0x64, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x34, 0x20, - 0x2F, 0x63, 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x35, 0x20, 0x2F, 0x6F, 0x6E, - 0x65, 0x73, 0x75, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x72, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x36, 0x20, 0x2F, 0x6F, - 0x72, 0x64, 0x6D, 0x61, 0x73, 0x63, 0x75, 0x6C, 0x69, 0x6E, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x38, 0x37, 0x20, - 0x2F, 0x67, 0x75, 0x69, 0x6C, 0x6C, 0x65, 0x6D, 0x6F, 0x74, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x38, 0x38, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x71, 0x75, 0x61, 0x72, - 0x74, 0x65, 0x72, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x38, 0x39, 0x20, 0x2F, 0x6F, 0x6E, 0x65, 0x68, 0x61, 0x6C, 0x66, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x30, - 0x20, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x65, 0x71, 0x75, 0x61, 0x72, 0x74, - 0x65, 0x72, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x31, 0x39, 0x31, 0x20, 0x2F, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6F, - 0x6E, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x39, 0x32, 0x20, 0x2F, 0x41, 0x67, 0x72, 0x61, 0x76, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, - 0x33, 0x20, 0x2F, 0x41, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x34, 0x20, 0x2F, 0x41, - 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x35, 0x20, 0x2F, - 0x41, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x31, 0x39, 0x36, 0x20, 0x2F, 0x41, 0x64, 0x69, 0x65, - 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x31, 0x39, 0x37, 0x20, 0x2F, 0x41, 0x72, 0x69, 0x6E, 0x67, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x39, 0x38, - 0x20, 0x2F, 0x41, 0x45, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x39, 0x39, 0x20, 0x2F, 0x43, 0x63, 0x65, 0x64, 0x69, 0x6C, - 0x6C, 0x61, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x30, 0x30, 0x20, 0x2F, 0x45, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x31, 0x20, 0x2F, - 0x45, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x30, 0x32, 0x20, 0x2F, 0x45, 0x63, 0x69, 0x72, - 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x33, 0x20, 0x2F, 0x45, 0x64, 0x69, - 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x30, 0x34, 0x20, 0x2F, 0x49, 0x67, 0x72, 0x61, - 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x30, 0x35, 0x20, 0x2F, 0x49, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x36, 0x20, 0x2F, - 0x49, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x37, 0x20, - 0x2F, 0x49, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x30, 0x38, 0x20, 0x2F, - 0x45, 0x74, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x30, 0x39, 0x20, 0x2F, 0x4E, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x30, 0x20, - 0x2F, 0x4F, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x31, 0x20, 0x2F, 0x4F, 0x61, 0x63, - 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x31, 0x32, 0x20, 0x2F, 0x4F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, - 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x32, 0x31, 0x33, 0x20, 0x2F, 0x4F, 0x74, 0x69, 0x6C, 0x64, 0x65, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x34, - 0x20, 0x2F, 0x4F, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x35, 0x20, - 0x2F, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x79, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x36, 0x20, 0x2F, 0x4F, - 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x31, 0x37, 0x20, 0x2F, 0x55, 0x67, 0x72, 0x61, 0x76, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, - 0x38, 0x20, 0x2F, 0x55, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x31, 0x39, 0x20, 0x2F, 0x55, - 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x30, 0x20, 0x2F, - 0x55, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x31, 0x20, 0x2F, 0x59, - 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x32, 0x32, 0x20, 0x2F, 0x54, 0x68, 0x6F, 0x72, 0x6E, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x33, - 0x20, 0x2F, 0x67, 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x64, 0x62, 0x6C, 0x73, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x34, - 0x20, 0x2F, 0x61, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x35, 0x20, 0x2F, 0x61, 0x61, - 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x32, 0x32, 0x36, 0x20, 0x2F, 0x61, 0x63, 0x69, 0x72, 0x63, 0x75, - 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x32, 0x37, 0x20, 0x2F, 0x61, 0x74, 0x69, 0x6C, 0x64, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, - 0x38, 0x20, 0x2F, 0x61, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x32, 0x39, - 0x20, 0x2F, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x30, 0x20, 0x2F, 0x61, 0x65, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x31, 0x20, - 0x2F, 0x63, 0x63, 0x65, 0x64, 0x69, 0x6C, 0x6C, 0x61, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x32, 0x20, 0x2F, 0x65, - 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x33, 0x33, 0x20, 0x2F, 0x65, 0x61, 0x63, 0x75, 0x74, - 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, - 0x34, 0x20, 0x2F, 0x65, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, - 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x33, 0x35, 0x20, 0x2F, 0x65, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, 0x69, - 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, - 0x36, 0x20, 0x2F, 0x69, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, - 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x33, 0x37, 0x20, 0x2F, 0x69, - 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x33, 0x38, 0x20, 0x2F, 0x69, 0x63, 0x69, 0x72, 0x63, - 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x33, 0x39, 0x20, 0x2F, 0x69, 0x64, 0x69, 0x65, - 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x34, 0x30, 0x20, 0x2F, 0x65, 0x74, 0x68, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x31, 0x20, 0x2F, - 0x6E, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x34, 0x32, 0x20, 0x2F, 0x6F, 0x67, 0x72, 0x61, - 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x34, 0x33, 0x20, 0x2F, 0x6F, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x34, 0x20, 0x2F, - 0x6F, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, 0x6C, 0x65, 0x78, 0x20, - 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x35, 0x20, - 0x2F, 0x6F, 0x74, 0x69, 0x6C, 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, - 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x36, 0x20, 0x2F, 0x6F, 0x64, 0x69, - 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x34, 0x37, 0x20, 0x2F, 0x64, 0x69, 0x76, 0x69, - 0x64, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x34, 0x38, 0x20, 0x2F, 0x6F, 0x73, 0x6C, 0x61, 0x73, 0x68, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x34, 0x39, 0x20, 0x2F, - 0x75, 0x67, 0x72, 0x61, 0x76, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x32, 0x35, 0x30, 0x20, 0x2F, 0x75, 0x61, 0x63, 0x75, - 0x74, 0x65, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x35, 0x31, 0x20, 0x2F, 0x75, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6D, 0x66, - 0x6C, 0x65, 0x78, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x32, 0x35, 0x32, 0x20, 0x2F, 0x75, 0x64, 0x69, 0x65, 0x72, 0x65, 0x73, - 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x35, 0x33, 0x20, 0x2F, 0x79, 0x61, 0x63, 0x75, 0x74, 0x65, 0x20, 0x70, - 0x75, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x35, 0x34, 0x20, 0x2F, - 0x74, 0x68, 0x6F, 0x72, 0x6E, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x32, 0x35, 0x35, 0x20, 0x2F, 0x79, 0x64, 0x69, 0x65, 0x72, - 0x65, 0x73, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x72, 0x65, 0x61, - 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x50, - 0x61, 0x69, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x30, 0x20, 0x64, - 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x20, 0x31, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x24, 0x42, 0x6C, 0x65, - 0x6E, 0x64, 0x20, 0x7B, 0x20, 0x30, 0x2E, 0x31, 0x30, 0x34, 0x38, 0x20, - 0x6D, 0x75, 0x6C, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x30, 0x2E, 0x34, - 0x35, 0x30, 0x34, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x30, 0x2E, 0x31, 0x37, 0x34, 0x36, 0x20, - 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x64, 0x64, 0x20, - 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, - 0x46, 0x6F, 0x6E, 0x74, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x5B, - 0x20, 0x30, 0x2E, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, - 0x20, 0x30, 0x20, 0x30, 0x2E, 0x30, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, - 0x20, 0x30, 0x20, 0x30, 0x20, 0x5D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, - 0x6E, 0x6C, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, - 0x74, 0x42, 0x42, 0x6F, 0x78, 0x20, 0x7B, 0x2D, 0x31, 0x35, 0x37, 0x20, - 0x2D, 0x32, 0x35, 0x37, 0x20, 0x31, 0x31, 0x39, 0x34, 0x20, 0x38, 0x37, - 0x32, 0x7D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6F, 0x6E, 0x6C, 0x79, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x33, - 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x62, 0x65, - 0x67, 0x69, 0x6E, 0x0D, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x42, 0x42, 0x6F, - 0x78, 0x20, 0x7B, 0x7B, 0x20, 0x2D, 0x31, 0x33, 0x35, 0x20, 0x2D, 0x32, - 0x33, 0x36, 0x20, 0x2D, 0x31, 0x33, 0x35, 0x20, 0x2D, 0x32, 0x30, 0x31, - 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, - 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, 0x20, 0x2D, 0x32, 0x35, 0x37, - 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x35, 0x38, 0x32, 0x20, 0x31, 0x32, 0x31, - 0x37, 0x20, 0x31, 0x32, 0x37, 0x34, 0x20, 0x31, 0x39, 0x32, 0x32, 0x20, - 0x7D, 0x20, 0x7B, 0x20, 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, - 0x38, 0x37, 0x32, 0x20, 0x38, 0x37, 0x32, 0x20, 0x7D, 0x7D, 0x20, 0x64, - 0x65, 0x66, 0x0D, 0x2F, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, - 0x31, 0x34, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x64, 0x65, 0x66, 0x0D, - 0x65, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x25, 0x20, 0x43, 0x6F, - 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, - 0x31, 0x39, 0x39, 0x30, 0x2D, 0x31, 0x39, 0x39, 0x34, 0x20, 0x41, 0x64, - 0x6F, 0x62, 0x65, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, - 0x49, 0x6E, 0x63, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x65, 0x64, - 0x0D, 0x25, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x20, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x0D, - 0x2F, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x20, - 0x77, 0x68, 0x65, 0x72, 0x65, 0x0D, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x20, 0x7B, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x20, 0x7D, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x7B, 0x20, - 0x7D, 0x20, 0x75, 0x73, 0x65, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x64, 0x75, 0x70, 0x0D, - 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, - 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, - 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, - 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, - 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x2F, 0x6F, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x6F, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, - 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, - 0x7D, 0x20, 0x7B, 0x20, 0x30, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, - 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x2F, 0x69, 0x6E, 0x74, 0x65, - 0x67, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6E, 0x65, 0x0D, 0x7B, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, - 0x20, 0x7B, 0x20, 0x31, 0x31, 0x20, 0x6C, 0x74, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, - 0x73, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, - 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, - 0x6F, 0x6E, 0x74, 0x20, 0x7B, 0x0D, 0x31, 0x31, 0x20, 0x70, 0x6F, 0x70, - 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6C, 0x65, 0x6E, 0x67, - 0x74, 0x68, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x67, 0x65, - 0x74, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, 0x71, 0x0D, - 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x7B, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, - 0x61, 0x6C, 0x6C, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x61, 0x62, - 0x73, 0x20, 0x2E, 0x30, 0x30, 0x31, 0x20, 0x67, 0x74, 0x20, 0x7D, 0x0D, - 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, - 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, - 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, - 0x20, 0x2F, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, - 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, - 0x64, 0x75, 0x70, 0x20, 0x6D, 0x61, 0x78, 0x6C, 0x65, 0x6E, 0x67, 0x74, - 0x68, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, - 0x20, 0x7B, 0x0D, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x20, 0x2F, - 0x46, 0x49, 0x44, 0x20, 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x49, - 0x44, 0x20, 0x2F, 0x58, 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, 0x20, - 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, 0x6F, - 0x72, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7B, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, - 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x2F, - 0x58, 0x55, 0x49, 0x44, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, - 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, 0x20, - 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x32, - 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, - 0x68, 0x20, 0x73, 0x75, 0x62, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, - 0x67, 0x74, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, - 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, - 0x61, 0x79, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x0D, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x36, - 0x35, 0x35, 0x33, 0x36, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x63, 0x76, 0x69, - 0x20, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, - 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x2F, - 0x58, 0x55, 0x49, 0x44, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x65, - 0x66, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, - 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, - 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x2F, 0x50, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, - 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, - 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6D, 0x61, - 0x78, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x64, 0x69, 0x63, 0x74, - 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x7B, 0x0D, 0x66, 0x61, 0x6C, - 0x73, 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x55, 0x6E, 0x69, 0x71, 0x75, 0x65, - 0x49, 0x44, 0x20, 0x2F, 0x58, 0x55, 0x49, 0x44, 0x20, 0x7D, 0x20, 0x7B, - 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x71, 0x20, - 0x6F, 0x72, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, - 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, - 0x7B, 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, - 0x73, 0x65, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x20, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, - 0x65, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x7D, 0x20, 0x66, 0x6F, - 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x2F, 0x24, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x5B, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x66, 0x61, 0x6C, 0x73, - 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, - 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, - 0x2D, 0x31, 0x20, 0x31, 0x20, 0x7B, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, - 0x68, 0x20, 0x33, 0x20, 0x2D, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, - 0x73, 0x75, 0x62, 0x20, 0x67, 0x65, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x30, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x31, - 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x7B, 0x20, 0x2F, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, - 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x2F, 0x70, - 0x6F, 0x70, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x31, 0x20, - 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, - 0x20, 0x31, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x7D, 0x0D, 0x7B, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x7B, 0x20, 0x2F, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6C, 0x6F, 0x61, 0x64, - 0x20, 0x34, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x0D, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, - 0x2F, 0x6D, 0x75, 0x6C, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, - 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x7B, 0x20, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, - 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, - 0x72, 0x75, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x0D, - 0x70, 0x6F, 0x70, 0x20, 0x7B, 0x20, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6C, - 0x6F, 0x61, 0x64, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, 0x5D, 0x20, 0x63, - 0x76, 0x78, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x7B, 0x20, 0x32, 0x20, 0x63, - 0x6F, 0x70, 0x79, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6E, - 0x65, 0x20, 0x7B, 0x20, 0x2F, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, - 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, - 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, - 0x74, 0x79, 0x70, 0x65, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, - 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x0D, - 0x30, 0x20, 0x30, 0x20, 0x31, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, - 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x73, - 0x75, 0x62, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x34, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, - 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, - 0x6D, 0x75, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x0D, 0x7D, 0x20, 0x66, 0x6F, - 0x72, 0x0D, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7B, 0x20, - 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, - 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, 0x61, - 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, 0x72, - 0x61, 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, - 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x2F, 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, 0x6F, 0x6C, - 0x64, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x35, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x30, 0x20, 0x30, 0x20, 0x31, 0x20, 0x33, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, - 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, - 0x34, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x67, 0x65, 0x74, 0x20, 0x7B, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, - 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x66, - 0x6F, 0x72, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x2F, 0x46, 0x6F, 0x72, 0x63, 0x65, 0x42, - 0x6F, 0x6C, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6F, 0x6C, 0x64, - 0x20, 0x67, 0x65, 0x74, 0x20, 0x67, 0x74, 0x20, 0x33, 0x20, 0x63, 0x6F, - 0x70, 0x79, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x7B, 0x20, 0x6C, 0x65, 0x6E, - 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, - 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x20, 0x7B, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, - 0x7B, 0x0D, 0x74, 0x72, 0x75, 0x65, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x7B, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, - 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, - 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, 0x72, 0x65, 0x61, - 0x6C, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x7D, 0x20, 0x66, - 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, - 0x73, 0x65, 0x20, 0x7D, 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, - 0x38, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x35, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x35, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, - 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, - 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x31, - 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x78, 0x63, 0x68, 0x65, 0x63, - 0x6B, 0x20, 0x7B, 0x20, 0x63, 0x76, 0x78, 0x20, 0x7D, 0x20, 0x69, 0x66, - 0x0D, 0x64, 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, - 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x31, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x61, 0x72, 0x72, - 0x61, 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x64, 0x61, 0x72, - 0x72, 0x61, 0x79, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x71, 0x20, 0x6F, - 0x72, 0x20, 0x7B, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x31, 0x30, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x36, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7B, 0x0D, 0x39, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x39, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x32, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x20, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x0D, 0x31, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x64, 0x75, 0x70, 0x20, 0x2F, 0x53, 0x74, - 0x65, 0x6D, 0x53, 0x6E, 0x61, 0x70, 0x48, 0x20, 0x65, 0x71, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x2F, 0x53, 0x74, 0x65, 0x6D, 0x53, 0x6E, 0x61, - 0x70, 0x56, 0x20, 0x65, 0x71, 0x20, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x64, - 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x20, - 0x73, 0x75, 0x62, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, - 0x6C, 0x65, 0x20, 0x7B, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x31, - 0x20, 0x73, 0x75, 0x62, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x32, 0x20, 0x63, 0x6F, - 0x70, 0x79, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, 0x20, - 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x32, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x30, 0x20, 0x70, 0x75, 0x74, 0x20, 0x30, 0x20, - 0x7D, 0x20, 0x69, 0x66, 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x20, 0x31, 0x20, - 0x73, 0x75, 0x62, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, - 0x64, 0x75, 0x70, 0x20, 0x31, 0x20, 0x73, 0x75, 0x62, 0x20, 0x33, 0x20, - 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, - 0x65, 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, - 0x0D, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, - 0x73, 0x75, 0x62, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x75, 0x74, - 0x0D, 0x33, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x70, 0x75, 0x74, 0x20, - 0x70, 0x6F, 0x70, 0x0D, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, - 0x20, 0x73, 0x75, 0x62, 0x20, 0x6C, 0x74, 0x20, 0x7B, 0x20, 0x31, 0x20, - 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x30, 0x20, 0x67, - 0x65, 0x74, 0x20, 0x30, 0x20, 0x6C, 0x65, 0x20, 0x7B, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x30, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7B, 0x20, 0x30, - 0x20, 0x67, 0x74, 0x20, 0x7B, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x20, 0x31, 0x20, 0x61, 0x64, 0x64, 0x20, 0x7D, 0x20, - 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, - 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, - 0x68, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x73, 0x75, 0x62, 0x20, 0x67, - 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x0D, - 0x7B, 0x20, 0x2F, 0x64, 0x69, 0x63, 0x74, 0x74, 0x79, 0x70, 0x65, 0x20, - 0x65, 0x71, 0x20, 0x7B, 0x20, 0x36, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, - 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x67, 0x65, 0x74, - 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, - 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x2F, - 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, - 0x6F, 0x6E, 0x74, 0x20, 0x63, 0x76, 0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, - 0x72, 0x64, 0x69, 0x63, 0x74, 0x20, 0x2F, 0x74, 0x79, 0x70, 0x65, 0x63, - 0x68, 0x65, 0x63, 0x6B, 0x20, 0x67, 0x65, 0x74, 0x20, 0x65, 0x78, 0x65, - 0x63, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, - 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x70, 0x6F, 0x70, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x66, 0x6F, 0x72, 0x61, 0x6C, 0x6C, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x42, 0x6C, 0x65, 0x6E, 0x64, - 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, - 0x63, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x65, 0x6E, 0x64, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, - 0x20, 0x70, 0x75, 0x74, 0x0D, 0x2F, 0x24, 0x66, 0x62, 0x66, 0x20, 0x7B, - 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, - 0x72, 0x79, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x74, 0x6F, 0x6D, 0x61, - 0x72, 0x6B, 0x20, 0x33, 0x20, 0x61, 0x64, 0x64, 0x20, 0x2D, 0x31, 0x20, - 0x72, 0x6F, 0x6C, 0x6C, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, - 0x0D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, - 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x5D, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x62, 0x6C, 0x65, 0x6E, 0x64, - 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x2F, - 0x45, 0x6E, 0x63, 0x6F, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6E, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x45, 0x6E, - 0x63, 0x6F, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x67, 0x65, 0x74, 0x20, 0x70, - 0x75, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x66, 0x6F, 0x6E, - 0x74, 0x0D, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, - 0x53, 0x63, 0x61, 0x6C, 0x65, 0x4D, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, - 0x67, 0x65, 0x74, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x66, 0x6F, 0x6E, 0x74, - 0x20, 0x73, 0x65, 0x74, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x7D, 0x20, 0x62, - 0x69, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, - 0x65, 0x6C, 0x73, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x4E, - 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x44, 0x65, 0x73, 0x69, - 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x7B, 0x0D, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x31, 0x31, 0x30, 0x20, 0x73, 0x75, 0x62, 0x20, - 0x36, 0x38, 0x30, 0x20, 0x64, 0x69, 0x76, 0x0D, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x31, 0x30, 0x30, 0x20, 0x73, 0x75, 0x62, 0x20, 0x38, 0x30, 0x30, - 0x20, 0x64, 0x69, 0x76, 0x0D, 0x7D, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, - 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, - 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, - 0x20, 0x7B, 0x0D, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, - 0x65, 0x78, 0x20, 0x73, 0x75, 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, - 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, - 0x64, 0x65, 0x78, 0x20, 0x31, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, - 0x78, 0x20, 0x73, 0x75, 0x62, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, - 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x32, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, 0x62, 0x20, 0x31, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6D, 0x75, 0x6C, 0x20, 0x33, 0x20, 0x31, - 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, - 0x78, 0x20, 0x31, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6D, 0x75, - 0x6C, 0x20, 0x33, 0x20, 0x31, 0x20, 0x72, 0x6F, 0x6C, 0x6C, 0x0D, 0x70, - 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x62, 0x69, 0x6E, - 0x64, 0x20, 0x64, 0x65, 0x66, 0x0D, 0x2F, 0x24, 0x6D, 0x6D, 0x66, 0x66, - 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, - 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, 0x0D, 0x70, 0x6F, - 0x70, 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, 0x7B, 0x20, 0x72, 0x65, 0x73, - 0x74, 0x6F, 0x72, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x7B, - 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x65, 0x66, 0x20, 0x7D, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x73, 0x65, 0x74, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, - 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, - 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x66, 0x69, 0x6E, 0x64, - 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x70, - 0x6F, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6D, 0x64, 0x69, 0x63, 0x74, 0x20, 0x65, 0x71, 0x20, 0x7B, 0x0D, 0x70, - 0x6F, 0x70, 0x20, 0x7B, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, - 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, - 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x66, 0x61, - 0x6C, 0x73, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, - 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x64, 0x69, 0x63, 0x74, 0x0D, - 0x7D, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x75, 0x73, 0x65, 0x72, - 0x64, 0x69, 0x63, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, - 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x0D, 0x7D, 0x20, 0x7B, 0x20, - 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x7B, 0x20, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, 0x74, 0x20, 0x73, 0x63, 0x68, 0x65, - 0x63, 0x6B, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, - 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x7B, 0x20, - 0x74, 0x72, 0x75, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x20, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x73, - 0x65, 0x74, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x7D, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, - 0x7B, 0x20, 0x7D, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, - 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x2F, 0x24, - 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, - 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x66, - 0x6F, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x33, 0x20, 0x69, - 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x66, - 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7B, 0x0D, 0x64, 0x75, - 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, - 0x77, 0x6E, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, - 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, - 0x78, 0x63, 0x68, 0x20, 0x67, 0x65, 0x74, 0x20, 0x2F, 0x46, 0x6F, 0x6E, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x67, 0x65, 0x74, 0x20, 0x33, 0x20, - 0x6E, 0x65, 0x20, 0x7D, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0D, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, - 0x20, 0x67, 0x65, 0x74, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x20, 0x67, 0x65, 0x74, 0x20, 0x33, 0x20, 0x6E, 0x65, 0x20, - 0x7D, 0x0D, 0x7B, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, - 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, - 0x6C, 0x73, 0x65, 0x0D, 0x7B, 0x20, 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, - 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, - 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, - 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, - 0x6E, 0x67, 0x20, 0x63, 0x76, 0x73, 0x20, 0x28, 0x5F, 0x29, 0x20, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x7B, 0x0D, 0x63, 0x76, 0x6E, 0x20, - 0x64, 0x75, 0x70, 0x20, 0x64, 0x75, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x46, 0x6F, 0x6E, 0x74, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x65, 0x78, - 0x63, 0x68, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x6F, 0x72, 0x20, - 0x7B, 0x0D, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x64, - 0x75, 0x70, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x37, 0x20, - 0x61, 0x64, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x64, - 0x75, 0x70, 0x20, 0x30, 0x20, 0x28, 0x25, 0x66, 0x6F, 0x6E, 0x74, 0x25, - 0x29, 0x20, 0x70, 0x75, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6C, 0x0D, 0x64, 0x75, 0x70, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x64, 0x65, - 0x78, 0x20, 0x36, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x64, 0x75, 0x70, - 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x73, 0x74, 0x72, 0x69, - 0x6E, 0x67, 0x20, 0x63, 0x76, 0x73, 0x20, 0x70, 0x75, 0x74, 0x69, 0x6E, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x0D, 0x7B, 0x20, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x20, 0x7D, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x70, 0x65, - 0x64, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x66, 0x61, 0x6C, 0x73, - 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x20, 0x7B, 0x0D, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x66, 0x61, - 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, - 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7B, 0x0D, - 0x24, 0x6D, 0x6D, 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, - 0x6E, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, - 0x20, 0x70, 0x6F, 0x70, 0x0D, 0x5B, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, - 0x7B, 0x20, 0x28, 0x5F, 0x29, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x20, 0x7B, 0x20, 0x7B, 0x20, 0x63, 0x76, 0x72, 0x20, 0x7D, 0x20, 0x73, - 0x74, 0x6F, 0x70, 0x70, 0x65, 0x64, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, 0x20, 0x7B, 0x0D, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, 0x7B, 0x20, - 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x7D, 0x20, 0x69, - 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, - 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x2F, 0x46, 0x6F, 0x6E, 0x74, - 0x49, 0x6E, 0x66, 0x6F, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x7B, - 0x0D, 0x70, 0x6F, 0x70, 0x20, 0x46, 0x6F, 0x6E, 0x74, 0x49, 0x6E, 0x66, - 0x6F, 0x20, 0x2F, 0x42, 0x6C, 0x65, 0x6E, 0x64, 0x41, 0x78, 0x69, 0x73, - 0x54, 0x79, 0x70, 0x65, 0x73, 0x20, 0x32, 0x20, 0x63, 0x6F, 0x70, 0x79, - 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x7B, 0x0D, 0x67, 0x65, 0x74, - 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x75, 0x6E, - 0x74, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x32, 0x20, 0x73, 0x75, - 0x62, 0x20, 0x65, 0x71, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x70, 0x6F, - 0x70, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, - 0x70, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x20, 0x7B, 0x0D, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, - 0x69, 0x7A, 0x65, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, - 0x74, 0x6F, 0x72, 0x0D, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x44, - 0x65, 0x73, 0x69, 0x67, 0x6E, 0x56, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x0D, - 0x5D, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x62, - 0x6C, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x66, 0x6F, 0x6E, 0x74, 0x0D, 0x32, - 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x65, 0x78, 0x63, 0x68, 0x20, 0x2F, - 0x46, 0x6F, 0x6E, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x63, - 0x68, 0x20, 0x70, 0x75, 0x74, 0x0D, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, - 0x66, 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x7B, 0x20, 0x63, 0x6C, 0x65, - 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, 0x72, 0x6B, 0x20, 0x24, 0x6D, 0x6D, - 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, - 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, - 0x20, 0x65, 0x6E, 0x64, 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, - 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, - 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, - 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, - 0x0D, 0x7D, 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x24, 0x6D, 0x6D, - 0x66, 0x66, 0x5F, 0x6F, 0x72, 0x69, 0x67, 0x66, 0x69, 0x6E, 0x64, 0x66, - 0x6F, 0x6E, 0x74, 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, - 0x20, 0x7D, 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x7D, 0x20, - 0x62, 0x69, 0x6E, 0x64, 0x20, 0x33, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, - 0x20, 0x65, 0x78, 0x65, 0x63, 0x0D, 0x2F, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x46, 0x6F, 0x6E, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, - 0x72, 0x79, 0x20, 0x64, 0x75, 0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, - 0x20, 0x7B, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x7D, - 0x20, 0x7B, 0x20, 0x30, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x33, 0x20, - 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x65, 0x78, 0x65, 0x63, 0x20, 0x7D, - 0x20, 0x69, 0x66, 0x65, 0x6C, 0x73, 0x65, 0x0D, 0x65, 0x6E, 0x64, 0x20, - 0x65, 0x78, 0x65, 0x63, 0x20, 0x70, 0x6F, 0x70, 0x20, 0x65, 0x78, 0x65, - 0x63, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x64, 0x69, 0x63, - 0x74, 0x20, 0x65, 0x6E, 0x64, 0x0D, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, - 0x74, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x65, 0x78, 0x65, 0x63, 0x0D, - 0x80, 0x02, 0x0B, 0x8F, 0x01, 0x00, 0xE8, 0xDC, 0x61, 0x72, 0x80, 0x71, - 0xAB, 0xD4, 0xD5, 0xBC, 0xD2, 0x30, 0xC4, 0xE1, 0x86, 0xDC, 0xE0, 0x96, - 0x54, 0x1C, 0x9C, 0x1F, 0x2E, 0x58, 0x69, 0x40, 0x4E, 0x33, 0xF9, 0xCE, - 0xFF, 0x7D, 0x2F, 0xBF, 0xEF, 0x5F, 0x26, 0xC7, 0xE1, 0x84, 0x89, 0x54, - 0xC7, 0x07, 0x55, 0x24, 0x4E, 0x73, 0x41, 0xB8, 0x26, 0x97, 0xE2, 0xE8, - 0xEA, 0x9C, 0xE9, 0x13, 0x1D, 0x00, 0x55, 0x78, 0xAB, 0x3D, 0xE1, 0x9F, - 0xA9, 0xF2, 0xFA, 0xFF, 0x3B, 0xEB, 0x53, 0x17, 0x4A, 0x8E, 0x2F, 0x33, - 0xE9, 0xDB, 0xE0, 0x38, 0x63, 0x42, 0xF4, 0x0E, 0x5D, 0xF2, 0x5B, 0x7A, - 0x88, 0x22, 0xEE, 0x2B, 0x6C, 0xDC, 0xAC, 0x58, 0xA9, 0x8F, 0x9B, 0x04, - 0x71, 0x44, 0xE3, 0xF6, 0xE7, 0x4A, 0xB6, 0x0C, 0x00, 0xE4, 0x42, 0xE8, - 0x30, 0xB1, 0x30, 0x30, 0x8A, 0x3F, 0x0E, 0xDF, 0x2C, 0xE6, 0x62, 0x35, - 0xF9, 0x21, 0x6D, 0x42, 0x0F, 0x23, 0xAC, 0xED, 0xEC, 0x60, 0xA8, 0x8A, - 0x73, 0x77, 0x14, 0x62, 0xE1, 0xB2, 0x04, 0x04, 0x29, 0x5D, 0x49, 0xBA, - 0x8A, 0x8B, 0xCB, 0xF2, 0x04, 0x2A, 0x8D, 0xEB, 0x9A, 0x65, 0xBA, 0xF1, - 0xC8, 0x24, 0x2F, 0x7E, 0x90, 0xD9, 0x49, 0x63, 0x23, 0x73, 0xF8, 0x43, - 0x8F, 0xC1, 0xE7, 0x37, 0x37, 0x0B, 0x91, 0x15, 0x08, 0x9D, 0xA7, 0x90, - 0xA8, 0x28, 0x50, 0xB6, 0x91, 0xE6, 0xE8, 0x3B, 0x37, 0x22, 0xC0, 0x07, - 0x14, 0xDC, 0xBC, 0xEA, 0xA1, 0xDC, 0x3D, 0x22, 0x98, 0x3B, 0x35, 0x61, - 0x6A, 0xD7, 0xF1, 0x03, 0x35, 0x0B, 0x4A, 0x40, 0xB2, 0xAA, 0xE5, 0x0E, - 0xF0, 0x94, 0x6C, 0x77, 0xC5, 0x67, 0x73, 0x0D, 0x0D, 0xE6, 0x76, 0xA6, - 0x95, 0x13, 0x0A, 0xBE, 0xC8, 0xC7, 0xB8, 0xC4, 0x6B, 0xFA, 0xBC, 0xDA, - 0xDD, 0x88, 0x2C, 0x74, 0x58, 0x58, 0x9B, 0x2B, 0xEA, 0x87, 0xE1, 0x23, - 0x2C, 0x60, 0x58, 0x0C, 0x62, 0x35, 0xB7, 0xD7, 0xE8, 0xC6, 0x6A, 0x2A, - 0x72, 0x90, 0x1F, 0x3D, 0x0D, 0x76, 0x59, 0x30, 0x0E, 0x7E, 0x04, 0xFF, - 0xDE, 0x4A, 0xA6, 0xD8, 0x88, 0x25, 0x75, 0x76, 0x30, 0xCF, 0x8C, 0x9E, - 0x8E, 0xA4, 0x14, 0x10, 0x7F, 0x2F, 0xC4, 0xA8, 0x0F, 0xCA, 0xAF, 0xCB, - 0x54, 0x39, 0x87, 0x1A, 0x81, 0x71, 0xFB, 0xA5, 0x08, 0x17, 0x4F, 0x53, - 0xB8, 0xEC, 0xE2, 0xD3, 0xBF, 0xBD, 0xBA, 0x93, 0x75, 0xFF, 0x8F, 0xB9, - 0x66, 0x12, 0x02, 0x21, 0x87, 0x6D, 0xB0, 0xDC, 0x2D, 0x37, 0x22, 0xB7, - 0x88, 0xB4, 0xD3, 0x8F, 0x8B, 0x24, 0xEF, 0x76, 0xF3, 0xB4, 0x91, 0x58, - 0x95, 0xFF, 0x41, 0xD8, 0xFA, 0xFA, 0xD8, 0xE8, 0x68, 0xA9, 0xA8, 0x5B, - 0x59, 0x2C, 0xF0, 0x30, 0xA1, 0xD0, 0x44, 0x8A, 0x81, 0xF5, 0xE6, 0x92, - 0x1E, 0xAE, 0xE8, 0x26, 0xA4, 0xD9, 0xB7, 0x05, 0x5A, 0x9C, 0xA1, 0xC7, - 0x98, 0xAA, 0xFA, 0x25, 0x91, 0x11, 0x4D, 0x61, 0xCB, 0x50, 0x2E, 0xFC, - 0xFC, 0x44, 0x63, 0x02, 0x08, 0xCB, 0xA9, 0x17, 0x10, 0x3B, 0xC3, 0xA1, - 0x2A, 0x60, 0xB1, 0x79, 0x84, 0x95, 0x83, 0xD0, 0xB1, 0xF1, 0xDC, 0x9F, - 0xBE, 0xB2, 0xBC, 0x90, 0xD1, 0xE4, 0xF2, 0x42, 0xD5, 0x08, 0x0B, 0xD4, - 0xB1, 0x4C, 0x73, 0x8D, 0x0C, 0xD1, 0x69, 0xC8, 0x1E, 0xB6, 0x84, 0x5F, - 0xD9, 0x2D, 0xAB, 0x2A, 0x6B, 0xBB, 0x48, 0x3F, 0xB6, 0xFB, 0x08, 0x2F, - 0x57, 0x11, 0xAB, 0x42, 0x54, 0xC9, 0xD7, 0xB1, 0xF8, 0x28, 0xBA, 0xCD, - 0x68, 0xF9, 0x0D, 0xE0, 0xD1, 0x26, 0xCE, 0xA0, 0x24, 0x56, 0x63, 0xB7, - 0xA1, 0xC6, 0x85, 0xD8, 0x55, 0x18, 0x60, 0x25, 0x55, 0x0B, 0xC6, 0x9B, - 0xC4, 0x28, 0x0C, 0x37, 0xE0, 0x9A, 0x74, 0x52, 0x0D, 0x76, 0x5F, 0x41, - 0xDC, 0xEA, 0xD8, 0x35, 0x1A, 0xB7, 0x49, 0xC3, 0x5C, 0x6D, 0xD0, 0x83, - 0x7A, 0x4F, 0xC1, 0xCB, 0x12, 0xAB, 0x27, 0x4B, 0xCF, 0x7F, 0xF8, 0x01, - 0xC1, 0x8D, 0x13, 0x34, 0x62, 0xFF, 0xE0, 0x5C, 0x56, 0xCE, 0x4E, 0x3D, - 0x34, 0x37, 0xAC, 0xFB, 0xB0, 0x3E, 0x05, 0xA6, 0x2B, 0xF6, 0x2C, 0xA2, - 0x46, 0x65, 0x6A, 0xAF, 0x3E, 0xD6, 0x5A, 0x92, 0x22, 0xFF, 0x51, 0xF3, - 0x19, 0x27, 0x39, 0xB3, 0x32, 0x7F, 0x94, 0x7A, 0x6B, 0x56, 0xF8, 0xB8, - 0xA5, 0x70, 0xB1, 0x3F, 0x15, 0x15, 0xF6, 0x61, 0x4B, 0x88, 0xB0, 0x12, - 0xE0, 0x4F, 0x6F, 0xE9, 0xCB, 0x2C, 0x72, 0x01, 0xB1, 0xDB, 0x85, 0x78, - 0x3C, 0x0F, 0xD2, 0x3B, 0x54, 0x8E, 0x29, 0x21, 0x66, 0xBA, 0x80, 0xC6, - 0x05, 0x5E, 0xD1, 0xD9, 0x93, 0xCD, 0x63, 0xA0, 0x95, 0xBB, 0x26, 0xA3, - 0x36, 0x12, 0x2D, 0x1C, 0xE4, 0xEA, 0x98, 0xE6, 0xDC, 0x9F, 0xD6, 0x61, - 0xF8, 0x71, 0x14, 0xFE, 0xF8, 0x10, 0xB9, 0x24, 0x36, 0xF9, 0xB3, 0x6C, - 0x0F, 0xC3, 0x28, 0x46, 0x43, 0x19, 0xAF, 0xA7, 0xB1, 0xEC, 0x4A, 0x88, - 0x7C, 0xE7, 0x85, 0x81, 0x23, 0x69, 0xF3, 0x21, 0x90, 0xEB, 0x3D, 0xB1, - 0x73, 0x4A, 0xB2, 0xF2, 0x55, 0x30, 0xF8, 0x02, 0x79, 0x76, 0x1D, 0xFB, - 0x0A, 0x40, 0x06, 0x61, 0xCC, 0xCB, 0x47, 0x94, 0x1A, 0x74, 0x70, 0x8F, - 0x1B, 0x93, 0x16, 0x24, 0xAA, 0x32, 0xD4, 0xB0, 0xEE, 0xCA, 0xEE, 0x0D, - 0x27, 0x71, 0x0D, 0xE8, 0xCC, 0xD7, 0x2A, 0x28, 0xA5, 0xC4, 0xD8, 0xDD, - 0x0B, 0x16, 0x74, 0xF7, 0xE3, 0x61, 0x06, 0x37, 0x24, 0x1C, 0x00, 0x14, - 0x0C, 0x32, 0x7F, 0x88, 0x75, 0xF9, 0x9B, 0xFA, 0x3B, 0xCA, 0xF6, 0x51, - 0xD2, 0xAB, 0xD5, 0x3F, 0x21, 0xCD, 0x51, 0x3D, 0x3D, 0xB4, 0x81, 0xF9, - 0x33, 0x79, 0xE9, 0x62, 0x9F, 0x93, 0x5F, 0xA8, 0x77, 0x26, 0x75, 0x01, - 0x40, 0xD3, 0xE3, 0xBD, 0x68, 0x8D, 0x1B, 0xCC, 0xE7, 0x79, 0xB2, 0x3E, - 0x61, 0xB6, 0x00, 0xF0, 0x0A, 0x58, 0xF2, 0xC1, 0x4C, 0x5A, 0xA4, 0x86, - 0xD4, 0xCA, 0xCB, 0x15, 0xCC, 0xD1, 0x16, 0x74, 0x70, 0xF3, 0xCB, 0xBA, - 0x0E, 0x8A, 0xDB, 0xEB, 0x4F, 0x3D, 0x0C, 0x3C, 0xFE, 0x40, 0x7D, 0x46, - 0xC0, 0x0E, 0x0E, 0x18, 0x64, 0x69, 0xAB, 0xEF, 0x00, 0x68, 0x83, 0x95, - 0xFF, 0x32, 0xF3, 0x13, 0x78, 0x8C, 0x1E, 0xF9, 0xA8, 0xE8, 0x2D, 0x5F, - 0x04, 0xB8, 0x15, 0x22, 0x76, 0xDD, 0x46, 0xCF, 0x69, 0xA4, 0xCE, 0x5B, - 0x20, 0x77, 0xA0, 0x22, 0x24, 0xE5, 0xDE, 0xB8, 0xF3, 0x44, 0x5B, 0xC9, - 0xEF, 0x47, 0xFD, 0x3A, 0x02, 0xAF, 0x31, 0x6C, 0x02, 0x4A, 0x02, 0x3C, - 0x65, 0x5A, 0x0B, 0x63, 0xB0, 0x11, 0xBB, 0x07, 0x3C, 0xFC, 0xFA, 0xAD, - 0x93, 0x46, 0x11, 0x6D, 0x68, 0xFF, 0xB7, 0xC7, 0x58, 0x2F, 0x7C, 0x23, - 0x62, 0xD7, 0xD9, 0xF9, 0x7A, 0x8A, 0xD3, 0x11, 0x58, 0xAC, 0x43, 0x0D, - 0xA0, 0x77, 0x8D, 0x88, 0xD5, 0x34, 0xD1, 0xB9, 0x2E, 0x4A, 0x8C, 0xDC, - 0xA0, 0x71, 0xB9, 0xB2, 0x18, 0xC5, 0x74, 0x1E, 0x48, 0x9E, 0x70, 0x0A, - 0x7E, 0x9B, 0x71, 0xFA, 0xC7, 0x4D, 0x3C, 0x6E, 0x19, 0x88, 0xF0, 0xE2, - 0xA5, 0x99, 0x3D, 0x85, 0xBB, 0xE1, 0xDA, 0x82, 0x7B, 0xA9, 0xBA, 0x59, - 0x0E, 0x03, 0x26, 0x3B, 0x83, 0xC8, 0x81, 0x36, 0x70, 0xA4, 0x11, 0x97, - 0x97, 0xB6, 0x47, 0x7D, 0x81, 0x02, 0x45, 0x1C, 0x76, 0x33, 0x98, 0x84, - 0xFE, 0xFE, 0x65, 0xDE, 0x37, 0x31, 0xE7, 0xD9, 0x6F, 0xDC, 0xAC, 0xC1, - 0x1C, 0x1F, 0xA4, 0x08, 0x98, 0x47, 0xD3, 0x53, 0xF9, 0x24, 0x6E, 0x26, - 0x99, 0x7C, 0xF2, 0xCF, 0x2A, 0xC8, 0xCC, 0xAD, 0x17, 0x09, 0xE3, 0x1B, - 0x66, 0xAC, 0x24, 0x6F, 0xE0, 0x88, 0x14, 0xC4, 0x8A, 0xF2, 0xFA, 0x93, - 0xE9, 0x48, 0xB5, 0xA4, 0x52, 0xF9, 0xDE, 0x54, 0xF5, 0xF4, 0x20, 0x95, - 0x45, 0xCE, 0x37, 0x2E, 0x9E, 0x0A, 0xC7, 0x89, 0xF2, 0x00, 0x64, 0x6D, - 0xBC, 0xAF, 0x9F, 0x52, 0xBC, 0xA0, 0x17, 0xE3, 0x20, 0x42, 0xAB, 0xBF, - 0xFB, 0x2A, 0x7F, 0x51, 0xAC, 0xCC, 0x40, 0xEF, 0x6D, 0xF2, 0xBC, 0x3D, - 0xE2, 0xDC, 0x99, 0x0C, 0x2D, 0xBC, 0x47, 0x1D, 0x98, 0x02, 0x0B, 0xB2, - 0xE2, 0xA2, 0x03, 0x47, 0x3C, 0x17, 0x69, 0xD6, 0x09, 0xA4, 0x8B, 0x9F, - 0x63, 0x40, 0xD8, 0x5F, 0x67, 0xB3, 0x95, 0x28, 0x16, 0xAF, 0x67, 0x97, - 0x3A, 0x67, 0x29, 0x67, 0x3C, 0xF1, 0x9D, 0x24, 0x34, 0xE3, 0x47, 0x14, - 0xC6, 0x94, 0xA0, 0x1F, 0xB7, 0x64, 0x9D, 0x7E, 0x38, 0xB8, 0x70, 0xD2, - 0x4A, 0x74, 0x54, 0xA4, 0x64, 0x34, 0x27, 0x3B, 0xB7, 0x98, 0x18, 0x07, - 0x1F, 0x4E, 0x00, 0x86, 0x91, 0x6A, 0x71, 0x09, 0x72, 0x6B, 0x42, 0x4F, - 0x11, 0x62, 0xDC, 0x0B, 0x15, 0x0C, 0x74, 0x0B, 0x6D, 0xFF, 0xC2, 0x28, - 0x98, 0x97, 0x33, 0x65, 0xD6, 0xBB, 0x83, 0x4E, 0x4B, 0xE2, 0xCF, 0x7E, - 0x98, 0x4B, 0xAD, 0x55, 0xF2, 0x1A, 0xEF, 0x15, 0x05, 0xA6, 0xB6, 0xF4, - 0xDD, 0x97, 0xAA, 0x81, 0x6D, 0x84, 0x86, 0x17, 0xA0, 0xA5, 0x1D, 0xC3, - 0x8C, 0xEA, 0x28, 0xCE, 0x69, 0xCC, 0x56, 0x15, 0xFA, 0xD3, 0xEC, 0x12, - 0xCD, 0x8A, 0x98, 0xD5, 0x13, 0xE9, 0x72, 0xBF, 0x01, 0xCE, 0xBA, 0xF7, - 0xCA, 0x85, 0x8C, 0x64, 0x55, 0x60, 0xBA, 0x61, 0xF0, 0xDE, 0x97, 0xD9, - 0x15, 0xCF, 0xE2, 0x9C, 0xA3, 0x9A, 0x5F, 0x9F, 0xFE, 0xD3, 0xC7, 0x5A, - 0xF4, 0x44, 0x69, 0x7F, 0x63, 0x41, 0x97, 0x33, 0xD7, 0x41, 0xDF, 0x9B, - 0x3F, 0x03, 0x23, 0x4A, 0x84, 0x7B, 0x4E, 0xB9, 0x94, 0x3D, 0xBD, 0x32, - 0x56, 0x1C, 0x47, 0x7A, 0xF0, 0xED, 0x9D, 0x99, 0x24, 0x09, 0xC6, 0x50, - 0xC0, 0x98, 0xEA, 0xFE, 0x70, 0x8B, 0xDF, 0xB8, 0x5E, 0x7D, 0x64, 0x2C, - 0xDC, 0xB5, 0x5F, 0xCA, 0xF6, 0x7B, 0x02, 0x88, 0xA2, 0x82, 0xD2, 0x14, - 0x0E, 0xA4, 0x14, 0x3B, 0x4A, 0x95, 0x14, 0x5E, 0xD9, 0xFB, 0x47, 0x5F, - 0x36, 0x9F, 0x85, 0xC2, 0x94, 0x15, 0xB9, 0xC0, 0x01, 0x08, 0x86, 0x75, - 0x1E, 0x88, 0x2D, 0x5A, 0x39, 0xC1, 0xDE, 0xC1, 0x8B, 0x32, 0xC4, 0xE7, - 0x19, 0xA6, 0xFE, 0xFC, 0x62, 0xE9, 0xCF, 0x3E, 0x11, 0xD1, 0x5E, 0x24, - 0x66, 0x23, 0x5B, 0x8F, 0x42, 0x83, 0xD6, 0x3E, 0x2A, 0xE5, 0xF2, 0xE3, - 0x6A, 0x69, 0x40, 0xBE, 0xD4, 0xFA, 0x83, 0xC6, 0xE8, 0x2B, 0x35, 0xFE, - 0x1A, 0xD1, 0xF3, 0x37, 0x9A, 0x88, 0xA0, 0xC9, 0x55, 0x13, 0x4B, 0xC0, - 0xEC, 0x45, 0xD7, 0x48, 0x16, 0x28, 0x99, 0xE4, 0x3B, 0x77, 0xF2, 0xB9, - 0x27, 0x34, 0x4F, 0xAB, 0x18, 0x87, 0x63, 0xE5, 0xF5, 0x68, 0x57, 0x9D, - 0x5C, 0xAD, 0x53, 0xD7, 0x25, 0xB3, 0x99, 0x5D, 0x70, 0xE0, 0xF6, 0x72, - 0xBE, 0xD9, 0x5E, 0x82, 0xFB, 0xD0, 0x72, 0xF5, 0x6E, 0x86, 0xEF, 0x7C, - 0xD8, 0x23, 0x1E, 0x85, 0x20, 0x7C, 0xEA, 0x2C, 0x8E, 0x09, 0x2A, 0x9B, - 0x73, 0x62, 0xD3, 0x96, 0xAA, 0xE0, 0x45, 0x1E, 0x63, 0x57, 0xB7, 0x6A, - 0xB7, 0xB8, 0xFE, 0x01, 0x85, 0x93, 0xEB, 0x7B, 0x25, 0x41, 0xE5, 0x7D, - 0xE5, 0x20, 0x50, 0x15, 0x92, 0x06, 0xFE, 0xFA, 0x3F, 0x93, 0x16, 0xC5, - 0x6F, 0x4A, 0xDF, 0xB3, 0xB9, 0x43, 0x17, 0x32, 0xAF, 0x81, 0x3B, 0x61, - 0x19, 0xDE, 0xCD, 0xBB, 0x7E, 0x24, 0x74, 0xDD, 0xEB, 0xAE, 0xEA, 0x64, - 0x34, 0x59, 0x30, 0x31, 0x84, 0x15, 0x77, 0x30, 0x0A, 0xB6, 0x5D, 0xD9, - 0x3A, 0x47, 0xD2, 0x9D, 0xA9, 0x57, 0x6F, 0x1D, 0x3E, 0x47, 0x82, 0xAD, - 0x80, 0x4C, 0x11, 0x64, 0x4A, 0xA5, 0x28, 0xAE, 0xD3, 0x52, 0x13, 0x23, - 0xEF, 0x74, 0x9D, 0x05, 0xBD, 0xCA, 0x9D, 0xAF, 0x69, 0x55, 0xE8, 0x96, - 0xDB, 0x35, 0x52, 0x75, 0x0D, 0x7A, 0x19, 0x3E, 0xE9, 0x11, 0xF1, 0x84, - 0x5E, 0xB5, 0x1F, 0xD8, 0xF4, 0xA3, 0x25, 0x2A, 0x7F, 0xAF, 0x44, 0xD0, - 0xAC, 0x7F, 0x9C, 0x87, 0xB1, 0x11, 0x48, 0x69, 0x9F, 0x3C, 0x60, 0xC4, - 0x38, 0x40, 0xBF, 0x43, 0xA2, 0xE4, 0x37, 0xC3, 0x7E, 0xB1, 0x51, 0x82, - 0x93, 0xFE, 0x7F, 0xD1, 0x30, 0xD8, 0xBF, 0xD8, 0x6D, 0x7A, 0xE8, 0x38, - 0xFA, 0xE5, 0x4B, 0x42, 0x2C, 0x24, 0xF3, 0xA1, 0x7D, 0xE3, 0xE7, 0x9A, - 0x6B, 0x53, 0x3C, 0xAC, 0x00, 0x6A, 0xB5, 0xF9, 0x10, 0xD5, 0x3D, 0x11, - 0xE4, 0x1D, 0x51, 0xA2, 0x40, 0xC4, 0x48, 0xDC, 0x1C, 0x30, 0xA8, 0x1F, - 0x89, 0xE2, 0x53, 0x25, 0xF2, 0xDA, 0xE3, 0xA4, 0xD6, 0xBB, 0x72, 0x5A, - 0x0F, 0x3F, 0x98, 0xE4, 0x27, 0xF2, 0xC6, 0x82, 0x5B, 0x64, 0x8A, 0x3D, - 0x29, 0x9A, 0xBF, 0x6A, 0x0D, 0x61, 0xA1, 0xCF, 0x4F, 0x00, 0xE0, 0xE2, - 0x9A, 0x45, 0xF7, 0xDB, 0x38, 0x0D, 0x38, 0x7C, 0x98, 0x20, 0xB6, 0xA8, - 0x00, 0xFE, 0xB5, 0xCD, 0xBB, 0xC2, 0x8A, 0xDF, 0xA3, 0x23, 0x87, 0x77, - 0x7F, 0x33, 0x36, 0xB2, 0xC3, 0x90, 0xAA, 0x49, 0x92, 0x71, 0xEB, 0xFE, - 0xCD, 0x32, 0xD1, 0xAB, 0x22, 0xB3, 0xC6, 0x4B, 0x12, 0x7E, 0x53, 0xAA, - 0xCF, 0xC7, 0x01, 0xDA, 0x38, 0x2A, 0x0A, 0x54, 0xFC, 0x88, 0x41, 0x15, - 0x04, 0x27, 0x02, 0x8C, 0x0F, 0x6D, 0xC2, 0xCF, 0xDA, 0xF8, 0x3C, 0xF7, - 0x58, 0xE2, 0x70, 0x1A, 0x7E, 0xBE, 0x39, 0xEE, 0xC2, 0x7A, 0xD5, 0x52, - 0x4B, 0x62, 0x84, 0xDE, 0x91, 0x46, 0xDC, 0x3A, 0x67, 0x4A, 0xE6, 0x4D, - 0x82, 0xFA, 0x60, 0xE2, 0x34, 0x26, 0x1A, 0xD8, 0x0D, 0xA1, 0x57, 0x62, - 0x04, 0x38, 0x52, 0x4D, 0xA6, 0x8B, 0xC2, 0x0E, 0xCE, 0x26, 0x28, 0x31, - 0x53, 0xC6, 0x63, 0x5A, 0x75, 0x45, 0x65, 0xDA, 0x4B, 0x8D, 0x77, 0xB0, - 0x06, 0x28, 0x36, 0x43, 0x1D, 0xA3, 0xC7, 0x33, 0x28, 0x8D, 0x70, 0xB5, - 0x0D, 0x24, 0x25, 0x50, 0xA2, 0xEB, 0x50, 0x61, 0x98, 0x3D, 0x8C, 0xCD, - 0xDC, 0x17, 0x3F, 0xE4, 0xDD, 0x46, 0x3A, 0xD0, 0xA6, 0x78, 0xD7, 0x85, - 0x63, 0xC8, 0x3A, 0x54, 0xDB, 0xD5, 0xB9, 0x7C, 0x4B, 0xFD, 0x1E, 0xA2, - 0xBD, 0x97, 0x22, 0x09, 0x06, 0x8F, 0xA5, 0x49, 0x06, 0x29, 0x71, 0x13, - 0x69, 0xCE, 0xEC, 0x75, 0xE9, 0x93, 0x58, 0x80, 0x05, 0xFF, 0xBF, 0x1D, - 0x48, 0xCE, 0x34, 0xDC, 0x03, 0x40, 0xB9, 0x6F, 0x40, 0x94, 0x2C, 0x30, - 0xD0, 0x6F, 0x35, 0xC0, 0x46, 0xE5, 0xD1, 0xFF, 0x44, 0x83, 0x2C, 0x6D, - 0x6C, 0xB2, 0x04, 0xD8, 0xB0, 0x1E, 0x2C, 0xF8, 0x71, 0xA4, 0xA1, 0x60, - 0x23, 0x8F, 0x19, 0xF7, 0x58, 0x29, 0x42, 0x9F, 0x24, 0x18, 0x2B, 0xD3, - 0xF0, 0x31, 0x45, 0xB1, 0xA3, 0x5E, 0xA1, 0xC9, 0x52, 0xEE, 0xE6, 0xF5, - 0x0A, 0xBB, 0xEB, 0x6B, 0x09, 0xE9, 0xA7, 0x84, 0xB6, 0x1C, 0xE3, 0xA3, - 0x0B, 0x7E, 0x8A, 0x0B, 0xD0, 0x4C, 0xE9, 0x50, 0x45, 0x34, 0x21, 0x1B, - 0x55, 0x0E, 0x12, 0x1A, 0x74, 0xDE, 0x28, 0xEB, 0x20, 0x66, 0x13, 0xBB, - 0xEA, 0xC7, 0xDA, 0xCF, 0xB4, 0x16, 0x57, 0x65, 0x0A, 0xAD, 0x98, 0xF7, - 0x03, 0x1E, 0xF5, 0xD9, 0xFC, 0x3E, 0x59, 0xEC, 0x7A, 0x2B, 0x46, 0xC0, - 0x13, 0x19, 0xD8, 0xFD, 0xF7, 0x0D, 0x61, 0xFC, 0x41, 0x2A, 0x5C, 0xC7, - 0x84, 0x95, 0xEF, 0x31, 0x9F, 0x1F, 0x84, 0x53, 0x7E, 0xA8, 0x37, 0x04, - 0x1D, 0x1D, 0x08, 0xD5, 0xE5, 0x4B, 0x0C, 0x06, 0xCC, 0x14, 0x19, 0xA9, - 0x4D, 0x75, 0x06, 0x49, 0x48, 0xC9, 0xDB, 0x3F, 0x1B, 0xB1, 0x0D, 0x19, - 0x71, 0xEB, 0x13, 0xE1, 0x26, 0xAF, 0xC0, 0xD9, 0x87, 0xC3, 0xD8, 0x68, - 0x8A, 0x3C, 0x96, 0x6B, 0xDE, 0x94, 0x3D, 0x60, 0x0B, 0x24, 0x8F, 0x0C, - 0xE1, 0xA3, 0xA7, 0x05, 0x40, 0xB7, 0x24, 0x35, 0x82, 0x45, 0xA0, 0xE0, - 0x26, 0xD2, 0xFA, 0xAB, 0x59, 0x33, 0x4E, 0x95, 0xD2, 0xFA, 0x72, 0x82, - 0x2C, 0x00, 0x2F, 0xE0, 0xE5, 0x49, 0x16, 0x30, 0x0C, 0x3A, 0xC1, 0xDC, - 0x11, 0x70, 0x59, 0xF9, 0x98, 0x81, 0xBB, 0x9F, 0x60, 0xEB, 0xB0, 0xAD, - 0x5B, 0x65, 0x7A, 0xC4, 0x3E, 0xE7, 0x6A, 0x3D, 0xD2, 0x7D, 0x02, 0xD3, - 0xA8, 0x98, 0xE5, 0xF1, 0xF5, 0xE1, 0xCF, 0xFA, 0x71, 0x50, 0xAA, 0x8A, - 0xB1, 0x43, 0xDC, 0x3A, 0x0E, 0xC2, 0x77, 0xF3, 0x95, 0x39, 0x82, 0x1D, - 0x4D, 0x88, 0xFD, 0xA6, 0x55, 0x02, 0x5C, 0x80, 0x1E, 0x84, 0x91, 0x5C, - 0x7D, 0x63, 0x36, 0x42, 0x68, 0xA8, 0x15, 0x72, 0x40, 0xC0, 0xF5, 0x52, - 0xC8, 0x9B, 0xB8, 0xAD, 0x00, 0xCB, 0x4B, 0x0A, 0x87, 0x54, 0x96, 0x48, - 0x47, 0x7D, 0x39, 0xCA, 0x1D, 0xF0, 0x83, 0x63, 0x9A, 0x7F, 0xE9, 0xB5, - 0x5A, 0x11, 0x2F, 0x94, 0x30, 0x9F, 0x1D, 0xD6, 0xD5, 0x98, 0xCB, 0x80, - 0x7B, 0x82, 0x2B, 0xC0, 0xA0, 0x73, 0xBD, 0x17, 0x33, 0xE4, 0x3B, 0xE0, - 0xE5, 0x20, 0x59, 0xE6, 0x94, 0xF8, 0xD5, 0x41, 0x21, 0x2D, 0xAD, 0xF0, - 0x10, 0x08, 0x79, 0x60, 0x2F, 0x7E, 0x26, 0x82, 0xE8, 0xA2, 0x41, 0x79, - 0xE7, 0xF6, 0x06, 0xC0, 0xB2, 0x59, 0xF9, 0x5B, 0x1B, 0x20, 0x12, 0xA0, - 0xF5, 0xD8, 0x0F, 0x1F, 0xA6, 0x96, 0x0A, 0x69, 0x3B, 0x2B, 0xD1, 0x95, - 0x18, 0x7F, 0xA4, 0x1B, 0x4B, 0xE4, 0x82, 0xDA, 0x50, 0x41, 0xA6, 0x30, - 0x0D, 0xC0, 0x68, 0xEC, 0xA9, 0x43, 0x2E, 0x17, 0x13, 0x0B, 0x21, 0x00, - 0x42, 0xF5, 0xCE, 0x2F, 0x10, 0x81, 0x3D, 0x6F, 0xDB, 0xDE, 0x81, 0xD1, - 0x10, 0xDE, 0x4E, 0x02, 0x98, 0x85, 0x29, 0x81, 0x59, 0xC4, 0x24, 0x82, - 0x25, 0xF0, 0x3D, 0x93, 0xB3, 0x08, 0xC9, 0xC5, 0x3D, 0xA1, 0x97, 0xAE, - 0x2D, 0xE3, 0x93, 0xAC, 0xBB, 0xB2, 0x06, 0xC6, 0x54, 0x58, 0x1C, 0x9A, - 0x37, 0x6B, 0xDE, 0xEA, 0x63, 0xDE, 0x3F, 0x07, 0x76, 0xFF, 0x8E, 0x41, - 0x4D, 0x2E, 0x04, 0x54, 0x7D, 0xDF, 0x7F, 0x26, 0x6A, 0xD2, 0x5D, 0xBB, - 0x19, 0x5F, 0x2B, 0x09, 0xF4, 0x15, 0x7D, 0x5E, 0xB5, 0x48, 0xEE, 0xF1, - 0x17, 0xC0, 0x32, 0xE6, 0x14, 0x2C, 0x2D, 0xF3, 0xDD, 0xDA, 0xFD, 0xC5, - 0x2D, 0x05, 0xB3, 0x7D, 0x69, 0x42, 0xF4, 0x4F, 0xDC, 0xEE, 0x27, 0x6C, - 0x10, 0x59, 0xCB, 0x63, 0xF6, 0xE9, 0xC2, 0x3B, 0x8A, 0xD0, 0xA8, 0x10, - 0x70, 0xF1, 0x35, 0x2B, 0x3D, 0x8E, 0xAE, 0xBD, 0xD3, 0xB7, 0xE2, 0x9E, - 0x3A, 0xD7, 0xBD, 0xF5, 0x38, 0x32, 0x90, 0x4F, 0xE2, 0x42, 0xB7, 0x73, - 0xE0, 0xFE, 0x83, 0xEA, 0x25, 0x87, 0xFB, 0xB7, 0xE7, 0x31, 0x66, 0xEB, - 0xAA, 0xCC, 0x40, 0x4F, 0x35, 0x18, 0x21, 0xFF, 0x31, 0x3C, 0x61, 0x8C, - 0xEC, 0xB4, 0x20, 0xD0, 0xFE, 0x1C, 0x81, 0x53, 0xB0, 0x6F, 0x76, 0xF7, - 0x0F, 0x7F, 0x51, 0x51, 0x40, 0xAE, 0x35, 0x84, 0x84, 0xA9, 0x35, 0x9C, - 0xC0, 0x3C, 0x0D, 0x7E, 0x73, 0x5B, 0xA7, 0xE6, 0x28, 0x62, 0x6C, 0x53, - 0x68, 0x2D, 0x72, 0xA1, 0x0F, 0x63, 0xCB, 0x79, 0x79, 0xE5, 0xA5, 0x24, - 0xCF, 0x6A, 0x60, 0x6C, 0x0E, 0xF3, 0x52, 0x5B, 0xDF, 0xA4, 0x26, 0x7C, - 0xC2, 0xF3, 0xD1, 0x20, 0x8A, 0x8C, 0x80, 0x04, 0x77, 0xCE, 0x0C, 0xE0, - 0xA3, 0x8C, 0xE5, 0xC2, 0xDE, 0x60, 0xC1, 0x35, 0x18, 0xA8, 0x94, 0xCF, - 0xEA, 0x81, 0xD8, 0xE9, 0x22, 0x93, 0xDB, 0x7A, 0xAA, 0x51, 0xAD, 0xE5, - 0x44, 0x6B, 0x31, 0xFF, 0x04, 0xE1, 0xB6, 0xE3, 0x55, 0xFA, 0xEF, 0x17, - 0xE7, 0x94, 0x37, 0xDF, 0x89, 0xD5, 0x29, 0x07, 0x96, 0xC7, 0x76, 0xE5, - 0x21, 0xD7, 0xE2, 0xB3, 0xA4, 0x77, 0x6F, 0xE4, 0x1E, 0xAD, 0x03, 0x64, - 0xF5, 0x38, 0x33, 0xC5, 0x74, 0x2E, 0xA1, 0xF1, 0xBB, 0xAF, 0x1B, 0x24, - 0x8B, 0xEE, 0x46, 0x86, 0x25, 0xAD, 0x95, 0x5E, 0x28, 0x1F, 0xE9, 0x2C, - 0xCD, 0xC9, 0x85, 0xFC, 0x5B, 0x74, 0x3F, 0xF3, 0xF9, 0x2B, 0x5C, 0x23, - 0x5C, 0xD0, 0xBA, 0xBA, 0x7E, 0x8C, 0xA0, 0xA9, 0x56, 0xA0, 0x55, 0xA5, - 0x36, 0x7D, 0xB8, 0x8B, 0xA6, 0x46, 0x62, 0x1C, 0x1E, 0x7E, 0x7C, 0xE3, - 0xC3, 0xEA, 0x33, 0x8E, 0x28, 0x9A, 0xA8, 0xB6, 0x8E, 0xC3, 0xA4, 0x0F, - 0x4A, 0x23, 0xFF, 0x6F, 0x3B, 0x2A, 0xBE, 0x65, 0x97, 0x10, 0x30, 0x12, - 0xC0, 0xA6, 0x3A, 0x34, 0xE3, 0x6C, 0xA8, 0x11, 0xED, 0x78, 0x60, 0xE2, - 0xAE, 0xC8, 0x2E, 0xE3, 0xEA, 0xB9, 0x3E, 0xAB, 0xBD, 0x15, 0x49, 0x9C, - 0x75, 0xD7, 0x49, 0xE3, 0x5C, 0xE9, 0xA2, 0x8A, 0x0C, 0xBE, 0x74, 0x81, - 0x1D, 0xE0, 0xCA, 0x12, 0x3E, 0x8A, 0x23, 0xF2, 0x7B, 0x5D, 0xF0, 0xF7, - 0x0E, 0x1B, 0x73, 0xF6, 0x5E, 0x8C, 0xE0, 0x8E, 0x57, 0xD5, 0x01, 0x56, - 0x5E, 0x3B, 0x7C, 0xC8, 0xF7, 0xE4, 0x61, 0x70, 0x5D, 0x4F, 0xC3, 0x01, - 0x26, 0x2A, 0x71, 0x26, 0x50, 0x9B, 0x65, 0xA1, 0x49, 0xBE, 0x50, 0x4C, - 0x44, 0x3C, 0x5B, 0x09, 0x3B, 0x39, 0x32, 0x34, 0x82, 0x3B, 0xBF, 0x74, - 0x6B, 0x37, 0x59, 0xF4, 0x13, 0x21, 0x30, 0x86, 0x6D, 0x94, 0xDE, 0x2F, - 0x5F, 0x69, 0x07, 0x32, 0xFF, 0x14, 0x88, 0x46, 0xA4, 0xB1, 0x9E, 0x69, - 0x5A, 0xB7, 0x91, 0x41, 0x2A, 0x62, 0x3C, 0x81, 0xE1, 0x4A, 0x47, 0x9D, - 0x61, 0xB2, 0x46, 0x2D, 0x04, 0x3F, 0xD9, 0x57, 0xF2, 0xAB, 0xC9, 0x4F, - 0xB3, 0xCE, 0x11, 0x2A, 0x77, 0x76, 0x49, 0x1B, 0x7E, 0x1D, 0xB7, 0xB3, - 0x1D, 0xB7, 0x84, 0x5A, 0xC5, 0xCC, 0x1F, 0x9C, 0x82, 0x6D, 0xE0, 0x62, - 0x03, 0xEE, 0xA9, 0x9A, 0x05, 0x26, 0x0A, 0xEB, 0x0D, 0x55, 0x01, 0x59, - 0x71, 0x10, 0xB9, 0x53, 0x20, 0x65, 0x7B, 0x42, 0x90, 0x37, 0x36, 0x5A, - 0xC2, 0xBA, 0x91, 0x20, 0xE0, 0x89, 0xA9, 0x65, 0x2D, 0x67, 0x83, 0x5D, - 0x5A, 0xB9, 0x6B, 0x27, 0x13, 0x51, 0xA8, 0x00, 0x9E, 0x98, 0xE9, 0x62, - 0xD1, 0x55, 0x7D, 0x37, 0x1E, 0xB5, 0xA3, 0x17, 0x9B, 0x45, 0xD8, 0x60, - 0x02, 0xAC, 0xFC, 0x2B, 0xA9, 0xAC, 0x66, 0x79, 0xF9, 0x0C, 0xBC, 0xD4, - 0x50, 0x15, 0x8B, 0x48, 0xB1, 0x6A, 0xB4, 0xED, 0xB7, 0xFE, 0xE8, 0x9E, - 0x3B, 0xE3, 0x1C, 0xA5, 0x21, 0x15, 0x06, 0x66, 0x2F, 0xBB, 0x05, 0x33, - 0xE4, 0x5A, 0x17, 0x5D, 0xF7, 0xB9, 0x2F, 0x3A, 0x2B, 0x83, 0xFF, 0xAC, - 0xB6, 0x65, 0x92, 0xEF, 0x6E, 0x1C, 0x8A, 0x6C, 0x72, 0x52, 0x32, 0xA6, - 0x5A, 0x16, 0x75, 0xEE, 0xA9, 0x95, 0x84, 0x33, 0x34, 0x5E, 0x71, 0x66, - 0x40, 0xB9, 0xFF, 0x8B, 0xD5, 0x50, 0x81, 0xAF, 0x27, 0xC8, 0x58, 0xEE, - 0x0D, 0xE7, 0x6D, 0xEB, 0x24, 0xA2, 0x3F, 0xDA, 0x1A, 0xD4, 0xBE, 0x3B, - 0x02, 0x7B, 0x1C, 0x5A, 0xAF, 0x1D, 0xE3, 0x4B, 0x9F, 0xBC, 0x78, 0x5B, - 0x0B, 0x91, 0x73, 0x78, 0x64, 0xD9, 0x77, 0xC7, 0x6E, 0x4B, 0x94, 0x5F, - 0xE9, 0x8D, 0x8F, 0x49, 0xDC, 0x48, 0xEE, 0x58, 0x86, 0x04, 0x63, 0xEB, - 0x0D, 0x39, 0x31, 0x81, 0xB4, 0xA8, 0x16, 0xB3, 0x7F, 0x60, 0x7F, 0x94, - 0xEE, 0x06, 0x53, 0x38, 0x10, 0x0F, 0x93, 0x7F, 0x12, 0x1F, 0x76, 0x28, - 0xA7, 0x3E, 0x46, 0x10, 0x8C, 0x28, 0x53, 0xCF, 0x9F, 0x83, 0x7F, 0x0C, - 0xD8, 0xD6, 0x52, 0xF3, 0xE8, 0xD2, 0x21, 0xA6, 0x4A, 0xEE, 0x8B, 0xF7, - 0x5B, 0x19, 0x90, 0x6D, 0x35, 0x83, 0xAF, 0x3F, 0x49, 0x71, 0xB1, 0x3E, - 0xD1, 0x98, 0x60, 0x77, 0x05, 0x36, 0xA5, 0xFF, 0x82, 0x37, 0x14, 0x49, - 0x62, 0x98, 0xB3, 0x05, 0xF5, 0xAC, 0xE2, 0xCC, 0x47, 0x09, 0x94, 0x8A, - 0x59, 0x00, 0x23, 0xF4, 0x6D, 0x08, 0xE2, 0xAD, 0x7A, 0xF0, 0xCC, 0x97, - 0x68, 0xF7, 0x21, 0x5C, 0x43, 0xD4, 0x1F, 0x16, 0x1A, 0xC6, 0x65, 0xFE, - 0x96, 0xB4, 0x7C, 0x2C, 0x79, 0x9E, 0xEC, 0xD4, 0x96, 0xAF, 0x0E, 0x35, - 0x24, 0x06, 0x03, 0x8E, 0x9A, 0x4E, 0xA5, 0xA7, 0xCD, 0x35, 0x32, 0xD2, - 0x30, 0x15, 0xAC, 0xED, 0xDF, 0xF1, 0x83, 0x39, 0x17, 0xBB, 0x9B, 0x90, - 0xED, 0xFB, 0x64, 0xE9, 0x55, 0x09, 0x49, 0x86, 0x7A, 0x9A, 0x43, 0x13, - 0xB1, 0xD2, 0xC7, 0xC7, 0xC6, 0xA1, 0x99, 0xC8, 0x51, 0x4A, 0x5F, 0x9D, - 0x6F, 0xA6, 0xCD, 0x97, 0x30, 0xE9, 0x55, 0x0B, 0x6F, 0x0F, 0x4A, 0x43, - 0x6E, 0x71, 0xE6, 0xCF, 0x3A, 0x7C, 0xC9, 0x78, 0x70, 0xFE, 0xBD, 0x0A, - 0x00, 0xEC, 0xA6, 0x7F, 0x83, 0xFA, 0xBE, 0xD4, 0xDF, 0xB0, 0x86, 0x41, - 0x12, 0x53, 0x1B, 0x4F, 0x7C, 0x1E, 0x60, 0x2A, 0xC1, 0x20, 0x7A, 0x00, - 0xED, 0x6C, 0x66, 0x23, 0x1F, 0x79, 0xC3, 0x3E, 0x01, 0x74, 0xA7, 0x60, - 0x7D, 0x1F, 0x29, 0x93, 0x03, 0xF0, 0x64, 0xF6, 0x6F, 0x56, 0x8E, 0x75, - 0x57, 0x25, 0x70, 0xDC, 0xD2, 0xD2, 0x28, 0x37, 0xA8, 0x05, 0x9B, 0xB0, - 0xAD, 0x1A, 0x2D, 0x86, 0xA9, 0x50, 0xB8, 0xE3, 0xF6, 0xA2, 0x3E, 0x17, - 0x5B, 0x78, 0x65, 0xC0, 0x61, 0x95, 0x0E, 0x27, 0x39, 0x72, 0x6A, 0x9E, - 0xCB, 0x8E, 0xAD, 0xEC, 0x0C, 0xFC, 0xDB, 0x9A, 0x9A, 0x12, 0x31, 0x16, - 0x68, 0x4F, 0x83, 0x79, 0x11, 0x3D, 0x75, 0xED, 0x2D, 0xEA, 0x92, 0x8E, - 0xDE, 0xAC, 0x07, 0x55, 0xF1, 0xE4, 0x30, 0x6C, 0xFC, 0x5C, 0x88, 0x1F, - 0x77, 0x94, 0xC8, 0x87, 0x73, 0xB2, 0xB6, 0x9F, 0x2A, 0x05, 0x71, 0xDE, - 0x8E, 0xF2, 0xEB, 0x3A, 0xDB, 0xBE, 0x46, 0xFA, 0x11, 0xA1, 0xCA, 0x1A, - 0xB3, 0x65, 0xAC, 0x42, 0x85, 0xD5, 0x0B, 0x23, 0x57, 0xA5, 0x53, 0xE9, - 0x58, 0x30, 0xE0, 0xF9, 0x23, 0xF0, 0x75, 0x2A, 0xF5, 0x2B, 0x9A, 0x25, - 0x96, 0xD7, 0x1E, 0x71, 0x31, 0xC7, 0xA7, 0xB0, 0x6B, 0x3F, 0x26, 0xF8, - 0x8D, 0xF9, 0x1E, 0x15, 0x83, 0xB8, 0xFF, 0xC6, 0xAA, 0xA6, 0x42, 0xAC, - 0x90, 0x82, 0xA2, 0x50, 0x7F, 0x1F, 0xC3, 0x99, 0xDC, 0x27, 0xD7, 0xAA, - 0x65, 0x13, 0x08, 0xA2, 0x66, 0x51, 0x7D, 0xC7, 0x7E, 0xAE, 0x1A, 0x33, - 0x2B, 0x72, 0xF3, 0xF4, 0x25, 0xD9, 0xEE, 0xF1, 0x07, 0x0F, 0xC3, 0x87, - 0xDF, 0x2B, 0x0C, 0xC8, 0x4D, 0x2E, 0xEB, 0xA3, 0x93, 0xB2, 0xBB, 0xAA, - 0x61, 0xE1, 0x71, 0x0D, 0x53, 0xE2, 0xF5, 0x7E, 0xF7, 0x08, 0x06, 0xAD, - 0x3E, 0xE7, 0xA6, 0xB9, 0x3B, 0xC9, 0x68, 0x5D, 0xB8, 0x7D, 0xC1, 0x31, - 0x9B, 0x70, 0xC2, 0x2B, 0x57, 0x26, 0x54, 0x67, 0x3D, 0x14, 0x26, 0xCF, - 0xB0, 0xEC, 0xD6, 0x00, 0xE3, 0x3F, 0x26, 0xCA, 0xEF, 0xB8, 0x1A, 0xFD, - 0xE4, 0x06, 0xE9, 0x41, 0xF2, 0xAD, 0x2E, 0x16, 0x11, 0x0A, 0x98, 0x4B, - 0x01, 0x67, 0x76, 0x99, 0xAE, 0x58, 0xF4, 0xAD, 0xC2, 0xC8, 0x56, 0x26, - 0x50, 0xB2, 0x77, 0x4B, 0x32, 0x71, 0x16, 0x13, 0xC7, 0xAE, 0xE3, 0xDE, - 0x1C, 0x6D, 0x54, 0x4C, 0x89, 0xA4, 0x81, 0x18, 0x53, 0xC3, 0x01, 0xCD, - 0xCF, 0x85, 0xFB, 0x3A, 0x97, 0xD5, 0x25, 0x56, 0x39, 0x89, 0xEF, 0x52, - 0xBB, 0x02, 0xC8, 0x23, 0xDD, 0x04, 0x36, 0x85, 0xA2, 0x33, 0xE4, 0x4F, - 0x41, 0xC8, 0xE9, 0x8B, 0xCE, 0xD5, 0xB0, 0xDB, 0xF3, 0xB4, 0xC3, 0x7C, - 0x70, 0x29, 0x0F, 0xB6, 0x3C, 0xB1, 0xD3, 0x0C, 0xD5, 0x06, 0x56, 0x2E, - 0x57, 0xD1, 0x90, 0xAB, 0x5D, 0xE8, 0xE6, 0xD6, 0x94, 0x58, 0xE2, 0xA8, - 0x92, 0x42, 0xF8, 0xD4, 0xD7, 0x2F, 0x1F, 0x16, 0x92, 0x0C, 0xD5, 0x8E, - 0x69, 0x98, 0xA9, 0x48, 0xA1, 0x6E, 0x94, 0x8C, 0x66, 0x30, 0xA3, 0x52, - 0x50, 0x7A, 0x29, 0x96, 0xB0, 0x2B, 0x16, 0x3E, 0x2C, 0x56, 0xA4, 0x9F, - 0x85, 0x96, 0x56, 0x25, 0x98, 0x56, 0xAA, 0xFB, 0xEE, 0x4A, 0x31, 0xD9, - 0xD7, 0xB3, 0x37, 0xE4, 0x1D, 0x49, 0x3D, 0xA7, 0xF7, 0x93, 0x31, 0x6D, - 0x99, 0x24, 0xE5, 0x30, 0x8F, 0xB4, 0x89, 0x56, 0x1F, 0xB7, 0x09, 0x4F, - 0x71, 0xDB, 0x4D, 0x02, 0x40, 0x7B, 0xEA, 0x75, 0x38, 0x2C, 0xCD, 0xE2, - 0x9F, 0x60, 0xC8, 0x4A, 0x84, 0x2F, 0x9D, 0xFF, 0x75, 0xED, 0x32, 0xBA, - 0xB7, 0xF4, 0xC8, 0x0E, 0xCF, 0xC5, 0x31, 0x8A, 0xA0, 0xF7, 0xC9, 0x07, - 0x54, 0x44, 0x90, 0xC1, 0x1C, 0x46, 0x49, 0xEE, 0x33, 0x0E, 0xB4, 0x87, - 0x4B, 0x9E, 0x3C, 0xF0, 0xAD, 0x0B, 0xA5, 0xA4, 0x28, 0x43, 0xE6, 0x34, - 0xD3, 0xD0, 0xF4, 0x88, 0x1E, 0xDE, 0x6E, 0x50, 0x81, 0x0E, 0x24, 0xE5, - 0x87, 0xA4, 0xAB, 0x67, 0xD1, 0x91, 0xD2, 0xB8, 0x57, 0xA6, 0x86, 0x4A, - 0x47, 0x45, 0x39, 0x6B, 0x1E, 0x2B, 0xCF, 0xCD, 0xE2, 0x1B, 0xBF, 0x75, - 0xC2, 0xD4, 0x5A, 0x68, 0x8F, 0xC6, 0xDC, 0x64, 0xBB, 0xBE, 0x71, 0x38, - 0x9D, 0x4B, 0xBE, 0x4E, 0xF6, 0x2D, 0xAC, 0x5D, 0x23, 0x6B, 0xC3, 0x96, - 0x51, 0x4D, 0x10, 0x70, 0x83, 0xCA, 0x69, 0x91, 0x52, 0x3E, 0x46, 0x03, - 0x93, 0xC3, 0xE0, 0x10, 0xDF, 0x24, 0x7F, 0x9B, 0x86, 0xD6, 0x5B, 0x95, - 0xD4, 0xCF, 0xED, 0x14, 0xCD, 0x53, 0x82, 0x97, 0x6C, 0x81, 0x9C, 0x3F, - 0x6B, 0xFA, 0x9B, 0x44, 0x1B, 0x29, 0xCA, 0x66, 0xD9, 0x22, 0xB1, 0xDE, - 0xFE, 0x3A, 0xE2, 0x0C, 0xD5, 0x62, 0xDB, 0x00, 0x12, 0x59, 0x74, 0xE6, - 0x8C, 0x22, 0x7B, 0x11, 0x7F, 0x59, 0xB3, 0x0A, 0x2C, 0x76, 0x5F, 0x71, - 0x31, 0xA2, 0xD8, 0x42, 0x28, 0xF3, 0x24, 0xC5, 0xF6, 0x85, 0x60, 0x32, - 0xC1, 0x91, 0xD7, 0x95, 0x61, 0x70, 0x51, 0x9A, 0x4E, 0x62, 0x8A, 0xCF, - 0xBD, 0x98, 0x00, 0xA0, 0x12, 0xB5, 0xB6, 0x90, 0xC7, 0x6E, 0xC3, 0x4A, - 0x8E, 0x2F, 0x50, 0xAD, 0xC0, 0x26, 0x12, 0xF4, 0x68, 0x1D, 0x51, 0x72, - 0x14, 0x06, 0xB7, 0x7A, 0xCA, 0x37, 0x8F, 0x39, 0x01, 0x76, 0xE5, 0xE4, - 0xF1, 0xCA, 0xDA, 0x6A, 0x6B, 0x7C, 0x7D, 0xD9, 0xA9, 0x39, 0xBB, 0x50, - 0x79, 0x02, 0xD6, 0xA1, 0x12, 0xE7, 0xE6, 0x9A, 0x1B, 0xF4, 0x89, 0x48, - 0x29, 0x88, 0xA7, 0xC8, 0xE9, 0xEF, 0xB1, 0x28, 0x18, 0x22, 0x4B, 0x6A, - 0x96, 0xAF, 0x06, 0x3B, 0xE0, 0x8E, 0x9B, 0x2C, 0xC1, 0x7B, 0xD9, 0x87, - 0x72, 0xA5, 0xC8, 0xFE, 0x30, 0x9C, 0x24, 0x79, 0xAD, 0x04, 0xBB, 0x38, - 0xA9, 0xB8, 0x29, 0x01, 0x41, 0xC3, 0x40, 0xD9, 0xE6, 0xE4, 0xD3, 0x97, - 0xE2, 0x42, 0xBF, 0x79, 0x59, 0x7B, 0xAF, 0x31, 0x0C, 0xF3, 0xD1, 0x72, - 0xA4, 0x9D, 0x36, 0xD9, 0xDB, 0x0C, 0x0F, 0xCC, 0x3A, 0x8C, 0xAF, 0x71, - 0xB7, 0x46, 0x2F, 0x26, 0x7D, 0x1E, 0x25, 0xC9, 0x8E, 0xA3, 0x9B, 0xCF, - 0x7F, 0xC4, 0x96, 0xB6, 0xC7, 0x05, 0x62, 0x08, 0x49, 0x3C, 0xFC, 0x24, - 0xAA, 0x16, 0xEB, 0x3C, 0xE6, 0x04, 0x57, 0xD1, 0xA3, 0x81, 0x6E, 0xD4, - 0x64, 0xF5, 0xC6, 0x24, 0x06, 0x9E, 0xA4, 0x76, 0x3E, 0x62, 0x31, 0x54, - 0xC8, 0xC7, 0xAA, 0x31, 0xC6, 0xF0, 0x71, 0x1B, 0xE7, 0x08, 0xFF, 0x3A, - 0x7A, 0xD3, 0x51, 0x5A, 0xE8, 0xA6, 0xD4, 0xAA, 0x6E, 0x20, 0x37, 0x28, - 0x0D, 0x0A, 0xCC, 0x25, 0x6C, 0x1E, 0x76, 0x8C, 0xC5, 0xCA, 0xDA, 0x6C, - 0x24, 0x17, 0xD4, 0xB0, 0x45, 0x3E, 0xD7, 0x25, 0xB8, 0x03, 0xED, 0xA2, - 0xDA, 0x82, 0x08, 0x8F, 0x10, 0x3F, 0x13, 0x43, 0x07, 0x3F, 0x8C, 0xF9, - 0xE5, 0xD5, 0xB0, 0x35, 0x01, 0x13, 0x61, 0x38, 0x97, 0xCA, 0xB4, 0xFE, - 0x1B, 0x1F, 0x44, 0xEC, 0xFB, 0xAB, 0x07, 0xB6, 0x3F, 0x21, 0x80, 0x6A, - 0x8D, 0xBA, 0x8A, 0x1D, 0xEA, 0xEF, 0xA0, 0xEB, 0xBC, 0x26, 0x37, 0x4F, - 0xA6, 0x16, 0xF8, 0xA2, 0x90, 0x3E, 0xF7, 0x06, 0xD8, 0x4C, 0x21, 0x94, - 0x2C, 0x5F, 0x49, 0x05, 0x12, 0xF8, 0xA8, 0xA5, 0x14, 0x40, 0xBE, 0x40, - 0x01, 0xF5, 0x23, 0xE1, 0xEE, 0xF6, 0x5B, 0xC0, 0xE6, 0x76, 0xEF, 0x1D, - 0x05, 0xA8, 0x77, 0xF2, 0x5D, 0x91, 0xBA, 0x62, 0xB8, 0xDD, 0xF0, 0xFC, - 0x5B, 0xA9, 0xB2, 0x25, 0xDD, 0x0E, 0x08, 0xFA, 0xE8, 0x5C, 0xCA, 0x43, - 0x0D, 0xD0, 0x65, 0x08, 0x23, 0xA7, 0x2A, 0x2C, 0xE6, 0x6F, 0xB6, 0x0A, - 0xE7, 0xED, 0x86, 0x80, 0x50, 0x94, 0x58, 0x0D, 0x11, 0x57, 0xED, 0xB9, - 0xD5, 0x7C, 0x33, 0xCD, 0x44, 0x9A, 0x17, 0xFB, 0x74, 0xF3, 0xB1, 0x2D, - 0x9F, 0x38, 0x5E, 0x6A, 0x9A, 0xAE, 0x5F, 0x7B, 0xAD, 0x4F, 0x9C, 0x8E, - 0x1E, 0x3A, 0x75, 0x4F, 0x30, 0xCF, 0xF7, 0x1C, 0x82, 0x34, 0xC6, 0x3E, - 0xE7, 0x5B, 0x8B, 0x2C, 0xD8, 0xFE, 0xDB, 0x33, 0x27, 0xBB, 0x2E, 0x24, - 0xB0, 0xDA, 0x74, 0xD3, 0x94, 0x85, 0x78, 0x36, 0x40, 0x2D, 0xEE, 0x40, - 0x4A, 0xED, 0x00, 0x4C, 0xDB, 0xF9, 0x49, 0x2F, 0xEC, 0x03, 0x99, 0x63, - 0xDD, 0x9E, 0xB7, 0xA3, 0x3B, 0xE1, 0xF2, 0x0E, 0x5D, 0x58, 0xD8, 0x33, - 0xE9, 0xE4, 0x0A, 0xD2, 0x83, 0xA0, 0x3F, 0x80, 0x9A, 0x01, 0xC5, 0x8D, - 0xF3, 0x14, 0xC8, 0x0F, 0xE4, 0xB8, 0xAD, 0xCD, 0x3E, 0x50, 0x43, 0x17, - 0xC1, 0x58, 0x8D, 0x64, 0x03, 0xB1, 0xE5, 0x42, 0xC8, 0x34, 0x6A, 0xFB, - 0x74, 0x18, 0xA0, 0xD9, 0x3D, 0x01, 0xD7, 0x2F, 0x51, 0x0F, 0xD8, 0x29, - 0x74, 0xB1, 0xF8, 0x99, 0xCA, 0x74, 0xB2, 0xF1, 0xB6, 0x7B, 0x53, 0x10, - 0xCE, 0x73, 0xF6, 0x32, 0x3F, 0x05, 0x6E, 0xC7, 0xAD, 0x27, 0x34, 0xD4, - 0xB9, 0x1D, 0x34, 0x5D, 0xEC, 0x88, 0x46, 0x22, 0x90, 0x94, 0xAF, 0x1A, - 0x51, 0x33, 0x10, 0xB7, 0xBF, 0xBE, 0x0A, 0xCD, 0x1E, 0xE8, 0x95, 0x78, - 0x61, 0x17, 0x63, 0x8F, 0x3A, 0xE2, 0x30, 0x59, 0x3F, 0xBF, 0xD8, 0xA3, - 0x85, 0xEF, 0x3D, 0x1D, 0xD2, 0x4F, 0x7B, 0xB3, 0xD7, 0x14, 0x91, 0x65, - 0xC2, 0x3A, 0x66, 0xBC, 0xFF, 0xFD, 0xC2, 0x12, 0x4A, 0xAF, 0xC4, 0xCC, - 0x78, 0x1F, 0xA1, 0xAB, 0x54, 0xB7, 0xDB, 0x3B, 0x07, 0x45, 0x09, 0x93, - 0x45, 0x40, 0x2F, 0xA0, 0x68, 0x73, 0x54, 0x27, 0x96, 0xB4, 0x2E, 0x88, - 0xC2, 0xF7, 0x98, 0x9E, 0xCA, 0xBF, 0xF4, 0xEC, 0x0A, 0xB6, 0x8F, 0x33, - 0x08, 0x5C, 0x91, 0x1B, 0x9F, 0x55, 0xDF, 0xF9, 0x04, 0x5D, 0xF0, 0x3A, - 0xE1, 0xFF, 0x93, 0x3A, 0xA7, 0xBB, 0x24, 0x75, 0xA3, 0x0D, 0x95, 0x7D, - 0x66, 0x11, 0x4D, 0x0C, 0xCD, 0x8A, 0x98, 0xA3, 0xC4, 0x38, 0x88, 0x00, - 0xD3, 0x7F, 0xA8, 0x7D, 0xE6, 0x14, 0xF0, 0xA5, 0xF2, 0x5E, 0xA0, 0xE2, - 0xD4, 0x3E, 0xFA, 0x00, 0xD4, 0x5D, 0x01, 0x5D, 0x55, 0xF9, 0xA4, 0xC8, - 0x49, 0x59, 0x16, 0xFA, 0xC5, 0x51, 0x15, 0xDC, 0xC3, 0x1E, 0xD5, 0xED, - 0xE4, 0xBB, 0x14, 0xA0, 0xF3, 0x68, 0xD5, 0x60, 0xE0, 0x42, 0xB4, 0x30, - 0x82, 0xD8, 0xD6, 0x3E, 0xEC, 0xE7, 0xAD, 0x3C, 0x69, 0x61, 0x28, 0x8E, - 0x8C, 0x04, 0xF1, 0xA0, 0x1E, 0xBD, 0xDF, 0xBE, 0xFD, 0xAE, 0xD9, 0x65, - 0x66, 0x33, 0x0F, 0xB0, 0x8D, 0xE9, 0x46, 0xFD, 0xD5, 0xF9, 0x20, 0x18, - 0x7F, 0xF7, 0x20, 0x3F, 0xE2, 0x7A, 0x38, 0x14, 0xBB, 0x1A, 0xC3, 0xCA, - 0xAB, 0x56, 0x5B, 0x17, 0x1B, 0x1A, 0xC3, 0x00, 0x97, 0x69, 0x9B, 0x5D, - 0xBD, 0x4D, 0x22, 0x77, 0x36, 0x65, 0xD7, 0x04, 0x8F, 0x5B, 0x76, 0xB2, - 0x6B, 0x23, 0x52, 0xA2, 0x02, 0xC4, 0x98, 0x16, 0xE3, 0xF7, 0x2B, 0xFC, - 0x36, 0x94, 0x91, 0x0B, 0x0B, 0x82, 0x7F, 0xC6, 0x70, 0x8C, 0x80, 0x36, - 0x48, 0x4F, 0x8C, 0x15, 0xB9, 0x06, 0x4C, 0x0B, 0x79, 0xA0, 0x37, 0x7D, - 0x18, 0xBB, 0x83, 0x8C, 0xA6, 0xF0, 0x02, 0x7D, 0xAE, 0xD1, 0x8D, 0xF7, - 0x11, 0x14, 0x69, 0x2D, 0xEE, 0x85, 0x47, 0x52, 0x44, 0x95, 0xD8, 0x8B, - 0x91, 0x04, 0x1A, 0x0D, 0x0A, 0xE9, 0x61, 0x35, 0x14, 0xB7, 0x3D, 0x77, - 0xD3, 0x7B, 0x97, 0xE2, 0x54, 0x37, 0xCD, 0x77, 0x49, 0x52, 0x2B, 0xF5, - 0x0A, 0xA2, 0xCD, 0x9A, 0x51, 0x17, 0x7F, 0xD2, 0x9D, 0x65, 0x0F, 0x0F, - 0x54, 0xEC, 0x00, 0x71, 0x89, 0x5B, 0xAC, 0x7C, 0x59, 0x55, 0xA3, 0xEA, - 0x27, 0xF1, 0x47, 0x79, 0xF5, 0xDD, 0x0F, 0xD9, 0x14, 0xDB, 0x00, 0xE1, - 0xA2, 0x4D, 0x92, 0xDA, 0x0B, 0xEF, 0x41, 0x29, 0x1E, 0xFB, 0x37, 0xAC, - 0x08, 0x5D, 0xB7, 0x75, 0x7B, 0x63, 0xC9, 0x47, 0x0B, 0x13, 0x66, 0x39, - 0xA1, 0x58, 0x82, 0xA3, 0x8D, 0x8B, 0xAF, 0xF9, 0x21, 0x84, 0xE1, 0xBD, - 0x49, 0xD4, 0xF4, 0x43, 0x7F, 0x9A, 0xCF, 0x59, 0xF2, 0xA5, 0x2C, 0x4D, - 0x85, 0xB5, 0xFD, 0x95, 0xE8, 0x45, 0xD2, 0xE8, 0x8A, 0xE4, 0xA9, 0x41, - 0x6B, 0x99, 0xBE, 0x0D, 0xF1, 0xB2, 0x57, 0x61, 0x7B, 0x6D, 0x09, 0x53, - 0x26, 0xCC, 0x28, 0x2C, 0x82, 0x08, 0xFB, 0xDC, 0xA9, 0x8A, 0xEC, 0x76, - 0xE3, 0x4D, 0xDE, 0xAC, 0x3E, 0x54, 0xAC, 0xC7, 0x50, 0x92, 0x8A, 0x19, - 0x3A, 0xF3, 0xFA, 0xF0, 0xC1, 0x7E, 0xEE, 0x69, 0x0E, 0xB5, 0x35, 0x9D, - 0x93, 0x4B, 0xAE, 0xA9, 0x97, 0x09, 0x34, 0x9B, 0x8E, 0x3C, 0xB4, 0x2A, - 0x1D, 0x59, 0xF9, 0x1C, 0x82, 0x25, 0x14, 0xCB, 0xC4, 0x89, 0xA5, 0xD5, - 0x62, 0xD9, 0xC4, 0xD5, 0xFF, 0xF5, 0xFF, 0x9A, 0xA8, 0x05, 0x95, 0xE1, - 0xAC, 0xAF, 0x61, 0x1B, 0x57, 0x77, 0xB0, 0x2C, 0x68, 0xE6, 0x3F, 0x1B, - 0x63, 0xFF, 0xC3, 0x33, 0x04, 0x8A, 0x0B, 0x54, 0x7D, 0x36, 0xAE, 0xAE, - 0x3F, 0xD3, 0xA6, 0x83, 0x65, 0xA4, 0xFE, 0x3C, 0x29, 0xDB, 0x81, 0x99, - 0xF9, 0x7A, 0x9B, 0xBB, 0xA7, 0x86, 0x6B, 0xDF, 0x67, 0x08, 0x23, 0x88, - 0x62, 0xE3, 0x08, 0x5C, 0x23, 0x73, 0x0C, 0x01, 0x96, 0xB0, 0x99, 0xC0, - 0x8D, 0xD5, 0xDB, 0xCE, 0x4C, 0x1F, 0xE4, 0xFD, 0x19, 0x2E, 0xD7, 0x20, - 0x81, 0x4E, 0x22, 0x4E, 0xAD, 0x02, 0x86, 0x1C, 0xEF, 0x2C, 0xEC, 0xCF, - 0xD0, 0x7E, 0xFB, 0x02, 0xE1, 0xE1, 0xFD, 0xE5, 0xB9, 0xBC, 0xE5, 0x12, - 0xA3, 0xCA, 0xE8, 0x88, 0x45, 0x03, 0x15, 0x0E, 0xA0, 0xC2, 0x1A, 0xB7, - 0x13, 0xB3, 0x52, 0x3C, 0x87, 0x18, 0x95, 0x3F, 0x56, 0x9C, 0x31, 0x52, - 0x2A, 0x5D, 0x57, 0xD3, 0xA1, 0x41, 0x2B, 0x82, 0x11, 0x23, 0xC2, 0x4D, - 0xE8, 0xE5, 0xC3, 0xBA, 0x59, 0x6B, 0x32, 0xBE, 0x22, 0x37, 0xB8, 0xC9, - 0x11, 0x88, 0x5C, 0x7E, 0x94, 0x5F, 0xDA, 0xB5, 0xC5, 0xAB, 0xA8, 0xD7, - 0x98, 0x2E, 0x4A, 0xBC, 0x5B, 0xD0, 0x7D, 0x3E, 0xA3, 0x43, 0xE8, 0xAB, - 0x9F, 0xA7, 0x44, 0x02, 0x07, 0xE9, 0x78, 0x50, 0xB4, 0x0A, 0xE9, 0x5D, - 0xDB, 0x23, 0x1E, 0x1D, 0x0A, 0xCB, 0x95, 0xE2, 0xDB, 0xCC, 0x42, 0x40, - 0x52, 0x6C, 0x5C, 0xF6, 0xBD, 0x80, 0x51, 0x4C, 0x56, 0x54, 0xB6, 0xC9, - 0xB2, 0x9F, 0x70, 0x66, 0xE6, 0x48, 0xD5, 0xC3, 0x7D, 0x94, 0x73, 0xAA, - 0x50, 0x10, 0x3D, 0x53, 0x04, 0x85, 0xC1, 0x4E, 0x77, 0x3A, 0x90, 0x3B, - 0xBA, 0x9F, 0x37, 0x80, 0xDA, 0xF2, 0x0B, 0xB1, 0xBC, 0x30, 0x94, 0xC6, - 0xB7, 0x39, 0x8D, 0xDD, 0x32, 0xA2, 0x71, 0x83, 0x74, 0xE8, 0x1F, 0xB6, - 0x92, 0xD5, 0xBE, 0xE6, 0x4B, 0x9F, 0xC5, 0x40, 0x5A, 0x23, 0xDB, 0x3C, - 0xB0, 0xAF, 0x14, 0x47, 0x9F, 0x66, 0x53, 0x0D, 0x3E, 0x43, 0x5D, 0xF3, - 0xE6, 0x18, 0x03, 0x47, 0xE3, 0x1A, 0xF5, 0x96, 0x53, 0xCA, 0xFE, 0x1B, - 0x07, 0x88, 0xBD, 0x6D, 0xE4, 0xF1, 0x86, 0x43, 0xEE, 0x09, 0x6E, 0x3A, - 0x81, 0xB7, 0x6B, 0x56, 0x6B, 0x04, 0x25, 0x57, 0x79, 0x5E, 0xD3, 0xAB, - 0xA1, 0xBB, 0x60, 0xB8, 0x4A, 0xDB, 0x09, 0xFA, 0x3F, 0x1A, 0x3F, 0x05, - 0x1A, 0xDA, 0xFA, 0x5E, 0xB8, 0x55, 0xDB, 0xDC, 0xD7, 0x0A, 0x10, 0x89, - 0xAF, 0x70, 0xA3, 0x70, 0xC6, 0xDA, 0xB6, 0x8C, 0x04, 0x27, 0xD8, 0xEF, - 0x44, 0x55, 0x8F, 0x07, 0xAF, 0xD5, 0x22, 0xDA, 0x3D, 0x67, 0x9C, 0xC8, - 0xE8, 0x2D, 0xE1, 0xF7, 0x2D, 0xFE, 0xFE, 0xA9, 0x27, 0x43, 0xAA, 0xB8, - 0x81, 0x78, 0xBC, 0x7F, 0x77, 0xBC, 0xC8, 0x83, 0x0D, 0xF8, 0x8D, 0x81, - 0xD8, 0xD4, 0x1E, 0xB9, 0x5C, 0x91, 0x19, 0x41, 0x13, 0xA5, 0x44, 0xC8, - 0x60, 0x1F, 0x08, 0xDF, 0x5E, 0xFA, 0xB1, 0xEA, 0x46, 0x01, 0x1E, 0xE2, - 0x6D, 0x63, 0xF8, 0x7E, 0xD6, 0xBB, 0x17, 0xC9, 0x80, 0x76, 0x40, 0x87, - 0xCF, 0x1A, 0x69, 0x53, 0x40, 0xA4, 0x44, 0xA1, 0x56, 0xD1, 0x28, 0x5F, - 0x60, 0x12, 0x7A, 0xBD, 0x02, 0xE3, 0xE1, 0xFF, 0xA4, 0xCB, 0xA0, 0x1E, - 0xDC, 0x5C, 0x6C, 0xDB, 0xF7, 0x05, 0x55, 0xC0, 0xE5, 0xAB, 0x57, 0xF8, - 0xB4, 0xFF, 0x20, 0xD9, 0x3D, 0xEB, 0x02, 0x1C, 0x67, 0x31, 0xC7, 0xB4, - 0x2D, 0x5C, 0x4A, 0x9F, 0xF1, 0x18, 0x97, 0x27, 0x5B, 0x1A, 0x72, 0xDD, - 0x6A, 0x8E, 0x29, 0xBB, 0x26, 0xE8, 0x3E, 0xCB, 0xF6, 0x48, 0x19, 0xC1, - 0xD2, 0x18, 0x28, 0x92, 0xCA, 0x30, 0xE6, 0x59, 0xBB, 0x34, 0xE4, 0x4C, - 0x3B, 0xD8, 0x7D, 0x06, 0xA0, 0xD8, 0x85, 0xD6, 0x06, 0x1F, 0xE9, 0x04, - 0x27, 0x78, 0x8F, 0xCA, 0xFC, 0x56, 0x68, 0xE4, 0xA5, 0x25, 0xE0, 0x4C, - 0xA0, 0xBC, 0x36, 0xED, 0xBF, 0xAD, 0xC3, 0xA0, 0x2E, 0x83, 0xB3, 0x79, - 0x80, 0x4F, 0xC2, 0x80, 0x93, 0xC7, 0xC4, 0x8C, 0xFE, 0x64, 0xEC, 0xFE, - 0x24, 0xF1, 0x5C, 0xC5, 0x51, 0x51, 0x13, 0xC0, 0x5E, 0x61, 0x61, 0x5D, - 0x5C, 0xAB, 0x50, 0x72, 0x79, 0x91, 0xA3, 0xB6, 0x17, 0x8D, 0x2F, 0xB5, - 0xA7, 0x3B, 0x19, 0x8A, 0x5E, 0x14, 0x13, 0xE4, 0xDC, 0x8E, 0x92, 0xE1, - 0x51, 0xFF, 0x98, 0xC5, 0xAC, 0xA2, 0x5F, 0xC0, 0xA5, 0x46, 0x77, 0x64, - 0x9F, 0xD8, 0x82, 0x0D, 0x54, 0x3A, 0xD7, 0x77, 0xC9, 0xBE, 0x0E, 0xF6, - 0x05, 0xF0, 0x17, 0xF1, 0x1E, 0xBF, 0x00, 0x57, 0xAE, 0xAA, 0xE8, 0xB3, - 0xEE, 0xF8, 0x2B, 0x4A, 0x02, 0x79, 0xC0, 0x3C, 0xF8, 0x7A, 0x56, 0xA8, - 0x69, 0xFF, 0x64, 0x7C, 0x02, 0x76, 0x26, 0x93, 0x95, 0x02, 0xD9, 0x1E, - 0xA6, 0x6A, 0x69, 0x3C, 0x00, 0x78, 0x8D, 0x71, 0x7C, 0x83, 0xD0, 0x38, - 0xD7, 0x65, 0x94, 0xBD, 0xD3, 0x7B, 0xF0, 0xC3, 0x26, 0x96, 0x27, 0x23, - 0xCA, 0xC0, 0x33, 0x74, 0xE1, 0x6D, 0x3E, 0x61, 0xF8, 0xF8, 0x49, 0x0B, - 0x79, 0x90, 0x90, 0xCA, 0xD4, 0x5B, 0x7D, 0x9B, 0x75, 0xF9, 0x08, 0x36, - 0x8B, 0x2E, 0xA5, 0x50, 0xB8, 0x7E, 0x3A, 0xED, 0x09, 0xED, 0x0C, 0x1C, - 0xB8, 0xDD, 0x5E, 0x13, 0x0A, 0x0B, 0x5C, 0xFB, 0x75, 0x41, 0x98, 0x2B, - 0xC9, 0xAB, 0xC9, 0x14, 0xDA, 0xFE, 0x34, 0x72, 0xB9, 0x7C, 0x86, 0x89, - 0x0E, 0x2E, 0x58, 0xC3, 0xC1, 0xD5, 0x2B, 0x66, 0x26, 0xD2, 0xBF, 0xBF, - 0x96, 0x33, 0x30, 0xCE, 0x5D, 0x87, 0x02, 0xE2, 0x20, 0x71, 0xEC, 0x24, - 0xAD, 0x40, 0xFE, 0xEF, 0x52, 0xD1, 0x84, 0x72, 0xCD, 0xCD, 0x3C, 0xDB, - 0xA7, 0x94, 0x0F, 0xAD, 0x4C, 0x67, 0x3F, 0x13, 0x16, 0x4B, 0x6B, 0x26, - 0x92, 0x3F, 0xB2, 0xAE, 0xA4, 0x5F, 0xBB, 0x65, 0x0B, 0x13, 0xE2, 0xB9, - 0x87, 0xA7, 0xB2, 0x14, 0xC0, 0x2A, 0x66, 0x5B, 0x99, 0x6C, 0xC6, 0x98, - 0xC2, 0xB6, 0x1B, 0x05, 0x14, 0xD6, 0xC9, 0x5B, 0x33, 0xE1, 0x14, 0x35, - 0x82, 0xF9, 0x50, 0xF6, 0xFD, 0xA0, 0x15, 0x6D, 0xB1, 0x59, 0x4A, 0x51, - 0x9D, 0x81, 0xD4, 0x1C, 0xE2, 0x31, 0xDD, 0xD0, 0xFF, 0xC8, 0x9A, 0x7B, - 0x9F, 0xED, 0xD4, 0x33, 0xDF, 0xBA, 0x58, 0x9E, 0x36, 0xC1, 0x69, 0xA2, - 0xE2, 0x93, 0xC7, 0x21, 0x8D, 0x07, 0xFD, 0xA2, 0x37, 0xA9, 0xDC, 0x28, - 0x7F, 0x16, 0xA1, 0x0E, 0x00, 0x5E, 0x0D, 0x01, 0xCB, 0x36, 0x97, 0xD5, - 0xC1, 0xF2, 0x93, 0xC7, 0x8A, 0xAE, 0xA7, 0xE6, 0xBE, 0x0B, 0xA8, 0x3E, - 0xA2, 0x26, 0xDF, 0x62, 0x13, 0xEF, 0xB8, 0x9A, 0xDA, 0xD4, 0x4D, 0xD0, - 0x78, 0x02, 0x54, 0x78, 0xEE, 0x5A, 0x6F, 0xAB, 0xD2, 0x6D, 0x94, 0xBC, - 0xE9, 0xD3, 0x71, 0x3B, 0x59, 0x73, 0xBE, 0x32, 0x7E, 0x7C, 0x69, 0x5C, - 0xFC, 0xA3, 0x86, 0x86, 0x59, 0x83, 0x34, 0xD8, 0xC9, 0x66, 0x8C, 0xEB, - 0x56, 0xE0, 0xD0, 0xC2, 0xD1, 0x08, 0x35, 0xAB, 0x6F, 0x04, 0xAA, 0xB4, - 0x5C, 0x4D, 0x41, 0x71, 0x0A, 0xB8, 0x3E, 0x8C, 0xAF, 0x73, 0xF0, 0xF7, - 0xD2, 0x28, 0x2A, 0x20, 0xD6, 0xC6, 0x21, 0x2E, 0xB8, 0xF3, 0xDE, 0x84, - 0xFD, 0x1C, 0x10, 0x36, 0x3A, 0x3B, 0x27, 0x97, 0x93, 0xBB, 0x0F, 0xBE, - 0x4E, 0xD4, 0x44, 0xA1, 0x3F, 0x53, 0x30, 0x68, 0x58, 0xA5, 0xF9, 0x27, - 0xF5, 0xFF, 0x3F, 0xC1, 0x9D, 0x89, 0x57, 0xE8, 0xF9, 0x3E, 0x66, 0x82, - 0x57, 0x7B, 0x00, 0xD6, 0x46, 0x6E, 0x42, 0x98, 0x6D, 0xCB, 0x99, 0x71, - 0x74, 0xB9, 0x2A, 0x65, 0x54, 0xCE, 0xDD, 0x10, 0xD3, 0xBB, 0xA6, 0x4D, - 0xCA, 0x3B, 0x4E, 0x4D, 0x5C, 0xF8, 0x80, 0x45, 0xED, 0x0D, 0xBB, 0x1F, - 0xC8, 0xDD, 0x69, 0x33, 0x13, 0x6D, 0x47, 0x3F, 0x29, 0x51, 0x1C, 0xF9, - 0xD9, 0x95, 0x64, 0x29, 0x5C, 0xEC, 0x7A, 0x8B, 0x14, 0x07, 0xA0, 0x43, - 0x1E, 0x5B, 0x7A, 0x5E, 0xDA, 0x7B, 0xA7, 0xC9, 0x7B, 0xDC, 0x72, 0xF5, - 0x90, 0xF2, 0x7D, 0xF9, 0x59, 0xE2, 0xE3, 0x74, 0xEE, 0x8B, 0xBC, 0x87, - 0x15, 0x24, 0x6D, 0x5C, 0x39, 0xA6, 0xE2, 0x1E, 0xA9, 0x4D, 0xB7, 0x39, - 0x39, 0x75, 0x50, 0xF9, 0x05, 0x88, 0xD2, 0xB5, 0x7C, 0xDB, 0x9A, 0x4D, - 0x75, 0x52, 0xAB, 0x45, 0x2F, 0x0B, 0x77, 0x11, 0xEF, 0xE6, 0x22, 0x86, - 0xA9, 0xB7, 0x14, 0x08, 0xA9, 0xB2, 0x52, 0x54, 0x2F, 0x01, 0x32, 0x89, - 0x3C, 0xBE, 0xC2, 0xF6, 0x7D, 0x34, 0xBE, 0xD1, 0xDB, 0xE3, 0x74, 0x6F, - 0x9B, 0x59, 0xF9, 0x86, 0x0F, 0xE1, 0xA8, 0x7F, 0x64, 0x2D, 0xE0, 0x73, - 0x9A, 0xCF, 0xB3, 0xF7, 0x7C, 0x7D, 0xE7, 0xF4, 0xFB, 0x70, 0xF4, 0xFF, - 0x82, 0x13, 0x31, 0x47, 0x66, 0xAC, 0x93, 0x3C, 0x5E, 0x59, 0x1B, 0xEE, - 0xEE, 0x63, 0x39, 0xF6, 0xED, 0x97, 0xAC, 0x17, 0x63, 0x90, 0xF2, 0x99, - 0xCB, 0xC1, 0x8C, 0x37, 0x42, 0xE1, 0x58, 0xF1, 0x91, 0xCA, 0x9E, 0x43, - 0x01, 0x17, 0xA4, 0xD5, 0xDB, 0x48, 0x26, 0x2B, 0xB9, 0x91, 0xE0, 0x42, - 0xC0, 0xB2, 0x9C, 0x55, 0xD6, 0x0B, 0xF2, 0xC4, 0x03, 0x3B, 0x8B, 0xD2, - 0x42, 0xFB, 0xDD, 0xDD, 0xB8, 0x22, 0x01, 0x10, 0xC4, 0xE9, 0xA8, 0x88, - 0xA4, 0x98, 0x5A, 0xBF, 0x20, 0xEB, 0x6B, 0x0D, 0x6C, 0xB5, 0x2C, 0x82, - 0xA8, 0xC5, 0xE4, 0xC2, 0x38, 0x77, 0x5E, 0x43, 0x73, 0x75, 0x03, 0x6D, - 0xDC, 0xD3, 0xE4, 0x01, 0xFD, 0x5A, 0x25, 0xD7, 0xF2, 0x7F, 0xC7, 0xF7, - 0x53, 0x94, 0x32, 0x11, 0xA1, 0x70, 0x46, 0x61, 0x33, 0x39, 0x73, 0xFB, - 0xB9, 0x93, 0xD1, 0x59, 0x92, 0xE8, 0xCB, 0x4A, 0x17, 0xB9, 0xB8, 0x75, - 0xA8, 0xCC, 0x14, 0xD9, 0xD6, 0x4D, 0xF7, 0x71, 0xB6, 0x3D, 0xDC, 0x56, - 0x1E, 0x5D, 0x53, 0x83, 0xEE, 0xEA, 0x5C, 0xCE, 0xA0, 0xDC, 0x73, 0x4D, - 0xE5, 0x6D, 0x1D, 0x8C, 0x6B, 0xE1, 0xD9, 0x27, 0xAE, 0x70, 0x61, 0xEE, - 0x8C, 0x3B, 0x83, 0x6A, 0x94, 0x70, 0x28, 0xB1, 0x83, 0x03, 0x6E, 0x0A, - 0xE9, 0xA7, 0x15, 0x42, 0x6F, 0x11, 0x95, 0x1D, 0x05, 0x63, 0x20, 0xA8, - 0xFA, 0x9A, 0x4F, 0x9B, 0xCD, 0xAF, 0xDA, 0xA2, 0x76, 0x12, 0x41, 0xB1, - 0x38, 0xCC, 0x43, 0xFB, 0x88, 0xB7, 0xB4, 0xAB, 0xC0, 0x60, 0x13, 0xC3, - 0x8D, 0x98, 0x67, 0x51, 0x35, 0xCE, 0x91, 0x8D, 0xF6, 0x06, 0xA1, 0xE5, - 0xB3, 0x36, 0x1C, 0xE2, 0xEA, 0x58, 0x75, 0x7A, 0xD1, 0x5A, 0xF2, 0xE6, - 0x97, 0x17, 0x82, 0x07, 0x8D, 0xBD, 0x73, 0xF0, 0x2B, 0x23, 0x37, 0xDA, - 0xF7, 0xE0, 0xCE, 0xF0, 0xFB, 0x52, 0xA5, 0x4E, 0x62, 0xF7, 0xDF, 0xC6, - 0x07, 0x56, 0xF0, 0x4B, 0x75, 0xD2, 0x05, 0xC2, 0xD8, 0xE2, 0x60, 0xDE, - 0x02, 0x21, 0x65, 0x68, 0x38, 0x5E, 0xA4, 0x4A, 0x91, 0x51, 0x12, 0x71, - 0xA4, 0x32, 0x52, 0xFD, 0x34, 0x5C, 0xC4, 0x0D, 0x38, 0x66, 0x22, 0xC5, - 0xD5, 0x28, 0xD2, 0xB2, 0x4A, 0x76, 0x9A, 0x04, 0xAD, 0x90, 0x34, 0xCF, - 0x44, 0x56, 0xF0, 0x10, 0x04, 0x16, 0x25, 0x3C, 0x05, 0x6F, 0x3D, 0xBD, - 0xDC, 0x56, 0x15, 0xE8, 0x51, 0xC4, 0xB3, 0x7E, 0xB6, 0xBC, 0x00, 0x20, - 0xEA, 0x21, 0x9D, 0x9B, 0x8F, 0xBB, 0x76, 0x70, 0x16, 0x45, 0x23, 0xDE, - 0xC3, 0xA5, 0xB7, 0x18, 0x2E, 0x93, 0x5B, 0x65, 0x53, 0x35, 0xDC, 0xED, - 0x55, 0x01, 0x89, 0xA6, 0x2A, 0x26, 0xDE, 0x31, 0x68, 0x6D, 0x65, 0xA3, - 0x40, 0xB0, 0xC9, 0xC9, 0x83, 0xEF, 0xB5, 0x95, 0x98, 0xC5, 0xD6, 0x35, - 0xE7, 0x25, 0x79, 0x5E, 0xFE, 0x5F, 0x5F, 0x32, 0x5F, 0xF8, 0x19, 0x41, - 0xB8, 0x97, 0x73, 0xEE, 0xAC, 0x6A, 0x8F, 0x7C, 0x48, 0xEC, 0x02, 0x48, - 0x17, 0x0C, 0x60, 0x87, 0x9A, 0x4E, 0xC5, 0xAE, 0x3C, 0xA5, 0xBE, 0x18, - 0x34, 0xC6, 0xDF, 0x79, 0x1B, 0x3D, 0x4E, 0xEC, 0x98, 0xE5, 0x59, 0x1B, - 0xAC, 0xBF, 0xC3, 0x4A, 0xF4, 0x84, 0x97, 0x21, 0xCA, 0xA2, 0xB3, 0xF3, - 0xE4, 0x2B, 0x78, 0xB9, 0x51, 0x43, 0x2A, 0x1C, 0x47, 0xC1, 0x54, 0x3B, - 0x0A, 0x75, 0x16, 0x58, 0x6E, 0x7B, 0x73, 0xBF, 0xAD, 0xEA, 0xD6, 0x86, - 0xF9, 0x1B, 0x06, 0x5B, 0x1C, 0x34, 0xC0, 0xEE, 0x41, 0x05, 0xB1, 0x8D, - 0xE6, 0x2B, 0x61, 0xB1, 0x24, 0x17, 0x89, 0xB1, 0x43, 0xCF, 0xAE, 0xC0, - 0x21, 0x76, 0x23, 0xC7, 0xA5, 0xE7, 0xDE, 0x44, 0x9F, 0x12, 0x8B, 0x6C, - 0xBC, 0x19, 0x82, 0xCA, 0x23, 0x39, 0x9E, 0xEC, 0x4E, 0xCE, 0x0F, 0x01, - 0x51, 0x0D, 0xFE, 0x62, 0x9E, 0x80, 0xF4, 0x69, 0xB3, 0x7A, 0xBC, 0x63, - 0x96, 0x60, 0xD3, 0xEA, 0xFB, 0xC4, 0xEE, 0x1B, 0x34, 0x86, 0xA0, 0x7C, - 0x2C, 0xAE, 0x6D, 0x71, 0x30, 0x59, 0x22, 0x2C, 0x24, 0xE3, 0x7B, 0x46, - 0x7D, 0x18, 0xE1, 0xBA, 0x5D, 0xC0, 0x15, 0x67, 0x0A, 0x04, 0x62, 0xC1, - 0x8C, 0x5C, 0xC5, 0x2E, 0x19, 0xB3, 0x8A, 0x41, 0xBE, 0x2A, 0x76, 0x22, - 0x8C, 0x76, 0xA2, 0x45, 0xDB, 0xB7, 0x7E, 0x1D, 0xB0, 0x76, 0x37, 0x59, - 0xDC, 0x22, 0x47, 0x7D, 0xAB, 0x34, 0x4D, 0x5F, 0x41, 0xCE, 0x89, 0x5D, - 0x84, 0xF1, 0xBE, 0x90, 0x25, 0xD3, 0xAC, 0xEE, 0x9F, 0x2A, 0x1E, 0x5C, - 0xE2, 0x19, 0x76, 0x6F, 0xA2, 0x5C, 0x28, 0xAC, 0x99, 0xBD, 0x59, 0x86, - 0x08, 0x36, 0x0C, 0xB8, 0x3E, 0xD1, 0x98, 0x5D, 0x62, 0x94, 0x8F, 0xB1, - 0xA3, 0xE4, 0xFD, 0x56, 0x09, 0x95, 0xCB, 0xFD, 0x79, 0x7C, 0x6A, 0x78, - 0x81, 0x19, 0x3C, 0x34, 0x8A, 0x3B, 0x47, 0x10, 0x48, 0xBC, 0x22, 0x3D, - 0xEB, 0x6A, 0xE7, 0x2E, 0xB0, 0xE1, 0x42, 0x55, 0xE4, 0x2D, 0x98, 0xD1, - 0x7B, 0x9C, 0xD2, 0x5E, 0x6F, 0x52, 0x33, 0x1E, 0xBB, 0x62, 0xBA, 0xB8, - 0xFB, 0x2B, 0x52, 0xE1, 0x3D, 0xA0, 0xB4, 0xDD, 0x05, 0xAC, 0xA6, 0xDC, - 0x3A, 0x07, 0x0F, 0xB0, 0x78, 0x5E, 0x93, 0xDE, 0xBD, 0x2A, 0x34, 0x92, - 0xE0, 0xF0, 0xBC, 0x32, 0xB1, 0xEC, 0xAE, 0xD6, 0x10, 0x37, 0x48, 0x89, - 0x50, 0x74, 0x24, 0xEF, 0xC2, 0x5A, 0xFA, 0xF1, 0xCA, 0x5D, 0x12, 0xF9, - 0x00, 0xCE, 0x95, 0xA5, 0x9A, 0xC1, 0x38, 0x42, 0x27, 0xE6, 0xD3, 0xD6, - 0xE1, 0x20, 0xDE, 0x6E, 0x96, 0x1D, 0x1A, 0x02, 0xC3, 0x0E, 0x10, 0x3E, - 0x55, 0x27, 0x78, 0xFA, 0xA1, 0x2B, 0x25, 0x6D, 0x30, 0x97, 0xA5, 0xA6, - 0xA0, 0x9D, 0xDE, 0x12, 0x2B, 0xDA, 0x82, 0xF9, 0xE9, 0xF5, 0x4F, 0xB9, - 0x30, 0x44, 0x57, 0x92, 0xC7, 0x64, 0xFE, 0x77, 0xF7, 0x0A, 0x4C, 0xC0, - 0x96, 0xDD, 0x79, 0xFD, 0xCC, 0xE7, 0xFE, 0x6A, 0x8F, 0x69, 0x34, 0x37, - 0xB4, 0x41, 0xAA, 0x72, 0x74, 0xC6, 0xDA, 0xCD, 0x7E, 0x72, 0x14, 0x92, - 0x2D, 0xA1, 0x77, 0xAD, 0x1C, 0xDF, 0x99, 0x79, 0x6C, 0xEE, 0xDA, 0x0F, - 0x4C, 0x45, 0x93, 0x52, 0xC9, 0x83, 0x07, 0x57, 0x1A, 0xE2, 0xE0, 0xE6, - 0x3F, 0x91, 0x7F, 0x72, 0x0E, 0x2F, 0xC9, 0x21, 0x09, 0xB6, 0x66, 0xEA, - 0xB2, 0x8D, 0xFB, 0x3E, 0xD2, 0x7C, 0xA4, 0xB5, 0xE9, 0xFF, 0x35, 0xFB, - 0x1A, 0x92, 0x81, 0xEA, 0x1D, 0x08, 0x01, 0x6F, 0x7E, 0x02, 0x55, 0x5E, - 0x11, 0x51, 0xD1, 0x37, 0x35, 0xD7, 0x96, 0xAD, 0xAC, 0xE4, 0x73, 0x3B, - 0x63, 0x1A, 0x57, 0xCB, 0xF8, 0xF7, 0x84, 0xC5, 0x10, 0x84, 0x1F, 0x30, - 0x4E, 0x8E, 0xDA, 0xA0, 0xBE, 0xD1, 0x38, 0xC5, 0x7B, 0x08, 0x3C, 0x9D, - 0xA3, 0x09, 0x9F, 0x64, 0xE4, 0x12, 0xBA, 0x54, 0x45, 0x2D, 0x32, 0x2A, - 0x14, 0xCC, 0x75, 0xF5, 0xE0, 0xEB, 0x05, 0x87, 0x9B, 0xE4, 0x83, 0x52, - 0x67, 0xC4, 0xB7, 0x9E, 0x97, 0x38, 0xC7, 0x35, 0x7F, 0xF6, 0x34, 0x08, - 0x3F, 0x12, 0x65, 0x88, 0x57, 0x8E, 0x60, 0x76, 0xCB, 0x00, 0x4D, 0xF4, - 0x88, 0x12, 0xF6, 0x3C, 0x2E, 0xA1, 0x8F, 0xD8, 0xA8, 0x29, 0x3B, 0xB0, - 0xE9, 0x5C, 0x32, 0x36, 0x9C, 0xAF, 0x90, 0x9F, 0x72, 0xA2, 0x96, 0x65, - 0x17, 0x61, 0x06, 0x63, 0x2B, 0x9E, 0x57, 0xA6, 0xA7, 0x1E, 0xB7, 0xD9, - 0xEB, 0xC2, 0x2A, 0x64, 0xA3, 0x0B, 0x2A, 0x9A, 0x9B, 0x87, 0x13, 0x25, - 0x2C, 0x7C, 0xED, 0x8F, 0x21, 0x04, 0x13, 0x4A, 0xF1, 0xB9, 0xD2, 0x0D, - 0xAF, 0x95, 0x85, 0x77, 0x0C, 0x94, 0x77, 0xAF, 0x03, 0xA6, 0xA7, 0x3B, - 0x06, 0xDF, 0x61, 0x08, 0x36, 0x01, 0x49, 0x6D, 0x7F, 0x34, 0x4F, 0x56, - 0x17, 0x50, 0xB5, 0xB4, 0xE7, 0xE7, 0xAE, 0xF5, 0x61, 0xB5, 0xEB, 0xFD, - 0x40, 0x15, 0x37, 0x9C, 0xF0, 0xA0, 0x47, 0x89, 0x45, 0x2B, 0x16, 0x49, - 0x98, 0xD0, 0xF7, 0x7F, 0x7A, 0xBC, 0x60, 0xA1, 0xBD, 0x7A, 0xB1, 0x75, - 0xBD, 0x55, 0xD6, 0x2D, 0x19, 0x5A, 0x51, 0x09, 0xA6, 0xA5, 0x19, 0x98, - 0xC2, 0xA3, 0xA0, 0x40, 0x4F, 0x1A, 0x23, 0x04, 0x55, 0x46, 0xA7, 0x1E, - 0xE8, 0x33, 0xE1, 0x90, 0x13, 0x74, 0x74, 0x15, 0xA1, 0xCE, 0x47, 0x9C, - 0x62, 0x7D, 0x46, 0x3E, 0xE6, 0x2A, 0x51, 0xC4, 0x12, 0xB3, 0x6B, 0x4A, - 0x1A, 0xBD, 0xE1, 0x10, 0x8D, 0x64, 0x8A, 0xA8, 0x1D, 0x5F, 0x2E, 0x2F, - 0x2F, 0x34, 0xD3, 0xEF, 0x48, 0x1C, 0x5E, 0xAE, 0xA1, 0x53, 0xDB, 0xD5, - 0x56, 0x8D, 0xD2, 0x10, 0xDB, 0x1B, 0x6A, 0x64, 0x86, 0x44, 0x27, 0xC5, - 0xD0, 0xE0, 0xD0, 0x94, 0x6F, 0xDC, 0x5A, 0x0D, 0x60, 0x93, 0xFA, 0x54, - 0x65, 0xE0, 0xA8, 0x14, 0xDB, 0xDF, 0x9F, 0x7B, 0xBB, 0xFA, 0xF7, 0xD5, - 0x49, 0x7E, 0xB1, 0x38, 0x2F, 0x49, 0x02, 0xF6, 0x15, 0xB7, 0x6F, 0x25, - 0xFA, 0xDB, 0xE4, 0x1A, 0xB9, 0xCF, 0x5F, 0xA1, 0x6C, 0x7D, 0x71, 0xED, - 0xCC, 0xAB, 0x76, 0x4E, 0xE2, 0xC8, 0x44, 0x1A, 0xF9, 0xAA, 0x63, 0x51, - 0xA0, 0x47, 0xE9, 0x62, 0xAD, 0x48, 0x25, 0x15, 0xBD, 0x6B, 0xA8, 0xF2, - 0x69, 0x10, 0x0A, 0xA9, 0x56, 0xCA, 0xCA, 0xF4, 0xCD, 0x7D, 0x55, 0x09, - 0xDB, 0x3C, 0x34, 0x9B, 0xED, 0x3A, 0x3A, 0xF9, 0xA4, 0xB2, 0xF4, 0xCE, - 0xD5, 0x46, 0x77, 0x34, 0xA3, 0x96, 0xA8, 0x0E, 0xA1, 0xB5, 0xD3, 0x69, - 0x68, 0xF5, 0xB3, 0x17, 0x99, 0x30, 0xBE, 0x03, 0xB0, 0x89, 0x1D, 0x75, - 0xA4, 0xF7, 0x79, 0xF6, 0x7D, 0xA0, 0x24, 0xCD, 0xE0, 0x0A, 0x92, 0x4D, - 0xE4, 0xF7, 0x28, 0xE7, 0x52, 0x0C, 0x28, 0x62, 0xBA, 0x24, 0xD6, 0xA4, - 0x02, 0xFF, 0xD1, 0x6B, 0xDE, 0x0C, 0xB9, 0xA1, 0xBC, 0xBD, 0x2C, 0x7D, - 0xF6, 0xFF, 0x2C, 0x8D, 0x83, 0x08, 0x62, 0xC5, 0x6B, 0x9F, 0x11, 0xA2, - 0x7D, 0xB7, 0x90, 0x38, 0x08, 0xB9, 0xDC, 0x46, 0xA3, 0xD1, 0xD1, 0xE5, - 0x36, 0xC3, 0xEE, 0x5F, 0x82, 0x63, 0x4E, 0x66, 0x30, 0x38, 0xC8, 0x40, - 0x2E, 0xB8, 0x82, 0xAE, 0x95, 0xCF, 0x45, 0x1A, 0xF9, 0x2A, 0x85, 0x9C, - 0x66, 0x96, 0x7D, 0x69, 0xC5, 0xE7, 0x13, 0xD6, 0x86, 0x39, 0x14, 0xE3, - 0x1B, 0xBF, 0x78, 0x5B, 0xFB, 0x6A, 0x88, 0x1A, 0xCA, 0x21, 0x6C, 0xE3, - 0x80, 0xCE, 0x61, 0x3F, 0x13, 0x7A, 0xFD, 0x16, 0x4F, 0x32, 0xE0, 0xB8, - 0x76, 0x6D, 0x1D, 0x46, 0xB9, 0xF4, 0xA1, 0x05, 0x53, 0x5E, 0x96, 0x42, - 0xF3, 0xF5, 0xA6, 0xAF, 0x87, 0x78, 0xCF, 0x3D, 0x84, 0xB1, 0xFC, 0x97, - 0x1F, 0x86, 0x79, 0x1E, 0xCE, 0xEF, 0x21, 0x13, 0x5F, 0xD3, 0x23, 0xD3, - 0x52, 0xE7, 0x31, 0x37, 0x40, 0x08, 0xB7, 0x6C, 0x50, 0xCA, 0x82, 0xB5, - 0x47, 0x04, 0x98, 0x5F, 0x28, 0xAA, 0x39, 0x76, 0xFA, 0x18, 0xAD, 0x08, - 0x57, 0x9F, 0xFE, 0x7B, 0x6F, 0x2B, 0x46, 0x83, 0x6C, 0xDE, 0x90, 0xCB, - 0x41, 0x40, 0x22, 0x24, 0x4B, 0x82, 0x23, 0x72, 0xC0, 0x28, 0x79, 0xAC, - 0xE8, 0xF5, 0x96, 0xC2, 0xC1, 0x76, 0x6C, 0x5B, 0xBA, 0xFB, 0x60, 0x12, - 0xA1, 0xF1, 0x59, 0xE9, 0x70, 0x97, 0x5C, 0xD3, 0x6D, 0x3C, 0xC2, 0x18, - 0xA4, 0x30, 0x37, 0xF0, 0xAC, 0x92, 0xB3, 0xC3, 0x1F, 0xAA, 0x73, 0x03, - 0x0A, 0x9F, 0x01, 0x5F, 0x4C, 0x68, 0x3A, 0xA5, 0xB0, 0xB9, 0xBB, 0x87, - 0xA4, 0x76, 0x9B, 0x36, 0xD0, 0x35, 0x68, 0x26, 0xEE, 0x76, 0x82, 0xDA, - 0x81, 0x16, 0xFB, 0x82, 0xD2, 0x9D, 0xCD, 0x4F, 0x3A, 0xAD, 0xA3, 0xC2, - 0xBD, 0x9E, 0x60, 0x39, 0x30, 0x1B, 0x9D, 0x4F, 0xAD, 0x0C, 0x88, 0x54, - 0x57, 0x64, 0xFD, 0xBB, 0x63, 0x37, 0x7A, 0xB0, 0x7E, 0x4C, 0x69, 0x4C, - 0x6D, 0x78, 0x84, 0x69, 0x59, 0xF2, 0xAF, 0xFD, 0x76, 0x67, 0x0D, 0x1A, - 0x40, 0xB4, 0x4A, 0xE7, 0xDB, 0x9D, 0xD7, 0xD8, 0x66, 0xC7, 0x8D, 0xAD, - 0x4C, 0xE2, 0x9D, 0x1A, 0x63, 0xA2, 0x56, 0xD9, 0x40, 0x6D, 0x7B, 0xE0, - 0x0F, 0x78, 0xAA, 0x88, 0xA7, 0xA8, 0x62, 0xE3, 0x7E, 0xE9, 0x8C, 0x65, - 0xB5, 0x56, 0x2A, 0x1E, 0x5C, 0xDF, 0xC4, 0x3C, 0xC3, 0x5D, 0x46, 0x00, - 0xF1, 0x8A, 0x0B, 0x7C, 0x58, 0x94, 0xA4, 0x5B, 0xAA, 0x3A, 0x72, 0x0D, - 0xE9, 0x59, 0x99, 0x87, 0x06, 0xE8, 0xC9, 0x4F, 0xC5, 0x54, 0x10, 0x00, - 0xAE, 0x45, 0xCF, 0xE7, 0x81, 0xE5, 0xC4, 0x85, 0x70, 0xD6, 0xD9, 0x60, - 0x9D, 0x19, 0x5F, 0xC9, 0xBE, 0x3D, 0xB7, 0x24, 0xB4, 0x7B, 0x08, 0xFB, - 0xA4, 0x9E, 0x36, 0x26, 0xA0, 0xF2, 0x86, 0xE9, 0x67, 0x10, 0xF6, 0x8E, - 0xE9, 0xEB, 0xA3, 0xB3, 0x75, 0x83, 0x38, 0xA7, 0x45, 0x81, 0xF0, 0xF3, - 0x62, 0x18, 0x02, 0xF1, 0x95, 0x8C, 0xEA, 0x39, 0xD2, 0xB7, 0x11, 0xC0, - 0x06, 0x11, 0x07, 0x42, 0x54, 0xE5, 0x2B, 0xC8, 0xD5, 0x8C, 0x08, 0x25, - 0xE1, 0xD0, 0x8D, 0x7E, 0x61, 0x28, 0x79, 0x6A, 0x2B, 0x33, 0xD9, 0xE9, - 0x6B, 0x04, 0x95, 0x1E, 0xE0, 0xA1, 0xA4, 0x32, 0x71, 0x0E, 0xCD, 0xCB, - 0x80, 0xB8, 0x38, 0x79, 0xF0, 0x9E, 0x58, 0x5E, 0xF6, 0x35, 0xCC, 0xC5, - 0xB9, 0xC7, 0x73, 0xCF, 0x13, 0xEA, 0x77, 0x18, 0xD4, 0x37, 0x46, 0x1B, - 0x66, 0xED, 0x68, 0xEA, 0x1B, 0x38, 0xCF, 0xAD, 0x64, 0x28, 0x1C, 0x04, - 0x81, 0x52, 0x03, 0x8F, 0xC7, 0x45, 0xAE, 0x52, 0xD4, 0x23, 0x27, 0xDB, - 0x2C, 0x98, 0xE8, 0x74, 0xE6, 0xA7, 0x1E, 0x6E, 0x31, 0x10, 0xF5, 0xBB, - 0x1A, 0xA0, 0x5F, 0x6C, 0xAE, 0x38, 0xD7, 0xC6, 0xA2, 0x77, 0x6A, 0x47, - 0x92, 0xC5, 0xC3, 0xE3, 0x12, 0xCE, 0x9A, 0xCB, 0x1F, 0x75, 0xED, 0x1C, - 0x16, 0x30, 0xB8, 0xCC, 0x4E, 0xB1, 0xA5, 0xCE, 0x85, 0xD3, 0x2E, 0xC1, - 0x13, 0x3D, 0x32, 0xBE, 0xBB, 0x22, 0x77, 0x9B, 0x13, 0x10, 0x2C, 0x53, - 0x96, 0x24, 0x02, 0xA1, 0x6B, 0xB1, 0xEF, 0xC8, 0xE9, 0xF0, 0x2A, 0x87, - 0xEF, 0xE3, 0xBF, 0xD8, 0xB3, 0x16, 0xC2, 0x6C, 0xFE, 0xC2, 0xAC, 0x91, - 0x28, 0x4F, 0x31, 0xA8, 0xAF, 0x51, 0x1C, 0xB7, 0x37, 0xA7, 0x6E, 0x77, - 0x37, 0x78, 0x2B, 0x74, 0x78, 0xEF, 0x09, 0x9B, 0x55, 0x30, 0x4E, 0x23, - 0xFE, 0xCE, 0x62, 0xCE, 0x92, 0x38, 0x49, 0x6F, 0x5D, 0xDD, 0xCD, 0x09, - 0x9E, 0xEB, 0xC5, 0xCC, 0x9B, 0xC2, 0xE4, 0xBF, 0x12, 0x47, 0xFA, 0xA5, - 0xB6, 0x89, 0x09, 0x25, 0xDA, 0x33, 0x3A, 0xFD, 0x77, 0xB2, 0x7A, 0xB3, - 0x77, 0xC1, 0x88, 0x88, 0x8E, 0xC5, 0x81, 0xA6, 0x5E, 0x69, 0xE1, 0xA4, - 0xB0, 0x4A, 0x99, 0x59, 0xA0, 0xC7, 0x11, 0x9E, 0xBC, 0x63, 0x62, 0x43, - 0xC0, 0x2C, 0x33, 0x63, 0x6B, 0x51, 0xCE, 0xDC, 0x15, 0x8C, 0x59, 0x46, - 0x6D, 0x91, 0x98, 0x1B, 0x59, 0xA5, 0x48, 0xF1, 0x04, 0x8E, 0x06, 0xA6, - 0x5D, 0x30, 0xB6, 0xAF, 0xBF, 0x84, 0x78, 0x06, 0x8B, 0x79, 0x69, 0xB5, - 0x19, 0x5A, 0x85, 0xD6, 0xF4, 0x6B, 0xD4, 0x0D, 0x80, 0xDB, 0xCF, 0xC6, - 0xCA, 0xE1, 0x48, 0x3C, 0x97, 0x19, 0x5E, 0x4B, 0xE6, 0x5C, 0x6D, 0xAF, - 0xA0, 0xBE, 0xF6, 0x50, 0x4C, 0xE2, 0x58, 0xDD, 0xE7, 0xCD, 0x28, 0x70, - 0x54, 0x3B, 0x50, 0x97, 0x20, 0xB1, 0x19, 0xF2, 0x09, 0x0B, 0xBB, 0xCF, - 0x35, 0xDA, 0x36, 0xAB, 0x12, 0xBA, 0xAF, 0xFF, 0xF4, 0x6C, 0x87, 0xA7, - 0xB9, 0x7C, 0x02, 0xB7, 0xC7, 0x16, 0x7E, 0x3E, 0xF1, 0x33, 0x9E, 0x60, - 0x9C, 0x3F, 0xCC, 0xAC, 0x01, 0x4C, 0x13, 0xF0, 0x43, 0xBF, 0x21, 0x60, - 0xE9, 0xBA, 0x34, 0x2B, 0x08, 0xD2, 0xFE, 0x0F, 0x73, 0x52, 0xAE, 0xA2, - 0x54, 0x51, 0x90, 0xD2, 0x9E, 0xE9, 0x62, 0xAC, 0x37, 0x39, 0x2A, 0xAD, - 0x0A, 0x1C, 0xFE, 0x09, 0x30, 0xDD, 0x9C, 0x2F, 0x52, 0xFD, 0x8F, 0x41, - 0xF9, 0xCE, 0xAE, 0xB8, 0x66, 0xB6, 0x44, 0x1A, 0x82, 0x53, 0x33, 0x48, - 0xA6, 0x8D, 0xEF, 0xE8, 0x80, 0xC3, 0x0E, 0xD7, 0x80, 0xC6, 0x13, 0x1F, - 0x4C, 0x99, 0x43, 0x56, 0x45, 0x35, 0x54, 0x33, 0x68, 0x1F, 0xEF, 0x7F, - 0xB2, 0xB1, 0xF5, 0x7E, 0x7E, 0x08, 0xDE, 0xD2, 0x5B, 0x52, 0x89, 0x20, - 0xDF, 0xD9, 0x5A, 0x64, 0x71, 0x37, 0x79, 0x98, 0x69, 0x10, 0xF6, 0xA2, - 0x5F, 0xBE, 0x71, 0x35, 0xE0, 0x88, 0x74, 0x7A, 0xB5, 0x81, 0x2E, 0x4E, - 0x71, 0x7F, 0x5A, 0x3A, 0x8A, 0xCE, 0xBE, 0xC5, 0x40, 0x8F, 0xC5, 0x2E, - 0xA5, 0x9A, 0x4D, 0x74, 0xE4, 0x73, 0xC7, 0x96, 0x97, 0x84, 0x7E, 0x90, - 0x44, 0x83, 0x24, 0xEE, 0x83, 0x42, 0xA3, 0xCC, 0x1C, 0x7A, 0x4D, 0x27, - 0x0B, 0x80, 0xD0, 0xA4, 0xAC, 0x9B, 0x1E, 0xCB, 0xFC, 0x7F, 0x12, 0x31, - 0x41, 0x3D, 0x06, 0x4A, 0xBC, 0xF6, 0x22, 0xF1, 0xC8, 0xF0, 0x9C, 0x1A, - 0x8D, 0x96, 0x5A, 0xA7, 0xB4, 0x6B, 0x45, 0xBC, 0x4D, 0x32, 0xC1, 0x9C, - 0xC6, 0xA0, 0xCE, 0xED, 0x7B, 0x97, 0x59, 0x7F, 0x42, 0x32, 0x22, 0xA3, - 0x18, 0xFD, 0x65, 0xBC, 0x2C, 0xC3, 0xEA, 0xE8, 0xBD, 0xC1, 0xFF, 0xE1, - 0x20, 0xAB, 0xC0, 0x6A, 0xDA, 0xF9, 0x3A, 0x85, 0x79, 0x7A, 0x10, 0xB9, - 0xA0, 0x7A, 0xAA, 0xAD, 0xF1, 0x8D, 0x67, 0x8F, 0x59, 0xE0, 0x10, 0x4A, - 0x62, 0xA7, 0xD1, 0x8D, 0xF9, 0x26, 0xBE, 0x00, 0x42, 0x81, 0xA0, 0x1F, - 0xFF, 0xCE, 0xAE, 0xAF, 0x1C, 0x56, 0x92, 0x48, 0x65, 0xE7, 0x2A, 0xC6, - 0xE2, 0x78, 0xDE, 0xA2, 0x87, 0x5C, 0x89, 0x3E, 0x38, 0xC4, 0x30, 0xB4, - 0x07, 0x75, 0x7A, 0x01, 0x76, 0xCD, 0x95, 0xD2, 0xA1, 0x4C, 0x37, 0xB5, - 0xA5, 0x2B, 0xE5, 0x09, 0x8B, 0x45, 0x5C, 0x77, 0x9F, 0xE8, 0xAB, 0xB9, - 0xD6, 0xB0, 0x91, 0x57, 0xA6, 0x9E, 0x5D, 0x01, 0xB5, 0xE2, 0xE5, 0x11, - 0xC5, 0x77, 0xC1, 0x11, 0x54, 0x97, 0x45, 0x4F, 0x8E, 0x75, 0xB4, 0xA3, - 0xD7, 0xF4, 0x0F, 0xCC, 0x69, 0xAA, 0xB2, 0xAC, 0xB4, 0x92, 0xD4, 0x66, - 0xB8, 0xA1, 0x91, 0xA2, 0x74, 0xEF, 0xBE, 0x1D, 0xDF, 0xBD, 0xF9, 0x26, - 0x34, 0x1D, 0x71, 0x7C, 0x54, 0x14, 0x42, 0x40, 0x94, 0x4B, 0xA2, 0xF2, - 0x1C, 0xD6, 0x86, 0x32, 0x22, 0x64, 0xE4, 0x13, 0x8D, 0x6A, 0xA2, 0x1C, - 0xB0, 0x3F, 0x78, 0xA9, 0x56, 0x61, 0xFB, 0x56, 0xEE, 0x3D, 0x26, 0x2A, - 0x1C, 0x7E, 0x4D, 0x22, 0xD4, 0xFA, 0xA6, 0xBA, 0x7E, 0x2D, 0x9B, 0x6C, - 0xF7, 0x64, 0x20, 0xCA, 0xD6, 0x89, 0x49, 0x92, 0xFF, 0x2A, 0xBB, 0xA8, - 0x8A, 0xE5, 0x90, 0xEA, 0x20, 0x07, 0xFF, 0xE7, 0xF5, 0xD6, 0x96, 0x77, - 0xE2, 0xEB, 0xC4, 0xD2, 0x51, 0x19, 0x74, 0x83, 0xE2, 0xA3, 0xC2, 0x77, - 0xF9, 0x2E, 0x73, 0x95, 0x86, 0x76, 0x82, 0x6F, 0xB6, 0x4A, 0x0B, 0x6A, - 0x95, 0xCA, 0xDD, 0x7F, 0x66, 0x17, 0x09, 0xE1, 0xD9, 0xD1, 0xA0, 0xE7, - 0x25, 0x64, 0xCB, 0xB6, 0x9A, 0x0F, 0x33, 0x0F, 0xFB, 0xB3, 0x52, 0x78, - 0x00, 0x4E, 0xFB, 0xFF, 0xC9, 0x55, 0x2A, 0x66, 0x8B, 0xC7, 0x9B, 0x4B, - 0x94, 0xFB, 0x5E, 0x77, 0x54, 0x08, 0x94, 0xC3, 0x7C, 0xFB, 0x63, 0xF0, - 0x7C, 0x7C, 0xD5, 0xC4, 0xE2, 0xAE, 0x9F, 0x8E, 0x7F, 0xA2, 0x43, 0x10, - 0x6E, 0x1C, 0x9C, 0xC7, 0x62, 0x1E, 0x58, 0x87, 0xFE, 0x80, 0x0F, 0x53, - 0x40, 0x1E, 0xC9, 0xA5, 0xE1, 0xCD, 0xFC, 0x65, 0x75, 0x5B, 0xC8, 0x4B, - 0x18, 0x0C, 0x71, 0x70, 0xF6, 0x0E, 0x70, 0xE6, 0x9C, 0xE0, 0xF3, 0xFE, - 0x2A, 0xA2, 0x58, 0x23, 0x80, 0x85, 0xAD, 0xA0, 0x65, 0xA2, 0x62, 0xB6, - 0xB5, 0x0A, 0x78, 0x3E, 0xF9, 0x46, 0x85, 0x22, 0xA5, 0xBD, 0x63, 0xB3, - 0x56, 0x75, 0x99, 0xD6, 0x87, 0xFB, 0x6A, 0xB6, 0xB1, 0x02, 0x3B, 0xB1, - 0x10, 0x32, 0x19, 0x71, 0x32, 0xD4, 0x12, 0xFB, 0x49, 0xBC, 0x51, 0x09, - 0xC7, 0x2F, 0xFF, 0xB8, 0xA2, 0xE3, 0x1D, 0xCA, 0x74, 0xC1, 0x41, 0xC3, - 0xEF, 0x3F, 0xDC, 0x4D, 0x40, 0xEA, 0xF7, 0xBB, 0x05, 0x91, 0x11, 0x78, - 0x99, 0xB4, 0xA4, 0xD9, 0x39, 0x17, 0x87, 0xDF, 0x25, 0xDB, 0xE0, 0x73, - 0xA6, 0xE9, 0x3D, 0x27, 0x44, 0xCD, 0x4F, 0xB1, 0x8E, 0x1A, 0x90, 0x94, - 0x07, 0xC9, 0x3E, 0x93, 0x46, 0xDB, 0x05, 0x06, 0xF8, 0x64, 0x5D, 0x78, - 0xBF, 0x7D, 0x73, 0x59, 0x69, 0x5C, 0x6C, 0x1A, 0xE1, 0x86, 0x9E, 0x69, - 0x3C, 0x3B, 0x51, 0x09, 0xE6, 0x43, 0xD3, 0x2B, 0xA8, 0x47, 0x37, 0xAE, - 0x9C, 0xBA, 0x6C, 0x3C, 0x2C, 0x46, 0x60, 0x24, 0x69, 0xE8, 0xCE, 0xF5, - 0x40, 0xCA, 0x72, 0x7E, 0x2E, 0xAA, 0x6F, 0x60, 0x7E, 0x79, 0x53, 0xFC, - 0x09, 0x30, 0x3E, 0x2D, 0x60, 0x21, 0xBA, 0x68, 0x54, 0x49, 0x91, 0x76, - 0x53, 0x60, 0x23, 0xE5, 0xC8, 0x9B, 0xA4, 0x4C, 0x64, 0xD5, 0x02, 0x46, - 0x95, 0xD9, 0x72, 0x3C, 0x30, 0xE8, 0xF1, 0x53, 0x53, 0xC7, 0x8E, 0x90, - 0xF4, 0x34, 0xF3, 0x0C, 0x3F, 0x72, 0xCA, 0x1D, 0x75, 0x72, 0xBE, 0x46, - 0x8A, 0xC0, 0xD3, 0x06, 0x93, 0x72, 0xB0, 0xBF, 0xD0, 0x77, 0x99, 0x06, - 0x7B, 0xDF, 0x6F, 0x10, 0xFB, 0xC6, 0x1D, 0x55, 0x66, 0x2F, 0x81, 0x83, - 0x72, 0x3F, 0x30, 0x60, 0xFA, 0x34, 0xE9, 0xCF, 0xB3, 0x0F, 0x95, 0xBD, - 0xE4, 0x9F, 0xDF, 0x53, 0x6E, 0x00, 0xC9, 0x07, 0x7E, 0x9B, 0x79, 0xBD, - 0xD2, 0xE2, 0x77, 0x80, 0xB4, 0xF3, 0x9A, 0x46, 0x20, 0x8C, 0x21, 0x0A, - 0xEA, 0xFE, 0x07, 0x61, 0x58, 0xB8, 0x38, 0x47, 0xF5, 0x75, 0x5B, 0x33, - 0x78, 0x9E, 0x66, 0xDF, 0x30, 0xAD, 0xD8, 0xED, 0x5D, 0x73, 0x75, 0x6D, - 0x4E, 0x63, 0x8B, 0x35, 0x4F, 0xCA, 0x75, 0x58, 0xDB, 0xEA, 0x2A, 0xE2, - 0xB1, 0xE1, 0x15, 0x6C, 0x69, 0x46, 0xC8, 0xD9, 0x67, 0x15, 0x4B, 0xCE, - 0xB4, 0x04, 0x9B, 0x9D, 0xCA, 0xB7, 0x5E, 0x4B, 0xA3, 0x6C, 0xD1, 0xFF, - 0x4A, 0x71, 0x71, 0x9C, 0x11, 0x87, 0x5E, 0x9E, 0x5D, 0xA9, 0x05, 0x1F, - 0xD8, 0x96, 0xA9, 0x3F, 0xFA, 0xEB, 0x0A, 0x91, 0x44, 0xDD, 0xCF, 0x93, - 0xD5, 0x0A, 0x80, 0x9C, 0xA8, 0xCB, 0x2A, 0x7F, 0x03, 0x45, 0x43, 0xA7, - 0xC3, 0x59, 0xFF, 0xFC, 0xFF, 0x44, 0x24, 0xB1, 0x02, 0xBB, 0x42, 0xCF, - 0x45, 0xC9, 0xF4, 0xAE, 0x23, 0x5D, 0xB2, 0x0B, 0xDE, 0xAD, 0x7E, 0xD6, - 0x1C, 0x75, 0xFE, 0x90, 0xCF, 0x49, 0xB1, 0x51, 0x36, 0x3A, 0x48, 0xD2, - 0xCE, 0xAA, 0x40, 0x2D, 0xE9, 0x70, 0x85, 0xCC, 0x66, 0xB5, 0x2A, 0x85, - 0xA2, 0x1E, 0x18, 0x18, 0xA7, 0x6A, 0x89, 0x39, 0x1E, 0x56, 0x7E, 0xA7, - 0xC7, 0x9F, 0x9B, 0xFA, 0x58, 0x4A, 0x08, 0x0E, 0x78, 0x81, 0x84, 0xB3, - 0x66, 0xA4, 0x8B, 0x20, 0xF2, 0xB0, 0x48, 0xA4, 0xE4, 0xA1, 0xC2, 0x05, - 0xB7, 0x19, 0xFE, 0x71, 0xEF, 0xCB, 0x30, 0x8C, 0xC2, 0x3B, 0xE4, 0x78, - 0x1C, 0x92, 0x51, 0x96, 0xC1, 0x89, 0xA3, 0x71, 0x9A, 0x6D, 0xF5, 0x35, - 0xA6, 0xEE, 0x71, 0xE2, 0x12, 0x55, 0x88, 0x61, 0x10, 0x50, 0x47, 0x53, - 0x3D, 0xBA, 0x0F, 0x6A, 0xE9, 0x5C, 0x8B, 0x0F, 0x8B, 0xAC, 0xCD, 0x20, - 0xAE, 0x5B, 0x9A, 0x80, 0xB4, 0x9C, 0x27, 0x5D, 0x47, 0xD6, 0x03, 0xFE, - 0x68, 0x38, 0xBC, 0x34, 0x1B, 0xFD, 0x62, 0xCF, 0x9A, 0xC0, 0xC9, 0x7C, - 0xAB, 0xF5, 0x85, 0x1D, 0x81, 0x41, 0x6D, 0xB3, 0x62, 0x72, 0x4A, 0x6F, - 0xDD, 0xA8, 0xB4, 0xAE, 0xEA, 0xE0, 0xED, 0x57, 0x82, 0x0A, 0x7E, 0xD1, - 0x3B, 0x7E, 0xA5, 0x43, 0x9E, 0x5F, 0x73, 0x92, 0xEF, 0xAA, 0xC5, 0xAB, - 0xA9, 0x07, 0xD5, 0xB5, 0x32, 0x9E, 0xD3, 0x66, 0xA3, 0x98, 0xDC, 0xF5, - 0x12, 0xB6, 0x89, 0xE0, 0x58, 0xE3, 0x26, 0x62, 0xDC, 0xA2, 0xB9, 0x58, - 0x7C, 0x42, 0xA7, 0xFB, 0x9E, 0x12, 0xD9, 0x50, 0x55, 0xFD, 0x64, 0xC7, - 0xFC, 0xA1, 0x12, 0x98, 0x43, 0xEE, 0x62, 0xBC, 0x75, 0x3B, 0x5D, 0xE1, - 0xFF, 0xAF, 0x29, 0x4D, 0x81, 0x6A, 0xB2, 0x13, 0x2D, 0xE9, 0x9C, 0x65, - 0x90, 0x1A, 0xBE, 0x06, 0x69, 0x9D, 0xC7, 0xF5, 0x98, 0xEB, 0xA4, 0x13, - 0x67, 0xDD, 0xA4, 0x7E, 0x23, 0x56, 0x92, 0x31, 0x62, 0xA3, 0xDD, 0x7B, - 0xB9, 0x1C, 0xD1, 0x0E, 0xEF, 0x1A, 0xB5, 0x94, 0xF4, 0x10, 0xD4, 0x21, - 0x76, 0x14, 0xC1, 0x2D, 0x5C, 0x2F, 0x71, 0x86, 0x94, 0x84, 0x41, 0x6A, - 0x1F, 0xA2, 0x75, 0xFF, 0x34, 0x0B, 0xCA, 0xD4, 0x11, 0x7F, 0xB7, 0xD0, - 0xAB, 0x7E, 0xB9, 0x13, 0x26, 0x1B, 0x60, 0x48, 0x62, 0x2A, 0xF7, 0x18, - 0x24, 0xDF, 0x51, 0x6B, 0x34, 0x61, 0x99, 0x27, 0x03, 0x95, 0x6C, 0xAA, - 0x81, 0xFA, 0x94, 0xAB, 0x9E, 0x34, 0xA5, 0xC5, 0x8C, 0xA6, 0x6A, 0x43, - 0x2D, 0x5F, 0x99, 0xE5, 0x00, 0xE5, 0x51, 0x71, 0x19, 0xA6, 0xF5, 0x36, - 0x1E, 0x21, 0xF2, 0x26, 0xE4, 0x7A, 0x18, 0x76, 0x10, 0xE9, 0xE0, 0x9E, - 0x54, 0x2D, 0xFA, 0x83, 0x9F, 0x41, 0x7C, 0x0E, 0xA7, 0xC9, 0xDD, 0x58, - 0x73, 0x18, 0xCB, 0x26, 0x60, 0xE8, 0x90, 0xC1, 0x4D, 0x0B, 0x01, 0x01, - 0xD8, 0x57, 0xED, 0x78, 0xF9, 0x28, 0x0D, 0xA7, 0x1F, 0x66, 0x99, 0x0A, - 0x17, 0x8C, 0xA7, 0xC1, 0xD2, 0x51, 0x4C, 0x2E, 0x7C, 0x3F, 0xE0, 0x2F, - 0x66, 0x6D, 0x68, 0x2B, 0xE0, 0x17, 0x2F, 0x21, 0xE5, 0x4A, 0xD9, 0x46, - 0x39, 0xA4, 0xD5, 0x2E, 0xF7, 0x6F, 0xAD, 0xA9, 0x13, 0xAE, 0x97, 0xF3, - 0xFC, 0xCE, 0xDA, 0x4C, 0x35, 0xF1, 0x19, 0xCC, 0x27, 0xA4, 0x5C, 0xF9, - 0xDD, 0x19, 0x84, 0xF2, 0x35, 0xDD, 0x3D, 0x7A, 0xD0, 0x9F, 0xA5, 0x81, - 0xFB, 0x66, 0x6E, 0x71, 0x83, 0x88, 0x47, 0xA5, 0xF7, 0xE8, 0x19, 0x5B, - 0x93, 0xE0, 0x1A, 0xE4, 0xED, 0x56, 0xC5, 0xCC, 0x8D, 0xCB, 0x50, 0x41, - 0x0B, 0xEA, 0x2D, 0x2F, 0xBA, 0x8A, 0xA3, 0x64, 0x46, 0x5F, 0x27, 0x22, - 0x17, 0xD9, 0xCC, 0xD6, 0xAD, 0x32, 0xE6, 0x19, 0x35, 0xD2, 0x3C, 0x54, - 0xB5, 0x14, 0xC8, 0x3C, 0x65, 0x9F, 0xA4, 0x2A, 0x44, 0xBA, 0xF3, 0xE5, - 0xBA, 0x10, 0x3B, 0xD6, 0x67, 0xFB, 0x94, 0x99, 0x9A, 0xD7, 0x37, 0x96, - 0xC6, 0x6B, 0xD7, 0xBA, 0x58, 0x82, 0xED, 0x49, 0xD8, 0x6A, 0x58, 0xDB, - 0x04, 0x78, 0x62, 0x8D, 0x30, 0xCA, 0xA0, 0xB8, 0xDE, 0xCD, 0x06, 0x7D, - 0xF3, 0xE8, 0xF8, 0x54, 0xD7, 0xD4, 0x8D, 0xFB, 0xD0, 0xB9, 0x08, 0xE3, - 0xCE, 0x81, 0x7C, 0xCF, 0x71, 0x41, 0x03, 0x1B, 0x9A, 0xED, 0x5C, 0x71, - 0xB5, 0x7B, 0x56, 0xDC, 0x0B, 0x1F, 0xF1, 0xAF, 0x55, 0xE2, 0x37, 0x44, - 0x42, 0x69, 0x27, 0xDB, 0xCE, 0x5E, 0xC1, 0x8A, 0x20, 0x30, 0xBD, 0x7F, - 0x71, 0x2C, 0x1A, 0x26, 0x7C, 0xF8, 0xEF, 0x72, 0x6B, 0x87, 0xB7, 0x13, - 0x9B, 0x39, 0xBC, 0xBD, 0x67, 0xEC, 0x54, 0xA9, 0xB0, 0x5C, 0x11, 0xC3, - 0x60, 0xA7, 0x2F, 0x6D, 0xBC, 0xEB, 0x99, 0x82, 0x47, 0xEE, 0xD4, 0xEE, - 0x85, 0xA5, 0xF6, 0xEB, 0x59, 0xA1, 0xC0, 0x0E, 0xC1, 0x1C, 0x1B, 0x9F, - 0xC7, 0xAD, 0xF1, 0x1C, 0x35, 0x77, 0x06, 0x42, 0xD7, 0xB2, 0x98, 0x0D, - 0x86, 0xF1, 0x71, 0x93, 0xED, 0x29, 0x10, 0xC1, 0x64, 0xA1, 0x0D, 0x5F, - 0x21, 0x8E, 0x9B, 0x7B, 0x16, 0xF8, 0xAA, 0x6E, 0x39, 0x38, 0x71, 0xB0, - 0xDA, 0x6F, 0xF7, 0x74, 0xBD, 0xAB, 0xF2, 0x4C, 0xB2, 0x9E, 0x1E, 0x1D, - 0xB0, 0x75, 0x97, 0xD3, 0x22, 0x03, 0x3D, 0xB9, 0x24, 0x16, 0x16, 0x88, - 0x95, 0x17, 0x9D, 0x67, 0x19, 0xC1, 0x6F, 0x40, 0xC2, 0x61, 0x52, 0xC8, - 0x27, 0x39, 0x75, 0xE5, 0x93, 0xD5, 0x71, 0x89, 0x3E, 0x79, 0x08, 0x49, - 0x4B, 0x02, 0xD9, 0x8D, 0xD8, 0x5B, 0x19, 0x35, 0x34, 0x5F, 0x32, 0x68, - 0x0A, 0xBA, 0xEA, 0x9C, 0xB3, 0x21, 0x25, 0x29, 0x3F, 0xA5, 0x11, 0xF8, - 0x78, 0xA9, 0x6E, 0xED, 0x7E, 0x20, 0xC3, 0xA5, 0xC7, 0x56, 0xCE, 0x29, - 0x4E, 0xC0, 0xA5, 0x04, 0x73, 0x2A, 0xE3, 0x22, 0xF8, 0x30, 0xE5, 0x1D, - 0x0C, 0x76, 0x00, 0xF6, 0x8F, 0xEC, 0x70, 0x65, 0x18, 0x64, 0xCD, 0x20, - 0x37, 0x35, 0x43, 0xA2, 0xF0, 0x67, 0x2D, 0xDE, 0x49, 0xE3, 0x7A, 0x66, - 0x5A, 0x01, 0x87, 0x31, 0xD8, 0x77, 0x85, 0x39, 0x6D, 0xBC, 0x5A, 0xF3, - 0x8B, 0x5C, 0x7C, 0x8F, 0xD8, 0x6A, 0x98, 0xE6, 0x8C, 0x80, 0x3A, 0x44, - 0x9B, 0x44, 0xFC, 0xA1, 0x13, 0xF9, 0xA6, 0x26, 0x1D, 0xC2, 0xF8, 0x49, - 0x98, 0x97, 0x49, 0xEF, 0x28, 0x55, 0x0A, 0x0B, 0x0B, 0x3E, 0x12, 0x20, - 0x3E, 0x25, 0x57, 0xC0, 0xB4, 0xB1, 0xD8, 0x87, 0x33, 0xB7, 0xB4, 0xD8, - 0x99, 0x86, 0x85, 0xB1, 0xCD, 0xB0, 0x36, 0xC1, 0xFD, 0x1D, 0x6E, 0x5E, - 0x6C, 0x65, 0x28, 0x34, 0x13, 0x2C, 0x65, 0x91, 0x98, 0x46, 0xCF, 0x26, - 0x66, 0x06, 0x35, 0x10, 0xE4, 0x82, 0x89, 0x2E, 0xE2, 0x62, 0x6C, 0xAA, - 0x2B, 0x97, 0xAC, 0x23, 0x67, 0x50, 0xE1, 0x88, 0xE2, 0xC2, 0x02, 0xCC, - 0x8C, 0x93, 0xAC, 0x46, 0xB1, 0x0D, 0x4B, 0x63, 0x53, 0xC6, 0x75, 0x17, - 0xA7, 0x68, 0x98, 0xA5, 0x8D, 0x44, 0x48, 0x9D, 0x7C, 0xEB, 0x78, 0x05, - 0x93, 0x30, 0x6E, 0x17, 0xDF, 0x1C, 0x35, 0xED, 0x6A, 0x7A, 0x52, 0x31, - 0x27, 0x2F, 0x82, 0xDD, 0x8D, 0x46, 0x18, 0xCE, 0xFF, 0x13, 0xF6, 0x62, - 0x3E, 0xB1, 0xBC, 0xE5, 0xF7, 0x8E, 0xA2, 0x04, 0x22, 0x3D, 0xFC, 0xA7, - 0x0D, 0xCE, 0x94, 0x2C, 0x48, 0xA2, 0x78, 0x7F, 0x22, 0xBF, 0x08, 0x69, - 0xDE, 0x89, 0x5F, 0x56, 0xE4, 0x88, 0xDB, 0xA1, 0x07, 0xD6, 0x6E, 0xCE, - 0x50, 0xF0, 0xEE, 0x31, 0x52, 0x69, 0xD3, 0x85, 0x22, 0x96, 0x91, 0xA4, - 0x71, 0xA5, 0xB8, 0x7C, 0x0A, 0x8D, 0x59, 0x1F, 0x48, 0x2A, 0xFA, 0xDC, - 0x94, 0x6E, 0x31, 0x92, 0x80, 0x4A, 0x05, 0xE4, 0x00, 0x02, 0x19, 0x23, - 0xDD, 0xA6, 0x10, 0x03, 0x6B, 0x3D, 0xC2, 0xAE, 0x3C, 0x84, 0x44, 0x84, - 0x9B, 0xC9, 0x7F, 0x6D, 0xA1, 0xBE, 0xE8, 0xE9, 0x8E, 0x43, 0x17, 0x18, - 0x85, 0x14, 0x6C, 0x3E, 0xB2, 0xB8, 0x83, 0xFF, 0xA8, 0xE0, 0xF3, 0x9C, - 0xA4, 0x74, 0xA2, 0x7D, 0x82, 0x58, 0xAB, 0x0B, 0xD2, 0xC8, 0x07, 0x29, - 0x8D, 0x66, 0xCD, 0x86, 0xFC, 0xF0, 0x71, 0x7A, 0x6A, 0xF4, 0xC4, 0xD7, - 0xEA, 0x34, 0xB8, 0xF7, 0xCC, 0xF7, 0x8F, 0x27, 0xB1, 0xA7, 0x3D, 0x33, - 0xFE, 0x2F, 0xA1, 0x80, 0x59, 0xE9, 0x0A, 0xF5, 0x3B, 0xEB, 0x84, 0x65, - 0x36, 0xCC, 0x16, 0x49, 0xD8, 0xCE, 0x64, 0x22, 0x12, 0xDA, 0x04, 0x20, - 0x16, 0x85, 0x82, 0xC3, 0x5D, 0x17, 0xE2, 0x01, 0xFB, 0xB9, 0x83, 0x52, - 0x52, 0x50, 0x3B, 0x70, 0x07, 0x87, 0xD5, 0x2E, 0xC1, 0x09, 0x06, 0x3B, - 0xCD, 0x5A, 0xF8, 0x93, 0xA0, 0xD6, 0x67, 0x72, 0xD3, 0x0A, 0x24, 0xB8, - 0x4D, 0x98, 0xE9, 0xB4, 0x3F, 0xDA, 0xB5, 0xA4, 0x32, 0x7D, 0x8B, 0x27, - 0xF3, 0xA0, 0x81, 0x73, 0x18, 0x2A, 0xE0, 0x5B, 0x09, 0x5F, 0x0D, 0xE6, - 0xE9, 0x30, 0x7F, 0x00, 0x33, 0xE5, 0xE3, 0x2B, 0x05, 0x5D, 0x29, 0x9B, - 0xA2, 0x90, 0xEE, 0x09, 0x04, 0x62, 0x07, 0x34, 0x8D, 0x95, 0x00, 0x17, - 0x56, 0x88, 0x05, 0xD2, 0x8E, 0x3F, 0x49, 0x74, 0xD7, 0x59, 0x69, 0x93, - 0xE2, 0x8C, 0xA1, 0xC9, 0x0D, 0xE7, 0x3B, 0x51, 0xB8, 0xE4, 0xA8, 0x77, - 0x58, 0x7A, 0xC2, 0xC7, 0x56, 0x01, 0x0C, 0x0D, 0x5C, 0x1F, 0x00, 0x4D, - 0x36, 0x74, 0x2A, 0xA1, 0xD8, 0x00, 0xC2, 0xAC, 0x61, 0xAC, 0xAC, 0xC8, - 0xA4, 0x0F, 0xE5, 0x8C, 0xCF, 0x9C, 0x2F, 0x93, 0x1A, 0x4A, 0xD9, 0x96, - 0x87, 0x31, 0x42, 0x5C, 0x59, 0x16, 0x89, 0xC4, 0xD5, 0x80, 0x0F, 0xD1, - 0x2E, 0x43, 0x4E, 0x8A, 0xEE, 0x55, 0x49, 0x32, 0x14, 0x31, 0xD4, 0x5E, - 0x58, 0x4E, 0xE9, 0x9A, 0xE3, 0xC2, 0x7C, 0x0E, 0x62, 0xFF, 0xD4, 0x93, - 0xFA, 0xF3, 0x16, 0x7D, 0x35, 0xF8, 0x7A, 0x1D, 0x2E, 0x4C, 0x14, 0xEC, - 0xE8, 0xFB, 0x2A, 0x77, 0x1D, 0x78, 0xCB, 0xE0, 0xC8, 0x50, 0xEB, 0x90, - 0x87, 0xEE, 0xA4, 0xFC, 0xB4, 0x1B, 0x10, 0x11, 0x45, 0x95, 0x26, 0x4F, - 0xCD, 0xDC, 0x3E, 0x16, 0x53, 0xBB, 0x84, 0x5C, 0x97, 0x5D, 0x72, 0xBB, - 0x96, 0xD1, 0x72, 0x08, 0x0E, 0xAB, 0xA2, 0x40, 0x61, 0x84, 0x4F, 0x09, - 0x1A, 0x53, 0xD8, 0x32, 0xEB, 0x48, 0xEC, 0x72, 0x6E, 0x5D, 0x59, 0x48, - 0x69, 0x57, 0xD4, 0x0F, 0xA9, 0xA0, 0x19, 0x4F, 0x3C, 0xBB, 0x5C, 0x97, - 0xF4, 0xF1, 0x48, 0x10, 0x4D, 0xC1, 0x74, 0xCB, 0x61, 0x4F, 0xDE, 0x8E, - 0x04, 0x28, 0xF2, 0xFC, 0x43, 0xDD, 0x7D, 0x1A, 0x30, 0xA5, 0xED, 0xF8, - 0x01, 0x70, 0x73, 0xAE, 0x5F, 0x40, 0xA6, 0x83, 0xF0, 0x59, 0xE2, 0xFB, - 0xE3, 0x43, 0xA2, 0x54, 0x7A, 0x9E, 0xE2, 0xED, 0xF1, 0xD4, 0x82, 0x14, - 0xB3, 0x89, 0x5A, 0xAE, 0xAB, 0x83, 0x37, 0x73, 0x14, 0xE0, 0x48, 0x37, - 0x38, 0xA2, 0x2B, 0x6D, 0x26, 0x9A, 0xD7, 0x40, 0x6E, 0x29, 0xB4, 0x1A, - 0xD4, 0x82, 0x07, 0x16, 0xC0, 0x0C, 0xAE, 0x4A, 0xA5, 0xB3, 0x08, 0xBD, - 0x3C, 0x78, 0xC9, 0x67, 0x3E, 0x3D, 0x85, 0x38, 0xC4, 0x49, 0x03, 0x1C, - 0xE6, 0x92, 0x77, 0x5D, 0xD3, 0xEC, 0x54, 0x7D, 0x18, 0x1F, 0x05, 0xF3, - 0xBB, 0x7D, 0xD2, 0xBC, 0xB8, 0x4D, 0xD0, 0x6E, 0xD5, 0x0A, 0x52, 0x4F, - 0x7A, 0x29, 0x4A, 0x2C, 0xDC, 0x61, 0x5D, 0x44, 0xEA, 0xD7, 0x89, 0x4D, - 0x89, 0xB0, 0x0D, 0x44, 0xC9, 0x4E, 0xCF, 0xD9, 0xE2, 0xFA, 0xC8, 0xA3, - 0xB8, 0x2A, 0x2D, 0x3D, 0x26, 0x63, 0x0D, 0xB5, 0x28, 0x2A, 0xA0, 0x2D, - 0x2F, 0xC5, 0x7B, 0xE8, 0xC4, 0x59, 0x7C, 0xEA, 0xFC, 0x2E, 0x3F, 0xE1, - 0x73, 0xF1, 0x38, 0xA6, 0xC0, 0x3E, 0x78, 0x69, 0xF6, 0x77, 0x64, 0x16, - 0x52, 0x3A, 0x0D, 0x1F, 0x33, 0x3E, 0xE6, 0x68, 0x9B, 0x32, 0x5E, 0xD6, - 0x04, 0xB1, 0x86, 0x0D, 0x61, 0x44, 0xB9, 0xF4, 0x2F, 0xFC, 0x53, 0x78, - 0xFA, 0xB9, 0x2E, 0x37, 0x42, 0x41, 0xC1, 0x2E, 0x3D, 0xBF, 0xA9, 0x2C, - 0x6D, 0x49, 0x44, 0x0D, 0x7D, 0x0C, 0xD1, 0x91, 0xFF, 0xE7, 0x02, 0x6C, - 0x20, 0xB8, 0xE3, 0xF5, 0xD7, 0x3F, 0x6A, 0x5A, 0xFB, 0xA9, 0x24, 0x38, - 0x06, 0x15, 0x22, 0xAE, 0xFA, 0x4C, 0xCD, 0x94, 0xDC, 0x1C, 0x3D, 0x74, - 0x15, 0x88, 0x3E, 0xD3, 0x40, 0x8D, 0x5E, 0xA1, 0xD5, 0x4B, 0x25, 0x5F, - 0xE6, 0x06, 0x91, 0x69, 0x1A, 0xB9, 0x70, 0x79, 0x0B, 0x67, 0xAD, 0xF9, - 0xB8, 0x0E, 0xCC, 0x6F, 0x2A, 0x3A, 0x89, 0x14, 0x48, 0x07, 0x69, 0x43, - 0x4E, 0xAA, 0x21, 0xB0, 0x55, 0xDC, 0xC1, 0x9F, 0x36, 0x39, 0x29, 0x36, - 0x4B, 0x33, 0x84, 0x35, 0x1D, 0x13, 0xF5, 0x4F, 0x46, 0x65, 0x30, 0xD9, - 0xFB, 0xC9, 0x43, 0xAB, 0x54, 0x27, 0x77, 0x4F, 0xC7, 0x70, 0x35, 0x75, - 0xBF, 0xF5, 0x69, 0x65, 0x93, 0xB8, 0x27, 0x07, 0x12, 0x6F, 0x34, 0xE5, - 0x6F, 0x31, 0x80, 0xD5, 0xCD, 0x0D, 0x26, 0x2E, 0xC7, 0xB3, 0xF4, 0x62, - 0x79, 0x5C, 0x20, 0x97, 0xB5, 0x17, 0x46, 0x8A, 0xFE, 0xC4, 0x11, 0xBC, - 0x7E, 0x6C, 0xFF, 0xF5, 0x5D, 0x08, 0x9F, 0xE8, 0x5A, 0x6D, 0x79, 0x22, - 0x0F, 0xFD, 0x0A, 0xB6, 0x76, 0xC7, 0x28, 0x43, 0x61, 0x74, 0x69, 0x7B, - 0x82, 0xCF, 0x3A, 0xB2, 0xC7, 0x56, 0x51, 0x6D, 0xE3, 0x6C, 0x5A, 0x7C, - 0x38, 0x52, 0xAF, 0x56, 0x71, 0xBD, 0x1E, 0xB6, 0x4D, 0x77, 0x43, 0xD9, - 0x76, 0x9B, 0xF7, 0xD2, 0x5E, 0xD5, 0xAF, 0x39, 0xAA, 0x14, 0x74, 0xAF, - 0xB1, 0x15, 0x5C, 0xA9, 0x11, 0x3C, 0x62, 0xA9, 0xA7, 0x92, 0xB6, 0x4F, - 0x95, 0xCD, 0x26, 0x1A, 0x75, 0x23, 0x4F, 0x55, 0x29, 0x7E, 0x5E, 0xDC, - 0x04, 0x57, 0x70, 0xC4, 0x4D, 0xEB, 0x7F, 0x51, 0xB7, 0x99, 0x0D, 0x20, - 0x92, 0xA4, 0xC8, 0x88, 0x7B, 0x6D, 0xB4, 0xC8, 0x1C, 0x19, 0x36, 0xC7, - 0xD2, 0xFA, 0xC1, 0x9B, 0x92, 0x16, 0x79, 0xAD, 0x88, 0x9A, 0xCB, 0x31, - 0xA4, 0x92, 0xA8, 0xBC, 0xF5, 0x46, 0xE3, 0x71, 0xC4, 0xE8, 0x63, 0xF5, - 0x89, 0x68, 0x2A, 0x21, 0x41, 0x46, 0x81, 0x7A, 0x99, 0xAC, 0x04, 0xDD, - 0x18, 0x91, 0x4E, 0x3D, 0x02, 0x06, 0x8B, 0x8A, 0x6F, 0x47, 0x3A, 0xA5, - 0xD5, 0x75, 0xE0, 0x8E, 0x81, 0xB8, 0x36, 0x3D, 0xA0, 0x35, 0x20, 0x5F, - 0x0B, 0x96, 0x8E, 0xD8, 0x1D, 0x56, 0x2F, 0x14, 0x81, 0xE1, 0x40, 0x30, - 0x79, 0x84, 0x7D, 0x49, 0x83, 0x71, 0xBA, 0xDC, 0x14, 0x0B, 0x64, 0xFC, - 0x52, 0xD8, 0xBE, 0x3F, 0x35, 0x74, 0x4C, 0x64, 0x15, 0x8D, 0x84, 0xF4, - 0xB5, 0x9D, 0xF9, 0x14, 0x35, 0xC9, 0x71, 0x69, 0x1C, 0x1A, 0x5D, 0x99, - 0xA4, 0x41, 0xFF, 0x3B, 0x98, 0x30, 0x64, 0xCE, 0xF3, 0xB3, 0xA9, 0xF7, - 0xF0, 0xAA, 0xB2, 0x73, 0xF2, 0x29, 0x01, 0x95, 0x6C, 0xF8, 0x14, 0x21, - 0x1B, 0x6E, 0x58, 0xD4, 0x9E, 0x7A, 0x62, 0x82, 0xB7, 0xD7, 0xB3, 0xEE, - 0xEB, 0x3F, 0x3D, 0x3D, 0x52, 0x9F, 0xA9, 0x15, 0x5D, 0xB4, 0xB0, 0x6D, - 0x17, 0xC8, 0x5C, 0x5F, 0xF7, 0x55, 0xB1, 0xA9, 0xA5, 0x25, 0xEF, 0x89, - 0xE2, 0x7F, 0xBA, 0xAA, 0xDD, 0x40, 0x54, 0x6F, 0x6E, 0x86, 0x27, 0x24, - 0x3B, 0x18, 0x49, 0xE6, 0xD3, 0x6B, 0xDD, 0x44, 0xC0, 0x94, 0xB0, 0x1D, - 0x32, 0xDE, 0x5B, 0x3E, 0xEA, 0x72, 0xB4, 0x01, 0xA1, 0xE4, 0x58, 0x52, - 0x26, 0xD7, 0x6F, 0xC7, 0x86, 0x7A, 0xB7, 0x41, 0xC2, 0xB0, 0x55, 0x55, - 0x8F, 0x1F, 0xA2, 0x43, 0x60, 0x2E, 0x5A, 0x53, 0xBF, 0xA8, 0xAC, 0xD6, - 0x63, 0xA8, 0x0E, 0x2A, 0xA0, 0x4F, 0x8A, 0xF3, 0xF9, 0xF6, 0x1C, 0xC1, - 0x1A, 0x0A, 0x3D, 0x16, 0x2F, 0xF5, 0x8A, 0x6F, 0xEF, 0x41, 0x08, 0xAA, - 0x5C, 0xFE, 0xFF, 0x4A, 0xFE, 0x9D, 0x36, 0x1B, 0xDE, 0x4C, 0x36, 0x9E, - 0x57, 0x0F, 0x4C, 0xD7, 0xFC, 0x8B, 0x03, 0x7E, 0xFB, 0x59, 0x34, 0xBB, - 0x1C, 0x8D, 0xCF, 0x59, 0x9D, 0x4C, 0xA4, 0x26, 0xD3, 0x68, 0x35, 0xCE, - 0x80, 0xCD, 0xDB, 0x6D, 0xE0, 0x02, 0x5A, 0xAE, 0x64, 0xD9, 0x9E, 0x44, - 0x74, 0x08, 0x71, 0x5E, 0x6D, 0x95, 0x0A, 0x60, 0x75, 0xAA, 0xA7, 0xB5, - 0xD7, 0x75, 0x5E, 0xD3, 0x05, 0xA3, 0x50, 0xA1, 0x32, 0x13, 0x8C, 0x29, - 0x81, 0x45, 0x7A, 0x38, 0x61, 0xB5, 0xD0, 0x4C, 0xB5, 0x95, 0xD7, 0x92, - 0x58, 0x8C, 0xF8, 0x0B, 0x9D, 0x7C, 0x33, 0x35, 0xAE, 0x8E, 0x69, 0x48, - 0x0F, 0x03, 0x75, 0x81, 0x78, 0xE8, 0x91, 0x0D, 0xEF, 0x84, 0x91, 0x53, - 0xF1, 0xE6, 0xED, 0xC1, 0xD7, 0x1D, 0xD3, 0xE0, 0x73, 0x9E, 0x94, 0xD5, - 0x68, 0xE9, 0xBD, 0x13, 0xA6, 0x22, 0x76, 0x19, 0x5F, 0x2D, 0xAC, 0xF9, - 0xD6, 0x06, 0x88, 0x1E, 0x5B, 0xA5, 0x00, 0x67, 0x6F, 0x0D, 0xD2, 0xF3, - 0x5D, 0x8D, 0x06, 0x90, 0xD1, 0xF7, 0xBE, 0x39, 0x19, 0xD5, 0x9E, 0x60, - 0x6B, 0xD4, 0x51, 0xE6, 0x46, 0xB2, 0x96, 0xC4, 0x01, 0xC3, 0xD2, 0xA5, - 0x3D, 0xCD, 0x4F, 0x9C, 0xBD, 0x3D, 0xC3, 0x0F, 0x1E, 0x94, 0xA8, 0xFD, - 0x26, 0xA9, 0x9C, 0x4C, 0xA4, 0xF8, 0xBC, 0xD8, 0xB1, 0xC7, 0xFE, 0x5F, - 0x8B, 0xF2, 0x60, 0x37, 0x6D, 0xF9, 0x62, 0xEF, 0xAE, 0xAD, 0x19, 0x69, - 0xAF, 0x20, 0x26, 0x41, 0x60, 0xEC, 0x8D, 0x32, 0x6B, 0x3B, 0xA3, 0xA2, - 0x67, 0xB0, 0x6D, 0xA3, 0x48, 0x8A, 0xAA, 0x03, 0xD3, 0xE4, 0xE7, 0x76, - 0xA0, 0x8C, 0xBE, 0x53, 0xF3, 0x2E, 0x96, 0x1A, 0xEB, 0x1E, 0x38, 0x47, - 0x29, 0x64, 0x8F, 0xDB, 0x15, 0xAA, 0xFF, 0xE6, 0xC0, 0x16, 0x22, 0xD8, - 0x95, 0x36, 0x56, 0x28, 0x5B, 0x90, 0x0C, 0x8C, 0xF3, 0x03, 0x01, 0xA3, - 0x53, 0x17, 0x62, 0x0C, 0xB6, 0xDC, 0x65, 0xE4, 0x70, 0x49, 0xD2, 0x76, - 0x85, 0x47, 0x90, 0x8B, 0x84, 0xF4, 0x00, 0x13, 0x0A, 0xB6, 0x3F, 0xF4, - 0x3E, 0x67, 0x1A, 0x11, 0xFF, 0xA5, 0x28, 0x0F, 0x1E, 0x0C, 0xD5, 0xE9, - 0x99, 0x3E, 0x09, 0xB5, 0x0B, 0x87, 0x9B, 0xF1, 0xB2, 0x8D, 0xFD, 0x24, - 0x95, 0x43, 0x52, 0x1D, 0x38, 0xA7, 0x1B, 0x98, 0x38, 0xEC, 0x68, 0x7C, - 0x69, 0x45, 0x17, 0x21, 0x63, 0x85, 0x16, 0xF8, 0xCE, 0x10, 0xA4, 0xE1, - 0xCE, 0xD8, 0x1A, 0x82, 0x6E, 0xC7, 0x06, 0xD4, 0xB0, 0x58, 0x09, 0x22, - 0x95, 0x84, 0x0E, 0xD6, 0x2E, 0x06, 0x74, 0x07, 0x5D, 0x01, 0x8B, 0x88, - 0x8D, 0x66, 0xF4, 0x0D, 0x36, 0x52, 0x41, 0xCD, 0xE6, 0x17, 0xBF, 0xF2, - 0x37, 0x50, 0x68, 0x3A, 0x5C, 0x7D, 0x4F, 0xD5, 0xE0, 0xE7, 0xB3, 0x24, - 0xD3, 0x2A, 0x07, 0x18, 0x9F, 0x53, 0x8D, 0x52, 0xD6, 0x98, 0x26, 0x30, - 0xA5, 0x43, 0x04, 0x7C, 0xB1, 0xF3, 0x93, 0xE2, 0xE6, 0x21, 0x1B, 0x94, - 0xDA, 0xEE, 0x29, 0xB1, 0xDB, 0x07, 0x3D, 0x9F, 0x9B, 0x14, 0x8F, 0x4E, - 0x9D, 0xCB, 0xCE, 0xA9, 0x5C, 0x60, 0xB1, 0xC0, 0x4C, 0xB7, 0x89, 0xBA, - 0xD2, 0x14, 0xEE, 0x94, 0xBC, 0xD4, 0x5D, 0x90, 0x3B, 0xC6, 0xC5, 0x7C, - 0xCB, 0x13, 0xB9, 0xDE, 0xA0, 0x06, 0x37, 0x94, 0x73, 0xBC, 0xC8, 0xA0, - 0xDB, 0xE3, 0x51, 0xD3, 0x36, 0xB5, 0x4E, 0x4F, 0xA0, 0xB0, 0x74, 0x38, - 0x76, 0xBC, 0x8A, 0x98, 0x4B, 0xFA, 0x00, 0x4F, 0x89, 0xA5, 0x59, 0x92, - 0xC4, 0xAD, 0x35, 0x67, 0x68, 0xE5, 0x7D, 0xDD, 0x5E, 0x1C, 0x50, 0x35, - 0x4E, 0xE1, 0xEB, 0x9C, 0x1A, 0xD2, 0x4C, 0x98, 0x25, 0x2A, 0x43, 0x7E, - 0x7C, 0x64, 0x45, 0x1B, 0x19, 0x97, 0xDE, 0xD0, 0xCB, 0x24, 0x5C, 0x40, - 0x95, 0x46, 0x0A, 0xEC, 0x14, 0x59, 0x55, 0x10, 0x12, 0x23, 0x1C, 0xF9, - 0x9E, 0xB5, 0xEF, 0xEA, 0x6E, 0xE4, 0x6B, 0xF7, 0xDD, 0x95, 0xD2, 0x8F, - 0x96, 0xBA, 0xDA, 0x04, 0x87, 0x47, 0x5B, 0x2A, 0xB6, 0x71, 0x2C, 0xE3, - 0xCA, 0xC6, 0x94, 0xC0, 0xA0, 0xB8, 0x17, 0x78, 0x0A, 0xFE, 0xB9, 0x1E, - 0xB3, 0xCB, 0x21, 0x7E, 0x90, 0x01, 0xB2, 0xBD, 0xEE, 0x81, 0xD0, 0x05, - 0xDE, 0xC2, 0xFB, 0x6E, 0x94, 0xDC, 0x22, 0xA0, 0x0F, 0x8A, 0xD5, 0xB5, - 0x56, 0xA5, 0xB4, 0x39, 0xCD, 0x1E, 0xDB, 0x5A, 0xF2, 0x92, 0xA8, 0x7B, - 0x1F, 0xDC, 0x44, 0xE7, 0xFF, 0xE3, 0x59, 0x69, 0x2D, 0x5E, 0x45, 0x53, - 0x99, 0xB6, 0xC2, 0x15, 0x21, 0x65, 0x32, 0x43, 0xFC, 0xAD, 0x6D, 0x91, - 0xC9, 0x09, 0x82, 0x6B, 0x2C, 0xA8, 0x0A, 0xE8, 0x4A, 0xD7, 0x19, 0x06, - 0x53, 0x9A, 0x00, 0x0A, 0x9E, 0x25, 0xA6, 0x6E, 0xE0, 0x98, 0xC2, 0xC9, - 0xD4, 0x98, 0x32, 0xE4, 0xEE, 0x37, 0x5D, 0x1F, 0x10, 0x22, 0xCD, 0x91, - 0xBD, 0x7B, 0xDA, 0x27, 0xB5, 0x06, 0x5A, 0x9E, 0x27, 0x6C, 0xBA, 0x53, - 0x20, 0x13, 0xA3, 0x2E, 0xAC, 0x05, 0x9A, 0x3C, 0xD1, 0xEB, 0xA2, 0xE8, - 0x7F, 0x4E, 0xB0, 0xE6, 0x5A, 0x73, 0x6B, 0x5D, 0x37, 0x80, 0x66, 0xD3, - 0x50, 0x21, 0xA6, 0x9E, 0x43, 0x15, 0x15, 0x77, 0xC7, 0x0B, 0x30, 0x16, - 0xB6, 0x8D, 0x38, 0x93, 0x53, 0xF5, 0x68, 0xF4, 0x34, 0x07, 0xD1, 0xBD, - 0x10, 0xDE, 0xDD, 0x4E, 0x87, 0x32, 0xB6, 0xB4, 0x37, 0xD1, 0xBB, 0x8A, - 0xD2, 0x4B, 0xBF, 0x04, 0x73, 0x3A, 0x36, 0x5C, 0x87, 0xF7, 0x0B, 0x41, - 0x11, 0xF6, 0x27, 0x2C, 0xB6, 0xC2, 0x8B, 0xBE, 0x6E, 0x5D, 0x17, 0xA6, - 0xEC, 0x74, 0xDF, 0xE4, 0x88, 0xDD, 0x9E, 0xEF, 0xFD, 0x2B, 0x25, 0xD9, - 0x3B, 0x42, 0xB1, 0x2F, 0x21, 0xE4, 0x29, 0xC8, 0x69, 0x48, 0xC8, 0xB8, - 0xB3, 0x8C, 0x2B, 0x4F, 0x31, 0xB9, 0x0C, 0xB2, 0xE1, 0xE9, 0xE1, 0xF4, - 0x7C, 0xE9, 0x78, 0x1F, 0xFF, 0xB7, 0x6D, 0xF9, 0x01, 0xF5, 0xDA, 0xCB, - 0x37, 0x20, 0xAE, 0x29, 0xED, 0xC7, 0x93, 0x25, 0xB7, 0x10, 0x47, 0x1E, - 0x07, 0x8A, 0x82, 0xDC, 0xB9, 0x93, 0x39, 0xA0, 0xD8, 0x24, 0x5F, 0xA2, - 0x8C, 0xE5, 0xB0, 0xAC, 0x8C, 0x63, 0x09, 0x50, 0x49, 0x04, 0x27, 0xD5, - 0x2B, 0xA5, 0xA1, 0x8C, 0x86, 0x8B, 0x3D, 0x19, 0xC6, 0x39, 0x88, 0xB8, - 0xB4, 0x2B, 0x4C, 0x5D, 0x6B, 0x9C, 0x36, 0xA6, 0x7A, 0x1A, 0xA7, 0x71, - 0xE8, 0x97, 0x78, 0x1C, 0x03, 0xDA, 0x0D, 0xA3, 0xE9, 0xF6, 0x5F, 0x63, - 0x2E, 0x9B, 0x6C, 0x86, 0xB9, 0x7C, 0x3D, 0xD2, 0xC9, 0x90, 0xCA, 0x5F, - 0x48, 0x5E, 0x1C, 0x11, 0x88, 0xCA, 0xBF, 0x79, 0xB5, 0xBF, 0x2D, 0xED, - 0xFE, 0x4D, 0xC6, 0x2C, 0xFB, 0x8E, 0x0E, 0x42, 0x53, 0x8C, 0xB2, 0x07, - 0x92, 0xFF, 0xEC, 0x6B, 0xAA, 0xC5, 0xAE, 0x25, 0x09, 0xEA, 0xBB, 0x82, - 0x5E, 0x86, 0x63, 0xD2, 0xF5, 0x59, 0x8F, 0x26, 0xF5, 0x98, 0x17, 0xE4, - 0x6A, 0x89, 0x28, 0x2B, 0xF5, 0x8A, 0x5E, 0x96, 0x1C, 0x8D, 0xBE, 0x30, - 0x47, 0xE6, 0x75, 0x84, 0x79, 0xFE, 0xF1, 0x35, 0xDD, 0x70, 0x7E, 0xCA, - 0xC9, 0x1F, 0xD8, 0x03, 0x26, 0xEA, 0x48, 0x39, 0x68, 0xFF, 0x34, 0x8B, - 0x58, 0xC6, 0x7C, 0x68, 0x54, 0x1A, 0x03, 0x17, 0x55, 0x23, 0xF9, 0xA8, - 0x66, 0x04, 0x6A, 0xB4, 0x3C, 0xA9, 0xDB, 0x46, 0x5C, 0x48, 0xEB, 0xB2, - 0x0D, 0x74, 0x67, 0x30, 0xD6, 0x2D, 0xFF, 0x30, 0x6D, 0xB5, 0x66, 0x66, - 0x7C, 0xE2, 0x8B, 0xB0, 0xB6, 0x08, 0xFE, 0x2F, 0x05, 0xC4, 0x26, 0x33, - 0x1F, 0x40, 0xC3, 0x07, 0x04, 0xAE, 0xFC, 0xC1, 0x23, 0xE5, 0x31, 0xEA, - 0x16, 0x63, 0xB5, 0x9C, 0xD8, 0x2D, 0xC1, 0xCE, 0x46, 0xBC, 0x4C, 0x88, - 0x7C, 0xBC, 0x86, 0xC5, 0x89, 0x69, 0x93, 0x13, 0x97, 0x0C, 0x05, 0xF3, - 0x7C, 0x9D, 0x23, 0xC2, 0x81, 0x2C, 0xB9, 0x98, 0x05, 0x3D, 0x1B, 0x67, - 0xDA, 0x50, 0x04, 0xD4, 0x79, 0x8A, 0x97, 0x63, 0xE5, 0xAF, 0xA4, 0xFD, - 0x3D, 0x4D, 0x17, 0x3D, 0x8B, 0x9C, 0xA8, 0xEF, 0xA1, 0x42, 0x62, 0xFE, - 0xD0, 0xD3, 0x86, 0xBE, 0x8D, 0xCB, 0x54, 0x02, 0xCD, 0x4D, 0xBF, 0xA9, - 0xC2, 0x74, 0xBC, 0x4C, 0x82, 0x5A, 0x0A, 0xF9, 0xC6, 0x6C, 0xD1, 0x59, - 0x2B, 0x8F, 0xED, 0x51, 0xAF, 0xA6, 0x17, 0x4A, 0xBB, 0xBD, 0xE4, 0x1B, - 0xA2, 0x40, 0xC9, 0xAB, 0x7F, 0xE0, 0x59, 0x19, 0x98, 0xCE, 0x84, 0x51, - 0x35, 0x3F, 0x49, 0x0E, 0x9F, 0x13, 0xD3, 0x43, 0xAF, 0x98, 0xD7, 0x8A, - 0x8E, 0x2E, 0x88, 0x02, 0x4C, 0x17, 0x08, 0x9F, 0xFD, 0x4C, 0xF7, 0x9F, - 0x38, 0x74, 0x4E, 0x39, 0xCF, 0x93, 0xC3, 0x0A, 0xB2, 0x9B, 0xBF, 0xE4, - 0xAE, 0xA5, 0x6D, 0x7F, 0x1A, 0x62, 0x16, 0x05, 0x9C, 0x10, 0xF4, 0x81, - 0x6F, 0xA7, 0xDF, 0xE8, 0x95, 0xC8, 0x88, 0x8A, 0x11, 0xEB, 0x56, 0xC6, - 0x27, 0xE0, 0x92, 0x45, 0x87, 0x6F, 0x63, 0x11, 0x1B, 0x5C, 0xD8, 0x4E, - 0x13, 0xAA, 0xB5, 0x04, 0x15, 0xCD, 0xF6, 0x66, 0x1C, 0x7C, 0x62, 0x3A, - 0x6F, 0x73, 0xCF, 0x8B, 0xAB, 0x3A, 0x42, 0x5E, 0x1F, 0x58, 0x3E, 0xF2, - 0x4C, 0xAF, 0xCB, 0x7A, 0x0E, 0x0C, 0xAB, 0xED, 0x04, 0xF6, 0xC2, 0x91, - 0xAC, 0x8D, 0x30, 0xF1, 0x2A, 0x43, 0x53, 0x02, 0x5C, 0xF5, 0x92, 0x21, - 0x50, 0x56, 0x2E, 0x38, 0x7C, 0x6E, 0x48, 0xDE, 0x81, 0x0E, 0x41, 0x3B, - 0xA0, 0x74, 0xFC, 0x63, 0xC3, 0x3D, 0x8E, 0xC9, 0x28, 0xA2, 0xA0, 0x57, - 0x4A, 0xDC, 0xB5, 0xAA, 0x1E, 0x86, 0xA2, 0x6C, 0x55, 0xF7, 0xC9, 0x1F, - 0x28, 0x6B, 0xB5, 0xD6, 0x98, 0x25, 0x32, 0xE0, 0xA5, 0x29, 0xC8, 0xA6, - 0xFE, 0x95, 0xC0, 0xA5, 0xFE, 0x82, 0x32, 0xD5, 0xC0, 0xFE, 0x63, 0x37, - 0xBD, 0x57, 0x42, 0x53, 0xF6, 0xF9, 0x6A, 0x2C, 0x88, 0x71, 0xDC, 0xB5, - 0x28, 0xF0, 0x18, 0x7E, 0x45, 0xF0, 0xB2, 0x19, 0x15, 0x1C, 0x2D, 0x1A, - 0xD2, 0xF4, 0xAD, 0xDB, 0xAF, 0x23, 0x07, 0xA1, 0x3F, 0xDE, 0x97, 0xA5, - 0x1A, 0xD2, 0x7E, 0x61, 0x8D, 0x23, 0x49, 0xC6, 0x22, 0x0E, 0xE0, 0xD9, - 0x40, 0xC5, 0xE2, 0xD7, 0x0C, 0xDC, 0xD1, 0x50, 0x45, 0xC3, 0x74, 0x64, - 0xD4, 0xCC, 0x11, 0xEC, 0x1F, 0x5E, 0x7E, 0x67, 0x76, 0x73, 0x3E, 0x55, - 0x43, 0x44, 0x31, 0x1B, 0xBD, 0xF3, 0xA9, 0x7C, 0x72, 0xCE, 0x83, 0x2E, - 0x5D, 0x2B, 0xF6, 0x2C, 0xA5, 0xB2, 0xC6, 0xB1, 0x71, 0x1E, 0xEA, 0x33, - 0xF1, 0x83, 0x2A, 0x21, 0x65, 0x13, 0xFE, 0xA0, 0x21, 0xB7, 0x44, 0x07, - 0x04, 0xF1, 0x46, 0x1D, 0xEF, 0x71, 0x80, 0x27, 0x42, 0x5F, 0x90, 0x55, - 0x54, 0x84, 0x60, 0x37, 0xCF, 0xFB, 0xFA, 0x36, 0x4D, 0x92, 0x63, 0x82, - 0x3D, 0xE8, 0xC2, 0x09, 0xE7, 0xBE, 0xC3, 0x7D, 0x4C, 0x17, 0xF1, 0x5C, - 0x0F, 0xB6, 0x57, 0x25, 0x5D, 0xC0, 0x0C, 0x63, 0xE1, 0xF2, 0x9F, 0x69, - 0xD6, 0x35, 0x73, 0xDC, 0xB3, 0x1D, 0xDA, 0x72, 0x5E, 0xB7, 0x12, 0x3B, - 0x43, 0xF7, 0xB4, 0xCC, 0x48, 0xAC, 0xE2, 0xB3, 0xFB, 0x15, 0x91, 0x03, - 0xFB, 0xDF, 0x2A, 0x4D, 0x70, 0x88, 0x75, 0x02, 0x18, 0x53, 0xF9, 0x9F, - 0xC1, 0x9C, 0x0C, 0x5B, 0x5A, 0x59, 0x1B, 0x5F, 0x4A, 0xE5, 0x39, 0x20, - 0xAD, 0x28, 0xC7, 0x80, 0x77, 0x13, 0x8E, 0x61, 0xBD, 0xE8, 0x80, 0x37, - 0x41, 0x6E, 0xE7, 0x75, 0xCA, 0x41, 0xC6, 0xA9, 0xCC, 0x1C, 0xAF, 0xFF, - 0x97, 0xCC, 0xFE, 0xF2, 0xED, 0x85, 0xD8, 0xB1, 0x4F, 0xF3, 0x7A, 0xE7, - 0xF9, 0x18, 0x41, 0xD7, 0x49, 0xA2, 0x1B, 0xBC, 0xE2, 0x89, 0x93, 0x54, - 0x5A, 0xF1, 0x5E, 0xA3, 0x66, 0x51, 0x8C, 0x66, 0x7A, 0xF7, 0x44, 0xD7, - 0xFD, 0x90, 0xF1, 0xEE, 0x3E, 0xF6, 0x0E, 0xA5, 0xE9, 0xDB, 0xD0, 0xDB, - 0x58, 0xA7, 0x45, 0xA9, 0x34, 0xD8, 0x44, 0xA3, 0x65, 0x29, 0xCB, 0x61, - 0x8E, 0xAD, 0x7F, 0x95, 0xBA, 0x71, 0xFB, 0xB6, 0x93, 0x5F, 0x6F, 0xFC, - 0xC1, 0xAA, 0xE6, 0x9F, 0x73, 0x55, 0x69, 0xE7, 0x35, 0x12, 0xCA, 0x26, - 0x56, 0x39, 0x79, 0xFB, 0xAB, 0x53, 0x00, 0xF0, 0x8F, 0x72, 0xBF, 0x2D, - 0x30, 0x05, 0x67, 0x65, 0x4B, 0xD3, 0x6A, 0xF7, 0x8B, 0x79, 0x41, 0xFA, - 0x89, 0x2A, 0xDB, 0x0C, 0xA1, 0x10, 0xFC, 0x3A, 0x12, 0x63, 0x55, 0xB0, - 0x3A, 0xB5, 0x30, 0xDB, 0x08, 0x76, 0xAF, 0xF6, 0x1A, 0xD9, 0xAE, 0x51, - 0x81, 0xE3, 0x84, 0x90, 0x70, 0x2C, 0x1B, 0xA7, 0x75, 0xA3, 0x44, 0xD2, - 0x9B, 0x71, 0x7C, 0x39, 0x0E, 0x1E, 0x32, 0x7D, 0x6B, 0x40, 0x90, 0xEE, - 0xEF, 0x85, 0xB3, 0x21, 0x86, 0x2B, 0xE7, 0x53, 0x70, 0x7B, 0xB4, 0xE2, - 0x2D, 0xBE, 0x1F, 0x61, 0xEA, 0x7D, 0x31, 0x4E, 0x07, 0xB6, 0xD3, 0x20, - 0x82, 0x2F, 0x7E, 0xEA, 0x63, 0x8E, 0x31, 0xD8, 0xCE, 0x3C, 0x50, 0x58, - 0x58, 0x99, 0x3D, 0x77, 0x18, 0x6C, 0xF6, 0x64, 0xB2, 0xB8, 0xBF, 0x39, - 0xE0, 0x2C, 0x47, 0xAF, 0xBC, 0xDF, 0xC9, 0xE3, 0x4A, 0x92, 0xB3, 0xAB, - 0x28, 0x4C, 0x07, 0x32, 0x53, 0xDC, 0x33, 0x25, 0xC8, 0xD6, 0xAC, 0xE9, - 0xFF, 0x17, 0xF1, 0x63, 0xD6, 0x03, 0x6A, 0x81, 0xEE, 0x3F, 0xDA, 0xAE, - 0xD1, 0x5D, 0xAD, 0x92, 0x51, 0x99, 0xA8, 0x5C, 0xDA, 0x47, 0x3A, 0xDB, - 0x94, 0x9D, 0x89, 0xA2, 0x24, 0x88, 0xB0, 0xBB, 0x22, 0x46, 0x8F, 0x03, - 0xB0, 0x9C, 0xB9, 0xDE, 0xD6, 0xCA, 0xEA, 0xDE, 0x6B, 0x97, 0xA9, 0xB0, - 0xB3, 0xDB, 0xA6, 0x5E, 0xAD, 0xEC, 0x12, 0x23, 0x04, 0x4D, 0x7B, 0xF2, - 0x7C, 0x0A, 0xE2, 0xB3, 0xA0, 0x81, 0x58, 0x8F, 0xC0, 0xA6, 0xE9, 0xDF, - 0x7F, 0xA7, 0x89, 0x6E, 0x2D, 0x68, 0x23, 0xF1, 0x29, 0xB7, 0xD7, 0xDC, - 0x63, 0x4A, 0xCB, 0x83, 0x24, 0xC0, 0xE4, 0x54, 0x5C, 0x67, 0x12, 0xB3, - 0xFB, 0x6A, 0x1E, 0x37, 0xE0, 0xBE, 0x85, 0xDA, 0x7C, 0xB4, 0x8B, 0xEC, - 0xE8, 0xBB, 0x08, 0x84, 0xD9, 0x90, 0x4B, 0x56, 0xFA, 0x2F, 0xA2, 0x36, - 0xC8, 0x97, 0xFC, 0x3E, 0xC0, 0x9C, 0x28, 0x5D, 0xFD, 0x54, 0xD8, 0x53, - 0x7D, 0x41, 0x4F, 0x15, 0x09, 0xA6, 0x3F, 0xAF, 0x13, 0x31, 0xE6, 0xE8, - 0x45, 0x8C, 0x64, 0xFC, 0xF6, 0x53, 0x1C, 0x2B, 0x25, 0xDF, 0x15, 0x93, - 0x06, 0xE1, 0x32, 0x45, 0x9A, 0x29, 0x6B, 0xD5, 0x11, 0x27, 0xA7, 0x2E, - 0x98, 0xA8, 0x30, 0xD7, 0x93, 0x37, 0xDE, 0xFE, 0xC2, 0xE7, 0xC0, 0xAE, - 0x5E, 0x26, 0x04, 0xA4, 0x57, 0x7A, 0x3F, 0xD7, 0x0E, 0xB6, 0x27, 0xE1, - 0xCF, 0xBA, 0x27, 0xC3, 0x84, 0xFE, 0xD5, 0x4A, 0x87, 0xF0, 0xB5, 0x1C, - 0x44, 0x3E, 0x17, 0xC9, 0x99, 0x8F, 0x85, 0xE6, 0xDA, 0x41, 0x94, 0xAB, - 0x71, 0xC9, 0x0B, 0x9E, 0xA8, 0xF0, 0x5A, 0x01, 0x14, 0x8E, 0x15, 0x05, - 0xB7, 0xE0, 0x90, 0xDD, 0x33, 0x9E, 0x82, 0x3B, 0x14, 0x57, 0xBD, 0xD1, - 0xC7, 0xC1, 0x6D, 0xDE, 0x3F, 0x4B, 0x4E, 0xD6, 0xF4, 0x49, 0xED, 0xAF, - 0x6C, 0x6C, 0xE3, 0x51, 0x0E, 0xDF, 0x15, 0xAF, 0xCD, 0x7F, 0xBF, 0x64, - 0xF4, 0x66, 0x0F, 0x25, 0x86, 0xDA, 0xEF, 0xDF, 0xBB, 0x75, 0x92, 0xAD, - 0x70, 0x42, 0x1E, 0xC7, 0x23, 0x2C, 0xC1, 0x49, 0x4B, 0x9B, 0xAC, 0x7C, - 0x3C, 0x7D, 0xFA, 0xA2, 0x80, 0xCC, 0x0E, 0xDC, 0xD2, 0xAD, 0xDA, 0xBD, - 0xF2, 0xFB, 0xAD, 0xCA, 0x96, 0x68, 0x19, 0xAE, 0x7E, 0xDB, 0x43, 0xF3, - 0xEF, 0x52, 0x3F, 0x95, 0x3E, 0x5C, 0x9A, 0x9E, 0x54, 0x8F, 0x47, 0x27, - 0xEC, 0xC1, 0xBF, 0x31, 0x7A, 0xDB, 0x6B, 0xBE, 0x40, 0x98, 0x8A, 0x33, - 0xD8, 0x42, 0x97, 0x0C, 0x51, 0x3B, 0xD7, 0xB1, 0x95, 0xF8, 0xEF, 0x3B, - 0xC8, 0xD8, 0x4C, 0x94, 0x0D, 0xDE, 0xC4, 0x09, 0x77, 0x52, 0x6E, 0xF2, - 0xEF, 0x50, 0x9A, 0x83, 0x48, 0x6D, 0x69, 0x91, 0x33, 0x1A, 0x56, 0x98, - 0xC0, 0x12, 0x86, 0xA8, 0xE3, 0xDE, 0x2E, 0xE9, 0x43, 0xB3, 0x7A, 0x71, - 0x40, 0xFA, 0x34, 0xF7, 0xA6, 0xC3, 0x2F, 0xBB, 0x16, 0x6B, 0x91, 0x01, - 0x58, 0xB0, 0x8D, 0x7A, 0x54, 0x62, 0x59, 0x3E, 0xC3, 0x2F, 0x3D, 0x48, - 0xFB, 0x6C, 0x85, 0xD3, 0xD7, 0xB0, 0xFD, 0x4E, 0xCA, 0x3A, 0xEE, 0x37, - 0xFF, 0xA1, 0xA8, 0xB0, 0x8F, 0xF8, 0x3F, 0xC7, 0x88, 0x07, 0x30, 0x1C, - 0x81, 0x56, 0x63, 0xC2, 0x97, 0x05, 0x8C, 0x7A, 0x01, 0xBF, 0x14, 0x50, - 0xA7, 0x87, 0x9A, 0x86, 0x79, 0x59, 0x45, 0x0F, 0x78, 0xD4, 0x0D, 0x1E, - 0x3B, 0xE0, 0xF1, 0x14, 0x11, 0x55, 0x04, 0xE8, 0x10, 0x34, 0xDC, 0xF8, - 0x3C, 0x12, 0xC5, 0x93, 0x64, 0x47, 0x70, 0x84, 0x89, 0x5F, 0xAF, 0xC3, - 0x6B, 0xB2, 0x89, 0xAE, 0xED, 0xF6, 0x6A, 0x55, 0xC5, 0x50, 0xC5, 0xDE, - 0x02, 0x70, 0xF9, 0x03, 0x67, 0xA4, 0x82, 0xDE, 0x0D, 0x38, 0x18, 0xDF, - 0x5D, 0x24, 0x8D, 0x00, 0x8A, 0xF5, 0xA3, 0x01, 0xC6, 0xE3, 0xA6, 0x17, - 0x16, 0xB9, 0xA1, 0x8E, 0x9C, 0x08, 0x9B, 0x2A, 0x20, 0x22, 0x69, 0x50, - 0x91, 0x10, 0x98, 0x2C, 0x19, 0x94, 0xE6, 0xE9, 0x2C, 0x0F, 0xDD, 0x0A, - 0x5A, 0xF8, 0xAD, 0xE5, 0xBE, 0x65, 0x3C, 0xD3, 0x75, 0x1C, 0x75, 0x77, - 0xC2, 0xF7, 0x23, 0x7E, 0x6E, 0x62, 0xAF, 0xD2, 0x5F, 0x00, 0xFC, 0xD0, - 0xF9, 0xF1, 0xCF, 0x7E, 0x11, 0xE6, 0xF5, 0x7E, 0xC0, 0x46, 0xCA, 0xEF, - 0x1C, 0x5F, 0x62, 0x2F, 0x6D, 0xF9, 0xF4, 0x88, 0x64, 0xD2, 0xE0, 0x1F, - 0x04, 0x33, 0xB9, 0xBA, 0x99, 0xC9, 0x9E, 0xD9, 0x48, 0x11, 0x6B, 0x2C, - 0x35, 0x79, 0x36, 0x40, 0xDF, 0xB8, 0x3C, 0x2F, 0xAA, 0x35, 0x91, 0x43, - 0xD2, 0x23, 0x8F, 0x1E, 0x24, 0x4E, 0x29, 0xA8, 0x9F, 0x3F, 0xF9, 0xF4, - 0x5E, 0xAC, 0xBF, 0x39, 0xE2, 0x7F, 0x12, 0x4C, 0x95, 0xBC, 0xCE, 0x61, - 0xF3, 0xEF, 0xD0, 0x30, 0x60, 0x6B, 0xFD, 0xD6, 0xF8, 0x15, 0x25, 0x56, - 0x57, 0xC2, 0xF5, 0x84, 0xE4, 0xDF, 0xE8, 0x28, 0xBF, 0x81, 0x98, 0x5D, - 0xFA, 0x28, 0x66, 0xF5, 0xD5, 0x43, 0x71, 0x17, 0xBF, 0x19, 0xA2, 0x5F, - 0xB6, 0xDB, 0x14, 0x93, 0xBC, 0x30, 0xC4, 0x3E, 0x11, 0x01, 0xC5, 0x04, - 0x30, 0x90, 0xBE, 0xA5, 0x85, 0xC4, 0x1B, 0xAD, 0x68, 0xCA, 0xBB, 0x7B, - 0x8B, 0x45, 0x29, 0xF4, 0xA3, 0xCE, 0x72, 0x36, 0x79, 0x1B, 0xE6, 0x4D, - 0xD7, 0x52, 0xBA, 0xD7, 0x2E, 0x61, 0x97, 0xDB, 0x5B, 0xA5, 0x47, 0x1F, - 0x6F, 0xE0, 0x29, 0x25, 0xBC, 0xA1, 0xCF, 0x17, 0xC5, 0x32, 0xAA, 0x2B, - 0xB2, 0x52, 0x89, 0x32, 0xCB, 0xFB, 0x1A, 0xCE, 0x4A, 0x2B, 0x98, 0x7F, - 0xB5, 0x9B, 0x72, 0x42, 0x08, 0xB4, 0x52, 0x83, 0xB5, 0x98, 0x9D, 0xA0, - 0x04, 0x50, 0x3B, 0xFD, 0x4B, 0x18, 0xAF, 0x9D, 0xE0, 0x70, 0xE7, 0x0B, - 0x84, 0x09, 0x93, 0x51, 0x35, 0xE1, 0xC0, 0xB2, 0xD3, 0xE1, 0x66, 0x17, - 0xB1, 0xDC, 0xE4, 0x1D, 0xBF, 0xE6, 0x76, 0x53, 0x1B, 0x05, 0xB2, 0x47, - 0x02, 0x0B, 0xAB, 0x70, 0x52, 0x1B, 0x1C, 0x5B, 0xAF, 0x84, 0x0F, 0x12, - 0xCD, 0xB9, 0x3F, 0xB9, 0x15, 0xC6, 0x56, 0xBB, 0xD7, 0x80, 0xBB, 0x94, - 0xFB, 0xFB, 0x7C, 0xB9, 0xCF, 0xBC, 0x0E, 0xCB, 0xA8, 0x7E, 0x4A, 0xF3, - 0xBA, 0x73, 0xCD, 0x9E, 0x14, 0x0D, 0x12, 0x17, 0x91, 0xF6, 0xF4, 0x9D, - 0x14, 0x13, 0x91, 0x8E, 0x6D, 0x62, 0xF3, 0x27, 0xA1, 0x01, 0x85, 0xD2, - 0x7A, 0xF5, 0x60, 0x13, 0xEE, 0xDC, 0x75, 0xF9, 0xFF, 0x23, 0x2D, 0xFE, - 0xE7, 0x69, 0x40, 0x8B, 0x0A, 0xA8, 0xFF, 0x86, 0x2A, 0x6D, 0x0D, 0xD3, - 0x9D, 0x14, 0xA3, 0xDF, 0xB8, 0x1C, 0x44, 0xE9, 0x7E, 0x9D, 0x73, 0x6B, - 0x0C, 0xF2, 0x0F, 0x45, 0xA5, 0xCF, 0x46, 0xDA, 0xDC, 0xF6, 0x24, 0xC6, - 0x72, 0xD0, 0x91, 0x6E, 0x38, 0x76, 0x1F, 0xA7, 0xF9, 0x8F, 0x9A, 0xFC, - 0x16, 0x1E, 0xF7, 0x6A, 0x82, 0x49, 0x1C, 0xC0, 0xDE, 0x8A, 0xDA, 0x62, - 0x86, 0x06, 0x6C, 0xF6, 0x8E, 0xA3, 0xE1, 0x65, 0x32, 0x7B, 0x65, 0x00, - 0x99, 0xEA, 0xAF, 0x86, 0x03, 0xDE, 0xCE, 0xF9, 0xE6, 0xAE, 0x16, 0x2D, - 0x9D, 0x90, 0xB4, 0x63, 0x96, 0xA6, 0x7E, 0xEE, 0x06, 0xE7, 0x69, 0x84, - 0x40, 0xDE, 0x94, 0x20, 0x7C, 0xCF, 0x37, 0x21, 0x6E, 0x3D, 0xB0, 0xED, - 0x9C, 0x9E, 0xAE, 0x56, 0x5D, 0xD7, 0x54, 0x51, 0x80, 0xA7, 0xCB, 0xB8, - 0xC2, 0x02, 0x45, 0xF3, 0x5B, 0x15, 0xA6, 0xEC, 0x5A, 0x10, 0xB2, 0xCC, - 0xC6, 0x4D, 0xCD, 0xE5, 0xF5, 0xB5, 0x86, 0xC3, 0x73, 0x00, 0xDB, 0x5B, - 0xE7, 0x0E, 0xF8, 0x51, 0x05, 0x4B, 0x93, 0xB3, 0xD0, 0x78, 0x12, 0x1E, - 0x86, 0xCD, 0xBB, 0xE4, 0x80, 0xF7, 0x72, 0xF5, 0xC7, 0x95, 0xF5, 0x62, - 0xFA, 0x27, 0x9B, 0x9A, 0x24, 0xDD, 0x7E, 0xE3, 0xCE, 0x7C, 0x96, 0x13, - 0x29, 0xD2, 0xCD, 0xB5, 0x31, 0xD8, 0x8D, 0xE9, 0x8D, 0x12, 0xD5, 0x49, - 0x76, 0xFD, 0xCC, 0xCC, 0x8B, 0x30, 0x6D, 0x7D, 0x33, 0xC1, 0x0B, 0x0B, - 0xC8, 0xD3, 0xA2, 0x3A, 0x98, 0xAB, 0x20, 0x50, 0x25, 0x44, 0xC4, 0x34, - 0xC0, 0x82, 0x64, 0x94, 0x44, 0x19, 0x33, 0xCB, 0x18, 0x5A, 0x7B, 0x33, - 0x38, 0xED, 0xC6, 0x5F, 0xD4, 0x85, 0xD1, 0x1D, 0xDD, 0x1C, 0xD7, 0x43, - 0xFF, 0x67, 0x28, 0xD2, 0xC1, 0x8E, 0x3D, 0x19, 0x21, 0xC1, 0x8D, 0x00, - 0xCE, 0x0C, 0x2C, 0x83, 0x89, 0x11, 0x14, 0xC1, 0x59, 0x29, 0x63, 0x2D, - 0xC6, 0x46, 0xD0, 0x52, 0xFB, 0x02, 0xEC, 0xF3, 0x9C, 0xF2, 0x64, 0xB4, - 0x37, 0x99, 0x5C, 0xF6, 0x57, 0xC9, 0x4A, 0x51, 0x18, 0x08, 0x6E, 0x8B, - 0x9D, 0xEB, 0xA5, 0x8F, 0xE4, 0x85, 0x29, 0x4C, 0x5F, 0xD8, 0x41, 0x2A, - 0x62, 0xAB, 0x25, 0x42, 0xEE, 0x90, 0x64, 0x8E, 0x93, 0x64, 0x87, 0x49, - 0x98, 0x7C, 0x0E, 0xDF, 0xAC, 0xC5, 0x79, 0x2D, 0xC8, 0x53, 0x45, 0x2B, - 0xCF, 0x2F, 0x0B, 0xB6, 0x5B, 0x4C, 0x45, 0x38, 0x96, 0xE3, 0x70, 0x91, - 0x8E, 0xAC, 0x51, 0x67, 0xA2, 0xDB, 0x83, 0x55, 0x4C, 0x9D, 0xEB, 0x49, - 0xE4, 0x37, 0x68, 0x9B, 0x58, 0xDC, 0x4B, 0xEC, 0xB5, 0xC4, 0xDC, 0x13, - 0xB1, 0x54, 0x92, 0xA5, 0x67, 0x75, 0x98, 0x43, 0x71, 0x27, 0xFF, 0xA5, - 0x6E, 0xE3, 0x12, 0x8C, 0xF6, 0xCB, 0x18, 0x21, 0x7C, 0x0A, 0x4B, 0xB3, - 0xA5, 0xF4, 0xEA, 0x09, 0x2C, 0x1C, 0x57, 0xBF, 0x8F, 0xA6, 0x94, 0xDD, - 0x19, 0x35, 0x4F, 0x17, 0xA7, 0x55, 0x45, 0xBD, 0xC8, 0x32, 0x72, 0x9E, - 0x05, 0xD6, 0xBA, 0x3C, 0x60, 0x2E, 0xE6, 0x83, 0x12, 0xC4, 0xE2, 0x80, - 0x03, 0xDE, 0xBB, 0x88, 0xFB, 0x7F, 0xAD, 0x3B, 0x9C, 0xD8, 0xD0, 0x8E, - 0x4C, 0x52, 0x4D, 0x7A, 0xB8, 0x89, 0xB0, 0xBC, 0x7F, 0x94, 0x81, 0xBB, - 0x6C, 0xE7, 0x5E, 0x1C, 0xFA, 0x69, 0x81, 0xB6, 0x46, 0xC2, 0x3B, 0x70, - 0xB8, 0x02, 0xA9, 0x9F, 0x17, 0x0F, 0xF2, 0x31, 0x17, 0x82, 0xFF, 0x17, - 0x02, 0xB9, 0x14, 0xBB, 0xE7, 0x1B, 0x1B, 0x4B, 0x92, 0x14, 0xE4, 0xE7, - 0x6D, 0x6D, 0x73, 0xB8, 0xCB, 0x5D, 0x92, 0x27, 0x7D, 0xDA, 0x00, 0x69, - 0x70, 0x15, 0x3C, 0x0F, 0xF0, 0xDE, 0x5F, 0xCD, 0x1A, 0x17, 0x86, 0x2A, - 0x58, 0xB5, 0x4B, 0x3E, 0xAB, 0x4D, 0x8D, 0x75, 0x4D, 0x40, 0x7F, 0x84, - 0x1D, 0x19, 0x17, 0x1E, 0x41, 0x4C, 0xB9, 0xEF, 0x61, 0x46, 0x80, 0xAD, - 0x5D, 0xDB, 0x01, 0x1E, 0x73, 0xED, 0x42, 0xDD, 0x35, 0x07, 0x8B, 0xD0, - 0xEC, 0x2E, 0x77, 0x35, 0xB8, 0xFC, 0x2E, 0xE5, 0x8D, 0x30, 0x96, 0x0D, - 0x88, 0x7F, 0x52, 0xE7, 0x6B, 0x11, 0xF0, 0xD2, 0x6A, 0x6F, 0x89, 0x66, - 0x3F, 0x3A, 0x94, 0x98, 0x64, 0x0F, 0x0E, 0x77, 0xF2, 0x04, 0x96, 0xD9, - 0xAA, 0x36, 0x0B, 0x39, 0xEE, 0x1F, 0x1D, 0x10, 0x23, 0xD0, 0xFA, 0x0B, - 0xE1, 0x88, 0xED, 0x97, 0x73, 0xFF, 0xCC, 0xC8, 0xD6, 0x49, 0x4A, 0x24, - 0xC1, 0x49, 0x78, 0x25, 0x7A, 0x26, 0xD4, 0x6A, 0x9E, 0x4C, 0x98, 0xFA, - 0x90, 0xB4, 0xD4, 0x07, 0xA4, 0xD2, 0x5E, 0x8B, 0x6D, 0xB1, 0x03, 0xBD, - 0xCE, 0x13, 0x3B, 0x3E, 0x78, 0x4F, 0xFE, 0xCB, 0xB6, 0x53, 0xB7, 0x27, - 0xAA, 0xC4, 0x35, 0xCD, 0xD8, 0xD9, 0x96, 0x78, 0x9A, 0x1D, 0xE5, 0x97, - 0xAC, 0xBE, 0x31, 0x8A, 0x77, 0x65, 0x67, 0x61, 0x3A, 0xF0, 0x0E, 0x04, - 0x54, 0x1C, 0xE4, 0x5F, 0xED, 0x06, 0xBA, 0xFB, 0x34, 0x59, 0xB2, 0x91, - 0x33, 0xED, 0xF4, 0x52, 0xFE, 0x42, 0xFB, 0xAE, 0xEF, 0x46, 0xE5, 0x01, - 0x95, 0x6F, 0xB7, 0xE6, 0x8A, 0xEE, 0x45, 0xE5, 0xAF, 0x13, 0x8B, 0x76, - 0x74, 0xC3, 0x31, 0x36, 0xD2, 0x84, 0x1C, 0xA9, 0x4D, 0xF1, 0x1E, 0xA7, - 0x97, 0xF4, 0x4B, 0xD6, 0xA2, 0xF8, 0x90, 0x31, 0x2F, 0xCC, 0x70, 0x9F, - 0x59, 0x98, 0x6F, 0x8F, 0x6F, 0x81, 0x44, 0x01, 0x70, 0x25, 0x6B, 0x6A, - 0x86, 0xF9, 0x76, 0x87, 0x37, 0xDB, 0x23, 0x5A, 0xE1, 0x1B, 0x83, 0x8C, - 0x87, 0x2C, 0x21, 0xC2, 0x8B, 0x76, 0x37, 0x1A, 0x5D, 0x96, 0xFB, 0x5B, - 0x9E, 0xF7, 0xA3, 0xFD, 0x11, 0x8F, 0x87, 0x0A, 0xD5, 0xE2, 0x13, 0x33, - 0xCC, 0x02, 0xB5, 0x9B, 0x31, 0x7F, 0x50, 0x4B, 0xED, 0x88, 0x74, 0xCF, - 0x0A, 0x04, 0x2C, 0x92, 0xE2, 0xE7, 0x79, 0x00, 0x68, 0xFF, 0xC2, 0x5B, - 0xA5, 0x76, 0x40, 0xD0, 0x63, 0x53, 0x39, 0x24, 0x48, 0xB2, 0x9F, 0x34, - 0x76, 0xD1, 0x68, 0x75, 0x47, 0x0E, 0x51, 0x90, 0x01, 0x53, 0x05, 0x3E, - 0x88, 0xE8, 0x1A, 0x10, 0x85, 0x52, 0x2D, 0x57, 0x12, 0x17, 0x83, 0x4D, - 0x11, 0xBB, 0x63, 0x0E, 0x59, 0x61, 0xCA, 0xAC, 0x3F, 0xE0, 0x18, 0x04, - 0x68, 0xDC, 0x7D, 0xC7, 0xD8, 0xF2, 0x5D, 0xB6, 0x7C, 0x86, 0x0C, 0x03, - 0xD6, 0x7E, 0xA6, 0x2C, 0x01, 0x5F, 0x7E, 0xFF, 0x9B, 0x0C, 0x26, 0xA9, - 0x9C, 0x5D, 0x9D, 0x00, 0xCD, 0x59, 0x4C, 0x3A, 0xD6, 0x82, 0x85, 0x8B, - 0x65, 0x41, 0x85, 0x40, 0xE0, 0xE9, 0x0B, 0x93, 0xE5, 0x32, 0x24, 0xDB, - 0x94, 0x74, 0x94, 0x07, 0x47, 0x1B, 0x01, 0x6E, 0x4B, 0x5D, 0x26, 0x31, - 0x42, 0xBE, 0x38, 0x08, 0x2B, 0x19, 0xC1, 0x51, 0xCC, 0x51, 0xFC, 0x62, - 0xFE, 0x09, 0x08, 0xD3, 0x58, 0x6C, 0x8A, 0x2D, 0x35, 0xDE, 0x82, 0xD6, - 0x4F, 0xEB, 0x65, 0x9F, 0xA1, 0xC9, 0xC3, 0x7A, 0x70, 0x9F, 0xAA, 0xF3, - 0x97, 0xF3, 0xE9, 0xFC, 0x3B, 0x84, 0x1D, 0xE5, 0x35, 0xA0, 0x05, 0xEE, - 0xAB, 0x78, 0xDB, 0xF0, 0xAD, 0xEC, 0x1E, 0xE9, 0x86, 0x96, 0x46, 0x45, - 0x44, 0xD5, 0x28, 0x7D, 0x83, 0xB0, 0x83, 0x69, 0xBC, 0x60, 0x5E, 0x14, - 0x28, 0xCA, 0xA7, 0x3C, 0xEF, 0xDE, 0x74, 0x89, 0x6D, 0xBF, 0x1B, 0x8F, - 0x59, 0x8E, 0x96, 0xD5, 0xCE, 0x19, 0x41, 0x92, 0x88, 0x2A, 0xE8, 0x1B, - 0x1D, 0x9E, 0xC1, 0x34, 0x2C, 0x3E, 0x3F, 0xBC, 0x4F, 0x72, 0x61, 0x44, - 0x21, 0xCA, 0x08, 0x26, 0x0D, 0x28, 0xDC, 0x3D, 0x6F, 0x33, 0x49, 0xE6, - 0x8B, 0xE6, 0xDD, 0x09, 0x6B, 0x29, 0x8B, 0xAB, 0xF6, 0x2C, 0x23, 0x7E, - 0x2B, 0x51, 0x63, 0x0F, 0x97, 0x25, 0xA1, 0x3C, 0x76, 0x39, 0x3B, 0xFB, - 0x75, 0x62, 0xA4, 0xF5, 0xC6, 0x72, 0x5E, 0xBF, 0x38, 0xA1, 0x8D, 0xB3, - 0x31, 0x0E, 0x02, 0x7A, 0x42, 0xDB, 0x92, 0xD0, 0x44, 0x85, 0x8F, 0x6E, - 0x7B, 0xCA, 0xD4, 0xE1, 0x8B, 0xC9, 0x6A, 0xC2, 0x20, 0xF7, 0x67, 0x00, - 0x39, 0xDA, 0xAA, 0xF9, 0x54, 0x77, 0xDB, 0x54, 0x76, 0x7B, 0x15, 0xBF, - 0xE3, 0x8F, 0x7E, 0x75, 0x09, 0x50, 0x1D, 0x8A, 0x82, 0x91, 0xCA, 0x7E, - 0xF3, 0x11, 0xB8, 0x1B, 0xA7, 0x11, 0x0F, 0x29, 0xA4, 0x32, 0xB7, 0xB4, - 0x66, 0x5A, 0xCE, 0xC3, 0x70, 0xCA, 0x19, 0xF1, 0x75, 0x32, 0x18, 0xCD, - 0x11, 0xCD, 0x29, 0x6F, 0x7D, 0x9D, 0x56, 0x17, 0x6F, 0xB2, 0x82, 0x75, - 0x9B, 0xE5, 0x60, 0x5F, 0x98, 0xAF, 0x2A, 0x9A, 0xBA, 0x97, 0x90, 0xC5, - 0x99, 0x73, 0xC0, 0xFD, 0x70, 0xA3, 0x14, 0xF7, 0xD8, 0xAF, 0xA4, 0x1C, - 0xEC, 0x04, 0x27, 0xD5, 0xCB, 0x95, 0xAB, 0x1E, 0x1D, 0x01, 0x33, 0xDA, - 0xC1, 0xF3, 0xF3, 0x14, 0x0E, 0xE9, 0x40, 0xCA, 0x8D, 0x16, 0xAF, 0x61, - 0x4C, 0x5B, 0x98, 0x11, 0xFE, 0x39, 0x84, 0x08, 0x29, 0x0B, 0x3C, 0xD1, - 0xC6, 0x80, 0xAB, 0x8B, 0x61, 0xD3, 0x36, 0x84, 0xAC, 0xBE, 0xD0, 0xC5, - 0x5D, 0xD8, 0x7B, 0x9B, 0xF0, 0x72, 0xC0, 0x0C, 0xFD, 0x57, 0x57, 0x75, - 0x31, 0x0D, 0x7D, 0x6E, 0xA4, 0xE8, 0xDC, 0x15, 0x73, 0x22, 0x00, 0x25, - 0xCB, 0xCA, 0x54, 0x5A, 0xB3, 0x1D, 0x27, 0x52, 0xE5, 0xF8, 0xEA, 0xA5, - 0xE7, 0x3E, 0x25, 0x8B, 0x58, 0x23, 0x93, 0xB6, 0x90, 0x62, 0x32, 0xD9, - 0xAA, 0xEC, 0x37, 0xB6, 0xC3, 0xA0, 0x92, 0xE4, 0xFB, 0xFF, 0xB3, 0xF4, - 0xBF, 0x90, 0x58, 0x51, 0x9F, 0xAC, 0xFD, 0xA7, 0x7B, 0xEA, 0x47, 0x67, - 0x5B, 0x5D, 0x1A, 0x1D, 0xED, 0xC8, 0x80, 0x19, 0x86, 0x97, 0x7D, 0x8E, - 0x70, 0x1E, 0x5B, 0xF1, 0x04, 0x21, 0xA0, 0x41, 0xBE, 0x6A, 0x6E, 0x0D, - 0x31, 0x62, 0xB7, 0xE9, 0x9F, 0xCF, 0x09, 0xC2, 0xC0, 0xC0, 0xA8, 0xE2, - 0x9A, 0x01, 0xDB, 0x0C, 0x8B, 0xC3, 0x04, 0xD3, 0xE6, 0xAE, 0x51, 0xCD, - 0xA8, 0x75, 0x51, 0xC9, 0x85, 0x87, 0x38, 0x5B, 0x6F, 0xD6, 0x7C, 0x2C, - 0x56, 0x7B, 0xE3, 0x90, 0x72, 0xC4, 0x17, 0x4D, 0x61, 0xE8, 0x82, 0x04, - 0xB4, 0x54, 0x27, 0xA1, 0xEA, 0x75, 0xB7, 0x3A, 0xA7, 0x51, 0x43, 0xB4, - 0x0C, 0xC8, 0xFB, 0x7D, 0xBD, 0x47, 0x43, 0xDC, 0xE1, 0x60, 0x09, 0x94, - 0xF1, 0xDA, 0x45, 0x6F, 0x57, 0xFB, 0x66, 0xEF, 0xA4, 0x14, 0x6F, 0x7A, - 0xAD, 0xAA, 0xE2, 0x85, 0x3D, 0xC5, 0xF5, 0x14, 0xEB, 0x7B, 0x68, 0xAE, - 0x41, 0xDF, 0xB6, 0xDD, 0x83, 0x14, 0x83, 0xAF, 0x54, 0xF8, 0x34, 0xEA, - 0x01, 0x61, 0x8D, 0x9B, 0xCC, 0xE9, 0xDB, 0x81, 0x68, 0xC2, 0x6F, 0xD2, - 0xAB, 0xF9, 0xF2, 0xC0, 0xF1, 0x29, 0x7A, 0x47, 0x4F, 0x52, 0x51, 0xDB, - 0xDA, 0x1C, 0xD3, 0x5C, 0xE8, 0x2A, 0x68, 0xFF, 0x99, 0xD1, 0x6D, 0xE8, - 0xA1, 0x90, 0x17, 0x1A, 0x2C, 0x7D, 0xB3, 0x1D, 0x8E, 0xF6, 0x84, 0xE2, - 0x3F, 0x1A, 0xD0, 0x3D, 0xE8, 0x51, 0x7B, 0xEA, 0x3E, 0xFF, 0x2B, 0x25, - 0xB7, 0x27, 0x3D, 0xA0, 0x2E, 0x10, 0xD8, 0x1C, 0x99, 0xA4, 0xE0, 0x78, - 0xA3, 0x30, 0x8E, 0x1E, 0xD2, 0xE4, 0xA1, 0x08, 0x0E, 0x9F, 0x60, 0x22, - 0xDE, 0xB3, 0x8C, 0x0F, 0xAE, 0x97, 0x21, 0x35, 0xDC, 0x8E, 0x0D, 0x65, - 0x99, 0xFA, 0xAC, 0x46, 0x79, 0x97, 0xEC, 0x58, 0x7E, 0x42, 0x45, 0x58, - 0x33, 0xAF, 0x2D, 0xE4, 0x45, 0x9F, 0x54, 0x93, 0x34, 0xCB, 0xAD, 0x10, - 0xD6, 0x61, 0x33, 0xB8, 0x5B, 0xCF, 0xB3, 0xF4, 0x68, 0x16, 0xA5, 0x98, - 0x54, 0x75, 0x95, 0x8C, 0xCD, 0xCF, 0x74, 0x29, 0x7F, 0xB5, 0xF7, 0xC9, - 0x56, 0x6E, 0x5B, 0xFF, 0xEA, 0xCB, 0x8A, 0x53, 0x1E, 0x78, 0xA3, 0x25, - 0x68, 0x15, 0xE4, 0xD3, 0xC4, 0xDF, 0x93, 0x6E, 0xC8, 0xAA, 0x53, 0xFA, - 0x3C, 0x60, 0xAC, 0x0D, 0xA2, 0x01, 0xF6, 0x36, 0x1E, 0x80, 0x61, 0xE1, - 0x89, 0x29, 0xDC, 0x0B, 0xC4, 0x0D, 0xB7, 0x8A, 0xD2, 0xB2, 0x7C, 0xAD, - 0x47, 0xB5, 0xE0, 0x1F, 0x48, 0x21, 0x55, 0xAA, 0x5F, 0x7D, 0x85, 0x48, - 0xE8, 0xD6, 0x19, 0xBE, 0xE6, 0x9C, 0x61, 0x8F, 0x89, 0x35, 0x49, 0x6D, - 0x2E, 0x8B, 0x46, 0x1B, 0xCB, 0xD8, 0x06, 0x83, 0x8B, 0x70, 0xED, 0x66, - 0x17, 0xAD, 0x2C, 0xF6, 0xC8, 0xF3, 0x1E, 0xE2, 0xCA, 0xDA, 0x04, 0xAA, - 0xD4, 0xA0, 0xA6, 0x8B, 0xCC, 0x19, 0xF1, 0x87, 0x93, 0x3A, 0x69, 0xEE, - 0x82, 0x75, 0x71, 0x8B, 0x8E, 0xFD, 0x39, 0x4A, 0x9D, 0x95, 0x07, 0x80, - 0x4E, 0xF6, 0x25, 0xFA, 0x9C, 0x68, 0xF1, 0xA6, 0x84, 0x28, 0x8C, 0x47, - 0xFB, 0xCC, 0xE5, 0x7A, 0x2B, 0xAC, 0x3B, 0x58, 0xEE, 0x51, 0x31, 0x18, - 0x6F, 0xFD, 0x5A, 0xE4, 0xFE, 0x80, 0x75, 0x92, 0x67, 0xF1, 0xF9, 0x78, - 0x73, 0xF1, 0x52, 0x4E, 0x9F, 0xFE, 0xA7, 0x18, 0x99, 0x48, 0x74, 0xE3, - 0x94, 0x70, 0x1A, 0x9F, 0xCD, 0x15, 0x31, 0xB3, 0x68, 0x4C, 0xFA, 0xED, - 0x44, 0xC2, 0x8D, 0x71, 0xC0, 0xC2, 0x1B, 0x39, 0x97, 0xE2, 0xFF, 0xA5, - 0x4E, 0x07, 0xF1, 0xA7, 0xFF, 0xBF, 0x85, 0x79, 0x00, 0x29, 0x62, 0xB7, - 0x0F, 0xF9, 0x6A, 0xE5, 0xFE, 0x09, 0xE2, 0x2B, 0x76, 0x74, 0xF6, 0x40, - 0xBE, 0x64, 0xE9, 0xD4, 0x27, 0x74, 0x6F, 0xEC, 0xDD, 0xBC, 0x53, 0xCD, - 0x9F, 0x16, 0x6B, 0x92, 0xAE, 0x59, 0x9E, 0x74, 0x72, 0x18, 0xA5, 0x68, - 0xE0, 0xA0, 0xAE, 0x06, 0xDB, 0xC4, 0xE5, 0x34, 0x37, 0x87, 0xAD, 0x80, - 0x2B, 0x0F, 0x84, 0x37, 0x99, 0x96, 0x9D, 0xEF, 0x87, 0x3C, 0xED, 0x7A, - 0xD9, 0xAA, 0xB8, 0xC8, 0x7A, 0xD4, 0xD0, 0x2A, 0xD7, 0xDA, 0xEC, 0x0B, - 0x85, 0x8A, 0x93, 0x84, 0x38, 0x2D, 0x3F, 0x6B, 0xE1, 0x8A, 0x88, 0x5D, - 0x4C, 0x26, 0x69, 0xF5, 0x43, 0x55, 0xB1, 0x32, 0xB2, 0x78, 0x67, 0x39, - 0xC3, 0x64, 0x4A, 0x6A, 0x5B, 0xA3, 0x7A, 0xBC, 0x8A, 0x0A, 0x76, 0xDB, - 0x69, 0x09, 0x66, 0x2C, 0x2F, 0xD9, 0x30, 0x0B, 0x4E, 0xB0, 0x71, 0x5E, - 0xDE, 0x48, 0x58, 0x6A, 0x10, 0x6B, 0xB1, 0x6D, 0xF8, 0xB3, 0xF9, 0xD9, - 0x24, 0x43, 0x0C, 0xB9, 0xAE, 0xB7, 0x9B, 0x76, 0x3A, 0xB3, 0xF1, 0x68, - 0x0A, 0xD4, 0xE5, 0xEC, 0x30, 0x8D, 0x19, 0xD0, 0x19, 0x42, 0x42, 0xF4, - 0xD2, 0xF0, 0x3D, 0x40, 0x4E, 0xF0, 0x52, 0x8C, 0x9D, 0x77, 0xE4, 0x5B, - 0x04, 0x12, 0x4C, 0x08, 0xC3, 0xF6, 0x9A, 0x58, 0x20, 0x40, 0x4B, 0x06, - 0x8B, 0x1C, 0xD6, 0x0E, 0x7D, 0x2C, 0x8A, 0x9F, 0xEC, 0x25, 0xF0, 0x66, - 0x91, 0x34, 0xBE, 0xB9, 0x27, 0x02, 0xFE, 0x9C, 0x1C, 0x3D, 0x8A, 0xD9, - 0x0C, 0x64, 0x98, 0xE1, 0x2C, 0x9F, 0x25, 0xE9, 0x0A, 0xB7, 0xA4, 0xE7, - 0xE1, 0x59, 0x51, 0x2A, 0xC0, 0xBF, 0x63, 0x80, 0xEE, 0x71, 0x25, 0xD2, - 0xCA, 0x3E, 0x23, 0xA2, 0x0A, 0x5D, 0x53, 0xD5, 0x38, 0xC6, 0x7E, 0xB2, - 0xD6, 0xA1, 0xB0, 0x1F, 0xD0, 0xDA, 0xA7, 0x59, 0x33, 0xF4, 0x43, 0x0A, - 0x9E, 0xCB, 0x95, 0x5C, 0x52, 0xD5, 0x34, 0x9E, 0x52, 0xAC, 0xC1, 0x36, - 0x84, 0x1F, 0x62, 0x1D, 0x86, 0xD6, 0xBD, 0x56, 0x9F, 0xCC, 0xAF, 0x30, - 0xC0, 0x39, 0x28, 0x22, 0xDB, 0xDA, 0xD5, 0x4C, 0x4F, 0x1B, 0x36, 0x1D, - 0x1D, 0xAC, 0xF4, 0x98, 0xF5, 0x46, 0x94, 0x32, 0x80, 0x2B, 0xF8, 0x14, - 0xF0, 0x68, 0x91, 0x1E, 0xF6, 0x72, 0x1C, 0x4A, 0xF9, 0xD6, 0xC2, 0xA6, - 0x3A, 0x85, 0xE9, 0xE1, 0x76, 0xB5, 0xA0, 0xEA, 0x46, 0x6A, 0x2C, 0xF8, - 0x8B, 0x8D, 0x0C, 0xD0, 0x1F, 0x4F, 0xD9, 0x38, 0x5B, 0xFE, 0x6E, 0x59, - 0xA3, 0xB8, 0xA4, 0x68, 0xED, 0x03, 0x4A, 0x06, 0xD3, 0xC1, 0xCD, 0x02, - 0x95, 0x24, 0x5C, 0x3D, 0x3B, 0xEC, 0x5A, 0x1C, 0x46, 0xD6, 0x1B, 0xA5, - 0x42, 0xFD, 0x2E, 0xE7, 0xEA, 0x42, 0x98, 0x42, 0x53, 0xB5, 0xD9, 0xCE, - 0x53, 0xC1, 0x8F, 0x83, 0x4D, 0xB2, 0xB6, 0x9F, 0x8F, 0xB1, 0x88, 0x4D, - 0x45, 0x3D, 0x08, 0x01, 0x9A, 0x28, 0x7B, 0x10, 0x97, 0x6C, 0x76, 0x44, - 0xE1, 0x07, 0x04, 0x51, 0x0E, 0x4A, 0xC7, 0x98, 0xED, 0x86, 0x17, 0x69, - 0x90, 0x14, 0xA9, 0xD8, 0xB7, 0x07, 0x28, 0x4A, 0x77, 0x0B, 0xF9, 0x3F, - 0x27, 0x4F, 0xCF, 0xA9, 0xDA, 0xCE, 0xC4, 0xDA, 0x30, 0x09, 0x56, 0x64, - 0x55, 0xCE, 0xD6, 0xEA, 0xE4, 0x85, 0x92, 0x95, 0x3E, 0x12, 0x5B, 0xF4, - 0x21, 0x91, 0xCB, 0xD9, 0xFB, 0xB7, 0x38, 0xBB, 0x1D, 0xFB, 0xAD, 0xE9, - 0x55, 0x40, 0x9D, 0xF3, 0x30, 0xC5, 0xA4, 0x9E, 0x02, 0xA8, 0x9B, 0x6E, - 0x30, 0x07, 0x32, 0x16, 0xD9, 0xEB, 0x85, 0x55, 0xC8, 0x38, 0xBC, 0x84, - 0x9A, 0x9D, 0x61, 0x1C, 0x0D, 0xF5, 0x07, 0x06, 0xC8, 0x0B, 0x73, 0xC1, - 0xB8, 0xD2, 0x84, 0xC2, 0xAF, 0xCA, 0xB2, 0x88, 0x0A, 0xE4, 0x79, 0x84, - 0x5C, 0x8B, 0xF7, 0xB6, 0xC4, 0x47, 0x92, 0xC9, 0xC1, 0xBD, 0xF6, 0x84, - 0x78, 0xC2, 0x74, 0xC3, 0xF8, 0x3C, 0x3F, 0xD6, 0x0E, 0x02, 0x5D, 0x22, - 0x42, 0x7D, 0xD3, 0xB8, 0xE9, 0xBB, 0x91, 0x36, 0x32, 0x81, 0xDD, 0x89, - 0xCD, 0x41, 0x00, 0x37, 0x4F, 0xA1, 0x48, 0x03, 0x2F, 0x3D, 0x54, 0x38, - 0x17, 0x7C, 0x51, 0x40, 0x9A, 0x41, 0x57, 0x3C, 0xF4, 0x5E, 0x0D, 0xF6, - 0xA4, 0xE4, 0xA2, 0x97, 0x30, 0x71, 0x40, 0xC3, 0x20, 0x88, 0xEE, 0x95, - 0x7A, 0xB9, 0x03, 0x9D, 0x54, 0x10, 0xD1, 0x5B, 0xBC, 0x6D, 0x79, 0xFE, - 0xF4, 0x44, 0x9C, 0xCB, 0x1E, 0xAF, 0x0C, 0x6B, 0xB7, 0x17, 0x60, 0x91, - 0x46, 0x1F, 0x9A, 0xA9, 0xD8, 0x84, 0x0D, 0x49, 0x60, 0x4A, 0x48, 0xDD, - 0x73, 0x1E, 0xDD, 0x17, 0xAD, 0xB8, 0x3C, 0x8A, 0xB3, 0xD3, 0x4C, 0x3C, - 0x97, 0xE3, 0xD0, 0x0A, 0x8D, 0x83, 0x7E, 0x3F, 0xE2, 0x03, 0xD1, 0xD3, - 0x93, 0xA3, 0xFF, 0x3B, 0x12, 0x65, 0x36, 0xF3, 0x27, 0xC1, 0x05, 0x27, - 0xA2, 0x03, 0x71, 0x7C, 0xBD, 0xEC, 0xDB, 0xE4, 0x3B, 0x33, 0x5F, 0x93, - 0xB5, 0x41, 0xAC, 0xF8, 0x6D, 0xD7, 0xCB, 0x06, 0x33, 0x9A, 0x25, 0x2E, - 0xF6, 0x2F, 0xF4, 0x34, 0x6F, 0x5A, 0x05, 0xDD, 0x04, 0x95, 0x33, 0x67, - 0x45, 0xD8, 0xD5, 0xD5, 0xEA, 0xC8, 0x2F, 0x9B, 0xC3, 0xBE, 0xED, 0xCA, - 0xC0, 0xCF, 0xB6, 0xFC, 0x7C, 0x88, 0x37, 0x1A, 0x7D, 0xDA, 0x9B, 0x0E, - 0xFC, 0x30, 0xD9, 0x17, 0xF3, 0x4C, 0x14, 0xF3, 0xDA, 0xF2, 0xCF, 0xCD, - 0x8A, 0x46, 0x23, 0xDA, 0x76, 0xC5, 0xF9, 0x06, 0xB9, 0x79, 0xD3, 0x1A, - 0xD2, 0xA8, 0x11, 0x03, 0x5D, 0x79, 0xA9, 0xA0, 0x93, 0x15, 0xC8, 0x27, - 0xC2, 0xD9, 0x7F, 0x78, 0x3E, 0x84, 0xD4, 0x37, 0x38, 0x52, 0x97, 0xD8, - 0x58, 0x67, 0x6A, 0x13, 0x00, 0x00, 0x20, 0xFB, 0xF2, 0xBD, 0x52, 0x71, - 0xE6, 0x1C, 0x6C, 0x99, 0xF6, 0xDE, 0x72, 0x89, 0xCC, 0x92, 0x57, 0x13, - 0x52, 0x04, 0x88, 0xE7, 0xA5, 0xBC, 0x36, 0x46, 0x3C, 0x03, 0x59, 0xFE, - 0x86, 0x99, 0xBC, 0x40, 0x70, 0xE9, 0xF1, 0xAA, 0xCC, 0x4E, 0x16, 0xD2, - 0x4B, 0x55, 0xC0, 0x42, 0x43, 0x3D, 0xF1, 0x1A, 0x38, 0xB9, 0x4F, 0x9E, - 0x31, 0x4E, 0x86, 0x08, 0x57, 0x95, 0x2D, 0xFB, 0xD7, 0x12, 0xC4, 0x11, - 0xC0, 0x5D, 0x00, 0xD0, 0xB5, 0x8D, 0xEA, 0x8F, 0x66, 0xD3, 0x00, 0x17, - 0x80, 0x1A, 0x54, 0x0F, 0xDE, 0x75, 0x40, 0xD5, 0x1B, 0x64, 0x89, 0x96, - 0xF9, 0x9A, 0x0D, 0x70, 0x26, 0x50, 0x31, 0x3A, 0x3C, 0x0F, 0x5E, 0xC8, - 0xA3, 0xB8, 0x5D, 0x72, 0xDC, 0xBA, 0xB2, 0xEF, 0x58, 0x89, 0x52, 0x55, - 0xF7, 0x9A, 0x17, 0xE7, 0x43, 0xC2, 0x0F, 0x3A, 0x16, 0x75, 0xEB, 0x48, - 0x87, 0x2A, 0xF8, 0x0E, 0xBA, 0xBB, 0x0D, 0xA2, 0x6C, 0x37, 0x71, 0x50, - 0xA4, 0xB8, 0x3F, 0x77, 0x2A, 0xDE, 0x12, 0x1B, 0x87, 0x39, 0x91, 0x40, - 0xA9, 0x62, 0x93, 0x87, 0x59, 0x8F, 0x1F, 0x9E, 0x27, 0xD6, 0x5F, 0xA9, - 0x45, 0x67, 0xBC, 0x8C, 0xE2, 0x84, 0x4C, 0x28, 0x0A, 0x7D, 0xBF, 0xC0, - 0x08, 0x1C, 0x72, 0x87, 0x93, 0xC4, 0xA5, 0x88, 0xFF, 0xD9, 0x29, 0x62, - 0xC9, 0x2F, 0x9D, 0x96, 0x44, 0x77, 0xC1, 0x9E, 0xF4, 0xDF, 0x37, 0x5D, - 0x05, 0x2F, 0xD8, 0x4A, 0x46, 0x5D, 0xB2, 0x0C, 0xBE, 0x28, 0xA4, 0x15, - 0x6B, 0xC0, 0xE4, 0x9A, 0xFB, 0xAE, 0xCB, 0x1F, 0x14, 0x3F, 0x63, 0x65, - 0x24, 0xD2, 0x49, 0x49, 0x90, 0x31, 0xBF, 0x6F, 0x4F, 0x83, 0xE0, 0xDB, - 0xF0, 0x0A, 0xA0, 0x7E, 0x45, 0x7F, 0x15, 0x86, 0x4A, 0x00, 0x06, 0x52, - 0xCE, 0x94, 0x81, 0x55, 0x48, 0x99, 0xF8, 0x2C, 0xD5, 0x18, 0x98, 0xF5, - 0xB7, 0x5C, 0x71, 0x11, 0x19, 0xAB, 0x7D, 0xAD, 0x35, 0x61, 0x2B, 0x00, - 0x00, 0x80, 0xF0, 0x33, 0xF2, 0x4A, 0x77, 0x44, 0xF2, 0x79, 0xA5, 0xE1, - 0x53, 0xEE, 0x84, 0x18, 0x8C, 0x1F, 0x43, 0xA5, 0xF6, 0xA7, 0x3E, 0x73, - 0x89, 0x42, 0x9B, 0x45, 0xA6, 0x23, 0x09, 0x8B, 0x28, 0x02, 0xF4, 0x52, - 0xBA, 0x2D, 0x9A, 0x3A, 0xBC, 0x50, 0x8A, 0x6D, 0xD4, 0x0D, 0x19, 0xAC, - 0x7F, 0x04, 0x99, 0xFC, 0x5C, 0x15, 0xD7, 0x30, 0x9E, 0xDE, 0xCB, 0x61, - 0x89, 0x54, 0x37, 0x6A, 0x9E, 0x21, 0x62, 0x5E, 0x28, 0x4E, 0xCE, 0x41, - 0x7D, 0x50, 0xFC, 0x99, 0xB0, 0x43, 0x86, 0x4A, 0xAD, 0x2C, 0x1C, 0xFC, - 0x36, 0xF4, 0x16, 0x8A, 0x23, 0x88, 0xB8, 0x32, 0xB0, 0x53, 0x3F, 0x50, - 0xDB, 0x04, 0x20, 0x91, 0x9C, 0xA9, 0x71, 0x57, 0xAB, 0x89, 0xE7, 0xA0, - 0xAF, 0x65, 0xE4, 0xDF, 0x19, 0x7D, 0x1C, 0x95, 0xEB, 0x76, 0x9A, 0x1E, - 0x89, 0xEE, 0x44, 0x2D, 0xCA, 0xAF, 0x63, 0x32, 0x1B, 0xA6, 0x0C, 0x0A, - 0xA0, 0x9D, 0x75, 0xFB, 0x98, 0x68, 0x44, 0xC7, 0x31, 0x4E, 0xA4, 0x39, - 0xE4, 0x74, 0xD6, 0xBB, 0xE4, 0x21, 0x6F, 0xAD, 0x57, 0x54, 0x2C, 0x9F, - 0x35, 0x01, 0xF1, 0x0A, 0xE1, 0x07, 0xF5, 0x61, 0x60, 0x0C, 0xF8, 0x9B, - 0x85, 0xE9, 0xC4, 0xBB, 0xBD, 0xEC, 0x45, 0x5B, 0xDD, 0x0B, 0xED, 0x0F, - 0x55, 0x54, 0x7B, 0x50, 0xDB, 0xC7, 0xAC, 0x05, 0x16, 0x5E, 0x55, 0x9C, - 0x83, 0xB2, 0x6D, 0x95, 0x59, 0x3B, 0xCA, 0xB5, 0x1B, 0x81, 0x4D, 0xC6, - 0xC3, 0x8B, 0x20, 0x95, 0x5C, 0xE6, 0x03, 0xBF, 0xF8, 0xA7, 0x16, 0x8B, - 0x49, 0x63, 0xDD, 0x71, 0x15, 0x8B, 0x66, 0xA2, 0xAB, 0x47, 0x06, 0x74, - 0xB5, 0xA8, 0xC4, 0x49, 0x31, 0x4F, 0xFF, 0x08, 0x08, 0xB2, 0x2F, 0x9E, - 0x6D, 0x13, 0xDD, 0xCB, 0x53, 0xB0, 0x47, 0x61, 0x49, 0x47, 0x10, 0xFF, - 0x87, 0xB0, 0x10, 0xD9, 0x21, 0xBD, 0x0F, 0x03, 0x98, 0x3B, 0x07, 0xC5, - 0xC4, 0x65, 0x39, 0x76, 0xCC, 0x44, 0x60, 0xCC, 0x79, 0x7B, 0x56, 0x37, - 0xFE, 0x31, 0xBB, 0xFB, 0x88, 0x82, 0xCD, 0xA4, 0xA0, 0xED, 0x2F, 0x0A, - 0xF8, 0x74, 0x4A, 0x6F, 0xC3, 0xB9, 0x11, 0x76, 0x0A, 0xEA, 0x0F, 0x1C, - 0xFC, 0x6A, 0x49, 0x6A, 0x39, 0x32, 0xF8, 0x5C, 0x40, 0x1A, 0xA5, 0xED, - 0x72, 0x58, 0x6B, 0xD6, 0xA3, 0x53, 0x11, 0x82, 0xB8, 0x78, 0x85, 0x38, - 0xD8, 0xFD, 0x18, 0x8B, 0xDF, 0x0E, 0x62, 0xAF, 0x6B, 0xE4, 0x5F, 0x43, - 0x55, 0x53, 0xB7, 0xAA, 0x43, 0x33, 0x89, 0xA8, 0x67, 0x6E, 0xD8, 0x0A, - 0xCC, 0x1F, 0x89, 0xDA, 0xA4, 0x16, 0xA2, 0xE0, 0xBA, 0xF5, 0x20, 0x10, - 0x05, 0x42, 0x00, 0xAD, 0x39, 0x49, 0xE9, 0x3D, 0x0A, 0xDF, 0x7E, 0x65, - 0x14, 0xAF, 0xA8, 0x5E, 0xD9, 0xC2, 0x16, 0x4F, 0x07, 0x18, 0xA0, 0xAD, - 0x2C, 0xD8, 0x19, 0x6D, 0x11, 0x93, 0x63, 0xD7, 0x6D, 0x05, 0xA9, 0xDB, - 0xBA, 0x02, 0xC8, 0x10, 0x6A, 0xA5, 0x4F, 0x35, 0xC4, 0x35, 0x74, 0xC5, - 0xBF, 0x40, 0x71, 0x92, 0xDB, 0x26, 0xB6, 0xEB, 0xD8, 0x17, 0x34, 0x95, - 0xEE, 0x3A, 0xF6, 0x30, 0x48, 0x6C, 0xAD, 0x88, 0x82, 0x22, 0x48, 0x9B, - 0xA3, 0xDE, 0x5A, 0x47, 0xEB, 0x80, 0x4C, 0x70, 0xFF, 0x7B, 0x7C, 0xD9, - 0xD7, 0x7E, 0x08, 0x74, 0x8F, 0xC5, 0x14, 0xBC, 0xC0, 0x4B, 0xF2, 0x3F, - 0xFF, 0x52, 0xBC, 0x23, 0xFB, 0x30, 0xA9, 0x2E, 0x7A, 0x93, 0x16, 0x73, - 0x99, 0xF4, 0xE5, 0xB7, 0x5F, 0x01, 0xDD, 0x96, 0x1A, 0xDB, 0x36, 0x74, - 0xBE, 0xD4, 0xAB, 0xE2, 0x16, 0x24, 0xB2, 0x0E, 0x36, 0x46, 0x36, 0x8C, - 0x92, 0xB7, 0x79, 0x5E, 0x83, 0x37, 0x6A, 0x1A, 0x15, 0xCE, 0x6D, 0x61, - 0xEA, 0x9D, 0xE6, 0x65, 0x27, 0xD7, 0xB3, 0xF4, 0x6D, 0x55, 0xB8, 0xC0, - 0x42, 0x4C, 0xE8, 0x36, 0x1A, 0x0A, 0x21, 0x68, 0xB3, 0x17, 0xB1, 0xEA, - 0x8D, 0x5C, 0x50, 0xBE, 0xC4, 0x49, 0xC5, 0x7D, 0x19, 0x83, 0xF8, 0x02, - 0x78, 0xAE, 0x3A, 0x5A, 0xB9, 0xA3, 0xA2, 0x0E, 0xCC, 0x10, 0x36, 0x49, - 0x84, 0x44, 0xA3, 0xFE, 0x5B, 0x56, 0x5C, 0x13, 0x43, 0xDD, 0x90, 0x29, - 0x67, 0x9B, 0x3E, 0xD3, 0x9B, 0x68, 0xA7, 0xAE, 0x52, 0x9C, 0x38, 0xF8, - 0xF1, 0x10, 0xB7, 0x19, 0x75, 0x43, 0x27, 0x75, 0x7F, 0x32, 0x40, 0x40, - 0xDB, 0xD2, 0x71, 0x35, 0x45, 0x6C, 0x5B, 0x47, 0x84, 0x57, 0x49, 0x75, - 0xEB, 0x75, 0xDE, 0x93, 0xB2, 0xA7, 0x99, 0x65, 0xB1, 0x34, 0xA7, 0xB7, - 0x67, 0x21, 0x95, 0x56, 0x28, 0xF4, 0x16, 0xF6, 0xA5, 0x86, 0x04, 0x65, - 0x44, 0x48, 0xDE, 0x02, 0xE4, 0x08, 0x6F, 0x57, 0xA3, 0xE1, 0x45, 0x68, - 0xC2, 0x9C, 0x96, 0xFD, 0xCB, 0x5B, 0x1D, 0xDF, 0xB5, 0x52, 0xAC, 0xB4, - 0xE4, 0x2D, 0x33, 0x76, 0x3C, 0x55, 0x8A, 0xD7, 0xD9, 0x65, 0xBD, 0x44, - 0x27, 0x4F, 0x7B, 0x48, 0x05, 0xD5, 0x3D, 0xB8, 0x87, 0x7E, 0x49, 0xE6, - 0x99, 0x12, 0x27, 0xDA, 0x8E, 0xC9, 0x49, 0x4F, 0xFC, 0x61, 0xD4, 0x8C, - 0x63, 0xD1, 0x25, 0x8B, 0x09, 0xA1, 0x21, 0x96, 0xDC, 0xFF, 0x7A, 0x5F, - 0x99, 0xBE, 0xBC, 0x04, 0x0B, 0xD1, 0x0E, 0x44, 0xCE, 0x2C, 0xA1, 0x3C, - 0x8F, 0x49, 0xD9, 0xA1, 0xD4, 0x4D, 0x8E, 0x2B, 0x3E, 0xB4, 0x2F, 0x59, - 0xDB, 0x71, 0x8A, 0xA5, 0x85, 0xD8, 0x31, 0x6A, 0xD3, 0xEE, 0xBD, 0x32, - 0x9D, 0xCA, 0x55, 0x19, 0x6A, 0x7F, 0x43, 0xE0, 0x5B, 0x91, 0x14, 0x4B, - 0x0C, 0xD2, 0xA1, 0xDA, 0xE8, 0x73, 0xF1, 0x24, 0xB9, 0xEA, 0x69, 0x77, - 0xE4, 0x2A, 0x7D, 0xC4, 0xD2, 0xB0, 0x7F, 0xAB, 0x28, 0xB1, 0xD0, 0x34, - 0xF1, 0x89, 0x18, 0x57, 0xB0, 0x65, 0x50, 0x3D, 0x5E, 0x81, 0xE5, 0xEE, - 0xBF, 0xD1, 0x58, 0x1E, 0xC6, 0xA1, 0xCF, 0xD7, 0x31, 0x4A, 0x5D, 0x78, - 0xC6, 0xED, 0x7F, 0xCC, 0xC4, 0xBD, 0xFB, 0x6D, 0xF6, 0xEE, 0x26, 0xF7, - 0xA6, 0xBE, 0x08, 0x6A, 0xAD, 0x03, 0x24, 0xE0, 0x79, 0x24, 0xD0, 0xC1, - 0xE9, 0x9A, 0xAF, 0x94, 0x3F, 0x10, 0x2E, 0xC8, 0x93, 0x34, 0x08, 0x70, - 0xFF, 0x2F, 0x32, 0x66, 0xAF, 0x19, 0xFD, 0xFE, 0xEC, 0x24, 0x44, 0x79, - 0x30, 0x41, 0x21, 0x49, 0xC0, 0xEF, 0x30, 0x59, 0xC5, 0x5B, 0xBA, 0x04, - 0xAB, 0x03, 0x2F, 0x50, 0x55, 0xF5, 0x48, 0x9F, 0x46, 0x98, 0xF3, 0xC1, - 0xDC, 0xFE, 0x8F, 0xE9, 0x59, 0x9F, 0x49, 0xB6, 0x6D, 0x53, 0x9F, 0x05, - 0x3E, 0xED, 0xCE, 0xAE, 0x4F, 0xE8, 0x38, 0xE6, 0x0F, 0x55, 0x96, 0xD2, - 0x53, 0x72, 0x6C, 0x80, 0x78, 0xFB, 0x7C, 0xDD, 0xD0, 0x2E, 0x23, 0x1B, - 0x65, 0x08, 0xF2, 0x76, 0x7C, 0x34, 0x6A, 0xDC, 0xA0, 0xFB, 0xEC, 0xDF, - 0x45, 0x1C, 0x53, 0x6B, 0xFD, 0x2C, 0x96, 0x3D, 0xF4, 0x29, 0x4C, 0xF8, - 0x92, 0x9E, 0xC4, 0x6B, 0x97, 0xCD, 0x16, 0x4D, 0xAB, 0xBC, 0x12, 0xED, - 0x32, 0x8C, 0xAA, 0x94, 0xEC, 0x3E, 0xF2, 0xEC, 0x24, 0x35, 0xD0, 0x97, - 0xC9, 0x1E, 0x4C, 0x57, 0xF3, 0xC5, 0x3D, 0xE9, 0x11, 0x6B, 0xB0, 0x66, - 0xB4, 0x45, 0xE4, 0x4C, 0xE3, 0x5C, 0xFA, 0x24, 0x0F, 0x70, 0x09, 0xB5, - 0xF5, 0x5B, 0x80, 0xBD, 0x0B, 0x14, 0xB4, 0xF5, 0x9B, 0x51, 0x10, 0x6D, - 0xB8, 0x29, 0x6F, 0x74, 0x89, 0x89, 0x0E, 0x26, 0x08, 0xBF, 0x3E, 0xC2, - 0xD5, 0x30, 0x1D, 0xAC, 0x33, 0x19, 0x10, 0x32, 0x5E, 0xCB, 0x9A, 0x50, - 0x52, 0xB4, 0x8F, 0xC8, 0xA1, 0x44, 0xB8, 0x2E, 0x8B, 0x0D, 0x67, 0x1E, - 0x8F, 0x31, 0x03, 0x99, 0x96, 0xB2, 0x76, 0xF2, 0xC7, 0xDF, 0xC3, 0x55, - 0x52, 0xE3, 0x17, 0xF1, 0xDF, 0x75, 0x60, 0xB0, 0x48, 0xF8, 0xC1, 0xDC, - 0xB2, 0xFC, 0x8A, 0x17, 0x6A, 0xED, 0x58, 0x33, 0x02, 0x24, 0x07, 0x86, - 0xD4, 0xC0, 0xD9, 0x96, 0x3E, 0x05, 0x10, 0x78, 0x5D, 0x69, 0x56, 0x7F, - 0x1D, 0x08, 0x20, 0x49, 0x6E, 0x4F, 0x2A, 0x0B, 0xE6, 0xFD, 0x1E, 0x32, - 0x08, 0x07, 0x62, 0xA7, 0x9C, 0xD5, 0x34, 0xF0, 0x37, 0x13, 0x8E, 0x43, - 0x10, 0x9D, 0xF9, 0x51, 0x38, 0xBB, 0x5F, 0x61, 0x0A, 0x18, 0xD4, 0xA4, - 0xFB, 0x60, 0x93, 0xED, 0x0A, 0x6F, 0x99, 0x89, 0xD6, 0x63, 0x5C, 0x15, - 0x6F, 0x93, 0xD8, 0xB1, 0xF2, 0x95, 0x11, 0xDE, 0x20, 0xA2, 0xEE, 0x1E, - 0x84, 0xDA, 0x3F, 0xF1, 0xE6, 0x10, 0xA4, 0xA8, 0x2F, 0xF1, 0x6E, 0x2A, - 0x07, 0x4D, 0x8D, 0xE6, 0x39, 0x96, 0x8A, 0xCC, 0x00, 0x33, 0x3F, 0x0C, - 0x77, 0x5F, 0x2A, 0x85, 0x25, 0x29, 0x1E, 0xF6, 0x65, 0x0F, 0x2D, 0x5E, - 0x05, 0xBF, 0x3C, 0x0E, 0x0A, 0x17, 0x98, 0xB8, 0xA4, 0x49, 0x28, 0xA9, - 0x3B, 0xED, 0xCE, 0xF3, 0x7E, 0xB6, 0x38, 0x66, 0x0A, 0x31, 0x42, 0xC7, - 0x2E, 0x40, 0x63, 0x16, 0xA7, 0x80, 0xE8, 0x19, 0x3A, 0x61, 0xC7, 0x84, - 0xBE, 0x89, 0x59, 0xD0, 0x23, 0xD9, 0xAA, 0x84, 0x2A, 0x26, 0x53, 0x32, - 0x0D, 0x6B, 0xBC, 0xBF, 0xAD, 0xE1, 0x03, 0x5F, 0x4A, 0xC7, 0x5F, 0x03, - 0x88, 0x0B, 0x8F, 0x7A, 0x53, 0xF8, 0xCC, 0x92, 0xAD, 0x57, 0x04, 0xD8, - 0xC9, 0x9F, 0x51, 0xB7, 0x9C, 0x6A, 0xAB, 0x45, 0x27, 0x0F, 0xC6, 0x21, - 0xBE, 0x01, 0x43, 0x8F, 0x0C, 0x54, 0xDD, 0xAF, 0xF6, 0xFB, 0x32, 0xA3, - 0x95, 0xCC, 0x09, 0xBC, 0x98, 0xAD, 0xEF, 0xA8, 0xC5, 0x3F, 0x47, 0xF7, - 0x46, 0xBF, 0x2C, 0xF6, 0x05, 0xFB, 0xC8, 0xE8, 0x56, 0x2C, 0x50, 0x89, - 0xDF, 0x14, 0x67, 0xE0, 0xD4, 0x41, 0x12, 0x82, 0xD1, 0x94, 0x75, 0x00, - 0x3E, 0xF9, 0x4F, 0xCB, 0x20, 0x9A, 0x62, 0x16, 0xB4, 0x50, 0xB6, 0x63, - 0x3A, 0x9C, 0x91, 0x3C, 0xBC, 0x0F, 0x6A, 0xB0, 0xE5, 0x2E, 0xD7, 0xEA, - 0xE7, 0x85, 0xA3, 0xD9, 0xB0, 0xAB, 0x8C, 0x83, 0x69, 0x62, 0x43, 0x56, - 0x1E, 0xDD, 0xA1, 0x55, 0x86, 0x7F, 0x1F, 0xCB, 0x1F, 0xA4, 0xF2, 0x57, - 0xCE, 0xB0, 0xA2, 0x1D, 0xFA, 0x17, 0x43, 0x46, 0xF7, 0xFD, 0xA3, 0x72, - 0xFC, 0x5C, 0xBC, 0x96, 0xA9, 0xB3, 0x39, 0xB9, 0x54, 0xD3, 0x75, 0x11, - 0x78, 0xAD, 0x05, 0x61, 0x0A, 0xB6, 0x7E, 0x94, 0xCB, 0x36, 0x2F, 0x00, - 0xEA, 0xCA, 0xEA, 0x5F, 0x09, 0xE8, 0xDF, 0x98, 0xA0, 0xFE, 0x8B, 0x9A, - 0xCB, 0x5E, 0xFC, 0x4E, 0xD8, 0x30, 0x91, 0x97, 0x95, 0x92, 0x9E, 0x55, - 0xAB, 0x45, 0x4A, 0x0F, 0xDD, 0xFF, 0x73, 0x4E, 0x0C, 0xC3, 0x62, 0x13, - 0x3A, 0xC9, 0xB5, 0xEF, 0x85, 0xD1, 0x4D, 0xB3, 0x7B, 0xD5, 0xA5, 0x33, - 0xAF, 0x9D, 0xBC, 0x47, 0xE3, 0x1E, 0xC8, 0x97, 0xF4, 0xAF, 0xE0, 0x96, - 0x82, 0x8D, 0x3E, 0xD9, 0xBE, 0x1E, 0xDB, 0x04, 0xA6, 0x38, 0xE7, 0x6F, - 0x8F, 0xC1, 0xC7, 0x67, 0x0F, 0x50, 0x42, 0xCE, 0x1F, 0x42, 0xCA, 0x2C, - 0x52, 0xA0, 0xEC, 0xB2, 0x02, 0x56, 0x37, 0x3B, 0x95, 0x70, 0x0F, 0x03, - 0x33, 0x61, 0xE7, 0xDD, 0x6A, 0x0A, 0x0A, 0x27, 0x8C, 0x0E, 0x18, 0xF0, - 0x39, 0x83, 0x87, 0x12, 0x18, 0x2B, 0x53, 0xF4, 0x41, 0x01, 0x52, 0xCF, - 0xC7, 0xBE, 0x4A, 0x1B, 0x3B, 0x77, 0xCD, 0xF2, 0xE1, 0x4D, 0xC5, 0x78, - 0x4E, 0x93, 0x9B, 0xBD, 0xD6, 0xFA, 0xBF, 0x60, 0x48, 0x76, 0x19, 0x3F, - 0x22, 0xAB, 0xA8, 0x84, 0xA0, 0xA7, 0x9E, 0x40, 0xE3, 0xA4, 0x86, 0xF1, - 0x4F, 0x35, 0x7F, 0xE9, 0xAD, 0x6F, 0x43, 0x62, 0x4E, 0x9B, 0x91, 0xD7, - 0x3B, 0x6C, 0x1A, 0x51, 0x67, 0xDB, 0x18, 0x51, 0x9C, 0x8E, 0xB0, 0xB2, - 0xE2, 0x45, 0xB5, 0x48, 0x11, 0x03, 0x5C, 0xF3, 0x3A, 0xCD, 0x43, 0x14, - 0x40, 0xFC, 0x72, 0x8E, 0x44, 0xF0, 0xE6, 0xF7, 0x69, 0xD3, 0xC2, 0xF9, - 0x5A, 0xC7, 0x68, 0xB3, 0xA0, 0x74, 0x94, 0x12, 0xEA, 0x5F, 0xF4, 0x93, - 0x2A, 0x9B, 0x71, 0xF5, 0x19, 0x87, 0x98, 0xC2, 0x04, 0xC0, 0x52, 0xC7, - 0x2C, 0x26, 0xC1, 0x93, 0xDD, 0xB1, 0xB2, 0xA8, 0x68, 0xF7, 0xE3, 0xCE, - 0x20, 0x8E, 0x02, 0xBF, 0x05, 0x08, 0xBD, 0x53, 0xD1, 0x31, 0x30, 0xD7, - 0xF2, 0x7B, 0x15, 0xCB, 0x10, 0x47, 0x7B, 0x66, 0xEE, 0x63, 0x44, 0x21, - 0xAD, 0xD7, 0xDC, 0xD9, 0x61, 0xCB, 0xC7, 0x71, 0x87, 0x06, 0xEB, 0xE0, - 0x6B, 0x7D, 0x4E, 0x01, 0x05, 0x0A, 0xDC, 0x8F, 0xF0, 0x40, 0xA7, 0xDF, - 0x18, 0xD6, 0x71, 0x2C, 0x2E, 0x81, 0x05, 0x95, 0x48, 0x26, 0x52, 0xBB, - 0x9F, 0x7D, 0xD0, 0x51, 0x28, 0xA5, 0x7F, 0x9F, 0xC5, 0x38, 0x39, 0x3A, - 0xDE, 0x1E, 0x53, 0x2F, 0x08, 0x19, 0xE0, 0x56, 0x83, 0x28, 0xB2, 0x5C, - 0xB4, 0xEF, 0x35, 0x90, 0xE0, 0xE0, 0x54, 0xCC, 0xE6, 0xA7, 0xB4, 0x83, - 0x5E, 0xC0, 0xC4, 0xBE, 0x46, 0x33, 0x14, 0xB1, 0x09, 0xBB, 0xD2, 0xB3, - 0xDB, 0xE9, 0xAC, 0x62, 0xEF, 0x52, 0x42, 0x82, 0x5D, 0x99, 0x8E, 0xFD, - 0x28, 0xA8, 0xB6, 0xAA, 0xC6, 0x68, 0x58, 0xDF, 0x87, 0x10, 0x32, 0xD9, - 0xB1, 0xA7, 0x49, 0x76, 0x2D, 0x40, 0xDD, 0x6D, 0xB3, 0x67, 0x4C, 0x59, - 0xC4, 0x5C, 0x66, 0x74, 0xBE, 0x13, 0xC5, 0x19, 0x92, 0x23, 0x3F, 0x81, - 0x74, 0xB1, 0x9A, 0x65, 0x5D, 0xDD, 0x24, 0x7E, 0x6F, 0x3B, 0xF1, 0x45, - 0x56, 0x9D, 0x66, 0xB2, 0x8B, 0xD6, 0x89, 0xE3, 0xF7, 0xD7, 0xDD, 0x44, - 0x6F, 0x41, 0x52, 0x43, 0x66, 0xE0, 0xB1, 0x18, 0x37, 0xFE, 0xE4, 0x95, - 0x26, 0x71, 0x29, 0x7D, 0xC5, 0x7A, 0x4A, 0x6B, 0xB0, 0xB1, 0x3B, 0xF2, - 0xFA, 0x67, 0x1D, 0x57, 0xBE, 0x51, 0xF0, 0x76, 0x37, 0x45, 0x65, 0xF3, - 0x30, 0x75, 0x0C, 0x26, 0xD5, 0x6E, 0x7A, 0xBD, 0xB5, 0x31, 0xE7, 0x30, - 0x14, 0x50, 0x64, 0xB8, 0x3C, 0x89, 0x43, 0xF1, 0x32, 0x7C, 0x45, 0xE3, - 0xD8, 0x52, 0xF2, 0x00, 0xD4, 0x8D, 0x76, 0xD4, 0xE6, 0x4C, 0x6D, 0x98, - 0x7D, 0x56, 0x37, 0x15, 0x1B, 0x0F, 0x75, 0x66, 0x88, 0x29, 0xDF, 0xFB, - 0xBF, 0x99, 0x51, 0x46, 0xDA, 0x20, 0xB4, 0xD1, 0xB8, 0x0D, 0xE1, 0xA8, - 0x82, 0x2C, 0x69, 0x7C, 0x93, 0xE7, 0x51, 0x3E, 0x0F, 0x25, 0xDE, 0x25, - 0x2F, 0x8D, 0x28, 0x4C, 0xAF, 0x35, 0x4F, 0x1C, 0x6B, 0x4B, 0x43, 0xC9, - 0x82, 0xAA, 0x5C, 0x31, 0xF6, 0x4D, 0x9F, 0x3B, 0x17, 0x25, 0x21, 0x0D, - 0xE4, 0x81, 0x49, 0xD3, 0x02, 0xED, 0xEE, 0x73, 0xCD, 0x54, 0xBD, 0xF1, - 0x0E, 0x31, 0x5E, 0x49, 0x13, 0xFE, 0xAA, 0xFF, 0x5D, 0x77, 0x65, 0x3D, - 0x9A, 0x62, 0xDE, 0x52, 0x4F, 0x4E, 0x5C, 0xA6, 0xA2, 0xEA, 0xA0, 0x85, - 0x69, 0x6F, 0x64, 0x30, 0x71, 0xD7, 0xE0, 0x5F, 0xF0, 0xDF, 0xB7, 0xFC, - 0x93, 0x08, 0xDA, 0x58, 0xAA, 0x53, 0x10, 0x3E, 0x2F, 0x47, 0x48, 0x11, - 0xC7, 0x02, 0xB1, 0xB0, 0x25, 0x46, 0x83, 0x88, 0x5D, 0xF8, 0xBB, 0x43, - 0x00, 0x91, 0x84, 0x8E, 0x80, 0xF1, 0xE8, 0xE8, 0x90, 0xE4, 0xC8, 0x4A, - 0x11, 0xA0, 0x92, 0xAA, 0x7E, 0xA5, 0xCA, 0xA7, 0xB6, 0x22, 0x9A, 0xB1, - 0x55, 0x8E, 0x6D, 0xE5, 0x47, 0xD6, 0x2E, 0x58, 0x42, 0xCB, 0xC4, 0x19, - 0xB5, 0xFF, 0xAB, 0xB1, 0x8F, 0x2A, 0x81, 0x94, 0x19, 0x91, 0xDA, 0x3A, - 0x3C, 0xBB, 0x74, 0x8E, 0x84, 0x07, 0xD3, 0x3B, 0x6A, 0x5E, 0xD0, 0x4D, - 0xD1, 0xA0, 0xD6, 0x5B, 0x32, 0x7F, 0x92, 0xCC, 0x5E, 0xDF, 0xCE, 0x88, - 0xCD, 0x2B, 0x6A, 0x4B, 0x3D, 0x68, 0x75, 0x7A, 0xB0, 0xF1, 0x36, 0x1B, - 0xCA, 0x96, 0xFB, 0xE3, 0x77, 0x9B, 0x38, 0x83, 0x2E, 0xDD, 0x4C, 0x53, - 0x35, 0x85, 0xC2, 0xE3, 0xCF, 0xA2, 0xF3, 0x85, 0x44, 0xA1, 0xB2, 0x9B, - 0x0F, 0xE9, 0x2A, 0x82, 0xD5, 0xB3, 0xC3, 0xF1, 0x2B, 0xE8, 0x1B, 0x2C, - 0xFF, 0x7D, 0x3C, 0xC9, 0x24, 0x24, 0x35, 0xC8, 0x43, 0x10, 0x2A, 0x92, - 0x53, 0x29, 0x1D, 0x71, 0xB8, 0xFD, 0x7E, 0x18, 0x9B, 0xBA, 0x5F, 0x43, - 0x9F, 0x8C, 0x35, 0xB6, 0x0D, 0x93, 0xC1, 0xA7, 0xB9, 0x2A, 0x05, 0xEB, - 0x59, 0xB4, 0xA1, 0x94, 0x6C, 0x8B, 0xD3, 0x82, 0xD3, 0xFF, 0xA7, 0x36, - 0x8C, 0x79, 0x8D, 0xB9, 0x11, 0x04, 0x78, 0x49, 0xA8, 0xBE, 0x76, 0x7C, - 0xAE, 0x9C, 0xD8, 0x26, 0x4C, 0x12, 0x07, 0x45, 0xE3, 0x39, 0x7A, 0xED, - 0xFD, 0x1E, 0xC1, 0xC2, 0xBB, 0x90, 0xB2, 0xA7, 0x7A, 0xDC, 0x65, 0x4E, - 0x99, 0x73, 0x80, 0xF8, 0x9B, 0x6F, 0x93, 0x76, 0x18, 0x7D, 0x69, 0x75, - 0xA9, 0xB0, 0x42, 0xD9, 0xEB, 0x21, 0xF5, 0x0B, 0x33, 0x47, 0xDD, 0xB4, - 0xC1, 0x36, 0xDA, 0x6B, 0x82, 0xE1, 0x5B, 0x21, 0xA1, 0xB7, 0x8A, 0x29, - 0x73, 0x64, 0x06, 0xC9, 0x0A, 0x67, 0x82, 0xCD, 0xD2, 0xC9, 0x5C, 0x62, - 0x75, 0x03, 0x1A, 0xD7, 0x32, 0xFE, 0x84, 0x4E, 0xB6, 0xCF, 0x97, 0x0D, - 0x6C, 0x12, 0x0A, 0x57, 0xC3, 0xF2, 0x87, 0x6C, 0x1D, 0x05, 0x39, 0x0C, - 0xC9, 0xDB, 0xA8, 0xE5, 0x2E, 0x6A, 0xE0, 0xAB, 0xD1, 0x1C, 0xCC, 0x16, - 0xFE, 0xB7, 0x49, 0x3C, 0xC0, 0xCB, 0x43, 0x63, 0x74, 0x89, 0xD8, 0xB6, - 0xC0, 0x69, 0x80, 0xF4, 0x8E, 0x84, 0xE0, 0x10, 0x61, 0x3E, 0xF4, 0x04, - 0xB5, 0x04, 0x37, 0xA4, 0x23, 0x33, 0xD8, 0x3C, 0x35, 0x26, 0xC9, 0xF6, - 0x06, 0x85, 0x5B, 0xC2, 0x8F, 0x53, 0xBA, 0x46, 0xDE, 0x4C, 0x7A, 0xCD, - 0x8F, 0xF9, 0x31, 0x8A, 0x21, 0xD9, 0xDF, 0x0C, 0x2A, 0xC4, 0xF0, 0x1F, - 0xF1, 0x37, 0xD1, 0x1F, 0xA5, 0x21, 0x27, 0xE8, 0x2B, 0xA6, 0xB6, 0x89, - 0x34, 0xF4, 0xF3, 0x7C, 0x24, 0x0E, 0xA6, 0xDB, 0xB3, 0x9D, 0x60, 0x29, - 0x3A, 0xC7, 0xD6, 0xAE, 0xE7, 0x95, 0xBF, 0x30, 0x11, 0xA4, 0x77, 0xCC, - 0x7C, 0xE7, 0x96, 0x7E, 0xAC, 0xFC, 0xFA, 0xFD, 0x41, 0xAA, 0x0C, 0x6C, - 0x53, 0x56, 0xB6, 0x55, 0x7E, 0xC3, 0xB4, 0x82, 0x4B, 0xC0, 0x4A, 0xFE, - 0xF7, 0x5F, 0xD1, 0xAB, 0xD8, 0x89, 0x00, 0x44, 0xAA, 0xB1, 0x62, 0xEF, - 0xD6, 0x7F, 0x1B, 0x7B, 0x22, 0x48, 0xEA, 0x00, 0x53, 0x49, 0xA7, 0xCD, - 0xA6, 0x7B, 0x61, 0xE3, 0xDD, 0xFC, 0xBF, 0xB7, 0xB0, 0xCB, 0xAE, 0xAC, - 0xDE, 0x9B, 0x98, 0xC8, 0x86, 0x7C, 0xB2, 0xFB, 0xED, 0x75, 0xA4, 0x30, - 0xBF, 0x8A, 0x52, 0x95, 0x7E, 0xCF, 0x4B, 0x28, 0xF2, 0xA2, 0x2F, 0xB9, - 0xA2, 0x24, 0x93, 0xA3, 0x84, 0xCB, 0x2C, 0xC0, 0x7D, 0x2F, 0x6E, 0x35, - 0x33, 0x1B, 0x0F, 0x6E, 0xFF, 0x32, 0x92, 0x09, 0x17, 0x31, 0xE4, 0xFC, - 0x2C, 0x6A, 0x93, 0x1B, 0xFA, 0xA4, 0x87, 0x04, 0x9D, 0x1E, 0xCC, 0xC1, - 0xD4, 0x40, 0x83, 0x21, 0xB3, 0x5F, 0x3F, 0x68, 0x9C, 0x37, 0x68, 0x47, - 0x6A, 0x21, 0x98, 0xBC, 0x95, 0x50, 0xBE, 0xF7, 0xD4, 0x72, 0x20, 0x70, - 0x12, 0x4F, 0xCB, 0x77, 0xBF, 0x68, 0x5A, 0xCE, 0xB5, 0x13, 0xC6, 0x25, - 0x30, 0x75, 0xA4, 0xF6, 0xE9, 0xDC, 0xF5, 0xC2, 0xB0, 0x57, 0x55, 0xC3, - 0x69, 0xE5, 0xF1, 0xB9, 0xAE, 0x55, 0x69, 0x56, 0x5A, 0xBC, 0xCE, 0x0F, - 0x11, 0x32, 0x2A, 0xE9, 0x7E, 0x40, 0x40, 0xCC, 0xDD, 0x04, 0x62, 0x8B, - 0x3B, 0x57, 0xE5, 0x45, 0xCB, 0xEE, 0xF0, 0x3D, 0x6A, 0xAC, 0xDD, 0x83, - 0x7C, 0x2F, 0x66, 0x9A, 0x6C, 0x3B, 0xD1, 0x80, 0x85, 0xE6, 0xE7, 0xEA, - 0xE0, 0x89, 0x19, 0x0E, 0x5A, 0xDE, 0x7E, 0x8F, 0x6C, 0x05, 0xB3, 0xA5, - 0x89, 0x08, 0x45, 0x60, 0xA5, 0xE0, 0xB8, 0xD1, 0x7D, 0x45, 0xB6, 0x23, - 0x19, 0x84, 0x6A, 0xC2, 0x33, 0xD2, 0xD8, 0x9A, 0x87, 0xD0, 0xF4, 0xED, - 0x06, 0x11, 0x08, 0xF1, 0xF2, 0x92, 0xA5, 0x4D, 0xF6, 0xE7, 0xBF, 0x8E, - 0x3D, 0x01, 0x60, 0x50, 0xC0, 0x4F, 0xBB, 0x37, 0xAA, 0x8E, 0xE4, 0x81, - 0x9F, 0xBD, 0xDD, 0xA0, 0xA1, 0x00, 0xD8, 0x5C, 0x55, 0xB0, 0xCF, 0x39, - 0xEF, 0xA0, 0xE1, 0x4F, 0xA7, 0x5D, 0x46, 0x85, 0x11, 0x98, 0x8F, 0x9E, - 0xEB, 0x16, 0x0D, 0xF7, 0x0F, 0xEE, 0x9F, 0xBD, 0x22, 0x87, 0x0B, 0x10, - 0x0B, 0x9E, 0x4D, 0xC1, 0x5F, 0x82, 0xFA, 0xED, 0xCC, 0xAC, 0xB4, 0x62, - 0xCA, 0x57, 0x8B, 0xE7, 0x60, 0x5B, 0xCF, 0x9B, 0x78, 0xFB, 0x8D, 0x10, - 0xCD, 0x33, 0x68, 0x19, 0x25, 0x00, 0xCB, 0xD1, 0x13, 0xB4, 0xA3, 0x21, - 0x07, 0x5C, 0xED, 0xC5, 0xBB, 0xFA, 0x60, 0x8C, 0xB7, 0xD4, 0x41, 0x39, - 0x2D, 0x9E, 0x69, 0x3E, 0xC8, 0x25, 0x34, 0xA4, 0x5B, 0x52, 0xB3, 0xBD, - 0x33, 0xC9, 0x74, 0x7B, 0x7D, 0x46, 0x61, 0x9D, 0x9F, 0x28, 0xBC, 0xE6, - 0x53, 0xD3, 0xEA, 0x5E, 0xEF, 0xE3, 0x2E, 0xE8, 0x76, 0x68, 0x75, 0x80, - 0x98, 0x78, 0x9F, 0x20, 0xF8, 0x50, 0xB7, 0xA1, 0x88, 0x0C, 0x0B, 0xD6, - 0xF4, 0x84, 0x7C, 0xA5, 0x7D, 0xEE, 0xBB, 0xD6, 0x47, 0x30, 0x89, 0x5C, - 0xF6, 0xF3, 0x9F, 0x83, 0x56, 0xB5, 0x47, 0xCD, 0x9F, 0xD6, 0x50, 0x7A, - 0xD2, 0xE5, 0x3C, 0x36, 0x36, 0xBE, 0xBB, 0xAD, 0xB5, 0xDE, 0x92, 0x9F, - 0xAF, 0x06, 0x5E, 0x3E, 0x36, 0xB9, 0xC2, 0x53, 0xCA, 0x35, 0x21, 0x3E, - 0x4F, 0x83, 0x4C, 0x6B, 0x5E, 0x80, 0x98, 0x05, 0x49, 0xE7, 0x17, 0xC6, - 0x6E, 0x29, 0x41, 0xF1, 0x51, 0xB6, 0xDF, 0x97, 0x9C, 0x37, 0xEB, 0xD1, - 0x28, 0x57, 0xDD, 0xD5, 0x64, 0x93, 0x31, 0x80, 0x67, 0x67, 0x4B, 0xF3, - 0x08, 0x38, 0x6D, 0x8A, 0x0D, 0x50, 0x5D, 0x22, 0x03, 0xF2, 0x5F, 0x79, - 0x98, 0x87, 0x2D, 0x2D, 0x32, 0x91, 0xD9, 0x7C, 0x07, 0x8B, 0xA5, 0x83, - 0xC0, 0x89, 0xE1, 0x9D, 0x78, 0xF5, 0xB8, 0x88, 0x5F, 0xF6, 0x5C, 0x35, - 0x13, 0x2B, 0x07, 0xEA, 0xAB, 0xED, 0x98, 0x1D, 0xC2, 0x51, 0x56, 0x41, - 0x90, 0xA3, 0x0D, 0xB5, 0x96, 0xCB, 0x34, 0x1C, 0x6E, 0x43, 0x8F, 0xBF, - 0xB5, 0x6F, 0x5D, 0x5E, 0x94, 0x99, 0xC1, 0xD9, 0x12, 0x0F, 0x1D, 0x1E, - 0x16, 0x01, 0xA7, 0x71, 0xB1, 0xF5, 0x49, 0xE3, 0x77, 0x3D, 0x02, 0xCF, - 0xE2, 0x7C, 0x96, 0x77, 0x8B, 0xA8, 0x01, 0xFD, 0xC0, 0xB5, 0x58, 0x6E, - 0xA2, 0x57, 0xFF, 0x31, 0x20, 0x5D, 0x90, 0x59, 0x55, 0x42, 0xB5, 0x5E, - 0x8F, 0x4C, 0x23, 0x55, 0x23, 0x21, 0x4A, 0x79, 0x30, 0x9C, 0xF8, 0xB8, - 0xD4, 0x5F, 0x23, 0x66, 0xF4, 0x01, 0x96, 0x43, 0xF8, 0x2A, 0x20, 0xFD, - 0x04, 0x7E, 0xE4, 0xC3, 0x4B, 0xC3, 0x57, 0x85, 0x61, 0x15, 0x44, 0x7D, - 0x8B, 0xDC, 0x29, 0xA4, 0xDB, 0xE6, 0x2D, 0xCC, 0x3E, 0x12, 0x03, 0xEB, - 0xC3, 0xB9, 0xDC, 0xE0, 0x13, 0x74, 0x41, 0x2B, 0xF6, 0xEF, 0x67, 0xDD, - 0x1D, 0xEE, 0x8B, 0x07, 0x30, 0x68, 0xF8, 0x56, 0x64, 0x2B, 0x4E, 0xB1, - 0x19, 0xE3, 0xE7, 0xBE, 0x72, 0xD9, 0x50, 0x69, 0x3C, 0x21, 0xDA, 0xEE, - 0x63, 0x89, 0x5D, 0xB3, 0x79, 0xD8, 0xEF, 0x26, 0xE2, 0x1F, 0x66, 0x17, - 0x4C, 0x70, 0xCF, 0xDF, 0xC0, 0x9F, 0xE9, 0x8F, 0xA2, 0x88, 0xDB, 0xD2, - 0x7F, 0xDF, 0x32, 0xEA, 0xEF, 0x83, 0x4F, 0xC3, 0x6F, 0x7F, 0x0D, 0x4F, - 0x63, 0x00, 0xBA, 0xDD, 0x60, 0x37, 0x21, 0x02, 0xAF, 0x99, 0xE6, 0xDC, - 0x12, 0xF5, 0x4F, 0xCE, 0x9A, 0xC2, 0x19, 0xB9, 0xB2, 0x9E, 0x87, 0x83, - 0xA8, 0x06, 0x56, 0x7D, 0xB7, 0x7F, 0x73, 0x38, 0xDC, 0xE9, 0xC7, 0x75, - 0x63, 0xCA, 0x3C, 0x07, 0x06, 0x6A, 0x9E, 0x97, 0x14, 0x2E, 0xED, 0x40, - 0x58, 0x3D, 0x9F, 0x52, 0x8F, 0x52, 0x40, 0x3A, 0x2A, 0xBB, 0x3B, 0xE1, - 0x8B, 0xEA, 0xD4, 0xCD, 0xC0, 0xE9, 0x68, 0x15, 0x53, 0x93, 0x59, 0xC1, - 0x3A, 0x50, 0xD6, 0x98, 0xF5, 0x4E, 0xBC, 0x87, 0x3E, 0x3A, 0x2E, 0xB0, - 0x03, 0x88, 0x40, 0x5B, 0x6A, 0x9B, 0x6D, 0x3D, 0xCB, 0x6C, 0x1B, 0x0A, - 0xAA, 0x7F, 0xBC, 0xE1, 0x56, 0xF0, 0x62, 0x09, 0xC4, 0x04, 0xFB, 0xE2, - 0x61, 0xAA, 0xDE, 0x73, 0xF3, 0x37, 0xA9, 0x49, 0x98, 0x29, 0x05, 0x67, - 0x7C, 0xB8, 0x78, 0xFE, 0xD6, 0xF8, 0xBF, 0x59, 0xD4, 0xF5, 0x20, 0x37, - 0xCC, 0x4C, 0x5A, 0xC5, 0x26, 0x17, 0x34, 0x8D, 0xB0, 0x30, 0x79, 0x92, - 0x64, 0xAD, 0xFB, 0x6D, 0x73, 0xD9, 0xD2, 0x5D, 0x4C, 0x52, 0x86, 0xB2, - 0x4A, 0xE5, 0xDE, 0xF0, 0x58, 0x72, 0xE5, 0xB5, 0xC3, 0x83, 0xD4, 0xFC, - 0x7E, 0x2F, 0x2D, 0xAD, 0x90, 0x36, 0xCC, 0xD6, 0x49, 0x93, 0xFE, 0xA0, - 0x7A, 0xED, 0x8B, 0x85, 0x73, 0x65, 0x1A, 0xAD, 0xB2, 0xD5, 0xA1, 0x86, - 0x8A, 0x43, 0x81, 0xD9, 0x4F, 0xA0, 0x09, 0x4B, 0xBF, 0x2C, 0xBB, 0x12, - 0x5C, 0xFF, 0xB6, 0x56, 0x26, 0x83, 0x98, 0x7A, 0x31, 0x10, 0x72, 0x8F, - 0x4F, 0x38, 0x75, 0xA4, 0x5D, 0xC3, 0x49, 0x88, 0x0B, 0x15, 0x86, 0x2D, - 0x30, 0x2F, 0x8B, 0xAD, 0xC2, 0x5B, 0xBE, 0xC7, 0x79, 0x04, 0x6A, 0x36, - 0x2F, 0xD8, 0x27, 0xE2, 0xD9, 0x58, 0x2A, 0x0A, 0xA2, 0x14, 0xCB, 0x59, - 0x0F, 0xDC, 0x3C, 0x7D, 0x57, 0x0F, 0x47, 0x53, 0x1E, 0x3E, 0x99, 0x6E, - 0xF6, 0x3B, 0xE8, 0xCF, 0xE3, 0x13, 0x57, 0x14, 0xF5, 0x7C, 0x2F, 0x8B, - 0xD8, 0x83, 0x3B, 0x1A, 0x7D, 0x15, 0x0A, 0x8A, 0x67, 0x0F, 0x18, 0x21, - 0x09, 0x8E, 0xE7, 0x4E, 0xC2, 0x66, 0xF9, 0x53, 0x82, 0x24, 0x58, 0xF8, - 0x3E, 0x41, 0x34, 0x71, 0x8E, 0x99, 0x87, 0x27, 0xB9, 0x1F, 0x8A, 0xAD, - 0x56, 0x56, 0x2D, 0x49, 0x00, 0xA4, 0xB2, 0x89, 0xFB, 0x8F, 0x50, 0x11, - 0xEB, 0x17, 0x6A, 0x51, 0x39, 0xD0, 0x23, 0x1F, 0x76, 0xD6, 0xF8, 0x41, - 0x5B, 0x09, 0xDF, 0xEA, 0x8B, 0x4E, 0x86, 0x56, 0x12, 0x56, 0x99, 0x8D, - 0x1D, 0xC2, 0x15, 0x7C, 0x3C, 0x27, 0xAB, 0x6A, 0x48, 0x5A, 0x14, 0x25, - 0x1E, 0x69, 0x91, 0x03, 0x26, 0xF3, 0x87, 0xA5, 0x66, 0x14, 0x9E, 0xEA, - 0x78, 0xC7, 0xEC, 0x9B, 0x0A, 0x40, 0x56, 0x94, 0x78, 0x5A, 0x9D, 0x99, - 0xAD, 0xD3, 0xFB, 0xC9, 0x5D, 0xCE, 0x05, 0xAC, 0x6E, 0x95, 0x57, 0x6C, - 0x4E, 0x04, 0xB5, 0xE4, 0x3B, 0xEF, 0x82, 0x70, 0x1B, 0xC4, 0x38, 0x63, - 0x0C, 0x66, 0x47, 0xB9, 0xDF, 0x4B, 0xF5, 0xB1, 0xAC, 0xB9, 0xB2, 0xB5, - 0xF1, 0xF2, 0xE0, 0x67, 0x39, 0x62, 0x1C, 0x0A, 0x4F, 0x10, 0xFA, 0xDA, - 0xEC, 0x5A, 0xBD, 0x55, 0x82, 0xB9, 0x5F, 0xB9, 0x1C, 0x7B, 0xC3, 0x88, - 0x7F, 0xB6, 0x4A, 0x41, 0xA2, 0x02, 0xF2, 0x3E, 0xE0, 0x0F, 0x1C, 0xD6, - 0xC9, 0xB5, 0x6F, 0xFB, 0xD7, 0x16, 0x49, 0xB2, 0x14, 0xC9, 0x2C, 0x2B, - 0xC6, 0x45, 0x19, 0x84, 0x17, 0x87, 0xE1, 0xDC, 0x49, 0x48, 0x0B, 0x65, - 0x47, 0x2B, 0xFE, 0x7C, 0x75, 0x30, 0xFA, 0xB9, 0x40, 0x1C, 0xC2, 0xA2, - 0x10, 0x43, 0xDE, 0x5E, 0xF1, 0x4D, 0xCE, 0x56, 0xA9, 0x59, 0x5C, 0x7C, - 0x37, 0x9A, 0x17, 0x8A, 0xEA, 0x2D, 0xFF, 0x32, 0xF7, 0xB7, 0x01, 0xEE, - 0xB6, 0xC6, 0xA1, 0xD7, 0xBB, 0x79, 0x88, 0x2B, 0xC6, 0x52, 0x7E, 0xCD, - 0x75, 0x19, 0x88, 0xAB, 0x51, 0x67, 0xFC, 0x5C, 0x11, 0x79, 0x49, 0x66, - 0xE8, 0xE6, 0x48, 0x6B, 0x79, 0x0E, 0x35, 0x93, 0x1E, 0xD4, 0x1E, 0xD7, - 0xC8, 0x7A, 0xCE, 0x24, 0xF5, 0x01, 0x69, 0x16, 0xC1, 0xFB, 0x8B, 0x36, - 0x9E, 0x4F, 0x42, 0x0D, 0x7C, 0xB5, 0x8E, 0xDA, 0x2A, 0x07, 0x7D, 0xFF, - 0xB3, 0x19, 0xB6, 0x33, 0xF4, 0x2B, 0x25, 0xED, 0x7E, 0x21, 0xA2, 0x9A, - 0x26, 0x0E, 0x0A, 0xE0, 0x98, 0x1F, 0xAD, 0x79, 0xA6, 0x4C, 0xF6, 0x2D, - 0xD1, 0xE2, 0x2C, 0x4B, 0xEA, 0xAB, 0x5E, 0xEB, 0x9E, 0xB0, 0xF4, 0xB5, - 0xFC, 0xCC, 0x68, 0xFF, 0x35, 0x1D, 0xBF, 0xEE, 0x3B, 0x22, 0xC1, 0x95, - 0x4C, 0x39, 0x55, 0xE8, 0xEA, 0x80, 0xD4, 0x9E, 0x9C, 0x8D, 0xFF, 0x22, - 0x60, 0xC6, 0x56, 0x96, 0x86, 0x47, 0x3C, 0xA5, 0xB8, 0xD5, 0x35, 0x97, - 0xF7, 0x35, 0xC7, 0x08, 0x47, 0xE1, 0xAD, 0xC5, 0x28, 0x54, 0xCE, 0xF3, - 0xA9, 0x6A, 0x08, 0x38, 0xE9, 0x42, 0x6A, 0x2E, 0xC5, 0xC0, 0xA0, 0xA4, - 0x62, 0x7D, 0xE0, 0x6F, 0x56, 0x25, 0xEE, 0x90, 0xD9, 0x17, 0x05, 0x1A, - 0x0C, 0xAB, 0xD3, 0xD2, 0xBA, 0xDE, 0xAB, 0xBA, 0x8F, 0x85, 0x3E, 0xAF, - 0x2E, 0xA1, 0x53, 0x02, 0x8A, 0x55, 0x91, 0x88, 0xB8, 0x92, 0x3E, 0x11, - 0xEF, 0xB4, 0x2B, 0x81, 0xE3, 0xCD, 0x0D, 0xEB, 0xC2, 0x5E, 0x34, 0xCB, - 0x27, 0x56, 0x79, 0x69, 0xD8, 0x3A, 0xC3, 0x91, 0x94, 0x47, 0xE9, 0xFC, - 0x98, 0xA6, 0x74, 0x7E, 0xBE, 0x8D, 0x09, 0xB6, 0x5C, 0x46, 0xA4, 0xD1, - 0x7B, 0xF8, 0x78, 0x33, 0x88, 0xEF, 0xD6, 0x56, 0x66, 0x8B, 0x27, 0xB3, - 0x55, 0x27, 0xCB, 0xF5, 0xD1, 0x25, 0x15, 0x97, 0x70, 0x13, 0x09, 0x72, - 0xEB, 0xE1, 0xD3, 0xF9, 0x89, 0x75, 0x27, 0xF5, 0xA3, 0xA3, 0x00, 0xD6, - 0x11, 0x1B, 0x09, 0xF9, 0xB9, 0x0B, 0x8C, 0xBA, 0x40, 0xC0, 0x3F, 0x87, - 0xCF, 0xC5, 0xAB, 0xB0, 0x50, 0x99, 0x72, 0x5E, 0xF6, 0x73, 0x48, 0xE8, - 0x0B, 0x4C, 0xDE, 0x49, 0xC0, 0xD7, 0x73, 0x21, 0x21, 0x2C, 0x22, 0x4D, - 0x9D, 0xF9, 0x48, 0xA0, 0x84, 0x1B, 0xCC, 0x34, 0x2F, 0x1C, 0x58, 0x7E, - 0xC4, 0x75, 0xB5, 0x75, 0x28, 0xBC, 0xF8, 0x9C, 0x5D, 0xEA, 0x3C, 0x94, - 0xF3, 0x5F, 0x0A, 0x90, 0x4C, 0x64, 0xE4, 0xC2, 0x70, 0x69, 0x79, 0xC4, - 0x28, 0xDF, 0x94, 0x10, 0x43, 0x6F, 0xAD, 0x9A, 0xCC, 0xF3, 0x74, 0x28, - 0xBA, 0xDB, 0x8F, 0xE5, 0x5D, 0x1F, 0x2D, 0xDB, 0x0A, 0x99, 0x36, 0xA4, - 0x50, 0x93, 0x53, 0xAC, 0x37, 0x71, 0x59, 0x64, 0xFC, 0xD1, 0x89, 0x4F, - 0x9E, 0x3A, 0xDC, 0x2C, 0xBB, 0x78, 0x1F, 0x19, 0x63, 0xD7, 0xB2, 0x55, - 0xF8, 0x96, 0xFC, 0x19, 0xA6, 0x46, 0xC5, 0xFB, 0xCC, 0x69, 0x97, 0xD4, - 0x08, 0x3F, 0xD3, 0xB7, 0x27, 0xD0, 0x52, 0x48, 0x0D, 0x42, 0xE3, 0x49, - 0xFE, 0xDE, 0x4C, 0x04, 0x3F, 0x81, 0x48, 0x44, 0x88, 0x29, 0x38, 0x11, - 0x2A, 0x1F, 0x2B, 0x33, 0x13, 0x0F, 0x0F, 0x44, 0xAC, 0xEB, 0xBA, 0xE1, - 0x83, 0x15, 0x83, 0x52, 0x50, 0xD2, 0x80, 0x28, 0xED, 0x76, 0xE3, 0x59, - 0xC8, 0xC1, 0x8C, 0x41, 0x22, 0xBC, 0xD9, 0x5F, 0x50, 0x40, 0xFF, 0x5F, - 0x66, 0x69, 0x1B, 0xD5, 0x47, 0x76, 0x44, 0xC0, 0x85, 0xB5, 0x55, 0x70, - 0x13, 0xAC, 0xEE, 0x11, 0x61, 0xAC, 0xFE, 0x1A, 0xA7, 0x43, 0xA9, 0x6D, - 0xB7, 0x94, 0x50, 0x81, 0x8D, 0xBE, 0xCC, 0xCE, 0xED, 0x62, 0xC4, 0x1B, - 0x97, 0xFD, 0x10, 0x14, 0xE6, 0x0E, 0x11, 0x16, 0x95, 0x6A, 0x5E, 0x0F, - 0x87, 0x88, 0x72, 0xA7, 0x32, 0x9A, 0x05, 0xA2, 0xC0, 0xD3, 0x23, 0x0C, - 0xC0, 0x34, 0x93, 0x80, 0x51, 0x40, 0x9A, 0x25, 0x4D, 0x5D, 0x70, 0x87, - 0x4C, 0xCE, 0x45, 0xE2, 0x2D, 0x42, 0x5A, 0x36, 0x5A, 0x2A, 0x69, 0xF2, - 0x81, 0xA0, 0x90, 0xFF, 0xEB, 0xB5, 0x5A, 0x6B, 0xB5, 0x9F, 0x15, 0x6A, - 0x0A, 0x39, 0xF0, 0x3A, 0x3F, 0xA7, 0x8F, 0xF5, 0x1B, 0x81, 0xA9, 0x7F, - 0xDF, 0x49, 0xEA, 0xC3, 0x6B, 0xC5, 0xC3, 0x23, 0xE5, 0x08, 0x8D, 0xFC, - 0xDE, 0x55, 0xEA, 0x65, 0xBE, 0x6E, 0x19, 0xB5, 0xAC, 0xD1, 0xE3, 0xC8, - 0x70, 0x41, 0x40, 0x29, 0xCC, 0xE1, 0xEA, 0x47, 0xC9, 0xB4, 0xB4, 0x86, - 0x4C, 0xCC, 0x50, 0x54, 0x46, 0xC1, 0x5A, 0xC0, 0x23, 0xEE, 0xF0, 0x4E, - 0x7C, 0xEA, 0x5C, 0x22, 0x3D, 0x6E, 0x0C, 0xA2, 0x34, 0x11, 0x69, 0x89, - 0x5A, 0x95, 0xEB, 0x2A, 0x75, 0x13, 0x81, 0x8A, 0x14, 0xD0, 0x9F, 0x78, - 0x90, 0x3F, 0xBC, 0xE6, 0x64, 0x82, 0x7B, 0xF3, 0x5E, 0x40, 0x11, 0x1B, - 0xF9, 0x21, 0x6A, 0x8F, 0x8B, 0x63, 0xCB, 0xD7, 0x1E, 0x02, 0x05, 0xC6, - 0x69, 0xAF, 0x0C, 0x3B, 0xAE, 0x7B, 0x53, 0x6F, 0x5B, 0x99, 0x1D, 0x46, - 0x81, 0x99, 0xF2, 0xC6, 0xEE, 0xDB, 0x2E, 0x23, 0xC3, 0xBB, 0x44, 0xB2, - 0xD3, 0xC5, 0x6D, 0x96, 0xBA, 0x7F, 0x70, 0x78, 0xC2, 0x31, 0xD8, 0xF5, - 0x40, 0xD8, 0xB0, 0x2A, 0x48, 0x09, 0xB5, 0x91, 0x77, 0x35, 0x9B, 0x2E, - 0x87, 0xEF, 0x9E, 0x37, 0xA3, 0x2B, 0x68, 0xC4, 0xA2, 0x01, 0x48, 0x51, - 0x5C, 0xEF, 0xE7, 0x47, 0x97, 0x55, 0x85, 0x24, 0xCE, 0x8C, 0x20, 0xFF, - 0x9D, 0x7E, 0x4D, 0x09, 0xC3, 0xDE, 0x50, 0xDA, 0x52, 0x41, 0xCE, 0x75, - 0x57, 0x2C, 0xDC, 0x45, 0x21, 0x33, 0xFB, 0x8C, 0x72, 0xA4, 0x03, 0xF1, - 0xEB, 0x86, 0x0D, 0x61, 0xA7, 0x95, 0xA4, 0xE7, 0xAD, 0x5A, 0x89, 0xCB, - 0x99, 0x02, 0xA1, 0xE9, 0x16, 0x64, 0x84, 0x18, 0xF6, 0x0F, 0x0E, 0x25, - 0x45, 0x22, 0x5C, 0x56, 0x59, 0x6D, 0x61, 0xAD, 0xC0, 0x05, 0x9A, 0x40, - 0xD3, 0xCE, 0xE7, 0xA3, 0x92, 0x38, 0x3A, 0xEF, 0xA9, 0xE0, 0x08, 0x35, - 0x6D, 0x5B, 0x38, 0x40, 0x15, 0x6D, 0xE0, 0x4A, 0x43, 0x4B, 0x63, 0xDA, - 0x6A, 0x07, 0x7E, 0xB1, 0xCD, 0x12, 0xDC, 0x05, 0xA2, 0x23, 0x57, 0x28, - 0x7A, 0x0D, 0xB4, 0x89, 0xBD, 0xA3, 0xDB, 0xF4, 0x70, 0x8B, 0x12, 0xFC, - 0xD0, 0x75, 0x40, 0x7D, 0x92, 0x8C, 0x5C, 0xD7, 0xA7, 0xE4, 0x6D, 0x7B, - 0x92, 0x89, 0x0C, 0xF4, 0xFA, 0xE5, 0x49, 0x15, 0x80, 0x68, 0x88, 0x25, - 0xC5, 0x93, 0xAF, 0x78, 0x8E, 0x92, 0x31, 0xE8, 0xBA, 0x9B, 0xEC, 0x93, - 0x2E, 0x06, 0xBC, 0x87, 0x30, 0x6E, 0x6F, 0x42, 0x31, 0xC6, 0xCD, 0xEA, - 0xE2, 0x43, 0xDF, 0xA6, 0x2C, 0xFE, 0x05, 0x4E, 0x63, 0xD6, 0x63, 0xD8, - 0x46, 0x56, 0xD8, 0xB2, 0x6E, 0x4F, 0xDC, 0xF5, 0x23, 0xDE, 0x49, 0xAD, - 0xE8, 0x2D, 0x00, 0xEA, 0xAD, 0xE6, 0xE4, 0x4A, 0x48, 0x78, 0x20, 0xCC, - 0xC0, 0x47, 0x22, 0xB4, 0xB3, 0xB8, 0xAF, 0x71, 0x1D, 0x89, 0x68, 0xD6, - 0x18, 0x70, 0x34, 0xAD, 0xFF, 0x99, 0xB3, 0x41, 0xD4, 0x6B, 0x93, 0xB5, - 0x47, 0x54, 0xB3, 0x7D, 0xF5, 0x5F, 0xA3, 0x6E, 0x54, 0x1A, 0x59, 0x11, - 0x53, 0x83, 0xAC, 0x23, 0xC2, 0x1F, 0x39, 0x64, 0x11, 0x67, 0x11, 0xBF, - 0x50, 0xDB, 0x5D, 0x1D, 0x74, 0x48, 0xDC, 0xF3, 0xBE, 0x55, 0xAA, 0x53, - 0xDB, 0xC8, 0x5C, 0x79, 0xEA, 0xB3, 0x28, 0x7A, 0xB6, 0xDB, 0x71, 0x7F, - 0xD7, 0xCF, 0x39, 0x77, 0xFD, 0xCE, 0x8B, 0x9F, 0x1A, 0x27, 0x14, 0x3C, - 0x78, 0x58, 0x18, 0xE5, 0x93, 0xDD, 0x81, 0x24, 0xF8, 0xFE, 0x97, 0x3C, - 0xA8, 0x8F, 0xFE, 0x6C, 0xA1, 0xDB, 0xE2, 0xCF, 0x59, 0x9B, 0x28, 0xC2, - 0xAB, 0x59, 0x13, 0x98, 0xDD, 0x2F, 0x03, 0xD0, 0x05, 0x93, 0x72, 0x97, - 0x07, 0xA0, 0xBC, 0xC3, 0x8B, 0x47, 0xDF, 0x55, 0x1C, 0x0E, 0x70, 0x6D, - 0xEF, 0x48, 0x0E, 0x33, 0x0D, 0x5F, 0x05, 0xF5, 0x98, 0xAC, 0xE3, 0xEE, - 0x8F, 0x9D, 0xBD, 0x84, 0xB7, 0x9C, 0x8C, 0x06, 0x60, 0x86, 0xB1, 0xDE, - 0x80, 0xB3, 0xAC, 0xD7, 0xE8, 0x35, 0xDC, 0x51, 0x57, 0x8F, 0xE8, 0x7A, - 0xC8, 0xC2, 0x46, 0x3A, 0x22, 0x4D, 0x15, 0x6B, 0x9E, 0x0A, 0xB3, 0xFF, - 0x11, 0xD9, 0x2D, 0xE0, 0x5A, 0x32, 0xBB, 0x0D, 0x72, 0x0F, 0x8B, 0xB2, - 0xD9, 0x86, 0x2D, 0x5F, 0x57, 0x92, 0xBF, 0xAF, 0x00, 0x5C, 0xE2, 0x54, - 0x91, 0x51, 0x22, 0xA9, 0x3A, 0x48, 0x9F, 0x8E, 0xF0, 0xA8, 0x04, 0x1F, - 0xD3, 0x58, 0x00, 0xB3, 0xDC, 0x7B, 0x99, 0x74, 0x18, 0x12, 0x44, 0x35, - 0x65, 0x1A, 0x1E, 0x95, 0xCC, 0x73, 0x53, 0xBB, 0xFC, 0x90, 0x07, 0x68, - 0x2B, 0x46, 0x69, 0xF2, 0x68, 0x6E, 0x62, 0x31, 0x5B, 0x11, 0x10, 0x9C, - 0x18, 0x70, 0x29, 0x0D, 0x1A, 0x88, 0xD8, 0xA5, 0xC6, 0x2C, 0xAA, 0xB7, - 0x80, 0xC6, 0x36, 0xB0, 0x4E, 0x3C, 0x68, 0x74, 0xB8, 0xFE, 0xF6, 0x82, - 0x5D, 0x74, 0x71, 0xBE, 0xD1, 0x3C, 0xE0, 0x2D, 0x20, 0x3A, 0x36, 0xA9, - 0x87, 0x76, 0xAA, 0x16, 0xB7, 0x6F, 0xB8, 0x66, 0x05, 0xEB, 0x63, 0x15, - 0xB6, 0xDE, 0x01, 0x49, 0xF5, 0x01, 0x37, 0xF0, 0x98, 0x11, 0xC9, 0x43, - 0x5D, 0xCB, 0x04, 0x48, 0x75, 0xD4, 0x73, 0x97, 0xE6, 0xD5, 0xEF, 0x97, - 0x8C, 0xF7, 0x37, 0xC8, 0xDA, 0xAB, 0x53, 0x12, 0x44, 0xF5, 0x72, 0xE7, - 0x58, 0xBD, 0x2A, 0x65, 0xE5, 0x79, 0x8D, 0xA5, 0x50, 0xBF, 0x3E, 0x3B, - 0x36, 0x9D, 0x48, 0x73, 0xA0, 0x17, 0x4C, 0x8E, 0x82, 0x98, 0xD0, 0xFD, - 0xB1, 0xDB, 0x16, 0xBE, 0x05, 0x70, 0xBE, 0xEF, 0x43, 0x8A, 0xE8, 0xB8, - 0x79, 0x83, 0xBC, 0x3B, 0x23, 0x94, 0xAD, 0xA8, 0xD9, 0x98, 0x74, 0x4C, - 0x91, 0x48, 0x22, 0x96, 0x7D, 0x0E, 0x78, 0xF9, 0x35, 0xC0, 0xAE, 0xFD, - 0x0A, 0xB0, 0xF0, 0x6C, 0xA7, 0x51, 0x4D, 0x44, 0xD9, 0xBD, 0x84, 0x76, - 0x48, 0x4A, 0x66, 0x41, 0x55, 0xA6, 0xBE, 0xA4, 0xA2, 0x3E, 0xDE, 0xA0, - 0xE4, 0x6F, 0xB9, 0xB2, 0xED, 0x74, 0xE2, 0x36, 0x2F, 0x54, 0x64, 0x9C, - 0x41, 0xE6, 0xE3, 0xC8, 0x35, 0x23, 0xD5, 0x61, 0x0E, 0x03, 0xCA, 0xFA, - 0x17, 0xED, 0x05, 0x69, 0x9C, 0x7A, 0x58, 0x4D, 0x16, 0x34, 0x15, 0xA3, - 0x5B, 0x0C, 0x87, 0x0F, 0x02, 0xD2, 0xB3, 0xAF, 0x00, 0xC2, 0x1D, 0x39, - 0x87, 0x21, 0xF3, 0x9F, 0x96, 0xD2, 0xA1, 0x8C, 0xBE, 0xFB, 0xF4, 0xAB, - 0x0B, 0x65, 0x3A, 0xF9, 0xB7, 0x00, 0x91, 0x53, 0xE6, 0xF8, 0x9E, 0xD3, - 0x65, 0xFE, 0xEB, 0x00, 0x6D, 0x15, 0x00, 0x7A, 0x4D, 0xE8, 0xD2, 0xF9, - 0xB7, 0xBC, 0x41, 0xBC, 0x90, 0x29, 0xEF, 0x72, 0xAE, 0x38, 0xE8, 0x25, - 0x77, 0xEC, 0x55, 0xFF, 0x1D, 0x71, 0x79, 0x8E, 0x7F, 0x32, 0x87, 0x39, - 0x46, 0x58, 0x06, 0x19, 0xBB, 0xC0, 0x77, 0x5A, 0x3E, 0xB5, 0xE2, 0x35, - 0x7C, 0x24, 0xB5, 0xCC, 0x68, 0xA3, 0x2C, 0xC2, 0xF4, 0x48, 0x39, 0x21, - 0x25, 0x46, 0xE1, 0x2B, 0x08, 0x8D, 0x5E, 0xDC, 0x85, 0x4E, 0x03, 0x59, - 0x21, 0x42, 0x2C, 0x0F, 0x65, 0xC8, 0xF9, 0x27, 0x7C, 0x28, 0x0A, 0xAF, - 0x2E, 0x88, 0x88, 0x0E, 0xB7, 0xB7, 0xB7, 0x01, 0xCA, 0xD8, 0x19, 0xC8, - 0x43, 0xE5, 0xCD, 0xBB, 0xBE, 0xC2, 0x74, 0xDE, 0x1F, 0xBA, 0x0B, 0x4C, - 0x40, 0x30, 0xEA, 0xC4, 0x76, 0xE7, 0x30, 0xE9, 0xDA, 0x19, 0x30, 0x33, - 0x86, 0xD8, 0xC7, 0x47, 0xB3, 0xBB, 0x7A, 0x0D, 0x5F, 0xF1, 0x44, 0x8A, - 0xE5, 0x2F, 0x86, 0xC9, 0xCF, 0x5A, 0xF5, 0x12, 0xA1, 0xC8, 0x7B, 0x5F, - 0x83, 0x98, 0x96, 0x2D, 0x6A, 0x99, 0xE8, 0xE5, 0xD7, 0x4E, 0x6D, 0x0A, - 0x51, 0xCA, 0x90, 0x8F, 0x17, 0x4A, 0x02, 0x94, 0xAF, 0xBC, 0xB9, 0x64, - 0x2A, 0xFD, 0x29, 0x84, 0x40, 0x53, 0x71, 0xD6, 0x85, 0xEF, 0x26, 0xD4, - 0x33, 0x6C, 0x18, 0x8C, 0x4F, 0x4A, 0xFB, 0xA9, 0xAC, 0x24, 0x63, 0xED, - 0x61, 0x20, 0x9C, 0x3A, 0xF0, 0xCF, 0x60, 0xDB, 0xA2, 0xB8, 0xB7, 0x61, - 0xB7, 0x0E, 0x68, 0xC3, 0xCB, 0x08, 0x69, 0xA2, 0x08, 0x7B, 0xB4, 0xCB, - 0xBA, 0x4A, 0x89, 0x26, 0x38, 0xED, 0x8D, 0x7B, 0x56, 0x27, 0xE1, 0x00, - 0xB9, 0x18, 0x7F, 0xDC, 0x42, 0x7C, 0x0D, 0xD6, 0x58, 0x93, 0xC9, 0x6F, - 0x56, 0x22, 0x9A, 0x8C, 0x80, 0x19, 0xBA, 0x0F, 0xE0, 0x52, 0x22, 0x1D, - 0x98, 0xA7, 0x98, 0x85, 0xCE, 0x21, 0xE2, 0x6E, 0x70, 0x9E, 0x4F, 0xE5, - 0x04, 0x35, 0xEA, 0x66, 0x88, 0x22, 0x63, 0xB9, 0x17, 0x1A, 0xFA, 0x56, - 0x35, 0x06, 0xB4, 0x27, 0x2C, 0x8F, 0xE3, 0x13, 0x47, 0xCC, 0xA8, 0xC6, - 0x46, 0x54, 0x57, 0xD8, 0x70, 0xFF, 0x86, 0x4C, 0xB3, 0xF2, 0x0E, 0x29, - 0x5E, 0xD8, 0x88, 0x4C, 0x5A, 0x16, 0x1A, 0x79, 0x41, 0x87, 0x70, 0x52, - 0x1E, 0xBA, 0x02, 0xCC, 0xA3, 0xC9, 0xEF, 0x53, 0x12, 0x56, 0x6D, 0x55, - 0xBF, 0x8B, 0xAF, 0xFD, 0x12, 0xE0, 0x2D, 0x27, 0x83, 0x9F, 0x8E, 0x2E, - 0x1B, 0x7A, 0x22, 0x6D, 0xF9, 0x59, 0xF9, 0x63, 0x7F, 0xB0, 0xBF, 0x05, - 0x97, 0x78, 0x2E, 0x67, 0xC3, 0xA8, 0x4B, 0x16, 0xCB, 0x72, 0x47, 0xFD, - 0x0C, 0x0F, 0xAE, 0xC9, 0xB4, 0xB6, 0xE8, 0x99, 0xAA, 0xA3, 0x60, 0xF4, - 0xD2, 0x07, 0xF5, 0x82, 0xDA, 0x7B, 0xE6, 0x6E, 0xCC, 0x85, 0xD3, 0x2E, - 0xC1, 0x13, 0x3D, 0x32, 0xBE, 0xBB, 0x25, 0xA5, 0x2E, 0x00, 0xAA, 0x28, - 0x63, 0x2B, 0x61, 0x3E, 0x7F, 0x34, 0xA0, 0x83, 0xCE, 0xEC, 0x44, 0x72, - 0x29, 0x1F, 0x81, 0x62, 0x8A, 0xED, 0x9D, 0x5F, 0xFD, 0xFE, 0x14, 0x52, - 0x9C, 0xFC, 0xB4, 0x04, 0x70, 0x0A, 0x27, 0x7E, 0x94, 0x69, 0x13, 0x80, - 0x97, 0xCC, 0xD2, 0x69, 0xDD, 0xD1, 0x38, 0xFA, 0x51, 0x88, 0xC0, 0x9D, - 0xB6, 0x14, 0xE3, 0x20, 0xEB, 0x69, 0x62, 0xF4, 0xB7, 0x07, 0xF2, 0x6F, - 0xFE, 0xDA, 0xE3, 0xF9, 0x7A, 0x64, 0x70, 0xAD, 0x11, 0x10, 0x54, 0x6B, - 0x9F, 0x8B, 0x48, 0x9C, 0x19, 0x27, 0x83, 0x20, 0x29, 0x3E, 0x7C, 0x57, - 0x0E, 0x6E, 0x4F, 0x0B, 0xB7, 0xB2, 0x6D, 0x61, 0x52, 0xE0, 0xE5, 0x67, - 0xDB, 0xF9, 0x96, 0xBA, 0xF2, 0xA6, 0x4D, 0x2A, 0x98, 0xDF, 0x2F, 0x03, - 0xD1, 0x78, 0xB4, 0xF9, 0x08, 0x2A, 0x7C, 0xBA, 0xD6, 0x53, 0x57, 0x6A, - 0x2C, 0x8D, 0xF4, 0xDC, 0xA9, 0x05, 0x00, 0xA6, 0x8C, 0xFB, 0xFF, 0x45, - 0x13, 0xF4, 0xE8, 0xBD, 0xB5, 0xF4, 0x1D, 0xF7, 0x5F, 0x32, 0xC8, 0x30, - 0x1F, 0xD5, 0x0A, 0xC7, 0xA4, 0x28, 0x06, 0xFF, 0x44, 0x18, 0x43, 0x1A, - 0x8C, 0x63, 0x81, 0x2B, 0x16, 0x4C, 0xE4, 0xB0, 0xF4, 0x9A, 0x49, 0x09, - 0x7B, 0x8B, 0x6F, 0x93, 0x2E, 0xEC, 0x8C, 0x4F, 0x71, 0x01, 0xFF, 0x54, - 0x90, 0x1B, 0x6C, 0xF1, 0x9B, 0xB1, 0x06, 0xDA, 0xFC, 0xD4, 0xD6, 0xFB, - 0x10, 0xDA, 0x46, 0x8C, 0x0E, 0xAF, 0xF8, 0x19, 0xC0, 0x35, 0xA5, 0xD2, - 0x74, 0xFD, 0x25, 0xEF, 0xDD, 0x2E, 0x9C, 0x0B, 0xE1, 0x17, 0xD5, 0x0C, - 0xFB, 0xC1, 0xA8, 0xE6, 0x4A, 0x44, 0x0A, 0xF2, 0x48, 0xA2, 0x07, 0x42, - 0x3C, 0x36, 0xC5, 0xD7, 0x45, 0x9D, 0xDB, 0xA6, 0x4B, 0x30, 0xC1, 0x3A, - 0xB0, 0x31, 0x88, 0x0E, 0xB1, 0x38, 0x4E, 0x34, 0xF9, 0x33, 0xE2, 0x8A, - 0x0B, 0xF7, 0x7C, 0xF1, 0xE3, 0x07, 0x5A, 0xA0, 0x63, 0x12, 0x22, 0xFD, - 0x44, 0x8A, 0xE7, 0x35, 0xF7, 0x24, 0xAD, 0x6F, 0xBA, 0xC1, 0xA3, 0x2F, - 0x6C, 0x58, 0xF3, 0xD3, 0x13, 0x4D, 0x21, 0x0A, 0xA1, 0x1C, 0x54, 0xAA, - 0x5E, 0x35, 0xEF, 0x00, 0x48, 0xE8, 0xDE, 0x56, 0xA4, 0xFF, 0xBB, 0xD9, - 0xF9, 0xA7, 0x0D, 0x83, 0x08, 0x8B, 0x41, 0xDC, 0x63, 0xA4, 0x40, 0x62, - 0x46, 0xAD, 0x57, 0x49, 0x43, 0x67, 0x6D, 0x43, 0x23, 0x19, 0x7E, 0x17, - 0xF6, 0xEF, 0xDE, 0x07, 0xF2, 0x5D, 0x11, 0x78, 0x42, 0x8D, 0x11, 0xEF, - 0x9F, 0x4A, 0xA6, 0xCE, 0x95, 0x92, 0x34, 0x20, 0x02, 0x95, 0xB9, 0xA8, - 0x16, 0xF5, 0x5E, 0x2F, 0x7C, 0xF8, 0xE2, 0x07, 0xB8, 0xF4, 0x07, 0x30, - 0x1C, 0x77, 0xD3, 0x46, 0x11, 0x07, 0x8D, 0x6D, 0x69, 0x87, 0xB4, 0x91, - 0xCB, 0x72, 0x8E, 0x2D, 0xAD, 0x0E, 0xCD, 0x97, 0x8C, 0xA4, 0x0D, 0x05, - 0x93, 0xAF, 0x42, 0xDE, 0x74, 0xF8, 0x97, 0x3B, 0x7F, 0xBF, 0x4D, 0x6A, - 0x12, 0xE4, 0xE2, 0xF2, 0xAF, 0x6D, 0x1F, 0x31, 0xCA, 0x81, 0x33, 0x2F, - 0x42, 0x42, 0xCE, 0x48, 0x31, 0xD9, 0x09, 0x2A, 0x70, 0xDF, 0x75, 0xE3, - 0x9C, 0x42, 0xEF, 0x8A, 0xB1, 0x96, 0x6B, 0xA1, 0xBC, 0x2C, 0x84, 0x77, - 0xE9, 0x3D, 0x13, 0x3C, 0x04, 0x9F, 0xC8, 0x70, 0xC3, 0x26, 0xF0, 0xE3, - 0xC5, 0x04, 0xD3, 0xEA, 0x02, 0x10, 0x7E, 0xD2, 0xB5, 0x32, 0x87, 0x8D, - 0x02, 0xA8, 0x1B, 0x19, 0x7D, 0x6A, 0x54, 0x45, 0x62, 0x06, 0xD3, 0x28, - 0x32, 0xAC, 0x2A, 0x1E, 0xA1, 0xC3, 0x56, 0x96, 0xCB, 0xA4, 0x3A, 0x6F, - 0xCB, 0x2B, 0xBC, 0xCF, 0x7F, 0x75, 0xE9, 0x05, 0x12, 0x24, 0xC0, 0xD4, - 0x97, 0xAB, 0xCF, 0x4D, 0x38, 0x23, 0x87, 0xE6, 0x3D, 0x22, 0xE6, 0x3D, - 0xE1, 0xE7, 0x45, 0xF6, 0x62, 0xF3, 0xAB, 0x9B, 0x0C, 0x11, 0x23, 0x57, - 0x56, 0x57, 0xB7, 0xD8, 0x58, 0x37, 0x5A, 0x8C, 0x1F, 0x31, 0xA8, 0x29, - 0x1A, 0x04, 0xE2, 0xA7, 0x4A, 0xC7, 0x27, 0xCC, 0x39, 0x0E, 0xEF, 0x7F, - 0xD4, 0xE1, 0x46, 0xCD, 0xCC, 0x96, 0x22, 0xBC, 0x0E, 0xDD, 0xDF, 0xCA, - 0xDB, 0x77, 0x65, 0x49, 0x7C, 0x2F, 0x2C, 0xC0, 0x94, 0x05, 0x71, 0xC2, - 0x23, 0x5E, 0x74, 0xC3, 0x4E, 0x59, 0xA9, 0xE2, 0xD1, 0x0F, 0x2B, 0x68, - 0x5E, 0x6C, 0x6B, 0x3C, 0xD4, 0x7C, 0x42, 0xE4, 0x26, 0x79, 0xAE, 0xFB, - 0x14, 0x65, 0x56, 0x75, 0x6F, 0xA6, 0x70, 0xB9, 0x2E, 0x28, 0x94, 0xF1, - 0xD2, 0xE3, 0xDA, 0x1C, 0x4B, 0xF2, 0x71, 0x8A, 0xED, 0xE6, 0x20, 0x1C, - 0xF4, 0xEE, 0x63, 0xBB, 0x74, 0x73, 0x61, 0xD9, 0x55, 0x84, 0xED, 0xD9, - 0x59, 0x1B, 0x47, 0x8B, 0xE5, 0xEF, 0xBF, 0xA5, 0x78, 0xB4, 0x99, 0x7E, - 0xF3, 0x31, 0x59, 0x2A, 0xC8, 0x23, 0xB9, 0x0A, 0x81, 0xE2, 0x4C, 0x8A, - 0x97, 0xBC, 0x74, 0x08, 0xE4, 0x35, 0x2D, 0xD1, 0x3C, 0xBA, 0xF2, 0x20, - 0x51, 0x76, 0xF8, 0xFD, 0x20, 0x5D, 0xD2, 0x63, 0x7D, 0xA3, 0xEF, 0x7D, - 0x56, 0x46, 0x44, 0x86, 0x29, 0x70, 0xC3, 0x5F, 0x1B, 0xC6, 0x3D, 0x42, - 0xD3, 0x69, 0x78, 0x5C, 0xD3, 0xD4, 0x79, 0x3B, 0x0B, 0x81, 0x48, 0x00, - 0xAA, 0xEA, 0x4C, 0x95, 0x56, 0x20, 0xE8, 0xB1, 0xB6, 0xE9, 0xA7, 0xD6, - 0x0F, 0x4F, 0x5B, 0xB1, 0xC3, 0xCD, 0xF6, 0x43, 0x83, 0x6C, 0x4C, 0xA3, - 0x17, 0x58, 0xAB, 0x06, 0x68, 0xBB, 0x14, 0x50, 0x07, 0xBC, 0x7B, 0x75, - 0x9B, 0x5F, 0x96, 0xC6, 0x79, 0xFF, 0x3C, 0x6A, 0x05, 0x5B, 0xA4, 0x63, - 0xA3, 0x93, 0x6F, 0x6F, 0x87, 0xE8, 0xAF, 0x44, 0x48, 0x02, 0x49, 0x4C, - 0xED, 0x8C, 0x3A, 0x51, 0x50, 0x43, 0x6F, 0xE6, 0x2A, 0x5E, 0x47, 0x25, - 0x05, 0xFB, 0x68, 0x17, 0x2D, 0x90, 0xEB, 0xE2, 0x76, 0xAB, 0x6B, 0x99, - 0xB3, 0x84, 0x59, 0xD0, 0xFD, 0x6A, 0x60, 0x6E, 0x4F, 0x46, 0xA0, 0x37, - 0xE7, 0x06, 0xB6, 0x15, 0xC9, 0x00, 0xEC, 0x00, 0x38, 0x0A, 0x8F, 0x81, - 0xDB, 0xAB, 0xBA, 0xE7, 0xD3, 0x88, 0xF0, 0x1B, 0x5D, 0xE9, 0x41, 0xAC, - 0xA0, 0xBC, 0x47, 0x93, 0x73, 0x04, 0x72, 0x88, 0x63, 0x91, 0xD8, 0x60, - 0x82, 0xAA, 0x2D, 0x49, 0xA4, 0xFF, 0xFF, 0x0C, 0xCF, 0x16, 0x73, 0x74, - 0xFE, 0x5F, 0x72, 0x90, 0x8C, 0x5E, 0x82, 0x2D, 0x6E, 0xDA, 0x8B, 0x30, - 0xA6, 0x39, 0xFB, 0x2A, 0x92, 0xC5, 0x0D, 0x49, 0x3A, 0x59, 0x3E, 0x0D, - 0xA7, 0xBB, 0x0B, 0x28, 0x46, 0x99, 0x6E, 0x7E, 0x6C, 0xD7, 0x6B, 0x89, - 0x8D, 0x1A, 0x85, 0x1D, 0x7E, 0x1A, 0xE8, 0xC8, 0xEF, 0x8F, 0xDD, 0x00, - 0xF8, 0x4F, 0xAE, 0x12, 0xF6, 0x88, 0x91, 0x36, 0xF9, 0xDB, 0x09, 0xDD, - 0xF7, 0xD5, 0xB3, 0xC8, 0x90, 0x0C, 0xC4, 0xB0, 0x45, 0xD2, 0x96, 0xBF, - 0x61, 0xE3, 0xD8, 0xD1, 0x4F, 0xDB, 0x1B, 0xF6, 0xA8, 0x0D, 0x40, 0xF0, - 0xEF, 0x23, 0x26, 0x2F, 0x25, 0xAB, 0x0E, 0x15, 0xB6, 0x90, 0x1F, 0xA3, - 0x6B, 0xEE, 0x93, 0xD4, 0x57, 0xA7, 0x78, 0x39, 0xB4, 0x79, 0x2B, 0x9E, - 0xE7, 0xFA, 0x2E, 0x1D, 0xAA, 0x41, 0xEB, 0x87, 0x99, 0x4E, 0x78, 0x42, - 0x47, 0x9D, 0x43, 0x80, 0x9F, 0x56, 0x13, 0x5E, 0x3D, 0x95, 0xF8, 0xB4, - 0x76, 0x9F, 0x72, 0x83, 0x81, 0xB1, 0x74, 0xDE, 0x43, 0xBE, 0x91, 0x57, - 0x71, 0x90, 0x3C, 0xA0, 0x1F, 0xA0, 0x87, 0x07, 0x47, 0xDF, 0x5C, 0xFD, - 0x21, 0xD6, 0x64, 0x4C, 0x72, 0xFB, 0xCE, 0x21, 0xC5, 0x89, 0x23, 0x0B, - 0xAE, 0x75, 0x72, 0x73, 0xA6, 0xA6, 0xB3, 0xCE, 0x9C, 0xB1, 0xAF, 0xAB, - 0xDF, 0x06, 0x55, 0x5F, 0x0C, 0x1D, 0x6D, 0x13, 0xD1, 0xD2, 0xF0, 0x54, - 0x00, 0xAE, 0xA6, 0x51, 0xF2, 0x8B, 0x50, 0xF5, 0x5D, 0x76, 0xC9, 0x4D, - 0x55, 0x3C, 0x6F, 0xC7, 0xCB, 0xD1, 0x43, 0xEB, 0x52, 0xCE, 0x84, 0x00, - 0x90, 0xEB, 0xBD, 0x54, 0xC9, 0x04, 0x3B, 0x4B, 0xA9, 0x5D, 0x53, 0x0D, - 0xB6, 0x13, 0x55, 0xD4, 0x36, 0xEB, 0x71, 0x23, 0x00, 0x98, 0xB3, 0xB9, - 0x73, 0x8B, 0x0B, 0xD3, 0xB9, 0x67, 0x50, 0x28, 0xBC, 0xCC, 0x16, 0xD5, - 0xDE, 0x72, 0x5B, 0x75, 0x7B, 0x12, 0xF6, 0x3C, 0x94, 0xAE, 0x3E, 0xEF, - 0x44, 0x3B, 0x9E, 0x8F, 0x80, 0x1C, 0x18, 0x5F, 0x9B, 0x43, 0x4F, 0xF5, - 0xB1, 0xD7, 0x8A, 0x42, 0xA0, 0x51, 0x74, 0x86, 0x0F, 0x31, 0x18, 0x6C, - 0x47, 0xF8, 0xB9, 0x97, 0x0F, 0x4B, 0x47, 0x18, 0xF6, 0x5C, 0x70, 0x49, - 0xBF, 0xF5, 0x00, 0x08, 0xC6, 0xD7, 0x04, 0x79, 0xE2, 0xE5, 0x05, 0xAA, - 0x00, 0x4A, 0xE0, 0xA8, 0x62, 0xDC, 0xD7, 0x17, 0x7C, 0x8D, 0x17, 0x14, - 0x0A, 0x16, 0x3B, 0x0B, 0x70, 0x50, 0xF0, 0xB8, 0x1A, 0xE0, 0xB9, 0x8C, - 0x04, 0xF0, 0xEB, 0xB1, 0xCB, 0x15, 0x3C, 0xF6, 0xCE, 0xED, 0x40, 0xA2, - 0x40, 0x36, 0x3A, 0xF0, 0xA8, 0x21, 0xF9, 0x31, 0x49, 0x8A, 0xC8, 0x1D, - 0x57, 0x63, 0xC3, 0x4E, 0x98, 0x3E, 0x2A, 0x0C, 0x41, 0xD9, 0x01, 0xF6, - 0xB5, 0xB4, 0xCD, 0x5C, 0xCE, 0x1A, 0x04, 0x81, 0xC4, 0x66, 0x38, 0xAA, - 0x06, 0xC9, 0xDA, 0x42, 0x8F, 0x26, 0x7D, 0xB3, 0x51, 0x43, 0x94, 0x1A, - 0xC6, 0x8E, 0x2C, 0x78, 0xC4, 0x4E, 0x88, 0x40, 0xF3, 0x38, 0x47, 0x4E, - 0x0F, 0xA4, 0x29, 0xBC, 0xC2, 0x02, 0x1F, 0x58, 0x44, 0xF4, 0x1B, 0x8D, - 0x2B, 0x82, 0x15, 0x92, 0x80, 0xA2, 0x65, 0xBD, 0x50, 0x93, 0xC5, 0xF9, - 0xEF, 0x18, 0x83, 0x45, 0x51, 0x4A, 0x5C, 0xCC, 0x9C, 0x69, 0xF6, 0x96, - 0x9E, 0xC0, 0x14, 0x2A, 0x48, 0x72, 0xBD, 0xEE, 0x93, 0x4B, 0x50, 0xFF, - 0xF4, 0x60, 0x62, 0x33, 0xE2, 0x0B, 0xD3, 0x63, 0xFE, 0xE6, 0xE5, 0xE9, - 0xB0, 0x1A, 0x25, 0x7F, 0x5B, 0xDC, 0xF7, 0xA0, 0x9A, 0x5B, 0x61, 0x76, - 0x61, 0x5D, 0x1F, 0xE3, 0x24, 0x02, 0x11, 0x28, 0x97, 0x0E, 0xCB, 0x95, - 0x08, 0x1B, 0xD1, 0xA8, 0xD9, 0xE7, 0x91, 0xC6, 0x47, 0x38, 0x10, 0xEC, - 0x33, 0xE0, 0x45, 0xF4, 0xE8, 0xAF, 0xBD, 0xCB, 0x5C, 0x32, 0x38, 0x3D, - 0x49, 0xC6, 0x36, 0x62, 0xE3, 0x7D, 0x94, 0xC4, 0x05, 0xAF, 0x47, 0x0B, - 0x01, 0x72, 0xF1, 0x76, 0x2B, 0x7C, 0xCC, 0x62, 0xB2, 0xF4, 0xD4, 0xE0, - 0x10, 0x02, 0x1D, 0xFD, 0x3B, 0xE3, 0x0F, 0x46, 0x45, 0x18, 0x11, 0xF5, - 0xBF, 0x15, 0xEB, 0xC7, 0xA4, 0x15, 0x96, 0x53, 0x02, 0xC1, 0xCD, 0xB0, - 0xC0, 0xD4, 0xE7, 0xBC, 0x47, 0x7F, 0xE3, 0xAD, 0x1F, 0x4A, 0xFF, 0x36, - 0xB2, 0x83, 0x5D, 0x1B, 0xF1, 0x2C, 0xE9, 0xE5, 0xDA, 0x17, 0x0F, 0x6C, - 0x68, 0x55, 0x23, 0xEC, 0x28, 0x4C, 0x2B, 0xC3, 0xC3, 0xC2, 0x26, 0x9D, - 0xF0, 0x61, 0x8C, 0xDC, 0xD6, 0xDB, 0xDB, 0x3E, 0xF0, 0x37, 0x67, 0xBC, - 0x67, 0xFA, 0xCD, 0x17, 0xBC, 0xBA, 0xAC, 0x05, 0xA1, 0x50, 0x41, 0x0B, - 0x18, 0x97, 0xE9, 0x7B, 0xE9, 0xE5, 0xA5, 0x70, 0x14, 0x24, 0x7B, 0x75, - 0x74, 0xCD, 0x9C, 0x9B, 0xA6, 0xC3, 0x6B, 0x10, 0x7F, 0x9C, 0x6F, 0x8A, - 0xE6, 0xDD, 0x30, 0xB0, 0x70, 0x7E, 0x46, 0xB5, 0xC5, 0xDE, 0x97, 0xE0, - 0x65, 0x64, 0x64, 0x3E, 0xAD, 0xA3, 0xA8, 0x0A, 0x69, 0xC7, 0x37, 0x5E, - 0xCE, 0x17, 0xFD, 0x2B, 0x0C, 0xAE, 0x04, 0xDE, 0xFB, 0x6A, 0x96, 0xD1, - 0x6C, 0x32, 0x00, 0xC8, 0xBD, 0x4B, 0xB6, 0x9A, 0xC5, 0xF7, 0xDA, 0xBC, - 0xED, 0xA7, 0x11, 0x0D, 0x91, 0x75, 0xC3, 0xFF, 0x7A, 0xC9, 0x06, 0x18, - 0x1C, 0x31, 0x92, 0xC2, 0x49, 0x7B, 0xB4, 0xC6, 0xF8, 0xA3, 0x42, 0xC0, - 0x37, 0xBE, 0xAD, 0x3C, 0x06, 0xF5, 0x73, 0x62, 0xBF, 0xDE, 0x08, 0x77, - 0x29, 0x52, 0x2E, 0x28, 0x57, 0xBF, 0xF9, 0x98, 0xFA, 0xC3, 0x9F, 0xC4, - 0xF4, 0xB2, 0xC2, 0x99, 0x4E, 0x45, 0x33, 0x50, 0xB4, 0x9A, 0x65, 0xC9, - 0xFB, 0x40, 0xC2, 0x77, 0xAC, 0xC8, 0x87, 0x1C, 0x9F, 0x7F, 0xD9, 0x1C, - 0xE7, 0xC1, 0x04, 0x44, 0xAB, 0xFA, 0x47, 0x5D, 0xE4, 0x89, 0x2D, 0xCF, - 0x52, 0xC1, 0x24, 0x30, 0x3D, 0xAD, 0x1B, 0x25, 0x34, 0xAF, 0x76, 0xBA, - 0xE0, 0x26, 0xF2, 0x63, 0xD0, 0x68, 0xFA, 0x18, 0x07, 0xA4, 0x39, 0xEE, - 0xF2, 0xF0, 0xEC, 0xDD, 0xB4, 0x95, 0x4E, 0xBF, 0x46, 0x31, 0x39, 0xC7, - 0x1D, 0xB6, 0xCB, 0x5F, 0xA2, 0xA2, 0x62, 0x83, 0x11, 0xA5, 0xE9, 0xED, - 0x92, 0xC2, 0xD8, 0x5B, 0x64, 0xD9, 0x65, 0xFE, 0x18, 0xE8, 0xB1, 0xBD, - 0xAD, 0xF2, 0xF9, 0xD0, 0x1D, 0xCB, 0x71, 0xDC, 0x49, 0x3F, 0x4F, 0xD9, - 0x9E, 0x17, 0x7F, 0xF6, 0x46, 0xA0, 0xFF, 0x99, 0x17, 0xA2, 0xE6, 0xEB, - 0xDE, 0xB7, 0xAF, 0x26, 0x4C, 0xFD, 0xDA, 0xE1, 0xFB, 0xEF, 0xAA, 0xC5, - 0x2F, 0xF9, 0x31, 0x5C, 0xF6, 0x91, 0x70, 0xDA, 0x66, 0xED, 0xB3, 0x51, - 0x72, 0x95, 0x29, 0x22, 0xA5, 0xE2, 0x82, 0x0C, 0x43, 0xFE, 0x92, 0xFF, - 0x72, 0xA8, 0xD9, 0xF5, 0x6F, 0xCF, 0x63, 0xFC, 0x75, 0xD2, 0x33, 0x47, - 0xAD, 0x01, 0x87, 0xC2, 0xE6, 0xDE, 0xBB, 0xB9, 0xCF, 0xE2, 0x17, 0x50, - 0x3A, 0x68, 0x31, 0xD1, 0xB6, 0xC9, 0x3F, 0x43, 0x25, 0xBC, 0xB5, 0xF3, - 0xC9, 0xF9, 0xF3, 0xB3, 0x11, 0x5E, 0xF6, 0xE0, 0xBF, 0xAF, 0x1B, 0x90, - 0xA3, 0x61, 0xA3, 0x36, 0xFB, 0xBF, 0x0E, 0x62, 0xDF, 0xCC, 0x9B, 0x51, - 0x59, 0xFE, 0xA4, 0xFA, 0xD1, 0x3A, 0x4B, 0xA5, 0x9A, 0xA8, 0x21, 0x01, - 0x1D, 0x52, 0xAF, 0xBE, 0x74, 0x2D, 0x8B, 0x91, 0x91, 0x98, 0xC9, 0xD1, - 0x9C, 0x5B, 0x38, 0x12, 0x00, 0x2B, 0x12, 0x6F, 0x92, 0x7A, 0xC7, 0x45, - 0x16, 0xB8, 0xA7, 0xB3, 0x9F, 0x46, 0xF9, 0xAE, 0xBD, 0x13, 0xFB, 0xDD, - 0xDB, 0x86, 0x8A, 0x94, 0xFB, 0x10, 0x3B, 0xA3, 0x4D, 0x4C, 0x4D, 0xDD, - 0xC2, 0x38, 0x22, 0x58, 0xC4, 0x34, 0xCE, 0x58, 0x78, 0x89, 0x7B, 0x77, - 0x28, 0x30, 0xD6, 0xC7, 0x44, 0x04, 0x52, 0x7A, 0x19, 0x1E, 0xF1, 0xFD, - 0xD3, 0x77, 0x5F, 0x50, 0x0D, 0xAE, 0xAE, 0xEF, 0x59, 0x06, 0xF4, 0x3D, - 0x18, 0x43, 0x38, 0x51, 0xD6, 0x3D, 0xC5, 0x23, 0x04, 0x1F, 0x5B, 0x25, - 0x4C, 0x74, 0xB0, 0xC6, 0xEB, 0x76, 0xBA, 0xE8, 0xB1, 0xA7, 0x44, 0xE2, - 0x5C, 0xD4, 0x18, 0x1D, 0x34, 0x8D, 0xA8, 0x05, 0x25, 0x03, 0xA2, 0xD7, - 0xA3, 0x3F, 0x50, 0x07, 0x52, 0x09, 0x2D, 0x88, 0xFC, 0x2C, 0xF3, 0xAF, - 0xB4, 0x89, 0x6A, 0xA0, 0x27, 0x5F, 0xD3, 0x2B, 0x63, 0x8D, 0xD9, 0x60, - 0x1B, 0xD3, 0x35, 0x18, 0x61, 0x93, 0xF6, 0x82, 0xD8, 0xBC, 0x9F, 0x90, - 0xB6, 0xB1, 0xCF, 0xFD, 0x3B, 0xD4, 0xA8, 0x07, 0x0D, 0x76, 0xF1, 0x44, - 0x4F, 0x45, 0x10, 0x4C, 0xFB, 0x92, 0x1A, 0x56, 0x48, 0x87, 0x15, 0x7B, - 0x55, 0x3D, 0x10, 0xCE, 0xD8, 0x07, 0x3A, 0x79, 0x72, 0x17, 0x5C, 0xF2, - 0x9C, 0x84, 0xE1, 0x72, 0x36, 0x2A, 0xEB, 0xBB, 0xEE, 0x3E, 0xC8, 0x1F, - 0x33, 0x2F, 0x53, 0xDF, 0x6B, 0xE8, 0x3E, 0x0A, 0x5C, 0x32, 0x36, 0x81, - 0x77, 0x4A, 0xD6, 0xD0, 0xA8, 0x14, 0xBB, 0x32, 0xDC, 0x8B, 0x55, 0xB2, - 0xEF, 0xD4, 0xE8, 0xCA, 0xFF, 0x50, 0xDC, 0xBD, 0x55, 0xB5, 0x5E, 0xBE, - 0x1B, 0x74, 0x8A, 0x57, 0x5B, 0xBC, 0xCC, 0x2F, 0xF6, 0x72, 0x0C, 0xAF, - 0x9F, 0x2A, 0x96, 0xBE, 0xDC, 0xBC, 0xFC, 0x3A, 0xA8, 0xDF, 0x3E, 0x2E, - 0x78, 0xA7, 0xD8, 0xA0, 0x2A, 0x95, 0x70, 0x24, 0xBC, 0x6C, 0x1A, 0xFA, - 0xAA, 0xE6, 0xE1, 0x38, 0xE4, 0x8A, 0xD8, 0x63, 0x03, 0x82, 0x3C, 0xFB, - 0xA6, 0x9E, 0xB9, 0x69, 0xF6, 0x04, 0x60, 0x37, 0x0B, 0xBC, 0xEF, 0x85, - 0x70, 0xD4, 0xCB, 0xBE, 0x3E, 0xD3, 0xF2, 0x81, 0x37, 0x45, 0x1A, 0x94, - 0xB4, 0x02, 0xD9, 0xA2, 0xC8, 0x1D, 0x92, 0xE0, 0x5C, 0xA4, 0x5D, 0x43, - 0xA5, 0xFA, 0x1D, 0xD3, 0x18, 0x14, 0x0B, 0x18, 0x86, 0x74, 0x8E, 0x16, - 0xB3, 0x65, 0xD3, 0x24, 0x45, 0x71, 0xA9, 0x28, 0x46, 0x25, 0x68, 0x21, - 0x94, 0x8D, 0xDB, 0xCA, 0x13, 0x3C, 0x0C, 0xB1, 0xBB, 0xF2, 0x6E, 0xC2, - 0x2D, 0x67, 0xBA, 0x0D, 0xA9, 0x5B, 0x3A, 0xD7, 0x45, 0xDC, 0x68, 0x94, - 0x41, 0x30, 0xC1, 0xAD, 0x0C, 0xEF, 0x7E, 0xB1, 0x66, 0x1E, 0xEE, 0x0E, - 0x23, 0xC0, 0x6B, 0x08, 0xF0, 0x3E, 0xD0, 0xA8, 0xEF, 0x60, 0x34, 0xA7, - 0xDB, 0x9A, 0x3C, 0xD5, 0xEE, 0x02, 0x4C, 0x3E, 0x1C, 0x94, 0x75, 0x8E, - 0x95, 0xD2, 0x91, 0xCD, 0xF0, 0x20, 0x49, 0xBC, 0x6A, 0xBC, 0x26, 0x0C, - 0x40, 0x55, 0x4F, 0xE4, 0x29, 0xC7, 0x2D, 0xB0, 0x55, 0x28, 0xB1, 0xB2, - 0x99, 0x2A, 0x87, 0x4A, 0x19, 0x58, 0x7D, 0xEE, 0x24, 0xE7, 0xEE, 0xA6, - 0x6A, 0xBE, 0xE1, 0x96, 0xBB, 0x80, 0xF0, 0x1B, 0x55, 0x71, 0x02, 0x9D, - 0xCA, 0x8A, 0x51, 0xE4, 0x1D, 0x34, 0x6C, 0x1D, 0x22, 0x91, 0x3C, 0x19, - 0xBC, 0x31, 0x59, 0xA0, 0xD4, 0x82, 0x96, 0xAE, 0xE9, 0x2B, 0x24, 0x8E, - 0xF4, 0x97, 0x3B, 0xF0, 0x06, 0xC3, 0x60, 0x18, 0x0A, 0x46, 0xA3, 0x69, - 0xA3, 0x9B, 0x35, 0xA8, 0x04, 0xBC, 0x5B, 0x60, 0xE5, 0xF5, 0x10, 0x22, - 0x03, 0x59, 0x12, 0x09, 0x1B, 0x28, 0x6B, 0xC4, 0xF1, 0x82, 0xB1, 0x72, - 0x43, 0x8B, 0x0A, 0x27, 0x84, 0x7A, 0x38, 0x72, 0x64, 0xFD, 0x74, 0x39, - 0x02, 0xB6, 0x19, 0xE2, 0xDD, 0x28, 0x85, 0x61, 0xDE, 0x4F, 0x15, 0x0B, - 0x90, 0xE3, 0x83, 0xB5, 0x82, 0xC6, 0xB9, 0xA6, 0xFD, 0x6B, 0x8A, 0xB1, - 0x9E, 0xEB, 0xA9, 0xFC, 0xAA, 0x10, 0xC9, 0x4D, 0x06, 0xAB, 0x53, 0x06, - 0x2F, 0xF5, 0x7A, 0x94, 0xFB, 0x45, 0x14, 0x52, 0x1D, 0xFD, 0xCD, 0x2C, - 0xC7, 0x7B, 0x6D, 0x89, 0xCB, 0x50, 0xC4, 0x6D, 0x89, 0x9D, 0x66, 0x66, - 0xFA, 0x17, 0xD7, 0x03, 0xB4, 0x62, 0xAA, 0x6F, 0xEC, 0xB9, 0x33, 0xF1, - 0x2A, 0x7E, 0x53, 0x2C, 0x86, 0x41, 0xF2, 0x73, 0xE1, 0xC6, 0xFB, 0x6E, - 0x0F, 0x5B, 0x31, 0x66, 0xB3, 0x6C, 0x89, 0xC7, 0x49, 0x26, 0xE6, 0x1B, - 0x22, 0xB1, 0x01, 0xC8, 0x00, 0x1D, 0xFF, 0xAF, 0x3C, 0x5F, 0x48, 0xB3, - 0x59, 0xCC, 0xAE, 0x96, 0x36, 0x30, 0xCB, 0xBF, 0x64, 0xEB, 0x7D, 0xC1, - 0xF0, 0x36, 0xA8, 0x0D, 0xD1, 0x5D, 0xAB, 0x31, 0x89, 0x8E, 0x40, 0x1D, - 0xED, 0x84, 0xC9, 0x08, 0x73, 0xB4, 0xFE, 0x20, 0xEF, 0x15, 0x25, 0xD1, - 0xF8, 0xAA, 0x24, 0xF9, 0xCE, 0xEC, 0x2B, 0x38, 0x30, 0x98, 0x97, 0x7A, - 0x43, 0xEE, 0xFC, 0xCE, 0x1C, 0x90, 0x87, 0x48, 0x7D, 0x7F, 0x97, 0xDF, - 0x72, 0x18, 0x16, 0xD7, 0xD3, 0xD7, 0x65, 0xA1, 0xB5, 0xEC, 0xC2, 0xFC, - 0x95, 0xC0, 0x34, 0x34, 0x51, 0x15, 0xE5, 0x72, 0xDC, 0x9A, 0x56, 0x67, - 0x01, 0xF8, 0x9C, 0x96, 0x12, 0x9E, 0xF4, 0xBD, 0x5B, 0xBE, 0x17, 0xC2, - 0xC2, 0x32, 0x6A, 0x0A, 0xD2, 0x4A, 0x0C, 0xF6, 0xAC, 0x33, 0x64, 0x48, - 0xE7, 0x36, 0x20, 0x99, 0x4A, 0xCA, 0xF2, 0xFC, 0xC7, 0x88, 0x34, 0x68, - 0x15, 0xFC, 0x28, 0x2E, 0xAC, 0xD2, 0x9E, 0xEE, 0x39, 0x7A, 0xC9, 0xB4, - 0x88, 0x64, 0xEA, 0x1F, 0x21, 0xA2, 0x5C, 0x5F, 0x29, 0xD1, 0x5B, 0xE9, - 0x7E, 0x76, 0x24, 0x7A, 0x05, 0x00, 0xCF, 0x49, 0x0D, 0x51, 0x28, 0x65, - 0x07, 0x82, 0xC2, 0x9E, 0x13, 0xED, 0x4A, 0x86, 0xB6, 0xCA, 0x78, 0x15, - 0xF0, 0x2C, 0x7A, 0xE5, 0x00, 0xF5, 0x74, 0xFF, 0x2E, 0x50, 0x85, 0xE0, - 0x72, 0xCA, 0xB1, 0x41, 0xC2, 0x88, 0x7F, 0x37, 0x9F, 0x46, 0xB2, 0x1F, - 0x20, 0x69, 0x7B, 0x1B, 0x44, 0xF6, 0x56, 0xD7, 0xDB, 0xDB, 0x58, 0x5D, - 0xF0, 0xDB, 0x11, 0x2B, 0x6E, 0x31, 0xE0, 0x95, 0x8C, 0xAC, 0x64, 0x7A, - 0xDE, 0x40, 0x6B, 0xA4, 0x78, 0x7A, 0xC1, 0xAB, 0x6A, 0x03, 0x4F, 0x88, - 0x96, 0x0E, 0xF1, 0x14, 0x6B, 0x66, 0xB7, 0x9F, 0x51, 0x25, 0x4F, 0x9A, - 0x25, 0x19, 0xBA, 0xE2, 0x31, 0xC5, 0x6D, 0xB0, 0x11, 0x28, 0x1D, 0xAF, - 0x8B, 0xEB, 0x75, 0x69, 0x85, 0xB9, 0x27, 0x47, 0xB1, 0x84, 0x35, 0x19, - 0xC6, 0xEB, 0xE9, 0x4E, 0x3F, 0x61, 0xFD, 0xA4, 0xEE, 0xD2, 0xC0, 0x31, - 0xEC, 0x22, 0x56, 0xE5, 0xB7, 0x22, 0x76, 0x34, 0x2A, 0x75, 0xC1, 0x5D, - 0x76, 0x7A, 0xFE, 0x4D, 0x48, 0x17, 0x53, 0xEA, 0xCD, 0x13, 0x09, 0xFF, - 0x04, 0x9D, 0xB1, 0x11, 0x70, 0xAF, 0x9B, 0x15, 0x1B, 0xB6, 0x81, 0xD4, - 0xF6, 0x38, 0x72, 0x65, 0xF5, 0xFB, 0x01, 0xF5, 0xB0, 0xD0, 0xBA, 0xCA, - 0xF0, 0x8E, 0x94, 0x81, 0xB1, 0x39, 0xBD, 0x7F, 0x3A, 0x33, 0x89, 0x04, - 0xE5, 0x96, 0x7E, 0xF6, 0xFC, 0x48, 0xE5, 0x96, 0xCF, 0x05, 0xAE, 0x8F, - 0x3E, 0xDE, 0x30, 0x92, 0xB8, 0xE0, 0x20, 0x1B, 0x86, 0xC3, 0x12, 0xA8, - 0xCA, 0xD8, 0xF3, 0xF5, 0xBF, 0x55, 0x0D, 0x8B, 0x20, 0xC8, 0x96, 0xB8, - 0x8E, 0x47, 0xCB, 0xC8, 0xE2, 0x73, 0xF9, 0x1A, 0xFD, 0x07, 0x90, 0x71, - 0xDB, 0xC4, 0xAF, 0xCE, 0xB4, 0xB6, 0x3A, 0x53, 0xCB, 0x1F, 0xCC, 0x67, - 0xE9, 0x9E, 0xD2, 0x82, 0x1F, 0xE0, 0x46, 0x46, 0xF8, 0xE6, 0x22, 0x01, - 0xE7, 0x54, 0x66, 0xB3, 0x66, 0x2E, 0xE3, 0x2B, 0x7E, 0x78, 0x6C, 0x68, - 0x81, 0xDC, 0x9E, 0x6F, 0xCA, 0xD3, 0x25, 0x94, 0x30, 0x84, 0x4F, 0x32, - 0xD5, 0x37, 0x21, 0x2C, 0xF6, 0xCE, 0x85, 0x83, 0x21, 0x6F, 0xC9, 0x09, - 0xE5, 0x0A, 0xE4, 0x8C, 0x22, 0x66, 0xB9, 0x50, 0xFB, 0xE6, 0x97, 0xCF, - 0x74, 0x8A, 0xC7, 0x67, 0xCB, 0x38, 0xDA, 0x85, 0x47, 0x8B, 0xF0, 0x64, - 0xF3, 0xFF, 0xA4, 0x91, 0x05, 0x7C, 0xE8, 0xED, 0x6F, 0x9F, 0x93, 0x3E, - 0x18, 0xA2, 0x4C, 0x68, 0x0C, 0x62, 0xEB, 0x6D, 0x3A, 0x45, 0x52, 0xBF, - 0x05, 0xC1, 0xB8, 0xB5, 0x0C, 0xBB, 0xCB, 0xF7, 0xA5, 0x88, 0xB4, 0x94, - 0x00, 0x77, 0x92, 0x9D, 0xA3, 0xFB, 0xC2, 0x04, 0x11, 0x4F, 0x8F, 0xA2, - 0x22, 0xFB, 0xEC, 0x71, 0xCA, 0x5E, 0x3A, 0xC2, 0x42, 0x1C, 0x2B, 0x74, - 0xCE, 0x9E, 0x46, 0xF7, 0xEF, 0x48, 0x24, 0xCF, 0xBA, 0xE1, 0x0A, 0x92, - 0xC9, 0x59, 0xF5, 0x10, 0xD7, 0x25, 0x6E, 0xAB, 0x9B, 0xAB, 0xD4, 0xC6, - 0x16, 0x98, 0x5B, 0x31, 0x87, 0x39, 0x21, 0xA9, 0x09, 0x7F, 0x47, 0x0B, - 0xF4, 0xFB, 0xA9, 0xFE, 0x60, 0x07, 0x1A, 0x31, 0xEC, 0x48, 0x64, 0x0D, - 0x73, 0x71, 0xDF, 0x78, 0xE6, 0xB1, 0x76, 0xD9, 0xE1, 0x4C, 0xCF, 0x80, - 0xBD, 0x58, 0x96, 0xAF, 0x3D, 0x3D, 0x82, 0x7B, 0xC0, 0x16, 0xD7, 0xD7, - 0x8C, 0xBC, 0x5F, 0x91, 0x30, 0xA3, 0x6C, 0x5D, 0x25, 0xCF, 0xAC, 0xA6, - 0xEC, 0xCF, 0x42, 0x41, 0x05, 0xA4, 0x74, 0x2E, 0x82, 0xBA, 0x21, 0x42, - 0x95, 0xDF, 0xF2, 0xD6, 0x29, 0x5B, 0x04, 0xBD, 0x47, 0x8E, 0x47, 0xBA, - 0x3F, 0x99, 0x20, 0x4D, 0x74, 0x56, 0xD6, 0x43, 0x42, 0xC4, 0x36, 0x7D, - 0x24, 0xE3, 0xC9, 0xD8, 0x66, 0xAB, 0x3D, 0x62, 0xE2, 0xA9, 0x51, 0x3C, - 0x9F, 0x1A, 0xA7, 0x6C, 0x7F, 0x4D, 0xC9, 0xEB, 0x21, 0x66, 0xBB, 0x46, - 0xA4, 0x97, 0x5E, 0x6D, 0xAD, 0xD4, 0x6F, 0xFB, 0xB1, 0xC6, 0x6F, 0x51, - 0x2F, 0x0A, 0x9A, 0x97, 0x8E, 0xBB, 0x80, 0xD7, 0x16, 0x70, 0xC4, 0x98, - 0xEE, 0xB9, 0x69, 0x48, 0x49, 0xA2, 0xBB, 0x93, 0x8B, 0xE6, 0x10, 0xCB, - 0xC3, 0x8D, 0x57, 0x17, 0x0A, 0xFE, 0x1B, 0xB5, 0x40, 0x06, 0x7D, 0xE4, - 0x89, 0x76, 0x13, 0x01, 0xB1, 0x2E, 0x01, 0xD7, 0x20, 0x1D, 0x5B, 0xE9, - 0x5C, 0x11, 0x24, 0x78, 0xF5, 0x9F, 0x02, 0xF8, 0x8B, 0xA9, 0x0B, 0x22, - 0x42, 0x66, 0x1A, 0xFE, 0x15, 0xF7, 0x51, 0x93, 0xB7, 0xDB, 0x00, 0x52, - 0x0A, 0xF0, 0x4A, 0xA8, 0xE1, 0xDF, 0xCE, 0x88, 0xBF, 0x47, 0x47, 0x73, - 0x48, 0x19, 0x89, 0x3B, 0xDD, 0xD2, 0x82, 0x14, 0xB4, 0x70, 0xF6, 0xF2, - 0xC1, 0x4D, 0x8B, 0x47, 0x74, 0x12, 0xC1, 0x42, 0x69, 0xE1, 0xFD, 0x25, - 0x6F, 0x62, 0xF6, 0x41, 0xF8, 0x60, 0x83, 0xB8, 0x91, 0x06, 0x09, 0x5D, - 0x90, 0x2E, 0x52, 0xB3, 0xFC, 0x34, 0x86, 0xD7, 0xC8, 0x27, 0x94, 0xA4, - 0xB9, 0x32, 0x7E, 0xA0, 0xA4, 0xB4, 0xE5, 0x2F, 0x14, 0x37, 0x7B, 0xFA, - 0x9C, 0x15, 0xD0, 0xE2, 0x13, 0x4C, 0x62, 0x24, 0xE8, 0x0C, 0xDC, 0x52, - 0x10, 0xC3, 0xCE, 0x6F, 0xE5, 0x21, 0x57, 0xF3, 0x17, 0xD0, 0x0F, 0x67, - 0x9D, 0x58, 0xEA, 0x84, 0x13, 0x9E, 0xE3, 0xEA, 0xF6, 0xBC, 0x5C, 0x40, - 0xCE, 0xCC, 0xAA, 0xE8, 0x5B, 0x41, 0x86, 0x68, 0xD7, 0xC3, 0x3B, 0x66, - 0xFB, 0x6B, 0xC1, 0xAE, 0x72, 0x29, 0xE6, 0x6C, 0x2A, 0x71, 0xB4, 0xC5, - 0x4F, 0x69, 0xBA, 0x40, 0x80, 0x58, 0x08, 0x4F, 0x8D, 0xE5, 0x69, 0x44, - 0x1B, 0xC0, 0x3D, 0x97, 0xAB, 0x7D, 0x23, 0xF3, 0x79, 0x40, 0x1A, 0x9D, - 0x04, 0x98, 0x31, 0x6A, 0x5E, 0x6C, 0x59, 0x17, 0xEA, 0x34, 0xEC, 0x29, - 0xA2, 0x7D, 0xC9, 0x2B, 0x5B, 0x76, 0x9C, 0x15, 0x22, 0x67, 0x6C, 0x08, - 0x33, 0x41, 0xC5, 0x46, 0xA7, 0xA6, 0x0E, 0xEB, 0xFB, 0x92, 0x17, 0x41, - 0xAF, 0x3B, 0x22, 0x96, 0xDE, 0x35, 0xD6, 0xB6, 0x7C, 0xEF, 0x6B, 0xF6, - 0x10, 0xFC, 0xE7, 0xBC, 0x38, 0xE2, 0xB7, 0xA6, 0x93, 0x1F, 0x12, 0x86, - 0xF7, 0x1F, 0xBE, 0x41, 0x42, 0xCC, 0xDB, 0xF8, 0x52, 0xCB, 0xFD, 0xFF, - 0x40, 0xC1, 0x38, 0x50, 0x6F, 0x72, 0x77, 0x2B, 0xB1, 0x27, 0xCD, 0x9A, - 0x0F, 0x6B, 0x5D, 0x1E, 0xE7, 0x9A, 0xB9, 0xA4, 0xA2, 0xC3, 0x8C, 0x2D, - 0x73, 0xC1, 0xF9, 0x6B, 0x5E, 0x08, 0xD8, 0x8B, 0x1E, 0x05, 0x0A, 0x04, - 0xBD, 0x29, 0xE2, 0x57, 0x52, 0xF7, 0x21, 0xEE, 0x10, 0x36, 0x7E, 0x90, - 0x09, 0x08, 0xA3, 0x44, 0xE1, 0xCA, 0xCF, 0x59, 0x53, 0xDB, 0x6E, 0x65, - 0x28, 0xEE, 0xF3, 0x60, 0xCB, 0x47, 0x83, 0x18, 0xDC, 0x05, 0xAD, 0xCC, - 0x04, 0x09, 0x91, 0x05, 0xAE, 0x96, 0x2F, 0x10, 0x0E, 0x50, 0x0C, 0xF0, - 0x57, 0xA8, 0xEE, 0x81, 0x89, 0x4C, 0x9B, 0x72, 0x13, 0xA1, 0xB9, 0x5A, - 0x9E, 0x31, 0xB2, 0xA9, 0x80, 0xA8, 0x51, 0xEA, 0x7E, 0x59, 0xA7, 0xB9, - 0x7C, 0xBE, 0x82, 0x13, 0xC7, 0x30, 0xAE, 0xF9, 0xF5, 0x22, 0x15, 0xE1, - 0xC6, 0xC2, 0x06, 0xD9, 0xC9, 0xD9, 0xF4, 0x4C, 0xBF, 0x0A, 0x02, 0xD3, - 0x4C, 0x38, 0x28, 0x60, 0x52, 0xB9, 0xF7, 0x3C, 0xD9, 0x1C, 0x28, 0x98, - 0x89, 0xAC, 0xBD, 0x81, 0x17, 0x5E, 0x59, 0xF5, 0x55, 0xC7, 0xED, 0x58, - 0x1F, 0x29, 0xE7, 0x57, 0xC1, 0x27, 0x0A, 0x7E, 0x67, 0x00, 0x56, 0xD5, - 0x93, 0x99, 0xA6, 0x8E, 0x7D, 0xB1, 0xA0, 0x17, 0x98, 0x88, 0xA8, 0x9D, - 0x2D, 0x27, 0x6B, 0x0C, 0x59, 0x5C, 0x0B, 0x3C, 0x6A, 0x3B, 0xFD, 0x44, - 0x37, 0x18, 0xAA, 0x49, 0xE7, 0xA1, 0xC1, 0x24, 0xCD, 0xB6, 0xA6, 0x2C, - 0x4D, 0x38, 0x1D, 0x3A, 0x0B, 0xA6, 0x42, 0x84, 0x48, 0x63, 0xCB, 0x5A, - 0x74, 0xBF, 0x62, 0x3B, 0x5E, 0x55, 0x94, 0xC7, 0x52, 0x7D, 0xD1, 0xA6, - 0xFE, 0x3B, 0x1A, 0xE8, 0x80, 0x3D, 0x57, 0x9E, 0x03, 0xE4, 0xA7, 0xB0, - 0x52, 0x84, 0x42, 0xC4, 0x95, 0x63, 0xC9, 0xD2, 0x6E, 0xA9, 0x51, 0xE8, - 0x51, 0x9C, 0xFB, 0x67, 0xD1, 0xF6, 0x37, 0xC2, 0x56, 0x64, 0x95, 0x70, - 0x07, 0x23, 0x0C, 0x79, 0x4C, 0x20, 0x52, 0x94, 0x68, 0x9B, 0xC3, 0x64, - 0x7A, 0xBC, 0xF6, 0x54, 0x97, 0xF0, 0xEB, 0x0F, 0x71, 0x8E, 0x69, 0x85, - 0xCC, 0x2F, 0x2B, 0x2F, 0xCF, 0x8D, 0xEA, 0x1A, 0x04, 0x37, 0x47, 0xDA, - 0xFE, 0xCF, 0xD2, 0x5E, 0xA8, 0xE7, 0x03, 0x21, 0xBA, 0xFE, 0x88, 0x21, - 0x33, 0x17, 0xE3, 0x78, 0xB0, 0xE4, 0x71, 0x47, 0x1A, 0x88, 0x9B, 0x4F, - 0x5F, 0x38, 0xF8, 0x0F, 0x8F, 0x82, 0x04, 0x72, 0xDC, 0x1E, 0x7B, 0xB6, - 0x90, 0x55, 0x19, 0xDE, 0xD7, 0x0E, 0xE6, 0xED, 0xEE, 0x9A, 0x47, 0x5A, - 0x63, 0xC4, 0xE6, 0x2A, 0x09, 0xB0, 0xC4, 0x0A, 0xBA, 0x70, 0xF8, 0x18, - 0x0F, 0xE1, 0x87, 0xAD, 0x41, 0xCE, 0xB9, 0x4B, 0x6E, 0xF1, 0x0B, 0x04, - 0xAC, 0x6A, 0x4F, 0x09, 0x40, 0xDE, 0x60, 0xF2, 0x10, 0xC7, 0xD8, 0x11, - 0xFB, 0x58, 0x4D, 0x8C, 0x6F, 0xD9, 0xF7, 0xA5, 0xC3, 0x13, 0x16, 0x39, - 0x25, 0x5A, 0x01, 0xE5, 0x92, 0x06, 0x8A, 0x4A, 0x89, 0xB5, 0x43, 0x7A, - 0x39, 0xC2, 0x12, 0xCD, 0x45, 0x8B, 0x8E, 0x59, 0x1C, 0x4F, 0x72, 0xA6, - 0xEE, 0xA4, 0x88, 0x6F, 0x04, 0xE8, 0x68, 0xD1, 0xDC, 0x90, 0x41, 0x28, - 0x8C, 0x2B, 0xC9, 0xF1, 0x92, 0x08, 0xAC, 0x7F, 0x7E, 0xEE, 0x7A, 0x3F, - 0x54, 0xFB, 0x45, 0x7F, 0x73, 0xF6, 0xE5, 0xE2, 0xE4, 0x8C, 0x05, 0xA4, - 0xAF, 0x63, 0x86, 0xB4, 0xA5, 0x6B, 0x33, 0x19, 0x00, 0x79, 0xB0, 0x73, - 0x2C, 0x89, 0xFC, 0x81, 0xDF, 0x7E, 0x5C, 0x59, 0x02, 0xF2, 0xFA, 0x52, - 0x9C, 0x1E, 0xD4, 0xE5, 0x56, 0x90, 0x56, 0x23, 0x3A, 0x7A, 0xFD, 0x6F, - 0xB4, 0x98, 0x8D, 0x47, 0xD7, 0x4D, 0x84, 0xB9, 0x2A, 0x09, 0xF2, 0x6C, - 0xAB, 0x1C, 0x70, 0xD1, 0x01, 0xD5, 0x63, 0xF0, 0xDF, 0x3F, 0xCD, 0x27, - 0x94, 0x36, 0xB8, 0xE8, 0xB9, 0xAF, 0xB7, 0xDD, 0x41, 0xE1, 0x43, 0xC7, - 0xE4, 0xF5, 0xA8, 0xB7, 0xF4, 0x59, 0x91, 0x84, 0x96, 0x0A, 0x6E, 0x13, - 0xA8, 0x43, 0x1C, 0xC1, 0x4A, 0xB6, 0x52, 0x6E, 0x36, 0x21, 0x02, 0x18, - 0x15, 0xB1, 0x65, 0xA5, 0xE1, 0x0F, 0xA5, 0x0C, 0xE1, 0xFF, 0xE2, 0x10, - 0xCC, 0xBB, 0xBD, 0x33, 0x91, 0x73, 0x7D, 0xA0, 0x16, 0x23, 0x39, 0x9B, - 0x36, 0xCF, 0x94, 0x2F, 0x7C, 0xA0, 0x63, 0xE8, 0x3C, 0xB8, 0xBE, 0xC5, - 0x03, 0x3D, 0x1A, 0x3D, 0x97, 0x10, 0x7F, 0x79, 0x7F, 0xCA, 0x94, 0x77, - 0x30, 0x1A, 0x5B, 0x3A, 0xF1, 0xAF, 0xF1, 0xF4, 0x4F, 0x69, 0xA8, 0x0C, - 0x7B, 0x87, 0xED, 0x30, 0x99, 0xEE, 0xEE, 0xD5, 0xEF, 0x29, 0x1B, 0xB9, - 0xC0, 0x4C, 0xF6, 0x46, 0x46, 0xD9, 0x12, 0x9E, 0x73, 0xF6, 0x5C, 0x8F, - 0x12, 0x14, 0xF1, 0xFC, 0x4C, 0x49, 0xE6, 0xDF, 0xCD, 0x92, 0x82, 0xDC, - 0xD6, 0xF1, 0x2D, 0x04, 0x27, 0x94, 0x55, 0xF5, 0x7E, 0xC5, 0x81, 0x4B, - 0x84, 0xB8, 0x6F, 0x43, 0xD4, 0x4E, 0x58, 0x44, 0x66, 0x31, 0xC8, 0xB4, - 0xD4, 0x64, 0x37, 0x72, 0xAA, 0x46, 0xD0, 0x7A, 0x49, 0x94, 0xEA, 0x1E, - 0xF6, 0xED, 0x31, 0xE2, 0xCF, 0xD0, 0x12, 0x53, 0x5F, 0xC4, 0xA9, 0xF4, - 0x79, 0xD5, 0xB2, 0x2E, 0xD2, 0x7C, 0xC9, 0x12, 0xDE, 0xFA, 0xED, 0x9E, - 0x6B, 0xFB, 0x08, 0xBE, 0x61, 0x53, 0x96, 0x1A, 0xB8, 0x71, 0x2C, 0x5E, - 0xE5, 0xF8, 0xAE, 0x68, 0xF5, 0x39, 0x11, 0x53, 0xDD, 0x30, 0x4F, 0x49, - 0xCB, 0x5E, 0x9C, 0x20, 0x2B, 0x99, 0x77, 0x8F, 0xA8, 0x46, 0x5F, 0xD2, - 0xBB, 0x31, 0x8E, 0x2C, 0x84, 0x60, 0x63, 0xEB, 0xE9, 0x0C, 0x20, 0x98, - 0xAA, 0x58, 0xF5, 0x75, 0xA0, 0x2E, 0xB2, 0x65, 0x79, 0xA2, 0xB9, 0xAB, - 0xD9, 0xE8, 0xA6, 0xF3, 0x1B, 0x34, 0x37, 0x75, 0xA4, 0xFF, 0x00, 0xF8, - 0xA6, 0xF6, 0x26, 0xA4, 0xFF, 0x63, 0x14, 0xB9, 0xA5, 0xD0, 0x12, 0x45, - 0x08, 0x8C, 0x6E, 0x78, 0x0C, 0xC5, 0x75, 0xB8, 0xEC, 0x77, 0x73, 0xEA, - 0x87, 0x6F, 0xAD, 0x4D, 0x98, 0xCD, 0xC7, 0xA5, 0x20, 0xC3, 0x4E, 0x31, - 0x79, 0x16, 0xB0, 0x2A, 0x9A, 0x84, 0x02, 0xAA, 0x00, 0x60, 0xBB, 0x58, - 0x84, 0xC6, 0x95, 0xF3, 0xF4, 0x6C, 0xEB, 0xD8, 0xEC, 0x1A, 0xC3, 0x92, - 0xD6, 0x09, 0x58, 0x56, 0xDB, 0x64, 0xF9, 0x00, 0x1A, 0x45, 0xF4, 0x2F, - 0x65, 0x71, 0x8C, 0xD0, 0x9B, 0xFA, 0x0B, 0x7E, 0xDF, 0x29, 0xF1, 0x91, - 0xD5, 0x33, 0xF2, 0x46, 0xC3, 0xBD, 0x30, 0xF8, 0x7E, 0x5A, 0xA7, 0x6A, - 0x19, 0x88, 0xC3, 0xE3, 0x5B, 0x37, 0xA9, 0x4C, 0x4F, 0xB3, 0xBD, 0xB8, - 0x65, 0x57, 0xCB, 0xBE, 0x79, 0x82, 0x88, 0xDA, 0xB5, 0xAA, 0x9A, 0xD3, - 0x05, 0xFA, 0x7A, 0x7B, 0xC0, 0xB9, 0x33, 0xD0, 0xCE, 0x34, 0xEF, 0x43, - 0x41, 0x36, 0x23, 0xD4, 0x9C, 0x1F, 0x35, 0x70, 0xC4, 0x18, 0x87, 0x51, - 0x7B, 0x9C, 0x8E, 0x24, 0x7C, 0x73, 0x9F, 0x6D, 0xD6, 0x4B, 0xFA, 0x22, - 0x1F, 0x99, 0x2E, 0x1F, 0xEE, 0x13, 0xB4, 0xA3, 0xE8, 0xCE, 0xF6, 0xF3, - 0x00, 0x9B, 0xE3, 0xDD, 0x0F, 0x8A, 0xCB, 0xC5, 0x49, 0xB1, 0xCA, 0x3F, - 0x83, 0x96, 0xB4, 0xA3, 0x37, 0x72, 0x43, 0xAD, 0x2A, 0x79, 0xAF, 0x7F, - 0x56, 0x18, 0xB3, 0x95, 0xA2, 0x3B, 0x15, 0x8A, 0x82, 0xFC, 0xED, 0xD1, - 0xA1, 0x81, 0x44, 0x23, 0x88, 0x39, 0x89, 0xD8, 0x11, 0x8F, 0xAC, 0x62, - 0xCB, 0xC9, 0x9F, 0x88, 0x3C, 0xDD, 0xE8, 0x4B, 0xB4, 0xF4, 0x99, 0xC7, - 0x9E, 0xD9, 0xB7, 0xBC, 0x5B, 0x81, 0xD9, 0x0C, 0x1C, 0xA2, 0x8B, 0x36, - 0x3C, 0xE2, 0xA9, 0xD4, 0x81, 0x2D, 0x5D, 0x72, 0x5A, 0xBF, 0xB2, 0x62, - 0x8E, 0x48, 0x74, 0x56, 0xB8, 0xB9, 0x48, 0x04, 0x53, 0xCA, 0x0F, 0x20, - 0x4E, 0x28, 0xD4, 0x0B, 0xC8, 0xE0, 0x3F, 0x09, 0xC5, 0x8F, 0x19, 0x99, - 0xB3, 0x5F, 0xC4, 0xC7, 0x5A, 0x65, 0xD6, 0x1F, 0x27, 0xB0, 0xD2, 0x28, - 0x03, 0x7B, 0xAB, 0x62, 0x6C, 0xAA, 0x78, 0xA0, 0x15, 0x00, 0xE8, 0x0E, - 0xA8, 0x28, 0xAF, 0x1B, 0xCD, 0x1E, 0x5B, 0x09, 0x0E, 0x47, 0x10, 0xA8, - 0x67, 0x32, 0x1D, 0x05, 0x7D, 0xBB, 0x57, 0x81, 0x2B, 0xDB, 0x4B, 0x6A, - 0x4F, 0xBF, 0x9E, 0x51, 0x45, 0xC3, 0xCC, 0x70, 0xC6, 0x9E, 0x70, 0x30, - 0x82, 0x65, 0xCE, 0x23, 0xCD, 0x6A, 0x4F, 0x3B, 0xA5, 0x58, 0x69, 0xFE, - 0x37, 0x27, 0xE6, 0x03, 0x0C, 0x99, 0x8D, 0x31, 0xF5, 0xC0, 0xC8, 0xAC, - 0x73, 0xCC, 0x48, 0x86, 0xC6, 0x4B, 0xC4, 0xE8, 0x13, 0x0A, 0xEE, 0xC0, - 0x18, 0xC8, 0xE3, 0x01, 0x9B, 0x2B, 0xB5, 0x64, 0x06, 0xA9, 0xB6, 0xFD, - 0xC4, 0xC1, 0x5D, 0x42, 0x49, 0xEC, 0x83, 0x53, 0x61, 0xAF, 0x7A, 0x8D, - 0x8C, 0x1F, 0x7C, 0xBE, 0xE5, 0xA1, 0x2B, 0x8E, 0x20, 0x31, 0x4F, 0x37, - 0x6A, 0x88, 0xF8, 0xBF, 0x0C, 0xD9, 0xBA, 0x1B, 0xCB, 0xC7, 0x23, 0x81, - 0x85, 0x47, 0x93, 0xD0, 0xC0, 0x03, 0xBE, 0x2E, 0x3D, 0x89, 0xE3, 0x75, - 0xAB, 0x5B, 0x32, 0x65, 0x83, 0x40, 0xBF, 0x16, 0xA9, 0x25, 0xE5, 0x4A, - 0xFD, 0x86, 0xD2, 0x5F, 0xA0, 0xCF, 0x1F, 0xFF, 0x63, 0xFF, 0x75, 0x2B, - 0xAF, 0x1A, 0x0B, 0x3A, 0x03, 0xE3, 0x2D, 0x04, 0x57, 0xDF, 0x56, 0x6D, - 0x83, 0x61, 0x81, 0xC5, 0xDB, 0x51, 0xDA, 0x70, 0x0B, 0x5D, 0x5B, 0x21, - 0xB6, 0xF4, 0x20, 0x0E, 0x44, 0xFD, 0x7D, 0xA0, 0xD8, 0x5A, 0xF4, 0x16, - 0xF1, 0x69, 0x11, 0x6B, 0x13, 0x8F, 0xB3, 0xEC, 0x1E, 0x0C, 0x7D, 0x63, - 0xBF, 0x96, 0xDD, 0xA2, 0x80, 0x8F, 0xE7, 0x47, 0x57, 0x4B, 0xCA, 0xE5, - 0xF1, 0xB2, 0x66, 0xB5, 0xDC, 0x27, 0x75, 0x72, 0x49, 0x0C, 0x1E, 0x69, - 0x6D, 0x3E, 0x31, 0xC4, 0x36, 0xCA, 0x3C, 0xE9, 0x5B, 0xC5, 0xDA, 0x4E, - 0x28, 0xBA, 0x12, 0x39, 0x40, 0x9E, 0x92, 0x3E, 0x77, 0x60, 0xC7, 0xDF, - 0x0F, 0xE7, 0xDC, 0x3B, 0x97, 0x39, 0xAF, 0x24, 0x49, 0xBA, 0xB0, 0xA2, - 0x44, 0x04, 0x20, 0x3C, 0xE6, 0x40, 0x87, 0x30, 0xC2, 0x27, 0x23, 0x69, - 0x4F, 0xDE, 0x13, 0x94, 0x09, 0x15, 0xDB, 0x39, 0xDC, 0x04, 0x07, 0xE3, - 0x1B, 0x0E, 0xAA, 0x80, 0x0D, 0xA7, 0x58, 0x87, 0xDC, 0x0C, 0xC0, 0xDE, - 0x43, 0x81, 0x70, 0x55, 0x11, 0xC8, 0x69, 0x42, 0xA2, 0x72, 0x35, 0xC4, - 0xB9, 0x51, 0x2A, 0xD9, 0x19, 0xEE, 0x68, 0xE1, 0x86, 0x02, 0x58, 0x24, - 0x8D, 0xE0, 0xF8, 0x0D, 0x19, 0x21, 0x24, 0xF7, 0x23, 0x3D, 0x07, 0xA0, - 0x52, 0xE3, 0xE4, 0x98, 0xA3, 0xFD, 0x25, 0x0C, 0x48, 0x26, 0xC2, 0x97, - 0xEB, 0x73, 0xFB, 0x00, 0x95, 0xF9, 0x12, 0x45, 0xD9, 0xA8, 0x41, 0xFE, - 0xF0, 0xD7, 0x18, 0x7E, 0x6E, 0x9A, 0xFA, 0x78, 0x15, 0xA6, 0x54, 0xB0, - 0x3A, 0x8A, 0xFA, 0x8F, 0xD1, 0xE5, 0x22, 0xB9, 0x19, 0x40, 0xC1, 0x19, - 0xBA, 0x6B, 0xD5, 0x04, 0x67, 0x4E, 0x1C, 0xDA, 0x81, 0x16, 0x22, 0xE8, - 0xB4, 0x7C, 0x99, 0xB7, 0xDD, 0x6E, 0x19, 0x16, 0xAE, 0x11, 0x58, 0xE4, - 0x03, 0xA1, 0xA2, 0x6C, 0xDF, 0xF3, 0x1A, 0x88, 0x4B, 0xAF, 0x3F, 0xA2, - 0xB0, 0x54, 0xE7, 0x68, 0xE1, 0x3B, 0xB7, 0x2F, 0xFC, 0xB3, 0xE6, 0x80, - 0x6F, 0x2B, 0x82, 0x7E, 0x15, 0x6E, 0x61, 0xD3, 0x5F, 0x25, 0xBB, 0xE2, - 0xF4, 0x41, 0xD1, 0xEB, 0x47, 0x8E, 0x50, 0x0F, 0x8E, 0x04, 0x80, 0xB5, - 0xA7, 0x9E, 0xBB, 0x55, 0x03, 0x69, 0x11, 0x98, 0xAD, 0x64, 0x4E, 0x65, - 0x9C, 0xB2, 0x17, 0x2E, 0x0A, 0xD6, 0x4C, 0xD9, 0x55, 0xF1, 0x12, 0x08, - 0xB4, 0xB4, 0x4C, 0xDE, 0xE1, 0x27, 0x15, 0x66, 0x28, 0x27, 0x8E, 0xDE, - 0xCE, 0xF0, 0x86, 0x28, 0x2B, 0x11, 0x0B, 0x45, 0x27, 0x31, 0xE3, 0x3D, - 0x01, 0x71, 0xBD, 0x20, 0x4F, 0xE4, 0x03, 0xBB, 0xFA, 0x1B, 0x63, 0x63, - 0x62, 0x4F, 0x0C, 0x9D, 0x47, 0x27, 0x97, 0x0B, 0x0A, 0x53, 0x4E, 0x08, - 0xDA, 0x55, 0xDD, 0x27, 0xEB, 0x7D, 0x3B, 0x04, 0x2E, 0x29, 0x8E, 0x40, - 0x2F, 0x6B, 0xCC, 0x05, 0xA8, 0x2A, 0x9E, 0x33, 0xF5, 0xB3, 0x82, 0x07, - 0x8D, 0x2B, 0x16, 0xA1, 0x8B, 0x6F, 0xB9, 0x06, 0x67, 0x8A, 0x4B, 0x9B, - 0x7F, 0x92, 0x21, 0x66, 0x5F, 0x83, 0x57, 0x81, 0xD1, 0x71, 0x02, 0x7C, - 0x9E, 0xA1, 0xFB, 0x69, 0xF7, 0x7F, 0x57, 0xA7, 0x49, 0xB3, 0x86, 0xA2, - 0x21, 0x9C, 0x71, 0xB8, 0x39, 0x45, 0x12, 0x42, 0x41, 0xA4, 0xF3, 0x89, - 0x80, 0xF5, 0x13, 0x2F, 0x79, 0xDB, 0xA0, 0x0E, 0xED, 0x9A, 0x6A, 0xA0, - 0x4C, 0x09, 0xC9, 0x92, 0xAC, 0x10, 0x2F, 0x10, 0xDF, 0xE8, 0xCB, 0x1D, - 0x0F, 0x0D, 0xE1, 0x2E, 0x62, 0x99, 0xAC, 0xCB, 0x52, 0xD2, 0x1B, 0xAF, - 0xB6, 0xB0, 0x78, 0xE0, 0x31, 0xDC, 0x6D, 0xBE, 0x7A, 0xF9, 0x02, 0xE1, - 0x48, 0xE5, 0x14, 0xD8, 0x90, 0x9C, 0xE6, 0xE3, 0xF6, 0x6D, 0x7B, 0xF3, - 0xDB, 0x60, 0x00, 0x39, 0x38, 0xAB, 0xE7, 0x17, 0xE9, 0x15, 0xC6, 0x3A, - 0x7D, 0x40, 0xDF, 0xD9, 0x02, 0xDC, 0x83, 0x50, 0x76, 0xB0, 0x12, 0x16, - 0x11, 0x57, 0x1D, 0xC1, 0x22, 0xBC, 0x88, 0x46, 0xCB, 0x13, 0x5D, 0x8F, - 0x8F, 0xED, 0xCD, 0xAE, 0x15, 0xC0, 0x2D, 0xB0, 0x2C, 0xDA, 0xD7, 0x38, - 0x35, 0x29, 0x2D, 0xF5, 0x0E, 0xF0, 0xD5, 0x96, 0x74, 0x80, 0x96, 0xAB, - 0x83, 0xAA, 0xA8, 0xA1, 0x55, 0xB4, 0x90, 0x35, 0x0F, 0x4F, 0x19, 0xF8, - 0x52, 0x8A, 0x81, 0x4A, 0xDB, 0x5F, 0x34, 0x25, 0xF9, 0xBB, 0x48, 0x8B, - 0x66, 0x18, 0x64, 0x32, 0xC2, 0xAE, 0x44, 0x8E, 0x7F, 0xB1, 0x7F, 0x3F, - 0x09, 0x83, 0xB4, 0x21, 0xEF, 0xF6, 0x70, 0xF8, 0xEB, 0xE6, 0x6A, 0xFB, - 0x0B, 0x46, 0x23, 0x05, 0xE8, 0x6D, 0x2B, 0x82, 0x87, 0x89, 0xA6, 0x6D, - 0x53, 0x86, 0xD6, 0xAC, 0x0C, 0xD3, 0x6C, 0x3A, 0x77, 0x4F, 0x7F, 0xDD, - 0x61, 0x47, 0x5C, 0x17, 0x02, 0x79, 0x49, 0x15, 0xCC, 0xE7, 0x33, 0xF8, - 0x01, 0x51, 0x64, 0x43, 0xD7, 0x00, 0x29, 0x15, 0x69, 0xD2, 0xDA, 0xF6, - 0x66, 0xE1, 0x65, 0xCA, 0x40, 0xB5, 0x8A, 0xE1, 0x0B, 0x1D, 0x54, 0x17, - 0xF6, 0x95, 0xD1, 0xFB, 0x21, 0xD9, 0x4B, 0x34, 0xD8, 0x0D, 0x44, 0xB7, - 0xEF, 0x5A, 0x94, 0xFC, 0xED, 0x74, 0x01, 0xED, 0x7B, 0x70, 0x52, 0x8D, - 0xC9, 0xF2, 0x33, 0x61, 0x74, 0x83, 0xC5, 0x4D, 0x72, 0x53, 0xFA, 0x68, - 0xCA, 0xA3, 0x85, 0xEF, 0x8A, 0x7E, 0xEF, 0xEC, 0xF8, 0xAA, 0x22, 0x2D, - 0x53, 0xB2, 0xA5, 0xCE, 0x74, 0x3D, 0xF1, 0x87, 0xCE, 0xE7, 0xA0, 0xAE, - 0xA6, 0x68, 0xB1, 0xA4, 0xE1, 0x3F, 0x60, 0xBC, 0x9A, 0x05, 0xFF, 0x1F, - 0xA4, 0x12, 0x7F, 0xC5, 0xE7, 0x86, 0x18, 0x8A, 0x64, 0x94, 0xDB, 0xFC, - 0xB2, 0x4C, 0xFB, 0x3E, 0x2A, 0xB0, 0xC5, 0x88, 0xFC, 0x00, 0x6A, 0x5E, - 0x33, 0x81, 0xD4, 0x40, 0x12, 0x44, 0xB0, 0x24, 0xA9, 0xE6, 0xFB, 0x95, - 0xEF, 0x56, 0xF2, 0x4B, 0xF0, 0x46, 0x8B, 0xBF, 0xE6, 0x8F, 0x77, 0x90, - 0x0E, 0x3B, 0xDA, 0xCD, 0xDC, 0x6F, 0x78, 0x25, 0x37, 0x23, 0x55, 0x3A, - 0xBA, 0x35, 0x74, 0x41, 0x31, 0xE0, 0x34, 0xFF, 0x89, 0x14, 0x92, 0xCD, - 0x65, 0x6E, 0x22, 0x00, 0x6C, 0xFE, 0x1E, 0x73, 0x5C, 0x59, 0xC6, 0x88, - 0x32, 0xFA, 0xC4, 0x9D, 0x8F, 0xF0, 0x54, 0x6F, 0x64, 0xBC, 0x13, 0x44, - 0x94, 0x04, 0x92, 0xDE, 0x30, 0xCA, 0x9E, 0xE8, 0x20, 0x3A, 0x03, 0x43, - 0xFD, 0xE1, 0x6B, 0x17, 0x09, 0xCC, 0xEC, 0x62, 0x3B, 0x10, 0x8E, 0x79, - 0x64, 0x15, 0x6C, 0x01, 0x09, 0x0F, 0x0D, 0x8E, 0x79, 0xBC, 0xD4, 0xE3, - 0x01, 0x2C, 0xAF, 0x0C, 0xF9, 0x5F, 0x53, 0xB8, 0xB0, 0x7E, 0x6D, 0xB9, - 0x8D, 0x29, 0xC9, 0x3F, 0x1E, 0x82, 0xB8, 0xF0, 0xEB, 0xDD, 0x6A, 0xB4, - 0xB4, 0xAE, 0x74, 0xC6, 0x0B, 0x45, 0x12, 0xEC, 0x9D, 0xDD, 0x79, 0x94, - 0xC1, 0x2D, 0x4D, 0x3C, 0x25, 0x75, 0xA6, 0x2E, 0x7A, 0x52, 0xE1, 0x31, - 0xA4, 0xDD, 0x4E, 0x1B, 0xBC, 0x54, 0x83, 0x50, 0x27, 0xA1, 0xF9, 0xB0, - 0xFF, 0xA1, 0x58, 0x71, 0xAD, 0x72, 0x05, 0xAB, 0x90, 0xEC, 0x99, 0x63, - 0x69, 0x7F, 0x81, 0xF3, 0xED, 0x31, 0x76, 0x52, 0x6C, 0x5D, 0x56, 0xFA, - 0x74, 0x29, 0xFA, 0x40, 0xD7, 0x78, 0x75, 0x29, 0x66, 0x28, 0x46, 0xB2, - 0x01, 0xF6, 0xAE, 0x63, 0x37, 0xA5, 0xF9, 0x9F, 0x0F, 0x08, 0x65, 0x27, - 0x7D, 0x68, 0xB7, 0x28, 0xD6, 0x5F, 0x04, 0x5F, 0xA8, 0x3F, 0x0D, 0x0B, - 0x4E, 0x4B, 0x60, 0x7D, 0xCA, 0xA4, 0x2A, 0x20, 0x5C, 0xD3, 0x0B, 0x58, - 0xFF, 0x65, 0x6F, 0xCF, 0x5A, 0x75, 0x1A, 0xB7, 0x75, 0x62, 0x0E, 0xBF, - 0xFA, 0xD0, 0xBF, 0xB9, 0x14, 0xE9, 0x56, 0xE7, 0x2C, 0x3D, 0x2C, 0x7C, - 0x5D, 0x7E, 0xA8, 0x4B, 0x7F, 0x6B, 0x94, 0x84, 0x17, 0x8C, 0x90, 0x24, - 0x06, 0xFD, 0xE0, 0xCE, 0xD7, 0x03, 0xAB, 0x29, 0x9A, 0xCE, 0x09, 0xAB, - 0xF0, 0x83, 0x20, 0x19, 0xC4, 0x08, 0xB5, 0x74, 0x45, 0x5C, 0xDB, 0x99, - 0xF5, 0x3D, 0x2A, 0x9F, 0x6A, 0xB6, 0x70, 0xBD, 0x6D, 0x9C, 0x8A, 0xF2, - 0x18, 0x64, 0x13, 0x5D, 0x92, 0x09, 0x78, 0xD6, 0x04, 0x2A, 0xFB, 0x75, - 0xF7, 0x0D, 0xDE, 0x95, 0x81, 0x52, 0xB3, 0x69, 0xF0, 0x0F, 0x84, 0xA2, - 0xED, 0x02, 0xB5, 0x79, 0x98, 0x51, 0x66, 0x0B, 0xBD, 0x72, 0x6F, 0xAA, - 0xFE, 0xAA, 0x1B, 0x03, 0x4B, 0x3D, 0x24, 0x52, 0xCA, 0x81, 0x78, 0xFE, - 0x91, 0xAF, 0x33, 0x90, 0x1D, 0x42, 0x9B, 0x1F, 0xE0, 0x26, 0x39, 0x09, - 0x2B, 0xBF, 0x41, 0xDD, 0xB4, 0x99, 0xF6, 0x39, 0x29, 0x5A, 0xF6, 0x20, - 0x46, 0xB2, 0x4C, 0x89, 0xF6, 0x87, 0xF0, 0x91, 0x2E, 0x3C, 0xE0, 0x91, - 0x1E, 0x4F, 0x4E, 0x3E, 0x49, 0xAB, 0x79, 0x55, 0xA5, 0x7D, 0xE7, 0xAA, - 0x35, 0x31, 0x1B, 0xB1, 0x6F, 0x76, 0x30, 0xBC, 0xC6, 0x3E, 0x6C, 0x9B, - 0xAB, 0x99, 0x82, 0xB5, 0xA2, 0x37, 0xBD, 0xAC, 0x37, 0x39, 0xAB, 0xA9, - 0xCC, 0xD9, 0x65, 0xC6, 0x3D, 0x5E, 0x8B, 0x08, 0x0B, 0x0E, 0xAE, 0xA8, - 0x44, 0xFC, 0x30, 0x26, 0x92, 0x3A, 0xAB, 0x9E, 0xB5, 0x16, 0x85, 0xD8, - 0xDA, 0x4E, 0x54, 0x36, 0x69, 0x8E, 0x4D, 0xB6, 0x61, 0x83, 0xAF, 0x46, - 0x5F, 0x17, 0x71, 0xF2, 0x7C, 0xD2, 0x53, 0xD0, 0xD7, 0xC3, 0x52, 0x6A, - 0x8A, 0x18, 0x40, 0xB6, 0x00, 0xD7, 0x0F, 0x41, 0x0B, 0xC1, 0xC5, 0xC0, - 0xA6, 0x98, 0x59, 0x7C, 0x45, 0x19, 0x11, 0xDA, 0x2C, 0xE3, 0xCE, 0x56, - 0x9E, 0xBF, 0x85, 0xCE, 0xFA, 0xE5, 0x68, 0x66, 0x06, 0xE6, 0x57, 0x58, - 0x76, 0xAD, 0xB6, 0xC7, 0xFE, 0x2E, 0x2F, 0xA1, 0x62, 0x7D, 0x8C, 0xB9, - 0xC6, 0xBC, 0xF9, 0x0A, 0x84, 0x1A, 0xB7, 0xF6, 0x5C, 0x75, 0x00, 0x1F, - 0xA0, 0x6B, 0xF9, 0x54, 0x51, 0xB6, 0xBD, 0xA4, 0xC3, 0xDF, 0x25, 0x07, - 0x93, 0x33, 0x6B, 0x8C, 0x7E, 0x7C, 0xC8, 0x16, 0x78, 0x1A, 0xDA, 0xCA, - 0x48, 0x4A, 0x7C, 0x61, 0xAD, 0xEE, 0x08, 0x51, 0xCB, 0xE4, 0x99, 0xB2, - 0x2A, 0x02, 0x6F, 0x0D, 0x86, 0x1C, 0xC1, 0xD5, 0x0C, 0x55, 0x91, 0xDE, - 0x77, 0xF2, 0xE2, 0x96, 0xEF, 0xD7, 0x39, 0x08, 0x42, 0x22, 0x6D, 0x2B, - 0xA0, 0xE4, 0xA1, 0x38, 0x86, 0x4F, 0xE4, 0x1A, 0xF2, 0x30, 0xCB, 0xD9, - 0x38, 0x1E, 0xF0, 0x27, 0xAA, 0x1A, 0xA3, 0xD6, 0x2B, 0xC8, 0xE8, 0x5E, - 0x31, 0xBF, 0xEB, 0x3A, 0x68, 0xF2, 0x98, 0x94, 0xA0, 0x8A, 0x6E, 0x07, - 0x2A, 0x81, 0xE7, 0x01, 0xD3, 0x7C, 0xD8, 0x58, 0x19, 0x96, 0x53, 0xA8, - 0x3C, 0x71, 0x0E, 0x4C, 0xFB, 0x24, 0x7D, 0x63, 0x47, 0x61, 0x90, 0x94, - 0x71, 0x18, 0x38, 0x35, 0x80, 0x03, 0x41, 0xD4, 0x3E, 0xA9, 0x27, 0xAE, - 0xB7, 0x0B, 0x9A, 0xD1, 0xDB, 0xC5, 0x1F, 0x38, 0x88, 0x73, 0xD2, 0x3C, - 0xB0, 0x72, 0x60, 0x5C, 0xFD, 0xF9, 0xD3, 0x3F, 0x90, 0x89, 0x2B, 0xE2, - 0x6C, 0x08, 0x4E, 0xB6, 0x4E, 0xF1, 0x4F, 0x5D, 0x82, 0x3C, 0xC6, 0x08, - 0x96, 0xA3, 0xEB, 0xFF, 0xEC, 0xF4, 0xC5, 0xB1, 0xC7, 0x1B, 0xF3, 0x5E, - 0x67, 0x6F, 0x11, 0xA3, 0xAC, 0x18, 0xF8, 0xF3, 0x0F, 0x6A, 0x64, 0x02, - 0x4F, 0xE2, 0xE4, 0x3A, 0x2A, 0x20, 0x28, 0x5B, 0x5E, 0xAC, 0x83, 0x8C, - 0xA3, 0xF1, 0x67, 0x0D, 0xBA, 0x8E, 0xEC, 0x25, 0xDE, 0x7D, 0xEF, 0xCF, - 0x2C, 0x06, 0x74, 0x9F, 0x9A, 0x38, 0x70, 0x8D, 0xD0, 0x3E, 0xEA, 0x90, - 0x5E, 0xD1, 0xAE, 0xDB, 0x03, 0xC7, 0x8A, 0xEF, 0x55, 0x54, 0x34, 0xB2, - 0x15, 0x6F, 0x17, 0x60, 0x31, 0xE4, 0x32, 0x27, 0xF3, 0x82, 0xAE, 0xFB, - 0x9E, 0x6E, 0x25, 0x4A, 0x96, 0xFE, 0x23, 0x4E, 0xFB, 0x46, 0xFC, 0xB8, - 0x02, 0xAB, 0xD4, 0xD3, 0x1F, 0x0B, 0x23, 0x72, 0x10, 0xAD, 0x6F, 0x13, - 0x56, 0xB4, 0x95, 0x20, 0xD3, 0x5A, 0x48, 0xE0, 0xC4, 0xBB, 0x96, 0x4C, - 0x52, 0xEA, 0x25, 0x9F, 0xAE, 0xFE, 0x49, 0x3A, 0xA2, 0x54, 0x98, 0x53, - 0x06, 0xD3, 0x1A, 0xC2, 0x6C, 0x5A, 0x6D, 0xD7, 0x28, 0xDE, 0x54, 0xDC, - 0xCC, 0x2D, 0x42, 0x48, 0x3D, 0x33, 0xA7, 0x9E, 0xEE, 0x9E, 0xAE, 0xAC, - 0x4D, 0x8B, 0x0D, 0x98, 0x03, 0xF0, 0x4D, 0xF9, 0x40, 0x62, 0x12, 0x38, - 0x34, 0xA4, 0x81, 0xA3, 0x51, 0xA2, 0xDB, 0x76, 0xDD, 0x33, 0xEA, 0x6B, - 0xB1, 0x54, 0x6F, 0xCF, 0x42, 0x6C, 0xAB, 0x9D, 0x15, 0x93, 0x3A, 0x0C, - 0xEA, 0xD0, 0x0B, 0xBB, 0x77, 0xB1, 0xA0, 0x23, 0xDA, 0x15, 0x10, 0xA9, - 0x3E, 0xE6, 0x2F, 0x52, 0x41, 0x57, 0xA8, 0x86, 0xEB, 0x43, 0x96, 0x63, - 0x8D, 0x98, 0xE2, 0xE3, 0x8F, 0x2B, 0xA3, 0xB4, 0xAD, 0x2D, 0xDE, 0x72, - 0xF0, 0x08, 0xBB, 0x19, 0x42, 0xFB, 0xA4, 0x56, 0x13, 0xEF, 0xF5, 0xE0, - 0x6D, 0x2F, 0x9D, 0x87, 0x81, 0x2C, 0xCB, 0xC9, 0x72, 0x21, 0x27, 0xB5, - 0x23, 0xB2, 0x9F, 0xC4, 0x0F, 0x4E, 0xBA, 0x9C, 0xF4, 0x86, 0xBE, 0xC7, - 0x9C, 0xF9, 0x53, 0xA7, 0xE1, 0x99, 0xB0, 0xF0, 0xF9, 0x35, 0x47, 0x00, - 0xB9, 0xC4, 0xED, 0x11, 0x21, 0x5A, 0x48, 0xAE, 0x71, 0xC7, 0xD3, 0xFC, - 0x78, 0xBB, 0x69, 0xEA, 0x9A, 0xEA, 0x60, 0x2A, 0x8D, 0xE8, 0x16, 0x33, - 0x80, 0x2F, 0x38, 0xEF, 0x9E, 0x09, 0x18, 0x2D, 0xCF, 0x0F, 0xD5, 0x23, - 0x8A, 0xF2, 0xE0, 0x2E, 0x68, 0x97, 0x4F, 0x24, 0xCE, 0xD9, 0xD8, 0xC4, - 0xAE, 0xCC, 0x97, 0x56, 0x01, 0x0A, 0x2B, 0x3A, 0x42, 0x6D, 0xB4, 0x04, - 0xA2, 0x4A, 0x78, 0x77, 0x9F, 0xC2, 0x1E, 0x25, 0x2C, 0x2F, 0x69, 0xC1, - 0x3D, 0x4C, 0xB2, 0x8C, 0x9A, 0x02, 0xB8, 0x20, 0x4E, 0xBD, 0x7B, 0x65, - 0xFC, 0x7A, 0xDE, 0x24, 0x30, 0x2A, 0xF2, 0x79, 0xD1, 0x5E, 0x45, 0x7D, - 0x6D, 0x6B, 0x93, 0xDC, 0xF3, 0x2A, 0xF4, 0x40, 0x6B, 0xE0, 0x08, 0x09, - 0xD0, 0x2E, 0x9A, 0xCA, 0x64, 0x42, 0x63, 0xF7, 0x7B, 0x8D, 0x16, 0x49, - 0x8F, 0x02, 0xEB, 0x22, 0xCB, 0x8B, 0xB3, 0xE1, 0x3F, 0x10, 0x89, 0xAE, - 0x02, 0x72, 0xA0, 0x1A, 0x5E, 0xE4, 0xDD, 0x82, 0x72, 0x50, 0x6A, 0x05, - 0xAB, 0x2A, 0xFE, 0xCA, 0x27, 0x4F, 0xF7, 0xC6, 0xBE, 0xDE, 0xC4, 0x7D, - 0x0F, 0xF4, 0x5C, 0x38, 0x50, 0xDC, 0x37, 0xF3, 0x13, 0xCA, 0x54, 0x56, - 0x30, 0x2F, 0xFF, 0xB1, 0xBC, 0xD1, 0xED, 0x19, 0xA4, 0xFC, 0x84, 0xB0, - 0x9E, 0xC3, 0x5A, 0xA7, 0x63, 0x43, 0x7C, 0x8A, 0x06, 0x4D, 0x04, 0x72, - 0x16, 0x6B, 0x22, 0xA6, 0x74, 0x0E, 0x12, 0x47, 0x5E, 0xA1, 0x74, 0x72, - 0xEE, 0x65, 0x95, 0x8E, 0x30, 0x6B, 0xBF, 0x92, 0xE6, 0x3E, 0xA0, 0xB8, - 0x86, 0x55, 0x54, 0xC8, 0x0A, 0x20, 0xA9, 0xE9, 0xAE, 0x5B, 0x47, 0x2E, - 0xCE, 0x0A, 0xD5, 0x4B, 0xAF, 0x22, 0xA0, 0x23, 0x3E, 0x4E, 0x77, 0xA7, - 0x64, 0x01, 0x15, 0x47, 0x28, 0x6A, 0xD1, 0x90, 0xCD, 0x32, 0x74, 0x7A, - 0x02, 0x80, 0xEA, 0x91, 0x2E, 0x6B, 0x22, 0x52, 0x68, 0xC2, 0x40, 0x19, - 0xCE, 0xB7, 0x9A, 0xA2, 0xB3, 0x8A, 0xF5, 0xD8, 0xD8, 0x7B, 0x3E, 0x23, - 0xA9, 0x33, 0x56, 0x06, 0x1C, 0x74, 0x73, 0x93, 0x3E, 0x97, 0x5C, 0x41, - 0x4D, 0x3F, 0xFF, 0x97, 0xD8, 0x94, 0x29, 0xAF, 0x06, 0xD9, 0xC3, 0xF1, - 0xD6, 0x8D, 0xA7, 0xEE, 0xAA, 0x26, 0xF7, 0x4F, 0x43, 0x5E, 0x60, 0x8D, - 0x0B, 0xD5, 0xAA, 0xD9, 0x89, 0x79, 0x04, 0x7B, 0xC3, 0x90, 0x1A, 0xDF, - 0xA7, 0xB1, 0xBA, 0xC5, 0xCA, 0xAB, 0x0C, 0xB8, 0xE8, 0xF0, 0x45, 0xDC, - 0x85, 0xB5, 0x3B, 0xAC, 0xA7, 0xB2, 0x5C, 0x25, 0x52, 0x90, 0x0D, 0x4C, - 0xEF, 0xFF, 0x06, 0x0F, 0xEE, 0x0F, 0x8A, 0xE9, 0x93, 0x60, 0x3D, 0x8D, - 0x47, 0xC7, 0x55, 0xD9, 0x23, 0xAF, 0x77, 0xDB, 0x01, 0x69, 0xBA, 0x3D, - 0x9B, 0x62, 0x74, 0x44, 0x8E, 0x65, 0x40, 0x66, 0x3E, 0xDF, 0x54, 0x45, - 0x8F, 0xF5, 0xA8, 0x8F, 0xD6, 0x51, 0x42, 0xDE, 0x9D, 0x02, 0xDB, 0x90, - 0xD3, 0x93, 0x8C, 0xE0, 0x0E, 0xFA, 0x11, 0xCF, 0xA9, 0xBD, 0x94, 0xDA, - 0x0F, 0x94, 0x33, 0xF7, 0xA8, 0x80, 0x62, 0x61, 0xAC, 0xE6, 0x1E, 0xC6, - 0x80, 0x55, 0x9D, 0x7C, 0x5B, 0xB8, 0xB3, 0x67, 0xBB, 0x69, 0xA6, 0x6D, - 0xE1, 0x42, 0xD6, 0x81, 0x4E, 0x13, 0x68, 0xC0, 0x6B, 0x01, 0xE8, 0x0F, - 0xFB, 0xD4, 0x07, 0x08, 0xC7, 0x33, 0xAB, 0x3A, 0x68, 0x23, 0x14, 0x86, - 0xC7, 0x76, 0x13, 0xD5, 0x38, 0xF6, 0x4C, 0x91, 0x3E, 0x4F, 0x10, 0xC3, - 0x7A, 0xD0, 0x9B, 0xF6, 0x58, 0x42, 0xD5, 0x12, 0x5A, 0xCE, 0x58, 0x1A, - 0xB0, 0xBF, 0x27, 0x96, 0xFA, 0xE5, 0x8C, 0x43, 0xF7, 0xDE, 0xBD, 0x5F, - 0xE3, 0x79, 0x69, 0xDC, 0x57, 0xA5, 0x12, 0x27, 0x77, 0x61, 0x5E, 0x97, - 0xD4, 0x6F, 0xF6, 0x6E, 0x5B, 0x46, 0x98, 0x8F, 0x06, 0xC9, 0x58, 0xAB, - 0x2D, 0x02, 0x8C, 0x93, 0x61, 0x7F, 0xDF, 0x14, 0xB1, 0xEC, 0xFD, 0x97, - 0xFE, 0x80, 0xD5, 0xCA, 0x08, 0x57, 0x23, 0x9F, 0x49, 0x3A, 0xE3, 0x56, - 0xD8, 0x5A, 0x3C, 0x52, 0x5A, 0x4B, 0xC0, 0x8C, 0xB3, 0x79, 0xD7, 0xC4, - 0xFD, 0x48, 0xF3, 0xEA, 0x4C, 0x40, 0xF9, 0x36, 0x15, 0x47, 0x3B, 0x14, - 0x48, 0x51, 0xF0, 0xC6, 0xBB, 0x30, 0xBB, 0x80, 0xA3, 0x5C, 0x6F, 0xBD, - 0xA1, 0x4E, 0xEC, 0x71, 0x52, 0x44, 0x98, 0xB2, 0x82, 0x49, 0x2D, 0xEB, - 0x61, 0x22, 0xEE, 0xFC, 0x60, 0xCB, 0x01, 0x53, 0xAA, 0xFD, 0x9A, 0xC8, - 0x1B, 0xE9, 0xE4, 0x8C, 0x2C, 0x3C, 0xC8, 0x0A, 0x82, 0xCA, 0x3C, 0x92, - 0xB5, 0x96, 0xDA, 0xF1, 0x41, 0x76, 0x8D, 0x19, 0xED, 0x3B, 0xEE, 0x44, - 0xB0, 0xD2, 0xB3, 0xE9, 0xD5, 0x8E, 0xD5, 0x70, 0x67, 0x72, 0xD0, 0x33, - 0x2B, 0xFC, 0x50, 0x83, 0x1A, 0x72, 0xAE, 0xFE, 0xF0, 0x87, 0x07, 0xD7, - 0x19, 0x97, 0xDB, 0x95, 0xEF, 0xDD, 0xBB, 0xEC, 0x3F, 0xC8, 0x08, 0xBB, - 0x87, 0x5C, 0xB2, 0x51, 0x3F, 0xEE, 0x27, 0xF4, 0xA8, 0x2C, 0x6C, 0x3B, - 0x0C, 0xB9, 0x7C, 0xFB, 0x75, 0xA3, 0xAE, 0x1C, 0xFD, 0x1F, 0x99, 0xF2, - 0x5F, 0x30, 0x16, 0x0B, 0x24, 0xB7, 0x02, 0xE5, 0xDD, 0x59, 0x8E, 0x98, - 0x92, 0x1E, 0xDB, 0x6C, 0x6E, 0xCF, 0x51, 0x81, 0xE0, 0xF5, 0x32, 0xAD, - 0x5F, 0xCC, 0xA1, 0x91, 0x5F, 0x2E, 0xAC, 0xA0, 0xB1, 0x9B, 0x2F, 0xAF, - 0x7E, 0x8E, 0x30, 0x76, 0x82, 0xE3, 0x74, 0x01, 0x2C, 0x2C, 0xB3, 0xB3, - 0xAD, 0xC3, 0x3B, 0x2C, 0x45, 0xB3, 0x40, 0x97, 0x4B, 0xEB, 0xFD, 0xC6, - 0x55, 0xD9, 0x66, 0x0A, 0x4F, 0x3F, 0xB4, 0xE6, 0x01, 0x68, 0x9F, 0x20, - 0xEC, 0x97, 0xBE, 0x6C, 0x09, 0xFF, 0x26, 0x09, 0x3D, 0x66, 0x0F, 0x19, - 0x2C, 0xAF, 0xBD, 0xA2, 0xF4, 0xEA, 0xD1, 0xF6, 0x37, 0x64, 0x8A, 0x9E, - 0x9A, 0x79, 0xFC, 0x20, 0xEC, 0x5B, 0x58, 0x74, 0x8A, 0xD7, 0x78, 0x8E, - 0x1F, 0xBF, 0xEC, 0x78, 0xC0, 0x65, 0xE8, 0xD8, 0x4A, 0x72, 0xEB, 0x13, - 0x4C, 0xD8, 0xE9, 0x7B, 0xEC, 0x48, 0x00, 0x33, 0x69, 0x92, 0xDC, 0xE9, - 0xBE, 0xE5, 0xC7, 0xCE, 0x56, 0x2E, 0x9B, 0xD3, 0x4D, 0xFD, 0xE7, 0x68, - 0xE1, 0xCE, 0x18, 0x8D, 0xD0, 0x92, 0x39, 0xE1, 0x69, 0x83, 0x55, 0x54, - 0x62, 0xE8, 0x26, 0x8B, 0xAB, 0xA0, 0xAC, 0xB2, 0xFD, 0xB2, 0xBB, 0xB0, - 0xD4, 0x1B, 0xC8, 0x2F, 0xA8, 0x9E, 0x9B, 0x24, 0x56, 0xB8, 0x6E, 0xEE, - 0x2F, 0x36, 0x2E, 0xD4, 0x2B, 0x9A, 0x2C, 0x00, 0xE1, 0x18, 0x67, 0xD6, - 0x13, 0x35, 0xF2, 0x8F, 0x77, 0x88, 0x36, 0x40, 0x1F, 0x7B, 0x18, 0x6C, - 0x2B, 0xE6, 0x0E, 0x26, 0x30, 0x98, 0x71, 0x20, 0xE1, 0xA5, 0xF4, 0x94, - 0x36, 0xEF, 0x73, 0x52, 0x59, 0xF2, 0x87, 0x67, 0xFD, 0xBA, 0x55, 0x40, - 0xBE, 0x3B, 0x3B, 0x25, 0x89, 0x40, 0x73, 0xBA, 0x60, 0xAF, 0x50, 0xBE, - 0xEA, 0xC3, 0x31, 0x34, 0x32, 0x71, 0xE4, 0xEC, 0x0E, 0x24, 0x9D, 0x46, - 0x56, 0x33, 0xC7, 0x01, 0x94, 0xA5, 0x51, 0xD1, 0xC6, 0xDB, 0xCA, 0x26, - 0x8D, 0x89, 0xAF, 0xA9, 0x89, 0x7F, 0x26, 0xFB, 0x67, 0x92, 0x73, 0x39, - 0x1A, 0x1A, 0x1C, 0x4E, 0xEB, 0x72, 0x68, 0x92, 0x9F, 0x71, 0x35, 0x13, - 0x38, 0x36, 0xF8, 0x0D, 0xBF, 0x95, 0x9F, 0x35, 0x00, 0x79, 0x47, 0x41, - 0x62, 0x23, 0xBA, 0xF4, 0xCA, 0xC6, 0x12, 0x7C, 0x96, 0x9D, 0xB8, 0x40, - 0x4F, 0x7E, 0x31, 0x01, 0x1E, 0xC7, 0xFD, 0x49, 0xB9, 0xC2, 0x2B, 0x35, - 0x24, 0x2A, 0x13, 0x89, 0x62, 0x63, 0xBA, 0x6C, 0xA8, 0x93, 0x6D, 0x99, - 0xED, 0x9C, 0xE9, 0xB0, 0xF1, 0x8C, 0x9D, 0xA9, 0xEF, 0xDE, 0xF0, 0x92, - 0x1A, 0x3B, 0xA9, 0x94, 0x38, 0x87, 0xA2, 0x53, 0x65, 0x31, 0xAE, 0x0C, - 0x96, 0x64, 0xAC, 0xC8, 0xF8, 0x03, 0x65, 0x59, 0x5A, 0xAF, 0xD7, 0x8B, - 0x0B, 0x31, 0xD9, 0x3A, 0x2F, 0x1C, 0xE3, 0x49, 0xF3, 0xFA, 0x80, 0x9D, - 0x34, 0x0D, 0xC0, 0xCE, 0xBB, 0x6E, 0x90, 0x6E, 0xA5, 0xA7, 0x0D, 0xB4, - 0xB8, 0x04, 0x6A, 0xD6, 0x0C, 0x95, 0x79, 0x9E, 0x27, 0x43, 0xDD, 0xD1, - 0x8E, 0x8F, 0xE0, 0x19, 0xB5, 0xBF, 0xD9, 0x25, 0xEE, 0xBB, 0x3E, 0x79, - 0x0D, 0x9E, 0x0B, 0x03, 0x3D, 0x09, 0x9C, 0xF1, 0x02, 0x0A, 0x81, 0x7B, - 0xCE, 0x95, 0x44, 0x99, 0x72, 0xC5, 0x18, 0x4B, 0xD4, 0x9E, 0x5E, 0x8B, - 0x2D, 0x5F, 0x1E, 0x13, 0xF1, 0x95, 0xCA, 0x37, 0x75, 0x49, 0x7D, 0x3A, - 0x1A, 0x22, 0x02, 0xAC, 0x3E, 0xFE, 0x62, 0xF9, 0x59, 0xB7, 0x11, 0x82, - 0xB6, 0x55, 0x82, 0xC7, 0x13, 0xB7, 0x83, 0x8C, 0x1E, 0x90, 0xB4, 0x3D, - 0x9B, 0x57, 0xE7, 0x1F, 0x4E, 0xB1, 0x70, 0xF4, 0x9E, 0x06, 0x3B, 0x97, - 0xF4, 0xC1, 0xBA, 0x3D, 0xAD, 0x50, 0x01, 0x21, 0xBB, 0x0F, 0xE1, 0x60, - 0x49, 0x25, 0x5A, 0x0F, 0xA3, 0x24, 0x33, 0x97, 0xA4, 0xA2, 0x8D, 0xFE, - 0x9E, 0x17, 0x7D, 0x42, 0x3D, 0x40, 0xBB, 0xE5, 0xFB, 0xB2, 0xCA, 0x2C, - 0x93, 0x38, 0x13, 0xEA, 0x5C, 0xEB, 0x53, 0xFD, 0xFE, 0xD1, 0x2C, 0xB8, - 0xF6, 0xE2, 0x0C, 0xDF, 0xFA, 0x93, 0x2C, 0x25, 0x5C, 0x63, 0x07, 0x27, - 0x11, 0x4E, 0x5E, 0xFA, 0xD0, 0x9D, 0x2E, 0xE3, 0x85, 0xA8, 0xC5, 0x8B, - 0x7B, 0xFE, 0xA0, 0x9C, 0xFE, 0xFE, 0xE5, 0x69, 0xD8, 0x59, 0xAA, 0x52, - 0x40, 0x71, 0x6B, 0x1D, 0x51, 0xDA, 0x13, 0x48, 0xEC, 0xCE, 0x1E, 0x2A, - 0xE5, 0x70, 0x66, 0xB1, 0x1F, 0xA6, 0x65, 0x3E, 0x99, 0x8E, 0x4B, 0x4D, - 0x7C, 0x75, 0xB1, 0x46, 0x51, 0x07, 0x6E, 0x31, 0x7E, 0xE7, 0x5D, 0xE7, - 0x66, 0xA6, 0x6F, 0x65, 0x4E, 0xBD, 0xEF, 0x1E, 0xEC, 0x90, 0x36, 0xFA, - 0xDB, 0x73, 0x5F, 0x54, 0x68, 0x9A, 0xFD, 0xD9, 0x3D, 0xF0, 0xDC, 0xD5, - 0xA3, 0xBF, 0x45, 0xBD, 0x24, 0x7D, 0xB5, 0xC4, 0xC5, 0x63, 0x5F, 0xBC, - 0x4C, 0x19, 0x1A, 0xA3, 0x84, 0x71, 0xBD, 0x63, 0x8B, 0x85, 0x71, 0x30, - 0x2C, 0x00, 0x76, 0x90, 0xDB, 0x44, 0xFC, 0x86, 0x40, 0x10, 0x4C, 0x4F, - 0x9E, 0xFB, 0xC9, 0xF3, 0x61, 0xED, 0x6A, 0x37, 0x7F, 0x76, 0x1E, 0x8D, - 0xB2, 0x30, 0x2B, 0xC1, 0x9F, 0x00, 0xF0, 0x54, 0x60, 0x13, 0x74, 0x87, - 0x83, 0x90, 0xCD, 0xF3, 0x78, 0xD7, 0x84, 0xA2, 0xCA, 0x47, 0x7F, 0x10, - 0xD8, 0xC5, 0xEA, 0xA4, 0xA7, 0x53, 0x47, 0xEF, 0x43, 0x44, 0xA4, 0xEB, - 0xD4, 0x73, 0xB9, 0x08, 0xB1, 0x06, 0xD5, 0xD1, 0xF5, 0x9D, 0x92, 0x2C, - 0xA2, 0x6C, 0x69, 0x68, 0xF6, 0xD2, 0xEF, 0x35, 0x1F, 0x91, 0xC8, 0x8F, - 0x78, 0xF5, 0x2D, 0xB4, 0x83, 0x2C, 0x97, 0x3F, 0xF3, 0x51, 0x42, 0xE7, - 0x8C, 0xE0, 0xDC, 0x01, 0x34, 0x66, 0x05, 0x9A, 0x61, 0x6E, 0x90, 0x5F, - 0x0C, 0xCD, 0xC9, 0x74, 0x8F, 0x5B, 0xA0, 0x40, 0xB6, 0xAF, 0x48, 0xAA, - 0xD9, 0xFA, 0x06, 0x6D, 0xCE, 0x4E, 0x0E, 0x62, 0x8E, 0xF3, 0x23, 0xEB, - 0xF5, 0xE5, 0x22, 0x50, 0x74, 0x06, 0x05, 0xA3, 0x00, 0xD7, 0x5C, 0x5E, - 0x68, 0x1B, 0x0F, 0xB1, 0x38, 0xB0, 0x46, 0xE1, 0x7B, 0xB7, 0xA1, 0x0F, - 0x7B, 0x9A, 0xC2, 0xA3, 0x78, 0x03, 0xD5, 0xA7, 0x93, 0xB1, 0x76, 0xE8, - 0xB5, 0x32, 0x8E, 0x5A, 0x2E, 0xA3, 0xCC, 0xC7, 0x6B, 0xAD, 0x88, 0xB1, - 0x7C, 0x68, 0xC8, 0x1A, 0x09, 0xAC, 0x19, 0xA1, 0x7F, 0x00, 0xB1, 0xC2, - 0xAB, 0x1F, 0x81, 0x29, 0x7A, 0x5C, 0xF1, 0x55, 0xF9, 0x96, 0x52, 0x5E, - 0x8C, 0x57, 0x65, 0xDA, 0x5B, 0xC6, 0x0E, 0xB1, 0xC6, 0x0F, 0x50, 0x9C, - 0x61, 0x20, 0x7A, 0x62, 0x68, 0x53, 0x4E, 0xF9, 0x40, 0xA4, 0xD4, 0x66, - 0xF8, 0xC7, 0x0B, 0xE6, 0x09, 0xA6, 0xBD, 0xBF, 0xA3, 0x57, 0x5E, 0xD6, - 0xA1, 0x84, 0x49, 0x05, 0x54, 0x69, 0xC7, 0xA4, 0x67, 0x08, 0x37, 0x3A, - 0xD3, 0xD3, 0x43, 0x8E, 0xD3, 0xD1, 0xBF, 0xBD, 0x6A, 0x8D, 0x3A, 0x14, - 0x76, 0x6F, 0x04, 0xDE, 0x69, 0x0D, 0xD5, 0x07, 0xF4, 0xEA, 0x36, 0x28, - 0x9E, 0x54, 0x47, 0x25, 0x7D, 0x02, 0x54, 0x53, 0xFC, 0x68, 0x72, 0x77, - 0xE4, 0x9E, 0x6B, 0xF7, 0xAC, 0xD2, 0xBF, 0xA7, 0xC5, 0x3C, 0xF6, 0x99, - 0xEB, 0xC7, 0xA3, 0x11, 0x33, 0xB6, 0xB6, 0x62, 0x4A, 0x3B, 0x93, 0xC2, - 0xF6, 0xC7, 0xF1, 0x7B, 0x3F, 0x6D, 0x2D, 0x12, 0x4B, 0x46, 0xC3, 0xC2, - 0xC7, 0x5F, 0xDE, 0xC0, 0xFD, 0x5E, 0xCD, 0x3B, 0xD1, 0x4C, 0x41, 0x77, - 0x0A, 0x77, 0x3A, 0xA8, 0xB1, 0xEF, 0x02, 0x49, 0x54, 0xA2, 0x3B, 0xA7, - 0x79, 0xEF, 0x2B, 0x56, 0x32, 0x7E, 0x81, 0x71, 0xA6, 0x99, 0x53, 0x8D, - 0xBF, 0x07, 0x9A, 0x4B, 0x70, 0x7F, 0x1D, 0x84, 0x99, 0xCE, 0x0C, 0x4F, - 0x7A, 0x99, 0xBA, 0x94, 0x52, 0xFE, 0x06, 0xDE, 0x2A, 0xF1, 0xDF, 0x75, - 0x45, 0x38, 0x25, 0xD9, 0xC4, 0x6A, 0xF1, 0x5B, 0x2B, 0xA3, 0x50, 0x00, - 0x68, 0xE7, 0x9C, 0xBC, 0x90, 0xDB, 0x38, 0xF7, 0xEC, 0xBD, 0xDB, 0x1B, - 0x77, 0xFF, 0xF8, 0xB8, 0xDB, 0xE8, 0xE5, 0x7F, 0x71, 0xF1, 0x9B, 0x83, - 0x98, 0xF3, 0xE2, 0x4E, 0xA6, 0xBD, 0xE7, 0xD7, 0xD2, 0xBF, 0xB1, 0x89, - 0x54, 0x3D, 0x36, 0xF0, 0x4E, 0x85, 0x5F, 0x14, 0xE3, 0x58, 0x5B, 0x24, - 0x86, 0x75, 0x8D, 0x98, 0x0C, 0xBA, 0x5D, 0x26, 0x62, 0xC4, 0xC2, 0x84, - 0xA6, 0xF9, 0x9B, 0x42, 0x0F, 0xA1, 0x8D, 0x39, 0xF1, 0x67, 0xCE, 0xE7, - 0xB8, 0x70, 0x24, 0xB8, 0xE6, 0x82, 0xE8, 0xC7, 0xF6, 0x7B, 0xFE, 0xD8, - 0x38, 0xCF, 0x1D, 0x0D, 0xEA, 0x7D, 0xBB, 0x65, 0x61, 0x9B, 0xFA, 0xA2, - 0xB8, 0xA7, 0x9B, 0xAD, 0x76, 0x0B, 0x93, 0x00, 0x5E, 0x43, 0x10, 0x4A, - 0x5F, 0x22, 0xCA, 0x74, 0x8E, 0xEC, 0x2B, 0xB4, 0x68, 0x44, 0x2C, 0x95, - 0x4A, 0xDA, 0xDA, 0xC5, 0xBE, 0x8B, 0xFF, 0x4C, 0xC2, 0x0A, 0x74, 0xE0, - 0x6E, 0x45, 0xBD, 0xD5, 0x0A, 0x50, 0xB1, 0x33, 0x8D, 0x57, 0xE8, 0xF0, - 0x78, 0x6D, 0x05, 0x2B, 0x9C, 0x56, 0xC7, 0xB7, 0xE4, 0x66, 0xB8, 0x72, - 0x90, 0x92, 0xC0, 0x07, 0x7B, 0x18, 0xB1, 0x14, 0x6A, 0x64, 0xEE, 0xC1, - 0x9F, 0x0D, 0xB4, 0x1D, 0xE7, 0xF1, 0x17, 0x49, 0xB1, 0x84, 0xD9, 0x26, - 0xA5, 0x9A, 0xFA, 0xF1, 0xA3, 0x55, 0xC2, 0xAA, 0xF5, 0xBE, 0x49, 0xF6, - 0x6C, 0x67, 0x93, 0x04, 0x0A, 0xE3, 0xC0, 0xA1, 0x72, 0x8B, 0xE7, 0x05, - 0xEA, 0x70, 0xEF, 0x27, 0xF4, 0xC0, 0xE3, 0xBE, 0x57, 0xA3, 0x66, 0xAF, - 0x83, 0x04, 0x0E, 0xAD, 0x08, 0x77, 0x1F, 0xA4, 0x1C, 0xA5, 0xF5, 0xED, - 0x03, 0xB4, 0x0E, 0xDA, 0xEC, 0xFD, 0x9D, 0x8B, 0x81, 0x5C, 0xDF, 0xAE, - 0x5D, 0xEC, 0x08, 0x94, 0x78, 0xA4, 0x0F, 0x1A, 0x75, 0x0B, 0x32, 0xE2, - 0x9F, 0x0B, 0xDF, 0xD4, 0x5D, 0xFE, 0xF8, 0x43, 0x5E, 0xC5, 0xC0, 0x8C, - 0xBC, 0xAB, 0xDE, 0x33, 0x38, 0xA0, 0x76, 0x86, 0x94, 0xF0, 0xF0, 0x40, - 0xD4, 0x3F, 0x82, 0xED, 0x3F, 0x2C, 0x5A, 0x6F, 0xB3, 0xE9, 0x4C, 0x5D, - 0xE5, 0xAB, 0xD5, 0xAB, 0x89, 0x9D, 0x0A, 0x37, 0x9F, 0xC0, 0x84, 0xF6, - 0x81, 0xB7, 0x9B, 0x5C, 0x1A, 0xC4, 0x40, 0x06, 0x29, 0xC6, 0x62, 0xCE, - 0x07, 0x1B, 0x13, 0xBA, 0x81, 0xDF, 0xEE, 0xF9, 0xD3, 0xE7, 0xC1, 0x9A, - 0x7C, 0x43, 0x0E, 0x83, 0xB0, 0x4E, 0xCD, 0x8E, 0xB4, 0x34, 0xBF, 0xEF, - 0x74, 0x4D, 0xE0, 0xF4, 0xB3, 0x25, 0x93, 0xAC, 0xCE, 0x20, 0x7B, 0x22, - 0x6E, 0xAA, 0x75, 0x14, 0xCA, 0xA8, 0x09, 0x2A, 0xCE, 0xE0, 0x57, 0x5E, - 0x3A, 0xCA, 0xF5, 0x11, 0x5D, 0xC6, 0x08, 0x6D, 0xB1, 0xD8, 0x4C, 0x90, - 0x4A, 0x5A, 0x4B, 0x1F, 0x98, 0xD6, 0x87, 0xF2, 0xD5, 0x82, 0x86, 0x16, - 0xA5, 0x01, 0xEA, 0xFC, 0x78, 0xF3, 0xF9, 0xE2, 0x3C, 0x74, 0xC4, 0xFC, - 0x9B, 0x8D, 0x2C, 0x36, 0x87, 0xE6, 0x57, 0x8C, 0x5D, 0xEA, 0x8F, 0x96, - 0x85, 0x9A, 0xEF, 0x18, 0x34, 0x36, 0xC0, 0x46, 0x7C, 0x77, 0xD6, 0xBF, - 0x25, 0xA2, 0xE7, 0x95, 0xFA, 0x82, 0xDD, 0x11, 0x2B, 0xAC, 0x9D, 0xB8, - 0x7B, 0x21, 0xB7, 0x51, 0xFC, 0x21, 0x24, 0xA5, 0x20, 0xD4, 0x89, 0xF0, - 0xFF, 0x31, 0x1B, 0x3E, 0x29, 0x10, 0x00, 0xFA, 0xEA, 0x6E, 0xA7, 0xA0, - 0x4E, 0x1E, 0x21, 0xDF, 0x7F, 0x84, 0x16, 0x77, 0x8B, 0xF1, 0xFE, 0xAB, - 0x4E, 0xBD, 0xF4, 0xA1, 0x2B, 0xA3, 0x8B, 0x7A, 0x46, 0xF2, 0xD3, 0x92, - 0x23, 0xBB, 0x23, 0x30, 0x10, 0x7A, 0x69, 0x38, 0x6C, 0xBA, 0xF3, 0xBD, - 0xDF, 0xF6, 0xCE, 0xC7, 0x9A, 0xA7, 0x20, 0xB8, 0xE9, 0xE6, 0x14, 0xEE, - 0xFD, 0x3E, 0x89, 0xF8, 0x93, 0x6F, 0x7B, 0xDE, 0xD9, 0xB4, 0x3A, 0xED, - 0xA9, 0x4B, 0x05, 0x2E, 0x4F, 0xE4, 0x07, 0x0F, 0x45, 0x3F, 0x95, 0x62, - 0x6C, 0x4B, 0x23, 0xA3, 0xBF, 0x74, 0x13, 0x16, 0xFD, 0x88, 0xDB, 0xF8, - 0xC6, 0xB1, 0xA6, 0x72, 0x20, 0xCC, 0xE2, 0x67, 0x92, 0x30, 0xE0, 0x2C, - 0xAF, 0xDA, 0xD9, 0x27, 0x92, 0x01, 0x97, 0xAB, 0xBE, 0xCB, 0x2C, 0x0D, - 0x01, 0x67, 0x3F, 0xE3, 0x7A, 0x5B, 0xE0, 0x06, 0x08, 0xB3, 0x25, 0x4E, - 0x78, 0x80, 0x76, 0x67, 0xFB, 0x4C, 0xD0, 0x5E, 0xFD, 0x5A, 0x64, 0xD7, - 0x0C, 0x09, 0xC2, 0x21, 0x57, 0x06, 0x63, 0x5A, 0x59, 0x2E, 0xF1, 0x3F, - 0x09, 0x0D, 0x60, 0xDF, 0xED, 0xDA, 0xA7, 0x75, 0x70, 0xB7, 0xD7, 0x0A, - 0x66, 0x2D, 0xAC, 0xB8, 0x2F, 0xA3, 0x96, 0x19, 0xB0, 0x5B, 0x29, 0x9C, - 0x6E, 0x50, 0xC0, 0x00, 0x14, 0xC5, 0x3B, 0xA3, 0x6C, 0x3A, 0x6A, 0xAB, - 0x97, 0x96, 0x47, 0x72, 0xE7, 0x21, 0x74, 0x8F, 0xD9, 0xB4, 0xCE, 0xDC, - 0x81, 0x6E, 0x48, 0x96, 0x59, 0xB7, 0xC9, 0xF3, 0x99, 0xD0, 0x8D, 0x10, - 0x3B, 0x69, 0xD0, 0xF5, 0xA7, 0x31, 0x9D, 0xA8, 0x36, 0x63, 0xB6, 0xBC, - 0x8A, 0xC9, 0x03, 0x3A, 0xCC, 0xDC, 0xFA, 0x9A, 0xAB, 0x47, 0xC4, 0x19, - 0x83, 0xD6, 0xD3, 0x1F, 0x6E, 0x60, 0xD9, 0xCC, 0x98, 0xE5, 0x53, 0xC6, - 0xC3, 0xE8, 0xA7, 0xF3, 0xB9, 0xF1, 0xAC, 0xA9, 0xB9, 0x05, 0x47, 0x46, - 0x21, 0x3F, 0x0C, 0xCC, 0x60, 0x5C, 0xF8, 0x9E, 0xA8, 0x42, 0x5D, 0xD9, - 0xC8, 0xF3, 0x9E, 0x75, 0xAD, 0x22, 0x68, 0x67, 0x37, 0xF2, 0x8F, 0xD1, - 0x7C, 0x5D, 0x07, 0xD8, 0x69, 0x6C, 0x34, 0xF0, 0x7E, 0x71, 0x47, 0x29, - 0xA1, 0x8D, 0x07, 0x3F, 0x60, 0x75, 0xC8, 0x16, 0xEF, 0x11, 0xE3, 0xFD, - 0x48, 0x35, 0xED, 0xCA, 0x2C, 0x37, 0xCF, 0xEA, 0x37, 0x6D, 0xA0, 0xFF, - 0x7A, 0x46, 0x15, 0x41, 0x6B, 0xE3, 0x40, 0x6F, 0x27, 0x02, 0xA4, 0x2B, - 0x34, 0x0B, 0x07, 0xE3, 0x69, 0x4E, 0xF3, 0xF3, 0xAC, 0x4A, 0xA7, 0xE4, - 0xBB, 0x4E, 0x8E, 0xAF, 0xC0, 0x76, 0x9B, 0xD3, 0xB1, 0x93, 0xF3, 0x87, - 0x38, 0x7B, 0x0B, 0x84, 0xFA, 0xDA, 0x85, 0x32, 0x06, 0x7C, 0xFD, 0x2E, - 0xF0, 0x90, 0x31, 0xAE, 0x3E, 0x9B, 0xBF, 0x0A, 0xDF, 0xA4, 0xA9, 0x3B, - 0x43, 0x16, 0x31, 0x04, 0xD6, 0x2F, 0x9F, 0x7A, 0x79, 0xD5, 0x79, 0x5D, - 0x1C, 0x4A, 0x6A, 0x19, 0x2A, 0xD0, 0x05, 0x69, 0xFE, 0xAC, 0x78, 0x41, - 0xE7, 0xEA, 0xE7, 0xDD, 0x23, 0xA7, 0x7C, 0x59, 0x7F, 0x6B, 0xDA, 0x30, - 0x77, 0x16, 0xE8, 0x02, 0x3D, 0xB4, 0x4D, 0xB3, 0xCC, 0x41, 0x56, 0x05, - 0x1F, 0xD7, 0x07, 0x0B, 0x5B, 0x30, 0x6C, 0x45, 0x7E, 0x41, 0xE4, 0x79, - 0x0B, 0x5A, 0x17, 0xF5, 0xD6, 0x30, 0x9E, 0xAC, 0x2F, 0x6F, 0x99, 0x18, - 0x4E, 0x11, 0x39, 0xF4, 0x29, 0x55, 0x82, 0x08, 0xF8, 0x2D, 0xE6, 0x06, - 0xE8, 0x2D, 0x62, 0xD5, 0x66, 0xB4, 0x5E, 0x62, 0x96, 0x16, 0xA6, 0xD8, - 0x69, 0x04, 0x23, 0x35, 0xD0, 0x4F, 0xA0, 0x7F, 0xC5, 0xE4, 0x49, 0x6C, - 0x64, 0x4A, 0xD8, 0xC3, 0x4D, 0x51, 0xBC, 0x49, 0x12, 0x76, 0x8A, 0xEC, - 0xB2, 0x03, 0x93, 0xB8, 0x2D, 0x42, 0x91, 0x09, 0xAE, 0xC2, 0x50, 0xD2, - 0x72, 0x3A, 0x11, 0x26, 0xF8, 0x43, 0x2A, 0xD5, 0x13, 0x4E, 0x4D, 0x1E, - 0x28, 0xE5, 0xAF, 0xCC, 0xCE, 0x6D, 0x4A, 0x06, 0xB4, 0x2E, 0xF7, 0x40, - 0x89, 0x33, 0x61, 0x11, 0x7A, 0x4C, 0x75, 0xC5, 0x7D, 0x2E, 0xDB, 0x1D, - 0xE7, 0xA0, 0xD7, 0x96, 0xDD, 0x37, 0xF3, 0x48, 0x62, 0xBB, 0xAF, 0xB2, - 0x2C, 0x56, 0x99, 0x20, 0x45, 0x1A, 0x20, 0x96, 0x6F, 0x5E, 0x74, 0x7B, - 0x04, 0xDA, 0x67, 0x05, 0x0F, 0x4D, 0xFC, 0x7E, 0xE0, 0x65, 0x13, 0xDB, - 0x06, 0x5E, 0x50, 0x93, 0xA4, 0xA2, 0x1D, 0x10, 0x7D, 0x61, 0x25, 0x3D, - 0x19, 0xCD, 0xC9, 0x51, 0xE2, 0xF1, 0x6A, 0xBC, 0xCF, 0x7D, 0xB3, 0x0F, - 0x77, 0x98, 0x7A, 0x09, 0x9C, 0x40, 0x03, 0x48, 0x17, 0xE2, 0x75, 0x10, - 0x59, 0xAC, 0x9F, 0x4A, 0xEC, 0x63, 0x0F, 0xD9, 0x3A, 0x75, 0x0D, 0xCD, - 0xD4, 0x4E, 0x7F, 0xA5, 0xE3, 0xFB, 0xA3, 0x5E, 0x0A, 0x6E, 0xD2, 0xD8, - 0x05, 0x3D, 0x84, 0x20, 0x5E, 0xCE, 0xBE, 0xFC, 0x9A, 0x29, 0x85, 0x08, - 0xD6, 0x07, 0x07, 0x4B, 0x01, 0x60, 0x07, 0xE7, 0xF5, 0x83, 0x9E, 0x35, - 0x12, 0xEF, 0xDD, 0xA6, 0x97, 0x51, 0xD1, 0x39, 0x11, 0x22, 0x45, 0xB0, - 0x5D, 0xCA, 0x29, 0x69, 0x12, 0xE3, 0x0C, 0xA7, 0x41, 0x57, 0x99, 0xF2, - 0xD9, 0x05, 0xAD, 0x87, 0xDE, 0xC7, 0x2C, 0xB3, 0x2B, 0x63, 0x87, 0x9F, - 0xC5, 0xEE, 0xAB, 0xF5, 0x2A, 0xF1, 0x9B, 0x54, 0xB6, 0x54, 0xC0, 0x41, - 0x88, 0x6E, 0x54, 0x63, 0x85, 0xD3, 0xFB, 0xED, 0xAD, 0x45, 0xEE, 0x91, - 0xD3, 0x65, 0x4E, 0x5D, 0xF7, 0xE1, 0xF9, 0x56, 0x29, 0x12, 0x9D, 0x3C, - 0xFE, 0x91, 0x76, 0xBE, 0x49, 0xD5, 0x62, 0x61, 0x24, 0x4F, 0x5C, 0x6B, - 0x9A, 0xFC, 0xD2, 0x31, 0x98, 0x24, 0xA5, 0x5A, 0x7A, 0x98, 0xF5, 0x0B, - 0xFE, 0xD4, 0x44, 0xF1, 0xE2, 0x88, 0xE7, 0x00, 0xA7, 0x56, 0xD6, 0xC9, - 0xC8, 0x0C, 0x66, 0x20, 0xCC, 0x92, 0x3B, 0x8A, 0x50, 0x65, 0x09, 0x61, - 0x54, 0x06, 0xA3, 0x7D, 0x73, 0xFB, 0x9E, 0x45, 0xD8, 0x67, 0x0F, 0x79, - 0xF6, 0xF9, 0xAB, 0x72, 0x61, 0xA0, 0x36, 0xE2, 0x95, 0x32, 0x58, 0xE6, - 0x47, 0xA6, 0x53, 0x27, 0x68, 0x36, 0xB5, 0x4B, 0x59, 0x61, 0x08, 0xEA, - 0xE9, 0xE8, 0x0A, 0x24, 0xFD, 0x96, 0x5A, 0x02, 0xDB, 0xC2, 0xB4, 0x88, - 0xF2, 0x15, 0x3C, 0xDC, 0xEF, 0x51, 0x34, 0x43, 0xD2, 0xF4, 0x9D, 0x9E, - 0xD4, 0x5C, 0x98, 0x5B, 0xB2, 0xB8, 0x70, 0x39, 0x26, 0x5E, 0x8D, 0xAD, - 0x9B, 0x37, 0x18, 0xB9, 0x74, 0xAC, 0xC6, 0xD0, 0x07, 0x1D, 0x13, 0x20, - 0x66, 0x36, 0x28, 0x52, 0x62, 0xD9, 0x36, 0x54, 0xAE, 0x14, 0xF4, 0x62, - 0x50, 0xA5, 0x96, 0x9B, 0xBE, 0xB8, 0x33, 0xFB, 0xD3, 0xDC, 0xB3, 0x74, - 0x90, 0x2B, 0x3B, 0xAC, 0x27, 0xD8, 0x83, 0x8E, 0xF9, 0x6D, 0x35, 0x42, - 0xD5, 0x60, 0x46, 0x33, 0x93, 0xF8, 0xB4, 0x77, 0xB0, 0xBF, 0xCD, 0xAE, - 0x33, 0x9C, 0x8A, 0x7A, 0x06, 0x33, 0x05, 0x0C, 0x27, 0x61, 0x30, 0x31, - 0x13, 0xD3, 0x15, 0xB1, 0x7C, 0x23, 0x22, 0x99, 0xFF, 0x47, 0xB4, 0xA2, - 0x1D, 0x39, 0x9A, 0xE1, 0x52, 0xCC, 0x1A, 0x53, 0xF3, 0xA4, 0xE7, 0x2A, - 0x4A, 0x12, 0xE5, 0xA4, 0x8D, 0x0D, 0xC4, 0xA6, 0xFE, 0x4F, 0x45, 0x2D, - 0x2C, 0xA2, 0x64, 0x39, 0x41, 0xA5, 0xC0, 0xB7, 0x84, 0xA5, 0x98, 0x67, - 0x2A, 0xA9, 0x2D, 0x7B, 0xAF, 0x8E, 0xDC, 0xE3, 0x58, 0xAA, 0x17, 0x5B, - 0xC3, 0x69, 0xE7, 0x88, 0x64, 0xB8, 0x72, 0x5A, 0xA5, 0xCD, 0x07, 0x27, - 0x1B, 0xC3, 0x37, 0x99, 0x9B, 0x57, 0xE7, 0x1F, 0x32, 0xED, 0xB5, 0xD6, - 0x39, 0x5C, 0x40, 0x03, 0x6A, 0x20, 0x51, 0xC3, 0x4E, 0x39, 0x9C, 0x5F, - 0x75, 0x2B, 0xFF, 0xCA, 0xA1, 0x43, 0x83, 0xC3, 0xA8, 0x5F, 0x0E, 0xC5, - 0xBD, 0x88, 0xE6, 0xA9, 0x89, 0x07, 0x60, 0xA1, 0x21, 0x76, 0xF7, 0xBE, - 0x65, 0xBC, 0x31, 0x59, 0x88, 0x00, 0xE5, 0xA7, 0xE3, 0x7A, 0x61, 0xE6, - 0x87, 0x5C, 0x4E, 0xD1, 0x29, 0xDE, 0xD6, 0x4B, 0xCF, 0x64, 0x93, 0x31, - 0xE9, 0x72, 0x91, 0x9F, 0xB3, 0x1E, 0x6E, 0x98, 0x1D, 0xF5, 0x8F, 0xFA, - 0xFD, 0x7C, 0xA1, 0x16, 0x39, 0x76, 0x15, 0x52, 0x99, 0x40, 0x5A, 0x2E, - 0x40, 0x71, 0x06, 0x53, 0xA9, 0x85, 0x98, 0x67, 0x5D, 0x38, 0x45, 0x50, - 0xAF, 0xA3, 0x27, 0x46, 0x12, 0xCF, 0x79, 0xC9, 0x20, 0x39, 0xE9, 0x37, - 0xBE, 0xD1, 0xC3, 0x8A, 0xFA, 0x7E, 0x6D, 0x34, 0x79, 0x64, 0x9F, 0x57, - 0x78, 0xF1, 0xD2, 0x61, 0x2E, 0xD4, 0x80, 0x3B, 0xF3, 0x13, 0x9E, 0x05, - 0x18, 0x0A, 0x5C, 0x7B, 0x2E, 0xAA, 0xB8, 0xA6, 0xCB, 0x11, 0x85, 0x48, - 0xBA, 0x78, 0x7B, 0x3A, 0x8E, 0x1A, 0x91, 0xB7, 0x97, 0x61, 0xB5, 0x8E, - 0xEB, 0xD4, 0x46, 0xE1, 0x68, 0x2E, 0x66, 0xC6, 0x8F, 0xF3, 0xCA, 0x29, - 0x5B, 0x7E, 0xAA, 0x22, 0x71, 0xCA, 0x8A, 0xBB, 0xD5, 0x0D, 0x14, 0xA5, - 0x98, 0xD7, 0x63, 0x60, 0xC2, 0x9A, 0x30, 0xD6, 0x5A, 0xE8, 0xCC, 0xFA, - 0xCC, 0x06, 0x08, 0x63, 0x1E, 0x16, 0x4C, 0x3D, 0xF5, 0x68, 0xDD, 0xDC, - 0xE2, 0xFB, 0xDE, 0x3F, 0x90, 0xD6, 0x7B, 0xC5, 0x09, 0xF7, 0x34, 0x5A, - 0x23, 0xA0, 0x45, 0x88, 0x5C, 0x86, 0xA6, 0x12, 0x70, 0x1D, 0xF4, 0x3D, - 0xAE, 0xFC, 0x44, 0xA7, 0xB2, 0xBE, 0x3F, 0xEA, 0xC0, 0xA2, 0x28, 0x6C, - 0x91, 0xA3, 0xB7, 0xE9, 0xF6, 0x8F, 0x60, 0x29, 0xDA, 0x89, 0xF5, 0x95, - 0x85, 0x2C, 0x4D, 0x09, 0xDF, 0x54, 0xC8, 0x96, 0xB5, 0xD4, 0x18, 0xA8, - 0xCC, 0xCD, 0x3F, 0xDF, 0x70, 0x2B, 0xD9, 0x28, 0xBC, 0x51, 0x44, 0x02, - 0x11, 0xE9, 0x5D, 0xDB, 0xF0, 0x25, 0x68, 0xD3, 0x2F, 0x7E, 0x17, 0x0B, - 0x76, 0x31, 0xF9, 0x8E, 0x46, 0x5B, 0x22, 0xB9, 0xB3, 0xBF, 0xDE, 0x24, - 0x06, 0x28, 0x37, 0x2A, 0xB6, 0x3D, 0xBA, 0x4D, 0xD8, 0x8F, 0xE0, 0x5D, - 0x39, 0x52, 0xA0, 0x2F, 0xE1, 0xDD, 0x8B, 0x91, 0x84, 0xC2, 0xDA, 0x38, - 0x2D, 0x61, 0xE0, 0x31, 0x03, 0x8D, 0xE5, 0xCF, 0xDC, 0x74, 0x88, 0x7C, - 0x0C, 0xF6, 0x89, 0x99, 0x73, 0xD1, 0x7C, 0x06, 0xC1, 0x4B, 0xDE, 0xC0, - 0x66, 0x53, 0xB5, 0xA8, 0x2E, 0xF7, 0x03, 0xE6, 0x88, 0x8D, 0xC3, 0x46, - 0x0C, 0xCA, 0xE3, 0x03, 0xA3, 0xEE, 0xA9, 0x4C, 0x3F, 0xAF, 0x81, 0x06, - 0x2C, 0xAF, 0x0D, 0x43, 0x2C, 0xF4, 0x9B, 0x42, 0xC0, 0x7B, 0x8B, 0xE5, - 0x89, 0xB7, 0x43, 0xA2, 0xBD, 0x4E, 0x98, 0x47, 0x74, 0x1B, 0x80, 0xC3, - 0x91, 0x47, 0x11, 0xAA, 0xC0, 0x60, 0x8D, 0x11, 0xFA, 0x5D, 0xC7, 0x1C, - 0x3A, 0x3D, 0xE3, 0xA4, 0x2A, 0xBE, 0x4A, 0xF1, 0x30, 0xD8, 0xCC, 0x66, - 0x14, 0x8D, 0xE1, 0xEF, 0xB5, 0xCE, 0xE7, 0x65, 0xDB, 0xCC, 0xDF, 0xE9, - 0x68, 0x61, 0x2C, 0x20, 0x49, 0x5B, 0xD5, 0x8D, 0x67, 0xAA, 0x32, 0xDF, - 0x12, 0x37, 0x53, 0x3E, 0x84, 0x25, 0xAB, 0x3C, 0x00, 0xD7, 0x71, 0x87, - 0x69, 0xEC, 0x73, 0x62, 0xED, 0x4D, 0x74, 0x1E, 0x1E, 0x28, 0x99, 0x4A, - 0x92, 0x48, 0x88, 0x61, 0x2E, 0x5B, 0x67, 0x0F, 0xA6, 0x43, 0xA7, 0x7F, - 0xE9, 0xC5, 0x87, 0xB5, 0x00, 0xE7, 0xE8, 0xF4, 0x9A, 0x51, 0x6A, 0xA6, - 0xFE, 0xCD, 0x49, 0xED, 0x63, 0x3C, 0x2D, 0x41, 0x31, 0xD0, 0x6D, 0x3E, - 0xCA, 0x31, 0x10, 0x0B, 0x8C, 0xB0, 0x84, 0xF9, 0x55, 0x23, 0x3E, 0x18, - 0x48, 0x7B, 0x93, 0xBF, 0x34, 0x9F, 0x2D, 0x20, 0x24, 0x5A, 0x40, 0x4C, - 0xDF, 0x97, 0xAB, 0xB9, 0xF1, 0x54, 0xCF, 0x35, 0x13, 0xE8, 0x60, 0x74, - 0x21, 0x64, 0xB1, 0xFE, 0xE2, 0x85, 0xD4, 0x4D, 0x4A, 0xA0, 0x74, 0xDD, - 0xC2, 0x03, 0xD7, 0x61, 0x4C, 0x77, 0x0F, 0x38, 0xFE, 0x43, 0xEB, 0xDE, - 0xEE, 0x32, 0x4D, 0x79, 0x50, 0xE6, 0x02, 0x2B, 0x97, 0x4C, 0xAA, 0x46, - 0x31, 0x3A, 0x8D, 0xBD, 0x7F, 0x54, 0x86, 0x0A, 0x51, 0x5D, 0x3D, 0x59, - 0xBB, 0x7B, 0x07, 0x99, 0x0F, 0xF0, 0x63, 0xAD, 0x39, 0x0B, 0x99, 0xDC, - 0x18, 0x2F, 0x01, 0x26, 0x1F, 0x29, 0xF1, 0x81, 0xD9, 0x46, 0x68, 0x13, - 0xC8, 0xE8, 0xC6, 0xE7, 0x7C, 0x66, 0x72, 0xDF, 0x31, 0xEA, 0x13, 0xDF, - 0x3E, 0x88, 0xF7, 0x35, 0xC0, 0x27, 0xF1, 0xC8, 0x04, 0x55, 0x8D, 0xC2, - 0xB3, 0x87, 0x98, 0x51, 0x54, 0x46, 0x0C, 0x63, 0xBE, 0xD0, 0xBA, 0x4D, - 0x6F, 0x1C, 0xDF, 0xD4, 0xB1, 0x76, 0xCA, 0xB2, 0x85, 0xFE, 0x65, 0xE6, - 0xC0, 0x0D, 0x56, 0xBA, 0x2D, 0x99, 0xFC, 0x9B, 0x6D, 0xC2, 0xFE, 0x28, - 0x53, 0xED, 0xE0, 0xF7, 0x20, 0x4D, 0xD7, 0x4D, 0xF6, 0x5D, 0xC6, 0x50, - 0x8D, 0xC1, 0x19, 0xC7, 0x12, 0xF5, 0x53, 0xE0, 0xE8, 0x07, 0xA5, 0x4E, - 0x18, 0xF7, 0x5F, 0xFE, 0x48, 0x00, 0x12, 0x5F, 0x23, 0x4B, 0x80, 0x0D, - 0x43, 0x11, 0xCA, 0xAC, 0xFF, 0x1F, 0xB5, 0x3C, 0x43, 0x23, 0x7D, 0x86, - 0xB3, 0x58, 0x40, 0xF4, 0x42, 0xC1, 0xFB, 0x28, 0xFD, 0x89, 0x6B, 0x9C, - 0x41, 0xE5, 0x60, 0xCA, 0x14, 0x76, 0xAB, 0x35, 0x09, 0x74, 0xF0, 0x89, - 0xBB, 0x47, 0x3C, 0xBC, 0xED, 0x90, 0x5C, 0x75, 0xFE, 0x24, 0xD9, 0x41, - 0x93, 0xE1, 0x98, 0x8D, 0xA7, 0x71, 0xDF, 0x54, 0x4C, 0x62, 0x02, 0x7C, - 0x20, 0x9E, 0xDB, 0x59, 0xBB, 0x90, 0x89, 0x2C, 0x4D, 0x8E, 0x21, 0x25, - 0x5E, 0x6C, 0xD8, 0x2F, 0x4D, 0x03, 0x92, 0xDF, 0xE0, 0xD3, 0x57, 0xAA, - 0x12, 0xA1, 0x84, 0x88, 0x65, 0x25, 0x4B, 0xD6, 0xA1, 0x5C, 0x9F, 0xC0, - 0x6E, 0xCE, 0xD8, 0x49, 0xF6, 0x54, 0x22, 0x99, 0xDD, 0x69, 0x3D, 0x97, - 0x57, 0x71, 0xB1, 0x8D, 0x94, 0xA2, 0x3A, 0x53, 0x6C, 0xEB, 0xB7, 0x90, - 0xEC, 0x4F, 0x9C, 0x35, 0xCC, 0x7B, 0xE1, 0xFD, 0x54, 0xE2, 0xE8, 0xBD, - 0x97, 0xDE, 0x5C, 0xE6, 0x2E, 0xEA, 0x1B, 0x72, 0xFF, 0x30, 0xD5, 0x6F, - 0x94, 0x60, 0x42, 0x52, 0xA7, 0x71, 0xE2, 0xEA, 0xA9, 0xDC, 0xD0, 0xC4, - 0x5A, 0x01, 0x70, 0xFA, 0x04, 0x85, 0x45, 0x30, 0xFF, 0x23, 0x0B, 0x38, - 0xFB, 0xBA, 0x63, 0xAB, 0xA4, 0x50, 0x8F, 0x6A, 0x73, 0xAC, 0xFE, 0x33, - 0x95, 0x23, 0x1C, 0xD8, 0x5F, 0xEF, 0x71, 0xCD, 0x73, 0xC2, 0x84, 0x9E, - 0x7D, 0x81, 0x3B, 0xAE, 0x4D, 0xA8, 0xB7, 0xA8, 0xE8, 0xF5, 0x1A, 0xF0, - 0x02, 0x8E, 0x1C, 0x5E, 0x3F, 0x06, 0xDD, 0x2B, 0xC8, 0x38, 0x07, 0x29, - 0xAF, 0x80, 0xDB, 0x9E, 0xCD, 0x8A, 0x9F, 0x96, 0xB4, 0x3A, 0x94, 0x53, - 0x2F, 0xDA, 0xD8, 0x54, 0x88, 0x73, 0x63, 0x46, 0x73, 0x95, 0xE2, 0xD8, - 0xC5, 0x32, 0x06, 0xE7, 0x7C, 0xB4, 0xC7, 0x04, 0x6B, 0x66, 0xE0, 0x18, - 0xCD, 0x57, 0x45, 0x5D, 0x62, 0x8A, 0x39, 0x4C, 0x5F, 0x6E, 0x2F, 0xFC, - 0x73, 0xFA, 0x9E, 0xBB, 0x23, 0x9E, 0xCB, 0x56, 0x15, 0x6D, 0xF1, 0xDD, - 0x98, 0x1E, 0x33, 0x8E, 0xCA, 0xB7, 0x63, 0x3B, 0x62, 0x69, 0x7B, 0x68, - 0x71, 0xDB, 0x80, 0xA1, 0xD3, 0x9E, 0xBB, 0xC9, 0x0E, 0x90, 0x4F, 0xFA, - 0x61, 0xFC, 0xA3, 0xE1, 0xFA, 0xC3, 0x1F, 0x69, 0xC8, 0x4D, 0xBF, 0xB0, - 0x1F, 0x0C, 0xB2, 0x37, 0x28, 0xEC, 0xF1, 0xF7, 0x42, 0x80, 0xD4, 0x9B, - 0x40, 0x7D, 0xDA, 0x8B, 0x07, 0x60, 0x18, 0x26, 0x5C, 0x42, 0x1B, 0x05, - 0x81, 0x8B, 0xD0, 0xA1, 0x72, 0x3D, 0xCD, 0x44, 0x66, 0xD4, 0xFD, 0x10, - 0xDF, 0x78, 0x4D, 0xF0, 0x61, 0x00, 0x05, 0xC1, 0xEC, 0xF0, 0xE8, 0x73, - 0x58, 0xDE, 0xCF, 0x97, 0xAF, 0x57, 0xFC, 0x07, 0x0B, 0x06, 0x0F, 0xBB, - 0xCD, 0x0F, 0x62, 0x0E, 0x38, 0x80, 0x93, 0x86, 0x95, 0x17, 0x52, 0x22, - 0xAE, 0x1A, 0x3B, 0x55, 0x42, 0xCE, 0xF3, 0xF0, 0xFD, 0x34, 0x2F, 0x7E, - 0x57, 0x71, 0xAF, 0x45, 0x59, 0x3E, 0x65, 0x4C, 0xA6, 0x04, 0x3A, 0x19, - 0x94, 0x00, 0xD4, 0xEE, 0xBB, 0x3F, 0x09, 0x86, 0x57, 0x51, 0xD6, 0x71, - 0x03, 0xA9, 0xDB, 0x56, 0xED, 0x94, 0x8D, 0x75, 0xBB, 0x5A, 0x8D, 0x35, - 0xBA, 0xEC, 0xDF, 0x13, 0x7A, 0xAF, 0x1D, 0x19, 0xBE, 0x2E, 0x60, 0xB8, - 0xED, 0x0A, 0xEA, 0x26, 0xA3, 0x48, 0xF4, 0x8A, 0x71, 0x05, 0x35, 0x5A, - 0x54, 0x74, 0xAA, 0xA9, 0x15, 0x93, 0xEF, 0x0E, 0x81, 0x23, 0xE9, 0x4E, - 0xD1, 0x4E, 0x88, 0xC2, 0x1D, 0xE6, 0x5C, 0xC4, 0x54, 0x2B, 0xAE, 0xB4, - 0xF0, 0xF0, 0x4C, 0x86, 0xBA, 0xB1, 0xDD, 0x00, 0xEC, 0xF6, 0x7E, 0x6F, - 0x3F, 0x45, 0xA7, 0xA7, 0x09, 0x58, 0x49, 0x22, 0xBC, 0xB4, 0x0C, 0x33, - 0x21, 0xD6, 0x07, 0x44, 0x3C, 0xBA, 0xFE, 0xF8, 0xF8, 0x2B, 0xAE, 0x33, - 0x5B, 0xE7, 0xF9, 0x67, 0x68, 0xE3, 0xED, 0x40, 0x28, 0xF5, 0xFD, 0x5C, - 0xE5, 0x25, 0x20, 0x04, 0x29, 0x9B, 0xC1, 0xDD, 0x51, 0xEC, 0x57, 0x56, - 0x16, 0xA7, 0x4C, 0x3D, 0x80, 0xAE, 0x62, 0xFE, 0xBB, 0x2D, 0x17, 0x51, - 0x00, 0x01, 0x79, 0x53, 0xD7, 0x70, 0xFA, 0x89, 0xEB, 0xB5, 0x37, 0x92, - 0x03, 0x9C, 0x88, 0xC0, 0xA6, 0x62, 0x14, 0xB2, 0x0D, 0x22, 0xC8, 0xDC, - 0x43, 0x17, 0xF8, 0x72, 0xFE, 0x0B, 0x88, 0xD6, 0x96, 0x7A, 0xB5, 0xF3, - 0xC4, 0x6F, 0xEF, 0xA5, 0x87, 0xB7, 0x8A, 0xAD, 0x46, 0xCD, 0xFF, 0xF2, - 0x38, 0x14, 0xD8, 0xD4, 0xD4, 0xC5, 0x9A, 0x5D, 0x38, 0x3D, 0x44, 0x53, - 0xF3, 0x43, 0x79, 0x3F, 0xCD, 0xC2, 0x93, 0xB5, 0x34, 0x4F, 0x5E, 0xFA, - 0x4D, 0x64, 0x61, 0x39, 0x0A, 0xDC, 0x8D, 0xB5, 0xD3, 0x82, 0xFD, 0x53, - 0xAD, 0x9B, 0xC6, 0x79, 0x24, 0x09, 0x91, 0x8F, 0x61, 0x25, 0x07, 0x21, - 0x97, 0x73, 0x98, 0x98, 0xB5, 0x46, 0xD1, 0xFB, 0xCE, 0x91, 0xF4, 0xC6, - 0x39, 0xC7, 0xBE, 0xBF, 0x65, 0x97, 0x59, 0x27, 0x08, 0xDA, 0x30, 0x7D, - 0x05, 0x6D, 0x04, 0xD8, 0xA2, 0xDA, 0x52, 0xFA, 0xC2, 0x6B, 0x37, 0x21, - 0xEC, 0x03, 0xEE, 0x4D, 0x89, 0xA7, 0x81, 0x54, 0x1A, 0xB0, 0x2B, 0x3E, - 0xA7, 0xE0, 0x54, 0xF6, 0x5A, 0xD6, 0x4E, 0xA2, 0x23, 0x1D, 0x1E, 0xE2, - 0x46, 0x89, 0x20, 0xB5, 0x63, 0x44, 0xF1, 0xF5, 0x50, 0x6E, 0x5E, 0xD1, - 0x6A, 0x34, 0xA8, 0xA1, 0xE8, 0xC4, 0x17, 0xE8, 0x4F, 0xC8, 0x2E, 0x64, - 0x37, 0xC6, 0xEC, 0xDC, 0x65, 0x88, 0x38, 0x4A, 0xBF, 0x61, 0xC0, 0x8D, - 0xC6, 0xEE, 0xFA, 0x77, 0x66, 0xE5, 0xD1, 0x0C, 0x92, 0xC8, 0xD8, 0xE9, - 0x9B, 0xD6, 0x96, 0xB9, 0x93, 0x86, 0xB7, 0x40, 0x02, 0x7F, 0xD5, 0x5D, - 0x63, 0x53, 0x59, 0xCF, 0xBB, 0xD1, 0xE9, 0x3D, 0xF1, 0x2C, 0xC0, 0xAE, - 0xAD, 0xFC, 0x66, 0xC2, 0x0E, 0x13, 0x76, 0x2B, 0xA6, 0xB0, 0xDB, 0x31, - 0x89, 0x7D, 0xFE, 0x79, 0xAA, 0x49, 0xB1, 0x9A, 0xC1, 0xF0, 0x39, 0x05, - 0x08, 0x1C, 0x1F, 0xFC, 0xA8, 0xDC, 0x19, 0x3F, 0xDA, 0x26, 0x09, 0x11, - 0x7D, 0xAD, 0x8D, 0x55, 0xC3, 0x53, 0x61, 0x17, 0x74, 0x21, 0x7B, 0x0E, - 0xFC, 0xBF, 0xB5, 0x5B, 0xDC, 0x2B, 0x8F, 0x05, 0x40, 0x31, 0x05, 0xB9, - 0xF5, 0x9E, 0x25, 0x3D, 0x92, 0x4E, 0xDD, 0x8B, 0x41, 0x63, 0xC1, 0x7A, - 0x48, 0xCA, 0x8A, 0xE2, 0xA4, 0xFA, 0xB0, 0x81, 0x2F, 0x2A, 0x57, 0x8D, - 0x18, 0xE3, 0x34, 0xCD, 0x3F, 0x16, 0x7D, 0x69, 0x4E, 0x27, 0x84, 0x62, - 0xDD, 0x0C, 0x37, 0x81, 0x79, 0xB0, 0x79, 0x38, 0x46, 0xEF, 0x8B, 0xA7, - 0x2A, 0xC1, 0xCA, 0x67, 0xB6, 0xF7, 0x8B, 0xB9, 0x77, 0x93, 0x8F, 0x55, - 0x76, 0x10, 0x1C, 0x27, 0x92, 0x94, 0xCA, 0x67, 0xD1, 0xD4, 0xB8, 0x96, - 0xEF, 0xD1, 0xD2, 0x32, 0xF4, 0xD7, 0x86, 0x9C, 0xBE, 0xBA, 0x8E, 0x05, - 0xDA, 0x4B, 0x3D, 0x4A, 0x7E, 0x09, 0xE8, 0x0C, 0xE7, 0x53, 0xCB, 0x16, - 0xA1, 0x9E, 0x56, 0xCD, 0xD8, 0x6C, 0x14, 0x4C, 0x19, 0x01, 0xEE, 0x5E, - 0x03, 0x34, 0xB0, 0x3E, 0x30, 0x6E, 0x97, 0x75, 0x7F, 0x2B, 0xF2, 0xBA, - 0xB1, 0x84, 0x76, 0x79, 0xC7, 0x6E, 0x46, 0x79, 0xC1, 0x3B, 0x2F, 0x18, - 0x18, 0xDF, 0xBC, 0xAE, 0xFC, 0x1D, 0xE2, 0xB6, 0x77, 0x72, 0x5D, 0x04, - 0x1E, 0x46, 0x20, 0xFF, 0x78, 0x9A, 0x64, 0xF9, 0xE8, 0x36, 0x19, 0x19, - 0xBC, 0xF6, 0x54, 0x84, 0xAA, 0x8F, 0xB9, 0x7E, 0x06, 0x40, 0xF6, 0x96, - 0x0A, 0xD9, 0x01, 0x1B, 0x6C, 0xCC, 0x0D, 0x63, 0x9C, 0x0A, 0x13, 0xF0, - 0xC6, 0x16, 0x4D, 0xC2, 0x9F, 0xAF, 0x6B, 0x07, 0x96, 0x94, 0x69, 0x5A, - 0x90, 0x43, 0x51, 0xAE, 0xD3, 0x90, 0x10, 0x66, 0xEE, 0x94, 0xA1, 0x6C, - 0x42, 0x9F, 0x67, 0x1C, 0x85, 0x86, 0xBC, 0x81, 0xF7, 0x88, 0x30, 0xB8, - 0xCA, 0x47, 0xA2, 0x08, 0xC1, 0x99, 0x9A, 0x86, 0x79, 0x51, 0x12, 0xCD, - 0xE1, 0x69, 0xAE, 0xD2, 0x2C, 0xF8, 0x81, 0x92, 0x68, 0x3B, 0xDB, 0xDA, - 0xFA, 0x98, 0x29, 0x84, 0x1C, 0xF0, 0xFD, 0xA1, 0xDA, 0x90, 0x6D, 0xB3, - 0x78, 0xD2, 0x04, 0x1D, 0xD1, 0x9B, 0xBF, 0x0C, 0x15, 0x36, 0x9D, 0xC6, - 0xB4, 0x4D, 0xB5, 0x93, 0xD9, 0xDF, 0xBC, 0x3A, 0x16, 0x2A, 0x07, 0x3C, - 0xB0, 0x43, 0x95, 0x6E, 0x1E, 0x65, 0x09, 0x8D, 0x0D, 0x34, 0x45, 0x0E, - 0xD9, 0x3E, 0x52, 0x69, 0x91, 0xC1, 0x90, 0xCA, 0x8E, 0x33, 0x02, 0xD3, - 0x54, 0xB5, 0x61, 0xE8, 0xC6, 0x53, 0x01, 0x49, 0x4D, 0x0B, 0xAC, 0x3A, - 0x95, 0x1B, 0x70, 0x43, 0x62, 0x6B, 0xD8, 0x37, 0x6C, 0xE7, 0xAE, 0x94, - 0xE5, 0xE0, 0x1D, 0xE8, 0x1B, 0xC1, 0x52, 0x2A, 0x6B, 0x50, 0x32, 0xDE, - 0xF7, 0xF8, 0xCE, 0x49, 0x3E, 0xE5, 0x74, 0x29, 0x33, 0x75, 0xF0, 0x63, - 0x8A, 0x40, 0xE3, 0x13, 0x8F, 0xEB, 0x08, 0x24, 0xB2, 0x5A, 0x7A, 0xA9, - 0xD0, 0x1F, 0xCE, 0x8A, 0x84, 0xBA, 0x8C, 0x4F, 0x10, 0x78, 0xAE, 0x64, - 0xC3, 0xC3, 0x9A, 0x88, 0x59, 0xD2, 0xCD, 0x6E, 0xC2, 0xBC, 0x71, 0xEF, - 0xDF, 0xAA, 0xD4, 0x52, 0xF9, 0x1B, 0xCC, 0x17, 0x51, 0x46, 0x7E, 0xB6, - 0x0F, 0x77, 0x25, 0x3F, 0x23, 0x3B, 0xD9, 0xA7, 0x82, 0x6A, 0xB4, 0x12, - 0x30, 0x96, 0x27, 0x47, 0x9D, 0x70, 0xD6, 0xE9, 0x86, 0xFA, 0xBD, 0x9D, - 0x96, 0xE3, 0x30, 0x0C, 0x1E, 0xBD, 0xD9, 0xEA, 0x1E, 0x50, 0x18, 0x7F, - 0x7E, 0xBE, 0xAE, 0x8E, 0x11, 0xEA, 0xDE, 0x17, 0x97, 0x9D, 0x60, 0x2B, - 0xA2, 0x44, 0x1B, 0xCE, 0xC5, 0x3E, 0x68, 0x88, 0x1B, 0xDE, 0x0E, 0xFB, - 0xD2, 0xDA, 0x30, 0x1E, 0x75, 0x70, 0x84, 0x19, 0xBD, 0x50, 0x8C, 0x9B, - 0x46, 0x7F, 0xF4, 0x27, 0x19, 0xBF, 0x5C, 0xFC, 0xE3, 0xCF, 0x18, 0x9D, - 0xD1, 0x32, 0x39, 0x28, 0x1E, 0xCD, 0x47, 0xD4, 0x38, 0xB1, 0xF8, 0x06, - 0x4B, 0xC7, 0x45, 0x0B, 0x09, 0xA4, 0xE2, 0xF1, 0xC4, 0xA9, 0x00, 0xEA, - 0x44, 0xF5, 0x75, 0xCA, 0x9F, 0xD1, 0x3F, 0xCE, 0x4D, 0xD0, 0x42, 0x79, - 0x95, 0x76, 0xD9, 0x7C, 0xEF, 0x0A, 0xC6, 0x31, 0x82, 0xCC, 0xEA, 0x59, - 0x4B, 0x43, 0xD5, 0xB6, 0x1D, 0x05, 0x5E, 0x59, 0xA7, 0x21, 0x45, 0x0D, - 0x65, 0x57, 0x38, 0x76, 0x22, 0x39, 0x8A, 0x5D, 0xC8, 0x94, 0xE0, 0x51, - 0x19, 0x68, 0x1E, 0x58, 0x5F, 0xB0, 0xBA, 0xC3, 0x55, 0xB4, 0x86, 0x18, - 0x24, 0xDE, 0x2C, 0x8E, 0xE2, 0xB6, 0x67, 0x04, 0xD0, 0x3B, 0x84, 0x22, - 0x50, 0xDB, 0x04, 0x1E, 0xE0, 0x17, 0x5F, 0xF0, 0xC7, 0xFE, 0x02, 0x17, - 0xD0, 0x0C, 0x9D, 0x49, 0x00, 0x54, 0x79, 0xA0, 0xD0, 0x9B, 0xBF, 0xC2, - 0xCE, 0x5E, 0xCC, 0xDE, 0x65, 0xF4, 0x62, 0x72, 0x7D, 0x33, 0x08, 0xF9, - 0x26, 0x22, 0x84, 0xEE, 0xC8, 0x35, 0xD7, 0x42, 0x31, 0x8F, 0x5C, 0x23, - 0xAA, 0x37, 0xC1, 0x79, 0xB0, 0xAD, 0x1E, 0x3A, 0xE3, 0x1C, 0x16, 0x49, - 0x4D, 0xEA, 0xB0, 0x0A, 0x06, 0xD3, 0x56, 0x33, 0xD6, 0xDE, 0x3E, 0xF3, - 0x64, 0xE2, 0xB6, 0xF2, 0xAC, 0xA5, 0x41, 0xDD, 0x8E, 0xDA, 0x3E, 0x56, - 0x91, 0x66, 0x1B, 0x80, 0xC3, 0x2D, 0xAB, 0x84, 0xC6, 0xBF, 0xDD, 0x10, - 0x36, 0x21, 0x65, 0xE5, 0xBE, 0x2B, 0x54, 0xCC, 0x6F, 0xE0, 0x70, 0xE5, - 0x7A, 0x73, 0xC7, 0xF9, 0x8F, 0xB2, 0xEC, 0x1E, 0xD6, 0x5E, 0x55, 0x74, - 0xC5, 0x19, 0x9D, 0x40, 0x13, 0x7C, 0xD4, 0x85, 0x10, 0xD5, 0x1D, 0x8C, - 0x8F, 0x27, 0x68, 0xBC, 0x76, 0x9E, 0x14, 0xFF, 0x5D, 0xEA, 0x8B, 0xCB, - 0x16, 0xBE, 0x4F, 0xFB, 0x02, 0xAC, 0x97, 0x0F, 0x3E, 0xBD, 0xD0, 0x1A, - 0xCB, 0x93, 0xD8, 0x98, 0xBD, 0x15, 0x26, 0x91, 0xB9, 0xD0, 0xC6, 0x8D, - 0x6B, 0x91, 0x82, 0x4A, 0x10, 0x77, 0xFA, 0x04, 0x60, 0xCC, 0xEB, 0x76, - 0x15, 0x5D, 0x96, 0xE6, 0x16, 0x19, 0x73, 0xD2, 0xB9, 0xDD, 0x25, 0xF7, - 0xFB, 0xFD, 0x7A, 0xEC, 0x1D, 0xA4, 0x5D, 0x3E, 0xAE, 0xBA, 0xEB, 0x84, - 0x1D, 0x73, 0xD4, 0xE4, 0xB5, 0xBC, 0x0D, 0x79, 0xC5, 0xF6, 0xA3, 0xE9, - 0x02, 0x64, 0x96, 0x65, 0x7A, 0x23, 0xDE, 0xFD, 0xEE, 0x22, 0x24, 0xFD, - 0x1A, 0x39, 0x37, 0xD0, 0x51, 0xEB, 0x35, 0x3D, 0x30, 0x90, 0xE4, 0x70, - 0x6A, 0x58, 0xB7, 0x9A, 0xE6, 0xB0, 0xAE, 0x7C, 0x64, 0x61, 0x42, 0x74, - 0x0C, 0xF3, 0x9D, 0xCC, 0x40, 0x92, 0x23, 0xC1, 0x25, 0x2E, 0x07, 0x0E, - 0x76, 0x0C, 0x4C, 0x3C, 0xA4, 0x2A, 0xE7, 0x1A, 0x91, 0xDE, 0x15, 0xF0, - 0xF4, 0x08, 0x95, 0x77, 0x58, 0x4B, 0xF2, 0x45, 0xBE, 0x7C, 0xE4, 0x51, - 0x57, 0x24, 0x92, 0x8D, 0x5F, 0x50, 0xA6, 0x77, 0xFA, 0x9E, 0xB4, 0xA2, - 0xF9, 0xBA, 0x31, 0x37, 0xD8, 0x2D, 0xAF, 0xCB, 0x47, 0x98, 0xB3, 0x68, - 0xA0, 0xB7, 0xCA, 0x2F, 0x79, 0xBA, 0xB7, 0x8D, 0x53, 0xB3, 0xAB, 0xDC, - 0x4E, 0x47, 0x2F, 0x35, 0x4B, 0xC7, 0xAA, 0x64, 0x49, 0x9B, 0xB2, 0x92, - 0x85, 0x43, 0x10, 0xE6, 0x84, 0x8B, 0xF5, 0xAE, 0x77, 0x28, 0x30, 0x46, - 0xF4, 0xFC, 0xEE, 0x46, 0x78, 0x71, 0xE1, 0xDA, 0xAA, 0x33, 0x23, 0x98, - 0x5E, 0xF0, 0xA5, 0x41, 0x75, 0x4B, 0xC9, 0xBD, 0x4B, 0x91, 0x38, 0xEF, - 0x5B, 0x5D, 0x29, 0x9F, 0xAE, 0x95, 0x5F, 0xDB, 0x60, 0xDD, 0xB9, 0xBE, - 0x4D, 0x7D, 0xA0, 0xA4, 0xAC, 0x9F, 0x65, 0x6A, 0xFA, 0x81, 0x01, 0xCF, - 0x8F, 0xE2, 0x2C, 0x27, 0x64, 0x3A, 0x4D, 0x23, 0xC7, 0x7B, 0x4F, 0xCF, - 0xA1, 0xDC, 0x0E, 0x21, 0x82, 0x2B, 0xD8, 0x51, 0x8B, 0x35, 0x81, 0x87, - 0x9F, 0xFD, 0x05, 0xC5, 0x17, 0xAF, 0x99, 0x3D, 0x2B, 0x28, 0x2D, 0x82, - 0x3A, 0x13, 0x68, 0x31, 0x21, 0x66, 0x53, 0xDB, 0x07, 0x45, 0xBD, 0x24, - 0x52, 0xAA, 0xC6, 0xD4, 0x70, 0x24, 0xB1, 0x67, 0x9A, 0x94, 0xEA, 0xF0, - 0x6B, 0x67, 0x99, 0xDD, 0x4F, 0x11, 0x73, 0xD2, 0x04, 0xBE, 0xB5, 0x77, - 0xFB, 0xA2, 0x31, 0xCC, 0xD4, 0x1E, 0x91, 0x02, 0xD2, 0x62, 0xF6, 0xB1, - 0x32, 0x36, 0x12, 0xF8, 0x4D, 0x1D, 0x47, 0x10, 0xA8, 0x65, 0x34, 0x71, - 0x48, 0x9E, 0x22, 0x2B, 0xA2, 0x4F, 0xF9, 0x2B, 0xEB, 0x0F, 0x31, 0x80, - 0x7E, 0xCA, 0x4A, 0xCF, 0x37, 0x08, 0x21, 0x1D, 0xBA, 0xD9, 0x32, 0x14, - 0x3E, 0xEF, 0x6C, 0xFE, 0xB7, 0xA3, 0x56, 0x07, 0x62, 0x50, 0xA5, 0x23, - 0xB4, 0x45, 0x9C, 0x51, 0xDF, 0xEB, 0x93, 0x1D, 0x4E, 0xFF, 0x29, 0xB2, - 0x50, 0xF0, 0x2A, 0xEF, 0xEE, 0x73, 0x9B, 0x51, 0x69, 0x34, 0xAE, 0xF7, - 0x4A, 0x4C, 0x06, 0x9D, 0x20, 0xC7, 0x12, 0x3F, 0x31, 0xBB, 0xBC, 0xD3, - 0x27, 0xA9, 0x89, 0xC7, 0x42, 0x1F, 0x2E, 0x60, 0xEC, 0x29, 0x0D, 0x11, - 0x88, 0xFC, 0xB4, 0x31, 0x08, 0xDD, 0x69, 0x15, 0xF1, 0x64, 0x25, 0x52, - 0x46, 0x07, 0xAE, 0x35, 0xAA, 0x46, 0x89, 0x3A, 0xEA, 0x7F, 0xDC, 0x69, - 0x9F, 0xD6, 0xF1, 0x3C, 0xDC, 0x6D, 0x00, 0x09, 0x95, 0x9D, 0x72, 0x50, - 0xE7, 0xD7, 0xAC, 0x7D, 0x3D, 0xFD, 0x1D, 0x06, 0x38, 0xAD, 0xD7, 0x7A, - 0xEC, 0x06, 0x0F, 0x2F, 0x3F, 0x4F, 0xD2, 0xC2, 0xAA, 0x30, 0x92, 0x18, - 0x93, 0xE0, 0x65, 0xD9, 0xD8, 0x01, 0x48, 0xFD, 0xC1, 0xA3, 0xE4, 0xBD, - 0x21, 0x05, 0x45, 0xA0, 0xCD, 0xDC, 0x87, 0x29, 0x6E, 0xE1, 0x77, 0x98, - 0x4D, 0x09, 0x79, 0xB2, 0x62, 0x51, 0x73, 0x7B, 0x61, 0x14, 0x1D, 0x41, - 0xA0, 0x92, 0xB9, 0x6E, 0x32, 0xA7, 0xD1, 0x68, 0xFB, 0x6D, 0x4C, 0x88, - 0x3D, 0x7A, 0x54, 0x85, 0x49, 0x7C, 0x24, 0xD9, 0xFF, 0xC7, 0x07, 0x9C, - 0xEF, 0xF6, 0x16, 0x6A, 0xB6, 0x1B, 0xB4, 0x23, 0x71, 0x40, 0x3B, 0x0F, - 0xE6, 0xC6, 0x35, 0x6E, 0x3B, 0xC7, 0x8F, 0xCE, 0x08, 0xFF, 0x6A, 0x94, - 0xCB, 0xB9, 0xA5, 0x21, 0x30, 0xAC, 0xE1, 0xE6, 0xB1, 0xDB, 0x31, 0x84, - 0xB3, 0x5A, 0x41, 0x9F, 0x10, 0x21, 0x68, 0xCF, 0xED, 0x6B, 0xB4, 0xCF, - 0xAB, 0x6E, 0xA2, 0x05, 0xF1, 0xF1, 0xEC, 0xE8, 0x29, 0xF4, 0xD9, 0x95, - 0x61, 0xC2, 0x2A, 0xCC, 0xFE, 0x9B, 0x8D, 0x5B, 0x94, 0x60, 0x96, 0x51, - 0x02, 0x3D, 0xB4, 0x0F, 0xC6, 0x51, 0x05, 0x7F, 0xFB, 0x4E, 0x4D, 0x21, - 0x38, 0xBF, 0xDD, 0x2E, 0x2A, 0xB0, 0x85, 0xC8, 0x16, 0xB9, 0x78, 0xAB, - 0xE1, 0xA0, 0x54, 0x0E, 0x19, 0x86, 0xCD, 0x39, 0xBF, 0x73, 0x38, 0xFF, - 0xD3, 0x2F, 0xF9, 0xEB, 0x21, 0xB7, 0x9F, 0x96, 0x8C, 0x15, 0x44, 0x06, - 0xEE, 0x04, 0x04, 0xAD, 0x3C, 0xCA, 0x2D, 0xB6, 0xAF, 0x8F, 0x6B, 0x11, - 0xE4, 0x12, 0x46, 0x2A, 0x4A, 0x9B, 0x2F, 0x8F, 0x66, 0xEB, 0x2B, 0xA1, - 0xF7, 0x65, 0x92, 0x14, 0x78, 0xF9, 0xA4, 0x5A, 0x8A, 0x33, 0x92, 0x87, - 0x75, 0x9F, 0x0A, 0x27, 0x53, 0xC8, 0xB1, 0xD5, 0xAB, 0xA2, 0x56, 0xB7, - 0x8D, 0xA4, 0xA7, 0x2F, 0x95, 0xA8, 0xC5, 0xC6, 0xB0, 0xBE, 0xAF, 0x68, - 0x99, 0x2D, 0x86, 0x01, 0x31, 0x6A, 0x7A, 0xE3, 0xDD, 0x87, 0x03, 0x31, - 0x57, 0x33, 0x31, 0x49, 0x12, 0x90, 0xEB, 0x1A, 0x3C, 0x67, 0x2C, 0x60, - 0xB8, 0xC4, 0x2C, 0x6A, 0xD2, 0x1C, 0xF5, 0x0E, 0x2E, 0x71, 0x1A, 0x14, - 0x25, 0xE0, 0xAA, 0xE2, 0xD7, 0xB7, 0x9D, 0xCE, 0xDA, 0x12, 0x0C, 0x9D, - 0x85, 0x37, 0x0E, 0xF3, 0x8B, 0x9D, 0xBF, 0xE7, 0xFB, 0xAC, 0x5D, 0x3D, - 0x00, 0x72, 0x4C, 0xB9, 0xEE, 0x7B, 0xF7, 0xA6, 0xC9, 0xD4, 0xE6, 0x27, - 0x24, 0x31, 0xD0, 0x56, 0x58, 0x4B, 0x00, 0x02, 0xA0, 0x2A, 0xDA, 0xBB, - 0x23, 0x43, 0x87, 0x8F, 0xC0, 0xB4, 0x87, 0x6F, 0xD4, 0xF8, 0x0F, 0x38, - 0x6E, 0x82, 0xFC, 0xE2, 0x1E, 0xD5, 0x96, 0x05, 0xD1, 0x1A, 0x95, 0x1B, - 0xE6, 0xC1, 0xF0, 0xA1, 0x8A, 0x0F, 0xF0, 0xD4, 0x2D, 0x03, 0x5D, 0x2F, - 0xCD, 0xF4, 0x0A, 0xFF, 0xBB, 0xD2, 0x79, 0x06, 0xAA, 0x65, 0xF1, 0x4D, - 0x8E, 0x6E, 0x24, 0x08, 0x6D, 0xA5, 0x66, 0x84, 0x28, 0x25, 0xE2, 0xC1, - 0xA8, 0xFB, 0x6F, 0x2E, 0x99, 0xC1, 0xA8, 0x99, 0x16, 0xF8, 0xCD, 0x5F, - 0xF5, 0x41, 0xFB, 0xD1, 0xC7, 0xA6, 0xF4, 0x2F, 0x4A, 0xAE, 0x36, 0xF8, - 0x9D, 0x23, 0x62, 0x5C, 0x3C, 0x62, 0xD4, 0xF5, 0x52, 0x46, 0xDE, 0x28, - 0xB5, 0x7D, 0xFD, 0x25, 0xB4, 0x51, 0x70, 0xB3, 0x5D, 0x56, 0x92, 0x51, - 0x8C, 0x4B, 0x69, 0xE8, 0x34, 0x66, 0x41, 0x4E, 0x22, 0x72, 0x82, 0x1A, - 0xEB, 0xDE, 0x59, 0x5B, 0x3C, 0x0E, 0x66, 0x7F, 0xB6, 0xC8, 0x07, 0x2F, - 0x82, 0x89, 0xDA, 0xC4, 0x8E, 0xC4, 0x70, 0xA1, 0xEA, 0xD3, 0xA9, 0x28, - 0xFE, 0x9B, 0xCA, 0xE8, 0x89, 0xD1, 0xE0, 0xC6, 0x36, 0x91, 0x09, 0x98, - 0x4F, 0x28, 0x9B, 0x10, 0x4B, 0x89, 0xDB, 0xC4, 0xCA, 0x60, 0x57, 0xA0, - 0x0F, 0x04, 0x3F, 0x1B, 0x75, 0xAE, 0x5A, 0x9F, 0x0A, 0xFB, 0xCC, 0x6F, - 0x46, 0xE8, 0xC1, 0xB0, 0x98, 0x1D, 0x6B, 0xC3, 0x3C, 0xEA, 0x83, 0x5E, - 0xBF, 0x21, 0x5E, 0x28, 0x3C, 0x8E, 0xF4, 0x6B, 0xAA, 0x3F, 0x0E, 0xBC, - 0xB5, 0xAD, 0x65, 0xEF, 0xA3, 0xB1, 0x73, 0x3C, 0x55, 0x52, 0xB6, 0xBC, - 0x5E, 0xA4, 0xC6, 0x27, 0x88, 0xEB, 0x34, 0xB1, 0x61, 0x5F, 0x03, 0x20, - 0x66, 0x95, 0x9B, 0xC6, 0x94, 0xC1, 0x65, 0xAA, 0x8E, 0x4E, 0x41, 0xB4, - 0xB2, 0x45, 0x04, 0x42, 0xA0, 0xC3, 0xB1, 0xD2, 0x46, 0x0A, 0xFE, 0x4A, - 0xDD, 0xC3, 0xC0, 0x01, 0x6A, 0x3F, 0xAF, 0xF5, 0xDE, 0x92, 0xC3, 0xF0, - 0xEC, 0xDF, 0x69, 0xEC, 0x25, 0x1F, 0x43, 0x4E, 0x87, 0x80, 0xF9, 0xD7, - 0x54, 0x92, 0x8E, 0x02, 0xCC, 0xF0, 0x46, 0x79, 0x9C, 0x2A, 0x5F, 0xCF, - 0x24, 0x3F, 0x7F, 0xD3, 0x2F, 0xBE, 0x71, 0x51, 0xCD, 0xAC, 0x73, 0xD5, - 0x60, 0x44, 0x7E, 0x96, 0xE6, 0x5F, 0xFD, 0x08, 0x46, 0x17, 0x10, 0x3A, - 0x71, 0xF6, 0x8E, 0xAF, 0x6E, 0xFC, 0x4E, 0x05, 0xD1, 0x43, 0xC0, 0xF1, - 0x77, 0xEE, 0x02, 0x94, 0x8D, 0x84, 0x32, 0xB5, 0x7E, 0x40, 0x3F, 0xF9, - 0x74, 0xF1, 0x5B, 0xCC, 0xDA, 0xB5, 0x48, 0xEC, 0x5A, 0xEC, 0xC0, 0x1D, - 0x50, 0x9D, 0x86, 0x6F, 0xBF, 0x42, 0xAE, 0xEE, 0x93, 0x46, 0xEF, 0xEC, - 0x0F, 0xFE, 0x13, 0x37, 0x7D, 0xD3, 0xF4, 0xAF, 0x7F, 0x6F, 0x62, 0x61, - 0xA3, 0x1A, 0xD1, 0xEF, 0x8D, 0xCF, 0x9E, 0xE3, 0x46, 0x8A, 0x9F, 0x35, - 0x3A, 0xB4, 0xBC, 0xA7, 0x9F, 0x3F, 0x90, 0x16, 0x66, 0xBB, 0x6B, 0x5B, - 0x47, 0xF9, 0xD5, 0x80, 0x53, 0x26, 0x69, 0x0F, 0x0E, 0x5D, 0xAD, 0x3E, - 0x42, 0x75, 0xD1, 0x65, 0x62, 0xDD, 0xBB, 0xBB, 0x0F, 0x2B, 0x11, 0xCC, - 0xEE, 0x1D, 0x47, 0x2E, 0xD7, 0x83, 0x71, 0xCE, 0x24, 0x1C, 0xA4, 0xC3, - 0xA1, 0x0C, 0x9F, 0x99, 0x51, 0x59, 0x39, 0x8F, 0x24, 0xDA, 0x16, 0xA1, - 0x1A, 0xE3, 0x69, 0x07, 0x27, 0x5B, 0xAA, 0xA7, 0x24, 0xA2, 0xEB, 0x2B, - 0x49, 0x29, 0x21, 0xA0, 0xA3, 0xC9, 0x0D, 0xC7, 0xB5, 0x0D, 0xDF, 0xA3, - 0xED, 0xD8, 0x37, 0x97, 0x47, 0x56, 0xAB, 0x6E, 0x8C, 0x64, 0xE3, 0xDC, - 0x2F, 0x1C, 0x0F, 0x44, 0x71, 0x23, 0xF7, 0x59, 0x26, 0xAB, 0xDA, 0x8C, - 0x7D, 0x5A, 0x80, 0x15, 0x2D, 0xA0, 0x92, 0x5C, 0x6A, 0x8F, 0x07, 0x88, - 0x14, 0xED, 0xAE, 0x56, 0x35, 0xF4, 0x3E, 0xBF, 0x69, 0x84, 0xE0, 0xAE, - 0x60, 0xB9, 0xF6, 0x8A, 0x2B, 0x53, 0x22, 0xCE, 0x1C, 0x95, 0x85, 0xBC, - 0xEC, 0xE4, 0xE3, 0xE2, 0x96, 0xC0, 0xCF, 0xA5, 0x5D, 0x25, 0x0C, 0x85, - 0x51, 0x2A, 0xC5, 0x38, 0x25, 0x97, 0xDC, 0x7C, 0x14, 0x39, 0x1F, 0xB4, - 0x3C, 0xBF, 0x65, 0x0F, 0x41, 0xD1, 0xE5, 0x81, 0xCA, 0xF3, 0xB7, 0x1C, - 0xC5, 0xC4, 0xC0, 0xB8, 0xBB, 0xCE, 0x39, 0x7C, 0x2E, 0x1F, 0x27, 0xAD, - 0x16, 0x8A, 0x69, 0x69, 0x1D, 0x3B, 0x89, 0x4E, 0xC3, 0x28, 0x1C, 0x1B, - 0x47, 0x98, 0xA3, 0xDB, 0xC9, 0x69, 0x6E, 0x11, 0xD6, 0xA0, 0x08, 0x74, - 0x8B, 0x37, 0x4B, 0x66, 0x7A, 0x12, 0x70, 0x35, 0x84, 0x38, 0x27, 0x8F, - 0xAC, 0xC9, 0xFF, 0xFC, 0xC2, 0x1A, 0x0F, 0x58, 0x8E, 0x7E, 0xF1, 0xCD, - 0x73, 0x74, 0x09, 0x57, 0x24, 0xBC, 0xA3, 0x0B, 0xBD, 0x6D, 0x8E, 0x63, - 0x09, 0x15, 0xBD, 0x7F, 0x09, 0xDA, 0xE1, 0x06, 0x34, 0x0B, 0x74, 0xB8, - 0xB8, 0x9D, 0x8A, 0xFA, 0x4E, 0x1E, 0xF4, 0x6A, 0x8C, 0x4C, 0xD6, 0x34, - 0x3F, 0x82, 0xD2, 0x84, 0xD5, 0xDA, 0x2D, 0xDB, 0xCD, 0x9F, 0x2A, 0x1D, - 0xE8, 0x24, 0x43, 0xEC, 0x94, 0xCF, 0x51, 0xBF, 0x48, 0x50, 0xC5, 0x71, - 0x73, 0x78, 0x35, 0xD9, 0x98, 0x1E, 0xCF, 0x96, 0x02, 0x74, 0x29, 0xE9, - 0x30, 0x02, 0x5B, 0xEC, 0x66, 0xD8, 0xD0, 0xB6, 0x4D, 0x33, 0x3F, 0x2A, - 0xF4, 0x2A, 0xC6, 0xAD, 0x82, 0x9A, 0x1D, 0x62, 0xE2, 0xDA, 0x05, 0xE7, - 0x8C, 0x69, 0xCB, 0xB4, 0xB8, 0xD9, 0xEB, 0x7D, 0x49, 0xD6, 0x5E, 0xDD, - 0xA5, 0x85, 0xB5, 0x3F, 0x08, 0xEB, 0x33, 0xA6, 0x2D, 0x68, 0x17, 0xF2, - 0x20, 0x3D, 0xEC, 0xAC, 0x71, 0x8C, 0x51, 0x7A, 0x20, 0x05, 0x63, 0xF3, - 0x7A, 0x98, 0x4A, 0x26, 0x2E, 0xEC, 0xD1, 0x9B, 0x50, 0x7D, 0xEB, 0x37, - 0xD3, 0xD9, 0x21, 0x6B, 0x97, 0x06, 0x9F, 0x10, 0x0A, 0x8B, 0x56, 0x6D, - 0x7B, 0x78, 0x9D, 0xF6, 0x89, 0x8B, 0xDF, 0x7B, 0x21, 0xF0, 0x55, 0x85, - 0xF8, 0x23, 0xAB, 0xEA, 0x5A, 0xF8, 0x0C, 0xB8, 0xB9, 0x13, 0xDA, 0xCC, - 0x0A, 0x35, 0x21, 0xAF, 0x78, 0x87, 0x33, 0x78, 0x89, 0x39, 0x1E, 0x15, - 0xD7, 0x14, 0x49, 0xC9, 0x14, 0x60, 0x39, 0xAC, 0x4C, 0x76, 0x64, 0xD7, - 0xCF, 0x8A, 0x4A, 0xDA, 0xF7, 0x20, 0xCD, 0x46, 0xB4, 0x3B, 0x20, 0x60, - 0x43, 0x6B, 0x52, 0xD9, 0x20, 0x10, 0x8A, 0xF9, 0xF7, 0x34, 0xDA, 0x5E, - 0xCF, 0xD1, 0xCC, 0x60, 0x31, 0xF8, 0xE5, 0x5C, 0xF5, 0xC8, 0xCB, 0x3C, - 0xF6, 0x63, 0xD4, 0x26, 0xA1, 0x41, 0x71, 0xCD, 0x73, 0x97, 0xBF, 0x27, - 0x2A, 0x2C, 0x0C, 0x75, 0x6D, 0x4A, 0xA0, 0x8A, 0x0D, 0x02, 0x53, 0xBA, - 0x72, 0xA3, 0xE0, 0xE6, 0x1A, 0x85, 0xC5, 0xD7, 0xF1, 0x49, 0x4F, 0x24, - 0x16, 0x35, 0x3F, 0x0C, 0x2B, 0xCE, 0x9C, 0x35, 0x0F, 0x23, 0xA3, 0x7C, - 0xCE, 0xC8, 0xED, 0x34, 0x2C, 0xCC, 0x33, 0x0A, 0x73, 0xA3, 0x58, 0x53, - 0x78, 0x55, 0xD1, 0xC2, 0x08, 0xCA, 0x03, 0xBE, 0x6E, 0x1D, 0x9C, 0xD2, - 0x67, 0x71, 0x4D, 0x77, 0x9A, 0x63, 0xA1, 0x7C, 0x31, 0x11, 0x3D, 0xDE, - 0xE0, 0xDC, 0x0D, 0x06, 0xDD, 0xAF, 0x16, 0x65, 0xF6, 0xF0, 0x27, 0x28, - 0x9A, 0xBA, 0xED, 0xE2, 0xC2, 0x27, 0x2B, 0x74, 0x2D, 0xF8, 0x6E, 0xE1, - 0x0C, 0xB2, 0xC7, 0xBF, 0xD3, 0x0A, 0x94, 0x0E, 0x3A, 0xE1, 0x04, 0x34, - 0x97, 0xA7, 0x7E, 0x01, 0xA0, 0x31, 0x89, 0x86, 0x05, 0x28, 0x84, 0x0C, - 0x3E, 0xB5, 0x22, 0x26, 0x6E, 0x52, 0xFD, 0x3B, 0x39, 0x5B, 0xB7, 0xEC, - 0x49, 0x50, 0x21, 0xA6, 0x58, 0x20, 0x50, 0x11, 0x5D, 0x9E, 0xFF, 0xF5, - 0x93, 0x74, 0x39, 0x24, 0xBD, 0xBA, 0x5A, 0xB5, 0x4E, 0x35, 0xEB, 0x13, - 0x31, 0x04, 0x3D, 0xAD, 0xBE, 0xBB, 0x43, 0x24, 0xC1, 0x8F, 0x2A, 0x43, - 0x6D, 0x85, 0x6C, 0x8E, 0x78, 0x6A, 0x7F, 0xE3, 0x5C, 0xE4, 0xC1, 0x4A, - 0x68, 0x46, 0xC4, 0xA4, 0xEB, 0x8A, 0xB0, 0xFB, 0x02, 0xE9, 0x76, 0x49, - 0x0C, 0x90, 0x3F, 0x4F, 0x79, 0x39, 0xA9, 0x93, 0x61, 0x66, 0x4F, 0x60, - 0x8A, 0x5C, 0x91, 0xCC, 0x2D, 0x2D, 0x43, 0xCD, 0x38, 0xE7, 0x6B, 0xE1, - 0xA5, 0xA9, 0x53, 0xC9, 0x0E, 0xBB, 0x36, 0x10, 0x2C, 0xDF, 0x2E, 0xB5, - 0xD1, 0x81, 0xCC, 0x4F, 0xAF, 0x77, 0x21, 0xFC, 0xA8, 0xFB, 0x78, 0x3D, - 0xF0, 0x16, 0x76, 0xCF, 0x97, 0x67, 0xE8, 0x2B, 0x29, 0x00, 0x93, 0xAF, - 0x60, 0x66, 0x38, 0x0C, 0x4A, 0xED, 0xAA, 0xA7, 0x89, 0x3F, 0xE8, 0x40, - 0x9D, 0x02, 0xA7, 0xB7, 0x95, 0x51, 0xBE, 0x57, 0x45, 0xC5, 0x7E, 0x1E, - 0xAD, 0x09, 0x6C, 0xD9, 0x81, 0x56, 0xA2, 0x92, 0x72, 0x17, 0xD2, 0x86, - 0x62, 0x7A, 0x62, 0x0A, 0xAE, 0xEC, 0x0D, 0x27, 0x35, 0x40, 0xFA, 0xAE, - 0x78, 0xEA, 0x70, 0xD4, 0xF0, 0xDA, 0xCD, 0x87, 0xF5, 0x9D, 0x5F, 0x83, - 0xCB, 0x3B, 0x07, 0x52, 0xD0, 0xA2, 0xB4, 0x22, 0x8E, 0xDF, 0xAA, 0xF6, - 0xAB, 0x31, 0x91, 0x90, 0xBE, 0x21, 0xF9, 0x7D, 0x87, 0x23, 0x1C, 0x59, - 0x00, 0x05, 0xF5, 0x4F, 0x9B, 0xBB, 0x6D, 0x50, 0x7E, 0x56, 0x6B, 0x3E, - 0xAE, 0x9B, 0x6F, 0xAB, 0x88, 0xEC, 0xAE, 0x0F, 0x6C, 0x89, 0xAB, 0x26, - 0x6B, 0x5A, 0xD9, 0x6D, 0xF1, 0x23, 0x9E, 0xB3, 0xEB, 0x97, 0x08, 0xF0, - 0x0E, 0x5C, 0x80, 0x00, 0xCD, 0x7A, 0x4F, 0x64, 0xF9, 0x1A, 0x80, 0x0D, - 0xFA, 0x3D, 0x42, 0x71, 0x39, 0x83, 0x15, 0x8A, 0xFF, 0x91, 0x9F, 0x80, - 0x0F, 0x67, 0xAA, 0xBB, 0xB0, 0x67, 0x45, 0x30, 0xDD, 0x86, 0x8C, 0x1D, - 0xF7, 0x7A, 0xB3, 0x28, 0xA1, 0xD6, 0x56, 0x63, 0xD2, 0x75, 0x10, 0xF0, - 0x77, 0x53, 0x1A, 0x95, 0x9A, 0x49, 0xD7, 0x3E, 0xAA, 0x24, 0x92, 0x02, - 0x92, 0xF5, 0x7D, 0x2F, 0x8F, 0x24, 0x36, 0x11, 0x59, 0xCF, 0x62, 0xA6, - 0x69, 0xCD, 0xB5, 0x66, 0x75, 0x20, 0x16, 0x41, 0xC1, 0x4F, 0xE5, 0x81, - 0xC4, 0xC2, 0x91, 0x69, 0xC0, 0xF1, 0xA3, 0x01, 0x6B, 0xA9, 0x0F, 0x55, - 0x2D, 0x29, 0xD7, 0x1D, 0xDD, 0x7D, 0x9E, 0xCF, 0xF5, 0x05, 0xFA, 0x7C, - 0x1F, 0x8B, 0xC9, 0xCA, 0x34, 0x66, 0xEF, 0x3C, 0x24, 0x9A, 0xAE, 0xCF, - 0xCB, 0x12, 0xB1, 0xE5, 0x59, 0xD9, 0x30, 0x90, 0xB3, 0xA7, 0xE9, 0x38, - 0x9A, 0x73, 0x1C, 0xDE, 0xBE, 0x62, 0x77, 0x5E, 0x75, 0xBF, 0x37, 0x39, - 0x27, 0xBA, 0x91, 0xEB, 0xED, 0xAB, 0xB5, 0xCE, 0x8E, 0x6E, 0xBD, 0xD4, - 0x64, 0x64, 0x47, 0x16, 0x14, 0x98, 0xC6, 0xF0, 0xB6, 0x4A, 0xE8, 0xB7, - 0x67, 0x86, 0xC5, 0xCB, 0xCE, 0xB1, 0x7B, 0xC0, 0xDE, 0x87, 0xF7, 0x8E, - 0xE7, 0x21, 0x3A, 0x86, 0xB5, 0x9C, 0x38, 0xBA, 0x60, 0x98, 0xFA, 0x93, - 0xBA, 0x63, 0xE3, 0x0F, 0x74, 0xB1, 0x6B, 0x39, 0x68, 0xB6, 0x53, 0xB1, - 0x8A, 0xBB, 0x76, 0x65, 0x74, 0x1D, 0x99, 0xBA, 0x01, 0x8A, 0xE3, 0x7C, - 0xC0, 0x73, 0x2A, 0x98, 0x13, 0x0E, 0x22, 0xB4, 0xF6, 0xC4, 0xF9, 0x89, - 0xAF, 0x9B, 0x52, 0x6F, 0x28, 0xEC, 0x8E, 0x13, 0xC4, 0xD4, 0x97, 0x74, - 0x2E, 0xDB, 0x6F, 0xA8, 0x41, 0xE3, 0xDC, 0x6A, 0xE4, 0xB8, 0x18, 0x2C, - 0x19, 0x59, 0xE1, 0x45, 0xC5, 0xED, 0x8F, 0xCA, 0x24, 0x2A, 0x3F, 0xAD, - 0xDA, 0x98, 0xC1, 0x70, 0x7F, 0xF3, 0x87, 0xE1, 0xB8, 0xBC, 0xF5, 0xFB, - 0x29, 0x7B, 0x12, 0x26, 0x22, 0x1A, 0x5B, 0x59, 0x21, 0x21, 0x79, 0x30, - 0xA7, 0x69, 0x13, 0xD9, 0x9E, 0x62, 0x02, 0x77, 0x84, 0xB9, 0x87, 0xD3, - 0xCB, 0x0E, 0xB0, 0x73, 0x58, 0x21, 0xFE, 0x18, 0x6A, 0x92, 0x94, 0x30, - 0xEC, 0x06, 0x11, 0xB9, 0xC8, 0x99, 0x6B, 0xE9, 0xFE, 0x44, 0x9D, 0x04, - 0xBA, 0xC9, 0x92, 0x7E, 0x46, 0x7B, 0x81, 0x4A, 0x70, 0x79, 0x56, 0x7F, - 0x39, 0x96, 0x58, 0xC6, 0x35, 0x8A, 0x8F, 0x98, 0x47, 0xF8, 0xD9, 0x16, - 0x81, 0xC1, 0x79, 0x43, 0x08, 0xF9, 0x4A, 0xC7, 0xBA, 0x31, 0xCA, 0xC3, - 0x0D, 0xEA, 0x71, 0x40, 0x42, 0x2E, 0x29, 0xF2, 0xB1, 0x96, 0xFB, 0xC0, - 0x98, 0x3B, 0x2F, 0xB2, 0x8D, 0x82, 0xBA, 0xB0, 0x8D, 0x3D, 0x78, 0x10, - 0xF2, 0x33, 0x55, 0xD2, 0x02, 0x98, 0x3A, 0xF3, 0x43, 0x8F, 0x8D, 0x27, - 0xD0, 0x1B, 0x50, 0x04, 0xB2, 0xA8, 0x42, 0x36, 0xE7, 0xD9, 0x2B, 0x4A, - 0x33, 0x9E, 0xBF, 0x46, 0x12, 0x17, 0x82, 0x89, 0xEA, 0xAA, 0x35, 0x7F, - 0x3C, 0x6B, 0xEC, 0xC2, 0x84, 0x33, 0xAB, 0x10, 0x25, 0x59, 0x0F, 0x2B, - 0x90, 0x3F, 0xF4, 0x2A, 0x97, 0x6F, 0xD5, 0x6C, 0xE3, 0x08, 0x07, 0xA9, - 0xFC, 0x84, 0x7B, 0x51, 0x2F, 0x23, 0x2A, 0x6E, 0xF1, 0x0F, 0xEF, 0x48, - 0x9F, 0x66, 0x8F, 0x5C, 0x9A, 0x21, 0x84, 0xD7, 0xB1, 0x14, 0x82, 0xA2, - 0xE4, 0xE6, 0x72, 0x56, 0x46, 0xCB, 0x26, 0x2F, 0xE2, 0x6D, 0x5B, 0x07, - 0xA6, 0xF3, 0x94, 0x24, 0x24, 0x58, 0x45, 0xF4, 0xB4, 0x54, 0x90, 0xFF, - 0x59, 0x17, 0x04, 0xC8, 0x9A, 0x4D, 0x82, 0xEF, 0x24, 0xBB, 0x2C, 0x11, - 0x9F, 0x2D, 0xD4, 0xE5, 0x0A, 0x2A, 0xF0, 0x94, 0x64, 0x48, 0xFF, 0xB4, - 0x7D, 0x01, 0x42, 0xBE, 0x8F, 0xB2, 0x2F, 0x2A, 0x0A, 0x17, 0xB0, 0xA2, - 0x0B, 0x5E, 0x32, 0x05, 0x2A, 0x0A, 0xE5, 0xF6, 0x3D, 0xA8, 0x12, 0xBD, - 0x5C, 0x4F, 0x59, 0x76, 0xAB, 0x9C, 0x89, 0x98, 0xFD, 0xCE, 0x0B, 0xA1, - 0x62, 0x4D, 0x3A, 0x16, 0xA5, 0x80, 0x62, 0x8B, 0x52, 0xD4, 0x2A, 0x8E, - 0xC0, 0x17, 0xE3, 0x42, 0xA6, 0x70, 0x40, 0x6B, 0xE8, 0xE7, 0xD7, 0xA7, - 0x43, 0x12, 0xF6, 0xB3, 0x7A, 0xE2, 0xFE, 0x42, 0xB0, 0xAF, 0x33, 0x56, - 0x10, 0xB1, 0x69, 0x3D, 0x7B, 0x7F, 0xDE, 0xC6, 0xE1, 0x0F, 0xCC, 0x5B, - 0xF9, 0x53, 0x08, 0x80, 0x05, 0x33, 0xD8, 0x09, 0x7B, 0x87, 0x71, 0xE0, - 0xF5, 0xCA, 0xB5, 0xFB, 0xB4, 0x3C, 0x4A, 0x6B, 0x10, 0xBA, 0xA6, 0xE6, - 0x69, 0xD6, 0x8E, 0x8C, 0x5B, 0x33, 0x07, 0xE8, 0x22, 0xB9, 0xF8, 0x3C, - 0xEF, 0xE0, 0xDA, 0x06, 0x54, 0xCB, 0x14, 0xDB, 0x2B, 0x50, 0x92, 0xB2, - 0x5C, 0xB8, 0xCB, 0xB6, 0x40, 0xB1, 0x91, 0xD4, 0xD7, 0xF9, 0xC2, 0x08, - 0x77, 0xC9, 0xB7, 0x00, 0x9B, 0x32, 0x20, 0xC4, 0x08, 0x39, 0xEE, 0xD6, - 0x32, 0xB8, 0x63, 0x0F, 0x1A, 0x73, 0x33, 0x73, 0xE1, 0xFB, 0x0E, 0x94, - 0x75, 0xCE, 0x37, 0xA4, 0xAF, 0xBC, 0x39, 0xAB, 0x25, 0x35, 0xA7, 0xDF, - 0xC2, 0x9B, 0xF5, 0xD7, 0x52, 0x44, 0xDE, 0x21, 0x50, 0x5F, 0x3E, 0xA6, - 0x37, 0x9E, 0x91, 0x56, 0x12, 0x82, 0xCB, 0xA0, 0xAE, 0x6F, 0xA8, 0x81, - 0x0C, 0x3B, 0xC0, 0x4C, 0xEE, 0x47, 0x57, 0x79, 0xC1, 0x49, 0x4B, 0x7A, - 0x92, 0xC7, 0x95, 0xA4, 0xD6, 0x3E, 0x25, 0xE5, 0xCF, 0x55, 0x65, 0x10, - 0x52, 0x58, 0xEA, 0x4F, 0xFC, 0x34, 0xB1, 0x0E, 0x0E, 0x2E, 0x45, 0x4C, - 0xD7, 0xB7, 0x92, 0xC4, 0x70, 0xE5, 0x33, 0xA1, 0x22, 0x49, 0x04, 0xF8, - 0xAF, 0x5E, 0x6D, 0x4B, 0xDE, 0x76, 0xCD, 0x50, 0x40, 0xFB, 0xFD, 0x7B, - 0xC3, 0xF2, 0xEA, 0x4B, 0xEA, 0xA7, 0x66, 0x44, 0x2B, 0x4D, 0x0C, 0xA3, - 0xC4, 0xAA, 0x9C, 0x50, 0x36, 0x5A, 0x4D, 0xB7, 0x04, 0x81, 0x5C, 0xBD, - 0x40, 0x62, 0x12, 0x6A, 0x4C, 0x13, 0x35, 0x4E, 0x47, 0x16, 0xD9, 0x43, - 0xE5, 0x8A, 0x44, 0x6D, 0x49, 0x71, 0x30, 0xA9, 0x4C, 0xDE, 0x31, 0x1E, - 0x2A, 0xE1, 0xDB, 0xBF, 0x1F, 0xB6, 0x7C, 0x36, 0xAA, 0x0F, 0x02, 0xBA, - 0x85, 0x87, 0xFC, 0x47, 0x90, 0x34, 0xD5, 0x13, 0x9E, 0x09, 0x2B, 0xC3, - 0xEC, 0x83, 0x80, 0x9D, 0xFE, 0x3D, 0x18, 0xBA, 0xFB, 0x51, 0x8D, 0x79, - 0xF6, 0xFA, 0x38, 0x48, 0x60, 0x14, 0xCC, 0x60, 0x81, 0x57, 0xEE, 0xA5, - 0x04, 0x1B, 0x4A, 0x0E, 0x43, 0x15, 0x00, 0x57, 0xE2, 0x0A, 0xBC, 0xF4, - 0x14, 0x3B, 0x96, 0x95, 0xF3, 0xFC, 0x4E, 0x13, 0x6F, 0x0D, 0x63, 0x85, - 0xD0, 0xB0, 0x3B, 0xCA, 0x0A, 0x80, 0x3D, 0x11, 0xD1, 0x7A, 0xCF, 0xB2, - 0x0B, 0xE1, 0x67, 0xDD, 0x45, 0x9B, 0xEC, 0x30, 0xD5, 0xE3, 0x06, 0xB3, - 0x94, 0xBB, 0xCB, 0x32, 0xBA, 0x17, 0xDF, 0x5F, 0x1F, 0x38, 0xAF, 0xC6, - 0xA9, 0xB5, 0x7F, 0xF6, 0x85, 0xC2, 0x99, 0x33, 0x0A, 0x3F, 0x7D, 0xB2, - 0x72, 0x7D, 0xF7, 0xF4, 0x1B, 0x11, 0xA1, 0x7D, 0xF7, 0x3D, 0x7F, 0x0F, - 0xFA, 0xB1, 0xEE, 0x6C, 0xAD, 0xA9, 0xE7, 0x43, 0x5D, 0xFE, 0xC9, 0x32, - 0xF6, 0xF1, 0x97, 0xE7, 0x87, 0x17, 0x85, 0xB9, 0xBC, 0xC1, 0xD5, 0x2F, - 0xC4, 0x5A, 0xBE, 0x03, 0xC3, 0x49, 0xAB, 0x9D, 0x40, 0xFA, 0xE1, 0xBD, - 0x1E, 0x44, 0xE8, 0x8A, 0x6E, 0x98, 0x99, 0x4C, 0xC6, 0x2B, 0xE0, 0x18, - 0x26, 0x83, 0xCA, 0x08, 0x0B, 0xDD, 0x69, 0xD1, 0x33, 0xD5, 0x8F, 0xAD, - 0xBD, 0x86, 0xFE, 0xC3, 0x0C, 0xC3, 0x99, 0x3D, 0x4B, 0xB0, 0x0C, 0x75, - 0x17, 0x89, 0x6E, 0x70, 0x0C, 0x23, 0xA9, 0x99, 0xD9, 0x59, 0x07, 0x7D, - 0x30, 0xFC, 0xC5, 0x98, 0xD0, 0xFF, 0x5D, 0x10, 0x99, 0xF4, 0xB7, 0xC5, - 0x56, 0xE8, 0xA7, 0x0D, 0x02, 0xB4, 0x04, 0xFB, 0x9E, 0x9C, 0x8B, 0x0C, - 0x03, 0x57, 0x48, 0x73, 0x51, 0x9A, 0x8E, 0xB6, 0xB9, 0x15, 0x57, 0xFD, - 0x52, 0x1E, 0x27, 0x87, 0x68, 0xCF, 0x1C, 0x2B, 0x18, 0x2D, 0xDA, 0x00, - 0x2F, 0x71, 0xB8, 0x66, 0x35, 0x3F, 0x50, 0xC0, 0xBC, 0xF6, 0xF1, 0x0E, - 0xD0, 0xAC, 0x1C, 0xFC, 0xAD, 0x7C, 0xD9, 0x36, 0x3F, 0x20, 0xC1, 0x96, - 0x83, 0xB1, 0x14, 0xAB, 0xC7, 0xD5, 0x0A, 0xF4, 0x41, 0x65, 0x7D, 0x4C, - 0x8D, 0x03, 0xB0, 0x4C, 0x3E, 0x16, 0x6B, 0xB7, 0xF7, 0x16, 0x6B, 0x2A, - 0x82, 0x27, 0x5A, 0x1A, 0x60, 0xFF, 0x21, 0x47, 0x0E, 0xF9, 0x66, 0x78, - 0x3D, 0x27, 0xE7, 0x22, 0x93, 0x3C, 0x39, 0x9D, 0xA1, 0xC1, 0x89, 0x6D, - 0x16, 0xCF, 0x12, 0x43, 0x24, 0x9A, 0x40, 0x7A, 0x5A, 0xBA, 0xA5, 0xD2, - 0x1A, 0x9E, 0x71, 0x1F, 0x22, 0x33, 0x22, 0xA5, 0xEA, 0xA0, 0xF9, 0x88, - 0x55, 0x05, 0x8D, 0xD9, 0x0A, 0x45, 0x21, 0x9F, 0xA2, 0xD7, 0x0B, 0xE1, - 0xC1, 0x3E, 0xDF, 0x89, 0xDE, 0x24, 0xF9, 0x3F, 0x9B, 0x1E, 0xA6, 0xB9, - 0x94, 0x67, 0x4D, 0xFB, 0x9E, 0x27, 0xA4, 0x6F, 0xF5, 0xCE, 0xEB, 0x97, - 0xDA, 0xB4, 0x8A, 0xFB, 0xF2, 0xAD, 0xD2, 0x2C, 0x0A, 0x76, 0xF2, 0xA7, - 0x13, 0x0B, 0x47, 0xE2, 0xF7, 0xDA, 0x56, 0xDF, 0x83, 0x86, 0x59, 0xE5, - 0x22, 0x58, 0x2F, 0x9E, 0x9F, 0x51, 0xDF, 0xA5, 0x35, 0xB1, 0xC1, 0xC6, - 0xCE, 0xAF, 0x2C, 0xF7, 0x5F, 0xE1, 0x39, 0x6A, 0x87, 0x67, 0xB6, 0x86, - 0xC7, 0x24, 0x93, 0xEA, 0x78, 0x80, 0xDD, 0x66, 0x96, 0x40, 0x4E, 0xD7, - 0x72, 0x14, 0x8F, 0x8E, 0x2B, 0x62, 0x72, 0x07, 0x2F, 0x14, 0x9B, 0x3D, - 0x7A, 0xB4, 0x90, 0x10, 0xF2, 0xDC, 0x1A, 0x0F, 0x68, 0xAC, 0x00, 0x21, - 0xA0, 0xF7, 0xE3, 0x31, 0x6F, 0xC8, 0x62, 0xDD, 0x16, 0x13, 0xDB, 0x5A, - 0x28, 0x56, 0xE5, 0x2A, 0x1D, 0x74, 0x7E, 0x9E, 0x33, 0xC2, 0xE2, 0x96, - 0x2C, 0x88, 0xF5, 0xA4, 0x46, 0x43, 0xE5, 0x90, 0x67, 0xE2, 0xC9, 0xF4, - 0xB9, 0xC6, 0x44, 0xAB, 0xA2, 0x90, 0x22, 0xD2, 0x7D, 0xF7, 0x23, 0x5F, - 0xF7, 0x98, 0x09, 0x2A, 0xB1, 0xF5, 0xDC, 0x63, 0x50, 0x68, 0xB5, 0x07, - 0x22, 0x82, 0x59, 0x44, 0x34, 0x7B, 0x8C, 0x0A, 0x15, 0x16, 0x45, 0x9F, - 0xAE, 0x25, 0x10, 0x94, 0xB7, 0xC5, 0x4A, 0xDC, 0x42, 0x1C, 0x8A, 0xBC, - 0x79, 0xD3, 0xB3, 0xA7, 0x57, 0x70, 0x52, 0xAB, 0x0A, 0x17, 0x3B, 0x8B, - 0xAE, 0x4B, 0x6D, 0x7C, 0x4D, 0x94, 0x30, 0x12, 0xAC, 0x9F, 0xF0, 0x2C, - 0xB7, 0x84, 0x4F, 0xAF, 0x54, 0x9E, 0x2A, 0x0B, 0x76, 0x65, 0xEB, 0x4C, - 0x09, 0x26, 0x51, 0xAC, 0x85, 0xC2, 0xD3, 0x27, 0xE8, 0x90, 0xB1, 0xBD, - 0x70, 0x00, 0xBB, 0xBE, 0x32, 0x8A, 0x06, 0x90, 0xB6, 0x7A, 0x28, 0x8C, - 0x18, 0xE0, 0xA7, 0x0A, 0x93, 0x4E, 0x3B, 0x91, 0x63, 0xB8, 0xF8, 0xCD, - 0x8D, 0xFD, 0x9C, 0x80, 0x22, 0x11, 0x60, 0x16, 0x47, 0xAE, 0x63, 0xD2, - 0xEA, 0x1E, 0xF6, 0x09, 0x1E, 0x8A, 0x9B, 0xB5, 0x77, 0xE4, 0x66, 0x2D, - 0x04, 0x89, 0xD8, 0xB6, 0xAB, 0x68, 0x70, 0x67, 0x4D, 0x15, 0x70, 0x6F, - 0x1C, 0xB0, 0xC0, 0x23, 0x27, 0xDB, 0xCA, 0x5A, 0x10, 0x34, 0x5A, 0x6C, - 0x2F, 0x89, 0x27, 0x45, 0x8D, 0xF4, 0xCD, 0x38, 0x28, 0x9B, 0x5C, 0x66, - 0xD4, 0x8F, 0x23, 0x08, 0xF9, 0x8F, 0x60, 0x58, 0x56, 0x92, 0xBB, 0xC2, - 0x8F, 0x6E, 0xC8, 0x15, 0x92, 0x92, 0x33, 0xAD, 0xB4, 0x50, 0x7C, 0x31, - 0x3D, 0x77, 0x9D, 0xCF, 0x01, 0x9E, 0x08, 0xA1, 0x63, 0xEE, 0x3B, 0xDD, - 0x79, 0x67, 0x61, 0xF0, 0xB3, 0x90, 0x00, 0x5F, 0x70, 0x58, 0x85, 0x97, - 0xED, 0x1F, 0x5C, 0x67, 0x96, 0x45, 0x31, 0xC5, 0xCF, 0xDC, 0x00, 0x48, - 0x34, 0xDF, 0x0B, 0x5B, 0xFB, 0xC0, 0xB3, 0x3F, 0x72, 0xFF, 0x0D, 0x05, - 0x4E, 0x4D, 0x42, 0x6F, 0x65, 0x75, 0x1B, 0xB5, 0xCA, 0xB5, 0xA6, 0x67, - 0x18, 0x77, 0x51, 0x21, 0x4D, 0x0B, 0xC3, 0x6B, 0xB7, 0x70, 0x78, 0x81, - 0xCC, 0xB1, 0xD8, 0xCD, 0xFA, 0xA4, 0x40, 0x80, 0xEF, 0x90, 0xE6, 0x64, - 0x4C, 0x7E, 0xC7, 0x5F, 0x90, 0xF1, 0xA0, 0x66, 0x7C, 0x06, 0x4F, 0xF9, - 0xD3, 0x96, 0x31, 0x96, 0x4B, 0x91, 0x8B, 0x94, 0x45, 0x59, 0xCB, 0xE1, - 0x5F, 0x45, 0xBD, 0xDD, 0x29, 0xED, 0x2D, 0xFE, 0xDD, 0x58, 0xBC, 0xED, - 0x4A, 0x8B, 0xEE, 0xF5, 0xEA, 0x9B, 0xDC, 0xCE, 0x55, 0xB6, 0x9A, 0x3E, - 0xE0, 0xD0, 0xE0, 0x1E, 0xDE, 0xB4, 0x33, 0xF1, 0xA5, 0x1B, 0x07, 0x2B, - 0x5F, 0xA2, 0x59, 0x28, 0xD7, 0xC3, 0x3B, 0x52, 0xBF, 0x4C, 0x2E, 0xD7, - 0x88, 0x22, 0x77, 0xD9, 0x51, 0x27, 0x08, 0xA4, 0xC7, 0xF3, 0x5B, 0xF2, - 0x7B, 0x6D, 0x34, 0x6E, 0x81, 0x53, 0xB2, 0xB8, 0x0F, 0xDE, 0x51, 0x75, - 0x20, 0x36, 0x1E, 0x86, 0xB5, 0x1D, 0xCF, 0xCA, 0x5D, 0xEF, 0x00, 0x3E, - 0x68, 0xD6, 0x8C, 0x09, 0xE6, 0x12, 0x2D, 0x97, 0x24, 0xFD, 0x6A, 0xB1, - 0xD5, 0x13, 0x18, 0x1A, 0xBF, 0x8D, 0xE5, 0x38, 0x7E, 0x57, 0x47, 0x09, - 0xEC, 0xA9, 0xDF, 0x97, 0xDA, 0x8C, 0x91, 0x2F, 0x29, 0x2D, 0xAC, 0x8B, - 0xCA, 0xC7, 0x03, 0xD8, 0x68, 0xF9, 0x77, 0x2E, 0x9F, 0x5F, 0xCE, 0xD8, - 0xA4, 0x39, 0x0E, 0x64, 0xB8, 0xD8, 0x21, 0x7D, 0xCE, 0x68, 0xA5, 0xD5, - 0x38, 0x79, 0x9F, 0x90, 0x49, 0x33, 0x72, 0x05, 0x72, 0x4C, 0x76, 0x83, - 0x35, 0xFC, 0x1A, 0xE2, 0xF4, 0x60, 0xC8, 0xA8, 0x54, 0xC3, 0xC1, 0x4D, - 0x17, 0xFD, 0xAE, 0xA9, 0xA9, 0x20, 0xFE, 0xF9, 0x25, 0x4A, 0xE3, 0x22, - 0xDC, 0x7D, 0xE0, 0xFC, 0x47, 0xF7, 0xA6, 0xF3, 0x3F, 0xCE, 0xC8, 0x2E, - 0x8B, 0xCE, 0xFA, 0x46, 0x8D, 0x38, 0x4B, 0x3C, 0xB6, 0x23, 0xA9, 0x2E, - 0x53, 0xD9, 0xC3, 0x60, 0x60, 0xFF, 0x10, 0xC7, 0x38, 0x54, 0x5C, 0xBD, - 0x3E, 0xB1, 0x52, 0x2C, 0x30, 0xB3, 0x6D, 0x14, 0x5B, 0x4D, 0xAD, 0x68, - 0x9E, 0xD6, 0x0A, 0x91, 0xFD, 0x40, 0x69, 0xE1, 0xB3, 0x76, 0x21, 0x9D, - 0x5D, 0x97, 0x9F, 0x01, 0x11, 0x55, 0x9A, 0x82, 0x57, 0x1D, 0xD6, 0x55, - 0xE7, 0x20, 0x5E, 0x12, 0x0A, 0xD9, 0xA8, 0x26, 0xB9, 0x1B, 0x0A, 0xE5, - 0xB0, 0x25, 0x79, 0xB2, 0x94, 0x9F, 0x43, 0xA6, 0xBA, 0x29, 0x7E, 0x61, - 0x4C, 0x48, 0xEA, 0xBE, 0xC1, 0x5D, 0xE8, 0xF0, 0xEB, 0x4B, 0xE1, 0xF5, - 0x4B, 0x2D, 0xD3, 0xAA, 0x1C, 0x51, 0x00, 0x15, 0x16, 0x64, 0xFC, 0xC3, - 0x2B, 0xF0, 0x91, 0xBC, 0xF9, 0xDB, 0xE9, 0x88, 0x70, 0xD3, 0x56, 0x47, - 0xA3, 0x65, 0xA3, 0x34, 0x74, 0xD8, 0x97, 0x14, 0x7B, 0xA5, 0x1E, 0x12, - 0xD7, 0xA6, 0x88, 0x00, 0x91, 0x49, 0xFE, 0xD8, 0xF1, 0x0F, 0x59, 0xE3, - 0xED, 0x5D, 0x8E, 0x39, 0x0D, 0x10, 0xB5, 0x42, 0x31, 0x31, 0x6A, 0x7A, - 0x56, 0xD0, 0x25, 0xB6, 0x47, 0x7D, 0xBB, 0xCE, 0x47, 0x0A, 0xA7, 0xFF, - 0xB9, 0xCB, 0xED, 0x79, 0xFF, 0xFE, 0x16, 0x0C, 0x5F, 0xC4, 0xAF, 0x31, - 0x2C, 0xAB, 0x23, 0xA9, 0xBB, 0x2E, 0x9B, 0x09, 0xFA, 0x52, 0xC6, 0x80, - 0xF8, 0xB7, 0x3A, 0xFD, 0xD2, 0xAC, 0xBF, 0x87, 0x77, 0x3B, 0x71, 0x25, - 0xCA, 0xDB, 0xC7, 0xE9, 0x90, 0xCC, 0x98, 0x42, 0x36, 0xCE, 0xF5, 0x9F, - 0x3D, 0x52, 0xDD, 0xE8, 0xB3, 0xFB, 0x46, 0x94, 0xAE, 0x17, 0xC8, 0xA4, - 0x84, 0xF7, 0xA7, 0xD3, 0xBD, 0x31, 0xCE, 0x90, 0xAF, 0xE7, 0x88, 0x59, - 0x06, 0x68, 0x7F, 0x05, 0xEB, 0x93, 0xDC, 0x17, 0x41, 0x1C, 0xE0, 0x8B, - 0x08, 0x98, 0xCE, 0x45, 0xF2, 0xE5, 0x8C, 0xF7, 0xBA, 0xBB, 0x2B, 0x0D, - 0x2D, 0x78, 0xC7, 0x37, 0xB2, 0xDD, 0xE9, 0x86, 0x75, 0x96, 0xB7, 0xB6, - 0x90, 0x14, 0x0E, 0xB8, 0x65, 0x74, 0xC9, 0x4A, 0xA7, 0x7B, 0x39, 0x88, - 0x61, 0x02, 0x24, 0x55, 0x21, 0x14, 0x9B, 0x29, 0xC3, 0xB1, 0x37, 0xE3, - 0x48, 0xCE, 0xAE, 0x42, 0x07, 0x2C, 0x08, 0xC8, 0x6E, 0xCE, 0x6F, 0xF6, - 0x40, 0x40, 0xBD, 0xC2, 0xC9, 0x76, 0x7B, 0x11, 0xF7, 0x81, 0xD9, 0xE7, - 0x6D, 0x4B, 0x1B, 0xDB, 0x9E, 0x13, 0x30, 0xDB, 0x55, 0xBB, 0x84, 0xE7, - 0x0F, 0xBA, 0x13, 0x72, 0x04, 0xBE, 0x94, 0x13, 0xB4, 0xA8, 0xF4, 0x23, - 0x89, 0x20, 0x1D, 0x5A, 0xC2, 0x23, 0xCF, 0x41, 0x38, 0xCD, 0xFF, 0x93, - 0x76, 0x7D, 0xF6, 0x95, 0x5A, 0x3C, 0x27, 0x27, 0xEC, 0x79, 0xA8, 0xF7, - 0x41, 0x5C, 0xA4, 0xD7, 0x37, 0x09, 0x6E, 0xBD, 0x1D, 0x2C, 0x59, 0xFE, - 0xD7, 0x6B, 0x73, 0xC1, 0x1F, 0x97, 0x5F, 0x9F, 0x1E, 0xDE, 0x23, 0x9D, - 0xFF, 0xE2, 0x83, 0x52, 0x9E, 0xB0, 0x80, 0x2D, 0x2E, 0xE4, 0x99, 0xB1, - 0x02, 0x28, 0x69, 0xEB, 0x0B, 0x5E, 0xD0, 0xEA, 0xB4, 0x77, 0x96, 0xBD, - 0x79, 0xE9, 0xCB, 0x1B, 0xBD, 0x4D, 0x39, 0x83, 0x4E, 0x2D, 0x62, 0x94, - 0xB2, 0x29, 0xFC, 0x9E, 0xC3, 0x18, 0x60, 0x8C, 0xE0, 0x60, 0x40, 0x10, - 0x97, 0x16, 0xAB, 0x3A, 0x85, 0x2D, 0xD5, 0x80, 0x0C, 0xDA, 0xB7, 0x41, - 0xE4, 0x6A, 0x07, 0x75, 0xC5, 0x43, 0x49, 0x6B, 0xBB, 0xA6, 0x12, 0x84, - 0xBF, 0xDD, 0x4D, 0x76, 0xC8, 0x0F, 0xEC, 0xC1, 0x1B, 0xFE, 0x24, 0x67, - 0x37, 0x08, 0x42, 0xA5, 0x61, 0x60, 0xC9, 0x2B, 0x32, 0x25, 0x88, 0xB4, - 0x99, 0x68, 0x40, 0xAD, 0x68, 0x49, 0xD5, 0x61, 0xF9, 0xBA, 0x5A, 0xDD, - 0xB1, 0x47, 0xB1, 0xA9, 0x61, 0x38, 0x87, 0xC4, 0x86, 0x88, 0x0B, 0x7B, - 0xA8, 0xCD, 0xB0, 0x35, 0x62, 0xA2, 0xDA, 0x7A, 0x3C, 0x85, 0x00, 0x66, - 0x79, 0x74, 0xFF, 0x79, 0x6F, 0x6C, 0x4B, 0x21, 0x65, 0x7E, 0x2F, 0xFF, - 0x8A, 0xD8, 0xE8, 0x69, 0x3D, 0x3D, 0xF5, 0xB8, 0xEF, 0x8B, 0x6D, 0xE8, - 0x6F, 0x69, 0x2F, 0x8B, 0x49, 0xD8, 0x10, 0xF5, 0x42, 0xB9, 0xA6, 0x2A, - 0xC8, 0xB2, 0xE7, 0x6A, 0x20, 0x84, 0x89, 0x07, 0xA0, 0xFF, 0xC8, 0x0D, - 0x8D, 0xEE, 0xB6, 0xED, 0x7B, 0x03, 0x46, 0x36, 0xC7, 0x69, 0x8A, 0x18, - 0x88, 0x5C, 0xBB, 0xA9, 0xC0, 0x40, 0x49, 0x16, 0xB4, 0x85, 0x50, 0x88, - 0x3D, 0x50, 0x7C, 0x50, 0x3B, 0x12, 0x19, 0xEB, 0x9E, 0x1F, 0x44, 0x11, - 0x8B, 0x1C, 0xF0, 0xCF, 0xE1, 0x76, 0xA4, 0xAB, 0x4F, 0x2E, 0x46, 0x43, - 0xA4, 0xB2, 0x6E, 0x79, 0x4A, 0x89, 0x19, 0x70, 0xD8, 0xBE, 0xF5, 0x8D, - 0xAA, 0x5B, 0x23, 0xB8, 0xBA, 0xFB, 0xE6, 0xA7, 0xF1, 0xE8, 0xA3, 0xF8, - 0xE7, 0x2D, 0x7F, 0x3B, 0x7D, 0x89, 0x48, 0x99, 0xAC, 0x5A, 0xC0, 0x5B, - 0xCD, 0xE3, 0xC1, 0x65, 0x52, 0xB0, 0xA5, 0xFC, 0x5C, 0xA2, 0xEB, 0xFB, - 0x61, 0x04, 0xE2, 0xC9, 0xD6, 0x24, 0x27, 0x12, 0x2F, 0x3A, 0x9E, 0xE6, - 0x97, 0x87, 0x19, 0x4F, 0xBB, 0x09, 0x80, 0x4A, 0xAD, 0x9B, 0x18, 0x8E, - 0x43, 0x91, 0xAF, 0x2C, 0x54, 0xE8, 0xDB, 0xB8, 0x0C, 0x11, 0xC7, 0x29, - 0xE7, 0x76, 0xCF, 0xAA, 0xCC, 0x83, 0x77, 0x4E, 0xE6, 0x4D, 0x78, 0xFD, - 0x1C, 0x14, 0xCA, 0x1F, 0x0F, 0xA3, 0x70, 0xDB, 0x33, 0x44, 0xF2, 0x34, - 0x3F, 0xDB, 0x5E, 0x1F, 0x9B, 0x25, 0x47, 0x44, 0x5F, 0x04, 0xCD, 0xBA, - 0x79, 0x2A, 0x21, 0xD0, 0x8B, 0x71, 0xF8, 0x9F, 0x16, 0x6D, 0xEE, 0x1A, - 0xE9, 0x6C, 0x52, 0xDB, 0x8D, 0x17, 0x28, 0xAD, 0xFD, 0xEF, 0x7B, 0xAC, - 0x53, 0x6B, 0xED, 0x11, 0x04, 0x83, 0xFD, 0x96, 0x2E, 0xB2, 0x31, 0xC6, - 0x0C, 0x13, 0x4C, 0x20, 0x58, 0x19, 0xDE, 0x2F, 0x8C, 0xF1, 0x63, 0x48, - 0x8C, 0x3A, 0xE9, 0xF8, 0x81, 0x75, 0x0D, 0x10, 0x1E, 0x74, 0xA5, 0x7E, - 0xF7, 0xC3, 0x11, 0xFB, 0x20, 0xF0, 0xF9, 0x72, 0x7B, 0x8B, 0xF4, 0x3C, - 0xCC, 0x54, 0x5F, 0xA6, 0xEF, 0xA8, 0x03, 0xB3, 0x7E, 0x72, 0xEB, 0xA0, - 0x93, 0x67, 0xAC, 0x38, 0x9F, 0xD6, 0xEF, 0x16, 0x1D, 0x33, 0x4B, 0xC5, - 0x80, 0x60, 0x70, 0xF1, 0xF8, 0x10, 0x91, 0x2D, 0xA7, 0x04, 0xDD, 0x0A, - 0xEB, 0xEC, 0x2F, 0xA3, 0xB9, 0x4B, 0x79, 0x96, 0x3C, 0xA4, 0xE8, 0x47, - 0xA5, 0xDA, 0xE2, 0x65, 0x94, 0xEA, 0xAA, 0x32, 0x78, 0xBD, 0x6F, 0xA2, - 0x78, 0x7D, 0x15, 0x7D, 0xC3, 0xE8, 0x28, 0x91, 0xE4, 0x3C, 0x91, 0x3C, - 0xC1, 0x42, 0xEA, 0x0A, 0x51, 0x3E, 0x40, 0x4B, 0xAF, 0xB5, 0xBF, 0x56, - 0x42, 0xDE, 0x98, 0xE5, 0xC5, 0xB7, 0xF5, 0x14, 0x22, 0xDB, 0xA6, 0xA4, - 0x7E, 0x88, 0xEA, 0xD1, 0x2F, 0x57, 0xD0, 0x3D, 0x17, 0x41, 0x7D, 0xD8, - 0x4C, 0x3D, 0x49, 0xC4, 0xF3, 0x0D, 0xC4, 0x80, 0xBE, 0x6C, 0x1A, 0x26, - 0xEB, 0xBF, 0xF6, 0x95, 0xE7, 0x9A, 0x44, 0x41, 0x90, 0x1F, 0xD1, 0x70, - 0x7B, 0x65, 0xA1, 0x0F, 0xA3, 0xAA, 0xB5, 0xF1, 0xC0, 0x3D, 0x31, 0x92, - 0xA7, 0x2F, 0xB4, 0x72, 0xAB, 0x7A, 0x61, 0xB5, 0x37, 0xBF, 0xC2, 0xE5, - 0x41, 0xBA, 0x75, 0x5D, 0xB3, 0x59, 0xFA, 0x96, 0x04, 0x59, 0x2B, 0x96, - 0x10, 0x79, 0x66, 0x76, 0xF7, 0x71, 0xCB, 0x37, 0xF7, 0x60, 0x19, 0x59, - 0x21, 0x5F, 0xEE, 0x8B, 0x2D, 0x91, 0x3D, 0xEB, 0x57, 0x65, 0xB4, 0x09, - 0x09, 0x38, 0xEB, 0x70, 0x96, 0x43, 0x87, 0x80, 0x07, 0x9F, 0x0B, 0x09, - 0x03, 0xF8, 0x5F, 0xF4, 0x5A, 0x53, 0x60, 0x86, 0x48, 0x8A, 0xB3, 0xB6, - 0x34, 0xE0, 0xFC, 0xE5, 0x95, 0x12, 0xE7, 0x7C, 0xE9, 0x14, 0x56, 0x2D, - 0x8D, 0x9C, 0xA8, 0x6F, 0x2F, 0x65, 0x29, 0xBC, 0xC2, 0xEB, 0xA8, 0xD2, - 0xA9, 0xD3, 0x3E, 0x7E, 0xED, 0x28, 0x9C, 0xFD, 0x15, 0x5D, 0x64, 0x21, - 0x30, 0xAB, 0xD3, 0x0C, 0x0D, 0x63, 0x5B, 0xC5, 0xBE, 0x03, 0xB1, 0x03, - 0x7E, 0x7E, 0xE5, 0xCC, 0x0C, 0x1C, 0xB8, 0x74, 0x57, 0x58, 0x0E, 0xA1, - 0xBE, 0xA7, 0x90, 0x3B, 0x9B, 0x98, 0xB2, 0xC0, 0xF3, 0x97, 0x41, 0xBD, - 0x1F, 0xD7, 0x31, 0x42, 0xB6, 0xFF, 0x6D, 0x4B, 0xEC, 0x4D, 0x98, 0x15, - 0x71, 0x46, 0x4C, 0x14, 0x7B, 0x59, 0xE2, 0x88, 0xE4, 0x4E, 0xF2, 0x74, - 0x6F, 0x64, 0x4A, 0xEE, 0x46, 0x46, 0x4F, 0xC6, 0xF5, 0x3C, 0x12, 0xC8, - 0xBE, 0x8C, 0x55, 0x19, 0xC5, 0xC0, 0x9F, 0x31, 0xC4, 0xDA, 0xCB, 0x3C, - 0xF3, 0xC6, 0x42, 0xBC, 0x3B, 0x96, 0x62, 0xB9, 0x77, 0x54, 0x41, 0xE6, - 0x74, 0x82, 0xBA, 0xCB, 0x32, 0x7A, 0x8D, 0x05, 0xBF, 0x3C, 0x4A, 0x97, - 0x2A, 0xF7, 0xEC, 0xCF, 0xA0, 0x3E, 0x5A, 0xDC, 0x41, 0x23, 0xB0, 0xB8, - 0x56, 0x55, 0xD8, 0xC2, 0xA7, 0x3F, 0x32, 0x37, 0xD3, 0x6F, 0x01, 0xA2, - 0x0E, 0x26, 0xD7, 0xB5, 0xA0, 0xA5, 0x34, 0x22, 0x47, 0xFD, 0xD1, 0x52, - 0xF3, 0xE1, 0xE0, 0xAB, 0xF9, 0xD0, 0x8E, 0x7C, 0x42, 0x1D, 0x11, 0xEA, - 0xA4, 0xCE, 0x38, 0x68, 0xDE, 0xBC, 0xBA, 0x6A, 0x50, 0x91, 0x54, 0x86, - 0x0E, 0x98, 0xAA, 0x2C, 0x57, 0x5C, 0x2A, 0x70, 0x57, 0x58, 0x6A, 0xD1, - 0x9C, 0xB9, 0xEB, 0x5E, 0xD2, 0x35, 0xD9, 0xC5, 0x2A, 0x6B, 0x0C, 0x60, - 0x39, 0xE4, 0x4C, 0xCD, 0xF0, 0xFB, 0xF7, 0x52, 0x86, 0x48, 0xCF, 0x27, - 0xB4, 0x9A, 0xC7, 0x20, 0xB2, 0xDD, 0x5E, 0x7D, 0x4F, 0x2B, 0xC5, 0x96, - 0xC5, 0xAE, 0x65, 0x26, 0xD9, 0x18, 0xC6, 0xBE, 0x59, 0xFF, 0x85, 0x51, - 0x6D, 0xE6, 0x4E, 0xED, 0x25, 0x7D, 0x8D, 0x86, 0xDD, 0xB9, 0x06, 0x7A, - 0x76, 0x66, 0x68, 0x42, 0x13, 0x6F, 0xC8, 0x7D, 0xF8, 0x9E, 0x9B, 0x51, - 0xFD, 0xEE, 0x2F, 0xF5, 0x19, 0x5E, 0x14, 0x4E, 0xFB, 0x69, 0x68, 0xE6, - 0x9D, 0xB7, 0xD5, 0x31, 0xBB, 0xB4, 0x96, 0x4F, 0x25, 0x86, 0x25, 0xDA, - 0x98, 0xC7, 0x3A, 0xD6, 0x10, 0xD0, 0xD4, 0x52, 0x5C, 0x5E, 0x4E, 0xFD, - 0xE5, 0x04, 0x6E, 0x37, 0xDE, 0x84, 0x55, 0x6A, 0xB4, 0xAA, 0xC3, 0x50, - 0xCB, 0x36, 0x3D, 0x0F, 0x68, 0x26, 0x2D, 0xA0, 0xBB, 0xC3, 0x58, 0x85, - 0x37, 0xC3, 0xD5, 0xC2, 0x13, 0x17, 0x15, 0x59, 0x77, 0x4D, 0xEE, 0x44, - 0xC2, 0x1E, 0x37, 0x10, 0x44, 0xC3, 0xCD, 0xB5, 0x9C, 0xD7, 0xE2, 0x82, - 0xA9, 0x77, 0x83, 0x83, 0xCC, 0xB8, 0xC1, 0xB0, 0xD5, 0x2D, 0xE2, 0xC2, - 0x0D, 0x1A, 0x40, 0xCE, 0xBF, 0x57, 0x33, 0x19, 0xFF, 0xB7, 0x9C, 0xC2, - 0xAF, 0x3B, 0x7A, 0x51, 0x16, 0x0B, 0x6C, 0xB1, 0x89, 0x49, 0x7D, 0x11, - 0x78, 0x79, 0x99, 0xAF, 0x68, 0xB9, 0xB7, 0xA8, 0xC2, 0x8C, 0xD4, 0x54, - 0x2A, 0xCB, 0xC1, 0xFA, 0xBA, 0x23, 0x18, 0x44, 0xFB, 0xF4, 0x0D, 0xA9, - 0xBD, 0x93, 0x33, 0x55, 0x85, 0xC6, 0xD9, 0xE9, 0xCA, 0x48, 0x4C, 0xBF, - 0xA8, 0xA2, 0x19, 0x9C, 0x38, 0xFD, 0x3E, 0xA6, 0x83, 0x9A, 0xFC, 0x94, - 0xF7, 0xF7, 0xCC, 0xD5, 0x61, 0xED, 0x3C, 0x02, 0x8B, 0xF4, 0x4E, 0xAF, - 0x8A, 0x34, 0xEA, 0x30, 0x4F, 0x65, 0x1A, 0x79, 0x8B, 0x64, 0xAB, 0x9D, - 0x3C, 0x90, 0x6B, 0x1D, 0x17, 0x9A, 0x05, 0x9D, 0x11, 0xF6, 0xC1, 0x45, - 0x86, 0x87, 0xC0, 0x79, 0xAB, 0x5D, 0x9B, 0x1F, 0xAA, 0x80, 0x7F, 0x7C, - 0x4C, 0xAD, 0x26, 0x47, 0x9B, 0xB8, 0x59, 0x79, 0x18, 0x61, 0xC7, 0x29, - 0x28, 0xCA, 0xB5, 0xC4, 0x5E, 0x18, 0xA4, 0x02, 0x91, 0x9C, 0xBB, 0x63, - 0xBB, 0xBA, 0xCE, 0xBC, 0xC4, 0xB8, 0x65, 0xDA, 0xC4, 0x33, 0xB2, 0x44, - 0xDC, 0x26, 0xB9, 0x91, 0x34, 0xA4, 0x69, 0x03, 0x4B, 0x55, 0x12, 0xAB, - 0x5E, 0x20, 0x49, 0xFB, 0x3F, 0xA4, 0x68, 0x23, 0x0F, 0xDF, 0xB6, 0xA1, - 0x56, 0x98, 0xDD, 0x8B, 0xE7, 0x33, 0xFD, 0x5C, 0x80, 0x69, 0x6E, 0x2E, - 0x81, 0xD4, 0x4A, 0x8F, 0x1A, 0xD2, 0x88, 0x8C, 0x1A, 0xB7, 0x41, 0xB4, - 0x93, 0x82, 0x4B, 0xC9, 0xED, 0xF0, 0xC7, 0x2F, 0x4B, 0xA4, 0xB3, 0xD5, - 0x70, 0x47, 0x3A, 0x6F, 0xBD, 0x45, 0x85, 0x4D, 0x91, 0xDA, 0x28, 0x83, - 0x6C, 0xDF, 0x24, 0xD5, 0xFC, 0x4A, 0xE2, 0xFD, 0xD5, 0xC2, 0x5F, 0xC3, - 0x69, 0xF4, 0x2A, 0x19, 0xD2, 0x2B, 0x13, 0xC3, 0x57, 0x0D, 0x29, 0xD6, - 0x6D, 0xB1, 0x1B, 0xA8, 0x38, 0x72, 0xBC, 0x09, 0x4E, 0x6B, 0x22, 0xF0, - 0x89, 0x6C, 0x19, 0x7A, 0x61, 0x0C, 0xC8, 0xE5, 0xCD, 0x7A, 0xA8, 0x44, - 0x15, 0xCF, 0x9A, 0x43, 0xA7, 0xF4, 0x75, 0x0B, 0xD1, 0x60, 0x57, 0xF6, - 0xF9, 0xE5, 0x18, 0xE8, 0x80, 0xCE, 0x07, 0x17, 0x17, 0x25, 0x1E, 0xA1, - 0x15, 0x8C, 0x77, 0x14, 0x4F, 0x4C, 0xA0, 0x22, 0x85, 0x13, 0x5F, 0x54, - 0x28, 0x98, 0x23, 0x5A, 0x95, 0xC1, 0xFB, 0x1F, 0x69, 0x4D, 0xD3, 0x4C, - 0x48, 0xAC, 0xD1, 0xF1, 0xC6, 0x24, 0xFE, 0x02, 0x15, 0xFE, 0x00, 0x22, - 0x14, 0x4A, 0x67, 0x5E, 0xD3, 0xE4, 0x36, 0x6B, 0x04, 0xCA, 0x98, 0xDA, - 0x97, 0x9E, 0x52, 0x9E, 0xE5, 0x94, 0xAA, 0x87, 0xEE, 0xCB, 0x08, 0xC8, - 0xA7, 0x24, 0x46, 0xF2, 0x23, 0x62, 0xD1, 0x9C, 0xA7, 0x7F, 0xCC, 0x93, - 0xC1, 0x58, 0xFF, 0xA8, 0x17, 0xAF, 0x56, 0x28, 0x1D, 0x9F, 0xFB, 0x28, - 0x95, 0xBE, 0x48, 0x30, 0xBB, 0xD4, 0x0B, 0x3F, 0xF3, 0x53, 0x34, 0xFC, - 0x50, 0x5F, 0x90, 0x89, 0x28, 0xFE, 0x4C, 0x7E, 0x08, 0xF9, 0x0C, 0x53, - 0xD8, 0x16, 0xF7, 0x44, 0x88, 0x17, 0xFD, 0xFD, 0x21, 0x0D, 0x52, 0xBF, - 0xD8, 0x74, 0xD8, 0xCF, 0x7E, 0xB8, 0x70, 0x8B, 0xA9, 0xBB, 0x5A, 0xC9, - 0x75, 0xF2, 0xC0, 0xD3, 0xC5, 0xE0, 0x61, 0x7B, 0xEF, 0xA5, 0x51, 0x70, - 0x37, 0xA1, 0xB8, 0x09, 0xAC, 0xF0, 0xF7, 0x43, 0xD5, 0xE8, 0xB5, 0x7C, - 0xE5, 0xE7, 0x97, 0xC8, 0x20, 0x88, 0x53, 0xA3, 0x8F, 0x2F, 0x6B, 0xB4, - 0xD2, 0xF9, 0x88, 0xDE, 0x15, 0xE3, 0x88, 0xA6, 0x94, 0xC3, 0x51, 0xCE, - 0xFF, 0x2F, 0xF5, 0x59, 0xB8, 0xB4, 0x49, 0x6A, 0xAE, 0x6E, 0x8B, 0x63, - 0x7B, 0x08, 0xB0, 0xD7, 0x00, 0x3A, 0xF6, 0xBF, 0x55, 0x63, 0xB1, 0x09, - 0x24, 0x14, 0x39, 0x56, 0x62, 0x18, 0x33, 0x64, 0x64, 0xEF, 0xAA, 0xA8, - 0xC9, 0x38, 0x2A, 0xA2, 0x70, 0x4A, 0x61, 0x66, 0x6F, 0xD7, 0x73, 0xF7, - 0xF0, 0x8B, 0x34, 0xC4, 0x92, 0xD1, 0x63, 0xFC, 0x05, 0xC6, 0xD4, 0xE4, - 0x9B, 0x8F, 0x4E, 0x2A, 0x58, 0x2A, 0xA7, 0x7C, 0x47, 0x34, 0x01, 0xF3, - 0x5D, 0x0F, 0x99, 0xF3, 0x21, 0x86, 0xB7, 0x52, 0x8F, 0x06, 0x60, 0x1D, - 0xC6, 0xBB, 0xC4, 0x5A, 0x8F, 0x9B, 0x5E, 0x43, 0x4A, 0xA4, 0x2C, 0x1A, - 0xAD, 0xB8, 0x74, 0x79, 0x2C, 0x2D, 0x3A, 0x31, 0x21, 0x7F, 0x63, 0x91, - 0x0C, 0xED, 0xFF, 0x33, 0xF4, 0x2D, 0x19, 0xB6, 0x83, 0xD3, 0x33, 0x7B, - 0xE7, 0x9C, 0xF1, 0x8E, 0xAF, 0x57, 0x91, 0x81, 0x3A, 0x86, 0x1D, 0xA8, - 0xC4, 0x58, 0x78, 0xA8, 0xE8, 0x34, 0xB9, 0xE6, 0x57, 0x89, 0x4E, 0xD3, - 0x72, 0xD3, 0xD2, 0x09, 0x8C, 0xF1, 0x5B, 0xFB, 0x64, 0xDB, 0xA5, 0x32, - 0x17, 0x99, 0x65, 0x08, 0x31, 0xAD, 0x89, 0x64, 0x60, 0x60, 0xB8, 0xFE, - 0x77, 0xE5, 0x33, 0x80, 0xF8, 0x41, 0x75, 0xF0, 0xAE, 0x04, 0xB3, 0x49, - 0x6C, 0x24, 0x33, 0xC8, 0x7A, 0x09, 0x43, 0x6D, 0x0F, 0x88, 0xE6, 0xCD, - 0x35, 0xA8, 0xF2, 0xBD, 0xEA, 0x39, 0xA6, 0x46, 0xB5, 0x21, 0xD4, 0xC0, - 0xF5, 0x91, 0xDD, 0x9C, 0x58, 0x68, 0x04, 0x99, 0x58, 0x1C, 0xC2, 0x03, - 0xED, 0x1D, 0xCA, 0x93, 0xBA, 0x18, 0x1D, 0xDD, 0xB4, 0xBB, 0xE2, 0x1E, - 0x38, 0x59, 0x04, 0x5E, 0x8E, 0xFF, 0x80, 0xEC, 0xBB, 0x57, 0xE4, 0xA8, - 0x9F, 0x4D, 0xC3, 0xE5, 0x15, 0x71, 0x57, 0xDD, 0x02, 0xB2, 0x67, 0x50, - 0xD2, 0xDB, 0x95, 0xFF, 0x03, 0x2C, 0xDE, 0xE3, 0x78, 0x4F, 0xFE, 0xA9, - 0xAC, 0xE7, 0xE9, 0xC9, 0xA6, 0xB0, 0xCF, 0x98, 0x5E, 0xF7, 0xD7, 0x2C, - 0x92, 0x78, 0x44, 0xB9, 0xA0, 0x1A, 0xA4, 0x17, 0xA3, 0x50, 0x5E, 0x7E, - 0x1A, 0x9F, 0x18, 0x3C, 0x53, 0x8A, 0xFC, 0x9C, 0xF1, 0x58, 0x5D, 0xA3, - 0xD5, 0x18, 0x6C, 0xC7, 0x55, 0x2F, 0x46, 0x5D, 0xFB, 0x33, 0x75, 0x50, - 0x0A, 0x28, 0x37, 0x99, 0xBD, 0x06, 0xAD, 0x14, 0x84, 0xB5, 0x9D, 0xDF, - 0x04, 0x3F, 0x33, 0x28, 0x1F, 0xD8, 0x57, 0xB7, 0x6A, 0x90, 0x18, 0xC7, - 0xA6, 0x1B, 0x56, 0xD1, 0xBF, 0x22, 0x4E, 0x33, 0x6A, 0x7F, 0x94, 0xB8, - 0xA6, 0x0C, 0xA0, 0xE0, 0x7C, 0xD1, 0xEE, 0xDA, 0xFF, 0xE0, 0x9B, 0x41, - 0x75, 0xD7, 0xCA, 0x96, 0x01, 0xA9, 0xAA, 0xAD, 0x75, 0x54, 0xBA, 0x86, - 0x14, 0xF1, 0x84, 0x66, 0xC3, 0xC8, 0x66, 0x71, 0x63, 0x0D, 0x4A, 0x2C, - 0x85, 0x4E, 0xD7, 0x6F, 0x9A, 0x59, 0x51, 0x8A, 0xB6, 0xAF, 0xF5, 0x5F, - 0x18, 0xA2, 0x49, 0xD0, 0x34, 0xD4, 0x51, 0xF9, 0x8D, 0xA3, 0x91, 0x59, - 0x7C, 0x87, 0x9D, 0x31, 0x14, 0xE0, 0xF0, 0x08, 0x95, 0x2C, 0x61, 0xCC, - 0x53, 0xE2, 0x15, 0x9D, 0xEE, 0xA1, 0xC2, 0xDE, 0x2B, 0x53, 0xB6, 0x21, - 0x88, 0xE0, 0x5B, 0x77, 0x1F, 0x50, 0xEF, 0xFA, 0xAA, 0x48, 0xCF, 0x97, - 0x40, 0x3B, 0xC1, 0x82, 0x34, 0x6D, 0xAB, 0xB4, 0xAD, 0x5A, 0xE3, 0x99, - 0x78, 0xB6, 0xBD, 0x16, 0x34, 0x32, 0xC9, 0xA2, 0xC2, 0xA1, 0xAB, 0xB3, - 0xFA, 0xA6, 0x62, 0x7D, 0xB5, 0xF7, 0x89, 0xAD, 0x9A, 0xA9, 0x7E, 0x1C, - 0x7F, 0x9C, 0x64, 0x30, 0x47, 0x9B, 0x6E, 0x48, 0x62, 0x2C, 0xDE, 0x9A, - 0xAF, 0x2A, 0xE2, 0xF1, 0x7B, 0xEA, 0xA2, 0xAA, 0x75, 0x3C, 0xB5, 0xB2, - 0xC5, 0x2F, 0x0F, 0x50, 0x36, 0x15, 0x12, 0x71, 0x48, 0x2A, 0xD2, 0x73, - 0x02, 0xB3, 0xA8, 0xBE, 0x24, 0x18, 0x79, 0xB0, 0xE0, 0x06, 0x07, 0x13, - 0xE5, 0xF6, 0x32, 0x96, 0x9C, 0x88, 0x6B, 0xF0, 0xFB, 0xA9, 0x04, 0x52, - 0x18, 0x41, 0x91, 0x5D, 0x4C, 0xDC, 0x96, 0x35, 0x45, 0x85, 0x1D, 0x1C, - 0xDF, 0x28, 0xCA, 0x07, 0xC5, 0x27, 0x47, 0xF7, 0x30, 0x6D, 0xDF, 0x28, - 0x12, 0xCA, 0x28, 0x31, 0x71, 0x77, 0xCC, 0x35, 0x0A, 0x2E, 0x81, 0xEE, - 0xD2, 0x6F, 0x01, 0x95, 0x5A, 0x97, 0x44, 0xCA, 0x18, 0x69, 0xD9, 0xA0, - 0xC8, 0x88, 0xF3, 0x2B, 0x7A, 0x7F, 0xFD, 0x5F, 0xA6, 0x42, 0x3D, 0x1A, - 0x36, 0x78, 0x4D, 0x1B, 0x56, 0x8F, 0x3A, 0xCB, 0x65, 0x77, 0x9E, 0x78, - 0x03, 0xDE, 0xA9, 0xE6, 0x0D, 0x06, 0xF6, 0x43, 0xC6, 0x94, 0xCB, 0x37, - 0xEA, 0xC1, 0x97, 0x01, 0x69, 0x41, 0x6D, 0x55, 0x7C, 0xC8, 0x9C, 0xD1, - 0x4A, 0x66, 0x9E, 0x90, 0x03, 0xCA, 0x29, 0x53, 0x68, 0x0F, 0x69, 0x6C, - 0x7D, 0xEB, 0xAD, 0xD9, 0x1A, 0xA4, 0x46, 0xB4, 0x92, 0x9C, 0x42, 0x0E, - 0x9F, 0x81, 0x29, 0xA2, 0xDF, 0xB0, 0x2C, 0x4C, 0x32, 0xA2, 0x57, 0x25, - 0x01, 0xB1, 0x9C, 0x12, 0x53, 0xC7, 0xF0, 0x0A, 0x60, 0xA6, 0x51, 0xC9, - 0x8F, 0xB4, 0x52, 0x20, 0x8A, 0x61, 0x17, 0x76, 0xA3, 0x85, 0xB9, 0x51, - 0x02, 0x0A, 0x2D, 0x81, 0x07, 0x90, 0x56, 0x96, 0xA7, 0xF9, 0x5A, 0x36, - 0x6E, 0x2A, 0xA8, 0x7E, 0xC1, 0xD8, 0x23, 0x0E, 0x81, 0xBA, 0x85, 0xDD, - 0x60, 0x61, 0x28, 0xEF, 0x93, 0x4E, 0x12, 0x9B, 0x1A, 0x0B, 0xC7, 0xEB, - 0x7C, 0xE0, 0xEF, 0x24, 0xA1, 0x0A, 0x7D, 0x98, 0xB8, 0x55, 0xF9, 0x88, - 0x42, 0xA2, 0x69, 0xC5, 0x8C, 0x24, 0xE1, 0xA1, 0xA4, 0xDE, 0x34, 0x6E, - 0x08, 0xFD, 0x1F, 0x25, 0x0C, 0x94, 0xEF, 0x08, 0x62, 0x63, 0x75, 0x08, - 0x3E, 0x71, 0xAF, 0xA6, 0xFA, 0x5D, 0x8E, 0xA8, 0x37, 0x00, 0xB7, 0xDF, - 0x4A, 0x4D, 0x6E, 0x92, 0x0A, 0x45, 0x02, 0xF8, 0xF0, 0x08, 0x77, 0x38, - 0x0C, 0x2B, 0xAE, 0x15, 0xF8, 0x40, 0x6C, 0x40, 0xCC, 0x08, 0x76, 0xB4, - 0xD5, 0x92, 0x59, 0x49, 0xA0, 0x98, 0xEC, 0x65, 0xCE, 0xCC, 0xAF, 0x8B, - 0xC4, 0xA9, 0xE8, 0x2B, 0x23, 0x90, 0xC0, 0x19, 0x12, 0x15, 0x23, 0xCE, - 0xD4, 0x80, 0x22, 0x82, 0x30, 0x6A, 0x50, 0xFA, 0x6D, 0x3A, 0xBD, 0x4B, - 0xE1, 0x5B, 0x1A, 0x07, 0x88, 0x4E, 0xD0, 0x42, 0xA6, 0xFD, 0x5E, 0x3C, - 0x7F, 0x53, 0x20, 0xDD, 0x9C, 0x46, 0xEA, 0xE8, 0x8D, 0x6F, 0x17, 0x57, - 0x41, 0x59, 0xEA, 0x27, 0xC7, 0x70, 0xFB, 0x12, 0x2D, 0x6C, 0xF7, 0xEF, - 0xA7, 0x6A, 0x5C, 0x15, 0x09, 0xE3, 0x63, 0xF1, 0x5B, 0xB8, 0xE4, 0x69, - 0x92, 0x7C, 0x13, 0x90, 0xBB, 0xA3, 0xE8, 0xF0, 0xC9, 0xF3, 0xD5, 0x27, - 0xB7, 0xC4, 0x2B, 0xEB, 0x66, 0x19, 0x36, 0x9B, 0x88, 0x88, 0xFD, 0xBA, - 0x0F, 0x2E, 0x66, 0x98, 0x94, 0x3C, 0x6F, 0x09, 0x0B, 0x89, 0x35, 0x3A, - 0x8A, 0x8A, 0x7B, 0xA5, 0x1F, 0x9B, 0x9D, 0x53, 0x67, 0xEE, 0xBC, 0x8C, - 0x63, 0x83, 0x11, 0x31, 0x87, 0x24, 0x36, 0xBA, 0x7F, 0xC5, 0xA2, 0x06, - 0x33, 0x10, 0x79, 0xEC, 0x01, 0x89, 0x48, 0x96, 0x2A, 0xC9, 0x25, 0x0F, - 0xF3, 0x92, 0x1E, 0x52, 0x93, 0xCD, 0x65, 0x71, 0x2B, 0x98, 0xE7, 0xC8, - 0x29, 0xA3, 0x21, 0x43, 0xF0, 0x37, 0x3C, 0x36, 0x8E, 0x7F, 0xDC, 0x95, - 0xA1, 0x56, 0xA1, 0x20, 0xA1, 0xBC, 0x5C, 0x30, 0xDE, 0x52, 0x54, 0xC8, - 0x73, 0xCE, 0xA6, 0x30, 0x44, 0x0F, 0x3F, 0xA0, 0x7B, 0x7E, 0x11, 0x66, - 0x2E, 0xD6, 0xD8, 0x85, 0x5B, 0x56, 0xC1, 0xD3, 0xEE, 0xF1, 0x7E, 0xBA, - 0x08, 0xF1, 0xA4, 0x49, 0xB3, 0x0C, 0x41, 0xA3, 0xFC, 0xAF, 0xA6, 0x9E, - 0x90, 0x25, 0x44, 0xC2, 0x36, 0x64, 0x74, 0x38, 0xC9, 0xBC, 0xA5, 0xE8, - 0x36, 0x2E, 0x84, 0xCD, 0xEA, 0x22, 0x8A, 0x09, 0x94, 0xB2, 0x38, 0x67, - 0xC3, 0xBD, 0x7C, 0x79, 0x12, 0x3D, 0xE2, 0xA0, 0x0A, 0x1F, 0xCE, 0xE7, - 0x1D, 0x7A, 0xB5, 0x2B, 0x4E, 0x62, 0x82, 0x37, 0xEC, 0xFB, 0x7B, 0x05, - 0xAC, 0xE5, 0x10, 0x60, 0x8B, 0x09, 0x7D, 0xC8, 0x16, 0xE0, 0xFA, 0x78, - 0x35, 0x13, 0xF6, 0x8D, 0xB0, 0x39, 0x5F, 0xC8, 0xF4, 0x08, 0xCF, 0x0D, - 0xA9, 0xA1, 0xC6, 0xE0, 0xDC, 0x0A, 0x4D, 0x54, 0x6C, 0x47, 0x16, 0xFD, - 0x61, 0x08, 0xD3, 0x90, 0xC3, 0x4A, 0xD2, 0xE0, 0x7E, 0xE9, 0xB1, 0x62, - 0xBD, 0x15, 0x61, 0xB8, 0x6A, 0xF2, 0x76, 0x66, 0xBB, 0x5C, 0xB6, 0x87, - 0x40, 0x8B, 0xFF, 0x90, 0x1F, 0xB7, 0x63, 0xF3, 0x73, 0xF4, 0xE9, 0xEB, - 0x96, 0xA9, 0x73, 0xA5, 0xF5, 0x94, 0x5E, 0x16, 0x9B, 0xB1, 0x9F, 0x2F, - 0x6B, 0x9D, 0x13, 0x6F, 0x01, 0xD6, 0xB6, 0x74, 0xA7, 0x86, 0x19, 0x82, - 0x6F, 0x50, 0x1A, 0x44, 0x5D, 0x47, 0xC5, 0xC5, 0x66, 0xEF, 0x24, 0xE3, - 0xA8, 0x16, 0xD3, 0xEB, 0x2B, 0x06, 0x54, 0xDB, 0x9B, 0x1F, 0xFE, 0x8D, - 0x03, 0x1C, 0x63, 0x4C, 0xFA, 0x7E, 0xB8, 0x5A, 0xA3, 0x50, 0x2D, 0xE1, - 0x04, 0xE1, 0x15, 0x31, 0xF7, 0xB3, 0x23, 0xD7, 0x0E, 0x78, 0x42, 0x4D, - 0x28, 0x1F, 0xF2, 0x9D, 0xFC, 0x4A, 0xEC, 0xA1, 0xF2, 0x6E, 0x40, 0xA2, - 0xD9, 0xEC, 0x67, 0xDB, 0x81, 0x7C, 0xEA, 0x72, 0x38, 0xAF, 0xA2, 0x06, - 0xCC, 0xAB, 0x22, 0xFA, 0x5C, 0xF9, 0xB7, 0x9D, 0xE5, 0x35, 0x11, 0xE8, - 0xB3, 0x01, 0xFB, 0xEF, 0xE8, 0xE4, 0x08, 0x36, 0xDB, 0xB3, 0x83, 0x8D, - 0xD0, 0xA9, 0xFD, 0xFB, 0x8A, 0x28, 0x60, 0xD3, 0xDC, 0x72, 0x52, 0x40, - 0x97, 0x53, 0xBB, 0xA2, 0xAF, 0x6F, 0x04, 0x2B, 0xBE, 0x8E, 0x16, 0x2D, - 0x0E, 0x7C, 0x2A, 0xEB, 0xC1, 0xC8, 0x6E, 0x96, 0x29, 0x1F, 0x64, 0x26, - 0xFF, 0x89, 0xF3, 0x2D, 0xF2, 0x26, 0xF0, 0x74, 0x0F, 0x4D, 0x7F, 0x2F, - 0x61, 0x3C, 0xE9, 0x03, 0x43, 0x82, 0x24, 0x2F, 0x80, 0x42, 0x5D, 0xBE, - 0xFA, 0x13, 0x06, 0x0F, 0xA8, 0x82, 0x44, 0x04, 0x97, 0xC4, 0x21, 0x21, - 0x4C, 0x4D, 0xB4, 0x37, 0xB3, 0x5D, 0xD8, 0xF7, 0xDB, 0xC3, 0xC6, 0x21, - 0x98, 0xF3, 0x11, 0x7A, 0x8D, 0xD9, 0xE3, 0xD9, 0x7F, 0xF6, 0xED, 0x44, - 0xCC, 0xCB, 0x2A, 0x2D, 0x22, 0x3C, 0x23, 0x64, 0x25, 0xA0, 0xCC, 0xDE, - 0x99, 0x01, 0xE8, 0xCB, 0xB4, 0xE6, 0x4D, 0xEB, 0x57, 0xEC, 0xDA, 0xB3, - 0x9A, 0x7E, 0xF5, 0xCC, 0x9B, 0x9D, 0x3A, 0xC8, 0xD4, 0xA9, 0x39, 0x7D, - 0x6A, 0x63, 0xC7, 0x48, 0xFF, 0x8E, 0x36, 0x81, 0x8C, 0x2B, 0x8F, 0x1E, - 0x52, 0x42, 0xEE, 0x1C, 0xBB, 0xB9, 0xE9, 0xC5, 0xB9, 0x27, 0x47, 0xA7, - 0x92, 0x39, 0x01, 0x3E, 0x35, 0xA9, 0x6C, 0x47, 0x55, 0x46, 0x07, 0x28, - 0x82, 0x5C, 0x0A, 0xC7, 0x07, 0x6A, 0xE0, 0x57, 0x9F, 0x3C, 0x08, 0xDA, - 0xA2, 0x5E, 0xE8, 0xA1, 0xBC, 0xB2, 0x4F, 0xD1, 0xB0, 0x2E, 0x71, 0xC2, - 0xAC, 0xA4, 0xF1, 0x8B, 0xE1, 0xF8, 0x30, 0xD6, 0x48, 0xBC, 0x79, 0x74, - 0xF6, 0xC3, 0x3F, 0x83, 0x75, 0xC4, 0xC5, 0x20, 0xED, 0x01, 0xB6, 0xA9, - 0x3B, 0x22, 0xC0, 0x1F, 0xC2, 0x49, 0xF0, 0xA9, 0x5F, 0x53, 0x6D, 0x6D, - 0xB8, 0xE1, 0x6D, 0x9E, 0xE8, 0xD5, 0x45, 0x34, 0x69, 0x87, 0xF8, 0x42, - 0x78, 0x1A, 0xD0, 0x07, 0x6A, 0xC6, 0x9E, 0x56, 0xEB, 0xA6, 0xF6, 0x71, - 0x88, 0x80, 0x3A, 0xDD, 0xDC, 0xC4, 0x8E, 0xA3, 0x74, 0x6D, 0x10, 0xBA, - 0x26, 0x98, 0xE1, 0x68, 0x49, 0x6A, 0x86, 0x0F, 0x62, 0xA5, 0x75, 0x83, - 0xD9, 0x5A, 0xD6, 0x34, 0x81, 0x65, 0x17, 0xA9, 0xD2, 0xF0, 0x35, 0x35, - 0x27, 0x9D, 0x81, 0x72, 0xAE, 0xA4, 0xC0, 0xFE, 0x09, 0x95, 0xFA, 0x3D, - 0x78, 0xEA, 0x3D, 0xA5, 0xA9, 0xB6, 0x4B, 0x91, 0xBA, 0x31, 0x44, 0xCD, - 0xD6, 0x94, 0x7A, 0x38, 0x40, 0x75, 0xD6, 0x4C, 0x6F, 0x30, 0x8A, 0x8E, - 0xF6, 0x75, 0x50, 0x70, 0x17, 0x28, 0xED, 0x0B, 0xDF, 0xEB, 0x8B, 0x94, - 0x05, 0x9B, 0x85, 0x7A, 0xAA, 0xE7, 0x76, 0xE4, 0x5D, 0x9D, 0x2A, 0x02, - 0x9A, 0x96, 0x70, 0xA4, 0xC5, 0x4D, 0x90, 0x18, 0x5D, 0x31, 0x2E, 0x49, - 0xFF, 0xA9, 0xBE, 0x9D, 0x9E, 0x7F, 0x6E, 0x0A, 0x08, 0x04, 0x83, 0x43, - 0xA1, 0x5B, 0x44, 0xA4, 0xAC, 0x66, 0xE1, 0x5A, 0xA3, 0x70, 0xED, 0x00, - 0x84, 0x53, 0x0E, 0x52, 0x22, 0x29, 0x3D, 0x14, 0x9D, 0x9C, 0x1C, 0xBC, - 0x0A, 0x19, 0xC0, 0x7B, 0xED, 0xBC, 0x4D, 0x15, 0x8B, 0xEC, 0x99, 0xF7, - 0x68, 0x76, 0xCD, 0x3C, 0x11, 0x57, 0x28, 0x49, 0xF1, 0x0F, 0x7F, 0x74, - 0x24, 0x40, 0x05, 0x98, 0xFF, 0xF4, 0xE7, 0xB7, 0x84, 0xDB, 0x55, 0x09, - 0xD6, 0x0B, 0xE4, 0x5B, 0xF9, 0xFF, 0xB1, 0x2E, 0x25, 0x00, 0x3C, 0x9A, - 0xEE, 0x1B, 0x24, 0x07, 0x3C, 0xE1, 0xA9, 0xB1, 0x90, 0x44, 0x73, 0x1E, - 0xD1, 0xFA, 0x00, 0x35, 0xF5, 0x79, 0xAB, 0xDE, 0xB3, 0x5E, 0x62, 0x56, - 0x0B, 0xCC, 0xA3, 0x49, 0x67, 0x44, 0x79, 0x85, 0x3A, 0x5D, 0x2B, 0x9D, - 0xA3, 0x57, 0x44, 0x97, 0x2A, 0x50, 0x34, 0xA9, 0x2F, 0x20, 0xE7, 0x58, - 0x49, 0xF9, 0x54, 0x8F, 0x9B, 0xE1, 0xCC, 0x44, 0xC2, 0x27, 0xBE, 0x60, - 0xDD, 0x6E, 0x4D, 0xFB, 0xA8, 0xB7, 0x5E, 0xFA, 0xBF, 0xDE, 0xF2, 0xB2, - 0xDE, 0xF9, 0x55, 0x40, 0xD3, 0xB7, 0x63, 0x56, 0x74, 0x2D, 0x12, 0x37, - 0x2D, 0xD6, 0x7E, 0x84, 0x63, 0x3E, 0xAD, 0x44, 0x69, 0x58, 0x8D, 0xEE, - 0x9A, 0xA2, 0xF7, 0xFD, 0x90, 0x05, 0xD3, 0x52, 0x2C, 0x53, 0xFF, 0xA0, - 0xC3, 0x42, 0xE9, 0x6E, 0x61, 0x68, 0xE9, 0x88, 0x39, 0x35, 0xD7, 0xA0, - 0x03, 0xDA, 0x49, 0x0E, 0x9C, 0x03, 0xE4, 0x87, 0x95, 0xA5, 0xD9, 0xD6, - 0x29, 0xA2, 0xFB, 0x63, 0x9E, 0xDE, 0x7C, 0x9E, 0x1E, 0xAF, 0x86, 0xC8, - 0xD0, 0x27, 0x5E, 0xE1, 0xD3, 0xC6, 0x3A, 0x60, 0xD8, 0x43, 0xD7, 0xDC, - 0xFB, 0xC5, 0x72, 0xBF, 0xCF, 0xBD, 0x3A, 0x16, 0xEF, 0x79, 0xC6, 0x3E, - 0xB4, 0x27, 0x4C, 0x60, 0x2B, 0x4C, 0xAF, 0x44, 0x26, 0x1E, 0xAB, 0xEC, - 0xB2, 0xCE, 0xD6, 0xD1, 0x71, 0xFE, 0x8A, 0xE2, 0xA5, 0x6C, 0x53, 0x89, - 0x84, 0x08, 0x8E, 0x79, 0x41, 0xE7, 0xBB, 0x36, 0x8F, 0xFA, 0x81, 0xED, - 0x6D, 0x7B, 0x4F, 0x4B, 0x52, 0xC9, 0x03, 0x83, 0x65, 0xC4, 0xF3, 0x28, - 0xC3, 0x44, 0x25, 0x85, 0x5D, 0x6D, 0x07, 0x38, 0xDE, 0xC3, 0x33, 0x6E, - 0x09, 0x16, 0x64, 0x3F, 0x2F, 0x8A, 0x22, 0x53, 0xEE, 0xDB, 0x1B, 0xF1, - 0x41, 0xD2, 0xE5, 0x26, 0xD2, 0xD5, 0x9F, 0x2B, 0x1E, 0x78, 0xFE, 0x81, - 0x03, 0x68, 0x79, 0x7C, 0xEB, 0x3E, 0x71, 0xF0, 0x64, 0x28, 0xA0, 0x3E, - 0x54, 0x44, 0x2B, 0x56, 0x21, 0x11, 0xD6, 0xD7, 0x35, 0xB3, 0xFD, 0xC1, - 0xE5, 0xE6, 0x10, 0xB3, 0xCC, 0xD5, 0x24, 0x25, 0xE0, 0xF6, 0x1A, 0x0F, - 0xF9, 0xD5, 0x34, 0x72, 0x26, 0xD1, 0x9F, 0xFA, 0xFA, 0x41, 0x1C, 0x22, - 0x97, 0x99, 0x16, 0x41, 0xA8, 0xDC, 0x3B, 0x59, 0xC6, 0xB1, 0x9E, 0xB6, - 0x10, 0xD1, 0xD3, 0x36, 0xC8, 0x12, 0x73, 0x4D, 0x7D, 0xD0, 0xFE, 0xF5, - 0x82, 0x0A, 0x4A, 0x20, 0x5C, 0xE1, 0x7F, 0x19, 0xFD, 0x1B, 0x34, 0x14, - 0xE1, 0x8A, 0xDB, 0x01, 0x9B, 0xF8, 0x68, 0x78, 0x2E, 0x9B, 0x6A, 0x3C, - 0xF5, 0x86, 0x67, 0xF7, 0x6D, 0x92, 0xF3, 0xD6, 0x00, 0x77, 0x6B, 0x5F, - 0x60, 0x16, 0xE6, 0x41, 0xAB, 0xF6, 0x51, 0xC5, 0x0D, 0xF0, 0x96, 0x13, - 0xBB, 0x14, 0x82, 0x44, 0xD1, 0xCC, 0x86, 0xDE, 0xC1, 0x51, 0x88, 0xE3, - 0x72, 0x02, 0x5B, 0x41, 0xA2, 0x43, 0x0E, 0xEC, 0x3B, 0xEE, 0xAB, 0xB7, - 0xEE, 0xAC, 0xCA, 0x84, 0x71, 0x3F, 0x9F, 0xB7, 0x59, 0x4F, 0x7B, 0x2C, - 0x76, 0x10, 0xF1, 0xF8, 0xDC, 0x88, 0x8D, 0x03, 0x76, 0x6D, 0x1D, 0x4B, - 0x98, 0x08, 0x74, 0x1D, 0x2E, 0xD5, 0xFC, 0xF3, 0x68, 0x27, 0xB3, 0xA1, - 0x89, 0x26, 0x5E, 0x8D, 0x5C, 0xE4, 0x86, 0x9B, 0x10, 0xF0, 0x86, 0xC3, - 0xE0, 0x76, 0xFF, 0x8B, 0x8C, 0x39, 0x32, 0x4E, 0xF8, 0xF3, 0x86, 0xE6, - 0x0C, 0x6A, 0x00, 0xEB, 0x7F, 0xBD, 0xDE, 0x7F, 0x0C, 0x80, 0xBA, 0x8B, - 0xEA, 0x8D, 0x20, 0xCB, 0x86, 0x81, 0x1B, 0x44, 0x49, 0x65, 0xD1, 0xFA, - 0x12, 0xD8, 0x1B, 0xD7, 0x6D, 0xA7, 0xF6, 0x53, 0x19, 0x8D, 0x9A, 0x04, - 0x34, 0xB2, 0x15, 0xDD, 0xE7, 0x46, 0x75, 0xAA, 0x90, 0xEC, 0x41, 0x9C, - 0x93, 0xBA, 0xFD, 0xFE, 0x08, 0xFD, 0x86, 0x73, 0x7C, 0x93, 0xB6, 0xD0, - 0x3E, 0x16, 0x82, 0x05, 0x01, 0xC4, 0xBE, 0x9C, 0x24, 0x05, 0x94, 0x53, - 0x25, 0xBD, 0x67, 0x48, 0x7C, 0x66, 0xDC, 0xB6, 0x9D, 0x28, 0x26, 0x22, - 0xFA, 0x5D, 0xF6, 0x39, 0x31, 0x1D, 0xDA, 0xAA, 0x1A, 0x04, 0x40, 0x33, - 0x67, 0xA5, 0x97, 0x48, 0xB1, 0x06, 0xFB, 0x9A, 0xEC, 0xF0, 0x04, 0x5F, - 0x11, 0x26, 0x23, 0x93, 0x90, 0x48, 0x72, 0x92, 0xBD, 0xB8, 0xA6, 0xD1, - 0xEE, 0x70, 0xFD, 0xB8, 0x53, 0x91, 0x62, 0xC1, 0x48, 0x0D, 0x70, 0xBB, - 0xCD, 0xD4, 0xC3, 0xA1, 0x3D, 0x24, 0x42, 0x59, 0xD6, 0x3B, 0xA0, 0xD0, - 0xAC, 0x89, 0x07, 0x45, 0x66, 0xC9, 0x1D, 0xBF, 0x66, 0xC4, 0xF9, 0x5D, - 0x90, 0x3D, 0x84, 0x10, 0x62, 0x21, 0x37, 0x78, 0x8D, 0x27, 0xF2, 0x01, - 0xA8, 0xD0, 0x2E, 0x81, 0xA0, 0xDB, 0x8D, 0x89, 0x78, 0x10, 0xBB, 0x49, - 0x60, 0xA0, 0x50, 0x11, 0x6B, 0x04, 0xF3, 0x2E, 0x41, 0xBF, 0x00, 0xC4, - 0xFA, 0xA8, 0x3B, 0x93, 0x9C, 0x90, 0x29, 0xD6, 0xBD, 0xC4, 0xE9, 0x26, - 0xE2, 0xDB, 0xE8, 0x7E, 0xD6, 0xA7, 0xE7, 0x55, 0x61, 0x5E, 0x46, 0x82, - 0x32, 0x8D, 0xD4, 0x96, 0xF5, 0x6B, 0xB3, 0x1D, 0x18, 0xA9, 0xAA, 0x8A, - 0x22, 0x49, 0xF7, 0xB7, 0x36, 0xF7, 0xD0, 0x96, 0x2E, 0xC6, 0x73, 0x99, - 0x93, 0x63, 0x12, 0x18, 0xF3, 0x82, 0x50, 0xE1, 0x96, 0x1B, 0x7E, 0xA9, - 0x29, 0xFF, 0xFA, 0x75, 0x07, 0x82, 0x7D, 0x94, 0x4C, 0x2D, 0xCC, 0x06, - 0xAD, 0x41, 0xF3, 0xB5, 0xF3, 0x6E, 0xAD, 0x8A, 0xDD, 0x7B, 0x7F, 0xE4, - 0x7D, 0x58, 0xA8, 0x6D, 0x7C, 0xED, 0x9C, 0x1B, 0x63, 0x94, 0xD6, 0x81, - 0x43, 0x1B, 0x8C, 0x1B, 0x7F, 0xB9, 0x1C, 0xB4, 0xD5, 0xB7, 0xBD, 0xED, - 0xAA, 0x8D, 0xE4, 0x06, 0xE8, 0x88, 0xDB, 0xB5, 0xCB, 0xE9, 0xA5, 0x30, - 0xA6, 0xD9, 0xA0, 0x99, 0x5F, 0x53, 0xC5, 0x9E, 0x4E, 0x29, 0xBB, 0xE5, - 0xC5, 0xA4, 0xD9, 0x99, 0x86, 0xF1, 0x11, 0xE1, 0x4A, 0x5D, 0xCB, 0xD4, - 0xF4, 0xBC, 0x66, 0x87, 0x33, 0x93, 0x76, 0xBC, 0x10, 0x4E, 0xC1, 0xB3, - 0x0B, 0x00, 0xF5, 0x0C, 0x57, 0x9A, 0xC5, 0x30, 0x45, 0xCC, 0xDE, 0x08, - 0xF0, 0x1C, 0x4C, 0x6D, 0xA9, 0xD8, 0x6C, 0x65, 0x7A, 0xC5, 0x0A, 0xE2, - 0x0A, 0x47, 0xB4, 0x2F, 0x82, 0x0A, 0x8B, 0x12, 0xF5, 0xF5, 0xC4, 0x08, - 0x17, 0x89, 0x4B, 0xEB, 0x11, 0x9E, 0x1F, 0x2E, 0x2A, 0x24, 0xDF, 0x15, - 0xC0, 0x1B, 0x04, 0xCE, 0x07, 0x10, 0xB5, 0x26, 0x81, 0xC4, 0x4C, 0xA5, - 0x14, 0x5B, 0x17, 0x57, 0x38, 0x61, 0xF9, 0x2A, 0x25, 0x0E, 0x51, 0x15, - 0x5B, 0xEB, 0x85, 0xFE, 0xAA, 0x3E, 0xB6, 0x10, 0x6E, 0x20, 0xAF, 0xAC, - 0xFA, 0xE7, 0x86, 0xFF, 0x96, 0xA9, 0xB3, 0xB7, 0x86, 0xAC, 0x2C, 0x53, - 0xD9, 0x0A, 0x7A, 0x01, 0xE1, 0x58, 0xBD, 0x8C, 0x7C, 0xB0, 0x7F, 0xBB, - 0x70, 0x9B, 0xE1, 0x9A, 0xB8, 0x0E, 0x5D, 0xC9, 0x5D, 0x90, 0xBE, 0x2F, - 0x94, 0xCE, 0x2E, 0x28, 0xFB, 0x09, 0xF8, 0xC0, 0x11, 0x31, 0x2F, 0xE2, - 0xFF, 0xE1, 0x63, 0xE8, 0x58, 0xB9, 0x4D, 0x27, 0x02, 0x7A, 0x05, 0xF0, - 0x61, 0x70, 0x34, 0xAA, 0xB6, 0xCC, 0xA1, 0xB8, 0xC3, 0x53, 0xAE, 0x1B, - 0x0D, 0xB6, 0x2B, 0x3D, 0x84, 0x5A, 0xC4, 0x12, 0xDF, 0x6C, 0x60, 0x73, - 0x28, 0xE1, 0x07, 0xFF, 0x2C, 0x04, 0xE8, 0xF1, 0x86, 0xCE, 0x38, 0x1E, - 0xDE, 0x06, 0x14, 0x59, 0x2A, 0x91, 0x24, 0x6C, 0x72, 0x7A, 0xB6, 0x2A, - 0x1A, 0x74, 0xB6, 0x5F, 0x88, 0xE3, 0xC0, 0xC9, 0x28, 0xDE, 0xE5, 0x4B, - 0x08, 0x7F, 0xD1, 0x75, 0x2D, 0xF6, 0x9E, 0x91, 0x8D, 0xF0, 0x79, 0x6A, - 0x0C, 0xA2, 0x19, 0xD4, 0xDE, 0xE6, 0x45, 0xFC, 0x66, 0xA0, 0xB8, 0x24, - 0x1D, 0x88, 0xDD, 0x31, 0x2C, 0x99, 0x02, 0x86, 0xC7, 0xF7, 0xA9, 0xFF, - 0x19, 0x61, 0x2E, 0xFA, 0xCE, 0xD2, 0x46, 0xD5, 0x89, 0xD1, 0xBC, 0x3E, - 0x03, 0x21, 0x13, 0x14, 0x65, 0x1C, 0x15, 0x54, 0xAB, 0x22, 0xA0, 0x52, - 0xEA, 0xEC, 0xB5, 0x8D, 0x7B, 0xC7, 0xFC, 0x9A, 0x1C, 0x30, 0x1D, 0x50, - 0x6A, 0xB6, 0xA4, 0x0F, 0x57, 0xE4, 0x6B, 0xBD, 0x69, 0x79, 0xF8, 0x75, - 0x43, 0xBE, 0xDC, 0x5C, 0xAD, 0xC0, 0xB8, 0xEF, 0xF1, 0x57, 0xB7, 0xEE, - 0xAB, 0xBA, 0x94, 0xBD, 0xEE, 0x62, 0x0C, 0x99, 0xC8, 0xC1, 0x7C, 0x07, - 0xCE, 0xE0, 0x51, 0x34, 0x67, 0x8D, 0xFD, 0x89, 0x7E, 0xFD, 0x56, 0xBC, - 0xD1, 0x3E, 0x4C, 0x30, 0x11, 0xA4, 0x2C, 0x4E, 0x98, 0xA3, 0xAC, 0xD4, - 0x34, 0xE4, 0xD2, 0x30, 0xA5, 0xC6, 0xD5, 0xBE, 0xE9, 0x93, 0x20, 0x2E, - 0xD0, 0xD3, 0x27, 0x6C, 0x18, 0xB3, 0xE4, 0x38, 0x09, 0x93, 0x49, 0xE7, - 0xB3, 0x25, 0xDF, 0x5F, 0x80, 0x36, 0xC4, 0x74, 0x03, 0x3B, 0x12, 0x0C, - 0x4E, 0xA3, 0x79, 0x42, 0x15, 0xC8, 0x7D, 0xE3, 0xCD, 0xED, 0x30, 0x3F, - 0x23, 0x11, 0x15, 0x37, 0xB5, 0x03, 0x04, 0x1D, 0xD3, 0x9E, 0x6B, 0x68, - 0x78, 0xE7, 0xBF, 0xB6, 0x3D, 0x89, 0x21, 0xF9, 0xAA, 0xC4, 0xD7, 0x54, - 0x17, 0xD6, 0xF3, 0x3E, 0xDC, 0xE9, 0xB3, 0x87, 0xA0, 0x3B, 0x6A, 0x54, - 0xB0, 0x6D, 0x9E, 0xB0, 0xC2, 0x48, 0xA7, 0xE9, 0x29, 0xEB, 0xDF, 0x88, - 0xE6, 0x9F, 0x4B, 0x83, 0xAF, 0x29, 0x4F, 0x30, 0x62, 0x37, 0xC5, 0x23, - 0xFB, 0x19, 0x08, 0x1D, 0xFF, 0xA3, 0x19, 0xB2, 0xEB, 0xBF, 0x68, 0x88, - 0xBC, 0x1F, 0x9A, 0xE5, 0x2A, 0x24, 0x46, 0xC0, 0x87, 0x82, 0x7F, 0x49, - 0x7F, 0x71, 0x50, 0x69, 0xD6, 0x57, 0x27, 0x58, 0x64, 0xFD, 0x06, 0xB8, - 0x05, 0x5D, 0x74, 0xD0, 0x33, 0xFC, 0x5A, 0x34, 0x6F, 0x1E, 0xB3, 0x0E, - 0xFE, 0x6B, 0x27, 0xCE, 0x3A, 0x51, 0x2D, 0xF5, 0x48, 0x4C, 0x27, 0x36, - 0x26, 0x87, 0xE7, 0x3B, 0xB6, 0x64, 0x95, 0x5C, 0x73, 0x3D, 0xD4, 0x2C, - 0x4C, 0x03, 0x02, 0x9F, 0x0E, 0xBD, 0xF0, 0xA3, 0x4C, 0xE6, 0xC9, 0xE1, - 0xBE, 0x4C, 0x1A, 0xBD, 0xE8, 0x39, 0x75, 0xEC, 0xAA, 0x0A, 0x3D, 0xED, - 0x77, 0x57, 0x44, 0x92, 0xF3, 0xE6, 0x86, 0xFA, 0x11, 0x75, 0x7C, 0xA2, - 0x1A, 0xF3, 0x36, 0x95, 0xA5, 0xE4, 0xAB, 0x77, 0x8A, 0xA5, 0xCF, 0x72, - 0xAB, 0x7B, 0xBC, 0xB7, 0x4F, 0x9A, 0xB3, 0xD6, 0xE6, 0xA7, 0x76, 0x8E, - 0x44, 0xD3, 0x4B, 0x2D, 0xC7, 0xC9, 0xCA, 0x1C, 0xE4, 0x94, 0x86, 0x60, - 0xF9, 0x9E, 0xEC, 0xA9, 0xD8, 0x47, 0xF1, 0xAB, 0xD7, 0x08, 0x89, 0x63, - 0xA4, 0x1D, 0x6C, 0xC7, 0xCC, 0x62, 0xB5, 0xC6, 0x92, 0x1C, 0x12, 0x49, - 0x3E, 0x35, 0x01, 0x44, 0x64, 0x3F, 0xEC, 0x73, 0x79, 0x88, 0xC2, 0x57, - 0x34, 0x41, 0x49, 0x9D, 0xF6, 0xE9, 0x4D, 0xCC, 0xE1, 0x96, 0xCF, 0x21, - 0xA6, 0xFA, 0x9E, 0x1C, 0xDC, 0x6A, 0x0A, 0x97, 0x46, 0x9A, 0x4B, 0x97, - 0x7C, 0x24, 0x10, 0x85, 0x83, 0xE7, 0x17, 0x36, 0xB9, 0xE6, 0x5D, 0xA0, - 0x56, 0xAD, 0xBE, 0xB5, 0x8B, 0x30, 0xD0, 0xC0, 0x67, 0x0E, 0x7D, 0x85, - 0xD1, 0x8A, 0x3B, 0x9F, 0xF4, 0x63, 0x67, 0xC1, 0x37, 0xEC, 0xFF, 0x5F, - 0x61, 0x4A, 0x98, 0xDC, 0xF4, 0x01, 0x59, 0x5F, 0xBC, 0xF0, 0x7D, 0x3A, - 0xD3, 0x2F, 0x19, 0x4F, 0xB1, 0x85, 0x18, 0x3D, 0x4F, 0x99, 0xA0, 0x61, - 0x3B, 0x7C, 0x56, 0x56, 0x00, 0x5C, 0x4E, 0xD9, 0x49, 0x66, 0xDF, 0xF5, - 0x28, 0xA3, 0x83, 0x9E, 0xAA, 0xC7, 0x6D, 0xE1, 0xF6, 0xEB, 0x7D, 0x61, - 0xFF, 0xFA, 0xDC, 0x26, 0x46, 0x69, 0x66, 0x77, 0x2B, 0x68, 0xA9, 0x63, - 0xD0, 0x55, 0xA1, 0xFF, 0xFB, 0xC6, 0x87, 0xF1, 0x01, 0x83, 0x4D, 0x1D, - 0xD6, 0x26, 0x51, 0x36, 0x7F, 0x85, 0x73, 0xF7, 0x77, 0xD5, 0x03, 0xCF, - 0x76, 0x40, 0xA9, 0xDC, 0x7C, 0x03, 0xFE, 0x59, 0x8C, 0xF7, 0x93, 0x64, - 0x7A, 0x0E, 0xA3, 0xB6, 0x6B, 0xAD, 0xBD, 0xD3, 0xB0, 0x43, 0xC6, 0xCA, - 0x9D, 0x10, 0x04, 0x96, 0xB1, 0xCE, 0xEF, 0x1B, 0x8D, 0xE2, 0x67, 0x20, - 0x4F, 0x96, 0x2E, 0x6C, 0x6D, 0x21, 0xEC, 0x74, 0x0F, 0x23, 0xAE, 0x60, - 0x92, 0xB6, 0x19, 0x51, 0xFF, 0x96, 0xA9, 0xC5, 0xF1, 0x04, 0x50, 0x02, - 0xCE, 0xB1, 0x5E, 0x83, 0x06, 0x5C, 0x41, 0xB5, 0x2E, 0xBE, 0xDE, 0xB7, - 0x39, 0x4C, 0x22, 0xBB, 0x92, 0x4C, 0x74, 0x76, 0x9C, 0xDD, 0xE8, 0xF4, - 0xDF, 0xFF, 0xD3, 0x8F, 0x4D, 0xE8, 0xAF, 0xEA, 0xA1, 0xEC, 0x02, 0x32, - 0x37, 0xF0, 0xD5, 0xA4, 0x0A, 0x4C, 0x1C, 0x60, 0xE6, 0x95, 0x84, 0x9C, - 0xF8, 0xC0, 0x16, 0x7B, 0x88, 0xE6, 0x97, 0x82, 0x0C, 0x6A, 0xEC, 0xE5, - 0x8C, 0x9B, 0xFF, 0x96, 0x6D, 0xD5, 0x04, 0xE7, 0x59, 0xD0, 0xB0, 0xCE, - 0x6F, 0x9D, 0xBB, 0x7E, 0x09, 0x82, 0xDD, 0xC0, 0xE5, 0x37, 0xB9, 0x07, - 0xF0, 0x6E, 0xBA, 0x8C, 0x19, 0x77, 0xA4, 0x21, 0xCB, 0xE1, 0xFA, 0x14, - 0xC2, 0x68, 0xBF, 0x86, 0xC0, 0xEE, 0xB3, 0xED, 0x17, 0x8D, 0x99, 0x70, - 0x01, 0x61, 0xBF, 0x92, 0x18, 0xA9, 0x2C, 0xEE, 0x94, 0xB4, 0x88, 0x35, - 0x21, 0x56, 0xD1, 0x02, 0xA8, 0xC4, 0x12, 0x34, 0x69, 0x7E, 0x1A, 0xFC, - 0x64, 0x66, 0x32, 0x8E, 0xA4, 0x1C, 0xB9, 0xDD, 0x37, 0xF0, 0x52, 0xC6, - 0x76, 0x5A, 0xEA, 0x4F, 0x49, 0xD3, 0x1C, 0x83, 0x90, 0x96, 0x35, 0x67, - 0x65, 0x38, 0x86, 0xE2, 0x45, 0xA9, 0xC4, 0x07, 0x59, 0xAE, 0xCC, 0xD5, - 0xDD, 0x88, 0xDE, 0xF2, 0x52, 0xD9, 0x88, 0x02, 0x10, 0x13, 0x62, 0x8C, - 0x5A, 0x32, 0x76, 0x80, 0x31, 0xD0, 0xF2, 0x91, 0x22, 0x51, 0x26, 0x3C, - 0xD6, 0xA4, 0x1A, 0x61, 0x5A, 0xB2, 0x7D, 0xE7, 0xCD, 0x71, 0x0B, 0x28, - 0xB2, 0x3F, 0xA6, 0x38, 0xDC, 0xD9, 0x61, 0xD0, 0xE5, 0xC8, 0x0F, 0xF1, - 0xC9, 0x04, 0x09, 0x4A, 0x9F, 0x91, 0x7C, 0xEA, 0x88, 0x74, 0xC0, 0x32, - 0xB2, 0xCE, 0xBB, 0xA7, 0xE1, 0x95, 0x4E, 0xEF, 0xA0, 0x6F, 0xE0, 0x75, - 0xC3, 0x9F, 0x44, 0x02, 0xF1, 0x06, 0x0B, 0xFD, 0xC8, 0x11, 0x0B, 0xCB, - 0xCF, 0x19, 0xE1, 0x64, 0xDE, 0x8D, 0xEE, 0x97, 0x37, 0x48, 0x5F, 0xF6, - 0xE7, 0xCE, 0x5C, 0x7A, 0xB7, 0xC6, 0xAB, 0x4F, 0x9A, 0x33, 0x2C, 0xBF, - 0x7A, 0x2F, 0xEE, 0x28, 0x90, 0xD6, 0x6E, 0x8A, 0x6D, 0xE0, 0xDE, 0x0E, - 0x2B, 0x2B, 0xE1, 0x36, 0xBA, 0xD6, 0xE7, 0x1A, 0x3C, 0x2F, 0x34, 0xF3, - 0x39, 0xE2, 0x22, 0x33, 0x91, 0xEB, 0xFF, 0x1C, 0x00, 0x09, 0x82, 0xFE, - 0xAB, 0x1E, 0x1F, 0x40, 0x5E, 0x05, 0xF5, 0x6B, 0xCD, 0x52, 0xAB, 0xEA, - 0x52, 0x91, 0x23, 0x26, 0x91, 0x6F, 0xEF, 0xA3, 0x46, 0x70, 0xD9, 0x00, - 0x79, 0xE6, 0x06, 0x2F, 0x31, 0x2A, 0x35, 0x5F, 0x29, 0xDA, 0x7A, 0xF6, - 0xE2, 0x5B, 0xFA, 0x50, 0x5F, 0x27, 0xD9, 0x5E, 0x3D, 0x72, 0x2C, 0xE5, - 0x6F, 0x6C, 0xFA, 0x73, 0x2D, 0x5C, 0x02, 0xFF, 0x64, 0xF7, 0xBB, 0xC0, - 0x4D, 0x72, 0xCD, 0x3A, 0x68, 0xA8, 0xD0, 0xD4, 0xB4, 0x36, 0x25, 0x4D, - 0xD2, 0xF2, 0x72, 0x2E, 0x29, 0x6A, 0x5C, 0xAE, 0x53, 0x36, 0x26, 0x24, - 0x2D, 0x40, 0x7B, 0xE2, 0x95, 0xB1, 0x38, 0xCC, 0x98, 0xC3, 0xCA, 0xFD, - 0xD2, 0x14, 0x20, 0x67, 0x69, 0xFE, 0xA8, 0x3F, 0xE7, 0xA4, 0xF5, 0x12, - 0x72, 0x45, 0x35, 0x09, 0xFB, 0x41, 0x5E, 0xF7, 0x14, 0xC7, 0x6B, 0xF6, - 0x14, 0x1B, 0x3D, 0xB6, 0x30, 0xE2, 0x9E, 0xDA, 0xCE, 0x71, 0xF1, 0x7E, - 0xAB, 0xD6, 0xE3, 0xFE, 0x81, 0xFB, 0x0B, 0x46, 0xDB, 0x92, 0xBF, 0x0C, - 0x78, 0x48, 0x26, 0xD7, 0x06, 0xD2, 0x25, 0x24, 0x07, 0x94, 0xBD, 0x4B, - 0x1F, 0xC4, 0x97, 0x13, 0x45, 0xD3, 0x34, 0x7C, 0x6B, 0x6F, 0x2A, 0xD7, - 0x4B, 0x2C, 0xF3, 0x4D, 0x30, 0x8E, 0x6F, 0x08, 0x59, 0x23, 0xAD, 0x3C, - 0xE0, 0xF8, 0xF1, 0xC5, 0x6D, 0xF2, 0xB2, 0x8C, 0x1B, 0xB4, 0x0D, 0x06, - 0xAE, 0xBC, 0x9A, 0x26, 0xE8, 0x1B, 0xB1, 0x69, 0x57, 0xE9, 0x61, 0x9A, - 0xDF, 0xF2, 0xEA, 0x46, 0xC8, 0x1D, 0x49, 0xA1, 0x0F, 0x7A, 0x0D, 0xFC, - 0xC7, 0x45, 0xC5, 0x8B, 0xBC, 0xF7, 0x0B, 0x7E, 0x27, 0x60, 0x42, 0xD5, - 0x5C, 0x7F, 0x99, 0x77, 0x57, 0x3A, 0x9F, 0x7B, 0xC2, 0xE1, 0xDF, 0x96, - 0xD4, 0x70, 0x25, 0x5A, 0xBB, 0xC0, 0xEC, 0xB4, 0xC6, 0x93, 0x21, 0x29, - 0x96, 0xEC, 0x47, 0x41, 0x6C, 0xE3, 0x60, 0xFC, 0x40, 0x7F, 0x47, 0x1D, - 0x8A, 0x19, 0x2C, 0xE9, 0x10, 0x1B, 0x3B, 0x1A, 0x35, 0x29, 0xE4, 0xA6, - 0xBC, 0x6B, 0x35, 0x37, 0xF5, 0x39, 0xCD, 0x03, 0x4E, 0x9A, 0x88, 0xF8, - 0x88, 0xE1, 0x20, 0x6A, 0xA2, 0x77, 0xD0, 0xF0, 0x82, 0x3E, 0x23, 0x95, - 0x1C, 0x72, 0x06, 0xF6, 0x08, 0x0A, 0x79, 0x0C, 0x96, 0x0B, 0x6A, 0x19, - 0x13, 0x66, 0x3F, 0xA3, 0xC4, 0xBB, 0x63, 0x21, 0x8E, 0x83, 0xF9, 0x61, - 0x82, 0xC5, 0x0E, 0x47, 0x79, 0x9C, 0x09, 0x7C, 0xD2, 0xEE, 0x52, 0x06, - 0xDA, 0xAF, 0x4A, 0x69, 0xAA, 0x8C, 0xA1, 0x74, 0x33, 0x7E, 0x58, 0x0A, - 0x5C, 0xA9, 0x08, 0x8A, 0x9F, 0x89, 0x3D, 0x72, 0xC4, 0x6B, 0x26, 0xED, - 0xCB, 0x46, 0xFA, 0x0A, 0x5C, 0x6E, 0x3C, 0x66, 0x36, 0xC7, 0x5B, 0xEF, - 0xCE, 0x59, 0x9F, 0xF1, 0x41, 0xED, 0xA5, 0x70, 0x97, 0xF4, 0xD7, 0xB5, - 0x56, 0xFC, 0xBC, 0x50, 0xB6, 0xB4, 0x61, 0xED, 0x8E, 0x5E, 0xF0, 0x50, - 0xF0, 0x96, 0xF7, 0x81, 0xAD, 0xE2, 0x8C, 0xA7, 0xB8, 0xC7, 0x17, 0xD5, - 0x0C, 0x80, 0xB7, 0x7B, 0xA4, 0xD9, 0x89, 0x04, 0xF2, 0x7B, 0xF8, 0x89, - 0x8F, 0x58, 0x8B, 0x88, 0xEF, 0x6E, 0x9A, 0xCB, 0x67, 0xBA, 0x32, 0xA7, - 0x68, 0x92, 0x0A, 0xD7, 0xC9, 0xB9, 0x8B, 0xE6, 0x44, 0x0C, 0x38, 0x39, - 0x14, 0xBF, 0x0C, 0xE4, 0x68, 0x13, 0xB2, 0x2A, 0x0D, 0x2E, 0xA8, 0x53, - 0x46, 0x3D, 0xF5, 0xC6, 0x67, 0x8B, 0x2C, 0x50, 0x94, 0xD5, 0x4A, 0xB3, - 0xDA, 0xB0, 0x1F, 0xDD, 0x17, 0xED, 0xF9, 0xF5, 0xDB, 0x1F, 0x96, 0x33, - 0xE9, 0x81, 0x28, 0x86, 0x04, 0xAA, 0x0E, 0xEF, 0x8B, 0x6D, 0xE0, 0xA2, - 0x26, 0x34, 0xFF, 0x6D, 0xFE, 0x57, 0xB1, 0x0A, 0xE7, 0xE5, 0x7D, 0xD4, - 0x13, 0xEF, 0xC8, 0xDC, 0xFE, 0xFA, 0x0A, 0xF7, 0x34, 0x75, 0x37, 0xDC, - 0xA3, 0x96, 0xDA, 0x18, 0x75, 0xA3, 0x2D, 0x93, 0xD4, 0x2F, 0xD7, 0xDE, - 0x4B, 0xA2, 0x9C, 0x6A, 0x15, 0x36, 0xC5, 0x1F, 0x69, 0x82, 0x0C, 0x65, - 0x8C, 0x5E, 0x96, 0x07, 0xF7, 0x5D, 0x7B, 0x22, 0x7C, 0xAB, 0x0D, 0x91, - 0xD7, 0xAC, 0xB4, 0x9F, 0x46, 0x82, 0x81, 0xF8, 0xCC, 0xA6, 0x88, 0x6D, - 0xEA, 0x36, 0xB3, 0x0B, 0xA7, 0xC8, 0xB6, 0xBD, 0xC8, 0x74, 0x26, 0x09, - 0x57, 0xE4, 0xBD, 0x39, 0x86, 0xD9, 0xED, 0x2A, 0xA9, 0x77, 0x6B, 0xD3, - 0x77, 0xF9, 0x92, 0xEB, 0x1C, 0xF1, 0xB8, 0x97, 0xBD, 0x8E, 0xCB, 0xCB, - 0xF7, 0x1A, 0xBC, 0x12, 0x98, 0x79, 0x56, 0xD4, 0x0D, 0x31, 0xDE, 0xBF, - 0xB9, 0x12, 0x82, 0xA2, 0x69, 0x7A, 0x55, 0x23, 0x73, 0xF6, 0xF8, 0xA6, - 0x12, 0xCC, 0x51, 0x65, 0xD4, 0x00, 0xDF, 0x46, 0xA0, 0x37, 0xB8, 0x1C, - 0x39, 0xD8, 0x73, 0x66, 0xCB, 0x5F, 0xAE, 0x69, 0x3D, 0xFF, 0x9B, 0x13, - 0x33, 0xCF, 0xE0, 0x15, 0xD6, 0x78, 0x6B, 0xF1, 0x0F, 0x77, 0xEF, 0x33, - 0x64, 0x1C, 0xD8, 0x60, 0x2A, 0xC6, 0x62, 0xFB, 0xC9, 0x84, 0x10, 0xC2, - 0x76, 0x24, 0x4C, 0x6F, 0xAF, 0x23, 0x68, 0x3C, 0x71, 0xB1, 0x80, 0x71, - 0x0C, 0x86, 0xE0, 0x15, 0xBF, 0xC0, 0xAA, 0xB0, 0x18, 0x61, 0x48, 0x93, - 0xFD, 0xAD, 0xC8, 0xC4, 0x23, 0x18, 0x87, 0x21, 0x10, 0x55, 0x7A, 0x35, - 0xCC, 0x08, 0xBE, 0x2E, 0xE2, 0xA5, 0x99, 0xAB, 0x55, 0x90, 0x42, 0x19, - 0x6E, 0x62, 0x79, 0x4A, 0xE5, 0xE3, 0x70, 0xED, 0x91, 0x3F, 0x85, 0x02, - 0xB4, 0x0B, 0xF4, 0x84, 0x89, 0x6D, 0x95, 0xA4, 0x2A, 0x8A, 0x9E, 0x53, - 0xCE, 0x5D, 0xCA, 0xE7, 0x58, 0xB2, 0xB0, 0x40, 0x15, 0x5B, 0xA8, 0x79, - 0x02, 0xB5, 0x0F, 0xCA, 0x19, 0x8A, 0x3F, 0x2B, 0xA4, 0xE8, 0x66, 0x1D, - 0x70, 0x95, 0xF7, 0xE7, 0x4B, 0x1B, 0x37, 0x18, 0xFB, 0x4F, 0xEF, 0x93, - 0xDE, 0xCB, 0x2F, 0x5E, 0xD3, 0xA4, 0x56, 0x95, 0xA7, 0x0F, 0x89, 0xB8, - 0xE2, 0xC5, 0x35, 0xE0, 0x88, 0xD4, 0x30, 0x05, 0x56, 0xCC, 0x9F, 0x6B, - 0x58, 0xA3, 0x12, 0x98, 0x91, 0x99, 0xD8, 0x9B, 0x10, 0xFA, 0xF5, 0x58, - 0xD6, 0xD1, 0x7A, 0xBF, 0x16, 0x6E, 0x45, 0x74, 0xF1, 0x7A, 0xC5, 0x08, - 0x35, 0x5E, 0xB2, 0x89, 0x93, 0xFA, 0x30, 0xE0, 0x13, 0x94, 0xA1, 0x45, - 0xDF, 0x24, 0x59, 0x3B, 0xE7, 0xBA, 0x15, 0x5E, 0x32, 0x49, 0x37, 0x25, - 0xC2, 0x32, 0x07, 0x05, 0x5D, 0x35, 0x9C, 0x8E, 0x8A, 0x53, 0x56, 0xF7, - 0x53, 0xCD, 0xE5, 0x9D, 0xEF, 0x1E, 0x49, 0xC3, 0x24, 0x67, 0x96, 0x1C, - 0x94, 0xDF, 0x8F, 0x98, 0x1F, 0x8A, 0xF6, 0x8E, 0x8F, 0xED, 0xFD, 0xEE, - 0x4E, 0xBC, 0x00, 0xE8, 0x95, 0x53, 0xEF, 0x11, 0xD6, 0x65, 0xD0, 0x52, - 0xDC, 0x08, 0x7C, 0xB0, 0x32, 0x01, 0xBF, 0xB3, 0x1D, 0x0F, 0x62, 0x32, - 0xA3, 0x7D, 0x18, 0x9E, 0x9E, 0x19, 0x9B, 0xF6, 0x68, 0xFF, 0x63, 0xB3, - 0x97, 0x61, 0xD6, 0x31, 0xFF, 0x42, 0x7A, 0xE8, 0xCA, 0x87, 0xFA, 0xD7, - 0xF0, 0x6C, 0x3C, 0x13, 0x6B, 0x3E, 0x31, 0x10, 0xA9, 0x55, 0x46, 0x64, - 0xAA, 0xF6, 0xA0, 0x3A, 0x16, 0x28, 0xBE, 0x71, 0xDE, 0xE0, 0x44, 0x78, - 0x5B, 0xE6, 0xF6, 0xAB, 0x2F, 0x9B, 0xE7, 0x61, 0x0A, 0xA4, 0x04, 0x2D, - 0xFD, 0xFB, 0x2E, 0x5D, 0xD7, 0x36, 0xC8, 0x30, 0xA8, 0x93, 0xD8, 0x17, - 0x4F, 0x8F, 0x4D, 0x8C, 0x98, 0x57, 0x8C, 0x6F, 0x46, 0x57, 0xA0, 0x4A, - 0x1A, 0xDB, 0xE7, 0x3F, 0x96, 0xC7, 0x56, 0x41, 0x0D, 0x55, 0x5B, 0x3F, - 0x67, 0xD2, 0xAB, 0xEC, 0x4A, 0x66, 0x67, 0x9A, 0xF2, 0x2D, 0x63, 0xC4, - 0xB6, 0x50, 0x86, 0xB7, 0x70, 0xAA, 0x19, 0x05, 0x9A, 0xA5, 0x3E, 0x7B, - 0x89, 0x64, 0xF9, 0x97, 0x0C, 0xDB, 0x3D, 0x99, 0x92, 0xF0, 0x9A, 0x5C, - 0x63, 0x46, 0x6E, 0x57, 0x15, 0xF2, 0xC1, 0x24, 0x09, 0xB0, 0x94, 0xB6, - 0x22, 0xA0, 0x23, 0x32, 0x53, 0x9B, 0x24, 0x4B, 0xC7, 0x83, 0x6D, 0xA9, - 0xDB, 0x1E, 0x1A, 0xBD, 0x56, 0xB7, 0x13, 0xD8, 0x92, 0x2E, 0x0C, 0x17, - 0xA5, 0xEF, 0x4B, 0x53, 0x36, 0xC9, 0xC4, 0xE8, 0xFA, 0x4D, 0xD8, 0xA1, - 0x81, 0xE5, 0x9C, 0xE8, 0x65, 0x62, 0xEF, 0x65, 0xA6, 0xA9, 0x1C, 0xBA, - 0x33, 0xE2, 0x3F, 0xE7, 0xB7, 0xD6, 0x1A, 0x07, 0xBE, 0x5D, 0xF6, 0x5C, - 0x3E, 0xC4, 0x40, 0xF7, 0x3F, 0x8A, 0xE0, 0x77, 0xC0, 0x61, 0x73, 0x86, - 0x26, 0x2D, 0x71, 0x54, 0x51, 0xE5, 0x57, 0x5E, 0xB7, 0x46, 0x57, 0x2A, - 0xD3, 0x22, 0x90, 0x2E, 0x3E, 0x75, 0xF8, 0x87, 0xB1, 0xD2, 0x29, 0xC2, - 0xDD, 0x93, 0x94, 0xD2, 0x5E, 0xAC, 0xCC, 0x90, 0xD2, 0xD8, 0x2E, 0xD3, - 0x9B, 0xE5, 0x10, 0x5B, 0xE5, 0x7F, 0x8E, 0x34, 0x64, 0x97, 0xB9, 0xA0, - 0x7E, 0xD9, 0x0E, 0x7F, 0xB4, 0x6B, 0x0C, 0xE7, 0x31, 0xA4, 0x35, 0x46, - 0x82, 0x7B, 0xDB, 0x6F, 0x0C, 0x7D, 0xE7, 0x21, 0x37, 0x10, 0x54, 0x03, - 0x0E, 0x83, 0x77, 0xCB, 0xD9, 0xBB, 0x23, 0x87, 0xF3, 0xA0, 0x68, 0x06, - 0x67, 0xF0, 0x0A, 0x6B, 0xE5, 0x98, 0x05, 0x06, 0xB1, 0xDC, 0xB7, 0xE8, - 0xDC, 0x7B, 0x2D, 0x9A, 0xF7, 0x1E, 0x53, 0xBE, 0xBB, 0x9D, 0x90, 0xD0, - 0x80, 0xA3, 0x02, 0x53, 0xDD, 0x3B, 0x97, 0xF2, 0xC9, 0x1A, 0x5A, 0xAB, - 0x9F, 0x53, 0xFB, 0xED, 0x1C, 0x44, 0xEA, 0x13, 0xE6, 0xFF, 0x03, 0xB1, - 0xAB, 0x21, 0x94, 0x7A, 0x58, 0x5F, 0x2E, 0x0C, 0xFF, 0xC1, 0x6A, 0xA8, - 0xD6, 0xE3, 0x11, 0xC6, 0x9C, 0x88, 0xE5, 0xEB, 0x90, 0x50, 0x6F, 0x34, - 0x59, 0x63, 0xD6, 0xAC, 0xFB, 0x1C, 0x70, 0xEC, 0x7E, 0x50, 0xA6, 0xD3, - 0x7E, 0xF5, 0x98, 0x4B, 0x26, 0xEE, 0x0B, 0xB4, 0x04, 0xF6, 0x72, 0x77, - 0x4A, 0x72, 0x70, 0xE3, 0x8B, 0xE2, 0x55, 0xD2, 0x31, 0x39, 0xF8, 0xB6, - 0x8D, 0x97, 0x57, 0x54, 0xAE, 0x02, 0xC8, 0x00, 0x65, 0x49, 0xF7, 0xF2, - 0x88, 0xD1, 0x07, 0x46, 0x58, 0x7A, 0x52, 0x66, 0x32, 0xE4, 0xF4, 0x4B, - 0xD8, 0xFA, 0xFB, 0x1D, 0xF5, 0xAF, 0x61, 0x60, 0x52, 0x4D, 0x87, 0xC3, - 0xBB, 0x71, 0x60, 0x42, 0x1D, 0xA3, 0x8C, 0x59, 0xF3, 0x48, 0xB7, 0x9D, - 0x7E, 0xE3, 0xC5, 0x91, 0x20, 0xDE, 0x82, 0xFD, 0xA3, 0xDE, 0xFF, 0x0B, - 0x12, 0x6C, 0x9A, 0xD4, 0x37, 0x97, 0xA1, 0x10, 0x2C, 0x1A, 0x84, 0x1A, - 0x65, 0xE0, 0xBB, 0xED, 0x31, 0xD9, 0x9E, 0x63, 0x48, 0x3F, 0x73, 0xCD, - 0x9D, 0x9C, 0x1A, 0x89, 0x01, 0x89, 0x95, 0xA0, 0x01, 0xFF, 0x15, 0x2E, - 0xFD, 0x5B, 0xB7, 0x56, 0x54, 0x9B, 0x1A, 0xD9, 0xD8, 0x6B, 0x4D, 0x2B, - 0xEE, 0x65, 0x82, 0xF4, 0x18, 0xC0, 0x8F, 0x92, 0x0F, 0xA9, 0x85, 0x36, - 0xE0, 0xFF, 0x5C, 0x67, 0xBC, 0x1C, 0x4C, 0x04, 0x00, 0x1A, 0xFF, 0x33, - 0xF3, 0x3C, 0xB9, 0x01, 0x85, 0xF5, 0x9C, 0x42, 0x48, 0x98, 0xD1, 0x1C, - 0x12, 0x12, 0x36, 0x69, 0x9F, 0x00, 0x9D, 0x91, 0x55, 0xF2, 0x3B, 0x3C, - 0x65, 0x1F, 0x08, 0x56, 0x48, 0x57, 0x6B, 0xE3, 0x88, 0xED, 0x2A, 0x13, - 0x48, 0xC4, 0x2C, 0xD5, 0x46, 0x54, 0x8A, 0xBC, 0x1C, 0x4B, 0xCF, 0x27, - 0x88, 0xC9, 0x74, 0xCF, 0xD5, 0x82, 0x76, 0x57, 0x76, 0x83, 0x2C, 0xA6, - 0x4E, 0xD6, 0xEB, 0xD0, 0xEB, 0x8C, 0x0D, 0x04, 0xD6, 0xAD, 0x88, 0xE3, - 0x7C, 0x3C, 0x9C, 0xB1, 0xCA, 0x4E, 0xEF, 0x8A, 0x57, 0x3B, 0x6C, 0x68, - 0x2C, 0xEE, 0xA9, 0xEA, 0x71, 0xBB, 0x84, 0x2A, 0xCF, 0x68, 0xBE, 0x7F, - 0x16, 0x77, 0x4A, 0x6D, 0x2F, 0x9B, 0x23, 0xA7, 0x65, 0x1D, 0x3A, 0x43, - 0xE1, 0xEA, 0xF8, 0x0B, 0x4E, 0xA7, 0x6A, 0x9C, 0x68, 0x65, 0x80, 0x34, - 0xBF, 0x92, 0x35, 0x52, 0x47, 0xA3, 0xD1, 0x19, 0x54, 0xD4, 0x61, 0xB2, - 0x59, 0xCB, 0x98, 0x01, 0x2A, 0x03, 0xA3, 0x26, 0x13, 0xF4, 0x8D, 0x2E, - 0xA5, 0xF5, 0x89, 0xA1, 0x27, 0x5F, 0x08, 0x9E, 0xDF, 0x24, 0xB6, 0x1F, - 0x88, 0x0F, 0xA9, 0xA7, 0x3F, 0x8B, 0x14, 0xD6, 0xAE, 0x50, 0x43, 0x73, - 0x7F, 0xE5, 0x47, 0xFA, 0xF6, 0xA8, 0xC6, 0x85, 0x03, 0x20, 0x5C, 0x91, - 0x13, 0xB4, 0xDF, 0xD0, 0xDE, 0xD5, 0xA3, 0x7A, 0x6F, 0x85, 0xE4, 0x92, - 0x9B, 0xED, 0x3D, 0xE9, 0x03, 0x08, 0x45, 0x21, 0x12, 0x0E, 0x5A, 0xEB, - 0x12, 0xDF, 0x07, 0x71, 0xD4, 0x96, 0x06, 0x0A, 0xCA, 0xA5, 0x2D, 0x7C, - 0x6D, 0xC8, 0x23, 0xAD, 0xB9, 0x7C, 0xCB, 0x0A, 0xEA, 0x29, 0x77, 0x8C, - 0x5E, 0x9D, 0xE2, 0x64, 0xFE, 0x41, 0x89, 0x3A, 0xEA, 0x26, 0x6F, 0x2C, - 0x1C, 0x73, 0x72, 0x9A, 0xA7, 0x46, 0x69, 0xC6, 0x4D, 0x0B, 0x7F, 0x30, - 0x33, 0x1C, 0x73, 0x8D, 0x46, 0xC0, 0xA2, 0xD6, 0x4C, 0x8E, 0x99, 0xB2, - 0x0D, 0xC8, 0xD6, 0x41, 0x05, 0xAE, 0x29, 0xB2, 0xEE, 0x1C, 0x58, 0x2E, - 0xBB, 0xE3, 0xC1, 0x79, 0x40, 0x3F, 0xA7, 0x15, 0xC9, 0xBB, 0xA7, 0xE4, - 0xAF, 0x7E, 0xB3, 0x43, 0x5F, 0xF8, 0xD0, 0x78, 0x01, 0x68, 0x46, 0xFA, - 0x82, 0x03, 0x77, 0x72, 0x21, 0x9A, 0x51, 0x1D, 0x5D, 0xB5, 0xC5, 0x29, - 0x5D, 0x75, 0xC6, 0x3B, 0x6B, 0x68, 0x7B, 0x6F, 0xF3, 0xD2, 0x9D, 0xE4, - 0x8E, 0x69, 0xA2, 0x63, 0x8B, 0xEE, 0xFF, 0xB5, 0x1A, 0xBF, 0xFE, 0xFD, - 0x59, 0x18, 0x4D, 0xFC, 0x86, 0xEB, 0x9A, 0xBF, 0x52, 0xC7, 0x4B, 0x77, - 0x15, 0x2A, 0xF7, 0x20, 0x37, 0xFE, 0x70, 0x43, 0xE7, 0x26, 0x91, 0xC9, - 0xF8, 0x17, 0xA3, 0x96, 0xAD, 0x52, 0xFC, 0x42, 0xCB, 0x0D, 0x2D, 0x16, - 0xC7, 0x23, 0xE2, 0x1A, 0x54, 0x8D, 0xF1, 0xAD, 0x1F, 0xAB, 0x7A, 0x10, - 0x72, 0x2D, 0x3A, 0xD6, 0xF4, 0x93, 0x50, 0x5F, 0xF0, 0x90, 0xD0, 0x5D, - 0xE6, 0xC7, 0x8C, 0x22, 0xA8, 0xAE, 0x9A, 0x87, 0x35, 0x4D, 0x1D, 0x66, - 0x2C, 0x2C, 0x4C, 0x6F, 0x8F, 0x6B, 0x10, 0xE9, 0x66, 0xB2, 0xA6, 0xE9, - 0x92, 0xCF, 0xC7, 0x6A, 0x87, 0xA3, 0x5F, 0x13, 0x1A, 0x36, 0x69, 0x6A, - 0x94, 0xA4, 0xCA, 0xB8, 0xB2, 0xD1, 0xFC, 0x97, 0x62, 0x14, 0x50, 0x2B, - 0xD6, 0xEA, 0x9B, 0xDC, 0xE2, 0xD6, 0xC9, 0x17, 0x7B, 0xD7, 0xAF, 0x0E, - 0x62, 0x66, 0x5E, 0x67, 0x58, 0xE4, 0x09, 0x68, 0x63, 0x26, 0xF0, 0x23, - 0x3A, 0x18, 0xAE, 0x4E, 0xAE, 0x03, 0x6D, 0xA0, 0xBA, 0xB4, 0xE5, 0x20, - 0x0B, 0x8B, 0xB0, 0x0E, 0xC1, 0x09, 0x5F, 0xAA, 0xD7, 0x2B, 0xD2, 0x3E, - 0xCD, 0xE6, 0xBE, 0xFE, 0x11, 0x11, 0x4B, 0x55, 0x01, 0xEF, 0x0C, 0xFF, - 0xF4, 0x4A, 0xBC, 0x87, 0x0F, 0x76, 0x73, 0x5E, 0xCD, 0x4B, 0x3D, 0xA9, - 0xAF, 0x3E, 0x96, 0x8D, 0x49, 0xDC, 0x16, 0x18, 0x76, 0x8C, 0x93, 0xB2, - 0x6F, 0x72, 0x8F, 0xE0, 0xBD, 0xF5, 0xFA, 0x01, 0xEF, 0x2F, 0x47, 0xD9, - 0x6C, 0xAE, 0xE2, 0x37, 0xA2, 0x45, 0x1F, 0xFB, 0xA2, 0xB4, 0xAF, 0x74, - 0xFC, 0xE3, 0x6A, 0xC8, 0x4C, 0x9E, 0xAA, 0xFE, 0x86, 0x23, 0xE7, 0xFD, - 0x51, 0x32, 0x25, 0xAE, 0x57, 0xAB, 0xE2, 0x44, 0xEE, 0x6A, 0x1B, 0x61, - 0x0F, 0x0E, 0x8C, 0xA0, 0x87, 0x1B, 0x5F, 0x66, 0x2E, 0x97, 0x11, 0x29, - 0xBD, 0x7D, 0xD9, 0x40, 0x92, 0x7B, 0xF8, 0x1D, 0xCB, 0x97, 0xE8, 0x7B, - 0xE8, 0x5C, 0x07, 0x61, 0x19, 0xD6, 0xEE, 0x99, 0xD1, 0xBE, 0x36, 0x1F, - 0x42, 0xF7, 0x33, 0x94, 0x01, 0xA4, 0xE0, 0x0C, 0x99, 0x1F, 0x21, 0x31, - 0x5A, 0xF9, 0xA1, 0x98, 0xFD, 0x85, 0x44, 0xBB, 0x82, 0xB7, 0x9D, 0xE9, - 0x4F, 0x4A, 0xD9, 0xBC, 0x8D, 0xDD, 0x2E, 0xF6, 0x75, 0x38, 0xC0, 0x12, - 0x36, 0xA8, 0x1F, 0x57, 0x37, 0x9F, 0x64, 0xB3, 0xF3, 0xFA, 0x5B, 0xA9, - 0x81, 0x8B, 0x5E, 0x25, 0x34, 0x38, 0x28, 0x74, 0x4E, 0x58, 0xA1, 0x6C, - 0xC2, 0x57, 0x58, 0x40, 0x22, 0x3E, 0xE8, 0x48, 0xBA, 0x6F, 0x4F, 0xC9, - 0xC5, 0x06, 0x4D, 0x12, 0xDC, 0x48, 0x68, 0xDB, 0xC2, 0x6A, 0x20, 0xA2, - 0x99, 0x4E, 0x08, 0x05, 0xB2, 0x8E, 0xB1, 0x61, 0x2E, 0x25, 0x67, 0x27, - 0x69, 0xB9, 0x04, 0xDB, 0x3A, 0x73, 0xEC, 0xA0, 0xB7, 0x73, 0x88, 0x7E, - 0x25, 0x4B, 0x33, 0x3B, 0xAC, 0x7F, 0x11, 0x12, 0x3A, 0x49, 0xB5, 0x3A, - 0x36, 0x39, 0xD3, 0xCA, 0x02, 0xA0, 0xE4, 0xD8, 0x12, 0x5C, 0x98, 0x29, - 0x57, 0x69, 0x39, 0x8E, 0x35, 0x12, 0x07, 0x83, 0xFE, 0x77, 0xD8, 0x30, - 0xB4, 0x34, 0xD2, 0xE6, 0xB1, 0x9A, 0xFF, 0xAC, 0xFC, 0x0D, 0x3B, 0x8A, - 0x18, 0x1F, 0xF4, 0xE8, 0xBF, 0xE8, 0xE4, 0x26, 0xE5, 0x07, 0xB0, 0xB2, - 0x2B, 0xCB, 0x14, 0xFA, 0x53, 0x39, 0x64, 0x43, 0xCB, 0x3D, 0xFC, 0x61, - 0x90, 0x3A, 0xF6, 0xE8, 0x7B, 0x13, 0xCD, 0x6E, 0xA9, 0xA5, 0x66, 0xD0, - 0x9E, 0xE2, 0x50, 0xC6, 0xCF, 0xFC, 0x03, 0xB1, 0xD5, 0x7D, 0x0A, 0x62, - 0x7F, 0xE2, 0x3D, 0x9F, 0x0F, 0x9F, 0x29, 0x99, 0x65, 0x13, 0x69, 0xF2, - 0x85, 0x58, 0x07, 0x1D, 0x00, 0x66, 0x9D, 0x4B, 0xA8, 0xC9, 0x07, 0x1A, - 0x8F, 0x3E, 0xD7, 0x81, 0xA6, 0xDB, 0xE9, 0x32, 0xB3, 0xD4, 0x29, 0x6D, - 0xB8, 0xBA, 0x41, 0x0F, 0x51, 0xCB, 0x50, 0x74, 0x48, 0x07, 0x97, 0x27, - 0xC9, 0x23, 0x3C, 0xBD, 0x5B, 0x0F, 0x46, 0x04, 0x38, 0xB5, 0xC0, 0xB6, - 0x20, 0x03, 0xFA, 0x56, 0x52, 0x9E, 0x27, 0xAC, 0xF1, 0xE7, 0x32, 0x25, - 0x72, 0xFC, 0xAB, 0xE5, 0x1F, 0xF0, 0x55, 0x7D, 0xED, 0xB8, 0x28, 0x96, - 0x47, 0xED, 0x86, 0x45, 0xC9, 0xBA, 0xD1, 0xF6, 0xFA, 0xFC, 0xC6, 0xF6, - 0x67, 0x45, 0xC4, 0xA9, 0x25, 0xDE, 0xC7, 0x3F, 0x8A, 0xD8, 0x31, 0x3C, - 0xB6, 0xE4, 0x0D, 0x7B, 0xBE, 0x89, 0x5A, 0x69, 0x80, 0xEB, 0x62, 0xDE, - 0xAF, 0x02, 0x6E, 0xD1, 0x4B, 0x2C, 0x7B, 0xCD, 0x4D, 0xF1, 0xDF, 0x58, - 0x82, 0xD0, 0xE6, 0x6F, 0xB7, 0x45, 0x8E, 0xDF, 0xE6, 0x30, 0x84, 0xC4, - 0x5D, 0x26, 0xC0, 0x4C, 0x39, 0xC5, 0x2C, 0x99, 0x34, 0x13, 0xF5, 0x32, - 0xA3, 0xEE, 0xCF, 0x54, 0x5C, 0x58, 0x2B, 0x5D, 0x54, 0xEF, 0xFA, 0x11, - 0xC4, 0xBB, 0x1F, 0x34, 0x7C, 0xE6, 0x2F, 0xE4, 0xA9, 0xD3, 0x95, 0x8B, - 0x58, 0xC7, 0xB5, 0xE2, 0x27, 0xCE, 0xF0, 0xF8, 0xD1, 0x9E, 0x0F, 0x88, - 0x93, 0x3D, 0x90, 0x0D, 0x15, 0x9A, 0xC3, 0xEA, 0x91, 0xF5, 0xF6, 0xE4, - 0x3E, 0x89, 0x01, 0x8A, 0x4E, 0x6F, 0xE3, 0x21, 0xB1, 0x93, 0x04, 0x36, - 0x30, 0x22, 0x7B, 0x92, 0x7F, 0xCF, 0x06, 0x6B, 0xA5, 0x60, 0x8E, 0x15, - 0x77, 0x8F, 0x7E, 0x9E, 0xB1, 0xE6, 0xFA, 0x30, 0x4D, 0xD1, 0xC7, 0x20, - 0xEA, 0xAF, 0xD5, 0xB2, 0x58, 0xD3, 0xAA, 0x74, 0xBC, 0xDD, 0x10, 0x6F, - 0x54, 0xFF, 0x15, 0xD4, 0xB0, 0x20, 0xD5, 0xDC, 0xF3, 0x89, 0x28, 0x04, - 0x4C, 0x69, 0x7E, 0xE9, 0xBF, 0xE5, 0x83, 0x33, 0x81, 0x69, 0xE4, 0xB8, - 0x46, 0xD8, 0x26, 0x24, 0x51, 0xEE, 0x5B, 0x1D, 0x8E, 0xA0, 0x2B, 0xA2, - 0xD6, 0x6B, 0x4C, 0x7F, 0xA3, 0xDA, 0xDF, 0x64, 0x4B, 0x79, 0xF8, 0xEA, - 0x0D, 0x53, 0x20, 0xB6, 0x67, 0xE4, 0x9F, 0xB5, 0xB6, 0x63, 0x1D, 0x6E, - 0xDA, 0x91, 0x1C, 0x9C, 0xE1, 0x96, 0x0D, 0x67, 0xD4, 0xFE, 0xE9, 0x80, - 0xEA, 0x43, 0xF3, 0x6C, 0x7F, 0x9D, 0x1E, 0xCB, 0x9A, 0xB0, 0x29, 0x60, - 0x68, 0x8C, 0xB9, 0x1B, 0x23, 0x8E, 0x87, 0xBD, 0x27, 0x1A, 0x93, 0xCB, - 0xD5, 0x3B, 0x8F, 0x9B, 0xF7, 0x5F, 0xF8, 0x5D, 0xA0, 0x90, 0xC8, 0xEC, - 0xDB, 0x2E, 0xCC, 0xBB, 0xDA, 0x4A, 0x8E, 0x7E, 0xD9, 0x80, 0xC9, 0x7C, - 0xEA, 0x17, 0x31, 0x51, 0x0E, 0xB0, 0x3E, 0xC2, 0x45, 0x40, 0x70, 0x7B, - 0xA4, 0x1B, 0x26, 0x9C, 0xC4, 0x35, 0x38, 0x24, 0x21, 0x6A, 0x33, 0x57, - 0x10, 0x7B, 0xE1, 0x00, 0x51, 0x24, 0x22, 0x46, 0xC1, 0x95, 0x0F, 0x9C, - 0xC1, 0x38, 0x48, 0xD5, 0x19, 0x09, 0x75, 0xBA, 0x85, 0x8A, 0x7B, 0x55, - 0xD5, 0x8C, 0xD3, 0x51, 0x4D, 0x9B, 0x49, 0xCD, 0xA4, 0xCB, 0x14, 0x11, - 0xBF, 0x78, 0x52, 0xB1, 0x58, 0x28, 0x50, 0x9B, 0x81, 0x9C, 0xB4, 0x6D, - 0xD1, 0xE4, 0x67, 0xED, 0x13, 0x47, 0xE9, 0xC4, 0xDE, 0xB2, 0xC2, 0x38, - 0x06, 0x58, 0x40, 0x20, 0x85, 0x80, 0x81, 0xF2, 0x7A, 0xCF, 0xFC, 0x22, - 0x31, 0x27, 0x31, 0x0A, 0x3C, 0xF5, 0xAE, 0xBE, 0x8D, 0xDD, 0x94, 0x80, - 0x25, 0x73, 0xC5, 0xFD, 0xEB, 0xFA, 0x0C, 0xA8, 0x25, 0x2D, 0xD5, 0x48, - 0xF3, 0x48, 0x59, 0x84, 0x4C, 0x71, 0x8D, 0x28, 0xA1, 0x7A, 0x19, 0xF7, - 0x45, 0xAA, 0x83, 0x15, 0xEA, 0x40, 0x8F, 0x0F, 0x90, 0xEF, 0x1F, 0x4E, - 0x81, 0xAB, 0xEB, 0x03, 0x4F, 0xD4, 0x59, 0xC5, 0xFB, 0x1E, 0xFA, 0x3E, - 0x44, 0xB5, 0x48, 0xE2, 0x71, 0x88, 0x18, 0xF3, 0x73, 0x5F, 0xF3, 0x9B, - 0x7B, 0xBF, 0x18, 0x17, 0xEB, 0x48, 0x5A, 0x5C, 0xCE, 0x54, 0xDA, 0x84, - 0xE8, 0xDC, 0x9C, 0x03, 0xC1, 0xD6, 0x70, 0xBF, 0x5F, 0x3F, 0xC2, 0x3E, - 0x05, 0x73, 0x82, 0x2C, 0xB0, 0x19, 0xCF, 0xDC, 0x7D, 0xD8, 0xF4, 0x27, - 0x1B, 0xBE, 0x28, 0x9A, 0x0C, 0x22, 0x90, 0x94, 0x60, 0x5A, 0x30, 0x1A, - 0xBA, 0xD3, 0x2D, 0xEE, 0xFF, 0x1A, 0x7A, 0x4C, 0xC9, 0x7C, 0xB4, 0x4C, - 0xB1, 0x88, 0xB9, 0xF9, 0xFC, 0xE7, 0x62, 0x0F, 0x54, 0xBC, 0x7A, 0x4E, - 0xA6, 0xC6, 0x73, 0xE2, 0x4D, 0x49, 0x59, 0x8B, 0x2A, 0x69, 0x0A, 0x62, - 0x1D, 0xA4, 0x6B, 0x9C, 0x90, 0x80, 0x82, 0x02, 0x29, 0xBD, 0xF4, 0x04, - 0x3A, 0x52, 0x27, 0x85, 0x16, 0x81, 0xB5, 0xB9, 0x4E, 0xB5, 0xA4, 0xD7, - 0x3B, 0x22, 0x02, 0x71, 0x87, 0xF5, 0x42, 0x8D, 0x95, 0x13, 0xF2, 0xB5, - 0xD2, 0xDE, 0xC6, 0xC4, 0xD8, 0xB9, 0x09, 0x3D, 0x89, 0x7E, 0xFD, 0x71, - 0x96, 0x0B, 0x2C, 0xBF, 0xD2, 0xDC, 0x12, 0xE3, 0xE8, 0xD3, 0x4B, 0xE2, - 0xA8, 0x99, 0x7A, 0x0E, 0xAA, 0xD8, 0x89, 0x34, 0x6B, 0x8B, 0xF9, 0x56, - 0x12, 0x23, 0x5C, 0x80, 0xCC, 0x85, 0x13, 0x0D, 0x9F, 0x4D, 0xBA, 0xBB, - 0x66, 0xE4, 0x44, 0x6D, 0x37, 0xF2, 0x26, 0x57, 0x4C, 0x21, 0xE1, 0x99, - 0x96, 0xEE, 0x61, 0x80, 0xC3, 0x22, 0x51, 0x2A, 0xD8, 0x70, 0x4B, 0x10, - 0x0B, 0x03, 0xF9, 0x13, 0x72, 0x5E, 0xD8, 0x85, 0x81, 0x33, 0x66, 0x97, - 0x7D, 0xAC, 0x18, 0x08, 0xE8, 0x24, 0xC1, 0x6C, 0x5F, 0xD6, 0xA3, 0x99, - 0xC6, 0x50, 0x54, 0x61, 0x90, 0xF0, 0x3B, 0xBF, 0xF3, 0x12, 0x74, 0x8C, - 0x24, 0x38, 0xEB, 0xC5, 0x7A, 0xF1, 0x14, 0x33, 0x59, 0x8E, 0x57, 0x0F, - 0x66, 0xF7, 0x9C, 0xC2, 0xE5, 0x2A, 0x39, 0x88, 0xE6, 0x5F, 0x5C, 0x80, - 0xD9, 0xDB, 0x1D, 0x80, 0xF5, 0xCF, 0xA9, 0xFC, 0x2F, 0x81, 0x37, 0x11, - 0x90, 0x8D, 0x91, 0xD7, 0x7A, 0x76, 0x18, 0x31, 0x80, 0x97, 0xA1, 0x24, - 0xB2, 0x86, 0x7F, 0x01, 0x28, 0xB2, 0xA0, 0x78, 0x4F, 0x30, 0xCA, 0x37, - 0xC4, 0xFC, 0xCA, 0xC2, 0xC4, 0xE1, 0xD0, 0x62, 0x9E, 0x11, 0x00, 0x12, - 0x29, 0xD2, 0x1A, 0x5B, 0x7D, 0x50, 0x69, 0xBF, 0x32, 0xA3, 0xFF, 0x13, - 0x26, 0x30, 0x6D, 0xB7, 0xB2, 0x26, 0xAC, 0xE4, 0x74, 0x94, 0x92, 0xA0, - 0xFB, 0x8F, 0xF4, 0xB0, 0x9D, 0xAA, 0xA4, 0x00, 0x7F, 0x3B, 0xCC, 0xC9, - 0xD4, 0x67, 0xCA, 0xAD, 0xB7, 0xB8, 0xB9, 0xD4, 0x01, 0x27, 0x6C, 0x8E, - 0x8F, 0x16, 0x41, 0x13, 0xE5, 0xB5, 0x81, 0x3A, 0x29, 0x3C, 0x21, 0x16, - 0x3E, 0x49, 0x8B, 0x15, 0x59, 0x21, 0x8B, 0x14, 0xAB, 0x53, 0x58, 0x8A, - 0xC6, 0x02, 0x15, 0x41, 0x38, 0x9A, 0x25, 0x45, 0xBC, 0xF7, 0x84, 0x0B, - 0xD7, 0x2F, 0x98, 0x4D, 0xBA, 0x56, 0x9F, 0x3C, 0x0D, 0x86, 0x1F, 0xDC, - 0x40, 0x2D, 0x31, 0xA9, 0xB0, 0xBE, 0x84, 0x51, 0x58, 0xEC, 0x2F, 0xFB, - 0x4E, 0x36, 0x09, 0xAE, 0x5A, 0x7E, 0xAA, 0x1D, 0xFC, 0xF5, 0x91, 0x9A, - 0x28, 0xA2, 0x58, 0x3B, 0xB6, 0x9D, 0xB5, 0x12, 0xB7, 0x70, 0x7D, 0x64, - 0x52, 0xB3, 0xC4, 0x07, 0xFA, 0x3A, 0xAA, 0x85, 0xA4, 0x1A, 0x4E, 0x47, - 0xB0, 0xD0, 0x44, 0x75, 0x77, 0xA2, 0xFB, 0xB3, 0xE3, 0x27, 0x55, 0xD0, - 0x1F, 0x3C, 0x9E, 0x2A, 0xB9, 0x41, 0x1D, 0x50, 0x98, 0x7E, 0xE9, 0xC9, - 0xA7, 0x3C, 0x0B, 0xB1, 0x96, 0x74, 0xFC, 0xDB, 0xB6, 0x35, 0xAC, 0xD3, - 0x89, 0xCA, 0x3B, 0x79, 0x32, 0x81, 0x70, 0x5C, 0xEE, 0x35, 0x79, 0x55, - 0xDC, 0x77, 0x85, 0x01, 0x68, 0xE7, 0xA4, 0xB9, 0x9E, 0xDA, 0x55, 0xA1, - 0xDF, 0x9A, 0xF5, 0xEA, 0xF0, 0xE1, 0x4F, 0x59, 0xB4, 0x13, 0xD7, 0xAC, - 0x12, 0xF5, 0x06, 0xA2, 0x82, 0x01, 0xA1, 0xB5, 0x04, 0x9B, 0x00, 0x62, - 0x11, 0xEF, 0xF9, 0x82, 0x8E, 0x00, 0x4D, 0x0C, 0x16, 0x4C, 0x0C, 0x80, - 0xC7, 0x33, 0xCB, 0x0A, 0x43, 0xC3, 0x90, 0x47, 0x79, 0xCD, 0xEA, 0x96, - 0xDC, 0xDE, 0x7C, 0xB9, 0x1D, 0x0C, 0xB1, 0xBC, 0x0F, 0x8B, 0x76, 0xE5, - 0xBD, 0xD0, 0x59, 0x76, 0x08, 0x79, 0xE4, 0xF3, 0xE1, 0xB3, 0x12, 0xF1, - 0x94, 0x14, 0x79, 0xBF, 0xAC, 0x22, 0x4E, 0x57, 0x7B, 0xCB, 0x5B, 0xBF, - 0xE4, 0x9D, 0x16, 0x18, 0xA2, 0xB3, 0x2D, 0x04, 0x3A, 0x11, 0xC9, 0x18, - 0x6D, 0xCC, 0x99, 0xB5, 0xB5, 0x36, 0xF5, 0x49, 0x4B, 0xEC, 0x60, 0x3E, - 0x22, 0x9A, 0x73, 0x60, 0x91, 0x2F, 0x4F, 0x70, 0xB7, 0xA4, 0x48, 0x61, - 0xCB, 0x0D, 0x17, 0x84, 0x61, 0xF1, 0xAD, 0x7F, 0xEE, 0xEC, 0x72, 0x18, - 0x60, 0x6D, 0xAC, 0xEE, 0xDB, 0xC1, 0xC2, 0x81, 0xF1, 0x03, 0x74, 0xA2, - 0x5A, 0xA9, 0xC8, 0x0E, 0x52, 0x85, 0xDD, 0x1D, 0x12, 0xBE, 0x1C, 0xC4, - 0x58, 0x0F, 0x62, 0xEE, 0x17, 0xD4, 0xF5, 0x7F, 0xDB, 0xF4, 0x1B, 0xDF, - 0x2D, 0x18, 0x6D, 0x0B, 0x47, 0xDB, 0xFF, 0xAF, 0x70, 0xE6, 0xA1, 0x52, - 0x60, 0x9E, 0xFC, 0x83, 0xCC, 0x76, 0xB3, 0xAF, 0xED, 0x23, 0x21, 0xBB, - 0x7D, 0xBE, 0x7E, 0x59, 0x7F, 0x3A, 0x22, 0x10, 0x8F, 0x43, 0x4E, 0x65, - 0xC6, 0xBC, 0xEB, 0xE0, 0x63, 0x82, 0x78, 0xB8, 0xD5, 0xD0, 0xE7, 0xDA, - 0x44, 0xF2, 0x1A, 0xBD, 0x75, 0x46, 0xF7, 0x2A, 0xFE, 0x5F, 0x2A, 0x95, - 0xB3, 0x4F, 0x51, 0xC2, 0xD1, 0x24, 0xEA, 0x88, 0x06, 0x88, 0x8E, 0xCB, - 0x33, 0xA8, 0x71, 0xC3, 0x89, 0x4E, 0xD4, 0x25, 0xBC, 0x87, 0x1C, 0x05, - 0x87, 0x74, 0xF5, 0x99, 0x90, 0x58, 0xA1, 0x2E, 0x14, 0x13, 0x25, 0xD6, - 0xCB, 0x5C, 0xE5, 0xA8, 0x46, 0xA6, 0x71, 0x68, 0x72, 0x66, 0x48, 0xD8, - 0x92, 0x8F, 0x75, 0xAC, 0xB7, 0x14, 0x32, 0x42, 0xB9, 0x9D, 0x57, 0xF9, - 0xD2, 0x8E, 0x85, 0x27, 0x92, 0xA8, 0xCC, 0x1A, 0x26, 0x33, 0x76, 0x06, - 0x1A, 0xB6, 0x27, 0x56, 0x5D, 0x8E, 0xDC, 0x1F, 0xFC, 0xBA, 0x3F, 0x6A, - 0x67, 0xFF, 0x9B, 0x14, 0xFF, 0x90, 0xE7, 0x8E, 0xED, 0x2D, 0x8B, 0x5E, - 0x22, 0x84, 0xA2, 0x06, 0x8F, 0xFD, 0x25, 0x02, 0xFD, 0x3D, 0x92, 0x41, - 0xE5, 0x49, 0x2D, 0x43, 0x6A, 0x9B, 0x1E, 0xA5, 0x46, 0xC9, 0xA9, 0xDC, - 0x2D, 0x8E, 0x75, 0xE2, 0x1B, 0x8D, 0x8F, 0x23, 0x59, 0x2E, 0x21, 0x5D, - 0x3C, 0x0A, 0x41, 0xC5, 0x27, 0xD2, 0x76, 0x9A, 0xCA, 0x7D, 0xAC, 0x65, - 0x31, 0xC8, 0xAD, 0xB6, 0xBD, 0x19, 0x88, 0x08, 0x7A, 0x91, 0x74, 0xAD, - 0x23, 0x14, 0x60, 0xC3, 0x93, 0xCE, 0xF2, 0x10, 0xCF, 0xE3, 0xF1, 0xF7, - 0x3F, 0xD2, 0x1F, 0xD1, 0x91, 0x9B, 0x9C, 0xE9, 0xB9, 0xD7, 0xE5, 0xFA, - 0x8F, 0xAD, 0xB1, 0x95, 0x03, 0x28, 0xB4, 0x20, 0x46, 0xA2, 0xBD, 0x23, - 0x1A, 0x32, 0xB0, 0x23, 0x65, 0x54, 0x93, 0x87, 0x4F, 0xF1, 0x3A, 0xA7, - 0x8A, 0xD5, 0x0F, 0x59, 0xC7, 0xD6, 0x7E, 0xBE, 0x6B, 0xFB, 0x66, 0x8A, - 0x1E, 0x48, 0xD3, 0xCB, 0xC3, 0x78, 0xBC, 0x2A, 0x07, 0x57, 0x66, 0xD4, - 0x83, 0x95, 0xE1, 0x67, 0xDA, 0xE8, 0x0D, 0x68, 0x86, 0xE8, 0xF7, 0xBF, - 0x05, 0x4F, 0xB0, 0x41, 0x0C, 0xE6, 0x72, 0x9C, 0xB4, 0xBF, 0x93, 0x59, - 0xE5, 0x97, 0xAC, 0x7B, 0xB0, 0x93, 0x0E, 0xEC, 0xE6, 0xC2, 0xC1, 0x0E, - 0x06, 0x81, 0x69, 0xF6, 0x27, 0xE4, 0xCA, 0x2D, 0xE0, 0x76, 0x9E, 0x0A, - 0x03, 0xE3, 0x60, 0xD1, 0xAB, 0x4C, 0x63, 0xCC, 0x03, 0x7E, 0xBC, 0x4A, - 0x58, 0x74, 0x94, 0xEF, 0x96, 0xB7, 0x33, 0xE8, 0x80, 0x56, 0xBD, 0xEC, - 0x3F, 0xD6, 0x75, 0x6F, 0xF6, 0xFE, 0x85, 0x0B, 0x0A, 0x30, 0x30, 0xBE, - 0x0D, 0x7F, 0x5B, 0x15, 0xD2, 0x0B, 0x7D, 0xA3, 0x2B, 0xB7, 0xE7, 0xE9, - 0x17, 0x4C, 0x94, 0xE1, 0x70, 0xED, 0xF7, 0x40, 0x94, 0x3B, 0x3A, 0xCA, - 0xCE, 0xF5, 0xB2, 0xF3, 0x8A, 0x69, 0x61, 0x57, 0x5F, 0x64, 0xC5, 0xBC, - 0x0F, 0x78, 0x15, 0x9C, 0xF8, 0x30, 0x3A, 0xA4, 0xC2, 0xD8, 0x35, 0xA8, - 0x1B, 0xFA, 0x65, 0xAE, 0x78, 0x2A, 0x2B, 0x0E, 0x8C, 0xF7, 0x7E, 0x81, - 0x43, 0x0E, 0x15, 0x05, 0xC6, 0x76, 0x7B, 0x29, 0xA6, 0x26, 0xDE, 0xA0, - 0xF0, 0x38, 0x39, 0x8B, 0x33, 0x8D, 0x38, 0xD6, 0x84, 0x69, 0x55, 0xF6, - 0x5A, 0x6E, 0xBE, 0x7E, 0x18, 0x41, 0x4A, 0x4D, 0xF5, 0x7A, 0x86, 0x8B, - 0xCE, 0x48, 0xDD, 0xF5, 0x80, 0xEE, 0x57, 0x05, 0x99, 0x97, 0xA9, 0xCE, - 0x26, 0x68, 0x20, 0xA4, 0x9C, 0x84, 0x00, 0x88, 0x0A, 0x7F, 0x7B, 0x74, - 0x12, 0xE6, 0x60, 0xF7, 0xD9, 0xE7, 0xB4, 0x46, 0x59, 0x1A, 0x84, 0x1E, - 0x08, 0x20, 0x2E, 0x74, 0x51, 0xAE, 0x95, 0xD7, 0x77, 0x5A, 0x6A, 0x9B, - 0x0B, 0xFF, 0xB5, 0x5D, 0x65, 0xDC, 0x35, 0x6E, 0x00, 0xAF, 0x01, 0x73, - 0x41, 0x82, 0x92, 0x29, 0x9B, 0x67, 0x38, 0x86, 0xE4, 0x1A, 0x2A, 0xDA, - 0xBF, 0x23, 0xEC, 0x17, 0x97, 0x13, 0x1B, 0x32, 0x58, 0x31, 0x2F, 0x4E, - 0x6D, 0x8E, 0x39, 0x99, 0x7B, 0x9D, 0xEB, 0xBE, 0x47, 0xC5, 0x22, 0x81, - 0x64, 0xAE, 0x0B, 0x0D, 0xBC, 0x33, 0x6C, 0x0B, 0x30, 0xDE, 0xD0, 0xA4, - 0x8D, 0xB2, 0x9E, 0xFB, 0x02, 0x6C, 0xDC, 0xD3, 0x3E, 0xCF, 0xD6, 0x49, - 0x76, 0x22, 0xF2, 0x21, 0x76, 0x26, 0xDE, 0x32, 0x65, 0xAC, 0x1E, 0x68, - 0x2F, 0xC5, 0xF3, 0x78, 0x07, 0x15, 0x08, 0xAF, 0x74, 0xD0, 0x81, 0x13, - 0x45, 0xAB, 0x14, 0xD4, 0x59, 0x46, 0x24, 0x9F, 0x75, 0x12, 0x0E, 0xBB, - 0xDC, 0x6E, 0x4D, 0x44, 0xD3, 0x28, 0x2D, 0x64, 0xA8, 0xD6, 0x71, 0xE2, - 0xE0, 0x8B, 0xD2, 0xF4, 0xBD, 0xFC, 0x97, 0x30, 0x0C, 0xAC, 0x52, 0x3A, - 0x06, 0xE6, 0x3A, 0x24, 0x09, 0xF5, 0xEE, 0xDB, 0x6C, 0x0A, 0x34, 0xCC, - 0xF4, 0xEF, 0x97, 0x39, 0x4B, 0x0E, 0x51, 0xC4, 0x3F, 0x04, 0xC6, 0x79, - 0xFC, 0xFC, 0x2C, 0x66, 0x7C, 0x74, 0x9C, 0xF6, 0x42, 0x98, 0x57, 0xE2, - 0x78, 0x24, 0x72, 0x0A, 0xF2, 0x3B, 0x82, 0x22, 0xE6, 0x33, 0x80, 0xBC, - 0x9A, 0xF5, 0x0D, 0x59, 0x5D, 0xEC, 0x04, 0xD1, 0x63, 0x37, 0x61, 0xB6, - 0xBA, 0x30, 0x50, 0x1D, 0xC8, 0x3B, 0xF9, 0x41, 0xC1, 0x4A, 0x70, 0xEF, - 0x01, 0x8C, 0xFD, 0x8C, 0xCF, 0xE3, 0xE1, 0x00, 0x94, 0xA0, 0xB7, 0xE8, - 0xFA, 0xB9, 0x29, 0x36, 0xFD, 0x8B, 0x39, 0x86, 0x32, 0x48, 0xE6, 0xA1, - 0x3B, 0x2C, 0xB7, 0xDB, 0xF3, 0x81, 0xAA, 0x06, 0x45, 0x7F, 0x2F, 0x2B, - 0x82, 0xC7, 0xEB, 0x4A, 0x24, 0x35, 0x4F, 0x77, 0x9E, 0xCE, 0xF1, 0xDE, - 0x01, 0xCB, 0x43, 0x5B, 0x39, 0x3F, 0x48, 0xDF, 0xEB, 0x6E, 0x16, 0xFA, - 0x3B, 0x9D, 0x76, 0x7E, 0xEA, 0xB6, 0x1B, 0x49, 0x21, 0x35, 0x3C, 0xEC, - 0x9B, 0x22, 0x65, 0x23, 0x8C, 0x1C, 0xA5, 0xF2, 0xD9, 0xA1, 0x9C, 0xE0, - 0x5D, 0x9A, 0xFC, 0xE0, 0x6B, 0x78, 0x45, 0xEF, 0xBC, 0xCC, 0x8A, 0x7C, - 0xE0, 0x70, 0xDB, 0xD6, 0xB1, 0x9A, 0xB3, 0x9D, 0x45, 0x3B, 0x9D, 0xE0, - 0x23, 0x82, 0xF6, 0x9D, 0x6F, 0x0C, 0xF5, 0x7D, 0xB7, 0x41, 0x51, 0x4C, - 0x02, 0xB7, 0x8D, 0xB5, 0x30, 0x9F, 0xF8, 0xD7, 0x50, 0x72, 0xF8, 0xAD, - 0x2A, 0x54, 0x0F, 0xF9, 0x2D, 0x08, 0x1C, 0x32, 0x3C, 0xEE, 0xB3, 0x06, - 0x73, 0x2B, 0x27, 0xEC, 0x81, 0xB6, 0x73, 0xC2, 0xAE, 0xF0, 0xE0, 0x16, - 0x58, 0x55, 0x56, 0xC1, 0x0E, 0x89, 0xC2, 0xA7, 0xCA, 0xFD, 0x9A, 0x02, - 0xC6, 0xB7, 0x68, 0xBD, 0x10, 0xFF, 0x82, 0x81, 0x58, 0x77, 0x9F, 0x55, - 0x62, 0xC9, 0x80, 0xE9, 0x68, 0xE4, 0xBE, 0x8B, 0xDD, 0xAC, 0x28, 0xF8, - 0xE5, 0xC6, 0xC4, 0x6C, 0x77, 0xA3, 0x4F, 0xB4, 0x3F, 0xDC, 0x64, 0x70, - 0xF8, 0x32, 0x87, 0x19, 0x97, 0x2F, 0xEE, 0x04, 0xE1, 0x92, 0x4E, 0x73, - 0x28, 0x6F, 0x1B, 0x62, 0xCD, 0xD6, 0xD9, 0x7C, 0x6C, 0x5D, 0x09, 0x1F, - 0x9C, 0x0A, 0x72, 0x6D, 0xE7, 0x78, 0xA4, 0xA8, 0xEE, 0xF0, 0xA1, 0x3B, - 0x03, 0x9E, 0xDF, 0x19, 0x46, 0xD7, 0x0B, 0x8F, 0x1B, 0xCC, 0x9C, 0xD6, - 0x3A, 0xB6, 0x98, 0x42, 0x4C, 0x7C, 0xD4, 0x59, 0xC4, 0xBD, 0x86, 0x9E, - 0x79, 0x01, 0x05, 0x7C, 0xA7, 0xC4, 0xD5, 0xC4, 0xA4, 0xD7, 0xB2, 0x8A, - 0x15, 0x3C, 0x08, 0x12, 0xFF, 0x0E, 0xF1, 0x20, 0x9A, 0x5C, 0x57, 0x2A, - 0xDE, 0xF2, 0x21, 0xA7, 0xFB, 0xF2, 0xA7, 0xE9, 0x37, 0xA8, 0x73, 0x45, - 0xE8, 0xD4, 0xAC, 0x2F, 0x06, 0xC8, 0x6E, 0x04, 0xDE, 0xF7, 0xE2, 0xF6, - 0xD1, 0xA3, 0xC0, 0x7B, 0xD9, 0x77, 0xEF, 0x53, 0x74, 0xEA, 0xBE, 0x23, - 0xD2, 0x7E, 0xF0, 0xF0, 0x56, 0xAC, 0x95, 0x80, 0xF3, 0x53, 0xEE, 0x47, - 0x1D, 0x76, 0x30, 0x21, 0xC8, 0xAD, 0x46, 0x73, 0x8B, 0x1F, 0x4A, 0xB1, - 0x48, 0x4F, 0xE7, 0x3B, 0x92, 0xC0, 0xA7, 0x68, 0xF3, 0x53, 0xC7, 0xD4, - 0x51, 0xA8, 0xF6, 0xC9, 0x85, 0xAD, 0xBF, 0xB9, 0x6A, 0x31, 0x0E, 0x0C, - 0x7E, 0x64, 0x6F, 0x50, 0x99, 0x31, 0xE4, 0x13, 0xA6, 0xBF, 0xEA, 0xFF, - 0x09, 0x1A, 0xA7, 0xD8, 0xD6, 0x42, 0xA7, 0x62, 0x4F, 0xAC, 0x87, 0x4B, - 0xBA, 0xB7, 0xBE, 0x50, 0x5A, 0x09, 0x43, 0xD7, 0x4F, 0x9B, 0x27, 0x05, - 0x78, 0xEB, 0xB2, 0x16, 0x6C, 0xCA, 0x18, 0x41, 0x58, 0xF2, 0x24, 0xF9, - 0xED, 0xBB, 0xF6, 0x96, 0x2F, 0xF3, 0xCB, 0x4A, 0xE9, 0xF8, 0x25, 0x4A, - 0x6E, 0x8E, 0x32, 0xB6, 0x51, 0x17, 0x29, 0x98, 0x9B, 0x41, 0xE7, 0x23, - 0x80, 0xEA, 0x17, 0x84, 0xAB, 0xF1, 0x94, 0x81, 0xFE, 0xB4, 0x30, 0xA8, - 0xF8, 0x59, 0x33, 0x28, 0xAE, 0xF5, 0x24, 0x20, 0x7E, 0x78, 0x54, 0x7C, - 0xD5, 0xE9, 0xBA, 0xC1, 0x12, 0xA2, 0x71, 0xD6, 0x1D, 0x5E, 0xE2, 0x5B, - 0xF3, 0x26, 0xAA, 0x0B, 0x96, 0x68, 0x46, 0x63, 0x1D, 0x71, 0x38, 0x8C, - 0xB4, 0x29, 0x18, 0x92, 0x22, 0x6A, 0x0A, 0x67, 0x70, 0xC2, 0x14, 0xEC, - 0x4F, 0x0F, 0x3B, 0x43, 0x27, 0x6F, 0xF5, 0x1B, 0xE0, 0x7B, 0xEB, 0x35, - 0x3A, 0x6F, 0x7C, 0xA5, 0x9C, 0xBC, 0x17, 0x2D, 0xF5, 0xC0, 0x7D, 0x67, - 0xE2, 0xF1, 0x0D, 0x00, 0x04, 0xD4, 0x68, 0x9F, 0xB8, 0x48, 0xFE, 0xB6, - 0xA8, 0x6F, 0xFD, 0xCB, 0x34, 0x94, 0xFA, 0x2D, 0xFA, 0x46, 0x3E, 0x11, - 0x2D, 0xF5, 0xBB, 0x2B, 0xD2, 0x92, 0x92, 0x0E, 0x37, 0xEB, 0x7E, 0x84, - 0xF9, 0xFD, 0x3B, 0x22, 0xD3, 0xCD, 0xFC, 0x46, 0xEF, 0x21, 0x35, 0x91, - 0x19, 0xCF, 0x1F, 0xE0, 0xFE, 0x5C, 0x1A, 0x49, 0x38, 0x95, 0xE0, 0x40, - 0x1D, 0x4A, 0xB8, 0xB7, 0xBB, 0xB8, 0x52, 0x08, 0x37, 0x72, 0xE4, 0xF6, - 0xE8, 0x42, 0x0A, 0xAB, 0x1E, 0xF0, 0x74, 0x7B, 0xFB, 0x9E, 0x94, 0x4C, - 0x87, 0xF5, 0xEE, 0x0D, 0x9E, 0x07, 0x10, 0x79, 0x0C, 0x02, 0xA7, 0xE6, - 0x4A, 0xBF, 0xAB, 0xAD, 0x71, 0x5F, 0x31, 0xE1, 0xD5, 0x39, 0x1E, 0x72, - 0x53, 0x93, 0xA4, 0x38, 0xB4, 0x04, 0x79, 0xA3, 0x72, 0xCD, 0xBC, 0x29, - 0x3E, 0x9F, 0x63, 0xF4, 0x87, 0xB5, 0xB8, 0x99, 0xFC, 0x4E, 0x9D, 0xD2, - 0xD9, 0x6F, 0xD5, 0x16, 0x1D, 0x01, 0xF8, 0x43, 0x22, 0x6B, 0xF9, 0xF8, - 0xF8, 0x7E, 0x03, 0xD1, 0xF0, 0xC9, 0x8B, 0x97, 0x78, 0x12, 0xF1, 0xE8, - 0x23, 0x88, 0x53, 0xD3, 0x73, 0x8D, 0x8D, 0x5D, 0x64, 0x7F, 0xD8, 0x5E, - 0x15, 0xA6, 0x4E, 0x31, 0xE5, 0x8F, 0x1E, 0x7C, 0x8F, 0xC7, 0x60, 0x86, - 0x2B, 0x4F, 0x69, 0x0E, 0x2C, 0x39, 0x8B, 0xFC, 0xF4, 0x5C, 0xF4, 0x0A, - 0x63, 0x4E, 0xE5, 0xCA, 0x46, 0x6B, 0x15, 0xF3, 0x9B, 0x7E, 0xBB, 0xD9, - 0xA1, 0x87, 0x50, 0x36, 0x23, 0xEF, 0x37, 0x88, 0xE3, 0x89, 0xAB, 0x5F, - 0x0A, 0x07, 0xB4, 0x5F, 0xF8, 0x45, 0xBB, 0xE8, 0x12, 0x10, 0xE8, 0x95, - 0xB6, 0x13, 0xEF, 0x51, 0xA2, 0x24, 0x12, 0x7F, 0x6D, 0x05, 0x0E, 0x94, - 0xF9, 0x92, 0xB8, 0x2E, 0x64, 0x40, 0xDC, 0xDA, 0xDC, 0xDE, 0x82, 0x81, - 0x9C, 0xE0, 0x0A, 0x27, 0xC6, 0x06, 0xB5, 0x01, 0xBF, 0x36, 0x76, 0xF8, - 0xB1, 0xE5, 0x3C, 0x42, 0xC3, 0x07, 0xE7, 0xBD, 0xFC, 0x7B, 0xFD, 0x70, - 0x4C, 0x17, 0x8F, 0x21, 0x9B, 0xBA, 0x06, 0xFC, 0x34, 0x56, 0xDD, 0x23, - 0x7E, 0x2C, 0x8D, 0xF8, 0x99, 0xD6, 0x69, 0xDA, 0x75, 0x42, 0x84, 0x43, - 0xDB, 0x51, 0x12, 0xA0, 0x78, 0xEC, 0x95, 0x87, 0x86, 0x84, 0xC9, 0x21, - 0xEF, 0x8C, 0x0D, 0xEA, 0xBC, 0xE7, 0x5A, 0x23, 0x01, 0xB1, 0xBD, 0x6A, - 0x23, 0x49, 0x1C, 0x42, 0xED, 0x39, 0x5D, 0x26, 0xEF, 0x54, 0x36, 0x5E, - 0xE8, 0xA8, 0xB0, 0xC9, 0xF2, 0x39, 0xD0, 0x49, 0x10, 0x89, 0x2A, 0xF3, - 0x4F, 0x3B, 0x3F, 0xF3, 0x6F, 0x98, 0xC0, 0xA2, 0x37, 0xC5, 0x98, 0xCB, - 0x7A, 0xE6, 0x78, 0x11, 0x15, 0x97, 0x77, 0x7D, 0x34, 0xE5, 0x67, 0x61, - 0x8B, 0xC7, 0x2B, 0xA2, 0xE8, 0x67, 0x3F, 0xBA, 0xD6, 0xEC, 0xC1, 0x5B, - 0xF7, 0x4E, 0x70, 0xC3, 0x1A, 0x98, 0x20, 0x05, 0xBA, 0x2D, 0x2B, 0x79, - 0xB8, 0x10, 0xA3, 0x74, 0xC9, 0x50, 0xEC, 0x90, 0x3C, 0xA9, 0xF8, 0xF7, - 0xF9, 0x9F, 0xF9, 0xE1, 0x8E, 0x92, 0x40, 0xEE, 0x62, 0xCE, 0x36, 0x70, - 0x90, 0xAA, 0x3D, 0x17, 0xDF, 0x78, 0x8D, 0x49, 0xC1, 0x77, 0x9F, 0xF0, - 0xBC, 0x8A, 0xF6, 0x06, 0x90, 0xF5, 0x13, 0x51, 0xA7, 0x1B, 0xB8, 0x7B, - 0x15, 0xAE, 0xBA, 0x54, 0x90, 0xCA, 0x01, 0x0C, 0xB0, 0x82, 0xF1, 0xA6, - 0x36, 0x0E, 0x1F, 0x40, 0x38, 0x19, 0xE5, 0x3D, 0x22, 0x12, 0x0A, 0xB7, - 0x17, 0x5D, 0x47, 0x46, 0x85, 0xE9, 0x40, 0xC3, 0x90, 0x6D, 0xAE, 0xBE, - 0x95, 0xCA, 0xA1, 0x00, 0x47, 0x6C, 0x6E, 0xCE, 0xBF, 0xAB, 0x0A, 0x9B, - 0x73, 0x86, 0x4C, 0x64, 0x73, 0x7D, 0xF4, 0x01, 0xCF, 0x4F, 0x4F, 0xBD, - 0xFB, 0xC5, 0x37, 0xC1, 0x95, 0xAC, 0xCE, 0x58, 0x0A, 0x58, 0x26, 0x67, - 0xF2, 0x0B, 0x10, 0x13, 0xC5, 0x8D, 0x72, 0xAC, 0xCE, 0xC2, 0x7B, 0x74, - 0xB6, 0x4A, 0xB6, 0x0A, 0x8B, 0xD9, 0x27, 0x3A, 0x3D, 0x15, 0x42, 0xA4, - 0xF5, 0xC3, 0x04, 0x91, 0x64, 0x05, 0xF1, 0x44, 0x27, 0x9D, 0xBE, 0xB6, - 0x24, 0xDA, 0x68, 0x7B, 0xDB, 0x5C, 0xF7, 0x02, 0x72, 0xF4, 0xBC, 0x88, - 0xF6, 0x8A, 0xE1, 0x45, 0xE8, 0x9D, 0x06, 0x5F, 0x37, 0x61, 0xF5, 0xD4, - 0xE8, 0x37, 0xAA, 0xE7, 0x79, 0xAA, 0x7C, 0x21, 0x93, 0x0C, 0x66, 0x95, - 0x63, 0xE8, 0x25, 0xAD, 0xCB, 0xBD, 0x29, 0x96, 0x7A, 0x87, 0x76, 0x18, - 0xC4, 0x97, 0x74, 0x24, 0xF4, 0x00, 0x00, 0x0E, 0x7E, 0xB1, 0xAD, 0x5D, - 0xF1, 0x63, 0x3C, 0xF0, 0xA3, 0x21, 0x91, 0x04, 0x15, 0x5C, 0xCD, 0xEC, - 0xA3, 0xDC, 0x39, 0x7A, 0x85, 0x12, 0xFC, 0x4C, 0x7B, 0xF6, 0x01, 0x9D, - 0xBC, 0x64, 0x31, 0x27, 0xFB, 0x20, 0x69, 0xB2, 0x95, 0x8A, 0xB8, 0x53, - 0x15, 0x0D, 0xE8, 0x12, 0x44, 0xA5, 0x96, 0x91, 0x19, 0xA1, 0xB5, 0x77, - 0xA2, 0xD2, 0x91, 0x63, 0xB2, 0x3B, 0x8C, 0x29, 0x5A, 0x77, 0xCB, 0x9A, - 0x82, 0x17, 0x7C, 0xEB, 0x9A, 0x8D, 0x1D, 0x38, 0xFD, 0x0D, 0x33, 0x62, - 0xD3, 0xF1, 0x90, 0xA1, 0x41, 0x90, 0x85, 0x10, 0x28, 0x1C, 0x73, 0x77, - 0xD6, 0x64, 0xAE, 0xDE, 0x21, 0x5D, 0xE6, 0xD0, 0xBE, 0x59, 0xA8, 0x04, - 0xB1, 0xF1, 0x70, 0xA3, 0xDA, 0xD6, 0xB0, 0xBC, 0x7F, 0x3D, 0x60, 0x91, - 0x38, 0xA3, 0xC9, 0xC1, 0xBE, 0xA0, 0xD6, 0x4A, 0x8E, 0x33, 0xF6, 0x1A, - 0x99, 0x20, 0xBF, 0xFC, 0x38, 0x9F, 0xD6, 0x66, 0x6A, 0x61, 0xF7, 0xB0, - 0x09, 0xC3, 0xB2, 0xD3, 0xC1, 0xA1, 0xB3, 0xB4, 0x6A, 0xE3, 0x94, 0xF5, - 0x92, 0xD3, 0xC0, 0xB6, 0x12, 0x53, 0x7A, 0xAC, 0x1E, 0x69, 0x58, 0x3B, - 0x1C, 0x0F, 0x69, 0x9E, 0x0E, 0xAA, 0xF4, 0xF2, 0x12, 0xAE, 0x66, 0x3B, - 0x40, 0x4A, 0xC3, 0x19, 0x15, 0xDA, 0x08, 0x58, 0x73, 0x1A, 0x9D, 0x18, - 0xAD, 0xA7, 0xA3, 0x66, 0xD1, 0x5D, 0x9A, 0x36, 0x4E, 0xF0, 0xA5, 0x69, - 0x33, 0xD0, 0x8A, 0x11, 0x2E, 0xBA, 0x33, 0xCB, 0xBE, 0x4F, 0x63, 0x9D, - 0x97, 0x50, 0x26, 0x96, 0x8F, 0x6F, 0x4D, 0x30, 0x80, 0x72, 0x28, 0x5E, - 0xA8, 0x74, 0x8E, 0x42, 0x9D, 0x15, 0xDA, 0xAC, 0x36, 0x74, 0x91, 0xFA, - 0x29, 0x8F, 0x54, 0xF5, 0x06, 0xCC, 0x80, 0x78, 0xED, 0x76, 0xDA, 0x3D, - 0x86, 0x9D, 0x9D, 0x3D, 0xA4, 0xA4, 0x7E, 0x9A, 0x80, 0xCC, 0x90, 0x7C, - 0x90, 0x14, 0x8D, 0x33, 0x30, 0x8B, 0xCB, 0x17, 0x36, 0xBB, 0xAF, 0xA7, - 0xE6, 0x7C, 0xA3, 0xE1, 0x7D, 0xB0, 0xA1, 0x9A, 0xA6, 0x28, 0xFE, 0x13, - 0xA3, 0xFF, 0xE5, 0xE9, 0xC9, 0xBD, 0x1E, 0xEF, 0x2C, 0xB6, 0xFE, 0x6F, - 0x6E, 0xDD, 0x94, 0xAB, 0x1C, 0xCE, 0x6E, 0x2A, 0x30, 0x08, 0x82, 0xD3, - 0xD1, 0xFB, 0xE3, 0xC8, 0x63, 0x25, 0xB2, 0xF6, 0x67, 0x1D, 0x72, 0x57, - 0x8B, 0xEE, 0x9F, 0x56, 0x2F, 0x16, 0x3E, 0x9B, 0xEC, 0x27, 0xDE, 0x2E, - 0x84, 0x97, 0x67, 0xA9, 0x69, 0x0D, 0xC5, 0x59, 0xC3, 0xC8, 0x74, 0xEE, - 0x04, 0x89, 0xEF, 0xF6, 0x4B, 0xB9, 0xA2, 0xE5, 0x82, 0x78, 0x1F, 0x49, - 0xDB, 0x02, 0xC6, 0x56, 0x4B, 0xD6, 0x25, 0xDB, 0xBD, 0xF9, 0x9C, 0xFD, - 0x2E, 0xF3, 0x05, 0x5A, 0x73, 0x69, 0x2A, 0xE9, 0x62, 0xD2, 0x10, 0x82, - 0x9D, 0xC8, 0x6C, 0xDC, 0xC6, 0xF2, 0x18, 0x17, 0xEB, 0x2F, 0x91, 0xDC, - 0x30, 0x55, 0xDF, 0xD8, 0x7C, 0xA4, 0x79, 0xE0, 0xC5, 0x37, 0x9D, 0x23, - 0xD5, 0xDF, 0xA4, 0xF2, 0x1B, 0x60, 0xB6, 0xC7, 0x6F, 0x20, 0x5C, 0xFC, - 0xF2, 0x6D, 0x01, 0x75, 0xFB, 0x50, 0x01, 0x5D, 0x24, 0x48, 0x53, 0xBF, - 0x27, 0x99, 0x73, 0x3A, 0x47, 0xD4, 0xDD, 0xBF, 0xE7, 0x41, 0xD3, 0x15, - 0x09, 0x21, 0x29, 0xDA, 0xFE, 0x6A, 0x8E, 0x20, 0xB8, 0x86, 0xC1, 0x8D, - 0x54, 0x74, 0xC7, 0xD6, 0x66, 0xA7, 0xE5, 0x67, 0xB9, 0xE8, 0x0A, 0x74, - 0x3A, 0xF9, 0x4D, 0xAF, 0x54, 0x2D, 0xF0, 0x44, 0x79, 0x04, 0x01, 0x54, - 0x49, 0xF9, 0x04, 0x2A, 0xEF, 0xDD, 0x50, 0x19, 0xF6, 0x56, 0x0A, 0x34, - 0x58, 0x20, 0x90, 0x23, 0x94, 0x70, 0x43, 0xBC, 0xF3, 0x1E, 0xC0, 0x7D, - 0xB5, 0xBD, 0xF0, 0xBF, 0xC9, 0x1F, 0x93, 0x17, 0x1D, 0x56, 0xDF, 0xA0, - 0x42, 0x9C, 0xAA, 0x31, 0xD1, 0xE0, 0x74, 0x0D, 0x42, 0x02, 0x3B, 0x06, - 0xF6, 0xC5, 0xA8, 0xBB, 0x17, 0x5C, 0xCD, 0x56, 0x71, 0x9E, 0xAA, 0x1E, - 0xE8, 0x96, 0x4E, 0x0D, 0x55, 0x4E, 0xA0, 0x9E, 0xDC, 0x30, 0x3E, 0x58, - 0xD3, 0x62, 0xB6, 0xAB, 0x3B, 0xCF, 0x4D, 0x2B, 0x4A, 0x17, 0x25, 0xFB, - 0xCA, 0x5E, 0x0A, 0x3B, 0x82, 0x36, 0xCC, 0x6D, 0x5D, 0x64, 0x86, 0x5C, - 0x73, 0x1E, 0x86, 0xDC, 0x32, 0x5F, 0xF5, 0x2A, 0x2D, 0x58, 0x89, 0xDA, - 0x23, 0x1A, 0xAB, 0x0A, 0x6E, 0x5F, 0xD3, 0x84, 0x33, 0x33, 0xC7, 0xFD, - 0x42, 0xE9, 0xD3, 0xBD, 0x56, 0xE3, 0x70, 0x8A, 0xBA, 0x95, 0xAF, 0xF6, - 0x0A, 0xA6, 0x22, 0x50, 0x3B, 0xCB, 0x1A, 0xE8, 0x88, 0xDF, 0xD3, 0xE8, - 0x94, 0x8C, 0xBF, 0xC7, 0x32, 0x4C, 0x31, 0x0F, 0x1E, 0x14, 0x95, 0x9C, - 0x2E, 0x08, 0x5B, 0x8B, 0x63, 0x62, 0x51, 0x5B, 0xAB, 0x8B, 0x81, 0x6E, - 0xA2, 0x9B, 0xE3, 0x56, 0x9B, 0x78, 0x44, 0x09, 0xCC, 0xD4, 0x69, 0xC4, - 0xF0, 0x4F, 0x7D, 0xA9, 0x1B, 0xE1, 0xD7, 0xFB, 0xD4, 0x44, 0x3F, 0xFF, - 0x3E, 0xDB, 0xEC, 0xB7, 0x52, 0x91, 0x0E, 0xE6, 0xF7, 0xEF, 0x2F, 0x32, - 0x15, 0xC5, 0x25, 0xA6, 0x10, 0xDF, 0xD2, 0x2F, 0x5E, 0xD0, 0x50, 0x28, - 0x47, 0xA2, 0x93, 0x37, 0x42, 0x33, 0xC2, 0x3E, 0x2E, 0x1C, 0x1A, 0x52, - 0xE5, 0x2C, 0x71, 0x6C, 0xB5, 0x4A, 0x78, 0xD2, 0x60, 0xDE, 0x9D, 0x26, - 0x8E, 0xAA, 0x3C, 0x31, 0xFA, 0x55, 0x78, 0x41, 0xD1, 0xBC, 0x9D, 0x19, - 0x85, 0x8B, 0x4C, 0xF9, 0x10, 0x95, 0x0E, 0x43, 0x8A, 0x34, 0x66, 0x4A, - 0x5A, 0x4D, 0xD9, 0x4A, 0xD6, 0x19, 0x23, 0xC9, 0x67, 0x6A, 0x81, 0x36, - 0x87, 0xC2, 0x79, 0x89, 0xE7, 0x17, 0x90, 0x7E, 0x5B, 0x61, 0x49, 0xD8, - 0x05, 0xA0, 0x4F, 0x08, 0x9A, 0x77, 0x53, 0x6D, 0x8C, 0xD5, 0x36, 0x4F, - 0xE7, 0x4E, 0x56, 0xB4, 0xE1, 0xC0, 0x53, 0xD3, 0xB8, 0xBE, 0xB7, 0x90, - 0xCA, 0xFE, 0xB9, 0x80, 0x0E, 0x13, 0xB2, 0x7C, 0x8F, 0x66, 0x40, 0xCC, - 0x8B, 0xB0, 0x7C, 0x32, 0x89, 0xDE, 0x2C, 0x5D, 0x6A, 0xC5, 0xE9, 0x4B, - 0x36, 0x38, 0xCD, 0x51, 0xE2, 0x97, 0x9F, 0x12, 0x45, 0x92, 0x68, 0x38, - 0xED, 0x62, 0x6A, 0xB6, 0x9A, 0x36, 0x82, 0x72, 0x43, 0x58, 0x0F, 0xA9, - 0xB0, 0x4F, 0x12, 0xC9, 0x32, 0x2C, 0xC0, 0xAF, 0xF6, 0xE5, 0x4D, 0x48, - 0xBF, 0xDD, 0xEC, 0xDB, 0x28, 0xC9, 0xD3, 0x5B, 0xE3, 0xFC, 0x7E, 0xAD, - 0x76, 0x28, 0xD4, 0x23, 0x71, 0x85, 0xA5, 0x22, 0xE9, 0x93, 0x5E, 0x43, - 0xB5, 0x0F, 0xAE, 0xDF, 0x8B, 0x51, 0x41, 0x86, 0xC3, 0x55, 0xE4, 0x68, - 0x43, 0x27, 0x7C, 0x0C, 0x8F, 0x7F, 0xA0, 0x5A, 0x7A, 0xD7, 0x88, 0xC3, - 0x8E, 0xF8, 0xC0, 0xF3, 0xB3, 0xC9, 0x15, 0x34, 0x80, 0x16, 0x34, 0x13, - 0x17, 0x6A, 0xD1, 0x59, 0x03, 0x94, 0x59, 0x7B, 0xA0, 0xE8, 0xE0, 0xA4, - 0x16, 0xFC, 0x76, 0xF0, 0x7C, 0x5A, 0x00, 0x01, 0x50, 0xE8, 0x56, 0xEF, - 0x18, 0xC8, 0xDA, 0xBC, 0xCD, 0xB8, 0x92, 0xB8, 0x22, 0xE3, 0xB5, 0x16, - 0x05, 0x25, 0xE7, 0x65, 0x3D, 0x1C, 0x0F, 0x23, 0xC5, 0x24, 0x16, 0x9E, - 0x75, 0xCC, 0xF0, 0xF9, 0x19, 0x47, 0x83, 0xA0, 0x42, 0xBC, 0x36, 0x99, - 0x76, 0xE0, 0x27, 0xA9, 0xDB, 0x4A, 0x6E, 0x50, 0x22, 0x99, 0x4D, 0xDF, - 0x43, 0x69, 0xA3, 0x95, 0x48, 0x97, 0xC7, 0xC5, 0x4F, 0x1B, 0x2A, 0x32, - 0xBA, 0x9F, 0xB9, 0x2D, 0x1D, 0xE3, 0x6E, 0x46, 0x1F, 0xBD, 0x7A, 0x4F, - 0x2A, 0x07, 0xB4, 0xA2, 0xC2, 0x31, 0xA9, 0x93, 0xE9, 0x98, 0x39, 0x93, - 0x89, 0x51, 0x82, 0x10, 0x99, 0xD5, 0x65, 0x25, 0x27, 0x37, 0xB1, 0x7E, - 0x98, 0x50, 0xEC, 0xA7, 0x29, 0xE0, 0xBE, 0xA4, 0x0C, 0xD5, 0x9B, 0x3D, - 0xAD, 0x02, 0x4D, 0x81, 0x93, 0x0F, 0xA4, 0xD7, 0xF4, 0x48, 0xCC, 0x4E, - 0xF6, 0x6F, 0xF3, 0x5C, 0xF6, 0x5A, 0x2E, 0x05, 0xFA, 0xFB, 0x04, 0x8D, - 0x95, 0x29, 0x94, 0x03, 0x34, 0xF2, 0x33, 0xD9, 0x5B, 0x47, 0x96, 0x6C, - 0x0C, 0xE6, 0x8E, 0xF2, 0xD1, 0xF2, 0x83, 0x6A, 0xF2, 0x95, 0x4C, 0xBF, - 0x46, 0xB4, 0x42, 0x95, 0xDA, 0x59, 0xBE, 0x32, 0x2F, 0xFB, 0x7A, 0x33, - 0xA0, 0x09, 0xB6, 0x34, 0x49, 0x4B, 0xA7, 0x9B, 0xF6, 0x56, 0xA9, 0xB7, - 0x5A, 0x98, 0xCD, 0x74, 0xF9, 0xBB, 0xD9, 0x1A, 0x46, 0x87, 0x5D, 0xA4, - 0x81, 0x25, 0xB9, 0x9E, 0x58, 0xF7, 0xBE, 0x19, 0x6E, 0x84, 0x50, 0x7D, - 0x94, 0x3B, 0x57, 0x0A, 0x05, 0x81, 0x42, 0x2F, 0x42, 0x90, 0x9B, 0xF1, - 0xA7, 0x66, 0xD0, 0xD4, 0xF6, 0xD0, 0xB7, 0xE0, 0xDF, 0x2D, 0x6D, 0x60, - 0x11, 0xBE, 0xC8, 0xB3, 0x65, 0xEB, 0x71, 0x33, 0x74, 0xAD, 0xD0, 0x3B, - 0x5D, 0x06, 0x79, 0x9B, 0xD8, 0x03, 0xB7, 0x28, 0xEC, 0x2D, 0x3F, 0x82, - 0xE5, 0xD4, 0x73, 0x01, 0xE8, 0x51, 0xD5, 0x04, 0x46, 0x0D, 0xA9, 0x48, - 0x83, 0x75, 0x88, 0x87, 0x4F, 0xA3, 0xC5, 0xCC, 0x0E, 0x39, 0x46, 0x9E, - 0xE8, 0xC7, 0x7C, 0xC2, 0xA1, 0xEA, 0x89, 0x08, 0xE4, 0x37, 0xAC, 0xC6, - 0x2B, 0x50, 0x7D, 0x78, 0x4F, 0x72, 0xC8, 0x96, 0xDC, 0x48, 0xB0, 0xEF, - 0x69, 0x70, 0xDF, 0x85, 0x0A, 0xE8, 0xEF, 0x14, 0xF9, 0x8C, 0xFE, 0x9E, - 0xB1, 0xA4, 0x9B, 0x58, 0xC1, 0x77, 0x5E, 0x88, 0x3D, 0xB1, 0x39, 0xC9, - 0xE1, 0x8B, 0x4C, 0x16, 0xC2, 0x10, 0xD7, 0x4D, 0x11, 0x11, 0x3E, 0xD9, - 0x60, 0xD1, 0xAB, 0x18, 0x9D, 0x85, 0x8E, 0xFF, 0xFA, 0xB6, 0x09, 0x2B, - 0xD2, 0x9A, 0xFD, 0x6F, 0x5C, 0x05, 0x51, 0x04, 0x03, 0x25, 0x38, 0x12, - 0xCD, 0xF1, 0x0B, 0x10, 0x28, 0x8A, 0x09, 0x2E, 0x2C, 0x38, 0x43, 0x19, - 0x40, 0xF8, 0x45, 0xFF, 0x80, 0x5D, 0xD4, 0xDB, 0x52, 0x2C, 0x51, 0x77, - 0xD7, 0xB1, 0xFF, 0xED, 0x06, 0x99, 0x56, 0x48, 0x53, 0x40, 0xF7, 0x80, - 0xFB, 0x9C, 0x0E, 0x6F, 0x1D, 0x25, 0xAA, 0x4C, 0x8E, 0x91, 0xE7, 0xC5, - 0x0A, 0xDB, 0x3F, 0xEA, 0x48, 0xB9, 0xB2, 0xFA, 0x39, 0x46, 0x9E, 0x3A, - 0xC3, 0xDC, 0x15, 0xF9, 0xCF, 0x8C, 0xA7, 0x14, 0xFD, 0x16, 0x11, 0x69, - 0xC7, 0xD9, 0x2B, 0x00, 0xBA, 0xE7, 0x47, 0xB5, 0xF3, 0x74, 0x14, 0x11, - 0xC5, 0x29, 0x5F, 0xA0, 0xF2, 0x0B, 0xB5, 0x45, 0xEB, 0x88, 0x96, 0x1F, - 0x26, 0xCC, 0x47, 0xD7, 0x5A, 0x96, 0x1A, 0xB5, 0xD7, 0x66, 0x98, 0xD0, - 0x65, 0xDC, 0xE2, 0x15, 0xAF, 0xAC, 0x7E, 0x60, 0xBE, 0x9E, 0x2D, 0xB5, - 0x9B, 0xD9, 0x19, 0x36, 0x53, 0x2F, 0xE4, 0x40, 0xD7, 0xDC, 0x82, 0x16, - 0x8B, 0x99, 0x1B, 0xB3, 0x5C, 0xBB, 0x6A, 0x3F, 0x90, 0xE4, 0xF8, 0x57, - 0xDE, 0x9E, 0x63, 0xFD, 0x78, 0x4F, 0x0A, 0x26, 0x73, 0x0E, 0xD9, 0x47, - 0x8B, 0x52, 0xBF, 0x77, 0x75, 0x15, 0xD2, 0x70, 0xDC, 0x4B, 0x47, 0x1D, - 0x6A, 0x7A, 0x5F, 0xFE, 0x64, 0x89, 0xAB, 0xA1, 0x95, 0x8F, 0x27, 0xD1, - 0xAD, 0x5C, 0x6D, 0xAB, 0xAF, 0x53, 0xA5, 0x7E, 0xFC, 0x14, 0x02, 0xE0, - 0xEA, 0x14, 0x60, 0x71, 0x20, 0xB5, 0x2B, 0x33, 0x47, 0xE8, 0x05, 0x82, - 0x4B, 0x85, 0xE3, 0xFE, 0x9D, 0x21, 0x95, 0x7F, 0x18, 0x11, 0xB4, 0x0D, - 0x7F, 0xB6, 0xAB, 0xF4, 0xF4, 0xE7, 0x43, 0x20, 0x50, 0x28, 0x72, 0x8B, - 0x11, 0x83, 0xA5, 0xB6, 0x1E, 0x94, 0xF9, 0x25, 0x94, 0x2B, 0xBC, 0xD6, - 0x55, 0x41, 0xE4, 0xF0, 0xD9, 0xF5, 0x4D, 0x30, 0x4A, 0xD4, 0x9D, 0x3B, - 0x23, 0xE3, 0x95, 0x2E, 0xB6, 0x60, 0x0D, 0xAD, 0x28, 0xE5, 0xF9, 0x6E, - 0x6A, 0x74, 0xB5, 0x6C, 0x88, 0x59, 0x87, 0x30, 0x4A, 0x54, 0xE0, 0x80, - 0xAA, 0x1E, 0x76, 0x02, 0x16, 0x55, 0xC5, 0xF2, 0xC8, 0x38, 0xE3, 0x22, - 0x12, 0x7A, 0x16, 0x51, 0xDB, 0x5B, 0x38, 0xF3, 0xE0, 0xC1, 0x45, 0x56, - 0x6A, 0xD3, 0xD3, 0x25, 0x59, 0x9A, 0x7A, 0x1F, 0x8A, 0xF4, 0xAF, 0x98, - 0x4E, 0xC8, 0x1D, 0x6A, 0x7E, 0x34, 0x4B, 0xD7, 0x85, 0x2F, 0xBB, 0x0F, - 0x7B, 0xD4, 0x76, 0x44, 0x83, 0x8A, 0x76, 0x01, 0x39, 0xAE, 0x88, 0xA5, - 0xB0, 0xFC, 0xBF, 0xEA, 0xD1, 0xFD, 0x44, 0x25, 0x72, 0xD9, 0xBC, 0x3F, - 0xD9, 0xC1, 0x29, 0x44, 0x22, 0x0E, 0x6A, 0x49, 0xE1, 0x32, 0x23, 0xB3, - 0x45, 0x80, 0x81, 0x9C, 0x38, 0x88, 0xE7, 0x27, 0x66, 0x09, 0x90, 0xF2, - 0xBD, 0x3C, 0x4B, 0x10, 0x98, 0x52, 0x4D, 0x81, 0x26, 0x25, 0xD3, 0xE3, - 0x66, 0x00, 0x27, 0x39, 0xBF, 0x6A, 0x40, 0x1D, 0x8F, 0x6F, 0x21, 0x16, - 0x22, 0x73, 0x1E, 0x9E, 0x11, 0xFF, 0xB8, 0xC9, 0x9A, 0x56, 0x35, 0x14, - 0x78, 0xBD, 0x1F, 0x7B, 0x89, 0x47, 0xB6, 0x6A, 0x51, 0xBC, 0x08, 0x9F, - 0x3D, 0xCF, 0x1C, 0xC5, 0x2C, 0x82, 0x88, 0x72, 0xCC, 0x35, 0x9B, 0xD7, - 0x31, 0xFE, 0xAE, 0x40, 0x2D, 0xBF, 0x21, 0xC3, 0xF1, 0xA8, 0x39, 0xC0, - 0x59, 0xB4, 0x29, 0x7C, 0x5D, 0x5C, 0x0A, 0x7C, 0xD6, 0xA2, 0xB9, 0x5A, - 0x69, 0x3A, 0xF2, 0xA5, 0xB5, 0x40, 0x5D, 0x84, 0x1E, 0x8A, 0x93, 0x2B, - 0x75, 0x8C, 0xF0, 0x7F, 0x57, 0x12, 0xB6, 0xF9, 0xBB, 0xBE, 0x28, 0x20, - 0x4B, 0xB1, 0xA8, 0x90, 0xE6, 0x6A, 0xE9, 0xB3, 0xB2, 0x14, 0xCE, 0xA0, - 0xCD, 0x9B, 0xD2, 0x8D, 0xEB, 0x34, 0xB2, 0x71, 0x86, 0x96, 0xFB, 0x88, - 0x5E, 0x9F, 0x0D, 0xE6, 0x99, 0x87, 0xAB, 0xAA, 0xF4, 0xEA, 0xD3, 0xFE, - 0xCE, 0x6D, 0x2C, 0x93, 0x8A, 0x06, 0x16, 0x47, 0xBB, 0xFF, 0xE0, 0xC5, - 0x31, 0xF1, 0x46, 0x31, 0xB4, 0x6D, 0xFE, 0x9A, 0x62, 0xC0, 0xD9, 0x17, - 0xC2, 0x38, 0x18, 0x5C, 0xBA, 0x00, 0xCE, 0x10, 0x89, 0x96, 0x36, 0x82, - 0x95, 0xD4, 0x76, 0x90, 0x7D, 0x5D, 0x79, 0x59, 0x20, 0x63, 0xA4, 0x5F, - 0x10, 0x5C, 0x08, 0xF4, 0x53, 0x39, 0xC7, 0x16, 0xB7, 0xE7, 0x37, 0xC6, - 0x67, 0x2D, 0x75, 0xA9, 0x86, 0x96, 0x3D, 0x55, 0x45, 0xFE, 0xFA, 0xC4, - 0xFE, 0x66, 0xEA, 0x53, 0xD3, 0x3C, 0x40, 0xA1, 0x96, 0x31, 0x0F, 0x2C, - 0x56, 0x82, 0xF5, 0xAD, 0x4B, 0x56, 0x1A, 0x04, 0x5E, 0xC0, 0x92, 0xED, - 0x74, 0xF1, 0x9D, 0x11, 0x0F, 0x8F, 0x69, 0x90, 0x53, 0x78, 0x71, 0x0D, - 0x8A, 0x6C, 0x8E, 0xB0, 0xA2, 0x33, 0x38, 0x7E, 0x18, 0xC5, 0x28, 0xEE, - 0x4F, 0xE5, 0x57, 0xC5, 0x5E, 0x42, 0xDE, 0xA8, 0xB7, 0x77, 0xE5, 0x5D, - 0xDD, 0xD9, 0xFE, 0xFF, 0x69, 0xF6, 0x0A, 0xBF, 0xE1, 0x22, 0xEC, 0x09, - 0xF3, 0x05, 0x61, 0x31, 0x71, 0x31, 0x06, 0x36, 0x76, 0x34, 0xB4, 0x5B, - 0x46, 0x4C, 0x7F, 0x26, 0x0F, 0x97, 0x75, 0x34, 0x75, 0x2B, 0x88, 0x1B, - 0xEC, 0xF7, 0x65, 0xF7, 0x92, 0x30, 0x04, 0xBA, 0x56, 0xBE, 0x44, 0xF8, - 0x0C, 0x3A, 0x27, 0xD9, 0xE1, 0x70, 0x10, 0x18, 0xE8, 0xE0, 0xB5, 0xC6, - 0x1E, 0x0E, 0x11, 0x7C, 0xB8, 0x7C, 0x3E, 0xD1, 0xDD, 0xEB, 0xA4, 0x14, - 0x2F, 0xC1, 0xAB, 0x77, 0x0E, 0x51, 0x23, 0xCC, 0x5E, 0x34, 0x19, 0xC9, - 0xBD, 0x81, 0x96, 0x00, 0xD6, 0xE9, 0xAA, 0x82, 0xD3, 0xE6, 0x00, 0x09, - 0x3E, 0xC0, 0xB6, 0x4F, 0xF1, 0x39, 0x00, 0xF0, 0xD6, 0xB1, 0x7A, 0xA2, - 0xD3, 0xD6, 0x08, 0x65, 0xE5, 0x4A, 0x84, 0xDA, 0x85, 0x17, 0xAC, 0x17, - 0x03, 0x35, 0x07, 0x8F, 0xF9, 0xB3, 0xCC, 0xC9, 0x3E, 0xF9, 0x4E, 0xA4, - 0x30, 0xE3, 0xC9, 0x96, 0x8B, 0x6B, 0x53, 0x4E, 0x11, 0xAF, 0x53, 0xAC, - 0x92, 0x8E, 0xCC, 0xFE, 0xCA, 0x12, 0x7F, 0x92, 0x0A, 0x62, 0x7A, 0x38, - 0xCA, 0xAA, 0x89, 0x0C, 0x00, 0x91, 0xA1, 0x9F, 0x96, 0x13, 0x2B, 0x46, - 0x0E, 0x59, 0xC0, 0xF3, 0x49, 0xDC, 0xF0, 0xFA, 0xBF, 0x4D, 0xE7, 0xF3, - 0x0A, 0x82, 0x12, 0x05, 0xDE, 0xA5, 0xA9, 0x8B, 0x67, 0xD0, 0xF5, 0x0B, - 0xEE, 0xA1, 0x73, 0x8F, 0xCC, 0x47, 0x67, 0x7E, 0x83, 0x79, 0x56, 0x19, - 0x49, 0x5B, 0xE0, 0x30, 0x5F, 0xE6, 0xCB, 0x6E, 0xEC, 0x69, 0x31, 0xB8, - 0x87, 0x6E, 0xC0, 0xEA, 0x76, 0x79, 0x3A, 0x1A, 0x05, 0x8B, 0xD3, 0xB1, - 0x56, 0x57, 0x13, 0xDF, 0x3A, 0x6F, 0x38, 0xFF, 0x3A, 0xFB, 0x59, 0x35, - 0x37, 0xFA, 0x93, 0xBB, 0xA3, 0x13, 0x69, 0xC1, 0xCA, 0x3B, 0x9C, 0x73, - 0x51, 0x81, 0x38, 0x57, 0x12, 0x55, 0xA7, 0x7F, 0x27, 0x87, 0x8B, 0x4A, - 0x0C, 0x7F, 0x2D, 0x6C, 0x6E, 0xED, 0x69, 0xDD, 0xC3, 0x29, 0xDA, 0x67, - 0xDF, 0x2E, 0x9B, 0x3D, 0xB1, 0xA7, 0xFA, 0x1E, 0xF0, 0x09, 0xE2, 0x69, - 0x4A, 0x97, 0xE0, 0x63, 0x92, 0x16, 0xF1, 0x7C, 0x70, 0x50, 0x72, 0xFE, - 0x96, 0x94, 0xE4, 0xAB, 0x5A, 0xCA, 0xEB, 0x69, 0x3C, 0x12, 0xE5, 0x1A, - 0xB8, 0x2C, 0x8C, 0x24, 0xA2, 0xF3, 0x2A, 0xFF, 0xA0, 0xEC, 0xE8, 0xDE, - 0xAF, 0x4C, 0xA0, 0xEB, 0x4D, 0x13, 0x77, 0x19, 0x23, 0xE3, 0xE2, 0x72, - 0xC3, 0xD4, 0x3A, 0x70, 0x1D, 0xA7, 0xE0, 0x92, 0x38, 0x98, 0x68, 0xBB, - 0x82, 0x98, 0xC7, 0x30, 0x38, 0x50, 0x2A, 0xDF, 0xAF, 0x9C, 0x7F, 0xAB, - 0x8A, 0xBB, 0x98, 0x6A, 0x48, 0x4A, 0xE4, 0x29, 0x3F, 0x5A, 0xBE, 0x7D, - 0x3D, 0xC8, 0xCB, 0x13, 0x9E, 0x9D, 0x86, 0xC5, 0x96, 0x1C, 0xB4, 0xD6, - 0xBF, 0x32, 0xE2, 0x4D, 0x1B, 0x86, 0x1A, 0xFA, 0xD0, 0xFB, 0x25, 0xA2, - 0xBA, 0x6F, 0xEE, 0x36, 0xF6, 0x24, 0xEC, 0x7D, 0x8E, 0x96, 0xA4, 0x95, - 0x4B, 0x3F, 0x5D, 0x1F, 0x11, 0x9B, 0xAD, 0x4B, 0xC5, 0x5C, 0x87, 0x58, - 0xA4, 0x56, 0xEB, 0xEA, 0x99, 0xC3, 0x85, 0x11, 0x01, 0x7B, 0xFD, 0x39, - 0x33, 0xB9, 0xD7, 0xDC, 0x26, 0x99, 0xCD, 0xB7, 0x7E, 0x7E, 0x60, 0xE7, - 0x44, 0x29, 0x6C, 0x0C, 0xFB, 0x13, 0x71, 0x2B, 0x5C, 0x13, 0x88, 0xFD, - 0xB9, 0xF4, 0x53, 0x20, 0xD6, 0xBB, 0xEF, 0xF0, 0xDB, 0x53, 0x4A, 0xD0, - 0x1B, 0xF3, 0x6F, 0xDB, 0x8E, 0xF6, 0xB0, 0x46, 0x5C, 0x2A, 0xAD, 0xFB, - 0x27, 0x52, 0xE5, 0xFD, 0x3D, 0x9B, 0x56, 0x9F, 0x47, 0xBA, 0xA9, 0xB7, - 0xAA, 0x5C, 0xB2, 0xFD, 0x4F, 0xA8, 0xAD, 0xA9, 0xDB, 0xB2, 0x34, 0xE5, - 0x86, 0xCB, 0x5F, 0xE7, 0x65, 0xEE, 0x92, 0x9D, 0x3E, 0x35, 0x42, 0x35, - 0x48, 0x03, 0x52, 0x31, 0x71, 0xCE, 0x72, 0xEC, 0x1F, 0x88, 0xCE, 0xDC, - 0xB2, 0x38, 0x32, 0xEA, 0x1B, 0x71, 0x22, 0xFC, 0x14, 0x53, 0xD8, 0x2E, - 0x6B, 0xF3, 0xDB, 0xF9, 0x3F, 0x01, 0xDC, 0xEF, 0xFE, 0x74, 0xE4, 0xE1, - 0x7B, 0x55, 0x21, 0xB5, 0x40, 0x78, 0x87, 0x76, 0xFC, 0xFA, 0x36, 0x25, - 0x45, 0xB9, 0x47, 0x2A, 0x65, 0x56, 0x75, 0x8E, 0xDC, 0x6E, 0x27, 0x2D, - 0x43, 0x82, 0xCC, 0x76, 0xA0, 0x48, 0x33, 0x88, 0x5B, 0x58, 0xF3, 0x83, - 0x6D, 0x8C, 0x1E, 0xFC, 0xA3, 0x1A, 0xAC, 0x74, 0xB4, 0x38, 0x47, 0xCA, - 0x20, 0x06, 0x14, 0xAB, 0x5A, 0xBD, 0x5E, 0x38, 0x5A, 0x1E, 0x88, 0xC7, - 0xF9, 0x69, 0x7D, 0xBF, 0x91, 0x2C, 0x51, 0x18, 0x95, 0xF6, 0x19, 0x98, - 0x79, 0xFC, 0x69, 0xFD, 0xF7, 0xA9, 0x21, 0xA1, 0xD4, 0xBF, 0xC5, 0x21, - 0xF5, 0xBA, 0xD2, 0x9B, 0xF8, 0xA5, 0x40, 0x57, 0xD1, 0x10, 0x47, 0x0F, - 0x93, 0x50, 0x0F, 0x5D, 0x97, 0x96, 0x14, 0x2B, 0x71, 0x63, 0x88, 0xEC, - 0xA1, 0x92, 0xF0, 0x76, 0x86, 0x5C, 0xCC, 0x37, 0x86, 0x04, 0xD2, 0xB0, - 0xDD, 0x53, 0x82, 0xD6, 0x28, 0xCC, 0x05, 0x60, 0xE1, 0x3F, 0x27, 0xD2, - 0x1C, 0x80, 0x68, 0xAA, 0xA9, 0x16, 0xCD, 0xF5, 0x82, 0x55, 0x11, 0xDD, - 0x05, 0x2D, 0x56, 0x9F, 0xC9, 0x92, 0xA2, 0xB8, 0xDF, 0xD9, 0x32, 0x28, - 0xD4, 0xE9, 0xEA, 0x7E, 0x93, 0x5D, 0x33, 0x96, 0x77, 0x81, 0xCF, 0x63, - 0xE2, 0xC5, 0xC4, 0x41, 0x89, 0x0A, 0x64, 0xCC, 0x68, 0xD3, 0x3A, 0x80, - 0x1A, 0xAC, 0x36, 0xDC, 0x50, 0x95, 0x5B, 0x8A, 0xE7, 0x24, 0xAD, 0x65, - 0xC9, 0x86, 0x2A, 0xC2, 0x0C, 0x48, 0xB0, 0xDD, 0x33, 0x53, 0x1F, 0x08, - 0x35, 0x9B, 0x91, 0x52, 0xBB, 0xA8, 0x85, 0xE2, 0xA9, 0x0D, 0x22, 0x80, - 0x1D, 0xCA, 0x57, 0xA5, 0x52, 0xE4, 0xDA, 0x10, 0x7C, 0x31, 0xDB, 0xAA, - 0x27, 0x98, 0x85, 0xB7, 0xC7, 0x4E, 0xFC, 0x9D, 0x39, 0x8A, 0x10, 0x30, - 0x78, 0x4B, 0xB3, 0x3C, 0xAF, 0xAB, 0xE7, 0xD9, 0xBB, 0xB4, 0x11, 0x3E, - 0x59, 0x32, 0x2A, 0xD8, 0x89, 0xD8, 0xF5, 0xEB, 0x45, 0xFC, 0xEF, 0x8B, - 0x78, 0xCF, 0x10, 0x1B, 0xCF, 0x4A, 0x2C, 0x24, 0x57, 0xED, 0x82, 0x2E, - 0x4B, 0xC9, 0x1A, 0xC8, 0x1C, 0xD0, 0x5D, 0xE1, 0x87, 0x6E, 0xEA, 0xED, - 0xD9, 0x0D, 0xC9, 0x1C, 0x59, 0x14, 0x85, 0xFB, 0x60, 0xFE, 0x62, 0x06, - 0x4A, 0xB9, 0x0F, 0x0E, 0x83, 0xFE, 0x14, 0x1A, 0x7F, 0x6F, 0xFB, 0xC0, - 0xBF, 0x76, 0x02, 0x3C, 0xAB, 0x58, 0x86, 0xB0, 0xDA, 0x69, 0xE7, 0xFD, - 0x2B, 0x4C, 0x47, 0x66, 0xAB, 0xAB, 0xFF, 0x5D, 0xA0, 0xF2, 0x95, 0x47, - 0xC8, 0x23, 0xB8, 0x58, 0xA2, 0x74, 0x9D, 0x65, 0x6D, 0x3F, 0xC9, 0xD9, - 0xC0, 0xE9, 0x8A, 0x62, 0x0A, 0x6E, 0x1F, 0xE7, 0xD2, 0x86, 0x97, 0x26, - 0xA4, 0x0A, 0x9C, 0x54, 0x44, 0xC8, 0x8C, 0x4E, 0x3B, 0xA9, 0xE6, 0x97, - 0xBE, 0xBE, 0x16, 0x09, 0xE3, 0xC7, 0xCA, 0x68, 0x47, 0x24, 0x80, 0x22, - 0x27, 0x0D, 0xC7, 0xE4, 0x11, 0x68, 0xD2, 0x1A, 0x79, 0x61, 0x89, 0x59, - 0xD5, 0xA3, 0x99, 0xDF, 0x9C, 0x5B, 0x10, 0x58, 0x36, 0x6D, 0xDE, 0x9F, - 0xB5, 0xC2, 0xF2, 0x9F, 0x68, 0x99, 0x95, 0xD1, 0x79, 0x08, 0x8F, 0xE4, - 0xEC, 0x82, 0x7D, 0x70, 0xCF, 0xEA, 0x77, 0x00, 0x0A, 0x0A, 0xE6, 0x39, - 0x45, 0x96, 0xB6, 0xA1, 0xC0, 0xA3, 0xAA, 0x64, 0xF8, 0x3B, 0xD2, 0xF7, - 0x5C, 0xAD, 0xC0, 0x62, 0x93, 0xDA, 0xAE, 0x08, 0x5F, 0xB5, 0x10, 0x7F, - 0x14, 0xB6, 0x91, 0xC3, 0xEC, 0xBB, 0x0F, 0x18, 0x4B, 0x88, 0xBE, 0xFF, - 0xA2, 0xF1, 0x02, 0x48, 0x03, 0x6C, 0x6A, 0x5C, 0xAE, 0x7F, 0xBB, 0xA3, - 0x02, 0x25, 0x6E, 0x13, 0x9B, 0x64, 0x8C, 0x6B, 0x3D, 0xC1, 0xC6, 0xC7, - 0xB6, 0xA8, 0xF2, 0x85, 0x12, 0x87, 0xEA, 0xE0, 0x07, 0x3A, 0xEE, 0x2F, - 0xC2, 0x68, 0xB8, 0x05, 0xB5, 0x55, 0x15, 0xDF, 0x21, 0x78, 0x9D, 0x21, - 0x80, 0xE8, 0x91, 0xA4, 0x97, 0x1C, 0x08, 0xDB, 0x68, 0xA8, 0xEF, 0x25, - 0x00, 0xEE, 0xAC, 0xD7, 0x87, 0x26, 0xD6, 0x27, 0xB8, 0xE5, 0x85, 0x79, - 0x3F, 0xA4, 0xE9, 0xC8, 0x51, 0x44, 0xAF, 0xAE, 0x32, 0x08, 0x57, 0x1D, - 0xC6, 0xB7, 0x4D, 0x43, 0xDC, 0x3D, 0x27, 0xD4, 0x34, 0x53, 0xEA, 0x1A, - 0xFA, 0x57, 0x11, 0x04, 0xC1, 0x70, 0x7D, 0x88, 0x9B, 0x35, 0xAA, 0xBE, - 0x23, 0xD4, 0x10, 0xFB, 0xEA, 0x9C, 0x4A, 0xBC, 0xA5, 0xC0, 0x4E, 0xE1, - 0x2C, 0x30, 0x15, 0x1B, 0xA6, 0xFA, 0x7C, 0x27, 0x78, 0xA3, 0x2B, 0xF7, - 0x90, 0x20, 0x4B, 0xB2, 0xBD, 0xEE, 0x11, 0xD1, 0x53, 0xEB, 0xBC, 0x33, - 0xAD, 0x87, 0xD5, 0x15, 0x6B, 0x69, 0xFD, 0x20, 0x3E, 0x74, 0xF3, 0x9D, - 0x24, 0x9A, 0xC7, 0x39, 0xEB, 0xD2, 0x81, 0x24, 0x7A, 0x75, 0x20, 0x20, - 0xA3, 0x2B, 0xB6, 0x59, 0x62, 0x54, 0xE4, 0x6F, 0x03, 0x41, 0xCD, 0x3A, - 0x13, 0x69, 0x5C, 0xDA, 0xD6, 0xE1, 0x64, 0x14, 0x4F, 0x05, 0x03, 0x04, - 0x4F, 0x1A, 0x38, 0xF8, 0x40, 0x9E, 0xA1, 0x38, 0xDA, 0x20, 0xB5, 0x54, - 0xC6, 0x0D, 0x1D, 0x58, 0xE4, 0x45, 0x10, 0xF5, 0x9C, 0xA6, 0xA4, 0x90, - 0x64, 0x35, 0xE6, 0xF0, 0xFE, 0x58, 0x47, 0xC6, 0x84, 0xA6, 0x69, 0x62, - 0xCC, 0xFA, 0x50, 0xFA, 0xAC, 0x24, 0x5E, 0x72, 0xCF, 0x4C, 0xAF, 0xCF, - 0xF1, 0x12, 0xB8, 0x62, 0xA0, 0xF1, 0xB6, 0x36, 0xF7, 0x3E, 0xD5, 0x3F, - 0x2B, 0xD5, 0xC3, 0x57, 0xE7, 0x84, 0x9E, 0xCE, 0x48, 0x21, 0x90, 0x09, - 0x5D, 0x62, 0xBB, 0xDC, 0x5A, 0x93, 0x20, 0x6D, 0xF3, 0x8F, 0x9C, 0x51, - 0x97, 0x74, 0xC7, 0x55, 0x08, 0xD9, 0x42, 0x11, 0x70, 0x55, 0x08, 0x96, - 0x2D, 0xC2, 0x5C, 0x0B, 0x02, 0x6D, 0xFC, 0x3A, 0xCD, 0x21, 0xF2, 0x72, - 0xD6, 0x78, 0x3B, 0xD5, 0x52, 0xC9, 0xE9, 0x94, 0x51, 0x2F, 0xBA, 0x27, - 0x99, 0x6B, 0xF1, 0xF2, 0xFA, 0xBF, 0x15, 0x68, 0xD1, 0xC6, 0x8A, 0x86, - 0x3A, 0x51, 0x45, 0xB2, 0xE9, 0x5D, 0xD1, 0x82, 0xC3, 0x32, 0x28, 0xD3, - 0x8B, 0xFB, 0x90, 0x6D, 0x96, 0x9E, 0x65, 0x07, 0xE1, 0x05, 0x28, 0x52, - 0xE6, 0x93, 0x93, 0x4B, 0xB1, 0x44, 0xE1, 0xD5, 0xB5, 0x65, 0x1D, 0x1D, - 0x5C, 0xFA, 0xB0, 0xCA, 0xC3, 0x9D, 0xCD, 0xAC, 0x11, 0xFF, 0x81, 0x44, - 0x91, 0xB0, 0x1C, 0xC8, 0x6F, 0x21, 0xC2, 0x61, 0x95, 0x61, 0x49, 0x19, - 0x3F, 0x67, 0x9A, 0xC0, 0x7F, 0xEE, 0xCF, 0xE8, 0x5E, 0x75, 0x03, 0x56, - 0x4D, 0x24, 0x61, 0xF9, 0xD8, 0x98, 0xA1, 0x2B, 0xD1, 0x8C, 0x40, 0x9B, - 0xDC, 0xB6, 0x5C, 0xC0, 0xD6, 0x84, 0x67, 0x2E, 0x00, 0x2A, 0x89, 0xCE, - 0x0A, 0x6D, 0x06, 0x23, 0x64, 0x10, 0xD5, 0xD2, 0x17, 0xC5, 0xF9, 0x98, - 0xEE, 0xE6, 0xFC, 0x16, 0x6B, 0x0E, 0xAD, 0x40, 0x4D, 0x2D, 0x78, 0x9C, - 0x75, 0x60, 0xDD, 0x55, 0x5B, 0x9F, 0xDF, 0xE0, 0x70, 0x2A, 0x72, 0xF3, - 0x10, 0x31, 0x0F, 0xB9, 0xA6, 0xDC, 0x3E, 0x0C, 0x9D, 0x20, 0x91, 0xA6, - 0x0F, 0x4E, 0x49, 0x0D, 0x3D, 0x2C, 0x2D, 0x33, 0x32, 0x31, 0x1E, 0xF6, - 0x89, 0xD6, 0x66, 0xF0, 0x98, 0x1E, 0x11, 0x36, 0xE2, 0xF2, 0xDE, 0x09, - 0x5F, 0x7B, 0x29, 0xA2, 0x51, 0x47, 0xA6, 0xAC, 0x2B, 0xE2, 0x5A, 0xAE, - 0x7F, 0x38, 0xA5, 0xF6, 0xFE, 0x61, 0x42, 0x70, 0xB9, 0xCC, 0xCC, 0xD7, - 0x23, 0x0F, 0xBF, 0xCC, 0x87, 0x48, 0x31, 0x38, 0x1B, 0x7A, 0x4B, 0x9E, - 0xEB, 0x1F, 0x3D, 0x16, 0x55, 0xFA, 0xDB, 0xC2, 0xA0, 0xFF, 0xDC, 0x34, - 0x4B, 0x0D, 0x3C, 0x33, 0x55, 0x87, 0x7E, 0x73, 0xCD, 0x66, 0x8A, 0x5D, - 0x3F, 0xE4, 0xFE, 0xF1, 0x56, 0xFE, 0xB1, 0xB1, 0x09, 0x4E, 0x1D, 0xA5, - 0xEE, 0xD5, 0x6D, 0x9F, 0xA3, 0xA9, 0xCB, 0x16, 0xE4, 0x62, 0x87, 0x1F, - 0xB5, 0x88, 0xFB, 0x2B, 0x77, 0xA0, 0xB8, 0x9D, 0x51, 0x1F, 0x88, 0x60, - 0x45, 0x69, 0x2A, 0x46, 0x1E, 0x7B, 0x7F, 0x63, 0x98, 0x59, 0x8A, 0x75, - 0x6C, 0x4E, 0xFE, 0xFD, 0xC1, 0xCB, 0x68, 0x10, 0x71, 0x38, 0x8F, 0x1A, - 0x50, 0xF5, 0x4A, 0xE3, 0x82, 0x28, 0x46, 0x4A, 0x72, 0x0A, 0x86, 0xF9, - 0xE0, 0xF4, 0x7E, 0xCB, 0x3A, 0xB5, 0x6C, 0x6A, 0x6B, 0x14, 0x1B, 0x0E, - 0xAD, 0x60, 0xCE, 0x39, 0x8F, 0x62, 0x3F, 0x2A, 0x33, 0xBC, 0xF3, 0x03, - 0x90, 0x40, 0x3B, 0x5E, 0x30, 0x77, 0xE0, 0xA4, 0xAA, 0x5D, 0xC3, 0xCF, - 0x43, 0x0F, 0xF7, 0x1C, 0x4E, 0x60, 0x87, 0x82, 0xB6, 0x5A, 0xF3, 0x35, - 0x17, 0x48, 0xFB, 0x8F, 0x34, 0xCB, 0xED, 0x6F, 0xFC, 0xB8, 0x73, 0xBB, - 0x09, 0xCE, 0x07, 0x89, 0x58, 0xEB, 0xC4, 0x82, 0x67, 0x45, 0xAD, 0xCA, - 0xD9, 0x49, 0xE4, 0x00, 0xAA, 0x5A, 0xED, 0x61, 0xA6, 0x49, 0x1A, 0xB6, - 0xC8, 0x09, 0xDE, 0xAA, 0x65, 0x1A, 0x0C, 0xF5, 0xDF, 0xA9, 0x2B, 0xB6, - 0x91, 0xE9, 0xF0, 0x08, 0x2A, 0xBB, 0x4A, 0x04, 0x30, 0x0C, 0x71, 0x64, - 0xE2, 0xCF, 0xF3, 0xD4, 0x1E, 0x99, 0x9A, 0x2B, 0x11, 0x5D, 0x29, 0x61, - 0xC6, 0x2C, 0xC1, 0xA7, 0x05, 0xE8, 0x9B, 0xD0, 0xE4, 0xD2, 0x56, 0x96, - 0x5E, 0xA9, 0x25, 0x96, 0x25, 0xBC, 0xBC, 0x12, 0xE5, 0x50, 0x47, 0x4C, - 0x8D, 0xBF, 0xA6, 0xDA, 0x0A, 0x88, 0x70, 0x2F, 0x74, 0x2D, 0xE9, 0xCD, - 0xD8, 0xF6, 0xD9, 0x76, 0x37, 0x9A, 0x1F, 0x1D, 0x3D, 0x10, 0xBA, 0xD0, - 0x3C, 0x13, 0x56, 0x73, 0x79, 0x97, 0xB9, 0x55, 0x9D, 0x8B, 0xF3, 0xD5, - 0x87, 0x0B, 0x1D, 0x97, 0x53, 0xD0, 0xF9, 0xA9, 0x76, 0x3B, 0xDE, 0x18, - 0x3C, 0xE8, 0xF0, 0x81, 0x13, 0x16, 0x5A, 0x7D, 0x59, 0xF1, 0x9E, 0xE3, - 0xC5, 0xBA, 0xFC, 0xB7, 0x7E, 0x5F, 0x05, 0xF4, 0x38, 0x6C, 0xA1, 0x09, - 0xAA, 0x15, 0x4C, 0xC5, 0xF6, 0xE7, 0x25, 0x72, 0xC4, 0xAA, 0x82, 0xFE, - 0xEB, 0x3F, 0xBC, 0x6B, 0x26, 0xB2, 0xAD, 0x85, 0x83, 0xFB, 0xFA, 0xD9, - 0x2D, 0x78, 0x50, 0xBE, 0xF6, 0x70, 0xB4, 0x8A, 0xDB, 0x71, 0xA2, 0x60, - 0x80, 0x7A, 0x91, 0xB2, 0x74, 0x54, 0x81, 0xB5, 0xF7, 0x48, 0x77, 0x96, - 0x05, 0xD6, 0x34, 0xC1, 0x06, 0x0E, 0x35, 0x20, 0x39, 0x28, 0x2D, 0x57, - 0xC1, 0x75, 0xA2, 0x26, 0x0B, 0xEB, 0x59, 0x12, 0x07, 0x46, 0x35, 0x1B, - 0x7D, 0x2A, 0x5B, 0x0D, 0x19, 0x1A, 0xBD, 0x09, 0x5D, 0xEF, 0x7A, 0x79, - 0x7F, 0xB1, 0xD6, 0x45, 0x00, 0xC3, 0x3E, 0xB2, 0xA9, 0x03, 0x19, 0x43, - 0xC3, 0x53, 0x73, 0x24, 0xA2, 0xEC, 0x9B, 0x88, 0x09, 0xF4, 0x5C, 0xB5, - 0xC0, 0x69, 0x00, 0xB6, 0xB4, 0x80, 0xDE, 0x9A, 0x7A, 0x85, 0x1D, 0xA7, - 0x85, 0x81, 0x3D, 0x83, 0x41, 0x85, 0xA5, 0x32, 0x7B, 0x7D, 0x47, 0xEB, - 0x35, 0x07, 0x3C, 0xED, 0xBC, 0x6B, 0xEF, 0xB0, 0x1A, 0x6F, 0x33, 0x0A, - 0x2C, 0xBA, 0x54, 0xF8, 0xEE, 0xA9, 0xB4, 0x2A, 0x17, 0x8A, 0x1E, 0x6C, - 0x58, 0xFB, 0x09, 0xF0, 0x76, 0x0F, 0x03, 0xD3, 0x34, 0xC1, 0xC2, 0xA1, - 0xCD, 0x96, 0x21, 0xFC, 0x9C, 0x21, 0x3D, 0xB6, 0xA2, 0xD1, 0xA2, 0x0F, - 0x24, 0xF6, 0x33, 0xB4, 0xB4, 0x36, 0xCA, 0x12, 0x25, 0x52, 0x85, 0x5B, - 0x07, 0x82, 0xAF, 0xB8, 0x8B, 0xB1, 0x36, 0x67, 0x32, 0xAF, 0x51, 0x74, - 0xDE, 0x15, 0x9B, 0xE7, 0xD9, 0x6D, 0x2C, 0xEA, 0xDE, 0x68, 0x99, 0x66, - 0x31, 0x87, 0x7D, 0xEA, 0xA8, 0x4D, 0xF4, 0x06, 0xB5, 0x28, 0xD8, 0x93, - 0xB8, 0x38, 0xB3, 0x2D, 0xA2, 0xA8, 0xCD, 0x03, 0x96, 0x61, 0xD1, 0x7B, - 0x49, 0x11, 0xE8, 0xEE, 0x25, 0xCE, 0x44, 0xA7, 0x77, 0xED, 0x72, 0xA3, - 0xF4, 0xA7, 0xCB, 0x2D, 0x9D, 0xC5, 0xBA, 0x89, 0xBD, 0x9A, 0xC0, 0x84, - 0xDD, 0x14, 0x09, 0x1C, 0x11, 0x17, 0x4F, 0x99, 0x23, 0xDA, 0xD2, 0xD4, - 0x68, 0x4E, 0x7B, 0xFC, 0x85, 0x24, 0xE7, 0x1A, 0x79, 0xA5, 0x91, 0x9E, - 0xD8, 0xBB, 0x0E, 0xFA, 0xC4, 0x99, 0x31, 0xFB, 0x02, 0x4C, 0x15, 0xEC, - 0x38, 0x6E, 0xBC, 0xF8, 0xA1, 0xCB, 0xAD, 0x8D, 0x12, 0x66, 0x91, 0x61, - 0xAF, 0xA8, 0x01, 0x86, 0xF7, 0x8A, 0x54, 0x30, 0x40, 0xDE, 0x3F, 0x83, - 0xA4, 0x9C, 0x43, 0x98, 0x50, 0x21, 0x12, 0xB3, 0x20, 0x53, 0xE5, 0x46, - 0x82, 0x7E, 0xDF, 0x59, 0x1E, 0x19, 0x0C, 0x2B, 0xFF, 0x77, 0x92, 0x25, - 0xF4, 0x31, 0xDA, 0x82, 0xDA, 0x3A, 0x73, 0xF8, 0x2E, 0x83, 0x30, 0xBF, - 0x1E, 0x47, 0x46, 0x2C, 0x62, 0xBA, 0xA7, 0x95, 0x5D, 0xE2, 0xB8, 0x7A, - 0xE2, 0x3F, 0xD9, 0x6C, 0xEF, 0xC8, 0x47, 0xA7, 0x19, 0x60, 0x56, 0xC0, - 0x8F, 0xB4, 0x8E, 0x1F, 0x33, 0xAD, 0x2A, 0x08, 0xDA, 0x53, 0x52, 0x2D, - 0x86, 0x14, 0x6A, 0xB5, 0x94, 0xD0, 0xFC, 0xEE, 0xE6, 0xDD, 0x76, 0xC6, - 0x91, 0xCA, 0x3D, 0x00, 0xA4, 0x63, 0x3A, 0x38, 0xE4, 0x79, 0xDE, 0x44, - 0x48, 0x41, 0x50, 0x9C, 0x1A, 0xCB, 0x15, 0x68, 0xD5, 0xE5, 0xE8, 0x00, - 0x69, 0x3E, 0x2B, 0x82, 0x3B, 0x3D, 0x0A, 0x8F, 0x8B, 0xBE, 0x98, 0x08, - 0xD9, 0x66, 0xC3, 0xF2, 0xC9, 0x6E, 0xDF, 0xD0, 0xDC, 0xB1, 0x24, 0x91, - 0xA8, 0x70, 0xFA, 0xD2, 0xD7, 0x43, 0x25, 0xE1, 0x04, 0xDA, 0xED, 0x5D, - 0xBF, 0xD0, 0x1A, 0x8B, 0xBD, 0x22, 0xA1, 0xEC, 0x90, 0x76, 0xBF, 0x07, - 0xE2, 0xA5, 0xB4, 0x4D, 0xEA, 0x39, 0xDA, 0x95, 0x2F, 0xE0, 0x77, 0x23, - 0x07, 0x48, 0x28, 0x57, 0x35, 0xD7, 0x30, 0xC0, 0xB2, 0xFC, 0x6E, 0x2B, - 0x2F, 0xF3, 0x44, 0x9C, 0xD8, 0xBF, 0xD9, 0x44, 0x2D, 0x92, 0xDF, 0x51, - 0x7A, 0x6E, 0xBB, 0x69, 0xC9, 0xA8, 0xC2, 0x27, 0x15, 0x8F, 0x88, 0xE3, - 0xFD, 0x96, 0xD4, 0x1D, 0x1A, 0xF9, 0xB7, 0x2C, 0x54, 0xE5, 0xA6, 0x4B, - 0xBC, 0xC3, 0x89, 0xFD, 0x09, 0xAB, 0xB9, 0xB2, 0xC2, 0xF1, 0xB6, 0x9E, - 0xFA, 0x2E, 0xF1, 0x6A, 0x2A, 0x3F, 0x3A, 0xDC, 0x21, 0x66, 0x76, 0xB5, - 0x7C, 0xEA, 0xE5, 0xE0, 0xD9, 0xA9, 0x14, 0x92, 0xD6, 0x0D, 0x04, 0xB4, - 0x04, 0x8A, 0xF6, 0xF1, 0x85, 0x69, 0xF4, 0x1F, 0x8D, 0xBC, 0x6A, 0x9B, - 0x7F, 0x0D, 0x7C, 0xC7, 0x4C, 0x26, 0x60, 0x4F, 0xB0, 0x08, 0x5D, 0x15, - 0x72, 0x02, 0x2E, 0xD1, 0xF1, 0xD1, 0xED, 0x8F, 0x0A, 0x8B, 0x8A, 0xD1, - 0x18, 0x18, 0x77, 0x40, 0x40, 0x35, 0x2B, 0xDB, 0x28, 0x9B, 0x0B, 0x32, - 0xBF, 0x17, 0x54, 0x3B, 0xF5, 0xEF, 0xED, 0x6A, 0x6C, 0x4D, 0x8C, 0x27, - 0xF5, 0x36, 0xD2, 0x97, 0x20, 0x3E, 0x72, 0x50, 0x91, 0x79, 0x93, 0x53, - 0x53, 0xA3, 0x50, 0xD3, 0x09, 0xAF, 0x36, 0x90, 0x0A, 0xAA, 0xE6, 0x19, - 0x05, 0x5D, 0x5D, 0x6D, 0x04, 0x9A, 0x08, 0x7A, 0xD9, 0x06, 0x9C, 0x03, - 0xD9, 0x12, 0xFA, 0x36, 0x10, 0xEB, 0x9C, 0x4C, 0x74, 0xEC, 0x69, 0x36, - 0xB3, 0x8A, 0x0C, 0x22, 0xA6, 0xB3, 0xF1, 0xAE, 0x70, 0x8B, 0xA8, 0x38, - 0x08, 0x0F, 0x42, 0x40, 0x89, 0x6D, 0x09, 0xEC, 0x71, 0x44, 0x8F, 0xD1, - 0xC7, 0xCB, 0x8F, 0x4C, 0xEC, 0xC8, 0x5B, 0x7D, 0xB1, 0x77, 0x36, 0x66, - 0xA6, 0xDF, 0x29, 0x2B, 0x2F, 0x5E, 0x8D, 0x3D, 0xE6, 0x38, 0xC1, 0x32, - 0x0B, 0x64, 0x90, 0xB1, 0xA7, 0x03, 0x4A, 0x41, 0x94, 0xE6, 0xFF, 0x37, - 0x1E, 0x75, 0xD4, 0x1C, 0x71, 0x63, 0xB4, 0x64, 0x9B, 0x1B, 0x4C, 0x7B, - 0xFB, 0x16, 0x95, 0x95, 0xDB, 0xB6, 0x08, 0x93, 0x9B, 0x7B, 0x86, 0xA0, - 0x53, 0x24, 0x40, 0x7F, 0x2F, 0xF0, 0x86, 0xE4, 0x89, 0x02, 0x88, 0xBA, - 0x25, 0xE9, 0xD9, 0x46, 0x08, 0x1C, 0xBD, 0x73, 0x81, 0xBB, 0x48, 0x55, - 0x65, 0x46, 0x9D, 0x06, 0x75, 0x99, 0x75, 0x7A, 0x06, 0x3E, 0x4B, 0x25, - 0x8D, 0x7B, 0x78, 0x81, 0xC6, 0x98, 0xAA, 0x20, 0x22, 0x8B, 0x74, 0x6B, - 0x01, 0x1E, 0x7A, 0x36, 0x39, 0xC7, 0x53, 0x09, 0x53, 0x92, 0xF0, 0x1A, - 0x49, 0x2E, 0x91, 0x26, 0x02, 0xEB, 0x14, 0xEE, 0x8D, 0x48, 0xC1, 0x79, - 0x01, 0x1B, 0x03, 0x33, 0x7B, 0xD1, 0xAE, 0x99, 0xD9, 0xDE, 0x17, 0xAB, - 0xBE, 0xA8, 0x38, 0xAD, 0x8B, 0x82, 0x60, 0x4E, 0xF3, 0xF0, 0xB2, 0xFB, - 0x51, 0x14, 0x57, 0x9A, 0xE3, 0xDC, 0xB0, 0x5C, 0x66, 0xDD, 0xFE, 0x2A, - 0x5A, 0x10, 0x23, 0x2F, 0xBA, 0x07, 0x3C, 0x48, 0x37, 0x6A, 0x29, 0xA5, - 0x6C, 0xC5, 0x1E, 0xCF, 0x36, 0x1C, 0x0B, 0x4B, 0x1F, 0x39, 0x8C, 0xAF, - 0x16, 0x50, 0xEB, 0x42, 0x30, 0x5F, 0x23, 0x74, 0x85, 0x94, 0xFA, 0x69, - 0x53, 0x95, 0xF8, 0xAF, 0x78, 0xDD, 0x88, 0x82, 0xC6, 0xEA, 0xBB, 0xB1, - 0xAF, 0x12, 0xE8, 0x97, 0x9A, 0xBB, 0x70, 0x8C, 0x5D, 0x0B, 0x89, 0xB1, - 0x86, 0x2F, 0x7C, 0x8B, 0x59, 0x57, 0x2D, 0xC9, 0xC8, 0x8A, 0xDC, 0xA1, - 0xCD, 0xE1, 0x5D, 0x15, 0x2E, 0x6C, 0x9C, 0xAA, 0x22, 0x0A, 0x93, 0x6B, - 0x8B, 0x9A, 0xDF, 0xE7, 0xBE, 0xD9, 0x29, 0x02, 0x09, 0x8A, 0x7B, 0x14, - 0xA4, 0x86, 0xF2, 0x50, 0xFC, 0x64, 0xAA, 0x69, 0xC8, 0x8B, 0xB7, 0xA9, - 0x55, 0xFB, 0x1F, 0xD4, 0x35, 0x91, 0xCE, 0x81, 0xBC, 0xC6, 0x54, 0x2A, - 0x86, 0x2F, 0x02, 0x90, 0xB7, 0x01, 0x15, 0x31, 0x69, 0x67, 0x18, 0xA0, - 0x2B, 0x90, 0x3A, 0xA9, 0xA1, 0x38, 0xDD, 0xA7, 0x42, 0x92, 0xE8, 0x71, - 0xCE, 0x32, 0x18, 0x73, 0xCB, 0x1D, 0xC3, 0xA2, 0xF8, 0x1C, 0x6B, 0x60, - 0xED, 0xCA, 0x0F, 0xF6, 0xB5, 0x80, 0x7A, 0x7A, 0x33, 0x6D, 0xD1, 0x6D, - 0xD1, 0x8C, 0xD1, 0x58, 0x3E, 0xA7, 0x7A, 0x95, 0x30, 0x65, 0xBD, 0x07, - 0x15, 0xC1, 0xFC, 0xFF, 0x41, 0x93, 0x5F, 0x7C, 0x7F, 0x30, 0x66, 0x52, - 0x44, 0x16, 0x39, 0x6D, 0x42, 0x9D, 0x0D, 0xF1, 0x72, 0x69, 0x11, 0x53, - 0xC3, 0xA0, 0x9B, 0x89, 0xB6, 0xE4, 0x8C, 0x4B, 0x87, 0x80, 0x9A, 0xB4, - 0x3E, 0x33, 0x8D, 0xAB, 0x81, 0x15, 0x05, 0x19, 0x87, 0xB1, 0xDA, 0x05, - 0x4B, 0x60, 0xBA, 0x1D, 0xE7, 0x3B, 0x7E, 0x42, 0xAB, 0x5A, 0xD0, 0x21, - 0x30, 0xB5, 0x78, 0xB5, 0xC0, 0x8F, 0x83, 0x39, 0x7A, 0x7A, 0xAF, 0x4F, - 0x9B, 0xCC, 0xD9, 0xDA, 0x01, 0x9C, 0xFE, 0xAD, 0xAB, 0xE7, 0xF7, 0x2F, - 0xC1, 0xE6, 0x32, 0xC4, 0x9F, 0xCD, 0x10, 0xF2, 0xA5, 0x0F, 0xDD, 0x54, - 0x98, 0xEA, 0x57, 0x7C, 0x43, 0x39, 0xAA, 0x95, 0x83, 0x7E, 0x1B, 0x34, - 0x3A, 0x29, 0xF7, 0x07, 0xC0, 0x8B, 0xAF, 0x48, 0x71, 0xED, 0xEA, 0x7F, - 0x73, 0xD6, 0x0E, 0x6D, 0x96, 0xC3, 0x0F, 0x9F, 0xA9, 0x5C, 0x98, 0x00, - 0x16, 0xC4, 0xC6, 0x72, 0xEF, 0x00, 0x27, 0x01, 0x31, 0x75, 0x18, 0x28, - 0x75, 0xE5, 0xCB, 0x4D, 0x9E, 0x25, 0xCD, 0x72, 0xD8, 0xAA, 0x1B, 0x0B, - 0x35, 0x6A, 0xDC, 0x0A, 0x11, 0x85, 0x01, 0x7B, 0x94, 0x29, 0xA8, 0x41, - 0x29, 0xD4, 0xCE, 0xBE, 0x7B, 0x14, 0x45, 0x52, 0x56, 0xEB, 0x4E, 0x45, - 0x14, 0x62, 0x87, 0xA4, 0x29, 0x24, 0xF6, 0xF8, 0x70, 0x77, 0x29, 0x6A, - 0xB6, 0x56, 0x46, 0x20, 0x5A, 0x9C, 0x45, 0x3A, 0x54, 0x6B, 0xF8, 0x2B, - 0x4A, 0xCA, 0x8E, 0xBB, 0x97, 0x15, 0xAC, 0x6B, 0x60, 0x34, 0x73, 0x6F, - 0x26, 0xEA, 0x1F, 0x1F, 0x8C, 0x10, 0x40, 0x46, 0x10, 0x09, 0x16, 0x37, - 0x26, 0x86, 0xB1, 0xCF, 0x29, 0x28, 0x9F, 0x14, 0x75, 0x6C, 0xEE, 0x7F, - 0x92, 0xFB, 0x95, 0xD6, 0xFA, 0x8F, 0x13, 0x75, 0x37, 0xA5, 0xCC, 0x8A, - 0x8E, 0xD0, 0x50, 0x9D, 0x80, 0x3B, 0xD8, 0x1E, 0x5A, 0xA4, 0x66, 0xA9, - 0x5D, 0xC7, 0xB2, 0x25, 0x3D, 0xCB, 0x36, 0x82, 0x36, 0x9F, 0xCD, 0x11, - 0x07, 0x6B, 0x94, 0xED, 0x1D, 0xB2, 0x5A, 0xD8, 0x39, 0xEE, 0xC9, 0x5F, - 0x5A, 0xDC, 0x2D, 0xDE, 0x75, 0x9D, 0x3C, 0x6E, 0xA0, 0xD3, 0x61, 0x96, - 0x08, 0x44, 0x37, 0x31, 0x62, 0xDB, 0xC1, 0xEC, 0x72, 0x7A, 0xDF, 0x29, - 0xD7, 0x94, 0x10, 0x42, 0xA0, 0x77, 0xC4, 0x3E, 0xA2, 0x6D, 0x4D, 0x0D, - 0x3F, 0xFA, 0x9A, 0x3B, 0x3D, 0x7D, 0x86, 0xD1, 0x91, 0x96, 0x3F, 0x6C, - 0x9C, 0xEF, 0x83, 0xE7, 0x31, 0xC9, 0xEB, 0x7B, 0xDA, 0x82, 0x7A, 0xAA, - 0xF9, 0xD7, 0xB2, 0x55, 0x39, 0xE8, 0xF4, 0xEC, 0x06, 0xE8, 0x1C, 0x22, - 0x68, 0x18, 0x10, 0x8F, 0xF9, 0x13, 0x0C, 0x0E, 0xEC, 0x26, 0xDB, 0x0D, - 0x03, 0xE1, 0x24, 0xC1, 0x97, 0xDB, 0x13, 0xA1, 0x2C, 0xFC, 0x61, 0x32, - 0xC6, 0x1B, 0xFB, 0x4F, 0x7C, 0x18, 0xD4, 0x85, 0x1E, 0x14, 0xEE, 0x45, - 0x1A, 0x0C, 0xA3, 0xD0, 0x2A, 0x8F, 0x44, 0x10, 0x7F, 0x32, 0xC3, 0x6E, - 0xF9, 0x57, 0x6D, 0x59, 0x49, 0xAA, 0xD0, 0x5D, 0xBA, 0xB7, 0xA5, 0x28, - 0xD3, 0xE9, 0x1E, 0x99, 0xB1, 0x46, 0x4B, 0xF5, 0x8D, 0x4A, 0xE1, 0x11, - 0xAF, 0x9F, 0xBE, 0x3A, 0x21, 0xE1, 0x3F, 0x8F, 0x83, 0xF0, 0x2F, 0x30, - 0xB6, 0x59, 0x4F, 0x03, 0x17, 0xDA, 0x32, 0x7F, 0x01, 0x0F, 0x58, 0xB1, - 0xAC, 0x04, 0xA5, 0xC3, 0x4D, 0x5C, 0x13, 0xFD, 0x14, 0x58, 0x8D, 0xEE, - 0x78, 0x82, 0xBD, 0xD4, 0xFE, 0xA3, 0x7F, 0xDC, 0x78, 0x44, 0x07, 0x3A, - 0x4A, 0x64, 0x31, 0x1A, 0x7F, 0xBD, 0x5E, 0x7D, 0x20, 0x99, 0x3B, 0xE3, - 0x2B, 0x99, 0x89, 0xDA, 0xEA, 0x73, 0x13, 0x5E, 0x53, 0x5C, 0x93, 0x93, - 0xE9, 0x8B, 0xEA, 0x7E, 0xB5, 0xAA, 0xDD, 0xA0, 0x63, 0x0C, 0xB1, 0x2F, - 0x2C, 0xD7, 0xAA, 0x13, 0x51, 0x5D, 0xA8, 0x5C, 0x97, 0x9A, 0x9B, 0xF2, - 0x70, 0x0D, 0xA6, 0x1C, 0x6E, 0xD1, 0xA5, 0xBA, 0xB8, 0x62, 0x78, 0x00, - 0xB1, 0xE5, 0x5D, 0xB5, 0x9F, 0xD0, 0x0C, 0x06, 0x51, 0x9E, 0x41, 0xF0, - 0xE3, 0xBA, 0x46, 0x39, 0x83, 0x39, 0xAF, 0x7A, 0xDF, 0x5C, 0x0E, 0xDB, - 0xE4, 0xEB, 0x4C, 0x0E, 0x99, 0xC3, 0xD7, 0x95, 0x31, 0xBF, 0xDB, 0x2D, - 0xB1, 0x21, 0xA8, 0xDD, 0xB6, 0xB8, 0xAE, 0x08, 0x0A, 0x71, 0x23, 0xF9, - 0xE1, 0x57, 0xAD, 0xB8, 0x19, 0xBA, 0x39, 0xB6, 0x65, 0xAC, 0xC3, 0x42, - 0x6F, 0xB9, 0x4A, 0xD9, 0xB5, 0xB9, 0xA9, 0x1E, 0xE5, 0xA7, 0x3F, 0xE6, - 0x40, 0x63, 0x02, 0x2F, 0xF2, 0x01, 0x0D, 0x07, 0xA1, 0x2F, 0xC3, 0x65, - 0xC0, 0x58, 0x2D, 0x21, 0xBC, 0x4C, 0x6E, 0x51, 0xF4, 0xB0, 0xF4, 0x87, - 0x79, 0xA5, 0x74, 0x08, 0xF7, 0xFB, 0xF6, 0xF9, 0x13, 0x49, 0x11, 0xBC, - 0x36, 0x14, 0x87, 0x20, 0x06, 0x74, 0xBA, 0x1E, 0xCF, 0x92, 0xBC, 0xC3, - 0x26, 0x6D, 0xD9, 0x05, 0xC6, 0x08, 0x91, 0x97, 0x8F, 0x0F, 0xC1, 0x9A, - 0x3A, 0x91, 0x9C, 0x5F, 0xBE, 0x51, 0x9D, 0x01, 0xA4, 0xF3, 0xAA, 0x26, - 0x5E, 0x25, 0xDE, 0xF2, 0x01, 0x6B, 0x84, 0x85, 0x46, 0xBF, 0x8C, 0xCB, - 0xBC, 0x24, 0x39, 0x88, 0xB7, 0x2E, 0x5B, 0xD4, 0x36, 0x12, 0xD4, 0xFD, - 0xAE, 0x81, 0xA3, 0x9E, 0xD6, 0xE8, 0xA2, 0x40, 0xBD, 0x22, 0xBA, 0x0D, - 0x51, 0x8C, 0x67, 0xBC, 0x54, 0x13, 0x3C, 0x1D, 0x05, 0x20, 0xA8, 0x9D, - 0x61, 0x0A, 0x74, 0x73, 0x99, 0x5E, 0xBD, 0xB3, 0x10, 0xD9, 0xC7, 0x7C, - 0x58, 0x24, 0xF5, 0x9F, 0xFA, 0x13, 0x35, 0x83, 0x1A, 0x14, 0x13, 0x7B, - 0x3B, 0xB6, 0xF5, 0x16, 0xB2, 0x75, 0xC2, 0x9E, 0x41, 0x83, 0xC5, 0x68, - 0x8C, 0xDF, 0xFC, 0xC1, 0x2E, 0xAC, 0xFC, 0x08, 0x1C, 0xE5, 0x2D, 0x15, - 0x0D, 0xB8, 0xE2, 0x3F, 0xD7, 0xA1, 0x46, 0x9E, 0xCB, 0x46, 0x4A, 0x4A, - 0x71, 0x88, 0x4E, 0x61, 0x0F, 0x82, 0x34, 0xF0, 0xC5, 0xEA, 0xD0, 0x08, - 0x9A, 0xCF, 0xAE, 0x93, 0xEB, 0x69, 0x06, 0x2D, 0x96, 0x1F, 0x96, 0x70, - 0xDE, 0x1A, 0x87, 0xA0, 0x24, 0x7E, 0x1F, 0x8E, 0x9C, 0xDB, 0x77, 0xC1, - 0x95, 0xDC, 0xDE, 0x9E, 0xE7, 0xEE, 0x85, 0xD9, 0xB4, 0xEC, 0xD5, 0x2A, - 0xDF, 0xF7, 0xCD, 0xA6, 0x2B, 0x81, 0xFA, 0xE6, 0x10, 0xB1, 0x3B, 0x03, - 0x23, 0xE0, 0xBD, 0xA1, 0xA4, 0x7F, 0x89, 0x69, 0x55, 0x78, 0x14, 0xB1, - 0x86, 0x07, 0x6E, 0xB0, 0xB2, 0xB3, 0x96, 0xFD, 0xA0, 0x03, 0x00, 0xC1, - 0xF5, 0x60, 0xAA, 0x62, 0xD4, 0xB2, 0xC7, 0xA3, 0x9E, 0x25, 0xF5, 0xF5, - 0xB3, 0x85, 0x1D, 0xD2, 0x47, 0xDB, 0xF3, 0x1E, 0x70, 0x85, 0xAC, 0x30, - 0x02, 0x87, 0xF4, 0xEB, 0xB8, 0x99, 0xFB, 0x65, 0xAA, 0x56, 0x3F, 0xDC, - 0x5C, 0x52, 0x2C, 0x2A, 0xDE, 0x23, 0xEA, 0xE7, 0xD0, 0x20, 0x9C, 0xF3, - 0x9A, 0xA9, 0x16, 0x4C, 0xCE, 0x29, 0x87, 0x08, 0x52, 0xA4, 0x5D, 0x3A, - 0x4C, 0xC6, 0x2C, 0x13, 0x16, 0x94, 0x3E, 0x14, 0x5B, 0x50, 0x92, 0x34, - 0xC2, 0x64, 0x7A, 0x95, 0x89, 0x5C, 0xCA, 0x82, 0xF8, 0x59, 0x7B, 0x27, - 0xAA, 0x0F, 0x64, 0x45, 0xBB, 0xFA, 0x61, 0x30, 0x30, 0x57, 0x6E, 0x3A, - 0x69, 0x1A, 0x8F, 0x3E, 0xB7, 0x63, 0xCB, 0x86, 0xF6, 0xE2, 0xC6, 0xDF, - 0xFB, 0xE5, 0xB7, 0xEA, 0x3B, 0xF5, 0x28, 0x31, 0x6C, 0x44, 0x54, 0xD3, - 0xEC, 0x37, 0x77, 0xB9, 0xF7, 0x08, 0xF1, 0x05, 0xDA, 0x16, 0xB8, 0x95, - 0x69, 0x5E, 0x84, 0x49, 0x31, 0xC5, 0xEC, 0x06, 0x30, 0x82, 0x52, 0xC2, - 0x46, 0xB2, 0xE3, 0x47, 0xE6, 0x60, 0x12, 0x1C, 0x96, 0xDC, 0xBB, 0x08, - 0x60, 0x4A, 0xC3, 0x01, 0x4D, 0xBC, 0x1A, 0x4E, 0xF8, 0x3C, 0x06, 0x66, - 0xF0, 0x78, 0xB9, 0x6D, 0x04, 0x66, 0x60, 0xDF, 0x7E, 0x5F, 0x2C, 0x07, - 0x2A, 0x5A, 0x4F, 0x13, 0x59, 0x40, 0x26, 0x6F, 0xC6, 0x4A, 0x37, 0xE9, - 0x5E, 0x58, 0x41, 0xEF, 0xCD, 0xCE, 0x89, 0xAD, 0xAB, 0x72, 0xEF, 0x16, - 0x8B, 0x7D, 0x66, 0x1A, 0x98, 0xFC, 0x8B, 0xC2, 0xF7, 0xFD, 0xC3, 0xF9, - 0x51, 0xCF, 0x26, 0x06, 0xC6, 0x28, 0x2C, 0x2E, 0x8D, 0x53, 0xBE, 0xD8, - 0xA7, 0x26, 0xC3, 0xD6, 0xD8, 0x05, 0xCD, 0x19, 0xCC, 0xA3, 0x23, 0x14, - 0x74, 0xC2, 0x97, 0x01, 0x1C, 0x0B, 0x96, 0x22, 0xE2, 0x94, 0x23, 0xD8, - 0xC2, 0x1B, 0xF7, 0x03, 0xB5, 0x1E, 0x35, 0x2C, 0x9A, 0x9B, 0xCC, 0x7A, - 0x1F, 0x04, 0x52, 0x26, 0x69, 0xD7, 0x6A, 0x21, 0xEA, 0xA8, 0x3A, 0x62, - 0x51, 0xA2, 0x02, 0xB2, 0x37, 0x13, 0xC0, 0x57, 0xCC, 0x1D, 0xC4, 0xFF, - 0xE6, 0x90, 0xC1, 0x86, 0x20, 0x5B, 0x03, 0xED, 0x6F, 0x32, 0x77, 0x9A, - 0x86, 0xB1, 0x1C, 0x89, 0xFB, 0x9B, 0x2B, 0xF4, 0x86, 0xE9, 0xB9, 0xF0, - 0x39, 0xF9, 0x85, 0x51, 0x0C, 0x62, 0x95, 0x01, 0x28, 0xD7, 0x6F, 0xB7, - 0xBF, 0xC7, 0x2F, 0x2F, 0xF8, 0xAC, 0x31, 0xD1, 0xF8, 0x5D, 0x37, 0xDC, - 0xBE, 0x98, 0x2D, 0x76, 0xC4, 0x9C, 0x20, 0xDA, 0xB6, 0xF3, 0xC3, 0xC0, - 0x31, 0x14, 0xBF, 0x2B, 0x87, 0x00, 0x66, 0x4A, 0xE2, 0x50, 0x49, 0x84, - 0x1E, 0x97, 0x85, 0xB8, 0xED, 0x33, 0x2B, 0xF8, 0x59, 0xC9, 0x03, 0x3F, - 0x5A, 0x28, 0xA7, 0xB8, 0xFB, 0x9F, 0x2E, 0x44, 0xFA, 0x2E, 0x6D, 0xFF, - 0x40, 0x9E, 0x21, 0xE4, 0x05, 0xB6, 0x31, 0x76, 0xAE, 0xDB, 0x76, 0x96, - 0x88, 0x4D, 0x96, 0xCE, 0x1E, 0xD4, 0x22, 0x91, 0xE4, 0xA8, 0x91, 0x5B, - 0xED, 0xA4, 0x03, 0x10, 0x06, 0x8C, 0x24, 0xE4, 0xC4, 0x80, 0x16, 0x4D, - 0x50, 0xAF, 0xC1, 0x64, 0x4A, 0xA4, 0xB9, 0x79, 0xE3, 0x37, 0x38, 0x7D, - 0x8A, 0x85, 0x90, 0xB7, 0x1C, 0x7D, 0x24, 0x26, 0x7F, 0x5F, 0x0C, 0x9D, - 0xB3, 0x2D, 0x4D, 0xB0, 0xEE, 0xAC, 0x95, 0x8F, 0x2E, 0x5A, 0xA2, 0x78, - 0x7D, 0x0D, 0xDA, 0x99, 0x47, 0x93, 0x13, 0xF9, 0x0C, 0xFF, 0x5E, 0x71, - 0x99, 0x8D, 0xE3, 0x21, 0x03, 0x44, 0xF7, 0x4D, 0x61, 0xD0, 0x1D, 0x47, - 0xCB, 0x3D, 0x57, 0x4D, 0x43, 0x3C, 0x01, 0xBB, 0x33, 0xC2, 0x04, 0x91, - 0x66, 0xC9, 0xA1, 0xF2, 0x18, 0x47, 0x0D, 0x60, 0x61, 0x9F, 0xA7, 0x27, - 0x99, 0xB5, 0x27, 0x88, 0x60, 0x2B, 0x8D, 0x3C, 0x8F, 0xD5, 0x53, 0xDD, - 0x64, 0xC5, 0x14, 0xB3, 0x77, 0x5C, 0xDE, 0xA9, 0x91, 0x2E, 0x23, 0x83, - 0x24, 0xE3, 0xE6, 0x38, 0xC5, 0xCB, 0x9B, 0x4E, 0xC4, 0xEE, 0x3D, 0x7D, - 0x58, 0x6C, 0x60, 0x16, 0x97, 0xBC, 0xF6, 0x47, 0x77, 0x83, 0xCE, 0xF1, - 0xA9, 0x8F, 0xDA, 0xFF, 0xB3, 0xE4, 0x52, 0x50, 0x67, 0xBA, 0x13, 0x2A, - 0xAB, 0xB4, 0x32, 0xC0, 0x4C, 0xAE, 0xBC, 0x92, 0x3C, 0x65, 0x97, 0xA4, - 0xD8, 0x10, 0xDF, 0x60, 0x95, 0xCA, 0x74, 0x17, 0x3F, 0x8A, 0xC5, 0x2A, - 0x9F, 0xAF, 0xDB, 0xA4, 0x3C, 0x77, 0x01, 0xA6, 0x02, 0x66, 0x0C, 0x15, - 0x0F, 0x00, 0x90, 0xBD, 0x9B, 0x77, 0x53, 0xFD, 0x93, 0x44, 0x6F, 0x86, - 0x50, 0x54, 0x11, 0x40, 0xBE, 0x72, 0xD2, 0xE5, 0x4B, 0xA4, 0x13, 0x88, - 0x0D, 0xAA, 0x87, 0xFB, 0xED, 0x6E, 0x66, 0x59, 0xFB, 0xB8, 0xA0, 0xFE, - 0xD1, 0x08, 0x27, 0x07, 0xC4, 0x31, 0x31, 0x8C, 0x6F, 0xE2, 0x0B, 0x23, - 0x95, 0x96, 0xF6, 0x3B, 0xD9, 0xD4, 0xB6, 0x5D, 0x84, 0xC2, 0xC4, 0x23, - 0xE9, 0xF2, 0xB6, 0x96, 0x9E, 0xD0, 0x4A, 0xE2, 0x2D, 0xAB, 0xBB, 0xB0, - 0xAA, 0xEC, 0xFE, 0x67, 0x3A, 0xF9, 0x1A, 0xA8, 0x30, 0xDA, 0x9A, 0x17, - 0xD5, 0x46, 0xCC, 0xBA, 0xF7, 0xDA, 0x8E, 0x54, 0x49, 0x58, 0xBE, 0x9C, - 0x3B, 0x7E, 0x4E, 0xE4, 0x06, 0x8E, 0x32, 0xB4, 0x7A, 0xEA, 0xF8, 0x40, - 0x78, 0xD4, 0x62, 0xBD, 0xAC, 0xA7, 0x9F, 0x0B, 0x27, 0xC4, 0x90, 0xA1, - 0xDF, 0x15, 0x64, 0xBA, 0xEC, 0xCB, 0x69, 0xF7, 0xBF, 0xE6, 0x0D, 0x89, - 0x6E, 0x5D, 0x62, 0x5D, 0xEA, 0x04, 0x37, 0x1B, 0x40, 0x04, 0x37, 0x3B, - 0xD0, 0xC6, 0xE0, 0xFC, 0x63, 0xA6, 0xA1, 0xC8, 0xAB, 0x45, 0xA4, 0xFD, - 0x05, 0xFA, 0x57, 0x01, 0x5F, 0x34, 0x76, 0x0B, 0xCF, 0xB0, 0xD3, 0xFD, - 0xED, 0x66, 0xAC, 0xFB, 0x63, 0x89, 0x53, 0x46, 0x61, 0xFF, 0x22, 0x64, - 0xEB, 0x20, 0x60, 0x02, 0x0B, 0x78, 0xA4, 0xEC, 0xF9, 0x1D, 0x34, 0xAB, - 0x98, 0x33, 0xB7, 0x76, 0x4D, 0xDA, 0x4C, 0x33, 0x57, 0xD6, 0x23, 0x84, - 0x25, 0x76, 0x4A, 0x0B, 0xDD, 0xC5, 0xCD, 0x8B, 0xFF, 0xB8, 0x22, 0x37, - 0x16, 0xAB, 0xCE, 0xDD, 0x92, 0xDB, 0xD1, 0x12, 0xB3, 0x52, 0xD0, 0xE5, - 0x4E, 0xBE, 0x69, 0xA8, 0xDF, 0x2F, 0xAF, 0x22, 0x29, 0xD0, 0x28, 0xD3, - 0x80, 0xA1, 0x39, 0x57, 0x88, 0x17, 0xBA, 0x63, 0x75, 0xD7, 0xB9, 0x05, - 0xBC, 0x4E, 0x60, 0x02, 0xAC, 0x84, 0x96, 0xD9, 0x23, 0x1E, 0xE3, 0xDA, - 0xD6, 0x74, 0xC2, 0xCD, 0xA4, 0x22, 0x65, 0x82, 0x50, 0x10, 0xFE, 0x76, - 0xF5, 0xE7, 0x61, 0x0D, 0x86, 0xD9, 0x8D, 0x56, 0x10, 0x43, 0x9C, 0xFE, - 0x05, 0x3A, 0x51, 0x93, 0x81, 0x74, 0xD2, 0x11, 0x10, 0x82, 0xFC, 0x4C, - 0xA1, 0x83, 0x64, 0x21, 0x4B, 0xEB, 0xA9, 0x8E, 0x9A, 0xB8, 0xAB, 0x95, - 0x15, 0x96, 0x9D, 0x49, 0x9D, 0xFE, 0xEC, 0xC8, 0xC3, 0x6B, 0xBB, 0x4C, - 0x8E, 0x75, 0xBB, 0x8C, 0x42, 0x76, 0x18, 0x8E, 0x6F, 0xE0, 0xD6, 0x7C, - 0x19, 0xDA, 0x08, 0xD7, 0xE1, 0x73, 0x6C, 0x18, 0x1B, 0x90, 0xCF, 0x6E, - 0x18, 0xE4, 0x61, 0xC7, 0x1B, 0xE3, 0x93, 0x22, 0x80, 0xB0, 0xE6, 0x66, - 0xA0, 0xF7, 0x06, 0xA9, 0x1E, 0xD8, 0x62, 0xC5, 0xE3, 0x52, 0x59, 0xF1, - 0x71, 0x2A, 0x3C, 0xC0, 0xBC, 0x37, 0xF4, 0x51, 0x8C, 0x81, 0xB4, 0x65, - 0x95, 0x4A, 0x9D, 0xB5, 0xDF, 0x59, 0x2A, 0x06, 0xA6, 0xB1, 0x05, 0xCE, - 0xF3, 0x24, 0x7A, 0x59, 0x37, 0x76, 0x79, 0xAB, 0x84, 0x23, 0xF9, 0x5C, - 0xFD, 0x48, 0xA3, 0xED, 0x75, 0xB8, 0x58, 0x2F, 0x8A, 0xE7, 0xAD, 0x71, - 0x94, 0x62, 0x27, 0x1C, 0xAC, 0x5F, 0xE3, 0x92, 0x12, 0x6F, 0xAE, 0xAC, - 0x12, 0xDA, 0xA9, 0x02, 0x45, 0xD7, 0x62, 0x53, 0xE0, 0xB8, 0xB9, 0xA8, - 0x02, 0xD7, 0xED, 0xA9, 0x26, 0x8C, 0x8F, 0x82, 0x78, 0x93, 0x8D, 0x1E, - 0x8F, 0x8D, 0xEC, 0x89, 0xBA, 0x37, 0x6A, 0x35, 0x21, 0x61, 0xD9, 0xE1, - 0x52, 0x95, 0x46, 0xD5, 0x3A, 0xDF, 0x8B, 0xBD, 0x9F, 0x36, 0x71, 0x95, - 0x09, 0x28, 0x88, 0xB1, 0xF0, 0x70, 0xC2, 0x01, 0xA1, 0x4E, 0x0A, 0xF8, - 0xF2, 0x25, 0x1C, 0x60, 0x3C, 0xA3, 0xA0, 0xFB, 0x5C, 0x3E, 0xF4, 0x11, - 0xCC, 0x54, 0xDA, 0xD7, 0x80, 0x80, 0xCC, 0xC2, 0xB0, 0x81, 0xDF, 0xC8, - 0x1C, 0x96, 0x01, 0x95, 0x17, 0x4E, 0x01, 0x7E, 0x76, 0xF4, 0x1C, 0x61, - 0x98, 0x58, 0x2A, 0xBD, 0x04, 0x7E, 0x14, 0x8A, 0x88, 0x77, 0xB6, 0xAD, - 0x05, 0x54, 0xC7, 0xDA, 0xDD, 0x08, 0xBA, 0x5C, 0x9F, 0xC8, 0x3C, 0x87, - 0x24, 0xB5, 0xA0, 0x53, 0xC7, 0xBD, 0x92, 0x77, 0x5F, 0xE8, 0x22, 0x34, - 0x27, 0x98, 0x10, 0xD7, 0x4B, 0x76, 0x77, 0x26, 0x2D, 0xD0, 0x24, 0x03, - 0x8E, 0x15, 0x57, 0xF2, 0xC6, 0xED, 0x39, 0xB7, 0xAD, 0xE9, 0xFA, 0x14, - 0xED, 0xCF, 0x50, 0x9E, 0x8D, 0xAC, 0x87, 0x4B, 0x26, 0x28, 0xE4, 0x02, - 0xBE, 0x24, 0x6A, 0x39, 0x17, 0xBE, 0x9B, 0x79, 0xB7, 0x7E, 0xDF, 0xA6, - 0x6E, 0x7B, 0x52, 0xE6, 0x1C, 0xD2, 0xAD, 0xCE, 0x30, 0xB9, 0x91, 0xE7, - 0x64, 0x8B, 0xBD, 0x1E, 0x8E, 0x40, 0xE3, 0x69, 0xA6, 0xD4, 0xB2, 0x18, - 0x42, 0x53, 0x6C, 0xE6, 0x1C, 0x69, 0xF9, 0x26, 0x84, 0x4E, 0x6F, 0x16, - 0xD5, 0x39, 0xB5, 0x4C, 0x86, 0xC9, 0x0D, 0x07, 0x6D, 0x25, 0x61, 0x9E, - 0x7D, 0xDA, 0xB7, 0x13, 0x73, 0x7B, 0xC6, 0xF9, 0xF8, 0x25, 0x9D, 0x44, - 0xA6, 0x70, 0xFE, 0x5F, 0xC0, 0xFA, 0x64, 0xEE, 0x85, 0x6D, 0xA5, 0x0C, - 0x28, 0x68, 0x8C, 0x17, 0xCE, 0x3E, 0x38, 0x86, 0x83, 0x24, 0x97, 0xA3, - 0xC2, 0x54, 0xF9, 0x3C, 0xE7, 0x3A, 0xE8, 0xBC, 0x6D, 0xB8, 0x17, 0x7D, - 0xF0, 0x6C, 0xEF, 0xFB, 0xBB, 0xC9, 0xD7, 0x5B, 0xBF, 0xBB, 0x99, 0x83, - 0x94, 0x29, 0xE9, 0x9F, 0xFC, 0x6D, 0xD7, 0xA8, 0x6C, 0x62, 0x42, 0x18, - 0x95, 0x2D, 0x44, 0xFF, 0xB4, 0x48, 0x30, 0x88, 0x29, 0x25, 0x41, 0x83, - 0x0F, 0xAE, 0x9D, 0xE3, 0xEC, 0xB2, 0x18, 0x0F, 0xBF, 0x4F, 0x11, 0x1F, - 0xDA, 0xF2, 0xEC, 0x54, 0xE3, 0xCF, 0xE9, 0xAD, 0x4A, 0x7E, 0xF0, 0xDE, - 0xD4, 0x65, 0x21, 0x6F, 0x3A, 0xA8, 0x2E, 0xD5, 0x02, 0x39, 0x11, 0x4C, - 0xA5, 0x0A, 0xF1, 0xE4, 0x04, 0xFE, 0xC7, 0xFA, 0xE2, 0x2B, 0x74, 0xD3, - 0xBD, 0xB2, 0x8D, 0xAB, 0x18, 0x6B, 0x22, 0x3B, 0x79, 0x67, 0x88, 0x0F, - 0x05, 0xB2, 0xA5, 0x26, 0x9B, 0x5A, 0x4E, 0x96, 0xBE, 0xE4, 0x60, 0x9F, - 0xD5, 0x8C, 0x0F, 0x81, 0x12, 0xEE, 0x5E, 0xAA, 0x63, 0x10, 0x0C, 0x87, - 0x42, 0x73, 0xA7, 0x16, 0x97, 0x7D, 0x8A, 0x3E, 0x6C, 0xAC, 0xB8, 0xAF, - 0x70, 0xC2, 0xCA, 0x95, 0xD5, 0x01, 0x9A, 0x3B, 0xB0, 0x36, 0xBF, 0xEE, - 0xF9, 0x7D, 0x0B, 0xA1, 0x21, 0xA6, 0x6D, 0x85, 0x12, 0xB1, 0xCF, 0x14, - 0xE8, 0xCC, 0xFC, 0xC3, 0xA2, 0x1A, 0x09, 0x28, 0x48, 0xEB, 0xA8, 0xB2, - 0x8B, 0x4D, 0x17, 0xCD, 0x5C, 0x47, 0x70, 0xB9, 0x82, 0xB0, 0xFF, 0xEA, - 0xE8, 0x3F, 0x64, 0xDB, 0x9A, 0x0E, 0xFC, 0xED, 0x1D, 0xD2, 0xDE, 0x03, - 0x92, 0x91, 0x17, 0xF1, 0x6F, 0x38, 0x14, 0xEC, 0x79, 0x14, 0xCF, 0xA0, - 0x2B, 0x63, 0x65, 0x84, 0x28, 0xD3, 0xB8, 0x77, 0x4C, 0x0B, 0x55, 0x4D, - 0xF5, 0x89, 0xEF, 0xE7, 0x41, 0xC1, 0x5F, 0x18, 0xAE, 0x06, 0x7F, 0xA9, - 0x37, 0x84, 0x34, 0x6F, 0x7C, 0xC3, 0x9B, 0x96, 0x68, 0x88, 0x91, 0x99, - 0x35, 0x2B, 0xFF, 0x62, 0xD8, 0xC5, 0xE0, 0x4D, 0x40, 0x79, 0x1D, 0x18, - 0x30, 0x58, 0x4B, 0xF9, 0x48, 0xA7, 0x27, 0x02, 0xF5, 0x67, 0xB3, 0x17, - 0x4C, 0x22, 0x46, 0x2B, 0x39, 0x20, 0x79, 0x22, 0xE9, 0x25, 0x13, 0x1D, - 0x28, 0x20, 0x3E, 0xDA, 0x49, 0x53, 0xA6, 0x3D, 0x7F, 0x70, 0x7B, 0xA6, - 0x75, 0xA9, 0x45, 0xEB, 0x3B, 0x8F, 0xFE, 0x36, 0xAD, 0xBA, 0xBE, 0x5B, - 0x5A, 0x5B, 0x9E, 0x2A, 0xEA, 0x28, 0xFE, 0xD5, 0x2D, 0x4A, 0x89, 0x7B, - 0x6C, 0xBE, 0xF6, 0xEF, 0x19, 0xCD, 0xA1, 0x90, 0xD1, 0x44, 0x10, 0x58, - 0x58, 0xD8, 0x39, 0x53, 0x13, 0xA9, 0xBF, 0x02, 0xBC, 0x7A, 0xD3, 0xBC, - 0xD1, 0x61, 0xA4, 0xCC, 0x64, 0x0C, 0xF3, 0x51, 0x7C, 0x8B, 0x03, 0x67, - 0xBC, 0xA4, 0x0C, 0x20, 0x5C, 0xD5, 0xF1, 0xCA, 0xF3, 0x7B, 0x93, 0x5D, - 0x1D, 0x5B, 0x2C, 0xF2, 0x92, 0x3D, 0xF5, 0x0B, 0x90, 0x4C, 0x0C, 0xB6, - 0x1C, 0x4D, 0x8D, 0x15, 0x9C, 0x9B, 0x46, 0xDC, 0xC0, 0x7D, 0x01, 0x92, - 0x2B, 0x7D, 0xED, 0xCA, 0x27, 0xF3, 0xA2, 0x0F, 0x46, 0x62, 0x09, 0xEA, - 0x4B, 0xB1, 0x70, 0x6C, 0x24, 0x96, 0x93, 0xFB, 0xA5, 0x95, 0xD6, 0xF6, - 0xDD, 0x04, 0x39, 0x05, 0x58, 0x5C, 0xAC, 0xE2, 0x12, 0xAC, 0x9C, 0x7F, - 0x69, 0xBB, 0x0D, 0xD1, 0xD8, 0xE7, 0x26, 0x6D, 0x32, 0xCF, 0xB7, 0x12, - 0xC5, 0x21, 0x49, 0x64, 0xCC, 0x31, 0x72, 0x33, 0x8E, 0x2F, 0xC5, 0x9F, - 0x4C, 0x92, 0x5E, 0xDB, 0x03, 0x8F, 0x1F, 0x2A, 0xBB, 0xA6, 0x9C, 0xA0, - 0x1F, 0xC2, 0x89, 0xB1, 0xA6, 0x70, 0x32, 0x17, 0x74, 0x35, 0x14, 0xE2, - 0xF8, 0x83, 0x9D, 0x1E, 0x04, 0xD7, 0x05, 0x34, 0x8E, 0xAE, 0xA8, 0x0A, - 0x34, 0x74, 0xA7, 0x42, 0x1B, 0x1F, 0x90, 0x31, 0xA7, 0x9A, 0xFA, 0xC7, - 0xD3, 0x6C, 0x45, 0xBA, 0x49, 0x3C, 0x4E, 0xBA, 0x85, 0xFC, 0x0B, 0x8A, - 0x89, 0xEF, 0x6A, 0xD2, 0x88, 0xF1, 0xA9, 0xA4, 0x55, 0x54, 0xA0, 0x38, - 0x4D, 0xEC, 0x1B, 0x9D, 0x70, 0x7F, 0x98, 0x9E, 0xE0, 0x7E, 0xC0, 0x4F, - 0xD3, 0xA5, 0xC5, 0x78, 0x86, 0xDD, 0x92, 0xB5, 0x8A, 0xA5, 0xFB, 0x75, - 0x64, 0x06, 0x66, 0xAF, 0x06, 0xF2, 0xEF, 0x7C, 0x82, 0x61, 0xE3, 0x81, - 0x64, 0xBC, 0x53, 0x03, 0x8B, 0x62, 0x61, 0xE7, 0xFD, 0x75, 0x3A, 0x63, - 0x9C, 0x03, 0x84, 0x00, 0xA0, 0x90, 0x27, 0xAA, 0xF3, 0xA7, 0xF8, 0xB4, - 0xB5, 0xF5, 0xC7, 0x22, 0xDE, 0x35, 0x95, 0x3A, 0x35, 0xE6, 0x6D, 0x89, - 0x58, 0x0D, 0xBC, 0xC2, 0xC6, 0x97, 0xB1, 0xD4, 0xA6, 0xF0, 0x65, 0x66, - 0x7F, 0x19, 0xAF, 0x50, 0x88, 0xB9, 0x58, 0x8C, 0xC2, 0xED, 0x6E, 0x4A, - 0xF8, 0xB3, 0xC7, 0x06, 0x1A, 0xCF, 0x92, 0xC4, 0x98, 0x43, 0x27, 0x0D, - 0xA2, 0x01, 0x5B, 0x85, 0x98, 0x8C, 0x9C, 0x5E, 0x82, 0x19, 0xA8, 0x4E, - 0xA8, 0x60, 0xB1, 0xEE, 0x14, 0x73, 0xC7, 0x70, 0xA9, 0x6E, 0x2A, 0x39, - 0x4F, 0xF6, 0x4C, 0x77, 0x1F, 0xB3, 0x7A, 0x4B, 0xAB, 0xA8, 0x14, 0x8D, - 0xF2, 0xC5, 0xBC, 0xE2, 0xF1, 0x7E, 0xB8, 0xC3, 0x6B, 0xA2, 0xF5, 0x61, - 0x79, 0x93, 0x98, 0xBB, 0x13, 0x5F, 0x7F, 0x62, 0xAE, 0x74, 0xC6, 0xF8, - 0x23, 0x4F, 0xA6, 0x41, 0x0D, 0x23, 0xF6, 0x3F, 0xF5, 0x23, 0xD9, 0xE4, - 0xCC, 0x87, 0xA5, 0x3E, 0xF8, 0xCC, 0xBC, 0x4F, 0x8F, 0xC8, 0x5C, 0xC8, - 0x7D, 0xC1, 0xC4, 0x23, 0x66, 0x62, 0xA5, 0x75, 0xC7, 0x44, 0x15, 0x84, - 0xC3, 0xFC, 0x16, 0x81, 0x7F, 0xE5, 0x0C, 0xDA, 0xAC, 0xD8, 0x53, 0x71, - 0x5D, 0xBE, 0x91, 0xB8, 0xFC, 0x3B, 0x8F, 0x88, 0x2D, 0x67, 0xA4, 0x1D, - 0x9F, 0xFB, 0x12, 0xD7, 0x1D, 0xF0, 0x6C, 0x2F, 0x2D, 0xA3, 0x36, 0x97, - 0x1A, 0xA5, 0x5D, 0xE7, 0x18, 0x21, 0x31, 0xFB, 0xAB, 0x1E, 0x75, 0x41, - 0x70, 0x4C, 0xC4, 0xBB, 0x01, 0x7B, 0x72, 0x51, 0xAE, 0x0B, 0xB3, 0x59, - 0x6D, 0xA4, 0x1F, 0xCB, 0x69, 0x7C, 0x72, 0x28, 0xF6, 0x85, 0xC2, 0xA1, - 0x88, 0x4A, 0x82, 0xEA, 0xCF, 0xBA, 0x87, 0xB7, 0x13, 0x5B, 0xD0, 0xFC, - 0x5E, 0x77, 0x4F, 0x3D, 0x92, 0x9E, 0x3F, 0xB0, 0xE0, 0xDC, 0x9B, 0xB8, - 0x67, 0x13, 0xCE, 0x5D, 0x2F, 0xE8, 0x96, 0xF6, 0x18, 0x24, 0x52, 0x87, - 0x6E, 0x46, 0x51, 0x80, 0x37, 0x56, 0xE2, 0xE2, 0x3D, 0x33, 0x82, 0x31, - 0xEF, 0x0E, 0xA2, 0xB2, 0x56, 0xF9, 0x3F, 0xBA, 0x22, 0x26, 0x96, 0x3E, - 0x3D, 0xE6, 0x35, 0x8E, 0x24, 0x19, 0x7D, 0x0E, 0x0B, 0x10, 0x4C, 0xFE, - 0x74, 0x59, 0x32, 0x9C, 0x65, 0xA7, 0xB1, 0xEF, 0x08, 0xF8, 0x07, 0x1C, - 0x11, 0x52, 0xC0, 0x8F, 0xE3, 0x93, 0x9E, 0x53, 0x23, 0x13, 0xA6, 0x3E, - 0xB3, 0xB1, 0x20, 0x24, 0xB6, 0xE1, 0x22, 0xD1, 0xED, 0x36, 0xD3, 0x5C, - 0x18, 0xC4, 0xE4, 0x09, 0x7F, 0x60, 0x45, 0x9D, 0xCE, 0xAE, 0xDF, 0xE2, - 0xD4, 0xC6, 0xBA, 0x53, 0x6B, 0x97, 0xAD, 0x2B, 0x60, 0x54, 0x60, 0x22, - 0x3C, 0x4C, 0x25, 0x2C, 0x87, 0xF9, 0x64, 0x51, 0x60, 0x2E, 0xE1, 0x90, - 0xAE, 0xCC, 0x70, 0xC1, 0xCA, 0x62, 0x07, 0xEF, 0x63, 0x40, 0x80, 0x7B, - 0xC2, 0x35, 0x56, 0xC6, 0xB8, 0x12, 0x0E, 0x34, 0xF4, 0x54, 0x28, 0x53, - 0x52, 0xD4, 0x4F, 0x0F, 0x98, 0x78, 0x74, 0x9A, 0x4A, 0x1E, 0x77, 0x31, - 0x4D, 0xAB, 0x7D, 0xDD, 0x07, 0x4E, 0x57, 0x24, 0xAE, 0x3F, 0xF1, 0x30, - 0x19, 0xA8, 0x2E, 0x66, 0xB1, 0x4D, 0x30, 0x5B, 0x28, 0xB4, 0x9F, 0x48, - 0xFF, 0x59, 0x19, 0xED, 0xA1, 0x47, 0x5F, 0xBF, 0xC0, 0x6C, 0x50, 0xCA, - 0x7C, 0xF3, 0x01, 0x40, 0xAE, 0xD2, 0x06, 0x29, 0x68, 0xAF, 0xDA, 0xD5, - 0x42, 0x5B, 0x75, 0xA3, 0xD0, 0xC1, 0x95, 0x6D, 0xB5, 0xB5, 0x1C, 0x63, - 0x7D, 0x3F, 0x8F, 0x37, 0x84, 0x67, 0x69, 0xF9, 0xF4, 0x17, 0x03, 0xAB, - 0xD8, 0x79, 0x0B, 0x8F, 0xB8, 0x78, 0x6C, 0x7B, 0xE6, 0x43, 0xA4, 0x87, - 0x39, 0x3E, 0x57, 0xC6, 0x69, 0x13, 0x41, 0x8A, 0x14, 0x53, 0xBD, 0x1B, - 0x44, 0x51, 0x96, 0x87, 0x4A, 0xEB, 0xD4, 0xCB, 0xE1, 0x65, 0x4A, 0x2F, - 0xF6, 0xAC, 0x8A, 0x58, 0x94, 0x87, 0xC0, 0xB8, 0x19, 0x7F, 0x88, 0xC2, - 0xDE, 0x9A, 0x8E, 0x57, 0xD7, 0xD5, 0xDB, 0x92, 0x8C, 0x16, 0xB7, 0x85, - 0x93, 0xE1, 0x7E, 0x16, 0x80, 0x23, 0x2B, 0x5C, 0x83, 0x63, 0xB0, 0xDD, - 0x82, 0xDB, 0x21, 0x17, 0x22, 0x51, 0x35, 0xE3, 0x22, 0x36, 0x2B, 0xDA, - 0x5E, 0xE5, 0x48, 0xEA, 0xC5, 0x23, 0x05, 0x8E, 0xD1, 0xFF, 0xE6, 0x81, - 0xC5, 0x0B, 0xE1, 0x06, 0x0E, 0xD0, 0x2C, 0xA6, 0x43, 0xF3, 0x89, 0x5A, - 0x67, 0xBD, 0x33, 0xE6, 0xC8, 0x5E, 0xAC, 0x83, 0xB5, 0xDC, 0x0E, 0x98, - 0xAB, 0x32, 0x5A, 0x25, 0xFD, 0xE4, 0x77, 0x48, 0x11, 0xE6, 0x81, 0x22, - 0x26, 0x2C, 0x95, 0x3E, 0xDB, 0x5E, 0x74, 0x6C, 0x5E, 0x3B, 0x58, 0x09, - 0x89, 0x3F, 0x4A, 0xB8, 0xAF, 0x53, 0xE2, 0x45, 0x3B, 0x63, 0xB5, 0xEE, - 0x15, 0xDF, 0x0B, 0x3E, 0x29, 0xF1, 0xAF, 0x54, 0x69, 0xB2, 0x89, 0xF3, - 0x42, 0x92, 0x14, 0xF0, 0xC0, 0xC5, 0x25, 0x7F, 0xDF, 0x42, 0xDE, 0xC1, - 0x29, 0x60, 0x1A, 0x62, 0xFB, 0x0C, 0xF8, 0xC6, 0x57, 0x8B, 0x1E, 0x82, - 0x06, 0x35, 0xA9, 0x06, 0x41, 0xAC, 0x76, 0x7E, 0x8C, 0x84, 0xE2, 0xF9, - 0x18, 0x69, 0xC4, 0xD2, 0xB7, 0xB1, 0xBE, 0xDB, 0x83, 0x92, 0xA8, 0x7F, - 0x32, 0xC7, 0xF4, 0x08, 0xE0, 0x26, 0xBE, 0x2D, 0x6B, 0x76, 0x9D, 0x68, - 0xE3, 0x4B, 0xC9, 0x1A, 0x0A, 0xE4, 0x77, 0x19, 0xB8, 0xB2, 0xBE, 0x46, - 0x2A, 0x3C, 0x76, 0xB7, 0x54, 0x6F, 0x41, 0x59, 0x21, 0x7A, 0xA6, 0x44, - 0xCE, 0x74, 0xA9, 0xD4, 0x13, 0x47, 0xD1, 0x55, 0xA0, 0xF0, 0x85, 0x20, - 0x80, 0xDF, 0x4E, 0x7D, 0xF4, 0xB2, 0xBE, 0x75, 0x9A, 0xA2, 0x10, 0xC2, - 0xFD, 0xB1, 0xB9, 0x8E, 0x14, 0x80, 0xB6, 0x5B, 0x8A, 0x6A, 0x81, 0x37, - 0x8C, 0x03, 0x51, 0x85, 0x25, 0xD7, 0x85, 0x6A, 0xC8, 0x0A, 0x1F, 0x24, - 0xB6, 0x2C, 0xB0, 0x1A, 0x20, 0x23, 0xCB, 0xB5, 0xF8, 0x19, 0x88, 0x63, - 0x67, 0xB7, 0xCD, 0x5B, 0x4F, 0x3C, 0xAA, 0xE6, 0x90, 0xCC, 0x6A, 0xDD, - 0xE0, 0x51, 0x29, 0x22, 0xFF, 0x17, 0x53, 0x62, 0x40, 0xF4, 0xB6, 0x5F, - 0x55, 0x65, 0x67, 0x79, 0x5B, 0x98, 0xA3, 0x58, 0x35, 0xB2, 0x21, 0xDB, - 0x0C, 0x6C, 0x20, 0x07, 0x3A, 0x58, 0xE5, 0x96, 0x7F, 0xB9, 0x1F, 0x31, - 0x7A, 0x8A, 0x64, 0xA8, 0x06, 0xAA, 0x56, 0x55, 0x2D, 0x0B, 0x8B, 0x71, - 0x78, 0x8B, 0x9F, 0xC1, 0x12, 0x54, 0x00, 0x5E, 0x2E, 0x76, 0x98, 0x99, - 0x77, 0xE3, 0x4D, 0x08, 0x47, 0xC2, 0xF1, 0xFB, 0xF9, 0xE1, 0x8D, 0x40, - 0x71, 0x67, 0xF9, 0x15, 0x34, 0xED, 0x10, 0x63, 0x63, 0xA2, 0x2A, 0x59, - 0x0B, 0x3E, 0xA2, 0xB6, 0xC2, 0x03, 0x19, 0x8B, 0x7C, 0x76, 0x17, 0xEF, - 0x6B, 0xE3, 0x1F, 0xBF, 0x32, 0xDC, 0xF4, 0x2E, 0x69, 0x15, 0x54, 0x40, - 0x78, 0x97, 0x13, 0x2D, 0xB5, 0x7D, 0x18, 0x91, 0x40, 0x84, 0x8F, 0x92, - 0x44, 0x32, 0x42, 0x9F, 0xD1, 0x2D, 0xEA, 0x82, 0x48, 0x39, 0x49, 0x19, - 0x07, 0xC6, 0x32, 0x9F, 0xD5, 0x87, 0x80, 0x92, 0x78, 0xDA, 0x9A, 0x93, - 0x90, 0x71, 0xDD, 0xC4, 0x6D, 0xC3, 0x74, 0xA6, 0xC9, 0x88, 0x98, 0xFF, - 0x8A, 0x81, 0x50, 0xAC, 0x73, 0x49, 0x0A, 0x75, 0x27, 0x02, 0xAF, 0x81, - 0xB8, 0xAD, 0x83, 0xA9, 0x08, 0x29, 0xF0, 0x78, 0x4A, 0x32, 0xDB, 0x10, - 0xA4, 0x5E, 0xFA, 0x3B, 0x49, 0xBD, 0xA5, 0xE1, 0xE6, 0x0B, 0xDB, 0x6F, - 0x31, 0x18, 0xDC, 0xA7, 0x63, 0xD0, 0xBA, 0xC7, 0xA3, 0x0A, 0x88, 0x76, - 0xA8, 0x6C, 0x4B, 0xBE, 0x3A, 0xD6, 0x81, 0x20, 0xEF, 0xD4, 0x36, 0x4C, - 0x2E, 0xBD, 0x22, 0x56, 0x5E, 0xE9, 0xBB, 0x25, 0x75, 0x54, 0x33, 0xF6, - 0x1B, 0x7F, 0xD8, 0x95, 0x49, 0x9B, 0xB1, 0x30, 0x3E, 0x6F, 0x17, 0x91, - 0x42, 0x82, 0x42, 0x81, 0x16, 0x56, 0xCF, 0x2D, 0xC2, 0x34, 0x6C, 0x38, - 0xA0, 0x42, 0x14, 0x7A, 0x13, 0x9D, 0x38, 0xC1, 0x6D, 0x3A, 0x3D, 0x0E, - 0x24, 0x2C, 0x23, 0xE3, 0xBC, 0x36, 0x2A, 0x97, 0x05, 0x9E, 0x31, 0x9A, - 0xF2, 0x88, 0x84, 0xA2, 0x28, 0xB8, 0xB3, 0x40, 0x3E, 0xE8, 0x5F, 0x44, - 0x32, 0x7E, 0xD7, 0x64, 0xFE, 0x37, 0x51, 0x32, 0xD1, 0x59, 0x4E, 0xB8, - 0x98, 0xC4, 0x87, 0x50, 0xB0, 0x0C, 0xAD, 0xE8, 0x98, 0x20, 0xA2, 0xAA, - 0xFC, 0x94, 0xCF, 0x87, 0xFB, 0x60, 0xDB, 0xBF, 0x93, 0x7E, 0xBD, 0x5F, - 0x13, 0x6C, 0xC9, 0x06, 0x34, 0xD5, 0x8A, 0xED, 0x5D, 0xAC, 0x77, 0xC9, - 0x84, 0xD5, 0x05, 0x61, 0x71, 0x4E, 0x69, 0xE1, 0xC6, 0xFD, 0x12, 0x3F, - 0x37, 0x3F, 0xEE, 0x1D, 0x93, 0x6E, 0xF3, 0x32, 0x18, 0x26, 0x87, 0x2A, - 0x7C, 0x0F, 0x75, 0x1A, 0x06, 0x61, 0x76, 0x22, 0x18, 0x39, 0x24, 0x49, - 0xA7, 0xF7, 0x81, 0x51, 0x1E, 0x8F, 0x86, 0x76, 0xE3, 0xF2, 0xF0, 0xCF, - 0x8B, 0xB1, 0x5E, 0xFA, 0xA7, 0xF3, 0x0F, 0x63, 0x6B, 0x4D, 0x0B, 0x71, - 0x3A, 0xAB, 0x60, 0x76, 0x01, 0xA5, 0x28, 0x4D, 0xB4, 0xBF, 0xDB, 0x8E, - 0x2B, 0xE1, 0xD6, 0xE6, 0xC8, 0x8F, 0xE6, 0x79, 0xD6, 0x19, 0xD9, 0x3A, - 0x6F, 0x0C, 0xDC, 0xC0, 0x31, 0x61, 0x70, 0x21, 0xE4, 0xFA, 0x43, 0x43, - 0x03, 0xFC, 0x88, 0xA8, 0x77, 0xCA, 0xE6, 0x79, 0x59, 0x84, 0x5D, 0x2B, - 0x0A, 0xB7, 0x13, 0x1B, 0x2C, 0xEC, 0xDD, 0x8A, 0x26, 0xE9, 0xB3, 0x69, - 0x4F, 0x72, 0xCB, 0x82, 0x2E, 0x54, 0x00, 0xD1, 0x19, 0xA5, 0x0F, 0xB2, - 0x5F, 0xCA, 0x3C, 0xB6, 0x5F, 0x8B, 0xC8, 0xD4, 0x21, 0xCF, 0x26, 0x83, - 0x5A, 0xD2, 0xCA, 0xFF, 0x26, 0x46, 0x5E, 0xE8, 0x2C, 0x0F, 0xA7, 0xBA, - 0x8E, 0xCD, 0xBB, 0xB0, 0x70, 0x78, 0xA2, 0xF4, 0x8F, 0x9D, 0x0F, 0x23, - 0x29, 0xF4, 0xBC, 0xFC, 0x54, 0x22, 0x00, 0x7B, 0x88, 0x0F, 0x87, 0x08, - 0xF2, 0x37, 0x3E, 0x07, 0x4E, 0xEF, 0xF3, 0x4F, 0x96, 0x7B, 0xB3, 0xA4, - 0x1D, 0x45, 0x3D, 0x88, 0x5D, 0xC2, 0xA8, 0xFA, 0x71, 0xBE, 0xA6, 0x1F, - 0x7E, 0x77, 0xD5, 0x48, 0x23, 0x73, 0x1C, 0x62, 0xF5, 0x98, 0x8E, 0xB7, - 0x67, 0xB1, 0xC8, 0xFA, 0xD7, 0xCB, 0x08, 0x0A, 0x64, 0x57, 0x93, 0x7E, - 0x8E, 0xF2, 0x20, 0xAA, 0xB5, 0x06, 0x8D, 0x12, 0xE2, 0xB8, 0x4D, 0xFC, - 0xC8, 0x23, 0xAB, 0x61, 0x05, 0xE4, 0x46, 0x87, 0x15, 0x25, 0x23, 0x43, - 0x15, 0x32, 0x63, 0x9E, 0x79, 0xFA, 0xBE, 0x10, 0x2B, 0xA3, 0x49, 0xA0, - 0x80, 0xB0, 0x3F, 0x50, 0x68, 0xF5, 0xC0, 0x7C, 0x55, 0xA2, 0x58, 0x92, - 0xD4, 0xF3, 0xA0, 0xEE, 0x83, 0x33, 0x71, 0xE6, 0xAB, 0x77, 0x44, 0x25, - 0x5D, 0xBF, 0x57, 0x91, 0x25, 0x14, 0x0C, 0x5D, 0x07, 0xA0, 0x8F, 0x82, - 0x9C, 0xA8, 0x33, 0x05, 0x25, 0x5F, 0x6B, 0x20, 0xB1, 0x92, 0xDC, 0x4E, - 0xDA, 0x6D, 0xC4, 0x85, 0xE7, 0xDE, 0x00, 0xAD, 0x0E, 0x45, 0x9A, 0x3E, - 0xBF, 0x1E, 0x7B, 0xF1, 0x94, 0x11, 0x77, 0xCE, 0xE2, 0xF0, 0x7B, 0x9A, - 0x85, 0x46, 0x98, 0x27, 0x44, 0xCC, 0xC7, 0x3F, 0x2D, 0x6F, 0xE2, 0xD3, - 0xDF, 0x6E, 0x6D, 0x74, 0xFD, 0xC0, 0xEF, 0x8C, 0xA3, 0x71, 0xEA, 0xA4, - 0x56, 0x59, 0x57, 0x23, 0x78, 0x87, 0x16, 0x8C, 0x1E, 0x63, 0x9C, 0xE2, - 0xA7, 0x28, 0x2A, 0x64, 0xC0, 0x97, 0x34, 0xB0, 0xD5, 0x78, 0x4C, 0xC3, - 0xB2, 0x5D, 0x9B, 0x89, 0x3F, 0xD3, 0x7E, 0xD2, 0x8A, 0x78, 0x8C, 0x1A, - 0x82, 0xB2, 0xA5, 0xFD, 0x37, 0xE6, 0x64, 0x32, 0xF0, 0xC9, 0xDE, 0xAF, - 0xA6, 0xBD, 0xB9, 0xDD, 0xE1, 0xF6, 0x2D, 0xC1, 0x17, 0x15, 0xF1, 0x73, - 0xA4, 0x4C, 0x65, 0x11, 0x92, 0xDC, 0x61, 0xFD, 0x0C, 0x60, 0x49, 0x43, - 0x54, 0xAC, 0xC9, 0xD7, 0xD5, 0x85, 0x09, 0xD4, 0x57, 0x74, 0x18, 0xD6, - 0x53, 0xEB, 0x26, 0xAE, 0x13, 0xCE, 0x0C, 0x6F, 0x7C, 0x11, 0x90, 0x02, - 0xB9, 0x46, 0xB8, 0xEC, 0x25, 0x31, 0xE2, 0xBA, 0xD4, 0xE4, 0x19, 0x1F, - 0xF8, 0xB9, 0x6D, 0xA6, 0x7A, 0xE8, 0x03, 0x9A, 0x94, 0x9F, 0x26, 0x3B, - 0xE0, 0x1A, 0x32, 0xAD, 0x73, 0x3C, 0xB7, 0xE4, 0x32, 0x6F, 0x51, 0x3B, - 0x3D, 0x83, 0x86, 0xD7, 0x62, 0x6D, 0xF8, 0xDF, 0x5C, 0xB2, 0x59, 0x92, - 0xAE, 0x52, 0xA7, 0xFE, 0xA9, 0x9B, 0x0F, 0xD8, 0x5C, 0xCA, 0x50, 0xC3, - 0xD7, 0x7C, 0x8E, 0x80, 0x1E, 0xCE, 0xC9, 0x8E, 0x6B, 0x7A, 0x4F, 0x1B, - 0x3A, 0x1E, 0x91, 0x18, 0x4C, 0x01, 0x50, 0x47, 0x54, 0x65, 0xF2, 0x72, - 0xA1, 0x83, 0xE2, 0x86, 0x9B, 0x93, 0x07, 0x75, 0xE4, 0x33, 0x47, 0xB5, - 0xBD, 0x42, 0xB2, 0x30, 0x6B, 0x69, 0x1F, 0xE9, 0xB3, 0x58, 0x91, 0x95, - 0x7B, 0xED, 0xC3, 0xF2, 0x46, 0x28, 0xB5, 0x18, 0x21, 0x27, 0x57, 0xF2, - 0x39, 0xE6, 0x8A, 0x28, 0xA7, 0x7D, 0xFB, 0x01, 0xF2, 0x7B, 0x56, 0x5A, - 0xC4, 0x85, 0x5A, 0x41, 0x96, 0xF7, 0xF7, 0xC5, 0x91, 0xA4, 0x89, 0x9A, - 0x09, 0x91, 0xBB, 0xE9, 0x29, 0x92, 0x7F, 0xE6, 0x5B, 0x94, 0x8E, 0x93, - 0x43, 0x90, 0x53, 0x0F, 0x10, 0xD7, 0x7E, 0x04, 0x28, 0xB7, 0xF7, 0x14, - 0xB3, 0x42, 0x5E, 0xDF, 0xB5, 0xAA, 0xE4, 0xF7, 0xED, 0x98, 0x43, 0xC6, - 0x8C, 0xFA, 0x7C, 0xB0, 0x71, 0xB1, 0xE9, 0x64, 0x65, 0xBB, 0x58, 0xCC, - 0x73, 0x5F, 0x6A, 0x5A, 0x86, 0x2D, 0x2E, 0x89, 0xB4, 0x5A, 0xFE, 0x16, - 0x5B, 0x64, 0x56, 0x27, 0x38, 0xC2, 0x1D, 0x1C, 0xF0, 0xC5, 0x0B, 0x80, - 0x8D, 0x6F, 0x2E, 0x0C, 0x7B, 0x56, 0xEF, 0x23, 0xE5, 0xFC, 0xD2, 0x55, - 0xF6, 0x9C, 0xF7, 0x5F, 0xB5, 0xEC, 0xB7, 0xEE, 0xC4, 0xEC, 0xFE, 0xD6, - 0xAA, 0xEC, 0x24, 0xB8, 0xB7, 0x98, 0x8D, 0x0B, 0x12, 0x36, 0xAC, 0x5B, - 0x3E, 0x87, 0x29, 0x21, 0x9C, 0xFD, 0x84, 0xFD, 0xF5, 0x10, 0xA4, 0xE8, - 0x1C, 0x4F, 0x16, 0x45, 0xBF, 0xC9, 0x18, 0x9F, 0xDE, 0xF1, 0x96, 0x64, - 0x58, 0x61, 0xF1, 0x41, 0x82, 0xE2, 0xDA, 0xA3, 0xE4, 0x86, 0x0F, 0xB7, - 0xCA, 0x17, 0x17, 0x2A, 0x7D, 0xAC, 0x9F, 0xB3, 0x8E, 0x65, 0x63, 0x80, - 0x64, 0x8E, 0x6F, 0xDB, 0xD4, 0x05, 0x65, 0xEE, 0x13, 0x1C, 0xE6, 0x51, - 0x53, 0x01, 0xA1, 0xE2, 0xA1, 0x3E, 0x46, 0x82, 0xBB, 0x4A, 0x7E, 0xC1, - 0x4A, 0x12, 0xBB, 0x56, 0xA2, 0x2F, 0x81, 0xC0, 0x0F, 0x47, 0x7F, 0xA1, - 0xD9, 0x8F, 0x21, 0xC5, 0x48, 0x34, 0xF0, 0x7F, 0x07, 0xE8, 0xB4, 0x0C, - 0x37, 0xEA, 0x4A, 0x76, 0x5E, 0x98, 0xA0, 0x87, 0x08, 0xC1, 0x51, 0x3D, - 0xED, 0xC6, 0xA2, 0x75, 0x90, 0xB4, 0x23, 0xFC, 0x3E, 0x36, 0x4A, 0x9A, - 0xEA, 0x25, 0x1F, 0x62, 0x41, 0x69, 0xCC, 0x8C, 0xB0, 0xB7, 0xAA, 0x6B, - 0x67, 0xC9, 0x85, 0x7F, 0x92, 0xC0, 0x7A, 0x30, 0x18, 0x35, 0xCD, 0xFD, - 0x85, 0xC4, 0x70, 0x23, 0x75, 0x45, 0x67, 0x79, 0xAB, 0xFE, 0x83, 0x4B, - 0xC9, 0x09, 0x78, 0xF1, 0x7F, 0xFA, 0xCC, 0xF2, 0x0A, 0x03, 0x0E, 0x43, - 0x9A, 0xD1, 0xBF, 0x53, 0xA8, 0x1E, 0x0F, 0x75, 0xC9, 0x14, 0x54, 0x07, - 0x6D, 0xCD, 0xC7, 0xB3, 0x5D, 0x14, 0x87, 0x29, 0x0C, 0x43, 0xED, 0x91, - 0xE3, 0x0A, 0xD0, 0x6F, 0xAE, 0x3B, 0xB5, 0xA8, 0x29, 0x3C, 0xA5, 0x5E, - 0x0A, 0x51, 0xB4, 0x7F, 0x3D, 0x15, 0xCC, 0x1A, 0x35, 0xFB, 0xA4, 0x70, - 0xDC, 0x4B, 0x98, 0xD4, 0xBF, 0x28, 0xE6, 0x29, 0x42, 0x60, 0x71, 0xA7, - 0xAE, 0x02, 0xC0, 0xE4, 0xEE, 0x61, 0x48, 0x07, 0x84, 0x87, 0xAD, 0x5E, - 0x70, 0xA8, 0x03, 0x30, 0x81, 0xE3, 0xE3, 0x53, 0x28, 0xFC, 0x06, 0xF8, - 0x37, 0x19, 0x69, 0xA1, 0xD2, 0x7A, 0xDB, 0x91, 0xAD, 0xB2, 0x8E, 0x51, - 0xE1, 0xC0, 0x0A, 0xEE, 0x70, 0x3B, 0xB7, 0x37, 0x96, 0x07, 0xBC, 0x66, - 0x3B, 0x10, 0x6F, 0x18, 0xCC, 0xA8, 0x8F, 0xDD, 0x6C, 0x30, 0x18, 0xEF, - 0x96, 0x09, 0xE5, 0x89, 0x47, 0x8E, 0xBA, 0x57, 0x8D, 0x8F, 0x63, 0x8A, - 0xAB, 0x30, 0xA0, 0x45, 0x1C, 0x4C, 0x0D, 0xB0, 0x72, 0x09, 0x0A, 0xC8, - 0x56, 0xD8, 0x45, 0x71, 0xD3, 0xB8, 0x03, 0xD3, 0xCD, 0x9E, 0x86, 0x53, - 0xA5, 0xD5, 0x58, 0xA5, 0x03, 0xE3, 0xFC, 0x5E, 0x1C, 0x63, 0x65, 0xE9, - 0x70, 0x53, 0xF4, 0x99, 0x71, 0x7A, 0x76, 0x2C, 0x2C, 0x38, 0xBE, 0x5A, - 0x20, 0xFF, 0xC0, 0x25, 0x16, 0x46, 0xA8, 0x65, 0x9B, 0xE0, 0xB1, 0x10, - 0x7D, 0xB2, 0x90, 0xBC, 0xE4, 0xB5, 0x22, 0xC7, 0xD6, 0x8A, 0xBB, 0x19, - 0x9F, 0xCD, 0x11, 0x62, 0x82, 0xFC, 0x8D, 0x36, 0xE2, 0x08, 0xF0, 0xDD, - 0x68, 0x60, 0x48, 0x09, 0x1F, 0xF0, 0xC5, 0x54, 0xE9, 0x47, 0x7D, 0x79, - 0xE6, 0xC4, 0xC1, 0xF1, 0xFF, 0x2D, 0x5C, 0xA3, 0xFD, 0xF2, 0xB1, 0xA7, - 0x89, 0xB7, 0xB9, 0x7C, 0x44, 0x28, 0xE5, 0x82, 0x36, 0x4D, 0x48, 0x34, - 0x01, 0x5B, 0x43, 0x36, 0x2D, 0x05, 0x93, 0xEE, 0xF5, 0x92, 0x73, 0xDF, - 0xA6, 0xBA, 0x3D, 0x5B, 0x96, 0x49, 0x73, 0xDF, 0x70, 0x9B, 0x7A, 0x70, - 0x5C, 0x30, 0x14, 0xB8, 0xB7, 0x46, 0xE0, 0xD7, 0xFF, 0x5C, 0x8E, 0x27, - 0x39, 0x0E, 0xEE, 0x99, 0x2F, 0x08, 0x1E, 0x95, 0xD4, 0x70, 0xB0, 0xC4, - 0x28, 0x83, 0x78, 0x92, 0x93, 0x46, 0xB9, 0xF9, 0xFF, 0x8C, 0x16, 0xA9, - 0x63, 0x71, 0xAF, 0xBD, 0x84, 0x1A, 0x25, 0xBE, 0xE8, 0xE3, 0xB2, 0x33, - 0x51, 0xB9, 0xB6, 0x0E, 0x12, 0xB8, 0xA7, 0x6E, 0x28, 0xBC, 0xA3, 0x66, - 0x24, 0x49, 0x4D, 0x45, 0xA4, 0x5C, 0xCD, 0x4D, 0x2E, 0x17, 0xFB, 0xC0, - 0xB5, 0xA7, 0x55, 0x34, 0x08, 0xD7, 0xC7, 0x54, 0x0A, 0xFE, 0xE6, 0x98, - 0x85, 0x6D, 0xAF, 0x42, 0x79, 0xED, 0x0A, 0xFA, 0xCF, 0xD3, 0xE2, 0x7C, - 0xB8, 0x24, 0xA5, 0xE1, 0x01, 0xA5, 0x94, 0x55, 0x61, 0xA0, 0x49, 0x1B, - 0x7C, 0x71, 0xA8, 0x96, 0x5A, 0x4C, 0xF5, 0xC5, 0x1E, 0x8D, 0xD9, 0x2E, - 0xBE, 0xC4, 0x13, 0x27, 0xD0, 0xC0, 0x67, 0xA7, 0x77, 0x86, 0x61, 0xAE, - 0x7E, 0x69, 0x53, 0xB4, 0x70, 0xC6, 0x1E, 0x62, 0x1A, 0x8B, 0xB3, 0x0A, - 0xC5, 0xDF, 0xF4, 0xFA, 0xEB, 0xC5, 0x50, 0x7E, 0xDE, 0xD5, 0x15, 0xB1, - 0x2E, 0x09, 0x75, 0xD7, 0x9E, 0xB1, 0x58, 0x76, 0x2F, 0xFE, 0x86, 0x0A, - 0xC2, 0x10, 0x1D, 0x84, 0xDF, 0x94, 0x11, 0xD0, 0x86, 0x06, 0xFA, 0x9E, - 0x00, 0xF0, 0x27, 0x51, 0x00, 0x43, 0xAF, 0xEA, 0x13, 0x4E, 0xC8, 0x48, - 0x5A, 0x57, 0xDB, 0x5C, 0x20, 0xDC, 0xF3, 0x7D, 0x2B, 0x77, 0x35, 0x20, - 0xBD, 0x17, 0x0C, 0x3A, 0x2C, 0x3B, 0x58, 0x7D, 0x9D, 0x40, 0xA0, 0xDF, - 0xD5, 0xBA, 0x84, 0xA2, 0x9E, 0x4C, 0x87, 0xA5, 0xF9, 0xED, 0xEA, 0xEB, - 0x98, 0x0D, 0x81, 0xD9, 0xCB, 0xE3, 0xD5, 0xA0, 0xF7, 0xFF, 0x2A, 0x28, - 0xE9, 0x6F, 0x08, 0xE4, 0xBA, 0x76, 0x16, 0x0A, 0xF5, 0x3C, 0x01, 0x11, - 0xB3, 0xBA, 0x4C, 0x7E, 0xC3, 0x1F, 0x0B, 0x91, 0x62, 0x82, 0xDD, 0x29, - 0x7C, 0x60, 0x5F, 0x56, 0xE5, 0x48, 0x7D, 0xB8, 0x4A, 0xC7, 0x1F, 0x7D, - 0xD5, 0xB7, 0x17, 0x9F, 0x91, 0xDD, 0xE3, 0xE0, 0x04, 0x14, 0xF3, 0x4C, - 0xD2, 0xB3, 0xC3, 0xAC, 0x7F, 0x63, 0x67, 0xFA, 0x1B, 0x14, 0x0E, 0x2A, - 0x8C, 0x82, 0xD8, 0x49, 0x8B, 0x24, 0x4B, 0xF3, 0x21, 0x86, 0x06, 0x91, - 0xC9, 0x81, 0xF9, 0x84, 0xC6, 0x2B, 0x12, 0xCF, 0x95, 0x32, 0x7A, 0xFD, - 0x9C, 0x1C, 0xFC, 0x3B, 0x3B, 0x06, 0xBA, 0x2C, 0x45, 0x88, 0xDA, 0x5B, - 0x5D, 0x90, 0xDC, 0x07, 0xBD, 0xEC, 0xAF, 0xB2, 0x06, 0x98, 0x05, 0xAC, - 0x1D, 0x41, 0xA1, 0xD5, 0x76, 0x9D, 0x7B, 0x59, 0x82, 0x9C, 0x46, 0x02, - 0xF4, 0x03, 0xB4, 0xFB, 0x70, 0x48, 0x73, 0xB2, 0x4C, 0x8B, 0xA6, 0xDB, - 0x11, 0xC5, 0x7E, 0xFE, 0x23, 0x4E, 0xC2, 0x2B, 0x0F, 0x95, 0x51, 0x2A, - 0x3B, 0x46, 0x1C, 0xB7, 0xBF, 0x51, 0xF0, 0xA4, 0xF8, 0xAD, 0x16, 0x96, - 0xAA, 0x6D, 0xBE, 0xFE, 0x45, 0x46, 0xEF, 0x8B, 0x96, 0xED, 0xE1, 0xE5, - 0xB5, 0xEF, 0x22, 0x8C, 0xBA, 0x3A, 0xB0, 0x2F, 0x9A, 0x34, 0x16, 0x52, - 0x56, 0x5A, 0x36, 0x8B, 0x50, 0x89, 0xBD, 0xC0, 0xFE, 0xAE, 0x2B, 0xBB, - 0x53, 0xAE, 0x76, 0x8D, 0xB6, 0x91, 0x9D, 0x32, 0x18, 0xF5, 0xD7, 0x1A, - 0xE5, 0x04, 0x05, 0xFD, 0xDC, 0x5B, 0x67, 0xBE, 0x34, 0x05, 0x03, 0x90, - 0xD5, 0xBF, 0xAA, 0x35, 0x8D, 0xB7, 0x63, 0x76, 0xC9, 0x98, 0x2B, 0x99, - 0xD6, 0x5A, 0xB4, 0x39, 0x4A, 0xAA, 0xDF, 0xEC, 0x82, 0x83, 0xC6, 0x80, - 0xA1, 0x86, 0x74, 0xC8, 0x8E, 0x37, 0xAB, 0x7A, 0xC2, 0x35, 0x99, 0x62, - 0xAD, 0x30, 0xD2, 0x4E, 0x30, 0xA4, 0x3F, 0xC6, 0x16, 0x9C, 0xBF, 0xD5, - 0x5C, 0x08, 0xF8, 0xF4, 0x35, 0x20, 0x86, 0xF4, 0x0C, 0x12, 0x56, 0xD4, - 0xDB, 0x73, 0xDB, 0x82, 0x30, 0x73, 0xD2, 0x60, 0xCF, 0xF7, 0xA8, 0xF6, - 0xC8, 0x71, 0xB2, 0x6E, 0xC3, 0x65, 0x05, 0x07, 0x6C, 0x9C, 0x3F, 0xD7, - 0xC9, 0x6E, 0x09, 0xFF, 0x9E, 0xF0, 0x68, 0xB6, 0xE0, 0xDB, 0x6A, 0x1F, - 0xE9, 0xBC, 0x8C, 0xC1, 0xEB, 0xC5, 0x2A, 0x8B, 0x99, 0x23, 0xFC, 0x35, - 0xAF, 0xC1, 0x4A, 0xD8, 0x62, 0x28, 0x95, 0x4C, 0xD5, 0x93, 0x21, 0xBC, - 0x19, 0x52, 0xA0, 0x71, 0x3C, 0x2B, 0x3F, 0x88, 0x68, 0xA0, 0xE0, 0x16, - 0x10, 0x85, 0xCA, 0xDB, 0x45, 0x96, 0xBD, 0x44, 0xB3, 0x24, 0xE2, 0xCB, - 0xE6, 0xE7, 0xC9, 0xDD, 0x7A, 0x78, 0x9B, 0x7C, 0x1E, 0x28, 0x2B, 0xC2, - 0x2B, 0x53, 0x12, 0xB2, 0xD7, 0xB8, 0x59, 0x41, 0x19, 0x3D, 0xF9, 0x6F, - 0x34, 0xDB, 0x76, 0x43, 0x8C, 0x21, 0x2A, 0xC2, 0xAB, 0x4B, 0x0D, 0xC5, - 0x0A, 0x92, 0x41, 0xD2, 0xD2, 0xEB, 0x40, 0x7C, 0x14, 0x5D, 0x73, 0x3D, - 0x6C, 0x42, 0xAC, 0xF1, 0xC8, 0x37, 0xCD, 0xC3, 0xC0, 0xDD, 0xC0, 0x42, - 0x35, 0x6A, 0x99, 0xF3, 0x7F, 0x63, 0xE1, 0x17, 0xB5, 0x8F, 0xC3, 0x2C, - 0xF5, 0x67, 0x4A, 0x96, 0x25, 0xDD, 0xC9, 0x06, 0x3A, 0x86, 0x3C, 0x2B, - 0x23, 0x04, 0xB0, 0x53, 0x3C, 0x82, 0xDD, 0x7E, 0xAE, 0x1A, 0xF4, 0x76, - 0x65, 0x57, 0xF1, 0x7F, 0xBC, 0x5C, 0xFC, 0xB0, 0xBB, 0x04, 0x13, 0x9B, - 0x81, 0x9C, 0x70, 0x87, 0xFE, 0x6C, 0xC2, 0x9B, 0x88, 0x83, 0x3C, 0x4D, - 0x43, 0x0B, 0x64, 0xE3, 0x8C, 0x79, 0x25, 0x5D, 0xF7, 0x20, 0xCF, 0xAB, - 0x65, 0xC3, 0x9F, 0x17, 0xDA, 0x5A, 0x6F, 0x02, 0x81, 0xEC, 0x8A, 0x20, - 0x56, 0x09, 0x31, 0xE2, 0x0E, 0x80, 0x68, 0xE5, 0xA7, 0xFF, 0x70, 0x92, - 0x68, 0x09, 0x70, 0x93, 0x98, 0xD1, 0x73, 0xD4, 0x47, 0xA2, 0xD3, 0x91, - 0x00, 0xAB, 0xF0, 0x35, 0xD1, 0xBE, 0xB8, 0xC9, 0x9E, 0x82, 0x39, 0x17, - 0x2E, 0xB7, 0x8B, 0x0C, 0x7B, 0xAF, 0x84, 0x5C, 0xB5, 0x0A, 0xCE, 0x31, - 0x30, 0xE7, 0x38, 0x06, 0xAA, 0x10, 0x48, 0x2C, 0xA8, 0xE1, 0xBD, 0xBD, - 0xEE, 0x3D, 0xDA, 0x11, 0xA0, 0x0C, 0x07, 0xFA, 0xD0, 0x5B, 0xA5, 0x91, - 0xE5, 0x1D, 0x54, 0x6A, 0xBF, 0x53, 0x56, 0x55, 0x11, 0xC9, 0x5C, 0x89, - 0xFE, 0x72, 0x5A, 0xA7, 0x15, 0x9C, 0xBB, 0x37, 0x4E, 0x18, 0x89, 0xED, - 0xF2, 0x82, 0x83, 0xF1, 0x5B, 0x9D, 0x27, 0x3D, 0xCF, 0xF3, 0x0B, 0x0C, - 0xCB, 0x53, 0xF3, 0x13, 0xA8, 0xA1, 0x5A, 0x0E, 0xB2, 0x21, 0x8B, 0x16, - 0xD7, 0x5E, 0xAE, 0xD2, 0x7B, 0x3A, 0x2A, 0xCD, 0x23, 0x14, 0x0F, 0xE7, - 0x0D, 0x81, 0x82, 0xF2, 0x41, 0x8B, 0x77, 0x53, 0x16, 0xAE, 0xC7, 0xDF, - 0xF7, 0xD1, 0x91, 0x8B, 0x73, 0xA5, 0x0E, 0x9F, 0xC3, 0xBF, 0x2C, 0xC3, - 0xE4, 0xB7, 0x60, 0x60, 0xF7, 0xCA, 0x95, 0x6D, 0xFA, 0x4F, 0x66, 0xC2, - 0x98, 0xA0, 0x72, 0xC9, 0x0C, 0x9E, 0x6B, 0xFD, 0x5D, 0x14, 0x8B, 0x9E, - 0x7F, 0xA1, 0x20, 0x48, 0x99, 0x09, 0xDC, 0xAA, 0xAB, 0xB4, 0x46, 0x10, - 0xAB, 0x1B, 0x77, 0x98, 0x2F, 0x7D, 0xE0, 0xD4, 0x18, 0x64, 0x4A, 0x5C, - 0xBA, 0x23, 0x3C, 0x7E, 0x2F, 0x96, 0x13, 0xC6, 0x4D, 0x38, 0xED, 0xCE, - 0x4D, 0xB3, 0x02, 0x23, 0xAE, 0x9E, 0xD8, 0x8A, 0xC0, 0x17, 0x39, 0x91, - 0x75, 0x33, 0x6A, 0xA9, 0x75, 0x12, 0xE3, 0x65, 0x19, 0x30, 0x98, 0x00, - 0x4D, 0x82, 0xDB, 0xA3, 0xA2, 0xE7, 0x11, 0x51, 0x7A, 0xA1, 0xFE, 0xD2, - 0x4E, 0xEA, 0xBB, 0xCD, 0xA1, 0x29, 0xB0, 0xB3, 0x63, 0x23, 0x54, 0x11, - 0x0B, 0xF3, 0xBD, 0x82, 0xA4, 0x60, 0xC2, 0xFE, 0xE9, 0x5C, 0xD7, 0xB5, - 0xDA, 0x7D, 0x6C, 0x3D, 0x57, 0xD1, 0xF9, 0x90, 0x03, 0x0B, 0xE8, 0xC1, - 0x20, 0xEE, 0x46, 0x68, 0x18, 0x95, 0x66, 0x3C, 0x01, 0x2A, 0xE8, 0x84, - 0xC1, 0x26, 0x3B, 0x15, 0xBB, 0x20, 0x5E, 0x3B, 0x57, 0x0E, 0x59, 0xEA, - 0x1C, 0xD3, 0x6C, 0xC7, 0x35, 0xE7, 0x23, 0xFE, 0x40, 0x37, 0x84, 0x2D, - 0x70, 0x0F, 0xE9, 0x2F, 0xB2, 0x22, 0xEA, 0xB9, 0xB6, 0x93, 0xDC, 0x67, - 0xE1, 0xFB, 0x0E, 0x34, 0x91, 0x35, 0x76, 0x52, 0x03, 0x27, 0x79, 0x42, - 0x55, 0x1D, 0x5B, 0x8D, 0xAA, 0x17, 0x5C, 0x64, 0x3D, 0x8D, 0xA1, 0x04, - 0xBE, 0x3E, 0x6D, 0x92, 0x6E, 0xE6, 0x2C, 0x0B, 0x6E, 0x9B, 0x8A, 0x5D, - 0x18, 0x05, 0xB8, 0xE4, 0x18, 0x6E, 0x9E, 0x90, 0x74, 0xD3, 0x1D, 0x33, - 0x4D, 0x72, 0xF5, 0x99, 0xE3, 0x2B, 0x2A, 0x0C, 0x11, 0x5C, 0x94, 0xB7, - 0x66, 0xCC, 0xAC, 0xF1, 0x0D, 0x8D, 0x20, 0xC5, 0x75, 0x20, 0x4C, 0x0A, - 0xB8, 0xBA, 0xCD, 0x0F, 0xD9, 0xF1, 0x59, 0x6E, 0xC8, 0x63, 0x5C, 0x9E, - 0xE5, 0xBB, 0x85, 0x93, 0xFE, 0x1F, 0xD9, 0x8C, 0x89, 0xB4, 0x7E, 0xD8, - 0xB5, 0xC6, 0x62, 0x03, 0xD1, 0xAB, 0x5F, 0xD2, 0xB4, 0x47, 0xC0, 0xC5, - 0xC9, 0x75, 0x14, 0x91, 0x37, 0xFE, 0x3B, 0x78, 0x1F, 0x56, 0x87, 0x13, - 0xF4, 0xCC, 0x3A, 0xBD, 0x2C, 0xC1, 0x61, 0xF5, 0xAB, 0x3A, 0xE8, 0x9C, - 0x97, 0xCA, 0xAA, 0xA3, 0x12, 0xC4, 0x70, 0x8F, 0x32, 0xDD, 0xEA, 0xE8, - 0xF8, 0x8A, 0x03, 0x65, 0x89, 0x99, 0x53, 0x45, 0x28, 0xF3, 0xA8, 0xF3, - 0x14, 0x80, 0xB4, 0xD6, 0x44, 0xD4, 0x02, 0xEE, 0x9C, 0x58, 0x46, 0xC1, - 0x4F, 0xEE, 0xFA, 0xCD, 0x63, 0x4D, 0x87, 0xE6, 0x22, 0x9F, 0xF9, 0xDA, - 0x77, 0xD0, 0x51, 0xAA, 0x1F, 0x2A, 0x2F, 0x48, 0x66, 0x55, 0xE0, 0x2A, - 0x5F, 0xEC, 0x12, 0xA6, 0x14, 0xAD, 0x7D, 0xDD, 0xC2, 0x7B, 0x3E, 0xE9, - 0x8F, 0x2C, 0xB8, 0x60, 0x7E, 0x03, 0x76, 0x28, 0x7C, 0x22, 0x18, 0x6B, - 0x53, 0x39, 0x21, 0x6A, 0xB2, 0x05, 0x75, 0x58, 0xB7, 0xB1, 0x49, 0x1B, - 0x11, 0x1D, 0xD6, 0xFA, 0xC8, 0x01, 0x77, 0x12, 0x16, 0x17, 0xB8, 0x71, - 0xC2, 0x6F, 0x12, 0xE0, 0xFA, 0xBF, 0x7A, 0xB3, 0xE3, 0xDB, 0xB6, 0x19, - 0x78, 0xAF, 0x25, 0x18, 0x4F, 0x7A, 0x21, 0x63, 0xF6, 0x68, 0x33, 0xCC, - 0xD9, 0x12, 0x4A, 0x36, 0x73, 0x3D, 0x7C, 0xA4, 0x6E, 0x5E, 0xFD, 0x5E, - 0x0D, 0x45, 0xDF, 0x68, 0x66, 0xC6, 0x3F, 0x42, 0xEF, 0xD5, 0x0A, 0x7D, - 0x41, 0x3E, 0x1B, 0x4E, 0x3F, 0x93, 0x4F, 0xAA, 0x0B, 0xB4, 0x34, 0x67, - 0xEC, 0xEF, 0x23, 0x6B, 0x87, 0x8A, 0xF9, 0x66, 0x48, 0x19, 0xF5, 0x92, - 0x57, 0xA8, 0x60, 0x53, 0xC3, 0x37, 0xF3, 0x61, 0x82, 0x42, 0xC3, 0x09, - 0x95, 0xBE, 0xE9, 0x1F, 0xBA, 0x1F, 0x01, 0xB6, 0x37, 0xC7, 0xD9, 0x65, - 0xAF, 0x2D, 0xB4, 0x42, 0x22, 0xC0, 0x54, 0x1A, 0x3B, 0x13, 0x07, 0x30, - 0x94, 0x15, 0x01, 0x17, 0x21, 0x36, 0x3A, 0x4F, 0xC3, 0x76, 0xC4, 0xA9, - 0x64, 0x0D, 0xE0, 0x4F, 0x93, 0xCD, 0x5D, 0x7D, 0xD4, 0xB6, 0xDE, 0xAC, - 0x9C, 0xB6, 0x79, 0x3B, 0xCE, 0x49, 0x35, 0x21, 0xE2, 0x20, 0xC2, 0x36, - 0x9E, 0xCF, 0x51, 0x4D, 0x1D, 0x41, 0x32, 0x05, 0xB0, 0x45, 0x85, 0xEF, - 0x68, 0x94, 0xE2, 0x56, 0x61, 0x7A, 0x08, 0xE7, 0x46, 0x3E, 0xBA, 0xEC, - 0x9E, 0x82, 0x17, 0x1B, 0xE4, 0xE1, 0x32, 0xCD, 0x9C, 0xF8, 0xC1, 0xE5, - 0x1C, 0x9E, 0x84, 0xBB, 0x20, 0x71, 0xF5, 0x6F, 0x0B, 0x55, 0x6F, 0x4C, - 0x96, 0x28, 0x08, 0x6E, 0x5D, 0xF2, 0xFE, 0xF9, 0xE2, 0xBB, 0xEF, 0x58, - 0xFC, 0x34, 0xEF, 0xD6, 0xF5, 0xB2, 0x77, 0x5F, 0x62, 0x4F, 0x8F, 0x32, - 0xD7, 0xAD, 0x14, 0x07, 0xFC, 0xAB, 0x53, 0x06, 0xC9, 0x65, 0x8A, 0x0F, - 0xDA, 0xDF, 0x4F, 0xA4, 0x88, 0x45, 0xFC, 0x17, 0x74, 0x1C, 0xE0, 0x9F, - 0xBC, 0x91, 0xF3, 0x7A, 0x9D, 0xE8, 0x92, 0xD6, 0x3C, 0x8E, 0x71, 0x65, - 0x34, 0x64, 0x4B, 0xAE, 0x41, 0x04, 0x37, 0x3E, 0xE3, 0x79, 0xA1, 0xD4, - 0x4F, 0x89, 0xE8, 0x3C, 0x1C, 0x36, 0x41, 0x66, 0x14, 0xA4, 0xCF, 0xC5, - 0x38, 0x59, 0xE6, 0x8C, 0x75, 0xE7, 0x6F, 0x3B, 0x20, 0x11, 0x41, 0x55, - 0x28, 0x67, 0x12, 0xD5, 0x67, 0x81, 0xC5, 0x76, 0x02, 0xC3, 0xC7, 0x03, - 0x1C, 0xC0, 0x2E, 0xDC, 0x7E, 0xD9, 0xAD, 0x24, 0xE0, 0x7A, 0x07, 0x8D, - 0xC7, 0xE5, 0x2B, 0x27, 0x13, 0xAC, 0x76, 0x46, 0x93, 0x4B, 0x3B, 0x1C, - 0xC7, 0xD2, 0x9E, 0xEF, 0x32, 0xEA, 0x3A, 0x43, 0xDC, 0x79, 0xD6, 0xE8, - 0x52, 0x89, 0xAB, 0xEE, 0x9F, 0x22, 0xAA, 0x02, 0xD7, 0x08, 0xE2, 0x50, - 0x94, 0x16, 0x09, 0x49, 0x5C, 0x70, 0x61, 0x97, 0xEA, 0x99, 0x42, 0xAC, - 0xFB, 0x97, 0xFA, 0x35, 0xA1, 0x80, 0xFD, 0x06, 0x44, 0xA3, 0x6F, 0xFC, - 0x39, 0x7A, 0xA2, 0x37, 0x87, 0x3B, 0x72, 0xC2, 0x7A, 0x2A, 0xBA, 0x54, - 0x6B, 0xF9, 0xFA, 0x75, 0x46, 0xE6, 0x1B, 0x3C, 0xE7, 0x21, 0xA0, 0xDE, - 0xC1, 0x26, 0xC7, 0x3F, 0x8C, 0xA1, 0x8A, 0xC5, 0xBD, 0x7D, 0xC6, 0x70, - 0xF7, 0xB6, 0x6B, 0x84, 0xCB, 0x20, 0x4B, 0x34, 0x4D, 0x50, 0xA5, 0xD8, - 0xF3, 0x50, 0xF2, 0xE7, 0xE0, 0xE0, 0x32, 0x07, 0x5F, 0xF6, 0x86, 0x06, - 0x9D, 0x31, 0x7A, 0xB0, 0x63, 0xB7, 0xB3, 0x04, 0x5B, 0x31, 0xA6, 0x9B, - 0x29, 0x27, 0x96, 0xB1, 0x5A, 0x41, 0x09, 0xE3, 0x13, 0x39, 0x8E, 0x0C, - 0x94, 0xFF, 0xD2, 0x2D, 0x8F, 0x91, 0x73, 0x43, 0xC7, 0xFA, 0x65, 0x56, - 0x70, 0x94, 0x0B, 0x5F, 0xA3, 0xD1, 0xCB, 0x4C, 0x95, 0x5F, 0x64, 0x8D, - 0xD2, 0x7C, 0x68, 0xBA, 0x31, 0x0D, 0x1C, 0x55, 0xB6, 0x2F, 0x96, 0xB7, - 0xB1, 0x79, 0xDE, 0x50, 0xB5, 0x8D, 0x4C, 0xC4, 0xD5, 0x3A, 0xE2, 0x13, - 0x80, 0x37, 0x68, 0x51, 0xDA, 0x33, 0x70, 0x95, 0x49, 0x57, 0xB5, 0x3F, - 0x3F, 0x2F, 0xDA, 0xC5, 0xE3, 0x63, 0x95, 0x63, 0x29, 0x96, 0x4A, 0xED, - 0xB5, 0x2F, 0x7D, 0xC2, 0xCC, 0x4C, 0x87, 0xDE, 0x49, 0xE2, 0xCA, 0x46, - 0x60, 0x38, 0x31, 0xB4, 0x65, 0x86, 0x3F, 0x91, 0x61, 0x8C, 0x11, 0x0F, - 0xAF, 0x6F, 0xED, 0xED, 0x4B, 0x9F, 0x32, 0xAB, 0x7A, 0xBB, 0x83, 0xCD, - 0xE9, 0x36, 0x58, 0x7E, 0x3D, 0xCD, 0xD1, 0x00, 0x41, 0x80, 0x41, 0x14, - 0xD3, 0xF1, 0xEA, 0x24, 0xF2, 0xD7, 0x79, 0x71, 0x71, 0x0B, 0x24, 0x5E, - 0x2B, 0xA8, 0x15, 0xCA, 0x20, 0x35, 0xF5, 0x8B, 0xED, 0xC6, 0xD7, 0x7B, - 0xAB, 0xF5, 0x74, 0x7E, 0x55, 0xEE, 0xCC, 0x92, 0xF0, 0xBB, 0x0D, 0xE4, - 0xF7, 0xD9, 0xD4, 0x74, 0x89, 0x87, 0xF2, 0xE2, 0xAA, 0x73, 0xDF, 0xCD, - 0x5C, 0xE1, 0x0D, 0xF1, 0xDA, 0xA9, 0x62, 0x33, 0x20, 0x61, 0x5B, 0xC4, - 0x17, 0x8A, 0xDA, 0xA3, 0xD1, 0xA7, 0xB1, 0x27, 0xA1, 0xD7, 0x41, 0x02, - 0x06, 0x4A, 0x18, 0xC7, 0xDE, 0x2B, 0xD2, 0xF9, 0xD2, 0x16, 0x43, 0x4B, - 0x02, 0x0E, 0xD6, 0x2F, 0x16, 0x28, 0xCA, 0x9C, 0x19, 0xAE, 0x27, 0x61, - 0xC8, 0x09, 0xD6, 0xAE, 0x89, 0x90, 0x52, 0x04, 0xC2, 0x17, 0x7D, 0x3D, - 0x41, 0x18, 0x20, 0x70, 0xB4, 0xBA, 0x83, 0x51, 0xE1, 0xF0, 0x23, 0x7E, - 0x9B, 0x4B, 0x56, 0xC7, 0x9F, 0x3D, 0x0D, 0xE6, 0x92, 0xED, 0xC0, 0xAD, - 0x46, 0xC3, 0x35, 0x94, 0xFB, 0xDB, 0x3C, 0xB3, 0x95, 0x9C, 0xFD, 0xA2, - 0x9E, 0x23, 0x49, 0xA6, 0xDC, 0xA0, 0x63, 0xC3, 0x5D, 0x37, 0xF1, 0x9C, - 0x57, 0xE7, 0x58, 0xD5, 0x28, 0xC4, 0x73, 0x2B, 0xE3, 0xBF, 0x14, 0xD3, - 0x83, 0xEC, 0x49, 0x03, 0x42, 0xD1, 0x3F, 0xE6, 0x22, 0xEE, 0xC5, 0x23, - 0x50, 0x64, 0x5F, 0xA6, 0x9F, 0x92, 0x5A, 0x69, 0xC5, 0x7D, 0x76, 0x81, - 0xB9, 0x0F, 0x43, 0x24, 0x94, 0x20, 0xF1, 0x51, 0xF7, 0x30, 0xF7, 0x6A, - 0x3A, 0x73, 0xEF, 0x5B, 0x39, 0xD8, 0x75, 0x0F, 0x78, 0xFB, 0x7A, 0xFD, - 0xEB, 0x80, 0xE8, 0xF0, 0x98, 0x4C, 0xE2, 0xDE, 0xA9, 0x5F, 0x75, 0x36, - 0x62, 0x3F, 0x7B, 0x66, 0xF1, 0xA8, 0xA7, 0x55, 0xD4, 0x6C, 0x03, 0xE8, - 0xFF, 0xD6, 0xBB, 0x50, 0x0E, 0x38, 0xFB, 0xD5, 0xD9, 0xB2, 0x4B, 0xFD, - 0xC5, 0x05, 0x08, 0x88, 0xBC, 0x90, 0x47, 0x15, 0xE1, 0x92, 0x04, 0x18, - 0x06, 0x4B, 0x13, 0x12, 0x12, 0xCE, 0xF6, 0xA4, 0x9A, 0xBC, 0x1B, 0x60, - 0x9E, 0x49, 0xBA, 0xC5, 0x56, 0x9D, 0x47, 0x21, 0x5F, 0xE5, 0x19, 0xFC, - 0x71, 0xCB, 0x8D, 0x6F, 0x9E, 0x91, 0x18, 0x6F, 0x6E, 0xF8, 0x07, 0xE9, - 0x6C, 0xB3, 0x6B, 0x94, 0x2C, 0xCF, 0xAC, 0x5F, 0x1C, 0x1A, 0xA1, 0xD7, - 0x8F, 0x9A, 0x1B, 0x49, 0x28, 0x22, 0xEA, 0x52, 0xDE, 0x0D, 0xB5, 0xF9, - 0x0E, 0x08, 0xA4, 0x78, 0x3B, 0x7F, 0x31, 0x1C, 0x75, 0x91, 0x0A, 0xC4, - 0x35, 0x68, 0x0D, 0xDF, 0x00, 0xEB, 0x31, 0x0C, 0x84, 0x62, 0xEC, 0xAF, - 0x82, 0xAD, 0x52, 0xA2, 0xE2, 0x1F, 0xFE, 0xAC, 0xBE, 0x4D, 0xFB, 0xCE, - 0x0C, 0x82, 0xE5, 0x4A, 0x4D, 0xD8, 0x98, 0x57, 0xFD, 0xE6, 0x83, 0x21, - 0x95, 0x25, 0xF3, 0xAD, 0x2E, 0xAD, 0x69, 0xB9, 0x4E, 0x1E, 0x4A, 0x29, - 0xF0, 0x75, 0xB2, 0xE2, 0x05, 0x7A, 0x4E, 0xF2, 0x7D, 0x1A, 0xFB, 0x03, - 0xB4, 0xEE, 0xA2, 0x69, 0x44, 0x42, 0x5C, 0x96, 0xFB, 0xE9, 0xC7, 0x42, - 0x74, 0x7A, 0x2F, 0xDE, 0xCC, 0xA4, 0x5C, 0x29, 0xA9, 0x8C, 0xB6, 0x18, - 0xBD, 0x0F, 0xB5, 0xB4, 0x79, 0x63, 0x87, 0xAA, 0x60, 0xCA, 0xE9, 0x7C, - 0x6A, 0xA9, 0x94, 0x0F, 0x7A, 0x5B, 0xEB, 0x4D, 0x14, 0x27, 0xC5, 0x27, - 0xDB, 0x98, 0x7A, 0xB4, 0x6A, 0x79, 0xCB, 0x27, 0xEB, 0x6E, 0x51, 0x9E, - 0x6C, 0x55, 0xFC, 0x40, 0xAF, 0xBF, 0x2F, 0x66, 0xED, 0xE1, 0xB0, 0x46, - 0x29, 0xCE, 0x04, 0x92, 0xF1, 0xF2, 0x9C, 0xA4, 0x9D, 0x0C, 0xFC, 0x85, - 0x57, 0xC4, 0x1D, 0x85, 0x28, 0x8A, 0xFD, 0xA7, 0xF1, 0x3E, 0x24, 0x10, - 0x90, 0xBE, 0x97, 0xCE, 0x15, 0x78, 0x7C, 0x46, 0x13, 0xB2, 0x5E, 0x42, - 0x4D, 0x67, 0x5D, 0x1F, 0x71, 0x7A, 0xB0, 0xAD, 0xB8, 0xAA, 0x8E, 0xA2, - 0x8E, 0x1E, 0x3F, 0xD1, 0x7C, 0xE4, 0x66, 0xCA, 0x06, 0xD7, 0xC8, 0xDC, - 0x9B, 0xC5, 0x87, 0x11, 0x99, 0x8D, 0xEF, 0xE9, 0xDA, 0xB3, 0x2F, 0x20, - 0x8D, 0x9F, 0xB0, 0x4B, 0xF8, 0xDE, 0x68, 0xC5, 0x88, 0xC2, 0x5D, 0x84, - 0xB9, 0xB5, 0x90, 0x7A, 0x41, 0x0C, 0x31, 0x33, 0x55, 0x9D, 0xD6, 0xBE, - 0x86, 0x15, 0xA9, 0xE3, 0xFD, 0xB0, 0xB9, 0x79, 0xF8, 0x5C, 0xF4, 0x4B, - 0x49, 0x74, 0x27, 0x81, 0xC1, 0xEC, 0xB4, 0x2B, 0x91, 0x7E, 0xF3, 0xC2, - 0x9D, 0x62, 0x35, 0x49, 0xF4, 0xE3, 0x8E, 0x4D, 0xEE, 0x44, 0xB7, 0xE2, - 0x20, 0xB1, 0x38, 0xC5, 0x30, 0xFD, 0x01, 0x6C, 0xCC, 0x6E, 0x76, 0xF9, - 0x6C, 0x27, 0xD1, 0x0F, 0x67, 0x04, 0xCF, 0xF1, 0x00, 0xB5, 0x6A, 0xD4, - 0xCD, 0x58, 0x76, 0xAF, 0x1C, 0xFF, 0x74, 0xD7, 0xA7, 0x77, 0x45, 0xCD, - 0x33, 0x4E, 0x45, 0xBD, 0xCC, 0x38, 0x5C, 0x6C, 0xF7, 0x7C, 0xF7, 0x2B, - 0xCF, 0x45, 0x2C, 0xC4, 0x73, 0xB1, 0x2D, 0x2B, 0xE6, 0x06, 0x0F, 0x4B, - 0xAB, 0x48, 0x1E, 0xF2, 0x58, 0x0C, 0x8B, 0x47, 0x4D, 0x81, 0x32, 0x23, - 0x7F, 0x7D, 0x2F, 0xF4, 0x80, 0x43, 0x3E, 0x8A, 0xDC, 0x5D, 0x1F, 0x27, - 0xE6, 0xA2, 0xDC, 0xC8, 0xB6, 0xF7, 0x63, 0x0E, 0x6D, 0xEB, 0xE8, 0x16, - 0x52, 0x69, 0x97, 0xF2, 0x61, 0x7B, 0x2C, 0x8A, 0x15, 0xD8, 0xE1, 0xE9, - 0x28, 0xFF, 0x54, 0x92, 0xF3, 0xCB, 0x72, 0x72, 0xB5, 0x23, 0x48, 0xE9, - 0x52, 0xA3, 0xC7, 0x3B, 0x1D, 0x05, 0x90, 0x26, 0x10, 0xA4, 0x42, 0x9B, - 0xA5, 0xAF, 0x7F, 0x99, 0x3B, 0x5A, 0x70, 0xA4, 0x6C, 0xF8, 0xB5, 0xC3, - 0x42, 0x46, 0x47, 0xEA, 0x62, 0xA0, 0x8F, 0x34, 0x5F, 0x5F, 0x0A, 0x88, - 0xB9, 0x19, 0x47, 0xFD, 0x94, 0x04, 0x05, 0x7C, 0x8B, 0x65, 0xC4, 0x1D, - 0xD2, 0xFC, 0xDD, 0x0E, 0x3A, 0x92, 0x8B, 0xE0, 0xCE, 0xBD, 0xF9, 0x1B, - 0xFB, 0x91, 0xD3, 0x90, 0x80, 0x08, 0x6B, 0x94, 0x20, 0xCC, 0xC8, 0xC9, - 0xF9, 0x60, 0x28, 0x7D, 0x6F, 0xDA, 0x5E, 0x64, 0xE0, 0x1C, 0x5F, 0xE9, - 0xB8, 0xC3, 0x33, 0x18, 0xA5, 0x60, 0xE4, 0xE1, 0x45, 0x1B, 0xEE, 0x20, - 0xFF, 0x40, 0x52, 0xFB, 0x3F, 0xD2, 0x03, 0x0A, 0x71, 0xD2, 0xCE, 0xC5, - 0x84, 0x98, 0x21, 0xE1, 0xF8, 0x13, 0xD6, 0x78, 0x21, 0x75, 0x3C, 0x22, - 0x1A, 0xCC, 0x67, 0x12, 0x9B, 0x31, 0x06, 0xB7, 0x5E, 0xE6, 0x4B, 0xC2, - 0x7E, 0x12, 0xCA, 0x6D, 0xD6, 0x95, 0x67, 0xDC, 0xF1, 0x7C, 0xC8, 0xAD, - 0x95, 0x53, 0x25, 0x7B, 0x16, 0xD3, 0x0B, 0xE4, 0xF4, 0x17, 0x86, 0xC6, - 0xA1, 0x2B, 0x28, 0xA9, 0x02, 0x1D, 0x48, 0x14, 0x42, 0x0A, 0x76, 0x95, - 0x3D, 0xC4, 0x2D, 0x77, 0x5A, 0x67, 0x6F, 0xDB, 0x81, 0xA4, 0xA4, 0x74, - 0x19, 0xA0, 0xFC, 0x2F, 0x9D, 0x26, 0x4D, 0x44, 0x44, 0xDD, 0xAE, 0xCB, - 0x85, 0xBC, 0x21, 0xBB, 0xFC, 0xDF, 0xDB, 0x54, 0xAA, 0x21, 0x95, 0x0C, - 0xFF, 0x2C, 0x17, 0x37, 0x5A, 0xFC, 0x4A, 0x39, 0x34, 0xED, 0xE4, 0x71, - 0x84, 0x5C, 0x28, 0xEB, 0x0A, 0x25, 0x16, 0xA4, 0xA1, 0x8B, 0x63, 0xB0, - 0xFB, 0x26, 0xF3, 0xD1, 0x37, 0x0E, 0x52, 0xF9, 0x77, 0x3D, 0xAA, 0x66, - 0xC7, 0xB9, 0xED, 0x84, 0x88, 0xFE, 0xEF, 0x33, 0x5A, 0x61, 0x87, 0x03, - 0x2A, 0x83, 0xDB, 0x4C, 0x73, 0xBE, 0xF9, 0x6A, 0x04, 0x3F, 0xEC, 0x6E, - 0xCC, 0x5D, 0xA5, 0x8F, 0xA1, 0xCB, 0x53, 0x86, 0x80, 0xC4, 0x21, 0xBA, - 0xC2, 0x2D, 0x65, 0xE7, 0xE2, 0x35, 0x97, 0x2C, 0xA6, 0xE2, 0x09, 0x76, - 0x10, 0xA2, 0xC0, 0x30, 0xDF, 0x9A, 0xDC, 0x38, 0x06, 0x3D, 0x05, 0x26, - 0x16, 0x4D, 0xA8, 0xA9, 0x1E, 0x07, 0x1D, 0x62, 0x6C, 0xA5, 0xCC, 0xEB, - 0x05, 0x21, 0x64, 0xD4, 0x3E, 0x4B, 0xB3, 0x96, 0x14, 0x75, 0xFC, 0x5C, - 0xCA, 0xDB, 0x1F, 0xDC, 0x41, 0x9D, 0x60, 0x05, 0xF8, 0x89, 0xC9, 0x7E, - 0x3B, 0x74, 0x75, 0x49, 0x34, 0x3A, 0x74, 0x79, 0xDF, 0x16, 0x3D, 0x6F, - 0xA1, 0xF3, 0x26, 0x29, 0x61, 0x5F, 0xBB, 0xEB, 0x62, 0x42, 0x3A, 0x7F, - 0x2F, 0xC5, 0x19, 0xD6, 0x77, 0x9E, 0x1D, 0xF5, 0x15, 0x71, 0x6F, 0x74, - 0x1E, 0xE5, 0xBA, 0x08, 0x21, 0x07, 0x64, 0x9F, 0x78, 0x5A, 0x11, 0x20, - 0xFB, 0x43, 0x4F, 0x4A, 0xFD, 0x6A, 0x2F, 0xB7, 0x66, 0x7A, 0xA5, 0x27, - 0xF7, 0x6F, 0x05, 0x85, 0xCC, 0xC2, 0xC5, 0xDE, 0x18, 0x43, 0xB9, 0x9F, - 0x84, 0xBA, 0x09, 0x1A, 0x0E, 0x7E, 0xBE, 0xBA, 0xE4, 0xD6, 0x1E, 0x9E, - 0x83, 0x7D, 0x1D, 0xED, 0xDE, 0x4D, 0x96, 0x91, 0x50, 0x2D, 0x54, 0x46, - 0x98, 0xC5, 0xE2, 0xE6, 0xE7, 0x6F, 0xB4, 0x06, 0xF0, 0x56, 0x4C, 0x2B, - 0xB1, 0xEC, 0xC4, 0x98, 0x87, 0x76, 0x00, 0xF8, 0x47, 0x70, 0x4F, 0x13, - 0x2C, 0xDE, 0x79, 0x9B, 0xB5, 0x90, 0xFA, 0xC3, 0xAA, 0x0D, 0xB6, 0xCC, - 0x37, 0xB2, 0x5D, 0xB7, 0x8B, 0x19, 0x96, 0x20, 0xFF, 0x0C, 0x21, 0x23, - 0x41, 0xA8, 0x15, 0x3F, 0x03, 0x01, 0x57, 0xA2, 0x7F, 0xF1, 0xE6, 0x4B, - 0x50, 0xC3, 0xD6, 0xF3, 0xEF, 0xE0, 0x7A, 0xEE, 0x76, 0xA0, 0x67, 0x22, - 0x09, 0x45, 0x91, 0x07, 0x87, 0x1E, 0xC6, 0x2A, 0x13, 0x45, 0x10, 0x0E, - 0x72, 0x9E, 0xFB, 0xA0, 0x9C, 0xA4, 0xA3, 0xE7, 0x17, 0xC5, 0x90, 0x30, - 0x42, 0x87, 0x1B, 0x3A, 0xC0, 0xD9, 0xA7, 0x9A, 0xEE, 0xDE, 0x42, 0xFE, - 0x96, 0xD3, 0x7A, 0x3E, 0xBE, 0xAF, 0xE9, 0xCD, 0xEF, 0xA6, 0xD9, 0xC6, - 0x0E, 0x2C, 0xA9, 0xC1, 0x6B, 0x99, 0x11, 0xC2, 0x91, 0x45, 0x0B, 0xC4, - 0xD0, 0xC3, 0xD7, 0xF9, 0x0B, 0x9A, 0x1E, 0x2E, 0xC7, 0x01, 0x22, 0x6A, - 0x75, 0x50, 0x89, 0x79, 0x07, 0x21, 0x8C, 0xF9, 0xA6, 0x15, 0x95, 0xC0, - 0xE3, 0xFC, 0x20, 0x65, 0x36, 0x2D, 0x5F, 0xAE, 0xFE, 0xCE, 0x97, 0x71, - 0xF5, 0x3A, 0xBD, 0xCB, 0xA1, 0x9F, 0x46, 0xA6, 0x3A, 0xA7, 0x7A, 0x26, - 0xA2, 0xDE, 0x36, 0x19, 0x15, 0xDE, 0x17, 0x7E, 0xD7, 0x5E, 0x4A, 0xEE, - 0xE2, 0xC9, 0x53, 0x25, 0x77, 0xC3, 0x18, 0xBB, 0xB4, 0xAA, 0x43, 0xFD, - 0x5C, 0x21, 0x8A, 0x37, 0xDB, 0x1C, 0x3D, 0x36, 0x2E, 0x6D, 0xEA, 0x61, - 0x72, 0x9E, 0xF1, 0x6F, 0xD1, 0x14, 0xF6, 0x29, 0x4E, 0xFD, 0xFD, 0x3D, - 0x4D, 0xB9, 0x25, 0x4B, 0x38, 0xA2, 0x00, 0xEB, 0x14, 0xBA, 0xEE, 0xB1, - 0x03, 0x84, 0x98, 0xF4, 0xCF, 0x05, 0x9E, 0x1C, 0x7A, 0x8F, 0xAE, 0x85, - 0x76, 0x57, 0xF4, 0x8E, 0x16, 0x06, 0x35, 0x77, 0xBB, 0x90, 0x41, 0x9E, - 0xCB, 0x52, 0x97, 0xCA, 0xC1, 0x7F, 0xA9, 0x01, 0x8B, 0x7D, 0xC4, 0xB8, - 0xD9, 0xDC, 0x01, 0x3D, 0x58, 0xF8, 0x10, 0xD1, 0xDF, 0x1A, 0x6A, 0x27, - 0xE2, 0x65, 0x47, 0x1A, 0xC3, 0x8C, 0xDB, 0xE4, 0xC5, 0x5C, 0x72, 0x0D, - 0xAB, 0x84, 0x71, 0x54, 0xE2, 0x0F, 0xBB, 0xDE, 0xE0, 0x1F, 0xB1, 0x70, - 0x08, 0x09, 0x6B, 0x43, 0x72, 0x76, 0x71, 0x7C, 0xA5, 0x87, 0x65, 0x11, - 0x7F, 0xA3, 0x17, 0x93, 0x1C, 0x88, 0x4C, 0x6D, 0x9E, 0x36, 0x17, 0x37, - 0x7F, 0x18, 0xDE, 0x6B, 0xC9, 0xEF, 0x04, 0x95, 0xE6, 0x0A, 0x20, 0xEF, - 0x30, 0x53, 0xED, 0x09, 0x1F, 0x08, 0xA3, 0x42, 0x1B, 0xA5, 0x5F, 0x21, - 0x9D, 0xFF, 0xE1, 0x13, 0x23, 0xC9, 0x36, 0xB4, 0x43, 0x1F, 0x34, 0x2A, - 0x18, 0xC5, 0x26, 0x42, 0xCB, 0xFB, 0xF3, 0x67, 0xA8, 0x5E, 0xF6, 0x14, - 0x50, 0x68, 0xA6, 0xF9, 0x6D, 0x78, 0xB5, 0xF3, 0x8A, 0x14, 0xE3, 0xFE, - 0xB5, 0x7C, 0x88, 0x11, 0x56, 0xDA, 0x9A, 0x62, 0x30, 0x46, 0x34, 0xFB, - 0x9D, 0x99, 0xE0, 0xA6, 0xB2, 0x2F, 0xA6, 0xF3, 0x7F, 0x2D, 0xAC, 0x71, - 0x29, 0x0A, 0x3D, 0x86, 0xB0, 0x75, 0x97, 0xA4, 0xC3, 0x28, 0x9D, 0x6D, - 0x0F, 0xA1, 0x3A, 0xB1, 0xC7, 0xEB, 0xC5, 0x3D, 0x38, 0xE5, 0xED, 0xA6, - 0xD9, 0xDF, 0x25, 0x38, 0x81, 0xBC, 0xBA, 0x73, 0x80, 0x09, 0xED, 0x98, - 0x59, 0xB9, 0xD9, 0x71, 0xD1, 0xD8, 0x6B, 0xF7, 0x08, 0xF8, 0x8E, 0x0A, - 0xD2, 0x57, 0x66, 0xEA, 0x02, 0x5F, 0x8B, 0xF3, 0xAD, 0x62, 0xCA, 0x25, - 0x83, 0xD3, 0xA4, 0x0C, 0x3A, 0x68, 0x8E, 0xFC, 0x8A, 0xDE, 0xD8, 0x42, - 0x47, 0x6C, 0x38, 0x57, 0xE6, 0xD2, 0x6B, 0x42, 0xDD, 0x68, 0x8E, 0xBA, - 0xCD, 0xC7, 0xFB, 0x1C, 0x72, 0x6E, 0xE8, 0x2C, 0x16, 0xCF, 0xB1, 0xEB, - 0x1F, 0x07, 0xF4, 0xEB, 0x56, 0x44, 0xD2, 0xA5, 0xC8, 0xCB, 0x97, 0xD5, - 0x71, 0xA1, 0xAE, 0x11, 0x38, 0x2F, 0x2E, 0xB8, 0x06, 0x80, 0x73, 0xA2, - 0x82, 0xC6, 0x0F, 0x24, 0x58, 0xD9, 0xDB, 0x5A, 0x1A, 0xAC, 0xCA, 0xCA, - 0x6C, 0xB3, 0x74, 0x59, 0x4A, 0xBC, 0x42, 0x80, 0x8D, 0x2A, 0xF7, 0x5E, - 0x12, 0x7F, 0x01, 0x01, 0x6B, 0xF4, 0x0B, 0xFE, 0x83, 0xD1, 0xC9, 0x9C, - 0x11, 0xFE, 0x7C, 0x18, 0xBD, 0xF0, 0xB9, 0x93, 0xEA, 0x5E, 0x6F, 0x95, - 0xA1, 0x06, 0x90, 0xA2, 0xEA, 0xAD, 0xA5, 0x87, 0x23, 0x78, 0x9A, 0x20, - 0x50, 0xAF, 0x38, 0x17, 0x6D, 0x14, 0xBB, 0x68, 0x5C, 0xCB, 0x6E, 0xC7, - 0xD3, 0x11, 0x81, 0x43, 0xD5, 0xE5, 0x87, 0xE4, 0x4E, 0xFB, 0xEE, 0x3E, - 0x3A, 0x6D, 0xEC, 0x79, 0xE5, 0x90, 0x68, 0xCB, 0xF7, 0x01, 0xFF, 0x26, - 0x3B, 0x82, 0xB1, 0x67, 0x04, 0xB7, 0x32, 0x52, 0xA0, 0xFF, 0x60, 0x97, - 0x8D, 0xA9, 0x8C, 0xDC, 0xF3, 0x37, 0xE1, 0x87, 0x1F, 0x95, 0xAD, 0x16, - 0x69, 0x4B, 0xF2, 0x26, 0xE4, 0x79, 0x1C, 0x3C, 0xA8, 0x87, 0x4D, 0x9D, - 0x0D, 0xB2, 0x01, 0x29, 0x22, 0xB6, 0x20, 0x8B, 0x66, 0x8A, 0x1A, 0x09, - 0xF4, 0xE1, 0xAF, 0x52, 0xBA, 0x63, 0xA9, 0x35, 0xD1, 0x1D, 0x4B, 0xDD, - 0xBE, 0x30, 0x11, 0x4E, 0xFE, 0xCD, 0x57, 0x54, 0xFA, 0x39, 0xB4, 0x8C, - 0x2B, 0x0D, 0x83, 0x36, 0x18, 0x81, 0xE5, 0xBA, 0x18, 0xDF, 0x41, 0x5F, - 0x21, 0x25, 0xCE, 0x47, 0x11, 0x56, 0x20, 0x5D, 0x72, 0xFA, 0x54, 0x1E, - 0xF5, 0x0A, 0x31, 0x92, 0x85, 0x95, 0x26, 0x11, 0x26, 0x24, 0x67, 0x84, - 0x1A, 0xA2, 0x71, 0xFB, 0xAE, 0x7E, 0xAE, 0x27, 0xB5, 0x64, 0xF0, 0xF3, - 0x40, 0x55, 0x7D, 0xDB, 0xF3, 0x28, 0x62, 0xDD, 0xF0, 0xFA, 0x41, 0xD7, - 0xCA, 0x38, 0x73, 0x25, 0xD9, 0x13, 0x3E, 0xCB, 0xC2, 0x49, 0x79, 0x10, - 0xE9, 0x43, 0xCD, 0xEA, 0x78, 0x6C, 0x61, 0x36, 0x87, 0xF3, 0x37, 0x80, - 0x08, 0x3C, 0x5B, 0x41, 0x1A, 0x59, 0x3E, 0xA0, 0x2D, 0x07, 0x03, 0x9B, - 0xEE, 0x47, 0xEC, 0xB4, 0xB8, 0xB5, 0x5C, 0x5F, 0x70, 0xAB, 0x04, 0x12, - 0xF7, 0x5A, 0x89, 0xB7, 0x00, 0x6A, 0x2A, 0x37, 0x14, 0x56, 0xA8, 0x03, - 0x45, 0x38, 0xBB, 0xC5, 0x70, 0xAB, 0x4B, 0xBE, 0x6D, 0xEA, 0xA6, 0x27, - 0x1F, 0x19, 0x5A, 0x02, 0x12, 0xE0, 0x9E, 0x83, 0xD9, 0x78, 0x27, 0x34, - 0x6B, 0x81, 0x2A, 0x82, 0x73, 0x80, 0x06, 0x7E, 0x9C, 0xE2, 0xFB, 0x6E, - 0x12, 0xAE, 0xA6, 0x7E, 0x8D, 0xBF, 0xAC, 0x5A, 0x6C, 0x49, 0x81, 0xE7, - 0x03, 0x8C, 0x3C, 0x05, 0x01, 0x61, 0x96, 0xD8, 0x05, 0x62, 0xFA, 0x36, - 0xBC, 0x26, 0x8E, 0xB3, 0x2D, 0x49, 0x80, 0x6B, 0x4D, 0xF1, 0x63, 0x42, - 0x56, 0x53, 0xA8, 0x8E, 0x63, 0xB2, 0xCF, 0x38, 0x31, 0xF0, 0x56, 0x6D, - 0x58, 0x6A, 0xEB, 0x59, 0x07, 0x27, 0x08, 0x1D, 0x64, 0xE2, 0x5A, 0x69, - 0xBE, 0x47, 0xE8, 0xCA, 0xEE, 0x66, 0x3D, 0x95, 0xE3, 0x00, 0x24, 0xAF, - 0xEA, 0xF6, 0xE8, 0x30, 0xB2, 0x24, 0x85, 0x30, 0x28, 0xFB, 0x46, 0x7A, - 0xDC, 0xC1, 0x11, 0xF6, 0xBE, 0xBB, 0x12, 0x92, 0x9E, 0x7A, 0x85, 0x24, - 0x25, 0xF1, 0xFB, 0xDE, 0xD1, 0x1E, 0x46, 0xCE, 0x4D, 0xCC, 0xB4, 0x5D, - 0xD2, 0x41, 0x7F, 0x47, 0x92, 0x1A, 0xAE, 0xB3, 0xB5, 0x26, 0x96, 0xB2, - 0x38, 0x92, 0x33, 0x67, 0x52, 0x3D, 0xA9, 0x3C, 0xA0, 0x46, 0x43, 0xE8, - 0xEE, 0x22, 0x82, 0xD7, 0xEC, 0xBC, 0x79, 0x9E, 0x0F, 0x47, 0x20, 0x32, - 0x48, 0x7E, 0x79, 0x2C, 0x82, 0xD7, 0x57, 0x31, 0xD8, 0xE8, 0xEC, 0x4D, - 0x44, 0x7E, 0x92, 0xB8, 0xA2, 0xE3, 0xC5, 0x09, 0x6C, 0x13, 0xFF, 0xF0, - 0x35, 0x12, 0x63, 0x46, 0x46, 0x35, 0x3F, 0xC7, 0x7C, 0xB8, 0xEA, 0xA7, - 0x96, 0x9D, 0x19, 0xAC, 0x72, 0x44, 0xA5, 0xBC, 0x41, 0xD0, 0x4D, 0xA2, - 0xD7, 0x00, 0x19, 0xFF, 0xD7, 0x3F, 0x09, 0xEB, 0x58, 0xAC, 0x81, 0x9D, - 0xBB, 0x80, 0x74, 0xFA, 0x2E, 0xBC, 0x6D, 0xE6, 0xEB, 0x91, 0x80, 0x5F, - 0x67, 0x03, 0x14, 0x54, 0x65, 0x0A, 0x7D, 0x6C, 0xC1, 0xC9, 0xC0, 0xF4, - 0xE0, 0x7B, 0x6A, 0x45, 0xCF, 0x13, 0x3E, 0x37, 0x07, 0x03, 0x42, 0xCA, - 0xE0, 0xA2, 0xD1, 0x00, 0x00, 0x10, 0xDE, 0xE5, 0x81, 0x9A, 0xD0, 0x14, - 0xF7, 0x98, 0xA5, 0xE1, 0xD3, 0x84, 0xAC, 0x70, 0xC6, 0x75, 0xB4, 0x27, - 0xF5, 0xEB, 0x08, 0x4C, 0x64, 0xC1, 0x74, 0x45, 0xB1, 0x30, 0x48, 0xE4, - 0xAA, 0x99, 0xBD, 0xC0, 0x27, 0xDE, 0x54, 0xA4, 0xC4, 0xFE, 0xDF, 0x69, - 0xF2, 0x46, 0xF8, 0x7E, 0x79, 0x99, 0xFE, 0xD1, 0x4A, 0x77, 0x6C, 0xFA, - 0x13, 0x2C, 0xD3, 0x9B, 0x45, 0x2F, 0x86, 0x0F, 0xB6, 0xAA, 0x76, 0x42, - 0xE7, 0x11, 0x3D, 0xE9, 0x52, 0xC1, 0x3B, 0x17, 0x66, 0x60, 0x1C, 0x67, - 0xA9, 0xF0, 0x83, 0xFF, 0x80, 0x59, 0x4F, 0xAA, 0xC7, 0xE7, 0x95, 0x81, - 0xA0, 0xEE, 0x5D, 0x3D, 0x36, 0xA6, 0x0B, 0x81, 0xFD, 0xD0, 0xF3, 0xE7, - 0x76, 0x7C, 0x11, 0xB4, 0x4F, 0x62, 0xD6, 0x3A, 0x1E, 0x5D, 0xED, 0x91, - 0xB3, 0x55, 0x2D, 0x83, 0xD3, 0xF4, 0xC9, 0x52, 0x59, 0x6B, 0xD2, 0xCA, - 0x22, 0xC4, 0x8D, 0x74, 0xEC, 0x15, 0x47, 0x03, 0x0B, 0xDD, 0x1E, 0x83, - 0x6A, 0xD7, 0x3C, 0x6F, 0x57, 0x67, 0x6B, 0x77, 0x8D, 0x67, 0x98, 0x88, - 0x5D, 0x3C, 0x4C, 0x52, 0x6B, 0xC5, 0x8F, 0x82, 0x10, 0x18, 0x13, 0x3F, - 0xD4, 0x65, 0x18, 0xFC, 0xFA, 0xD7, 0x97, 0xFD, 0x89, 0xC4, 0x82, 0x4E, - 0xB6, 0x40, 0xC0, 0x62, 0x60, 0xB9, 0x95, 0xAB, 0x86, 0xB8, 0xE1, 0x10, - 0xBD, 0xB3, 0xEC, 0x58, 0xDF, 0x13, 0xF4, 0x4D, 0x0A, 0x1D, 0xB8, 0x78, - 0x2C, 0x0D, 0x70, 0xC2, 0xF9, 0xB8, 0x78, 0x10, 0x0E, 0x4D, 0xC6, 0x7B, - 0xED, 0x1D, 0xBF, 0x64, 0x4E, 0xBC, 0xEA, 0x0A, 0x61, 0x49, 0xCE, 0x20, - 0xD1, 0x21, 0x31, 0xEC, 0x30, 0xF9, 0x34, 0x94, 0x46, 0xF0, 0xFF, 0x4E, - 0xFE, 0xB8, 0x6D, 0x78, 0xA5, 0x2C, 0x95, 0xDD, 0x45, 0x1E, 0x73, 0xA1, - 0xC1, 0x7B, 0x60, 0xBD, 0x62, 0x2F, 0x31, 0x59, 0x6D, 0x3D, 0x00, 0x09, - 0x0D, 0x2A, 0xA4, 0x86, 0xF3, 0x5A, 0x12, 0xAA, 0x50, 0x72, 0x8F, 0xA6, - 0x96, 0xFD, 0x27, 0xA5, 0x52, 0xE3, 0xD1, 0x87, 0x8C, 0x00, 0xAE, 0xF9, - 0x98, 0x98, 0x05, 0xD6, 0x89, 0x54, 0x71, 0x7E, 0x8F, 0xA7, 0xFE, 0x40, - 0xAB, 0xEE, 0x04, 0xE2, 0xB2, 0xB5, 0x89, 0xFD, 0x38, 0xF0, 0xF9, 0x63, - 0xAD, 0xBA, 0x2F, 0xF2, 0xF2, 0xC4, 0x7B, 0xF4, 0xE4, 0x10, 0x25, 0x8C, - 0xBD, 0x6A, 0xF3, 0x23, 0x4B, 0xAE, 0xB1, 0x9B, 0x83, 0xF4, 0x1D, 0x12, - 0x54, 0x72, 0xB5, 0xD4, 0xA0, 0xED, 0x4F, 0xA0, 0xBB, 0xBD, 0xEF, 0x4E, - 0xC7, 0xDC, 0x5F, 0x04, 0x8B, 0x4F, 0x28, 0x02, 0x6D, 0x57, 0xE5, 0xD1, - 0x44, 0x86, 0x26, 0xBB, 0x8E, 0x20, 0xC2, 0xCD, 0xD2, 0x1E, 0x49, 0x0E, - 0x71, 0x36, 0xD8, 0x38, 0x7F, 0x18, 0x08, 0x16, 0x98, 0x13, 0x84, 0x39, - 0x1C, 0x17, 0xED, 0x52, 0xE8, 0x43, 0x48, 0x44, 0x00, 0x7C, 0x9C, 0xE8, - 0x80, 0xF3, 0x71, 0xD0, 0x2D, 0xF8, 0x6D, 0xFF, 0x6E, 0x0B, 0xF5, 0x86, - 0xE8, 0x68, 0x25, 0x90, 0xC2, 0x04, 0x0C, 0x30, 0x6B, 0x31, 0x3E, 0x71, - 0x51, 0x98, 0xD6, 0xD8, 0x50, 0xB4, 0xAA, 0xDF, 0x02, 0x0C, 0x78, 0x8F, - 0x5E, 0x29, 0x02, 0xC8, 0xB5, 0xAD, 0x43, 0x9E, 0x59, 0x7D, 0xF1, 0xBB, - 0x1E, 0xCC, 0xA0, 0x78, 0x53, 0xB1, 0x1C, 0x77, 0xAC, 0x55, 0xE1, 0x8C, - 0xE3, 0x65, 0x27, 0x06, 0x79, 0x61, 0x95, 0x9D, 0x93, 0x05, 0xBA, 0x35, - 0xCF, 0xAA, 0x96, 0x4F, 0x9A, 0xD1, 0x4C, 0x71, 0x27, 0xC4, 0x06, 0x5A, - 0xBD, 0x39, 0x26, 0x87, 0x5F, 0x3C, 0x61, 0x94, 0xB9, 0x55, 0x48, 0x03, - 0x06, 0x47, 0x8F, 0x81, 0x88, 0x19, 0x63, 0xE9, 0x3D, 0x8E, 0x6C, 0x5F, - 0x72, 0xDE, 0x48, 0x1B, 0xFF, 0x8C, 0xEC, 0x2B, 0xF1, 0x75, 0x64, 0x03, - 0xE7, 0xA3, 0xB4, 0xCC, 0x19, 0x44, 0x42, 0x96, 0x5C, 0xC4, 0x17, 0x6C, - 0x7A, 0x20, 0xFF, 0xE3, 0xD5, 0x2C, 0xB6, 0x5C, 0x27, 0x97, 0xB3, 0x5B, - 0x7B, 0xBC, 0x65, 0x76, 0xB5, 0xFD, 0x05, 0xD2, 0xA3, 0xC5, 0x79, 0x77, - 0xBF, 0x77, 0x00, 0x7D, 0xA0, 0x0E, 0x53, 0x15, 0x2B, 0xC1, 0xB7, 0x40, - 0xEA, 0xBC, 0x37, 0xE0, 0x52, 0x28, 0xAE, 0x03, 0x4D, 0x3E, 0x95, 0x03, - 0x61, 0x2B, 0x5C, 0x7D, 0x6E, 0x51, 0xCA, 0x49, 0x37, 0xA2, 0xCF, 0xEA, - 0x4C, 0x4B, 0x4D, 0x43, 0xCD, 0xF7, 0xBC, 0xCE, 0xEE, 0x4D, 0xE2, 0x96, - 0x6D, 0xD6, 0xE2, 0x82, 0x92, 0xFE, 0x4C, 0x3E, 0x97, 0xD5, 0xDA, 0x45, - 0xA3, 0xB0, 0xE0, 0x8C, 0x7E, 0x45, 0xF7, 0xE5, 0x9E, 0xB5, 0xA0, 0x63, - 0xE6, 0xC4, 0x0C, 0x02, 0x91, 0x17, 0x4A, 0xC2, 0xD3, 0xB1, 0xDB, 0x85, - 0xD1, 0x90, 0x7F, 0x21, 0x4B, 0x8E, 0xEA, 0x13, 0x55, 0xEE, 0xD5, 0xA2, - 0xA6, 0xB9, 0x09, 0x96, 0xA2, 0xF8, 0xCB, 0xCE, 0xC4, 0x3B, 0x1C, 0x05, - 0xEB, 0x00, 0x13, 0xFC, 0xFC, 0x9F, 0xC0, 0xCD, 0x2C, 0xB0, 0xC5, 0x8F, - 0x38, 0xD7, 0xAB, 0xE4, 0x86, 0xB4, 0xA3, 0x78, 0x1F, 0x36, 0x22, 0xD2, - 0x81, 0x6A, 0xBD, 0xA0, 0x9F, 0x61, 0x92, 0xF8, 0x6A, 0x27, 0x75, 0x72, - 0x06, 0x16, 0x66, 0x76, 0x90, 0x93, 0x29, 0xBD, 0xEB, 0x9D, 0xA5, 0x81, - 0xEF, 0xEB, 0x69, 0x93, 0x8E, 0xE8, 0x17, 0x8F, 0x42, 0x0A, 0x4D, 0xA0, - 0x2D, 0x20, 0xB3, 0x1F, 0x6A, 0xDB, 0x22, 0xE9, 0x24, 0x64, 0x52, 0x06, - 0x65, 0xA5, 0xC5, 0x82, 0x59, 0x47, 0xF4, 0xE9, 0xB9, 0xA3, 0xB1, 0x02, - 0xFC, 0x60, 0x8B, 0x42, 0xF5, 0x23, 0xD8, 0xD8, 0x35, 0x70, 0x38, 0xEB, - 0x5D, 0x15, 0xEF, 0xD6, 0xD3, 0x75, 0x80, 0x6E, 0xBA, 0x2E, 0xD6, 0x11, - 0x54, 0x6E, 0x24, 0xC1, 0xC7, 0x7A, 0xE1, 0xCB, 0xAE, 0x62, 0x27, 0x48, - 0xB7, 0x9C, 0xA7, 0x9E, 0x15, 0xFD, 0xDE, 0xC0, 0xBE, 0xBB, 0xC2, 0x2E, - 0x4A, 0x5C, 0xD4, 0x81, 0xC0, 0x93, 0x58, 0x00, 0x9C, 0xFB, 0x36, 0x27, - 0xD7, 0x72, 0x46, 0x9D, 0xAC, 0xEF, 0xD8, 0x14, 0x1C, 0x58, 0xC0, 0x4E, - 0xD4, 0x16, 0xE1, 0x58, 0x56, 0x25, 0xA9, 0x38, 0xCF, 0x06, 0xAA, 0xA3, - 0x4F, 0x52, 0x70, 0x09, 0x41, 0x44, 0xD0, 0x98, 0x73, 0xED, 0x18, 0xB4, - 0xDB, 0x07, 0xC9, 0xB7, 0xBB, 0x5A, 0xD6, 0x08, 0xE5, 0x89, 0x19, 0xD8, - 0x1A, 0xB6, 0x84, 0x72, 0x1B, 0xEA, 0x14, 0x78, 0x96, 0xB4, 0x2D, 0x61, - 0x20, 0x8D, 0x9A, 0xD2, 0x87, 0x23, 0x18, 0x7A, 0xA3, 0x70, 0x4D, 0xA6, - 0xBB, 0xEE, 0x99, 0x78, 0xD8, 0x94, 0xF1, 0x35, 0x91, 0x45, 0xDB, 0x2A, - 0x8A, 0xDD, 0x8F, 0xC5, 0x05, 0x17, 0xB6, 0x69, 0x4E, 0xD2, 0xF0, 0x16, - 0x09, 0x14, 0x65, 0xE0, 0x76, 0x6B, 0x33, 0xE8, 0x4D, 0xDF, 0xAF, 0x5A, - 0x0C, 0xF6, 0xB0, 0x29, 0xEF, 0xB9, 0x85, 0x96, 0x16, 0xED, 0x03, 0x45, - 0xFA, 0x6F, 0x03, 0x64, 0x62, 0x6D, 0x32, 0x75, 0x82, 0x32, 0x14, 0x23, - 0x5A, 0x85, 0xFF, 0xFE, 0x65, 0x52, 0xBC, 0xAD, 0x99, 0xC2, 0xDA, 0x8B, - 0x86, 0xC0, 0x2E, 0x78, 0x38, 0xDF, 0x5E, 0x83, 0xDE, 0xE0, 0x72, 0xD5, - 0x91, 0x6B, 0xDB, 0xDF, 0x7F, 0xA7, 0x8B, 0xA4, 0x5B, 0x10, 0x93, 0x4D, - 0xA4, 0xB4, 0x22, 0xC1, 0xB3, 0xBE, 0x8B, 0x56, 0x82, 0xB9, 0x33, 0x85, - 0x01, 0xFA, 0xF5, 0x95, 0x9D, 0x0C, 0xBC, 0xD4, 0xB0, 0x2F, 0x94, 0xD9, - 0x2E, 0xDA, 0xB9, 0x49, 0xC5, 0x53, 0xA2, 0xE9, 0x4D, 0x81, 0xDE, 0xC0, - 0xF8, 0x01, 0x60, 0xEA, 0xAA, 0x57, 0x66, 0xA5, 0x5D, 0x4B, 0x6D, 0xEC, - 0x85, 0xBF, 0x10, 0x18, 0x43, 0xD1, 0xD7, 0xA2, 0xBA, 0x72, 0x09, 0x63, - 0x71, 0xB2, 0xA2, 0x14, 0x52, 0x94, 0xFD, 0x40, 0xA6, 0x89, 0x1B, 0xD5, - 0x16, 0x7D, 0xB1, 0x22, 0x00, 0xF7, 0x62, 0x12, 0x5E, 0xBB, 0xA1, 0x03, - 0x6C, 0x3D, 0x32, 0x1C, 0xD8, 0x3A, 0xB5, 0x24, 0xF6, 0x64, 0x67, 0xCD, - 0x47, 0xEB, 0x6A, 0xFB, 0x94, 0xCE, 0xA6, 0xF4, 0x9D, 0x2B, 0xBD, 0x50, - 0x2A, 0x53, 0x63, 0xEF, 0x7B, 0x94, 0x68, 0x26, 0xE2, 0xD8, 0x13, 0x5A, - 0xD2, 0xE3, 0x1D, 0x01, 0xE4, 0xB8, 0x3C, 0x42, 0x07, 0x3B, 0x14, 0x01, - 0xEB, 0x18, 0xBF, 0x39, 0xD9, 0xC4, 0xD6, 0x41, 0xB2, 0xE7, 0xCD, 0x02, - 0x86, 0x8B, 0xA7, 0x77, 0x5D, 0xC9, 0x5C, 0xC0, 0xBE, 0xDE, 0x3D, 0x67, - 0xA3, 0xD7, 0xDA, 0xB5, 0x88, 0x39, 0xEA, 0x9D, 0x7A, 0xF7, 0x99, 0x3E, - 0xDE, 0xF9, 0x36, 0x1E, 0xBB, 0xAB, 0x61, 0x8C, 0xB2, 0xB9, 0x61, 0x18, - 0x7D, 0x4A, 0x32, 0x7E, 0xCC, 0x71, 0xBC, 0xC6, 0xAA, 0xDE, 0x08, 0xFF, - 0xEE, 0x44, 0x4B, 0xD7, 0xC1, 0xDB, 0xCE, 0xFE, 0x89, 0x56, 0x03, 0xDA, - 0x3A, 0xF5, 0xD3, 0x9D, 0x39, 0x63, 0x92, 0x33, 0x50, 0x13, 0x8B, 0x7B, - 0x5A, 0xC0, 0x79, 0xED, 0x40, 0xAD, 0x1B, 0x53, 0x50, 0x74, 0x0A, 0xA0, - 0xA7, 0x5D, 0x5B, 0x61, 0x85, 0x93, 0x8A, 0xB9, 0xA9, 0x2C, 0x0F, 0xA2, - 0xBD, 0x7A, 0x33, 0xF3, 0xD6, 0xD6, 0x64, 0x60, 0xCF, 0x12, 0x88, 0x08, - 0x13, 0x0B, 0xC2, 0x76, 0xEC, 0x4B, 0x75, 0x74, 0xCC, 0x60, 0xF8, 0x9E, - 0xAD, 0x40, 0xFD, 0x5E, 0x58, 0x2D, 0x08, 0xB7, 0x6C, 0xB6, 0x27, 0x73, - 0x4B, 0x31, 0x03, 0x1D, 0x7A, 0xC5, 0x59, 0x67, 0x1F, 0x5C, 0xDE, 0x08, - 0x24, 0x0D, 0xB9, 0x33, 0x97, 0x51, 0xC6, 0xC3, 0x13, 0xE0, 0xFC, 0x45, - 0xDA, 0x5F, 0xFC, 0xA9, 0x8E, 0x71, 0x54, 0x1C, 0x3A, 0x4D, 0xFB, 0x7B, - 0x06, 0xFB, 0x65, 0xB1, 0x27, 0x0B, 0x8C, 0xAF, 0xF2, 0xA0, 0x12, 0xA6, - 0xD7, 0xAC, 0x27, 0xC1, 0x55, 0xE7, 0x17, 0x81, 0xFD, 0xA2, 0xF8, 0xC3, - 0x17, 0x55, 0x9B, 0x00, 0xFE, 0x91, 0xA9, 0xDC, 0xDE, 0xB0, 0xD7, 0x5D, - 0x2A, 0xE8, 0x87, 0xF2, 0x1B, 0x28, 0x19, 0x20, 0x63, 0x9E, 0xD8, 0x7E, - 0x85, 0xF3, 0x87, 0x0D, 0xAF, 0x35, 0xA5, 0x9F, 0x3B, 0xE7, 0x44, 0x8D, - 0x63, 0xDE, 0xEB, 0x7E, 0xC7, 0xD2, 0x0F, 0x09, 0x30, 0xE3, 0xE2, 0x7B, - 0xEA, 0x74, 0xAD, 0x46, 0x7D, 0xB4, 0xB8, 0x0C, 0xF1, 0xD3, 0xFA, 0x07, - 0xF3, 0xDD, 0xC5, 0xB1, 0x00, 0xF2, 0xD6, 0xBD, 0x4B, 0xBD, 0xAC, 0xC8, - 0xBB, 0xA7, 0xD4, 0x53, 0xDE, 0x73, 0x0D, 0xED, 0xFB, 0x84, 0x4C, 0x82, - 0x47, 0x0D, 0x2D, 0x9D, 0x2B, 0x0C, 0x4A, 0x4D, 0x4B, 0xD4, 0x3A, 0x4D, - 0x64, 0x27, 0xD8, 0x59, 0x27, 0xD3, 0x41, 0x73, 0xA5, 0xCB, 0xF5, 0x31, - 0xA2, 0x88, 0x99, 0x79, 0xFB, 0x2B, 0x9A, 0xBA, 0x68, 0x88, 0x35, 0x12, - 0x15, 0x11, 0xF6, 0xEA, 0x9A, 0x1B, 0x2A, 0xE1, 0x95, 0x5B, 0x15, 0xAB, - 0x79, 0xE2, 0x5A, 0x4A, 0x6E, 0xE2, 0xF7, 0x63, 0x74, 0x52, 0xB5, 0x9B, - 0xA9, 0x58, 0x5D, 0x78, 0xAB, 0x61, 0x40, 0xA5, 0x6F, 0x99, 0x80, 0x06, - 0xCA, 0x73, 0x82, 0x78, 0x64, 0x8F, 0xE4, 0xA7, 0x2F, 0x9F, 0x6D, 0x50, - 0x80, 0x11, 0xF4, 0xE9, 0xE3, 0x63, 0x2A, 0x96, 0x0C, 0xFC, 0x3C, 0xE0, - 0xAA, 0xF7, 0x05, 0x55, 0x28, 0xB0, 0x76, 0x24, 0x87, 0xDA, 0x29, 0x28, - 0x05, 0xA9, 0x61, 0x0B, 0x66, 0x3C, 0xA0, 0x51, 0x5E, 0xCE, 0xF5, 0x80, - 0x0F, 0x1C, 0x90, 0xDD, 0x56, 0x52, 0x07, 0xDF, 0xB4, 0xE6, 0x92, 0x4A, - 0x57, 0x97, 0x71, 0xAB, 0x58, 0xF3, 0x03, 0x43, 0x99, 0x49, 0x1A, 0xFC, - 0x96, 0x29, 0x31, 0x15, 0x30, 0x6D, 0xCA, 0x92, 0x39, 0x68, 0xF6, 0xAE, - 0xDE, 0x56, 0x74, 0x53, 0xC5, 0xCA, 0xBE, 0x09, 0x0C, 0x88, 0xEE, 0xEC, - 0xE9, 0xE8, 0xD0, 0x6A, 0x55, 0x6A, 0xB2, 0xDF, 0x41, 0x79, 0xC8, 0x44, - 0xD1, 0x2B, 0x6B, 0x5F, 0xB4, 0x27, 0x02, 0xFE, 0x9E, 0x70, 0x48, 0xE9, - 0xE8, 0x9B, 0x44, 0x5D, 0x19, 0xB7, 0x24, 0x47, 0x42, 0x0D, 0x1D, 0xA9, - 0x26, 0x07, 0x70, 0xC4, 0x36, 0x6A, 0x03, 0xA2, 0xBD, 0x60, 0x65, 0x9A, - 0x92, 0x6F, 0x0A, 0x1B, 0xE6, 0x36, 0x7B, 0xA4, 0x55, 0x79, 0xBF, 0x7B, - 0x27, 0xBE, 0x6D, 0x67, 0x01, 0x6D, 0xB7, 0x49, 0x7C, 0x3F, 0x99, 0x1B, - 0x4E, 0xFB, 0x32, 0x3A, 0xE5, 0x76, 0x0B, 0x96, 0xC6, 0x55, 0xC5, 0x90, - 0x5F, 0x80, 0x19, 0x77, 0xAD, 0xB1, 0x5F, 0x6C, 0x75, 0x41, 0x1E, 0x07, - 0x58, 0x6F, 0x6D, 0xB5, 0xDA, 0x2E, 0x3E, 0x2B, 0x76, 0xAA, 0x4D, 0xF5, - 0x3F, 0x9A, 0x56, 0x31, 0x53, 0x74, 0x1F, 0xA6, 0xC3, 0x97, 0xAE, 0x8A, - 0x3E, 0x8B, 0x76, 0xE1, 0x2C, 0x77, 0x6C, 0x70, 0xEC, 0xBB, 0xD5, 0xA5, - 0xA7, 0x30, 0x4B, 0xE8, 0xA6, 0x29, 0xAC, 0xE6, 0x6F, 0x8E, 0xC7, 0xFF, - 0xBA, 0xD9, 0xCB, 0x62, 0xE8, 0x2E, 0xD7, 0xCF, 0xA3, 0x02, 0xD4, 0x55, - 0x88, 0x2D, 0x12, 0x9D, 0x6A, 0x19, 0x50, 0xB4, 0x98, 0xFA, 0x29, 0xF5, - 0x2E, 0xFF, 0xF2, 0xD4, 0xAD, 0x04, 0x85, 0xF4, 0xB6, 0x22, 0x56, 0x03, - 0x50, 0x3F, 0x96, 0x5D, 0xDE, 0xCD, 0x0D, 0xB3, 0xC5, 0xFB, 0xDB, 0xAC, - 0x7F, 0xBD, 0xC1, 0xB6, 0xD0, 0x20, 0xCF, 0x30, 0x5E, 0x62, 0xD6, 0xF9, - 0x44, 0x19, 0xF3, 0x96, 0x0D, 0x72, 0xF8, 0xFB, 0x71, 0xB1, 0x9D, 0xA7, - 0x77, 0x6E, 0xDD, 0xD2, 0x1B, 0xD9, 0x39, 0xAB, 0x10, 0x26, 0x18, 0xB8, - 0x56, 0x92, 0x6E, 0x9B, 0xC2, 0x3D, 0x9B, 0x94, 0x88, 0x9E, 0x2B, 0x4D, - 0x79, 0xF6, 0x8D, 0xC6, 0x23, 0x0B, 0x8D, 0xF4, 0xB3, 0x00, 0x8C, 0xD4, - 0x4F, 0xE1, 0xA1, 0x2B, 0x9F, 0xE7, 0x3D, 0xE9, 0x04, 0x65, 0xD4, 0x21, - 0x87, 0x44, 0xDB, 0x00, 0x30, 0x23, 0x7A, 0x94, 0xC1, 0xE7, 0x4B, 0xC4, - 0xA0, 0xA6, 0x90, 0x20, 0x99, 0xE6, 0x98, 0x48, 0x67, 0xB6, 0x49, 0x90, - 0x20, 0xB4, 0xA0, 0xA8, 0x90, 0x1E, 0x1B, 0x49, 0x50, 0x41, 0x7B, 0xC5, - 0x02, 0xF3, 0xFF, 0xB1, 0x6D, 0x39, 0x79, 0x1C, 0x3C, 0x5E, 0xC7, 0x98, - 0x1F, 0xD9, 0x52, 0x49, 0x75, 0x59, 0x01, 0x1A, 0xC1, 0x82, 0xBD, 0xDB, - 0x1A, 0x86, 0xD8, 0x9F, 0x12, 0x93, 0xD2, 0x80, 0x13, 0xDE, 0x79, 0x3D, - 0xB6, 0xEB, 0xC5, 0x47, 0x75, 0x24, 0xE3, 0x70, 0x8E, 0x20, 0xBE, 0x78, - 0x26, 0x15, 0xBD, 0xD4, 0x5B, 0x9D, 0x6D, 0x7B, 0x02, 0x80, 0x73, 0x44, - 0xA2, 0xC7, 0x22, 0x8D, 0xAD, 0x19, 0xD0, 0x38, 0x2B, 0xEA, 0x4F, 0xDE, - 0x68, 0x84, 0x3C, 0x77, 0x6B, 0xA2, 0x6C, 0x9A, 0x56, 0x13, 0x75, 0x66, - 0x8A, 0x91, 0x87, 0xDA, 0xC4, 0x24, 0xE6, 0xC5, 0x14, 0xE7, 0x91, 0x0B, - 0x40, 0xBD, 0x7D, 0x8A, 0x3A, 0x0D, 0x39, 0xB5, 0x65, 0x1A, 0xF6, 0x0F, - 0x79, 0x4D, 0xED, 0x07, 0x8F, 0xE4, 0x48, 0xA3, 0x7A, 0xE8, 0x9F, 0x09, - 0x5B, 0x9E, 0x30, 0x46, 0xA8, 0x63, 0x89, 0x9E, 0xAF, 0xD1, 0x8F, 0xBE, - 0x53, 0x20, 0x07, 0xDE, 0x54, 0x8B, 0x8B, 0x98, 0xED, 0x76, 0xD7, 0x3A, - 0xE9, 0x40, 0xEC, 0x27, 0x64, 0xDC, 0x66, 0xD4, 0x32, 0x22, 0x43, 0x7E, - 0xE0, 0x3E, 0xF8, 0x15, 0xAB, 0xDE, 0xAA, 0xC4, 0x13, 0x7F, 0x56, 0x4E, - 0x57, 0xC8, 0x69, 0x27, 0xD4, 0xC6, 0x6B, 0x72, 0x71, 0xB8, 0xA4, 0x7A, - 0x2F, 0x82, 0x7D, 0xEE, 0x0C, 0x21, 0xCE, 0xDF, 0xA5, 0x56, 0x01, 0xFC, - 0xD2, 0xE7, 0x48, 0x35, 0xD6, 0x8C, 0x87, 0xEF, 0xD8, 0xE1, 0xDC, 0xFC, - 0x60, 0x1D, 0xD7, 0x81, 0xE5, 0xE2, 0x83, 0x83, 0xF7, 0x14, 0xDA, 0xC8, - 0x64, 0xA1, 0xDC, 0xBF, 0x6A, 0x0D, 0xB4, 0x5D, 0xCB, 0x1E, 0xDF, 0xA7, - 0xE7, 0x37, 0xDE, 0xCD, 0x35, 0x27, 0xAF, 0x18, 0xD3, 0xB3, 0xC5, 0xF1, - 0x69, 0x57, 0xCD, 0xE4, 0x64, 0x07, 0x50, 0x08, 0x80, 0x80, 0x6A, 0x2F, - 0xD3, 0x1E, 0xA8, 0xC9, 0xA7, 0x6C, 0xFD, 0xA1, 0x91, 0xF3, 0x06, 0x12, - 0x97, 0x56, 0x9E, 0x37, 0x6A, 0x3D, 0x30, 0x0E, 0x0D, 0x88, 0x1D, 0x47, - 0xCC, 0x95, 0x53, 0xAA, 0xF4, 0xDC, 0x11, 0x9C, 0xD5, 0xBA, 0xDA, 0xA6, - 0xAC, 0xE3, 0xC6, 0x14, 0x54, 0x75, 0xA9, 0x22, 0x31, 0x0E, 0x58, 0x6B, - 0xF6, 0x3E, 0x42, 0x54, 0x81, 0xF1, 0x26, 0x60, 0x42, 0x7E, 0xD7, 0x15, - 0x7C, 0x1A, 0xB3, 0x48, 0x74, 0x7E, 0x2A, 0xBC, 0x32, 0xEA, 0x37, 0x98, - 0x56, 0x7C, 0x06, 0x44, 0xD3, 0xC6, 0x91, 0x8D, 0x8A, 0xA0, 0xF6, 0x8E, - 0x84, 0x11, 0xC1, 0xEB, 0x9A, 0x39, 0x1A, 0xF2, 0xA7, 0x78, 0x17, 0x21, - 0x3B, 0xBF, 0x32, 0x5B, 0x9C, 0x61, 0x6A, 0xDD, 0x96, 0x55, 0x62, 0x38, - 0x57, 0x6F, 0xA8, 0x7A, 0xB3, 0x44, 0x85, 0x6C, 0x4B, 0x06, 0xD6, 0x8E, - 0xAF, 0x6F, 0x30, 0x03, 0xBA, 0x88, 0xE4, 0x2A, 0x61, 0x58, 0x33, 0x34, - 0xC9, 0xBF, 0x52, 0xC4, 0x11, 0x71, 0xD1, 0x65, 0xEC, 0x07, 0x40, 0x92, - 0x4A, 0x39, 0x4A, 0xF1, 0x6A, 0x37, 0x25, 0x82, 0x91, 0x4A, 0x68, 0x98, - 0xAA, 0x25, 0xDC, 0xD4, 0xCB, 0x51, 0x15, 0x46, 0xE4, 0xF0, 0x06, 0xA1, - 0x5B, 0x7F, 0xCA, 0xC9, 0xC9, 0xD7, 0x91, 0xF3, 0x9F, 0x0E, 0xC0, 0x69, - 0x37, 0x48, 0x81, 0x0C, 0xF4, 0x15, 0x51, 0x9E, 0xE3, 0x73, 0xAC, 0xDF, - 0x57, 0x49, 0x2A, 0xF6, 0x98, 0x72, 0x5C, 0x43, 0x2A, 0x63, 0x40, 0x94, - 0xF1, 0xB4, 0x0B, 0xBD, 0x79, 0x67, 0xB8, 0xAB, 0xAE, 0xD4, 0x9C, 0xFA, - 0x2F, 0x64, 0x0D, 0x33, 0xB7, 0x7F, 0x9E, 0xC4, 0xB7, 0xE6, 0xCB, 0x5E, - 0x61, 0x60, 0x29, 0x6D, 0xB7, 0xC9, 0xCA, 0x7D, 0xE2, 0x43, 0x1E, 0x95, - 0x04, 0xE1, 0xA9, 0x6B, 0xBD, 0x5F, 0xB2, 0xBF, 0x07, 0x1C, 0xFF, 0x30, - 0x74, 0x9A, 0xBC, 0xC4, 0xD5, 0x5C, 0x00, 0x32, 0x76, 0xA6, 0xDD, 0x25, - 0x3D, 0x53, 0xD0, 0x38, 0x34, 0x53, 0x7B, 0xD6, 0xBF, 0x0E, 0x84, 0xA0, - 0x96, 0xF9, 0x8A, 0x82, 0x8D, 0x94, 0x60, 0x57, 0xE2, 0x54, 0xBE, 0x44, - 0x96, 0xF7, 0x86, 0xF5, 0x39, 0x0D, 0x05, 0xA7, 0xB6, 0x74, 0xA5, 0x41, - 0xB3, 0x0A, 0xB0, 0x5D, 0x91, 0xCB, 0x85, 0x79, 0x83, 0x4B, 0xC6, 0x55, - 0x57, 0x68, 0x8C, 0x91, 0x2F, 0x2A, 0xB8, 0x4A, 0x08, 0x82, 0x1F, 0xEC, - 0x9A, 0x68, 0x11, 0x4C, 0x22, 0x2C, 0x90, 0x86, 0x7E, 0xA5, 0x71, 0x46, - 0xB5, 0xE0, 0x2B, 0x3F, 0x21, 0x8E, 0xCD, 0x41, 0xA3, 0x96, 0xA5, 0x9E, - 0x88, 0x9D, 0xC0, 0x06, 0x64, 0x4A, 0x4B, 0x3A, 0xD4, 0xA1, 0xE7, 0x16, - 0xD4, 0x3E, 0x57, 0xD2, 0x0C, 0xDA, 0xE1, 0x34, 0xD8, 0xD6, 0x58, 0xF7, - 0x86, 0xBD, 0xF6, 0xC4, 0xBC, 0xDA, 0x21, 0x74, 0xCA, 0x8A, 0xA6, 0xAA, - 0x30, 0xEF, 0x25, 0x1F, 0x32, 0x7B, 0x49, 0xA6, 0xEF, 0x9B, 0x95, 0x51, - 0x83, 0x34, 0xB8, 0xB8, 0x3E, 0xCE, 0xF6, 0x85, 0x21, 0x3F, 0xE2, 0x93, - 0x5E, 0x52, 0xBF, 0x8D, 0xE7, 0xDD, 0xCE, 0xDF, 0x0B, 0x99, 0xB4, 0xB3, - 0x89, 0x31, 0x70, 0xAE, 0x82, 0x4D, 0xF5, 0xD1, 0x31, 0xF7, 0x04, 0xB2, - 0x8A, 0x6A, 0xD8, 0xAD, 0x36, 0x50, 0x7D, 0x5B, 0xD5, 0xD1, 0x26, 0x07, - 0xB0, 0x40, 0xF0, 0x93, 0x4C, 0x17, 0xCD, 0x3F, 0xC3, 0x65, 0x95, 0x25, - 0xF4, 0x58, 0x12, 0xEE, 0xAA, 0xE6, 0x86, 0xAB, 0x92, 0x90, 0x18, 0xCD, - 0xBD, 0x9A, 0x98, 0xFB, 0x64, 0x17, 0x61, 0xF7, 0x04, 0x8B, 0x26, 0xD6, - 0x13, 0xA2, 0x0C, 0x7C, 0xB7, 0x98, 0x35, 0xD0, 0x47, 0x2C, 0x44, 0xB0, - 0xA6, 0x5E, 0x96, 0xAE, 0x60, 0x54, 0x15, 0x1C, 0x1F, 0xEF, 0x95, 0x2A, - 0x7F, 0xF5, 0x11, 0x8B, 0xD2, 0xFA, 0x9D, 0x2B, 0x80, 0xD7, 0xA3, 0x0E, - 0x25, 0xFD, 0x61, 0xA1, 0x59, 0xEF, 0xFA, 0xC6, 0x7D, 0x8C, 0xE2, 0x0E, - 0xD5, 0x3B, 0x7F, 0x0A, 0x9B, 0x07, 0x66, 0x2A, 0x10, 0xF7, 0x58, 0x97, - 0x78, 0xB5, 0x9E, 0x8C, 0x17, 0x10, 0x36, 0x8F, 0x7E, 0xB5, 0x62, 0xDD, - 0xBA, 0x53, 0x62, 0x20, 0x86, 0x69, 0x0B, 0x44, 0xDF, 0x3A, 0xEA, 0x0B, - 0xB6, 0xD8, 0xDD, 0x3E, 0x0F, 0x0D, 0xD0, 0x37, 0xDC, 0x2D, 0xD7, 0xEF, - 0xB6, 0xD7, 0x4E, 0x2B, 0xFE, 0xA1, 0x4B, 0xDC, 0xC2, 0x69, 0xEA, 0x04, - 0x79, 0x6E, 0xC2, 0xD4, 0xD6, 0xC7, 0x3D, 0x21, 0x7C, 0xBD, 0x12, 0x4C, - 0x3A, 0x0F, 0xA6, 0xB9, 0xA8, 0x64, 0xF0, 0x13, 0x24, 0x9C, 0xD9, 0xC8, - 0x97, 0xBB, 0xAD, 0x31, 0x3D, 0x74, 0x6C, 0x6D, 0x62, 0xE7, 0x4E, 0x54, - 0xC9, 0xEA, 0x0C, 0x65, 0xA5, 0xF8, 0x4A, 0xC1, 0x7C, 0x26, 0x6B, 0x3F, - 0x71, 0x06, 0xA8, 0xE6, 0xD5, 0x41, 0xCF, 0xD3, 0xFB, 0x6C, 0x88, 0xBC, - 0x82, 0xE1, 0x4D, 0x5F, 0x3C, 0x48, 0x61, 0xB4, 0xA1, 0x17, 0x43, 0x18, - 0x8E, 0xA3, 0xD2, 0xDE, 0xF5, 0x11, 0xE7, 0x6F, 0xBA, 0x9D, 0x00, 0x8E, - 0x59, 0x6D, 0xC5, 0x1C, 0x59, 0x38, 0xD5, 0x3D, 0x1F, 0xB9, 0x20, 0xDA, - 0x91, 0xF3, 0xA6, 0x79, 0x91, 0xD4, 0x6A, 0x96, 0xB6, 0xDE, 0xF6, 0xD9, - 0xB7, 0x43, 0xD9, 0x14, 0x03, 0x61, 0x69, 0x6B, 0xF1, 0x96, 0x91, 0x5B, - 0xA6, 0x47, 0xA5, 0x87, 0x07, 0x5C, 0xB7, 0x33, 0xE1, 0x35, 0xFA, 0x71, - 0x0B, 0xF0, 0x15, 0x96, 0x1D, 0xA7, 0x01, 0x88, 0xEC, 0x94, 0xC5, 0xD1, - 0x62, 0x53, 0x0F, 0xD9, 0x37, 0x88, 0x7B, 0x83, 0x9F, 0x59, 0x19, 0xB6, - 0xC3, 0x6F, 0x98, 0xF7, 0x40, 0x34, 0x10, 0x84, 0xB3, 0x66, 0x72, 0x4E, - 0x9B, 0x5B, 0xD5, 0xCE, 0x84, 0x47, 0x6C, 0xBB, 0x89, 0xC0, 0xD7, 0x07, - 0x11, 0x20, 0xD8, 0x2E, 0x27, 0x52, 0x3C, 0x33, 0x9E, 0xC9, 0x9F, 0x9F, - 0x4A, 0x5F, 0x73, 0xC9, 0xBE, 0xC9, 0x63, 0xD9, 0xF1, 0xDA, 0xE6, 0x3B, - 0x09, 0xC0, 0xAA, 0x55, 0xD1, 0xA6, 0x31, 0xF6, 0xB4, 0x3D, 0xED, 0x79, - 0x56, 0xE8, 0xB9, 0x04, 0xC6, 0x5D, 0x10, 0x81, 0x86, 0xB8, 0xD4, 0x32, - 0xF8, 0x7B, 0xC4, 0x9C, 0x89, 0x68, 0x26, 0x8C, 0xA1, 0xC2, 0x40, 0x34, - 0x4B, 0xAD, 0x06, 0xC9, 0x31, 0xD1, 0xDD, 0xE6, 0xB8, 0x77, 0x82, 0xA4, - 0xFE, 0x8F, 0x74, 0x69, 0x8E, 0xFF, 0x33, 0xB8, 0xAE, 0x29, 0x99, 0x92, - 0x37, 0x8B, 0x82, 0x73, 0x51, 0xE3, 0x0D, 0x5A, 0x88, 0xBE, 0x20, 0x12, - 0x7E, 0x04, 0x1A, 0xDA, 0x76, 0x79, 0x34, 0x15, 0xA3, 0x52, 0x5D, 0x77, - 0x90, 0x41, 0xFD, 0x32, 0xA5, 0x43, 0x27, 0x03, 0xEC, 0xD6, 0x05, 0x49, - 0x6E, 0x0F, 0x21, 0xD2, 0xBD, 0x5E, 0x2C, 0x46, 0x8C, 0x07, 0xAB, 0x64, - 0xA3, 0x00, 0x52, 0x6F, 0x65, 0x87, 0x91, 0x2A, 0x88, 0x3F, 0x93, 0x5C, - 0xC6, 0x2F, 0xD2, 0xF6, 0x7E, 0x6D, 0x48, 0xC8, 0x7E, 0x29, 0x37, 0x3E, - 0xA5, 0xA6, 0x04, 0x3B, 0x55, 0x65, 0xB5, 0x9B, 0x49, 0x72, 0x9C, 0xB7, - 0xE6, 0xC4, 0x6D, 0x6A, 0xBD, 0x71, 0x60, 0x6B, 0xBD, 0x60, 0x2E, 0x43, - 0xFE, 0x84, 0x88, 0xD8, 0x8C, 0x81, 0xD1, 0xB0, 0x8F, 0xAA, 0xA0, 0x91, - 0x9B, 0x1E, 0xE2, 0xA7, 0x1D, 0x56, 0x89, 0x72, 0xE7, 0xD3, 0xE1, 0x58, - 0x4E, 0x07, 0x30, 0x75, 0xDE, 0xCD, 0x00, 0xD2, 0xF6, 0xFB, 0x2D, 0x5D, - 0xAA, 0x29, 0xF7, 0xEB, 0x84, 0x16, 0x28, 0x17, 0xEB, 0xC9, 0x6D, 0x18, - 0xE9, 0x22, 0xF2, 0xED, 0x11, 0xBC, 0xDC, 0x33, 0x91, 0x01, 0xC9, 0x6F, - 0x96, 0xD1, 0x89, 0xEB, 0xEF, 0x47, 0x55, 0x93, 0xF1, 0x94, 0x2D, 0xDE, - 0x40, 0x2B, 0x9E, 0xDB, 0x02, 0x9E, 0xB8, 0xA9, 0x7E, 0x9D, 0xB6, 0xBF, - 0x96, 0x87, 0x3F, 0x07, 0x8D, 0x43, 0x58, 0x70, 0x92, 0xB8, 0x41, 0x7A, - 0x05, 0x3F, 0x1F, 0xA7, 0x0B, 0x5B, 0x29, 0xB1, 0x6C, 0x76, 0xB3, 0x44, - 0x6C, 0x6F, 0x82, 0x74, 0x10, 0xAB, 0xF0, 0x29, 0x20, 0x6D, 0x00, 0x1E, - 0x42, 0x89, 0x8B, 0x79, 0x4B, 0x6A, 0xF0, 0x9D, 0x5E, 0x1C, 0x05, 0x7B, - 0x2B, 0x57, 0xB3, 0x45, 0xBF, 0x5A, 0x72, 0x46, 0x01, 0xFB, 0xF6, 0x03, - 0x14, 0xBB, 0x1A, 0x1C, 0x62, 0xCA, 0x9B, 0x40, 0xB9, 0xAE, 0x48, 0x4A, - 0xC9, 0x0E, 0x0A, 0x26, 0x85, 0x2C, 0x01, 0x92, 0x3F, 0xE1, 0x22, 0x3B, - 0xBC, 0x25, 0xF6, 0x08, 0xB7, 0x7E, 0x94, 0x45, 0x18, 0x9B, 0x48, 0xEE, - 0x5E, 0xD0, 0xC6, 0x74, 0x34, 0xAF, 0x6E, 0x66, 0xBC, 0x0C, 0xAA, 0x6D, - 0xD6, 0x1A, 0xC1, 0x0F, 0xAC, 0xF6, 0x97, 0x20, 0xCF, 0xF3, 0x9A, 0x78, - 0xCA, 0x1B, 0x9F, 0x25, 0x52, 0x3D, 0xA9, 0x35, 0x0D, 0xEA, 0x12, 0xCF, - 0x0C, 0x32, 0x53, 0x5A, 0x55, 0x4B, 0x99, 0x05, 0x80, 0x56, 0xB6, 0xE2, - 0x59, 0xC8, 0x37, 0x0F, 0x4C, 0x79, 0xEF, 0xE5, 0xE0, 0x41, 0x0A, 0x4C, - 0x1E, 0x5F, 0x85, 0x90, 0xC7, 0x66, 0x28, 0xAB, 0xD7, 0xF1, 0x91, 0x60, - 0xE7, 0x77, 0x28, 0x01, 0x7C, 0xA8, 0x2A, 0x23, 0x84, 0x76, 0x91, 0xAA, - 0x65, 0xA4, 0xFF, 0xEC, 0xA2, 0x02, 0x36, 0x9A, 0x43, 0x18, 0xAA, 0x0F, - 0x81, 0x26, 0x8F, 0x8B, 0x9C, 0x46, 0x2C, 0x53, 0x63, 0x01, 0x5C, 0x44, - 0x4B, 0xBC, 0x28, 0xEA, 0x2F, 0x4E, 0x57, 0x72, 0x35, 0xA3, 0x85, 0x4F, - 0x27, 0x22, 0xB5, 0x92, 0x5F, 0x5B, 0xD0, 0x78, 0x49, 0xAF, 0x42, 0x1F, - 0x0B, 0x19, 0x9E, 0x17, 0xB0, 0xA6, 0xFB, 0x2F, 0xD7, 0x82, 0x60, 0x11, - 0xB6, 0x63, 0x4C, 0x65, 0x44, 0xD1, 0xB4, 0x9A, 0xDA, 0x7A, 0xF8, 0x6E, - 0xA5, 0xAE, 0x55, 0x32, 0x46, 0xDD, 0xE5, 0xB8, 0xC3, 0xC6, 0xDC, 0xC4, - 0x49, 0x2C, 0x35, 0x2A, 0x2F, 0xFE, 0x85, 0xEE, 0xD0, 0xD7, 0x5E, 0xF1, - 0xD9, 0xE9, 0x23, 0xCB, 0x96, 0xAE, 0x30, 0x22, 0x54, 0x80, 0x93, 0x9A, - 0xD5, 0x7C, 0x0A, 0xF9, 0x47, 0x1F, 0x02, 0x80, 0x21, 0xFF, 0x53, 0x39, - 0xC6, 0xB7, 0x73, 0xDE, 0x4B, 0x03, 0xC8, 0xB7, 0xBF, 0x34, 0x0F, 0xCB, - 0x37, 0xD1, 0x5F, 0x53, 0x5F, 0x05, 0x62, 0x2D, 0x62, 0xC4, 0xB6, 0xED, - 0x82, 0xC3, 0x19, 0x09, 0xFD, 0xC8, 0x93, 0xAB, 0x63, 0xB2, 0xA5, 0x6B, - 0x97, 0x82, 0x37, 0x29, 0xBF, 0x97, 0x54, 0xFE, 0x9B, 0x32, 0xFD, 0x51, - 0xE9, 0x14, 0xE1, 0x74, 0x07, 0x2B, 0xFA, 0x39, 0x1C, 0x6A, 0x5B, 0xA3, - 0x5B, 0x7E, 0xB6, 0xD9, 0x66, 0x82, 0x0D, 0xF9, 0xD7, 0x9C, 0x64, 0xE8, - 0x2A, 0x73, 0x98, 0x95, 0x31, 0xCF, 0xAE, 0xBE, 0x6D, 0x57, 0x69, 0x34, - 0x4E, 0x58, 0x0A, 0xD1, 0x5A, 0x94, 0x8F, 0xFE, 0xF5, 0xD6, 0x4E, 0x73, - 0xC0, 0x96, 0x4E, 0xFD, 0x21, 0x25, 0xC4, 0xB6, 0x11, 0xFA, 0xA7, 0x41, - 0x7E, 0xB2, 0xFC, 0x42, 0x14, 0x16, 0x90, 0xC9, 0x74, 0x5D, 0x4A, 0x25, - 0x73, 0xE1, 0x63, 0x7E, 0x81, 0xF9, 0x3F, 0x8E, 0x24, 0x4C, 0x61, 0x02, - 0xD5, 0xF8, 0xB2, 0x2E, 0xF3, 0x80, 0x79, 0xBF, 0x13, 0xA0, 0x38, 0xC7, - 0x0E, 0x4E, 0x2C, 0x22, 0x46, 0x0E, 0x29, 0xEE, 0x2A, 0x8C, 0xDD, 0x86, - 0x33, 0xB7, 0xF0, 0xCC, 0x0F, 0x13, 0x7E, 0x03, 0x07, 0xB3, 0x3E, 0x97, - 0xC5, 0x6F, 0xDC, 0xFF, 0x96, 0x23, 0xCB, 0x69, 0x8B, 0x86, 0x94, 0x6D, - 0x86, 0xEF, 0x2F, 0x5C, 0x31, 0x7F, 0xF7, 0x22, 0x96, 0x61, 0x88, 0x75, - 0x3C, 0x76, 0x97, 0x12, 0x1A, 0xEF, 0x70, 0x7D, 0x6A, 0x17, 0xF5, 0xB1, - 0xB5, 0x68, 0x50, 0x91, 0xDD, 0x88, 0x0F, 0xCB, 0x33, 0x73, 0xB9, 0xBF, - 0xC6, 0x65, 0xAE, 0x15, 0x6B, 0x20, 0xCF, 0x8A, 0xDF, 0xDF, 0x5D, 0xAD, - 0xE8, 0x45, 0x69, 0x7D, 0x1C, 0x1B, 0xF2, 0xAC, 0xCD, 0x9D, 0x9F, 0xB8, - 0x6D, 0x57, 0x16, 0x92, 0xCC, 0x1A, 0xF2, 0xC2, 0x62, 0xEE, 0xE2, 0x71, - 0x2D, 0x58, 0xAB, 0xB7, 0x60, 0x4D, 0xDB, 0xEF, 0x88, 0xC2, 0x2B, 0x39, - 0x8B, 0x4C, 0x0F, 0xEF, 0xEB, 0x86, 0x16, 0x34, 0x49, 0x9E, 0x1E, 0x24, - 0xFC, 0xE9, 0x77, 0x2A, 0xD2, 0x75, 0x76, 0x96, 0x24, 0xD3, 0x33, 0x4D, - 0x8B, 0xDD, 0x92, 0xBE, 0xBF, 0xE5, 0xB0, 0x12, 0x92, 0x0C, 0x89, 0xD8, - 0x73, 0xE2, 0xA6, 0xD7, 0xF3, 0x15, 0x59, 0x76, 0x9F, 0x3B, 0x10, 0xC1, - 0xA4, 0x9B, 0x64, 0xC8, 0x4B, 0xD4, 0xEE, 0x63, 0xA7, 0xF7, 0xE9, 0xB4, - 0x43, 0x50, 0xC4, 0x7B, 0xE1, 0x7A, 0x53, 0x6D, 0xC8, 0x17, 0x82, 0x31, - 0xE4, 0x53, 0xF3, 0x20, 0xF0, 0xE9, 0x78, 0xAF, 0x8F, 0x95, 0x96, 0xA8, - 0xE9, 0x0E, 0xFE, 0x10, 0x51, 0x8E, 0xF1, 0x64, 0x89, 0x2B, 0x0B, 0xE1, - 0xCE, 0xA1, 0xA9, 0xCA, 0xF0, 0xD4, 0xD3, 0xAA, 0x49, 0xE3, 0x68, 0x76, - 0xDE, 0x20, 0x77, 0xCB, 0x92, 0x60, 0x36, 0x66, 0x82, 0x06, 0x6D, 0xDF, - 0x11, 0xF7, 0xA3, 0x07, 0x43, 0x18, 0x48, 0x89, 0x40, 0x19, 0x72, 0xAD, - 0xF5, 0x06, 0x0B, 0x61, 0x87, 0xD9, 0x48, 0x17, 0x8A, 0x0D, 0xC8, 0x6C, - 0xD9, 0xC9, 0x9D, 0xEE, 0x08, 0x16, 0x1F, 0x0D, 0x88, 0xB5, 0xEF, 0x5B, - 0x2F, 0x40, 0xAE, 0x71, 0x0F, 0x02, 0x96, 0xAF, 0x2C, 0xC8, 0x8E, 0x86, - 0x64, 0x58, 0xF1, 0x7C, 0xE9, 0x86, 0xDB, 0xCF, 0x57, 0x5E, 0xF9, 0x57, - 0x7E, 0x85, 0xAE, 0x8B, 0x6A, 0x1E, 0x9B, 0x2B, 0x0D, 0xE2, 0x07, 0xDE, - 0x42, 0x76, 0x79, 0x72, 0x25, 0xBB, 0xD6, 0xDA, 0xD8, 0x8D, 0xE4, 0x34, - 0xF6, 0xC6, 0xBB, 0x00, 0x62, 0x22, 0x4D, 0x0F, 0x90, 0xD1, 0x35, 0x20, - 0x6B, 0x3C, 0x43, 0xB2, 0xBF, 0xED, 0xCA, 0x5D, 0xC2, 0x0F, 0x5A, 0x94, - 0x87, 0xE3, 0x61, 0x94, 0x85, 0xE4, 0x24, 0x63, 0xEF, 0x8C, 0xD9, 0x7B, - 0xEE, 0x24, 0x5C, 0x51, 0x4A, 0xF1, 0x6B, 0xEB, 0xD6, 0x5A, 0x0F, 0xCE, - 0x3B, 0x29, 0xAE, 0x86, 0xAA, 0xFF, 0xEC, 0x66, 0x54, 0x45, 0xA4, 0x86, - 0xD1, 0x3F, 0x2C, 0xEF, 0xF1, 0x71, 0x33, 0x4E, 0xB8, 0x16, 0x1A, 0xB2, - 0x18, 0x6E, 0xCD, 0xBA, 0x59, 0xDB, 0x52, 0xE8, 0x49, 0x78, 0x75, 0x5C, - 0x9F, 0x97, 0xB7, 0x00, 0x57, 0x11, 0xB1, 0x9D, 0x99, 0x0C, 0xA2, 0x54, - 0xDD, 0x0A, 0x03, 0xF5, 0xAA, 0x0D, 0xBF, 0x47, 0x2D, 0xC0, 0x41, 0x3A, - 0x29, 0x0A, 0xA5, 0x8C, 0x77, 0x38, 0xA5, 0x4F, 0xE9, 0x9C, 0x7E, 0x23, - 0x7E, 0xEF, 0x8F, 0xB3, 0x45, 0x96, 0xA5, 0xDC, 0xAC, 0x1A, 0x44, 0xEE, - 0xE4, 0x1C, 0x17, 0x01, 0x7E, 0x26, 0x9D, 0xA0, 0x90, 0xD8, 0x4F, 0x5A, - 0x14, 0x99, 0x46, 0x51, 0x1F, 0x29, 0xFA, 0xE2, 0xB6, 0xEB, 0x71, 0x1A, - 0xF4, 0xE2, 0x59, 0x32, 0x18, 0x66, 0x31, 0x73, 0x58, 0x23, 0xF3, 0xDC, - 0xCB, 0x73, 0xBF, 0x04, 0xB5, 0xBD, 0xAD, 0x4D, 0x67, 0x96, 0x84, 0xFA, - 0x60, 0x48, 0x97, 0x32, 0xED, 0x55, 0xB1, 0x90, 0xD3, 0x15, 0xFA, 0xD9, - 0xE4, 0x9E, 0x65, 0x72, 0x8D, 0xC5, 0x16, 0x99, 0xC9, 0xE7, 0xF7, 0x29, - 0xAD, 0xF7, 0xDB, 0x4C, 0x0A, 0xD0, 0x40, 0xBE, 0x26, 0xF4, 0xC3, 0x89, - 0x70, 0xE1, 0x82, 0xF1, 0x95, 0xB3, 0xB8, 0x64, 0xE4, 0xBA, 0x2E, 0x4C, - 0x4A, 0x93, 0x41, 0x21, 0xF1, 0xBD, 0x2C, 0x8E, 0x15, 0xFC, 0xC2, 0x33, - 0x9E, 0x76, 0xAD, 0xCE, 0x93, 0xED, 0x4D, 0x04, 0x27, 0x71, 0xDB, 0x21, - 0x0A, 0xDE, 0x48, 0xAD, 0x43, 0x6F, 0xF7, 0x97, 0x7B, 0xBC, 0xCD, 0x5A, - 0xDE, 0x60, 0x07, 0x07, 0x2A, 0x83, 0xF4, 0x25, 0x6A, 0xD1, 0xBF, 0xB2, - 0x3B, 0xF7, 0x4E, 0x46, 0xB0, 0x34, 0xC2, 0x93, 0x45, 0xB9, 0xE6, 0x32, - 0x8E, 0x75, 0x67, 0x12, 0x06, 0x46, 0x7B, 0xB1, 0xD6, 0xEC, 0x91, 0x73, - 0x87, 0x99, 0x3E, 0x9E, 0xBB, 0xAC, 0x0C, 0x94, 0xCC, 0xBD, 0x33, 0xCF, - 0x27, 0x65, 0x70, 0x18, 0x49, 0x27, 0xD9, 0xAF, 0x17, 0x43, 0x16, 0x99, - 0xD3, 0x0A, 0xB9, 0xE9, 0xD6, 0x4A, 0xDE, 0x9C, 0x9C, 0x3F, 0xE8, 0x25, - 0xB8, 0xB9, 0xAE, 0xB6, 0x5B, 0xD5, 0x9E, 0x5E, 0x41, 0x41, 0xDE, 0xC8, - 0x8E, 0xE3, 0xEC, 0x88, 0xE8, 0xD6, 0x09, 0x16, 0xAB, 0x5C, 0x93, 0xC5, - 0xAC, 0xA8, 0x70, 0x14, 0x8B, 0x9D, 0x87, 0x27, 0xC9, 0x07, 0x83, 0x94, - 0xD3, 0xBD, 0x38, 0xF8, 0x92, 0xB9, 0xB0, 0xFB, 0xC2, 0xCF, 0x69, 0x0A, - 0x6E, 0x39, 0xB4, 0x11, 0xD7, 0x54, 0xCF, 0x2C, 0x87, 0x94, 0x7E, 0xD8, - 0x6D, 0xED, 0x54, 0xDF, 0xBA, 0xF6, 0x57, 0x2E, 0xE6, 0x5B, 0x26, 0x3E, - 0xD2, 0xA3, 0xE6, 0xB3, 0x9B, 0x75, 0xD5, 0xBD, 0x76, 0x9E, 0xE5, 0x82, - 0xA8, 0x4A, 0x2B, 0xC5, 0x45, 0x80, 0xC5, 0x55, 0x0A, 0x72, 0x78, 0x58, - 0x3E, 0x88, 0x9D, 0x7D, 0x7C, 0x23, 0xE8, 0xCD, 0x1C, 0xAF, 0x7C, 0x43, - 0xB1, 0xE0, 0x19, 0x96, 0x5C, 0xBC, 0xF7, 0x2A, 0x60, 0xF2, 0x50, 0x54, - 0xCC, 0xE7, 0xF4, 0xD7, 0x2D, 0xDF, 0x03, 0xBB, 0x77, 0xCE, 0x9C, 0xB3, - 0x9F, 0xC0, 0xBC, 0xC3, 0xBB, 0x47, 0xC6, 0xAE, 0x1A, 0x0A, 0x57, 0x52, - 0xA5, 0x75, 0xB5, 0x32, 0x62, 0x9A, 0x11, 0xD6, 0x45, 0x03, 0xFC, 0xAA, - 0x43, 0x55, 0x4D, 0xDC, 0xE8, 0x0F, 0xBC, 0x46, 0x5B, 0x57, 0x37, 0x9F, - 0xD4, 0x5E, 0xFC, 0xD4, 0x7A, 0x1B, 0x67, 0xB7, 0x2A, 0xBE, 0x6A, 0x58, - 0xF6, 0x21, 0x20, 0x29, 0x90, 0xC9, 0xB1, 0x25, 0x05, 0xF2, 0x95, 0x5F, - 0xA2, 0x3E, 0x39, 0xFC, 0xF0, 0x08, 0x61, 0xE5, 0xB2, 0x9A, 0xFB, 0xE0, - 0x9D, 0x40, 0x5D, 0xE4, 0x2D, 0x62, 0x37, 0x8E, 0x02, 0x5A, 0xA1, 0xD5, - 0x63, 0x9A, 0xE2, 0x77, 0x46, 0xC6, 0xD1, 0x10, 0xAA, 0x46, 0x1D, 0x22, - 0x46, 0x2F, 0xE9, 0x95, 0xF4, 0xD5, 0x69, 0xE6, 0x70, 0xDC, 0x09, 0x4E, - 0x0D, 0xA6, 0xD6, 0x16, 0x97, 0xD1, 0x4C, 0xD3, 0xD7, 0x0B, 0x4C, 0x97, - 0x66, 0xC0, 0x3F, 0x91, 0xB0, 0x9E, 0x2F, 0x00, 0xF1, 0x10, 0x78, 0x50, - 0x9F, 0xC6, 0x38, 0xC5, 0x46, 0xB0, 0x45, 0x53, 0x4F, 0x01, 0x7C, 0x46, - 0xB2, 0x85, 0xBE, 0x89, 0xB3, 0x99, 0x33, 0xCB, 0x84, 0x07, 0x45, 0x40, - 0x16, 0x0E, 0x2F, 0xE7, 0x5D, 0x0E, 0xFE, 0xF7, 0x68, 0xF3, 0x70, 0xED, - 0x8C, 0x82, 0x2F, 0x48, 0x65, 0xD2, 0xCD, 0x3E, 0x65, 0xC3, 0xCD, 0x7A, - 0x3D, 0xAD, 0xA0, 0xB4, 0x29, 0x57, 0x26, 0xF1, 0xFF, 0xA1, 0x92, 0x9F, - 0x64, 0xAF, 0x1D, 0xB4, 0xF1, 0xDD, 0x4F, 0xC8, 0x1C, 0x1A, 0x8A, 0x26, - 0x3D, 0xBC, 0xC8, 0x57, 0x92, 0xDB, 0xAA, 0x5D, 0x5B, 0x7F, 0x77, 0xC5, - 0x47, 0x02, 0x34, 0x25, 0x60, 0xC5, 0x7B, 0x8C, 0x84, 0x30, 0x9D, 0xF2, - 0x8A, 0x14, 0x6D, 0x55, 0x14, 0xA4, 0xA2, 0x56, 0xFC, 0x26, 0x9F, 0x1B, - 0x66, 0xCC, 0x5F, 0x69, 0xF5, 0x9B, 0x43, 0xA0, 0xFC, 0x84, 0x00, 0x1F, - 0x85, 0x6A, 0x9C, 0x23, 0x99, 0x6F, 0xF1, 0xFC, 0x8E, 0x07, 0xC4, 0x62, - 0x73, 0xEA, 0xFD, 0x7F, 0x92, 0x28, 0xE1, 0xC1, 0x51, 0x5B, 0xDC, 0x2D, - 0xB1, 0x88, 0xE5, 0x8C, 0x69, 0x18, 0xF3, 0xD7, 0xFF, 0x76, 0x35, 0x83, - 0x0A, 0x54, 0x59, 0x22, 0x31, 0x83, 0x26, 0xB8, 0x5F, 0x26, 0xA7, 0x73, - 0x50, 0xB1, 0xB7, 0x53, 0x82, 0x2C, 0x15, 0x65, 0xDF, 0xF9, 0x5E, 0x2A, - 0x9A, 0x7E, 0x19, 0xEE, 0xBE, 0xDE, 0xA8, 0xB2, 0x82, 0x58, 0x06, 0xE1, - 0xD1, 0xAB, 0xE6, 0x15, 0x7A, 0x31, 0x1B, 0x4B, 0xF6, 0xEE, 0x49, 0x25, - 0xB3, 0x68, 0xFE, 0x25, 0x6C, 0x46, 0x9B, 0x88, 0xFA, 0x4C, 0xFC, 0x90, - 0xA5, 0x6B, 0x40, 0x07, 0xDB, 0xA5, 0xE5, 0x97, 0x20, 0xD5, 0xE3, 0x0A, - 0xC9, 0xB8, 0x55, 0xDD, 0x9B, 0xBA, 0x11, 0x06, 0x4C, 0x3D, 0x34, 0x09, - 0xD1, 0xAA, 0x87, 0x5B, 0x95, 0xDD, 0xF9, 0x5D, 0x7E, 0x53, 0xE3, 0x31, - 0x46, 0xAB, 0x33, 0x12, 0x0B, 0xB8, 0xEB, 0x4C, 0x2F, 0x95, 0x0D, 0x39, - 0xD5, 0xB4, 0xED, 0x96, 0xCE, 0xC0, 0x5A, 0xA3, 0x16, 0xB8, 0x9A, 0x68, - 0xDC, 0xE9, 0x3B, 0xC6, 0x36, 0x75, 0x8C, 0x8E, 0x25, 0x97, 0xF7, 0x81, - 0xC2, 0xAC, 0x3F, 0x5E, 0x6B, 0x4C, 0x7E, 0x95, 0xAE, 0xD1, 0x50, 0x91, - 0x15, 0x67, 0x8E, 0xC8, 0xF2, 0x81, 0x8A, 0x6B, 0xBF, 0x4B, 0xC6, 0xAF, - 0xCD, 0x04, 0xCC, 0x16, 0xA2, 0x43, 0x7A, 0x78, 0x56, 0xC1, 0x7E, 0xC8, - 0xBE, 0x91, 0x9D, 0x7B, 0x9C, 0xAC, 0x7E, 0x18, 0xFA, 0xEB, 0xAD, 0x1F, - 0x28, 0xE0, 0x61, 0x81, 0xC3, 0xD3, 0x24, 0x78, 0x08, 0xE6, 0xD5, 0x91, - 0x83, 0x36, 0xA4, 0x1A, 0xB8, 0xCF, 0x93, 0x4F, 0x26, 0x6C, 0xC1, 0x7F, - 0x48, 0x93, 0xD2, 0xD6, 0xC2, 0x33, 0x5C, 0x9D, 0x3F, 0x84, 0x7C, 0xD7, - 0x8B, 0xBC, 0x9A, 0xDC, 0x46, 0x84, 0xCC, 0x72, 0xF7, 0x7C, 0xEE, 0xA8, - 0x37, 0x54, 0x77, 0xD8, 0x21, 0x44, 0xA3, 0x3A, 0xBD, 0xCF, 0x65, 0xF3, - 0xDB, 0xD0, 0x6F, 0xCA, 0x19, 0xCD, 0xAC, 0xBD, 0x66, 0x92, 0x89, 0xDF, - 0x2B, 0xFE, 0x8D, 0x28, 0xBA, 0x79, 0x5B, 0xBF, 0x66, 0x67, 0x05, 0xE9, - 0xA6, 0xFD, 0x56, 0xD6, 0x63, 0x8A, 0x23, 0x01, 0x24, 0x5A, 0x6D, 0x43, - 0xCD, 0x26, 0x13, 0x2E, 0x48, 0x46, 0x01, 0x20, 0x52, 0x5A, 0xD8, 0x34, - 0x75, 0xF5, 0x4E, 0x63, 0x56, 0x17, 0x35, 0x10, 0x29, 0x4B, 0xDD, 0x0B, - 0xA5, 0xAF, 0x95, 0x92, 0xEE, 0x11, 0x99, 0xD2, 0xEA, 0x30, 0x80, 0x16, - 0xB3, 0xF8, 0x96, 0x24, 0xED, 0x98, 0x5F, 0x4F, 0x02, 0xBB, 0x69, 0xDD, - 0x30, 0x1C, 0xBE, 0x3F, 0x1B, 0x33, 0x2A, 0xA7, 0x83, 0xD7, 0x0E, 0x3D, - 0x49, 0x58, 0xEF, 0x61, 0x0D, 0x1C, 0x6B, 0x1B, 0x41, 0xB7, 0xB3, 0x64, - 0xF9, 0xE1, 0x1F, 0xF2, 0x4B, 0xC8, 0xED, 0xC7, 0xEE, 0x3A, 0xCB, 0xCD, - 0x18, 0x40, 0x28, 0x2F, 0x1C, 0x41, 0x02, 0x31, 0x7A, 0xC3, 0x71, 0x75, - 0x21, 0x49, 0x65, 0x6D, 0x32, 0xAC, 0x06, 0x42, 0x11, 0x96, 0xB2, 0xEC, - 0xD9, 0x5D, 0xD3, 0xB4, 0xB1, 0x21, 0xFF, 0x98, 0x9F, 0xD6, 0x77, 0x70, - 0x6B, 0xA4, 0x6E, 0x45, 0x69, 0x8C, 0xDB, 0x77, 0x92, 0x80, 0xF3, 0x82, - 0x95, 0x2E, 0x73, 0xA6, 0x7E, 0xAA, 0x6F, 0xE2, 0x78, 0x82, 0x9E, 0x78, - 0x3C, 0xB7, 0x5A, 0x90, 0xA0, 0xE8, 0xB4, 0x5D, 0x7A, 0xA8, 0xCE, 0xAC, - 0xBA, 0x00, 0xEA, 0x0F, 0xDF, 0x6B, 0x75, 0x4C, 0x0D, 0x1C, 0x30, 0x7F, - 0x6E, 0xFA, 0x03, 0xDC, 0x6B, 0x48, 0xE0, 0x74, 0xD9, 0xB9, 0x67, 0x9D, - 0x0B, 0x55, 0xD3, 0xFE, 0x68, 0x79, 0xF7, 0x10, 0x7F, 0x9E, 0xE1, 0xB9, - 0x60, 0xE7, 0x54, 0x13, 0x67, 0x2C, 0x04, 0x48, 0xDF, 0xD9, 0x85, 0x2C, - 0xFF, 0x1E, 0x01, 0x61, 0x0F, 0x74, 0x2C, 0x21, 0x69, 0x3F, 0xE6, 0x7A, - 0xF3, 0xD7, 0xE6, 0xD3, 0xBF, 0x77, 0x83, 0xC8, 0xF5, 0x5D, 0xF4, 0x4D, - 0xC6, 0x0B, 0xEC, 0x46, 0x39, 0xDA, 0xBD, 0x39, 0x51, 0xB9, 0xF2, 0xC3, - 0x48, 0x41, 0xDA, 0x1E, 0x2F, 0xD8, 0xFB, 0x7F, 0x9E, 0x9C, 0x10, 0xF1, - 0xB2, 0x2A, 0x14, 0xD1, 0x3C, 0x38, 0x0F, 0x21, 0x9D, 0xAF, 0x64, 0x95, - 0x46, 0x6A, 0xD2, 0x28, 0x14, 0x16, 0xF0, 0x28, 0x43, 0xC9, 0x81, 0x1D, - 0x1E, 0xB7, 0x0D, 0x84, 0x8B, 0x30, 0xFD, 0xE3, 0xBB, 0x46, 0x5E, 0xFD, - 0xEA, 0x0A, 0x9E, 0x02, 0x3F, 0x5E, 0xE5, 0x00, 0x97, 0xFB, 0x0D, 0xEA, - 0xF8, 0x66, 0x7F, 0xB3, 0x6D, 0x2E, 0xFD, 0xC8, 0x15, 0x97, 0xE0, 0xDB, - 0x44, 0x59, 0xBC, 0x32, 0xB7, 0x70, 0x61, 0x88, 0xC9, 0x81, 0x21, 0xA4, - 0x82, 0x8D, 0x27, 0x67, 0x33, 0x31, 0xE5, 0x6B, 0x94, 0x26, 0xB9, 0xC3, - 0xB8, 0x45, 0x69, 0x5D, 0x0B, 0xD2, 0xB1, 0x3A, 0x03, 0x40, 0x8B, 0x06, - 0x79, 0x76, 0x63, 0x24, 0x61, 0xB9, 0x26, 0x64, 0x14, 0xC3, 0x9C, 0x9A, - 0xFA, 0xD9, 0xBF, 0x7B, 0x6A, 0xB3, 0x2B, 0x9C, 0x9A, 0x8D, 0x9A, 0x11, - 0x9B, 0xF7, 0x9D, 0xD2, 0xF8, 0xE4, 0x74, 0x6D, 0x5E, 0x12, 0xD9, 0xC2, - 0xE3, 0x7D, 0xDE, 0xDA, 0x57, 0xD6, 0xEF, 0x9A, 0xB1, 0x13, 0xF0, 0xC5, - 0x99, 0x5B, 0x88, 0xE2, 0x9B, 0xDF, 0x3B, 0x62, 0x9F, 0x3C, 0x10, 0x38, - 0x91, 0xFA, 0x97, 0x82, 0x44, 0x36, 0x65, 0x8C, 0xA2, 0x47, 0x9B, 0x10, - 0x12, 0x96, 0xA1, 0x4E, 0x0E, 0x57, 0x42, 0x62, 0xF4, 0xE6, 0xAF, 0x23, - 0xC0, 0xB4, 0xA0, 0x49, 0x5A, 0x33, 0xA9, 0x4D, 0xB1, 0xB0, 0x5B, 0x0C, - 0x6A, 0x67, 0x47, 0xFB, 0x03, 0x7C, 0x1F, 0x15, 0xA1, 0x72, 0x99, 0xBE, - 0x84, 0x58, 0x68, 0x36, 0x13, 0x34, 0x0C, 0x20, 0x11, 0xDB, 0x68, 0x30, - 0x9F, 0xEA, 0x05, 0x99, 0xDC, 0x30, 0xF3, 0xA7, 0xA9, 0x3C, 0x7D, 0xA8, - 0x3C, 0x0D, 0x43, 0xCB, 0xCC, 0xA5, 0x40, 0xCF, 0x0F, 0xF4, 0x34, 0x91, - 0x79, 0x36, 0xB8, 0x4D, 0x25, 0x3E, 0xF7, 0x69, 0xC7, 0x31, 0x9D, 0x45, - 0xEC, 0x3C, 0x3D, 0x99, 0x13, 0x54, 0x19, 0x3D, 0xDD, 0x2B, 0xE9, 0x6B, - 0xE0, 0xCE, 0xB7, 0xBF, 0x8F, 0x47, 0x0F, 0x1A, 0x43, 0x14, 0x4C, 0xAB, - 0xD4, 0xEE, 0xAC, 0x55, 0x0C, 0x4D, 0x7E, 0xA5, 0x40, 0xE9, 0xD0, 0x0A, - 0xC0, 0xCD, 0xB8, 0xB4, 0x31, 0x63, 0xEB, 0x78, 0xE9, 0x32, 0x19, 0xE3, - 0xFB, 0xA4, 0xCF, 0x48, 0x39, 0x92, 0xA5, 0xAA, 0xA0, 0x4E, 0xA1, 0xF3, - 0x2E, 0x1A, 0x59, 0x62, 0xA4, 0xC0, 0x7B, 0xAC, 0xCA, 0xAD, 0x52, 0xA4, - 0xB7, 0x6F, 0x4B, 0x67, 0x5E, 0x5E, 0x2A, 0xE0, 0xEC, 0x9B, 0xA7, 0xD6, - 0x65, 0xD4, 0x60, 0xF3, 0x48, 0xDF, 0x45, 0xF3, 0xFD, 0xB5, 0x0F, 0xC9, - 0xE6, 0x10, 0x78, 0x4D, 0xAD, 0x30, 0xD1, 0x07, 0xEA, 0x38, 0x6A, 0xE3, - 0x3B, 0x10, 0x99, 0x1A, 0xA6, 0xDE, 0x2D, 0x9D, 0x1D, 0xCE, 0x5D, 0x26, - 0x76, 0x25, 0x87, 0x43, 0xA1, 0xBD, 0xE9, 0xA9, 0xB8, 0xA0, 0x1E, 0x88, - 0x1A, 0x6A, 0x99, 0x79, 0x01, 0x32, 0x3A, 0x4C, 0x3B, 0xC1, 0xB5, 0x18, - 0x72, 0x32, 0x0F, 0x7B, 0x91, 0x38, 0x66, 0x8A, 0x16, 0x12, 0xAF, 0xBE, - 0x5F, 0x73, 0xA3, 0x0A, 0x1D, 0x97, 0x35, 0x87, 0x53, 0x27, 0xB6, 0x5B, - 0x43, 0x12, 0xB4, 0xEC, 0xF0, 0x2F, 0x16, 0x59, 0x6E, 0x11, 0x2C, 0x20, - 0x11, 0xAB, 0x84, 0x2B, 0x7F, 0x9C, 0x82, 0x19, 0x5D, 0xD3, 0x9A, 0x18, - 0xA2, 0xFF, 0x38, 0x7A, 0x07, 0xD3, 0xBE, 0x23, 0x5C, 0x33, 0x00, 0x99, - 0xFE, 0xE0, 0xFC, 0xC0, 0x35, 0x05, 0x89, 0xFF, 0x58, 0x93, 0x20, 0x41, - 0xDC, 0xD0, 0x27, 0x31, 0xA0, 0xD5, 0xAC, 0xBF, 0x78, 0x87, 0x23, 0x33, - 0xBF, 0x52, 0xE2, 0xDB, 0x24, 0xB8, 0x83, 0xE1, 0x26, 0x42, 0x8C, 0x1D, - 0xD4, 0xD4, 0xFC, 0xE3, 0x34, 0xF4, 0x5D, 0x98, 0x17, 0xA1, 0xC4, 0x2A, - 0x48, 0x3C, 0x4E, 0x89, 0x7D, 0x03, 0x38, 0xE3, 0x13, 0x66, 0xD4, 0x76, - 0xB2, 0x93, 0xD2, 0x9C, 0x75, 0x3F, 0xD3, 0x91, 0x34, 0xAF, 0x61, 0x55, - 0x1D, 0xE8, 0x4C, 0x2F, 0x59, 0x2A, 0x64, 0x05, 0xB9, 0x1D, 0xC1, 0x0B, - 0x1F, 0x4B, 0xFF, 0x83, 0xAB, 0xBE, 0xB7, 0xB5, 0xF2, 0x23, 0x78, 0xD1, - 0xA3, 0x81, 0x8F, 0xF2, 0x7C, 0xC6, 0xE7, 0x9F, 0x29, 0xD2, 0x81, 0xFE, - 0x50, 0x1C, 0xE7, 0xEF, 0xBF, 0x7F, 0x1C, 0x2A, 0x3F, 0x1A, 0x7C, 0x5E, - 0xF7, 0xF5, 0x1B, 0x11, 0x8D, 0xB1, 0xF3, 0xC7, 0xE3, 0x38, 0x43, 0x56, - 0x1A, 0x1E, 0x26, 0xE6, 0xD4, 0x15, 0x84, 0x03, 0x04, 0x49, 0xBD, 0xA0, - 0xC0, 0x21, 0xC8, 0x8E, 0xC9, 0x96, 0x9B, 0xFA, 0xCA, 0x98, 0xAE, 0x2F, - 0xE2, 0x9A, 0x9B, 0xEC, 0x29, 0x8F, 0xF2, 0x04, 0xEA, 0x94, 0xB9, 0x70, - 0xED, 0xB1, 0x4E, 0x2B, 0x5C, 0x65, 0x00, 0x79, 0x41, 0x53, 0x4B, 0x9D, - 0xFA, 0x90, 0x22, 0x52, 0x76, 0x51, 0xEC, 0xC2, 0x50, 0xCC, 0x6C, 0xA1, - 0x5B, 0x4A, 0xAC, 0x58, 0x8F, 0x97, 0x0D, 0xFE, 0xE5, 0x3C, 0x24, 0x34, - 0xDC, 0xF2, 0x7A, 0x81, 0xA7, 0x9D, 0x3D, 0x28, 0x87, 0xCF, 0xF3, 0xD2, - 0x51, 0x0D, 0xF1, 0x5C, 0x01, 0xD5, 0x58, 0x72, 0x33, 0xD7, 0x48, 0x4A, - 0x75, 0xF5, 0x1A, 0x10, 0xF1, 0x12, 0x76, 0x70, 0xD2, 0x0E, 0x3A, 0x9B, - 0x09, 0x23, 0x66, 0xED, 0x15, 0xB7, 0xEB, 0x5D, 0xEF, 0x66, 0xEB, 0x8F, - 0xAF, 0xD7, 0xDC, 0xF6, 0x5E, 0xA5, 0xED, 0xA8, 0x77, 0xE2, 0xC0, 0xF6, - 0x19, 0xFE, 0x38, 0xEC, 0x2D, 0xCC, 0x82, 0xC6, 0x21, 0x22, 0x69, 0x67, - 0xE4, 0x86, 0x26, 0x0E, 0xCC, 0x88, 0x55, 0x6A, 0x17, 0xC6, 0xD0, 0x5F, - 0x1C, 0x68, 0x72, 0x08, 0x2D, 0x8B, 0xB7, 0xD7, 0xAF, 0x85, 0x0C, 0xC5, - 0x9F, 0x4F, 0x6D, 0x0B, 0x34, 0xA2, 0x8D, 0x6D, 0x92, 0x31, 0x6C, 0x92, - 0x91, 0xFE, 0x3F, 0xC0, 0xA5, 0x4A, 0x58, 0xA7, 0x23, 0x06, 0xA7, 0xE3, - 0xAF, 0xC6, 0xF5, 0x4C, 0x9D, 0x2A, 0x74, 0x4D, 0xAA, 0xD3, 0xA5, 0xD9, - 0xB9, 0x4D, 0xDE, 0x2F, 0xA4, 0x69, 0x24, 0x56, 0x5F, 0xCA, 0x0F, 0x43, - 0x1E, 0x58, 0xD4, 0x70, 0xD9, 0x11, 0x53, 0xE7, 0xB6, 0x9E, 0x8F, 0x06, - 0xCA, 0xBF, 0x20, 0x59, 0xE9, 0x51, 0xAE, 0xBA, 0x68, 0x30, 0xDE, 0x5E, - 0x9C, 0x4D, 0x0A, 0xD1, 0xF7, 0xFB, 0x1E, 0xEF, 0xE3, 0x71, 0xFC, 0x9E, - 0x12, 0x96, 0xEF, 0xB7, 0xC1, 0xD5, 0x44, 0x48, 0x5E, 0x44, 0x32, 0xED, - 0x52, 0xFA, 0x18, 0xA1, 0xAE, 0x6F, 0xCD, 0xDB, 0x83, 0x38, 0x8E, 0xD0, - 0xEC, 0x8E, 0x3A, 0xEF, 0x43, 0x03, 0xF2, 0x68, 0x14, 0xE2, 0xD3, 0x7D, - 0xF8, 0x2E, 0x23, 0xBC, 0x54, 0x52, 0x60, 0xE4, 0x89, 0xED, 0x87, 0x78, - 0x21, 0x07, 0xF8, 0x24, 0x12, 0x1E, 0x99, 0x21, 0x36, 0x3F, 0x6B, 0xB1, - 0xE5, 0x62, 0x46, 0x82, 0xC9, 0x44, 0x67, 0x33, 0x3E, 0x38, 0x62, 0x02, - 0xA0, 0x48, 0x1B, 0xD7, 0xBD, 0x21, 0xAB, 0x2E, 0x62, 0x9E, 0x35, 0x8E, - 0x3E, 0xDA, 0x2D, 0xA4, 0xDC, 0x7E, 0x43, 0x57, 0x45, 0x13, 0xD4, 0x62, - 0x45, 0xAB, 0x95, 0x57, 0x4C, 0x56, 0x4C, 0xAD, 0x5F, 0xBF, 0xA0, 0x24, - 0x23, 0x53, 0x71, 0xE5, 0xA1, 0x5C, 0x6C, 0xD3, 0xFD, 0xE6, 0x43, 0xFD, - 0x28, 0x86, 0xA6, 0x63, 0xA7, 0x73, 0x35, 0xF0, 0xFD, 0xFF, 0xC7, 0x7B, - 0x16, 0x38, 0x73, 0x9C, 0xFC, 0x65, 0x50, 0x94, 0x2D, 0x57, 0xE5, 0xDD, - 0x8C, 0x3B, 0x68, 0x81, 0xEA, 0x90, 0xA5, 0x3F, 0xC2, 0x2F, 0x9C, 0xD6, - 0x9F, 0xBA, 0x01, 0xD7, 0x8E, 0xA1, 0x71, 0xE2, 0xA5, 0x2A, 0x6A, 0xA5, - 0xFA, 0xE1, 0x6F, 0x44, 0x13, 0x56, 0x16, 0x3A, 0x1A, 0xBA, 0xBE, 0x5D, - 0xA6, 0xFA, 0x73, 0xEB, 0x05, 0xE0, 0x88, 0x8A, 0xEB, 0x5A, 0x50, 0xF5, - 0xFC, 0x86, 0xA2, 0x35, 0x41, 0x03, 0x72, 0x92, 0x4A, 0x8F, 0x73, 0xF0, - 0x05, 0x2A, 0xA4, 0x8C, 0x5C, 0x46, 0xEB, 0xE9, 0xE3, 0x3C, 0x6F, 0xB2, - 0x23, 0x6B, 0xA0, 0x77, 0xED, 0xA9, 0x95, 0x5C, 0x50, 0xA3, 0x01, 0xB0, - 0x8D, 0xE9, 0x5B, 0x5C, 0x0B, 0x91, 0xF5, 0x32, 0x9D, 0x52, 0xA1, 0x45, - 0x21, 0x45, 0x4A, 0xEA, 0x42, 0x8A, 0x7A, 0x91, 0xA0, 0x34, 0x95, 0x85, - 0xEC, 0x84, 0x21, 0xEB, 0x9E, 0x6C, 0xC8, 0xE5, 0x5C, 0x5F, 0xAF, 0x0C, - 0xC8, 0x17, 0xC8, 0x87, 0x3C, 0x10, 0xD2, 0x20, 0x03, 0x08, 0xD3, 0x3E, - 0xC6, 0x70, 0x33, 0xFE, 0x9E, 0x11, 0x85, 0xDC, 0xB2, 0xD6, 0xEA, 0x83, - 0xD2, 0xE2, 0x41, 0x1E, 0x70, 0x0E, 0xED, 0xE5, 0x64, 0xBC, 0x83, 0x6F, - 0x1F, 0xEF, 0xC4, 0xFE, 0x20, 0x99, 0x87, 0xF6, 0x76, 0x76, 0x4B, 0xC2, - 0xEF, 0x9C, 0xA9, 0xED, 0x33, 0xF8, 0x6A, 0x64, 0x83, 0x76, 0xAE, 0x5D, - 0x48, 0xAA, 0x08, 0x64, 0x95, 0xB8, 0x8F, 0x33, 0xB3, 0x88, 0x07, 0x55, - 0xDB, 0x6C, 0xA5, 0x1E, 0x3B, 0xCA, 0x76, 0xDC, 0x0D, 0x85, 0x02, 0xA2, - 0xEC, 0xB5, 0x0F, 0xC4, 0x52, 0x11, 0x57, 0xF5, 0x2D, 0x8D, 0xFB, 0x3C, - 0x49, 0xC7, 0x59, 0x68, 0x3A, 0x62, 0xC9, 0x28, 0xCD, 0x81, 0x98, 0x10, - 0xB0, 0x71, 0x3B, 0x96, 0xB9, 0xC2, 0x16, 0x14, 0x88, 0xCC, 0x56, 0x1A, - 0xD2, 0x78, 0xBC, 0x53, 0x4A, 0xA8, 0x27, 0xDE, 0x8A, 0x5B, 0xEF, 0x58, - 0x97, 0x95, 0x02, 0xF3, 0x76, 0xC1, 0xA2, 0x01, 0xB8, 0xD2, 0xB8, 0xAC, - 0xC5, 0xB3, 0x36, 0x33, 0x7C, 0x1A, 0xCA, 0x06, 0x4C, 0x09, 0xBC, 0x3C, - 0x0B, 0x0A, 0xD8, 0xAC, 0x74, 0x25, 0xA4, 0x91, 0xDB, 0x13, 0xE5, 0x2B, - 0x09, 0xC7, 0x3D, 0x99, 0xFB, 0x4F, 0xFF, 0xB4, 0x9C, 0x9E, 0x89, 0xF8, - 0xD3, 0xAC, 0xCF, 0x37, 0xEA, 0x3F, 0xAC, 0x3E, 0x8F, 0x7E, 0xFD, 0x66, - 0x97, 0xF1, 0x8A, 0x94, 0xE0, 0x36, 0x2A, 0x48, 0x1C, 0xA9, 0x5B, 0x1E, - 0x4D, 0xCC, 0xB0, 0xF6, 0xA6, 0x26, 0x2E, 0x6D, 0x29, 0x6E, 0x89, 0x30, - 0x6C, 0x2B, 0xA3, 0x04, 0xD4, 0x8F, 0x8C, 0xCB, 0xA7, 0xA2, 0x05, 0x94, - 0x93, 0xE9, 0x9B, 0x03, 0x18, 0x91, 0x76, 0x25, 0x42, 0xF6, 0xC1, 0xE1, - 0xE8, 0x6B, 0x56, 0xEF, 0x61, 0xED, 0xDB, 0xF7, 0xD6, 0xD3, 0x50, 0xB1, - 0x59, 0xAE, 0x79, 0x22, 0xEB, 0xCC, 0x39, 0x3E, 0x10, 0xD7, 0x21, 0x04, - 0x7D, 0xEF, 0x96, 0x73, 0xBC, 0x6C, 0xE5, 0x0D, 0x15, 0x8A, 0x94, 0x07, - 0x14, 0x96, 0x86, 0x31, 0x68, 0xD6, 0xC0, 0xE7, 0xE5, 0xEE, 0x6C, 0x77, - 0xBD, 0x9E, 0xD9, 0x27, 0xE7, 0x68, 0x1E, 0x57, 0x1A, 0x0D, 0x01, 0xDD, - 0x3B, 0xAF, 0x85, 0x5A, 0xA3, 0x49, 0x4A, 0xCB, 0x1D, 0x2E, 0xC4, 0xFE, - 0x39, 0x50, 0x36, 0x5C, 0xF8, 0xE4, 0xC4, 0x0D, 0x6A, 0x84, 0xCC, 0xC1, - 0x5C, 0xF1, 0x72, 0x34, 0x1B, 0xAE, 0x8E, 0xFB, 0x45, 0x23, 0xBE, 0xC5, - 0x4B, 0xAE, 0xC2, 0xC9, 0x74, 0xF5, 0x83, 0x84, 0x26, 0x7A, 0xFA, 0x8D, - 0xFF, 0x34, 0x68, 0xDE, 0x39, 0xB3, 0xDB, 0x15, 0xDB, 0x13, 0xC2, 0x59, - 0xDE, 0x5F, 0x78, 0xD2, 0x04, 0x1D, 0x3A, 0x45, 0x7B, 0xCD, 0xB5, 0xC4, - 0x51, 0xCF, 0x8F, 0xAD, 0x2E, 0x61, 0x23, 0xEC, 0x66, 0x37, 0x2D, 0x4A, - 0xB3, 0xD4, 0xCA, 0x8C, 0x37, 0x3F, 0xAE, 0x15, 0x3F, 0xBE, 0xE7, 0x5E, - 0x2D, 0xAD, 0x95, 0x30, 0xFB, 0x35, 0x42, 0xC9, 0xFB, 0xF1, 0x5A, 0xD0, - 0x20, 0x3A, 0x06, 0xF5, 0x1D, 0x2D, 0xDB, 0xAC, 0x4C, 0xEB, 0x02, 0xF0, - 0x11, 0x4D, 0xC9, 0x24, 0x46, 0x5E, 0x1A, 0xAA, 0x24, 0xE8, 0x0B, 0xAC, - 0x83, 0xAD, 0x12, 0x9D, 0xD1, 0x79, 0xBC, 0xE0, 0xF7, 0x56, 0x21, 0x90, - 0x71, 0x7D, 0x6D, 0x36, 0x59, 0xC3, 0xF8, 0x4C, 0x60, 0xBF, 0x0B, 0xF4, - 0x29, 0x60, 0x65, 0xF3, 0xC7, 0x48, 0xAC, 0x8F, 0x7C, 0x5D, 0x4B, 0xF8, - 0x75, 0x5E, 0x94, 0x97, 0x1C, 0x02, 0x70, 0xED, 0xA3, 0xC4, 0x22, 0xB6, - 0x10, 0xFA, 0x74, 0x00, 0x8C, 0x73, 0x6C, 0xC7, 0xB2, 0xFA, 0x6E, 0x0F, - 0x42, 0x8B, 0xF5, 0xB7, 0xF0, 0xE9, 0x29, 0xE8, 0x48, 0xB3, 0x1C, 0xD2, - 0xAB, 0xA1, 0xA5, 0x8B, 0x1C, 0x43, 0x44, 0xEF, 0xE9, 0x95, 0xC8, 0xA6, - 0xE9, 0x48, 0x8C, 0x73, 0xFA, 0x6C, 0x9C, 0xC4, 0xAE, 0x2B, 0xB3, 0xC9, - 0x11, 0x06, 0x20, 0xA9, 0x00, 0xFB, 0x50, 0x1D, 0x73, 0x68, 0xD5, 0xC0, - 0x4D, 0x38, 0x4C, 0xAA, 0x93, 0xC0, 0x24, 0x25, 0xE0, 0x55, 0x0C, 0x6F, - 0xE8, 0xA2, 0x66, 0x3C, 0xE0, 0x5E, 0x5C, 0x2F, 0xBC, 0x27, 0x66, 0x99, - 0x0E, 0xF6, 0xFE, 0xCF, 0x14, 0x19, 0x0E, 0x9D, 0x75, 0xCF, 0xE9, 0x29, - 0xC1, 0x77, 0x26, 0xF5, 0x78, 0xA5, 0x4E, 0x7D, 0x7F, 0x3F, 0x33, 0x11, - 0x5F, 0x26, 0xCD, 0xCB, 0x5B, 0x47, 0xD4, 0x37, 0x4C, 0xBA, 0x38, 0x59, - 0x23, 0x80, 0x84, 0xEF, 0x3C, 0xCC, 0xD6, 0xA9, 0x71, 0xA3, 0xFE, 0x5B, - 0xD5, 0x3B, 0x21, 0x52, 0xC2, 0xD6, 0x1B, 0x71, 0x3B, 0x06, 0x55, 0x5C, - 0x1B, 0x77, 0xAB, 0x80, 0x0B, 0x17, 0xCB, 0x14, 0x72, 0x87, 0xFB, 0x81, - 0xD4, 0xFB, 0xB7, 0xD0, 0x84, 0x65, 0x9B, 0x6F, 0x2B, 0xD5, 0x7A, 0x12, - 0xA8, 0x2A, 0xBE, 0xA5, 0xE7, 0xE2, 0x8F, 0x05, 0x1A, 0x54, 0x10, 0xAA, - 0x72, 0x34, 0xF6, 0xE9, 0x08, 0x6B, 0xB4, 0xFC, 0x69, 0xAF, 0x26, 0x5F, - 0xC5, 0x72, 0x61, 0x96, 0x3A, 0xD6, 0xE4, 0x5B, 0xBA, 0xCB, 0x0C, 0xD1, - 0xAE, 0xF8, 0x19, 0xFA, 0xB6, 0xCF, 0x0C, 0xCC, 0xFC, 0xCD, 0x82, 0x15, - 0xAC, 0x36, 0x04, 0x80, 0x75, 0x3D, 0x8D, 0xF9, 0x36, 0x57, 0x4F, 0x7C, - 0x55, 0x60, 0xE0, 0x2F, 0xB4, 0x89, 0x9E, 0x77, 0xED, 0xCB, 0x19, 0x96, - 0xB4, 0xC0, 0x5E, 0xBE, 0x4E, 0xEF, 0xB9, 0xA7, 0xCB, 0x92, 0x68, 0x74, - 0xF0, 0x9A, 0x38, 0xE1, 0x15, 0x67, 0x64, 0xE0, 0x70, 0x08, 0x36, 0xED, - 0xC4, 0x47, 0x11, 0xD6, 0x79, 0x5E, 0x12, 0x4A, 0x50, 0xD8, 0xFE, 0x7D, - 0x09, 0x67, 0x11, 0x53, 0x2B, 0x2E, 0x6F, 0x5B, 0x91, 0xF5, 0x1A, 0xAA, - 0x0C, 0x0C, 0x50, 0x45, 0x0B, 0x94, 0x01, 0x16, 0xB7, 0x83, 0x9A, 0xF6, - 0xCC, 0x45, 0x79, 0x7C, 0xD0, 0x9C, 0xFD, 0x66, 0xB1, 0xBD, 0xCF, 0x70, - 0xBC, 0x77, 0xF4, 0xA2, 0xEE, 0x6F, 0x13, 0x28, 0x48, 0x39, 0x81, 0xCB, - 0x80, 0x52, 0xED, 0x49, 0xEE, 0x54, 0xFD, 0x59, 0x27, 0x51, 0x68, 0x8E, - 0xFA, 0x46, 0x89, 0x9A, 0xCF, 0x48, 0x45, 0x9F, 0xA5, 0x6F, 0x16, 0x6C, - 0x3C, 0x36, 0x41, 0xF7, 0x06, 0xAA, 0x3A, 0x7D, 0xFF, 0x4E, 0x37, 0xE6, - 0x7D, 0x83, 0x9F, 0xDE, 0x6E, 0xBC, 0x7C, 0x95, 0xEF, 0x93, 0x82, 0x42, - 0x43, 0xAA, 0xC2, 0x85, 0xBA, 0x7E, 0x9C, 0xB6, 0xD4, 0xE1, 0x11, 0xB2, - 0x44, 0xDC, 0xFF, 0xC7, 0x5C, 0x92, 0xCE, 0xC0, 0xBC, 0xA7, 0xB2, 0x41, - 0x75, 0x05, 0x4F, 0x00, 0xB9, 0x23, 0xF2, 0xCA, 0xE9, 0x65, 0x23, 0x24, - 0x49, 0xA4, 0x15, 0x8E, 0x10, 0xB1, 0xC1, 0x2F, 0xCA, 0xB4, 0xAF, 0x86, - 0xF7, 0x80, 0x3D, 0xF2, 0xC1, 0x5A, 0x42, 0x2F, 0xC7, 0x39, 0xFD, 0x06, - 0x74, 0xEF, 0x15, 0xEB, 0xE0, 0x24, 0x8F, 0x7B, 0xEE, 0xE0, 0xE4, 0x1D, - 0x5F, 0x2A, 0x88, 0xDC, 0x9E, 0xB5, 0xA9, 0x9F, 0xDE, 0x73, 0x2C, 0x7A, - 0xF3, 0x9B, 0x32, 0xF3, 0xF4, 0x5F, 0x3C, 0x5E, 0xBE, 0xBA, 0xA0, 0xEA, - 0xB6, 0x0B, 0x00, 0x10, 0xE5, 0xBA, 0x6C, 0x62, 0x26, 0x27, 0x62, 0x3B, - 0x48, 0x5C, 0x60, 0xEE, 0xEB, 0xFA, 0xEE, 0xB1, 0x6C, 0x0A, 0x46, 0xF3, - 0x1E, 0xED, 0xA3, 0x1B, 0xF3, 0x60, 0x02, 0xF3, 0x60, 0x6A, 0x1A, 0x8A, - 0x33, 0x70, 0x13, 0x7C, 0x5F, 0xC6, 0xEF, 0x8A, 0x15, 0xCB, 0xC1, 0x44, - 0xDD, 0xEF, 0x73, 0x9D, 0x01, 0x70, 0xAF, 0xAA, 0x60, 0x34, 0xB4, 0x2D, - 0x4B, 0xA1, 0xBB, 0x5B, 0xF2, 0x54, 0x0F, 0x10, 0xDD, 0xA4, 0xBB, 0xA4, - 0xE5, 0xC4, 0x3D, 0xAE, 0xEF, 0x70, 0xF9, 0xED, 0x9A, 0x60, 0x2E, 0x22, - 0xAB, 0xF5, 0xA8, 0x8A, 0xEA, 0x62, 0x05, 0x2A, 0x32, 0x31, 0x29, 0xDE, - 0x4C, 0x8E, 0x8C, 0x6C, 0x4B, 0x70, 0xB0, 0x9C, 0x0A, 0x95, 0x52, 0xC6, - 0x90, 0x0D, 0x2A, 0xAA, 0xAC, 0x07, 0x54, 0xCE, 0xFE, 0xF6, 0x95, 0xBB, - 0xCD, 0xF3, 0xE4, 0x69, 0xC7, 0x44, 0x75, 0x63, 0x72, 0x84, 0x0E, 0xD5, - 0x13, 0xE4, 0xFA, 0x48, 0xC1, 0x42, 0xD5, 0x5F, 0x6B, 0x88, 0x3D, 0x8E, - 0x09, 0x67, 0x42, 0x61, 0x69, 0x72, 0xEE, 0xE3, 0xDF, 0x37, 0x75, 0x30, - 0xCE, 0x9D, 0xE3, 0x0C, 0xF9, 0x16, 0x0C, 0xD2, 0x6F, 0x3C, 0x69, 0x8D, - 0x8F, 0x1D, 0x78, 0x1C, 0x8B, 0x3A, 0x6C, 0xDF, 0x28, 0x5E, 0x76, 0x79, - 0x89, 0x75, 0x82, 0xB7, 0x46, 0x97, 0xB3, 0xF2, 0x60, 0x98, 0x96, 0x5E, - 0x5C, 0x24, 0x35, 0xA7, 0x0B, 0xA7, 0xB6, 0x96, 0x80, 0xD3, 0x9C, 0x38, - 0xE2, 0xF3, 0x9B, 0x76, 0x86, 0x68, 0xC9, 0xA4, 0x08, 0x46, 0x8D, 0x1D, - 0x5C, 0xF7, 0x68, 0x62, 0xBC, 0x6B, 0x7B, 0x1C, 0xE5, 0x72, 0x94, 0x4A, - 0xAF, 0x2C, 0x74, 0x4D, 0x9A, 0x05, 0x90, 0xA6, 0xD9, 0x2C, 0xDF, 0x20, - 0x2A, 0xE9, 0x0D, 0x8B, 0xDD, 0xD9, 0x97, 0x1D, 0x30, 0x8B, 0xC0, 0x23, - 0xCD, 0x1E, 0xF4, 0x3C, 0x06, 0xA2, 0xDC, 0xE9, 0x13, 0xDA, 0xC7, 0x82, - 0xC0, 0x5F, 0x08, 0x12, 0x7C, 0xEE, 0x7A, 0x3D, 0x95, 0xE9, 0xCB, 0xA2, - 0xBC, 0xA0, 0x55, 0x18, 0x49, 0x83, 0x86, 0x62, 0xCF, 0x8F, 0xA6, 0xF1, - 0x14, 0xAA, 0x0A, 0x5A, 0xE1, 0x96, 0xF7, 0x13, 0x0C, 0xC1, 0x09, 0xFD, - 0xBF, 0x84, 0xEE, 0x6D, 0x0A, 0x34, 0x73, 0x88, 0xD8, 0x54, 0x61, 0x9A, - 0x1F, 0x2B, 0x34, 0x36, 0x44, 0x34, 0x41, 0x7F, 0x09, 0x8F, 0x08, 0x08, - 0x40, 0xA1, 0x70, 0x24, 0x30, 0x23, 0x02, 0x2D, 0x76, 0x39, 0xC0, 0xCA, - 0xF1, 0xAC, 0xA2, 0xFA, 0x09, 0x07, 0xE0, 0x5D, 0xE2, 0x44, 0x0C, 0x2C, - 0xAB, 0x77, 0x4C, 0xE7, 0x7E, 0xFA, 0xAB, 0xF3, 0x43, 0xAF, 0x6F, 0x5D, - 0xC1, 0xE3, 0x81, 0x28, 0x9A, 0x47, 0xD4, 0xE5, 0x4B, 0x04, 0x0A, 0x47, - 0xFD, 0xF6, 0x31, 0x6D, 0x54, 0xAD, 0x3B, 0x19, 0xF7, 0x28, 0x1D, 0x42, - 0x7C, 0x3A, 0x4C, 0xCC, 0xB3, 0x66, 0xE2, 0x9F, 0x8C, 0x18, 0x0F, 0x77, - 0xC4, 0xA3, 0xF4, 0x22, 0x75, 0x83, 0x65, 0xFB, 0x4F, 0x02, 0x71, 0xE6, - 0x4A, 0x2D, 0x2F, 0xE2, 0x46, 0xB4, 0x0C, 0x39, 0x29, 0xAB, 0xC7, 0x3E, - 0x38, 0xC3, 0x0B, 0xA5, 0xE8, 0xB5, 0xE6, 0x0E, 0xEC, 0x77, 0x7C, 0xD0, - 0xBF, 0x2F, 0xB1, 0x27, 0x4F, 0x56, 0x73, 0xCA, 0x70, 0xA5, 0x35, 0x71, - 0x4A, 0x42, 0xA5, 0x37, 0x0A, 0xA7, 0xAD, 0x27, 0x18, 0x02, 0x8C, 0x4B, - 0x3A, 0xB1, 0x6D, 0x17, 0xC1, 0x81, 0x76, 0x70, 0x8D, 0xAC, 0xAD, 0x4A, - 0xDD, 0x3D, 0x27, 0x18, 0x66, 0x63, 0x3A, 0x0D, 0xFC, 0xA2, 0x9F, 0xC5, - 0x2E, 0x29, 0xD9, 0xA5, 0x0C, 0x4C, 0xA3, 0x6F, 0xA9, 0x3F, 0xFF, 0xB5, - 0x83, 0x6B, 0x00, 0x93, 0x57, 0x39, 0x26, 0x6D, 0x40, 0x81, 0x89, 0x4A, - 0xAE, 0x55, 0x06, 0x58, 0x75, 0x6F, 0x49, 0xC2, 0xFF, 0xA0, 0x92, 0x7B, - 0xB6, 0x60, 0x80, 0x72, 0x52, 0xE5, 0x8D, 0x33, 0xC0, 0xB6, 0x3F, 0xF2, - 0x2A, 0x81, 0x11, 0x8F, 0xF5, 0xA2, 0x98, 0x84, 0x59, 0x7C, 0xA8, 0xD5, - 0x9C, 0xDE, 0x69, 0x4C, 0x67, 0xD9, 0xFB, 0xBC, 0x68, 0x29, 0x92, 0x25, - 0x7D, 0xFD, 0x01, 0x8D, 0x60, 0xBC, 0xAE, 0x34, 0x00, 0x77, 0x06, 0x99, - 0xD2, 0x9B, 0xFD, 0x69, 0xD5, 0x56, 0x00, 0xB0, 0x76, 0x71, 0x38, 0xCE, - 0xBE, 0xAE, 0xA2, 0xA4, 0x8C, 0xA4, 0xE6, 0x78, 0x9E, 0x96, 0x2F, 0x92, - 0xF3, 0x13, 0x22, 0x50, 0xE9, 0x0F, 0xB2, 0x0F, 0x31, 0x4E, 0xC7, 0x2E, - 0xF0, 0x70, 0x21, 0x33, 0x41, 0xCA, 0xFA, 0xF0, 0x4D, 0xF8, 0xCD, 0x1E, - 0x41, 0x42, 0xED, 0xAA, 0xA0, 0x49, 0x30, 0x2D, 0xBA, 0x1E, 0x11, 0x09, - 0x14, 0x0E, 0x39, 0x32, 0x32, 0x22, 0x48, 0x93, 0xCF, 0x1A, 0xF8, 0xC1, - 0x91, 0x6A, 0x0B, 0xCC, 0x76, 0x98, 0xD1, 0x2B, 0x9A, 0x40, 0xBF, 0x12, - 0xD6, 0xFF, 0x20, 0x7E, 0x54, 0xB8, 0x4E, 0x65, 0xEB, 0xB3, 0x46, 0xD1, - 0x44, 0x6A, 0x80, 0x19, 0x72, 0xFD, 0x39, 0x11, 0xD7, 0x7A, 0x7C, 0x03, - 0x7D, 0x76, 0xE0, 0xB2, 0x30, 0x02, 0xAA, 0xEC, 0x29, 0xA7, 0x90, 0x08, - 0xC8, 0x16, 0x12, 0xA0, 0x30, 0x2C, 0xA1, 0x4E, 0xC1, 0x7C, 0x5F, 0xB7, - 0x5A, 0x17, 0xF7, 0xA7, 0xFC, 0xFA, 0xCB, 0x5D, 0xC2, 0xDC, 0x2C, 0x86, - 0xF7, 0xCD, 0x2A, 0x0A, 0xA7, 0x22, 0x47, 0x48, 0xC2, 0x75, 0x1E, 0x24, - 0xC6, 0x26, 0x98, 0x84, 0x15, 0xAD, 0xB9, 0xBA, 0xC9, 0xAF, 0x7D, 0xA2, - 0x5D, 0xDD, 0x8E, 0xE0, 0xEE, 0xEF, 0x74, 0xCE, 0x3F, 0xBC, 0xFC, 0xA0, - 0x26, 0x09, 0x15, 0x30, 0xEC, 0x3B, 0xBB, 0x0A, 0xC4, 0x43, 0x9F, 0x27, - 0x90, 0x1F, 0xCC, 0x2D, 0x8B, 0x7F, 0xDA, 0x51, 0xCB, 0xF7, 0x27, 0xAC, - 0xE5, 0xD7, 0x7D, 0xAA, 0xB0, 0xD9, 0x7C, 0xBF, 0x17, 0xD0, 0x42, 0x57, - 0xC0, 0xF9, 0xE3, 0xF0, 0x0E, 0x7B, 0x5F, 0xE4, 0x4B, 0xA0, 0xC1, 0xEE, - 0xF1, 0xF2, 0xEB, 0x33, 0xDA, 0x25, 0xFB, 0x08, 0xAE, 0x6F, 0x4B, 0xFB, - 0x5E, 0x98, 0x91, 0xD7, 0x91, 0x9A, 0x62, 0x76, 0xC6, 0x51, 0xAA, 0x64, - 0x6A, 0xF2, 0xCD, 0xAD, 0x24, 0x42, 0x87, 0x05, 0xD3, 0x39, 0xE1, 0xC5, - 0xA8, 0x30, 0x79, 0xD8, 0xC0, 0x03, 0x42, 0x84, 0x5A, 0x75, 0xB4, 0x8C, - 0x0D, 0xE3, 0xB4, 0xCB, 0x00, 0xFD, 0x51, 0xDC, 0xE1, 0xA8, 0xDE, 0xE7, - 0x33, 0x6D, 0x74, 0x62, 0x2A, 0xAE, 0x99, 0x79, 0x9E, 0xFC, 0x0E, 0x19, - 0x35, 0xDD, 0xA1, 0x75, 0xE4, 0x2B, 0x0C, 0xC5, 0x37, 0xCB, 0x70, 0x3E, - 0x00, 0x0B, 0x28, 0x37, 0x03, 0x23, 0x4D, 0xF0, 0x85, 0xFB, 0xF5, 0x3B, - 0x8D, 0xC1, 0xB9, 0xB2, 0x7D, 0x15, 0x4C, 0xC0, 0x86, 0x78, 0x74, 0x01, - 0xDB, 0xB0, 0xC3, 0x01, 0x25, 0x4D, 0x56, 0x70, 0x60, 0x66, 0xCC, 0xC0, - 0x1A, 0xD7, 0x77, 0x90, 0x42, 0xDE, 0xE1, 0x09, 0xA9, 0x14, 0xB8, 0xB9, - 0x78, 0xAF, 0x64, 0x1F, 0x50, 0x02, 0xF9, 0xAF, 0x2C, 0x43, 0x9A, 0xF3, - 0xD9, 0x00, 0x56, 0x81, 0xC9, 0xC6, 0xC8, 0xAF, 0x1D, 0x49, 0x5A, 0xC5, - 0xFB, 0x80, 0xF6, 0x3E, 0xD1, 0x03, 0x5B, 0x8B, 0xF4, 0xFA, 0x8B, 0x81, - 0xB8, 0x87, 0xD3, 0xEE, 0x40, 0x17, 0xB0, 0x39, 0xE5, 0x20, 0xF4, 0x96, - 0xEE, 0x8E, 0xA3, 0x71, 0xCE, 0x05, 0xD4, 0x3C, 0x71, 0x46, 0x91, 0xEA, - 0x89, 0xC5, 0x9F, 0xD3, 0x07, 0x77, 0x1E, 0x1C, 0x4B, 0x28, 0xA1, 0xA4, - 0x5F, 0xE3, 0xC3, 0x9A, 0xF5, 0x2A, 0xF8, 0xC3, 0x68, 0x4C, 0x76, 0x7B, - 0x8B, 0x62, 0x49, 0x8C, 0x7C, 0x31, 0x9D, 0x41, 0x07, 0x29, 0xE9, 0xD9, - 0xF1, 0x58, 0x6F, 0x20, 0x31, 0x06, 0x45, 0xEA, 0xAB, 0x5E, 0x94, 0x21, - 0xEC, 0xB2, 0xC0, 0xA9, 0xD3, 0x23, 0x54, 0x09, 0x32, 0x95, 0xF7, 0x50, - 0x41, 0x13, 0x7E, 0x9D, 0x7C, 0xEB, 0xB8, 0x49, 0x87, 0xD2, 0xF9, 0x55, - 0xDC, 0xE5, 0x57, 0x5E, 0x45, 0x3C, 0xA0, 0xE7, 0xF2, 0x70, 0x2B, 0x7A, - 0x08, 0x38, 0x1D, 0xCC, 0x34, 0x55, 0xF3, 0x79, 0x99, 0xD8, 0x3A, 0x6C, - 0xEA, 0xFD, 0x18, 0xE6, 0xA8, 0x8C, 0x22, 0xE6, 0x24, 0x02, 0xC6, 0x71, - 0xFE, 0x09, 0x01, 0x63, 0xD9, 0x13, 0xD6, 0x82, 0xE7, 0x86, 0x9C, 0x08, - 0xDC, 0xC5, 0x2A, 0x83, 0x13, 0x3A, 0x03, 0x52, 0x25, 0x71, 0x8B, 0x9E, - 0xB5, 0xCC, 0x08, 0x05, 0x98, 0xBC, 0xFF, 0xF0, 0xB8, 0x22, 0xF1, 0x87, - 0x6B, 0xE7, 0x0A, 0xB0, 0xF1, 0x77, 0xAC, 0x70, 0xA5, 0x34, 0x22, 0x46, - 0xD0, 0x53, 0xB5, 0xE8, 0x77, 0x04, 0x9D, 0x90, 0x8D, 0xE8, 0x57, 0x47, - 0x5D, 0xE7, 0x91, 0x41, 0xA5, 0x2B, 0xD2, 0xF0, 0xBE, 0x7B, 0xFE, 0x03, - 0xF4, 0x81, 0x73, 0x2F, 0xA4, 0x39, 0x21, 0x3D, 0x24, 0x35, 0xAE, 0xCE, - 0xE3, 0x9C, 0x36, 0x5B, 0x45, 0xC4, 0xA0, 0xD4, 0x46, 0x02, 0x38, 0xF7, - 0x9E, 0xC3, 0x11, 0x01, 0x31, 0xB8, 0xAC, 0xE8, 0xFC, 0xDB, 0xC5, 0xB4, - 0xC4, 0xD5, 0x2A, 0xFB, 0x0D, 0xF7, 0x29, 0xB5, 0xCC, 0xE7, 0xD1, 0xF5, - 0x1F, 0x53, 0xDF, 0xD7, 0x7D, 0x71, 0xED, 0x0C, 0xB4, 0xDA, 0xFE, 0xA5, - 0x28, 0x5D, 0x5A, 0x4D, 0x54, 0x9D, 0x04, 0x40, 0x92, 0xBD, 0xC4, 0xD7, - 0x38, 0x4B, 0xBC, 0xF5, 0x1F, 0x58, 0xAE, 0xD8, 0x0D, 0xA6, 0x92, 0xE8, - 0xEF, 0x43, 0xEF, 0xDF, 0x0F, 0xCD, 0x22, 0xFA, 0x61, 0x24, 0x77, 0x6A, - 0x60, 0x8D, 0x42, 0xFA, 0x8A, 0x0D, 0x6C, 0x47, 0xDB, 0xC2, 0x57, 0x9F, - 0x12, 0x0E, 0x32, 0xD4, 0x12, 0xD7, 0x05, 0x1F, 0xDF, 0x7A, 0xEC, 0xE2, - 0x79, 0xEB, 0xC4, 0x8B, 0xC4, 0x71, 0x47, 0xB8, 0xE2, 0xA6, 0xF7, 0x55, - 0x7D, 0x6D, 0xC7, 0x93, 0xDB, 0x11, 0xED, 0x70, 0xDE, 0xCD, 0xD9, 0x87, - 0x14, 0xDA, 0x69, 0x00, 0x63, 0xFF, 0x5E, 0x0F, 0x9A, 0x38, 0xE7, 0xA2, - 0x2F, 0xA6, 0x38, 0x0E, 0xA8, 0x88, 0x38, 0xD4, 0xF5, 0xF3, 0x26, 0x27, - 0x33, 0x2A, 0xF0, 0xA1, 0xC8, 0x01, 0x7E, 0xF3, 0xB1, 0xEB, 0x59, 0xCE, - 0x3F, 0xE0, 0xC4, 0x86, 0x25, 0xDD, 0xCA, 0x55, 0x58, 0x4F, 0x4B, 0x4F, - 0x5D, 0x8A, 0x01, 0xAB, 0x82, 0x3E, 0x48, 0x9F, 0x14, 0x4B, 0x9E, 0x05, - 0x6C, 0x3E, 0xEE, 0xF6, 0x84, 0x59, 0x76, 0x56, 0x69, 0x10, 0x6B, 0x4B, - 0x79, 0xB6, 0x90, 0x0F, 0x2E, 0x04, 0x45, 0x5C, 0x5A, 0x35, 0x7C, 0x4A, - 0x8D, 0xEA, 0xC3, 0xA8, 0x35, 0xD2, 0xCD, 0x0B, 0xE1, 0x37, 0xF3, 0x83, - 0xCB, 0x65, 0x8B, 0x65, 0x73, 0xEC, 0xA9, 0x80, 0x11, 0xA2, 0xA5, 0x97, - 0x83, 0xC2, 0x0D, 0xF0, 0x23, 0x27, 0x6C, 0xA7, 0xFE, 0xD3, 0x01, 0x1A, - 0x1A, 0x60, 0x1C, 0x82, 0x09, 0xE6, 0xB7, 0x7E, 0xE3, 0xE5, 0x9E, 0xF3, - 0xEC, 0x7F, 0x76, 0x23, 0xCD, 0xF5, 0xCD, 0xA7, 0x21, 0xD5, 0xCF, 0x7C, - 0x56, 0x56, 0x1E, 0xF2, 0x25, 0x36, 0x81, 0x81, 0xE8, 0x33, 0x39, 0xFC, - 0x93, 0xE7, 0xC8, 0x4A, 0x39, 0xB5, 0x1C, 0x86, 0x13, 0xC9, 0xD2, 0xAA, - 0xC6, 0x31, 0x46, 0xDE, 0xEF, 0x35, 0x26, 0x5A, 0x09, 0x42, 0x0F, 0x24, - 0xA5, 0x6A, 0x82, 0x84, 0x17, 0x95, 0x35, 0x7C, 0xB7, 0x99, 0x60, 0x6E, - 0x54, 0xE1, 0x43, 0xDC, 0xDD, 0x2A, 0x17, 0x06, 0xB9, 0xF2, 0x34, 0xAE, - 0xDB, 0xE9, 0xF3, 0xAB, 0x6C, 0xAA, 0x1A, 0x5E, 0x65, 0xCF, 0x45, 0x3B, - 0xB2, 0x6C, 0x47, 0xE5, 0x26, 0x7B, 0x43, 0xD0, 0x58, 0x0A, 0x74, 0xE3, - 0xEC, 0xDD, 0x7C, 0xB8, 0x3B, 0xE6, 0xCC, 0x72, 0xD3, 0x35, 0x63, 0xB5, - 0x26, 0x7A, 0xBE, 0x71, 0x21, 0x82, 0x75, 0x35, 0x20, 0x11, 0x7F, 0x1D, - 0xFE, 0xD4, 0x19, 0xD0, 0xB7, 0xC1, 0xF3, 0xF4, 0xE6, 0x9A, 0xE0, 0x7D, - 0x02, 0x60, 0xF0, 0xC8, 0x41, 0xC9, 0x36, 0x14, 0xDE, 0xF5, 0x03, 0x91, - 0xE6, 0xFE, 0xAD, 0x1F, 0x50, 0xA7, 0x95, 0xFB, 0x09, 0x26, 0x21, 0x23, - 0xA4, 0xF8, 0x84, 0xD2, 0xAB, 0x02, 0x88, 0x62, 0xDD, 0xB9, 0x7A, 0x57, - 0xF0, 0x57, 0x92, 0x6E, 0xA5, 0xDD, 0x6D, 0xCF, 0xEF, 0x30, 0x0B, 0xC3, - 0xD3, 0xE1, 0xDF, 0xB4, 0x39, 0x35, 0x73, 0x19, 0xED, 0xAE, 0x1A, 0x8A, - 0x0D, 0xC8, 0x31, 0x94, 0x3C, 0xB5, 0xEF, 0x2C, 0x67, 0xBA, 0xFD, 0x34, - 0x13, 0x95, 0x5B, 0x00, 0x0B, 0xDF, 0x23, 0xBC, 0x7D, 0xDE, 0x1C, 0x30, - 0x72, 0x81, 0x9C, 0x34, 0xB7, 0x60, 0x0E, 0x4C, 0x96, 0x64, 0x5C, 0x93, - 0x61, 0x53, 0x12, 0x20, 0xD3, 0xA2, 0xBB, 0x9F, 0x1F, 0x26, 0x7F, 0xD5, - 0xD7, 0xDE, 0x4C, 0x20, 0x8F, 0x1D, 0x43, 0xAB, 0x2C, 0x7F, 0x50, 0xED, - 0x9C, 0x7C, 0x2B, 0x44, 0x2C, 0x22, 0xBF, 0xD6, 0x56, 0xB2, 0x56, 0xE4, - 0x74, 0x8A, 0x78, 0x5F, 0x21, 0xB9, 0xD2, 0xDB, 0x9D, 0x7D, 0x42, 0x54, - 0x92, 0x8F, 0x55, 0x9E, 0x85, 0xE8, 0x28, 0x92, 0xF0, 0x27, 0x77, 0xCF, - 0xFD, 0xE0, 0xB6, 0x2F, 0xBD, 0xC6, 0x4B, 0x8E, 0x3E, 0x90, 0xBB, 0x52, - 0xED, 0xF6, 0xAA, 0x22, 0x6F, 0x50, 0xDF, 0xFC, 0x65, 0x7B, 0x0D, 0xE9, - 0x27, 0x03, 0x7E, 0x4A, 0x38, 0xDD, 0x0E, 0x7A, 0x27, 0x66, 0x65, 0xDF, - 0xD4, 0xDC, 0x62, 0x41, 0x4F, 0xBE, 0x74, 0xBB, 0xCE, 0x45, 0x98, 0xBC, - 0x78, 0xC4, 0x58, 0xCB, 0x8B, 0xD7, 0x6E, 0xDE, 0x47, 0xE7, 0x62, 0xE5, - 0xE4, 0x83, 0xC4, 0x88, 0x07, 0xE8, 0x59, 0xA8, 0x45, 0x66, 0xE7, 0x2E, - 0xC0, 0xC6, 0x34, 0x56, 0x9B, 0x6E, 0xC8, 0x7A, 0x79, 0xE1, 0x67, 0x1A, - 0x02, 0x00, 0xC9, 0x0D, 0x4F, 0xFE, 0x10, 0x39, 0x18, 0x01, 0xF4, 0xB9, - 0x07, 0x10, 0x72, 0xC7, 0xCF, 0x39, 0xE4, 0xFE, 0x7C, 0x90, 0x2E, 0x29, - 0x27, 0x7E, 0x6A, 0x64, 0x8E, 0xC6, 0x52, 0x49, 0x00, 0x15, 0x54, 0xFB, - 0x17, 0x73, 0x19, 0x22, 0x24, 0x47, 0x9C, 0x90, 0xA3, 0xC2, 0x16, 0xAC, - 0x33, 0x93, 0x1B, 0x3F, 0x3D, 0x7C, 0xC2, 0xB1, 0x73, 0xC4, 0xD4, 0xB5, - 0xB3, 0xE0, 0x3D, 0x10, 0x8C, 0x1C, 0x93, 0xE0, 0xAC, 0x24, 0xB0, 0xBE, - 0x45, 0xF3, 0xE6, 0x44, 0xD8, 0xEB, 0x82, 0x6D, 0x13, 0x73, 0x71, 0x2A, - 0x56, 0xD6, 0x7C, 0x25, 0xFB, 0xD6, 0xC2, 0xE9, 0xB0, 0x8A, 0xE9, 0xEB, - 0x1D, 0xA5, 0x6F, 0x19, 0xDD, 0x66, 0x6C, 0x24, 0xCF, 0x44, 0x06, 0x12, - 0xF3, 0xC0, 0xAE, 0x21, 0x8B, 0xA1, 0xDF, 0x04, 0xC2, 0x1B, 0xF1, 0xA7, - 0x3C, 0xF3, 0x68, 0xB9, 0xB2, 0xAF, 0x8C, 0x24, 0xBF, 0x75, 0x72, 0x60, - 0x18, 0x06, 0x1C, 0x3F, 0x26, 0x4D, 0x3B, 0x1B, 0xFD, 0x76, 0xC6, 0x91, - 0xB0, 0xB6, 0xD2, 0x5F, 0x67, 0xFA, 0x7D, 0xFF, 0xEC, 0xC7, 0x93, 0x7A, - 0x15, 0x4F, 0xE1, 0x1C, 0x46, 0x71, 0x1E, 0x96, 0xBE, 0xAD, 0x2F, 0x31, - 0x28, 0x71, 0xCB, 0x04, 0x21, 0xFA, 0x47, 0xB4, 0x4D, 0x8B, 0xEC, 0xD0, - 0x78, 0xA1, 0x2B, 0x1B, 0x39, 0xDB, 0x41, 0x27, 0x14, 0x28, 0xE2, 0xA8, - 0xFE, 0xAC, 0x68, 0x47, 0xFD, 0x7B, 0x4F, 0xE0, 0xA2, 0xC8, 0x7E, 0x83, - 0x86, 0xBD, 0x73, 0x03, 0x18, 0x37, 0xDB, 0x46, 0x1F, 0x6B, 0x17, 0x19, - 0x11, 0x0C, 0xA2, 0x14, 0x8B, 0x75, 0xB8, 0xB9, 0xEB, 0xC9, 0xD6, 0x0E, - 0x8D, 0x78, 0x62, 0xEB, 0x51, 0x9F, 0xE7, 0xAE, 0x96, 0x83, 0x50, 0x75, - 0x36, 0xF6, 0x7F, 0x30, 0x9B, 0x52, 0x57, 0x5B, 0x4D, 0xBC, 0x95, 0x70, - 0xCA, 0x2C, 0x8E, 0x3F, 0x59, 0xE0, 0x1C, 0x21, 0x3F, 0x81, 0x07, 0x5B, - 0x0D, 0xEB, 0x35, 0xA3, 0x04, 0x10, 0x48, 0xE8, 0x1D, 0x82, 0xEB, 0x3C, - 0x5A, 0xCF, 0xA7, 0x96, 0x6C, 0x04, 0x80, 0x38, 0x94, 0x8A, 0x5A, 0x20, - 0xDD, 0xE0, 0x84, 0x23, 0xEB, 0x88, 0x31, 0x1E, 0x75, 0xD5, 0x1B, 0x35, - 0xE0, 0xE6, 0x79, 0xDF, 0x97, 0xCF, 0x5D, 0x9A, 0xDA, 0x22, 0x55, 0xD3, - 0x37, 0xDC, 0x09, 0x4D, 0xE4, 0x06, 0x00, 0x4F, 0xA1, 0xD3, 0x8D, 0xFA, - 0xDF, 0x99, 0x67, 0x10, 0x46, 0x61, 0x1D, 0x54, 0x73, 0x7D, 0x5F, 0xF6, - 0x5C, 0x38, 0x67, 0xB4, 0x31, 0x59, 0xFF, 0xD2, 0x09, 0x28, 0x2F, 0x7C, - 0x2A, 0x95, 0xA2, 0x10, 0x55, 0xED, 0xE3, 0xBA, 0x9D, 0x8F, 0x34, 0xB8, - 0xC0, 0xC8, 0x25, 0x4D, 0xF2, 0x1C, 0x50, 0x2A, 0x60, 0xF7, 0x0D, 0x1D, - 0x29, 0xD3, 0x26, 0xF9, 0x88, 0xDD, 0xA2, 0x62, 0x1E, 0x9E, 0x84, 0xC3, - 0xB9, 0x5A, 0xAD, 0x5F, 0xA9, 0xAA, 0xC9, 0x00, 0xDA, 0xCD, 0x89, 0xB5, - 0x33, 0xEB, 0x3B, 0x02, 0xBC, 0x86, 0xD5, 0x46, 0x95, 0x43, 0xC7, 0xD7, - 0x5E, 0x19, 0x99, 0xD7, 0xB5, 0x5F, 0x9D, 0x60, 0x11, 0x84, 0xA0, 0xDB, - 0x24, 0x13, 0xBD, 0x88, 0xAC, 0xBE, 0x04, 0x0E, 0x43, 0xF0, 0x6F, 0x2D, - 0x28, 0xBF, 0x23, 0xA0, 0x27, 0xF4, 0xDF, 0xA5, 0xAD, 0x51, 0x77, 0xE3, - 0x17, 0x8A, 0x4C, 0x74, 0x32, 0x70, 0x91, 0x39, 0xB2, 0xE6, 0xA8, 0x55, - 0x87, 0xF5, 0xDD, 0x6D, 0xA6, 0x7B, 0x53, 0x1F, 0xFF, 0xFD, 0xB2, 0x97, - 0x59, 0x8E, 0x5F, 0xB3, 0x54, 0xDB, 0xF7, 0x5C, 0x57, 0x4E, 0xDD, 0xF6, - 0x36, 0x23, 0xBF, 0xBE, 0xB9, 0xD0, 0x2C, 0x9E, 0xDA, 0x4B, 0x33, 0x38, - 0x5A, 0x25, 0xED, 0xFE, 0x00, 0x08, 0xE5, 0x64, 0xC3, 0x95, 0x00, 0xAA, - 0x96, 0xD3, 0xA9, 0x39, 0xB8, 0xE4, 0x47, 0x72, 0x6C, 0xEB, 0x1A, 0x93, - 0x37, 0x9E, 0xD6, 0x1E, 0x5C, 0x6D, 0xDB, 0x74, 0x42, 0x16, 0x95, 0x44, - 0x7E, 0x3B, 0xAE, 0xBC, 0x02, 0x15, 0x93, 0xB9, 0x07, 0xBF, 0xFD, 0x4B, - 0xD2, 0x94, 0xF2, 0x35, 0xFD, 0xA1, 0x44, 0x37, 0x74, 0xFB, 0x45, 0x46, - 0x83, 0x39, 0x1D, 0xA8, 0xE9, 0xE8, 0x9C, 0x67, 0x55, 0xEC, 0x2C, 0x59, - 0xF8, 0x3E, 0x6A, 0x54, 0x75, 0x23, 0x1F, 0x90, 0xCE, 0x6A, 0xAA, 0x5C, - 0x80, 0x93, 0x6E, 0x6D, 0x2C, 0xC3, 0x5A, 0xF2, 0xA2, 0x93, 0x97, 0xAA, - 0x7F, 0xAA, 0x76, 0x0B, 0x59, 0x6D, 0x39, 0x38, 0x32, 0x00, 0xA1, 0xF5, - 0x39, 0x94, 0x60, 0x9D, 0xD3, 0xE6, 0xF8, 0xF8, 0x14, 0xC4, 0x6D, 0x47, - 0x21, 0x66, 0x43, 0xE4, 0xCB, 0x07, 0x0D, 0xBD, 0xD9, 0x55, 0xDD, 0x03, - 0x75, 0x90, 0x91, 0x38, 0x3F, 0x32, 0xE6, 0x73, 0x34, 0xC9, 0xC0, 0x87, - 0x3A, 0xC5, 0x62, 0x25, 0x1D, 0x74, 0xB8, 0x0D, 0xA5, 0xED, 0xAF, 0x20, - 0xC1, 0x0D, 0xA6, 0x2C, 0x78, 0xC2, 0x46, 0xEA, 0x05, 0xDE, 0x06, 0x47, - 0x8D, 0xE2, 0x42, 0x1B, 0x4F, 0x44, 0xEE, 0x83, 0x1A, 0xD7, 0x66, 0x49, - 0xBE, 0xD0, 0x8C, 0x58, 0x73, 0xF1, 0x9F, 0x97, 0x74, 0x11, 0xA6, 0x4A, - 0x07, 0xDA, 0xA5, 0x75, 0x3D, 0x4A, 0x0F, 0x0D, 0x06, 0x56, 0xB2, 0x5F, - 0x5A, 0x8E, 0x2A, 0x1C, 0x38, 0x72, 0xBF, 0xC4, 0xD1, 0x06, 0x55, 0xB2, - 0x73, 0xC0, 0x9D, 0x5F, 0x2F, 0x9B, 0x07, 0x17, 0xA7, 0x44, 0xA0, 0x0A, - 0x0E, 0xE4, 0x72, 0xB7, 0x70, 0x2E, 0x1E, 0x82, 0x76, 0x63, 0xB5, 0xC1, - 0x8F, 0x03, 0x6C, 0xEE, 0x80, 0x3C, 0x86, 0xE1, 0x8E, 0x56, 0xD7, 0x14, - 0x37, 0x77, 0x93, 0x9C, 0xB6, 0xE0, 0xFC, 0x49, 0x64, 0x56, 0x77, 0xAE, - 0x4E, 0xB0, 0x28, 0xBA, 0x5B, 0x49, 0x5A, 0xB8, 0x83, 0xD8, 0x6B, 0xE5, - 0x41, 0x7A, 0x65, 0x8C, 0xC1, 0x71, 0xDD, 0x97, 0x01, 0xA8, 0x9A, 0xAD, - 0xC8, 0x43, 0xAB, 0xA6, 0xDC, 0x71, 0xD7, 0x9A, 0xCB, 0x99, 0x5F, 0xCA, - 0x4D, 0x75, 0xC7, 0xE4, 0x20, 0x0A, 0x12, 0xE5, 0x45, 0x64, 0x19, 0x7E, - 0x32, 0x50, 0x67, 0x22, 0x5C, 0x88, 0xA4, 0xAB, 0x30, 0x97, 0x42, 0xF7, - 0xE6, 0x17, 0x35, 0xD5, 0xFE, 0xF3, 0x51, 0xD3, 0x6F, 0x2A, 0xB6, 0x01, - 0x9B, 0x80, 0x4F, 0x86, 0x1F, 0xA7, 0x2B, 0xF5, 0x84, 0xD9, 0xBB, 0x0E, - 0xE6, 0x2A, 0x05, 0x22, 0xBE, 0xFF, 0x21, 0xCD, 0xFD, 0xCD, 0x85, 0x62, - 0xAC, 0xC3, 0xC1, 0x99, 0xDD, 0x8F, 0xDB, 0xCD, 0xDC, 0xD5, 0xA7, 0x08, - 0x75, 0x9B, 0x3F, 0x44, 0xB9, 0x91, 0xE9, 0xF0, 0x56, 0x59, 0x33, 0x9F, - 0xC3, 0xBD, 0x08, 0x04, 0x17, 0x93, 0x3C, 0x41, 0x66, 0x14, 0x20, 0x44, - 0x01, 0x46, 0xEB, 0x05, 0x10, 0xBF, 0x6A, 0xAF, 0x4E, 0x44, 0x8C, 0xE1, - 0xBB, 0xB9, 0x86, 0x64, 0x64, 0xB4, 0xDE, 0x7C, 0x17, 0x92, 0xD3, 0x9B, - 0x98, 0x23, 0xAA, 0x8C, 0x15, 0xE8, 0xBC, 0xEC, 0xDA, 0x58, 0x3D, 0x8F, - 0x53, 0x66, 0x66, 0xA1, 0x87, 0xD1, 0x75, 0x56, 0xFD, 0x9F, 0x6C, 0x72, - 0x65, 0xDF, 0x2D, 0x48, 0x58, 0x44, 0xD4, 0x6D, 0xD4, 0x47, 0xFD, 0x4C, - 0xF1, 0xBA, 0x76, 0x55, 0xD5, 0x35, 0x76, 0x97, 0x1D, 0x25, 0x8B, 0x20, - 0xEA, 0x70, 0x6B, 0x7B, 0x8A, 0x44, 0xA0, 0xC6, 0x04, 0x14, 0xD1, 0x91, - 0x50, 0x5E, 0x8E, 0xDC, 0xBC, 0xF9, 0xEA, 0xC2, 0xF7, 0x08, 0x0B, 0x20, - 0x46, 0x8F, 0x44, 0x2F, 0xD8, 0xAF, 0x16, 0xD8, 0x9A, 0xEA, 0x7A, 0x93, - 0x22, 0xAB, 0x3D, 0x6B, 0x82, 0x81, 0x3D, 0xE8, 0x3B, 0x33, 0xA4, 0x2E, - 0x6D, 0x4B, 0x24, 0xFD, 0x00, 0x9C, 0xA6, 0x6F, 0x84, 0xC0, 0xE8, 0xDE, - 0x66, 0x8C, 0xDF, 0x10, 0xE0, 0x13, 0xF1, 0x6C, 0xC6, 0x2E, 0x29, 0xD9, - 0xB3, 0x77, 0xB4, 0x5E, 0xFB, 0xE9, 0x10, 0x89, 0xC5, 0x23, 0x36, 0x1C, - 0x59, 0xD8, 0xE4, 0x78, 0x45, 0x00, 0xCB, 0xC8, 0x31, 0xE1, 0x5A, 0x78, - 0x6E, 0x05, 0x56, 0x82, 0xF0, 0x66, 0x4A, 0x40, 0xA4, 0x49, 0xA8, 0x3A, - 0xF0, 0x32, 0x55, 0xAD, 0x21, 0xE8, 0x56, 0xDB, 0x4C, 0xB5, 0xD4, 0x45, - 0x89, 0x57, 0x53, 0xFC, 0x65, 0x23, 0xA7, 0xF0, 0x78, 0x61, 0xC6, 0x4A, - 0x32, 0x1F, 0x95, 0xAE, 0x69, 0x46, 0x28, 0xBF, 0xB4, 0x88, 0xD7, 0x18, - 0xF6, 0xD3, 0xBE, 0xD4, 0x00, 0x8C, 0x44, 0x17, 0xDC, 0xA1, 0x65, 0x06, - 0xF4, 0xE4, 0x9D, 0x51, 0x40, 0x49, 0x30, 0xD1, 0x5A, 0x09, 0xE6, 0xBD, - 0x2A, 0x16, 0x47, 0xDD, 0x14, 0x68, 0xF4, 0xED, 0xEB, 0xD5, 0xF2, 0xF5, - 0xF3, 0x1C, 0xEC, 0xCF, 0x89, 0x10, 0x9C, 0xDF, 0x26, 0x4C, 0xD7, 0x50, - 0xE6, 0x0F, 0x8B, 0x64, 0x86, 0x36, 0x05, 0x35, 0x6C, 0xED, 0x80, 0x9E, - 0x68, 0x1E, 0x44, 0x1D, 0xF7, 0x4C, 0xD9, 0xC2, 0xEB, 0x81, 0x6A, 0xB3, - 0xA0, 0xE4, 0xFC, 0x06, 0x84, 0x5B, 0xFE, 0x8A, 0x82, 0xE4, 0xD0, 0x20, - 0x11, 0x78, 0x0F, 0xD5, 0xDC, 0x4B, 0x6F, 0xCA, 0xCE, 0x2B, 0xB4, 0x0A, - 0x67, 0x1A, 0x19, 0x19, 0xA0, 0x06, 0x5C, 0x56, 0xC1, 0x45, 0xA7, 0x3E, - 0xDC, 0xD2, 0x41, 0x59, 0x75, 0x59, 0x7E, 0xCB, 0xB7, 0x0B, 0x9C, 0x44, - 0xA8, 0x81, 0x6C, 0xF7, 0x89, 0x49, 0x67, 0x11, 0xCF, 0xB8, 0x0D, 0x44, - 0x87, 0x97, 0x97, 0xDC, 0x44, 0xF8, 0x37, 0x93, 0xE4, 0x14, 0xAC, 0xF7, - 0xB1, 0x64, 0xA4, 0x2C, 0xDF, 0xC5, 0x04, 0xB1, 0x99, 0x9B, 0x6F, 0x85, - 0x7F, 0x77, 0x11, 0xF6, 0x70, 0x6A, 0xF6, 0xE4, 0x54, 0xE7, 0xEC, 0xBC, - 0x29, 0xE8, 0x11, 0x0A, 0x24, 0x8F, 0xB6, 0xC7, 0xE8, 0x76, 0x65, 0x54, - 0x05, 0x54, 0x80, 0x46, 0x4D, 0xA9, 0x8A, 0xF8, 0x6E, 0x46, 0x01, 0x7B, - 0xD6, 0x42, 0x74, 0x54, 0x43, 0xE9, 0xC7, 0xE5, 0x1E, 0xAB, 0x28, 0x66, - 0xF7, 0x0A, 0xF0, 0x86, 0x71, 0x7B, 0x05, 0x50, 0xDF, 0xAB, 0x7D, 0x19, - 0x04, 0x5D, 0x48, 0x31, 0xD2, 0xE1, 0x75, 0x3C, 0xFF, 0xDB, 0x4A, 0xC1, - 0xAA, 0x63, 0xEE, 0x2C, 0xF9, 0x79, 0x11, 0x1E, 0x09, 0xCF, 0x86, 0x86, - 0x0B, 0x4E, 0xD1, 0x94, 0x13, 0x3F, 0x29, 0xE5, 0x81, 0xA8, 0x12, 0x41, - 0xF3, 0xF3, 0x83, 0x2B, 0x2F, 0xF4, 0x18, 0x10, 0x43, 0x16, 0x95, 0xD7, - 0xF8, 0x3E, 0x32, 0x9E, 0x2E, 0x93, 0x08, 0xE3, 0x80, 0xD0, 0x52, 0xDD, - 0x68, 0x71, 0x82, 0x2A, 0x16, 0x02, 0xBF, 0xE1, 0x45, 0x93, 0x2A, 0x98, - 0x49, 0x87, 0x2A, 0x3C, 0xDF, 0xA0, 0xCD, 0x4C, 0x64, 0x8A, 0xAE, 0xBC, - 0x39, 0x71, 0xF8, 0xBA, 0xE6, 0xAB, 0x21, 0x60, 0x34, 0x74, 0x54, 0x99, - 0xCD, 0x9F, 0x94, 0xB6, 0xE7, 0x62, 0x3A, 0xB7, 0x4D, 0xCB, 0x27, 0xE4, - 0xC8, 0x92, 0xF5, 0x45, 0x6E, 0x32, 0x91, 0x15, 0x8C, 0x4E, 0x10, 0x76, - 0x1A, 0x93, 0x2C, 0x4E, 0xBD, 0xDA, 0x27, 0x3F, 0x99, 0xAA, 0xB7, 0x3D, - 0xF0, 0xFB, 0x34, 0xB2, 0xD2, 0x7A, 0x23, 0xBA, 0xCF, 0xF4, 0xDE, 0xDB, - 0xCC, 0x8C, 0xB1, 0x2D, 0x4A, 0xD6, 0xCA, 0xC0, 0xD8, 0x70, 0x58, 0xBC, - 0x9E, 0x22, 0x92, 0xAB, 0xD8, 0xFB, 0xE7, 0xBC, 0xEB, 0x81, 0xB3, 0x77, - 0x70, 0x31, 0x86, 0xE1, 0x79, 0xD8, 0x52, 0xD0, 0x6D, 0x39, 0x14, 0x78, - 0x73, 0x52, 0x96, 0xE5, 0xBC, 0x2E, 0x42, 0x90, 0x43, 0x2D, 0x81, 0x31, - 0x01, 0xE1, 0xA4, 0x59, 0x83, 0x6E, 0xB5, 0x02, 0x8F, 0x53, 0xD0, 0x04, - 0x82, 0x0B, 0x60, 0xF0, 0xC6, 0x5F, 0xE4, 0x07, 0x6C, 0x8E, 0xF3, 0xC9, - 0x15, 0x15, 0x38, 0xB6, 0x1A, 0x17, 0x0A, 0x52, 0xEF, 0xEF, 0xDC, 0x03, - 0x4E, 0x62, 0x5E, 0xF6, 0x7E, 0xAD, 0xCA, 0x52, 0xA6, 0xBC, 0x21, 0xC9, - 0x0A, 0x15, 0xAB, 0xA6, 0xDF, 0x6C, 0xB1, 0xF9, 0xC6, 0xF3, 0x53, 0x3B, - 0xA9, 0x87, 0x06, 0x62, 0x18, 0xBA, 0x06, 0x23, 0xC8, 0xA8, 0x72, 0xC7, - 0x89, 0x1E, 0x1D, 0xEC, 0x5E, 0x46, 0xB9, 0xBE, 0x38, 0x04, 0x0B, 0x29, - 0x69, 0x60, 0x97, 0x2E, 0x6F, 0x6A, 0x7F, 0x7A, 0xDD, 0x9C, 0x4A, 0x60, - 0x2D, 0x19, 0x16, 0x1A, 0xD6, 0x25, 0xAB, 0x17, 0x44, 0x5E, 0x51, 0x5B, - 0xC3, 0x4D, 0x36, 0xC0, 0xEE, 0xA3, 0x8B, 0x10, 0x78, 0x4D, 0xC3, 0x00, - 0xB5, 0x07, 0x19, 0xA4, 0xC0, 0x3C, 0x99, 0x4B, 0x70, 0x48, 0xBB, 0x53, - 0xFB, 0x21, 0x4D, 0x9B, 0x2B, 0x4C, 0x75, 0x6D, 0x0B, 0x86, 0x49, 0x27, - 0x76, 0x61, 0x1D, 0xBB, 0x8C, 0x9F, 0xCB, 0x3B, 0xF6, 0x2F, 0x63, 0x64, - 0x65, 0x2C, 0x38, 0x9E, 0xE7, 0x12, 0x85, 0xA7, 0x29, 0x48, 0xE9, 0xC6, - 0xDB, 0x2D, 0xA6, 0x54, 0x5A, 0xD5, 0xE0, 0xB6, 0x77, 0xA1, 0x78, 0x84, - 0x52, 0xD7, 0xC1, 0x5B, 0x9D, 0x0D, 0x8A, 0x70, 0x3E, 0x72, 0x6A, 0x5D, - 0x63, 0x0D, 0xEF, 0x97, 0x68, 0x78, 0x1F, 0x35, 0xDA, 0x98, 0x6E, 0x25, - 0x05, 0xCC, 0xF3, 0xC0, 0x1E, 0x4F, 0xD2, 0x29, 0xE4, 0x26, 0xC2, 0x32, - 0xE6, 0xA0, 0x65, 0xFE, 0x3E, 0xDB, 0x71, 0xAB, 0x85, 0x79, 0xAB, 0xC9, - 0x8D, 0xD1, 0x8A, 0xF2, 0xA2, 0x62, 0xE7, 0x4F, 0xC5, 0xCD, 0x09, 0x94, - 0xFD, 0xF0, 0x0E, 0xA2, 0x3D, 0x98, 0x8E, 0x65, 0x35, 0x5F, 0xC8, 0xD5, - 0xCC, 0xE2, 0xED, 0x3B, 0x50, 0xB5, 0x52, 0x57, 0xB1, 0x04, 0xA1, 0x6E, - 0x48, 0x58, 0xE5, 0x61, 0x75, 0x8D, 0xD2, 0x34, 0x21, 0x62, 0xC3, 0xD2, - 0x0C, 0x51, 0xF1, 0x2B, 0xD4, 0xF7, 0xA7, 0x04, 0xE7, 0x22, 0x7B, 0xC0, - 0xF0, 0x14, 0xFF, 0x3F, 0xAD, 0x46, 0xED, 0xF3, 0xC1, 0xC6, 0x4D, 0xE7, - 0x95, 0x86, 0x60, 0xE3, 0x6E, 0x01, 0xE8, 0x96, 0xEF, 0x85, 0xF3, 0xC0, - 0x8C, 0xF1, 0x7D, 0x70, 0x4E, 0x69, 0x5C, 0x06, 0xD0, 0xF9, 0x71, 0x0D, - 0x9C, 0x6F, 0x5F, 0xC9, 0xFC, 0x27, 0x32, 0x13, 0x0A, 0xA2, 0x79, 0x31, - 0x91, 0x19, 0xFE, 0x50, 0xA5, 0x49, 0xC5, 0x39, 0x9E, 0x7C, 0xD6, 0x89, - 0xF9, 0x85, 0x1D, 0x08, 0x1A, 0xD1, 0xF1, 0xA5, 0x9C, 0x35, 0xE9, 0x24, - 0x12, 0xDC, 0x15, 0x89, 0x30, 0xB9, 0x99, 0xEF, 0x54, 0x79, 0xCC, 0x68, - 0x78, 0xFE, 0x77, 0xDE, 0x51, 0xAD, 0x89, 0x7A, 0x4C, 0x31, 0x29, 0x1D, - 0x70, 0x45, 0x80, 0xC6, 0x7D, 0xA4, 0xFD, 0xE4, 0x86, 0xA0, 0xA2, 0x4A, - 0x31, 0x17, 0xA9, 0xD0, 0x08, 0xCC, 0xF9, 0xEF, 0x3C, 0x71, 0x1A, 0xEE, - 0xFA, 0x94, 0x83, 0x1D, 0x2B, 0xEF, 0x19, 0x00, 0xD0, 0x43, 0xB8, 0x10, - 0x35, 0x63, 0x06, 0x9D, 0xA8, 0xFC, 0xF9, 0xC3, 0x07, 0x39, 0x48, 0x0E, - 0x86, 0x95, 0x80, 0xD2, 0x9E, 0xB0, 0x9E, 0x89, 0x96, 0x2D, 0x58, 0x5D, - 0xD6, 0x88, 0x77, 0xEB, 0x64, 0xC0, 0xA2, 0xB6, 0xCD, 0x96, 0x7D, 0xE2, - 0xC8, 0x21, 0x93, 0x65, 0x51, 0xF1, 0x17, 0xAE, 0xB7, 0xF8, 0xBF, 0x90, - 0x54, 0x40, 0xE0, 0x9C, 0xD0, 0xDE, 0xD7, 0xFC, 0x18, 0x55, 0x6B, 0x58, - 0x0C, 0x17, 0xC7, 0xA3, 0x06, 0x93, 0x9B, 0x2F, 0x68, 0x7E, 0x7D, 0x0F, - 0x0C, 0xC8, 0x6F, 0xC5, 0xDB, 0x37, 0xA1, 0x46, 0xE4, 0xDA, 0x1E, 0x66, - 0x06, 0xF3, 0x24, 0xB0, 0x05, 0xA2, 0x16, 0x76, 0x2D, 0xA4, 0xA2, 0x27, - 0x18, 0x56, 0x63, 0x92, 0xD8, 0xED, 0x9D, 0xA7, 0x3A, 0xC0, 0xA8, 0xFE, - 0x24, 0x0F, 0x06, 0xC4, 0x05, 0x74, 0xA5, 0x31, 0xA0, 0x42, 0xFC, 0x59, - 0xD0, 0xC3, 0x79, 0x6E, 0x1D, 0x6E, 0x35, 0xFC, 0xBB, 0x58, 0x20, 0x0D, - 0x5B, 0xA6, 0xAF, 0xBD, 0x07, 0x81, 0xBC, 0xBE, 0x52, 0x37, 0x20, 0x4C, - 0x0D, 0x6A, 0x28, 0xE6, 0x12, 0x3D, 0x0B, 0x84, 0xE1, 0xBE, 0x4F, 0x93, - 0x56, 0x5A, 0xCB, 0x82, 0x23, 0x8C, 0xF1, 0xF9, 0xB1, 0xEB, 0xAC, 0x5C, - 0x88, 0xB4, 0xC0, 0xF8, 0x6A, 0x78, 0x40, 0x13, 0x43, 0xA3, 0xB9, 0xE3, - 0x65, 0xE8, 0xAA, 0x0A, 0xC3, 0xCB, 0x19, 0x9A, 0x7B, 0x76, 0xBA, 0x2A, - 0xBF, 0x48, 0xAF, 0xFA, 0x9A, 0xFD, 0x69, 0x46, 0x27, 0x7F, 0x34, 0xF8, - 0x9F, 0x89, 0x87, 0xB8, 0x5E, 0x34, 0xCE, 0x40, 0x9E, 0xE7, 0x0E, 0xC1, - 0x29, 0x27, 0x5F, 0xD4, 0xEB, 0x5F, 0x3A, 0xD3, 0x20, 0xD7, 0xCC, 0x4B, - 0x04, 0x22, 0xD5, 0x48, 0x3B, 0x87, 0x7E, 0x80, 0x31, 0xD0, 0xCF, 0xEB, - 0x9E, 0xAB, 0xAE, 0xF0, 0x98, 0x5B, 0x50, 0xC3, 0xED, 0x5A, 0xF9, 0xF8, - 0xC6, 0xA2, 0xF9, 0x6E, 0x32, 0x22, 0x46, 0x74, 0x01, 0x55, 0xE2, 0x40, - 0xA2, 0x0D, 0x15, 0xEA, 0x4B, 0x67, 0x9A, 0x61, 0x5E, 0x10, 0x40, 0x43, - 0xE8, 0xDF, 0x81, 0xB3, 0x4C, 0x0C, 0x27, 0x1F, 0x04, 0x74, 0x5F, 0x49, - 0x3E, 0x81, 0x6F, 0x52, 0xC8, 0x4A, 0xD7, 0x0F, 0xD8, 0xCB, 0x6F, 0x0B, - 0x76, 0xBE, 0xB2, 0x64, 0xE0, 0x02, 0x08, 0xC6, 0x9E, 0x17, 0xDC, 0x37, - 0x76, 0xD4, 0x94, 0xE4, 0xAC, 0xA0, 0x7A, 0x06, 0x4A, 0x48, 0x30, 0x16, - 0x54, 0x5B, 0xB8, 0x03, 0x4D, 0x83, 0x67, 0x56, 0x2F, 0x37, 0xFD, 0xC7, - 0xC3, 0x60, 0xCC, 0xF9, 0x9D, 0x71, 0x9F, 0x0F, 0xE4, 0xDE, 0x4F, 0xE1, - 0xE0, 0x4A, 0xF5, 0xEB, 0xB1, 0x19, 0x92, 0xDF, 0x20, 0x9D, 0x7E, 0x99, - 0x0A, 0x06, 0xB6, 0x90, 0x25, 0x3A, 0x6E, 0x21, 0x10, 0x8F, 0x71, 0xAF, - 0x7B, 0x26, 0xB3, 0x48, 0x85, 0x1E, 0x37, 0x14, 0x16, 0x6C, 0x71, 0x2A, - 0xED, 0x0A, 0x73, 0xFB, 0x9B, 0x8B, 0x30, 0xC6, 0x6B, 0xE5, 0xCD, 0x29, - 0x4B, 0xE3, 0x16, 0xC7, 0x8B, 0x97, 0x24, 0xE6, 0xD6, 0x5D, 0x4C, 0x66, - 0xAE, 0xE6, 0x28, 0xC3, 0x79, 0x93, 0xE5, 0x38, 0xE9, 0x83, 0x9C, 0x3B, - 0xAC, 0x90, 0x8F, 0x7C, 0x73, 0x4E, 0xA7, 0xC9, 0x56, 0x39, 0x75, 0x20, - 0xE1, 0x94, 0x4A, 0x34, 0x99, 0xF1, 0x6D, 0x47, 0xD5, 0x51, 0x24, 0x0A, - 0xD3, 0x3B, 0xB6, 0x4F, 0x87, 0xD2, 0x8C, 0x3E, 0xAE, 0xCD, 0xC0, 0xBA, - 0xCA, 0x51, 0xAC, 0x56, 0xBD, 0xB5, 0xAA, 0xAC, 0xA4, 0xB0, 0xC5, 0x7E, - 0xD8, 0x7B, 0x50, 0xC2, 0x8B, 0x0F, 0xCE, 0x14, 0xEB, 0xB6, 0x0C, 0x0A, - 0x0F, 0x2D, 0xE0, 0xFF, 0x8D, 0x3C, 0xCE, 0x0E, 0x98, 0xF3, 0x97, 0x44, - 0x28, 0xE8, 0x6C, 0x0B, 0x90, 0x7F, 0xAB, 0xD1, 0xB6, 0xA2, 0xDE, 0x7F, - 0x49, 0x30, 0x52, 0x45, 0x90, 0x8F, 0xB2, 0x3E, 0x50, 0x3E, 0x24, 0x72, - 0x11, 0xB8, 0xB6, 0x20, 0x69, 0xC1, 0x85, 0x54, 0xD4, 0x33, 0x46, 0xEC, - 0x99, 0xDD, 0x21, 0xB9, 0x37, 0x2A, 0x81, 0xD0, 0xC2, 0xC8, 0x19, 0xEC, - 0x95, 0x7B, 0x5E, 0xC5, 0xBC, 0x08, 0x53, 0x36, 0xD9, 0xE1, 0x51, 0x50, - 0xD3, 0x7B, 0xB2, 0xDA, 0xF9, 0x33, 0x92, 0xBF, 0x17, 0x28, 0xF4, 0x1C, - 0x5E, 0x35, 0x4C, 0x74, 0xD4, 0x82, 0xFA, 0xBA, 0xBE, 0x89, 0x81, 0x44, - 0x10, 0xBE, 0x9D, 0x2E, 0xBA, 0x40, 0xF0, 0x83, 0xE3, 0x42, 0xF4, 0x5F, - 0x4D, 0x2A, 0xFD, 0xC5, 0x5D, 0xF1, 0xCE, 0x83, 0x20, 0xD6, 0xEF, 0xBF, - 0xB1, 0xBB, 0xC4, 0xC7, 0x53, 0x69, 0x10, 0x80, 0x65, 0x73, 0xBF, 0xCE, - 0x0A, 0x41, 0x03, 0xEF, 0x4A, 0xB4, 0xA7, 0x23, 0x7D, 0x6C, 0xE8, 0x5F, - 0x2F, 0x44, 0x96, 0xD9, 0xD3, 0x10, 0xA5, 0xF7, 0xAA, 0x5C, 0x18, 0xA0, - 0x31, 0x00, 0xB9, 0xB2, 0xD9, 0x12, 0x1C, 0x4B, 0x22, 0x66, 0xCF, 0xED, - 0xB8, 0xC3, 0xF7, 0xE6, 0x1A, 0xF5, 0xCE, 0xA4, 0xEB, 0xED, 0x69, 0xE8, - 0x38, 0xA0, 0x9F, 0x47, 0x3E, 0x4C, 0x51, 0xDC, 0xFB, 0x4B, 0x34, 0xBC, - 0xFA, 0xD4, 0x52, 0xFC, 0x11, 0x6F, 0xBA, 0x3E, 0x06, 0x82, 0x4B, 0x06, - 0x8F, 0x8A, 0x66, 0x2C, 0xAE, 0x9B, 0x5F, 0x1D, 0x74, 0x46, 0xBF, 0x9B, - 0xB3, 0x94, 0x7A, 0xE2, 0xEE, 0x68, 0xB4, 0x91, 0x37, 0x44, 0x8A, 0xF6, - 0x2C, 0xC5, 0x99, 0x7E, 0x68, 0x3A, 0xED, 0x2E, 0x05, 0x0B, 0xBF, 0xCB, - 0x99, 0x31, 0xBC, 0xBD, 0x96, 0x26, 0x2F, 0x11, 0xA3, 0xEC, 0x67, 0x3D, - 0xBF, 0x08, 0x02, 0xAB, 0x12, 0x43, 0x39, 0x60, 0xCE, 0xCF, 0x35, 0xE8, - 0x88, 0xC6, 0x57, 0xA4, 0x7A, 0x35, 0x80, 0x48, 0x3C, 0x6C, 0xC9, 0x9B, - 0xDA, 0xE5, 0xB3, 0x48, 0x51, 0x92, 0x7B, 0x8B, 0x45, 0xFB, 0x5F, 0x88, - 0xDB, 0x95, 0x73, 0xC2, 0x43, 0xD2, 0x92, 0xA3, 0x34, 0x0F, 0xCB, 0x83, - 0x90, 0x78, 0xE6, 0x7A, 0x45, 0x9C, 0xEA, 0xD5, 0x03, 0xCC, 0xEB, 0xB3, - 0x74, 0xE2, 0x0E, 0x9A, 0xB5, 0xFB, 0xF2, 0x48, 0x5C, 0x3E, 0xB1, 0x67, - 0x0C, 0xB8, 0x6C, 0x36, 0x08, 0x84, 0xC6, 0x4C, 0x82, 0x98, 0xE4, 0xD8, - 0x1D, 0x58, 0x15, 0xAC, 0xC4, 0x41, 0xF7, 0x9D, 0x08, 0x64, 0x4A, 0xE9, - 0x74, 0x7E, 0x3B, 0x91, 0xC1, 0xE3, 0x9A, 0x0E, 0x81, 0x5C, 0xD1, 0x5C, - 0x7A, 0x95, 0x02, 0xD4, 0x28, 0x30, 0xD4, 0xE0, 0xAE, 0xB8, 0xF1, 0x7B, - 0xCF, 0xAC, 0x50, 0x90, 0xEF, 0x8F, 0x18, 0xD1, 0x9A, 0x19, 0x6F, 0x41, - 0x65, 0xCB, 0x28, 0xBD, 0x9C, 0xB6, 0x27, 0x65, 0x8B, 0xB5, 0xB8, 0x08, - 0xC7, 0x41, 0xBC, 0xF2, 0x63, 0x6D, 0x9C, 0xD7, 0x69, 0x03, 0xBF, 0xB0, - 0x7B, 0x04, 0xCC, 0xFD, 0x74, 0xA0, 0xBD, 0x81, 0x08, 0x86, 0x4F, 0x42, - 0x25, 0xD2, 0x4A, 0x66, 0x49, 0x3E, 0xD0, 0x7A, 0x3D, 0x54, 0xCB, 0x50, - 0x94, 0xF3, 0x7F, 0x3A, 0xF2, 0x91, 0xE6, 0x5E, 0x11, 0xC6, 0xA4, 0x76, - 0x97, 0xC3, 0x6C, 0x21, 0x0E, 0xB6, 0xBA, 0x10, 0x4A, 0xE3, 0xDC, 0xDC, - 0x43, 0x3B, 0xF0, 0x0B, 0x47, 0x65, 0xB9, 0xD7, 0x0B, 0x32, 0xFD, 0xF5, - 0x51, 0x03, 0xEA, 0x8C, 0x01, 0x65, 0xC4, 0x6B, 0x25, 0xF1, 0xC2, 0x3A, - 0x09, 0x65, 0x1D, 0x58, 0xDE, 0xF4, 0x2B, 0xC7, 0x67, 0x30, 0x04, 0x08, - 0x0A, 0x7A, 0x3A, 0x4B, 0xE4, 0xE7, 0xE8, 0xBE, 0xFF, 0x05, 0x42, 0xFC, - 0xE0, 0x1F, 0xAE, 0xA8, 0x75, 0xBA, 0xE9, 0xDC, 0x8C, 0xBD, 0x30, 0xB8, - 0x1D, 0x04, 0x57, 0xD3, 0x93, 0x1A, 0x43, 0x93, 0xFE, 0x5D, 0x6A, 0x28, - 0xBE, 0xE0, 0x39, 0xB2, 0xCC, 0xF0, 0x7D, 0x06, 0x4C, 0x95, 0xFC, 0x62, - 0xC7, 0x05, 0xEB, 0x16, 0x88, 0x2B, 0x0E, 0x96, 0xF1, 0xC7, 0x43, 0xC2, - 0xB7, 0xE9, 0x2F, 0xEC, 0xA0, 0x5C, 0x9A, 0xD7, 0x26, 0x64, 0x69, 0xDB, - 0x13, 0x25, 0xD8, 0x43, 0xE0, 0x5B, 0x0B, 0xA1, 0xE4, 0xB0, 0xF2, 0x4E, - 0x6A, 0x9C, 0xF4, 0x7B, 0x9E, 0xE3, 0xB7, 0xD4, 0xC6, 0x10, 0xF2, 0x37, - 0x45, 0x8A, 0x6B, 0x97, 0x28, 0x2E, 0x0E, 0xA0, 0x93, 0x13, 0xF7, 0x0B, - 0x8A, 0xB9, 0x9F, 0xC0, 0xE4, 0x4A, 0xED, 0xE1, 0x79, 0x32, 0x31, 0x97, - 0x2B, 0xB7, 0x09, 0xB5, 0xB9, 0xE3, 0x57, 0x56, 0x5F, 0x81, 0x28, 0x85, - 0xAA, 0xF8, 0x69, 0x77, 0x40, 0x74, 0xD6, 0x4B, 0x7A, 0xAC, 0xD5, 0x2D, - 0x74, 0xB4, 0x67, 0x89, 0xE1, 0xF1, 0xD9, 0x1F, 0xB8, 0xDC, 0xDF, 0x0D, - 0x8D, 0xA6, 0xA7, 0x8D, 0xF1, 0x59, 0x30, 0xD6, 0x00, 0x26, 0xD1, 0x21, - 0x2E, 0xE7, 0xB7, 0x91, 0x2E, 0xA9, 0xF6, 0xD0, 0x5A, 0xB6, 0x8A, 0x34, - 0x59, 0x92, 0x9E, 0x37, 0x1E, 0xD9, 0x38, 0x2A, 0xAE, 0x12, 0xD4, 0x95, - 0x8B, 0xE8, 0xA7, 0x5D, 0x8C, 0x92, 0xA1, 0x8A, 0x4D, 0x9E, 0x64, 0x20, - 0xA2, 0x7E, 0xCC, 0x39, 0x50, 0xA4, 0x01, 0xEC, 0xA7, 0xF5, 0x6D, 0x88, - 0x8E, 0xB6, 0xCE, 0xA4, 0x58, 0xAA, 0xFB, 0xCA, 0xC5, 0x67, 0x26, 0x07, - 0xBB, 0xEC, 0xFB, 0x73, 0x5D, 0x48, 0x9B, 0x49, 0xFE, 0x99, 0x25, 0x6D, - 0x82, 0x1F, 0x6E, 0x6E, 0x1E, 0x21, 0xBF, 0x94, 0x52, 0xB7, 0xAC, 0x8E, - 0x74, 0x22, 0x10, 0x27, 0x14, 0x6F, 0xDC, 0x80, 0xBD, 0xB3, 0xD6, 0xAD, - 0x1F, 0x17, 0x59, 0x6B, 0x42, 0x68, 0xBD, 0x37, 0xCF, 0xC6, 0x46, 0x11, - 0x64, 0x9E, 0xEB, 0xF5, 0xCD, 0xA2, 0x5F, 0x3F, 0xC8, 0x0E, 0x1F, 0xCC, - 0xFA, 0xE0, 0x59, 0xC4, 0x82, 0x8B, 0x8E, 0xC4, 0x8C, 0x96, 0x56, 0xF5, - 0x16, 0x2A, 0x53, 0x0E, 0x36, 0xC9, 0x61, 0x34, 0x3F, 0x0F, 0x73, 0xC3, - 0xD9, 0x0C, 0x3B, 0x74, 0xD5, 0x97, 0x3F, 0x2D, 0x1B, 0xCF, 0x1F, 0xD2, - 0xFC, 0xFF, 0xBC, 0xFB, 0x9E, 0xE7, 0x5D, 0x30, 0x5D, 0x9C, 0x66, 0x06, - 0x26, 0xD3, 0x0A, 0x4E, 0x4C, 0x45, 0xA8, 0xE6, 0x23, 0x0A, 0xE1, 0x3A, - 0x31, 0x39, 0xC0, 0x01, 0x9D, 0x19, 0xD3, 0x2A, 0x28, 0xD7, 0x43, 0x40, - 0x38, 0xC5, 0xA9, 0xCC, 0x80, 0x71, 0xAF, 0xDC, 0xEF, 0x4E, 0x85, 0xC0, - 0xBE, 0x56, 0xC1, 0x54, 0xA6, 0xDE, 0x30, 0xE4, 0xF9, 0xD0, 0x1B, 0x40, - 0x6A, 0x61, 0x2B, 0x5C, 0x2B, 0xF6, 0x16, 0x99, 0xD7, 0x62, 0xC2, 0x59, - 0x81, 0x87, 0xFB, 0x93, 0x45, 0xEE, 0x38, 0xB8, 0xE7, 0xDD, 0x37, 0xC0, - 0x76, 0xC9, 0x0D, 0x17, 0x06, 0x34, 0xD3, 0xB3, 0x6E, 0x88, 0x26, 0x99, - 0x48, 0x0E, 0x67, 0x46, 0xE3, 0xE4, 0x22, 0x97, 0xFA, 0xD3, 0xC3, 0x66, - 0xD1, 0x08, 0x17, 0x93, 0xDD, 0xC9, 0xC6, 0x41, 0xC7, 0x12, 0x4F, 0x83, - 0xB8, 0xCC, 0x60, 0xA0, 0x24, 0xB7, 0x17, 0x16, 0x31, 0xC6, 0x42, 0xEB, - 0xEC, 0x48, 0xE1, 0xEB, 0x75, 0x54, 0x75, 0xE8, 0x01, 0xF6, 0x42, 0x67, - 0xF1, 0x46, 0xF7, 0xB7, 0x2A, 0x22, 0x88, 0x20, 0xAC, 0xCF, 0xA3, 0x27, - 0x36, 0x38, 0xD0, 0x70, 0x99, 0xD5, 0x63, 0xA3, 0xF7, 0x05, 0x25, 0x52, - 0x82, 0x04, 0x02, 0xED, 0xBD, 0x13, 0x9F, 0xCE, 0x89, 0xD0, 0x6E, 0xE2, - 0x85, 0xBB, 0xEC, 0x7B, 0xFA, 0x6C, 0x88, 0x4B, 0x57, 0xD4, 0xC7, 0xCA, - 0x5A, 0x01, 0x6A, 0x6C, 0xD9, 0x75, 0x1E, 0x89, 0x26, 0xFA, 0x4A, 0x0E, - 0x1F, 0x2B, 0xA9, 0x97, 0xDB, 0x19, 0x4E, 0xD4, 0x55, 0x5C, 0x3D, 0xF2, - 0xDB, 0xD7, 0x5B, 0x60, 0x9E, 0x12, 0x4A, 0x62, 0x45, 0xE7, 0xBB, 0x0E, - 0xEF, 0x67, 0x99, 0x68, 0xAA, 0x0E, 0x2B, 0x49, 0x82, 0x8D, 0x7E, 0x4C, - 0xA4, 0x78, 0x08, 0xC3, 0xAE, 0x79, 0xF4, 0x39, 0xC1, 0xEC, 0x00, 0xB4, - 0x9D, 0x7C, 0x40, 0xFC, 0x6B, 0xBC, 0x16, 0xDB, 0xD8, 0xC4, 0x48, 0x5B, - 0x63, 0x16, 0xF6, 0xCE, 0xAA, 0x99, 0xC8, 0xF2, 0x87, 0x2A, 0x05, 0xAD, - 0x31, 0xB8, 0xA0, 0x1D, 0xA0, 0xA2, 0x03, 0x0C, 0x54, 0xD5, 0x7B, 0x0C, - 0xBF, 0x35, 0x70, 0x57, 0xCD, 0xE3, 0xB0, 0x57, 0xE8, 0xBE, 0x7A, 0x95, - 0xDF, 0xDF, 0xAB, 0x11, 0x55, 0x86, 0xA3, 0x27, 0x6E, 0x0B, 0x7B, 0xF0, - 0xAD, 0x2E, 0xEE, 0xF8, 0xD6, 0x10, 0xC8, 0x4D, 0x68, 0xCE, 0xA7, 0x86, - 0xFC, 0x45, 0xC1, 0x1E, 0x4E, 0x56, 0x61, 0x1E, 0xE8, 0x2C, 0xCA, 0x0D, - 0x51, 0xD2, 0x2C, 0xC3, 0x7E, 0xCF, 0xB3, 0x96, 0x1B, 0xEA, 0xD6, 0x0B, - 0x2D, 0x86, 0xDD, 0x8C, 0xAA, 0xAF, 0x1B, 0x4C, 0x4A, 0xA7, 0xA1, 0x53, - 0x5F, 0x8D, 0xB6, 0x0A, 0x3F, 0x5C, 0xA8, 0x23, 0x33, 0xCB, 0x92, 0xEA, - 0x1A, 0xEF, 0xBD, 0x2F, 0x89, 0xA1, 0x5C, 0x73, 0x3D, 0xDE, 0x51, 0x64, - 0xC5, 0x52, 0xA7, 0x92, 0xBC, 0x1D, 0xCA, 0xBA, 0xC8, 0xFC, 0x2C, 0x1A, - 0x69, 0x44, 0x71, 0xFE, 0xAB, 0x2A, 0x2E, 0xBB, 0x02, 0x92, 0xED, 0x90, - 0x01, 0xBC, 0x44, 0x7F, 0x6F, 0x76, 0x1E, 0x30, 0xDC, 0x4D, 0x3D, 0xBC, - 0x01, 0xD1, 0x1E, 0xE5, 0x71, 0x0E, 0xA6, 0x7D, 0xE1, 0xD5, 0xA6, 0x08, - 0xA6, 0x66, 0x9F, 0x0F, 0xAC, 0x11, 0x96, 0x66, 0x13, 0x03, 0x9F, 0x4C, - 0x0E, 0x8A, 0x2A, 0x4C, 0x39, 0xF0, 0xC6, 0x8E, 0x41, 0x9B, 0x23, 0xDD, - 0xDB, 0x7B, 0x94, 0x71, 0x6C, 0x78, 0x1B, 0xA6, 0xC1, 0xA8, 0x9B, 0xA5, - 0x86, 0x0E, 0x02, 0x97, 0x72, 0x2F, 0xE8, 0xE0, 0x01, 0x64, 0x39, 0x8C, - 0x6C, 0x4F, 0x64, 0x24, 0x34, 0x81, 0x33, 0x6D, 0xC6, 0x56, 0x60, 0x23, - 0x8C, 0xB1, 0xA3, 0x11, 0x94, 0x37, 0xEF, 0xE4, 0x3E, 0x4D, 0xAF, 0x61, - 0x2C, 0xF8, 0x86, 0x03, 0xFB, 0x25, 0xA3, 0x0F, 0xFA, 0x04, 0x3F, 0x72, - 0x10, 0xF1, 0xE6, 0x71, 0x13, 0x8A, 0xD7, 0xD3, 0x04, 0x92, 0x46, 0x4A, - 0x31, 0xAB, 0x5A, 0x1D, 0x16, 0x68, 0x77, 0x26, 0x9C, 0x28, 0x86, 0x27, - 0xD9, 0x60, 0xCA, 0x74, 0x41, 0x90, 0xB6, 0x0C, 0x91, 0xB1, 0x1E, 0x82, - 0xD9, 0x81, 0x63, 0x00, 0x2A, 0xA0, 0x07, 0x74, 0x62, 0x3B, 0xBD, 0x5B, - 0x9C, 0xA0, 0x6E, 0xE0, 0x55, 0x9B, 0x0A, 0x60, 0x84, 0x92, 0x7E, 0xB1, - 0xF1, 0xFC, 0x36, 0x97, 0xF8, 0x92, 0xAF, 0x3B, 0xD1, 0x2A, 0xBF, 0x4E, - 0xFD, 0x68, 0xC2, 0xF5, 0x89, 0xED, 0xE8, 0x4A, 0x44, 0xA0, 0x66, 0x50, - 0xDF, 0x4F, 0x6B, 0x9D, 0x1C, 0x98, 0xA4, 0xF4, 0x22, 0x9F, 0x51, 0x17, - 0x46, 0x4F, 0xFC, 0x07, 0xAD, 0xE6, 0x24, 0xF9, 0x5F, 0x9F, 0x56, 0x49, - 0x6A, 0x15, 0x39, 0xCA, 0x68, 0x98, 0xAF, 0xF1, 0x3F, 0xFB, 0x60, 0x36, - 0xDC, 0xB7, 0xD4, 0x27, 0x1F, 0x98, 0xDD, 0x6B, 0x21, 0x72, 0x1C, 0x4F, - 0x4C, 0x93, 0xC4, 0x01, 0xA4, 0x9C, 0xB7, 0x02, 0xC3, 0xFE, 0xCA, 0xC0, - 0x8D, 0xD5, 0xBA, 0x09, 0xB9, 0xAF, 0x1C, 0xB0, 0x08, 0x09, 0x36, 0x70, - 0x91, 0x08, 0xF5, 0x1B, 0x14, 0xE9, 0x81, 0xB1, 0xD1, 0xA0, 0x94, 0x4C, - 0x73, 0x46, 0xBB, 0x7C, 0xFA, 0xB9, 0xE7, 0x31, 0x94, 0xFD, 0xCE, 0x97, - 0xDB, 0x52, 0x32, 0x11, 0x72, 0xD7, 0x1C, 0xDE, 0x97, 0xBE, 0x19, 0xD9, - 0xCB, 0xCC, 0xEF, 0x0F, 0x2C, 0x90, 0xEA, 0xED, 0x1F, 0x07, 0x10, 0xD4, - 0x4E, 0xDF, 0x3F, 0x92, 0x29, 0x57, 0x22, 0x7A, 0x18, 0xB0, 0xE1, 0xDE, - 0x76, 0x61, 0xF3, 0xBA, 0x84, 0xD4, 0x7D, 0x9C, 0x92, 0x7B, 0x0B, 0xC2, - 0x7F, 0x6A, 0xF5, 0x5E, 0x77, 0xD6, 0xBB, 0xF5, 0x23, 0x1D, 0xCE, 0x52, - 0xFA, 0x21, 0x33, 0xD1, 0x33, 0x38, 0x65, 0x34, 0xCE, 0x8C, 0x25, 0x9D, - 0xF4, 0x95, 0xF1, 0x71, 0x17, 0xE6, 0x08, 0x96, 0xEA, 0x54, 0xA1, 0xA1, - 0xEB, 0xFD, 0x90, 0xAE, 0x63, 0x42, 0xC0, 0x8B, 0x57, 0xD4, 0x64, 0xDF, - 0xB9, 0xF1, 0xB2, 0x8A, 0xAD, 0x42, 0x64, 0x99, 0xF4, 0x3E, 0x72, 0xDB, - 0xE1, 0x18, 0xF2, 0x28, 0x0A, 0xDD, 0xB9, 0x8D, 0x66, 0xC2, 0xB1, 0x02, - 0xDC, 0xAB, 0x31, 0x2E, 0x42, 0xC8, 0x7A, 0xC0, 0xD2, 0x82, 0x7B, 0x2E, - 0xBA, 0x25, 0x07, 0x51, 0xB6, 0xC2, 0xDC, 0x75, 0x84, 0x5B, 0xB5, 0x43, - 0x36, 0x37, 0x26, 0x8B, 0x89, 0x77, 0x50, 0xC3, 0x49, 0xC0, 0xA1, 0x41, - 0xDC, 0xAA, 0x84, 0x32, 0x4E, 0x77, 0xE5, 0xC3, 0xF2, 0x2E, 0xD8, 0xA0, - 0x29, 0x64, 0xAA, 0x4A, 0x43, 0x90, 0xBA, 0xB1, 0x84, 0xFB, 0x9D, 0x40, - 0x82, 0x97, 0x01, 0xFE, 0x22, 0x40, 0x54, 0x06, 0x68, 0x9A, 0x9E, 0xB6, - 0x29, 0x21, 0xFB, 0x9F, 0xD4, 0x3A, 0x23, 0xDC, 0xAC, 0xB6, 0x7F, 0x19, - 0xC8, 0x01, 0x12, 0x40, 0xDB, 0xFB, 0xA1, 0x93, 0xAD, 0xD2, 0x03, 0xFA, - 0xB3, 0xA1, 0x47, 0x49, 0x8E, 0x8E, 0xA2, 0xF8, 0xDA, 0xB8, 0xDA, 0xF8, - 0x55, 0x2E, 0x8D, 0x91, 0x8E, 0x8C, 0x03, 0x1C, 0x6D, 0x9F, 0x09, 0x41, - 0x4B, 0x0A, 0x20, 0xDF, 0x6C, 0x1E, 0x07, 0x33, 0x39, 0xDC, 0xFE, 0x4F, - 0xD1, 0xC9, 0xFE, 0xC1, 0x44, 0x38, 0x95, 0x88, 0xE6, 0xAA, 0x20, 0x43, - 0x3A, 0x23, 0xBB, 0x05, 0x47, 0x34, 0x26, 0x19, 0xD0, 0x9F, 0x7B, 0x3F, - 0x6D, 0x10, 0x36, 0xBD, 0xC1, 0x96, 0x4B, 0xB2, 0x2B, 0x25, 0x36, 0xD3, - 0x79, 0x74, 0x1D, 0xDD, 0x88, 0x8D, 0x05, 0x4A, 0xF1, 0xA6, 0xC6, 0x62, - 0xE7, 0x28, 0x06, 0xD7, 0x34, 0x73, 0x2F, 0xB8, 0xDE, 0x3C, 0xB3, 0xAA, - 0x69, 0xBD, 0xDA, 0x1A, 0x30, 0xE8, 0x59, 0x44, 0x81, 0xCB, 0xCF, 0xAA, - 0xE0, 0xD0, 0x1B, 0x7C, 0xC6, 0x0E, 0xD7, 0x24, 0x12, 0xA9, 0x86, 0xB7, - 0xC3, 0x73, 0xA4, 0x87, 0x35, 0xC5, 0x6D, 0x44, 0x41, 0x30, 0xC0, 0x53, - 0xF3, 0x15, 0x12, 0x12, 0xEA, 0xA0, 0x50, 0x95, 0xA4, 0x8A, 0xC3, 0x4B, - 0xB1, 0xC1, 0xA8, 0xB6, 0x20, 0x63, 0x00, 0x8B, 0x77, 0x29, 0x30, 0x51, - 0x60, 0x87, 0x7C, 0x0E, 0x80, 0x3C, 0x7A, 0xB3, 0x56, 0x82, 0x99, 0xEC, - 0xA2, 0x9D, 0x87, 0xE0, 0x8A, 0x7B, 0xF9, 0x88, 0x74, 0xEF, 0xE6, 0x95, - 0xC4, 0x58, 0xFD, 0x85, 0xAF, 0xBD, 0x16, 0xFD, 0xAD, 0x5D, 0x5F, 0xFB, - 0xE7, 0xCC, 0xD0, 0x50, 0x59, 0x80, 0x2B, 0x12, 0x2F, 0xB2, 0x2E, 0xC0, - 0xEB, 0x6C, 0xF9, 0xE9, 0x95, 0xA7, 0x7E, 0xD5, 0xBD, 0x07, 0x68, 0xFB, - 0x09, 0xF3, 0xF9, 0x6F, 0xF2, 0xE1, 0x40, 0x78, 0x9D, 0xD1, 0xA4, 0x85, - 0xFF, 0x8F, 0x2E, 0x85, 0x87, 0xF2, 0xAA, 0x77, 0xD8, 0xFC, 0xF9, 0x96, - 0x74, 0xB0, 0xB4, 0x1E, 0x3C, 0x2C, 0x17, 0x63, 0x3B, 0x03, 0xF0, 0xF0, - 0xC9, 0x29, 0x57, 0x11, 0x81, 0xF8, 0x1B, 0x68, 0x03, 0x40, 0x53, 0x0C, - 0x75, 0x4C, 0x93, 0x6D, 0xC4, 0x5D, 0x40, 0xD0, 0x91, 0xAC, 0xA1, 0x6E, - 0x5F, 0xDD, 0x0F, 0x51, 0xB8, 0x77, 0x2D, 0x0E, 0x71, 0x45, 0x53, 0x2A, - 0x10, 0x83, 0x4A, 0xFA, 0x1B, 0xE7, 0x51, 0x8E, 0xE0, 0xDF, 0x54, 0xBF, - 0xBF, 0xA8, 0x6E, 0xC2, 0xA9, 0x15, 0x1D, 0x15, 0x15, 0x21, 0x9A, 0x9F, - 0x72, 0x00, 0x0C, 0xB3, 0xD6, 0xF6, 0xF6, 0x25, 0x73, 0xE6, 0x27, 0xFD, - 0x24, 0xF4, 0x06, 0x63, 0x21, 0x40, 0x0F, 0x38, 0x24, 0xDC, 0x78, 0x7A, - 0x5A, 0x60, 0x50, 0xA6, 0xAD, 0x1D, 0x02, 0x27, 0x60, 0xC5, 0x2B, 0x11, - 0x6B, 0xD3, 0x44, 0x52, 0x25, 0xAC, 0x90, 0x8C, 0x8E, 0xBD, 0x77, 0xC7, - 0xB7, 0x14, 0x8D, 0xDB, 0xF4, 0xBD, 0xD0, 0xED, 0x4F, 0x76, 0xFE, 0x0C, - 0x5E, 0x81, 0x63, 0x49, 0xDD, 0x27, 0x79, 0xD3, 0xEF, 0x12, 0x64, 0xD5, - 0x84, 0x99, 0xA4, 0x16, 0x25, 0xC6, 0xE2, 0xAC, 0xD5, 0xC4, 0x8C, 0xBA, - 0x42, 0x12, 0x21, 0x96, 0x53, 0xFF, 0xC2, 0xCB, 0x12, 0x98, 0xEB, 0xEC, - 0x0E, 0x72, 0xE3, 0x4A, 0x15, 0x5F, 0x61, 0xAF, 0xA4, 0x60, 0x43, 0x3F, - 0x79, 0x17, 0xC6, 0xCF, 0x9B, 0x48, 0x4C, 0x49, 0x74, 0xC6, 0x64, 0x92, - 0x6C, 0x41, 0xD4, 0xBB, 0xB9, 0x9D, 0x17, 0xA1, 0x68, 0xF1, 0x6E, 0xD5, - 0x5E, 0xD6, 0xD9, 0xF6, 0xDA, 0xD8, 0x36, 0xC1, 0x3E, 0xC2, 0xF2, 0x85, - 0xBC, 0x9B, 0x05, 0xE0, 0xD5, 0x15, 0xCF, 0x00, 0xBC, 0xD1, 0x1F, 0xCE, - 0x50, 0x47, 0x37, 0xFE, 0x57, 0x7A, 0xCB, 0x1C, 0x2E, 0x36, 0x79, 0xC4, - 0xDC, 0x1C, 0x11, 0x84, 0xDF, 0xD0, 0xF2, 0x7A, 0x02, 0xDD, 0x37, 0x5E, - 0xD0, 0x4A, 0x11, 0x0D, 0x59, 0x8F, 0xDD, 0xEB, 0xF6, 0x1D, 0xE6, 0x0D, - 0x58, 0x18, 0x7D, 0xD4, 0x4D, 0x3D, 0x1B, 0xD5, 0x13, 0xB1, 0xD4, 0xBB, - 0x50, 0x56, 0x29, 0xB1, 0x78, 0xCA, 0xC9, 0xC3, 0xA4, 0x10, 0x67, 0xFA, - 0x48, 0x13, 0x12, 0xAB, 0xB5, 0xDA, 0x45, 0x72, 0x6A, 0x41, 0x11, 0x6B, - 0xA9, 0xBF, 0x93, 0xFA, 0x47, 0x6D, 0x46, 0xE4, 0xAE, 0x58, 0xED, 0x5D, - 0xF3, 0x38, 0x57, 0xED, 0x49, 0xB7, 0x6A, 0x15, 0xC9, 0xBA, 0x05, 0xF2, - 0xA5, 0x9D, 0xC0, 0x0A, 0x31, 0x02, 0xC4, 0x70, 0x33, 0x4E, 0x5D, 0x29, - 0x02, 0x5B, 0x99, 0xEF, 0x2A, 0x1B, 0xD6, 0x90, 0xA9, 0xF1, 0x9A, 0x52, - 0x09, 0xD4, 0xFD, 0xF7, 0x5F, 0x50, 0xA1, 0x78, 0xD5, 0xA0, 0x69, 0xBE, - 0xD7, 0x61, 0x5E, 0x97, 0x16, 0x33, 0xBD, 0x25, 0x2B, 0x9F, 0x25, 0x49, - 0x6C, 0x9B, 0x5B, 0xB7, 0x8A, 0x9F, 0x54, 0x46, 0x2C, 0x3F, 0xC9, 0xFA, - 0xB8, 0xD0, 0xA3, 0x35, 0xBB, 0xF1, 0x7D, 0x4A, 0x74, 0xEC, 0x6F, 0xD3, - 0x14, 0xB3, 0x5E, 0x92, 0xFB, 0xF2, 0xE8, 0x41, 0x0A, 0xD2, 0x33, 0xF0, - 0x73, 0x5B, 0x36, 0x9A, 0x70, 0x97, 0x6E, 0x60, 0x54, 0xFD, 0x27, 0x79, - 0xC0, 0x4B, 0x1C, 0x86, 0x22, 0xAA, 0xA0, 0x14, 0x9D, 0xF6, 0x79, 0x3A, - 0xC3, 0x5C, 0xC4, 0xAC, 0xB2, 0xBC, 0x4D, 0xCC, 0xDC, 0xE0, 0x48, 0xB7, - 0x8E, 0xBD, 0x49, 0x08, 0x15, 0xB2, 0xA7, 0x05, 0xF9, 0x15, 0x18, 0x79, - 0xF1, 0x5F, 0xEA, 0xB8, 0x53, 0x5B, 0xA2, 0xD8, 0x7E, 0xA7, 0x0A, 0x28, - 0x1B, 0x0E, 0x21, 0x10, 0x02, 0xB9, 0xAA, 0x62, 0x1E, 0x17, 0x12, 0x31, - 0x8A, 0x60, 0x70, 0x90, 0x66, 0xFF, 0x83, 0x3F, 0x39, 0x97, 0x75, 0xE3, - 0x8D, 0x51, 0xA8, 0x0A, 0xA4, 0x9C, 0x1F, 0x73, 0x91, 0x8F, 0x8A, 0x9D, - 0x17, 0x7C, 0x43, 0x33, 0x1C, 0xE8, 0x29, 0x73, 0xA2, 0x3D, 0x2C, 0x43, - 0x07, 0x9B, 0x6D, 0xB2, 0x7F, 0x4E, 0x16, 0x6D, 0x94, 0x5D, 0x3F, 0xC4, - 0x0E, 0xEF, 0xEB, 0x0F, 0x71, 0x04, 0x2F, 0x99, 0xCD, 0x50, 0x81, 0x23, - 0x2A, 0x9C, 0xB0, 0x74, 0x63, 0x94, 0x8E, 0x41, 0x29, 0x93, 0x2B, 0x20, - 0x8B, 0xC8, 0x75, 0x34, 0xEB, 0x11, 0x4C, 0x4F, 0xDA, 0x1A, 0x8B, 0xE5, - 0x87, 0xA6, 0xB0, 0x57, 0xE2, 0x3F, 0x58, 0x68, 0xA3, 0xC0, 0x2E, 0x48, - 0x92, 0x4B, 0x9A, 0xE1, 0xFD, 0xF3, 0x22, 0x66, 0x8B, 0xF6, 0xCA, 0x10, - 0xBA, 0x83, 0x0C, 0x50, 0x68, 0x73, 0xD0, 0x21, 0x06, 0x2E, 0xAD, 0x68, - 0x2F, 0x11, 0x1E, 0x31, 0x38, 0x8D, 0xCF, 0x3E, 0xD7, 0x68, 0x08, 0xE3, - 0xD2, 0x47, 0x7B, 0x71, 0x68, 0xF6, 0x4F, 0x11, 0x36, 0x97, 0xD9, 0x2A, - 0xCF, 0x87, 0x0A, 0xCB, 0x5E, 0xE7, 0x1C, 0x1B, 0x02, 0x7F, 0x58, 0x4F, - 0x16, 0x3E, 0x5E, 0x28, 0x9E, 0xB4, 0x3B, 0x20, 0x5C, 0x9B, 0x6D, 0x25, - 0x4B, 0x72, 0xE1, 0xA5, 0x38, 0xC1, 0x7F, 0x69, 0x0A, 0x60, 0x42, 0xAB, - 0x24, 0x86, 0x09, 0xAA, 0x5D, 0x9E, 0x65, 0xF8, 0xC7, 0x6A, 0xCD, 0x31, - 0x14, 0xBC, 0xC0, 0x45, 0x80, 0x68, 0x09, 0xA2, 0x77, 0xD6, 0x4B, 0x95, - 0xD4, 0xF4, 0x58, 0xF0, 0xAB, 0x2F, 0x79, 0x77, 0x59, 0x74, 0x38, 0xD5, - 0x69, 0xB8, 0x77, 0x32, 0x92, 0x2A, 0x49, 0x96, 0xBE, 0x40, 0x31, 0x4F, - 0xC5, 0xCD, 0x9B, 0xA1, 0xD6, 0xB9, 0xCE, 0xF6, 0x4B, 0x01, 0x87, 0xE1, - 0x0E, 0x55, 0x40, 0x13, 0xE5, 0x42, 0x01, 0xC8, 0x78, 0x90, 0x6F, 0xA9, - 0x5B, 0x65, 0x79, 0xA0, 0x84, 0x85, 0x3B, 0x42, 0x73, 0x2D, 0x7C, 0xBA, - 0x2B, 0x7F, 0x19, 0xEB, 0x8D, 0x9D, 0x82, 0xA6, 0xE5, 0x10, 0x0A, 0x5A, - 0xAB, 0xA1, 0x1B, 0xD8, 0x87, 0xAB, 0xC5, 0x70, 0x78, 0xC1, 0xBC, 0xF6, - 0x5C, 0xFC, 0x60, 0x69, 0x5A, 0xD7, 0xE1, 0x20, 0x50, 0xCB, 0xDD, 0x55, - 0x1E, 0x80, 0x1F, 0x0A, 0x97, 0x65, 0x86, 0x02, 0xD4, 0x6C, 0x2E, 0x08, - 0xB8, 0xB0, 0x26, 0x78, 0xB9, 0xB3, 0x6D, 0x57, 0x9E, 0x21, 0x37, 0x01, - 0xDB, 0xEF, 0x49, 0x4D, 0x66, 0xE0, 0x7C, 0xCB, 0xCC, 0xD9, 0xAC, 0xEE, - 0xF2, 0xCE, 0xA5, 0x8E, 0x15, 0x4F, 0x1C, 0x83, 0x3C, 0xC8, 0xD0, 0x88, - 0x7E, 0x66, 0xCE, 0xA9, 0xBA, 0x32, 0x97, 0x15, 0x5F, 0x8B, 0xBC, 0x9E, - 0x1C, 0x14, 0x55, 0x9A, 0xBC, 0x4E, 0x4A, 0x6B, 0xB0, 0xE0, 0xF0, 0xDB, - 0x3A, 0x64, 0x14, 0x75, 0xAC, 0x14, 0x36, 0xE8, 0x6A, 0xB0, 0x3D, 0x7E, - 0xD9, 0xB4, 0x2B, 0x1F, 0xE9, 0x50, 0xB1, 0x7C, 0x18, 0x05, 0xA6, 0xE2, - 0x44, 0xF3, 0xCE, 0xE6, 0x4C, 0x21, 0x9E, 0x69, 0xAA, 0x22, 0x7E, 0xE2, - 0x35, 0x76, 0x3A, 0xAE, 0x6E, 0x4E, 0x72, 0x25, 0xB5, 0x4D, 0xA4, 0xF7, - 0x47, 0x82, 0x9C, 0xD5, 0xA0, 0x08, 0x53, 0x17, 0x74, 0xB5, 0xB4, 0xA2, - 0x6F, 0x10, 0x40, 0x62, 0x47, 0xB9, 0xCE, 0x00, 0xC8, 0x68, 0x94, 0x9F, - 0xD6, 0x7C, 0x0D, 0xD5, 0xB7, 0x8A, 0x13, 0xDE, 0x8C, 0x5B, 0x0B, 0x33, - 0xB7, 0x15, 0xD5, 0x43, 0xAE, 0xC0, 0x87, 0x0A, 0x13, 0xF3, 0xB5, 0x1C, - 0x00, 0xC7, 0xA4, 0x36, 0x05, 0xE4, 0xFF, 0xE2, 0x18, 0x6E, 0xF5, 0xF9, - 0x0D, 0xDE, 0xDA, 0x4D, 0xC6, 0x1B, 0x0D, 0x89, 0xD7, 0xD5, 0x5E, 0x84, - 0xDA, 0xC2, 0xAF, 0x42, 0x2D, 0x89, 0xD3, 0x69, 0x38, 0x25, 0xDB, 0xE0, - 0xC3, 0x17, 0xCF, 0x3A, 0xB1, 0x8F, 0x60, 0x74, 0xC4, 0x3C, 0x20, 0x1B, - 0xE3, 0x0C, 0x91, 0x93, 0xDC, 0xCB, 0x39, 0x45, 0x0E, 0xB3, 0x78, 0x52, - 0xBF, 0x6A, 0x79, 0x10, 0x93, 0x67, 0x25, 0x87, 0xD7, 0xA6, 0x55, 0xEB, - 0xC0, 0xE2, 0x04, 0x43, 0xF9, 0x25, 0x3B, 0x10, 0x95, 0xEF, 0xD5, 0x34, - 0xB0, 0xA6, 0x67, 0x24, 0x26, 0x94, 0x71, 0x4C, 0xA5, 0x7F, 0x4E, 0xAC, - 0xA7, 0x58, 0x89, 0xA1, 0x47, 0x47, 0x76, 0x17, 0xC0, 0x79, 0x21, 0xFE, - 0x53, 0xB8, 0x55, 0xC3, 0x73, 0xF7, 0x07, 0x4C, 0x76, 0xEE, 0x45, 0x92, - 0x72, 0x75, 0x07, 0xAE, 0x18, 0x44, 0xC0, 0x96, 0x20, 0x9F, 0xE6, 0x54, - 0x04, 0xEE, 0x16, 0xBA, 0x4B, 0x29, 0xA9, 0x27, 0x35, 0xBE, 0x58, 0xA6, - 0x32, 0x00, 0xEE, 0x7C, 0x8D, 0x3F, 0x4D, 0xB2, 0x1D, 0xB2, 0x0C, 0x6D, - 0xC9, 0xFE, 0x26, 0x92, 0xCF, 0x50, 0xD8, 0x0F, 0x27, 0x00, 0xDA, 0x4A, - 0xB6, 0xD5, 0xD7, 0x03, 0x8E, 0x09, 0xCA, 0x9D, 0xA8, 0xC0, 0x95, 0x6D, - 0x7E, 0xC8, 0x36, 0x43, 0x9C, 0x41, 0x30, 0x92, 0xC6, 0x97, 0x0D, 0x6C, - 0x87, 0x9F, 0xBC, 0x41, 0x72, 0x83, 0x6F, 0x7E, 0xCA, 0x29, 0x9B, 0x9B, - 0x43, 0x7F, 0x1A, 0x1B, 0xE3, 0xEF, 0x48, 0x3B, 0x22, 0x3F, 0x18, 0xDA, - 0x3B, 0xE6, 0xE0, 0x10, 0xCA, 0xD4, 0x0E, 0xAF, 0x56, 0xD4, 0x17, 0x20, - 0xD8, 0x80, 0xB7, 0xCF, 0xB1, 0xE5, 0x3B, 0xE8, 0x9A, 0x5F, 0xD0, 0x16, - 0x44, 0xEE, 0x3A, 0x8B, 0xB3, 0x23, 0x75, 0x1F, 0xBD, 0xDF, 0xE1, 0xF0, - 0xFD, 0xB9, 0xEB, 0x21, 0x49, 0x16, 0x00, 0xEE, 0xFD, 0x87, 0x45, 0x97, - 0x45, 0x68, 0xDA, 0x57, 0x01, 0x60, 0x33, 0x1A, 0x01, 0x43, 0xB2, 0x1C, - 0xB7, 0xA6, 0xCD, 0x67, 0xFD, 0x38, 0x00, 0x44, 0x04, 0xFD, 0xA4, 0x35, - 0x63, 0x58, 0x79, 0x47, 0x6A, 0x1B, 0x6F, 0x65, 0x7A, 0x49, 0x2E, 0xA4, - 0xCE, 0xEE, 0x44, 0x78, 0xA7, 0xCB, 0x0C, 0xF1, 0x9E, 0x8B, 0x3E, 0xC8, - 0x4E, 0xDA, 0x4F, 0x90, 0xF6, 0xA6, 0x38, 0x1C, 0x14, 0x64, 0x21, 0x16, - 0x7C, 0x09, 0xAA, 0x52, 0x03, 0xC7, 0xBE, 0x62, 0x9E, 0xBD, 0xC6, 0x3F, - 0x6A, 0x0A, 0x79, 0x24, 0xFD, 0x00, 0xDF, 0xCB, 0x9E, 0xC9, 0x8D, 0x56, - 0xC6, 0x58, 0x81, 0x78, 0xCD, 0xA6, 0x36, 0x63, 0xE4, 0x78, 0x2F, 0xC8, - 0xAF, 0x6E, 0xD5, 0xB4, 0xDD, 0x31, 0xE4, 0x84, 0x33, 0x4E, 0x6F, 0x4D, - 0xE1, 0xD2, 0x87, 0x2A, 0xE3, 0xBA, 0x11, 0xBC, 0x0A, 0x4E, 0x28, 0xC9, - 0x8B, 0x50, 0x6E, 0xCF, 0x55, 0x06, 0x63, 0x89, 0x6B, 0x45, 0x83, 0x36, - 0x08, 0xA2, 0x67, 0x61, 0xBB, 0x72, 0x2F, 0xD1, 0xA4, 0x45, 0xD7, 0x1C, - 0x1A, 0x76, 0x47, 0x43, 0xED, 0x72, 0xA7, 0x68, 0x2F, 0xEA, 0xCB, 0x04, - 0xD0, 0x70, 0x00, 0xE9, 0xB5, 0xCA, 0xF0, 0x47, 0x5E, 0x5C, 0x28, 0x5E, - 0x03, 0x88, 0xB4, 0xD6, 0x52, 0x6A, 0xFE, 0xFF, 0x88, 0x9C, 0x2B, 0x32, - 0xD1, 0x3D, 0x9E, 0x4F, 0xD3, 0xD4, 0xA7, 0xE1, 0xB6, 0xB9, 0x89, 0xE7, - 0xE2, 0xF7, 0xBC, 0x57, 0xD7, 0xC4, 0x20, 0xFB, 0x91, 0xC0, 0x87, 0x5E, - 0xC4, 0x4F, 0xB7, 0x0B, 0xD4, 0x34, 0x30, 0xAC, 0x02, 0x1F, 0xC7, 0x7A, - 0xBE, 0x64, 0x25, 0x34, 0x92, 0x12, 0x22, 0x66, 0xB5, 0x81, 0x7F, 0x6E, - 0x89, 0xA6, 0x49, 0x07, 0xFA, 0xA6, 0x14, 0x80, 0x7A, 0x5D, 0x4D, 0x06, - 0x9D, 0x57, 0x17, 0x82, 0x1B, 0x70, 0xBE, 0xFA, 0x50, 0x1A, 0x5E, 0x7B, - 0x48, 0x11, 0xF8, 0x2F, 0xFD, 0xC0, 0xE4, 0x75, 0x57, 0xCD, 0x81, 0x57, - 0xDA, 0x84, 0x1A, 0x92, 0x18, 0x40, 0x8A, 0xC3, 0x66, 0xCC, 0xE0, 0x93, - 0x8A, 0x19, 0x30, 0x2F, 0xD5, 0x9A, 0xAD, 0x24, 0x8A, 0x39, 0x03, 0x45, - 0xCF, 0x8E, 0xF9, 0x8C, 0x8D, 0xE1, 0x29, 0x2D, 0xDD, 0xB6, 0xA0, 0x33, - 0xCD, 0x75, 0x99, 0x27, 0xBA, 0x20, 0x10, 0x6C, 0xEE, 0xC5, 0xFE, 0xDB, - 0x86, 0x53, 0xD6, 0xCE, 0x48, 0x24, 0xEF, 0xB3, 0x27, 0x99, 0xFC, 0x51, - 0x25, 0x52, 0x76, 0x6F, 0xCD, 0x75, 0x68, 0x7E, 0xD2, 0xC8, 0xB7, 0x82, - 0x55, 0x5D, 0x2F, 0x30, 0xD0, 0xBF, 0x0C, 0xC6, 0xD6, 0xAB, 0xC8, 0x3A, - 0x48, 0x76, 0x26, 0x24, 0x08, 0xBF, 0x44, 0xA2, 0x27, 0xC8, 0x3F, 0xE7, - 0xD8, 0xBB, 0xD5, 0xED, 0x5D, 0xE4, 0xFE, 0x94, 0x9F, 0xE0, 0x13, 0xFC, - 0x1B, 0xB8, 0x0D, 0xED, 0x68, 0x33, 0xE5, 0x38, 0xFC, 0x7C, 0x05, 0xB1, - 0x74, 0xEA, 0x8E, 0xA2, 0x2F, 0x53, 0x5B, 0x9D, 0xD3, 0x53, 0x55, 0x18, - 0x01, 0x4C, 0xFE, 0x84, 0x00, 0xF7, 0x66, 0x11, 0x4E, 0xEF, 0x45, 0xF1, - 0xAE, 0xCF, 0x6B, 0x5C, 0x40, 0x76, 0x8B, 0xE3, 0xE0, 0x3F, 0x10, 0x14, - 0x07, 0x22, 0x9C, 0xBD, 0xE0, 0xFF, 0x56, 0x2F, 0x62, 0xEA, 0x50, 0x50, - 0xF6, 0x73, 0xA9, 0x2D, 0x3D, 0xED, 0x2B, 0x1A, 0x10, 0xB8, 0xAC, 0x07, - 0x69, 0xB0, 0x7D, 0x42, 0x9A, 0x58, 0x18, 0xA9, 0x87, 0x04, 0x63, 0xE0, - 0x64, 0x81, 0x9B, 0x17, 0xB1, 0x42, 0x36, 0x00, 0xA1, 0xA9, 0x1C, 0x9F, - 0x03, 0xC2, 0x6E, 0xB8, 0x40, 0xC4, 0xB1, 0x40, 0xDB, 0x45, 0xD3, 0x47, - 0xB6, 0x1A, 0x55, 0xB0, 0x91, 0x6B, 0xAE, 0xE4, 0x8C, 0x75, 0x9F, 0x6A, - 0x1F, 0xFA, 0xD2, 0x4B, 0x7B, 0x34, 0xE3, 0xAC, 0x77, 0x66, 0x1E, 0x88, - 0x2A, 0x89, 0x2E, 0x19, 0xF3, 0x21, 0xC5, 0xEA, 0x09, 0x99, 0xB2, 0x30, - 0x9F, 0xA5, 0x6B, 0x75, 0xF0, 0xE8, 0xCB, 0x9F, 0xB0, 0x3E, 0x17, 0x59, - 0x10, 0xDD, 0x0B, 0xA7, 0x97, 0xB4, 0x7E, 0x68, 0x26, 0x46, 0xE8, 0xA4, - 0x88, 0x4B, 0x0C, 0xE8, 0x5F, 0x4A, 0x2F, 0x67, 0xFE, 0x70, 0x33, 0xA4, - 0x55, 0x35, 0xC3, 0x85, 0x20, 0xBC, 0x12, 0x18, 0x85, 0x6B, 0x8D, 0x53, - 0x70, 0x1F, 0xF3, 0x8E, 0x1A, 0x56, 0x6F, 0x2E, 0xAD, 0xC9, 0x67, 0x00, - 0x28, 0x11, 0x72, 0x2D, 0xAF, 0x8D, 0x45, 0xC3, 0x86, 0xC7, 0xE9, 0xA8, - 0xC0, 0xBB, 0x26, 0x97, 0xD5, 0xE4, 0xB7, 0xCF, 0x57, 0x01, 0x00, 0x1E, - 0xBF, 0x11, 0xE2, 0xE4, 0x1E, 0x4D, 0xB6, 0x52, 0xC6, 0x69, 0xDE, 0xA0, - 0x3A, 0xD6, 0x97, 0x38, 0x63, 0x39, 0x60, 0x17, 0xAC, 0xD6, 0xED, 0xFB, - 0x10, 0xA9, 0xE0, 0x5E, 0x6D, 0x43, 0xC2, 0x24, 0xA8, 0xAC, 0xB8, 0xC5, - 0xE1, 0xF5, 0xBD, 0x4B, 0x89, 0x47, 0x50, 0x9F, 0x02, 0xB4, 0x40, 0xB1, - 0xFA, 0xCD, 0x48, 0x52, 0x68, 0xE5, 0x25, 0xE0, 0x74, 0xA2, 0x64, 0xC4, - 0x7B, 0xE5, 0xF1, 0x61, 0x21, 0xA6, 0x39, 0x42, 0x26, 0xC1, 0x87, 0x1F, - 0x6F, 0x3D, 0x68, 0x96, 0xC4, 0x74, 0xCD, 0x5E, 0xEE, 0x43, 0x6F, 0x99, - 0x91, 0x1D, 0x30, 0x97, 0xBA, 0x7E, 0xA5, 0xA6, 0x08, 0x3B, 0x8D, 0x40, - 0x61, 0xAF, 0x1B, 0xA2, 0x37, 0x63, 0x48, 0xD1, 0x70, 0xF6, 0xFC, 0x6A, - 0xDF, 0x09, 0x82, 0x4E, 0x00, 0xD6, 0xAA, 0x31, 0x76, 0x98, 0x24, 0x78, - 0xE3, 0x18, 0x91, 0xF6, 0x88, 0x3E, 0xA8, 0x54, 0xA1, 0x3F, 0xAD, 0xE1, - 0x67, 0xCE, 0x3E, 0x9E, 0x82, 0x62, 0x99, 0x18, 0xF8, 0x40, 0x60, 0x22, - 0x92, 0x55, 0xF6, 0xA1, 0x6D, 0x80, 0x69, 0xB9, 0x77, 0x40, 0xBA, 0xAC, - 0x3C, 0x31, 0x32, 0xAA, 0xE8, 0x09, 0x26, 0x64, 0x2B, 0xE7, 0x6D, 0x19, - 0x31, 0xF3, 0x88, 0xFF, 0x45, 0xF2, 0xA9, 0xD7, 0xBF, 0xDA, 0x50, 0x33, - 0xD7, 0x83, 0x55, 0x08, 0xCA, 0xFE, 0xF6, 0x3B, 0x2A, 0x5A, 0xC4, 0xBD, - 0x26, 0x35, 0xF5, 0x9D, 0xE8, 0xA8, 0xFE, 0x9C, 0x43, 0x0F, 0x2C, 0xFD, - 0x33, 0x81, 0x08, 0x11, 0x4D, 0xE6, 0x5B, 0xB1, 0x96, 0xE7, 0x3A, 0x83, - 0xCB, 0xEF, 0x18, 0xDE, 0xF8, 0x5B, 0x09, 0x4D, 0x61, 0x3D, 0xB5, 0xB7, - 0xE4, 0xC9, 0x73, 0xFE, 0x5C, 0xD3, 0x57, 0x4F, 0x46, 0x6F, 0x42, 0x56, - 0x85, 0xC1, 0x4A, 0x8A, 0xD8, 0x61, 0xA3, 0x15, 0x49, 0x66, 0xA6, 0x1C, - 0xC0, 0x1F, 0xB7, 0xA9, 0x88, 0x06, 0xA4, 0x2F, 0xE4, 0x9A, 0xCC, 0x38, - 0xE0, 0x90, 0x64, 0xB6, 0x0F, 0xE5, 0xAE, 0xB5, 0x87, 0x64, 0x1C, 0x42, - 0x5C, 0x11, 0x01, 0xB5, 0xC2, 0x90, 0x3D, 0xAB, 0x26, 0x4B, 0x2A, 0x67, - 0x9F, 0x5B, 0x5B, 0xE3, 0x21, 0xA0, 0xB9, 0x7D, 0x64, 0xD3, 0xF8, 0xB3, - 0x77, 0x91, 0x2D, 0x34, 0x78, 0x8E, 0xB8, 0x1D, 0x30, 0x4B, 0xE1, 0x31, - 0xFE, 0x3D, 0xE6, 0xAB, 0xDA, 0xA6, 0xB4, 0xDF, 0xB0, 0x67, 0x25, 0x57, - 0x4A, 0x30, 0x8F, 0x86, 0x58, 0x13, 0xE6, 0xEA, 0xEE, 0x91, 0x86, 0xD2, - 0x0D, 0xCD, 0x19, 0xDC, 0x26, 0x18, 0x86, 0x52, 0xD2, 0x77, 0x79, 0x31, - 0xDA, 0xF9, 0x9A, 0xCA, 0x7B, 0xBE, 0xF6, 0x96, 0x61, 0xAE, 0x32, 0xC8, - 0x68, 0x17, 0xFF, 0xB8, 0xF4, 0xF5, 0xE5, 0xA4, 0x20, 0xC9, 0x44, 0x8A, - 0xD6, 0x8D, 0xB0, 0x0D, 0x3D, 0x2B, 0x47, 0x4B, 0xA5, 0x49, 0x37, 0x11, - 0x18, 0x2C, 0x94, 0x37, 0xEB, 0x7D, 0xD6, 0x49, 0x59, 0xFD, 0x75, 0xC7, - 0x6C, 0x11, 0x83, 0xBD, 0x92, 0xF4, 0xA0, 0xFD, 0x5D, 0x2D, 0x24, 0x42, - 0x8D, 0x3E, 0x96, 0xDA, 0x4B, 0xCD, 0x85, 0xDA, 0xF4, 0x11, 0x27, 0x0F, - 0x5B, 0xE1, 0xB4, 0x62, 0x51, 0xC6, 0x04, 0x22, 0xCD, 0x8D, 0x3D, 0x26, - 0x59, 0xC9, 0xF3, 0xBF, 0xBD, 0x07, 0xEB, 0x3D, 0xDD, 0x41, 0x3A, 0xAE, - 0x35, 0xB6, 0x9C, 0x76, 0xE6, 0xE9, 0x5E, 0x98, 0xF6, 0x9F, 0x9B, 0x6D, - 0x9A, 0x0F, 0xF3, 0xA2, 0x5E, 0xD0, 0x37, 0x0F, 0xA7, 0xB9, 0xC1, 0xC2, - 0xFF, 0x26, 0x59, 0x51, 0xC6, 0x27, 0x15, 0x25, 0xFD, 0x8E, 0xA0, 0xAA, - 0x72, 0xD4, 0xA8, 0x13, 0x61, 0xE0, 0x4C, 0xD0, 0xD2, 0xCA, 0xA8, 0x85, - 0x98, 0x95, 0x26, 0x68, 0x7A, 0x1D, 0xBC, 0x6D, 0x87, 0xF8, 0x8C, 0xEC, - 0x31, 0xA7, 0x8E, 0x98, 0x1C, 0xEC, 0x51, 0xCA, 0xF7, 0x38, 0x5A, 0x03, - 0xF1, 0x7B, 0x84, 0x9D, 0x96, 0x75, 0x30, 0x96, 0x92, 0xDD, 0x4F, 0xCD, - 0xD8, 0x00, 0xA0, 0xAB, 0x7B, 0x52, 0x42, 0x2F, 0x0A, 0x9F, 0x28, 0x18, - 0x12, 0xD7, 0x47, 0xF5, 0x83, 0xB4, 0x27, 0xA6, 0x5D, 0x8C, 0xB1, 0xD7, - 0xC2, 0xB5, 0x3F, 0xCC, 0x31, 0xCA, 0x7C, 0xB5, 0xB5, 0x37, 0xAA, 0xCB, - 0xA5, 0x8A, 0x2D, 0x21, 0x72, 0x24, 0xCE, 0xD6, 0x05, 0xDA, 0x32, 0x2A, - 0xA9, 0x92, 0x57, 0x07, 0x24, 0x7C, 0x53, 0x92, 0xBA, 0x4A, 0x3D, 0xF8, - 0xA9, 0xCB, 0xEC, 0x7A, 0x34, 0x4A, 0xFD, 0x2E, 0x3D, 0x22, 0xA1, 0x8B, - 0xC4, 0x8B, 0x39, 0x8F, 0x11, 0x8E, 0x75, 0x85, 0xB3, 0x1C, 0xB3, 0x2E, - 0x5B, 0xF6, 0xF7, 0x03, 0x88, 0x11, 0x14, 0x7A, 0x42, 0xDA, 0x25, 0x0C, - 0xAD, 0x88, 0xE7, 0xC9, 0xE6, 0x90, 0x65, 0x13, 0x2B, 0x40, 0x20, 0xC3, - 0x03, 0xCC, 0x38, 0x71, 0x5C, 0x32, 0x54, 0xFE, 0x42, 0x2A, 0xC8, 0x4D, - 0xDB, 0x4F, 0x0F, 0x9D, 0x53, 0xEA, 0xBE, 0xA8, 0x84, 0x87, 0x63, 0x8F, - 0xC7, 0xC5, 0xC7, 0xD9, 0x41, 0xDF, 0x53, 0x72, 0x50, 0x61, 0x9A, 0x81, - 0x6B, 0x70, 0x6F, 0xE4, 0x98, 0xBB, 0x46, 0xEF, 0x24, 0xA6, 0xA0, 0xCB, - 0x49, 0x05, 0x13, 0xA6, 0xC2, 0x1F, 0x2D, 0x1A, 0x2B, 0xBD, 0xA9, 0x97, - 0xB4, 0xEC, 0x6C, 0x0C, 0x1C, 0xA1, 0x9E, 0xDB, 0x5E, 0x55, 0x95, 0xE0, - 0xE1, 0xC5, 0x4E, 0x97, 0x89, 0x69, 0xDA, 0xB6, 0x5C, 0xAA, 0xF2, 0x96, - 0x28, 0x7A, 0xCB, 0xA9, 0xCE, 0x46, 0x5E, 0x07, 0xFE, 0x73, 0x4F, 0x2C, - 0x46, 0xAF, 0xFB, 0x2F, 0xC5, 0xD1, 0xB6, 0xB2, 0x85, 0x65, 0x1C, 0x7F, - 0x72, 0xBC, 0xF9, 0x51, 0x1B, 0x02, 0xAE, 0x6A, 0x46, 0xB5, 0x39, 0x1A, - 0x8D, 0x34, 0x84, 0x40, 0xE5, 0x1B, 0x91, 0x11, 0xE9, 0x42, 0x44, 0x56, - 0x64, 0x01, 0xF5, 0xC0, 0x7D, 0x64, 0x37, 0x72, 0xA4, 0x7A, 0xE5, 0xD6, - 0x19, 0xA6, 0xDB, 0x78, 0x23, 0x47, 0x68, 0xE5, 0x8D, 0x7D, 0x8C, 0xE5, - 0x63, 0xF3, 0x3E, 0x07, 0xEE, 0x4E, 0x8D, 0xF1, 0x56, 0x37, 0xA4, 0x27, - 0xDC, 0x67, 0x45, 0x84, 0x41, 0x89, 0xD2, 0x77, 0x67, 0x3C, 0x76, 0x27, - 0x6B, 0x8B, 0xD2, 0x65, 0x6A, 0x65, 0x2B, 0xB1, 0xA6, 0x73, 0x3F, 0xD2, - 0xC6, 0x78, 0x5D, 0xF9, 0xDA, 0xBD, 0x8B, 0x9F, 0xC0, 0x5B, 0xF2, 0xF4, - 0xA6, 0x46, 0xF4, 0x5A, 0xCD, 0xDC, 0x40, 0x0E, 0x48, 0x28, 0xA2, 0x98, - 0x87, 0xE7, 0x4F, 0x46, 0xD4, 0x6E, 0xFB, 0x6F, 0x11, 0xC5, 0x85, 0xCF, - 0xDF, 0xA9, 0xBB, 0xE1, 0x61, 0x80, 0x41, 0xFC, 0x69, 0x8F, 0xD7, 0xDD, - 0xD9, 0x8B, 0x63, 0xE2, 0x60, 0x1A, 0x0A, 0xFF, 0x56, 0x85, 0x6C, 0x4C, - 0x0D, 0x19, 0x9E, 0xE1, 0xCB, 0xF3, 0xEB, 0x9C, 0xBF, 0x11, 0x4A, 0x0B, - 0x23, 0xFD, 0x88, 0x93, 0x1A, 0x8B, 0xA2, 0x68, 0xD2, 0x07, 0x90, 0x11, - 0xC6, 0x3D, 0xEF, 0x2C, 0x3C, 0x02, 0x41, 0x1F, 0x41, 0x93, 0x2B, 0x83, - 0xAB, 0x2D, 0x35, 0xA4, 0x6E, 0xD7, 0x36, 0x51, 0x09, 0x7C, 0x23, 0x4F, - 0xAD, 0xF8, 0x38, 0xF0, 0x1D, 0x98, 0x2E, 0xEA, 0x20, 0xAF, 0x10, 0x9B, - 0x03, 0x96, 0xE0, 0x68, 0xCB, 0x01, 0xC2, 0xAF, 0x4B, 0x70, 0xB0, 0x6F, - 0xB6, 0xBC, 0x71, 0xA8, 0x57, 0x32, 0x26, 0x98, 0x23, 0xAD, 0xC6, 0x07, - 0xE8, 0xDF, 0xB6, 0xC8, 0x83, 0xF6, 0x17, 0xFD, 0x4C, 0xDA, 0xB7, 0x1D, - 0xA4, 0x92, 0xCE, 0xAD, 0x4B, 0xB8, 0xD2, 0xBB, 0xC4, 0x2E, 0x9C, 0xE3, - 0x40, 0x31, 0xF1, 0xF8, 0x1A, 0xC7, 0x55, 0x99, 0x08, 0xAE, 0xFF, 0xD1, - 0x39, 0x74, 0x4F, 0x87, 0x6A, 0x26, 0xBC, 0x36, 0x5D, 0x2C, 0x25, 0x53, - 0x0B, 0x18, 0x15, 0x7F, 0xA3, 0x2A, 0x45, 0xC4, 0x9A, 0xE2, 0xEF, 0xDC, - 0xDC, 0xF1, 0x9D, 0xE9, 0x5E, 0xD9, 0xD5, 0x54, 0x89, 0x6D, 0x5A, 0xCE, - 0x8D, 0x22, 0x16, 0xF1, 0xD7, 0x36, 0xB9, 0x9A, 0xB0, 0xF4, 0xCD, 0xEF, - 0xE6, 0x0C, 0x3A, 0x5D, 0x09, 0x22, 0xF6, 0x45, 0xD7, 0x02, 0x55, 0x01, - 0x02, 0x7A, 0x4F, 0xBB, 0x22, 0x6A, 0x87, 0x66, 0x62, 0xD0, 0x1D, 0x54, - 0x72, 0xB2, 0xD8, 0x0A, 0x7E, 0x60, 0xC1, 0x1D, 0x68, 0xEA, 0xFB, 0x6A, - 0xE3, 0x5F, 0x97, 0xC5, 0xFD, 0xEB, 0x08, 0x2C, 0x50, 0x96, 0xB8, 0xC1, - 0x9D, 0x5E, 0x1E, 0x3E, 0x46, 0xA6, 0x49, 0x57, 0xC8, 0xBD, 0xB1, 0xD6, - 0xD5, 0x21, 0x2A, 0x03, 0x84, 0x65, 0x24, 0x11, 0xB0, 0xF0, 0x0F, 0xF4, - 0x04, 0x52, 0x43, 0xBA, 0xEA, 0x93, 0xBA, 0x9F, 0x34, 0x26, 0x1F, 0xD7, - 0x1F, 0x7B, 0xC0, 0x30, 0x01, 0x69, 0x68, 0x9B, 0x21, 0x13, 0xA5, 0xD4, - 0x87, 0x30, 0xDC, 0xEB, 0x35, 0x39, 0x76, 0x35, 0xB9, 0xE3, 0xDF, 0xCD, - 0xB5, 0xE5, 0x89, 0xEA, 0x54, 0x1F, 0x3E, 0xDB, 0x90, 0xCF, 0x5C, 0x4A, - 0x96, 0x97, 0x32, 0x3F, 0x6F, 0xB4, 0xE5, 0x28, 0xDF, 0xE4, 0xCA, 0xB1, - 0x1B, 0x78, 0x65, 0x2C, 0x99, 0x3D, 0x77, 0x32, 0x5F, 0x6C, 0x6D, 0xD3, - 0x53, 0x67, 0x15, 0x39, 0xFD, 0xE1, 0x2A, 0xB0, 0x48, 0x24, 0x4D, 0x36, - 0x4D, 0x90, 0x9F, 0xF3, 0x1D, 0x4F, 0x9D, 0x3B, 0xBE, 0x64, 0xFE, 0xF0, - 0xF2, 0xAE, 0x31, 0xB2, 0xBE, 0x35, 0x8E, 0x34, 0xD6, 0x56, 0xAB, 0xF2, - 0x45, 0xC4, 0x37, 0x65, 0xA0, 0x08, 0x66, 0x5D, 0x9F, 0x0D, 0x96, 0x0B, - 0x58, 0xC2, 0x18, 0x00, 0x43, 0xBA, 0xC4, 0xFE, 0xD3, 0x6C, 0x96, 0x78, - 0xAE, 0x10, 0x2D, 0x86, 0x4D, 0x8F, 0x87, 0x44, 0xCF, 0x8E, 0x1D, 0x23, - 0x00, 0x8D, 0x8A, 0x91, 0x28, 0xDE, 0x13, 0xF1, 0x2B, 0xBC, 0x75, 0x32, - 0xB3, 0x50, 0xDB, 0xD3, 0x5A, 0xA5, 0x2A, 0x28, 0x82, 0x70, 0x4B, 0xF9, - 0x77, 0x70, 0xC5, 0x5D, 0x4A, 0x52, 0x43, 0x4C, 0x1D, 0x6E, 0xB5, 0x6A, - 0x41, 0x65, 0xFF, 0xF2, 0x67, 0xC2, 0x86, 0x85, 0x0C, 0x95, 0x25, 0xAB, - 0x61, 0x3E, 0x79, 0x0A, 0x2F, 0x3F, 0xBB, 0x4A, 0xC7, 0x33, 0xEE, 0x2E, - 0x04, 0xD6, 0x44, 0xCE, 0x40, 0xB9, 0xFA, 0xF4, 0x8A, 0x7B, 0xA2, 0xE0, - 0x43, 0xFE, 0x80, 0x88, 0xA5, 0xB1, 0x47, 0x51, 0xFF, 0x48, 0xE4, 0x13, - 0xA1, 0x6D, 0x6D, 0x1E, 0x4F, 0x14, 0x5C, 0x32, 0x05, 0x73, 0x4E, 0x1B, - 0x9E, 0xB2, 0xEB, 0xF1, 0xC7, 0x42, 0x84, 0x3A, 0xAA, 0xE0, 0x6D, 0xEC, - 0x3E, 0x79, 0x60, 0x00, 0x36, 0x01, 0x2F, 0xBC, 0xB7, 0x82, 0x03, 0x6D, - 0x26, 0x6F, 0x28, 0x6E, 0x4C, 0xB7, 0xD7, 0x93, 0xCB, 0xF2, 0xFC, 0x58, - 0x2B, 0x3F, 0x5A, 0x2F, 0x88, 0x36, 0xCB, 0x7A, 0xEF, 0xF2, 0xC6, 0x63, - 0xC1, 0x60, 0x20, 0x71, 0x1F, 0xE4, 0xA6, 0x8A, 0x14, 0x16, 0x7D, 0x9F, - 0xD3, 0x83, 0x8D, 0x0C, 0x8D, 0xC4, 0x8A, 0x5D, 0x1F, 0xE2, 0x05, 0x07, - 0xC7, 0x1D, 0x2B, 0x4F, 0xAF, 0x20, 0x33, 0x60, 0x43, 0x6D, 0x60, 0x5F, - 0xEC, 0x57, 0x2F, 0xF5, 0x8A, 0xC4, 0xC7, 0x8E, 0x2B, 0x6B, 0xE8, 0xF0, - 0xA2, 0x4E, 0x66, 0xBA, 0x55, 0xEF, 0x67, 0x78, 0x20, 0x70, 0x1D, 0x57, - 0x25, 0x1C, 0xC8, 0x0C, 0x7F, 0x1D, 0x88, 0x4D, 0x28, 0xCE, 0x90, 0xDE, - 0xE5, 0xBE, 0x9B, 0xCC, 0x28, 0x38, 0x52, 0xA5, 0xB4, 0xE0, 0x86, 0x7F, - 0x73, 0x22, 0x75, 0x9D, 0xCA, 0x1F, 0xCB, 0x31, 0x35, 0xC7, 0x55, 0xA7, - 0xD2, 0xCD, 0x56, 0xC7, 0x22, 0xA6, 0xD3, 0x37, 0x02, 0x2E, 0xBE, 0x08, - 0x00, 0x26, 0x9A, 0x99, 0x62, 0x46, 0x1B, 0x25, 0xED, 0x6A, 0xD5, 0x61, - 0x20, 0xB9, 0xDD, 0xF7, 0xBE, 0xDD, 0x64, 0x5D, 0x61, 0xE5, 0x2F, 0x87, - 0x81, 0x47, 0x7E, 0xC2, 0x7D, 0x45, 0xB7, 0x2A, 0x0C, 0xB0, 0x0C, 0x5F, - 0x4C, 0x93, 0x02, 0xEE, 0x96, 0x55, 0xAF, 0x7C, 0x06, 0xA8, 0x74, 0x64, - 0x61, 0x6A, 0xA1, 0x41, 0x69, 0x55, 0x63, 0x15, 0x5B, 0x50, 0xA9, 0x8A, - 0xC5, 0x02, 0x3E, 0x5E, 0xFF, 0x4D, 0xD7, 0xE4, 0xE0, 0x88, 0xFE, 0xB5, - 0x53, 0x72, 0xA0, 0x52, 0xCE, 0x3C, 0x25, 0x98, 0xFF, 0x05, 0xFC, 0xE4, - 0x0C, 0x57, 0xE7, 0x4C, 0xD0, 0xEB, 0x1B, 0x4C, 0xEC, 0x89, 0xCE, 0x88, - 0x15, 0x6A, 0x9B, 0x7B, 0xDD, 0x0C, 0x53, 0x72, 0x0D, 0x0C, 0xD2, 0xE0, - 0x6E, 0x20, 0xF5, 0x30, 0xCE, 0xD2, 0xF6, 0x11, 0x0D, 0xCC, 0x85, 0x4C, - 0x9A, 0xD3, 0xBF, 0xF2, 0x39, 0xFF, 0x26, 0x4F, 0x4D, 0xAE, 0x25, 0x4A, - 0x72, 0xD9, 0x22, 0x8B, 0xE1, 0x07, 0xA9, 0xBD, 0x53, 0x45, 0x7C, 0xEB, - 0xFE, 0x56, 0xAE, 0x01, 0x7F, 0x12, 0x4E, 0x18, 0xE7, 0x96, 0xB1, 0x0E, - 0x9C, 0x89, 0xA8, 0xB4, 0x1C, 0xDA, 0x3E, 0xFE, 0x8C, 0x1C, 0xEF, 0xB4, - 0x50, 0xE5, 0x46, 0x1B, 0x56, 0xCE, 0x01, 0x53, 0xB2, 0x6D, 0xB0, 0xD0, - 0x8E, 0x08, 0x89, 0x2A, 0x5B, 0xC8, 0xFC, 0x9B, 0x6B, 0x4B, 0x6D, 0xDC, - 0x2E, 0x2E, 0x74, 0xAB, 0xE1, 0xAE, 0xA6, 0x74, 0x8F, 0x31, 0x74, 0x5F, - 0x34, 0x45, 0xE4, 0x88, 0xCE, 0x66, 0x24, 0xE9, 0x93, 0x68, 0x76, 0xD6, - 0xB9, 0x10, 0xA9, 0xBA, 0x6A, 0x3A, 0xCD, 0xB8, 0x95, 0x44, 0x7D, 0x75, - 0x13, 0x64, 0x7B, 0xD2, 0x29, 0xB9, 0x3A, 0x75, 0x98, 0x26, 0xFC, 0x2B, - 0x46, 0x8A, 0xFD, 0x5C, 0x2B, 0xB5, 0x6C, 0x48, 0x20, 0x5F, 0xAA, 0x09, - 0xAD, 0xBA, 0x7B, 0xE3, 0x13, 0x55, 0x3D, 0xBD, 0x43, 0xEA, 0xC7, 0xA7, - 0x3E, 0xDD, 0xF3, 0xEB, 0xBB, 0x7D, 0xFE, 0x2A, 0x9B, 0xC4, 0xFB, 0x44, - 0x1D, 0xD1, 0x72, 0x33, 0x88, 0x65, 0xFE, 0xE7, 0xD1, 0xD7, 0x55, 0xDC, - 0x2F, 0x17, 0xC0, 0x8A, 0xE2, 0xDA, 0x5E, 0xA4, 0x68, 0x9C, 0xA2, 0x5C, - 0xA0, 0xE7, 0x1F, 0x02, 0xFB, 0xC3, 0xEE, 0x63, 0xB7, 0xBD, 0x29, 0xEF, - 0xCB, 0xA5, 0x47, 0x5A, 0x79, 0x4D, 0x5E, 0x9D, 0x44, 0x5A, 0xF9, 0xC6, - 0xDE, 0x0A, 0x71, 0x58, 0xB6, 0xA0, 0x02, 0xE5, 0xAA, 0x62, 0x15, 0xF4, - 0x39, 0x28, 0x9A, 0xF8, 0x59, 0xF1, 0x92, 0x17, 0x45, 0x27, 0x6A, 0x1D, - 0x11, 0x3E, 0x08, 0xA2, 0xCD, 0x31, 0x0E, 0xEE, 0xD4, 0xFC, 0xF9, 0x3C, - 0x1F, 0x87, 0x00, 0xE2, 0x5F, 0xB8, 0x35, 0xBB, 0xC5, 0x97, 0x32, 0xCE, - 0x7F, 0x1D, 0xD6, 0x05, 0xEE, 0xD7, 0x0D, 0xB9, 0x3C, 0x6B, 0xAF, 0x23, - 0x0B, 0x86, 0x3C, 0x40, 0x66, 0xCD, 0x65, 0x8A, 0xF8, 0xEB, 0x6B, 0xAB, - 0x2F, 0x98, 0x6C, 0x40, 0x8E, 0x54, 0x90, 0xB5, 0x1C, 0x79, 0x7B, 0x83, - 0x12, 0xA4, 0x0B, 0x20, 0xD5, 0x95, 0x30, 0x2C, 0x8A, 0x6E, 0x94, 0xD2, - 0xAB, 0x78, 0xF5, 0x71, 0x38, 0x4F, 0xB2, 0x93, 0x50, 0xDB, 0x16, 0x94, - 0xC4, 0xA9, 0x7D, 0x9D, 0x2F, 0x48, 0x98, 0xEB, 0x74, 0xE2, 0xD7, 0x97, - 0x91, 0xBC, 0xF8, 0x90, 0xAF, 0x74, 0x71, 0x38, 0x94, 0xFE, 0xA6, 0xC7, - 0x89, 0x63, 0x0D, 0x9B, 0xF1, 0x81, 0x28, 0x4A, 0x75, 0x85, 0x53, 0x83, - 0x34, 0x99, 0xE6, 0xF4, 0xAA, 0xF4, 0xF0, 0x1D, 0x92, 0xBE, 0x12, 0x8E, - 0x20, 0xBF, 0xCA, 0x41, 0x30, 0x08, 0x9B, 0x47, 0xD0, 0x23, 0x45, 0x67, - 0x38, 0x2B, 0x0F, 0xD3, 0xBA, 0x59, 0xEB, 0x7C, 0x39, 0xCF, 0xA8, 0xB7, - 0xA9, 0xEF, 0xF4, 0xC7, 0xD9, 0x1B, 0x5B, 0xC4, 0xC3, 0xA3, 0x92, 0xA2, - 0xF9, 0x1F, 0xC1, 0x99, 0x57, 0xE6, 0xD8, 0x22, 0xF8, 0xA5, 0xC8, 0x4B, - 0xCE, 0xAD, 0xBD, 0x19, 0x71, 0xC3, 0x1A, 0xEB, 0x25, 0xFD, 0xA7, 0x7F, - 0xA8, 0x7A, 0xEC, 0x54, 0x0A, 0x97, 0x3E, 0x85, 0x29, 0xAF, 0x85, 0xDE, - 0x14, 0x10, 0x3C, 0xBD, 0x66, 0xBE, 0x59, 0xE4, 0x71, 0xD8, 0x7E, 0xEA, - 0xF6, 0x8A, 0x8F, 0xF1, 0x3A, 0x03, 0x41, 0x99, 0x27, 0x45, 0xB6, 0x05, - 0x2F, 0x6B, 0x11, 0x61, 0xB4, 0x40, 0x40, 0x3A, 0xD2, 0xE9, 0x90, 0xDD, - 0x0C, 0x19, 0x3B, 0x01, 0xF2, 0xA4, 0xF5, 0x3B, 0x9C, 0x18, 0x32, 0x26, - 0xCB, 0xDB, 0x20, 0x5B, 0xE2, 0x43, 0x70, 0xCB, 0x37, 0xA6, 0xEC, 0x34, - 0x85, 0x33, 0xD6, 0x8B, 0x1F, 0x5F, 0x10, 0xCC, 0x86, 0xAB, 0x04, 0x31, - 0x5D, 0x07, 0xD6, 0x7C, 0x5F, 0x71, 0x08, 0xAC, 0x3F, 0x08, 0xC6, 0xCF, - 0xAC, 0x50, 0xCF, 0xA2, 0xFC, 0xDB, 0x02, 0x01, 0xD5, 0x33, 0x9E, 0x57, - 0xDC, 0x88, 0xBC, 0x51, 0x71, 0x95, 0x9A, 0x86, 0x99, 0xBB, 0xFC, 0x5A, - 0x3C, 0xB8, 0xC0, 0xA5, 0x12, 0xA4, 0x26, 0x55, 0xE7, 0x8A, 0xD0, 0x6F, - 0x2C, 0x52, 0x21, 0xA4, 0x0A, 0xBE, 0xC9, 0xA7, 0x87, 0x4B, 0xBD, 0x47, - 0x44, 0xFA, 0x7A, 0xE5, 0xDF, 0x07, 0x54, 0xC8, 0xA3, 0xF3, 0x73, 0x28, - 0xE5, 0x52, 0x36, 0x04, 0x42, 0xAB, 0x9C, 0x6E, 0x80, 0x5B, 0x44, 0xF0, - 0xA7, 0xC6, 0x00, 0xC3, 0x69, 0x14, 0xE9, 0x01, 0xD2, 0xE4, 0x69, 0x7D, - 0x32, 0xAC, 0x78, 0x70, 0x76, 0x81, 0x9A, 0x19, 0x7D, 0x80, 0x82, 0xB5, - 0xCE, 0x11, 0xBD, 0xF1, 0x15, 0x36, 0x49, 0xB1, 0x84, 0xCB, 0x15, 0x46, - 0x87, 0xF4, 0x83, 0x3D, 0x82, 0x9A, 0x84, 0xB7, 0x86, 0x47, 0x06, 0x72, - 0xE9, 0xE5, 0xFE, 0x4C, 0x11, 0xAE, 0xD1, 0x0D, 0xA7, 0xBE, 0xFD, 0xE2, - 0xF7, 0xAD, 0xC2, 0x47, 0xA5, 0x72, 0x4A, 0x96, 0x38, 0xCC, 0x6B, 0xE7, - 0x94, 0xA3, 0x91, 0x6B, 0x3D, 0x20, 0x86, 0xA4, 0x70, 0x84, 0xDB, 0x35, - 0x78, 0xC9, 0x50, 0x89, 0x57, 0xE6, 0xB1, 0xA7, 0x60, 0xD7, 0x89, 0x13, - 0x8C, 0x04, 0xEC, 0x19, 0x40, 0x0C, 0xFB, 0x5D, 0x73, 0xAB, 0x2B, 0x58, - 0xEF, 0xD2, 0x9C, 0x2C, 0x8F, 0x11, 0x5F, 0x86, 0x43, 0xD3, 0x68, 0xE3, - 0x7C, 0xB6, 0x6B, 0xEF, 0x88, 0xC6, 0x64, 0x69, 0x32, 0x0C, 0x86, 0x30, - 0xCC, 0x25, 0x0B, 0x5A, 0x74, 0x64, 0x5C, 0xCC, 0xAC, 0xEF, 0x61, 0xFD, - 0x06, 0xEE, 0x95, 0xC6, 0xEB, 0xB8, 0xD1, 0x46, 0x7B, 0x50, 0xD1, 0x1D, - 0x82, 0x4C, 0xE5, 0xA2, 0xB2, 0xAC, 0x24, 0x49, 0xE0, 0xFB, 0x14, 0x29, - 0xC9, 0x39, 0x93, 0x9C, 0x35, 0x61, 0xD4, 0x29, 0xD3, 0x1A, 0x21, 0x6C, - 0xD4, 0x89, 0x84, 0x47, 0xF6, 0xE2, 0x00, 0x3A, 0x40, 0xB2, 0xC1, 0x39, - 0xFE, 0x79, 0x18, 0xC8, 0x5A, 0x41, 0x1C, 0xAD, 0x8A, 0xB6, 0x79, 0x3F, - 0x32, 0xFD, 0x8F, 0x3E, 0x57, 0x22, 0x5F, 0xDE, 0xE0, 0x90, 0x9B, 0xB7, - 0xF7, 0x80, 0xA2, 0x42, 0x33, 0x4E, 0x64, 0xD2, 0xB4, 0x25, 0x77, 0x62, - 0xA2, 0x48, 0x80, 0x06, 0x17, 0xBB, 0xC8, 0x04, 0x35, 0x94, 0x1A, 0xD7, - 0x64, 0xA4, 0xE6, 0xB6, 0xE6, 0x43, 0x30, 0x46, 0x78, 0xB6, 0x98, 0x1B, - 0x0F, 0x90, 0xE6, 0xF7, 0x9A, 0x6A, 0xEC, 0x96, 0x7F, 0x46, 0xD8, 0x1E, - 0x62, 0xA6, 0x56, 0x54, 0x63, 0x44, 0x62, 0x18, 0x75, 0x61, 0xB4, 0x11, - 0x0F, 0x6D, 0x5E, 0xE3, 0x45, 0xD4, 0x80, 0xC1, 0xAF, 0x98, 0xF6, 0x48, - 0x15, 0xDF, 0xD5, 0x3C, 0xD3, 0xE9, 0xD2, 0x17, 0x7E, 0x1A, 0x18, 0x3A, - 0xA1, 0xFF, 0xF0, 0x46, 0x9C, 0x48, 0xBA, 0x72, 0xFF, 0x21, 0x66, 0x63, - 0x8D, 0xB7, 0xA5, 0x17, 0x42, 0x4F, 0x2E, 0xCA, 0xEA, 0x8E, 0xD9, 0x6F, - 0xBD, 0x4B, 0x80, 0x4C, 0x73, 0x4F, 0x85, 0x3D, 0x0B, 0x80, 0x32, 0x1A, - 0xAD, 0x93, 0x83, 0x82, 0x0B, 0xA6, 0x5E, 0x76, 0x5B, 0x60, 0x51, 0x81, - 0x53, 0x9D, 0x82, 0x5F, 0x65, 0xAD, 0x93, 0x80, 0x81, 0x2C, 0x8A, 0x0B, - 0x7D, 0x58, 0x67, 0xE5, 0xAD, 0xB9, 0x94, 0xF7, 0x11, 0x58, 0xE9, 0x7D, - 0xE0, 0xC6, 0x92, 0xC9, 0x7D, 0x4C, 0xDC, 0x4C, 0x88, 0x22, 0x31, 0x68, - 0xC3, 0x37, 0xE3, 0x1E, 0xE5, 0xA4, 0x6B, 0x41, 0xEA, 0x9D, 0xE8, 0xFC, - 0xF1, 0xF3, 0x78, 0xF4, 0x54, 0x40, 0x53, 0x9D, 0x7D, 0x4C, 0x70, 0x56, - 0xBE, 0xB0, 0x74, 0x67, 0xAC, 0x7D, 0xE0, 0x4F, 0x67, 0x28, 0x71, 0xDD, - 0xCE, 0x78, 0xDB, 0xB5, 0xFF, 0x54, 0x22, 0xBD, 0x89, 0x74, 0x38, 0x14, - 0x1A, 0x10, 0x2C, 0xDF, 0x30, 0x24, 0xB0, 0xC1, 0x85, 0x09, 0x4D, 0xB5, - 0xE2, 0x02, 0x5E, 0x85, 0x9E, 0x6E, 0x6A, 0xB7, 0xE0, 0x6C, 0xF3, 0x91, - 0x42, 0xE7, 0x08, 0x07, 0x95, 0x00, 0xD9, 0x7F, 0x2C, 0xD0, 0xA1, 0x2A, - 0xB1, 0x52, 0x18, 0x62, 0x57, 0x51, 0xA0, 0xF2, 0xC9, 0x8B, 0xAA, 0x01, - 0x08, 0x74, 0xA6, 0x7C, 0x60, 0x3D, 0x3C, 0x4B, 0xED, 0x45, 0xFE, 0xCE, - 0x00, 0x9E, 0x6E, 0x99, 0xDA, 0x0B, 0xC6, 0xB6, 0xC5, 0xCF, 0xAA, 0x03, - 0xEE, 0x7F, 0x41, 0xAE, 0x83, 0xAB, 0x23, 0xAA, 0x67, 0x1E, 0x20, 0x42, - 0x55, 0x54, 0x95, 0xAE, 0xAE, 0x82, 0x2A, 0x3F, 0xAA, 0x14, 0x66, 0xF4, - 0xAB, 0x01, 0xAD, 0x5F, 0xA7, 0x76, 0xFA, 0x21, 0xF4, 0x82, 0x22, 0x67, - 0x8F, 0xDC, 0xA2, 0x1A, 0xBC, 0x01, 0x75, 0x8D, 0x66, 0x8C, 0xD5, 0x46, - 0x90, 0x4D, 0xD8, 0xC0, 0xBC, 0x0F, 0x61, 0xB2, 0xE9, 0xE2, 0xD0, 0x32, - 0x27, 0x4B, 0x39, 0x43, 0x50, 0xD0, 0xF7, 0xF2, 0x32, 0x24, 0xE8, 0x32, - 0x19, 0x31, 0x57, 0x04, 0x5B, 0xAB, 0x54, 0xC7, 0x44, 0x6B, 0x5F, 0x6C, - 0x14, 0xB2, 0x83, 0xA2, 0xEC, 0x5F, 0x04, 0x8A, 0x78, 0x0D, 0xF8, 0x8F, - 0x61, 0xFA, 0x32, 0xC9, 0xB4, 0x60, 0xCC, 0xCB, 0x35, 0x92, 0xB3, 0x23, - 0x29, 0x28, 0x4D, 0x48, 0x6C, 0x00, 0x9F, 0xF9, 0x8D, 0x26, 0x44, 0xC9, - 0x0B, 0xB2, 0x73, 0x94, 0xF3, 0x7A, 0x9C, 0x4E, 0x7E, 0xC3, 0xB7, 0x7E, - 0x87, 0x98, 0x18, 0x83, 0x35, 0x93, 0xDD, 0x35, 0xF7, 0xD1, 0x3D, 0xF1, - 0x40, 0x48, 0x89, 0xAC, 0xEE, 0x98, 0xE7, 0x5A, 0x77, 0xED, 0x3A, 0xED, - 0x5A, 0xE7, 0x38, 0x74, 0xF7, 0xD6, 0xB6, 0x40, 0x76, 0xAE, 0xBD, 0x99, - 0x93, 0x02, 0xB3, 0xFF, 0xDE, 0x14, 0x70, 0xC3, 0xBF, 0x77, 0x00, 0x4F, - 0xC6, 0x7E, 0x7A, 0x1E, 0x39, 0xD3, 0x00, 0xDC, 0xC2, 0x35, 0x01, 0x25, - 0x8C, 0x9C, 0x34, 0x79, 0xA0, 0x47, 0xD4, 0xD4, 0x3B, 0xFF, 0x89, 0x7D, - 0x79, 0x8B, 0xBF, 0x9A, 0x64, 0x4E, 0xB7, 0xE5, 0x79, 0x31, 0xB8, 0x45, - 0x03, 0xD0, 0xCC, 0xA6, 0xE5, 0x22, 0xBC, 0xF1, 0x40, 0x24, 0xBA, 0xF6, - 0x2B, 0xE0, 0x21, 0xE3, 0xA5, 0x4D, 0xBE, 0xBB, 0x45, 0x12, 0x5A, 0x10, - 0x1B, 0x28, 0xC2, 0xD6, 0x85, 0xBE, 0xBD, 0xD0, 0xDD, 0xA3, 0xA0, 0x7B, - 0x2F, 0x98, 0xE2, 0x9D, 0x62, 0xB1, 0xB6, 0xE2, 0x1E, 0x1D, 0x7E, 0x69, - 0x6F, 0x39, 0x92, 0xF2, 0x97, 0x3D, 0x02, 0xE1, 0x17, 0x25, 0x03, 0x63, - 0x20, 0x39, 0xEF, 0xBD, 0x56, 0xFD, 0x66, 0xD5, 0x40, 0x31, 0x9A, 0xA7, - 0x45, 0x00, 0xD0, 0x01, 0x60, 0x30, 0xA2, 0xD5, 0x6C, 0x5A, 0x56, 0x67, - 0x11, 0x57, 0xC8, 0x09, 0x9D, 0x96, 0xB0, 0xD1, 0x88, 0x9F, 0xE7, 0xE3, - 0xAC, 0xD0, 0x0C, 0x39, 0x13, 0xB8, 0xF5, 0xFA, 0xDB, 0xFE, 0x5C, 0x52, - 0x4A, 0x8D, 0xA2, 0x8C, 0xA8, 0x7E, 0xAB, 0xEC, 0x22, 0x7F, 0x23, 0x04, - 0x16, 0x0E, 0x8F, 0x99, 0xD7, 0x83, 0x13, 0xDF, 0x40, 0x3F, 0xB7, 0xF1, - 0xA9, 0x2A, 0x04, 0x62, 0xD3, 0xC1, 0x2F, 0x4B, 0x5D, 0xE8, 0xB8, 0x0E, - 0xD2, 0x46, 0xF3, 0x13, 0x92, 0x9A, 0x63, 0x03, 0x54, 0xEC, 0x9E, 0xD3, - 0x30, 0x00, 0x03, 0x8A, 0x77, 0x8B, 0xCD, 0x8C, 0x3D, 0x6B, 0x9E, 0xBB, - 0x72, 0x7B, 0xB8, 0x72, 0xB9, 0xCD, 0x98, 0x69, 0xFB, 0x20, 0xB8, 0xC5, - 0x3F, 0xA0, 0x9C, 0xD1, 0x29, 0x89, 0xE0, 0x55, 0xDF, 0x87, 0x5D, 0x90, - 0x28, 0x99, 0xE6, 0x39, 0x63, 0x6A, 0x19, 0xE8, 0x0D, 0x50, 0xB1, 0x2C, - 0xF3, 0x31, 0xC1, 0x68, 0x23, 0xE3, 0x70, 0xFF, 0x7E, 0x1F, 0x4D, 0xF5, - 0xC5, 0x90, 0xE9, 0x81, 0x17, 0x66, 0x17, 0x40, 0x44, 0xDF, 0x2F, 0x63, - 0x50, 0x82, 0x72, 0x87, 0x23, 0x93, 0x6B, 0x7E, 0xAD, 0x53, 0x6F, 0xD7, - 0x78, 0x31, 0x25, 0x9F, 0x9E, 0xC3, 0xC9, 0x42, 0x18, 0x40, 0xE9, 0x4C, - 0xFC, 0xAA, 0xC7, 0xF5, 0x51, 0x93, 0x24, 0xE2, 0xFD, 0x69, 0x72, 0x68, - 0xE1, 0x8D, 0x59, 0x42, 0x1A, 0x14, 0x48, 0x6A, 0xDD, 0x59, 0xC3, 0xA7, - 0x34, 0x73, 0x37, 0xAE, 0x82, 0xB9, 0xEB, 0x46, 0xD2, 0xB6, 0x31, 0xB4, - 0x3E, 0x82, 0x49, 0x4B, 0x0F, 0x13, 0xB5, 0x98, 0x47, 0x26, 0xD4, 0x45, - 0x8C, 0xE2, 0x04, 0xD4, 0xC6, 0x8B, 0x7B, 0x7D, 0x0E, 0x7D, 0x3C, 0x63, - 0x39, 0xD7, 0xDF, 0xB2, 0x68, 0x34, 0xD4, 0xB4, 0x70, 0x6A, 0x98, 0x15, - 0xDF, 0x16, 0xEF, 0xAF, 0x1E, 0xC5, 0x1F, 0x5C, 0x3D, 0x85, 0x74, 0xC6, - 0xCF, 0x44, 0x01, 0xD3, 0xC3, 0x61, 0x93, 0xBF, 0x23, 0x9F, 0x99, 0x44, - 0x54, 0x2A, 0x32, 0xB9, 0x75, 0x21, 0x1B, 0x2C, 0xE1, 0xFB, 0xFF, 0xAF, - 0x62, 0x6F, 0x86, 0x23, 0xFE, 0xCD, 0x68, 0x38, 0xB6, 0xAC, 0x49, 0xF6, - 0x4A, 0x0C, 0xA1, 0xF5, 0x19, 0xD1, 0x5A, 0xA8, 0xF0, 0xB4, 0x9B, 0x4E, - 0x0F, 0x6B, 0x65, 0x46, 0x44, 0x16, 0x2F, 0x7E, 0x6E, 0xDC, 0x5F, 0x5E, - 0x6F, 0x31, 0x99, 0x43, 0xA0, 0x27, 0xBD, 0x2A, 0x58, 0x6E, 0xB2, 0x82, - 0x29, 0x78, 0xED, 0xA6, 0x83, 0x4D, 0x1B, 0xCD, 0x9C, 0x0F, 0xE5, 0xE7, - 0x1A, 0xE4, 0x63, 0xD6, 0x6A, 0xD5, 0x03, 0x39, 0xB8, 0x48, 0x77, 0x80, - 0xF7, 0xF3, 0xFE, 0x64, 0x8B, 0x98, 0x72, 0xBE, 0x31, 0x28, 0xF0, 0x48, - 0x2A, 0x65, 0x37, 0xDA, 0xD1, 0x9A, 0x18, 0x37, 0xBB, 0x23, 0x59, 0xB3, - 0x24, 0x75, 0xF7, 0xF5, 0x79, 0x4E, 0xF0, 0xCA, 0x85, 0x13, 0x3C, 0x93, - 0xD0, 0xC6, 0xD9, 0xEA, 0xAE, 0xDF, 0x7E, 0xAC, 0xE4, 0xAB, 0x88, 0x0E, - 0x78, 0x80, 0x1D, 0x26, 0x2A, 0x5C, 0x95, 0x23, 0x6B, 0x70, 0x99, 0x6C, - 0x15, 0xC4, 0x86, 0xC0, 0x29, 0x9D, 0x55, 0xE4, 0xC1, 0x84, 0x37, 0x6B, - 0xA7, 0x26, 0x82, 0xCC, 0x9C, 0xDA, 0xEB, 0x54, 0x17, 0x67, 0xD3, 0x74, - 0x4B, 0x4F, 0x7C, 0x63, 0x4D, 0xE7, 0xE4, 0x93, 0x34, 0xDB, 0xDE, 0x9D, - 0x17, 0x28, 0x06, 0xEA, 0x09, 0x2A, 0x63, 0x8D, 0x1A, 0x32, 0xD8, 0xC9, - 0x66, 0xE2, 0x77, 0xE6, 0x19, 0x59, 0x44, 0x13, 0x2A, 0x7E, 0x4E, 0xF4, - 0x5A, 0xC7, 0xBB, 0x43, 0xDC, 0xC8, 0x6A, 0x56, 0x5D, 0x2F, 0x55, 0xFD, - 0x7E, 0x5A, 0x37, 0x1F, 0x99, 0xE3, 0xF8, 0xEC, 0x50, 0x0B, 0xE3, 0x94, - 0xC4, 0xF5, 0xCD, 0xC1, 0x03, 0x96, 0x76, 0xB3, 0x34, 0x01, 0xF9, 0x5C, - 0xE6, 0xC9, 0x99, 0x40, 0xB7, 0xCD, 0x5C, 0xF8, 0xE6, 0xF7, 0x3F, 0x7B, - 0x13, 0x19, 0x22, 0x02, 0xEF, 0x59, 0x45, 0x48, 0x61, 0x2B, 0xED, 0xCD, - 0xB5, 0x90, 0x2C, 0xD0, 0x49, 0xB4, 0x39, 0x76, 0x51, 0xBE, 0x51, 0xD7, - 0x3D, 0xD7, 0xDD, 0x55, 0x98, 0xC5, 0x0F, 0xBD, 0xF6, 0xE0, 0x96, 0xAA, - 0xB8, 0x19, 0x97, 0x7F, 0x35, 0x2C, 0x50, 0x69, 0xE8, 0xEE, 0x6A, 0x2F, - 0x00, 0x18, 0x65, 0x1B, 0xD6, 0xB8, 0x2A, 0xC3, 0x0A, 0x37, 0xEA, 0x7E, - 0x95, 0x8B, 0x60, 0xA5, 0x2E, 0xC0, 0x55, 0x24, 0x3B, 0x3D, 0xB1, 0x40, - 0x22, 0x8A, 0x56, 0xAB, 0x04, 0x6B, 0x31, 0x0E, 0xB6, 0xD7, 0x17, 0xF1, - 0xEA, 0x9B, 0x91, 0x0E, 0xEE, 0xCE, 0x0A, 0xFE, 0x37, 0x46, 0xAC, 0x15, - 0xF9, 0x60, 0xFF, 0x73, 0x54, 0xC9, 0xE1, 0x8C, 0x42, 0xFA, 0x39, 0x51, - 0xD4, 0x77, 0xAC, 0x62, 0xF3, 0x15, 0x8D, 0xC5, 0xEC, 0x46, 0x75, 0x97, - 0x50, 0xED, 0x10, 0xF5, 0xC7, 0x81, 0xEC, 0x1D, 0x7C, 0x40, 0x7B, 0x9F, - 0x4F, 0x37, 0xA4, 0xED, 0x3C, 0x35, 0x68, 0xDB, 0xDB, 0x7F, 0xF2, 0xF3, - 0xDC, 0x39, 0xA0, 0x40, 0xE8, 0x17, 0x9C, 0xD8, 0x26, 0x92, 0xF2, 0x57, - 0x5E, 0xE7, 0x56, 0xDA, 0x4F, 0x3F, 0x4C, 0xF4, 0x90, 0x4A, 0x89, 0x33, - 0x49, 0xBB, 0x99, 0xE9, 0xCA, 0x6F, 0x5F, 0x51, 0xAE, 0xFF, 0x83, 0x90, - 0x83, 0x53, 0xFF, 0x00, 0x7F, 0x2F, 0x84, 0xD7, 0xD8, 0xE8, 0xB1, 0xAB, - 0xF9, 0x56, 0x65, 0x93, 0xA7, 0xC2, 0xB4, 0xD7, 0x6B, 0xB4, 0xCF, 0x65, - 0xC8, 0xCA, 0x20, 0x15, 0x91, 0x74, 0x30, 0x4D, 0x72, 0x5B, 0xBD, 0x70, - 0xC5, 0x8B, 0xD3, 0xC7, 0xD4, 0x7B, 0xFB, 0xDF, 0x6B, 0x7B, 0x19, 0x6B, - 0x8B, 0x83, 0x47, 0x83, 0xC6, 0x44, 0xBA, 0xA8, 0xEA, 0xB8, 0x38, 0x67, - 0x6B, 0x58, 0xF3, 0x4E, 0xC8, 0xA8, 0xF4, 0xDD, 0x30, 0xDD, 0x59, 0x4D, - 0x55, 0x27, 0x1E, 0x14, 0x3A, 0x71, 0xD5, 0xFD, 0x59, 0x0B, 0xC2, 0x17, - 0x2F, 0x08, 0x53, 0x27, 0x07, 0xEE, 0xA0, 0xC6, 0xE9, 0xF8, 0x31, 0xDD, - 0x97, 0xC4, 0xAD, 0xC1, 0x9A, 0x60, 0x5C, 0xE4, 0x27, 0x0A, 0x03, 0x35, - 0x10, 0x9C, 0xE8, 0x70, 0xE3, 0xF3, 0xD8, 0xE6, 0x72, 0xA5, 0x31, 0xC6, - 0xFE, 0x46, 0xA8, 0x46, 0x6E, 0x74, 0x90, 0xD6, 0x8F, 0x27, 0x3C, 0x39, - 0x24, 0x5E, 0x31, 0x3C, 0xCC, 0x9A, 0xDD, 0xFE, 0xE9, 0xDA, 0x84, 0xE8, - 0xA1, 0xCC, 0x4B, 0xE1, 0x1B, 0xAA, 0x7D, 0xF6, 0x7C, 0xA8, 0x4C, 0xD5, - 0xFC, 0x3C, 0x4C, 0xFC, 0x62, 0x32, 0xAE, 0x5D, 0xBA, 0x65, 0xDC, 0xC3, - 0x1D, 0x8C, 0x9D, 0x0E, 0x2A, 0x46, 0x64, 0x8D, 0xCD, 0x6E, 0xBC, 0x86, - 0x16, 0x15, 0xA2, 0x26, 0xD1, 0x3E, 0x5F, 0x0A, 0x81, 0x86, 0x0F, 0xE8, - 0xA1, 0x28, 0xA3, 0x5F, 0xFF, 0xE4, 0x68, 0x2C, 0xE6, 0x30, 0x16, 0xB8, - 0x2E, 0xCD, 0x41, 0x52, 0xE3, 0x81, 0xFB, 0x1D, 0x1C, 0xA2, 0x17, 0xC3, - 0xF1, 0x24, 0x02, 0x94, 0xB9, 0x59, 0xEC, 0x4A, 0x6D, 0xE3, 0x27, 0x18, - 0x2C, 0xDA, 0x75, 0x17, 0x42, 0xAA, 0xF7, 0x61, 0x50, 0x29, 0x8C, 0x0A, - 0xCA, 0x8E, 0xCA, 0x59, 0x82, 0x1F, 0x1D, 0x0B, 0x00, 0x36, 0xE4, 0x78, - 0x25, 0x01, 0xF7, 0xFB, 0x0E, 0x65, 0x4E, 0x07, 0x5E, 0xD8, 0x23, 0xC6, - 0x49, 0x76, 0x06, 0x0B, 0xA5, 0xC2, 0x30, 0x55, 0x82, 0xF6, 0x60, 0x69, - 0xAE, 0x1B, 0x37, 0xC1, 0x02, 0xE8, 0x23, 0x9B, 0x15, 0x70, 0x7B, 0xF8, - 0xF9, 0x5E, 0x50, 0x69, 0x2F, 0x28, 0x7E, 0xDB, 0x35, 0x2F, 0x6C, 0x87, - 0xCC, 0xFD, 0x23, 0x1A, 0x3B, 0x32, 0x9C, 0xFC, 0xE2, 0x6A, 0x24, 0x2A, - 0x0C, 0x5E, 0x4D, 0x19, 0x7E, 0xDA, 0xCA, 0x95, 0x61, 0xE1, 0xC6, 0x60, - 0x4E, 0x62, 0xCB, 0x6A, 0x09, 0x83, 0x02, 0xEF, 0xC8, 0x7E, 0x36, 0x79, - 0x14, 0x24, 0x35, 0x01, 0xCF, 0xCB, 0x95, 0xF5, 0x08, 0x5E, 0x0A, 0x46, - 0xD2, 0x5B, 0x46, 0x43, 0x54, 0x3B, 0x4F, 0x96, 0xD5, 0x53, 0x81, 0x8D, - 0x0E, 0xDE, 0x7A, 0x94, 0xB8, 0x09, 0x11, 0x47, 0x8F, 0x38, 0xFE, 0x47, - 0x00, 0xFA, 0x76, 0x73, 0x96, 0xDA, 0x1C, 0x55, 0xE9, 0x9E, 0x73, 0x1E, - 0x75, 0xCF, 0x7A, 0x4D, 0xB0, 0x44, 0x6E, 0x2A, 0x6D, 0x98, 0x2B, 0x39, - 0xDC, 0xBA, 0x17, 0x50, 0x06, 0xEA, 0xA6, 0x62, 0x33, 0xD9, 0xD2, 0x66, - 0x78, 0x05, 0xE5, 0x52, 0x2B, 0x9F, 0x34, 0xAE, 0xDF, 0xE9, 0x9D, 0x44, - 0xBA, 0x93, 0xD8, 0x29, 0x02, 0xC6, 0xED, 0x5A, 0x59, 0x0A, 0xD0, 0xD9, - 0x6D, 0xBE, 0x97, 0x25, 0x5E, 0xDA, 0x95, 0x44, 0xCE, 0x73, 0xFD, 0xE5, - 0x98, 0xFD, 0x75, 0x38, 0x88, 0x1E, 0x42, 0x2A, 0x3F, 0x65, 0x96, 0x7C, - 0xF1, 0x86, 0x51, 0xBE, 0x51, 0xB1, 0x1E, 0xD1, 0x76, 0x64, 0x08, 0x85, - 0x49, 0xD7, 0xDD, 0xDD, 0xD4, 0xFA, 0xFE, 0xCA, 0x67, 0xDB, 0x36, 0x90, - 0x07, 0xEB, 0x86, 0xF6, 0x07, 0x7A, 0x21, 0xDB, 0xEE, 0x57, 0x24, 0x55, - 0x87, 0x2C, 0xD2, 0xA4, 0xEE, 0x45, 0x51, 0xE8, 0x05, 0xD1, 0x24, 0x08, - 0xD0, 0x3B, 0x7D, 0xCA, 0x0E, 0x5D, 0x03, 0x57, 0x44, 0xF7, 0x76, 0x0A, - 0xCD, 0x20, 0x9B, 0x93, 0xE0, 0x7D, 0x86, 0x3E, 0x48, 0x8D, 0xF0, 0x4C, - 0x28, 0x32, 0x77, 0xD8, 0xA3, 0x48, 0xA0, 0x93, 0x36, 0x05, 0xA0, 0x19, - 0xF2, 0x98, 0x6C, 0x17, 0x5E, 0x2C, 0x5E, 0xE4, 0xAD, 0x36, 0x96, 0x10, - 0x1B, 0xE5, 0xB7, 0x6B, 0x84, 0x0C, 0xED, 0xE3, 0xDC, 0x4B, 0xA4, 0xE7, - 0x0A, 0xDA, 0xD4, 0xE7, 0xD9, 0x1E, 0xEE, 0xF9, 0xD5, 0x06, 0xAF, 0x3F, - 0x51, 0x1D, 0x98, 0x42, 0x77, 0x11, 0x02, 0x57, 0x10, 0x3C, 0x5C, 0x98, - 0xDA, 0x7D, 0x64, 0x6B, 0xEC, 0x6B, 0x51, 0xFB, 0x77, 0x31, 0x79, 0xCE, - 0x9C, 0x58, 0x03, 0xEA, 0x2A, 0xDF, 0x92, 0x5D, 0xED, 0x0F, 0x20, 0xCC, - 0x0A, 0x70, 0x42, 0x94, 0x37, 0xFA, 0xDF, 0xA1, 0xAF, 0x70, 0x1B, 0x0E, - 0x80, 0x5B, 0x3E, 0xA9, 0xBF, 0x0F, 0x2B, 0x5D, 0xD8, 0x2F, 0xEF, 0xF9, - 0xF3, 0x53, 0xC5, 0xE7, 0x93, 0x87, 0x49, 0x54, 0xE4, 0x48, 0x74, 0xD2, - 0xDC, 0x2A, 0x9A, 0xE2, 0x18, 0x61, 0xD7, 0xAC, 0x4C, 0x1A, 0x2E, 0x72, - 0x83, 0x8D, 0xDA, 0xCE, 0x16, 0xD1, 0x3F, 0x90, 0x62, 0xCA, 0xA7, 0x06, - 0x22, 0x66, 0xF3, 0x67, 0xB0, 0xA3, 0xD4, 0xDD, 0xB1, 0xA4, 0xF3, 0x22, - 0xB3, 0x02, 0x4D, 0xD4, 0x2C, 0x84, 0xF5, 0x75, 0x87, 0x7D, 0x56, 0x04, - 0xC1, 0xC1, 0x62, 0x12, 0x59, 0xCF, 0x04, 0xA4, 0x20, 0x1F, 0xF5, 0xC5, - 0x8D, 0xB6, 0x88, 0x54, 0x61, 0xF3, 0x5A, 0x88, 0x3F, 0x6E, 0x5C, 0xE9, - 0x8B, 0x81, 0x56, 0xE6, 0x10, 0xC7, 0xED, 0x5F, 0x03, 0x67, 0x3E, 0x2E, - 0xBD, 0x6A, 0xC3, 0x4D, 0x33, 0xB7, 0xD4, 0x87, 0x46, 0x0B, 0x27, 0x86, - 0xFC, 0x65, 0x6F, 0xDF, 0x5A, 0x3D, 0x77, 0x49, 0x5A, 0xFB, 0x3A, 0x81, - 0xCE, 0xA1, 0xAC, 0x02, 0x18, 0x7E, 0x5B, 0x58, 0x75, 0xFB, 0x64, 0x7C, - 0xAA, 0x50, 0xE6, 0xE6, 0xA2, 0x7E, 0xFC, 0xC7, 0x67, 0x25, 0x5D, 0xE5, - 0x24, 0x28, 0x1F, 0x3B, 0xE6, 0x31, 0x6D, 0x43, 0x93, 0xD3, 0xC4, 0xB4, - 0x6F, 0x89, 0x02, 0x9B, 0x54, 0xC7, 0x6B, 0x97, 0xD3, 0x85, 0x06, 0xE1, - 0x4E, 0x15, 0xD2, 0xE8, 0xF3, 0x94, 0x37, 0x40, 0x30, 0x2C, 0xA0, 0x25, - 0x77, 0xA8, 0xC0, 0x23, 0x3F, 0x5F, 0x55, 0x71, 0x21, 0xD3, 0x33, 0x0B, - 0x7A, 0x2F, 0xDF, 0xB9, 0x39, 0x0D, 0xAE, 0x65, 0xCF, 0x53, 0x9C, 0x82, - 0xA2, 0xE5, 0x40, 0xF9, 0xF6, 0xDF, 0xBA, 0x33, 0x96, 0xF3, 0x55, 0x25, - 0x35, 0x9E, 0x5F, 0x9B, 0x25, 0x39, 0x94, 0x2F, 0x03, 0xA6, 0x28, 0xB0, - 0x6A, 0xFF, 0xFA, 0x14, 0xD6, 0xE7, 0x02, 0x07, 0x8F, 0x1A, 0xC4, 0xF0, - 0x51, 0x34, 0x3D, 0xD3, 0xDF, 0xCB, 0x57, 0xC3, 0xF5, 0x04, 0xE2, 0x4C, - 0x58, 0x18, 0xA5, 0xE2, 0x39, 0xB4, 0xA3, 0xE2, 0xE6, 0x25, 0xC5, 0xAC, - 0xFD, 0x75, 0xB2, 0x2B, 0x5B, 0x93, 0xC5, 0xFF, 0x56, 0xDB, 0xAA, 0x6E, - 0xCC, 0x18, 0x98, 0x90, 0x8A, 0x2C, 0x85, 0x84, 0xE7, 0xCF, 0xB0, 0xC5, - 0x18, 0x1F, 0x59, 0xC7, 0xA4, 0xCE, 0xAD, 0xB2, 0x04, 0x41, 0xBD, 0x56, - 0xD3, 0x12, 0xD5, 0x0A, 0x19, 0x83, 0x6D, 0xED, 0x87, 0xB0, 0xAB, 0xAE, - 0x8F, 0x79, 0xE5, 0x51, 0x30, 0xE9, 0x90, 0xBB, 0x91, 0x38, 0x2A, 0x17, - 0xDE, 0x3F, 0x53, 0x54, 0x34, 0x1E, 0x3F, 0x20, 0xE1, 0xA5, 0x17, 0xD5, - 0xCD, 0x64, 0x62, 0x1C, 0x60, 0xD2, 0xFC, 0xC1, 0x86, 0xA1, 0x55, 0x62, - 0x29, 0x58, 0x33, 0xD6, 0x1D, 0x3F, 0xD2, 0x70, 0xD6, 0x79, 0x09, 0x35, - 0x23, 0x6B, 0xEA, 0x8E, 0x80, 0xEB, 0x43, 0xAF, 0xBF, 0x86, 0xE8, 0xD6, - 0xBB, 0x1F, 0x75, 0x7A, 0x43, 0xAC, 0xC7, 0x84, 0x85, 0xAD, 0xE1, 0x72, - 0x4A, 0xF8, 0x97, 0xBE, 0xC6, 0x11, 0xCD, 0xAD, 0x99, 0xAE, 0xD4, 0x78, - 0x4F, 0xFA, 0x76, 0x5F, 0x95, 0xEF, 0x0E, 0x0C, 0x86, 0x2F, 0x45, 0x6F, - 0xB0, 0xED, 0x35, 0x87, 0x55, 0x79, 0x0B, 0x39, 0x0E, 0x13, 0x4A, 0x67, - 0x9A, 0xC5, 0x27, 0xC7, 0x5C, 0x99, 0x84, 0x75, 0xE6, 0xD1, 0x66, 0x2F, - 0x2F, 0x47, 0xA9, 0xE6, 0xDD, 0x9C, 0xCF, 0x10, 0x64, 0x33, 0xDE, 0xBB, - 0x35, 0x54, 0x9F, 0xBB, 0x40, 0x1B, 0xF1, 0x53, 0x48, 0xA1, 0x68, 0x42, - 0x39, 0x92, 0x52, 0xAE, 0xAC, 0xA5, 0x6E, 0xA4, 0x09, 0x96, 0x1A, 0xE8, - 0x88, 0x59, 0x38, 0xF3, 0xCA, 0x72, 0x52, 0xCC, 0xB0, 0x4F, 0x2B, 0x86, - 0xA9, 0xA9, 0x7D, 0xBF, 0x6F, 0x6A, 0x07, 0x89, 0x52, 0x99, 0xF8, 0x06, - 0xE5, 0x28, 0xC5, 0x74, 0xEC, 0x81, 0xE1, 0xE8, 0x25, 0x66, 0xD7, 0x7F, - 0xEA, 0x51, 0x56, 0xF7, 0xA8, 0x06, 0x44, 0xE9, 0xE0, 0x2F, 0x33, 0x19, - 0x4A, 0xD1, 0xCD, 0x92, 0x19, 0x2A, 0x1F, 0x03, 0x07, 0xD1, 0x46, 0x05, - 0x0D, 0x64, 0x23, 0xEC, 0x4D, 0x4E, 0x03, 0x2A, 0xED, 0xA5, 0xF4, 0x9F, - 0xC3, 0x93, 0xAB, 0xA3, 0xE2, 0x8C, 0x3F, 0xC4, 0xA5, 0xE1, 0x47, 0x0D, - 0x1A, 0x37, 0x52, 0x9D, 0x45, 0x96, 0xE2, 0x4D, 0x7F, 0xFD, 0x06, 0x28, - 0xE3, 0xEE, 0xE4, 0x57, 0x5D, 0x7B, 0x72, 0xA7, 0x8A, 0xCE, 0x77, 0x26, - 0xCF, 0x98, 0x06, 0x31, 0xB7, 0x28, 0x73, 0x1D, 0xA3, 0x4F, 0xB5, 0x01, - 0xE5, 0x4C, 0x14, 0xAD, 0xDB, 0x3F, 0xE6, 0xD1, 0xDA, 0xF7, 0x58, 0xBC, - 0x54, 0x76, 0x9E, 0x99, 0xD4, 0xFC, 0x7F, 0xE9, 0x6D, 0xF9, 0xAE, 0xC2, - 0x7B, 0x45, 0x32, 0x7D, 0x29, 0x22, 0xB2, 0xF3, 0x7D, 0x08, 0x37, 0x49, - 0x0C, 0xB7, 0xC4, 0x0E, 0xE7, 0x6C, 0x1E, 0xA7, 0xBE, 0x75, 0x4E, 0x4C, - 0x1A, 0xBD, 0x2F, 0xC6, 0x70, 0xD7, 0x38, 0xAE, 0x61, 0x3C, 0x01, 0xEB, - 0x07, 0x25, 0xEA, 0x45, 0x21, 0x06, 0x99, 0xBF, 0xD0, 0xAC, 0xD1, 0xDB, - 0x69, 0xF4, 0x64, 0x9F, 0xEB, 0xB3, 0xCF, 0xD8, 0xB1, 0x90, 0xAA, 0xAF, - 0x80, 0x50, 0xA0, 0x92, 0xBA, 0x7E, 0xA2, 0x7B, 0x2D, 0x13, 0x7E, 0x9F, - 0x4F, 0xFD, 0x0F, 0x40, 0xEC, 0x2D, 0x0E, 0x85, 0xB7, 0xDA, 0x01, 0x64, - 0x95, 0x95, 0x66, 0x91, 0x15, 0x3F, 0x09, 0x77, 0xAC, 0xBF, 0x0D, 0x6F, - 0x7C, 0xC1, 0xB7, 0x5F, 0xBD, 0xDA, 0xE9, 0xF7, 0xCC, 0x83, 0x17, 0x3B, - 0x14, 0x20, 0x81, 0xE5, 0x9A, 0xA5, 0x4A, 0x40, 0xD7, 0x4A, 0x7A, 0x94, - 0xE1, 0x6F, 0x3B, 0x27, 0xEA, 0x13, 0x7E, 0x5E, 0xE7, 0x4D, 0x96, 0xF1, - 0x47, 0x8F, 0xD4, 0x79, 0x3D, 0x98, 0xD7, 0xCD, 0x3C, 0x35, 0x3A, 0x3F, - 0x54, 0x3A, 0x48, 0x73, 0x66, 0xC3, 0xFD, 0x11, 0x87, 0x76, 0x0C, 0xF0, - 0xC5, 0x08, 0x97, 0xA6, 0xC5, 0x88, 0x3F, 0x4F, 0xC7, 0x32, 0x72, 0x5C, - 0xD4, 0x17, 0x8D, 0x45, 0x91, 0x62, 0xB2, 0xC3, 0x4A, 0xA4, 0x58, 0x88, - 0x5C, 0x9C, 0xB5, 0x72, 0xFE, 0xE9, 0xB7, 0x73, 0x55, 0x7B, 0xD5, 0x91, - 0x66, 0x02, 0x4C, 0xF7, 0x11, 0x77, 0x9D, 0x68, 0x4E, 0x1A, 0xC5, 0x6B, - 0xB9, 0x0A, 0xC3, 0x7F, 0xB0, 0x48, 0x87, 0xC4, 0xC9, 0x29, 0x73, 0x1A, - 0x25, 0xDA, 0x46, 0x3E, 0x10, 0x02, 0x9A, 0xCE, 0x23, 0xD9, 0x77, 0xC6, - 0x0D, 0xA3, 0xD5, 0xF8, 0x6B, 0xE2, 0x10, 0x90, 0x01, 0xE7, 0xF7, 0xAF, - 0x35, 0x59, 0x8D, 0x1D, 0xA7, 0x3B, 0xD2, 0x5A, 0x33, 0x33, 0xAF, 0xB0, - 0xAC, 0xD1, 0x2A, 0x43, 0x79, 0x13, 0x5C, 0x2A, 0x55, 0x37, 0x52, 0xA1, - 0x69, 0x17, 0x7F, 0xE9, 0x7C, 0xD7, 0x6D, 0x43, 0x57, 0xC3, 0x1B, 0x2E, - 0x5D, 0xA0, 0x5B, 0x3D, 0x75, 0x4E, 0xF4, 0xA1, 0x24, 0xDE, 0x50, 0x18, - 0x90, 0xB9, 0x89, 0xF1, 0x47, 0x4C, 0x61, 0xDB, 0xD8, 0xF0, 0x66, 0xD6, - 0x1F, 0xB3, 0x9F, 0x91, 0x4D, 0x91, 0xFD, 0x6E, 0xB9, 0x4B, 0x47, 0xC9, - 0xF6, 0x48, 0x07, 0xFB, 0xC6, 0x64, 0x48, 0x33, 0x5F, 0x92, 0x19, 0x22, - 0xB7, 0x69, 0xE2, 0x9D, 0x69, 0x02, 0xE7, 0x47, 0x97, 0xAC, 0x52, 0xAA, - 0xB6, 0x50, 0xC7, 0x9B, 0x16, 0x29, 0x15, 0x1F, 0x12, 0x46, 0xE0, 0xC0, - 0x3F, 0xA9, 0xB0, 0x30, 0x47, 0xE7, 0x6F, 0x73, 0x62, 0xB0, 0xD6, 0x50, - 0x20, 0x40, 0x47, 0x4C, 0x5D, 0x5C, 0xA1, 0xBA, 0x05, 0x8E, 0x06, 0x22, - 0xEA, 0xDF, 0x4C, 0x52, 0xFE, 0x21, 0x72, 0x6B, 0xD4, 0xB1, 0xEF, 0x38, - 0x74, 0xF5, 0xB3, 0x4D, 0x38, 0x91, 0x5F, 0x21, 0x74, 0x4B, 0x18, 0x27, - 0xBD, 0x70, 0x4A, 0x6A, 0xBD, 0x62, 0x2A, 0xEE, 0xCE, 0xAE, 0x6B, 0x23, - 0xA2, 0x97, 0x7E, 0x06, 0x24, 0xAE, 0x09, 0xD6, 0xC3, 0xEE, 0x10, 0x6D, - 0x8D, 0x04, 0xF2, 0xAE, 0x09, 0x10, 0xB0, 0x54, 0xD0, 0x1C, 0x84, 0x55, - 0xCF, 0xED, 0xFD, 0xB8, 0xDE, 0xF5, 0xA4, 0x5B, 0xFA, 0x7D, 0x7C, 0xAC, - 0xC0, 0x85, 0x48, 0xB2, 0x05, 0x45, 0x05, 0x36, 0xDD, 0x9A, 0xD9, 0x43, - 0x75, 0x94, 0xAF, 0xD5, 0xDF, 0x70, 0xE4, 0x7D, 0x37, 0x49, 0x0E, 0xE6, - 0xD1, 0xC2, 0x1A, 0xBD, 0xCD, 0xC6, 0xD8, 0xC5, 0xAA, 0xD8, 0x90, 0x6E, - 0xD7, 0x5D, 0xA4, 0x6B, 0x19, 0xB1, 0x7A, 0x18, 0xF1, 0x29, 0x4D, 0x20, - 0xF7, 0x7A, 0x7F, 0x7C, 0xE6, 0x8A, 0x54, 0x05, 0xB7, 0xA0, 0xD9, 0x32, - 0xDB, 0x53, 0xF6, 0x48, 0x65, 0x89, 0x86, 0x5B, 0x85, 0x7F, 0x11, 0x61, - 0x0A, 0x99, 0xBE, 0x01, 0x56, 0xA3, 0xA7, 0x3A, 0xE6, 0xAB, 0xDF, 0x6B, - 0xB4, 0x11, 0x24, 0xFC, 0x36, 0x30, 0x8C, 0x85, 0x06, 0xFB, 0x0C, 0xB9, - 0xB2, 0x50, 0x51, 0xF8, 0xDD, 0x3B, 0xB3, 0xC7, 0x4E, 0x7A, 0x4A, 0x8E, - 0x42, 0x01, 0xCB, 0xA9, 0xE5, 0x21, 0xD5, 0xDF, 0x8E, 0x59, 0x53, 0x82, - 0xA8, 0xA0, 0x25, 0x9F, 0xCE, 0x99, 0x17, 0x9F, 0xC6, 0xD7, 0xDB, 0x67, - 0xA7, 0x72, 0xC8, 0x22, 0x43, 0x32, 0x8E, 0x75, 0xE7, 0x29, 0xAC, 0x7A, - 0x0A, 0x95, 0xC3, 0x32, 0xA9, 0x56, 0xE6, 0xD7, 0xFE, 0x29, 0xC1, 0x5C, - 0x02, 0xB6, 0xD7, 0x16, 0x06, 0xC7, 0x86, 0x33, 0x68, 0x41, 0x64, 0xAE, - 0x1D, 0xD6, 0xEC, 0x9F, 0x4D, 0x2A, 0x79, 0x01, 0xDB, 0x48, 0x52, 0xB7, - 0x62, 0x36, 0x2B, 0x47, 0x2C, 0x0C, 0x9F, 0x10, 0xB0, 0x16, 0x34, 0x13, - 0xAA, 0xF8, 0x18, 0xC5, 0xAA, 0xAF, 0x57, 0x03, 0xC9, 0x48, 0xE4, 0x75, - 0x94, 0xCB, 0xDA, 0xC2, 0xDF, 0xDE, 0x92, 0x23, 0x1E, 0x07, 0xF8, 0x04, - 0xFC, 0x90, 0x34, 0xCE, 0xC3, 0x9C, 0x87, 0xBF, 0xA6, 0x45, 0x1B, 0xFC, - 0x73, 0x2B, 0xF8, 0x4E, 0x96, 0x82, 0xDA, 0xE8, 0x98, 0x87, 0x0D, 0x37, - 0xCD, 0xD1, 0x3E, 0x31, 0x15, 0x72, 0x87, 0x3B, 0x67, 0xAF, 0x5D, 0x0B, - 0x88, 0xFF, 0x44, 0xC1, 0xAB, 0xD1, 0x1E, 0x5F, 0xE6, 0x8B, 0xAD, 0x0F, - 0x95, 0xFC, 0x9F, 0x8F, 0x91, 0xED, 0x36, 0xE2, 0xD6, 0x2E, 0xC3, 0x2D, - 0x9E, 0x80, 0x6A, 0x78, 0x4A, 0xCA, 0x04, 0xCD, 0x64, 0x73, 0x7A, 0x81, - 0x2D, 0x45, 0x53, 0xC8, 0xED, 0x68, 0x74, 0x36, 0x85, 0x83, 0xD9, 0x6F, - 0x8C, 0xAF, 0xEC, 0xE5, 0xC1, 0xF1, 0x65, 0x0C, 0x45, 0xB4, 0xE7, 0xD1, - 0xF8, 0x3C, 0xAA, 0xF3, 0x1E, 0xC7, 0x99, 0x78, 0x13, 0xC9, 0x55, 0x2B, - 0xA8, 0x5C, 0x24, 0xE2, 0xDF, 0x43, 0x46, 0x09, 0xAD, 0xAB, 0x1D, 0xED, - 0xAA, 0xE0, 0xE6, 0x09, 0xE2, 0x52, 0xE0, 0x5E, 0x78, 0xF8, 0x26, 0x88, - 0x66, 0xB9, 0x98, 0x68, 0x52, 0x7A, 0xB4, 0xDF, 0x34, 0xAA, 0xF6, 0x1A, - 0x4C, 0x3D, 0x36, 0x8D, 0xB7, 0x05, 0x5B, 0x0B, 0x00, 0xF8, 0x3B, 0xDD, - 0x95, 0xB7, 0x47, 0x3A, 0xB0, 0x5A, 0x0A, 0xA8, 0x85, 0x17, 0xCB, 0x4E, - 0x92, 0x47, 0x72, 0x92, 0x73, 0x6A, 0xAB, 0xB5, 0x7D, 0x99, 0xBC, 0x8B, - 0xAC, 0x1B, 0xE8, 0x1A, 0xE6, 0x32, 0x11, 0x79, 0x2C, 0x6B, 0x88, 0x56, - 0x70, 0x41, 0xED, 0xC3, 0x7E, 0x0A, 0xA8, 0xDF, 0xCA, 0xA8, 0xD4, 0x3E, - 0x1A, 0xE0, 0x9E, 0x6D, 0x7C, 0xBD, 0x32, 0xB1, 0x7F, 0x7D, 0x32, 0x18, - 0x4D, 0x18, 0x5E, 0xF3, 0x19, 0x30, 0xCA, 0x8C, 0x66, 0xB5, 0x77, 0x57, - 0x5B, 0x98, 0x8F, 0x6D, 0x6B, 0x2D, 0x8D, 0xC4, 0x0B, 0x76, 0xE0, 0x37, - 0x42, 0x02, 0xC4, 0x61, 0xFE, 0x43, 0x5F, 0x41, 0xA7, 0x40, 0x64, 0x45, - 0xD6, 0x09, 0x99, 0x3F, 0x95, 0x73, 0x0D, 0x9F, 0xC4, 0xBE, 0x22, 0x2A, - 0xE5, 0x4C, 0xAD, 0x32, 0xC2, 0xF3, 0x49, 0xC4, 0xCF, 0x9C, 0xD1, 0x63, - 0x3E, 0xBA, 0xD3, 0x9B, 0x24, 0x2F, 0x52, 0xF3, 0xBA, 0x21, 0x2E, 0xEC, - 0xDF, 0x8D, 0xAD, 0x3F, 0xF3, 0xE1, 0x23, 0x8C, 0x0D, 0x76, 0xDD, 0xCB, - 0x36, 0xB9, 0x7A, 0x13, 0x78, 0xB2, 0x6D, 0xDB, 0x16, 0xAD, 0x2A, 0x94, - 0xAC, 0xF9, 0x86, 0x8B, 0x2D, 0x75, 0x33, 0x86, 0x43, 0x18, 0xCF, 0x65, - 0x4F, 0x08, 0x22, 0x88, 0x6E, 0x38, 0xBF, 0xF7, 0x12, 0x3F, 0x8A, 0xC3, - 0x49, 0xA0, 0xC6, 0x03, 0xAB, 0x1C, 0xD5, 0x3D, 0xA2, 0x43, 0xFF, 0x93, - 0xD4, 0x80, 0xDA, 0xDC, 0x77, 0x6D, 0xF8, 0xE1, 0xD3, 0x88, 0xA4, 0xCF, - 0x82, 0xE0, 0x08, 0xB2, 0x6E, 0x98, 0xBA, 0x6C, 0x0A, 0x84, 0xA0, 0x94, - 0x51, 0xFE, 0x17, 0x96, 0xF1, 0xBC, 0xD0, 0xFB, 0x6B, 0x50, 0x13, 0xA6, - 0x8E, 0x42, 0xFA, 0x01, 0x8C, 0xF4, 0x04, 0x02, 0xB1, 0xA8, 0x53, 0x5D, - 0x9B, 0x15, 0x48, 0xC3, 0x81, 0xCB, 0xAF, 0x4B, 0x4E, 0x61, 0xB6, 0x86, - 0x5C, 0xB1, 0x83, 0x44, 0x5C, 0xB9, 0x3F, 0x31, 0x84, 0xEF, 0x75, 0x20, - 0x66, 0x4C, 0x77, 0x66, 0x73, 0x04, 0x45, 0xB8, 0xE7, 0xBD, 0x14, 0xF9, - 0x93, 0xC7, 0x17, 0x60, 0xE5, 0x63, 0xAE, 0x6A, 0xD6, 0x99, 0xCD, 0x10, - 0x4F, 0x6B, 0xC1, 0x44, 0x63, 0x37, 0x79, 0x9C, 0x9C, 0xAA, 0xBC, 0x64, - 0x19, 0x61, 0xB5, 0xC1, 0x52, 0x09, 0x6E, 0x6B, 0x6B, 0x90, 0x8B, 0xA6, - 0x23, 0xDC, 0xE4, 0xE1, 0xB4, 0x82, 0x47, 0x11, 0x86, 0x9B, 0x9F, 0xE0, - 0x24, 0xC0, 0x19, 0xAE, 0x7D, 0x9A, 0x8C, 0x49, 0x6C, 0x42, 0x6D, 0x4E, - 0x1F, 0xC7, 0x66, 0x20, 0x19, 0xCA, 0xA0, 0xF0, 0x44, 0x1A, 0x61, 0x1E, - 0x67, 0x58, 0x4B, 0xA4, 0x15, 0x8F, 0x26, 0x2C, 0xAC, 0xE8, 0xBA, 0x1D, - 0x33, 0x77, 0x22, 0x83, 0xBB, 0xE1, 0x18, 0xBD, 0x45, 0x1A, 0xB4, 0x9F, - 0x4F, 0x1F, 0x80, 0xE8, 0x99, 0x14, 0xB2, 0x1C, 0x1E, 0x4E, 0xBB, 0x04, - 0xD6, 0x57, 0x50, 0x6F, 0x79, 0x60, 0xAA, 0xC1, 0xFD, 0x5D, 0xC7, 0x72, - 0xA7, 0xBC, 0xD0, 0x29, 0x29, 0x32, 0xD9, 0xDF, 0x9D, 0xF4, 0xC6, 0xF6, - 0x54, 0x67, 0xF4, 0x16, 0x3C, 0xB7, 0xA9, 0x06, 0x9D, 0xDC, 0xD9, 0x69, - 0x4C, 0xD7, 0xC2, 0x8B, 0xF7, 0x7E, 0xAD, 0x7E, 0xD8, 0xC7, 0x23, 0x90, - 0x1F, 0xD6, 0xC4, 0xD3, 0xBB, 0xD4, 0x57, 0x35, 0xF6, 0xD3, 0x52, 0x32, - 0x18, 0x20, 0xEC, 0x33, 0x97, 0x01, 0xB5, 0x91, 0x7C, 0xCF, 0xB4, 0x6B, - 0x55, 0x0C, 0x5C, 0x73, 0xE9, 0x8D, 0x9E, 0xDD, 0xCF, 0xF8, 0xDF, 0xB8, - 0x21, 0x13, 0x62, 0x2B, 0x66, 0x6E, 0x76, 0x03, 0x04, 0x75, 0xAA, 0x56, - 0xDF, 0x91, 0x5F, 0x26, 0x9B, 0xF9, 0x72, 0x25, 0x81, 0x63, 0x5B, 0xFE, - 0xE4, 0x2A, 0x8E, 0x14, 0x03, 0xFD, 0x8D, 0x23, 0x35, 0x82, 0x64, 0x70, - 0x30, 0x91, 0x3F, 0xBB, 0x19, 0x2C, 0x04, 0x9E, 0x44, 0xDC, 0x79, 0x9A, - 0x7B, 0x69, 0x52, 0x08, 0xC3, 0x9E, 0x2A, 0xB9, 0x02, 0xD4, 0x19, 0xF2, - 0x3A, 0x4A, 0x4C, 0x47, 0x08, 0x38, 0x4B, 0x2E, 0x75, 0xF8, 0x86, 0x7C, - 0x09, 0x72, 0xEC, 0xB2, 0xAC, 0x9C, 0xEC, 0x42, 0x5C, 0x61, 0x7F, 0xD8, - 0x24, 0x05, 0x88, 0x55, 0x3D, 0xB7, 0x79, 0x90, 0x73, 0x7D, 0x0A, 0x10, - 0xF5, 0xB3, 0x5C, 0xC8, 0x8D, 0x5E, 0x59, 0x51, 0xD2, 0xDB, 0x4E, 0x5D, - 0x4B, 0x39, 0x16, 0x14, 0xF2, 0xA2, 0x75, 0x28, 0x66, 0x45, 0xBF, 0x73, - 0x60, 0xD3, 0xFD, 0x53, 0xDA, 0x8D, 0x5C, 0x94, 0x2E, 0x91, 0x14, 0xE2, - 0xAA, 0xEF, 0x93, 0x82, 0x68, 0x0A, 0x69, 0x1F, 0xE2, 0x10, 0x26, 0xEB, - 0x69, 0xD6, 0x35, 0x9B, 0x62, 0x05, 0x97, 0x7D, 0x04, 0x6D, 0x6C, 0x22, - 0x3E, 0x7C, 0xAB, 0x13, 0xC0, 0xEF, 0x4C, 0xE1, 0x96, 0x5B, 0xB7, 0xA3, - 0x80, 0xC2, 0x89, 0x1A, 0x2F, 0x47, 0x0B, 0xD9, 0x76, 0x6C, 0xD3, 0x03, - 0x08, 0xA3, 0x8E, 0x9B, 0xAE, 0xA1, 0x55, 0x73, 0x7B, 0x9F, 0xAE, 0x40, - 0xB6, 0x0C, 0x0A, 0x8A, 0x83, 0x7A, 0x88, 0x6B, 0x3E, 0xD7, 0x98, 0x7F, - 0x43, 0x40, 0x01, 0xE4, 0x3A, 0xFF, 0x26, 0xEC, 0x91, 0x68, 0x71, 0xD8, - 0x84, 0x18, 0xC1, 0xD5, 0xAB, 0xA2, 0xBB, 0xCC, 0xEA, 0x43, 0x79, 0x73, - 0x97, 0x4C, 0x9B, 0x03, 0xD0, 0x10, 0x7C, 0x09, 0x84, 0x32, 0x04, 0x0A, - 0x35, 0xA6, 0x29, 0xAB, 0x6E, 0x26, 0x9A, 0xCF, 0x49, 0x8F, 0x15, 0xC2, - 0xAC, 0x56, 0xD6, 0x82, 0xB9, 0x3C, 0xD2, 0xDD, 0x68, 0xB7, 0x43, 0xBC, - 0xBC, 0xFD, 0xA4, 0xC5, 0xCE, 0x5C, 0xC0, 0xD3, 0x93, 0xD6, 0x40, 0xAF, - 0xDA, 0x23, 0x55, 0x83, 0x3A, 0xE6, 0x6C, 0x64, 0xA0, 0x37, 0xC0, 0x47, - 0xBA, 0xAA, 0x62, 0x79, 0x56, 0x85, 0x55, 0xC1, 0xEA, 0x80, 0xD5, 0x3C, - 0xBB, 0x9F, 0x89, 0xEA, 0x45, 0xFC, 0x59, 0x6C, 0x26, 0xF0, 0x07, 0x72, - 0x31, 0xCC, 0x5F, 0x8F, 0xA5, 0x61, 0x20, 0x16, 0x55, 0x4D, 0x87, 0x72, - 0x13, 0xE6, 0xA9, 0xB3, 0xAF, 0xBD, 0x42, 0x08, 0x39, 0xD5, 0xCF, 0x81, - 0xCA, 0x5E, 0xD0, 0xAB, 0x77, 0xB0, 0x05, 0x7E, 0x73, 0x87, 0xFE, 0xF4, - 0xA7, 0x7F, 0x00, 0xBE, 0xF9, 0x67, 0x83, 0x64, 0x61, 0x19, 0x4F, 0x23, - 0x21, 0xD9, 0x37, 0xB7, 0x54, 0xD3, 0x2F, 0x0C, 0x39, 0xD2, 0xA4, 0x78, - 0xFD, 0x3C, 0x9F, 0x5C, 0xC5, 0x16, 0x55, 0x9B, 0xBB, 0x96, 0x72, 0x13, - 0x1D, 0xCC, 0xAF, 0xB4, 0xC1, 0xEB, 0x7D, 0xF9, 0xA1, 0x37, 0x93, 0x13, - 0xC3, 0xDB, 0x58, 0xF8, 0x7C, 0xFB, 0x2E, 0x91, 0x7B, 0x6D, 0x21, 0xE2, - 0xCE, 0xB1, 0xAF, 0x8A, 0x55, 0x25, 0x5A, 0x08, 0x35, 0xAD, 0xF6, 0x1E, - 0x54, 0x56, 0xB9, 0x52, 0xA8, 0x9F, 0x9F, 0x06, 0x9B, 0x30, 0x7B, 0x5F, - 0x25, 0x13, 0x7C, 0xD4, 0xA7, 0x56, 0xE3, 0x48, 0x55, 0x40, 0xB8, 0x3E, - 0x11, 0x7B, 0x81, 0x89, 0x2E, 0x40, 0x76, 0x1D, 0x4C, 0x30, 0xCF, 0xBE, - 0xA6, 0x66, 0x25, 0x69, 0x9B, 0xE7, 0x85, 0x36, 0x71, 0x45, 0xD4, 0x54, - 0x24, 0x3B, 0x2D, 0x16, 0x9B, 0xD6, 0xE6, 0x91, 0x13, 0x53, 0x6E, 0x56, - 0x21, 0xB6, 0x3C, 0x12, 0x23, 0x20, 0xC9, 0xB7, 0xDD, 0xF1, 0x04, 0x1C, - 0x49, 0x58, 0x44, 0x97, 0x4A, 0x21, 0x36, 0x0C, 0x7D, 0xDE, 0x3F, 0x2F, - 0xE6, 0x8E, 0x05, 0x42, 0x28, 0x2A, 0xA5, 0x0F, 0xF1, 0x31, 0x7B, 0x9A, - 0x1B, 0x36, 0x40, 0x48, 0xC3, 0xC4, 0x59, 0x8F, 0xFF, 0x82, 0x2F, 0xE2, - 0x75, 0xEF, 0x54, 0x39, 0x31, 0xC8, 0x5F, 0xD2, 0xDA, 0x74, 0x50, 0x47, - 0x45, 0x16, 0xC9, 0xF8, 0x2B, 0xAE, 0x07, 0x6B, 0x18, 0xF6, 0x22, 0x1F, - 0xF4, 0x39, 0x6D, 0x13, 0x83, 0x0C, 0xCB, 0xF3, 0x12, 0x1B, 0xB4, 0x27, - 0xB6, 0xB1, 0x67, 0x79, 0x29, 0xD7, 0xAF, 0x00, 0xF1, 0xE4, 0x14, 0xB4, - 0xA1, 0x95, 0x54, 0x47, 0x19, 0x7B, 0xB0, 0xF6, 0x81, 0x42, 0x94, 0xE4, - 0xD3, 0xA3, 0x9D, 0x74, 0xE5, 0x93, 0xEE, 0x02, 0x5A, 0x44, 0x9F, 0x25, - 0xCB, 0xB2, 0x8E, 0xEE, 0xD8, 0xE7, 0x02, 0x5D, 0x83, 0x94, 0x68, 0xDD, - 0xA4, 0x3E, 0x6A, 0x86, 0xE6, 0x2E, 0xFC, 0x1C, 0xC5, 0xAE, 0x91, 0x7D, - 0x34, 0x12, 0xD5, 0x10, 0xD8, 0x4E, 0x34, 0x18, 0x6B, 0x72, 0x0D, 0x8F, - 0x28, 0x17, 0xE2, 0x81, 0xD6, 0xE4, 0x70, 0xBB, 0x20, 0x0C, 0xE9, 0xA9, - 0x65, 0xEC, 0xDC, 0x80, 0x41, 0x13, 0xB4, 0x53, 0x67, 0x1F, 0xF4, 0xB0, - 0xA6, 0x4D, 0xB1, 0x43, 0x29, 0x00, 0xAD, 0x51, 0xE8, 0x4C, 0x6A, 0x62, - 0x8B, 0xB9, 0xEE, 0x05, 0x53, 0xE5, 0xBE, 0xCC, 0xDD, 0x08, 0xA9, 0x89, - 0x84, 0x04, 0xF3, 0xC4, 0xA9, 0x4E, 0x40, 0x18, 0xE4, 0xF8, 0xEC, 0xB0, - 0xF4, 0x7B, 0x69, 0x6D, 0xD1, 0xB3, 0x5F, 0x53, 0x85, 0x14, 0xF5, 0xC9, - 0xBE, 0x9D, 0x8E, 0x7B, 0x9A, 0x8C, 0x77, 0xA2, 0xD6, 0x97, 0xA3, 0x35, - 0x48, 0x47, 0x93, 0x5C, 0x2D, 0xB7, 0xBA, 0x80, 0xC0, 0xB5, 0xD5, 0x24, - 0x40, 0xA8, 0xB6, 0xA6, 0x4E, 0x4C, 0x4C, 0xE8, 0x60, 0xE4, 0xF7, 0xDC, - 0x24, 0xD9, 0x0F, 0x3C, 0xC7, 0x86, 0xC9, 0xEB, 0xEA, 0xD9, 0xDC, 0x12, - 0x50, 0x30, 0xB2, 0x7D, 0x28, 0x2E, 0x9D, 0x7C, 0xC3, 0x72, 0x6D, 0x22, - 0x40, 0x81, 0x1A, 0x5B, 0xED, 0x16, 0xDD, 0x6D, 0x15, 0x83, 0xD1, 0xC6, - 0x35, 0xBD, 0x11, 0x1F, 0x0F, 0x60, 0x89, 0x22, 0xCD, 0x63, 0x39, 0x42, - 0x2B, 0x05, 0xE5, 0x40, 0x89, 0xC3, 0x64, 0xBC, 0xB2, 0x7B, 0x1E, 0xBF, - 0x37, 0x68, 0x0A, 0x82, 0xD8, 0x71, 0x10, 0xE7, 0xD3, 0xEB, 0xF9, 0x24, - 0xBD, 0x5F, 0x62, 0x7F, 0xAA, 0xF0, 0x5B, 0xE5, 0x75, 0xCB, 0x84, 0xA4, - 0x66, 0x78, 0x80, 0xE4, 0xD5, 0x04, 0x02, 0xE4, 0xE6, 0x79, 0x67, 0xC2, - 0x79, 0x92, 0x3C, 0x32, 0x8C, 0xB6, 0x1D, 0x21, 0xDB, 0xB8, 0x91, 0x88, - 0x76, 0xBD, 0x20, 0x30, 0x8A, 0x87, 0x49, 0x7F, 0x54, 0x32, 0x95, 0x3D, - 0x1F, 0x44, 0xDE, 0xA0, 0xE6, 0x4D, 0x00, 0xE9, 0x1F, 0x12, 0x49, 0x2A, - 0x73, 0x58, 0x55, 0xB2, 0x22, 0x36, 0x46, 0x37, 0x6E, 0x89, 0xCF, 0x8E, - 0x17, 0x91, 0x8C, 0xD3, 0xAE, 0x40, 0x75, 0x66, 0xAA, 0xAD, 0x37, 0x77, - 0x00, 0x9B, 0x56, 0x98, 0x52, 0x1F, 0x41, 0x01, 0x60, 0x6A, 0x3D, 0xB1, - 0x07, 0x5F, 0x57, 0x72, 0xE6, 0x69, 0x0B, 0x93, 0xE7, 0x1B, 0xB1, 0x54, - 0x26, 0xB0, 0x52, 0xA1, 0xB1, 0x0A, 0x1A, 0x59, 0xBD, 0xA5, 0x70, 0x98, - 0x21, 0xCD, 0x09, 0x35, 0x1A, 0x29, 0x03, 0x10, 0xAC, 0x40, 0x90, 0x47, - 0xFB, 0xA3, 0x07, 0xB4, 0x43, 0xCC, 0x37, 0x14, 0xC9, 0xA8, 0xD4, 0x5A, - 0xD0, 0x70, 0xF9, 0x85, 0xAC, 0xF3, 0xFA, 0xA5, 0x5A, 0x9A, 0xF1, 0xC3, - 0x54, 0xDC, 0xE1, 0x00, 0x2D, 0xD6, 0xCF, 0x7A, 0x02, 0x87, 0x8B, 0x49, - 0x6C, 0x19, 0xF4, 0x68, 0xDE, 0x5F, 0x11, 0x91, 0xF1, 0x7A, 0xF2, 0x34, - 0xA5, 0xDF, 0x42, 0x01, 0x2E, 0x2F, 0x12, 0x91, 0xA9, 0x5E, 0x23, 0x6E, - 0xFC, 0x1C, 0x96, 0xFA, 0xE8, 0xBB, 0x4A, 0x42, 0x7F, 0xB7, 0xEE, 0x12, - 0x3C, 0x25, 0xDB, 0x7B, 0x95, 0xED, 0xF6, 0xAB, 0xBC, 0x59, 0xE4, 0xF3, - 0x15, 0x71, 0xAB, 0xAB, 0x1B, 0x27, 0x6B, 0x48, 0x44, 0x52, 0xC3, 0xA3, - 0xB0, 0xC1, 0x49, 0xCE, 0x74, 0xD9, 0x9D, 0xC8, 0xAC, 0x71, 0xB5, 0xB9, - 0x1B, 0xA6, 0xD3, 0xF9, 0x84, 0x30, 0xAE, 0x9E, 0x69, 0x31, 0xB8, 0xB4, - 0x64, 0xE8, 0xD9, 0x47, 0xBD, 0x63, 0xB5, 0x25, 0x30, 0x1A, 0xD7, 0xB2, - 0xC0, 0xBD, 0x75, 0x30, 0x55, 0x02, 0x5B, 0xC6, 0xE6, 0x63, 0x69, 0x65, - 0xAF, 0xE7, 0x7B, 0xAB, 0x5D, 0xA6, 0xA5, 0xC4, 0xAF, 0xDE, 0xAC, 0x67, - 0x1E, 0x7F, 0x73, 0x55, 0x2C, 0x33, 0x25, 0x83, 0x24, 0x3F, 0xB0, 0x48, - 0xFC, 0x08, 0xB9, 0x60, 0xBB, 0xFB, 0x3D, 0xFD, 0xA3, 0xF6, 0xF2, 0x1B, - 0x89, 0x82, 0x87, 0xD1, 0x10, 0xE5, 0xBD, 0xEF, 0x16, 0xA7, 0x3F, 0x15, - 0x32, 0x11, 0x50, 0xB9, 0x7D, 0x77, 0x15, 0x0F, 0xBA, 0xFE, 0x76, 0x0A, - 0x4F, 0xF2, 0xA0, 0xFB, 0x2D, 0xF1, 0xCE, 0x5E, 0xE7, 0x50, 0x6A, 0xA0, - 0xB2, 0xB4, 0xEE, 0x2B, 0xD5, 0x3B, 0x03, 0x07, 0xB0, 0x40, 0x4A, 0x26, - 0xF4, 0x3E, 0x1F, 0xC4, 0x58, 0x80, 0x8A, 0x3B, 0x00, 0x52, 0x2B, 0x53, - 0xBF, 0xD4, 0x8F, 0xEE, 0x6D, 0xA4, 0x0D, 0xF7, 0x82, 0xF8, 0x53, 0xDA, - 0xF6, 0x53, 0xAF, 0xF8, 0xD2, 0xD8, 0xFB, 0x1F, 0x2D, 0x98, 0x87, 0xDA, - 0x19, 0xAC, 0x48, 0x6B, 0xEA, 0xDE, 0x08, 0xA6, 0x13, 0x37, 0x1B, 0x2C, - 0x15, 0x60, 0xB2, 0xDB, 0x28, 0x0E, 0x2E, 0xA3, 0x4A, 0xB1, 0xF2, 0x5C, - 0x48, 0x69, 0x46, 0xFA, 0x08, 0x9F, 0xE9, 0x65, 0x2F, 0x3A, 0x29, 0xB0, - 0x88, 0xB5, 0x13, 0x44, 0x41, 0x92, 0x30, 0x74, 0x9C, 0x9C, 0xD8, 0xC8, - 0xB1, 0x59, 0x42, 0x67, 0xAC, 0xC8, 0x0D, 0xFF, 0x8E, 0x52, 0x4C, 0xED, - 0x86, 0xFF, 0x4E, 0x45, 0xBE, 0xC4, 0xAF, 0x32, 0xE4, 0xBC, 0x41, 0xC5, - 0xDC, 0x3F, 0x71, 0x8C, 0x2C, 0xAD, 0x78, 0x7E, 0x79, 0x47, 0xB2, 0x02, - 0xA6, 0x11, 0xDE, 0x0F, 0x5D, 0xAD, 0xFE, 0x8D, 0x6B, 0x09, 0xEA, 0x28, - 0x4B, 0xB1, 0x9F, 0xD3, 0x09, 0x4A, 0x77, 0x52, 0x58, 0xA2, 0x31, 0xC1, - 0x48, 0xF1, 0x35, 0x48, 0x46, 0x93, 0xDB, 0x22, 0xFD, 0x06, 0x49, 0xEB, - 0x22, 0xE8, 0xB3, 0x9C, 0xCF, 0x40, 0x8B, 0xC7, 0x35, 0x07, 0xBD, 0x2C, - 0x21, 0xFB, 0x15, 0x53, 0x38, 0x0B, 0x61, 0x10, 0x75, 0x11, 0x17, 0x1F, - 0xE1, 0x76, 0x10, 0x53, 0x66, 0x2E, 0x36, 0x65, 0xF6, 0x62, 0x19, 0xAC, - 0x68, 0x63, 0x1D, 0x17, 0x6C, 0x49, 0x6C, 0xA8, 0x40, 0x49, 0xFC, 0xBA, - 0x63, 0x25, 0x5E, 0x79, 0x07, 0x10, 0xC3, 0x3C, 0xC5, 0x81, 0x14, 0xBB, - 0xCD, 0xC3, 0x63, 0x36, 0x9F, 0xB9, 0x68, 0x54, 0x8D, 0x31, 0x66, 0xC8, - 0xF7, 0x4A, 0xA0, 0x68, 0x8A, 0xCC, 0xE2, 0xB8, 0x50, 0x88, 0x7B, 0xFF, - 0x38, 0xE0, 0x8B, 0x90, 0x0C, 0x98, 0xF1, 0xC5, 0x5F, 0xFA, 0x2A, 0x37, - 0x6A, 0x3C, 0x39, 0xC0, 0xF1, 0x29, 0x0F, 0xC1, 0xA6, 0xCE, 0xCC, 0x98, - 0xD7, 0x9C, 0xAE, 0x71, 0xAB, 0xFE, 0xA1, 0xC6, 0x0E, 0xF7, 0xE7, 0x60, - 0x9B, 0x63, 0x50, 0x00, 0x8B, 0x1A, 0xC4, 0xF2, 0xDB, 0xFF, 0xCB, 0xC8, - 0xDC, 0x23, 0x49, 0xA9, 0xFB, 0xF3, 0x1A, 0x09, 0xA5, 0x27, 0xD5, 0x18, - 0x4C, 0x84, 0x2E, 0x6E, 0x56, 0x39, 0x3F, 0xD3, 0x08, 0xDE, 0x76, 0x90, - 0xC1, 0x43, 0x33, 0x32, 0xF8, 0x76, 0x59, 0x48, 0x14, 0xCD, 0x2E, 0x19, - 0xDF, 0x8B, 0x72, 0xAF, 0xB2, 0x2F, 0xD9, 0x5C, 0x5C, 0x87, 0x8C, 0x3A, - 0x66, 0x86, 0xBD, 0xEA, 0x82, 0xFC, 0x36, 0xFA, 0x05, 0xE8, 0xE0, 0x07, - 0x53, 0xD8, 0x68, 0xD4, 0x86, 0x3A, 0xA4, 0x64, 0xD5, 0x13, 0x16, 0x3F, - 0x9B, 0x1D, 0x60, 0x3A, 0x46, 0xAF, 0x99, 0x89, 0xBF, 0x1A, 0xD2, 0x45, - 0xF8, 0xD7, 0x86, 0x6E, 0x0C, 0x3A, 0xCD, 0x69, 0x05, 0x1A, 0x07, 0x7D, - 0x52, 0x96, 0xE1, 0xB6, 0x84, 0xE9, 0x63, 0x5B, 0x3D, 0xEE, 0xF6, 0xDC, - 0x8A, 0xE2, 0xDC, 0xFA, 0xDD, 0xD6, 0x5F, 0xA3, 0x17, 0xD3, 0xE6, 0x3C, - 0xC6, 0xEE, 0x7C, 0x84, 0x6F, 0x82, 0x9A, 0x01, 0xF7, 0xC4, 0x71, 0x69, - 0x0B, 0x56, 0xEB, 0x48, 0xB3, 0x09, 0x23, 0x05, 0x26, 0x47, 0xD5, 0x8B, - 0x2D, 0x8B, 0x91, 0x73, 0xF8, 0x14, 0xAC, 0xE6, 0xEE, 0xB3, 0x40, 0x6D, - 0x43, 0x70, 0x18, 0x8A, 0xA4, 0xA9, 0x9A, 0x66, 0x77, 0x85, 0x7E, 0x0F, - 0x48, 0x24, 0x0B, 0xF1, 0x15, 0xEF, 0xBB, 0x25, 0xB8, 0x44, 0x43, 0x8E, - 0x91, 0x29, 0x74, 0x43, 0xEC, 0xF9, 0x31, 0x48, 0x97, 0xFC, 0xDF, 0x5A, - 0xA9, 0x3B, 0x50, 0xAB, 0x9E, 0xE5, 0x93, 0xF3, 0x39, 0xD8, 0x4E, 0xAB, - 0x7F, 0xAD, 0x2E, 0x83, 0x7F, 0x85, 0x46, 0x24, 0xE7, 0x76, 0xF4, 0x64, - 0xFF, 0x6A, 0xDA, 0x79, 0x2F, 0x49, 0x16, 0xD8, 0xF1, 0x54, 0xD6, 0x37, - 0xCB, 0x50, 0x13, 0xA0, 0xB2, 0x4E, 0xDC, 0x1E, 0xF0, 0x59, 0xB4, 0x4F, - 0xB4, 0x9B, 0x6D, 0x17, 0xA1, 0x4C, 0x25, 0x24, 0x71, 0x3C, 0x06, 0x6D, - 0xEE, 0x35, 0x8D, 0xA7, 0x6E, 0x1C, 0x59, 0x17, 0x7A, 0xA5, 0xB4, 0x14, - 0x9F, 0x12, 0x8D, 0xE0, 0xC1, 0xEE, 0xAA, 0xE5, 0xF6, 0x9D, 0x2F, 0x81, - 0x75, 0x9F, 0xCC, 0xE4, 0xE1, 0x87, 0x85, 0x65, 0x86, 0x08, 0xD4, 0xC2, - 0xC5, 0xE1, 0x87, 0x4C, 0x76, 0x25, 0xFC, 0x9F, 0x70, 0x08, 0x5C, 0x69, - 0xB2, 0xEF, 0xDD, 0x2E, 0x41, 0xAF, 0x8E, 0x8A, 0x51, 0x0F, 0x1E, 0x7D, - 0xD2, 0x24, 0x8C, 0x70, 0x4D, 0xB9, 0x22, 0x8B, 0x39, 0x51, 0xEF, 0xCB, - 0x19, 0x16, 0xDC, 0x38, 0xF2, 0x95, 0xE6, 0x39, 0xD0, 0x2A, 0x59, 0x2D, - 0xD0, 0xFA, 0xC3, 0x7E, 0xC7, 0x43, 0xF1, 0x74, 0x11, 0x1D, 0x4D, 0xA2, - 0x35, 0x35, 0xCA, 0x97, 0x05, 0x02, 0x2B, 0xA2, 0x82, 0x23, 0x36, 0xEF, - 0xFC, 0xEC, 0xA9, 0x0A, 0x1B, 0xCA, 0x55, 0x77, 0x11, 0xAC, 0x3F, 0xCC, - 0xA7, 0xF5, 0x12, 0x1D, 0x7C, 0x4C, 0xA3, 0xF9, 0x14, 0x85, 0x1D, 0x8E, - 0x5E, 0xD3, 0x49, 0x52, 0x9D, 0x37, 0x6D, 0x8E, 0x35, 0x8C, 0xA9, 0xFE, - 0x37, 0x23, 0x56, 0xB8, 0x05, 0x65, 0x54, 0x07, 0xF2, 0xC6, 0xED, 0x70, - 0x10, 0xA1, 0x97, 0x77, 0xD4, 0xD7, 0x77, 0x50, 0x50, 0x16, 0x8C, 0x6E, - 0x45, 0xED, 0x9D, 0xB4, 0xF3, 0xE5, 0x82, 0x37, 0x99, 0x67, 0x53, 0x68, - 0xC6, 0x22, 0x33, 0xFD, 0x0C, 0xAD, 0x18, 0x24, 0x76, 0x06, 0x26, 0x5D, - 0x9B, 0x14, 0xF6, 0xCC, 0xB8, 0x48, 0x7E, 0x85, 0x15, 0x35, 0xC7, 0x16, - 0x1F, 0xE5, 0x3A, 0x41, 0x9B, 0xB6, 0xA8, 0x64, 0x48, 0x57, 0x32, 0x60, - 0x91, 0xE5, 0xC1, 0x41, 0xEC, 0x4C, 0x97, 0xEF, 0xD4, 0xF8, 0x84, 0x41, - 0x61, 0x47, 0x17, 0x08, 0x96, 0xC3, 0xBB, 0xF3, 0xB7, 0x2C, 0xF6, 0xB9, - 0xA1, 0x89, 0x78, 0x79, 0x73, 0x89, 0x4C, 0x07, 0x34, 0x4E, 0x75, 0x88, - 0xA8, 0x18, 0x54, 0x3C, 0xF3, 0x8F, 0xED, 0x04, 0xE7, 0x86, 0xD7, 0x8B, - 0xED, 0x34, 0x6B, 0xCF, 0x29, 0x1F, 0x7A, 0x54, 0x7E, 0x8A, 0xE1, 0x81, - 0x4C, 0xEE, 0xEA, 0x23, 0x7B, 0x3F, 0x16, 0x24, 0x71, 0x9D, 0x97, 0xF8, - 0x5B, 0xD0, 0x73, 0x86, 0xFA, 0x21, 0x27, 0x3E, 0x73, 0x1F, 0x0C, 0x36, - 0x87, 0x56, 0x2F, 0x21, 0x10, 0x38, 0xFD, 0x14, 0xB4, 0x1E, 0xAB, 0x3B, - 0xC1, 0x54, 0xE2, 0xDB, 0xB5, 0x76, 0xF2, 0x61, 0x14, 0xBA, 0x19, 0x23, - 0x7C, 0x53, 0x30, 0xC8, 0x0C, 0x62, 0x61, 0x93, 0x41, 0x83, 0x1C, 0xA7, - 0x2D, 0x15, 0xD5, 0x67, 0x95, 0xEE, 0xBD, 0xDB, 0x27, 0x31, 0x16, 0x81, - 0xC9, 0x3A, 0x78, 0xFC, 0xB2, 0x26, 0x10, 0x3F, 0xCA, 0x89, 0x11, 0xB0, - 0x03, 0xE1, 0xB9, 0x7E, 0xDE, 0x0C, 0x34, 0xD1, 0xAA, 0x72, 0x34, 0x90, - 0xD8, 0x62, 0x74, 0xAE, 0xA7, 0x63, 0x96, 0xCD, 0xBA, 0x58, 0x60, 0x6E, - 0xD1, 0x6C, 0x6B, 0xAE, 0xB2, 0x15, 0x7E, 0x12, 0x1A, 0x29, 0x03, 0x2E, - 0x28, 0x98, 0x59, 0x52, 0xE2, 0x94, 0xAC, 0x18, 0x00, 0x1B, 0x2D, 0xCC, - 0xE0, 0xDC, 0x71, 0xA0, 0x97, 0xAF, 0xA1, 0xD3, 0x9D, 0xA6, 0xEE, 0x62, - 0xB4, 0x51, 0xBE, 0xE9, 0xF0, 0x23, 0xBD, 0x5A, 0xED, 0x16, 0xEC, 0x01, - 0x70, 0x8F, 0x39, 0xF2, 0xF9, 0xD8, 0x6D, 0x54, 0x6A, 0xD3, 0x70, 0x7B, - 0xE4, 0x6E, 0x1D, 0x40, 0xF4, 0x4A, 0x04, 0xA6, 0x3A, 0x2B, 0x76, 0x62, - 0x7F, 0x04, 0xC2, 0x0B, 0xB0, 0xAC, 0xB6, 0xE1, 0x85, 0x8A, 0xD5, 0x35, - 0xCA, 0xDF, 0xDE, 0x8A, 0x57, 0x34, 0x51, 0xD0, 0x44, 0xC0, 0xBB, 0x51, - 0x16, 0x44, 0x3F, 0xC7, 0xC4, 0x10, 0x3B, 0x06, 0xB2, 0xB7, 0xA1, 0xF4, - 0x9C, 0x2F, 0xFA, 0xD3, 0x46, 0x51, 0xC3, 0x25, 0x9A, 0x94, 0xB8, 0x78, - 0xE3, 0x3B, 0x63, 0x64, 0x61, 0xF6, 0x1D, 0x4C, 0x9C, 0xFF, 0x68, 0x18, - 0xCC, 0x51, 0xD0, 0xC3, 0x0B, 0x67, 0x0D, 0xED, 0x78, 0xF4, 0xD7, 0x26, - 0x41, 0x0C, 0xEE, 0xB7, 0x35, 0x72, 0xDA, 0x39, 0x3D, 0x20, 0x35, 0xF0, - 0xC8, 0xF2, 0x6A, 0x29, 0xE3, 0x03, 0x90, 0x80, 0xE7, 0x76, 0xBA, 0x78, - 0x5E, 0x5C, 0x9A, 0x35, 0x05, 0x9C, 0x2E, 0xB8, 0xA8, 0x86, 0x2F, 0xD3, - 0xEA, 0x37, 0x7D, 0xED, 0x66, 0xA8, 0x4E, 0xEF, 0xA3, 0xBF, 0x3F, 0x85, - 0x21, 0x94, 0x59, 0x23, 0x3A, 0xB5, 0x42, 0x6D, 0x95, 0x3D, 0x9A, 0xE2, - 0x2A, 0x08, 0xC9, 0xD5, 0x6D, 0xC3, 0x6C, 0x09, 0x09, 0xAC, 0x48, 0x4A, - 0x7A, 0x46, 0xB7, 0x34, 0x03, 0xF0, 0x8A, 0x33, 0x3E, 0xAE, 0x27, 0xFD, - 0x2D, 0xF8, 0xAB, 0xE4, 0x82, 0x81, 0x93, 0x65, 0x4E, 0xC2, 0x0D, 0x6D, - 0xD0, 0xEA, 0xDF, 0x8D, 0xA5, 0xD6, 0xA1, 0x45, 0x7F, 0x08, 0xE1, 0x93, - 0x7E, 0x87, 0x50, 0x84, 0xDE, 0x7D, 0x03, 0x9F, 0x3C, 0xD9, 0x81, 0x31, - 0x1B, 0x1E, 0xA1, 0x82, 0x17, 0x76, 0xE4, 0x3F, 0x45, 0xC9, 0x2E, 0x8E, - 0x72, 0xE3, 0x43, 0xF1, 0x84, 0xF2, 0xFC, 0x0B, 0x8E, 0x6E, 0xB4, 0x5F, - 0x10, 0xF2, 0x3E, 0xC0, 0x7D, 0x57, 0xC2, 0x3E, 0xE9, 0x15, 0x4F, 0xC8, - 0x0B, 0x65, 0x53, 0xBB, 0xD9, 0x50, 0xA2, 0x5C, 0xCB, 0x11, 0x14, 0x77, - 0xDF, 0x2A, 0x18, 0x43, 0x3E, 0xE0, 0x1D, 0x30, 0x6E, 0xF3, 0xFE, 0xB7, - 0x3D, 0x7B, 0x22, 0x7A, 0x73, 0xF4, 0x62, 0xBA, 0x82, 0x51, 0x5D, 0x42, - 0x0B, 0x27, 0x0E, 0x13, 0x27, 0xB4, 0xB5, 0xB4, 0x29, 0xDA, 0x94, 0xB3, - 0x99, 0x9B, 0x3B, 0x37, 0x6E, 0xB2, 0x28, 0x26, 0x52, 0xCF, 0x5C, 0xCB, - 0x74, 0x95, 0x30, 0x50, 0x48, 0xC9, 0xAD, 0xEE, 0x8B, 0xC6, 0x72, 0x55, - 0xEC, 0x28, 0x14, 0x00, 0x78, 0xC4, 0x42, 0x61, 0xBF, 0x96, 0x81, 0x06, - 0xFA, 0x45, 0x4F, 0xC0, 0x1F, 0xC0, 0x4F, 0xCA, 0xEE, 0xBC, 0xCC, 0xF5, - 0xAA, 0xC4, 0x78, 0x0A, 0x16, 0xF5, 0xD2, 0x65, 0x6D, 0xCD, 0x74, 0x2D, - 0x87, 0x93, 0xBC, 0x51, 0x02, 0x68, 0xE0, 0x72, 0xE0, 0x5F, 0x98, 0x1E, - 0x7D, 0x2B, 0x9F, 0xCD, 0x1D, 0xC7, 0x20, 0x34, 0xF5, 0x95, 0x82, 0x7A, - 0x04, 0x80, 0x35, 0x96, 0x88, 0xB8, 0x1C, 0x26, 0x16, 0x62, 0xD9, 0x32, - 0x91, 0xD0, 0x0F, 0x87, 0x23, 0x4E, 0x44, 0x25, 0x7C, 0x2A, 0xD4, 0x8E, - 0x43, 0x0B, 0xEC, 0xA4, 0xD0, 0x92, 0x46, 0xEE, 0xB1, 0xC3, 0xC4, 0x61, - 0xE5, 0xA9, 0x90, 0x0D, 0x03, 0x00, 0xBD, 0xA5, 0xEB, 0x81, 0xB0, 0x2B, - 0xAB, 0xEF, 0x5F, 0x70, 0x6A, 0x80, 0x2F, 0xA1, 0xDC, 0xB3, 0x47, 0x7F, - 0xF4, 0x8A, 0x41, 0xB2, 0x94, 0xEA, 0x06, 0x91, 0x92, 0x1D, 0xEF, 0x4A, - 0xF1, 0x81, 0xAE, 0x8E, 0xA6, 0xE8, 0x7B, 0xC1, 0x46, 0xDD, 0x33, 0xBE, - 0x14, 0x1C, 0x24, 0x27, 0xD8, 0xE0, 0xE7, 0x69, 0x9E, 0xFC, 0x53, 0x7E, - 0x40, 0x2C, 0x13, 0xA7, 0xD6, 0x5A, 0x82, 0xD6, 0xFF, 0x09, 0xA8, 0x6B, - 0xB1, 0x60, 0x82, 0x0A, 0xDD, 0x90, 0x1C, 0xE4, 0x6A, 0xA3, 0x18, 0xFB, - 0x66, 0xD4, 0x4F, 0x9B, 0x28, 0xB2, 0x5B, 0xE7, 0x73, 0xCA, 0x33, 0x2F, - 0x75, 0x57, 0x9B, 0xEA, 0x36, 0x03, 0xC4, 0x06, 0x22, 0x4D, 0xDE, 0x30, - 0x57, 0x4C, 0x7C, 0x90, 0xE5, 0xCF, 0x88, 0x39, 0xF5, 0x19, 0x18, 0x18, - 0x2A, 0x1A, 0x16, 0x11, 0xD8, 0x49, 0xCF, 0x5A, 0x4A, 0x51, 0x1B, 0x78, - 0x1D, 0xF1, 0x65, 0xB2, 0x7C, 0xC7, 0xD4, 0xF1, 0xB1, 0x3D, 0xA3, 0x5C, - 0x0A, 0xB5, 0x3E, 0x72, 0x4B, 0xE3, 0x28, 0xEA, 0xC9, 0x73, 0x9F, 0x36, - 0xC1, 0x50, 0x4F, 0x19, 0x33, 0x47, 0xAB, 0x46, 0x71, 0x60, 0x0E, 0xE8, - 0x1D, 0xD2, 0xDB, 0xD3, 0xD8, 0xF3, 0xA9, 0xD7, 0xE5, 0x25, 0x2B, 0xA2, - 0x75, 0x36, 0x77, 0x55, 0x00, 0x8E, 0x67, 0xF1, 0xF9, 0xDE, 0x38, 0x45, - 0x24, 0x84, 0x01, 0x15, 0xA6, 0xD2, 0x30, 0x91, 0x71, 0xE3, 0xA6, 0xA7, - 0xF4, 0x52, 0x77, 0x76, 0x74, 0xC8, 0x43, 0x76, 0x3E, 0xBF, 0x61, 0xB1, - 0xBD, 0x1C, 0x68, 0x10, 0x8B, 0x69, 0xCD, 0x90, 0x1C, 0x2D, 0x76, 0xD4, - 0x4B, 0x3F, 0xF4, 0x3F, 0xC0, 0x8F, 0xB2, 0x13, 0x2D, 0x07, 0xC0, 0x9A, - 0x03, 0x74, 0x11, 0x0A, 0xAA, 0x74, 0x61, 0xB7, 0x5F, 0x64, 0xE8, 0x0D, - 0xE7, 0x57, 0x4C, 0x46, 0x36, 0xAE, 0x54, 0x71, 0xFD, 0x02, 0xD1, 0x6E, - 0x18, 0x06, 0xCA, 0x74, 0x7F, 0xA8, 0xF4, 0xDF, 0x1A, 0x37, 0xF2, 0xD6, - 0x43, 0xD3, 0xF5, 0x70, 0x22, 0xFD, 0x78, 0x24, 0x65, 0xF1, 0x90, 0x79, - 0xE2, 0x12, 0x31, 0xBD, 0xAA, 0xFF, 0xA1, 0x89, 0x05, 0xBE, 0xAE, 0xCA, - 0x1A, 0x4B, 0x9A, 0x6D, 0x24, 0xF3, 0xDF, 0x4E, 0xB2, 0xB9, 0x71, 0x10, - 0x96, 0xCD, 0xA5, 0xEB, 0x99, 0xDA, 0x5D, 0xB1, 0xF4, 0x50, 0x30, 0x8F, - 0x51, 0x6F, 0xDF, 0xF5, 0x7F, 0xB5, 0x8B, 0xD9, 0x58, 0xD2, 0x0C, 0x72, - 0x00, 0xB2, 0x32, 0x62, 0x18, 0x78, 0xBD, 0x8A, 0x2B, 0x07, 0xB4, 0x5E, - 0x4E, 0xB5, 0x1B, 0xE4, 0x4D, 0xD4, 0x59, 0x29, 0x8E, 0xAA, 0x97, 0x71, - 0x66, 0x7F, 0x9E, 0x3B, 0x57, 0xE0, 0x35, 0x03, 0x6B, 0xF7, 0x12, 0x3C, - 0x5A, 0xAD, 0x1A, 0xF1, 0xC6, 0xC9, 0x5A, 0xF0, 0x1D, 0x25, 0x15, 0xE4, - 0x3B, 0x45, 0x88, 0x70, 0x77, 0x7F, 0x33, 0xC0, 0xA7, 0x50, 0x6F, 0x22, - 0x9B, 0xB6, 0xAF, 0x35, 0xF4, 0xC1, 0xEC, 0xEC, 0xF7, 0x7B, 0x59, 0x45, - 0x2E, 0x8C, 0x45, 0x94, 0xCF, 0xF2, 0x64, 0xD4, 0x99, 0x78, 0xB6, 0xD3, - 0x20, 0x42, 0x49, 0xF4, 0x8E, 0xC4, 0x4E, 0xC9, 0x63, 0x10, 0xE7, 0x57, - 0xA8, 0x33, 0xBB, 0xE3, 0xF2, 0xDF, 0x38, 0x24, 0xF4, 0xC5, 0xEA, 0x86, - 0xAF, 0xB7, 0xB1, 0x34, 0x46, 0x74, 0xAD, 0x96, 0x84, 0x5F, 0x44, 0x16, - 0xE2, 0x54, 0xCA, 0x6A, 0x93, 0xE1, 0x59, 0xBD, 0x56, 0xCF, 0x8C, 0x3A, - 0x3C, 0x1B, 0xAB, 0xBE, 0x6A, 0x0E, 0xCA, 0x56, 0x20, 0x1C, 0xDE, 0xDF, - 0x0A, 0x5D, 0x7F, 0x55, 0xF9, 0x9E, 0x21, 0x9D, 0x98, 0x37, 0xFD, 0xFE, - 0xE7, 0xD7, 0xDC, 0x87, 0xD1, 0xC5, 0x60, 0xF5, 0x91, 0xD9, 0x10, 0x95, - 0x6C, 0x24, 0x5B, 0x0F, 0x59, 0x54, 0x4D, 0x04, 0xE8, 0xF8, 0x33, 0x94, - 0x1D, 0x00, 0x72, 0xCE, 0x6B, 0xCD, 0x90, 0xC7, 0x6A, 0x9F, 0xF4, 0xE7, - 0x5B, 0x67, 0x52, 0xBB, 0xB6, 0x58, 0x19, 0xBB, 0xD5, 0x09, 0x0B, 0x8C, - 0x30, 0xBE, 0x21, 0xDA, 0xCB, 0xE7, 0x67, 0xDC, 0x24, 0x00, 0xDD, 0x1A, - 0x43, 0x13, 0x71, 0x44, 0x11, 0xA1, 0xA5, 0x9D, 0x9E, 0xD1, 0x19, 0xE4, - 0x9D, 0x59, 0x2D, 0xF9, 0x9F, 0x8D, 0x2D, 0x09, 0x01, 0x32, 0x35, 0xC7, - 0x2E, 0x12, 0x15, 0x84, 0x88, 0x9F, 0xA7, 0xA2, 0x48, 0x72, 0xA6, 0xB2, - 0xE0, 0x81, 0x8A, 0xB1, 0x07, 0x21, 0x5D, 0x9D, 0x74, 0x1D, 0x3D, 0x98, - 0x24, 0x1E, 0x4C, 0x45, 0xBD, 0x45, 0x3F, 0x1E, 0x31, 0x5D, 0xBE, 0x8C, - 0x4F, 0xDD, 0x1D, 0x0C, 0xA7, 0xFC, 0x5C, 0xA3, 0x20, 0x13, 0x71, 0x9F, - 0xB8, 0x0E, 0x50, 0xFA, 0x27, 0x5A, 0xA0, 0x91, 0x28, 0xCA, 0xDF, 0x43, - 0x39, 0x18, 0xA2, 0x9F, 0x60, 0xAB, 0xEC, 0x2B, 0x89, 0x03, 0x03, 0x58, - 0xB0, 0xA0, 0x76, 0x46, 0xBB, 0x2A, 0x37, 0xEF, 0xD9, 0xD7, 0xDD, 0x93, - 0x40, 0x0A, 0x13, 0x7E, 0xF6, 0x84, 0xB7, 0x34, 0x10, 0xB2, 0x31, 0x83, - 0x09, 0x66, 0x78, 0xA1, 0x60, 0xD5, 0x30, 0xC4, 0x82, 0xD4, 0x2E, 0x6D, - 0xFD, 0x8B, 0x01, 0x84, 0x91, 0x78, 0x4A, 0x4E, 0x2A, 0x85, 0x82, 0xC9, - 0x92, 0x0D, 0x28, 0x32, 0x26, 0xE5, 0x25, 0x35, 0x09, 0x79, 0x04, 0xA5, - 0xE4, 0xFA, 0x35, 0xE0, 0xB3, 0x87, 0x8B, 0x18, 0x02, 0xED, 0xEC, 0x7B, - 0x34, 0x56, 0xAE, 0x6C, 0x00, 0x3C, 0x8F, 0xEF, 0xA6, 0x06, 0xFC, 0xBD, - 0xD9, 0x35, 0x47, 0x79, 0x0F, 0xB4, 0x49, 0x7D, 0x9A, 0x1B, 0xB9, 0xEE, - 0xB4, 0xFB, 0xDA, 0xAA, 0xCD, 0xEF, 0xA1, 0xD6, 0xD4, 0xCA, 0x7F, 0xE8, - 0x1D, 0x91, 0x72, 0x83, 0xB6, 0x4B, 0x86, 0xE4, 0xEC, 0x27, 0xD9, 0xEF, - 0xDC, 0x0D, 0xA0, 0x25, 0xE8, 0xD8, 0xEA, 0xC0, 0xD1, 0x5C, 0x58, 0x00, - 0xFD, 0x31, 0x48, 0x69, 0xD7, 0x09, 0xFD, 0xD4, 0x1A, 0x8D, 0x5B, 0xE7, - 0xA6, 0xE1, 0x9A, 0xF6, 0x1A, 0x03, 0xF9, 0x2D, 0x2E, 0x42, 0xC9, 0x93, - 0xCA, 0x31, 0xAA, 0xF1, 0xBB, 0x52, 0xCF, 0x20, 0x01, 0x67, 0xE0, 0x7D, - 0x80, 0x69, 0xBA, 0x81, 0xF5, 0x3A, 0x55, 0x40, 0x4E, 0x4F, 0x9B, 0xDD, - 0x0F, 0xF9, 0x20, 0xB8, 0x4A, 0x16, 0x58, 0x21, 0x6D, 0x71, 0x42, 0x78, - 0xC4, 0x25, 0x3D, 0x6F, 0x9C, 0xC5, 0xE1, 0x2B, 0x39, 0xE0, 0x52, 0x07, - 0x4A, 0xFF, 0x62, 0x2C, 0xD2, 0xAB, 0xF3, 0x5B, 0x20, 0xB3, 0x85, 0x44, - 0x24, 0x84, 0x8C, 0x3C, 0x38, 0x09, 0x9A, 0x3A, 0x4E, 0xAF, 0xBC, 0xAB, - 0x6E, 0x0D, 0x60, 0x30, 0xBA, 0x04, 0xAA, 0x74, 0x93, 0x15, 0x14, 0xB8, - 0xD4, 0x20, 0xD6, 0x2F, 0x2B, 0x23, 0x7F, 0x03, 0xC1, 0x3F, 0xF0, 0xE2, - 0xBA, 0x77, 0x9C, 0xF3, 0x83, 0xE5, 0x61, 0x11, 0xA2, 0x77, 0x9D, 0xB8, - 0x65, 0xB5, 0x87, 0xC2, 0xFD, 0xEA, 0x9E, 0x6E, 0xBA, 0x5D, 0x5E, 0x76, - 0x46, 0x49, 0x4E, 0x5A, 0x5F, 0x4C, 0x96, 0xB1, 0x5F, 0x6A, 0xE5, 0xA2, - 0xC2, 0xDB, 0xC6, 0x66, 0x92, 0xD7, 0xD4, 0x80, 0x6F, 0x63, 0x01, 0x1C, - 0x0D, 0x13, 0xB5, 0xA9, 0x72, 0x8B, 0x6B, 0xA6, 0xF0, 0x98, 0xE4, 0xC6, - 0xF8, 0x46, 0x23, 0x61, 0x1E, 0x4C, 0xFD, 0xFF, 0x3E, 0x4C, 0x78, 0xE8, - 0x49, 0xCE, 0xA6, 0xD0, 0x5C, 0x2B, 0x85, 0x7D, 0xB4, 0xF5, 0x7D, 0x71, - 0x1C, 0x89, 0x57, 0x42, 0x6A, 0x7A, 0x71, 0x44, 0x75, 0x01, 0x90, 0xC3, - 0xBF, 0x95, 0x7B, 0x0A, 0x4E, 0x01, 0x0A, 0x52, 0xF4, 0xA0, 0x21, 0x94, - 0x7C, 0xEB, 0xA9, 0xEB, 0xAD, 0x1B, 0xBE, 0x78, 0x98, 0x04, 0xC4, 0x26, - 0x20, 0x73, 0x5F, 0xB5, 0x45, 0x6C, 0xE2, 0xC7, 0x04, 0xD2, 0xEB, 0x67, - 0xE5, 0x8F, 0x2F, 0xA0, 0x66, 0x4C, 0xBD, 0x36, 0x2C, 0xFE, 0x8E, 0x40, - 0x46, 0xB6, 0xAB, 0x2F, 0xCF, 0x1F, 0xA1, 0x3E, 0xBF, 0x96, 0x61, 0x74, - 0x68, 0xD6, 0x82, 0x1D, 0x12, 0xD5, 0xFD, 0xB9, 0x45, 0xDA, 0x8D, 0x2B, - 0x76, 0xDE, 0x9C, 0x65, 0xA0, 0x2D, 0x76, 0x2F, 0x49, 0x2E, 0xEC, 0x27, - 0xD4, 0x40, 0x26, 0xA3, 0x06, 0x01, 0x2E, 0x60, 0x04, 0x94, 0x43, 0xA4, - 0x79, 0x5D, 0xEA, 0xD8, 0xD1, 0x5B, 0x95, 0xF2, 0x2E, 0x13, 0x17, 0x9E, - 0xED, 0x7A, 0x7E, 0x83, 0x86, 0xDF, 0xD1, 0xD4, 0xE9, 0x00, 0x55, 0x8D, - 0xCA, 0x4F, 0x18, 0x74, 0x4E, 0x5E, 0x7C, 0xAC, 0xE9, 0x4A, 0x25, 0xA7, - 0x3A, 0x84, 0x43, 0xF5, 0x77, 0x74, 0x1E, 0xDC, 0x32, 0xDB, 0x50, 0xCF, - 0xF8, 0xAC, 0x01, 0x37, 0x33, 0x59, 0xBE, 0xF5, 0xC2, 0x98, 0xE7, 0x09, - 0x29, 0xE3, 0x6E, 0xBC, 0x22, 0x1D, 0x20, 0x06, 0x89, 0x90, 0x95, 0xCC, - 0xC7, 0x3F, 0x2B, 0x48, 0x5F, 0x23, 0x0B, 0xCB, 0xD5, 0xA2, 0x4E, 0x52, - 0x5A, 0x1E, 0x1A, 0x4C, 0x51, 0x75, 0x67, 0x33, 0xD6, 0xF1, 0xBE, 0x9B, - 0x8D, 0x31, 0x0F, 0xBA, 0x2A, 0x67, 0x58, 0xF5, 0x62, 0xC3, 0x80, 0x48, - 0x89, 0x5C, 0x3F, 0x81, 0xFF, 0x27, 0x6E, 0x0B, 0x79, 0x6A, 0xD0, 0x33, - 0xD6, 0x2D, 0x6A, 0xF1, 0x36, 0xCC, 0x96, 0x6C, 0xA6, 0x6D, 0xA0, 0x92, - 0x04, 0x5B, 0x27, 0xC9, 0x05, 0x1D, 0xCA, 0xB2, 0x8D, 0x4F, 0x20, 0xB6, - 0xEA, 0xE4, 0x57, 0xAE, 0xAF, 0x77, 0xF7, 0xA8, 0xA5, 0xCD, 0xFF, 0x5C, - 0xB9, 0x7F, 0x29, 0x98, 0x2C, 0x5E, 0xDA, 0x69, 0x3E, 0x99, 0x21, 0x25, - 0x49, 0x1F, 0xEA, 0xD4, 0x91, 0x63, 0x89, 0xB8, 0xEC, 0xCF, 0x8B, 0x1D, - 0xF6, 0x33, 0x3C, 0x29, 0x26, 0xEF, 0xAC, 0x81, 0x12, 0xC5, 0x1B, 0x44, - 0xAC, 0x18, 0x90, 0x20, 0xBB, 0x03, 0x5B, 0x3F, 0x3E, 0xD3, 0xD3, 0xC5, - 0x47, 0xAF, 0x7F, 0x44, 0x9E, 0x32, 0xC5, 0x06, 0xE9, 0xB6, 0x7D, 0xB3, - 0xA1, 0xF6, 0x77, 0x29, 0x7F, 0xA9, 0xA9, 0x10, 0x20, 0xCE, 0x2E, 0x18, - 0xC8, 0xAA, 0x68, 0x65, 0x64, 0x11, 0x57, 0x4F, 0xE9, 0xA2, 0xE3, 0xD1, - 0xEA, 0x03, 0x40, 0xAC, 0x68, 0x04, 0xC8, 0x36, 0x69, 0xE9, 0xB5, 0x6D, - 0x77, 0x93, 0xFA, 0xD6, 0xB8, 0xA5, 0x71, 0x63, 0x70, 0xE8, 0xA0, 0x27, - 0x39, 0xD7, 0x33, 0x52, 0x76, 0x59, 0xF1, 0xEF, 0xE2, 0x76, 0x83, 0xC5, - 0x4D, 0xC5, 0xA3, 0xF2, 0x10, 0x4C, 0xB3, 0x35, 0x6E, 0x12, 0x5B, 0x26, - 0x7C, 0x4A, 0x8B, 0xFB, 0x02, 0x2B, 0xBE, 0xF4, 0x0A, 0x91, 0xF5, 0x7C, - 0x82, 0x08, 0x62, 0x70, 0xD8, 0xA4, 0x29, 0xE0, 0xF8, 0x97, 0x19, 0x1D, - 0x06, 0xD3, 0x46, 0x90, 0xEB, 0xB5, 0x89, 0x5B, 0x6C, 0x50, 0xB5, 0xB6, - 0x70, 0x58, 0xA0, 0x30, 0x05, 0xF5, 0x40, 0x51, 0x4E, 0x30, 0xDF, 0x64, - 0x6F, 0x7A, 0x4E, 0x54, 0x64, 0xE3, 0x20, 0xD3, 0x93, 0xE3, 0x79, 0x28, - 0x39, 0xB1, 0x18, 0xDF, 0xCC, 0xF1, 0x98, 0xD1, 0x2D, 0x86, 0x34, 0x84, - 0xA1, 0x83, 0x4A, 0xE5, 0xA9, 0x61, 0x6B, 0x09, 0xA2, 0x3B, 0xCE, 0x5E, - 0xF7, 0x6B, 0xFF, 0xC2, 0x20, 0xFC, 0xF3, 0xAC, 0x2E, 0x7C, 0x63, 0x55, - 0x11, 0x24, 0xEE, 0xE3, 0x51, 0xE6, 0x18, 0xB0, 0xD6, 0x6E, 0x85, 0xF5, - 0xE5, 0x00, 0x91, 0x21, 0xD4, 0x88, 0xF1, 0x50, 0x31, 0x39, 0x0A, 0x08, - 0x23, 0xA9, 0x01, 0xB3, 0xEF, 0xE8, 0xAF, 0xDF, 0xAE, 0x2B, 0xAF, 0xF9, - 0x0D, 0xE2, 0x4D, 0x00, 0xE3, 0x5B, 0x56, 0x80, 0x90, 0xB8, 0xD4, 0x76, - 0xEA, 0x14, 0x68, 0x40, 0x53, 0x9A, 0x3B, 0x82, 0xFC, 0x63, 0x9F, 0x9A, - 0x4C, 0xFF, 0xE3, 0x10, 0x49, 0xCB, 0xA8, 0x1D, 0x59, 0x98, 0x3F, 0x4C, - 0xDD, 0x2C, 0xB2, 0x8D, 0x11, 0xB5, 0x23, 0xF4, 0x90, 0x87, 0xE3, 0x85, - 0x24, 0xD4, 0x0A, 0xE9, 0x79, 0xBB, 0x1F, 0x56, 0xC3, 0x62, 0x35, 0xDF, - 0xE0, 0xAA, 0x51, 0x02, 0x93, 0xAE, 0x11, 0x21, 0xCF, 0xE4, 0xF3, 0x84, - 0x08, 0x64, 0x06, 0x8B, 0x8A, 0x32, 0xB0, 0xF0, 0xC5, 0xD3, 0x5E, 0x1E, - 0xF1, 0x69, 0x48, 0x46, 0xEC, 0x61, 0xA2, 0x7F, 0x28, 0xB6, 0xF8, 0xC9, - 0x78, 0x35, 0x9B, 0x4D, 0x8C, 0xFE, 0xB7, 0xC9, 0xBC, 0xE9, 0x6E, 0x17, - 0xCB, 0xFB, 0x00, 0x91, 0xE8, 0x27, 0x77, 0x7C, 0x96, 0xD6, 0xAF, 0x8D, - 0xE4, 0x18, 0x8F, 0xEB, 0x7B, 0x9F, 0x01, 0x9C, 0x2E, 0x77, 0xF5, 0x40, - 0x7C, 0x6D, 0x85, 0xA5, 0x17, 0x8F, 0x40, 0xB7, 0x9D, 0xBB, 0x68, 0x96, - 0x22, 0x17, 0x0A, 0x75, 0xA3, 0x1D, 0x07, 0xE4, 0x93, 0x8A, 0xBB, 0xAD, - 0x7E, 0x2E, 0xAA, 0x21, 0xDA, 0x62, 0xBF, 0xE8, 0xBB, 0x28, 0xB2, 0xCE, - 0xE3, 0x0F, 0xCB, 0x3C, 0x2C, 0x4A, 0x3D, 0xAA, 0xFC, 0x4B, 0xB5, 0x6A, - 0x04, 0x05, 0xA4, 0x63, 0x98, 0xD8, 0xA2, 0x5E, 0x96, 0xD5, 0x52, 0x7B, - 0xCB, 0xED, 0xA3, 0x72, 0x3E, 0x2A, 0x3F, 0xE2, 0x79, 0x3D, 0xFE, 0x8A, - 0xA0, 0xD4, 0x32, 0x60, 0x10, 0xBE, 0xF2, 0xE5, 0xF9, 0x03, 0xE2, 0x66, - 0x76, 0x7A, 0x48, 0xEF, 0x33, 0x63, 0xA0, 0x93, 0x99, 0x28, 0x97, 0x40, - 0xB9, 0xAD, 0xEC, 0xB4, 0xD7, 0x98, 0x9D, 0x87, 0x6A, 0x6C, 0x9D, 0xD5, - 0xF6, 0xAA, 0x64, 0xE4, 0xD6, 0x73, 0x92, 0xA9, 0xC2, 0xB4, 0x80, 0x0F, - 0x58, 0x7B, 0x01, 0x17, 0xAD, 0x7C, 0x3E, 0x5C, 0xDE, 0x7D, 0x77, 0xF2, - 0x35, 0x4E, 0x6F, 0x0D, 0xE1, 0x4E, 0xAD, 0x4E, 0x82, 0x36, 0x87, 0x89, - 0x43, 0x13, 0x50, 0x08, 0x22, 0x3D, 0x14, 0x3D, 0x85, 0x50, 0xBC, 0x17, - 0x18, 0x66, 0xE1, 0x85, 0xEF, 0xCA, 0xF1, 0x12, 0x9B, 0xA1, 0xC0, 0x95, - 0x14, 0x2E, 0x2C, 0xB6, 0x1B, 0x25, 0x9F, 0x4C, 0xF2, 0x49, 0xAE, 0x8A, - 0xD4, 0xE7, 0x1A, 0x05, 0xFB, 0x6F, 0x75, 0x42, 0xC6, 0x14, 0xD8, 0xE5, - 0x03, 0x04, 0x80, 0xEB, 0x58, 0x8F, 0x92, 0xAF, 0xD1, 0x15, 0x00, 0x63, - 0xB7, 0xFF, 0xF8, 0xD7, 0xE3, 0xC0, 0x37, 0xEF, 0x68, 0xF9, 0xC8, 0x5A, - 0x03, 0x6D, 0x4A, 0x56, 0xAE, 0xDF, 0x8E, 0xBD, 0x52, 0x5F, 0x7D, 0x22, - 0x4A, 0xFA, 0xFE, 0xA2, 0x3F, 0xCE, 0x45, 0xD8, 0x41, 0x94, 0x70, 0x21, - 0x48, 0xF7, 0x95, 0xE5, 0xE4, 0x22, 0x52, 0x7E, 0x15, 0xAE, 0xC7, 0x34, - 0xA8, 0xF9, 0x15, 0x4B, 0x15, 0x11, 0x19, 0x19, 0xDC, 0x4A, 0x3D, 0x3D, - 0x33, 0x79, 0x0E, 0x8A, 0x34, 0x11, 0xEB, 0x4A, 0x8B, 0xAF, 0x0F, 0xE8, - 0xBA, 0x3E, 0x94, 0xA6, 0x2C, 0xF8, 0xF8, 0xA9, 0xD1, 0xE7, 0x3A, 0x3D, - 0x44, 0xC8, 0x08, 0x47, 0x5E, 0xD8, 0xF1, 0x6C, 0xCD, 0x8C, 0x60, 0xD7, - 0xF6, 0xA5, 0x57, 0xF2, 0x0C, 0xD6, 0x9E, 0x0C, 0x90, 0xCB, 0xAE, 0xC0, - 0xC1, 0x62, 0xD4, 0xC6, 0x6C, 0x7F, 0xED, 0x38, 0x23, 0x48, 0x0B, 0x53, - 0x64, 0xBE, 0xD2, 0x6C, 0xE2, 0xAB, 0x71, 0x9E, 0x51, 0x87, 0xBF, 0x54, - 0xC1, 0x36, 0xC0, 0x5B, 0x0E, 0xD0, 0x63, 0xE9, 0x1C, 0x0C, 0x07, 0x3B, - 0xAE, 0xEE, 0xA5, 0x51, 0x1E, 0xE6, 0x8E, 0x01, 0x1E, 0x59, 0xEA, 0x6C, - 0x25, 0x63, 0x33, 0x08, 0x08, 0x2C, 0x21, 0xF5, 0xEA, 0x01, 0x56, 0x44, - 0x7D, 0xE0, 0x85, 0x1C, 0xD5, 0x4D, 0x8D, 0xC2, 0xB7, 0xEE, 0x54, 0x51, - 0xCA, 0x8B, 0xA6, 0xCF, 0x47, 0x85, 0x02, 0x29, 0xDD, 0x60, 0x42, 0xE4, - 0x17, 0x8E, 0x42, 0x5D, 0xFF, 0x10, 0x91, 0x25, 0x46, 0x93, 0x6B, 0xDA, - 0xAD, 0xDA, 0x01, 0x0F, 0x31, 0x85, 0x53, 0x9E, 0x7A, 0x3C, 0x14, 0xF5, - 0xF0, 0xA4, 0x12, 0x9B, 0xED, 0xC7, 0x83, 0x73, 0xA4, 0x6B, 0xC8, 0xAA, - 0x7B, 0xD4, 0x64, 0xF7, 0xF5, 0xD3, 0x07, 0x2F, 0x41, 0x8B, 0x09, 0xBF, - 0xC7, 0xBD, 0x00, 0x2A, 0xBC, 0xBA, 0xFC, 0x9A, 0xE2, 0x58, 0x64, 0xFD, - 0xE1, 0x60, 0x4E, 0x3C, 0x60, 0xE3, 0x84, 0xCD, 0xD3, 0xAE, 0xB4, 0x0D, - 0xF8, 0xA3, 0xAA, 0x74, 0xE1, 0x42, 0x18, 0x56, 0xA6, 0x72, 0x65, 0xD1, - 0x14, 0xCC, 0xFE, 0x1F, 0xD0, 0x91, 0x84, 0xA1, 0x6A, 0x33, 0x76, 0x97, - 0x5B, 0x72, 0x3F, 0xB3, 0xB8, 0xDF, 0xD9, 0x3E, 0x1D, 0x1E, 0xFD, 0x35, - 0xDF, 0x4B, 0xD7, 0x50, 0xE7, 0x2D, 0x1B, 0xC8, 0xCA, 0xB3, 0x89, 0xE4, - 0x56, 0xA9, 0x81, 0x4A, 0xED, 0x96, 0xE3, 0x0C, 0xE5, 0x9F, 0x60, 0xF5, - 0xB4, 0x9A, 0xCD, 0xAD, 0xBA, 0x63, 0x8B, 0x54, 0x39, 0xD0, 0x0A, 0xE9, - 0x98, 0x5E, 0xC1, 0xC9, 0x40, 0xB7, 0xA4, 0x10, 0x32, 0x7D, 0x9E, 0x00, - 0x68, 0x69, 0xB8, 0x23, 0xDF, 0xBE, 0xC0, 0x45, 0x33, 0xF1, 0x8E, 0x27, - 0xED, 0xA1, 0xD9, 0x38, 0x74, 0xF2, 0x8A, 0xBE, 0x85, 0x1E, 0xF0, 0x5B, - 0x1A, 0x34, 0x93, 0x72, 0xDE, 0x37, 0xD7, 0x83, 0xEB, 0x7B, 0x28, 0x5E, - 0x14, 0x2A, 0xBC, 0xC7, 0xE2, 0xB3, 0x06, 0x29, 0x76, 0x37, 0xD3, 0xC4, - 0x47, 0x8A, 0xDB, 0xC7, 0x30, 0x02, 0x66, 0xC9, 0x53, 0x5E, 0xBA, 0xDB, - 0x07, 0x60, 0x0D, 0x6B, 0x54, 0xCB, 0x0C, 0xC1, 0x27, 0x54, 0xDE, 0x12, - 0xED, 0x7D, 0x8E, 0x76, 0xCD, 0x57, 0x52, 0x88, 0xF0, 0x16, 0x9C, 0x80, - 0xE1, 0x00, 0x50, 0x95, 0x61, 0x8E, 0x55, 0xEE, 0xE1, 0xC9, 0x8F, 0xD4, - 0x1C, 0x74, 0xDD, 0x85, 0xCB, 0xE5, 0x7C, 0x8B, 0x24, 0x4C, 0x4B, 0xDA, - 0x16, 0x98, 0xA0, 0x70, 0x58, 0x13, 0x5D, 0x05, 0x0C, 0x3F, 0x61, 0xE3, - 0x14, 0xE2, 0xEF, 0x92, 0xC8, 0x3A, 0xDA, 0xFF, 0x0E, 0x1A, 0xB3, 0x7D, - 0x02, 0x43, 0xDD, 0xE5, 0xE3, 0x8C, 0xE9, 0xFC, 0xD1, 0x66, 0xA2, 0x8E, - 0x4D, 0x81, 0xA4, 0x4C, 0xBF, 0x4D, 0x9B, 0x67, 0x53, 0x63, 0x11, 0x86, - 0x78, 0x54, 0xF0, 0x9E, 0x70, 0x56, 0x1C, 0x5F, 0xBA, 0xC9, 0x1C, 0xAB, - 0xC8, 0x39, 0x8B, 0xC9, 0xE4, 0xB1, 0x07, 0xEA, 0xB5, 0xD4, 0x75, 0xF2, - 0x91, 0x83, 0x1C, 0x2F, 0x73, 0xEC, 0xFB, 0x56, 0x68, 0xA1, 0xC8, 0xAC, - 0xCA, 0x20, 0x3F, 0x6A, 0xE9, 0xBF, 0xC1, 0x1D, 0x00, 0xBC, 0x23, 0x1F, - 0x1E, 0xF8, 0xC3, 0x08, 0xBD, 0x66, 0xA5, 0xF6, 0x5D, 0x77, 0xD5, 0x5A, - 0x6D, 0x04, 0xEB, 0x76, 0x9E, 0xDB, 0x0C, 0x8C, 0x28, 0x9F, 0xCC, 0x4E, - 0x77, 0xFC, 0x00, 0x36, 0xEC, 0xCE, 0x4B, 0x72, 0x06, 0xD1, 0x73, 0x1A, - 0xD8, 0x91, 0x45, 0x55, 0xB8, 0xA7, 0x8C, 0x40, 0xCA, 0xF7, 0xCF, 0x39, - 0x6A, 0x74, 0x63, 0xD3, 0x71, 0x76, 0xA4, 0x59, 0xB8, 0x8C, 0xB5, 0x4E, - 0xCA, 0x12, 0x35, 0xB5, 0x87, 0x9F, 0xA9, 0x94, 0x07, 0x67, 0x4D, 0xF0, - 0xDF, 0x97, 0x0F, 0x53, 0x68, 0xCC, 0x67, 0x26, 0xF8, 0xF5, 0xBE, 0xAD, - 0x1E, 0x95, 0xD0, 0x90, 0x88, 0x27, 0xA8, 0x3D, 0x4F, 0xA1, 0x58, 0xDE, - 0x8F, 0xBC, 0x36, 0x2F, 0x36, 0x0B, 0x38, 0x9A, 0x51, 0x95, 0xA2, 0xE5, - 0x8F, 0xC5, 0x1D, 0xE4, 0x2E, 0x27, 0x9D, 0xEA, 0x43, 0xD7, 0x07, 0x02, - 0x0B, 0x26, 0x85, 0xD3, 0xEC, 0xA3, 0x67, 0xA9, 0xC3, 0x23, 0xFA, 0x46, - 0x5F, 0x9C, 0x64, 0xD5, 0xCC, 0x7D, 0x75, 0xE3, 0x51, 0x32, 0x31, 0x1F, - 0x51, 0x99, 0xF0, 0x57, 0x30, 0xC9, 0x22, 0xA0, 0x2B, 0xA3, 0xA7, 0x7A, - 0x26, 0x21, 0x91, 0xD1, 0x75, 0xD4, 0xB7, 0x0B, 0xC5, 0x96, 0x71, 0x66, - 0x2D, 0x5E, 0xDA, 0x71, 0x48, 0xEA, 0xAC, 0x97, 0x8B, 0x23, 0xD5, 0x49, - 0xC2, 0x66, 0x1D, 0x62, 0xFC, 0x06, 0x17, 0xA1, 0xEC, 0x71, 0x17, 0xA0, - 0x3B, 0xE3, 0xF0, 0xF7, 0x0D, 0xCB, 0x84, 0xB6, 0x7C, 0xC0, 0x42, 0x0E, - 0xB8, 0xA3, 0x8C, 0x31, 0x4A, 0x9A, 0xAA, 0x97, 0xFC, 0x67, 0xB1, 0x75, - 0xC6, 0x51, 0xFC, 0x28, 0x69, 0xD0, 0x43, 0x28, 0x54, 0xB9, 0xAE, 0xBE, - 0x44, 0x7A, 0x18, 0x36, 0x39, 0x26, 0x46, 0x29, 0x33, 0x0E, 0x15, 0xAF, - 0x03, 0x21, 0x07, 0x87, 0xDE, 0x30, 0xE3, 0xE5, 0xDA, 0x34, 0x81, 0xE5, - 0xE2, 0xCD, 0x6B, 0xEE, 0xEF, 0x95, 0xD3, 0x2C, 0x7B, 0x31, 0x15, 0x56, - 0xB4, 0x77, 0xDA, 0x40, 0xFD, 0x59, 0xB9, 0xDF, 0xEC, 0x39, 0x2B, 0x6C, - 0x18, 0x7E, 0xCA, 0x99, 0x5E, 0x55, 0xF2, 0x61, 0x45, 0x74, 0x2C, 0x50, - 0xB7, 0x42, 0x31, 0xD9, 0x58, 0xAE, 0x75, 0x17, 0x4D, 0xFA, 0xF1, 0x18, - 0x26, 0x6B, 0x2C, 0xD9, 0xE8, 0x98, 0x75, 0xE7, 0x8A, 0xC9, 0x07, 0x63, - 0x6D, 0x55, 0xFD, 0xEE, 0x2D, 0x24, 0x4D, 0x0F, 0x11, 0x7C, 0x0B, 0x48, - 0x99, 0xC0, 0x06, 0x83, 0xC3, 0xF5, 0x90, 0xBD, 0x12, 0xE7, 0xC6, 0x86, - 0x16, 0x8A, 0x63, 0xD7, 0xF8, 0x1E, 0x54, 0xCD, 0x06, 0x20, 0x4C, 0x5C, - 0xC6, 0x15, 0x76, 0x56, 0xE0, 0xE1, 0xDD, 0xE4, 0xC1, 0x63, 0x75, 0x53, - 0xBC, 0xE1, 0x8C, 0xBF, 0x26, 0x41, 0xF9, 0xA9, 0xCC, 0xEE, 0x69, 0xEA, - 0x7D, 0x0E, 0x9F, 0xF2, 0x70, 0x0C, 0x4A, 0xD0, 0x2D, 0x17, 0x47, 0xB0, - 0x66, 0xD4, 0xDF, 0x9A, 0xDC, 0xAD, 0x94, 0xE6, 0x66, 0x3F, 0x0D, 0x57, - 0xB3, 0xAD, 0x90, 0xD0, 0xD7, 0x72, 0x3D, 0x1E, 0x9C, 0xAF, 0x1A, 0x46, - 0x20, 0x8B, 0x48, 0xEA, 0x3A, 0x10, 0x42, 0x32, 0x3D, 0xB9, 0xEB, 0x61, - 0x47, 0x29, 0x61, 0xED, 0xB6, 0x8C, 0x1D, 0x9E, 0xD4, 0x00, 0x34, 0xD9, - 0xAB, 0x16, 0x16, 0x84, 0xAF, 0xC5, 0x79, 0x37, 0xE4, 0xC9, 0xBE, 0x91, - 0x57, 0x4F, 0xFE, 0x87, 0xF7, 0x47, 0x62, 0x99, 0x4F, 0xFA, 0xAE, 0x51, - 0x68, 0x1A, 0xE2, 0x90, 0xB5, 0x62, 0x21, 0xE4, 0x06, 0x14, 0x3D, 0xB5, - 0xC2, 0x34, 0xB0, 0xF3, 0x6B, 0x0D, 0xF7, 0x0F, 0x3C, 0x54, 0xD6, 0x2B, - 0xCF, 0xD8, 0xD1, 0x9B, 0x54, 0x8B, 0x93, 0xBB, 0x15, 0xF1, 0xC5, 0x9F, - 0x24, 0x53, 0x02, 0x94, 0xDE, 0x66, 0x4F, 0x2F, 0x77, 0xF6, 0xE4, 0x4C, - 0x58, 0x19, 0xBB, 0x08, 0x0A, 0x9B, 0xAC, 0x4C, 0xA5, 0xAC, 0x4A, 0x66, - 0x72, 0x01, 0x45, 0x41, 0xDA, 0x86, 0xF9, 0x7C, 0x0A, 0x8E, 0xA6, 0xFD, - 0x10, 0x18, 0x4F, 0x2F, 0xEA, 0x5A, 0xD9, 0x79, 0xD2, 0xD8, 0x3F, 0x02, - 0x11, 0x5F, 0x43, 0x79, 0x3A, 0x40, 0x75, 0x6C, 0xFC, 0x3A, 0x24, 0xEB, - 0xBF, 0xD2, 0xC0, 0xF3, 0xD0, 0xD1, 0x21, 0xA9, 0x84, 0xFB, 0x9D, 0xA3, - 0xF1, 0x0F, 0x57, 0xAE, 0x99, 0xCB, 0x3B, 0xBC, 0x55, 0x88, 0xE6, 0xE1, - 0x7D, 0xC6, 0xDB, 0xA9, 0x35, 0x59, 0x11, 0x26, 0x05, 0x0E, 0x8E, 0x5D, - 0xBE, 0xF1, 0x32, 0x5A, 0xBF, 0xBE, 0xE8, 0x07, 0xB8, 0x80, 0x61, 0x70, - 0xEA, 0x8C, 0x05, 0xC0, 0x4D, 0xBF, 0xE9, 0x63, 0xA1, 0x11, 0xFC, 0x0A, - 0x4B, 0x6D, 0x03, 0x11, 0x86, 0x7A, 0x69, 0x49, 0x15, 0xDA, 0x23, 0x67, - 0xC5, 0x51, 0x3A, 0x5A, 0xAD, 0xCA, 0xAC, 0xF7, 0xD7, 0x6C, 0x0E, 0x2D, - 0xC5, 0x88, 0xD9, 0x95, 0x48, 0x58, 0x70, 0x37, 0xBE, 0x8E, 0xBC, 0xF6, - 0x14, 0x4C, 0xA0, 0x13, 0x9C, 0x8D, 0x58, 0x9F, 0x02, 0xAB, 0x65, 0xCA, - 0x66, 0x73, 0x84, 0x3B, 0xC6, 0xD5, 0x43, 0x9E, 0x1C, 0xCE, 0xA0, 0x00, - 0x59, 0xEC, 0x4A, 0xC0, 0x9D, 0x31, 0x5A, 0xB2, 0x0A, 0x86, 0x23, 0x2A, - 0xCD, 0xCF, 0x18, 0x96, 0xE2, 0xE5, 0xFF, 0x36, 0xBC, 0x66, 0x8A, 0xA7, - 0x8A, 0xE0, 0xF4, 0x06, 0x39, 0x7C, 0xCF, 0x21, 0xEE, 0x17, 0x39, 0x87, - 0x74, 0xA0, 0x73, 0x38, 0xA9, 0x90, 0x6C, 0xC2, 0x1B, 0xF0, 0x69, 0xD8, - 0xBF, 0x6E, 0x44, 0x6F, 0x77, 0x75, 0x1E, 0x45, 0xB5, 0x65, 0xAD, 0xDF, - 0x56, 0x66, 0xFD, 0xA0, 0x59, 0x85, 0xC5, 0x06, 0x0C, 0xBF, 0xD5, 0x17, - 0xA1, 0x48, 0x99, 0x63, 0xEE, 0xF0, 0x7D, 0xAE, 0x3A, 0x7C, 0x6A, 0x7C, - 0xB4, 0xDA, 0xDB, 0x1A, 0xED, 0x70, 0xF9, 0x4D, 0xD2, 0xA4, 0x09, 0xE4, - 0xFA, 0x4B, 0x95, 0xDD, 0x95, 0x7B, 0x3D, 0xD1, 0x52, 0xDB, 0x59, 0x68, - 0xFF, 0xE5, 0x13, 0x39, 0xE5, 0x01, 0x12, 0x7F, 0x9A, 0x0E, 0xFF, 0x35, - 0x75, 0x6A, 0x56, 0xEA, 0x66, 0x91, 0xF7, 0x3E, 0x71, 0x86, 0x6C, 0xC3, - 0x11, 0x1B, 0x04, 0x4C, 0x98, 0x13, 0xA1, 0x35, 0x23, 0x96, 0xC9, 0x8C, - 0xFB, 0x43, 0x96, 0x4B, 0xC0, 0x1F, 0x30, 0x95, 0xAA, 0x8B, 0x27, 0x16, - 0x6C, 0x91, 0x0D, 0x62, 0xAB, 0x87, 0x1A, 0xDA, 0x61, 0xB1, 0x2E, 0xBC, - 0x19, 0xA8, 0xF0, 0x32, 0xD7, 0x06, 0x6F, 0x82, 0xFD, 0x5F, 0xF1, 0x08, - 0x5E, 0x97, 0x83, 0xEF, 0xB0, 0x91, 0xC2, 0xE6, 0x37, 0x47, 0xFC, 0xD1, - 0xE7, 0x6C, 0xC1, 0x1A, 0xAF, 0x91, 0xDF, 0x5C, 0x2D, 0x1B, 0xBC, 0x6A, - 0x10, 0xAC, 0xAE, 0x2C, 0x34, 0xCD, 0xD2, 0x6B, 0x15, 0x07, 0xEA, 0xD0, - 0x6C, 0x3E, 0x19, 0x14, 0xEF, 0x35, 0xA4, 0x2B, 0x17, 0xF8, 0x2F, 0x48, - 0x0D, 0x5C, 0x70, 0xE2, 0xFF, 0x94, 0x2B, 0x59, 0x3C, 0xDE, 0x2F, 0x14, - 0x84, 0x5F, 0x0F, 0xF3, 0xA0, 0xFC, 0x40, 0xBE, 0xFA, 0xAE, 0x97, 0xC7, - 0xC6, 0xF3, 0xB5, 0xC2, 0x50, 0xBB, 0xA3, 0xB8, 0xC1, 0x7D, 0x6B, 0xE9, - 0x87, 0x98, 0x8B, 0xBE, 0x19, 0xA5, 0xAC, 0xB1, 0x8D, 0x6C, 0x67, 0x94, - 0x95, 0x7C, 0x60, 0xCC, 0x0B, 0x75, 0x24, 0xB9, 0x54, 0x7D, 0xD4, 0x4D, - 0x9B, 0xF2, 0xA6, 0xFB, 0xC0, 0x78, 0x38, 0x90, 0x19, 0x5A, 0x62, 0x85, - 0x3A, 0x34, 0xD8, 0xCD, 0xA1, 0xA5, 0xD9, 0xC0, 0xC5, 0xB3, 0x6E, 0x26, - 0x13, 0xCF, 0x7C, 0xC1, 0x50, 0x6D, 0x80, 0xCE, 0xF9, 0xA7, 0xFE, 0x2F, - 0x14, 0x53, 0x03, 0x0E, 0xFE, 0xB4, 0xA2, 0x75, 0x0A, 0xB4, 0xD9, 0xDB, - 0xEA, 0xBC, 0xF1, 0xB0, 0x8E, 0xE5, 0x33, 0x49, 0x16, 0xCD, 0x3B, 0x7C, - 0x3B, 0x31, 0x51, 0x8D, 0xF2, 0x12, 0xDB, 0x09, 0xA7, 0x06, 0x7E, 0x66, - 0x09, 0x77, 0xA2, 0x3E, 0xB9, 0xA2, 0xA2, 0xEE, 0xFB, 0x9E, 0x84, 0xF1, - 0x77, 0x28, 0xB1, 0x02, 0xF4, 0xE9, 0x74, 0x56, 0x3D, 0x6F, 0x83, 0x2F, - 0xDE, 0x50, 0x4F, 0xAA, 0x2C, 0xC9, 0x8A, 0x71, 0x45, 0xE1, 0x79, 0x4D, - 0x9B, 0xC0, 0xC0, 0x8B, 0x33, 0x7D, 0x3F, 0x07, 0x2B, 0x4C, 0x16, 0x4F, - 0xD1, 0xFB, 0x28, 0xB8, 0x7B, 0xF2, 0x4F, 0xA8, 0x56, 0x84, 0xDF, 0x61, - 0xEC, 0x1F, 0x4D, 0x95, 0xC5, 0xD7, 0x90, 0x4D, 0x38, 0x35, 0xE5, 0x96, - 0xBA, 0x6D, 0x31, 0xAE, 0xE7, 0xAC, 0xE6, 0xDD, 0x05, 0x5E, 0xD4, 0xF5, - 0x47, 0x5B, 0xEA, 0xA3, 0x36, 0x7C, 0x58, 0x04, 0x41, 0x3C, 0xEC, 0xC6, - 0x70, 0x59, 0xEC, 0x4D, 0xE3, 0x80, 0x59, 0x6D, 0xA1, 0x3A, 0x31, 0xA1, - 0x50, 0xB7, 0x10, 0xC0, 0xC4, 0x47, 0x87, 0xAB, 0xEA, 0x4B, 0xFD, 0xF6, - 0x5C, 0xA8, 0x62, 0x40, 0x3E, 0x89, 0x1D, 0xE1, 0x9B, 0x04, 0x1F, 0x22, - 0x2B, 0xAF, 0x0B, 0xFC, 0xD1, 0x64, 0x4B, 0xCE, 0xC4, 0xF9, 0x19, 0xF4, - 0x21, 0x95, 0xBA, 0xC0, 0x77, 0x4B, 0xFC, 0x15, 0xC7, 0x6F, 0xF7, 0x70, - 0x8E, 0xE2, 0xDF, 0xFE, 0x48, 0xA9, 0x17, 0xA2, 0xAB, 0xA5, 0xFC, 0x2A, - 0x72, 0x08, 0xFF, 0xBC, 0x56, 0xFC, 0xAF, 0xFF, 0x47, 0xEC, 0xCE, 0x29, - 0x17, 0xAE, 0x2D, 0xB3, 0xB3, 0x5F, 0x93, 0x9D, 0x57, 0x2A, 0xF4, 0xDE, - 0xDD, 0xE4, 0xE6, 0x43, 0x73, 0xCA, 0x00, 0x16, 0xB8, 0xD7, 0x15, 0x67, - 0xEB, 0x33, 0x6C, 0xCE, 0x0C, 0xFA, 0x8F, 0xF1, 0x08, 0x6E, 0xC0, 0x3F, - 0xAF, 0x30, 0x9F, 0x2A, 0x98, 0x4C, 0x03, 0x1C, 0x88, 0x7D, 0xBF, 0x7A, - 0xB1, 0xAE, 0x51, 0x69, 0x6D, 0xE9, 0x67, 0x8F, 0x73, 0x3A, 0xB9, 0x58, - 0x9B, 0xB0, 0xE6, 0x14, 0xB2, 0x04, 0x57, 0x85, 0x6E, 0x09, 0x84, 0x53, - 0x1F, 0x6D, 0xAA, 0xD1, 0x42, 0xCA, 0xFA, 0x8D, 0xB5, 0xAA, 0xD6, 0xDC, - 0x9A, 0xC1, 0x90, 0x69, 0x5A, 0xB7, 0xB8, 0x75, 0xD4, 0xD8, 0x5E, 0x2B, - 0x5E, 0xB5, 0x73, 0x4B, 0x42, 0x2D, 0x5C, 0x4C, 0x58, 0x9E, 0xF1, 0xE0, - 0x18, 0x51, 0x5B, 0x68, 0xEA, 0x4E, 0x92, 0x98, 0x62, 0x6C, 0xF8, 0x68, - 0xA8, 0x92, 0x48, 0x8E, 0x2B, 0x11, 0xC7, 0xC5, 0x8E, 0x3A, 0x3C, 0xFF, - 0xB3, 0x93, 0x32, 0xA8, 0x55, 0x94, 0x0E, 0xA1, 0x78, 0x7E, 0x3D, 0xD2, - 0xF0, 0xA2, 0x27, 0x1B, 0x8F, 0x14, 0x73, 0x0B, 0xE7, 0xC9, 0xBE, 0xE5, - 0x49, 0xCF, 0x26, 0xE2, 0xC0, 0x5E, 0x51, 0xE5, 0xAC, 0x32, 0x45, 0x37, - 0x6A, 0x4C, 0xF9, 0xCC, 0x6C, 0x0A, 0x0B, 0xEE, 0x1C, 0x5B, 0x7D, 0xE8, - 0xDF, 0x83, 0x96, 0x0E, 0x7D, 0x6E, 0x87, 0x2D, 0x4A, 0xA8, 0x00, 0x7C, - 0xE9, 0xE2, 0x1A, 0xE7, 0x9E, 0x9D, 0x09, 0x99, 0xA5, 0xB6, 0x46, 0x4D, - 0xDE, 0xD7, 0xA9, 0x9B, 0x13, 0xA5, 0xC9, 0xB1, 0x6E, 0xDC, 0xF6, 0x42, - 0x20, 0x08, 0x86, 0xFE, 0x8A, 0x3E, 0x42, 0x42, 0x33, 0x0B, 0x54, 0xD1, - 0xB9, 0x97, 0x86, 0x03, 0xC9, 0xA7, 0x20, 0x0B, 0x09, 0x46, 0x0C, 0xCF, - 0x6B, 0x7B, 0x74, 0x95, 0xFE, 0xC0, 0x24, 0x8D, 0x12, 0xBD, 0xC9, 0x60, - 0x48, 0x2F, 0x02, 0x77, 0x5C, 0x5F, 0x86, 0xA9, 0x39, 0xB3, 0x7C, 0x77, - 0x10, 0xCE, 0xE9, 0xB4, 0x61, 0x63, 0x63, 0x39, 0x86, 0x89, 0x97, 0x4A, - 0xD3, 0x16, 0x51, 0x1F, 0x8E, 0xFC, 0xF0, 0x51, 0xF4, 0x5D, 0x62, 0x73, - 0xF3, 0x47, 0x82, 0x04, 0xF0, 0xD8, 0xD8, 0xD5, 0x16, 0x63, 0x96, 0xBE, - 0xF5, 0xB5, 0x4A, 0x70, 0xCB, 0x8B, 0x23, 0xF5, 0xB0, 0xEE, 0x0F, 0xFA, - 0xC7, 0x9A, 0xA5, 0xB1, 0x6B, 0x39, 0x53, 0x90, 0xAF, 0xF8, 0x9F, 0xCC, - 0x99, 0xE4, 0x65, 0x7A, 0x69, 0xBD, 0x2B, 0x1F, 0x27, 0x3F, 0x87, 0x69, - 0x2D, 0x1E, 0x9F, 0xC2, 0x96, 0xE9, 0x64, 0xEC, 0xF8, 0x34, 0x30, 0xA1, - 0xC3, 0xAF, 0x77, 0x55, 0x42, 0x30, 0xA7, 0x8E, 0x35, 0x12, 0xBF, 0x1C, - 0xA3, 0x1F, 0x74, 0x43, 0x41, 0xD5, 0x35, 0xC9, 0x02, 0x6E, 0xB9, 0x3C, - 0x12, 0x6D, 0x23, 0x3B, 0xD6, 0xCB, 0x2D, 0x01, 0xCA, 0x96, 0xCB, 0x36, - 0xCD, 0x65, 0x81, 0x04, 0xDA, 0x83, 0xB2, 0x8E, 0x32, 0xB7, 0x85, 0xAE, - 0x7F, 0xC2, 0x2F, 0x05, 0xFE, 0x0C, 0x29, 0x9D, 0x21, 0x8D, 0x9E, 0xED, - 0x9A, 0x45, 0xCD, 0xD6, 0xC1, 0xC5, 0x22, 0xAF, 0x4B, 0xFD, 0xED, 0xEE, - 0x34, 0xA4, 0xD7, 0x51, 0xFE, 0x05, 0x20, 0xE0, 0x25, 0xBF, 0x4D, 0xCE, - 0xCE, 0x8B, 0xC6, 0xBA, 0xF2, 0x8C, 0x13, 0xF2, 0xA5, 0x50, 0xC9, 0xC7, - 0x69, 0x64, 0xA7, 0x9F, 0x42, 0xD4, 0x82, 0xA8, 0x1A, 0x65, 0x36, 0xBD, - 0xF8, 0x42, 0x98, 0x41, 0x76, 0x32, 0x34, 0x19, 0x1C, 0xC9, 0x3E, 0x08, - 0x43, 0xB2, 0x1F, 0xE4, 0x3B, 0x17, 0x75, 0x8F, 0x6A, 0x66, 0xFA, 0xF0, - 0x63, 0xC5, 0xA0, 0x96, 0x0B, 0x9C, 0xB8, 0xA1, 0x76, 0xDE, 0xEC, 0xB2, - 0x8B, 0x28, 0xC0, 0xAC, 0x99, 0x7E, 0x4B, 0x36, 0x50, 0xD1, 0xBC, 0xE6, - 0xBA, 0xEE, 0x8B, 0x4C, 0x5A, 0xD7, 0xD4, 0x59, 0x4B, 0xE2, 0x96, 0xC5, - 0x29, 0xFC, 0xE2, 0x22, 0xE1, 0x90, 0x64, 0x4F, 0xBA, 0x52, 0x20, 0x11, - 0x96, 0x5B, 0x1D, 0x92, 0xC9, 0x6F, 0x32, 0x8E, 0x2D, 0x21, 0xEC, 0xA0, - 0xDE, 0x49, 0xBA, 0x44, 0xB7, 0x86, 0xCE, 0xA8, 0x5D, 0xB0, 0xB2, 0x80, - 0x14, 0x64, 0x2E, 0xA0, 0x3D, 0xB2, 0x17, 0xE2, 0xD3, 0x83, 0x09, 0x30, - 0x26, 0x32, 0x90, 0x8D, 0x41, 0x1F, 0x18, 0x47, 0xC0, 0xC2, 0x35, 0x47, - 0xA1, 0xE5, 0x83, 0x68, 0x96, 0x4E, 0x84, 0x9C, 0x2F, 0x0E, 0x64, 0xBA, - 0x07, 0x18, 0x50, 0xFE, 0x1B, 0xF2, 0xD7, 0xED, 0x05, 0x3A, 0x1A, 0xE8, - 0xC9, 0x89, 0xCE, 0xC0, 0x45, 0x19, 0xB4, 0x3F, 0x98, 0x08, 0xAB, 0x2D, - 0x32, 0xE8, 0x36, 0x58, 0x14, 0xBA, 0xF1, 0x28, 0x37, 0x4D, 0xA0, 0x51, - 0x53, 0xA6, 0xAE, 0xDA, 0x5D, 0xF0, 0xEC, 0x51, 0xDA, 0x22, 0xDB, 0xEB, - 0x6A, 0x79, 0xC6, 0x63, 0x3B, 0x03, 0x1A, 0xF7, 0x8F, 0x87, 0xBB, 0x7B, - 0x85, 0x56, 0x5E, 0x99, 0xCD, 0xFA, 0x4A, 0x6C, 0x13, 0xCF, 0x55, 0x8E, - 0x90, 0xE7, 0xB1, 0x6B, 0x73, 0xF3, 0x44, 0xAF, 0xDB, 0x05, 0xAB, 0x6B, - 0xEF, 0x34, 0x56, 0xF8, 0xAC, 0x76, 0xC4, 0xD0, 0xF7, 0xE9, 0x12, 0xF6, - 0xF1, 0x7B, 0xB9, 0x27, 0x4D, 0xF6, 0xBF, 0x3A, 0xC9, 0x25, 0xD1, 0x08, - 0xF0, 0xE1, 0x0F, 0xF0, 0x0E, 0x1D, 0xBC, 0x31, 0x09, 0x2A, 0x58, 0x37, - 0xC1, 0x25, 0x45, 0x7E, 0x9D, 0x15, 0xEA, 0x53, 0x8B, 0xE9, 0x27, 0x7C, - 0xB1, 0xEC, 0x0A, 0xC0, 0x36, 0x64, 0xBB, 0xC3, 0x2F, 0xB7, 0xD3, 0x95, - 0x24, 0x7D, 0xEA, 0x35, 0x42, 0xDF, 0x48, 0xF5, 0x23, 0x2E, 0xF1, 0x7F, - 0xE8, 0x4A, 0x4E, 0x7B, 0x38, 0xB5, 0xD8, 0x13, 0xE4, 0x73, 0x31, 0x50, - 0x9D, 0x21, 0xE1, 0xD9, 0xDC, 0xF5, 0x87, 0x6F, 0xC1, 0xBC, 0x9F, 0xF5, - 0x1A, 0xEB, 0x61, 0x92, 0xD8, 0x10, 0x88, 0x2B, 0xC7, 0x48, 0x3E, 0xC6, - 0x2E, 0x9B, 0xF4, 0x20, 0x4D, 0x10, 0x5C, 0x45, 0xA2, 0x82, 0x87, 0xBE, - 0x96, 0x54, 0xEA, 0xE7, 0x53, 0xDC, 0x35, 0x36, 0xAD, 0x48, 0x98, 0xD8, - 0xD2, 0x37, 0x0A, 0x82, 0xF7, 0x55, 0x8C, 0x28, 0x01, 0x68, 0x9C, 0x8E, - 0xE0, 0x44, 0x2A, 0xD5, 0x09, 0x95, 0x8F, 0x2D, 0xD7, 0xE7, 0x26, 0xB9, - 0xDC, 0x7D, 0x00, 0x0B, 0x5A, 0xDB, 0x30, 0xDC, 0x58, 0x3F, 0x53, 0x6D, - 0x14, 0xBA, 0x5C, 0x4B, 0x3E, 0xB1, 0x7F, 0x3C, 0xF8, 0x2E, 0x49, 0xB3, - 0x7F, 0x05, 0x44, 0xC6, 0x44, 0x5D, 0x83, 0xFC, 0xD7, 0x15, 0x3F, 0xA3, - 0x55, 0x60, 0x15, 0x13, 0x38, 0xBD, 0x9C, 0x3B, 0xFE, 0xF3, 0x68, 0x06, - 0xD8, 0xF1, 0x7C, 0x19, 0xB4, 0x01, 0xAB, 0x5C, 0x81, 0xBC, 0x69, 0xAD, - 0xF5, 0xB2, 0xF6, 0x58, 0xFB, 0x03, 0xE3, 0x79, 0xE5, 0xC3, 0x63, 0xDB, - 0x23, 0xA5, 0xD8, 0xE9, 0x32, 0xCE, 0xA0, 0x56, 0xD6, 0xFD, 0x53, 0xA0, - 0xA5, 0xB4, 0x1D, 0xE9, 0x44, 0x19, 0x27, 0xEE, 0x3C, 0xE7, 0x5D, 0x11, - 0x14, 0x7B, 0x56, 0xEA, 0x16, 0xB8, 0x2A, 0x4B, 0x7E, 0x7C, 0x6D, 0x7D, - 0xD1, 0x8F, 0x72, 0xFB, 0x75, 0x8F, 0x12, 0x5C, 0x6D, 0x1C, 0xBF, 0x40, - 0xD7, 0x8E, 0x30, 0x09, 0xAB, 0xAE, 0xB3, 0x7D, 0x34, 0x23, 0xCD, 0xA8, - 0x69, 0xB7, 0xD7, 0x78, 0x75, 0x14, 0x82, 0xD5, 0x36, 0x12, 0x9B, 0x70, - 0x3E, 0x94, 0xE7, 0xA5, 0x2E, 0xF4, 0x44, 0x48, 0x82, 0x47, 0xCF, 0xE9, - 0xA1, 0x21, 0x28, 0x60, 0x4C, 0x60, 0x4A, 0xDB, 0xC6, 0x25, 0x0B, 0xF3, - 0x5B, 0x5C, 0x34, 0x7B, 0x6B, 0x8F, 0x1D, 0x6C, 0xCD, 0xA5, 0x03, 0x62, - 0x24, 0xB5, 0x4E, 0x8F, 0x1B, 0x80, 0x61, 0x19, 0x52, 0x95, 0xC8, 0x46, - 0xEF, 0x57, 0xB6, 0x8F, 0x0C, 0xE3, 0xA1, 0xD6, 0x08, 0x16, 0xC8, 0x20, - 0x3C, 0x13, 0x93, 0x42, 0xDE, 0xE4, 0xE2, 0x28, 0xAC, 0x62, 0xA4, 0xCC, - 0x28, 0x83, 0xB0, 0xF9, 0xEB, 0xD8, 0x51, 0xA9, 0x13, 0x3C, 0x53, 0x73, - 0x7A, 0x9D, 0xB5, 0xC4, 0xFA, 0xC8, 0x0D, 0xB8, 0x66, 0x15, 0x8E, 0x65, - 0x79, 0x08, 0xC9, 0x6E, 0x65, 0xC5, 0x09, 0x9B, 0x20, 0x7D, 0xC0, 0xBE, - 0xCC, 0xC3, 0x60, 0xA5, 0x10, 0xBD, 0xC9, 0x50, 0xCE, 0xE2, 0xAF, 0x16, - 0xD7, 0xE0, 0xAC, 0x17, 0x78, 0x35, 0x2A, 0x0A, 0xAF, 0x4C, 0x2C, 0x78, - 0x78, 0x3E, 0xF4, 0x7A, 0xB2, 0x63, 0xD4, 0xBD, 0x4B, 0xC2, 0x8C, 0x0C, - 0x5C, 0x57, 0xBA, 0x90, 0x5C, 0x2D, 0xDB, 0x79, 0xCE, 0x4B, 0x83, 0xB6, - 0x3C, 0xB0, 0x7B, 0xFA, 0x7B, 0x05, 0xAD, 0x0B, 0xA0, 0xF5, 0xBD, 0x24, - 0x42, 0x69, 0x2D, 0xE4, 0x9B, 0x67, 0xB9, 0xBD, 0x6E, 0x18, 0x61, 0xE6, - 0x30, 0x62, 0x01, 0xBB, 0x88, 0xB6, 0xC2, 0x6A, 0x09, 0x87, 0x2C, 0xB9, - 0xC6, 0x11, 0x54, 0xC5, 0x19, 0xA3, 0xBC, 0x54, 0xDD, 0x2C, 0x13, 0xDD, - 0xA1, 0xD2, 0x4D, 0x79, 0x2A, 0xE0, 0x89, 0xB0, 0x3B, 0xC1, 0xF4, 0xB8, - 0xCC, 0x7A, 0xF8, 0x90, 0xC2, 0xEF, 0x2F, 0x1E, 0xEC, 0xBB, 0xDC, 0x8A, - 0x82, 0x9E, 0x94, 0x04, 0x30, 0x1E, 0x33, 0x66, 0x8F, 0x22, 0x47, 0xE4, - 0x80, 0x6A, 0x70, 0x87, 0x47, 0x95, 0x5D, 0x7F, 0x10, 0x66, 0x7D, 0x94, - 0xDB, 0xB2, 0xD2, 0xA6, 0x10, 0xE0, 0xBE, 0x01, 0xB2, 0x5A, 0xB2, 0x66, - 0x01, 0xA2, 0xA1, 0x4E, 0xB5, 0xD5, 0xBE, 0x52, 0x88, 0x11, 0xB0, 0x45, - 0xB6, 0xA4, 0x0B, 0xEE, 0x50, 0x45, 0x0C, 0x9D, 0x3F, 0xA3, 0x4C, 0xEC, - 0x63, 0x6D, 0x99, 0x6C, 0x30, 0x7F, 0xB1, 0x27, 0x38, 0xB7, 0xBC, 0x41, - 0x49, 0x08, 0x7E, 0xBE, 0x84, 0x9C, 0x3C, 0x5C, 0xBA, 0x19, 0xA3, 0x00, - 0xB1, 0x1F, 0xD4, 0x1B, 0x80, 0x9D, 0xA2, 0xFC, 0xCA, 0x70, 0xFF, 0x15, - 0x02, 0x60, 0x69, 0x12, 0x64, 0x40, 0x1D, 0xF1, 0x65, 0x12, 0x52, 0x64, - 0x3A, 0xAC, 0x44, 0xE2, 0x9D, 0xE3, 0x8C, 0x50, 0xD5, 0x59, 0x7E, 0x1A, - 0xE0, 0x26, 0x72, 0xB5, 0x52, 0xB4, 0x79, 0xB9, 0x93, 0x41, 0xA2, 0xC9, - 0x5D, 0x9E, 0x65, 0x70, 0x83, 0x2D, 0x3A, 0x93, 0xE4, 0xDE, 0xC3, 0x40, - 0x35, 0xA2, 0x86, 0x3D, 0x9D, 0x0A, 0x9E, 0x11, 0xEA, 0x81, 0xDB, 0x3B, - 0x99, 0xCB, 0x46, 0xD3, 0x6B, 0x49, 0xB6, 0xDA, 0xE8, 0xF1, 0xB5, 0xA4, - 0x52, 0x15, 0x39, 0xAE, 0xBF, 0xA7, 0xDB, 0xEE, 0xDF, 0x41, 0x24, 0x98, - 0xED, 0xF3, 0x0D, 0x12, 0xBE, 0x59, 0x4E, 0x09, 0xF8, 0x50, 0xDE, 0xE2, - 0x36, 0x9A, 0x12, 0xC4, 0x12, 0xF2, 0xF1, 0xF8, 0x58, 0xC8, 0x86, 0x14, - 0xE1, 0x39, 0x3B, 0x9A, 0xFB, 0x46, 0x7B, 0x98, 0x0D, 0x26, 0xBC, 0xA3, - 0x54, 0xEA, 0x01, 0x72, 0x68, 0x73, 0x2F, 0xD5, 0x08, 0x3B, 0xF3, 0x7B, - 0x7A, 0x9F, 0xDB, 0x29, 0x11, 0x3B, 0xF0, 0x07, 0x4C, 0x46, 0x10, 0xDF, - 0xA0, 0x9D, 0x0A, 0xD8, 0x08, 0x1A, 0x7B, 0xD1, 0xE1, 0x9A, 0x83, 0x77, - 0x1A, 0x2F, 0x1A, 0x16, 0x77, 0x22, 0x75, 0x98, 0xED, 0x70, 0x40, 0x54, - 0x9A, 0x15, 0x56, 0x32, 0x93, 0xC9, 0xA2, 0xD1, 0x48, 0x54, 0x8F, 0xEF, - 0x07, 0x43, 0x4D, 0x9E, 0xC7, 0x07, 0x32, 0x6C, 0x6E, 0xAC, 0x79, 0x8C, - 0x6E, 0x1A, 0x48, 0x99, 0xBC, 0x6A, 0x0D, 0x19, 0x47, 0x5B, 0x1C, 0x3E, - 0x18, 0xCA, 0x54, 0x6A, 0x7F, 0xA4, 0xAB, 0xD3, 0x2B, 0x86, 0xD1, 0x1B, - 0x32, 0xCB, 0x8C, 0x12, 0x1C, 0x0D, 0x28, 0x52, 0xD1, 0x02, 0x47, 0x22, - 0xD2, 0xD4, 0x79, 0xDD, 0xB9, 0x8C, 0x49, 0xD0, 0x26, 0x94, 0xAE, 0x0E, - 0xC1, 0xA3, 0x27, 0x6F, 0x87, 0x5D, 0x30, 0xED, 0xFB, 0x30, 0x13, 0x23, - 0x9C, 0xC3, 0x10, 0x5D, 0x8F, 0x8A, 0x9D, 0xD8, 0x91, 0xC2, 0xA5, 0x70, - 0x8C, 0xC4, 0x56, 0xD0, 0x43, 0xE7, 0xAB, 0x40, 0xD4, 0x8F, 0xBE, 0x1B, - 0xE4, 0xD5, 0xD2, 0xC5, 0x83, 0x8C, 0x27, 0xE9, 0x3B, 0x4F, 0xDB, 0xF4, - 0x79, 0xCA, 0x91, 0x89, 0xF3, 0x78, 0xEB, 0x40, 0x25, 0x80, 0x73, 0xB6, - 0x49, 0x8F, 0x76, 0x74, 0x70, 0xD4, 0x70, 0xDC, 0x77, 0x2F, 0xDD, 0xC2, - 0x1B, 0x12, 0xB1, 0xA1, 0x3F, 0xC5, 0xAC, 0x70, 0x22, 0x1F, 0xB4, 0x8E, - 0x36, 0xC2, 0x5E, 0x93, 0x51, 0x42, 0x93, 0xEB, 0x26, 0x13, 0xDC, 0x38, - 0x03, 0x68, 0xF6, 0xE1, 0x77, 0x3C, 0x81, 0x07, 0xD4, 0x55, 0x70, 0x56, - 0x25, 0x0A, 0x08, 0x36, 0x6F, 0x99, 0xFE, 0x12, 0xDC, 0xA1, 0x35, 0x19, - 0x30, 0xAA, 0x84, 0xB5, 0xE6, 0xF6, 0x23, 0x81, 0xC4, 0x7D, 0x95, 0x35, - 0x4C, 0xD5, 0xFA, 0x12, 0xB4, 0x09, 0x20, 0x00, 0x5C, 0x15, 0xB2, 0xDD, - 0x8B, 0x77, 0x2F, 0x97, 0xDD, 0xFD, 0x4E, 0xEF, 0x20, 0x3F, 0x0F, 0x0C, - 0xA6, 0xE3, 0x40, 0x12, 0xA3, 0xD1, 0x18, 0x0F, 0x88, 0x16, 0x97, 0x48, - 0x6B, 0x76, 0x10, 0xE8, 0x4A, 0x91, 0xA4, 0x9C, 0x05, 0x88, 0xA8, 0xC7, - 0x2B, 0x3A, 0xAB, 0x87, 0xE1, 0x51, 0x21, 0xE5, 0x7B, 0xD4, 0x78, 0xB7, - 0x4C, 0x35, 0x7C, 0x0A, 0x27, 0x63, 0xA8, 0x15, 0xCF, 0xB8, 0xEE, 0x00, - 0x5C, 0xD5, 0x9F, 0x40, 0x5B, 0x8A, 0xEC, 0xA3, 0xFA, 0x64, 0x73, 0xE2, - 0x8E, 0x5E, 0x1F, 0x69, 0x0C, 0xD4, 0x0A, 0x95, 0x2E, 0x62, 0xD6, 0xB1, - 0x7B, 0x51, 0x3E, 0x54, 0x7C, 0x51, 0x00, 0xF2, 0xF0, 0x49, 0xD2, 0xB2, - 0x13, 0xF6, 0x1E, 0x37, 0xC4, 0xE8, 0x2A, 0xC2, 0x5D, 0x50, 0xCE, 0x31, - 0xDD, 0x4F, 0x5E, 0x94, 0x8A, 0x33, 0xF3, 0x52, 0xDC, 0x9E, 0xBE, 0x1B, - 0xE9, 0xA2, 0x97, 0xF4, 0x4A, 0xC0, 0xCA, 0x26, 0x24, 0x2B, 0x94, 0xA3, - 0xBF, 0x41, 0xD5, 0x1E, 0x06, 0xFC, 0x74, 0x34, 0xCA, 0x2A, 0x61, 0x3C, - 0xB2, 0x22, 0xD9, 0x24, 0xF9, 0x8C, 0x37, 0x3E, 0x48, 0x1D, 0xAA, 0xBE, - 0x9F, 0x0F, 0x93, 0x14, 0x94, 0x3A, 0x44, 0x7F, 0x47, 0x7A, 0x1D, 0x07, - 0x33, 0x4F, 0x86, 0x39, 0xF3, 0xD5, 0x23, 0xAF, 0x83, 0xF0, 0xCC, 0xFA, - 0xDA, 0x86, 0x5F, 0x6B, 0x28, 0x77, 0xF2, 0x28, 0x78, 0xFF, 0x7B, 0xB9, - 0xB9, 0x9B, 0xF7, 0x45, 0x46, 0x86, 0x12, 0xED, 0xB0, 0x93, 0x89, 0x7B, - 0xFF, 0xE8, 0x93, 0xB7, 0xAD, 0x08, 0xBC, 0xB2, 0xE9, 0x53, 0xFB, 0x78, - 0xD6, 0xAD, 0xB3, 0x0D, 0x9F, 0xEC, 0x97, 0x49, 0xA6, 0x43, 0xAB, 0xBE, - 0x5E, 0xF9, 0x9D, 0xA0, 0xAE, 0x1D, 0x7C, 0x05, 0xB7, 0x2B, 0x60, 0x3A, - 0x61, 0xE3, 0x69, 0xA8, 0xBA, 0x6F, 0xD5, 0x9E, 0x23, 0x8E, 0x0C, 0x99, - 0x03, 0x24, 0xE9, 0xDC, 0x52, 0xC5, 0x74, 0xE9, 0x14, 0x1F, 0x71, 0x5C, - 0x91, 0x61, 0x6D, 0x2F, 0xB2, 0xA8, 0xCE, 0x88, 0xBE, 0x8E, 0x73, 0x44, - 0xF4, 0x53, 0x9B, 0x19, 0x0A, 0xEC, 0xBE, 0x54, 0xF6, 0x31, 0x00, 0x91, - 0xE9, 0x39, 0x72, 0x0E, 0x07, 0x6A, 0xE9, 0x46, 0x5E, 0xF8, 0xF8, 0x3B, - 0x30, 0x60, 0x8E, 0xD0, 0xBC, 0x05, 0x1E, 0xF5, 0xEE, 0x33, 0x6A, 0xFA, - 0x54, 0xCD, 0x4E, 0x8B, 0xCF, 0xEC, 0xD9, 0x9F, 0x53, 0x3A, 0xEF, 0x21, - 0xC3, 0x6F, 0x09, 0xF8, 0x67, 0xFD, 0x3E, 0x70, 0xE6, 0x6F, 0x63, 0x99, - 0xE5, 0x4F, 0xD6, 0x70, 0xED, 0xFB, 0x3B, 0xD9, 0xFF, 0xAA, 0x30, 0x5C, - 0xBE, 0xB2, 0x28, 0x78, 0xE4, 0xB5, 0x26, 0x82, 0x03, 0x86, 0xB9, 0xDB, - 0x9D, 0xBD, 0x99, 0xD8, 0xF2, 0x70, 0x9C, 0x9D, 0x6C, 0x81, 0xFC, 0xF8, - 0x2B, 0x5E, 0xD4, 0x85, 0x95, 0x62, 0xEB, 0xFA, 0xEB, 0x5A, 0x09, 0xC6, - 0x14, 0x51, 0xE2, 0x43, 0x62, 0xE9, 0x69, 0x31, 0xB1, 0x7B, 0x8F, 0xA6, - 0x4D, 0x76, 0xD5, 0x8C, 0xF1, 0xB2, 0xD5, 0x07, 0x17, 0x21, 0x64, 0x23, - 0xCA, 0x68, 0xF8, 0x60, 0xFF, 0x15, 0x7D, 0xB8, 0xCE, 0xBA, 0xF3, 0x92, - 0x77, 0x04, 0x2F, 0x38, 0x99, 0x1A, 0xF7, 0x91, 0xC9, 0x0C, 0x99, 0x0F, - 0x3A, 0x58, 0x7D, 0x31, 0x01, 0xCB, 0x10, 0xBD, 0xC0, 0xAD, 0x4D, 0x37, - 0x6C, 0x87, 0x3E, 0x9B, 0x4B, 0xE2, 0x68, 0x72, 0x8C, 0x40, 0xED, 0x6F, - 0xD6, 0xC1, 0x8B, 0xA0, 0x82, 0xA7, 0x72, 0x73, 0x79, 0x8A, 0xC9, 0xFB, - 0x57, 0xEE, 0xFA, 0x5D, 0x15, 0x53, 0x2F, 0x81, 0x66, 0x7E, 0xC1, 0x4E, - 0xEF, 0x23, 0xC2, 0xB5, 0x76, 0x61, 0xC1, 0xAC, 0x55, 0x01, 0x72, 0xB6, - 0x2E, 0xC9, 0x56, 0x30, 0x73, 0x77, 0xFE, 0x6F, 0x0F, 0x4F, 0xD4, 0xA3, - 0xA0, 0x51, 0xC1, 0xEC, 0xE9, 0xF8, 0x16, 0x7A, 0x22, 0x9F, 0x55, 0xDA, - 0xA9, 0xC0, 0x31, 0x84, 0xC0, 0x3F, 0x3A, 0x57, 0x9D, 0x41, 0x9B, 0x4A, - 0x5E, 0x84, 0x19, 0xE5, 0x93, 0xC8, 0xAE, 0xFA, 0x91, 0xD8, 0xB8, 0x98, - 0x67, 0xB2, 0x8C, 0x37, 0x4B, 0x4C, 0xAA, 0xF9, 0x7C, 0xCD, 0x67, 0x50, - 0xB2, 0x83, 0x19, 0x88, 0x89, 0xE9, 0xD1, 0xD1, 0x29, 0xA8, 0x9C, 0x94, - 0x24, 0x65, 0x1D, 0xF4, 0x67, 0x9A, 0xF3, 0x91, 0xB2, 0x3B, 0xAB, 0x94, - 0xE9, 0x8C, 0x16, 0xD6, 0x58, 0x17, 0x18, 0x72, 0xB2, 0xBD, 0xCD, 0x1B, - 0x4B, 0x8A, 0x32, 0x70, 0xDC, 0xFC, 0x97, 0x54, 0x73, 0x25, 0x74, 0x9B, - 0xF3, 0x90, 0x0C, 0x04, 0xDD, 0x7C, 0x1A, 0xA8, 0xD7, 0x33, 0xCD, 0xE6, - 0x88, 0xAF, 0x8E, 0x96, 0xD1, 0xE9, 0xFF, 0xCE, 0xEE, 0x3C, 0x1A, 0x42, - 0xA5, 0xB2, 0x56, 0xB3, 0x99, 0xA3, 0x8E, 0xED, 0x2D, 0xE7, 0xAE, 0xB0, - 0x2E, 0x3C, 0xC6, 0x7C, 0xAA, 0xA3, 0x3F, 0xC7, 0xD2, 0x79, 0x04, 0x98, - 0x9A, 0xC0, 0xA4, 0x6A, 0xDC, 0x64, 0x49, 0x24, 0x4F, 0x8B, 0xFA, 0x86, - 0x45, 0x17, 0xE8, 0x7E, 0xF5, 0xD3, 0x8A, 0x56, 0x76, 0xBF, 0x95, 0x50, - 0xE2, 0x4A, 0xE1, 0x3F, 0xF2, 0x50, 0x5E, 0x8F, 0x99, 0x2C, 0xE7, 0xB9, - 0x10, 0x6C, 0x99, 0x7C, 0x39, 0x6C, 0xA3, 0x39, 0xAB, 0x0B, 0xF0, 0x84, - 0x82, 0x7C, 0xD6, 0x59, 0x21, 0x5B, 0x85, 0xFD, 0xFC, 0xF9, 0x15, 0xC2, - 0x35, 0x02, 0x52, 0xD2, 0x16, 0x20, 0x3B, 0x6F, 0x27, 0xFB, 0x7F, 0x11, - 0xBF, 0x05, 0xA1, 0xF1, 0x7C, 0xA1, 0x73, 0x34, 0xFD, 0x40, 0x3D, 0xF0, - 0x36, 0xEE, 0xC8, 0x4B, 0xC7, 0x4F, 0x35, 0x04, 0x1C, 0x69, 0x49, 0x65, - 0x0B, 0xCD, 0x4E, 0x3B, 0xED, 0x5C, 0xA6, 0x42, 0x11, 0xB8, 0xFC, 0x8F, - 0xA9, 0x44, 0x04, 0x55, 0x19, 0x12, 0xA8, 0xAC, 0xE0, 0x4F, 0x13, 0xB5, - 0xA0, 0xBA, 0xAD, 0xFA, 0x84, 0x5E, 0x11, 0x95, 0x4B, 0xC1, 0x19, 0x57, - 0x45, 0x3E, 0x3C, 0x46, 0x92, 0x0C, 0xAD, 0x54, 0xD2, 0xDD, 0x47, 0x6F, - 0xF0, 0x77, 0x0E, 0xAD, 0xD2, 0x5D, 0xEF, 0x39, 0xF3, 0x67, 0xD7, 0x8D, - 0x31, 0x3C, 0xCD, 0x5B, 0xB0, 0x3A, 0x47, 0x4C, 0xD1, 0x16, 0xBB, 0xB2, - 0xDA, 0x65, 0xF0, 0x9B, 0x82, 0x75, 0x3B, 0xF7, 0x46, 0xD3, 0x12, 0xBA, - 0xFD, 0x04, 0x9D, 0x2E, 0x8A, 0x3E, 0x75, 0x88, 0x9A, 0xC7, 0xF3, 0x20, - 0x6B, 0x9E, 0xD7, 0xD3, 0xD3, 0x39, 0x75, 0xF9, 0x76, 0x47, 0xB0, 0xEB, - 0xD1, 0x3E, 0xEA, 0xD9, 0xF4, 0x7F, 0x0B, 0x6C, 0xF6, 0x8B, 0x04, 0xD3, - 0x6F, 0x1F, 0x6D, 0x30, 0xA0, 0xA3, 0x09, 0x45, 0x57, 0x6E, 0xE2, 0x3A, - 0x0E, 0xE7, 0x07, 0x98, 0x24, 0xED, 0xCB, 0x6D, 0x73, 0xB9, 0x4E, 0x09, - 0xE7, 0xA9, 0xDD, 0xF7, 0x28, 0xBE, 0xA6, 0x94, 0x4E, 0x58, 0x92, 0x88, - 0x74, 0x91, 0x85, 0x20, 0x3C, 0x78, 0xBB, 0xA4, 0x13, 0x65, 0xA6, 0x82, - 0x2A, 0xCF, 0x1F, 0x2F, 0x43, 0x78, 0x43, 0x36, 0x32, 0x8B, 0x99, 0xE9, - 0x7E, 0xC3, 0x73, 0x39, 0x3E, 0xC3, 0xFF, 0x42, 0x29, 0x76, 0xD7, 0x99, - 0x3B, 0x7A, 0x0A, 0xCF, 0x7F, 0x40, 0xB7, 0x54, 0x92, 0x23, 0x18, 0x64, - 0xD8, 0xD1, 0x12, 0xC4, 0x91, 0xBF, 0xA1, 0x90, 0x5E, 0x03, 0xB3, 0x1D, - 0xC5, 0xF4, 0xD7, 0xC7, 0x9A, 0x6C, 0x87, 0x90, 0xB8, 0xD2, 0x0C, 0x66, - 0x04, 0x20, 0x73, 0xA9, 0x6A, 0x73, 0xD4, 0xC5, 0x76, 0x5A, 0xBA, 0x4D, - 0xD1, 0x56, 0xFA, 0x99, 0xF6, 0x32, 0x90, 0x5E, 0xFD, 0x19, 0xA4, 0xCD, - 0x85, 0x1F, 0x13, 0x39, 0x0D, 0x2D, 0x6B, 0x01, 0xA4, 0x48, 0x59, 0x0F, - 0x6E, 0x4B, 0xC2, 0xD4, 0xF4, 0x03, 0x71, 0x92, 0x91, 0x0E, 0xCD, 0x5B, - 0x0A, 0x48, 0xB4, 0xA2, 0x1A, 0xA4, 0xF1, 0x93, 0x6F, 0x1B, 0x90, 0x33, - 0xCF, 0x05, 0xF5, 0xB4, 0x0D, 0x7F, 0xE3, 0x88, 0xD7, 0x8F, 0xB6, 0x34, - 0xBD, 0xEC, 0x0B, 0xA2, 0x45, 0xCA, 0x3B, 0xFD, 0xB2, 0x74, 0x10, 0xC0, - 0x16, 0x03, 0x77, 0x1B, 0x0C, 0xBC, 0xFB, 0x36, 0x93, 0x8A, 0x95, 0x52, - 0x14, 0x4A, 0x52, 0x42, 0x4E, 0x8C, 0x5E, 0x59, 0xEC, 0x68, 0xC7, 0xCE, - 0x8F, 0xFB, 0x15, 0x10, 0xA1, 0xDB, 0xA2, 0x6A, 0x6D, 0x49, 0x65, 0x3C, - 0x7C, 0x71, 0xE9, 0x91, 0xD5, 0x25, 0x08, 0x19, 0x66, 0xFD, 0x67, 0xF7, - 0xC3, 0x4C, 0x1A, 0x4D, 0x6E, 0x31, 0xA0, 0x2A, 0x49, 0x57, 0x97, 0xB0, - 0x8E, 0xB4, 0xB6, 0x0D, 0xCE, 0xA5, 0x26, 0x52, 0x6C, 0xA3, 0xB3, 0x0E, - 0xC6, 0x1E, 0x28, 0xA6, 0x4B, 0xEF, 0x20, 0xD1, 0x58, 0x86, 0x64, 0xEF, - 0x49, 0x40, 0x62, 0x43, 0x58, 0x2A, 0x65, 0x5D, 0x8C, 0x91, 0xFE, 0xDB, - 0x85, 0x2D, 0x9D, 0x66, 0x0B, 0x5B, 0xDF, 0xCA, 0xFC, 0xA4, 0x35, 0x01, - 0xA4, 0x0C, 0x3E, 0x82, 0xF6, 0xD0, 0xB6, 0xEB, 0x38, 0x6F, 0x6F, 0xD6, - 0xB0, 0x6D, 0xD5, 0xC8, 0x37, 0x2D, 0xD4, 0x3F, 0x7F, 0xA9, 0xCD, 0x95, - 0xD0, 0xE0, 0xBA, 0x56, 0xF2, 0xF5, 0x2F, 0x38, 0xDA, 0x23, 0x3C, 0x62, - 0xC1, 0x96, 0xAC, 0xE4, 0xA5, 0xAB, 0xD3, 0xE4, 0x42, 0xD6, 0x06, 0x7D, - 0x2F, 0x64, 0xBC, 0x8E, 0xD7, 0x49, 0xF1, 0xA8, 0x08, 0xC0, 0xD4, 0xED, - 0x10, 0x53, 0x99, 0x3F, 0x7E, 0x66, 0xC8, 0x24, 0xDB, 0x12, 0x1E, 0x15, - 0x30, 0x8E, 0x76, 0xD7, 0xCD, 0x65, 0xD4, 0x97, 0xCB, 0xC7, 0xDD, 0x89, - 0x1E, 0x28, 0x7B, 0x08, 0xED, 0x16, 0xBD, 0x78, 0x21, 0x5A, 0xBD, 0x37, - 0x98, 0xD8, 0xE3, 0x81, 0x6B, 0x5C, 0x96, 0x51, 0x45, 0x95, 0xED, 0x2A, - 0x53, 0x4B, 0xDB, 0x96, 0x66, 0xB4, 0xBF, 0x54, 0x55, 0xBC, 0x82, 0xB0, - 0x31, 0x75, 0xA0, 0xA7, 0x5F, 0x4D, 0xED, 0x89, 0xBB, 0x47, 0x87, 0x40, - 0x68, 0xCA, 0x74, 0x3A, 0xD9, 0x3A, 0xC3, 0x10, 0xBA, 0x18, 0xAF, 0xC7, - 0x67, 0x0A, 0x86, 0x31, 0x08, 0xE6, 0x8A, 0xD6, 0x0C, 0xD6, 0xDE, 0xB6, - 0x4A, 0xD7, 0x99, 0xC6, 0x28, 0xBF, 0xD2, 0x82, 0xF6, 0x8C, 0xFA, 0xC9, - 0x0F, 0x81, 0x1A, 0x9B, 0xD1, 0xE5, 0x7C, 0x3B, 0x31, 0x30, 0x14, 0x27, - 0x23, 0x69, 0xD6, 0x3E, 0xB2, 0x94, 0x0A, 0xC4, 0xD0, 0x6F, 0x98, 0x4A, - 0x42, 0xE5, 0x81, 0x51, 0x00, 0xD4, 0x46, 0x1F, 0x6A, 0x96, 0x3B, 0xB1, - 0x03, 0x2F, 0x81, 0x2B, 0xD8, 0xC8, 0x79, 0xCF, 0x3E, 0x3F, 0x53, 0xDC, - 0x88, 0x1A, 0xF8, 0xAF, 0x1C, 0xF5, 0x71, 0x0A, 0xCF, 0xE2, 0x06, 0x29, - 0x76, 0xBD, 0xAA, 0x55, 0x9E, 0x87, 0x72, 0x47, 0x7C, 0x74, 0x36, 0x17, - 0xC7, 0xDF, 0x90, 0xA4, 0x92, 0x2C, 0x72, 0x17, 0x4B, 0xAB, 0x41, 0x7B, - 0xA2, 0xEC, 0x60, 0x0A, 0xB9, 0x25, 0xAF, 0xAC, 0x0F, 0x66, 0x60, 0x92, - 0xC1, 0xA8, 0x5F, 0xD4, 0x67, 0x3F, 0x9D, 0xF4, 0x63, 0x3A, 0x28, 0x21, - 0x2A, 0x8C, 0x4A, 0x4E, 0x89, 0x0B, 0x23, 0x46, 0x81, 0x8D, 0xC1, 0xE0, - 0x0F, 0x87, 0x60, 0xFA, 0xA1, 0xC1, 0x71, 0x1F, 0x10, 0x37, 0xDA, 0xCC, - 0x65, 0xF5, 0xA0, 0x33, 0x84, 0x84, 0x36, 0x0A, 0xED, 0x28, 0x3F, 0x5A, - 0xBE, 0x76, 0x95, 0xB6, 0xA4, 0xBA, 0xE3, 0x92, 0xF8, 0x4B, 0x55, 0x78, - 0x23, 0xBF, 0xAD, 0x7B, 0x39, 0x72, 0xAF, 0xE8, 0xAC, 0xEE, 0x27, 0x69, - 0x0E, 0x8C, 0x57, 0x29, 0x08, 0xDA, 0xCB, 0x35, 0x07, 0x6D, 0xA4, 0x66, - 0xC5, 0xF6, 0xF0, 0x73, 0x3A, 0xDC, 0xD3, 0x08, 0x79, 0x9A, 0x28, 0xCC, - 0xD0, 0xCC, 0x45, 0x7C, 0xED, 0x82, 0x5A, 0x14, 0x29, 0xEF, 0x7E, 0x1E, - 0x80, 0x42, 0x5E, 0x36, 0xD3, 0x21, 0x48, 0x8C, 0xE6, 0xBA, 0x91, 0x42, - 0x54, 0xC6, 0xCF, 0x36, 0x4D, 0x68, 0xE5, 0xC3, 0x18, 0xEF, 0xCE, 0x92, - 0x47, 0xE7, 0x2E, 0x8F, 0xB1, 0x67, 0x88, 0xC6, 0xB4, 0xB3, 0x98, 0xF8, - 0x44, 0x51, 0x6D, 0x44, 0xC5, 0x11, 0xFB, 0x2E, 0xA5, 0x67, 0x48, 0xDE, - 0xED, 0x7E, 0x9C, 0x6F, 0x53, 0x5D, 0xA0, 0xFF, 0x9F, 0x4D, 0x2E, 0x3F, - 0xB6, 0x0D, 0x61, 0x41, 0x35, 0xB7, 0x0B, 0x28, 0x8F, 0x6A, 0x29, 0xD5, - 0xFC, 0x25, 0x42, 0xBF, 0x04, 0x0E, 0xA7, 0xC0, 0xE9, 0xD4, 0xD0, 0x99, - 0x26, 0x0C, 0x3B, 0xEE, 0xE0, 0x66, 0xFB, 0x66, 0x0E, 0xEC, 0x37, 0x13, - 0xE2, 0xD8, 0x2F, 0x90, 0x6B, 0x0D, 0x4E, 0x9C, 0x14, 0xCB, 0xBA, 0xF0, - 0xD6, 0x49, 0x55, 0xAB, 0xFE, 0x96, 0x74, 0x48, 0x07, 0xA2, 0x0B, 0x6F, - 0x91, 0x0B, 0x7D, 0x75, 0x60, 0xB9, 0x11, 0x1B, 0x8F, 0x48, 0x6D, 0x66, - 0xED, 0xDD, 0xCC, 0x83, 0x57, 0x1A, 0x2B, 0x81, 0x7F, 0xC5, 0x7B, 0x3B, - 0x16, 0x92, 0x93, 0x6C, 0xC7, 0xB2, 0xC5, 0x48, 0xAE, 0xB2, 0x2E, 0x4C, - 0x22, 0xE8, 0xF9, 0xD4, 0x91, 0x95, 0xA9, 0xA1, 0x97, 0x48, 0x80, 0x4D, - 0x4D, 0x5E, 0xEF, 0x3E, 0x87, 0xD5, 0x3C, 0xF7, 0xDF, 0xFA, 0x36, 0x4A, - 0xC4, 0x72, 0x0C, 0x2E, 0x0E, 0xA2, 0xC6, 0x61, 0xB1, 0x3D, 0xEC, 0x5A, - 0x6C, 0x9D, 0x16, 0x81, 0x13, 0x61, 0x8E, 0x7E, 0x28, 0xA0, 0x3D, 0xEB, - 0x8E, 0x97, 0x59, 0x0E, 0x24, 0xCF, 0x5B, 0x4D, 0x98, 0xDE, 0x01, 0xC9, - 0x48, 0x97, 0x8F, 0x1C, 0xCC, 0xF9, 0x6B, 0xA8, 0xC0, 0x44, 0x73, 0xEB, - 0x06, 0x17, 0xB2, 0x8D, 0xA5, 0xD4, 0x25, 0x87, 0x0E, 0xE2, 0x6E, 0x0D, - 0x99, 0x7E, 0xCE, 0x06, 0x83, 0x99, 0x3A, 0x8C, 0xE6, 0xC7, 0x99, 0xAC, - 0x3C, 0xF3, 0x0C, 0x50, 0x8F, 0xA7, 0xB2, 0x2B, 0x3C, 0xCA, 0x56, 0x06, - 0x63, 0xA0, 0x9A, 0xB6, 0xF8, 0x84, 0x43, 0x03, 0x04, 0x07, 0x8A, 0xEC, - 0x43, 0xA1, 0x3E, 0x5F, 0xE2, 0x2A, 0x50, 0x02, 0xBA, 0x62, 0xDA, 0x77, - 0x7A, 0xC9, 0x06, 0x50, 0xF5, 0xEE, 0xE0, 0xD0, 0x85, 0xDA, 0x15, 0x54, - 0x36, 0x83, 0x44, 0xC5, 0x14, 0xBD, 0x98, 0xB4, 0x37, 0x27, 0x56, 0x4B, - 0xB2, 0x19, 0x59, 0xEB, 0xD5, 0x95, 0x27, 0xAD, 0x94, 0x2F, 0x36, 0x8D, - 0x61, 0x26, 0x95, 0xEF, 0x4B, 0x05, 0x9E, 0x22, 0xDB, 0x76, 0x06, 0x67, - 0xA0, 0x0D, 0x28, 0x90, 0x5D, 0x6D, 0xFF, 0xA6, 0x2F, 0x2F, 0x8F, 0x1F, - 0x72, 0xEA, 0x88, 0x79, 0xE2, 0xC8, 0x8B, 0xA1, 0x19, 0xC3, 0x09, 0xA3, - 0x21, 0x93, 0xB4, 0x74, 0xB1, 0xDF, 0x53, 0x78, 0x08, 0x25, 0x01, 0xC6, - 0x83, 0x2D, 0x17, 0xD4, 0x6C, 0x44, 0x1C, 0xAE, 0xFD, 0x3D, 0xE8, 0xF0, - 0xA7, 0x93, 0x59, 0x3B, 0x96, 0x01, 0x5F, 0xC1, 0xA4, 0x5F, 0x82, 0xA7, - 0x1D, 0x9C, 0xB9, 0x60, 0x00, 0xF4, 0x02, 0x9A, 0xD0, 0xCF, 0xA7, 0x8F, - 0x25, 0x9E, 0x21, 0xD7, 0x47, 0x9A, 0x18, 0x9E, 0x7F, 0x39, 0x1A, 0x7E, - 0x5E, 0x52, 0x44, 0x11, 0x1A, 0xF0, 0xD6, 0x4D, 0x3E, 0x98, 0x2D, 0x88, - 0x45, 0xDA, 0xC4, 0xBF, 0x51, 0x9F, 0x34, 0xC0, 0xEA, 0x0E, 0xD1, 0x32, - 0xCD, 0xB9, 0x7E, 0x16, 0x01, 0xF2, 0xD4, 0x81, 0x9E, 0x40, 0xC9, 0xBA, - 0xC0, 0x93, 0xFB, 0x88, 0x14, 0x8E, 0x79, 0x2F, 0x85, 0x54, 0x12, 0x29, - 0x54, 0x8E, 0x4F, 0x72, 0x6C, 0x3F, 0x0D, 0xB6, 0xD4, 0x27, 0x91, 0xCE, - 0xAC, 0xC7, 0x7B, 0x9A, 0x77, 0xEA, 0xCB, 0xBE, 0x0C, 0x53, 0xCB, 0x2E, - 0x8E, 0x45, 0x3E, 0xC0, 0x95, 0x76, 0x35, 0x96, 0xF0, 0xAF, 0xA1, 0x91, - 0x7E, 0x64, 0xE8, 0x82, 0xA2, 0x27, 0x3F, 0x90, 0xC6, 0xE3, 0x78, 0x75, - 0xC6, 0x32, 0x3B, 0xDD, 0x91, 0xE4, 0x7C, 0xFD, 0x18, 0x16, 0xAC, 0xEF, - 0x93, 0xEF, 0x76, 0xC4, 0x4C, 0xC8, 0x1F, 0x61, 0xEF, 0xD0, 0x40, 0x0D, - 0xD9, 0x9B, 0x13, 0xB8, 0xAA, 0x6E, 0xFC, 0x9F, 0x1D, 0x5E, 0x7C, 0x7F, - 0xB6, 0x2B, 0xCA, 0x06, 0xF6, 0xDA, 0x06, 0xE0, 0x94, 0x81, 0x8C, 0x49, - 0x75, 0xD6, 0x8A, 0xA3, 0xC0, 0x7A, 0x59, 0xCE, 0xFC, 0x85, 0xB4, 0xCA, - 0xE5, 0xA3, 0x58, 0x64, 0x31, 0xA8, 0x41, 0x2D, 0xF4, 0xCD, 0x56, 0x10, - 0x2A, 0x18, 0x4C, 0x15, 0xBE, 0xD5, 0x1B, 0xAC, 0xC7, 0x68, 0xB4, 0x3C, - 0x60, 0x4D, 0xD0, 0xC2, 0x7A, 0xE4, 0xE1, 0x59, 0x84, 0x95, 0x5D, 0x0C, - 0x1D, 0x74, 0x4E, 0x5A, 0xCC, 0xBB, 0x85, 0xAA, 0xFC, 0x91, 0x81, 0x50, - 0xFC, 0x05, 0xC7, 0x77, 0xC5, 0xE3, 0xCE, 0x70, 0xA1, 0x35, 0xBD, 0xAF, - 0x9C, 0x17, 0xB3, 0x52, 0xD0, 0xE1, 0xC4, 0x6B, 0x12, 0x00, 0x4E, 0xA3, - 0x2E, 0xC2, 0x45, 0xB3, 0x85, 0x1E, 0xBF, 0x4C, 0x1C, 0xC5, 0x49, 0x7A, - 0xB4, 0x9D, 0xCB, 0xB9, 0x2D, 0x93, 0xAF, 0xB3, 0x98, 0x30, 0xA1, 0x17, - 0x93, 0x31, 0xE8, 0x79, 0xBE, 0xFB, 0xE3, 0xF6, 0x8E, 0x8F, 0xBE, 0x11, - 0x43, 0xCB, 0x06, 0x38, 0xDD, 0x33, 0x5A, 0x27, 0x77, 0xF7, 0x59, 0xF9, - 0x12, 0x8E, 0x9E, 0xAA, 0xA6, 0x99, 0x54, 0x9C, 0x26, 0xD8, 0x55, 0x39, - 0x8C, 0xD0, 0x62, 0xC7, 0x2B, 0xE7, 0xAD, 0x43, 0xDC, 0xFA, 0xA4, 0xB7, - 0xB3, 0xB2, 0xEE, 0xDB, 0xC1, 0x1F, 0x37, 0x44, 0x89, 0x30, 0xBC, 0xE6, - 0x6A, 0x17, 0xEC, 0x31, 0xBB, 0x52, 0x52, 0x36, 0x99, 0x49, 0x45, 0x59, - 0x6A, 0x55, 0xD0, 0xC6, 0x5C, 0xAD, 0x1B, 0xE6, 0x2F, 0x1B, 0x71, 0x6A, - 0x3D, 0x78, 0x3C, 0xFD, 0x63, 0x6F, 0x41, 0x6B, 0x4D, 0xA7, 0x83, 0x65, - 0x01, 0xFF, 0x82, 0x0E, 0x0E, 0x04, 0xFC, 0x8B, 0x24, 0xD1, 0x65, 0x3B, - 0xF0, 0x61, 0x78, 0x2A, 0x43, 0x4A, 0xD5, 0xDE, 0xE2, 0x7E, 0x41, 0x15, - 0x76, 0x08, 0xB8, 0x9B, 0x24, 0x2D, 0x2A, 0xD9, 0x3C, 0xA7, 0x17, 0x47, - 0xF7, 0x88, 0xA0, 0xCF, 0xDD, 0x5B, 0x08, 0xB6, 0x05, 0x25, 0x54, 0x80, - 0x93, 0x83, 0x9E, 0x8D, 0xE1, 0x1F, 0xE6, 0x8E, 0x08, 0x4C, 0x06, 0x26, - 0xE2, 0x0B, 0xE5, 0xEE, 0xDD, 0x4D, 0xAB, 0xD0, 0x43, 0x15, 0x95, 0x66, - 0x8F, 0xB6, 0xF8, 0x54, 0xF2, 0xF5, 0x9F, 0x79, 0xB5, 0x08, 0x2E, 0x94, - 0x8D, 0x1F, 0x00, 0x86, 0xEF, 0xF2, 0xB7, 0x1C, 0x9A, 0x01, 0xA9, 0x00, - 0xE2, 0x61, 0x39, 0x47, 0x52, 0xF1, 0x25, 0xA6, 0xA2, 0xCC, 0x82, 0xB4, - 0xE1, 0x93, 0xBE, 0xC4, 0xBF, 0x2E, 0xBA, 0x02, 0x5D, 0x65, 0x09, 0x50, - 0x2F, 0x36, 0x58, 0x82, 0x49, 0x9C, 0xC3, 0x78, 0xD8, 0x1D, 0xD5, 0xBC, - 0xE8, 0x18, 0xA7, 0xD8, 0x9C, 0xB0, 0x15, 0x7D, 0xF9, 0xE1, 0x58, 0xD3, - 0x59, 0xEA, 0x13, 0xEC, 0x9F, 0xD7, 0xF3, 0x35, 0x90, 0xF7, 0x29, 0xC0, - 0x21, 0x7C, 0x55, 0xD4, 0x11, 0x48, 0xF7, 0x6F, 0x6A, 0x00, 0xC5, 0x25, - 0xE5, 0x00, 0x64, 0xC4, 0xB0, 0x31, 0xE5, 0xF2, 0x03, 0x92, 0x9A, 0x07, - 0x47, 0x5E, 0xA0, 0x94, 0x65, 0xAF, 0x5A, 0xB6, 0xFC, 0x4B, 0x48, 0xB6, - 0x4A, 0xCF, 0x4D, 0xCA, 0x8C, 0x16, 0x77, 0x6C, 0xF7, 0x99, 0xBD, 0xCC, - 0x1E, 0x40, 0x55, 0xE2, 0xAA, 0xCB, 0xBF, 0xCC, 0x74, 0x92, 0xA2, 0x8A, - 0x64, 0xC3, 0xE6, 0x17, 0x60, 0x10, 0x72, 0xD1, 0xA0, 0x62, 0xD3, 0x06, - 0xCF, 0x12, 0xAD, 0xE6, 0xBE, 0xC4, 0x76, 0xD7, 0x34, 0x8E, 0xA7, 0xB4, - 0x76, 0xD5, 0x9D, 0xC3, 0xA1, 0x4A, 0xCE, 0xA9, 0xC0, 0x4F, 0x70, 0x15, - 0x91, 0xAD, 0x41, 0x23, 0x44, 0xB8, 0x65, 0x8C, 0x44, 0x49, 0x4F, 0xB8, - 0xBE, 0x45, 0x49, 0xA5, 0xAF, 0x02, 0x66, 0x71, 0x58, 0xB6, 0x8D, 0x40, - 0xAD, 0x4F, 0x89, 0xF4, 0x6F, 0x25, 0x14, 0xB0, 0x62, 0x9A, 0xA6, 0xE8, - 0x72, 0x01, 0x66, 0x02, 0xC9, 0xF2, 0xCE, 0xCA, 0xBD, 0xA1, 0x3A, 0x12, - 0xE4, 0xD4, 0x3A, 0x4B, 0x40, 0xC6, 0xB6, 0x29, 0x00, 0xC9, 0x92, 0x04, - 0x3B, 0xBC, 0xA9, 0x2E, 0xAD, 0x63, 0x7C, 0xC5, 0x84, 0xAE, 0x3D, 0x91, - 0x64, 0x28, 0xB1, 0xA2, 0xA7, 0x7E, 0x67, 0xD5, 0xBF, 0x8B, 0x00, 0x23, - 0x37, 0x87, 0x57, 0x83, 0xA8, 0x2C, 0x13, 0x12, 0x5A, 0x86, 0x67, 0x79, - 0x3A, 0xF7, 0xFA, 0x2B, 0xCB, 0xC2, 0xB6, 0x20, 0xF0, 0xD2, 0x3F, 0x39, - 0x1B, 0x23, 0xA2, 0x11, 0x74, 0x9C, 0xA2, 0x8E, 0x91, 0x4E, 0x70, 0xB3, - 0xE1, 0x85, 0x18, 0xC6, 0x16, 0x4B, 0x25, 0x93, 0xF1, 0x76, 0x74, 0x4C, - 0xA8, 0x9C, 0x81, 0x73, 0xE4, 0x97, 0x54, 0x2A, 0x74, 0x45, 0xD7, 0x3A, - 0x80, 0x36, 0x43, 0x68, 0x91, 0xAE, 0x99, 0x3B, 0xE6, 0x64, 0x28, 0xC1, - 0xFD, 0xE6, 0xD3, 0xFA, 0xCE, 0xE2, 0x63, 0xA2, 0x27, 0xA0, 0x50, 0x83, - 0x9E, 0x90, 0xE9, 0x47, 0x95, 0x27, 0x20, 0x6F, 0x82, 0x4A, 0x88, 0x46, - 0xBB, 0xC6, 0xBA, 0x55, 0x72, 0xA8, 0xBD, 0x21, 0xD7, 0xE7, 0xFC, 0xC2, - 0xCF, 0x30, 0x43, 0x09, 0x80, 0x15, 0xDC, 0x61, 0xFA, 0xE3, 0x46, 0x03, - 0xD6, 0x28, 0x05, 0xC4, 0x24, 0xD3, 0xC6, 0x90, 0x36, 0x4B, 0x58, 0xE0, - 0x32, 0x3A, 0x6B, 0xDD, 0x95, 0xEF, 0x4A, 0xDB, 0x72, 0x8A, 0x85, 0xFD, - 0x1B, 0x72, 0x48, 0xAF, 0xE1, 0x75, 0x0B, 0xAF, 0x65, 0xAA, 0xDC, 0xD1, - 0xBA, 0xB5, 0x6F, 0x15, 0x95, 0xE6, 0x2B, 0x9B, 0x78, 0xE3, 0xCF, 0xB8, - 0xB6, 0x1D, 0xE6, 0xB9, 0xB9, 0xA5, 0x20, 0x53, 0xC4, 0x50, 0xDC, 0xD2, - 0x4A, 0x4D, 0x80, 0x44, 0xF5, 0xFD, 0x68, 0xB0, 0x78, 0x75, 0x79, 0x08, - 0x19, 0xCE, 0x4C, 0xA1, 0x85, 0x51, 0xFA, 0xCB, 0xB6, 0xE6, 0x4B, 0x81, - 0x42, 0x5D, 0xEA, 0xF3, 0x97, 0xC6, 0x68, 0xD1, 0x56, 0x51, 0x52, 0x48, - 0x3D, 0x61, 0xD2, 0x1C, 0x0D, 0x68, 0x4A, 0xC4, 0xDE, 0x06, 0x04, 0x34, - 0x1C, 0xE4, 0xD1, 0x36, 0xED, 0x6D, 0xA7, 0x70, 0x38, 0x89, 0x64, 0x34, - 0xC3, 0xBB, 0x93, 0xA2, 0x75, 0xE6, 0x39, 0xF7, 0x97, 0x1C, 0xBD, 0x8F, - 0xD1, 0xAF, 0x4C, 0x98, 0xF4, 0x7D, 0xD7, 0x71, 0xEE, 0x50, 0x78, 0x72, - 0x86, 0xB0, 0xD4, 0xB9, 0xD0, 0xCB, 0x5B, 0xB1, 0x50, 0x55, 0xFC, 0xC2, - 0xB3, 0x0B, 0x2F, 0xAF, 0x54, 0x32, 0x7C, 0x77, 0x6E, 0xC8, 0x2A, 0x57, - 0xBB, 0x99, 0x8E, 0xB3, 0x93, 0x37, 0x11, 0xFE, 0x23, 0x2C, 0x4B, 0x33, - 0x48, 0x9D, 0x13, 0x05, 0xD9, 0x90, 0xF3, 0x4D, 0xBB, 0x3C, 0x3C, 0xBE, - 0xF2, 0x29, 0x6A, 0xFB, 0xC9, 0x77, 0x21, 0x64, 0x3A, 0xA7, 0xA4, 0x8D, - 0xC8, 0x62, 0x4D, 0xE7, 0x97, 0x96, 0x2D, 0x88, 0xF7, 0xF1, 0x0D, 0x99, - 0x35, 0x09, 0x2B, 0x34, 0xAF, 0x19, 0xB4, 0xBC, 0x0C, 0xBA, 0x35, 0x13, - 0x9F, 0x85, 0x27, 0x98, 0xD7, 0x5A, 0x98, 0x76, 0x41, 0x3D, 0xE3, 0xDC, - 0xB1, 0x57, 0x2F, 0x84, 0xA7, 0xAC, 0x60, 0x28, 0x0A, 0x41, 0xCA, 0xA1, - 0xB6, 0xB4, 0x68, 0xA9, 0x4F, 0xC8, 0xDA, 0x4A, 0x43, 0x89, 0x25, 0x36, - 0xC9, 0xCF, 0x6E, 0x3F, 0x04, 0x73, 0xCB, 0xE7, 0x9E, 0x2A, 0xB6, 0x04, - 0xFF, 0x9F, 0x4B, 0x42, 0x7D, 0x2D, 0x74, 0xAC, 0x3D, 0x6D, 0x78, 0xC7, - 0xA5, 0x34, 0x9C, 0xD2, 0x8A, 0x09, 0x06, 0xF0, 0x80, 0xA9, 0x69, 0x60, - 0xEC, 0x52, 0x70, 0x6B, 0x34, 0x0C, 0x7E, 0xAF, 0x17, 0xA7, 0x48, 0x5E, - 0xAF, 0x85, 0xF7, 0x29, 0xE4, 0x33, 0x54, 0xA2, 0x44, 0x8B, 0xA0, 0x30, - 0xF0, 0xAA, 0xE5, 0xAD, 0x87, 0x5E, 0xF6, 0xA8, 0x67, 0xBA, 0x4A, 0x4E, - 0xA8, 0x85, 0xED, 0x50, 0x2C, 0x4D, 0xBA, 0xC2, 0x89, 0x2F, 0x39, 0x64, - 0x62, 0x9F, 0x4B, 0x8E, 0x60, 0x5B, 0x2C, 0x5F, 0x4A, 0xFA, 0x65, 0xB3, - 0xCD, 0x52, 0x93, 0x43, 0xC1, 0x71, 0x3E, 0xE7, 0xFB, 0x78, 0xAD, 0x32, - 0xEC, 0xF0, 0xB8, 0x2C, 0x72, 0xEF, 0xD8, 0x37, 0xCA, 0x80, 0xFB, 0x4F, - 0x2C, 0x18, 0xF4, 0x6D, 0x88, 0x5E, 0xCB, 0x07, 0xB7, 0xB3, 0x9C, 0x05, - 0x58, 0x84, 0x71, 0xB1, 0xE1, 0x11, 0xD4, 0xC9, 0x63, 0xAE, 0x23, 0x82, - 0xEB, 0xF9, 0x48, 0x97, 0xCA, 0x26, 0x30, 0xC2, 0xF1, 0x37, 0x8E, 0xE6, - 0x53, 0x08, 0x16, 0x5E, 0x2A, 0x24, 0x95, 0xFB, 0x92, 0x68, 0xF5, 0xFC, - 0x34, 0x70, 0x98, 0x6E, 0x2C, 0x54, 0x97, 0x81, 0x11, 0xFC, 0x95, 0xEF, - 0xCA, 0xD3, 0xBF, 0xC3, 0xB5, 0xB5, 0xC0, 0xC7, 0xCE, 0xF3, 0x22, 0x8C, - 0x9F, 0xD7, 0xC7, 0xA2, 0xFC, 0x95, 0xEE, 0x69, 0x94, 0x20, 0x16, 0x5B, - 0x55, 0xA4, 0x48, 0x66, 0x2A, 0x70, 0x91, 0xD5, 0x61, 0x32, 0xBB, 0x34, - 0x61, 0x13, 0x00, 0x59, 0xEA, 0xB7, 0xDE, 0xAE, 0xE0, 0xA2, 0xEF, 0x3B, - 0xF0, 0x1C, 0xA9, 0xC2, 0xFC, 0x02, 0xE3, 0x69, 0x8E, 0xBA, 0xED, 0xAD, - 0xBA, 0x37, 0x52, 0x71, 0x4E, 0x8A, 0xC3, 0xA1, 0x77, 0xA8, 0xDF, 0xA5, - 0x3E, 0x95, 0xF7, 0xEE, 0xEF, 0xD7, 0xBE, 0x46, 0x4F, 0x65, 0x7A, 0xB5, - 0x8C, 0xBB, 0xB7, 0x45, 0xB9, 0x36, 0xA2, 0xD1, 0x44, 0xBE, 0x10, 0x8F, - 0x9F, 0x29, 0xDF, 0xFC, 0x4E, 0xC0, 0x69, 0x49, 0x8E, 0x05, 0x07, 0x7D, - 0x9E, 0xA2, 0x0B, 0x6E, 0x92, 0x47, 0x18, 0x99, 0xF2, 0xF7, 0x62, 0x5C, - 0x38, 0xD9, 0xE6, 0x92, 0x82, 0x37, 0x44, 0xB7, 0xAB, 0x8B, 0x7D, 0xB5, - 0x4D, 0x3E, 0xA4, 0xF3, 0x8F, 0x6B, 0x0B, 0x8B, 0x60, 0xDD, 0x55, 0x2D, - 0x9E, 0xB7, 0xF8, 0x79, 0x9B, 0xCA, 0x8F, 0x76, 0x78, 0x7B, 0x1B, 0xE7, - 0xDB, 0x55, 0xBA, 0x71, 0x0B, 0x7F, 0x7D, 0xEC, 0xF4, 0x2A, 0x7D, 0x7E, - 0xA6, 0xD5, 0xE6, 0x7C, 0x50, 0x6E, 0x11, 0x3A, 0x00, 0x33, 0xA5, 0xB7, - 0xF1, 0x40, 0xF5, 0xDE, 0x62, 0xD5, 0xC9, 0x18, 0x76, 0x70, 0x7C, 0x09, - 0x5A, 0x88, 0x2F, 0x0F, 0x5C, 0xC9, 0x80, 0xB1, 0xEA, 0x55, 0x05, 0x4F, - 0x7E, 0x51, 0x25, 0xF8, 0x82, 0x76, 0xF6, 0x0B, 0x5E, 0xC5, 0x7E, 0xCE, - 0xB8, 0x59, 0x2B, 0x2C, 0x8B, 0x0B, 0x43, 0xDC, 0xC7, 0x74, 0x96, 0x13, - 0xBA, 0x34, 0xD7, 0x69, 0x11, 0x6C, 0x01, 0x4E, 0xC2, 0x8A, 0xD7, 0x38, - 0x10, 0x20, 0xB8, 0xAB, 0x20, 0xA1, 0xA7, 0x10, 0x20, 0xD3, 0x61, 0x07, - 0x01, 0x5C, 0x48, 0x89, 0x87, 0x93, 0xFE, 0x36, 0x05, 0x28, 0x52, 0x07, - 0x35, 0xF0, 0x05, 0x75, 0x0D, 0x26, 0x95, 0x77, 0xEC, 0x41, 0x99, 0xBF, - 0xEB, 0xC4, 0xD8, 0xD1, 0x0A, 0x08, 0x78, 0xC6, 0x6A, 0xEA, 0x52, 0x05, - 0x1D, 0x45, 0x5D, 0x87, 0x80, 0x94, 0x42, 0xD9, 0x5A, 0x1F, 0xBA, 0xAE, - 0x11, 0x86, 0xA1, 0xCC, 0xF9, 0xBA, 0x29, 0xE4, 0xF2, 0x07, 0x91, 0xF1, - 0xDF, 0x17, 0x61, 0x56, 0xF5, 0xEC, 0x19, 0xCC, 0x1F, 0xB0, 0xF5, 0x22, - 0x9F, 0xD1, 0x06, 0x93, 0x6B, 0xE5, 0x98, 0xF6, 0xBE, 0xE1, 0x3C, 0x0E, - 0x62, 0xF5, 0x77, 0xF6, 0x27, 0x7E, 0xDB, 0xB2, 0x96, 0x13, 0xCE, 0x0E, - 0x43, 0x41, 0x14, 0x52, 0x35, 0xAF, 0x63, 0x36, 0xAE, 0x97, 0x2E, 0xB0, - 0x22, 0xCA, 0xC1, 0xEC, 0xC9, 0x98, 0x93, 0xBD, 0xCD, 0x8E, 0x90, 0x6B, - 0x12, 0x30, 0x1D, 0xAA, 0x6C, 0xB4, 0xEF, 0x3B, 0x0D, 0x24, 0xBE, 0x28, - 0xB0, 0xD1, 0xAD, 0x06, 0xDA, 0x82, 0x16, 0x0F, 0xB2, 0xD4, 0xDB, 0x2A, - 0xAC, 0x7B, 0x94, 0x62, 0xF3, 0x3F, 0x29, 0xA6, 0xF3, 0x6F, 0xC5, 0xD6, - 0xBB, 0x81, 0x53, 0xAB, 0x86, 0xE5, 0xA5, 0x63, 0x02, 0xDA, 0xF3, 0x88, - 0x8E, 0xBF, 0xB5, 0x56, 0x1A, 0x79, 0x4D, 0x39, 0xCA, 0xDB, 0xC9, 0xD4, - 0x78, 0xFD, 0x4C, 0xDB, 0x03, 0x10, 0x84, 0x83, 0xAD, 0x4A, 0x13, 0xCF, - 0xB8, 0xD7, 0x58, 0x34, 0x51, 0xD8, 0x13, 0x25, 0x99, 0x46, 0x9E, 0xD6, - 0xD7, 0xDB, 0xE6, 0x2F, 0x6F, 0xAC, 0x12, 0xF1, 0x08, 0xB1, 0x07, 0xB9, - 0x73, 0x61, 0xDB, 0x68, 0xAE, 0x3A, 0xC3, 0xBC, 0x74, 0x02, 0xD3, 0x55, - 0x8F, 0x69, 0x8A, 0x2E, 0x51, 0x84, 0xEA, 0x19, 0x6B, 0xA9, 0x52, 0xC7, - 0x06, 0x47, 0x79, 0xFB, 0xD0, 0x98, 0xC6, 0x7D, 0xF2, 0xBA, 0xF6, 0xE4, - 0xEC, 0x10, 0x69, 0xE0, 0xB8, 0x52, 0x2C, 0x7F, 0xB8, 0x9C, 0x4F, 0xB2, - 0x5A, 0x48, 0x39, 0x05, 0x81, 0xA8, 0x5E, 0x91, 0xD6, 0xFA, 0x84, 0xC9, - 0xE6, 0x12, 0xC6, 0x09, 0x44, 0x3A, 0x69, 0xE9, 0x9C, 0x20, 0x9C, 0x4B, - 0x6E, 0x39, 0xC8, 0x0A, 0xC8, 0x65, 0x28, 0x96, 0xA6, 0x6F, 0x3B, 0x07, - 0x5E, 0xB0, 0xF1, 0x91, 0x27, 0x99, 0x38, 0x23, 0xF9, 0x0B, 0xF1, 0xE1, - 0xC6, 0x01, 0xFB, 0x64, 0xA1, 0x41, 0x4D, 0x49, 0xEA, 0xC6, 0x35, 0xF4, - 0x6A, 0x73, 0xE9, 0x9E, 0x6A, 0x2F, 0xA0, 0x00, 0x06, 0xF7, 0xF6, 0x8C, - 0xD7, 0x3D, 0x7A, 0xC5, 0xEF, 0xBD, 0x91, 0xFD, 0x76, 0x8D, 0x78, 0xAA, - 0x2D, 0x14, 0x0F, 0x01, 0xC8, 0x70, 0x96, 0xF9, 0x8F, 0x83, 0x61, 0xC7, - 0xE4, 0xB2, 0xA6, 0x52, 0xBB, 0xE5, 0x1B, 0x49, 0x16, 0xCC, 0xBE, 0xD7, - 0xAF, 0x76, 0xA7, 0x38, 0x44, 0x4D, 0xF2, 0xAC, 0x23, 0xD2, 0x50, 0x2C, - 0xE7, 0x4E, 0xDC, 0xBA, 0xFD, 0xCB, 0x0C, 0x8A, 0xEA, 0xE7, 0x7A, 0x00, - 0xEE, 0x14, 0xAB, 0xC9, 0x52, 0xCE, 0xA4, 0x38, 0x40, 0xE0, 0x75, 0x5E, - 0x33, 0xCA, 0xA5, 0x20, 0xB7, 0x5D, 0xF9, 0x09, 0x1A, 0xA8, 0xBD, 0xBE, - 0x34, 0xBF, 0xD8, 0x12, 0xF9, 0xF0, 0xC2, 0x63, 0xEE, 0xFF, 0xA9, 0xBF, - 0x5C, 0xD7, 0xD3, 0x3A, 0x40, 0xEC, 0xE6, 0x32, 0x86, 0xA7, 0xA7, 0x0B, - 0xA8, 0x87, 0x7A, 0x3E, 0x5E, 0x53, 0x4B, 0x85, 0x53, 0xFA, 0x9F, 0xA2, - 0xAB, 0xC7, 0x88, 0x16, 0x77, 0x4D, 0x35, 0x06, 0xFE, 0xDA, 0x4A, 0x47, - 0x4F, 0x1C, 0x7C, 0xFF, 0x4C, 0xB2, 0x84, 0x2D, 0x4F, 0x51, 0x7F, 0x65, - 0x4E, 0x1C, 0xA7, 0x92, 0xE6, 0xCD, 0x80, 0x0A, 0xA3, 0xE8, 0xB8, 0x7A, - 0x42, 0xBC, 0x3A, 0x09, 0xEC, 0xE4, 0x7D, 0x2F, 0xBC, 0x27, 0x2A, 0xBD, - 0x8C, 0x6E, 0xE4, 0x48, 0x54, 0x73, 0x6D, 0x1F, 0x15, 0xCD, 0x37, 0x39, - 0x64, 0x12, 0xE3, 0xE4, 0x49, 0x35, 0xCA, 0x83, 0x84, 0xE3, 0xE2, 0x58, - 0xEB, 0xEB, 0x8D, 0xC7, 0x3B, 0x9E, 0xB0, 0xD4, 0x74, 0xF9, 0xC9, 0x09, - 0x58, 0x15, 0xC4, 0x43, 0x18, 0x1E, 0x1D, 0x6D, 0xE2, 0xB1, 0xE7, 0x2A, - 0x50, 0xC6, 0x4F, 0x32, 0x39, 0xAE, 0xC8, 0x9E, 0x6C, 0xFF, 0xF7, 0xD2, - 0xD9, 0xA6, 0x13, 0x85, 0x82, 0xA2, 0xF7, 0x0A, 0xF7, 0x2E, 0x52, 0x96, - 0x41, 0xCE, 0x84, 0x1E, 0x54, 0x53, 0x4A, 0x63, 0x34, 0xA2, 0x56, 0x3A, - 0xD1, 0xAF, 0x52, 0xDF, 0x33, 0x39, 0x37, 0xBD, 0x78, 0x52, 0x01, 0x95, - 0x52, 0xA1, 0x39, 0xE0, 0xEB, 0x33, 0xC5, 0x05, 0x5B, 0x02, 0xB7, 0xFE, - 0xA7, 0x89, 0x7F, 0xE2, 0x30, 0x27, 0xF4, 0xD4, 0xBF, 0x07, 0x44, 0xF8, - 0x6A, 0x56, 0x82, 0xE1, 0x87, 0xE1, 0xFB, 0xBA, 0x06, 0xD1, 0x75, 0xBB, - 0x32, 0x69, 0x61, 0x6B, 0x45, 0x68, 0x87, 0x2C, 0x4C, 0xF2, 0xBE, 0xAD, - 0x27, 0xB7, 0x7B, 0x9E, 0xB2, 0x24, 0x15, 0x44, 0x89, 0x2D, 0x2A, 0xF2, - 0x10, 0xE5, 0x0D, 0x60, 0x44, 0xC8, 0x25, 0x03, 0xAD, 0xC9, 0x64, 0xAA, - 0xD6, 0x90, 0x05, 0x14, 0xD7, 0xFE, 0xBF, 0x3B, 0x0F, 0xD8, 0x76, 0xD9, - 0x76, 0x24, 0xE8, 0xA5, 0xF1, 0x0C, 0xAA, 0x78, 0x4D, 0xF1, 0x43, 0x8A, - 0x5E, 0x8B, 0x40, 0xC2, 0x15, 0xD9, 0x3E, 0x29, 0x75, 0x8F, 0x8D, 0x63, - 0x32, 0x4B, 0xC4, 0xFD, 0x4F, 0x7C, 0x9C, 0x33, 0x6A, 0x21, 0x17, 0xE6, - 0xF7, 0xA5, 0x03, 0x3D, 0x68, 0x3E, 0xC9, 0x2A, 0x46, 0xCB, 0xB1, 0x5F, - 0x69, 0x67, 0xDC, 0x28, 0xD7, 0xA9, 0x0D, 0x08, 0xAA, 0x55, 0x9B, 0xB1, - 0x52, 0x7B, 0x20, 0x28, 0xC2, 0x67, 0x77, 0xBA, 0xB1, 0xC4, 0x81, 0x70, - 0x5E, 0xDD, 0x46, 0x89, 0x16, 0xC9, 0x16, 0x5E, 0x79, 0x16, 0xEC, 0x7C, - 0x5C, 0x5B, 0x6B, 0x15, 0x74, 0x28, 0xE4, 0xB7, 0xFC, 0x59, 0xB7, 0x22, - 0xB7, 0x5C, 0x8D, 0x7A, 0xB2, 0x4F, 0xE4, 0x29, 0x2D, 0xD1, 0x10, 0xBF, - 0xCA, 0x92, 0x90, 0x85, 0x51, 0x76, 0x48, 0x1D, 0x4F, 0x7B, 0x40, 0xC1, - 0xB2, 0xED, 0x91, 0x20, 0x96, 0xD3, 0xD4, 0x46, 0x10, 0xD0, 0xA6, 0xF4, - 0x3F, 0x0B, 0x7D, 0x6D, 0x6C, 0x04, 0xC9, 0x94, 0x23, 0x97, 0x2F, 0xBD, - 0x75, 0x06, 0x68, 0x85, 0xCB, 0x2D, 0xFD, 0xA9, 0xD1, 0xD5, 0xD2, 0x98, - 0x60, 0x74, 0xC8, 0x1D, 0xAD, 0x8A, 0x21, 0xD3, 0x54, 0x8F, 0x20, 0xBE, - 0x06, 0x3D, 0x34, 0xE4, 0x95, 0x78, 0x55, 0x8E, 0x70, 0xC5, 0xB5, 0x3B, - 0x68, 0x58, 0x2F, 0xC2, 0x16, 0xEC, 0x7F, 0x85, 0xC0, 0x05, 0x28, 0xB7, - 0xBF, 0x33, 0x3F, 0x0D, 0x83, 0xC7, 0x93, 0x36, 0x97, 0x24, 0x18, 0x0A, - 0x43, 0x28, 0xFF, 0x90, 0xA1, 0x38, 0xF5, 0xCE, 0x27, 0xCA, 0xD7, 0x47, - 0x46, 0xBD, 0x40, 0x7A, 0xF2, 0x49, 0x2D, 0x56, 0x1B, 0xAD, 0xDA, 0x00, - 0x51, 0x74, 0x44, 0xA3, 0x09, 0x25, 0xE7, 0xB9, 0x13, 0xA8, 0x51, 0xED, - 0xED, 0xDB, 0xB1, 0x54, 0xFB, 0x5F, 0x38, 0x30, 0x0D, 0x4B, 0x4B, 0x92, - 0xB5, 0x2B, 0x45, 0x5E, 0x41, 0xFB, 0x27, 0xC4, 0x17, 0xDF, 0x82, 0x3D, - 0x9C, 0xD3, 0xF9, 0x8A, 0x0E, 0x4A, 0x2F, 0xA1, 0x4D, 0xF4, 0x7C, 0x26, - 0xFB, 0x8A, 0xA9, 0xBC, 0xB3, 0xE8, 0x3D, 0x11, 0x5A, 0x2B, 0x9D, 0x7D, - 0xDA, 0xE7, 0x85, 0x19, 0x9F, 0x78, 0x70, 0x5A, 0x5C, 0xDE, 0x88, 0x40, - 0x8C, 0x09, 0x5A, 0x0A, 0x2E, 0x0C, 0x6E, 0xF2, 0xFA, 0x9A, 0x00, 0xAC, - 0x2A, 0x29, 0xB1, 0x30, 0xB1, 0x19, 0x0A, 0x1E, 0x01, 0x6C, 0x02, 0x2F, - 0x6F, 0x1D, 0xDF, 0x77, 0x45, 0xF6, 0x81, 0x1F, 0xBC, 0x2D, 0x55, 0x2D, - 0x31, 0xC9, 0x34, 0x9A, 0xE3, 0x04, 0xC7, 0xD1, 0x1D, 0xA2, 0xE1, 0x5D, - 0xD4, 0xFF, 0x2F, 0xD5, 0x74, 0x1B, 0xAF, 0x49, 0xA3, 0x2A, 0xE2, 0x31, - 0x8D, 0x7E, 0x3B, 0x21, 0x64, 0x54, 0x8D, 0x52, 0x64, 0x58, 0x96, 0xFF, - 0x83, 0x4F, 0x43, 0xA8, 0x4A, 0xDD, 0xB0, 0xFE, 0xC7, 0x4F, 0x8C, 0xDD, - 0xA3, 0x02, 0x30, 0xCA, 0xC2, 0xB2, 0x59, 0x17, 0x5D, 0xB3, 0xD7, 0x0A, - 0x66, 0x4D, 0xF6, 0x7B, 0x38, 0xA2, 0x67, 0xDA, 0x37, 0x3C, 0x69, 0xF0, - 0x89, 0xE5, 0x57, 0xBA, 0xAF, 0x7C, 0x0C, 0x64, 0x3A, 0x5B, 0x8D, 0xD5, - 0x33, 0xE4, 0xBC, 0xFD, 0x45, 0x44, 0x04, 0x23, 0xDB, 0x03, 0x3D, 0xCD, - 0xA1, 0xA8, 0x6A, 0xE6, 0x9E, 0xDB, 0x1D, 0xBF, 0x10, 0xBB, 0x32, 0xD8, - 0x6A, 0x47, 0xDB, 0x83, 0x24, 0xE4, 0x1B, 0x4C, 0xC3, 0xDE, 0x5B, 0x3D, - 0xD5, 0x1E, 0x69, 0x51, 0xA3, 0x94, 0xFF, 0x97, 0x54, 0x44, 0xDF, 0x20, - 0x41, 0xD8, 0xE2, 0xFE, 0x72, 0xC7, 0x0B, 0x99, 0x0B, 0x1D, 0x49, 0x09, - 0xA9, 0xBE, 0xE4, 0x66, 0xD1, 0x16, 0x49, 0x8A, 0xE9, 0xBD, 0x7D, 0xEF, - 0xCF, 0xE2, 0x69, 0x2A, 0x51, 0x28, 0xCC, 0xD6, 0x80, 0xC7, 0xCE, 0x9C, - 0x9E, 0x20, 0x1D, 0x42, 0x00, 0x5F, 0x3C, 0xCC, 0x0B, 0x10, 0x40, 0xE3, - 0x7A, 0xB6, 0x2A, 0x34, 0xB6, 0x44, 0x50, 0x6F, 0x9B, 0x6E, 0xC5, 0xE5, - 0xE1, 0x94, 0x0D, 0x0C, 0x9B, 0xF7, 0x35, 0x91, 0xFD, 0xCE, 0x65, 0x1A, - 0x79, 0xE1, 0x20, 0x69, 0xAD, 0xB4, 0x92, 0xC2, 0x58, 0x85, 0xF9, 0x45, - 0x1C, 0x98, 0x46, 0xC7, 0x23, 0xA4, 0xDD, 0x81, 0x7C, 0x93, 0x81, 0x55, - 0x1D, 0x47, 0x7B, 0x23, 0x18, 0xB4, 0x7D, 0xFF, 0x03, 0xA5, 0xE0, 0x78, - 0xE3, 0x57, 0xA3, 0x17, 0xB3, 0xB1, 0x01, 0x88, 0x03, 0xA9, 0x10, 0x0B, - 0x35, 0xFE, 0x67, 0xFA, 0x67, 0x6F, 0xD3, 0xF5, 0x25, 0xCB, 0x75, 0xA0, - 0x4F, 0x39, 0xD6, 0x5B, 0xD0, 0x65, 0xD7, 0xA8, 0x77, 0xBB, 0xD8, 0x60, - 0xAF, 0x2B, 0x9D, 0x37, 0x19, 0xFA, 0x83, 0xF8, 0x52, 0x57, 0xDA, 0x2D, - 0xEF, 0xBC, 0x17, 0xAA, 0xC6, 0x97, 0xF4, 0xC5, 0xEF, 0x16, 0x81, 0xA7, - 0xBF, 0x27, 0x49, 0xEA, 0x7A, 0x23, 0x6F, 0x31, 0x6D, 0x62, 0x5B, 0xB6, - 0xF3, 0x61, 0xE1, 0xFA, 0x87, 0x72, 0xE8, 0xE1, 0x0C, 0x89, 0x6B, 0x53, - 0xF0, 0x7F, 0x09, 0x9D, 0x7E, 0x1D, 0x8C, 0x02, 0xFE, 0x29, 0xAA, 0xBD, - 0x6C, 0xB1, 0x68, 0x67, 0xCC, 0xA6, 0xEA, 0xAE, 0xA9, 0x84, 0xDD, 0xC4, - 0x44, 0xF7, 0x2E, 0x22, 0x8C, 0xA5, 0x07, 0xE7, 0xEE, 0xE5, 0xC6, 0xB5, - 0xF3, 0x5A, 0x41, 0xD4, 0x02, 0x2A, 0xE6, 0x1E, 0x79, 0x5C, 0x4B, 0x1B, - 0xED, 0x9F, 0x2A, 0xBA, 0xB6, 0x0E, 0x9B, 0xAB, 0x83, 0x2D, 0xF0, 0x84, - 0x35, 0x83, 0xA2, 0xF4, 0x2C, 0xB6, 0x2F, 0x4C, 0xE9, 0x8B, 0xF6, 0xA4, - 0x5C, 0x8A, 0xEC, 0x01, 0x9A, 0x2E, 0x80, 0xC0, 0x6C, 0x5B, 0xAC, 0x92, - 0x07, 0xAB, 0x93, 0x2D, 0x5D, 0x77, 0x7A, 0xA3, 0xA1, 0xDB, 0x8F, 0x05, - 0x51, 0xD9, 0x92, 0x98, 0x1E, 0xD1, 0x23, 0x01, 0xEC, 0x7E, 0xB7, 0xB8, - 0x4F, 0xA7, 0xCD, 0xCC, 0x5F, 0x76, 0x64, 0xDD, 0x06, 0xA9, 0xC9, 0x98, - 0xD2, 0x3C, 0xB8, 0x06, 0x4B, 0x79, 0x28, 0x9E, 0x14, 0x10, 0xFB, 0x39, - 0xDC, 0xF9, 0xE1, 0xE5, 0x27, 0xFB, 0x89, 0x8C, 0x66, 0xB6, 0xFE, 0xC1, - 0x13, 0x0F, 0x7C, 0xAA, 0x6A, 0x02, 0x45, 0xB1, 0x18, 0xD8, 0x3A, 0x2C, - 0x94, 0x09, 0x8B, 0x66, 0xED, 0xE9, 0xD7, 0x5E, 0xA2, 0x48, 0x01, 0x8D, - 0x8D, 0xC7, 0x05, 0x6A, 0xD3, 0x67, 0x07, 0xFC, 0x22, 0x28, 0xE8, 0x0F, - 0xCD, 0xFF, 0x12, 0xD5, 0xED, 0x64, 0x3F, 0xE5, 0x89, 0x08, 0x41, 0x2C, - 0x49, 0x4D, 0x07, 0x7D, 0xF8, 0x2C, 0x28, 0xB5, 0x2F, 0xCB, 0xF6, 0xC0, - 0x68, 0xDB, 0x0E, 0xFF, 0x92, 0x06, 0xCC, 0x15, 0x17, 0xDD, 0xA7, 0xF4, - 0xA9, 0x7C, 0x49, 0xFF, 0x91, 0x8B, 0xBE, 0xA5, 0xDC, 0x43, 0x5B, 0xD9, - 0x17, 0x17, 0x4A, 0xBC, 0x27, 0xAC, 0x90, 0xC4, 0xC7, 0x68, 0x9F, 0x84, - 0x29, 0x4E, 0x52, 0xF4, 0x6D, 0x29, 0x30, 0xA7, 0xB4, 0x87, 0x42, 0x4F, - 0x93, 0x1D, 0x71, 0x7A, 0xC4, 0x97, 0x7C, 0xEB, 0xB1, 0x55, 0xDA, 0x95, - 0xA5, 0x48, 0xC8, 0xA3, 0xFF, 0x2E, 0xE0, 0x2F, 0x5B, 0xE1, 0xA3, 0x2A, - 0x93, 0x2A, 0x34, 0x30, 0x19, 0x63, 0x45, 0xB1, 0x7D, 0x68, 0x95, 0x23, - 0xCD, 0xE1, 0x79, 0x1B, 0x4D, 0x10, 0x45, 0x0C, 0x9B, 0xF3, 0x7A, 0x13, - 0x78, 0xC1, 0x06, 0x09, 0x7E, 0x24, 0xAE, 0xDE, 0xB7, 0xE0, 0x91, 0x12, - 0x4C, 0x0C, 0xA3, 0x0F, 0xA9, 0xFE, 0xB5, 0x2E, 0x13, 0x16, 0x87, 0x9F, - 0x89, 0xBD, 0x33, 0x72, 0xF9, 0x34, 0xBC, 0x50, 0xA3, 0x60, 0x49, 0xED, - 0x65, 0x04, 0xD3, 0xB7, 0x94, 0x95, 0x8D, 0xFA, 0xE9, 0xE5, 0x8C, 0x6F, - 0x72, 0xEB, 0xE6, 0x21, 0x77, 0x6E, 0xCE, 0x77, 0xEE, 0xFC, 0xDA, 0x4E, - 0x93, 0xDA, 0x1E, 0xCD, 0xA3, 0xB0, 0xB1, 0x40, 0x37, 0xC8, 0x7B, 0x3E, - 0xFF, 0x8D, 0x99, 0xAF, 0xB7, 0x79, 0x18, 0x6D, 0xF6, 0xB0, 0x7E, 0xA1, - 0xFD, 0x0F, 0x55, 0x98, 0x65, 0xCD, 0x74, 0x64, 0x4C, 0x97, 0x63, 0x48, - 0xC1, 0x0C, 0x24, 0xBE, 0xC9, 0x92, 0x8E, 0x8F, 0x15, 0x66, 0x0A, 0x02, - 0x13, 0xC2, 0x5B, 0x9F, 0xB2, 0x03, 0xD1, 0xC3, 0x0A, 0xCE, 0x56, 0x6E, - 0x26, 0xD1, 0x55, 0x4E, 0xFA, 0xE9, 0xCB, 0x48, 0xA5, 0x74, 0xCC, 0x59, - 0x54, 0x92, 0x40, 0x15, 0x07, 0x5D, 0x92, 0xAD, 0xCF, 0x7C, 0x75, 0x2D, - 0x0C, 0xEE, 0x5B, 0x75, 0x99, 0xB5, 0x66, 0x9B, 0xC6, 0x62, 0xAC, 0x84, - 0xC8, 0x69, 0x53, 0xA3, 0xD3, 0xAC, 0x64, 0x1F, 0x3C, 0x6B, 0xD4, 0xB8, - 0x57, 0x79, 0x20, 0xDB, 0x28, 0xD8, 0x0B, 0xB0, 0x40, 0x72, 0x76, 0x40, - 0x51, 0xEC, 0xBC, 0x36, 0x4A, 0xC7, 0x01, 0x55, 0x1D, 0x76, 0xE8, 0xB3, - 0xF6, 0x5B, 0x38, 0x9A, 0x01, 0xFE, 0x00, 0xE0, 0x5B, 0xF6, 0x3F, 0x5D, - 0xC2, 0x55, 0x0E, 0x1A, 0xB6, 0xC1, 0x88, 0x43, 0xB9, 0xB8, 0xE5, 0xDA, - 0xF9, 0x6D, 0xBC, 0x96, 0x3F, 0xC5, 0xB3, 0xC2, 0x14, 0xFF, 0xB8, 0x24, - 0x70, 0x4D, 0x8F, 0xF2, 0x65, 0xD9, 0x52, 0xE2, 0x6F, 0x95, 0x47, 0x0F, - 0xEF, 0xD3, 0xBD, 0xF0, 0x93, 0xF6, 0x77, 0x7C, 0x4B, 0xDD, 0x09, 0xA1, - 0x9D, 0x14, 0xB7, 0x09, 0x75, 0x5A, 0xD5, 0xE7, 0xCD, 0xB4, 0x4E, 0xC9, - 0xB2, 0xCC, 0xEB, 0xA7, 0x13, 0x8D, 0xF1, 0xBE, 0x7B, 0xF1, 0x3C, 0x03, - 0xDC, 0xAE, 0x73, 0x50, 0xC1, 0x79, 0xDC, 0x1E, 0xC1, 0x3A, 0xD1, 0x23, - 0x9D, 0xF1, 0xF3, 0x87, 0x18, 0x5B, 0x97, 0x09, 0x53, 0xF2, 0x61, 0x89, - 0x2D, 0xD7, 0x20, 0x3F, 0x40, 0x85, 0x83, 0x1F, 0x69, 0xB0, 0xF7, 0x07, - 0x48, 0x50, 0x2D, 0x2D, 0xEF, 0xA8, 0x1A, 0x9F, 0x0B, 0xC1, 0xA5, 0x3C, - 0xAD, 0x43, 0x59, 0x8A, 0xAA, 0x64, 0x6C, 0x60, 0x50, 0x67, 0x3B, 0x52, - 0x61, 0x3D, 0x8B, 0x7B, 0xA5, 0x2D, 0x04, 0x7E, 0xE5, 0xEB, 0xE7, 0x79, - 0x69, 0xD1, 0x05, 0xAE, 0xA2, 0x20, 0x7A, 0xC7, 0x68, 0x8A, 0xCA, 0xBE, - 0xBF, 0x27, 0x0C, 0xB3, 0x49, 0x05, 0x16, 0x83, 0x7F, 0x29, 0x87, 0x1E, - 0x58, 0x94, 0x76, 0xEA, 0xEA, 0xC5, 0x43, 0x3B, 0xB3, 0x17, 0xB6, 0x41, - 0x3C, 0x59, 0x03, 0x20, 0x83, 0x78, 0x57, 0xD8, 0x9A, 0x69, 0x2C, 0xEE, - 0x27, 0xCC, 0xC1, 0xAA, 0x7F, 0x52, 0x3A, 0x81, 0x04, 0xC3, 0xCD, 0x64, - 0xC0, 0xAF, 0xCF, 0xF8, 0xB2, 0x34, 0x8A, 0x94, 0xBD, 0xF7, 0x83, 0x0D, - 0x16, 0xE7, 0xB0, 0x47, 0xA2, 0xFA, 0xD6, 0xA7, 0x3E, 0xDF, 0xE1, 0x3A, - 0xBA, 0x87, 0xA7, 0xF3, 0x8C, 0x5B, 0xB2, 0x28, 0x88, 0x4A, 0x13, 0x69, - 0x1C, 0xEF, 0x07, 0xAE, 0xC4, 0xCE, 0x95, 0x0D, 0x49, 0x1E, 0x11, 0x96, - 0x79, 0x72, 0xEB, 0xA5, 0x3E, 0x86, 0x6B, 0x80, 0xF8, 0xE2, 0xAF, 0x28, - 0x70, 0x22, 0xE0, 0x07, 0x98, 0xD9, 0xE5, 0x0A, 0x45, 0xD1, 0x9A, 0xD9, - 0x86, 0x85, 0xEE, 0x92, 0xCC, 0x9B, 0x3A, 0xB6, 0xFE, 0x3F, 0x17, 0x59, - 0x53, 0xE1, 0xDA, 0xF0, 0x7A, 0x3B, 0x28, 0xD6, 0x28, 0xFD, 0xA2, 0xE6, - 0x49, 0xBA, 0x68, 0x99, 0x32, 0x89, 0x73, 0xB1, 0x87, 0xA8, 0x3E, 0x84, - 0x70, 0xE9, 0xD4, 0x22, 0x24, 0x89, 0x20, 0x01, 0xAF, 0x1B, 0xD9, 0xB5, - 0x51, 0xA6, 0xFB, 0x67, 0x26, 0x9A, 0x89, 0x47, 0x85, 0x52, 0xB6, 0x0B, - 0xD4, 0x6B, 0xEE, 0xF4, 0xEF, 0x44, 0xD8, 0x27, 0x74, 0xBA, 0x1E, 0x3C, - 0x45, 0x68, 0xFF, 0x93, 0xDE, 0x4F, 0x03, 0xA7, 0xC1, 0xB9, 0x11, 0xD3, - 0x27, 0xEB, 0x78, 0x40, 0x68, 0xF5, 0x1D, 0x78, 0xE9, 0x24, 0x47, 0x3E, - 0x80, 0x87, 0xF7, 0xE1, 0x87, 0xDA, 0xA0, 0xE3, 0x79, 0xA6, 0x61, 0x80, - 0xFD, 0x1A, 0xEB, 0x03, 0x7F, 0xE9, 0x50, 0x00, 0xD3, 0x1E, 0xBC, 0x6D, - 0x65, 0xA2, 0xD5, 0x09, 0x53, 0x3E, 0x60, 0x54, 0x6D, 0xD0, 0x2E, 0x01, - 0x04, 0xA6, 0x13, 0xEE, 0xC0, 0x72, 0x8A, 0x66, 0x09, 0x91, 0x56, 0x84, - 0x40, 0xFC, 0x8D, 0x35, 0x01, 0xE2, 0x13, 0x76, 0x4E, 0x63, 0xCE, 0xE8, - 0xF0, 0xD9, 0x0F, 0x09, 0xBA, 0x19, 0x44, 0x4B, 0x44, 0x79, 0xAB, 0xF5, - 0xE2, 0x48, 0x92, 0x3F, 0xD9, 0x16, 0x57, 0xCA, 0x94, 0x82, 0x9E, 0xFE, - 0x02, 0x24, 0x93, 0xAE, 0xF2, 0xF3, 0x2B, 0xCE, 0x0A, 0x17, 0x91, 0x5D, - 0x90, 0x97, 0x74, 0x13, 0x59, 0x8B, 0x16, 0xB4, 0x65, 0xD2, 0xFF, 0x5C, - 0x91, 0x35, 0xB8, 0x6D, 0xA0, 0xEA, 0xCB, 0x07, 0xD2, 0x88, 0x6E, 0x8C, - 0xF1, 0xC3, 0x9C, 0x6E, 0x25, 0xDC, 0xC4, 0x16, 0x73, 0x2B, 0xEA, 0x87, - 0xAC, 0x60, 0x7B, 0x0D, 0x50, 0xFF, 0xE8, 0x24, 0xB2, 0x77, 0xEF, 0xFD, - 0x5D, 0x93, 0x16, 0x62, 0xF5, 0x47, 0x17, 0x5B, 0x3E, 0x0B, 0x55, 0x93, - 0xCD, 0x04, 0xCD, 0xB2, 0x51, 0xFC, 0x78, 0x0A, 0x4E, 0xAD, 0x07, 0x46, - 0xC3, 0x66, 0xE5, 0xA6, 0xB7, 0xE4, 0xE2, 0x71, 0x99, 0xA8, 0x44, 0x5B, - 0xD6, 0x3D, 0x63, 0x7A, 0x3A, 0x4F, 0x15, 0x6E, 0x3E, 0x07, 0x23, 0xDB, - 0xBF, 0xD6, 0x78, 0x2B, 0x51, 0x73, 0xCF, 0x48, 0xB3, 0x2C, 0x6A, 0xB6, - 0x8A, 0x3D, 0x5D, 0x25, 0xA7, 0x70, 0x8D, 0x5A, 0x44, 0x2D, 0x1B, 0x24, - 0x4C, 0x27, 0xAA, 0x02, 0xE3, 0x57, 0x79, 0xA1, 0x74, 0x0F, 0x73, 0x5F, - 0xD2, 0x09, 0x64, 0xE7, 0x26, 0xE6, 0xC3, 0xA4, 0x15, 0x90, 0x12, 0x68, - 0x54, 0x4A, 0xAF, 0xA5, 0x01, 0x0C, 0x10, 0x1D, 0x22, 0xF3, 0x79, 0xAF, - 0xED, 0xA4, 0x68, 0x58, 0x4B, 0x97, 0x6F, 0xE9, 0x2B, 0x59, 0x4B, 0x61, - 0x91, 0x87, 0x0D, 0x33, 0x2C, 0x75, 0xAA, 0x19, 0x93, 0x81, 0xC1, 0xD0, - 0x5D, 0xA6, 0xA4, 0xE4, 0x85, 0x1C, 0xBC, 0x32, 0xA7, 0xB5, 0x36, 0x3F, - 0x26, 0x57, 0xAB, 0xAA, 0xEC, 0x9F, 0xC8, 0x74, 0x08, 0x83, 0x4B, 0x09, - 0xE1, 0x22, 0x94, 0xD5, 0xD8, 0xB4, 0xAA, 0x90, 0xFD, 0x34, 0x14, 0x27, - 0xCA, 0x6B, 0x9A, 0x5A, 0x30, 0x2D, 0x75, 0x6D, 0x01, 0x6D, 0x17, 0xCB, - 0xEF, 0xA6, 0x3F, 0x36, 0xE2, 0xB2, 0x6B, 0x81, 0x3E, 0xAF, 0x8C, 0x92, - 0x70, 0x43, 0xA1, 0x1D, 0x09, 0x61, 0x71, 0x6B, 0x0E, 0x53, 0x0F, 0x6B, - 0x00, 0x32, 0xAC, 0x78, 0xCC, 0x2D, 0xC9, 0x42, 0x0C, 0x70, 0x3F, 0xDF, - 0x52, 0x5C, 0xD4, 0x43, 0xC7, 0xAC, 0x1C, 0x17, 0xE2, 0xC0, 0x75, 0x8B, - 0xF8, 0xC8, 0xD2, 0xE1, 0x69, 0xB1, 0x86, 0x07, 0x82, 0x37, 0xB9, 0x4A, - 0x5F, 0xC6, 0x4F, 0x95, 0x86, 0x1B, 0x6D, 0x2B, 0xEB, 0x21, 0xD2, 0x84, - 0xD6, 0x4B, 0xFA, 0xBF, 0x54, 0x41, 0x34, 0xA8, 0x5C, 0x86, 0x23, 0x3A, - 0x3D, 0xB6, 0x0C, 0x97, 0x28, 0x8B, 0xBB, 0xE8, 0xF6, 0xC0, 0x68, 0xE5, - 0x83, 0x21, 0x60, 0xF0, 0xE8, 0x8D, 0x80, 0xFA, 0x1F, 0xAC, 0x32, 0xC6, - 0x1D, 0x17, 0xD2, 0x3E, 0x57, 0xEB, 0x81, 0x68, 0x28, 0x0B, 0x36, 0x6F, - 0x3C, 0x08, 0xA3, 0xEB, 0xEE, 0xF0, 0x25, 0x24, 0xB2, 0x70, 0xC5, 0x62, - 0xA9, 0xC8, 0x48, 0xDC, 0xA1, 0x02, 0x49, 0x0E, 0xE8, 0x19, 0xBE, 0xFC, - 0x8C, 0x8E, 0xC4, 0xBE, 0x9D, 0x6A, 0xDB, 0x70, 0xDC, 0x78, 0xE1, 0xD4, - 0xD1, 0xA4, 0xC8, 0x57, 0x3E, 0xC7, 0x40, 0xA6, 0xF0, 0xA9, 0x83, 0x12, - 0x76, 0x52, 0x4D, 0xB0, 0xBB, 0xBA, 0xE4, 0x85, 0x93, 0xBF, 0x6D, 0x71, - 0x2C, 0x18, 0x57, 0xDE, 0x57, 0x24, 0x8E, 0x33, 0xD7, 0xF9, 0x36, 0xE6, - 0x3B, 0x63, 0x3B, 0x71, 0xB6, 0xF5, 0x9C, 0x4D, 0x2C, 0xC3, 0x55, 0x7B, - 0xDB, 0xD9, 0x1F, 0x7D, 0xC7, 0x2B, 0x4E, 0x65, 0x3C, 0xD4, 0xFD, 0xEC, - 0x01, 0xA6, 0xD8, 0xDB, 0x4F, 0x0A, 0x76, 0xF2, 0x3E, 0x3E, 0x16, 0xB5, - 0xE9, 0xBB, 0xE7, 0x8B, 0xDF, 0x8D, 0x60, 0x80, 0x79, 0xB5, 0xC6, 0x79, - 0x1E, 0x9A, 0xDB, 0x53, 0xB4, 0x80, 0x6C, 0x9C, 0xC9, 0x97, 0x7C, 0x0E, - 0xAF, 0x41, 0xF9, 0x4C, 0x5E, 0xA4, 0xA4, 0x46, 0x85, 0xF2, 0x9A, 0xAE, - 0xFE, 0xC5, 0xB0, 0xB7, 0x16, 0x07, 0x03, 0x89, 0x27, 0x3F, 0x53, 0x92, - 0x3E, 0x85, 0xE3, 0x23, 0xE4, 0x72, 0x1F, 0xD7, 0x77, 0xCF, 0x3E, 0x57, - 0xB3, 0x1F, 0xD8, 0x5D, 0x0C, 0xE2, 0xD1, 0xD6, 0xCF, 0x20, 0xB0, 0xE1, - 0x80, 0x38, 0xF6, 0xEF, 0x91, 0xD3, 0xD7, 0x2E, 0xDE, 0xA3, 0xEA, 0x77, - 0x44, 0xAF, 0xDC, 0x9A, 0x13, 0x19, 0x75, 0x28, 0x85, 0x61, 0xE5, 0x40, - 0x8C, 0xE3, 0xF9, 0x5A, 0xEC, 0x2A, 0x5C, 0x29, 0x12, 0x7B, 0x13, 0xBC, - 0x21, 0x4D, 0x79, 0xF8, 0xEF, 0xD4, 0xEB, 0xA2, 0x95, 0x43, 0xC5, 0xB5, - 0x9E, 0x5B, 0x11, 0xAB, 0xE1, 0x9E, 0xB3, 0x76, 0xFF, 0x05, 0xD5, 0x42, - 0x4F, 0x92, 0x47, 0x58, 0x7A, 0xE2, 0x4D, 0x58, 0x8F, 0x95, 0xC4, 0xDC, - 0xC3, 0xD4, 0x4A, 0x78, 0x8A, 0xB7, 0x9B, 0x5D, 0x2D, 0x51, 0xFA, 0x4B, - 0x10, 0x7B, 0x92, 0xF0, 0x66, 0xEC, 0x7C, 0x01, 0xCA, 0xEE, 0x5F, 0xB8, - 0x45, 0x78, 0x54, 0x87, 0xB8, 0xDF, 0xDE, 0x80, 0xE8, 0xAD, 0x3A, 0xB7, - 0xA6, 0xB2, 0x60, 0xC4, 0xA0, 0xE0, 0x42, 0x13, 0x38, 0xED, 0xFF, 0xB4, - 0x77, 0xA8, 0xF4, 0xE7, 0xF7, 0xE8, 0x71, 0xAE, 0x93, 0x3D, 0xA0, 0xCE, - 0xB5, 0x55, 0xC9, 0x5F, 0xE0, 0x65, 0x4F, 0x2C, 0xD6, 0x31, 0x7B, 0x61, - 0x8E, 0x45, 0x00, 0x02, 0x97, 0x4F, 0x0F, 0xB9, 0x05, 0x03, 0xC4, 0xC2, - 0xBE, 0x3C, 0x4C, 0x2C, 0xB5, 0x04, 0x22, 0x7F, 0x7E, 0x16, 0x3E, 0xC1, - 0xC7, 0xBD, 0x6A, 0xEB, 0x10, 0xA6, 0x15, 0x78, 0x6C, 0x66, 0x55, 0x7D, - 0xFA, 0xE0, 0x2B, 0xD0, 0x88, 0xAB, 0x80, 0x71, 0x6D, 0x2B, 0xD9, 0xC3, - 0x39, 0x7A, 0x6F, 0x39, 0xCC, 0xC0, 0x17, 0x73, 0xC8, 0x58, 0x21, 0x63, - 0xF5, 0x7F, 0x99, 0xF7, 0xC7, 0x46, 0xFC, 0x2B, 0xE3, 0x3B, 0x66, 0x73, - 0x0E, 0x90, 0x4A, 0xC3, 0x48, 0xCE, 0xDB, 0x39, 0x46, 0xF9, 0xE9, 0x7B, - 0x33, 0xCD, 0x9B, 0x8B, 0x3E, 0x21, 0x55, 0x35, 0xAE, 0x71, 0xFE, 0xA4, - 0x2E, 0xC9, 0xC8, 0xA0, 0x1E, 0x97, 0x10, 0x6A, 0x29, 0x95, 0xFC, 0xCD, - 0xE0, 0xEC, 0x37, 0x95, 0xFA, 0x61, 0xB5, 0x62, 0x5C, 0xC5, 0xEA, 0xDF, - 0x8D, 0xA7, 0xC2, 0xF7, 0x4A, 0xC9, 0x34, 0x15, 0xA4, 0x8C, 0x63, 0xA5, - 0x16, 0x25, 0x4F, 0xA9, 0x89, 0xD7, 0x2D, 0x77, 0x0D, 0x5E, 0xC1, 0x32, - 0x2A, 0x86, 0x55, 0x80, 0x97, 0xD1, 0x8C, 0x98, 0x04, 0x5A, 0x89, 0xC9, - 0xD1, 0x5F, 0x00, 0x5E, 0x29, 0x2C, 0xEB, 0x17, 0x96, 0x6A, 0xEB, 0x9A, - 0xEA, 0x5F, 0x2D, 0x99, 0x3D, 0x47, 0xCD, 0xFA, 0xA7, 0x8B, 0xFA, 0xB8, - 0x16, 0x1A, 0xE7, 0x07, 0x85, 0x47, 0xB6, 0x3F, 0xBD, 0x96, 0x4C, 0xD2, - 0xE8, 0xBE, 0x78, 0xE0, 0xFE, 0xF8, 0xD7, 0x9F, 0x05, 0xC2, 0xDF, 0x2F, - 0x1D, 0x8C, 0xDC, 0xDF, 0x4C, 0x36, 0x06, 0xF5, 0xD3, 0xAD, 0xFC, 0x82, - 0xB3, 0x7D, 0x47, 0xE3, 0xE6, 0x26, 0xD7, 0xA8, 0xC1, 0xA8, 0xD7, 0x73, - 0x55, 0x0D, 0x99, 0x81, 0xE8, 0x97, 0x84, 0x22, 0x5D, 0x93, 0x7B, 0x83, - 0xE3, 0x27, 0xEA, 0x60, 0x03, 0x2E, 0xC9, 0x71, 0xBB, 0x31, 0xF1, 0x4A, - 0x4D, 0xEA, 0x5B, 0xAD, 0x29, 0x37, 0xAA, 0x4F, 0x6D, 0xEC, 0xBB, 0x00, - 0x6A, 0xD9, 0x98, 0xDB, 0x08, 0x72, 0x8A, 0x94, 0xC8, 0x9C, 0x03, 0xC5, - 0x02, 0x54, 0x46, 0xB5, 0x1E, 0x25, 0xD1, 0x50, 0x3C, 0x3E, 0xE0, 0x55, - 0x89, 0x28, 0xC0, 0xE3, 0x08, 0x1A, 0x26, 0x9C, 0x4D, 0x74, 0x57, 0x09, - 0x34, 0xB3, 0x2D, 0x21, 0xA0, 0x4E, 0x9B, 0xB2, 0x93, 0xC0, 0x7A, 0x52, - 0xAC, 0x0D, 0x2B, 0xAA, 0x5F, 0xCF, 0x9E, 0x94, 0x88, 0x0D, 0xCB, 0x30, - 0x74, 0xC7, 0x6B, 0x78, 0x5E, 0xEE, 0x24, 0xC4, 0xA8, 0x0B, 0x84, 0x2D, - 0xD7, 0xEC, 0x31, 0xA8, 0xE3, 0x62, 0xC8, 0x43, 0x6A, 0x12, 0x0E, 0x46, - 0xEE, 0x86, 0x33, 0x4B, 0xF9, 0xA6, 0x52, 0x96, 0x6D, 0xA1, 0xD2, 0x1C, - 0x50, 0xEC, 0xEE, 0x53, 0xE8, 0x7E, 0xD4, 0xE1, 0x41, 0x76, 0x6E, 0xF7, - 0x66, 0x89, 0x46, 0xA6, 0xC9, 0x06, 0x32, 0xCC, 0x13, 0x23, 0x80, 0xE8, - 0x3E, 0x93, 0x52, 0x05, 0x78, 0x1A, 0x02, 0xAA, 0x5C, 0x11, 0xD7, 0xF0, - 0x39, 0x77, 0x06, 0x4F, 0xB3, 0x4B, 0x8E, 0x9D, 0x84, 0x00, 0x3A, 0xEE, - 0x03, 0xFD, 0x48, 0xBA, 0xA7, 0x23, 0x59, 0xBE, 0x43, 0x7B, 0x2F, 0xA0, - 0x23, 0x6F, 0x9A, 0xE9, 0xB0, 0xC2, 0x84, 0x1A, 0x9F, 0x5A, 0x39, 0x22, - 0xB6, 0x78, 0x21, 0x86, 0xDD, 0xEC, 0x37, 0x24, 0x1C, 0xB1, 0xD8, 0x7C, - 0x88, 0xAB, 0xC3, 0x9F, 0xA1, 0x3C, 0xBA, 0xF8, 0x1C, 0x43, 0x41, 0xB2, - 0x12, 0x3C, 0x16, 0x38, 0xD6, 0x58, 0xFF, 0xBF, 0x73, 0xEA, 0xFE, 0x63, - 0xE0, 0x36, 0xA4, 0xE7, 0x38, 0xA2, 0xA5, 0xB2, 0xEF, 0xE0, 0x7B, 0x32, - 0xCC, 0x34, 0x0A, 0x32, 0x23, 0x14, 0xCE, 0xE9, 0xDC, 0xC7, 0xF1, 0x85, - 0x79, 0x19, 0x4B, 0xC2, 0x39, 0xC8, 0x57, 0x2A, 0xDD, 0x19, 0x6D, 0x10, - 0xC9, 0x3E, 0x39, 0x13, 0x5A, 0xC3, 0x33, 0xC5, 0xB1, 0x6D, 0xD8, 0x8B, - 0x35, 0x14, 0x9C, 0x67, 0xE6, 0x58, 0xC9, 0x0C, 0xE6, 0xC7, 0x59, 0xCA, - 0xA7, 0xB6, 0x10, 0x8B, 0x44, 0x2D, 0x8D, 0x12, 0xC3, 0xC3, 0xEE, 0x58, - 0xB9, 0xFA, 0x60, 0xBD, 0xAB, 0x29, 0xD4, 0xB9, 0x86, 0xA1, 0x2D, 0x8F, - 0x62, 0xE4, 0x19, 0x9A, 0x71, 0xC2, 0xF4, 0xA5, 0x93, 0x04, 0xBB, 0x8D, - 0x64, 0xB5, 0x40, 0x8C, 0x8B, 0xA6, 0x52, 0xCE, 0xE3, 0x95, 0x53, 0xEA, - 0x14, 0x21, 0x7C, 0x64, 0xCE, 0xCA, 0x69, 0xE9, 0x3F, 0xD9, 0xB7, 0xD4, - 0xB3, 0xB3, 0xC2, 0x82, 0x64, 0xA2, 0x23, 0xC6, 0xE6, 0x8A, 0x5F, 0xFE, - 0xFA, 0x06, 0xE6, 0x5F, 0xA2, 0x82, 0x3B, 0x4E, 0x89, 0xAA, 0xCF, 0xCB, - 0x18, 0xA1, 0x69, 0x65, 0x93, 0xA8, 0x19, 0xC7, 0x78, 0x6F, 0x94, 0x9A, - 0x2F, 0x1F, 0x5B, 0x47, 0x30, 0x06, 0xBE, 0x59, 0x5D, 0x84, 0xDB, 0xDF, - 0xAC, 0xAF, 0x91, 0x8A, 0x39, 0x28, 0xB4, 0xA1, 0x68, 0x2D, 0x4F, 0x39, - 0x64, 0xC3, 0x92, 0xB7, 0x31, 0x38, 0xAE, 0x87, 0xD1, 0xCD, 0xB8, 0x11, - 0xD4, 0xF6, 0xEA, 0x06, 0xB6, 0xB2, 0x22, 0xE8, 0x46, 0x7C, 0xB3, 0xC4, - 0x93, 0xD1, 0x19, 0x2D, 0xEE, 0x9B, 0xAC, 0x1E, 0x9C, 0xEE, 0x6C, 0x85, - 0x6F, 0x35, 0xAC, 0x97, 0x3E, 0x97, 0xD0, 0x50, 0x38, 0x59, 0xF8, 0x5E, - 0xB0, 0x3D, 0xAA, 0x9E, 0x8F, 0x78, 0x51, 0x04, 0xE0, 0x01, 0x8C, 0xF3, - 0xE3, 0x9F, 0x59, 0x11, 0x7D, 0x5F, 0xC9, 0xDB, 0xA3, 0x99, 0xA6, 0xE2, - 0x65, 0x90, 0x75, 0xDD, 0xEC, 0x59, 0x60, 0x19, 0x70, 0x66, 0x12, 0x0B, - 0x27, 0x26, 0xC2, 0x3B, 0x5B, 0xDB, 0x6F, 0x11, 0x39, 0x08, 0xDC, 0xF4, - 0x14, 0x51, 0x06, 0xFE, 0x9B, 0xDB, 0x22, 0x25, 0x1E, 0x25, 0x43, 0x8D, - 0xD5, 0xD0, 0xFB, 0x68, 0xF3, 0x65, 0xEA, 0x97, 0x20, 0xDD, 0x60, 0x7B, - 0xB4, 0xE0, 0x90, 0x24, 0x62, 0xF6, 0x84, 0xF0, 0x47, 0xD6, 0xB9, 0xE3, - 0xB8, 0x16, 0x6A, 0xDB, 0xA7, 0xF7, 0xFD, 0xFC, 0x74, 0x1F, 0x8C, 0xFD, - 0x88, 0x4A, 0xE9, 0xEE, 0xFE, 0xCC, 0xE5, 0xA0, 0x2C, 0x1D, 0xAE, 0xD0, - 0xF3, 0x56, 0xBE, 0xD8, 0x45, 0xC4, 0x44, 0xEA, 0xD7, 0x71, 0x34, 0x7C, - 0x2A, 0x0A, 0x3F, 0xD1, 0xA8, 0xCA, 0xF1, 0x7E, 0x9C, 0x39, 0x6B, 0x51, - 0xBD, 0xDB, 0x56, 0x87, 0xAC, 0xDF, 0x31, 0xF9, 0xC0, 0x73, 0xDB, 0xBC, - 0x0D, 0x1D, 0xD7, 0x8B, 0xBB, 0x50, 0x3B, 0xE7, 0xB5, 0xE9, 0x6A, 0x3B, - 0x83, 0xF8, 0x27, 0xE8, 0x7C, 0xD1, 0x8D, 0x14, 0xDD, 0x5A, 0xDF, 0xD1, - 0xBE, 0xBA, 0xFD, 0x3E, 0xF8, 0xA4, 0x8A, 0xED, 0xAD, 0x82, 0xFD, 0x28, - 0x3F, 0x46, 0x1C, 0x56, 0x71, 0x71, 0x71, 0xFB, 0x1F, 0xEB, 0xE6, 0x72, - 0x10, 0x40, 0xDB, 0xA3, 0x40, 0xEA, 0x06, 0x63, 0x74, 0xE7, 0xC3, 0xA9, - 0xE4, 0x07, 0xFD, 0xA8, 0x5C, 0x83, 0x16, 0x69, 0xB4, 0x6A, 0xAE, 0x85, - 0xFC, 0x32, 0xDF, 0x59, 0x71, 0xBB, 0x7A, 0xC1, 0xC2, 0x0E, 0xC0, 0x5A, - 0xA1, 0x1F, 0x88, 0x6E, 0xF4, 0x79, 0xF2, 0x4F, 0xA5, 0x84, 0x8B, 0xA7, - 0x39, 0xCC, 0x6D, 0x44, 0x33, 0xD8, 0x1A, 0x9B, 0xAD, 0x8F, 0x12, 0x49, - 0x63, 0x93, 0xBB, 0x70, 0xA7, 0x9D, 0x4A, 0x69, 0xDC, 0x18, 0x09, 0xB8, - 0xED, 0xB1, 0x50, 0x13, 0x59, 0xEA, 0xDC, 0x7B, 0xBF, 0x7F, 0x83, 0x4F, - 0xC7, 0xFA, 0x3B, 0x44, 0xEF, 0xF9, 0x4C, 0xE9, 0x72, 0x70, 0xD7, 0x27, - 0xEC, 0x80, 0x18, 0x2A, 0x45, 0x71, 0x87, 0x99, 0x9F, 0xE0, 0x74, 0x3E, - 0xE0, 0xE1, 0xCD, 0xF6, 0x76, 0xD9, 0x82, 0x6D, 0xF5, 0x01, 0x9C, 0x33, - 0x19, 0xB7, 0x0A, 0x1E, 0x07, 0xC7, 0x11, 0x4B, 0xC2, 0x64, 0x16, 0x14, - 0x9F, 0xE6, 0xD2, 0x65, 0x64, 0x9E, 0xCA, 0x29, 0xB9, 0xC1, 0xA1, 0x64, - 0x4A, 0x39, 0x36, 0xD7, 0xED, 0xC4, 0xCA, 0x4D, 0x93, 0xB7, 0xE7, 0x52, - 0x6E, 0xC4, 0x2A, 0x89, 0x16, 0x14, 0xC2, 0x26, 0xF9, 0xD6, 0x69, 0xA6, - 0x8B, 0x52, 0x04, 0xA3, 0xF9, 0xB5, 0x34, 0x97, 0x98, 0x0F, 0x77, 0x01, - 0x02, 0xD7, 0x3D, 0x75, 0x08, 0xE7, 0x90, 0x1B, 0x0A, 0xA4, 0x1D, 0x27, - 0xBB, 0xC3, 0xF5, 0x9A, 0x3A, 0x75, 0xC2, 0x85, 0x12, 0x98, 0x59, 0x90, - 0x92, 0x99, 0x15, 0x73, 0xA2, 0x1D, 0x8A, 0xC0, 0x68, 0x39, 0x69, 0x93, - 0x2C, 0xCF, 0xE1, 0x43, 0x99, 0xD6, 0x68, 0xEB, 0xBD, 0xB1, 0xF2, 0xA4, - 0xB4, 0x84, 0x78, 0x62, 0xCA, 0xF7, 0xE3, 0xC8, 0x5B, 0x12, 0x92, 0xA4, - 0x93, 0xAA, 0x04, 0x07, 0x45, 0x26, 0x09, 0x77, 0x6E, 0x30, 0x47, 0x26, - 0x9D, 0x24, 0x8B, 0xED, 0xDC, 0xFB, 0xFF, 0x23, 0x3A, 0xFD, 0x6B, 0xCB, - 0xA0, 0x88, 0x08, 0x76, 0x66, 0x0A, 0xF9, 0x7B, 0x4F, 0xE2, 0x23, 0x5C, - 0x4E, 0xE9, 0x16, 0x29, 0xA0, 0x9E, 0xE2, 0x7B, 0xB7, 0xD6, 0xDB, 0xD9, - 0xC5, 0xCF, 0x68, 0x4A, 0x9F, 0x08, 0x22, 0xA0, 0xEC, 0xF2, 0x3F, 0x95, - 0xAE, 0x25, 0x95, 0xED, 0x10, 0x6F, 0x35, 0x1A, 0xCA, 0x58, 0xB2, 0xC6, - 0x72, 0xA1, 0x03, 0x7E, 0x58, 0x70, 0x59, 0x24, 0x6A, 0x39, 0x00, 0x8B, - 0x4A, 0x27, 0xBC, 0xB9, 0x00, 0x92, 0x6A, 0xA5, 0xC8, 0x1D, 0xBA, 0xFB, - 0x24, 0x7F, 0x91, 0x3D, 0xF3, 0x4D, 0x7D, 0xB5, 0xF8, 0xB8, 0x76, 0x27, - 0x0A, 0x50, 0x10, 0x98, 0xD3, 0xFE, 0xD8, 0xCD, 0x55, 0xDD, 0xC3, 0x70, - 0x38, 0x23, 0x75, 0x44, 0xA1, 0x16, 0x01, 0xC4, 0xFB, 0x7A, 0x31, 0xBD, - 0xC1, 0x1B, 0x51, 0x7F, 0xAB, 0xC0, 0xAE, 0x0C, 0x43, 0xA5, 0x07, 0x35, - 0x88, 0xAF, 0x8D, 0x5F, 0xF6, 0xE0, 0xFA, 0x6C, 0x83, 0x05, 0xEC, 0xFC, - 0x85, 0xDD, 0x66, 0x11, 0x64, 0x77, 0xE7, 0xCA, 0xF4, 0xE5, 0xC8, 0x11, - 0xC2, 0xAE, 0x06, 0x94, 0x40, 0xF7, 0xA4, 0x00, 0x6F, 0xDD, 0x99, 0xBD, - 0x3A, 0xA3, 0x69, 0x5B, 0xFF, 0x09, 0xC8, 0xC7, 0xF5, 0xFD, 0xA7, 0xE3, - 0x6D, 0x0D, 0x81, 0xC4, 0x70, 0xA1, 0x86, 0x35, 0xEF, 0x76, 0x58, 0x4F, - 0xD8, 0x91, 0xD2, 0x34, 0xF6, 0x48, 0x86, 0x20, 0x95, 0xA2, 0x39, 0xDD, - 0x4A, 0x63, 0xC4, 0xFD, 0xAC, 0x12, 0x61, 0xCC, 0xF9, 0x08, 0x15, 0x17, - 0x4D, 0x94, 0x9B, 0x03, 0xFF, 0x27, 0x06, 0xDC, 0x2A, 0x6B, 0xC6, 0x45, - 0x8C, 0xBE, 0x6B, 0x2E, 0x21, 0x9A, 0xDE, 0xBE, 0x17, 0x3A, 0x91, 0xA8, - 0xA4, 0x09, 0x94, 0x70, 0x22, 0x62, 0x06, 0xDD, 0x65, 0x5E, 0x81, 0x8C, - 0xB0, 0x2D, 0xA7, 0xA6, 0x6B, 0xD9, 0x9C, 0x75, 0xA1, 0x4C, 0x55, 0x96, - 0x67, 0x6C, 0xF7, 0xFB, 0x34, 0xA6, 0x4C, 0x53, 0x10, 0x5A, 0xDB, 0x54, - 0x7E, 0xAC, 0x67, 0xEA, 0x12, 0xF0, 0x29, 0x2A, 0x49, 0x89, 0xFF, 0xC5, - 0xF3, 0xD4, 0x1D, 0xBA, 0xFB, 0xEF, 0xCE, 0xA3, 0x58, 0x33, 0x7C, 0xFA, - 0xC0, 0x30, 0x45, 0x70, 0x15, 0xB0, 0xDE, 0x85, 0xD7, 0x66, 0xCA, 0x00, - 0x87, 0x93, 0x85, 0x6B, 0xD0, 0x2E, 0x94, 0x80, 0x30, 0x24, 0x69, 0xC5, - 0xD9, 0xD8, 0x00, 0xA7, 0xBF, 0x4E, 0xF7, 0x5C, 0xDE, 0x10, 0xBE, 0x0A, - 0xAE, 0xDA, 0x8D, 0xFD, 0xCB, 0xD0, 0xAF, 0x6F, 0xBB, 0xD2, 0xEB, 0xEB, - 0x05, 0xA4, 0xF7, 0x3B, 0x0B, 0xC1, 0x0E, 0x50, 0xE4, 0x80, 0x65, 0xF6, - 0xEE, 0x78, 0xDB, 0xFA, 0xCD, 0x96, 0xDA, 0xB7, 0x47, 0xDD, 0x95, 0x0D, - 0xEC, 0x65, 0x4F, 0x2A, 0x51, 0x8A, 0xC6, 0xA9, 0x25, 0xCE, 0x3D, 0x2D, - 0xC2, 0x06, 0xB9, 0x26, 0xE1, 0x68, 0xA4, 0x68, 0x23, 0xB9, 0x0B, 0x12, - 0x7D, 0x79, 0xD3, 0x48, 0x0E, 0xA6, 0x2A, 0x2B, 0xA3, 0x23, 0x64, 0x10, - 0xBA, 0xA3, 0x92, 0x83, 0xF0, 0x91, 0xB9, 0xF7, 0x12, 0x4A, 0x08, 0xFA, - 0xE3, 0x10, 0xAE, 0x69, 0xDD, 0x93, 0x1C, 0xC6, 0xCC, 0x32, 0x78, 0x85, - 0x15, 0x84, 0xBE, 0x0E, 0x9B, 0x21, 0xB0, 0xE7, 0x0B, 0xC0, 0x25, 0xCA, - 0xE3, 0xA3, 0xC0, 0x6A, 0x96, 0xC4, 0x98, 0x51, 0x9B, 0xF6, 0x5B, 0x09, - 0xAD, 0x67, 0x03, 0xA1, 0x4A, 0x51, 0x1B, 0xC0, 0x4B, 0x0B, 0x1C, 0x23, - 0x0A, 0x2B, 0xBA, 0x9F, 0xAE, 0x74, 0xED, 0xFA, 0xA1, 0xC4, 0x30, 0xAB, - 0x00, 0xED, 0x7A, 0x17, 0xCC, 0x15, 0xC5, 0xBF, 0xCC, 0x49, 0x41, 0x97, - 0x3D, 0xBE, 0x2A, 0xE7, 0xED, 0x33, 0x02, 0x5B, 0x42, 0xF3, 0x18, 0x10, - 0xD3, 0xD5, 0x27, 0x08, 0x4A, 0xFD, 0xFB, 0xA5, 0x19, 0x43, 0xE6, 0x38, - 0x26, 0xAA, 0xC3, 0xE6, 0x7B, 0xF1, 0xD5, 0x02, 0x96, 0x27, 0x86, 0xAC, - 0x38, 0x86, 0x4E, 0xD0, 0x8B, 0xD7, 0x2B, 0xCC, 0x97, 0x96, 0x24, 0x6D, - 0x66, 0x7D, 0x2B, 0xC8, 0xF7, 0x49, 0xEA, 0x26, 0x74, 0xED, 0x29, 0x50, - 0x03, 0x72, 0x2E, 0x3D, 0x52, 0x3D, 0x1C, 0x63, 0x38, 0x67, 0x47, 0x3B, - 0x07, 0xF8, 0x5C, 0x54, 0x98, 0x0A, 0xEA, 0xB9, 0x0E, 0xB7, 0x7E, 0x78, - 0xF6, 0xD5, 0x8E, 0xC1, 0x1C, 0x36, 0x2A, 0x17, 0x17, 0x0A, 0x3E, 0x90, - 0xA4, 0x77, 0x27, 0x47, 0xBA, 0xC9, 0x03, 0x6A, 0x3C, 0x88, 0x17, 0xF5, - 0xEC, 0x7A, 0x94, 0x3D, 0xD3, 0x06, 0x00, 0xEE, 0xB2, 0x31, 0x36, 0xB5, - 0xCA, 0x53, 0x52, 0xC9, 0x4C, 0xA6, 0x54, 0x12, 0xC6, 0x58, 0xB7, 0x2F, - 0xD1, 0xD1, 0xF5, 0x8A, 0x96, 0x3E, 0x44, 0x61, 0x4B, 0xA0, 0x9D, 0xF1, - 0x54, 0x4A, 0xE7, 0x27, 0x8B, 0x02, 0x8B, 0x8E, 0xC3, 0xF2, 0xAF, 0x01, - 0xDE, 0x38, 0xE9, 0x7A, 0x15, 0xAE, 0x0D, 0xA2, 0xF2, 0x43, 0x2C, 0x2D, - 0x2E, 0xCD, 0xD9, 0x61, 0x72, 0xD2, 0x34, 0x7E, 0x07, 0x2C, 0x2A, 0x00, - 0x2D, 0x56, 0x6A, 0x9C, 0xFF, 0x13, 0xBE, 0xF2, 0x60, 0xCD, 0xBA, 0xFA, - 0xB5, 0xBA, 0x95, 0x7F, 0x3B, 0xE1, 0x6F, 0x86, 0x83, 0xAF, 0x52, 0xD3, - 0x86, 0xBE, 0xDF, 0x71, 0xFD, 0x39, 0x1B, 0x49, 0x23, 0xE8, 0x82, 0x3D, - 0x98, 0xE7, 0x6A, 0x7E, 0xE4, 0x76, 0xB0, 0x2C, 0xBD, 0xAE, 0x26, 0xC5, - 0xB5, 0x6F, 0x9A, 0xA2, 0x7E, 0x95, 0x84, 0x2A, 0x74, 0x4A, 0xEC, 0x70, - 0x4D, 0xC1, 0xA9, 0xEB, 0x30, 0xD9, 0xAE, 0x8D, 0x7A, 0xA3, 0xF7, 0x5F, - 0x3F, 0xDE, 0xC2, 0xCD, 0x8B, 0xB0, 0xD6, 0xD0, 0xC5, 0x71, 0x7C, 0xC7, - 0xF9, 0x97, 0x98, 0x51, 0x52, 0x7E, 0x0D, 0x50, 0xB4, 0xC9, 0x29, 0x79, - 0x65, 0xC8, 0x43, 0x7B, 0x46, 0x9B, 0x57, 0xF8, 0x74, 0xF7, 0x8B, 0x58, - 0xE8, 0xB3, 0x22, 0x43, 0xEB, 0x06, 0xCD, 0xED, 0x0C, 0xC9, 0x86, 0x2B, - 0x5E, 0xF9, 0xBA, 0xF5, 0xA3, 0x01, 0x46, 0xE5, 0xE7, 0x99, 0x17, 0x83, - 0xA2, 0x4F, 0x2C, 0xEA, 0x9B, 0x12, 0xDB, 0xC9, 0x0B, 0x51, 0x79, 0x65, - 0x6F, 0x3A, 0xC6, 0x1D, 0x35, 0x3B, 0xCB, 0xC2, 0xA1, 0x27, 0xA0, 0xE0, - 0xC8, 0xCB, 0xBF, 0xA0, 0x7E, 0x9D, 0x7B, 0x8A, 0x6F, 0x38, 0x1D, 0x6A, - 0xDA, 0x14, 0xF6, 0x00, 0xA4, 0xEA, 0x18, 0x71, 0x48, 0x3D, 0x05, 0x03, - 0x42, 0x42, 0xE7, 0x50, 0x3C, 0x3F, 0x21, 0x2F, 0x7C, 0x18, 0x65, 0x3F, - 0xDE, 0xDC, 0x65, 0x9D, 0xB2, 0x8E, 0x92, 0xA1, 0xC7, 0x0B, 0xAD, 0x3C, - 0x22, 0x3C, 0x07, 0x62, 0x1D, 0x3C, 0x8F, 0x57, 0xF0, 0x50, 0x21, 0x5C, - 0xC2, 0x6A, 0xA9, 0x72, 0x3B, 0x9F, 0xB0, 0x51, 0xEF, 0x1F, 0x5C, 0x83, - 0x27, 0x1F, 0xAA, 0x81, 0x50, 0xDC, 0xB2, 0x80, 0x94, 0xE2, 0x69, 0x66, - 0x4B, 0x7E, 0xBD, 0xCA, 0x8B, 0x5F, 0xD0, 0xE8, 0x69, 0x63, 0x6D, 0xE4, - 0xDA, 0xF7, 0x83, 0x45, 0xCB, 0xFC, 0x33, 0xDB, 0x43, 0x99, 0x7E, 0x41, - 0x86, 0x3F, 0x95, 0xDC, 0xB2, 0x58, 0x8F, 0x8E, 0x7F, 0xAA, 0xC8, 0x37, - 0x80, 0x08, 0x1C, 0xAE, 0x22, 0x03, 0xF1, 0x98, 0x73, 0x47, 0x75, 0x38, - 0x5B, 0x1F, 0x99, 0x70, 0xE4, 0x48, 0x15, 0x48, 0xCE, 0x24, 0x15, 0xE4, - 0x0B, 0xCA, 0x01, 0x8E, 0x8B, 0xE7, 0x9B, 0x4E, 0x5B, 0x56, 0x11, 0x14, - 0x31, 0x78, 0x8F, 0xA9, 0x9A, 0xDA, 0x41, 0x52, 0x21, 0xBB, 0x34, 0x10, - 0x74, 0x55, 0x87, 0x4B, 0x7A, 0x65, 0xBA, 0x53, 0xFB, 0x06, 0xB3, 0x82, - 0x3F, 0xEC, 0x43, 0x84, 0xF4, 0xC9, 0xAF, 0x11, 0x7F, 0x25, 0x7A, 0x7A, - 0x2F, 0x33, 0x93, 0x10, 0x9B, 0x7D, 0xA0, 0xAB, 0x35, 0x54, 0x61, 0x85, - 0x3A, 0x08, 0x6B, 0x38, 0x45, 0x35, 0xCB, 0xAC, 0x71, 0x07, 0x43, 0x5C, - 0x38, 0x79, 0x28, 0xFB, 0x9E, 0x30, 0xDC, 0x69, 0xBE, 0x28, 0x25, 0x52, - 0x1A, 0xCF, 0x0C, 0x67, 0x9E, 0x20, 0xF9, 0x18, 0xE2, 0x48, 0x4B, 0xD3, - 0x2D, 0x78, 0xF5, 0xFC, 0xB0, 0xCF, 0x03, 0xC8, 0x9B, 0x4D, 0x82, 0xF5, - 0xEE, 0x4A, 0x87, 0x45, 0xEC, 0x49, 0x32, 0x59, 0x15, 0x32, 0xEC, 0x63, - 0x0B, 0x44, 0x9F, 0x03, 0xAD, 0x0C, 0x4B, 0xC4, 0xCE, 0x74, 0xF0, 0xBA, - 0x8D, 0xE6, 0x4A, 0xBC, 0x69, 0xB7, 0xF5, 0xAE, 0xCB, 0x54, 0x43, 0xE8, - 0x5A, 0x61, 0xF9, 0x4D, 0x04, 0xAA, 0xCE, 0x99, 0xF4, 0x67, 0x60, 0x63, - 0x70, 0x3A, 0x98, 0x3C, 0x42, 0x48, 0x38, 0x9B, 0x90, 0xB4, 0x2F, 0xD7, - 0xE1, 0xCF, 0x15, 0x63, 0x1F, 0x9C, 0xDC, 0x3C, 0x1A, 0xE7, 0x43, 0x2A, - 0x54, 0xE7, 0x95, 0x16, 0x12, 0xE9, 0x93, 0xAE, 0x89, 0x21, 0x0B, 0xAD, - 0xFB, 0x05, 0x50, 0x5A, 0x70, 0x02, 0xD0, 0xCC, 0xDA, 0x66, 0x25, 0x68, - 0x11, 0x1F, 0x42, 0x07, 0x10, 0x56, 0x47, 0xCC, 0xA2, 0x3A, 0xAA, 0x44, - 0x5B, 0x10, 0xA0, 0x0F, 0x25, 0x44, 0x70, 0x3E, 0x72, 0x3A, 0x58, 0x7C, - 0x82, 0x03, 0x3B, 0x8B, 0xFF, 0x5E, 0x6C, 0x06, 0x5A, 0xFC, 0x23, 0x1B, - 0x78, 0xD1, 0xCE, 0xC6, 0xC0, 0x3A, 0xAA, 0x07, 0x0F, 0xC0, 0xAC, 0xB7, - 0x88, 0x31, 0x31, 0x9A, 0x67, 0x3C, 0xDA, 0x7F, 0xE6, 0x48, 0xAB, 0xE8, - 0x30, 0xC0, 0xB4, 0xBF, 0x0B, 0x14, 0x97, 0x81, 0x8F, 0x5E, 0x65, 0x5D, - 0xC9, 0x80, 0xDC, 0x85, 0x76, 0x84, 0x90, 0x7B, 0xC0, 0x2E, 0x59, 0x03, - 0xB2, 0x19, 0x2C, 0x5B, 0x98, 0xA7, 0xA9, 0xDC, 0xE9, 0x4A, 0x02, 0xE3, - 0x80, 0x0D, 0x08, 0x57, 0x03, 0x1D, 0xBB, 0xB0, 0x88, 0x32, 0xCA, 0xF0, - 0x4C, 0xD3, 0xF9, 0xBD, 0x25, 0x56, 0x86, 0xBC, 0x99, 0x92, 0xFC, 0xAE, - 0x66, 0xF2, 0x9B, 0x43, 0xF9, 0xCF, 0xEE, 0xD4, 0xEF, 0xF9, 0xFE, 0xB6, - 0x26, 0x5D, 0x47, 0x07, 0x94, 0x1F, 0xE9, 0xD9, 0xA0, 0x78, 0xF9, 0x57, - 0x26, 0x6E, 0xF9, 0xEB, 0x02, 0x01, 0x9E, 0xB0, 0x75, 0x43, 0x0C, 0x6D, - 0x82, 0x54, 0xFC, 0xE2, 0xFA, 0x1B, 0x3C, 0x31, 0x64, 0xD5, 0x66, 0x22, - 0x45, 0x1F, 0x35, 0x74, 0x8A, 0x70, 0x9A, 0xD8, 0xEC, 0xE8, 0x44, 0x0C, - 0x9D, 0x10, 0xFD, 0x5A, 0xB3, 0x53, 0x21, 0x6A, 0x64, 0xD5, 0x15, 0x6A, - 0x96, 0x48, 0x1A, 0xA3, 0x4E, 0x97, 0xB8, 0xCF, 0xB2, 0xA3, 0x14, 0x23, - 0x83, 0xC1, 0x1A, 0x07, 0x6B, 0x89, 0x64, 0x16, 0x02, 0x9B, 0x04, 0x17, - 0xA4, 0xE3, 0xF3, 0xDB, 0x1C, 0x8F, 0x9E, 0x0D, 0x0A, 0x6D, 0xB4, 0xA2, - 0xA7, 0x76, 0x49, 0xBB, 0xBA, 0x79, 0x2D, 0x6F, 0xCE, 0xD9, 0x5C, 0x24, - 0xC7, 0xDD, 0xF1, 0x22, 0xCC, 0x7D, 0xDF, 0xED, 0x97, 0x93, 0x60, 0xDD, - 0x0B, 0x99, 0xBD, 0x58, 0x0B, 0x06, 0x77, 0x91, 0x82, 0x1F, 0xE2, 0xFE, - 0xCF, 0x14, 0xF8, 0x51, 0x12, 0x2B, 0xBE, 0xFF, 0x68, 0xE7, 0xD9, 0xA5, - 0xA4, 0x2E, 0xD5, 0xAA, 0xE2, 0xFA, 0x80, 0x58, 0xAC, 0xD1, 0x6C, 0xDD, - 0xB6, 0x40, 0xB6, 0xCE, 0x39, 0x6B, 0x95, 0x5C, 0xFF, 0x46, 0x7D, 0x2F, - 0x03, 0xCA, 0xE1, 0x92, 0x5E, 0x2D, 0xD5, 0x58, 0x56, 0x82, 0xE1, 0x7D, - 0x13, 0x21, 0xB0, 0x76, 0x1A, 0x92, 0xDE, 0x77, 0xB4, 0x05, 0xD0, 0xBC, - 0xC9, 0xE3, 0xCE, 0xD2, 0xB9, 0x2B, 0x70, 0xBD, 0xF4, 0x79, 0x3C, 0xFA, - 0xF3, 0x91, 0x51, 0xAA, 0xF4, 0xF0, 0x14, 0x0C, 0x4E, 0xD1, 0x66, 0x60, - 0x90, 0x16, 0x5B, 0xEF, 0x34, 0xE8, 0xB1, 0x5A, 0x2B, 0x8E, 0x2C, 0x11, - 0x39, 0x2D, 0x37, 0x43, 0x4F, 0xA3, 0x9C, 0x0B, 0x19, 0x19, 0x3D, 0x30, - 0xCA, 0x51, 0x07, 0x67, 0x5A, 0xD2, 0xE0, 0x1D, 0x6C, 0xDD, 0xB2, 0xF8, - 0x9E, 0x32, 0x07, 0x7A, 0x33, 0x26, 0x2F, 0x3A, 0x71, 0x25, 0xB0, 0x26, - 0xDF, 0xAB, 0xEE, 0xCC, 0xAD, 0xA9, 0x46, 0x40, 0x65, 0xD6, 0x51, 0xD2, - 0x12, 0x5D, 0x27, 0x4F, 0xBB, 0x95, 0x51, 0x87, 0x55, 0xB2, 0xF7, 0xEB, - 0x89, 0x65, 0xDF, 0xCA, 0xDF, 0xA2, 0x55, 0xAD, 0xA0, 0x19, 0x6A, 0xE5, - 0x88, 0x0A, 0xCE, 0x24, 0xA2, 0xA7, 0xEB, 0x0C, 0x29, 0xDC, 0x24, 0x09, - 0x93, 0x99, 0x50, 0x2C, 0xB7, 0x0F, 0x21, 0xB7, 0x71, 0xF6, 0x8B, 0x3F, - 0x69, 0x0C, 0x32, 0xA1, 0x18, 0x3A, 0x81, 0xEE, 0x42, 0x67, 0x82, 0x5E, - 0xE1, 0x7B, 0x1C, 0x6F, 0x57, 0xA9, 0x60, 0x38, 0x53, 0x42, 0x04, 0x65, - 0x21, 0x31, 0x8B, 0xB8, 0xEA, 0x9F, 0x0D, 0xA6, 0xAE, 0xD8, 0x4D, 0x9B, - 0xCB, 0x36, 0x53, 0xC4, 0x60, 0x2F, 0x84, 0x0E, 0x64, 0xBF, 0xCE, 0x08, - 0x89, 0xD0, 0x2B, 0xB9, 0xE3, 0x87, 0xEC, 0x10, 0xA8, 0x61, 0x70, 0xF7, - 0xE5, 0x23, 0xAA, 0x2E, 0x7A, 0x70, 0x64, 0x5D, 0x04, 0xD6, 0xC6, 0xA2, - 0xA9, 0x3B, 0x79, 0xD6, 0x9A, 0x9A, 0x15, 0x39, 0xDF, 0xF4, 0x4A, 0x2A, - 0xE0, 0x2C, 0x67, 0xC7, 0x01, 0xF3, 0x02, 0x6B, 0xE4, 0xF4, 0xE0, 0x77, - 0x17, 0xA2, 0xEC, 0x93, 0xD3, 0x61, 0x49, 0xB4, 0xAC, 0x52, 0x3A, 0x84, - 0xFA, 0x3E, 0x2C, 0xD8, 0xAB, 0xD9, 0xE6, 0xDD, 0x59, 0x1C, 0x1E, 0x41, - 0x97, 0xEF, 0x29, 0x13, 0xF2, 0x2D, 0x1D, 0x21, 0x5F, 0x6F, 0x16, 0xF2, - 0x7C, 0x72, 0x69, 0xB6, 0x93, 0xC9, 0xE5, 0x7A, 0x1B, 0x4E, 0x10, 0x78, - 0x6C, 0x79, 0x4B, 0x23, 0x73, 0x02, 0x9B, 0xF2, 0xE0, 0xC3, 0xDB, 0x58, - 0xF3, 0x23, 0x37, 0xC9, 0x06, 0x20, 0xF1, 0x08, 0x34, 0x47, 0x91, 0xB0, - 0x8E, 0xF3, 0xFF, 0xFE, 0x83, 0x4A, 0x97, 0xA4, 0x55, 0x22, 0x55, 0xF3, - 0x9F, 0x41, 0x7F, 0xE1, 0xF5, 0xE3, 0x42, 0xAE, 0x54, 0xF0, 0x83, 0x68, - 0x08, 0x09, 0x2C, 0x95, 0x6C, 0x23, 0x11, 0x7E, 0x9F, 0x7D, 0x53, 0x78, - 0xA1, 0x6B, 0x02, 0x14, 0x8C, 0xDD, 0xF2, 0x34, 0x35, 0x7D, 0xF7, 0xCB, - 0xEF, 0x68, 0x04, 0x07, 0x2C, 0xC2, 0x36, 0x1E, 0x15, 0x17, 0x15, 0x6B, - 0x74, 0x56, 0xC4, 0x12, 0xB7, 0xBF, 0xC8, 0xDB, 0x66, 0xF2, 0x88, 0xFA, - 0xEB, 0xD3, 0xA3, 0x99, 0xBE, 0xD3, 0x21, 0x35, 0x05, 0xED, 0x73, 0x9A, - 0xA0, 0x14, 0x3C, 0x24, 0x0A, 0xDF, 0x97, 0x0F, 0x1B, 0xA2, 0x9A, 0xB0, - 0x0F, 0x01, 0xAD, 0x1D, 0x87, 0xED, 0x21, 0x8F, 0x2F, 0xA8, 0x4D, 0xFD, - 0x02, 0x5E, 0x4B, 0xEA, 0xAD, 0x44, 0x2D, 0x58, 0xB4, 0xC8, 0x8F, 0x40, - 0x38, 0x9D, 0x93, 0x3D, 0x32, 0x28, 0x6C, 0x50, 0xE2, 0x10, 0xC1, 0x7C, - 0xDD, 0x10, 0x08, 0x22, 0xB1, 0x1C, 0xB2, 0x2C, 0xA2, 0x33, 0xB5, 0x91, - 0x55, 0x3C, 0xDA, 0xAA, 0xF2, 0xDA, 0xBF, 0x97, 0xA8, 0xB0, 0x81, 0x21, - 0xD8, 0x5E, 0xBE, 0xCE, 0x21, 0x55, 0xD7, 0xBE, 0xC0, 0xAF, 0xDE, 0xF3, - 0xB7, 0x5E, 0xDB, 0x98, 0x40, 0x71, 0x8D, 0xB0, 0xDD, 0xAB, 0x7D, 0xEB, - 0x68, 0x9C, 0xAD, 0x24, 0xA6, 0xE1, 0xB0, 0x90, 0x79, 0xAC, 0xEB, 0xD4, - 0x9D, 0x69, 0x09, 0xE8, 0xE1, 0x7E, 0xFD, 0xE5, 0xAD, 0x59, 0xD2, 0x3A, - 0xBD, 0x83, 0x96, 0xC8, 0x04, 0xF4, 0x8E, 0x55, 0x56, 0xBC, 0x95, 0xC9, - 0x0D, 0x9E, 0xC6, 0x6F, 0xA3, 0x4F, 0x68, 0xD2, 0x78, 0x16, 0x57, 0x5D, - 0x09, 0xE0, 0x61, 0xC5, 0xAD, 0x3F, 0xD1, 0xE0, 0xFA, 0xE8, 0x1D, 0x77, - 0x70, 0x42, 0xF7, 0x53, 0x47, 0xAA, 0xBB, 0x7D, 0xF3, 0xBA, 0xC9, 0x26, - 0xB2, 0xC9, 0xC3, 0x0A, 0x17, 0x4C, 0x2A, 0x1B, 0xB6, 0x12, 0x32, 0x54, - 0x9A, 0xB1, 0xEA, 0xC7, 0xB5, 0x28, 0x5F, 0x59, 0xD9, 0x19, 0x4E, 0xFF, - 0x0D, 0xB1, 0x67, 0x40, 0xD3, 0x76, 0xA7, 0x0A, 0x94, 0xD9, 0x75, 0x71, - 0xCE, 0x6E, 0xE5, 0xFB, 0xD8, 0x9F, 0xB6, 0x5F, 0x91, 0x74, 0x68, 0x9F, - 0x7C, 0xA3, 0x99, 0x3A, 0xD9, 0x0C, 0x83, 0x64, 0xFB, 0x7E, 0xB2, 0x9B, - 0x1A, 0x5F, 0xDA, 0x85, 0xB5, 0xB9, 0x4C, 0xB1, 0x72, 0xA2, 0x1B, 0x92, - 0x20, 0x7A, 0x77, 0xD3, 0x41, 0x8E, 0x1B, 0xF1, 0xC3, 0x5A, 0x6B, 0xF0, - 0x66, 0x16, 0x94, 0x1F, 0x57, 0x5A, 0xC1, 0x16, 0xB3, 0xF9, 0xE9, 0xFA, - 0x0C, 0x28, 0xC5, 0x32, 0x6F, 0x04, 0xF1, 0xAF, 0x66, 0x9F, 0xF8, 0x72, - 0xD6, 0x91, 0x5F, 0x4C, 0xE9, 0x9A, 0xA8, 0x38, 0x47, 0x6C, 0x8C, 0x00, - 0xB4, 0x47, 0x20, 0x41, 0x68, 0x12, 0x54, 0x51, 0x1A, 0x56, 0x66, 0x56, - 0x4B, 0xC3, 0x59, 0xC7, 0x9C, 0x49, 0x74, 0x06, 0xAB, 0x45, 0x1D, 0x7B, - 0x01, 0xA0, 0xF5, 0x34, 0x9E, 0xE3, 0xAD, 0x5B, 0x3A, 0x12, 0x33, 0x3E, - 0x03, 0xB7, 0xA6, 0x92, 0x62, 0x11, 0x75, 0x5D, 0xE4, 0xB9, 0x78, 0x43, - 0xCC, 0x4D, 0xF7, 0x03, 0x0C, 0x5A, 0xED, 0x74, 0x55, 0x96, 0x91, 0x29, - 0xFA, 0xBA, 0xC6, 0x38, 0xCB, 0x22, 0xF2, 0x90, 0x6B, 0x7B, 0x3D, 0xFF, - 0xEF, 0x94, 0x29, 0x59, 0x33, 0x8B, 0x60, 0x66, 0xE7, 0x32, 0xFD, 0x6B, - 0xE1, 0x19, 0x68, 0x2F, 0xD3, 0x71, 0xA0, 0x70, 0xE9, 0xAF, 0xE6, 0x25, - 0x4E, 0xE8, 0x46, 0x08, 0x1C, 0xF1, 0xE3, 0x60, 0x75, 0x63, 0xF2, 0xAC, - 0xAE, 0x25, 0x45, 0x6E, 0xB7, 0x43, 0x71, 0xFD, 0xF9, 0x0B, 0x34, 0x2F, - 0xDA, 0xBD, 0x6B, 0x27, 0x68, 0x0D, 0x27, 0x8D, 0xDE, 0xC7, 0x7C, 0x8D, - 0x24, 0xC4, 0xCB, 0x9B, 0xED, 0x80, 0x01, 0x14, 0x02, 0x00, 0x00, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0D, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x0D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x74, 0x6F, 0x6D, 0x61, - 0x72, 0x6B, 0x0D, 0x80, 0x03, -}; diff --git a/core/src/fxge/fontdata/chromefontdata/FoxitSymbol.cpp b/core/src/fxge/fontdata/chromefontdata/FoxitSymbol.cpp deleted file mode 100644 index c9681b2c5a..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/FoxitSymbol.cpp +++ /dev/null @@ -1,1404 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" - -const unsigned char g_FoxitSymbolFontData[16729] = { - 0x1, 0x0, 0x4, 0x2, 0x0, 0x1, 0x1, 0x1, 0xf, 0x43, 0x68, 0x72, - 0x6f, 0x6d, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x4f, 0x54, 0x46, 0x0, - 0x1, 0x1, 0x1, 0x26, 0xf8, 0x10, 0x0, 0xf8, 0xad, 0x1, 0xf8, 0xae, - 0x2, 0xf8, 0xae, 0x3, 0xf8, 0x18, 0x4, 0xfb, 0x48, 0xfb, 0xba, 0xfa, - 0xd6, 0xfa, 0x86, 0x5, 0x1c, 0x6, 0x3d, 0xf, 0x1c, 0x6, 0x89, 0x11, - 0xab, 0x1c, 0x3e, 0xa2, 0x12, 0x0, 0x94, 0x2, 0x0, 0x1, 0x0, 0x6, - 0x0, 0xa, 0x0, 0xf, 0x0, 0x16, 0x0, 0x1a, 0x0, 0x1d, 0x0, 0x22, - 0x0, 0x26, 0x0, 0x2b, 0x0, 0x31, 0x0, 0x33, 0x0, 0x35, 0x0, 0x37, - 0x0, 0x3e, 0x0, 0x40, 0x0, 0x43, 0x0, 0x48, 0x0, 0x4b, 0x0, 0x52, - 0x0, 0x55, 0x0, 0x58, 0x0, 0x5b, 0x0, 0x60, 0x0, 0x64, 0x0, 0x69, - 0x0, 0x6e, 0x0, 0x75, 0x0, 0x79, 0x0, 0x7c, 0x0, 0x81, 0x0, 0x85, - 0x0, 0x8a, 0x0, 0x90, 0x0, 0x92, 0x0, 0x94, 0x0, 0x9b, 0x0, 0x9d, - 0x0, 0xa0, 0x0, 0xa6, 0x0, 0xab, 0x0, 0xae, 0x0, 0xb5, 0x0, 0xb8, - 0x0, 0xbb, 0x0, 0xbe, 0x0, 0xc3, 0x0, 0xc9, 0x0, 0xd1, 0x0, 0xd5, - 0x0, 0xdb, 0x0, 0xe1, 0x0, 0xe7, 0x0, 0xeb, 0x0, 0xf3, 0x0, 0xfe, - 0x1, 0x6, 0x1, 0xb, 0x1, 0x10, 0x1, 0x19, 0x1, 0x20, 0x1, 0x2a, - 0x1, 0x33, 0x1, 0x3c, 0x1, 0x4a, 0x1, 0x56, 0x1, 0x60, 0x1, 0x6d, - 0x1, 0x79, 0x1, 0x85, 0x1, 0x8e, 0x1, 0x99, 0x1, 0xa4, 0x1, 0xac, - 0x1, 0xb1, 0x1, 0xb9, 0x1, 0xc0, 0x1, 0xca, 0x1, 0xd2, 0x1, 0xd9, - 0x1, 0xe2, 0x1, 0xee, 0x1, 0xf5, 0x2, 0x1, 0x2, 0x9, 0x2, 0xe, - 0x2, 0x18, 0x2, 0x21, 0x2, 0x2d, 0x2, 0x32, 0x2, 0x3a, 0x2, 0x43, - 0x2, 0x4a, 0x2, 0x53, 0x2, 0x5e, 0x2, 0x66, 0x2, 0x71, 0x2, 0x7a, - 0x2, 0x86, 0x2, 0x92, 0x2, 0xa0, 0x2, 0xa9, 0x2, 0xb5, 0x2, 0xc3, - 0x2, 0xcd, 0x2, 0xdb, 0x2, 0xe8, 0x2, 0xef, 0x2, 0xf9, 0x3, 0x3, - 0x3, 0xc, 0x3, 0x16, 0x3, 0x1d, 0x3, 0x22, 0x3, 0x26, 0x3, 0x2b, - 0x3, 0x32, 0x3, 0x40, 0x3, 0x4d, 0x3, 0x5b, 0x3, 0x64, 0x3, 0x6f, - 0x3, 0x7b, 0x3, 0x87, 0x3, 0x94, 0x3, 0xa1, 0x3, 0xac, 0x3, 0xb7, - 0x3, 0xc2, 0x3, 0xcf, 0x3, 0xdc, 0x3, 0xe9, 0x3, 0xf4, 0x4, 0x0, - 0x4, 0xb, 0x4, 0x12, 0x4, 0x1c, 0x4, 0x28, 0x4, 0x34, 0x4, 0x40, - 0x4, 0x4e, 0x4, 0x5c, 0x4, 0x6a, 0x4, 0x76, 0x4, 0x83, 0x4, 0x8f, - 0x4, 0x94, 0x4, 0xbe, 0x4, 0xce, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x42, - 0x65, 0x74, 0x61, 0x47, 0x61, 0x6d, 0x6d, 0x61, 0x45, 0x70, 0x73, 0x69, - 0x6c, 0x6f, 0x6e, 0x5a, 0x65, 0x74, 0x61, 0x45, 0x74, 0x61, 0x54, 0x68, - 0x65, 0x74, 0x61, 0x49, 0x6f, 0x74, 0x61, 0x4b, 0x61, 0x70, 0x70, 0x61, - 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x4d, 0x75, 0x4e, 0x75, 0x58, 0x69, - 0x4f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x6e, 0x50, 0x69, 0x52, 0x68, 0x6f, - 0x53, 0x69, 0x67, 0x6d, 0x61, 0x54, 0x61, 0x75, 0x55, 0x70, 0x73, 0x69, - 0x6c, 0x6f, 0x6e, 0x50, 0x68, 0x69, 0x43, 0x68, 0x69, 0x50, 0x73, 0x69, - 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x61, 0x67, 0x61, 0x6d, - 0x6d, 0x61, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x65, 0x70, 0x73, 0x69, 0x6c, - 0x6f, 0x6e, 0x7a, 0x65, 0x74, 0x61, 0x65, 0x74, 0x61, 0x74, 0x68, 0x65, - 0x74, 0x61, 0x69, 0x6f, 0x74, 0x61, 0x6b, 0x61, 0x70, 0x70, 0x61, 0x6c, - 0x61, 0x6d, 0x62, 0x64, 0x61, 0x6e, 0x75, 0x78, 0x69, 0x6f, 0x6d, 0x69, - 0x63, 0x72, 0x6f, 0x6e, 0x70, 0x69, 0x72, 0x68, 0x6f, 0x73, 0x69, 0x67, - 0x6d, 0x61, 0x31, 0x73, 0x69, 0x67, 0x6d, 0x61, 0x74, 0x61, 0x75, 0x75, - 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x70, 0x68, 0x69, 0x63, 0x68, 0x69, - 0x70, 0x73, 0x69, 0x6f, 0x6d, 0x65, 0x67, 0x61, 0x74, 0x68, 0x65, 0x74, - 0x61, 0x31, 0x55, 0x70, 0x73, 0x69, 0x6c, 0x6f, 0x6e, 0x31, 0x70, 0x68, - 0x69, 0x31, 0x6f, 0x6d, 0x65, 0x67, 0x61, 0x31, 0x6d, 0x69, 0x6e, 0x75, - 0x74, 0x65, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x45, 0x75, 0x72, 0x6f, - 0x49, 0x66, 0x72, 0x61, 0x6b, 0x74, 0x75, 0x72, 0x77, 0x65, 0x69, 0x65, - 0x72, 0x73, 0x74, 0x72, 0x61, 0x73, 0x73, 0x52, 0x66, 0x72, 0x61, 0x6b, - 0x74, 0x75, 0x72, 0x4f, 0x6d, 0x65, 0x67, 0x61, 0x61, 0x6c, 0x65, 0x70, - 0x68, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x6c, 0x65, 0x66, 0x74, 0x61, 0x72, - 0x72, 0x6f, 0x77, 0x75, 0x70, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x64, 0x6f, 0x77, 0x6e, - 0x61, 0x72, 0x72, 0x6f, 0x77, 0x62, 0x6f, 0x74, 0x68, 0x63, 0x61, 0x72, - 0x72, 0x69, 0x61, 0x67, 0x65, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x61, - 0x72, 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x6c, 0x65, 0x66, 0x74, 0x61, - 0x72, 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x75, 0x70, 0x61, 0x72, 0x72, - 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x72, 0x69, 0x67, 0x68, 0x74, 0x61, 0x72, - 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x61, 0x72, - 0x72, 0x6f, 0x77, 0x64, 0x62, 0x6c, 0x62, 0x6f, 0x74, 0x68, 0x75, 0x6e, - 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x61, 0x6c, 0x64, 0x69, 0x66, 0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x73, 0x65, - 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x67, 0x72, 0x61, 0x64, 0x69, 0x65, - 0x6e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x6e, 0x6f, 0x74, - 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x75, 0x63, 0x68, 0x74, - 0x68, 0x61, 0x74, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x75, - 0x6d, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x73, 0x74, 0x65, 0x72, - 0x69, 0x73, 0x6b, 0x6d, 0x61, 0x74, 0x68, 0x72, 0x61, 0x64, 0x69, 0x63, - 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x69, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x79, 0x61, 0x6e, - 0x67, 0x6c, 0x65, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x61, 0x6e, - 0x64, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6f, 0x72, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x75, 0x6e, - 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x74, - 0x68, 0x65, 0x72, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x73, 0x69, 0x6d, 0x69, - 0x6c, 0x61, 0x72, 0x63, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x65, 0x6e, 0x74, - 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x6e, - 0x6f, 0x74, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x65, 0x71, 0x75, 0x69, 0x76, - 0x61, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x65, 0x71, - 0x75, 0x61, 0x6c, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x65, 0x71, - 0x75, 0x61, 0x6c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x75, 0x62, - 0x73, 0x65, 0x74, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x73, 0x75, 0x70, - 0x65, 0x72, 0x73, 0x65, 0x74, 0x6e, 0x6f, 0x74, 0x73, 0x75, 0x62, 0x73, - 0x65, 0x74, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x78, 0x73, 0x75, 0x62, 0x73, - 0x65, 0x74, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x78, 0x73, 0x75, 0x70, 0x65, - 0x72, 0x73, 0x65, 0x74, 0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x70, 0x6c, - 0x75, 0x73, 0x63, 0x69, 0x72, 0x63, 0x6c, 0x65, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x79, 0x70, 0x65, 0x72, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x63, 0x75, 0x6c, 0x61, 0x72, 0x64, 0x6f, 0x74, 0x6d, 0x61, 0x74, 0x68, - 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x74, 0x70, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x62, 0x74, 0x61, 0x6e, 0x67, 0x6c, - 0x65, 0x6c, 0x65, 0x66, 0x74, 0x61, 0x6e, 0x67, 0x6c, 0x65, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x6c, 0x6f, 0x7a, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x70, - 0x61, 0x64, 0x65, 0x63, 0x6c, 0x75, 0x62, 0x68, 0x65, 0x61, 0x72, 0x74, - 0x64, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x63, 0x6f, 0x70, 0x79, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x65, 0x72, 0x69, 0x66, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x65, 0x72, 0x69, 0x66, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x65, 0x72, 0x69, 0x66, - 0x72, 0x61, 0x64, 0x69, 0x63, 0x61, 0x6c, 0x65, 0x78, 0x61, 0x72, 0x72, - 0x6f, 0x77, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x61, 0x72, 0x72, 0x6f, - 0x77, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x78, 0x72, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x65, 0x72, 0x73, 0x61, 0x6e, 0x73, 0x63, 0x6f, 0x70, 0x79, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x61, 0x6e, 0x73, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x61, 0x6e, 0x73, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x74, 0x70, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x65, 0x78, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x6c, 0x65, 0x66, 0x74, 0x62, 0x74, 0x62, 0x72, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x6c, 0x65, 0x66, 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x6c, 0x65, 0x66, 0x74, 0x65, 0x78, 0x62, 0x72, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x6c, 0x65, 0x66, 0x74, 0x62, 0x74, 0x62, 0x72, - 0x61, 0x63, 0x65, 0x6c, 0x65, 0x66, 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, - 0x63, 0x65, 0x6c, 0x65, 0x66, 0x74, 0x6d, 0x69, 0x64, 0x62, 0x72, 0x61, - 0x63, 0x65, 0x6c, 0x65, 0x66, 0x74, 0x62, 0x74, 0x62, 0x72, 0x61, 0x63, - 0x65, 0x65, 0x78, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x65, - 0x78, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x74, - 0x70, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x65, - 0x78, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x72, 0x69, 0x67, 0x68, 0x74, 0x62, - 0x74, 0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x72, 0x69, - 0x67, 0x68, 0x74, 0x65, 0x78, 0x62, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x62, 0x74, 0x62, 0x72, 0x61, 0x63, 0x65, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x74, 0x70, 0x62, 0x72, 0x61, 0x63, 0x65, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x6d, 0x69, 0x64, 0x62, 0x72, 0x61, 0x63, - 0x65, 0x72, 0x69, 0x67, 0x68, 0x74, 0x62, 0x74, 0x61, 0x70, 0x70, 0x6c, - 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x43, 0x68, 0x72, 0x6f, 0x6d, - 0x20, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x20, 0x4f, 0x54, 0x46, 0x0, - 0x0, 0x1, 0x0, 0x1, 0x1, 0x0, 0x4, 0x0, 0x0, 0x6, 0x1, 0x0, - 0x9, 0x1, 0x0, 0xc, 0x1, 0x0, 0xf, 0x11, 0x0, 0x3c, 0x0, 0x0, - 0x3e, 0x0, 0x0, 0x40, 0x0, 0x0, 0x5c, 0x2, 0x0, 0x97, 0x0, 0x0, - 0xa1, 0x0, 0x0, 0x9c, 0x0, 0x0, 0x98, 0x0, 0x0, 0xa8, 0x0, 0x0, - 0x9f, 0x0, 0x0, 0x65, 0x0, 0x1, 0x87, 0x31, 0x0, 0x74, 0x0, 0x0, - 0x79, 0x0, 0x1, 0xb9, 0x1, 0x0, 0x63, 0x0, 0x1, 0xbb, 0x1b, 0x0, - 0xa6, 0x0, 0x1, 0xd7, 0x41, 0x0, 0xbf, 0x2, 0x0, 0x1, 0x0, 0x4, - 0x0, 0x7, 0x0, 0x3b, 0x0, 0xad, 0x1, 0x68, 0x2, 0x26, 0x2, 0x5c, - 0x2, 0x8f, 0x2, 0xb0, 0x3, 0x4, 0x3, 0x13, 0x3, 0x27, 0x3, 0x73, - 0x3, 0xa3, 0x3, 0xf5, 0x4, 0x65, 0x4, 0x99, 0x4, 0xf2, 0x5, 0x53, - 0x5, 0x7a, 0x5, 0xf1, 0x6, 0x56, 0x6, 0x6d, 0x6, 0xd9, 0x6, 0xf0, - 0x7, 0x3, 0x7, 0x1c, 0x7, 0x79, 0x7, 0x9a, 0x7, 0xbc, 0x7, 0xcc, - 0x8, 0x17, 0x8, 0x2d, 0x8, 0x79, 0x8, 0x91, 0x8, 0xc9, 0x8, 0xf8, - 0x9, 0x6e, 0x9, 0x9d, 0x9, 0xbd, 0xa, 0x3c, 0xa, 0xa0, 0xb, 0xa, - 0xb, 0x4c, 0xb, 0xa9, 0xb, 0xe8, 0xc, 0x18, 0xc, 0xb5, 0xc, 0xc4, - 0xd, 0x1e, 0xd, 0x6f, 0xd, 0xca, 0xe, 0x11, 0xe, 0x88, 0xe, 0xdd, - 0xf, 0x1c, 0xf, 0x69, 0xf, 0xa5, 0xf, 0xde, 0x10, 0x2e, 0x10, 0xab, - 0x11, 0x40, 0x11, 0xab, 0x12, 0x1a, 0x12, 0xa8, 0x13, 0x2, 0x13, 0x87, - 0x14, 0xa, 0x14, 0x90, 0x14, 0xf6, 0x15, 0x4d, 0x15, 0x89, 0x16, 0x4, - 0x16, 0x61, 0x16, 0xac, 0x17, 0x62, 0x17, 0xa8, 0x18, 0x10, 0x18, 0x71, - 0x18, 0xe3, 0x19, 0x2e, 0x19, 0x80, 0x19, 0xe3, 0x1a, 0x47, 0x1a, 0xa3, - 0x1b, 0x18, 0x1b, 0x93, 0x1c, 0x24, 0x1c, 0x85, 0x1c, 0xf2, 0x1d, 0x87, - 0x1d, 0xab, 0x1d, 0xd0, 0x1d, 0xf2, 0x1e, 0x1f, 0x1e, 0x38, 0x1e, 0xc3, - 0x1f, 0x58, 0x20, 0xc, 0x20, 0xe9, 0x21, 0x72, 0x22, 0x1a, 0x22, 0x4b, - 0x22, 0x79, 0x22, 0xa5, 0x22, 0xd4, 0x23, 0x31, 0x23, 0x53, 0x23, 0x96, - 0x23, 0xd5, 0x24, 0xf, 0x24, 0x4e, 0x24, 0xad, 0x24, 0xde, 0x25, 0x46, - 0x25, 0x6b, 0x25, 0xea, 0x26, 0xe, 0x26, 0x33, 0x26, 0x74, 0x26, 0xe6, - 0x27, 0x31, 0x27, 0x80, 0x27, 0xd8, 0x27, 0xe3, 0x28, 0xf3, 0x29, 0x16, - 0x29, 0x88, 0x29, 0xf3, 0x2a, 0xa, 0x2a, 0x26, 0x2a, 0x49, 0x2a, 0x7f, - 0x2a, 0xb5, 0x2b, 0xc, 0x2b, 0x54, 0x2b, 0xa0, 0x2b, 0xfb, 0x2c, 0x46, - 0x2c, 0x84, 0x2c, 0xa1, 0x2c, 0xb3, 0x2c, 0xc8, 0x2c, 0xfa, 0x2d, 0x24, - 0x2d, 0x7a, 0x2d, 0xb6, 0x2d, 0xef, 0x2e, 0x31, 0x2e, 0x7d, 0x2e, 0x98, - 0x2e, 0xb7, 0x2e, 0xf1, 0x2f, 0x2d, 0x2f, 0x45, 0x2f, 0x5f, 0x2f, 0x95, - 0x2f, 0xff, 0x30, 0x8e, 0x30, 0xda, 0x30, 0xf9, 0x31, 0x55, 0x31, 0xeb, - 0x32, 0x87, 0x32, 0x99, 0x32, 0xab, 0x32, 0xc0, 0x33, 0x45, 0x33, 0x92, - 0x33, 0xdb, 0x34, 0x6, 0x34, 0x12, 0x34, 0x3a, 0x34, 0x57, 0x34, 0x68, - 0x34, 0x84, 0x34, 0xa7, 0x34, 0xd5, 0x34, 0xf4, 0x34, 0xfb, 0x35, 0xe, - 0x35, 0x35, 0x35, 0x43, 0x35, 0x6b, 0x35, 0x8a, 0x35, 0x9e, 0x35, 0xbb, - 0x35, 0xd7, 0x36, 0x5, 0x36, 0x21, 0x36, 0x97, 0xfc, 0x45, 0xe, 0xfc, - 0x45, 0xe, 0xfb, 0xf2, 0x7a, 0xf7, 0x4, 0xf8, 0xd5, 0x77, 0x1, 0xf7, - 0x14, 0xf7, 0x4, 0x3, 0xf7, 0x42, 0xf7, 0x64, 0x15, 0x7f, 0x8c, 0x90, - 0x85, 0x8f, 0x1b, 0x8f, 0x8f, 0x91, 0x97, 0x8d, 0x1f, 0xb0, 0xf7, 0xb8, - 0x94, 0xc1, 0xb6, 0x1a, 0xcb, 0x69, 0x96, 0x75, 0x75, 0x69, 0x81, 0x4a, - 0x1e, 0xfc, 0xc2, 0x4, 0x22, 0xa, 0xfb, 0x4b, 0x90, 0x76, 0xf7, 0x64, - 0xb9, 0xf7, 0x4a, 0xb9, 0xf7, 0x63, 0x77, 0x1, 0x9f, 0xf8, 0x61, 0x3, - 0xe9, 0x7b, 0x15, 0xba, 0x6, 0xa8, 0xf7, 0x64, 0x5, 0xf7, 0x10, 0x6, - 0x6f, 0xfb, 0x64, 0x5, 0xba, 0x6, 0xa7, 0xf7, 0x64, 0x5, 0xf3, 0x6, - 0x91, 0xb9, 0x5, 0x24, 0x6, 0xa3, 0xf7, 0x4a, 0x5, 0xf2, 0x6, 0x91, - 0xb9, 0x5, 0x25, 0x6, 0xa7, 0xf7, 0x63, 0x5, 0x5c, 0x6, 0x6f, 0xfb, - 0x63, 0x5, 0xfb, 0x11, 0x6, 0xa8, 0xf7, 0x63, 0x5, 0x5c, 0x6, 0x6e, - 0xfb, 0x63, 0x5, 0x27, 0x6, 0x85, 0x5d, 0x5, 0xef, 0x6, 0x72, 0xfb, - 0x4a, 0x5, 0x24, 0x6, 0x85, 0x5d, 0x5, 0xf2, 0x6, 0xc0, 0xb9, 0x15, - 0xa4, 0xf7, 0x4a, 0x5, 0xf7, 0x10, 0x6, 0x73, 0xfb, 0x4a, 0x5, 0xe, - 0xf7, 0x2a, 0x5d, 0xb1, 0xf7, 0xa6, 0xbc, 0x7c, 0xb1, 0xf7, 0x70, 0xa7, - 0xd0, 0x77, 0x12, 0xca, 0xdc, 0xf7, 0x70, 0xa8, 0xb7, 0xd6, 0xf7, 0x79, - 0xaa, 0x13, 0xdf, 0x80, 0xf7, 0x3f, 0x67, 0x15, 0xc2, 0x6, 0xf8, 0x4d, - 0xf9, 0x47, 0x5, 0x54, 0x6, 0x66, 0x82, 0x33, 0x6b, 0x5c, 0x1b, 0x53, - 0x8a, 0x6c, 0xa4, 0x83, 0x8f, 0x8, 0xa0, 0x71, 0x79, 0x9f, 0x63, 0x1b, - 0xfb, 0x4, 0xfb, 0x6, 0xfb, 0x23, 0xfb, 0x19, 0x40, 0xb9, 0x65, 0xc7, - 0xf7, 0x1a, 0xe4, 0xf7, 0x25, 0xef, 0x8c, 0x1f, 0xa0, 0x8b, 0xa0, 0x88, - 0x9f, 0x1e, 0x9c, 0x81, 0xaa, 0x85, 0xac, 0x8c, 0xb0, 0x8c, 0xb3, 0x93, - 0xa4, 0x9b, 0x8, 0xfb, 0x69, 0x87, 0x15, 0x8d, 0x76, 0x8d, 0x80, 0x6f, - 0x1a, 0x3a, 0x45, 0xfb, 0xf, 0x27, 0x66, 0x7e, 0xb3, 0xad, 0xe3, 0xda, - 0xf7, 0x14, 0xcd, 0x95, 0x1e, 0x9b, 0x7e, 0xac, 0x7d, 0xa1, 0x82, 0x8, - 0xd8, 0xfc, 0x7e, 0x15, 0x3b, 0xbc, 0x5e, 0xd8, 0xf7, 0xc, 0xe4, 0xf7, - 0x2a, 0xf2, 0x1e, 0x13, 0xbf, 0x80, 0xc2, 0x76, 0xcd, 0x35, 0xfb, 0x18, - 0x2b, 0xfb, 0x20, 0xfb, 0x1, 0x1e, 0xd6, 0x80, 0x15, 0xe8, 0xdf, 0xf7, - 0x16, 0xd3, 0x8a, 0x1e, 0xc6, 0x99, 0x5c, 0x60, 0x38, 0x38, 0xfb, 0x11, - 0x26, 0x6c, 0x7d, 0xb0, 0xb2, 0x1f, 0xe, 0xea, 0x79, 0xc6, 0x50, 0xd6, - 0xf7, 0xed, 0x9d, 0xf7, 0x5d, 0xb3, 0x12, 0xb4, 0xe8, 0xc9, 0xd7, 0x8b, - 0xf7, 0x38, 0x8b, 0xbd, 0x13, 0x7f, 0xf8, 0x3e, 0xdd, 0x15, 0x76, 0xa0, - 0xd2, 0x3c, 0xdb, 0x1b, 0x13, 0xbf, 0xdb, 0xb2, 0xb4, 0xd8, 0xac, 0x1f, - 0x7b, 0x99, 0x5, 0x66, 0x61, 0x64, 0x77, 0x73, 0x1b, 0x4f, 0x56, 0xc2, - 0xaa, 0x6c, 0x1f, 0xcc, 0xd7, 0x9f, 0xb7, 0xb2, 0xc8, 0x8, 0xaf, 0xa2, - 0xa3, 0xb5, 0xbd, 0x1b, 0x9d, 0xfb, 0x67, 0x79, 0x7, 0xae, 0xa2, 0x7d, - 0x71, 0x52, 0x48, 0xfb, 0xa, 0x75, 0x7b, 0x1f, 0x4d, 0xd3, 0x60, 0xd6, - 0x69, 0xc9, 0x8, 0xe2, 0xb1, 0xd5, 0xab, 0xe8, 0x1a, 0xc9, 0x4d, 0xc3, - 0x49, 0x27, 0x4d, 0x54, 0x24, 0x1e, 0x13, 0x9f, 0x56, 0x9e, 0x6f, 0x9c, - 0x5b, 0x1e, 0xfb, 0x2, 0x44, 0x3a, 0x5f, 0xfb, 0xd, 0x1a, 0xfb, 0x0, - 0xe2, 0x5b, 0xe4, 0xf7, 0x11, 0xc2, 0xd0, 0xaa, 0xa8, 0x1e, 0xfb, 0xd, - 0xf7, 0xdc, 0x15, 0x7c, 0xb0, 0x79, 0xbc, 0xb8, 0x1a, 0xb6, 0xb1, 0xb0, - 0xba, 0xaf, 0xb6, 0x6a, 0x52, 0x51, 0x3c, 0x6a, 0x57, 0x6d, 0x1e, 0xe8, - 0xfb, 0xc4, 0x15, 0x13, 0xbf, 0x82, 0x83, 0x4e, 0x53, 0x48, 0x1b, 0x44, - 0x52, 0xc9, 0xda, 0xe4, 0xd2, 0xb1, 0xb4, 0xaa, 0x1f, 0xba, 0x3b, 0xa2, - 0x5b, 0xde, 0x24, 0x8, 0xe, 0x50, 0xa, 0xc0, 0xdd, 0x3, 0xf7, 0xb6, - 0xfb, 0x53, 0x15, 0x95, 0x9c, 0x5, 0xfb, 0xe, 0xe6, 0x60, 0xf7, 0x35, - 0xf7, 0x3a, 0x1a, 0xf7, 0x40, 0xad, 0xf7, 0x2f, 0xf7, 0x17, 0xe0, 0x1e, - 0x81, 0x9c, 0x5, 0xfb, 0x0, 0x72, 0xfb, 0x15, 0xfb, 0x2a, 0xfb, 0x95, - 0x1a, 0xfb, 0x7a, 0xf7, 0x22, 0xfb, 0x48, 0xea, 0x75, 0x1e, 0xe, 0x50, - 0xa, 0xf7, 0x58, 0xdd, 0x3, 0xb4, 0xfb, 0x53, 0x15, 0xea, 0xa1, 0xf7, - 0x22, 0xf7, 0x48, 0xf7, 0x7a, 0x1a, 0xf7, 0x95, 0xfb, 0x15, 0xf7, 0x2a, - 0xfb, 0x0, 0xa4, 0x1e, 0x81, 0x7a, 0x5, 0xf7, 0x17, 0x36, 0xad, 0xfb, - 0x2f, 0xfb, 0x40, 0x1a, 0xfb, 0x3a, 0x60, 0xfb, 0x35, 0xfb, 0xe, 0x30, - 0x1e, 0xe, 0xf7, 0xbe, 0x8b, 0x1, 0xf7, 0x8b, 0xc2, 0x3, 0x95, 0xf7, - 0x87, 0x15, 0xf7, 0x81, 0xfb, 0x87, 0xc2, 0xf7, 0x87, 0xf7, 0x81, 0xc2, - 0xfb, 0x81, 0xf7, 0x7f, 0x54, 0xfb, 0x7f, 0xfb, 0x81, 0x6, 0xe, 0xfc, - 0x45, 0xfb, 0x17, 0x76, 0xf7, 0x24, 0xf7, 0x4, 0x22, 0xf4, 0x12, 0xc3, - 0xf7, 0x1e, 0x13, 0xd0, 0xc3, 0xb8, 0x15, 0x6b, 0x9e, 0x76, 0xaf, 0x1e, - 0x13, 0xb0, 0x97, 0x99, 0x93, 0x8a, 0x93, 0x1f, 0x8f, 0x8a, 0x8d, 0x89, - 0x84, 0x1a, 0x54, 0x51, 0x62, 0x73, 0x79, 0x1e, 0x86, 0x87, 0x83, 0x86, - 0x84, 0x1a, 0x84, 0x90, 0x87, 0x92, 0x8f, 0x92, 0x8c, 0x90, 0x92, 0x1e, - 0x9c, 0x95, 0xac, 0xa4, 0x9f, 0xa4, 0x8, 0xaf, 0xb9, 0x8d, 0xb4, 0xa7, - 0x1a, 0xba, 0x65, 0xa7, 0x67, 0x5f, 0x77, 0x6c, 0x6f, 0x1e, 0xe, 0xfc, - 0x45, 0x7a, 0xf7, 0x4, 0x1, 0xd0, 0xf7, 0x4, 0x3, 0xd0, 0xb2, 0x15, - 0x22, 0xa, 0xfc, 0x29, 0x8e, 0x76, 0xf9, 0x2c, 0x77, 0x1, 0x79, 0x4, - 0xb7, 0x6, 0xf7, 0x66, 0xf9, 0x2c, 0x5, 0x5f, 0x6, 0xe, 0xfb, 0x4b, - 0x7a, 0xab, 0xf9, 0x14, 0xa9, 0x1, 0xa2, 0xee, 0xf7, 0x93, 0xe9, 0x3, - 0xf7, 0xe, 0xf7, 0xe3, 0x15, 0xd4, 0x8b, 0xf7, 0x8b, 0xf7, 0x14, 0xf7, - 0x14, 0x8a, 0xfb, 0x8b, 0x42, 0x38, 0x8c, 0xfb, 0x81, 0xfb, 0x14, 0xfb, - 0x14, 0x8b, 0xf7, 0x7f, 0xe0, 0x1e, 0x28, 0x16, 0xfb, 0x11, 0xb6, 0xfb, - 0x77, 0xf7, 0x4c, 0xf7, 0x4c, 0xb0, 0xf7, 0x77, 0xf7, 0x11, 0xf7, 0xf, - 0x66, 0xf7, 0x77, 0xfb, 0x4c, 0xfb, 0x4c, 0x60, 0xfb, 0x77, 0xfb, 0xf, - 0x1e, 0xe, 0xfb, 0x4b, 0x3b, 0xa, 0xf7, 0x69, 0xdf, 0x3, 0xf7, 0x9, - 0x16, 0xf7, 0xa5, 0x9d, 0x6, 0x7e, 0x3b, 0x96, 0xd2, 0x1f, 0xf8, 0xd1, - 0x79, 0x7, 0xfb, 0x36, 0x32, 0x5, 0x79, 0x7, 0xc4, 0xa0, 0x5, 0xa7, - 0x95, 0x96, 0x7e, 0x77, 0x1a, 0xfc, 0x64, 0x7, 0x44, 0x38, 0x80, 0x7e, - 0x1e, 0xe, 0xfb, 0x4b, 0x8b, 0xd7, 0xf8, 0x1c, 0x9d, 0xf7, 0xc, 0xdb, - 0x1, 0xf7, 0xe0, 0xe5, 0x3, 0xa4, 0x16, 0xf8, 0x1d, 0x6, 0xc4, 0xf7, - 0x1d, 0x7e, 0x90, 0x5, 0x4c, 0x64, 0x6e, 0x88, 0x64, 0x1b, 0xfb, 0x77, - 0x6, 0xf7, 0x58, 0xf7, 0x5c, 0xed, 0xf7, 0x6, 0xf5, 0x1a, 0xf7, 0xd, - 0x41, 0xd0, 0x22, 0x33, 0x2d, 0x5a, 0xfb, 0x2b, 0x6d, 0x1e, 0xa0, 0x86, - 0x5, 0xc1, 0xa1, 0xa9, 0xd2, 0xe6, 0x1b, 0xf7, 0x7, 0xa1, 0x30, 0x5c, - 0x37, 0x5d, 0x34, 0x46, 0x40, 0x1f, 0xfb, 0x54, 0xfb, 0x66, 0x5, 0xe, - 0xfb, 0x4b, 0x7a, 0xb2, 0xf8, 0xef, 0xc7, 0x12, 0xf7, 0xcf, 0xdd, 0x65, - 0xd7, 0x13, 0xd0, 0xf7, 0x25, 0xf7, 0xe8, 0x15, 0xf1, 0x8c, 0xf7, 0x4, - 0x5c, 0xfb, 0x1, 0x1a, 0x37, 0x62, 0x3c, 0x2e, 0x6e, 0x74, 0x97, 0x9c, - 0x76, 0x1e, 0x9c, 0x76, 0x77, 0x98, 0x74, 0x1b, 0x68, 0x7d, 0x7e, 0x6e, - 0x58, 0xf7, 0x10, 0x86, 0x9e, 0xf7, 0x20, 0xf7, 0x5, 0xe5, 0xf7, 0x27, - 0xf7, 0x16, 0x36, 0xb5, 0x5d, 0x9b, 0x1f, 0x13, 0xe0, 0xcd, 0xb8, 0xa6, - 0xb6, 0xc1, 0x1a, 0xb4, 0x70, 0xe9, 0xfb, 0x15, 0x48, 0x2c, 0x6b, 0xfb, - 0x17, 0x63, 0x1e, 0x9a, 0x87, 0x5, 0xa7, 0x9a, 0xbb, 0xda, 0xe6, 0x1b, - 0xd5, 0xac, 0x56, 0x58, 0x2f, 0x40, 0x5b, 0x2c, 0x71, 0x1f, 0x86, 0x8b, - 0x86, 0x86, 0x1a, 0xe, 0xfb, 0x4b, 0xa0, 0x76, 0xf7, 0x33, 0xd1, 0xf8, - 0x5c, 0x77, 0x1, 0x9b, 0xb8, 0xf7, 0x81, 0xdf, 0x3, 0x9b, 0xf7, 0x33, - 0x15, 0xf7, 0xae, 0xfb, 0x33, 0xdf, 0xf7, 0x33, 0xe2, 0xd1, 0x34, 0xf8, - 0x5c, 0x59, 0x6, 0xfb, 0xd0, 0xfc, 0x5b, 0x5, 0xb8, 0x8a, 0x15, 0xf7, - 0x81, 0xf7, 0xe4, 0x5, 0xfb, 0xe4, 0x7, 0xe, 0xfb, 0x4b, 0x7a, 0xb3, - 0xf8, 0x1c, 0xe0, 0xe9, 0xda, 0x1, 0xf7, 0xf7, 0xd2, 0x3, 0xc7, 0xf8, - 0x33, 0x15, 0xf7, 0x7, 0x86, 0xf7, 0x48, 0x59, 0xfb, 0x34, 0x1a, 0xfb, - 0xe, 0x42, 0x54, 0x4a, 0x70, 0x78, 0x9d, 0x9d, 0x77, 0x1e, 0x9d, 0x78, - 0x77, 0x9d, 0x6d, 0x1b, 0x6c, 0x75, 0x7a, 0x6b, 0x57, 0xe5, 0x80, 0xbd, - 0xf7, 0x32, 0xee, 0xf7, 0x1, 0xf7, 0x19, 0xf7, 0x2d, 0x30, 0xf7, 0x4, - 0xfb, 0x57, 0x95, 0x1f, 0xaf, 0xe9, 0x5, 0xf7, 0x79, 0x6, 0xb1, 0xe1, - 0x7c, 0x90, 0x5, 0x81, 0x81, 0x6e, 0x89, 0x64, 0x1b, 0xfb, 0x48, 0x6, - 0xe, 0xfb, 0x4b, 0x7d, 0xa7, 0xf8, 0x4, 0xb9, 0xf7, 0x95, 0x77, 0x1, - 0xad, 0xe8, 0xf7, 0x8f, 0xe5, 0x3, 0xf8, 0x51, 0xf9, 0x41, 0x15, 0xfb, - 0x85, 0x82, 0xfb, 0x3e, 0xfb, 0x4a, 0xfb, 0x5f, 0x1a, 0xfb, 0x66, 0xf1, - 0x2c, 0xf7, 0xa, 0xf7, 0x46, 0xaf, 0xf7, 0x33, 0xd4, 0xf7, 0x1a, 0x3d, - 0xd7, 0x22, 0x54, 0x74, 0x7f, 0x6c, 0x52, 0x1e, 0xa0, 0xf7, 0xc, 0xee, - 0xf7, 0x1b, 0xf7, 0x48, 0xa7, 0x8, 0xfb, 0xce, 0xfb, 0xdc, 0x15, 0xad, - 0xaf, 0xaf, 0x93, 0xb0, 0x1b, 0xf2, 0xa9, 0x27, 0x24, 0xfb, 0x5, 0x5d, - 0x57, 0x4c, 0x40, 0x48, 0xd5, 0xf7, 0x3c, 0xad, 0x8c, 0xa5, 0x93, 0xa3, - 0x1f, 0xe, 0xfb, 0x4b, 0x92, 0x76, 0xf8, 0xe9, 0xe5, 0x1, 0xf7, 0x43, - 0x7b, 0x15, 0xc7, 0x6, 0xf7, 0x69, 0xf9, 0x25, 0x5, 0xab, 0xfb, 0xff, - 0x7, 0x4e, 0xfb, 0x34, 0xa1, 0x82, 0x5, 0xb3, 0xa3, 0xa6, 0xb2, 0xc3, - 0x1b, 0xf7, 0x6d, 0x6, 0xe, 0xfb, 0x4b, 0x79, 0xab, 0xf9, 0xe, 0xb0, - 0x12, 0xc1, 0xd9, 0x45, 0xd1, 0xf7, 0x72, 0xcc, 0x55, 0xd6, 0x13, 0xe4, - 0xf7, 0x63, 0xf7, 0xcd, 0x15, 0xf7, 0x4, 0x38, 0xb9, 0x6d, 0x41, 0x1a, - 0x45, 0x5d, 0x61, 0x4c, 0x3a, 0x60, 0xcc, 0xd8, 0xe6, 0xb3, 0xb2, 0xae, - 0xa6, 0x1e, 0x6f, 0xa6, 0x15, 0x34, 0x4a, 0x65, 0x61, 0x34, 0x1a, 0x3d, - 0xcf, 0x35, 0xf7, 0x10, 0xf7, 0x3a, 0xa7, 0xf7, 0x8, 0xbf, 0xce, 0x7c, - 0xc8, 0xfb, 0x16, 0xe1, 0x1e, 0x13, 0xd8, 0xc1, 0xb1, 0xd1, 0xbc, 0xe7, - 0x1a, 0xd7, 0x4c, 0xcd, 0xfb, 0x5, 0x35, 0x2c, 0x55, 0x26, 0x3a, 0xab, - 0x69, 0xe0, 0x40, 0x1e, 0xde, 0xbd, 0x15, 0x68, 0xa1, 0x30, 0xc4, 0xd9, - 0x1a, 0xbb, 0xab, 0xc0, 0xd6, 0xd8, 0xad, 0x55, 0x54, 0x33, 0x56, 0x66, - 0x64, 0x73, 0x1e, 0xe, 0xfb, 0x4b, 0x8e, 0x76, 0xf7, 0x8d, 0xb6, 0xf8, - 0xe, 0xac, 0x1, 0xaa, 0xe6, 0xf7, 0x84, 0xed, 0x3, 0xc2, 0x8d, 0x15, - 0x90, 0x77, 0x5, 0xf7, 0x8e, 0x98, 0xf7, 0x2a, 0xf7, 0x48, 0xf7, 0x75, - 0x1a, 0xf7, 0x3b, 0x2a, 0xf7, 0xa, 0xfb, 0xf, 0xfb, 0x16, 0x3c, 0xfb, - 0x5, 0xfb, 0x19, 0x39, 0xb8, 0xfb, 0x12, 0xf7, 0x1a, 0xbd, 0xc0, 0x9d, - 0xb0, 0xb7, 0x1e, 0x87, 0x70, 0x54, 0xfb, 0x6d, 0xfb, 0x87, 0x63, 0x8, - 0xf7, 0xc3, 0xf7, 0xd8, 0x15, 0x69, 0x6a, 0x61, 0x79, 0x6a, 0x1b, 0x21, - 0x75, 0xf7, 0x13, 0xd7, 0xdd, 0xa2, 0xe8, 0xdf, 0xf7, 0x17, 0x8d, 0xfb, - 0x4f, 0x4a, 0x76, 0x89, 0x69, 0x89, 0x78, 0x1f, 0xe, 0xfc, 0x29, 0x7a, - 0xf7, 0x4, 0xf7, 0x91, 0xf7, 0x4, 0x1, 0xdc, 0xf7, 0x4, 0x3, 0xdc, - 0xb2, 0x37, 0xa, 0xf8, 0x1, 0x4, 0x22, 0xa, 0xfc, 0x29, 0xfb, 0x17, - 0x76, 0xf7, 0x3b, 0x76, 0xa6, 0x76, 0xf7, 0xf0, 0xf7, 0x4, 0x12, 0xde, - 0xf7, 0x1e, 0xfb, 0x15, 0xf7, 0x4, 0x13, 0xd8, 0xde, 0xb5, 0x15, 0x72, - 0x9b, 0x74, 0xb0, 0x90, 0x91, 0x8c, 0x8d, 0x90, 0x1e, 0x13, 0xb8, 0x8d, - 0x91, 0x91, 0x8c, 0x8f, 0x1b, 0x91, 0x8f, 0x87, 0x80, 0x6f, 0x7b, 0x71, - 0x7b, 0x7a, 0x1f, 0x7c, 0x7c, 0x7a, 0x7f, 0x7f, 0x83, 0x8, 0x7e, 0x82, - 0x85, 0x88, 0x80, 0x1a, 0x86, 0x8d, 0x88, 0x91, 0x8e, 0x8f, 0x8b, 0x8c, - 0x90, 0x1e, 0x95, 0x8d, 0xb7, 0xab, 0xa5, 0xaa, 0x8, 0xa8, 0xae, 0x94, - 0xb7, 0xab, 0x1a, 0xb2, 0x6a, 0xaf, 0x5d, 0x6a, 0x71, 0x75, 0x67, 0x1e, - 0x13, 0xd4, 0x94, 0xf7, 0xfe, 0x15, 0x22, 0xa, 0xa0, 0x76, 0xf8, 0x9e, - 0x77, 0x1, 0xa5, 0xf7, 0x7a, 0x15, 0xf8, 0x85, 0xfb, 0x7a, 0x5, 0xc9, - 0x7, 0xfc, 0x45, 0xf7, 0x5b, 0x3e, 0xa, 0xf7, 0x21, 0xc2, 0xf7, 0x1f, - 0xc2, 0x1, 0x96, 0xf7, 0xe3, 0x15, 0x3a, 0xa, 0xfb, 0x8d, 0x4, 0x3a, - 0xa, 0xe, 0xa0, 0x76, 0xf8, 0x9e, 0x77, 0x1, 0xf8, 0x9f, 0xf7, 0x7a, - 0x15, 0x51, 0xa, 0xf8, 0x44, 0xfb, 0x5b, 0xfc, 0x44, 0xfb, 0x5b, 0x5, - 0x4d, 0x7, 0xe, 0xfb, 0x83, 0x7a, 0xf7, 0x4, 0xf8, 0xc3, 0xab, 0x1, - 0xf7, 0x42, 0xf7, 0x4, 0xa6, 0xeb, 0x3, 0xf7, 0x74, 0xf7, 0x3b, 0x15, - 0xa0, 0x6, 0x98, 0xe7, 0xb1, 0xc3, 0xad, 0xb3, 0x8, 0x9f, 0xa3, 0xc6, - 0xd6, 0xd6, 0x1a, 0xbd, 0x77, 0xf6, 0xfb, 0x32, 0xfb, 0x5, 0x5b, 0x32, - 0x4a, 0x69, 0x9f, 0x68, 0xa8, 0xa1, 0x9b, 0x97, 0xa5, 0x9e, 0x80, 0x99, - 0x81, 0x9a, 0x1e, 0x82, 0x98, 0x82, 0x99, 0x9e, 0x1a, 0xb2, 0xb9, 0x9f, - 0xbe, 0xc1, 0xb7, 0x56, 0x41, 0x4b, 0x76, 0x56, 0x75, 0x51, 0x1e, 0x77, - 0x53, 0x77, 0x48, 0x85, 0x4d, 0x8, 0x59, 0xfb, 0x14, 0x15, 0x22, 0xa, - 0x4e, 0xa, 0xe1, 0xd8, 0x3, 0xe1, 0xfb, 0x2f, 0x15, 0xf7, 0x69, 0xa4, - 0x3c, 0x6, 0x64, 0x79, 0xa3, 0xb0, 0x1f, 0xf9, 0x25, 0x7, 0xb0, 0x9d, - 0xa3, 0xb2, 0x1e, 0xda, 0xa4, 0xfb, 0x69, 0x6, 0xe, 0x4e, 0xa, 0xf7, - 0x3d, 0xd8, 0x3, 0xac, 0xfb, 0x16, 0x15, 0x72, 0xf7, 0x69, 0xf9, 0xd1, - 0xfb, 0x69, 0x72, 0xda, 0x7, 0xb2, 0x9d, 0x73, 0x66, 0x1f, 0xfd, 0x25, - 0x7, 0x66, 0x79, 0x73, 0x64, 0x1e, 0xe, 0xfb, 0x4b, 0xfb, 0x90, 0xb9, - 0x1, 0x89, 0xfb, 0x62, 0x15, 0x5d, 0xf8, 0x8c, 0xb9, 0x7, 0xe, 0x4d, - 0xa, 0xf7, 0x4e, 0xd6, 0x3, 0xc5, 0xf7, 0x7c, 0x15, 0xc4, 0x7f, 0xd2, - 0x8b, 0x27, 0x1a, 0xfb, 0x53, 0x7, 0x39, 0xac, 0x6d, 0xd8, 0x1e, 0xf0, - 0xa4, 0x5a, 0x6, 0x52, 0x6d, 0xaa, 0xc3, 0x1f, 0xf7, 0x53, 0x7, 0xdb, - 0x28, 0xb4, 0x5b, 0x8e, 0x1e, 0xb8, 0x93, 0xf1, 0xaf, 0xdd, 0x1a, 0xf7, - 0x53, 0x7, 0xc5, 0xa9, 0xa8, 0xc4, 0x1e, 0xbc, 0xa4, 0x26, 0x6, 0x3f, - 0x69, 0x71, 0x35, 0x1f, 0xfb, 0x53, 0x7, 0x27, 0x44, 0x8b, 0x52, 0x7f, - 0x1e, 0xe, 0xfc, 0x77, 0xfb, 0x30, 0x76, 0xf9, 0xe6, 0x77, 0x1, 0xcc, - 0xd1, 0x3, 0xcc, 0xfb, 0x45, 0x15, 0xd1, 0xf9, 0xe6, 0x45, 0x6, 0xe, - 0x4d, 0xa, 0xf7, 0x6b, 0xd6, 0x3, 0xda, 0xfb, 0x32, 0x15, 0x72, 0xf0, - 0x7, 0xd8, 0xac, 0xa7, 0xdf, 0x1f, 0xf7, 0x53, 0x7, 0xef, 0xd2, 0x8b, - 0xc4, 0x97, 0x1e, 0xa5, 0x7, 0x52, 0x97, 0x44, 0x8b, 0xef, 0x1a, 0xf7, - 0x53, 0x7, 0xdd, 0x6b, 0xa9, 0x3d, 0x1e, 0x26, 0x72, 0xbc, 0x6, 0xbd, - 0xb0, 0x74, 0x4b, 0x1f, 0xfb, 0x53, 0x7, 0x39, 0xf3, 0x65, 0xb6, 0x83, - 0x1e, 0x5e, 0x89, 0x25, 0x63, 0x3b, 0x1a, 0xfb, 0x53, 0x7, 0x4b, 0x66, - 0x74, 0x59, 0x1e, 0xe, 0xa9, 0xf7, 0x7d, 0xc2, 0x1, 0xf8, 0xf1, 0xc2, - 0x3, 0xae, 0xf7, 0xb4, 0x15, 0xf9, 0x5, 0xfb, 0xb4, 0x54, 0xf7, 0x7d, - 0xfc, 0xce, 0x6, 0xe, 0xfb, 0xaf, 0xf8, 0x15, 0xb4, 0xf7, 0x6e, 0xb4, - 0x1, 0xbd, 0xb6, 0xf7, 0x6b, 0xb5, 0x3, 0xbd, 0xf8, 0xab, 0x15, 0x38, - 0xce, 0x48, 0xde, 0xdd, 0xcf, 0xce, 0xde, 0xdd, 0x47, 0xcf, 0x39, 0x38, - 0x48, 0x49, 0x37, 0x1e, 0xb6, 0x16, 0xc7, 0xb9, 0xbc, 0xc7, 0xc8, 0xbb, - 0x5a, 0x4f, 0x4e, 0x5b, 0x5b, 0x4f, 0x4e, 0x5d, 0xbb, 0xc8, 0x1e, 0xe, - 0x8b, 0xc2, 0xf7, 0xbe, 0xc2, 0xf7, 0x81, 0x77, 0x1, 0xf7, 0x8b, 0xc2, - 0x3, 0x95, 0xf7, 0xf5, 0x15, 0xf7, 0x81, 0xfb, 0x82, 0xc2, 0xf7, 0x82, - 0xf7, 0x81, 0xc2, 0xfb, 0x81, 0xf7, 0x81, 0x54, 0xfb, 0x81, 0xfb, 0x81, - 0x6, 0xfc, 0x2c, 0x4, 0xf8, 0xa5, 0xc2, 0xfc, 0xa5, 0x6, 0xe, 0x20, - 0xfb, 0x5e, 0x76, 0xf7, 0x61, 0xbd, 0x59, 0xd2, 0xf8, 0x53, 0x77, 0x12, - 0xc8, 0xe1, 0xf7, 0x63, 0xe1, 0x13, 0xdc, 0xec, 0xaa, 0x15, 0x6c, 0x9c, - 0xbd, 0x79, 0xb4, 0x1b, 0xca, 0xd3, 0xd2, 0xb1, 0x9a, 0x1f, 0x52, 0x8c, - 0xb8, 0x57, 0xcf, 0x1b, 0xd1, 0xa7, 0xc6, 0xc7, 0x1f, 0x77, 0x6, 0x72, - 0x81, 0x80, 0x5f, 0x67, 0x1b, 0x69, 0x7b, 0xbd, 0xad, 0x1f, 0xf8, 0x14, - 0x35, 0xfb, 0xfe, 0x7, 0x13, 0xbc, 0x5d, 0x6f, 0x62, 0x64, 0x5c, 0x1b, - 0x4a, 0x71, 0xbf, 0xc9, 0x1f, 0xf7, 0xe1, 0x35, 0xfc, 0x80, 0x7, 0x73, - 0x88, 0x78, 0x87, 0x7b, 0x1e, 0x83, 0x6b, 0x7e, 0x72, 0x63, 0x1a, 0x66, - 0x9e, 0x65, 0xa8, 0xa6, 0x9e, 0xb2, 0xb0, 0xb0, 0x7e, 0xa1, 0x82, 0xaf, - 0x1e, 0x87, 0x9b, 0x88, 0x9f, 0x8a, 0xa3, 0x8, 0xe, 0xa8, 0x76, 0xf8, - 0x98, 0x77, 0x1, 0x9c, 0xb8, 0x15, 0xaf, 0x66, 0xf7, 0x72, 0xf7, 0x72, - 0xf7, 0x72, 0xfb, 0x72, 0xaf, 0xb0, 0xfb, 0x70, 0xf7, 0x71, 0xf7, 0x70, - 0xf7, 0x71, 0x68, 0xb0, 0xfb, 0x73, 0xfb, 0x72, 0xfb, 0x72, 0xf7, 0x72, - 0x67, 0x66, 0xf7, 0x70, 0xfb, 0x71, 0x5, 0xe, 0xd2, 0xf7, 0x4, 0xc0, - 0xc2, 0xc0, 0xf7, 0x4, 0x1, 0xf7, 0x68, 0xf7, 0x4, 0x14, 0xe0, 0x95, - 0xf7, 0x80, 0x15, 0x3a, 0xa, 0xf7, 0x5e, 0xf7, 0x1, 0x37, 0xa, 0xfb, - 0xa5, 0x4, 0x22, 0xa, 0xfb, 0x4b, 0xf8, 0xa, 0xac, 0xf7, 0x91, 0xa5, - 0x1, 0x8d, 0xdf, 0xf7, 0xdc, 0xdb, 0x3, 0xf0, 0xf8, 0xa, 0x15, 0xf7, - 0x9, 0x6, 0x6d, 0xfb, 0xab, 0x85, 0x4f, 0x84, 0x53, 0x8, 0x6a, 0x87, - 0x76, 0xfb, 0x5, 0x53, 0x1b, 0x82, 0x80, 0x8d, 0x90, 0x1f, 0x9a, 0x97, - 0x8b, 0xb0, 0x1a, 0x9f, 0x78, 0x9e, 0x78, 0x76, 0x72, 0x7d, 0x65, 0x5a, - 0xb6, 0x74, 0xb5, 0x1e, 0xe8, 0x8c, 0xb0, 0xe6, 0x9c, 0xd7, 0xa7, 0xf7, - 0x1c, 0x9c, 0xf7, 0x16, 0xa2, 0xf7, 0x19, 0x8, 0xf7, 0xe, 0x6, 0x95, - 0xac, 0x5, 0xfb, 0x14, 0x6, 0xf7, 0x3d, 0xa0, 0x9c, 0xdf, 0xbe, 0x1b, - 0x9b, 0x94, 0x87, 0x83, 0x1f, 0x84, 0x85, 0x7b, 0x81, 0x1a, 0x76, 0x9c, - 0x73, 0xa4, 0xa5, 0x97, 0x9e, 0xa8, 0xb3, 0x67, 0xa7, 0x6b, 0xfb, 0x26, - 0x65, 0xfb, 0x30, 0xfb, 0xf, 0x7b, 0x1e, 0xfb, 0x4, 0x6, 0xe, 0xb2, - 0xa0, 0x76, 0xf7, 0x6e, 0xb5, 0xf8, 0x31, 0x77, 0x1, 0x8f, 0xf7, 0x13, - 0xf8, 0x4, 0xf7, 0x4d, 0x3, 0x8f, 0x16, 0xf7, 0x54, 0x9d, 0x6, 0x7c, - 0x59, 0x90, 0xb5, 0x94, 0x8d, 0x95, 0x8f, 0x97, 0x1f, 0xbb, 0xf7, 0xe, - 0x5, 0xf7, 0x97, 0x6, 0xbc, 0xfb, 0xe, 0x5, 0x8f, 0x7f, 0x8d, 0x81, - 0x82, 0x1a, 0x61, 0x59, 0x86, 0x7c, 0x1e, 0x79, 0xf7, 0x8e, 0x9d, 0x7, - 0x5d, 0x7d, 0xaf, 0xb1, 0x7a, 0x1f, 0xfb, 0x8f, 0xf8, 0xd9, 0x5, 0x71, - 0x6, 0xfb, 0x8d, 0xfc, 0xd9, 0x5, 0x67, 0x7b, 0x79, 0x65, 0x60, 0x1b, - 0xf7, 0x5c, 0xf7, 0x86, 0x15, 0xf7, 0x5, 0xf7, 0xa0, 0xf7, 0x5, 0xfb, - 0xa0, 0x5, 0xe, 0x7b, 0x8b, 0xb5, 0xf7, 0xb2, 0xb5, 0xf7, 0x98, 0xb6, - 0x12, 0xf7, 0xb, 0xf3, 0xf7, 0x81, 0xf2, 0x36, 0xf7, 0x6, 0x13, 0xf4, - 0xa8, 0x16, 0xf7, 0xe7, 0x6, 0xf7, 0x10, 0xef, 0xd5, 0xf7, 0x2, 0xd6, - 0x5d, 0xd0, 0xfb, 0x2, 0xa3, 0x1f, 0x8d, 0x7, 0x13, 0xf8, 0xe3, 0xa5, - 0xb2, 0xbb, 0xd3, 0x1a, 0xf7, 0x32, 0xfb, 0x32, 0x9a, 0x28, 0x33, 0xa, - 0xf7, 0xf4, 0x15, 0x13, 0x78, 0xf7, 0x8f, 0x7, 0x99, 0xd2, 0x86, 0x97, - 0xf7, 0xc, 0xad, 0x42, 0x4e, 0xfb, 0xd, 0xfb, 0xa, 0x86, 0x63, 0x1e, - 0x3c, 0x61, 0x15, 0xde, 0x6, 0x13, 0xf4, 0xf1, 0xd1, 0x68, 0xfb, 0x9, - 0x3a, 0x4f, 0x56, 0x4b, 0x1f, 0x33, 0x6, 0x61, 0x8a, 0xab, 0xa3, 0x1f, - 0xe, 0x3b, 0xa0, 0x76, 0xf9, 0x8, 0xb8, 0x77, 0x9f, 0x12, 0xf7, 0x11, - 0xf3, 0xf7, 0xf7, 0xa4, 0x13, 0xd0, 0xa3, 0x16, 0xf7, 0xbb, 0x9d, 0x6, - 0x2a, 0xa, 0x13, 0x58, 0xf8, 0xac, 0xf7, 0x54, 0x7, 0xea, 0xcc, 0x6a, - 0x37, 0x8e, 0x1f, 0xa4, 0x6, 0x7a, 0xf7, 0x36, 0x5, 0xfc, 0xcc, 0x6, - 0x13, 0xb0, 0x77, 0x7, 0x9f, 0x8a, 0xdc, 0x86, 0x23, 0x1a, 0xfc, 0x57, - 0x7, 0x54, 0x5d, 0x78, 0x54, 0x1e, 0xe, 0x43, 0x8b, 0xb9, 0xf7, 0xb3, - 0xb5, 0xf7, 0x8e, 0xbb, 0x79, 0x9d, 0x12, 0xf7, 0xe, 0xf3, 0xf7, 0x96, - 0xa2, 0xa8, 0xa6, 0x13, 0xee, 0xab, 0x16, 0xf8, 0xa9, 0x6, 0xb9, 0xf7, - 0x3e, 0x5, 0x6c, 0x6, 0x58, 0x73, 0x72, 0x42, 0x21, 0x1b, 0xfb, 0x33, - 0x6, 0x76, 0x78, 0x99, 0xae, 0x1f, 0xf7, 0x82, 0xf7, 0x30, 0x7, 0xdb, - 0xa1, 0x69, 0x4f, 0x1f, 0xa2, 0xf7, 0x7a, 0x74, 0x6, 0x4f, 0x75, 0x69, - 0x3b, 0x1e, 0xfb, 0x30, 0xf7, 0x8e, 0xf7, 0x6b, 0x6, 0xe1, 0x87, 0x55, - 0x5d, 0x98, 0x1f, 0xa6, 0xf7, 0x28, 0xfc, 0xa7, 0x6, 0x13, 0xdc, 0x79, - 0x7, 0x25, 0xa, 0xe, 0x43, 0x8b, 0xb5, 0xf8, 0xe1, 0xb5, 0x1, 0xb7, - 0xf8, 0xe4, 0x3, 0xb7, 0x16, 0xf8, 0xcb, 0x6, 0xa4, 0xf7, 0x49, 0x5, - 0x6e, 0x6, 0x5c, 0x7d, 0x78, 0x2f, 0xfb, 0x1f, 0x1b, 0xfb, 0x87, 0x6, - 0xf8, 0x31, 0xf8, 0xf0, 0x5, 0xa6, 0xfc, 0x9e, 0x7, 0x7c, 0xfb, 0x43, - 0x5, 0xa4, 0x6, 0xd1, 0x9f, 0x9a, 0xca, 0xf7, 0x12, 0x1b, 0xf7, 0x6f, - 0x6, 0xfc, 0x41, 0xfc, 0xf8, 0x5, 0xe, 0xb2, 0xa0, 0x76, 0xf7, 0xd7, - 0xb5, 0xf7, 0xc8, 0x77, 0x1, 0xf7, 0x15, 0xf3, 0xf7, 0xc2, 0xf3, 0x3, - 0xb2, 0x24, 0xa, 0xf7, 0x7b, 0xf7, 0xc2, 0xfb, 0x7b, 0x27, 0xa, 0x79, - 0xf7, 0xb0, 0x9d, 0x7, 0x2a, 0xa, 0xf8, 0x7d, 0x7, 0x3c, 0xa, 0xfb, - 0x6c, 0xfb, 0xc2, 0xf7, 0x6c, 0x26, 0xa, 0xc5, 0x7a, 0xb2, 0xf7, 0xae, - 0xce, 0xf7, 0xa5, 0xb2, 0x1, 0xb4, 0xf7, 0x6, 0xf8, 0x50, 0xf7, 0x8, - 0x3, 0xb4, 0xf7, 0xe6, 0x15, 0xfb, 0x42, 0xf7, 0x14, 0xfb, 0x49, 0xf7, - 0x63, 0xf7, 0x63, 0xf7, 0x18, 0xf7, 0x49, 0xf7, 0x42, 0xf7, 0x3e, 0xfb, - 0x1b, 0xf7, 0x43, 0xfb, 0x60, 0xfb, 0x60, 0xfb, 0x17, 0xfb, 0x43, 0xfb, - 0x3e, 0x1e, 0xf7, 0x6, 0x16, 0xf7, 0x22, 0xbc, 0xf7, 0x38, 0xf7, 0x40, - 0xf7, 0x41, 0xbd, 0xfb, 0x38, 0xfb, 0x22, 0xfb, 0x1a, 0x50, 0xfb, 0x4a, - 0xfb, 0x38, 0xfb, 0x3d, 0x57, 0xf7, 0x4a, 0xf7, 0x1a, 0x1e, 0xd9, 0x35, - 0x15, 0x9a, 0x8a, 0x5, 0xad, 0x96, 0x9e, 0x9e, 0xb0, 0x1b, 0xf7, 0x12, - 0x6, 0xb0, 0x9e, 0x78, 0x69, 0x96, 0x1f, 0x9a, 0x8c, 0x5, 0x87, 0xac, - 0x89, 0xa7, 0xa4, 0x1a, 0xa4, 0x8d, 0xa7, 0x8f, 0xab, 0x1e, 0x7c, 0x8c, - 0x5, 0x6a, 0x80, 0x78, 0x77, 0x66, 0x1b, 0xfb, 0x12, 0x6, 0x66, 0x78, - 0x9f, 0xac, 0x80, 0x1f, 0x7c, 0x8a, 0x5, 0x8f, 0x6b, 0x8d, 0x6f, 0x72, - 0x1a, 0x72, 0x89, 0x6f, 0x87, 0x6a, 0x1e, 0xe, 0xfb, 0xf2, 0x3b, 0xa, - 0xf7, 0xe, 0xf3, 0x3, 0xab, 0x24, 0xa, 0xf8, 0x7d, 0x26, 0xa, 0xb2, - 0x3b, 0xa, 0xf7, 0x11, 0xf3, 0xf7, 0x9a, 0xf7, 0x42, 0x3, 0xae, 0x24, - 0xa, 0xf7, 0x61, 0x7, 0xac, 0xa9, 0xf7, 0x66, 0xfb, 0x81, 0x5, 0x9a, - 0x79, 0x93, 0x7d, 0x80, 0x1a, 0x77, 0x72, 0x82, 0x57, 0x1e, 0x79, 0xf7, - 0xc4, 0x9d, 0x7, 0x6a, 0x91, 0x73, 0x88, 0x43, 0xdc, 0xfb, 0x95, 0xf7, - 0xb6, 0x18, 0xd5, 0xd0, 0xbd, 0xbb, 0xcd, 0xd0, 0x8, 0xc5, 0xc6, 0xae, - 0x9e, 0xb8, 0x1b, 0x9d, 0xfb, 0x98, 0x79, 0x7, 0xbd, 0xaf, 0x81, 0x74, - 0x80, 0x84, 0x7c, 0x79, 0x79, 0x1f, 0x3f, 0x3d, 0x3d, 0x43, 0x38, 0x47, - 0x8, 0xf7, 0x71, 0x26, 0xa, 0x8e, 0x8b, 0x9d, 0xf9, 0x28, 0x77, 0x1, - 0x91, 0xf7, 0x28, 0xf7, 0xdd, 0xf7, 0x59, 0x3, 0x91, 0x16, 0xf7, 0x6b, - 0x9d, 0x6, 0x6d, 0x66, 0x91, 0xb4, 0x97, 0x8e, 0x9a, 0x92, 0x9e, 0x1f, - 0xf7, 0x26, 0xf8, 0x15, 0xf7, 0x36, 0xfc, 0x17, 0x5, 0x91, 0x7c, 0x90, - 0x75, 0x81, 0x1a, 0x5f, 0x51, 0x8b, 0x7a, 0x1e, 0x79, 0xf7, 0xa4, 0x9d, - 0x7, 0x80, 0x53, 0xa1, 0xd0, 0x6d, 0x1f, 0xfb, 0x87, 0xf8, 0xcd, 0x5, - 0x83, 0x6, 0xfb, 0x6c, 0xfc, 0xcb, 0x5, 0x52, 0x74, 0x46, 0x67, 0x79, - 0x1b, 0xe, 0xf7, 0x62, 0x3b, 0xa, 0xf7, 0xd, 0xbc, 0xf8, 0x9f, 0xf3, - 0x3, 0xa7, 0x16, 0xf7, 0x7c, 0x9d, 0x6, 0x58, 0x64, 0xa6, 0xba, 0x1f, - 0xf8, 0x57, 0x7, 0xf7, 0x98, 0xfc, 0xb3, 0x5, 0x9d, 0x6, 0xf7, 0x89, - 0xf8, 0xd0, 0x5, 0xfc, 0x74, 0x27, 0xa, 0x79, 0xf7, 0xb0, 0x9d, 0x7, - 0x54, 0x68, 0x94, 0xcc, 0x1f, 0xf8, 0x76, 0x7, 0xd2, 0xc8, 0x95, 0xa8, - 0x1e, 0x9d, 0xfb, 0x5c, 0x7, 0xfb, 0x74, 0xfc, 0x92, 0xfb, 0x7e, 0xf8, - 0x92, 0x5, 0xfb, 0x5d, 0x79, 0x6, 0xda, 0x85, 0x99, 0x65, 0x49, 0x1a, - 0xfc, 0x59, 0x7, 0x5c, 0x61, 0x70, 0x58, 0x1e, 0xe, 0xb2, 0x98, 0x76, - 0xf9, 0x3d, 0x77, 0x1, 0xf7, 0xb, 0xbc, 0xf8, 0x31, 0xbc, 0x3, 0xa8, - 0x83, 0x15, 0xf7, 0x79, 0x9d, 0x6, 0x58, 0x64, 0xa6, 0xba, 0x1f, 0xf8, - 0x5b, 0x7, 0xf8, 0x4c, 0xfc, 0xb7, 0x5, 0xa1, 0xf8, 0xe1, 0x6, 0x31, - 0xa, 0xfb, 0x79, 0x45, 0xa, 0xfc, 0x20, 0x7, 0xfc, 0x13, 0xf8, 0x7c, - 0x5, 0xfb, 0x3d, 0x79, 0x6, 0xbe, 0x94, 0x79, 0x69, 0xa9, 0x1f, 0xfc, - 0x9b, 0x7, 0x5c, 0x64, 0x70, 0x58, 0x1e, 0xe, 0x65, 0x8b, 0xe8, 0xf7, - 0x69, 0xea, 0xf7, 0x4a, 0xe5, 0x1, 0xaf, 0x9d, 0xe8, 0x9d, 0xf7, 0xc9, - 0x9d, 0xe4, 0x9d, 0x3, 0xc7, 0xf8, 0x9e, 0x15, 0x9b, 0x6, 0x9d, 0x8e, - 0x8d, 0xb6, 0xcd, 0x1b, 0xf7, 0xec, 0x6, 0xcd, 0x8e, 0x60, 0x79, 0x8e, - 0x1f, 0x9b, 0xf7, 0x2b, 0xfc, 0x9b, 0x6, 0xe2, 0xfc, 0x3b, 0x15, 0x9d, - 0x6, 0xbb, 0x8e, 0xa3, 0x93, 0xae, 0x1b, 0xf7, 0x4d, 0x6, 0xae, 0xa3, - 0x83, 0x5b, 0x8e, 0x1f, 0x9d, 0xf7, 0x63, 0x79, 0x6, 0x5b, 0x88, 0x73, - 0x83, 0x68, 0x1b, 0xfb, 0x4d, 0x6, 0x68, 0x73, 0x93, 0xbb, 0x88, 0x1f, - 0x79, 0x6, 0xfb, 0x3, 0xfc, 0x5d, 0x15, 0xf8, 0xc7, 0xf7, 0x56, 0x79, - 0x6, 0x47, 0x82, 0x7b, 0x6a, 0x43, 0x1b, 0xfb, 0xdd, 0x6, 0x43, 0x77, - 0xac, 0xcf, 0x82, 0x1f, 0x79, 0x6, 0xe, 0xb2, 0x7a, 0xb2, 0xf9, 0x4, - 0xb2, 0x1, 0xb4, 0xf7, 0x8, 0xf8, 0x4f, 0xf7, 0x7, 0x3, 0xb4, 0xf7, - 0xe4, 0x15, 0xfb, 0x42, 0xf7, 0x16, 0xfb, 0x47, 0xf7, 0x63, 0xf7, 0x63, - 0xf7, 0x16, 0xf7, 0x47, 0xf7, 0x42, 0xf7, 0x3e, 0xfb, 0x19, 0xf7, 0x47, - 0xfb, 0x60, 0xfb, 0x60, 0xfb, 0x19, 0xfb, 0x47, 0xfb, 0x3e, 0x1e, 0xf7, - 0x8, 0x16, 0xf7, 0x1b, 0xc6, 0xf7, 0x43, 0xf7, 0x36, 0xf7, 0x3b, 0xc2, - 0xfb, 0x3f, 0xfb, 0x20, 0xfb, 0x1b, 0x53, 0xfb, 0x46, 0xfb, 0x3a, 0xfb, - 0x3c, 0x56, 0xf7, 0x48, 0xf7, 0x1a, 0x1e, 0xe, 0xe0, 0xa0, 0x76, 0xf9, - 0xc, 0xb4, 0x79, 0x9d, 0x12, 0xf7, 0x7, 0xf2, 0xf7, 0xe1, 0xf2, 0x13, - 0xd8, 0xa4, 0x24, 0xa, 0x8a, 0xf8, 0xb0, 0x5, 0xf7, 0xe1, 0xfc, 0xb0, - 0x6, 0x28, 0xa, 0x79, 0xf7, 0xb0, 0x9d, 0x7, 0x2a, 0xa, 0x8a, 0xf8, - 0x6f, 0x5, 0x13, 0xb8, 0xd4, 0xcc, 0x9a, 0xa5, 0x1e, 0x9d, 0xfd, 0x64, - 0x79, 0x7, 0xa5, 0xcb, 0x7c, 0x42, 0x1f, 0xfc, 0x6f, 0x39, 0xa, 0xfb, - 0x13, 0xa0, 0x76, 0xf7, 0xc0, 0xb4, 0xf7, 0xb8, 0xb3, 0x79, 0x9d, 0x12, - 0xf7, 0xa, 0xf3, 0xf7, 0x6a, 0xf6, 0x13, 0xdc, 0xa7, 0x24, 0xa, 0xf7, - 0x64, 0x7, 0xf7, 0xbe, 0x8a, 0xa2, 0xd5, 0xf7, 0xf, 0x1a, 0xf7, 0x5, - 0x6a, 0xcb, 0xfb, 0x61, 0x33, 0xa, 0xf7, 0xe3, 0x15, 0xf7, 0x94, 0x7, - 0x13, 0xec, 0x9e, 0x9d, 0x90, 0x9c, 0x1e, 0xf7, 0x9, 0x8c, 0xc9, 0x77, - 0xfb, 0xa, 0x1a, 0xfb, 0x12, 0x6b, 0x6e, 0xfb, 0x2d, 0x7f, 0x81, 0x92, - 0x90, 0x84, 0x1e, 0xe, 0x30, 0x8b, 0xe9, 0xf8, 0xa9, 0xb9, 0x1, 0x90, - 0x16, 0xf8, 0xb7, 0x6, 0xb0, 0xf7, 0x61, 0x5, 0x77, 0x6, 0x2a, 0x6d, - 0x5c, 0x7d, 0x4b, 0x1b, 0xfb, 0xaf, 0x6, 0xf7, 0x80, 0xf7, 0xa7, 0xfb, - 0x5d, 0xf7, 0x96, 0x5, 0xf7, 0x66, 0x6, 0xee, 0xa6, 0x48, 0x65, 0x95, - 0x1f, 0x9e, 0x6, 0x81, 0xf7, 0x2b, 0x5, 0xfc, 0x9a, 0x6, 0xf7, 0xa1, - 0xfb, 0xee, 0x5, 0xe, 0x43, 0xa0, 0x76, 0xf9, 0xe, 0xb2, 0x1, 0xae, - 0xa3, 0xf7, 0x65, 0xf3, 0xf7, 0x65, 0xa2, 0x3, 0xf7, 0x46, 0x24, 0xa, - 0xf8, 0xb2, 0x7, 0xf7, 0xc, 0x8c, 0xe5, 0x6f, 0x8a, 0x20, 0xa5, 0x8d, - 0x18, 0x86, 0xf7, 0x3f, 0x5, 0xfc, 0xc8, 0x6, 0x86, 0xfb, 0x3f, 0xa5, - 0x89, 0x8c, 0xf6, 0xdb, 0xa7, 0xf7, 0x14, 0x8a, 0x19, 0xfc, 0xb2, 0x39, - 0xa, 0x92, 0x3b, 0xa, 0xf7, 0xba, 0xf3, 0x3, 0xf7, 0x60, 0x24, 0xa, - 0xf7, 0x60, 0x7, 0xf7, 0x4d, 0xf7, 0xbe, 0x5, 0xca, 0xb2, 0xb0, 0x89, - 0xae, 0x1b, 0x9d, 0xfb, 0x7c, 0x79, 0x7, 0xbf, 0x9b, 0x7f, 0x7c, 0x81, - 0x84, 0x7e, 0x84, 0x80, 0x1f, 0xfb, 0x20, 0xfb, 0x7b, 0xfb, 0x30, 0xf7, - 0x83, 0x5, 0x85, 0x95, 0x88, 0x94, 0x92, 0x1a, 0x9d, 0xa5, 0x94, 0xbf, - 0x1e, 0x9d, 0xfb, 0xbd, 0x79, 0x7, 0xc0, 0xac, 0x64, 0x7b, 0x97, 0x1f, - 0xf7, 0x60, 0xfb, 0xc0, 0x5, 0xfb, 0x64, 0x39, 0xa, 0xdb, 0x8b, 0x9d, - 0xe2, 0xae, 0xf8, 0x21, 0xaa, 0xe2, 0x9d, 0x1, 0xa5, 0xf7, 0xd, 0xf7, - 0x4f, 0xf1, 0xf7, 0x4f, 0xf7, 0xa, 0x3, 0xf7, 0x7c, 0x16, 0xf7, 0xc6, - 0x9d, 0x6, 0x32, 0x7e, 0xb4, 0xb9, 0x1f, 0xf7, 0x21, 0x8a, 0xf7, 0x38, - 0xd5, 0xf7, 0x2d, 0x1a, 0xf7, 0x23, 0xfb, 0x2b, 0xe9, 0xfb, 0x2e, 0x1e, - 0xb9, 0x97, 0xb4, 0xe4, 0x1e, 0x9d, 0xfb, 0xc4, 0x79, 0x7, 0xe4, 0x97, - 0x62, 0x5d, 0x1f, 0xfb, 0x37, 0xfb, 0x25, 0x2f, 0xfb, 0x25, 0xfb, 0x2f, - 0xf7, 0x35, 0x43, 0xf7, 0x27, 0x8c, 0x1f, 0x5d, 0x7e, 0x62, 0x32, 0x1e, - 0xf7, 0x60, 0xf7, 0xe, 0x15, 0xf8, 0x21, 0x7, 0xf7, 0x4, 0xd6, 0x31, - 0xfb, 0x8, 0x3d, 0x5a, 0xfb, 0x5, 0xfb, 0x1e, 0x1f, 0x25, 0x16, 0xfb, - 0x1c, 0x58, 0xf7, 0x4, 0xda, 0xf7, 0x1, 0xce, 0xeb, 0xf7, 0xc, 0x8c, - 0x1f, 0xe, 0xb2, 0xa0, 0x76, 0xf9, 0x35, 0x77, 0x12, 0x82, 0xf7, 0x38, - 0xfb, 0x38, 0xf9, 0x5d, 0xfb, 0x46, 0xf7, 0x35, 0x13, 0xe8, 0x82, 0x16, - 0xf7, 0x7a, 0x9d, 0x6, 0x59, 0x7b, 0x9f, 0xa0, 0x95, 0x90, 0x96, 0x92, - 0x94, 0x1f, 0xf7, 0x39, 0xf7, 0x5f, 0xf7, 0x21, 0xfb, 0x67, 0x5, 0x91, - 0x81, 0x8e, 0x82, 0x83, 0x1a, 0x76, 0x72, 0x7c, 0x56, 0x1e, 0x79, 0x7, - 0x13, 0xd0, 0xf7, 0xc0, 0x9d, 0x6, 0x62, 0x5f, 0xb9, 0x9b, 0x7f, 0x1f, - 0xfb, 0x67, 0xf7, 0xbb, 0xf7, 0x42, 0xf7, 0x65, 0x5, 0x13, 0xf0, 0xae, - 0xa9, 0xc7, 0xaf, 0xa6, 0x1b, 0x9d, 0xfb, 0x7c, 0x79, 0x7, 0xc0, 0x9d, - 0x7e, 0x7a, 0x7d, 0x83, 0x7c, 0x82, 0x7f, 0x1f, 0xfb, 0x20, 0xfb, 0x3f, - 0xfb, 0xf, 0xf7, 0x47, 0x5, 0x84, 0x96, 0x89, 0x95, 0x94, 0x1a, 0x9f, - 0xa4, 0x98, 0xc0, 0x1e, 0x9d, 0xfb, 0xc0, 0x79, 0x7, 0xb8, 0xb7, 0x5b, - 0x7b, 0x97, 0x1f, 0xf7, 0x51, 0xfb, 0x96, 0xfb, 0x5d, 0xfb, 0x88, 0x5, - 0x66, 0x6c, 0x51, 0x69, 0x73, 0x1b, 0xe, 0xf7, 0x4, 0xa0, 0x76, 0xf7, - 0xb6, 0xb3, 0xf7, 0xd9, 0x9d, 0x96, 0x77, 0x12, 0xd2, 0xf7, 0x7, 0xf7, - 0x34, 0xf3, 0xf7, 0x34, 0xf7, 0x7, 0x14, 0xe, 0x13, 0xde, 0xf7, 0x94, - 0x24, 0xa, 0xf7, 0x5a, 0x7, 0xf7, 0x1b, 0xf7, 0x20, 0xad, 0xf7, 0x20, - 0xf7, 0x5, 0x82, 0xe4, 0xcc, 0x1f, 0x9d, 0x7, 0xfb, 0x19, 0x65, 0x3a, - 0xfb, 0x1b, 0xfb, 0x12, 0x29, 0x80, 0x4d, 0x8a, 0x1f, 0xf7, 0x8f, 0x7, - 0x13, 0xee, 0x3c, 0xa, 0xfb, 0x8f, 0x7, 0x4d, 0x8c, 0x29, 0x96, 0xf7, - 0x12, 0x1a, 0x13, 0xde, 0xf7, 0x1e, 0x6c, 0xd9, 0xfb, 0x20, 0x1e, 0x79, - 0x7, 0xd2, 0x7c, 0x33, 0xfb, 0x6, 0xfb, 0x21, 0xf7, 0x1f, 0x6a, 0xf7, - 0x1c, 0x1f, 0xfb, 0x5a, 0x39, 0xa, 0x57, 0x79, 0xad, 0x69, 0xd1, 0xf8, - 0x26, 0xb9, 0x12, 0xb4, 0xf5, 0x13, 0x70, 0xf8, 0x4e, 0xf6, 0x15, 0x49, - 0xae, 0xa5, 0x50, 0xb7, 0x1b, 0xd4, 0x8d, 0xf7, 0x4, 0xb6, 0x1f, 0x79, - 0x6, 0x7d, 0x8c, 0x76, 0x44, 0x6b, 0x1b, 0x69, 0x6b, 0xcb, 0xc1, 0x7d, - 0x1f, 0xf7, 0x7, 0xf7, 0xde, 0x5, 0x33, 0x6, 0x4b, 0xfb, 0x53, 0x5, - 0xdc, 0x7c, 0x55, 0xf7, 0x2, 0xfb, 0x2, 0x1b, 0xfb, 0x22, 0x42, 0xfb, - 0x0, 0xfb, 0x13, 0xfb, 0x35, 0xaf, 0xfb, 0xe, 0xf7, 0x3b, 0xea, 0xe1, - 0xeb, 0xa8, 0x9c, 0x1f, 0x68, 0xf7, 0x8, 0x15, 0x13, 0xb0, 0x20, 0x70, - 0x40, 0x27, 0x4f, 0x1b, 0x2b, 0x89, 0xf7, 0x42, 0xd4, 0xf4, 0x92, 0xe1, - 0xf3, 0xd1, 0xcc, 0xfb, 0x28, 0x38, 0x99, 0x1f, 0xe, 0xfb, 0x5e, 0x76, - 0xf7, 0x61, 0xbb, 0xf8, 0x5, 0xc2, 0xf7, 0x91, 0xad, 0x12, 0xd8, 0xd9, - 0xf7, 0x61, 0xf2, 0x56, 0xf4, 0x13, 0xfa, 0xf7, 0x32, 0xb0, 0x15, 0xbd, - 0x65, 0xc9, 0x79, 0xc6, 0x8c, 0x8, 0xe8, 0x8c, 0xe8, 0xda, 0xf7, 0x1e, - 0x1a, 0xf2, 0x55, 0xe1, 0x2f, 0xb6, 0x1e, 0x13, 0xfc, 0xc8, 0xa2, 0xac, - 0xc7, 0xc8, 0x1a, 0xf7, 0x7, 0x34, 0xbd, 0xfb, 0x0, 0x3c, 0xfb, 0x4, - 0x51, 0x28, 0x1e, 0xfd, 0x23, 0x7, 0x58, 0x80, 0x59, 0x86, 0x58, 0x1e, - 0xe2, 0x6, 0x8e, 0xa4, 0x90, 0xa4, 0xa4, 0x1a, 0x8a, 0xf7, 0x85, 0x15, - 0xf8, 0x8c, 0x7, 0xc7, 0xbc, 0xbd, 0xc0, 0xd6, 0xa6, 0x4f, 0x49, 0x8c, - 0x1e, 0x5c, 0x8c, 0x7b, 0x3b, 0x65, 0x7a, 0x77, 0x91, 0x74, 0x1b, 0x77, - 0x78, 0x81, 0x74, 0x73, 0x9e, 0x81, 0xa0, 0x1f, 0xa3, 0x9e, 0x91, 0x9f, - 0x1b, 0x13, 0xfa, 0xc0, 0xb9, 0xfb, 0x3a, 0x4b, 0x40, 0x6a, 0x4b, 0x31, - 0x59, 0x54, 0xa6, 0xaf, 0x70, 0x1f, 0xe, 0xfb, 0xa4, 0xfb, 0x60, 0x76, - 0xf9, 0x1b, 0xd8, 0x1, 0x90, 0x9b, 0xf7, 0x32, 0xf7, 0xb, 0x3, 0xf7, - 0x83, 0xc7, 0x15, 0x78, 0x5a, 0x62, 0x2b, 0x45, 0x1a, 0x63, 0x9e, 0x6d, - 0xa7, 0xbd, 0xa1, 0xca, 0xc1, 0xcf, 0x7c, 0xd4, 0x88, 0xa4, 0x1e, 0xf7, - 0x60, 0xf8, 0x4d, 0x5, 0x23, 0x6, 0xfb, 0x5, 0xfb, 0xf9, 0x5, 0x89, - 0x6, 0xe8, 0x79, 0x6c, 0xf7, 0x9c, 0xfb, 0x0, 0x1b, 0x4c, 0x65, 0x54, - 0x3d, 0x8a, 0x1f, 0x74, 0x8b, 0x77, 0x8a, 0x7b, 0x1e, 0x9b, 0x6, 0xb3, - 0x8e, 0x9a, 0xd6, 0xc0, 0x1b, 0xef, 0xad, 0xfb, 0x9f, 0x2c, 0x98, 0x1f, - 0xe, 0xfb, 0x51, 0x78, 0xba, 0xf9, 0x34, 0xb3, 0x12, 0xb3, 0xee, 0x61, - 0xbc, 0xf7, 0x82, 0xec, 0x13, 0xe8, 0xf7, 0x93, 0xf8, 0x53, 0x15, 0xfb, - 0x2b, 0x68, 0x4b, 0x34, 0xfb, 0x17, 0x1a, 0x25, 0xe7, 0xfb, 0x3, 0xf7, - 0x18, 0xf7, 0xb, 0xed, 0xf7, 0x0, 0xf7, 0x8, 0xf7, 0xf, 0x54, 0xcf, - 0x43, 0xc4, 0x1e, 0x13, 0xd8, 0x21, 0xde, 0x25, 0xb9, 0xcf, 0x1a, 0xa7, - 0xb1, 0xa1, 0xad, 0xb2, 0xa4, 0x7b, 0x77, 0x9d, 0x1e, 0x6b, 0xa9, 0x9a, - 0x60, 0xb5, 0x1b, 0xa8, 0xa3, 0x9c, 0xaa, 0xcf, 0xfb, 0xa, 0xae, 0x3d, - 0x4b, 0x38, 0x78, 0x40, 0x33, 0xf7, 0x2, 0x58, 0xbb, 0x4f, 0x1f, 0xaa, - 0x6e, 0x15, 0x97, 0x88, 0xe6, 0x24, 0x86, 0xfb, 0x2, 0x8, 0x32, 0x87, - 0x5f, 0x36, 0x41, 0x1b, 0x66, 0x6d, 0xa4, 0xad, 0x77, 0x1f, 0x13, 0xe8, - 0x76, 0xae, 0x7c, 0xb7, 0xb1, 0x1a, 0xef, 0xb0, 0xe0, 0xf7, 0x2, 0xa8, - 0x1e, 0xe, 0xfb, 0x88, 0x78, 0xb9, 0xf7, 0x58, 0xba, 0x64, 0xbc, 0xf7, - 0x4e, 0xaf, 0x12, 0xa1, 0xf3, 0x30, 0xe6, 0x13, 0xb8, 0xf7, 0x19, 0xf7, - 0x90, 0x15, 0x65, 0x86, 0x42, 0x66, 0x30, 0x1a, 0x28, 0xf7, 0x4, 0x64, - 0xe6, 0xf7, 0x4, 0xe5, 0xa7, 0xed, 0x1e, 0x71, 0x92, 0x5, 0x49, 0x77, - 0x63, 0x76, 0x4f, 0x1b, 0x4d, 0x8a, 0x2e, 0xa6, 0xdb, 0x1a, 0xc5, 0xb0, - 0xb3, 0xce, 0x1e, 0x13, 0xd8, 0xa6, 0x97, 0x83, 0xb0, 0x1b, 0x9d, 0x9b, - 0x94, 0xa2, 0x1f, 0x13, 0xb8, 0x9d, 0x79, 0x92, 0x79, 0x1e, 0x13, 0xd4, - 0x67, 0x7c, 0x81, 0x6f, 0x1b, 0x5a, 0x5a, 0xb1, 0xcf, 0xb2, 0xb3, 0xbe, - 0xc0, 0x1f, 0xaf, 0x8c, 0xab, 0x76, 0x92, 0x6e, 0x8, 0x5c, 0x96, 0xa8, - 0x86, 0x9e, 0x1b, 0xa4, 0x9c, 0xa2, 0xa5, 0xc5, 0x30, 0xa9, 0x53, 0x37, - 0xfb, 0x16, 0x67, 0x20, 0x1f, 0x8c, 0x55, 0xb7, 0x69, 0xc0, 0x78, 0x8, - 0xe, 0xfb, 0x51, 0xfb, 0x75, 0xef, 0xf7, 0x17, 0xed, 0xf9, 0x20, 0x77, - 0x12, 0xc7, 0xbb, 0x85, 0xc6, 0xf7, 0x9c, 0xb5, 0x13, 0xf4, 0xf7, 0x59, - 0xf8, 0xdc, 0x15, 0x3c, 0x33, 0x51, 0xfb, 0x35, 0x2d, 0x1a, 0xfb, 0x54, - 0xf7, 0x0, 0x60, 0xf7, 0x44, 0xb8, 0xaf, 0x77, 0x62, 0x70, 0x76, 0x43, - 0x51, 0x98, 0x1e, 0x8e, 0x7c, 0x68, 0x98, 0x72, 0x1b, 0x63, 0x7d, 0x6f, - 0x77, 0x63, 0xc0, 0x7f, 0xaa, 0xf1, 0xcb, 0xd9, 0xf7, 0xd, 0xf7, 0x12, - 0xfb, 0x13, 0x8f, 0xfb, 0x2, 0xfb, 0x2, 0x7f, 0xec, 0xb7, 0xf7, 0x20, - 0xce, 0xf7, 0x2, 0xcc, 0xe2, 0x1f, 0xbe, 0x86, 0xf7, 0x23, 0xbc, 0xc5, - 0x1a, 0xab, 0x77, 0x9a, 0x73, 0x4f, 0x27, 0x25, 0x7c, 0x7f, 0x1e, 0x13, - 0xec, 0x72, 0x8e, 0x6b, 0xa2, 0xae, 0x1a, 0xb2, 0xb5, 0x9e, 0x96, 0x90, - 0x1e, 0x89, 0x9d, 0x5, 0x67, 0x41, 0x58, 0x5d, 0x72, 0xa1, 0x66, 0xd4, - 0x7e, 0x1f, 0xe, 0x3b, 0xfb, 0x49, 0x76, 0xf7, 0x73, 0x76, 0xf8, 0x4f, - 0xd2, 0x62, 0x76, 0x12, 0x8b, 0x9d, 0xf2, 0xe0, 0xf7, 0x61, 0xe4, 0x13, - 0xee, 0xf7, 0xd, 0x16, 0xe0, 0xf7, 0xeb, 0x6, 0xb7, 0x9e, 0xac, 0xc3, - 0xbe, 0x1b, 0xc6, 0xb3, 0x74, 0x41, 0x8e, 0x1f, 0x99, 0xfc, 0x5c, 0x8d, - 0x56, 0x92, 0x7c, 0x8f, 0x73, 0x19, 0xe4, 0x6, 0x82, 0x9e, 0x84, 0xb7, - 0x97, 0x1a, 0x80, 0xf8, 0x85, 0x5, 0xda, 0x89, 0x5b, 0xcc, 0x39, 0x1b, - 0x40, 0x4f, 0x6f, 0x33, 0x6d, 0x1f, 0xbf, 0x8e, 0x6c, 0xc3, 0x53, 0x1b, - 0x36, 0x69, 0x39, 0x4b, 0x1f, 0x9d, 0x6, 0x13, 0xde, 0xa9, 0x8c, 0xa0, - 0xc9, 0xae, 0x1b, 0xb3, 0x91, 0x52, 0x58, 0x1f, 0xe, 0xfb, 0x36, 0x7a, - 0xb1, 0xf7, 0xbb, 0xbf, 0xf7, 0xb4, 0xad, 0x1, 0xb6, 0xf1, 0xf7, 0x86, - 0xed, 0x3, 0xf7, 0x9f, 0x7a, 0x15, 0xf7, 0x3f, 0xba, 0xf7, 0x71, 0xf7, - 0x1d, 0xf7, 0x24, 0x4f, 0xf7, 0x61, 0xfb, 0x34, 0xfb, 0x35, 0x4e, 0xfb, - 0x70, 0xfb, 0x11, 0xfb, 0x18, 0xc5, 0xfb, 0x7a, 0xf7, 0x3a, 0x1f, 0xfb, - 0xe, 0xf8, 0x15, 0x15, 0xf7, 0x1d, 0xae, 0xf7, 0x2b, 0xe1, 0xf0, 0x9e, - 0xfb, 0x49, 0x20, 0x8c, 0x1e, 0xfb, 0x85, 0x57, 0x15, 0xf7, 0x84, 0x6, - 0x32, 0x71, 0xfb, 0x62, 0x2e, 0x2c, 0x71, 0xf7, 0x65, 0xe1, 0x1e, 0xe, - 0xfb, 0xf6, 0x7a, 0xbd, 0xf8, 0x6a, 0x77, 0x1, 0xe3, 0xe0, 0x3, 0xf7, - 0xd5, 0xf0, 0x15, 0x78, 0x6, 0x6e, 0x89, 0x7e, 0x64, 0x61, 0x1b, 0x5a, - 0x88, 0xce, 0xae, 0x1f, 0xf8, 0x4, 0x7, 0x57, 0x78, 0x6c, 0x7b, 0x31, - 0x79, 0x8, 0x77, 0x7, 0xab, 0xc3, 0x8f, 0xfb, 0x17, 0x1f, 0xfb, 0x78, - 0x7, 0x5f, 0xa7, 0x5b, 0xcd, 0xf5, 0x93, 0xe8, 0xa4, 0x90, 0x1e, 0xe, - 0xa0, 0x76, 0xf8, 0x41, 0xd3, 0x48, 0xa0, 0x12, 0xf7, 0xb, 0xd6, 0x13, - 0xd0, 0xf7, 0xb, 0x16, 0xd6, 0xf7, 0x96, 0x6, 0xf7, 0x2f, 0xfb, 0x55, - 0x5, 0x92, 0x82, 0x90, 0x81, 0x83, 0x1a, 0x80, 0x81, 0x82, 0x6f, 0x1e, - 0x79, 0xf7, 0x7f, 0x9d, 0x7, 0x50, 0x71, 0xaf, 0xb0, 0x6c, 0x1f, 0xfb, - 0x3c, 0xf7, 0x6a, 0xbe, 0xbe, 0xaa, 0xa6, 0xab, 0xa6, 0x19, 0x99, 0x9c, - 0x96, 0x90, 0x95, 0x1b, 0x97, 0x8a, 0x95, 0x81, 0x9e, 0x7e, 0x93, 0x84, - 0x9b, 0x87, 0x9b, 0x8c, 0x8, 0xa4, 0x8c, 0xa5, 0x98, 0xb0, 0x1a, 0xaf, - 0x62, 0x9e, 0x6a, 0x6f, 0x6d, 0x80, 0x7b, 0x78, 0x1e, 0x41, 0x4f, 0x48, - 0x49, 0x43, 0x4b, 0x8, 0x13, 0x50, 0xf7, 0x6d, 0x7, 0x13, 0xb0, 0x39, - 0x69, 0x65, 0x82, 0x62, 0x88, 0x8, 0x76, 0x7, 0xae, 0x8a, 0xbe, 0x85, - 0x35, 0x1a, 0xe, 0x7a, 0xe2, 0xf8, 0xe5, 0xd7, 0x1, 0xc6, 0x9e, 0xf7, - 0x67, 0xb1, 0xf7, 0x5e, 0x9e, 0x3, 0xa3, 0x7a, 0x15, 0xe7, 0x6, 0xf7, - 0x3f, 0xf8, 0x12, 0x5, 0x8d, 0x6, 0xfb, 0x24, 0xaa, 0x89, 0xfb, 0x82, - 0xf7, 0xf, 0x1b, 0xe1, 0xa0, 0xf6, 0xd4, 0x1f, 0x78, 0x6, 0x70, 0x8a, - 0x77, 0x41, 0x57, 0x1b, 0x62, 0x6e, 0xba, 0xb6, 0x7f, 0x1f, 0x5f, 0xf7, - 0x30, 0x65, 0xf7, 0x51, 0x60, 0xf7, 0x3a, 0x8, 0xb5, 0x80, 0x6b, 0xad, - 0x5a, 0x1b, 0x45, 0x6d, 0xfb, 0x12, 0x56, 0x8d, 0x1f, 0x9e, 0x6, 0xa3, - 0x8a, 0xa3, 0xda, 0xc1, 0x1b, 0xbf, 0xaa, 0x2f, 0x42, 0x9c, 0x1f, 0xe, - 0xfb, 0x36, 0x90, 0x76, 0xf8, 0x9f, 0x77, 0x1, 0xf7, 0x7c, 0x7b, 0x15, - 0xb0, 0x6, 0xa1, 0xb7, 0xe2, 0xf7, 0x44, 0xc1, 0xf7, 0x2, 0x8, 0xa5, - 0xc0, 0x9c, 0xb5, 0xb5, 0x1a, 0xa6, 0x82, 0xa8, 0x5d, 0x58, 0x89, 0x50, - 0x5a, 0x94, 0x1e, 0x8f, 0x75, 0x8e, 0x7a, 0x7c, 0x1a, 0x6d, 0x83, 0x74, - 0x78, 0x66, 0x1e, 0x3f, 0xfb, 0x2c, 0xfb, 0x32, 0xf8, 0x28, 0x51, 0x72, - 0x88, 0x8c, 0x45, 0x84, 0x19, 0x78, 0x7, 0xb4, 0x86, 0xa4, 0x87, 0x99, - 0x67, 0x8, 0xe, 0xfb, 0x52, 0xfb, 0x5f, 0x76, 0xf7, 0x70, 0xeb, 0xf7, - 0xb8, 0xe7, 0xf7, 0xb6, 0x77, 0x12, 0xa6, 0xbc, 0x7f, 0xc0, 0x74, 0xb2, - 0xf7, 0xb3, 0xbc, 0x13, 0xfb, 0xf7, 0x2d, 0xf8, 0x2e, 0x15, 0x42, 0x50, - 0x56, 0x53, 0x31, 0x1a, 0xfb, 0x43, 0xf7, 0x37, 0x69, 0xf7, 0x28, 0xa7, - 0xc1, 0x89, 0x51, 0x53, 0x64, 0x6d, 0x68, 0x97, 0x1e, 0x6a, 0x96, 0x72, - 0x90, 0x79, 0x89, 0x8, 0x6d, 0x89, 0x7c, 0x7b, 0x6e, 0x1a, 0x60, 0xc0, - 0x81, 0xa6, 0xf4, 0xc6, 0xdc, 0xf7, 0xd, 0xd7, 0x43, 0xb1, 0x3d, 0xfb, - 0x3d, 0x41, 0xc8, 0xce, 0xe1, 0xe1, 0xd5, 0xb2, 0x9b, 0x1e, 0x85, 0x8c, - 0xb8, 0x85, 0xbb, 0x1b, 0xc6, 0xc1, 0x97, 0xb9, 0xa6, 0x6b, 0x92, 0x72, - 0x51, 0x39, 0x6c, 0x7c, 0x71, 0x1f, 0x64, 0xa3, 0x7e, 0xac, 0xab, 0x1a, - 0xb5, 0xa8, 0xb3, 0xaa, 0x98, 0x1e, 0xad, 0x85, 0xf7, 0x19, 0xb0, 0xc0, - 0x1a, 0xa1, 0x7e, 0x9b, 0x6f, 0x5a, 0x45, 0x4f, 0x73, 0x6e, 0x1e, 0x13, - 0xf5, 0x6e, 0x8d, 0x72, 0x9c, 0xa7, 0x1a, 0xac, 0x9e, 0x96, 0x97, 0x90, - 0x1e, 0x89, 0x9d, 0x5, 0x58, 0x6c, 0x6c, 0x62, 0x64, 0xb6, 0x6e, 0xa9, - 0x83, 0x1f, 0x13, 0xfb, 0x6f, 0x6b, 0x7c, 0x68, 0x68, 0x1a, 0x66, 0x9d, - 0x66, 0xb4, 0x6b, 0x1e, 0xe, 0x78, 0xb7, 0xf8, 0x4f, 0xaa, 0x1, 0xae, - 0xea, 0xf7, 0xad, 0xe5, 0x3, 0xae, 0xf7, 0x80, 0x15, 0xfb, 0xe, 0xef, - 0xfb, 0x19, 0xf7, 0x21, 0xf7, 0x23, 0xdd, 0xf7, 0x17, 0xf7, 0x2a, 0xf7, - 0x24, 0x20, 0xe8, 0xfb, 0x1b, 0xfb, 0x1d, 0x34, 0xfb, 0x1b, 0xfb, 0x14, - 0x1e, 0xea, 0xaa, 0x15, 0xde, 0xa1, 0xf7, 0xa, 0xf0, 0xf7, 0xd, 0xb0, - 0xfb, 0x34, 0x29, 0x33, 0x68, 0x2a, 0x30, 0xfb, 0x2, 0x5e, 0xf7, 0x28, - 0xe9, 0x1e, 0xe, 0x78, 0xe9, 0xf7, 0xda, 0xe1, 0x1, 0x95, 0xf7, 0xdc, - 0x15, 0x9c, 0x6, 0xc4, 0xab, 0x9c, 0x9b, 0xa7, 0x1b, 0xc4, 0x6, 0x6e, - 0xfb, 0x6c, 0x8b, 0x6d, 0x7c, 0x73, 0x8, 0x77, 0x6b, 0x64, 0x72, 0x63, - 0x1a, 0x7d, 0x95, 0x64, 0xb8, 0xb2, 0x9a, 0xa7, 0xb4, 0x94, 0x1e, 0x97, - 0xc1, 0x9d, 0xf7, 0x2, 0x9b, 0xf7, 0x4f, 0x8, 0xf7, 0x5, 0x6, 0x7a, - 0xfb, 0x35, 0x5, 0x3a, 0x82, 0x87, 0xfb, 0x46, 0xf7, 0x9, 0x1b, 0xd3, - 0xaf, 0xd8, 0xf2, 0x1f, 0x76, 0x6, 0x76, 0x78, 0x4a, 0x5c, 0x66, 0x75, - 0xbf, 0xb2, 0xb1, 0x8b, 0xdb, 0x97, 0xf7, 0x9, 0x1e, 0xf7, 0x1a, 0xe1, - 0xfc, 0x11, 0x6, 0x33, 0x63, 0xfb, 0x0, 0x58, 0x80, 0x1f, 0xe, 0xfb, - 0x65, 0x76, 0xf9, 0x36, 0xc2, 0x1, 0xc6, 0xe3, 0xf7, 0x91, 0xe5, 0x3, - 0xf7, 0x27, 0xb3, 0x15, 0xb0, 0x69, 0xab, 0x6f, 0xca, 0x8c, 0x8, 0xf7, - 0x2b, 0x8d, 0xc7, 0xef, 0xf7, 0x4a, 0x1a, 0xf7, 0x4f, 0x45, 0xbc, 0xfb, - 0x2d, 0xfb, 0x1c, 0x40, 0x26, 0xfb, 0xa, 0x8c, 0x1e, 0x8f, 0xfc, 0x3b, - 0x5, 0x6d, 0x87, 0x69, 0x84, 0x74, 0x1e, 0xe2, 0x6, 0x95, 0xb3, 0x8b, - 0xae, 0xb3, 0x1a, 0x88, 0xf7, 0x70, 0x15, 0x85, 0xf7, 0x7b, 0x5, 0xc2, - 0x8a, 0xab, 0xc0, 0xc2, 0x1b, 0xf7, 0x18, 0xb7, 0x4f, 0xfb, 0x22, 0xfb, - 0x7, 0x6d, 0x30, 0xfb, 0xd, 0x64, 0x5d, 0xa2, 0xb9, 0x77, 0x1f, 0xe, - 0xfb, 0x88, 0xfb, 0x68, 0x76, 0xf7, 0x75, 0xf4, 0xf7, 0xbe, 0xf4, 0x3b, - 0xdb, 0x12, 0xb3, 0xb5, 0xf7, 0xd0, 0xb1, 0x13, 0xdc, 0xb3, 0xf7, 0x66, - 0x15, 0xfb, 0x15, 0xd4, 0x32, 0xf7, 0x1b, 0xf7, 0xa, 0xab, 0x74, 0x62, - 0x68, 0x78, 0x66, 0x65, 0x8a, 0x1e, 0x7d, 0x7c, 0x90, 0x91, 0x7b, 0x1f, - 0x91, 0x7b, 0x7a, 0x92, 0x7b, 0x1b, 0x72, 0x71, 0x78, 0x68, 0x6c, 0xaa, - 0x70, 0xbe, 0xd3, 0xe1, 0xd2, 0xf7, 0x5, 0xf1, 0x50, 0xb7, 0x34, 0x20, - 0x26, 0x88, 0xf7, 0x1f, 0xf1, 0xca, 0xdf, 0xdc, 0x8c, 0x1f, 0x9f, 0xa0, - 0x84, 0x84, 0xa0, 0x1f, 0x13, 0xec, 0x85, 0x9c, 0x9c, 0x86, 0x9a, 0x1b, - 0xb9, 0xa9, 0x9c, 0xa7, 0xbe, 0x52, 0x94, 0x62, 0xfb, 0x38, 0xfb, 0x3, - 0xfb, 0x14, 0xfb, 0x36, 0x1f, 0xe, 0x3b, 0x76, 0xb7, 0xf8, 0x1b, 0xe1, - 0x1, 0xa9, 0xf0, 0xf7, 0xc2, 0xe9, 0x3, 0xf8, 0xe0, 0xf8, 0x32, 0x15, - 0xe1, 0xfb, 0x97, 0x7, 0xfb, 0x14, 0xfb, 0x3f, 0x42, 0xfb, 0x31, 0xfb, - 0x17, 0xd9, 0xfb, 0x34, 0xf7, 0x43, 0xf7, 0x4e, 0xc5, 0xf7, 0xc, 0xec, - 0xee, 0x46, 0xd1, 0x34, 0xba, 0x1f, 0x8d, 0x7, 0x56, 0x16, 0xe0, 0x40, - 0xa9, 0x48, 0xfb, 0x0, 0x1a, 0x3e, 0x60, 0x4b, 0x3b, 0x2b, 0x38, 0xf7, - 0xd, 0xf7, 0xa, 0xf1, 0xe7, 0xbd, 0xea, 0x1e, 0xe, 0xfb, 0x88, 0x78, - 0xe8, 0xf7, 0xe1, 0xe8, 0x1, 0xf7, 0x4a, 0xd5, 0x3, 0xa7, 0xf7, 0xc1, - 0x15, 0xaf, 0x98, 0xb0, 0xd1, 0xad, 0x1b, 0xe6, 0x6, 0x85, 0x56, 0x7c, - 0xfb, 0x11, 0x28, 0x1a, 0x23, 0xb5, 0x5e, 0xc6, 0xe8, 0x9d, 0xf7, 0x7, - 0xcd, 0x87, 0x1e, 0x79, 0x6, 0x84, 0x62, 0x7d, 0x5b, 0x5d, 0x8c, 0x58, - 0x8c, 0x81, 0xca, 0x8f, 0xbd, 0x9b, 0xf7, 0x70, 0x18, 0xf7, 0x2e, 0x8a, - 0x5, 0xe8, 0xfb, 0x7f, 0x7, 0x66, 0x60, 0x7b, 0x6f, 0x72, 0x1f, 0x6b, - 0x67, 0x7c, 0x62, 0x76, 0x3d, 0x8, 0xe, 0x20, 0x79, 0xbb, 0xf8, 0x71, - 0x77, 0x1, 0xf7, 0x21, 0xe1, 0xf7, 0x79, 0xda, 0x3, 0x92, 0xf7, 0xee, - 0x15, 0xa1, 0x6, 0x97, 0xac, 0x9e, 0xbd, 0xaf, 0x8c, 0x8, 0x98, 0x96, - 0x7b, 0x7f, 0x8d, 0x1f, 0x92, 0x66, 0x97, 0xfb, 0x2, 0x40, 0x1a, 0x26, - 0xc7, 0x2a, 0xf7, 0xc, 0xf7, 0x21, 0xd4, 0xf7, 0x9, 0xf7, 0x26, 0xf7, - 0x3, 0x65, 0xe2, 0xfb, 0x2c, 0xcb, 0x1e, 0x85, 0x7a, 0x5, 0x9d, 0x89, - 0xee, 0x4f, 0xfb, 0x47, 0x1a, 0x28, 0x73, 0xfb, 0xc, 0x2f, 0x4b, 0x5a, - 0xcb, 0xd9, 0xc7, 0x82, 0xf7, 0x14, 0x81, 0xd3, 0x1e, 0xbc, 0x84, 0x6e, - 0xa5, 0x65, 0x1b, 0x38, 0x69, 0x2f, 0x46, 0x81, 0x1f, 0xe, 0xfb, 0x36, - 0xfb, 0x5f, 0x76, 0xfa, 0x13, 0x77, 0x1, 0xa6, 0xe6, 0xf7, 0x8, 0xbb, - 0x5e, 0xb8, 0xf7, 0xc, 0xe3, 0x3, 0xf7, 0x85, 0x7e, 0x15, 0x8d, 0xfb, - 0x5b, 0xb2, 0x7f, 0x5, 0xf7, 0x67, 0x7, 0xb5, 0xf7, 0x3a, 0xaa, 0xf7, - 0x7c, 0xf7, 0x46, 0xfb, 0x2a, 0xd3, 0x51, 0x1f, 0xf7, 0x2e, 0x7, 0x5a, - 0x9c, 0x8d, 0xfb, 0x3f, 0x5, 0x68, 0xfb, 0x41, 0x63, 0xfb, 0x70, 0xfb, - 0x52, 0xf7, 0x24, 0x4c, 0xd1, 0x1f, 0xb4, 0xb0, 0x15, 0xf8, 0x4c, 0x7, - 0x9b, 0xf3, 0x55, 0xfb, 0x3c, 0xfb, 0x48, 0x28, 0x67, 0x76, 0x89, 0x1f, - 0x61, 0x16, 0x72, 0x2a, 0xb8, 0xf7, 0x40, 0xf7, 0x3e, 0xe9, 0xc0, 0xa2, - 0x1f, 0xe, 0xfb, 0x7b, 0xe3, 0xf8, 0xca, 0xd7, 0x1, 0x98, 0xfb, 0x7b, - 0x15, 0xf1, 0x6, 0xf7, 0x2e, 0xf7, 0xae, 0x5, 0x8d, 0x6, 0x3a, 0x9a, - 0xa1, 0xfb, 0x5d, 0xe9, 0x1b, 0xe7, 0xa5, 0xf7, 0x1f, 0xbf, 0x8d, 0x1f, - 0x78, 0x6, 0x6f, 0x8a, 0x6c, 0x40, 0x4e, 0x1b, 0x3c, 0x71, 0xf7, 0x5c, - 0xb5, 0x82, 0x1f, 0xf7, 0x76, 0xf8, 0x24, 0x5, 0x25, 0x6, 0xfb, 0x2f, - 0xfb, 0xa1, 0x5, 0xf7, 0x20, 0x73, 0x79, 0xf7, 0x15, 0x25, 0x1b, 0x34, - 0x7b, 0xfb, 0x1f, 0x5a, 0x85, 0x1f, 0x9d, 0x6, 0xa8, 0x90, 0xa3, 0xde, - 0xbe, 0x1b, 0xdb, 0xa8, 0xfb, 0x43, 0x46, 0x9e, 0x1f, 0xe, 0x8e, 0xfb, - 0x63, 0x76, 0xf9, 0x6c, 0x77, 0x1, 0xf7, 0xd9, 0xca, 0x3, 0xf7, 0xd9, - 0x70, 0x15, 0xfb, 0x5d, 0xca, 0xf7, 0x5d, 0x7, 0xc0, 0x96, 0xcd, 0xa3, - 0xba, 0xca, 0xaa, 0xb5, 0xa3, 0xbe, 0x97, 0xf7, 0x81, 0x8e, 0xc2, 0xaa, - 0x8f, 0xb9, 0x95, 0x8, 0x9d, 0x7, 0x97, 0x75, 0x69, 0x8b, 0x7f, 0x1b, - 0xfb, 0x17, 0x8b, 0xfb, 0x8b, 0xfb, 0x11, 0x7d, 0x1f, 0x83, 0x3f, 0x57, - 0x6d, 0x63, 0x81, 0x8, 0xf8, 0x6f, 0x4c, 0xfc, 0x6f, 0x7, 0x63, 0x95, - 0x57, 0xa9, 0x83, 0xd7, 0x8, 0xf7, 0x11, 0x7e, 0x95, 0xf7, 0x8b, 0xfb, - 0x22, 0x1b, 0x7f, 0x69, 0x8b, 0x7f, 0x75, 0x1f, 0x79, 0x7, 0xb9, 0x81, - 0xaa, 0x87, 0x8e, 0x54, 0x97, 0xfb, 0x81, 0xa3, 0x58, 0xaa, 0x61, 0xba, - 0x4c, 0xcd, 0x73, 0xc0, 0x80, 0x8, 0xe, 0x8e, 0x7a, 0xb9, 0xf8, 0x6b, - 0x77, 0x1, 0xb5, 0xf2, 0xf7, 0x39, 0xf5, 0xf7, 0x38, 0xf3, 0x3, 0xf7, - 0xff, 0xd3, 0x15, 0x5c, 0xa9, 0xc3, 0x61, 0xc5, 0x1b, 0xf7, 0x5, 0xcb, - 0xf7, 0x9, 0xf6, 0xf7, 0x2a, 0x36, 0xf7, 0x23, 0xfb, 0x3e, 0x1f, 0x7a, - 0x7, 0xf7, 0x7, 0x74, 0xaf, 0xfb, 0x8, 0x26, 0x1a, 0x46, 0x83, 0xfb, - 0x25, 0x39, 0x41, 0x6b, 0xe2, 0xa4, 0x8e, 0x1e, 0x97, 0x98, 0x9c, 0xd4, - 0xce, 0x1a, 0xc9, 0x7f, 0xc4, 0x62, 0x62, 0x7f, 0x52, 0x4d, 0x48, 0x9c, - 0x42, 0x97, 0x7e, 0x1e, 0x73, 0x8d, 0x6e, 0x33, 0x41, 0x1b, 0x3d, 0x7c, - 0xf7, 0x18, 0xd0, 0xf3, 0xab, 0xf7, 0x11, 0xf7, 0xc, 0xa3, 0x1f, 0x9c, - 0x7, 0xfb, 0x3a, 0x32, 0xfb, 0x15, 0xfb, 0x26, 0xfb, 0x2, 0xc6, 0xfb, - 0x18, 0xf7, 0x10, 0xc3, 0xc0, 0xb7, 0xb8, 0xa8, 0x1f, 0xe, 0x57, 0x79, - 0xa7, 0xf8, 0x15, 0xd1, 0xf7, 0x43, 0xb4, 0x12, 0xf7, 0x1d, 0xdd, 0x48, - 0xe5, 0x92, 0xad, 0xf7, 0x50, 0xd9, 0x13, 0xee, 0x9d, 0xf7, 0xd6, 0x15, - 0x90, 0x89, 0x90, 0x8a, 0x90, 0x89, 0x8, 0xb1, 0xa1, 0xa4, 0xb3, 0xaf, - 0x1b, 0xa4, 0x94, 0x78, 0x77, 0x8d, 0x1f, 0x13, 0xf6, 0x8f, 0x4f, 0x78, - 0x42, 0x4e, 0x1a, 0xfb, 0x6, 0xc4, 0x49, 0xf2, 0xf7, 0x37, 0xe4, 0xf7, - 0x28, 0xf7, 0x51, 0x1e, 0xd5, 0x5d, 0x5, 0xc0, 0x7, 0x41, 0xb0, 0x5, - 0xf2, 0x66, 0xf7, 0x6b, 0xfb, 0x3a, 0x48, 0x6d, 0x60, 0x55, 0xfb, 0xa, - 0xf0, 0x56, 0xf7, 0xd, 0x49, 0x1e, 0x37, 0x8c, 0x7e, 0xfb, 0x91, 0xfb, - 0x26, 0x1b, 0x47, 0x71, 0xc4, 0xcc, 0x1f, 0x13, 0xee, 0xdb, 0xa2, 0xda, - 0xdb, 0x1a, 0xbf, 0x62, 0xb5, 0x5c, 0x53, 0x4c, 0x42, 0x45, 0x7a, 0x1e, - 0xf8, 0x58, 0xcf, 0x15, 0x63, 0x9f, 0xfb, 0x27, 0xcd, 0xf0, 0x1a, 0xad, - 0x9f, 0xa8, 0xb3, 0xf7, 0xa, 0x94, 0xfb, 0x73, 0x70, 0x1e, 0xe, 0x4c, - 0xa0, 0x76, 0xf8, 0x8b, 0xf7, 0x4a, 0x66, 0xb0, 0x12, 0xf7, 0x84, 0xf3, - 0x13, 0xb0, 0xf7, 0x2b, 0x24, 0xa, 0x8a, 0xf7, 0x6a, 0x5, 0xda, 0x91, - 0xb1, 0xf7, 0x9b, 0xf7, 0x4, 0x1b, 0x9d, 0x9a, 0x81, 0x7d, 0x1f, 0x75, - 0x65, 0x72, 0x6d, 0x1a, 0x13, 0xd0, 0x6b, 0xa5, 0x7f, 0xa6, 0xad, 0xa7, - 0xb4, 0xb4, 0xcc, 0x6d, 0xae, 0x56, 0xfb, 0x1d, 0x58, 0xfb, 0x2a, 0x2a, - 0x76, 0x1e, 0xf7, 0x31, 0x7d, 0xfb, 0x1d, 0xe1, 0xfb, 0x27, 0x1b, 0x7e, - 0x82, 0x83, 0x84, 0x87, 0x8f, 0x87, 0x92, 0x89, 0x1f, 0xf7, 0x59, 0x5e, - 0xac, 0x2e, 0x8c, 0xfb, 0x6b, 0x8c, 0xfb, 0x67, 0x18, 0x28, 0xa, 0xe, - 0x3b, 0xfb, 0x5f, 0x76, 0xf7, 0x68, 0xb1, 0xf8, 0x21, 0xd7, 0x1, 0xaf, - 0xf4, 0xf7, 0x1a, 0xcc, 0xf7, 0x27, 0xef, 0x3, 0xf7, 0xa9, 0x7f, 0x15, - 0xfb, 0x68, 0xca, 0xf7, 0x68, 0x7, 0xf7, 0x1b, 0x8a, 0xf7, 0x4, 0xee, - 0xf7, 0x27, 0x1a, 0xf7, 0x27, 0x49, 0xf7, 0xb, 0xfb, 0x10, 0x26, 0x73, - 0x48, 0x3e, 0x8d, 0x1e, 0x8e, 0xfb, 0xdd, 0x5, 0x28, 0x66, 0xf7, 0x7, - 0xf0, 0xd7, 0x9b, 0xf7, 0x15, 0xe6, 0xad, 0x1f, 0x9d, 0x7, 0xfb, 0x10, - 0x33, 0xfb, 0x1d, 0xfb, 0x10, 0xfb, 0x36, 0xf7, 0x4, 0x32, 0xf7, 0x15, - 0x8c, 0x1f, 0xca, 0xb1, 0x15, 0xf7, 0xde, 0x7, 0xa5, 0x8c, 0x8a, 0xb4, - 0xb7, 0x1b, 0xd8, 0xa5, 0x28, 0x32, 0xfb, 0x8, 0x53, 0x2e, 0x30, 0x1f, - 0xe, 0xa9, 0x79, 0xb4, 0xf8, 0x6f, 0xe0, 0x1, 0xae, 0xf5, 0xf7, 0x37, - 0xec, 0xf7, 0x40, 0xed, 0x3, 0xf7, 0xf8, 0xd0, 0x15, 0x61, 0x9b, 0xbc, - 0x5e, 0xd6, 0x1b, 0xf7, 0xc, 0xc2, 0xf7, 0x1d, 0xf7, 0x11, 0xec, 0x3e, - 0xf7, 0x17, 0x24, 0xa5, 0x1f, 0xf7, 0x48, 0x8c, 0x5, 0xdf, 0xfc, 0x9d, - 0x7, 0x6b, 0x47, 0x66, 0x25, 0x65, 0x1f, 0x9d, 0x87, 0xc6, 0xb7, 0xab, - 0x94, 0xe4, 0x92, 0x19, 0x26, 0x4e, 0x41, 0x36, 0xfb, 0x6, 0x1a, 0xfb, - 0x14, 0xb7, 0xfb, 0x16, 0xf7, 0x1b, 0xc5, 0xca, 0xbb, 0xb2, 0xa0, 0x1e, - 0x72, 0xd4, 0x15, 0x62, 0x8d, 0x5e, 0x3d, 0x52, 0x1b, 0x36, 0x86, 0xf7, - 0x2c, 0xd1, 0xf7, 0xa, 0xc2, 0xf0, 0xed, 0xad, 0x1f, 0xf7, 0x10, 0x6, - 0xf0, 0x6d, 0xc1, 0xfb, 0x9, 0x23, 0x1a, 0x3d, 0x8b, 0xfb, 0x22, 0x30, - 0x4e, 0x5e, 0xcf, 0xba, 0x8d, 0x1e, 0x98, 0xc5, 0x95, 0xd1, 0xad, 0x1a, - 0xab, 0x8d, 0xdc, 0x5a, 0x57, 0x8e, 0x3f, 0x67, 0x8a, 0x1e, 0x8a, 0x60, - 0x95, 0x41, 0x9d, 0x5d, 0x8, 0xe, 0xfb, 0x73, 0xf7, 0x1a, 0x76, 0xf7, - 0xfc, 0x77, 0x1, 0xbd, 0xf7, 0xfc, 0x3, 0xf7, 0x7a, 0xf7, 0x5, 0x15, - 0xee, 0xdc, 0xdb, 0xef, 0xee, 0x3a, 0xdc, 0x28, 0x27, 0x3b, 0x3a, 0x28, - 0x27, 0xdb, 0x3b, 0xef, 0x1f, 0xe, 0xf7, 0xd1, 0x7a, 0xf7, 0x4, 0x1, - 0xf7, 0x3, 0xf7, 0x4, 0xf7, 0x71, 0xf7, 0x4, 0xf7, 0x71, 0xf7, 0x4, - 0x14, 0x70, 0xf7, 0x3, 0xb1, 0x15, 0x29, 0xa, 0xf7, 0xe1, 0x16, 0x29, - 0xa, 0xf7, 0xe1, 0x16, 0x29, 0xa, 0xe, 0xfc, 0x48, 0xf8, 0x74, 0x76, - 0xf7, 0xa8, 0x77, 0x1, 0xa9, 0xf8, 0x7d, 0x15, 0x38, 0xa, 0x59, 0xa, - 0x1e, 0xf7, 0x31, 0xf7, 0x5a, 0x40, 0xa, 0x6d, 0xa1, 0x6c, 0x7b, 0x7d, - 0x85, 0x81, 0x87, 0x1e, 0xe, 0xfb, 0xa4, 0xf8, 0x74, 0x76, 0xf7, 0xaa, - 0x77, 0x1, 0xb9, 0xf8, 0x5f, 0x15, 0x59, 0xa, 0x1f, 0xf7, 0x32, 0x36, - 0xa, 0x23, 0xfb, 0x7c, 0x5, 0x38, 0xa, 0x1e, 0xf7, 0x54, 0x16, 0x59, - 0xa, 0x1f, 0xf7, 0x31, 0x36, 0xa, 0x24, 0xfb, 0x7c, 0x5, 0x38, 0xa, - 0x1e, 0xe, 0xfc, 0x98, 0x94, 0x76, 0xf9, 0x45, 0x77, 0x1, 0xfb, 0x10, - 0x7f, 0x15, 0xf8, 0x64, 0xf9, 0x45, 0x5, 0x53, 0x6, 0xfc, 0x64, 0xfd, - 0x45, 0x5, 0xe, 0xce, 0x7f, 0xca, 0xf7, 0x54, 0xca, 0xca, 0xca, 0xf7, - 0x52, 0xca, 0x1, 0xf7, 0x7, 0xce, 0x3, 0x9f, 0xf7, 0x87, 0x15, 0xf7, - 0x0, 0x6, 0xfb, 0x26, 0xb0, 0xf7, 0x1b, 0xfb, 0x1, 0xf7, 0x39, 0x1b, - 0xea, 0xd6, 0xb0, 0xb3, 0xbd, 0x1f, 0xe5, 0x7, 0x4b, 0x57, 0x39, 0x63, - 0x35, 0x1b, 0xfb, 0x11, 0x25, 0xdb, 0xf7, 0x4, 0x64, 0x1f, 0xf7, 0xf8, - 0x6, 0xa9, 0xca, 0x5, 0xfc, 0x25, 0x6, 0x8a, 0x96, 0x8a, 0x94, 0x95, - 0x1a, 0x95, 0x8c, 0x95, 0x8c, 0x98, 0x1e, 0xf8, 0x42, 0x6, 0xa9, 0xca, - 0x5, 0xfc, 0x51, 0x6, 0xf7, 0x0, 0xad, 0xf6, 0xdd, 0xf7, 0x11, 0x1b, - 0xe5, 0xdc, 0x61, 0x4f, 0xbc, 0x1f, 0xa8, 0xc8, 0x5, 0xcb, 0x4b, 0x31, - 0xb3, 0x2c, 0x1b, 0xfb, 0x35, 0xfb, 0x1f, 0x22, 0xfb, 0x28, 0x66, 0x1f, - 0x3d, 0x6, 0x6d, 0x4c, 0x5, 0xeb, 0x6, 0x8a, 0x7e, 0x8b, 0x82, 0x81, - 0x1a, 0x82, 0x8b, 0x82, 0x8c, 0x7e, 0x1e, 0x49, 0x6, 0xe, 0x8e, 0x56, - 0xde, 0xad, 0xcf, 0xf7, 0x70, 0xa2, 0xf7, 0xa9, 0xe3, 0x1, 0xc4, 0xb2, - 0xf7, 0xac, 0xd1, 0xc3, 0xd7, 0x3, 0xa5, 0xb7, 0x15, 0x98, 0xa6, 0x9b, - 0x92, 0x9b, 0x1b, 0x99, 0xc2, 0x6f, 0x6e, 0xc3, 0x1f, 0x6d, 0xc5, 0xc6, - 0x6d, 0x99, 0x1b, 0xac, 0xf7, 0x60, 0xf7, 0x3e, 0xcd, 0xb0, 0x5d, 0xd0, - 0x65, 0xcf, 0x1f, 0x71, 0xba, 0x75, 0xb9, 0xaf, 0x1a, 0x9f, 0xda, 0xe7, - 0xb3, 0xc3, 0x1e, 0xb1, 0x42, 0x25, 0xbb, 0x32, 0x1b, 0xfb, 0x5, 0xfb, - 0x17, 0x44, 0xfb, 0x14, 0xfb, 0x6, 0xef, 0x3f, 0xf7, 0x0, 0x8c, 0x1f, - 0x8d, 0xa2, 0x5, 0x41, 0x8a, 0x2a, 0xcd, 0xdc, 0x1a, 0xdf, 0xd0, 0xb8, - 0xdd, 0x8d, 0x1e, 0xcd, 0x8d, 0xf1, 0x64, 0xbe, 0x71, 0x8, 0x39, 0x23, - 0x83, 0x75, 0x74, 0x1a, 0x63, 0xa2, 0x5c, 0xa5, 0x5d, 0x1e, 0xae, 0x4d, - 0xb5, 0x4d, 0x5c, 0x1a, 0x5f, 0x4b, 0x4d, 0x5b, 0x77, 0x57, 0xa7, 0xa6, - 0x57, 0x1e, 0xa5, 0x59, 0x5c, 0xa0, 0x77, 0x1b, 0x72, 0x2d, 0x50, 0x7f, - 0x77, 0x1f, 0xe, 0xf7, 0xc4, 0xfb, 0x67, 0xac, 0xf7, 0x39, 0xaf, 0xf8, - 0x4b, 0xb5, 0xd0, 0x77, 0x1, 0xf7, 0x33, 0xab, 0x9e, 0xdb, 0xb8, 0xd3, - 0xac, 0xb9, 0xf7, 0xb2, 0xed, 0x3, 0xf7, 0x8c, 0xf7, 0x10, 0x15, 0x67, - 0x4b, 0x56, 0x50, 0x40, 0x1a, 0x45, 0xa8, 0x48, 0xe5, 0xee, 0xa9, 0xdb, - 0xd8, 0xee, 0x64, 0xbf, 0x6a, 0xde, 0x1e, 0xef, 0xd6, 0xf7, 0x5c, 0xf7, - 0x4a, 0xf0, 0x1b, 0xb0, 0xa3, 0x6b, 0x46, 0xfb, 0x26, 0x26, 0xfb, 0x54, - 0x2f, 0x48, 0x71, 0xac, 0xae, 0xa2, 0x9e, 0x91, 0x97, 0x1f, 0xa7, 0x8c, - 0xa0, 0xa7, 0xa3, 0x1a, 0xa3, 0x76, 0x9e, 0x73, 0x8a, 0x1e, 0x5b, 0x8a, - 0x6a, 0x5e, 0x58, 0x1a, 0x43, 0xbe, 0x50, 0xe4, 0xf7, 0x41, 0xf7, 0x9, - 0xf7, 0x87, 0xf7, 0x6, 0xd9, 0x5a, 0xdd, 0x33, 0xfb, 0x3e, 0xfb, 0x1f, - 0xfb, 0x50, 0x21, 0x25, 0x1e, 0x75, 0xb5, 0x81, 0xa6, 0xa5, 0x1a, 0xda, - 0xf7, 0x16, 0xf7, 0x1, 0xc9, 0xcb, 0x1e, 0x82, 0x9b, 0x5, 0x27, 0x48, - 0xfb, 0x37, 0xfb, 0x8, 0xfb, 0x11, 0x1a, 0x8a, 0x56, 0xa4, 0x58, 0x99, - 0x66, 0x8, 0x9a, 0x6d, 0x15, 0xc1, 0xfb, 0x0, 0x9d, 0x5d, 0x65, 0x1a, - 0x63, 0x7f, 0x63, 0x5c, 0x5c, 0x65, 0xb7, 0xcb, 0xbc, 0xaf, 0xc5, 0xaf, - 0xc4, 0x1e, 0xe, 0xf7, 0x4, 0x91, 0x76, 0xc2, 0xdf, 0xf8, 0xa4, 0xdd, - 0x52, 0xc4, 0x12, 0xa5, 0xac, 0xf7, 0x24, 0xc0, 0xe5, 0xe3, 0x13, 0xee, - 0xd1, 0xac, 0x15, 0x92, 0x86, 0x90, 0x86, 0x92, 0x86, 0x8, 0x9a, 0x9e, - 0x9b, 0x92, 0x97, 0x1b, 0xaa, 0xa7, 0x64, 0x7b, 0xa4, 0x1f, 0xf7, 0x2c, - 0xc3, 0xc8, 0xf7, 0x42, 0xf7, 0x19, 0x1a, 0x13, 0xae, 0xd0, 0x8b, 0xe5, - 0x7c, 0xe3, 0x1e, 0xb6, 0xce, 0x98, 0x99, 0xa0, 0x1b, 0xa2, 0xf3, 0x2a, - 0x84, 0x92, 0x1f, 0xfb, 0x55, 0xfb, 0x24, 0x96, 0x77, 0x5, 0xd3, 0x9e, - 0x39, 0x21, 0xfb, 0xd, 0x9a, 0x4c, 0xd3, 0x70, 0x1f, 0xf7, 0x2, 0xe3, - 0x7c, 0xa2, 0x5, 0x86, 0x7f, 0x6f, 0x79, 0x7c, 0x1b, 0x69, 0x86, 0xb4, - 0xed, 0xef, 0x82, 0xf7, 0x1, 0x46, 0xa3, 0x1f, 0xf7, 0x4a, 0xf7, 0x1f, - 0x5, 0x13, 0x1e, 0xf7, 0x26, 0xfb, 0x38, 0x8a, 0x8f, 0x7b, 0x1b, 0x79, - 0xfb, 0xe, 0x2f, 0x78, 0x71, 0x1f, 0xce, 0x76, 0x41, 0xb7, 0x44, 0x1b, - 0xfb, 0x1d, 0x3d, 0x47, 0xfb, 0x11, 0x2e, 0xdd, 0x5b, 0xd3, 0x63, 0x1f, - 0x9a, 0x82, 0x93, 0x81, 0x81, 0x1a, 0x78, 0x77, 0x7f, 0x85, 0x82, 0x1e, - 0xa2, 0x7b, 0x5, 0xb6, 0xb8, 0x98, 0xa0, 0x9e, 0x1a, 0xa9, 0x60, 0xa9, - 0x5e, 0xa6, 0x1e, 0x57, 0xa8, 0x52, 0xa9, 0xcc, 0x1a, 0x13, 0xde, 0xc8, - 0xd5, 0xb8, 0xc4, 0xf7, 0x1c, 0x9e, 0xfb, 0x29, 0xfb, 0x1f, 0xfb, 0x15, - 0x64, 0xfb, 0x25, 0x60, 0x50, 0x1e, 0xc6, 0x35, 0x9d, 0x94, 0x7a, 0x1b, - 0x75, 0x88, 0x40, 0x36, 0x80, 0x88, 0x8, 0xe, 0xe0, 0x8b, 0xf0, 0xf8, - 0xbf, 0xab, 0x12, 0xad, 0x9a, 0x91, 0xf7, 0x8, 0xf8, 0x40, 0xf7, 0x9, - 0x90, 0x9a, 0x17, 0xad, 0x16, 0x13, 0xdc, 0xf7, 0xb8, 0x6, 0x7b, 0xf7, - 0x2c, 0x5, 0xfb, 0x1, 0xa9, 0x6d, 0xf7, 0xf, 0xf4, 0x1a, 0xf7, 0x16, - 0xdb, 0xf7, 0x8, 0xf7, 0x1a, 0xf7, 0x20, 0xd5, 0xfb, 0x8, 0xfb, 0x1a, - 0x27, 0x65, 0xfb, 0x14, 0x26, 0x71, 0x1e, 0x7b, 0xfb, 0x2c, 0x5, 0x13, - 0xfc, 0xf7, 0xb8, 0xf7, 0x36, 0x6, 0x13, 0xdc, 0x7c, 0x6, 0x5a, 0x7f, - 0x75, 0x7f, 0x61, 0x1b, 0xfb, 0x28, 0x6, 0x8d, 0xa7, 0x5, 0xf7, 0x1e, - 0xa1, 0xda, 0xf7, 0x18, 0xf7, 0x10, 0x1a, 0xf7, 0x52, 0xfb, 0x3f, 0xe6, - 0xfb, 0x34, 0xfb, 0x33, 0xfb, 0x3e, 0x2f, 0xfb, 0x4d, 0x8a, 0x1e, 0x8a, - 0xfb, 0x12, 0xd6, 0xfb, 0x1b, 0xf7, 0x22, 0x76, 0x8d, 0x6f, 0x18, 0x13, - 0xa0, 0xfb, 0x28, 0x6, 0x61, 0x75, 0x97, 0xbc, 0x7f, 0x1f, 0x7c, 0x6, - 0xe, 0xf7, 0x20, 0x8e, 0x76, 0xb2, 0x76, 0xf8, 0x69, 0xf7, 0x18, 0xc4, - 0x77, 0x12, 0xf7, 0x43, 0xe6, 0x13, 0x78, 0xf7, 0x43, 0x16, 0xf7, 0x47, - 0x6, 0x9b, 0xb6, 0x86, 0x9e, 0x99, 0x1a, 0xac, 0x6e, 0xb0, 0x70, 0xb1, - 0x1e, 0x75, 0xab, 0x76, 0xac, 0xac, 0x1a, 0xaa, 0xa6, 0xa1, 0xa0, 0xa1, - 0x1e, 0x13, 0xb8, 0xf7, 0x7c, 0xfb, 0xa1, 0xbb, 0x4f, 0x97, 0x5d, 0x8, - 0x9e, 0x93, 0xaf, 0xab, 0xcd, 0x1a, 0xc3, 0x6a, 0xb1, 0x6b, 0xac, 0x1e, - 0x6b, 0xab, 0x6c, 0xa6, 0xac, 0x1a, 0xd9, 0xd0, 0xe0, 0xc1, 0x7e, 0x1e, - 0x90, 0xe0, 0x5, 0xad, 0x86, 0x74, 0xa4, 0x6a, 0x1b, 0x7a, 0x7d, 0x8b, - 0x8c, 0x7f, 0x1f, 0x55, 0x8e, 0x87, 0x96, 0x90, 0xb5, 0x8, 0x5c, 0x84, - 0x76, 0x54, 0x5b, 0x1a, 0x47, 0xcb, 0x7d, 0xc2, 0x8e, 0x1e, 0x62, 0x5d, - 0x7f, 0x61, 0x77, 0x5d, 0xfb, 0x6c, 0xf7, 0x92, 0x79, 0x99, 0x83, 0xbb, - 0x8, 0x70, 0x82, 0x65, 0x5a, 0x60, 0x1a, 0x64, 0xd0, 0x40, 0xb4, 0x5d, - 0x1e, 0x4b, 0x4a, 0x5d, 0x6f, 0x3e, 0x1a, 0x74, 0xa0, 0x71, 0x9b, 0x6a, - 0x1e, 0x95, 0x76, 0x94, 0x73, 0x6f, 0x1a, 0x6e, 0x67, 0x8c, 0x77, 0x1e, - 0xe, 0x46, 0xa, 0xab, 0xfa, 0x22, 0x3, 0xab, 0xf7, 0x8c, 0x15, 0xe9, - 0x31, 0xd1, 0x45, 0xe2, 0x24, 0xae, 0xae, 0x18, 0x5b, 0xc7, 0x2d, 0xf1, - 0x64, 0xb1, 0x8, 0xf9, 0xb9, 0xc3, 0xfd, 0xb9, 0x6, 0xb2, 0xb1, 0xe9, - 0xf1, 0xbb, 0xc7, 0x68, 0xae, 0x18, 0x34, 0x24, 0x45, 0x45, 0x2d, 0x31, - 0x8, 0xe, 0x3b, 0xa0, 0x76, 0xfa, 0x22, 0x49, 0xa, 0xf7, 0xac, 0x16, - 0xc3, 0xf9, 0xb9, 0x6, 0xb1, 0x64, 0xf1, 0x2d, 0xc7, 0x5b, 0xae, 0xae, - 0x18, 0x24, 0xe2, 0x45, 0xd1, 0x31, 0xe9, 0x31, 0x2d, 0x45, 0x45, 0x24, - 0x34, 0xae, 0x68, 0x18, 0xc7, 0xbb, 0xf1, 0xe9, 0xb1, 0xb2, 0x8, 0xe, - 0x46, 0xa, 0xbc, 0xf7, 0x70, 0x15, 0xf9, 0xb9, 0x6, 0x64, 0x65, 0x2d, - 0x25, 0x5b, 0x4f, 0xae, 0x68, 0x18, 0xe2, 0xf2, 0xd1, 0xd1, 0xe9, 0xe5, - 0x2d, 0xe5, 0x45, 0xd1, 0x34, 0xf2, 0x68, 0x68, 0x18, 0xbb, 0x4f, 0xe9, - 0x25, 0xb2, 0x65, 0x8, 0xfd, 0xb9, 0x6, 0xe, 0x3b, 0x8a, 0x76, 0xfa, - 0x22, 0x49, 0xa, 0xb8, 0xf7, 0x79, 0x15, 0xf2, 0x34, 0xd1, 0x45, 0xe5, - 0x2d, 0xe5, 0xe9, 0xd1, 0xd1, 0xf2, 0xe2, 0x68, 0xae, 0x18, 0x4f, 0x5b, - 0x25, 0x2d, 0x65, 0x64, 0x8, 0xf9, 0xb9, 0x53, 0xfd, 0xb9, 0x7, 0x65, - 0xb2, 0x25, 0xe9, 0x4f, 0xbb, 0x8, 0xe, 0xf7, 0xfb, 0x91, 0x76, 0xf7, - 0x81, 0xbf, 0xf7, 0x81, 0x77, 0x1, 0xa3, 0xfa, 0x7c, 0x3, 0xa3, 0xf7, - 0x8c, 0x15, 0xf7, 0x7, 0x25, 0xc2, 0x48, 0xda, 0x2d, 0xb0, 0xab, 0x18, - 0x47, 0xea, 0x6f, 0xa0, 0x36, 0xe4, 0x8, 0xf9, 0xaa, 0x6, 0x36, 0x32, - 0x70, 0x75, 0x46, 0x2d, 0xb0, 0x6b, 0x18, 0xda, 0xe9, 0xc2, 0xce, 0xf7, - 0x7, 0xf1, 0xfb, 0x7, 0xf1, 0x54, 0xce, 0x3c, 0xe9, 0x66, 0x6b, 0x18, - 0xd0, 0x2e, 0xa5, 0x73, 0xe1, 0x33, 0x8, 0xfd, 0xaa, 0x6, 0xe0, 0xe4, - 0xa7, 0xa0, 0xcf, 0xea, 0x66, 0xab, 0x18, 0x3c, 0x2d, 0x54, 0x48, 0xfb, - 0x7, 0x25, 0x8, 0xe, 0x72, 0x90, 0x76, 0xe9, 0xc2, 0xf8, 0x84, 0x77, - 0x1, 0xf8, 0xb7, 0xc2, 0x3, 0x9a, 0xf5, 0x15, 0xf7, 0x3a, 0xfb, 0xe, - 0x5, 0xe9, 0xf8, 0x39, 0xf8, 0xbb, 0x54, 0xfc, 0x84, 0xfc, 0x2, 0xe9, - 0x7, 0xe, 0xf7, 0xc4, 0xeb, 0xc0, 0xf7, 0x5c, 0xc0, 0xd9, 0xac, 0x8b, - 0x77, 0x1, 0xa9, 0xfa, 0x21, 0x3, 0xa9, 0xf7, 0x8d, 0x15, 0xf7, 0xa, - 0xfb, 0x3, 0xb4, 0x61, 0xe5, 0xfb, 0x3, 0xb4, 0xac, 0x18, 0x4d, 0xd9, - 0x5, 0xf9, 0x3d, 0xc0, 0xfd, 0x65, 0x6, 0x23, 0xef, 0xf3, 0xef, 0x5, - 0xf9, 0x65, 0xc0, 0xfd, 0x3d, 0x6, 0xc9, 0xd9, 0x62, 0xac, 0x31, 0xfb, - 0x3, 0x62, 0x61, 0xfb, 0xa, 0xfb, 0x3, 0x19, 0xe, 0x3b, 0xa2, 0x76, - 0xfa, 0x21, 0x77, 0x1, 0xf7, 0x3e, 0xc0, 0xf7, 0x34, 0xc0, 0x3, 0xf7, - 0x3e, 0x8d, 0x15, 0xc0, 0xf9, 0x7c, 0x6, 0xdb, 0xdc, 0xdb, 0x3a, 0x5, - 0xfd, 0x7c, 0xc0, 0xf9, 0x4c, 0x7, 0xed, 0x3e, 0xac, 0xb4, 0xfb, 0x3, - 0xe5, 0x61, 0xb4, 0xfb, 0x3, 0xf7, 0xa, 0x19, 0xfb, 0x3, 0xfb, 0xa, - 0x61, 0x62, 0xfb, 0x3, 0x31, 0xac, 0x62, 0x18, 0xed, 0xd8, 0x5, 0xe, - 0xf7, 0xc4, 0xee, 0xc0, 0xf7, 0x51, 0xc0, 0x1, 0xb8, 0xee, 0x15, 0xf9, - 0x3d, 0x6, 0x48, 0x35, 0xb9, 0x6a, 0xe5, 0xf7, 0x3, 0xb4, 0xb5, 0xf7, - 0xa, 0xf7, 0x3, 0x19, 0xfb, 0xa, 0xf7, 0x3, 0x62, 0xb5, 0x31, 0xf7, - 0x3, 0x5d, 0x6a, 0x18, 0xce, 0x3a, 0x5, 0xfd, 0x3d, 0x56, 0xf9, 0x68, - 0x6, 0xf0, 0x2a, 0x26, 0x2f, 0x5, 0xfd, 0x68, 0x6, 0xe, 0x3b, 0x8d, - 0x76, 0xfa, 0x21, 0x77, 0x1, 0xf7, 0x43, 0xc0, 0xf7, 0x34, 0xc0, 0x3, - 0xb7, 0xf7, 0x7a, 0x15, 0xf7, 0x3, 0x31, 0xb5, 0x62, 0xf7, 0x3, 0xfb, - 0xa, 0xf7, 0x3, 0xf7, 0xa, 0xb5, 0xb4, 0xf7, 0x3, 0xe5, 0x6a, 0xb4, - 0x18, 0x29, 0x3e, 0x5, 0xf9, 0x4c, 0x56, 0xfd, 0x7c, 0x7, 0x3b, 0x3a, - 0x3b, 0xdc, 0x5, 0xf9, 0x7c, 0x56, 0xfd, 0x4c, 0x7, 0x29, 0xd8, 0x5, - 0xe, 0xf7, 0xfb, 0xf7, 0x1, 0xbd, 0xf7, 0x40, 0xbd, 0x1, 0xa6, 0xfa, - 0x78, 0x3, 0xa6, 0xf7, 0x89, 0x15, 0xf7, 0x8, 0x21, 0xb2, 0x61, 0xed, - 0xfb, 0x9, 0xb3, 0xad, 0x18, 0x3f, 0xea, 0x5, 0xf8, 0xc6, 0x6, 0x3f, - 0x2c, 0xb3, 0x69, 0xed, 0xf7, 0x9, 0xb2, 0xb5, 0xf7, 0x8, 0xf5, 0x19, - 0xfb, 0x8, 0xf5, 0x64, 0xb5, 0x29, 0xf7, 0x9, 0x63, 0x69, 0x18, 0xd7, - 0x2c, 0x5, 0xfc, 0xc6, 0x6, 0xd7, 0xea, 0x63, 0xad, 0x29, 0xfb, 0x9, - 0x64, 0x61, 0xfb, 0x8, 0x21, 0x19, 0xf7, 0x41, 0x35, 0x15, 0x34, 0xe1, - 0xe2, 0xe1, 0x5, 0xf9, 0x1f, 0x6, 0xe2, 0x35, 0x34, 0x35, 0x5, 0xe, - 0xa9, 0xa0, 0x76, 0xf8, 0x5d, 0xc2, 0xf7, 0x55, 0x77, 0x1, 0xf7, 0xdd, - 0x16, 0xc6, 0x6, 0xf7, 0xb9, 0xf9, 0x55, 0x5, 0x52, 0x6, 0x39, 0xfb, - 0x55, 0x5, 0xfc, 0x5, 0x6, 0x36, 0xf7, 0x55, 0x5, 0x52, 0x6, 0xf7, - 0xde, 0xfd, 0xf, 0x15, 0xfb, 0x38, 0xf8, 0x17, 0x5, 0xf7, 0xd6, 0x6, - 0xe, 0xfb, 0x51, 0x77, 0xa8, 0xf8, 0x0, 0xb2, 0xf7, 0xb2, 0xbb, 0x1, - 0xa5, 0xe1, 0xf7, 0x9f, 0xde, 0x3, 0xf8, 0xf, 0xf7, 0xec, 0x15, 0xbf, - 0x48, 0x6e, 0x9b, 0x50, 0x1b, 0xfb, 0xa, 0x3b, 0x27, 0xfb, 0xe, 0xfb, - 0x10, 0xdf, 0x35, 0xf6, 0xf7, 0x56, 0xbe, 0xf7, 0xb4, 0xf7, 0x11, 0xf7, - 0x30, 0x48, 0xf7, 0x59, 0xfb, 0x59, 0x57, 0x58, 0x7b, 0x7e, 0x6d, 0x1f, - 0xb2, 0x59, 0x5, 0xa0, 0xb4, 0xa4, 0x95, 0xd2, 0x1b, 0xf1, 0xb6, 0xfb, - 0x36, 0xfb, 0x54, 0x84, 0x1f, 0x83, 0x68, 0x15, 0x2b, 0x77, 0x7a, 0xfb, - 0x60, 0xfb, 0x1b, 0x1b, 0x40, 0x7f, 0xea, 0xb7, 0xd9, 0xb1, 0xf7, 0x27, - 0xf7, 0x0, 0xc8, 0xaa, 0x62, 0x74, 0xa0, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, - 0xb3, 0xc2, 0xf7, 0x93, 0xc2, 0x1, 0xf8, 0x3b, 0xc2, 0x3, 0xa4, 0x16, - 0xf8, 0x59, 0xf9, 0x57, 0xfc, 0x59, 0x54, 0xf8, 0x22, 0xfb, 0x93, 0xfb, - 0xf6, 0x54, 0xf7, 0xf6, 0xfb, 0xb3, 0xfc, 0x22, 0x6, 0xe, 0xf7, 0x20, - 0x73, 0xc0, 0xf9, 0x14, 0xbd, 0x1, 0xb2, 0xc3, 0xf9, 0xb, 0xc2, 0x3, - 0xf7, 0x6c, 0xf7, 0x0, 0x15, 0xf8, 0x42, 0xf8, 0x56, 0x5, 0xba, 0x55, - 0xac, 0x40, 0x3c, 0x1a, 0xfb, 0x40, 0xfb, 0x20, 0xfb, 0x29, 0xfb, 0x40, - 0x3c, 0x48, 0xad, 0xb8, 0x57, 0x1e, 0x66, 0xb1, 0x15, 0x73, 0xa8, 0x4f, - 0xc5, 0xf7, 0xe, 0x1a, 0xf7, 0x2e, 0xf7, 0x24, 0xf7, 0x34, 0xf7, 0x3f, - 0xd7, 0xd0, 0x6d, 0x5d, 0xc2, 0x1e, 0xfc, 0xcb, 0xfc, 0xdc, 0x15, 0xac, - 0x6a, 0xee, 0xe5, 0x5, 0x53, 0xca, 0xde, 0x69, 0xe8, 0x1b, 0xf7, 0x5f, - 0xf7, 0x38, 0xf7, 0x3f, 0xf7, 0x5f, 0xe8, 0x65, 0xe4, 0x51, 0xcc, 0x1f, - 0xe4, 0xe3, 0x67, 0xad, 0x33, 0x34, 0x5, 0xc2, 0x4b, 0x37, 0xab, 0x2f, - 0x1b, 0xfb, 0x5f, 0xfb, 0x3c, 0xfb, 0x3f, 0xfb, 0x55, 0xfb, 0x10, 0xbc, - 0x3b, 0xbd, 0x5b, 0x1f, 0xe, 0x44, 0x8b, 0xbc, 0xf9, 0x13, 0x77, 0x1, - 0x91, 0xf8, 0xee, 0x3, 0x91, 0x16, 0xf8, 0xee, 0x6, 0xfb, 0xc3, 0xf9, - 0x44, 0x5, 0xfb, 0x88, 0xfd, 0x13, 0x15, 0xf7, 0x6e, 0xf8, 0x68, 0xf7, - 0x5b, 0xfc, 0x68, 0x5, 0xe, 0xa9, 0x8d, 0x76, 0xf9, 0x42, 0xbe, 0x1, - 0xaf, 0xf9, 0x19, 0x3, 0xf7, 0xe5, 0x78, 0x15, 0xf7, 0xec, 0xf9, 0x75, - 0x5, 0xfd, 0x19, 0x6, 0xf7, 0xe9, 0xfc, 0xc0, 0x15, 0xfb, 0x62, 0xf8, - 0x8d, 0x5, 0xf8, 0x47, 0x6, 0xe, 0xa9, 0x8b, 0xc1, 0xf7, 0x2d, 0xc1, - 0xf7, 0x2d, 0xc1, 0x1, 0xb8, 0xf8, 0x60, 0x14, 0xe0, 0xef, 0xf7, 0x63, - 0x15, 0xf8, 0x29, 0xc1, 0xfc, 0x29, 0x6, 0xe2, 0x95, 0xd7, 0xcd, 0xdd, - 0x1b, 0xf7, 0x81, 0xc1, 0xfb, 0x81, 0x6, 0xfb, 0x2a, 0x42, 0xfb, 0xd, - 0xfb, 0x5, 0xfb, 0x6, 0xd7, 0xfb, 0xc, 0xf7, 0x27, 0x1f, 0xf7, 0x81, - 0xc1, 0xfb, 0x81, 0x6, 0x39, 0x3f, 0xcd, 0xe2, 0x81, 0x1f, 0xe, 0xa9, - 0x66, 0x76, 0xc5, 0xc1, 0xf7, 0x2d, 0xc1, 0xf7, 0x2d, 0xc1, 0xe2, 0x77, - 0x1, 0xb8, 0xc2, 0x3, 0xe9, 0x6a, 0x15, 0xb7, 0x72, 0xb8, 0xd8, 0x5, - 0x80, 0x9a, 0xa9, 0x83, 0xa1, 0x1b, 0xf7, 0x93, 0xc1, 0xfb, 0x89, 0x6, - 0x7f, 0x73, 0x8d, 0x95, 0x7c, 0x1f, 0xdb, 0xf7, 0x21, 0x5, 0xf7, 0x6c, - 0xc1, 0xfb, 0x4e, 0x6, 0xe2, 0xf7, 0x2d, 0x5, 0xee, 0xc1, 0x47, 0x6, - 0xae, 0xc9, 0x5d, 0xa4, 0x5a, 0x34, 0x5, 0xfb, 0x8, 0x6, 0x29, 0xfb, - 0xa, 0x2e, 0xfb, 0x1b, 0x38, 0xa7, 0x57, 0xcc, 0x4f, 0x1f, 0x65, 0xf7, - 0x6c, 0x15, 0xd2, 0x91, 0xd6, 0xdf, 0xd5, 0x1b, 0xe8, 0x6, 0x32, 0xfb, - 0x2f, 0x5, 0x2e, 0xfb, 0x3b, 0x15, 0x6e, 0xa6, 0x70, 0xb3, 0x83, 0xb9, - 0x8, 0xf7, 0x14, 0x6, 0xe, 0xfb, 0x88, 0x7a, 0xba, 0xf7, 0x4b, 0xc2, - 0xf7, 0x4a, 0xbd, 0x1, 0xf7, 0xd4, 0xe9, 0x3, 0xbb, 0x8e, 0x15, 0x85, - 0x9d, 0xab, 0x7d, 0xbe, 0x1b, 0xf7, 0x22, 0xf7, 0xf, 0xf7, 0x1, 0xf7, - 0x3d, 0xe3, 0x50, 0xf7, 0x2b, 0xfb, 0x43, 0x6c, 0x69, 0x88, 0x82, 0x64, - 0x1f, 0x60, 0x7, 0x8e, 0x98, 0x99, 0x8d, 0x98, 0x1b, 0xf0, 0xf2, 0x45, - 0xfb, 0x4, 0x1f, 0xfb, 0x5c, 0x54, 0xf7, 0x5a, 0x6, 0x24, 0x2f, 0x3b, - 0x25, 0x72, 0x71, 0x8f, 0x94, 0x72, 0x1e, 0xe, 0xf7, 0x20, 0x26, 0xa2, - 0xf9, 0xba, 0xa2, 0x1, 0xf7, 0xe, 0xf7, 0x5, 0xf7, 0xfa, 0xf7, 0x5, - 0x3, 0xa4, 0x3d, 0x15, 0x74, 0xf7, 0xc7, 0xa2, 0x7, 0x50, 0x65, 0xa0, - 0xd1, 0x1f, 0xf9, 0x43, 0xf7, 0xfa, 0xfd, 0x43, 0x7, 0x45, 0x65, 0x76, - 0x51, 0x1e, 0x74, 0xf7, 0xc6, 0xa2, 0x7, 0x50, 0x65, 0xa0, 0xd1, 0x1f, - 0xf8, 0xf2, 0x7, 0xe8, 0xd0, 0x9b, 0xa7, 0x1e, 0xa2, 0xfd, 0x9e, 0x74, - 0x7, 0xa7, 0xd0, 0x7b, 0x2e, 0x1f, 0xfc, 0xf2, 0x7, 0x45, 0x66, 0x76, - 0x4f, 0x1e, 0xe, 0xa9, 0x27, 0xf2, 0xf9, 0x4d, 0xb8, 0x1, 0xf8, 0xef, - 0x9f, 0x3, 0x99, 0xfb, 0x0, 0x15, 0x9f, 0xa6, 0x93, 0x9f, 0x1b, 0xf8, - 0x78, 0x8e, 0x5, 0xa4, 0xaf, 0x84, 0x87, 0xa5, 0x1f, 0x98, 0xf1, 0x90, - 0x9f, 0xa4, 0xf1, 0x8, 0x74, 0x6, 0x32, 0x68, 0x6b, 0x73, 0x3d, 0x1b, - 0xfb, 0xfd, 0x6, 0xf7, 0xba, 0xf7, 0xe7, 0xfb, 0xa5, 0xf7, 0xfa, 0x5, - 0xf7, 0x91, 0x6, 0xf7, 0x14, 0x9a, 0x5a, 0x4a, 0x9f, 0x1f, 0x9f, 0x6, - 0x85, 0xf7, 0x33, 0x5, 0xfc, 0x85, 0x6, 0x69, 0x65, 0x90, 0x8d, 0x69, - 0x1f, 0xf7, 0xf1, 0xfc, 0x5a, 0x5, 0xe, 0xf7, 0x7d, 0xc2, 0x1, 0x96, - 0xf7, 0x7d, 0x15, 0x42, 0xa, 0xe, 0xfb, 0x4b, 0xf7, 0x2f, 0x76, 0xf7, - 0x4f, 0xb9, 0x9e, 0xdb, 0xe0, 0x77, 0x1, 0xf7, 0x81, 0x9d, 0x3, 0xcc, - 0xf7, 0x94, 0x15, 0x75, 0x9e, 0x7f, 0x9f, 0xa2, 0x93, 0xa0, 0xa1, 0x9f, - 0x1e, 0x9e, 0xa0, 0x97, 0x96, 0xab, 0x9f, 0x8, 0x8e, 0x90, 0x92, 0x8c, - 0x8d, 0x1b, 0x91, 0x8a, 0x7f, 0x87, 0x76, 0x86, 0x7a, 0x86, 0x7c, 0x1f, - 0x83, 0x73, 0x80, 0x77, 0x6d, 0x1a, 0x74, 0x96, 0x76, 0xa6, 0xa5, 0x95, - 0xa2, 0xa0, 0x8c, 0x1e, 0xa9, 0x81, 0x9f, 0x83, 0xa4, 0x1e, 0x86, 0x9a, - 0x87, 0x9b, 0xa0, 0x1a, 0x8f, 0x89, 0x96, 0x91, 0x8e, 0x8e, 0x8a, 0x87, - 0x92, 0x1e, 0xa6, 0x7a, 0x9e, 0x7a, 0x98, 0x7e, 0x8, 0x73, 0xa3, 0x99, - 0x75, 0xa6, 0x1b, 0x9b, 0x99, 0x97, 0xa1, 0xaa, 0x68, 0x94, 0x6e, 0x93, - 0x1f, 0x6f, 0x93, 0x6b, 0x93, 0x74, 0x97, 0x8, 0x84, 0x8f, 0x85, 0x8e, - 0x90, 0x1a, 0x8e, 0x8f, 0x8f, 0x94, 0x90, 0x1e, 0xcd, 0xaa, 0x8d, 0x82, - 0xb3, 0x95, 0x8, 0x97, 0x8e, 0xa6, 0x98, 0xa3, 0x1a, 0xa4, 0x7a, 0x97, - 0x78, 0x6e, 0x79, 0x6b, 0x6f, 0x70, 0x1e, 0x7f, 0x7f, 0x7a, 0x7f, 0x7d, - 0x83, 0x8, 0x88, 0x85, 0x86, 0x88, 0x88, 0x1b, 0x87, 0x8a, 0x90, 0x98, - 0xa6, 0x92, 0x9e, 0x92, 0x9f, 0x1f, 0x91, 0x9c, 0x91, 0x9d, 0xa4, 0x1a, - 0x9d, 0x83, 0xa1, 0x70, 0x70, 0x83, 0x76, 0x79, 0x73, 0x91, 0x79, 0x91, - 0x78, 0x1e, 0x92, 0x77, 0x92, 0x77, 0x71, 0x1a, 0x7f, 0x8a, 0x85, 0x87, - 0x88, 0x87, 0x8d, 0x8f, 0x84, 0x1e, 0x75, 0x96, 0x7d, 0x97, 0x80, 0x96, - 0x8, 0xa3, 0x75, 0x80, 0xae, 0x6a, 0x1b, 0x73, 0x7b, 0x7a, 0x75, 0x71, - 0x9f, 0x83, 0xb3, 0x84, 0x1f, 0xa8, 0x86, 0x8b, 0x8d, 0xc5, 0x70, 0x8, - 0x96, 0x86, 0x90, 0x87, 0x88, 0x1a, 0x88, 0x87, 0x87, 0x82, 0x86, 0x1e, - 0x70, 0x7b, 0x71, 0x84, 0x72, 0x86, 0x8, 0x6b, 0x86, 0x63, 0x7f, 0x6c, - 0x1a, 0xe, 0x65, 0xfa, 0x4f, 0x1, 0x95, 0xf8, 0x8d, 0x3, 0xf8, 0x1, - 0x65, 0x15, 0xf7, 0x2a, 0xfa, 0x4a, 0x68, 0x90, 0xfb, 0x13, 0xfd, 0xb2, - 0xfb, 0x59, 0xf8, 0x31, 0xfb, 0x26, 0x43, 0x9b, 0x6a, 0xeb, 0xba, 0x5, - 0xe, 0xa9, 0xf7, 0xf, 0xbe, 0xf7, 0x46, 0xbf, 0x1, 0xa6, 0xc0, 0x3, - 0xf8, 0x1, 0xf7, 0x81, 0x15, 0x60, 0xb6, 0xda, 0x44, 0xd0, 0x1b, 0xad, - 0xa8, 0x9b, 0x9f, 0x9f, 0x1f, 0x6b, 0xad, 0x5, 0x7f, 0x7d, 0x7b, 0x84, - 0x7a, 0x1b, 0x5d, 0x59, 0xb2, 0xc4, 0x50, 0x1f, 0xbc, 0xbf, 0xba, 0xb0, - 0xb8, 0x1b, 0xa0, 0x9f, 0x85, 0x7b, 0x9f, 0x1f, 0xa8, 0xb1, 0x5, 0x93, - 0x7e, 0x72, 0xa3, 0x63, 0x1b, 0x37, 0x68, 0x64, 0x4e, 0x3f, 0x1f, 0xc6, - 0x44, 0x51, 0xb4, 0x47, 0x1b, 0x33, 0x55, 0x3f, 0x51, 0x3e, 0xc3, 0x45, - 0xde, 0xd6, 0xc7, 0xbf, 0xc9, 0xcb, 0x1f, 0x62, 0xab, 0x15, 0x73, 0x7d, - 0x3b, 0x45, 0x4f, 0x1b, 0x56, 0x66, 0xc2, 0xb2, 0xa5, 0xa3, 0xc4, 0xcf, - 0xbe, 0xe1, 0x4c, 0x77, 0x9a, 0x1f, 0xe, 0xa9, 0xf7, 0x10, 0xbe, 0xf7, - 0x48, 0xbc, 0x1, 0xa5, 0xbe, 0xf8, 0xc2, 0xc0, 0x3, 0xf7, 0xf9, 0xf7, - 0x80, 0x15, 0x76, 0xa3, 0xcf, 0x30, 0xdf, 0x1b, 0xf4, 0xbd, 0xd2, 0xd5, - 0xd1, 0x4a, 0xcc, 0x31, 0x36, 0x67, 0x5a, 0x56, 0x54, 0x1f, 0xc5, 0x4d, - 0x61, 0xb7, 0x34, 0x1b, 0x42, 0x8a, 0x48, 0x4f, 0x41, 0x1a, 0x41, 0xba, - 0x44, 0xe8, 0xf2, 0xcb, 0xe6, 0xa0, 0xa3, 0x1e, 0x69, 0xac, 0x15, 0x58, - 0x5d, 0x5a, 0x60, 0x4d, 0x1b, 0x5c, 0x61, 0xae, 0xc6, 0xb0, 0xa6, 0xbc, - 0xc9, 0xbf, 0xb3, 0x6b, 0x55, 0xcc, 0x1f, 0xce, 0x16, 0xc2, 0xca, 0xa1, - 0xa8, 0xc5, 0x1b, 0xd6, 0xa6, 0x51, 0x71, 0x49, 0x56, 0x6d, 0x5a, 0x61, - 0x61, 0xb2, 0xc4, 0x50, 0x1f, 0xe, 0xe0, 0x8b, 0xc2, 0xf8, 0xfe, 0x77, - 0x1, 0xa5, 0x16, 0xf9, 0x5c, 0xc2, 0xfc, 0xd6, 0x6, 0xf8, 0xd6, 0xf8, - 0xd9, 0x62, 0xb0, 0x5, 0xe, 0x3b, 0xa0, 0x76, 0xf8, 0x5a, 0x77, 0x1, - 0xa2, 0x16, 0xcc, 0x6, 0xf7, 0x6b, 0xf7, 0xf2, 0xf7, 0x6b, 0xfb, 0xf2, - 0x5, 0xcc, 0x6, 0xfb, 0xac, 0xf8, 0x5a, 0x5, 0xe, 0x3b, 0xa0, 0x76, - 0xf8, 0x71, 0x77, 0x1, 0xa9, 0xf8, 0xb8, 0x3, 0xa9, 0xf8, 0x54, 0x15, - 0xf7, 0xa6, 0xfc, 0x54, 0xf7, 0xa6, 0xf8, 0x54, 0x5f, 0xa8, 0xfb, 0x7a, - 0xfc, 0xb, 0xfb, 0x7a, 0xf8, 0xb, 0x5, 0xe, 0xe0, 0xa0, 0x76, 0xf8, - 0x61, 0xbb, 0x55, 0xa, 0x16, 0xc2, 0xf7, 0x51, 0x6, 0xf7, 0x23, 0xf7, - 0x27, 0xf7, 0x15, 0xf7, 0x24, 0xf7, 0x32, 0xf7, 0x19, 0xfb, 0x27, 0xfb, - 0x11, 0x1e, 0xfb, 0x51, 0xc2, 0xf7, 0x51, 0x7, 0xf7, 0x41, 0xfb, 0x2f, - 0xf7, 0x27, 0xfb, 0x53, 0xfb, 0x53, 0xfb, 0x2f, 0xfb, 0x27, 0xfb, 0x41, - 0x1e, 0xe, 0xe0, 0x7a, 0xba, 0xf8, 0x62, 0x77, 0x55, 0xa, 0xf7, 0xc1, - 0x15, 0xfb, 0x41, 0xf7, 0x2f, 0xfb, 0x25, 0x4b, 0xa, 0xf7, 0x2f, 0xf7, - 0x25, 0xf7, 0x41, 0x1e, 0xf7, 0x53, 0x54, 0xfb, 0x52, 0x7, 0xfb, 0x11, - 0xfb, 0x19, 0xfb, 0x27, 0xfb, 0x32, 0xfb, 0x24, 0xfb, 0x27, 0xf7, 0x15, - 0xf7, 0x23, 0x1e, 0xf7, 0x52, 0x54, 0x7, 0xe, 0xfc, 0x2d, 0x20, 0xf7, - 0x4, 0xf9, 0xb8, 0xf6, 0x1, 0xf7, 0xc, 0xd1, 0x3, 0x8d, 0x58, 0x15, - 0x6a, 0xaa, 0x74, 0xae, 0xf7, 0x27, 0x6e, 0xf8, 0x5d, 0xf7, 0x1e, 0x8f, - 0x1e, 0xf7, 0x1c, 0x76, 0xf7, 0x31, 0x8d, 0xb0, 0x1e, 0x95, 0x8c, 0x8e, - 0x92, 0x94, 0x9b, 0x9a, 0x71, 0xac, 0x1b, 0xa4, 0x9d, 0x9d, 0xa6, 0xb2, - 0x72, 0xa2, 0x67, 0xfb, 0xb, 0x94, 0xfb, 0x8a, 0xfb, 0x27, 0x1f, 0x8a, - 0xfb, 0xca, 0x90, 0x2e, 0x8d, 0x41, 0x8, 0x5c, 0x8d, 0x8a, 0x73, 0x7c, - 0x7c, 0x7a, 0xa9, 0x71, 0x1b, 0x6f, 0x73, 0x7e, 0x60, 0x1f, 0xe, 0xf7, - 0x48, 0x8b, 0xf7, 0x15, 0xf7, 0x6f, 0xf7, 0x16, 0x1, 0xf7, 0x37, 0xf7, - 0x15, 0xd6, 0xf7, 0x16, 0xd6, 0xf7, 0x15, 0x14, 0x38, 0xf7, 0x37, 0xcc, - 0x15, 0x52, 0xa, 0x6f, 0xa7, 0x67, 0x67, 0x6e, 0x6f, 0x67, 0x1e, 0xf8, - 0x2d, 0x16, 0x52, 0xa, 0x6d, 0xa7, 0x67, 0x67, 0x70, 0x6f, 0x67, 0x1e, - 0xfb, 0x61, 0xf7, 0xf0, 0x15, 0x67, 0xa8, 0x6e, 0xaf, 0xaf, 0xa8, 0xa8, - 0xaf, 0xaf, 0x6e, 0xa8, 0x67, 0x67, 0x6e, 0x6e, 0x67, 0x1e, 0xe, 0xf7, - 0x5f, 0xbf, 0x8b, 0xbf, 0x12, 0x9c, 0xf8, 0x94, 0x17, 0x13, 0x60, 0xbc, - 0xf7, 0x5f, 0x15, 0xa9, 0xa6, 0xaa, 0xa1, 0xb8, 0x1b, 0xa9, 0xaa, 0x7f, - 0x7c, 0xba, 0x1f, 0x7f, 0xb1, 0xc0, 0x7e, 0xba, 0x1b, 0xa2, 0xa1, 0x92, - 0x94, 0x9f, 0x1f, 0xaa, 0x9a, 0xa5, 0xa0, 0x94, 0x9d, 0x6a, 0xad, 0x18, - 0x7c, 0x7d, 0x6f, 0x66, 0x53, 0x1b, 0x63, 0x5f, 0x96, 0x98, 0x65, 0x1f, - 0x13, 0xe0, 0x99, 0x63, 0x66, 0x99, 0x5c, 0x1b, 0x40, 0x6a, 0x61, 0x73, - 0x70, 0x1f, 0xe, 0x8b, 0xc2, 0xf7, 0x15, 0xc2, 0xf7, 0x1b, 0xba, 0x90, - 0xbb, 0x12, 0x96, 0xf7, 0x4c, 0x15, 0x3a, 0xa, 0xfb, 0x83, 0x4, 0x3a, - 0xa, 0x13, 0x30, 0xba, 0xf7, 0xcf, 0x15, 0xab, 0xa8, 0xa2, 0xa3, 0xbe, - 0x1b, 0xa5, 0xad, 0x84, 0x7b, 0xb9, 0x1f, 0x13, 0x20, 0x78, 0xc0, 0xb4, - 0x81, 0xaf, 0x1b, 0xa4, 0xa1, 0x90, 0x96, 0xa2, 0x1f, 0xb7, 0xa0, 0x96, - 0xa4, 0x93, 0x9a, 0x66, 0xa3, 0x18, 0x7b, 0x7d, 0x73, 0x65, 0x4b, 0x1b, - 0x72, 0x63, 0x94, 0x97, 0x6c, 0x1f, 0x13, 0x10, 0x66, 0x99, 0x60, 0x9c, - 0x5e, 0x8c, 0x8, 0x34, 0x5e, 0x5d, 0x6b, 0x77, 0x1f, 0xe, 0xf7, 0x1b, - 0xbe, 0xf4, 0xbe, 0x12, 0x99, 0xf8, 0x96, 0x17, 0xb9, 0xf7, 0xb7, 0x57, - 0xa, 0xb3, 0x7b, 0x7d, 0xbc, 0x1f, 0x80, 0xb0, 0xb6, 0x32, 0xa, 0x97, - 0x98, 0x65, 0x1f, 0x98, 0x63, 0x62, 0x99, 0x5c, 0x1b, 0x40, 0x68, 0x63, - 0x72, 0x6d, 0x1f, 0xab, 0xfb, 0x56, 0x57, 0xa, 0xb5, 0x7b, 0x7d, 0xbc, - 0x1f, 0x13, 0xa0, 0x80, 0xb0, 0xb4, 0x32, 0xa, 0x98, 0x98, 0x64, 0x1f, - 0x98, 0x63, 0x63, 0x98, 0x5c, 0x1b, 0x40, 0x68, 0x62, 0x72, 0x6d, 0x1f, - 0xe, 0x87, 0x76, 0xf7, 0x35, 0xc2, 0xf7, 0x1f, 0xc2, 0xf7, 0x38, 0x77, - 0x1, 0xe9, 0x16, 0xbd, 0x72, 0xe6, 0xf7, 0x35, 0x5, 0xf7, 0xc5, 0xc2, - 0xfb, 0xa7, 0x6, 0xd8, 0xf7, 0x1f, 0x5, 0xf7, 0x5a, 0xc2, 0xfb, 0x3c, - 0x6, 0xd7, 0xf7, 0x1c, 0x5a, 0xa7, 0x30, 0xfb, 0x38, 0x5, 0xfb, 0xb9, - 0x54, 0xf7, 0x9a, 0x6, 0x3e, 0xfb, 0x1f, 0x5, 0xfb, 0x4d, 0x54, 0xf7, - 0x2f, 0x6, 0xe, 0xdd, 0xc2, 0xed, 0xc2, 0xed, 0xc2, 0x1, 0x99, 0xf8, - 0xa0, 0x14, 0xe0, 0x99, 0xf8, 0x18, 0x15, 0x42, 0xa, 0xfb, 0x64, 0x4, - 0x42, 0xa, 0xfb, 0x64, 0x4, 0x42, 0xa, 0xe, 0x3d, 0xa, 0xf7, 0xb8, - 0x4, 0xf8, 0x85, 0xfb, 0x76, 0x5, 0xc9, 0x7, 0xfc, 0x45, 0xf7, 0x57, - 0x3e, 0xa, 0x3d, 0xa, 0xcd, 0x4, 0xf8, 0x85, 0xf7, 0x76, 0x5, 0x51, - 0xa, 0xf8, 0x45, 0xfb, 0x5b, 0xfc, 0x45, 0xfb, 0x57, 0x5, 0xe, 0xa9, - 0x8b, 0x47, 0xa, 0xb1, 0xc5, 0x3, 0xf9, 0x46, 0x16, 0xc2, 0xfc, 0x29, - 0x7, 0x21, 0x8c, 0x39, 0xe3, 0xe2, 0x1a, 0xf0, 0xe1, 0xde, 0xf3, 0x1e, - 0xf8, 0x27, 0xc2, 0xfc, 0x28, 0x6, 0xfb, 0x33, 0x34, 0xfb, 0x11, 0xfb, - 0x6, 0x8a, 0x1f, 0xfb, 0x19, 0x8a, 0xf7, 0x6, 0x29, 0xf7, 0x16, 0x1b, - 0xe, 0xa9, 0x8b, 0x47, 0xa, 0xf8, 0xfb, 0xc5, 0x3, 0xf8, 0x40, 0x16, - 0xf7, 0x16, 0xf7, 0x7, 0xed, 0xf7, 0x19, 0xf7, 0x6, 0x31, 0xf7, 0x11, - 0xfb, 0x33, 0x1f, 0xfc, 0x28, 0x54, 0xf8, 0x27, 0x6, 0xf3, 0xe3, 0x38, - 0x26, 0x34, 0x37, 0x33, 0x21, 0x58, 0xa, 0xa9, 0x5a, 0x76, 0xd1, 0xc2, - 0xf7, 0xfb, 0xc2, 0xd2, 0x77, 0x1, 0xaf, 0xc5, 0x3, 0xf7, 0x8d, 0x45, - 0x15, 0xc7, 0x6, 0xaf, 0xd1, 0x5, 0xf7, 0xed, 0xc2, 0xfb, 0xd0, 0x6, - 0xf7, 0x44, 0xf7, 0xfb, 0x5, 0xf7, 0x20, 0xc2, 0xfb, 0x4, 0x6, 0xb0, - 0xd2, 0x5, 0x4f, 0x6, 0x67, 0x44, 0x5, 0xfb, 0x8a, 0x6, 0xfb, 0x4, - 0xfb, 0x11, 0x36, 0xfb, 0x2b, 0xfb, 0x31, 0xf7, 0x11, 0x3f, 0xf7, 0x10, - 0x8a, 0x1f, 0xa7, 0xc2, 0x15, 0xfb, 0x14, 0x8c, 0x30, 0xdc, 0xee, 0x1a, - 0xe2, 0xd9, 0xe7, 0xf5, 0x1e, 0xf7, 0x68, 0x6, 0xe, 0xa9, 0xfb, 0x11, - 0xc2, 0xd1, 0x47, 0xa, 0xb0, 0xc3, 0x3, 0xb0, 0x45, 0x15, 0x54, 0xf9, - 0x21, 0xc2, 0x7, 0xd1, 0x4, 0xc2, 0xfc, 0x29, 0x7, 0xfb, 0x10, 0x8c, - 0x46, 0xee, 0x8c, 0xdc, 0x8, 0xf7, 0x0, 0x8c, 0xea, 0xd2, 0xed, 0x1b, - 0xf8, 0x27, 0xc2, 0xfc, 0x28, 0x6, 0xfb, 0x40, 0x3e, 0xfb, 0x16, 0xfb, - 0x1, 0xfb, 0x19, 0xf3, 0x29, 0xf7, 0x21, 0x1f, 0xe, 0xa9, 0xfb, 0x11, - 0xc2, 0xd1, 0x47, 0xa, 0xf8, 0xfd, 0xc3, 0x3, 0x9f, 0xfb, 0x11, 0x15, - 0xf9, 0x21, 0xc2, 0xfd, 0x21, 0x6, 0xf8, 0x2c, 0xd1, 0x15, 0xf7, 0x21, - 0xf3, 0xed, 0xf7, 0x19, 0xf7, 0x1, 0x3e, 0xf7, 0x16, 0xfb, 0x40, 0x1f, - 0xfc, 0x28, 0x54, 0xf8, 0x27, 0x6, 0xed, 0xeb, 0x44, 0xfb, 0x0, 0x3a, - 0x47, 0x28, 0xfb, 0x10, 0x58, 0xa, 0xe0, 0x7c, 0xc0, 0xf7, 0x9d, 0xc1, - 0xf7, 0x9d, 0xc0, 0x1, 0xb6, 0xc4, 0xf7, 0x99, 0xc1, 0xf7, 0x9d, 0xc0, - 0x14, 0xe0, 0xf7, 0x24, 0xf7, 0xc3, 0x15, 0xf7, 0x6d, 0xfb, 0x71, 0xc1, - 0xf7, 0x71, 0xf7, 0x6e, 0xc1, 0xfb, 0x6e, 0xf7, 0x6f, 0x55, 0xfb, 0x6f, - 0xfb, 0x6d, 0x6, 0x5f, 0x70, 0x15, 0xf7, 0x35, 0xf7, 0x13, 0x30, 0xa, - 0xfb, 0x13, 0xf7, 0x17, 0xf7, 0x35, 0x1e, 0x52, 0x16, 0x21, 0xa, 0xe, - 0xe0, 0x7a, 0xc0, 0xf8, 0xdc, 0xc0, 0x1, 0xb6, 0xc0, 0xf8, 0xdc, 0xc0, - 0x3, 0xf7, 0x54, 0xf7, 0x3f, 0x15, 0xb2, 0x64, 0xf7, 0x31, 0xf7, 0x32, - 0xf7, 0x32, 0xfb, 0x33, 0xb2, 0xb1, 0xfb, 0x32, 0xf7, 0x33, 0xf7, 0x30, - 0xf7, 0x30, 0x64, 0xb1, 0xfb, 0x30, 0xfb, 0x30, 0xfb, 0x31, 0xf7, 0x32, - 0x64, 0x64, 0xf7, 0x31, 0xfb, 0x31, 0x5, 0xfb, 0xc6, 0x16, 0x21, 0xa, - 0xc0, 0x16, 0xf7, 0x35, 0xf7, 0x17, 0x30, 0xa, 0xfb, 0x17, 0xf7, 0x17, - 0xf7, 0x35, 0x1e, 0xe, 0x72, 0x8b, 0xc2, 0xf8, 0xff, 0x77, 0x1, 0xf7, - 0xc6, 0xc2, 0x3, 0x9a, 0x16, 0xf9, 0x11, 0xc2, 0xfb, 0xb7, 0xf8, 0xff, - 0x54, 0xfc, 0xff, 0xfb, 0xb7, 0x6, 0xe, 0xfc, 0x45, 0xf7, 0x66, 0xef, - 0x1, 0xd0, 0xef, 0x3, 0xd0, 0xf7, 0x98, 0x15, 0x6f, 0xa1, 0x75, 0xa7, - 0xa6, 0xa2, 0xa1, 0xa7, 0xa6, 0x74, 0xa2, 0x70, 0x6f, 0x75, 0x74, 0x70, - 0x1e, 0xe, 0x8e, 0x4d, 0x76, 0xf9, 0xe9, 0xf7, 0x2b, 0x1, 0xf7, 0xe0, - 0xd1, 0x3, 0xf7, 0xe0, 0x38, 0x15, 0xd1, 0xf8, 0x13, 0x6, 0xf8, 0x88, - 0xf7, 0x33, 0xd0, 0xae, 0x93, 0x92, 0x89, 0x89, 0x8f, 0x1e, 0x82, 0x86, - 0x80, 0x79, 0x78, 0x1a, 0x73, 0x9d, 0x6e, 0xb1, 0xb7, 0x9f, 0xb3, 0xb2, - 0xaf, 0x68, 0xaf, 0x5e, 0x4f, 0xfb, 0x87, 0x59, 0xfc, 0xd3, 0x1e, 0xe, - 0x8e, 0x3a, 0xf7, 0x29, 0xf9, 0xe9, 0x77, 0x1, 0xf7, 0xee, 0xd0, 0x3, - 0xf7, 0x1e, 0x70, 0x15, 0x94, 0x90, 0x96, 0x9d, 0x9e, 0x1a, 0xa3, 0x79, - 0xa8, 0x65, 0x5f, 0x78, 0x64, 0x64, 0x67, 0xad, 0x68, 0xb8, 0xc7, 0xf7, - 0x81, 0xbb, 0xf8, 0xd3, 0x1e, 0xf8, 0xf, 0x46, 0xfc, 0x13, 0x7, 0xfc, - 0x88, 0xfb, 0x2e, 0x46, 0x68, 0x83, 0x84, 0x8d, 0x8d, 0x87, 0x1e, 0xe, - 0x4c, 0xa, 0xa4, 0xf7, 0xa6, 0x15, 0xf7, 0x7a, 0xfc, 0x6c, 0xbe, 0xa4, - 0xfb, 0x6e, 0xf8, 0x53, 0xf7, 0x6e, 0xf8, 0x54, 0x58, 0xa3, 0x5, 0xe, - 0x4c, 0xa, 0xd3, 0xfb, 0x5a, 0x15, 0xf7, 0x7a, 0xf8, 0x6c, 0xfb, 0x7a, - 0xf8, 0x6c, 0x58, 0x73, 0xf7, 0x6e, 0xfc, 0x54, 0xfb, 0x6e, 0xfc, 0x53, - 0x5, 0xe, 0xfb, 0x51, 0xa0, 0x76, 0xf9, 0x7d, 0x77, 0x1, 0x9d, 0xc7, - 0xf7, 0xde, 0xc7, 0x3, 0xf7, 0x68, 0x16, 0xc7, 0x6, 0xf7, 0x58, 0xf8, - 0xd, 0xfb, 0x58, 0xf8, 0x4, 0x5, 0x4f, 0x6, 0xfb, 0x56, 0xfc, 0x4, - 0x5, 0xf7, 0x74, 0xfb, 0xd6, 0x15, 0xfb, 0x38, 0xf7, 0xd6, 0xf7, 0x38, - 0xf7, 0xce, 0xf7, 0x3a, 0xfb, 0xce, 0x5, 0xe, 0xd1, 0x7c, 0x76, 0xf8, - 0xdc, 0x77, 0x1, 0xf7, 0xec, 0xc1, 0x3, 0xf7, 0xbb, 0x67, 0x15, 0xf7, - 0x2c, 0x6, 0x84, 0x95, 0x62, 0xac, 0x8a, 0xce, 0x8, 0xaf, 0x8a, 0x94, - 0xa0, 0x9d, 0x1b, 0x91, 0x8f, 0x86, 0x81, 0x90, 0x1f, 0x5d, 0xa2, 0xa2, - 0x5e, 0xcc, 0x1b, 0xbb, 0xaa, 0xc4, 0xbb, 0xc0, 0x74, 0xb2, 0x61, 0xc2, - 0x1f, 0x2d, 0xf7, 0x10, 0x6f, 0xae, 0x44, 0xf7, 0x4, 0x44, 0xfb, 0x4, - 0x6f, 0x68, 0x2d, 0xfb, 0x10, 0x8, 0x61, 0x54, 0x74, 0x64, 0x56, 0x1a, - 0x5f, 0xa1, 0x4c, 0xcb, 0xc8, 0xa6, 0xc6, 0xb1, 0x9c, 0x1e, 0x92, 0x8e, - 0x8f, 0x90, 0x94, 0x1b, 0x98, 0x97, 0x77, 0x65, 0x8a, 0x1f, 0x8a, 0x48, - 0x62, 0x6a, 0x84, 0x81, 0x8, 0xe, 0xd1, 0x86, 0x76, 0xf7, 0x3c, 0xf7, - 0x17, 0x12, 0xf7, 0xe5, 0xd2, 0x4f, 0xbd, 0x13, 0xd0, 0xf7, 0xbf, 0x71, - 0x15, 0xf7, 0x28, 0x6, 0x70, 0xac, 0x75, 0x9f, 0xcd, 0x1a, 0xaa, 0x8e, - 0x9e, 0x99, 0x95, 0x9a, 0x7e, 0x6f, 0xa2, 0x1e, 0x6b, 0xa6, 0xab, 0x81, - 0xb2, 0x1b, 0xc5, 0xb4, 0xc7, 0xc9, 0xd1, 0x67, 0xc6, 0x47, 0x5f, 0x5e, - 0x6d, 0x83, 0x7c, 0x1f, 0x13, 0xe0, 0x70, 0x7d, 0x7a, 0x92, 0x9a, 0x1a, - 0x92, 0x8f, 0x92, 0x90, 0x90, 0x1e, 0x9d, 0x9e, 0xcd, 0xb0, 0xd1, 0x1a, - 0xd9, 0x4b, 0xa8, 0x4b, 0x4a, 0x4b, 0x6c, 0x38, 0x48, 0xd1, 0x67, 0x9a, - 0x7b, 0x1e, 0x90, 0x85, 0x8e, 0x85, 0x84, 0x1a, 0x7c, 0x79, 0x86, 0x72, - 0x97, 0x1e, 0x93, 0x7c, 0x64, 0xa9, 0x5f, 0x1b, 0x46, 0x62, 0x53, 0x46, - 0x47, 0xb5, 0x50, 0xcc, 0xaf, 0xa8, 0x98, 0xa9, 0xa5, 0x1f, 0xa7, 0xa4, - 0x9b, 0x97, 0x94, 0x1b, 0x13, 0xd0, 0x99, 0x8b, 0x71, 0x74, 0x49, 0x74, - 0x76, 0x71, 0x6b, 0x1f, 0xe, 0xd1, 0x7f, 0x76, 0xf8, 0xc9, 0x77, 0x1, - 0xf8, 0xa, 0x6a, 0x15, 0xd9, 0xf7, 0x7, 0x9a, 0xa7, 0xe6, 0xf7, 0x9, - 0x8, 0xb4, 0xc0, 0xab, 0xc0, 0xc4, 0x1a, 0xf7, 0x8, 0x43, 0xa5, 0x61, - 0x5d, 0x5d, 0x76, 0x48, 0x72, 0x1e, 0x78, 0x83, 0x88, 0x75, 0x7c, 0x1b, - 0x7c, 0x88, 0xa1, 0x9e, 0x83, 0x1f, 0xce, 0x72, 0x5d, 0xa0, 0x5d, 0x1b, - 0x61, 0x43, 0x71, 0xfb, 0x8, 0x52, 0xab, 0x56, 0xb4, 0x56, 0x1f, 0xe6, - 0xfb, 0x9, 0x9a, 0x6f, 0xd9, 0xfb, 0x7, 0x8, 0xe, 0xd1, 0x7c, 0x76, - 0xf8, 0xde, 0x77, 0x1, 0xf7, 0x22, 0xf8, 0x5e, 0x3, 0xf7, 0x22, 0xf7, - 0x95, 0x15, 0xf7, 0x7c, 0xfb, 0xb9, 0xf7, 0x76, 0xf7, 0xb9, 0xfb, 0x76, - 0xf7, 0xb9, 0x5, 0xe, 0xf6, 0x7c, 0xb3, 0xf3, 0xb1, 0xf7, 0xdb, 0xa5, - 0xf7, 0x7, 0xb3, 0x1, 0xbe, 0xb3, 0xf7, 0xa, 0xcc, 0xf7, 0x92, 0x9f, - 0xf7, 0x2d, 0xb3, 0x3, 0xf8, 0xaf, 0xf7, 0x70, 0x15, 0x62, 0x59, 0x6a, - 0x7f, 0x5e, 0x1b, 0x40, 0x4d, 0xc7, 0xf1, 0xd5, 0xb8, 0xe6, 0xdc, 0xc6, - 0xc6, 0x6c, 0x42, 0x95, 0x1f, 0x9f, 0x6, 0x87, 0xf7, 0x14, 0x5, 0x78, - 0x6, 0x88, 0x7d, 0x7c, 0x86, 0x79, 0x8f, 0x8, 0x90, 0x76, 0x6b, 0x97, - 0x64, 0x1b, 0x24, 0x36, 0x31, 0x23, 0xfb, 0x9, 0xdb, 0x3b, 0xf7, 0xb, - 0xd7, 0xb7, 0xbd, 0xa2, 0xa1, 0x1f, 0xfc, 0x87, 0xf7, 0x14, 0x23, 0xa, - 0xf6, 0x7a, 0xb3, 0xf7, 0x18, 0x9d, 0xf7, 0x31, 0xa2, 0xf7, 0x32, 0xa3, - 0xed, 0xb3, 0x1, 0xbd, 0xb3, 0xf7, 0x51, 0xcb, 0xf7, 0x17, 0xcf, 0xf7, - 0x32, 0xb3, 0x3, 0xbd, 0xf7, 0xdc, 0x4f, 0xa, 0xf7, 0x52, 0xf7, 0x2f, - 0xf7, 0x2e, 0xf7, 0x53, 0x48, 0xa, 0xfb, 0x2f, 0xfb, 0x2f, 0xfb, 0x52, - 0x8c, 0x2c, 0xa, 0x1e, 0xfb, 0x3d, 0x8a, 0xfb, 0x1c, 0x43, 0xa, 0x1a, - 0xf7, 0x20, 0xfb, 0x40, 0x15, 0xf7, 0x34, 0x9d, 0x6, 0x75, 0x72, 0x9a, - 0xa3, 0x1f, 0xf7, 0xa, 0xa5, 0x7, 0xf7, 0x19, 0xfb, 0x43, 0x5, 0xea, - 0x9d, 0x6, 0x7e, 0x7f, 0x8b, 0x99, 0x80, 0x1f, 0xfb, 0xc, 0xf7, 0x2c, - 0x5, 0xc5, 0x9c, 0xb6, 0xa2, 0xc9, 0x1a, 0xd8, 0x3b, 0x9c, 0x4f, 0x1e, - 0xfb, 0x3b, 0x79, 0x6, 0xb3, 0x8f, 0x80, 0x6e, 0x1f, 0xfb, 0xa0, 0x7, - 0x78, 0x71, 0x7a, 0x74, 0x1e, 0xf7, 0x5, 0xf7, 0x48, 0x15, 0xf7, 0x12, - 0x7, 0x9c, 0x95, 0x9a, 0x95, 0xcf, 0xb5, 0x79, 0x58, 0x8c, 0x1e, 0x39, - 0x43, 0x85, 0x50, 0x8a, 0x1e, 0xe, 0xf7, 0x63, 0xf7, 0xce, 0x76, 0xf7, - 0xf9, 0xa2, 0x79, 0x9d, 0x12, 0x9d, 0x9d, 0xf7, 0x6, 0xc6, 0xf7, 0x6, - 0x9d, 0xdd, 0xa6, 0xf7, 0xbc, 0xc6, 0x13, 0xdf, 0xee, 0xf7, 0xb9, 0x15, - 0xf7, 0x34, 0x9d, 0x6, 0x6c, 0x78, 0x9a, 0xa2, 0x1f, 0xf7, 0xc2, 0x7, - 0xb0, 0x8a, 0xc3, 0x89, 0xa2, 0x6e, 0x89, 0x5f, 0x19, 0x9d, 0x8c, 0x88, - 0xec, 0x5, 0xfb, 0xd1, 0x6, 0x88, 0x2a, 0x9d, 0x8a, 0x89, 0xb7, 0xa2, - 0xa8, 0xc3, 0x8d, 0x19, 0xb0, 0x8c, 0x5, 0xfb, 0xc2, 0x4a, 0xa, 0xf7, - 0xa5, 0x79, 0x15, 0xf7, 0x15, 0x9d, 0x6, 0x6c, 0x77, 0x9a, 0xa2, 0x1f, - 0xf7, 0x8f, 0x7, 0xf7, 0x24, 0xfb, 0xc7, 0x5, 0x9d, 0x6, 0xf7, 0x1a, - 0xf7, 0xd7, 0x5, 0xfb, 0x9f, 0x4a, 0xa, 0x79, 0xf7, 0x34, 0x9d, 0x7, - 0x6c, 0x78, 0x9a, 0xa2, 0x1f, 0xf7, 0xad, 0x7, 0x13, 0xbf, 0xa6, 0xa8, - 0x89, 0xa0, 0x1e, 0x9d, 0xfb, 0x5, 0x7, 0xfb, 0x12, 0xfb, 0xb4, 0xfb, - 0x18, 0xf7, 0xb4, 0x5, 0xfb, 0x6, 0x79, 0x6, 0xab, 0xa0, 0x8e, 0x65, - 0x1f, 0xfb, 0xa3, 0x4a, 0xa, 0xe, 0xfb, 0x4b, 0xfa, 0x5, 0xaf, 0x1, - 0xf8, 0x74, 0xfa, 0x5, 0x15, 0xf8, 0xf6, 0xaf, 0xfc, 0xf6, 0x6, 0xe, - 0x3b, 0x28, 0x76, 0xfa, 0xfe, 0x49, 0xa, 0xf7, 0xac, 0xfb, 0xc, 0x15, - 0xc3, 0xfa, 0xfe, 0x53, 0x6, 0xe, 0xf7, 0xd1, 0xf7, 0x70, 0xc3, 0x1, - 0x4f, 0xfa, 0xea, 0x3, 0x4f, 0xf7, 0x70, 0x15, 0xfa, 0xea, 0xc3, 0xfe, - 0xea, 0x6, 0xe, 0xf6, 0x77, 0xb3, 0xf7, 0xb4, 0xb6, 0xf7, 0x17, 0xb6, - 0xf4, 0xb3, 0x1, 0xbd, 0xb3, 0xf7, 0x44, 0xbc, 0xf7, 0x54, 0xb9, 0xf7, - 0x27, 0xb3, 0x3, 0xbd, 0xf7, 0xd9, 0x4f, 0xa, 0x1e, 0xf7, 0x52, 0x8c, - 0xf7, 0x2f, 0xf7, 0x2d, 0xf7, 0x53, 0x1a, 0x48, 0xa, 0xfb, 0x2e, 0xfb, - 0x2f, 0xfb, 0x52, 0x2c, 0xa, 0xfb, 0x3d, 0xfb, 0x1c, 0xf7, 0x1c, 0xf7, - 0x3c, 0x1e, 0xf7, 0x44, 0xfb, 0x50, 0x15, 0xbc, 0xf7, 0x40, 0xf7, 0x11, - 0x6, 0xd2, 0x82, 0x3c, 0x67, 0x8c, 0x1f, 0x8c, 0x6f, 0x93, 0x89, 0x94, - 0x79, 0x8, 0x9e, 0xa1, 0x8b, 0x9e, 0x1b, 0x73, 0xa7, 0x87, 0xa3, 0xb0, - 0x1a, 0xbe, 0x7c, 0xa6, 0x6c, 0xa0, 0x1e, 0xb0, 0xa7, 0x98, 0x9d, 0xbc, - 0x1a, 0xe1, 0x4d, 0x96, 0x50, 0x1e, 0xfb, 0x3e, 0x6, 0xbc, 0xfb, 0x42, - 0x15, 0xf7, 0x17, 0xf7, 0xe, 0x7, 0xa9, 0xb3, 0x83, 0x4a, 0x5a, 0x66, - 0x82, 0x6a, 0x1f, 0xe, 0xf6, 0x7c, 0xb3, 0xef, 0xb9, 0xf7, 0xcc, 0xb6, - 0xf7, 0x1, 0xb3, 0x1, 0xbc, 0xb3, 0xf7, 0x1e, 0xbc, 0xf7, 0x80, 0xb8, - 0xf7, 0x22, 0xb3, 0x3, 0xf8, 0x94, 0xf7, 0xa6, 0x15, 0x52, 0x59, 0x5d, - 0x52, 0x35, 0x60, 0xe5, 0xd6, 0xdd, 0xb7, 0xcc, 0xd8, 0xce, 0xb3, 0x6f, - 0x58, 0x8d, 0x1e, 0xbe, 0x6, 0xe5, 0x89, 0x44, 0xab, 0x33, 0x1b, 0xfb, - 0x0, 0x4e, 0x33, 0x23, 0xfb, 0x4, 0xcd, 0x2a, 0xf7, 0x4, 0xf7, 0x0, - 0xb9, 0xe7, 0xc4, 0x1f, 0xfc, 0x92, 0xc3, 0x23, 0xa, 0xf2, 0xf7, 0xce, - 0x76, 0xf7, 0xe5, 0xb6, 0x1, 0xf7, 0x16, 0xbc, 0xf7, 0x50, 0xbc, 0xf7, - 0x98, 0xbc, 0x3, 0xf7, 0x16, 0xf7, 0xb9, 0x15, 0xbc, 0xf7, 0xe5, 0xf7, - 0x11, 0xb6, 0xfb, 0xbf, 0x60, 0xf7, 0x11, 0x6, 0xf7, 0x81, 0xfb, 0xe5, - 0x15, 0xbc, 0xf7, 0xc9, 0x6, 0xf4, 0xfb, 0xc4, 0x5, 0xbd, 0x6, 0xf4, - 0xf7, 0xc4, 0x5, 0xfb, 0xc9, 0xbc, 0xf8, 0x10, 0x44, 0x7, 0xfb, 0x0, - 0xfb, 0xd2, 0xfb, 0x0, 0xf7, 0xd2, 0x5, 0x44, 0x6, 0xe, 0xfb, 0xbf, - 0xfb, 0xb9, 0x1c, 0x4, 0xb9, 0x1, 0xa3, 0xdf, 0x3, 0xa3, 0xfb, 0xb9, - 0x15, 0xdf, 0xf8, 0x2e, 0x6, 0xf7, 0xf3, 0xf5, 0xf7, 0xc9, 0xf7, 0x72, - 0xf7, 0x1f, 0x1e, 0x7e, 0x95, 0x5, 0xfb, 0x57, 0x2a, 0xfb, 0x60, 0xfb, - 0x62, 0xfc, 0x8e, 0x1a, 0xe, 0xfb, 0xbf, 0xfa, 0x31, 0x8b, 0x1, 0xa3, - 0xdf, 0x3, 0xa3, 0x54, 0xa, 0x3f, 0xa, 0xa3, 0xdf, 0x3, 0xf8, 0x41, - 0xfb, 0xb9, 0x15, 0x92, 0x95, 0x5, 0xfb, 0x72, 0xf7, 0x29, 0x21, 0xf7, - 0xbf, 0xf7, 0xf3, 0x1a, 0xf8, 0x2e, 0x37, 0xfc, 0x2e, 0x7, 0xfc, 0x8e, - 0xf7, 0x65, 0xfb, 0x58, 0xf7, 0x57, 0x20, 0x1e, 0xe, 0xfb, 0xbf, 0xfa, - 0x9, 0xb4, 0x1, 0x8b, 0xd8, 0x3, 0x3b, 0x4, 0xd8, 0xf9, 0xd2, 0x6, - 0xf7, 0x11, 0x9b, 0x95, 0xf7, 0x11, 0x1e, 0xf7, 0x17, 0xb4, 0xfb, 0xf1, - 0x6, 0xe, 0xfb, 0xbf, 0x3c, 0xfa, 0x80, 0x1, 0x8b, 0xd8, 0x3, 0x3c, - 0x4, 0xd8, 0xfa, 0x80, 0x3e, 0x6, 0xe, 0xfb, 0xbf, 0x3b, 0xb4, 0x1, - 0x8b, 0xd8, 0x3, 0x3b, 0x4, 0xf7, 0xe8, 0xb4, 0xfb, 0xe, 0x6, 0xfb, - 0x11, 0x7b, 0x95, 0xf7, 0x11, 0x1f, 0xf9, 0xd2, 0x3e, 0x7, 0xe, 0xfb, - 0x51, 0xfa, 0x13, 0xa9, 0x35, 0xa, 0xf7, 0xb0, 0x36, 0x15, 0xf9, 0xc8, - 0x7, 0xf7, 0x2, 0x91, 0xbd, 0xdb, 0x1e, 0xd6, 0xa9, 0x40, 0x6, 0xfb, - 0x2, 0x58, 0x6e, 0xfb, 0x35, 0x1f, 0xfd, 0xc8, 0x7, 0xe, 0x2d, 0xa, - 0xf7, 0x7f, 0x6, 0xf7, 0x2d, 0x4c, 0xde, 0xfb, 0x1c, 0xb2, 0x1e, 0xf7, - 0x1c, 0xb2, 0xca, 0xde, 0xf7, 0x2d, 0x1a, 0xf7, 0x7f, 0x40, 0xfb, 0x7f, - 0x7, 0x27, 0x67, 0xfb, 0x7, 0xfb, 0x2d, 0x5e, 0x1e, 0x6d, 0x7, 0xf7, - 0x2d, 0x5e, 0xaf, 0xfb, 0x7, 0x27, 0x1a, 0xe, 0x53, 0xa, 0xf7, 0x65, - 0xfa, 0x3b, 0x15, 0xfd, 0xcc, 0x7, 0xfb, 0x35, 0xb4, 0x72, 0xf7, 0x2, - 0x1e, 0xe0, 0xa9, 0x36, 0x6, 0x3b, 0x8f, 0xb9, 0xf7, 0x2, 0x1f, 0xf9, - 0xcc, 0x7, 0xe, 0x2d, 0xa, 0xfa, 0x90, 0x40, 0x6, 0xe, 0x8e, 0x33, - 0xfa, 0xbb, 0x1, 0xf7, 0xc8, 0xd1, 0x3, 0xf7, 0xc8, 0x33, 0x15, 0xd1, - 0xfa, 0xbb, 0x45, 0x6, 0xe, 0x3f, 0xa, 0xf8, 0x12, 0xdf, 0x3, 0xf8, - 0x12, 0xfb, 0xb9, 0x15, 0xdf, 0xf8, 0x38, 0x6, 0xf8, 0x8e, 0xfb, 0x60, - 0xf7, 0x58, 0xfb, 0x57, 0xec, 0x1e, 0x7e, 0x81, 0x5, 0xf7, 0x72, 0xfb, - 0x1f, 0xf5, 0xfb, 0xbf, 0xfb, 0xf3, 0x1a, 0xe, 0xfb, 0xbf, 0x36, 0xfa, - 0x86, 0x1, 0xf8, 0x12, 0xdf, 0x3, 0xf8, 0x12, 0x54, 0xa, 0x3f, 0xa, - 0xf8, 0x12, 0xdf, 0x3, 0xc1, 0xfb, 0xaf, 0x15, 0x98, 0x81, 0x5, 0xf7, - 0x57, 0xec, 0xf7, 0x60, 0xf7, 0x5d, 0xf8, 0x8e, 0x1a, 0xf8, 0x33, 0x37, - 0xfc, 0x33, 0x7, 0xfb, 0xf3, 0x21, 0xfb, 0xc4, 0xfb, 0x72, 0xfb, 0x1f, - 0x1e, 0xe, 0xfb, 0xbf, 0xfa, 0x9, 0xb4, 0x1, 0xf7, 0xb9, 0xd9, 0x3, - 0xf7, 0xb9, 0x3b, 0x15, 0xd9, 0xfa, 0x82, 0xfb, 0xf1, 0x62, 0xf7, 0x1b, - 0x6, 0xf7, 0x11, 0x96, 0x80, 0xfb, 0x11, 0x1f, 0xe, 0xfb, 0xbf, 0x3c, - 0xfa, 0x80, 0x1, 0xf7, 0xba, 0xd8, 0x3, 0xf7, 0xba, 0x3c, 0x15, 0xd8, - 0xfa, 0x80, 0x3e, 0x6, 0xe, 0xfb, 0xbf, 0x3b, 0xb4, 0x1, 0xf7, 0xba, - 0xd8, 0x3, 0xa1, 0x64, 0x15, 0x62, 0xf7, 0xf1, 0xfa, 0x82, 0x3e, 0xfd, - 0xcf, 0x7, 0xfb, 0x13, 0x79, 0x80, 0xfb, 0x11, 0x1e, 0xe, 0xfb, 0x51, - 0xfa, 0x13, 0xa9, 0x2e, 0xa, 0xf9, 0xc8, 0x6, 0xf7, 0x2c, 0x74, 0xb1, - 0xfb, 0x19, 0x1e, 0x3b, 0x6d, 0xdb, 0x6, 0xd1, 0x96, 0x5f, 0xfb, 0x8, - 0x1f, 0xe, 0x2d, 0xa, 0xf7, 0x80, 0x6, 0xef, 0xaf, 0xf7, 0x6, 0xf7, - 0x2d, 0xb8, 0x1e, 0xa9, 0x7, 0xfb, 0x2d, 0xb8, 0x67, 0xf7, 0x6, 0xef, - 0x1a, 0xf7, 0x80, 0x40, 0xfb, 0x80, 0x7, 0xfb, 0x2d, 0xca, 0x39, 0xf7, - 0x1c, 0x64, 0x1e, 0xfb, 0x1c, 0x64, 0x4c, 0x39, 0xfb, 0x2d, 0x1a, 0xe, - 0x53, 0xa, 0xbb, 0x5e, 0x15, 0x6d, 0xdb, 0x7, 0xf7, 0x16, 0xa5, 0xb3, - 0xf7, 0x2b, 0x1f, 0xf9, 0xc7, 0x40, 0xfd, 0xc7, 0x7, 0xfb, 0x16, 0x80, - 0x6c, 0x45, 0x1e, 0xe, 0xf6, 0x9d, 0x76, 0xf8, 0xff, 0xf7, 0x54, 0x1, - 0xf9, 0x71, 0xf7, 0x69, 0x15, 0x3f, 0xa0, 0x65, 0xd3, 0xd4, 0x1a, 0xce, - 0xa9, 0xcd, 0xca, 0xa9, 0x1e, 0xbf, 0x6e, 0x41, 0xa4, 0x52, 0x1b, 0x6e, - 0x76, 0x84, 0x83, 0x76, 0x1f, 0x83, 0x76, 0x75, 0x83, 0x6e, 0x1b, 0x72, - 0x75, 0x93, 0x93, 0x76, 0x1f, 0x94, 0x74, 0x75, 0x94, 0x70, 0x1b, 0xfb, - 0x3, 0x25, 0x2b, 0xfb, 0x21, 0xfb, 0x1a, 0xd2, 0xfb, 0x92, 0xf7, 0x37, - 0xa5, 0x9e, 0x96, 0x94, 0xa0, 0x1f, 0x92, 0x9b, 0x9b, 0x91, 0xa0, 0x1b, - 0xa1, 0x9b, 0x85, 0x85, 0x9a, 0x1f, 0x82, 0xa1, 0x9d, 0x7f, 0xa7, 0x1b, - 0xe1, 0xb5, 0xe2, 0xf7, 0x15, 0xd6, 0x1f, 0xfb, 0xdb, 0xf8, 0x27, 0x15, - 0xe6, 0x88, 0xe5, 0xf0, 0x76, 0xe9, 0x8, 0x3c, 0x35, 0x2b, 0x2b, 0x90, - 0x1f, 0xe, 0x78, 0x9e, 0xf8, 0x7b, 0x98, 0xf7, 0x41, 0x9a, 0x6, 0x1e, - 0xa0, 0x39, 0x63, 0xff, 0xc, 0x9, 0xe7, 0xa, 0xe0, 0xb, 0x9f, 0xd3, - 0xc, 0xc, 0xf8, 0xb9, 0x14, 0xf9, 0x3f, 0x15, 0xab, 0x13, 0x0, 0x3a, - 0x2, 0x0, 0x1, 0x0, 0x13, 0x0, 0x2d, 0x0, 0x30, 0x0, 0x47, 0x0, - 0x4f, 0x0, 0x56, 0x0, 0x5d, 0x0, 0x61, 0x0, 0x67, 0x0, 0x7c, 0x0, - 0x82, 0x0, 0x8b, 0x0, 0xa6, 0x0, 0xae, 0x0, 0xb4, 0x0, 0xba, 0x0, - 0xc7, 0x0, 0xce, 0x0, 0xe3, 0x0, 0xed, 0x0, 0xf6, 0x0, 0xfc, 0x1, - 0xa, 0x1, 0xe, 0x1, 0x19, 0x1, 0x1c, 0x1, 0x23, 0x1, 0x2a, 0x1, - 0x31, 0x1, 0x40, 0x1, 0x4d, 0x1, 0x56, 0x1, 0x5f, 0x1, 0x66, 0x1, - 0x6d, 0x1, 0x72, 0x1, 0x77, 0x1, 0x7c, 0x1, 0x88, 0x1, 0x8e, 0x1, - 0x99, 0x1, 0xa0, 0x1, 0xa7, 0x1, 0xac, 0x1, 0xb6, 0x1, 0xc0, 0x1, - 0xca, 0x1, 0xce, 0x1, 0xd8, 0x1, 0xe2, 0x1, 0xec, 0x1, 0xf3, 0x1, - 0xfb, 0x2, 0x4, 0x2, 0x9, 0x2, 0x12, 0x2, 0x19, 0x2, 0x1f, 0x6c, - 0xa4, 0x72, 0xaa, 0xaa, 0xa4, 0xa4, 0xaa, 0xaa, 0x72, 0xa4, 0x6c, 0x6c, - 0x72, 0x72, 0x6c, 0x1e, 0xb, 0x2b, 0xa, 0xf7, 0x53, 0xf7, 0x2e, 0xf7, - 0x2e, 0x4b, 0xa, 0xfb, 0x2e, 0xf7, 0x2e, 0xfb, 0x53, 0xfb, 0x53, 0xfb, - 0x2e, 0xfb, 0x2e, 0xfb, 0x53, 0x1e, 0xb, 0x20, 0xa, 0xe, 0x15, 0x21, - 0xa, 0xb3, 0x16, 0xf7, 0x3c, 0xf7, 0x1d, 0x43, 0xa, 0xf7, 0x3c, 0xf7, - 0x1d, 0x34, 0xa, 0x34, 0xa, 0x43, 0xa, 0x1e, 0xe, 0x16, 0xf7, 0xb0, - 0x9d, 0x6, 0x2a, 0xa, 0xb, 0x2f, 0xa, 0xfc, 0x7d, 0x27, 0xa, 0xb, - 0x7, 0x3c, 0xa, 0xfc, 0x7d, 0x39, 0xa, 0x7, 0x28, 0xa, 0xb, 0x54, - 0x68, 0x78, 0x54, 0x1e, 0xb, 0x6d, 0xa4, 0x72, 0xaa, 0x1e, 0xa9, 0x8c, - 0xa5, 0xa3, 0xaa, 0x1a, 0xa9, 0x71, 0xa5, 0x6d, 0x6c, 0x72, 0x71, 0x6c, - 0x1e, 0xb, 0x54, 0x68, 0x9e, 0xc2, 0x1f, 0xb, 0xfb, 0x53, 0xf7, 0x2e, - 0xfb, 0x2e, 0xf7, 0x53, 0xb, 0x1e, 0xb3, 0x8a, 0x15, 0xf7, 0x3d, 0xf7, - 0x1c, 0x43, 0xa, 0xf7, 0x3d, 0xf7, 0x1d, 0xfb, 0x1d, 0xfb, 0x3c, 0xfb, - 0x3d, 0xfb, 0x1d, 0xfb, 0x1c, 0xfb, 0x3c, 0xb, 0xfb, 0x51, 0x36, 0xfa, - 0x90, 0x2e, 0xa, 0xb, 0x44, 0xa, 0x36, 0x15, 0xd6, 0xb, 0xc2, 0xae, - 0x78, 0x54, 0x1f, 0xb, 0xf7, 0x17, 0xf7, 0x35, 0xf7, 0x35, 0xf7, 0x17, - 0x56, 0xa, 0x41, 0xa, 0xb, 0xc2, 0xae, 0x9e, 0xc2, 0x1e, 0x9d, 0xb, - 0x82, 0xb9, 0x1b, 0xc5, 0xc7, 0xb4, 0xa8, 0x9a, 0x1f, 0x68, 0xac, 0x5, - 0x7c, 0x7d, 0x72, 0x66, 0x53, 0x1b, 0x62, 0x66, 0xb, 0x1e, 0xfb, 0xa9, - 0x79, 0x6, 0x25, 0xa, 0xf7, 0x56, 0xb, 0xfb, 0x1d, 0xfb, 0x3c, 0xfb, - 0x3c, 0xfb, 0x1d, 0xb, 0x1, 0xf7, 0x65, 0xd6, 0x3, 0xb, 0xf7, 0x5c, - 0x40, 0xa, 0x6f, 0xa1, 0x6c, 0x7b, 0x7b, 0x85, 0x81, 0x87, 0x1e, 0xb, - 0x15, 0x20, 0xa, 0xb, 0x88, 0x85, 0x8b, 0x89, 0x8a, 0x1a, 0x7c, 0x9a, - 0x85, 0x96, 0xb, 0x27, 0xa, 0xe, 0xf8, 0xa2, 0xc2, 0xfc, 0xa2, 0x6, - 0xb, 0xa0, 0x76, 0xf9, 0x35, 0x77, 0x1, 0xb, 0x31, 0xa, 0xfb, 0xb0, - 0x45, 0xa, 0xb, 0x8b, 0xc2, 0xf8, 0xdc, 0x77, 0x1, 0xa8, 0x16, 0xf8, - 0x85, 0xc2, 0xfc, 0x85, 0x6, 0xb, 0xf8, 0x45, 0xf7, 0x5b, 0x5, 0xc9, - 0x7, 0xfc, 0x85, 0xfb, 0x7a, 0x5, 0xe, 0xfb, 0xbf, 0xfb, 0xb9, 0x1c, - 0x4, 0xc3, 0x1, 0xb, 0x5, 0x8f, 0x8f, 0x8d, 0x95, 0x91, 0x1a, 0xa8, - 0xb, 0xfb, 0x17, 0xfb, 0x35, 0xfb, 0x35, 0xb, 0xf8, 0xa0, 0xc2, 0xfc, - 0xa0, 0x6, 0xb, 0xf7, 0x1d, 0xf7, 0x3c, 0xb, 0x35, 0xa, 0xf7, 0x65, - 0xb, 0x79, 0x7, 0x2f, 0xa, 0xb, 0xf7, 0xc4, 0x91, 0x76, 0xf7, 0x7f, - 0xc3, 0xf7, 0x7f, 0x77, 0x1, 0xb, 0xc2, 0xf7, 0xfc, 0xc2, 0x1, 0xb, - 0xf7, 0x52, 0xfb, 0x2f, 0xf7, 0x2f, 0xfb, 0x52, 0xfb, 0x53, 0xb, 0x77, - 0x1, 0xf7, 0xac, 0xc3, 0x3, 0xb, 0x7, 0x74, 0x77, 0x7c, 0x6c, 0x1e, - 0xb, 0xf7, 0x53, 0xf7, 0x53, 0xb, 0xfb, 0xf6, 0xfb, 0x45, 0x76, 0xfa, - 0x44, 0x77, 0x1, 0xb, 0xfb, 0x5f, 0xfb, 0x4b, 0xa4, 0xf9, 0xba, 0xa4, - 0x1, 0xb, 0xfb, 0xf2, 0xfb, 0x2f, 0xa4, 0xf9, 0x9f, 0xa4, 0x1, 0xb, - 0x15, 0x2b, 0xa, 0xb, 0xfb, 0xf2, 0xfb, 0x3e, 0x76, 0xf9, 0xf4, 0x77, - 0x1, 0xb, 0xc9, 0x7, 0xfc, 0x85, 0xf7, 0x7a, 0x5, 0x4d, 0x7, 0xb, - 0x67, 0xa8, 0x6e, 0xaf, 0xaf, 0xa7, 0xa8, 0xaf, 0xaf, 0xb, 0xfb, 0x51, - 0x40, 0xa9, 0x35, 0xa, 0xb, 0x36, 0x15, 0xdf, 0xfa, 0x86, 0x37, 0x6, - 0xe, 0x1, 0xb3, 0xc2, 0xf8, 0xda, 0xc2, 0x3, 0xb3, 0xb, 0x41, 0xa, - 0xfb, 0x17, 0xb, 0x15, 0xa9, 0xa6, 0xaa, 0x9f, 0xb8, 0x1b, 0xaa, 0xb, - 0x8a, 0x1f, 0xfc, 0x29, 0x54, 0x6, 0xe, 0x90, 0x90, 0x8f, 0x8e, 0x8d, - 0xb}; diff --git a/core/src/fxge/fontdata/chromefontdata/chromefontdata.h b/core/src/fxge/fontdata/chromefontdata/chromefontdata.h deleted file mode 100644 index 9b640568e5..0000000000 --- a/core/src/fxge/fontdata/chromefontdata/chromefontdata.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2015 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_FONTDATA_CHROMEFONTDATA_CHROMEFONTDATA_H_ -#define CORE_SRC_FXGE_FONTDATA_CHROMEFONTDATA_CHROMEFONTDATA_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -extern const unsigned char g_FoxitFixedItalicFontData[18746]; -extern const unsigned char g_FoxitFixedFontData[17597]; -extern const unsigned char g_FoxitSansItalicFontData[16339]; -extern const unsigned char g_FoxitSansFontData[15025]; -extern const unsigned char g_FoxitSerifItalicFontData[21227]; -extern const unsigned char g_FoxitSerifFontData[19469]; -extern const unsigned char g_FoxitFixedBoldItalicFontData[19151]; -extern const unsigned char g_FoxitFixedBoldFontData[18055]; -extern const unsigned char g_FoxitSansBoldItalicFontData[16418]; -extern const unsigned char g_FoxitSansBoldFontData[16344]; -extern const unsigned char g_FoxitSerifBoldItalicFontData[20733]; -extern const unsigned char g_FoxitSerifBoldFontData[19395]; -extern const unsigned char g_FoxitSymbolFontData[16729]; -extern const unsigned char g_FoxitDingbatsFontData[29513]; -extern const unsigned char g_FoxitSerifMMFontData[113417]; -extern const unsigned char g_FoxitSansMMFontData[66919]; - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // CORE_SRC_FXGE_FONTDATA_CHROMEFONTDATA_CHROMEFONTDATA_H_ diff --git a/core/src/fxge/freetype/fx_freetype.cpp b/core/src/fxge/freetype/fx_freetype.cpp deleted file mode 100644 index 2fc60e913e..0000000000 --- a/core/src/fxge/freetype/fx_freetype.cpp +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_freetype.h" - -#include "third_party/freetype/src/psnames/pstables.h" - -static int xyq_search_node(char* glyph_name, - int name_offset, - int table_offset, - wchar_t unicode) { - int i, count; - - // copy letters - while (1) { - glyph_name[name_offset] = ft_adobe_glyph_list[table_offset] & 0x7f; - name_offset++; - table_offset++; - if (!(ft_adobe_glyph_list[table_offset - 1] & 0x80)) - break; - } - glyph_name[name_offset] = 0; - - // get child count - count = ft_adobe_glyph_list[table_offset] & 0x7f; - - // check if we have value for this node - if (ft_adobe_glyph_list[table_offset] & 0x80) { - unsigned short thiscode = ft_adobe_glyph_list[table_offset + 1] * 256 + - ft_adobe_glyph_list[table_offset + 2]; - if (thiscode == (unsigned short)unicode) // found it! - return 1; - table_offset += 3; - } else { - table_offset++; - } - - // now search in sub-nodes - if (count == 0) - return 0; - for (i = 0; i < count; i++) { - int child_offset = ft_adobe_glyph_list[table_offset + i * 2] * 256 + - ft_adobe_glyph_list[table_offset + i * 2 + 1]; - if (xyq_search_node(glyph_name, name_offset, child_offset, unicode)) - // found in child - return 1; - } - return 0; -} - -#define VARIANT_BIT 0x80000000UL - -int FXFT_unicode_from_adobe_name(const char* glyph_name) { - /* If the name begins with `uni', then the glyph name may be a */ - /* hard-coded unicode character code. */ - if (glyph_name[0] == 'u' && glyph_name[1] == 'n' && glyph_name[2] == 'i') { - /* determine whether the next four characters following are */ - /* hexadecimal. */ - - /* XXX: Add code to deal with ligatures, i.e. glyph names like */ - /* `uniXXXXYYYYZZZZ'... */ - - FT_Int count; - FT_UInt32 value = 0; - const char* p = glyph_name + 3; - - for (count = 4; count > 0; count--, p++) { - char c = *p; - unsigned int d; - - d = (unsigned char)c - '0'; - if (d >= 10) { - d = (unsigned char)c - 'A'; - if (d >= 6) - d = 16; - else - d += 10; - } - - /* Exit if a non-uppercase hexadecimal character was found */ - /* -- this also catches character codes below `0' since such */ - /* negative numbers cast to `unsigned int' are far too big. */ - if (d >= 16) - break; - - value = (value << 4) + d; - } - - /* there must be exactly four hex digits */ - if (count == 0) { - if (*p == '\0') - return value; - if (*p == '.') - return (FT_UInt32)(value | VARIANT_BIT); - } - } - - /* If the name begins with `u', followed by four to six uppercase */ - /* hexadecimal digits, it is a hard-coded unicode character code. */ - if (glyph_name[0] == 'u') { - FT_Int count; - FT_UInt32 value = 0; - const char* p = glyph_name + 1; - - for (count = 6; count > 0; count--, p++) { - char c = *p; - unsigned int d; - - d = (unsigned char)c - '0'; - if (d >= 10) { - d = (unsigned char)c - 'A'; - if (d >= 6) - d = 16; - else - d += 10; - } - - if (d >= 16) - break; - - value = (value << 4) + d; - } - - if (count <= 2) { - if (*p == '\0') - return value; - if (*p == '.') - return (FT_UInt32)(value | VARIANT_BIT); - } - } - - /* Look for a non-initial dot in the glyph name in order to */ - /* find variants like `A.swash', `e.final', etc. */ - { - const char* p = glyph_name; - const char* dot = NULL; - - for (; *p; p++) { - if (*p == '.' && p > glyph_name) { - dot = p; - break; - } - } - - /* now look up the glyph in the Adobe Glyph List */ - if (!dot) - return (FT_UInt32)ft_get_adobe_glyph_index(glyph_name, p); - else - return (FT_UInt32)(ft_get_adobe_glyph_index(glyph_name, dot) | - VARIANT_BIT); - } -} - -void FXFT_adobe_name_from_unicode(char* glyph_name, wchar_t unicode) { - int i, count; - - // start from top level node - count = ft_adobe_glyph_list[1]; - for (i = 0; i < count; i++) { - int child_offset = - ft_adobe_glyph_list[i * 2 + 2] * 256 + ft_adobe_glyph_list[i * 2 + 3]; - if (xyq_search_node(glyph_name, 0, child_offset, unicode)) - return; - } - - // failed, clear the buffer - glyph_name[0] = 0; -} diff --git a/core/src/fxge/ge/fx_ge.cpp b/core/src/fxge/ge/fx_ge.cpp deleted file mode 100644 index d310a3f372..0000000000 --- a/core/src/fxge/ge/fx_ge.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -#include "core/src/fxge/ge/fx_text_int.h" - -static CFX_GEModule* g_pGEModule = NULL; -CFX_GEModule::CFX_GEModule(const char** pUserFontPaths) { - m_pFontCache = NULL; - m_pFontMgr = NULL; - m_FTLibrary = NULL; - m_pCodecModule = NULL; - m_pPlatformData = NULL; - m_pUserFontPaths = pUserFontPaths; -} -CFX_GEModule::~CFX_GEModule() { - delete m_pFontCache; - m_pFontCache = NULL; - delete m_pFontMgr; - m_pFontMgr = NULL; - DestroyPlatform(); -} -CFX_GEModule* CFX_GEModule::Get() { - return g_pGEModule; -} -void CFX_GEModule::Create(const char** userFontPaths) { - g_pGEModule = new CFX_GEModule(userFontPaths); - g_pGEModule->m_pFontMgr = new CFX_FontMgr; - g_pGEModule->InitPlatform(); - g_pGEModule->SetTextGamma(2.2f); -} -void CFX_GEModule::Use(CFX_GEModule* pModule) { - g_pGEModule = pModule; -} -void CFX_GEModule::Destroy() { - delete g_pGEModule; - g_pGEModule = NULL; -} -CFX_FontCache* CFX_GEModule::GetFontCache() { - if (!m_pFontCache) { - m_pFontCache = new CFX_FontCache(); - } - return m_pFontCache; -} -void CFX_GEModule::SetTextGamma(FX_FLOAT gammaValue) { - gammaValue /= 2.2f; - int i = 0; - while (i < 256) { - m_GammaValue[i] = - (uint8_t)(FXSYS_pow((FX_FLOAT)i / 255, gammaValue) * 255.0f + 0.5f); - i++; - } -} -const uint8_t* CFX_GEModule::GetTextGammaTable() { - return m_GammaValue; -} diff --git a/core/src/fxge/ge/fx_ge_device.cpp b/core/src/fxge/ge/fx_ge_device.cpp deleted file mode 100644 index b8ddfec841..0000000000 --- a/core/src/fxge/ge/fx_ge_device.cpp +++ /dev/null @@ -1,474 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -CFX_RenderDevice::CFX_RenderDevice() { - m_pDeviceDriver = NULL; - m_pBitmap = NULL; -} -CFX_RenderDevice::~CFX_RenderDevice() { - delete m_pDeviceDriver; -} -void CFX_RenderDevice::SetDeviceDriver(IFX_RenderDeviceDriver* pDriver) { - delete m_pDeviceDriver; - m_pDeviceDriver = pDriver; - InitDeviceInfo(); -} -void CFX_RenderDevice::InitDeviceInfo() { - m_Width = m_pDeviceDriver->GetDeviceCaps(FXDC_PIXEL_WIDTH); - m_Height = m_pDeviceDriver->GetDeviceCaps(FXDC_PIXEL_HEIGHT); - m_bpp = m_pDeviceDriver->GetDeviceCaps(FXDC_BITS_PIXEL); - m_RenderCaps = m_pDeviceDriver->GetDeviceCaps(FXDC_RENDER_CAPS); - m_DeviceClass = m_pDeviceDriver->GetDeviceCaps(FXDC_DEVICE_CLASS); - if (!m_pDeviceDriver->GetClipBox(&m_ClipBox)) { - m_ClipBox.left = 0; - m_ClipBox.top = 0; - m_ClipBox.right = m_Width; - m_ClipBox.bottom = m_Height; - } -} -FX_BOOL CFX_RenderDevice::StartRendering() { - return m_pDeviceDriver->StartRendering(); -} -void CFX_RenderDevice::EndRendering() { - m_pDeviceDriver->EndRendering(); -} -void CFX_RenderDevice::SaveState() { - m_pDeviceDriver->SaveState(); -} -void CFX_RenderDevice::RestoreState(FX_BOOL bKeepSaved) { - m_pDeviceDriver->RestoreState(bKeepSaved); - UpdateClipBox(); -} -int CFX_RenderDevice::GetDeviceCaps(int caps_id) const { - return m_pDeviceDriver->GetDeviceCaps(caps_id); -} -CFX_Matrix CFX_RenderDevice::GetCTM() const { - return m_pDeviceDriver->GetCTM(); -} -FX_BOOL CFX_RenderDevice::CreateCompatibleBitmap(CFX_DIBitmap* pDIB, - int width, - int height) const { - if (m_RenderCaps & FXRC_CMYK_OUTPUT) { - return pDIB->Create(width, height, m_RenderCaps & FXRC_ALPHA_OUTPUT - ? FXDIB_Cmyka - : FXDIB_Cmyk); - } - if (m_RenderCaps & FXRC_BYTEMASK_OUTPUT) { - return pDIB->Create(width, height, FXDIB_8bppMask); - } -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - return pDIB->Create(width, height, m_RenderCaps & FXRC_ALPHA_OUTPUT - ? FXDIB_Argb - : FXDIB_Rgb32); -#else - return pDIB->Create( - width, height, m_RenderCaps & FXRC_ALPHA_OUTPUT ? FXDIB_Argb : FXDIB_Rgb); -#endif -} -FX_BOOL CFX_RenderDevice::SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) { - if (!m_pDeviceDriver->SetClip_PathFill(pPathData, pObject2Device, - fill_mode)) { - return FALSE; - } - UpdateClipBox(); - return TRUE; -} -FX_BOOL CFX_RenderDevice::SetClip_PathStroke( - const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) { - if (!m_pDeviceDriver->SetClip_PathStroke(pPathData, pObject2Device, - pGraphState)) { - return FALSE; - } - UpdateClipBox(); - return TRUE; -} -FX_BOOL CFX_RenderDevice::SetClip_Rect(const FX_RECT& rect) { - CFX_PathData path; - path.AppendRect(rect.left, rect.bottom, rect.right, rect.top); - if (!SetClip_PathFill(&path, nullptr, FXFILL_WINDING)) - return FALSE; - - UpdateClipBox(); - return TRUE; -} -void CFX_RenderDevice::UpdateClipBox() { - if (m_pDeviceDriver->GetClipBox(&m_ClipBox)) { - return; - } - m_ClipBox.left = 0; - m_ClipBox.top = 0; - m_ClipBox.right = m_Width; - m_ClipBox.bottom = m_Height; -} -FX_BOOL CFX_RenderDevice::DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) { - uint8_t fill_alpha, stroke_alpha; - if (FXGETFLAG_COLORTYPE(alpha_flag)) { - fill_alpha = FXGETFLAG_ALPHA_FILL(alpha_flag); - stroke_alpha = FXGETFLAG_ALPHA_STROKE(alpha_flag); - } else { - fill_alpha = FXARGB_A(fill_color); - stroke_alpha = FXARGB_A(stroke_color); - } - if ((fill_mode & 3) == 0) { - fill_alpha = 0; - } - if (!pGraphState) { - stroke_alpha = 0; - } - if (stroke_alpha == 0 && pPathData->GetPointCount() == 2) { - FX_PATHPOINT* pPoints = pPathData->GetPoints(); - FX_FLOAT x1, x2, y1, y2; - if (pObject2Device) { - pObject2Device->Transform(pPoints[0].m_PointX, pPoints[0].m_PointY, x1, - y1); - pObject2Device->Transform(pPoints[1].m_PointX, pPoints[1].m_PointY, x2, - y2); - } else { - x1 = pPoints[0].m_PointX; - y1 = pPoints[0].m_PointY; - x2 = pPoints[1].m_PointX; - y2 = pPoints[1].m_PointY; - } - DrawCosmeticLine(x1, y1, x2, y2, fill_color, fill_mode, alpha_flag, - pIccTransform, blend_type); - return TRUE; - } - if ((pPathData->GetPointCount() == 5 || pPathData->GetPointCount() == 4) && - stroke_alpha == 0) { - CFX_FloatRect rect_f; - if (!(fill_mode & FXFILL_RECT_AA) && - pPathData->IsRect(pObject2Device, &rect_f)) { - FX_RECT rect_i = rect_f.GetOutterRect(); - int width = (int)FXSYS_ceil(rect_f.right - rect_f.left); - if (width < 1) { - width = 1; - if (rect_i.left == rect_i.right) { - rect_i.right++; - } - } - int height = (int)FXSYS_ceil(rect_f.top - rect_f.bottom); - if (height < 1) { - height = 1; - if (rect_i.bottom == rect_i.top) { - rect_i.bottom++; - } - } - if (rect_i.Width() >= width + 1) { - if (rect_f.left - (FX_FLOAT)(rect_i.left) > - (FX_FLOAT)(rect_i.right) - rect_f.right) { - rect_i.left++; - } else { - rect_i.right--; - } - } - if (rect_i.Height() >= height + 1) { - if (rect_f.top - (FX_FLOAT)(rect_i.top) > - (FX_FLOAT)(rect_i.bottom) - rect_f.bottom) { - rect_i.top++; - } else { - rect_i.bottom--; - } - } - if (FillRect(&rect_i, fill_color, alpha_flag, pIccTransform, - blend_type)) { - return TRUE; - } - } - } - if ((fill_mode & 3) && stroke_alpha == 0 && !(fill_mode & FX_FILL_STROKE) && - !(fill_mode & FX_FILL_TEXT_MODE)) { - CFX_PathData newPath; - FX_BOOL bThin = FALSE; - if (pPathData->GetZeroAreaPath(newPath, (CFX_Matrix*)pObject2Device, bThin, - m_pDeviceDriver->GetDriverType())) { - CFX_GraphStateData graphState; - graphState.m_LineWidth = 0.0f; - FX_DWORD strokecolor = fill_color; - if (bThin) { - if (FXGETFLAG_COLORTYPE(alpha_flag)) { - FXSETFLAG_ALPHA_STROKE(alpha_flag, fill_alpha >> 2); - } else { - strokecolor = - (((fill_alpha >> 2) << 24) | (strokecolor & 0x00ffffff)); - } - } - CFX_Matrix* pMatrix = NULL; - if (pObject2Device && !pObject2Device->IsIdentity()) { - pMatrix = (CFX_Matrix*)pObject2Device; - } - int smooth_path = FX_ZEROAREA_FILL; - if (fill_mode & FXFILL_NOPATHSMOOTH) { - smooth_path |= FXFILL_NOPATHSMOOTH; - } - m_pDeviceDriver->DrawPath(&newPath, pMatrix, &graphState, 0, strokecolor, - smooth_path, alpha_flag, pIccTransform, - blend_type); - } - } - if ((fill_mode & 3) && fill_alpha && stroke_alpha < 0xff && - (fill_mode & FX_FILL_STROKE)) { - if (!(m_RenderCaps & FXRC_GET_BITS)) { - return FALSE; - } - CFX_FloatRect bbox; - if (pGraphState) { - bbox = pPathData->GetBoundingBox(pGraphState->m_LineWidth, - pGraphState->m_MiterLimit); - } else { - bbox = pPathData->GetBoundingBox(); - } - if (pObject2Device) { - bbox.Transform(pObject2Device); - } - CFX_Matrix ctm = GetCTM(); - FX_FLOAT fScaleX = FXSYS_fabs(ctm.a); - FX_FLOAT fScaleY = FXSYS_fabs(ctm.d); - FX_RECT rect = bbox.GetOutterRect(); - CFX_DIBitmap bitmap, Backdrop; - if (!CreateCompatibleBitmap(&bitmap, FXSYS_round(rect.Width() * fScaleX), - FXSYS_round(rect.Height() * fScaleY))) { - return FALSE; - } - if (bitmap.HasAlpha()) { - bitmap.Clear(0); - Backdrop.Copy(&bitmap); - } else { - if (!m_pDeviceDriver->GetDIBits(&bitmap, rect.left, rect.top, NULL)) { - return FALSE; - } - Backdrop.Copy(&bitmap); - } - CFX_FxgeDevice bitmap_device; - bitmap_device.Attach(&bitmap, 0, FALSE, &Backdrop, TRUE); - CFX_Matrix matrix; - if (pObject2Device) { - matrix = *pObject2Device; - } - matrix.TranslateI(-rect.left, -rect.top); - matrix.Concat(fScaleX, 0, 0, fScaleY, 0, 0); - if (!bitmap_device.GetDeviceDriver()->DrawPath( - pPathData, &matrix, pGraphState, fill_color, stroke_color, - fill_mode, alpha_flag, pIccTransform, blend_type)) { - return FALSE; - } - FX_RECT src_rect(0, 0, FXSYS_round(rect.Width() * fScaleX), - FXSYS_round(rect.Height() * fScaleY)); - return m_pDeviceDriver->SetDIBits(&bitmap, 0, &src_rect, rect.left, - rect.top, FXDIB_BLEND_NORMAL); - } - return m_pDeviceDriver->DrawPath(pPathData, pObject2Device, pGraphState, - fill_color, stroke_color, fill_mode, - alpha_flag, pIccTransform, blend_type); -} -FX_BOOL CFX_RenderDevice::SetPixel(int x, - int y, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - if (m_pDeviceDriver->SetPixel(x, y, color, alpha_flag, pIccTransform)) { - return TRUE; - } - FX_RECT rect(x, y, x + 1, y + 1); - return FillRect(&rect, color, alpha_flag, pIccTransform); -} -FX_BOOL CFX_RenderDevice::FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (m_pDeviceDriver->FillRect(pRect, fill_color, alpha_flag, pIccTransform, - blend_type)) { - return TRUE; - } - if (!(m_RenderCaps & FXRC_GET_BITS)) { - return FALSE; - } - CFX_DIBitmap bitmap; - if (!CreateCompatibleBitmap(&bitmap, pRect->Width(), pRect->Height())) { - return FALSE; - } - if (!m_pDeviceDriver->GetDIBits(&bitmap, pRect->left, pRect->top)) { - return FALSE; - } - if (!bitmap.CompositeRect(0, 0, pRect->Width(), pRect->Height(), fill_color, - alpha_flag, pIccTransform)) { - return FALSE; - } - FX_RECT src_rect(0, 0, pRect->Width(), pRect->Height()); - m_pDeviceDriver->SetDIBits(&bitmap, 0, &src_rect, pRect->left, pRect->top, - FXDIB_BLEND_NORMAL); - return TRUE; -} -FX_BOOL CFX_RenderDevice::DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_DWORD color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (((m_RenderCaps & FXRC_ALPHA_PATH) && - (FXGETFLAG_COLORTYPE(alpha_flag) && - FXGETFLAG_ALPHA_FILL(alpha_flag) == 0xff)) || - color >= 0xff000000) { - if (m_pDeviceDriver->DrawCosmeticLine(x1, y1, x2, y2, color, alpha_flag, - pIccTransform, blend_type)) { - return TRUE; - } - } - CFX_GraphStateData graph_state; - CFX_PathData path; - path.SetPointCount(2); - path.SetPoint(0, x1, y1, FXPT_MOVETO); - path.SetPoint(1, x2, y2, FXPT_LINETO); - return m_pDeviceDriver->DrawPath(&path, NULL, &graph_state, 0, color, - fill_mode, alpha_flag, pIccTransform, - blend_type); -} -FX_BOOL CFX_RenderDevice::GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform) { - if (!(m_RenderCaps & FXRC_GET_BITS)) { - return FALSE; - } - return m_pDeviceDriver->GetDIBits(pBitmap, left, top, pIccTransform); -} -CFX_DIBitmap* CFX_RenderDevice::GetBackDrop() { - return m_pDeviceDriver->GetBackDrop(); -} -FX_BOOL CFX_RenderDevice::SetDIBits(const CFX_DIBSource* pBitmap, - int left, - int top, - int blend_mode, - void* pIccTransform) { - ASSERT(!pBitmap->IsAlphaMask()); - CFX_Matrix ctm = GetCTM(); - FX_FLOAT fScaleX = FXSYS_fabs(ctm.a); - FX_FLOAT fScaleY = FXSYS_fabs(ctm.d); - FX_RECT dest_rect(left, top, - FXSYS_round(left + pBitmap->GetWidth() / fScaleX), - FXSYS_round(top + pBitmap->GetHeight() / fScaleY)); - dest_rect.Intersect(m_ClipBox); - if (dest_rect.IsEmpty()) { - return TRUE; - } - FX_RECT src_rect(dest_rect.left - left, dest_rect.top - top, - dest_rect.left - left + dest_rect.Width(), - dest_rect.top - top + dest_rect.Height()); - src_rect.left = FXSYS_round(src_rect.left * fScaleX); - src_rect.top = FXSYS_round(src_rect.top * fScaleY); - src_rect.right = FXSYS_round(src_rect.right * fScaleX); - src_rect.bottom = FXSYS_round(src_rect.bottom * fScaleY); - if ((blend_mode != FXDIB_BLEND_NORMAL && !(m_RenderCaps & FXRC_BLEND_MODE)) || - (pBitmap->HasAlpha() && !(m_RenderCaps & FXRC_ALPHA_IMAGE))) { - if (!(m_RenderCaps & FXRC_GET_BITS)) { - return FALSE; - } - int bg_pixel_width = FXSYS_round(dest_rect.Width() * fScaleX); - int bg_pixel_height = FXSYS_round(dest_rect.Height() * fScaleY); - CFX_DIBitmap background; - if (!background.Create( - bg_pixel_width, bg_pixel_height, - (m_RenderCaps & FXRC_CMYK_OUTPUT) ? FXDIB_Cmyk : FXDIB_Rgb32)) { - return FALSE; - } - if (!m_pDeviceDriver->GetDIBits(&background, dest_rect.left, - dest_rect.top)) { - return FALSE; - } - if (!background.CompositeBitmap(0, 0, bg_pixel_width, bg_pixel_height, - pBitmap, src_rect.left, src_rect.top, - blend_mode, NULL, FALSE, pIccTransform)) { - return FALSE; - } - FX_RECT src_rect(0, 0, bg_pixel_width, bg_pixel_height); - return m_pDeviceDriver->SetDIBits(&background, 0, &src_rect, dest_rect.left, - dest_rect.top, FXDIB_BLEND_NORMAL); - } - return m_pDeviceDriver->SetDIBits(pBitmap, 0, &src_rect, dest_rect.left, - dest_rect.top, blend_mode, 0, - pIccTransform); -} -FX_BOOL CFX_RenderDevice::StretchDIBits(const CFX_DIBSource* pBitmap, - int left, - int top, - int dest_width, - int dest_height, - FX_DWORD flags, - void* pIccTransform, - int blend_mode) { - FX_RECT dest_rect(left, top, left + dest_width, top + dest_height); - FX_RECT clip_box = m_ClipBox; - clip_box.Intersect(dest_rect); - if (clip_box.IsEmpty()) { - return TRUE; - } - return m_pDeviceDriver->StretchDIBits(pBitmap, 0, left, top, dest_width, - dest_height, &clip_box, flags, 0, - pIccTransform, blend_mode); -} -FX_BOOL CFX_RenderDevice::SetBitMask(const CFX_DIBSource* pBitmap, - int left, - int top, - FX_DWORD argb, - int alpha_flag, - void* pIccTransform) { - FX_RECT src_rect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); - return m_pDeviceDriver->SetDIBits(pBitmap, argb, &src_rect, left, top, - FXDIB_BLEND_NORMAL, alpha_flag, - pIccTransform); -} -FX_BOOL CFX_RenderDevice::StretchBitMask(const CFX_DIBSource* pBitmap, - int left, - int top, - int dest_width, - int dest_height, - FX_DWORD argb, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform) { - FX_RECT dest_rect(left, top, left + dest_width, top + dest_height); - FX_RECT clip_box = m_ClipBox; - clip_box.Intersect(dest_rect); - return m_pDeviceDriver->StretchDIBits(pBitmap, argb, left, top, dest_width, - dest_height, &clip_box, flags, - alpha_flag, pIccTransform); -} -FX_BOOL CFX_RenderDevice::StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD argb, - const CFX_Matrix* pMatrix, - FX_DWORD flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_mode) { - return m_pDeviceDriver->StartDIBits(pBitmap, bitmap_alpha, argb, pMatrix, - flags, handle, alpha_flag, pIccTransform, - blend_mode); -} -FX_BOOL CFX_RenderDevice::ContinueDIBits(void* handle, IFX_Pause* pPause) { - return m_pDeviceDriver->ContinueDIBits(handle, pPause); -} -void CFX_RenderDevice::CancelDIBits(void* handle) { - m_pDeviceDriver->CancelDIBits(handle); -} diff --git a/core/src/fxge/ge/fx_ge_font.cpp b/core/src/fxge/ge/fx_ge_font.cpp deleted file mode 100644 index 672c28d86b..0000000000 --- a/core/src/fxge/ge/fx_ge_font.cpp +++ /dev/null @@ -1,555 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/ge/fx_text_int.h" - -#define EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em) - -#ifdef PDF_ENABLE_XFA -extern void _FPDFAPI_GetInternalFontData(int id1, - const uint8_t*& data, - FX_DWORD& size); -#endif // PDF_ENABLE_XFA - -namespace { - -#ifdef PDF_ENABLE_XFA -const FX_DWORD g_EncodingID[] = { - FXFM_ENCODING_MS_SYMBOL, - FXFM_ENCODING_UNICODE, - FXFM_ENCODING_MS_SJIS, - FXFM_ENCODING_MS_GB2312, - FXFM_ENCODING_MS_BIG5, - FXFM_ENCODING_MS_WANSUNG, - FXFM_ENCODING_MS_JOHAB, - FXFM_ENCODING_ADOBE_STANDARD, - FXFM_ENCODING_ADOBE_EXPERT, - FXFM_ENCODING_ADOBE_CUSTOM, - FXFM_ENCODING_ADOBE_LATIN_1, - FXFM_ENCODING_OLD_LATIN_2, - FXFM_ENCODING_APPLE_ROMAN, -}; - -CFX_UnicodeEncodingEx* _FXFM_CreateFontEncoding(CFX_Font* pFont, - FX_DWORD nEncodingID) { - if (FXFT_Select_Charmap(pFont->GetFace(), nEncodingID)) - return nullptr; - return new CFX_UnicodeEncodingEx(pFont, nEncodingID); -} -#endif // PDF_ENABLE_XFA - -FXFT_Face FT_LoadFont(const uint8_t* pData, int size) { - return CFX_GEModule::Get()->GetFontMgr()->GetFixedFace(pData, size, 0); -} - -} // namespace - -CFX_Font::CFX_Font() { - m_pSubstFont = NULL; - m_Face = NULL; - m_bEmbedded = FALSE; - m_bVertical = FALSE; - m_pFontData = NULL; - m_pFontDataAllocation = NULL; - m_dwSize = 0; - m_pGsubData = NULL; - m_pPlatformFont = NULL; - m_pPlatformFontCollection = NULL; - m_pDwFont = NULL; - m_hHandle = NULL; - m_bDwLoaded = FALSE; -#ifdef PDF_ENABLE_XFA - m_bLogic = FALSE; - m_pOwnedStream = NULL; -#endif // PDF_ENABLE_XFA -} - -#ifdef PDF_ENABLE_XFA -FX_BOOL CFX_Font::LoadClone(const CFX_Font* pFont) { - if (pFont == NULL) { - return FALSE; - } - m_bLogic = TRUE; - if (pFont->m_pSubstFont) { - m_pSubstFont = new CFX_SubstFont; - m_pSubstFont->m_Charset = pFont->m_pSubstFont->m_Charset; - m_pSubstFont->m_ExtHandle = pFont->m_pSubstFont->m_ExtHandle; - m_pSubstFont->m_SubstFlags = pFont->m_pSubstFont->m_SubstFlags; - m_pSubstFont->m_Weight = pFont->m_pSubstFont->m_Weight; - m_pSubstFont->m_Family = pFont->m_pSubstFont->m_Family; - m_pSubstFont->m_ItalicAngle = pFont->m_pSubstFont->m_ItalicAngle; - } - if (pFont->m_OtfFontData.GetSize()) { - m_OtfFontData.AttachData(pFont->m_OtfFontData.GetBuffer(), - pFont->m_OtfFontData.GetSize()); - } - m_Face = pFont->m_Face; - m_bEmbedded = pFont->m_bEmbedded; - m_bVertical = pFont->m_bVertical; - m_dwSize = pFont->m_dwSize; - m_pFontData = pFont->m_pFontData; - m_pGsubData = pFont->m_pGsubData; - m_pPlatformFont = pFont->m_pPlatformFont; - m_pPlatformFontCollection = pFont->m_pPlatformFontCollection; - m_pDwFont = pFont->m_pDwFont; - m_hHandle = pFont->m_hHandle; - m_bDwLoaded = pFont->m_bDwLoaded; - m_pOwnedStream = pFont->m_pOwnedStream; - return TRUE; -} -#endif // PDF_ENABLE_XFA - -CFX_Font::~CFX_Font() { - delete m_pSubstFont; - FX_Free(m_pFontDataAllocation); -#ifdef PDF_ENABLE_XFA - if (m_bLogic) { - m_OtfFontData.DetachBuffer(); - return; - } -#endif // PDF_ENABLE_XFA - if (m_Face) { -#ifndef PDF_ENABLE_XFA - if (FXFT_Get_Face_External_Stream(m_Face)) { - FXFT_Clear_Face_External_Stream(m_Face); - } -#endif // PDF_ENABLE_XFA - if (m_bEmbedded) { - DeleteFace(); - } else { - CFX_GEModule::Get()->GetFontMgr()->ReleaseFace(m_Face); - } - } -#ifdef PDF_ENABLE_XFA - FX_Free(m_pOwnedStream); -#endif // PDF_ENABLE_XFA - FX_Free(m_pGsubData); -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - ReleasePlatformResource(); -#endif -} -void CFX_Font::DeleteFace() { - FXFT_Done_Face(m_Face); - m_Face = NULL; -} -void CFX_Font::LoadSubst(const CFX_ByteString& face_name, - FX_BOOL bTrueType, - FX_DWORD flags, - int weight, - int italic_angle, - int CharsetCP, - FX_BOOL bVertical) { - m_bEmbedded = FALSE; - m_bVertical = bVertical; - m_pSubstFont = new CFX_SubstFont; - m_Face = CFX_GEModule::Get()->GetFontMgr()->FindSubstFont( - face_name, bTrueType, flags, weight, italic_angle, CharsetCP, - m_pSubstFont); -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if (m_pSubstFont->m_ExtHandle) { - m_pPlatformFont = m_pSubstFont->m_ExtHandle; - m_pSubstFont->m_ExtHandle = NULL; - } -#endif - if (m_Face) { - m_pFontData = FXFT_Get_Face_Stream_Base(m_Face); - m_dwSize = FXFT_Get_Face_Stream_Size(m_Face); - } -} -#ifdef PDF_ENABLE_XFA -extern "C" { -unsigned long _FTStreamRead(FXFT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count) { - if (count == 0) { - return 0; - } - IFX_FileRead* pFile = (IFX_FileRead*)stream->descriptor.pointer; - int res = pFile->ReadBlock(buffer, offset, count); - if (res) { - return count; - } - return 0; -} -void _FTStreamClose(FXFT_Stream stream) {} -}; -FX_BOOL _LoadFile(FXFT_Library library, - FXFT_Face* Face, - IFX_FileRead* pFile, - FXFT_Stream* stream, - int32_t faceIndex = 0) { - FXFT_Stream stream1 = (FXFT_Stream)FX_Alloc(uint8_t, sizeof(FXFT_StreamRec)); - stream1->base = NULL; - stream1->size = (unsigned long)pFile->GetSize(); - stream1->pos = 0; - stream1->descriptor.pointer = pFile; - stream1->close = _FTStreamClose; - stream1->read = _FTStreamRead; - FXFT_Open_Args args; - args.flags = FT_OPEN_STREAM; - args.stream = stream1; - if (FXFT_Open_Face(library, &args, faceIndex, Face)) { - FX_Free(stream1); - return FALSE; - } - if (stream) { - *stream = stream1; - } - return TRUE; -} - -FX_BOOL CFX_Font::LoadFile(IFX_FileRead* pFile, - int nFaceIndex, - int* pFaceCount) { - m_bEmbedded = FALSE; - - CFX_FontMgr* pFontMgr = CFX_GEModule::Get()->GetFontMgr(); - pFontMgr->InitFTLibrary(); - FXFT_Library library = pFontMgr->GetFTLibrary(); - - FXFT_Stream stream = nullptr; - if (!_LoadFile(library, &m_Face, pFile, &stream, nFaceIndex)) - return FALSE; - - if (pFaceCount) - *pFaceCount = (int)m_Face->num_faces; - m_pOwnedStream = stream; - FXFT_Set_Pixel_Sizes(m_Face, 0, 64); - return TRUE; -} -#endif // PDF_ENABLE_XFA - -int CFX_Font::GetGlyphWidth(FX_DWORD glyph_index) { - if (!m_Face) { - return 0; - } - if (m_pSubstFont && (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM)) { - AdjustMMParams(glyph_index, 0, 0); - } - int err = FXFT_Load_Glyph( - m_Face, glyph_index, - FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); - if (err) { - return 0; - } - int width = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Glyph_HoriAdvance(m_Face)); - return width; -} - -FX_BOOL CFX_Font::LoadEmbedded(const uint8_t* data, FX_DWORD size) { - m_pFontDataAllocation = FX_Alloc(uint8_t, size); - FXSYS_memcpy(m_pFontDataAllocation, data, size); - m_Face = FT_LoadFont(m_pFontDataAllocation, size); - m_pFontData = m_pFontDataAllocation; - m_bEmbedded = TRUE; - m_dwSize = size; - return m_Face != NULL; -} - -FX_BOOL CFX_Font::IsTTFont() const { - if (!m_Face) - return FALSE; - return FXFT_Is_Face_TT_OT(m_Face) == FXFT_FACE_FLAG_SFNT; -} - -int CFX_Font::GetAscent() const { - if (!m_Face) - return 0; - return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_Ascender(m_Face)); -} - -int CFX_Font::GetDescent() const { - if (!m_Face) - return 0; - return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_Descender(m_Face)); -} - -FX_BOOL CFX_Font::GetGlyphBBox(FX_DWORD glyph_index, FX_RECT& bbox) { - if (!m_Face) - return FALSE; - - if (FXFT_Is_Face_Tricky(m_Face)) { - int error = FXFT_Set_Char_Size(m_Face, 0, 1000 * 64, 72, 72); - if (error) { - return FALSE; - } - error = FXFT_Load_Glyph(m_Face, glyph_index, - FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); - if (error) { - return FALSE; - } - FXFT_BBox cbox; - FT_Glyph glyph; - error = FXFT_Get_Glyph(((FXFT_Face)m_Face)->glyph, &glyph); - if (error) { - return FALSE; - } - FXFT_Glyph_Get_CBox(glyph, FXFT_GLYPH_BBOX_PIXELS, &cbox); - int pixel_size_x = ((FXFT_Face)m_Face)->size->metrics.x_ppem, - pixel_size_y = ((FXFT_Face)m_Face)->size->metrics.y_ppem; - if (pixel_size_x == 0 || pixel_size_y == 0) { - bbox.left = cbox.xMin; - bbox.right = cbox.xMax; - bbox.top = cbox.yMax; - bbox.bottom = cbox.yMin; - } else { - bbox.left = cbox.xMin * 1000 / pixel_size_x; - bbox.right = cbox.xMax * 1000 / pixel_size_x; - bbox.top = cbox.yMax * 1000 / pixel_size_y; - bbox.bottom = cbox.yMin * 1000 / pixel_size_y; - } - if (bbox.top > FXFT_Get_Face_Ascender(m_Face)) { - bbox.top = FXFT_Get_Face_Ascender(m_Face); - } - if (bbox.bottom < FXFT_Get_Face_Descender(m_Face)) { - bbox.bottom = FXFT_Get_Face_Descender(m_Face); - } - FT_Done_Glyph(glyph); - return FXFT_Set_Pixel_Sizes(m_Face, 0, 64) == 0; - } - if (FXFT_Load_Glyph( - m_Face, glyph_index, - FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH)) { - return FALSE; - } - int em = FXFT_Get_Face_UnitsPerEM(m_Face); - if (em == 0) { - bbox.left = FXFT_Get_Glyph_HoriBearingX(m_Face); - bbox.bottom = FXFT_Get_Glyph_HoriBearingY(m_Face); - bbox.top = bbox.bottom - FXFT_Get_Glyph_Height(m_Face); - bbox.right = bbox.left + FXFT_Get_Glyph_Width(m_Face); - } else { - bbox.left = FXFT_Get_Glyph_HoriBearingX(m_Face) * 1000 / em; - bbox.top = - (FXFT_Get_Glyph_HoriBearingY(m_Face) - FXFT_Get_Glyph_Height(m_Face)) * - 1000 / em; - bbox.right = - (FXFT_Get_Glyph_HoriBearingX(m_Face) + FXFT_Get_Glyph_Width(m_Face)) * - 1000 / em; - bbox.bottom = (FXFT_Get_Glyph_HoriBearingY(m_Face)) * 1000 / em; - } - return TRUE; -} - -FX_BOOL CFX_Font::IsItalic() const { - if (!m_Face) - return FALSE; - - FX_BOOL ret = FXFT_Is_Face_Italic(m_Face) == FXFT_STYLE_FLAG_ITALIC; - if (!ret) { - CFX_ByteString str(FXFT_Get_Face_Style_Name(m_Face)); - str.MakeLower(); - if (str.Find("italic") != -1) { - ret = TRUE; - } - } - return ret; -} - -FX_BOOL CFX_Font::IsBold() const { - if (!m_Face) - return FALSE; - return FXFT_Is_Face_Bold(m_Face) == FXFT_STYLE_FLAG_BOLD; -} - -FX_BOOL CFX_Font::IsFixedWidth() const { - if (!m_Face) - return FALSE; - return FXFT_Is_Face_fixedwidth(m_Face); -} - -CFX_WideString CFX_Font::GetPsName() const { - if (!m_Face) { - return CFX_WideString(); - } - CFX_WideString psName = - CFX_WideString::FromLocal(FXFT_Get_Postscript_Name(m_Face)); - if (psName.IsEmpty()) { - psName = CFX_WideString::FromLocal("Untitled"); - } - return psName; -} -CFX_ByteString CFX_Font::GetFamilyName() const { - if (!m_Face && !m_pSubstFont) { - return CFX_ByteString(); - } - if (m_Face) { - return CFX_ByteString(FXFT_Get_Face_Family_Name(m_Face)); - } - return m_pSubstFont->m_Family; -} -CFX_ByteString CFX_Font::GetFaceName() const { - if (!m_Face && !m_pSubstFont) { - return CFX_ByteString(); - } - if (m_Face) { - CFX_ByteString facename; - CFX_ByteString style = CFX_ByteString(FXFT_Get_Face_Style_Name(m_Face)); - facename = GetFamilyName(); - if (facename.IsEmpty()) { - facename = "Untitled"; - } - if (!style.IsEmpty() && style != "Regular") { - facename += " " + style; - } - return facename; - } - return m_pSubstFont->m_Family; -} -FX_BOOL CFX_Font::GetBBox(FX_RECT& bbox) { - if (!m_Face) { - return FALSE; - } - int em = FXFT_Get_Face_UnitsPerEM(m_Face); - if (em == 0) { - bbox.left = FXFT_Get_Face_xMin(m_Face); - bbox.bottom = FXFT_Get_Face_yMax(m_Face); - bbox.top = FXFT_Get_Face_yMin(m_Face); - bbox.right = FXFT_Get_Face_xMax(m_Face); - } else { - bbox.left = FXFT_Get_Face_xMin(m_Face) * 1000 / em; - bbox.top = FXFT_Get_Face_yMin(m_Face) * 1000 / em; - bbox.right = FXFT_Get_Face_xMax(m_Face) * 1000 / em; - bbox.bottom = FXFT_Get_Face_yMax(m_Face) * 1000 / em; - } - return TRUE; -} - -int CFX_Font::GetHeight() const { - if (!m_Face) - return 0; - - return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_Height(m_Face)); -} - -int CFX_Font::GetMaxAdvanceWidth() const { - if (!m_Face) - return 0; - - return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_MaxAdvanceWidth(m_Face)); -} - -int CFX_Font::GetULPos() const { - if (!m_Face) - return 0; - - return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_UnderLinePosition(m_Face)); -} - -int CFX_Font::GetULthickness() const { - if (!m_Face) - return 0; - - return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), - FXFT_Get_Face_UnderLineThickness(m_Face)); -} - -CFX_UnicodeEncoding::CFX_UnicodeEncoding(CFX_Font* pFont) : m_pFont(pFont) { -} - -CFX_UnicodeEncoding::~CFX_UnicodeEncoding() { -} - -FX_DWORD CFX_UnicodeEncoding::GlyphFromCharCode(FX_DWORD charcode) { - FXFT_Face face = m_pFont->GetFace(); - if (!face) - return charcode; - - if (FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE) == 0) - return FXFT_Get_Char_Index(face, charcode); - - if (m_pFont->GetSubstFont() && m_pFont->GetSubstFont()->m_Charset == 2) { - FX_DWORD index = 0; - if (FXFT_Select_Charmap(face, FXFT_ENCODING_MS_SYMBOL) == 0) - index = FXFT_Get_Char_Index(face, charcode); - if (!index && !FXFT_Select_Charmap(face, FXFT_ENCODING_APPLE_ROMAN)) - return FXFT_Get_Char_Index(face, charcode); - } - return charcode; -} - -#ifdef PDF_ENABLE_XFA -CFX_UnicodeEncodingEx::CFX_UnicodeEncodingEx(CFX_Font* pFont, - FX_DWORD EncodingID) - : CFX_UnicodeEncoding(pFont), m_nEncodingID(EncodingID) { -} - -CFX_UnicodeEncodingEx::~CFX_UnicodeEncodingEx() { -} - -FX_DWORD CFX_UnicodeEncodingEx::GlyphFromCharCode(FX_DWORD charcode) { - FXFT_Face face = m_pFont->GetFace(); - FT_UInt nIndex = FXFT_Get_Char_Index(face, charcode); - if (nIndex > 0) { - return nIndex; - } - int nmaps = FXFT_Get_Face_CharmapCount(face); - int m = 0; - while (m < nmaps) { - int nEncodingID = - FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[m++]); - if (m_nEncodingID == nEncodingID) { - continue; - } - int error = FXFT_Select_Charmap(face, nEncodingID); - if (error) { - continue; - } - nIndex = FXFT_Get_Char_Index(face, charcode); - if (nIndex > 0) { - m_nEncodingID = nEncodingID; - return nIndex; - } - } - FXFT_Select_Charmap(face, m_nEncodingID); - return 0; -} - -FX_DWORD CFX_UnicodeEncodingEx::CharCodeFromUnicode(FX_WCHAR Unicode) const { - if (m_nEncodingID == FXFM_ENCODING_UNICODE || - m_nEncodingID == FXFM_ENCODING_MS_SYMBOL) { - return Unicode; - } - FXFT_Face face = m_pFont->GetFace(); - int nmaps = FXFT_Get_Face_CharmapCount(face); - for (int i = 0; i < nmaps; i++) { - int nEncodingID = - FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]); - if (nEncodingID == FXFM_ENCODING_UNICODE || - nEncodingID == FXFM_ENCODING_MS_SYMBOL) { - return Unicode; - } - } - return -1; -} - -CFX_UnicodeEncodingEx* FX_CreateFontEncodingEx(CFX_Font* pFont, - FX_DWORD nEncodingID) { - if (!pFont || !pFont->GetFace()) - return nullptr; - - if (nEncodingID != FXFM_ENCODING_NONE) - return _FXFM_CreateFontEncoding(pFont, nEncodingID); - - for (size_t i = 0; i < FX_ArraySize(g_EncodingID); ++i) { - CFX_UnicodeEncodingEx* pFontEncoding = - _FXFM_CreateFontEncoding(pFont, g_EncodingID[i]); - if (pFontEncoding) { - return pFontEncoding; - } - } - return NULL; -} -#endif // PDF_ENABLE_XFA diff --git a/core/src/fxge/ge/fx_ge_fontmap.cpp b/core/src/fxge/ge/fx_ge_fontmap.cpp deleted file mode 100644 index 2ad1e5c9de..0000000000 --- a/core/src/fxge/ge/fx_ge_fontmap.cpp +++ /dev/null @@ -1,1623 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include -#include -#include - -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/fontdata/chromefontdata/chromefontdata.h" -#include "core/src/fxge/ge/fx_text_int.h" -#include "third_party/base/stl_util.h" - -#define GET_TT_SHORT(w) (FX_WORD)(((w)[0] << 8) | (w)[1]) -#define GET_TT_LONG(w) \ - (FX_DWORD)(((w)[0] << 24) | ((w)[1] << 16) | ((w)[2] << 8) | (w)[3]) - -#define FX_FONT_STYLE_None 0x00 -#define FX_FONT_STYLE_Bold 0x01 -#define FX_FONT_STYLE_Italic 0x02 -#define FX_FONT_STYLE_BoldBold 0x04 - -namespace { - -struct BuiltinFont { - const uint8_t* m_pFontData; - FX_DWORD m_dwSize; -}; - -const BuiltinFont g_FoxitFonts[14] = { - {g_FoxitFixedFontData, 17597}, - {g_FoxitFixedBoldFontData, 18055}, - {g_FoxitFixedBoldItalicFontData, 19151}, - {g_FoxitFixedItalicFontData, 18746}, - {g_FoxitSansFontData, 15025}, - {g_FoxitSansBoldFontData, 16344}, - {g_FoxitSansBoldItalicFontData, 16418}, - {g_FoxitSansItalicFontData, 16339}, - {g_FoxitSerifFontData, 19469}, - {g_FoxitSerifBoldFontData, 19395}, - {g_FoxitSerifBoldItalicFontData, 20733}, - {g_FoxitSerifItalicFontData, 21227}, - {g_FoxitSymbolFontData, 16729}, - {g_FoxitDingbatsFontData, 29513}, -}; - -const BuiltinFont g_MMFonts[2] = { - {g_FoxitSerifMMFontData, 113417}, - {g_FoxitSansMMFontData, 66919}, -}; - -const FX_CHAR* const g_Base14FontNames[14] = { - "Courier", - "Courier-Bold", - "Courier-BoldOblique", - "Courier-Oblique", - "Helvetica", - "Helvetica-Bold", - "Helvetica-BoldOblique", - "Helvetica-Oblique", - "Times-Roman", - "Times-Bold", - "Times-BoldItalic", - "Times-Italic", - "Symbol", - "ZapfDingbats", -}; - -const struct AltFontName { - const FX_CHAR* m_pName; - int m_Index; -} g_AltFontNames[] = { - {"Arial", 4}, - {"Arial,Bold", 5}, - {"Arial,BoldItalic", 6}, - {"Arial,Italic", 7}, - {"Arial-Bold", 5}, - {"Arial-BoldItalic", 6}, - {"Arial-BoldItalicMT", 6}, - {"Arial-BoldMT", 5}, - {"Arial-Italic", 7}, - {"Arial-ItalicMT", 7}, - {"ArialBold", 5}, - {"ArialBoldItalic", 6}, - {"ArialItalic", 7}, - {"ArialMT", 4}, - {"ArialMT,Bold", 5}, - {"ArialMT,BoldItalic", 6}, - {"ArialMT,Italic", 7}, - {"ArialRoundedMTBold", 5}, - {"Courier", 0}, - {"Courier,Bold", 1}, - {"Courier,BoldItalic", 2}, - {"Courier,Italic", 3}, - {"Courier-Bold", 1}, - {"Courier-BoldOblique", 2}, - {"Courier-Oblique", 3}, - {"CourierBold", 1}, - {"CourierBoldItalic", 2}, - {"CourierItalic", 3}, - {"CourierNew", 0}, - {"CourierNew,Bold", 1}, - {"CourierNew,BoldItalic", 2}, - {"CourierNew,Italic", 3}, - {"CourierNew-Bold", 1}, - {"CourierNew-BoldItalic", 2}, - {"CourierNew-Italic", 3}, - {"CourierNewBold", 1}, - {"CourierNewBoldItalic", 2}, - {"CourierNewItalic", 3}, - {"CourierNewPS-BoldItalicMT", 2}, - {"CourierNewPS-BoldMT", 1}, - {"CourierNewPS-ItalicMT", 3}, - {"CourierNewPSMT", 0}, - {"CourierStd", 0}, - {"CourierStd-Bold", 1}, - {"CourierStd-BoldOblique", 2}, - {"CourierStd-Oblique", 3}, - {"Helvetica", 4}, - {"Helvetica,Bold", 5}, - {"Helvetica,BoldItalic", 6}, - {"Helvetica,Italic", 7}, - {"Helvetica-Bold", 5}, - {"Helvetica-BoldItalic", 6}, - {"Helvetica-BoldOblique", 6}, - {"Helvetica-Italic", 7}, - {"Helvetica-Oblique", 7}, - {"HelveticaBold", 5}, - {"HelveticaBoldItalic", 6}, - {"HelveticaItalic", 7}, - {"Symbol", 12}, - {"SymbolMT", 12}, - {"Times-Bold", 9}, - {"Times-BoldItalic", 10}, - {"Times-Italic", 11}, - {"Times-Roman", 8}, - {"TimesBold", 9}, - {"TimesBoldItalic", 10}, - {"TimesItalic", 11}, - {"TimesNewRoman", 8}, - {"TimesNewRoman,Bold", 9}, - {"TimesNewRoman,BoldItalic", 10}, - {"TimesNewRoman,Italic", 11}, - {"TimesNewRoman-Bold", 9}, - {"TimesNewRoman-BoldItalic", 10}, - {"TimesNewRoman-Italic", 11}, - {"TimesNewRomanBold", 9}, - {"TimesNewRomanBoldItalic", 10}, - {"TimesNewRomanItalic", 11}, - {"TimesNewRomanPS", 8}, - {"TimesNewRomanPS-Bold", 9}, - {"TimesNewRomanPS-BoldItalic", 10}, - {"TimesNewRomanPS-BoldItalicMT", 10}, - {"TimesNewRomanPS-BoldMT", 9}, - {"TimesNewRomanPS-Italic", 11}, - {"TimesNewRomanPS-ItalicMT", 11}, - {"TimesNewRomanPSMT", 8}, - {"TimesNewRomanPSMT,Bold", 9}, - {"TimesNewRomanPSMT,BoldItalic", 10}, - {"TimesNewRomanPSMT,Italic", 11}, - {"ZapfDingbats", 13}, -}; - -const struct { - const FX_CHAR* m_pName; - const FX_CHAR* m_pSubstName; -} Base14Substs[] = { - {"Courier", "Courier New"}, - {"Courier-Bold", "Courier New Bold"}, - {"Courier-BoldOblique", "Courier New Bold Italic"}, - {"Courier-Oblique", "Courier New Italic"}, - {"Helvetica", "Arial"}, - {"Helvetica-Bold", "Arial Bold"}, - {"Helvetica-BoldOblique", "Arial Bold Italic"}, - {"Helvetica-Oblique", "Arial Italic"}, - {"Times-Roman", "Times New Roman"}, - {"Times-Bold", "Times New Roman Bold"}, - {"Times-BoldItalic", "Times New Roman Bold Italic"}, - {"Times-Italic", "Times New Roman Italic"}, -}; - -const struct AltFontFamily { - const FX_CHAR* m_pFontName; - const FX_CHAR* m_pFontFamily; -} g_AltFontFamilies[] = { - {"AGaramondPro", "Adobe Garamond Pro"}, - {"BankGothicBT-Medium", "BankGothic Md BT"}, - {"ForteMT", "Forte"}, -}; - -const struct FX_FontStyle { - const FX_CHAR* style; - int32_t len; -} g_FontStyles[] = { - {"Bold", 4}, {"Italic", 6}, {"BoldItalic", 10}, {"Reg", 3}, {"Regular", 7}, -}; - -const struct CODEPAGE_MAP { - FX_WORD codepage; - uint8_t charset; -} g_Codepage2CharsetTable[] = { - {0, 1}, {42, 2}, {437, 254}, {850, 255}, {874, 222}, - {932, 128}, {936, 134}, {949, 129}, {950, 136}, {1250, 238}, - {1251, 204}, {1252, 0}, {1253, 161}, {1254, 162}, {1255, 177}, - {1256, 178}, {1257, 186}, {1258, 163}, {1361, 130}, {10000, 77}, - {10001, 78}, {10002, 81}, {10003, 79}, {10004, 84}, {10005, 83}, - {10006, 85}, {10007, 89}, {10008, 80}, {10021, 87}, {10029, 88}, - {10081, 86}, -}; - -const FX_DWORD kTableNAME = FXDWORD_GET_MSBFIRST("name"); -const FX_DWORD kTableTTCF = FXDWORD_GET_MSBFIRST("ttcf"); - -int CompareFontFamilyString(const void* key, const void* element) { - CFX_ByteString str_key((const FX_CHAR*)key); - if (str_key.Find(((AltFontFamily*)element)->m_pFontName) != -1) { - return 0; - } - return FXSYS_stricmp((const FX_CHAR*)key, - ((AltFontFamily*)element)->m_pFontName); -} - -int CompareString(const void* key, const void* element) { - return FXSYS_stricmp((const FX_CHAR*)key, ((AltFontName*)element)->m_pName); -} - -CFX_ByteString KeyNameFromFace(const CFX_ByteString& face_name, - int weight, - FX_BOOL bItalic) { - CFX_ByteString key(face_name); - key += ','; - key += CFX_ByteString::FormatInteger(weight); - key += bItalic ? 'I' : 'N'; - return key; -} - -CFX_ByteString KeyNameFromSize(int ttc_size, FX_DWORD checksum) { - CFX_ByteString key; - key.Format("%d:%d", ttc_size, checksum); - return key; -} - -CFX_ByteString TT_NormalizeName(const FX_CHAR* family) { - CFX_ByteString norm(family); - norm.Remove(' '); - norm.Remove('-'); - norm.Remove(','); - int pos = norm.Find('+'); - if (pos > 0) { - norm = norm.Left(pos); - } - norm.MakeLower(); - return norm; -} - -CFX_ByteString FPDF_ReadStringFromFile(FXSYS_FILE* pFile, FX_DWORD size) { - CFX_ByteString buffer; - if (!FXSYS_fread(buffer.GetBuffer(size), size, 1, pFile)) { - return CFX_ByteString(); - } - buffer.ReleaseBuffer(size); - return buffer; -} - -CFX_ByteString FPDF_LoadTableFromTT(FXSYS_FILE* pFile, - const uint8_t* pTables, - FX_DWORD nTables, - FX_DWORD tag) { - for (FX_DWORD i = 0; i < nTables; i++) { - const uint8_t* p = pTables + i * 16; - if (GET_TT_LONG(p) == tag) { - FX_DWORD offset = GET_TT_LONG(p + 8); - FX_DWORD size = GET_TT_LONG(p + 12); - FXSYS_fseek(pFile, offset, FXSYS_SEEK_SET); - return FPDF_ReadStringFromFile(pFile, size); - } - } - return CFX_ByteString(); -} - -uint8_t GetCharsetFromCodePage(FX_WORD codepage) { - const CODEPAGE_MAP* pEnd = - g_Codepage2CharsetTable + FX_ArraySize(g_Codepage2CharsetTable); - const CODEPAGE_MAP* pCharmap = - std::lower_bound(g_Codepage2CharsetTable, pEnd, codepage, - [](const CODEPAGE_MAP& charset, FX_WORD page) { - return charset.codepage < page; - }); - if (pCharmap < pEnd && codepage == pCharmap->codepage) - return pCharmap->charset; - return 1; -} - -CFX_ByteString GetFontFamily(CFX_ByteString fontName, int nStyle) { - if (fontName.Find("Script") >= 0) { - if ((nStyle & FX_FONT_STYLE_Bold) == FX_FONT_STYLE_Bold) { - fontName = "ScriptMTBold"; - } else if (fontName.Find("Palace") >= 0) { - fontName = "PalaceScriptMT"; - } else if (fontName.Find("French") >= 0) { - fontName = "FrenchScriptMT"; - } else if (fontName.Find("FreeStyle") >= 0) { - fontName = "FreeStyleScript"; - } - return fontName; - } - AltFontFamily* found = (AltFontFamily*)FXSYS_bsearch( - fontName.c_str(), g_AltFontFamilies, - sizeof g_AltFontFamilies / sizeof(AltFontFamily), sizeof(AltFontFamily), - CompareFontFamilyString); - return found ? CFX_ByteString(found->m_pFontFamily) : fontName; -} - -CFX_ByteString ParseStyle(const FX_CHAR* pStyle, int iLen, int iIndex) { - CFX_ByteTextBuf buf; - if (!iLen || iLen <= iIndex) { - return buf.GetByteString(); - } - while (iIndex < iLen) { - if (pStyle[iIndex] == ',') { - break; - } - buf.AppendChar(pStyle[iIndex]); - ++iIndex; - } - return buf.GetByteString(); -} - -int32_t GetStyleType(const CFX_ByteString& bsStyle, FX_BOOL bRevert) { - int32_t iLen = bsStyle.GetLength(); - if (!iLen) { - return -1; - } - int iSize = sizeof(g_FontStyles) / sizeof(FX_FontStyle); - const FX_FontStyle* pStyle = NULL; - for (int i = iSize - 1; i >= 0; --i) { - pStyle = g_FontStyles + i; - if (!pStyle || pStyle->len > iLen) { - continue; - } - if (!bRevert) { - if (bsStyle.Left(pStyle->len).Compare(pStyle->style) == 0) { - return i; - } - } else { - if (bsStyle.Right(pStyle->len).Compare(pStyle->style) == 0) { - return i; - } - } - } - return -1; -} - -FX_BOOL CheckSupportThirdPartFont(CFX_ByteString name, int& PitchFamily) { - if (name == "MyriadPro") { - PitchFamily &= ~FXFONT_FF_ROMAN; - return TRUE; - } - return FALSE; -} - -FX_DWORD GetCharset(int charset) { - switch (charset) { - case FXFONT_SHIFTJIS_CHARSET: - return CHARSET_FLAG_SHIFTJIS; - case FXFONT_GB2312_CHARSET: - return CHARSET_FLAG_GB; - case FXFONT_CHINESEBIG5_CHARSET: - return CHARSET_FLAG_BIG5; - case FXFONT_HANGEUL_CHARSET: - return CHARSET_FLAG_KOREAN; - case FXFONT_SYMBOL_CHARSET: - return CHARSET_FLAG_SYMBOL; - case FXFONT_ANSI_CHARSET: - return CHARSET_FLAG_ANSI; - default: - break; - } - return 0; -} - -int32_t GetSimilarValue(int weight, - FX_BOOL bItalic, - int pitch_family, - FX_DWORD style) { - int32_t iSimilarValue = 0; - if (!!(style & FXFONT_BOLD) == (weight > 400)) { - iSimilarValue += 16; - } - if (!!(style & FXFONT_ITALIC) == bItalic) { - iSimilarValue += 16; - } - if (!!(style & FXFONT_SERIF) == !!(pitch_family & FXFONT_FF_ROMAN)) { - iSimilarValue += 16; - } - if (!!(style & FXFONT_SCRIPT) == !!(pitch_family & FXFONT_FF_SCRIPT)) { - iSimilarValue += 8; - } - if (!!(style & FXFONT_FIXED_PITCH) == - !!(pitch_family & FXFONT_FF_FIXEDPITCH)) { - iSimilarValue += 8; - } - return iSimilarValue; -} - -} // namespace - -CFX_SubstFont::CFX_SubstFont() { - m_ExtHandle = NULL; - m_Charset = 0; - m_SubstFlags = 0; - m_Weight = 0; - m_ItalicAngle = 0; - m_bSubstOfCJK = FALSE; - m_WeightCJK = 0; - m_bItlicCJK = FALSE; -} -CTTFontDesc::~CTTFontDesc() { - if (m_Type == 1) { - if (m_SingleFace.m_pFace) { - FXFT_Done_Face(m_SingleFace.m_pFace); - } - } else if (m_Type == 2) { - for (int i = 0; i < 16; i++) - if (m_TTCFace.m_pFaces[i]) { - FXFT_Done_Face(m_TTCFace.m_pFaces[i]); - } - } - FX_Free(m_pFontData); -} -int CTTFontDesc::ReleaseFace(FXFT_Face face) { - if (m_Type == 1) { - if (m_SingleFace.m_pFace != face) { - return -1; - } - } else if (m_Type == 2) { - int i; - for (i = 0; i < 16; i++) - if (m_TTCFace.m_pFaces[i] == face) { - break; - } - if (i == 16) { - return -1; - } - } - m_RefCount--; - if (m_RefCount) { - return m_RefCount; - } - delete this; - return 0; -} - -CFX_FontMgr::CFX_FontMgr() : m_FTLibrary(nullptr) { - m_pBuiltinMapper.reset(new CFX_FontMapper(this)); -} - -CFX_FontMgr::~CFX_FontMgr() { - for (const auto& pair : m_FaceMap) - delete pair.second; - - // |m_pBuiltinMapper| references |m_FTLibrary|, so it has to be destroyed - // first. - m_pBuiltinMapper.reset(); - FXFT_Done_FreeType(m_FTLibrary); -} - -void CFX_FontMgr::InitFTLibrary() { - if (m_FTLibrary) - return; - FXFT_Init_FreeType(&m_FTLibrary); -} - -void CFX_FontMgr::SetSystemFontInfo(IFX_SystemFontInfo* pFontInfo) { - m_pBuiltinMapper->SetSystemFontInfo(pFontInfo); -} - -FXFT_Face CFX_FontMgr::FindSubstFont(const CFX_ByteString& face_name, - FX_BOOL bTrueType, - FX_DWORD flags, - int weight, - int italic_angle, - int CharsetCP, - CFX_SubstFont* pSubstFont) { - InitFTLibrary(); - return m_pBuiltinMapper->FindSubstFont(face_name, bTrueType, flags, weight, - italic_angle, CharsetCP, pSubstFont); -} - -FXFT_Face CFX_FontMgr::GetCachedFace(const CFX_ByteString& face_name, - int weight, - FX_BOOL bItalic, - uint8_t*& pFontData) { - auto it = m_FaceMap.find(KeyNameFromFace(face_name, weight, bItalic)); - if (it == m_FaceMap.end()) - return nullptr; - - CTTFontDesc* pFontDesc = it->second; - pFontData = pFontDesc->m_pFontData; - pFontDesc->m_RefCount++; - return pFontDesc->m_SingleFace.m_pFace; -} -FXFT_Face CFX_FontMgr::AddCachedFace(const CFX_ByteString& face_name, - int weight, - FX_BOOL bItalic, - uint8_t* pData, - FX_DWORD size, - int face_index) { - CTTFontDesc* pFontDesc = new CTTFontDesc; - pFontDesc->m_Type = 1; - pFontDesc->m_SingleFace.m_pFace = NULL; - pFontDesc->m_SingleFace.m_bBold = weight; - pFontDesc->m_SingleFace.m_bItalic = bItalic; - pFontDesc->m_pFontData = pData; - pFontDesc->m_RefCount = 1; - - InitFTLibrary(); - FXFT_Library library = m_FTLibrary; - int ret = FXFT_New_Memory_Face(library, pData, size, face_index, - &pFontDesc->m_SingleFace.m_pFace); - if (ret) { - delete pFontDesc; - return NULL; - } - ret = FXFT_Set_Pixel_Sizes(pFontDesc->m_SingleFace.m_pFace, 64, 64); - if (ret) { - delete pFontDesc; - return NULL; - } - m_FaceMap[KeyNameFromFace(face_name, weight, bItalic)] = pFontDesc; - return pFontDesc->m_SingleFace.m_pFace; -} - -int GetTTCIndex(const uint8_t* pFontData, - FX_DWORD ttc_size, - FX_DWORD font_offset) { - int face_index = 0; - const uint8_t* p = pFontData + 8; - FX_DWORD nfont = GET_TT_LONG(p); - FX_DWORD index; - for (index = 0; index < nfont; index++) { - p = pFontData + 12 + index * 4; - if (GET_TT_LONG(p) == font_offset) { - break; - } - } - if (index >= nfont) { - face_index = 0; - } else { - face_index = index; - } - return face_index; -} -FXFT_Face CFX_FontMgr::GetCachedTTCFace(int ttc_size, - FX_DWORD checksum, - int font_offset, - uint8_t*& pFontData) { - auto it = m_FaceMap.find(KeyNameFromSize(ttc_size, checksum)); - if (it == m_FaceMap.end()) - return nullptr; - - CTTFontDesc* pFontDesc = it->second; - pFontData = pFontDesc->m_pFontData; - pFontDesc->m_RefCount++; - int face_index = GetTTCIndex(pFontDesc->m_pFontData, ttc_size, font_offset); - if (!pFontDesc->m_TTCFace.m_pFaces[face_index]) { - pFontDesc->m_TTCFace.m_pFaces[face_index] = - GetFixedFace(pFontDesc->m_pFontData, ttc_size, face_index); - } - return pFontDesc->m_TTCFace.m_pFaces[face_index]; -} -FXFT_Face CFX_FontMgr::AddCachedTTCFace(int ttc_size, - FX_DWORD checksum, - uint8_t* pData, - FX_DWORD size, - int font_offset) { - CTTFontDesc* pFontDesc = new CTTFontDesc; - pFontDesc->m_Type = 2; - pFontDesc->m_pFontData = pData; - for (int i = 0; i < 16; i++) { - pFontDesc->m_TTCFace.m_pFaces[i] = NULL; - } - pFontDesc->m_RefCount++; - m_FaceMap[KeyNameFromSize(ttc_size, checksum)] = pFontDesc; - int face_index = GetTTCIndex(pFontDesc->m_pFontData, ttc_size, font_offset); - pFontDesc->m_TTCFace.m_pFaces[face_index] = - GetFixedFace(pFontDesc->m_pFontData, ttc_size, face_index); - return pFontDesc->m_TTCFace.m_pFaces[face_index]; -} - -FXFT_Face CFX_FontMgr::GetFixedFace(const uint8_t* pData, - FX_DWORD size, - int face_index) { - InitFTLibrary(); - FXFT_Library library = m_FTLibrary; - FXFT_Face face = nullptr; - if (FXFT_New_Memory_Face(library, pData, size, face_index, &face)) - return nullptr; - return FXFT_Set_Pixel_Sizes(face, 64, 64) ? nullptr : face; -} - -FXFT_Face CFX_FontMgr::GetFileFace(const FX_CHAR* filename, int face_index) { - InitFTLibrary(); - FXFT_Library library = m_FTLibrary; - FXFT_Face face = nullptr; - if (FXFT_New_Face(library, filename, face_index, &face)) - return nullptr; - return FXFT_Set_Pixel_Sizes(face, 64, 64) ? nullptr : face; -} - -void CFX_FontMgr::ReleaseFace(FXFT_Face face) { - if (!face) { - return; - } - FX_BOOL bNeedFaceDone = TRUE; - auto it = m_FaceMap.begin(); - while (it != m_FaceMap.end()) { - auto temp = it++; - int nRet = temp->second->ReleaseFace(face); - if (nRet == -1) - continue; - bNeedFaceDone = FALSE; - if (nRet == 0) - m_FaceMap.erase(temp); - break; - } - if (bNeedFaceDone && !m_pBuiltinMapper->IsBuiltinFace(face)) - FXFT_Done_Face(face); -} - -bool CFX_FontMgr::GetBuiltinFont(size_t index, - const uint8_t** pFontData, - FX_DWORD* size) { - if (index < FX_ArraySize(g_FoxitFonts)) { - *pFontData = g_FoxitFonts[index].m_pFontData; - *size = g_FoxitFonts[index].m_dwSize; - return true; - } - index -= FX_ArraySize(g_FoxitFonts); - if (index < FX_ArraySize(g_MMFonts)) { - *pFontData = g_MMFonts[index].m_pFontData; - *size = g_MMFonts[index].m_dwSize; - return true; - } - return false; -} - -CFX_FontMapper::CFX_FontMapper(CFX_FontMgr* mgr) - : m_bListLoaded(FALSE), - m_pFontInfo(nullptr), - m_pFontEnumerator(nullptr), - m_pFontMgr(mgr) { - m_MMFaces[0] = nullptr; - m_MMFaces[1] = nullptr; - FXSYS_memset(m_FoxitFaces, 0, sizeof(m_FoxitFaces)); -} -CFX_FontMapper::~CFX_FontMapper() { - for (size_t i = 0; i < FX_ArraySize(m_FoxitFaces); ++i) { - if (m_FoxitFaces[i]) - FXFT_Done_Face(m_FoxitFaces[i]); - } - if (m_MMFaces[0]) { - FXFT_Done_Face(m_MMFaces[0]); - } - if (m_MMFaces[1]) { - FXFT_Done_Face(m_MMFaces[1]); - } - if (m_pFontInfo) { - m_pFontInfo->Release(); - } -} -void CFX_FontMapper::SetSystemFontInfo(IFX_SystemFontInfo* pFontInfo) { - if (!pFontInfo) { - return; - } - if (m_pFontInfo) { - m_pFontInfo->Release(); - } - m_pFontInfo = pFontInfo; -} - -CFX_ByteString GetNameFromTT(const uint8_t* name_table, FX_DWORD name_id) { - const uint8_t* ptr = name_table + 2; - int name_count = GET_TT_SHORT(ptr); - int string_offset = GET_TT_SHORT(ptr + 2); - const uint8_t* string_ptr = name_table + string_offset; - ptr += 4; - for (int i = 0; i < name_count; i++) { - if (GET_TT_SHORT(ptr + 6) == name_id && GET_TT_SHORT(ptr) == 1 && - GET_TT_SHORT(ptr + 2) == 0) { - return CFX_ByteStringC(string_ptr + GET_TT_SHORT(ptr + 10), - GET_TT_SHORT(ptr + 8)); - } - ptr += 12; - } - return CFX_ByteString(); -} - -CFX_ByteString CFX_FontMapper::GetPSNameFromTT(void* hFont) { - if (!m_pFontInfo) - return CFX_ByteString(); - - FX_DWORD size = m_pFontInfo->GetFontData(hFont, kTableNAME, nullptr, 0); - if (!size) - return CFX_ByteString(); - - std::vector buffer(size); - uint8_t* buffer_ptr = buffer.data(); - FX_DWORD bytes_read = - m_pFontInfo->GetFontData(hFont, kTableNAME, buffer_ptr, size); - return (bytes_read == size) ? GetNameFromTT(buffer_ptr, 6) : CFX_ByteString(); -} - -void CFX_FontMapper::AddInstalledFont(const CFX_ByteString& name, int charset) { - if (!m_pFontInfo) { - return; - } - if (m_CharsetArray.Find((FX_DWORD)charset) == -1) { - m_CharsetArray.Add((FX_DWORD)charset); - m_FaceArray.push_back(name); - } - if (name == m_LastFamily) { - return; - } - const uint8_t* ptr = name; - FX_BOOL bLocalized = FALSE; - for (int i = 0; i < name.GetLength(); i++) - if (ptr[i] > 0x80) { - bLocalized = TRUE; - break; - } - if (bLocalized) { - void* hFont = m_pFontInfo->GetFont(name); - if (!hFont) { - int iExact; - hFont = - m_pFontInfo->MapFont(0, 0, FXFONT_DEFAULT_CHARSET, 0, name, iExact); - if (!hFont) { - return; - } - } - CFX_ByteString new_name = GetPSNameFromTT(hFont); - if (!new_name.IsEmpty()) { - new_name.Insert(0, ' '); - m_InstalledTTFonts.push_back(new_name); - } - m_pFontInfo->DeleteFont(hFont); - } - m_InstalledTTFonts.push_back(name); - m_LastFamily = name; -} -void CFX_FontMapper::LoadInstalledFonts() { - if (!m_pFontInfo) { - return; - } - if (m_bListLoaded) { - return; - } - if (m_bListLoaded) { - return; - } - m_pFontInfo->EnumFontList(this); - m_bListLoaded = TRUE; -} -CFX_ByteString CFX_FontMapper::MatchInstalledFonts( - const CFX_ByteString& norm_name) { - LoadInstalledFonts(); - int i; - for (i = pdfium::CollectionSize(m_InstalledTTFonts) - 1; i >= 0; i--) { - CFX_ByteString norm1 = TT_NormalizeName(m_InstalledTTFonts[i]); - if (norm1 == norm_name) { - break; - } - } - if (i < 0) { - return CFX_ByteString(); - } - CFX_ByteString match = m_InstalledTTFonts[i]; - if (match[0] == ' ') { - match = m_InstalledTTFonts[i + 1]; - } - return match; -} - -FXFT_Face CFX_FontMapper::UseInternalSubst(CFX_SubstFont* pSubstFont, - int iBaseFont, - int italic_angle, - int weight, - int picthfamily) { - if (iBaseFont < 12) { - if (m_FoxitFaces[iBaseFont]) { - return m_FoxitFaces[iBaseFont]; - } - const uint8_t* pFontData = NULL; - FX_DWORD size = 0; - if (m_pFontMgr->GetBuiltinFont(iBaseFont, &pFontData, &size)) { - m_FoxitFaces[iBaseFont] = m_pFontMgr->GetFixedFace(pFontData, size, 0); - return m_FoxitFaces[iBaseFont]; - } - } - pSubstFont->m_SubstFlags |= FXFONT_SUBST_MM; - pSubstFont->m_ItalicAngle = italic_angle; - if (weight) { - pSubstFont->m_Weight = weight; - } - if (picthfamily & FXFONT_FF_ROMAN) { - pSubstFont->m_Weight = pSubstFont->m_Weight * 4 / 5; - pSubstFont->m_Family = "Chrome Serif"; - if (m_MMFaces[1]) { - return m_MMFaces[1]; - } - const uint8_t* pFontData = NULL; - FX_DWORD size = 0; - m_pFontMgr->GetBuiltinFont(14, &pFontData, &size); - m_MMFaces[1] = m_pFontMgr->GetFixedFace(pFontData, size, 0); - return m_MMFaces[1]; - } - pSubstFont->m_Family = "Chrome Sans"; - if (m_MMFaces[0]) { - return m_MMFaces[0]; - } - const uint8_t* pFontData = NULL; - FX_DWORD size = 0; - m_pFontMgr->GetBuiltinFont(15, &pFontData, &size); - m_MMFaces[0] = m_pFontMgr->GetFixedFace(pFontData, size, 0); - return m_MMFaces[0]; -} - -FXFT_Face CFX_FontMapper::FindSubstFont(const CFX_ByteString& name, - FX_BOOL bTrueType, - FX_DWORD flags, - int weight, - int italic_angle, - int WindowCP, - CFX_SubstFont* pSubstFont) { - if (!(flags & FXFONT_USEEXTERNATTR)) { - weight = FXFONT_FW_NORMAL; - italic_angle = 0; - } - CFX_ByteString SubstName = name; - SubstName.Remove(0x20); - if (bTrueType) { - if (name[0] == '@') { - SubstName = name.Mid(1); - } - } - PDF_GetStandardFontName(&SubstName); - if (SubstName == "Symbol" && !bTrueType) { - pSubstFont->m_Family = "Chrome Symbol"; - pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; - pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; - if (m_FoxitFaces[12]) { - return m_FoxitFaces[12]; - } - const uint8_t* pFontData = NULL; - FX_DWORD size = 0; - m_pFontMgr->GetBuiltinFont(12, &pFontData, &size); - m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0); - return m_FoxitFaces[12]; - } - if (SubstName == "ZapfDingbats") { - pSubstFont->m_Family = "Chrome Dingbats"; - pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; - pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; - if (m_FoxitFaces[13]) { - return m_FoxitFaces[13]; - } - const uint8_t* pFontData = NULL; - FX_DWORD size = 0; - m_pFontMgr->GetBuiltinFont(13, &pFontData, &size); - m_FoxitFaces[13] = m_pFontMgr->GetFixedFace(pFontData, size, 0); - return m_FoxitFaces[13]; - } - int iBaseFont = 0; - CFX_ByteString family, style; - FX_BOOL bHasComma = FALSE; - FX_BOOL bHasHypen = FALSE; - int find = SubstName.Find(",", 0); - if (find >= 0) { - family = SubstName.Left(find); - PDF_GetStandardFontName(&family); - style = SubstName.Mid(find + 1); - bHasComma = TRUE; - } else { - family = SubstName; - } - for (; iBaseFont < 12; iBaseFont++) - if (family == CFX_ByteStringC(g_Base14FontNames[iBaseFont])) { - break; - } - int PitchFamily = 0; - FX_BOOL bItalic = FALSE; - FX_DWORD nStyle = 0; - FX_BOOL bStyleAvail = FALSE; - if (iBaseFont < 12) { - family = g_Base14FontNames[iBaseFont]; - if ((iBaseFont % 4) == 1 || (iBaseFont % 4) == 2) { - nStyle |= FX_FONT_STYLE_Bold; - } - if ((iBaseFont % 4) / 2) { - nStyle |= FX_FONT_STYLE_Italic; - } - if (iBaseFont < 4) { - PitchFamily |= FXFONT_FF_FIXEDPITCH; - } - if (iBaseFont >= 8) { - PitchFamily |= FXFONT_FF_ROMAN; - } - } else { - if (!bHasComma) { - find = family.ReverseFind('-'); - if (find >= 0) { - style = family.Mid(find + 1); - family = family.Left(find); - bHasHypen = TRUE; - } - } - if (!bHasHypen) { - int nLen = family.GetLength(); - int32_t nRet = GetStyleType(family, TRUE); - if (nRet > -1) { - family = family.Left(nLen - g_FontStyles[nRet].len); - if (nRet == 0) { - nStyle |= FX_FONT_STYLE_Bold; - } - if (nRet == 1) { - nStyle |= FX_FONT_STYLE_Italic; - } - if (nRet == 2) { - nStyle |= (FX_FONT_STYLE_Bold | FX_FONT_STYLE_Italic); - } - } - } - if (flags & FXFONT_SERIF) { - PitchFamily |= FXFONT_FF_ROMAN; - } - if (flags & FXFONT_SCRIPT) { - PitchFamily |= FXFONT_FF_SCRIPT; - } - if (flags & FXFONT_FIXED_PITCH) { - PitchFamily |= FXFONT_FF_FIXEDPITCH; - } - } - if (!style.IsEmpty()) { - int nLen = style.GetLength(); - const FX_CHAR* pStyle = style; - int i = 0; - FX_BOOL bFirstItem = TRUE; - CFX_ByteString buf; - while (i < nLen) { - buf = ParseStyle(pStyle, nLen, i); - int32_t nRet = GetStyleType(buf, FALSE); - if ((i && !bStyleAvail) || (!i && nRet < 0)) { - family = SubstName; - iBaseFont = 12; - break; - } else if (nRet >= 0) { - bStyleAvail = TRUE; - } - if (nRet == 0) { - if (nStyle & FX_FONT_STYLE_Bold) { - nStyle |= FX_FONT_STYLE_BoldBold; - } else { - nStyle |= FX_FONT_STYLE_Bold; - } - bFirstItem = FALSE; - } - if (nRet == 1) { - if (bFirstItem) { - nStyle |= FX_FONT_STYLE_Italic; - } else { - family = SubstName; - iBaseFont = 12; - } - break; - } - if (nRet == 2) { - nStyle |= FX_FONT_STYLE_Italic; - if (nStyle & FX_FONT_STYLE_Bold) { - nStyle |= FX_FONT_STYLE_BoldBold; - } else { - nStyle |= FX_FONT_STYLE_Bold; - } - bFirstItem = FALSE; - } - i += buf.GetLength() + 1; - } - } - weight = weight ? weight : FXFONT_FW_NORMAL; - int old_weight = weight; - if (nStyle) { - weight = - nStyle & FX_FONT_STYLE_BoldBold - ? 900 - : (nStyle & FX_FONT_STYLE_Bold ? FXFONT_FW_BOLD : FXFONT_FW_NORMAL); - } - if (nStyle & FX_FONT_STYLE_Italic) { - bItalic = TRUE; - } - FX_BOOL bCJK = FALSE; - int iExact = 0; - int Charset = FXFONT_ANSI_CHARSET; - if (WindowCP) { - Charset = GetCharsetFromCodePage(WindowCP); - } else if (iBaseFont == 12 && (flags & FXFONT_SYMBOLIC)) { - Charset = FXFONT_SYMBOL_CHARSET; - } - if (Charset == FXFONT_SHIFTJIS_CHARSET || Charset == FXFONT_GB2312_CHARSET || - Charset == FXFONT_HANGEUL_CHARSET || - Charset == FXFONT_CHINESEBIG5_CHARSET) { - bCJK = TRUE; - } - if (!m_pFontInfo) { - pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; - return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, - PitchFamily); - } - family = GetFontFamily(family, nStyle); - CFX_ByteString match = MatchInstalledFonts(TT_NormalizeName(family)); - if (match.IsEmpty() && family != SubstName && - (!bHasComma && (!bHasHypen || (bHasHypen && !bStyleAvail)))) { - match = MatchInstalledFonts(TT_NormalizeName(SubstName)); - } - if (match.IsEmpty() && iBaseFont >= 12) { - if (!bCJK) { - if (!CheckSupportThirdPartFont(family, PitchFamily)) { - if (italic_angle != 0) { - bItalic = TRUE; - } else { - bItalic = FALSE; - } - weight = old_weight; - } - } else { - pSubstFont->m_bSubstOfCJK = TRUE; - if (nStyle) { - pSubstFont->m_WeightCJK = weight; - } else { - pSubstFont->m_WeightCJK = FXFONT_FW_NORMAL; - } - if (nStyle & FX_FONT_STYLE_Italic) { - pSubstFont->m_bItlicCJK = TRUE; - } - } - } else { - italic_angle = 0; - weight = - nStyle & FX_FONT_STYLE_BoldBold - ? 900 - : (nStyle & FX_FONT_STYLE_Bold ? FXFONT_FW_BOLD : FXFONT_FW_NORMAL); - } - if (!match.IsEmpty() || iBaseFont < 12) { - if (!match.IsEmpty()) { - family = match; - } - if (iBaseFont < 12) { - if (nStyle && !(iBaseFont % 4)) { - if ((nStyle & 0x3) == 1) { - iBaseFont += 1; - } - if ((nStyle & 0x3) == 2) { - iBaseFont += 3; - } - if ((nStyle & 0x3) == 3) { - iBaseFont += 2; - } - } - family = g_Base14FontNames[iBaseFont]; - pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; - } - } else { - if (flags & FXFONT_ITALIC) { - bItalic = TRUE; - } - } - iExact = !match.IsEmpty(); - void* hFont = m_pFontInfo->MapFont(weight, bItalic, Charset, PitchFamily, - family, iExact); - if (iExact) { - pSubstFont->m_SubstFlags |= FXFONT_SUBST_EXACT; - } - if (!hFont) { -#ifdef PDF_ENABLE_XFA - if (flags & FXFONT_EXACTMATCH) { - return NULL; - } -#endif // PDF_ENABLE_XFA - if (bCJK) { - if (italic_angle != 0) { - bItalic = TRUE; - } else { - bItalic = FALSE; - } - weight = old_weight; - } - if (!match.IsEmpty()) { - hFont = m_pFontInfo->GetFont(match); - if (!hFont) { - return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, - PitchFamily); - } - } else { - if (Charset == FXFONT_SYMBOL_CHARSET) { -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ - _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ - if (SubstName == "Symbol") { - pSubstFont->m_Family = "Chrome Symbol"; - pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; - pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; - if (m_FoxitFaces[12]) { - return m_FoxitFaces[12]; - } - const uint8_t* pFontData = NULL; - FX_DWORD size = 0; - m_pFontMgr->GetBuiltinFont(12, &pFontData, &size); - m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0); - return m_FoxitFaces[12]; - } -#endif - pSubstFont->m_SubstFlags |= FXFONT_SUBST_NONSYMBOL; - return FindSubstFont(family, bTrueType, flags & ~FXFONT_SYMBOLIC, - weight, italic_angle, 0, pSubstFont); - } - if (Charset == FXFONT_ANSI_CHARSET) { - pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; - return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, - PitchFamily); - } - int index = m_CharsetArray.Find(Charset); - if (index < 0) { - return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, - PitchFamily); - } - hFont = m_pFontInfo->GetFont(m_FaceArray[index]); - } - } - pSubstFont->m_ExtHandle = m_pFontInfo->RetainFont(hFont); - if (!hFont) - return nullptr; - - m_pFontInfo->GetFaceName(hFont, SubstName); - if (Charset == FXFONT_DEFAULT_CHARSET) { - m_pFontInfo->GetFontCharset(hFont, Charset); - } - FX_DWORD ttc_size = m_pFontInfo->GetFontData(hFont, kTableTTCF, nullptr, 0); - FX_DWORD font_size = m_pFontInfo->GetFontData(hFont, 0, nullptr, 0); - if (font_size == 0 && ttc_size == 0) { - m_pFontInfo->DeleteFont(hFont); - return nullptr; - } - FXFT_Face face = nullptr; - if (ttc_size) { - uint8_t temp[1024]; - m_pFontInfo->GetFontData(hFont, kTableTTCF, temp, 1024); - FX_DWORD checksum = 0; - for (int i = 0; i < 256; i++) { - checksum += ((FX_DWORD*)temp)[i]; - } - uint8_t* pFontData; - face = m_pFontMgr->GetCachedTTCFace(ttc_size, checksum, - ttc_size - font_size, pFontData); - if (!face) { - pFontData = FX_Alloc(uint8_t, ttc_size); - m_pFontInfo->GetFontData(hFont, kTableTTCF, pFontData, ttc_size); - face = m_pFontMgr->AddCachedTTCFace(ttc_size, checksum, pFontData, - ttc_size, ttc_size - font_size); - } - } else { - uint8_t* pFontData; - face = m_pFontMgr->GetCachedFace(SubstName, weight, bItalic, pFontData); - if (!face) { - pFontData = FX_Alloc(uint8_t, font_size); - m_pFontInfo->GetFontData(hFont, 0, pFontData, font_size); - face = m_pFontMgr->AddCachedFace(SubstName, weight, bItalic, pFontData, - font_size, - m_pFontInfo->GetFaceIndex(hFont)); - } - } - if (!face) { - m_pFontInfo->DeleteFont(hFont); - return NULL; - } - pSubstFont->m_Family = SubstName; - pSubstFont->m_Charset = Charset; - FX_BOOL bNeedUpdateWeight = FALSE; - if (FXFT_Is_Face_Bold(face)) { - if (weight == FXFONT_FW_BOLD) { - bNeedUpdateWeight = FALSE; - } else { - bNeedUpdateWeight = TRUE; - } - } else { - if (weight == FXFONT_FW_NORMAL) { - bNeedUpdateWeight = FALSE; - } else { - bNeedUpdateWeight = TRUE; - } - } - if (bNeedUpdateWeight) { - pSubstFont->m_Weight = weight; - } - if (bItalic && !FXFT_Is_Face_Italic(face)) { - if (italic_angle == 0) { - italic_angle = -12; - } else if (FXSYS_abs(italic_angle) < 5) { - italic_angle = 0; - } - pSubstFont->m_ItalicAngle = italic_angle; - } - m_pFontInfo->DeleteFont(hFont); - return face; -} -#ifdef PDF_ENABLE_XFA -FXFT_Face CFX_FontMapper::FindSubstFontByUnicode(FX_DWORD dwUnicode, - FX_DWORD flags, - int weight, - int italic_angle) { - if (m_pFontInfo == NULL) { - return NULL; - } - FX_BOOL bItalic = (flags & FXFONT_ITALIC) != 0; - int PitchFamily = 0; - if (flags & FXFONT_SERIF) { - PitchFamily |= FXFONT_FF_ROMAN; - } - if (flags & FXFONT_SCRIPT) { - PitchFamily |= FXFONT_FF_SCRIPT; - } - if (flags & FXFONT_FIXED_PITCH) { - PitchFamily |= FXFONT_FF_FIXEDPITCH; - } - void* hFont = - m_pFontInfo->MapFontByUnicode(dwUnicode, weight, bItalic, PitchFamily); - if (hFont == NULL) { - return NULL; - } - FX_DWORD ttc_size = m_pFontInfo->GetFontData(hFont, 0x74746366, NULL, 0); - FX_DWORD font_size = m_pFontInfo->GetFontData(hFont, 0, NULL, 0); - if (font_size == 0 && ttc_size == 0) { - m_pFontInfo->DeleteFont(hFont); - return NULL; - } - FXFT_Face face = NULL; - if (ttc_size) { - uint8_t temp[1024]; - m_pFontInfo->GetFontData(hFont, 0x74746366, temp, 1024); - FX_DWORD checksum = 0; - for (int i = 0; i < 256; i++) { - checksum += ((FX_DWORD*)temp)[i]; - } - uint8_t* pFontData; - face = m_pFontMgr->GetCachedTTCFace(ttc_size, checksum, - ttc_size - font_size, pFontData); - if (face == NULL) { - pFontData = FX_Alloc(uint8_t, ttc_size); - if (pFontData) { - m_pFontInfo->GetFontData(hFont, 0x74746366, pFontData, ttc_size); - face = m_pFontMgr->AddCachedTTCFace(ttc_size, checksum, pFontData, - ttc_size, ttc_size - font_size); - } - } - } else { - CFX_ByteString SubstName; - m_pFontInfo->GetFaceName(hFont, SubstName); - uint8_t* pFontData; - face = m_pFontMgr->GetCachedFace(SubstName, weight, bItalic, pFontData); - if (face == NULL) { - pFontData = FX_Alloc(uint8_t, font_size); - if (!pFontData) { - m_pFontInfo->DeleteFont(hFont); - return NULL; - } - m_pFontInfo->GetFontData(hFont, 0, pFontData, font_size); - face = m_pFontMgr->AddCachedFace(SubstName, weight, bItalic, pFontData, - font_size, - m_pFontInfo->GetFaceIndex(hFont)); - } - } - m_pFontInfo->DeleteFont(hFont); - return face; -} - -void* IFX_SystemFontInfo::MapFontByUnicode(FX_DWORD dwUnicode, - int weight, - FX_BOOL bItalic, - int pitch_family) { - return nullptr; -} -#endif // PDF_ENABLE_XFA - -int IFX_SystemFontInfo::GetFaceIndex(void* hFont) { - return 0; -} - -void* IFX_SystemFontInfo::RetainFont(void* hFont) { - return NULL; -} - -int CFX_FontMapper::GetFaceSize() const { - return pdfium::CollectionSize(m_FaceArray); -} - -FX_BOOL CFX_FontMapper::IsBuiltinFace(const FXFT_Face face) const { - for (int i = 0; i < MM_FACE_COUNT; ++i) { - if (m_MMFaces[i] == face) { - return TRUE; - } - } - for (int i = 0; i < FOXIT_FACE_COUNT; ++i) { - if (m_FoxitFaces[i] == face) { - return TRUE; - } - } - return FALSE; -} - -extern "C" { -unsigned long _FTStreamRead(FXFT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count); -void _FTStreamClose(FXFT_Stream stream); -}; - -#if _FX_OS_ == _FX_ANDROID_ -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { - return NULL; -} -#endif - -CFX_FolderFontInfo::CFX_FolderFontInfo() {} -CFX_FolderFontInfo::~CFX_FolderFontInfo() { - for (const auto& pair : m_FontList) { - delete pair.second; - } -} -void CFX_FolderFontInfo::AddPath(const CFX_ByteStringC& path) { - m_PathList.push_back(path); -} -void CFX_FolderFontInfo::Release() { - delete this; -} -FX_BOOL CFX_FolderFontInfo::EnumFontList(CFX_FontMapper* pMapper) { - m_pMapper = pMapper; - for (const auto& path : m_PathList) { - ScanPath(path); - } - return TRUE; -} -void CFX_FolderFontInfo::ScanPath(const CFX_ByteString& path) { - void* handle = FX_OpenFolder(path); - if (!handle) { - return; - } - CFX_ByteString filename; - FX_BOOL bFolder; - while (FX_GetNextFile(handle, filename, bFolder)) { - if (bFolder) { - if (filename == "." || filename == "..") { - continue; - } - } else { - CFX_ByteString ext = filename.Right(4); - ext.MakeUpper(); - if (ext != ".TTF" && ext != ".OTF" && ext != ".TTC") { - continue; - } - } - CFX_ByteString fullpath = path; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ - fullpath += "\\"; -#else - fullpath += "/"; -#endif - fullpath += filename; - if (bFolder) { - ScanPath(fullpath); - } else { - ScanFile(fullpath); - } - } - FX_CloseFolder(handle); -} -void CFX_FolderFontInfo::ScanFile(const CFX_ByteString& path) { - FXSYS_FILE* pFile = FXSYS_fopen(path, "rb"); - if (!pFile) { - return; - } - FXSYS_fseek(pFile, 0, FXSYS_SEEK_END); - FX_DWORD filesize = FXSYS_ftell(pFile); - uint8_t buffer[16]; - FXSYS_fseek(pFile, 0, FXSYS_SEEK_SET); - size_t readCnt = FXSYS_fread(buffer, 12, 1, pFile); - if (readCnt != 1) { - FXSYS_fclose(pFile); - return; - } - - if (GET_TT_LONG(buffer) == kTableTTCF) { - FX_DWORD nFaces = GET_TT_LONG(buffer + 8); - if (nFaces > std::numeric_limits::max() / 4) { - FXSYS_fclose(pFile); - return; - } - FX_DWORD face_bytes = nFaces * 4; - uint8_t* offsets = FX_Alloc(uint8_t, face_bytes); - readCnt = FXSYS_fread(offsets, 1, face_bytes, pFile); - if (readCnt != face_bytes) { - FX_Free(offsets); - FXSYS_fclose(pFile); - return; - } - for (FX_DWORD i = 0; i < nFaces; i++) { - uint8_t* p = offsets + i * 4; - ReportFace(path, pFile, filesize, GET_TT_LONG(p)); - } - FX_Free(offsets); - } else { - ReportFace(path, pFile, filesize, 0); - } - FXSYS_fclose(pFile); -} -void CFX_FolderFontInfo::ReportFace(const CFX_ByteString& path, - FXSYS_FILE* pFile, - FX_DWORD filesize, - FX_DWORD offset) { - FXSYS_fseek(pFile, offset, FXSYS_SEEK_SET); - char buffer[16]; - if (!FXSYS_fread(buffer, 12, 1, pFile)) { - return; - } - FX_DWORD nTables = GET_TT_SHORT(buffer + 4); - CFX_ByteString tables = FPDF_ReadStringFromFile(pFile, nTables * 16); - if (tables.IsEmpty()) { - return; - } - CFX_ByteString names = - FPDF_LoadTableFromTT(pFile, tables, nTables, 0x6e616d65); - if (names.IsEmpty()) { - return; - } - CFX_ByteString facename = GetNameFromTT(names, 1); - CFX_ByteString style = GetNameFromTT(names, 2); - if (style != "Regular") { - facename += " " + style; - } - if (pdfium::ContainsKey(m_FontList, facename)) - return; - - CFX_FontFaceInfo* pInfo = - new CFX_FontFaceInfo(path, facename, tables, offset, filesize); - CFX_ByteString os2 = FPDF_LoadTableFromTT(pFile, tables, nTables, 0x4f532f32); - if (os2.GetLength() >= 86) { - const uint8_t* p = (const uint8_t*)os2 + 78; - FX_DWORD codepages = GET_TT_LONG(p); - if (codepages & (1 << 17)) { - m_pMapper->AddInstalledFont(facename, FXFONT_SHIFTJIS_CHARSET); - pInfo->m_Charsets |= CHARSET_FLAG_SHIFTJIS; - } - if (codepages & (1 << 18)) { - m_pMapper->AddInstalledFont(facename, FXFONT_GB2312_CHARSET); - pInfo->m_Charsets |= CHARSET_FLAG_GB; - } - if (codepages & (1 << 20)) { - m_pMapper->AddInstalledFont(facename, FXFONT_CHINESEBIG5_CHARSET); - pInfo->m_Charsets |= CHARSET_FLAG_BIG5; - } - if ((codepages & (1 << 19)) || (codepages & (1 << 21))) { - m_pMapper->AddInstalledFont(facename, FXFONT_HANGEUL_CHARSET); - pInfo->m_Charsets |= CHARSET_FLAG_KOREAN; - } - if (codepages & (1 << 31)) { - m_pMapper->AddInstalledFont(facename, FXFONT_SYMBOL_CHARSET); - pInfo->m_Charsets |= CHARSET_FLAG_SYMBOL; - } - } - m_pMapper->AddInstalledFont(facename, FXFONT_ANSI_CHARSET); - pInfo->m_Charsets |= CHARSET_FLAG_ANSI; - pInfo->m_Styles = 0; - if (style.Find("Bold") > -1) { - pInfo->m_Styles |= FXFONT_BOLD; - } - if (style.Find("Italic") > -1 || style.Find("Oblique") > -1) { - pInfo->m_Styles |= FXFONT_ITALIC; - } - if (facename.Find("Serif") > -1) { - pInfo->m_Styles |= FXFONT_SERIF; - } - m_FontList[facename] = pInfo; -} - -void* CFX_FolderFontInfo::GetSubstFont(const CFX_ByteString& face) { - for (size_t iBaseFont = 0; iBaseFont < FX_ArraySize(Base14Substs); - iBaseFont++) { - if (face == Base14Substs[iBaseFont].m_pName) { - return GetFont(Base14Substs[iBaseFont].m_pSubstName); - } - } - return nullptr; -} - -void* CFX_FolderFontInfo::FindFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* family, - FX_BOOL bMatchName) { - CFX_FontFaceInfo* pFind = nullptr; - if (charset == FXFONT_ANSI_CHARSET && (pitch_family & FXFONT_FF_FIXEDPITCH)) { - return GetFont("Courier New"); - } - FX_DWORD charset_flag = GetCharset(charset); - int32_t iBestSimilar = 0; - for (const auto& it : m_FontList) { - const CFX_ByteString& bsName = it.first; - CFX_FontFaceInfo* pFont = it.second; - if (!(pFont->m_Charsets & charset_flag) && - charset != FXFONT_DEFAULT_CHARSET) { - continue; - } - int32_t index = bsName.Find(family); - if (bMatchName && index < 0) { - continue; - } - int32_t iSimilarValue = - GetSimilarValue(weight, bItalic, pitch_family, pFont->m_Styles); - if (iSimilarValue > iBestSimilar) { - iBestSimilar = iSimilarValue; - pFind = pFont; - } - } - return pFind; -} -void* CFX_FolderFontInfo::MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* family, - int& iExact) { - return NULL; -} - -#ifdef PDF_ENABLE_XFA -void* CFX_FolderFontInfo::MapFontByUnicode(FX_DWORD dwUnicode, - int weight, - FX_BOOL bItalic, - int pitch_family) { - return NULL; -} -#endif // PDF_ENABLE_XFA - -void* CFX_FolderFontInfo::GetFont(const FX_CHAR* face) { - auto it = m_FontList.find(face); - return it != m_FontList.end() ? it->second : nullptr; -} - -FX_DWORD CFX_FolderFontInfo::GetFontData(void* hFont, - FX_DWORD table, - uint8_t* buffer, - FX_DWORD size) { - if (!hFont) - return 0; - - const CFX_FontFaceInfo* pFont = static_cast(hFont); - FX_DWORD datasize = 0; - FX_DWORD offset = 0; - if (table == 0) { - datasize = pFont->m_FontOffset ? 0 : pFont->m_FileSize; - } else if (table == kTableTTCF) { - datasize = pFont->m_FontOffset ? pFont->m_FileSize : 0; - } else { - FX_DWORD nTables = pFont->m_FontTables.GetLength() / 16; - for (FX_DWORD i = 0; i < nTables; i++) { - const uint8_t* p = - static_cast(pFont->m_FontTables) + i * 16; - if (GET_TT_LONG(p) == table) { - offset = GET_TT_LONG(p + 8); - datasize = GET_TT_LONG(p + 12); - } - } - } - - if (!datasize || size < datasize) - return datasize; - - FXSYS_FILE* pFile = FXSYS_fopen(pFont->m_FilePath, "rb"); - if (!pFile) - return 0; - - if (FXSYS_fseek(pFile, offset, FXSYS_SEEK_SET) < 0 || - FXSYS_fread(buffer, datasize, 1, pFile) != 1) { - datasize = 0; - } - FXSYS_fclose(pFile); - return datasize; -} - -void CFX_FolderFontInfo::DeleteFont(void* hFont) {} -FX_BOOL CFX_FolderFontInfo::GetFaceName(void* hFont, CFX_ByteString& name) { - if (!hFont) { - return FALSE; - } - CFX_FontFaceInfo* pFont = (CFX_FontFaceInfo*)hFont; - name = pFont->m_FaceName; - return TRUE; -} -FX_BOOL CFX_FolderFontInfo::GetFontCharset(void* hFont, int& charset) { - return FALSE; -} - -int PDF_GetStandardFontName(CFX_ByteString* name) { - AltFontName* found = static_cast( - FXSYS_bsearch(name->c_str(), g_AltFontNames, FX_ArraySize(g_AltFontNames), - sizeof(AltFontName), CompareString)); - if (!found) - return -1; - - *name = g_Base14FontNames[found->m_Index]; - return found->m_Index; -} diff --git a/core/src/fxge/ge/fx_ge_linux.cpp b/core/src/fxge/ge/fx_ge_linux.cpp deleted file mode 100644 index 0166266564..0000000000 --- a/core/src/fxge/ge/fx_ge_linux.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/agg/fx_agg_driver.h" -#include "core/src/fxge/ge/fx_text_int.h" - -#if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ -class CFX_LinuxFontInfo : public CFX_FolderFontInfo { - public: - void* MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* family, - int& iExact) override; - FX_BOOL ParseFontCfg(const char** pUserPaths); -}; -#define LINUX_GPNAMESIZE 6 -static const struct { - const FX_CHAR* NameArr[LINUX_GPNAMESIZE]; -} LinuxGpFontList[] = { - {{"TakaoPGothic", "VL PGothic", "IPAPGothic", "VL Gothic", "Kochi Gothic", - "VL Gothic regular"}}, - {{"TakaoGothic", "VL Gothic", "IPAGothic", "Kochi Gothic", NULL, - "VL Gothic regular"}}, - {{"TakaoPMincho", "IPAPMincho", "VL Gothic", "Kochi Mincho", NULL, - "VL Gothic regular"}}, - {{"TakaoMincho", "IPAMincho", "VL Gothic", "Kochi Mincho", NULL, - "VL Gothic regular"}}, -}; -static const FX_CHAR* const g_LinuxGbFontList[] = { - "AR PL UMing CN Light", "WenQuanYi Micro Hei", "AR PL UKai CN", -}; -static const FX_CHAR* const g_LinuxB5FontList[] = { - "AR PL UMing TW Light", "WenQuanYi Micro Hei", "AR PL UKai TW", -}; -static const FX_CHAR* const g_LinuxHGFontList[] = { - "UnDotum", -}; -static int32_t GetJapanesePreference(const FX_CHAR* facearr, - int weight, - int picth_family) { - CFX_ByteString face = facearr; - if (face.Find("Gothic") >= 0 || - face.Find("\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { - if (face.Find("PGothic") >= 0 || - face.Find("\x82\x6f\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { - return 0; - } - return 1; - } - if (face.Find("Mincho") >= 0 || face.Find("\x96\xbe\x92\xa9") >= 0) { - if (face.Find("PMincho") >= 0 || - face.Find("\x82\x6f\x96\xbe\x92\xa9") >= 0) { - return 2; - } - return 3; - } - if (!(picth_family & FXFONT_FF_ROMAN) && weight > 400) { - return 0; - } - return 2; -} -void* CFX_LinuxFontInfo::MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* cstr_face, - int& iExact) { - void* font = GetSubstFont(cstr_face); - if (font) { - iExact = 1; - return font; - } - FX_BOOL bCJK = TRUE; - switch (charset) { - case FXFONT_SHIFTJIS_CHARSET: { - int32_t index = GetJapanesePreference(cstr_face, weight, pitch_family); - if (index < 0) { - break; - } - for (int32_t i = 0; i < LINUX_GPNAMESIZE; i++) { - auto it = m_FontList.find(LinuxGpFontList[index].NameArr[i]); - if (it != m_FontList.end()) { - return it->second; - } - } - } break; - case FXFONT_GB2312_CHARSET: { - for (size_t i = 0; i < FX_ArraySize(g_LinuxGbFontList); ++i) { - auto it = m_FontList.find(g_LinuxGbFontList[i]); - if (it != m_FontList.end()) { - return it->second; - } - } - } break; - case FXFONT_CHINESEBIG5_CHARSET: { - for (size_t i = 0; i < FX_ArraySize(g_LinuxB5FontList); ++i) { - auto it = m_FontList.find(g_LinuxB5FontList[i]); - if (it != m_FontList.end()) { - return it->second; - } - } - } break; - case FXFONT_HANGEUL_CHARSET: { - for (size_t i = 0; i < FX_ArraySize(g_LinuxHGFontList); ++i) { - auto it = m_FontList.find(g_LinuxHGFontList[i]); - if (it != m_FontList.end()) { - return it->second; - } - } - } break; - default: - bCJK = FALSE; - break; - } - return FindFont(weight, bItalic, charset, pitch_family, cstr_face, !bCJK); -} -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUserPaths) { - CFX_LinuxFontInfo* pInfo = new CFX_LinuxFontInfo; - if (!pInfo->ParseFontCfg(pUserPaths)) { - pInfo->AddPath("/usr/share/fonts"); - pInfo->AddPath("/usr/share/X11/fonts/Type1"); - pInfo->AddPath("/usr/share/X11/fonts/TTF"); - pInfo->AddPath("/usr/local/share/fonts"); - } - return pInfo; -} -FX_BOOL CFX_LinuxFontInfo::ParseFontCfg(const char** pUserPaths) { - if (!pUserPaths) { - return FALSE; - } - for (const char** pPath = pUserPaths; *pPath; ++pPath) { - AddPath(*pPath); - } - return TRUE; -} -void CFX_GEModule::InitPlatform() { - m_pFontMgr->SetSystemFontInfo( - IFX_SystemFontInfo::CreateDefault(m_pUserFontPaths)); -} -void CFX_GEModule::DestroyPlatform() {} -#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ diff --git a/core/src/fxge/ge/fx_ge_path.cpp b/core/src/fxge/ge/fx_ge_path.cpp deleted file mode 100644 index 0b52cdf9e4..0000000000 --- a/core/src/fxge/ge/fx_ge_path.cpp +++ /dev/null @@ -1,656 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcrt/fx_system.h" -#include "core/include/fxge/fx_ge.h" -#include "third_party/base/numerics/safe_math.h" - -CFX_ClipRgn::CFX_ClipRgn(int width, int height) { - m_Type = RectI; - m_Box.left = m_Box.top = 0; - m_Box.right = width; - m_Box.bottom = height; -} -CFX_ClipRgn::CFX_ClipRgn(const FX_RECT& rect) { - m_Type = RectI; - m_Box = rect; -} -CFX_ClipRgn::CFX_ClipRgn(const CFX_ClipRgn& src) { - m_Type = src.m_Type; - m_Box = src.m_Box; - m_Mask = src.m_Mask; -} -CFX_ClipRgn::~CFX_ClipRgn() {} -void CFX_ClipRgn::Reset(const FX_RECT& rect) { - m_Type = RectI; - m_Box = rect; - m_Mask.SetNull(); -} -void CFX_ClipRgn::IntersectRect(const FX_RECT& rect) { - if (m_Type == RectI) { - m_Box.Intersect(rect); - return; - } - if (m_Type == MaskF) { - IntersectMaskRect(rect, m_Box, m_Mask); - return; - } -} -void CFX_ClipRgn::IntersectMaskRect(FX_RECT rect, - FX_RECT mask_rect, - CFX_DIBitmapRef Mask) { - const CFX_DIBitmap* mask_dib = Mask; - m_Type = MaskF; - m_Box = rect; - m_Box.Intersect(mask_rect); - if (m_Box.IsEmpty()) { - m_Type = RectI; - return; - } - if (m_Box == mask_rect) { - m_Mask = Mask; - return; - } - CFX_DIBitmap* new_dib = m_Mask.New(); - if (!new_dib) { - return; - } - new_dib->Create(m_Box.Width(), m_Box.Height(), FXDIB_8bppMask); - for (int row = m_Box.top; row < m_Box.bottom; row++) { - uint8_t* dest_scan = - new_dib->GetBuffer() + new_dib->GetPitch() * (row - m_Box.top); - uint8_t* src_scan = - mask_dib->GetBuffer() + mask_dib->GetPitch() * (row - mask_rect.top); - for (int col = m_Box.left; col < m_Box.right; col++) { - dest_scan[col - m_Box.left] = src_scan[col - mask_rect.left]; - } - } -} -void CFX_ClipRgn::IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask) { - const CFX_DIBitmap* mask_dib = Mask; - ASSERT(mask_dib->GetFormat() == FXDIB_8bppMask); - FX_RECT mask_box(left, top, left + mask_dib->GetWidth(), - top + mask_dib->GetHeight()); - if (m_Type == RectI) { - IntersectMaskRect(m_Box, mask_box, Mask); - return; - } - if (m_Type == MaskF) { - FX_RECT new_box = m_Box; - new_box.Intersect(mask_box); - if (new_box.IsEmpty()) { - m_Type = RectI; - m_Mask.SetNull(); - m_Box = new_box; - return; - } - CFX_DIBitmapRef new_mask; - CFX_DIBitmap* new_dib = new_mask.New(); - if (!new_dib) { - return; - } - new_dib->Create(new_box.Width(), new_box.Height(), FXDIB_8bppMask); - const CFX_DIBitmap* old_dib = m_Mask; - for (int row = new_box.top; row < new_box.bottom; row++) { - uint8_t* old_scan = - old_dib->GetBuffer() + (row - m_Box.top) * old_dib->GetPitch(); - uint8_t* mask_scan = - mask_dib->GetBuffer() + (row - top) * mask_dib->GetPitch(); - uint8_t* new_scan = - new_dib->GetBuffer() + (row - new_box.top) * new_dib->GetPitch(); - for (int col = new_box.left; col < new_box.right; col++) { - new_scan[col - new_box.left] = - old_scan[col - m_Box.left] * mask_scan[col - left] / 255; - } - } - m_Box = new_box; - m_Mask = new_mask; - return; - } - ASSERT(FALSE); -} -CFX_PathData::CFX_PathData() { - m_PointCount = m_AllocCount = 0; - m_pPoints = NULL; -} -CFX_PathData::~CFX_PathData() { - FX_Free(m_pPoints); -} -void CFX_PathData::SetPointCount(int nPoints) { - m_PointCount = nPoints; - if (m_AllocCount < nPoints) { - FX_Free(m_pPoints); - m_pPoints = FX_Alloc(FX_PATHPOINT, nPoints); - m_AllocCount = nPoints; - } -} -void CFX_PathData::AllocPointCount(int nPoints) { - if (m_AllocCount < nPoints) { - FX_PATHPOINT* pNewBuf = FX_Alloc(FX_PATHPOINT, nPoints); - if (m_PointCount) { - FXSYS_memcpy(pNewBuf, m_pPoints, m_PointCount * sizeof(FX_PATHPOINT)); - } - FX_Free(m_pPoints); - m_pPoints = pNewBuf; - m_AllocCount = nPoints; - } -} -CFX_PathData::CFX_PathData(const CFX_PathData& src) { - m_PointCount = m_AllocCount = src.m_PointCount; - m_pPoints = FX_Alloc(FX_PATHPOINT, src.m_PointCount); - FXSYS_memcpy(m_pPoints, src.m_pPoints, sizeof(FX_PATHPOINT) * m_PointCount); -} -void CFX_PathData::TrimPoints(int nPoints) { - if (m_PointCount <= nPoints) { - return; - } - SetPointCount(nPoints); -} -void CFX_PathData::AddPointCount(int addPoints) { - pdfium::base::CheckedNumeric safe_new_count = m_PointCount; - safe_new_count += addPoints; - int new_count = safe_new_count.ValueOrDie(); - AllocPointCount(new_count); - m_PointCount = new_count; -} -void CFX_PathData::Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix) { - int old_count = m_PointCount; - AddPointCount(pSrc->m_PointCount); - FXSYS_memcpy(m_pPoints + old_count, pSrc->m_pPoints, - pSrc->m_PointCount * sizeof(FX_PATHPOINT)); - if (pMatrix) { - for (int i = 0; i < pSrc->m_PointCount; i++) { - pMatrix->Transform(m_pPoints[old_count + i].m_PointX, - m_pPoints[old_count + i].m_PointY); - } - } -} -void CFX_PathData::SetPoint(int index, FX_FLOAT x, FX_FLOAT y, int flag) { - ASSERT(index < m_PointCount); - m_pPoints[index].m_PointX = x; - m_pPoints[index].m_PointY = y; - m_pPoints[index].m_Flag = flag; -} -void CFX_PathData::AppendRect(FX_FLOAT left, - FX_FLOAT bottom, - FX_FLOAT right, - FX_FLOAT top) { - int old_count = m_PointCount; - AddPointCount(5); - FX_PATHPOINT* pPoints = m_pPoints + old_count; - pPoints[0].m_PointX = pPoints[1].m_PointX = pPoints[4].m_PointX = left; - pPoints[2].m_PointX = pPoints[3].m_PointX = right; - pPoints[0].m_PointY = pPoints[3].m_PointY = pPoints[4].m_PointY = bottom; - pPoints[1].m_PointY = pPoints[2].m_PointY = top; - pPoints[0].m_Flag = FXPT_MOVETO; - pPoints[1].m_Flag = pPoints[2].m_Flag = pPoints[3].m_Flag = FXPT_LINETO; - pPoints[4].m_Flag = FXPT_LINETO | FXPT_CLOSEFIGURE; -} -CFX_FloatRect CFX_PathData::GetBoundingBox() const { - CFX_FloatRect rect; - if (m_PointCount) { - rect.InitRect(m_pPoints[0].m_PointX, m_pPoints[0].m_PointY); - for (int i = 1; i < m_PointCount; i++) { - rect.UpdateRect(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY); - } - } - return rect; -} -static void _UpdateLineEndPoints(CFX_FloatRect& rect, - FX_FLOAT start_x, - FX_FLOAT start_y, - FX_FLOAT end_x, - FX_FLOAT end_y, - FX_FLOAT hw) { - if (start_x == end_x) { - if (start_y == end_y) { - rect.UpdateRect(end_x + hw, end_y + hw); - rect.UpdateRect(end_x - hw, end_y - hw); - return; - } - FX_FLOAT point_y; - if (end_y < start_y) { - point_y = end_y - hw; - } else { - point_y = end_y + hw; - } - rect.UpdateRect(end_x + hw, point_y); - rect.UpdateRect(end_x - hw, point_y); - return; - } - if (start_y == end_y) { - FX_FLOAT point_x; - if (end_x < start_x) { - point_x = end_x - hw; - } else { - point_x = end_x + hw; - } - rect.UpdateRect(point_x, end_y + hw); - rect.UpdateRect(point_x, end_y - hw); - return; - } - FX_FLOAT dx = end_x - start_x; - FX_FLOAT dy = end_y - start_y; - FX_FLOAT ll = FXSYS_sqrt2(dx, dy); - FX_FLOAT mx = end_x + hw * dx / ll; - FX_FLOAT my = end_y + hw * dy / ll; - FX_FLOAT dx1 = hw * dy / ll; - FX_FLOAT dy1 = hw * dx / ll; - rect.UpdateRect(mx - dx1, my + dy1); - rect.UpdateRect(mx + dx1, my - dy1); -} -static void _UpdateLineJoinPoints(CFX_FloatRect& rect, - FX_FLOAT start_x, - FX_FLOAT start_y, - FX_FLOAT middle_x, - FX_FLOAT middle_y, - FX_FLOAT end_x, - FX_FLOAT end_y, - FX_FLOAT half_width, - FX_FLOAT miter_limit) { - FX_FLOAT start_k = 0, start_c = 0, end_k = 0, end_c = 0, start_len = 0, - start_dc = 0, end_len = 0, end_dc = 0; - FX_BOOL bStartVert = FXSYS_fabs(start_x - middle_x) < 1.0f / 20; - FX_BOOL bEndVert = FXSYS_fabs(middle_x - end_x) < 1.0f / 20; - if (bStartVert && bEndVert) { - int start_dir = middle_y > start_y ? 1 : -1; - FX_FLOAT point_y = middle_y + half_width * start_dir; - rect.UpdateRect(middle_x + half_width, point_y); - rect.UpdateRect(middle_x - half_width, point_y); - return; - } - if (!bStartVert) { - start_k = (middle_y - start_y) / (middle_x - start_x); - start_c = middle_y - (start_k * middle_x); - start_len = FXSYS_sqrt2(start_x - middle_x, start_y - middle_y); - start_dc = - (FX_FLOAT)FXSYS_fabs(half_width * start_len / (start_x - middle_x)); - } - if (!bEndVert) { - end_k = (end_y - middle_y) / (end_x - middle_x); - end_c = middle_y - (end_k * middle_x); - end_len = FXSYS_sqrt2(end_x - middle_x, end_y - middle_y); - end_dc = (FX_FLOAT)FXSYS_fabs(half_width * end_len / (end_x - middle_x)); - } - if (bStartVert) { - FX_FLOAT outside_x = start_x; - if (end_x < start_x) { - outside_x += half_width; - } else { - outside_x -= half_width; - } - FX_FLOAT outside_y; - if (start_y < (end_k * start_x) + end_c) { - outside_y = (end_k * outside_x) + end_c + end_dc; - } else { - outside_y = (end_k * outside_x) + end_c - end_dc; - } - rect.UpdateRect(outside_x, outside_y); - return; - } - if (bEndVert) { - FX_FLOAT outside_x = end_x; - if (start_x < end_x) { - outside_x += half_width; - } else { - outside_x -= half_width; - } - FX_FLOAT outside_y; - if (end_y < (start_k * end_x) + start_c) { - outside_y = (start_k * outside_x) + start_c + start_dc; - } else { - outside_y = (start_k * outside_x) + start_c - start_dc; - } - rect.UpdateRect(outside_x, outside_y); - return; - } - if (FXSYS_fabs(start_k - end_k) < 1.0f / 20) { - int start_dir = middle_x > start_x ? 1 : -1; - int end_dir = end_x > middle_x ? 1 : -1; - if (start_dir == end_dir) { - _UpdateLineEndPoints(rect, middle_x, middle_y, end_x, end_y, half_width); - } else { - _UpdateLineEndPoints(rect, start_x, start_y, middle_x, middle_y, - half_width); - } - return; - } - FX_FLOAT start_outside_c = start_c; - if (end_y < (start_k * end_x) + start_c) { - start_outside_c += start_dc; - } else { - start_outside_c -= start_dc; - } - FX_FLOAT end_outside_c = end_c; - if (start_y < (end_k * start_x) + end_c) { - end_outside_c += end_dc; - } else { - end_outside_c -= end_dc; - } - FX_FLOAT join_x = (end_outside_c - start_outside_c) / (start_k - end_k); - FX_FLOAT join_y = (start_k * join_x) + start_outside_c; - rect.UpdateRect(join_x, join_y); -} -CFX_FloatRect CFX_PathData::GetBoundingBox(FX_FLOAT line_width, - FX_FLOAT miter_limit) const { - CFX_FloatRect rect(100000 * 1.0f, 100000 * 1.0f, -100000 * 1.0f, - -100000 * 1.0f); - int iPoint = 0; - FX_FLOAT half_width = line_width; - int iStartPoint, iEndPoint, iMiddlePoint; - FX_BOOL bJoin; - while (iPoint < m_PointCount) { - if (m_pPoints[iPoint].m_Flag == FXPT_MOVETO) { - iStartPoint = iPoint + 1; - iEndPoint = iPoint; - bJoin = FALSE; - } else { - if (m_pPoints[iPoint].m_Flag == FXPT_BEZIERTO) { - rect.UpdateRect(m_pPoints[iPoint].m_PointX, m_pPoints[iPoint].m_PointY); - rect.UpdateRect(m_pPoints[iPoint + 1].m_PointX, - m_pPoints[iPoint + 1].m_PointY); - iPoint += 2; - } - if (iPoint == m_PointCount - 1 || - m_pPoints[iPoint + 1].m_Flag == FXPT_MOVETO) { - iStartPoint = iPoint - 1; - iEndPoint = iPoint; - bJoin = FALSE; - } else { - iStartPoint = iPoint - 1; - iMiddlePoint = iPoint; - iEndPoint = iPoint + 1; - bJoin = TRUE; - } - } - FX_FLOAT start_x = m_pPoints[iStartPoint].m_PointX; - FX_FLOAT start_y = m_pPoints[iStartPoint].m_PointY; - FX_FLOAT end_x = m_pPoints[iEndPoint].m_PointX; - FX_FLOAT end_y = m_pPoints[iEndPoint].m_PointY; - if (bJoin) { - FX_FLOAT middle_x = m_pPoints[iMiddlePoint].m_PointX; - FX_FLOAT middle_y = m_pPoints[iMiddlePoint].m_PointY; - _UpdateLineJoinPoints(rect, start_x, start_y, middle_x, middle_y, end_x, - end_y, half_width, miter_limit); - } else { - _UpdateLineEndPoints(rect, start_x, start_y, end_x, end_y, half_width); - } - iPoint++; - } - return rect; -} -void CFX_PathData::Transform(const CFX_Matrix* pMatrix) { - if (!pMatrix) { - return; - } - for (int i = 0; i < m_PointCount; i++) { - pMatrix->Transform(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY); - } -} -FX_BOOL CFX_PathData::GetZeroAreaPath(CFX_PathData& NewPath, - CFX_Matrix* pMatrix, - FX_BOOL& bThin, - FX_BOOL bAdjust) const { - if (m_PointCount < 3) { - return FALSE; - } - if (m_PointCount == 3 && (m_pPoints[0].m_Flag & FXPT_TYPE) == FXPT_MOVETO && - (m_pPoints[1].m_Flag & FXPT_TYPE) == FXPT_LINETO && - (m_pPoints[2].m_Flag & FXPT_TYPE) == FXPT_LINETO && - m_pPoints[0].m_PointX == m_pPoints[2].m_PointX && - m_pPoints[0].m_PointY == m_pPoints[2].m_PointY) { - NewPath.AddPointCount(2); - if (bAdjust) { - if (pMatrix) { - FX_FLOAT x = m_pPoints[0].m_PointX, y = m_pPoints[0].m_PointY; - pMatrix->TransformPoint(x, y); - x = (int)x + 0.5f; - y = (int)y + 0.5f; - NewPath.SetPoint(0, x, y, FXPT_MOVETO); - x = m_pPoints[1].m_PointX, y = m_pPoints[1].m_PointY; - pMatrix->TransformPoint(x, y); - x = (int)x + 0.5f; - y = (int)y + 0.5f; - NewPath.SetPoint(1, x, y, FXPT_LINETO); - pMatrix->SetIdentity(); - } else { - FX_FLOAT x = (int)m_pPoints[0].m_PointX + 0.5f, - y = (int)m_pPoints[0].m_PointY + 0.5f; - NewPath.SetPoint(0, x, y, FXPT_MOVETO); - x = (int)m_pPoints[1].m_PointX + 0.5f, - y = (int)m_pPoints[1].m_PointY + 0.5f; - NewPath.SetPoint(1, x, y, FXPT_LINETO); - } - } else { - NewPath.SetPoint(0, m_pPoints[0].m_PointX, m_pPoints[0].m_PointY, - FXPT_MOVETO); - NewPath.SetPoint(1, m_pPoints[1].m_PointX, m_pPoints[1].m_PointY, - FXPT_LINETO); - } - if (m_pPoints[0].m_PointX != m_pPoints[1].m_PointX && - m_pPoints[0].m_PointY != m_pPoints[1].m_PointY) { - bThin = TRUE; - } - return TRUE; - } - if (((m_PointCount > 3) && (m_PointCount % 2))) { - int mid = m_PointCount / 2; - FX_BOOL bZeroArea = FALSE; - CFX_PathData t_path; - for (int i = 0; i < mid; i++) { - if (!(m_pPoints[mid - i - 1].m_PointX == - m_pPoints[mid + i + 1].m_PointX && - m_pPoints[mid - i - 1].m_PointY == - m_pPoints[mid + i + 1].m_PointY && - ((m_pPoints[mid - i - 1].m_Flag & FXPT_TYPE) != FXPT_BEZIERTO && - (m_pPoints[mid + i + 1].m_Flag & FXPT_TYPE) != FXPT_BEZIERTO))) { - bZeroArea = TRUE; - break; - } - int new_count = t_path.GetPointCount(); - t_path.AddPointCount(2); - t_path.SetPoint(new_count, m_pPoints[mid - i].m_PointX, - m_pPoints[mid - i].m_PointY, FXPT_MOVETO); - t_path.SetPoint(new_count + 1, m_pPoints[mid - i - 1].m_PointX, - m_pPoints[mid - i - 1].m_PointY, FXPT_LINETO); - } - if (!bZeroArea) { - NewPath.Append(&t_path, NULL); - bThin = TRUE; - return TRUE; - } - } - int stratPoint = 0; - int next = 0, i; - for (i = 0; i < m_PointCount; i++) { - int point_type = m_pPoints[i].m_Flag & FXPT_TYPE; - if (point_type == FXPT_MOVETO) { - stratPoint = i; - } else if (point_type == FXPT_LINETO) { - next = (i + 1 - stratPoint) % (m_PointCount - stratPoint) + stratPoint; - if ((m_pPoints[next].m_Flag & FXPT_TYPE) != FXPT_BEZIERTO && - (m_pPoints[next].m_Flag & FXPT_TYPE) != FXPT_MOVETO) { - if ((m_pPoints[i - 1].m_PointX == m_pPoints[i].m_PointX && - m_pPoints[i].m_PointX == m_pPoints[next].m_PointX) && - ((m_pPoints[i].m_PointY - m_pPoints[i - 1].m_PointY) * - (m_pPoints[i].m_PointY - m_pPoints[next].m_PointY) > - 0)) { - int pre = i; - if (FXSYS_fabs(m_pPoints[i].m_PointY - m_pPoints[i - 1].m_PointY) < - FXSYS_fabs(m_pPoints[i].m_PointY - m_pPoints[next].m_PointY)) { - pre--; - next--; - } - int new_count = NewPath.GetPointCount(); - NewPath.AddPointCount(2); - NewPath.SetPoint(new_count, m_pPoints[pre].m_PointX, - m_pPoints[pre].m_PointY, FXPT_MOVETO); - NewPath.SetPoint(new_count + 1, m_pPoints[next].m_PointX, - m_pPoints[next].m_PointY, FXPT_LINETO); - } else if ((m_pPoints[i - 1].m_PointY == m_pPoints[i].m_PointY && - m_pPoints[i].m_PointY == m_pPoints[next].m_PointY) && - ((m_pPoints[i].m_PointX - m_pPoints[i - 1].m_PointX) * - (m_pPoints[i].m_PointX - m_pPoints[next].m_PointX) > - 0)) { - int pre = i; - if (FXSYS_fabs(m_pPoints[i].m_PointX - m_pPoints[i - 1].m_PointX) < - FXSYS_fabs(m_pPoints[i].m_PointX - m_pPoints[next].m_PointX)) { - pre--; - next--; - } - int new_count = NewPath.GetPointCount(); - NewPath.AddPointCount(2); - NewPath.SetPoint(new_count, m_pPoints[pre].m_PointX, - m_pPoints[pre].m_PointY, FXPT_MOVETO); - NewPath.SetPoint(new_count + 1, m_pPoints[next].m_PointX, - m_pPoints[next].m_PointY, FXPT_LINETO); - } else if ((m_pPoints[i - 1].m_Flag & FXPT_TYPE) == FXPT_MOVETO && - (m_pPoints[next].m_Flag & FXPT_TYPE) == FXPT_LINETO && - m_pPoints[i - 1].m_PointX == m_pPoints[next].m_PointX && - m_pPoints[i - 1].m_PointY == m_pPoints[next].m_PointY && - m_pPoints[next].m_Flag & FXPT_CLOSEFIGURE) { - int new_count = NewPath.GetPointCount(); - NewPath.AddPointCount(2); - NewPath.SetPoint(new_count, m_pPoints[i - 1].m_PointX, - m_pPoints[i - 1].m_PointY, FXPT_MOVETO); - NewPath.SetPoint(new_count + 1, m_pPoints[i].m_PointX, - m_pPoints[i].m_PointY, FXPT_LINETO); - bThin = TRUE; - } - } - } else if (point_type == FXPT_BEZIERTO) { - i += 2; - continue; - } - } - if (m_PointCount > 3 && NewPath.GetPointCount()) { - bThin = TRUE; - } - if (NewPath.GetPointCount() == 0) { - return FALSE; - } - return TRUE; -} -FX_BOOL CFX_PathData::IsRect() const { - if (m_PointCount != 5 && m_PointCount != 4) { - return FALSE; - } - if ((m_PointCount == 5 && (m_pPoints[0].m_PointX != m_pPoints[4].m_PointX || - m_pPoints[0].m_PointY != m_pPoints[4].m_PointY)) || - (m_pPoints[0].m_PointX == m_pPoints[2].m_PointX && - m_pPoints[0].m_PointY == m_pPoints[2].m_PointY) || - (m_pPoints[1].m_PointX == m_pPoints[3].m_PointX && - m_pPoints[1].m_PointY == m_pPoints[3].m_PointY)) { - return FALSE; - } - if (m_pPoints[0].m_PointX != m_pPoints[3].m_PointX && - m_pPoints[0].m_PointY != m_pPoints[3].m_PointY) { - return FALSE; - } - for (int i = 1; i < 4; i++) { - if ((m_pPoints[i].m_Flag & FXPT_TYPE) != FXPT_LINETO) { - return FALSE; - } - if (m_pPoints[i].m_PointX != m_pPoints[i - 1].m_PointX && - m_pPoints[i].m_PointY != m_pPoints[i - 1].m_PointY) { - return FALSE; - } - } - return m_PointCount == 5 || (m_pPoints[3].m_Flag & FXPT_CLOSEFIGURE); -} -FX_BOOL CFX_PathData::IsRect(const CFX_Matrix* pMatrix, - CFX_FloatRect* pRect) const { - if (!pMatrix) { - if (!IsRect()) { - return FALSE; - } - if (pRect) { - pRect->left = m_pPoints[0].m_PointX; - pRect->right = m_pPoints[2].m_PointX; - pRect->bottom = m_pPoints[0].m_PointY; - pRect->top = m_pPoints[2].m_PointY; - pRect->Normalize(); - } - return TRUE; - } - if (m_PointCount != 5 && m_PointCount != 4) { - return FALSE; - } - if ((m_PointCount == 5 && (m_pPoints[0].m_PointX != m_pPoints[4].m_PointX || - m_pPoints[0].m_PointY != m_pPoints[4].m_PointY)) || - (m_pPoints[1].m_PointX == m_pPoints[3].m_PointX && - m_pPoints[1].m_PointY == m_pPoints[3].m_PointY)) { - return FALSE; - } - if (m_PointCount == 4 && m_pPoints[0].m_PointX != m_pPoints[3].m_PointX && - m_pPoints[0].m_PointY != m_pPoints[3].m_PointY) { - return FALSE; - } - FX_FLOAT x[5], y[5]; - for (int i = 0; i < m_PointCount; i++) { - pMatrix->Transform(m_pPoints[i].m_PointX, m_pPoints[i].m_PointY, x[i], - y[i]); - if (i) { - if ((m_pPoints[i].m_Flag & FXPT_TYPE) != FXPT_LINETO) { - return FALSE; - } - if (x[i] != x[i - 1] && y[i] != y[i - 1]) { - return FALSE; - } - } - } - if (pRect) { - pRect->left = x[0]; - pRect->right = x[2]; - pRect->bottom = y[0]; - pRect->top = y[2]; - pRect->Normalize(); - } - return TRUE; -} -void CFX_PathData::Copy(const CFX_PathData& src) { - SetPointCount(src.m_PointCount); - FXSYS_memcpy(m_pPoints, src.m_pPoints, sizeof(FX_PATHPOINT) * m_PointCount); -} -CFX_GraphStateData::CFX_GraphStateData() { - m_LineCap = LineCapButt; - m_DashCount = 0; - m_DashArray = NULL; - m_DashPhase = 0; - m_LineJoin = LineJoinMiter; - m_MiterLimit = 10 * 1.0f; - m_LineWidth = 1.0f; -} -CFX_GraphStateData::CFX_GraphStateData(const CFX_GraphStateData& src) { - m_DashArray = NULL; - Copy(src); -} -void CFX_GraphStateData::Copy(const CFX_GraphStateData& src) { - m_LineCap = src.m_LineCap; - m_DashCount = src.m_DashCount; - FX_Free(m_DashArray); - m_DashArray = NULL; - m_DashPhase = src.m_DashPhase; - m_LineJoin = src.m_LineJoin; - m_MiterLimit = src.m_MiterLimit; - m_LineWidth = src.m_LineWidth; - if (m_DashCount) { - m_DashArray = FX_Alloc(FX_FLOAT, m_DashCount); - FXSYS_memcpy(m_DashArray, src.m_DashArray, m_DashCount * sizeof(FX_FLOAT)); - } -} -CFX_GraphStateData::~CFX_GraphStateData() { - FX_Free(m_DashArray); -} -void CFX_GraphStateData::SetDashCount(int count) { - FX_Free(m_DashArray); - m_DashArray = NULL; - m_DashCount = count; - if (count == 0) { - return; - } - m_DashArray = FX_Alloc(FX_FLOAT, count); -} diff --git a/core/src/fxge/ge/fx_ge_ps.cpp b/core/src/fxge/ge/fx_ge_ps.cpp deleted file mode 100644 index d6f6089033..0000000000 --- a/core/src/fxge/ge/fx_ge_ps.cpp +++ /dev/null @@ -1,700 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -#include "core/include/fxcodec/fx_codec.h" -#include "core/src/fxge/ge/fx_text_int.h" - -struct PSGlyph { - CFX_Font* m_pFont; - FX_DWORD m_GlyphIndex; - FX_BOOL m_bGlyphAdjust; - FX_FLOAT m_AdjustMatrix[4]; -}; -class CPSFont { - public: - PSGlyph m_Glyphs[256]; - int m_nGlyphs; -}; -CFX_PSRenderer::CFX_PSRenderer() { - m_pOutput = NULL; - m_bColorSet = m_bGraphStateSet = FALSE; - m_bInited = FALSE; -} -CFX_PSRenderer::~CFX_PSRenderer() { - for (int i = 0; i < (int)m_PSFontList.GetSize(); i++) { - CPSFont* pFont = m_PSFontList[i]; - delete pFont; - } -} -#define OUTPUT_PS(str) m_pOutput->OutputPS(str, sizeof str - 1) -void CFX_PSRenderer::Init(IFX_PSOutput* pOutput, - int pslevel, - int width, - int height, - FX_BOOL bCmykOutput) { - m_PSLevel = pslevel; - m_pOutput = pOutput; - m_ClipBox.left = m_ClipBox.top = 0; - m_ClipBox.right = width; - m_ClipBox.bottom = height; - m_bCmykOutput = bCmykOutput; -} -FX_BOOL CFX_PSRenderer::StartRendering() { - if (m_bInited) { - return TRUE; - } - static const char init_str[] = - "\nsave\n/im/initmatrix load def\n" - "/n/newpath load def/m/moveto load def/l/lineto load def/c/curveto load " - "def/h/closepath load def\n" - "/f/fill load def/F/eofill load def/s/stroke load def/W/clip load " - "def/W*/eoclip load def\n" - "/rg/setrgbcolor load def/k/setcmykcolor load def\n" - "/J/setlinecap load def/j/setlinejoin load def/w/setlinewidth load " - "def/M/setmiterlimit load def/d/setdash load def\n" - "/q/gsave load def/Q/grestore load def/iM/imagemask load def\n" - "/Tj/show load def/Ff/findfont load def/Fs/scalefont load def/Sf/setfont " - "load def\n" - "/cm/concat load def/Cm/currentmatrix load def/mx/matrix load " - "def/sm/setmatrix load def\n"; - OUTPUT_PS(init_str); - m_bInited = TRUE; - return TRUE; -} -void CFX_PSRenderer::EndRendering() { - if (m_bInited) { - OUTPUT_PS("\nrestore\n"); - } - m_bInited = FALSE; -} -void CFX_PSRenderer::SaveState() { - StartRendering(); - OUTPUT_PS("q\n"); - m_ClipBoxStack.Add(m_ClipBox); -} -void CFX_PSRenderer::RestoreState(FX_BOOL bKeepSaved) { - StartRendering(); - if (bKeepSaved) { - OUTPUT_PS("Q\nq\n"); - } else { - OUTPUT_PS("Q\n"); - } - m_bColorSet = m_bGraphStateSet = FALSE; - m_ClipBox = m_ClipBoxStack.GetAt(m_ClipBoxStack.GetSize() - 1); - if (!bKeepSaved) { - m_ClipBoxStack.RemoveAt(m_ClipBoxStack.GetSize() - 1); - } -} -void CFX_PSRenderer::OutputPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device) { - int nPoints = pPathData->GetPointCount(); - CFX_ByteTextBuf buf; - buf.EstimateSize(nPoints * 10); - for (int i = 0; i < nPoints; i++) { - uint8_t flag = pPathData->GetFlag(i); - FX_FLOAT x = pPathData->GetPointX(i); - FX_FLOAT y = pPathData->GetPointY(i); - if (pObject2Device) { - pObject2Device->Transform(x, y); - } - buf << x << " " << y; - switch (flag & FXPT_TYPE) { - case FXPT_MOVETO: - buf << " m "; - break; - case FXPT_LINETO: - if (flag & FXPT_CLOSEFIGURE) { - buf << " l h "; - } else { - buf << " l "; - } - break; - case FXPT_BEZIERTO: { - FX_FLOAT x1 = pPathData->GetPointX(i + 1); - FX_FLOAT x2 = pPathData->GetPointX(i + 2); - FX_FLOAT y1 = pPathData->GetPointY(i + 1); - FX_FLOAT y2 = pPathData->GetPointY(i + 2); - if (pObject2Device) { - pObject2Device->Transform(x1, y1); - pObject2Device->Transform(x2, y2); - } - buf << " " << x1 << " " << y1 << " " << x2 << " " << y2; - if (flag & FXPT_CLOSEFIGURE) { - buf << " c h\n"; - } else { - buf << " c\n"; - } - i += 2; - break; - } - } - } - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); -} -void CFX_PSRenderer::SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) { - StartRendering(); - OutputPath(pPathData, pObject2Device); - CFX_FloatRect rect = pPathData->GetBoundingBox(); - if (pObject2Device) { - rect.Transform(pObject2Device); - } - m_ClipBox.Intersect(rect.GetOutterRect()); - if ((fill_mode & 3) == FXFILL_WINDING) { - OUTPUT_PS("W n\n"); - } else { - OUTPUT_PS("W* n\n"); - } -} -void CFX_PSRenderer::SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) { - StartRendering(); - SetGraphState(pGraphState); - if (pObject2Device) { - CFX_ByteTextBuf buf; - buf << "mx Cm [" << pObject2Device->a << " " << pObject2Device->b << " " - << pObject2Device->c << " " << pObject2Device->d << " " - << pObject2Device->e << " " << pObject2Device->f << "]cm "; - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - } - OutputPath(pPathData, NULL); - CFX_FloatRect rect = pPathData->GetBoundingBox(pGraphState->m_LineWidth, - pGraphState->m_MiterLimit); - rect.Transform(pObject2Device); - m_ClipBox.Intersect(rect.GetOutterRect()); - if (pObject2Device) { - OUTPUT_PS("strokepath W n sm\n"); - } else { - OUTPUT_PS("strokepath W n\n"); - } -} -FX_BOOL CFX_PSRenderer::DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform) { - StartRendering(); - int fill_alpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? FXGETFLAG_ALPHA_FILL(alpha_flag) - : FXARGB_A(fill_color); - int stroke_alpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? FXGETFLAG_ALPHA_STROKE(alpha_flag) - : FXARGB_A(stroke_color); - if (fill_alpha && fill_alpha < 255) { - return FALSE; - } - if (stroke_alpha && stroke_alpha < 255) { - return FALSE; - } - if (fill_alpha == 0 && stroke_alpha == 0) { - return FALSE; - } - if (stroke_alpha) { - SetGraphState(pGraphState); - if (pObject2Device) { - CFX_ByteTextBuf buf; - buf << "mx Cm [" << pObject2Device->a << " " << pObject2Device->b << " " - << pObject2Device->c << " " << pObject2Device->d << " " - << pObject2Device->e << " " << pObject2Device->f << "]cm "; - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - } - } - OutputPath(pPathData, stroke_alpha ? NULL : pObject2Device); - if (fill_mode && fill_alpha) { - SetColor(fill_color, alpha_flag, pIccTransform); - if ((fill_mode & 3) == FXFILL_WINDING) { - if (stroke_alpha) { - OUTPUT_PS("q f Q "); - } else { - OUTPUT_PS("f"); - } - } else if ((fill_mode & 3) == FXFILL_ALTERNATE) { - if (stroke_alpha) { - OUTPUT_PS("q F Q "); - } else { - OUTPUT_PS("F"); - } - } - } - if (stroke_alpha) { - SetColor(stroke_color, alpha_flag, pIccTransform); - if (pObject2Device) { - OUTPUT_PS("s sm"); - } else { - OUTPUT_PS("s"); - } - } - OUTPUT_PS("\n"); - return TRUE; -} -void CFX_PSRenderer::SetGraphState(const CFX_GraphStateData* pGraphState) { - CFX_ByteTextBuf buf; - if (!m_bGraphStateSet || - m_CurGraphState.m_LineCap != pGraphState->m_LineCap) { - buf << pGraphState->m_LineCap << " J\n"; - } - if (!m_bGraphStateSet || - m_CurGraphState.m_DashCount != pGraphState->m_DashCount || - FXSYS_memcmp(m_CurGraphState.m_DashArray, pGraphState->m_DashArray, - sizeof(FX_FLOAT) * m_CurGraphState.m_DashCount)) { - buf << "["; - for (int i = 0; i < pGraphState->m_DashCount; i++) { - buf << pGraphState->m_DashArray[i] << " "; - } - buf << "]" << pGraphState->m_DashPhase << " d\n"; - } - if (!m_bGraphStateSet || - m_CurGraphState.m_LineJoin != pGraphState->m_LineJoin) { - buf << pGraphState->m_LineJoin << " j\n"; - } - if (!m_bGraphStateSet || - m_CurGraphState.m_LineWidth != pGraphState->m_LineWidth) { - buf << pGraphState->m_LineWidth << " w\n"; - } - if (!m_bGraphStateSet || - m_CurGraphState.m_MiterLimit != pGraphState->m_MiterLimit) { - buf << pGraphState->m_MiterLimit << " M\n"; - } - m_CurGraphState.Copy(*pGraphState); - m_bGraphStateSet = TRUE; - if (buf.GetSize()) { - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - } -} -static void FaxCompressData(uint8_t* src_buf, - int width, - int height, - uint8_t*& dest_buf, - FX_DWORD& dest_size) { - CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); - if (width * height > 128 && pEncoders && - pEncoders->GetFaxModule()->Encode(src_buf, width, height, (width + 7) / 8, - dest_buf, dest_size)) { - FX_Free(src_buf); - } else { - dest_buf = src_buf; - dest_size = (width + 7) / 8 * height; - } -} -static void PSCompressData(int PSLevel, - uint8_t* src_buf, - FX_DWORD src_size, - uint8_t*& output_buf, - FX_DWORD& output_size, - const FX_CHAR*& filter) { - output_buf = src_buf; - output_size = src_size; - filter = ""; - if (src_size < 1024) { - return; - } - CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); - uint8_t* dest_buf = NULL; - FX_DWORD dest_size = src_size; - if (PSLevel >= 3) { - if (pEncoders && - pEncoders->GetFlateModule()->Encode(src_buf, src_size, dest_buf, - dest_size)) { - filter = "/FlateDecode filter "; - } - } else { - if (pEncoders && - pEncoders->GetBasicModule()->RunLengthEncode(src_buf, src_size, - dest_buf, dest_size)) { - filter = "/RunLengthDecode filter "; - } - } - if (dest_size < src_size) { - output_buf = dest_buf; - output_size = dest_size; - } else { - filter = NULL; - FX_Free(dest_buf); - } -} -FX_BOOL CFX_PSRenderer::SetDIBits(const CFX_DIBSource* pSource, - FX_DWORD color, - int left, - int top, - int alpha_flag, - void* pIccTransform) { - StartRendering(); - CFX_Matrix matrix((FX_FLOAT)(pSource->GetWidth()), 0.0f, 0.0f, - -(FX_FLOAT)(pSource->GetHeight()), (FX_FLOAT)(left), - (FX_FLOAT)(top + pSource->GetHeight())); - return DrawDIBits(pSource, color, &matrix, 0, alpha_flag, pIccTransform); -} -FX_BOOL CFX_PSRenderer::StretchDIBits(const CFX_DIBSource* pSource, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform) { - StartRendering(); - CFX_Matrix matrix((FX_FLOAT)(dest_width), 0.0f, 0.0f, - (FX_FLOAT)(-dest_height), (FX_FLOAT)(dest_left), - (FX_FLOAT)(dest_top + dest_height)); - return DrawDIBits(pSource, color, &matrix, flags, alpha_flag, pIccTransform); -} -FX_BOOL CFX_PSRenderer::DrawDIBits(const CFX_DIBSource* pSource, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform) { - StartRendering(); - if ((pMatrix->a == 0 && pMatrix->b == 0) || - (pMatrix->c == 0 && pMatrix->d == 0)) { - return TRUE; - } - if (pSource->HasAlpha()) { - return FALSE; - } - int alpha = FXGETFLAG_COLORTYPE(alpha_flag) ? FXGETFLAG_ALPHA_FILL(color) - : FXARGB_A(color); - if (pSource->IsAlphaMask() && (alpha < 255 || pSource->GetBPP() != 1)) { - return FALSE; - } - OUTPUT_PS("q\n"); - CFX_ByteTextBuf buf; - buf << "[" << pMatrix->a << " " << pMatrix->b << " " << pMatrix->c << " " - << pMatrix->d << " " << pMatrix->e << " " << pMatrix->f << "]cm "; - int width = pSource->GetWidth(); - int height = pSource->GetHeight(); - buf << width << " " << height; - if (pSource->GetBPP() == 1 && !pSource->GetPalette()) { - int pitch = (width + 7) / 8; - FX_DWORD src_size = height * pitch; - uint8_t* src_buf = FX_Alloc(uint8_t, src_size); - for (int row = 0; row < height; row++) { - const uint8_t* src_scan = pSource->GetScanline(row); - FXSYS_memcpy(src_buf + row * pitch, src_scan, pitch); - } - uint8_t* output_buf; - FX_DWORD output_size; - FaxCompressData(src_buf, width, height, output_buf, output_size); - if (pSource->IsAlphaMask()) { - SetColor(color, alpha_flag, pIccTransform); - m_bColorSet = FALSE; - buf << " true["; - } else { - buf << " 1["; - } - buf << width << " 0 0 -" << height << " 0 " << height - << "]currentfile/ASCII85Decode filter "; - if (output_buf != src_buf) - buf << "<>/CCITTFaxDecode filter "; - if (pSource->IsAlphaMask()) { - buf << "iM\n"; - } else { - buf << "false 1 colorimage\n"; - } - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - WritePSBinary(output_buf, output_size); - FX_Free(output_buf); - } else { - CFX_DIBSource* pConverted = (CFX_DIBSource*)pSource; - if (pIccTransform) { - FXDIB_Format format = m_bCmykOutput ? FXDIB_Cmyk : FXDIB_Rgb; - pConverted = pSource->CloneConvert(format, NULL, pIccTransform); - } else { - switch (pSource->GetFormat()) { - case FXDIB_1bppRgb: - case FXDIB_Rgb32: - pConverted = pSource->CloneConvert(FXDIB_Rgb); - break; - case FXDIB_8bppRgb: - if (pSource->GetPalette()) { - pConverted = pSource->CloneConvert(FXDIB_Rgb); - } - break; - case FXDIB_1bppCmyk: - pConverted = pSource->CloneConvert(FXDIB_Cmyk); - break; - case FXDIB_8bppCmyk: - if (pSource->GetPalette()) { - pConverted = pSource->CloneConvert(FXDIB_Cmyk); - } - break; - default: - break; - } - } - if (!pConverted) { - OUTPUT_PS("\nQ\n"); - return FALSE; - } - int Bpp = pConverted->GetBPP() / 8; - uint8_t* output_buf = NULL; - FX_STRSIZE output_size = 0; - const FX_CHAR* filter = NULL; - if (flags & FXRENDER_IMAGE_LOSSY) { - CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); - if (pEncoders && - pEncoders->GetJpegModule()->Encode(pConverted, output_buf, - output_size)) { - filter = "/DCTDecode filter "; - } - } - if (!filter) { - int src_pitch = width * Bpp; - output_size = height * src_pitch; - output_buf = FX_Alloc(uint8_t, output_size); - for (int row = 0; row < height; row++) { - const uint8_t* src_scan = pConverted->GetScanline(row); - uint8_t* dest_scan = output_buf + row * src_pitch; - if (Bpp == 3) { - for (int col = 0; col < width; col++) { - *dest_scan++ = src_scan[2]; - *dest_scan++ = src_scan[1]; - *dest_scan++ = *src_scan; - src_scan += 3; - } - } else { - FXSYS_memcpy(dest_scan, src_scan, src_pitch); - } - } - uint8_t* compressed_buf; - FX_DWORD compressed_size; - PSCompressData(m_PSLevel, output_buf, output_size, compressed_buf, - compressed_size, filter); - if (output_buf != compressed_buf) { - FX_Free(output_buf); - } - output_buf = compressed_buf; - output_size = compressed_size; - } - if (pConverted != pSource) { - delete pConverted; - pConverted = NULL; - } - buf << " 8["; - buf << width << " 0 0 -" << height << " 0 " << height << "]"; - buf << "currentfile/ASCII85Decode filter "; - if (filter) { - buf << filter; - } - buf << "false " << Bpp; - buf << " colorimage\n"; - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - WritePSBinary(output_buf, output_size); - FX_Free(output_buf); - } - OUTPUT_PS("\nQ\n"); - return TRUE; -} -void CFX_PSRenderer::SetColor(FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - if (!CFX_GEModule::Get()->GetCodecModule() || - !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - pIccTransform = NULL; - } - FX_BOOL bCMYK = FALSE; - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - color = FXGETFLAG_COLORTYPE(alpha_flag) ? FXCMYK_TODIB(color) - : FXARGB_TODIB(color); - uint8_t* pColor = (uint8_t*)&color; - pIccModule->TranslateScanline(pIccTransform, pColor, pColor, 1); - color = m_bCmykOutput ? FXCMYK_TODIB(color) : FXARGB_TODIB(color); - bCMYK = m_bCmykOutput; - } else { - bCMYK = FXGETFLAG_COLORTYPE(alpha_flag); - } - if (bCMYK != m_bCmykOutput || !m_bColorSet || m_LastColor != color) { - CFX_ByteTextBuf buf; - if (bCMYK) { - buf << FXSYS_GetCValue(color) / 255.0 << " " - << FXSYS_GetMValue(color) / 255.0 << " " - << FXSYS_GetYValue(color) / 255.0 << " " - << FXSYS_GetKValue(color) / 255.0 << " k\n"; - } else { - buf << FXARGB_R(color) / 255.0 << " " << FXARGB_G(color) / 255.0 << " " - << FXARGB_B(color) / 255.0 << " rg\n"; - } - if (bCMYK == m_bCmykOutput) { - m_bColorSet = TRUE; - m_LastColor = color; - } - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - } -} -void CFX_PSRenderer::FindPSFontGlyph(CFX_FaceCache* pFaceCache, - CFX_Font* pFont, - const FXTEXT_CHARPOS& charpos, - int& ps_fontnum, - int& ps_glyphindex) { - for (int i = 0; i < (int)m_PSFontList.GetSize(); i++) { - CPSFont* pPSFont = m_PSFontList[i]; - for (int j = 0; j < pPSFont->m_nGlyphs; j++) - if (pPSFont->m_Glyphs[j].m_pFont == pFont && - pPSFont->m_Glyphs[j].m_GlyphIndex == charpos.m_GlyphIndex) { - if ((!pPSFont->m_Glyphs[j].m_bGlyphAdjust && !charpos.m_bGlyphAdjust) || - (pPSFont->m_Glyphs[j].m_bGlyphAdjust && charpos.m_bGlyphAdjust && - (FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[0] - - charpos.m_AdjustMatrix[0]) < 0.01 && - FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[1] - - charpos.m_AdjustMatrix[1]) < 0.01 && - FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[2] - - charpos.m_AdjustMatrix[2]) < 0.01 && - FXSYS_fabs(pPSFont->m_Glyphs[j].m_AdjustMatrix[3] - - charpos.m_AdjustMatrix[3]) < 0.01))) { - ps_fontnum = i; - ps_glyphindex = j; - return; - } - } - } - if (m_PSFontList.GetSize() == 0 || - m_PSFontList[m_PSFontList.GetSize() - 1]->m_nGlyphs == 256) { - CPSFont* pPSFont = new CPSFont; - pPSFont->m_nGlyphs = 0; - m_PSFontList.Add(pPSFont); - CFX_ByteTextBuf buf; - buf << "8 dict begin/FontType 3 def/FontMatrix[1 0 0 1 0 0]def\n" - "/FontBBox[0 0 0 0]def/Encoding 256 array def 0 1 255{Encoding " - "exch/.notdef put}for\n" - "/CharProcs 1 dict def CharProcs begin/.notdef {} def end\n" - "/BuildGlyph{1 0 -10 -10 10 10 setcachedevice exch/CharProcs get " - "exch 2 copy known not{pop/.notdef}if get exec}bind def\n" - "/BuildChar{1 index/Encoding get exch get 1 index/BuildGlyph get " - "exec}bind def\n" - "currentdict end\n"; - buf << "/X" << m_PSFontList.GetSize() - 1 << " exch definefont pop\n"; - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - buf.Clear(); - } - ps_fontnum = m_PSFontList.GetSize() - 1; - CPSFont* pPSFont = m_PSFontList[ps_fontnum]; - ps_glyphindex = pPSFont->m_nGlyphs; - pPSFont->m_Glyphs[ps_glyphindex].m_GlyphIndex = charpos.m_GlyphIndex; - pPSFont->m_Glyphs[ps_glyphindex].m_pFont = pFont; - pPSFont->m_Glyphs[ps_glyphindex].m_bGlyphAdjust = charpos.m_bGlyphAdjust; - if (charpos.m_bGlyphAdjust) { - pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[0] = - charpos.m_AdjustMatrix[0]; - pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[1] = - charpos.m_AdjustMatrix[1]; - pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[2] = - charpos.m_AdjustMatrix[2]; - pPSFont->m_Glyphs[ps_glyphindex].m_AdjustMatrix[3] = - charpos.m_AdjustMatrix[3]; - } - pPSFont->m_nGlyphs++; - CFX_Matrix matrix; - if (charpos.m_bGlyphAdjust) - matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], - charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); - matrix.Concat(1.0f, 0, 0, 1.0f, 0, 0); - const CFX_PathData* pPathData = pFaceCache->LoadGlyphPath( - pFont, charpos.m_GlyphIndex, charpos.m_FontCharWidth); - if (!pPathData) { - return; - } - CFX_PathData TransformedPath(*pPathData); - if (charpos.m_bGlyphAdjust) { - TransformedPath.Transform(&matrix); - } - CFX_ByteTextBuf buf; - buf << "/X" << ps_fontnum << " Ff/CharProcs get begin/" << ps_glyphindex - << "{n "; - for (int p = 0; p < TransformedPath.GetPointCount(); p++) { - FX_FLOAT x = TransformedPath.GetPointX(p), y = TransformedPath.GetPointY(p); - switch (TransformedPath.GetFlag(p) & FXPT_TYPE) { - case FXPT_MOVETO: { - buf << x << " " << y << " m\n"; - break; - } - case FXPT_LINETO: { - buf << x << " " << y << " l\n"; - break; - } - case FXPT_BEZIERTO: { - buf << x << " " << y << " " << TransformedPath.GetPointX(p + 1) << " " - << TransformedPath.GetPointY(p + 1) << " " - << TransformedPath.GetPointX(p + 2) << " " - << TransformedPath.GetPointY(p + 2) << " c\n"; - p += 2; - break; - } - } - } - buf << "f}bind def end\n"; - buf << "/X" << ps_fontnum << " Ff/Encoding get " << ps_glyphindex << "/" - << ps_glyphindex << " put\n"; - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); -} -FX_BOOL CFX_PSRenderer::DrawText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - StartRendering(); - int alpha = FXGETFLAG_COLORTYPE(alpha_flag) ? FXGETFLAG_ALPHA_FILL(alpha_flag) - : FXARGB_A(color); - if (alpha < 255) { - return FALSE; - } - if ((pObject2Device->a == 0 && pObject2Device->b == 0) || - (pObject2Device->c == 0 && pObject2Device->d == 0)) { - return TRUE; - } - SetColor(color, alpha_flag, pIccTransform); - CFX_ByteTextBuf buf; - buf << "q[" << pObject2Device->a << " " << pObject2Device->b << " " - << pObject2Device->c << " " << pObject2Device->d << " " - << pObject2Device->e << " " << pObject2Device->f << "]cm\n"; - if (!pCache) { - pCache = CFX_GEModule::Get()->GetFontCache(); - } - CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); - FX_FONTCACHE_DEFINE(pCache, pFont); - int last_fontnum = -1; - for (int i = 0; i < nChars; i++) { - int ps_fontnum, ps_glyphindex; - FindPSFontGlyph(pFaceCache, pFont, pCharPos[i], ps_fontnum, ps_glyphindex); - if (last_fontnum != ps_fontnum) { - buf << "/X" << ps_fontnum << " Ff " << font_size << " Fs Sf "; - last_fontnum = ps_fontnum; - } - buf << pCharPos[i].m_OriginX << " " << pCharPos[i].m_OriginY << " m"; - CFX_ByteString hex; - hex.Format("<%02X>", ps_glyphindex); - buf << hex << "Tj\n"; - } - buf << "Q\n"; - m_pOutput->OutputPS((const FX_CHAR*)buf.GetBuffer(), buf.GetSize()); - return TRUE; -} -void CFX_PSRenderer::WritePSBinary(const uint8_t* data, int len) { - uint8_t* dest_buf; - FX_DWORD dest_size; - CCodec_ModuleMgr* pEncoders = CFX_GEModule::Get()->GetCodecModule(); - if (pEncoders && - pEncoders->GetBasicModule()->A85Encode(data, len, dest_buf, dest_size)) { - m_pOutput->OutputPS((const FX_CHAR*)dest_buf, dest_size); - FX_Free(dest_buf); - } else { - m_pOutput->OutputPS((const FX_CHAR*)data, len); - } -} diff --git a/core/src/fxge/ge/fx_ge_text.cpp b/core/src/fxge/ge/fx_ge_text.cpp deleted file mode 100644 index 8fb03d86eb..0000000000 --- a/core/src/fxge/ge/fx_ge_text.cpp +++ /dev/null @@ -1,1872 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/ge/fx_text_int.h" - -#undef FX_GAMMA -#undef FX_GAMMA_INVERSE -#define FX_GAMMA(value) (value) -#define FX_GAMMA_INVERSE(value) (value) - -namespace { - -void ResetTransform(FT_Face face) { - FXFT_Matrix matrix; - matrix.xx = 0x10000L; - matrix.xy = 0; - matrix.yx = 0; - matrix.yy = 0x10000L; - FXFT_Set_Transform(face, &matrix, 0); -} - -// Sets the given transform on the font, and resets it to the identity when it -// goes out of scope. -class ScopedFontTransform { - public: - ScopedFontTransform(FT_Face face, FXFT_Matrix* matrix) : m_Face(face) { - FXFT_Set_Transform(m_Face, matrix, 0); - } - - ~ScopedFontTransform() { ResetTransform(m_Face); } - - private: - FT_Face m_Face; -}; - -} // namespace - -FX_RECT FXGE_GetGlyphsBBox(FXTEXT_GLYPHPOS* pGlyphAndPos, - int nChars, - int anti_alias, - FX_FLOAT retinaScaleX, - FX_FLOAT retinaScaleY) { - FX_RECT rect(0, 0, 0, 0); - FX_BOOL bStarted = FALSE; - for (int iChar = 0; iChar < nChars; iChar++) { - FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; - const CFX_GlyphBitmap* pGlyph = glyph.m_pGlyph; - if (!pGlyph) { - continue; - } - int char_left = glyph.m_OriginX + pGlyph->m_Left; - int char_width = (int)(pGlyph->m_Bitmap.GetWidth() / retinaScaleX); - if (anti_alias == FXFT_RENDER_MODE_LCD) { - char_width /= 3; - } - int char_right = char_left + char_width; - int char_top = glyph.m_OriginY - pGlyph->m_Top; - int char_bottom = - char_top + (int)(pGlyph->m_Bitmap.GetHeight() / retinaScaleY); - if (!bStarted) { - rect.left = char_left; - rect.right = char_right; - rect.top = char_top; - rect.bottom = char_bottom; - bStarted = TRUE; - } else { - if (rect.left > char_left) { - rect.left = char_left; - } - if (rect.right < char_right) { - rect.right = char_right; - } - if (rect.top > char_top) { - rect.top = char_top; - } - if (rect.bottom < char_bottom) { - rect.bottom = char_bottom; - } - } - } - return rect; -} -static void _AdjustGlyphSpace(FXTEXT_GLYPHPOS* pGlyphAndPos, int nChars) { - ASSERT(nChars > 1); - FX_BOOL bVertical = FALSE; - if (pGlyphAndPos[nChars - 1].m_OriginX == pGlyphAndPos[0].m_OriginX) { - bVertical = TRUE; - } else if (pGlyphAndPos[nChars - 1].m_OriginY != pGlyphAndPos[0].m_OriginY) { - return; - } - int i = nChars - 1; - int* next_origin = - bVertical ? &pGlyphAndPos[i].m_OriginY : &pGlyphAndPos[i].m_OriginX; - FX_FLOAT next_origin_f = - bVertical ? pGlyphAndPos[i].m_fOriginY : pGlyphAndPos[i].m_fOriginX; - for (i--; i > 0; i--) { - int* this_origin = - bVertical ? &pGlyphAndPos[i].m_OriginY : &pGlyphAndPos[i].m_OriginX; - FX_FLOAT this_origin_f = - bVertical ? pGlyphAndPos[i].m_fOriginY : pGlyphAndPos[i].m_fOriginX; - int space = (*next_origin) - (*this_origin); - FX_FLOAT space_f = next_origin_f - this_origin_f; - FX_FLOAT error = - (FX_FLOAT)(FXSYS_fabs(space_f) - FXSYS_fabs((FX_FLOAT)(space))); - if (error > 0.5f) { - *this_origin += space > 0 ? -1 : 1; - } - next_origin = this_origin; - next_origin_f = this_origin_f; - } -} -static const uint8_t g_TextGammaAdjust[256] = { - 0, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13, 15, 16, 17, 18, - 19, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, - 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 250, 251, 252, 253, 254, - 255, -}; -#define ADJUST_ALPHA(background, foreground, src_alpha, text_flags, a) \ - src_alpha = g_TextGammaAdjust[(uint8_t)src_alpha]; -void _Color2Argb(FX_ARGB& argb, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - if (!pIccTransform && !FXGETFLAG_COLORTYPE(alpha_flag)) { - argb = color; - return; - } - if (!CFX_GEModule::Get()->GetCodecModule() || - !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - pIccTransform = NULL; - } - uint8_t bgra[4]; - if (pIccTransform) { - ICodec_IccModule* pIccModule = - CFX_GEModule::Get()->GetCodecModule()->GetIccModule(); - color = FXGETFLAG_COLORTYPE(alpha_flag) ? FXCMYK_TODIB(color) - : FXARGB_TODIB(color); - pIccModule->TranslateScanline(pIccTransform, bgra, (const uint8_t*)&color, - 1); - bgra[3] = FXGETFLAG_COLORTYPE(alpha_flag) - ? (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) - : FXGETFLAG_ALPHA_STROKE(alpha_flag) - : FXARGB_A(color); - argb = FXARGB_MAKE(bgra[3], bgra[2], bgra[1], bgra[0]); - return; - } - AdobeCMYK_to_sRGB1(FXSYS_GetCValue(color), FXSYS_GetMValue(color), - FXSYS_GetYValue(color), FXSYS_GetKValue(color), bgra[2], - bgra[1], bgra[0]); - bgra[3] = (alpha_flag >> 24) ? FXGETFLAG_ALPHA_FILL(alpha_flag) - : FXGETFLAG_ALPHA_STROKE(alpha_flag); - argb = FXARGB_MAKE(bgra[3], bgra[2], bgra[1], bgra[0]); -} -FX_BOOL CFX_RenderDevice::DrawNormalText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - FX_FLOAT font_size, - const CFX_Matrix* pText2Device, - FX_DWORD fill_color, - FX_DWORD text_flags, - int alpha_flag, - void* pIccTransform) { - int nativetext_flags = text_flags; - if (m_DeviceClass != FXDC_DISPLAY) { - if (!(text_flags & FXTEXT_PRINTGRAPHICTEXT)) { - bool should_call_draw_device_text = true; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if ((text_flags & FXFONT_CIDFONT) || - (pFont->GetPsName().Find(CFX_WideString::FromLocal("+ZJHL")) != -1) || - (pFont->GetPsName() == CFX_WideString::FromLocal("CNAAJI+cmex10"))) { - should_call_draw_device_text = false; - } -#endif - if (should_call_draw_device_text && - m_pDeviceDriver->DrawDeviceText(nChars, pCharPos, pFont, pCache, - pText2Device, font_size, fill_color, - alpha_flag, pIccTransform)) { - return TRUE; - } - } - int alpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? FXGETFLAG_ALPHA_FILL(alpha_flag) - : FXARGB_A(fill_color); - if (alpha < 255) { - return FALSE; - } - } else if (!(text_flags & FXTEXT_NO_NATIVETEXT)) { - bool should_call_draw_device_text = true; -#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ - if ((text_flags & FXFONT_CIDFONT) || - (pFont->GetPsName() == CFX_WideString::FromLocal("CNAAJI+cmex10"))) { - should_call_draw_device_text = false; - } -#endif - if (should_call_draw_device_text && - m_pDeviceDriver->DrawDeviceText(nChars, pCharPos, pFont, pCache, - pText2Device, font_size, fill_color, - alpha_flag, pIccTransform)) { - return TRUE; - } - } - CFX_Matrix char2device, deviceCtm, text2Device; - if (pText2Device) { - char2device = *pText2Device; - text2Device = *pText2Device; - } - char2device.Scale(font_size, -font_size); - if (FXSYS_fabs(char2device.a) + FXSYS_fabs(char2device.b) > 50 * 1.0f || - ((m_DeviceClass == FXDC_PRINTER && !m_pDeviceDriver->IsPSPrintDriver()) && - !(text_flags & FXTEXT_PRINTIMAGETEXT))) { - if (pFont->GetFace() || - (pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) { - int nPathFlags = - (text_flags & FXTEXT_NOSMOOTH) == 0 ? 0 : FXFILL_NOPATHSMOOTH; - return DrawTextPath(nChars, pCharPos, pFont, pCache, font_size, - pText2Device, NULL, NULL, fill_color, 0, NULL, - nPathFlags, alpha_flag, pIccTransform); - } - } - int anti_alias = FXFT_RENDER_MODE_MONO; - FX_BOOL bNormal = FALSE; - if ((text_flags & FXTEXT_NOSMOOTH) == 0) { - if (m_DeviceClass == FXDC_DISPLAY && m_bpp > 1) { - FX_BOOL bClearType; - if (!pFont->GetFace() && - !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_CLEARTYPE)) { - bClearType = FALSE; - } else { - bClearType = text_flags & FXTEXT_CLEARTYPE; - } - if ((m_RenderCaps & (FXRC_ALPHA_OUTPUT | FXRC_CMYK_OUTPUT))) { - anti_alias = FXFT_RENDER_MODE_LCD; - bNormal = TRUE; - } else if (m_bpp < 16) { - anti_alias = FXFT_RENDER_MODE_NORMAL; - } else { - if (bClearType == FALSE) { - anti_alias = FXFT_RENDER_MODE_LCD; - bNormal = TRUE; - } else { - anti_alias = FXFT_RENDER_MODE_LCD; - } - } - } - } - if (!pCache) { - pCache = CFX_GEModule::Get()->GetFontCache(); - } - CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); - FX_FONTCACHE_DEFINE(pCache, pFont); - FXTEXT_GLYPHPOS* pGlyphAndPos = FX_Alloc(FXTEXT_GLYPHPOS, nChars); - int iChar; - deviceCtm = char2device; - CFX_Matrix matrixCTM = GetCTM(); - FX_FLOAT scale_x = FXSYS_fabs(matrixCTM.a); - FX_FLOAT scale_y = FXSYS_fabs(matrixCTM.d); - deviceCtm.Concat(scale_x, 0, 0, scale_y, 0, 0); - text2Device.Concat(scale_x, 0, 0, scale_y, 0, 0); - for (iChar = 0; iChar < nChars; iChar++) { - FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; - const FXTEXT_CHARPOS& charpos = pCharPos[iChar]; - glyph.m_fOriginX = charpos.m_OriginX; - glyph.m_fOriginY = charpos.m_OriginY; - text2Device.Transform(glyph.m_fOriginX, glyph.m_fOriginY); - if (anti_alias < FXFT_RENDER_MODE_LCD) { - glyph.m_OriginX = FXSYS_round(glyph.m_fOriginX); - } else { - glyph.m_OriginX = (int)FXSYS_floor(glyph.m_fOriginX); - } - glyph.m_OriginY = FXSYS_round(glyph.m_fOriginY); - if (charpos.m_bGlyphAdjust) { - CFX_Matrix new_matrix( - charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], - charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); - new_matrix.Concat(deviceCtm); - glyph.m_pGlyph = pFaceCache->LoadGlyphBitmap( - pFont, charpos.m_GlyphIndex, charpos.m_bFontStyle, &new_matrix, - charpos.m_FontCharWidth, anti_alias, nativetext_flags); - } else { - glyph.m_pGlyph = pFaceCache->LoadGlyphBitmap( - pFont, charpos.m_GlyphIndex, charpos.m_bFontStyle, &deviceCtm, - charpos.m_FontCharWidth, anti_alias, nativetext_flags); - } - } - if (anti_alias < FXFT_RENDER_MODE_LCD && nChars > 1) { - _AdjustGlyphSpace(pGlyphAndPos, nChars); - } - FX_RECT bmp_rect1 = FXGE_GetGlyphsBBox(pGlyphAndPos, nChars, anti_alias); - if (scale_x > 1 && scale_y > 1) { - bmp_rect1.left--; - bmp_rect1.top--; - bmp_rect1.right++; - bmp_rect1.bottom++; - } - FX_RECT bmp_rect(FXSYS_round((FX_FLOAT)(bmp_rect1.left) / scale_x), - FXSYS_round((FX_FLOAT)(bmp_rect1.top) / scale_y), - FXSYS_round((FX_FLOAT)bmp_rect1.right / scale_x), - FXSYS_round((FX_FLOAT)bmp_rect1.bottom / scale_y)); - bmp_rect.Intersect(m_ClipBox); - if (bmp_rect.IsEmpty()) { - FX_Free(pGlyphAndPos); - return TRUE; - } - int pixel_width = FXSYS_round(bmp_rect.Width() * scale_x); - int pixel_height = FXSYS_round(bmp_rect.Height() * scale_y); - int pixel_left = FXSYS_round(bmp_rect.left * scale_x); - int pixel_top = FXSYS_round(bmp_rect.top * scale_y); - if (anti_alias == FXFT_RENDER_MODE_MONO) { - CFX_DIBitmap bitmap; - if (!bitmap.Create(pixel_width, pixel_height, FXDIB_1bppMask)) { - FX_Free(pGlyphAndPos); - return FALSE; - } - bitmap.Clear(0); - for (iChar = 0; iChar < nChars; iChar++) { - FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; - if (!glyph.m_pGlyph) { - continue; - } - const CFX_DIBitmap* pGlyph = &glyph.m_pGlyph->m_Bitmap; - bitmap.TransferBitmap( - glyph.m_OriginX + glyph.m_pGlyph->m_Left - pixel_left, - glyph.m_OriginY - glyph.m_pGlyph->m_Top - pixel_top, - pGlyph->GetWidth(), pGlyph->GetHeight(), pGlyph, 0, 0); - } - FX_Free(pGlyphAndPos); - return SetBitMask(&bitmap, bmp_rect.left, bmp_rect.top, fill_color); - } - CFX_DIBitmap bitmap; - if (m_bpp == 8) { - if (!bitmap.Create(pixel_width, pixel_height, FXDIB_8bppMask)) { - FX_Free(pGlyphAndPos); - return FALSE; - } - } else { - if (!CreateCompatibleBitmap(&bitmap, pixel_width, pixel_height)) { - FX_Free(pGlyphAndPos); - return FALSE; - } - } - if (!bitmap.HasAlpha() && !bitmap.IsAlphaMask()) { - bitmap.Clear(0xFFFFFFFF); - if (!GetDIBits(&bitmap, bmp_rect.left, bmp_rect.top)) { - FX_Free(pGlyphAndPos); - return FALSE; - } - } else { - bitmap.Clear(0); - if (bitmap.m_pAlphaMask) { - bitmap.m_pAlphaMask->Clear(0); - } - } - int dest_width = pixel_width; - uint8_t* dest_buf = bitmap.GetBuffer(); - int dest_pitch = bitmap.GetPitch(); - int Bpp = bitmap.GetBPP() / 8; - int a, r, g, b; - if (anti_alias == FXFT_RENDER_MODE_LCD) { - _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransform); - ArgbDecode(fill_color, a, r, g, b); - r = FX_GAMMA(r); - g = FX_GAMMA(g); - b = FX_GAMMA(b); - } - for (iChar = 0; iChar < nChars; iChar++) { - FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar]; - if (!glyph.m_pGlyph) { - continue; - } - const CFX_DIBitmap* pGlyph = &glyph.m_pGlyph->m_Bitmap; - int left = glyph.m_OriginX + glyph.m_pGlyph->m_Left - pixel_left; - int top = glyph.m_OriginY - glyph.m_pGlyph->m_Top - pixel_top; - int ncols = pGlyph->GetWidth(); - int nrows = pGlyph->GetHeight(); - if (anti_alias == FXFT_RENDER_MODE_NORMAL) { - if (!bitmap.CompositeMask(left, top, ncols, nrows, pGlyph, fill_color, 0, - 0, FXDIB_BLEND_NORMAL, NULL, FALSE, alpha_flag, - pIccTransform)) { - FX_Free(pGlyphAndPos); - return FALSE; - } - continue; - } - FX_BOOL bBGRStripe = text_flags & FXTEXT_BGR_STRIPE; - ncols /= 3; - int x_subpixel = (int)(glyph.m_fOriginX * 3) % 3; - uint8_t* src_buf = pGlyph->GetBuffer(); - int src_pitch = pGlyph->GetPitch(); - int start_col = left; - if (start_col < 0) { - start_col = 0; - } - int end_col = left + ncols; - if (end_col > dest_width) { - end_col = dest_width; - } - if (start_col >= end_col) { - continue; - } - if (bitmap.GetFormat() == FXDIB_Argb) { - for (int row = 0; row < nrows; row++) { - int dest_row = row + top; - if (dest_row < 0 || dest_row >= bitmap.GetHeight()) { - continue; - } - uint8_t* src_scan = src_buf + row * src_pitch + (start_col - left) * 3; - uint8_t* dest_scan = - dest_buf + dest_row * dest_pitch + (start_col << 2); - if (bBGRStripe) { - if (x_subpixel == 0) { - for (int col = start_col; col < end_col; col++) { - int src_alpha = src_scan[2]; - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[1]; - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[0]; - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - } else if (x_subpixel == 1) { - int src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - if (start_col > left) { - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - } - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - for (int col = start_col + 1; col < end_col - 1; col++) { - int src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - } else { - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - if (start_col > left) { - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - } - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - for (int col = start_col + 1; col < end_col - 1; col++) { - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - } - } else { - if (x_subpixel == 0) { - for (int col = start_col; col < end_col; col++) { - if (bNormal) { - int src_alpha1 = (src_scan[0] + src_scan[1] + src_scan[2]) / 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); - dest_scan += 4; - src_scan += 3; - continue; - } - if (src_alpha1 == 0) { - dest_scan += 4; - src_scan += 3; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha1 * 255 / dest_alpha; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, alpha_ratio)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, alpha_ratio)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, alpha_ratio)); - dest_scan += 4; - src_scan += 3; - continue; - } - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[2]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - } else if (x_subpixel == 1) { - if (bNormal) { - int src_alpha1 = - start_col > left - ? ((src_scan[-1] + src_scan[0] + src_scan[1]) / 3) - : ((src_scan[0] + src_scan[1]) / 3); - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - if (src_alpha1 == 0) { - dest_scan += 4; - src_scan += 3; - } else { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); - } else { - uint8_t dest_alpha = - back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha1 * 255 / dest_alpha; - dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[2]), r, alpha_ratio)); - dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[1]), g, alpha_ratio)); - dest_scan[0] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[0]), b, alpha_ratio)); - } - dest_scan += 4; - src_scan += 3; - } - } else { - if (start_col > left) { - int src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - } - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - for (int col = start_col + 1; col < end_col; col++) { - if (bNormal) { - int src_alpha1 = (src_scan[-1] + src_scan[0] + src_scan[1]) / 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); - dest_scan += 4; - src_scan += 3; - continue; - } - if (src_alpha1 == 0) { - dest_scan += 4; - src_scan += 3; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha1 * 255 / dest_alpha; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, alpha_ratio)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, alpha_ratio)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, alpha_ratio)); - dest_scan += 4; - src_scan += 3; - continue; - } - int src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - } else { - if (bNormal) { - int src_alpha1 = - start_col > left - ? ((src_scan[-2] + src_scan[-1] + src_scan[0]) / 3) - : ((src_scan[0]) / 3); - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - if (src_alpha1 == 0) { - dest_scan += 4; - src_scan += 3; - } else { - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); - } else { - uint8_t dest_alpha = - back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha1 * 255 / dest_alpha; - dest_scan[2] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[2]), r, alpha_ratio)); - dest_scan[1] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[1]), g, alpha_ratio)); - dest_scan[0] = FX_GAMMA_INVERSE(FXDIB_ALPHA_MERGE( - FX_GAMMA(dest_scan[0]), b, alpha_ratio)); - } - dest_scan += 4; - src_scan += 3; - } - } else { - if (start_col > left) { - int src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - } - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - for (int col = start_col + 1; col < end_col; col++) { - if (bNormal) { - int src_alpha1 = - (src_scan[-2] + src_scan[-1] + src_scan[0]) / 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - uint8_t back_alpha = dest_scan[3]; - if (back_alpha == 0) { - FXARGB_SETDIB(dest_scan, FXARGB_MAKE(src_alpha1, r, g, b)); - dest_scan += 4; - src_scan += 3; - continue; - } - if (src_alpha1 == 0) { - dest_scan += 4; - src_scan += 3; - continue; - } - uint8_t dest_alpha = - back_alpha + src_alpha1 - back_alpha * src_alpha1 / 255; - dest_scan[3] = dest_alpha; - int alpha_ratio = src_alpha1 * 255 / dest_alpha; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, alpha_ratio)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, alpha_ratio)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, alpha_ratio)); - dest_scan += 4; - src_scan += 3; - continue; - } - int src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan[3] = 255; - dest_scan += 4; - src_scan += 3; - } - } - } - } - } else { - for (int row = 0; row < nrows; row++) { - int dest_row = row + top; - if (dest_row < 0 || dest_row >= bitmap.GetHeight()) { - continue; - } - uint8_t* src_scan = src_buf + row * src_pitch + (start_col - left) * 3; - uint8_t* dest_scan = dest_buf + dest_row * dest_pitch + start_col * Bpp; - if (bBGRStripe) { - if (x_subpixel == 0) { - for (int col = start_col; col < end_col; col++) { - int src_alpha = src_scan[2]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - } else if (x_subpixel == 1) { - int src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - if (start_col > left) { - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - } - dest_scan += Bpp; - src_scan += 3; - for (int col = start_col + 1; col < end_col - 1; col++) { - int src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - } else { - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - if (start_col > left) { - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - } - dest_scan += Bpp; - src_scan += 3; - for (int col = start_col + 1; col < end_col - 1; col++) { - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - } - } else { - if (x_subpixel == 0) { - for (int col = start_col; col < end_col; col++) { - if (bNormal) { - int src_alpha1 = (src_scan[0] + src_scan[1] + src_scan[2]) / 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - if (src_alpha1 == 0) { - dest_scan += Bpp; - src_scan += 3; - continue; - } - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); - dest_scan += Bpp; - src_scan += 3; - continue; - } - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[2]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - } else if (x_subpixel == 1) { - if (bNormal) { - int src_alpha1 = - start_col > left - ? (src_scan[0] + src_scan[1] + src_scan[-1]) / 3 - : (src_scan[0] + src_scan[1]) / 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); - dest_scan += Bpp; - src_scan += 3; - } else { - if (start_col > left) { - int src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - } - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - for (int col = start_col + 1; col < end_col; col++) { - if (bNormal) { - int src_alpha1 = (src_scan[0] + src_scan[1] + src_scan[-1]) / 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - if (src_alpha1 == 0) { - dest_scan += Bpp; - src_scan += 3; - continue; - } - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); - dest_scan += Bpp; - src_scan += 3; - continue; - } - int src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[1]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - } else { - if (bNormal) { - int src_alpha1 = - start_col > left - ? (src_scan[0] + src_scan[-2] + src_scan[-1]) / 3 - : src_scan[0] / 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); - dest_scan += Bpp; - src_scan += 3; - } else { - if (start_col > left) { - int src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - } - int src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - for (int col = start_col + 1; col < end_col; col++) { - if (bNormal) { - int src_alpha1 = ((int)(src_scan[0]) + (int)(src_scan[-2]) + - (int)(src_scan[-1])) / - 3; - ADJUST_ALPHA(dest_scan[2], r, src_alpha1, nativetext_flags, a); - src_alpha1 = src_alpha1 * a / 255; - if (src_alpha1 == 0) { - dest_scan += Bpp; - src_scan += 3; - continue; - } - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha1)); - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha1)); - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha1)); - dest_scan += Bpp; - src_scan += 3; - continue; - } - int src_alpha = src_scan[-2]; - ADJUST_ALPHA(dest_scan[2], r, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[2] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[2]), r, src_alpha)); - src_alpha = src_scan[-1]; - ADJUST_ALPHA(dest_scan[1], g, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[1] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[1]), g, src_alpha)); - src_alpha = src_scan[0]; - ADJUST_ALPHA(dest_scan[0], b, src_alpha, nativetext_flags, a); - src_alpha = src_alpha * a / 255; - dest_scan[0] = FX_GAMMA_INVERSE( - FXDIB_ALPHA_MERGE(FX_GAMMA(dest_scan[0]), b, src_alpha)); - dest_scan += Bpp; - src_scan += 3; - } - } - } - } - } - } - if (bitmap.IsAlphaMask()) { - SetBitMask(&bitmap, bmp_rect.left, bmp_rect.top, fill_color, alpha_flag, - pIccTransform); - } else { - SetDIBits(&bitmap, bmp_rect.left, bmp_rect.top); - } - FX_Free(pGlyphAndPos); - return TRUE; -} -FX_BOOL CFX_RenderDevice::DrawTextPath(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - FX_FLOAT font_size, - const CFX_Matrix* pText2User, - const CFX_Matrix* pUser2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_ARGB stroke_color, - CFX_PathData* pClippingPath, - int nFlag, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (!pCache) { - pCache = CFX_GEModule::Get()->GetFontCache(); - } - CFX_FaceCache* pFaceCache = pCache->GetCachedFace(pFont); - FX_FONTCACHE_DEFINE(pCache, pFont); - for (int iChar = 0; iChar < nChars; iChar++) { - const FXTEXT_CHARPOS& charpos = pCharPos[iChar]; - CFX_Matrix matrix; - if (charpos.m_bGlyphAdjust) - matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1], - charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0); - matrix.Concat(font_size, 0, 0, font_size, charpos.m_OriginX, - charpos.m_OriginY); - const CFX_PathData* pPath = pFaceCache->LoadGlyphPath( - pFont, charpos.m_GlyphIndex, charpos.m_FontCharWidth); - if (!pPath) { - continue; - } - matrix.Concat(*pText2User); - CFX_PathData TransformedPath(*pPath); - TransformedPath.Transform(&matrix); - FX_BOOL bHasAlpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? (FXGETFLAG_ALPHA_FILL(alpha_flag) || - FXGETFLAG_ALPHA_STROKE(alpha_flag)) - : (fill_color || stroke_color); - if (bHasAlpha) { - int fill_mode = nFlag; - if (FXGETFLAG_COLORTYPE(alpha_flag)) { - if (FXGETFLAG_ALPHA_FILL(alpha_flag)) { - fill_mode |= FXFILL_WINDING; - } - } else { - if (fill_color) { - fill_mode |= FXFILL_WINDING; - } - } - fill_mode |= FX_FILL_TEXT_MODE; - if (!DrawPath(&TransformedPath, pUser2Device, pGraphState, fill_color, - stroke_color, fill_mode, alpha_flag, pIccTransform, - blend_type)) { - return FALSE; - } - } - if (pClippingPath) { - pClippingPath->Append(&TransformedPath, pUser2Device); - } - } - return TRUE; -} - -CFX_FontCache::CFX_FontCache() {} - -CFX_FontCache::~CFX_FontCache() { - FreeCache(TRUE); -} - -CFX_FaceCache* CFX_FontCache::GetCachedFace(CFX_Font* pFont) { - FXFT_Face internal_face = pFont->GetFace(); - const bool bExternal = !internal_face; - FXFT_Face face = - bExternal ? (FXFT_Face)pFont->GetSubstFont()->m_ExtHandle : internal_face; - CFX_FTCacheMap& map = bExternal ? m_ExtFaceMap : m_FTFaceMap; - auto it = map.find(face); - if (it != map.end()) { - CFX_CountedFaceCache* counted_face_cache = it->second; - counted_face_cache->m_nCount++; - return counted_face_cache->m_Obj; - } - - CFX_FaceCache* face_cache = new CFX_FaceCache(bExternal ? nullptr : face); - CFX_CountedFaceCache* counted_face_cache = new CFX_CountedFaceCache; - counted_face_cache->m_nCount = 2; - counted_face_cache->m_Obj = face_cache; - map[face] = counted_face_cache; - return face_cache; -} - -void CFX_FontCache::ReleaseCachedFace(CFX_Font* pFont) { - FXFT_Face internal_face = pFont->GetFace(); - const bool bExternal = !internal_face; - FXFT_Face face = - bExternal ? (FXFT_Face)pFont->GetSubstFont()->m_ExtHandle : internal_face; - CFX_FTCacheMap& map = bExternal ? m_ExtFaceMap : m_FTFaceMap; - - auto it = map.find(face); - if (it == map.end()) - return; - - CFX_CountedFaceCache* counted_face_cache = it->second; - if (counted_face_cache->m_nCount > 1) { - counted_face_cache->m_nCount--; - } -} - -void CFX_FontCache::FreeCache(FX_BOOL bRelease) { - for (auto it = m_FTFaceMap.begin(); it != m_FTFaceMap.end();) { - auto curr_it = it++; - CFX_CountedFaceCache* cache = curr_it->second; - if (bRelease || cache->m_nCount < 2) { - delete cache->m_Obj; - delete cache; - m_FTFaceMap.erase(curr_it); - } - } - - for (auto it = m_ExtFaceMap.begin(); it != m_ExtFaceMap.end();) { - auto curr_it = it++; - CFX_CountedFaceCache* cache = curr_it->second; - if (bRelease || cache->m_nCount < 2) { - delete cache->m_Obj; - delete cache; - m_ExtFaceMap.erase(curr_it); - } - } -} - -CFX_FaceCache::CFX_FaceCache(FXFT_Face face) : m_Face(face) {} - -CFX_FaceCache::~CFX_FaceCache() { - for (const auto& pair : m_SizeMap) { - delete pair.second; - } - m_SizeMap.clear(); - for (const auto& pair : m_PathMap) { - delete pair.second; - } - m_PathMap.clear(); -} -#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ -void CFX_FaceCache::InitPlatform() {} -#endif -CFX_GlyphBitmap* CFX_FaceCache::LookUpGlyphBitmap( - CFX_Font* pFont, - const CFX_Matrix* pMatrix, - CFX_ByteStringC& FaceGlyphsKey, - FX_DWORD glyph_index, - FX_BOOL bFontStyle, - int dest_width, - int anti_alias) { - CFX_SizeGlyphCache* pSizeCache; - auto it = m_SizeMap.find(FaceGlyphsKey); - if (it == m_SizeMap.end()) { - pSizeCache = new CFX_SizeGlyphCache; - m_SizeMap[FaceGlyphsKey] = pSizeCache; - } else { - pSizeCache = it->second; - } - auto it2 = pSizeCache->m_GlyphMap.find(glyph_index); - if (it2 != pSizeCache->m_GlyphMap.end()) - return it2->second; - - CFX_GlyphBitmap* pGlyphBitmap = RenderGlyph(pFont, glyph_index, bFontStyle, - pMatrix, dest_width, anti_alias); - if (!pGlyphBitmap) - return nullptr; - - pSizeCache->m_GlyphMap[glyph_index] = pGlyphBitmap; - return pGlyphBitmap; -} -const CFX_GlyphBitmap* CFX_FaceCache::LoadGlyphBitmap(CFX_Font* pFont, - FX_DWORD glyph_index, - FX_BOOL bFontStyle, - const CFX_Matrix* pMatrix, - int dest_width, - int anti_alias, - int& text_flags) { - if (glyph_index == (FX_DWORD)-1) { - return NULL; - } - _CFX_UniqueKeyGen keygen; -#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ - if (pFont->GetSubstFont()) - keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, - pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical()); - else - keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias); -#else - if (text_flags & FXTEXT_NO_NATIVETEXT) { - if (pFont->GetSubstFont()) - keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, - pFont->GetSubstFont()->m_ItalicAngle, - pFont->IsVertical()); - else - keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias); - } else { - if (pFont->GetSubstFont()) - keygen.Generate(10, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, - pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical(), - 3); - else - keygen.Generate(7, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias, 3); - } -#endif - CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen); -#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ - return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, - bFontStyle, dest_width, anti_alias); -#else - if (text_flags & FXTEXT_NO_NATIVETEXT) { - return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey, glyph_index, - bFontStyle, dest_width, anti_alias); - } - CFX_GlyphBitmap* pGlyphBitmap; - auto it = m_SizeMap.find(FaceGlyphsKey); - if (it != m_SizeMap.end()) { - CFX_SizeGlyphCache* pSizeCache = it->second; - auto it2 = pSizeCache->m_GlyphMap.find(glyph_index); - if (it2 != pSizeCache->m_GlyphMap.end()) - return it2->second; - - pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, - dest_width, anti_alias); - if (pGlyphBitmap) { - pSizeCache->m_GlyphMap[glyph_index] = pGlyphBitmap; - return pGlyphBitmap; - } - } else { - pGlyphBitmap = RenderGlyph_Nativetext(pFont, glyph_index, pMatrix, - dest_width, anti_alias); - if (pGlyphBitmap) { - CFX_SizeGlyphCache* pSizeCache = new CFX_SizeGlyphCache; - m_SizeMap[FaceGlyphsKey] = pSizeCache; - pSizeCache->m_GlyphMap[glyph_index] = pGlyphBitmap; - return pGlyphBitmap; - } - } - if (pFont->GetSubstFont()) - keygen.Generate(9, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias, pFont->GetSubstFont()->m_Weight, - pFont->GetSubstFont()->m_ItalicAngle, pFont->IsVertical()); - else - keygen.Generate(6, (int)(pMatrix->a * 10000), (int)(pMatrix->b * 10000), - (int)(pMatrix->c * 10000), (int)(pMatrix->d * 10000), - dest_width, anti_alias); - CFX_ByteStringC FaceGlyphsKey2(keygen.m_Key, keygen.m_KeyLen); - text_flags |= FXTEXT_NO_NATIVETEXT; - return LookUpGlyphBitmap(pFont, pMatrix, FaceGlyphsKey2, glyph_index, - bFontStyle, dest_width, anti_alias); -#endif -} -CFX_SizeGlyphCache::~CFX_SizeGlyphCache() { - for (const auto& pair : m_GlyphMap) { - delete pair.second; - } - m_GlyphMap.clear(); -} -#define CONTRAST_RAMP_STEP 1 -void CFX_Font::AdjustMMParams(int glyph_index, int dest_width, int weight) { - FXFT_MM_Var pMasters = NULL; - FXFT_Get_MM_Var(m_Face, &pMasters); - if (!pMasters) { - return; - } - long coords[2]; - if (weight == 0) { - coords[0] = FXFT_Get_MM_Axis_Def(FXFT_Get_MM_Axis(pMasters, 0)) / 65536; - } else { - coords[0] = weight; - } - if (dest_width == 0) { - coords[1] = FXFT_Get_MM_Axis_Def(FXFT_Get_MM_Axis(pMasters, 1)) / 65536; - } else { - int min_param = FXFT_Get_MM_Axis_Min(FXFT_Get_MM_Axis(pMasters, 1)) / 65536; - int max_param = FXFT_Get_MM_Axis_Max(FXFT_Get_MM_Axis(pMasters, 1)) / 65536; - coords[1] = min_param; - (void)FXFT_Set_MM_Design_Coordinates(m_Face, 2, coords); - (void)FXFT_Load_Glyph( - m_Face, glyph_index, - FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); - int min_width = FXFT_Get_Glyph_HoriAdvance(m_Face) * 1000 / - FXFT_Get_Face_UnitsPerEM(m_Face); - coords[1] = max_param; - (void)FXFT_Set_MM_Design_Coordinates(m_Face, 2, coords); - (void)FXFT_Load_Glyph( - m_Face, glyph_index, - FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); - int max_width = FXFT_Get_Glyph_HoriAdvance(m_Face) * 1000 / - FXFT_Get_Face_UnitsPerEM(m_Face); - if (max_width == min_width) { - FXFT_Free(m_Face, pMasters); - return; - } - int param = min_param + - (max_param - min_param) * (dest_width - min_width) / - (max_width - min_width); - coords[1] = param; - } - FXFT_Free(m_Face, pMasters); - FXFT_Set_MM_Design_Coordinates(m_Face, 2, coords); -} -static const size_t ANGLESKEW_ARRAY_SIZE = 30; -static const char g_AngleSkew[ANGLESKEW_ARRAY_SIZE] = { - 0, 2, 3, 5, 7, 9, 11, 12, 14, 16, 18, 19, 21, 23, 25, - 27, 29, 31, 32, 34, 36, 38, 40, 42, 45, 47, 49, 51, 53, 55, -}; -static const size_t WEIGHTPOW_ARRAY_SIZE = 100; -static const uint8_t g_WeightPow[WEIGHTPOW_ARRAY_SIZE] = { - 0, 3, 6, 7, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 35, 36, 36, 37, - 37, 37, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, 41, 41, 42, 42, 42, - 42, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, - 47, 47, 47, 48, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 50, - 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, -}; -static const uint8_t g_WeightPow_11[WEIGHTPOW_ARRAY_SIZE] = { - 0, 4, 7, 8, 9, 10, 12, 13, 15, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 39, 40, 40, 41, - 41, 41, 42, 42, 42, 43, 43, 43, 44, 44, 44, 45, 45, 45, 46, 46, 46, - 46, 43, 47, 47, 48, 48, 48, 48, 45, 50, 50, 50, 46, 51, 51, 51, 52, - 52, 52, 52, 53, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 55, - 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, -}; -static const uint8_t g_WeightPow_SHIFTJIS[WEIGHTPOW_ARRAY_SIZE] = { - 0, 0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 13, 14, 16, 17, 19, 21, - 22, 24, 26, 28, 30, 32, 33, 35, 37, 39, 41, 43, 45, 48, 48, 48, 48, - 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, - 53, 53, 53, 53, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 56, - 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, - 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, -}; -static void _GammaAdjust(uint8_t* pData, - int nWid, - int nHei, - int src_pitch, - const uint8_t* gammaTable) { - int count = nHei * src_pitch; - for (int i = 0; i < count; i++) { - pData[i] = gammaTable[pData[i]]; - } -} -static void _ContrastAdjust(uint8_t* pDataIn, - uint8_t* pDataOut, - int nWid, - int nHei, - int nSrcRowBytes, - int nDstRowBytes) { - int col, row, temp; - int max = 0, min = 255; - FX_FLOAT rate; - for (row = 0; row < nHei; row++) { - uint8_t* pRow = pDataIn + row * nSrcRowBytes; - for (col = 0; col < nWid; col++) { - temp = *pRow++; - if (temp > max) { - max = temp; - } - if (temp < min) { - min = temp; - } - } - } - temp = max - min; - if (0 == temp || 255 == temp) { - int rowbytes = FXSYS_abs(nSrcRowBytes) > nDstRowBytes - ? nDstRowBytes - : FXSYS_abs(nSrcRowBytes); - for (row = 0; row < nHei; row++) { - FXSYS_memcpy(pDataOut + row * nDstRowBytes, pDataIn + row * nSrcRowBytes, - rowbytes); - } - return; - } - rate = 255.f / temp; - for (row = 0; row < nHei; row++) { - uint8_t* pSrcRow = pDataIn + row * nSrcRowBytes; - uint8_t* pDstRow = pDataOut + row * nDstRowBytes; - for (col = 0; col < nWid; col++) { - temp = (int)((*(pSrcRow++) - min) * rate + 0.5); - if (temp > 255) { - temp = 255; - } else if (temp < 0) { - temp = 0; - } - *pDstRow++ = (uint8_t)temp; - } - } -} -CFX_GlyphBitmap* CFX_FaceCache::RenderGlyph(CFX_Font* pFont, - FX_DWORD glyph_index, - FX_BOOL bFontStyle, - const CFX_Matrix* pMatrix, - int dest_width, - int anti_alias) { - if (!m_Face) { - return NULL; - } - FXFT_Matrix ft_matrix; - ft_matrix.xx = (signed long)(pMatrix->GetA() / 64 * 65536); - ft_matrix.xy = (signed long)(pMatrix->GetC() / 64 * 65536); - ft_matrix.yx = (signed long)(pMatrix->GetB() / 64 * 65536); - ft_matrix.yy = (signed long)(pMatrix->GetD() / 64 * 65536); - FX_BOOL bUseCJKSubFont = FALSE; - const CFX_SubstFont* pSubstFont = pFont->GetSubstFont(); - if (pSubstFont) { - bUseCJKSubFont = pSubstFont->m_bSubstOfCJK && bFontStyle; - int skew = 0; - if (bUseCJKSubFont) { - skew = pSubstFont->m_bItlicCJK ? -15 : 0; - } else { - skew = pSubstFont->m_ItalicAngle; - } - if (skew) { - skew = skew <= -ANGLESKEW_ARRAY_SIZE ? -58 : -g_AngleSkew[-skew]; - if (pFont->IsVertical()) { - ft_matrix.yx += ft_matrix.yy * skew / 100; - } else { - ft_matrix.xy += -ft_matrix.xx * skew / 100; - } - } - if (pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) { - pFont->AdjustMMParams(glyph_index, dest_width, - pFont->GetSubstFont()->m_Weight); - } - } - ScopedFontTransform scoped_transform(m_Face, &ft_matrix); - int load_flags = (m_Face->face_flags & FT_FACE_FLAG_SFNT) - ? FXFT_LOAD_NO_BITMAP - : (FXFT_LOAD_NO_BITMAP | FT_LOAD_NO_HINTING); - int error = FXFT_Load_Glyph(m_Face, glyph_index, load_flags); - if (error) { - // if an error is returned, try to reload glyphs without hinting. - if (load_flags & FT_LOAD_NO_HINTING || load_flags & FT_LOAD_NO_SCALE) { - return NULL; - } - - load_flags |= FT_LOAD_NO_HINTING; - error = FXFT_Load_Glyph(m_Face, glyph_index, load_flags); - - if (error) { - return NULL; - } - } - int weight = 0; - if (bUseCJKSubFont) { - weight = pSubstFont->m_WeightCJK; - } else { - weight = pSubstFont ? pSubstFont->m_Weight : 0; - } - if (pSubstFont && !(pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) && - weight > 400) { - int index = (weight - 400) / 10; - if (index >= WEIGHTPOW_ARRAY_SIZE) { - return NULL; - } - int level = 0; - if (pSubstFont->m_Charset == FXFONT_SHIFTJIS_CHARSET) { - level = - g_WeightPow_SHIFTJIS[index] * 2 * - (FXSYS_abs((int)(ft_matrix.xx)) + FXSYS_abs((int)(ft_matrix.xy))) / - 36655; - } else { - level = g_WeightPow_11[index] * (FXSYS_abs((int)(ft_matrix.xx)) + - FXSYS_abs((int)(ft_matrix.xy))) / - 36655; - } - FXFT_Outline_Embolden(FXFT_Get_Glyph_Outline(m_Face), level); - } - FXFT_Library_SetLcdFilter(CFX_GEModule::Get()->GetFontMgr()->GetFTLibrary(), - FT_LCD_FILTER_DEFAULT); - error = FXFT_Render_Glyph(m_Face, anti_alias); - if (error) { - return NULL; - } - int bmwidth = FXFT_Get_Bitmap_Width(FXFT_Get_Glyph_Bitmap(m_Face)); - int bmheight = FXFT_Get_Bitmap_Rows(FXFT_Get_Glyph_Bitmap(m_Face)); - if (bmwidth > 2048 || bmheight > 2048) { - return NULL; - } - int dib_width = bmwidth; - CFX_GlyphBitmap* pGlyphBitmap = new CFX_GlyphBitmap; - pGlyphBitmap->m_Bitmap.Create( - dib_width, bmheight, - anti_alias == FXFT_RENDER_MODE_MONO ? FXDIB_1bppMask : FXDIB_8bppMask); - pGlyphBitmap->m_Left = FXFT_Get_Glyph_BitmapLeft(m_Face); - pGlyphBitmap->m_Top = FXFT_Get_Glyph_BitmapTop(m_Face); - int dest_pitch = pGlyphBitmap->m_Bitmap.GetPitch(); - int src_pitch = FXFT_Get_Bitmap_Pitch(FXFT_Get_Glyph_Bitmap(m_Face)); - uint8_t* pDestBuf = pGlyphBitmap->m_Bitmap.GetBuffer(); - uint8_t* pSrcBuf = - (uint8_t*)FXFT_Get_Bitmap_Buffer(FXFT_Get_Glyph_Bitmap(m_Face)); - if (anti_alias != FXFT_RENDER_MODE_MONO && - FXFT_Get_Bitmap_PixelMode(FXFT_Get_Glyph_Bitmap(m_Face)) == - FXFT_PIXEL_MODE_MONO) { - int bytes = anti_alias == FXFT_RENDER_MODE_LCD ? 3 : 1; - for (int i = 0; i < bmheight; i++) - for (int n = 0; n < bmwidth; n++) { - uint8_t data = - (pSrcBuf[i * src_pitch + n / 8] & (0x80 >> (n % 8))) ? 255 : 0; - for (int b = 0; b < bytes; b++) { - pDestBuf[i * dest_pitch + n * bytes + b] = data; - } - } - } else { - FXSYS_memset(pDestBuf, 0, dest_pitch * bmheight); - if (anti_alias == FXFT_RENDER_MODE_MONO && - FXFT_Get_Bitmap_PixelMode(FXFT_Get_Glyph_Bitmap(m_Face)) == - FXFT_PIXEL_MODE_MONO) { - int rowbytes = - FXSYS_abs(src_pitch) > dest_pitch ? dest_pitch : FXSYS_abs(src_pitch); - for (int row = 0; row < bmheight; row++) { - FXSYS_memcpy(pDestBuf + row * dest_pitch, pSrcBuf + row * src_pitch, - rowbytes); - } - } else { - _ContrastAdjust(pSrcBuf, pDestBuf, bmwidth, bmheight, src_pitch, - dest_pitch); - _GammaAdjust(pDestBuf, bmwidth, bmheight, dest_pitch, - CFX_GEModule::Get()->GetTextGammaTable()); - } - } - return pGlyphBitmap; -} -const CFX_PathData* CFX_FaceCache::LoadGlyphPath(CFX_Font* pFont, - FX_DWORD glyph_index, - int dest_width) { - if (!m_Face || glyph_index == (FX_DWORD)-1) - return nullptr; - - FX_DWORD key = glyph_index; - if (pFont->GetSubstFont()) { - key += (((pFont->GetSubstFont()->m_Weight / 16) << 15) + - ((pFont->GetSubstFont()->m_ItalicAngle / 2) << 21) + - ((dest_width / 16) << 25) + (pFont->IsVertical() << 31)); - } - auto it = m_PathMap.find(key); - if (it != m_PathMap.end()) - return it->second; - - CFX_PathData* pGlyphPath = pFont->LoadGlyphPath(glyph_index, dest_width); - m_PathMap[key] = pGlyphPath; - return pGlyphPath; -} -typedef struct { - FX_BOOL m_bCount; - int m_PointCount; - FX_PATHPOINT* m_pPoints; - int m_CurX; - int m_CurY; - FX_FLOAT m_CoordUnit; -} OUTLINE_PARAMS; -void _Outline_CheckEmptyContour(OUTLINE_PARAMS* param) { - if (param->m_PointCount >= 2 && - param->m_pPoints[param->m_PointCount - 2].m_Flag == FXPT_MOVETO && - param->m_pPoints[param->m_PointCount - 2].m_PointX == - param->m_pPoints[param->m_PointCount - 1].m_PointX && - param->m_pPoints[param->m_PointCount - 2].m_PointY == - param->m_pPoints[param->m_PointCount - 1].m_PointY) { - param->m_PointCount -= 2; - } - if (param->m_PointCount >= 4 && - param->m_pPoints[param->m_PointCount - 4].m_Flag == FXPT_MOVETO && - param->m_pPoints[param->m_PointCount - 3].m_Flag == FXPT_BEZIERTO && - param->m_pPoints[param->m_PointCount - 3].m_PointX == - param->m_pPoints[param->m_PointCount - 4].m_PointX && - param->m_pPoints[param->m_PointCount - 3].m_PointY == - param->m_pPoints[param->m_PointCount - 4].m_PointY && - param->m_pPoints[param->m_PointCount - 2].m_PointX == - param->m_pPoints[param->m_PointCount - 4].m_PointX && - param->m_pPoints[param->m_PointCount - 2].m_PointY == - param->m_pPoints[param->m_PointCount - 4].m_PointY && - param->m_pPoints[param->m_PointCount - 1].m_PointX == - param->m_pPoints[param->m_PointCount - 4].m_PointX && - param->m_pPoints[param->m_PointCount - 1].m_PointY == - param->m_pPoints[param->m_PointCount - 4].m_PointY) { - param->m_PointCount -= 4; - } -} -extern "C" { -static int _Outline_MoveTo(const FXFT_Vector* to, void* user) { - OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; - if (!param->m_bCount) { - _Outline_CheckEmptyContour(param); - param->m_pPoints[param->m_PointCount].m_PointX = to->x / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_PointY = to->y / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_Flag = FXPT_MOVETO; - param->m_CurX = to->x; - param->m_CurY = to->y; - if (param->m_PointCount) { - param->m_pPoints[param->m_PointCount - 1].m_Flag |= FXPT_CLOSEFIGURE; - } - } - param->m_PointCount++; - return 0; -} -}; -extern "C" { -static int _Outline_LineTo(const FXFT_Vector* to, void* user) { - OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; - if (!param->m_bCount) { - param->m_pPoints[param->m_PointCount].m_PointX = to->x / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_PointY = to->y / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_Flag = FXPT_LINETO; - param->m_CurX = to->x; - param->m_CurY = to->y; - } - param->m_PointCount++; - return 0; -} -}; -extern "C" { -static int _Outline_ConicTo(const FXFT_Vector* control, - const FXFT_Vector* to, - void* user) { - OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; - if (!param->m_bCount) { - param->m_pPoints[param->m_PointCount].m_PointX = - (param->m_CurX + (control->x - param->m_CurX) * 2 / 3) / - param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_PointY = - (param->m_CurY + (control->y - param->m_CurY) * 2 / 3) / - param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_Flag = FXPT_BEZIERTO; - param->m_pPoints[param->m_PointCount + 1].m_PointX = - (control->x + (to->x - control->x) / 3) / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 1].m_PointY = - (control->y + (to->y - control->y) / 3) / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 1].m_Flag = FXPT_BEZIERTO; - param->m_pPoints[param->m_PointCount + 2].m_PointX = - to->x / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 2].m_PointY = - to->y / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 2].m_Flag = FXPT_BEZIERTO; - param->m_CurX = to->x; - param->m_CurY = to->y; - } - param->m_PointCount += 3; - return 0; -} -}; -extern "C" { -static int _Outline_CubicTo(const FXFT_Vector* control1, - const FXFT_Vector* control2, - const FXFT_Vector* to, - void* user) { - OUTLINE_PARAMS* param = (OUTLINE_PARAMS*)user; - if (!param->m_bCount) { - param->m_pPoints[param->m_PointCount].m_PointX = - control1->x / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_PointY = - control1->y / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount].m_Flag = FXPT_BEZIERTO; - param->m_pPoints[param->m_PointCount + 1].m_PointX = - control2->x / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 1].m_PointY = - control2->y / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 1].m_Flag = FXPT_BEZIERTO; - param->m_pPoints[param->m_PointCount + 2].m_PointX = - to->x / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 2].m_PointY = - to->y / param->m_CoordUnit; - param->m_pPoints[param->m_PointCount + 2].m_Flag = FXPT_BEZIERTO; - param->m_CurX = to->x; - param->m_CurY = to->y; - } - param->m_PointCount += 3; - return 0; -} -}; -CFX_PathData* CFX_Font::LoadGlyphPath(FX_DWORD glyph_index, int dest_width) { - if (!m_Face) { - return NULL; - } - FXFT_Set_Pixel_Sizes(m_Face, 0, 64); - FXFT_Matrix ft_matrix = {65536, 0, 0, 65536}; - if (m_pSubstFont) { - if (m_pSubstFont->m_ItalicAngle) { - int skew = m_pSubstFont->m_ItalicAngle; - skew = skew <= -ANGLESKEW_ARRAY_SIZE ? -58 : -g_AngleSkew[-skew]; - if (m_bVertical) { - ft_matrix.yx += ft_matrix.yy * skew / 100; - } else { - ft_matrix.xy += -ft_matrix.xx * skew / 100; - } - } - if (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) { - AdjustMMParams(glyph_index, dest_width, m_pSubstFont->m_Weight); - } - } - ScopedFontTransform scoped_transform(m_Face, &ft_matrix); - int load_flags = FXFT_LOAD_NO_BITMAP; - if (!(m_Face->face_flags & FT_FACE_FLAG_SFNT) || !FT_IS_TRICKY(m_Face)) { - load_flags |= FT_LOAD_NO_HINTING; - } - int error = FXFT_Load_Glyph(m_Face, glyph_index, load_flags); - if (error) { - return NULL; - } - if (m_pSubstFont && !(m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM) && - m_pSubstFont->m_Weight > 400) { - int index = (m_pSubstFont->m_Weight - 400) / 10; - if (index >= WEIGHTPOW_ARRAY_SIZE) - index = WEIGHTPOW_ARRAY_SIZE - 1; - int level = 0; - if (m_pSubstFont->m_Charset == FXFONT_SHIFTJIS_CHARSET) { - level = g_WeightPow_SHIFTJIS[index] * 2 * 65536 / 36655; - } else { - level = g_WeightPow[index] * 2; - } - FXFT_Outline_Embolden(FXFT_Get_Glyph_Outline(m_Face), level); - } - FXFT_Outline_Funcs funcs; - funcs.move_to = _Outline_MoveTo; - funcs.line_to = _Outline_LineTo; - funcs.conic_to = _Outline_ConicTo; - funcs.cubic_to = _Outline_CubicTo; - funcs.shift = 0; - funcs.delta = 0; - OUTLINE_PARAMS params; - params.m_bCount = TRUE; - params.m_PointCount = 0; - FXFT_Outline_Decompose(FXFT_Get_Glyph_Outline(m_Face), &funcs, ¶ms); - if (params.m_PointCount == 0) { - return NULL; - } - CFX_PathData* pPath = new CFX_PathData; - pPath->SetPointCount(params.m_PointCount); - params.m_bCount = FALSE; - params.m_PointCount = 0; - params.m_pPoints = pPath->GetPoints(); - params.m_CurX = params.m_CurY = 0; - params.m_CoordUnit = 64 * 64.0; - FXFT_Outline_Decompose(FXFT_Get_Glyph_Outline(m_Face), &funcs, ¶ms); - _Outline_CheckEmptyContour(¶ms); - pPath->TrimPoints(params.m_PointCount); - if (params.m_PointCount) { - pPath->GetPoints()[params.m_PointCount - 1].m_Flag |= FXPT_CLOSEFIGURE; - } - return pPath; -} -void _CFX_UniqueKeyGen::Generate(int count, ...) { - va_list argList; - va_start(argList, count); - for (int i = 0; i < count; i++) { - int p = va_arg(argList, int); - ((FX_DWORD*)m_Key)[i] = p; - } - va_end(argList); - m_KeyLen = count * sizeof(FX_DWORD); -} diff --git a/core/src/fxge/ge/fx_text_int.h b/core/src/fxge/ge/fx_text_int.h deleted file mode 100644 index b568b61a54..0000000000 --- a/core/src/fxge/ge/fx_text_int.h +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_GE_FX_TEXT_INT_H_ -#define CORE_SRC_FXGE_GE_FX_TEXT_INT_H_ - -#include - -#include "core/include/fxge/fx_font.h" -#include "core/include/fxge/fx_freetype.h" - -struct _CFX_UniqueKeyGen { - void Generate(int count, ...); - FX_CHAR m_Key[128]; - int m_KeyLen; -}; -class CFX_SizeGlyphCache { - public: - CFX_SizeGlyphCache() {} - ~CFX_SizeGlyphCache(); - std::map m_GlyphMap; -}; -class CTTFontDesc { - public: - CTTFontDesc() { - m_Type = 0; - m_pFontData = NULL; - m_RefCount = 0; - } - ~CTTFontDesc(); - // ret < 0, releaseface not appropriate for this object. - // ret == 0, object released - // ret > 0, object still alive, other referrers. - int ReleaseFace(FXFT_Face face); - int m_Type; - union { - struct { - FX_BOOL m_bItalic; - FX_BOOL m_bBold; - FXFT_Face m_pFace; - } m_SingleFace; - struct { - FXFT_Face m_pFaces[16]; - } m_TTCFace; - }; - uint8_t* m_pFontData; - int m_RefCount; -}; - -#define CHARSET_FLAG_ANSI 1 -#define CHARSET_FLAG_SYMBOL 2 -#define CHARSET_FLAG_SHIFTJIS 4 -#define CHARSET_FLAG_BIG5 8 -#define CHARSET_FLAG_GB 16 -#define CHARSET_FLAG_KOREAN 32 - -class CFX_FontFaceInfo { - public: - CFX_FontFaceInfo(CFX_ByteString filePath, - CFX_ByteString faceName, - CFX_ByteString fontTables, - FX_DWORD fontOffset, - FX_DWORD fileSize) - : m_FilePath(filePath), - m_FaceName(faceName), - m_FontTables(fontTables), - m_FontOffset(fontOffset), - m_FileSize(fileSize), - m_Styles(0), - m_Charsets(0) {} - - const CFX_ByteString m_FilePath; - const CFX_ByteString m_FaceName; - const CFX_ByteString m_FontTables; - const FX_DWORD m_FontOffset; - const FX_DWORD m_FileSize; - FX_DWORD m_Styles; - FX_DWORD m_Charsets; -}; - -#endif // CORE_SRC_FXGE_GE_FX_TEXT_INT_H_ diff --git a/core/src/fxge/skia/fx_skia_device.cpp b/core/src/fxge/skia/fx_skia_device.cpp deleted file mode 100644 index 9938298c12..0000000000 --- a/core/src/fxge/skia/fx_skia_device.cpp +++ /dev/null @@ -1,426 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "core/include/fxge/fx_ge.h" - -#if defined(_SKIA_SUPPORT_) -#include "core/include/fxcodec/fx_codec.h" - -#include "core/src/fxge/agg/fx_agg_driver.h" -#include "core/src/fxge/skia/fx_skia_device.h" - -#include "SkCanvas.h" -#include "SkDashPathEffect.h" -#include "SkPaint.h" -#include "SkPath.h" - -static SkPath BuildPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device) { - SkPath skPath; - const CFX_PathData* pFPath = pPathData; - int nPoints = pFPath->GetPointCount(); - FX_PATHPOINT* pPoints = pFPath->GetPoints(); - for (int i = 0; i < nPoints; i++) { - FX_FLOAT x = pPoints[i].m_PointX; - FX_FLOAT y = pPoints[i].m_PointY; - if (pObject2Device) - pObject2Device->Transform(x, y); - int point_type = pPoints[i].m_Flag & FXPT_TYPE; - if (point_type == FXPT_MOVETO) { - skPath.moveTo(x, y); - } else if (point_type == FXPT_LINETO) { - skPath.lineTo(x, y); - } else if (point_type == FXPT_BEZIERTO) { - FX_FLOAT x2 = pPoints[i + 1].m_PointX, y2 = pPoints[i + 1].m_PointY; - FX_FLOAT x3 = pPoints[i + 2].m_PointX, y3 = pPoints[i + 2].m_PointY; - if (pObject2Device) { - pObject2Device->Transform(x2, y2); - pObject2Device->Transform(x3, y3); - } - skPath.cubicTo(x, y, x2, y2, x3, y3); - i += 2; - } - if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE) - skPath.close(); - } - return skPath; -} - -// convert a stroking path to scanlines -void CFX_SkiaDeviceDriver::PaintStroke(SkPaint* spaint, - const CFX_GraphStateData* pGraphState) { - SkPaint::Cap cap; - switch (pGraphState->m_LineCap) { - case CFX_GraphStateData::LineCapRound: - cap = SkPaint::kRound_Cap; - break; - case CFX_GraphStateData::LineCapSquare: - cap = SkPaint::kSquare_Cap; - break; - default: - cap = SkPaint::kButt_Cap; - break; - } - SkPaint::Join join; - switch (pGraphState->m_LineJoin) { - case CFX_GraphStateData::LineJoinRound: - join = SkPaint::kRound_Join; - break; - case CFX_GraphStateData::LineJoinBevel: - join = SkPaint::kBevel_Join; - break; - default: - join = SkPaint::kMiter_Join; - break; - } - FX_FLOAT width = pGraphState->m_LineWidth; - - if (pGraphState->m_DashArray) { - int count = (pGraphState->m_DashCount + 1) / 2; - SkScalar* intervals = FX_Alloc2D(SkScalar, count, sizeof(SkScalar)); - // Set dash pattern - for (int i = 0; i < count; i++) { - FX_FLOAT on = pGraphState->m_DashArray[i * 2]; - if (on <= 0.000001f) - on = 1.f / 10; - FX_FLOAT off = i * 2 + 1 == pGraphState->m_DashCount - ? on - : pGraphState->m_DashArray[i * 2 + 1]; - if (off < 0) - off = 0; - intervals[i * 2] = on; - intervals[i * 2 + 1] = off; - } - spaint - ->setPathEffect(SkDashPathEffect::Create(intervals, count * 2, - pGraphState->m_DashPhase)) - ->unref(); - } - spaint->setStyle(SkPaint::kStroke_Style); - spaint->setAntiAlias(TRUE); - spaint->setStrokeWidth(width); - spaint->setStrokeMiter(pGraphState->m_MiterLimit); - spaint->setStrokeCap(cap); - spaint->setStrokeJoin(join); -} - -CFX_SkiaDeviceDriver::CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap, - int dither_bits, - FX_BOOL bRgbByteOrder, - CFX_DIBitmap* pOriDevice, - FX_BOOL bGroupKnockout) { - m_pAggDriver = new CFX_AggDeviceDriver(pBitmap, dither_bits, bRgbByteOrder, - pOriDevice, bGroupKnockout); - SkBitmap skBitmap; - const CFX_DIBitmap* bitmap = m_pAggDriver->m_pBitmap; - SkImageInfo imageInfo = - SkImageInfo::Make(bitmap->GetWidth(), bitmap->GetHeight(), - kN32_SkColorType, kOpaque_SkAlphaType); - skBitmap.installPixels(imageInfo, bitmap->GetBuffer(), bitmap->GetPitch(), - nullptr, /* to do : set color table */ - nullptr, nullptr); - m_canvas = new SkCanvas(skBitmap); -} - -CFX_SkiaDeviceDriver::~CFX_SkiaDeviceDriver() { -#if 0 // TODO(caryclark) : mismatch on allocator ? - delete m_canvas; -#endif - delete m_pAggDriver; -} - -FX_BOOL CFX_SkiaDeviceDriver::DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - return m_pAggDriver->DrawDeviceText(nChars, pCharPos, pFont, pCache, - pObject2Device, font_size, color, - alpha_flag, pIccTransform); -} - -int CFX_SkiaDeviceDriver::GetDeviceCaps(int caps_id) { - return m_pAggDriver->GetDeviceCaps(caps_id); -} - -void CFX_SkiaDeviceDriver::SaveState() { - m_canvas->save(); - m_pAggDriver->SaveState(); -} - -void CFX_SkiaDeviceDriver::RestoreState(FX_BOOL bKeepSaved) { - m_pAggDriver->RestoreState(bKeepSaved); - m_canvas->restore(); -} - -void CFX_SkiaDeviceDriver::SetClipMask( - agg::rasterizer_scanline_aa& rasterizer) { - m_pAggDriver->SetClipMask(rasterizer); -} - -FX_BOOL CFX_SkiaDeviceDriver::SetClip_PathFill( - const CFX_PathData* pPathData, // path info - const CFX_Matrix* pObject2Device, // optional transformation - int fill_mode // fill mode, WINDING or ALTERNATE - ) { - if (!m_pAggDriver->m_pClipRgn) { - m_pAggDriver->m_pClipRgn = new CFX_ClipRgn( - GetDeviceCaps(FXDC_PIXEL_WIDTH), GetDeviceCaps(FXDC_PIXEL_HEIGHT)); - } - - if (pPathData->GetPointCount() == 5 || pPathData->GetPointCount() == 4) { - CFX_FloatRect rectf; - if (pPathData->IsRect(pObject2Device, &rectf)) { - rectf.Intersect( - CFX_FloatRect(0, 0, (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_WIDTH), - (FX_FLOAT)GetDeviceCaps(FXDC_PIXEL_HEIGHT))); - FX_RECT rect = rectf.GetOutterRect(); - m_pAggDriver->m_pClipRgn->IntersectRect(rect); - return TRUE; - } - } - SkPath clip = BuildPath(pPathData, pObject2Device); - clip.setFillType((fill_mode & 3) == FXFILL_WINDING - ? SkPath::kWinding_FillType - : SkPath::kEvenOdd_FillType); - const CFX_Matrix& m = *pObject2Device; -#if 0 - // TODO(caryclark) : don't clip quite yet - // need to understand how to save/restore to balance the clip - printf("m:(%g,%g,%g) (%g,%g,%g)\n", m.a, m.b, m.c, m.d, m.e, m.f); - clip.dump(); - SkMatrix skMatrix; - skMatrix.setAll(m.a, m.b, m.c, m.d, m.e, m.f, 0, 0, 1); - m_canvas->setMatrix(skMatrix); - m_canvas->clipPath(clip, SkRegion::kReplace_Op); -#endif - - return TRUE; -} - -FX_BOOL CFX_SkiaDeviceDriver::SetClip_PathStroke( - const CFX_PathData* pPathData, // path info - const CFX_Matrix* pObject2Device, // optional transformation - const CFX_GraphStateData* pGraphState // graphic state, for pen attributes - ) { - if (!m_pAggDriver->m_pClipRgn) { - m_pAggDriver->m_pClipRgn = new CFX_ClipRgn( - GetDeviceCaps(FXDC_PIXEL_WIDTH), GetDeviceCaps(FXDC_PIXEL_HEIGHT)); - } - - // build path data - SkPath skPath = BuildPath(pPathData, NULL); - skPath.setFillType(SkPath::kWinding_FillType); - - SkPaint spaint; - PaintStroke(&spaint, pGraphState); - SkPath dst_path; - spaint.getFillPath(skPath, &dst_path); -#if 01 - SkMatrix skMatrix; - const CFX_Matrix& m = *pObject2Device; - skMatrix.setAll(m.a, m.b, m.c, m.d, m.e, m.f, 0, 0, 1); - m_canvas->setMatrix(skMatrix); - // TODO(caryclark) : don't clip quite yet - // need to understand how to save/restore so that clip is later undone - m_canvas->clipPath(dst_path, SkRegion::kReplace_Op); -#endif - return TRUE; -} - -FX_BOOL CFX_SkiaDeviceDriver::RenderRasterizer( - agg::rasterizer_scanline_aa& rasterizer, - FX_DWORD color, - FX_BOOL bFullCover, - FX_BOOL bGroupKnockout, - int alpha_flag, - void* pIccTransform) { - return m_pAggDriver->RenderRasterizer( - rasterizer, color, bFullCover, bGroupKnockout, alpha_flag, pIccTransform); -} - -FX_BOOL CFX_SkiaDeviceDriver::DrawPath( - const CFX_PathData* pPathData, // path info - const CFX_Matrix* pObject2Device, // optional transformation - const CFX_GraphStateData* pGraphState, // graphic state, for pen attributes - FX_DWORD fill_color, // fill color - FX_DWORD stroke_color, // stroke color - int fill_mode, // fill mode, WINDING or ALTERNATE. 0 for not filled - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (!GetBuffer()) - return TRUE; - SkIRect rect; - rect.set(0, 0, GetDeviceCaps(FXDC_PIXEL_WIDTH), - GetDeviceCaps(FXDC_PIXEL_HEIGHT)); - SkPath skPath = BuildPath(pPathData, pObject2Device); - SkPaint spaint; - spaint.setAntiAlias(TRUE); - if ((fill_mode & 3) && fill_color) { - skPath.setFillType((fill_mode & 3) == FXFILL_WINDING - ? SkPath::kWinding_FillType - : SkPath::kEvenOdd_FillType); - - spaint.setStyle(SkPaint::kFill_Style); - spaint.setColor(fill_color); - m_canvas->drawPath(skPath, spaint); - } - int stroke_alpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? FXGETFLAG_ALPHA_STROKE(alpha_flag) - : FXARGB_A(stroke_color); - - if (pGraphState && stroke_alpha) { - spaint.setColor(stroke_color); - PaintStroke(&spaint, pGraphState); - m_canvas->drawPath(skPath, spaint); - } - - return TRUE; -} - -FX_BOOL CFX_SkiaDeviceDriver::SetPixel(int x, - int y, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - return m_pAggDriver->SetPixel(x, y, color, alpha_flag, pIccTransform); -} - -FX_BOOL CFX_SkiaDeviceDriver::FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag, - void* pIccTransform, - int blend_type) { - SkPaint spaint; - spaint.setAntiAlias(true); - spaint.setColor(fill_color); - - m_canvas->drawRect( - SkRect::MakeLTRB(pRect->left, pRect->top, pRect->right, pRect->bottom), - spaint); - return TRUE; -} - -FX_BOOL CFX_SkiaDeviceDriver::GetClipBox(FX_RECT* pRect) { - return m_pAggDriver->GetClipBox(pRect); -} - -FX_BOOL CFX_SkiaDeviceDriver::GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform, - FX_BOOL bDEdge) { - return m_pAggDriver->GetDIBits(pBitmap, left, top, pIccTransform, bDEdge); -} - -FX_BOOL CFX_SkiaDeviceDriver::SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD argb, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform) { - return m_pAggDriver->SetDIBits(pBitmap, argb, pSrcRect, left, top, blend_type, - alpha_flag, pIccTransform); -} - -FX_BOOL CFX_SkiaDeviceDriver::StretchDIBits(const CFX_DIBSource* pSource, - FX_DWORD argb, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type) { - return m_pAggDriver->StretchDIBits(pSource, argb, dest_left, dest_top, - dest_width, dest_height, pClipRect, flags, - alpha_flag, pIccTransform, blend_type); -} - -FX_BOOL CFX_SkiaDeviceDriver::StartDIBits(const CFX_DIBSource* pSource, - int bitmap_alpha, - FX_DWORD argb, - const CFX_Matrix* pMatrix, - FX_DWORD render_flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type) { - return m_pAggDriver->StartDIBits(pSource, bitmap_alpha, argb, pMatrix, - render_flags, handle, alpha_flag, - pIccTransform, blend_type); -} - -FX_BOOL CFX_SkiaDeviceDriver::ContinueDIBits(void* pHandle, IFX_Pause* pPause) { - return m_pAggDriver->ContinueDIBits(pHandle, pPause); -} - -void CFX_SkiaDeviceDriver::CancelDIBits(void* pHandle) { - m_pAggDriver->CancelDIBits(pHandle); -} - -CFX_SkiaDevice::CFX_SkiaDevice() { - m_bOwnedBitmap = FALSE; -} - -FX_BOOL CFX_SkiaDevice::Attach(CFX_DIBitmap* pBitmap, - int dither_bits, - FX_BOOL bRgbByteOrder, - CFX_DIBitmap* pOriDevice, - FX_BOOL bGroupKnockout) { - if (!pBitmap) - return FALSE; - SetBitmap(pBitmap); - CFX_SkiaDeviceDriver* pDriver = new CFX_SkiaDeviceDriver( - pBitmap, dither_bits, bRgbByteOrder, pOriDevice, bGroupKnockout); - SetDeviceDriver(pDriver); - return TRUE; -} - -FX_BOOL CFX_SkiaDevice::Create(int width, - int height, - FXDIB_Format format, - int dither_bits, - CFX_DIBitmap* pOriDevice) { - m_bOwnedBitmap = TRUE; - CFX_DIBitmap* pBitmap = new CFX_DIBitmap; - if (!pBitmap->Create(width, height, format)) { - delete pBitmap; - return FALSE; - } - SetBitmap(pBitmap); - CFX_SkiaDeviceDriver* pDriver = - new CFX_SkiaDeviceDriver(pBitmap, dither_bits, FALSE, pOriDevice, FALSE); - SetDeviceDriver(pDriver); - return TRUE; -} - -CFX_SkiaDevice::~CFX_SkiaDevice() { - if (m_bOwnedBitmap && GetBitmap()) - delete GetBitmap(); -} - -#if 0 -#include -#include - -void SkDebugf(const char format[], ...) { - va_list args; - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); -} - -#endif - -#endif diff --git a/core/src/fxge/skia/fx_skia_device.h b/core/src/fxge/skia/fx_skia_device.h deleted file mode 100644 index 31c5982188..0000000000 --- a/core/src/fxge/skia/fx_skia_device.h +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CORE_SRC_FXGE_SKIA_FX_SKIA_DEVICE_H_ -#define CORE_SRC_FXGE_SKIA_FX_SKIA_DEVICE_H_ - -#if defined(_SKIA_SUPPORT_) - -class SkCanvas; -class SkPaint; -class SkPath; -struct SkIRect; - -class CFX_SkiaDeviceDriver : public IFX_RenderDeviceDriver { - public: - CFX_SkiaDeviceDriver(CFX_DIBitmap* pBitmap, - int dither_bits, - FX_BOOL bRgbByteOrder, - CFX_DIBitmap* pOriDevice, - FX_BOOL bGroupKnockout); - ~CFX_SkiaDeviceDriver() override; - - /** Options */ - virtual int GetDeviceCaps(int caps_id); - - /** Save and restore all graphic states */ - virtual void SaveState(); - virtual void RestoreState(FX_BOOL bKeepSaved); - - /** Set clipping path using filled region */ - virtual FX_BOOL SetClip_PathFill( - const CFX_PathData* pPathData, // path info - const CFX_Matrix* pObject2Device, // optional transformation - int fill_mode); // fill mode, WINDING or ALTERNATE - - /** Set clipping path using stroked region */ - virtual FX_BOOL SetClip_PathStroke( - const CFX_PathData* pPathData, // path info - const CFX_Matrix* pObject2Device, // optional transformation - const CFX_GraphStateData* - pGraphState); // graphic state, for pen attributes - - /** Draw a path */ - virtual FX_BOOL DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - virtual FX_BOOL SetPixel(int x, - int y, - FX_DWORD color, - int alpha_flag = 0, - void* pIccTransform = NULL); - - virtual FX_BOOL FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - /** Draw a single pixel (device dependant) line */ - virtual FX_BOOL DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_DWORD color, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL) { - return FALSE; - } - - virtual FX_BOOL GetClipBox(FX_RECT* pRect); - - /** Load device buffer into a DIB */ - virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform = NULL, - FX_BOOL bDEdge = FALSE); - - virtual CFX_DIBitmap* GetBackDrop() { return m_pAggDriver->GetBackDrop(); } - - virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - const FX_RECT* pSrcRect, - int dest_left, - int dest_top, - int blend_type, - int alpha_flag = 0, - void* pIccTransform = NULL); - virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - - virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD flags, - void*& handle, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); - virtual FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause); - virtual void CancelDIBits(void* handle); - - virtual FX_BOOL DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag = 0, - void* pIccTransform = NULL); - - virtual FX_BOOL RenderRasterizer(agg::rasterizer_scanline_aa& rasterizer, - FX_DWORD color, - FX_BOOL bFullCover, - FX_BOOL bGroupKnockout, - int alpha_flag, - void* pIccTransform); - void SetClipMask(agg::rasterizer_scanline_aa& rasterizer); - void SetClipMask(SkPath& skPath, SkPaint* spaint); - virtual uint8_t* GetBuffer() const { return m_pAggDriver->GetBuffer(); } - void PaintStroke(SkPaint* spaint, const CFX_GraphStateData* pGraphState); - - private: - CFX_AggDeviceDriver* m_pAggDriver; - SkCanvas* m_canvas; -}; -#endif // defined(_SKIA_SUPPORT_) - -#endif // CORE_SRC_FXGE_SKIA_FX_SKIA_DEVICE_H_ diff --git a/core/src/fxge/win32/dwrite_int.h b/core/src/fxge/win32/dwrite_int.h deleted file mode 100644 index 206cdf5020..0000000000 --- a/core/src/fxge/win32/dwrite_int.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_WIN32_DWRITE_INT_H_ -#define CORE_SRC_FXGE_WIN32_DWRITE_INT_H_ - -#ifndef DECLSPEC_UUID -#if (_MSC_VER >= 1100) && defined(__cplusplus) -#define DECLSPEC_UUID(x) __declspec(uuid(x)) -#else -#define DECLSPEC_UUID(x) -#endif -#endif -#ifndef DECLSPEC_NOVTABLE -#if (_MSC_VER >= 1100) && defined(__cplusplus) -#define DECLSPEC_NOVTABLE __declspec(novtable) -#else -#define DECLSPEC_NOVTABLE -#endif -#endif -#if (WINVER < 0x0500) -#ifndef _MAC -DECLARE_HANDLE(HMONITOR); -#endif -#endif -class CDWriteExt { - public: - CDWriteExt(); - ~CDWriteExt(); - - void Load(); - void Unload(); - - FX_BOOL IsAvailable() { return m_pDWriteFactory != NULL; } - - void* DwCreateFontFaceFromStream(uint8_t* pData, - FX_DWORD size, - int simulation_style); - FX_BOOL DwCreateRenderingTarget(CFX_DIBitmap* pSrc, void** renderTarget); - void DwDeleteRenderingTarget(void* renderTarget); - FX_BOOL DwRendingString(void* renderTarget, - CFX_ClipRgn* pClipRgn, - FX_RECT& stringRect, - CFX_Matrix* pMatrix, - void* font, - FX_FLOAT font_size, - FX_ARGB text_color, - int glyph_count, - unsigned short* glyph_indices, - FX_FLOAT baselineOriginX, - FX_FLOAT baselineOriginY, - void* glyph_offsets, - FX_FLOAT* glyph_advances); - void DwDeleteFont(void* pFont); - - protected: - void* m_hModule; - void* m_pDWriteFactory; - void* m_pDwFontContext; - void* m_pDwTextRenderer; -}; - -#endif // CORE_SRC_FXGE_WIN32_DWRITE_INT_H_ diff --git a/core/src/fxge/win32/fx_win32_device.cpp b/core/src/fxge/win32/fx_win32_device.cpp deleted file mode 100644 index cdfc21bddc..0000000000 --- a/core/src/fxge/win32/fx_win32_device.cpp +++ /dev/null @@ -1,1372 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ -#include - -#include "core/include/fxcodec/fx_codec.h" -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge_win32.h" -#include "core/src/fxge/agg/fx_agg_driver.h" -#include "core/src/fxge/dib/dib_int.h" -#include "core/src/fxge/ge/fx_text_int.h" -#include "core/src/fxge/win32/dwrite_int.h" -#include "core/src/fxge/win32/win32_int.h" -#include "third_party/base/stl_util.h" - -class CFX_Win32FallbackFontInfo final : public CFX_FolderFontInfo { - public: - void* MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* family, - int& iExact) override; -}; -class CFX_Win32FontInfo final : public IFX_SystemFontInfo { - public: - CFX_Win32FontInfo(); - ~CFX_Win32FontInfo() override; - - // IFX_SystemFontInfo - void Release() override; - FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override; - void* MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* face, - int& iExact) override; - void* GetFont(const FX_CHAR* face) override { return NULL; } - FX_DWORD GetFontData(void* hFont, - FX_DWORD table, - uint8_t* buffer, - FX_DWORD size) override; - FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) override; - FX_BOOL GetFontCharset(void* hFont, int& charset) override; - void DeleteFont(void* hFont) override; - - FX_BOOL IsOpenTypeFromDiv(const LOGFONTA* plf); - FX_BOOL IsSupportFontFormDiv(const LOGFONTA* plf); - void AddInstalledFont(const LOGFONTA* plf, FX_DWORD FontType); - void GetGBPreference(CFX_ByteString& face, int weight, int picth_family); - void GetJapanesePreference(CFX_ByteString& face, - int weight, - int picth_family); - CFX_ByteString FindFont(const CFX_ByteString& name); - HDC m_hDC; - CFX_FontMapper* m_pMapper; - CFX_ByteString m_LastFamily; - CFX_ByteString m_KaiTi, m_FangSong; -}; - -CFX_Win32FontInfo::CFX_Win32FontInfo() { - m_hDC = CreateCompatibleDC(NULL); -} -CFX_Win32FontInfo::~CFX_Win32FontInfo() { - m_pMapper = NULL; -} -void CFX_Win32FontInfo::Release() { - DeleteDC(m_hDC); - delete this; -} -#define TT_MAKE_TAG(x1, x2, x3, x4) \ - (((FX_DWORD)x1 << 24) | ((FX_DWORD)x2 << 16) | ((FX_DWORD)x3 << 8) | \ - (FX_DWORD)x4) -FX_BOOL CFX_Win32FontInfo::IsOpenTypeFromDiv(const LOGFONTA* plf) { - HFONT hFont = CreateFontIndirectA(plf); - FX_BOOL ret = FALSE; - FX_DWORD font_size = GetFontData(hFont, 0, NULL, 0); - if (font_size != GDI_ERROR && font_size >= sizeof(FX_DWORD)) { - FX_DWORD lVersion = 0; - GetFontData(hFont, 0, (uint8_t*)(&lVersion), sizeof(FX_DWORD)); - lVersion = (((FX_DWORD)(uint8_t)(lVersion)) << 24) | - ((FX_DWORD)((uint8_t)(lVersion >> 8))) << 16 | - ((FX_DWORD)((uint8_t)(lVersion >> 16))) << 8 | - ((uint8_t)(lVersion >> 24)); - if (lVersion == TT_MAKE_TAG('O', 'T', 'T', 'O') || lVersion == 0x00010000 || - lVersion == TT_MAKE_TAG('t', 't', 'c', 'f') || - lVersion == TT_MAKE_TAG('t', 'r', 'u', 'e') || lVersion == 0x00020000) { - ret = TRUE; - } - } - DeleteFont(hFont); - return ret; -} -FX_BOOL CFX_Win32FontInfo::IsSupportFontFormDiv(const LOGFONTA* plf) { - HFONT hFont = CreateFontIndirectA(plf); - FX_BOOL ret = FALSE; - FX_DWORD font_size = GetFontData(hFont, 0, NULL, 0); - if (font_size != GDI_ERROR && font_size >= sizeof(FX_DWORD)) { - FX_DWORD lVersion = 0; - GetFontData(hFont, 0, (uint8_t*)(&lVersion), sizeof(FX_DWORD)); - lVersion = (((FX_DWORD)(uint8_t)(lVersion)) << 24) | - ((FX_DWORD)((uint8_t)(lVersion >> 8))) << 16 | - ((FX_DWORD)((uint8_t)(lVersion >> 16))) << 8 | - ((uint8_t)(lVersion >> 24)); - if (lVersion == TT_MAKE_TAG('O', 'T', 'T', 'O') || lVersion == 0x00010000 || - lVersion == TT_MAKE_TAG('t', 't', 'c', 'f') || - lVersion == TT_MAKE_TAG('t', 'r', 'u', 'e') || lVersion == 0x00020000) { - ret = TRUE; - } else if ((lVersion & 0xFFFF0000) == TT_MAKE_TAG(0x80, 0x01, 0x00, 0x00) || - (lVersion & 0xFFFF0000) == TT_MAKE_TAG('%', '!', 0, 0)) { - ret = TRUE; - } - } - DeleteFont(hFont); - return ret; -} -void CFX_Win32FontInfo::AddInstalledFont(const LOGFONTA* plf, - FX_DWORD FontType) { - CFX_ByteString name(plf->lfFaceName); - if (name[0] == '@') { - return; - } - if (name == m_LastFamily) { - m_pMapper->AddInstalledFont(name, plf->lfCharSet); - return; - } - if (!(FontType & TRUETYPE_FONTTYPE) && !(FontType & DEVICE_FONTTYPE)) { - return; - } - if (!(FontType & TRUETYPE_FONTTYPE)) { - if (!IsSupportFontFormDiv(plf)) { - return; - } - } - m_pMapper->AddInstalledFont(name, plf->lfCharSet); - m_LastFamily = name; -} -static int CALLBACK FontEnumProc(const LOGFONTA* plf, - const TEXTMETRICA* lpntme, - FX_DWORD FontType, - LPARAM lParam) { - CFX_Win32FontInfo* pFontInfo = (CFX_Win32FontInfo*)lParam; - if (pFontInfo->m_pMapper->GetFontEnumerator()) { - pFontInfo->m_pMapper->GetFontEnumerator()->HitFont(); - } - pFontInfo->AddInstalledFont(plf, FontType); - return 1; -} -FX_BOOL CFX_Win32FontInfo::EnumFontList(CFX_FontMapper* pMapper) { - m_pMapper = pMapper; - LOGFONTA lf; - FXSYS_memset(&lf, 0, sizeof(LOGFONTA)); - lf.lfCharSet = DEFAULT_CHARSET; - lf.lfFaceName[0] = 0; - lf.lfPitchAndFamily = 0; - EnumFontFamiliesExA(m_hDC, &lf, (FONTENUMPROCA)FontEnumProc, (uintptr_t) this, - 0); - if (pMapper->GetFontEnumerator()) { - pMapper->GetFontEnumerator()->Finish(); - } - return TRUE; -} -static const struct { - const FX_CHAR* m_pFaceName; - const FX_CHAR* m_pVariantName; -} VariantNames[] = { - {"DFKai-SB", "\x19\x6A\x77\x69\xD4\x9A"}, -}; -static const struct { - const FX_CHAR* m_pName; - const FX_CHAR* m_pWinName; - FX_BOOL m_bBold; - FX_BOOL m_bItalic; -} Base14Substs[] = { - {"Courier", "Courier New", FALSE, FALSE}, - {"Courier-Bold", "Courier New", TRUE, FALSE}, - {"Courier-BoldOblique", "Courier New", TRUE, TRUE}, - {"Courier-Oblique", "Courier New", FALSE, TRUE}, - {"Helvetica", "Arial", FALSE, FALSE}, - {"Helvetica-Bold", "Arial", TRUE, FALSE}, - {"Helvetica-BoldOblique", "Arial", TRUE, TRUE}, - {"Helvetica-Oblique", "Arial", FALSE, TRUE}, - {"Times-Roman", "Times New Roman", FALSE, FALSE}, - {"Times-Bold", "Times New Roman", TRUE, FALSE}, - {"Times-BoldItalic", "Times New Roman", TRUE, TRUE}, - {"Times-Italic", "Times New Roman", FALSE, TRUE}, -}; -CFX_ByteString CFX_Win32FontInfo::FindFont(const CFX_ByteString& name) { - if (!m_pMapper) { - return name; - } - int nFonts = pdfium::CollectionSize(m_pMapper->m_InstalledTTFonts); - for (int i = 0; i < nFonts; i++) { - CFX_ByteString thisname = m_pMapper->m_InstalledTTFonts[i]; - if (thisname[0] == ' ') { - if (thisname.Mid(1, name.GetLength()) == name) { - return m_pMapper->m_InstalledTTFonts[i + 1]; - } - } else if (thisname.Left(name.GetLength()) == name) { - return m_pMapper->m_InstalledTTFonts[i]; - } - } - return CFX_ByteString(); -} -void* CFX_Win32FallbackFontInfo::MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* cstr_face, - int& iExact) { - void* font = GetSubstFont(cstr_face); - if (font) { - iExact = 1; - return font; - } - FX_BOOL bCJK = TRUE; - switch (charset) { - case FXFONT_SHIFTJIS_CHARSET: - case FXFONT_GB2312_CHARSET: - case FXFONT_CHINESEBIG5_CHARSET: - case FXFONT_HANGEUL_CHARSET: - default: - bCJK = FALSE; - break; - } - return FindFont(weight, bItalic, charset, pitch_family, cstr_face, !bCJK); -} -struct _FontNameMap { - const FX_CHAR* m_pSubFontName; - const FX_CHAR* m_pSrcFontName; -}; -const _FontNameMap g_JpFontNameMap[] = { - {"MS Mincho", "Heiseimin-W3"}, - {"MS Gothic", "Jun101-Light"}, -}; -extern "C" { -static int compareString(const void* key, const void* element) { - return FXSYS_stricmp((const FX_CHAR*)key, - ((_FontNameMap*)element)->m_pSrcFontName); -} -} -FX_BOOL _GetSubFontName(CFX_ByteString& name) { - int size = sizeof g_JpFontNameMap; - void* pFontnameMap = (void*)g_JpFontNameMap; - _FontNameMap* found = (_FontNameMap*)FXSYS_bsearch( - name.c_str(), pFontnameMap, size / sizeof(_FontNameMap), - sizeof(_FontNameMap), compareString); - if (!found) { - return FALSE; - } - name = found->m_pSubFontName; - return TRUE; -} -void CFX_Win32FontInfo::GetGBPreference(CFX_ByteString& face, - int weight, - int picth_family) { - if (face.Find("KaiTi") >= 0 || face.Find("\xbf\xac") >= 0) { - if (m_KaiTi.IsEmpty()) { - m_KaiTi = FindFont("KaiTi"); - if (m_KaiTi.IsEmpty()) { - m_KaiTi = "SimSun"; - } - } - face = m_KaiTi; - } else if (face.Find("FangSong") >= 0 || face.Find("\xb7\xc2\xcb\xce") >= 0) { - if (m_FangSong.IsEmpty()) { - m_FangSong = FindFont("FangSong"); - if (m_FangSong.IsEmpty()) { - m_FangSong = "SimSun"; - } - } - face = m_FangSong; - } else if (face.Find("SimSun") >= 0 || face.Find("\xcb\xce") >= 0) { - face = "SimSun"; - } else if (face.Find("SimHei") >= 0 || face.Find("\xba\xda") >= 0) { - face = "SimHei"; - } else if (!(picth_family & FF_ROMAN) && weight > 550) { - face = "SimHei"; - } else { - face = "SimSun"; - } -} -void CFX_Win32FontInfo::GetJapanesePreference(CFX_ByteString& face, - int weight, - int picth_family) { - if (face.Find("Gothic") >= 0 || - face.Find("\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { - if (face.Find("PGothic") >= 0 || - face.Find("\x82\x6f\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { - face = "MS PGothic"; - } else if (face.Find("UI Gothic") >= 0) { - face = "MS UI Gothic"; - } else { - if (face.Find("HGSGothicM") >= 0 || face.Find("HGMaruGothicMPRO") >= 0) { - face = "MS PGothic"; - } else { - face = "MS Gothic"; - } - } - return; - } - if (face.Find("Mincho") >= 0 || face.Find("\x96\xbe\x92\xa9") >= 0) { - if (face.Find("PMincho") >= 0 || - face.Find("\x82\x6f\x96\xbe\x92\xa9") >= 0) { - face = "MS PMincho"; - } else { - face = "MS Mincho"; - } - return; - } - if (_GetSubFontName(face)) { - return; - } - if (!(picth_family & FF_ROMAN) && weight > 400) { - face = "MS PGothic"; - } else { - face = "MS PMincho"; - } -} -void* CFX_Win32FontInfo::MapFont(int weight, - FX_BOOL bItalic, - int charset, - int pitch_family, - const FX_CHAR* cstr_face, - int& iExact) { - CFX_ByteString face = cstr_face; - int iBaseFont; - for (iBaseFont = 0; iBaseFont < 12; iBaseFont++) - if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) { - face = Base14Substs[iBaseFont].m_pWinName; - weight = Base14Substs[iBaseFont].m_bBold ? FW_BOLD : FW_NORMAL; - bItalic = Base14Substs[iBaseFont].m_bItalic; - iExact = TRUE; - break; - } - if (charset == ANSI_CHARSET || charset == SYMBOL_CHARSET) { - charset = DEFAULT_CHARSET; - } - int subst_pitch_family = pitch_family; - switch (charset) { - case SHIFTJIS_CHARSET: - subst_pitch_family = FF_ROMAN; - break; - case CHINESEBIG5_CHARSET: - case HANGUL_CHARSET: - case GB2312_CHARSET: - subst_pitch_family = 0; - break; - } - HFONT hFont = - ::CreateFontA(-10, 0, 0, 0, weight, bItalic, 0, 0, charset, - OUT_TT_ONLY_PRECIS, 0, 0, subst_pitch_family, face); - char facebuf[100]; - HFONT hOldFont = (HFONT)::SelectObject(m_hDC, hFont); - ::GetTextFaceA(m_hDC, 100, facebuf); - ::SelectObject(m_hDC, hOldFont); - if (face.EqualNoCase(facebuf)) { - return hFont; - } - int iCount = sizeof(VariantNames) / sizeof(VariantNames[0]); - for (int i = 0; i < iCount; ++i) { - if (face == VariantNames[i].m_pFaceName) { - CFX_WideString wsFace = CFX_WideString::FromLocal(facebuf); - const unsigned short* pName = - (const unsigned short*)VariantNames[i].m_pVariantName; - FX_STRSIZE len = CFX_WideString::WStringLength(pName); - CFX_WideString wsName = CFX_WideString::FromUTF16LE(pName, len); - if (wsFace == wsName) { - return hFont; - } - } - } - ::DeleteObject(hFont); - if (charset == DEFAULT_CHARSET) { - return NULL; - } - switch (charset) { - case SHIFTJIS_CHARSET: - GetJapanesePreference(face, weight, pitch_family); - break; - case GB2312_CHARSET: - GetGBPreference(face, weight, pitch_family); - break; - case HANGUL_CHARSET: - face = "Gulim"; - break; - case CHINESEBIG5_CHARSET: - if (face.Find("MSung") >= 0) { - face = "MingLiU"; - } else { - face = "PMingLiU"; - } - break; - } - hFont = ::CreateFontA(-10, 0, 0, 0, weight, bItalic, 0, 0, charset, - OUT_TT_ONLY_PRECIS, 0, 0, subst_pitch_family, face); - return hFont; -} -void CFX_Win32FontInfo::DeleteFont(void* hFont) { - ::DeleteObject(hFont); -} -FX_DWORD CFX_Win32FontInfo::GetFontData(void* hFont, - FX_DWORD table, - uint8_t* buffer, - FX_DWORD size) { - HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); - table = FXDWORD_FROM_MSBFIRST(table); - size = ::GetFontData(m_hDC, table, 0, buffer, size); - ::SelectObject(m_hDC, hOldFont); - if (size == GDI_ERROR) { - return 0; - } - return size; -} -FX_BOOL CFX_Win32FontInfo::GetFaceName(void* hFont, CFX_ByteString& name) { - char facebuf[100]; - HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); - int ret = ::GetTextFaceA(m_hDC, 100, facebuf); - ::SelectObject(m_hDC, hOldFont); - if (ret == 0) { - return FALSE; - } - name = facebuf; - return TRUE; -} -FX_BOOL CFX_Win32FontInfo::GetFontCharset(void* hFont, int& charset) { - TEXTMETRIC tm; - HFONT hOldFont = (HFONT)::SelectObject(m_hDC, (HFONT)hFont); - ::GetTextMetrics(m_hDC, &tm); - ::SelectObject(m_hDC, hOldFont); - charset = tm.tmCharSet; - return TRUE; -} -static FX_BOOL IsGDIEnabled() { - // If GDI is disabled then GetDC for the desktop will fail. - HDC hdc = ::GetDC(NULL); - if (hdc) { - ::ReleaseDC(NULL, hdc); - return TRUE; - } - return FALSE; -} -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { - if (IsGDIEnabled()) { - return new CFX_Win32FontInfo; - } - // Select the fallback font information class if GDI is disabled. - CFX_Win32FallbackFontInfo* pInfoFallback = new CFX_Win32FallbackFontInfo; - // Construct the font path manually, SHGetKnownFolderPath won't work under - // a restrictive sandbox. - CHAR windows_path[MAX_PATH] = {}; - DWORD path_len = ::GetWindowsDirectoryA(windows_path, MAX_PATH); - if (path_len > 0 && path_len < MAX_PATH) { - CFX_ByteString fonts_path(windows_path); - fonts_path += "\\Fonts"; - pInfoFallback->AddPath(fonts_path); - } - return pInfoFallback; -} -void CFX_GEModule::InitPlatform() { - CWin32Platform* pPlatformData = new CWin32Platform; - OSVERSIONINFO ver; - ver.dwOSVersionInfoSize = sizeof(ver); - GetVersionEx(&ver); - pPlatformData->m_bHalfTone = ver.dwMajorVersion >= 5; - if (IsGDIEnabled()) { - pPlatformData->m_GdiplusExt.Load(); - } - m_pPlatformData = pPlatformData; - m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); -} -void CFX_GEModule::DestroyPlatform() { - delete (CWin32Platform*)m_pPlatformData; - m_pPlatformData = NULL; -} -CGdiDeviceDriver::CGdiDeviceDriver(HDC hDC, int device_class) { - m_hDC = hDC; - m_DeviceClass = device_class; - CWin32Platform* pPlatform = - (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); - SetStretchBltMode(hDC, pPlatform->m_bHalfTone ? HALFTONE : COLORONCOLOR); - if (GetObjectType(m_hDC) == OBJ_MEMDC) { - HBITMAP hBitmap = CreateBitmap(1, 1, 1, 1, NULL); - hBitmap = (HBITMAP)SelectObject(m_hDC, hBitmap); - BITMAP bitmap; - GetObject(hBitmap, sizeof bitmap, &bitmap); - m_nBitsPerPixel = bitmap.bmBitsPixel; - m_Width = bitmap.bmWidth; - m_Height = abs(bitmap.bmHeight); - hBitmap = (HBITMAP)SelectObject(m_hDC, hBitmap); - DeleteObject(hBitmap); - } else { - m_nBitsPerPixel = ::GetDeviceCaps(m_hDC, BITSPIXEL); - m_Width = ::GetDeviceCaps(m_hDC, HORZRES); - m_Height = ::GetDeviceCaps(m_hDC, VERTRES); - } - if (m_DeviceClass != FXDC_DISPLAY) { - m_RenderCaps = FXRC_BIT_MASK; - } else { - m_RenderCaps = FXRC_GET_BITS | FXRC_BIT_MASK; - } -} -int CGdiDeviceDriver::GetDeviceCaps(int caps_id) { - switch (caps_id) { - case FXDC_DEVICE_CLASS: - return m_DeviceClass; - case FXDC_PIXEL_WIDTH: - return m_Width; - case FXDC_PIXEL_HEIGHT: - return m_Height; - case FXDC_BITS_PIXEL: - return m_nBitsPerPixel; - case FXDC_RENDER_CAPS: - return m_RenderCaps; - } - return 0; -} -void* CGdiDeviceDriver::GetClipRgn() { - HRGN hClipRgn = CreateRectRgn(0, 0, 1, 1); - if (::GetClipRgn(m_hDC, hClipRgn) == 0) { - DeleteObject(hClipRgn); - hClipRgn = NULL; - } - return (void*)hClipRgn; -} -FX_BOOL CGdiDeviceDriver::GDI_SetDIBits(const CFX_DIBitmap* pBitmap1, - const FX_RECT* pSrcRect, - int left, - int top, - void* pIccTransform) { - if (m_DeviceClass == FXDC_PRINTER) { - CFX_DIBitmap* pBitmap = pBitmap1->FlipImage(FALSE, TRUE); - if (!pBitmap) { - return FALSE; - } - if ((pBitmap->IsCmykImage() || pIccTransform) && - !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) { - return FALSE; - } - int width = pSrcRect->Width(), height = pSrcRect->Height(); - LPBYTE pBuffer = pBitmap->GetBuffer(); - CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); - ((BITMAPINFOHEADER*)info.c_str())->biHeight *= -1; - FX_RECT dst_rect(0, 0, width, height); - dst_rect.Intersect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); - int dst_width = dst_rect.Width(); - int dst_height = dst_rect.Height(); - ::StretchDIBits(m_hDC, left, top, dst_width, dst_height, 0, 0, dst_width, - dst_height, pBuffer, (BITMAPINFO*)info.c_str(), - DIB_RGB_COLORS, SRCCOPY); - delete pBitmap; - } else { - CFX_DIBitmap* pBitmap = (CFX_DIBitmap*)pBitmap1; - if ((pBitmap->IsCmykImage() || pIccTransform) && - (pBitmap = pBitmap->CloneConvert(FXDIB_Rgb, NULL, pIccTransform)) == - NULL) { - return FALSE; - } - int width = pSrcRect->Width(), height = pSrcRect->Height(); - LPBYTE pBuffer = pBitmap->GetBuffer(); - CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); - ::SetDIBitsToDevice(m_hDC, left, top, width, height, pSrcRect->left, - pBitmap->GetHeight() - pSrcRect->bottom, 0, - pBitmap->GetHeight(), pBuffer, - (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); - if (pBitmap != pBitmap1) { - delete pBitmap; - } - } - return TRUE; -} -FX_BOOL CGdiDeviceDriver::GDI_StretchDIBits(const CFX_DIBitmap* pBitmap1, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_DWORD flags, - void* pIccTransform) { - CFX_DIBitmap* pBitmap = (CFX_DIBitmap*)pBitmap1; - if (!pBitmap || dest_width == 0 || dest_height == 0) { - return FALSE; - } - if ((pBitmap->IsCmykImage() || pIccTransform) && - !pBitmap->ConvertFormat(FXDIB_Rgb, pIccTransform)) { - return FALSE; - } - CFX_ByteString info = CFX_WindowsDIB::GetBitmapInfo(pBitmap); - if ((int64_t)abs(dest_width) * abs(dest_height) < - (int64_t)pBitmap1->GetWidth() * pBitmap1->GetHeight() * 4 || - (flags & FXDIB_INTERPOL) || (flags & FXDIB_BICUBIC_INTERPOL)) { - SetStretchBltMode(m_hDC, HALFTONE); - } else { - SetStretchBltMode(m_hDC, COLORONCOLOR); - } - CFX_DIBitmap* pToStrechBitmap = pBitmap; - bool del = false; - if (m_DeviceClass == FXDC_PRINTER && - ((int64_t)pBitmap->GetWidth() * pBitmap->GetHeight() > - (int64_t)abs(dest_width) * abs(dest_height))) { - pToStrechBitmap = pBitmap->StretchTo(dest_width, dest_height); - del = true; - } - CFX_ByteString toStrechBitmapInfo = - CFX_WindowsDIB::GetBitmapInfo(pToStrechBitmap); - ::StretchDIBits(m_hDC, dest_left, dest_top, dest_width, dest_height, 0, 0, - pToStrechBitmap->GetWidth(), pToStrechBitmap->GetHeight(), - pToStrechBitmap->GetBuffer(), - (BITMAPINFO*)toStrechBitmapInfo.c_str(), DIB_RGB_COLORS, - SRCCOPY); - if (del) { - delete pToStrechBitmap; - } - return TRUE; -} -FX_BOOL CGdiDeviceDriver::GDI_StretchBitMask(const CFX_DIBitmap* pBitmap1, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_DWORD bitmap_color, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform) { - CFX_DIBitmap* pBitmap = (CFX_DIBitmap*)pBitmap1; - if (!pBitmap || dest_width == 0 || dest_height == 0) { - return FALSE; - } - _Color2Argb(bitmap_color, bitmap_color, alpha_flag | (1 << 24), - pIccTransform); - int width = pBitmap->GetWidth(), height = pBitmap->GetHeight(); - struct { - BITMAPINFOHEADER bmiHeader; - FX_DWORD bmiColors[2]; - } bmi; - FXSYS_memset(&bmi.bmiHeader, 0, sizeof(BITMAPINFOHEADER)); - bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - bmi.bmiHeader.biBitCount = 1; - bmi.bmiHeader.biCompression = BI_RGB; - bmi.bmiHeader.biHeight = -height; - bmi.bmiHeader.biPlanes = 1; - bmi.bmiHeader.biWidth = width; - if (m_nBitsPerPixel != 1) { - SetStretchBltMode(m_hDC, HALFTONE); - } - bmi.bmiColors[0] = 0xffffff; - bmi.bmiColors[1] = 0; - - HBRUSH hPattern = CreateSolidBrush(bitmap_color & 0xffffff); - HBRUSH hOld = (HBRUSH)SelectObject(m_hDC, hPattern); - - // In PDF, when image mask is 1, use device bitmap; when mask is 0, use brush - // bitmap. - // A complete list of the boolen operations is as follows: - - /* P(bitmap_color) S(ImageMask) D(DeviceBitmap) Result - * 0 0 0 0 - * 0 0 1 0 - * 0 1 0 0 - * 0 1 1 1 - * 1 0 0 1 - * 1 0 1 1 - * 1 1 0 0 - * 1 1 1 1 - */ - // The boolen codes is B8. Based on - // http://msdn.microsoft.com/en-us/library/aa932106.aspx, the ROP3 code is - // 0xB8074A - - ::StretchDIBits(m_hDC, dest_left, dest_top, dest_width, dest_height, 0, 0, - width, height, pBitmap->GetBuffer(), (BITMAPINFO*)&bmi, - DIB_RGB_COLORS, 0xB8074A); - - SelectObject(m_hDC, hOld); - DeleteObject(hPattern); - - return TRUE; -} -FX_BOOL CGdiDeviceDriver::GetClipBox(FX_RECT* pRect) { - return ::GetClipBox(m_hDC, (RECT*)pRect); -} -FX_BOOL CGdiDeviceDriver::SetClipRgn(void* hRgn) { - ::SelectClipRgn(m_hDC, (HRGN)hRgn); - return TRUE; -} -static HPEN _CreatePen(const CFX_GraphStateData* pGraphState, - const CFX_Matrix* pMatrix, - FX_DWORD argb) { - FX_FLOAT width; - FX_FLOAT scale = 1.f; - if (pMatrix) - scale = FXSYS_fabs(pMatrix->a) > FXSYS_fabs(pMatrix->b) - ? FXSYS_fabs(pMatrix->a) - : FXSYS_fabs(pMatrix->b); - if (pGraphState) { - width = scale * pGraphState->m_LineWidth; - } else { - width = 1.0f; - } - FX_DWORD PenStyle = PS_GEOMETRIC; - if (width < 1) { - width = 1; - } - if (pGraphState->m_DashCount) { - PenStyle |= PS_USERSTYLE; - } else { - PenStyle |= PS_SOLID; - } - switch (pGraphState->m_LineCap) { - case 0: - PenStyle |= PS_ENDCAP_FLAT; - break; - case 1: - PenStyle |= PS_ENDCAP_ROUND; - break; - case 2: - PenStyle |= PS_ENDCAP_SQUARE; - break; - } - switch (pGraphState->m_LineJoin) { - case 0: - PenStyle |= PS_JOIN_MITER; - break; - case 1: - PenStyle |= PS_JOIN_ROUND; - break; - case 2: - PenStyle |= PS_JOIN_BEVEL; - break; - } - int a; - FX_COLORREF rgb; - ArgbDecode(argb, a, rgb); - LOGBRUSH lb; - lb.lbColor = rgb; - lb.lbStyle = BS_SOLID; - lb.lbHatch = 0; - FX_DWORD* pDash = NULL; - if (pGraphState->m_DashCount) { - pDash = FX_Alloc(FX_DWORD, pGraphState->m_DashCount); - for (int i = 0; i < pGraphState->m_DashCount; i++) { - pDash[i] = FXSYS_round( - pMatrix ? pMatrix->TransformDistance(pGraphState->m_DashArray[i]) - : pGraphState->m_DashArray[i]); - if (pDash[i] < 1) { - pDash[i] = 1; - } - } - } - HPEN hPen = ExtCreatePen(PenStyle, (DWORD)FXSYS_ceil(width), &lb, - pGraphState->m_DashCount, (const DWORD*)pDash); - FX_Free(pDash); - return hPen; -} -static HBRUSH _CreateBrush(FX_DWORD argb) { - int a; - FX_COLORREF rgb; - ArgbDecode(argb, a, rgb); - return CreateSolidBrush(rgb); -} -static void _SetPathToDC(HDC hDC, - const CFX_PathData* pPathData, - const CFX_Matrix* pMatrix) { - BeginPath(hDC); - int nPoints = pPathData->GetPointCount(); - FX_PATHPOINT* pPoints = pPathData->GetPoints(); - for (int i = 0; i < nPoints; i++) { - FX_FLOAT posx = pPoints[i].m_PointX, posy = pPoints[i].m_PointY; - if (pMatrix) { - pMatrix->Transform(posx, posy); - } - int screen_x = FXSYS_round(posx), screen_y = FXSYS_round(posy); - int point_type = pPoints[i].m_Flag & FXPT_TYPE; - if (point_type == PT_MOVETO) { - MoveToEx(hDC, screen_x, screen_y, NULL); - } else if (point_type == PT_LINETO) { - if (pPoints[i].m_PointY == pPoints[i - 1].m_PointY && - pPoints[i].m_PointX == pPoints[i - 1].m_PointX) { - screen_x++; - } - LineTo(hDC, screen_x, screen_y); - } else if (point_type == PT_BEZIERTO) { - POINT lppt[3]; - lppt[0].x = screen_x; - lppt[0].y = screen_y; - posx = pPoints[i + 1].m_PointX; - posy = pPoints[i + 1].m_PointY; - if (pMatrix) { - pMatrix->Transform(posx, posy); - } - lppt[1].x = FXSYS_round(posx); - lppt[1].y = FXSYS_round(posy); - posx = pPoints[i + 2].m_PointX; - posy = pPoints[i + 2].m_PointY; - if (pMatrix) { - pMatrix->Transform(posx, posy); - } - lppt[2].x = FXSYS_round(posx); - lppt[2].y = FXSYS_round(posy); - PolyBezierTo(hDC, lppt, 3); - i += 2; - } - if (pPoints[i].m_Flag & PT_CLOSEFIGURE) { - CloseFigure(hDC); - } - } - EndPath(hDC); -} -void CGdiDeviceDriver::DrawLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2) { - int flag1 = (x1 < 0) | ((x1 > m_Width) << 1) | ((y1 < 0) << 2) | - ((y1 > m_Height) << 3); - int flag2 = (x2 < 0) | ((x2 > m_Width) << 1) | ((y2 < 0) << 2) | - ((y2 > m_Height) << 3); - if (flag1 & flag2) { - return; - } - if (flag1 || flag2) { - agg::rect_base rect(0.0f, 0.0f, (FX_FLOAT)(m_Width), - (FX_FLOAT)(m_Height)); - FX_FLOAT x[2], y[2]; - int np = agg::clip_liang_barsky(x1, y1, x2, y2, rect, x, y); - if (np == 0) { - return; - } - if (np == 1) { - x2 = x[0]; - y2 = y[0]; - } else { - x1 = x[0]; - y1 = y[0]; - x2 = x[np - 1]; - y2 = y[np - 1]; - } - } - MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), NULL); - LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2)); -} -static FX_BOOL _MatrixNoScaled(const CFX_Matrix* pMatrix) { - return pMatrix->GetA() == 1.0f && pMatrix->GetB() == 0 && - pMatrix->GetC() == 0 && pMatrix->GetD() == 1.0f; -} -FX_BOOL CGdiDeviceDriver::DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pMatrix, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransform); - _Color2Argb(stroke_color, stroke_color, alpha_flag, pIccTransform); - CWin32Platform* pPlatform = - (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); - if (!(pGraphState || stroke_color == 0) && - !pPlatform->m_GdiplusExt.IsAvailable()) { - CFX_FloatRect bbox_f = pPathData->GetBoundingBox(); - if (pMatrix) { - bbox_f.Transform(pMatrix); - } - FX_RECT bbox = bbox_f.GetInnerRect(); - if (bbox.Width() <= 0) { - return DrawCosmeticLine((FX_FLOAT)(bbox.left), (FX_FLOAT)(bbox.top), - (FX_FLOAT)(bbox.left), - (FX_FLOAT)(bbox.bottom + 1), fill_color, - alpha_flag, pIccTransform, FXDIB_BLEND_NORMAL); - } else if (bbox.Height() <= 0) { - return DrawCosmeticLine((FX_FLOAT)(bbox.left), (FX_FLOAT)(bbox.top), - (FX_FLOAT)(bbox.right + 1), (FX_FLOAT)(bbox.top), - fill_color, alpha_flag, pIccTransform, - FXDIB_BLEND_NORMAL); - } - } - int fill_alpha = FXARGB_A(fill_color); - int stroke_alpha = FXARGB_A(stroke_color); - FX_BOOL bDrawAlpha = (fill_alpha > 0 && fill_alpha < 255) || - (stroke_alpha > 0 && stroke_alpha < 255 && pGraphState); - if (!pPlatform->m_GdiplusExt.IsAvailable() && bDrawAlpha) { - return FALSE; - } - if (pPlatform->m_GdiplusExt.IsAvailable()) { - if (bDrawAlpha || - ((m_DeviceClass != FXDC_PRINTER && !(fill_mode & FXFILL_FULLCOVER)) || - (pGraphState && pGraphState->m_DashCount))) { - if (!((NULL == pMatrix || _MatrixNoScaled(pMatrix)) && pGraphState && - pGraphState->m_LineWidth == 1.f && - (pPathData->GetPointCount() == 5 || - pPathData->GetPointCount() == 4) && - pPathData->IsRect())) { - if (pPlatform->m_GdiplusExt.DrawPath(m_hDC, pPathData, pMatrix, - pGraphState, fill_color, - stroke_color, fill_mode)) { - return TRUE; - } - } - } - } - int old_fill_mode = fill_mode; - fill_mode &= 3; - HPEN hPen = NULL; - HBRUSH hBrush = NULL; - if (pGraphState && stroke_alpha) { - SetMiterLimit(m_hDC, pGraphState->m_MiterLimit, NULL); - hPen = _CreatePen(pGraphState, pMatrix, stroke_color); - hPen = (HPEN)SelectObject(m_hDC, hPen); - } - if (fill_mode && fill_alpha) { - SetPolyFillMode(m_hDC, fill_mode); - hBrush = _CreateBrush(fill_color); - hBrush = (HBRUSH)SelectObject(m_hDC, hBrush); - } - if (pPathData->GetPointCount() == 2 && pGraphState && - pGraphState->m_DashCount) { - FX_FLOAT x1 = pPathData->GetPointX(0), y1 = pPathData->GetPointY(0); - if (pMatrix) { - pMatrix->Transform(x1, y1); - } - FX_FLOAT x2 = pPathData->GetPointX(1), y2 = pPathData->GetPointY(1); - if (pMatrix) { - pMatrix->Transform(x2, y2); - } - DrawLine(x1, y1, x2, y2); - } else { - _SetPathToDC(m_hDC, pPathData, pMatrix); - if (pGraphState && stroke_alpha) { - if (fill_mode && fill_alpha) { - if (old_fill_mode & FX_FILL_TEXT_MODE) { - StrokeAndFillPath(m_hDC); - } else { - FillPath(m_hDC); - _SetPathToDC(m_hDC, pPathData, pMatrix); - StrokePath(m_hDC); - } - } else { - StrokePath(m_hDC); - } - } else if (fill_mode && fill_alpha) { - FillPath(m_hDC); - } - } - if (hPen) { - hPen = (HPEN)SelectObject(m_hDC, hPen); - DeleteObject(hPen); - } - if (hBrush) { - hBrush = (HBRUSH)SelectObject(m_hDC, hBrush); - DeleteObject(hBrush); - } - return TRUE; -} -FX_BOOL CGdiDeviceDriver::FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - _Color2Argb(fill_color, fill_color, alpha_flag | (1 << 24), pIccTransform); - int alpha; - FX_COLORREF rgb; - ArgbDecode(fill_color, alpha, rgb); - if (alpha == 0) { - return TRUE; - } - if (alpha < 255) { - return FALSE; - } - HBRUSH hBrush = CreateSolidBrush(rgb); - ::FillRect(m_hDC, (RECT*)pRect, hBrush); - DeleteObject(hBrush); - return TRUE; -} -FX_BOOL CGdiDeviceDriver::SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pMatrix, - int fill_mode) { - if (pPathData->GetPointCount() == 5) { - CFX_FloatRect rectf; - if (pPathData->IsRect(pMatrix, &rectf)) { - FX_RECT rect = rectf.GetOutterRect(); - IntersectClipRect(m_hDC, rect.left, rect.top, rect.right, rect.bottom); - return TRUE; - } - } - _SetPathToDC(m_hDC, pPathData, pMatrix); - SetPolyFillMode(m_hDC, fill_mode & 3); - SelectClipPath(m_hDC, RGN_AND); - return TRUE; -} -FX_BOOL CGdiDeviceDriver::SetClip_PathStroke( - const CFX_PathData* pPathData, - const CFX_Matrix* pMatrix, - const CFX_GraphStateData* pGraphState) { - HPEN hPen = _CreatePen(pGraphState, pMatrix, 0xff000000); - hPen = (HPEN)SelectObject(m_hDC, hPen); - _SetPathToDC(m_hDC, pPathData, pMatrix); - WidenPath(m_hDC); - SetPolyFillMode(m_hDC, WINDING); - FX_BOOL ret = SelectClipPath(m_hDC, RGN_AND); - hPen = (HPEN)SelectObject(m_hDC, hPen); - DeleteObject(hPen); - return ret; -} -FX_BOOL CGdiDeviceDriver::DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_DWORD color, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - _Color2Argb(color, color, alpha_flag | (1 << 24), pIccTransform); - int a; - FX_COLORREF rgb; - ArgbDecode(color, a, rgb); - if (a == 0) { - return TRUE; - } - HPEN hPen = CreatePen(PS_SOLID, 1, rgb); - hPen = (HPEN)SelectObject(m_hDC, hPen); - MoveToEx(m_hDC, FXSYS_round(x1), FXSYS_round(y1), NULL); - LineTo(m_hDC, FXSYS_round(x2), FXSYS_round(y2)); - hPen = (HPEN)SelectObject(m_hDC, hPen); - DeleteObject(hPen); - return TRUE; -} -FX_BOOL CGdiDeviceDriver::DeleteDeviceRgn(void* pRgn) { - DeleteObject((HGDIOBJ)pRgn); - return TRUE; -} -CGdiDisplayDriver::CGdiDisplayDriver(HDC hDC) - : CGdiDeviceDriver(hDC, FXDC_DISPLAY) { - CWin32Platform* pPlatform = - (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); - if (pPlatform->m_GdiplusExt.IsAvailable()) { - m_RenderCaps |= FXRC_ALPHA_PATH | FXRC_ALPHA_IMAGE; - } -} -FX_BOOL CGdiDisplayDriver::GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform, - FX_BOOL bDEdge) { - FX_BOOL ret = FALSE; - int width = pBitmap->GetWidth(); - int height = pBitmap->GetHeight(); - HBITMAP hbmp = CreateCompatibleBitmap(m_hDC, width, height); - HDC hDCMemory = CreateCompatibleDC(m_hDC); - HBITMAP holdbmp = (HBITMAP)SelectObject(hDCMemory, hbmp); - BitBlt(hDCMemory, 0, 0, width, height, m_hDC, left, top, SRCCOPY); - SelectObject(hDCMemory, holdbmp); - BITMAPINFO bmi; - FXSYS_memset(&bmi, 0, sizeof bmi); - bmi.bmiHeader.biSize = sizeof bmi.bmiHeader; - bmi.bmiHeader.biBitCount = pBitmap->GetBPP(); - bmi.bmiHeader.biHeight = -height; - bmi.bmiHeader.biPlanes = 1; - bmi.bmiHeader.biWidth = width; - if (!CFX_GEModule::Get()->GetCodecModule() || - !CFX_GEModule::Get()->GetCodecModule()->GetIccModule()) { - pIccTransform = NULL; - } - if (pBitmap->GetBPP() > 8 && !pBitmap->IsCmykImage() && !pIccTransform) { - ret = ::GetDIBits(hDCMemory, hbmp, 0, height, pBitmap->GetBuffer(), &bmi, - DIB_RGB_COLORS) == height; - } else { - CFX_DIBitmap bitmap; - if (bitmap.Create(width, height, FXDIB_Rgb)) { - bmi.bmiHeader.biBitCount = 24; - ::GetDIBits(hDCMemory, hbmp, 0, height, bitmap.GetBuffer(), &bmi, - DIB_RGB_COLORS); - ret = pBitmap->TransferBitmap(0, 0, width, height, &bitmap, 0, 0, - pIccTransform); - } else { - ret = FALSE; - } - } - if (pBitmap->HasAlpha() && ret) { - pBitmap->LoadChannel(FXDIB_Alpha, 0xff); - } - DeleteObject(hbmp); - DeleteObject(hDCMemory); - return ret; -} -FX_BOOL CGdiDisplayDriver::SetDIBits(const CFX_DIBSource* pSource, - FX_DWORD color, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform) { - ASSERT(blend_type == FXDIB_BLEND_NORMAL); - if (pSource->IsAlphaMask()) { - int width = pSource->GetWidth(), height = pSource->GetHeight(); - int alpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? FXGETFLAG_ALPHA_FILL(alpha_flag) - : FXARGB_A(color); - if (pSource->GetBPP() != 1 || alpha != 255) { - CFX_DIBitmap background; - if (!background.Create(width, height, FXDIB_Rgb32) || - !GetDIBits(&background, left, top, NULL) || - !background.CompositeMask(0, 0, width, height, pSource, color, 0, 0, - FXDIB_BLEND_NORMAL, NULL, FALSE, alpha_flag, - pIccTransform)) { - return FALSE; - } - FX_RECT src_rect(0, 0, width, height); - return SetDIBits(&background, 0, &src_rect, left, top, FXDIB_BLEND_NORMAL, - 0, NULL); - } - FX_RECT clip_rect(left, top, left + pSrcRect->Width(), - top + pSrcRect->Height()); - return StretchDIBits(pSource, color, left - pSrcRect->left, - top - pSrcRect->top, width, height, &clip_rect, 0, - alpha_flag, pIccTransform, FXDIB_BLEND_NORMAL); - } - int width = pSrcRect->Width(), height = pSrcRect->Height(); - if (pSource->HasAlpha()) { - CFX_DIBitmap bitmap; - if (!bitmap.Create(width, height, FXDIB_Rgb) || - !GetDIBits(&bitmap, left, top, NULL) || - !bitmap.CompositeBitmap(0, 0, width, height, pSource, pSrcRect->left, - pSrcRect->top, FXDIB_BLEND_NORMAL, NULL, FALSE, - pIccTransform)) { - return FALSE; - } - FX_RECT src_rect(0, 0, width, height); - return SetDIBits(&bitmap, 0, &src_rect, left, top, FXDIB_BLEND_NORMAL, 0, - NULL); - } - CFX_DIBExtractor temp(pSource); - CFX_DIBitmap* pBitmap = temp; - if (pBitmap) { - return GDI_SetDIBits(pBitmap, pSrcRect, left, top, pIccTransform); - } - return FALSE; -} -FX_BOOL CGdiDisplayDriver::UseFoxitStretchEngine(const CFX_DIBSource* pSource, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - int render_flags, - int alpha_flag, - void* pIccTransform, - int blend_type) { - FX_RECT bitmap_clip = *pClipRect; - if (dest_width < 0) { - dest_left += dest_width; - } - if (dest_height < 0) { - dest_top += dest_height; - } - bitmap_clip.Offset(-dest_left, -dest_top); - CFX_DIBitmap* pStretched = - pSource->StretchTo(dest_width, dest_height, render_flags, &bitmap_clip); - if (!pStretched) { - return TRUE; - } - FX_RECT src_rect(0, 0, pStretched->GetWidth(), pStretched->GetHeight()); - FX_BOOL ret = - SetDIBits(pStretched, color, &src_rect, pClipRect->left, pClipRect->top, - FXDIB_BLEND_NORMAL, alpha_flag, pIccTransform); - delete pStretched; - return ret; -} -FX_BOOL CGdiDisplayDriver::StretchDIBits(const CFX_DIBSource* pSource, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type) { - ASSERT(pSource && pClipRect); - if (flags || dest_width > 10000 || dest_width < -10000 || - dest_height > 10000 || dest_height < -10000) { - return UseFoxitStretchEngine(pSource, color, dest_left, dest_top, - dest_width, dest_height, pClipRect, flags, - alpha_flag, pIccTransform, blend_type); - } - if (pSource->IsAlphaMask()) { - FX_RECT image_rect; - image_rect.left = dest_width > 0 ? dest_left : dest_left + dest_width; - image_rect.right = dest_width > 0 ? dest_left + dest_width : dest_left; - image_rect.top = dest_height > 0 ? dest_top : dest_top + dest_height; - image_rect.bottom = dest_height > 0 ? dest_top + dest_height : dest_top; - FX_RECT clip_rect = image_rect; - clip_rect.Intersect(*pClipRect); - clip_rect.Offset(-image_rect.left, -image_rect.top); - int clip_width = clip_rect.Width(), clip_height = clip_rect.Height(); - CFX_DIBitmap* pStretched = - pSource->StretchTo(dest_width, dest_height, flags, &clip_rect); - if (!pStretched) { - return TRUE; - } - CFX_DIBitmap background; - if (!background.Create(clip_width, clip_height, FXDIB_Rgb32) || - !GetDIBits(&background, image_rect.left + clip_rect.left, - image_rect.top + clip_rect.top, NULL) || - !background.CompositeMask(0, 0, clip_width, clip_height, pStretched, - color, 0, 0, FXDIB_BLEND_NORMAL, NULL, FALSE, - alpha_flag, pIccTransform)) { - delete pStretched; - return FALSE; - } - FX_RECT src_rect(0, 0, clip_width, clip_height); - FX_BOOL ret = - SetDIBits(&background, 0, &src_rect, image_rect.left + clip_rect.left, - image_rect.top + clip_rect.top, FXDIB_BLEND_NORMAL, 0, NULL); - delete pStretched; - return ret; - } - if (pSource->HasAlpha()) { - CWin32Platform* pPlatform = - (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); - if (pPlatform->m_GdiplusExt.IsAvailable() && !pIccTransform && - !pSource->IsCmykImage()) { - CFX_DIBExtractor temp(pSource); - CFX_DIBitmap* pBitmap = temp; - if (!pBitmap) { - return FALSE; - } - return pPlatform->m_GdiplusExt.StretchDIBits( - m_hDC, pBitmap, dest_left, dest_top, dest_width, dest_height, - pClipRect, flags); - } - return UseFoxitStretchEngine(pSource, color, dest_left, dest_top, - dest_width, dest_height, pClipRect, flags, - alpha_flag, pIccTransform, blend_type); - } - CFX_DIBExtractor temp(pSource); - CFX_DIBitmap* pBitmap = temp; - if (pBitmap) { - return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width, - dest_height, flags, pIccTransform); - } - return FALSE; -} -#define GET_PS_FEATURESETTING 4121 -#define FEATURESETTING_PSLEVEL 2 -int GetPSLevel(HDC hDC) { - int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); - if (device_type != DT_RASPRINTER) { - return 0; - } - FX_DWORD esc = GET_PS_FEATURESETTING; - if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL)) { - int param = FEATURESETTING_PSLEVEL; - if (ExtEscape(hDC, GET_PS_FEATURESETTING, sizeof(int), (char*)¶m, - sizeof(int), (char*)¶m) > 0) { - return param; - } - } - esc = POSTSCRIPT_IDENTIFY; - if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL) == 0) { - esc = POSTSCRIPT_DATA; - if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL)) { - return 2; - } - return 0; - } - esc = PSIDENT_GDICENTRIC; - if (ExtEscape(hDC, POSTSCRIPT_IDENTIFY, sizeof(FX_DWORD), (char*)&esc, 0, - NULL) <= 0) { - return 2; - } - esc = GET_PS_FEATURESETTING; - if (ExtEscape(hDC, QUERYESCSUPPORT, sizeof esc, (char*)&esc, 0, NULL)) { - int param = FEATURESETTING_PSLEVEL; - if (ExtEscape(hDC, GET_PS_FEATURESETTING, sizeof(int), (char*)¶m, - sizeof(int), (char*)¶m) > 0) { - return param; - } - } - return 2; -} -int CFX_WindowsDevice::m_psLevel = 2; -CFX_WindowsDevice::CFX_WindowsDevice(HDC hDC, - FX_BOOL bCmykOutput, - FX_BOOL bForcePSOutput, - int psLevel) { - m_bForcePSOutput = bForcePSOutput; - m_psLevel = psLevel; - if (bForcePSOutput) { - IFX_RenderDeviceDriver* pDriver = new CPSPrinterDriver; - ((CPSPrinterDriver*)pDriver)->Init(hDC, psLevel, bCmykOutput); - SetDeviceDriver(pDriver); - return; - } - SetDeviceDriver(CreateDriver(hDC, bCmykOutput)); -} -HDC CFX_WindowsDevice::GetDC() const { - IFX_RenderDeviceDriver* pRDD = GetDeviceDriver(); - if (!pRDD) { - return NULL; - } - return (HDC)pRDD->GetPlatformSurface(); -} -IFX_RenderDeviceDriver* CFX_WindowsDevice::CreateDriver(HDC hDC, - FX_BOOL bCmykOutput) { - int device_type = ::GetDeviceCaps(hDC, TECHNOLOGY); - int obj_type = ::GetObjectType(hDC); - int device_class; - if (device_type == DT_RASPRINTER || device_type == DT_PLOTTER || - obj_type == OBJ_ENHMETADC) { - device_class = FXDC_PRINTER; - } else { - device_class = FXDC_DISPLAY; - } - if (device_class == FXDC_PRINTER) { - return new CGdiPrinterDriver(hDC); - } - return new CGdiDisplayDriver(hDC); -} -CFX_WinBitmapDevice::CFX_WinBitmapDevice(int width, - int height, - FXDIB_Format format) { - BITMAPINFOHEADER bmih; - FXSYS_memset(&bmih, 0, sizeof(BITMAPINFOHEADER)); - bmih.biSize = sizeof(BITMAPINFOHEADER); - bmih.biBitCount = format & 0xff; - bmih.biHeight = -height; - bmih.biPlanes = 1; - bmih.biWidth = width; - uint8_t* pBuffer; - m_hBitmap = CreateDIBSection(NULL, (BITMAPINFO*)&bmih, DIB_RGB_COLORS, - (void**)&pBuffer, NULL, 0); - if (!m_hBitmap) { - return; - } - CFX_DIBitmap* pBitmap = new CFX_DIBitmap; - pBitmap->Create(width, height, format, pBuffer); - SetBitmap(pBitmap); - m_hDC = ::CreateCompatibleDC(NULL); - m_hOldBitmap = (HBITMAP)SelectObject(m_hDC, m_hBitmap); - IFX_RenderDeviceDriver* pDriver = new CGdiDisplayDriver(m_hDC); - SetDeviceDriver(pDriver); -} -CFX_WinBitmapDevice::~CFX_WinBitmapDevice() { - if (m_hDC) { - SelectObject(m_hDC, m_hOldBitmap); - DeleteDC(m_hDC); - } - if (m_hBitmap) { - DeleteObject(m_hBitmap); - } - delete GetBitmap(); -} - -#endif // _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ diff --git a/core/src/fxge/win32/fx_win32_dib.cpp b/core/src/fxge/win32/fx_win32_dib.cpp deleted file mode 100644 index d3f8b60c08..0000000000 --- a/core/src/fxge/win32/fx_win32_dib.cpp +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ -#include - -#include "core/include/fxge/fx_ge_win32.h" -#include "core/src/fxge/win32/win32_int.h" - -CFX_ByteString CFX_WindowsDIB::GetBitmapInfo(const CFX_DIBitmap* pBitmap) { - CFX_ByteString result; - int len = sizeof(BITMAPINFOHEADER); - if (pBitmap->GetBPP() == 1 || pBitmap->GetBPP() == 8) { - len += sizeof(DWORD) * (int)(1 << pBitmap->GetBPP()); - } - BITMAPINFOHEADER* pbmih = (BITMAPINFOHEADER*)result.GetBuffer(len); - FXSYS_memset(pbmih, 0, sizeof(BITMAPINFOHEADER)); - pbmih->biSize = sizeof(BITMAPINFOHEADER); - pbmih->biBitCount = pBitmap->GetBPP(); - pbmih->biCompression = BI_RGB; - pbmih->biHeight = -(int)pBitmap->GetHeight(); - pbmih->biPlanes = 1; - pbmih->biWidth = pBitmap->GetWidth(); - if (pBitmap->GetBPP() == 8) { - FX_DWORD* pPalette = (FX_DWORD*)(pbmih + 1); - if (pBitmap->GetPalette()) { - for (int i = 0; i < 256; i++) { - pPalette[i] = pBitmap->GetPalette()[i]; - } - } else { - for (int i = 0; i < 256; i++) { - pPalette[i] = i * 0x010101; - } - } - } - if (pBitmap->GetBPP() == 1) { - FX_DWORD* pPalette = (FX_DWORD*)(pbmih + 1); - if (pBitmap->GetPalette()) { - pPalette[0] = pBitmap->GetPalette()[0]; - pPalette[1] = pBitmap->GetPalette()[1]; - } else { - pPalette[0] = 0; - pPalette[1] = 0xffffff; - } - } - result.ReleaseBuffer(len); - return result; -} -CFX_DIBitmap* _FX_WindowsDIB_LoadFromBuf(BITMAPINFO* pbmi, - LPVOID pData, - FX_BOOL bAlpha) { - int width = pbmi->bmiHeader.biWidth; - int height = pbmi->bmiHeader.biHeight; - BOOL bBottomUp = TRUE; - if (height < 0) { - height = -height; - bBottomUp = FALSE; - } - int pitch = (width * pbmi->bmiHeader.biBitCount + 31) / 32 * 4; - CFX_DIBitmap* pBitmap = new CFX_DIBitmap; - FXDIB_Format format = bAlpha - ? (FXDIB_Format)(pbmi->bmiHeader.biBitCount + 0x200) - : (FXDIB_Format)pbmi->bmiHeader.biBitCount; - FX_BOOL ret = pBitmap->Create(width, height, format); - if (!ret) { - delete pBitmap; - return NULL; - } - FXSYS_memcpy(pBitmap->GetBuffer(), pData, pitch * height); - if (bBottomUp) { - uint8_t* temp_buf = FX_Alloc(uint8_t, pitch); - int top = 0, bottom = height - 1; - while (top < bottom) { - FXSYS_memcpy(temp_buf, pBitmap->GetBuffer() + top * pitch, pitch); - FXSYS_memcpy(pBitmap->GetBuffer() + top * pitch, - pBitmap->GetBuffer() + bottom * pitch, pitch); - FXSYS_memcpy(pBitmap->GetBuffer() + bottom * pitch, temp_buf, pitch); - top++; - bottom--; - } - FX_Free(temp_buf); - temp_buf = NULL; - } - if (pbmi->bmiHeader.biBitCount == 1) { - for (int i = 0; i < 2; i++) { - pBitmap->SetPaletteEntry(i, ((FX_DWORD*)pbmi->bmiColors)[i] | 0xff000000); - } - } else if (pbmi->bmiHeader.biBitCount == 8) { - for (int i = 0; i < 256; i++) { - pBitmap->SetPaletteEntry(i, ((FX_DWORD*)pbmi->bmiColors)[i] | 0xff000000); - } - } - return pBitmap; -} -CFX_DIBitmap* CFX_WindowsDIB::LoadFromBuf(BITMAPINFO* pbmi, LPVOID pData) { - return _FX_WindowsDIB_LoadFromBuf(pbmi, pData, FALSE); -} -HBITMAP CFX_WindowsDIB::GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC) { - CFX_ByteString info = GetBitmapInfo(pBitmap); - HBITMAP hBitmap = NULL; - hBitmap = CreateDIBitmap(hDC, (BITMAPINFOHEADER*)info.c_str(), CBM_INIT, - pBitmap->GetBuffer(), (BITMAPINFO*)info.c_str(), - DIB_RGB_COLORS); - return hBitmap; -} -void GetBitmapSize(HBITMAP hBitmap, int& w, int& h) { - BITMAP bmp; - GetObject(hBitmap, sizeof bmp, &bmp); - w = bmp.bmWidth; - h = bmp.bmHeight; -} -CFX_DIBitmap* CFX_WindowsDIB::LoadFromFile(const FX_WCHAR* filename) { - CWin32Platform* pPlatform = - (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); - if (pPlatform->m_GdiplusExt.IsAvailable()) { - WINDIB_Open_Args_ args; - args.flags = WINDIB_OPEN_PATHNAME; - args.path_name = filename; - return pPlatform->m_GdiplusExt.LoadDIBitmap(args); - } - HBITMAP hBitmap = (HBITMAP)LoadImageW(NULL, (wchar_t*)filename, IMAGE_BITMAP, - 0, 0, LR_LOADFROMFILE); - if (!hBitmap) { - return NULL; - } - HDC hDC = CreateCompatibleDC(NULL); - int width, height; - GetBitmapSize(hBitmap, width, height); - CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; - if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) { - delete pDIBitmap; - DeleteDC(hDC); - return NULL; - } - CFX_ByteString info = GetBitmapInfo(pDIBitmap); - int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), - (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); - if (!ret) { - delete pDIBitmap; - pDIBitmap = NULL; - } - DeleteDC(hDC); - return pDIBitmap; -} -CFX_DIBitmap* CFX_WindowsDIB::LoadDIBitmap(WINDIB_Open_Args_ args) { - CWin32Platform* pPlatform = - (CWin32Platform*)CFX_GEModule::Get()->GetPlatformData(); - if (pPlatform->m_GdiplusExt.IsAvailable()) { - return pPlatform->m_GdiplusExt.LoadDIBitmap(args); - } - if (args.flags == WINDIB_OPEN_MEMORY) { - return NULL; - } - HBITMAP hBitmap = (HBITMAP)LoadImageW(NULL, (wchar_t*)args.path_name, - IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); - if (!hBitmap) { - return NULL; - } - HDC hDC = CreateCompatibleDC(NULL); - int width, height; - GetBitmapSize(hBitmap, width, height); - CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; - if (!pDIBitmap->Create(width, height, FXDIB_Rgb)) { - delete pDIBitmap; - DeleteDC(hDC); - return NULL; - } - CFX_ByteString info = GetBitmapInfo(pDIBitmap); - int ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), - (BITMAPINFO*)info.c_str(), DIB_RGB_COLORS); - if (!ret) { - delete pDIBitmap; - pDIBitmap = NULL; - } - DeleteDC(hDC); - return pDIBitmap; -} -CFX_DIBitmap* CFX_WindowsDIB::LoadFromDDB(HDC hDC, - HBITMAP hBitmap, - FX_DWORD* pPalette, - FX_DWORD palsize) { - FX_BOOL bCreatedDC = !hDC; - if (bCreatedDC) { - hDC = CreateCompatibleDC(NULL); - } - BITMAPINFOHEADER bmih; - FXSYS_memset(&bmih, 0, sizeof bmih); - bmih.biSize = sizeof bmih; - GetDIBits(hDC, hBitmap, 0, 0, NULL, (BITMAPINFO*)&bmih, DIB_RGB_COLORS); - int width = bmih.biWidth; - int height = abs(bmih.biHeight); - bmih.biHeight = -height; - bmih.biCompression = BI_RGB; - CFX_DIBitmap* pDIBitmap = new CFX_DIBitmap; - int ret = 0; - if (bmih.biBitCount == 1 || bmih.biBitCount == 8) { - int size = sizeof(BITMAPINFOHEADER) + 8; - if (bmih.biBitCount == 8) { - size += sizeof(FX_DWORD) * 254; - } - BITMAPINFO* pbmih = (BITMAPINFO*)FX_Alloc(uint8_t, size); - pbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - pbmih->bmiHeader.biBitCount = bmih.biBitCount; - pbmih->bmiHeader.biCompression = BI_RGB; - pbmih->bmiHeader.biHeight = -height; - pbmih->bmiHeader.biPlanes = 1; - pbmih->bmiHeader.biWidth = bmih.biWidth; - if (!pDIBitmap->Create(bmih.biWidth, height, bmih.biBitCount == 1 - ? FXDIB_1bppRgb - : FXDIB_8bppRgb)) { - delete pDIBitmap; - FX_Free(pbmih); - if (bCreatedDC) { - DeleteDC(hDC); - } - return NULL; - } - ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), - (BITMAPINFO*)pbmih, DIB_RGB_COLORS); - FX_Free(pbmih); - pbmih = NULL; - pDIBitmap->CopyPalette(pPalette, palsize); - } else { - if (bmih.biBitCount <= 24) { - bmih.biBitCount = 24; - } else { - bmih.biBitCount = 32; - } - if (!pDIBitmap->Create(bmih.biWidth, height, - bmih.biBitCount == 24 ? FXDIB_Rgb : FXDIB_Rgb32)) { - delete pDIBitmap; - if (bCreatedDC) { - DeleteDC(hDC); - } - return NULL; - } - ret = GetDIBits(hDC, hBitmap, 0, height, pDIBitmap->GetBuffer(), - (BITMAPINFO*)&bmih, DIB_RGB_COLORS); - if (ret != 0 && bmih.biBitCount == 32) { - int pitch = pDIBitmap->GetPitch(); - for (int row = 0; row < height; row++) { - uint8_t* dest_scan = (uint8_t*)(pDIBitmap->GetBuffer() + row * pitch); - for (int col = 0; col < width; col++) { - dest_scan[3] = 255; - dest_scan += 4; - } - } - } - } - if (ret == 0) { - delete pDIBitmap; - pDIBitmap = NULL; - } - if (bCreatedDC) { - DeleteDC(hDC); - } - return pDIBitmap; -} -CFX_WindowsDIB::CFX_WindowsDIB(HDC hDC, int width, int height) { - Create(width, height, FXDIB_Rgb, (uint8_t*)1); - BITMAPINFOHEADER bmih; - FXSYS_memset(&bmih, 0, sizeof bmih); - bmih.biSize = sizeof bmih; - bmih.biBitCount = 24; - bmih.biHeight = -height; - bmih.biPlanes = 1; - bmih.biWidth = width; - m_hBitmap = CreateDIBSection(hDC, (BITMAPINFO*)&bmih, DIB_RGB_COLORS, - (LPVOID*)&m_pBuffer, NULL, 0); - m_hMemDC = CreateCompatibleDC(hDC); - m_hOldBitmap = (HBITMAP)SelectObject(m_hMemDC, m_hBitmap); -} -CFX_WindowsDIB::~CFX_WindowsDIB() { - SelectObject(m_hMemDC, m_hOldBitmap); - DeleteDC(m_hMemDC); - DeleteObject(m_hBitmap); -} -void CFX_WindowsDIB::LoadFromDevice(HDC hDC, int left, int top) { - ::BitBlt(m_hMemDC, 0, 0, m_Width, m_Height, hDC, left, top, SRCCOPY); -} -void CFX_WindowsDIB::SetToDevice(HDC hDC, int left, int top) { - ::BitBlt(hDC, left, top, m_Width, m_Height, m_hMemDC, 0, 0, SRCCOPY); -} -#endif diff --git a/core/src/fxge/win32/fx_win32_dwrite.cpp b/core/src/fxge/win32/fx_win32_dwrite.cpp deleted file mode 100644 index 55b9bff2d1..0000000000 --- a/core/src/fxge/win32/fx_win32_dwrite.cpp +++ /dev/null @@ -1,410 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ -#include - -#include "core/include/fxge/fx_ge_win32.h" -#include "core/src/fxge/win32/dwrite_int.h" - -typedef HRESULT(__stdcall* FuncType_DWriteCreateFactory)( - __in DWRITE_FACTORY_TYPE, - __in REFIID, - __out IUnknown**); -template -inline void SafeRelease(InterfaceType** currentObject) { - if (*currentObject) { - (*currentObject)->Release(); - *currentObject = NULL; - } -} -template -inline InterfaceType* SafeAcquire(InterfaceType* newObject) { - if (newObject) { - newObject->AddRef(); - } - return newObject; -} -class CDwFontFileStream final : public IDWriteFontFileStream { - public: - explicit CDwFontFileStream(void const* fontFileReferenceKey, - UINT32 fontFileReferenceKeySize); - virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, - void** ppvObject); - virtual ULONG STDMETHODCALLTYPE AddRef(); - virtual ULONG STDMETHODCALLTYPE Release(); - virtual HRESULT STDMETHODCALLTYPE - ReadFileFragment(void const** fragmentStart, - UINT64 fileOffset, - UINT64 fragmentSize, - OUT void** fragmentContext); - virtual void STDMETHODCALLTYPE ReleaseFileFragment(void* fragmentContext); - virtual HRESULT STDMETHODCALLTYPE GetFileSize(OUT UINT64* fileSize); - virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(OUT UINT64* lastWriteTime); - bool IsInitialized() { return resourcePtr_ != NULL; } - - private: - ULONG refCount_; - void const* resourcePtr_; - DWORD resourceSize_; -}; -class CDwFontFileLoader final : public IDWriteFontFileLoader { - public: - virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, - void** ppvObject); - virtual ULONG STDMETHODCALLTYPE AddRef(); - virtual ULONG STDMETHODCALLTYPE Release(); - virtual HRESULT STDMETHODCALLTYPE - CreateStreamFromKey(void const* fontFileReferenceKey, - UINT32 fontFileReferenceKeySize, - OUT IDWriteFontFileStream** fontFileStream); - - static IDWriteFontFileLoader* GetLoader() { - if (!instance_) { - instance_ = new CDwFontFileLoader(); - } - return instance_; - } - static bool IsLoaderInitialized() { return instance_ != NULL; } - - private: - CDwFontFileLoader(); - ULONG refCount_; - static IDWriteFontFileLoader* instance_; -}; -class CDwFontContext { - public: - CDwFontContext(IDWriteFactory* dwriteFactory); - ~CDwFontContext(); - HRESULT Initialize(); - - private: - CDwFontContext(CDwFontContext const&); - void operator=(CDwFontContext const&); - HRESULT hr_; - IDWriteFactory* dwriteFactory_; -}; -class CDwGdiTextRenderer { - public: - CDwGdiTextRenderer(CFX_DIBitmap* pBitmap, - IDWriteBitmapRenderTarget* bitmapRenderTarget, - IDWriteRenderingParams* renderingParams); - ~CDwGdiTextRenderer(); - HRESULT STDMETHODCALLTYPE DrawGlyphRun(const FX_RECT& text_bbox, - __in_opt CFX_ClipRgn* pClipRgn, - __in_opt DWRITE_MATRIX const* pMatrix, - FLOAT baselineOriginX, - FLOAT baselineOriginY, - DWRITE_MEASURING_MODE measuringMode, - __in DWRITE_GLYPH_RUN const* glyphRun, - const COLORREF& textColor); - - private: - CFX_DIBitmap* pBitmap_; - IDWriteBitmapRenderTarget* pRenderTarget_; - IDWriteRenderingParams* pRenderingParams_; -}; -CDWriteExt::CDWriteExt() { - m_hModule = NULL; - m_pDWriteFactory = NULL; - m_pDwFontContext = NULL; - m_pDwTextRenderer = NULL; -} -void CDWriteExt::Load() {} -void CDWriteExt::Unload() { - if (m_pDwFontContext) { - delete (CDwFontContext*)m_pDwFontContext; - m_pDwFontContext = NULL; - } - SafeRelease((IDWriteFactory**)&m_pDWriteFactory); -} -CDWriteExt::~CDWriteExt() { - Unload(); -} -LPVOID CDWriteExt::DwCreateFontFaceFromStream(uint8_t* pData, - FX_DWORD size, - int simulation_style) { - IDWriteFactory* pDwFactory = (IDWriteFactory*)m_pDWriteFactory; - IDWriteFontFile* pDwFontFile = NULL; - IDWriteFontFace* pDwFontFace = NULL; - BOOL isSupportedFontType = FALSE; - DWRITE_FONT_FILE_TYPE fontFileType; - DWRITE_FONT_FACE_TYPE fontFaceType; - UINT32 numberOfFaces; - DWRITE_FONT_SIMULATIONS fontStyle = - (DWRITE_FONT_SIMULATIONS)(simulation_style & 3); - HRESULT hr = S_OK; - hr = pDwFactory->CreateCustomFontFileReference( - (void const*)pData, (UINT32)size, CDwFontFileLoader::GetLoader(), - &pDwFontFile); - if (FAILED(hr)) { - goto failed; - } - hr = pDwFontFile->Analyze(&isSupportedFontType, &fontFileType, &fontFaceType, - &numberOfFaces); - if (FAILED(hr) || !isSupportedFontType || - fontFaceType == DWRITE_FONT_FACE_TYPE_UNKNOWN) { - goto failed; - } - hr = pDwFactory->CreateFontFace(fontFaceType, 1, &pDwFontFile, 0, fontStyle, - &pDwFontFace); - if (FAILED(hr)) { - goto failed; - } - SafeRelease(&pDwFontFile); - return pDwFontFace; -failed: - SafeRelease(&pDwFontFile); - return NULL; -} -FX_BOOL CDWriteExt::DwCreateRenderingTarget(CFX_DIBitmap* pBitmap, - void** renderTarget) { - if (pBitmap->GetFormat() > FXDIB_Argb) { - return FALSE; - } - IDWriteFactory* pDwFactory = (IDWriteFactory*)m_pDWriteFactory; - IDWriteGdiInterop* pGdiInterop = NULL; - IDWriteBitmapRenderTarget* pBitmapRenderTarget = NULL; - IDWriteRenderingParams* pRenderingParams = NULL; - HRESULT hr = S_OK; - hr = pDwFactory->GetGdiInterop(&pGdiInterop); - if (FAILED(hr)) { - goto failed; - } - hr = pGdiInterop->CreateBitmapRenderTarget( - NULL, pBitmap->GetWidth(), pBitmap->GetHeight(), &pBitmapRenderTarget); - if (FAILED(hr)) { - goto failed; - } - hr = pDwFactory->CreateCustomRenderingParams( - 1.0f, 0.0f, 1.0f, DWRITE_PIXEL_GEOMETRY_RGB, - DWRITE_RENDERING_MODE_DEFAULT, &pRenderingParams); - if (FAILED(hr)) { - goto failed; - } - hr = pBitmapRenderTarget->SetPixelsPerDip(1.0f); - if (FAILED(hr)) { - goto failed; - } - *(CDwGdiTextRenderer**)renderTarget = - new CDwGdiTextRenderer(pBitmap, pBitmapRenderTarget, pRenderingParams); - SafeRelease(&pGdiInterop); - SafeRelease(&pBitmapRenderTarget); - SafeRelease(&pRenderingParams); - return TRUE; -failed: - SafeRelease(&pGdiInterop); - SafeRelease(&pBitmapRenderTarget); - SafeRelease(&pRenderingParams); - return FALSE; -} -FX_BOOL CDWriteExt::DwRendingString(void* renderTarget, - CFX_ClipRgn* pClipRgn, - FX_RECT& stringRect, - CFX_Matrix* pMatrix, - void* font, - FX_FLOAT font_size, - FX_ARGB text_color, - int glyph_count, - unsigned short* glyph_indices, - FX_FLOAT baselineOriginX, - FX_FLOAT baselineOriginY, - void* glyph_offsets, - FX_FLOAT* glyph_advances) { - if (!renderTarget) { - return TRUE; - } - CDwGdiTextRenderer* pTextRenderer = (CDwGdiTextRenderer*)renderTarget; - DWRITE_MATRIX transform; - DWRITE_GLYPH_RUN glyphRun; - HRESULT hr = S_OK; - if (pMatrix) { - transform.m11 = pMatrix->a; - transform.m12 = pMatrix->b; - transform.m21 = pMatrix->c; - transform.m22 = pMatrix->d; - transform.dx = pMatrix->e; - transform.dy = pMatrix->f; - } - glyphRun.fontFace = (IDWriteFontFace*)font; - glyphRun.fontEmSize = font_size; - glyphRun.glyphCount = glyph_count; - glyphRun.glyphIndices = glyph_indices; - glyphRun.glyphAdvances = glyph_advances; - glyphRun.glyphOffsets = (DWRITE_GLYPH_OFFSET*)glyph_offsets; - glyphRun.isSideways = FALSE; - glyphRun.bidiLevel = 0; - hr = pTextRenderer->DrawGlyphRun( - stringRect, pClipRgn, pMatrix ? &transform : NULL, baselineOriginX, - baselineOriginY, DWRITE_MEASURING_MODE_NATURAL, &glyphRun, - RGB(FXARGB_R(text_color), FXARGB_G(text_color), FXARGB_B(text_color))); - return SUCCEEDED(hr); -} -void CDWriteExt::DwDeleteRenderingTarget(void* renderTarget) { - delete (CDwGdiTextRenderer*)renderTarget; -} -void CDWriteExt::DwDeleteFont(void* pFont) { - if (pFont) { - SafeRelease((IDWriteFontFace**)&pFont); - } -} -CDwFontFileStream::CDwFontFileStream(void const* fontFileReferenceKey, - UINT32 fontFileReferenceKeySize) { - refCount_ = 0; - resourcePtr_ = fontFileReferenceKey; - resourceSize_ = fontFileReferenceKeySize; -} -HRESULT STDMETHODCALLTYPE CDwFontFileStream::QueryInterface(REFIID iid, - void** ppvObject) { - if (iid == IID_IUnknown || iid == __uuidof(IDWriteFontFileStream)) { - *ppvObject = this; - AddRef(); - return S_OK; - } - *ppvObject = NULL; - return E_NOINTERFACE; -} -ULONG STDMETHODCALLTYPE CDwFontFileStream::AddRef() { - return InterlockedIncrement((long*)(&refCount_)); -} -ULONG STDMETHODCALLTYPE CDwFontFileStream::Release() { - ULONG newCount = InterlockedDecrement((long*)(&refCount_)); - if (newCount == 0) { - delete this; - } - return newCount; -} -HRESULT STDMETHODCALLTYPE -CDwFontFileStream::ReadFileFragment(void const** fragmentStart, - UINT64 fileOffset, - UINT64 fragmentSize, - OUT void** fragmentContext) { - if (fileOffset <= resourceSize_ && - fragmentSize <= resourceSize_ - fileOffset) { - *fragmentStart = static_cast(resourcePtr_) + - static_cast(fileOffset); - *fragmentContext = NULL; - return S_OK; - } - *fragmentStart = NULL; - *fragmentContext = NULL; - return E_FAIL; -} -void STDMETHODCALLTYPE -CDwFontFileStream::ReleaseFileFragment(void* fragmentContext) {} -HRESULT STDMETHODCALLTYPE CDwFontFileStream::GetFileSize(OUT UINT64* fileSize) { - *fileSize = resourceSize_; - return S_OK; -} -HRESULT STDMETHODCALLTYPE -CDwFontFileStream::GetLastWriteTime(OUT UINT64* lastWriteTime) { - *lastWriteTime = 0; - return E_NOTIMPL; -} -IDWriteFontFileLoader* CDwFontFileLoader::instance_ = NULL; -CDwFontFileLoader::CDwFontFileLoader() : refCount_(0) {} -HRESULT STDMETHODCALLTYPE CDwFontFileLoader::QueryInterface(REFIID iid, - void** ppvObject) { - if (iid == IID_IUnknown || iid == __uuidof(IDWriteFontFileLoader)) { - *ppvObject = this; - AddRef(); - return S_OK; - } - *ppvObject = NULL; - return E_NOINTERFACE; -} -ULONG STDMETHODCALLTYPE CDwFontFileLoader::AddRef() { - return InterlockedIncrement((long*)(&refCount_)); -} -ULONG STDMETHODCALLTYPE CDwFontFileLoader::Release() { - ULONG newCount = InterlockedDecrement((long*)(&refCount_)); - if (newCount == 0) { - instance_ = NULL; - delete this; - } - return newCount; -} -HRESULT STDMETHODCALLTYPE CDwFontFileLoader::CreateStreamFromKey( - void const* fontFileReferenceKey, - UINT32 fontFileReferenceKeySize, - OUT IDWriteFontFileStream** fontFileStream) { - *fontFileStream = NULL; - CDwFontFileStream* stream = - new CDwFontFileStream(fontFileReferenceKey, fontFileReferenceKeySize); - if (!stream->IsInitialized()) { - delete stream; - return E_FAIL; - } - *fontFileStream = SafeAcquire(stream); - return S_OK; -} -CDwFontContext::CDwFontContext(IDWriteFactory* dwriteFactory) - : hr_(S_FALSE), dwriteFactory_(SafeAcquire(dwriteFactory)) {} -CDwFontContext::~CDwFontContext() { - if (dwriteFactory_ && hr_ == S_OK) { - dwriteFactory_->UnregisterFontFileLoader(CDwFontFileLoader::GetLoader()); - } - SafeRelease(&dwriteFactory_); -} -HRESULT CDwFontContext::Initialize() { - if (hr_ == S_FALSE) { - return hr_ = dwriteFactory_->RegisterFontFileLoader( - CDwFontFileLoader::GetLoader()); - } - return hr_; -} -CDwGdiTextRenderer::CDwGdiTextRenderer( - CFX_DIBitmap* pBitmap, - IDWriteBitmapRenderTarget* bitmapRenderTarget, - IDWriteRenderingParams* renderingParams) - : pBitmap_(pBitmap), - pRenderTarget_(SafeAcquire(bitmapRenderTarget)), - pRenderingParams_(SafeAcquire(renderingParams)) {} -CDwGdiTextRenderer::~CDwGdiTextRenderer() { - SafeRelease(&pRenderTarget_); - SafeRelease(&pRenderingParams_); -} -STDMETHODIMP CDwGdiTextRenderer::DrawGlyphRun( - const FX_RECT& text_bbox, - __in_opt CFX_ClipRgn* pClipRgn, - __in_opt DWRITE_MATRIX const* pMatrix, - FLOAT baselineOriginX, - FLOAT baselineOriginY, - DWRITE_MEASURING_MODE measuringMode, - __in DWRITE_GLYPH_RUN const* glyphRun, - const COLORREF& textColor) { - HRESULT hr = S_OK; - if (pMatrix) { - hr = pRenderTarget_->SetCurrentTransform(pMatrix); - if (FAILED(hr)) { - return hr; - } - } - HDC hDC = pRenderTarget_->GetMemoryDC(); - HBITMAP hBitmap = (HBITMAP)::GetCurrentObject(hDC, OBJ_BITMAP); - BITMAP bitmap; - GetObject(hBitmap, sizeof bitmap, &bitmap); - CFX_DIBitmap dib; - dib.Create(bitmap.bmWidth, bitmap.bmHeight, - bitmap.bmBitsPixel == 24 ? FXDIB_Rgb : FXDIB_Rgb32, - (uint8_t*)bitmap.bmBits); - dib.CompositeBitmap(text_bbox.left, text_bbox.top, text_bbox.Width(), - text_bbox.Height(), pBitmap_, text_bbox.left, - text_bbox.top, FXDIB_BLEND_NORMAL, NULL); - hr = pRenderTarget_->DrawGlyphRun(baselineOriginX, baselineOriginY, - measuringMode, glyphRun, pRenderingParams_, - textColor); - if (FAILED(hr)) { - return hr; - } - pBitmap_->CompositeBitmap(text_bbox.left, text_bbox.top, text_bbox.Width(), - text_bbox.Height(), &dib, text_bbox.left, - text_bbox.top, FXDIB_BLEND_NORMAL, pClipRgn); - return hr; -} -#endif diff --git a/core/src/fxge/win32/fx_win32_gdipext.cpp b/core/src/fxge/win32/fx_win32_gdipext.cpp deleted file mode 100644 index aba67dacfe..0000000000 --- a/core/src/fxge/win32/fx_win32_gdipext.cpp +++ /dev/null @@ -1,1518 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ -#include -#include - -namespace Gdiplus { -using std::min; -using std::max; -} // namespace Gdiplus - -#include - -#include "core/include/fxge/fx_ge_win32.h" -#include "core/src/fxge/win32/win32_int.h" - -using namespace Gdiplus; // NOLINT -using namespace Gdiplus::DllExports; // NOLINT - -#define GdiFillType2Gdip(fill_type) \ - (fill_type == ALTERNATE ? FillModeAlternate : FillModeWinding) - -enum { - FuncId_GdipCreatePath2, - FuncId_GdipSetPenDashStyle, - FuncId_GdipSetPenDashArray, - FuncId_GdipSetPenDashCap197819, - FuncId_GdipSetPenLineJoin, - FuncId_GdipSetPenWidth, - FuncId_GdipCreateFromHDC, - FuncId_GdipSetPageUnit, - FuncId_GdipSetSmoothingMode, - FuncId_GdipCreateSolidFill, - FuncId_GdipFillPath, - FuncId_GdipDeleteBrush, - FuncId_GdipCreatePen1, - FuncId_GdipSetPenMiterLimit, - FuncId_GdipDrawPath, - FuncId_GdipDeletePen, - FuncId_GdipDeletePath, - FuncId_GdipDeleteGraphics, - FuncId_GdipCreateBitmapFromFileICM, - FuncId_GdipCreateBitmapFromStreamICM, - FuncId_GdipGetImageHeight, - FuncId_GdipGetImageWidth, - FuncId_GdipGetImagePixelFormat, - FuncId_GdipBitmapLockBits, - FuncId_GdipGetImagePaletteSize, - FuncId_GdipGetImagePalette, - FuncId_GdipBitmapUnlockBits, - FuncId_GdipDisposeImage, - FuncId_GdipFillRectangle, - FuncId_GdipCreateBitmapFromScan0, - FuncId_GdipSetImagePalette, - FuncId_GdipSetInterpolationMode, - FuncId_GdipDrawImagePointsI, - FuncId_GdipCreateBitmapFromGdiDib, - FuncId_GdiplusStartup, - FuncId_GdipDrawLineI, - FuncId_GdipResetClip, - FuncId_GdipCreatePath, - FuncId_GdipAddPathPath, - FuncId_GdipSetPathFillMode, - FuncId_GdipSetClipPath, - FuncId_GdipGetClip, - FuncId_GdipCreateRegion, - FuncId_GdipGetClipBoundsI, - FuncId_GdipSetClipRegion, - FuncId_GdipWidenPath, - FuncId_GdipAddPathLine, - FuncId_GdipAddPathRectangle, - FuncId_GdipDeleteRegion, - FuncId_GdipGetDC, - FuncId_GdipReleaseDC, - FuncId_GdipSetPenLineCap197819, - FuncId_GdipSetPenDashOffset, - FuncId_GdipResetPath, - FuncId_GdipCreateRegionPath, - FuncId_GdipCreateFont, - FuncId_GdipGetFontSize, - FuncId_GdipCreateFontFamilyFromName, - FuncId_GdipSetTextRenderingHint, - FuncId_GdipDrawDriverString, - FuncId_GdipCreateMatrix2, - FuncId_GdipDeleteMatrix, - FuncId_GdipSetWorldTransform, - FuncId_GdipResetWorldTransform, - FuncId_GdipDeleteFontFamily, - FuncId_GdipDeleteFont, - FuncId_GdipNewPrivateFontCollection, - FuncId_GdipDeletePrivateFontCollection, - FuncId_GdipPrivateAddMemoryFont, - FuncId_GdipGetFontCollectionFamilyList, - FuncId_GdipGetFontCollectionFamilyCount, - FuncId_GdipSetTextContrast, - FuncId_GdipSetPixelOffsetMode, - FuncId_GdipGetImageGraphicsContext, - FuncId_GdipDrawImageI, - FuncId_GdipDrawImageRectI, - FuncId_GdipDrawString, - FuncId_GdipSetPenTransform, -}; -static LPCSTR g_GdipFuncNames[] = { - "GdipCreatePath2", - "GdipSetPenDashStyle", - "GdipSetPenDashArray", - "GdipSetPenDashCap197819", - "GdipSetPenLineJoin", - "GdipSetPenWidth", - "GdipCreateFromHDC", - "GdipSetPageUnit", - "GdipSetSmoothingMode", - "GdipCreateSolidFill", - "GdipFillPath", - "GdipDeleteBrush", - "GdipCreatePen1", - "GdipSetPenMiterLimit", - "GdipDrawPath", - "GdipDeletePen", - "GdipDeletePath", - "GdipDeleteGraphics", - "GdipCreateBitmapFromFileICM", - "GdipCreateBitmapFromStreamICM", - "GdipGetImageHeight", - "GdipGetImageWidth", - "GdipGetImagePixelFormat", - "GdipBitmapLockBits", - "GdipGetImagePaletteSize", - "GdipGetImagePalette", - "GdipBitmapUnlockBits", - "GdipDisposeImage", - "GdipFillRectangle", - "GdipCreateBitmapFromScan0", - "GdipSetImagePalette", - "GdipSetInterpolationMode", - "GdipDrawImagePointsI", - "GdipCreateBitmapFromGdiDib", - "GdiplusStartup", - "GdipDrawLineI", - "GdipResetClip", - "GdipCreatePath", - "GdipAddPathPath", - "GdipSetPathFillMode", - "GdipSetClipPath", - "GdipGetClip", - "GdipCreateRegion", - "GdipGetClipBoundsI", - "GdipSetClipRegion", - "GdipWidenPath", - "GdipAddPathLine", - "GdipAddPathRectangle", - "GdipDeleteRegion", - "GdipGetDC", - "GdipReleaseDC", - "GdipSetPenLineCap197819", - "GdipSetPenDashOffset", - "GdipResetPath", - "GdipCreateRegionPath", - "GdipCreateFont", - "GdipGetFontSize", - "GdipCreateFontFamilyFromName", - "GdipSetTextRenderingHint", - "GdipDrawDriverString", - "GdipCreateMatrix2", - "GdipDeleteMatrix", - "GdipSetWorldTransform", - "GdipResetWorldTransform", - "GdipDeleteFontFamily", - "GdipDeleteFont", - "GdipNewPrivateFontCollection", - "GdipDeletePrivateFontCollection", - "GdipPrivateAddMemoryFont", - "GdipGetFontCollectionFamilyList", - "GdipGetFontCollectionFamilyCount", - "GdipSetTextContrast", - "GdipSetPixelOffsetMode", - "GdipGetImageGraphicsContext", - "GdipDrawImageI", - "GdipDrawImageRectI", - "GdipDrawString", - "GdipSetPenTransform", -}; -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreatePath2)(GDIPCONST GpPointF*, - GDIPCONST BYTE*, - INT, - GpFillMode, - GpPath** path); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashStyle)( - GpPen* pen, - GpDashStyle dashstyle); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashArray)(GpPen* pen, - GDIPCONST REAL* dash, - INT count); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashCap197819)( - GpPen* pen, - GpDashCap dashCap); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenLineJoin)(GpPen* pen, - GpLineJoin lineJoin); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenWidth)(GpPen* pen, REAL width); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateFromHDC)(HDC hdc, - GpGraphics** graphics); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPageUnit)(GpGraphics* graphics, - GpUnit unit); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetSmoothingMode)( - GpGraphics* graphics, - SmoothingMode smoothingMode); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateSolidFill)(ARGB color, - GpSolidFill** brush); -typedef GpStatus(WINGDIPAPI* FuncType_GdipFillPath)(GpGraphics* graphics, - GpBrush* brush, - GpPath* path); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteBrush)(GpBrush* brush); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreatePen1)(ARGB color, - REAL width, - GpUnit unit, - GpPen** pen); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenMiterLimit)(GpPen* pen, - REAL miterLimit); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawPath)(GpGraphics* graphics, - GpPen* pen, - GpPath* path); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeletePen)(GpPen* pen); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeletePath)(GpPath* path); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteGraphics)(GpGraphics* graphics); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromFileICM)( - GDIPCONST WCHAR* filename, - GpBitmap** bitmap); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromStreamICM)( - IStream* stream, - GpBitmap** bitmap); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImageWidth)(GpImage* image, - UINT* width); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImageHeight)(GpImage* image, - UINT* height); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImagePixelFormat)( - GpImage* image, - PixelFormat* format); -typedef GpStatus(WINGDIPAPI* FuncType_GdipBitmapLockBits)( - GpBitmap* bitmap, - GDIPCONST GpRect* rect, - UINT flags, - PixelFormat format, - BitmapData* lockedBitmapData); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImagePalette)( - GpImage* image, - ColorPalette* palette, - INT size); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImagePaletteSize)(GpImage* image, - INT* size); -typedef GpStatus(WINGDIPAPI* FuncType_GdipBitmapUnlockBits)( - GpBitmap* bitmap, - BitmapData* lockedBitmapData); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDisposeImage)(GpImage* image); -typedef GpStatus(WINGDIPAPI* FuncType_GdipFillRectangle)(GpGraphics* graphics, - GpBrush* brush, - REAL x, - REAL y, - REAL width, - REAL height); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromScan0)( - INT width, - INT height, - INT stride, - PixelFormat format, - BYTE* scan0, - GpBitmap** bitmap); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetImagePalette)( - GpImage* image, - GDIPCONST ColorPalette* palette); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetInterpolationMode)( - GpGraphics* graphics, - InterpolationMode interpolationMode); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawImagePointsI)( - GpGraphics* graphics, - GpImage* image, - GDIPCONST GpPoint* dstpoints, - INT count); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateBitmapFromGdiDib)( - GDIPCONST BITMAPINFO* gdiBitmapInfo, - VOID* gdiBitmapData, - GpBitmap** bitmap); -typedef Status(WINAPI* FuncType_GdiplusStartup)( - OUT uintptr_t* token, - const GdiplusStartupInput* input, - OUT GdiplusStartupOutput* output); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawLineI)(GpGraphics* graphics, - GpPen* pen, - int x1, - int y1, - int x2, - int y2); -typedef GpStatus(WINGDIPAPI* FuncType_GdipResetClip)(GpGraphics* graphics); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreatePath)(GpFillMode brushMode, - GpPath** path); -typedef GpStatus(WINGDIPAPI* FuncType_GdipAddPathPath)( - GpPath* path, - GDIPCONST GpPath* addingPath, - BOOL connect); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPathFillMode)(GpPath* path, - GpFillMode fillmode); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetClipPath)(GpGraphics* graphics, - GpPath* path, - CombineMode combineMode); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetClip)(GpGraphics* graphics, - GpRegion* region); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateRegion)(GpRegion** region); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetClipBoundsI)(GpGraphics* graphics, - GpRect* rect); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetClipRegion)( - GpGraphics* graphics, - GpRegion* region, - CombineMode combineMode); -typedef GpStatus(WINGDIPAPI* FuncType_GdipWidenPath)(GpPath* nativePath, - GpPen* pen, - GpMatrix* matrix, - REAL flatness); -typedef GpStatus(WINGDIPAPI* FuncType_GdipAddPathLine)(GpPath* path, - REAL x1, - REAL y1, - REAL x2, - REAL y2); -typedef GpStatus(WINGDIPAPI* FuncType_GdipAddPathRectangle)(GpPath* path, - REAL x, - REAL y, - REAL width, - REAL height); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteRegion)(GpRegion* region); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetDC)(GpGraphics* graphics, - HDC* hdc); -typedef GpStatus(WINGDIPAPI* FuncType_GdipReleaseDC)(GpGraphics* graphics, - HDC hdc); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenLineCap197819)( - GpPen* pen, - GpLineCap startCap, - GpLineCap endCap, - GpDashCap dashCap); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenDashOffset)(GpPen* pen, - REAL offset); -typedef GpStatus(WINGDIPAPI* FuncType_GdipResetPath)(GpPath* path); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateRegionPath)(GpPath* path, - GpRegion** region); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateFont)( - GDIPCONST GpFontFamily* fontFamily, - REAL emSize, - INT style, - Unit unit, - GpFont** font); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetFontSize)(GpFont* font, - REAL* size); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateFontFamilyFromName)( - GDIPCONST WCHAR* name, - GpFontCollection* fontCollection, - GpFontFamily** FontFamily); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetTextRenderingHint)( - GpGraphics* graphics, - TextRenderingHint mode); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawDriverString)( - GpGraphics* graphics, - GDIPCONST UINT16* text, - INT length, - GDIPCONST GpFont* font, - GDIPCONST GpBrush* brush, - GDIPCONST PointF* positions, - INT flags, - GDIPCONST GpMatrix* matrix); -typedef GpStatus(WINGDIPAPI* FuncType_GdipCreateMatrix2)(REAL m11, - REAL m12, - REAL m21, - REAL m22, - REAL dx, - REAL dy, - GpMatrix** matrix); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteMatrix)(GpMatrix* matrix); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetWorldTransform)( - GpGraphics* graphics, - GpMatrix* matrix); -typedef GpStatus(WINGDIPAPI* FuncType_GdipResetWorldTransform)( - GpGraphics* graphics); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteFontFamily)( - GpFontFamily* FontFamily); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeleteFont)(GpFont* font); -typedef GpStatus(WINGDIPAPI* FuncType_GdipNewPrivateFontCollection)( - GpFontCollection** fontCollection); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDeletePrivateFontCollection)( - GpFontCollection** fontCollection); -typedef GpStatus(WINGDIPAPI* FuncType_GdipPrivateAddMemoryFont)( - GpFontCollection* fontCollection, - GDIPCONST void* memory, - INT length); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetFontCollectionFamilyList)( - GpFontCollection* fontCollection, - INT numSought, - GpFontFamily* gpfamilies[], - INT* numFound); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetFontCollectionFamilyCount)( - GpFontCollection* fontCollection, - INT* numFound); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetTextContrast)(GpGraphics* graphics, - UINT contrast); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPixelOffsetMode)( - GpGraphics* graphics, - PixelOffsetMode pixelOffsetMode); -typedef GpStatus(WINGDIPAPI* FuncType_GdipGetImageGraphicsContext)( - GpImage* image, - GpGraphics** graphics); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawImageI)(GpGraphics* graphics, - GpImage* image, - INT x, - INT y); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawImageRectI)(GpGraphics* graphics, - GpImage* image, - INT x, - INT y, - INT width, - INT height); -typedef GpStatus(WINGDIPAPI* FuncType_GdipDrawString)( - GpGraphics* graphics, - GDIPCONST WCHAR* str, - INT length, - GDIPCONST GpFont* font, - GDIPCONST RectF* layoutRect, - GDIPCONST GpStringFormat* stringFormat, - GDIPCONST GpBrush* brush); -typedef GpStatus(WINGDIPAPI* FuncType_GdipSetPenTransform)(GpPen* pen, - GpMatrix* matrix); -#define CallFunc(funcname) \ - ((FuncType_##funcname)GdiplusExt.m_Functions[FuncId_##funcname]) -typedef HANDLE(__stdcall* FuncType_GdiAddFontMemResourceEx)(PVOID pbFont, - DWORD cbFont, - PVOID pdv, - DWORD* pcFonts); -typedef BOOL(__stdcall* FuncType_GdiRemoveFontMemResourceEx)(HANDLE handle); -void* CGdiplusExt::GdiAddFontMemResourceEx(void* pFontdata, - FX_DWORD size, - void* pdv, - FX_DWORD* num_face) { - if (m_pGdiAddFontMemResourceEx) { - return ((FuncType_GdiAddFontMemResourceEx)m_pGdiAddFontMemResourceEx)( - (PVOID)pFontdata, (DWORD)size, (PVOID)pdv, (DWORD*)num_face); - } - return NULL; -} -FX_BOOL CGdiplusExt::GdiRemoveFontMemResourceEx(void* handle) { - if (m_pGdiRemoveFontMemResourseEx) { - return ((FuncType_GdiRemoveFontMemResourceEx)m_pGdiRemoveFontMemResourseEx)( - (HANDLE)handle); - } - return FALSE; -} -static GpBrush* _GdipCreateBrush(DWORD argb) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - GpSolidFill* solidBrush = NULL; - CallFunc(GdipCreateSolidFill)((ARGB)argb, &solidBrush); - return solidBrush; -} -static CFX_DIBitmap* _StretchMonoToGray(int dest_width, - int dest_height, - const CFX_DIBitmap* pSource, - FX_RECT* pClipRect) { - FX_BOOL bFlipX = dest_width < 0; - if (bFlipX) { - dest_width = -dest_width; - } - FX_BOOL bFlipY = dest_height < 0; - if (bFlipY) { - dest_height = -dest_height; - } - int result_width = pClipRect->Width(); - int result_height = pClipRect->Height(); - int result_pitch = (result_width + 3) / 4 * 4; - CFX_DIBitmap* pStretched = new CFX_DIBitmap; - if (!pStretched->Create(result_width, result_height, FXDIB_8bppRgb)) { - delete pStretched; - return NULL; - } - LPBYTE dest_buf = pStretched->GetBuffer(); - int src_width = pSource->GetWidth(); - int src_height = pSource->GetHeight(); - int y_unit = src_height / dest_height; - int x_unit = src_width / dest_width; - int area_unit = y_unit * x_unit; - LPBYTE src_buf = pSource->GetBuffer(); - int src_pitch = pSource->GetPitch(); - for (int dest_y = 0; dest_y < result_height; dest_y++) { - LPBYTE dest_scan = dest_buf + dest_y * result_pitch; - int src_y_start = bFlipY ? (dest_height - 1 - dest_y - pClipRect->top) - : (dest_y + pClipRect->top); - src_y_start = src_y_start * src_height / dest_height; - LPBYTE src_scan = src_buf + src_y_start * src_pitch; - for (int dest_x = 0; dest_x < result_width; dest_x++) { - int sum = 0; - int src_x_start = bFlipX ? (dest_width - 1 - dest_x - pClipRect->left) - : (dest_x + pClipRect->left); - src_x_start = src_x_start * src_width / dest_width; - int src_x_end = src_x_start + x_unit; - LPBYTE src_line = src_scan; - for (int src_y = 0; src_y < y_unit; src_y++) { - for (int src_x = src_x_start; src_x < src_x_end; src_x++) { - if (!(src_line[src_x / 8] & (1 << (7 - src_x % 8)))) { - sum += 255; - } - } - src_line += src_pitch; - } - dest_scan[dest_x] = 255 - sum / area_unit; - } - } - return pStretched; -} -static void OutputImageMask(GpGraphics* pGraphics, - BOOL bMonoDevice, - const CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_ARGB argb, - const FX_RECT* pClipRect) { - ASSERT(pBitmap->GetBPP() == 1); - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - int src_width = pBitmap->GetWidth(), src_height = pBitmap->GetHeight(); - int src_pitch = pBitmap->GetPitch(); - uint8_t* scan0 = pBitmap->GetBuffer(); - if (src_width == 1 && src_height == 1) { - if ((scan0[0] & 0x80) == 0) { - return; - } - GpSolidFill* solidBrush; - CallFunc(GdipCreateSolidFill)((ARGB)argb, &solidBrush); - if (dest_width < 0) { - dest_width = -dest_width; - dest_left -= dest_width; - } - if (dest_height < 0) { - dest_height = -dest_height; - dest_top -= dest_height; - } - CallFunc(GdipFillRectangle)(pGraphics, solidBrush, (float)dest_left, - (float)dest_top, (float)dest_width, - (float)dest_height); - CallFunc(GdipDeleteBrush)(solidBrush); - return; - } - if (!bMonoDevice && abs(dest_width) < src_width && - abs(dest_height) < src_height) { - FX_RECT image_rect(dest_left, dest_top, dest_left + dest_width, - dest_top + dest_height); - image_rect.Normalize(); - FX_RECT image_clip = image_rect; - image_clip.Intersect(*pClipRect); - if (image_clip.IsEmpty()) { - return; - } - image_clip.Offset(-image_rect.left, -image_rect.top); - CFX_DIBitmap* pStretched = NULL; - if (src_width * src_height > 10000) { - pStretched = - _StretchMonoToGray(dest_width, dest_height, pBitmap, &image_clip); - } else { - pStretched = - pBitmap->StretchTo(dest_width, dest_height, FALSE, &image_clip); - } - GpBitmap* bitmap; - CallFunc(GdipCreateBitmapFromScan0)(image_clip.Width(), image_clip.Height(), - (image_clip.Width() + 3) / 4 * 4, - PixelFormat8bppIndexed, - pStretched->GetBuffer(), &bitmap); - int a, r, g, b; - ArgbDecode(argb, a, r, g, b); - UINT pal[258]; - pal[0] = 0; - pal[1] = 256; - for (int i = 0; i < 256; i++) { - pal[i + 2] = ArgbEncode(i * a / 255, r, g, b); - } - CallFunc(GdipSetImagePalette)(bitmap, (ColorPalette*)pal); - CallFunc(GdipDrawImageI)(pGraphics, bitmap, - image_rect.left + image_clip.left, - image_rect.top + image_clip.top); - CallFunc(GdipDisposeImage)(bitmap); - delete pStretched; - return; - } - GpBitmap* bitmap; - CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, - PixelFormat1bppIndexed, scan0, &bitmap); - UINT palette[4] = {PaletteFlagsHasAlpha, 2, 0, argb}; - CallFunc(GdipSetImagePalette)(bitmap, (ColorPalette*)palette); - Point destinationPoints[] = {Point(dest_left, dest_top), - Point(dest_left + dest_width, dest_top), - Point(dest_left, dest_top + dest_height)}; - CallFunc(GdipDrawImagePointsI)(pGraphics, bitmap, destinationPoints, 3); - CallFunc(GdipDisposeImage)(bitmap); -} -static void OutputImage(GpGraphics* pGraphics, - const CFX_DIBitmap* pBitmap, - const FX_RECT* pSrcRect, - int dest_left, - int dest_top, - int dest_width, - int dest_height) { - int src_width = pSrcRect->Width(), src_height = pSrcRect->Height(); - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - if (pBitmap->GetBPP() == 1 && (pSrcRect->left % 8)) { - FX_RECT new_rect(0, 0, src_width, src_height); - CFX_DIBitmap* pCloned = pBitmap->Clone(pSrcRect); - if (!pCloned) { - return; - } - OutputImage(pGraphics, pCloned, &new_rect, dest_left, dest_top, dest_width, - dest_height); - delete pCloned; - return; - } - int src_pitch = pBitmap->GetPitch(); - uint8_t* scan0 = pBitmap->GetBuffer() + pSrcRect->top * src_pitch + - pBitmap->GetBPP() * pSrcRect->left / 8; - GpBitmap* bitmap = NULL; - switch (pBitmap->GetFormat()) { - case FXDIB_Argb: - CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, - PixelFormat32bppARGB, scan0, &bitmap); - break; - case FXDIB_Rgb32: - CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, - PixelFormat32bppRGB, scan0, &bitmap); - break; - case FXDIB_Rgb: - CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, - PixelFormat24bppRGB, scan0, &bitmap); - break; - case FXDIB_8bppRgb: { - CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, - PixelFormat8bppIndexed, scan0, - &bitmap); - UINT pal[258]; - pal[0] = 0; - pal[1] = 256; - for (int i = 0; i < 256; i++) { - pal[i + 2] = pBitmap->GetPaletteEntry(i); - } - CallFunc(GdipSetImagePalette)(bitmap, (ColorPalette*)pal); - break; - } - case FXDIB_1bppRgb: { - CallFunc(GdipCreateBitmapFromScan0)(src_width, src_height, src_pitch, - PixelFormat1bppIndexed, scan0, - &bitmap); - break; - } - } - if (dest_height < 0) { - dest_height--; - } - if (dest_width < 0) { - dest_width--; - } - Point destinationPoints[] = {Point(dest_left, dest_top), - Point(dest_left + dest_width, dest_top), - Point(dest_left, dest_top + dest_height)}; - CallFunc(GdipDrawImagePointsI)(pGraphics, bitmap, destinationPoints, 3); - CallFunc(GdipDisposeImage)(bitmap); -} -CGdiplusExt::CGdiplusExt() { - m_hModule = NULL; - m_GdiModule = NULL; - for (int i = 0; i < sizeof g_GdipFuncNames / sizeof(LPCSTR); i++) { - m_Functions[i] = NULL; - } - m_pGdiAddFontMemResourceEx = NULL; - m_pGdiRemoveFontMemResourseEx = NULL; -} -void CGdiplusExt::Load() { - CFX_ByteString strPlusPath = ""; - FX_CHAR buf[MAX_PATH]; - GetSystemDirectoryA(buf, MAX_PATH); - strPlusPath += buf; - strPlusPath += "\\"; - strPlusPath += "GDIPLUS.DLL"; - m_hModule = LoadLibraryA(strPlusPath); - if (!m_hModule) { - return; - } - for (int i = 0; i < sizeof g_GdipFuncNames / sizeof(LPCSTR); i++) { - m_Functions[i] = GetProcAddress(m_hModule, g_GdipFuncNames[i]); - if (!m_Functions[i]) { - m_hModule = NULL; - return; - } - } - uintptr_t gdiplusToken; - GdiplusStartupInput gdiplusStartupInput; - ((FuncType_GdiplusStartup)m_Functions[FuncId_GdiplusStartup])( - &gdiplusToken, &gdiplusStartupInput, NULL); - m_GdiModule = LoadLibraryA("GDI32.DLL"); - if (!m_GdiModule) { - return; - } - m_pGdiAddFontMemResourceEx = - GetProcAddress(m_GdiModule, "AddFontMemResourceEx"); - m_pGdiRemoveFontMemResourseEx = - GetProcAddress(m_GdiModule, "RemoveFontMemResourceEx"); -} -CGdiplusExt::~CGdiplusExt() {} -LPVOID CGdiplusExt::LoadMemFont(LPBYTE pData, FX_DWORD size) { - GpFontCollection* pCollection = NULL; - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipNewPrivateFontCollection)(&pCollection); - GpStatus status = - CallFunc(GdipPrivateAddMemoryFont)(pCollection, pData, size); - if (status == Ok) { - return pCollection; - } - CallFunc(GdipDeletePrivateFontCollection)(&pCollection); - return NULL; -} -void CGdiplusExt::DeleteMemFont(LPVOID pCollection) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipDeletePrivateFontCollection)((GpFontCollection**)&pCollection); -} -FX_BOOL CGdiplusExt::GdipCreateBitmap(CFX_DIBitmap* pBitmap, void** bitmap) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - PixelFormat format; - switch (pBitmap->GetFormat()) { - case FXDIB_Rgb: - format = PixelFormat24bppRGB; - break; - case FXDIB_Rgb32: - format = PixelFormat32bppRGB; - break; - case FXDIB_Argb: - format = PixelFormat32bppARGB; - break; - default: - return FALSE; - } - GpStatus status = CallFunc(GdipCreateBitmapFromScan0)( - pBitmap->GetWidth(), pBitmap->GetHeight(), pBitmap->GetPitch(), format, - pBitmap->GetBuffer(), (GpBitmap**)bitmap); - if (status == Ok) { - return TRUE; - } - return FALSE; -} -FX_BOOL CGdiplusExt::GdipCreateFromImage(void* bitmap, void** graphics) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - GpStatus status = CallFunc(GdipGetImageGraphicsContext)( - (GpBitmap*)bitmap, (GpGraphics**)graphics); - if (status == Ok) { - return TRUE; - } - return FALSE; -} -FX_BOOL CGdiplusExt::GdipCreateFontFamilyFromName(const FX_WCHAR* name, - void* pFontCollection, - void** pFamily) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - GpStatus status = CallFunc(GdipCreateFontFamilyFromName)( - (GDIPCONST WCHAR*)name, (GpFontCollection*)pFontCollection, - (GpFontFamily**)pFamily); - if (status == Ok) { - return TRUE; - } - return FALSE; -} -FX_BOOL CGdiplusExt::GdipCreateFontFromFamily(void* pFamily, - FX_FLOAT font_size, - int fontstyle, - int flag, - void** pFont) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - GpStatus status = - CallFunc(GdipCreateFont)((GpFontFamily*)pFamily, font_size, fontstyle, - Unit(flag), (GpFont**)pFont); - if (status == Ok) { - return TRUE; - } - return FALSE; -} -void CGdiplusExt::GdipGetFontSize(void* pFont, FX_FLOAT* size) { - REAL get_size; - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - GpStatus status = CallFunc(GdipGetFontSize)((GpFont*)pFont, (REAL*)&get_size); - if (status == Ok) { - *size = (FX_FLOAT)get_size; - } else { - *size = 0; - } -} -void CGdiplusExt::GdipSetTextRenderingHint(void* graphics, int mode) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipSetTextRenderingHint)((GpGraphics*)graphics, - (TextRenderingHint)mode); -} -void CGdiplusExt::GdipSetPageUnit(void* graphics, FX_DWORD unit) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipSetPageUnit)((GpGraphics*)graphics, (GpUnit)unit); -} -FX_BOOL CGdiplusExt::GdipDrawDriverString(void* graphics, - unsigned short* text, - int length, - void* font, - void* brush, - void* positions, - int flags, - const void* matrix) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - GpStatus status = CallFunc(GdipDrawDriverString)( - (GpGraphics*)graphics, (GDIPCONST UINT16*)text, (INT)length, - (GDIPCONST GpFont*)font, (GDIPCONST GpBrush*)brush, - (GDIPCONST PointF*)positions, (INT)flags, (GDIPCONST GpMatrix*)matrix); - if (status == Ok) { - return TRUE; - } - return FALSE; -} -void CGdiplusExt::GdipCreateBrush(FX_DWORD fill_argb, void** pBrush) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipCreateSolidFill)((ARGB)fill_argb, (GpSolidFill**)pBrush); -} -void CGdiplusExt::GdipDeleteBrush(void* pBrush) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipDeleteBrush)((GpSolidFill*)pBrush); -} -void* CGdiplusExt::GdipCreateFontFromCollection(void* pFontCollection, - FX_FLOAT font_size, - int fontstyle) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - int numFamilies = 0; - GpStatus status = CallFunc(GdipGetFontCollectionFamilyCount)( - (GpFontCollection*)pFontCollection, &numFamilies); - if (status != Ok) { - return NULL; - } - GpFontFamily* family_list[1]; - status = CallFunc(GdipGetFontCollectionFamilyList)( - (GpFontCollection*)pFontCollection, 1, family_list, &numFamilies); - if (status != Ok) { - return NULL; - } - GpFont* pFont = NULL; - status = CallFunc(GdipCreateFont)(family_list[0], font_size, fontstyle, - UnitPixel, &pFont); - if (status != Ok) { - return NULL; - } - return pFont; -} -void CGdiplusExt::GdipCreateMatrix(FX_FLOAT a, - FX_FLOAT b, - FX_FLOAT c, - FX_FLOAT d, - FX_FLOAT e, - FX_FLOAT f, - void** matrix) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipCreateMatrix2)(a, b, c, d, e, f, (GpMatrix**)matrix); -} -void CGdiplusExt::GdipDeleteMatrix(void* matrix) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipDeleteMatrix)((GpMatrix*)matrix); -} -void CGdiplusExt::GdipDeleteFontFamily(void* pFamily) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipDeleteFontFamily)((GpFontFamily*)pFamily); -} -void CGdiplusExt::GdipDeleteFont(void* pFont) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipDeleteFont)((GpFont*)pFont); -} -void CGdiplusExt::GdipSetWorldTransform(void* graphics, void* pMatrix) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipSetWorldTransform)((GpGraphics*)graphics, (GpMatrix*)pMatrix); -} -void CGdiplusExt::GdipDisposeImage(void* bitmap) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipDisposeImage)((GpBitmap*)bitmap); -} -void CGdiplusExt::GdipDeleteGraphics(void* graphics) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipDeleteGraphics)((GpGraphics*)graphics); -} -FX_BOOL CGdiplusExt::StretchBitMask(HDC hDC, - BOOL bMonoDevice, - const CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_DWORD argb, - const FX_RECT* pClipRect, - int flags) { - ASSERT(pBitmap->GetBPP() == 1); - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - GpGraphics* pGraphics = NULL; - CallFunc(GdipCreateFromHDC)(hDC, &pGraphics); - CallFunc(GdipSetPageUnit)(pGraphics, UnitPixel); - if (flags & FXDIB_NOSMOOTH) { - CallFunc(GdipSetInterpolationMode)(pGraphics, - InterpolationModeNearestNeighbor); - } else { - CallFunc(GdipSetInterpolationMode)(pGraphics, InterpolationModeHighQuality); - } - OutputImageMask(pGraphics, bMonoDevice, pBitmap, dest_left, dest_top, - dest_width, dest_height, argb, pClipRect); - CallFunc(GdipDeleteGraphics)(pGraphics); - return TRUE; -} -FX_BOOL CGdiplusExt::StretchDIBits(HDC hDC, - const CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - int flags) { - GpGraphics* pGraphics; - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipCreateFromHDC)(hDC, &pGraphics); - CallFunc(GdipSetPageUnit)(pGraphics, UnitPixel); - if (flags & FXDIB_NOSMOOTH) { - CallFunc(GdipSetInterpolationMode)(pGraphics, - InterpolationModeNearestNeighbor); - } else if (pBitmap->GetWidth() > abs(dest_width) / 2 || - pBitmap->GetHeight() > abs(dest_height) / 2) { - CallFunc(GdipSetInterpolationMode)(pGraphics, InterpolationModeHighQuality); - } else { - CallFunc(GdipSetInterpolationMode)(pGraphics, InterpolationModeBilinear); - } - FX_RECT src_rect(0, 0, pBitmap->GetWidth(), pBitmap->GetHeight()); - OutputImage(pGraphics, pBitmap, &src_rect, dest_left, dest_top, dest_width, - dest_height); - CallFunc(GdipDeleteGraphics)(pGraphics); - CallFunc(GdipDeleteGraphics)(pGraphics); - return TRUE; -} -static GpPen* _GdipCreatePen(const CFX_GraphStateData* pGraphState, - const CFX_Matrix* pMatrix, - DWORD argb, - FX_BOOL bTextMode = FALSE) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - FX_FLOAT width = pGraphState ? pGraphState->m_LineWidth : 1.0f; - if (!bTextMode) { - FX_FLOAT unit = - pMatrix ? 1.0f / ((pMatrix->GetXUnit() + pMatrix->GetYUnit()) / 2) - : 1.0f; - if (width < unit) { - width = unit; - } - } - GpPen* pPen = NULL; - CallFunc(GdipCreatePen1)((ARGB)argb, width, UnitWorld, &pPen); - LineCap lineCap; - DashCap dashCap = DashCapFlat; - FX_BOOL bDashExtend = FALSE; - switch (pGraphState->m_LineCap) { - case CFX_GraphStateData::LineCapButt: - lineCap = LineCapFlat; - break; - case CFX_GraphStateData::LineCapRound: - lineCap = LineCapRound; - dashCap = DashCapRound; - bDashExtend = TRUE; - break; - case CFX_GraphStateData::LineCapSquare: - lineCap = LineCapSquare; - bDashExtend = TRUE; - break; - } - CallFunc(GdipSetPenLineCap197819)(pPen, lineCap, lineCap, dashCap); - LineJoin lineJoin; - switch (pGraphState->m_LineJoin) { - case CFX_GraphStateData::LineJoinMiter: - lineJoin = LineJoinMiterClipped; - break; - case CFX_GraphStateData::LineJoinRound: - lineJoin = LineJoinRound; - break; - case CFX_GraphStateData::LineJoinBevel: - lineJoin = LineJoinBevel; - break; - } - CallFunc(GdipSetPenLineJoin)(pPen, lineJoin); - if (pGraphState->m_DashCount) { - FX_FLOAT* pDashArray = FX_Alloc( - FX_FLOAT, pGraphState->m_DashCount + pGraphState->m_DashCount % 2); - int nCount = 0; - FX_FLOAT on_leftover = 0, off_leftover = 0; - for (int i = 0; i < pGraphState->m_DashCount; i += 2) { - FX_FLOAT on_phase = pGraphState->m_DashArray[i]; - FX_FLOAT off_phase; - if (i == pGraphState->m_DashCount - 1) { - off_phase = on_phase; - } else { - off_phase = pGraphState->m_DashArray[i + 1]; - } - on_phase /= width; - off_phase /= width; - if (on_phase + off_phase <= 0.00002f) { - on_phase = 1.0f / 10; - off_phase = 1.0f / 10; - } - if (bDashExtend) { - if (off_phase < 1) { - off_phase = 0; - } else { - off_phase -= 1; - } - on_phase += 1; - } - if (on_phase == 0 || off_phase == 0) { - if (nCount == 0) { - on_leftover += on_phase; - off_leftover += off_phase; - } else { - pDashArray[nCount - 2] += on_phase; - pDashArray[nCount - 1] += off_phase; - } - } else { - pDashArray[nCount++] = on_phase + on_leftover; - on_leftover = 0; - pDashArray[nCount++] = off_phase + off_leftover; - off_leftover = 0; - } - } - CallFunc(GdipSetPenDashArray)(pPen, pDashArray, nCount); - FX_FLOAT phase = pGraphState->m_DashPhase; - if (bDashExtend) { - if (phase < 0.5f) { - phase = 0; - } else { - phase -= 0.5f; - } - } - CallFunc(GdipSetPenDashOffset)(pPen, phase); - FX_Free(pDashArray); - pDashArray = NULL; - } - CallFunc(GdipSetPenMiterLimit)(pPen, pGraphState->m_MiterLimit); - return pPen; -} -static FX_BOOL IsSmallTriangle(PointF* points, - const CFX_Matrix* pMatrix, - int& v1, - int& v2) { - int pairs[] = {1, 2, 0, 2, 0, 1}; - for (int i = 0; i < 3; i++) { - int pair1 = pairs[i * 2]; - int pair2 = pairs[i * 2 + 1]; - FX_FLOAT x1 = points[pair1].X, x2 = points[pair2].X; - FX_FLOAT y1 = points[pair1].Y, y2 = points[pair2].Y; - if (pMatrix) { - pMatrix->Transform(x1, y1); - pMatrix->Transform(x2, y2); - } - FX_FLOAT dx = x1 - x2; - FX_FLOAT dy = y1 - y2; - FX_FLOAT distance_square = (dx * dx) + (dy * dy); - if (distance_square < (1.0f * 2 + 1.0f / 4)) { - v1 = i; - v2 = pair1; - return TRUE; - } - } - return FALSE; -} -FX_BOOL CGdiplusExt::DrawPath(HDC hDC, - const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_argb, - FX_DWORD stroke_argb, - int fill_mode) { - int nPoints = pPathData->GetPointCount(); - if (nPoints == 0) { - return TRUE; - } - FX_PATHPOINT* pPoints = pPathData->GetPoints(); - GpGraphics* pGraphics = NULL; - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipCreateFromHDC)(hDC, &pGraphics); - CallFunc(GdipSetPageUnit)(pGraphics, UnitPixel); - CallFunc(GdipSetPixelOffsetMode)(pGraphics, PixelOffsetModeHalf); - GpMatrix* pMatrix = NULL; - if (pObject2Device) { - CallFunc(GdipCreateMatrix2)(pObject2Device->a, pObject2Device->b, - pObject2Device->c, pObject2Device->d, - pObject2Device->e, pObject2Device->f, &pMatrix); - CallFunc(GdipSetWorldTransform)(pGraphics, pMatrix); - } - PointF* points = FX_Alloc(PointF, nPoints); - BYTE* types = FX_Alloc(BYTE, nPoints); - int nSubPathes = 0; - FX_BOOL bSubClose = FALSE; - int pos_subclose = 0; - FX_BOOL bSmooth = FALSE; - int startpoint = 0; - for (int i = 0; i < nPoints; i++) { - points[i].X = pPoints[i].m_PointX; - points[i].Y = pPoints[i].m_PointY; - FX_FLOAT x, y; - if (pObject2Device) { - pObject2Device->Transform(pPoints[i].m_PointX, pPoints[i].m_PointY, x, y); - } else { - x = pPoints[i].m_PointX; - y = pPoints[i].m_PointY; - } - if (x > 50000 * 1.0f) { - points[i].X = 50000 * 1.0f; - } - if (x < -50000 * 1.0f) { - points[i].X = -50000 * 1.0f; - } - if (y > 50000 * 1.0f) { - points[i].Y = 50000 * 1.0f; - } - if (y < -50000 * 1.0f) { - points[i].Y = -50000 * 1.0f; - } - int point_type = pPoints[i].m_Flag & FXPT_TYPE; - if (point_type == FXPT_MOVETO) { - types[i] = PathPointTypeStart; - nSubPathes++; - bSubClose = FALSE; - startpoint = i; - } else if (point_type == FXPT_LINETO) { - types[i] = PathPointTypeLine; - if (pPoints[i - 1].m_Flag == FXPT_MOVETO && - (i == nPoints - 1 || pPoints[i + 1].m_Flag == FXPT_MOVETO) && - points[i].Y == points[i - 1].Y && points[i].X == points[i - 1].X) { - points[i].X += 0.01f; - continue; - } - if (!bSmooth && points[i].X != points[i - 1].X && - points[i].Y != points[i - 1].Y) { - bSmooth = TRUE; - } - } else if (point_type == FXPT_BEZIERTO) { - types[i] = PathPointTypeBezier; - bSmooth = TRUE; - } - if (pPoints[i].m_Flag & FXPT_CLOSEFIGURE) { - if (bSubClose) { - types[pos_subclose] &= ~PathPointTypeCloseSubpath; - } else { - bSubClose = TRUE; - } - pos_subclose = i; - types[i] |= PathPointTypeCloseSubpath; - if (!bSmooth && points[i].X != points[startpoint].X && - points[i].Y != points[startpoint].Y) { - bSmooth = TRUE; - } - } - } - if (fill_mode & FXFILL_NOPATHSMOOTH) { - bSmooth = FALSE; - CallFunc(GdipSetSmoothingMode)(pGraphics, SmoothingModeNone); - } else if (!(fill_mode & FXFILL_FULLCOVER)) { - if (!bSmooth && (fill_mode & 3)) { - bSmooth = TRUE; - } - if (bSmooth || (pGraphState && pGraphState->m_LineWidth > 2)) { - CallFunc(GdipSetSmoothingMode)(pGraphics, SmoothingModeAntiAlias); - } - } - int new_fill_mode = fill_mode & 3; - if (nPoints == 4 && !pGraphState) { - int v1, v2; - if (IsSmallTriangle(points, pObject2Device, v1, v2)) { - GpPen* pPen = NULL; - CallFunc(GdipCreatePen1)(fill_argb, 1.0f, UnitPixel, &pPen); - CallFunc(GdipDrawLineI)( - pGraphics, pPen, FXSYS_round(points[v1].X), FXSYS_round(points[v1].Y), - FXSYS_round(points[v2].X), FXSYS_round(points[v2].Y)); - CallFunc(GdipDeletePen)(pPen); - return TRUE; - } - } - GpPath* pGpPath = NULL; - CallFunc(GdipCreatePath2)(points, types, nPoints, - GdiFillType2Gdip(new_fill_mode), &pGpPath); - if (!pGpPath) { - if (pMatrix) { - CallFunc(GdipDeleteMatrix)(pMatrix); - } - FX_Free(points); - FX_Free(types); - CallFunc(GdipDeleteGraphics)(pGraphics); - return FALSE; - } - if (new_fill_mode) { - GpBrush* pBrush = _GdipCreateBrush(fill_argb); - CallFunc(GdipSetPathFillMode)(pGpPath, GdiFillType2Gdip(new_fill_mode)); - CallFunc(GdipFillPath)(pGraphics, pBrush, pGpPath); - CallFunc(GdipDeleteBrush)(pBrush); - } - if (pGraphState && stroke_argb) { - GpPen* pPen = _GdipCreatePen(pGraphState, pObject2Device, stroke_argb, - fill_mode & FX_STROKE_TEXT_MODE); - if (nSubPathes == 1) { - CallFunc(GdipDrawPath)(pGraphics, pPen, pGpPath); - } else { - int iStart = 0; - for (int i = 0; i < nPoints; i++) { - if (i == nPoints - 1 || types[i + 1] == PathPointTypeStart) { - GpPath* pSubPath; - CallFunc(GdipCreatePath2)(points + iStart, types + iStart, - i - iStart + 1, - GdiFillType2Gdip(new_fill_mode), &pSubPath); - iStart = i + 1; - CallFunc(GdipDrawPath)(pGraphics, pPen, pSubPath); - CallFunc(GdipDeletePath)(pSubPath); - } - } - } - CallFunc(GdipDeletePen)(pPen); - } - if (pMatrix) { - CallFunc(GdipDeleteMatrix)(pMatrix); - } - FX_Free(points); - FX_Free(types); - CallFunc(GdipDeletePath)(pGpPath); - CallFunc(GdipDeleteGraphics)(pGraphics); - return TRUE; -} -class GpStream final : public IStream { - LONG m_RefCount; - int m_ReadPos; - CFX_ByteTextBuf m_InterStream; - - public: - GpStream() { - m_RefCount = 1; - m_ReadPos = 0; - } - virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, - void** ppvObject) { - if (iid == __uuidof(IUnknown) || iid == __uuidof(IStream) || - iid == __uuidof(ISequentialStream)) { - *ppvObject = static_cast(this); - AddRef(); - return S_OK; - } - return E_NOINTERFACE; - } - virtual ULONG STDMETHODCALLTYPE AddRef(void) { - return (ULONG)InterlockedIncrement(&m_RefCount); - } - virtual ULONG STDMETHODCALLTYPE Release(void) { - ULONG res = (ULONG)InterlockedDecrement(&m_RefCount); - if (res == 0) { - delete this; - } - return res; - } - - public: - virtual HRESULT STDMETHODCALLTYPE Read(void* Output, - ULONG cb, - ULONG* pcbRead) { - size_t bytes_left; - size_t bytes_out; - if (pcbRead) { - *pcbRead = 0; - } - if (m_ReadPos == m_InterStream.GetLength()) { - return HRESULT_FROM_WIN32(ERROR_END_OF_MEDIA); - } - bytes_left = m_InterStream.GetLength() - m_ReadPos; - bytes_out = std::min(pdfium::base::checked_cast(cb), bytes_left); - FXSYS_memcpy(Output, m_InterStream.GetBuffer() + m_ReadPos, bytes_out); - m_ReadPos += (int32_t)bytes_out; - if (pcbRead) { - *pcbRead = (ULONG)bytes_out; - } - return S_OK; - } - virtual HRESULT STDMETHODCALLTYPE Write(void const* Input, - ULONG cb, - ULONG* pcbWritten) { - if (cb <= 0) { - if (pcbWritten) { - *pcbWritten = 0; - } - return S_OK; - } - m_InterStream.InsertBlock(m_InterStream.GetLength(), Input, cb); - if (pcbWritten) { - *pcbWritten = cb; - } - return S_OK; - } - - public: - virtual HRESULT STDMETHODCALLTYPE SetSize(ULARGE_INTEGER) { - return E_NOTIMPL; - } - virtual HRESULT STDMETHODCALLTYPE CopyTo(IStream*, - ULARGE_INTEGER, - ULARGE_INTEGER*, - ULARGE_INTEGER*) { - return E_NOTIMPL; - } - virtual HRESULT STDMETHODCALLTYPE Commit(DWORD) { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE Revert(void) { return E_NOTIMPL; } - virtual HRESULT STDMETHODCALLTYPE LockRegion(ULARGE_INTEGER, - ULARGE_INTEGER, - DWORD) { - return E_NOTIMPL; - } - virtual HRESULT STDMETHODCALLTYPE UnlockRegion(ULARGE_INTEGER, - ULARGE_INTEGER, - DWORD) { - return E_NOTIMPL; - } - virtual HRESULT STDMETHODCALLTYPE Clone(IStream** stream) { - return E_NOTIMPL; - } - virtual HRESULT STDMETHODCALLTYPE Seek(LARGE_INTEGER liDistanceToMove, - DWORD dwOrigin, - ULARGE_INTEGER* lpNewFilePointer) { - long start = 0; - long new_read_position; - switch (dwOrigin) { - case STREAM_SEEK_SET: - start = 0; - break; - case STREAM_SEEK_CUR: - start = m_ReadPos; - break; - case STREAM_SEEK_END: - start = m_InterStream.GetLength(); - break; - default: - return STG_E_INVALIDFUNCTION; - break; - } - new_read_position = start + (long)liDistanceToMove.QuadPart; - if (new_read_position < 0 || - new_read_position > m_InterStream.GetLength()) { - return STG_E_SEEKERROR; - } - m_ReadPos = new_read_position; - if (lpNewFilePointer) { - lpNewFilePointer->QuadPart = m_ReadPos; - } - return S_OK; - } - virtual HRESULT STDMETHODCALLTYPE Stat(STATSTG* pStatstg, DWORD grfStatFlag) { - if (!pStatstg) { - return STG_E_INVALIDFUNCTION; - } - ZeroMemory(pStatstg, sizeof(STATSTG)); - pStatstg->cbSize.QuadPart = m_InterStream.GetLength(); - return S_OK; - } -}; -typedef struct { - BITMAPINFO* pbmi; - int Stride; - LPBYTE pScan0; - GpBitmap* pBitmap; - BitmapData* pBitmapData; - GpStream* pStream; -} PREVIEW3_DIBITMAP; -static PREVIEW3_DIBITMAP* LoadDIBitmap(WINDIB_Open_Args_ args) { - GpBitmap* pBitmap; - GpStream* pStream = NULL; - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - Status status = Ok; - if (args.flags == WINDIB_OPEN_PATHNAME) { - status = CallFunc(GdipCreateBitmapFromFileICM)((wchar_t*)args.path_name, - &pBitmap); - } else { - if (args.memory_size == 0 || !args.memory_base) { - return NULL; - } - pStream = new GpStream; - pStream->Write(args.memory_base, (ULONG)args.memory_size, NULL); - status = CallFunc(GdipCreateBitmapFromStreamICM)(pStream, &pBitmap); - } - if (status != Ok) { - if (pStream) { - pStream->Release(); - } - return NULL; - } - UINT height, width; - CallFunc(GdipGetImageHeight)(pBitmap, &height); - CallFunc(GdipGetImageWidth)(pBitmap, &width); - PixelFormat pixel_format; - CallFunc(GdipGetImagePixelFormat)(pBitmap, &pixel_format); - int info_size = sizeof(BITMAPINFOHEADER); - int bpp = 24; - int dest_pixel_format = PixelFormat24bppRGB; - if (pixel_format == PixelFormat1bppIndexed) { - info_size += 8; - bpp = 1; - dest_pixel_format = PixelFormat1bppIndexed; - } else if (pixel_format == PixelFormat8bppIndexed) { - info_size += 1024; - bpp = 8; - dest_pixel_format = PixelFormat8bppIndexed; - } else if (pixel_format == PixelFormat32bppARGB) { - bpp = 32; - dest_pixel_format = PixelFormat32bppARGB; - } - LPBYTE buf = FX_Alloc(BYTE, info_size); - BITMAPINFOHEADER* pbmih = (BITMAPINFOHEADER*)buf; - pbmih->biBitCount = bpp; - pbmih->biCompression = BI_RGB; - pbmih->biHeight = -(int)height; - pbmih->biPlanes = 1; - pbmih->biWidth = width; - Rect rect(0, 0, width, height); - BitmapData* pBitmapData = FX_Alloc(BitmapData, 1); - CallFunc(GdipBitmapLockBits)(pBitmap, &rect, ImageLockModeRead, - dest_pixel_format, pBitmapData); - if (pixel_format == PixelFormat1bppIndexed || - pixel_format == PixelFormat8bppIndexed) { - DWORD* ppal = (DWORD*)(buf + sizeof(BITMAPINFOHEADER)); - struct { - UINT flags; - UINT Count; - DWORD Entries[256]; - } pal; - int size = 0; - CallFunc(GdipGetImagePaletteSize)(pBitmap, &size); - CallFunc(GdipGetImagePalette)(pBitmap, (ColorPalette*)&pal, size); - int entries = pixel_format == PixelFormat1bppIndexed ? 2 : 256; - for (int i = 0; i < entries; i++) { - ppal[i] = pal.Entries[i] & 0x00ffffff; - } - } - PREVIEW3_DIBITMAP* pInfo = FX_Alloc(PREVIEW3_DIBITMAP, 1); - pInfo->pbmi = (BITMAPINFO*)buf; - pInfo->pScan0 = (LPBYTE)pBitmapData->Scan0; - pInfo->Stride = pBitmapData->Stride; - pInfo->pBitmap = pBitmap; - pInfo->pBitmapData = pBitmapData; - pInfo->pStream = pStream; - return pInfo; -} -static void FreeDIBitmap(PREVIEW3_DIBITMAP* pInfo) { - CGdiplusExt& GdiplusExt = - ((CWin32Platform*)CFX_GEModule::Get()->GetPlatformData())->m_GdiplusExt; - CallFunc(GdipBitmapUnlockBits)(pInfo->pBitmap, pInfo->pBitmapData); - CallFunc(GdipDisposeImage)(pInfo->pBitmap); - FX_Free(pInfo->pBitmapData); - FX_Free((LPBYTE)pInfo->pbmi); - if (pInfo->pStream) { - pInfo->pStream->Release(); - } - FX_Free(pInfo); -} -CFX_DIBitmap* _FX_WindowsDIB_LoadFromBuf(BITMAPINFO* pbmi, - LPVOID pData, - FX_BOOL bAlpha); -CFX_DIBitmap* CGdiplusExt::LoadDIBitmap(WINDIB_Open_Args_ args) { - PREVIEW3_DIBITMAP* pInfo = ::LoadDIBitmap(args); - if (!pInfo) { - return NULL; - } - int height = abs(pInfo->pbmi->bmiHeader.biHeight); - int width = pInfo->pbmi->bmiHeader.biWidth; - int dest_pitch = (width * pInfo->pbmi->bmiHeader.biBitCount + 31) / 32 * 4; - LPBYTE pData = FX_Alloc2D(BYTE, dest_pitch, height); - if (dest_pitch == pInfo->Stride) { - FXSYS_memcpy(pData, pInfo->pScan0, dest_pitch * height); - } else { - for (int i = 0; i < height; i++) { - FXSYS_memcpy(pData + dest_pitch * i, pInfo->pScan0 + pInfo->Stride * i, - dest_pitch); - } - } - CFX_DIBitmap* pDIBitmap = _FX_WindowsDIB_LoadFromBuf( - pInfo->pbmi, pData, pInfo->pbmi->bmiHeader.biBitCount == 32); - FX_Free(pData); - FreeDIBitmap(pInfo); - return pDIBitmap; -} -#endif diff --git a/core/src/fxge/win32/fx_win32_print.cpp b/core/src/fxge/win32/fx_win32_print.cpp deleted file mode 100644 index acd73d1427..0000000000 --- a/core/src/fxge/win32/fx_win32_print.cpp +++ /dev/null @@ -1,473 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "core/include/fxge/fx_ge.h" - -#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_ - -#include - -#include "core/include/fxge/fx_freetype.h" -#include "core/include/fxge/fx_ge_win32.h" -#include "core/src/fxge/dib/dib_int.h" -#include "core/src/fxge/ge/fx_text_int.h" -#include "core/src/fxge/win32/win32_int.h" - -#define SIZETHRESHOLD 1000 -#define OUTPUTPSLEN 4096 -CGdiPrinterDriver::CGdiPrinterDriver(HDC hDC) - : CGdiDeviceDriver(hDC, FXDC_PRINTER) { - m_HorzSize = ::GetDeviceCaps(m_hDC, HORZSIZE); - m_VertSize = ::GetDeviceCaps(m_hDC, VERTSIZE); - m_bSupportROP = TRUE; -} -int CGdiPrinterDriver::GetDeviceCaps(int caps_id) { - if (caps_id == FXDC_HORZ_SIZE) { - return m_HorzSize; - } - if (caps_id == FXDC_VERT_SIZE) { - return m_VertSize; - } - return CGdiDeviceDriver::GetDeviceCaps(caps_id); -} -FX_BOOL CGdiPrinterDriver::SetDIBits(const CFX_DIBSource* pSource, - FX_DWORD color, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform) { - if (pSource->IsAlphaMask()) { - FX_RECT clip_rect(left, top, left + pSrcRect->Width(), - top + pSrcRect->Height()); - return StretchDIBits(pSource, color, left - pSrcRect->left, - top - pSrcRect->top, pSource->GetWidth(), - pSource->GetHeight(), &clip_rect, 0, alpha_flag, - pIccTransform, FXDIB_BLEND_NORMAL); - } - ASSERT(pSource && !pSource->IsAlphaMask() && pSrcRect); - ASSERT(blend_type == FXDIB_BLEND_NORMAL); - if (pSource->HasAlpha()) { - return FALSE; - } - CFX_DIBExtractor temp(pSource); - CFX_DIBitmap* pBitmap = temp; - if (!pBitmap) { - return FALSE; - } - return GDI_SetDIBits(pBitmap, pSrcRect, left, top, pIccTransform); -} -FX_BOOL CGdiPrinterDriver::StretchDIBits(const CFX_DIBSource* pSource, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (pSource->IsAlphaMask()) { - int alpha = FXGETFLAG_COLORTYPE(alpha_flag) - ? FXGETFLAG_ALPHA_FILL(alpha_flag) - : FXARGB_A(color); - if (pSource->GetBPP() != 1 || alpha != 255 || !m_bSupportROP) { - return FALSE; - } - if (dest_width < 0 || dest_height < 0) { - CFX_DIBitmap* pFlipped = - pSource->FlipImage(dest_width < 0, dest_height < 0); - if (!pFlipped) { - return FALSE; - } - if (dest_width < 0) { - dest_left += dest_width; - } - if (dest_height < 0) { - dest_top += dest_height; - } - FX_BOOL ret = GDI_StretchBitMask(pFlipped, dest_left, dest_top, - abs(dest_width), abs(dest_height), color, - flags, alpha_flag, pIccTransform); - delete pFlipped; - return ret; - } - CFX_DIBExtractor temp(pSource); - CFX_DIBitmap* pBitmap = temp; - if (!pBitmap) { - return FALSE; - } - return GDI_StretchBitMask(pBitmap, dest_left, dest_top, dest_width, - dest_height, color, flags, alpha_flag, - pIccTransform); - } - if (pSource->HasAlpha()) { - return FALSE; - } - if (dest_width < 0 || dest_height < 0) { - CFX_DIBitmap* pFlipped = - pSource->FlipImage(dest_width < 0, dest_height < 0); - if (!pFlipped) { - return FALSE; - } - if (dest_width < 0) { - dest_left += dest_width; - } - if (dest_height < 0) { - dest_top += dest_height; - } - FX_BOOL ret = - GDI_StretchDIBits(pFlipped, dest_left, dest_top, abs(dest_width), - abs(dest_height), flags, pIccTransform); - delete pFlipped; - return ret; - } - CFX_DIBExtractor temp(pSource); - CFX_DIBitmap* pBitmap = temp; - if (!pBitmap) { - return FALSE; - } - return GDI_StretchDIBits(pBitmap, dest_left, dest_top, dest_width, - dest_height, flags, pIccTransform); -} -static CFX_DIBitmap* Transform1bppBitmap(const CFX_DIBSource* pSrc, - const CFX_Matrix* pDestMatrix) { - ASSERT(pSrc->GetFormat() == FXDIB_1bppRgb || - pSrc->GetFormat() == FXDIB_1bppMask || - pSrc->GetFormat() == FXDIB_1bppCmyk); - CFX_DIBExtractor src_bitmap(pSrc); - CFX_DIBitmap* pSrcBitmap = src_bitmap; - if (!pSrcBitmap) { - return NULL; - } - int src_width = pSrcBitmap->GetWidth(), src_height = pSrcBitmap->GetHeight(); - uint8_t* src_buf = pSrcBitmap->GetBuffer(); - FX_DWORD src_pitch = pSrcBitmap->GetPitch(); - FX_FLOAT dest_area = pDestMatrix->GetUnitArea(); - FX_FLOAT area_scale = ((FX_FLOAT)(src_width * src_height)) / dest_area; - FX_FLOAT size_scale = FXSYS_sqrt(area_scale); - CFX_Matrix adjusted_matrix(*pDestMatrix); - adjusted_matrix.Scale(size_scale, size_scale); - CFX_FloatRect result_rect_f = adjusted_matrix.GetUnitRect(); - FX_RECT result_rect = result_rect_f.GetOutterRect(); - CFX_Matrix src2result; - src2result.e = adjusted_matrix.c + adjusted_matrix.e; - src2result.f = adjusted_matrix.d + adjusted_matrix.f; - src2result.a = adjusted_matrix.a / pSrcBitmap->GetWidth(); - src2result.b = adjusted_matrix.b / pSrcBitmap->GetWidth(); - src2result.c = -adjusted_matrix.c / pSrcBitmap->GetHeight(); - src2result.d = -adjusted_matrix.d / pSrcBitmap->GetHeight(); - src2result.TranslateI(-result_rect.left, -result_rect.top); - CFX_Matrix result2src; - result2src.SetReverse(src2result); - CPDF_FixedMatrix result2src_fix(result2src, 8); - int result_width = result_rect.Width(); - int result_height = result_rect.Height(); - CFX_DIBitmap* pTempBitmap = new CFX_DIBitmap; - if (!pTempBitmap->Create(result_width, result_height, pSrc->GetFormat())) { - delete pTempBitmap; - if (pSrcBitmap != src_bitmap) { - delete pSrcBitmap; - } - return NULL; - } - pTempBitmap->CopyPalette(pSrc->GetPalette()); - uint8_t* dest_buf = pTempBitmap->GetBuffer(); - int dest_pitch = pTempBitmap->GetPitch(); - FXSYS_memset(dest_buf, pSrc->IsAlphaMask() ? 0 : 0xff, - dest_pitch * result_height); - if (pSrcBitmap->IsAlphaMask()) { - for (int dest_y = 0; dest_y < result_height; dest_y++) { - uint8_t* dest_scan = dest_buf + dest_y * dest_pitch; - for (int dest_x = 0; dest_x < result_width; dest_x++) { - int src_x, src_y; - result2src_fix.Transform(dest_x, dest_y, src_x, src_y); - if (src_x < 0 || src_x >= src_width || src_y < 0 || - src_y >= src_height) { - continue; - } - if (!((src_buf + src_pitch * src_y)[src_x / 8] & - (1 << (7 - src_x % 8)))) { - continue; - } - dest_scan[dest_x / 8] |= 1 << (7 - dest_x % 8); - } - } - } else { - for (int dest_y = 0; dest_y < result_height; dest_y++) { - uint8_t* dest_scan = dest_buf + dest_y * dest_pitch; - for (int dest_x = 0; dest_x < result_width; dest_x++) { - int src_x, src_y; - result2src_fix.Transform(dest_x, dest_y, src_x, src_y); - if (src_x < 0 || src_x >= src_width || src_y < 0 || - src_y >= src_height) { - continue; - } - if ((src_buf + src_pitch * src_y)[src_x / 8] & (1 << (7 - src_x % 8))) { - continue; - } - dest_scan[dest_x / 8] &= ~(1 << (7 - dest_x % 8)); - } - } - } - if (pSrcBitmap != src_bitmap) { - delete pSrcBitmap; - } - return pTempBitmap; -} -FX_BOOL CGdiPrinterDriver::StartDIBits(const CFX_DIBSource* pSource, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD render_flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (bitmap_alpha < 255 || pSource->HasAlpha() || - (pSource->IsAlphaMask() && (pSource->GetBPP() != 1 || !m_bSupportROP))) { - return FALSE; - } - CFX_FloatRect unit_rect = pMatrix->GetUnitRect(); - FX_RECT full_rect = unit_rect.GetOutterRect(); - if (FXSYS_fabs(pMatrix->b) < 0.5f && pMatrix->a != 0 && - FXSYS_fabs(pMatrix->c) < 0.5f && pMatrix->d != 0) { - FX_BOOL bFlipX = pMatrix->a < 0; - FX_BOOL bFlipY = pMatrix->d > 0; - return StretchDIBits(pSource, color, - bFlipX ? full_rect.right : full_rect.left, - bFlipY ? full_rect.bottom : full_rect.top, - bFlipX ? -full_rect.Width() : full_rect.Width(), - bFlipY ? -full_rect.Height() : full_rect.Height(), - NULL, 0, alpha_flag, pIccTransform, blend_type); - } - if (FXSYS_fabs(pMatrix->a) < 0.5f && FXSYS_fabs(pMatrix->d) < 0.5f) { - CFX_DIBitmap* pTransformed = - pSource->SwapXY(pMatrix->c > 0, pMatrix->b < 0); - if (!pTransformed) { - return FALSE; - } - FX_BOOL ret = StretchDIBits( - pTransformed, color, full_rect.left, full_rect.top, full_rect.Width(), - full_rect.Height(), NULL, 0, alpha_flag, pIccTransform, blend_type); - delete pTransformed; - return ret; - } - if (pSource->GetBPP() == 1) { - CFX_DIBitmap* pTransformed = Transform1bppBitmap(pSource, pMatrix); - if (!pIccTransform) { - return FALSE; - } - SaveState(); - CFX_PathData path; - path.AppendRect(0, 0, 1.0f, 1.0f); - SetClip_PathFill(&path, pMatrix, WINDING); - FX_BOOL ret = StretchDIBits( - pTransformed, color, full_rect.left, full_rect.top, full_rect.Width(), - full_rect.Height(), NULL, 0, alpha_flag, pIccTransform, blend_type); - RestoreState(); - delete pTransformed; - handle = NULL; - return ret; - } - return FALSE; -} -CPSOutput::CPSOutput(HDC hDC) { - m_hDC = hDC; - m_pBuf = NULL; -} -CPSOutput::~CPSOutput() { - FX_Free(m_pBuf); -} -void CPSOutput::Init() { - m_pBuf = FX_Alloc(FX_CHAR, 1026); -} -void CPSOutput::OutputPS(const FX_CHAR* str, int len) { - if (len < 0) { - len = (int)FXSYS_strlen(str); - } - int sent_len = 0; - while (len > 0) { - int send_len = len > 1024 ? 1024 : len; - *(FX_WORD*)m_pBuf = send_len; - FXSYS_memcpy(m_pBuf + 2, str + sent_len, send_len); - ExtEscape(m_hDC, PASSTHROUGH, send_len + 2, m_pBuf, 0, NULL); - sent_len += send_len; - len -= send_len; - } -} -CPSPrinterDriver::CPSPrinterDriver() { - m_pPSOutput = NULL; - m_bCmykOutput = FALSE; -} -CPSPrinterDriver::~CPSPrinterDriver() { - EndRendering(); - delete m_pPSOutput; -} -FX_BOOL CPSPrinterDriver::Init(HDC hDC, int pslevel, FX_BOOL bCmykOutput) { - m_hDC = hDC; - m_HorzSize = ::GetDeviceCaps(m_hDC, HORZSIZE); - m_VertSize = ::GetDeviceCaps(m_hDC, VERTSIZE); - m_Width = ::GetDeviceCaps(m_hDC, HORZRES); - m_Height = ::GetDeviceCaps(m_hDC, VERTRES); - m_nBitsPerPixel = ::GetDeviceCaps(m_hDC, BITSPIXEL); - m_pPSOutput = new CPSOutput(hDC); - ((CPSOutput*)m_pPSOutput)->Init(); - m_PSRenderer.Init(m_pPSOutput, pslevel, m_Width, m_Height, bCmykOutput); - m_bCmykOutput = bCmykOutput; - HRGN hRgn = ::CreateRectRgn(0, 0, 1, 1); - int ret = ::GetClipRgn(hDC, hRgn); - if (ret == 1) { - ret = ::GetRegionData(hRgn, 0, NULL); - if (ret) { - RGNDATA* pData = (RGNDATA*)FX_Alloc(uint8_t, ret); - ret = ::GetRegionData(hRgn, ret, pData); - if (ret) { - CFX_PathData path; - path.AllocPointCount(pData->rdh.nCount * 5); - for (FX_DWORD i = 0; i < pData->rdh.nCount; i++) { - RECT* pRect = (RECT*)(pData->Buffer + pData->rdh.nRgnSize * i); - path.AppendRect((FX_FLOAT)pRect->left, (FX_FLOAT)pRect->bottom, - (FX_FLOAT)pRect->right, (FX_FLOAT)pRect->top); - } - m_PSRenderer.SetClip_PathFill(&path, NULL, FXFILL_WINDING); - } - FX_Free(pData); - } - } - ::DeleteObject(hRgn); - return TRUE; -} -int CPSPrinterDriver::GetDeviceCaps(int caps_id) { - switch (caps_id) { - case FXDC_DEVICE_CLASS: - return FXDC_PRINTER; - case FXDC_PIXEL_WIDTH: - return m_Width; - case FXDC_PIXEL_HEIGHT: - return m_Height; - case FXDC_BITS_PIXEL: - return m_nBitsPerPixel; - case FXDC_RENDER_CAPS: - return m_bCmykOutput ? FXRC_BIT_MASK | FXRC_CMYK_OUTPUT : FXRC_BIT_MASK; - case FXDC_HORZ_SIZE: - return m_HorzSize; - case FXDC_VERT_SIZE: - return m_VertSize; - } - return 0; -} -FX_BOOL CPSPrinterDriver::StartRendering() { - return m_PSRenderer.StartRendering(); -} -void CPSPrinterDriver::EndRendering() { - m_PSRenderer.EndRendering(); -} -void CPSPrinterDriver::SaveState() { - m_PSRenderer.SaveState(); -} -void CPSPrinterDriver::RestoreState(FX_BOOL bKeepSaved) { - m_PSRenderer.RestoreState(bKeepSaved); -} -FX_BOOL CPSPrinterDriver::SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) { - m_PSRenderer.SetClip_PathFill(pPathData, pObject2Device, fill_mode); - return TRUE; -} -FX_BOOL CPSPrinterDriver::SetClip_PathStroke( - const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) { - m_PSRenderer.SetClip_PathStroke(pPathData, pObject2Device, pGraphState); - return TRUE; -} -FX_BOOL CPSPrinterDriver::DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_ARGB fill_color, - FX_ARGB stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - return m_PSRenderer.DrawPath(pPathData, pObject2Device, pGraphState, - fill_color, stroke_color, fill_mode & 3, - alpha_flag, pIccTransform); -} -FX_BOOL CPSPrinterDriver::GetClipBox(FX_RECT* pRect) { - *pRect = m_PSRenderer.GetClipBox(); - return TRUE; -} -FX_BOOL CPSPrinterDriver::SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - return m_PSRenderer.SetDIBits(pBitmap, color, left, top, alpha_flag, - pIccTransform); -} -FX_BOOL CPSPrinterDriver::StretchDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - return m_PSRenderer.StretchDIBits(pBitmap, color, dest_left, dest_top, - dest_width, dest_height, flags, alpha_flag, - pIccTransform); -} -FX_BOOL CPSPrinterDriver::StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD render_flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type) { - if (blend_type != FXDIB_BLEND_NORMAL) { - return FALSE; - } - if (bitmap_alpha < 255) { - return FALSE; - } - handle = NULL; - return m_PSRenderer.DrawDIBits(pBitmap, color, pMatrix, render_flags, - alpha_flag, pIccTransform); -} -FX_BOOL CPSPrinterDriver::DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) { - return m_PSRenderer.DrawText(nChars, pCharPos, pFont, pCache, pObject2Device, - font_size, color, alpha_flag, pIccTransform); -} -#endif diff --git a/core/src/fxge/win32/win32_int.h b/core/src/fxge/win32/win32_int.h deleted file mode 100644 index 233fe367f5..0000000000 --- a/core/src/fxge/win32/win32_int.h +++ /dev/null @@ -1,369 +0,0 @@ -// Copyright 2014 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#ifndef CORE_SRC_FXGE_WIN32_WIN32_INT_H_ -#define CORE_SRC_FXGE_WIN32_WIN32_INT_H_ - -#include "core/include/fxge/fx_ge.h" -#include "core/src/fxge/win32/dwrite_int.h" - -struct WINDIB_Open_Args_; -class CGdiplusExt { - public: - CGdiplusExt(); - ~CGdiplusExt(); - void Load(); - FX_BOOL IsAvailable() { return m_hModule != NULL; } - FX_BOOL StretchBitMask(HDC hDC, - BOOL bMonoDevice, - const CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_DWORD argb, - const FX_RECT* pClipRect, - int flags); - FX_BOOL StretchDIBits(HDC hDC, - const CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - int flags); - FX_BOOL DrawPath(HDC hDC, - const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_argb, - FX_DWORD stroke_argb, - int fill_mode); - - void* LoadMemFont(uint8_t* pData, FX_DWORD size); - void DeleteMemFont(void* pFontCollection); - FX_BOOL GdipCreateFromImage(void* bitmap, void** graphics); - void GdipDeleteGraphics(void* graphics); - void GdipSetTextRenderingHint(void* graphics, int mode); - void GdipSetPageUnit(void* graphics, FX_DWORD unit); - void GdipSetWorldTransform(void* graphics, void* pMatrix); - FX_BOOL GdipDrawDriverString(void* graphics, - unsigned short* text, - int length, - void* font, - void* brush, - void* positions, - int flags, - const void* matrix); - void GdipCreateBrush(FX_DWORD fill_argb, void** pBrush); - void GdipDeleteBrush(void* pBrush); - void GdipCreateMatrix(FX_FLOAT a, - FX_FLOAT b, - FX_FLOAT c, - FX_FLOAT d, - FX_FLOAT e, - FX_FLOAT f, - void** matrix); - void GdipDeleteMatrix(void* matrix); - FX_BOOL GdipCreateFontFamilyFromName(const FX_WCHAR* name, - void* pFontCollection, - void** pFamily); - void GdipDeleteFontFamily(void* pFamily); - FX_BOOL GdipCreateFontFromFamily(void* pFamily, - FX_FLOAT font_size, - int fontstyle, - int flag, - void** pFont); - void* GdipCreateFontFromCollection(void* pFontCollection, - FX_FLOAT font_size, - int fontstyle); - void GdipDeleteFont(void* pFont); - FX_BOOL GdipCreateBitmap(CFX_DIBitmap* pBitmap, void** bitmap); - void GdipDisposeImage(void* bitmap); - void GdipGetFontSize(void* pFont, FX_FLOAT* size); - void* GdiAddFontMemResourceEx(void* pFontdata, - FX_DWORD size, - void* pdv, - FX_DWORD* num_face); - FX_BOOL GdiRemoveFontMemResourceEx(void* handle); - void* m_Functions[100]; - void* m_pGdiAddFontMemResourceEx; - void* m_pGdiRemoveFontMemResourseEx; - CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args); - - protected: - HMODULE m_hModule; - HMODULE m_GdiModule; -}; -class CWin32Platform { - public: - FX_BOOL m_bHalfTone; - CGdiplusExt m_GdiplusExt; - CDWriteExt m_DWriteExt; -}; - -class CGdiDeviceDriver : public IFX_RenderDeviceDriver { - protected: - // IFX_RenderDeviceDriver - int GetDeviceCaps(int caps_id) override; - void SaveState() override { SaveDC(m_hDC); } - void RestoreState(FX_BOOL bKeepSaved = FALSE) override { - RestoreDC(m_hDC, -1); - if (bKeepSaved) { - SaveDC(m_hDC); - } - } - FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) override; - FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) override; - FX_BOOL DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL FillRect(const FX_RECT* pRect, - FX_DWORD fill_color, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL DrawCosmeticLine(FX_FLOAT x1, - FX_FLOAT y1, - FX_FLOAT x2, - FX_FLOAT y2, - FX_DWORD color, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL GetClipBox(FX_RECT* pRect) override; - void* GetPlatformSurface() override { return (void*)m_hDC; } - - virtual void* GetClipRgn(); - virtual FX_BOOL SetClipRgn(void* pRgn); - virtual FX_BOOL DeleteDeviceRgn(void* pRgn); - virtual void DrawLine(FX_FLOAT x1, FX_FLOAT y1, FX_FLOAT x2, FX_FLOAT y2); - - FX_BOOL GDI_SetDIBits(const CFX_DIBitmap* pBitmap, - const FX_RECT* pSrcRect, - int left, - int top, - void* pIccTransform); - FX_BOOL GDI_StretchDIBits(const CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_DWORD flags, - void* pIccTransform); - FX_BOOL GDI_StretchBitMask(const CFX_DIBitmap* pBitmap, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - FX_DWORD bitmap_color, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform); - HDC m_hDC; - int m_Width, m_Height, m_nBitsPerPixel; - int m_DeviceClass, m_RenderCaps; - CGdiDeviceDriver(HDC hDC, int device_class); - ~CGdiDeviceDriver() override {} -}; - -class CGdiDisplayDriver : public CGdiDeviceDriver { - public: - CGdiDisplayDriver(HDC hDC); - - protected: - virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap, - int left, - int top, - void* pIccTransform = NULL, - FX_BOOL bDEdge = FALSE); - virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform); - virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type); - virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD render_flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type) { - return FALSE; - } - FX_BOOL UseFoxitStretchEngine(const CFX_DIBSource* pSource, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - int render_flags, - int alpha_flag = 0, - void* pIccTransform = NULL, - int blend_type = FXDIB_BLEND_NORMAL); -}; -class CGdiPrinterDriver : public CGdiDeviceDriver { - public: - CGdiPrinterDriver(HDC hDC); - - protected: - virtual int GetDeviceCaps(int caps_id); - virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform); - virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type); - virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD render_flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type); - int m_HorzSize, m_VertSize; - FX_BOOL m_bSupportROP; -}; - -class CPSOutput : public IFX_PSOutput { - public: - explicit CPSOutput(HDC hDC); - ~CPSOutput() override; - - // IFX_PSOutput - void Release() override { delete this; } - void OutputPS(const FX_CHAR* str, int len) override; - - void Init(); - - HDC m_hDC; - FX_CHAR* m_pBuf; -}; - -class CPSPrinterDriver : public IFX_RenderDeviceDriver { - public: - CPSPrinterDriver(); - FX_BOOL Init(HDC hDC, int ps_level, FX_BOOL bCmykOutput); - ~CPSPrinterDriver() override; - - protected: - // IFX_RenderDeviceDriver - int GetDeviceCaps(int caps_id); - FX_BOOL IsPSPrintDriver() override { return TRUE; } - FX_BOOL StartRendering() override; - void EndRendering() override; - void SaveState() override; - void RestoreState(FX_BOOL bKeepSaved = FALSE) override; - FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - int fill_mode) override; - FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState) override; - FX_BOOL DrawPath(const CFX_PathData* pPathData, - const CFX_Matrix* pObject2Device, - const CFX_GraphStateData* pGraphState, - FX_DWORD fill_color, - FX_DWORD stroke_color, - int fill_mode, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL GetClipBox(FX_RECT* pRect) override; - FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - const FX_RECT* pSrcRect, - int left, - int top, - int blend_type, - int alpha_flag, - void* pIccTransform) override; - FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap, - FX_DWORD color, - int dest_left, - int dest_top, - int dest_width, - int dest_height, - const FX_RECT* pClipRect, - FX_DWORD flags, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap, - int bitmap_alpha, - FX_DWORD color, - const CFX_Matrix* pMatrix, - FX_DWORD render_flags, - void*& handle, - int alpha_flag, - void* pIccTransform, - int blend_type) override; - FX_BOOL DrawDeviceText(int nChars, - const FXTEXT_CHARPOS* pCharPos, - CFX_Font* pFont, - CFX_FontCache* pCache, - const CFX_Matrix* pObject2Device, - FX_FLOAT font_size, - FX_DWORD color, - int alpha_flag, - void* pIccTransform) override; - void* GetPlatformSurface() override { return (void*)m_hDC; } - - HDC m_hDC; - FX_BOOL m_bCmykOutput; - int m_Width, m_Height, m_nBitsPerPixel; - int m_HorzSize, m_VertSize; - CPSOutput* m_pPSOutput; - CFX_PSRenderer m_PSRenderer; -}; -void _Color2Argb(FX_ARGB& argb, - FX_DWORD color, - int alpha_flag, - void* pIccTransform); - -#endif // CORE_SRC_FXGE_WIN32_WIN32_INT_H_ diff --git a/pdfium.gyp b/pdfium.gyp index f5743d242e..4f21ba41a3 100644 --- a/pdfium.gyp +++ b/pdfium.gyp @@ -213,9 +213,9 @@ 'type': 'static_library', 'sources': [ 'core/include/fdrm/fx_crypt.h', - 'core/src/fdrm/crypto/fx_crypt.cpp', - 'core/src/fdrm/crypto/fx_crypt_aes.cpp', - 'core/src/fdrm/crypto/fx_crypt_sha.cpp', + 'core/fdrm/crypto/fx_crypt.cpp', + 'core/fdrm/crypto/fx_crypt_aes.cpp', + 'core/fdrm/crypto/fx_crypt_sha.cpp', ], }, { @@ -226,25 +226,25 @@ 'core/include/fpdfdoc/fpdf_doc.h', 'core/include/fpdfdoc/fpdf_tagged.h', 'core/include/fpdfdoc/fpdf_vt.h', - 'core/src/fpdfdoc/doc_action.cpp', - 'core/src/fpdfdoc/doc_annot.cpp', - 'core/src/fpdfdoc/doc_ap.cpp', - 'core/src/fpdfdoc/doc_basic.cpp', - 'core/src/fpdfdoc/doc_bookmark.cpp', - 'core/src/fpdfdoc/doc_form.cpp', - 'core/src/fpdfdoc/doc_formcontrol.cpp', - 'core/src/fpdfdoc/doc_formfield.cpp', - 'core/src/fpdfdoc/doc_link.cpp', - 'core/src/fpdfdoc/doc_metadata.cpp', - 'core/src/fpdfdoc/doc_ocg.cpp', - 'core/src/fpdfdoc/doc_tagged.cpp', - 'core/src/fpdfdoc/doc_utils.cpp', - 'core/src/fpdfdoc/doc_utils.h', - 'core/src/fpdfdoc/doc_viewerPreferences.cpp', - 'core/src/fpdfdoc/doc_vt.cpp', - 'core/src/fpdfdoc/doc_vtmodule.cpp', - 'core/src/fpdfdoc/pdf_vt.h', - 'core/src/fpdfdoc/tagged_int.h', + 'core/fpdfdoc/doc_action.cpp', + 'core/fpdfdoc/doc_annot.cpp', + 'core/fpdfdoc/doc_ap.cpp', + 'core/fpdfdoc/doc_basic.cpp', + 'core/fpdfdoc/doc_bookmark.cpp', + 'core/fpdfdoc/doc_form.cpp', + 'core/fpdfdoc/doc_formcontrol.cpp', + 'core/fpdfdoc/doc_formfield.cpp', + 'core/fpdfdoc/doc_link.cpp', + 'core/fpdfdoc/doc_metadata.cpp', + 'core/fpdfdoc/doc_ocg.cpp', + 'core/fpdfdoc/doc_tagged.cpp', + 'core/fpdfdoc/doc_utils.cpp', + 'core/fpdfdoc/doc_utils.h', + 'core/fpdfdoc/doc_viewerPreferences.cpp', + 'core/fpdfdoc/doc_vt.cpp', + 'core/fpdfdoc/doc_vtmodule.cpp', + 'core/fpdfdoc/pdf_vt.h', + 'core/fpdfdoc/tagged_int.h', ], }, { @@ -276,127 +276,127 @@ 'core/include/fpdfapi/ipdf_crypto_handler.h', 'core/include/fpdfapi/ipdf_data_avail.h', 'core/include/fpdfapi/ipdf_security_handler.h', - 'core/src/fpdfapi/fpdf_basic_module.cpp', - 'core/src/fpdfapi/fpdf_cmaps/cmap_int.h', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp', - 'core/src/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp', - 'core/src/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp', - 'core/src/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp', - 'core/src/fpdfapi/fpdf_edit/editint.h', - 'core/src/fpdfapi/fpdf_edit/fpdf_edit_content.cpp', - 'core/src/fpdfapi/fpdf_edit/fpdf_edit_create.cpp', - 'core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp', - 'core/src/fpdfapi/fpdf_edit/fpdf_edit_image.cpp', - 'core/src/fpdfapi/fpdf_font/font_int.h', - 'core/src/fpdfapi/fpdf_font/fpdf_font.cpp', - 'core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp', - 'core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp', - 'core/src/fpdfapi/fpdf_font/ttgsubtable.cpp', - 'core/src/fpdfapi/fpdf_font/ttgsubtable.h', - 'core/src/fpdfapi/fpdf_page/fpdf_page.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_colors.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_doc.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_func.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_image.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_parser.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_path.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_pattern.cpp', - 'core/src/fpdfapi/fpdf_page/pageint.h', - 'core/src/fpdfapi/fpdf_parser/cfdf_document.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_array.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_boolean.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_data_avail.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_data_avail.h', - 'core/src/fpdfapi/fpdf_parser/cpdf_dictionary.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_document.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_hint_tables.h', - 'core/src/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_name.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_null.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_number.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_object.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_parser.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_reference.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h', - 'core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h', - 'core/src/fpdfapi/fpdf_parser/cpdf_stream.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_string.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser.h', - 'core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp', - 'core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp', - 'core/src/fpdfapi/fpdf_parser/fpdf_parser_utility.h', - 'core/src/fpdfapi/fpdf_render/fpdf_render.cpp', - 'core/src/fpdfapi/fpdf_render/fpdf_render_cache.cpp', - 'core/src/fpdfapi/fpdf_render/fpdf_render_image.cpp', - 'core/src/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp', - 'core/src/fpdfapi/fpdf_render/fpdf_render_pattern.cpp', - 'core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp', - 'core/src/fpdfapi/fpdf_render/render_int.h', + 'core/fpdfapi/fpdf_basic_module.cpp', + 'core/fpdfapi/fpdf_cmaps/cmap_int.h', + 'core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp', + 'core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp', + 'core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp', + 'core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp', + 'core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp', + 'core/fpdfapi/fpdf_edit/editint.h', + 'core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp', + 'core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp', + 'core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp', + 'core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp', + 'core/fpdfapi/fpdf_font/font_int.h', + 'core/fpdfapi/fpdf_font/fpdf_font.cpp', + 'core/fpdfapi/fpdf_font/fpdf_font_charset.cpp', + 'core/fpdfapi/fpdf_font/fpdf_font_cid.cpp', + 'core/fpdfapi/fpdf_font/ttgsubtable.cpp', + 'core/fpdfapi/fpdf_font/ttgsubtable.h', + 'core/fpdfapi/fpdf_page/fpdf_page.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_colors.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_doc.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_func.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_image.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_parser.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_path.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp', + 'core/fpdfapi/fpdf_page/pageint.h', + 'core/fpdfapi/fpdf_parser/cfdf_document.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_array.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_boolean.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_data_avail.h', + 'core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_document.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_hint_tables.h', + 'core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_name.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_null.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_number.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_object.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_parser.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_reference.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h', + 'core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h', + 'core/fpdfapi/fpdf_parser/cpdf_stream.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_string.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h', + 'core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp', + 'core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp', + 'core/fpdfapi/fpdf_parser/fpdf_parser_utility.h', + 'core/fpdfapi/fpdf_render/fpdf_render.cpp', + 'core/fpdfapi/fpdf_render/fpdf_render_cache.cpp', + 'core/fpdfapi/fpdf_render/fpdf_render_image.cpp', + 'core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp', + 'core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp', + 'core/fpdfapi/fpdf_render/fpdf_render_text.cpp', + 'core/fpdfapi/fpdf_render/render_int.h', ], }, { @@ -404,11 +404,11 @@ 'type': 'static_library', 'sources': [ 'core/include/fpdftext/fpdf_text.h', - 'core/src/fpdftext/fpdf_text_int.cpp', - 'core/src/fpdftext/text_int.h', - 'core/src/fpdftext/unicodenormalization.cpp', - 'core/src/fpdftext/unicodenormalizationdata.cpp', - 'core/src/fpdftext/unicodenormalizationdata.h', + 'core/fpdftext/fpdf_text_int.cpp', + 'core/fpdftext/text_int.h', + 'core/fpdftext/unicodenormalization.cpp', + 'core/fpdftext/unicodenormalizationdata.cpp', + 'core/fpdftext/unicodenormalizationdata.h', ], }, { @@ -424,52 +424,52 @@ 'core/include/fxcodec/fx_codec.h', 'core/include/fxcodec/fx_codec_def.h', 'core/include/fxcodec/fx_codec_flate.h', - 'core/src/fxcodec/codec/codec_int.h', - 'core/src/fxcodec/codec/fx_codec.cpp', - 'core/src/fxcodec/codec/fx_codec_fax.cpp', - 'core/src/fxcodec/codec/fx_codec_flate.cpp', - 'core/src/fxcodec/codec/fx_codec_icc.cpp', - 'core/src/fxcodec/codec/fx_codec_jbig.cpp', - 'core/src/fxcodec/codec/fx_codec_jpeg.cpp', - 'core/src/fxcodec/codec/fx_codec_jpx_opj.cpp', - 'core/src/fxcodec/jbig2/JBig2_ArithDecoder.cpp', - 'core/src/fxcodec/jbig2/JBig2_ArithDecoder.h', - 'core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp', - 'core/src/fxcodec/jbig2/JBig2_ArithIntDecoder.h', - 'core/src/fxcodec/jbig2/JBig2_BitStream.cpp', - 'core/src/fxcodec/jbig2/JBig2_BitStream.h', - 'core/src/fxcodec/jbig2/JBig2_Context.cpp', - 'core/src/fxcodec/jbig2/JBig2_Context.h', - 'core/src/fxcodec/jbig2/JBig2_Define.h', - 'core/src/fxcodec/jbig2/JBig2_GrdProc.cpp', - 'core/src/fxcodec/jbig2/JBig2_GrdProc.h', - 'core/src/fxcodec/jbig2/JBig2_GrrdProc.cpp', - 'core/src/fxcodec/jbig2/JBig2_GrrdProc.h', - 'core/src/fxcodec/jbig2/JBig2_GsidProc.cpp', - 'core/src/fxcodec/jbig2/JBig2_GsidProc.h', - 'core/src/fxcodec/jbig2/JBig2_HtrdProc.cpp', - 'core/src/fxcodec/jbig2/JBig2_HtrdProc.h', - 'core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp', - 'core/src/fxcodec/jbig2/JBig2_HuffmanDecoder.h', - 'core/src/fxcodec/jbig2/JBig2_HuffmanTable.cpp', - 'core/src/fxcodec/jbig2/JBig2_HuffmanTable.h', - 'core/src/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h', - 'core/src/fxcodec/jbig2/JBig2_Image.cpp', - 'core/src/fxcodec/jbig2/JBig2_Image.h', - 'core/src/fxcodec/jbig2/JBig2_List.h', - 'core/src/fxcodec/jbig2/JBig2_Page.h', - 'core/src/fxcodec/jbig2/JBig2_PatternDict.cpp', - 'core/src/fxcodec/jbig2/JBig2_PatternDict.h', - 'core/src/fxcodec/jbig2/JBig2_PddProc.cpp', - 'core/src/fxcodec/jbig2/JBig2_PddProc.h', - 'core/src/fxcodec/jbig2/JBig2_SddProc.cpp', - 'core/src/fxcodec/jbig2/JBig2_SddProc.h', - 'core/src/fxcodec/jbig2/JBig2_Segment.cpp', - 'core/src/fxcodec/jbig2/JBig2_Segment.h', - 'core/src/fxcodec/jbig2/JBig2_SymbolDict.cpp', - 'core/src/fxcodec/jbig2/JBig2_SymbolDict.h', - 'core/src/fxcodec/jbig2/JBig2_TrdProc.cpp', - 'core/src/fxcodec/jbig2/JBig2_TrdProc.h', + 'core/fxcodec/codec/codec_int.h', + 'core/fxcodec/codec/fx_codec.cpp', + 'core/fxcodec/codec/fx_codec_fax.cpp', + 'core/fxcodec/codec/fx_codec_flate.cpp', + 'core/fxcodec/codec/fx_codec_icc.cpp', + 'core/fxcodec/codec/fx_codec_jbig.cpp', + 'core/fxcodec/codec/fx_codec_jpeg.cpp', + 'core/fxcodec/codec/fx_codec_jpx_opj.cpp', + 'core/fxcodec/jbig2/JBig2_ArithDecoder.cpp', + 'core/fxcodec/jbig2/JBig2_ArithDecoder.h', + 'core/fxcodec/jbig2/JBig2_ArithIntDecoder.cpp', + 'core/fxcodec/jbig2/JBig2_ArithIntDecoder.h', + 'core/fxcodec/jbig2/JBig2_BitStream.cpp', + 'core/fxcodec/jbig2/JBig2_BitStream.h', + 'core/fxcodec/jbig2/JBig2_Context.cpp', + 'core/fxcodec/jbig2/JBig2_Context.h', + 'core/fxcodec/jbig2/JBig2_Define.h', + 'core/fxcodec/jbig2/JBig2_GrdProc.cpp', + 'core/fxcodec/jbig2/JBig2_GrdProc.h', + 'core/fxcodec/jbig2/JBig2_GrrdProc.cpp', + 'core/fxcodec/jbig2/JBig2_GrrdProc.h', + 'core/fxcodec/jbig2/JBig2_GsidProc.cpp', + 'core/fxcodec/jbig2/JBig2_GsidProc.h', + 'core/fxcodec/jbig2/JBig2_HtrdProc.cpp', + 'core/fxcodec/jbig2/JBig2_HtrdProc.h', + 'core/fxcodec/jbig2/JBig2_HuffmanDecoder.cpp', + 'core/fxcodec/jbig2/JBig2_HuffmanDecoder.h', + 'core/fxcodec/jbig2/JBig2_HuffmanTable.cpp', + 'core/fxcodec/jbig2/JBig2_HuffmanTable.h', + 'core/fxcodec/jbig2/JBig2_HuffmanTable_Standard.h', + 'core/fxcodec/jbig2/JBig2_Image.cpp', + 'core/fxcodec/jbig2/JBig2_Image.h', + 'core/fxcodec/jbig2/JBig2_List.h', + 'core/fxcodec/jbig2/JBig2_Page.h', + 'core/fxcodec/jbig2/JBig2_PatternDict.cpp', + 'core/fxcodec/jbig2/JBig2_PatternDict.h', + 'core/fxcodec/jbig2/JBig2_PddProc.cpp', + 'core/fxcodec/jbig2/JBig2_PddProc.h', + 'core/fxcodec/jbig2/JBig2_SddProc.cpp', + 'core/fxcodec/jbig2/JBig2_SddProc.h', + 'core/fxcodec/jbig2/JBig2_Segment.cpp', + 'core/fxcodec/jbig2/JBig2_Segment.h', + 'core/fxcodec/jbig2/JBig2_SymbolDict.cpp', + 'core/fxcodec/jbig2/JBig2_SymbolDict.h', + 'core/fxcodec/jbig2/JBig2_TrdProc.cpp', + 'core/fxcodec/jbig2/JBig2_TrdProc.h', ], 'msvs_settings': { 'VCCLCompilerTool': { @@ -485,20 +485,20 @@ 'third_party/third_party.gyp:fx_tiff', ], 'sources': [ - 'core/src/fxcodec/codec/fx_codec_bmp.cpp', - 'core/src/fxcodec/codec/fx_codec_gif.cpp', - 'core/src/fxcodec/codec/fx_codec_png.cpp', - 'core/src/fxcodec/codec/fx_codec_progress.cpp', - 'core/src/fxcodec/codec/fx_codec_progress.h', - 'core/src/fxcodec/codec/fx_codec_tiff.cpp', - 'core/src/fxcodec/lbmp/fx_bmp.cpp', - 'core/src/fxcodec/lbmp/fx_bmp.h', - 'core/src/fxcodec/lgif/fx_gif.cpp', - 'core/src/fxcodec/lgif/fx_gif.h', + 'core/fxcodec/codec/fx_codec_bmp.cpp', + 'core/fxcodec/codec/fx_codec_gif.cpp', + 'core/fxcodec/codec/fx_codec_png.cpp', + 'core/fxcodec/codec/fx_codec_progress.cpp', + 'core/fxcodec/codec/fx_codec_progress.h', + 'core/fxcodec/codec/fx_codec_tiff.cpp', + 'core/fxcodec/lbmp/fx_bmp.cpp', + 'core/fxcodec/lbmp/fx_bmp.h', + 'core/fxcodec/lgif/fx_gif.cpp', + 'core/fxcodec/lgif/fx_gif.h', ], }], ['os_posix==1', { - # core/src/fxcodec/fx_libopenjpeg/src/fx_mct.c does an pointer-to-int + # core/fxcodec/fx_libopenjpeg/src/fx_mct.c does an pointer-to-int # conversion to check that an address is 16-bit aligned (benign). 'cflags_c': [ '-Wno-pointer-to-int-cast' ], }], @@ -519,41 +519,41 @@ 'core/include/fxcrt/fx_system.h', 'core/include/fxcrt/fx_ucd.h', 'core/include/fxcrt/fx_xml.h', - 'core/src/fxcrt/extension.h', - 'core/src/fxcrt/fxcrt_platforms.cpp', - 'core/src/fxcrt/fxcrt_platforms.h', - 'core/src/fxcrt/fxcrt_posix.cpp', - 'core/src/fxcrt/fxcrt_posix.h', - 'core/src/fxcrt/fxcrt_stream.cpp', - 'core/src/fxcrt/fxcrt_windows.cpp', - 'core/src/fxcrt/fxcrt_windows.h', - 'core/src/fxcrt/fx_basic_array.cpp', - 'core/src/fxcrt/fx_basic_bstring.cpp', - 'core/src/fxcrt/fx_basic_buffer.cpp', - 'core/src/fxcrt/fx_basic_coords.cpp', - 'core/src/fxcrt/fx_basic_gcc.cpp', - 'core/src/fxcrt/fx_basic_list.cpp', - 'core/src/fxcrt/fx_basic_memmgr.cpp', - 'core/src/fxcrt/fx_basic_plex.cpp', - 'core/src/fxcrt/fx_basic_utf.cpp', - 'core/src/fxcrt/fx_basic_util.cpp', - 'core/src/fxcrt/fx_basic_wstring.cpp', - 'core/src/fxcrt/fx_bidi.cpp', - 'core/src/fxcrt/fx_extension.cpp', - 'core/src/fxcrt/fx_ucddata.cpp', - 'core/src/fxcrt/fx_unicode.cpp', - 'core/src/fxcrt/fx_xml_composer.cpp', - 'core/src/fxcrt/fx_xml_parser.cpp', - 'core/src/fxcrt/plex.h', - 'core/src/fxcrt/xml_int.h', + 'core/fxcrt/extension.h', + 'core/fxcrt/fxcrt_platforms.cpp', + 'core/fxcrt/fxcrt_platforms.h', + 'core/fxcrt/fxcrt_posix.cpp', + 'core/fxcrt/fxcrt_posix.h', + 'core/fxcrt/fxcrt_stream.cpp', + 'core/fxcrt/fxcrt_windows.cpp', + 'core/fxcrt/fxcrt_windows.h', + 'core/fxcrt/fx_basic_array.cpp', + 'core/fxcrt/fx_basic_bstring.cpp', + 'core/fxcrt/fx_basic_buffer.cpp', + 'core/fxcrt/fx_basic_coords.cpp', + 'core/fxcrt/fx_basic_gcc.cpp', + 'core/fxcrt/fx_basic_list.cpp', + 'core/fxcrt/fx_basic_memmgr.cpp', + 'core/fxcrt/fx_basic_plex.cpp', + 'core/fxcrt/fx_basic_utf.cpp', + 'core/fxcrt/fx_basic_util.cpp', + 'core/fxcrt/fx_basic_wstring.cpp', + 'core/fxcrt/fx_bidi.cpp', + 'core/fxcrt/fx_extension.cpp', + 'core/fxcrt/fx_ucddata.cpp', + 'core/fxcrt/fx_unicode.cpp', + 'core/fxcrt/fx_xml_composer.cpp', + 'core/fxcrt/fx_xml_parser.cpp', + 'core/fxcrt/plex.h', + 'core/fxcrt/xml_int.h', ], 'conditions': [ ['pdf_enable_xfa==1', { 'sources': [ 'core/include/fxcrt/fx_arb.h', - 'core/src/fxcrt/fx_arabic.cpp', - 'core/src/fxcrt/fx_arabic.h', - 'core/src/fxcrt/fx_basic_maps.cpp', + 'core/fxcrt/fx_arabic.cpp', + 'core/fxcrt/fx_arabic.h', + 'core/fxcrt/fx_basic_maps.cpp', ], }], ], @@ -572,54 +572,54 @@ 'core/include/fxge/fx_ge.h', 'core/include/fxge/fx_ge_apple.h', 'core/include/fxge/fx_ge_win32.h', - 'core/src/fxge/agg/fx_agg_driver.h', - 'core/src/fxge/agg/fx_agg_driver.cpp', - 'core/src/fxge/android/fpf_skiafont.cpp', - 'core/src/fxge/android/fpf_skiafont.h', - 'core/src/fxge/android/fpf_skiafontmgr.cpp', - 'core/src/fxge/android/fpf_skiafontmgr.h', - 'core/src/fxge/android/fpf_skiamodule.cpp', - 'core/src/fxge/android/fpf_skiamodule.h', - 'core/src/fxge/android/fx_android_font.cpp', - 'core/src/fxge/android/fx_android_font.h', - 'core/src/fxge/android/fx_android_imp.cpp', - 'core/src/fxge/apple/apple_int.h', - 'core/src/fxge/apple/fx_apple_platform.cpp', - 'core/src/fxge/apple/fx_mac_imp.cpp', - 'core/src/fxge/apple/fx_quartz_device.cpp', - 'core/src/fxge/dib/dib_int.h', - 'core/src/fxge/dib/fx_dib_composite.cpp', - 'core/src/fxge/dib/fx_dib_convert.cpp', - 'core/src/fxge/dib/fx_dib_engine.cpp', - 'core/src/fxge/dib/fx_dib_main.cpp', - 'core/src/fxge/dib/fx_dib_transform.cpp', - 'core/src/fxge/fontdata/chromefontdata/chromefontdata.h', - 'core/src/fxge/fontdata/chromefontdata/FoxitDingbats.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitFixed.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSans.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSansBold.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSansMM.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSerif.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp', - 'core/src/fxge/fontdata/chromefontdata/FoxitSymbol.cpp', - 'core/src/fxge/freetype/fx_freetype.cpp', - 'core/src/fxge/ge/fx_ge.cpp', - 'core/src/fxge/ge/fx_ge_device.cpp', - 'core/src/fxge/ge/fx_ge_font.cpp', - 'core/src/fxge/ge/fx_ge_fontmap.cpp', - 'core/src/fxge/ge/fx_ge_linux.cpp', - 'core/src/fxge/ge/fx_ge_path.cpp', - 'core/src/fxge/ge/fx_ge_ps.cpp', - 'core/src/fxge/ge/fx_ge_text.cpp', - 'core/src/fxge/ge/fx_text_int.h', + 'core/fxge/agg/fx_agg_driver.h', + 'core/fxge/agg/fx_agg_driver.cpp', + 'core/fxge/android/fpf_skiafont.cpp', + 'core/fxge/android/fpf_skiafont.h', + 'core/fxge/android/fpf_skiafontmgr.cpp', + 'core/fxge/android/fpf_skiafontmgr.h', + 'core/fxge/android/fpf_skiamodule.cpp', + 'core/fxge/android/fpf_skiamodule.h', + 'core/fxge/android/fx_android_font.cpp', + 'core/fxge/android/fx_android_font.h', + 'core/fxge/android/fx_android_imp.cpp', + 'core/fxge/apple/apple_int.h', + 'core/fxge/apple/fx_apple_platform.cpp', + 'core/fxge/apple/fx_mac_imp.cpp', + 'core/fxge/apple/fx_quartz_device.cpp', + 'core/fxge/dib/dib_int.h', + 'core/fxge/dib/fx_dib_composite.cpp', + 'core/fxge/dib/fx_dib_convert.cpp', + 'core/fxge/dib/fx_dib_engine.cpp', + 'core/fxge/dib/fx_dib_main.cpp', + 'core/fxge/dib/fx_dib_transform.cpp', + 'core/fxge/fontdata/chromefontdata/chromefontdata.h', + 'core/fxge/fontdata/chromefontdata/FoxitDingbats.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitFixed.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitFixedBold.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitFixedBoldItalic.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitFixedItalic.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSans.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSansBold.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSansBoldItalic.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSansItalic.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSansMM.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSerif.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSerifBold.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSerifBoldItalic.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSerifItalic.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSerifMM.cpp', + 'core/fxge/fontdata/chromefontdata/FoxitSymbol.cpp', + 'core/fxge/freetype/fx_freetype.cpp', + 'core/fxge/ge/fx_ge.cpp', + 'core/fxge/ge/fx_ge_device.cpp', + 'core/fxge/ge/fx_ge_font.cpp', + 'core/fxge/ge/fx_ge_fontmap.cpp', + 'core/fxge/ge/fx_ge_linux.cpp', + 'core/fxge/ge/fx_ge_path.cpp', + 'core/fxge/ge/fx_ge_ps.cpp', + 'core/fxge/ge/fx_ge_text.cpp', + 'core/fxge/ge/fx_text_int.h', ], 'variables': { 'clang_warning_flags': [ @@ -630,7 +630,7 @@ 'conditions': [ ['pdf_use_skia==1', { 'sources': [ - 'core/src/fxge/skia/fx_skia_device.cpp', + 'core/fxge/skia/fx_skia_device.cpp', ], 'dependencies': [ '<(DEPTH)/skia/skia.gyp:skia', @@ -641,13 +641,13 @@ 'WIN32_LEAN_AND_MEAN' ], 'sources': [ - 'core/src/fxge/win32/dwrite_int.h', - 'core/src/fxge/win32/fx_win32_device.cpp', - 'core/src/fxge/win32/fx_win32_dib.cpp', - 'core/src/fxge/win32/fx_win32_dwrite.cpp', - 'core/src/fxge/win32/fx_win32_gdipext.cpp', - 'core/src/fxge/win32/fx_win32_print.cpp', - 'core/src/fxge/win32/win32_int.h', + 'core/fxge/win32/dwrite_int.h', + 'core/fxge/win32/fx_win32_device.cpp', + 'core/fxge/win32/fx_win32_dib.cpp', + 'core/fxge/win32/fx_win32_dwrite.cpp', + 'core/fxge/win32/fx_win32_gdipext.cpp', + 'core/fxge/win32/fx_win32_print.cpp', + 'core/fxge/win32/win32_int.h', ], }], ], @@ -811,24 +811,24 @@ 'test_support', ], 'sources': [ - 'core/src/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp', - 'core/src/fpdfapi/fpdf_font/fpdf_font_unittest.cpp', - 'core/src/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp', - 'core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp', - 'core/src/fpdfdoc/doc_basic_unittest.cpp', - 'core/src/fpdftext/fpdf_text_int_unittest.cpp', - 'core/src/fxcodec/codec/fx_codec_jpx_unittest.cpp', - 'core/src/fxcrt/fx_basic_bstring_unittest.cpp', - 'core/src/fxcrt/fx_basic_gcc_unittest.cpp', - 'core/src/fxcrt/fx_basic_memmgr_unittest.cpp', - 'core/src/fxcrt/fx_basic_wstring_unittest.cpp', - 'core/src/fxcrt/fx_bidi_unittest.cpp', - 'core/src/fxcrt/fx_extension_unittest.cpp', - 'core/src/fxcrt/fx_system_unittest.cpp', + 'core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp', + 'core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp', + 'core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp', + 'core/fpdfdoc/doc_basic_unittest.cpp', + 'core/fpdftext/fpdf_text_int_unittest.cpp', + 'core/fxcodec/codec/fx_codec_jpx_unittest.cpp', + 'core/fxcrt/fx_basic_bstring_unittest.cpp', + 'core/fxcrt/fx_basic_gcc_unittest.cpp', + 'core/fxcrt/fx_basic_memmgr_unittest.cpp', + 'core/fxcrt/fx_basic_wstring_unittest.cpp', + 'core/fxcrt/fx_bidi_unittest.cpp', + 'core/fxcrt/fx_extension_unittest.cpp', + 'core/fxcrt/fx_system_unittest.cpp', 'fpdfsdk/src/fpdfdoc_unittest.cpp', 'testing/fx_string_testhelpers.h', 'testing/fx_string_testhelpers.cpp', @@ -852,11 +852,11 @@ 'test_support', ], 'sources': [ - 'core/src/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp', - 'core/src/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp', - 'core/src/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp', - 'core/src/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp', - 'core/src/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp', + 'core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp', + 'core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp', + 'core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp', + 'core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp', + 'core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp', 'fpdfsdk/src/fpdf_dataavail_embeddertest.cpp', 'fpdfsdk/src/fpdfdoc_embeddertest.cpp', 'fpdfsdk/src/fpdfedit_embeddertest.cpp', -- cgit v1.2.3